diff --git a/public/css/app.css b/public/css/app.css index fff9390871..8093514f85 100755 --- a/public/css/app.css +++ b/public/css/app.css @@ -415,53 +415,6 @@ video { --tw-backdrop-sepia: ; } -::-webkit-backdrop { - --tw-border-spacing-x: 0; - --tw-border-spacing-y: 0; - --tw-translate-x: 0; - --tw-translate-y: 0; - --tw-rotate: 0; - --tw-skew-x: 0; - --tw-skew-y: 0; - --tw-scale-x: 1; - --tw-scale-y: 1; - --tw-pan-x: ; - --tw-pan-y: ; - --tw-pinch-zoom: ; - --tw-scroll-snap-strictness: proximity; - --tw-ordinal: ; - --tw-slashed-zero: ; - --tw-numeric-figure: ; - --tw-numeric-spacing: ; - --tw-numeric-fraction: ; - --tw-ring-inset: ; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: rgb(59 130 246 / 0.5); - --tw-ring-offset-shadow: 0 0 #0000; - --tw-ring-shadow: 0 0 #0000; - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - --tw-blur: ; - --tw-brightness: ; - --tw-contrast: ; - --tw-grayscale: ; - --tw-hue-rotate: ; - --tw-invert: ; - --tw-saturate: ; - --tw-sepia: ; - --tw-drop-shadow: ; - --tw-backdrop-blur: ; - --tw-backdrop-brightness: ; - --tw-backdrop-contrast: ; - --tw-backdrop-grayscale: ; - --tw-backdrop-hue-rotate: ; - --tw-backdrop-invert: ; - --tw-backdrop-opacity: ; - --tw-backdrop-saturate: ; - --tw-backdrop-sepia: ; -} - ::backdrop { --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; @@ -535,6 +488,12 @@ video { max-width: 1280px; } } +@media (min-width: 1415px) { + + .container { + max-width: 1415px; + } +} @media (min-width: 1536px) { .container { @@ -577,7 +536,6 @@ video { position: relative; } .sticky { - position: -webkit-sticky; position: sticky; } .inset-0 { @@ -595,6 +553,9 @@ video { .-bottom-24 { bottom: -6rem; } +.left-0 { + left: 0px; +} .top-full { top: 100%; } @@ -631,9 +592,6 @@ video { .top-1\/2 { top: 50%; } -.left-0 { - left: 0px; -} .top-\[50vh\] { top: 50vh; } @@ -724,6 +682,9 @@ video { .left-5 { left: 1.25rem; } +.left-8 { + left: 2rem; +} .top-16 { top: 4rem; } @@ -1075,6 +1036,9 @@ video { .-mt-3 { margin-top: -0.75rem; } +.-mb-8 { + margin-bottom: -2rem; +} .mr-10 { margin-right: 2.5rem; } @@ -1133,7 +1097,6 @@ video { height: 0.125rem; } .h-fit { - height: -webkit-fit-content; height: -moz-fit-content; height: fit-content; } @@ -1258,7 +1221,6 @@ video { width: 0.75rem; } .w-fit { - width: -webkit-fit-content; width: -moz-fit-content; width: fit-content; } @@ -1388,9 +1350,6 @@ video { .w-\[150px\] { width: 150px; } -.w-\[170px\] { - width: 170px; -} .w-\[800px\] { width: 800px; } @@ -1520,6 +1479,9 @@ video { .basis-2\/4 { flex-basis: 50%; } +.basis-4\/6 { + flex-basis: 66.666667%; +} .basis-auto { flex-basis: auto; } @@ -1531,6 +1493,10 @@ video { --tw-translate-y: -50%; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); } +.\!-translate-x-4 { + --tw-translate-x: -1rem !important; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) !important; +} .-translate-y-3 { --tw-translate-y: -0.75rem; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); @@ -1633,12 +1599,6 @@ video { .transform { transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); } -@-webkit-keyframes spin { - - to { - transform: rotate(360deg); - } -} @keyframes spin { to { @@ -1646,8 +1606,7 @@ video { } } .animate-spin { - -webkit-animation: spin 1s linear infinite; - animation: spin 1s linear infinite; + animation: spin 1s linear infinite; } .cursor-pointer { cursor: pointer; @@ -2393,9 +2352,6 @@ video { .pt-10 { padding-top: 2.5rem; } -.pt-11 { - padding-top: 2.75rem; -} .text-left { text-align: left; } @@ -2430,8 +2386,8 @@ video { font-size: 0.75rem !important; line-height: 1rem !important; } -.text-\[8px\] { - font-size: 8px; +.text-\[6px\] { + font-size: 6px; } .text-tiny { font-size: 10px; @@ -2451,9 +2407,6 @@ video { font-size: 1.25rem; line-height: 1.75rem; } -.text-\[6px\] { - font-size: 6px; -} .text-\[4px\] { font-size: 4px; } @@ -2829,7 +2782,7 @@ video { } } .header { - max-width: 1166px; + max-width: 1400px; margin: auto; } @@ -2854,7 +2807,10 @@ video { position: relative; padding: 20px 8px; font-weight: normal; + text-align: left; font-style: normal; + white-space: pre-wrap; + display: block; } .nav__links a:hover { --tw-text-opacity: 1; @@ -2869,7 +2825,6 @@ video { line-height: 1rem; --tw-text-opacity: 1; color: rgba(var(--white), var(--tw-text-opacity)); - width: -webkit-fit-content; width: -moz-fit-content; width: fit-content; padding: 8px 18px; @@ -2886,7 +2841,7 @@ video { padding-bottom: 24px; } -@media screen and (min-width: 1280px) { +@media screen and (min-width: 1415px) { .nav__links { padding: 0px 8px 20px; } @@ -2927,7 +2882,7 @@ video { opacity: 0; transition-duration: 300ms; } -@media (min-width: 1280px) { +@media (min-width: 1415px) { .dropdown__content { display: block; @@ -2946,23 +2901,23 @@ video { opacity: 1; } -@media screen and (max-width: 1280px) { +@media screen and (max-width: 1415px) { .nav__list { position: fixed; top: 0; - right: 0; + left: 0; flex-direction: column; - justify-content: center; + justify-content: start; width: 300px; height: 100vh; - padding: 30px; + padding: 65px 30px; --tw-bg-opacity: 1; background-color: rgba(var(--bluecoral), var(--tw-bg-opacity)); --tw-text-opacity: 1; color: rgba(var(--white), var(--tw-text-opacity)); font-size: 16px; text-align: center; - transform: translateX(105%); + transform: translateX(-105%); transition: 0.3s; z-index: 110; filter: drop-shadow(0px 0px 8px #000); @@ -2971,7 +2926,7 @@ video { --tw-text-opacity: 1; color: rgba(var(--white), var(--tw-text-opacity)); position: relative; - padding-bottom: 24px; + padding: 0 0 24px 6px; } .nav__list .active a:hover { --tw-text-opacity: 1; @@ -2979,12 +2934,13 @@ video { } .nav__list .active a::after { position: absolute; - bottom: 0; - left: 0; - width: 100%; - height: 4px; - transform: scale(0, 1); + top: -4px; + left: -6px; + width: 4px; + height: 60%; + transform: scale(1, 0); transition: 0.3s; + border-radius: 100px; content: ""; --tw-bg-opacity: 1; background-color: rgba(var(--turquoise), var(--tw-bg-opacity)); @@ -3001,7 +2957,7 @@ video { } } -@media (min-width: 1280px) { +@media (min-width: 1415px) { #menu-overlay { display: none; @@ -3244,6 +3200,16 @@ video { color: white !important; } +.web-header .language-hover:hover a { + color: #2a2f30 !important; +} + +@media screen and (max-width: 1415px) { + .web-header .nav__links { + padding: 8px; + font-size: 12px; + } +} .main__container { max-width: 1166px; margin: auto; @@ -3938,19 +3904,8 @@ tr .ellipsis__title:hover .ellipsis__title--hover { } .smooth { - -webkit-animation: fadeInAnimation ease 0.3s; - animation: fadeInAnimation ease 0.3s; - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; -} - -@-webkit-keyframes fadeInAnimation { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } + animation: fadeInAnimation ease 0.3s; + animation-iteration-count: 1; } @keyframes fadeInAnimation { @@ -4407,10 +4362,6 @@ button { transition-duration: 300ms; z-index: 120; } -.hamburger.active span { - --tw-bg-opacity: 1; - background-color: rgba(var(--n-10), var(--tw-bg-opacity)); -} .hamburger span { pointer-events: none; position: absolute; @@ -4425,17 +4376,6 @@ button { width: 30px; transform: translateY(-15px); } -.hamburger.active span:nth-child(1) { - width: 40px; - transform: rotate(45deg) translateZ(0); -} -.hamburger.active span:nth-child(2) { - transform: translateX(60px); -} -.hamburger.active span:nth-child(3) { - width: 40px; - transform: translateY(4px) rotate(315deg); -} .hamburger span:nth-child(3) { top: 18px; left: 2px; @@ -4452,20 +4392,6 @@ button { } } -.home-burger-menu.active { - translate: -490% -90%; -} -@media screen and (min-width: 640px) { - .home-burger-menu.active { - translate: -350% -140%; - } -} -@media screen and (max-width: 440px) { - .home-burger-menu.active { - translate: -380% -90%; - } -} - .input { box-sizing: border-box; padding: 14px 0px 14px 55px; @@ -5756,8 +5682,7 @@ form .subelement.pagination a:not(.prev-btn) > label, form .subelement } } .overlay__content .spinner { - -webkit-animation: spin 1s linear infinite; - animation: spin 1s linear infinite; + animation: spin 1s linear infinite; border-radius: 9999px; border-width: 2px; border-color: rgba(var(--n-10), var(--tw-border-opacity)); @@ -5800,8 +5725,7 @@ form .subelement.pagination a:not(.prev-btn) > label, form .subelement } } .loadoverlay__content .spinner { - -webkit-animation: spin 1s linear infinite; - animation: spin 1s linear infinite; + animation: spin 1s linear infinite; border-radius: 9999px; border-width: 2px; border-color: rgba(var(--n-10), var(--tw-border-opacity)); @@ -6333,103 +6257,52 @@ html { text-transform: uppercase; } -.file\:cursor-pointer::-webkit-file-upload-button { - cursor: pointer; -} - .file\:cursor-pointer::file-selector-button { cursor: pointer; } -.file\:rounded-full::-webkit-file-upload-button { - border-radius: 9999px; -} - .file\:rounded-full::file-selector-button { border-radius: 9999px; } -.file\:border::-webkit-file-upload-button { - border-width: 1px; -} - .file\:border::file-selector-button { border-width: 1px; } -.file\:border-solid::-webkit-file-upload-button { - border-style: solid; -} - .file\:border-solid::file-selector-button { border-style: solid; } -.file\:border-spring-50::-webkit-file-upload-button { - --tw-border-opacity: 1; - border-color: rgba(var(--spring-50), var(--tw-border-opacity)); -} - .file\:border-spring-50::file-selector-button { --tw-border-opacity: 1; border-color: rgba(var(--spring-50), var(--tw-border-opacity)); } -.file\:bg-white::-webkit-file-upload-button { - --tw-bg-opacity: 1; - background-color: rgba(var(--white), var(--tw-bg-opacity)); -} - .file\:bg-white::file-selector-button { --tw-bg-opacity: 1; background-color: rgba(var(--white), var(--tw-bg-opacity)); } -.file\:px-4::-webkit-file-upload-button { - padding-left: 1rem; - padding-right: 1rem; -} - .file\:px-4::file-selector-button { padding-left: 1rem; padding-right: 1rem; } -.file\:py-0\.5::-webkit-file-upload-button { - padding-top: 0.125rem; - padding-bottom: 0.125rem; -} - .file\:py-0\.5::file-selector-button { padding-top: 0.125rem; padding-bottom: 0.125rem; } -.file\:py-0::-webkit-file-upload-button { - padding-top: 0px; - padding-bottom: 0px; -} - .file\:py-0::file-selector-button { padding-top: 0px; padding-bottom: 0px; } -.file\:text-spring-50::-webkit-file-upload-button { - --tw-text-opacity: 1; - color: rgba(var(--spring-50), var(--tw-text-opacity)); -} - .file\:text-spring-50::file-selector-button { --tw-text-opacity: 1; color: rgba(var(--spring-50), var(--tw-text-opacity)); } -.file\:outline-none::-webkit-file-upload-button { - outline: 2px solid transparent; - outline-offset: 2px; -} - .file\:outline-none::file-selector-button { outline: 2px solid transparent; outline-offset: 2px; @@ -6722,10 +6595,6 @@ html { line-height: 2.5rem; } - .sm\:text-heading-2 { - font-size: 56px; - } - .sm\:leading-10 { line-height: 2.5rem; } @@ -6951,6 +6820,10 @@ html { margin-bottom: 2rem; } + .xl\:mt-6 { + margin-top: 1.5rem; + } + .xl\:block { display: block; } @@ -6987,12 +6860,6 @@ html { flex-direction: row; } - .xl\:space-x-3 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(0.75rem * var(--tw-space-x-reverse)); - margin-left: calc(0.75rem * calc(1 - var(--tw-space-x-reverse))); - } - .xl\:px-10 { padding-left: 2.5rem; padding-right: 2.5rem; @@ -7031,10 +6898,6 @@ html { padding-right: 1.5rem; } - .xl\:pt-0 { - padding-top: 0px; - } - .xl\:pr-40 { padding-right: 10rem; } @@ -7044,6 +6907,45 @@ html { } } +@media (min-width: 1415px) { + + .\31xl\:mb-0 { + margin-bottom: 0px; + } + + .\31xl\:block { + display: block; + } + + .\31xl\:hidden { + display: none; + } + + .\31xl\:flex-row { + flex-direction: row; + } + + .\31xl\:flex-row-reverse { + flex-direction: row-reverse; + } + + .\31xl\:border-b-transparent { + border-bottom-color: transparent; + } + + .\31xl\:pb-0 { + padding-bottom: 0px; + } + + .\31xl\:pt-0 { + padding-top: 0px; + } + + .\31xl\:outline { + outline-style: solid; + } +} + @media (min-width: 1536px) { .\32xl\:w-auto { @@ -7056,4 +6958,4 @@ html { background-color: rgba(var(--n-10), var(--tw-bg-opacity)); } -/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzL2FwcC5jc3MiLCJtYXBwaW5ncyI6IkFBQUE7O0NBQUE7OztDQUFBOztBQUFBOzs7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztFQUFBO0FBQUE7O0FBQUE7Ozs7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtLQUFBO0VBQUE7QUFBQTs7QUFBQTs7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7Ozs7Q0FBQTs7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7VUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOzs7Ozs7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7O0VBQUE7QUFBQTs7QUFBQTs7O0NBQUE7O0FBQUE7Ozs7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOztFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7OztDQUFBOztBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7Ozs7Q0FBQTs7QUFBQTs7Ozs7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOztFQUFBO0FBQUE7O0FBQUE7OztDQUFBOztBQUFBOzs7O0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7O0VBQUE7QUFBQTs7QUFBQTs7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBOzs7Q0FBQTs7QUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQUFBOztBQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7O0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBOzs7Q0FBQTs7QUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTs7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7O0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTtBQUFBO0VBQUE7QUFBQTs7QUFBQTs7OztDQUFBOztBQUFBOzs7Ozs7OztFQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTs7RUFBQTtFQUFBO0FBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUNBQTtFQUFBO0FBQUE7QUFBQTs7RUFBQTtJQUFBO0VBQUE7QUFBQTtBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBO0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFBQTs7RUFBQTtJQUFBO0VBQUE7QUFBQTtBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBO0FDQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFBQTs7RUFBQTtJQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7VUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtPQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtVQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUNBQTtFQUNFO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFFQTtFQUNBO0VBSUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7QUNaRjs7QUN6REE7RUFDRTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RUQ0REY7QUFDRjtBQzFEQTtFQUNFO0VBQ0E7QUQ0REY7O0FDMURBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQUE7RUFDQTtBRDZERjs7QUMxREU7RUFBQTtFQUFBO0VBQ0E7QUFEQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FEK0RGO0FDNURJO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7RUFBQTtFQUFBO0VBQ0E7QUFGQTtBQUtFO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUtGO0VBQUE7RUFBQTtFQUNBO0FBREE7O0FBSUo7RUFDRTtJQUNFO0VENERGO0VDekRJO0lBQUE7SUFBQTtJQUNBO0VBREE7RUFJRjtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUFBO0lBQ0E7SUFDQTtJQUNBO0VEMkRKO0VDekRFO0lBQ0U7RUQyREo7QUFDRjtBQ3ZERTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBO0FBREY7RUFFRTtFQUNBO0VBQ0E7RUFDQTtBRDBERjs7QUN2REU7RUFDRTtFQUNBO0VBQ0E7QUQwREo7O0FDdERFO0VBREY7SUFFSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFBQTtJQUFBO0lBQUE7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RUQwREY7RUN0RE07SUFBQTtJQUFBO0lBQ0E7SUFDQTtFQUZBO0VBS0U7SUFBQTtJQUFBO0VBQUE7RUFHRjtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUFBO0VEd0RSO0VDdERNO0lBQ0U7RUR3RFI7QUFDRjtBQ25ERTtFQTlDRjtJQStDSTtJQUNBO0lBQ0E7RURzREY7QUFDRjs7QUNsREU7O0VBQUE7SUFBQTtFQUFBO0FBQUE7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SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0FBQUE7QUFERjtFQUVFO0FMNHJCTjtBSzFyQk07RUFDRTtJQUFBO0lBQUE7RUFBQTtBTDhyQlI7QUszckJNO0VBQ0U7QUw2ckJSO0FLMXJCUTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFHQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFHQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0E7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUY7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTs7RUFBQTtJQUFBO0VBQUE7QUFBQTtBQUdFO0VBQUE7RUFBQTtBQUFBO0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFBQTs7RUFBQTtJQUFBO0VBQUE7QUFBQTtBQUdFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBS0E7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFJSjtFQUNFO0VBQ0E7RUFDQTtFQUFBO0VBQUE7QUwwckJSO0FLdHJCTTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtFQUNBO0FBRkE7QUFJQTtFQUxGO0lBTUk7RUwwckJOO0FBQ0Y7QUt2ckJRO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFJQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUdBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFJRjtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUtKO0VBQUE7RUFBQTtBQUFBOztBQUdBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FDcEZGO0VBQ0U7VUFBQTtFQUNBO1VBQUE7QU5neEJGOztBTTd3QkE7RUFDRTtJQUNFO0VOZ3hCRjtFTTl3QkE7SUFDRTtFTmd4QkY7QUFDRjs7QU10eEJBO0VBQ0U7SUFDRTtFTmd4QkY7RU05d0JBO0lBQ0U7RU5neEJGO0FBQ0Y7QU8zeEJBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFBQTtFQUFBO0FQNnhCRjs7QU8xeEJBO0VBQ0U7RUFDQTtBUDZ4QkY7QU8zeEJFO0VBQ0U7QVA2eEJKOztBT3h4QkU7RUFDRTtFQUNBO0FQMnhCSjtBT3p4Qkk7RUFKRjtJQUtJO0VQNHhCSjtBQUNGOztBT3B4QkU7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBO0FBSEE7RUFDRTtJQUFBO0VBQUE7QVAreEJKOztBT3p4QkU7RUFBQTtFQUFBO0FBQUE7O0FDbENGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUFBO0VBQUE7RUFBQTtBUmswQkY7QVEvekJJO0VBQUE7RUFBQTtFQUNBO0VBQUE7QUFEQTtBQUdBO0VBQ0U7RUFDQTtBUmswQk47O0FRN3pCQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFBQTtFQUFBO0FSZzBCRjtBUTl6QkU7RUFDRTtBUmcwQko7QVE1ekJJO0VBQ0U7QVI4ekJOOztBUXB6QkU7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFKQTtFQURGO0lBRUk7SUFDQTtFUit6QkY7QUFDRjtBUTV6QkU7RUFDRTtFQUNBO0FSOHpCSjs7QVExekJBO0VBQ0U7QVI2ekJGOztBUXp6QkU7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFERjtFQUVFO0VBQ0E7QVI2ekJGOztBUTF6QkE7RUFDRTtJQUNFO0VSNnpCRjtBQUNGO0FRMXpCQTtFQUNFO0FSNHpCRjs7QVF6ekJFO0VBQ0U7QVI0ekJKOztBUXR6Qkk7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUVGO0VBQ0U7QVIwekJKOztBUXB6QkU7O0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBOztBQU1BO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFHRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0U7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtFQUNBO0FBRkE7QUFNQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFJSjtFQUNFO0FSbXpCSjtBUS95Qkk7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQU1GO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUlFO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0FBQUE7O0FBTUY7RUFBQTtFQUFBO09BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0U7RUFBQTtFQUFBO09BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFFQTtFQUNFO0VBQ0E7QVI2eUJOO0FRMXlCTTtFQUFBO0VBQUE7QUFBQTtBQUlGO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtBQUFBO0FBR0Y7RUFDRTtFQUNBO0FSMHlCSjs7QVFweUJFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBSUU7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0FBQUE7O0FBS0Y7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBSUU7RUFBQTtFQUFBO0FBQUE7O0FBS0Y7RUFBQTtBQUFBOztBQUlBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUlFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBS0Y7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFJQTtFQUFBO0FBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUlFO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUdGO0VBQ0U7RUFDQTtBUm15Qko7O0FTemdDRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBS0k7RUFBQTtFQUFBO0FBQUE7QUFLRjtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBRUY7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBVDBnQ0o7QVN2Z0NJO0VBQ0U7RUFDQTtBVHlnQ047QVN2Z0NJO0VBQ0U7QVR5Z0NOO0FTdmdDSTtFQUNFO0VBQ0E7QVR5Z0NOO0FTdGdDRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FUd2dDSjs7QVNyZ0NBO0VBQ0U7QVR3Z0NGO0FTdGdDRTtFQUhGO0lBSUk7RVR5Z0NGO0FBQ0Y7O0FTdGdDQTtFQUlFO0FUc2dDRjtBU3pnQ0U7RUFERjtJQUVJO0VUNGdDRjtBQUNGO0FTemdDRTtFQU5GO0lBT0k7RVQ0Z0NGO0FBQ0Y7O0FVbmtDQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFBQTtFQUFBO0VBQUE7QVZza0NGOztBVXRrQ0U7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFHRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUdGO0VBQ0U7RUFDQTtFQUFBO0VBQUE7QVZxa0NKO0FVdmtDRTtFQUNFO0VBQ0E7RUFBQTtFQUFBO0FWcWtDSjtBVWprQ0k7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUdGO0VBdkJGO0lBd0JJO0VWb2tDRjtBQUNGOztBVWprQ0U7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztFQUFBO0lBQUE7SUFBQTtFQUFBO0FBQUE7O0FBREY7RUFFRTtFQUNBO0VBQ0E7QVZxa0NGOztBVWhrQ0k7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFHSjtFQUNFO0FWb2tDRjs7QVVsa0NBO0VBQ0U7RUFDQTtFQUNBO0FWcWtDRjs7QVVsa0NFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBS0E7QUFMQTtBQUVBO0VBSEY7SUFJSTtFVndrQ0Y7QUFDRjtBVXBrQ0k7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFLQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7O0FBS0E7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUlGO0VBQ0U7RUFDQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QVZpa0NKO0FVOWpDRTtFQUNFO0VBQ0E7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QVZna0NKO0FVM2pDTTtFQUFBO0VBQUE7QUFBQTtBQUtGO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFHRjtFQUNFO0VBQ0E7QVYyakNKO0FVdmpDSTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0FBQUE7QUFJQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBS0E7QUFMQTtBQUVBO0VBSEY7SUFJSTtFVnlqQ0o7QUFDRjs7QVVyakNBO0VBQ0U7QVZ3akNGOztBVXJqQ0U7RUFDRTtBVndqQ0o7O0FVcGpDRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFHRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFLQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBOztBQUlGO0VBQUE7QUFBQTtBQUdFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7RUFDQTtBQUZBO0FBS0E7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUlGO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFFRjtFQUNFO0VBQ0E7RUFDQTtBVndqQ0Y7QVV2akNFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZ5akNKO0FVeGpDSTtFQUNFO0FWMGpDTjs7QVV0akNBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZ5akNGOztBVXZqQ0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVYwakNGOztBVXhqQ0E7RUFDRTtBVjJqQ0Y7O0FVempDQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWNGpDRjs7QVUxakNBO0VBQ0U7QVY2akNGOztBVTNqQ0E7RUFDRTtBVjhqQ0Y7O0FXcnhDRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBR0E7RUFKRjtJQUtJO0lBQ0E7RVgweENGO0FBQ0Y7QVd2eENJO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFBQTtBWHd4Q1I7QVdweENNO0VBQUE7RUFDQTtBQURBO0FBUUU7RUFBQTtBQUFBO0FBR0E7RUFBQTtBQUFBO0FBTUo7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUdFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtBQUFBO0FBRUU7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBTUo7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQU1FOztFQUFBO0FBQUE7QUFNQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFHQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFJSjtFQUNFO0FYc3dDSjs7QVdod0NJO0VBQ0U7QVhtd0NOO0FXL3ZDRTtFQUNFO0VBQ0E7RUFDQTtBWGl3Q0o7QVc5dkNRO0VBQUE7RUFBQTtBQUFBO0FBR0U7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFHRjtFQUNFO0VBRUE7RUFDQTtBWDh2Q1Y7QVczdkNZO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQWdCUjtFQUNFO0VBQ0E7QVhndkNOO0FXL3VDTTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFBQTtBWGl2Q1I7QVc5dUNJO0VBQ0U7QVhndkNOO0FXNXVDRTtFQUNFO0VBQ0E7RUFDQTtBWDh1Q0o7QVc1dUNJO0VBQ0U7QVg4dUNOO0FXM3VDSTtFQUNFO0FYNnVDTjs7QVd4dUNBO0VBQ0U7QVgydUNGOztBV3h1Q0E7RUFDRTtBWDJ1Q0Y7O0FXeHVDQTtFQUNFO0FYMnVDRjs7QVd4dUNBO0VBQ0U7QVgydUNGOztBV3h1Q0U7RUFDRTtBWDJ1Q0o7QVd6dUNFO0VBQ0U7QVgydUNKO0FXenVDSTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVgydUNOOztBV3Z1Q0E7RUFDRTtBWDB1Q0Y7O0FXeHVDQTs7RUFFRTtFQUNBO0VBQ0E7QVgydUNGO0FXMXVDRTtFQUxGOztJQU1JO0VYOHVDRjtBQUNGO0FXM3VDTTs7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBWDh1Q1I7O0FXeHVDQTs7RUFBQTtBQUdBO0VBQ0U7QVgydUNGOztBV3p1Q0E7RUFDRTtBWDR1Q0Y7QVcxdUNFO0VBSEY7SUFJSTtFWDZ1Q0Y7QUFDRjs7QVczdUNBO0VBQ0U7RUFDQTtBWDh1Q0Y7QVc1dUNFO0VBSkY7SUFLSTtJQUNBO0VYK3VDRjtBQUNGOztBVzd1Q0E7RUFDRTtFQUNBO0VBQ0E7QVhndkNGO0FXOXVDRTtFQUxGO0lBTUk7SUFDQTtFWGl2Q0Y7QUFDRjs7QVcvdUNBO0VBQ0U7RUFDQTtBWGt2Q0Y7O0FXaHZDQTtFQUNFO0VBQ0E7QVhtdkNGOztBV2p2Q0E7RUFDRTtFQUNBO0FYb3ZDRjtBV2x2Q0U7RUFKRjtJQUtJO0lBQ0E7SUFDQTtFWHF2Q0Y7QUFDRjs7QVl4L0NFO0VBQUE7RUFBQTtFQUFBO0VBQUE7S0FBQTtVQUFBO0FBQUE7QUFFRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FaOC9DTjtBWTEvQ0k7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFFRTtFQUFBO0VBQUE7QUFBQTtBQUVFO0VBQUE7QUFBQTtBQUtKO0VBQUE7RUFBQTtBQUFBOztBQUdKOztFQUFBO0FBR0E7RUEwSEU7O0dBQUE7QVpzNENGO0FZOS9DSTtFQUFBO0VBQUE7QUFBQTtBQUVFO0VBQUE7QUFBQTtBQUlBO0VBQUE7QUFBQTtBQUVFO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUtKO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFDQTtFQUNFO0VBQ0E7RUFDQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FaaWdETjtBWTkvQ007RUFBQTtFQUFBO0FBQUE7QUFLRjtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFFRTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0E7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQU1GOzs7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFFRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTs7O0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUdBOzs7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFHQTtFQUFBO0VBQUE7QUFBQTtBQUFBOzs7RUFBQTtFQUFBO0FBQUE7QUFNRjs7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBRUU7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFJRjtFQUFBO0FBQUE7QUFFRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7RUFDQTtBQUZBO0FBTUY7RUFDRTtFQUNBO0VBQ0E7QVppZ0ROO0FZNy9DSTtFQUFBO0FBQUE7QUFDQTtFQUNFO0VBQ0E7RUFB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QTtBZjYzRE47QWUxM0RJO0VBQ0U7QWY0M0ROO0FlejNESTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWYyM0ROO0FlejNETTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FmMjNEUjtBZXYzREU7RUFDRTtFQUNBO0FmeTNESjs7QWVuM0RJO0VBQ0U7RUFDQTtBZnMzRE47QWVqM0RJO0VBQ0U7RUFDQTtBZm0zRE47QWU5MkRJO0VBQ0U7RUFDQTtBZmczRE47O0FnQjFoRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCNmhFRjtBZ0I1aEVFO0VBYkY7SUFjSTtFaEIraEVGO0FBQ0Y7QWdCN2hFRTtFQUNFO0FoQitoRUo7QWdCNWhFRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FoQjhoRUo7O0FnQjNoRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQjhoRUY7QWdCNWhFRTtFQUNFO0VBQ0E7QWhCOGhFSjs7QWdCM2hFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCOGhFRjtBZ0I1aEVFO0VBYkY7SUFjSTtJQUNBO0VoQitoRUY7QUFDRjtBZ0I3aEVFO0VBQ0U7RUFDQTtBaEIraEVKOztBaUJqbUVBO0VBQ0U7RUFDQTtBakJvbUVGOztBaUJsbUVBO0VBQ0U7QWpCcW1FRjs7QWlCaG1FRTs7O0VBQ0U7QWpCcW1FSjs7QWlCam1FRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FqQm9tRUo7O0FpQmptRUE7RUFDRTtFQUNBO0FqQm9tRUY7O0FpQmxtRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCcW1FRjs7QWlCbG1FQTtFQUNFO0FqQnFtRUY7QWlCbm1FRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCcW1FSjtBaUJwbUVJO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCc21FTjtBaUJubUVFO0VBQ0U7QWpCcW1FSjtBaUJubUVFO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJvbUVKO0FpQm5tRUk7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJxbUVOOztBaUJobUVBO0VBQ0U7QWpCbW1FRjtBaUJsbUVFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQm9tRUo7O0FpQmptRUE7RUFDRTtBakJvbUVGOztBaUJsbUVBO0VBQ0U7QWpCcW1FRjs7QWlCbG1FRTtFQUNFO0FqQnFtRUo7QWlCbm1FRTtFQUNFO0VBQ0E7QWpCcW1FSjs7QWlCbG1FQTtFQUNFO0FqQnFtRUY7O0FpQm5tRUE7RUFDRTtFQUNBO0FqQnNtRUY7O0FpQmxtRUU7RUFDRTtBakJxbUVKOztBaUJsbUVBO0VBQ0U7RUFDQTtBakJxbUVGOztBa0JwdUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEJ1dUVGOztBbUI1dUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQit1RUY7O0FtQjV1RUU7RUFDRTtBbkIrdUVKOztBbUIzdUVFO0VBQ0U7QW5COHVFSjs7QW1CMXVFQTtFQUNFO0VBQ0E7RUFDQTtBbkI2dUVGOztBbUJodkVBO0VBQ0U7RUFDQTtFQUNBO0FuQjZ1RUY7O0FtQjF1RUE7RUFDRTtBbkI2dUVGOztBbUIxdUVBO0VBQ0U7QW5CNnVFRjs7QW1CM3VFQTtFQUNFO0FuQjh1RUY7O0FtQjV1RUE7RUFDRTtFQUNBO0FuQit1RUY7O0FtQjV1RUE7RUFDRTtFQUNBO0FuQit1RUY7O0FtQjd1RUE7RUFDRTtFQUNBO0VBQ0E7QW5CZ3ZFRjs7QW1CN3VFQTtFQUNFO0VBQ0E7QW5CZ3ZFRjs7QW1CN3VFQTtFQUNFO0FuQmd2RUY7O0FtQjd1RUE7RUFDRTtBbkJndkVGOztBbUI3dUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QW5CZ3ZFRjs7QW1CN3VFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FuQmd2RUY7O0FtQjd1RUE7RUFDRTtFQUNBO0VBQ0E7QW5CZ3ZFRjs7QW1CN3VFQTtFQUNFO0VBQ0E7QW5CZ3ZFRjs7QW1CN3VFQTtFQUNFO0VBQ0E7RUFDQTtBbkJndkVGOztBbUI5dUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkJpdkVGOztBbUI5dUVBO0VBQ0U7RUFDQTtBbkJpdkVGOztBbUI5dUVBO0VBQ0U7QW5CaXZFRjs7QW1COXVFQTtFQUNFO0FuQml2RUY7O0FtQjl1RUE7RUFDRTtBbkJpdkVGOztBbUI5dUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QW5CaXZFRjs7QW1CN3VFRTtFQUFBO0VBQUE7RUFDQTtFQUNBO0FBRkE7O0FBS0E7RUFBQTtFQUFBO0VBQ0E7QUFEQTs7QUFJQTtFQUFBO0VBQUE7RUFDQTtBQURBOztBbkJ2R0Y7RUFDRTtFQUNBO0VBQ0E7QUE4MUVGOztBSnA0RUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQSx1QndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEsdUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLG1Cd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSxtQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEsbUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLG1Cd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSxzQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEsc0J3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLGlCd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSxpQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEscUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLHFCd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSwrQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEsK0J3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBO0N3QkFBOztBeEJBQTtFQUFBO0N3QkFBOztBeEJBQTtFQUFBLHVCd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSx1QndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEsbUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLG1Cd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSxtQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEsbUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLG1Cd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSxxQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEscUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLGdDd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSxxQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEscUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLHFCd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQSxzQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEscUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBO0N3QkFBOztBeEJBQTs7RUFBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBLG9Cd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQSx3QndCQUE7SXhCQUEsK0R3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLGdDd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSwrQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUEscUJ3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLG9Cd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSxrQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEsb0J3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLG1Cd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSxvQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEsc0J3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLHNCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSxxQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEscUJ3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBLGtCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQSxnQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEsbUJ3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBO0NBQUE7O0F4QkFBOztFQUFBO0lBQUEsZ0J3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBLDZCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSw0QndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUEscUJ3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBLG1Cd0JBQTtJeEJBQTtHd0JBQTtDQUFBOztBeEJBQTs7RUFBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBLGtCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSxxQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7Q0FBQTs7QXhCQUE7O0VBQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQSxrQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUEsd0J3QkFBO0l4QkFBLHdEd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSxxQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEsa0J3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLHFCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSxzQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEsbUJ3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLHFCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTtDQUFBOztBeEJBQTs7RUFBQTtJQUFBO0d3QkFBO0NBQUE7O0F4QkFBO0VBQUEsbUJ3QkFBO0V4QkFBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3RhaWx3aW5kY3NzL2Jhc2UuY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy90YWlsd2luZGNzcy9jb21wb25lbnRzLmNzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdGFpbHdpbmRjc3MvdXRpbGl0aWVzLmNzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvYWJzdHJhY3RzL192YXJpYWJsZXMuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvYXBwLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2xheW91dHMvX2hlYWRlci5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9sYXlvdXRzL19tYWluLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2xheW91dHMvX2Zvb3Rlci5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9sYXlvdXRzL19hY3Rpdml0eS5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9sYXlvdXRzL19zZXR0aW5nX3BhZ2Uuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvbGF5b3V0cy9fd2VicG9ydGFscGFnZXMuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvYmFzZS9fdHlwb2dyYXBoeS5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnQvX2J1dHRvbi5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnQvX2hhbWJ1cmdlci5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnQvX2lucHV0LnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudC9fdGFibGUuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50L19mb3Jtcy5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnQvX3BhZ2luYXRpb24uc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50L19vdmVybGF5LnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudC9fc2VsZWN0Mi5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnQvX3NpZGViYXItaWNvbi5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy92ZW5kb3Itb3ZlcnJpZGVzL211bHRpc2VsZWN0LnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL3ZlbmRvci1vdmVycmlkZXMvX3plbmRleC5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy92ZW5kb3Itb3ZlcnJpZGVzL192dWUtZGF0ZXBpY2tlci5zY3NzIiwid2VicGFjazovLy88bm8gc291cmNlPiJdLCJzb3VyY2VzQ29udGVudCI6WyJAdGFpbHdpbmQgYmFzZTtcbiIsIkB0YWlsd2luZCBjb21wb25lbnRzO1xuIiwiQHRhaWx3aW5kIHV0aWxpdGllcztcbiIsIjpyb290IHtcbiAgLS1ibGFjazogMCwgMCwgMDtcbiAgLS13aGl0ZTogMjU1LCAyNTUsIDI1NTtcbiAgLS10cmFuc3BhcmVudDogdHJhbnNwYXJlbnQ7XG5cbiAgLy8gTmV1dHJhbHNcbiAgLS1uLTA6IDI1NSwgMjU1LCAyNTU7XG4gIC0tbi0xMDogMjQxLCAyNDcsIDI0OTtcbiAgLS1uLTIwOiAyMTMsIDIyMCwgMjIyO1xuICAtLW4tMzA6IDE2NiwgMTgxLCAxODY7XG4gIC0tbi00MDogMTA0LCAxMjEsIDEyNjtcbiAgLS1uLTUwOiA0MiwgNDcsIDQ4O1xuXG4gIC8vIFByaW1hcnkgY29sb3JzXG4gIC0tdHVycXVvaXNlOiA2LCAyMTksIDIyODtcbiAgLS1ibHVlY29yYWw6IDIxLCA4MywgMTAyO1xuXG4gIC0tYmx1ZWNvcmFsLTQwOiA2MCwgMTEyLCAxMjg7XG4gIC0tYmx1ZWNvcmFsLTUwOiAyMSwgODMsIDEwMjtcblxuICAvLyBTZWNvbmRhcnkgY29sb3JzXG4gIC8vIENhbWVsXG4gIC0tY2FtZWwtMTA6IDI1MiwgMjM5LCAyMjg7XG4gIC0tY2FtZWwtMjA6IDI0OSwgMjE5LCAxOTM7XG4gIC0tY2FtZWwtMzA6IDI0OCwgMjA3LCAxNzM7XG4gIC0tY2FtZWwtNDA6IDI0NiwgMTk1LCAxNTI7XG4gIC0tY2FtZWwtNTA6IDI0NCwgMTgzLCAxMzI7XG4gIC8vIFRlYWxcbiAgLS10ZWFsLTEwOiAyMzEsIDI0MywgMjQxO1xuICAtLXRlYWwtMjA6IDIxNSwgMjM1LCAyMzI7XG4gIC0tdGVhbC0zMDogMTk1LCAyMjQsIDIyMDtcbiAgLS10ZWFsLTQwOiAxNzUsIDIxNCwgMjA5O1xuICAtLXRlYWwtNTA6IDEzNSwgMTk0LCAxODY7XG4gIC8vIFNwcmluZ1xuICAtLXNwcmluZy0xMDogMTc4LCAyMjEsIDIxMTtcbiAgLS1zcHJpbmctMjA6IDEzOSwgMjA0LCAxODk7XG4gIC0tc3ByaW5nLTMwOiAxMDAsIDE4NywgMTY3O1xuICAtLXNwcmluZy00MDogNjIsIDE3MCwgMTQ1O1xuICAtLXNwcmluZy01MDogMjMsIDE1MywgMTIzO1xuICAvLyBMYWdvb25cbiAgLS1sYWdvb24tMTA6IDIwOSwgMjM4LCAyNDA7XG4gIC0tbGFnb29uLTIwOiAxNzgsIDIyNywgMjI5O1xuICAtLWxhZ29vbi0zMDogMTM5LCAyMTMsIDIxNjtcbiAgLS1sYWdvb24tNDA6IDEwMSwgMjAwLCAyMDQ7XG4gIC0tbGFnb29uLTUwOiAyNCwgMTcyLCAxNzg7XG4gIC8vIFNhbG1vblxuICAtLXNhbG1vbi0xMDogMjU1LCAyMjcsIDIyNDtcbiAgLS1zYWxtb24tMjA6IDI1NSwgMjA4LCAyMDM7XG4gIC0tc2FsbW9uLTMwOiAyNTUsIDE4NCwgMTc3O1xuICAtLXNhbG1vbi00MDogMjU1LCAxNjEsIDE1MjtcbiAgLS1zYWxtb24tNTA6IDI1NSwgMTE0LCAxMDA7XG4gIC8vIExhdmVuZGVyXG4gIC0tbGF2ZW5kZXItMTA6IDIzNywgMjI2LCAyNTE7XG4gIC0tbGF2ZW5kZXItMjA6IDIyNSwgMjA3LCAyNDg7XG4gIC0tbGF2ZW5kZXItMzA6IDIxMCwgMTgyLCAyNDQ7XG4gIC0tbGF2ZW5kZXItNDA6IDE5NiwgMTU4LCAyNDA7XG4gIC0tbGF2ZW5kZXItNTA6IDE2NiwgMTEwLCAyMzM7XG4gIC0tbGF2ZW5kZXItNjA6IDI0NiwgMjQwLCAyNTU7XG4gIC8vIENyaW1zb25cbiAgLS1jcmltc29uLTEwOiAyNTUsIDI0OCwgMjQ3O1xuICAtLWNyaW1zb24tMjA6IDI1MCwgMjEzLCAyMTU7XG4gIC0tY3JpbXNvbi0zMDogMjQxLCAxNTUsIDE2MDtcbiAgLS1jcmltc29uLTQwOiAyMjcsIDc3LCA5MTtcbiAgLS1jcmltc29uLTUwOiAyMDksIDAsIDMwO1xuXG4gIC8vIFBhc3RlbCBjb2xvcnNcbiAgLS1lZ2dzaGVsbDogMjU1LCAyNTMsIDIzMTtcbiAgLS1taW50OiAyMzgsIDI0OSwgMjQ1O1xuICAtLXJvc2U6IDI1NSwgMjQxLCAyNDA7XG4gIC0tcGFwZXI6IDI0NiwgMjQ3LCAyNTI7XG59XG4iLCIvL3RhaWx3aW5kXG5AaW1wb3J0ICd+dGFpbHdpbmRjc3MvYmFzZSc7XG5AaW1wb3J0ICd+dGFpbHdpbmRjc3MvY29tcG9uZW50cyc7XG5AaW1wb3J0ICd+dGFpbHdpbmRjc3MvdXRpbGl0aWVzJztcblxuLy8gQWJzdHJhY3RzXG5AaW1wb3J0ICdhYnN0cmFjdHMvdmFyaWFibGVzJztcblxuLy8gbGF5b3V0c1xuQGltcG9ydCAnbGF5b3V0cy9oZWFkZXInO1xuQGltcG9ydCAnbGF5b3V0cy9tYWluJztcbkBpbXBvcnQgJ2xheW91dHMvZm9vdGVyJztcbkBpbXBvcnQgJ2xheW91dHMvYWN0aXZpdHknO1xuQGltcG9ydCAnbGF5b3V0cy9zZXR0aW5nX3BhZ2UnO1xuQGltcG9ydCAnbGF5b3V0cy9fd2VicG9ydGFscGFnZXMnO1xuXG4vLyBiYXNlXG5AaW1wb3J0ICdiYXNlL3R5cG9ncmFwaHknO1xuXG4vLyBjb21wb25lbnRcbkBpbXBvcnQgJ2NvbXBvbmVudC9idXR0b24nO1xuQGltcG9ydCAnY29tcG9uZW50L2hhbWJ1cmdlcic7XG5AaW1wb3J0ICdjb21wb25lbnQvaW5wdXQnO1xuQGltcG9ydCAnY29tcG9uZW50L3RhYmxlJztcbkBpbXBvcnQgJ2NvbXBvbmVudC9mb3Jtcyc7XG5AaW1wb3J0ICdjb21wb25lbnQvcGFnaW5hdGlvbic7XG5AaW1wb3J0ICdjb21wb25lbnQvb3ZlcmxheSc7XG5AaW1wb3J0ICdjb21wb25lbnQvc2VsZWN0Mic7XG5AaW1wb3J0ICdjb21wb25lbnQvc2lkZWJhci1pY29uJztcblxuLy92ZW5kb3Igb3ZlcnJpZGVzXG5AaW1wb3J0ICd2ZW5kb3Itb3ZlcnJpZGVzL211bHRpc2VsZWN0JztcbkBpbXBvcnQgJ3ZlbmRvci1vdmVycmlkZXMvemVuZGV4JztcbkBpbXBvcnQgJ3ZlbmRvci1vdmVycmlkZXMvX3Z1ZS1kYXRlcGlja2VyJztcblxuaHRtbCB7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIG9wYWNpdHk6IDE7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuIiwiQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgLndyYXBwZXI6OmFmdGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMjkycHg7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcvaW1hZ2VzL21hcnF1ZS13aGl0ZS5wbmcnKTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IDEwMCUgMTYuNSU7XG4gICAgYmFja2dyb3VuZC1zaXplOiA3MCU7XG4gICAgb3BhY2l0eTogMC4zO1xuICAgIGNvbnRlbnQ6ICcnO1xuICB9XG59XG4uaGVhZGVyIHtcbiAgbWF4LXdpZHRoOiAxMTY2cHg7XG4gIG1hcmdpbjogYXV0bztcbn1cbi5uYXZfX2FjdGl2ZTo6YWZ0ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNHB4O1xuICBAYXBwbHkgYmctdHVycXVvaXNlO1xuICBjb250ZW50OiAnJztcbn1cbi5saW5rc19fYWN0aXZlIHtcbiAgQGFwcGx5IHRleHQtYmxhY2s7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLm5hdl9fbGlua3Mge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmc6IDIwcHggOHB4O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG5cbiAgYTpob3ZlciB7XG4gICAgQGFwcGx5IHRleHQtbi01MDtcbiAgfVxuXG4gIC5yZWFkX19tb3JlIHtcbiAgICBAYXBwbHkgcm91bmRlZC1zbSBiZy1ibHVlY29yYWwgdGV4dC1jZW50ZXIgdGV4dC14cyB0ZXh0LXdoaXRlO1xuICAgIHdpZHRoOiBmaXQtY29udGVudDtcbiAgICBwYWRkaW5nOiA4cHggMThweDtcblxuICAgICY6aG92ZXIge1xuICAgICAgQGFwcGx5IGJnLW4tNTAgdGV4dC13aGl0ZTtcbiAgICB9XG4gIH1cblxuICBhIHtcbiAgICBAYXBwbHkgdGV4dC13aGl0ZTtcbiAgICBwYWRkaW5nLWJvdHRvbTogMjRweDtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTI4MHB4KSB7XG4gIC5uYXZfX2xpbmtzIHtcbiAgICBwYWRkaW5nOiAwcHggOHB4IDIwcHg7XG5cbiAgICBhIHtcbiAgICAgIEBhcHBseSB0ZXh0LW4tNTA7XG4gICAgICBmb250LXNpemU6IDEycHg7XG4gICAgfVxuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm90dG9tOiAwO1xuICAgICAgbGVmdDogMDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiA0cHg7XG4gICAgICBAYXBwbHkgYmctdHVycXVvaXNlO1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLCAxKTtcbiAgICAgIHRyYW5zaXRpb246IDAuM3M7XG4gICAgICBjb250ZW50OiAnJztcbiAgICB9XG4gICAgJjpob3Zlcjo6YWZ0ZXIge1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKTtcbiAgICB9XG4gIH1cbn1cbi5kcm9wZG93bl9fY29udGVudCB7XG4gIEBhcHBseSBpbnZpc2libGUgYWJzb2x1dGUgcmlnaHQtMCB0b3AtNyBoaWRkZW4gaC01NiBiZy13aGl0ZSBweS03IHB4LTggb3BhY2l0eS0wIGR1cmF0aW9uLTMwMCB4bDpibG9jaztcbiAgd2lkdGg6IDQyNHB4O1xuICBoZWlnaHQ6IGF1dG87XG4gIGxpbmUtaGVpZ2h0OiAyMnB4O1xuICBib3gtc2hhZG93OiAwcHggOHB4IDE2cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cbi5kcm9wZG93bjpob3ZlciB7XG4gIC5kcm9wZG93bl9fY29udGVudCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEycHgpO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuLm5hdl9fbGlzdCB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEyODBweCkge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzAwcHg7XG4gICAgaGVpZ2h0OiAxMDB2aDtcbiAgICBwYWRkaW5nOiAzMHB4O1xuICAgIEBhcHBseSBiZy1ibHVlY29yYWwgdGV4dC13aGl0ZTtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDUlKTtcbiAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICAgIHotaW5kZXg6IDExMDtcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KC0wcHggMHB4IDhweCAjMDAwKTtcblxuICAgIC5hY3RpdmUge1xuICAgICAgYSB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXdoaXRlO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAyNHB4O1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgIEBhcHBseSB0ZXh0LXdoaXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBoZWlnaHQ6IDRweDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAsIDEpO1xuICAgICAgICAgIHRyYW5zaXRpb246IDAuM3M7XG4gICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgQGFwcGx5IGJnLXR1cnF1b2lzZTtcbiAgICAgICAgfVxuICAgICAgICAmOmhvdmVyOjphZnRlciB7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ0MHB4KSB7XG4gICAgd2lkdGg6IDI1MHB4O1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICB9XG59XG5cbiNtZW51LW92ZXJsYXkge1xuICBAYXBwbHkgeGw6aGlkZGVuO1xufVxuXG4jYWN0aXZpdHktbWVudS1vdmVybGF5IHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTQyMHB4KSB7XG4gICAgQGFwcGx5IGhpZGRlbjtcbiAgfVxufVxuXG4ubWVudS1vdmVybGF5IHtcbiAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7XG4gIHotaW5kZXg6IDEwMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG59XG4uYWN0aXZpdHktbmF2LW1lbnUge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxNDIwcHgpIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDMwMHB4O1xuICAgIGhlaWdodDogMTAwdmg7XG4gICAgcGFkZGluZzogMTAwcHggMzBweDtcbiAgICBAYXBwbHkgYmctYmx1ZWNvcmFsIHRleHQtd2hpdGU7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwNSUpO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig3cHgpO1xuICAgIHRyYW5zaXRpb246IDAuM3M7XG4gICAgei1pbmRleDogMTAwO1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDhweCAjMDAwKTtcblxuICAgIC5hY3Rpdml0eS1uYXYtbGlzdCB7XG4gICAgICBAYXBwbHkgZmxleCBmbGV4LWNvbCBnYXAteS00IHBsLTQgdGV4dC1zbTtcbiAgICAgIC5uYXZfX3BvaW50ZXIsXG4gICAgICAubmF2X19wb2ludGVyLWhvdmVyIHtcbiAgICAgICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBAYXBwbHkgYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIGgtMSB3LWZ1bGwgc2NhbGUteC0wIHNjYWxlLXktMTAwIHJvdW5kZWQtc20gYmctdHVycXVvaXNlIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMDtcblxuICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0MjBweCkge1xuICAgICAgICAgICAgQGFwcGx5IC1ib3R0b20tMiAgaC0xIHctZnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyOmFmdGVyIHtcbiAgICAgICAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5uYXZfX3BvaW50ZXI6YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmFjdGl2aXR5LW5hdi1saXN0LmFjdGl2aXR5LWxpc3Qge1xuICAgICAgLm5hdl9fcG9pbnRlcixcbiAgICAgIC5uYXZfX3BvaW50ZXItaG92ZXIge1xuICAgICAgICBAYXBwbHkgcmVsYXRpdmU7XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuXG4gICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTQyMHB4KSB7XG4gICAgICAgICAgICBAYXBwbHkgdG9wLTAgLWxlZnQtNCBoLTQgdy0xO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXI6YWZ0ZXIge1xuICAgICAgICAgIEBhcHBseSBzY2FsZS14LTEwMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLm5hdl9fcG9pbnRlcjphZnRlciB7XG4gICAgICAgIEBhcHBseSBzY2FsZS14LTEwMDtcbiAgICAgIH1cbiAgICB9XG4gICAgLmFjdGl2aXR5LW5hdi1saXN0Lmxhbmd1YWdlLW5hdi1saXN0IHtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgcGFkZGluZy1ib3R0b206IDI4cHg7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI0KTtcblxuICAgICAgLm5hdl9fcG9pbnRlcixcbiAgICAgIC5uYXZfX3BvaW50ZXItaG92ZXIge1xuICAgICAgICBAYXBwbHkgcmVsYXRpdmU7XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIEBhcHBseSBhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTAgaC0xIHctZnVsbCBzY2FsZS14LTAgc2NhbGUteS0xMDAgcm91bmRlZC1zbSBiZy10dXJxdW9pc2UgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwO1xuXG4gICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTQyMHB4KSB7XG4gICAgICAgICAgICBAYXBwbHkgLWJvdHRvbS0yICBoLTEgdy1mdWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXI6YWZ0ZXIge1xuICAgICAgICAgIEBhcHBseSBzY2FsZS14LTEwMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLm5hdl9fcG9pbnRlcjphZnRlciB7XG4gICAgICAgIEBhcHBseSBzY2FsZS14LTEwMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbi5uYXYtYWN0aXZlIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcbn1cblxuLm5hdiB7XG4gICZfX3BvaW50ZXIsXG4gICZfX3BvaW50ZXItaG92ZXIge1xuICAgIEBhcHBseSByZWxhdGl2ZTtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgQGFwcGx5IGFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCBoLTEgdy1mdWxsIHNjYWxlLXgtMCBzY2FsZS15LTEwMCByb3VuZGVkLXNtIGJnLXR1cnF1b2lzZSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDA7XG5cbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0MjBweCkge1xuICAgICAgICBAYXBwbHkgLWxlZnQtNCBoLTQgdy0xO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6aG92ZXI6YWZ0ZXIge1xuICAgICAgQGFwcGx5IHNjYWxlLXgtMTAwO1xuICAgIH1cbiAgfVxuXG4gICZfX3BvaW50ZXI6YWZ0ZXIge1xuICAgIEBhcHBseSBzY2FsZS14LTEwMDtcbiAgfVxufVxuXG4uYWN0aXZpdHktbmF2IHtcbiAgQGFwcGx5IGZsZXggZ3JvdztcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxNDIwcHgpIHtcbiAgICBAYXBwbHkganVzdGlmeS1lbmQ7XG4gIH1cbn1cblxuLmxhbmd1YWdlLWhvdmVyOmhvdmVyIHtcbiAgQGFwcGx5IG5hdl9fYWN0aXZlIGxpbmtzX19hY3RpdmU7XG4gIGEge1xuICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xuICB9XG59XG4iLCIubWFpbiB7XG4gICZfX2NvbnRhaW5lciB7XG4gICAgbWF4LXdpZHRoOiAxMTY2cHg7XG4gICAgbWFyZ2luOiBhdXRvO1xuICB9XG4gIC5sZWZ0X19jb250YWluZXIge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChcbiAgICAgIDE2MGRlZyxcbiAgICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSxcbiAgICAgIHRyYW5zcGFyZW50XG4gICAgKTtcblxuICAgIGEge1xuICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci1iLTIgYm9yZGVyLXR1cnF1b2lzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLnJpZ2h0IHtcbiAgICB3aWR0aDogOTMlO1xuICAgIGJveC1zaGFkb3c6IDBweCAyMHB4IDQwcHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuXG4gICAgJl9fY29udGFpbmVyIHtcbiAgICAgIGgyIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDYwcHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fY29udGVudCB7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgIGJveC1zaGFkb3c6IDBweCAwcHggMjVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgICAgQGFwcGx5IGZsZXggaXRlbXMtY2VudGVyIHJvdW5kZWQtbGcgYmctd2hpdGUgcHktNiBweC01O1xuXG4gICAgICAucmlnaHRfX2ljb24ge1xuICAgICAgICBAYXBwbHkgdGV4dC1sYWdvb24tNTA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IC04cHg7XG4gICAgICB9XG4gICAgICAucmlnaHRfX2Fycm93IHtcbiAgICAgICAgQGFwcGx5IHRleHQtd2hpdGU7XG4gICAgICB9XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItdHVycXVvaXNlIGJnLXR1cnF1b2lzZSBiZy1vcGFjaXR5LTEwO1xuICAgICAgICBib3gtc2hhZG93OiAwcHggMHB4IDI1cHggMHB4IHRyYW5zcGFyZW50O1xuXG4gICAgICAgIC5yaWdodF9faWNvbiB7XG4gICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIEBhcHBseSBmaWxsLWxhZ29vbi01MCB0ZXh0LXdoaXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAucmlnaHRfX2Fycm93IHtcbiAgICAgICAgICBAYXBwbHkgZmlsbC13aGl0ZSB0ZXh0LXR1cnF1b2lzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMzY2cHgpIHtcbiAgICAuam9pbi1ub3cge1xuICAgICAgQGFwcGx5IHB4LTIwO1xuXG4gICAgICAucmlnaHRfX2NvbnRlbnQge1xuICAgICAgICB3aWR0aDogNDIzcHg7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xuICBpbnB1dCB7XG4gICAgcGFkZGluZy1sZWZ0OiA2MHB4O1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLmxlZnQge1xuICAgIGhlaWdodDogNjQ5cHg7XG5cbiAgICAmX19jb250YWluZXIge1xuICAgICAgd2lkdGg6IDM4NnB4O1xuICAgIH1cbiAgfVxuICAucmlnaHQge1xuICAgIGhlaWdodDogNjQ5cHg7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5yaWdodCB7XG4gICAgbWFyZ2luLXRvcDogLTI2NXB4O1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0MjBweCkge1xuICAucmlnaHRfX2ljb24ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgLmRldGFpbHMge1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgd2lkdGg6IDhweDtcbiAgaGVpZ2h0OiA4cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgQGFwcGx5IHJvdW5kZWQtbGcgYmctbi0yMCBob3ZlcjpiZy1uLTMwO1xufVxubWFpbiB7XG4gIGRpc3BsYXk6IGdyaWQ7IC8vIExpbmUgMVxuICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gMWZyIGF1dG87IC8vIExpbmUgMlxuICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gNDY1cHgpOyAvLyBMaW5lIDNcbn1cbi5hY3Rpdml0aWVzX19zaWRlYmFyIHtcbiAgZmxleC1zaHJpbms6IDA7XG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3MDBweCkge1xuICAgIHdpZHRoOiAyMjBweCAhaW1wb3J0YW50O1xuICB9XG59XG5ib2R5LmRpc2FibGUtc2Nyb2xsIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgaGVpZ2h0OiAxMHB4O1xufVxuLy8gYm9keSB7XG4vLyAgIHBhZGRpbmctdG9wOiA2MHB4O1xuLy8gfVxuXG4vLyBib2R5Lm5vLW5hdiB7XG4vLyAgIHBhZGRpbmctdG9wOiAwcHggIWltcG9ydGFudDtcbi8vIH1cbmh0bWwge1xuICBzY3JvbGwtcGFkZGluZy10b3A6IDIwcHg7IC8qIGhlaWdodCBvZiBzdGlja3kgaGVhZGVyICovXG59XG4iLCIuZm9vdGVyX19jb250YWluZXIge1xuICBtYXgtd2lkdGg6IDExNjZweDtcbiAgbWFyZ2luOiBhdXRvO1xuXG4gIC5mb290ZXJfX2xpbmtzIHtcbiAgICBhIHtcbiAgICAgIEBhcHBseSBib3JkZXItYi0yIGJvcmRlci10cmFuc3BhcmVudCB0ZXh0LW4tMjA7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBAYXBwbHkgYm9yZGVyLWItMiBib3JkZXItdHVycXVvaXNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLmVsbGlwc2lzIHtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIC13ZWJraXQtbGluZS1jbGFtcDogMztcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbn1cbi5lbGxpcHNpc19fdGl0bGUge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICBAYXBwbHkgcmVsYXRpdmU7XG59XG5cbi5lbGxpcHNpc19fdGl0bGUtLWhvdmVyIHtcbiAgQGFwcGx5IGludmlzaWJsZSBhYnNvbHV0ZSAgIGxlZnQtMCB0b3AtZnVsbCB6LTIwIG1heC13LW1kIHNwYWNlLXktMS41IHJvdW5kZWQgYmctZWdnc2hlbGwgcC00IHRleHQtbGVmdCB0ZXh0LXhzIGZvbnQtbm9ybWFsIHRleHQtbi00MCBvcGFjaXR5LTAgZHVyYXRpb24tMjAwO1xuICBib3gtc2hhZG93OiAwcHggNHB4IDQwcHggcmdiKDAgMCAwIC8gMTAlKTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQ7XG4gIG1heC1oZWlnaHQ6IDEyMHB4O1xuICBvdmVyZmxvdzogYXV0bztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5lbGxpcHNpczpob3Zlcixcbi5lbGxpcHNpc19fdGl0bGU6aG92ZXIsXG4uYnJlYWRjcnVtYl9fdGl0bGU6aG92ZXIge1xuICAuZWxsaXBzaXNfX3RpdGxlLS1ob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDVweCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5AbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gIHRyIHtcbiAgICAuZWxsaXBzaXNfX3RpdGxlLS1ob3ZlciB7XG4gICAgICBAYXBwbHkgaW52aXNpYmxlIGFic29sdXRlIGxlZnQtMS8yICAtdG9wLTIgei0yMCBtYXgtdy1tZCBzcGFjZS15LTEuNSByb3VuZGVkIGJnLWVnZ3NoZWxsIHAtNCB0ZXh0LWxlZnQgdGV4dC14cyBmb250LW5vcm1hbCB0ZXh0LW4tNDAgb3BhY2l0eS0wICBkdXJhdGlvbi0yMDAgbGc6bGVmdC0wIGxnOnRvcC1mdWxsO1xuICAgICAgYm94LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYigwIDAgMCAvIDEwJSk7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dDtcbiAgICAgIG1heC1oZWlnaHQ6IDEyMHB4O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIH1cblxuICAgIC5lbGxpcHNpczpob3ZlcixcbiAgICAuZWxsaXBzaXNfX3RpdGxlOmhvdmVyIHtcbiAgICAgIC5lbGxpcHNpc19fdGl0bGUtLWhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDVweCk7XG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4uYnJlYWRjcnVtYl9fdGl0bGUge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAxO1xuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICBAYXBwbHkgcmVsYXRpdmU7XG59XG5cbi8vIGFjdGl2aXR5IGRldGFpbFxuLmFjdGl2aXRpZXNfX2NvbnRlbnQtLWVsZW1lbnQge1xuICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICBtYXgtd2lkdGg6IGNhbGMoMTAwdncgLSAzMHB4KTtcbiAgfVxuICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAuYWRkX2luZGljYXRvciB7XG4gICAgICBtYXgtd2lkdGg6IDQwMHB4O1xuICAgIH1cbiAgfVxufVxuXG4uYWN0aXZpdGllc19fY29udGVudC0tZWxlbWVudCBkaXYge1xuICAuZWRpdC1idXR0b24sXG4gIC5kZWxldGUtYnV0dG9uIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlO1xuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgIC8vIG91dGxpbmU6IDFweCBzb2xpZCByZWQgIWltcG9ydGFudDtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5cbiAgLmVkaXQtYnV0dG9uIHtcbiAgICBvcmRlcjogMjtcbiAgfVxuXG4gIC5kZWxldGUtYnV0dG9uIHtcbiAgICBvcmRlcjogMTtcbiAgfVxuXG4gICY6aG92ZXIgLmVkaXQtYnV0dG9uLFxuICAmOmhvdmVyIC5kZWxldGUtYnV0dG9uIHtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAuZWxlbWVudHMtc3ZnIHtcbiAgICBAYXBwbHkgbXItMS41IHRleHQteGwgdGV4dC1ibHVlY29yYWw7XG4gIH1cbn1cbi5kZXNjcmlwdGlvbiB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDUwMHB4O1xufVxuXG4uZWxlbWVudHMtZGV0YWlsIHtcbiAgQGFwcGx5IGZsZXggZmxleC1jb2wgdGV4dC14cyB0ZXh0LW4tNTA7XG5cbiAgLy8gdGFibGUge1xuICAvLyAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcblxuICAvLyB9XG5cbiAgJiAqIHtcbiAgICBAYXBwbHkgbGVhZGluZy01O1xuICB9XG5cbiAgdGQ6bnRoLWNoaWxkKDEpIHtcbiAgICBAYXBwbHkgdGV4dC1uLTQwO1xuICAgIHdpZHRoOiAxMDBweDtcbiAgfVxuICAmLndpZGVyOm5vdCguc21hbGwpIHtcbiAgICB0ZDpudGgtY2hpbGQoMSkge1xuICAgICAgQGFwcGx5IHRleHQtbi00MDtcbiAgICAgIHdpZHRoOiAxOTBweDtcbiAgICB9XG4gIH1cblxuICB0ZDpudGgtY2hpbGQoMikge1xuICAgIEBhcHBseSBmbGV4IGZsZXgtY29sIHBsLTIgdGV4dC14cyB0ZXh0LW4tNTA7XG4gIH1cbiAgLm11bHRpbGluZSB7XG4gICAgQGFwcGx5IGl0ZW1zLXN0YXJ0O1xuICB9XG5cbiAgdGQge1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIH1cblxuICB0YWJsZSA+IHRib2R5ID4gdHI6bm90KDpsYXN0LWNoaWxkKSA+IHRkIHtcbiAgICBAYXBwbHkgcGItMztcbiAgfVxufVxuLnZhbHVlIHtcbiAgQGFwcGx5IGZsZXggc3BhY2UteC0xIHRleHQtbi01MDtcbn1cbi5jYXRlZ29yeSB7XG4gIEBhcHBseSBtYi0yIHRleHQtc20gZm9udC1ib2xkIHRleHQtbi01MDtcbn1cbi5sYW5ndWFnZSB7XG4gIEBhcHBseSB3LVszMDBweF0gdGV4dC14cyBpdGFsaWMgdGV4dC1uLTMwICBzbTp3LWF1dG87XG59XG4uZGVzY3JpcHRpb24tY29udGVudCB7XG4gIEBhcHBseSB3LVszMDBweF0gc206dy1hdXRvO1xufVxuLnRpdGxlLWJvcmRlcjo6YWZ0ZXIge1xuICB3aWR0aDogOTUwcHg7XG4gIGNvbnRlbnQ6ICcnO1xuICBAYXBwbHkgYWJzb2x1dGUgdG9wLTIgbGVmdC00IGgtcHggYmctbi0zMDtcbn1cbi5lbGVtZW50cy10aXRsZTo6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgQGFwcGx5IGgtcHggZ3JvdyBiZy1uLTMwO1xufVxuLnRvcCB7XG4gIG1hcmdpbi10b3A6IDFweDtcbn1cblxuLm1vZGFsIHtcbiAgcDpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICBtYXJnaW4tYm90dG9tOiAyNHB4O1xuICB9XG59XG5cbi5mcmVlemUge1xuICBjb2xvcjogI2E2YjViYSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6ICNhNmI1YmEgIWltcG9ydGFudDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDtcblxuICAuYWRkX21vcmU6OmFmdGVyIHtcbiAgICBib3JkZXItY29sb3I6ICNhNmI1YmE7XG4gIH1cbiAgLmFkZF9tb3JlOjpiZWZvcmUge1xuICAgIGJvcmRlci1jb2xvcjogI2E2YjViYTtcbiAgfVxuXG4gIGJ1dHRvbiA+IGkge1xuICAgIGJhY2tncm91bmQ6IHVybCgnLi4vLi4vaW1hZ2VzL2FkZC1tb3JlLWdyZXkuc3ZnJykgbm8tcmVwZWF0IGNlbnRlciAhaW1wb3J0YW50O1xuICB9XG5cbiAgLmhlbHAgc3ZnIHBhdGgge1xuICAgIGNvbG9yOiAjYTZiNWJhICFpbXBvcnRhbnQ7XG4gICAgZmlsbDogY3VycmVudENvbG9yO1xuICAgIHN0cm9rZTogY3VycmVudENvbG9yO1xuICB9XG59XG4uZnJlZXplICosXG4qOjpwbGFjZWhvbGRlcixcbi5mcmVlemUgc3ZnIHtcbiAgY29sb3I6ICNhNmI1YmEgIWltcG9ydGFudDtcbiAgYm9yZGVyLWNvbG9yOiAjYTZiNWJhICFpbXBvcnRhbnQ7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5mcmVlemUgKyAuYWRkX3RvX3BhcmVudCB7XG4gIGNvbG9yOiAjYTZiNWJhICFpbXBvcnRhbnQ7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7XG5cbiAgaSB7XG4gICAgYmFja2dyb3VuZDogdXJsKCcuLi8uLi9pbWFnZXMvYWRkLW1vcmUtZ3JleS5zdmcnKSBuby1yZXBlYXQgY2VudGVyO1xuICB9XG59XG5cbi5mcmVlemUgKyAuYWRkX3RvX3BhcmVudDo6YmVmb3JlIHtcbiAgYm9yZGVyLWNvbG9yOiAjYTZiNWJhICFpbXBvcnRhbnQ7XG59XG5cbi5mcmVlemUgKyAuYWRkX3RvX3BhcmVudDo6YWZ0ZXIge1xuICBib3JkZXItY29sb3I6ICNhNmI1YmEgIWltcG9ydGFudDtcbn1cbiIsIi5zZWN0aW9uLXdyYXBwZXIge1xuICBAYXBwbHkgbXgtMyBiZy1wYXBlciBzbTpteC0xMDtcblxuICAuc2V0dGluZyB7XG4gICAgbWF4LXdpZHRoOiAxMDAwcHg7XG4gICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gODBweCk7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIHBhZGRpbmc6IDE2cHggMHB4IDI0cHg7XG5cbiAgICAmX19jb250YWluZXIge1xuICAgICAgQGFwcGx5IHJlbGF0aXZlIHJvdW5kZWQtbGcgYmctd2hpdGUgcC03IG1kOnB5LTE0IG1kOnB4LTIwO1xuICAgICAgbWF4LWhlaWdodDogNjV2aDtcblxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDQwcHgpIHtcbiAgICAgICAgQGFwcGx5IHB4LTM7XG4gICAgICB9XG5cbiAgICAgIC52dWVfX3NlbGVjdCB7XG4gICAgICAgIG1hcmdpbjogOHB4IDBweDtcbiAgICAgIH1cbiAgICAgIC5yZWdpc3RyeV9faW5mbyB7XG4gICAgICAgIEBhcHBseSBteS00IGZsZXgganVzdGlmeS1iZXR3ZWVuIGJvcmRlci1iIGJvcmRlci1iLW4tMjA7XG4gICAgICB9XG4gICAgICBwIHtcbiAgICAgICAgQGFwcGx5IHRleHQteHMgbGVhZGluZy01IHRleHQtbi00MDtcbiAgICAgIH1cbiAgICAgIC50ZXh0IHtcbiAgICAgICAgQGFwcGx5IG1iLTggdGV4dC1zbTtcbiAgICAgIH1cbiAgICAgIGxhYmVsIHtcbiAgICAgICAgQGFwcGx5IHRleHQteHMgdGV4dC1uLTUwO1xuICAgICAgfVxuICAgIH1cbiAgICAucmVnaXN0ZXIge1xuICAgICAgQGFwcGx5IHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1uLTMwIHAtNCBzbTpwLTY7XG5cbiAgICAgICZfX2NvbnRhaW5lciB7XG4gICAgICAgIEBhcHBseSBncmlkIGdhcC0zIHNtOmdhcC02IGxnOmdyaWQtY29scy0yO1xuXG4gICAgICAgIC50YWdfX2NvcnJlY3Qge1xuICAgICAgICAgIEBhcHBseSBhYnNvbHV0ZSByaWdodC0yIHRvcC0xMCBmbGV4IGgtNSBjdXJzb3ItcG9pbnRlciBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZCBiZy1zcHJpbmctNDAgdGV4dC1jZW50ZXIgdGV4dC14cyB0ZXh0LXdoaXRlO1xuICAgICAgICAgIHdpZHRoOiA1MHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnRhZ19faW5jb3JyZWN0IHtcbiAgICAgICAgICBAYXBwbHkgYWJzb2x1dGUgcmlnaHQtMiB0b3AtMTAgZmxleCBoLTUgY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQgYmctc2FsbW9uLTUwIHRleHQtY2VudGVyIHRleHQteHMgdGV4dC13aGl0ZTtcbiAgICAgICAgICB3aWR0aDogNjFweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLnZlcmlmeS1idG4ge1xuICAgICAgICB3aWR0aDogMTIwcHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDE0cHg7XG4gICAgICAgIEBhcHBseSBmbGV4IGgtMTAganVzdGlmeS1jZW50ZXI7XG4gICAgICB9XG4gICAgfVxuICAgIC5yZWdpc3Rlcl9faW5wdXQge1xuICAgICAgQGFwcGx5IG10LTIgdy1mdWxsIGJvcmRlciBib3JkZXItbi0zMCBvdXRsaW5lLW5vbmUgZHVyYXRpb24tMzAwO1xuICAgICAgcGFkZGluZzogMTNweCAxNnB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0NDBweCkge1xuICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXNtIHRleHQtbi00MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgICB9XG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItbi01MCBiZy1uLTEwO1xuICAgICAgfVxuICAgICAgJjpmb2N1czo6cGxhY2Vob2xkZXIge1xuICAgICAgICBAYXBwbHkgdGV4dC1uLTUwO1xuICAgICAgfVxuICAgIH1cbiAgICAuZXJyb3JfX2lucHV0IHtcbiAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLWNyaW1zb24tNTA7XG4gICAgfVxuICB9XG59XG4uc2F2ZS1idG4ge1xuICBAYXBwbHkgcHgtNDtcbn1cbi5idG5fX2FjdGl2ZSB7XG4gIEBhcHBseSBmb250LWJvbGQgdGV4dC13aGl0ZTtcbn1cbiIsIi5zbW9vdGgge1xuICBhbmltYXRpb246IGZhZGVJbkFuaW1hdGlvbiBlYXNlIDAuM3M7XG4gIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDE7XG59XG5cbkBrZXlmcmFtZXMgZmFkZUluQW5pbWF0aW9uIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuIiwiYm9keSB7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgQGFwcGx5IG1pbi1oLXNjcmVlbiBiZy1wYXBlcjtcbn1cblxuYSB7XG4gIGNvbG9yOiByZ2IodmFyKC0tYmx1ZWNvcmFsKSk7XG4gIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7XG5cbiAgJjpob3ZlciB7XG4gICAgY29sb3I6IHJnYih2YXIoLS1zcHJpbmctNTApKTtcbiAgfVxufVxuXG4ubGVmdCB7XG4gICZfX3RpdGxlIHtcbiAgICBmb250LXNpemU6IDI3cHg7XG4gICAgdGV4dC1zaGFkb3c6IDRweCA0cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wMSk7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgICAgIGZvbnQtc2l6ZTogMzJweDtcbiAgICB9XG4gIH1cbn1cblxuaDIge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0NDBweCkge1xuICAgIEBhcHBseSB0ZXh0LWhlYWRpbmctNDtcbiAgfVxuICBAYXBwbHkgdGV4dC1oZWFkaW5nLTUgZm9udC1ib2xkIHRleHQtbi01MCBtZDp0ZXh0LWhlYWRpbmctMztcbn1cblxuaDQge1xuICBAYXBwbHkgdGV4dC1oZWFkaW5nLTQgbGVhZGluZy1ub3JtYWw7XG59XG4iLCIvLyBUdXJxdW9pc2UgYnV0dG9uXG4uYnRuIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgb3V0bGluZTogbm9uZTtcbiAgQGFwcGx5IGJnLXR1cnF1b2lzZSB0ZXh0LW4tNTA7XG5cbiAgJjpob3ZlciB7XG4gICAgQGFwcGx5IGJnLWJsdWVjb3JhbDtcbiAgICBAYXBwbHkgdGV4dC13aGl0ZTtcblxuICAgIHN2ZyB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNHB4KTtcbiAgICAgIHRyYW5zaXRpb246IDAuM3M7XG4gICAgfVxuICB9XG59XG5cbi5idG4tYmFjayB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmb250LXNpemU6IDE0cHg7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogMC4zcztcbiAgQGFwcGx5IHctMjQgdGV4dC1ibHVlY29yYWw7XG5cbiAgc3ZnIHtcbiAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgc3ZnIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNHB4KTtcbiAgICB9XG4gIH1cbn1cblxuLmJ0bi1uZXh0IHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgcGFkZGluZzogMTNweCAyNHB4O1xuICB9XG4gIEBhcHBseSB3LTM2IHB5LTIuNSB0ZXh0LW4tNTAgc206dy00MDtcblxuICBzdmcge1xuICAgIG1hcmdpbi1sZWZ0OiAxM3B4O1xuICAgIHRyYW5zaXRpb246IDAuMnM7XG4gIH1cbn1cblxuLmdldC1zdGFydGVkLWJ0biB7XG4gIHdpZHRoOiAxODVweDtcbn1cblxuLnJlc2V0LWJ0biB7XG4gIEBhcHBseSBtdC02IGZsZXgganVzdGlmeS1jZW50ZXIgcm91bmRlZC1sZyBib3JkZXItbm9uZSBiZy10dXJxdW9pc2UgdGV4dC1zbSBmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtbi01MCBvdXRsaW5lLW5vbmUgZHVyYXRpb24tMjAwIGhvdmVyOmJnLWJsdWVjb3JhbCBob3Zlcjp0ZXh0LXdoaXRlO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMTZweCA5NHB4O1xufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xuICAucmVzZXQtYnRuIHtcbiAgICBwYWRkaW5nOiAxOHB4IDk0cHg7XG4gIH1cbn1cblxuc3ZnIHtcbiAgaGVpZ2h0OiAxZW07XG59XG4uY2hhcnQtd3JhcHBlciB7XG4gIHN2ZyB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbi52cnBfX3dyYXBwZXIge1xuICBwIHtcbiAgICBAYXBwbHkgdGV4dC1zbSBsZWFkaW5nLW5vcm1hbDtcbiAgfVxuICBzdmcge1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxufVxuXG4uYnV0dG9uLFxuYnV0dG9uIHtcbiAgQGFwcGx5IGZsZXggY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIHRleHQteHMgbGVhZGluZy1ub3JtYWwgdHJhY2tpbmctdGlnaHQ7XG4gIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7XG59XG5cbi8vIHRvb2x0aXAgYnV0dG9uXG4udG9vbHRpcC1idG4ge1xuICBAYXBwbHkgcmVsYXRpdmUgdGV4dC1uLTMwO1xuXG4gIGJ1dHRvbiB7XG4gICAgQGFwcGx5IHJvdW5kZWQtM3hsIGJvcmRlciBib3JkZXItc29saWQgYm9yZGVyLW4tMzAgcHktMS41IHB4LTIuNTtcbiAgfVxuXG4gIHN2ZyB7XG4gICAgQGFwcGx5IG1yLTEgdGV4dC14cztcbiAgfVxuXG4gICZfX2NvbnRlbnQge1xuICAgIEBhcHBseSBhYnNvbHV0ZSB0b3AtZnVsbCBsZWZ0LTAgaGlkZGVuIHctWzM1MnB4XTtcblxuICAgIC5jb250ZW50IHtcbiAgICAgIEBhcHBseSBtdC02IHJvdW5kZWQgYmctZWdnc2hlbGwgdGV4dC1uLTUwO1xuICAgICAgcGFkZGluZzogMTZweCAzM3B4IDE2cHggMTZweDtcbiAgICAgIGJveC1zaGFkb3c6IDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgfVxuXG4gICAgcCB7XG4gICAgICBAYXBwbHkgbWItMS41IHRleHQteHMgbGVhZGluZy1ub3JtYWw7XG4gICAgfVxuICB9XG5cbiAgJjpob3ZlciAudG9vbHRpcC1idG5fX2NvbnRlbnQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgJjpob3ZlciBidXR0b24ge1xuICAgIEBhcHBseSBib3JkZXItc3ByaW5nLTUwIHRleHQtc3ByaW5nLTUwO1xuICB9XG59XG5cbi8vIHByaW1hcnkgYnV0dG9uXG4ucHJpbWFyeS1idG4ge1xuICBAYXBwbHkgZ2FwLTEgcm91bmRlZCBiZy1ibHVlY29yYWwgcC0zIGZvbnQtYm9sZCB1cHBlcmNhc2UgdGV4dC13aGl0ZTtcbiAgYm94LXNoYWRvdzogMHB4IDJweCAxMHB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcblxuICAmLnNwYWNlIHtcbiAgICBAYXBwbHkgcHgtNjtcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIEBhcHBseSBiZy1uLTUwIHRleHQtd2hpdGU7XG4gIH1cblxuICBzdmcge1xuICAgIEBhcHBseSB0ZXh0LWJhc2U7XG4gIH1cbn1cblxuLy8gc2Vjb25kYXJ5IGJ1dHRvblxuLnNlY29uZGFyeS1idG4ge1xuICBAYXBwbHkgZ2FwLTEgZ2FwLXgtMSByb3VuZGVkIGJnLXdoaXRlIHAtMyB1cHBlcmNhc2UgdGV4dC1ibHVlY29yYWw7XG5cbiAgJi0tdG91Y2gge1xuICAgIEBhcHBseSBnYXAtMSBnYXAteC0xIHJvdW5kZWQgYmctd2hpdGUgcC0zIHVwcGVyY2FzZSB0ZXh0LWJsdWVjb3JhbDtcbiAgICBib3gtc2hhZG93OiAwcHggMnB4IDEwcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuICAgIC5kcm9wZG93bl9fYXJyb3cge1xuICAgICAgZm9udC1zaXplOiA2cHg7XG4gICAgICB0cmFuc2l0aW9uOiAwLjJzO1xuICAgIH1cbiAgICBzdmcge1xuICAgICAgQGFwcGx5IHRleHQtYmFzZTtcbiAgICB9XG4gIH1cbiAgJjpob3ZlciB7XG4gICAgQGFwcGx5IGJnLWJsdWVjb3JhbCB0ZXh0LXdoaXRlO1xuICB9XG5cbiAgc3ZnIHtcbiAgICBAYXBwbHkgdGV4dC1iYXNlO1xuICB9XG5cbiAgLmRyb3Bkb3duX19hcnJvdyB7XG4gICAgZm9udC1zaXplOiA2cHg7XG4gICAgdHJhbnNpdGlvbjogMC4ycztcbiAgfVxufVxuXG4vLyBwcmltYXJ5IG91dGxpbmUgYnV0dG9uXG4ucHJpbWFyeS1vdXRsaW5lLWJ0biB7XG4gIEBhcHBseSBqdXN0aWZ5LWNlbnRlciBnYXAtMSByb3VuZGVkLTN4bCBib3JkZXIgYm9yZGVyLXNwcmluZy01MCBweC0zLjUgdGV4dC1zbSBsZWFkaW5nLXJlbGF4ZWQgdGV4dC1zcHJpbmctNTA7XG4gIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKSk7XG5cbiAgJjpob3ZlciB7XG4gICAgQGFwcGx5IGJnLXNwcmluZy01MCB0ZXh0LXdoaXRlO1xuICB9XG5cbiAgc3ZnIHtcbiAgICBAYXBwbHkgdGV4dC1iYXNlO1xuICB9XG59XG5cbi5naG9zdC1idG4ge1xuICBAYXBwbHkgdGV4dC14cyBmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtbi00MDtcbiAgdHJhbnNpdGlvbjogMC40cztcblxuICAmOmhvdmVyIHtcbiAgICBAYXBwbHkgdGV4dC1ibHVlY29yYWw7XG4gIH1cbn1cblxuLnRhYi1idG4tYW5jaG9yIHtcbiAgQGFwcGx5IGN1cnNvci1kZWZhdWx0O1xufVxuXG4udGFiLWJ0biB7XG4gIEBhcHBseSBoLTkgcm91bmRlZCBib3JkZXIgYm9yZGVyLW4tMjAgYmctd2hpdGUgcC0yIHRleHQteHMgdGV4dC1uLTQwO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG5cbiAgJjpob3ZlciB7XG4gICAgQGFwcGx5IGJvcmRlci10dXJxdW9pc2UgYmctbi0xMCB0ZXh0LWJsdWVjb3JhbDtcbiAgfVxufVxuXG4uYWN0aXZlX190YWIge1xuICBAYXBwbHkgYm9yZGVyLXR1cnF1b2lzZSBiZy1uLTEwIHRleHQtYmx1ZWNvcmFsO1xufVxuXG4ucGFuZWwtYnRuIHtcbiAgQGFwcGx5IGgtMTAgc3BhY2UteC0xIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTMwIGJnLWVnZ3NoZWxsIHB5LTMgcHgtMjtcbiAgd2lkdGg6IDQzcHg7XG5cbiAgJjpob3ZlciB7XG4gICAgQGFwcGx5IGJnLWJsdWVjb3JhbCB0ZXh0LXdoaXRlO1xuICB9XG5cbiAgLmRyb3Bkb3duX19hcnJvdyB7XG4gICAgZm9udC1zaXplOiA2cHg7XG4gICAgdHJhbnNpdGlvbjogMC4ycztcbiAgfVxufVxuIiwiLmhhbWJ1cmdlciB7XG4gIEBhcHBseSByZWxhdGl2ZSB6LWF1dG8gZmxleCBoLTExIHctMTEgY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkIGR1cmF0aW9uLTMwMDtcbiAgei1pbmRleDogMTIwO1xuXG4gICYuYWN0aXZlIHtcbiAgICBzcGFuIHtcbiAgICAgIEBhcHBseSBiZy1uLTEwO1xuICAgIH1cbiAgfVxuXG4gIHNwYW4ge1xuICAgIEBhcHBseSBwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIGgtMSB3LTEwIHJvdW5kZWQtbGcgZHVyYXRpb24tMzAwO1xuICB9XG4gIHNwYW46bnRoLWNoaWxkKDEpIHtcbiAgICBib3R0b206IDE4cHg7XG4gICAgbGVmdDogMnB4O1xuICAgIHdpZHRoOiAzMHB4O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTVweCk7XG4gIH1cbiAgJi5hY3RpdmUge1xuICAgIHNwYW46bnRoLWNoaWxkKDEpIHtcbiAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpIHRyYW5zbGF0ZVooMCk7XG4gICAgfVxuICAgIHNwYW46bnRoLWNoaWxkKDIpIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg2MHB4KTtcbiAgICB9XG4gICAgc3BhbjpudGgtY2hpbGQoMykge1xuICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNHB4KSByb3RhdGUoMzE1ZGVnKTtcbiAgICB9XG4gIH1cbiAgc3BhbjpudGgtY2hpbGQoMykge1xuICAgIHRvcDogMThweDtcbiAgICBsZWZ0OiAycHg7XG4gICAgd2lkdGg6IDIwcHg7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDE1cHgpO1xuICB9XG59XG4uaGFtYnVyZ2VyLW1lbnUge1xuICBkaXNwbGF5OiBub25lO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0MjBweCkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG5cbi5ob21lLWJ1cmdlci1tZW51LmFjdGl2ZSB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gICAgdHJhbnNsYXRlOiAtMzUwJSAtMTQwJTtcbiAgfVxuICB0cmFuc2xhdGU6IC00OTAlIC05MCU7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDQwcHgpIHtcbiAgICB0cmFuc2xhdGU6IC0zODAlIC05MCU7XG4gIH1cbn1cbiIsIi5pbnB1dCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDE0cHggMHB4IDE0cHggNTVweDtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBsaW5lLWhlaWdodDogMjRweDtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBvdXRsaW5lOiBub25lO1xuICB0cmFuc2l0aW9uOiAwLjNzO1xuICBAYXBwbHkgaC0xNCBib3JkZXIgYm9yZGVyLW4tMzAgc206aC0xNjtcblxuICAmOmZvY3VzIHtcbiAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1uLTUwIGJnLW4tMTA7XG4gIH1cblxuICAmOjpwbGFjZWhvbGRlciB7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgQGFwcGx5IGZvbnQtbm9ybWFsIHRleHQtbi00MDtcbiAgfVxuXG4gICY6Zm9jdXM6OnBsYWNlaG9sZGVyIHtcbiAgICBAYXBwbHkgdGV4dC1uLTUwO1xuICB9XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgICBwYWRkaW5nOiAyMHB4IDBweCAyMHB4IDU1cHg7XG4gIH1cbn1cbi5lcnJvciB7XG4gIEBhcHBseSB0ZXh0LXNtIHRleHQtY3JpbXNvbi01MCBzbTp0ZXh0LWJhc2U7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgbGluZS1oZWlnaHQ6IDE4cHg7XG59XG5cbi5oYXNfZXJyb3Ige1xuICAuZm9ybV9faW5wdXQge1xuICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLWNyaW1zb24tNTA7XG4gIH1cbn1cbnRleHRhcmVhLmZvcm1fX2lucHV0IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4udGV4dC1hcmVhIHtcbiAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICBoZWlnaHQ6IDYwcHg7XG4gIHJlc2l6ZTogbm9uZTtcbn1cbi5mb3JtX19pbnB1dCB7XG4gIEBhcHBseSBtYi0yIGJveC1ib3JkZXIgdy1mdWxsIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTMwIHRleHQtYmx1ZWNvcmFsIG91dGxpbmUtbm9uZSBkdXJhdGlvbi0zMDA7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgICBwYWRkaW5nOiAxM3B4IDAgMTNweCAxNnB4O1xuICB9XG4gIHBhZGRpbmc6IDEwcHggMCAxMHB4IDE2cHg7XG5cbiAgJjo6cGxhY2Vob2xkZXIge1xuICAgIEBhcHBseSB0ZXh0LXNtIGZvbnQtbm9ybWFsIHRleHQtbi00MDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbiAgfVxuXG4gICY6Zm9jdXMge1xuICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLW4tNTAgYmctbi0xMDtcbiAgfVxuXG4gICY6Zm9jdXM6OnBsYWNlaG9sZGVyIHtcbiAgICBAYXBwbHkgdGV4dC1uLTUwO1xuICB9XG59XG4uaW5wdXRfX2ZpZWxkIHtcbiAgLm11bHRpc2VsZWN0LW9wdGlvbi5pcy1zZWxlY3RlZCB7XG4gICAgQGFwcGx5IGJnLW4tMjAgdGV4dC1uLTUwO1xuICB9XG5cbiAgLm11bHRpc2VsZWN0LW9wdGlvbi5pcy1zZWxlY3RlZC5pcy1wb2ludGVkIHtcbiAgICBAYXBwbHkgYmctbi0yMCB0ZXh0LW4tNTA7XG4gIH1cblxuICAubXVsdGlzZWxlY3QuaXMtYWN0aXZlIHtcbiAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1uLTUwIGJnLW4tMTA7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMDtcbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlciB7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgQGFwcGx5IHctWzMxMHB4XSBvdmVyZmxvdy1oaWRkZW4gd2hpdGVzcGFjZS1ub3dyYXAgcHItMyB0ZXh0LXNtIHRleHQtbi00MCBkdXJhdGlvbi0zMDA7XG4gIH1cblxuICAubXVsdGlzZWxlY3QtcGxhY2Vob2xkZXI6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBAYXBwbHkgYWJzb2x1dGUgcmlnaHQtMCB0b3AtMyBoLTYgdy03IGJnLXdoaXRlO1xuICB9XG5cbiAgLm11bHRpc2VsZWN0LmlzLW9wZW4ge1xuICAgIC5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlciB7XG4gICAgICBAYXBwbHkgdGV4dC1uLTUwO1xuICAgIH1cbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC1kcm9wZG93biB7XG4gICAgQGFwcGx5IGJvcmRlciBib3JkZXItbi01MDtcbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC1jYXJldCB7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoJy9pbWFnZXMvZHJvcGRvd24tYXJyb3cuc3ZnJyk7XG4gICAgbWFzay1pbWFnZTogdXJsKCcvaW1hZ2VzL2Ryb3Bkb3duLWFycm93LnN2ZycpO1xuICB9XG5cbiAgLm11bHRpc2VsZWN0LXNlYXJjaCB7XG4gICAgQGFwcGx5IGN1cnNvci1wb2ludGVyIGJvcmRlciBib3JkZXItbi0zMCBweS0yLjU7XG4gIH1cblxuICAubXVsdGlzZWxlY3Qtc2VhcmNoOmZvY3VzIHtcbiAgICBAYXBwbHkgYmctbi0xMDtcbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC1zZWFyY2g6Zm9jdXMgKyAubXVsdGlzZWxlY3QtcGxhY2Vob2xkZXI6OmFmdGVyIHtcbiAgICBAYXBwbHkgYmctbi0xMDtcbiAgfVxuXG4gIC52dWVfX3NlbGVjdCB7XG4gICAgQGFwcGx5IG1iLTIgYm9yZGVyIGJvcmRlci1uLTMwIHRleHQtc20gbGVhZGluZy02IG91dGxpbmUtbm9uZSBkdXJhdGlvbi0zMDA7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xuICAgICAgcGFkZGluZzogMTZweCAwcHggMTZweCA1NXB4O1xuICAgIH1cbiAgICBwYWRkaW5nOiAxM3B4IDBweCAxM3B4IDU1cHg7XG4gIH1cbn1cbi5lcnJvcl9pbnB1dCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkMTAwMWU7XG59XG4uZXJyb3JfX211bHRpc2VsZWN0IHtcbiAgaW5wdXQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkMTAwMWU7XG4gIH1cbn1cbi5wYW5lbF9faW5wdXQge1xuICBAYXBwbHkgYm94LWJvcmRlciBoLTEwIHctZnVsbCByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCBiZy1wYXBlciBweS0yLjUgcGwtNyBwci0zIG91dGxpbmUtbm9uZSBkdXJhdGlvbi0zMDA7XG5cbiAgJjo6cGxhY2Vob2xkZXIge1xuICAgIEBhcHBseSB0ZXh0LXhzIGZvbnQtbm9ybWFsIHRleHQtbi0zMCBkdXJhdGlvbi0zMDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gIH1cblxuICAmOmZvY3VzOjpwbGFjZWhvbGRlciB7XG4gICAgQGFwcGx5IHRleHQtbi00MDtcbiAgfVxufVxuLnNlYXJjaCB7XG4gIEBhcHBseSByZWxhdGl2ZTtcblxuICAmX19pbnB1dCB7XG4gICAgQGFwcGx5IGJvcmRlciBib3JkZXItbi0zMCBiZy10cmFuc3BhcmVudCBvdXRsaW5lLW5vbmU7XG4gICAgcGFkZGluZzogMTBweCA0MnB4IDEwcHggMzRweDtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICB9XG4gIHN2ZyB7XG4gICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMyB0b3AtMyB0ZXh0LWJhc2UgdGV4dC1uLTMwO1xuICB9XG59XG4ucmVxdWlyZWQtaWNvbiB7XG4gIEBhcHBseSByZWxhdGl2ZSB0b3AtMC41IHRleHQtYmFzZSBsZWFkaW5nLW5vbmUgdGV4dC1jcmltc29uLTUwO1xufVxuLm9wZW4tdGV4dCB7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2E2YjViYTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBpbnB1dCB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwYWRkaW5nLXRvcDogNHB4O1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgcGFkZGluZy1sZWZ0OiAzMHB4O1xuICAgICY6Zm9jdXMge1xuICAgICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuLnVzZXItY2hlY2tsaXN0IHtcbiAgb3BhY2l0eTogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB3aWR0aDogMThweDtcbiAgaGVpZ2h0OiAxOHB4O1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG59XG4ucHNldWRvLWNoZWNrYm94IHtcbiAgaGVpZ2h0OiAxOHB4O1xuICB3aWR0aDogMThweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvcmRlcjogMnB4IHNvbGlkICNkNWRjZGU7XG4gIG9wYWNpdHk6IDE7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG59XG4udXNlci1jaGVja2xpc3Q6Y2hlY2tlZCB+IC5wc2V1ZG8tY2hlY2tib3gge1xuICBib3JkZXItY29sb3I6IHJnYih2YXIoLS1zcHJpbmctNTApKTtcbn1cbi50aWNrZWQtc3ZnIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDFweDtcbiAgbGVmdDogMXB4O1xuICBvcGFjaXR5OiAwO1xuICBoZWlnaHQ6IDE2cHg7XG4gIHdpZHRoOiAxNnB4O1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuNyk7XG59XG4udXNlci1jaGVja2xpc3Q6Y2hlY2tlZCB+IC50aWNrZWQtc3ZnIHtcbiAgb3BhY2l0eTogMTtcbn1cbmlucHV0W3R5cGU9J3JhZGlvJ10ge1xuICBhY2NlbnQtY29sb3I6ICMxNTUzNjY7XG59XG4iLCIuaWF0aS1saXN0LXRhYmxlIHtcbiAgQGFwcGx5IHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1uLTIwIHRleHQtbGVmdDtcbiAgbWF4LXdpZHRoOiBjYWxjKDEwMHZ3IC0gNDVweCk7XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICB9XG5cbiAgdGFibGUge1xuICAgIEBhcHBseSB0YWJsZSB3LWZ1bGwgIGJnLXdoaXRlO1xuICB9XG4gIHRib2R5IHtcbiAgICB0ciB7XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgYm94LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTtcbiAgICAgICAgQGFwcGx5IGJnLW4tMTA7XG4gICAgICB9XG4gICAgfVxuICAgIHRyOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEodmFyKC0tbi0yMCkpO1xuICAgICAgLy8gJjphZnRlciB7XG4gICAgICAvLyAgIGNvbnRlbnQ6ICcgJztcbiAgICAgIC8vICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMCBib3R0b20tMCBoLXB4IHctZnVsbCBtYXgtdy1mdWxsIGJnLW4tMjA7XG4gICAgICAvLyB9XG5cbiAgICAgIHRkOmZpcnN0LWNoaWxkOmFmdGVyIHtcbiAgICAgICAgQGFwcGx5IG1sLTY7XG4gICAgICB9XG4gICAgICB0aC5jaGVjay1jb2x1bW46YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgLW1sLTY7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGgge1xuICAgIEBhcHBseSBweS00IHB4LTYgYWxpZ24tdG9wIHRleHQteHMgdXBwZXJjYXNlIGxlYWRpbmctbm9ybWFsO1xuXG4gICAgc3ZnIHtcbiAgICAgIEBhcHBseSBtci0xIHRleHQteGwgdGV4dC1uLTMwO1xuICAgIH1cblxuICAgIGEge1xuICAgICAgQGFwcGx5IGZsZXg7XG4gICAgICBzdmcge1xuICAgICAgICBAYXBwbHkgdGV4dC1iYXNlIHRleHQtYmx1ZWNvcmFsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRkIHtcbiAgICBAYXBwbHkgcmVsYXRpdmUgcHktNCBweC02IGFsaWduLXRvcCB0ZXh0LXNtIGxlYWRpbmctcmVsYXhlZDtcbiAgfVxuXG4gIHRyLmFscmVhZHktcHVibGlzaGVkIHtcbiAgICB0ZCxcbiAgICB0aC5jaGVjay1jb2x1bW4ge1xuICAgICAgQGFwcGx5IHB0LTExO1xuICAgIH1cbiAgfVxuXG4gIC5oYXMtc3RhdHVzIHtcbiAgICB0ZCB7XG4gICAgICBAYXBwbHkgcHgtNiBwdC0xMSBwYi03O1xuICAgIH1cbiAgICB0aCB7XG4gICAgICBAYXBwbHkgcHgtNiBwdC0xMSBwYi03O1xuICAgIH1cbiAgfVxuXG4gIC5jaGVjay1jb2x1bW4gLmNoZWNrYm94IHtcbiAgICBtYXJnaW4tdG9wOiA0cHg7XG4gIH1cbn1cblxuLnVwbG9hZC1saXN0LXRhYmxlIHtcbiAgLnVwbG9hZC1lcnJvciB7XG4gICAgLnRpdGxlIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbiAgfVxuXG4gIC51cGxvYWQtZXJyb3ItY29udGVudCB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuM3MgZWFzZS1vdXQ7IC8vIG5vdGUgdGhhdCB3ZSdyZSB0cmFuc2l0aW9uaW5nIG1heC1oZWlnaHQsIG5vdCBoZWlnaHQhXG4gICAgLmVycm9yLWRyb3Bkb3duIHtcbiAgICAgIGRpdiB7XG4gICAgICAgIEBhcHBseSB0ZXh0LWJsdWVjb3JhbDtcblxuICAgICAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICAgIEBhcHBseSBib3JkZXItYiBib3JkZXItYi1uLTIwIHBiLTQ7XG4gICAgICAgIH1cblxuICAgICAgICB1bCB7XG4gICAgICAgICAgQGFwcGx5IG10LTQgc3BhY2UteS00IHRleHQtc20gZm9udC1ub3JtYWw7XG4gICAgICAgIH1cblxuICAgICAgICBsaSB7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgIC8vIHBhZGRpbmctbGVmdDogMzZweDtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgICAgICBAYXBwbHkgYm9yZGVyLWIgYm9yZGVyLWItbi0yMCBwYi00O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vICY6OmJlZm9yZSB7XG4gICAgICAgICAgLy8gICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgLy8gICB0b3A6IDhweDtcbiAgICAgICAgICAvLyAgIGxlZnQ6IDIwcHg7XG4gICAgICAgICAgLy8gICB3aWR0aDogNHB4O1xuICAgICAgICAgIC8vICAgaGVpZ2h0OiA0cHg7XG4gICAgICAgICAgLy8gICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgLy8gICBjb250ZW50OiAnJztcbiAgICAgICAgICAvLyAgIEBhcHBseSBiZy1ibHVlY29yYWw7XG4gICAgICAgICAgLy8gfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC5lcnJvci1saXN0IHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHBhZGRpbmctbGVmdDogMjBweDtcbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA4cHg7XG4gICAgICAgIGxlZnQ6IDEwcHg7XG4gICAgICAgIHdpZHRoOiA0cHg7XG4gICAgICAgIGhlaWdodDogNHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBAYXBwbHkgYmctYmx1ZWNvcmFsO1xuICAgICAgfVxuICAgIH1cbiAgICAmLmNsb3NlZCB7XG4gICAgICBtYXgtaGVpZ2h0OiAwO1xuICAgIH1cbiAgfVxuXG4gIC51cGxvYWQtZXJyb3ItaWNvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMjZweDtcbiAgICByaWdodDogMDtcblxuICAgIHN2ZyB7XG4gICAgICBmb250LXNpemU6IDZweDtcbiAgICB9XG5cbiAgICAmLm9wZW4ge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICB9XG4gIH1cbn1cblxuI2NiIHtcbiAgd2lkdGg6IDY4cHg7XG59XG5cbiNzdGF0dXMge1xuICB3aWR0aDogMTkycHg7XG59XG5cbiNwdWJsaXNoIHtcbiAgd2lkdGg6IDI4MHB4O1xufVxuXG4jZGF0ZSB7XG4gIHdpZHRoOiAxNzNweDtcbn1cbi5pYXRpLWxpc3QtdGFibGUge1xuICB0ciB7XG4gICAgb3ZlcmZsb3cteTogdmlzaWJsZTtcbiAgfVxuICB0ZDpudGgtY2hpbGQoMSkge1xuICAgIG1heC13aWR0aDogMTUwcHggIWltcG9ydGFudDtcblxuICAgIGEge1xuICAgICAgbWF4LXdpZHRoOiAxNDVweDtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuICB9XG59XG50ZCB7XG4gIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xufVxuLnVzZXItbGlzdC10YWJsZS5pYXRpLWxpc3QtdGFibGUsXG4ub3JnYW5pemF0aW9uLWxpc3Qge1xuICBvdmVyZmxvdy14OiBhdXRvO1xuICBvdmVyZmxvdy15OiBoaWRkZW47XG4gIG1heC13aWR0aDogY2FsYygxMDB2dyAtIDcwcHgpO1xuICBAbWVkaWEgKG1heC13aWR0aDogNjQwcHgpIHtcbiAgICBtYXgtd2lkdGg6IGNhbGMoMTAwdncgLSA1MHB4KTtcbiAgfVxuICB0Ym9keSB7XG4gICAgdHIge1xuICAgICAgJjpob3ZlciB7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGJveC1zaGFkb3c6IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMCk7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7XG4gICAgICAgIEBhcHBseSBiZy10cmFuc3BhcmVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLypGb3IgcHJvZ3Jlc3MgYmFyIGluIGFjdGl2aXRpZXMgbGlzdGluZyBwYWdlXG4gKlxuICovXG4uYm9yZGVyLXRoaXMge1xuICBib3JkZXI6IDFweCBzb2xpZCBibGFjaztcbn1cbi5wcm9ncmVzcy1iYXItaGVhZGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTEwMnB4KSB7XG4gICAgdGV4dC1hbGlnbjogZW5kO1xuICB9XG59XG4ucHJvZ3Jlc3MtYmFyLXBhcmVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMTAycHgpIHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICB9XG59XG4ucHJvZ3Jlc3MtYmFyLXdyYXBwZXIge1xuICBoZWlnaHQ6IDVweDtcbiAgd2lkdGg6IDA7XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMTAycHgpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgd2lkdGg6IDEwMHB4O1xuICB9XG59XG4ucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciB7XG4gIGhlaWdodDogMTAwJTtcbiAgYm9yZGVyLXJhZGl1czogMTJweDtcbn1cbi5wcm9ncmVzcy1iYXItZmlsbCB7XG4gIGhlaWdodDogMTAwJTtcbiAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcbn1cbi5wcm9ncmVzcy1iYXItbnVtYmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDExMDJweCkge1xuICAgIHRleHQtYWxpZ246IGVuZDtcbiAgICB3aWR0aDogMi4ycmVtO1xuICAgIHBhZGRpbmctbGVmdDogOHB4O1xuICB9XG59XG4iLCIuY2hlY2tib3gge1xuICBAYXBwbHkgcmVsYXRpdmUgYmxvY2sgY3Vyc29yLXBvaW50ZXIgc2VsZWN0LW5vbmU7XG4gIC5jaGVja21hcmsge1xuICAgIEBhcHBseSBmbGV4IGgtNCB3LTQgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQgYm9yZGVyLTIgYm9yZGVyLW4tMjA7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGJvcmRlci13aWR0aDogMCAzcHggM3B4IDA7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIEBhcHBseSBtYi0wLjUgaGlkZGVuIGgtMiB3LVs1cHhdIHJvdGF0ZS00NSBib3JkZXItc3ByaW5nLTUwO1xuICAgIH1cbiAgfVxuICBpbnB1dCB7XG4gICAgQGFwcGx5IGFic29sdXRlIGgtMCB3LTAgY3Vyc29yLXBvaW50ZXIgb3BhY2l0eS0wO1xuICAgICY6Y2hlY2tlZCB+IC5jaGVja21hcmsge1xuICAgICAgQGFwcGx5IGJvcmRlci1zcHJpbmctNTA7XG4gICAgICAmOmFmdGVyIHtcbiAgICAgICAgQGFwcGx5IGJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAmOmhvdmVyIGlucHV0IH4gLmNoZWNrbWFyayB7XG4gICAgQGFwcGx5IGJvcmRlci1zcHJpbmctNTA7XG4gIH1cbn1cbi8qKlxuICBMYXJhdmVsIGZvcm0gZGVzaWduXG4gKi9cbmZvcm0ge1xuICAuZm9ybS1maWVsZC1ncm91cCB7XG4gICAgQGFwcGx5IHJlbGF0aXZlIHAtMztcbiAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgQGFwcGx5IG1iLTY7XG4gICAgfVxuXG4gICAgLmZvcm0tZmllbGQge1xuICAgICAgQGFwcGx5IHAtMztcbiAgICAgIC5oZWxwLXRleHQge1xuICAgICAgICBAYXBwbHkgbXQtMiB0ZXh0LXhzIGxlYWRpbmctcmVsYXhlZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgYnV0dG9uLmRlbGV0ZS1pdGVtIHtcbiAgICBAYXBwbHkgYWJzb2x1dGUgaC04IHctOCBjdXJzb3ItcG9pbnRlciBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1mdWxsIGJnLW4tNDAgLWluZGVudC00MDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQ6IHVybCgnL2ltYWdlcy90cmFzaF9mdWxsLnN2ZycpIG5vLXJlcGVhdCBjZW50ZXI7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTEvMiB0b3AtMS8yIGgtWzE4cHhdIHctWzE4cHhdIC10cmFuc2xhdGUteC0xLzIgLXRyYW5zbGF0ZS15LTEvMjtcbiAgICB9XG4gICAgJjpob3ZlciB7XG4gICAgICBAYXBwbHkgYmctYmx1ZWNvcmFsO1xuICAgIH1cbiAgfVxuXG4gIC5mb3JtLWZpZWxkLWdyb3VwLW91dGVyIC5mb3JtLWZpZWxkIHtcbiAgICBAYXBwbHkgcHgtMztcbiAgfVxuXG4gIC5mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICBAYXBwbHkgbWItMiBmbGV4IGp1c3RpZnktYmV0d2VlbjtcbiAgICBsYWJlbCB7XG4gICAgICBAYXBwbHkgdGV4dC14cyBsZWFkaW5nLXJlbGF4ZWQ7XG4gICAgfVxuICAgIC5yZXF1aXJlZCB7XG4gICAgICBAYXBwbHkgZm9udC1ib2xkIHRleHQtc2FsbW9uLTUwO1xuICAgIH1cbiAgfVxuICBpbnB1dFt0eXBlPSd0ZXh0J10sXG4gIGlucHV0W3R5cGU9J2RhdGUnXSxcbiAgdGV4dGFyZWEge1xuICAgIEBhcHBseSBtdC0wIGgtMTIgdy1mdWxsIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTMwIHB4LTQgcHktMi41IHRleHQtc20gbGVhZGluZy1ub3JtYWwgb3V0bGluZS1ub25lIGR1cmF0aW9uLTMwMDtcbiAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICBAYXBwbHkgdGV4dC1zbSB0ZXh0LW4tNDA7XG4gICAgfVxuICAgICY6Zm9jdXMge1xuICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItbi01MCBiZy1uLTEwO1xuICAgIH1cbiAgICAmOmZvY3VzOjpwbGFjZWhvbGRlciB7XG4gICAgICBAYXBwbHkgdGV4dC1uLTUwO1xuICAgIH1cbiAgfVxuXG4gIGlucHV0W3R5cGU9J3RleHQnXSxcbiAgaW5wdXRbdHlwZT0nZGF0ZSddIHtcbiAgICBAYXBwbHkgaC0xMjtcbiAgfVxuXG4gIHNlbGVjdCB7XG4gICAgQGFwcGx5IHctZnVsbCByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCBweC00IHB5LTMgdGV4dC1zbSB0ZXh0LW4tNDAgb3V0bGluZS1ub25lIGR1cmF0aW9uLTMwMDtcbiAgICAmOmZvY3VzIHtcbiAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLW4tNTAgYmctbi0xMDtcbiAgICB9XG4gIH1cbiAgLmhlbHAge1xuICAgIEBhcHBseSByZWxhdGl2ZTtcbiAgICAmX190ZXh0IHtcbiAgICAgIEBhcHBseSBpbnZpc2libGUgYWJzb2x1dGUgdG9wLTQgei0yMCBzcGFjZS15LTEuNSByb3VuZGVkIGJnLWVnZ3NoZWxsIHAtNCB0ZXh0LWxlZnQgdGV4dC14cyB0ZXh0LW4tNDAgb3BhY2l0eS0wIGR1cmF0aW9uLTIwMDtcbiAgICAgIGJveC1zaGFkb3c6IDBweCA0cHggNDBweCByZ2IoMCAwIDAgLyAxMCUpO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQ7XG4gICAgfVxuICB9XG4gIC5oZWxwOmhvdmVyIHtcbiAgICAuaGVscF9fdGV4dCB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNXB4KTtcbiAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuICAuYWRkX21vcmUge1xuICAgIEBhcHBseSByZWxhdGl2ZTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgaC0xLzIgdy1weCBib3JkZXItbCBib3JkZXItc3ByaW5nLTUwO1xuICAgIH1cbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMCB0b3AtMi80IGgtcHggdy0zLjUgLXRyYW5zbGF0ZS15LTEvMiBib3JkZXItYiBib3JkZXItc3ByaW5nLTUwO1xuICAgIH1cblxuICAgIGkge1xuICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgICBiYWNrZ3JvdW5kOiB1cmwoJy9pbWFnZXMvYWRkLW1vcmUtZ3JlZW4uc3ZnJykgbm8tcmVwZWF0IGNlbnRlcjtcbiAgICB9XG4gIH1cbiAgLnN1YmVsZW1lbnQge1xuICAgICYuYm9yZGVyLWwgPiBsYWJlbCB7XG4gICAgICBib3JkZXItbGVmdDogMDtcbiAgICB9XG4gICAgLnN1YmVsZW1lbnQsXG4gICAgLnN1YmVsZW1lbnQgKyBidXR0b24ge1xuICAgICAgQGFwcGx5IG1sLTY7XG4gICAgfVxuXG4gICAgLndyYXBwZWQtY2hpbGQtYm9keSB7XG4gICAgICBAYXBwbHkgcmVsYXRpdmU7XG4gICAgICA+IC5kZWxldGUtcGFyZW50IHtcbiAgICAgICAgQGFwcGx5IGJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgICA+IC5tdWx0aS1mb3JtOm9ubHktb2YtdHlwZSA+IC5kZWxldGUtcGFyZW50LFxuICAgIC53cmFwcGVkLWNoaWxkLWJvZHk6b25seS1vZi10eXBlID4gLmRlbGV0ZS1wYXJlbnQge1xuICAgICAgQGFwcGx5IGhpZGRlbjtcbiAgICB9XG4gIH1cblxuICAuZm9ybS1maWVsZC1ncm91cDpvbmx5LW9mLXR5cGUgPiAuZGVsZXRlLWl0ZW0ge1xuICAgIEBhcHBseSBoaWRkZW47XG4gIH1cblxuICAvKipcbiAgKiBDb25kaXRpb24gdG8gc2hvdyBhbmQgZGVsZXRlIGNvbGxlY3Rpb24gZXJyb3IgaW4gZm9ybVxuICAqL1xuICAuY29sbGVjdGlvbl9lcnJvciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5tdWx0aS1mb3JtICsgLmNvbGxlY3Rpb25fZXJyb3IsXG4gIC5mb3JtLWZpZWxkLWdyb3VwICsgLmNvbGxlY3Rpb25fZXJyb3IsXG4gIC53cmFwcGVkLWNoaWxkLWJvZHkgKyAuY29sbGVjdGlvbl9lcnJvciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbiAgLmNvbnRyb2wtbGFiZWwgKyAuY29sbGVjdGlvbl9lcnJvcixcbiAgLnRpdGxlLWNvbnRhaW5lciAuY29sbGVjdGlvbl9lcnJvciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZy1yaWdodDogMjRweDtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgLmRpdiB7XG4gICAgICBsaW5lLWhlaWdodDogNHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICBTZWxlY3QgMiBmaWVsZFxuKi9cbnNwYW4uc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQge1xuICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUge1xuICAgIEBhcHBseSBoLTEyIHctZnVsbCByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCBweC00IHB5LTMgdGV4dC1zbSB0ZXh0LW4tNDAgb3V0bGluZS1ub25lIGR1cmF0aW9uLTMwMDtcbiAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkIHtcbiAgICAgIEBhcHBseSBwLTAgdGV4dC1zbSBsZWFkaW5nLW5vcm1hbDtcbiAgICB9XG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19hcnJvdyB7XG4gICAgICBAYXBwbHkgaC0xMTtcbiAgICB9XG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19jbGVhciBzcGFuIHtcbiAgICAgIEBhcHBseSBtci0yLjUgdGV4dC1zbTtcbiAgICB9XG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19wbGFjZWhvbGRlciB7XG4gICAgICBAYXBwbHkgdGV4dC1zbSB0ZXh0LW4tNDA7XG4gICAgfVxuICB9XG4gIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0taGlnaGxpZ2h0ZWRbYXJpYS1zZWxlY3RlZF0ge1xuICAgIGNvbG9yOiAjMWYyOTM3O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmM2Y0ZjY7XG4gIH1cbiAgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uW2FyaWEtc2VsZWN0ZWRdIHtcbiAgICBAYXBwbHkgdGV4dC1zbSB0ZXh0LW4tNTA7XG4gIH1cbn1cbi5tYXgtdy1oYWxmIHtcbiAgbWF4LXdpZHRoOiA1MCU7XG59XG5cbi8qKlxuICBBY3Rpdml0eSBEZXRhaWwgUGFnZVxuKi9cbi5hY3Rpdml0aWVzIHtcbiAgQGFwcGx5IGZsZXggZ2FwLTUgeGw6Z2FwLTc7XG5cbiAgJl9fc2lkZWJhciB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgd2lkdGg6IDI4MHB4O1xuXG4gICAgJi1pbm5lciB7XG4gICAgICBvcmRlcjogMTtcbiAgICB9XG4gIH1cblxuICAmX19jb250ZW50IHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAgIG1heC13aWR0aDogY2FsYygxMDB2dyAtIDUwcHgpO1xuICAgIH1cbiAgfVxuXG4gICZfX2NhcmQge1xuICAgIEBhcHBseSBmbGV4IGZsZXgtY29sIGJnLXdoaXRlIHRleHQtY2VudGVyIHRleHQteHMgdGV4dC1uLTQwO1xuICAgIHBhZGRpbmc6IDEzcHg7XG4gIH1cblxuICAucHJvZ3Jlc3Mge1xuICAgIEBhcHBseSBpdGVtcy1jZW50ZXI7XG4gICAgd2lkdGg6IDE1MXB4O1xuICAgIG1pbi1oZWlnaHQ6IDE3NHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweCAwcHggMHB4IDhweDtcbiAgfVxuXG4gIC50YWItYnRuOmRpc2FibGVkIHtcbiAgICBAYXBwbHkgcG9pbnRlci1ldmVudHMtbm9uZSB0ZXh0LW4tMjA7XG5cbiAgICBzdmcge1xuICAgICAgQGFwcGx5IHRleHQtbi0yMDtcbiAgICB9XG4gIH1cbiAgLmhvdmVyLXRleHQge1xuICAgIHN2ZyB7XG4gICAgICBAYXBwbHkgdGV4dC1uLTMwO1xuICAgIH1cbiAgfVxufVxuLmVsZW1lbnRzLWNhcmQge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTkwcHgpIHtcbiAgICBmbGV4LWJhc2lzOiBhdXRvO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG4ubWFudWFsLWltcG9ydCB7XG4gIC5oZWxwX190ZXh0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gICAgICB3aWR0aDogMzUwcHggIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cbi5yZWdpc3Rlci1wYWdlIC5oZWxwX190ZXh0IHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKSAhaW1wb3J0YW50O1xufVxuXG4ucmVnaXN0cnlfX2luZm8sXG4ucmVnaXN0ZXIsXG5hc2lkZSB7XG4gIC5oZWxwX190ZXh0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogMTM3MHB4KSB7XG4gICAgICB3aWR0aDogMjUwcHggIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cbi5pbXBvcnQtYWN0aXZpdHksXG4uYWN0aXZpdGllc19fY29udGVudC0tZWxlbWVudCB7XG4gIC5oZWxwX190ZXh0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcbiAgfVxufVxuYXNpZGUge1xuICAucHJvZ3Jlc3Mge1xuICAgIC5oZWxwX190ZXh0IHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSAhaW1wb3J0YW50O1xuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNDUlKSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuLmFjdGl2aXRpZXNfX2NvbnRlbnQge1xuICB3aWR0aDogMTAwJTtcbn1cbi50YWItYnRuIHtcbiAgLmhlbHBfX3RleHQge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSAhaW1wb3J0YW50O1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICAgIGxlZnQ6IDA7XG4gICAgfVxuICB9XG59XG4uYWN0aXZpdHktZGVmYXVsdC12YWx1ZSB7XG4gIC5oZWxwX190ZXh0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpICFpbXBvcnRhbnQ7XG4gIH1cbn1cbi5lcnJvci10aXRsZSB7XG4gIGNvbG9yOiAjZDEwMDFlO1xuICBwYWRkaW5nLXRvcDogOHB4ICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmctYm90dG9tOiA4cHggIWltcG9ydGFudDtcbn1cbi50ZXh0LWRhbmdlci1lcnJvciB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC1zaXplOiAxMnB4O1xuICBsaW5lLWhlaWdodDogMThweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbn1cbiIsIi5wYWdpbmF0aW9uIHtcbiAgQGFwcGx5IHJlbGF0aXZlIHotMCBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctd2hpdGUgdGV4dC1zbSBsZWFkaW5nLXJlbGF4ZWQgdGV4dC1uLTQwO1xuXG4gIGEge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gIGEsXG4gIC5wYWdpbmF0aW9uLWRvdHMge1xuICAgIEBhcHBseSBmbGV4IGJvcmRlci15IGJvcmRlci1sIGJvcmRlci1uLTIwIHB5LTEuNSBweC0zO1xuXG4gICAgJjpub3QoLnByZXYtYnRuKSB7XG4gICAgICBAYXBwbHkgYm9yZGVyLWwgYm9yZGVyLW4tMjA7XG4gICAgfVxuXG4gICAgJi5wcmV2LWJ0bixcbiAgICAmLm5leHQtYnRuIHtcbiAgICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1uLTEwO1xuXG4gICAgICBzdmcge1xuICAgICAgICBAYXBwbHkgdGV4dC14cztcbiAgICAgIH1cbiAgICB9XG4gICAgJi5wcmV2LWJ0biB7XG4gICAgICBAYXBwbHkgcm91bmRlZC10bCByb3VuZGVkLWJsO1xuICAgIH1cblxuICAgICYubmV4dC1idG4ge1xuICAgICAgQGFwcGx5IHJvdW5kZWQtYnIgcm91bmRlZC10ciBib3JkZXItcjtcbiAgICB9XG5cbiAgICAmLnByZXYtYnRuIHN2ZyB7XG4gICAgICBAYXBwbHkgbXItMTtcbiAgICB9XG5cbiAgICAmLm5leHQtYnRuIHN2ZyB7XG4gICAgICBAYXBwbHkgbWwtMTtcbiAgICB9XG5cbiAgICAmOmhvdmVyLFxuICAgICYuY3VycmVudCB7XG4gICAgICBAYXBwbHkgYmctYmx1ZWNvcmFsIHRleHQtcGFwZXI7XG4gICAgfVxuICB9XG59XG4iLCIub3ZlcmxheSB7XG4gIEBhcHBseSBmaXhlZCBsZWZ0LTAgdG9wLTAgaC1mdWxsIHctZnVsbCBiZy1ibGFjaztcbiAgei1pbmRleDogMTAwO1xuICBvcGFjaXR5OiAwLjc7XG5cbiAgJl9faW5uZXIge1xuICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgaC1mdWxsIHctZnVsbDtcbiAgfVxuXG4gICZfX2NvbnRlbnQge1xuICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTIvNCB0b3AtMi80O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXG4gICAgLnNwaW5uZXIge1xuICAgICAgQGFwcGx5IGlubGluZS1ibG9jayBhbmltYXRlLXNwaW4gcm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci1uLTEwIGJvcmRlci1vcGFjaXR5LTU7XG4gICAgICB3aWR0aDogNzVweDtcbiAgICAgIGhlaWdodDogNzVweDtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6IHdoaXRlO1xuICAgIH1cbiAgfVxufVxuLmxvYWRvdmVybGF5IHtcbiAgQGFwcGx5IGZpeGVkIGxlZnQtMCB0b3AtMCBoLWZ1bGwgdy1mdWxsIGJnLWJsYWNrO1xuICBvcGFjaXR5OiAwLjc7XG5cbiAgJl9faW5uZXIge1xuICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgaC1mdWxsIHctZnVsbDtcbiAgfVxuXG4gICZfX2NvbnRlbnQge1xuICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTIvNCB0b3AtMi80O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXG4gICAgLnNwaW5uZXIge1xuICAgICAgQGFwcGx5IGlubGluZS1ibG9jayBhbmltYXRlLXNwaW4gcm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci1uLTEwIGJvcmRlci1vcGFjaXR5LTU7XG4gICAgICB3aWR0aDogNzVweDtcbiAgICAgIGhlaWdodDogNzVweDtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6IHdoaXRlO1xuICAgIH1cbiAgfVxufVxuIiwiLnNlbGVjdDItY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG1hcmdpbjogMDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcblxuICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjdmOTtcbiAgfVxuXG4gIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGhlaWdodDogMjhweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMyYTJmMzA7XG4gICAgfVxuXG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xuICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMTtcbiAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgfVxuICB9XG59XG5cbi5zZWxlY3QyLWRyb3Bkb3duIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAtMTAwMDAwcHg7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNhYWE7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cblxuLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIHtcbiAgcGFkZGluZzogNnB4O1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAmW2FyaWEtc2VsZWN0ZWRdIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cblxuLnNlbGVjdDItY29udGFpbmVyLS1vcGVuIHtcbiAgLnNlbGVjdDItZHJvcGRvd24ge1xuICAgIGxlZnQ6IDA7XG5cbiAgICAmLS1hYm92ZSB7XG4gICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgIH1cblxuICAgICYtLWJlbG93IHtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBib3JkZXItdG9wOiBub25lO1xuICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICAgIH1cbiAgfVxufVxuXG4uc2VsZWN0Mi1zZWFyY2gtLWRyb3Bkb3duIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDRweDtcblxuICAuc2VsZWN0Mi1zZWFyY2hfX2ZpZWxkIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDRweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjYTZiNWJhO1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcblxuICAgICY6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24ge1xuICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIH1cbiAgfVxufVxuXG5bdHlwZT0nc2VhcmNoJ10ge1xuICBvdXRsaW5lLWNvbG9yOiAjYTZiNWJhO1xuICBvdXRsaW5lLW9mZnNldDogMDtcbn1cblxuLnNlbGVjdDItaGlkZGVuLWFjY2Vzc2libGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgd2lkdGg6IDFweCAhaW1wb3J0YW50O1xuICBoZWlnaHQ6IDFweCAhaW1wb3J0YW50O1xuICBtYXJnaW46IC0xcHggIWltcG9ydGFudDtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG4gIGJvcmRlcjogMCAhaW1wb3J0YW50O1xuICBjbGlwOiByZWN0KDAgMCAwIDApICFpbXBvcnRhbnQ7XG59XG5cbi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCB7XG4gIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHtcbiAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkIHtcbiAgICAgIGNvbG9yOiAjMTU1MzY2O1xuICAgICAgbGluZS1oZWlnaHQ6IDI4cHg7XG4gICAgfVxuXG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19jbGVhciB7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG5cbiAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX3BsYWNlaG9sZGVyIHtcbiAgICAgIGNvbG9yOiAjOTk5O1xuICAgIH1cblxuICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3cge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAxcHg7XG4gICAgICByaWdodDogMXB4O1xuICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICBoZWlnaHQ6IDI2cHg7XG5cbiAgICAgIGIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIHdpZHRoOiAwO1xuICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgIG1hcmdpbi10b3A6IC0ycHg7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtNHB4O1xuICAgICAgICBib3JkZXItY29sb3I6ICM4ODggdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICAgIGJvcmRlci13aWR0aDogNXB4IDRweCAwIDRweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLnNlbGVjdDItcmVzdWx0cyA+IC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbnMge1xuICAgIG1heC1oZWlnaHQ6IDIwMHB4O1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gIH1cbn1cblxuLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyLS1vcGVuIHtcbiAgLnNlbGVjdDItc2VsZWN0aW9uX19hcnJvdyB7XG4gICAgYiB7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICM4ODggdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItd2lkdGg6IDAgNHB4IDVweCA0cHg7XG4gICAgfVxuICB9XG5cbiAgJi5zZWxlY3QyLWNvbnRhaW5lci0tYWJvdmUge1xuICAgIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHtcbiAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgICB9XG4gIH1cblxuICAmLnNlbGVjdDItY29udGFpbmVyLS1iZWxvdyB7XG4gICAgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUge1xuICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLnNpZGViYXItb3Blbi1pY29uIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBoZWlnaHQ6IDQwcHg7XG4gIGxlZnQ6IDBweDtcbiAgYm90dG9tOiA1MHB4O1xuICB6LWluZGV4OiA2MDtcbiAgZGlzcGxheTogZmxleDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QwZGRlMDtcbiAgcGFkZGluZzogMCA1cHg7XG4gIGJvcmRlci1yYWRpdXM6IDAgMTAwJSAxMDAlIDA7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMnM7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogbm9uZTtcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICB9XG5cbiAgc3ZnIHtcbiAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGNvbG9yOiAjMTU1MzY2O1xuICB9XG59XG4uZGV0YWlscy1zaWRlYmFyLWNsb3NlLWljb24ge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJvdHRvbTogNTBweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBsZWZ0OiAyODBweDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDBkZGUwO1xuICBoZWlnaHQ6IDQwcHg7XG4gIHdpZHRoOiA0MHB4O1xuICB6LWluZGV4OiAzMDA7XG4gIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7XG5cbiAgc3ZnIHtcbiAgICBtYXJnaW46IGF1dG87XG4gICAgY29sb3I6ICMxNTUzNjY7XG4gIH1cbn1cbi5zaWRlYmFyLWNsb3NlLWljb24ge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJvdHRvbTogNTBweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBsZWZ0OiAyNzVweDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDBkZGUwO1xuICBoZWlnaHQ6IDQwcHg7XG4gIHdpZHRoOiA0MHB4O1xuICB6LWluZGV4OiAyMDA7XG4gIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMnM7XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDcwMHB4KSB7XG4gICAgbGVmdDogMjQwcHg7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcbiAgfVxuXG4gIHN2ZyB7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGNvbG9yOiAjMTU1MzY2O1xuICB9XG59XG4iLCIubXVsdGlzZWxlY3Qge1xuICBtaW4td2lkdGg6IDE4MHB4ICFpbXBvcnRhbnQ7XG4gIGN1cnNvcjogcG9pbnRlciAhaW1wb3J0YW50O1xufVxuLm11bHRpc2VsZWN0LmlzLWFjdGl2ZSB7XG4gIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbn1cbi5vcmdhbml6YXRpb24sXG4ucm9sZSxcbi5zdGF0dXMge1xuICAubXVsdGlzZWxlY3Qge1xuICAgIHdpZHRoOiAxNjBweCAhaW1wb3J0YW50O1xuICB9XG59XG4uZmlsdGVycyB7XG4gIC5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlciB7XG4gICAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDtcbiAgICBjb2xvcjogcmdiKHZhcigtLWJsdWVjb3JhbCkpICFpbXBvcnRhbnQ7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xuICB9XG59XG4ubXVsdGlzZWxlY3Qtc2VhcmNoIHtcbiAgY3Vyc29yOiBwb2ludGVyICFpbXBvcnRhbnQ7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudDtcbn1cbi5tdWx0aXNlbGVjdC1tdWx0aXBsZS1sYWJlbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xuICBmb250LXNpemU6IDEycHggIWltcG9ydGFudDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDtcbiAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSwgMCkgIWltcG9ydGFudDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLm11bHRpc2VsZWN0LWxhYmVsLXdyYXBwZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLm11bHRpc2VsZWN0LW11bHRpcGxlLWxhYmVsIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDtcbiAgICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCAwKSAhaW1wb3J0YW50O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgJjo6YWZ0ZXIge1xuICAgICAgY29udGVudDogdmFyKC0tbGFiZWwpO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICBsZWZ0OiAxNHB4O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xuICAgICAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgICBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50O1xuICAgICAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSkgIWltcG9ydGFudDtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgfVxuICB9XG4gIC5tdWx0aXNlbGVjdC1zaW5nbGUtbGFiZWwtdGV4dCB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdWx0aXNlbGVjdC1zaW5nbGUtbGFiZWwge1xuICAgIC8vIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDtcbiAgICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCAwKSAhaW1wb3J0YW50O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgJjo6YWZ0ZXIge1xuICAgICAgY29udGVudDogdmFyKC0tbGFiZWwpO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICBsZWZ0OiAxNHB4O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xuICAgICAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgICBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50O1xuICAgICAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSkgIWltcG9ydGFudDtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgfVxuICB9XG59XG5cbi5tdWx0aXNlbGVjdC1jYXJldCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1ibHVlY29yYWwpKSAhaW1wb3J0YW50IDtcbiAgJjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcgJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaGVpZ2h0OiA0cHg7XG4gICAgd2lkdGg6IDRweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHJvdGF0ZSg0NWRlZyk7XG4gICAgei1pbmRleDogMTA7XG4gICAgdG9wOiAzMCU7XG4gIH1cbn1cbi5tdWx0aXNlbGVjdC1jbGVhci1pY29uIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xufVxuLm11bHRpc2VsZWN0LXNlYXJjaDpmb2N1cy13aXRoaW4gPiAuc2VsZWN0ZWQtcGxhY2Vob2xkZXIge1xuICBvcGFjaXR5OiAwO1xufVxuLnBvcHVwLW1vZGVsIHtcbiAgLm11bHRpc2VsZWN0IHtcbiAgICBoZWlnaHQ6IDUwcHg7XG4gIH1cbiAgLm11bHRpc2VsZWN0LXBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogcmdiKHZhcigtLW4tNDApKSAhaW1wb3J0YW50IDtcbiAgICBmb250LXdlaWdodDogNDAwICFpbXBvcnRhbnQ7XG4gIH1cbn1cbi5tdWx0aXNlbGVjdC1vcHRpb24uaXMtcG9pbnRlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG4ubXVsdGlzZWxlY3QtZHJvcGRvd24ge1xuICBvdmVyZmxvdy14OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgei1pbmRleDogNTAgIWltcG9ydGFudDtcbn1cblxuLm11bHRpc2VsZWN0LW9wdGlvbiB7XG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1uLTEwKSkgIWltcG9ydGFudDtcbiAgfVxufVxuLm11bHRpc2VsZWN0LW9wdGlvbi5pcy1zZWxlY3RlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1uLTIwKSkgIWltcG9ydGFudDtcbiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7XG59XG4iLCIjbGF1bmNoZXIge1xuICBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDtcbiAgYm90dG9tOiAzNXB4ICFpbXBvcnRhbnQ7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgYm9yZGVyLXJhZGl1czogOTk5OTlweCAhaW1wb3J0YW50O1xuICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMjEsIDgzLCAxMDIpICFpbXBvcnRhbnQ7XG59XG4iLCIuZHBfX2lucHV0IHtcbiAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMDtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgY29sb3I6ICMyYTJmMzAgIWltcG9ydGFudDtcbiAgcGFkZGluZzogMCA4cHggIWltcG9ydGFudDtcbiAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0ICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmctcmlnaHQ6IDE2cHggIWltcG9ydGFudDtcbn1cbi5hbGwtdGltZSB7XG4gIC5kcF9fc2VsZWN0aW9uX3ByZXZpZXcge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuLmVtcHR5IHtcbiAgLmRwX19pbnB1dF93cmFwIHtcbiAgICBtYXgtd2lkdGg6IDExMHB4ICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLmRwX19pbnB1dDo6cGxhY2Vob2xkZXIge1xuICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgY29sb3I6ICMyYTJmMzAgIWltcG9ydGFudDtcbn1cblxuLmRwX19pbnB1dF9pY29uIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4uZHBfX2NsZWFyX2ljb24ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4uZHBfX2lucHV0X3JlYWRvbmx5IHtcbiAgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7XG59XG4uZHBfX2NhbGVuZGFyX2hlYWRlcl9pdGVtIHtcbiAgZm9udC13ZWlnaHQ6IGxpZ2h0ZXIgIWltcG9ydGFudDtcbiAgY29sb3I6IHJnYmEodmFyKC0tbi00MCkpICFpbXBvcnRhbnQ7XG59XG5cbi5kcF9fY2FsZW5kYXJfaXRlbSAqIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIG1hcmdpbi1yaWdodDogMDtcbn1cbi5kcF9fY2VsbF9pbm5lciB7XG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNDApKSAhaW1wb3J0YW50O1xuICBoZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgd2lkdGg6IDQwcHggIWltcG9ydGFudDtcbn1cblxuLmRwX19vdmVybGF5X2NlbGw6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXNwcmluZy01MCksIDEpICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xufVxuXG4uZHBfX292ZXJsYXlfY2VsbF9hY3RpdmUge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXNwcmluZy01MCksIDEpICFpbXBvcnRhbnQ7XG59XG5cbi5kcF9fY2FsZW5kYXJfcm93IHtcbiAgZ2FwOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5kcF9fdG9kYXkge1xuICBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1zcHJpbmctNTApLCAxKSAhaW1wb3J0YW50O1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICBjb2xvcjogdmFyKC0tbi00MCkgIWltcG9ydGFudDtcbn1cblxuLmRwX19yYW5nZV9lbmQge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXNwcmluZy0yMCksIDEpICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xuICBib3JkZXItcmFkaXVzOiAwIDUwJSA1MCUgMCAhaW1wb3J0YW50O1xuICBib3JkZXI6IDAgIWltcG9ydGFudDtcbn1cblxuLmRwX19yYW5nZV9zdGFydCB7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3ByaW5nLTIwKSwgMSkgIWltcG9ydGFudDtcbiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDUwJSAwIDAgNDAlICFpbXBvcnRhbnQ7XG59XG5cbi5kcF9fcmFuZ2VfYmV0d2VlbiB7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3ByaW5nLTIwKSwgMSkgIWltcG9ydGFudDtcbiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5kcF9fcHJlc2V0X3JhbmdlcyB7XG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNTApKSAhaW1wb3J0YW50O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnQ7XG4gIG1pbi13aWR0aDogMTUwcHggIWltcG9ydGFudDtcbn1cbi5kcF9fcHJlc2V0X3JhbmdlIHtcbiAgY29sb3I6IHJnYmEodmFyKC0tbi01MCkpICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmctbGVmdDogOHB4ICFpbXBvcnRhbnQ7XG4gIGZvbnQtc2l6ZTogMC44cmVtICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiA1MDAgIWltcG9ydGFudDtcbiAgbWFyZ2luOiA0cHggYXV0byAhaW1wb3J0YW50O1xufVxuXG4uZHBfX3ByZXNldF9yYW5nZTpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3ByaW5nLTIwKSwgMSkgIWltcG9ydGFudDtcbiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5mb250LXNwcmluZyB7XG4gIGNvbG9yOiByZ2JhKHZhcigtLXNwcmluZy01MCksIDEpICFpbXBvcnRhbnQ7XG59XG5cbi5mb250LW5ldXRyYWwge1xuICBjb2xvcjogdmFyKC0tbi01MCkgIWltcG9ydGFudDtcbn1cblxuLmRwX19pbnB1dCB7XG4gIG1hcmdpbi1yaWdodDogMTJweCAhaW1wb3J0YW50O1xufVxuXG4uZGF0ZXJhbmdlLWl0ZW0ge1xuICBwYWRkaW5nOiA4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgbWFyZ2luLXRvcDogMnB4O1xuICBtYXJnaW4tYm90dG9tOiAycHg7XG59XG5cbi5kYXRlcmFuZ2UtaXRlbTpob3ZlciB7XG4gIEBhcHBseSBiZy1zcHJpbmctMjA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgY29sb3I6IHdoaXRlO1xufVxuLmRhdGVyYW5nZS1pdGVtLWFjdGl2ZSB7XG4gIEBhcHBseSBiZy1zcHJpbmctMjA7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cbi5wcmVzZXQtcmFuZ2UtaXRlbS1hY3RpdmUge1xuICBAYXBwbHkgYmctc3ByaW5nLTIwO1xuICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzL2FwcC5jc3MiLCJtYXBwaW5ncyI6IkFBQUE7O0NBQUE7OztDQUFBOztBQUFBOzs7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztFQUFBO0FBQUE7O0FBQUE7Ozs7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtLQUFBO0VBQUE7QUFBQTs7QUFBQTs7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7Ozs7Q0FBQTs7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7VUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOzs7Ozs7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7O0VBQUE7QUFBQTs7QUFBQTs7O0NBQUE7O0FBQUE7Ozs7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOztFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7OztDQUFBOztBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7Ozs7Q0FBQTs7QUFBQTs7Ozs7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOztFQUFBO0FBQUE7O0FBQUE7OztDQUFBOztBQUFBOzs7O0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7O0VBQUE7QUFBQTs7QUFBQTs7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBOzs7Q0FBQTs7QUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQUFBOztBQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7O0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBOzs7Q0FBQTs7QUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTs7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7O0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTtBQUFBO0VBQUE7QUFBQTs7QUFBQTs7OztDQUFBOztBQUFBOzs7Ozs7OztFQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTs7RUFBQTtFQUFBO0FBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUNBQTtFQUFBO0FBQUE7QUFBQTs7RUFBQTtJQUFBO0VBQUE7QUFBQTtBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBO0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFBQTs7RUFBQTtJQUFBO0VBQUE7QUFBQTtBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBO0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUNBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtPQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtVQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUNBQTtFQUNFO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFFQTtFQUNBO0VBSUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7QUNaRjs7QUN6REE7RUFDRTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RUQ0REY7QUFDRjtBQzFEQTtFQUNFO0VBQ0E7QUQ0REY7O0FDMURBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQUE7RUFDQTtBRDZERjs7QUMxREU7RUFBQTtFQUFBO0VBQ0E7QUFEQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FEK0RGO0FDNURJO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VB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Q0Y7O0FVcGpDRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUtBO0FBTEE7QUFFQTtFQUhGO0lBSUk7RVYwakNGO0FBQ0Y7QVV0akNJO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBS0E7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFJQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBOztBQUtBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFJRjtFQUNFO0VBQ0E7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FWbWpDSjtBVWhqQ0U7RUFDRTtFQUNBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FWa2pDSjtBVTdpQ007RUFBQTtFQUFBO0FBQUE7QUFLRjtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0Y7RUFDRTtFQUNBO0FWNmlDSjtBVXppQ0k7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0FBQUE7QUFJQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUtBO0FBTEE7QUFFQTtFQUhGO0lBSUk7RVYyaUNKO0FBQ0Y7O0FVdmlDQTtFQUNFO0FWMGlDRjs7QVV2aUNFO0VBQ0U7QVYwaUNKOztBVXRpQ0U7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0U7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FB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QUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7T0FBQTtBZjQzREo7QWUxM0RJO0VBQ0U7QWY0M0ROO0FlejNESTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FmMjNETjs7QWV0M0RBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZnkzREY7O0FldDNEQTtFQUNFO0VBQ0E7RUFDQTtPQUFBO0FmeTNERjtBZXYzREU7RUFDRTtBZnkzREo7O0FlcDNERTtFQUNFO0FmdTNESjtBZXIzREk7RUFDRTtFQUNBO0VBQ0E7QWZ1M0ROO0FlcDNESTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FmczNETjs7QWVqM0RBO0VBQ0U7RUFDQTtBZm8zREY7QWVsM0RFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZm8zREo7QWVsM0RJO0VBQ0U7QWZvM0ROOztBZS8yREE7RUFDRTtFQUNBO0FmazNERjs7QWUvMkRBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZmszREY7O0FlNzJESTtFQUNFO0VBQ0E7QWZnM0ROO0FlNzJESTtFQUNFO0VBQ0E7RUFDQTtBZisyRE47QWU1MkRJO0VBQ0U7QWY4MkROO0FlMzJESTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWY2MkROO0FlMzJETTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FmNjJEUjtBZXoyREU7RUFDRTtFQUNBO0FmMjJESjs7QWVyMkRJO0VBQ0U7RUFDQTtBZncyRE47QWVuMkRJO0VBQ0U7RUFDQTtBZnEyRE47QWVoMkRJO0VBQ0U7RUFDQTtBZmsyRE47O0FnQjVnRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCK2dFRjtBZ0I5Z0VFO0VBYkY7SUFjSTtFaEJpaEVGO0FBQ0Y7QWdCL2dFRTtFQUNFO0FoQmloRUo7QWdCOWdFRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FoQmdoRUo7O0FnQjdnRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQmdoRUY7QWdCOWdFRTtFQUNFO0VBQ0E7QWhCZ2hFSjs7QWdCN2dFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCZ2hFRjtBZ0I5Z0VFO0VBYkY7SUFjSTtJQUNBO0VoQmloRUY7QUFDRjtBZ0IvZ0VFO0VBQ0U7RUFDQTtBaEJpaEVKOztBaUJubEVBO0VBQ0U7RUFDQTtBakJzbEVGOztBaUJwbEVBO0VBQ0U7QWpCdWxFRjs7QWlCbGxFRTs7O0VBQ0U7QWpCdWxFSjs7QWlCbmxFRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FqQnNsRUo7O0FpQm5sRUE7RUFDRTtFQUNBO0FqQnNsRUY7O0FpQnBsRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCdWxFRjs7QWlCcGxFQTtFQUNFO0FqQnVsRUY7QWlCcmxFRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCdWxFSjtBaUJ0bEVJO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCd2xFTjtBaUJybEVFO0VBQ0U7QWpCdWxFSjtBaUJybEVFO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJzbEVKO0FpQnJsRUk7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJ1bEVOOztBaUJsbEVBO0VBQ0U7QWpCcWxFRjtBaUJwbEVFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQnNsRUo7O0FpQm5sRUE7RUFDRTtBakJzbEVGOztBaUJwbEVBO0VBQ0U7QWpCdWxFRjs7QWlCcGxFRTtFQUNFO0FqQnVsRUo7QWlCcmxFRTtFQUNFO0VBQ0E7QWpCdWxFSjs7QWlCcGxFQTtFQUNFO0FqQnVsRUY7O0FpQnJsRUE7RUFDRTtFQUNBO0FqQndsRUY7O0FpQnBsRUU7RUFDRTtBakJ1bEVKOztBaUJwbEVBO0VBQ0U7RUFDQTtBakJ1bEVGOztBa0J0dEVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEJ5dEVGOztBbUI5dEVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQml1RUY7O0FtQjl0RUU7RUFDRTtBbkJpdUVKOztBbUI3dEVFO0VBQ0U7QW5CZ3VFSjs7QW1CNXRFQTtFQUNFO0VBQ0E7RUFDQTtBbkIrdEVGOztBbUJsdUVBO0VBQ0U7RUFDQTtFQUNBO0FuQit0RUY7O0FtQjV0RUE7RUFDRTtBbkIrdEVGOztBbUI1dEVBO0VBQ0U7QW5CK3RFRjs7QW1CN3RFQTtFQUNFO0FuQmd1RUY7O0FtQjl0RUE7RUFDRTtFQUNBO0FuQml1RUY7O0FtQjl0RUE7RUFDRTtFQUNBO0FuQml1RUY7O0FtQi90RUE7RUFDRTtFQUNBO0VBQ0E7QW5Ca3VFRjs7QW1CL3RFQTtFQUNFO0VBQ0E7QW5Ca3VFRjs7QW1CL3RFQTtFQUNFO0FuQmt1RUY7O0FtQi90RUE7RUFDRTtBbkJrdUVGOztBbUIvdEVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QW5Ca3VFRjs7QW1CL3RFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FuQmt1RUY7O0FtQi90RUE7RUFDRTtFQUNBO0VBQ0E7QW5Ca3VFRjs7QW1CL3RFQTtFQUNFO0VBQ0E7QW5Ca3VFRjs7QW1CL3RFQTtFQUNFO0VBQ0E7RUFDQTtBbkJrdUVGOztBbUJodUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkJtdUVGOztBbUJodUVBO0VBQ0U7RUFDQTtBbkJtdUVGOztBbUJodUVBO0VBQ0U7QW5CbXVFRjs7QW1CaHVFQTtFQUNFO0FuQm11RUY7O0FtQmh1RUE7RUFDRTtBbkJtdUVGOztBbUJodUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QW5CbXVFRjs7QW1CL3RFRTtFQUFBO0VBQUE7RUFDQTtFQUNBO0FBRkE7O0FBS0E7RUFBQTtFQUFBO0VBQ0E7QUFEQTs7QUFJQTtFQUFBO0VBQUE7RUFDQTtBQURBOztBbkJ2R0Y7RUFDRTtFQUNBO0VBQ0E7QUFnMUVGOztBSnQzRUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQSx1QndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEsbUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLG1Cd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSxzQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEsaUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLHFCd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSwrQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUE7Q3dCQUE7O0F4QkFBO0VBQUE7Q3dCQUE7O0F4QkFBO0VBQUEsdUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLHVCd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSxtQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEsbUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLG1Cd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSxtQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEsbUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLHFCd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSxxQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEsZ0N3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLHFCd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSxxQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEscUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBO0N3QkFBOztBeEJBQTtFQUFBO0N3QkFBOztBeEJBQTtFQUFBLHNCd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSxxQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUE7Q3dCQUE7O0F4QkFBOztFQUFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUEsb0J3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBLHdCd0JBQTtJeEJBQSwrRHdCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEsZ0N3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLCtCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQSxxQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEsb0J3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLGtCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSxvQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEsbUJ3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLG9Cd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSxzQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEsc0J3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLHFCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSxxQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUEsa0J3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBLGdCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSxtQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7Q0FBQTs7QXhCQUE7O0VBQUE7SUFBQSxnQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUEsNkJ3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLDRCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQSxxQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUEsbUJ3QkFBO0l4QkFBO0d3QkFBO0NBQUE7O0F4QkFBOztFQUFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUEsa0J3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLHFCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTtDQUFBOztBeEJBQTs7RUFBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBLGtCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQSxxQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEsa0J3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLHFCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSxzQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEsbUJ3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLHFCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTtDQUFBOztBeEJBQTs7RUFBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBO0NBQUE7O0F4QkFBOztFQUFBO0lBQUE7R3dCQUE7Q0FBQTs7QXhCQUE7RUFBQSxtQndCQUE7RXhCQUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdGFpbHdpbmRjc3MvYmFzZS5jc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3RhaWx3aW5kY3NzL2NvbXBvbmVudHMuY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy90YWlsd2luZGNzcy91dGlsaXRpZXMuY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9hYnN0cmFjdHMvX3ZhcmlhYmxlcy5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9hcHAuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvbGF5b3V0cy9faGVhZGVyLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2xheW91dHMvX21haW4uc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvbGF5b3V0cy9fZm9vdGVyLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2xheW91dHMvX2FjdGl2aXR5LnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2xheW91dHMvX3NldHRpbmdfcGFnZS5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9sYXlvdXRzL193ZWJwb3J0YWxwYWdlcy5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9iYXNlL190eXBvZ3JhcGh5LnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudC9fYnV0dG9uLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudC9faGFtYnVyZ2VyLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudC9faW5wdXQuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50L190YWJsZS5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnQvX2Zvcm1zLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudC9fcGFnaW5hdGlvbi5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnQvX292ZXJsYXkuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50L19zZWxlY3QyLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudC9fc2lkZWJhci1pY29uLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL3ZlbmRvci1vdmVycmlkZXMvbXVsdGlzZWxlY3Quc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvdmVuZG9yLW92ZXJyaWRlcy9femVuZGV4LnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL3ZlbmRvci1vdmVycmlkZXMvX3Z1ZS1kYXRlcGlja2VyLnNjc3MiLCJ3ZWJwYWNrOi8vLzxubyBzb3VyY2U+Il0sInNvdXJjZXNDb250ZW50IjpbIkB0YWlsd2luZCBiYXNlO1xuIiwiQHRhaWx3aW5kIGNvbXBvbmVudHM7XG4iLCJAdGFpbHdpbmQgdXRpbGl0aWVzO1xuIiwiOnJvb3Qge1xuICAtLWJsYWNrOiAwLCAwLCAwO1xuICAtLXdoaXRlOiAyNTUsIDI1NSwgMjU1O1xuICAtLXRyYW5zcGFyZW50OiB0cmFuc3BhcmVudDtcblxuICAvLyBOZXV0cmFsc1xuICAtLW4tMDogMjU1LCAyNTUsIDI1NTtcbiAgLS1uLTEwOiAyNDEsIDI0NywgMjQ5O1xuICAtLW4tMjA6IDIxMywgMjIwLCAyMjI7XG4gIC0tbi0zMDogMTY2LCAxODEsIDE4NjtcbiAgLS1uLTQwOiAxMDQsIDEyMSwgMTI2O1xuICAtLW4tNTA6IDQyLCA0NywgNDg7XG5cbiAgLy8gUHJpbWFyeSBjb2xvcnNcbiAgLS10dXJxdW9pc2U6IDYsIDIxOSwgMjI4O1xuICAtLWJsdWVjb3JhbDogMjEsIDgzLCAxMDI7XG5cbiAgLS1ibHVlY29yYWwtNDA6IDYwLCAxMTIsIDEyODtcbiAgLS1ibHVlY29yYWwtNTA6IDIxLCA4MywgMTAyO1xuXG4gIC8vIFNlY29uZGFyeSBjb2xvcnNcbiAgLy8gQ2FtZWxcbiAgLS1jYW1lbC0xMDogMjUyLCAyMzksIDIyODtcbiAgLS1jYW1lbC0yMDogMjQ5LCAyMTksIDE5MztcbiAgLS1jYW1lbC0zMDogMjQ4LCAyMDcsIDE3MztcbiAgLS1jYW1lbC00MDogMjQ2LCAxOTUsIDE1MjtcbiAgLS1jYW1lbC01MDogMjQ0LCAxODMsIDEzMjtcbiAgLy8gVGVhbFxuICAtLXRlYWwtMTA6IDIzMSwgMjQzLCAyNDE7XG4gIC0tdGVhbC0yMDogMjE1LCAyMzUsIDIzMjtcbiAgLS10ZWFsLTMwOiAxOTUsIDIyNCwgMjIwO1xuICAtLXRlYWwtNDA6IDE3NSwgMjE0LCAyMDk7XG4gIC0tdGVhbC01MDogMTM1LCAxOTQsIDE4NjtcbiAgLy8gU3ByaW5nXG4gIC0tc3ByaW5nLTEwOiAxNzgsIDIyMSwgMjExO1xuICAtLXNwcmluZy0yMDogMTM5LCAyMDQsIDE4OTtcbiAgLS1zcHJpbmctMzA6IDEwMCwgMTg3LCAxNjc7XG4gIC0tc3ByaW5nLTQwOiA2MiwgMTcwLCAxNDU7XG4gIC0tc3ByaW5nLTUwOiAyMywgMTUzLCAxMjM7XG4gIC8vIExhZ29vblxuICAtLWxhZ29vbi0xMDogMjA5LCAyMzgsIDI0MDtcbiAgLS1sYWdvb24tMjA6IDE3OCwgMjI3LCAyMjk7XG4gIC0tbGFnb29uLTMwOiAxMzksIDIxMywgMjE2O1xuICAtLWxhZ29vbi00MDogMTAxLCAyMDAsIDIwNDtcbiAgLS1sYWdvb24tNTA6IDI0LCAxNzIsIDE3ODtcbiAgLy8gU2FsbW9uXG4gIC0tc2FsbW9uLTEwOiAyNTUsIDIyNywgMjI0O1xuICAtLXNhbG1vbi0yMDogMjU1LCAyMDgsIDIwMztcbiAgLS1zYWxtb24tMzA6IDI1NSwgMTg0LCAxNzc7XG4gIC0tc2FsbW9uLTQwOiAyNTUsIDE2MSwgMTUyO1xuICAtLXNhbG1vbi01MDogMjU1LCAxMTQsIDEwMDtcbiAgLy8gTGF2ZW5kZXJcbiAgLS1sYXZlbmRlci0xMDogMjM3LCAyMjYsIDI1MTtcbiAgLS1sYXZlbmRlci0yMDogMjI1LCAyMDcsIDI0ODtcbiAgLS1sYXZlbmRlci0zMDogMjEwLCAxODIsIDI0NDtcbiAgLS1sYXZlbmRlci00MDogMTk2LCAxNTgsIDI0MDtcbiAgLS1sYXZlbmRlci01MDogMTY2LCAxMTAsIDIzMztcbiAgLS1sYXZlbmRlci02MDogMjQ2LCAyNDAsIDI1NTtcbiAgLy8gQ3JpbXNvblxuICAtLWNyaW1zb24tMTA6IDI1NSwgMjQ4LCAyNDc7XG4gIC0tY3JpbXNvbi0yMDogMjUwLCAyMTMsIDIxNTtcbiAgLS1jcmltc29uLTMwOiAyNDEsIDE1NSwgMTYwO1xuICAtLWNyaW1zb24tNDA6IDIyNywgNzcsIDkxO1xuICAtLWNyaW1zb24tNTA6IDIwOSwgMCwgMzA7XG5cbiAgLy8gUGFzdGVsIGNvbG9yc1xuICAtLWVnZ3NoZWxsOiAyNTUsIDI1MywgMjMxO1xuICAtLW1pbnQ6IDIzOCwgMjQ5LCAyNDU7XG4gIC0tcm9zZTogMjU1LCAyNDEsIDI0MDtcbiAgLS1wYXBlcjogMjQ2LCAyNDcsIDI1Mjtcbn1cbiIsIi8vdGFpbHdpbmRcbkBpbXBvcnQgJ350YWlsd2luZGNzcy9iYXNlJztcbkBpbXBvcnQgJ350YWlsd2luZGNzcy9jb21wb25lbnRzJztcbkBpbXBvcnQgJ350YWlsd2luZGNzcy91dGlsaXRpZXMnO1xuXG4vLyBBYnN0cmFjdHNcbkBpbXBvcnQgJ2Fic3RyYWN0cy92YXJpYWJsZXMnO1xuXG4vLyBsYXlvdXRzXG5AaW1wb3J0ICdsYXlvdXRzL2hlYWRlcic7XG5AaW1wb3J0ICdsYXlvdXRzL21haW4nO1xuQGltcG9ydCAnbGF5b3V0cy9mb290ZXInO1xuQGltcG9ydCAnbGF5b3V0cy9hY3Rpdml0eSc7XG5AaW1wb3J0ICdsYXlvdXRzL3NldHRpbmdfcGFnZSc7XG5AaW1wb3J0ICdsYXlvdXRzL193ZWJwb3J0YWxwYWdlcyc7XG5cbi8vIGJhc2VcbkBpbXBvcnQgJ2Jhc2UvdHlwb2dyYXBoeSc7XG5cbi8vIGNvbXBvbmVudFxuQGltcG9ydCAnY29tcG9uZW50L2J1dHRvbic7XG5AaW1wb3J0ICdjb21wb25lbnQvaGFtYnVyZ2VyJztcbkBpbXBvcnQgJ2NvbXBvbmVudC9pbnB1dCc7XG5AaW1wb3J0ICdjb21wb25lbnQvdGFibGUnO1xuQGltcG9ydCAnY29tcG9uZW50L2Zvcm1zJztcbkBpbXBvcnQgJ2NvbXBvbmVudC9wYWdpbmF0aW9uJztcbkBpbXBvcnQgJ2NvbXBvbmVudC9vdmVybGF5JztcbkBpbXBvcnQgJ2NvbXBvbmVudC9zZWxlY3QyJztcbkBpbXBvcnQgJ2NvbXBvbmVudC9zaWRlYmFyLWljb24nO1xuXG4vL3ZlbmRvciBvdmVycmlkZXNcbkBpbXBvcnQgJ3ZlbmRvci1vdmVycmlkZXMvbXVsdGlzZWxlY3QnO1xuQGltcG9ydCAndmVuZG9yLW92ZXJyaWRlcy96ZW5kZXgnO1xuQGltcG9ydCAndmVuZG9yLW92ZXJyaWRlcy9fdnVlLWRhdGVwaWNrZXInO1xuXG5odG1sIHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgb3BhY2l0eTogMTtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4iLCJAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xuICAud3JhcHBlcjo6YWZ0ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAyOTJweDtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy9pbWFnZXMvbWFycXVlLXdoaXRlLnBuZycpO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJSAxNi41JTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDcwJTtcbiAgICBvcGFjaXR5OiAwLjM7XG4gICAgY29udGVudDogJyc7XG4gIH1cbn1cbi5oZWFkZXIge1xuICBtYXgtd2lkdGg6IDE0MDBweDtcbiAgbWFyZ2luOiBhdXRvO1xufVxuLm5hdl9fYWN0aXZlOjphZnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA0cHg7XG4gIEBhcHBseSBiZy10dXJxdW9pc2U7XG4gIGNvbnRlbnQ6ICcnO1xufVxuLmxpbmtzX19hY3RpdmUge1xuICBAYXBwbHkgdGV4dC1ibGFjaztcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG4ubmF2X19saW5rcyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZzogMjBweCA4cHg7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICBkaXNwbGF5OiBibG9jaztcblxuICBhOmhvdmVyIHtcbiAgICBAYXBwbHkgdGV4dC1uLTUwO1xuICB9XG5cbiAgLnJlYWRfX21vcmUge1xuICAgIEBhcHBseSByb3VuZGVkLXNtIGJnLWJsdWVjb3JhbCB0ZXh0LWNlbnRlciB0ZXh0LXhzIHRleHQtd2hpdGU7XG4gICAgd2lkdGg6IGZpdC1jb250ZW50O1xuICAgIHBhZGRpbmc6IDhweCAxOHB4O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBAYXBwbHkgYmctbi01MCB0ZXh0LXdoaXRlO1xuICAgIH1cbiAgfVxuXG4gIGEge1xuICAgIEBhcHBseSB0ZXh0LXdoaXRlO1xuICAgIHBhZGRpbmctYm90dG9tOiAyNHB4O1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxNDE1cHgpIHtcbiAgLm5hdl9fbGlua3Mge1xuICAgIHBhZGRpbmc6IDBweCA4cHggMjBweDtcblxuICAgIGEge1xuICAgICAgQGFwcGx5IHRleHQtbi01MDtcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBib3R0b206IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDRweDtcbiAgICAgIEBhcHBseSBiZy10dXJxdW9pc2U7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDAsIDEpO1xuICAgICAgdHJhbnNpdGlvbjogMC4zcztcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgIH1cbiAgICAmOmhvdmVyOjphZnRlciB7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIDEpO1xuICAgIH1cbiAgfVxufVxuLmRyb3Bkb3duX19jb250ZW50IHtcbiAgQGFwcGx5IGludmlzaWJsZSBhYnNvbHV0ZSByaWdodC0wIHRvcC03IGhpZGRlbiBoLTU2IGJnLXdoaXRlIHB5LTcgcHgtOCBvcGFjaXR5LTAgZHVyYXRpb24tMzAwIDF4bDpibG9jaztcbiAgd2lkdGg6IDQyNHB4O1xuICBoZWlnaHQ6IGF1dG87XG4gIGxpbmUtaGVpZ2h0OiAyMnB4O1xuICBib3gtc2hhZG93OiAwcHggOHB4IDE2cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cbi5kcm9wZG93bjpob3ZlciB7XG4gIC5kcm9wZG93bl9fY29udGVudCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEycHgpO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuLm5hdl9fbGlzdCB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0MTVweCkge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogc3RhcnQ7XG4gICAgd2lkdGg6IDMwMHB4O1xuICAgIGhlaWdodDogMTAwdmg7XG4gICAgcGFkZGluZzogNjVweCAzMHB4O1xuXG4gICAgQGFwcGx5IGJnLWJsdWVjb3JhbCB0ZXh0LXdoaXRlO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDUlKTtcbiAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICAgIHotaW5kZXg6IDExMDtcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KC0wcHggMHB4IDhweCAjMDAwKTtcblxuICAgIC5hY3RpdmUge1xuICAgICAgYSB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXdoaXRlO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHBhZGRpbmc6IDAgMCAyNHB4IDZweDtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICBAYXBwbHkgdGV4dC13aGl0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgdG9wOiAtNHB4O1xuICAgICAgICAgIGxlZnQ6IC02cHg7XG4gICAgICAgICAgd2lkdGg6IDRweDtcbiAgICAgICAgICBoZWlnaHQ6IDYwJTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIDApO1xuICAgICAgICAgIHRyYW5zaXRpb246IDAuM3M7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMTAwcHg7XG4gICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgQGFwcGx5IGJnLXR1cnF1b2lzZTtcbiAgICAgICAgfVxuICAgICAgICAmOmhvdmVyOjphZnRlciB7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ0MHB4KSB7XG4gICAgd2lkdGg6IDI1MHB4O1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICB9XG59XG5cbiNtZW51LW92ZXJsYXkge1xuICBAYXBwbHkgMXhsOmhpZGRlbjtcbn1cblxuI2FjdGl2aXR5LW1lbnUtb3ZlcmxheSB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDE0MjBweCkge1xuICAgIEBhcHBseSBoaWRkZW47XG4gIH1cbn1cblxuLm1lbnUtb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50O1xuICB6LWluZGV4OiAxMDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xufVxuLmFjdGl2aXR5LW5hdi1tZW51IHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTQyMHB4KSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAzMDBweDtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIHBhZGRpbmc6IDEwMHB4IDMwcHg7XG4gICAgQGFwcGx5IGJnLWJsdWVjb3JhbCB0ZXh0LXdoaXRlO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDUlKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoN3B4KTtcbiAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICAgIHotaW5kZXg6IDEwMDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDBweCA4cHggIzAwMCk7XG5cbiAgICAuYWN0aXZpdHktbmF2LWxpc3Qge1xuICAgICAgQGFwcGx5IGZsZXggZmxleC1jb2wgZ2FwLXktNCBwbC00IHRleHQtc207XG4gICAgICAubmF2X19wb2ludGVyLFxuICAgICAgLm5hdl9fcG9pbnRlci1ob3ZlciB7XG4gICAgICAgIEBhcHBseSByZWxhdGl2ZTtcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgQGFwcGx5IGFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCBoLTEgdy1mdWxsIHNjYWxlLXgtMCBzY2FsZS15LTEwMCByb3VuZGVkLXNtIGJnLXR1cnF1b2lzZSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDA7XG5cbiAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxNDIwcHgpIHtcbiAgICAgICAgICAgIEBhcHBseSAtYm90dG9tLTIgIGgtMSB3LWZ1bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlcjphZnRlciB7XG4gICAgICAgICAgQGFwcGx5IHNjYWxlLXgtMTAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAubmF2X19wb2ludGVyOmFmdGVyIHtcbiAgICAgICAgQGFwcGx5IHNjYWxlLXgtMTAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5hY3Rpdml0eS1uYXYtbGlzdC5hY3Rpdml0eS1saXN0IHtcbiAgICAgIC5uYXZfX3BvaW50ZXIsXG4gICAgICAubmF2X19wb2ludGVyLWhvdmVyIHtcbiAgICAgICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiAnJztcblxuICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0MjBweCkge1xuICAgICAgICAgICAgQGFwcGx5IHRvcC0wIC1sZWZ0LTQgaC00IHctMTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyOmFmdGVyIHtcbiAgICAgICAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5uYXZfX3BvaW50ZXI6YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gICAgICB9XG4gICAgfVxuICAgIC5hY3Rpdml0eS1uYXYtbGlzdC5sYW5ndWFnZS1uYXYtbGlzdCB7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAyOHB4O1xuICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNCk7XG5cbiAgICAgIC5uYXZfX3BvaW50ZXIsXG4gICAgICAubmF2X19wb2ludGVyLWhvdmVyIHtcbiAgICAgICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBAYXBwbHkgYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIGgtMSB3LWZ1bGwgc2NhbGUteC0wIHNjYWxlLXktMTAwIHJvdW5kZWQtc20gYmctdHVycXVvaXNlIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMDtcblxuICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0MjBweCkge1xuICAgICAgICAgICAgQGFwcGx5IC1ib3R0b20tMiAgaC0xIHctZnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyOmFmdGVyIHtcbiAgICAgICAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5uYXZfX3BvaW50ZXI6YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4ubmF2LWFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG59XG5cbi5uYXYge1xuICAmX19wb2ludGVyLFxuICAmX19wb2ludGVyLWhvdmVyIHtcbiAgICBAYXBwbHkgcmVsYXRpdmU7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIEBhcHBseSBhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTAgaC0xIHctZnVsbCBzY2FsZS14LTAgc2NhbGUteS0xMDAgcm91bmRlZC1zbSBiZy10dXJxdW9pc2UgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwO1xuXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxNDIwcHgpIHtcbiAgICAgICAgQGFwcGx5IC1sZWZ0LTQgaC00IHctMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyOmFmdGVyIHtcbiAgICAgIEBhcHBseSBzY2FsZS14LTEwMDtcbiAgICB9XG4gIH1cblxuICAmX19wb2ludGVyOmFmdGVyIHtcbiAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gIH1cbn1cblxuLmFjdGl2aXR5LW5hdiB7XG4gIEBhcHBseSBmbGV4IGdyb3c7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTQyMHB4KSB7XG4gICAgQGFwcGx5IGp1c3RpZnktZW5kO1xuICB9XG59XG5cbi5sYW5ndWFnZS1ob3Zlcjpob3ZlciB7XG4gIEBhcHBseSBuYXZfX2FjdGl2ZSBsaW5rc19fYWN0aXZlO1xuICBhIHtcbiAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbiAgfVxufVxuLndlYi1oZWFkZXIge1xuICAubGFuZ3VhZ2UtaG92ZXI6aG92ZXIge1xuICAgIGEge1xuICAgICAgY29sb3I6ICMyYTJmMzAgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTQxNXB4KSB7XG4gIC53ZWItaGVhZGVyIHtcbiAgICAubmF2X19saW5rcyB7XG4gICAgICBwYWRkaW5nOiA4cHg7XG4gICAgICBmb250LXNpemU6IDEycHg7XG4gICAgfVxuICB9XG59XG4iLCIubWFpbiB7XG4gICZfX2NvbnRhaW5lciB7XG4gICAgbWF4LXdpZHRoOiAxMTY2cHg7XG4gICAgbWFyZ2luOiBhdXRvO1xuICB9XG4gIC5sZWZ0X19jb250YWluZXIge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChcbiAgICAgIDE2MGRlZyxcbiAgICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSxcbiAgICAgIHRyYW5zcGFyZW50XG4gICAgKTtcblxuICAgIGEge1xuICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci1iLTIgYm9yZGVyLXR1cnF1b2lzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLnJpZ2h0IHtcbiAgICB3aWR0aDogOTMlO1xuICAgIGJveC1zaGFkb3c6IDBweCAyMHB4IDQwcHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuXG4gICAgJl9fY29udGFpbmVyIHtcbiAgICAgIGgyIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDYwcHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fY29udGVudCB7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgIGJveC1zaGFkb3c6IDBweCAwcHggMjVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgICAgQGFwcGx5IGZsZXggaXRlbXMtY2VudGVyIHJvdW5kZWQtbGcgYmctd2hpdGUgcHktNiBweC01O1xuXG4gICAgICAucmlnaHRfX2ljb24ge1xuICAgICAgICBAYXBwbHkgdGV4dC1sYWdvb24tNTA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IC04cHg7XG4gICAgICB9XG4gICAgICAucmlnaHRfX2Fycm93IHtcbiAgICAgICAgQGFwcGx5IHRleHQtd2hpdGU7XG4gICAgICB9XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItdHVycXVvaXNlIGJnLXR1cnF1b2lzZSBiZy1vcGFjaXR5LTEwO1xuICAgICAgICBib3gtc2hhZG93OiAwcHggMHB4IDI1cHggMHB4IHRyYW5zcGFyZW50O1xuXG4gICAgICAgIC5yaWdodF9faWNvbiB7XG4gICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIEBhcHBseSBmaWxsLWxhZ29vbi01MCB0ZXh0LXdoaXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAucmlnaHRfX2Fycm93IHtcbiAgICAgICAgICBAYXBwbHkgZmlsbC13aGl0ZSB0ZXh0LXR1cnF1b2lzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMzY2cHgpIHtcbiAgICAuam9pbi1ub3cge1xuICAgICAgQGFwcGx5IHB4LTIwO1xuXG4gICAgICAucmlnaHRfX2NvbnRlbnQge1xuICAgICAgICB3aWR0aDogNDIzcHg7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xuICBpbnB1dCB7XG4gICAgcGFkZGluZy1sZWZ0OiA2MHB4O1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLmxlZnQge1xuICAgIGhlaWdodDogNjQ5cHg7XG5cbiAgICAmX19jb250YWluZXIge1xuICAgICAgd2lkdGg6IDM4NnB4O1xuICAgIH1cbiAgfVxuICAucmlnaHQge1xuICAgIGhlaWdodDogNjQ5cHg7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5yaWdodCB7XG4gICAgbWFyZ2luLXRvcDogLTI2NXB4O1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0MjBweCkge1xuICAucmlnaHRfX2ljb24ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgLmRldGFpbHMge1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgd2lkdGg6IDhweDtcbiAgaGVpZ2h0OiA4cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgQGFwcGx5IHJvdW5kZWQtbGcgYmctbi0yMCBob3ZlcjpiZy1uLTMwO1xufVxubWFpbiB7XG4gIGRpc3BsYXk6IGdyaWQ7IC8vIExpbmUgMVxuICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gMWZyIGF1dG87IC8vIExpbmUgMlxuICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gNDY1cHgpOyAvLyBMaW5lIDNcbn1cbi5hY3Rpdml0aWVzX19zaWRlYmFyIHtcbiAgZmxleC1zaHJpbms6IDA7XG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3MDBweCkge1xuICAgIHdpZHRoOiAyMjBweCAhaW1wb3J0YW50O1xuICB9XG59XG5ib2R5LmRpc2FibGUtc2Nyb2xsIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgaGVpZ2h0OiAxMHB4O1xufVxuLy8gYm9keSB7XG4vLyAgIHBhZGRpbmctdG9wOiA2MHB4O1xuLy8gfVxuXG4vLyBib2R5Lm5vLW5hdiB7XG4vLyAgIHBhZGRpbmctdG9wOiAwcHggIWltcG9ydGFudDtcbi8vIH1cbmh0bWwge1xuICBzY3JvbGwtcGFkZGluZy10b3A6IDIwcHg7IC8qIGhlaWdodCBvZiBzdGlja3kgaGVhZGVyICovXG59XG4iLCIuZm9vdGVyX19jb250YWluZXIge1xuICBtYXgtd2lkdGg6IDExNjZweDtcbiAgbWFyZ2luOiBhdXRvO1xuXG4gIC5mb290ZXJfX2xpbmtzIHtcbiAgICBhIHtcbiAgICAgIEBhcHBseSBib3JkZXItYi0yIGJvcmRlci10cmFuc3BhcmVudCB0ZXh0LW4tMjA7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBAYXBwbHkgYm9yZGVyLWItMiBib3JkZXItdHVycXVvaXNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLmVsbGlwc2lzIHtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIC13ZWJraXQtbGluZS1jbGFtcDogMztcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbn1cbi5lbGxpcHNpc19fdGl0bGUge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICBAYXBwbHkgcmVsYXRpdmU7XG59XG5cbi5lbGxpcHNpc19fdGl0bGUtLWhvdmVyIHtcbiAgQGFwcGx5IGludmlzaWJsZSBhYnNvbHV0ZSAgIGxlZnQtMCB0b3AtZnVsbCB6LTIwIG1heC13LW1kIHNwYWNlLXktMS41IHJvdW5kZWQgYmctZWdnc2hlbGwgcC00IHRleHQtbGVmdCB0ZXh0LXhzIGZvbnQtbm9ybWFsIHRleHQtbi00MCBvcGFjaXR5LTAgZHVyYXRpb24tMjAwO1xuICBib3gtc2hhZG93OiAwcHggNHB4IDQwcHggcmdiKDAgMCAwIC8gMTAlKTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQ7XG4gIG1heC1oZWlnaHQ6IDEyMHB4O1xuICBvdmVyZmxvdzogYXV0bztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5lbGxpcHNpczpob3Zlcixcbi5lbGxpcHNpc19fdGl0bGU6aG92ZXIsXG4uYnJlYWRjcnVtYl9fdGl0bGU6aG92ZXIge1xuICAuZWxsaXBzaXNfX3RpdGxlLS1ob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDVweCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5AbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gIHRyIHtcbiAgICAuZWxsaXBzaXNfX3RpdGxlLS1ob3ZlciB7XG4gICAgICBAYXBwbHkgaW52aXNpYmxlIGFic29sdXRlIGxlZnQtMS8yICAtdG9wLTIgei0yMCBtYXgtdy1tZCBzcGFjZS15LTEuNSByb3VuZGVkIGJnLWVnZ3NoZWxsIHAtNCB0ZXh0LWxlZnQgdGV4dC14cyBmb250LW5vcm1hbCB0ZXh0LW4tNDAgb3BhY2l0eS0wICBkdXJhdGlvbi0yMDAgbGc6bGVmdC0wIGxnOnRvcC1mdWxsO1xuICAgICAgYm94LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYigwIDAgMCAvIDEwJSk7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dDtcbiAgICAgIG1heC1oZWlnaHQ6IDEyMHB4O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIH1cblxuICAgIC5lbGxpcHNpczpob3ZlcixcbiAgICAuZWxsaXBzaXNfX3RpdGxlOmhvdmVyIHtcbiAgICAgIC5lbGxpcHNpc19fdGl0bGUtLWhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDVweCk7XG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4uYnJlYWRjcnVtYl9fdGl0bGUge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAxO1xuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICBAYXBwbHkgcmVsYXRpdmU7XG59XG5cbi8vIGFjdGl2aXR5IGRldGFpbFxuLmFjdGl2aXRpZXNfX2NvbnRlbnQtLWVsZW1lbnQge1xuICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICBtYXgtd2lkdGg6IGNhbGMoMTAwdncgLSAzMHB4KTtcbiAgfVxuICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAuYWRkX2luZGljYXRvciB7XG4gICAgICBtYXgtd2lkdGg6IDQwMHB4O1xuICAgIH1cbiAgfVxufVxuXG4uYWN0aXZpdGllc19fY29udGVudC0tZWxlbWVudCBkaXYge1xuICAuZWRpdC1idXR0b24sXG4gIC5kZWxldGUtYnV0dG9uIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlO1xuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgIC8vIG91dGxpbmU6IDFweCBzb2xpZCByZWQgIWltcG9ydGFudDtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5cbiAgLmVkaXQtYnV0dG9uIHtcbiAgICBvcmRlcjogMjtcbiAgfVxuXG4gIC5kZWxldGUtYnV0dG9uIHtcbiAgICBvcmRlcjogMTtcbiAgfVxuXG4gICY6aG92ZXIgLmVkaXQtYnV0dG9uLFxuICAmOmhvdmVyIC5kZWxldGUtYnV0dG9uIHtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAuZWxlbWVudHMtc3ZnIHtcbiAgICBAYXBwbHkgbXItMS41IHRleHQteGwgdGV4dC1ibHVlY29yYWw7XG4gIH1cbn1cbi5kZXNjcmlwdGlvbiB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDUwMHB4O1xufVxuXG4uZWxlbWVudHMtZGV0YWlsIHtcbiAgQGFwcGx5IGZsZXggZmxleC1jb2wgdGV4dC14cyB0ZXh0LW4tNTA7XG5cbiAgLy8gdGFibGUge1xuICAvLyAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcblxuICAvLyB9XG5cbiAgJiAqIHtcbiAgICBAYXBwbHkgbGVhZGluZy01O1xuICB9XG5cbiAgdGQ6bnRoLWNoaWxkKDEpIHtcbiAgICBAYXBwbHkgdGV4dC1uLTQwO1xuICAgIHdpZHRoOiAxMDBweDtcbiAgfVxuICAmLndpZGVyOm5vdCguc21hbGwpIHtcbiAgICB0ZDpudGgtY2hpbGQoMSkge1xuICAgICAgQGFwcGx5IHRleHQtbi00MDtcbiAgICAgIHdpZHRoOiAxOTBweDtcbiAgICB9XG4gIH1cblxuICB0ZDpudGgtY2hpbGQoMikge1xuICAgIEBhcHBseSBmbGV4IGZsZXgtY29sIHBsLTIgdGV4dC14cyB0ZXh0LW4tNTA7XG4gIH1cbiAgLm11bHRpbGluZSB7XG4gICAgQGFwcGx5IGl0ZW1zLXN0YXJ0O1xuICB9XG5cbiAgdGQge1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIH1cblxuICB0YWJsZSA+IHRib2R5ID4gdHI6bm90KDpsYXN0LWNoaWxkKSA+IHRkIHtcbiAgICBAYXBwbHkgcGItMztcbiAgfVxufVxuLnZhbHVlIHtcbiAgQGFwcGx5IGZsZXggc3BhY2UteC0xIHRleHQtbi01MDtcbn1cbi5jYXRlZ29yeSB7XG4gIEBhcHBseSBtYi0yIHRleHQtc20gZm9udC1ib2xkIHRleHQtbi01MDtcbn1cbi5sYW5ndWFnZSB7XG4gIEBhcHBseSB3LVszMDBweF0gdGV4dC14cyBpdGFsaWMgdGV4dC1uLTMwICBzbTp3LWF1dG87XG59XG4uZGVzY3JpcHRpb24tY29udGVudCB7XG4gIEBhcHBseSB3LVszMDBweF0gc206dy1hdXRvO1xufVxuLnRpdGxlLWJvcmRlcjo6YWZ0ZXIge1xuICB3aWR0aDogOTUwcHg7XG4gIGNvbnRlbnQ6ICcnO1xuICBAYXBwbHkgYWJzb2x1dGUgdG9wLTIgbGVmdC00IGgtcHggYmctbi0zMDtcbn1cbi5lbGVtZW50cy10aXRsZTo6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgQGFwcGx5IGgtcHggZ3JvdyBiZy1uLTMwO1xufVxuLnRvcCB7XG4gIG1hcmdpbi10b3A6IDFweDtcbn1cblxuLm1vZGFsIHtcbiAgcDpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICBtYXJnaW4tYm90dG9tOiAyNHB4O1xuICB9XG59XG5cbi5mcmVlemUge1xuICBjb2xvcjogI2E2YjViYSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6ICNhNmI1YmEgIWltcG9ydGFudDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDtcblxuICAuYWRkX21vcmU6OmFmdGVyIHtcbiAgICBib3JkZXItY29sb3I6ICNhNmI1YmE7XG4gIH1cbiAgLmFkZF9tb3JlOjpiZWZvcmUge1xuICAgIGJvcmRlci1jb2xvcjogI2E2YjViYTtcbiAgfVxuXG4gIGJ1dHRvbiA+IGkge1xuICAgIGJhY2tncm91bmQ6IHVybCgnLi4vLi4vaW1hZ2VzL2FkZC1tb3JlLWdyZXkuc3ZnJykgbm8tcmVwZWF0IGNlbnRlciAhaW1wb3J0YW50O1xuICB9XG5cbiAgLmhlbHAgc3ZnIHBhdGgge1xuICAgIGNvbG9yOiAjYTZiNWJhICFpbXBvcnRhbnQ7XG4gICAgZmlsbDogY3VycmVudENvbG9yO1xuICAgIHN0cm9rZTogY3VycmVudENvbG9yO1xuICB9XG59XG4uZnJlZXplICosXG4qOjpwbGFjZWhvbGRlcixcbi5mcmVlemUgc3ZnIHtcbiAgY29sb3I6ICNhNmI1YmEgIWltcG9ydGFudDtcbiAgYm9yZGVyLWNvbG9yOiAjYTZiNWJhICFpbXBvcnRhbnQ7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5mcmVlemUgKyAuYWRkX3RvX3BhcmVudCB7XG4gIGNvbG9yOiAjYTZiNWJhICFpbXBvcnRhbnQ7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7XG5cbiAgaSB7XG4gICAgYmFja2dyb3VuZDogdXJsKCcuLi8uLi9pbWFnZXMvYWRkLW1vcmUtZ3JleS5zdmcnKSBuby1yZXBlYXQgY2VudGVyO1xuICB9XG59XG5cbi5mcmVlemUgKyAuYWRkX3RvX3BhcmVudDo6YmVmb3JlIHtcbiAgYm9yZGVyLWNvbG9yOiAjYTZiNWJhICFpbXBvcnRhbnQ7XG59XG5cbi5mcmVlemUgKyAuYWRkX3RvX3BhcmVudDo6YWZ0ZXIge1xuICBib3JkZXItY29sb3I6ICNhNmI1YmEgIWltcG9ydGFudDtcbn1cbiIsIi5zZWN0aW9uLXdyYXBwZXIge1xuICBAYXBwbHkgbXgtMyBiZy1wYXBlciBzbTpteC0xMDtcblxuICAuc2V0dGluZyB7XG4gICAgbWF4LXdpZHRoOiAxMDAwcHg7XG4gICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gODBweCk7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIHBhZGRpbmc6IDE2cHggMHB4IDI0cHg7XG5cbiAgICAmX19jb250YWluZXIge1xuICAgICAgQGFwcGx5IHJlbGF0aXZlIHJvdW5kZWQtbGcgYmctd2hpdGUgcC03IG1kOnB5LTE0IG1kOnB4LTIwO1xuICAgICAgbWF4LWhlaWdodDogNjV2aDtcblxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDQwcHgpIHtcbiAgICAgICAgQGFwcGx5IHB4LTM7XG4gICAgICB9XG5cbiAgICAgIC52dWVfX3NlbGVjdCB7XG4gICAgICAgIG1hcmdpbjogOHB4IDBweDtcbiAgICAgIH1cbiAgICAgIC5yZWdpc3RyeV9faW5mbyB7XG4gICAgICAgIEBhcHBseSBteS00IGZsZXgganVzdGlmeS1iZXR3ZWVuIGJvcmRlci1iIGJvcmRlci1iLW4tMjA7XG4gICAgICB9XG4gICAgICBwIHtcbiAgICAgICAgQGFwcGx5IHRleHQteHMgbGVhZGluZy01IHRleHQtbi00MDtcbiAgICAgIH1cbiAgICAgIC50ZXh0IHtcbiAgICAgICAgQGFwcGx5IG1iLTggdGV4dC1zbTtcbiAgICAgIH1cbiAgICAgIGxhYmVsIHtcbiAgICAgICAgQGFwcGx5IHRleHQteHMgdGV4dC1uLTUwO1xuICAgICAgfVxuICAgIH1cbiAgICAucmVnaXN0ZXIge1xuICAgICAgQGFwcGx5IHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1uLTMwIHAtNCBzbTpwLTY7XG5cbiAgICAgICZfX2NvbnRhaW5lciB7XG4gICAgICAgIEBhcHBseSBncmlkIGdhcC0zIHNtOmdhcC02IGxnOmdyaWQtY29scy0yO1xuXG4gICAgICAgIC50YWdfX2NvcnJlY3Qge1xuICAgICAgICAgIEBhcHBseSBhYnNvbHV0ZSByaWdodC0yIHRvcC0xMCBmbGV4IGgtNSBjdXJzb3ItcG9pbnRlciBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZCBiZy1zcHJpbmctNDAgdGV4dC1jZW50ZXIgdGV4dC14cyB0ZXh0LXdoaXRlO1xuICAgICAgICAgIHdpZHRoOiA1MHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnRhZ19faW5jb3JyZWN0IHtcbiAgICAgICAgICBAYXBwbHkgYWJzb2x1dGUgcmlnaHQtMiB0b3AtMTAgZmxleCBoLTUgY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQgYmctc2FsbW9uLTUwIHRleHQtY2VudGVyIHRleHQteHMgdGV4dC13aGl0ZTtcbiAgICAgICAgICB3aWR0aDogNjFweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLnZlcmlmeS1idG4ge1xuICAgICAgICB3aWR0aDogMTIwcHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDE0cHg7XG4gICAgICAgIEBhcHBseSBmbGV4IGgtMTAganVzdGlmeS1jZW50ZXI7XG4gICAgICB9XG4gICAgfVxuICAgIC5yZWdpc3Rlcl9faW5wdXQge1xuICAgICAgQGFwcGx5IG10LTIgdy1mdWxsIGJvcmRlciBib3JkZXItbi0zMCBvdXRsaW5lLW5vbmUgZHVyYXRpb24tMzAwO1xuICAgICAgcGFkZGluZzogMTNweCAxNnB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0NDBweCkge1xuICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXNtIHRleHQtbi00MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgICB9XG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItbi01MCBiZy1uLTEwO1xuICAgICAgfVxuICAgICAgJjpmb2N1czo6cGxhY2Vob2xkZXIge1xuICAgICAgICBAYXBwbHkgdGV4dC1uLTUwO1xuICAgICAgfVxuICAgIH1cbiAgICAuZXJyb3JfX2lucHV0IHtcbiAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLWNyaW1zb24tNTA7XG4gICAgfVxuICB9XG59XG4uc2F2ZS1idG4ge1xuICBAYXBwbHkgcHgtNDtcbn1cbi5idG5fX2FjdGl2ZSB7XG4gIEBhcHBseSBmb250LWJvbGQgdGV4dC13aGl0ZTtcbn1cbiIsIi5zbW9vdGgge1xuICBhbmltYXRpb246IGZhZGVJbkFuaW1hdGlvbiBlYXNlIDAuM3M7XG4gIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDE7XG59XG5cbkBrZXlmcmFtZXMgZmFkZUluQW5pbWF0aW9uIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuIiwiYm9keSB7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgQGFwcGx5IG1pbi1oLXNjcmVlbiBiZy1wYXBlcjtcbn1cblxuYSB7XG4gIGNvbG9yOiByZ2IodmFyKC0tYmx1ZWNvcmFsKSk7XG4gIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7XG5cbiAgJjpob3ZlciB7XG4gICAgY29sb3I6IHJnYih2YXIoLS1zcHJpbmctNTApKTtcbiAgfVxufVxuXG4ubGVmdCB7XG4gICZfX3RpdGxlIHtcbiAgICBmb250LXNpemU6IDI3cHg7XG4gICAgdGV4dC1zaGFkb3c6IDRweCA0cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wMSk7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgICAgIGZvbnQtc2l6ZTogMzJweDtcbiAgICB9XG4gIH1cbn1cblxuaDIge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0NDBweCkge1xuICAgIEBhcHBseSB0ZXh0LWhlYWRpbmctNDtcbiAgfVxuICBAYXBwbHkgdGV4dC1oZWFkaW5nLTUgZm9udC1ib2xkIHRleHQtbi01MCBtZDp0ZXh0LWhlYWRpbmctMztcbn1cblxuaDQge1xuICBAYXBwbHkgdGV4dC1oZWFkaW5nLTQgbGVhZGluZy1ub3JtYWw7XG59XG4iLCIvLyBUdXJxdW9pc2UgYnV0dG9uXG4uYnRuIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgb3V0bGluZTogbm9uZTtcbiAgQGFwcGx5IGJnLXR1cnF1b2lzZSB0ZXh0LW4tNTA7XG5cbiAgJjpob3ZlciB7XG4gICAgQGFwcGx5IGJnLWJsdWVjb3JhbDtcbiAgICBAYXBwbHkgdGV4dC13aGl0ZTtcblxuICAgIHN2ZyB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNHB4KTtcbiAgICAgIHRyYW5zaXRpb246IDAuM3M7XG4gICAgfVxuICB9XG59XG5cbi5idG4tYmFjayB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmb250LXNpemU6IDE0cHg7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogMC4zcztcbiAgQGFwcGx5IHctMjQgdGV4dC1ibHVlY29yYWw7XG5cbiAgc3ZnIHtcbiAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgc3ZnIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNHB4KTtcbiAgICB9XG4gIH1cbn1cblxuLmJ0bi1uZXh0IHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgcGFkZGluZzogMTNweCAyNHB4O1xuICB9XG4gIEBhcHBseSB3LTM2IHB5LTIuNSB0ZXh0LW4tNTAgc206dy00MDtcblxuICBzdmcge1xuICAgIG1hcmdpbi1sZWZ0OiAxM3B4O1xuICAgIHRyYW5zaXRpb246IDAuMnM7XG4gIH1cbn1cblxuLmdldC1zdGFydGVkLWJ0biB7XG4gIHdpZHRoOiAxODVweDtcbn1cblxuLnJlc2V0LWJ0biB7XG4gIEBhcHBseSBtdC02IGZsZXgganVzdGlmeS1jZW50ZXIgcm91bmRlZC1sZyBib3JkZXItbm9uZSBiZy10dXJxdW9pc2UgdGV4dC1zbSBmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtbi01MCBvdXRsaW5lLW5vbmUgZHVyYXRpb24tMjAwIGhvdmVyOmJnLWJsdWVjb3JhbCBob3Zlcjp0ZXh0LXdoaXRlO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMTZweCA5NHB4O1xufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xuICAucmVzZXQtYnRuIHtcbiAgICBwYWRkaW5nOiAxOHB4IDk0cHg7XG4gIH1cbn1cblxuc3ZnIHtcbiAgaGVpZ2h0OiAxZW07XG59XG4uY2hhcnQtd3JhcHBlciB7XG4gIHN2ZyB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbi52cnBfX3dyYXBwZXIge1xuICBwIHtcbiAgICBAYXBwbHkgdGV4dC1zbSBsZWFkaW5nLW5vcm1hbDtcbiAgfVxuICBzdmcge1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxufVxuXG4uYnV0dG9uLFxuYnV0dG9uIHtcbiAgQGFwcGx5IGZsZXggY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIHRleHQteHMgbGVhZGluZy1ub3JtYWwgdHJhY2tpbmctdGlnaHQ7XG4gIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7XG59XG5cbi8vIHRvb2x0aXAgYnV0dG9uXG4udG9vbHRpcC1idG4ge1xuICBAYXBwbHkgcmVsYXRpdmUgdGV4dC1uLTMwO1xuXG4gIGJ1dHRvbiB7XG4gICAgQGFwcGx5IHJvdW5kZWQtM3hsIGJvcmRlciBib3JkZXItc29saWQgYm9yZGVyLW4tMzAgcHktMS41IHB4LTIuNTtcbiAgfVxuXG4gIHN2ZyB7XG4gICAgQGFwcGx5IG1yLTEgdGV4dC14cztcbiAgfVxuXG4gICZfX2NvbnRlbnQge1xuICAgIEBhcHBseSBhYnNvbHV0ZSB0b3AtZnVsbCBsZWZ0LTAgaGlkZGVuIHctWzM1MnB4XTtcblxuICAgIC5jb250ZW50IHtcbiAgICAgIEBhcHBseSBtdC02IHJvdW5kZWQgYmctZWdnc2hlbGwgdGV4dC1uLTUwO1xuICAgICAgcGFkZGluZzogMTZweCAzM3B4IDE2cHggMTZweDtcbiAgICAgIGJveC1zaGFkb3c6IDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgfVxuXG4gICAgcCB7XG4gICAgICBAYXBwbHkgbWItMS41IHRleHQteHMgbGVhZGluZy1ub3JtYWw7XG4gICAgfVxuICB9XG5cbiAgJjpob3ZlciAudG9vbHRpcC1idG5fX2NvbnRlbnQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgJjpob3ZlciBidXR0b24ge1xuICAgIEBhcHBseSBib3JkZXItc3ByaW5nLTUwIHRleHQtc3ByaW5nLTUwO1xuICB9XG59XG5cbi8vIHByaW1hcnkgYnV0dG9uXG4ucHJpbWFyeS1idG4ge1xuICBAYXBwbHkgZ2FwLTEgcm91bmRlZCBiZy1ibHVlY29yYWwgcC0zIGZvbnQtYm9sZCB1cHBlcmNhc2UgdGV4dC13aGl0ZTtcbiAgYm94LXNoYWRvdzogMHB4IDJweCAxMHB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcblxuICAmLnNwYWNlIHtcbiAgICBAYXBwbHkgcHgtNjtcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIEBhcHBseSBiZy1uLTUwIHRleHQtd2hpdGU7XG4gIH1cblxuICBzdmcge1xuICAgIEBhcHBseSB0ZXh0LWJhc2U7XG4gIH1cbn1cblxuLy8gc2Vjb25kYXJ5IGJ1dHRvblxuLnNlY29uZGFyeS1idG4ge1xuICBAYXBwbHkgZ2FwLTEgZ2FwLXgtMSByb3VuZGVkIGJnLXdoaXRlIHAtMyB1cHBlcmNhc2UgdGV4dC1ibHVlY29yYWw7XG5cbiAgJi0tdG91Y2gge1xuICAgIEBhcHBseSBnYXAtMSBnYXAteC0xIHJvdW5kZWQgYmctd2hpdGUgcC0zIHVwcGVyY2FzZSB0ZXh0LWJsdWVjb3JhbDtcbiAgICBib3gtc2hhZG93OiAwcHggMnB4IDEwcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuICAgIC5kcm9wZG93bl9fYXJyb3cge1xuICAgICAgZm9udC1zaXplOiA2cHg7XG4gICAgICB0cmFuc2l0aW9uOiAwLjJzO1xuICAgIH1cbiAgICBzdmcge1xuICAgICAgQGFwcGx5IHRleHQtYmFzZTtcbiAgICB9XG4gIH1cbiAgJjpob3ZlciB7XG4gICAgQGFwcGx5IGJnLWJsdWVjb3JhbCB0ZXh0LXdoaXRlO1xuICB9XG5cbiAgc3ZnIHtcbiAgICBAYXBwbHkgdGV4dC1iYXNlO1xuICB9XG5cbiAgLmRyb3Bkb3duX19hcnJvdyB7XG4gICAgZm9udC1zaXplOiA2cHg7XG4gICAgdHJhbnNpdGlvbjogMC4ycztcbiAgfVxufVxuXG4vLyBwcmltYXJ5IG91dGxpbmUgYnV0dG9uXG4ucHJpbWFyeS1vdXRsaW5lLWJ0biB7XG4gIEBhcHBseSBqdXN0aWZ5LWNlbnRlciBnYXAtMSByb3VuZGVkLTN4bCBib3JkZXIgYm9yZGVyLXNwcmluZy01MCBweC0zLjUgdGV4dC1zbSBsZWFkaW5nLXJlbGF4ZWQgdGV4dC1zcHJpbmctNTA7XG4gIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKSk7XG5cbiAgJjpob3ZlciB7XG4gICAgQGFwcGx5IGJnLXNwcmluZy01MCB0ZXh0LXdoaXRlO1xuICB9XG5cbiAgc3ZnIHtcbiAgICBAYXBwbHkgdGV4dC1iYXNlO1xuICB9XG59XG5cbi5naG9zdC1idG4ge1xuICBAYXBwbHkgdGV4dC14cyBmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtbi00MDtcbiAgdHJhbnNpdGlvbjogMC40cztcblxuICAmOmhvdmVyIHtcbiAgICBAYXBwbHkgdGV4dC1ibHVlY29yYWw7XG4gIH1cbn1cblxuLnRhYi1idG4tYW5jaG9yIHtcbiAgQGFwcGx5IGN1cnNvci1kZWZhdWx0O1xufVxuXG4udGFiLWJ0biB7XG4gIEBhcHBseSBoLTkgcm91bmRlZCBib3JkZXIgYm9yZGVyLW4tMjAgYmctd2hpdGUgcC0yIHRleHQteHMgdGV4dC1uLTQwO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG5cbiAgJjpob3ZlciB7XG4gICAgQGFwcGx5IGJvcmRlci10dXJxdW9pc2UgYmctbi0xMCB0ZXh0LWJsdWVjb3JhbDtcbiAgfVxufVxuXG4uYWN0aXZlX190YWIge1xuICBAYXBwbHkgYm9yZGVyLXR1cnF1b2lzZSBiZy1uLTEwIHRleHQtYmx1ZWNvcmFsO1xufVxuXG4ucGFuZWwtYnRuIHtcbiAgQGFwcGx5IGgtMTAgc3BhY2UteC0xIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTMwIGJnLWVnZ3NoZWxsIHB5LTMgcHgtMjtcbiAgd2lkdGg6IDQzcHg7XG5cbiAgJjpob3ZlciB7XG4gICAgQGFwcGx5IGJnLWJsdWVjb3JhbCB0ZXh0LXdoaXRlO1xuICB9XG5cbiAgLmRyb3Bkb3duX19hcnJvdyB7XG4gICAgZm9udC1zaXplOiA2cHg7XG4gICAgdHJhbnNpdGlvbjogMC4ycztcbiAgfVxufVxuIiwiLmhhbWJ1cmdlciB7XG4gIEBhcHBseSByZWxhdGl2ZSB6LWF1dG8gZmxleCBoLTExIHctMTEgY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkIGR1cmF0aW9uLTMwMDtcbiAgei1pbmRleDogMTIwO1xuXG4gIHNwYW4ge1xuICAgIEBhcHBseSBwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIGgtMSB3LTEwIHJvdW5kZWQtbGcgZHVyYXRpb24tMzAwO1xuICB9XG4gIHNwYW46bnRoLWNoaWxkKDEpIHtcbiAgICBib3R0b206IDE4cHg7XG4gICAgbGVmdDogMnB4O1xuICAgIHdpZHRoOiAzMHB4O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTVweCk7XG4gIH1cblxuICBzcGFuOm50aC1jaGlsZCgzKSB7XG4gICAgdG9wOiAxOHB4O1xuICAgIGxlZnQ6IDJweDtcbiAgICB3aWR0aDogMjBweDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTVweCk7XG4gIH1cbn1cbi5oYW1idXJnZXItbWVudSB7XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTQyMHB4KSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cbiIsIi5pbnB1dCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDE0cHggMHB4IDE0cHggNTVweDtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBsaW5lLWhlaWdodDogMjRweDtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBvdXRsaW5lOiBub25lO1xuICB0cmFuc2l0aW9uOiAwLjNzO1xuICBAYXBwbHkgaC0xNCBib3JkZXIgYm9yZGVyLW4tMzAgc206aC0xNjtcblxuICAmOmZvY3VzIHtcbiAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1uLTUwIGJnLW4tMTA7XG4gIH1cblxuICAmOjpwbGFjZWhvbGRlciB7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgQGFwcGx5IGZvbnQtbm9ybWFsIHRleHQtbi00MDtcbiAgfVxuXG4gICY6Zm9jdXM6OnBsYWNlaG9sZGVyIHtcbiAgICBAYXBwbHkgdGV4dC1uLTUwO1xuICB9XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgICBwYWRkaW5nOiAyMHB4IDBweCAyMHB4IDU1cHg7XG4gIH1cbn1cbi5lcnJvciB7XG4gIEBhcHBseSB0ZXh0LXNtIHRleHQtY3JpbXNvbi01MCBzbTp0ZXh0LWJhc2U7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgbGluZS1oZWlnaHQ6IDE4cHg7XG59XG5cbi5oYXNfZXJyb3Ige1xuICAuZm9ybV9faW5wdXQge1xuICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLWNyaW1zb24tNTA7XG4gIH1cbn1cbnRleHRhcmVhLmZvcm1fX2lucHV0IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4udGV4dC1hcmVhIHtcbiAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICBoZWlnaHQ6IDYwcHg7XG4gIHJlc2l6ZTogbm9uZTtcbn1cbi5mb3JtX19pbnB1dCB7XG4gIEBhcHBseSBtYi0yIGJveC1ib3JkZXIgdy1mdWxsIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTMwIHRleHQtYmx1ZWNvcmFsIG91dGxpbmUtbm9uZSBkdXJhdGlvbi0zMDA7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgICBwYWRkaW5nOiAxM3B4IDAgMTNweCAxNnB4O1xuICB9XG4gIHBhZGRpbmc6IDEwcHggMCAxMHB4IDE2cHg7XG5cbiAgJjo6cGxhY2Vob2xkZXIge1xuICAgIEBhcHBseSB0ZXh0LXNtIGZvbnQtbm9ybWFsIHRleHQtbi00MDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbiAgfVxuXG4gICY6Zm9jdXMge1xuICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLW4tNTAgYmctbi0xMDtcbiAgfVxuXG4gICY6Zm9jdXM6OnBsYWNlaG9sZGVyIHtcbiAgICBAYXBwbHkgdGV4dC1uLTUwO1xuICB9XG59XG4uaW5wdXRfX2ZpZWxkIHtcbiAgLm11bHRpc2VsZWN0LW9wdGlvbi5pcy1zZWxlY3RlZCB7XG4gICAgQGFwcGx5IGJnLW4tMjAgdGV4dC1uLTUwO1xuICB9XG5cbiAgLm11bHRpc2VsZWN0LW9wdGlvbi5pcy1zZWxlY3RlZC5pcy1wb2ludGVkIHtcbiAgICBAYXBwbHkgYmctbi0yMCB0ZXh0LW4tNTA7XG4gIH1cblxuICAubXVsdGlzZWxlY3QuaXMtYWN0aXZlIHtcbiAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1uLTUwIGJnLW4tMTA7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMDtcbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlciB7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgQGFwcGx5IHctWzMxMHB4XSBvdmVyZmxvdy1oaWRkZW4gd2hpdGVzcGFjZS1ub3dyYXAgcHItMyB0ZXh0LXNtIHRleHQtbi00MCBkdXJhdGlvbi0zMDA7XG4gIH1cblxuICAubXVsdGlzZWxlY3QtcGxhY2Vob2xkZXI6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBAYXBwbHkgYWJzb2x1dGUgcmlnaHQtMCB0b3AtMyBoLTYgdy03IGJnLXdoaXRlO1xuICB9XG5cbiAgLm11bHRpc2VsZWN0LmlzLW9wZW4ge1xuICAgIC5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlciB7XG4gICAgICBAYXBwbHkgdGV4dC1uLTUwO1xuICAgIH1cbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC1kcm9wZG93biB7XG4gICAgQGFwcGx5IGJvcmRlciBib3JkZXItbi01MDtcbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC1jYXJldCB7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoJy9pbWFnZXMvZHJvcGRvd24tYXJyb3cuc3ZnJyk7XG4gICAgbWFzay1pbWFnZTogdXJsKCcvaW1hZ2VzL2Ryb3Bkb3duLWFycm93LnN2ZycpO1xuICB9XG5cbiAgLm11bHRpc2VsZWN0LXNlYXJjaCB7XG4gICAgQGFwcGx5IGN1cnNvci1wb2ludGVyIGJvcmRlciBib3JkZXItbi0zMCBweS0yLjU7XG4gIH1cblxuICAubXVsdGlzZWxlY3Qtc2VhcmNoOmZvY3VzIHtcbiAgICBAYXBwbHkgYmctbi0xMDtcbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC1zZWFyY2g6Zm9jdXMgKyAubXVsdGlzZWxlY3QtcGxhY2Vob2xkZXI6OmFmdGVyIHtcbiAgICBAYXBwbHkgYmctbi0xMDtcbiAgfVxuXG4gIC52dWVfX3NlbGVjdCB7XG4gICAgQGFwcGx5IG1iLTIgYm9yZGVyIGJvcmRlci1uLTMwIHRleHQtc20gbGVhZGluZy02IG91dGxpbmUtbm9uZSBkdXJhdGlvbi0zMDA7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xuICAgICAgcGFkZGluZzogMTZweCAwcHggMTZweCA1NXB4O1xuICAgIH1cbiAgICBwYWRkaW5nOiAxM3B4IDBweCAxM3B4IDU1cHg7XG4gIH1cbn1cbi5lcnJvcl9pbnB1dCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkMTAwMWU7XG59XG4uZXJyb3JfX211bHRpc2VsZWN0IHtcbiAgaW5wdXQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkMTAwMWU7XG4gIH1cbn1cbi5wYW5lbF9faW5wdXQge1xuICBAYXBwbHkgYm94LWJvcmRlciBoLTEwIHctZnVsbCByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCBiZy1wYXBlciBweS0yLjUgcGwtNyBwci0zIG91dGxpbmUtbm9uZSBkdXJhdGlvbi0zMDA7XG5cbiAgJjo6cGxhY2Vob2xkZXIge1xuICAgIEBhcHBseSB0ZXh0LXhzIGZvbnQtbm9ybWFsIHRleHQtbi0zMCBkdXJhdGlvbi0zMDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gIH1cblxuICAmOmZvY3VzOjpwbGFjZWhvbGRlciB7XG4gICAgQGFwcGx5IHRleHQtbi00MDtcbiAgfVxufVxuLnNlYXJjaCB7XG4gIEBhcHBseSByZWxhdGl2ZTtcblxuICAmX19pbnB1dCB7XG4gICAgQGFwcGx5IGJvcmRlciBib3JkZXItbi0zMCBiZy10cmFuc3BhcmVudCBvdXRsaW5lLW5vbmU7XG4gICAgcGFkZGluZzogMTBweCA0MnB4IDEwcHggMzRweDtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICB9XG4gIHN2ZyB7XG4gICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMyB0b3AtMyB0ZXh0LWJhc2UgdGV4dC1uLTMwO1xuICB9XG59XG4ucmVxdWlyZWQtaWNvbiB7XG4gIEBhcHBseSByZWxhdGl2ZSB0b3AtMC41IHRleHQtYmFzZSBsZWFkaW5nLW5vbmUgdGV4dC1jcmltc29uLTUwO1xufVxuLm9wZW4tdGV4dCB7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2E2YjViYTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBpbnB1dCB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwYWRkaW5nLXRvcDogNHB4O1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgcGFkZGluZy1sZWZ0OiAzMHB4O1xuICAgICY6Zm9jdXMge1xuICAgICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuLnVzZXItY2hlY2tsaXN0IHtcbiAgb3BhY2l0eTogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB3aWR0aDogMThweDtcbiAgaGVpZ2h0OiAxOHB4O1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG59XG4ucHNldWRvLWNoZWNrYm94IHtcbiAgaGVpZ2h0OiAxOHB4O1xuICB3aWR0aDogMThweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvcmRlcjogMnB4IHNvbGlkICNkNWRjZGU7XG4gIG9wYWNpdHk6IDE7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG59XG4udXNlci1jaGVja2xpc3Q6Y2hlY2tlZCB+IC5wc2V1ZG8tY2hlY2tib3gge1xuICBib3JkZXItY29sb3I6IHJnYih2YXIoLS1zcHJpbmctNTApKTtcbn1cbi50aWNrZWQtc3ZnIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDFweDtcbiAgbGVmdDogMXB4O1xuICBvcGFjaXR5OiAwO1xuICBoZWlnaHQ6IDE2cHg7XG4gIHdpZHRoOiAxNnB4O1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuNyk7XG59XG4udXNlci1jaGVja2xpc3Q6Y2hlY2tlZCB+IC50aWNrZWQtc3ZnIHtcbiAgb3BhY2l0eTogMTtcbn1cbmlucHV0W3R5cGU9J3JhZGlvJ10ge1xuICBhY2NlbnQtY29sb3I6ICMxNTUzNjY7XG59XG4iLCIuaWF0aS1saXN0LXRhYmxlIHtcbiAgQGFwcGx5IHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1uLTIwIHRleHQtbGVmdDtcbiAgbWF4LXdpZHRoOiBjYWxjKDEwMHZ3IC0gNDVweCk7XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICB9XG5cbiAgdGFibGUge1xuICAgIEBhcHBseSB0YWJsZSB3LWZ1bGwgIGJnLXdoaXRlO1xuICB9XG4gIHRib2R5IHtcbiAgICB0ciB7XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgYm94LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTtcbiAgICAgICAgQGFwcGx5IGJnLW4tMTA7XG4gICAgICB9XG4gICAgfVxuICAgIHRyOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEodmFyKC0tbi0yMCkpO1xuICAgICAgLy8gJjphZnRlciB7XG4gICAgICAvLyAgIGNvbnRlbnQ6ICcgJztcbiAgICAgIC8vICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMCBib3R0b20tMCBoLXB4IHctZnVsbCBtYXgtdy1mdWxsIGJnLW4tMjA7XG4gICAgICAvLyB9XG5cbiAgICAgIHRkOmZpcnN0LWNoaWxkOmFmdGVyIHtcbiAgICAgICAgQGFwcGx5IG1sLTY7XG4gICAgICB9XG4gICAgICB0aC5jaGVjay1jb2x1bW46YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgLW1sLTY7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGgge1xuICAgIEBhcHBseSBweS00IHB4LTYgYWxpZ24tdG9wIHRleHQteHMgdXBwZXJjYXNlIGxlYWRpbmctbm9ybWFsO1xuXG4gICAgc3ZnIHtcbiAgICAgIEBhcHBseSBtci0xIHRleHQteGwgdGV4dC1uLTMwO1xuICAgIH1cblxuICAgIGEge1xuICAgICAgQGFwcGx5IGZsZXg7XG4gICAgICBzdmcge1xuICAgICAgICBAYXBwbHkgdGV4dC1iYXNlIHRleHQtYmx1ZWNvcmFsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRkIHtcbiAgICBAYXBwbHkgcmVsYXRpdmUgcHktNCBweC02IGFsaWduLXRvcCB0ZXh0LXNtIGxlYWRpbmctcmVsYXhlZDtcbiAgfVxuXG4gIHRyLmFscmVhZHktcHVibGlzaGVkIHtcbiAgICB0ZCxcbiAgICB0aC5jaGVjay1jb2x1bW4ge1xuICAgICAgQGFwcGx5IHB0LTExO1xuICAgIH1cbiAgfVxuXG4gIC5oYXMtc3RhdHVzIHtcbiAgICB0ZCB7XG4gICAgICBAYXBwbHkgcHgtNiBwdC0xMSBwYi03O1xuICAgIH1cbiAgICB0aCB7XG4gICAgICBAYXBwbHkgcHgtNiBwdC0xMSBwYi03O1xuICAgIH1cbiAgfVxuXG4gIC5jaGVjay1jb2x1bW4gLmNoZWNrYm94IHtcbiAgICBtYXJnaW4tdG9wOiA0cHg7XG4gIH1cbn1cblxuLnVwbG9hZC1saXN0LXRhYmxlIHtcbiAgLnVwbG9hZC1lcnJvciB7XG4gICAgLnRpdGxlIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbiAgfVxuXG4gIC51cGxvYWQtZXJyb3ItY29udGVudCB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuM3MgZWFzZS1vdXQ7IC8vIG5vdGUgdGhhdCB3ZSdyZSB0cmFuc2l0aW9uaW5nIG1heC1oZWlnaHQsIG5vdCBoZWlnaHQhXG4gICAgLmVycm9yLWRyb3Bkb3duIHtcbiAgICAgIGRpdiB7XG4gICAgICAgIEBhcHBseSB0ZXh0LWJsdWVjb3JhbDtcblxuICAgICAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICAgIEBhcHBseSBib3JkZXItYiBib3JkZXItYi1uLTIwIHBiLTQ7XG4gICAgICAgIH1cblxuICAgICAgICB1bCB7XG4gICAgICAgICAgQGFwcGx5IG10LTQgc3BhY2UteS00IHRleHQtc20gZm9udC1ub3JtYWw7XG4gICAgICAgIH1cblxuICAgICAgICBsaSB7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgIC8vIHBhZGRpbmctbGVmdDogMzZweDtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgICAgICBAYXBwbHkgYm9yZGVyLWIgYm9yZGVyLWItbi0yMCBwYi00O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vICY6OmJlZm9yZSB7XG4gICAgICAgICAgLy8gICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgLy8gICB0b3A6IDhweDtcbiAgICAgICAgICAvLyAgIGxlZnQ6IDIwcHg7XG4gICAgICAgICAgLy8gICB3aWR0aDogNHB4O1xuICAgICAgICAgIC8vICAgaGVpZ2h0OiA0cHg7XG4gICAgICAgICAgLy8gICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgLy8gICBjb250ZW50OiAnJztcbiAgICAgICAgICAvLyAgIEBhcHBseSBiZy1ibHVlY29yYWw7XG4gICAgICAgICAgLy8gfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC5lcnJvci1saXN0IHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHBhZGRpbmctbGVmdDogMjBweDtcbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA4cHg7XG4gICAgICAgIGxlZnQ6IDEwcHg7XG4gICAgICAgIHdpZHRoOiA0cHg7XG4gICAgICAgIGhlaWdodDogNHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBAYXBwbHkgYmctYmx1ZWNvcmFsO1xuICAgICAgfVxuICAgIH1cbiAgICAmLmNsb3NlZCB7XG4gICAgICBtYXgtaGVpZ2h0OiAwO1xuICAgIH1cbiAgfVxuXG4gIC51cGxvYWQtZXJyb3ItaWNvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMjZweDtcbiAgICByaWdodDogMDtcblxuICAgIHN2ZyB7XG4gICAgICBmb250LXNpemU6IDZweDtcbiAgICB9XG5cbiAgICAmLm9wZW4ge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICB9XG4gIH1cbn1cblxuI2NiIHtcbiAgd2lkdGg6IDY4cHg7XG59XG5cbiNzdGF0dXMge1xuICB3aWR0aDogMTkycHg7XG59XG5cbiNwdWJsaXNoIHtcbiAgd2lkdGg6IDI4MHB4O1xufVxuXG4jZGF0ZSB7XG4gIHdpZHRoOiAxNzNweDtcbn1cbi5pYXRpLWxpc3QtdGFibGUge1xuICB0ciB7XG4gICAgb3ZlcmZsb3cteTogdmlzaWJsZTtcbiAgfVxuICB0ZDpudGgtY2hpbGQoMSkge1xuICAgIG1heC13aWR0aDogMTUwcHggIWltcG9ydGFudDtcblxuICAgIGEge1xuICAgICAgbWF4LXdpZHRoOiAxNDVweDtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuICB9XG59XG50ZCB7XG4gIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xufVxuLnVzZXItbGlzdC10YWJsZS5pYXRpLWxpc3QtdGFibGUsXG4ub3JnYW5pemF0aW9uLWxpc3Qge1xuICBvdmVyZmxvdy14OiBhdXRvO1xuICBvdmVyZmxvdy15OiBoaWRkZW47XG4gIG1heC13aWR0aDogY2FsYygxMDB2dyAtIDcwcHgpO1xuICBAbWVkaWEgKG1heC13aWR0aDogNjQwcHgpIHtcbiAgICBtYXgtd2lkdGg6IGNhbGMoMTAwdncgLSA1MHB4KTtcbiAgfVxuICB0Ym9keSB7XG4gICAgdHIge1xuICAgICAgJjpob3ZlciB7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGJveC1zaGFkb3c6IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMCk7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7XG4gICAgICAgIEBhcHBseSBiZy10cmFuc3BhcmVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLypGb3IgcHJvZ3Jlc3MgYmFyIGluIGFjdGl2aXRpZXMgbGlzdGluZyBwYWdlXG4gKlxuICovXG4uYm9yZGVyLXRoaXMge1xuICBib3JkZXI6IDFweCBzb2xpZCBibGFjaztcbn1cbi5wcm9ncmVzcy1iYXItaGVhZGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTEwMnB4KSB7XG4gICAgdGV4dC1hbGlnbjogZW5kO1xuICB9XG59XG4ucHJvZ3Jlc3MtYmFyLXBhcmVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMTAycHgpIHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICB9XG59XG4ucHJvZ3Jlc3MtYmFyLXdyYXBwZXIge1xuICBoZWlnaHQ6IDVweDtcbiAgd2lkdGg6IDA7XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMTAycHgpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgd2lkdGg6IDEwMHB4O1xuICB9XG59XG4ucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciB7XG4gIGhlaWdodDogMTAwJTtcbiAgYm9yZGVyLXJhZGl1czogMTJweDtcbn1cbi5wcm9ncmVzcy1iYXItZmlsbCB7XG4gIGhlaWdodDogMTAwJTtcbiAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcbn1cbi5wcm9ncmVzcy1iYXItbnVtYmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDExMDJweCkge1xuICAgIHRleHQtYWxpZ246IGVuZDtcbiAgICB3aWR0aDogMi4ycmVtO1xuICAgIHBhZGRpbmctbGVmdDogOHB4O1xuICB9XG59XG4iLCIuY2hlY2tib3gge1xuICBAYXBwbHkgcmVsYXRpdmUgYmxvY2sgY3Vyc29yLXBvaW50ZXIgc2VsZWN0LW5vbmU7XG4gIC5jaGVja21hcmsge1xuICAgIEBhcHBseSBmbGV4IGgtNCB3LTQgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQgYm9yZGVyLTIgYm9yZGVyLW4tMjA7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGJvcmRlci13aWR0aDogMCAzcHggM3B4IDA7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIEBhcHBseSBtYi0wLjUgaGlkZGVuIGgtMiB3LVs1cHhdIHJvdGF0ZS00NSBib3JkZXItc3ByaW5nLTUwO1xuICAgIH1cbiAgfVxuICBpbnB1dCB7XG4gICAgQGFwcGx5IGFic29sdXRlIGgtMCB3LTAgY3Vyc29yLXBvaW50ZXIgb3BhY2l0eS0wO1xuICAgICY6Y2hlY2tlZCB+IC5jaGVja21hcmsge1xuICAgICAgQGFwcGx5IGJvcmRlci1zcHJpbmctNTA7XG4gICAgICAmOmFmdGVyIHtcbiAgICAgICAgQGFwcGx5IGJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAmOmhvdmVyIGlucHV0IH4gLmNoZWNrbWFyayB7XG4gICAgQGFwcGx5IGJvcmRlci1zcHJpbmctNTA7XG4gIH1cbn1cbi8qKlxuICBMYXJhdmVsIGZvcm0gZGVzaWduXG4gKi9cbmZvcm0ge1xuICAuZm9ybS1maWVsZC1ncm91cCB7XG4gICAgQGFwcGx5IHJlbGF0aXZlIHAtMztcbiAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgQGFwcGx5IG1iLTY7XG4gICAgfVxuXG4gICAgLmZvcm0tZmllbGQge1xuICAgICAgQGFwcGx5IHAtMztcbiAgICAgIC5oZWxwLXRleHQge1xuICAgICAgICBAYXBwbHkgbXQtMiB0ZXh0LXhzIGxlYWRpbmctcmVsYXhlZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgYnV0dG9uLmRlbGV0ZS1pdGVtIHtcbiAgICBAYXBwbHkgYWJzb2x1dGUgaC04IHctOCBjdXJzb3ItcG9pbnRlciBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1mdWxsIGJnLW4tNDAgLWluZGVudC00MDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQ6IHVybCgnL2ltYWdlcy90cmFzaF9mdWxsLnN2ZycpIG5vLXJlcGVhdCBjZW50ZXI7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTEvMiB0b3AtMS8yIGgtWzE4cHhdIHctWzE4cHhdIC10cmFuc2xhdGUteC0xLzIgLXRyYW5zbGF0ZS15LTEvMjtcbiAgICB9XG4gICAgJjpob3ZlciB7XG4gICAgICBAYXBwbHkgYmctYmx1ZWNvcmFsO1xuICAgIH1cbiAgfVxuXG4gIC5mb3JtLWZpZWxkLWdyb3VwLW91dGVyIC5mb3JtLWZpZWxkIHtcbiAgICBAYXBwbHkgcHgtMztcbiAgfVxuXG4gIC5mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICBAYXBwbHkgbWItMiBmbGV4IGp1c3RpZnktYmV0d2VlbjtcbiAgICBsYWJlbCB7XG4gICAgICBAYXBwbHkgdGV4dC14cyBsZWFkaW5nLXJlbGF4ZWQ7XG4gICAgfVxuICAgIC5yZXF1aXJlZCB7XG4gICAgICBAYXBwbHkgZm9udC1ib2xkIHRleHQtc2FsbW9uLTUwO1xuICAgIH1cbiAgfVxuICBpbnB1dFt0eXBlPSd0ZXh0J10sXG4gIGlucHV0W3R5cGU9J2RhdGUnXSxcbiAgdGV4dGFyZWEge1xuICAgIEBhcHBseSBtdC0wIGgtMTIgdy1mdWxsIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTMwIHB4LTQgcHktMi41IHRleHQtc20gbGVhZGluZy1ub3JtYWwgb3V0bGluZS1ub25lIGR1cmF0aW9uLTMwMDtcbiAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICBAYXBwbHkgdGV4dC1zbSB0ZXh0LW4tNDA7XG4gICAgfVxuICAgICY6Zm9jdXMge1xuICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItbi01MCBiZy1uLTEwO1xuICAgIH1cbiAgICAmOmZvY3VzOjpwbGFjZWhvbGRlciB7XG4gICAgICBAYXBwbHkgdGV4dC1uLTUwO1xuICAgIH1cbiAgfVxuXG4gIGlucHV0W3R5cGU9J3RleHQnXSxcbiAgaW5wdXRbdHlwZT0nZGF0ZSddIHtcbiAgICBAYXBwbHkgaC0xMjtcbiAgfVxuXG4gIHNlbGVjdCB7XG4gICAgQGFwcGx5IHctZnVsbCByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCBweC00IHB5LTMgdGV4dC1zbSB0ZXh0LW4tNDAgb3V0bGluZS1ub25lIGR1cmF0aW9uLTMwMDtcbiAgICAmOmZvY3VzIHtcbiAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLW4tNTAgYmctbi0xMDtcbiAgICB9XG4gIH1cbiAgLmhlbHAge1xuICAgIEBhcHBseSByZWxhdGl2ZTtcbiAgICAmX190ZXh0IHtcbiAgICAgIEBhcHBseSBpbnZpc2libGUgYWJzb2x1dGUgdG9wLTQgei0yMCBzcGFjZS15LTEuNSByb3VuZGVkIGJnLWVnZ3NoZWxsIHAtNCB0ZXh0LWxlZnQgdGV4dC14cyB0ZXh0LW4tNDAgb3BhY2l0eS0wIGR1cmF0aW9uLTIwMDtcbiAgICAgIGJveC1zaGFkb3c6IDBweCA0cHggNDBweCByZ2IoMCAwIDAgLyAxMCUpO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQ7XG4gICAgfVxuICB9XG4gIC5oZWxwOmhvdmVyIHtcbiAgICAuaGVscF9fdGV4dCB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNXB4KTtcbiAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuICAuYWRkX21vcmUge1xuICAgIEBhcHBseSByZWxhdGl2ZTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgaC0xLzIgdy1weCBib3JkZXItbCBib3JkZXItc3ByaW5nLTUwO1xuICAgIH1cbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMCB0b3AtMi80IGgtcHggdy0zLjUgLXRyYW5zbGF0ZS15LTEvMiBib3JkZXItYiBib3JkZXItc3ByaW5nLTUwO1xuICAgIH1cblxuICAgIGkge1xuICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgICBiYWNrZ3JvdW5kOiB1cmwoJy9pbWFnZXMvYWRkLW1vcmUtZ3JlZW4uc3ZnJykgbm8tcmVwZWF0IGNlbnRlcjtcbiAgICB9XG4gIH1cbiAgLnN1YmVsZW1lbnQge1xuICAgICYuYm9yZGVyLWwgPiBsYWJlbCB7XG4gICAgICBib3JkZXItbGVmdDogMDtcbiAgICB9XG4gICAgLnN1YmVsZW1lbnQsXG4gICAgLnN1YmVsZW1lbnQgKyBidXR0b24ge1xuICAgICAgQGFwcGx5IG1sLTY7XG4gICAgfVxuXG4gICAgLndyYXBwZWQtY2hpbGQtYm9keSB7XG4gICAgICBAYXBwbHkgcmVsYXRpdmU7XG4gICAgICA+IC5kZWxldGUtcGFyZW50IHtcbiAgICAgICAgQGFwcGx5IGJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgICA+IC5tdWx0aS1mb3JtOm9ubHktb2YtdHlwZSA+IC5kZWxldGUtcGFyZW50LFxuICAgIC53cmFwcGVkLWNoaWxkLWJvZHk6b25seS1vZi10eXBlID4gLmRlbGV0ZS1wYXJlbnQge1xuICAgICAgQGFwcGx5IGhpZGRlbjtcbiAgICB9XG4gIH1cblxuICAuZm9ybS1maWVsZC1ncm91cDpvbmx5LW9mLXR5cGUgPiAuZGVsZXRlLWl0ZW0ge1xuICAgIEBhcHBseSBoaWRkZW47XG4gIH1cblxuICAvKipcbiAgKiBDb25kaXRpb24gdG8gc2hvdyBhbmQgZGVsZXRlIGNvbGxlY3Rpb24gZXJyb3IgaW4gZm9ybVxuICAqL1xuICAuY29sbGVjdGlvbl9lcnJvciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5tdWx0aS1mb3JtICsgLmNvbGxlY3Rpb25fZXJyb3IsXG4gIC5mb3JtLWZpZWxkLWdyb3VwICsgLmNvbGxlY3Rpb25fZXJyb3IsXG4gIC53cmFwcGVkLWNoaWxkLWJvZHkgKyAuY29sbGVjdGlvbl9lcnJvciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbiAgLmNvbnRyb2wtbGFiZWwgKyAuY29sbGVjdGlvbl9lcnJvcixcbiAgLnRpdGxlLWNvbnRhaW5lciAuY29sbGVjdGlvbl9lcnJvciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZy1yaWdodDogMjRweDtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgLmRpdiB7XG4gICAgICBsaW5lLWhlaWdodDogNHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICBTZWxlY3QgMiBmaWVsZFxuKi9cbnNwYW4uc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQge1xuICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUge1xuICAgIEBhcHBseSBoLTEyIHctZnVsbCByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCBweC00IHB5LTMgdGV4dC1zbSB0ZXh0LW4tNDAgb3V0bGluZS1ub25lIGR1cmF0aW9uLTMwMDtcbiAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkIHtcbiAgICAgIEBhcHBseSBwLTAgdGV4dC1zbSBsZWFkaW5nLW5vcm1hbDtcbiAgICB9XG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19hcnJvdyB7XG4gICAgICBAYXBwbHkgaC0xMTtcbiAgICB9XG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19jbGVhciBzcGFuIHtcbiAgICAgIEBhcHBseSBtci0yLjUgdGV4dC1zbTtcbiAgICB9XG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19wbGFjZWhvbGRlciB7XG4gICAgICBAYXBwbHkgdGV4dC1zbSB0ZXh0LW4tNDA7XG4gICAgfVxuICB9XG4gIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0taGlnaGxpZ2h0ZWRbYXJpYS1zZWxlY3RlZF0ge1xuICAgIGNvbG9yOiAjMWYyOTM3O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmM2Y0ZjY7XG4gIH1cbiAgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uW2FyaWEtc2VsZWN0ZWRdIHtcbiAgICBAYXBwbHkgdGV4dC1zbSB0ZXh0LW4tNTA7XG4gIH1cbn1cbi5tYXgtdy1oYWxmIHtcbiAgbWF4LXdpZHRoOiA1MCU7XG59XG5cbi8qKlxuICBBY3Rpdml0eSBEZXRhaWwgUGFnZVxuKi9cbi5hY3Rpdml0aWVzIHtcbiAgQGFwcGx5IGZsZXggZ2FwLTUgeGw6Z2FwLTc7XG5cbiAgJl9fc2lkZWJhciB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgd2lkdGg6IDI4MHB4O1xuXG4gICAgJi1pbm5lciB7XG4gICAgICBvcmRlcjogMTtcbiAgICB9XG4gIH1cblxuICAmX19jb250ZW50IHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAgIG1heC13aWR0aDogY2FsYygxMDB2dyAtIDUwcHgpO1xuICAgIH1cbiAgfVxuXG4gICZfX2NhcmQge1xuICAgIEBhcHBseSBmbGV4IGZsZXgtY29sIGJnLXdoaXRlIHRleHQtY2VudGVyIHRleHQteHMgdGV4dC1uLTQwO1xuICAgIHBhZGRpbmc6IDEzcHg7XG4gIH1cblxuICAucHJvZ3Jlc3Mge1xuICAgIEBhcHBseSBpdGVtcy1jZW50ZXI7XG4gICAgd2lkdGg6IDE1MXB4O1xuICAgIG1pbi1oZWlnaHQ6IDE3NHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweCAwcHggMHB4IDhweDtcbiAgfVxuXG4gIC50YWItYnRuOmRpc2FibGVkIHtcbiAgICBAYXBwbHkgcG9pbnRlci1ldmVudHMtbm9uZSB0ZXh0LW4tMjA7XG5cbiAgICBzdmcge1xuICAgICAgQGFwcGx5IHRleHQtbi0yMDtcbiAgICB9XG4gIH1cbiAgLmhvdmVyLXRleHQge1xuICAgIHN2ZyB7XG4gICAgICBAYXBwbHkgdGV4dC1uLTMwO1xuICAgIH1cbiAgfVxufVxuLmVsZW1lbnRzLWNhcmQge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTkwcHgpIHtcbiAgICBmbGV4LWJhc2lzOiBhdXRvO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG4ubWFudWFsLWltcG9ydCB7XG4gIC5oZWxwX190ZXh0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gICAgICB3aWR0aDogMzUwcHggIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cbi5yZWdpc3Rlci1wYWdlIC5oZWxwX190ZXh0IHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKSAhaW1wb3J0YW50O1xufVxuXG4ucmVnaXN0cnlfX2luZm8sXG4ucmVnaXN0ZXIsXG5hc2lkZSB7XG4gIC5oZWxwX190ZXh0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogMTM3MHB4KSB7XG4gICAgICB3aWR0aDogMjUwcHggIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cbi5pbXBvcnQtYWN0aXZpdHksXG4uYWN0aXZpdGllc19fY29udGVudC0tZWxlbWVudCB7XG4gIC5oZWxwX190ZXh0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcbiAgfVxufVxuYXNpZGUge1xuICAucHJvZ3Jlc3Mge1xuICAgIC5oZWxwX190ZXh0IHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSAhaW1wb3J0YW50O1xuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNDUlKSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuLmFjdGl2aXRpZXNfX2NvbnRlbnQge1xuICB3aWR0aDogMTAwJTtcbn1cbi50YWItYnRuIHtcbiAgLmhlbHBfX3RleHQge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSAhaW1wb3J0YW50O1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICAgIGxlZnQ6IDA7XG4gICAgfVxuICB9XG59XG4uYWN0aXZpdHktZGVmYXVsdC12YWx1ZSB7XG4gIC5oZWxwX190ZXh0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpICFpbXBvcnRhbnQ7XG4gIH1cbn1cbi5lcnJvci10aXRsZSB7XG4gIGNvbG9yOiAjZDEwMDFlO1xuICBwYWRkaW5nLXRvcDogOHB4ICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmctYm90dG9tOiA4cHggIWltcG9ydGFudDtcbn1cbi50ZXh0LWRhbmdlci1lcnJvciB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC1zaXplOiAxMnB4O1xuICBsaW5lLWhlaWdodDogMThweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbn1cbiIsIi5wYWdpbmF0aW9uIHtcbiAgQGFwcGx5IHJlbGF0aXZlIHotMCBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctd2hpdGUgdGV4dC1zbSBsZWFkaW5nLXJlbGF4ZWQgdGV4dC1uLTQwO1xuXG4gIGEge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gIGEsXG4gIC5wYWdpbmF0aW9uLWRvdHMge1xuICAgIEBhcHBseSBmbGV4IGJvcmRlci15IGJvcmRlci1sIGJvcmRlci1uLTIwIHB5LTEuNSBweC0zO1xuXG4gICAgJjpub3QoLnByZXYtYnRuKSB7XG4gICAgICBAYXBwbHkgYm9yZGVyLWwgYm9yZGVyLW4tMjA7XG4gICAgfVxuXG4gICAgJi5wcmV2LWJ0bixcbiAgICAmLm5leHQtYnRuIHtcbiAgICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1uLTEwO1xuXG4gICAgICBzdmcge1xuICAgICAgICBAYXBwbHkgdGV4dC14cztcbiAgICAgIH1cbiAgICB9XG4gICAgJi5wcmV2LWJ0biB7XG4gICAgICBAYXBwbHkgcm91bmRlZC10bCByb3VuZGVkLWJsO1xuICAgIH1cblxuICAgICYubmV4dC1idG4ge1xuICAgICAgQGFwcGx5IHJvdW5kZWQtYnIgcm91bmRlZC10ciBib3JkZXItcjtcbiAgICB9XG5cbiAgICAmLnByZXYtYnRuIHN2ZyB7XG4gICAgICBAYXBwbHkgbXItMTtcbiAgICB9XG5cbiAgICAmLm5leHQtYnRuIHN2ZyB7XG4gICAgICBAYXBwbHkgbWwtMTtcbiAgICB9XG5cbiAgICAmOmhvdmVyLFxuICAgICYuY3VycmVudCB7XG4gICAgICBAYXBwbHkgYmctYmx1ZWNvcmFsIHRleHQtcGFwZXI7XG4gICAgfVxuICB9XG59XG4iLCIub3ZlcmxheSB7XG4gIEBhcHBseSBmaXhlZCBsZWZ0LTAgdG9wLTAgaC1mdWxsIHctZnVsbCBiZy1ibGFjaztcbiAgei1pbmRleDogMTAwO1xuICBvcGFjaXR5OiAwLjc7XG5cbiAgJl9faW5uZXIge1xuICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgaC1mdWxsIHctZnVsbDtcbiAgfVxuXG4gICZfX2NvbnRlbnQge1xuICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTIvNCB0b3AtMi80O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXG4gICAgLnNwaW5uZXIge1xuICAgICAgQGFwcGx5IGlubGluZS1ibG9jayBhbmltYXRlLXNwaW4gcm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci1uLTEwIGJvcmRlci1vcGFjaXR5LTU7XG4gICAgICB3aWR0aDogNzVweDtcbiAgICAgIGhlaWdodDogNzVweDtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6IHdoaXRlO1xuICAgIH1cbiAgfVxufVxuLmxvYWRvdmVybGF5IHtcbiAgQGFwcGx5IGZpeGVkIGxlZnQtMCB0b3AtMCBoLWZ1bGwgdy1mdWxsIGJnLWJsYWNrO1xuICBvcGFjaXR5OiAwLjc7XG5cbiAgJl9faW5uZXIge1xuICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgaC1mdWxsIHctZnVsbDtcbiAgfVxuXG4gICZfX2NvbnRlbnQge1xuICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTIvNCB0b3AtMi80O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXG4gICAgLnNwaW5uZXIge1xuICAgICAgQGFwcGx5IGlubGluZS1ibG9jayBhbmltYXRlLXNwaW4gcm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci1uLTEwIGJvcmRlci1vcGFjaXR5LTU7XG4gICAgICB3aWR0aDogNzVweDtcbiAgICAgIGhlaWdodDogNzVweDtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6IHdoaXRlO1xuICAgIH1cbiAgfVxufVxuIiwiLnNlbGVjdDItY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG1hcmdpbjogMDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcblxuICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjdmOTtcbiAgfVxuXG4gIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGhlaWdodDogMjhweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMyYTJmMzA7XG4gICAgfVxuXG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xuICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMTtcbiAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgfVxuICB9XG59XG5cbi5zZWxlY3QyLWRyb3Bkb3duIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAtMTAwMDAwcHg7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNhYWE7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cblxuLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIHtcbiAgcGFkZGluZzogNnB4O1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAmW2FyaWEtc2VsZWN0ZWRdIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cblxuLnNlbGVjdDItY29udGFpbmVyLS1vcGVuIHtcbiAgLnNlbGVjdDItZHJvcGRvd24ge1xuICAgIGxlZnQ6IDA7XG5cbiAgICAmLS1hYm92ZSB7XG4gICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgIH1cblxuICAgICYtLWJlbG93IHtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBib3JkZXItdG9wOiBub25lO1xuICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICAgIH1cbiAgfVxufVxuXG4uc2VsZWN0Mi1zZWFyY2gtLWRyb3Bkb3duIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDRweDtcblxuICAuc2VsZWN0Mi1zZWFyY2hfX2ZpZWxkIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDRweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjYTZiNWJhO1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcblxuICAgICY6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24ge1xuICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIH1cbiAgfVxufVxuXG5bdHlwZT0nc2VhcmNoJ10ge1xuICBvdXRsaW5lLWNvbG9yOiAjYTZiNWJhO1xuICBvdXRsaW5lLW9mZnNldDogMDtcbn1cblxuLnNlbGVjdDItaGlkZGVuLWFjY2Vzc2libGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgd2lkdGg6IDFweCAhaW1wb3J0YW50O1xuICBoZWlnaHQ6IDFweCAhaW1wb3J0YW50O1xuICBtYXJnaW46IC0xcHggIWltcG9ydGFudDtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG4gIGJvcmRlcjogMCAhaW1wb3J0YW50O1xuICBjbGlwOiByZWN0KDAgMCAwIDApICFpbXBvcnRhbnQ7XG59XG5cbi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCB7XG4gIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHtcbiAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkIHtcbiAgICAgIGNvbG9yOiAjMTU1MzY2O1xuICAgICAgbGluZS1oZWlnaHQ6IDI4cHg7XG4gICAgfVxuXG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19jbGVhciB7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG5cbiAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX3BsYWNlaG9sZGVyIHtcbiAgICAgIGNvbG9yOiAjOTk5O1xuICAgIH1cblxuICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3cge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAxcHg7XG4gICAgICByaWdodDogMXB4O1xuICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICBoZWlnaHQ6IDI2cHg7XG5cbiAgICAgIGIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIHdpZHRoOiAwO1xuICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgIG1hcmdpbi10b3A6IC0ycHg7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtNHB4O1xuICAgICAgICBib3JkZXItY29sb3I6ICM4ODggdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICAgIGJvcmRlci13aWR0aDogNXB4IDRweCAwIDRweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLnNlbGVjdDItcmVzdWx0cyA+IC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbnMge1xuICAgIG1heC1oZWlnaHQ6IDIwMHB4O1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gIH1cbn1cblxuLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyLS1vcGVuIHtcbiAgLnNlbGVjdDItc2VsZWN0aW9uX19hcnJvdyB7XG4gICAgYiB7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICM4ODggdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItd2lkdGg6IDAgNHB4IDVweCA0cHg7XG4gICAgfVxuICB9XG5cbiAgJi5zZWxlY3QyLWNvbnRhaW5lci0tYWJvdmUge1xuICAgIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHtcbiAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgICB9XG4gIH1cblxuICAmLnNlbGVjdDItY29udGFpbmVyLS1iZWxvdyB7XG4gICAgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUge1xuICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLnNpZGViYXItb3Blbi1pY29uIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBoZWlnaHQ6IDQwcHg7XG4gIGxlZnQ6IDBweDtcbiAgYm90dG9tOiA1MHB4O1xuICB6LWluZGV4OiA2MDtcbiAgZGlzcGxheTogZmxleDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QwZGRlMDtcbiAgcGFkZGluZzogMCA1cHg7XG4gIGJvcmRlci1yYWRpdXM6IDAgMTAwJSAxMDAlIDA7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMnM7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogbm9uZTtcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICB9XG5cbiAgc3ZnIHtcbiAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGNvbG9yOiAjMTU1MzY2O1xuICB9XG59XG4uZGV0YWlscy1zaWRlYmFyLWNsb3NlLWljb24ge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJvdHRvbTogNTBweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBsZWZ0OiAyODBweDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDBkZGUwO1xuICBoZWlnaHQ6IDQwcHg7XG4gIHdpZHRoOiA0MHB4O1xuICB6LWluZGV4OiAzMDA7XG4gIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7XG5cbiAgc3ZnIHtcbiAgICBtYXJnaW46IGF1dG87XG4gICAgY29sb3I6ICMxNTUzNjY7XG4gIH1cbn1cbi5zaWRlYmFyLWNsb3NlLWljb24ge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJvdHRvbTogNTBweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBsZWZ0OiAyNzVweDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDBkZGUwO1xuICBoZWlnaHQ6IDQwcHg7XG4gIHdpZHRoOiA0MHB4O1xuICB6LWluZGV4OiAyMDA7XG4gIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMnM7XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDcwMHB4KSB7XG4gICAgbGVmdDogMjQwcHg7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcbiAgfVxuXG4gIHN2ZyB7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGNvbG9yOiAjMTU1MzY2O1xuICB9XG59XG4iLCIubXVsdGlzZWxlY3Qge1xuICBtaW4td2lkdGg6IDE4MHB4ICFpbXBvcnRhbnQ7XG4gIGN1cnNvcjogcG9pbnRlciAhaW1wb3J0YW50O1xufVxuLm11bHRpc2VsZWN0LmlzLWFjdGl2ZSB7XG4gIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbn1cbi5vcmdhbml6YXRpb24sXG4ucm9sZSxcbi5zdGF0dXMge1xuICAubXVsdGlzZWxlY3Qge1xuICAgIHdpZHRoOiAxNjBweCAhaW1wb3J0YW50O1xuICB9XG59XG4uZmlsdGVycyB7XG4gIC5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlciB7XG4gICAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDtcbiAgICBjb2xvcjogcmdiKHZhcigtLWJsdWVjb3JhbCkpICFpbXBvcnRhbnQ7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xuICB9XG59XG4ubXVsdGlzZWxlY3Qtc2VhcmNoIHtcbiAgY3Vyc29yOiBwb2ludGVyICFpbXBvcnRhbnQ7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudDtcbn1cbi5tdWx0aXNlbGVjdC1tdWx0aXBsZS1sYWJlbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xuICBmb250LXNpemU6IDEycHggIWltcG9ydGFudDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDtcbiAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSwgMCkgIWltcG9ydGFudDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLm11bHRpc2VsZWN0LWxhYmVsLXdyYXBwZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLm11bHRpc2VsZWN0LW11bHRpcGxlLWxhYmVsIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDtcbiAgICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCAwKSAhaW1wb3J0YW50O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgJjo6YWZ0ZXIge1xuICAgICAgY29udGVudDogdmFyKC0tbGFiZWwpO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICBsZWZ0OiAxNHB4O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xuICAgICAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgICBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50O1xuICAgICAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSkgIWltcG9ydGFudDtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgfVxuICB9XG4gIC5tdWx0aXNlbGVjdC1zaW5nbGUtbGFiZWwtdGV4dCB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdWx0aXNlbGVjdC1zaW5nbGUtbGFiZWwge1xuICAgIC8vIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDtcbiAgICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCAwKSAhaW1wb3J0YW50O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgJjo6YWZ0ZXIge1xuICAgICAgY29udGVudDogdmFyKC0tbGFiZWwpO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICBsZWZ0OiAxNHB4O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xuICAgICAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgICBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50O1xuICAgICAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSkgIWltcG9ydGFudDtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgfVxuICB9XG59XG5cbi5tdWx0aXNlbGVjdC1jYXJldCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1ibHVlY29yYWwpKSAhaW1wb3J0YW50IDtcbiAgJjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcgJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaGVpZ2h0OiA0cHg7XG4gICAgd2lkdGg6IDRweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHJvdGF0ZSg0NWRlZyk7XG4gICAgei1pbmRleDogMTA7XG4gICAgdG9wOiAzMCU7XG4gIH1cbn1cbi5tdWx0aXNlbGVjdC1jbGVhci1pY29uIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xufVxuLm11bHRpc2VsZWN0LXNlYXJjaDpmb2N1cy13aXRoaW4gPiAuc2VsZWN0ZWQtcGxhY2Vob2xkZXIge1xuICBvcGFjaXR5OiAwO1xufVxuLnBvcHVwLW1vZGVsIHtcbiAgLm11bHRpc2VsZWN0IHtcbiAgICBoZWlnaHQ6IDUwcHg7XG4gIH1cbiAgLm11bHRpc2VsZWN0LXBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogcmdiKHZhcigtLW4tNDApKSAhaW1wb3J0YW50IDtcbiAgICBmb250LXdlaWdodDogNDAwICFpbXBvcnRhbnQ7XG4gIH1cbn1cbi5tdWx0aXNlbGVjdC1vcHRpb24uaXMtcG9pbnRlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG4ubXVsdGlzZWxlY3QtZHJvcGRvd24ge1xuICBvdmVyZmxvdy14OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgei1pbmRleDogNTAgIWltcG9ydGFudDtcbn1cblxuLm11bHRpc2VsZWN0LW9wdGlvbiB7XG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1uLTEwKSkgIWltcG9ydGFudDtcbiAgfVxufVxuLm11bHRpc2VsZWN0LW9wdGlvbi5pcy1zZWxlY3RlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1uLTIwKSkgIWltcG9ydGFudDtcbiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7XG59XG4iLCIjbGF1bmNoZXIge1xuICBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDtcbiAgYm90dG9tOiAzNXB4ICFpbXBvcnRhbnQ7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgYm9yZGVyLXJhZGl1czogOTk5OTlweCAhaW1wb3J0YW50O1xuICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMjEsIDgzLCAxMDIpICFpbXBvcnRhbnQ7XG59XG4iLCIuZHBfX2lucHV0IHtcbiAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMDtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgY29sb3I6ICMyYTJmMzAgIWltcG9ydGFudDtcbiAgcGFkZGluZzogMCA4cHggIWltcG9ydGFudDtcbiAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0ICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmctcmlnaHQ6IDE2cHggIWltcG9ydGFudDtcbn1cbi5hbGwtdGltZSB7XG4gIC5kcF9fc2VsZWN0aW9uX3ByZXZpZXcge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuLmVtcHR5IHtcbiAgLmRwX19pbnB1dF93cmFwIHtcbiAgICBtYXgtd2lkdGg6IDExMHB4ICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLmRwX19pbnB1dDo6cGxhY2Vob2xkZXIge1xuICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgY29sb3I6ICMyYTJmMzAgIWltcG9ydGFudDtcbn1cblxuLmRwX19pbnB1dF9pY29uIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4uZHBfX2NsZWFyX2ljb24ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4uZHBfX2lucHV0X3JlYWRvbmx5IHtcbiAgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7XG59XG4uZHBfX2NhbGVuZGFyX2hlYWRlcl9pdGVtIHtcbiAgZm9udC13ZWlnaHQ6IGxpZ2h0ZXIgIWltcG9ydGFudDtcbiAgY29sb3I6IHJnYmEodmFyKC0tbi00MCkpICFpbXBvcnRhbnQ7XG59XG5cbi5kcF9fY2FsZW5kYXJfaXRlbSAqIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIG1hcmdpbi1yaWdodDogMDtcbn1cbi5kcF9fY2VsbF9pbm5lciB7XG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNDApKSAhaW1wb3J0YW50O1xuICBoZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgd2lkdGg6IDQwcHggIWltcG9ydGFudDtcbn1cblxuLmRwX19vdmVybGF5X2NlbGw6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXNwcmluZy01MCksIDEpICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xufVxuXG4uZHBfX292ZXJsYXlfY2VsbF9hY3RpdmUge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXNwcmluZy01MCksIDEpICFpbXBvcnRhbnQ7XG59XG5cbi5kcF9fY2FsZW5kYXJfcm93IHtcbiAgZ2FwOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5kcF9fdG9kYXkge1xuICBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1zcHJpbmctNTApLCAxKSAhaW1wb3J0YW50O1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICBjb2xvcjogdmFyKC0tbi00MCkgIWltcG9ydGFudDtcbn1cblxuLmRwX19yYW5nZV9lbmQge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXNwcmluZy0yMCksIDEpICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xuICBib3JkZXItcmFkaXVzOiAwIDUwJSA1MCUgMCAhaW1wb3J0YW50O1xuICBib3JkZXI6IDAgIWltcG9ydGFudDtcbn1cblxuLmRwX19yYW5nZV9zdGFydCB7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3ByaW5nLTIwKSwgMSkgIWltcG9ydGFudDtcbiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDUwJSAwIDAgNDAlICFpbXBvcnRhbnQ7XG59XG5cbi5kcF9fcmFuZ2VfYmV0d2VlbiB7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3ByaW5nLTIwKSwgMSkgIWltcG9ydGFudDtcbiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5kcF9fcHJlc2V0X3JhbmdlcyB7XG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNTApKSAhaW1wb3J0YW50O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnQ7XG4gIG1pbi13aWR0aDogMTUwcHggIWltcG9ydGFudDtcbn1cbi5kcF9fcHJlc2V0X3JhbmdlIHtcbiAgY29sb3I6IHJnYmEodmFyKC0tbi01MCkpICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmctbGVmdDogOHB4ICFpbXBvcnRhbnQ7XG4gIGZvbnQtc2l6ZTogMC44cmVtICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiA1MDAgIWltcG9ydGFudDtcbiAgbWFyZ2luOiA0cHggYXV0byAhaW1wb3J0YW50O1xufVxuXG4uZHBfX3ByZXNldF9yYW5nZTpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3ByaW5nLTIwKSwgMSkgIWltcG9ydGFudDtcbiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5mb250LXNwcmluZyB7XG4gIGNvbG9yOiByZ2JhKHZhcigtLXNwcmluZy01MCksIDEpICFpbXBvcnRhbnQ7XG59XG5cbi5mb250LW5ldXRyYWwge1xuICBjb2xvcjogdmFyKC0tbi01MCkgIWltcG9ydGFudDtcbn1cblxuLmRwX19pbnB1dCB7XG4gIG1hcmdpbi1yaWdodDogMTJweCAhaW1wb3J0YW50O1xufVxuXG4uZGF0ZXJhbmdlLWl0ZW0ge1xuICBwYWRkaW5nOiA4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgbWFyZ2luLXRvcDogMnB4O1xuICBtYXJnaW4tYm90dG9tOiAycHg7XG59XG5cbi5kYXRlcmFuZ2UtaXRlbTpob3ZlciB7XG4gIEBhcHBseSBiZy1zcHJpbmctMjA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgY29sb3I6IHdoaXRlO1xufVxuLmRhdGVyYW5nZS1pdGVtLWFjdGl2ZSB7XG4gIEBhcHBseSBiZy1zcHJpbmctMjA7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cbi5wcmVzZXQtcmFuZ2UtaXRlbS1hY3RpdmUge1xuICBAYXBwbHkgYmctc3ByaW5nLTIwO1xuICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/public/css/webportal-app.css b/public/css/webportal-app.css index 1d5b45af82..11fbf63c72 100644 --- a/public/css/webportal-app.css +++ b/public/css/webportal-app.css @@ -415,53 +415,6 @@ video { --tw-backdrop-sepia: ; } -::-webkit-backdrop { - --tw-border-spacing-x: 0; - --tw-border-spacing-y: 0; - --tw-translate-x: 0; - --tw-translate-y: 0; - --tw-rotate: 0; - --tw-skew-x: 0; - --tw-skew-y: 0; - --tw-scale-x: 1; - --tw-scale-y: 1; - --tw-pan-x: ; - --tw-pan-y: ; - --tw-pinch-zoom: ; - --tw-scroll-snap-strictness: proximity; - --tw-ordinal: ; - --tw-slashed-zero: ; - --tw-numeric-figure: ; - --tw-numeric-spacing: ; - --tw-numeric-fraction: ; - --tw-ring-inset: ; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: rgb(59 130 246 / 0.5); - --tw-ring-offset-shadow: 0 0 #0000; - --tw-ring-shadow: 0 0 #0000; - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - --tw-blur: ; - --tw-brightness: ; - --tw-contrast: ; - --tw-grayscale: ; - --tw-hue-rotate: ; - --tw-invert: ; - --tw-saturate: ; - --tw-sepia: ; - --tw-drop-shadow: ; - --tw-backdrop-blur: ; - --tw-backdrop-brightness: ; - --tw-backdrop-contrast: ; - --tw-backdrop-grayscale: ; - --tw-backdrop-hue-rotate: ; - --tw-backdrop-invert: ; - --tw-backdrop-opacity: ; - --tw-backdrop-saturate: ; - --tw-backdrop-sepia: ; -} - ::backdrop { --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; @@ -535,6 +488,12 @@ video { max-width: 1280px; } } +@media (min-width: 1415px) { + + .container { + max-width: 1415px; + } +} @media (min-width: 1536px) { .container { @@ -577,7 +536,6 @@ video { position: relative; } .sticky { - position: -webkit-sticky; position: sticky; } .inset-0 { @@ -595,6 +553,9 @@ video { .-bottom-24 { bottom: -6rem; } +.left-0 { + left: 0px; +} .top-full { top: 100%; } @@ -631,9 +592,6 @@ video { .top-1\/2 { top: 50%; } -.left-0 { - left: 0px; -} .top-\[50vh\] { top: 50vh; } @@ -724,6 +682,9 @@ video { .left-5 { left: 1.25rem; } +.left-8 { + left: 2rem; +} .top-16 { top: 4rem; } @@ -1075,6 +1036,9 @@ video { .-mt-3 { margin-top: -0.75rem; } +.-mb-8 { + margin-bottom: -2rem; +} .mr-10 { margin-right: 2.5rem; } @@ -1133,7 +1097,6 @@ video { height: 0.125rem; } .h-fit { - height: -webkit-fit-content; height: -moz-fit-content; height: fit-content; } @@ -1258,7 +1221,6 @@ video { width: 0.75rem; } .w-fit { - width: -webkit-fit-content; width: -moz-fit-content; width: fit-content; } @@ -1388,9 +1350,6 @@ video { .w-\[150px\] { width: 150px; } -.w-\[170px\] { - width: 170px; -} .w-\[800px\] { width: 800px; } @@ -1520,6 +1479,9 @@ video { .basis-2\/4 { flex-basis: 50%; } +.basis-4\/6 { + flex-basis: 66.666667%; +} .basis-auto { flex-basis: auto; } @@ -1531,6 +1493,10 @@ video { --tw-translate-y: -50%; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); } +.\!-translate-x-4 { + --tw-translate-x: -1rem !important; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) !important; +} .-translate-y-3 { --tw-translate-y: -0.75rem; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); @@ -1633,12 +1599,6 @@ video { .transform { transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); } -@-webkit-keyframes spin { - - to { - transform: rotate(360deg); - } -} @keyframes spin { to { @@ -1646,8 +1606,7 @@ video { } } .animate-spin { - -webkit-animation: spin 1s linear infinite; - animation: spin 1s linear infinite; + animation: spin 1s linear infinite; } .cursor-pointer { cursor: pointer; @@ -2393,9 +2352,6 @@ video { .pt-10 { padding-top: 2.5rem; } -.pt-11 { - padding-top: 2.75rem; -} .text-left { text-align: left; } @@ -2430,8 +2386,8 @@ video { font-size: 0.75rem !important; line-height: 1rem !important; } -.text-\[8px\] { - font-size: 8px; +.text-\[6px\] { + font-size: 6px; } .text-tiny { font-size: 10px; @@ -2451,9 +2407,6 @@ video { font-size: 1.25rem; line-height: 1.75rem; } -.text-\[6px\] { - font-size: 6px; -} .text-\[4px\] { font-size: 4px; } @@ -2880,7 +2833,7 @@ h4 { } } .header { - max-width: 1166px; + max-width: 1400px; margin: auto; } @@ -2905,7 +2858,10 @@ h4 { position: relative; padding: 20px 8px; font-weight: normal; + text-align: left; font-style: normal; + white-space: pre-wrap; + display: block; } .nav__links a:hover { --tw-text-opacity: 1; @@ -2920,7 +2876,6 @@ h4 { line-height: 1rem; --tw-text-opacity: 1; color: rgba(var(--white), var(--tw-text-opacity)); - width: -webkit-fit-content; width: -moz-fit-content; width: fit-content; padding: 8px 18px; @@ -2937,7 +2892,7 @@ h4 { padding-bottom: 24px; } -@media screen and (min-width: 1280px) { +@media screen and (min-width: 1415px) { .nav__links { padding: 0px 8px 20px; } @@ -2978,7 +2933,7 @@ h4 { opacity: 0; transition-duration: 300ms; } -@media (min-width: 1280px) { +@media (min-width: 1415px) { .dropdown__content { display: block; @@ -2997,23 +2952,23 @@ h4 { opacity: 1; } -@media screen and (max-width: 1280px) { +@media screen and (max-width: 1415px) { .nav__list { position: fixed; top: 0; - right: 0; + left: 0; flex-direction: column; - justify-content: center; + justify-content: start; width: 300px; height: 100vh; - padding: 30px; + padding: 65px 30px; --tw-bg-opacity: 1; background-color: rgba(var(--bluecoral), var(--tw-bg-opacity)); --tw-text-opacity: 1; color: rgba(var(--white), var(--tw-text-opacity)); font-size: 16px; text-align: center; - transform: translateX(105%); + transform: translateX(-105%); transition: 0.3s; z-index: 110; filter: drop-shadow(0px 0px 8px #000); @@ -3022,7 +2977,7 @@ h4 { --tw-text-opacity: 1; color: rgba(var(--white), var(--tw-text-opacity)); position: relative; - padding-bottom: 24px; + padding: 0 0 24px 6px; } .nav__list .active a:hover { --tw-text-opacity: 1; @@ -3030,12 +2985,13 @@ h4 { } .nav__list .active a::after { position: absolute; - bottom: 0; - left: 0; - width: 100%; - height: 4px; - transform: scale(0, 1); + top: -4px; + left: -6px; + width: 4px; + height: 60%; + transform: scale(1, 0); transition: 0.3s; + border-radius: 100px; content: ""; --tw-bg-opacity: 1; background-color: rgba(var(--turquoise), var(--tw-bg-opacity)); @@ -3052,7 +3008,7 @@ h4 { } } -@media (min-width: 1280px) { +@media (min-width: 1415px) { #menu-overlay { display: none; @@ -3295,6 +3251,16 @@ h4 { color: white !important; } +.web-header .language-hover:hover a { + color: #2a2f30 !important; +} + +@media screen and (max-width: 1415px) { + .web-header .nav__links { + padding: 8px; + font-size: 12px; + } +} .main__container { max-width: 1166px; margin: auto; @@ -3437,19 +3403,8 @@ html { } .smooth { - -webkit-animation: fadeInAnimation ease 0.3s; - animation: fadeInAnimation ease 0.3s; - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; -} - -@-webkit-keyframes fadeInAnimation { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } + animation: fadeInAnimation ease 0.3s; + animation-iteration-count: 1; } @keyframes fadeInAnimation { @@ -4925,8 +4880,7 @@ button { } } .overlay__content .spinner { - -webkit-animation: spin 1s linear infinite; - animation: spin 1s linear infinite; + animation: spin 1s linear infinite; border-radius: 9999px; border-width: 2px; border-color: rgba(var(--n-10), var(--tw-border-opacity)); @@ -4969,8 +4923,7 @@ button { } } .loadoverlay__content .spinner { - -webkit-animation: spin 1s linear infinite; - animation: spin 1s linear infinite; + animation: spin 1s linear infinite; border-radius: 9999px; border-width: 2px; border-color: rgba(var(--n-10), var(--tw-border-opacity)); @@ -4994,10 +4947,6 @@ button { transition-duration: 300ms; z-index: 120; } -.hamburger.active span { - --tw-bg-opacity: 1; - background-color: rgba(var(--n-10), var(--tw-bg-opacity)); -} .hamburger span { pointer-events: none; position: absolute; @@ -5012,17 +4961,6 @@ button { width: 30px; transform: translateY(-15px); } -.hamburger.active span:nth-child(1) { - width: 40px; - transform: rotate(45deg) translateZ(0); -} -.hamburger.active span:nth-child(2) { - transform: translateX(60px); -} -.hamburger.active span:nth-child(3) { - width: 40px; - transform: translateY(4px) rotate(315deg); -} .hamburger span:nth-child(3) { top: 18px; left: 2px; @@ -5039,20 +4977,6 @@ button { } } -.home-burger-menu.active { - translate: -490% -90%; -} -@media screen and (min-width: 640px) { - .home-burger-menu.active { - translate: -350% -140%; - } -} -@media screen and (max-width: 440px) { - .home-burger-menu.active { - translate: -380% -90%; - } -} - html { visibility: visible; opacity: 1; @@ -5063,103 +4987,52 @@ html { text-transform: uppercase; } -.file\:cursor-pointer::-webkit-file-upload-button { - cursor: pointer; -} - .file\:cursor-pointer::file-selector-button { cursor: pointer; } -.file\:rounded-full::-webkit-file-upload-button { - border-radius: 9999px; -} - .file\:rounded-full::file-selector-button { border-radius: 9999px; } -.file\:border::-webkit-file-upload-button { - border-width: 1px; -} - .file\:border::file-selector-button { border-width: 1px; } -.file\:border-solid::-webkit-file-upload-button { - border-style: solid; -} - .file\:border-solid::file-selector-button { border-style: solid; } -.file\:border-spring-50::-webkit-file-upload-button { - --tw-border-opacity: 1; - border-color: rgba(var(--spring-50), var(--tw-border-opacity)); -} - .file\:border-spring-50::file-selector-button { --tw-border-opacity: 1; border-color: rgba(var(--spring-50), var(--tw-border-opacity)); } -.file\:bg-white::-webkit-file-upload-button { - --tw-bg-opacity: 1; - background-color: rgba(var(--white), var(--tw-bg-opacity)); -} - .file\:bg-white::file-selector-button { --tw-bg-opacity: 1; background-color: rgba(var(--white), var(--tw-bg-opacity)); } -.file\:px-4::-webkit-file-upload-button { - padding-left: 1rem; - padding-right: 1rem; -} - .file\:px-4::file-selector-button { padding-left: 1rem; padding-right: 1rem; } -.file\:py-0\.5::-webkit-file-upload-button { - padding-top: 0.125rem; - padding-bottom: 0.125rem; -} - .file\:py-0\.5::file-selector-button { padding-top: 0.125rem; padding-bottom: 0.125rem; } -.file\:py-0::-webkit-file-upload-button { - padding-top: 0px; - padding-bottom: 0px; -} - .file\:py-0::file-selector-button { padding-top: 0px; padding-bottom: 0px; } -.file\:text-spring-50::-webkit-file-upload-button { - --tw-text-opacity: 1; - color: rgba(var(--spring-50), var(--tw-text-opacity)); -} - .file\:text-spring-50::file-selector-button { --tw-text-opacity: 1; color: rgba(var(--spring-50), var(--tw-text-opacity)); } -.file\:outline-none::-webkit-file-upload-button { - outline: 2px solid transparent; - outline-offset: 2px; -} - .file\:outline-none::file-selector-button { outline: 2px solid transparent; outline-offset: 2px; @@ -5452,10 +5325,6 @@ html { line-height: 2.5rem; } - .sm\:text-heading-2 { - font-size: 56px; - } - .sm\:leading-10 { line-height: 2.5rem; } @@ -5681,6 +5550,10 @@ html { margin-bottom: 2rem; } + .xl\:mt-6 { + margin-top: 1.5rem; + } + .xl\:block { display: block; } @@ -5717,12 +5590,6 @@ html { flex-direction: row; } - .xl\:space-x-3 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(0.75rem * var(--tw-space-x-reverse)); - margin-left: calc(0.75rem * calc(1 - var(--tw-space-x-reverse))); - } - .xl\:px-10 { padding-left: 2.5rem; padding-right: 2.5rem; @@ -5761,10 +5628,6 @@ html { padding-right: 1.5rem; } - .xl\:pt-0 { - padding-top: 0px; - } - .xl\:pr-40 { padding-right: 10rem; } @@ -5774,6 +5637,45 @@ html { } } +@media (min-width: 1415px) { + + .\31xl\:mb-0 { + margin-bottom: 0px; + } + + .\31xl\:block { + display: block; + } + + .\31xl\:hidden { + display: none; + } + + .\31xl\:flex-row { + flex-direction: row; + } + + .\31xl\:flex-row-reverse { + flex-direction: row-reverse; + } + + .\31xl\:border-b-transparent { + border-bottom-color: transparent; + } + + .\31xl\:pb-0 { + padding-bottom: 0px; + } + + .\31xl\:pt-0 { + padding-top: 0px; + } + + .\31xl\:outline { + outline-style: solid; + } +} + @media (min-width: 1536px) { .\32xl\:w-auto { @@ -5786,4 +5688,4 @@ html { background-color: rgba(var(--n-10), var(--tw-bg-opacity)); } -/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzL3dlYnBvcnRhbC1hcHAuY3NzIiwibWFwcGluZ3MiOiJBQUFBOztDQUFBOzs7Q0FBQTs7QUFBQTs7O0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTs7RUFBQTtBQUFBOztBQUFBOzs7OztDQUFBOztBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7S0FBQTtFQUFBO0FBQUE7O0FBQUE7OztDQUFBOztBQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOzs7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTtFQUFBO1VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTs7Ozs7O0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOztFQUFBO0FBQUE7O0FBQUE7OztDQUFBOztBQUFBOzs7O0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTs7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTtFQUFBO0FBQUE7O0FBQUE7Ozs7Q0FBQTs7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOzs7O0NBQUE7O0FBQUE7Ozs7O0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTs7RUFBQTtBQUFBOztBQUFBOzs7Q0FBQTs7QUFBQTs7OztFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOztFQUFBO0FBQUE7O0FBQUE7OztDQUFBOztBQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOzs7Ozs7Ozs7Ozs7O0VBQUE7QUFBQTs7QUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTtFQUFBO0FBQUE7O0FBQUE7OztFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOztFQUFBO0FBQUE7O0FBQUE7O0NBQUE7QUFBQTtFQUFBO0FBQUE7O0FBQUE7Ozs7Q0FBQTs7QUFBQTs7Ozs7Ozs7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7O0VBQUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FDQUE7RUFBQTtBQUFBO0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFBQTs7RUFBQTtJQUFBO0VBQUE7QUFBQTtBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBO0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFBQTs7RUFBQTtJQUFBO0VBQUE7QUFBQTtBQ0FBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBO0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO1VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7T0FBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7VUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FDQUE7RUFDRTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBRUE7RUFDQTtFQUlBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0FDWkY7O0FDekRBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFBQTtFQUFBO0FENERGOztBQ3pEQTtFQUNF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SjtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQ0E7RUFDRTtFQUNBO0VBQ0E7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBTmt2Qk47QU0vdUJNO0VBQUE7RUFBQTtBQUFBO0FBS0Y7RUFBQTtFQUFBO0FBQUE7QUFJQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBRUU7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUdBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFNRjs7O0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBRUU7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7OztFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFHQTs7O0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0E7RUFBQTtFQUFBO0FBQUE7QUFBQTs7O0VBQUE7RUFBQTtBQUFBO0FBTUY7O0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUVFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUY7RUFBQTtBQUFBO0FBRUU7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0VBQ0E7QUFGQTtBQU1GO0VBQ0U7RUFDQTtFQUNBO0FOa3ZCTjtBTTl1Qkk7RUFBQTtBQUFBO0FBQ0E7RUFDRTtFQUNBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QU5rdkJOO0FNbHZCTTtFQUFBO0FBQUE7QUFFRjtFQUNFO0VBQ0E7RUFBQTtFQUFBO0VB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RTtFQUNFO0FUK3JDSjs7QVN6ckNJO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFFRjtFQUNFO0FUNnJDSjs7QVN2ckNFOztFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTs7QUFNQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0U7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFJQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUdFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7RUFDQTtBQUZBO0FBTUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUo7RUFDRTtBVHNyQ0o7QVNsckNJO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFNRjtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFJRTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtBQUFBOztBQU1GO0VBQUE7RUFBQTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUdFO0VBQUE7RUFBQTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBRUE7RUFDRTtFQUNBO0FUZ3JDTjtBUzdxQ007RUFBQTtFQUFBO0FBQUE7QUFJRjtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFJQTtFQUFBO0VBQUE7QUFBQTtBQUdGO0VBQ0U7RUFDQTtBVDZxQ0o7O0FTdnFDRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUlFO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtBQUFBOztBQUtGO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUlFO0VBQUE7RUFBQTtBQUFBOztBQUtGO0VBQUE7QUFBQTs7QUFJQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFJRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUtGO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBSUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFJRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFHRjtFQUNFO0VBQ0E7QVRzcUNKOztBVTU0Q0U7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0VBQ0E7QUFGQTtBQUtFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBSUU7RUFBQTtBQUFBO0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO1VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0VBQ0E7RUFDQTtBQUhBOztBQVFKO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBSUU7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFJQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFJRTtFQUFBO0FBQUE7QUFBQTs7RUFBQTtJQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7VUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7RUFDQTtFQUNBO0FBSEE7O0FDakNKO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFLSTtFQUFBO0VBQUE7QUFBQTtBQUtGO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFFRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FYazdDSjtBVy82Q0k7RUFDRTtFQUNBO0FYaTdDTjtBVy82Q0k7RUFDRTtBWGk3Q047QVcvNkNJO0VBQ0U7RUFDQTtBWGk3Q047QVc5NkNFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QVhnN0NKOztBVzc2Q0E7RUFDRTtBWGc3Q0Y7QVc5NkNFO0VBSEY7SUFJSTtFWGk3Q0Y7QUFDRjs7QVc5NkNBO0VBSUU7QVg4NkNGO0FXajdDRTtFQURGO0lBRUk7RVhvN0NGO0FBQ0Y7QVdqN0NFO0VBTkY7SUFPSTtFWG83Q0Y7QUFDRjs7QUFuOUNBO0VBQ0U7RUFDQTtFQUNBO0FBczlDRjs7QUpqL0NBO0VBQUE7Q2dCQUE7O0FoQkFBO0VBQUE7Q2dCQUE7O0FoQkFBO0VBQUE7Q2dCQUE7O0FoQkFBO0VBQUE7Q2dCQUE7O0FoQkFBO0VBQUE7Q2dCQUE7O0FoQkFBO0VBQUE7Q2dCQUE7O0FoQkFBO0VBQUE7Q2dCQUE7O0FoQkFBO0VBQUE7Q2dCQUE7O0FoQkFBO0VBQUE7Q2dCQUE7O0FoQkFBO0VBQUEsdUJnQkFBO0VoQkFBO0NnQkFBOztBaEJBQTtFQUFBLHVCZ0JBQTtFaEJBQTtDZ0JBQTs7QWhCQUE7RUFBQSxtQmdCQUE7RWhCQUE7Q2dCQUE7O0FoQkFBO0VBQUEsbUJnQkFBO0VoQkFBO0NnQkFBOztBaEJBQTtFQUFBLG1CZ0JBQTtFaEJBQTtDZ0JBQTs7QWhCQUE7RUFBQSxtQmdCQUE7RWhCQUE7Q2dCQUE7O0FoQkFBO0VBQUEsc0JnQkFBO0VoQkFBO0NnQkFBOztBaEJBQTtFQUFBLHNCZ0JBQTtFaEJBQTtDZ0JBQTs7QWhCQUE7RUFBQSxpQmdCQUE7RWhCQUE7Q2dCQUE7O0FoQkFBO0VBQUEsaUJnQkFBO0VoQkFBO0NnQkFBOztBaEJBQTtFQUFBLHFCZ0JBQTtFaEJBQTtDZ0JBQTs7QWhCQUE7RUFBQSxxQmdCQUE7RWhCQUE7Q2dCQUE7O0FoQkFBO0VBQUEsK0JnQkFBO0VoQkFBO0NnQkFBOztBaEJBQTtFQUFBLCtCZ0JBQTtFaEJBQTtDZ0JBQTs7QWhCQUE7RUFBQTtDZ0JBQTs7QWhCQUE7RUFBQTtDZ0JBQTs7QWhCQUE7RUFBQSx1QmdCQUE7RWhCQUE7Q2dCQUE7O0FoQkFBO0VBQUEsdUJnQkFBO0VoQkFBO0NnQkFBOztBaEJBQTtFQUFBLG1CZ0JBQTtFaEJBQTtDZ0JBQTs7QWhCQUE7RUFBQSxtQmdCQUE7RWhCQUE7Q2dCQUE7O0FoQkFBO0VBQUEsbUJnQkFBO0VoQkFBO0NnQkFBOztBaEJBQTtFQUFBLG1CZ0JBQTtFaEJBQTtDZ0JBQTs7QWhCQUE7RUFBQSxtQmdCQUE7RWhCQUE7Q2dCQUE7O0FoQkFBO0VBQUEscUJnQkFBO0VoQkFBO0NnQkFBOztBaEJBQTtFQUFBLHFCZ0JBQTtFaEJBQTtDZ0JBQTs7QWhCQUE7RUFBQSxnQ2dCQUE7RWhCQUE7Q2dCQUE7O0FoQkFBO0VBQUEscUJnQkFBO0VoQkFBO0NnQkFBOztBaEJBQTtFQUFBLHFCZ0JBQTtFaEJBQTtDZ0JBQTs7QWhCQUE7RUFBQSxxQmdCQUE7RWhCQUE7Q2dCQUE7O0FoQkFBO0VBQUE7Q2dCQUE7O0FoQkFBO0VBQUE7Q2dCQUE7O0FoQkFBO0VBQUEsc0JnQkFBO0VoQkFBO0NnQkFBOztBaEJBQTtFQUFBLHFCZ0JBQTtFaEJBQTtDZ0JBQTs7QWhCQUE7RUFBQTtDZ0JBQTs7QWhCQUE7O0VBQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQSxvQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUEsd0JnQkFBO0loQkFBLCtEZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQSxnQ2dCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUEsK0JnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBLHFCZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQSxvQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUEsa0JnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBLG9CZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQSxtQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUEsb0JnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBLHNCZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQSxzQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUEscUJnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBLHFCZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQSxrQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUEsZ0JnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBLG1CZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTtDQUFBOztBaEJBQTs7RUFBQTtJQUFBLGdCZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQSw2QmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUEsNEJnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBLHFCZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQSxtQmdCQUE7SWhCQUE7R2dCQUE7Q0FBQTs7QWhCQUE7O0VBQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQSxrQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUEscUJnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBO0NBQUE7O0FoQkFBOztFQUFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUEsa0JnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBLHdCZ0JBQTtJaEJBQSx3RGdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUEscUJnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBLGtCZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQSxxQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUEsc0JnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBLG1CZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQSxxQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7Q0FBQTs7QWhCQUE7O0VBQUE7SUFBQTtHZ0JBQTtDQUFBOztBaEJBQTtFQUFBLG1CZ0JBQTtFaEJBQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy90YWlsd2luZGNzcy9iYXNlLmNzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdGFpbHdpbmRjc3MvY29tcG9uZW50cy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3RhaWx3aW5kY3NzL3V0aWxpdGllcy5jc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2Fic3RyYWN0cy9fdmFyaWFibGVzLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL3dlYnBvcnRhbC1hcHAuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvYmFzZS9fdHlwb2dyYXBoeS5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9sYXlvdXRzL19oZWFkZXIuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvbGF5b3V0cy9fbWFpbi5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9sYXlvdXRzL193ZWJwb3J0YWxwYWdlcy5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnQvX2lucHV0LnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudC9fZm9ybXMuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvbGF5b3V0cy9fZm9vdGVyLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudC9fc2VsZWN0Mi5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnQvX2J1dHRvbi5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnQvX292ZXJsYXkuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50L19oYW1idXJnZXIuc2NzcyIsIndlYnBhY2s6Ly8vPG5vIHNvdXJjZT4iXSwic291cmNlc0NvbnRlbnQiOlsiQHRhaWx3aW5kIGJhc2U7XG4iLCJAdGFpbHdpbmQgY29tcG9uZW50cztcbiIsIkB0YWlsd2luZCB1dGlsaXRpZXM7XG4iLCI6cm9vdCB7XG4gIC0tYmxhY2s6IDAsIDAsIDA7XG4gIC0td2hpdGU6IDI1NSwgMjU1LCAyNTU7XG4gIC0tdHJhbnNwYXJlbnQ6IHRyYW5zcGFyZW50O1xuXG4gIC8vIE5ldXRyYWxzXG4gIC0tbi0wOiAyNTUsIDI1NSwgMjU1O1xuICAtLW4tMTA6IDI0MSwgMjQ3LCAyNDk7XG4gIC0tbi0yMDogMjEzLCAyMjAsIDIyMjtcbiAgLS1uLTMwOiAxNjYsIDE4MSwgMTg2O1xuICAtLW4tNDA6IDEwNCwgMTIxLCAxMjY7XG4gIC0tbi01MDogNDIsIDQ3LCA0ODtcblxuICAvLyBQcmltYXJ5IGNvbG9yc1xuICAtLXR1cnF1b2lzZTogNiwgMjE5LCAyMjg7XG4gIC0tYmx1ZWNvcmFsOiAyMSwgODMsIDEwMjtcblxuICAtLWJsdWVjb3JhbC00MDogNjAsIDExMiwgMTI4O1xuICAtLWJsdWVjb3JhbC01MDogMjEsIDgzLCAxMDI7XG5cbiAgLy8gU2Vjb25kYXJ5IGNvbG9yc1xuICAvLyBDYW1lbFxuICAtLWNhbWVsLTEwOiAyNTIsIDIzOSwgMjI4O1xuICAtLWNhbWVsLTIwOiAyNDksIDIxOSwgMTkzO1xuICAtLWNhbWVsLTMwOiAyNDgsIDIwNywgMTczO1xuICAtLWNhbWVsLTQwOiAyNDYsIDE5NSwgMTUyO1xuICAtLWNhbWVsLTUwOiAyNDQsIDE4MywgMTMyO1xuICAvLyBUZWFsXG4gIC0tdGVhbC0xMDogMjMxLCAyNDMsIDI0MTtcbiAgLS10ZWFsLTIwOiAyMTUsIDIzNSwgMjMyO1xuICAtLXRlYWwtMzA6IDE5NSwgMjI0LCAyMjA7XG4gIC0tdGVhbC00MDogMTc1LCAyMTQsIDIwOTtcbiAgLS10ZWFsLTUwOiAxMzUsIDE5NCwgMTg2O1xuICAvLyBTcHJpbmdcbiAgLS1zcHJpbmctMTA6IDE3OCwgMjIxLCAyMTE7XG4gIC0tc3ByaW5nLTIwOiAxMzksIDIwNCwgMTg5O1xuICAtLXNwcmluZy0zMDogMTAwLCAxODcsIDE2NztcbiAgLS1zcHJpbmctNDA6IDYyLCAxNzAsIDE0NTtcbiAgLS1zcHJpbmctNTA6IDIzLCAxNTMsIDEyMztcbiAgLy8gTGFnb29uXG4gIC0tbGFnb29uLTEwOiAyMDksIDIzOCwgMjQwO1xuICAtLWxhZ29vbi0yMDogMTc4LCAyMjcsIDIyOTtcbiAgLS1sYWdvb24tMzA6IDEzOSwgMjEzLCAyMTY7XG4gIC0tbGFnb29uLTQwOiAxMDEsIDIwMCwgMjA0O1xuICAtLWxhZ29vbi01MDogMjQsIDE3MiwgMTc4O1xuICAvLyBTYWxtb25cbiAgLS1zYWxtb24tMTA6IDI1NSwgMjI3LCAyMjQ7XG4gIC0tc2FsbW9uLTIwOiAyNTUsIDIwOCwgMjAzO1xuICAtLXNhbG1vbi0zMDogMjU1LCAxODQsIDE3NztcbiAgLS1zYWxtb24tNDA6IDI1NSwgMTYxLCAxNTI7XG4gIC0tc2FsbW9uLTUwOiAyNTUsIDExNCwgMTAwO1xuICAvLyBMYXZlbmRlclxuICAtLWxhdmVuZGVyLTEwOiAyMzcsIDIyNiwgMjUxO1xuICAtLWxhdmVuZGVyLTIwOiAyMjUsIDIwNywgMjQ4O1xuICAtLWxhdmVuZGVyLTMwOiAyMTAsIDE4MiwgMjQ0O1xuICAtLWxhdmVuZGVyLTQwOiAxOTYsIDE1OCwgMjQwO1xuICAtLWxhdmVuZGVyLTUwOiAxNjYsIDExMCwgMjMzO1xuICAtLWxhdmVuZGVyLTYwOiAyNDYsIDI0MCwgMjU1O1xuICAvLyBDcmltc29uXG4gIC0tY3JpbXNvbi0xMDogMjU1LCAyNDgsIDI0NztcbiAgLS1jcmltc29uLTIwOiAyNTAsIDIxMywgMjE1O1xuICAtLWNyaW1zb24tMzA6IDI0MSwgMTU1LCAxNjA7XG4gIC0tY3JpbXNvbi00MDogMjI3LCA3NywgOTE7XG4gIC0tY3JpbXNvbi01MDogMjA5LCAwLCAzMDtcblxuICAvLyBQYXN0ZWwgY29sb3JzXG4gIC0tZWdnc2hlbGw6IDI1NSwgMjUzLCAyMzE7XG4gIC0tbWludDogMjM4LCAyNDksIDI0NTtcbiAgLS1yb3NlOiAyNTUsIDI0MSwgMjQwO1xuICAtLXBhcGVyOiAyNDYsIDI0NywgMjUyO1xufVxuIiwiLy90YWlsd2luZFxuQGltcG9ydCAnfnRhaWx3aW5kY3NzL2Jhc2UnO1xuQGltcG9ydCAnfnRhaWx3aW5kY3NzL2NvbXBvbmVudHMnO1xuQGltcG9ydCAnfnRhaWx3aW5kY3NzL3V0aWxpdGllcyc7XG5cbi8vIEFic3RyYWN0c1xuQGltcG9ydCAnYWJzdHJhY3RzL3ZhcmlhYmxlcyc7XG4vLyBiYXNlXG5AaW1wb3J0ICdiYXNlL3R5cG9ncmFwaHknO1xuXG4vLyBsYXlvdXRzXG5AaW1wb3J0ICdsYXlvdXRzL2hlYWRlcic7XG5AaW1wb3J0ICdsYXlvdXRzL21haW4nO1xuQGltcG9ydCAnbGF5b3V0cy9fd2VicG9ydGFscGFnZXMnO1xuQGltcG9ydCAnY29tcG9uZW50L2lucHV0JztcbkBpbXBvcnQgJ2NvbXBvbmVudC9mb3Jtcyc7XG5AaW1wb3J0ICdsYXlvdXRzL2Zvb3Rlcic7XG5AaW1wb3J0ICdjb21wb25lbnQvc2VsZWN0Mic7XG5cbi8vY29tcG9uZW50c1xuQGltcG9ydCAnY29tcG9uZW50L2J1dHRvbic7XG5AaW1wb3J0ICdjb21wb25lbnQvb3ZlcmxheSc7XG5AaW1wb3J0ICdjb21wb25lbnQvaGFtYnVyZ2VyJztcblxuaHRtbCB7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIG9wYWNpdHk6IDE7XG4gIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG59XG4iLCJib2R5IHtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICBAYXBwbHkgbWluLWgtc2NyZWVuIGJnLXBhcGVyO1xufVxuXG5hIHtcbiAgY29sb3I6IHJnYih2YXIoLS1ibHVlY29yYWwpKTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTtcblxuICAmOmhvdmVyIHtcbiAgICBjb2xvcjogcmdiKHZhcigtLXNwcmluZy01MCkpO1xuICB9XG59XG5cbi5sZWZ0IHtcbiAgJl9fdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMjdweDtcbiAgICB0ZXh0LXNoYWRvdzogNHB4IDRweCAxcHggcmdiYSgwLCAwLCAwLCAwLjAxKTtcblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAgICAgZm9udC1zaXplOiAzMnB4O1xuICAgIH1cbiAgfVxufVxuXG5oMiB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ0MHB4KSB7XG4gICAgQGFwcGx5IHRleHQtaGVhZGluZy00O1xuICB9XG4gIEBhcHBseSB0ZXh0LWhlYWRpbmctNSBmb250LWJvbGQgdGV4dC1uLTUwIG1kOnRleHQtaGVhZGluZy0zO1xufVxuXG5oNCB7XG4gIEBhcHBseSB0ZXh0LWhlYWRpbmctNCBsZWFkaW5nLW5vcm1hbDtcbn1cbiIsIkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gIC53cmFwcGVyOjphZnRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDI5MnB4O1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL2ltYWdlcy9tYXJxdWUtd2hpdGUucG5nJyk7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAlIDE2LjUlO1xuICAgIGJhY2tncm91bmQtc2l6ZTogNzAlO1xuICAgIG9wYWNpdHk6IDAuMztcbiAgICBjb250ZW50OiAnJztcbiAgfVxufVxuLmhlYWRlciB7XG4gIG1heC13aWR0aDogMTE2NnB4O1xuICBtYXJnaW46IGF1dG87XG59XG4ubmF2X19hY3RpdmU6OmFmdGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDRweDtcbiAgQGFwcGx5IGJnLXR1cnF1b2lzZTtcbiAgY29udGVudDogJyc7XG59XG4ubGlua3NfX2FjdGl2ZSB7XG4gIEBhcHBseSB0ZXh0LWJsYWNrO1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cbi5uYXZfX2xpbmtzIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nOiAyMHB4IDhweDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuXG4gIGE6aG92ZXIge1xuICAgIEBhcHBseSB0ZXh0LW4tNTA7XG4gIH1cblxuICAucmVhZF9fbW9yZSB7XG4gICAgQGFwcGx5IHJvdW5kZWQtc20gYmctYmx1ZWNvcmFsIHRleHQtY2VudGVyIHRleHQteHMgdGV4dC13aGl0ZTtcbiAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgcGFkZGluZzogOHB4IDE4cHg7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIEBhcHBseSBiZy1uLTUwIHRleHQtd2hpdGU7XG4gICAgfVxuICB9XG5cbiAgYSB7XG4gICAgQGFwcGx5IHRleHQtd2hpdGU7XG4gICAgcGFkZGluZy1ib3R0b206IDI0cHg7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyODBweCkge1xuICAubmF2X19saW5rcyB7XG4gICAgcGFkZGluZzogMHB4IDhweCAyMHB4O1xuXG4gICAgYSB7XG4gICAgICBAYXBwbHkgdGV4dC1uLTUwO1xuICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogNHB4O1xuICAgICAgQGFwcGx5IGJnLXR1cnF1b2lzZTtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCwgMSk7XG4gICAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICAgICAgY29udGVudDogJyc7XG4gICAgfVxuICAgICY6aG92ZXI6OmFmdGVyIHtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSwgMSk7XG4gICAgfVxuICB9XG59XG4uZHJvcGRvd25fX2NvbnRlbnQge1xuICBAYXBwbHkgaW52aXNpYmxlIGFic29sdXRlIHJpZ2h0LTAgdG9wLTcgaGlkZGVuIGgtNTYgYmctd2hpdGUgcHktNyBweC04IG9wYWNpdHktMCBkdXJhdGlvbi0zMDAgeGw6YmxvY2s7XG4gIHdpZHRoOiA0MjRweDtcbiAgaGVpZ2h0OiBhdXRvO1xuICBsaW5lLWhlaWdodDogMjJweDtcbiAgYm94LXNoYWRvdzogMHB4IDhweCAxNnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMik7XG59XG4uZHJvcGRvd246aG92ZXIge1xuICAuZHJvcGRvd25fX2NvbnRlbnQge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMnB4KTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cbi5uYXZfX2xpc3Qge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMjgwcHgpIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMwMHB4O1xuICAgIGhlaWdodDogMTAwdmg7XG4gICAgcGFkZGluZzogMzBweDtcbiAgICBAYXBwbHkgYmctYmx1ZWNvcmFsIHRleHQtd2hpdGU7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTA1JSk7XG4gICAgdHJhbnNpdGlvbjogMC4zcztcbiAgICB6LWluZGV4OiAxMTA7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygtMHB4IDBweCA4cHggIzAwMCk7XG5cbiAgICAuYWN0aXZlIHtcbiAgICAgIGEge1xuICAgICAgICBAYXBwbHkgdGV4dC13aGl0ZTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjRweDtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICBAYXBwbHkgdGV4dC13aGl0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgaGVpZ2h0OiA0cHg7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLCAxKTtcbiAgICAgICAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIEBhcHBseSBiZy10dXJxdW9pc2U7XG4gICAgICAgIH1cbiAgICAgICAgJjpob3Zlcjo6YWZ0ZXIge1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0NDBweCkge1xuICAgIHdpZHRoOiAyNTBweDtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgfVxufVxuXG4jbWVudS1vdmVybGF5IHtcbiAgQGFwcGx5IHhsOmhpZGRlbjtcbn1cblxuI2FjdGl2aXR5LW1lbnUtb3ZlcmxheSB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDE0MjBweCkge1xuICAgIEBhcHBseSBoaWRkZW47XG4gIH1cbn1cblxuLm1lbnUtb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50O1xuICB6LWluZGV4OiAxMDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xufVxuLmFjdGl2aXR5LW5hdi1tZW51IHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTQyMHB4KSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAzMDBweDtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIHBhZGRpbmc6IDEwMHB4IDMwcHg7XG4gICAgQGFwcGx5IGJnLWJsdWVjb3JhbCB0ZXh0LXdoaXRlO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDUlKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoN3B4KTtcbiAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICAgIHotaW5kZXg6IDEwMDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDBweCA4cHggIzAwMCk7XG5cbiAgICAuYWN0aXZpdHktbmF2LWxpc3Qge1xuICAgICAgQGFwcGx5IGZsZXggZmxleC1jb2wgZ2FwLXktNCBwbC00IHRleHQtc207XG4gICAgICAubmF2X19wb2ludGVyLFxuICAgICAgLm5hdl9fcG9pbnRlci1ob3ZlciB7XG4gICAgICAgIEBhcHBseSByZWxhdGl2ZTtcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgQGFwcGx5IGFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCBoLTEgdy1mdWxsIHNjYWxlLXgtMCBzY2FsZS15LTEwMCByb3VuZGVkLXNtIGJnLXR1cnF1b2lzZSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDA7XG5cbiAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxNDIwcHgpIHtcbiAgICAgICAgICAgIEBhcHBseSAtYm90dG9tLTIgIGgtMSB3LWZ1bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlcjphZnRlciB7XG4gICAgICAgICAgQGFwcGx5IHNjYWxlLXgtMTAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAubmF2X19wb2ludGVyOmFmdGVyIHtcbiAgICAgICAgQGFwcGx5IHNjYWxlLXgtMTAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5hY3Rpdml0eS1uYXYtbGlzdC5hY3Rpdml0eS1saXN0IHtcbiAgICAgIC5uYXZfX3BvaW50ZXIsXG4gICAgICAubmF2X19wb2ludGVyLWhvdmVyIHtcbiAgICAgICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiAnJztcblxuICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0MjBweCkge1xuICAgICAgICAgICAgQGFwcGx5IHRvcC0wIC1sZWZ0LTQgaC00IHctMTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyOmFmdGVyIHtcbiAgICAgICAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5uYXZfX3BvaW50ZXI6YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gICAgICB9XG4gICAgfVxuICAgIC5hY3Rpdml0eS1uYXYtbGlzdC5sYW5ndWFnZS1uYXYtbGlzdCB7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAyOHB4O1xuICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNCk7XG5cbiAgICAgIC5uYXZfX3BvaW50ZXIsXG4gICAgICAubmF2X19wb2ludGVyLWhvdmVyIHtcbiAgICAgICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBAYXBwbHkgYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIGgtMSB3LWZ1bGwgc2NhbGUteC0wIHNjYWxlLXktMTAwIHJvdW5kZWQtc20gYmctdHVycXVvaXNlIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMDtcblxuICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0MjBweCkge1xuICAgICAgICAgICAgQGFwcGx5IC1ib3R0b20tMiAgaC0xIHctZnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyOmFmdGVyIHtcbiAgICAgICAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5uYXZfX3BvaW50ZXI6YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4ubmF2LWFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG59XG5cbi5uYXYge1xuICAmX19wb2ludGVyLFxuICAmX19wb2ludGVyLWhvdmVyIHtcbiAgICBAYXBwbHkgcmVsYXRpdmU7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIEBhcHBseSBhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTAgaC0xIHctZnVsbCBzY2FsZS14LTAgc2NhbGUteS0xMDAgcm91bmRlZC1zbSBiZy10dXJxdW9pc2UgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwO1xuXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxNDIwcHgpIHtcbiAgICAgICAgQGFwcGx5IC1sZWZ0LTQgaC00IHctMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyOmFmdGVyIHtcbiAgICAgIEBhcHBseSBzY2FsZS14LTEwMDtcbiAgICB9XG4gIH1cblxuICAmX19wb2ludGVyOmFmdGVyIHtcbiAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gIH1cbn1cblxuLmFjdGl2aXR5LW5hdiB7XG4gIEBhcHBseSBmbGV4IGdyb3c7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTQyMHB4KSB7XG4gICAgQGFwcGx5IGp1c3RpZnktZW5kO1xuICB9XG59XG5cbi5sYW5ndWFnZS1ob3Zlcjpob3ZlciB7XG4gIEBhcHBseSBuYXZfX2FjdGl2ZSBsaW5rc19fYWN0aXZlO1xuICBhIHtcbiAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbiAgfVxufVxuIiwiLm1haW4ge1xuICAmX19jb250YWluZXIge1xuICAgIG1heC13aWR0aDogMTE2NnB4O1xuICAgIG1hcmdpbjogYXV0bztcbiAgfVxuICAubGVmdF9fY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAxNjBkZWcsXG4gICAgICByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMiksXG4gICAgICB0cmFuc3BhcmVudFxuICAgICk7XG5cbiAgICBhIHtcbiAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIEBhcHBseSBib3JkZXItYi0yIGJvcmRlci10dXJxdW9pc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5yaWdodCB7XG4gICAgd2lkdGg6IDkzJTtcbiAgICBib3gtc2hhZG93OiAwcHggMjBweCA0MHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcblxuICAgICZfX2NvbnRhaW5lciB7XG4gICAgICBoMiB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiA2MHB4O1xuICAgICAgfVxuICAgIH1cblxuICAgICZfX2NvbnRlbnQge1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICBib3gtc2hhZG93OiAwcHggMHB4IDI1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciByb3VuZGVkLWxnIGJnLXdoaXRlIHB5LTYgcHgtNTtcblxuICAgICAgLnJpZ2h0X19pY29uIHtcbiAgICAgICAgQGFwcGx5IHRleHQtbGFnb29uLTUwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAtOHB4O1xuICAgICAgfVxuICAgICAgLnJpZ2h0X19hcnJvdyB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXdoaXRlO1xuICAgICAgfVxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLXR1cnF1b2lzZSBiZy10dXJxdW9pc2UgYmctb3BhY2l0eS0xMDtcbiAgICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAyNXB4IDBweCB0cmFuc3BhcmVudDtcblxuICAgICAgICAucmlnaHRfX2ljb24ge1xuICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICBAYXBwbHkgZmlsbC1sYWdvb24tNTAgdGV4dC13aGl0ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLnJpZ2h0X19hcnJvdyB7XG4gICAgICAgICAgQGFwcGx5IGZpbGwtd2hpdGUgdGV4dC10dXJxdW9pc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTM2NnB4KSB7XG4gICAgLmpvaW4tbm93IHtcbiAgICAgIEBhcHBseSBweC0yMDtcblxuICAgICAgLnJpZ2h0X19jb250ZW50IHtcbiAgICAgICAgd2lkdGg6IDQyM3B4O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgaW5wdXQge1xuICAgIHBhZGRpbmctbGVmdDogNjBweDtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5sZWZ0IHtcbiAgICBoZWlnaHQ6IDY0OXB4O1xuXG4gICAgJl9fY29udGFpbmVyIHtcbiAgICAgIHdpZHRoOiAzODZweDtcbiAgICB9XG4gIH1cbiAgLnJpZ2h0IHtcbiAgICBoZWlnaHQ6IDY0OXB4O1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkge1xuICAucmlnaHQge1xuICAgIG1hcmdpbi10b3A6IC0yNjVweDtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDIwcHgpIHtcbiAgLnJpZ2h0X19pY29uIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5kZXRhaWxzIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxufVxuOjotd2Via2l0LXNjcm9sbGJhciB7XG4gIHdpZHRoOiA4cHg7XG4gIGhlaWdodDogOHB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gIEBhcHBseSByb3VuZGVkLWxnIGJnLW4tMjAgaG92ZXI6Ymctbi0zMDtcbn1cbm1haW4ge1xuICBkaXNwbGF5OiBncmlkOyAvLyBMaW5lIDFcbiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvIDFmciBhdXRvOyAvLyBMaW5lIDJcbiAgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIDQ2NXB4KTsgLy8gTGluZSAzXG59XG4uYWN0aXZpdGllc19fc2lkZWJhciB7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBAbWVkaWEgKG1heC13aWR0aDogNzAwcHgpIHtcbiAgICB3aWR0aDogMjIwcHggIWltcG9ydGFudDtcbiAgfVxufVxuYm9keS5kaXNhYmxlLXNjcm9sbCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGhlaWdodDogMTBweDtcbn1cbi8vIGJvZHkge1xuLy8gICBwYWRkaW5nLXRvcDogNjBweDtcbi8vIH1cblxuLy8gYm9keS5uby1uYXYge1xuLy8gICBwYWRkaW5nLXRvcDogMHB4ICFpbXBvcnRhbnQ7XG4vLyB9XG5odG1sIHtcbiAgc2Nyb2xsLXBhZGRpbmctdG9wOiAyMHB4OyAvKiBoZWlnaHQgb2Ygc3RpY2t5IGhlYWRlciAqL1xufVxuIiwiLnNtb290aCB7XG4gIGFuaW1hdGlvbjogZmFkZUluQW5pbWF0aW9uIGVhc2UgMC4zcztcbiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMTtcbn1cblxuQGtleWZyYW1lcyBmYWRlSW5BbmltYXRpb24ge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG4iLCIuaW5wdXQge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwYWRkaW5nOiAxNHB4IDBweCAxNHB4IDU1cHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgb3V0bGluZTogbm9uZTtcbiAgdHJhbnNpdGlvbjogMC4zcztcbiAgQGFwcGx5IGgtMTQgYm9yZGVyIGJvcmRlci1uLTMwIHNtOmgtMTY7XG5cbiAgJjpmb2N1cyB7XG4gICAgQGFwcGx5IGJvcmRlciBib3JkZXItbi01MCBiZy1uLTEwO1xuICB9XG5cbiAgJjo6cGxhY2Vob2xkZXIge1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICAgIEBhcHBseSBmb250LW5vcm1hbCB0ZXh0LW4tNDA7XG4gIH1cblxuICAmOmZvY3VzOjpwbGFjZWhvbGRlciB7XG4gICAgQGFwcGx5IHRleHQtbi01MDtcbiAgfVxuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gICAgcGFkZGluZzogMjBweCAwcHggMjBweCA1NXB4O1xuICB9XG59XG4uZXJyb3Ige1xuICBAYXBwbHkgdGV4dC1zbSB0ZXh0LWNyaW1zb24tNTAgc206dGV4dC1iYXNlO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXNpemU6IDEycHg7XG4gIGxpbmUtaGVpZ2h0OiAxOHB4O1xufVxuXG4uaGFzX2Vycm9yIHtcbiAgLmZvcm1fX2lucHV0IHtcbiAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1jcmltc29uLTUwO1xuICB9XG59XG50ZXh0YXJlYS5mb3JtX19pbnB1dCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuLnRleHQtYXJlYSB7XG4gIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDtcbiAgaGVpZ2h0OiA2MHB4O1xuICByZXNpemU6IG5vbmU7XG59XG4uZm9ybV9faW5wdXQge1xuICBAYXBwbHkgbWItMiBib3gtYm9yZGVyIHctZnVsbCByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCB0ZXh0LWJsdWVjb3JhbCBvdXRsaW5lLW5vbmUgZHVyYXRpb24tMzAwO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gICAgcGFkZGluZzogMTNweCAwIDEzcHggMTZweDtcbiAgfVxuICBwYWRkaW5nOiAxMHB4IDAgMTBweCAxNnB4O1xuXG4gICY6OnBsYWNlaG9sZGVyIHtcbiAgICBAYXBwbHkgdGV4dC1zbSBmb250LW5vcm1hbCB0ZXh0LW4tNDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gIH1cblxuICAmOmZvY3VzIHtcbiAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1uLTUwIGJnLW4tMTA7XG4gIH1cblxuICAmOmZvY3VzOjpwbGFjZWhvbGRlciB7XG4gICAgQGFwcGx5IHRleHQtbi01MDtcbiAgfVxufVxuLmlucHV0X19maWVsZCB7XG4gIC5tdWx0aXNlbGVjdC1vcHRpb24uaXMtc2VsZWN0ZWQge1xuICAgIEBhcHBseSBiZy1uLTIwIHRleHQtbi01MDtcbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC1vcHRpb24uaXMtc2VsZWN0ZWQuaXMtcG9pbnRlZCB7XG4gICAgQGFwcGx5IGJnLW4tMjAgdGV4dC1uLTUwO1xuICB9XG5cbiAgLm11bHRpc2VsZWN0LmlzLWFjdGl2ZSB7XG4gICAgQGFwcGx5IGJvcmRlciBib3JkZXItbi01MCBiZy1uLTEwO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDA7XG4gIH1cblxuICAubXVsdGlzZWxlY3QtcGxhY2Vob2xkZXIge1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICAgIEBhcHBseSB3LVszMTBweF0gb3ZlcmZsb3ctaGlkZGVuIHdoaXRlc3BhY2Utbm93cmFwIHByLTMgdGV4dC1zbSB0ZXh0LW4tNDAgZHVyYXRpb24tMzAwO1xuICB9XG5cbiAgLm11bHRpc2VsZWN0LXBsYWNlaG9sZGVyOjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgQGFwcGx5IGFic29sdXRlIHJpZ2h0LTAgdG9wLTMgaC02IHctNyBiZy13aGl0ZTtcbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC5pcy1vcGVuIHtcbiAgICAubXVsdGlzZWxlY3QtcGxhY2Vob2xkZXIge1xuICAgICAgQGFwcGx5IHRleHQtbi01MDtcbiAgICB9XG4gIH1cblxuICAubXVsdGlzZWxlY3QtZHJvcGRvd24ge1xuICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLW4tNTA7XG4gIH1cblxuICAubXVsdGlzZWxlY3QtY2FyZXQge1xuICAgIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKCcvaW1hZ2VzL2Ryb3Bkb3duLWFycm93LnN2ZycpO1xuICAgIG1hc2staW1hZ2U6IHVybCgnL2ltYWdlcy9kcm9wZG93bi1hcnJvdy5zdmcnKTtcbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC1zZWFyY2gge1xuICAgIEBhcHBseSBjdXJzb3ItcG9pbnRlciBib3JkZXIgYm9yZGVyLW4tMzAgcHktMi41O1xuICB9XG5cbiAgLm11bHRpc2VsZWN0LXNlYXJjaDpmb2N1cyB7XG4gICAgQGFwcGx5IGJnLW4tMTA7XG4gIH1cblxuICAubXVsdGlzZWxlY3Qtc2VhcmNoOmZvY3VzICsgLm11bHRpc2VsZWN0LXBsYWNlaG9sZGVyOjphZnRlciB7XG4gICAgQGFwcGx5IGJnLW4tMTA7XG4gIH1cblxuICAudnVlX19zZWxlY3Qge1xuICAgIEBhcHBseSBtYi0yIGJvcmRlciBib3JkZXItbi0zMCB0ZXh0LXNtIGxlYWRpbmctNiBvdXRsaW5lLW5vbmUgZHVyYXRpb24tMzAwO1xuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgICAgIHBhZGRpbmc6IDE2cHggMHB4IDE2cHggNTVweDtcbiAgICB9XG4gICAgcGFkZGluZzogMTNweCAwcHggMTNweCA1NXB4O1xuICB9XG59XG4uZXJyb3JfaW5wdXQge1xuICBib3JkZXI6IDFweCBzb2xpZCAjZDEwMDFlO1xufVxuLmVycm9yX19tdWx0aXNlbGVjdCB7XG4gIGlucHV0IHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZDEwMDFlO1xuICB9XG59XG4ucGFuZWxfX2lucHV0IHtcbiAgQGFwcGx5IGJveC1ib3JkZXIgaC0xMCB3LWZ1bGwgcm91bmRlZCBib3JkZXIgYm9yZGVyLW4tMzAgYmctcGFwZXIgcHktMi41IHBsLTcgcHItMyBvdXRsaW5lLW5vbmUgZHVyYXRpb24tMzAwO1xuXG4gICY6OnBsYWNlaG9sZGVyIHtcbiAgICBAYXBwbHkgdGV4dC14cyBmb250LW5vcm1hbCB0ZXh0LW4tMzAgZHVyYXRpb24tMzAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICB9XG5cbiAgJjpmb2N1czo6cGxhY2Vob2xkZXIge1xuICAgIEBhcHBseSB0ZXh0LW4tNDA7XG4gIH1cbn1cbi5zZWFyY2gge1xuICBAYXBwbHkgcmVsYXRpdmU7XG5cbiAgJl9faW5wdXQge1xuICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLW4tMzAgYmctdHJhbnNwYXJlbnQgb3V0bGluZS1ub25lO1xuICAgIHBhZGRpbmc6IDEwcHggNDJweCAxMHB4IDM0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgfVxuICBzdmcge1xuICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTMgdG9wLTMgdGV4dC1iYXNlIHRleHQtbi0zMDtcbiAgfVxufVxuLnJlcXVpcmVkLWljb24ge1xuICBAYXBwbHkgcmVsYXRpdmUgdG9wLTAuNSB0ZXh0LWJhc2UgbGVhZGluZy1ub25lIHRleHQtY3JpbXNvbi01MDtcbn1cbi5vcGVuLXRleHQge1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNhNmI1YmE7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaW5wdXQge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcGFkZGluZy10b3A6IDRweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHBhZGRpbmctbGVmdDogMzBweDtcbiAgICAmOmZvY3VzIHtcbiAgICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cbi51c2VyLWNoZWNrbGlzdCB7XG4gIG9wYWNpdHk6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgd2lkdGg6IDE4cHg7XG4gIGhlaWdodDogMThweDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xufVxuLnBzZXVkby1jaGVja2JveCB7XG4gIGhlaWdodDogMThweDtcbiAgd2lkdGg6IDE4cHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3JkZXI6IDJweCBzb2xpZCAjZDVkY2RlO1xuICBvcGFjaXR5OiAxO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuLnVzZXItY2hlY2tsaXN0OmNoZWNrZWQgfiAucHNldWRvLWNoZWNrYm94IHtcbiAgYm9yZGVyLWNvbG9yOiByZ2IodmFyKC0tc3ByaW5nLTUwKSk7XG59XG4udGlja2VkLXN2ZyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxcHg7XG4gIGxlZnQ6IDFweDtcbiAgb3BhY2l0eTogMDtcbiAgaGVpZ2h0OiAxNnB4O1xuICB3aWR0aDogMTZweDtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjcpO1xufVxuLnVzZXItY2hlY2tsaXN0OmNoZWNrZWQgfiAudGlja2VkLXN2ZyB7XG4gIG9wYWNpdHk6IDE7XG59XG5pbnB1dFt0eXBlPSdyYWRpbyddIHtcbiAgYWNjZW50LWNvbG9yOiAjMTU1MzY2O1xufVxuIiwiLmNoZWNrYm94IHtcbiAgQGFwcGx5IHJlbGF0aXZlIGJsb2NrIGN1cnNvci1wb2ludGVyIHNlbGVjdC1ub25lO1xuICAuY2hlY2ttYXJrIHtcbiAgICBAYXBwbHkgZmxleCBoLTQgdy00IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkIGJvcmRlci0yIGJvcmRlci1uLTIwO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7XG4gICAgJjphZnRlciB7XG4gICAgICBib3JkZXItd2lkdGg6IDAgM3B4IDNweCAwO1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBAYXBwbHkgbWItMC41IGhpZGRlbiBoLTIgdy1bNXB4XSByb3RhdGUtNDUgYm9yZGVyLXNwcmluZy01MDtcbiAgICB9XG4gIH1cbiAgaW5wdXQge1xuICAgIEBhcHBseSBhYnNvbHV0ZSBoLTAgdy0wIGN1cnNvci1wb2ludGVyIG9wYWNpdHktMDtcbiAgICAmOmNoZWNrZWQgfiAuY2hlY2ttYXJrIHtcbiAgICAgIEBhcHBseSBib3JkZXItc3ByaW5nLTUwO1xuICAgICAgJjphZnRlciB7XG4gICAgICAgIEBhcHBseSBibG9jaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgJjpob3ZlciBpbnB1dCB+IC5jaGVja21hcmsge1xuICAgIEBhcHBseSBib3JkZXItc3ByaW5nLTUwO1xuICB9XG59XG4vKipcbiAgTGFyYXZlbCBmb3JtIGRlc2lnblxuICovXG5mb3JtIHtcbiAgLmZvcm0tZmllbGQtZ3JvdXAge1xuICAgIEBhcHBseSByZWxhdGl2ZSBwLTM7XG4gICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgIEBhcHBseSBtYi02O1xuICAgIH1cblxuICAgIC5mb3JtLWZpZWxkIHtcbiAgICAgIEBhcHBseSBwLTM7XG4gICAgICAuaGVscC10ZXh0IHtcbiAgICAgICAgQGFwcGx5IG10LTIgdGV4dC14cyBsZWFkaW5nLXJlbGF4ZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGJ1dHRvbi5kZWxldGUtaXRlbSB7XG4gICAgQGFwcGx5IGFic29sdXRlIGgtOCB3LTggY3Vyc29yLXBvaW50ZXIgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtZnVsbCBiZy1uLTQwIC1pbmRlbnQtNDA7XG4gICAgJjphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kOiB1cmwoJy9pbWFnZXMvdHJhc2hfZnVsbC5zdmcnKSBuby1yZXBlYXQgY2VudGVyO1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0xLzIgdG9wLTEvMiBoLVsxOHB4XSB3LVsxOHB4XSAtdHJhbnNsYXRlLXgtMS8yIC10cmFuc2xhdGUteS0xLzI7XG4gICAgfVxuICAgICY6aG92ZXIge1xuICAgICAgQGFwcGx5IGJnLWJsdWVjb3JhbDtcbiAgICB9XG4gIH1cblxuICAuZm9ybS1maWVsZC1ncm91cC1vdXRlciAuZm9ybS1maWVsZCB7XG4gICAgQGFwcGx5IHB4LTM7XG4gIH1cblxuICAuZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgQGFwcGx5IG1iLTIgZmxleCBqdXN0aWZ5LWJldHdlZW47XG4gICAgbGFiZWwge1xuICAgICAgQGFwcGx5IHRleHQteHMgbGVhZGluZy1yZWxheGVkO1xuICAgIH1cbiAgICAucmVxdWlyZWQge1xuICAgICAgQGFwcGx5IGZvbnQtYm9sZCB0ZXh0LXNhbG1vbi01MDtcbiAgICB9XG4gIH1cbiAgaW5wdXRbdHlwZT0ndGV4dCddLFxuICBpbnB1dFt0eXBlPSdkYXRlJ10sXG4gIHRleHRhcmVhIHtcbiAgICBAYXBwbHkgbXQtMCBoLTEyIHctZnVsbCByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCBweC00IHB5LTIuNSB0ZXh0LXNtIGxlYWRpbmctbm9ybWFsIG91dGxpbmUtbm9uZSBkdXJhdGlvbi0zMDA7XG4gICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgQGFwcGx5IHRleHQtc20gdGV4dC1uLTQwO1xuICAgIH1cbiAgICAmOmZvY3VzIHtcbiAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLW4tNTAgYmctbi0xMDtcbiAgICB9XG4gICAgJjpmb2N1czo6cGxhY2Vob2xkZXIge1xuICAgICAgQGFwcGx5IHRleHQtbi01MDtcbiAgICB9XG4gIH1cblxuICBpbnB1dFt0eXBlPSd0ZXh0J10sXG4gIGlucHV0W3R5cGU9J2RhdGUnXSB7XG4gICAgQGFwcGx5IGgtMTI7XG4gIH1cblxuICBzZWxlY3Qge1xuICAgIEBhcHBseSB3LWZ1bGwgcm91bmRlZCBib3JkZXIgYm9yZGVyLW4tMzAgcHgtNCBweS0zIHRleHQtc20gdGV4dC1uLTQwIG91dGxpbmUtbm9uZSBkdXJhdGlvbi0zMDA7XG4gICAgJjpmb2N1cyB7XG4gICAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1uLTUwIGJnLW4tMTA7XG4gICAgfVxuICB9XG4gIC5oZWxwIHtcbiAgICBAYXBwbHkgcmVsYXRpdmU7XG4gICAgJl9fdGV4dCB7XG4gICAgICBAYXBwbHkgaW52aXNpYmxlIGFic29sdXRlIHRvcC00IHotMjAgc3BhY2UteS0xLjUgcm91bmRlZCBiZy1lZ2dzaGVsbCBwLTQgdGV4dC1sZWZ0IHRleHQteHMgdGV4dC1uLTQwIG9wYWNpdHktMCBkdXJhdGlvbi0yMDA7XG4gICAgICBib3gtc2hhZG93OiAwcHggNHB4IDQwcHggcmdiKDAgMCAwIC8gMTAlKTtcbiAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0O1xuICAgIH1cbiAgfVxuICAuaGVscDpob3ZlciB7XG4gICAgLmhlbHBfX3RleHQge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDVweCk7XG4gICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1cbiAgLmFkZF9tb3JlIHtcbiAgICBAYXBwbHkgcmVsYXRpdmU7XG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0wIHRvcC0wIGgtMS8yIHctcHggYm9yZGVyLWwgYm9yZGVyLXNwcmluZy01MDtcbiAgICB9XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTAgdG9wLTIvNCBoLXB4IHctMy41IC10cmFuc2xhdGUteS0xLzIgYm9yZGVyLWIgYm9yZGVyLXNwcmluZy01MDtcbiAgICB9XG5cbiAgICBpIHtcbiAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgYmFja2dyb3VuZDogdXJsKCcvaW1hZ2VzL2FkZC1tb3JlLWdyZWVuLnN2ZycpIG5vLXJlcGVhdCBjZW50ZXI7XG4gICAgfVxuICB9XG4gIC5zdWJlbGVtZW50IHtcbiAgICAmLmJvcmRlci1sID4gbGFiZWwge1xuICAgICAgYm9yZGVyLWxlZnQ6IDA7XG4gICAgfVxuICAgIC5zdWJlbGVtZW50LFxuICAgIC5zdWJlbGVtZW50ICsgYnV0dG9uIHtcbiAgICAgIEBhcHBseSBtbC02O1xuICAgIH1cblxuICAgIC53cmFwcGVkLWNoaWxkLWJvZHkge1xuICAgICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgICAgPiAuZGVsZXRlLXBhcmVudCB7XG4gICAgICAgIEBhcHBseSBibG9jaztcbiAgICAgIH1cbiAgICB9XG4gICAgPiAubXVsdGktZm9ybTpvbmx5LW9mLXR5cGUgPiAuZGVsZXRlLXBhcmVudCxcbiAgICAud3JhcHBlZC1jaGlsZC1ib2R5Om9ubHktb2YtdHlwZSA+IC5kZWxldGUtcGFyZW50IHtcbiAgICAgIEBhcHBseSBoaWRkZW47XG4gICAgfVxuICB9XG5cbiAgLmZvcm0tZmllbGQtZ3JvdXA6b25seS1vZi10eXBlID4gLmRlbGV0ZS1pdGVtIHtcbiAgICBAYXBwbHkgaGlkZGVuO1xuICB9XG5cbiAgLyoqXG4gICogQ29uZGl0aW9uIHRvIHNob3cgYW5kIGRlbGV0ZSBjb2xsZWN0aW9uIGVycm9yIGluIGZvcm1cbiAgKi9cbiAgLmNvbGxlY3Rpb25fZXJyb3Ige1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAubXVsdGktZm9ybSArIC5jb2xsZWN0aW9uX2Vycm9yLFxuICAuZm9ybS1maWVsZC1ncm91cCArIC5jb2xsZWN0aW9uX2Vycm9yLFxuICAud3JhcHBlZC1jaGlsZC1ib2R5ICsgLmNvbGxlY3Rpb25fZXJyb3Ige1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG4gIC5jb250cm9sLWxhYmVsICsgLmNvbGxlY3Rpb25fZXJyb3IsXG4gIC50aXRsZS1jb250YWluZXIgLmNvbGxlY3Rpb25fZXJyb3Ige1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmctcmlnaHQ6IDI0cHg7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIC5kaXYge1xuICAgICAgbGluZS1oZWlnaHQ6IDRweCAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAgU2VsZWN0IDIgZmllbGRcbiovXG5zcGFuLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IHtcbiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHtcbiAgICBAYXBwbHkgaC0xMiB3LWZ1bGwgcm91bmRlZCBib3JkZXIgYm9yZGVyLW4tMzAgcHgtNCBweS0zIHRleHQtc20gdGV4dC1uLTQwIG91dGxpbmUtbm9uZSBkdXJhdGlvbi0zMDA7XG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCB7XG4gICAgICBAYXBwbHkgcC0wIHRleHQtc20gbGVhZGluZy1ub3JtYWw7XG4gICAgfVxuICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3cge1xuICAgICAgQGFwcGx5IGgtMTE7XG4gICAgfVxuICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fY2xlYXIgc3BhbiB7XG4gICAgICBAYXBwbHkgbXItMi41IHRleHQtc207XG4gICAgfVxuICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fcGxhY2Vob2xkZXIge1xuICAgICAgQGFwcGx5IHRleHQtc20gdGV4dC1uLTQwO1xuICAgIH1cbiAgfVxuICAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLWhpZ2hsaWdodGVkW2FyaWEtc2VsZWN0ZWRdIHtcbiAgICBjb2xvcjogIzFmMjkzNztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmNGY2O1xuICB9XG4gIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvblthcmlhLXNlbGVjdGVkXSB7XG4gICAgQGFwcGx5IHRleHQtc20gdGV4dC1uLTUwO1xuICB9XG59XG4ubWF4LXctaGFsZiB7XG4gIG1heC13aWR0aDogNTAlO1xufVxuXG4vKipcbiAgQWN0aXZpdHkgRGV0YWlsIFBhZ2VcbiovXG4uYWN0aXZpdGllcyB7XG4gIEBhcHBseSBmbGV4IGdhcC01IHhsOmdhcC03O1xuXG4gICZfX3NpZGViYXIge1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIHdpZHRoOiAyODBweDtcblxuICAgICYtaW5uZXIge1xuICAgICAgb3JkZXI6IDE7XG4gICAgfVxuICB9XG5cbiAgJl9fY29udGVudCB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgICBtYXgtd2lkdGg6IGNhbGMoMTAwdncgLSA1MHB4KTtcbiAgICB9XG4gIH1cblxuICAmX19jYXJkIHtcbiAgICBAYXBwbHkgZmxleCBmbGV4LWNvbCBiZy13aGl0ZSB0ZXh0LWNlbnRlciB0ZXh0LXhzIHRleHQtbi00MDtcbiAgICBwYWRkaW5nOiAxM3B4O1xuICB9XG5cbiAgLnByb2dyZXNzIHtcbiAgICBAYXBwbHkgaXRlbXMtY2VudGVyO1xuICAgIHdpZHRoOiAxNTFweDtcbiAgICBtaW4taGVpZ2h0OiAxNzRweDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHggMHB4IDBweCA4cHg7XG4gIH1cblxuICAudGFiLWJ0bjpkaXNhYmxlZCB7XG4gICAgQGFwcGx5IHBvaW50ZXItZXZlbnRzLW5vbmUgdGV4dC1uLTIwO1xuXG4gICAgc3ZnIHtcbiAgICAgIEBhcHBseSB0ZXh0LW4tMjA7XG4gICAgfVxuICB9XG4gIC5ob3Zlci10ZXh0IHtcbiAgICBzdmcge1xuICAgICAgQGFwcGx5IHRleHQtbi0zMDtcbiAgICB9XG4gIH1cbn1cbi5lbGVtZW50cy1jYXJkIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTE5MHB4KSB7XG4gICAgZmxleC1iYXNpczogYXV0bztcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxufVxuLm1hbnVhbC1pbXBvcnQge1xuICAuaGVscF9fdGV4dCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApICFpbXBvcnRhbnQ7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgICAgd2lkdGg6IDM1MHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG4ucmVnaXN0ZXItcGFnZSAuaGVscF9fdGV4dCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSkgIWltcG9ydGFudDtcbn1cblxuLnJlZ2lzdHJ5X19pbmZvLFxuLnJlZ2lzdGVyLFxuYXNpZGUge1xuICAuaGVscF9fdGV4dCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApICFpbXBvcnRhbnQ7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDEzNzBweCkge1xuICAgICAgd2lkdGg6IDI1MHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG4uaW1wb3J0LWFjdGl2aXR5LFxuLmFjdGl2aXRpZXNfX2NvbnRlbnQtLWVsZW1lbnQge1xuICAuaGVscF9fdGV4dCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApICFpbXBvcnRhbnQ7XG4gIH1cbn1cbmFzaWRlIHtcbiAgLnByb2dyZXNzIHtcbiAgICAuaGVscF9fdGV4dCB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcblxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTQ1JSkgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbi5hY3Rpdml0aWVzX19jb250ZW50IHtcbiAgd2lkdGg6IDEwMCU7XG59XG4udGFiLWJ0biB7XG4gIC5oZWxwX190ZXh0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gICAgICBsZWZ0OiAwO1xuICAgIH1cbiAgfVxufVxuLmFjdGl2aXR5LWRlZmF1bHQtdmFsdWUge1xuICAuaGVscF9fdGV4dCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKSAhaW1wb3J0YW50O1xuICB9XG59XG4uZXJyb3ItdGl0bGUge1xuICBjb2xvcjogI2QxMDAxZTtcbiAgcGFkZGluZy10b3A6IDhweCAhaW1wb3J0YW50O1xuICBwYWRkaW5nLWJvdHRvbTogOHB4ICFpbXBvcnRhbnQ7XG59XG4udGV4dC1kYW5nZXItZXJyb3Ige1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgbGluZS1oZWlnaHQ6IDE4cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG59XG4iLCIuZm9vdGVyX19jb250YWluZXIge1xuICBtYXgtd2lkdGg6IDExNjZweDtcbiAgbWFyZ2luOiBhdXRvO1xuXG4gIC5mb290ZXJfX2xpbmtzIHtcbiAgICBhIHtcbiAgICAgIEBhcHBseSBib3JkZXItYi0yIGJvcmRlci10cmFuc3BhcmVudCB0ZXh0LW4tMjA7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBAYXBwbHkgYm9yZGVyLWItMiBib3JkZXItdHVycXVvaXNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLnNlbGVjdDItY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG1hcmdpbjogMDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcblxuICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjdmOTtcbiAgfVxuXG4gIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGhlaWdodDogMjhweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMyYTJmMzA7XG4gICAgfVxuXG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xuICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMTtcbiAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgfVxuICB9XG59XG5cbi5zZWxlY3QyLWRyb3Bkb3duIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAtMTAwMDAwcHg7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNhYWE7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cblxuLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIHtcbiAgcGFkZGluZzogNnB4O1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAmW2FyaWEtc2VsZWN0ZWRdIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cblxuLnNlbGVjdDItY29udGFpbmVyLS1vcGVuIHtcbiAgLnNlbGVjdDItZHJvcGRvd24ge1xuICAgIGxlZnQ6IDA7XG5cbiAgICAmLS1hYm92ZSB7XG4gICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgIH1cblxuICAgICYtLWJlbG93IHtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBib3JkZXItdG9wOiBub25lO1xuICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICAgIH1cbiAgfVxufVxuXG4uc2VsZWN0Mi1zZWFyY2gtLWRyb3Bkb3duIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDRweDtcblxuICAuc2VsZWN0Mi1zZWFyY2hfX2ZpZWxkIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDRweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjYTZiNWJhO1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcblxuICAgICY6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24ge1xuICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIH1cbiAgfVxufVxuXG5bdHlwZT0nc2VhcmNoJ10ge1xuICBvdXRsaW5lLWNvbG9yOiAjYTZiNWJhO1xuICBvdXRsaW5lLW9mZnNldDogMDtcbn1cblxuLnNlbGVjdDItaGlkZGVuLWFjY2Vzc2libGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgd2lkdGg6IDFweCAhaW1wb3J0YW50O1xuICBoZWlnaHQ6IDFweCAhaW1wb3J0YW50O1xuICBtYXJnaW46IC0xcHggIWltcG9ydGFudDtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG4gIGJvcmRlcjogMCAhaW1wb3J0YW50O1xuICBjbGlwOiByZWN0KDAgMCAwIDApICFpbXBvcnRhbnQ7XG59XG5cbi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCB7XG4gIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHtcbiAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkIHtcbiAgICAgIGNvbG9yOiAjMTU1MzY2O1xuICAgICAgbGluZS1oZWlnaHQ6IDI4cHg7XG4gICAgfVxuXG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19jbGVhciB7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG5cbiAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX3BsYWNlaG9sZGVyIHtcbiAgICAgIGNvbG9yOiAjOTk5O1xuICAgIH1cblxuICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3cge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAxcHg7XG4gICAgICByaWdodDogMXB4O1xuICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICBoZWlnaHQ6IDI2cHg7XG5cbiAgICAgIGIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIHdpZHRoOiAwO1xuICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgIG1hcmdpbi10b3A6IC0ycHg7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtNHB4O1xuICAgICAgICBib3JkZXItY29sb3I6ICM4ODggdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICAgIGJvcmRlci13aWR0aDogNXB4IDRweCAwIDRweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLnNlbGVjdDItcmVzdWx0cyA+IC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbnMge1xuICAgIG1heC1oZWlnaHQ6IDIwMHB4O1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gIH1cbn1cblxuLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyLS1vcGVuIHtcbiAgLnNlbGVjdDItc2VsZWN0aW9uX19hcnJvdyB7XG4gICAgYiB7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICM4ODggdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItd2lkdGg6IDAgNHB4IDVweCA0cHg7XG4gICAgfVxuICB9XG5cbiAgJi5zZWxlY3QyLWNvbnRhaW5lci0tYWJvdmUge1xuICAgIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHtcbiAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgICB9XG4gIH1cblxuICAmLnNlbGVjdDItY29udGFpbmVyLS1iZWxvdyB7XG4gICAgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUge1xuICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gVHVycXVvaXNlIGJ1dHRvblxuLmJ0biB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIG91dGxpbmU6IG5vbmU7XG4gIEBhcHBseSBiZy10dXJxdW9pc2UgdGV4dC1uLTUwO1xuXG4gICY6aG92ZXIge1xuICAgIEBhcHBseSBiZy1ibHVlY29yYWw7XG4gICAgQGFwcGx5IHRleHQtd2hpdGU7XG5cbiAgICBzdmcge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDRweCk7XG4gICAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICAgIH1cbiAgfVxufVxuXG4uYnRuLWJhY2sge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IDAuM3M7XG4gIEBhcHBseSB3LTI0IHRleHQtYmx1ZWNvcmFsO1xuXG4gIHN2ZyB7XG4gICAgdHJhbnNpdGlvbjogMC4zcztcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIHN2ZyB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTRweCk7XG4gICAgfVxuICB9XG59XG5cbi5idG4tbmV4dCB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICAgIHBhZGRpbmc6IDEzcHggMjRweDtcbiAgfVxuICBAYXBwbHkgdy0zNiBweS0yLjUgdGV4dC1uLTUwIHNtOnctNDA7XG5cbiAgc3ZnIHtcbiAgICBtYXJnaW4tbGVmdDogMTNweDtcbiAgICB0cmFuc2l0aW9uOiAwLjJzO1xuICB9XG59XG5cbi5nZXQtc3RhcnRlZC1idG4ge1xuICB3aWR0aDogMTg1cHg7XG59XG5cbi5yZXNldC1idG4ge1xuICBAYXBwbHkgbXQtNiBmbGV4IGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbGcgYm9yZGVyLW5vbmUgYmctdHVycXVvaXNlIHRleHQtc20gZm9udC1ib2xkIHVwcGVyY2FzZSB0ZXh0LW4tNTAgb3V0bGluZS1ub25lIGR1cmF0aW9uLTIwMCBob3ZlcjpiZy1ibHVlY29yYWwgaG92ZXI6dGV4dC13aGl0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDE2cHggOTRweDtcbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgLnJlc2V0LWJ0biB7XG4gICAgcGFkZGluZzogMThweCA5NHB4O1xuICB9XG59XG5cbnN2ZyB7XG4gIGhlaWdodDogMWVtO1xufVxuLmNoYXJ0LXdyYXBwZXIge1xuICBzdmcge1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxufVxuXG4udnJwX193cmFwcGVyIHtcbiAgcCB7XG4gICAgQGFwcGx5IHRleHQtc20gbGVhZGluZy1ub3JtYWw7XG4gIH1cbiAgc3ZnIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbn1cblxuLmJ1dHRvbixcbmJ1dHRvbiB7XG4gIEBhcHBseSBmbGV4IGN1cnNvci1wb2ludGVyIGl0ZW1zLWNlbnRlciB0ZXh0LXhzIGxlYWRpbmctbm9ybWFsIHRyYWNraW5nLXRpZ2h0O1xuICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlO1xufVxuXG4vLyB0b29sdGlwIGJ1dHRvblxuLnRvb2x0aXAtYnRuIHtcbiAgQGFwcGx5IHJlbGF0aXZlIHRleHQtbi0zMDtcblxuICBidXR0b24ge1xuICAgIEBhcHBseSByb3VuZGVkLTN4bCBib3JkZXIgYm9yZGVyLXNvbGlkIGJvcmRlci1uLTMwIHB5LTEuNSBweC0yLjU7XG4gIH1cblxuICBzdmcge1xuICAgIEBhcHBseSBtci0xIHRleHQteHM7XG4gIH1cblxuICAmX19jb250ZW50IHtcbiAgICBAYXBwbHkgYWJzb2x1dGUgdG9wLWZ1bGwgbGVmdC0wIGhpZGRlbiB3LVszNTJweF07XG5cbiAgICAuY29udGVudCB7XG4gICAgICBAYXBwbHkgbXQtNiByb3VuZGVkIGJnLWVnZ3NoZWxsIHRleHQtbi01MDtcbiAgICAgIHBhZGRpbmc6IDE2cHggMzNweCAxNnB4IDE2cHg7XG4gICAgICBib3gtc2hhZG93OiAwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgIH1cblxuICAgIHAge1xuICAgICAgQGFwcGx5IG1iLTEuNSB0ZXh0LXhzIGxlYWRpbmctbm9ybWFsO1xuICAgIH1cbiAgfVxuXG4gICY6aG92ZXIgLnRvb2x0aXAtYnRuX19jb250ZW50IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gICY6aG92ZXIgYnV0dG9uIHtcbiAgICBAYXBwbHkgYm9yZGVyLXNwcmluZy01MCB0ZXh0LXNwcmluZy01MDtcbiAgfVxufVxuXG4vLyBwcmltYXJ5IGJ1dHRvblxuLnByaW1hcnktYnRuIHtcbiAgQGFwcGx5IGdhcC0xIHJvdW5kZWQgYmctYmx1ZWNvcmFsIHAtMyBmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtd2hpdGU7XG4gIGJveC1zaGFkb3c6IDBweCAycHggMTBweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG5cbiAgJi5zcGFjZSB7XG4gICAgQGFwcGx5IHB4LTY7XG4gIH1cblxuICAmOmhvdmVyIHtcbiAgICBAYXBwbHkgYmctbi01MCB0ZXh0LXdoaXRlO1xuICB9XG5cbiAgc3ZnIHtcbiAgICBAYXBwbHkgdGV4dC1iYXNlO1xuICB9XG59XG5cbi8vIHNlY29uZGFyeSBidXR0b25cbi5zZWNvbmRhcnktYnRuIHtcbiAgQGFwcGx5IGdhcC0xIGdhcC14LTEgcm91bmRlZCBiZy13aGl0ZSBwLTMgdXBwZXJjYXNlIHRleHQtYmx1ZWNvcmFsO1xuXG4gICYtLXRvdWNoIHtcbiAgICBAYXBwbHkgZ2FwLTEgZ2FwLXgtMSByb3VuZGVkIGJnLXdoaXRlIHAtMyB1cHBlcmNhc2UgdGV4dC1ibHVlY29yYWw7XG4gICAgYm94LXNoYWRvdzogMHB4IDJweCAxMHB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgICAuZHJvcGRvd25fX2Fycm93IHtcbiAgICAgIGZvbnQtc2l6ZTogNnB4O1xuICAgICAgdHJhbnNpdGlvbjogMC4ycztcbiAgICB9XG4gICAgc3ZnIHtcbiAgICAgIEBhcHBseSB0ZXh0LWJhc2U7XG4gICAgfVxuICB9XG4gICY6aG92ZXIge1xuICAgIEBhcHBseSBiZy1ibHVlY29yYWwgdGV4dC13aGl0ZTtcbiAgfVxuXG4gIHN2ZyB7XG4gICAgQGFwcGx5IHRleHQtYmFzZTtcbiAgfVxuXG4gIC5kcm9wZG93bl9fYXJyb3cge1xuICAgIGZvbnQtc2l6ZTogNnB4O1xuICAgIHRyYW5zaXRpb246IDAuMnM7XG4gIH1cbn1cblxuLy8gcHJpbWFyeSBvdXRsaW5lIGJ1dHRvblxuLnByaW1hcnktb3V0bGluZS1idG4ge1xuICBAYXBwbHkganVzdGlmeS1jZW50ZXIgZ2FwLTEgcm91bmRlZC0zeGwgYm9yZGVyIGJvcmRlci1zcHJpbmctNTAgcHgtMy41IHRleHQtc20gbGVhZGluZy1yZWxheGVkIHRleHQtc3ByaW5nLTUwO1xuICBmaWx0ZXI6IGRyb3Atc2hhZG93KDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuXG4gICY6aG92ZXIge1xuICAgIEBhcHBseSBiZy1zcHJpbmctNTAgdGV4dC13aGl0ZTtcbiAgfVxuXG4gIHN2ZyB7XG4gICAgQGFwcGx5IHRleHQtYmFzZTtcbiAgfVxufVxuXG4uZ2hvc3QtYnRuIHtcbiAgQGFwcGx5IHRleHQteHMgZm9udC1ib2xkIHVwcGVyY2FzZSB0ZXh0LW4tNDA7XG4gIHRyYW5zaXRpb246IDAuNHM7XG5cbiAgJjpob3ZlciB7XG4gICAgQGFwcGx5IHRleHQtYmx1ZWNvcmFsO1xuICB9XG59XG5cbi50YWItYnRuLWFuY2hvciB7XG4gIEBhcHBseSBjdXJzb3ItZGVmYXVsdDtcbn1cblxuLnRhYi1idG4ge1xuICBAYXBwbHkgaC05IHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTIwIGJnLXdoaXRlIHAtMiB0ZXh0LXhzIHRleHQtbi00MDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuXG4gICY6aG92ZXIge1xuICAgIEBhcHBseSBib3JkZXItdHVycXVvaXNlIGJnLW4tMTAgdGV4dC1ibHVlY29yYWw7XG4gIH1cbn1cblxuLmFjdGl2ZV9fdGFiIHtcbiAgQGFwcGx5IGJvcmRlci10dXJxdW9pc2UgYmctbi0xMCB0ZXh0LWJsdWVjb3JhbDtcbn1cblxuLnBhbmVsLWJ0biB7XG4gIEBhcHBseSBoLTEwIHNwYWNlLXgtMSByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCBiZy1lZ2dzaGVsbCBweS0zIHB4LTI7XG4gIHdpZHRoOiA0M3B4O1xuXG4gICY6aG92ZXIge1xuICAgIEBhcHBseSBiZy1ibHVlY29yYWwgdGV4dC13aGl0ZTtcbiAgfVxuXG4gIC5kcm9wZG93bl9fYXJyb3cge1xuICAgIGZvbnQtc2l6ZTogNnB4O1xuICAgIHRyYW5zaXRpb246IDAuMnM7XG4gIH1cbn1cbiIsIi5vdmVybGF5IHtcbiAgQGFwcGx5IGZpeGVkIGxlZnQtMCB0b3AtMCBoLWZ1bGwgdy1mdWxsIGJnLWJsYWNrO1xuICB6LWluZGV4OiAxMDA7XG4gIG9wYWNpdHk6IDAuNztcblxuICAmX19pbm5lciB7XG4gICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMCB0b3AtMCBoLWZ1bGwgdy1mdWxsO1xuICB9XG5cbiAgJl9fY29udGVudCB7XG4gICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMi80IHRvcC0yLzQ7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG5cbiAgICAuc3Bpbm5lciB7XG4gICAgICBAYXBwbHkgaW5saW5lLWJsb2NrIGFuaW1hdGUtc3BpbiByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLW4tMTAgYm9yZGVyLW9wYWNpdHktNTtcbiAgICAgIHdpZHRoOiA3NXB4O1xuICAgICAgaGVpZ2h0OiA3NXB4O1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGU7XG4gICAgfVxuICB9XG59XG4ubG9hZG92ZXJsYXkge1xuICBAYXBwbHkgZml4ZWQgbGVmdC0wIHRvcC0wIGgtZnVsbCB3LWZ1bGwgYmctYmxhY2s7XG4gIG9wYWNpdHk6IDAuNztcblxuICAmX19pbm5lciB7XG4gICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMCB0b3AtMCBoLWZ1bGwgdy1mdWxsO1xuICB9XG5cbiAgJl9fY29udGVudCB7XG4gICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMi80IHRvcC0yLzQ7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG5cbiAgICAuc3Bpbm5lciB7XG4gICAgICBAYXBwbHkgaW5saW5lLWJsb2NrIGFuaW1hdGUtc3BpbiByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLW4tMTAgYm9yZGVyLW9wYWNpdHktNTtcbiAgICAgIHdpZHRoOiA3NXB4O1xuICAgICAgaGVpZ2h0OiA3NXB4O1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGU7XG4gICAgfVxuICB9XG59XG4iLCIuaGFtYnVyZ2VyIHtcbiAgQGFwcGx5IHJlbGF0aXZlIHotYXV0byBmbGV4IGgtMTEgdy0xMSBjdXJzb3ItcG9pbnRlciBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQgZHVyYXRpb24tMzAwO1xuICB6LWluZGV4OiAxMjA7XG5cbiAgJi5hY3RpdmUge1xuICAgIHNwYW4ge1xuICAgICAgQGFwcGx5IGJnLW4tMTA7XG4gICAgfVxuICB9XG5cbiAgc3BhbiB7XG4gICAgQGFwcGx5IHBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgaC0xIHctMTAgcm91bmRlZC1sZyBkdXJhdGlvbi0zMDA7XG4gIH1cbiAgc3BhbjpudGgtY2hpbGQoMSkge1xuICAgIGJvdHRvbTogMThweDtcbiAgICBsZWZ0OiAycHg7XG4gICAgd2lkdGg6IDMwcHg7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNXB4KTtcbiAgfVxuICAmLmFjdGl2ZSB7XG4gICAgc3BhbjpudGgtY2hpbGQoMSkge1xuICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZykgdHJhbnNsYXRlWigwKTtcbiAgICB9XG4gICAgc3BhbjpudGgtY2hpbGQoMikge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDYwcHgpO1xuICAgIH1cbiAgICBzcGFuOm50aC1jaGlsZCgzKSB7XG4gICAgICB3aWR0aDogNDBweDtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg0cHgpIHJvdGF0ZSgzMTVkZWcpO1xuICAgIH1cbiAgfVxuICBzcGFuOm50aC1jaGlsZCgzKSB7XG4gICAgdG9wOiAxOHB4O1xuICAgIGxlZnQ6IDJweDtcbiAgICB3aWR0aDogMjBweDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTVweCk7XG4gIH1cbn1cbi5oYW1idXJnZXItbWVudSB7XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTQyMHB4KSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cblxuLmhvbWUtYnVyZ2VyLW1lbnUuYWN0aXZlIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgICB0cmFuc2xhdGU6IC0zNTAlIC0xNDAlO1xuICB9XG4gIHRyYW5zbGF0ZTogLTQ5MCUgLTkwJTtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0NDBweCkge1xuICAgIHRyYW5zbGF0ZTogLTM4MCUgLTkwJTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzL3dlYnBvcnRhbC1hcHAuY3NzIiwibWFwcGluZ3MiOiJBQUFBOztDQUFBOzs7Q0FBQTs7QUFBQTs7O0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTs7RUFBQTtBQUFBOztBQUFBOzs7OztDQUFBOztBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7S0FBQTtFQUFBO0FBQUE7O0FBQUE7OztDQUFBOztBQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOzs7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTtFQUFBO1VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTs7Ozs7O0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOztFQUFBO0FBQUE7O0FBQUE7OztDQUFBOztBQUFBOzs7O0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTs7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTtFQUFBO0FBQUE7O0FBQUE7Ozs7Q0FBQTs7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOzs7O0NBQUE7O0FBQUE7Ozs7O0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTs7RUFBQTtBQUFBOztBQUFBOzs7Q0FBQTs7QUFBQTs7OztFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOztFQUFBO0FBQUE7O0FBQUE7OztDQUFBOztBQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOzs7Ozs7Ozs7Ozs7O0VBQUE7QUFBQTs7QUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTtFQUFBO0FBQUE7O0FBQUE7OztFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOztFQUFBO0FBQUE7O0FBQUE7O0NBQUE7QUFBQTtFQUFBO0FBQUE7O0FBQUE7Ozs7Q0FBQTs7QUFBQTs7Ozs7Ozs7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7O0VBQUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FDQUE7RUFBQTtBQUFBO0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFBQTs7RUFBQTtJQUFBO0VBQUE7QUFBQTtBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBO0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFBQTs7RUFBQTtJQUFBO0VBQUE7QUFBQTtBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBO0FDQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTs7RUFBQTtJQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7T0FBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7VUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FDQUE7RUFDRTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBRUE7RUFDQTtFQUlBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0FDWkY7O0FDekRBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFBQTtFQUFBO0FENERGOztBQ3pEQTtFQUNFO0VBQ0E7QUQ0REY7QUMxREU7RUFDRTtBRDRESjs7QUN2REU7RUFDRTtFQUNBO0FEMERKO0FDeERJO0VBSkY7SUFLSTtFRDJESjtBQUNGOztBQ25ERTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFIQTtFQUNFO0lBQUE7RUFBQTtBRDhESjs7QUN4REU7RUFBQTtFQUFBO0FBQUE7O0FDbkNGO0VBQ0U7SUFDRTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFD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O0FBQUE7QUFNRjs7O0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBRUU7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7OztFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFHQTs7O0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0E7RUFBQTtFQUFBO0FBQUE7QUFBQTs7O0VBQUE7RUFBQTtBQUFBO0FBTUY7O0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUVFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUY7RUFBQTtBQUFBO0FBRUU7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0VBQ0E7QUFGQTtBQU1GO0VBQ0U7RUFDQTtFQUNBO0FOZ3dCTjtBTTV2Qkk7RUFBQTtBQUFBO0FBQ0E7RUFDRTtFQUNBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QU5nd0JOO0FNaHdCTTtFQUFBO0FBQUE7QUFFRjtFQUNFO0VBQ0E7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QU5nd0JOO0FNN3ZCSTtFQUNFO0VBQ0E7RUFDQTtBTit2Qk47QU0zdkJJO0VBQ0U7QU42dkJOO0FNenZCTTs7RUFBQTtBQUFBO0FBSUE7RUFBQTtBQUFBO0FBRUU7RUFBQTtBQUFBO0FBS0Y7O0VBQUE7QUFBQTtBQUtGO0VBQUE7QUFBQTtBQU1GO0VBQ0U7QU5zdkJKO0FNbnZCRTs7O0VBR0U7QU5xdkJKO0FNbnZCRTs7RUFFRTtFQUNBO0VBQ0E7QU5xdkJKO0FNcHZCSTs7RUFDRTtBTnV2Qk47O0FNbHZCQTs7Q0FBQTtBQUdBO0VBQ0U7RUFDQTtFQUNBO0FOcXZCRjtBTW52Qkk7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFFRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFHQTtFQUFBO0FBQUE7QUFHQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0E7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0o7RUFDRTtFQUNBO0FOc3ZCSjtBTW52Qkk7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUdKO0VBQ0U7QU5zdkJGOztBTW52QkE7O0NBQUE7QUFJRTtFQUFBO0VBQUE7QUFBQTtBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBO0FBRUE7RUFDRTtFQUNBO0FOc3ZCSjtBTXB2Qkk7RUFDRTtBTnN2Qk47QU1qdkJJO0VBREY7SUFFSTtFTm92Qko7QUFDRjtBTWh2Qkk7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBS0E7RUFBQTtFQUNBO0VBQ0E7RUFDQTtBQUhBO0FBT0E7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUdFO0VBQUE7RUFBQTtBQUFBO0FBS0E7RUFBQTtFQUFBO0FBQUE7O0FBS0o7RUFERjtJQUVJO0lBQ0E7RU44dUJGO0FBQ0Y7O0FNM3VCRTtFQUNFO0FOOHVCSjtBTTd1Qkk7RUFGRjtJQUdJO0VOZ3ZCSjtBQUNGOztBTTd1QkE7RUFDRTtBTmd2QkY7O0FNMXVCRTs7O0VBQ0U7QU4rdUJKO0FNOXVCSTtFQUZGOzs7SUFHSTtFTm12Qko7QUFDRjs7QU05dUJFOztFQUNFO0FOa3ZCSjs7QU03dUJJO0VBQ0U7QU5ndkJOO0FNOXVCTTtFQUhGO0lBSUk7RU5pdkJOO0FBQ0Y7O0FNN3VCQTtFQUNFO0FOZ3ZCRjs7QU03dUJFO0VBQ0U7QU5ndkJKO0FNL3VCSTtFQUZGO0lBR0k7RU5rdkJKO0FBQ0Y7O0FNOXVCRTtFQUNFO0FOaXZCSjs7QU05dUJBO0VBQ0U7RUFDQTtFQUNBO0FOaXZCRjs7QU0vdUJBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QU5rdkJGOztBT3BqQ0E7RUFDRTtFQUNBO0FQdWpDRjtBT25qQ007RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0U7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUNUUjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVJra0NGO0FRaGtDRTtFQUNFO0FSa2tDSjtBUS9qQ0U7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7T0FBQTtBUmlrQ0o7QVEvakNJO0VBQ0U7QVJpa0NOO0FROWpDSTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FSZ2tDTjs7QVEzakNBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUjhqQ0Y7O0FRM2pDQTtFQUNFO0VBQ0E7RUFDQTtPQUFBO0FSOGpDRjtBUTVqQ0U7RUFDRTtBUjhqQ0o7O0FRempDRTtFQUNFO0FSNGpDSjtBUTFqQ0k7RUFDRTtFQUNBO0VBQ0E7QVI0akNOO0FRempDSTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FSMmpDTjs7QVF0akNBO0VBQ0U7RUFDQTtBUnlqQ0Y7QVF2akNFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUnlqQ0o7QVF2akNJO0VBQ0U7QVJ5akNOOztBUXBqQ0E7RUFDRTtFQUNBO0FSdWpDRjs7QVFwakNBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUnVqQ0Y7O0FRbGpDSTtFQUNFO0VBQ0E7QVJxakNOO0FRbGpDSTtFQUNFO0VBQ0E7RUFDQTtBUm9qQ047QVFqakNJO0VBQ0U7QVJtakNOO0FRaGpDSTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVJrakNOO0FRaGpDTTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FSa2pDUjtBUTlpQ0U7RUFDRTtFQUNBO0FSZ2pDSjs7QVExaUNJO0VBQ0U7RUFDQTtBUjZpQ047QVF4aUNJO0VBQ0U7RUFDQTtBUjBpQ047QVFyaUNJO0VBQ0U7RUFDQTtBUnVpQ047O0FTaHRDQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFBQTtFQUFBO0VBQUE7QVRtdENGO0FTaHRDSTtFQUFBO0VBQUE7RUFDQTtFQUFBO0FBREE7QUFHQTtFQUNFO0VBQ0E7QVRtdENOOztBUzlzQ0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQUE7RUFBQTtBVGl0Q0Y7QVMvc0NFO0VBQ0U7QVRpdENKO0FTN3NDSTtFQUNFO0FUK3NDTjs7QVNyc0NFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBO0FBSkE7RUFERjtJQUVJO0lBQ0E7RVRndENGO0FBQ0Y7QVM3c0NFO0VBQ0U7RUFDQTtBVCtzQ0o7O0FTM3NDQTtFQUNFO0FUOHNDRjs7QVMxc0NFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBREY7RUFFRTtFQUNBO0FUOHNDRjs7QVMzc0NBO0VBQ0U7SUFDRTtFVDhzQ0Y7QUFDRjtBUzNzQ0E7RUFDRTtBVDZzQ0Y7O0FTMXNDRTtFQUNFO0FUNnNDSjs7QVN2c0NJO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFFRjtFQUNFO0FUMnNDSjs7QVNyc0NFOztFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTs7QUFNQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0U7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFJQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUdFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7RUFDQTtBQUZBO0FBTUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUo7RUFDRTtBVG9zQ0o7QVNoc0NJO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFNRjtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFJRTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtBQUFBOztBQU1GO0VBQUE7RUFBQTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUdFO0VBQUE7RUFBQTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBRUE7RUFDRTtFQUNBO0FUOHJDTjtBUzNyQ007RUFBQTtFQUFBO0FBQUE7QUFJRjtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFJQTtFQUFBO0VBQUE7QUFBQTtBQUdGO0VBQ0U7RUFDQTtBVDJyQ0o7O0FTcnJDRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUlFO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtBQUFBOztBQUtGO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUlFO0VBQUE7RUFBQTtBQUFBOztBQUtGO0VBQUE7QUFBQTs7QUFJQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFJRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUtGO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBSUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFJRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFHRjtFQUNFO0VBQ0E7QVRvckNKOztBVTE1Q0U7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0VBQ0E7QUFGQTtBQUtFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBSUU7RUFBQTtBQUFBO0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtFQUNBO0VBQ0E7QUFIQTs7QUFRSjtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUlFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBSUU7RUFBQTtBQUFBO0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtFQUNBO0VBQ0E7QUFIQTs7QUNqQ0o7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUlFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFFRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FYbThDSjtBV2g4Q0U7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBWGs4Q0o7O0FXLzdDQTtFQUNFO0FYazhDRjtBV2g4Q0U7RUFIRjtJQUlJO0VYbThDRjtBQUNGOztBQXI4Q0E7RUFDRTtFQUNBO0VBQ0E7QUF3OENGOztBSm4rQ0E7RUFBQTtDZ0JBQTs7QWhCQUE7RUFBQTtDZ0JBQTs7QWhCQUE7RUFBQTtDZ0JBQTs7QWhCQUE7RUFBQTtDZ0JBQTs7QWhCQUE7RUFBQTtDZ0JBQTs7QWhCQUE7RUFBQSx1QmdCQUE7RWhCQUE7Q2dCQUE7O0FoQkFBO0VBQUEsbUJnQkFBO0VoQkFBO0NnQkFBOztBaEJBQTtFQUFBLG1CZ0JBQTtFaEJBQTtDZ0JBQTs7QWhCQUE7RUFBQSxzQmdCQUE7RWhCQUE7Q2dCQUE7O0FoQkFBO0VBQUEsaUJnQkFBO0VoQkFBO0NnQkFBOztBaEJBQTtFQUFBLHFCZ0JBQTtFaEJBQTtDZ0JBQTs7QWhCQUE7RUFBQSwrQmdCQUE7RWhCQUE7Q2dCQUE7O0FoQkFBO0VBQUE7Q2dCQUE7O0FoQkFBO0VBQUE7Q2dCQUE7O0FoQkFBO0VBQUEsdUJnQkFBO0VoQkFBO0NnQkFBOztBaEJBQTtFQUFBLHVCZ0JBQTtFaEJBQTtDZ0JBQTs7QWhCQUE7RUFBQSxtQmdCQUE7RWhCQUE7Q2dCQUE7O0FoQkFBO0VBQUEsbUJnQkFBO0VoQkFBO0NnQkFBOztBaEJBQTtFQUFBLG1CZ0JBQTtFaEJBQTtDZ0JBQTs7QWhCQUE7RUFBQSxtQmdCQUE7RWhCQUE7Q2dCQUE7O0FoQkFBO0VBQUEsbUJnQkFBO0VoQkFBO0NnQkFBOztBaEJBQTtFQUFBLHFCZ0JBQTtFaEJBQTtDZ0JBQTs7QWhCQUE7RUFBQSxxQmdCQUE7RWhCQUE7Q2dCQUE7O0FoQkFBO0VBQUEsZ0NnQkFBO0VoQkFBO0NnQkFBOztBaEJBQTtFQUFBLHFCZ0JBQTtFaEJBQTtDZ0JBQTs7QWhCQUE7RUFBQSxxQmdCQUE7RWhCQUE7Q2dCQUE7O0FoQkFBO0VBQUEscUJnQkFBO0VoQkFBO0NnQkFBOztBaEJBQTtFQUFBO0NnQkFBOztBaEJBQTtFQUFBO0NnQkFBOztBaEJBQTtFQUFBLHNCZ0JBQTtFaEJBQTtDZ0JBQTs7QWhCQUE7RUFBQSxxQmdCQUE7RWhCQUE7Q2dCQUE7O0FoQkFBO0VBQUE7Q2dCQUE7O0FoQkFBOztFQUFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUEsb0JnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBLHdCZ0JBQTtJaEJBQSwrRGdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUEsZ0NnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBLCtCZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQSxxQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUEsb0JnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBLGtCZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQSxvQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUEsbUJnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBLG9CZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQSxzQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUEsc0JnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBLHFCZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQSxxQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUEsa0JnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBLGdCZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQSxtQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7Q0FBQTs7QWhCQUE7O0VBQUE7SUFBQSxnQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUEsNkJnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBLDRCZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQSxxQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUEsbUJnQkFBO0loQkFBO0dnQkFBO0NBQUE7O0FoQkFBOztFQUFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUEsa0JnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBLHFCZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTtDQUFBOztBaEJBQTs7RUFBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBLGtCZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQSxxQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUEsa0JnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBLHFCZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQSxzQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUEsbUJnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBLHFCZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTtDQUFBOztBaEJBQTs7RUFBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBO0NBQUE7O0FoQkFBOztFQUFBO0lBQUE7R2dCQUE7Q0FBQTs7QWhCQUE7RUFBQSxtQmdCQUE7RWhCQUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdGFpbHdpbmRjc3MvYmFzZS5jc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3RhaWx3aW5kY3NzL2NvbXBvbmVudHMuY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy90YWlsd2luZGNzcy91dGlsaXRpZXMuY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9hYnN0cmFjdHMvX3ZhcmlhYmxlcy5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy93ZWJwb3J0YWwtYXBwLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2Jhc2UvX3R5cG9ncmFwaHkuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvbGF5b3V0cy9faGVhZGVyLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2xheW91dHMvX21haW4uc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvbGF5b3V0cy9fd2VicG9ydGFscGFnZXMuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50L19pbnB1dC5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnQvX2Zvcm1zLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2xheW91dHMvX2Zvb3Rlci5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnQvX3NlbGVjdDIuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50L19idXR0b24uc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50L19vdmVybGF5LnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudC9faGFtYnVyZ2VyLnNjc3MiLCJ3ZWJwYWNrOi8vLzxubyBzb3VyY2U+Il0sInNvdXJjZXNDb250ZW50IjpbIkB0YWlsd2luZCBiYXNlO1xuIiwiQHRhaWx3aW5kIGNvbXBvbmVudHM7XG4iLCJAdGFpbHdpbmQgdXRpbGl0aWVzO1xuIiwiOnJvb3Qge1xuICAtLWJsYWNrOiAwLCAwLCAwO1xuICAtLXdoaXRlOiAyNTUsIDI1NSwgMjU1O1xuICAtLXRyYW5zcGFyZW50OiB0cmFuc3BhcmVudDtcblxuICAvLyBOZXV0cmFsc1xuICAtLW4tMDogMjU1LCAyNTUsIDI1NTtcbiAgLS1uLTEwOiAyNDEsIDI0NywgMjQ5O1xuICAtLW4tMjA6IDIxMywgMjIwLCAyMjI7XG4gIC0tbi0zMDogMTY2LCAxODEsIDE4NjtcbiAgLS1uLTQwOiAxMDQsIDEyMSwgMTI2O1xuICAtLW4tNTA6IDQyLCA0NywgNDg7XG5cbiAgLy8gUHJpbWFyeSBjb2xvcnNcbiAgLS10dXJxdW9pc2U6IDYsIDIxOSwgMjI4O1xuICAtLWJsdWVjb3JhbDogMjEsIDgzLCAxMDI7XG5cbiAgLS1ibHVlY29yYWwtNDA6IDYwLCAxMTIsIDEyODtcbiAgLS1ibHVlY29yYWwtNTA6IDIxLCA4MywgMTAyO1xuXG4gIC8vIFNlY29uZGFyeSBjb2xvcnNcbiAgLy8gQ2FtZWxcbiAgLS1jYW1lbC0xMDogMjUyLCAyMzksIDIyODtcbiAgLS1jYW1lbC0yMDogMjQ5LCAyMTksIDE5MztcbiAgLS1jYW1lbC0zMDogMjQ4LCAyMDcsIDE3MztcbiAgLS1jYW1lbC00MDogMjQ2LCAxOTUsIDE1MjtcbiAgLS1jYW1lbC01MDogMjQ0LCAxODMsIDEzMjtcbiAgLy8gVGVhbFxuICAtLXRlYWwtMTA6IDIzMSwgMjQzLCAyNDE7XG4gIC0tdGVhbC0yMDogMjE1LCAyMzUsIDIzMjtcbiAgLS10ZWFsLTMwOiAxOTUsIDIyNCwgMjIwO1xuICAtLXRlYWwtNDA6IDE3NSwgMjE0LCAyMDk7XG4gIC0tdGVhbC01MDogMTM1LCAxOTQsIDE4NjtcbiAgLy8gU3ByaW5nXG4gIC0tc3ByaW5nLTEwOiAxNzgsIDIyMSwgMjExO1xuICAtLXNwcmluZy0yMDogMTM5LCAyMDQsIDE4OTtcbiAgLS1zcHJpbmctMzA6IDEwMCwgMTg3LCAxNjc7XG4gIC0tc3ByaW5nLTQwOiA2MiwgMTcwLCAxNDU7XG4gIC0tc3ByaW5nLTUwOiAyMywgMTUzLCAxMjM7XG4gIC8vIExhZ29vblxuICAtLWxhZ29vbi0xMDogMjA5LCAyMzgsIDI0MDtcbiAgLS1sYWdvb24tMjA6IDE3OCwgMjI3LCAyMjk7XG4gIC0tbGFnb29uLTMwOiAxMzksIDIxMywgMjE2O1xuICAtLWxhZ29vbi00MDogMTAxLCAyMDAsIDIwNDtcbiAgLS1sYWdvb24tNTA6IDI0LCAxNzIsIDE3ODtcbiAgLy8gU2FsbW9uXG4gIC0tc2FsbW9uLTEwOiAyNTUsIDIyNywgMjI0O1xuICAtLXNhbG1vbi0yMDogMjU1LCAyMDgsIDIwMztcbiAgLS1zYWxtb24tMzA6IDI1NSwgMTg0LCAxNzc7XG4gIC0tc2FsbW9uLTQwOiAyNTUsIDE2MSwgMTUyO1xuICAtLXNhbG1vbi01MDogMjU1LCAxMTQsIDEwMDtcbiAgLy8gTGF2ZW5kZXJcbiAgLS1sYXZlbmRlci0xMDogMjM3LCAyMjYsIDI1MTtcbiAgLS1sYXZlbmRlci0yMDogMjI1LCAyMDcsIDI0ODtcbiAgLS1sYXZlbmRlci0zMDogMjEwLCAxODIsIDI0NDtcbiAgLS1sYXZlbmRlci00MDogMTk2LCAxNTgsIDI0MDtcbiAgLS1sYXZlbmRlci01MDogMTY2LCAxMTAsIDIzMztcbiAgLS1sYXZlbmRlci02MDogMjQ2LCAyNDAsIDI1NTtcbiAgLy8gQ3JpbXNvblxuICAtLWNyaW1zb24tMTA6IDI1NSwgMjQ4LCAyNDc7XG4gIC0tY3JpbXNvbi0yMDogMjUwLCAyMTMsIDIxNTtcbiAgLS1jcmltc29uLTMwOiAyNDEsIDE1NSwgMTYwO1xuICAtLWNyaW1zb24tNDA6IDIyNywgNzcsIDkxO1xuICAtLWNyaW1zb24tNTA6IDIwOSwgMCwgMzA7XG5cbiAgLy8gUGFzdGVsIGNvbG9yc1xuICAtLWVnZ3NoZWxsOiAyNTUsIDI1MywgMjMxO1xuICAtLW1pbnQ6IDIzOCwgMjQ5LCAyNDU7XG4gIC0tcm9zZTogMjU1LCAyNDEsIDI0MDtcbiAgLS1wYXBlcjogMjQ2LCAyNDcsIDI1Mjtcbn1cbiIsIi8vdGFpbHdpbmRcbkBpbXBvcnQgJ350YWlsd2luZGNzcy9iYXNlJztcbkBpbXBvcnQgJ350YWlsd2luZGNzcy9jb21wb25lbnRzJztcbkBpbXBvcnQgJ350YWlsd2luZGNzcy91dGlsaXRpZXMnO1xuXG4vLyBBYnN0cmFjdHNcbkBpbXBvcnQgJ2Fic3RyYWN0cy92YXJpYWJsZXMnO1xuLy8gYmFzZVxuQGltcG9ydCAnYmFzZS90eXBvZ3JhcGh5JztcblxuLy8gbGF5b3V0c1xuQGltcG9ydCAnbGF5b3V0cy9oZWFkZXInO1xuQGltcG9ydCAnbGF5b3V0cy9tYWluJztcbkBpbXBvcnQgJ2xheW91dHMvX3dlYnBvcnRhbHBhZ2VzJztcbkBpbXBvcnQgJ2NvbXBvbmVudC9pbnB1dCc7XG5AaW1wb3J0ICdjb21wb25lbnQvZm9ybXMnO1xuQGltcG9ydCAnbGF5b3V0cy9mb290ZXInO1xuQGltcG9ydCAnY29tcG9uZW50L3NlbGVjdDInO1xuXG4vL2NvbXBvbmVudHNcbkBpbXBvcnQgJ2NvbXBvbmVudC9idXR0b24nO1xuQGltcG9ydCAnY29tcG9uZW50L292ZXJsYXknO1xuQGltcG9ydCAnY29tcG9uZW50L2hhbWJ1cmdlcic7XG5cbmh0bWwge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICBvcGFjaXR5OiAxO1xuICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xufVxuIiwiYm9keSB7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgQGFwcGx5IG1pbi1oLXNjcmVlbiBiZy1wYXBlcjtcbn1cblxuYSB7XG4gIGNvbG9yOiByZ2IodmFyKC0tYmx1ZWNvcmFsKSk7XG4gIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7XG5cbiAgJjpob3ZlciB7XG4gICAgY29sb3I6IHJnYih2YXIoLS1zcHJpbmctNTApKTtcbiAgfVxufVxuXG4ubGVmdCB7XG4gICZfX3RpdGxlIHtcbiAgICBmb250LXNpemU6IDI3cHg7XG4gICAgdGV4dC1zaGFkb3c6IDRweCA0cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wMSk7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgICAgIGZvbnQtc2l6ZTogMzJweDtcbiAgICB9XG4gIH1cbn1cblxuaDIge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0NDBweCkge1xuICAgIEBhcHBseSB0ZXh0LWhlYWRpbmctNDtcbiAgfVxuICBAYXBwbHkgdGV4dC1oZWFkaW5nLTUgZm9udC1ib2xkIHRleHQtbi01MCBtZDp0ZXh0LWhlYWRpbmctMztcbn1cblxuaDQge1xuICBAYXBwbHkgdGV4dC1oZWFkaW5nLTQgbGVhZGluZy1ub3JtYWw7XG59XG4iLCJAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xuICAud3JhcHBlcjo6YWZ0ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAyOTJweDtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy9pbWFnZXMvbWFycXVlLXdoaXRlLnBuZycpO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJSAxNi41JTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDcwJTtcbiAgICBvcGFjaXR5OiAwLjM7XG4gICAgY29udGVudDogJyc7XG4gIH1cbn1cbi5oZWFkZXIge1xuICBtYXgtd2lkdGg6IDE0MDBweDtcbiAgbWFyZ2luOiBhdXRvO1xufVxuLm5hdl9fYWN0aXZlOjphZnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA0cHg7XG4gIEBhcHBseSBiZy10dXJxdW9pc2U7XG4gIGNvbnRlbnQ6ICcnO1xufVxuLmxpbmtzX19hY3RpdmUge1xuICBAYXBwbHkgdGV4dC1ibGFjaztcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG4ubmF2X19saW5rcyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZzogMjBweCA4cHg7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICBkaXNwbGF5OiBibG9jaztcblxuICBhOmhvdmVyIHtcbiAgICBAYXBwbHkgdGV4dC1uLTUwO1xuICB9XG5cbiAgLnJlYWRfX21vcmUge1xuICAgIEBhcHBseSByb3VuZGVkLXNtIGJnLWJsdWVjb3JhbCB0ZXh0LWNlbnRlciB0ZXh0LXhzIHRleHQtd2hpdGU7XG4gICAgd2lkdGg6IGZpdC1jb250ZW50O1xuICAgIHBhZGRpbmc6IDhweCAxOHB4O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBAYXBwbHkgYmctbi01MCB0ZXh0LXdoaXRlO1xuICAgIH1cbiAgfVxuXG4gIGEge1xuICAgIEBhcHBseSB0ZXh0LXdoaXRlO1xuICAgIHBhZGRpbmctYm90dG9tOiAyNHB4O1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxNDE1cHgpIHtcbiAgLm5hdl9fbGlua3Mge1xuICAgIHBhZGRpbmc6IDBweCA4cHggMjBweDtcblxuICAgIGEge1xuICAgICAgQGFwcGx5IHRleHQtbi01MDtcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBib3R0b206IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDRweDtcbiAgICAgIEBhcHBseSBiZy10dXJxdW9pc2U7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDAsIDEpO1xuICAgICAgdHJhbnNpdGlvbjogMC4zcztcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgIH1cbiAgICAmOmhvdmVyOjphZnRlciB7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIDEpO1xuICAgIH1cbiAgfVxufVxuLmRyb3Bkb3duX19jb250ZW50IHtcbiAgQGFwcGx5IGludmlzaWJsZSBhYnNvbHV0ZSByaWdodC0wIHRvcC03IGhpZGRlbiBoLTU2IGJnLXdoaXRlIHB5LTcgcHgtOCBvcGFjaXR5LTAgZHVyYXRpb24tMzAwIDF4bDpibG9jaztcbiAgd2lkdGg6IDQyNHB4O1xuICBoZWlnaHQ6IGF1dG87XG4gIGxpbmUtaGVpZ2h0OiAyMnB4O1xuICBib3gtc2hhZG93OiAwcHggOHB4IDE2cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cbi5kcm9wZG93bjpob3ZlciB7XG4gIC5kcm9wZG93bl9fY29udGVudCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEycHgpO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuLm5hdl9fbGlzdCB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0MTVweCkge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogc3RhcnQ7XG4gICAgd2lkdGg6IDMwMHB4O1xuICAgIGhlaWdodDogMTAwdmg7XG4gICAgcGFkZGluZzogNjVweCAzMHB4O1xuXG4gICAgQGFwcGx5IGJnLWJsdWVjb3JhbCB0ZXh0LXdoaXRlO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDUlKTtcbiAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICAgIHotaW5kZXg6IDExMDtcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KC0wcHggMHB4IDhweCAjMDAwKTtcblxuICAgIC5hY3RpdmUge1xuICAgICAgYSB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXdoaXRlO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHBhZGRpbmc6IDAgMCAyNHB4IDZweDtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICBAYXBwbHkgdGV4dC13aGl0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgdG9wOiAtNHB4O1xuICAgICAgICAgIGxlZnQ6IC02cHg7XG4gICAgICAgICAgd2lkdGg6IDRweDtcbiAgICAgICAgICBoZWlnaHQ6IDYwJTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIDApO1xuICAgICAgICAgIHRyYW5zaXRpb246IDAuM3M7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMTAwcHg7XG4gICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgQGFwcGx5IGJnLXR1cnF1b2lzZTtcbiAgICAgICAgfVxuICAgICAgICAmOmhvdmVyOjphZnRlciB7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ0MHB4KSB7XG4gICAgd2lkdGg6IDI1MHB4O1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICB9XG59XG5cbiNtZW51LW92ZXJsYXkge1xuICBAYXBwbHkgMXhsOmhpZGRlbjtcbn1cblxuI2FjdGl2aXR5LW1lbnUtb3ZlcmxheSB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDE0MjBweCkge1xuICAgIEBhcHBseSBoaWRkZW47XG4gIH1cbn1cblxuLm1lbnUtb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50O1xuICB6LWluZGV4OiAxMDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xufVxuLmFjdGl2aXR5LW5hdi1tZW51IHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTQyMHB4KSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAzMDBweDtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIHBhZGRpbmc6IDEwMHB4IDMwcHg7XG4gICAgQGFwcGx5IGJnLWJsdWVjb3JhbCB0ZXh0LXdoaXRlO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDUlKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoN3B4KTtcbiAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICAgIHotaW5kZXg6IDEwMDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDBweCA4cHggIzAwMCk7XG5cbiAgICAuYWN0aXZpdHktbmF2LWxpc3Qge1xuICAgICAgQGFwcGx5IGZsZXggZmxleC1jb2wgZ2FwLXktNCBwbC00IHRleHQtc207XG4gICAgICAubmF2X19wb2ludGVyLFxuICAgICAgLm5hdl9fcG9pbnRlci1ob3ZlciB7XG4gICAgICAgIEBhcHBseSByZWxhdGl2ZTtcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgQGFwcGx5IGFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCBoLTEgdy1mdWxsIHNjYWxlLXgtMCBzY2FsZS15LTEwMCByb3VuZGVkLXNtIGJnLXR1cnF1b2lzZSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDA7XG5cbiAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxNDIwcHgpIHtcbiAgICAgICAgICAgIEBhcHBseSAtYm90dG9tLTIgIGgtMSB3LWZ1bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlcjphZnRlciB7XG4gICAgICAgICAgQGFwcGx5IHNjYWxlLXgtMTAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAubmF2X19wb2ludGVyOmFmdGVyIHtcbiAgICAgICAgQGFwcGx5IHNjYWxlLXgtMTAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5hY3Rpdml0eS1uYXYtbGlzdC5hY3Rpdml0eS1saXN0IHtcbiAgICAgIC5uYXZfX3BvaW50ZXIsXG4gICAgICAubmF2X19wb2ludGVyLWhvdmVyIHtcbiAgICAgICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiAnJztcblxuICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0MjBweCkge1xuICAgICAgICAgICAgQGFwcGx5IHRvcC0wIC1sZWZ0LTQgaC00IHctMTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyOmFmdGVyIHtcbiAgICAgICAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5uYXZfX3BvaW50ZXI6YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gICAgICB9XG4gICAgfVxuICAgIC5hY3Rpdml0eS1uYXYtbGlzdC5sYW5ndWFnZS1uYXYtbGlzdCB7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAyOHB4O1xuICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNCk7XG5cbiAgICAgIC5uYXZfX3BvaW50ZXIsXG4gICAgICAubmF2X19wb2ludGVyLWhvdmVyIHtcbiAgICAgICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBAYXBwbHkgYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIGgtMSB3LWZ1bGwgc2NhbGUteC0wIHNjYWxlLXktMTAwIHJvdW5kZWQtc20gYmctdHVycXVvaXNlIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMDtcblxuICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0MjBweCkge1xuICAgICAgICAgICAgQGFwcGx5IC1ib3R0b20tMiAgaC0xIHctZnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyOmFmdGVyIHtcbiAgICAgICAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5uYXZfX3BvaW50ZXI6YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4ubmF2LWFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG59XG5cbi5uYXYge1xuICAmX19wb2ludGVyLFxuICAmX19wb2ludGVyLWhvdmVyIHtcbiAgICBAYXBwbHkgcmVsYXRpdmU7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIEBhcHBseSBhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTAgaC0xIHctZnVsbCBzY2FsZS14LTAgc2NhbGUteS0xMDAgcm91bmRlZC1zbSBiZy10dXJxdW9pc2UgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwO1xuXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxNDIwcHgpIHtcbiAgICAgICAgQGFwcGx5IC1sZWZ0LTQgaC00IHctMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyOmFmdGVyIHtcbiAgICAgIEBhcHBseSBzY2FsZS14LTEwMDtcbiAgICB9XG4gIH1cblxuICAmX19wb2ludGVyOmFmdGVyIHtcbiAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gIH1cbn1cblxuLmFjdGl2aXR5LW5hdiB7XG4gIEBhcHBseSBmbGV4IGdyb3c7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTQyMHB4KSB7XG4gICAgQGFwcGx5IGp1c3RpZnktZW5kO1xuICB9XG59XG5cbi5sYW5ndWFnZS1ob3Zlcjpob3ZlciB7XG4gIEBhcHBseSBuYXZfX2FjdGl2ZSBsaW5rc19fYWN0aXZlO1xuICBhIHtcbiAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbiAgfVxufVxuLndlYi1oZWFkZXIge1xuICAubGFuZ3VhZ2UtaG92ZXI6aG92ZXIge1xuICAgIGEge1xuICAgICAgY29sb3I6ICMyYTJmMzAgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTQxNXB4KSB7XG4gIC53ZWItaGVhZGVyIHtcbiAgICAubmF2X19saW5rcyB7XG4gICAgICBwYWRkaW5nOiA4cHg7XG4gICAgICBmb250LXNpemU6IDEycHg7XG4gICAgfVxuICB9XG59XG4iLCIubWFpbiB7XG4gICZfX2NvbnRhaW5lciB7XG4gICAgbWF4LXdpZHRoOiAxMTY2cHg7XG4gICAgbWFyZ2luOiBhdXRvO1xuICB9XG4gIC5sZWZ0X19jb250YWluZXIge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChcbiAgICAgIDE2MGRlZyxcbiAgICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSxcbiAgICAgIHRyYW5zcGFyZW50XG4gICAgKTtcblxuICAgIGEge1xuICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci1iLTIgYm9yZGVyLXR1cnF1b2lzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLnJpZ2h0IHtcbiAgICB3aWR0aDogOTMlO1xuICAgIGJveC1zaGFkb3c6IDBweCAyMHB4IDQwcHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuXG4gICAgJl9fY29udGFpbmVyIHtcbiAgICAgIGgyIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDYwcHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fY29udGVudCB7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgIGJveC1zaGFkb3c6IDBweCAwcHggMjVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgICAgQGFwcGx5IGZsZXggaXRlbXMtY2VudGVyIHJvdW5kZWQtbGcgYmctd2hpdGUgcHktNiBweC01O1xuXG4gICAgICAucmlnaHRfX2ljb24ge1xuICAgICAgICBAYXBwbHkgdGV4dC1sYWdvb24tNTA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IC04cHg7XG4gICAgICB9XG4gICAgICAucmlnaHRfX2Fycm93IHtcbiAgICAgICAgQGFwcGx5IHRleHQtd2hpdGU7XG4gICAgICB9XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItdHVycXVvaXNlIGJnLXR1cnF1b2lzZSBiZy1vcGFjaXR5LTEwO1xuICAgICAgICBib3gtc2hhZG93OiAwcHggMHB4IDI1cHggMHB4IHRyYW5zcGFyZW50O1xuXG4gICAgICAgIC5yaWdodF9faWNvbiB7XG4gICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIEBhcHBseSBmaWxsLWxhZ29vbi01MCB0ZXh0LXdoaXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAucmlnaHRfX2Fycm93IHtcbiAgICAgICAgICBAYXBwbHkgZmlsbC13aGl0ZSB0ZXh0LXR1cnF1b2lzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMzY2cHgpIHtcbiAgICAuam9pbi1ub3cge1xuICAgICAgQGFwcGx5IHB4LTIwO1xuXG4gICAgICAucmlnaHRfX2NvbnRlbnQge1xuICAgICAgICB3aWR0aDogNDIzcHg7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xuICBpbnB1dCB7XG4gICAgcGFkZGluZy1sZWZ0OiA2MHB4O1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLmxlZnQge1xuICAgIGhlaWdodDogNjQ5cHg7XG5cbiAgICAmX19jb250YWluZXIge1xuICAgICAgd2lkdGg6IDM4NnB4O1xuICAgIH1cbiAgfVxuICAucmlnaHQge1xuICAgIGhlaWdodDogNjQ5cHg7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5yaWdodCB7XG4gICAgbWFyZ2luLXRvcDogLTI2NXB4O1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0MjBweCkge1xuICAucmlnaHRfX2ljb24ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgLmRldGFpbHMge1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgd2lkdGg6IDhweDtcbiAgaGVpZ2h0OiA4cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgQGFwcGx5IHJvdW5kZWQtbGcgYmctbi0yMCBob3ZlcjpiZy1uLTMwO1xufVxubWFpbiB7XG4gIGRpc3BsYXk6IGdyaWQ7IC8vIExpbmUgMVxuICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gMWZyIGF1dG87IC8vIExpbmUgMlxuICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gNDY1cHgpOyAvLyBMaW5lIDNcbn1cbi5hY3Rpdml0aWVzX19zaWRlYmFyIHtcbiAgZmxleC1zaHJpbms6IDA7XG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3MDBweCkge1xuICAgIHdpZHRoOiAyMjBweCAhaW1wb3J0YW50O1xuICB9XG59XG5ib2R5LmRpc2FibGUtc2Nyb2xsIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgaGVpZ2h0OiAxMHB4O1xufVxuLy8gYm9keSB7XG4vLyAgIHBhZGRpbmctdG9wOiA2MHB4O1xuLy8gfVxuXG4vLyBib2R5Lm5vLW5hdiB7XG4vLyAgIHBhZGRpbmctdG9wOiAwcHggIWltcG9ydGFudDtcbi8vIH1cbmh0bWwge1xuICBzY3JvbGwtcGFkZGluZy10b3A6IDIwcHg7IC8qIGhlaWdodCBvZiBzdGlja3kgaGVhZGVyICovXG59XG4iLCIuc21vb3RoIHtcbiAgYW5pbWF0aW9uOiBmYWRlSW5BbmltYXRpb24gZWFzZSAwLjNzO1xuICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxO1xufVxuXG5Aa2V5ZnJhbWVzIGZhZGVJbkFuaW1hdGlvbiB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cbiIsIi5pbnB1dCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDE0cHggMHB4IDE0cHggNTVweDtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBsaW5lLWhlaWdodDogMjRweDtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBvdXRsaW5lOiBub25lO1xuICB0cmFuc2l0aW9uOiAwLjNzO1xuICBAYXBwbHkgaC0xNCBib3JkZXIgYm9yZGVyLW4tMzAgc206aC0xNjtcblxuICAmOmZvY3VzIHtcbiAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1uLTUwIGJnLW4tMTA7XG4gIH1cblxuICAmOjpwbGFjZWhvbGRlciB7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgQGFwcGx5IGZvbnQtbm9ybWFsIHRleHQtbi00MDtcbiAgfVxuXG4gICY6Zm9jdXM6OnBsYWNlaG9sZGVyIHtcbiAgICBAYXBwbHkgdGV4dC1uLTUwO1xuICB9XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgICBwYWRkaW5nOiAyMHB4IDBweCAyMHB4IDU1cHg7XG4gIH1cbn1cbi5lcnJvciB7XG4gIEBhcHBseSB0ZXh0LXNtIHRleHQtY3JpbXNvbi01MCBzbTp0ZXh0LWJhc2U7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgbGluZS1oZWlnaHQ6IDE4cHg7XG59XG5cbi5oYXNfZXJyb3Ige1xuICAuZm9ybV9faW5wdXQge1xuICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLWNyaW1zb24tNTA7XG4gIH1cbn1cbnRleHRhcmVhLmZvcm1fX2lucHV0IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4udGV4dC1hcmVhIHtcbiAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICBoZWlnaHQ6IDYwcHg7XG4gIHJlc2l6ZTogbm9uZTtcbn1cbi5mb3JtX19pbnB1dCB7XG4gIEBhcHBseSBtYi0yIGJveC1ib3JkZXIgdy1mdWxsIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTMwIHRleHQtYmx1ZWNvcmFsIG91dGxpbmUtbm9uZSBkdXJhdGlvbi0zMDA7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgICBwYWRkaW5nOiAxM3B4IDAgMTNweCAxNnB4O1xuICB9XG4gIHBhZGRpbmc6IDEwcHggMCAxMHB4IDE2cHg7XG5cbiAgJjo6cGxhY2Vob2xkZXIge1xuICAgIEBhcHBseSB0ZXh0LXNtIGZvbnQtbm9ybWFsIHRleHQtbi00MDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbiAgfVxuXG4gICY6Zm9jdXMge1xuICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLW4tNTAgYmctbi0xMDtcbiAgfVxuXG4gICY6Zm9jdXM6OnBsYWNlaG9sZGVyIHtcbiAgICBAYXBwbHkgdGV4dC1uLTUwO1xuICB9XG59XG4uaW5wdXRfX2ZpZWxkIHtcbiAgLm11bHRpc2VsZWN0LW9wdGlvbi5pcy1zZWxlY3RlZCB7XG4gICAgQGFwcGx5IGJnLW4tMjAgdGV4dC1uLTUwO1xuICB9XG5cbiAgLm11bHRpc2VsZWN0LW9wdGlvbi5pcy1zZWxlY3RlZC5pcy1wb2ludGVkIHtcbiAgICBAYXBwbHkgYmctbi0yMCB0ZXh0LW4tNTA7XG4gIH1cblxuICAubXVsdGlzZWxlY3QuaXMtYWN0aXZlIHtcbiAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1uLTUwIGJnLW4tMTA7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMDtcbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlciB7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgQGFwcGx5IHctWzMxMHB4XSBvdmVyZmxvdy1oaWRkZW4gd2hpdGVzcGFjZS1ub3dyYXAgcHItMyB0ZXh0LXNtIHRleHQtbi00MCBkdXJhdGlvbi0zMDA7XG4gIH1cblxuICAubXVsdGlzZWxlY3QtcGxhY2Vob2xkZXI6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBAYXBwbHkgYWJzb2x1dGUgcmlnaHQtMCB0b3AtMyBoLTYgdy03IGJnLXdoaXRlO1xuICB9XG5cbiAgLm11bHRpc2VsZWN0LmlzLW9wZW4ge1xuICAgIC5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlciB7XG4gICAgICBAYXBwbHkgdGV4dC1uLTUwO1xuICAgIH1cbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC1kcm9wZG93biB7XG4gICAgQGFwcGx5IGJvcmRlciBib3JkZXItbi01MDtcbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC1jYXJldCB7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoJy9pbWFnZXMvZHJvcGRvd24tYXJyb3cuc3ZnJyk7XG4gICAgbWFzay1pbWFnZTogdXJsKCcvaW1hZ2VzL2Ryb3Bkb3duLWFycm93LnN2ZycpO1xuICB9XG5cbiAgLm11bHRpc2VsZWN0LXNlYXJjaCB7XG4gICAgQGFwcGx5IGN1cnNvci1wb2ludGVyIGJvcmRlciBib3JkZXItbi0zMCBweS0yLjU7XG4gIH1cblxuICAubXVsdGlzZWxlY3Qtc2VhcmNoOmZvY3VzIHtcbiAgICBAYXBwbHkgYmctbi0xMDtcbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC1zZWFyY2g6Zm9jdXMgKyAubXVsdGlzZWxlY3QtcGxhY2Vob2xkZXI6OmFmdGVyIHtcbiAgICBAYXBwbHkgYmctbi0xMDtcbiAgfVxuXG4gIC52dWVfX3NlbGVjdCB7XG4gICAgQGFwcGx5IG1iLTIgYm9yZGVyIGJvcmRlci1uLTMwIHRleHQtc20gbGVhZGluZy02IG91dGxpbmUtbm9uZSBkdXJhdGlvbi0zMDA7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xuICAgICAgcGFkZGluZzogMTZweCAwcHggMTZweCA1NXB4O1xuICAgIH1cbiAgICBwYWRkaW5nOiAxM3B4IDBweCAxM3B4IDU1cHg7XG4gIH1cbn1cbi5lcnJvcl9pbnB1dCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkMTAwMWU7XG59XG4uZXJyb3JfX211bHRpc2VsZWN0IHtcbiAgaW5wdXQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkMTAwMWU7XG4gIH1cbn1cbi5wYW5lbF9faW5wdXQge1xuICBAYXBwbHkgYm94LWJvcmRlciBoLTEwIHctZnVsbCByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCBiZy1wYXBlciBweS0yLjUgcGwtNyBwci0zIG91dGxpbmUtbm9uZSBkdXJhdGlvbi0zMDA7XG5cbiAgJjo6cGxhY2Vob2xkZXIge1xuICAgIEBhcHBseSB0ZXh0LXhzIGZvbnQtbm9ybWFsIHRleHQtbi0zMCBkdXJhdGlvbi0zMDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gIH1cblxuICAmOmZvY3VzOjpwbGFjZWhvbGRlciB7XG4gICAgQGFwcGx5IHRleHQtbi00MDtcbiAgfVxufVxuLnNlYXJjaCB7XG4gIEBhcHBseSByZWxhdGl2ZTtcblxuICAmX19pbnB1dCB7XG4gICAgQGFwcGx5IGJvcmRlciBib3JkZXItbi0zMCBiZy10cmFuc3BhcmVudCBvdXRsaW5lLW5vbmU7XG4gICAgcGFkZGluZzogMTBweCA0MnB4IDEwcHggMzRweDtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICB9XG4gIHN2ZyB7XG4gICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMyB0b3AtMyB0ZXh0LWJhc2UgdGV4dC1uLTMwO1xuICB9XG59XG4ucmVxdWlyZWQtaWNvbiB7XG4gIEBhcHBseSByZWxhdGl2ZSB0b3AtMC41IHRleHQtYmFzZSBsZWFkaW5nLW5vbmUgdGV4dC1jcmltc29uLTUwO1xufVxuLm9wZW4tdGV4dCB7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2E2YjViYTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBpbnB1dCB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwYWRkaW5nLXRvcDogNHB4O1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgcGFkZGluZy1sZWZ0OiAzMHB4O1xuICAgICY6Zm9jdXMge1xuICAgICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuLnVzZXItY2hlY2tsaXN0IHtcbiAgb3BhY2l0eTogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB3aWR0aDogMThweDtcbiAgaGVpZ2h0OiAxOHB4O1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG59XG4ucHNldWRvLWNoZWNrYm94IHtcbiAgaGVpZ2h0OiAxOHB4O1xuICB3aWR0aDogMThweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvcmRlcjogMnB4IHNvbGlkICNkNWRjZGU7XG4gIG9wYWNpdHk6IDE7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG59XG4udXNlci1jaGVja2xpc3Q6Y2hlY2tlZCB+IC5wc2V1ZG8tY2hlY2tib3gge1xuICBib3JkZXItY29sb3I6IHJnYih2YXIoLS1zcHJpbmctNTApKTtcbn1cbi50aWNrZWQtc3ZnIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDFweDtcbiAgbGVmdDogMXB4O1xuICBvcGFjaXR5OiAwO1xuICBoZWlnaHQ6IDE2cHg7XG4gIHdpZHRoOiAxNnB4O1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuNyk7XG59XG4udXNlci1jaGVja2xpc3Q6Y2hlY2tlZCB+IC50aWNrZWQtc3ZnIHtcbiAgb3BhY2l0eTogMTtcbn1cbmlucHV0W3R5cGU9J3JhZGlvJ10ge1xuICBhY2NlbnQtY29sb3I6ICMxNTUzNjY7XG59XG4iLCIuY2hlY2tib3gge1xuICBAYXBwbHkgcmVsYXRpdmUgYmxvY2sgY3Vyc29yLXBvaW50ZXIgc2VsZWN0LW5vbmU7XG4gIC5jaGVja21hcmsge1xuICAgIEBhcHBseSBmbGV4IGgtNCB3LTQgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQgYm9yZGVyLTIgYm9yZGVyLW4tMjA7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGJvcmRlci13aWR0aDogMCAzcHggM3B4IDA7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIEBhcHBseSBtYi0wLjUgaGlkZGVuIGgtMiB3LVs1cHhdIHJvdGF0ZS00NSBib3JkZXItc3ByaW5nLTUwO1xuICAgIH1cbiAgfVxuICBpbnB1dCB7XG4gICAgQGFwcGx5IGFic29sdXRlIGgtMCB3LTAgY3Vyc29yLXBvaW50ZXIgb3BhY2l0eS0wO1xuICAgICY6Y2hlY2tlZCB+IC5jaGVja21hcmsge1xuICAgICAgQGFwcGx5IGJvcmRlci1zcHJpbmctNTA7XG4gICAgICAmOmFmdGVyIHtcbiAgICAgICAgQGFwcGx5IGJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAmOmhvdmVyIGlucHV0IH4gLmNoZWNrbWFyayB7XG4gICAgQGFwcGx5IGJvcmRlci1zcHJpbmctNTA7XG4gIH1cbn1cbi8qKlxuICBMYXJhdmVsIGZvcm0gZGVzaWduXG4gKi9cbmZvcm0ge1xuICAuZm9ybS1maWVsZC1ncm91cCB7XG4gICAgQGFwcGx5IHJlbGF0aXZlIHAtMztcbiAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgQGFwcGx5IG1iLTY7XG4gICAgfVxuXG4gICAgLmZvcm0tZmllbGQge1xuICAgICAgQGFwcGx5IHAtMztcbiAgICAgIC5oZWxwLXRleHQge1xuICAgICAgICBAYXBwbHkgbXQtMiB0ZXh0LXhzIGxlYWRpbmctcmVsYXhlZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgYnV0dG9uLmRlbGV0ZS1pdGVtIHtcbiAgICBAYXBwbHkgYWJzb2x1dGUgaC04IHctOCBjdXJzb3ItcG9pbnRlciBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1mdWxsIGJnLW4tNDAgLWluZGVudC00MDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQ6IHVybCgnL2ltYWdlcy90cmFzaF9mdWxsLnN2ZycpIG5vLXJlcGVhdCBjZW50ZXI7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTEvMiB0b3AtMS8yIGgtWzE4cHhdIHctWzE4cHhdIC10cmFuc2xhdGUteC0xLzIgLXRyYW5zbGF0ZS15LTEvMjtcbiAgICB9XG4gICAgJjpob3ZlciB7XG4gICAgICBAYXBwbHkgYmctYmx1ZWNvcmFsO1xuICAgIH1cbiAgfVxuXG4gIC5mb3JtLWZpZWxkLWdyb3VwLW91dGVyIC5mb3JtLWZpZWxkIHtcbiAgICBAYXBwbHkgcHgtMztcbiAgfVxuXG4gIC5mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICBAYXBwbHkgbWItMiBmbGV4IGp1c3RpZnktYmV0d2VlbjtcbiAgICBsYWJlbCB7XG4gICAgICBAYXBwbHkgdGV4dC14cyBsZWFkaW5nLXJlbGF4ZWQ7XG4gICAgfVxuICAgIC5yZXF1aXJlZCB7XG4gICAgICBAYXBwbHkgZm9udC1ib2xkIHRleHQtc2FsbW9uLTUwO1xuICAgIH1cbiAgfVxuICBpbnB1dFt0eXBlPSd0ZXh0J10sXG4gIGlucHV0W3R5cGU9J2RhdGUnXSxcbiAgdGV4dGFyZWEge1xuICAgIEBhcHBseSBtdC0wIGgtMTIgdy1mdWxsIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTMwIHB4LTQgcHktMi41IHRleHQtc20gbGVhZGluZy1ub3JtYWwgb3V0bGluZS1ub25lIGR1cmF0aW9uLTMwMDtcbiAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICBAYXBwbHkgdGV4dC1zbSB0ZXh0LW4tNDA7XG4gICAgfVxuICAgICY6Zm9jdXMge1xuICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItbi01MCBiZy1uLTEwO1xuICAgIH1cbiAgICAmOmZvY3VzOjpwbGFjZWhvbGRlciB7XG4gICAgICBAYXBwbHkgdGV4dC1uLTUwO1xuICAgIH1cbiAgfVxuXG4gIGlucHV0W3R5cGU9J3RleHQnXSxcbiAgaW5wdXRbdHlwZT0nZGF0ZSddIHtcbiAgICBAYXBwbHkgaC0xMjtcbiAgfVxuXG4gIHNlbGVjdCB7XG4gICAgQGFwcGx5IHctZnVsbCByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCBweC00IHB5LTMgdGV4dC1zbSB0ZXh0LW4tNDAgb3V0bGluZS1ub25lIGR1cmF0aW9uLTMwMDtcbiAgICAmOmZvY3VzIHtcbiAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLW4tNTAgYmctbi0xMDtcbiAgICB9XG4gIH1cbiAgLmhlbHAge1xuICAgIEBhcHBseSByZWxhdGl2ZTtcbiAgICAmX190ZXh0IHtcbiAgICAgIEBhcHBseSBpbnZpc2libGUgYWJzb2x1dGUgdG9wLTQgei0yMCBzcGFjZS15LTEuNSByb3VuZGVkIGJnLWVnZ3NoZWxsIHAtNCB0ZXh0LWxlZnQgdGV4dC14cyB0ZXh0LW4tNDAgb3BhY2l0eS0wIGR1cmF0aW9uLTIwMDtcbiAgICAgIGJveC1zaGFkb3c6IDBweCA0cHggNDBweCByZ2IoMCAwIDAgLyAxMCUpO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQ7XG4gICAgfVxuICB9XG4gIC5oZWxwOmhvdmVyIHtcbiAgICAuaGVscF9fdGV4dCB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNXB4KTtcbiAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuICAuYWRkX21vcmUge1xuICAgIEBhcHBseSByZWxhdGl2ZTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgaC0xLzIgdy1weCBib3JkZXItbCBib3JkZXItc3ByaW5nLTUwO1xuICAgIH1cbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMCB0b3AtMi80IGgtcHggdy0zLjUgLXRyYW5zbGF0ZS15LTEvMiBib3JkZXItYiBib3JkZXItc3ByaW5nLTUwO1xuICAgIH1cblxuICAgIGkge1xuICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgICBiYWNrZ3JvdW5kOiB1cmwoJy9pbWFnZXMvYWRkLW1vcmUtZ3JlZW4uc3ZnJykgbm8tcmVwZWF0IGNlbnRlcjtcbiAgICB9XG4gIH1cbiAgLnN1YmVsZW1lbnQge1xuICAgICYuYm9yZGVyLWwgPiBsYWJlbCB7XG4gICAgICBib3JkZXItbGVmdDogMDtcbiAgICB9XG4gICAgLnN1YmVsZW1lbnQsXG4gICAgLnN1YmVsZW1lbnQgKyBidXR0b24ge1xuICAgICAgQGFwcGx5IG1sLTY7XG4gICAgfVxuXG4gICAgLndyYXBwZWQtY2hpbGQtYm9keSB7XG4gICAgICBAYXBwbHkgcmVsYXRpdmU7XG4gICAgICA+IC5kZWxldGUtcGFyZW50IHtcbiAgICAgICAgQGFwcGx5IGJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgICA+IC5tdWx0aS1mb3JtOm9ubHktb2YtdHlwZSA+IC5kZWxldGUtcGFyZW50LFxuICAgIC53cmFwcGVkLWNoaWxkLWJvZHk6b25seS1vZi10eXBlID4gLmRlbGV0ZS1wYXJlbnQge1xuICAgICAgQGFwcGx5IGhpZGRlbjtcbiAgICB9XG4gIH1cblxuICAuZm9ybS1maWVsZC1ncm91cDpvbmx5LW9mLXR5cGUgPiAuZGVsZXRlLWl0ZW0ge1xuICAgIEBhcHBseSBoaWRkZW47XG4gIH1cblxuICAvKipcbiAgKiBDb25kaXRpb24gdG8gc2hvdyBhbmQgZGVsZXRlIGNvbGxlY3Rpb24gZXJyb3IgaW4gZm9ybVxuICAqL1xuICAuY29sbGVjdGlvbl9lcnJvciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5tdWx0aS1mb3JtICsgLmNvbGxlY3Rpb25fZXJyb3IsXG4gIC5mb3JtLWZpZWxkLWdyb3VwICsgLmNvbGxlY3Rpb25fZXJyb3IsXG4gIC53cmFwcGVkLWNoaWxkLWJvZHkgKyAuY29sbGVjdGlvbl9lcnJvciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbiAgLmNvbnRyb2wtbGFiZWwgKyAuY29sbGVjdGlvbl9lcnJvcixcbiAgLnRpdGxlLWNvbnRhaW5lciAuY29sbGVjdGlvbl9lcnJvciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZy1yaWdodDogMjRweDtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgLmRpdiB7XG4gICAgICBsaW5lLWhlaWdodDogNHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICBTZWxlY3QgMiBmaWVsZFxuKi9cbnNwYW4uc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQge1xuICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUge1xuICAgIEBhcHBseSBoLTEyIHctZnVsbCByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCBweC00IHB5LTMgdGV4dC1zbSB0ZXh0LW4tNDAgb3V0bGluZS1ub25lIGR1cmF0aW9uLTMwMDtcbiAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkIHtcbiAgICAgIEBhcHBseSBwLTAgdGV4dC1zbSBsZWFkaW5nLW5vcm1hbDtcbiAgICB9XG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19hcnJvdyB7XG4gICAgICBAYXBwbHkgaC0xMTtcbiAgICB9XG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19jbGVhciBzcGFuIHtcbiAgICAgIEBhcHBseSBtci0yLjUgdGV4dC1zbTtcbiAgICB9XG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19wbGFjZWhvbGRlciB7XG4gICAgICBAYXBwbHkgdGV4dC1zbSB0ZXh0LW4tNDA7XG4gICAgfVxuICB9XG4gIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0taGlnaGxpZ2h0ZWRbYXJpYS1zZWxlY3RlZF0ge1xuICAgIGNvbG9yOiAjMWYyOTM3O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmM2Y0ZjY7XG4gIH1cbiAgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uW2FyaWEtc2VsZWN0ZWRdIHtcbiAgICBAYXBwbHkgdGV4dC1zbSB0ZXh0LW4tNTA7XG4gIH1cbn1cbi5tYXgtdy1oYWxmIHtcbiAgbWF4LXdpZHRoOiA1MCU7XG59XG5cbi8qKlxuICBBY3Rpdml0eSBEZXRhaWwgUGFnZVxuKi9cbi5hY3Rpdml0aWVzIHtcbiAgQGFwcGx5IGZsZXggZ2FwLTUgeGw6Z2FwLTc7XG5cbiAgJl9fc2lkZWJhciB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgd2lkdGg6IDI4MHB4O1xuXG4gICAgJi1pbm5lciB7XG4gICAgICBvcmRlcjogMTtcbiAgICB9XG4gIH1cblxuICAmX19jb250ZW50IHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAgIG1heC13aWR0aDogY2FsYygxMDB2dyAtIDUwcHgpO1xuICAgIH1cbiAgfVxuXG4gICZfX2NhcmQge1xuICAgIEBhcHBseSBmbGV4IGZsZXgtY29sIGJnLXdoaXRlIHRleHQtY2VudGVyIHRleHQteHMgdGV4dC1uLTQwO1xuICAgIHBhZGRpbmc6IDEzcHg7XG4gIH1cblxuICAucHJvZ3Jlc3Mge1xuICAgIEBhcHBseSBpdGVtcy1jZW50ZXI7XG4gICAgd2lkdGg6IDE1MXB4O1xuICAgIG1pbi1oZWlnaHQ6IDE3NHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweCAwcHggMHB4IDhweDtcbiAgfVxuXG4gIC50YWItYnRuOmRpc2FibGVkIHtcbiAgICBAYXBwbHkgcG9pbnRlci1ldmVudHMtbm9uZSB0ZXh0LW4tMjA7XG5cbiAgICBzdmcge1xuICAgICAgQGFwcGx5IHRleHQtbi0yMDtcbiAgICB9XG4gIH1cbiAgLmhvdmVyLXRleHQge1xuICAgIHN2ZyB7XG4gICAgICBAYXBwbHkgdGV4dC1uLTMwO1xuICAgIH1cbiAgfVxufVxuLmVsZW1lbnRzLWNhcmQge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTkwcHgpIHtcbiAgICBmbGV4LWJhc2lzOiBhdXRvO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG4ubWFudWFsLWltcG9ydCB7XG4gIC5oZWxwX190ZXh0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gICAgICB3aWR0aDogMzUwcHggIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cbi5yZWdpc3Rlci1wYWdlIC5oZWxwX190ZXh0IHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKSAhaW1wb3J0YW50O1xufVxuXG4ucmVnaXN0cnlfX2luZm8sXG4ucmVnaXN0ZXIsXG5hc2lkZSB7XG4gIC5oZWxwX190ZXh0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogMTM3MHB4KSB7XG4gICAgICB3aWR0aDogMjUwcHggIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cbi5pbXBvcnQtYWN0aXZpdHksXG4uYWN0aXZpdGllc19fY29udGVudC0tZWxlbWVudCB7XG4gIC5oZWxwX190ZXh0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcbiAgfVxufVxuYXNpZGUge1xuICAucHJvZ3Jlc3Mge1xuICAgIC5oZWxwX190ZXh0IHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSAhaW1wb3J0YW50O1xuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNDUlKSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuLmFjdGl2aXRpZXNfX2NvbnRlbnQge1xuICB3aWR0aDogMTAwJTtcbn1cbi50YWItYnRuIHtcbiAgLmhlbHBfX3RleHQge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSAhaW1wb3J0YW50O1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICAgIGxlZnQ6IDA7XG4gICAgfVxuICB9XG59XG4uYWN0aXZpdHktZGVmYXVsdC12YWx1ZSB7XG4gIC5oZWxwX190ZXh0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpICFpbXBvcnRhbnQ7XG4gIH1cbn1cbi5lcnJvci10aXRsZSB7XG4gIGNvbG9yOiAjZDEwMDFlO1xuICBwYWRkaW5nLXRvcDogOHB4ICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmctYm90dG9tOiA4cHggIWltcG9ydGFudDtcbn1cbi50ZXh0LWRhbmdlci1lcnJvciB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC1zaXplOiAxMnB4O1xuICBsaW5lLWhlaWdodDogMThweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbn1cbiIsIi5mb290ZXJfX2NvbnRhaW5lciB7XG4gIG1heC13aWR0aDogMTE2NnB4O1xuICBtYXJnaW46IGF1dG87XG5cbiAgLmZvb3Rlcl9fbGlua3Mge1xuICAgIGEge1xuICAgICAgQGFwcGx5IGJvcmRlci1iLTIgYm9yZGVyLXRyYW5zcGFyZW50IHRleHQtbi0yMDtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIEBhcHBseSBib3JkZXItYi0yIGJvcmRlci10dXJxdW9pc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIuc2VsZWN0Mi1jb250YWluZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgbWFyZ2luOiAwO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXG4gICY6Zm9jdXMtd2l0aGluIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFmN2Y5O1xuICB9XG5cbiAgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgaGVpZ2h0OiAyOHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuXG4gICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgIzJhMmYzMDtcbiAgICB9XG5cbiAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDhweDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAxO1xuICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICB9XG4gIH1cbn1cblxuLnNlbGVjdDItZHJvcGRvd24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IC0xMDAwMDBweDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2FhYTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuXG4uc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24ge1xuICBwYWRkaW5nOiA2cHg7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuXG4gICZbYXJpYS1zZWxlY3RlZF0ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxufVxuXG4uc2VsZWN0Mi1jb250YWluZXItLW9wZW4ge1xuICAuc2VsZWN0Mi1kcm9wZG93biB7XG4gICAgbGVmdDogMDtcblxuICAgICYtLWFib3ZlIHtcbiAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gICAgfVxuXG4gICAgJi0tYmVsb3cge1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIGJvcmRlci10b3A6IG5vbmU7XG4gICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gICAgfVxuICB9XG59XG5cbi5zZWxlY3QyLXNlYXJjaC0tZHJvcGRvd24ge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogNHB4O1xuXG4gIC5zZWxlY3QyLXNlYXJjaF9fZmllbGQge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogNHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNhNmI1YmE7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuXG4gICAgJjo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiB7XG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgfVxuICB9XG59XG5cblt0eXBlPSdzZWFyY2gnXSB7XG4gIG91dGxpbmUtY29sb3I6ICNhNmI1YmE7XG4gIG91dGxpbmUtb2Zmc2V0OiAwO1xufVxuXG4uc2VsZWN0Mi1oaWRkZW4tYWNjZXNzaWJsZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICB3aWR0aDogMXB4ICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogMXB4ICFpbXBvcnRhbnQ7XG4gIG1hcmdpbjogLTFweCAhaW1wb3J0YW50O1xuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7XG4gIGNsaXA6IHJlY3QoMCAwIDAgMCkgIWltcG9ydGFudDtcbn1cblxuLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IHtcbiAgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUge1xuICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQge1xuICAgICAgY29sb3I6ICMxNTUzNjY7XG4gICAgICBsaW5lLWhlaWdodDogMjhweDtcbiAgICB9XG5cbiAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX2NsZWFyIHtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cblxuICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fcGxhY2Vob2xkZXIge1xuICAgICAgY29sb3I6ICM5OTk7XG4gICAgfVxuXG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19hcnJvdyB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDFweDtcbiAgICAgIHJpZ2h0OiAxcHg7XG4gICAgICB3aWR0aDogMjBweDtcbiAgICAgIGhlaWdodDogMjZweDtcblxuICAgICAgYiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgd2lkdGg6IDA7XG4gICAgICAgIGhlaWdodDogMDtcbiAgICAgICAgbWFyZ2luLXRvcDogLTJweDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC00cHg7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzg4OCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiA1cHggNHB4IDAgNHB4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAuc2VsZWN0Mi1yZXN1bHRzID4gLnNlbGVjdDItcmVzdWx0c19fb3B0aW9ucyB7XG4gICAgbWF4LWhlaWdodDogMjAwcHg7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgfVxufVxuXG4uc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1jb250YWluZXItLW9wZW4ge1xuICAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Fycm93IHtcbiAgICBiIHtcbiAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzg4OCB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci13aWR0aDogMCA0cHggNXB4IDRweDtcbiAgICB9XG4gIH1cblxuICAmLnNlbGVjdDItY29udGFpbmVyLS1hYm92ZSB7XG4gICAgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUge1xuICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICAgIH1cbiAgfVxuXG4gICYuc2VsZWN0Mi1jb250YWluZXItLWJlbG93IHtcbiAgICAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSB7XG4gICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLyBUdXJxdW9pc2UgYnV0dG9uXG4uYnRuIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgb3V0bGluZTogbm9uZTtcbiAgQGFwcGx5IGJnLXR1cnF1b2lzZSB0ZXh0LW4tNTA7XG5cbiAgJjpob3ZlciB7XG4gICAgQGFwcGx5IGJnLWJsdWVjb3JhbDtcbiAgICBAYXBwbHkgdGV4dC13aGl0ZTtcblxuICAgIHN2ZyB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNHB4KTtcbiAgICAgIHRyYW5zaXRpb246IDAuM3M7XG4gICAgfVxuICB9XG59XG5cbi5idG4tYmFjayB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmb250LXNpemU6IDE0cHg7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogMC4zcztcbiAgQGFwcGx5IHctMjQgdGV4dC1ibHVlY29yYWw7XG5cbiAgc3ZnIHtcbiAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgc3ZnIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNHB4KTtcbiAgICB9XG4gIH1cbn1cblxuLmJ0bi1uZXh0IHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgcGFkZGluZzogMTNweCAyNHB4O1xuICB9XG4gIEBhcHBseSB3LTM2IHB5LTIuNSB0ZXh0LW4tNTAgc206dy00MDtcblxuICBzdmcge1xuICAgIG1hcmdpbi1sZWZ0OiAxM3B4O1xuICAgIHRyYW5zaXRpb246IDAuMnM7XG4gIH1cbn1cblxuLmdldC1zdGFydGVkLWJ0biB7XG4gIHdpZHRoOiAxODVweDtcbn1cblxuLnJlc2V0LWJ0biB7XG4gIEBhcHBseSBtdC02IGZsZXgganVzdGlmeS1jZW50ZXIgcm91bmRlZC1sZyBib3JkZXItbm9uZSBiZy10dXJxdW9pc2UgdGV4dC1zbSBmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtbi01MCBvdXRsaW5lLW5vbmUgZHVyYXRpb24tMjAwIGhvdmVyOmJnLWJsdWVjb3JhbCBob3Zlcjp0ZXh0LXdoaXRlO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMTZweCA5NHB4O1xufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xuICAucmVzZXQtYnRuIHtcbiAgICBwYWRkaW5nOiAxOHB4IDk0cHg7XG4gIH1cbn1cblxuc3ZnIHtcbiAgaGVpZ2h0OiAxZW07XG59XG4uY2hhcnQtd3JhcHBlciB7XG4gIHN2ZyB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbi52cnBfX3dyYXBwZXIge1xuICBwIHtcbiAgICBAYXBwbHkgdGV4dC1zbSBsZWFkaW5nLW5vcm1hbDtcbiAgfVxuICBzdmcge1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxufVxuXG4uYnV0dG9uLFxuYnV0dG9uIHtcbiAgQGFwcGx5IGZsZXggY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIHRleHQteHMgbGVhZGluZy1ub3JtYWwgdHJhY2tpbmctdGlnaHQ7XG4gIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7XG59XG5cbi8vIHRvb2x0aXAgYnV0dG9uXG4udG9vbHRpcC1idG4ge1xuICBAYXBwbHkgcmVsYXRpdmUgdGV4dC1uLTMwO1xuXG4gIGJ1dHRvbiB7XG4gICAgQGFwcGx5IHJvdW5kZWQtM3hsIGJvcmRlciBib3JkZXItc29saWQgYm9yZGVyLW4tMzAgcHktMS41IHB4LTIuNTtcbiAgfVxuXG4gIHN2ZyB7XG4gICAgQGFwcGx5IG1yLTEgdGV4dC14cztcbiAgfVxuXG4gICZfX2NvbnRlbnQge1xuICAgIEBhcHBseSBhYnNvbHV0ZSB0b3AtZnVsbCBsZWZ0LTAgaGlkZGVuIHctWzM1MnB4XTtcblxuICAgIC5jb250ZW50IHtcbiAgICAgIEBhcHBseSBtdC02IHJvdW5kZWQgYmctZWdnc2hlbGwgdGV4dC1uLTUwO1xuICAgICAgcGFkZGluZzogMTZweCAzM3B4IDE2cHggMTZweDtcbiAgICAgIGJveC1zaGFkb3c6IDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgfVxuXG4gICAgcCB7XG4gICAgICBAYXBwbHkgbWItMS41IHRleHQteHMgbGVhZGluZy1ub3JtYWw7XG4gICAgfVxuICB9XG5cbiAgJjpob3ZlciAudG9vbHRpcC1idG5fX2NvbnRlbnQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgJjpob3ZlciBidXR0b24ge1xuICAgIEBhcHBseSBib3JkZXItc3ByaW5nLTUwIHRleHQtc3ByaW5nLTUwO1xuICB9XG59XG5cbi8vIHByaW1hcnkgYnV0dG9uXG4ucHJpbWFyeS1idG4ge1xuICBAYXBwbHkgZ2FwLTEgcm91bmRlZCBiZy1ibHVlY29yYWwgcC0zIGZvbnQtYm9sZCB1cHBlcmNhc2UgdGV4dC13aGl0ZTtcbiAgYm94LXNoYWRvdzogMHB4IDJweCAxMHB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcblxuICAmLnNwYWNlIHtcbiAgICBAYXBwbHkgcHgtNjtcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIEBhcHBseSBiZy1uLTUwIHRleHQtd2hpdGU7XG4gIH1cblxuICBzdmcge1xuICAgIEBhcHBseSB0ZXh0LWJhc2U7XG4gIH1cbn1cblxuLy8gc2Vjb25kYXJ5IGJ1dHRvblxuLnNlY29uZGFyeS1idG4ge1xuICBAYXBwbHkgZ2FwLTEgZ2FwLXgtMSByb3VuZGVkIGJnLXdoaXRlIHAtMyB1cHBlcmNhc2UgdGV4dC1ibHVlY29yYWw7XG5cbiAgJi0tdG91Y2gge1xuICAgIEBhcHBseSBnYXAtMSBnYXAteC0xIHJvdW5kZWQgYmctd2hpdGUgcC0zIHVwcGVyY2FzZSB0ZXh0LWJsdWVjb3JhbDtcbiAgICBib3gtc2hhZG93OiAwcHggMnB4IDEwcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuICAgIC5kcm9wZG93bl9fYXJyb3cge1xuICAgICAgZm9udC1zaXplOiA2cHg7XG4gICAgICB0cmFuc2l0aW9uOiAwLjJzO1xuICAgIH1cbiAgICBzdmcge1xuICAgICAgQGFwcGx5IHRleHQtYmFzZTtcbiAgICB9XG4gIH1cbiAgJjpob3ZlciB7XG4gICAgQGFwcGx5IGJnLWJsdWVjb3JhbCB0ZXh0LXdoaXRlO1xuICB9XG5cbiAgc3ZnIHtcbiAgICBAYXBwbHkgdGV4dC1iYXNlO1xuICB9XG5cbiAgLmRyb3Bkb3duX19hcnJvdyB7XG4gICAgZm9udC1zaXplOiA2cHg7XG4gICAgdHJhbnNpdGlvbjogMC4ycztcbiAgfVxufVxuXG4vLyBwcmltYXJ5IG91dGxpbmUgYnV0dG9uXG4ucHJpbWFyeS1vdXRsaW5lLWJ0biB7XG4gIEBhcHBseSBqdXN0aWZ5LWNlbnRlciBnYXAtMSByb3VuZGVkLTN4bCBib3JkZXIgYm9yZGVyLXNwcmluZy01MCBweC0zLjUgdGV4dC1zbSBsZWFkaW5nLXJlbGF4ZWQgdGV4dC1zcHJpbmctNTA7XG4gIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKSk7XG5cbiAgJjpob3ZlciB7XG4gICAgQGFwcGx5IGJnLXNwcmluZy01MCB0ZXh0LXdoaXRlO1xuICB9XG5cbiAgc3ZnIHtcbiAgICBAYXBwbHkgdGV4dC1iYXNlO1xuICB9XG59XG5cbi5naG9zdC1idG4ge1xuICBAYXBwbHkgdGV4dC14cyBmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtbi00MDtcbiAgdHJhbnNpdGlvbjogMC40cztcblxuICAmOmhvdmVyIHtcbiAgICBAYXBwbHkgdGV4dC1ibHVlY29yYWw7XG4gIH1cbn1cblxuLnRhYi1idG4tYW5jaG9yIHtcbiAgQGFwcGx5IGN1cnNvci1kZWZhdWx0O1xufVxuXG4udGFiLWJ0biB7XG4gIEBhcHBseSBoLTkgcm91bmRlZCBib3JkZXIgYm9yZGVyLW4tMjAgYmctd2hpdGUgcC0yIHRleHQteHMgdGV4dC1uLTQwO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG5cbiAgJjpob3ZlciB7XG4gICAgQGFwcGx5IGJvcmRlci10dXJxdW9pc2UgYmctbi0xMCB0ZXh0LWJsdWVjb3JhbDtcbiAgfVxufVxuXG4uYWN0aXZlX190YWIge1xuICBAYXBwbHkgYm9yZGVyLXR1cnF1b2lzZSBiZy1uLTEwIHRleHQtYmx1ZWNvcmFsO1xufVxuXG4ucGFuZWwtYnRuIHtcbiAgQGFwcGx5IGgtMTAgc3BhY2UteC0xIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTMwIGJnLWVnZ3NoZWxsIHB5LTMgcHgtMjtcbiAgd2lkdGg6IDQzcHg7XG5cbiAgJjpob3ZlciB7XG4gICAgQGFwcGx5IGJnLWJsdWVjb3JhbCB0ZXh0LXdoaXRlO1xuICB9XG5cbiAgLmRyb3Bkb3duX19hcnJvdyB7XG4gICAgZm9udC1zaXplOiA2cHg7XG4gICAgdHJhbnNpdGlvbjogMC4ycztcbiAgfVxufVxuIiwiLm92ZXJsYXkge1xuICBAYXBwbHkgZml4ZWQgbGVmdC0wIHRvcC0wIGgtZnVsbCB3LWZ1bGwgYmctYmxhY2s7XG4gIHotaW5kZXg6IDEwMDtcbiAgb3BhY2l0eTogMC43O1xuXG4gICZfX2lubmVyIHtcbiAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0wIHRvcC0wIGgtZnVsbCB3LWZ1bGw7XG4gIH1cblxuICAmX19jb250ZW50IHtcbiAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0yLzQgdG9wLTIvNDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcblxuICAgIC5zcGlubmVyIHtcbiAgICAgIEBhcHBseSBpbmxpbmUtYmxvY2sgYW5pbWF0ZS1zcGluIHJvdW5kZWQtZnVsbCBib3JkZXItMiBib3JkZXItbi0xMCBib3JkZXItb3BhY2l0eS01O1xuICAgICAgd2lkdGg6IDc1cHg7XG4gICAgICBoZWlnaHQ6IDc1cHg7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiB3aGl0ZTtcbiAgICB9XG4gIH1cbn1cbi5sb2Fkb3ZlcmxheSB7XG4gIEBhcHBseSBmaXhlZCBsZWZ0LTAgdG9wLTAgaC1mdWxsIHctZnVsbCBiZy1ibGFjaztcbiAgb3BhY2l0eTogMC43O1xuXG4gICZfX2lubmVyIHtcbiAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0wIHRvcC0wIGgtZnVsbCB3LWZ1bGw7XG4gIH1cblxuICAmX19jb250ZW50IHtcbiAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0yLzQgdG9wLTIvNDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcblxuICAgIC5zcGlubmVyIHtcbiAgICAgIEBhcHBseSBpbmxpbmUtYmxvY2sgYW5pbWF0ZS1zcGluIHJvdW5kZWQtZnVsbCBib3JkZXItMiBib3JkZXItbi0xMCBib3JkZXItb3BhY2l0eS01O1xuICAgICAgd2lkdGg6IDc1cHg7XG4gICAgICBoZWlnaHQ6IDc1cHg7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiB3aGl0ZTtcbiAgICB9XG4gIH1cbn1cbiIsIi5oYW1idXJnZXIge1xuICBAYXBwbHkgcmVsYXRpdmUgei1hdXRvIGZsZXggaC0xMSB3LTExIGN1cnNvci1wb2ludGVyIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZCBkdXJhdGlvbi0zMDA7XG4gIHotaW5kZXg6IDEyMDtcblxuICBzcGFuIHtcbiAgICBAYXBwbHkgcG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSBoLTEgdy0xMCByb3VuZGVkLWxnIGR1cmF0aW9uLTMwMDtcbiAgfVxuICBzcGFuOm50aC1jaGlsZCgxKSB7XG4gICAgYm90dG9tOiAxOHB4O1xuICAgIGxlZnQ6IDJweDtcbiAgICB3aWR0aDogMzBweDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE1cHgpO1xuICB9XG5cbiAgc3BhbjpudGgtY2hpbGQoMykge1xuICAgIHRvcDogMThweDtcbiAgICBsZWZ0OiAycHg7XG4gICAgd2lkdGg6IDIwcHg7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDE1cHgpO1xuICB9XG59XG4uaGFtYnVyZ2VyLW1lbnUge1xuICBkaXNwbGF5OiBub25lO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0MjBweCkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/public/js/app.js b/public/js/app.js index bc9db4f29b..d739f9ef4f 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -193,7 +193,7 @@ var __generator = this && this.__generator || function (thisArg, body) { function step(op) { if (f) throw new TypeError("Generator is already executing."); - while (_) { + while (g && (g = 0, op[0] && (_ = 0)), _) { try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; @@ -1119,7 +1119,7 @@ var __generator = this && this.__generator || function (thisArg, body) { function step(op) { if (f) throw new TypeError("Generator is already executing."); - while (_) { + while (g && (g = 0, op[0] && (_ = 0)), _) { try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; @@ -1723,7 +1723,7 @@ var __generator = this && this.__generator || function (thisArg, body) { function step(op) { if (f) throw new TypeError("Generator is already executing."); - while (_) { + while (g && (g = 0, op[0] && (_ = 0)), _) { try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; @@ -4793,7 +4793,7 @@ var __generator = this && this.__generator || function (thisArg, body) { function step(op) { if (f) throw new TypeError("Generator is already executing."); - while (_) { + while (g && (g = 0, op[0] && (_ = 0)), _) { try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; @@ -5528,7 +5528,7 @@ var __generator = this && this.__generator || function (thisArg, body) { function step(op) { if (f) throw new TypeError("Generator is already executing."); - while (_) { + while (g && (g = 0, op[0] && (_ = 0)), _) { try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; @@ -6060,7 +6060,7 @@ var __generator = this && this.__generator || function (thisArg, body) { function step(op) { if (f) throw new TypeError("Generator is already executing."); - while (_) { + while (g && (g = 0, op[0] && (_ = 0)), _) { try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; @@ -8091,7 +8091,7 @@ var __generator = this && this.__generator || function (thisArg, body) { function step(op) { if (f) throw new TypeError("Generator is already executing."); - while (_) { + while (g && (g = 0, op[0] && (_ = 0)), _) { try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; @@ -10080,7 +10080,7 @@ var __generator = this && this.__generator || function (thisArg, body) { function step(op) { if (f) throw new TypeError("Generator is already executing."); - while (_) { + while (g && (g = 0, op[0] && (_ = 0)), _) { try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; @@ -10768,7 +10768,7 @@ var __generator = this && this.__generator || function (thisArg, body) { function step(op) { if (f) throw new TypeError("Generator is already executing."); - while (_) { + while (g && (g = 0, op[0] && (_ = 0)), _) { try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; @@ -11589,7 +11589,7 @@ var __generator = this && this.__generator || function (thisArg, body) { function step(op) { if (f) throw new TypeError("Generator is already executing."); - while (_) { + while (g && (g = 0, op[0] && (_ = 0)), _) { try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; @@ -12483,7 +12483,7 @@ var __generator = this && this.__generator || function (thisArg, body) { function step(op) { if (f) throw new TypeError("Generator is already executing."); - while (_) { + while (g && (g = 0, op[0] && (_ = 0)), _) { try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; @@ -13699,7 +13699,7 @@ var __generator = this && this.__generator || function (thisArg, body) { function step(op) { if (f) throw new TypeError("Generator is already executing."); - while (_) { + while (g && (g = 0, op[0] && (_ = 0)), _) { try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; @@ -14327,7 +14327,7 @@ var __generator = this && this.__generator || function (thisArg, body) { function step(op) { if (f) throw new TypeError("Generator is already executing."); - while (_) { + while (g && (g = 0, op[0] && (_ = 0)), _) { try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; @@ -14908,7 +14908,7 @@ var __generator = this && this.__generator || function (thisArg, body) { function step(op) { if (f) throw new TypeError("Generator is already executing."); - while (_) { + while (g && (g = 0, op[0] && (_ = 0)), _) { try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; @@ -16609,7 +16609,7 @@ var __generator = this && this.__generator || function (thisArg, body) { function step(op) { if (f) throw new TypeError("Generator is already executing."); - while (_) { + while (g && (g = 0, op[0] && (_ = 0)), _) { try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; @@ -17369,7 +17369,7 @@ var __generator = this && this.__generator || function (thisArg, body) { function step(op) { if (f) throw new TypeError("Generator is already executing."); - while (_) { + while (g && (g = 0, op[0] && (_ = 0)), _) { try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; @@ -18030,7 +18030,7 @@ var __generator = this && this.__generator || function (thisArg, body) { function step(op) { if (f) throw new TypeError("Generator is already executing."); - while (_) { + while (g && (g = 0, op[0] && (_ = 0)), _) { try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; @@ -20425,7 +20425,7 @@ var __generator = this && this.__generator || function (thisArg, body) { function step(op) { if (f) throw new TypeError("Generator is already executing."); - while (_) { + while (g && (g = 0, op[0] && (_ = 0)), _) { try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; @@ -47793,17 +47793,17 @@ var _hoisted_6 = { }; var _hoisted_7 = { id: "nav-list", - "class": "nav__list flex justify-between pt-10 uppercase leading-5 xl:flex-row-reverse" + "class": "nav__list flex justify-between pt-10 uppercase leading-5 1xl:flex-row-reverse" }; var _hoisted_8 = { id: "hamburger-cross", - "class": "absolute top-3 left-8 cursor-pointer xl:hidden" + "class": "absolute top-3 left-8 cursor-pointer 1xl:hidden" }; var _hoisted_9 = { - "class": "border-bottom mb-4 flex border-b pb-4 xl:mb-0 xl:border-b-transparent xl:pb-0" + "class": "border-bottom mb-4 flex border-b pb-4 1xl:mb-0 1xl:border-b-transparent 1xl:pb-0" }; var _hoisted_10 = { - "class": "mr-2 hidden pt-5 pb-5 uppercase xl:block xl:pt-0" + "class": "mr-2 hidden pt-5 pb-5 uppercase 1xl:block 1xl:pt-0" }; var _hoisted_11 = { "class": "flex items-center justify-center" @@ -47818,7 +47818,7 @@ var _hoisted_14 = { "class": "nav__links language-hover" }; var _hoisted_15 = { - "class": "flex flex-col items-start xl:flex-row" + "class": "flex flex-col items-start 1xl:flex-row" }; var _hoisted_16 = { "class": "nav__links active dropdown" @@ -47830,6 +47830,7 @@ var _hoisted_18 = { "class": "nav__links active dropdown" }; var _hoisted_19 = { + "class": "-mb-8 inline-block", href: "/publishing-checklist" }; var _hoisted_20 = { @@ -47845,13 +47846,13 @@ var _hoisted_23 = { href: "/support" }; -var _hoisted_24 = /*#__PURE__*/(0, vue_1.createStaticVNode)("
", 2); +var _hoisted_24 = /*#__PURE__*/(0, vue_1.createStaticVNode)("
", 2); var _hoisted_26 = { - "class": "header__title flex flex-wrap items-center justify-between gap-2 border-l-4 border-l-turquoise py-2 px-4 sm:py-5 sm:px-6 xl:mt-6" + "class": "header__title mt-4 flex flex-wrap items-center justify-between gap-2 border-l-4 border-l-turquoise py-2 px-4 sm:py-5 sm:px-6 xl:mt-6" }; var _hoisted_27 = { - "class": "text-xl font-bold normal-case text-white sm:text-4xl sm:text-heading-2" + "class": "text-xl font-bold normal-case text-white sm:text-4xl" }; var _hoisted_28 = ["href"]; @@ -50208,7 +50209,7 @@ __webpack_require__.r(__webpack_exports__); var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module -___CSS_LOADER_EXPORT___.push([module.id, "\n.loader {\n width: 20px;\n height: 20px;\n border: 3px solid #d5dcde;\n border-bottom-color: transparent;\n border-radius: 50%;\n display: inline-block;\n box-sizing: border-box;\n -webkit-animation: rotation 1s linear infinite;\n animation: rotation 1s linear infinite;\n}\n@-webkit-keyframes rotation {\n0% {\n transform: rotate(0deg);\n}\n100% {\n transform: rotate(360deg);\n}\n}\n@keyframes rotation {\n0% {\n transform: rotate(0deg);\n}\n100% {\n transform: rotate(360deg);\n}\n}\n", "",{"version":3,"sources":["webpack://./resources/assets/js/components/spinnerLoader.vue"],"names":[],"mappings":";AAKA;EACE,WAAW;EACX,YAAY;EACZ,yBAAyB;EACzB,gCAAgC;EAChC,kBAAkB;EAClB,qBAAqB;EACrB,sBAAsB;EACtB,8CAAsC;UAAtC,sCAAsC;AACxC;AAEA;AACE;IACE,uBAAuB;AACzB;AACA;IACE,yBAAyB;AAC3B;AACF;AAPA;AACE;IACE,uBAAuB;AACzB;AACA;IACE,yBAAyB;AAC3B;AACF","sourcesContent":["\n\n\n"],"sourceRoot":""}]); +___CSS_LOADER_EXPORT___.push([module.id, "\n.loader {\n width: 20px;\n height: 20px;\n border: 3px solid #d5dcde;\n border-bottom-color: transparent;\n border-radius: 50%;\n display: inline-block;\n box-sizing: border-box;\n animation: rotation 1s linear infinite;\n}\n@keyframes rotation {\n0% {\n transform: rotate(0deg);\n}\n100% {\n transform: rotate(360deg);\n}\n}\n", "",{"version":3,"sources":["webpack://./resources/assets/js/components/spinnerLoader.vue"],"names":[],"mappings":";AAKA;EACE,WAAW;EACX,YAAY;EACZ,yBAAyB;EACzB,gCAAgC;EAChC,kBAAkB;EAClB,qBAAqB;EACrB,sBAAsB;EACtB,sCAAsC;AACxC;AAEA;AACE;IACE,uBAAuB;AACzB;AACA;IACE,yBAAyB;AAC3B;AACF","sourcesContent":["\n\n\n"],"sourceRoot":""}]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); @@ -50235,7 +50236,7 @@ __webpack_require__.r(__webpack_exports__); var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module -___CSS_LOADER_EXPORT___.push([module.id, "\n@-webkit-keyframes spinner-5d84a1d8 {\n0% {\n transform: translate3d(-50%, -50%, 0) rotate(0deg);\n}\n100% {\n transform: translate3d(-50%, -50%, 0) rotate(360deg);\n}\n}\n@keyframes spinner-5d84a1d8 {\n0% {\n transform: translate3d(-50%, -50%, 0) rotate(0deg);\n}\n100% {\n transform: translate3d(-50%, -50%, 0) rotate(360deg);\n}\n}\n.spin[data-v-5d84a1d8]::before {\n -webkit-animation: 1.5s linear infinite spinner-5d84a1d8;\n animation: 1.5s linear infinite spinner-5d84a1d8;\n -webkit-animation-play-state: inherit;\n animation-play-state: inherit;\n border: solid 3px #cfd0d1;\n border-bottom-color: grey;\n border-radius: 50%;\n content: '';\n height: 20px;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate3d(-50%, -50%, 0);\n width: 20px;\n will-change: transform;\n}\n.spin[data-v-5d84a1d8] {\n height: 40px;\n position: relative;\n width: 100%;\n margin: auto;\n}\n", "",{"version":3,"sources":["webpack://./TableLayout.vue"],"names":[],"mappings":";AA6QA;AACE;IACE,kDAAkD;AACpD;AACA;IACE,oDAAoD;AACtD;AACF;AAPA;AACE;IACE,kDAAkD;AACpD;AACA;IACE,oDAAoD;AACtD;AACF;AAEA;EACE,wDAAuC;UAAvC,gDAAuC;EACvC,qCAA6B;UAA7B,6BAA6B;EAC7B,yBAAyB;EACzB,yBAAyB;EACzB,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,kBAAkB;EAClB,QAAQ;EACR,SAAS;EACT,qCAAqC;EACrC,WAAW;EACX,sBAAsB;AACxB;AACA;EACE,YAAY;EACZ,kBAAkB;EAClB,WAAW;EACX,YAAY;AACd","sourcesContent":["\n\n\n\n"],"sourceRoot":""}]); +___CSS_LOADER_EXPORT___.push([module.id, "\n@keyframes spinner-5d84a1d8 {\n0% {\n transform: translate3d(-50%, -50%, 0) rotate(0deg);\n}\n100% {\n transform: translate3d(-50%, -50%, 0) rotate(360deg);\n}\n}\n.spin[data-v-5d84a1d8]::before {\n animation: 1.5s linear infinite spinner-5d84a1d8;\n animation-play-state: inherit;\n border: solid 3px #cfd0d1;\n border-bottom-color: grey;\n border-radius: 50%;\n content: '';\n height: 20px;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate3d(-50%, -50%, 0);\n width: 20px;\n will-change: transform;\n}\n.spin[data-v-5d84a1d8] {\n height: 40px;\n position: relative;\n width: 100%;\n margin: auto;\n}\n", "",{"version":3,"sources":["webpack://./resources/assets/js/views/activity/partials/TableLayout.vue"],"names":[],"mappings":";AA6QA;AACE;IACE,kDAAkD;AACpD;AACA;IACE,oDAAoD;AACtD;AACF;AAEA;EACE,gDAAuC;EACvC,6BAA6B;EAC7B,yBAAyB;EACzB,yBAAyB;EACzB,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,kBAAkB;EAClB,QAAQ;EACR,SAAS;EACT,qCAAqC;EACrC,WAAW;EACX,sBAAsB;AACxB;AACA;EACE,YAAY;EACZ,kBAAkB;EAClB,WAAW;EACX,YAAY;AACd","sourcesContent":["\n\n\n\n"],"sourceRoot":""}]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); @@ -50262,7 +50263,7 @@ __webpack_require__.r(__webpack_exports__); var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module -___CSS_LOADER_EXPORT___.push([module.id, "\n.critical-container[data-v-9a608432] {\n position: relative;\n background-color: #f6f0ff;\n z-index: 1;\n}\n.critical-container[data-v-9a608432]::after {\n position: absolute;\n content: ' ';\n z-index: 10;\n background-color: #a66ee9;\n height: 100%;\n width: 2px;\n left: 0;\n top: 0;\n}\n.error-dropdown-container[data-v-9a608432], \n.warning-dropdown-container[data-v-9a608432], \n.critical-dropdown-container[data-v-9a608432] {\n height: 0px;\n overflow: hidden;\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 500ms;\n}\n.warning-container[data-v-9a608432] {\n position: relative;\n z-index: 1;\n}\n.error-container[data-v-9a608432]::after {\n position: absolute;\n content: ' ';\n z-index: 10;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--crimson-40), var(--tw-bg-opacity));\n height: 100%;\n width: 2px;\n left: 0;\n top: 0;\n}\n.error-container[data-v-9a608432] {\n position: relative;\n z-index: 1;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rose), var(--tw-bg-opacity));\n}\n.warning-container[data-v-9a608432]::after {\n position: absolute;\n content: ' ';\n z-index: 10;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--camel-40), var(--tw-bg-opacity));\n height: 100%;\n width: 2px;\n left: 0;\n top: 0;\n}\n.error-help[data-v-9a608432] {\n font-size: 12px;\n padding-left: 30px;\n font-style: italic;\n font-weight: 400;\n margin-bottom: 18px;\n background-color: none;\n}\n.error-dropdown-container p[data-v-9a608432] {\n color: black;\n}\n", "",{"version":3,"sources":["webpack://./ListElement.vue"],"names":[],"mappings":";AAwYA;EACE,kBAAkB;EAClB,yBAAyB;EACzB,UAAU;AACZ;AAEA;EACE,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,yBAAyB;EACzB,YAAY;EACZ,UAAU;EACV,OAAO;EACP,MAAM;AACR;AAKE;;;EAAA,WAAsD;EAAtD,gBAAsD;EAAtD,wBAAsD;EAAtD,wDAAsD;EAAtD,0BAAA;AAAsD;AAGxD;EACE,kBAAkB;EAClB,UAAU;AACZ;AAEA;EACE,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,kBAAoB;EAApB,+DAAoB;EACpB,YAAY;EACZ,UAAU;EACV,OAAO;EACP,MAAM;AACR;AAEA;EACE,kBAAkB;EAClB,UAAU;EAEV,kBAAc;EAAd,yDAAc;AAChB;AAEA;EACE,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,kBAAkB;EAAlB,6DAAkB;EAClB,YAAY;EACZ,UAAU;EACV,OAAO;EACP,MAAM;AACR;AAEA;EACE,eAAe;EACf,kBAAkB;EAClB,kBAAkB;EAClB,gBAAgB;EAChB,mBAAmB;EACnB,sBAAsB;AACxB;AACA;EACE,YAAY;AACd","sourcesContent":["\n\n\n\n"],"sourceRoot":""}]); +___CSS_LOADER_EXPORT___.push([module.id, "\n.critical-container[data-v-9a608432] {\n position: relative;\n background-color: #f6f0ff;\n z-index: 1;\n}\n.critical-container[data-v-9a608432]::after {\n position: absolute;\n content: ' ';\n z-index: 10;\n background-color: #a66ee9;\n height: 100%;\n width: 2px;\n left: 0;\n top: 0;\n}\n.error-dropdown-container[data-v-9a608432], \n.warning-dropdown-container[data-v-9a608432], \n.critical-dropdown-container[data-v-9a608432] {\n height: 0px;\n overflow: hidden;\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 500ms;\n}\n.warning-container[data-v-9a608432] {\n position: relative;\n z-index: 1;\n}\n.error-container[data-v-9a608432]::after {\n position: absolute;\n content: ' ';\n z-index: 10;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--crimson-40), var(--tw-bg-opacity));\n height: 100%;\n width: 2px;\n left: 0;\n top: 0;\n}\n.error-container[data-v-9a608432] {\n position: relative;\n z-index: 1;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--rose), var(--tw-bg-opacity));\n}\n.warning-container[data-v-9a608432]::after {\n position: absolute;\n content: ' ';\n z-index: 10;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--camel-40), var(--tw-bg-opacity));\n height: 100%;\n width: 2px;\n left: 0;\n top: 0;\n}\n.error-help[data-v-9a608432] {\n font-size: 12px;\n padding-left: 30px;\n font-style: italic;\n font-weight: 400;\n margin-bottom: 18px;\n background-color: none;\n}\n.error-dropdown-container p[data-v-9a608432] {\n color: black;\n}\n", "",{"version":3,"sources":["webpack://./resources/assets/js/views/import/ListElement.vue"],"names":[],"mappings":";AAwYA;EACE,kBAAkB;EAClB,yBAAyB;EACzB,UAAU;AACZ;AAEA;EACE,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,yBAAyB;EACzB,YAAY;EACZ,UAAU;EACV,OAAO;EACP,MAAM;AACR;AAKE;;;EAAA,WAAsD;EAAtD,gBAAsD;EAAtD,wBAAsD;EAAtD,wDAAsD;EAAtD,0BAAA;AAAsD;AAGxD;EACE,kBAAkB;EAClB,UAAU;AACZ;AAEA;EACE,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,kBAAoB;EAApB,+DAAoB;EACpB,YAAY;EACZ,UAAU;EACV,OAAO;EACP,MAAM;AACR;AAEA;EACE,kBAAkB;EAClB,UAAU;EAEV,kBAAc;EAAd,yDAAc;AAChB;AAEA;EACE,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,kBAAkB;EAAlB,6DAAkB;EAClB,YAAY;EACZ,UAAU;EACV,OAAO;EACP,MAAM;AACR;AAEA;EACE,eAAe;EACf,kBAAkB;EAClB,kBAAkB;EAClB,gBAAgB;EAChB,mBAAmB;EACnB,sBAAsB;AACxB;AACA;EACE,YAAY;AACd","sourcesContent":["\n\n\n\n"],"sourceRoot":""}]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); @@ -50316,7 +50317,7 @@ __webpack_require__.r(__webpack_exports__); var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module -___CSS_LOADER_EXPORT___.push([module.id, "\n.multiselect-wrapper {\n position: absolute;\n z-index: 5;\n width: 424px;\n height: -webkit-fit-content;\n height: -moz-fit-content;\n height: fit-content;\n background: white;\n overflow-y: auto;\n}\n.multiselect-lookalike {\n position: relative;\n align-items: center;\n background-color: #fff !important;\n border: 1px solid #d1d5db;\n border-radius: 4px;\n width: 160px !important;\n height: 40px;\n padding: 12px;\n cursor: pointer;\n}\n", "",{"version":3,"sources":["webpack://./TableList.vue"],"names":[],"mappings":";AA6lCA;EACE,kBAAkB;EAClB,UAAU;EACV,YAAY;EACZ,2BAAmB;EAAnB,wBAAmB;EAAnB,mBAAmB;EACnB,iBAAiB;EACjB,gBAAgB;AAClB;AACA;EACE,kBAAkB;EAClB,mBAAmB;EACnB,iCAAiC;EACjC,yBAAyB;EACzB,kBAAkB;EAClB,uBAAuB;EACvB,YAAY;EACZ,aAAa;EACb,eAAe;AACjB","sourcesContent":["\n\n\n\n"],"sourceRoot":""}]); +___CSS_LOADER_EXPORT___.push([module.id, "\n.multiselect-wrapper {\n position: absolute;\n z-index: 5;\n width: 424px;\n height: -moz-fit-content;\n height: fit-content;\n background: white;\n overflow-y: auto;\n}\n.multiselect-lookalike {\n position: relative;\n align-items: center;\n background-color: #fff !important;\n border: 1px solid #d1d5db;\n border-radius: 4px;\n width: 160px !important;\n height: 40px;\n padding: 12px;\n cursor: pointer;\n}\n", "",{"version":3,"sources":["webpack://./resources/assets/js/views/superadmin/components/TableList.vue"],"names":[],"mappings":";AA6lCA;EACE,kBAAkB;EAClB,UAAU;EACV,YAAY;EACZ,wBAAmB;EAAnB,mBAAmB;EACnB,iBAAiB;EACjB,gBAAgB;AAClB;AACA;EACE,kBAAkB;EAClB,mBAAmB;EACnB,iCAAiC;EACjC,yBAAyB;EACzB,kBAAkB;EAClB,uBAAuB;EACvB,YAAY;EACZ,aAAa;EACb,eAAe;AACjB","sourcesContent":["\n\n\n\n"],"sourceRoot":""}]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); @@ -50343,7 +50344,7 @@ __webpack_require__.r(__webpack_exports__); var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module -___CSS_LOADER_EXPORT___.push([module.id, "\n@-webkit-keyframes spinner-0611d9f0 {\n0% {\n transform: translate3d(-50%, -50%, 0) rotate(0deg);\n}\n100% {\n transform: translate3d(-50%, -50%, 0) rotate(360deg);\n}\n}\n@keyframes spinner-0611d9f0 {\n0% {\n transform: translate3d(-50%, -50%, 0) rotate(0deg);\n}\n100% {\n transform: translate3d(-50%, -50%, 0) rotate(360deg);\n}\n}\n.spin[data-v-0611d9f0]::before {\n -webkit-animation: 1.5s linear infinite spinner-0611d9f0;\n animation: 1.5s linear infinite spinner-0611d9f0;\n -webkit-animation-play-state: inherit;\n animation-play-state: inherit;\n border: solid 3px #cfd0d1;\n border-bottom-color: grey;\n border-radius: 50%;\n content: '';\n height: 20px;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate3d(-50%, -50%, 0);\n width: 20px;\n will-change: transform;\n}\n.spin[data-v-0611d9f0] {\n height: 40px;\n position: relative;\n width: 100%;\n margin: auto;\n}\n", "",{"version":3,"sources":["webpack://./UserListing.vue"],"names":[],"mappings":";AA2uCA;AACE;IACE,kDAAkD;AACpD;AACA;IACE,oDAAoD;AACtD;AACF;AAPA;AACE;IACE,kDAAkD;AACpD;AACA;IACE,oDAAoD;AACtD;AACF;AAEA;EACE,wDAAuC;UAAvC,gDAAuC;EACvC,qCAA6B;UAA7B,6BAA6B;EAC7B,yBAAyB;EACzB,yBAAyB;EACzB,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,kBAAkB;EAClB,QAAQ;EACR,SAAS;EACT,qCAAqC;EACrC,WAAW;EACX,sBAAsB;AACxB;AACA;EACE,YAAY;EACZ,kBAAkB;EAClB,WAAW;EACX,YAAY;AACd","sourcesContent":["\n\n\n"],"sourceRoot":""}]); +___CSS_LOADER_EXPORT___.push([module.id, "\n@keyframes spinner-0611d9f0 {\n0% {\n transform: translate3d(-50%, -50%, 0) rotate(0deg);\n}\n100% {\n transform: translate3d(-50%, -50%, 0) rotate(360deg);\n}\n}\n.spin[data-v-0611d9f0]::before {\n animation: 1.5s linear infinite spinner-0611d9f0;\n animation-play-state: inherit;\n border: solid 3px #cfd0d1;\n border-bottom-color: grey;\n border-radius: 50%;\n content: '';\n height: 20px;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate3d(-50%, -50%, 0);\n width: 20px;\n will-change: transform;\n}\n.spin[data-v-0611d9f0] {\n height: 40px;\n position: relative;\n width: 100%;\n margin: auto;\n}\n", "",{"version":3,"sources":["webpack://./resources/assets/js/views/user/UserListing.vue"],"names":[],"mappings":";AA2uCA;AACE;IACE,kDAAkD;AACpD;AACA;IACE,oDAAoD;AACtD;AACF;AAEA;EACE,gDAAuC;EACvC,6BAA6B;EAC7B,yBAAyB;EACzB,yBAAyB;EACzB,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,kBAAkB;EAClB,QAAQ;EACR,SAAS;EACT,qCAAqC;EACrC,WAAW;EACX,sBAAsB;AACxB;AACA;EACE,YAAY;EACZ,kBAAkB;EAClB,WAAW;EACX,YAAY;AACd","sourcesContent":["\n\n\n"],"sourceRoot":""}]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); @@ -50370,7 +50371,7 @@ __webpack_require__.r(__webpack_exports__); var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module -___CSS_LOADER_EXPORT___.push([module.id, ".add-import-sidebar-dropdown[data-v-6fe59055] {\n overflow-y: hidden;\n padding: 14px 8px;\n}\n@media (min-width: 1420px) {\n.add-import-sidebar-dropdown[data-v-6fe59055] {\n display: none;\n}\n}\n.activity__header[data-v-6fe59055] {\n top: 0px;\n z-index: 100;\n}\n.activity__header nav[data-v-6fe59055] {\n display: flex;\n width: 100%;\n justify-content: space-between;\n}\n@media screen and (max-width: 1420px) {\n.activity__header nav[data-v-6fe59055] {\n flex-direction: column;\n justify-content: center;\n}\n}\n.activity__header nav a[data-v-6fe59055]:hover {\n --tw-text-opacity: 1;\n color: rgba(var(--white), var(--tw-text-opacity));\n}\n.activity__header nav ul[data-v-6fe59055] {\n display: flex;\n}\n@media screen and (max-width: 375px) {\n.activity__header .add-btn[data-v-6fe59055] {\n display: none;\n}\n}\n.activity__header .user-nav[data-v-6fe59055] {\n display: flex;\n align-items: center;\n}\n.toast[data-v-6fe59055] {\n position: absolute;\n left: 50%;\n z-index: 50;\n transform: translate(-50%, -50%);\n}\n.profile__dropdown[data-v-6fe59055] {\n visibility: hidden;\n position: absolute;\n right: 0.75rem;\n z-index: 20;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--white), var(--tw-bg-opacity));\n text-align: left;\n font-size: 0.875rem;\n line-height: 1.25rem;\n --tw-text-opacity: 1;\n color: rgba(var(--bluecoral), var(--tw-text-opacity));\n opacity: 0;\n --tw-shadow: 0px 4px 40px rgba(0, 0, 0, 0.1);\n --tw-shadow-colored: 0px 4px 40px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n transition-duration: 300ms;\n}\n@media (min-width: 640px) {\n.profile__dropdown[data-v-6fe59055] {\n right: 2.5rem;\n}\n}\n.profile__dropdown[data-v-6fe59055] {\n top: 50px;\n width: 265px;\n box-shadow: 4px 4px 40px rgba(0, 50, 76, 0.2);\n}\n@media screen and (max-width: 640px) {\n.profile__dropdown[data-v-6fe59055] {\n width: 220px;\n}\n}\n.profile__dropdown li[data-v-6fe59055] {\n display: flex;\n align-items: center;\n}\n.profile__dropdown li[data-v-6fe59055] > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.75rem * var(--tw-space-x-reverse));\n margin-left: calc(0.75rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.profile__dropdown li[data-v-6fe59055] {\n padding: 0.75rem;\n}\n@media (min-width: 640px) {\n.profile__dropdown li[data-v-6fe59055] {\n padding: 1rem;\n}\n}\n.profile__dropdown li a[data-v-6fe59055]:hover {\n --tw-text-opacity: 1;\n color: rgba(var(--bluecoral), var(--tw-text-opacity));\n}\n.profile__dropdown li .user-profile[data-v-6fe59055] {\n font-size: 26px;\n}\n.profile__dropdown .dropdown__list[data-v-6fe59055] {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--n-10), var(--tw-bg-opacity));\n}\n.profile__dropdown .dropdown__list[data-v-6fe59055]:hover {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--n-20), var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: rgba(var(--bluecoral), var(--tw-text-opacity));\n}\n.profile__dropdown .dropdown__list a[data-v-6fe59055] {\n text-transform: capitalize;\n}\n.profile__dropdown--touch[data-v-6fe59055] {\n position: absolute;\n right: 2.5rem;\n z-index: 20;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--white), var(--tw-bg-opacity));\n text-align: left;\n font-size: 0.875rem;\n line-height: 1.25rem;\n --tw-text-opacity: 1;\n color: rgba(var(--bluecoral), var(--tw-text-opacity));\n --tw-shadow: 0px 4px 40px rgba(0, 0, 0, 0.1);\n --tw-shadow-colored: 0px 4px 40px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n transition-duration: 300ms;\n top: 50px;\n width: 265px;\n box-shadow: 4px 4px 40px rgba(0, 50, 76, 0.2);\n}\n@media screen and (max-width: 640px) {\n.profile__dropdown--touch[data-v-6fe59055] {\n width: 220px;\n}\n}\n.profile__dropdown--touch li[data-v-6fe59055] {\n display: flex;\n align-items: center;\n}\n.profile__dropdown--touch li[data-v-6fe59055] > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.75rem * var(--tw-space-x-reverse));\n margin-left: calc(0.75rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.profile__dropdown--touch li[data-v-6fe59055] {\n padding: 0.75rem;\n}\n@media (min-width: 640px) {\n.profile__dropdown--touch li[data-v-6fe59055] {\n padding: 1rem;\n}\n}\n.profile__dropdown--touch li a[data-v-6fe59055]:hover {\n --tw-text-opacity: 1;\n color: rgba(var(--bluecoral), var(--tw-text-opacity));\n}\n.profile__dropdown--touch li .user-profile[data-v-6fe59055] {\n font-size: 26px;\n}\n.profile__dropdown--touch .dropdown__list[data-v-6fe59055] {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--n-10), var(--tw-bg-opacity));\n}\n.profile__dropdown--touch .dropdown__list[data-v-6fe59055]:hover {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--n-20), var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: rgba(var(--bluecoral), var(--tw-text-opacity));\n}\n.profile__dropdown--touch .dropdown__list a[data-v-6fe59055] {\n text-transform: capitalize;\n}\n.dropdown-btn:hover .profile__dropdown[data-v-6fe59055], \n.dropdown-btn:active .profile__dropdown[data-v-6fe59055] {\n visibility: visible;\n opacity: 1;\n transform: translateY(10px);\n}\n.dropdown-btn:hover .dropdown__arrow[data-v-6fe59055],\n.dropdown-btn:active .dropdown__arrow[data-v-6fe59055] {\n transform: rotate(180deg);\n}\n.add-import[data-v-6fe59055] {\n cursor: pointer;\n}\n.add-import-dropdown[data-v-6fe59055] {\n visibility: hidden;\n opacity: 0;\n}\n.dropdown-trigger-container[data-v-6fe59055] {\n display: block;\n}\n@media (min-width: 1420px) {\n.dropdown-trigger-container[data-v-6fe59055] {\n display: flex;\n}\n.add-import:hover .add-import-dropdown[data-v-6fe59055] {\n visibility: visible !important;\n opacity: 1 !important;\n transform: translateY(0);\n}\n}\n.spinner[data-v-6fe59055] {\n position: absolute;\n top: 0.75rem;\n right: 1.75rem;\n display: inline-block;\n}\n@-webkit-keyframes spin-6fe59055 {\nto {\n transform: rotate(360deg);\n}\n}\n@keyframes spin-6fe59055 {\nto {\n transform: rotate(360deg);\n}\n}\n.spinner[data-v-6fe59055] {\n -webkit-animation: spin-6fe59055 1s linear infinite;\n animation: spin-6fe59055 1s linear infinite;\n border-radius: 9999px;\n border-width: 2px;\n border-color: rgba(var(--n-10), var(--tw-border-opacity));\n --tw-border-opacity: 0.05;\n width: 15px;\n height: 15px;\n border-top-color: white;\n}", "",{"version":3,"sources":["webpack://./resources/assets/js/components/AdminHeader.vue"],"names":[],"mappings":"AACA;EACE,kBAAA;EACA,iBAAA;AAAF;AAEE;AAJF;IAKI,aAAA;AACF;AACF;AAEA;EACE,QAAA;EACA,YAAA;AACF;AACE;EACE,aAAA;EACA,WAAA;EACA,8BAAA;AACJ;AACI;AALF;IAMI,sBAAA;IACA,uBAAA;AAEJ;AACF;AACM;EAAA,oBAAA;EAAA,iDAAA;AAAA;AAIA;EAAA,aAAA;AAAA;AAKF;AADF;IAEI,aAAA;AADJ;AACF;AAKI;EAAA,aAAA;EAAA,mBAAA;AAAA;AAKF;EAAA,kBAAA;EAAA,SAAA;EAAA,WAAA;EACA,gCAAA;AADA;AAKA;EAAA,kBAAA;EAAA,kBAAA;EAAA,cAAA;EAAA,WAAA;EAAA,kBAAA;EAAA,0DAAA;EAAA,gBAAA;EAAA,mBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,qDAAA;EAAA,UAAA;EAAA,4CAAA;EAAA,wDAAA;EAAA,uGAAA;EAAA,0BAAA;AAAA;AAAA;AAAA;IAAA,aAAA;AAAA;AAAA;AADF;EAEE,SAAA;EACA,YAAA;EACA,6CAAA;AAHF;AAKE;AANF;IAOI,YAAA;AAFF;AACF;AAKI;EAAA,aAAA;EAAA,mBAAA;AAAA;AAAA;EAAA,uBAAA;EAAA,uDAAA;EAAA,gEAAA;AAAA;AAAA;EAAA,gBAAA;AAAA;AAAA;AAAA;IAAA,aAAA;AAAA;AAAA;AAGE;EAAA,oBAAA;EAAA,qDAAA;AAAA;AAGF;EACE,eAAA;AAHN;AAQI;EAAA,kBAAA;EAAA,yDAAA;AAAA;AAAA;EAAA,kBAAA;EAAA,yDAAA;EAAA,oBAAA;EAAA,qDAAA;AAAA;AAGE;EAAA,0BAAA;AAAA;AAMJ;EAAA,kBAAA;EAAA,aAAA;EAAA,WAAA;EAAA,kBAAA;EAAA,0DAAA;EAAA,gBAAA;EAAA,mBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,qDAAA;EAAA,4CAAA;EAAA,wDAAA;EAAA,uGAAA;EAAA,0BAAA;EACA,SAAA;EACA,YAAA;EACA,6CAAA;AAHA;AAKA;AANF;IAOI,YAAA;AANF;AACF;AASI;EAAA,aAAA;EAAA,mBAAA;AAAA;AAAA;EAAA,uBAAA;EAAA,uDAAA;EAAA,gEAAA;AAAA;AAAA;EAAA,gBAAA;AAAA;AAAA;AAAA;IAAA,aAAA;AAAA;AAAA;AAGE;EAAA,oBAAA;EAAA,qDAAA;AAAA;AAGF;EACE,eAAA;AAPN;AAYI;EAAA,kBAAA;EAAA,yDAAA;AAAA;AAAA;EAAA,kBAAA;EAAA,yDAAA;EAAA,oBAAA;EAAA,qDAAA;AAAA;AAGE;EAAA,0BAAA;AAAA;AAQF;;EAAA,mBAAA;EAAA,UAAA;EACA,2BAAA;AADA;AAIF;;EACE,yBAAA;AAZJ;AAgBA;EACE,eAAA;AAbF;AAgBA;EACE,kBAAA;EACA,UAAA;AAbF;AAgBA;EACE,cAAA;AAbF;AAeE;AAHF;IAII,aAAA;AAZF;AAgBF;IAEI,8BAAA;IACA,qBAAA;IACA,wBAAA;AAZF;AAPF;AAwBE;EAAA,kBAAA;EAAA,YAAA;EAAA,cAAA;EAAA,qBAAA;AAAA;AAAA;AAAA;IAAA,yBAAA;AAAA;AAAA;AAAA;AAAA;IAAA,yBAAA;AAAA;AAAA;AAAA;EAAA,mDAAA;UAAA,2CAAA;EAAA,qBAAA;EAAA,iBAAA;EAAA,yDAAA;EAAA,yBAAA;EACA,WAAA;EACA,YAAA;EACA,uBAAA;AAHA","sourcesContent":["\n.add-import-sidebar-dropdown {\n overflow-y: hidden;\n padding: 14px 8px;\n\n @media (min-width: 1420px) {\n display: none;\n }\n}\n\n.activity__header {\n top: 0px;\n z-index: 100;\n\n nav {\n display: flex;\n width: 100%;\n justify-content: space-between;\n\n @media screen and (max-width: 1420px) {\n flex-direction: column;\n justify-content: center;\n }\n\n a:hover {\n @apply text-white;\n }\n\n ul {\n @apply flex;\n }\n }\n\n .add-btn {\n @media screen and (max-width: 375px) {\n display: none;\n }\n }\n\n .user-nav {\n @apply flex items-center;\n }\n}\n\n.toast {\n @apply absolute left-2/4 z-50;\n transform: translate(-50%, -50%);\n}\n\n.profile__dropdown {\n @apply invisible absolute right-3 z-20 bg-white text-left text-sm text-bluecoral opacity-0 shadow-dropdown duration-300 sm:right-10;\n top: 50px;\n width: 265px;\n box-shadow: 4px 4px 40px rgba(0, 50, 76, 0.2);\n\n @media screen and (max-width: 640px) {\n width: 220px;\n }\n\n li {\n @apply flex items-center space-x-3 p-3 sm:p-4;\n\n a:hover {\n @apply text-bluecoral;\n }\n\n .user-profile {\n font-size: 26px;\n }\n }\n\n .dropdown__list {\n @apply bg-n-10 hover:bg-n-20 hover:text-bluecoral;\n\n a {\n @apply capitalize;\n }\n }\n}\n\n.profile__dropdown--touch {\n @apply absolute right-10 z-20 bg-white text-left text-sm text-bluecoral shadow-dropdown duration-300;\n top: 50px;\n width: 265px;\n box-shadow: 4px 4px 40px rgba(0, 50, 76, 0.2);\n\n @media screen and (max-width: 640px) {\n width: 220px;\n }\n\n li {\n @apply flex items-center space-x-3 p-3 sm:p-4;\n\n a:hover {\n @apply text-bluecoral;\n }\n\n .user-profile {\n font-size: 26px;\n }\n }\n\n .dropdown__list {\n @apply bg-n-10 hover:bg-n-20 hover:text-bluecoral;\n\n a {\n @apply capitalize;\n }\n }\n}\n\n.dropdown-btn:hover,\n.dropdown-btn:active {\n .profile__dropdown {\n @apply visible opacity-100;\n transform: translateY(10px);\n }\n\n .dropdown__arrow {\n transform: rotate(180deg);\n }\n}\n\n.add-import {\n cursor: pointer;\n}\n\n.add-import-dropdown {\n visibility: hidden;\n opacity: 0;\n}\n\n.dropdown-trigger-container {\n display: block;\n\n @media (min-width: 1420px) {\n display: flex;\n }\n}\n\n.add-import:hover .add-import-dropdown {\n @media (min-width: 1420px) {\n visibility: visible !important;\n opacity: 1 !important;\n transform: translateY(0);\n }\n}\n\n.spinner {\n @apply absolute top-3 right-7 inline-block animate-spin rounded-full border-2 border-n-10 border-opacity-5;\n width: 15px;\n height: 15px;\n border-top-color: white;\n}\n"],"sourceRoot":""}]); +___CSS_LOADER_EXPORT___.push([module.id, ".add-import-sidebar-dropdown[data-v-6fe59055] {\n overflow-y: hidden;\n padding: 14px 8px;\n}\n@media (min-width: 1420px) {\n.add-import-sidebar-dropdown[data-v-6fe59055] {\n display: none;\n}\n}\n.activity__header[data-v-6fe59055] {\n top: 0px;\n z-index: 100;\n}\n.activity__header nav[data-v-6fe59055] {\n display: flex;\n width: 100%;\n justify-content: space-between;\n}\n@media screen and (max-width: 1420px) {\n.activity__header nav[data-v-6fe59055] {\n flex-direction: column;\n justify-content: center;\n}\n}\n.activity__header nav a[data-v-6fe59055]:hover {\n --tw-text-opacity: 1;\n color: rgba(var(--white), var(--tw-text-opacity));\n}\n.activity__header nav ul[data-v-6fe59055] {\n display: flex;\n}\n@media screen and (max-width: 375px) {\n.activity__header .add-btn[data-v-6fe59055] {\n display: none;\n}\n}\n.activity__header .user-nav[data-v-6fe59055] {\n display: flex;\n align-items: center;\n}\n.toast[data-v-6fe59055] {\n position: absolute;\n left: 50%;\n z-index: 50;\n transform: translate(-50%, -50%);\n}\n.profile__dropdown[data-v-6fe59055] {\n visibility: hidden;\n position: absolute;\n right: 0.75rem;\n z-index: 20;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--white), var(--tw-bg-opacity));\n text-align: left;\n font-size: 0.875rem;\n line-height: 1.25rem;\n --tw-text-opacity: 1;\n color: rgba(var(--bluecoral), var(--tw-text-opacity));\n opacity: 0;\n --tw-shadow: 0px 4px 40px rgba(0, 0, 0, 0.1);\n --tw-shadow-colored: 0px 4px 40px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n transition-duration: 300ms;\n}\n@media (min-width: 640px) {\n.profile__dropdown[data-v-6fe59055] {\n right: 2.5rem;\n}\n}\n.profile__dropdown[data-v-6fe59055] {\n top: 50px;\n width: 265px;\n box-shadow: 4px 4px 40px rgba(0, 50, 76, 0.2);\n}\n@media screen and (max-width: 640px) {\n.profile__dropdown[data-v-6fe59055] {\n width: 220px;\n}\n}\n.profile__dropdown li[data-v-6fe59055] {\n display: flex;\n align-items: center;\n}\n.profile__dropdown li[data-v-6fe59055] > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.75rem * var(--tw-space-x-reverse));\n margin-left: calc(0.75rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.profile__dropdown li[data-v-6fe59055] {\n padding: 0.75rem;\n}\n@media (min-width: 640px) {\n.profile__dropdown li[data-v-6fe59055] {\n padding: 1rem;\n}\n}\n.profile__dropdown li a[data-v-6fe59055]:hover {\n --tw-text-opacity: 1;\n color: rgba(var(--bluecoral), var(--tw-text-opacity));\n}\n.profile__dropdown li .user-profile[data-v-6fe59055] {\n font-size: 26px;\n}\n.profile__dropdown .dropdown__list[data-v-6fe59055] {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--n-10), var(--tw-bg-opacity));\n}\n.profile__dropdown .dropdown__list[data-v-6fe59055]:hover {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--n-20), var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: rgba(var(--bluecoral), var(--tw-text-opacity));\n}\n.profile__dropdown .dropdown__list a[data-v-6fe59055] {\n text-transform: capitalize;\n}\n.profile__dropdown--touch[data-v-6fe59055] {\n position: absolute;\n right: 2.5rem;\n z-index: 20;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--white), var(--tw-bg-opacity));\n text-align: left;\n font-size: 0.875rem;\n line-height: 1.25rem;\n --tw-text-opacity: 1;\n color: rgba(var(--bluecoral), var(--tw-text-opacity));\n --tw-shadow: 0px 4px 40px rgba(0, 0, 0, 0.1);\n --tw-shadow-colored: 0px 4px 40px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n transition-duration: 300ms;\n top: 50px;\n width: 265px;\n box-shadow: 4px 4px 40px rgba(0, 50, 76, 0.2);\n}\n@media screen and (max-width: 640px) {\n.profile__dropdown--touch[data-v-6fe59055] {\n width: 220px;\n}\n}\n.profile__dropdown--touch li[data-v-6fe59055] {\n display: flex;\n align-items: center;\n}\n.profile__dropdown--touch li[data-v-6fe59055] > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.75rem * var(--tw-space-x-reverse));\n margin-left: calc(0.75rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.profile__dropdown--touch li[data-v-6fe59055] {\n padding: 0.75rem;\n}\n@media (min-width: 640px) {\n.profile__dropdown--touch li[data-v-6fe59055] {\n padding: 1rem;\n}\n}\n.profile__dropdown--touch li a[data-v-6fe59055]:hover {\n --tw-text-opacity: 1;\n color: rgba(var(--bluecoral), var(--tw-text-opacity));\n}\n.profile__dropdown--touch li .user-profile[data-v-6fe59055] {\n font-size: 26px;\n}\n.profile__dropdown--touch .dropdown__list[data-v-6fe59055] {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--n-10), var(--tw-bg-opacity));\n}\n.profile__dropdown--touch .dropdown__list[data-v-6fe59055]:hover {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--n-20), var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: rgba(var(--bluecoral), var(--tw-text-opacity));\n}\n.profile__dropdown--touch .dropdown__list a[data-v-6fe59055] {\n text-transform: capitalize;\n}\n.dropdown-btn:hover .profile__dropdown[data-v-6fe59055], \n.dropdown-btn:active .profile__dropdown[data-v-6fe59055] {\n visibility: visible;\n opacity: 1;\n transform: translateY(10px);\n}\n.dropdown-btn:hover .dropdown__arrow[data-v-6fe59055],\n.dropdown-btn:active .dropdown__arrow[data-v-6fe59055] {\n transform: rotate(180deg);\n}\n.add-import[data-v-6fe59055] {\n cursor: pointer;\n}\n.add-import-dropdown[data-v-6fe59055] {\n visibility: hidden;\n opacity: 0;\n}\n.dropdown-trigger-container[data-v-6fe59055] {\n display: block;\n}\n@media (min-width: 1420px) {\n.dropdown-trigger-container[data-v-6fe59055] {\n display: flex;\n}\n.add-import:hover .add-import-dropdown[data-v-6fe59055] {\n visibility: visible !important;\n opacity: 1 !important;\n transform: translateY(0);\n}\n}\n.spinner[data-v-6fe59055] {\n position: absolute;\n top: 0.75rem;\n right: 1.75rem;\n display: inline-block;\n}\n@keyframes spin-6fe59055 {\nto {\n transform: rotate(360deg);\n}\n}\n.spinner[data-v-6fe59055] {\n animation: spin-6fe59055 1s linear infinite;\n border-radius: 9999px;\n border-width: 2px;\n border-color: rgba(var(--n-10), var(--tw-border-opacity));\n --tw-border-opacity: 0.05;\n width: 15px;\n height: 15px;\n border-top-color: white;\n}", "",{"version":3,"sources":["webpack://./resources/assets/js/components/AdminHeader.vue"],"names":[],"mappings":"AACA;EACE,kBAAA;EACA,iBAAA;AAAF;AAEE;AAJF;IAKI,aAAA;AACF;AACF;AAEA;EACE,QAAA;EACA,YAAA;AACF;AACE;EACE,aAAA;EACA,WAAA;EACA,8BAAA;AACJ;AACI;AALF;IAMI,sBAAA;IACA,uBAAA;AAEJ;AACF;AACM;EAAA,oBAAA;EAAA,iDAAA;AAAA;AAIA;EAAA,aAAA;AAAA;AAKF;AADF;IAEI,aAAA;AADJ;AACF;AAKI;EAAA,aAAA;EAAA,mBAAA;AAAA;AAKF;EAAA,kBAAA;EAAA,SAAA;EAAA,WAAA;EACA,gCAAA;AADA;AAKA;EAAA,kBAAA;EAAA,kBAAA;EAAA,cAAA;EAAA,WAAA;EAAA,kBAAA;EAAA,0DAAA;EAAA,gBAAA;EAAA,mBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,qDAAA;EAAA,UAAA;EAAA,4CAAA;EAAA,wDAAA;EAAA,uGAAA;EAAA,0BAAA;AAAA;AAAA;AAAA;IAAA,aAAA;AAAA;AAAA;AADF;EAEE,SAAA;EACA,YAAA;EACA,6CAAA;AAHF;AAKE;AANF;IAOI,YAAA;AAFF;AACF;AAKI;EAAA,aAAA;EAAA,mBAAA;AAAA;AAAA;EAAA,uBAAA;EAAA,uDAAA;EAAA,gEAAA;AAAA;AAAA;EAAA,gBAAA;AAAA;AAAA;AAAA;IAAA,aAAA;AAAA;AAAA;AAGE;EAAA,oBAAA;EAAA,qDAAA;AAAA;AAGF;EACE,eAAA;AAHN;AAQI;EAAA,kBAAA;EAAA,yDAAA;AAAA;AAAA;EAAA,kBAAA;EAAA,yDAAA;EAAA,oBAAA;EAAA,qDAAA;AAAA;AAGE;EAAA,0BAAA;AAAA;AAMJ;EAAA,kBAAA;EAAA,aAAA;EAAA,WAAA;EAAA,kBAAA;EAAA,0DAAA;EAAA,gBAAA;EAAA,mBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,qDAAA;EAAA,4CAAA;EAAA,wDAAA;EAAA,uGAAA;EAAA,0BAAA;EACA,SAAA;EACA,YAAA;EACA,6CAAA;AAHA;AAKA;AANF;IAOI,YAAA;AANF;AACF;AASI;EAAA,aAAA;EAAA,mBAAA;AAAA;AAAA;EAAA,uBAAA;EAAA,uDAAA;EAAA,gEAAA;AAAA;AAAA;EAAA,gBAAA;AAAA;AAAA;AAAA;IAAA,aAAA;AAAA;AAAA;AAGE;EAAA,oBAAA;EAAA,qDAAA;AAAA;AAGF;EACE,eAAA;AAPN;AAYI;EAAA,kBAAA;EAAA,yDAAA;AAAA;AAAA;EAAA,kBAAA;EAAA,yDAAA;EAAA,oBAAA;EAAA,qDAAA;AAAA;AAGE;EAAA,0BAAA;AAAA;AAQF;;EAAA,mBAAA;EAAA,UAAA;EACA,2BAAA;AADA;AAIF;;EACE,yBAAA;AAZJ;AAgBA;EACE,eAAA;AAbF;AAgBA;EACE,kBAAA;EACA,UAAA;AAbF;AAgBA;EACE,cAAA;AAbF;AAeE;AAHF;IAII,aAAA;AAZF;AAgBF;IAEI,8BAAA;IACA,qBAAA;IACA,wBAAA;AAZF;AAPF;AAwBE;EAAA,kBAAA;EAAA,YAAA;EAAA,cAAA;EAAA,qBAAA;AAAA;AAAA;AAAA;IAAA,yBAAA;AAAA;AAAA;AAAA;EAAA,2CAAA;EAAA,qBAAA;EAAA,iBAAA;EAAA,yDAAA;EAAA,yBAAA;EACA,WAAA;EACA,YAAA;EACA,uBAAA;AAHA","sourcesContent":["\n.add-import-sidebar-dropdown {\n overflow-y: hidden;\n padding: 14px 8px;\n\n @media (min-width: 1420px) {\n display: none;\n }\n}\n\n.activity__header {\n top: 0px;\n z-index: 100;\n\n nav {\n display: flex;\n width: 100%;\n justify-content: space-between;\n\n @media screen and (max-width: 1420px) {\n flex-direction: column;\n justify-content: center;\n }\n\n a:hover {\n @apply text-white;\n }\n\n ul {\n @apply flex;\n }\n }\n\n .add-btn {\n @media screen and (max-width: 375px) {\n display: none;\n }\n }\n\n .user-nav {\n @apply flex items-center;\n }\n}\n\n.toast {\n @apply absolute left-2/4 z-50;\n transform: translate(-50%, -50%);\n}\n\n.profile__dropdown {\n @apply invisible absolute right-3 z-20 bg-white text-left text-sm text-bluecoral opacity-0 shadow-dropdown duration-300 sm:right-10;\n top: 50px;\n width: 265px;\n box-shadow: 4px 4px 40px rgba(0, 50, 76, 0.2);\n\n @media screen and (max-width: 640px) {\n width: 220px;\n }\n\n li {\n @apply flex items-center space-x-3 p-3 sm:p-4;\n\n a:hover {\n @apply text-bluecoral;\n }\n\n .user-profile {\n font-size: 26px;\n }\n }\n\n .dropdown__list {\n @apply bg-n-10 hover:bg-n-20 hover:text-bluecoral;\n\n a {\n @apply capitalize;\n }\n }\n}\n\n.profile__dropdown--touch {\n @apply absolute right-10 z-20 bg-white text-left text-sm text-bluecoral shadow-dropdown duration-300;\n top: 50px;\n width: 265px;\n box-shadow: 4px 4px 40px rgba(0, 50, 76, 0.2);\n\n @media screen and (max-width: 640px) {\n width: 220px;\n }\n\n li {\n @apply flex items-center space-x-3 p-3 sm:p-4;\n\n a:hover {\n @apply text-bluecoral;\n }\n\n .user-profile {\n font-size: 26px;\n }\n }\n\n .dropdown__list {\n @apply bg-n-10 hover:bg-n-20 hover:text-bluecoral;\n\n a {\n @apply capitalize;\n }\n }\n}\n\n.dropdown-btn:hover,\n.dropdown-btn:active {\n .profile__dropdown {\n @apply visible opacity-100;\n transform: translateY(10px);\n }\n\n .dropdown__arrow {\n transform: rotate(180deg);\n }\n}\n\n.add-import {\n cursor: pointer;\n}\n\n.add-import-dropdown {\n visibility: hidden;\n opacity: 0;\n}\n\n.dropdown-trigger-container {\n display: block;\n\n @media (min-width: 1420px) {\n display: flex;\n }\n}\n\n.add-import:hover .add-import-dropdown {\n @media (min-width: 1420px) {\n visibility: visible !important;\n opacity: 1 !important;\n transform: translateY(0);\n }\n}\n\n.spinner {\n @apply absolute top-3 right-7 inline-block animate-spin rounded-full border-2 border-n-10 border-opacity-5;\n width: 15px;\n height: 15px;\n border-top-color: white;\n}\n"],"sourceRoot":""}]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); @@ -50397,7 +50398,7 @@ __webpack_require__.r(__webpack_exports__); var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module -___CSS_LOADER_EXPORT___.push([module.id, ".minus[data-v-2443df53] {\n display: flex;\n height: 0.75rem;\n width: 0.75rem;\n align-items: center;\n}\n.minus[data-v-2443df53]:before {\n content: \"\";\n display: block;\n height: 0.125rem;\n width: 0.75rem;\n border-radius: 0.75rem;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--bluecoral-50), var(--tw-bg-opacity));\n}\n#publishing_activities[data-v-2443df53] {\n position: fixed;\n bottom: 0px;\n right: 0px;\n filter: drop-shadow(0px 4px 40px rgba(0, 0, 0, 0.1));\n}\n.rolling[data-v-2443df53] {\n display: inline-block;\n}\n@-webkit-keyframes spin-2443df53 {\nto {\n transform: rotate(360deg);\n}\n}\n@keyframes spin-2443df53 {\nto {\n transform: rotate(360deg);\n}\n}\n.rolling[data-v-2443df53] {\n -webkit-animation: spin-2443df53 1s linear infinite;\n animation: spin-2443df53 1s linear infinite;\n border-radius: 9999px;\n border-width: 2px;\n --tw-border-opacity: 1;\n border-color: rgba(var(--n-20), var(--tw-border-opacity));\n width: 20px;\n height: 20px;\n border-top-color: white;\n}\n.activity-title[data-v-2443df53] {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}", "",{"version":3,"sources":["webpack://./resources/assets/js/components/BulkpublishWithXls.vue"],"names":[],"mappings":"AAEE;EAAA,aAAA;EAAA,eAAA;EAAA,cAAA;EAAA,mBAAA;AAAA;AACA;EACE,WAAA;EACA,cAAA;EAAA,gBAAA;EAAA,cAAA;EAAA,sBAAA;EAAA,kBAAA;EAAA,iEAAA;AACJ;AAIE;EAAA,eAAA;EAAA,WAAA;EAAA,UAAA;EACA,oDAAA;AADA;AAKA;EAAA,qBAAA;AAAA;AAAA;AAAA;IAAA,yBAAA;AAAA;AAAA;AAAA;AAAA;IAAA,yBAAA;AAAA;AAAA;AAAA;EAAA,mDAAA;UAAA,2CAAA;EAAA,qBAAA;EAAA,iBAAA;EAAA,sBAAA;EAAA,yDAAA;EACA,WAAA;EACA,YAAA;EACA,uBAAA;AAHA;AAMF;EACE,mBAAA;EACA,gBAAA;EACA,uBAAA;AAAF","sourcesContent":["\n.minus {\n @apply flex h-3 w-3 items-center;\n &:before {\n content: '';\n @apply block h-0.5 w-3 rounded-xl bg-blue-50;\n }\n}\n\n#publishing_activities {\n @apply fixed bottom-0 right-0;\n filter: drop-shadow(0px 4px 40px rgba(0, 0, 0, 0.1));\n}\n\n.rolling {\n @apply inline-block animate-spin rounded-full border-2 border-n-20;\n width: 20px;\n height: 20px;\n border-top-color: white;\n}\n\n.activity-title {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n"],"sourceRoot":""}]); +___CSS_LOADER_EXPORT___.push([module.id, ".minus[data-v-2443df53] {\n display: flex;\n height: 0.75rem;\n width: 0.75rem;\n align-items: center;\n}\n.minus[data-v-2443df53]:before {\n content: \"\";\n display: block;\n height: 0.125rem;\n width: 0.75rem;\n border-radius: 0.75rem;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--bluecoral-50), var(--tw-bg-opacity));\n}\n#publishing_activities[data-v-2443df53] {\n position: fixed;\n bottom: 0px;\n right: 0px;\n filter: drop-shadow(0px 4px 40px rgba(0, 0, 0, 0.1));\n}\n.rolling[data-v-2443df53] {\n display: inline-block;\n}\n@keyframes spin-2443df53 {\nto {\n transform: rotate(360deg);\n}\n}\n.rolling[data-v-2443df53] {\n animation: spin-2443df53 1s linear infinite;\n border-radius: 9999px;\n border-width: 2px;\n --tw-border-opacity: 1;\n border-color: rgba(var(--n-20), var(--tw-border-opacity));\n width: 20px;\n height: 20px;\n border-top-color: white;\n}\n.activity-title[data-v-2443df53] {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}", "",{"version":3,"sources":["webpack://./resources/assets/js/components/BulkpublishWithXls.vue"],"names":[],"mappings":"AAEE;EAAA,aAAA;EAAA,eAAA;EAAA,cAAA;EAAA,mBAAA;AAAA;AACA;EACE,WAAA;EACA,cAAA;EAAA,gBAAA;EAAA,cAAA;EAAA,sBAAA;EAAA,kBAAA;EAAA,iEAAA;AACJ;AAIE;EAAA,eAAA;EAAA,WAAA;EAAA,UAAA;EACA,oDAAA;AADA;AAKA;EAAA,qBAAA;AAAA;AAAA;AAAA;IAAA,yBAAA;AAAA;AAAA;AAAA;EAAA,2CAAA;EAAA,qBAAA;EAAA,iBAAA;EAAA,sBAAA;EAAA,yDAAA;EACA,WAAA;EACA,YAAA;EACA,uBAAA;AAHA;AAMF;EACE,mBAAA;EACA,gBAAA;EACA,uBAAA;AAAF","sourcesContent":["\n.minus {\n @apply flex h-3 w-3 items-center;\n &:before {\n content: '';\n @apply block h-0.5 w-3 rounded-xl bg-blue-50;\n }\n}\n\n#publishing_activities {\n @apply fixed bottom-0 right-0;\n filter: drop-shadow(0px 4px 40px rgba(0, 0, 0, 0.1));\n}\n\n.rolling {\n @apply inline-block animate-spin rounded-full border-2 border-n-20;\n width: 20px;\n height: 20px;\n border-top-color: white;\n}\n\n.activity-title {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n"],"sourceRoot":""}]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); @@ -50478,7 +50479,7 @@ __webpack_require__.r(__webpack_exports__); var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module -___CSS_LOADER_EXPORT___.push([module.id, ".overlay {\n position: fixed;\n left: 0px;\n top: 0px;\n height: 100%;\n width: 100%;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--black), var(--tw-bg-opacity));\n opacity: 0.7;\n z-index: 1000\n}\n.overlay__inner {\n position: absolute;\n left: 0px;\n top: 0px;\n height: 100%;\n width: 100%\n}\n.overlay__content {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%)\n}\n.overlay__content .spinner {\n display: inline-block\n}\n@-webkit-keyframes spin {\nto {\n transform: rotate(360deg)\n}\n}\n@keyframes spin {\nto {\n transform: rotate(360deg)\n}\n}\n.overlay__content .spinner {\n -webkit-animation: spin 1s linear infinite;\n animation: spin 1s linear infinite;\n border-radius: 9999px;\n border-width: 2px;\n border-color: rgba(var(--n-10), var(--tw-border-opacity));\n --tw-border-opacity: 0.05;\n width: 75px;\n height: 75px;\n border-top-color: white\n}", "",{"version":3,"sources":["webpack://./resources/assets/js/components/Loader.vue"],"names":[],"mappings":"AAEE;EAAA,eAAA;EAAA,SAAA;EAAA,QAAA;EAAA,YAAA;EAAA,WAAA;EAAA,kBAAA;EAAA,0DAAA;EACA,YAAA;EACA;AAFA;AAKE;EAAA,kBAAA;EAAA,SAAA;EAAA,QAAA;EAAA,YAAA;EAAA;AAAA;AAIA;EAAA,kBAAA;EAAA,SAAA;EAAA,QAAA;EACA;AADA;AAIE;EAAA;AAAA;AAAA;AAAA;IAAA;AAAA;AAAA;AAAA;AAAA;IAAA;AAAA;AAAA;AAAA;EAAA,0CAAA;UAAA,kCAAA;EAAA,qBAAA;EAAA,iBAAA;EAAA,yDAAA;EAAA,yBAAA;EACA,WAAA;EACA,YAAA;EACA;AAHA","sourcesContent":["\n.overlay {\n @apply fixed left-0 top-0 h-full w-full bg-black;\n opacity: 0.7;\n z-index: 1000;\n\n &__inner {\n @apply absolute left-0 top-0 h-full w-full;\n }\n\n &__content {\n @apply absolute left-2/4 top-2/4;\n transform: translate(-50%, -50%);\n\n .spinner {\n @apply inline-block animate-spin rounded-full border-2 border-n-10 border-opacity-5;\n width: 75px;\n height: 75px;\n border-top-color: white;\n }\n }\n}\n"],"sourceRoot":""}]); +___CSS_LOADER_EXPORT___.push([module.id, ".overlay {\n position: fixed;\n left: 0px;\n top: 0px;\n height: 100%;\n width: 100%;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--black), var(--tw-bg-opacity));\n opacity: 0.7;\n z-index: 1000\n}\n.overlay__inner {\n position: absolute;\n left: 0px;\n top: 0px;\n height: 100%;\n width: 100%\n}\n.overlay__content {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%)\n}\n.overlay__content .spinner {\n display: inline-block\n}\n@keyframes spin {\nto {\n transform: rotate(360deg)\n}\n}\n.overlay__content .spinner {\n animation: spin 1s linear infinite;\n border-radius: 9999px;\n border-width: 2px;\n border-color: rgba(var(--n-10), var(--tw-border-opacity));\n --tw-border-opacity: 0.05;\n width: 75px;\n height: 75px;\n border-top-color: white\n}", "",{"version":3,"sources":["webpack://./resources/assets/js/components/Loader.vue"],"names":[],"mappings":"AAEE;EAAA,eAAA;EAAA,SAAA;EAAA,QAAA;EAAA,YAAA;EAAA,WAAA;EAAA,kBAAA;EAAA,0DAAA;EACA,YAAA;EACA;AAFA;AAKE;EAAA,kBAAA;EAAA,SAAA;EAAA,QAAA;EAAA,YAAA;EAAA;AAAA;AAIA;EAAA,kBAAA;EAAA,SAAA;EAAA,QAAA;EACA;AADA;AAIE;EAAA;AAAA;AAAA;AAAA;IAAA;AAAA;AAAA;AAAA;EAAA,kCAAA;EAAA,qBAAA;EAAA,iBAAA;EAAA,yDAAA;EAAA,yBAAA;EACA,WAAA;EACA,YAAA;EACA;AAHA","sourcesContent":["\n.overlay {\n @apply fixed left-0 top-0 h-full w-full bg-black;\n opacity: 0.7;\n z-index: 1000;\n\n &__inner {\n @apply absolute left-0 top-0 h-full w-full;\n }\n\n &__content {\n @apply absolute left-2/4 top-2/4;\n transform: translate(-50%, -50%);\n\n .spinner {\n @apply inline-block animate-spin rounded-full border-2 border-n-10 border-opacity-5;\n width: 75px;\n height: 75px;\n border-top-color: white;\n }\n }\n}\n"],"sourceRoot":""}]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); @@ -50532,7 +50533,7 @@ __webpack_require__.r(__webpack_exports__); var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module -___CSS_LOADER_EXPORT___.push([module.id, ".shimmer__block[data-v-74356172] {\n -webkit-animation-duration: 2s;\n animation-duration: 2s;\n -webkit-animation-fill-mode: forwards;\n animation-fill-mode: forwards;\n -webkit-animation-iteration-count: infinite;\n animation-iteration-count: infinite;\n -webkit-animation-name: placeHolderShimmer-74356172;\n animation-name: placeHolderShimmer-74356172;\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n -webkit-animation-delay: 0.5s;\n animation-delay: 0.5s;\n background-color: #ededed;\n background-image: linear-gradient(90deg, #ededed 14.36%, #d7d6d6 56.29%, #ededed 100%);\n background-repeat: no-repeat;\n background-size: 244px 104px;\n position: relative;\n height: 19px;\n border-radius: 10px;\n width: 100%;\n margin: 3px 6px 3px 0px;\n}\n@-webkit-keyframes placeHolderShimmer-74356172 {\n0% {\n background-position: calc(0% - 300px) 0;\n}\n20% {\n background-position: calc(0% - 300px) 0;\n}\n80% {\n background-position: calc(100% + 300px) 0;\n}\n100% {\n background-position: calc(100% + 300px) 0;\n}\n}\n@keyframes placeHolderShimmer-74356172 {\n0% {\n background-position: calc(0% - 300px) 0;\n}\n20% {\n background-position: calc(0% - 300px) 0;\n}\n80% {\n background-position: calc(100% + 300px) 0;\n}\n100% {\n background-position: calc(100% + 300px) 0;\n}\n}", "",{"version":3,"sources":["webpack://./resources/assets/js/components/ShimmerLoading.vue"],"names":[],"mappings":"AACA;EACE,8BAAA;UAAA,sBAAA;EACA,qCAAA;UAAA,6BAAA;EACA,2CAAA;UAAA,mCAAA;EACA,mDAAA;UAAA,2CAAA;EACA,yCAAA;UAAA,iCAAA;EACA,6BAAA;UAAA,qBAAA;EACA,yBAAA;EACA,sFAAA;EAMA,4BAAA;EACA,4BAAA;EACA,kBAAA;EACA,YAAA;EACA,mBAAA;EACA,WAAA;EACA,uBAAA;AALF;AAQA;AACE;IACE,uCAAA;AALF;AAQA;IACE,uCAAA;AANF;AASA;IACE,yCAAA;AAPF;AAUA;IACE,yCAAA;AARF;AACF;AAPA;AACE;IACE,uCAAA;AALF;AAQA;IACE,uCAAA;AANF;AASA;IACE,yCAAA;AAPF;AAUA;IACE,yCAAA;AARF;AACF","sourcesContent":["\n.shimmer__block {\n animation-duration: 2s;\n animation-fill-mode: forwards;\n animation-iteration-count: infinite;\n animation-name: placeHolderShimmer;\n animation-timing-function: linear;\n animation-delay: 0.5s;\n background-color: #ededed;\n background-image: linear-gradient(\n 90deg,\n #ededed 14.36%,\n #d7d6d6 56.29%,\n #ededed 100%\n );\n background-repeat: no-repeat;\n background-size: 244px 104px;\n position: relative;\n height: 19px;\n border-radius: 10px;\n width: 100%;\n margin: 3px 6px 3px 0px;\n}\n\n@keyframes placeHolderShimmer {\n 0% {\n background-position: calc(0% - 300px) 0;\n }\n\n 20% {\n background-position: calc(0% - 300px) 0;\n }\n\n 80% {\n background-position: calc(100% + 300px) 0;\n }\n\n 100% {\n background-position: calc(100% + 300px) 0;\n }\n}\n"],"sourceRoot":""}]); +___CSS_LOADER_EXPORT___.push([module.id, ".shimmer__block[data-v-74356172] {\n animation-duration: 2s;\n animation-fill-mode: forwards;\n animation-iteration-count: infinite;\n animation-name: placeHolderShimmer-74356172;\n animation-timing-function: linear;\n animation-delay: 0.5s;\n background-color: #ededed;\n background-image: linear-gradient(90deg, #ededed 14.36%, #d7d6d6 56.29%, #ededed 100%);\n background-repeat: no-repeat;\n background-size: 244px 104px;\n position: relative;\n height: 19px;\n border-radius: 10px;\n width: 100%;\n margin: 3px 6px 3px 0px;\n}\n@keyframes placeHolderShimmer-74356172 {\n0% {\n background-position: calc(0% - 300px) 0;\n}\n20% {\n background-position: calc(0% - 300px) 0;\n}\n80% {\n background-position: calc(100% + 300px) 0;\n}\n100% {\n background-position: calc(100% + 300px) 0;\n}\n}", "",{"version":3,"sources":["webpack://./resources/assets/js/components/ShimmerLoading.vue"],"names":[],"mappings":"AACA;EACE,sBAAA;EACA,6BAAA;EACA,mCAAA;EACA,2CAAA;EACA,iCAAA;EACA,qBAAA;EACA,yBAAA;EACA,sFAAA;EAMA,4BAAA;EACA,4BAAA;EACA,kBAAA;EACA,YAAA;EACA,mBAAA;EACA,WAAA;EACA,uBAAA;AALF;AAQA;AACE;IACE,uCAAA;AALF;AAQA;IACE,uCAAA;AANF;AASA;IACE,yCAAA;AAPF;AAUA;IACE,yCAAA;AARF;AACF","sourcesContent":["\n.shimmer__block {\n animation-duration: 2s;\n animation-fill-mode: forwards;\n animation-iteration-count: infinite;\n animation-name: placeHolderShimmer;\n animation-timing-function: linear;\n animation-delay: 0.5s;\n background-color: #ededed;\n background-image: linear-gradient(\n 90deg,\n #ededed 14.36%,\n #d7d6d6 56.29%,\n #ededed 100%\n );\n background-repeat: no-repeat;\n background-size: 244px 104px;\n position: relative;\n height: 19px;\n border-radius: 10px;\n width: 100%;\n margin: 3px 6px 3px 0px;\n}\n\n@keyframes placeHolderShimmer {\n 0% {\n background-position: calc(0% - 300px) 0;\n }\n\n 20% {\n background-position: calc(0% - 300px) 0;\n }\n\n 80% {\n background-position: calc(100% + 300px) 0;\n }\n\n 100% {\n background-position: calc(100% + 300px) 0;\n }\n}\n"],"sourceRoot":""}]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); @@ -50586,7 +50587,7 @@ __webpack_require__.r(__webpack_exports__); var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module -___CSS_LOADER_EXPORT___.push([module.id, ".progress_bar[data-v-5c32bf0c] {\n position: fixed;\n left: 0px;\n display: flex;\n width: 100%;\n align-items: center;\n justify-content: center;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--white), var(--tw-bg-opacity));\n top: 0 !important;\n z-index: 999999;\n height: 100vh;\n}\n.progress_bar__wrapper[data-v-5c32bf0c] {\n width: 250px;\n border-radius: 1rem;\n background-color: #c4c4c4;\n overflow: hidden;\n}\n.progress_bar__viewer[data-v-5c32bf0c] {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--spring-50), var(--tw-bg-opacity));\n border-radius: 4px;\n height: 4px;\n transform: scaleX(0);\n transform-origin: 0 0;\n}\n.progress_bar.animate-loader .progress_bar__viewer[data-v-5c32bf0c] {\n -webkit-animation: FillAnimation-5c32bf0c 6s linear forwards;\n animation: FillAnimation-5c32bf0c 6s linear forwards;\n}\n.progress_bar.animate-loader .progress_bar__state[data-v-5c32bf0c]::before {\n content: \"\";\n -webkit-animation: TextChange-5c32bf0c 6s linear forwards;\n animation: TextChange-5c32bf0c 6s linear forwards;\n}\n.progress_bar__content[data-v-5c32bf0c] {\n display: flex;\n flex-direction: column;\n}\n.progress_bar__state[data-v-5c32bf0c] {\n margin-top: 1.5rem;\n text-align: center;\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 700;\n line-height: 1.5;\n --tw-text-opacity: 1;\n color: rgba(var(--bluecoral-50), var(--tw-text-opacity));\n}\n@-webkit-keyframes FillAnimation-5c32bf0c {\n0% {\n transform: scaleX(0);\n}\n100% {\n transform: scaleX(1);\n}\n}\n@keyframes FillAnimation-5c32bf0c {\n0% {\n transform: scaleX(0);\n}\n100% {\n transform: scaleX(1);\n}\n}\n@-webkit-keyframes TextChange-5c32bf0c {\n0% {\n content: attr(data-start);\n}\n95% {\n content: attr(data-start);\n}\n100% {\n content: attr(data-end);\n}\n}\n@keyframes TextChange-5c32bf0c {\n0% {\n content: attr(data-start);\n}\n95% {\n content: attr(data-start);\n}\n100% {\n content: attr(data-end);\n}\n}", "",{"version":3,"sources":["webpack://./resources/assets/js/components/sections/ProgressLoader.vue"],"names":[],"mappings":"AAEE;EAAA,eAAA;EAAA,SAAA;EAAA,aAAA;EAAA,WAAA;EAAA,mBAAA;EAAA,uBAAA;EAAA,kBAAA;EAAA,0DAAA;EACA,iBAAA;EACA,eAAA;EACA,aAAA;AAHA;AAME;EAAA,YAAA;EAAA,mBAAA;EACA,yBAAA;EACA,gBAAA;AAFA;AAMA;EAAA,kBAAA;EAAA,8DAAA;EACA,kBAAA;EACA,WAAA;EACA,oBAAA;EACA,qBAAA;AAJA;AAOF;EACE,4DAAA;UAAA,oDAAA;AAFJ;AAKE;EACE,WAAA;EACA,yDAAA;UAAA,iDAAA;AAHJ;AAOI;EAAA,aAAA;EAAA,sBAAA;AAAA;AAIA;EAAA,kBAAA;EAAA,kBAAA;EAAA,mBAAA;EAAA,oBAAA;EAAA,gBAAA;EAAA,gBAAA;EAAA,oBAAA;EAAA,wDAAA;AAAA;AAIJ;AACE;IACE,oBAAA;AANF;AAQA;IACE,oBAAA;AANF;AACF;AAAA;AACE;IACE,oBAAA;AANF;AAQA;IACE,oBAAA;AANF;AACF;AASA;AACE;IACE,yBAAA;AAPF;AAUA;IACE,yBAAA;AARF;AAWA;IACE,uBAAA;AATF;AACF;AAFA;AACE;IACE,yBAAA;AAPF;AAUA;IACE,yBAAA;AARF;AAWA;IACE,uBAAA;AATF;AACF","sourcesContent":["\n.progress_bar {\n @apply fixed left-0 flex w-full items-center justify-center bg-white;\n top: 0 !important;\n z-index: 999999;\n height: 100vh;\n\n &__wrapper {\n @apply w-[250px] overflow-hidden rounded-2xl;\n background-color: #c4c4c4;\n overflow: hidden;\n }\n\n &__viewer {\n @apply bg-spring-50;\n border-radius: 4px;\n height: 4px;\n transform: scaleX(0);\n transform-origin: 0 0;\n }\n\n &.animate-loader &__viewer {\n animation: FillAnimation 6s linear forwards;\n }\n\n &.animate-loader &__state::before {\n content: '';\n animation: TextChange 6s linear forwards;\n }\n\n &__content {\n @apply flex flex-col;\n }\n\n &__state {\n @apply mt-6 text-center text-sm font-bold leading-normal text-blue-50;\n }\n}\n\n@keyframes FillAnimation {\n 0% {\n transform: scaleX(0);\n }\n 100% {\n transform: scaleX(1);\n }\n}\n\n@keyframes TextChange {\n 0% {\n content: attr(data-start);\n }\n\n 95% {\n content: attr(data-start);\n }\n\n 100% {\n content: attr(data-end);\n }\n}\n"],"sourceRoot":""}]); +___CSS_LOADER_EXPORT___.push([module.id, ".progress_bar[data-v-5c32bf0c] {\n position: fixed;\n left: 0px;\n display: flex;\n width: 100%;\n align-items: center;\n justify-content: center;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--white), var(--tw-bg-opacity));\n top: 0 !important;\n z-index: 999999;\n height: 100vh;\n}\n.progress_bar__wrapper[data-v-5c32bf0c] {\n width: 250px;\n border-radius: 1rem;\n background-color: #c4c4c4;\n overflow: hidden;\n}\n.progress_bar__viewer[data-v-5c32bf0c] {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--spring-50), var(--tw-bg-opacity));\n border-radius: 4px;\n height: 4px;\n transform: scaleX(0);\n transform-origin: 0 0;\n}\n.progress_bar.animate-loader .progress_bar__viewer[data-v-5c32bf0c] {\n animation: FillAnimation-5c32bf0c 6s linear forwards;\n}\n.progress_bar.animate-loader .progress_bar__state[data-v-5c32bf0c]::before {\n content: \"\";\n animation: TextChange-5c32bf0c 6s linear forwards;\n}\n.progress_bar__content[data-v-5c32bf0c] {\n display: flex;\n flex-direction: column;\n}\n.progress_bar__state[data-v-5c32bf0c] {\n margin-top: 1.5rem;\n text-align: center;\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 700;\n line-height: 1.5;\n --tw-text-opacity: 1;\n color: rgba(var(--bluecoral-50), var(--tw-text-opacity));\n}\n@keyframes FillAnimation-5c32bf0c {\n0% {\n transform: scaleX(0);\n}\n100% {\n transform: scaleX(1);\n}\n}\n@keyframes TextChange-5c32bf0c {\n0% {\n content: attr(data-start);\n}\n95% {\n content: attr(data-start);\n}\n100% {\n content: attr(data-end);\n}\n}", "",{"version":3,"sources":["webpack://./resources/assets/js/components/sections/ProgressLoader.vue"],"names":[],"mappings":"AAEE;EAAA,eAAA;EAAA,SAAA;EAAA,aAAA;EAAA,WAAA;EAAA,mBAAA;EAAA,uBAAA;EAAA,kBAAA;EAAA,0DAAA;EACA,iBAAA;EACA,eAAA;EACA,aAAA;AAHA;AAME;EAAA,YAAA;EAAA,mBAAA;EACA,yBAAA;EACA,gBAAA;AAFA;AAMA;EAAA,kBAAA;EAAA,8DAAA;EACA,kBAAA;EACA,WAAA;EACA,oBAAA;EACA,qBAAA;AAJA;AAOF;EACE,oDAAA;AAFJ;AAKE;EACE,WAAA;EACA,iDAAA;AAHJ;AAOI;EAAA,aAAA;EAAA,sBAAA;AAAA;AAIA;EAAA,kBAAA;EAAA,kBAAA;EAAA,mBAAA;EAAA,oBAAA;EAAA,gBAAA;EAAA,gBAAA;EAAA,oBAAA;EAAA,wDAAA;AAAA;AAIJ;AACE;IACE,oBAAA;AANF;AAQA;IACE,oBAAA;AANF;AACF;AASA;AACE;IACE,yBAAA;AAPF;AAUA;IACE,yBAAA;AARF;AAWA;IACE,uBAAA;AATF;AACF","sourcesContent":["\n.progress_bar {\n @apply fixed left-0 flex w-full items-center justify-center bg-white;\n top: 0 !important;\n z-index: 999999;\n height: 100vh;\n\n &__wrapper {\n @apply w-[250px] overflow-hidden rounded-2xl;\n background-color: #c4c4c4;\n overflow: hidden;\n }\n\n &__viewer {\n @apply bg-spring-50;\n border-radius: 4px;\n height: 4px;\n transform: scaleX(0);\n transform-origin: 0 0;\n }\n\n &.animate-loader &__viewer {\n animation: FillAnimation 6s linear forwards;\n }\n\n &.animate-loader &__state::before {\n content: '';\n animation: TextChange 6s linear forwards;\n }\n\n &__content {\n @apply flex flex-col;\n }\n\n &__state {\n @apply mt-6 text-center text-sm font-bold leading-normal text-blue-50;\n }\n}\n\n@keyframes FillAnimation {\n 0% {\n transform: scaleX(0);\n }\n 100% {\n transform: scaleX(1);\n }\n}\n\n@keyframes TextChange {\n 0% {\n content: attr(data-start);\n }\n\n 95% {\n content: attr(data-start);\n }\n\n 100% {\n content: attr(data-end);\n }\n}\n"],"sourceRoot":""}]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); @@ -50775,7 +50776,7 @@ __webpack_require__.r(__webpack_exports__); var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module -___CSS_LOADER_EXPORT___.push([module.id, ".spinner[data-v-661e6f8e] {\n display: inline-block\n}\n@-webkit-keyframes spin-661e6f8e {\nto {\n transform: rotate(360deg)\n}\n}\n@keyframes spin-661e6f8e {\nto {\n transform: rotate(360deg)\n}\n}\n.spinner[data-v-661e6f8e] {\n -webkit-animation: spin-661e6f8e 1s linear infinite;\n animation: spin-661e6f8e 1s linear infinite;\n border-radius: 9999px;\n border-width: 2px;\n border-color: rgba(var(--n-10), var(--tw-border-opacity));\n --tw-border-opacity: 0.05;\n width: 75px;\n height: 75px;\n border-top-color: white\n}", "",{"version":3,"sources":["webpack://./resources/assets/js/views/activity/partials/DownloadActivityButton.vue"],"names":[],"mappings":"AAEE;EAAA;AAAA;AAAA;AAAA;IAAA;AAAA;AAAA;AAAA;AAAA;IAAA;AAAA;AAAA;AAAA;EAAA,mDAAA;UAAA,2CAAA;EAAA,qBAAA;EAAA,iBAAA;EAAA,yDAAA;EAAA,yBAAA;EACA,WAAA;EACA,YAAA;EACA;AAHA","sourcesContent":["\n.spinner {\n @apply inline-block animate-spin rounded-full border-2 border-n-10 border-opacity-5;\n width: 75px;\n height: 75px;\n border-top-color: white;\n}\n"],"sourceRoot":""}]); +___CSS_LOADER_EXPORT___.push([module.id, ".spinner[data-v-661e6f8e] {\n display: inline-block\n}\n@keyframes spin-661e6f8e {\nto {\n transform: rotate(360deg)\n}\n}\n.spinner[data-v-661e6f8e] {\n animation: spin-661e6f8e 1s linear infinite;\n border-radius: 9999px;\n border-width: 2px;\n border-color: rgba(var(--n-10), var(--tw-border-opacity));\n --tw-border-opacity: 0.05;\n width: 75px;\n height: 75px;\n border-top-color: white\n}", "",{"version":3,"sources":["webpack://./resources/assets/js/views/activity/partials/DownloadActivityButton.vue"],"names":[],"mappings":"AAEE;EAAA;AAAA;AAAA;AAAA;IAAA;AAAA;AAAA;AAAA;EAAA,2CAAA;EAAA,qBAAA;EAAA,iBAAA;EAAA,yDAAA;EAAA,yBAAA;EACA,WAAA;EACA,YAAA;EACA;AAHA","sourcesContent":["\n.spinner {\n @apply inline-block animate-spin rounded-full border-2 border-n-10 border-opacity-5;\n width: 75px;\n height: 75px;\n border-top-color: white;\n}\n"],"sourceRoot":""}]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); @@ -50910,7 +50911,7 @@ __webpack_require__.r(__webpack_exports__); var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module -___CSS_LOADER_EXPORT___.push([module.id, ".label {\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 400;\n --tw-text-opacity: 1;\n color: rgba(var(--n-50), var(--tw-text-opacity));\n}\n.section__container {\n max-width: 865px;\n margin: auto;\n}\n@media screen and (min-width: 1280px) {\n.section__container {\n max-width: 1206px;\n}\n.section__container .feedback {\n width: 702px;\n}\n}\n.section__container .feedback p {\n line-height: 22px;\n}\n.section__container .section__wrapper {\n box-shadow: 0px 20px 40px 20px rgba(0, 0, 0, 0.05);\n}\n.section__container .section__wrapper .verification {\n font-size: 190px;\n}\n.section__container .section__title {\n margin-top: 1.75rem;\n margin-bottom: 1.75rem;\n margin-left: 0.75rem;\n margin-right: 0.75rem;\n text-align: center;\n line-height: 1.75rem;\n}\n@media (min-width: 640px) {\n.section__container .section__title {\n line-height: 2.5rem;\n}\n}\n@media (min-width: 1024px) {\n.section__container .section__title {\n margin-bottom: 2.5rem;\n margin-top: 3.5rem;\n}\n}\n@media screen and (min-width: 440px) {\n.section__container .section__title {\n line-height: 2.25rem;\n}\n}\n.section__container .section__title p {\n font-weight: normal;\n font-style: normal;\n font-size: 0.875rem;\n line-height: 1.25rem;\n --tw-text-opacity: 1;\n color: rgba(var(--n-40), var(--tw-text-opacity));\n}\n@media (min-width: 640px) {\n.section__container .section__title p {\n font-size: 1rem;\n line-height: 1.5rem;\n}\n}\n.section__container .register__sidebar {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--eggshell), var(--tw-bg-opacity));\n padding: 96px 32px 40px;\n width: 344px;\n}\n.section__container .register__sidebar ul {\n width: 253px;\n}\n.section__container .register__sidebar ul::before {\n content: \"\";\n width: 4px;\n height: 100%;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--n-20), var(--tw-bg-opacity));\n border-radius: 2px;\n position: absolute;\n left: 0px;\n top: 0px;\n}\n.section__container .register__sidebar .detail {\n margin-left: 45px;\n}\n.section__container .register__sidebar .list__active::after {\n position: absolute;\n top: 0;\n left: -1px;\n width: 6px;\n height: 85px;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--turquoise), var(--tw-bg-opacity));\n content: \"\";\n border-radius: 2px;\n z-index: 5;\n}\n.form {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--white), var(--tw-bg-opacity));\n padding: 1.25rem;\n}\n@media (min-width: 640px) {\n.form {\n padding-left: 2.5rem;\n padding-right: 2.5rem;\n padding-top: 2.5rem;\n padding-bottom: 2.5rem;\n}\n}\n@media (min-width: 1024px) {\n.form {\n padding-left: 5rem;\n padding-right: 5rem;\n}\n}\n.form {\n border-top-left-radius: 8px;\n border-bottom-left-radius: 8px;\n width: 862px;\n}\n.form__container {\n border-bottom-width: 2px;\n --tw-border-opacity: 1;\n border-bottom-color: rgba(var(--n-10), var(--tw-border-opacity));\n margin-bottom: 24px;\n}\n.form__container .error__input {\n border-width: 1px;\n --tw-border-opacity: 1;\n border-color: rgba(var(--crimson-50), var(--tw-border-opacity));\n}\n.form__content {\n margin-top: 24px;\n}\n@media screen and (min-width: 1024px) {\n.form__content {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 16px;\n}\n}", "",{"version":3,"sources":["webpack://./resources/assets/js/views/web/IatiRegisterPage.vue"],"names":[],"mappings":"AAEE;EAAA,mBAAA;EAAA,oBAAA;EAAA,gBAAA;EAAA,oBAAA;EAAA,gDAAA;AAAA;AAIA;EAIE,gBAAA;EACA,YAAA;AAJJ;AAAI;AADF;IAEI,iBAAA;AAGJ;AAEE;IAEI,YAAA;AACN;AAJF;AAMM;EACE,iBAAA;AACR;AAGI;EACE,kDAAA;AADN;AAGM;EACE,gBAAA;AADR;AAUM;EAAA,mBAAA;EAAA,sBAAA;EAAA,oBAAA;EAAA,qBAAA;EAAA,kBAAA;EAAA,oBAAA;AAAA;AAAA;AAAA;IAAA,mBAAA;AAAA;AAAA;AAAA;AAAA;IAAA,qBAAA;IAAA,kBAAA;AAAA;AAAA;AAJA;AACE;IAAA,oBAAA;AAAA;AACR;AAIM;EACE,mBAAA;EACA,kBAAA;EACA,mBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,gDAAA;AAFR;AAEQ;AAAA;IAAA,eAAA;IAAA,mBAAA;AAAA;AAAA;AAKF;EAAA,kBAAA;EAAA,6DAAA;EACA,uBAAA;EACA,YAAA;AAFA;AAIA;EACE,YAAA;AAJR;AAOM;EACE,WAAA;EACA,UAAA;EACA,YAAA;EACA,kBAAA;EAAA,yDAAA;EACA,kBAAA;EACA,kBAAA;EACA,SAAA;EACA,QAAA;AALR;AAQM;EACE,iBAAA;AANR;AASM;EACE,kBAAA;EACA,MAAA;EACA,UAAA;EACA,UAAA;EACA,YAAA;EACA,kBAAA;EAAA,8DAAA;EACA,WAAA;EACA,kBAAA;EACA,UAAA;AAPR;AAcE;EAAA,kBAAA;EAAA,0DAAA;EAAA,gBAAA;AAAA;AAAA;AAAA;IAAA,oBAAA;IAAA,qBAAA;IAAA,mBAAA;IAAA,sBAAA;AAAA;AAAA;AAAA;AAAA;IAAA,kBAAA;IAAA,mBAAA;AAAA;AAAA;AADF;EAEE,2BAAA;EACA,8BAAA;EACA,YAAA;AAVF;AAaI;EAAA,wBAAA;EAAA,sBAAA;EAAA,gEAAA;EACA,mBAAA;AADA;AAIE;EAAA,iBAAA;EAAA,sBAAA;EAAA,+DAAA;AAAA;AAIJ;EACE,gBAAA;AAZJ;AAgBA;AACE;IACE,aAAA;IACA,qCAAA;IACA,SAAA;AAbF;AACF","sourcesContent":["\n.label {\n @apply text-sm font-normal text-n-50;\n}\n\n.section {\n &__container {\n @media screen and (min-width: 1280px) {\n max-width: 1206px;\n }\n max-width: 865px;\n margin: auto;\n\n .feedback {\n @media screen and (min-width: 1280px) {\n width: 702px;\n }\n\n p {\n line-height: 22px;\n }\n }\n\n .section__wrapper {\n box-shadow: 0px 20px 40px 20px rgba(0, 0, 0, 0.05);\n\n .verification {\n font-size: 190px;\n }\n }\n\n .section__title {\n @media screen and (min-width: 440px) {\n @apply leading-9;\n }\n\n @apply my-7 mx-3 text-center leading-7 sm:leading-10 lg:mb-10 lg:mt-14;\n\n p {\n font-weight: normal;\n font-style: normal;\n @apply text-sm text-n-40 sm:text-base;\n }\n }\n\n .register__sidebar {\n @apply bg-eggshell;\n padding: 96px 32px 40px;\n width: 344px;\n\n ul {\n width: 253px;\n }\n\n ul::before {\n content: '';\n width: 4px;\n height: 100%;\n @apply bg-n-20;\n border-radius: 2px;\n position: absolute;\n left: 0px;\n top: 0px;\n }\n\n .detail {\n margin-left: 45px;\n }\n\n .list__active::after {\n position: absolute;\n top: 0;\n left: -1px;\n width: 6px;\n height: 85px;\n @apply bg-turquoise;\n content: '';\n border-radius: 2px;\n z-index: 5;\n }\n }\n }\n}\n\n.form {\n @apply bg-white p-5 sm:px-10 sm:py-10 lg:px-20;\n border-top-left-radius: 8px;\n border-bottom-left-radius: 8px;\n width: 862px;\n\n &__container {\n @apply border-b-2 border-b-n-10;\n margin-bottom: 24px;\n\n .error__input {\n @apply border border-crimson-50;\n }\n }\n\n &__content {\n margin-top: 24px;\n }\n}\n\n@media screen and (min-width: 1024px) {\n .form__content {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 16px;\n }\n}\n"],"sourceRoot":""}]); +___CSS_LOADER_EXPORT___.push([module.id, ".label {\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 400;\n --tw-text-opacity: 1;\n color: rgba(var(--n-50), var(--tw-text-opacity));\n}\n.section__container {\n max-width: 865px;\n margin: auto;\n}\n@media screen and (min-width: 1415px) {\n.section__container {\n max-width: 1206px;\n}\n.section__container .feedback {\n width: 702px;\n}\n}\n.section__container .feedback p {\n line-height: 22px;\n}\n.section__container .section__wrapper {\n box-shadow: 0px 20px 40px 20px rgba(0, 0, 0, 0.05);\n}\n.section__container .section__wrapper .verification {\n font-size: 190px;\n}\n.section__container .section__title {\n margin-top: 1.75rem;\n margin-bottom: 1.75rem;\n margin-left: 0.75rem;\n margin-right: 0.75rem;\n text-align: center;\n line-height: 1.75rem;\n}\n@media (min-width: 640px) {\n.section__container .section__title {\n line-height: 2.5rem;\n}\n}\n@media (min-width: 1024px) {\n.section__container .section__title {\n margin-bottom: 2.5rem;\n margin-top: 3.5rem;\n}\n}\n@media screen and (min-width: 440px) {\n.section__container .section__title {\n line-height: 2.25rem;\n}\n}\n.section__container .section__title p {\n font-weight: normal;\n font-style: normal;\n font-size: 0.875rem;\n line-height: 1.25rem;\n --tw-text-opacity: 1;\n color: rgba(var(--n-40), var(--tw-text-opacity));\n}\n@media (min-width: 640px) {\n.section__container .section__title p {\n font-size: 1rem;\n line-height: 1.5rem;\n}\n}\n.section__container .register__sidebar {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--eggshell), var(--tw-bg-opacity));\n padding: 96px 32px 40px;\n width: 344px;\n}\n.section__container .register__sidebar ul {\n width: 253px;\n}\n.section__container .register__sidebar ul::before {\n content: \"\";\n width: 4px;\n height: 100%;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--n-20), var(--tw-bg-opacity));\n border-radius: 2px;\n position: absolute;\n left: 0px;\n top: 0px;\n}\n.section__container .register__sidebar .detail {\n margin-left: 45px;\n}\n.section__container .register__sidebar .list__active::after {\n position: absolute;\n top: 0;\n left: -1px;\n width: 6px;\n height: 85px;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--turquoise), var(--tw-bg-opacity));\n content: \"\";\n border-radius: 2px;\n z-index: 5;\n}\n.form {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--white), var(--tw-bg-opacity));\n padding: 1.25rem;\n}\n@media (min-width: 640px) {\n.form {\n padding-left: 2.5rem;\n padding-right: 2.5rem;\n padding-top: 2.5rem;\n padding-bottom: 2.5rem;\n}\n}\n@media (min-width: 1024px) {\n.form {\n padding-left: 5rem;\n padding-right: 5rem;\n}\n}\n.form {\n border-top-left-radius: 8px;\n border-bottom-left-radius: 8px;\n width: 862px;\n}\n.form__container {\n border-bottom-width: 2px;\n --tw-border-opacity: 1;\n border-bottom-color: rgba(var(--n-10), var(--tw-border-opacity));\n margin-bottom: 24px;\n}\n.form__container .error__input {\n border-width: 1px;\n --tw-border-opacity: 1;\n border-color: rgba(var(--crimson-50), var(--tw-border-opacity));\n}\n.form__content {\n margin-top: 24px;\n}\n@media screen and (min-width: 1024px) {\n.form__content {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 16px;\n}\n}", "",{"version":3,"sources":["webpack://./resources/assets/js/views/web/IatiRegisterPage.vue"],"names":[],"mappings":"AAEE;EAAA,mBAAA;EAAA,oBAAA;EAAA,gBAAA;EAAA,oBAAA;EAAA,gDAAA;AAAA;AAIA;EAIE,gBAAA;EACA,YAAA;AAJJ;AAAI;AADF;IAEI,iBAAA;AAGJ;AAEE;IAEI,YAAA;AACN;AAJF;AAMM;EACE,iBAAA;AACR;AAGI;EACE,kDAAA;AADN;AAGM;EACE,gBAAA;AADR;AAUM;EAAA,mBAAA;EAAA,sBAAA;EAAA,oBAAA;EAAA,qBAAA;EAAA,kBAAA;EAAA,oBAAA;AAAA;AAAA;AAAA;IAAA,mBAAA;AAAA;AAAA;AAAA;AAAA;IAAA,qBAAA;IAAA,kBAAA;AAAA;AAAA;AAJA;AACE;IAAA,oBAAA;AAAA;AACR;AAIM;EACE,mBAAA;EACA,kBAAA;EACA,mBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,gDAAA;AAFR;AAEQ;AAAA;IAAA,eAAA;IAAA,mBAAA;AAAA;AAAA;AAKF;EAAA,kBAAA;EAAA,6DAAA;EACA,uBAAA;EACA,YAAA;AAFA;AAIA;EACE,YAAA;AAJR;AAOM;EACE,WAAA;EACA,UAAA;EACA,YAAA;EACA,kBAAA;EAAA,yDAAA;EACA,kBAAA;EACA,kBAAA;EACA,SAAA;EACA,QAAA;AALR;AAQM;EACE,iBAAA;AANR;AASM;EACE,kBAAA;EACA,MAAA;EACA,UAAA;EACA,UAAA;EACA,YAAA;EACA,kBAAA;EAAA,8DAAA;EACA,WAAA;EACA,kBAAA;EACA,UAAA;AAPR;AAcE;EAAA,kBAAA;EAAA,0DAAA;EAAA,gBAAA;AAAA;AAAA;AAAA;IAAA,oBAAA;IAAA,qBAAA;IAAA,mBAAA;IAAA,sBAAA;AAAA;AAAA;AAAA;AAAA;IAAA,kBAAA;IAAA,mBAAA;AAAA;AAAA;AADF;EAEE,2BAAA;EACA,8BAAA;EACA,YAAA;AAVF;AAaI;EAAA,wBAAA;EAAA,sBAAA;EAAA,gEAAA;EACA,mBAAA;AADA;AAIE;EAAA,iBAAA;EAAA,sBAAA;EAAA,+DAAA;AAAA;AAIJ;EACE,gBAAA;AAZJ;AAgBA;AACE;IACE,aAAA;IACA,qCAAA;IACA,SAAA;AAbF;AACF","sourcesContent":["\n.label {\n @apply text-sm font-normal text-n-50;\n}\n\n.section {\n &__container {\n @media screen and (min-width: 1415px) {\n max-width: 1206px;\n }\n max-width: 865px;\n margin: auto;\n\n .feedback {\n @media screen and (min-width: 1415px) {\n width: 702px;\n }\n\n p {\n line-height: 22px;\n }\n }\n\n .section__wrapper {\n box-shadow: 0px 20px 40px 20px rgba(0, 0, 0, 0.05);\n\n .verification {\n font-size: 190px;\n }\n }\n\n .section__title {\n @media screen and (min-width: 440px) {\n @apply leading-9;\n }\n\n @apply my-7 mx-3 text-center leading-7 sm:leading-10 lg:mb-10 lg:mt-14;\n\n p {\n font-weight: normal;\n font-style: normal;\n @apply text-sm text-n-40 sm:text-base;\n }\n }\n\n .register__sidebar {\n @apply bg-eggshell;\n padding: 96px 32px 40px;\n width: 344px;\n\n ul {\n width: 253px;\n }\n\n ul::before {\n content: '';\n width: 4px;\n height: 100%;\n @apply bg-n-20;\n border-radius: 2px;\n position: absolute;\n left: 0px;\n top: 0px;\n }\n\n .detail {\n margin-left: 45px;\n }\n\n .list__active::after {\n position: absolute;\n top: 0;\n left: -1px;\n width: 6px;\n height: 85px;\n @apply bg-turquoise;\n content: '';\n border-radius: 2px;\n z-index: 5;\n }\n }\n }\n}\n\n.form {\n @apply bg-white p-5 sm:px-10 sm:py-10 lg:px-20;\n border-top-left-radius: 8px;\n border-bottom-left-radius: 8px;\n width: 862px;\n\n &__container {\n @apply border-b-2 border-b-n-10;\n margin-bottom: 24px;\n\n .error__input {\n @apply border border-crimson-50;\n }\n }\n\n &__content {\n margin-top: 24px;\n }\n}\n\n@media screen and (min-width: 1024px) {\n .form__content {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 16px;\n }\n}\n"],"sourceRoot":""}]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); @@ -50937,7 +50938,7 @@ __webpack_require__.r(__webpack_exports__); var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module -___CSS_LOADER_EXPORT___.push([module.id, ".label {\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 400;\n --tw-text-opacity: 1;\n color: rgba(var(--n-50), var(--tw-text-opacity));\n}\n.section__container {\n max-width: 865px;\n margin: auto;\n}\n@media screen and (min-width: 1280px) {\n.section__container {\n max-width: 1206px;\n}\n.section__container .feedback {\n width: 702px;\n}\n}\n.section__container .feedback p {\n line-height: 22px;\n}\n.section__container .section__wrapper {\n box-shadow: 0px 20px 40px 20px rgba(0, 0, 0, 0.05);\n}\n.section__container .section__wrapper .verification {\n font-size: 190px;\n}\n.section__container .section__title {\n margin-top: 1.75rem;\n margin-bottom: 1.75rem;\n margin-left: 0.75rem;\n margin-right: 0.75rem;\n text-align: center;\n line-height: 1.75rem;\n}\n@media (min-width: 640px) {\n.section__container .section__title {\n line-height: 2.5rem;\n}\n}\n@media (min-width: 1024px) {\n.section__container .section__title {\n margin-bottom: 2.5rem;\n margin-top: 3.5rem;\n}\n}\n@media screen and (min-width: 440px) {\n.section__container .section__title {\n line-height: 2.25rem;\n}\n}\n.section__container .section__title p {\n font-weight: normal;\n font-style: normal;\n font-size: 0.875rem;\n line-height: 1.25rem;\n --tw-text-opacity: 1;\n color: rgba(var(--n-40), var(--tw-text-opacity));\n}\n@media (min-width: 640px) {\n.section__container .section__title p {\n font-size: 1rem;\n line-height: 1.5rem;\n}\n}\n.section__container .register__sidebar {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--eggshell), var(--tw-bg-opacity));\n padding: 96px 32px 40px;\n width: 344px;\n}\n.section__container .register__sidebar ul {\n width: 253px;\n}\n.section__container .register__sidebar ul::before {\n content: \"\";\n width: 4px;\n height: 175px;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--n-20), var(--tw-bg-opacity));\n border-radius: 2px;\n position: absolute;\n left: 0px;\n top: 0px;\n}\n.section__container .register__sidebar .detail {\n margin-left: 45px;\n}\n.section__container .register__sidebar .list__active::after {\n position: absolute;\n top: 0;\n left: -1px;\n width: 6px;\n height: 85px;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--turquoise), var(--tw-bg-opacity));\n content: \"\";\n border-radius: 2px;\n z-index: 5;\n}\n.form {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--white), var(--tw-bg-opacity));\n padding: 1.25rem;\n}\n@media (min-width: 640px) {\n.form {\n padding-left: 2.5rem;\n padding-right: 2.5rem;\n padding-top: 2.5rem;\n padding-bottom: 2.5rem;\n}\n}\n@media (min-width: 1024px) {\n.form {\n padding-left: 5rem;\n padding-right: 5rem;\n}\n}\n.form {\n border-top-left-radius: 8px;\n border-bottom-left-radius: 8px;\n width: 862px;\n}\n.form__container {\n border-bottom-width: 2px;\n --tw-border-opacity: 1;\n border-bottom-color: rgba(var(--n-10), var(--tw-border-opacity));\n margin-bottom: 24px;\n}\n.form__container .error__input {\n border-width: 1px;\n --tw-border-opacity: 1;\n border-color: rgba(var(--crimson-50), var(--tw-border-opacity));\n}\n.form__content {\n margin-top: 24px;\n}\n@media screen and (min-width: 1024px) {\n.form__content {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 16px;\n}\n}", "",{"version":3,"sources":["webpack://./resources/assets/js/views/web/RegisterPage.vue"],"names":[],"mappings":"AAEE;EAAA,mBAAA;EAAA,oBAAA;EAAA,gBAAA;EAAA,oBAAA;EAAA,gDAAA;AAAA;AAIA;EAIE,gBAAA;EACA,YAAA;AAJJ;AAAI;AADF;IAEI,iBAAA;AAGJ;AAEE;IAEI,YAAA;AACN;AAJF;AAMM;EACE,iBAAA;AACR;AAGI;EACE,kDAAA;AADN;AAGM;EACE,gBAAA;AADR;AAUM;EAAA,mBAAA;EAAA,sBAAA;EAAA,oBAAA;EAAA,qBAAA;EAAA,kBAAA;EAAA,oBAAA;AAAA;AAAA;AAAA;IAAA,mBAAA;AAAA;AAAA;AAAA;AAAA;IAAA,qBAAA;IAAA,kBAAA;AAAA;AAAA;AAJA;AACE;IAAA,oBAAA;AAAA;AACR;AAIM;EACE,mBAAA;EACA,kBAAA;EACA,mBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,gDAAA;AAFR;AAEQ;AAAA;IAAA,eAAA;IAAA,mBAAA;AAAA;AAAA;AAKF;EAAA,kBAAA;EAAA,6DAAA;EACA,uBAAA;EACA,YAAA;AAFA;AAIA;EACE,YAAA;AAJR;AAOM;EACE,WAAA;EACA,UAAA;EACA,aAAA;EACA,kBAAA;EAAA,yDAAA;EACA,kBAAA;EACA,kBAAA;EACA,SAAA;EACA,QAAA;AALR;AAQM;EACE,iBAAA;AANR;AASM;EACE,kBAAA;EACA,MAAA;EACA,UAAA;EACA,UAAA;EACA,YAAA;EACA,kBAAA;EAAA,8DAAA;EACA,WAAA;EACA,kBAAA;EACA,UAAA;AAPR;AAcE;EAAA,kBAAA;EAAA,0DAAA;EAAA,gBAAA;AAAA;AAAA;AAAA;IAAA,oBAAA;IAAA,qBAAA;IAAA,mBAAA;IAAA,sBAAA;AAAA;AAAA;AAAA;AAAA;IAAA,kBAAA;IAAA,mBAAA;AAAA;AAAA;AADF;EAEE,2BAAA;EACA,8BAAA;EACA,YAAA;AAVF;AAaI;EAAA,wBAAA;EAAA,sBAAA;EAAA,gEAAA;EACA,mBAAA;AADA;AAIE;EAAA,iBAAA;EAAA,sBAAA;EAAA,+DAAA;AAAA;AAIJ;EACE,gBAAA;AAZJ;AAgBA;AACE;IACE,aAAA;IACA,qCAAA;IACA,SAAA;AAbF;AACF","sourcesContent":["\n.label {\n @apply text-sm font-normal text-n-50;\n}\n\n.section {\n &__container {\n @media screen and (min-width: 1280px) {\n max-width: 1206px;\n }\n max-width: 865px;\n margin: auto;\n\n .feedback {\n @media screen and (min-width: 1280px) {\n width: 702px;\n }\n\n p {\n line-height: 22px;\n }\n }\n\n .section__wrapper {\n box-shadow: 0px 20px 40px 20px rgba(0, 0, 0, 0.05);\n\n .verification {\n font-size: 190px;\n }\n }\n\n .section__title {\n @media screen and (min-width: 440px) {\n @apply leading-9;\n }\n\n @apply my-7 mx-3 text-center leading-7 sm:leading-10 lg:mb-10 lg:mt-14;\n\n p {\n font-weight: normal;\n font-style: normal;\n @apply text-sm text-n-40 sm:text-base;\n }\n }\n\n .register__sidebar {\n @apply bg-eggshell;\n padding: 96px 32px 40px;\n width: 344px;\n\n ul {\n width: 253px;\n }\n\n ul::before {\n content: '';\n width: 4px;\n height: 175px;\n @apply bg-n-20;\n border-radius: 2px;\n position: absolute;\n left: 0px;\n top: 0px;\n }\n\n .detail {\n margin-left: 45px;\n }\n\n .list__active::after {\n position: absolute;\n top: 0;\n left: -1px;\n width: 6px;\n height: 85px;\n @apply bg-turquoise;\n content: '';\n border-radius: 2px;\n z-index: 5;\n }\n }\n }\n}\n\n.form {\n @apply bg-white p-5 sm:px-10 sm:py-10 lg:px-20;\n border-top-left-radius: 8px;\n border-bottom-left-radius: 8px;\n width: 862px;\n\n &__container {\n @apply border-b-2 border-b-n-10;\n margin-bottom: 24px;\n\n .error__input {\n @apply border border-crimson-50;\n }\n }\n\n &__content {\n margin-top: 24px;\n }\n}\n\n@media screen and (min-width: 1024px) {\n .form__content {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 16px;\n }\n}\n"],"sourceRoot":""}]); +___CSS_LOADER_EXPORT___.push([module.id, ".label {\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 400;\n --tw-text-opacity: 1;\n color: rgba(var(--n-50), var(--tw-text-opacity));\n}\n.section__container {\n max-width: 865px;\n margin: auto;\n}\n@media screen and (min-width: 1415px) {\n.section__container {\n max-width: 1206px;\n}\n.section__container .feedback {\n width: 702px;\n}\n}\n.section__container .feedback p {\n line-height: 22px;\n}\n.section__container .section__wrapper {\n box-shadow: 0px 20px 40px 20px rgba(0, 0, 0, 0.05);\n}\n.section__container .section__wrapper .verification {\n font-size: 190px;\n}\n.section__container .section__title {\n margin-top: 1.75rem;\n margin-bottom: 1.75rem;\n margin-left: 0.75rem;\n margin-right: 0.75rem;\n text-align: center;\n line-height: 1.75rem;\n}\n@media (min-width: 640px) {\n.section__container .section__title {\n line-height: 2.5rem;\n}\n}\n@media (min-width: 1024px) {\n.section__container .section__title {\n margin-bottom: 2.5rem;\n margin-top: 3.5rem;\n}\n}\n@media screen and (min-width: 440px) {\n.section__container .section__title {\n line-height: 2.25rem;\n}\n}\n.section__container .section__title p {\n font-weight: normal;\n font-style: normal;\n font-size: 0.875rem;\n line-height: 1.25rem;\n --tw-text-opacity: 1;\n color: rgba(var(--n-40), var(--tw-text-opacity));\n}\n@media (min-width: 640px) {\n.section__container .section__title p {\n font-size: 1rem;\n line-height: 1.5rem;\n}\n}\n.section__container .register__sidebar {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--eggshell), var(--tw-bg-opacity));\n padding: 96px 32px 40px;\n width: 344px;\n}\n.section__container .register__sidebar ul {\n width: 253px;\n}\n.section__container .register__sidebar ul::before {\n content: \"\";\n width: 4px;\n height: 175px;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--n-20), var(--tw-bg-opacity));\n border-radius: 2px;\n position: absolute;\n left: 0px;\n top: 0px;\n}\n.section__container .register__sidebar .detail {\n margin-left: 45px;\n}\n.section__container .register__sidebar .list__active::after {\n position: absolute;\n top: 0;\n left: -1px;\n width: 6px;\n height: 85px;\n --tw-bg-opacity: 1;\n background-color: rgba(var(--turquoise), var(--tw-bg-opacity));\n content: \"\";\n border-radius: 2px;\n z-index: 5;\n}\n.form {\n --tw-bg-opacity: 1;\n background-color: rgba(var(--white), var(--tw-bg-opacity));\n padding: 1.25rem;\n}\n@media (min-width: 640px) {\n.form {\n padding-left: 2.5rem;\n padding-right: 2.5rem;\n padding-top: 2.5rem;\n padding-bottom: 2.5rem;\n}\n}\n@media (min-width: 1024px) {\n.form {\n padding-left: 5rem;\n padding-right: 5rem;\n}\n}\n.form {\n border-top-left-radius: 8px;\n border-bottom-left-radius: 8px;\n width: 862px;\n}\n.form__container {\n border-bottom-width: 2px;\n --tw-border-opacity: 1;\n border-bottom-color: rgba(var(--n-10), var(--tw-border-opacity));\n margin-bottom: 24px;\n}\n.form__container .error__input {\n border-width: 1px;\n --tw-border-opacity: 1;\n border-color: rgba(var(--crimson-50), var(--tw-border-opacity));\n}\n.form__content {\n margin-top: 24px;\n}\n@media screen and (min-width: 1024px) {\n.form__content {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 16px;\n}\n}", "",{"version":3,"sources":["webpack://./resources/assets/js/views/web/RegisterPage.vue"],"names":[],"mappings":"AAEE;EAAA,mBAAA;EAAA,oBAAA;EAAA,gBAAA;EAAA,oBAAA;EAAA,gDAAA;AAAA;AAIA;EAIE,gBAAA;EACA,YAAA;AAJJ;AAAI;AADF;IAEI,iBAAA;AAGJ;AAEE;IAEI,YAAA;AACN;AAJF;AAMM;EACE,iBAAA;AACR;AAGI;EACE,kDAAA;AADN;AAGM;EACE,gBAAA;AADR;AAUM;EAAA,mBAAA;EAAA,sBAAA;EAAA,oBAAA;EAAA,qBAAA;EAAA,kBAAA;EAAA,oBAAA;AAAA;AAAA;AAAA;IAAA,mBAAA;AAAA;AAAA;AAAA;AAAA;IAAA,qBAAA;IAAA,kBAAA;AAAA;AAAA;AAJA;AACE;IAAA,oBAAA;AAAA;AACR;AAIM;EACE,mBAAA;EACA,kBAAA;EACA,mBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,gDAAA;AAFR;AAEQ;AAAA;IAAA,eAAA;IAAA,mBAAA;AAAA;AAAA;AAKF;EAAA,kBAAA;EAAA,6DAAA;EACA,uBAAA;EACA,YAAA;AAFA;AAIA;EACE,YAAA;AAJR;AAOM;EACE,WAAA;EACA,UAAA;EACA,aAAA;EACA,kBAAA;EAAA,yDAAA;EACA,kBAAA;EACA,kBAAA;EACA,SAAA;EACA,QAAA;AALR;AAQM;EACE,iBAAA;AANR;AASM;EACE,kBAAA;EACA,MAAA;EACA,UAAA;EACA,UAAA;EACA,YAAA;EACA,kBAAA;EAAA,8DAAA;EACA,WAAA;EACA,kBAAA;EACA,UAAA;AAPR;AAcE;EAAA,kBAAA;EAAA,0DAAA;EAAA,gBAAA;AAAA;AAAA;AAAA;IAAA,oBAAA;IAAA,qBAAA;IAAA,mBAAA;IAAA,sBAAA;AAAA;AAAA;AAAA;AAAA;IAAA,kBAAA;IAAA,mBAAA;AAAA;AAAA;AADF;EAEE,2BAAA;EACA,8BAAA;EACA,YAAA;AAVF;AAaI;EAAA,wBAAA;EAAA,sBAAA;EAAA,gEAAA;EACA,mBAAA;AADA;AAIE;EAAA,iBAAA;EAAA,sBAAA;EAAA,+DAAA;AAAA;AAIJ;EACE,gBAAA;AAZJ;AAgBA;AACE;IACE,aAAA;IACA,qCAAA;IACA,SAAA;AAbF;AACF","sourcesContent":["\n.label {\n @apply text-sm font-normal text-n-50;\n}\n\n.section {\n &__container {\n @media screen and (min-width: 1415px) {\n max-width: 1206px;\n }\n max-width: 865px;\n margin: auto;\n\n .feedback {\n @media screen and (min-width: 1415px) {\n width: 702px;\n }\n\n p {\n line-height: 22px;\n }\n }\n\n .section__wrapper {\n box-shadow: 0px 20px 40px 20px rgba(0, 0, 0, 0.05);\n\n .verification {\n font-size: 190px;\n }\n }\n\n .section__title {\n @media screen and (min-width: 440px) {\n @apply leading-9;\n }\n\n @apply my-7 mx-3 text-center leading-7 sm:leading-10 lg:mb-10 lg:mt-14;\n\n p {\n font-weight: normal;\n font-style: normal;\n @apply text-sm text-n-40 sm:text-base;\n }\n }\n\n .register__sidebar {\n @apply bg-eggshell;\n padding: 96px 32px 40px;\n width: 344px;\n\n ul {\n width: 253px;\n }\n\n ul::before {\n content: '';\n width: 4px;\n height: 175px;\n @apply bg-n-20;\n border-radius: 2px;\n position: absolute;\n left: 0px;\n top: 0px;\n }\n\n .detail {\n margin-left: 45px;\n }\n\n .list__active::after {\n position: absolute;\n top: 0;\n left: -1px;\n width: 6px;\n height: 85px;\n @apply bg-turquoise;\n content: '';\n border-radius: 2px;\n z-index: 5;\n }\n }\n }\n}\n\n.form {\n @apply bg-white p-5 sm:px-10 sm:py-10 lg:px-20;\n border-top-left-radius: 8px;\n border-bottom-left-radius: 8px;\n width: 862px;\n\n &__container {\n @apply border-b-2 border-b-n-10;\n margin-bottom: 24px;\n\n .error__input {\n @apply border border-crimson-50;\n }\n }\n\n &__content {\n margin-top: 24px;\n }\n}\n\n@media screen and (min-width: 1024px) {\n .form__content {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 16px;\n }\n}\n"],"sourceRoot":""}]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); @@ -54551,13 +54552,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ActivityDownload_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ActivityDownload_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityDownload_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityDownload_vue_vue_type_template_id_326ad76e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/ActivityDownload.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityDownload_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityDownload_vue_vue_type_template_id_326ad76e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/ActivityDownload.vue"]]) /* hot reload */ if (false) {} @@ -54584,7 +54585,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _vueform_multiselect_themes_default_css_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @vueform/multiselect/themes/default.css?vue&type=style&index=0&lang=css */ "./node_modules/@vueform/multiselect/themes/default.css?vue&type=style&index=0&lang=css"); /* harmony import */ var _AdminHeader_vue_vue_type_style_index_1_id_6fe59055_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./AdminHeader.vue?vue&type=style&index=1&id=6fe59055&lang=scss&scoped=true */ "./resources/assets/js/components/AdminHeader.vue?vue&type=style&index=1&id=6fe59055&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -54593,7 +54594,7 @@ __webpack_require__.r(__webpack_exports__); -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__["default"])(_AdminHeader_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AdminHeader_vue_vue_type_template_id_6fe59055_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-6fe59055"],['__file',"resources/assets/js/components/AdminHeader.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__["default"])(_AdminHeader_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AdminHeader_vue_vue_type_template_id_6fe59055_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-6fe59055"],['__file',"resources/assets/js/components/AdminHeader.vue"]]) /* hot reload */ if (false) {} @@ -54618,13 +54619,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _BreadCrumb_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _BreadCrumb_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_BreadCrumb_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_BreadCrumb_vue_vue_type_template_id_65d0e3da_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/BreadCrumb.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_BreadCrumb_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_BreadCrumb_vue_vue_type_template_id_65d0e3da_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/BreadCrumb.vue"]]) /* hot reload */ if (false) {} @@ -54647,13 +54648,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _BulkPublishingErrorPopup_vue_vue_type_template_id_162cbf40_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BulkPublishingErrorPopup.vue?vue&type=template&id=162cbf40&ts=true */ "./resources/assets/js/components/BulkPublishingErrorPopup.vue?vue&type=template&id=162cbf40&ts=true"); /* harmony import */ var _BulkPublishingErrorPopup_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./BulkPublishingErrorPopup.vue?vue&type=script&lang=ts&setup=true */ "./resources/assets/js/components/BulkPublishingErrorPopup.vue?vue&type=script&lang=ts&setup=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_BulkPublishingErrorPopup_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_BulkPublishingErrorPopup_vue_vue_type_template_id_162cbf40_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/BulkPublishingErrorPopup.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_BulkPublishingErrorPopup_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_BulkPublishingErrorPopup_vue_vue_type_template_id_162cbf40_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/BulkPublishingErrorPopup.vue"]]) /* hot reload */ if (false) {} @@ -54679,7 +54680,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _BulkpublishWithXls_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _BulkpublishWithXls_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _BulkpublishWithXls_vue_vue_type_style_index_0_id_2443df53_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./BulkpublishWithXls.vue?vue&type=style&index=0&id=2443df53&lang=scss&scoped=true */ "./resources/assets/js/components/BulkpublishWithXls.vue?vue&type=style&index=0&id=2443df53&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -54687,7 +54688,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_BulkpublishWithXls_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_BulkpublishWithXls_vue_vue_type_template_id_2443df53_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-2443df53"],['__file',"resources/assets/js/components/BulkpublishWithXls.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_BulkpublishWithXls_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_BulkpublishWithXls_vue_vue_type_template_id_2443df53_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-2443df53"],['__file',"resources/assets/js/components/BulkpublishWithXls.vue"]]) /* hot reload */ if (false) {} @@ -54710,13 +54711,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _ButtonComponent_vue_vue_type_template_id_9ff5a8f8_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ButtonComponent.vue?vue&type=template&id=9ff5a8f8&ts=true */ "./resources/assets/js/components/ButtonComponent.vue?vue&type=template&id=9ff5a8f8&ts=true"); /* harmony import */ var _ButtonComponent_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ButtonComponent.vue?vue&type=script&lang=ts */ "./resources/assets/js/components/ButtonComponent.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ButtonComponent_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ButtonComponent_vue_vue_type_template_id_9ff5a8f8_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/ButtonComponent.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ButtonComponent_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ButtonComponent_vue_vue_type_template_id_9ff5a8f8_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/ButtonComponent.vue"]]) /* hot reload */ if (false) {} @@ -54741,13 +54742,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _DateRangeWidget_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _DateRangeWidget_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DateRangeWidget_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DateRangeWidget_vue_vue_type_template_id_3477c6ec_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/DateRangeWidget.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DateRangeWidget_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DateRangeWidget_vue_vue_type_template_id_3477c6ec_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/DateRangeWidget.vue"]]) /* hot reload */ if (false) {} @@ -54770,13 +54771,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _DescriptionForm_vue_vue_type_template_id_6ebf41f9_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DescriptionForm.vue?vue&type=template&id=6ebf41f9&ts=true */ "./resources/assets/js/components/DescriptionForm.vue?vue&type=template&id=6ebf41f9&ts=true"); /* harmony import */ var _DescriptionForm_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DescriptionForm.vue?vue&type=script&lang=ts */ "./resources/assets/js/components/DescriptionForm.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DescriptionForm_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DescriptionForm_vue_vue_type_template_id_6ebf41f9_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/DescriptionForm.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DescriptionForm_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DescriptionForm_vue_vue_type_template_id_6ebf41f9_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/DescriptionForm.vue"]]) /* hot reload */ if (false) {} @@ -54802,7 +54803,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ErrorMessage_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ErrorMessage_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _ErrorMessage_vue_vue_type_style_index_0_id_b77b11d4_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ErrorMessage.vue?vue&type=style&index=0&id=b77b11d4&lang=scss&scoped=true */ "./resources/assets/js/components/ErrorMessage.vue?vue&type=style&index=0&id=b77b11d4&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -54810,7 +54811,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ErrorMessage_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ErrorMessage_vue_vue_type_template_id_b77b11d4_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-b77b11d4"],['__file',"resources/assets/js/components/ErrorMessage.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ErrorMessage_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ErrorMessage_vue_vue_type_template_id_b77b11d4_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-b77b11d4"],['__file',"resources/assets/js/components/ErrorMessage.vue"]]) /* hot reload */ if (false) {} @@ -54833,13 +54834,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _ErrorPopUp_vue_vue_type_template_id_0f1d8b1b_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ErrorPopUp.vue?vue&type=template&id=0f1d8b1b&ts=true */ "./resources/assets/js/components/ErrorPopUp.vue?vue&type=template&id=0f1d8b1b&ts=true"); /* harmony import */ var _ErrorPopUp_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ErrorPopUp.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/components/ErrorPopUp.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ErrorPopUp_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ErrorPopUp_vue_vue_type_template_id_0f1d8b1b_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/ErrorPopUp.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ErrorPopUp_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ErrorPopUp_vue_vue_type_template_id_0f1d8b1b_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/ErrorPopUp.vue"]]) /* hot reload */ if (false) {} @@ -54863,7 +54864,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _HoverText_vue_vue_type_template_id_5538d7e2_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./HoverText.vue?vue&type=template&id=5538d7e2&ts=true */ "./resources/assets/js/components/HoverText.vue?vue&type=template&id=5538d7e2&ts=true"); /* harmony import */ var _HoverText_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./HoverText.vue?vue&type=script&lang=ts */ "./resources/assets/js/components/HoverText.vue?vue&type=script&lang=ts"); /* harmony import */ var _HoverText_vue_vue_type_style_index_0_id_5538d7e2_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./HoverText.vue?vue&type=style&index=0&id=5538d7e2&lang=scss */ "./resources/assets/js/components/HoverText.vue?vue&type=style&index=0&id=5538d7e2&lang=scss"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -54871,7 +54872,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_HoverText_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_HoverText_vue_vue_type_template_id_5538d7e2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/HoverText.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_HoverText_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_HoverText_vue_vue_type_template_id_5538d7e2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/HoverText.vue"]]) /* hot reload */ if (false) {} @@ -54895,7 +54896,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _Loader_vue_vue_type_template_id_8e36f8ec_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Loader.vue?vue&type=template&id=8e36f8ec&ts=true */ "./resources/assets/js/components/Loader.vue?vue&type=template&id=8e36f8ec&ts=true"); /* harmony import */ var _Loader_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Loader.vue?vue&type=script&lang=ts */ "./resources/assets/js/components/Loader.vue?vue&type=script&lang=ts"); /* harmony import */ var _Loader_vue_vue_type_style_index_0_id_8e36f8ec_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Loader.vue?vue&type=style&index=0&id=8e36f8ec&lang=scss */ "./resources/assets/js/components/Loader.vue?vue&type=style&index=0&id=8e36f8ec&lang=scss"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -54903,7 +54904,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_Loader_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Loader_vue_vue_type_template_id_8e36f8ec_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/Loader.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_Loader_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Loader_vue_vue_type_template_id_8e36f8ec_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/Loader.vue"]]) /* hot reload */ if (false) {} @@ -54929,7 +54930,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _MultiSelectWithSearch_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _MultiSelectWithSearch_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _MultiSelectWithSearch_vue_vue_type_style_index_0_id_dc705f48_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./MultiSelectWithSearch.vue?vue&type=style&index=0&id=dc705f48&lang=css */ "./resources/assets/js/components/MultiSelectWithSearch.vue?vue&type=style&index=0&id=dc705f48&lang=css"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -54937,7 +54938,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_MultiSelectWithSearch_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_MultiSelectWithSearch_vue_vue_type_template_id_dc705f48_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/MultiSelectWithSearch.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_MultiSelectWithSearch_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_MultiSelectWithSearch_vue_vue_type_template_id_dc705f48_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/MultiSelectWithSearch.vue"]]) /* hot reload */ if (false) {} @@ -54960,13 +54961,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _NavDropdown_vue_vue_type_template_id_2619a7ed_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./NavDropdown.vue?vue&type=template&id=2619a7ed&ts=true */ "./resources/assets/js/components/NavDropdown.vue?vue&type=template&id=2619a7ed&ts=true"); /* harmony import */ var _NavDropdown_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./NavDropdown.vue?vue&type=script&lang=ts */ "./resources/assets/js/components/NavDropdown.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_NavDropdown_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_NavDropdown_vue_vue_type_template_id_2619a7ed_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/NavDropdown.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_NavDropdown_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_NavDropdown_vue_vue_type_template_id_2619a7ed_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/NavDropdown.vue"]]) /* hot reload */ if (false) {} @@ -54990,7 +54991,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _PopupModal_vue_vue_type_template_id_5a2bda58_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PopupModal.vue?vue&type=template&id=5a2bda58&scoped=true&ts=true */ "./resources/assets/js/components/PopupModal.vue?vue&type=template&id=5a2bda58&scoped=true&ts=true"); /* harmony import */ var _PopupModal_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PopupModal.vue?vue&type=script&lang=ts */ "./resources/assets/js/components/PopupModal.vue?vue&type=script&lang=ts"); /* harmony import */ var _PopupModal_vue_vue_type_style_index_0_id_5a2bda58_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./PopupModal.vue?vue&type=style&index=0&id=5a2bda58&lang=scss&scoped=true */ "./resources/assets/js/components/PopupModal.vue?vue&type=style&index=0&id=5a2bda58&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -54998,7 +54999,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_PopupModal_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PopupModal_vue_vue_type_template_id_5a2bda58_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-5a2bda58"],['__file',"resources/assets/js/components/PopupModal.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_PopupModal_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PopupModal_vue_vue_type_template_id_5a2bda58_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-5a2bda58"],['__file',"resources/assets/js/components/PopupModal.vue"]]) /* hot reload */ if (false) {} @@ -55023,13 +55024,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _RadialProgressBar_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _RadialProgressBar_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RadialProgressBar_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RadialProgressBar_vue_vue_type_template_id_15738e60_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/RadialProgressBar.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RadialProgressBar_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RadialProgressBar_vue_vue_type_template_id_15738e60_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/RadialProgressBar.vue"]]) /* hot reload */ if (false) {} @@ -55051,14 +55052,14 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _ShimmerLoading_vue_vue_type_template_id_74356172_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ShimmerLoading.vue?vue&type=template&id=74356172&scoped=true */ "./resources/assets/js/components/ShimmerLoading.vue?vue&type=template&id=74356172&scoped=true"); /* harmony import */ var _ShimmerLoading_vue_vue_type_style_index_0_id_74356172_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ShimmerLoading.vue?vue&type=style&index=0&id=74356172&lang=scss&scoped=true */ "./resources/assets/js/components/ShimmerLoading.vue?vue&type=style&index=0&id=74356172&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); const script = {} ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(script, [['render',_ShimmerLoading_vue_vue_type_template_id_74356172_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-74356172"],['__file',"resources/assets/js/components/ShimmerLoading.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(script, [['render',_ShimmerLoading_vue_vue_type_template_id_74356172_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-74356172"],['__file',"resources/assets/js/components/ShimmerLoading.vue"]]) /* hot reload */ if (false) {} @@ -55083,13 +55084,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _TableLoaderComponent_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _TableLoaderComponent_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TableLoaderComponent_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TableLoaderComponent_vue_vue_type_template_id_7d52059a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/TableLoaderComponent.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TableLoaderComponent_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TableLoaderComponent_vue_vue_type_template_id_7d52059a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/TableLoaderComponent.vue"]]) /* hot reload */ if (false) {} @@ -55112,13 +55113,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _TablePagination_vue_vue_type_template_id_8c97a5be_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TablePagination.vue?vue&type=template&id=8c97a5be&ts=true */ "./resources/assets/js/components/TablePagination.vue?vue&type=template&id=8c97a5be&ts=true"); /* harmony import */ var _TablePagination_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TablePagination.vue?vue&type=script&lang=ts */ "./resources/assets/js/components/TablePagination.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TablePagination_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TablePagination_vue_vue_type_template_id_8c97a5be_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/TablePagination.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TablePagination_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TablePagination_vue_vue_type_template_id_8c97a5be_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/TablePagination.vue"]]) /* hot reload */ if (false) {} @@ -55141,13 +55142,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _ToastMessage_vue_vue_type_template_id_d01d8cd2_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ToastMessage.vue?vue&type=template&id=d01d8cd2&ts=true */ "./resources/assets/js/components/ToastMessage.vue?vue&type=template&id=d01d8cd2&ts=true"); /* harmony import */ var _ToastMessage_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ToastMessage.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/components/ToastMessage.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ToastMessage_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ToastMessage_vue_vue_type_template_id_d01d8cd2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/ToastMessage.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ToastMessage_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ToastMessage_vue_vue_type_template_id_d01d8cd2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/ToastMessage.vue"]]) /* hot reload */ if (false) {} @@ -55171,7 +55172,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _XlsListError_vue_vue_type_template_id_37617702_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./XlsListError.vue?vue&type=template&id=37617702&scoped=true&ts=true */ "./resources/assets/js/components/XlsListError.vue?vue&type=template&id=37617702&scoped=true&ts=true"); /* harmony import */ var _XlsListError_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./XlsListError.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/components/XlsListError.vue?vue&type=script&setup=true&lang=ts"); /* harmony import */ var _XlsListError_vue_vue_type_style_index_0_id_37617702_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./XlsListError.vue?vue&type=style&index=0&id=37617702&scoped=true&lang=css */ "./resources/assets/js/components/XlsListError.vue?vue&type=style&index=0&id=37617702&scoped=true&lang=css"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -55179,7 +55180,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_XlsListError_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_XlsListError_vue_vue_type_template_id_37617702_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-37617702"],['__file',"resources/assets/js/components/XlsListError.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_XlsListError_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_XlsListError_vue_vue_type_template_id_37617702_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-37617702"],['__file',"resources/assets/js/components/XlsListError.vue"]]) /* hot reload */ if (false) {} @@ -55204,13 +55205,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _XlsLoader_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _XlsLoader_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_XlsLoader_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_XlsLoader_vue_vue_type_template_id_7ea4b06a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/XlsLoader.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_XlsLoader_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_XlsLoader_vue_vue_type_template_id_7ea4b06a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/XlsLoader.vue"]]) /* hot reload */ if (false) {} @@ -55235,13 +55236,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _XlsUploadIndicator_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _XlsUploadIndicator_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_XlsUploadIndicator_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_XlsUploadIndicator_vue_vue_type_template_id_02ac2bf4_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/XlsUploadIndicator.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_XlsUploadIndicator_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_XlsUploadIndicator_vue_vue_type_template_id_02ac2bf4_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/XlsUploadIndicator.vue"]]) /* hot reload */ if (false) {} @@ -55266,13 +55267,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _DeleteButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _DeleteButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DeleteButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DeleteButton_vue_vue_type_template_id_a93d847c_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/buttons/DeleteButton.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DeleteButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DeleteButton_vue_vue_type_template_id_a93d847c_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/buttons/DeleteButton.vue"]]) /* hot reload */ if (false) {} @@ -55295,13 +55296,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Link_vue_vue_type_template_id_bfe65102_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Link.vue?vue&type=template&id=bfe65102&ts=true */ "./resources/assets/js/components/buttons/Link.vue?vue&type=template&id=bfe65102&ts=true"); /* harmony import */ var _Link_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Link.vue?vue&type=script&lang=ts */ "./resources/assets/js/components/buttons/Link.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Link_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Link_vue_vue_type_template_id_bfe65102_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/buttons/Link.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Link_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Link_vue_vue_type_template_id_bfe65102_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/buttons/Link.vue"]]) /* hot reload */ if (false) {} @@ -55326,13 +55327,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _PublishButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _PublishButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PublishButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PublishButton_vue_vue_type_template_id_ecc50828_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/buttons/PublishButton.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PublishButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PublishButton_vue_vue_type_template_id_ecc50828_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/buttons/PublishButton.vue"]]) /* hot reload */ if (false) {} @@ -55357,13 +55358,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _UnPublishButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _UnPublishButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_UnPublishButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_UnPublishButton_vue_vue_type_template_id_459c3193_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/buttons/UnPublishButton.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_UnPublishButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_UnPublishButton_vue_vue_type_template_id_459c3193_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/buttons/UnPublishButton.vue"]]) /* hot reload */ if (false) {} @@ -55388,13 +55389,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _DeleteAction_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _DeleteAction_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DeleteAction_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DeleteAction_vue_vue_type_template_id_56bce8ca_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/sections/DeleteAction.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DeleteAction_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DeleteAction_vue_vue_type_template_id_56bce8ca_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/sections/DeleteAction.vue"]]) /* hot reload */ if (false) {} @@ -55418,7 +55419,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _ErrorLists_vue_vue_type_template_id_f67c7e72_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ErrorLists.vue?vue&type=template&id=f67c7e72&scoped=true&ts=true */ "./resources/assets/js/components/sections/ErrorLists.vue?vue&type=template&id=f67c7e72&scoped=true&ts=true"); /* harmony import */ var _ErrorLists_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ErrorLists.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/components/sections/ErrorLists.vue?vue&type=script&setup=true&lang=ts"); /* harmony import */ var _ErrorLists_vue_vue_type_style_index_0_id_f67c7e72_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ErrorLists.vue?vue&type=style&index=0&id=f67c7e72&lang=scss&scoped=true */ "./resources/assets/js/components/sections/ErrorLists.vue?vue&type=style&index=0&id=f67c7e72&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -55426,7 +55427,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ErrorLists_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ErrorLists_vue_vue_type_template_id_f67c7e72_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-f67c7e72"],['__file',"resources/assets/js/components/sections/ErrorLists.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ErrorLists_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ErrorLists_vue_vue_type_template_id_f67c7e72_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-f67c7e72"],['__file',"resources/assets/js/components/sections/ErrorLists.vue"]]) /* hot reload */ if (false) {} @@ -55451,13 +55452,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _HaveNotAddedYet_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _HaveNotAddedYet_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_HaveNotAddedYet_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_HaveNotAddedYet_vue_vue_type_template_id_3925ef49_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/sections/HaveNotAddedYet.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_HaveNotAddedYet_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_HaveNotAddedYet_vue_vue_type_template_id_3925ef49_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/sections/HaveNotAddedYet.vue"]]) /* hot reload */ if (false) {} @@ -55482,13 +55483,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _OrganizationPublishUnpublishButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _OrganizationPublishUnpublishButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_OrganizationPublishUnpublishButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OrganizationPublishUnpublishButton_vue_vue_type_template_id_2fb8f406_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/sections/OrganizationPublishUnpublishButton.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_OrganizationPublishUnpublishButton_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OrganizationPublishUnpublishButton_vue_vue_type_template_id_2fb8f406_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/sections/OrganizationPublishUnpublishButton.vue"]]) /* hot reload */ if (false) {} @@ -55513,13 +55514,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _PageTitle_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _PageTitle_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PageTitle_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PageTitle_vue_vue_type_template_id_1b54e09f_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/sections/PageTitle.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PageTitle_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PageTitle_vue_vue_type_template_id_1b54e09f_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/sections/PageTitle.vue"]]) /* hot reload */ if (false) {} @@ -55543,7 +55544,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _ProgressLoader_vue_vue_type_template_id_5c32bf0c_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ProgressLoader.vue?vue&type=template&id=5c32bf0c&scoped=true&ts=true */ "./resources/assets/js/components/sections/ProgressLoader.vue?vue&type=template&id=5c32bf0c&scoped=true&ts=true"); /* harmony import */ var _ProgressLoader_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ProgressLoader.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/components/sections/ProgressLoader.vue?vue&type=script&setup=true&lang=ts"); /* harmony import */ var _ProgressLoader_vue_vue_type_style_index_0_id_5c32bf0c_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ProgressLoader.vue?vue&type=style&index=0&id=5c32bf0c&lang=scss&scoped=true */ "./resources/assets/js/components/sections/ProgressLoader.vue?vue&type=style&index=0&id=5c32bf0c&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -55551,7 +55552,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ProgressLoader_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ProgressLoader_vue_vue_type_template_id_5c32bf0c_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-5c32bf0c"],['__file',"resources/assets/js/components/sections/ProgressLoader.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ProgressLoader_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ProgressLoader_vue_vue_type_template_id_5c32bf0c_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-5c32bf0c"],['__file',"resources/assets/js/components/sections/ProgressLoader.vue"]]) /* hot reload */ if (false) {} @@ -55577,7 +55578,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _StickyErrors_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _StickyErrors_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _StickyErrors_vue_vue_type_style_index_0_id_1e38d10e_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./StickyErrors.vue?vue&type=style&index=0&id=1e38d10e&lang=scss&scoped=true */ "./resources/assets/js/components/sections/StickyErrors.vue?vue&type=style&index=0&id=1e38d10e&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -55585,7 +55586,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_StickyErrors_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_StickyErrors_vue_vue_type_template_id_1e38d10e_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-1e38d10e"],['__file',"resources/assets/js/components/sections/StickyErrors.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_StickyErrors_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_StickyErrors_vue_vue_type_template_id_1e38d10e_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-1e38d10e"],['__file',"resources/assets/js/components/sections/StickyErrors.vue"]]) /* hot reload */ if (false) {} @@ -55609,7 +55610,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _UploadedErrors_vue_vue_type_template_id_6f17ec45_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./UploadedErrors.vue?vue&type=template&id=6f17ec45&scoped=true&ts=true */ "./resources/assets/js/components/sections/UploadedErrors.vue?vue&type=template&id=6f17ec45&scoped=true&ts=true"); /* harmony import */ var _UploadedErrors_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./UploadedErrors.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/components/sections/UploadedErrors.vue?vue&type=script&setup=true&lang=ts"); /* harmony import */ var _UploadedErrors_vue_vue_type_style_index_0_id_6f17ec45_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./UploadedErrors.vue?vue&type=style&index=0&id=6f17ec45&lang=scss&scoped=true */ "./resources/assets/js/components/sections/UploadedErrors.vue?vue&type=style&index=0&id=6f17ec45&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -55617,7 +55618,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_UploadedErrors_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_UploadedErrors_vue_vue_type_template_id_6f17ec45_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-6f17ec45"],['__file',"resources/assets/js/components/sections/UploadedErrors.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_UploadedErrors_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_UploadedErrors_vue_vue_type_template_id_6f17ec45_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-6f17ec45"],['__file',"resources/assets/js/components/sections/UploadedErrors.vue"]]) /* hot reload */ if (false) {} @@ -55639,14 +55640,14 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _spinnerLoader_vue_vue_type_template_id_00892df6__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./spinnerLoader.vue?vue&type=template&id=00892df6 */ "./resources/assets/js/components/spinnerLoader.vue?vue&type=template&id=00892df6"); /* harmony import */ var _spinnerLoader_vue_vue_type_style_index_0_id_00892df6_lang_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./spinnerLoader.vue?vue&type=style&index=0&id=00892df6&lang=css */ "./resources/assets/js/components/spinnerLoader.vue?vue&type=style&index=0&id=00892df6&lang=css"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); const script = {} ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(script, [['render',_spinnerLoader_vue_vue_type_template_id_00892df6__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/spinnerLoader.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(script, [['render',_spinnerLoader_vue_vue_type_template_id_00892df6__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/spinnerLoader.vue"]]) /* hot reload */ if (false) {} @@ -55669,13 +55670,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _ElementStatus_vue_vue_type_template_id_1eb8deb0_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ElementStatus.vue?vue&type=template&id=1eb8deb0&ts=true */ "./resources/assets/js/components/status/ElementStatus.vue?vue&type=template&id=1eb8deb0&ts=true"); /* harmony import */ var _ElementStatus_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ElementStatus.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/components/status/ElementStatus.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ElementStatus_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ElementStatus_vue_vue_type_template_id_1eb8deb0_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/status/ElementStatus.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ElementStatus_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ElementStatus_vue_vue_type_template_id_1eb8deb0_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/status/ElementStatus.vue"]]) /* hot reload */ if (false) {} @@ -55698,13 +55699,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _PreviouslyPublished_vue_vue_type_template_id_1f2f9ab8_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PreviouslyPublished.vue?vue&type=template&id=1f2f9ab8&ts=true */ "./resources/assets/js/components/status/PreviouslyPublished.vue?vue&type=template&id=1f2f9ab8&ts=true"); /* harmony import */ var _PreviouslyPublished_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PreviouslyPublished.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/components/status/PreviouslyPublished.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PreviouslyPublished_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PreviouslyPublished_vue_vue_type_template_id_1f2f9ab8_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/status/PreviouslyPublished.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PreviouslyPublished_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PreviouslyPublished_vue_vue_type_template_id_1f2f9ab8_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/components/status/PreviouslyPublished.vue"]]) /* hot reload */ if (false) {} @@ -55729,13 +55730,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ActivityDefaultValue_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ActivityDefaultValue_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityDefaultValue_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityDefaultValue_vue_vue_type_template_id_23ee375c_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/ActivityDefaultValue.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityDefaultValue_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityDefaultValue_vue_vue_type_template_id_23ee375c_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/ActivityDefaultValue.vue"]]) /* hot reload */ if (false) {} @@ -55760,13 +55761,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ActivityDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ActivityDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityDetail_vue_vue_type_template_id_4e402b06_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/ActivityDetail.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityDetail_vue_vue_type_template_id_4e402b06_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/ActivityDetail.vue"]]) /* hot reload */ if (false) {} @@ -55792,7 +55793,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ActivityIndex_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ActivityIndex_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _ActivityIndex_vue_vue_type_style_index_0_id_0a571fd6_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ActivityIndex.vue?vue&type=style&index=0&id=0a571fd6&lang=scss */ "./resources/assets/js/views/activity/ActivityIndex.vue?vue&type=style&index=0&id=0a571fd6&lang=scss"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -55800,7 +55801,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ActivityIndex_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityIndex_vue_vue_type_template_id_0a571fd6_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/ActivityIndex.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ActivityIndex_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityIndex_vue_vue_type_template_id_0a571fd6_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/ActivityIndex.vue"]]) /* hot reload */ if (false) {} @@ -55826,7 +55827,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _CreateModal_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _CreateModal_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _CreateModal_vue_vue_type_style_index_0_id_c7ca28b8_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./CreateModal.vue?vue&type=style&index=0&id=c7ca28b8&lang=scss&scoped=true */ "./resources/assets/js/views/activity/CreateModal.vue?vue&type=style&index=0&id=c7ca28b8&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -55834,7 +55835,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_CreateModal_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_CreateModal_vue_vue_type_template_id_c7ca28b8_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-c7ca28b8"],['__file',"resources/assets/js/views/activity/CreateModal.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_CreateModal_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_CreateModal_vue_vue_type_template_id_c7ca28b8_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-c7ca28b8"],['__file',"resources/assets/js/views/activity/CreateModal.vue"]]) /* hot reload */ if (false) {} @@ -55858,7 +55859,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _ErrorItem_vue_vue_type_template_id_063cbd86_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ErrorItem.vue?vue&type=template&id=063cbd86&scoped=true&ts=true */ "./resources/assets/js/views/activity/bulk-publish/ErrorItem.vue?vue&type=template&id=063cbd86&scoped=true&ts=true"); /* harmony import */ var _ErrorItem_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ErrorItem.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/views/activity/bulk-publish/ErrorItem.vue?vue&type=script&setup=true&lang=ts"); /* harmony import */ var _ErrorItem_vue_vue_type_style_index_0_id_063cbd86_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ErrorItem.vue?vue&type=style&index=0&id=063cbd86&lang=scss&scoped=true */ "./resources/assets/js/views/activity/bulk-publish/ErrorItem.vue?vue&type=style&index=0&id=063cbd86&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -55866,7 +55867,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ErrorItem_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ErrorItem_vue_vue_type_template_id_063cbd86_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-063cbd86"],['__file',"resources/assets/js/views/activity/bulk-publish/ErrorItem.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ErrorItem_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ErrorItem_vue_vue_type_template_id_063cbd86_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-063cbd86"],['__file',"resources/assets/js/views/activity/bulk-publish/ErrorItem.vue"]]) /* hot reload */ if (false) {} @@ -55891,13 +55892,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _PublishSelected_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _PublishSelected_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PublishSelected_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PublishSelected_vue_vue_type_template_id_3fb1e1cc_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/bulk-publish/PublishSelected.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PublishSelected_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PublishSelected_vue_vue_type_template_id_3fb1e1cc_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/bulk-publish/PublishSelected.vue"]]) /* hot reload */ if (false) {} @@ -55920,13 +55921,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _RefreshToast_vue_vue_type_template_id_4011897a_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RefreshToast.vue?vue&type=template&id=4011897a&ts=true */ "./resources/assets/js/views/activity/bulk-publish/RefreshToast.vue?vue&type=template&id=4011897a&ts=true"); /* harmony import */ var _RefreshToast_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RefreshToast.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/views/activity/bulk-publish/RefreshToast.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RefreshToast_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RefreshToast_vue_vue_type_template_id_4011897a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/bulk-publish/RefreshToast.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RefreshToast_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RefreshToast_vue_vue_type_template_id_4011897a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/bulk-publish/RefreshToast.vue"]]) /* hot reload */ if (false) {} @@ -55951,13 +55952,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ValidationErrors_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ValidationErrors_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ValidationErrors_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ValidationErrors_vue_vue_type_template_id_2575d3b2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/bulk-publish/ValidationErrors.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ValidationErrors_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ValidationErrors_vue_vue_type_template_id_2575d3b2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/bulk-publish/ValidationErrors.vue"]]) /* hot reload */ if (false) {} @@ -55982,13 +55983,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ActivityDate_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ActivityDate_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityDate_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityDate_vue_vue_type_template_id_0138ea88_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/ActivityDate.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityDate_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityDate_vue_vue_type_template_id_0138ea88_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/ActivityDate.vue"]]) /* hot reload */ if (false) {} @@ -56013,13 +56014,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _Conditions_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _Conditions_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Conditions_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Conditions_vue_vue_type_template_id_bafb25ba_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Conditions.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Conditions_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Conditions_vue_vue_type_template_id_bafb25ba_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Conditions.vue"]]) /* hot reload */ if (false) {} @@ -56042,13 +56043,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _ContactInfo_vue_vue_type_template_id_29a7d313_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ContactInfo.vue?vue&type=template&id=29a7d313&ts=true */ "./resources/assets/js/views/activity/elements/ContactInfo.vue?vue&type=template&id=29a7d313&ts=true"); /* harmony import */ var _ContactInfo_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ContactInfo.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/elements/ContactInfo.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ContactInfo_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ContactInfo_vue_vue_type_template_id_29a7d313_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/ContactInfo.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ContactInfo_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ContactInfo_vue_vue_type_template_id_29a7d313_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/ContactInfo.vue"]]) /* hot reload */ if (false) {} @@ -56071,13 +56072,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Description_vue_vue_type_template_id_c7d799be_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Description.vue?vue&type=template&id=c7d799be&ts=true */ "./resources/assets/js/views/activity/elements/Description.vue?vue&type=template&id=c7d799be&ts=true"); /* harmony import */ var _Description_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Description.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/elements/Description.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Description_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Description_vue_vue_type_template_id_c7d799be_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Description.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Description_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Description_vue_vue_type_template_id_c7d799be_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Description.vue"]]) /* hot reload */ if (false) {} @@ -56100,13 +56101,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _HumanitarianScope_vue_vue_type_template_id_cdfb7468_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./HumanitarianScope.vue?vue&type=template&id=cdfb7468&ts=true */ "./resources/assets/js/views/activity/elements/HumanitarianScope.vue?vue&type=template&id=cdfb7468&ts=true"); /* harmony import */ var _HumanitarianScope_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./HumanitarianScope.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/views/activity/elements/HumanitarianScope.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_HumanitarianScope_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_HumanitarianScope_vue_vue_type_template_id_cdfb7468_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/HumanitarianScope.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_HumanitarianScope_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_HumanitarianScope_vue_vue_type_template_id_cdfb7468_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/HumanitarianScope.vue"]]) /* hot reload */ if (false) {} @@ -56129,13 +56130,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _IatiIdentifier_vue_vue_type_template_id_5261affe_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./IatiIdentifier.vue?vue&type=template&id=5261affe&ts=true */ "./resources/assets/js/views/activity/elements/IatiIdentifier.vue?vue&type=template&id=5261affe&ts=true"); /* harmony import */ var _IatiIdentifier_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./IatiIdentifier.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/elements/IatiIdentifier.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_IatiIdentifier_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IatiIdentifier_vue_vue_type_template_id_5261affe_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/IatiIdentifier.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_IatiIdentifier_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IatiIdentifier_vue_vue_type_template_id_5261affe_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/IatiIdentifier.vue"]]) /* hot reload */ if (false) {} @@ -56158,13 +56159,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _LegacyData_vue_vue_type_template_id_cb3e4804_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./LegacyData.vue?vue&type=template&id=cb3e4804&ts=true */ "./resources/assets/js/views/activity/elements/LegacyData.vue?vue&type=template&id=cb3e4804&ts=true"); /* harmony import */ var _LegacyData_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./LegacyData.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/elements/LegacyData.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_LegacyData_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_LegacyData_vue_vue_type_template_id_cb3e4804_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/LegacyData.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_LegacyData_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_LegacyData_vue_vue_type_template_id_cb3e4804_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/LegacyData.vue"]]) /* hot reload */ if (false) {} @@ -56187,13 +56188,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Location_vue_vue_type_template_id_12c2e860_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Location.vue?vue&type=template&id=12c2e860&ts=true */ "./resources/assets/js/views/activity/elements/Location.vue?vue&type=template&id=12c2e860&ts=true"); /* harmony import */ var _Location_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Location.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/elements/Location.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Location_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Location_vue_vue_type_template_id_12c2e860_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Location.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Location_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Location_vue_vue_type_template_id_12c2e860_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Location.vue"]]) /* hot reload */ if (false) {} @@ -56216,13 +56217,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _OtherIdentifier_vue_vue_type_template_id_78b64404_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./OtherIdentifier.vue?vue&type=template&id=78b64404&ts=true */ "./resources/assets/js/views/activity/elements/OtherIdentifier.vue?vue&type=template&id=78b64404&ts=true"); /* harmony import */ var _OtherIdentifier_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./OtherIdentifier.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/elements/OtherIdentifier.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_OtherIdentifier_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OtherIdentifier_vue_vue_type_template_id_78b64404_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/OtherIdentifier.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_OtherIdentifier_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OtherIdentifier_vue_vue_type_template_id_78b64404_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/OtherIdentifier.vue"]]) /* hot reload */ if (false) {} @@ -56245,13 +56246,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _ParticipatingOrg_vue_vue_type_template_id_7d4dab74_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ParticipatingOrg.vue?vue&type=template&id=7d4dab74&ts=true */ "./resources/assets/js/views/activity/elements/ParticipatingOrg.vue?vue&type=template&id=7d4dab74&ts=true"); /* harmony import */ var _ParticipatingOrg_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ParticipatingOrg.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/elements/ParticipatingOrg.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ParticipatingOrg_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ParticipatingOrg_vue_vue_type_template_id_7d4dab74_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/ParticipatingOrg.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ParticipatingOrg_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ParticipatingOrg_vue_vue_type_template_id_7d4dab74_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/ParticipatingOrg.vue"]]) /* hot reload */ if (false) {} @@ -56276,13 +56277,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _PlannedDisbursement_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _PlannedDisbursement_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PlannedDisbursement_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PlannedDisbursement_vue_vue_type_template_id_0172c2ac_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/PlannedDisbursement.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PlannedDisbursement_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PlannedDisbursement_vue_vue_type_template_id_0172c2ac_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/PlannedDisbursement.vue"]]) /* hot reload */ if (false) {} @@ -56307,13 +56308,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _PolicyMarker_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _PolicyMarker_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PolicyMarker_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PolicyMarker_vue_vue_type_template_id_bd988892_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/PolicyMarker.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PolicyMarker_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PolicyMarker_vue_vue_type_template_id_bd988892_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/PolicyMarker.vue"]]) /* hot reload */ if (false) {} @@ -56336,13 +56337,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _RecipientCountry_vue_vue_type_template_id_7f18be30_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RecipientCountry.vue?vue&type=template&id=7f18be30&ts=true */ "./resources/assets/js/views/activity/elements/RecipientCountry.vue?vue&type=template&id=7f18be30&ts=true"); /* harmony import */ var _RecipientCountry_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RecipientCountry.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/elements/RecipientCountry.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RecipientCountry_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RecipientCountry_vue_vue_type_template_id_7f18be30_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/RecipientCountry.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RecipientCountry_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RecipientCountry_vue_vue_type_template_id_7f18be30_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/RecipientCountry.vue"]]) /* hot reload */ if (false) {} @@ -56365,13 +56366,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _RecipientRegion_vue_vue_type_template_id_ebd662dc_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RecipientRegion.vue?vue&type=template&id=ebd662dc&ts=true */ "./resources/assets/js/views/activity/elements/RecipientRegion.vue?vue&type=template&id=ebd662dc&ts=true"); /* harmony import */ var _RecipientRegion_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RecipientRegion.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/views/activity/elements/RecipientRegion.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RecipientRegion_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RecipientRegion_vue_vue_type_template_id_ebd662dc_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/RecipientRegion.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RecipientRegion_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RecipientRegion_vue_vue_type_template_id_ebd662dc_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/RecipientRegion.vue"]]) /* hot reload */ if (false) {} @@ -56396,13 +56397,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _RelatedActivity_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _RelatedActivity_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RelatedActivity_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RelatedActivity_vue_vue_type_template_id_2ca04c02_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/RelatedActivity.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RelatedActivity_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RelatedActivity_vue_vue_type_template_id_2ca04c02_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/RelatedActivity.vue"]]) /* hot reload */ if (false) {} @@ -56425,13 +56426,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _ReportingOrganization_vue_vue_type_template_id_438b0ae6_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ReportingOrganization.vue?vue&type=template&id=438b0ae6&ts=true */ "./resources/assets/js/views/activity/elements/ReportingOrganization.vue?vue&type=template&id=438b0ae6&ts=true"); /* harmony import */ var _ReportingOrganization_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ReportingOrganization.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/views/activity/elements/ReportingOrganization.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ReportingOrganization_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ReportingOrganization_vue_vue_type_template_id_438b0ae6_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/ReportingOrganization.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ReportingOrganization_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ReportingOrganization_vue_vue_type_template_id_438b0ae6_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/ReportingOrganization.vue"]]) /* hot reload */ if (false) {} @@ -56456,13 +56457,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _Result_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _Result_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Result_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Result_vue_vue_type_template_id_277cb4f0_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Result.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Result_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Result_vue_vue_type_template_id_277cb4f0_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Result.vue"]]) /* hot reload */ if (false) {} @@ -56485,13 +56486,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Sector_vue_vue_type_template_id_32946851_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Sector.vue?vue&type=template&id=32946851&ts=true */ "./resources/assets/js/views/activity/elements/Sector.vue?vue&type=template&id=32946851&ts=true"); /* harmony import */ var _Sector_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Sector.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/elements/Sector.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Sector_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Sector_vue_vue_type_template_id_32946851_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Sector.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Sector_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Sector_vue_vue_type_template_id_32946851_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Sector.vue"]]) /* hot reload */ if (false) {} @@ -56516,13 +56517,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _Tag_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _Tag_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Tag_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Tag_vue_vue_type_template_id_01196682_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Tag.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Tag_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Tag_vue_vue_type_template_id_01196682_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Tag.vue"]]) /* hot reload */ if (false) {} @@ -56545,13 +56546,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Title_vue_vue_type_template_id_474a713d_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Title.vue?vue&type=template&id=474a713d&ts=true */ "./resources/assets/js/views/activity/elements/Title.vue?vue&type=template&id=474a713d&ts=true"); /* harmony import */ var _Title_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Title.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/elements/Title.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Title_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Title_vue_vue_type_template_id_474a713d_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Title.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Title_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Title_vue_vue_type_template_id_474a713d_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Title.vue"]]) /* hot reload */ if (false) {} @@ -56576,13 +56577,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _Transactions_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _Transactions_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Transactions_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Transactions_vue_vue_type_template_id_2b8aff00_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Transactions.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Transactions_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Transactions_vue_vue_type_template_id_2b8aff00_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/elements/Transactions.vue"]]) /* hot reload */ if (false) {} @@ -56607,13 +56608,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _IndicatorDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _IndicatorDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_IndicatorDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IndicatorDetail_vue_vue_type_template_id_5ff17772_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/IndicatorDetail.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_IndicatorDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IndicatorDetail_vue_vue_type_template_id_5ff17772_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/IndicatorDetail.vue"]]) /* hot reload */ if (false) {} @@ -56638,13 +56639,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _IndicatorList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _IndicatorList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_IndicatorList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IndicatorList_vue_vue_type_template_id_6f78cf7f_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/IndicatorList.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_IndicatorList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IndicatorList_vue_vue_type_template_id_6f78cf7f_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/IndicatorList.vue"]]) /* hot reload */ if (false) {} @@ -56667,13 +56668,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _AggregationStatus_vue_vue_type_template_id_dd763e4c_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AggregationStatus.vue?vue&type=template&id=dd763e4c&ts=true */ "./resources/assets/js/views/activity/indicators/elements/AggregationStatus.vue?vue&type=template&id=dd763e4c&ts=true"); /* harmony import */ var _AggregationStatus_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AggregationStatus.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/indicators/elements/AggregationStatus.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AggregationStatus_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AggregationStatus_vue_vue_type_template_id_dd763e4c_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/AggregationStatus.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AggregationStatus_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AggregationStatus_vue_vue_type_template_id_dd763e4c_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/AggregationStatus.vue"]]) /* hot reload */ if (false) {} @@ -56696,13 +56697,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Baseline_vue_vue_type_template_id_6aa6d062_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Baseline.vue?vue&type=template&id=6aa6d062&ts=true */ "./resources/assets/js/views/activity/indicators/elements/Baseline.vue?vue&type=template&id=6aa6d062&ts=true"); /* harmony import */ var _Baseline_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Baseline.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/indicators/elements/Baseline.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Baseline_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Baseline_vue_vue_type_template_id_6aa6d062_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/Baseline.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Baseline_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Baseline_vue_vue_type_template_id_6aa6d062_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/Baseline.vue"]]) /* hot reload */ if (false) {} @@ -56725,13 +56726,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Description_vue_vue_type_template_id_775b61e2_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Description.vue?vue&type=template&id=775b61e2&ts=true */ "./resources/assets/js/views/activity/indicators/elements/Description.vue?vue&type=template&id=775b61e2&ts=true"); /* harmony import */ var _Description_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Description.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/indicators/elements/Description.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Description_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Description_vue_vue_type_template_id_775b61e2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/Description.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Description_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Description_vue_vue_type_template_id_775b61e2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/Description.vue"]]) /* hot reload */ if (false) {} @@ -56756,13 +56757,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _DocumentLink_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _DocumentLink_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DocumentLink_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DocumentLink_vue_vue_type_template_id_3cb2603f_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/DocumentLink.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DocumentLink_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DocumentLink_vue_vue_type_template_id_3cb2603f_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/DocumentLink.vue"]]) /* hot reload */ if (false) {} @@ -56785,13 +56786,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _IndicatorAscending_vue_vue_type_template_id_f7ed6ada_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./IndicatorAscending.vue?vue&type=template&id=f7ed6ada&ts=true */ "./resources/assets/js/views/activity/indicators/elements/IndicatorAscending.vue?vue&type=template&id=f7ed6ada&ts=true"); /* harmony import */ var _IndicatorAscending_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./IndicatorAscending.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/indicators/elements/IndicatorAscending.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_IndicatorAscending_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IndicatorAscending_vue_vue_type_template_id_f7ed6ada_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/IndicatorAscending.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_IndicatorAscending_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IndicatorAscending_vue_vue_type_template_id_f7ed6ada_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/IndicatorAscending.vue"]]) /* hot reload */ if (false) {} @@ -56814,13 +56815,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Measure_vue_vue_type_template_id_7a64d944_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Measure.vue?vue&type=template&id=7a64d944&ts=true */ "./resources/assets/js/views/activity/indicators/elements/Measure.vue?vue&type=template&id=7a64d944&ts=true"); /* harmony import */ var _Measure_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Measure.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/indicators/elements/Measure.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Measure_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Measure_vue_vue_type_template_id_7a64d944_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/Measure.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Measure_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Measure_vue_vue_type_template_id_7a64d944_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/Measure.vue"]]) /* hot reload */ if (false) {} @@ -56845,13 +56846,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _Period_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _Period_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Period_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Period_vue_vue_type_template_id_5816846a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/Period.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Period_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Period_vue_vue_type_template_id_5816846a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/Period.vue"]]) /* hot reload */ if (false) {} @@ -56874,13 +56875,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Reference_vue_vue_type_template_id_485a4d9e_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Reference.vue?vue&type=template&id=485a4d9e&ts=true */ "./resources/assets/js/views/activity/indicators/elements/Reference.vue?vue&type=template&id=485a4d9e&ts=true"); /* harmony import */ var _Reference_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Reference.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/indicators/elements/Reference.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Reference_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Reference_vue_vue_type_template_id_485a4d9e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/Reference.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Reference_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Reference_vue_vue_type_template_id_485a4d9e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/Reference.vue"]]) /* hot reload */ if (false) {} @@ -56903,13 +56904,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Title_vue_vue_type_template_id_8f6ff684_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Title.vue?vue&type=template&id=8f6ff684&ts=true */ "./resources/assets/js/views/activity/indicators/elements/Title.vue?vue&type=template&id=8f6ff684&ts=true"); /* harmony import */ var _Title_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Title.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/indicators/elements/Title.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Title_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Title_vue_vue_type_template_id_8f6ff684_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/Title.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Title_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Title_vue_vue_type_template_id_8f6ff684_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/indicators/elements/Title.vue"]]) /* hot reload */ if (false) {} @@ -56933,7 +56934,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _ActivitiesElements_vue_vue_type_template_id_5a40fcf4_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ActivitiesElements.vue?vue&type=template&id=5a40fcf4&ts=true */ "./resources/assets/js/views/activity/partials/ActivitiesElements.vue?vue&type=template&id=5a40fcf4&ts=true"); /* harmony import */ var _ActivitiesElements_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ActivitiesElements.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/views/activity/partials/ActivitiesElements.vue?vue&type=script&setup=true&lang=ts"); /* harmony import */ var _ActivitiesElements_vue_vue_type_style_index_0_id_5a40fcf4_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ActivitiesElements.vue?vue&type=style&index=0&id=5a40fcf4&lang=scss */ "./resources/assets/js/views/activity/partials/ActivitiesElements.vue?vue&type=style&index=0&id=5a40fcf4&lang=scss"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -56941,7 +56942,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ActivitiesElements_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivitiesElements_vue_vue_type_template_id_5a40fcf4_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/ActivitiesElements.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ActivitiesElements_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivitiesElements_vue_vue_type_template_id_5a40fcf4_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/ActivitiesElements.vue"]]) /* hot reload */ if (false) {} @@ -56966,13 +56967,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ActivityElement_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ActivityElement_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityElement_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityElement_vue_vue_type_template_id_7f5d60a6_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/ActivityElement.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityElement_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityElement_vue_vue_type_template_id_7f5d60a6_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/ActivityElement.vue"]]) /* hot reload */ if (false) {} @@ -56997,13 +56998,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _AddActivityButton_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _AddActivityButton_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AddActivityButton_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AddActivityButton_vue_vue_type_template_id_050e173c_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/AddActivityButton.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AddActivityButton_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AddActivityButton_vue_vue_type_template_id_050e173c_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/AddActivityButton.vue"]]) /* hot reload */ if (false) {} @@ -57029,7 +57030,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _DownloadActivityButton_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _DownloadActivityButton_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _DownloadActivityButton_vue_vue_type_style_index_0_id_661e6f8e_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./DownloadActivityButton.vue?vue&type=style&index=0&id=661e6f8e&scoped=true&lang=scss */ "./resources/assets/js/views/activity/partials/DownloadActivityButton.vue?vue&type=style&index=0&id=661e6f8e&scoped=true&lang=scss"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -57037,7 +57038,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_DownloadActivityButton_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DownloadActivityButton_vue_vue_type_template_id_661e6f8e_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-661e6f8e"],['__file',"resources/assets/js/views/activity/partials/DownloadActivityButton.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_DownloadActivityButton_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DownloadActivityButton_vue_vue_type_template_id_661e6f8e_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-661e6f8e"],['__file',"resources/assets/js/views/activity/partials/DownloadActivityButton.vue"]]) /* hot reload */ if (false) {} @@ -57062,13 +57063,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ElementsNote_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ElementsNote_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ElementsNote_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ElementsNote_vue_vue_type_template_id_5bc041f9_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/ElementsNote.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ElementsNote_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ElementsNote_vue_vue_type_template_id_5bc041f9_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/ElementsNote.vue"]]) /* hot reload */ if (false) {} @@ -57093,13 +57094,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _EmptyActivity_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _EmptyActivity_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_EmptyActivity_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_EmptyActivity_vue_vue_type_template_id_9aef9688_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/EmptyActivity.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_EmptyActivity_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_EmptyActivity_vue_vue_type_template_id_9aef9688_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/EmptyActivity.vue"]]) /* hot reload */ if (false) {} @@ -57124,13 +57125,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _PageTitle_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _PageTitle_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PageTitle_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PageTitle_vue_vue_type_template_id_7589e86e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/PageTitle.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PageTitle_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PageTitle_vue_vue_type_template_id_7589e86e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/PageTitle.vue"]]) /* hot reload */ if (false) {} @@ -57153,13 +57154,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _SidebarHelpBlock_vue_vue_type_template_id_fef26a80_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SidebarHelpBlock.vue?vue&type=template&id=fef26a80&ts=true */ "./resources/assets/js/views/activity/partials/SidebarHelpBlock.vue?vue&type=template&id=fef26a80&ts=true"); /* harmony import */ var _SidebarHelpBlock_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SidebarHelpBlock.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/partials/SidebarHelpBlock.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_SidebarHelpBlock_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SidebarHelpBlock_vue_vue_type_template_id_fef26a80_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/SidebarHelpBlock.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_SidebarHelpBlock_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SidebarHelpBlock_vue_vue_type_template_id_fef26a80_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/partials/SidebarHelpBlock.vue"]]) /* hot reload */ if (false) {} @@ -57185,7 +57186,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _TableLayout_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _TableLayout_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _TableLayout_vue_vue_type_style_index_0_id_5d84a1d8_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./TableLayout.vue?vue&type=style&index=0&id=5d84a1d8&scoped=true&lang=css */ "./resources/assets/js/views/activity/partials/TableLayout.vue?vue&type=style&index=0&id=5d84a1d8&scoped=true&lang=css"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -57193,7 +57194,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_TableLayout_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TableLayout_vue_vue_type_template_id_5d84a1d8_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-5d84a1d8"],['__file',"resources/assets/js/views/activity/partials/TableLayout.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_TableLayout_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TableLayout_vue_vue_type_template_id_5d84a1d8_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-5d84a1d8"],['__file',"resources/assets/js/views/activity/partials/TableLayout.vue"]]) /* hot reload */ if (false) {} @@ -57218,13 +57219,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _PeriodsDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _PeriodsDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PeriodsDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PeriodsDetail_vue_vue_type_template_id_72e3b599_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/periods/PeriodsDetail.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PeriodsDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PeriodsDetail_vue_vue_type_template_id_72e3b599_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/periods/PeriodsDetail.vue"]]) /* hot reload */ if (false) {} @@ -57249,13 +57250,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _PeriodsList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _PeriodsList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PeriodsList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PeriodsList_vue_vue_type_template_id_d33b2934_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/periods/PeriodsList.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PeriodsList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PeriodsList_vue_vue_type_template_id_d33b2934_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/periods/PeriodsList.vue"]]) /* hot reload */ if (false) {} @@ -57278,13 +57279,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _ActualValue_vue_vue_type_template_id_79a88fc5_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ActualValue.vue?vue&type=template&id=79a88fc5&ts=true */ "./resources/assets/js/views/activity/periods/elements/ActualValue.vue?vue&type=template&id=79a88fc5&ts=true"); /* harmony import */ var _ActualValue_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ActualValue.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/periods/elements/ActualValue.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActualValue_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActualValue_vue_vue_type_template_id_79a88fc5_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/periods/elements/ActualValue.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActualValue_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActualValue_vue_vue_type_template_id_79a88fc5_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/periods/elements/ActualValue.vue"]]) /* hot reload */ if (false) {} @@ -57307,13 +57308,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _TargetValue_vue_vue_type_template_id_0e571b22_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TargetValue.vue?vue&type=template&id=0e571b22&ts=true */ "./resources/assets/js/views/activity/periods/elements/TargetValue.vue?vue&type=template&id=0e571b22&ts=true"); /* harmony import */ var _TargetValue_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TargetValue.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/periods/elements/TargetValue.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TargetValue_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TargetValue_vue_vue_type_template_id_0e571b22_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/periods/elements/TargetValue.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TargetValue_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TargetValue_vue_vue_type_template_id_0e571b22_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/periods/elements/TargetValue.vue"]]) /* hot reload */ if (false) {} @@ -57338,13 +57339,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ResultDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ResultDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ResultDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ResultDetail_vue_vue_type_template_id_6c20f178_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/ResultDetail.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ResultDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ResultDetail_vue_vue_type_template_id_6c20f178_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/ResultDetail.vue"]]) /* hot reload */ if (false) {} @@ -57369,13 +57370,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ResultElement_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ResultElement_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ResultElement_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ResultElement_vue_vue_type_template_id_18fe4219_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/ResultElement.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ResultElement_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ResultElement_vue_vue_type_template_id_18fe4219_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/ResultElement.vue"]]) /* hot reload */ if (false) {} @@ -57400,13 +57401,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ResultList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ResultList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ResultList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ResultList_vue_vue_type_template_id_aa06a85e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/ResultList.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ResultList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ResultList_vue_vue_type_template_id_aa06a85e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/ResultList.vue"]]) /* hot reload */ if (false) {} @@ -57429,13 +57430,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _DocumentLink_vue_vue_type_template_id_0e2e8307_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DocumentLink.vue?vue&type=template&id=0e2e8307&ts=true */ "./resources/assets/js/views/activity/results/elements/DocumentLink.vue?vue&type=template&id=0e2e8307&ts=true"); /* harmony import */ var _DocumentLink_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DocumentLink.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/results/elements/DocumentLink.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DocumentLink_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DocumentLink_vue_vue_type_template_id_0e2e8307_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/elements/DocumentLink.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DocumentLink_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DocumentLink_vue_vue_type_template_id_0e2e8307_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/elements/DocumentLink.vue"]]) /* hot reload */ if (false) {} @@ -57460,13 +57461,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _Indicator_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _Indicator_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Indicator_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Indicator_vue_vue_type_template_id_4c2e682d_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/elements/Indicator.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Indicator_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Indicator_vue_vue_type_template_id_4c2e682d_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/elements/Indicator.vue"]]) /* hot reload */ if (false) {} @@ -57489,13 +57490,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Reference_vue_vue_type_template_id_81c2292e_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Reference.vue?vue&type=template&id=81c2292e&ts=true */ "./resources/assets/js/views/activity/results/elements/Reference.vue?vue&type=template&id=81c2292e&ts=true"); /* harmony import */ var _Reference_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Reference.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/results/elements/Reference.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Reference_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Reference_vue_vue_type_template_id_81c2292e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/elements/Reference.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Reference_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Reference_vue_vue_type_template_id_81c2292e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/elements/Reference.vue"]]) /* hot reload */ if (false) {} @@ -57518,13 +57519,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _ResultType_vue_vue_type_template_id_3c21c46e_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ResultType.vue?vue&type=template&id=3c21c46e&ts=true */ "./resources/assets/js/views/activity/results/elements/ResultType.vue?vue&type=template&id=3c21c46e&ts=true"); /* harmony import */ var _ResultType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ResultType.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/results/elements/ResultType.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ResultType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ResultType_vue_vue_type_template_id_3c21c46e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/elements/ResultType.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ResultType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ResultType_vue_vue_type_template_id_3c21c46e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/elements/ResultType.vue"]]) /* hot reload */ if (false) {} @@ -57547,13 +57548,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _TitleDescription_vue_vue_type_template_id_d12fed54_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TitleDescription.vue?vue&type=template&id=d12fed54&ts=true */ "./resources/assets/js/views/activity/results/elements/TitleDescription.vue?vue&type=template&id=d12fed54&ts=true"); /* harmony import */ var _TitleDescription_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TitleDescription.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/results/elements/TitleDescription.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TitleDescription_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TitleDescription_vue_vue_type_template_id_d12fed54_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/elements/TitleDescription.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TitleDescription_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TitleDescription_vue_vue_type_template_id_d12fed54_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/results/elements/TitleDescription.vue"]]) /* hot reload */ if (false) {} @@ -57578,13 +57579,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _TransactionDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _TransactionDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TransactionDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TransactionDetail_vue_vue_type_template_id_07c06c12_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/TransactionDetail.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TransactionDetail_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TransactionDetail_vue_vue_type_template_id_07c06c12_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/TransactionDetail.vue"]]) /* hot reload */ if (false) {} @@ -57609,13 +57610,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _TransactionElement_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _TransactionElement_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TransactionElement_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TransactionElement_vue_vue_type_template_id_d56c11ea_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/TransactionElement.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TransactionElement_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TransactionElement_vue_vue_type_template_id_d56c11ea_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/TransactionElement.vue"]]) /* hot reload */ if (false) {} @@ -57640,13 +57641,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _TransactionList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _TransactionList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TransactionList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TransactionList_vue_vue_type_template_id_cc8727c2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/TransactionList.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TransactionList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TransactionList_vue_vue_type_template_id_cc8727c2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/TransactionList.vue"]]) /* hot reload */ if (false) {} @@ -57669,13 +57670,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _AidType_vue_vue_type_template_id_df96c96a_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AidType.vue?vue&type=template&id=df96c96a&ts=true */ "./resources/assets/js/views/activity/transactions/elements/AidType.vue?vue&type=template&id=df96c96a&ts=true"); /* harmony import */ var _AidType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AidType.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/transactions/elements/AidType.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AidType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AidType_vue_vue_type_template_id_df96c96a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/AidType.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AidType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AidType_vue_vue_type_template_id_df96c96a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/AidType.vue"]]) /* hot reload */ if (false) {} @@ -57698,13 +57699,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Description_vue_vue_type_template_id_22a8a731_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Description.vue?vue&type=template&id=22a8a731&ts=true */ "./resources/assets/js/views/activity/transactions/elements/Description.vue?vue&type=template&id=22a8a731&ts=true"); /* harmony import */ var _Description_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Description.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/transactions/elements/Description.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Description_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Description_vue_vue_type_template_id_22a8a731_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/Description.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Description_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Description_vue_vue_type_template_id_22a8a731_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/Description.vue"]]) /* hot reload */ if (false) {} @@ -57727,13 +57728,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _DisbursementChannel_vue_vue_type_template_id_c7853052_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DisbursementChannel.vue?vue&type=template&id=c7853052&ts=true */ "./resources/assets/js/views/activity/transactions/elements/DisbursementChannel.vue?vue&type=template&id=c7853052&ts=true"); /* harmony import */ var _DisbursementChannel_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DisbursementChannel.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/transactions/elements/DisbursementChannel.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DisbursementChannel_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DisbursementChannel_vue_vue_type_template_id_c7853052_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/DisbursementChannel.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DisbursementChannel_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DisbursementChannel_vue_vue_type_template_id_c7853052_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/DisbursementChannel.vue"]]) /* hot reload */ if (false) {} @@ -57756,13 +57757,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _FinanceType_vue_vue_type_template_id_e5c7c52e_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FinanceType.vue?vue&type=template&id=e5c7c52e&ts=true */ "./resources/assets/js/views/activity/transactions/elements/FinanceType.vue?vue&type=template&id=e5c7c52e&ts=true"); /* harmony import */ var _FinanceType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./FinanceType.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/transactions/elements/FinanceType.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_FinanceType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_FinanceType_vue_vue_type_template_id_e5c7c52e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/FinanceType.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_FinanceType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_FinanceType_vue_vue_type_template_id_e5c7c52e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/FinanceType.vue"]]) /* hot reload */ if (false) {} @@ -57785,13 +57786,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _FlowType_vue_vue_type_template_id_0e406aa3_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FlowType.vue?vue&type=template&id=0e406aa3&ts=true */ "./resources/assets/js/views/activity/transactions/elements/FlowType.vue?vue&type=template&id=0e406aa3&ts=true"); /* harmony import */ var _FlowType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./FlowType.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/transactions/elements/FlowType.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_FlowType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_FlowType_vue_vue_type_template_id_0e406aa3_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/FlowType.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_FlowType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_FlowType_vue_vue_type_template_id_0e406aa3_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/FlowType.vue"]]) /* hot reload */ if (false) {} @@ -57814,13 +57815,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _ProviderOrganization_vue_vue_type_template_id_35ef685f_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ProviderOrganization.vue?vue&type=template&id=35ef685f&ts=true */ "./resources/assets/js/views/activity/transactions/elements/ProviderOrganization.vue?vue&type=template&id=35ef685f&ts=true"); /* harmony import */ var _ProviderOrganization_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ProviderOrganization.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/transactions/elements/ProviderOrganization.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ProviderOrganization_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ProviderOrganization_vue_vue_type_template_id_35ef685f_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/ProviderOrganization.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ProviderOrganization_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ProviderOrganization_vue_vue_type_template_id_35ef685f_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/ProviderOrganization.vue"]]) /* hot reload */ if (false) {} @@ -57843,13 +57844,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _ReceiverOrganization_vue_vue_type_template_id_8a08df46_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ReceiverOrganization.vue?vue&type=template&id=8a08df46&ts=true */ "./resources/assets/js/views/activity/transactions/elements/ReceiverOrganization.vue?vue&type=template&id=8a08df46&ts=true"); /* harmony import */ var _ReceiverOrganization_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ReceiverOrganization.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/transactions/elements/ReceiverOrganization.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ReceiverOrganization_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ReceiverOrganization_vue_vue_type_template_id_8a08df46_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/ReceiverOrganization.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ReceiverOrganization_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ReceiverOrganization_vue_vue_type_template_id_8a08df46_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/ReceiverOrganization.vue"]]) /* hot reload */ if (false) {} @@ -57872,13 +57873,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _RecipientCountry_vue_vue_type_template_id_43d536d8_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RecipientCountry.vue?vue&type=template&id=43d536d8&ts=true */ "./resources/assets/js/views/activity/transactions/elements/RecipientCountry.vue?vue&type=template&id=43d536d8&ts=true"); /* harmony import */ var _RecipientCountry_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RecipientCountry.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/transactions/elements/RecipientCountry.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RecipientCountry_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RecipientCountry_vue_vue_type_template_id_43d536d8_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/RecipientCountry.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RecipientCountry_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RecipientCountry_vue_vue_type_template_id_43d536d8_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/RecipientCountry.vue"]]) /* hot reload */ if (false) {} @@ -57901,13 +57902,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _RecipientRegion_vue_vue_type_template_id_0a30baa2_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RecipientRegion.vue?vue&type=template&id=0a30baa2&ts=true */ "./resources/assets/js/views/activity/transactions/elements/RecipientRegion.vue?vue&type=template&id=0a30baa2&ts=true"); /* harmony import */ var _RecipientRegion_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RecipientRegion.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/transactions/elements/RecipientRegion.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RecipientRegion_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RecipientRegion_vue_vue_type_template_id_0a30baa2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/RecipientRegion.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RecipientRegion_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RecipientRegion_vue_vue_type_template_id_0a30baa2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/RecipientRegion.vue"]]) /* hot reload */ if (false) {} @@ -57930,13 +57931,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _Sector_vue_vue_type_template_id_4eebaa41_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Sector.vue?vue&type=template&id=4eebaa41&ts=true */ "./resources/assets/js/views/activity/transactions/elements/Sector.vue?vue&type=template&id=4eebaa41&ts=true"); /* harmony import */ var _Sector_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Sector.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/transactions/elements/Sector.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Sector_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Sector_vue_vue_type_template_id_4eebaa41_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/Sector.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Sector_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Sector_vue_vue_type_template_id_4eebaa41_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/Sector.vue"]]) /* hot reload */ if (false) {} @@ -57959,13 +57960,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _TiedStatus_vue_vue_type_template_id_57089841_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TiedStatus.vue?vue&type=template&id=57089841&ts=true */ "./resources/assets/js/views/activity/transactions/elements/TiedStatus.vue?vue&type=template&id=57089841&ts=true"); /* harmony import */ var _TiedStatus_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TiedStatus.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/transactions/elements/TiedStatus.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TiedStatus_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TiedStatus_vue_vue_type_template_id_57089841_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/TiedStatus.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TiedStatus_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TiedStatus_vue_vue_type_template_id_57089841_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/TiedStatus.vue"]]) /* hot reload */ if (false) {} @@ -57990,13 +57991,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _TransactionDate_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _TransactionDate_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TransactionDate_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TransactionDate_vue_vue_type_template_id_612fcc61_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/TransactionDate.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TransactionDate_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TransactionDate_vue_vue_type_template_id_612fcc61_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/TransactionDate.vue"]]) /* hot reload */ if (false) {} @@ -58019,13 +58020,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _TransactionType_vue_vue_type_template_id_63f67426_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TransactionType.vue?vue&type=template&id=63f67426&ts=true */ "./resources/assets/js/views/activity/transactions/elements/TransactionType.vue?vue&type=template&id=63f67426&ts=true"); /* harmony import */ var _TransactionType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TransactionType.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/activity/transactions/elements/TransactionType.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TransactionType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TransactionType_vue_vue_type_template_id_63f67426_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/TransactionType.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TransactionType_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TransactionType_vue_vue_type_template_id_63f67426_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/TransactionType.vue"]]) /* hot reload */ if (false) {} @@ -58050,13 +58051,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _Value_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _Value_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Value_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Value_vue_vue_type_template_id_16972834_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/Value.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Value_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Value_vue_vue_type_template_id_16972834_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/activity/transactions/elements/Value.vue"]]) /* hot reload */ if (false) {} @@ -58081,13 +58082,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _AuditListing_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _AuditListing_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AuditListing_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AuditListing_vue_vue_type_template_id_fb619f20_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/audit/AuditListing.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AuditListing_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AuditListing_vue_vue_type_template_id_fb619f20_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/audit/AuditListing.vue"]]) /* hot reload */ if (false) {} @@ -58112,13 +58113,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _DashboardGraph_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _DashboardGraph_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DashboardGraph_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DashboardGraph_vue_vue_type_template_id_32257f70_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/dashboard/DashboardGraph.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DashboardGraph_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DashboardGraph_vue_vue_type_template_id_32257f70_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/dashboard/DashboardGraph.vue"]]) /* hot reload */ if (false) {} @@ -58144,7 +58145,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _DashboardListSection_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _DashboardListSection_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _DashboardListSection_vue_vue_type_style_index_0_id_4f225d3e_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./DashboardListSection.vue?vue&type=style&index=0&id=4f225d3e&lang=scss */ "./resources/assets/js/views/dashboard/DashboardListSection.vue?vue&type=style&index=0&id=4f225d3e&lang=scss"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -58152,7 +58153,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_DashboardListSection_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DashboardListSection_vue_vue_type_template_id_4f225d3e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/dashboard/DashboardListSection.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_DashboardListSection_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DashboardListSection_vue_vue_type_template_id_4f225d3e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/dashboard/DashboardListSection.vue"]]) /* hot reload */ if (false) {} @@ -58177,13 +58178,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _DashboardPage_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _DashboardPage_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DashboardPage_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DashboardPage_vue_vue_type_template_id_e119c3f6_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/dashboard/DashboardPage.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DashboardPage_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DashboardPage_vue_vue_type_template_id_e119c3f6_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/dashboard/DashboardPage.vue"]]) /* hot reload */ if (false) {} @@ -58208,13 +58209,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _DashboardStatsSection_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _DashboardStatsSection_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DashboardStatsSection_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DashboardStatsSection_vue_vue_type_template_id_27c6fb3c_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/dashboard/DashboardStatsSection.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DashboardStatsSection_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DashboardStatsSection_vue_vue_type_template_id_27c6fb3c_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/dashboard/DashboardStatsSection.vue"]]) /* hot reload */ if (false) {} @@ -58239,13 +58240,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ActivityUpload_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ActivityUpload_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityUpload_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityUpload_vue_vue_type_template_id_0ed5fdd2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/import/ActivityUpload.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityUpload_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityUpload_vue_vue_type_template_id_0ed5fdd2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/import/ActivityUpload.vue"]]) /* hot reload */ if (false) {} @@ -58270,13 +58271,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ActivityXlsUpload_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ActivityXlsUpload_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityXlsUpload_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityXlsUpload_vue_vue_type_template_id_2807c08c_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/import/ActivityXlsUpload.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ActivityXlsUpload_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ActivityXlsUpload_vue_vue_type_template_id_2807c08c_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/import/ActivityXlsUpload.vue"]]) /* hot reload */ if (false) {} @@ -58302,7 +58303,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ImportList_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ImportList_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _ImportList_vue_vue_type_style_index_0_id_40d7870a_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ImportList.vue?vue&type=style&index=0&id=40d7870a&lang=scss&scoped=true */ "./resources/assets/js/views/import/ImportList.vue?vue&type=style&index=0&id=40d7870a&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -58310,7 +58311,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ImportList_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ImportList_vue_vue_type_template_id_40d7870a_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-40d7870a"],['__file',"resources/assets/js/views/import/ImportList.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ImportList_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ImportList_vue_vue_type_template_id_40d7870a_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-40d7870a"],['__file',"resources/assets/js/views/import/ImportList.vue"]]) /* hot reload */ if (false) {} @@ -58335,13 +58336,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ImportPlaceholder_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ImportPlaceholder_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ImportPlaceholder_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ImportPlaceholder_vue_vue_type_template_id_5d148d37_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/import/ImportPlaceholder.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ImportPlaceholder_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ImportPlaceholder_vue_vue_type_template_id_5d148d37_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/import/ImportPlaceholder.vue"]]) /* hot reload */ if (false) {} @@ -58365,7 +58366,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _ListElement_vue_vue_type_template_id_9a608432_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ListElement.vue?vue&type=template&id=9a608432&scoped=true&ts=true */ "./resources/assets/js/views/import/ListElement.vue?vue&type=template&id=9a608432&scoped=true&ts=true"); /* harmony import */ var _ListElement_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ListElement.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/views/import/ListElement.vue?vue&type=script&setup=true&lang=ts"); /* harmony import */ var _ListElement_vue_vue_type_style_index_0_id_9a608432_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ListElement.vue?vue&type=style&index=0&id=9a608432&scoped=true&lang=css */ "./resources/assets/js/views/import/ListElement.vue?vue&type=style&index=0&id=9a608432&scoped=true&lang=css"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -58373,7 +58374,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ListElement_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ListElement_vue_vue_type_template_id_9a608432_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-9a608432"],['__file',"resources/assets/js/views/import/ListElement.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ListElement_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ListElement_vue_vue_type_template_id_9a608432_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-9a608432"],['__file',"resources/assets/js/views/import/ListElement.vue"]]) /* hot reload */ if (false) {} @@ -58399,7 +58400,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _XlsList_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _XlsList_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _XlsList_vue_vue_type_style_index_0_id_5f5008b4_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./XlsList.vue?vue&type=style&index=0&id=5f5008b4&scoped=true&lang=css */ "./resources/assets/js/views/import/XlsList.vue?vue&type=style&index=0&id=5f5008b4&scoped=true&lang=css"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -58407,7 +58408,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_XlsList_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_XlsList_vue_vue_type_template_id_5f5008b4_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-5f5008b4"],['__file',"resources/assets/js/views/import/XlsList.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_XlsList_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_XlsList_vue_vue_type_template_id_5f5008b4_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-5f5008b4"],['__file',"resources/assets/js/views/import/XlsList.vue"]]) /* hot reload */ if (false) {} @@ -58433,7 +58434,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _OrganisationData_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _OrganisationData_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _OrganisationData_vue_vue_type_style_index_0_id_4ada5f36_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./OrganisationData.vue?vue&type=style&index=0&id=4ada5f36&lang=scss */ "./resources/assets/js/views/organisation/OrganisationData.vue?vue&type=style&index=0&id=4ada5f36&lang=scss"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -58441,7 +58442,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_OrganisationData_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OrganisationData_vue_vue_type_template_id_4ada5f36_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/OrganisationData.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_OrganisationData_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OrganisationData_vue_vue_type_template_id_4ada5f36_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/OrganisationData.vue"]]) /* hot reload */ if (false) {} @@ -58464,13 +58465,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _OrganisationElements_vue_vue_type_template_id_454ea803_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./OrganisationElements.vue?vue&type=template&id=454ea803&ts=true */ "./resources/assets/js/views/organisation/OrganisationElements.vue?vue&type=template&id=454ea803&ts=true"); /* harmony import */ var _OrganisationElements_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./OrganisationElements.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/views/organisation/OrganisationElements.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_OrganisationElements_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OrganisationElements_vue_vue_type_template_id_454ea803_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/OrganisationElements.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_OrganisationElements_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OrganisationElements_vue_vue_type_template_id_454ea803_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/OrganisationElements.vue"]]) /* hot reload */ if (false) {} @@ -58495,13 +58496,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _OrganisationElementsDetail_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _OrganisationElementsDetail_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_OrganisationElementsDetail_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OrganisationElementsDetail_vue_vue_type_template_id_2839e098_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/OrganisationElementsDetail.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_OrganisationElementsDetail_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OrganisationElementsDetail_vue_vue_type_template_id_2839e098_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/OrganisationElementsDetail.vue"]]) /* hot reload */ if (false) {} @@ -58526,13 +58527,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _DocumentLink_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _DocumentLink_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DocumentLink_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DocumentLink_vue_vue_type_template_id_ef6d312a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/DocumentLink.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_DocumentLink_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_DocumentLink_vue_vue_type_template_id_ef6d312a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/DocumentLink.vue"]]) /* hot reload */ if (false) {} @@ -58557,13 +58558,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _RecipientCountryBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _RecipientCountryBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RecipientCountryBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RecipientCountryBudget_vue_vue_type_template_id_cbe876d0_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/RecipientCountryBudget.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_RecipientCountryBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RecipientCountryBudget_vue_vue_type_template_id_cbe876d0_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/RecipientCountryBudget.vue"]]) /* hot reload */ if (false) {} @@ -58588,13 +58589,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ReportingOrgBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ReportingOrgBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ReportingOrgBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ReportingOrgBudget_vue_vue_type_template_id_2467d2f1_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/ReportingOrgBudget.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ReportingOrgBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ReportingOrgBudget_vue_vue_type_template_id_2467d2f1_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/ReportingOrgBudget.vue"]]) /* hot reload */ if (false) {} @@ -58617,13 +58618,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _ReportingOrganisation_vue_vue_type_template_id_6999aee2_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ReportingOrganisation.vue?vue&type=template&id=6999aee2&ts=true */ "./resources/assets/js/views/organisation/elements/ReportingOrganisation.vue?vue&type=template&id=6999aee2&ts=true"); /* harmony import */ var _ReportingOrganisation_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ReportingOrganisation.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/views/organisation/elements/ReportingOrganisation.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ReportingOrganisation_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ReportingOrganisation_vue_vue_type_template_id_6999aee2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/ReportingOrganisation.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ReportingOrganisation_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ReportingOrganisation_vue_vue_type_template_id_6999aee2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/ReportingOrganisation.vue"]]) /* hot reload */ if (false) {} @@ -58648,13 +58649,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ReportingRegionBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ReportingRegionBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ReportingRegionBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ReportingRegionBudget_vue_vue_type_template_id_85c9dc3e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/ReportingRegionBudget.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ReportingRegionBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ReportingRegionBudget_vue_vue_type_template_id_85c9dc3e_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/ReportingRegionBudget.vue"]]) /* hot reload */ if (false) {} @@ -58679,13 +58680,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _TotalBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _TotalBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TotalBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TotalBudget_vue_vue_type_template_id_d3c0d33a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/TotalBudget.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TotalBudget_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TotalBudget_vue_vue_type_template_id_d3c0d33a_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/TotalBudget.vue"]]) /* hot reload */ if (false) {} @@ -58710,13 +58711,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _TotalExpenditure_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _TotalExpenditure_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TotalExpenditure_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TotalExpenditure_vue_vue_type_template_id_4655f951_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/TotalExpenditure.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_TotalExpenditure_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TotalExpenditure_vue_vue_type_template_id_4655f951_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/organisation/elements/TotalExpenditure.vue"]]) /* hot reload */ if (false) {} @@ -58739,13 +58740,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _PasswordRecovery_vue_vue_type_template_id_70385da3_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PasswordRecovery.vue?vue&type=template&id=70385da3&ts=true */ "./resources/assets/js/views/reset/PasswordRecovery.vue?vue&type=template&id=70385da3&ts=true"); /* harmony import */ var _PasswordRecovery_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PasswordRecovery.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/views/reset/PasswordRecovery.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PasswordRecovery_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PasswordRecovery_vue_vue_type_template_id_70385da3_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/reset/PasswordRecovery.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PasswordRecovery_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PasswordRecovery_vue_vue_type_template_id_70385da3_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/reset/PasswordRecovery.vue"]]) /* hot reload */ if (false) {} @@ -58771,7 +58772,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ResetPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ResetPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _ResetPage_vue_vue_type_style_index_0_id_36b764bb_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ResetPage.vue?vue&type=style&index=0&id=36b764bb&lang=scss */ "./resources/assets/js/views/reset/ResetPage.vue?vue&type=style&index=0&id=36b764bb&lang=scss"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -58779,7 +58780,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ResetPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ResetPage_vue_vue_type_template_id_36b764bb_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/reset/ResetPage.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_ResetPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ResetPage_vue_vue_type_template_id_36b764bb_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/reset/ResetPage.vue"]]) /* hot reload */ if (false) {} @@ -58804,13 +58805,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _ResetPassword_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _ResetPassword_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ResetPassword_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ResetPassword_vue_vue_type_template_id_45b42cc7_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/reset/ResetPassword.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_ResetPassword_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_ResetPassword_vue_vue_type_template_id_45b42cc7_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/reset/ResetPassword.vue"]]) /* hot reload */ if (false) {} @@ -58835,13 +58836,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _SettingDefaultForm_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _SettingDefaultForm_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_SettingDefaultForm_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SettingDefaultForm_vue_vue_type_template_id_4d864667_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/setting/SettingDefaultForm.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_SettingDefaultForm_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SettingDefaultForm_vue_vue_type_template_id_4d864667_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/setting/SettingDefaultForm.vue"]]) /* hot reload */ if (false) {} @@ -58866,13 +58867,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _SettingPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _SettingPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_SettingPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SettingPage_vue_vue_type_template_id_81a7fd86_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/setting/SettingPage.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_SettingPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SettingPage_vue_vue_type_template_id_81a7fd86_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/setting/SettingPage.vue"]]) /* hot reload */ if (false) {} @@ -58897,13 +58898,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _SettingPublishingForm_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _SettingPublishingForm_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_SettingPublishingForm_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SettingPublishingForm_vue_vue_type_template_id_63077305_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/setting/SettingPublishingForm.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_SettingPublishingForm_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SettingPublishingForm_vue_vue_type_template_id_63077305_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/setting/SettingPublishingForm.vue"]]) /* hot reload */ if (false) {} @@ -58928,13 +58929,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _OrganisationList_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _OrganisationList_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_OrganisationList_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OrganisationList_vue_vue_type_template_id_75b99060_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/superadmin/OrganisationList.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_OrganisationList_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_OrganisationList_vue_vue_type_template_id_75b99060_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/superadmin/OrganisationList.vue"]]) /* hot reload */ if (false) {} @@ -58957,13 +58958,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _SystemVersion_vue_vue_type_template_id_3e4f5121_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SystemVersion.vue?vue&type=template&id=3e4f5121&ts=true */ "./resources/assets/js/views/superadmin/SystemVersion.vue?vue&type=template&id=3e4f5121&ts=true"); /* harmony import */ var _SystemVersion_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SystemVersion.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/views/superadmin/SystemVersion.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_SystemVersion_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SystemVersion_vue_vue_type_template_id_3e4f5121_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/superadmin/SystemVersion.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_SystemVersion_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SystemVersion_vue_vue_type_template_id_3e4f5121_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/superadmin/SystemVersion.vue"]]) /* hot reload */ if (false) {} @@ -58986,13 +58987,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _AdminBar_vue_vue_type_template_id_4594acd5_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AdminBar.vue?vue&type=template&id=4594acd5&ts=true */ "./resources/assets/js/views/superadmin/components/AdminBar.vue?vue&type=template&id=4594acd5&ts=true"); /* harmony import */ var _AdminBar_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AdminBar.vue?vue&type=script&setup=true&lang=ts */ "./resources/assets/js/views/superadmin/components/AdminBar.vue?vue&type=script&setup=true&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AdminBar_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AdminBar_vue_vue_type_template_id_4594acd5_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/superadmin/components/AdminBar.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AdminBar_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AdminBar_vue_vue_type_template_id_4594acd5_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/superadmin/components/AdminBar.vue"]]) /* hot reload */ if (false) {} @@ -59018,7 +59019,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _TableList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _TableList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _TableList_vue_vue_type_style_index_0_id_05b2634b_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./TableList.vue?vue&type=style&index=0&id=05b2634b&lang=css */ "./resources/assets/js/views/superadmin/components/TableList.vue?vue&type=style&index=0&id=05b2634b&lang=css"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -59026,7 +59027,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_TableList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TableList_vue_vue_type_template_id_05b2634b_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/superadmin/components/TableList.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_TableList_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_TableList_vue_vue_type_template_id_05b2634b_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/superadmin/components/TableList.vue"]]) /* hot reload */ if (false) {} @@ -59052,7 +59053,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _UserListing_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _UserListing_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _UserListing_vue_vue_type_style_index_0_id_0611d9f0_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./UserListing.vue?vue&type=style&index=0&id=0611d9f0&scoped=true&lang=css */ "./resources/assets/js/views/user/UserListing.vue?vue&type=style&index=0&id=0611d9f0&scoped=true&lang=css"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -59060,7 +59061,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_UserListing_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_UserListing_vue_vue_type_template_id_0611d9f0_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-0611d9f0"],['__file',"resources/assets/js/views/user/UserListing.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_UserListing_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_UserListing_vue_vue_type_template_id_0611d9f0_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-0611d9f0"],['__file',"resources/assets/js/views/user/UserListing.vue"]]) /* hot reload */ if (false) {} @@ -59085,13 +59086,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _UserProfile_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _UserProfile_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_UserProfile_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_UserProfile_vue_vue_type_template_id_379270a6_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/user/UserProfile.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_UserProfile_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_UserProfile_vue_vue_type_template_id_379270a6_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/user/UserProfile.vue"]]) /* hot reload */ if (false) {} @@ -59114,13 +59115,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _AboutPage_vue_vue_type_template_id_7d9fa904_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AboutPage.vue?vue&type=template&id=7d9fa904&ts=true */ "./resources/assets/js/views/web/AboutPage.vue?vue&type=template&id=7d9fa904&ts=true"); /* harmony import */ var _AboutPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AboutPage.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/web/AboutPage.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AboutPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AboutPage_vue_vue_type_template_id_7d9fa904_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/AboutPage.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AboutPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AboutPage_vue_vue_type_template_id_7d9fa904_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/AboutPage.vue"]]) /* hot reload */ if (false) {} @@ -59143,13 +59144,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _EmailVerification_vue_vue_type_template_id_7cda5c19_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./EmailVerification.vue?vue&type=template&id=7cda5c19&ts=true */ "./resources/assets/js/views/web/EmailVerification.vue?vue&type=template&id=7cda5c19&ts=true"); /* harmony import */ var _EmailVerification_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./EmailVerification.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/web/EmailVerification.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_EmailVerification_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_EmailVerification_vue_vue_type_template_id_7cda5c19_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/EmailVerification.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_EmailVerification_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_EmailVerification_vue_vue_type_template_id_7cda5c19_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/EmailVerification.vue"]]) /* hot reload */ if (false) {} @@ -59176,7 +59177,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _vueform_multiselect_themes_default_css_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @vueform/multiselect/themes/default.css?vue&type=style&index=0&lang=css */ "./node_modules/@vueform/multiselect/themes/default.css?vue&type=style&index=0&lang=css"); /* harmony import */ var _IatiRegisterPage_vue_vue_type_style_index_1_id_17e632a6_lang_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./IatiRegisterPage.vue?vue&type=style&index=1&id=17e632a6&lang=scss */ "./resources/assets/js/views/web/IatiRegisterPage.vue?vue&type=style&index=1&id=17e632a6&lang=scss"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -59185,7 +59186,7 @@ __webpack_require__.r(__webpack_exports__); -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__["default"])(_IatiRegisterPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IatiRegisterPage_vue_vue_type_template_id_17e632a6_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/IatiRegisterPage.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__["default"])(_IatiRegisterPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IatiRegisterPage_vue_vue_type_template_id_17e632a6_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/IatiRegisterPage.vue"]]) /* hot reload */ if (false) {} @@ -59210,13 +59211,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _IatiStandard_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _IatiStandard_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_IatiStandard_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IatiStandard_vue_vue_type_template_id_e68494d0_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/IatiStandard.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_IatiStandard_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_IatiStandard_vue_vue_type_template_id_e68494d0_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/IatiStandard.vue"]]) /* hot reload */ if (false) {} @@ -59239,13 +59240,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _PublishingChecklist_vue_vue_type_template_id_dca69396_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PublishingChecklist.vue?vue&type=template&id=dca69396&ts=true */ "./resources/assets/js/views/web/PublishingChecklist.vue?vue&type=template&id=dca69396&ts=true"); /* harmony import */ var _PublishingChecklist_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PublishingChecklist.vue?vue&type=script&lang=ts&setup=true */ "./resources/assets/js/views/web/PublishingChecklist.vue?vue&type=script&lang=ts&setup=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PublishingChecklist_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PublishingChecklist_vue_vue_type_template_id_dca69396_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/PublishingChecklist.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_PublishingChecklist_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_PublishingChecklist_vue_vue_type_template_id_dca69396_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/PublishingChecklist.vue"]]) /* hot reload */ if (false) {} @@ -59272,7 +59273,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _vueform_multiselect_themes_default_css_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @vueform/multiselect/themes/default.css?vue&type=style&index=0&lang=css */ "./node_modules/@vueform/multiselect/themes/default.css?vue&type=style&index=0&lang=css"); /* harmony import */ var _RegisterPage_vue_vue_type_style_index_1_id_52266200_lang_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./RegisterPage.vue?vue&type=style&index=1&id=52266200&lang=scss */ "./resources/assets/js/views/web/RegisterPage.vue?vue&type=style&index=1&id=52266200&lang=scss"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -59281,7 +59282,7 @@ __webpack_require__.r(__webpack_exports__); -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__["default"])(_RegisterPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RegisterPage_vue_vue_type_template_id_52266200_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/RegisterPage.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__["default"])(_RegisterPage_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_RegisterPage_vue_vue_type_template_id_52266200_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/RegisterPage.vue"]]) /* hot reload */ if (false) {} @@ -59304,13 +59305,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _SupportPage_vue_vue_type_template_id_56fff980_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SupportPage.vue?vue&type=template&id=56fff980&ts=true */ "./resources/assets/js/views/web/SupportPage.vue?vue&type=template&id=56fff980&ts=true"); /* harmony import */ var _SupportPage_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SupportPage.vue?vue&type=script&lang=ts&setup=true */ "./resources/assets/js/views/web/SupportPage.vue?vue&type=script&lang=ts&setup=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_SupportPage_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SupportPage_vue_vue_type_template_id_56fff980_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/SupportPage.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_SupportPage_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SupportPage_vue_vue_type_template_id_56fff980_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/SupportPage.vue"]]) /* hot reload */ if (false) {} @@ -59332,13 +59333,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _WelcomePage_vue_vue_type_template_id_eae4485a__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./WelcomePage.vue?vue&type=template&id=eae4485a */ "./resources/assets/js/views/web/WelcomePage.vue?vue&type=template&id=eae4485a"); /* harmony import */ var _WelcomePage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./WelcomePage.vue?vue&type=script&lang=js */ "./resources/assets/js/views/web/WelcomePage.vue?vue&type=script&lang=js"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_WelcomePage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_WelcomePage_vue_vue_type_template_id_eae4485a__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/WelcomePage.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_WelcomePage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_WelcomePage_vue_vue_type_template_id_eae4485a__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/WelcomePage.vue"]]) /* hot reload */ if (false) {} @@ -59363,13 +59364,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _AdminFooter_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _AdminFooter_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AdminFooter_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AdminFooter_vue_vue_type_template_id_55f9b4bb_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/partials/AdminFooter.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_AdminFooter_vue_vue_type_script_setup_true_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AdminFooter_vue_vue_type_template_id_55f9b4bb_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/partials/AdminFooter.vue"]]) /* hot reload */ if (false) {} @@ -59392,13 +59393,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _JoinNow_vue_vue_type_template_id_269f5086_ts_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./JoinNow.vue?vue&type=template&id=269f5086&ts=true */ "./resources/assets/js/views/web/partials/JoinNow.vue?vue&type=template&id=269f5086&ts=true"); /* harmony import */ var _JoinNow_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./JoinNow.vue?vue&type=script&lang=ts */ "./resources/assets/js/views/web/partials/JoinNow.vue?vue&type=script&lang=ts"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_JoinNow_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_JoinNow_vue_vue_type_template_id_269f5086_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/partials/JoinNow.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_JoinNow_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_JoinNow_vue_vue_type_template_id_269f5086_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/partials/JoinNow.vue"]]) /* hot reload */ if (false) {} @@ -59424,7 +59425,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _SignIn_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _SignIn_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _SignIn_vue_vue_type_style_index_0_id_a1861f3e_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./SignIn.vue?vue&type=style&index=0&id=a1861f3e&lang=scss&scoped=true */ "./resources/assets/js/views/web/partials/SignIn.vue?vue&type=style&index=0&id=a1861f3e&lang=scss&scoped=true"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -59432,7 +59433,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_SignIn_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SignIn_vue_vue_type_template_id_a1861f3e_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-a1861f3e"],['__file',"resources/assets/js/views/web/partials/SignIn.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_SignIn_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_SignIn_vue_vue_type_template_id_a1861f3e_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-a1861f3e"],['__file',"resources/assets/js/views/web/partials/SignIn.vue"]]) /* hot reload */ if (false) {} @@ -59457,13 +59458,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _WebFooter_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _WebFooter_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_WebFooter_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_WebFooter_vue_vue_type_template_id_20d10680_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/partials/WebFooter.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_WebFooter_vue_vue_type_script_lang_ts_setup_true__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_WebFooter_vue_vue_type_template_id_20d10680_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/partials/WebFooter.vue"]]) /* hot reload */ if (false) {} @@ -59489,7 +59490,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _WebHeader_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _WebHeader_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__] /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__); /* harmony import */ var _WebHeader_vue_vue_type_style_index_0_id_10c9e0b2_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./WebHeader.vue?vue&type=style&index=0&id=10c9e0b2&scoped=true&lang=scss */ "./resources/assets/js/views/web/partials/WebHeader.vue?vue&type=style&index=0&id=10c9e0b2&scoped=true&lang=scss"); -/* harmony import */ var _home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); +/* harmony import */ var _media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); @@ -59497,7 +59498,7 @@ __webpack_require__.r(__webpack_exports__); ; -const __exports__ = /*#__PURE__*/(0,_home_momik_YI_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_WebHeader_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_WebHeader_vue_vue_type_template_id_10c9e0b2_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-10c9e0b2"],['__file',"resources/assets/js/views/web/partials/WebHeader.vue"]]) +const __exports__ = /*#__PURE__*/(0,_media_salil_E660642D606406A1_Young_Innovation_Internship_Young_Innovation_Projects_iati_publisher_iatipublisher_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_WebHeader_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_WebHeader_vue_vue_type_template_id_10c9e0b2_scoped_true_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',"data-v-10c9e0b2"],['__file',"resources/assets/js/views/web/partials/WebHeader.vue"]]) /* hot reload */ if (false) {} @@ -65857,4 +65858,4 @@ webpackContext.id = "./resources/assets/images/svg sync recursive ^\\.\\/.*$"; /******/ var __webpack_exports__ = __webpack_require__.O(); /******/ } ]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUk2RCxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZDcxQyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUk4MUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsTUFBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLE1BQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxVQUFELENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsSUFBRCxDQUFsQjs7QUFDQSxTQUFTdEosTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJcDVDLEVBQUo7O0VBQ0EsSUFBSXE1QyxrQkFBa0IsR0FBRyxDQUFDLEdBQUdoNkMsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFNBQTVCLENBQXpCOztFQUNBLElBQUlvSSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUdyaUQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLE9BQTVCLENBQXZCOztFQUNBLElBQUlxSSxxQkFBcUIsR0FBRyxDQUFDLEdBQUd0aUQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFlBQTVCLENBQTVCOztFQUNBLElBQUlzSSx1QkFBdUIsR0FBRyxDQUFDLEdBQUd2aUQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLGNBQTVCLENBQTlCOztFQUNBLElBQUl1SSxvQkFBb0IsR0FBRyxDQUFDLEdBQUd4aUQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFdBQTVCLENBQTNCOztFQUNBLElBQUl3SSxrQkFBa0IsR0FBRyxDQUFDLEdBQUd6aUQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFNBQTVCLENBQXpCOztFQUNBLElBQUl5SSxpQkFBaUIsR0FBRyxDQUFDLEdBQUcxaUQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFFBQTVCLENBQXhCOztFQUNBLElBQUkwSSw4QkFBOEIsR0FBRyxDQUFDLEdBQUczaUQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLHFCQUE1QixDQUFyQzs7RUFDQSxJQUFJc0csb0JBQW9CLEdBQUcsQ0FBQyxHQUFHdmdELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixXQUE1QixDQUEzQjs7RUFDQSxJQUFJMkksc0JBQXNCLEdBQUcsQ0FBQyxHQUFHNWlELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixhQUE1QixDQUE3Qjs7RUFDQSxJQUFJNEksbUJBQW1CLEdBQUcsQ0FBQyxHQUFHN2lELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixVQUE1QixDQUExQjs7RUFDQSxJQUFJNkksMEJBQTBCLEdBQUcsQ0FBQyxHQUFHOWlELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixpQkFBNUIsQ0FBakM7O0VBQ0EsSUFBSThJLGlCQUFpQixHQUFHLENBQUMsR0FBRy9pRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsUUFBNUIsQ0FBeEI7O0VBQ0EsSUFBSStJLDJCQUEyQixHQUFHLENBQUMsR0FBR2hqRCxLQUFLLENBQUNpakQsZ0JBQVYsRUFBNEIsa0JBQTVCLENBQWxDOztFQUNBLElBQUlDLHdCQUF3QixHQUFHLENBQUMsR0FBR2xqRCxLQUFLLENBQUNpakQsZ0JBQVYsRUFBNEIsZUFBNUIsQ0FBL0I7O0VBQ0EsT0FBUSxDQUFDLEdBQUdqakQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN0RVQsSUFBSSxDQUFDN3hDLFdBQU4sSUFDTyxDQUFDLEdBQUc3SCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQzVEdHZDLEdBQUcsRUFBRSxDQUR1RDtJQUU1RCxTQUFPLDZEQUZxRDtJQUc1RHd2QyxPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUNuQjtJQUNBLFlBQVk7TUFDUixJQUFJMEYsSUFBSSxHQUFHLEVBQVg7O01BQ0EsS0FBSyxJQUFJLzZCLEVBQUUsR0FBRyxDQUFkLEVBQWlCQSxFQUFFLEdBQUdZLFNBQVMsQ0FBQy9lLE1BQWhDLEVBQXdDbWUsRUFBRSxFQUExQyxFQUE4QztRQUMxQys2QixJQUFJLENBQUMvNkIsRUFBRCxDQUFKLEdBQVdZLFNBQVMsQ0FBQ1osRUFBRCxDQUFwQjtNQUNIOztNQUNELE9BQVFvMUIsSUFBSSxDQUFDaHhCLGFBQUwsSUFBc0JneEIsSUFBSSxDQUFDaHhCLGFBQUwsQ0FBbUIzakIsS0FBbkIsQ0FBeUIyMEMsSUFBekIsRUFBK0IyRixJQUEvQixDQUE5QjtJQUNILENBUkk7RUFIbUQsQ0FBckMsQ0FEL0IsSUFjTSxDQUFDLEdBQUdyL0MsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBZmlFLEVBZ0J0RWIsSUFBSSxDQUFDN3hDLFdBQU4sSUFDTyxDQUFDLEdBQUc3SCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQzVEdHZDLEdBQUcsRUFBRSxDQUR1RDtJQUU1RCxTQUFPLHNDQUZxRDtJQUc1RHd2QyxPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUNuQixZQUFZO01BQ1JELElBQUksQ0FBQzd4QyxXQUFMLEdBQW1CLENBQUM2eEMsSUFBSSxDQUFDN3hDLFdBQXpCO0lBQ0gsQ0FISTtFQUhtRCxDQUFyQyxFQU94QixDQUNDLENBQUMsR0FBRzdILEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkM1cEMsSUFBSSxFQUFFLFNBRGlDO0lBRXZDLFNBQU87RUFGZ0MsQ0FBM0MsQ0FERCxDQVB3QixDQUQvQixJQWNNLENBQUMsR0FBR3BRLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQTlCaUUsRUErQnZFLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNKLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBRy80QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsaUJBQTlCLENBRDZDLEVBRTdDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2g1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNGLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2o1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsQ0FDdkMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0QsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0MsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHcDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ0UsVUFBbkMsRUFBK0MsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXVpQixXQUFmLENBQTJCLHVDQUEzQixDQUEzQixDQUEvQyxFQUFnSjtFQUFFO0VBQWxKLENBRDZDLEVBRTdDeXZCLFVBRjZDLEVBRzdDLENBQUMsR0FBR3Q1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNJLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3Y1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NLLFVBQXRDLEVBQWtELENBQUMsR0FBR3g1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQixDQUFDLzVDLEVBQUUsR0FBRys0QyxJQUFJLENBQUNqd0IsU0FBWCxNQUEwQixJQUExQixJQUFrQzlvQixFQUFFLEtBQUssS0FBSyxDQUE5QyxHQUFrREEsRUFBbEQsR0FBdUQrNEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsVUFBMUIsQ0FBbEYsQ0FBbEQsRUFBNEs7RUFBRTtFQUE5SyxDQUQ2QyxFQUU3QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NNLFdBQXRDLEVBQW1ELENBQUMsR0FBR3o1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ2p3QixTQUFMLEdBQWlCaXdCLElBQUksQ0FBQ2p3QixTQUF0QixHQUFrQ2l3QixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixVQUExQixDQUE3RCxDQUFuRCxFQUF3SjtFQUFFO0VBQTFKLENBRjZDLENBQWpELENBSDZDLENBQWpELENBRDZDLENBQWpELENBRHVDLENBQTNDLENBRDZDLENBQWpELENBRDZDLEVBZTdDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzZCLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR2g3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM4QixXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdqN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDK0IsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHbDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2dDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR243QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNpQyxXQUFuQyxFQUFnRCxDQUM1QyxDQUFDLEdBQUdwN0MsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUFFNXBDLElBQUksRUFBRTtFQUFSLENBQTNDLENBRDRDLENBQWhELENBRDhDLENBQWxELENBRDhDLEVBTTlDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2tDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3I3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NtQyxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd0N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDb0MsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHdjdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDandCLFNBQUwsR0FBaUJpd0IsSUFBSSxDQUFDandCLFNBQXRCLEdBQWtDaXdCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFVBQTFCLENBQTdELENBQW5ELEVBQXdKO0VBQUU7RUFBMUosQ0FENkMsRUFFN0MsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDcUMsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHeDdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDandCLFNBQUwsR0FBaUJpd0IsSUFBSSxDQUFDandCLFNBQXRCLEdBQWtDaXdCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFVBQTFCLENBQTdELENBQW5ELEVBQXdKO0VBQUU7RUFBMUosQ0FGNkMsQ0FBakQsQ0FEOEMsQ0FBbEQsQ0FOOEMsQ0FBbEQsQ0FEOEMsQ0FBbEQsQ0FEOEMsRUFnQjlDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3NDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3o3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN1QyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUcxN0MsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLDRCQUE5QixDQUQ4QyxFQUU3Q2IsSUFBSSxDQUFDOWlDLFNBQUwsQ0FBZTFJLFVBQWhCLElBQ08sQ0FBQyxHQUFHbE8sS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCMEgsZ0JBQXZCLEVBQXlDO0lBQ2hFeDNDLEdBQUcsRUFBRSxDQUQyRDtJQUVoRXJCLE9BQU8sRUFBRWt3QyxJQUFJLENBQUM5aUMsU0FBTCxDQUFlcE4sT0FGd0M7SUFHaEU1QyxJQUFJLEVBQUU4eUMsSUFBSSxDQUFDOWlDLFNBQUwsQ0FBZWhRLElBSDJDO0lBSWhFLFNBQU87RUFKeUQsQ0FBekMsRUFLeEIsSUFMd0IsRUFLbEI7RUFBRTtFQUxnQixFQUtILENBQUMsU0FBRCxFQUFZLE1BQVosQ0FMRyxDQUQvQixJQU9NLENBQUMsR0FBRzVHLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQVR3QyxFQVU3Q2IsSUFBSSxDQUFDN2lDLFNBQUwsQ0FBZTNJLFVBQWhCLElBQ08sQ0FBQyxHQUFHbE8sS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCMkgscUJBQXZCLEVBQThDO0lBQ3JFejNDLEdBQUcsRUFBRSxDQURnRTtJQUVyRXJCLE9BQU8sRUFBRWt3QyxJQUFJLENBQUM3aUMsU0FBTCxDQUFlck4sT0FGNkM7SUFHckUwTyxLQUFLLEVBQUV3aEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStHLEtBQWYsQ0FBcUIsaUNBQXJCLENBSDhEO0lBSXJFODBDLFlBQVksRUFBRXhKLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUN4QixZQUFZO01BQ1JELElBQUksQ0FBQzdpQyxTQUFMLENBQWUzSSxVQUFmLEdBQTRCLEtBQTVCO0lBQ0gsQ0FIUztFQUp1RCxDQUE5QyxFQVF4QixJQVJ3QixFQVFsQjtFQUFFO0VBUmdCLEVBUUgsQ0FBQyxTQUFELEVBQVksT0FBWixDQVJHLENBRC9CLElBVU0sQ0FBQyxHQUFHbE8sS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBcEJ3QyxFQXFCOUMsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixrQ0FBOUIsQ0FyQjhDLEVBc0I5QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDd0MsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHMzdDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixtQkFBOUIsQ0FEOEMsRUFFOUMsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCaUksdUJBQXZCLENBRjhDLEVBRzlDLENBQUMsR0FBR3ZpRCxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsc0JBQTlCLENBSDhDLEVBSTdDYixJQUFJLENBQUM3NEMsS0FBTCxDQUFXb0ksS0FBWCxDQUFpQm02QyxXQUFsQixJQUNPLENBQUMsR0FBR3BqRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUI2SCxvQkFBdkIsRUFBNkM7SUFDcEUzM0MsR0FBRyxFQUFFLENBRCtEO0lBRXBFLGVBQWU2dUMsSUFBSSxDQUFDdndCLGFBQUwsQ0FBbUIzZ0I7RUFGa0MsQ0FBN0MsRUFHeEIsSUFId0IsRUFHbEI7RUFBRTtFQUhnQixFQUdILENBQUMsYUFBRCxDQUhHLENBRC9CLElBS00sQ0FBQyxHQUFHeEksS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBVHdDLEVBVTlDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsb0JBQTlCLENBVjhDLEVBVzdDYixJQUFJLENBQUM3NEMsS0FBTCxDQUFXb0ksS0FBWCxDQUFpQm82QyxhQUFsQixJQUNPLENBQUMsR0FBR3JqRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUI4SCxrQkFBdkIsRUFBMkM7SUFDbEU1M0MsR0FBRyxFQUFFLENBRDZEO0lBRWxFLGtCQUFrQjZ1QyxJQUFJLENBQUN2d0IsYUFBTCxDQUFtQi9HLGNBRjZCO0lBR2xFL1csTUFBTSxFQUFFcXVDLElBQUksQ0FBQ3Z3QixhQUFMLENBQW1COWQsTUFIdUM7SUFJbEUsa0JBQWtCcXVDLElBQUksQ0FBQzE1QixhQUoyQztJQUtsRSxlQUFlMDVCLElBQUksQ0FBQ3Z3QixhQUFMLENBQW1CM2dCO0VBTGdDLENBQTNDLEVBTXhCLElBTndCLEVBTWxCO0VBQUU7RUFOZ0IsRUFNSCxDQUFDLGdCQUFELEVBQW1CLFFBQW5CLEVBQTZCLGdCQUE3QixFQUErQyxhQUEvQyxDQU5HLENBRC9CLElBUU0sQ0FBQyxHQUFHeEksS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBbkJ3QyxDQUFsRCxDQXRCOEMsQ0FBbEQsQ0FEOEMsRUE2QzdDYixJQUFJLENBQUM3NEMsS0FBTCxDQUFXb0ksS0FBWCxDQUFpQnE2QyxhQUFqQixDQUErQm45QyxNQUEvQixHQUF3QyxDQUF4QyxJQUE2Q3V6QyxJQUFJLENBQUN2eEIsbUJBQW5ELElBQ08sQ0FBQyxHQUFHbm9CLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QitILGlCQUF2QixFQUEwQztJQUNqRTczQyxHQUFHLEVBQUUsQ0FENEQ7SUFFakUsY0FBYzZ1QyxJQUFJLENBQUM3NEMsS0FBTCxDQUFXb0ksS0FBWCxDQUFpQnE2QyxhQUZrQztJQUdqRSxTQUFPO0VBSDBELENBQTFDLEVBSXhCLElBSndCLEVBSWxCO0VBQUU7RUFKZ0IsRUFJSCxDQUFDLFlBQUQsQ0FKRyxDQUQvQixJQU1NLENBQUMsR0FBR3RqRCxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FuRHdDLENBQWxELENBaEI4QyxDQUFsRCxDQWY2QyxDQUFqRCxDQUY2QyxFQXdGN0MsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixzQkFBOUIsQ0F4RjZDLEVBeUY3QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQ2pDLFNBQU8sbUJBRDBCO0lBRWpDa0IsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FDbkI7SUFDQSxZQUFZO01BQ1IsSUFBSTBGLElBQUksR0FBRyxFQUFYOztNQUNBLEtBQUssSUFBSS82QixFQUFFLEdBQUcsQ0FBZCxFQUFpQkEsRUFBRSxHQUFHWSxTQUFTLENBQUMvZSxNQUFoQyxFQUF3Q21lLEVBQUUsRUFBMUMsRUFBOEM7UUFDMUMrNkIsSUFBSSxDQUFDLzZCLEVBQUQsQ0FBSixHQUFXWSxTQUFTLENBQUNaLEVBQUQsQ0FBcEI7TUFDSDs7TUFDRCxPQUFRbzFCLElBQUksQ0FBQ2h4QixhQUFMLElBQXNCZ3hCLElBQUksQ0FBQ2h4QixhQUFMLENBQW1CM2pCLEtBQW5CLENBQXlCMjBDLElBQXpCLEVBQStCMkYsSUFBL0IsQ0FBOUI7SUFDSCxDQVJJO0VBRndCLENBQXJDLEVBV0csQ0FDQyxDQUFDLEdBQUdyL0MsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QzVwQyxJQUFJLEVBQUUsU0FEaUM7SUFFdkMsU0FBTztFQUZnQyxDQUEzQyxDQURELENBWEgsQ0F6RjZDLEVBMEc3QyxDQUFDLEdBQUdwUSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN5QyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUc1N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDMEMsV0FBdkMsRUFBb0QsQ0FDL0NuQyxJQUFJLENBQUN2M0IsYUFBTCxDQUFtQkMsY0FBbkIsSUFBcUNzM0IsSUFBSSxDQUFDdjNCLGFBQUwsQ0FBbUI5VyxNQUFuQixLQUE4QixPQUFwRSxJQUNPLENBQUMsR0FBR3JMLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMyQixXQUFyQyxFQUFrRCxDQUN6RSxDQUFDLEdBQUc5N0MsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJxSSw4QkFBdkIsQ0FEeUUsQ0FBbEQsQ0FEL0IsSUFJTSxDQUFDLEdBQUczaUQsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBTDBDLEVBTWhELENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM0QyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUcvN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDNkMsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHaDhDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzhDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR2o4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MrQyxXQUF0QyxFQUFtRCxDQUFDLEdBQUdsOEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixxQkFBMUIsQ0FBM0IsQ0FBbkQsRUFBaUk7RUFBRTtFQUFuSSxDQUQ4QyxFQUU5QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNzNkMsV0FBVixFQUF1QmlHLG9CQUF2QixFQUE2QztJQUN6QyxjQUFjN0csSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsaUNBQTFCLENBRDJCO0lBRXpDRixJQUFJLEVBQUUsRUFGbUM7SUFHekMsU0FBTyxZQUhrQztJQUl6QzBQLFFBQVEsRUFBRTtFQUorQixDQUE3QyxFQUtHLElBTEgsRUFLUztFQUFFO0VBTFgsRUFLd0IsQ0FBQyxZQUFELENBTHhCLENBRjhDLENBQWxELENBRDhDLEVBVTlDLENBQUMsR0FBR3RZLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCc0ksc0JBQXZCLEVBQStDO0lBQzNDem9DLE9BQU8sRUFBRXUvQixJQUFJLENBQUM1eEIsUUFENkI7SUFFM0MsU0FBTztFQUZvQyxDQUEvQyxFQUdHLElBSEgsRUFHUztFQUFFO0VBSFgsRUFHd0IsQ0FBQyxTQUFELENBSHhCLENBVjhDLEVBYzlDLENBQUMsR0FBRzluQixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NnRCxXQUF0QyxFQUFtRCxDQUFDLEdBQUduOEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFldWlCLFdBQWYsQ0FBMkIseUNBQTNCLENBQTNCLENBQW5ELEVBQXNKO0VBQUU7RUFBeEosQ0FkOEMsQ0FBbEQsQ0FEOEMsRUFpQjlDLENBQUMsR0FBRzdwQixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNpRCxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdwOEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDa0QsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHcjhDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ21ELFdBQXRDLEVBQW1ELENBQUMsR0FBR3Q4QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFVBQTFCLENBQTNCLENBQW5ELEVBQXNIO0VBQUU7RUFBeEgsQ0FEOEMsRUFFOUMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJpRyxvQkFBdkIsRUFBNkM7SUFDekMsY0FBYzdHLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLHlCQUExQixDQUQyQjtJQUV6Q0YsSUFBSSxFQUFFLEVBRm1DO0lBR3pDLFNBQU87RUFIa0MsQ0FBN0MsRUFJRyxJQUpILEVBSVM7RUFBRTtFQUpYLEVBSXdCLENBQUMsWUFBRCxDQUp4QixDQUY4QyxDQUFsRCxDQUQ4QyxFQVM5QyxDQUFDLEdBQUc1SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNvRCxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd2OEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcUQsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHeDhDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFBRTVwQyxJQUFJLEVBQUU7RUFBUixDQUEzQyxDQUQ4QyxFQUU5QyxDQUFDLEdBQUdwUSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NzRCxXQUF0QyxFQUFtRCxDQUFDLEdBQUd6OEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixNQUExQixDQUEzQixDQUFuRCxFQUFrSDtFQUFFO0VBQXBILENBRjhDLENBQWxELENBRDhDLEVBSzlDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCaUcsb0JBQXZCLEVBQTZDO0lBQ3pDLGNBQWM3RyxJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQix1QkFBMUIsQ0FEMkI7SUFFekNGLElBQUksRUFBRSxFQUZtQztJQUd6QyxTQUFPO0VBSGtDLENBQTdDLEVBSUcsSUFKSCxFQUlTO0VBQUU7RUFKWCxFQUl3QixDQUFDLFlBQUQsQ0FKeEIsQ0FMOEMsQ0FBbEQsQ0FUOEMsRUFvQjlDLENBQUMsR0FBRzVJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3VELFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRzE4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN3RCxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUczOEMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QyxTQUFPLGdCQURnQztJQUV2QzVwQyxJQUFJLEVBQUU7RUFGaUMsQ0FBM0MsQ0FEOEMsRUFLOUMsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDeUQsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHNThDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsV0FBMUIsQ0FBM0IsQ0FBbkQsRUFBdUg7RUFBRTtFQUF6SCxDQUw4QyxDQUFsRCxDQUQ4QyxFQVE5QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNzNkMsV0FBVixFQUF1QmlHLG9CQUF2QixFQUE2QztJQUN6QyxjQUFjN0csSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIseUNBQTFCLENBRDJCO0lBRXpDRixJQUFJLEVBQUUsRUFGbUM7SUFHekMsU0FBTztFQUhrQyxDQUE3QyxFQUlHLElBSkgsRUFJUztFQUFFO0VBSlgsRUFJd0IsQ0FBQyxZQUFELENBSnhCLENBUjhDLENBQWxELENBcEI4QyxDQUFsRCxDQWpCOEMsQ0FBbEQsQ0FOZ0QsRUEyRGhELENBQUMsR0FBRzVJLEtBQUssQ0FBQ205QyxjQUFWLEdBQTJCLENBQUMsR0FBR245QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQzFGLENBQUMsR0FBR242QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QnVJLG1CQUF2QixFQUE0QztJQUN4QyxlQUFlbkosSUFBSSxDQUFDLzlCLFFBQUwsQ0FBY25ULEVBRFc7SUFFeENqRyxJQUFJLEVBQUVtM0MsSUFBSSxDQUFDdHdCO0VBRjZCLENBQTVDLEVBR0csSUFISCxFQUdTO0VBQUU7RUFIWCxFQUd3QixDQUFDLGFBQUQsRUFBZ0IsTUFBaEIsQ0FIeEIsQ0FEMEYsQ0FBM0MsQ0FBbkQsR0FLSyxDQUNELENBQUM0NUIsMkJBQUQsRUFBOEI7SUFBRU8sUUFBUSxFQUFFO0VBQVosQ0FBOUIsQ0FEQyxDQUxMLENBM0RnRCxDQUFwRCxDQUQ4QyxFQXFFOUMsQ0FBQyxHQUFHdmpELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUNqQyxTQUFPLENBQUMsR0FBR241QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUM3Qm5ELElBQUksQ0FBQzd4QyxXQUFMLEdBQ00sd0JBQXdCbEcsTUFBeEIsQ0FBK0IrM0MsSUFBSSxDQUFDN3dCLFlBQUwsR0FDM0IsbUNBRDJCLEdBRTNCLHFCQUZKLENBRE4sR0FJTSx3QkFBd0JsbkIsTUFBeEIsQ0FBK0IrM0MsSUFBSSxDQUFDN3dCLFlBQUwsR0FDM0IsbUNBRDJCLEdBRTNCLHFCQUZKLEVBRTJCLEdBRjNCLENBTHVCLEVBUTdCLHNFQVI2QixDQUExQjtFQUQwQixDQUFyQyxFQVdHLENBQ0MsQ0FBQyxHQUFHN29CLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1Q3NILFdBQXZDLEVBQW9ELENBQy9DL0csSUFBSSxDQUFDdjNCLGFBQUwsQ0FBbUJDLGNBQW5CLElBQXFDczNCLElBQUksQ0FBQ3YzQixhQUFMLENBQW1COVcsTUFBbkIsS0FBOEIsT0FBcEUsSUFDTyxDQUFDLEdBQUdyTCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDdUcsV0FBckMsRUFBa0QsQ0FDekUsQ0FBQyxHQUFHMWdELEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCcUksOEJBQXZCLENBRHlFLENBQWxELENBRC9CLElBSU0sQ0FBQyxHQUFHM2lELEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQUwwQyxFQU1oRCxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDd0gsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHM2dELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3lILFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRzVnRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMwSCxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUc3Z0QsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDMkgsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHOWdELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIscUJBQTFCLENBQTNCLENBQW5ELEVBQWlJO0VBQUU7RUFBbkksQ0FEOEMsRUFFOUMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJpRyxvQkFBdkIsRUFBNkM7SUFDekMsY0FBYzdHLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLGlDQUExQixDQUQyQjtJQUV6Q0YsSUFBSSxFQUFFLEVBRm1DO0lBR3pDLFNBQU8sWUFIa0M7SUFJekMwUCxRQUFRLEVBQUU7RUFKK0IsQ0FBN0MsRUFLRyxJQUxILEVBS1M7RUFBRTtFQUxYLEVBS3dCLENBQUMsWUFBRCxDQUx4QixDQUY4QyxDQUFsRCxDQUQ4QyxFQVU5QyxDQUFDLEdBQUd0WSxLQUFLLENBQUNzNkMsV0FBVixFQUF1QnNJLHNCQUF2QixFQUErQztJQUMzQ3pvQyxPQUFPLEVBQUV1L0IsSUFBSSxDQUFDNXhCLFFBRDZCO0lBRTNDLFNBQU87RUFGb0MsQ0FBL0MsRUFHRyxJQUhILEVBR1M7RUFBRTtFQUhYLEVBR3dCLENBQUMsU0FBRCxDQUh4QixDQVY4QyxFQWM5QyxDQUFDLEdBQUc5bkIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDNEgsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHL2dELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXVpQixXQUFmLENBQTJCLHlDQUEzQixDQUEzQixDQUFuRCxFQUFzSjtFQUFFO0VBQXhKLENBZDhDLENBQWxELENBRDhDLEVBaUI5QyxDQUFDLEdBQUc3cEIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDNkgsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHaGhELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzhILFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR2poRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MrSCxXQUF0QyxFQUFtRCxDQUFDLEdBQUdsaEQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixVQUExQixDQUEzQixDQUFuRCxFQUFzSDtFQUFFO0VBQXhILENBRDhDLEVBRTlDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCaUcsb0JBQXZCLEVBQTZDO0lBQ3pDLGNBQWM3RyxJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQix5QkFBMUIsQ0FEMkI7SUFFekNGLElBQUksRUFBRSxFQUZtQztJQUd6QyxTQUFPO0VBSGtDLENBQTdDLEVBSUcsSUFKSCxFQUlTO0VBQUU7RUFKWCxFQUl3QixDQUFDLFlBQUQsQ0FKeEIsQ0FGOEMsQ0FBbEQsQ0FEOEMsRUFTOUMsQ0FBQyxHQUFHNUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDZ0ksV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHbmhELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2lJLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3BoRCxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQUU1cEMsSUFBSSxFQUFFO0VBQVIsQ0FBM0MsQ0FEOEMsRUFFOUMsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDa0ksV0FBdEMsRUFBbUQsQ0FBQyxHQUFHcmhELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsTUFBMUIsQ0FBM0IsQ0FBbkQsRUFBa0g7RUFBRTtFQUFwSCxDQUY4QyxDQUFsRCxDQUQ4QyxFQUs5QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNzNkMsV0FBVixFQUF1QmlHLG9CQUF2QixFQUE2QztJQUN6QyxjQUFjN0csSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsdUJBQTFCLENBRDJCO0lBRXpDRixJQUFJLEVBQUUsRUFGbUM7SUFHekMsU0FBTztFQUhrQyxDQUE3QyxFQUlHLElBSkgsRUFJUztFQUFFO0VBSlgsRUFJd0IsQ0FBQyxZQUFELENBSnhCLENBTDhDLENBQWxELENBVDhDLEVBb0I5QyxDQUFDLEdBQUc1SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNtSSxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd0aEQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDb0ksV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHdmhELEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxnQkFEZ0M7SUFFdkM1cEMsSUFBSSxFQUFFO0VBRmlDLENBQTNDLENBRDhDLEVBSzlDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ3FJLFdBQXRDLEVBQW1ELENBQUMsR0FBR3hoRCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFdBQTFCLENBQTNCLENBQW5ELEVBQXVIO0VBQUU7RUFBekgsQ0FMOEMsQ0FBbEQsQ0FEOEMsRUFROUMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJpRyxvQkFBdkIsRUFBNkM7SUFDekMsY0FBYzdHLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLHlDQUExQixDQUQyQjtJQUV6Q0YsSUFBSSxFQUFFLEVBRm1DO0lBR3pDLFNBQU87RUFIa0MsQ0FBN0MsRUFJRyxJQUpILEVBSVM7RUFBRTtFQUpYLEVBSXdCLENBQUMsWUFBRCxDQUp4QixDQVI4QyxDQUFsRCxDQXBCOEMsQ0FBbEQsQ0FqQjhDLENBQWxELENBTmdELEVBMkRoRCxDQUFDLEdBQUc1SSxLQUFLLENBQUNtOUMsY0FBVixHQUEyQixDQUFDLEdBQUduOUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUMxRixDQUFDLEdBQUduNkMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJ1SSxtQkFBdkIsRUFBNEM7SUFDeEMsZUFBZW5KLElBQUksQ0FBQy85QixRQUFMLENBQWNuVCxFQURXO0lBRXhDakcsSUFBSSxFQUFFbTNDLElBQUksQ0FBQ3R3QjtFQUY2QixDQUE1QyxFQUdHLElBSEgsRUFHUztFQUFFO0VBSFgsRUFHd0IsQ0FBQyxhQUFELEVBQWdCLE1BQWhCLENBSHhCLENBRDBGLENBQTNDLENBQW5ELEdBS0ssQ0FDRCxDQUFDNDVCLDJCQUFELEVBQThCO0lBQUVPLFFBQVEsRUFBRTtFQUFaLENBQTlCLENBREMsQ0FMTCxDQTNEZ0QsQ0FBcEQsQ0FERCxDQVhILEVBZ0ZHO0VBQUU7RUFoRkwsQ0FyRThDLEVBc0o5QyxDQUFDLEdBQUd2akQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDc0ksV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHemhELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3VJLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRzFoRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7SUFDL0J6MkMsSUFBSSxFQUFFLGFBQWFmLE1BQWIsQ0FBb0IrM0MsSUFBSSxDQUFDdndCLGFBQUwsQ0FBbUIzZ0IsRUFBdkMsRUFBMkMsaUJBQTNDLENBRHlCO0lBRS9CLFNBQU87RUFGd0IsQ0FBbkMsRUFHRyxDQUNDLENBQUMsR0FBR3hJLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxrQkFEZ0M7SUFFdkM1cEMsSUFBSSxFQUFFO0VBRmlDLENBQTNDLENBREQsRUFLQyxDQUFDLEdBQUdwUSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0N5SSxXQUF0QyxFQUFtRCxDQUFDLEdBQUc1aEQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFldWlCLFdBQWYsQ0FBMkIsaURBQTNCLENBQTNCLENBQW5ELEVBQThKO0VBQUU7RUFBaEssQ0FMRCxDQUhILEVBU0c7RUFBRTtFQVRMLEVBU2tCODNCLFdBVGxCLENBRDhDLENBQWxELENBRDhDLEVBYTlDLENBQUMsR0FBRzNoRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMwSSxXQUFyQyxFQUFrRCxFQUM3QyxDQUFDLEdBQUc3aEQsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCcEQsSUFBSSxDQUFDeHdCLFdBQTNCLEVBQXdDLFVBQVU5ZCxJQUFWLEVBQWdCUCxHQUFoQixFQUFxQndILEtBQXJCLEVBQTRCO0lBQ2pKLE9BQU8sQ0FBQyxHQUFHclMsS0FBSyxDQUFDbTlDLGNBQVYsR0FBMkIsQ0FBQyxHQUFHbjlDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7TUFDekZ0dkMsR0FBRyxFQUFFd0gsS0FEb0Y7TUFFekYzUCxJQUFJLEVBQUUsSUFBSWYsTUFBSixDQUFXd08sTUFBTSxDQUFDdEYsR0FBRCxDQUFqQixDQUZtRjtNQUd6RixTQUFPO0lBSGtGLENBQW5DLEVBSXZELENBQ0MsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO01BQ3BDMEUsUUFBUSxFQUFFenlDLElBQUksQ0FBQ0MsTUFBTCxJQUFlLFVBRFc7TUFFcEMsU0FBTztJQUY2QixDQUF4QyxFQUdHLENBQ0MsQ0FBQyxHQUFHckwsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDNkksV0FBdEMsRUFBbUQsQ0FBQyxHQUFHaGlELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDL3ZCLFdBQUwsQ0FBaUIrdkIsSUFBSSxDQUFDdHZCLFdBQUwsQ0FBaUJoZixJQUFJLENBQUNsRyxLQUF0QixDQUFqQixDQUEzQixDQUFuRCxFQUErSDtJQUFFO0lBQWpJLENBREQsRUFFQyxDQUFDLEdBQUdsRixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M4SSxXQUF0QyxFQUFtRCxDQUMvQyxDQUFDLEdBQUdqaUQsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJpRyxvQkFBdkIsRUFBNkM7TUFDekMzM0MsSUFBSSxFQUFFOHdDLElBQUksQ0FBQy92QixXQUFMLENBQWlCK3ZCLElBQUksQ0FBQ3R2QixXQUFMLENBQWlCaGYsSUFBSSxDQUFDbEcsS0FBdEIsQ0FBakIsQ0FEbUM7TUFFekMsY0FBY3cwQyxJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQix5Q0FBMUIsQ0FGMkI7TUFHekMwNkMsU0FBUyxFQUFFO0lBSDhCLENBQTdDLEVBSUcsSUFKSCxFQUlTO0lBQUU7SUFKWCxFQUl3QixDQUFDLE1BQUQsRUFBUyxZQUFULENBSnhCLENBRCtDLENBQW5ELENBRkQsQ0FISCxFQVlHO0lBQUU7SUFaTCxFQVlrQnpCLFdBWmxCLENBREQsQ0FKdUQsRUFrQnZEO0lBQUU7SUFsQnFELEVBa0J4Q0QsV0FsQndDLENBQW5ELEdBa0IwQixDQUM3QixDQUFDb0Isd0JBQUQsQ0FENkIsQ0FsQjFCLENBQVA7RUFxQkgsQ0F0QmdGLENBQXBELEVBc0J6QjtFQUFJO0VBdEJxQixDQURpQixFQUFsRCxDQWI4QyxFQXNDOUMsQ0FBQyxHQUFHbGpELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQytJLFdBQXJDLEVBQWtELEVBQzdDLENBQUMsR0FBR2xpRCxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JwRCxJQUFJLENBQUN4d0IsV0FBM0IsRUFBd0MsVUFBVTlkLElBQVYsRUFBZ0JQLEdBQWhCLEVBQXFCd0gsS0FBckIsRUFBNEI7SUFDakosT0FBUSxDQUFDLEdBQUdyUyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztNQUFFdnZDLEdBQUcsRUFBRXdIO0lBQVAsQ0FBOUMsRUFBOEQsQ0FDMUYsQ0FBQyxHQUFHclMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDZ0osV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHbmlELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqQzN3QyxFQUFFLEVBQUVxQyxHQUQ2QjtNQUVqQyxTQUFPO0lBRjBCLENBQXJDLEVBR0csQ0FBQyxHQUFHN0ssS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUMvdkIsV0FBTCxDQUFpQjllLEdBQWpCLENBQTNCLENBSEgsRUFHc0Q7SUFBRTtJQUh4RCxFQUcyRXUzQyxXQUgzRSxDQUQ4QyxDQUFsRCxDQUQwRixHQU96RixDQUFDLEdBQUdwaUQsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCMXhDLElBQUksQ0FBQ3djLFFBQTNCLEVBQXFDLFVBQVUwSixPQUFWLEVBQW1CMW9CLElBQW5CLEVBQXlCeUcsQ0FBekIsRUFBNEI7TUFDOUksSUFBSTFPLEVBQUosRUFBUXlHLEVBQVIsRUFBWStCLEVBQVosRUFBZ0J5TSxFQUFoQjs7TUFDQSxPQUFRLENBQUMsR0FBRzVWLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO1FBQUV2dkMsR0FBRyxFQUFFd0U7TUFBUCxDQUE5QyxFQUEwRCxDQUNyRnpHLElBQUksQ0FBQ2lWLFFBQUwsT0FBb0IsUUFBckIsSUFDTyxDQUFDLEdBQUc3ZCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztRQUFFdnZDLEdBQUcsRUFBRTtNQUFQLENBQTlDLEVBQTBELENBQ2hGLENBQUMsUUFBT3ltQixPQUFPLENBQUNmLE9BQWYsTUFBMkIsUUFBM0IsR0FDSTN3QixNQUFNLENBQUMwUCxJQUFQLENBQVlnaUIsT0FBTyxDQUFDZixPQUFwQixFQUE2QnBxQixNQUE3QixHQUFzQyxDQUQxQyxHQUVJbXJCLE9BQU8sQ0FBQ2YsT0FGYixLQUdHLE9BQU9lLE9BQU8sQ0FBQ2YsT0FBZixLQUEyQixRQUgvQixJQUlPLENBQUMsR0FBR3Z3QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJtSSwwQkFBdkIsRUFBbUQ7UUFDMUVqNEMsR0FBRyxFQUFFLENBRHFFO1FBRTFFckMsRUFBRSxFQUFFcUMsR0FGc0U7UUFHMUV0SSxJQUFJLEVBQUUrdUIsT0FIb0U7UUFJMUV2SixLQUFLLEVBQUUyeEIsSUFBSSxDQUFDM3hCLEtBSjhEO1FBSzFFN1AsS0FBSyxFQUFFL0gsTUFBTSxDQUFDdkgsSUFBRCxDQUw2RDtRQU0xRSxlQUFlOHdDLElBQUksQ0FBQy85QixRQUFMLENBQWNuVCxFQU42QztRQU8xRTZQLEtBQUssRUFBRSxNQVBtRTtRQVExRS9LLFNBQVMsRUFBRSxDQUFDM00sRUFBRSxHQUFHKzRDLElBQUksQ0FBQ3J1QyxNQUFMLENBQVl6QyxJQUFaLENBQU4sTUFBNkIsSUFBN0IsSUFBcUNqSSxFQUFFLEtBQUssS0FBSyxDQUFqRCxHQUFxREEsRUFBckQsR0FBMEQsS0FSSztRQVMxRXl2QixPQUFPLEVBQUVrQixPQUFPLENBQUNxbEIsVUFUeUQ7UUFVMUU4TSxpQkFBaUIsRUFBRSxDQUFDcjhDLEVBQUUsR0FBR2txQixPQUFPLENBQUNteUIsaUJBQWQsTUFBcUMsSUFBckMsSUFBNkNyOEMsRUFBRSxLQUFLLEtBQUssQ0FBekQsR0FBNkRBLEVBQTdELEdBQWtFLEVBVlg7UUFXMUUsU0FBTztNQVhtRSxDQUFuRCxFQVl4QixJQVp3QixFQVlsQjtNQUFFO01BWmdCLEVBWUgsQ0FBQyxJQUFELEVBQU8sTUFBUCxFQUFlLE9BQWYsRUFBd0IsT0FBeEIsRUFBaUMsYUFBakMsRUFBZ0QsV0FBaEQsRUFBNkQsU0FBN0QsRUFBd0UsbUJBQXhFLENBWkcsQ0FKL0IsSUFpQk0sQ0FBQyxHQUFHcEgsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBbEIyRSxDQUExRCxFQW1CeEI7TUFBRztNQW5CcUIsQ0FEL0IsS0FxQk8sQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO1FBQUV2dkMsR0FBRyxFQUFFO01BQVAsQ0FBOUMsRUFBMEQsQ0FDaEYsQ0FBQyxRQUFPeW1CLE9BQU8sQ0FBQ2YsT0FBZixNQUEyQixRQUEzQixHQUNJM3dCLE1BQU0sQ0FBQzBQLElBQVAsQ0FBWWdpQixPQUFPLENBQUNmLE9BQXBCLEVBQTZCcHFCLE1BQTdCLEdBQXNDLENBRDFDLEdBRUltckIsT0FBTyxDQUFDZixPQUZiLEtBR0csT0FBT2UsT0FBTyxDQUFDZixPQUFmLEtBQTJCLFFBSC9CLElBSU8sQ0FBQyxHQUFHdndCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1Qm9JLGlCQUF2QixFQUEwQztRQUNqRWw0QyxHQUFHLEVBQUUsQ0FENEQ7UUFFakVyQyxFQUFFLEVBQUVxQyxHQUY2RDtRQUdqRXRJLElBQUksRUFBRSt1QixPQUgyRDtRQUlqRXZKLEtBQUssRUFBRTJ4QixJQUFJLENBQUMzeEIsS0FKcUQ7UUFLakUsb0JBQW9CLENBQUM1ZSxFQUFFLEdBQUd1d0MsSUFBSSxDQUFDdndCLGFBQUwsQ0FBbUJPLG9CQUF6QixNQUFtRCxJQUFuRCxJQUEyRHZnQixFQUFFLEtBQUssS0FBSyxDQUF2RSxHQUEyRSxLQUFLLENBQWhGLEdBQW9GQSxFQUFFLENBQUMwYyxnQkFMMUM7UUFNakUzTixLQUFLLEVBQUUvSCxNQUFNLENBQUN2SCxJQUFELENBTm9EO1FBT2pFLGVBQWU4d0MsSUFBSSxDQUFDLzlCLFFBQUwsQ0FBY25ULEVBUG9DO1FBUWpFOEUsU0FBUyxFQUFFLENBQUNzSSxFQUFFLEdBQUc4akMsSUFBSSxDQUFDcnVDLE1BQUwsQ0FBWXpDLElBQVosQ0FBTixNQUE2QixJQUE3QixJQUFxQ2dOLEVBQUUsS0FBSyxLQUFLLENBQWpELEdBQXFEQSxFQUFyRCxHQUEwRCxLQVJKO1FBU2pFd2EsT0FBTyxFQUFFa0IsT0FBTyxDQUFDcWxCO01BVGdELENBQTFDLEVBVXhCLElBVndCLEVBVWxCO01BQUU7TUFWZ0IsRUFVSCxDQUFDLElBQUQsRUFBTyxNQUFQLEVBQWUsT0FBZixFQUF3QixrQkFBeEIsRUFBNEMsT0FBNUMsRUFBcUQsYUFBckQsRUFBb0UsV0FBcEUsRUFBaUYsU0FBakYsQ0FWRyxDQUovQixJQWVNLENBQUMsR0FBRzMyQyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FoQjJFLENBQTFELEVBaUJ4QjtNQUFHO01BakJxQixDQXJCL0IsQ0FEc0YsQ0FBMUQsRUF3QzdCO01BQUc7TUF4QzBCLENBQWhDO0lBeUNILENBM0NnRixDQUFwRCxFQTJDekI7SUFBSTtJQTNDcUIsQ0FQNkQsRUFBOUQsRUFtRDdCO0lBQUc7SUFuRDBCLENBQWhDO0VBb0RILENBckRnRixDQUFwRCxFQXFEekI7RUFBSTtFQXJEcUIsQ0FEaUIsRUFBbEQsQ0F0QzhDLENBQWxELENBdEo4QyxDQUFsRCxDQTFHNkMsQ0FBakQsQ0EvQnVFLENBQTNDLENBQWhDO0FBaVlIOztBQUNEejZDLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDemVhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQ2J2d0MsRUFBRSxFQUFFLHVCQURTO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSXd3QyxVQUFVLEdBQUc7RUFBRXh3QyxFQUFFLEVBQUU7QUFBTixDQUFqQjtBQUNBLElBQUl5d0MsVUFBVSxHQUFHO0VBQ2JwdUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7O0FBSUEsU0FBU2l1QyxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELElBQUkySixpQkFBaUIsR0FBRyxDQUFDLEdBQUcxakQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFFBQTVCLENBQXhCOztFQUNBLElBQUkwSixvQkFBb0IsR0FBRyxDQUFDLEdBQUczakQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFdBQTVCLENBQTNCOztFQUNBLElBQUkySix1QkFBdUIsR0FBRyxDQUFDLEdBQUc1akQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLGNBQTVCLENBQTlCOztFQUNBLElBQUk0Six3QkFBd0IsR0FBRyxDQUFDLEdBQUc3akQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLGVBQTVCLENBQS9COztFQUNBLElBQUk2SixzQkFBc0IsR0FBRyxDQUFDLEdBQUc5akQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLGFBQTVCLENBQTdCOztFQUNBLElBQUk4SixxQkFBcUIsR0FBRyxDQUFDLEdBQUcvakQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFlBQTVCLENBQTVCOztFQUNBLElBQUkrSiw2QkFBNkIsR0FBRyxDQUFDLEdBQUdoa0QsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLG9CQUE1QixDQUFwQzs7RUFDQSxPQUFRLENBQUMsR0FBR2o2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcEIsVUFBckMsRUFBaUQsQ0FDN0UsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0gsVUFBckMsRUFBaUQsQ0FDNUNVLElBQUksQ0FBQ3o0QyxTQUFOLElBQ08sQ0FBQyxHQUFHakIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCK0ksaUJBQXZCLEVBQTBDO0lBQUU3NEMsR0FBRyxFQUFFO0VBQVAsQ0FBMUMsQ0FEL0IsSUFFTSxDQUFDLEdBQUc3SyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FIdUMsRUFJN0MsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCcUosb0JBQXZCLENBSjZDLEVBSzdDLENBQUMsR0FBRzNqRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFDakMsU0FBTyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxpQkFBRCxFQUFvQjtNQUFFLFlBQVluRCxJQUFJLENBQUNsakM7SUFBbkIsQ0FBcEIsQ0FBMUI7RUFEMEIsQ0FBckMsRUFFRyxDQUNDLENBQUMsR0FBR3hXLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCc0osdUJBQXZCLEVBQWdEO0lBQUUsWUFBWWxLLElBQUksQ0FBQ2xqQztFQUFuQixDQUFoRCxFQUE4RSxJQUE5RSxFQUFvRjtFQUFFO0VBQXRGLEVBQW1HLENBQUMsVUFBRCxDQUFuRyxDQURELEVBRUVrakMsSUFBSSxDQUFDbGpDLE9BQU4sSUFDTyxDQUFDLEdBQUd4VyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJrSix3QkFBdkIsRUFBaUQ7SUFBRWg1QyxHQUFHLEVBQUU7RUFBUCxDQUFqRCxDQUQvQixJQUVNLENBQUMsR0FBRzdLLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQUpQLEVBS0UsQ0FBQ2IsSUFBSSxDQUFDbGpDLE9BQVAsSUFDTyxDQUFDLEdBQUd4VyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJtSixzQkFBdkIsRUFBK0M7SUFDdEVqNUMsR0FBRyxFQUFFLENBRGlFO0lBRXRFdEksSUFBSSxFQUFFbTNDLElBQUksQ0FBQ2xzQyxVQUYyRDtJQUd0RThSLE1BQU0sRUFBRW82QixJQUFJLENBQUNqdUIsV0FIeUQ7SUFJdEV3NEIsWUFBWSxFQUFFdkssSUFBSSxDQUFDOXNCO0VBSm1ELENBQS9DLEVBS3hCLElBTHdCLEVBS2xCO0VBQUU7RUFMZ0IsRUFLSCxDQUFDLE1BQUQsRUFBUyxRQUFULEVBQW1CLGNBQW5CLENBTEcsQ0FEL0IsSUFPTSxDQUFDLEdBQUc1c0IsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBWlAsRUFhRSxDQUFDYixJQUFJLENBQUNsakMsT0FBUCxJQUNPLENBQUMsR0FBR3hXLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNsQixVQUFyQyxFQUFpRCxDQUN2RVMsSUFBSSxDQUFDbHNDLFVBQUwsSUFBbUJrc0MsSUFBSSxDQUFDbHNDLFVBQUwsQ0FBZ0I2TixTQUFoQixHQUE0QixDQUFoRCxJQUNPLENBQUMsR0FBR3JiLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1Qm9KLHFCQUF2QixFQUE4QztJQUNyRWw1QyxHQUFHLEVBQUUsQ0FEZ0U7SUFFckV0SSxJQUFJLEVBQUVtM0MsSUFBSSxDQUFDbHNDLFVBRjBEO0lBR3JFMDJDLGlCQUFpQixFQUFFeEssSUFBSSxDQUFDN3NCO0VBSDZDLENBQTlDLEVBSXhCLElBSndCLEVBSWxCO0VBQUU7RUFKZ0IsRUFJSCxDQUFDLE1BQUQsRUFBUyxtQkFBVCxDQUpHLENBRC9CLElBTU0sQ0FBQyxHQUFHN3NCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQVBrRSxDQUFqRCxDQUQvQixJQVVNLENBQUMsR0FBR3Y2QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0F2QlAsQ0FGSCxFQTBCRztFQUFFO0VBMUJMLENBTDZDLENBQWpELENBRDZFLEVBa0M1RSxDQUFDYixJQUFJLENBQUN2N0IsT0FBTCxJQUNHdTdCLElBQUksQ0FBQ2w3QixXQUFMLElBQW9CLENBQUNrN0IsSUFBSSxDQUFDcjdCLGlCQUQ3QixJQUVFcTdCLElBQUksQ0FBQ3p1QyxvQkFGUCxJQUdFeXVDLElBQUksQ0FBQ2o3QixnQkFIUixLQUlHLENBQUNpN0IsSUFBSSxDQUFDM3VCLGFBQUwsQ0FBbUI5aEIsS0FBbkIsQ0FBeUJoSSxTQUo5QixJQUtPLENBQUMsR0FBR2pCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QnFKLDZCQUF2QixFQUFzRDtJQUM3RW41QyxHQUFHLEVBQUUsQ0FEd0U7SUFFN0UsZUFBZTZ1QyxJQUFJLENBQUN0OEIsVUFGeUQ7SUFHN0UsbUJBQW1CczhCLElBQUksQ0FBQ3I4QixjQUhxRDtJQUk3RSxjQUFjcThCLElBQUksQ0FBQ3A4QixTQUowRDtJQUs3RSxpQkFBaUJvOEIsSUFBSSxDQUFDdjhCLFlBTHVEO0lBTTdFLFlBQVl1OEIsSUFBSSxDQUFDdjdCLE9BTjREO0lBTzdFN1EsU0FBUyxFQUFFb3NDLElBQUksQ0FBQ251QjtFQVA2RCxDQUF0RCxFQVF4QixJQVJ3QixFQVFsQjtFQUFFO0VBUmdCLEVBUUgsQ0FBQyxhQUFELEVBQWdCLGlCQUFoQixFQUFtQyxZQUFuQyxFQUFpRCxlQUFqRCxFQUFrRSxVQUFsRSxFQUE4RSxXQUE5RSxDQVJHLENBTC9CLElBY00sQ0FBQyxHQUFHdnJCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWhEdUUsQ0FBakQsQ0FBaEM7QUFrREg7O0FBQ0R6NkMsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUN4RWE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTQ2QyxZQUFZLEdBQUcsU0FBZkEsWUFBZSxDQUFVaDFDLENBQVYsRUFBYTtFQUFFLE9BQVEsQ0FBQyxHQUFHN0YsS0FBSyxDQUFDODZDLFdBQVYsRUFBdUIsaUJBQXZCLEdBQTJDajFDLENBQUMsR0FBR0EsQ0FBQyxFQUFoRCxFQUFvRCxDQUFDLEdBQUc3RixLQUFLLENBQUMrNkMsVUFBVixHQUFwRCxFQUE2RWwxQyxDQUFyRjtBQUEwRixDQUE1SDs7QUFDQSxJQUFJa3pDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlFLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkLFNBQU8sT0FETztFQUVkLE9BQUs7QUFGUyxDQUFsQjs7QUFJQSxJQUFJdUIsV0FBVyxHQUFHLGFBQWNILFlBQVksQ0FBQyxZQUFZO0VBQUU7RUFBYyxPQUFPLENBQUMsR0FBRzc2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M7SUFBRSxTQUFPO0VBQVQsQ0FBdEMsRUFBa0UsSUFBbEUsRUFBd0UsQ0FBQztFQUFFO0VBQTNFLENBQVA7QUFBbUcsQ0FBaEksQ0FBNUM7O0FBQ0EsSUFBSThCLFdBQVcsR0FBRyxDQUFDLGFBQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZHJ3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU8sT0FGTztFQUdkdW5DLElBQUksRUFBRTtBQUhRLENBQWxCO0FBS0EsSUFBSStJLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkLFNBQU8sT0FETztFQUVkLE9BQUs7QUFGUyxDQUFsQjs7QUFJQSxJQUFJQyxXQUFXLEdBQUcsYUFBY1IsWUFBWSxDQUFDLFlBQVk7RUFBRTtFQUFjLE9BQU8sQ0FBQyxHQUFHNzZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztJQUFFLFNBQU87RUFBVCxDQUF0QyxFQUFrRSxJQUFsRSxFQUF3RSxDQUFDO0VBQUU7RUFBM0UsQ0FBUDtBQUFtRyxDQUFoSSxDQUE1Qzs7QUFDQSxJQUFJbUMsV0FBVyxHQUFHO0VBQ2R6d0MsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPLE9BRk87RUFHZHVuQyxJQUFJLEVBQUU7QUFIUSxDQUFsQjtBQUtBLElBQUltSixXQUFXLEdBQUc7RUFDZDF3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUkyd0MsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2QsU0FBTyxPQURPO0VBRWQsT0FBSztBQUZTLENBQWxCOztBQUlBLElBQUlDLFdBQVcsR0FBRyxhQUFjakIsWUFBWSxDQUFDLFlBQVk7RUFBRTtFQUFjLE9BQU8sQ0FBQyxHQUFHNzZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztJQUFFLFNBQU87RUFBVCxDQUF0QyxFQUFrRSxJQUFsRSxFQUF3RSxDQUFDO0VBQUU7RUFBM0UsQ0FBUDtBQUFtRyxDQUFoSSxDQUE1Qzs7QUFDQSxJQUFJNEMsV0FBVyxHQUFHLENBQUMsYUFBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkbnhDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTyxPQUZPO0VBR2R1bkMsSUFBSSxFQUFFO0FBSFEsQ0FBbEI7QUFLQSxJQUFJNkosV0FBVyxHQUFHO0VBQ2RweEMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJcXhDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkLFNBQU8sT0FETztFQUVkLE9BQUs7QUFGUyxDQUFsQjs7QUFJQSxJQUFJQyxXQUFXLEdBQUcsYUFBY3ZCLFlBQVksQ0FBQyxZQUFZO0VBQUU7RUFBYyxPQUFPLENBQUMsR0FBRzc2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M7SUFBRSxTQUFPO0VBQVQsQ0FBdEMsRUFBa0UsSUFBbEUsRUFBd0UsQ0FBQztFQUFFO0VBQTNFLENBQVA7QUFBbUcsQ0FBaEksQ0FBNUM7O0FBQ0EsSUFBSWtELFdBQVcsR0FBRyxDQUFDLE9BQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZHp4QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU8sT0FGTztFQUdkdW5DLElBQUksRUFBRTtBQUhRLENBQWxCO0FBS0EsSUFBSW1LLFdBQVcsR0FBRztFQUNkMXhDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSTJ4QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsU0FBUzNELE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSTJKLGlCQUFpQixHQUFHLENBQUMsR0FBRzFqRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsUUFBNUIsQ0FBeEI7O0VBQ0EsSUFBSXNHLG9CQUFvQixHQUFHLENBQUMsR0FBR3ZnRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsV0FBNUIsQ0FBM0I7O0VBQ0EsSUFBSWtLLHNCQUFzQixHQUFHLENBQUMsR0FBR25rRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsYUFBNUIsQ0FBN0I7O0VBQ0EsSUFBSW1LLHVCQUF1QixHQUFHLENBQUMsR0FBR3BrRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsY0FBNUIsQ0FBOUI7O0VBQ0EsSUFBSW9LLGdCQUFnQixHQUFHLENBQUMsR0FBR3JrRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsT0FBNUIsQ0FBdkI7O0VBQ0EsT0FBUSxDQUFDLEdBQUdqNkMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FDaEYsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixnRkFBOUIsQ0FEZ0YsRUFFaEYsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCK0osZ0JBQXZCLEVBQXlDO0lBQ3JDLGdCQUFnQjNLLElBQUksQ0FBQ2h6QyxLQUFMLENBQVcyQztFQURVLENBQXpDLEVBRUc7SUFDQyxXQUFTLENBQUMsR0FBR3JKLEtBQUssQ0FBQzQ2QyxPQUFWLEVBQW1CLFlBQVk7TUFBRSxPQUFPLENBQzVDbEIsSUFBSSxDQUFDeHpCLGdCQUFOLElBQ08sQ0FBQyxHQUFHbG1CLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QitJLGlCQUF2QixFQUEwQztRQUFFNzRDLEdBQUcsRUFBRTtNQUFQLENBQTFDLENBRC9CLElBRU0sQ0FBQyxHQUFHN0ssS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBSHVDLEVBSTdDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NKLFVBQXBDLEVBQWdELENBQUMsR0FBRy80QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV1aUIsV0FBZixDQUEyQiw4Q0FBM0IsQ0FBM0IsQ0FBaEQsRUFBd0o7TUFBRTtNQUExSixDQUo2QyxFQUs3QyxDQUFDLEdBQUc3cEIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRixVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDQyxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdwNUMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJpRyxvQkFBdkIsRUFBNkM7UUFDekMzM0MsSUFBSSxFQUFFOHdDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWVncUIsT0FBZixDQUF1QixPQUF2QixDQURtQztRQUV6QyxjQUFjb29CLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV1aUIsV0FBZixDQUEyQixzQ0FBM0IsQ0FGMkI7UUFHekN2UixRQUFRLEVBQUUsT0FIK0I7UUFJekMsdUJBQXVCO01BSmtCLENBQTdDLEVBS0csSUFMSCxFQUtTO01BQUU7TUFMWCxFQUt3QixDQUFDLE1BQUQsRUFBUyxZQUFULENBTHhCLENBRDZDLEVBTzdDLENBQUMsR0FBR3RZLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ0UsVUFBbkMsRUFBK0MsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZWdxQixPQUFmLENBQXVCLE9BQXZCLENBQTNCLENBQS9DLEVBQTRHO01BQUU7TUFBOUcsQ0FQNkMsQ0FBakQsQ0FENkMsRUFVN0MsQ0FBQyxHQUFHdHhCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0csVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0ksVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHdjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN2QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSyxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd4NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDTSxXQUF2QyxFQUFvRCxDQUNoRCxDQUFDLEdBQUd6NUMsS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZWdxQixPQUFmLENBQXVCLFdBQXZCLENBQTNCLElBQWtFLEdBQTdGLEVBQWtHO01BQUU7TUFBcEcsQ0FEZ0QsRUFFaEQwcEIsV0FGZ0QsQ0FBcEQsQ0FENkMsRUFLN0MsQ0FBQyxHQUFHaDdDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCaUcsb0JBQXZCLEVBQTZDO1FBQ3pDMzNDLElBQUksRUFBRTh3QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlZ3FCLE9BQWYsQ0FBdUIsV0FBdkIsQ0FEbUM7UUFFekMsY0FBY29vQixJQUFJLENBQUNweUMsU0FBTCxDQUFldWlCLFdBQWYsQ0FBMkIsZ0RBQTNCLENBRjJCO1FBR3pDLHVCQUF1QjtNQUhrQixDQUE3QyxFQUlHLElBSkgsRUFJUztNQUFFO01BSlgsRUFJd0IsQ0FBQyxNQUFELEVBQVMsWUFBVCxDQUp4QixDQUw2QyxDQUFqRCxDQUR1QyxFQVl2QyxDQUFDLEdBQUc3cEIsS0FBSyxDQUFDbTlDLGNBQVYsRUFBMEIsQ0FBQyxHQUFHbjlDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QztRQUM3RCx1QkFBdUJRLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7VUFBRSxPQUFTZixJQUFJLENBQUM1c0IsUUFBTCxDQUFjeFEsU0FBZixHQUE0Qm0rQixNQUFwQztRQUE4QyxDQUE1RixDQURzQztRQUU3RCxTQUFPLENBQUMsR0FBR3o2QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLGFBQUQsRUFBZ0I7VUFDekN5SCxZQUFZLEVBQUU1SyxJQUFJLENBQUM3aUMsU0FBTCxDQUFleUYsU0FBZixJQUE0QjtRQURELENBQWhCLENBQTFCLENBRnNEO1FBSzdEMVYsSUFBSSxFQUFFLE1BTHVEO1FBTTdEaXdDLFdBQVcsRUFBRTZDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWVncUIsT0FBZixDQUF1QixxQkFBdkI7TUFOZ0QsQ0FBdkMsRUFPdkIsSUFQdUIsRUFPakI7TUFBRztNQVBjLEVBT00ycEIsV0FQTixDQUExQixFQU84QyxDQUMxQyxDQUFDajdDLEtBQUssQ0FBQ3M5QyxVQUFQLEVBQW1CNUQsSUFBSSxDQUFDNXNCLFFBQUwsQ0FBY3hRLFNBQWpDLENBRDBDLENBUDlDLENBWnVDLEVBc0J0Q285QixJQUFJLENBQUM3aUMsU0FBTCxDQUFleUYsU0FBZixJQUE0QixFQUE3QixJQUNPLENBQUMsR0FBR3RjLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NlLFdBQXRDLEVBQW1ELENBQUMsR0FBR2w3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzdpQyxTQUFMLENBQWV5RixTQUExQyxDQUFuRCxFQUF5RztNQUFFO01BQTNHLENBRC9CLElBRU0sQ0FBQyxHQUFHdGMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBeEJpQyxDQUEzQyxDQUQ2QyxFQTJCN0MsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN2QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDZ0MsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHbjdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1Q2lDLFdBQXZDLEVBQW9ELENBQ2hELENBQUMsR0FBR3A3QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlZ3FCLE9BQWYsQ0FBdUIsVUFBdkIsQ0FBM0IsSUFBaUUsR0FBNUYsRUFBaUc7TUFBRTtNQUFuRyxDQURnRCxFQUVoRCtwQixXQUZnRCxDQUFwRCxDQUQ4QyxFQUs5QyxDQUFDLEdBQUdyN0MsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJpRyxvQkFBdkIsRUFBNkM7UUFDekMzM0MsSUFBSSxFQUFFOHdDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWVncUIsT0FBZixDQUF1QixVQUF2QixDQURtQztRQUV6QyxjQUFjb29CLElBQUksQ0FBQ3B5QyxTQUFMLENBQWVncUIsT0FBZixDQUF1QiwwREFBdkIsQ0FGMkI7UUFHekMsdUJBQXVCO01BSGtCLENBQTdDLEVBSUcsSUFKSCxFQUlTO01BQUU7TUFKWCxFQUl3QixDQUFDLE1BQUQsRUFBUyxZQUFULENBSnhCLENBTDhDLENBQWxELENBRHVDLEVBWXZDLENBQUMsR0FBR3R4QixLQUFLLENBQUNzNkMsV0FBVixFQUF1QjZKLHNCQUF2QixFQUErQztRQUMzQ25HLFVBQVUsRUFBRXRFLElBQUksQ0FBQzVzQixRQUFMLENBQWN4a0IsUUFEaUI7UUFFM0MsdUJBQXVCcXhDLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7VUFBRSxPQUFTZixJQUFJLENBQUM1c0IsUUFBTCxDQUFjeGtCLFFBQWYsR0FBMkJteUMsTUFBbkM7UUFBNkMsQ0FBM0YsQ0FGb0I7UUFHM0MsU0FBTyxDQUFDLEdBQUd6NkMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxhQUFELEVBQWdCO1VBQ3pDeUgsWUFBWSxFQUFFNUssSUFBSSxDQUFDN2lDLFNBQUwsQ0FBZXZPLFFBQWYsSUFBMkI7UUFEQSxDQUFoQixDQUExQixDQUhvQztRQU0zQ2s0QyxVQUFVLEVBQUUsSUFOK0I7UUFPM0M5aUIsT0FBTyxFQUFFZ2MsSUFBSSxDQUFDcnhDLFNBUDZCO1FBUTNDd3VDLFdBQVcsRUFBRTZDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWVncUIsT0FBZixDQUF1QixpQkFBdkI7TUFSOEIsQ0FBL0MsRUFTRyxJQVRILEVBU1M7TUFBRTtNQVRYLEVBU3dCLENBQUMsWUFBRCxFQUFlLE9BQWYsRUFBd0IsU0FBeEIsRUFBbUMsYUFBbkMsQ0FUeEIsQ0FadUMsRUFzQnRDb29CLElBQUksQ0FBQzdpQyxTQUFMLENBQWV2TyxRQUFmLElBQTJCLEVBQTVCLElBQ08sQ0FBQyxHQUFHdEksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ21CLFdBQXRDLEVBQW1ELENBQUMsR0FBR3Q3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzdpQyxTQUFMLENBQWV2TyxRQUExQyxDQUFuRCxFQUF3RztNQUFFO01BQTFHLENBRC9CLEtBRU8sQ0FBQyxHQUFHdEksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ29CLFdBQXRDLEVBQW1ELENBQUMsR0FBR3Y3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWVncUIsT0FBZixDQUF1Qix1Q0FBdkIsQ0FBM0IsQ0FBbkQsRUFBZ0o7TUFBRTtNQUFsSixDQUYvQixDQXRCdUMsQ0FBM0MsQ0EzQjZDLENBQWpELENBRDZDLENBQWpELENBVjZDLENBQWpELENBRDZDLEVBb0U3QyxDQUFDLEdBQUd0eEIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNxQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd4N0MsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJpRyxvQkFBdkIsRUFBNkM7UUFDekMzM0MsSUFBSSxFQUFFOHdDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWVncUIsT0FBZixDQUF1QixpQkFBdkIsQ0FEbUM7UUFFekNoWixRQUFRLEVBQUUsT0FGK0I7UUFHekMsY0FBY29oQyxJQUFJLENBQUNweUMsU0FBTCxDQUFldWlCLFdBQWYsQ0FBMkIsZ0RBQTNCLENBSDJCO1FBSXpDLHVCQUF1QjtNQUprQixDQUE3QyxFQUtHLElBTEgsRUFLUztNQUFFO01BTFgsRUFLd0IsQ0FBQyxNQUFELEVBQVMsWUFBVCxDQUx4QixDQUQ4QyxFQU85QyxDQUFDLEdBQUc3cEIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1Dc0MsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHejdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZWdxQixPQUFmLENBQXVCLGlCQUF2QixDQUEzQixDQUFoRCxFQUF1SDtNQUFFO01BQXpILENBUDhDLENBQWxELENBRHVDLEVBVXZDLENBQUMsR0FBR3R4QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN1QyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUcxN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDd0MsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHMzdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN2QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDeUMsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHNTdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QzBDLFdBQXZDLEVBQW9ELENBQ2hELENBQUMsR0FBRzc3QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlZ3FCLE9BQWYsQ0FBdUIscUJBQXZCLENBQTNCLElBQTRFLEdBQXZHLEVBQTRHO01BQUU7TUFBOUcsQ0FEZ0QsRUFFaER3cUIsV0FGZ0QsQ0FBcEQsQ0FEOEMsQ0FBbEQsQ0FEdUMsRUFPdkMsQ0FBQyxHQUFHOTdDLEtBQUssQ0FBQ205QyxjQUFWLEVBQTBCLENBQUMsR0FBR245QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUM7UUFDN0QsdUJBQXVCUSxNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO1VBQUUsT0FBU2YsSUFBSSxDQUFDNXNCLFFBQUwsQ0FBY0MsbUJBQWYsR0FBc0MwdEIsTUFBOUM7UUFBd0QsQ0FBdEcsQ0FEc0M7UUFFN0QsU0FBTyxDQUFDLEdBQUd6NkMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxhQUFELEVBQWdCO1VBQ3pDeUgsWUFBWSxFQUFFNUssSUFBSSxDQUFDN2lDLFNBQUwsQ0FBZWtXLG1CQUFmLElBQXNDO1FBRFgsQ0FBaEIsQ0FBMUIsQ0FGc0Q7UUFLN0RubUIsSUFBSSxFQUFFLE1BTHVEO1FBTTdEaXdDLFdBQVcsRUFBRTZDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWVncUIsT0FBZixDQUF1QixzQkFBdkI7TUFOZ0QsQ0FBdkMsRUFPdkIsSUFQdUIsRUFPakI7TUFBRztNQVBjLEVBT015cUIsV0FQTixDQUExQixFQU84QyxDQUMxQyxDQUFDLzdDLEtBQUssQ0FBQ3M5QyxVQUFQLEVBQW1CNUQsSUFBSSxDQUFDNXNCLFFBQUwsQ0FBY0MsbUJBQWpDLENBRDBDLENBUDlDLENBUHVDLEVBaUJ0QzJzQixJQUFJLENBQUM3aUMsU0FBTCxDQUFla1csbUJBQWYsSUFBc0MsRUFBdkMsSUFDTyxDQUFDLEdBQUcvc0IsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQzZCLFdBQXRDLEVBQW1ELENBQUMsR0FBR2g4QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzdpQyxTQUFMLENBQWVrVyxtQkFBMUMsQ0FBbkQsRUFBbUg7TUFBRTtNQUFySCxDQUQvQixLQUVPLENBQUMsR0FBRy9zQixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDOEIsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHajhDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXVpQixXQUFmLENBQTJCLDJEQUEzQixDQUEzQixDQUFuRCxFQUF3SztNQUFFO01BQTFLLENBRi9CLENBakJ1QyxDQUEzQyxDQUQ4QyxFQXNCOUMsQ0FBQyxHQUFHN3BCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN2QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDK0MsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHbDhDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1Q2dELFdBQXZDLEVBQW9ELENBQ2hELENBQUMsR0FBR244QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlZ3FCLE9BQWYsQ0FBdUIsaUJBQXZCLENBQTNCLElBQXdFLEdBQW5HLEVBQXdHO01BQUU7TUFBMUcsQ0FEZ0QsRUFFaEQ4cUIsV0FGZ0QsQ0FBcEQsQ0FEOEMsQ0FBbEQsQ0FEdUMsRUFPdkMsQ0FBQyxHQUFHcDhDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QztRQUNuQyxTQUFPLGFBRDRCO1FBRW5DdnlDLElBQUksRUFBRSxNQUY2QjtRQUduQ2l3QyxXQUFXLEVBQUUsRUFIc0I7UUFJbkM5MkMsS0FBSyxFQUFFMjVDLElBQUksQ0FBQzVzQixRQUFMLENBQWNDLG1CQUFkLEdBQ0Qyc0IsSUFBSSxDQUFDNXlDLFlBQUwsQ0FBa0JxdUMsVUFBbEIsR0FDRSxHQURGLEdBRUV1RSxJQUFJLENBQUM1c0IsUUFBTCxDQUFjQyxtQkFIZixHQUlELEVBUjZCO1FBU25DOHdCLFFBQVEsRUFBRTtNQVR5QixDQUF2QyxFQVVHLElBVkgsRUFVUztNQUFFO01BVlgsRUFVd0J4QixXQVZ4QixDQVB1QyxFQWtCdEMzQyxJQUFJLENBQUM3aUMsU0FBTCxDQUFlMHRDLG9CQUFmLElBQXVDLEVBQXhDLElBQ08sQ0FBQyxHQUFHdmtELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NtQyxXQUF0QyxFQUFtRCxDQUFDLEdBQUd0OEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUM3aUMsU0FBTCxDQUFlMHRDLG9CQUExQyxDQUFuRCxFQUFvSDtNQUFFO01BQXRILENBRC9CLEtBRU8sQ0FBQyxHQUFHdmtELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NvQyxXQUF0QyxFQUFtRCxDQUFDLEdBQUd2OEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQix1QkFBMUIsQ0FBM0IsQ0FBbkQsRUFBbUk7TUFBRTtNQUFySSxDQUYvQixDQWxCdUMsQ0FBM0MsQ0F0QjhDLENBQWxELENBRDhDLENBQWxELENBVnVDLENBQTNDLENBcEU2QyxFQThIN0MsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcUQsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHeDhDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3NELFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3o4QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QjhKLHVCQUF2QixFQUFnRDtRQUM1QyxTQUFPLDhCQURxQztRQUU1Q3g5QyxJQUFJLEVBQUUsRUFGc0M7UUFHNUNzSixJQUFJLEVBQUV3cEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZSthLE1BQWYsQ0FBc0IsUUFBdEIsQ0FIc0M7UUFJNUNnNEIsT0FBTyxFQUFFWCxJQUFJLENBQUMxc0I7TUFKOEIsQ0FBaEQsRUFLRyxJQUxILEVBS1M7TUFBRTtNQUxYLEVBS3dCLENBQUMsTUFBRCxFQUFTLFNBQVQsQ0FMeEIsQ0FEOEMsRUFPOUMsQ0FBQyxHQUFHaHRCLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCOEosdUJBQXZCLEVBQWdEO1FBQzVDLFNBQU8sT0FEcUM7UUFFNUN4OUMsSUFBSSxFQUFFLFNBRnNDO1FBRzVDc0osSUFBSSxFQUFFd3BDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrYSxNQUFmLENBQXNCLE1BQXRCLENBSHNDO1FBSTVDZzRCLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtVQUFFLE9BQVFmLElBQUksQ0FBQ3pzQixhQUFMLEVBQVI7UUFBZ0MsQ0FBOUU7TUFKbUMsQ0FBaEQsRUFLRyxJQUxILEVBS1M7TUFBRTtNQUxYLEVBS3dCLENBQUMsTUFBRCxDQUx4QixDQVA4QyxDQUFsRCxDQUQ4QyxDQUFsRCxDQTlINkMsQ0FBakQsQ0FENkMsQ0FBakQsQ0FMNkMsQ0FBUDtJQXNKdEMsQ0F0SkssQ0FEVjtJQXdKQ2hvQixDQUFDLEVBQUU7SUFBRTs7RUF4Sk4sQ0FGSCxFQTJKRztFQUFFO0VBM0pMLEVBMkprQixDQUFDLGNBQUQsQ0EzSmxCLENBRmdGLENBQXBELEVBOEo3QjtFQUFLO0VBOUp3QixDQUFoQztBQStKSDs7QUFDRG5GLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDcFBhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk0NkMsWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBVWgxQyxDQUFWLEVBQWE7RUFBRSxPQUFRLENBQUMsR0FBRzdGLEtBQUssQ0FBQzg2QyxXQUFWLEVBQXVCLGlCQUF2QixHQUEyQ2oxQyxDQUFDLEdBQUdBLENBQUMsRUFBaEQsRUFBb0QsQ0FBQyxHQUFHN0YsS0FBSyxDQUFDKzZDLFVBQVYsR0FBcEQsRUFBNkVsMUMsQ0FBckY7QUFBMEYsQ0FBNUg7O0FBQ0EsSUFBSWt6QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUcsQ0FBQyxNQUFELENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHLENBQUMsT0FBRCxDQUFqQjs7QUFDQSxJQUFJQyxVQUFVLEdBQUcsYUFBY3dCLFlBQVksQ0FBQyxZQUFZO0VBQUU7RUFBYyxPQUFPLENBQUMsR0FBRzc2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M7SUFBRSxTQUFPO0VBQVQsQ0FBdEMsRUFBOEQsSUFBOUQsRUFBb0UsQ0FBQztFQUFFO0VBQXZFLENBQVA7QUFBK0YsQ0FBNUgsQ0FBM0M7O0FBQ0EsSUFBSUcsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHLENBQUMsTUFBRCxDQUFqQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxTQUFTWCxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELElBQUlDLGtCQUFrQixHQUFHLENBQUMsR0FBR2g2QyxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsU0FBNUIsQ0FBekI7O0VBQ0EsT0FBUSxDQUFDLEdBQUdqNkMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCbEQsTUFBTSxDQUFDcjNDLElBQTdCLEVBQW1DLFVBQVU4TCxLQUFWLEVBQWlCbTJDLENBQWpCLEVBQW9CO0lBQzNJLE9BQVEsQ0FBQyxHQUFHeGtELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7TUFDakV0dkMsR0FBRyxFQUFFMjVDLENBRDREO01BRWpFLFNBQU8sQ0FBQyxHQUFHeGtELEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMscUJBQUQsRUFBd0I7UUFDakQsd0JBQXdCMTFDLE1BQU0sQ0FBQ3E5QyxDQUFELENBQU4sSUFBYTVLLE1BQU0sQ0FBQ3IzQyxJQUFQLENBQVk0RCxNQUFaLEdBQXFCO01BRFQsQ0FBeEIsQ0FBMUI7SUFGMEQsQ0FBckMsRUFLN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNKLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBRy80QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7TUFDL0J6MkMsSUFBSSxFQUFFLGFBQWFmLE1BQWIsQ0FBb0IwTSxLQUFLLENBQUNXLFdBQTFCLENBRHlCO01BRS9CNk4sTUFBTSxFQUFFLFFBRnVCO01BRy9CLFNBQU87SUFId0IsQ0FBbkMsRUFJRyxDQUFDLEdBQUc3YyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnJzQyxLQUFLLENBQUM2SixLQUFqQyxDQUpILEVBSTRDO0lBQUU7SUFKOUMsRUFJaUU4Z0MsVUFKakUsQ0FENkMsRUFNNUNZLE1BQU0sQ0FBQ3B3QyxPQUFSLElBQ08sQ0FBQyxHQUFHeEosS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUM1RHR2QyxHQUFHLEVBQUUsQ0FEdUQ7TUFFNUQsU0FBTyxtQ0FGcUQ7TUFHNUR3dkMsT0FBTyxFQUFFUixNQUFNLENBQUM5MkI7SUFINEMsQ0FBckMsRUFJeEIsQ0FDQyxDQUFDLEdBQUcvaUIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDRixVQUF0QyxFQUFrRCxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsV0FBNUIsQ0FBM0IsQ0FBbEQsRUFBd0g7SUFBRTtJQUExSCxDQURELEVBRUMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQ3hDLENBQUMsR0FBR241QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO01BQ3ZDLFNBQU8sd0RBRGdDO01BRXZDNXBDLElBQUksRUFBRTtJQUZpQyxDQUEzQyxDQUR3QyxDQUE1QyxDQUZELENBSndCLENBRC9CLElBY00sQ0FBQyxHQUFHcFEsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBcEJ1QyxFQXFCN0MsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1Q0QsVUFBdkMsRUFBbUQsQ0FDL0MsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQ205QyxjQUFWLEVBQTBCLENBQUMsR0FBR245QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUM7TUFDN0QsdUJBQXVCUSxNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO1FBQUUsT0FBU1osTUFBTSxDQUFDbjZCLGtCQUFSLEdBQThCKzZCLE1BQXRDO01BQWdELENBQTlGLENBRHNDO01BRTdEMTZDLEtBQUssRUFBRXNPLEtBQUssQ0FBQ1csV0FGZ0Q7TUFHN0RwSSxJQUFJLEVBQUU7SUFIdUQsQ0FBdkMsRUFJdkIsSUFKdUIsRUFJakI7SUFBRTtJQUplLEVBSUZ3eUMsVUFKRSxDQUExQixFQUlxQyxDQUNqQyxDQUFDcDVDLEtBQUssQ0FBQ2kvQyxjQUFQLEVBQXVCcEYsTUFBTSxDQUFDbjZCLGtCQUE5QixDQURpQyxDQUpyQyxDQUQrQyxFQVEvQzI1QixVQVIrQyxDQUFuRCxDQXJCNkMsQ0FBakQsQ0FERCxFQWlDQyxDQUFDLEdBQUdyNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRyxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd0NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NJLFVBQXBDLEVBQWdELENBQzVDLENBQUMsR0FBR3Y1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQyxJQUFuQyxFQUF5QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ2xqQyxVQUFQLENBQWtCdEksS0FBSyxDQUFDZ08sTUFBeEIsQ0FBM0IsSUFBOEQsR0FBOUQsR0FBb0UsQ0FBQyxHQUFHcmMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJkLE1BQU0sQ0FBQ3B3QyxPQUFsQyxDQUE3RyxFQUF5SjtJQUFFO0lBQTNKLENBRHNDLENBQTFDLENBRDRDLENBQWhELENBRHVDLEVBTXZDLENBQUMsR0FBR3hKLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztNQUMvQnoyQyxJQUFJLEVBQUUsYUFBYWYsTUFBYixDQUFvQjBNLEtBQUssQ0FBQ1csV0FBMUIsQ0FEeUI7TUFFL0I2TixNQUFNLEVBQUUsUUFGdUI7TUFHL0IsU0FBTztJQUh3QixDQUFuQyxFQUlHLENBQ0MsQ0FBQyxHQUFHN2MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDTSxXQUF0QyxFQUFtRCxDQUFDLEdBQUd6NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsd0JBQTVCLENBQTNCLENBQW5ELEVBQXNJO0lBQUU7SUFBeEksQ0FERCxFQUVDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7TUFDdkMsU0FBTyxVQURnQztNQUV2QzVwQyxJQUFJLEVBQUU7SUFGaUMsQ0FBM0MsQ0FGRCxDQUpILEVBVUc7SUFBRTtJQVZMLEVBVWtCb3BDLFVBVmxCLENBTnVDLENBQTNDLENBRDZDLENBQWpELENBakNELENBTDZCLEVBMEQ3QjtJQUFFO0lBMUQyQixDQUFoQztFQTJESCxDQTVEdUYsQ0FBcEQsRUE0RGhDO0VBQUk7RUE1RDRCLENBQXBDO0FBNkRIOztBQUNEMTVDLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDL0VhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2Q1dUMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJbXdDLFdBQVcsR0FBRyxDQUFDLE1BQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZHB3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUlxd0MsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2R4d0MsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJeXdDLFdBQVcsR0FBRyxDQUFDLE1BQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZDF3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUkyd0MsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLFNBQVNqRCxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELElBQUlDLGtCQUFrQixHQUFHLENBQUMsR0FBR2g2QyxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsU0FBNUIsQ0FBekI7O0VBQ0EsT0FBUSxDQUFDLEdBQUdqNkMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN0RU4sTUFBTSxDQUFDaDVDLEtBQVAsQ0FBYW9JLEtBQWIsQ0FBbUJ5VyxrQkFBbkIsQ0FBc0N2WixNQUF0QyxHQUErQyxDQUFoRCxJQUNPLENBQUMsR0FBR25HLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QmQsTUFBTSxDQUFDLGNBQUQsQ0FBN0IsRUFBK0M7SUFDdEVodkMsR0FBRyxFQUFFLENBRGlFO0lBRXRFakUsSUFBSSxFQUFFLFdBRmdFO0lBR3RFc0osSUFBSSxFQUFFMnBDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK2EsTUFBakIsQ0FBd0Isa0JBQXhCLENBSGdFO0lBSXRFalMsSUFBSSxFQUFFLGdCQUpnRTtJQUt0RWlxQyxPQUFPLEVBQUVSLE1BQU0sQ0FBQzUzQjtFQUxzRCxDQUEvQyxFQU14QixJQU53QixFQU1sQjtFQUFFO0VBTmdCLEVBTUgsQ0FBQyxNQUFELENBTkcsQ0FEL0IsSUFRTSxDQUFDLEdBQUdqaUIsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBVGlFLEVBVXZFLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLE9BQUQsQ0FBN0IsRUFBd0M7SUFDcEMsZ0JBQWdCQSxNQUFNLENBQUN2c0IsaUJBRGE7SUFFcENqVixLQUFLLEVBQUV3aEMsTUFBTSxDQUFDL3JCLGdCQUZzQjtJQUdwQ3l2QixPQUFPLEVBQUUxRCxNQUFNLENBQUN0c0Isa0JBSG9CO0lBSXBDeXlCLE9BQU8sRUFBRW5HLE1BQU0sQ0FBQ3I1QjtFQUpvQixDQUF4QyxFQUtHO0lBQ0MsV0FBUyxDQUFDLEdBQUd4Z0IsS0FBSyxDQUFDNDZDLE9BQVYsRUFBbUIsWUFBWTtNQUFFLE9BQU8sQ0FDNUNmLE1BQU0sQ0FBQ3JzQixlQUFQLEtBQTJCLENBQTVCLElBQ08sQ0FBQyxHQUFHeHRCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO1FBQUV2dkMsR0FBRyxFQUFFO01BQVAsQ0FBOUMsRUFBMEQsQ0FDakYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSixVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztRQUN2QyxTQUFPLDhCQURnQztRQUV2QzVwQyxJQUFJLEVBQUU7TUFGaUMsQ0FBM0MsQ0FENkMsRUFLN0MsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DLElBQW5DLEVBQXlDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixrQkFBNUIsQ0FBM0IsQ0FBekMsRUFBc0g7TUFBRTtNQUF4SCxDQUw2QyxDQUFqRCxDQUQ2QyxFQVE3QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNGLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2o1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNELFVBQXJDLEVBQWlELENBQUMsR0FBR2w1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0Qix1Q0FBNUIsQ0FBM0IsSUFBbUcsR0FBbkcsR0FBeUcsQ0FBQyxHQUFHOUksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsK0NBQTVCLENBQTNCLENBQTFKLEVBQW9RO01BQUU7TUFBdFEsQ0FENkMsQ0FBakQsQ0FSNkMsQ0FBakQsQ0FEaUYsRUFhakYsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDQyxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdwNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRSxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdyNUMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJULE1BQU0sQ0FBQyxjQUFELENBQTdCLEVBQStDO1FBQzNDLFNBQU8seUJBRG9DO1FBRTNDM3BDLElBQUksRUFBRTJwQyxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQithLE1BQWpCLENBQXdCLFFBQXhCLENBRnFDO1FBRzNDemIsSUFBSSxFQUFFLEVBSHFDO1FBSTNDeXpDLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtVQUFFLE9BQVFaLE1BQU0sQ0FBQ3I1QixnQkFBUCxFQUFSO1FBQXFDLENBQW5GO01BSmtDLENBQS9DLEVBS0csSUFMSCxFQUtTO01BQUU7TUFMWCxFQUt3QixDQUFDLE1BQUQsQ0FMeEIsQ0FENkMsRUFPN0MsQ0FBQyxHQUFHeGdCLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsY0FBRCxDQUE3QixFQUErQztRQUMzQyxTQUFPLE9BRG9DO1FBRTNDM3BDLElBQUksRUFBRTJwQyxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQithLE1BQWpCLENBQXdCLFVBQXhCLENBRnFDO1FBRzNDemIsSUFBSSxFQUFFLFNBSHFDO1FBSTNDeXpDLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtVQUFFLE9BQVFaLE1BQU0sQ0FBQ3pyQixrQkFBUCxFQUFSO1FBQXVDLENBQXJGO01BSmtDLENBQS9DLEVBS0csSUFMSCxFQUtTO01BQUU7TUFMWCxFQUt3QixDQUFDLE1BQUQsQ0FMeEIsQ0FQNkMsQ0FBakQsQ0FENkMsQ0FBakQsQ0FiaUYsQ0FBMUQsRUE2QnhCO01BQUc7TUE3QnFCLENBRC9CLElBK0JPeXJCLE1BQU0sQ0FBQ3JzQixlQUFQLEtBQTJCLENBQTVCLElBQ0ssQ0FBQyxHQUFHeHRCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO1FBQUV2dkMsR0FBRyxFQUFFO01BQVAsQ0FBOUMsRUFBMEQsQ0FDakYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRyxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd0NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSSxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd2NUMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztRQUN2QzVwQyxJQUFJLEVBQUUsTUFEaUM7UUFFdkMsU0FBTztNQUZnQyxDQUEzQyxDQUQ2QyxFQUs3QyxDQUFDLEdBQUdwUSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUMsSUFBbkMsRUFBeUMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLHlCQUE1QixDQUEzQixDQUF6QyxFQUE2SDtNQUFFO01BQS9ILENBTDZDLENBQWpELENBRDZDLEVBUTdDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLE1BQU0sQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLGtCQUE1QixDQUEzQixDQUFOLEdBQW9GLEdBQS9HLEVBQW9IO01BQUU7TUFBdEgsQ0FSNkMsRUFTN0MsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSyxVQUFyQyxFQUFpRCxDQUM1Q0ssTUFBTSxDQUFDM3JCLHVCQUFQLENBQStCL25CLE1BQS9CLEdBQXdDLENBQXpDLElBQ08sQ0FBQyxHQUFHbkcsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ1YsV0FBckMsRUFBa0QsRUFDeEUsQ0FBQyxHQUFHejVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQmpELE1BQU0sQ0FBQzNyQix1QkFBN0IsRUFBc0QsVUFBVXUyQixHQUFWLEVBQWVwMUMsQ0FBZixFQUFrQjtRQUNySixPQUFRLENBQUMsR0FBR3JQLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7VUFDakV0dkMsR0FBRyxFQUFFd0UsQ0FENEQ7VUFFakUsU0FBTyxDQUFDLEdBQUdyUCxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLFdBQUQsRUFBYztZQUN2Qyx3QkFBd0J4dEMsQ0FBQyxJQUFJd3FDLE1BQU0sQ0FBQzNyQix1QkFBUCxDQUErQi9uQixNQUEvQixHQUF3QztVQUQ5QixDQUFkLENBQTFCO1FBRjBELENBQXJDLEVBSzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO1VBQy9CejJDLElBQUksRUFBRSxHQUFHZixNQUFILENBQVVrNEMsTUFBTSxDQUFDdHhDLFNBQWpCLEVBQTRCNUcsTUFBNUIsQ0FBbUM4aUQsR0FBRyxDQUFDejFDLFdBQXZDLENBRHlCO1VBRS9CLFNBQU87UUFGd0IsQ0FBbkMsRUFHRyxDQUFDLEdBQUdoUCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQitKLEdBQUcsQ0FBQ3ZzQyxLQUEvQixDQUhILEVBRzBDO1FBQUU7UUFINUMsRUFHK0Q4aUMsV0FIL0QsQ0FERCxDQUw2QixFQVU3QjtRQUFFO1FBVjJCLENBQWhDO01BV0gsQ0FaZ0YsQ0FBcEQsRUFZekI7TUFBSTtNQVpxQixDQUQ0QyxFQUFsRCxDQUQvQixLQWdCTyxDQUFDLEdBQUdoN0MsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2MsV0FBckMsRUFBa0QsQ0FBQyxHQUFHajdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQityQixPQUFqQixDQUF5QixxQkFBekIsQ0FBM0IsQ0FBbEQsRUFBK0g7TUFBRTtNQUFqSSxDQWhCL0IsQ0FENkMsQ0FBakQsQ0FUNkMsQ0FBakQsQ0FEaUYsRUE4QmpGLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMrQixXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdsN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDZ0MsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHbjdDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7UUFDdkM1cEMsSUFBSSxFQUFFLGNBRGlDO1FBRXZDLFNBQU87TUFGZ0MsQ0FBM0MsQ0FEOEMsRUFLOUMsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DLElBQW5DLEVBQXlDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0Qix5QkFBNUIsQ0FBM0IsQ0FBekMsRUFBNkg7TUFBRTtNQUEvSCxDQUw4QyxDQUFsRCxDQUQ4QyxFQVE5QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNpQyxXQUFyQyxFQUFrRCxDQUM3Q3ZCLE1BQU0sQ0FBQzFyQix5QkFBUCxDQUFpQ2hvQixNQUFqQyxHQUEwQyxDQUEzQyxJQUNPLENBQUMsR0FBR25HLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNrQixXQUFyQyxFQUFrRCxFQUN4RSxDQUFDLEdBQUdyN0MsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCakQsTUFBTSxDQUFDMXJCLHlCQUE3QixFQUF3RCxVQUFVczJCLEdBQVYsRUFBZXAxQyxDQUFmLEVBQWtCO1FBQ3ZKLE9BQVEsQ0FBQyxHQUFHclAsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztVQUNqRXR2QyxHQUFHLEVBQUV3RSxDQUQ0RDtVQUVqRSxTQUFPLENBQUMsR0FBR3JQLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsV0FBRCxFQUFjO1lBQ3ZDLHdCQUF3Qnh0QyxDQUFDLElBQUl3cUMsTUFBTSxDQUFDMXJCLHlCQUFQLENBQWlDaG9CLE1BQWpDLEdBQTBDO1VBRGhDLENBQWQsQ0FBMUI7UUFGMEQsQ0FBckMsRUFLN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7VUFDL0J6MkMsSUFBSSxFQUFFLEdBQUdmLE1BQUgsQ0FBVWs0QyxNQUFNLENBQUN0eEMsU0FBakIsRUFBNEI1RyxNQUE1QixDQUFtQzhpRCxHQUFHLENBQUN6MUMsV0FBdkMsQ0FEeUI7VUFFL0I2TixNQUFNLEVBQUUsUUFGdUI7VUFHL0IsU0FBTztRQUh3QixDQUFuQyxFQUlHLENBQUMsR0FBRzdjLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCK0osR0FBRyxDQUFDdnNDLEtBQS9CLENBSkgsRUFJMEM7UUFBRTtRQUo1QyxFQUkrRG9qQyxXQUovRCxDQURELENBTDZCLEVBVzdCO1FBQUU7UUFYMkIsQ0FBaEM7TUFZSCxDQWJnRixDQUFwRCxFQWF6QjtNQUFJO01BYnFCLENBRDRDLEVBQWxELENBRC9CLEtBaUJPLENBQUMsR0FBR3Q3QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDb0IsV0FBckMsRUFBa0QsQ0FBQyxHQUFHdjdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQityQixPQUFqQixDQUF5QixxQkFBekIsQ0FBM0IsQ0FBbEQsRUFBK0g7TUFBRTtNQUFqSSxDQWpCL0IsQ0FEOEMsQ0FBbEQsQ0FSOEMsQ0FBbEQsQ0E5QmlGLEVBMkRqRixDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcUMsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHeDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3NDLFdBQXJDLEVBQWtELENBQzdDNUIsTUFBTSxDQUFDM3JCLHVCQUFQLENBQStCL25CLE1BQS9CLEdBQXdDLENBQXhDLElBQ0cwekMsTUFBTSxDQUFDMXJCLHlCQUFQLENBQWlDaG9CLE1BQWpDLEdBQTBDLENBRDlDLElBRU8sQ0FBQyxHQUFHbkcsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCZCxNQUFNLENBQUMsY0FBRCxDQUE3QixFQUErQztRQUN0RWh2QyxHQUFHLEVBQUUsQ0FEaUU7UUFFdEUsU0FBTyx5QkFGK0Q7UUFHdEVqRSxJQUFJLEVBQUUsRUFIZ0U7UUFJdEVzSixJQUFJLEVBQUUycEMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrYSxNQUFqQixDQUF3QixpQkFBeEIsQ0FKZ0U7UUFLdEVnNEIsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO1VBQUUsT0FBUVosTUFBTSxDQUFDbnJCLGtCQUFQLEVBQVI7UUFBdUMsQ0FBckY7TUFMNkQsQ0FBL0MsRUFNeEIsSUFOd0IsRUFNbEI7TUFBRTtNQU5nQixFQU1ILENBQUMsTUFBRCxDQU5HLENBRi9CLElBU00sQ0FBQyxHQUFHMXVCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQVZ3QyxFQVc5QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJULE1BQU0sQ0FBQyxjQUFELENBQTdCLEVBQStDO1FBQzNDLFNBQU8sT0FEb0M7UUFFM0NqekMsSUFBSSxFQUFFLFNBRnFDO1FBRzNDc0osSUFBSSxFQUFFMnBDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK2EsTUFBakIsQ0FBd0IsU0FBeEIsQ0FIcUM7UUFJM0NnNEIsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO1VBQUUsT0FBUVosTUFBTSxDQUFDcjVCLGdCQUFQLEVBQVI7UUFBcUMsQ0FBbkY7TUFKa0MsQ0FBL0MsRUFLRyxJQUxILEVBS1M7TUFBRTtNQUxYLEVBS3dCLENBQUMsTUFBRCxDQUx4QixDQVg4QyxDQUFsRCxDQUQ4QyxDQUFsRCxDQTNEaUYsQ0FBMUQsRUErRXhCO01BQUc7TUEvRXFCLENBRDdCLElBaUZLcTVCLE1BQU0sQ0FBQ3JzQixlQUFQLEtBQTJCLENBQTVCLElBQ0ssQ0FBQyxHQUFHeHRCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO1FBQUV2dkMsR0FBRyxFQUFFO01BQVAsQ0FBOUMsRUFBMEQsQ0FDakYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJULE1BQU0sQ0FBQyxrQkFBRCxDQUE3QixFQUFtRDtRQUFFdDNDLElBQUksRUFBRXMzQyxNQUFNLENBQUN0ckI7TUFBZixDQUFuRCxFQUFzRixJQUF0RixFQUE0RjtNQUFFO01BQTlGLEVBQTJHLENBQUMsTUFBRCxDQUEzRyxDQURpRixFQUVqRixDQUFDLEdBQUd2dUIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDdUMsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHMTdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3dDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRzM3QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLGNBQUQsQ0FBN0IsRUFBK0M7UUFDM0MsU0FBTyx5QkFEb0M7UUFFM0NqekMsSUFBSSxFQUFFLEVBRnFDO1FBRzNDc0osSUFBSSxFQUFFMnBDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK2EsTUFBakIsQ0FBd0IsUUFBeEIsQ0FIcUM7UUFJM0NnNEIsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO1VBQUUsT0FBUVosTUFBTSxDQUFDcjVCLGdCQUFQLEVBQVI7UUFBcUMsQ0FBbkY7TUFKa0MsQ0FBL0MsRUFLRyxJQUxILEVBS1M7TUFBRTtNQUxYLEVBS3dCLENBQUMsTUFBRCxDQUx4QixDQUQ4QyxFQU85QyxDQUFDLEdBQUd4Z0IsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJULE1BQU0sQ0FBQyxjQUFELENBQTdCLEVBQStDO1FBQzNDLFNBQU8sQ0FBQyxHQUFHNzVDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsT0FBRCxFQUFVO1VBQ25DLHVCQUF1QmhELE1BQU0sQ0FBQ242QixrQkFBUCxDQUEwQnZaLE1BQTFCLEtBQXFDO1FBRHpCLENBQVYsQ0FBMUIsQ0FEb0M7UUFJM0NTLElBQUksRUFBRSxTQUpxQztRQUszQ3NKLElBQUksRUFBRSxHQUFHdk8sTUFBSCxDQUFVazRDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsWUFBNUIsQ0FBVixFQUFxRCxJQUFyRCxFQUEyRG5ILE1BQTNELENBQWtFazRDLE1BQU0sQ0FBQ242QixrQkFBUCxDQUEwQnZaLE1BQTVGLEVBQW9HLElBQXBHLEVBQTBHeEUsTUFBMUcsQ0FBaUhrNEMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixZQUE1QixDQUFqSCxDQUxxQztRQU0zQ3V4QyxPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7VUFBRSxPQUFRWixNQUFNLENBQUNwN0IsZ0JBQVAsRUFBUjtRQUFxQyxDQUFuRjtNQU5rQyxDQUEvQyxFQU9HLElBUEgsRUFPUztNQUFFO01BUFgsRUFPd0IsQ0FBQyxPQUFELEVBQVUsTUFBVixDQVB4QixDQVA4QyxDQUFsRCxDQUQ4QyxDQUFsRCxDQUZpRixDQUExRCxFQW9CeEI7TUFBRztNQXBCcUIsQ0FEN0IsSUFzQkksQ0FBQyxHQUFHemUsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBdkkrQixDQUFQO0lBd0l0QyxDQXhJSyxDQURWO0lBMElDdDFDLENBQUMsRUFBRTtJQUFFOztFQTFJTixDQUxILEVBZ0pHO0VBQUU7RUFoSkwsRUFnSmtCLENBQUMsY0FBRCxFQUFpQixPQUFqQixFQUEwQixTQUExQixDQWhKbEIsQ0FWdUUsRUEySnZFLENBQUMsR0FBR2pGLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsT0FBRCxDQUE3QixFQUF3QztJQUNwQyxnQkFBZ0JBLE1BQU0sQ0FBQ2xzQiwyQkFEYTtJQUVwQ3RWLEtBQUssRUFBRTtFQUY2QixDQUF4QyxFQUdHO0lBQ0MsV0FBUyxDQUFDLEdBQUdyWSxLQUFLLENBQUM0NkMsT0FBVixFQUFtQixZQUFZO01BQUUsT0FBTyxDQUM3QyxDQUFDLEdBQUc1NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR241QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLDBCQUFELENBQTdCLENBRHVDLEVBRXZDLENBQUMsR0FBRzc1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFBRSxTQUFPO01BQVQsQ0FBckMsRUFBdUYsQ0FDbkYsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztRQUNwQyxTQUFPLHlGQUQ2QjtRQUVwQ2tCLE9BQU8sRUFBRVIsTUFBTSxDQUFDbHJCO01BRm9CLENBQXhDLEVBR0csZ0NBSEgsQ0FEbUYsRUFLbkYsQ0FBQyxHQUFHM3VCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztRQUNwQyxTQUFPLG1FQUQ2QjtRQUVwQ2tCLE9BQU8sRUFBRVIsTUFBTSxDQUFDanJCO01BRm9CLENBQXhDLEVBR0csdUJBSEgsQ0FMbUYsQ0FBdkYsQ0FGdUMsQ0FBM0MsQ0FENkMsQ0FBUDtJQWN0QyxDQWRLLENBRFY7SUFnQkMzcEIsQ0FBQyxFQUFFO0lBQUU7O0VBaEJOLENBSEgsRUFvQkc7RUFBRTtFQXBCTCxFQW9Ca0IsQ0FBQyxjQUFELENBcEJsQixDQTNKdUUsRUFnTHZFLENBQUMsR0FBR2pGLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsT0FBRCxDQUE3QixFQUF3QztJQUNwQ3hoQyxLQUFLLEVBQUUsS0FENkI7SUFFcEMsZ0JBQWdCd2hDLE1BQU0sQ0FBQ2pzQjtFQUZhLENBQXhDLEVBR0c7SUFDQyxXQUFTLENBQUMsR0FBRzV0QixLQUFLLENBQUM0NkMsT0FBVixFQUFtQixZQUFZO01BQUUsT0FBTyxDQUM3QyxDQUFDLEdBQUc1NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DeUMsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHNTdDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7UUFDdkM1cEMsSUFBSSxFQUFFLE1BRGlDO1FBRXZDLFNBQU87TUFGZ0MsQ0FBM0MsQ0FENkMsRUFLN0MsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDMEMsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHNzdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLHlCQUE1QixDQUEzQixDQUFuRCxFQUF1STtNQUFFO01BQXpJLENBTDZDLENBQWpELENBRDZDLEVBUTdDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzJDLFdBQXJDLEVBQWtELENBQUMsR0FBRzk3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDaHNCLHFCQUFsQyxDQUFsRCxFQUE0RztNQUFFO01BQTlHLENBUjZDLEVBUzdDLENBQUMsR0FBRzd0QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM0QyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUcvN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO1FBQ3BDLFNBQU8seUZBRDZCO1FBRXBDa0IsT0FBTyxFQUFFUixNQUFNLENBQUM3cUI7TUFGb0IsQ0FBeEMsRUFHRyxDQUFDLEdBQUdodkIsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK2EsTUFBakIsQ0FBd0Isb0JBQXhCLENBQTNCLENBSEgsRUFHOEU7TUFBRTtNQUhoRixDQUQ4QyxFQUs5QyxDQUFDLEdBQUdyaUIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO1FBQ3BDLFNBQU8sbUVBRDZCO1FBRXBDa0IsT0FBTyxFQUFFUixNQUFNLENBQUM1cUI7TUFGb0IsQ0FBeEMsRUFHRyxDQUFDLEdBQUdqdkIsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK2EsTUFBakIsQ0FBd0IsU0FBeEIsQ0FBM0IsQ0FISCxFQUdtRTtNQUFFO01BSHJFLENBTDhDLENBQWxELENBVDZDLENBQVA7SUFtQnRDLENBbkJLLENBRFY7SUFxQkNwZCxDQUFDLEVBQUU7SUFBRTs7RUFyQk4sQ0FISCxFQXlCRztFQUFFO0VBekJMLEVBeUJrQixDQUFDLGNBQUQsQ0F6QmxCLENBaEx1RSxFQTBNdEU0MEMsTUFBTSxDQUFDNTRDLFNBQVIsSUFDTyxDQUFDLEdBQUdqQixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxZQUFELENBQTdCLEVBQTZDO0lBQUVodkMsR0FBRyxFQUFFO0VBQVAsQ0FBN0MsQ0FEL0IsSUFFTSxDQUFDLEdBQUc3SyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0E1TWlFLEVBNk10RVYsTUFBTSxDQUFDdjZCLE1BQVIsSUFDTyxDQUFDLEdBQUd0ZixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxRQUFELENBQTdCLEVBQXlDO0lBQ2hFaHZDLEdBQUcsRUFBRSxDQUQyRDtJQUVoRXFGLElBQUksRUFBRTJwQyxNQUFNLENBQUN0NUIsVUFGbUQ7SUFHaEUsU0FBTyxDQUFDLEdBQUd2Z0IsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEI7TUFBRSxrQkFBa0JoRCxNQUFNLENBQUN2NkI7SUFBM0IsQ0FBMUI7RUFIeUQsQ0FBekMsRUFJeEIsSUFKd0IsRUFJbEI7RUFBRTtFQUpnQixFQUlILENBQUMsTUFBRCxFQUFTLE9BQVQsQ0FKRyxDQUQvQixJQU1NLENBQUMsR0FBR3RmLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQW5OaUUsQ0FBM0MsQ0FBaEM7QUFxTkg7O0FBQ0R6NkMsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUNsUWE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7O0FBQ0EsU0FBU0QsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUdoNkMsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFNBQTVCLENBQXpCOztFQUNBLE9BQVEsQ0FBQyxHQUFHajZDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFDakUsU0FBTyxDQUFDLEdBQUduNkMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyx1RkFBRCxFQUEwRmhELE1BQU0sQ0FBQ3ArQixTQUFqRyxDQUExQjtFQUQwRCxDQUFyQyxFQUU3QixDQUNDLENBQUMsR0FBR3piLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxNQURnQztJQUV2QzVwQyxJQUFJLEVBQUV5cEMsTUFBTSxDQUFDbnpDLEtBQVAsQ0FBYUUsSUFBYixHQUFvQixjQUFwQixHQUFxQztFQUZKLENBQTNDLEVBR0csSUFISCxFQUdTO0VBQUU7RUFIWCxFQUd3QixDQUFDLE1BQUQsQ0FIeEIsQ0FERCxFQUtDLENBQUMsR0FBRzVHLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ0osVUFBdEMsRUFBa0QsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUNuekMsS0FBUCxDQUFhOEMsT0FBeEMsQ0FBbEQsRUFBb0c7RUFBRTtFQUF0RyxDQUxELEVBTUMsQ0FBQyxHQUFHeEosS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0lBQy9CejJDLElBQUksRUFBRSxFQUR5QjtJQUUvQixTQUFPLENBQUMsR0FBRzFDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsb0NBQUQsRUFBdUNoRCxNQUFNLENBQUN4cUIsVUFBOUMsQ0FBMUI7RUFGd0IsQ0FBbkMsRUFHRyxDQUNDLENBQUMsR0FBR3J2QixLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDNXBDLElBQUksRUFBRSxNQURpQztJQUV2QyxTQUFPO0VBRmdDLENBQTNDLENBREQsRUFLQyxDQUFDLEdBQUdwUSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLFNBQTVCLENBQTNCLENBQTVDLEVBQWdIO0VBQUU7RUFBbEgsQ0FMRCxDQUhILEVBU0c7RUFBRTtFQVRMLENBTkQsQ0FGNkIsRUFrQjdCO0VBQUU7RUFsQjJCLENBQWhDO0FBbUJIOztBQUNEaEosY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUMzQmE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFDYmx1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUltdUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHO0VBQ2J2dUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJd3VDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUNiM3VDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSTR1QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJdUIsV0FBVyxHQUFHLENBQUMsV0FBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxTQUFTcEMsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUdoNkMsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFNBQTVCLENBQXpCOztFQUNBLE9BQVEsQ0FBQyxHQUFHajZDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQy9FUixNQUFNLENBQUNyM0MsSUFBUCxDQUFZMmUsUUFBWixDQUFxQi9hLE1BQXJCLEdBQThCLENBQS9CLElBQ08sQ0FBQyxHQUFHbkcsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3BCLFVBQXJDLEVBQWlELENBQ3hFLENBQUMsR0FBRy80QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2g1QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDNXBDLElBQUksRUFBRSxTQURpQztJQUV2QyxTQUFPO0VBRmdDLENBQTNDLENBRDZDLEVBSzdDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN2QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DLElBQW5DLEVBQXlDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixzQkFBNUIsQ0FBM0IsSUFBa0YsR0FBbEYsR0FBd0YsQ0FBQyxHQUFHOUksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJkLE1BQU0sQ0FBQ3IzQyxJQUFQLENBQVkyZSxRQUFaLENBQXFCL2EsTUFBaEQsQ0FBeEYsR0FBa0osR0FBbEosR0FBd0osQ0FBQyxHQUFHbkcsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsbUJBQTVCLENBQTNCLENBQXhKLEdBQXVPLEdBQWhSLEVBQXFSO0VBQUU7RUFBdlIsQ0FEdUMsRUFFdkMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsTUFBTSxDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3RxQixlQUFsQyxDQUFqQyxFQUFxRjtFQUFFO0VBQXZGLENBRnVDLENBQTNDLENBTDZDLENBQWpELENBRHdFLEVBV3hFLENBQUMsR0FBR3Z2QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNGLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2o1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNELFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2w1QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLFdBQUQsQ0FBN0IsRUFBNEM7SUFDeEN0M0MsSUFBSSxFQUFFcTNDLE1BQU0sQ0FBQ3IzQyxJQUFQLENBQVkyZSxRQURzQjtJQUV4QzFYLE9BQU8sRUFBRXF3QyxNQUFNLENBQUN0cUI7RUFGd0IsQ0FBNUMsRUFHRyxJQUhILEVBR1M7RUFBRTtFQUhYLEVBR3dCLENBQUMsTUFBRCxFQUFTLFNBQVQsQ0FIeEIsQ0FENkMsQ0FBakQsQ0FENkMsQ0FBakQsQ0FYd0UsQ0FBakQsQ0FEL0IsSUFxQk0sQ0FBQyxHQUFHdnZCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQXRCMEUsRUF1Qi9FWCxNQUFNLENBQUNyM0MsSUFBUCxDQUFZOFosTUFBWixDQUFtQmxXLE1BQW5CLEdBQTRCLENBQTdCLElBQ08sQ0FBQyxHQUFHbkcsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2YsVUFBckMsRUFBaUQsQ0FDeEUsQ0FBQyxHQUFHcDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0UsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkM1cEMsSUFBSSxFQUFFLGNBRGlDO0lBRXZDLFNBQU87RUFGZ0MsQ0FBM0MsQ0FENkMsRUFLN0MsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUMsSUFBbkMsRUFBeUMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLDJCQUE1QixDQUEzQixJQUF1RixHQUF2RixHQUE2RixDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmQsTUFBTSxDQUFDcjNDLElBQVAsQ0FBWThaLE1BQVosQ0FBbUJsVyxNQUE5QyxDQUE3RixHQUFxSixHQUFySixHQUEySixDQUFDLEdBQUduRyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixtQkFBNUIsQ0FBM0IsQ0FBM0osR0FBME8sR0FBblIsRUFBd1I7RUFBRTtFQUExUixDQUR1QyxFQUV2QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixNQUFNLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDcnFCLGNBQWxDLENBQWpDLEVBQW9GO0VBQUU7RUFBdEYsQ0FGdUMsQ0FBM0MsQ0FMNkMsQ0FBakQsQ0FEd0UsRUFXeEUsQ0FBQyxHQUFHeHZCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0csVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0ksVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHdjVDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsV0FBRCxDQUE3QixFQUE0QztJQUN4Q3QzQyxJQUFJLEVBQUVxM0MsTUFBTSxDQUFDcjNDLElBQVAsQ0FBWThaLE1BRHNCO0lBRXhDN1MsT0FBTyxFQUFFcXdDLE1BQU0sQ0FBQ3JxQjtFQUZ3QixDQUE1QyxFQUdHLElBSEgsRUFHUztFQUFFO0VBSFgsRUFHd0IsQ0FBQyxNQUFELEVBQVMsU0FBVCxDQUh4QixDQUQ2QyxDQUFqRCxDQUQ2QyxDQUFqRCxDQVh3RSxDQUFqRCxDQUQvQixJQXFCTSxDQUFDLEdBQUd4dkIsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBNUMwRSxFQTZDL0VYLE1BQU0sQ0FBQ3IzQyxJQUFQLENBQVltaUQsU0FBWixDQUFzQnYrQyxNQUF0QixHQUErQixDQUFoQyxJQUNPLENBQUMsR0FBR25HLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNYLFVBQXJDLEVBQWlELENBQ3hFLENBQUMsR0FBR3g1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNNLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3o1QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDNXBDLElBQUksRUFBRSxNQURpQztJQUV2QyxTQUFPO0VBRmdDLENBQTNDLENBRDhDLEVBSzlDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixnQ0FBOUIsQ0FMOEMsRUFNOUMsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUFFNEYsU0FBUyxFQUFFbEYsTUFBTSxDQUFDcHFCO0VBQXBCLENBQXJDLEVBQTJFLElBQTNFLEVBQWlGO0VBQUU7RUFBbkYsRUFBZ0d1ckIsV0FBaEcsQ0FOOEMsRUFPOUMsQ0FBQyxHQUFHaDdDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixlQUE5QixDQVA4QyxDQUFsRCxDQUR3RSxFQVV4RSxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDOEIsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHajdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQytCLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR2w3QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLFdBQUQsQ0FBN0IsRUFBNEM7SUFDeEN0M0MsSUFBSSxFQUFFcTNDLE1BQU0sQ0FBQ3IzQyxJQUFQLENBQVltaUQ7RUFEc0IsQ0FBNUMsRUFFRyxJQUZILEVBRVM7RUFBRTtFQUZYLEVBRXdCLENBQUMsTUFBRCxDQUZ4QixDQUQ4QyxDQUFsRCxDQUQ4QyxDQUFsRCxDQVZ3RSxDQUFqRCxDQUQvQixJQW1CTSxDQUFDLEdBQUcxa0QsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBaEUwRSxDQUFwRCxFQWlFN0I7RUFBRztFQWpFMEIsQ0FBaEM7QUFrRUg7O0FBQ0R6NkMsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUMvRmE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFDYm51QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUlvdUMsVUFBVSxHQUFHO0VBQ2JwdUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJcXVDLFVBQVUsR0FBRztFQUNicnVDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSXV1QyxVQUFVLEdBQUc7RUFDYnZ1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUl3dUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQ2IxdUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJMnVDLFVBQVUsR0FBRztFQUNiM3VDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSTR1QyxXQUFXLEdBQUc7RUFDZDV1QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUltd0MsV0FBVyxHQUFHO0VBQ2Rud0MsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7O0FBSUEsU0FBU2l1QyxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELE9BQVEsQ0FBQyxHQUFHLzVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnBELElBQUksQ0FBQ24zQyxJQUEzQixFQUFpQyxVQUFVNkksSUFBVixFQUFnQlAsR0FBaEIsRUFBcUI7SUFDMUksT0FBUSxDQUFDLEdBQUc3SyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pFdHZDLEdBQUcsRUFBRUEsR0FENEQ7TUFFakUsU0FBTyxDQUFDLEdBQUc3SyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQjtRQUFFLFFBQVExMUMsTUFBTSxDQUFDMEQsR0FBRCxDQUFOLEtBQWdCNnVDLElBQUksQ0FBQ24zQyxJQUFMLENBQVU0RCxNQUFWLEdBQW1CO01BQTdDLENBQTFCO0lBRjBELENBQXJDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSixVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3RDL3RDLElBQUksQ0FBQ3hFLElBQU4sSUFDTyxDQUFDLEdBQUc1RyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDbkIsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDM3hCLEtBQUwsQ0FBVzQ4QixZQUFYLENBQXdCdjVDLElBQUksQ0FBQ3hFLElBQTdCLENBQTNCLENBQWxELEVBQWtIO0lBQUU7SUFBcEgsQ0FEL0IsS0FFTyxDQUFDLEdBQUc1RyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDbEIsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHajVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLENBQXVCLE1BQXZCLENBQTNCLENBQWxELEVBQThHO0lBQUU7SUFBaEgsQ0FGL0IsQ0FEdUMsQ0FBM0MsQ0FENkMsRUFNN0MsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN0Qy90QyxJQUFJLENBQUM2SSxJQUFOLElBQ08sQ0FBQyxHQUFHalUsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2pCLFVBQXRDLEVBQWtELENBQUMsR0FBR2w1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQy9wQixVQUFMLENBQWdCdmtCLElBQUksQ0FBQzZJLElBQXJCLENBQTNCLENBQWxELEVBQTBHO0lBQUU7SUFBNUcsQ0FEL0IsS0FFTyxDQUFDLEdBQUdqVSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDZixVQUF0QyxFQUFrRCxDQUFDLEdBQUdwNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsQ0FBdUIsTUFBdkIsQ0FBM0IsQ0FBbEQsRUFBOEc7SUFBRTtJQUFoSCxDQUYvQixDQUR1QyxDQUEzQyxDQU42QyxDQUFqRCxDQURELEdBYUUsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQjF4QyxJQUFJLENBQUNrUixTQUEzQixFQUFzQyxVQUFVL0MsSUFBVixFQUFnQmxLLENBQWhCLEVBQW1CO01BQ3RJLE9BQVEsQ0FBQyxHQUFHclAsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztRQUNqRXR2QyxHQUFHLEVBQUV3RSxDQUQ0RDtRQUVqRSxTQUFPLENBQUMsR0FBR3JQLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUM7VUFBRSxRQUFReHRDLENBQUMsS0FBS2pFLElBQUksQ0FBQ2tSLFNBQUwsQ0FBZW5XLE1BQWYsR0FBd0I7UUFBeEMsQ0FBRCxFQUE4Qyw4QkFBOUMsQ0FBMUI7TUFGMEQsQ0FBckMsRUFHN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUNFLFVBQXZDLEVBQW1ELENBQy9DLENBQUMsR0FBR3I1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NHLFVBQXBDLEVBQWdELENBQzVDLENBQUMsR0FBR3Q1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsV0FBMUIsQ0FBM0IsQ0FBMUMsRUFBOEc7TUFBRTtNQUFoSCxDQUQ0QyxFQUU1QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDckM1L0IsSUFBSSxDQUFDK0MsU0FBTixJQUNPLENBQUMsR0FBR3RjLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNaLFVBQXJDLEVBQWlELENBQ3ZFaGdDLElBQUksQ0FBQ2pSLFFBQU4sSUFDTyxDQUFDLEdBQUd0SSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDWCxVQUF0QyxFQUFrRCxPQUFPLENBQUMsR0FBR3g1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFVBQTFCLENBQTNCLENBQVAsR0FBMkUsSUFBM0UsR0FBa0YsQ0FBQyxHQUFHOUksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUMzeEIsS0FBTCxDQUFXMWYsU0FBWCxDQUFxQmtSLElBQUksQ0FBQ2pSLFFBQTFCLENBQTNCLENBQWxGLEdBQW9KLElBQXRNLEVBQTRNO01BQUU7TUFBOU0sQ0FEL0IsSUFFTSxDQUFDLEdBQUd0SSxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FIa0UsRUFJdkVoaEMsSUFBSSxDQUFDK0MsU0FBTixJQUNPLENBQUMsR0FBR3RjLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NWLFdBQXRDLEVBQW1ELENBQUMsR0FBR3o1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQm5oQyxJQUFJLENBQUMrQyxTQUFoQyxDQUFuRCxFQUErRjtNQUFFO01BQWpHLENBRC9CLElBRU0sQ0FBQyxHQUFHdGMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBTmtFLENBQWpELENBRC9CLEtBU08sQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NhLFdBQXRDLEVBQW1ELENBQUMsR0FBR2g3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUEzQixDQUFuRCxFQUF5RztNQUFFO01BQTNHLENBVC9CLENBRHNDLENBQTFDLENBRjRDLENBQWhELENBRCtDLENBQW5ELENBREQsQ0FINkIsRUFxQjdCO01BQUU7TUFyQjJCLENBQWhDO0lBc0JILENBdkJnRixDQUFwRCxFQXVCekI7SUFBSTtJQXZCcUIsQ0FiOUIsRUFINkIsRUF3QzdCO0lBQUU7SUF4QzJCLENBQWhDO0VBeUNILENBMUN1RixDQUFwRCxFQTBDaEM7RUFBSTtFQTFDNEIsQ0FBcEM7QUEyQ0g7O0FBQ0R2ekIsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUNwRmE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFDYmx1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUltdUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUVwdUMsR0FBRyxFQUFFO0FBQVAsQ0FBakI7QUFDQSxJQUFJcXVDLFVBQVUsR0FBRztFQUFFcnVDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSXV1QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRXh1QyxHQUFHLEVBQUU7QUFBUCxDQUFqQjtBQUNBLElBQUl5dUMsVUFBVSxHQUFHO0VBQ2J6dUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJMHVDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUNiM3VDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSTR1QyxXQUFXLEdBQUc7RUFDZDV1QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUltd0MsV0FBVyxHQUFHO0VBQ2Rud0MsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJb3dDLFdBQVcsR0FBRztFQUNkcHdDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSXF3QyxXQUFXLEdBQUc7RUFDZHJ3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjs7QUFJQSxTQUFTaXVDLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsT0FBUSxDQUFDLEdBQUcvNUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN0RVQsSUFBSSxDQUFDbjNDLElBQUwsQ0FBVXFpRCxrQkFBVixJQUFnQyxHQUFqQyxJQUNPLENBQUMsR0FBRzVrRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcEIsVUFBckMsRUFBaUQsQ0FDeEUsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0gsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixVQUExQixDQUEzQixJQUFvRSxLQUFoSCxFQUF1SDtFQUFFO0VBQXpILENBRDZDLEVBRTdDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUN2Q08sSUFBSSxDQUFDbjNDLElBQUwsQ0FBVXFpRCxrQkFBVixJQUFnQyxHQUFqQyxJQUNPLENBQUMsR0FBRzVrRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDbEIsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHajVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsSUFBMUIsQ0FBM0IsQ0FBbEQsRUFBK0c7RUFBRTtFQUFqSCxDQUQvQixJQUVPNHdDLElBQUksQ0FBQ24zQyxJQUFMLENBQVVxaUQsa0JBQVYsSUFBZ0MsR0FBakMsSUFDSyxDQUFDLEdBQUc1a0QsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2pCLFVBQXRDLEVBQWtELENBQUMsR0FBR2w1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLEtBQTFCLENBQTNCLENBQWxELEVBQWdIO0VBQUU7RUFBbEgsQ0FEN0IsSUFFSSxDQUFDLEdBQUc5SSxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FMOEIsQ0FBNUMsQ0FGNkMsQ0FBakQsQ0FEd0UsR0FXdkUsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnBELElBQUksQ0FBQ24zQyxJQUFMLENBQVVzaUQsU0FBaEMsRUFBMkMsVUFBVXo1QyxJQUFWLEVBQWdCUCxHQUFoQixFQUFxQjtJQUM3SSxPQUFRLENBQUMsR0FBRzdLLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7TUFDakV0dkMsR0FBRyxFQUFFQSxHQUQ0RDtNQUVqRSxTQUFPLENBQUMsR0FBRzdLLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCO1FBQUUsUUFBUTExQyxNQUFNLENBQUMwRCxHQUFELENBQU4sS0FBZ0I2dUMsSUFBSSxDQUFDbjNDLElBQUwsQ0FBVXNpRCxTQUFWLENBQW9CMStDLE1BQXBCLEdBQTZCO01BQXZELENBQTFCO0lBRjBELENBQXJDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDQyxVQUFyQyxFQUFpRCxDQUM1Q2h1QyxJQUFJLENBQUMwNUMsY0FBTixJQUNPLENBQUMsR0FBRzlrRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDZCxVQUFyQyxFQUFpRCxDQUFDLEdBQUdyNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUMzeEIsS0FBTCxDQUFXZzlCLGFBQVgsQ0FBeUIzNUMsSUFBSSxDQUFDMDVDLGNBQTlCLENBQTNCLENBQWpELEVBQTRIO0lBQUU7SUFBOUgsQ0FEL0IsS0FFTyxDQUFDLEdBQUc5a0QsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2IsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLENBQXVCLE1BQXZCLENBQTNCLENBQWxELEVBQThHO0lBQUU7SUFBaEgsQ0FGL0IsQ0FENkMsQ0FBakQsQ0FERCxFQU1DLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUNJLFVBQXZDLEVBQW1ELENBQy9DLENBQUMsR0FBR3Y1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMsSUFBdkMsRUFBNkMsRUFDeEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQjF4QyxJQUFJLENBQUNrUixTQUEzQixFQUFzQyxVQUFVL0MsSUFBVixFQUFnQmxLLENBQWhCLEVBQW1CO01BQ3RJLE9BQVEsQ0FBQyxHQUFHclAsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztRQUNoRXR2QyxHQUFHLEVBQUV3RSxDQUQyRDtRQUVoRSxTQUFPLENBQUMsR0FBR3JQLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsV0FBRCxFQUFjO1VBQUUsUUFBUXh0QyxDQUFDLEtBQUtqRSxJQUFJLENBQUNrUixTQUFMLENBQWVuVyxNQUFmLEdBQXdCO1FBQXhDLENBQWQsQ0FBMUI7TUFGeUQsQ0FBcEMsRUFHN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsV0FBMUIsQ0FBM0IsQ0FBMUMsRUFBOEc7TUFBRTtNQUFoSCxDQURELEVBRUMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3JDNS9CLElBQUksQ0FBQytDLFNBQU4sSUFDTyxDQUFDLEdBQUd0YyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDWCxVQUFyQyxFQUFpRCxDQUN2RWpnQyxJQUFJLENBQUNqUixRQUFOLElBQ08sQ0FBQyxHQUFHdEksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ1YsV0FBdEMsRUFBbUQsTUFBTSxDQUFDLEdBQUd6NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixVQUExQixDQUEzQixDQUFOLEdBQTBFLElBQTFFLEdBQWlGLENBQUMsR0FBRzlJLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDM3hCLEtBQUwsQ0FBVzFmLFNBQVgsQ0FBcUJrUixJQUFJLENBQUNqUixRQUExQixDQUEzQixDQUFqRixHQUFtSixHQUF0TSxFQUEyTTtNQUFFO01BQTdNLENBRC9CLElBRU0sQ0FBQyxHQUFHdEksS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBSGtFLEVBSXZFaGhDLElBQUksQ0FBQytDLFNBQU4sSUFDTyxDQUFDLEdBQUd0YyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDYSxXQUF0QyxFQUFtRCxDQUFDLEdBQUdoN0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJuaEMsSUFBSSxDQUFDK0MsU0FBaEMsQ0FBbkQsRUFBK0Y7TUFBRTtNQUFqRyxDQUQvQixJQUVNLENBQUMsR0FBR3RjLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQU5rRSxDQUFqRCxDQUQvQixLQVNPLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDYyxXQUF0QyxFQUFtRCxDQUFDLEdBQUdqN0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixVQUExQixDQUEzQixDQUFuRCxFQUFzSDtNQUFFO01BQXhILENBVC9CLENBRHNDLENBQTFDLENBRkQsQ0FINkIsRUFpQjdCO01BQUU7TUFqQjJCLENBQWhDO0lBa0JILENBbkJnRixDQUFwRCxFQW1CekI7SUFBSTtJQW5CcUIsQ0FEWSxFQUE3QyxDQUQrQyxDQUFuRCxDQU5ELENBSDZCLEVBaUM3QjtJQUFFO0lBakMyQixDQUFoQztFQWtDSCxDQW5DZ0YsQ0FBcEQsRUFtQ3pCO0VBQUk7RUFuQ3FCLENBWDJDLEVBQWpELENBRC9CLEtBaURPLENBQUMsR0FBRzlJLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NlLFdBQXRDLEVBQW1ELENBQUMsR0FBR2w3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLHlCQUExQixDQUEzQixDQUFuRCxFQUFxSTtFQUFFO0VBQXZJLENBakQvQixDQUR1RSxDQUEzQyxDQUFoQztBQW9ESDs7QUFDRGhKLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDNUZhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUVudUMsR0FBRyxFQUFFO0FBQVAsQ0FBakI7QUFDQSxJQUFJb3VDLFVBQVUsR0FBRztFQUNicHVDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSXF1QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJdUIsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLFNBQVN4QyxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELE9BQVEsQ0FBQyxHQUFHLzVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnBELElBQUksQ0FBQ24zQyxJQUEzQixFQUFpQyxVQUFVNkksSUFBVixFQUFnQlAsR0FBaEIsRUFBcUI7SUFDMUksT0FBUSxDQUFDLEdBQUc3SyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pFdHZDLEdBQUcsRUFBRUEsR0FENEQ7TUFFakUsU0FBTyxDQUFDLEdBQUc3SyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLGlCQUFELEVBQW9CO1FBQUUsUUFBUTExQyxNQUFNLENBQUMwRCxHQUFELENBQU4sS0FBZ0I2dUMsSUFBSSxDQUFDbjNDLElBQUwsQ0FBVTRELE1BQVYsR0FBbUI7TUFBN0MsQ0FBcEIsQ0FBMUI7SUFGMEQsQ0FBckMsRUFHN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNKLFVBQXJDLEVBQWlELENBQzVDM3RDLElBQUksQ0FBQ3hFLElBQU4sSUFDTyxDQUFDLEdBQUc1RyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDbkIsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDM3hCLEtBQUwsQ0FBV2k5QixXQUFYLENBQXVCNTVDLElBQUksQ0FBQ3hFLElBQTVCLENBQTNCLENBQWxELEVBQWlIO0lBQUU7SUFBbkgsQ0FEL0IsS0FFTyxDQUFDLEdBQUc1RyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDbEIsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHajVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLENBQXVCLE1BQXZCLENBQTNCLENBQWxELEVBQThHO0lBQUU7SUFBaEgsQ0FGL0IsQ0FENkMsQ0FBakQsQ0FERCxFQU1DLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNELFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2w1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMsSUFBdkMsRUFBNkMsQ0FDekMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QyxJQUF2QyxFQUE2QyxDQUN6QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsY0FBMUIsQ0FBM0IsQ0FBMUMsRUFBaUg7SUFBRTtJQUFuSCxDQURzQyxFQUV0QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsRUFDckMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQjF4QyxJQUFJLENBQUM2NUMsWUFBTCxDQUFrQixDQUFsQixFQUFxQjNvQyxTQUEzQyxFQUFzRCxVQUFVQSxTQUFWLEVBQXFCa04sQ0FBckIsRUFBd0I7TUFDM0osSUFBSTdvQixFQUFKOztNQUNBLE9BQVEsQ0FBQyxHQUFHWCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1FBQ2pFdHZDLEdBQUcsRUFBRTJlLENBRDREO1FBRWpFLFNBQU8sQ0FBQyxHQUFHeHBCLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMscUJBQUQsRUFBd0I7VUFDakQsUUFBUXJ6QixDQUFDLEtBQUtwZSxJQUFJLENBQUM2NUMsWUFBTCxDQUFrQixDQUFsQixFQUFxQjNvQyxTQUFyQixDQUErQm5XLE1BQS9CLEdBQXdDO1FBREwsQ0FBeEIsQ0FBMUI7TUFGMEQsQ0FBckMsRUFLN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNDLFVBQXJDLEVBQWlELE9BQU8sQ0FBQyxHQUFHcDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsVUFBMUIsQ0FBM0IsQ0FBUCxHQUEyRSxJQUEzRSxHQUFrRixDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnArQixTQUFTLENBQUNoVSxRQUFWLEdBQ3hKb3hDLElBQUksQ0FBQzN4QixLQUFMLENBQVcxZixTQUFYLENBQXFCaVUsU0FBUyxDQUFDaFUsUUFBL0IsQ0FEd0osR0FFeEpveEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBRjZILENBQWxGLEdBRWYsSUFGbEMsRUFFd0M7TUFBRTtNQUYxQyxDQURELEVBSUMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0UsVUFBckMsRUFBaUQsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCLENBQUMvNUMsRUFBRSxHQUFHMmIsU0FBUyxDQUFDQSxTQUFoQixNQUErQixJQUEvQixJQUF1QzNiLEVBQUUsS0FBSyxLQUFLLENBQW5ELEdBQXVEQSxFQUF2RCxHQUE0RCs0QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBdkYsQ0FBakQsRUFBbUs7TUFBRTtNQUFySyxDQUpELENBTDZCLEVBVTdCO01BQUU7TUFWMkIsQ0FBaEM7SUFXSCxDQWJnRixDQUFwRCxFQWF6QjtJQUFJO0lBYnFCLENBRFMsRUFBMUMsQ0FGc0MsQ0FBMUMsQ0FEeUMsRUFvQnpDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixhQUExQixDQUEzQixDQUExQyxFQUFnSDtJQUFFO0lBQWxILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxFQUNyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCMXhDLElBQUksQ0FBQzg1QyxXQUFMLENBQWlCLENBQWpCLEVBQW9CNW9DLFNBQTFDLEVBQXFELFVBQVVBLFNBQVYsRUFBcUJrTixDQUFyQixFQUF3QjtNQUMxSixJQUFJN29CLEVBQUo7O01BQ0EsT0FBUSxDQUFDLEdBQUdYLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFDakV0dkMsR0FBRyxFQUFFMmUsQ0FENEQ7UUFFakUsU0FBTyxDQUFDLEdBQUd4cEIsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxxQkFBRCxFQUF3QjtVQUNqRCxRQUFRcnpCLENBQUMsS0FBS3BlLElBQUksQ0FBQzg1QyxXQUFMLENBQWlCLENBQWpCLEVBQW9CNW9DLFNBQXBCLENBQThCblcsTUFBOUIsR0FBdUM7UUFESixDQUF4QixDQUExQjtNQUYwRCxDQUFyQyxFQUs3QixDQUNDLENBQUMsR0FBR25HLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0csVUFBckMsRUFBaUQsT0FBTyxDQUFDLEdBQUd0NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixVQUExQixDQUEzQixDQUFQLEdBQTJFLElBQTNFLEdBQWtGLENBQUMsR0FBRzlJLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCcCtCLFNBQVMsQ0FBQ2hVLFFBQVYsR0FDeEpveEMsSUFBSSxDQUFDM3hCLEtBQUwsQ0FBVzFmLFNBQVgsQ0FBcUJpVSxTQUFTLENBQUNoVSxRQUEvQixDQUR3SixHQUV4Sm94QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFGNkgsQ0FBbEYsR0FFZixJQUZsQyxFQUV3QztNQUFFO01BRjFDLENBREQsRUFJQyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSSxVQUFyQyxFQUFpRCxDQUFDLEdBQUd2NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQy81QyxFQUFFLEdBQUcyYixTQUFTLENBQUNBLFNBQWhCLE1BQStCLElBQS9CLElBQXVDM2IsRUFBRSxLQUFLLEtBQUssQ0FBbkQsR0FBdURBLEVBQXZELEdBQTREKzRDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUF2RixDQUFqRCxFQUFtSztNQUFFO01BQXJLLENBSkQsQ0FMNkIsRUFVN0I7TUFBRTtNQVYyQixDQUFoQztJQVdILENBYmdGLENBQXBELEVBYXpCO0lBQUk7SUFicUIsQ0FEUyxFQUExQyxDQUZzQyxDQUExQyxDQXBCeUMsRUF1Q3pDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixZQUExQixDQUEzQixDQUExQyxFQUErRztJQUFFO0lBQWpILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxFQUNyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCMXhDLElBQUksQ0FBQys1QyxVQUFMLENBQWdCLENBQWhCLEVBQW1CN29DLFNBQXpDLEVBQW9ELFVBQVVBLFNBQVYsRUFBcUJrTixDQUFyQixFQUF3QjtNQUN6SixJQUFJN29CLEVBQUo7O01BQ0EsT0FBUSxDQUFDLEdBQUdYLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFDakV0dkMsR0FBRyxFQUFFMmUsQ0FENEQ7UUFFakUsU0FBTyxDQUFDLEdBQUd4cEIsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxxQkFBRCxFQUF3QjtVQUNqRCxRQUFRcnpCLENBQUMsS0FBS3BlLElBQUksQ0FBQys1QyxVQUFMLENBQWdCLENBQWhCLEVBQW1CN29DLFNBQW5CLENBQTZCblcsTUFBN0IsR0FBc0M7UUFESCxDQUF4QixDQUExQjtNQUYwRCxDQUFyQyxFQUs3QixDQUNDLENBQUMsR0FBR25HLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0ssVUFBckMsRUFBaUQsT0FBTyxDQUFDLEdBQUd4NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixVQUExQixDQUEzQixDQUFQLEdBQTJFLElBQTNFLEdBQWtGLENBQUMsR0FBRzlJLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCcCtCLFNBQVMsQ0FBQ2hVLFFBQVYsR0FDeEpveEMsSUFBSSxDQUFDM3hCLEtBQUwsQ0FBVzFmLFNBQVgsQ0FBcUJpVSxTQUFTLENBQUNoVSxRQUEvQixDQUR3SixHQUV4Sm94QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFGNkgsQ0FBbEYsR0FFZixJQUZsQyxFQUV3QztNQUFFO01BRjFDLENBREQsRUFJQyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDTSxXQUFyQyxFQUFrRCxDQUFDLEdBQUd6NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQy81QyxFQUFFLEdBQUcyYixTQUFTLENBQUNBLFNBQWhCLE1BQStCLElBQS9CLElBQXVDM2IsRUFBRSxLQUFLLEtBQUssQ0FBbkQsR0FBdURBLEVBQXZELEdBQTREKzRDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUF2RixDQUFsRCxFQUFvSztNQUFFO01BQXRLLENBSkQsQ0FMNkIsRUFVN0I7TUFBRTtNQVYyQixDQUFoQztJQVdILENBYmdGLENBQXBELEVBYXpCO0lBQUk7SUFicUIsQ0FEUyxFQUExQyxDQUZzQyxDQUExQyxDQXZDeUMsRUEwRHpDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixXQUExQixDQUEzQixDQUExQyxFQUE4RztJQUFFO0lBQWhILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxFQUNyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCMXhDLElBQUksQ0FBQ2c2QyxTQUFMLENBQWUsQ0FBZixFQUFrQjlvQyxTQUF4QyxFQUFtRCxVQUFVQSxTQUFWLEVBQXFCa04sQ0FBckIsRUFBd0I7TUFDeEosSUFBSTdvQixFQUFKOztNQUNBLE9BQVEsQ0FBQyxHQUFHWCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1FBQ2pFdHZDLEdBQUcsRUFBRTJlLENBRDREO1FBRWpFLFNBQU8sQ0FBQyxHQUFHeHBCLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMscUJBQUQsRUFBd0I7VUFDakQsUUFBUXJ6QixDQUFDLEtBQUtwZSxJQUFJLENBQUNnNkMsU0FBTCxDQUFlLENBQWYsRUFBa0I5b0MsU0FBbEIsQ0FBNEJuVyxNQUE1QixHQUFxQztRQURGLENBQXhCLENBQTFCO01BRjBELENBQXJDLEVBSzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDNkIsV0FBckMsRUFBa0QsT0FBTyxDQUFDLEdBQUdoN0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixVQUExQixDQUEzQixDQUFQLEdBQTJFLElBQTNFLEdBQWtGLENBQUMsR0FBRzlJLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCcCtCLFNBQVMsQ0FBQ2hVLFFBQVYsR0FDekpveEMsSUFBSSxDQUFDM3hCLEtBQUwsQ0FBVzFmLFNBQVgsQ0FBcUJpVSxTQUFTLENBQUNoVSxRQUEvQixDQUR5SixHQUV6Sm94QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFGOEgsQ0FBbEYsR0FFaEIsSUFGbEMsRUFFd0M7TUFBRTtNQUYxQyxDQURELEVBSUMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzhCLFdBQXJDLEVBQWtELENBQUMsR0FBR2o3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQixDQUFDLzVDLEVBQUUsR0FBRzJiLFNBQVMsQ0FBQ0EsU0FBaEIsTUFBK0IsSUFBL0IsSUFBdUMzYixFQUFFLEtBQUssS0FBSyxDQUFuRCxHQUF1REEsRUFBdkQsR0FBNEQrNEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQXZGLENBQWxELEVBQW9LO01BQUU7TUFBdEssQ0FKRCxDQUw2QixFQVU3QjtNQUFFO01BVjJCLENBQWhDO0lBV0gsQ0FiZ0YsQ0FBcEQsRUFhekI7SUFBSTtJQWJxQixDQURTLEVBQTFDLENBRnNDLENBQTFDLENBMUR5QyxFQTZFekMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLE9BQTFCLENBQTNCLElBQWlFLEdBQTNHLEVBQWdIO0lBQUU7SUFBbEgsQ0FEc0MsRUFFdEMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLEVBQ3JDLENBQUMsR0FBR241QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0IxeEMsSUFBSSxDQUFDODlCLEtBQTNCLEVBQWtDLFVBQVVtYyxXQUFWLEVBQXVCNzdCLENBQXZCLEVBQTBCO01BQ3pJLElBQUk3b0IsRUFBSjs7TUFDQSxPQUFRLENBQUMsR0FBR1gsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztRQUNqRXR2QyxHQUFHLEVBQUUyZSxDQUQ0RDtRQUVqRSxTQUFPLENBQUMsR0FBR3hwQixLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLHFCQUFELEVBQXdCO1VBQ2pELFFBQVFyekIsQ0FBQyxLQUFLcGUsSUFBSSxDQUFDODlCLEtBQUwsQ0FBVy9pQyxNQUFYLEdBQW9CO1FBRGUsQ0FBeEIsQ0FBMUI7TUFGMEQsQ0FBckMsRUFLN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMrQixXQUFyQyxFQUFrRCxDQUFDLEdBQUdsN0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQy81QyxFQUFFLEdBQUcwa0QsV0FBVyxDQUFDbmMsS0FBbEIsTUFBNkIsSUFBN0IsSUFBcUN2b0MsRUFBRSxLQUFLLEtBQUssQ0FBakQsR0FBcURBLEVBQXJELEdBQTBEKzRDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUFyRixDQUFsRCxFQUFrSztNQUFFO01BQXBLLENBREQsQ0FMNkIsRUFPN0I7TUFBRTtNQVAyQixDQUFoQztJQVFILENBVmdGLENBQXBELEVBVXpCO0lBQUk7SUFWcUIsQ0FEUyxFQUExQyxDQUZzQyxDQUExQyxDQTdFeUMsRUE2RnpDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixXQUExQixDQUEzQixDQUExQyxFQUE4RztJQUFFO0lBQWhILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxFQUNyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCMXhDLElBQUksQ0FBQ2s2QyxTQUEzQixFQUFzQyxVQUFVQyxHQUFWLEVBQWUvN0IsQ0FBZixFQUFrQjtNQUNySSxJQUFJN29CLEVBQUo7O01BQ0EsT0FBUSxDQUFDLEdBQUdYLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFDakV0dkMsR0FBRyxFQUFFMmUsQ0FENEQ7UUFFakUsU0FBTyxDQUFDLEdBQUd4cEIsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxxQkFBRCxFQUF3QjtVQUNqRCxRQUFRcnpCLENBQUMsS0FBS3BlLElBQUksQ0FBQ2s2QyxTQUFMLENBQWVuL0MsTUFBZixHQUF3QjtRQURXLENBQXhCLENBQTFCO01BRjBELENBQXJDLEVBSzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDZ0MsV0FBckMsRUFBa0QsQ0FBQyxHQUFHbjdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCLENBQUMvNUMsRUFBRSxHQUFHNGtELEdBQUcsQ0FBQ0QsU0FBVixNQUF5QixJQUF6QixJQUFpQzNrRCxFQUFFLEtBQUssS0FBSyxDQUE3QyxHQUFpREEsRUFBakQsR0FBc0QrNEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQWpGLENBQWxELEVBQThKO01BQUU7TUFBaEssQ0FERCxDQUw2QixFQU83QjtNQUFFO01BUDJCLENBQWhDO0lBUUgsQ0FWZ0YsQ0FBcEQsRUFVekI7SUFBSTtJQVZxQixDQURTLEVBQTFDLENBRnNDLENBQTFDLENBN0Z5QyxFQTZHekMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFNBQTFCLENBQTNCLENBQTFDLEVBQTRHO0lBQUU7SUFBOUcsQ0FEc0MsRUFFdEMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLEVBQ3JDLENBQUMsR0FBR241QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0IxeEMsSUFBSSxDQUFDbXFDLE9BQTNCLEVBQW9DLFVBQVU5VyxDQUFWLEVBQWFqVixDQUFiLEVBQWdCO01BQ2pJLElBQUk3b0IsRUFBSjs7TUFDQSxPQUFRLENBQUMsR0FBR1gsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztRQUNqRXR2QyxHQUFHLEVBQUUyZSxDQUQ0RDtRQUVqRSxTQUFPLENBQUMsR0FBR3hwQixLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLHFCQUFELEVBQXdCO1VBQ2pELFFBQVFyekIsQ0FBQyxLQUFLcGUsSUFBSSxDQUFDbXFDLE9BQUwsQ0FBYXB2QyxNQUFiLEdBQXNCO1FBRGEsQ0FBeEIsQ0FBMUI7TUFGMEQsQ0FBckMsRUFLN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNpQyxXQUFyQyxFQUFrRCxDQUFDLEdBQUdwN0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQy81QyxFQUFFLEdBQUc4OUIsQ0FBQyxDQUFDOFcsT0FBUixNQUFxQixJQUFyQixJQUE2QjUwQyxFQUFFLEtBQUssS0FBSyxDQUF6QyxHQUE2Q0EsRUFBN0MsR0FBa0QrNEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQTdFLENBQWxELEVBQTBKO01BQUU7TUFBNUosQ0FERCxDQUw2QixFQU83QjtNQUFFO01BUDJCLENBQWhDO0lBUUgsQ0FWZ0YsQ0FBcEQsRUFVekI7SUFBSTtJQVZxQixDQURTLEVBQTFDLENBRnNDLENBQTFDLENBN0d5QyxFQTZIekMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLGlCQUExQixDQUEzQixDQUExQyxFQUFvSDtJQUFFO0lBQXRILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxFQUNyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCMXhDLElBQUksQ0FBQ282QyxlQUEzQixFQUE0QyxVQUFVaFEsT0FBVixFQUFtQmlRLGFBQW5CLEVBQWtDO01BQzNKLE9BQVEsQ0FBQyxHQUFHemxELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFDakV0dkMsR0FBRyxFQUFFNDZDLGFBRDREO1FBRWpFLFNBQU8sQ0FBQyxHQUFHemxELEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCO1VBQzdCLFFBQVFuRCxJQUFJLENBQUNsd0IsQ0FBTCxLQUFXZ3NCLE9BQU8sQ0FBQ2w1QixTQUFSLENBQWtCblcsTUFBbEIsR0FBMkI7UUFEakIsQ0FBMUI7TUFGMEQsQ0FBckMsRUFLN0IsRUFDRSxDQUFDLEdBQUduRyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0J0SCxPQUFPLENBQUNsNUIsU0FBOUIsRUFBeUMsVUFBVUEsU0FBVixFQUFxQmtOLENBQXJCLEVBQXdCO1FBQzlJLElBQUk3b0IsRUFBSjs7UUFDQSxPQUFRLENBQUMsR0FBR1gsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztVQUNqRXR2QyxHQUFHLEVBQUUyZSxDQUQ0RDtVQUVqRSxTQUFPO1FBRjBELENBQXJDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHeHBCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2tDLFdBQXJDLEVBQWtELE9BQU8sQ0FBQyxHQUFHcjdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsVUFBMUIsQ0FBM0IsQ0FBUCxHQUEyRSxJQUEzRSxHQUFrRixDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnArQixTQUFTLENBQUNoVSxRQUFWLEdBQ3pKb3hDLElBQUksQ0FBQzN4QixLQUFMLENBQVcxZixTQUFYLENBQXFCaVUsU0FBUyxDQUFDaFUsUUFBL0IsQ0FEeUosR0FFekpveEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBRjhILENBQWxGLEdBRWhCLElBRmxDLEVBRXdDO1FBQUU7UUFGMUMsQ0FERCxFQUlDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNtQyxXQUFyQyxFQUFrRCxDQUFDLEdBQUd0N0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQy81QyxFQUFFLEdBQUcyYixTQUFTLENBQUNBLFNBQWhCLE1BQStCLElBQS9CLElBQXVDM2IsRUFBRSxLQUFLLEtBQUssQ0FBbkQsR0FBdURBLEVBQXZELEdBQTREKzRDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixDQUF1QixlQUF2QixDQUF2RixDQUFsRCxFQUFtTDtRQUFFO1FBQXJMLENBSkQsQ0FINkIsQ0FBaEM7TUFTSCxDQVhnRixDQUFwRCxFQVd6QjtNQUFJO01BWHFCLENBRDlCLEVBTDZCLEVBa0I3QjtNQUFFO01BbEIyQixDQUFoQztJQW1CSCxDQXBCZ0YsQ0FBcEQsRUFvQnpCO0lBQUk7SUFwQnFCLENBRFMsRUFBMUMsQ0FGc0MsQ0FBMUMsQ0E3SHlDLENBQTdDLENBRHlDLENBQTdDLENBRDZDLENBQWpELENBTkQsQ0FINkIsRUFxSzdCO0lBQUU7SUFySzJCLENBQWhDO0VBc0tILENBdkt1RixDQUFwRCxFQXVLaEM7RUFBSTtFQXZLNEIsQ0FBcEM7QUF3S0g7O0FBQ0R2ekIsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUNsTWE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRW51QyxHQUFHLEVBQUU7QUFBUCxDQUFqQjtBQUNBLElBQUlvdUMsVUFBVSxHQUFHO0VBQ2JwdUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJcXVDLFVBQVUsR0FBRztFQUNicnVDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSXV1QyxVQUFVLEdBQUc7RUFDYnZ1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUl3dUMsVUFBVSxHQUFHO0VBQ2J4dUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJeXVDLFVBQVUsR0FBRztFQUNienVDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCOztBQUlBLFNBQVNpdUMsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxPQUFRLENBQUMsR0FBRy81QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JwRCxJQUFJLENBQUNuM0MsSUFBM0IsRUFBaUMsVUFBVTZJLElBQVYsRUFBZ0JQLEdBQWhCLEVBQXFCO0lBQzFJLE9BQVEsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqRXR2QyxHQUFHLEVBQUVBLEdBRDREO01BRWpFLFNBQU8sQ0FBQyxHQUFHN0ssS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEI7UUFBRSxRQUFRMTFDLE1BQU0sQ0FBQzBELEdBQUQsQ0FBTixLQUFnQjZ1QyxJQUFJLENBQUNuM0MsSUFBTCxDQUFVNEQsTUFBVixHQUFtQjtNQUE3QyxDQUExQjtJQUYwRCxDQUFyQyxFQUc3QixDQUNDLENBQUMsR0FBR25HLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0osVUFBckMsRUFBaUQsQ0FDNUMzdEMsSUFBSSxDQUFDeEUsSUFBTixJQUNPLENBQUMsR0FBRzVHLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NuQixVQUF0QyxFQUFrRCxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUMzeEIsS0FBTCxDQUFXMjlCLGVBQVgsQ0FBMkJ0NkMsSUFBSSxDQUFDeEUsSUFBaEMsQ0FBM0IsQ0FBbEQsRUFBcUg7SUFBRTtJQUF2SCxDQUQvQixLQUVPLENBQUMsR0FBRzVHLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NsQixVQUF0QyxFQUFrRCxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsQ0FBdUIsTUFBdkIsQ0FBM0IsQ0FBbEQsRUFBOEc7SUFBRTtJQUFoSCxDQUYvQixDQUQ2QyxDQUFqRCxDQURELEdBTUUsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQjF4QyxJQUFJLENBQUNrUixTQUEzQixFQUFzQyxVQUFVL0MsSUFBVixFQUFnQmxLLENBQWhCLEVBQW1CO01BQ3RJLE9BQVEsQ0FBQyxHQUFHclAsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztRQUNqRXR2QyxHQUFHLEVBQUV3RSxDQUQ0RDtRQUVqRSxTQUFPLENBQUMsR0FBR3JQLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUM7VUFBRSxRQUFReHRDLENBQUMsS0FBS2pFLElBQUksQ0FBQ2tSLFNBQUwsQ0FBZW5XLE1BQWYsR0FBd0I7UUFBeEMsQ0FBRCxFQUE4Qyw2QkFBOUMsQ0FBMUI7TUFGMEQsQ0FBckMsRUFHN0IsQ0FDRW9ULElBQUksQ0FBQytDLFNBQU4sSUFDTyxDQUFDLEdBQUd0YyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDakIsVUFBckMsRUFBaUQsQ0FDdkUzL0IsSUFBSSxDQUFDalIsUUFBTixJQUNPLENBQUMsR0FBR3RJLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NmLFVBQXRDLEVBQWtELE9BQU8sQ0FBQyxHQUFHcDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsVUFBMUIsQ0FBM0IsQ0FBUCxHQUEyRSxJQUEzRSxHQUFrRixDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzN4QixLQUFMLENBQVcxZixTQUFYLENBQXFCa1IsSUFBSSxDQUFDalIsUUFBMUIsQ0FBM0IsQ0FBbEYsR0FBb0osSUFBdE0sRUFBNE07TUFBRTtNQUE5TSxDQUQvQixJQUVNLENBQUMsR0FBR3RJLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQUhrRSxFQUl2RWhoQyxJQUFJLENBQUMrQyxTQUFOLElBQ08sQ0FBQyxHQUFHdGMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2QsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCbmhDLElBQUksQ0FBQytDLFNBQWhDLENBQWxELEVBQThGO01BQUU7TUFBaEcsQ0FEL0IsSUFFTSxDQUFDLEdBQUd0YyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FOa0UsQ0FBakQsQ0FEL0IsS0FTTyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2IsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLENBQXVCLFdBQXZCLENBQTNCLENBQWxELEVBQW1IO01BQUU7TUFBckgsQ0FUL0IsQ0FERCxDQUg2QixFQWM3QjtNQUFFO01BZDJCLENBQWhDO0lBZUgsQ0FoQmdGLENBQXBELEVBZ0J6QjtJQUFJO0lBaEJxQixDQU45QixFQUg2QixFQTBCN0I7SUFBRTtJQTFCMkIsQ0FBaEM7RUEyQkgsQ0E1QnVGLENBQXBELEVBNEJoQztFQUFJO0VBNUI0QixDQUFwQztBQTZCSDs7QUFDRHZ6QixjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ3pEYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFbnVDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSW91QyxVQUFVLEdBQUc7RUFBRXB1QyxHQUFHLEVBQUU7QUFBUCxDQUFqQjtBQUNBLElBQUlxdUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHO0VBQUV2dUMsR0FBRyxFQUFFO0FBQVAsQ0FBakI7QUFDQSxJQUFJd3VDLFVBQVUsR0FBRyxDQUFDLE1BQUQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFDYnp1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUkwdUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCOztBQUNBLFNBQVNWLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsT0FBUSxDQUFDLEdBQUcvNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCbEQsTUFBTSxDQUFDcjNDLElBQTdCLEVBQW1DLFVBQVU2SSxJQUFWLEVBQWdCUCxHQUFoQixFQUFxQjtJQUM1SSxJQUFJbEssRUFBSixFQUFReUcsRUFBUixFQUFZK0IsRUFBWixFQUFnQnlNLEVBQWhCOztJQUNBLE9BQVEsQ0FBQyxHQUFHNVYsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqRXR2QyxHQUFHLEVBQUVBLEdBRDREO01BRWpFLFNBQU8sQ0FBQyxHQUFHN0ssS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxpQkFBRCxFQUFvQjtRQUFFLFFBQVExMUMsTUFBTSxDQUFDMEQsR0FBRCxDQUFOLEtBQWdCK3VDLE1BQU0sQ0FBQ3IzQyxJQUFQLENBQVk0RCxNQUFaLEdBQXFCO01BQS9DLENBQXBCLENBQTFCO0lBRjBELENBQXJDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSixVQUFyQyxFQUFpRCxDQUM1QzN0QyxJQUFJLENBQUN4RSxJQUFOLElBQ08sQ0FBQyxHQUFHNUcsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ25CLFVBQXRDLEVBQWtELENBQUMsR0FBR2g1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQixDQUFDLzVDLEVBQUUsR0FBR2s1QyxNQUFNLENBQUM5eEIsS0FBUCxDQUFhNDlCLHFCQUFiLENBQW1DdjZDLElBQUksQ0FBQ3hFLElBQXhDLENBQU4sTUFBeUQsSUFBekQsSUFBaUVqRyxFQUFFLEtBQUssS0FBSyxDQUE3RSxHQUFpRkEsRUFBakYsR0FBc0ZrNUMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrckIsT0FBakIsRUFBakgsQ0FBbEQsRUFBZ007SUFBRTtJQUFsTSxDQUQvQixLQUVPLENBQUMsR0FBR3J6QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDbEIsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHajVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQityQixPQUFqQixDQUF5QixZQUF6QixDQUEzQixDQUFsRCxFQUFzSDtJQUFFO0lBQXhILENBRi9CLENBRDZDLENBQWpELENBREQsRUFNQyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDLElBQXZDLEVBQTZDLENBQ3pDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMsSUFBdkMsRUFBNkMsQ0FDekMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixZQUE1QixDQUEzQixDQUExQyxFQUFpSDtJQUFFO0lBQW5ILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQ3R6QyxFQUFFLEdBQUd5eUMsTUFBTSxDQUFDOXhCLEtBQVAsQ0FBYTY5QiwyQkFBYixDQUF5Q3g2QyxJQUFJLENBQUN5NkMsVUFBOUMsQ0FBTixNQUFxRSxJQUFyRSxJQUE2RXorQyxFQUFFLEtBQUssS0FBSyxDQUF6RixHQUE2RkEsRUFBN0YsR0FBa0d5eUMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrckIsT0FBakIsRUFBN0gsSUFBMkosR0FBM0osR0FBaUssQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCLENBQUN2eEMsRUFBRSxHQUFHMHdDLE1BQU0sQ0FBQzl4QixLQUFQLENBQWE2OUIsMkJBQWIsQ0FBeUN4NkMsSUFBSSxDQUFDeTZDLFVBQTlDLENBQU4sTUFBcUUsSUFBckUsSUFBNkUxOEMsRUFBRSxLQUFLLEtBQUssQ0FBekYsR0FBNkZBLEVBQTdGLEdBQWtHMHdDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK3JCLE9BQWpCLEVBQTdILENBQTNNLEVBQXFXO0lBQUU7SUFBdlcsQ0FGc0MsQ0FBMUMsQ0FEeUMsRUFLeENqb0IsSUFBSSxDQUFDeTZDLFVBQUwsS0FBb0IsSUFBckIsSUFDTyxDQUFDLEdBQUc3bEQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ2YsVUFBcEMsRUFBZ0QsQ0FDdkUsQ0FBQyxHQUFHcDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsZ0JBQTVCLENBQTNCLENBQTFDLEVBQXFIO0lBQUU7SUFBdkgsQ0FEdUUsRUFFdkUsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3JDL3RDLElBQUksQ0FBQzA2QyxjQUFOLElBQ08sQ0FBQyxHQUFHOWxELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7TUFDMUR0dkMsR0FBRyxFQUFFLENBRHFEO01BRTFEZ1MsTUFBTSxFQUFFLFFBRmtEO01BRzFEbmEsSUFBSSxFQUFFMEksSUFBSSxDQUFDMDZDO0lBSCtDLENBQW5DLEVBSXhCLENBQUMsR0FBRzlsRCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnR2QyxJQUFJLENBQUMwNkMsY0FBaEMsQ0FKd0IsRUFJeUI7SUFBRTtJQUozQixFQUk4Q3pNLFVBSjlDLENBRC9CLEtBTU8sQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NiLFVBQXRDLEVBQWtELENBQUMsR0FBR3Q1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrckIsT0FBakIsRUFBM0IsQ0FBbEQsRUFBMEc7SUFBRTtJQUE1RyxDQU4vQixDQURzQyxDQUExQyxDQUZ1RSxDQUFoRCxDQUQvQixJQWFNLENBQUMsR0FBR3J6QixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FsQm1DLEVBbUJ6QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLE1BQTVCLENBQTNCLENBQTFDLEVBQTJHO0lBQUU7SUFBN0csQ0FEc0MsRUFFdEMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQixDQUFDOWtDLEVBQUUsR0FBR3hLLElBQUksQ0FBQzZ3QixJQUFYLE1BQXFCLElBQXJCLElBQTZCcm1CLEVBQUUsS0FBSyxLQUFLLENBQXpDLEdBQTZDQSxFQUE3QyxHQUFrRGlrQyxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQityQixPQUFqQixFQUE3RSxDQUExQyxFQUFvSjtJQUFFO0lBQXRKLENBRnNDLENBQTFDLENBbkJ5QyxFQXVCekMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixXQUE1QixDQUEzQixDQUExQyxFQUFnSDtJQUFFO0lBQWxILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxFQUNyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCMXhDLElBQUksQ0FBQ2tSLFNBQTNCLEVBQXNDLFVBQVVBLFNBQVYsRUFBcUJrTixDQUFyQixFQUF3QjtNQUMzSSxJQUFJN29CLEVBQUo7O01BQ0EsT0FBUSxDQUFDLEdBQUdYLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFDakV0dkMsR0FBRyxFQUFFMmUsQ0FENEQ7UUFFakUsU0FBTyxDQUFDLEdBQUd4cEIsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxxQkFBRCxFQUF3QjtVQUFFLFFBQVFyekIsQ0FBQyxLQUFLcGUsSUFBSSxDQUFDa1IsU0FBTCxDQUFlblcsTUFBZixHQUF3QjtRQUF4QyxDQUF4QixDQUExQjtNQUYwRCxDQUFyQyxFQUc3QixDQUNDLENBQUMsR0FBR25HLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0ksVUFBckMsRUFBaUQsT0FBTyxDQUFDLEdBQUd2NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsVUFBNUIsQ0FBM0IsQ0FBUCxHQUE2RSxJQUE3RSxHQUFvRixDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnArQixTQUFTLENBQUNoVSxRQUFWLEdBQzFKdXhDLE1BQU0sQ0FBQzl4QixLQUFQLENBQWExZixTQUFiLENBQXVCaVUsU0FBUyxDQUFDaFUsUUFBakMsQ0FEMEosR0FFMUp1eEMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrckIsT0FBakIsRUFGK0gsQ0FBcEYsR0FFYixJQUZwQyxFQUUwQztNQUFFO01BRjVDLENBREQsRUFJQyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSyxVQUFyQyxFQUFpRCxDQUFDLEdBQUd4NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQy81QyxFQUFFLEdBQUcyYixTQUFTLENBQUNBLFNBQWhCLE1BQStCLElBQS9CLElBQXVDM2IsRUFBRSxLQUFLLEtBQUssQ0FBbkQsR0FBdURBLEVBQXZELEdBQTREazVDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK3JCLE9BQWpCLEVBQXZGLENBQWpELEVBQXFLO01BQUU7TUFBdkssQ0FKRCxDQUg2QixFQVE3QjtNQUFFO01BUjJCLENBQWhDO0lBU0gsQ0FYZ0YsQ0FBcEQsRUFXekI7SUFBSTtJQVhxQixDQURTLEVBQTFDLENBRnNDLENBQTFDLENBdkJ5QyxDQUE3QyxDQUR5QyxDQUE3QyxDQUQ2QyxDQUFqRCxDQU5ELENBSDZCLEVBc0Q3QjtJQUFFO0lBdEQyQixDQUFoQztFQXVESCxDQXpEdUYsQ0FBcEQsRUF5RGhDO0VBQUk7RUF6RDRCLENBQXBDO0FBMERIOztBQUNEdnpCLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDNUVhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQ2JudUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJb3VDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjs7QUFDQSxTQUFTSCxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELE9BQVEsQ0FBQyxHQUFHLzVDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNwQixVQUFyQyxFQUFpRCxDQUM1RVcsSUFBSSxDQUFDbjNDLElBQU4sSUFDTyxDQUFDLEdBQUd2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDbkIsVUFBckMsRUFBaUQsQ0FDeEUsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ0YsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHajVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDbjNDLElBQWhDLENBQWxELEVBQXlGO0VBQUU7RUFBM0YsQ0FEd0UsQ0FBakQsQ0FEL0IsSUFJTSxDQUFDLEdBQUd2QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FMdUUsQ0FBakQsQ0FBaEM7QUFPSDs7QUFDRHo2QyxjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ25CYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFbnVDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSW91QyxVQUFVLEdBQUc7RUFDYnB1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUlxdUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHO0VBQUV2dUMsR0FBRyxFQUFFO0FBQVAsQ0FBakI7QUFDQSxJQUFJd3VDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUNienVDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSTB1QyxVQUFVLEdBQUc7RUFBRTF1QyxHQUFHLEVBQUU7QUFBUCxDQUFqQjtBQUNBLElBQUkydUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2Q1dUMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7O0FBSUEsU0FBU2l1QyxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELE9BQVEsQ0FBQyxHQUFHLzVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnBELElBQUksQ0FBQ24zQyxJQUEzQixFQUFpQyxVQUFVNkksSUFBVixFQUFnQlAsR0FBaEIsRUFBcUI7SUFDMUksT0FBUSxDQUFDLEdBQUc3SyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pFdHZDLEdBQUcsRUFBRUEsR0FENEQ7TUFFakUsU0FBTyxDQUFDLEdBQUc3SyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLGlCQUFELEVBQW9CO1FBQUUsUUFBUTExQyxNQUFNLENBQUMwRCxHQUFELENBQU4sS0FBZ0I2dUMsSUFBSSxDQUFDbjNDLElBQUwsQ0FBVTRELE1BQVYsR0FBbUI7TUFBN0MsQ0FBcEIsQ0FBMUI7SUFGMEQsQ0FBckMsRUFHN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNKLFVBQXJDLEVBQWlELENBQzVDM3RDLElBQUksQ0FBQzI2QyxXQUFOLElBQ08sQ0FBQyxHQUFHL2xELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNuQixVQUFyQyxFQUFpRCxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ0dkMsSUFBSSxDQUFDMjZDLFdBQWhDLENBQWpELEVBQStGO0lBQUU7SUFBakcsQ0FEL0IsS0FFTyxDQUFDLEdBQUcvbEQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2xCLFVBQXRDLEVBQWtELENBQUMsR0FBR2o1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixDQUF1QixNQUF2QixDQUEzQixDQUFsRCxFQUE4RztJQUFFO0lBQWhILENBRi9CLENBRDZDLENBQWpELENBREQsRUFNQyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDLElBQXZDLEVBQTZDLENBQ3pDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixPQUExQixDQUEzQixDQUExQyxFQUEwRztJQUFFO0lBQTVHLENBRHNDLEVBRXJDc0MsSUFBSSxDQUFDckwsS0FBTixJQUNPLENBQUMsR0FBR0MsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ2YsVUFBcEMsRUFBZ0QsQ0FDdkUsQ0FBQyxHQUFHcDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ0UsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCdHZDLElBQUksQ0FBQ3JMLEtBQWhDLENBQWxELEVBQTBGO0lBQUU7SUFBNUYsQ0FEdUUsQ0FBaEQsQ0FEL0IsS0FJTyxDQUFDLEdBQUdDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NiLFVBQXBDLEVBQWdELENBQUMsR0FBR3Q1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUEzQixDQUFoRCxFQUFzRztJQUFFO0lBQXhHLENBSi9CLENBRnNDLENBQTFDLENBRHlDLENBQTdDLENBRDZDLEVBVzdDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMsSUFBdkMsRUFBNkMsQ0FDekMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLGlCQUExQixDQUEzQixDQUExQyxFQUFvSDtJQUFFO0lBQXRILENBRHNDLEVBRXJDc0MsSUFBSSxDQUFDNDZDLGVBQU4sSUFDTyxDQUFDLEdBQUdobUQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ1osVUFBcEMsRUFBZ0QsQ0FDdkUsQ0FBQyxHQUFHdjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ0ssVUFBdEMsRUFBa0QsQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCdHZDLElBQUksQ0FBQzQ2QyxlQUFoQyxDQUFsRCxFQUFvRztJQUFFO0lBQXRHLENBRHVFLENBQWhELENBRC9CLEtBSU8sQ0FBQyxHQUFHaG1ELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NWLFdBQXBDLEVBQWlELENBQUMsR0FBR3o1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUEzQixDQUFqRCxFQUF1RztJQUFFO0lBQXpHLENBSi9CLENBRnNDLENBQTFDLENBRHlDLENBQTdDLENBWDZDLENBQWpELENBTkQsQ0FINkIsRUErQjdCO0lBQUU7SUEvQjJCLENBQWhDO0VBZ0NILENBakN1RixDQUFwRCxFQWlDaEM7RUFBSTtFQWpDNEIsQ0FBcEM7QUFrQ0g7O0FBQ0R2ekIsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUMzRGE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRW51QyxHQUFHLEVBQUU7QUFBUCxDQUFqQjtBQUNBLElBQUlvdUMsVUFBVSxHQUFHO0VBQ2JwdUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJcXVDLFVBQVUsR0FBRztFQUNicnVDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSXV1QyxVQUFVLEdBQUc7RUFDYnZ1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUl3dUMsVUFBVSxHQUFHO0VBQ2J4dUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJeXVDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFM3VDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSTR1QyxXQUFXLEdBQUc7RUFDZDV1QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUltd0MsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUV2d0MsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJd3dDLFdBQVcsR0FBRztFQUNkeHdDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSXl3QyxXQUFXLEdBQUc7RUFBRXp3QyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUkwd0MsV0FBVyxHQUFHO0VBQ2Qxd0MsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJMndDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkN3dDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSTh3QyxXQUFXLEdBQUc7RUFDZDl3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUkrd0MsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2RoeEMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJaXhDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkbnhDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSW94QyxXQUFXLEdBQUc7RUFDZHB4QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUlxeEMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2R0eEMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJdXhDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFenhDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSTB4QyxXQUFXLEdBQUc7RUFDZDF4QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUkyeEMsV0FBVyxHQUFHO0VBQUUzeEMsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJNHhDLFdBQVcsR0FBRztFQUNkNXhDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSTZ4QyxXQUFXLEdBQUc7RUFBRTd4QyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUk4eEMsV0FBVyxHQUFHO0VBQ2Q5eEMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJK3hDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUk2RCxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRTcxQyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUk4MUMsV0FBVyxHQUFHO0VBQ2Q5MUMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJKzFDLFdBQVcsR0FBRztFQUFFLzFDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSWcyQyxXQUFXLEdBQUc7RUFDZGgyQyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUlpMkMsV0FBVyxHQUFHO0VBQUVqMkMsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJazJDLFdBQVcsR0FBRztFQUNkbDJDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSW0yQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRXAyQyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUlxMkMsV0FBVyxHQUFHO0VBQ2RyMkMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJczJDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFdjJDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSXcyQyxXQUFXLEdBQUc7RUFDZHgyQyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUl5MkMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUxMkMsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJMjJDLFdBQVcsR0FBRztFQUNkMzJDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCOztBQUlBLFNBQVNpdUMsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxPQUFRLENBQUMsR0FBRy81QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JwRCxJQUFJLENBQUNuM0MsSUFBM0IsRUFBaUMsVUFBVTZJLElBQVYsRUFBZ0JQLEdBQWhCLEVBQXFCO0lBQzFJLE9BQVEsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqRXR2QyxHQUFHLEVBQUVBLEdBRDREO01BRWpFLFNBQU8sQ0FBQyxHQUFHN0ssS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxpQkFBRCxFQUFvQjtRQUFFLFFBQVExMUMsTUFBTSxDQUFDMEQsR0FBRCxDQUFOLEtBQWdCNnVDLElBQUksQ0FBQ24zQyxJQUFMLENBQVU0RCxNQUFWLEdBQW1CO01BQTdDLENBQXBCLENBQTFCO0lBRjBELENBQXJDLEVBRzdCLEVBQ0UsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCMXhDLElBQUksQ0FBQzY2QyxjQUEzQixFQUEyQyxVQUFVMXNDLElBQVYsRUFBZ0JsSyxDQUFoQixFQUFtQjtNQUMzSSxPQUFRLENBQUMsR0FBR3JQLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFDakV0dkMsR0FBRyxFQUFFd0UsQ0FENEQ7UUFFakUsU0FBTyxDQUFDLEdBQUdyUCxLQUFLLENBQUM2OEMsY0FBVixFQUEwQjtVQUFFLFFBQVF4dEMsQ0FBQyxLQUFLakUsSUFBSSxDQUFDNjZDLGNBQUwsQ0FBb0I5L0MsTUFBcEIsR0FBNkI7UUFBN0MsQ0FBMUI7TUFGMEQsQ0FBckMsRUFHN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNKLFVBQXJDLEVBQWlELENBQzVDeC9CLElBQUksQ0FBQzBpQixJQUFOLElBQ08sQ0FBQyxHQUFHajhCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NuQixVQUF0QyxFQUFrRCxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUMzeEIsS0FBTCxDQUFXbStCLHVCQUFYLENBQW1DM3NDLElBQUksQ0FBQzBpQixJQUF4QyxDQUEzQixDQUFsRCxFQUE2SDtNQUFFO01BQS9ILENBRC9CLEtBRU8sQ0FBQyxHQUFHajhCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NsQixVQUF0QyxFQUFrRCxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsQ0FBdUIsa0JBQXZCLENBQTNCLENBQWxELEVBQTBIO01BQUU7TUFBNUgsQ0FGL0IsQ0FENkMsQ0FBakQsQ0FERCxDQUg2QixFQVM3QjtNQUFFO01BVDJCLENBQWhDO0lBVUgsQ0FYZ0YsQ0FBcEQsRUFXekI7SUFBSTtJQVhxQixDQUQ5QixJQWFFLENBQUMsR0FBR3J6QixLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0IxeEMsSUFBSSxDQUFDeEMsSUFBM0IsRUFBaUMsVUFBVTJRLElBQVYsRUFBZ0JsSyxDQUFoQixFQUFtQjtNQUNqSSxPQUFRLENBQUMsR0FBR3JQLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFDakV0dkMsR0FBRyxFQUFFd0UsQ0FENEQ7UUFFakUsU0FBTyxDQUFDLEdBQUdyUCxLQUFLLENBQUM2OEMsY0FBVixFQUEwQjtVQUFFLFFBQVF4dEMsQ0FBQyxLQUFLakUsSUFBSSxDQUFDeEMsSUFBTCxDQUFVekMsTUFBVixHQUFtQjtRQUFuQyxDQUExQjtNQUYwRCxDQUFyQyxFQUc3QixFQUNFLENBQUMsR0FBR25HLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnZqQyxJQUFJLENBQUMrQyxTQUEzQixFQUFzQyxVQUFVQSxTQUFWLEVBQXFCNUosQ0FBckIsRUFBd0I7UUFDM0ksT0FBUSxDQUFDLEdBQUcxUyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1VBQ2pFdHZDLEdBQUcsRUFBRTZILENBRDREO1VBRWpFLFNBQU8sQ0FBQyxHQUFHMVMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxTQUFELEVBQVk7WUFBRSxRQUFRbnFDLENBQUMsS0FBSzZHLElBQUksQ0FBQytDLFNBQUwsQ0FBZW5XLE1BQWYsR0FBd0I7VUFBeEMsQ0FBWixDQUExQjtRQUYwRCxDQUFyQyxFQUc3QixDQUNFbVcsU0FBUyxDQUFDQSxTQUFYLElBQ08sQ0FBQyxHQUFHdGMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2pCLFVBQXJDLEVBQWlELENBQ3hFLENBQUMsR0FBR2w1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCcCtCLFNBQVMsQ0FBQ0EsU0FBckMsQ0FBNUMsRUFBNkY7UUFBRTtRQUEvRixDQUR3RSxFQUV2RUEsU0FBUyxDQUFDaFUsUUFBWCxJQUNPLENBQUMsR0FBR3RJLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NmLFVBQXRDLEVBQWtELE1BQU0sQ0FBQyxHQUFHcDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsVUFBMUIsQ0FBM0IsQ0FBTixHQUEwRSxJQUExRSxHQUFpRixDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzN4QixLQUFMLENBQVcxZixTQUFYLENBQXFCaVUsU0FBUyxDQUFDaFUsUUFBL0IsQ0FBM0IsQ0FBakYsR0FBd0osR0FBMU0sRUFBK007UUFBRTtRQUFqTixDQUQvQixJQUVNLENBQUMsR0FBR3RJLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQUprRSxDQUFqRCxDQUQvQixLQU9PLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDZCxVQUF0QyxFQUFrRCxDQUFDLEdBQUdyNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsQ0FBdUIsTUFBdkIsQ0FBM0IsQ0FBbEQsRUFBOEc7UUFBRTtRQUFoSCxDQVAvQixDQURELENBSDZCLEVBWTdCO1FBQUU7UUFaMkIsQ0FBaEM7TUFhSCxDQWRnRixDQUFwRCxFQWN6QjtNQUFJO01BZHFCLENBRDlCLEVBSDZCLEVBbUI3QjtNQUFFO01BbkIyQixDQUFoQztJQW9CSCxDQXJCZ0YsQ0FBcEQsRUFxQnpCO0lBQUk7SUFyQnFCLENBYjlCLEdBbUNDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNHLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3Q1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMsSUFBdkMsRUFBNkMsQ0FDekMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFdBQTFCLENBQTNCLENBQTFDLEVBQThHO0lBQUU7SUFBaEgsQ0FEc0MsRUFFdEMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DSSxVQUFwQyxFQUFnRCxDQUMzQ251QyxJQUFJLENBQUNwSyxHQUFOLElBQ08sQ0FBQyxHQUFHaEIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ1gsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCdHZDLElBQUksQ0FBQ3BLLEdBQWhDLENBQWxELEVBQXdGO0lBQUU7SUFBMUYsQ0FEL0IsS0FFTyxDQUFDLEdBQUdoQixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDVixXQUF0QyxFQUFtRCxDQUFDLEdBQUd6NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBM0IsQ0FBbkQsRUFBeUc7SUFBRTtJQUEzRyxDQUYvQixDQUQ0QyxDQUFoRCxDQUZzQyxDQUExQyxDQUR5QyxDQUE3QyxDQUQ2QyxDQUFqRCxDQW5DRCxFQStDQyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDNkIsV0FBckMsRUFBa0QsRUFDN0MsQ0FBQyxHQUFHaDdDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQjF4QyxJQUFJLENBQUMrNkMsV0FBM0IsRUFBd0MsVUFBVTVzQyxJQUFWLEVBQWdCbEssQ0FBaEIsRUFBbUI7TUFDeEksT0FBUSxDQUFDLEdBQUdyUCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1FBQ2pFdHZDLEdBQUcsRUFBRXdFLENBRDREO1FBRWpFLFNBQU8sQ0FBQyxHQUFHclAsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEI7VUFBRSxRQUFReHRDLENBQUMsS0FBS2pFLElBQUksQ0FBQys2QyxXQUFMLENBQWlCaGdELE1BQWpCLEdBQTBCO1FBQTFDLENBQTFCO01BRjBELENBQXJDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDOEIsV0FBdkMsRUFBb0QsQ0FDaEQsQ0FBQyxHQUFHajdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLGFBQTFCLENBQTNCLENBQTFDLEVBQWdIO01BQUU7TUFBbEgsQ0FEc0MsRUFFdEMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMrQixXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdsN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDZ0MsV0FBckMsRUFBa0QsQ0FDN0M1aEMsSUFBSSxDQUFDc3NDLFVBQU4sSUFDTyxDQUFDLEdBQUc3bEQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2lCLFdBQXRDLEVBQW1ELENBQUMsR0FBR3A3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzN4QixLQUFMLENBQVdxK0Isb0JBQVgsQ0FBZ0M3c0MsSUFBSSxDQUFDc3NDLFVBQXJDLENBQTNCLElBQStFLElBQWxJLEVBQXdJO01BQUU7TUFBMUksQ0FEL0IsS0FFTyxDQUFDLEdBQUc3bEQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2tCLFdBQXRDLEVBQW1ELE1BQU0sQ0FBQyxHQUFHcjdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLENBQXVCLFlBQXZCLENBQTNCLENBQU4sR0FBeUUsSUFBNUgsRUFBa0k7TUFBRTtNQUFwSSxDQUYvQixDQUQ4QyxDQUFsRCxDQUQ4QyxFQU05QyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3RDNS9CLElBQUksQ0FBQzBpQixJQUFOLElBQ08sQ0FBQyxHQUFHajhCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NtQixXQUF0QyxFQUFtRCxDQUFDLEdBQUd0N0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixNQUExQixDQUEzQixJQUFnRSxHQUFoRSxHQUFzRSxDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQm5oQyxJQUFJLENBQUMwaUIsSUFBaEMsQ0FBekgsRUFBZ0s7TUFBRTtNQUFsSyxDQUQvQixLQUVPLENBQUMsR0FBR2o4QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDb0IsV0FBdEMsRUFBbUQsTUFBTSxDQUFDLEdBQUd2N0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBM0IsQ0FBTixHQUE2RCxHQUFoSCxFQUFxSDtNQUFFO01BQXZILENBRi9CLENBRHVDLENBQTNDLENBTjhDLENBQWxELENBRHNDLENBQTFDLENBRnNDLENBQTFDLENBRGdELENBQXBELENBREQsQ0FINkIsRUF1QjdCO01BQUU7TUF2QjJCLENBQWhDO0lBd0JILENBekJnRixDQUFwRCxFQXlCekI7SUFBSTtJQXpCcUIsQ0FEaUIsSUEyQjdDLENBQUMsR0FBR3J6QixLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0IxeEMsSUFBSSxDQUFDdVYsV0FBM0IsRUFBd0MsVUFBVXBILElBQVYsRUFBZ0JsSyxDQUFoQixFQUFtQjtNQUN4SSxPQUFRLENBQUMsR0FBR3JQLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFDakV0dkMsR0FBRyxFQUFFd0UsQ0FENEQ7UUFFakUsU0FBTyxDQUFDLEdBQUdyUCxLQUFLLENBQUM2OEMsY0FBVixFQUEwQjtVQUFFLFFBQVF4dEMsQ0FBQyxLQUFLakUsSUFBSSxDQUFDdVYsV0FBTCxDQUFpQnhhLE1BQWpCLEdBQTBCO1FBQTFDLENBQTFCO01BRjBELENBQXJDLEVBRzdCLEVBQ0UsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCdmpDLElBQUksQ0FBQytDLFNBQTNCLEVBQXNDLFVBQVVBLFNBQVYsRUFBcUI1SixDQUFyQixFQUF3QjtRQUMzSSxPQUFRLENBQUMsR0FBRzFTLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7VUFDakV0dkMsR0FBRyxFQUFFNkgsQ0FENEQ7VUFFakUsU0FBTyxDQUFDLEdBQUcxUyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQjtZQUFFLFFBQVFucUMsQ0FBQyxLQUFLNkcsSUFBSSxDQUFDK0MsU0FBTCxDQUFlblcsTUFBZixHQUF3QjtVQUF4QyxDQUExQjtRQUYwRCxDQUFyQyxFQUc3QixDQUNDLENBQUMsR0FBR25HLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1Q3FDLFdBQXZDLEVBQW9ELENBQ2hELENBQUMsR0FBR3g3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NzQyxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd6N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLGFBQTFCLENBQTNCLENBQTFDLEVBQWdIO1FBQUU7UUFBbEgsQ0FENkMsRUFFN0MsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3JDNzhCLFNBQVMsQ0FBQ0EsU0FBWCxJQUNPLENBQUMsR0FBR3RjLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN1QixXQUFyQyxFQUFrRCxDQUN4RXAvQixTQUFTLENBQUNoVSxRQUFYLElBQ08sQ0FBQyxHQUFHdEksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ3dCLFdBQXRDLEVBQW1ELE1BQU0sQ0FBQyxHQUFHMzdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsVUFBMUIsQ0FBM0IsQ0FBTixHQUEwRSxJQUExRSxHQUFpRixDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzN4QixLQUFMLENBQVcxZixTQUFYLENBQXFCaVUsU0FBUyxDQUFDaFUsUUFBL0IsQ0FBM0IsQ0FBakYsR0FBd0osR0FBM00sRUFBZ047UUFBRTtRQUFsTixDQUQvQixJQUVNLENBQUMsR0FBR3RJLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQUhtRSxFQUl6RSxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDeUMsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHNTdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCcCtCLFNBQVMsQ0FBQ0EsU0FBckMsQ0FBbkQsRUFBb0c7UUFBRTtRQUF0RyxDQUp5RSxDQUFsRCxDQUQvQixLQU9PLENBQUMsR0FBR3RjLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MwQixXQUF0QyxFQUFtRCxDQUFDLEdBQUc3N0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBM0IsQ0FBbkQsRUFBeUc7UUFBRTtRQUEzRyxDQVAvQixDQURzQyxDQUExQyxDQUY2QyxDQUFqRCxDQURnRCxDQUFwRCxDQURELENBSDZCLEVBbUI3QjtRQUFFO1FBbkIyQixDQUFoQztNQW9CSCxDQXJCZ0YsQ0FBcEQsRUFxQnpCO01BQUk7TUFyQnFCLENBRDlCLEVBSDZCLEVBMEI3QjtNQUFFO01BMUIyQixDQUFoQztJQTJCSCxDQTVCZ0YsQ0FBcEQsRUE0QnpCO0lBQUk7SUE1QnFCLENBM0JpQixJQXdEN0MsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQjF4QyxJQUFJLENBQUNpN0Msb0JBQTNCLEVBQWlELFVBQVU5c0MsSUFBVixFQUFnQmxLLENBQWhCLEVBQW1CO01BQ2pKLE9BQVEsQ0FBQyxHQUFHclAsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztRQUNqRXR2QyxHQUFHLEVBQUV3RSxDQUQ0RDtRQUVqRSxTQUFPLENBQUMsR0FBR3JQLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCO1VBQUUsUUFBUXh0QyxDQUFDLEtBQUtqRSxJQUFJLENBQUNpN0Msb0JBQUwsQ0FBMEJsZ0QsTUFBMUIsR0FBbUM7UUFBbkQsQ0FBMUI7TUFGMEQsQ0FBckMsRUFHN0IsRUFDRSxDQUFDLEdBQUduRyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0J2akMsSUFBSSxDQUFDK0MsU0FBM0IsRUFBc0MsVUFBVUEsU0FBVixFQUFxQjVKLENBQXJCLEVBQXdCO1FBQzNJLE9BQVEsQ0FBQyxHQUFHMVMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztVQUNqRXR2QyxHQUFHLEVBQUU2SCxDQUQ0RDtVQUVqRSxTQUFPLENBQUMsR0FBRzFTLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCO1lBQUUsUUFBUW5xQyxDQUFDLEtBQUs2RyxJQUFJLENBQUMrQyxTQUFMLENBQWVuVyxNQUFmLEdBQXdCO1VBQXhDLENBQTFCO1FBRjBELENBQXJDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDMkMsV0FBdkMsRUFBb0QsQ0FDaEQsQ0FBQyxHQUFHOTdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQzRDLFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBRy83QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsc0JBQTFCLENBQTNCLENBQTFDLEVBQXlIO1FBQUU7UUFBM0gsQ0FENkMsRUFFN0MsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3JDNzhCLFNBQVMsQ0FBQ0EsU0FBWCxJQUNPLENBQUMsR0FBR3RjLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM2QixXQUFyQyxFQUFrRCxDQUN4RTEvQixTQUFTLENBQUNoVSxRQUFYLElBQ08sQ0FBQyxHQUFHdEksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQzhCLFdBQXRDLEVBQW1ELE1BQU0sQ0FBQyxHQUFHajhDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsVUFBMUIsQ0FBM0IsQ0FBTixHQUEwRSxJQUExRSxHQUFpRixDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzN4QixLQUFMLENBQVcxZixTQUFYLENBQXFCaVUsU0FBUyxDQUFDaFUsUUFBL0IsQ0FBM0IsQ0FBakYsR0FBd0osR0FBM00sRUFBZ047UUFBRTtRQUFsTixDQUQvQixJQUVNLENBQUMsR0FBR3RJLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQUhtRSxFQUl6RSxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDK0MsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHbDhDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCcCtCLFNBQVMsQ0FBQ0EsU0FBckMsQ0FBbkQsRUFBb0c7UUFBRTtRQUF0RyxDQUp5RSxDQUFsRCxDQUQvQixLQU9PLENBQUMsR0FBR3RjLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NnQyxXQUF0QyxFQUFtRCxDQUFDLEdBQUduOEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBM0IsQ0FBbkQsRUFBeUc7UUFBRTtRQUEzRyxDQVAvQixDQURzQyxDQUExQyxDQUY2QyxDQUFqRCxDQURnRCxDQUFwRCxDQURELENBSDZCLEVBbUI3QjtRQUFFO1FBbkIyQixDQUFoQztNQW9CSCxDQXJCZ0YsQ0FBcEQsRUFxQnpCO01BQUk7TUFyQnFCLENBRDlCLEVBSDZCLEVBMEI3QjtNQUFFO01BMUIyQixDQUFoQztJQTJCSCxDQTVCZ0YsQ0FBcEQsRUE0QnpCO0lBQUk7SUE1QnFCLENBeERpQixJQXFGN0MsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQjF4QyxJQUFJLENBQUNrN0MsY0FBM0IsRUFBMkMsVUFBVS9zQyxJQUFWLEVBQWdCbEssQ0FBaEIsRUFBbUI7TUFDM0ksT0FBUSxDQUFDLEdBQUdyUCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1FBQ2pFdHZDLEdBQUcsRUFBRXdFLENBRDREO1FBRWpFLFNBQU8sQ0FBQyxHQUFHclAsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEI7VUFBRSxRQUFReHRDLENBQUMsS0FBS2pFLElBQUksQ0FBQ2s3QyxjQUFMLENBQW9CbmdELE1BQXBCLEdBQTZCO1FBQTdDLENBQTFCO01BRjBELENBQXJDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDaUQsV0FBdkMsRUFBb0QsQ0FDaEQsQ0FBQyxHQUFHcDhDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLGdCQUExQixDQUEzQixDQUExQyxFQUFtSDtNQUFFO01BQXJILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDa0QsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHcjhDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN0QzUvQixJQUFJLENBQUNzc0MsVUFBTixJQUNPLENBQUMsR0FBRzdsRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDbUMsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHdDhDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsWUFBMUIsQ0FBM0IsSUFBc0UsS0FBdEUsR0FBOEUsQ0FBQyxHQUFHOUksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUMzeEIsS0FBTCxDQUFXcStCLG9CQUFYLENBQWdDN3NDLElBQUksQ0FBQ3NzQyxVQUFyQyxDQUEzQixDQUFqSSxFQUErTTtNQUFFO01BQWpOLENBRC9CLEtBRU8sQ0FBQyxHQUFHN2xELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NvQyxXQUF0QyxFQUFtRCxNQUFNLENBQUMsR0FBR3Y4QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixDQUF1QixZQUF2QixDQUEzQixDQUFOLEdBQXlFLEdBQTVILEVBQWlJO01BQUU7TUFBbkksQ0FGL0IsQ0FEdUMsQ0FBM0MsQ0FEOEMsRUFNOUMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN0QzUvQixJQUFJLENBQUMwaUIsSUFBTixJQUNPLENBQUMsR0FBR2o4QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDcUMsV0FBdEMsRUFBbUQsT0FBTyxDQUFDLEdBQUd4OEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixNQUExQixDQUEzQixDQUFQLEdBQXVFLEdBQXZFLEdBQTZFLENBQUMsR0FBRzlJLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDM3hCLEtBQUwsQ0FBV3NVLE9BQVgsQ0FBbUI5aUIsSUFBSSxDQUFDMGlCLElBQXhCLENBQTNCLENBQWhJLEVBQTJMO01BQUU7TUFBN0wsQ0FEL0IsS0FFTyxDQUFDLEdBQUdqOEIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ3NDLFdBQXRDLEVBQW1ELE9BQU8sQ0FBQyxHQUFHejhDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLENBQXVCLE1BQXZCLENBQTNCLENBQVAsR0FBb0UsR0FBdkgsRUFBNEg7TUFBRTtNQUE5SCxDQUYvQixDQUR1QyxDQUEzQyxDQU44QyxFQVc5QyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3RDNS9CLElBQUksQ0FBQ2d0QyxLQUFOLElBQ08sQ0FBQyxHQUFHdm1ELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0N1QyxXQUF0QyxFQUFtRCxPQUFPLENBQUMsR0FBRzE4QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLE9BQTFCLENBQTNCLENBQVAsR0FBd0UsR0FBeEUsR0FBOEUsQ0FBQyxHQUFHOUksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJuaEMsSUFBSSxDQUFDZ3RDLEtBQWhDLENBQWpJLEVBQXlLO01BQUU7TUFBM0ssQ0FEL0IsS0FFTyxDQUFDLEdBQUd2bUQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ3dDLFdBQXRDLEVBQW1ELE9BQU8sQ0FBQyxHQUFHMzhDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLENBQXVCLE9BQXZCLENBQTNCLENBQVAsR0FBcUUsR0FBeEgsRUFBNkg7TUFBRTtNQUEvSCxDQUYvQixDQUR1QyxDQUEzQyxDQVg4QyxDQUFsRCxDQURzQyxDQUExQyxDQUZzQyxDQUExQyxDQURnRCxDQUFwRCxDQURELENBSDZCLEVBNEI3QjtNQUFFO01BNUIyQixDQUFoQztJQTZCSCxDQTlCZ0YsQ0FBcEQsRUE4QnpCO0lBQUk7SUE5QnFCLENBckZpQixJQW9IN0MsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQjF4QyxJQUFJLENBQUNvN0MsS0FBM0IsRUFBa0MsVUFBVWp0QyxJQUFWLEVBQWdCbEssQ0FBaEIsRUFBbUI7TUFDbEksT0FBUSxDQUFDLEdBQUdyUCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1FBQ2pFdHZDLEdBQUcsRUFBRXdFLENBRDREO1FBRWpFLFNBQU8sQ0FBQyxHQUFHclAsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxnQkFBRCxFQUFtQjtVQUFFLFFBQVF4dEMsQ0FBQyxLQUFLakUsSUFBSSxDQUFDbzdDLEtBQUwsQ0FBV3JnRCxNQUFYLEdBQW9CO1FBQXBDLENBQW5CLENBQTFCO01BRjBELENBQXJDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDeUQsV0FBdkMsRUFBb0QsQ0FDaEQsQ0FBQyxHQUFHNThDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixPQUExQixDQUEzQixDQUExQyxFQUEwRztNQUFFO01BQTVHLENBRGdELEVBRWhELENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNzSCxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd6Z0QsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3RDNS9CLElBQUksQ0FBQ2t0QyxRQUFOLElBQ08sQ0FBQyxHQUFHem1ELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0N1RyxXQUF0QyxFQUFtRCxNQUFNLENBQUMsR0FBRzFnRCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQm5oQyxJQUFJLENBQUNrdEMsUUFBaEMsQ0FBTixHQUFrRCxHQUFyRyxFQUEwRztNQUFFO01BQTVHLENBRC9CLEtBRU8sQ0FBQyxHQUFHem1ELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0N3RyxXQUF0QyxFQUFtRCxPQUFPLENBQUMsR0FBRzNnRCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixDQUF1QixVQUF2QixDQUEzQixDQUFQLEdBQXdFLEdBQTNILEVBQWdJO01BQUU7TUFBbEksQ0FGL0IsQ0FEdUMsQ0FBM0MsQ0FEOEMsRUFNOUMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN0QzUvQixJQUFJLENBQUNtdEMsR0FBTCxDQUFTLENBQVQsRUFBWUMsUUFBYixJQUNPLENBQUMsR0FBRzNtRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDeUcsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHNWdELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsVUFBMUIsQ0FBM0IsSUFBb0UsR0FBcEUsR0FBMEUsQ0FBQyxHQUFHOUksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJuaEMsSUFBSSxDQUFDbXRDLEdBQUwsQ0FBUyxDQUFULEVBQVlDLFFBQXZDLENBQTFFLEdBQTZILElBQWhMLEVBQXNMO01BQUU7TUFBeEwsQ0FEL0IsS0FFTyxDQUFDLEdBQUczbUQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQzBHLFdBQXRDLEVBQW1ELE9BQU8sQ0FBQyxHQUFHN2dELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLENBQXVCLFVBQXZCLENBQTNCLENBQVAsR0FBd0UsSUFBM0gsRUFBaUk7TUFBRTtNQUFuSSxDQUYvQixDQUR1QyxDQUEzQyxDQU44QyxFQVc5QyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3RDNS9CLElBQUksQ0FBQ210QyxHQUFMLENBQVMsQ0FBVCxFQUFZRSxTQUFiLElBQ08sQ0FBQyxHQUFHNW1ELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MyRyxXQUF0QyxFQUFtRCxDQUFDLEdBQUc5Z0QsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixXQUExQixDQUEzQixJQUFxRSxHQUFyRSxHQUEyRSxDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQm5oQyxJQUFJLENBQUNtdEMsR0FBTCxDQUFTLENBQVQsRUFBWUUsU0FBdkMsQ0FBOUgsRUFBaUw7TUFBRTtNQUFuTCxDQUQvQixLQUVPLENBQUMsR0FBRzVtRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDNEcsV0FBdEMsRUFBbUQsT0FBTyxDQUFDLEdBQUcvZ0QsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsQ0FBdUIsV0FBdkIsQ0FBM0IsQ0FBUCxHQUF5RSxHQUE1SCxFQUFpSTtNQUFFO01BQW5JLENBRi9CLENBRHVDLENBQTNDLENBWDhDLENBQWxELENBRHNDLENBQTFDLENBRHNDLENBQTFDLENBRmdELENBQXBELENBREQsQ0FINkIsRUE0QjdCO01BQUU7TUE1QjJCLENBQWhDO0lBNkJILENBOUJnRixDQUFwRCxFQThCekI7SUFBSTtJQTlCcUIsQ0FwSGlCLElBbUo3QyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCMXhDLElBQUksQ0FBQ3k3QyxTQUEzQixFQUFzQyxVQUFVdHRDLElBQVYsRUFBZ0JsSyxDQUFoQixFQUFtQjtNQUN0SSxPQUFRLENBQUMsR0FBR3JQLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFDakV0dkMsR0FBRyxFQUFFd0UsQ0FENEQ7UUFFakUsU0FBTyxDQUFDLEdBQUdyUCxLQUFLLENBQUM2OEMsY0FBVixFQUEwQjtVQUFFLFFBQVF4dEMsQ0FBQyxLQUFLakUsSUFBSSxDQUFDeTdDLFNBQUwsQ0FBZTFnRCxNQUFmLEdBQXdCO1FBQXhDLENBQTFCO01BRjBELENBQXJDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDNkgsV0FBdkMsRUFBb0QsQ0FDaEQsQ0FBQyxHQUFHaGhELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFdBQTFCLENBQTNCLENBQTFDLEVBQThHO01BQUU7TUFBaEgsQ0FEc0MsRUFFdEMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3JDNS9CLElBQUksQ0FBQzBpQixJQUFOLElBQ08sQ0FBQyxHQUFHajhCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M4RyxXQUF0QyxFQUFtRCxDQUFDLEdBQUdqaEQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUMzeEIsS0FBTCxDQUFXKytCLG1CQUFYLENBQStCdnRDLElBQUksQ0FBQzBpQixJQUFwQyxDQUEzQixDQUFuRCxFQUEwSDtNQUFFO01BQTVILENBRC9CLEtBRU8sQ0FBQyxHQUFHajhCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MrRyxXQUF0QyxFQUFtRCxDQUFDLEdBQUdsaEQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBM0IsQ0FBbkQsRUFBeUc7TUFBRTtNQUEzRyxDQUYvQixDQURzQyxDQUExQyxDQUZzQyxDQUExQyxDQURnRCxDQUFwRCxDQURELENBSDZCLEVBYzdCO01BQUU7TUFkMkIsQ0FBaEM7SUFlSCxDQWhCZ0YsQ0FBcEQsRUFnQnpCO0lBQUk7SUFoQnFCLENBbkppQixJQW9LN0MsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQjF4QyxJQUFJLENBQUMyN0MsY0FBM0IsRUFBMkMsVUFBVXh0QyxJQUFWLEVBQWdCbEssQ0FBaEIsRUFBbUI7TUFDM0ksT0FBUSxDQUFDLEdBQUdyUCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1FBQ2pFdHZDLEdBQUcsRUFBRXdFLENBRDREO1FBRWpFLFNBQU8sQ0FBQyxHQUFHclAsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEI7VUFBRSxRQUFReHRDLENBQUMsS0FBS2pFLElBQUksQ0FBQzI3QyxjQUFMLENBQW9CNWdELE1BQXBCLEdBQTZCO1FBQTdDLENBQTFCO01BRjBELENBQXJDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDZ0ksV0FBdkMsRUFBb0QsQ0FDaEQsQ0FBQyxHQUFHbmhELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLGdCQUExQixDQUEzQixDQUExQyxFQUFtSDtNQUFFO01BQXJILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUNyQzUvQixJQUFJLENBQUMwaUIsSUFBTixJQUNPLENBQUMsR0FBR2o4QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDaUgsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHcGhELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDM3hCLEtBQUwsQ0FBV2kvQix1QkFBWCxDQUFtQ3p0QyxJQUFJLENBQUMwaUIsSUFBeEMsQ0FBM0IsQ0FBbkQsRUFBOEg7TUFBRTtNQUFoSSxDQUQvQixLQUVPLENBQUMsR0FBR2o4QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDa0gsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHcmhELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQTNCLENBQW5ELEVBQXlHO01BQUU7TUFBM0csQ0FGL0IsQ0FEc0MsQ0FBMUMsQ0FGc0MsQ0FBMUMsQ0FEZ0QsQ0FBcEQsQ0FERCxDQUg2QixFQWM3QjtNQUFFO01BZDJCLENBQWhDO0lBZUgsQ0FoQmdGLENBQXBELEVBZ0J6QjtJQUFJO0lBaEJxQixDQXBLaUIsSUFxTDdDLENBQUMsR0FBR3J6QixLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0IxeEMsSUFBSSxDQUFDNjdDLG1CQUEzQixFQUFnRCxVQUFVMXRDLElBQVYsRUFBZ0JsSyxDQUFoQixFQUFtQjtNQUNoSixPQUFRLENBQUMsR0FBR3JQLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFDakV0dkMsR0FBRyxFQUFFd0UsQ0FENEQ7UUFFakUsU0FBTyxDQUFDLEdBQUdyUCxLQUFLLENBQUM2OEMsY0FBVixFQUEwQjtVQUFFLFFBQVF4dEMsQ0FBQyxLQUFLakUsSUFBSSxDQUFDNjdDLG1CQUFMLENBQXlCOWdELE1BQXpCLEdBQWtDO1FBQWxELENBQTFCO01BRjBELENBQXJDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDbUksV0FBdkMsRUFBb0QsQ0FDaEQsQ0FBQyxHQUFHdGhELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLHFCQUExQixFQUFpRG8rQyxZQUE1RSxDQUExQyxFQUFxSTtNQUFFO01BQXZJLENBRHNDLEVBRXRDLENBQUMsR0FBR2xuRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDckM1L0IsSUFBSSxDQUFDMGlCLElBQU4sSUFDTyxDQUFDLEdBQUdqOEIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ29ILFdBQXRDLEVBQW1ELENBQUMsR0FBR3ZoRCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzN4QixLQUFMLENBQVdvL0IsWUFBWCxDQUF3QjV0QyxJQUFJLENBQUMwaUIsSUFBN0IsQ0FBM0IsQ0FBbkQsRUFBbUg7TUFBRTtNQUFySCxDQUQvQixLQUVPLENBQUMsR0FBR2o4QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDcUgsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHeGhELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQTNCLENBQW5ELEVBQXlHO01BQUU7TUFBM0csQ0FGL0IsQ0FEc0MsQ0FBMUMsQ0FGc0MsQ0FBMUMsQ0FEZ0QsQ0FBcEQsQ0FERCxDQUg2QixFQWM3QjtNQUFFO01BZDJCLENBQWhDO0lBZUgsQ0FoQmdGLENBQXBELEVBZ0J6QjtJQUFJO0lBaEJxQixDQXJMaUIsRUFBbEQsQ0EvQ0QsQ0FINkIsRUF5UDdCO0lBQUU7SUF6UDJCLENBQWhDO0VBMFBILENBM1B1RixDQUFwRCxFQTJQaEM7RUFBSTtFQTNQNEIsQ0FBcEM7QUE0UEg7O0FBQ0R2ekIsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUMzWGE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRXB1QyxHQUFHLEVBQUU7QUFBUCxDQUFqQjtBQUNBLElBQUlxdUMsVUFBVSxHQUFHO0VBQ2JydUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJdXVDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFeHVDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSXl1QyxVQUFVLEdBQUc7RUFDYnp1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUkwdUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUzdUMsR0FBRyxFQUFFO0FBQVAsQ0FBakI7QUFDQSxJQUFJNHVDLFdBQVcsR0FBRztFQUNkNXVDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSW13QyxXQUFXLEdBQUc7RUFDZG53QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUlvd0MsV0FBVyxHQUFHO0VBQ2Rwd0MsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJcXdDLFdBQVcsR0FBRztFQUNkcndDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSXN3QyxXQUFXLEdBQUc7RUFDZHR3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjs7QUFJQSxTQUFTaXVDLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsT0FBUSxDQUFDLEdBQUcvNUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3BCLFVBQXJDLEVBQWlELEVBQzVFLENBQUMsR0FBRy80QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JwRCxJQUFJLENBQUNuM0MsSUFBTCxDQUFVZ3VCLE9BQWhDLEVBQXlDLFVBQVU0a0IsVUFBVixFQUFzQnRxQyxHQUF0QixFQUEyQjtJQUNqSixPQUFRLENBQUMsR0FBRzdLLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7TUFDakV0dkMsR0FBRyxFQUFFQSxHQUQ0RDtNQUVqRSxTQUFPLENBQUMsR0FBRzdLLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCO1FBQUUsUUFBUWh5QyxHQUFHLEtBQUtqTCxNQUFNLENBQUMwUCxJQUFQLENBQVlvcUMsSUFBSSxDQUFDbjNDLElBQUwsQ0FBVWd1QixPQUF0QixFQUErQnBxQixNQUEvQixHQUF3QztNQUExRCxDQUExQjtJQUYwRCxDQUFyQyxFQUc3QixDQUNDLENBQUMsR0FBR25HLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0gsVUFBckMsRUFBaUQsQ0FDNUM3RCxVQUFVLENBQUNpUyxjQUFaLElBQ08sQ0FBQyxHQUFHcG5ELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NsQixVQUF0QyxFQUFrRCxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUMzeEIsS0FBTCxDQUFXcy9CLG1CQUFYLENBQStCbFMsVUFBVSxDQUFDaVMsY0FBMUMsQ0FBM0IsQ0FBbEQsRUFBeUk7SUFBRTtJQUEzSSxDQUQvQixLQUVPLENBQUMsR0FBR3BuRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDakIsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLENBQXVCLE1BQXZCLENBQTNCLENBQWxELEVBQThHO0lBQUU7SUFBaEgsQ0FGL0IsQ0FENkMsQ0FBakQsQ0FERCxFQU1DLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNDLFVBQXJDLEVBQWlELENBQzVDakUsVUFBVSxDQUFDamlCLFNBQVosSUFDTyxDQUFDLEdBQUdsekIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2QsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCdkYsVUFBVSxDQUFDamlCLFNBQXRDLENBQWxELEVBQW9HO0lBQUU7SUFBdEcsQ0FEL0IsS0FFTyxDQUFDLEdBQUdsekIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2IsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLENBQXVCLFNBQXZCLEVBQWtDLGtCQUFsQyxDQUEzQixDQUFsRCxFQUFxSTtJQUFFO0lBQXZJLENBRi9CLENBRDZDLENBQWpELENBTkQsRUFXQyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNJLFVBQXJDLEVBQWlELEVBQzVDLENBQUMsR0FBR3Y1QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0IzSCxVQUFVLENBQUNtUyxTQUFqQyxFQUE0QyxVQUFVbDhDLElBQVYsRUFBZ0JpRSxDQUFoQixFQUFtQjtNQUM1SSxPQUFRLENBQUMsR0FBR3JQLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFDakV0dkMsR0FBRyxFQUFFd0UsQ0FENEQ7UUFFakUsU0FBTyxDQUFDLEdBQUdyUCxLQUFLLENBQUM2OEMsY0FBVixFQUEwQjtVQUFFLFFBQVFoeUMsR0FBRyxLQUFLc3FDLFVBQVUsQ0FBQ21TLFNBQVgsQ0FBcUJuaEQsTUFBckIsR0FBOEI7UUFBaEQsQ0FBMUI7TUFGMEQsQ0FBckMsRUFHN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMsSUFBdkMsRUFBNkMsQ0FDekMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QyxJQUF2QyxFQUE2QyxDQUN6QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsOEJBQTFCLENBQTNCLENBQTFDLEVBQWlJO01BQUU7TUFBbkksQ0FEc0MsRUFFckNzQyxJQUFJLENBQUNwSyxHQUFOLElBQ08sQ0FBQyxHQUFHaEIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ1gsVUFBcEMsRUFBZ0QsQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCdHZDLElBQUksQ0FBQ3BLLEdBQWhDLENBQWhELEVBQXNGO01BQUU7TUFBeEYsQ0FEL0IsS0FFTyxDQUFDLEdBQUdoQixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DVixXQUFwQyxFQUFpRCxDQUFDLEdBQUd6NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBM0IsQ0FBakQsRUFBdUc7TUFBRTtNQUF6RyxDQUYvQixDQUZzQyxDQUExQyxDQUR5QyxFQU96QyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsOEJBQTFCLENBQTNCLENBQTFDLEVBQWlJO01BQUU7TUFBbkksQ0FEc0MsRUFFdEMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLEVBQ3JDLENBQUMsR0FBR241QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0IxeEMsSUFBSSxDQUFDa1IsU0FBM0IsRUFBc0MsVUFBVXpXLENBQVYsRUFBYTJqQixDQUFiLEVBQWdCO1FBQ25JLE9BQVEsQ0FBQyxHQUFHeHBCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7VUFDakV0dkMsR0FBRyxFQUFFMmUsQ0FENEQ7VUFFakUsU0FBTyxDQUFDLEdBQUd4cEIsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxNQUFELEVBQVM7WUFBRSxRQUFRcnpCLENBQUMsSUFBSXBlLElBQUksQ0FBQ2tSLFNBQUwsQ0FBZW5XLE1BQWYsR0FBd0I7VUFBdkMsQ0FBVCxDQUExQjtRQUYwRCxDQUFyQyxFQUc3QixDQUNFTixDQUFDLENBQUN5VyxTQUFILElBQ08sQ0FBQyxHQUFHdGMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2EsV0FBckMsRUFBa0QsQ0FDeEVuMUMsQ0FBQyxDQUFDeUMsUUFBSCxJQUNPLENBQUMsR0FBR3RJLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NjLFdBQXRDLEVBQW1ELE1BQU0sQ0FBQyxHQUFHajdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsVUFBMUIsQ0FBM0IsQ0FBTixHQUEwRSxJQUExRSxHQUFpRixDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzN4QixLQUFMLENBQVcxZixTQUFYLENBQXFCeEMsQ0FBQyxDQUFDeUMsUUFBdkIsQ0FBM0IsQ0FBakYsR0FBZ0osR0FBbk0sRUFBd007UUFBRTtRQUExTSxDQUQvQixJQUVNLENBQUMsR0FBR3RJLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQUhtRSxFQUl4RTEwQyxDQUFDLENBQUN5VyxTQUFILElBQ08sQ0FBQyxHQUFHdGMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2UsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHbDdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCNzBDLENBQUMsQ0FBQ3lXLFNBQTdCLENBQW5ELEVBQTRGO1FBQUU7UUFBOUYsQ0FEL0IsSUFFTSxDQUFDLEdBQUd0YyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FObUUsQ0FBbEQsQ0FEL0IsS0FTTyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2dCLFdBQXRDLEVBQW1ELENBQUMsR0FBR243QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUEzQixDQUFuRCxFQUF5RztRQUFFO1FBQTNHLENBVC9CLENBREQsQ0FINkIsRUFjN0I7UUFBRTtRQWQyQixDQUFoQztNQWVILENBaEJnRixDQUFwRCxFQWdCekI7TUFBSTtNQWhCcUIsQ0FEUyxFQUExQyxDQUZzQyxDQUExQyxDQVB5QyxDQUE3QyxDQUR5QyxDQUE3QyxDQURELENBSDZCLEVBb0M3QjtNQUFFO01BcEMyQixDQUFoQztJQXFDSCxDQXRDZ0YsQ0FBcEQsRUFzQ3pCO0lBQUk7SUF0Q3FCLENBRGdCLEVBQWpELENBRHVDLENBQTNDLENBWEQsQ0FINkIsRUF5RDdCO0lBQUU7SUF6RDJCLENBQWhDO0VBMERILENBM0RnRixDQUFwRCxFQTJEekI7RUFBSTtFQTNEcUIsQ0FEZ0QsRUFBakQsQ0FBaEM7QUE4REg7O0FBQ0R2ekIsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUN2R2E7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRW51QyxHQUFHLEVBQUU7QUFBUCxDQUFqQjtBQUNBLElBQUlvdUMsVUFBVSxHQUFHO0VBQ2JwdUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJcXVDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlFLFVBQVUsR0FBRztFQUFFdnVDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSXd1QyxVQUFVLEdBQUc7RUFDYnh1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUl5dUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2Q1dUMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJbXdDLFdBQVcsR0FBRztFQUNkbndDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSW93QyxXQUFXLEdBQUc7RUFDZHB3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUlxd0MsV0FBVyxHQUFHO0VBQ2Ryd0MsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJc3dDLFdBQVcsR0FBRztFQUFFdHdDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSXV3QyxXQUFXLEdBQUc7RUFDZHZ3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUl3d0MsV0FBVyxHQUFHO0VBQUV4d0MsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJeXdDLFdBQVcsR0FBRztFQUNkendDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSTB3QyxXQUFXLEdBQUc7RUFBRTF3QyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUkyd0MsV0FBVyxHQUFHO0VBQ2Qzd0MsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJNHdDLFdBQVcsR0FBRztFQUFFNXdDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSTZ3QyxXQUFXLEdBQUc7RUFDZDd3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUk4d0MsV0FBVyxHQUFHO0VBQUU5d0MsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7O0FBQ0EsU0FBU2l1QyxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELE9BQVEsQ0FBQyxHQUFHLzVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnBELElBQUksQ0FBQ24zQyxJQUEzQixFQUFpQyxVQUFVZ2xELGlCQUFWLEVBQTZCMThDLEdBQTdCLEVBQWtDO0lBQ3ZKLE9BQVEsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqRXR2QyxHQUFHLEVBQUVBLEdBRDREO01BRWpFLFNBQU8sQ0FBQyxHQUFHN0ssS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxpQkFBRCxFQUFvQjtRQUFFLFFBQVExMUMsTUFBTSxDQUFDMEQsR0FBRCxDQUFOLEtBQWdCNnVDLElBQUksQ0FBQ24zQyxJQUFMLENBQVU0RCxNQUFWLEdBQW1CO01BQTdDLENBQXBCLENBQTFCO0lBRjBELENBQXJDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSixVQUFyQyxFQUFpRCxDQUM1Q3dPLGlCQUFpQixDQUFDQyxpQkFBbkIsSUFDTyxDQUFDLEdBQUd4bkQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ25CLFVBQXRDLEVBQWtELENBQUMsR0FBR2g1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzN4QixLQUFMLENBQVcwL0IsZ0JBQVgsQ0FBNEJGLGlCQUFpQixDQUFDQyxpQkFBOUMsQ0FBM0IsQ0FBbEQsRUFBZ0o7SUFBRTtJQUFsSixDQUQvQixLQUVPLENBQUMsR0FBR3huRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDbEIsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHajVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLENBQXVCLG1CQUF2QixDQUEzQixDQUFsRCxFQUEySDtJQUFFO0lBQTdILENBRi9CLENBRDZDLENBQWpELENBREQsRUFNQyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRCxVQUFyQyxFQUFpRCxDQUM1Q3FPLGlCQUFpQixDQUFDanJDLFNBQWxCLENBQTRCLEdBQTVCLEVBQWlDQSxTQUFsQyxJQUNPLENBQUMsR0FBR3RjLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NmLFVBQXRDLEVBQWtELENBQUMsR0FBR3A1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQjZNLGlCQUFpQixDQUFDanJDLFNBQWxCLENBQTRCLEdBQTVCLEVBQWlDQSxTQUE1RCxDQUFsRCxFQUEwSDtJQUFFO0lBQTVILENBRC9CLEtBRU8sQ0FBQyxHQUFHdGMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2QsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLENBQXVCLFdBQXZCLENBQTNCLENBQWxELEVBQW1IO0lBQUU7SUFBckgsQ0FGL0IsQ0FENkMsQ0FBakQsQ0FORCxFQVdDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNHLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3Q1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUNJLFVBQXZDLEVBQW1ELENBQy9DLENBQUMsR0FBR3Y1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NLLFVBQXBDLEVBQWdELENBQzVDLENBQUMsR0FBR3g1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsbUJBQTFCLENBQTNCLENBQTFDLEVBQXNIO0lBQUU7SUFBeEgsQ0FENEMsRUFFNUMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLEVBQ3JDLENBQUMsR0FBR241QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0J5SyxpQkFBaUIsQ0FBQ2pyQyxTQUF4QyxFQUFtRCxVQUFVQSxTQUFWLEVBQXFCak4sQ0FBckIsRUFBd0I7TUFDeEosT0FBUSxDQUFDLEdBQUdyUCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1FBQ2pFdHZDLEdBQUcsRUFBRXdFLENBRDREO1FBRWpFLFNBQU87TUFGMEQsQ0FBckMsRUFHN0IsQ0FDRWlOLFNBQVMsQ0FBQ0EsU0FBWCxJQUNPLENBQUMsR0FBR3RjLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNWLFdBQXJDLEVBQWtELENBQ3hFbjlCLFNBQVMsQ0FBQ2hVLFFBQVgsSUFDTyxDQUFDLEdBQUd0SSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDYSxXQUF0QyxFQUFtRCxNQUFNLENBQUMsR0FBR2g3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFVBQTFCLENBQTNCLENBQU4sR0FBMEUsR0FBMUUsR0FBZ0YsQ0FBQyxHQUFHOUksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUMzeEIsS0FBTCxDQUFXMWYsU0FBWCxDQUFxQmlVLFNBQVMsQ0FBQ2hVLFFBQS9CLENBQTNCLENBQWhGLEdBQXVKLEdBQTFNLEVBQStNO01BQUU7TUFBak4sQ0FEL0IsSUFFTSxDQUFDLEdBQUd0SSxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FIbUUsRUFJeEVqK0IsU0FBUyxDQUFDQSxTQUFYLElBQ08sQ0FBQyxHQUFHdGMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2MsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHajdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCcCtCLFNBQVMsQ0FBQ0EsU0FBckMsQ0FBbkQsRUFBb0c7TUFBRTtNQUF0RyxDQUQvQixJQUVNLENBQUMsR0FBR3RjLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQU5tRSxDQUFsRCxDQUQvQixLQVNPLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDZSxXQUF0QyxFQUFtRCxDQUFDLEdBQUdsN0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBM0IsQ0FBbkQsRUFBeUc7TUFBRTtNQUEzRyxDQVQvQixDQURELENBSDZCLENBQWhDO0lBZUgsQ0FoQmdGLENBQXBELEVBZ0J6QjtJQUFJO0lBaEJxQixDQURTLEVBQTFDLENBRjRDLENBQWhELENBRCtDLEVBdUIvQyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsbUJBQTFCLENBQTNCLENBQTFDLEVBQXNIO0lBQUU7SUFBeEgsQ0FEc0MsRUFFckN5K0MsaUJBQWlCLENBQUMzZ0QsSUFBbkIsSUFDTyxDQUFDLEdBQUc1RyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DZ0IsV0FBcEMsRUFBaUQsQ0FBQyxHQUFHbjdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDM3hCLEtBQUwsQ0FBVzIvQixnQkFBWCxDQUE0QkgsaUJBQWlCLENBQUMzZ0QsSUFBOUMsQ0FBM0IsQ0FBakQsRUFBa0k7SUFBRTtJQUFwSSxDQUQvQixLQUVPLENBQUMsR0FBRzVHLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NpQixXQUFwQyxFQUFpRCxDQUFDLEdBQUdwN0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBM0IsQ0FBakQsRUFBdUc7SUFBRTtJQUF6RyxDQUYvQixDQUZzQyxDQUExQyxDQXZCK0MsRUE2Qi9DLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixtQkFBMUIsQ0FBM0IsQ0FBMUMsRUFBc0g7SUFBRTtJQUF4SCxDQURzQyxFQUVyQ3krQyxpQkFBaUIsQ0FBQ0MsaUJBQW5CLElBQ08sQ0FBQyxHQUFHeG5ELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NrQixXQUFwQyxFQUFpRCxDQUFDLEdBQUdyN0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUMzeEIsS0FBTCxDQUFXMC9CLGdCQUFYLENBQTRCRixpQkFBaUIsQ0FBQ0MsaUJBQTlDLENBQTNCLENBQWpELEVBQStJO0lBQUU7SUFBakosQ0FEL0IsS0FFTyxDQUFDLEdBQUd4bkQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ21CLFdBQXBDLEVBQWlELENBQUMsR0FBR3Q3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUEzQixDQUFqRCxFQUF1RztJQUFFO0lBQXpHLENBRi9CLENBRnNDLENBQTFDLENBN0IrQyxFQW1DL0MsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLEtBQTFCLENBQTNCLENBQTFDLEVBQXdHO0lBQUU7SUFBMUcsQ0FEc0MsRUFFckN5K0MsaUJBQWlCLENBQUN2bUQsR0FBbkIsSUFDTyxDQUFDLEdBQUdoQixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9Db0IsV0FBcEMsRUFBaUQsQ0FBQyxHQUFHdjdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCNk0saUJBQWlCLENBQUN2bUQsR0FBN0MsQ0FBakQsRUFBb0c7SUFBRTtJQUF0RyxDQUQvQixLQUVPLENBQUMsR0FBR2hCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NxQixXQUFwQyxFQUFpRCxDQUFDLEdBQUd4N0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBM0IsQ0FBakQsRUFBdUc7SUFBRTtJQUF6RyxDQUYvQixDQUZzQyxDQUExQyxDQW5DK0MsRUF5Qy9DLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixhQUExQixDQUEzQixDQUExQyxFQUFnSDtJQUFFO0lBQWxILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3RDb08saUJBQWlCLENBQUNwUyxVQUFuQixJQUNPLENBQUMsR0FBR24xQyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDc0IsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHejdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCNk0saUJBQWlCLENBQUNwUyxVQUE3QyxDQUFuRCxFQUE2RztJQUFFO0lBQS9HLENBRC9CLEtBRU8sQ0FBQyxHQUFHbjFDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0N1QixXQUF0QyxFQUFtRCxDQUFDLEdBQUcxN0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBM0IsQ0FBbkQsRUFBeUc7SUFBRTtJQUEzRyxDQUYvQixDQUR1QyxDQUEzQyxDQURzQyxDQUExQyxDQUZzQyxDQUExQyxDQXpDK0MsRUFtRDlDazBCLGlCQUFpQixDQUFDSSxnQkFBbkIsSUFDTyxDQUFDLEdBQUczbkQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ3dCLFdBQXBDLEVBQWlELENBQ3hFLENBQUMsR0FBRzM3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsa0JBQTFCLENBQTNCLENBQTFDLEVBQXFIO0lBQUU7SUFBdkgsQ0FEd0UsRUFFeEUsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzN4QixLQUFMLENBQVc2L0IsY0FBWCxDQUEwQkwsaUJBQWlCLENBQUNJLGdCQUE1QyxDQUEzQixDQUExQyxFQUFxSTtJQUFFO0lBQXZJLENBRndFLENBQWpELENBRC9CLElBS00sQ0FBQyxHQUFHM25ELEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQXhEeUMsQ0FBbkQsQ0FENkMsQ0FBakQsQ0FYRCxDQUg2QixFQTBFN0I7SUFBRTtJQTFFMkIsQ0FBaEM7RUEyRUgsQ0E1RXVGLENBQXBELEVBNEVoQztFQUFJO0VBNUU0QixDQUFwQztBQTZFSDs7QUFDRHo2QyxjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ3ZJYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlFLFVBQVUsR0FBRztFQUNidnVDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSXd1QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZDV1QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUltd0MsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLFNBQVNyQyxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELE9BQVEsQ0FBQyxHQUFHLzVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQmxELE1BQU0sQ0FBQ3IzQyxJQUE3QixFQUFtQyxVQUFVNkksSUFBVixFQUFnQlAsR0FBaEIsRUFBcUI7SUFDNUksSUFBSWxLLEVBQUosRUFBUXlHLEVBQVIsRUFBWStCLEVBQVosRUFBZ0J5TSxFQUFoQixFQUFvQkMsRUFBcEI7O0lBQ0EsT0FBUSxDQUFDLEdBQUc3VixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pFdHZDLEdBQUcsRUFBRUEsR0FENEQ7TUFFakUsU0FBTyxDQUFDLEdBQUc3SyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLGlCQUFELEVBQW9CO1FBQUUsUUFBUTExQyxNQUFNLENBQUMwRCxHQUFELENBQU4sS0FBZ0IrdUMsTUFBTSxDQUFDcjNDLElBQVAsQ0FBWTRELE1BQVosR0FBcUI7TUFBL0MsQ0FBcEIsQ0FBMUI7SUFGMEQsQ0FBckMsRUFHN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNKLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBRy80QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCLENBQUMvNUMsRUFBRSxHQUFHazVDLE1BQU0sQ0FBQzl4QixLQUFQLENBQWE4L0IsVUFBYixDQUF3Qno4QyxJQUFJLENBQUMwOEMseUJBQTdCLENBQU4sTUFBbUUsSUFBbkUsSUFBMkVubkQsRUFBRSxLQUFLLEtBQUssQ0FBdkYsR0FBMkZBLEVBQTNGLEdBQWdHazVDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK3JCLE9BQWpCLENBQXlCLE1BQXpCLENBQTNILENBQTVDLEVBQTBNO0lBQUU7SUFBNU0sQ0FENkMsQ0FBakQsQ0FERCxFQUlDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2g1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNGLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2o1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLE9BQTVCLENBQTNCLENBQTVDLEVBQThHO0lBQUU7SUFBaEgsQ0FENkMsQ0FBakQsQ0FENkMsRUFJN0MsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDRCxVQUF2QyxFQUFtRCxDQUMvQyxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDLElBQXZDLEVBQTZDLENBQ3pDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsY0FBNUIsQ0FBM0IsQ0FBMUMsRUFBbUg7SUFBRTtJQUFySCxDQURzQyxFQUV0QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCdHZDLElBQUksQ0FBQ3JMLEtBQUwsQ0FBVyxDQUFYLEVBQWNnb0QsTUFBZCxHQUMvRDVnRCxNQUFNLENBQUNpRSxJQUFJLENBQUNyTCxLQUFMLENBQVcsQ0FBWCxFQUFjZ29ELE1BQWYsQ0FBTixDQUE2QkMsY0FBN0IsS0FDRSxHQURGLEdBRUVuTyxNQUFNLENBQUM5eEIsS0FBUCxDQUFha2dDLFFBQWIsQ0FBc0I3OEMsSUFBSSxDQUFDckwsS0FBTCxDQUFXLENBQVgsRUFBY2tvRCxRQUFwQyxDQUg2RCxHQUkvRHBPLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK3JCLE9BQWpCLEVBSm9DLENBQTFDLEVBSW1DO0lBQUU7SUFKckMsQ0FGc0MsQ0FBMUMsQ0FEeUMsRUFTekMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixZQUE1QixDQUEzQixDQUExQyxFQUFpSDtJQUFFO0lBQW5ILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ0dkMsSUFBSSxDQUFDckwsS0FBTCxDQUFXLENBQVgsRUFBY21vRCxVQUFkLEdBQy9Eck8sTUFBTSxDQUFDbHFCLFVBQVAsQ0FBa0J2a0IsSUFBSSxDQUFDckwsS0FBTCxDQUFXLENBQVgsRUFBY21vRCxVQUFoQyxDQUQrRCxHQUUvRHJPLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK3JCLE9BQWpCLEVBRm9DLENBQTFDLEVBRW1DO0lBQUU7SUFGckMsQ0FGc0MsQ0FBMUMsQ0FUeUMsRUFlekMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixjQUE1QixDQUEzQixDQUExQyxFQUFtSDtJQUFFO0lBQXJILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnR2QyxJQUFJLENBQUNtUixZQUFMLENBQWtCLENBQWxCLEVBQXFCdEksSUFBckIsR0FDakU0bEMsTUFBTSxDQUFDbHFCLFVBQVAsQ0FBa0J2a0IsSUFBSSxDQUFDbVIsWUFBTCxDQUFrQixDQUFsQixFQUFxQnRJLElBQXZDLENBRGlFLEdBRWpFNGxDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK3JCLE9BQWpCLENBQXlCLE1BQXpCLENBRnNDLENBQTVDLEVBRXlDO0lBQUU7SUFGM0MsQ0FEc0MsQ0FBMUMsQ0FGc0MsQ0FBMUMsQ0FmeUMsRUF1QnpDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsWUFBNUIsQ0FBM0IsQ0FBMUMsRUFBaUg7SUFBRTtJQUFuSCxDQURzQyxFQUV0QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ0dkMsSUFBSSxDQUFDb1IsVUFBTCxDQUFnQixDQUFoQixFQUFtQnZJLElBQW5CLEdBQ2pFNGxDLE1BQU0sQ0FBQ2xxQixVQUFQLENBQWtCdmtCLElBQUksQ0FBQ29SLFVBQUwsQ0FBZ0IsQ0FBaEIsRUFBbUJ2SSxJQUFyQyxDQURpRSxHQUVqRTRsQyxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQityQixPQUFqQixDQUF5QixNQUF6QixDQUZzQyxDQUE1QyxFQUV5QztJQUFFO0lBRjNDLENBRHNDLENBQTFDLENBRnNDLENBQTFDLENBdkJ5QyxDQUE3QyxDQUQrQyxDQUFuRCxDQUo2QyxDQUFqRCxDQUpELEVBMkNFam9CLElBQUksQ0FBQys4QyxZQUFOLElBQ08sQ0FBQyxHQUFHbm9ELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNmLFVBQXJDLEVBQWlELENBQ3hFLENBQUMsR0FBR3A1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNFLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3I1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQjhnRCxZQUFqQixDQUE4QixnQ0FBOUIsQ0FBM0IsQ0FBNUMsRUFBeUk7SUFBRTtJQUEzSSxDQUQ2QyxDQUFqRCxDQUR3RSxFQUl4RSxDQUFDLEdBQUdwb0QsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDRyxVQUF2QyxFQUFtRCxDQUMvQyxDQUFDLEdBQUd0NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDLElBQXZDLEVBQTZDLENBQ3pDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsVUFBNUIsQ0FBM0IsSUFBc0UsQ0FBQyxHQUFHOUksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsYUFBNUIsQ0FBM0IsQ0FBaEgsRUFBd0w7SUFBRTtJQUExTCxDQURzQyxFQUV0QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCdHZDLElBQUksQ0FBQys4QyxZQUFMLENBQWtCLENBQWxCLEVBQXFCdmhELElBQXJCLEdBQy9EaXpDLE1BQU0sQ0FBQzl4QixLQUFQLENBQWEyL0IsZ0JBQWIsQ0FBOEJ0OEMsSUFBSSxDQUFDKzhDLFlBQUwsQ0FBa0IsQ0FBbEIsRUFBcUJ2aEQsSUFBbkQsQ0FEK0QsR0FFL0RpekMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrckIsT0FBakIsRUFGb0MsQ0FBMUMsRUFFbUM7SUFBRTtJQUZyQyxDQUZzQyxDQUExQyxDQUR5QyxFQU96QyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLFdBQTVCLENBQTNCLENBQTFDLEVBQWdIO0lBQUU7SUFBbEgsQ0FEc0MsRUFFdEMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQixDQUFDdHpDLEVBQUUsR0FBR2dFLElBQUksQ0FBQys4QyxZQUFMLENBQWtCLENBQWxCLEVBQXFCRSxvQkFBM0IsTUFBcUQsSUFBckQsSUFBNkRqaEQsRUFBRSxLQUFLLEtBQUssQ0FBekUsR0FBNkVBLEVBQTdFLEdBQWtGeXlDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK3JCLE9BQWpCLEVBQTdHLENBQTFDLEVBQW9MO0lBQUU7SUFBdEwsQ0FGc0MsQ0FBMUMsQ0FQeUMsRUFXekMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixXQUE1QixDQUEzQixDQUExQyxFQUFnSDtJQUFFO0lBQWxILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQ3Z4QyxFQUFFLEdBQUdpQyxJQUFJLENBQUMrOEMsWUFBTCxDQUFrQixDQUFsQixFQUFxQm5uRCxHQUEzQixNQUFvQyxJQUFwQyxJQUE0Q21JLEVBQUUsS0FBSyxLQUFLLENBQXhELEdBQTREQSxFQUE1RCxHQUFpRTB3QyxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQityQixPQUFqQixFQUE1RixDQUExQyxFQUFtSztJQUFFO0lBQXJLLENBRnNDLENBQTFDLENBWHlDLEVBZXpDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsV0FBNUIsQ0FBM0IsQ0FBMUMsRUFBZ0g7SUFBRTtJQUFsSCxDQURzQyxFQUV0QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsRUFDckMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQjF4QyxJQUFJLENBQUMrOEMsWUFBTCxDQUFrQixDQUFsQixFQUFxQjdyQyxTQUEzQyxFQUFzRCxVQUFVQSxTQUFWLEVBQXFCa04sQ0FBckIsRUFBd0I7TUFDM0osSUFBSTdvQixFQUFKOztNQUNBLE9BQVEsQ0FBQyxHQUFHWCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1FBQ2pFdHZDLEdBQUcsRUFBRTJlLENBRDREO1FBRWpFLFNBQU8sQ0FBQyxHQUFHeHBCLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMscUJBQUQsRUFBd0I7VUFDakQsUUFBUXJ6QixDQUFDLEtBQUtwZSxJQUFJLENBQUMrOEMsWUFBTCxDQUFrQixDQUFsQixFQUFxQjdyQyxTQUFyQixDQUErQm5XLE1BQS9CLEdBQXdDO1FBREwsQ0FBeEIsQ0FBMUI7TUFGMEQsQ0FBckMsRUFLN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNJLFVBQXJDLEVBQWlELE9BQU8sQ0FBQyxHQUFHdjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLFVBQTVCLENBQTNCLENBQVAsR0FBNkUsSUFBN0UsR0FBb0YsQ0FBQyxHQUFHOUksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJwK0IsU0FBUyxDQUFDaFUsUUFBVixHQUMxSnV4QyxNQUFNLENBQUM5eEIsS0FBUCxDQUFhMWYsU0FBYixDQUF1QmlVLFNBQVMsQ0FBQ2hVLFFBQWpDLENBRDBKLEdBRTFKdXhDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK3JCLE9BQWpCLEVBRitILENBQXBGLEdBRWIsSUFGcEMsRUFFMEM7TUFBRTtNQUY1QyxDQURELEVBSUMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0ssVUFBckMsRUFBaUQsQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCLENBQUMvNUMsRUFBRSxHQUFHMmIsU0FBUyxDQUFDQSxTQUFoQixNQUErQixJQUEvQixJQUF1QzNiLEVBQUUsS0FBSyxLQUFLLENBQW5ELEdBQXVEQSxFQUF2RCxHQUE0RGs1QyxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQityQixPQUFqQixFQUF2RixDQUFqRCxFQUFxSztNQUFFO01BQXZLLENBSkQsQ0FMNkIsRUFVN0I7TUFBRTtNQVYyQixDQUFoQztJQVdILENBYmdGLENBQXBELEVBYXpCO0lBQUk7SUFicUIsQ0FEUyxFQUExQyxDQUZzQyxDQUExQyxDQWZ5QyxDQUE3QyxDQUQrQyxDQUFuRCxDQUp3RSxDQUFqRCxDQUQvQixJQTJDTSxDQUFDLEdBQUdyekIsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBdEZQLEVBdUZFbnZDLElBQUksQ0FBQ2s5QyxZQUFOLElBQ08sQ0FBQyxHQUFHdG9ELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNWLFdBQXJDLEVBQWtELENBQ3pFLENBQUMsR0FBR3o1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM2QixXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdoN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUI4Z0QsWUFBakIsQ0FBOEIsZ0NBQTlCLENBQTNCLENBQTVDLEVBQXlJO0lBQUU7SUFBM0ksQ0FEOEMsQ0FBbEQsQ0FEeUUsRUFJekUsQ0FBQyxHQUFHcG9ELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QzhCLFdBQXZDLEVBQW9ELENBQ2hELENBQUMsR0FBR2o3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMsSUFBdkMsRUFBNkMsQ0FDekMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixNQUE1QixDQUEzQixDQUExQyxFQUEyRztJQUFFO0lBQTdHLENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ0dkMsSUFBSSxDQUFDazlDLFlBQUwsQ0FBa0IsQ0FBbEIsRUFBcUIxaEQsSUFBckIsR0FDL0RpekMsTUFBTSxDQUFDOXhCLEtBQVAsQ0FBYTIvQixnQkFBYixDQUE4QnQ4QyxJQUFJLENBQUNrOUMsWUFBTCxDQUFrQixDQUFsQixFQUFxQjFoRCxJQUFuRCxDQUQrRCxHQUUvRGl6QyxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQityQixPQUFqQixFQUZvQyxDQUExQyxFQUVtQztJQUFFO0lBRnJDLENBRnNDLENBQTFDLENBRHlDLEVBT3pDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsVUFBNUIsQ0FBM0IsSUFBc0UsQ0FBQyxHQUFHOUksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsYUFBNUIsQ0FBM0IsQ0FBaEgsRUFBd0w7SUFBRTtJQUExTCxDQURzQyxFQUV0QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCLENBQUM5a0MsRUFBRSxHQUFHeEssSUFBSSxDQUFDazlDLFlBQUwsQ0FBa0IsQ0FBbEIsRUFBcUJDLG9CQUEzQixNQUFxRCxJQUFyRCxJQUE2RDN5QyxFQUFFLEtBQUssS0FBSyxDQUF6RSxHQUE2RUEsRUFBN0UsR0FBa0Zpa0MsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrckIsT0FBakIsRUFBN0csQ0FBMUMsRUFBb0w7SUFBRTtJQUF0TCxDQUZzQyxDQUExQyxDQVB5QyxFQVd6QyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLFdBQTVCLENBQTNCLENBQTFDLEVBQWdIO0lBQUU7SUFBbEgsQ0FEc0MsRUFFdEMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQixDQUFDN2tDLEVBQUUsR0FBR3pLLElBQUksQ0FBQ2s5QyxZQUFMLENBQWtCLENBQWxCLEVBQXFCdG5ELEdBQTNCLE1BQW9DLElBQXBDLElBQTRDNlUsRUFBRSxLQUFLLEtBQUssQ0FBeEQsR0FBNERBLEVBQTVELEdBQWlFZ2tDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK3JCLE9BQWpCLEVBQTVGLENBQTFDLEVBQW1LO0lBQUU7SUFBckssQ0FGc0MsQ0FBMUMsQ0FYeUMsRUFlekMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixXQUE1QixDQUEzQixDQUExQyxFQUFnSDtJQUFFO0lBQWxILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxFQUNyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCMXhDLElBQUksQ0FBQ2s5QyxZQUFMLENBQWtCLENBQWxCLEVBQXFCaHNDLFNBQTNDLEVBQXNELFVBQVVBLFNBQVYsRUFBcUJrTixDQUFyQixFQUF3QjtNQUMzSixJQUFJN29CLEVBQUo7O01BQ0EsT0FBUSxDQUFDLEdBQUdYLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFDakV0dkMsR0FBRyxFQUFFMmUsQ0FENEQ7UUFFakUsU0FBTyxDQUFDLEdBQUd4cEIsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxxQkFBRCxFQUF3QjtVQUNqRCxRQUFRcnpCLENBQUMsS0FBS3BlLElBQUksQ0FBQ2s5QyxZQUFMLENBQWtCLENBQWxCLEVBQXFCaHNDLFNBQXJCLENBQStCblcsTUFBL0IsR0FBd0M7UUFETCxDQUF4QixDQUExQjtNQUYwRCxDQUFyQyxFQUs3QixDQUNDLENBQUMsR0FBR25HLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQytCLFdBQXJDLEVBQWtELE9BQU8sQ0FBQyxHQUFHbDdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLFVBQTVCLENBQTNCLENBQVAsR0FBNkUsSUFBN0UsR0FBb0YsQ0FBQyxHQUFHOUksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJwK0IsU0FBUyxDQUFDaFUsUUFBVixHQUMzSnV4QyxNQUFNLENBQUM5eEIsS0FBUCxDQUFhMWYsU0FBYixDQUF1QmlVLFNBQVMsQ0FBQ2hVLFFBQWpDLENBRDJKLEdBRTNKdXhDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK3JCLE9BQWpCLEVBRmdJLENBQXBGLEdBRWQsSUFGcEMsRUFFMEM7TUFBRTtNQUY1QyxDQURELEVBSUMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2dDLFdBQXJDLEVBQWtELENBQUMsR0FBR243QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQixDQUFDLzVDLEVBQUUsR0FBRzJiLFNBQVMsQ0FBQ0EsU0FBaEIsTUFBK0IsSUFBL0IsSUFBdUMzYixFQUFFLEtBQUssS0FBSyxDQUFuRCxHQUF1REEsRUFBdkQsR0FBNERrNUMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrckIsT0FBakIsRUFBdkYsQ0FBbEQsRUFBc0s7TUFBRTtNQUF4SyxDQUpELENBTDZCLEVBVTdCO01BQUU7TUFWMkIsQ0FBaEM7SUFXSCxDQWJnRixDQUFwRCxFQWF6QjtJQUFJO0lBYnFCLENBRFMsRUFBMUMsQ0FGc0MsQ0FBMUMsQ0FmeUMsQ0FBN0MsQ0FEZ0QsQ0FBcEQsQ0FKeUUsQ0FBbEQsQ0FEL0IsSUEyQ00sQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWxJUCxDQUg2QixFQXNJN0I7SUFBRTtJQXRJMkIsQ0FBaEM7RUF1SUgsQ0F6SXVGLENBQXBELEVBeUloQztFQUFJO0VBekk0QixDQUFwQztBQTBJSDs7QUFDRHo2QyxjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ3BLYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFbnVDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSW91QyxVQUFVLEdBQUc7RUFDYnB1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUlxdUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHO0VBQUV2dUMsR0FBRyxFQUFFO0FBQVAsQ0FBakI7QUFDQSxJQUFJd3VDLFVBQVUsR0FBRztFQUFFeHVDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSXl1QyxVQUFVLEdBQUc7RUFDYnp1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUkwdUMsVUFBVSxHQUFHO0VBQUUxdUMsR0FBRyxFQUFFO0FBQVAsQ0FBakI7QUFDQSxJQUFJMnVDLFVBQVUsR0FBRztFQUFFM3VDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSTR1QyxXQUFXLEdBQUc7RUFDZDV1QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUltd0MsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUVwd0MsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJcXdDLFdBQVcsR0FBRyxDQUFDLE1BQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZHR3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUl1d0MsV0FBVyxHQUFHO0VBQUV2d0MsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJd3dDLFdBQVcsR0FBRztFQUNkeHdDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSXl3QyxXQUFXLEdBQUc7RUFDZHp3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUkwd0MsV0FBVyxHQUFHO0VBQ2Qxd0MsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJMndDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkNXdDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCOztBQUlBLFNBQVNpdUMsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxPQUFRLENBQUMsR0FBRy81QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JwRCxJQUFJLENBQUNuM0MsSUFBM0IsRUFBaUMsVUFBVTZJLElBQVYsRUFBZ0JQLEdBQWhCLEVBQXFCO0lBQzFJLE9BQVEsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqRXR2QyxHQUFHLEVBQUVBLEdBRDREO01BRWpFLFNBQU8sQ0FBQyxHQUFHN0ssS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxpQkFBRCxFQUFvQjtRQUFFLFFBQVExMUMsTUFBTSxDQUFDMEQsR0FBRCxDQUFOLEtBQWdCNnVDLElBQUksQ0FBQ24zQyxJQUFMLENBQVU0RCxNQUFWLEdBQW1CO01BQTdDLENBQXBCLENBQTFCO0lBRjBELENBQXJDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSixVQUFyQyxFQUFpRCxDQUM1QzN0QyxJQUFJLENBQUNvOUMsd0JBQU4sSUFDTyxDQUFDLEdBQUd4b0QsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ25CLFVBQXRDLEVBQWtELENBQUMsR0FBR2g1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzN4QixLQUFMLENBQVcwZ0Msc0JBQVgsQ0FBa0NyOUMsSUFBSSxDQUFDbzlDLHdCQUF2QyxDQUEzQixDQUFsRCxFQUFnSjtJQUFFO0lBQWxKLENBRC9CLEtBRU8sQ0FBQyxHQUFHeG9ELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NsQixVQUF0QyxFQUFrRCxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsQ0FBdUIsWUFBdkIsQ0FBM0IsQ0FBbEQsRUFBb0g7SUFBRTtJQUF0SCxDQUYvQixDQUQ2QyxDQUFqRCxDQURELEVBTUMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0QsVUFBckMsRUFBaUQsQ0FDNUM5dEMsSUFBSSxDQUFDbzlDLHdCQUFMLElBQWlDLEdBQWxDLElBQ08sQ0FBQyxHQUFHeG9ELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNmLFVBQXJDLEVBQWlELENBQ3ZFaHVDLElBQUksQ0FBQ3M5QyxhQUFOLElBQ08sQ0FBQyxHQUFHMW9ELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NkLFVBQXRDLEVBQWtELENBQUMsR0FBR3I1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzN4QixLQUFMLENBQVc0Z0MsWUFBWCxDQUF3QnY5QyxJQUFJLENBQUNzOUMsYUFBN0IsQ0FBM0IsQ0FBbEQsRUFBMkg7SUFBRTtJQUE3SCxDQUQvQixLQUVPLENBQUMsR0FBRzFvRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDYixVQUF0QyxFQUFrRCxDQUFDLEdBQUd0NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBM0IsQ0FBbEQsRUFBd0c7SUFBRTtJQUExRyxDQUYvQixDQUR3RSxDQUFqRCxDQUQvQixLQU1PLENBQUMsR0FBR3J6QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDWixVQUFyQyxFQUFpRCxDQUN2RW51QyxJQUFJLENBQUN3OUMsa0JBQU4sSUFDTyxDQUFDLEdBQUc1b0QsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ1gsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCdHZDLElBQUksQ0FBQ3c5QyxrQkFBaEMsQ0FBbEQsRUFBdUc7SUFBRTtJQUF6RyxDQUQvQixLQUVPLENBQUMsR0FBRzVvRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDVixXQUF0QyxFQUFtRCxDQUFDLEdBQUd6NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBM0IsQ0FBbkQsRUFBeUc7SUFBRTtJQUEzRyxDQUYvQixDQUR3RSxDQUFqRCxDQU4vQixDQUQ2QyxDQUFqRCxDQU5ELEVBbUJDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUM2QixXQUF2QyxFQUFvRCxDQUNoRCxDQUFDLEdBQUdoN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDLElBQXZDLEVBQTZDLENBQ3hDL3RDLElBQUksQ0FBQ285Qyx3QkFBTCxJQUFpQyxJQUFsQyxJQUNPLENBQUMsR0FBR3hvRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DYyxXQUFwQyxFQUFpRCxDQUN4RSxDQUFDLEdBQUdqN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLGdCQUExQixDQUEzQixDQUExQyxFQUFtSDtJQUFFO0lBQXJILENBRHdFLEVBRXhFLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUNyQy90QyxJQUFJLENBQUMwNkMsY0FBTixJQUNPLENBQUMsR0FBRzlsRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO01BQzFEdHZDLEdBQUcsRUFBRSxDQURxRDtNQUUxRGdTLE1BQU0sRUFBRSxRQUZrRDtNQUcxRG5hLElBQUksRUFBRTBJLElBQUksQ0FBQzA2QztJQUgrQyxDQUFuQyxFQUl4QixDQUFDLEdBQUc5bEQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ0dkMsSUFBSSxDQUFDMDZDLGNBQWhDLENBSndCLEVBSXlCO0lBQUU7SUFKM0IsRUFJOEM1SyxXQUo5QyxDQUQvQixLQU1PLENBQUMsR0FBR2w3QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDZ0IsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHbjdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQTNCLENBQW5ELEVBQXlHO0lBQUU7SUFBM0csQ0FOL0IsQ0FEc0MsQ0FBMUMsQ0FGd0UsQ0FBakQsQ0FEL0IsSUFhTSxDQUFDLEdBQUdyekIsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBZG1DLEVBZXpDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixjQUExQixDQUEzQixDQUExQyxFQUFpSDtJQUFFO0lBQW5ILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUNyQy90QyxJQUFJLENBQUN5OUMsWUFBTixJQUNPLENBQUMsR0FBRzdvRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDaUIsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHcDdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDM3hCLEtBQUwsQ0FBVytnQyxrQkFBWCxDQUE4QjE5QyxJQUFJLENBQUN5OUMsWUFBbkMsQ0FBM0IsQ0FBbkQsRUFBaUk7SUFBRTtJQUFuSSxDQUQvQixLQUVPLENBQUMsR0FBRzdvRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDa0IsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHcjdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQTNCLENBQW5ELEVBQXlHO0lBQUU7SUFBM0csQ0FGL0IsQ0FEc0MsQ0FBMUMsQ0FGc0MsQ0FBMUMsQ0FmeUMsRUF1QnpDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7TUFDaEMsU0FBTyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxXQUFELEVBQWM7UUFBRSxRQUFRbkQsSUFBSSxDQUFDbHdCLENBQUwsS0FBV3BlLElBQUksQ0FBQ2tSLFNBQUwsQ0FBZW5XLE1BQWYsR0FBd0I7TUFBN0MsQ0FBZCxDQUExQjtJQUR5QixDQUFwQyxFQUVHLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFdBQTFCLENBQTNCLENBQTFDLEVBQThHO0lBQUU7SUFBaEgsQ0FERCxFQUVDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxFQUNyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCMXhDLElBQUksQ0FBQ2tSLFNBQTNCLEVBQXNDLFVBQVVBLFNBQVYsRUFBcUJrTixDQUFyQixFQUF3QjtNQUMzSSxPQUFRLENBQUMsR0FBR3hwQixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1FBQUV0dkMsR0FBRyxFQUFFMmU7TUFBUCxDQUFyQyxFQUFpRCxDQUM1RWxOLFNBQVMsQ0FBQ0EsU0FBWCxJQUNPLENBQUMsR0FBR3RjLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNtQixXQUFyQyxFQUFrRCxDQUN4RWgvQixTQUFTLENBQUNoVSxRQUFYLElBQ08sQ0FBQyxHQUFHdEksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ29CLFdBQXRDLEVBQW1ELE1BQU0sQ0FBQyxHQUFHdjdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsVUFBMUIsQ0FBM0IsQ0FBTixHQUEwRSxJQUExRSxHQUFpRixDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzN4QixLQUFMLENBQVcxZixTQUFYLENBQXFCaVUsU0FBUyxDQUFDaFUsUUFBL0IsQ0FBM0IsQ0FBakYsR0FBd0osR0FBM00sRUFBZ047TUFBRTtNQUFsTixDQUQvQixJQUVNLENBQUMsR0FBR3RJLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQUhtRSxFQUl6RSxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDcUMsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHeDdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCcCtCLFNBQVMsQ0FBQ0EsU0FBckMsQ0FBbkQsRUFBb0c7TUFBRTtNQUF0RyxDQUp5RSxDQUFsRCxDQUQvQixLQU9PLENBQUMsR0FBR3RjLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NzQixXQUF0QyxFQUFtRCxDQUFDLEdBQUd6N0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBM0IsQ0FBbkQsRUFBeUc7TUFBRTtNQUEzRyxDQVAvQixDQUQ2RSxDQUFqRCxDQUFoQztJQVVILENBWGdGLENBQXBELEVBV3pCO0lBQUk7SUFYcUIsQ0FEUyxFQUExQyxDQUZELENBRkgsRUFrQkc7SUFBRTtJQWxCTCxDQXZCeUMsQ0FBN0MsQ0FEZ0QsQ0FBcEQsQ0FuQkQsQ0FINkIsRUFtRTdCO0lBQUU7SUFuRTJCLENBQWhDO0VBb0VILENBckV1RixDQUFwRCxFQXFFaEM7RUFBSTtFQXJFNEIsQ0FBcEM7QUFzRUg7O0FBQ0R2ekIsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUN4SGE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFDYm51QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUlvdUMsVUFBVSxHQUFHO0VBQ2JwdUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJcXVDLFVBQVUsR0FBRztFQUNicnVDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSXV1QyxVQUFVLEdBQUc7RUFDYnZ1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUl3dUMsVUFBVSxHQUFHO0VBQ2J4dUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJeXVDLFVBQVUsR0FBRztFQUNienVDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCOztBQUlBLFNBQVNpdUMsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxPQUFRLENBQUMsR0FBRy81QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JwRCxJQUFJLENBQUNuM0MsSUFBM0IsRUFBaUMsVUFBVWdsRCxpQkFBVixFQUE2QjE4QyxHQUE3QixFQUFrQztJQUN2SixPQUFRLENBQUMsR0FBRzdLLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7TUFDakV0dkMsR0FBRyxFQUFFQSxHQUQ0RDtNQUVqRSxTQUFPLENBQUMsR0FBRzdLLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCO1FBQUUsUUFBUTExQyxNQUFNLENBQUMwRCxHQUFELENBQU4sS0FBZ0I2dUMsSUFBSSxDQUFDbjNDLElBQUwsQ0FBVTRELE1BQVYsR0FBbUI7TUFBN0MsQ0FBMUI7SUFGMEQsQ0FBckMsRUFHN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNKLFVBQXJDLEVBQWlELENBQzVDd08saUJBQWlCLENBQUN3QixZQUFuQixJQUNPLENBQUMsR0FBRy9vRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDbkIsVUFBckMsRUFBaUQsQ0FDeEUsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUMzeEIsS0FBTCxDQUFXc1UsT0FBWCxDQUFtQmtyQixpQkFBaUIsQ0FBQ3dCLFlBQXJDLENBQTNCLENBQTVDLEVBQTRIO0lBQUU7SUFBOUgsQ0FEd0UsRUFFdkV4QixpQkFBaUIsQ0FBQ3lCLFVBQW5CLElBQ08sQ0FBQyxHQUFHaHBELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NsQixVQUF0QyxFQUFrRCxNQUFNLENBQUMsR0FBR2o1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzVwQixVQUFMLENBQWdCeTNCLGlCQUFpQixDQUFDeUIsVUFBbEMsQ0FBM0IsQ0FBTixHQUFrRixJQUFwSSxFQUEwSTtJQUFFO0lBQTVJLENBRC9CLElBRU0sQ0FBQyxHQUFHaHBELEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQUprRSxDQUFqRCxDQUQvQixLQU9PLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDakIsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQTNCLENBQWxELEVBQXdHO0lBQUU7SUFBMUcsQ0FQL0IsQ0FENkMsQ0FBakQsQ0FERCxHQVdFLENBQUMsR0FBR3J6QixLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0J5SyxpQkFBaUIsQ0FBQ2pyQyxTQUF4QyxFQUFtRCxVQUFVL0MsSUFBVixFQUFnQmxLLENBQWhCLEVBQW1CO01BQ25KLE9BQVEsQ0FBQyxHQUFHclAsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztRQUNqRXR2QyxHQUFHLEVBQUV3RSxDQUQ0RDtRQUVqRSxTQUFPLENBQUMsR0FBR3JQLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUM7VUFBRSxRQUFReHRDLENBQUMsS0FBS2s0QyxpQkFBaUIsQ0FBQ2pyQyxTQUFsQixDQUE0Qm5XLE1BQTVCLEdBQXFDO1FBQXJELENBQUQsRUFBMkQsbUNBQTNELENBQTFCO01BRjBELENBQXJDLEVBRzdCLENBQ0VvVCxJQUFJLENBQUMrQyxTQUFOLElBQ08sQ0FBQyxHQUFHdGMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2YsVUFBckMsRUFBaUQsQ0FDdkU3L0IsSUFBSSxDQUFDalIsUUFBTixJQUNPLENBQUMsR0FBR3RJLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NkLFVBQXRDLEVBQWtELE9BQU8sQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsVUFBMUIsQ0FBM0IsQ0FBUCxHQUEyRSxJQUEzRSxHQUFrRixDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzN4QixLQUFMLENBQVcxZixTQUFYLENBQXFCa1IsSUFBSSxDQUFDalIsUUFBMUIsQ0FBM0IsQ0FBbEYsR0FBb0osSUFBdE0sRUFBNE07TUFBRTtNQUE5TSxDQUQvQixJQUVNLENBQUMsR0FBR3RJLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQUhrRSxFQUl4RSxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQm5oQyxJQUFJLENBQUMrQyxTQUFoQyxDQUE1QyxFQUF3RjtNQUFFO01BQTFGLENBSndFLENBQWpELENBRC9CLEtBT08sQ0FBQyxHQUFHdGMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2IsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLENBQXVCLFdBQXZCLENBQTNCLENBQWxELEVBQW1IO01BQUU7TUFBckgsQ0FQL0IsQ0FERCxDQUg2QixFQVk3QjtNQUFFO01BWjJCLENBQWhDO0lBYUgsQ0FkZ0YsQ0FBcEQsRUFjekI7SUFBSTtJQWRxQixDQVg5QixFQUg2QixFQTZCN0I7SUFBRTtJQTdCMkIsQ0FBaEM7RUE4QkgsQ0EvQnVGLENBQXBELEVBK0JoQztFQUFJO0VBL0I0QixDQUFwQztBQWdDSDs7QUFDRHZ6QixjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQy9EYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFbnVDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSW91QyxVQUFVLEdBQUc7RUFBRXB1QyxHQUFHLEVBQUU7QUFBUCxDQUFqQjtBQUNBLElBQUlxdUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHO0VBQUV2dUMsR0FBRyxFQUFFO0FBQVAsQ0FBakI7QUFDQSxJQUFJd3VDLFVBQVUsR0FBRztFQUFFeHVDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSXl1QyxVQUFVLEdBQUc7RUFBRXp1QyxHQUFHLEVBQUU7QUFBUCxDQUFqQjtBQUNBLElBQUkwdUMsVUFBVSxHQUFHO0VBQUUxdUMsR0FBRyxFQUFFO0FBQVAsQ0FBakI7QUFDQSxJQUFJMnVDLFVBQVUsR0FBRztFQUFFM3VDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSTR1QyxXQUFXLEdBQUc7RUFBRTV1QyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUltd0MsV0FBVyxHQUFHO0VBQUVud0MsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJb3dDLFdBQVcsR0FBRztFQUFFcHdDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSXF3QyxXQUFXLEdBQUc7RUFBRXJ3QyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUlzd0MsV0FBVyxHQUFHLENBQUMsTUFBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFdndDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSXd3QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsU0FBU3hDLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsT0FBUSxDQUFDLEdBQUcvNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCbEQsTUFBTSxDQUFDcjNDLElBQTdCLEVBQW1DLFVBQVU2SSxJQUFWLEVBQWdCUCxHQUFoQixFQUFxQjtJQUM1SSxPQUFRLENBQUMsR0FBRzdLLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7TUFDakV0dkMsR0FBRyxFQUFFQSxHQUQ0RDtNQUVqRSxTQUFPLENBQUMsR0FBRzdLLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsaUJBQUQsRUFBb0I7UUFBRSxRQUFRMTFDLE1BQU0sQ0FBQzBELEdBQUQsQ0FBTixLQUFnQit1QyxNQUFNLENBQUNyM0MsSUFBUCxDQUFZNEQsTUFBWixHQUFxQjtNQUEvQyxDQUFwQixDQUExQjtJQUYwRCxDQUFyQyxFQUc3QixDQUNDLENBQUMsR0FBR25HLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0osVUFBckMsRUFBaUQsQ0FDNUMzdEMsSUFBSSxDQUFDNjlDLGlCQUFOLElBQ08sQ0FBQyxHQUFHanBELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NuQixVQUF0QyxFQUFrRCxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzl4QixLQUFQLENBQWFtaEMsZ0JBQWIsQ0FBOEI5OUMsSUFBSSxDQUFDNjlDLGlCQUFuQyxDQUEzQixDQUFsRCxFQUFxSTtJQUFFO0lBQXZJLENBRC9CLEtBRU8sQ0FBQyxHQUFHanBELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NsQixVQUF0QyxFQUFrRCxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK3JCLE9BQWpCLENBQXlCLFlBQXpCLENBQTNCLENBQWxELEVBQXNIO0lBQUU7SUFBeEgsQ0FGL0IsQ0FENkMsQ0FBakQsQ0FERCxFQU1DLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNELFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2w1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMsSUFBdkMsRUFBNkMsQ0FDekMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QyxJQUF2QyxFQUE2QyxDQUN4Qy90QyxJQUFJLENBQUM2OUMsaUJBQUwsSUFBMEIsR0FBM0IsSUFDTyxDQUFDLEdBQUdqcEQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ2YsVUFBcEMsRUFBZ0QsQ0FDdkUsQ0FBQyxHQUFHcDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsYUFBNUIsQ0FBM0IsQ0FBMUMsRUFBa0g7SUFBRTtJQUFwSCxDQUR1RSxFQUV2RSxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDckMvdEMsSUFBSSxDQUFDKzlDLFdBQU4sSUFDTyxDQUFDLEdBQUducEQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2QsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUM5eEIsS0FBUCxDQUFhcWhDLE1BQWIsQ0FBb0JoK0MsSUFBSSxDQUFDKzlDLFdBQXpCLENBQTNCLENBQWxELEVBQXFIO0lBQUU7SUFBdkgsQ0FEL0IsS0FFTyxDQUFDLEdBQUducEQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2IsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQityQixPQUFqQixFQUEzQixDQUFsRCxFQUEwRztJQUFFO0lBQTVHLENBRi9CLENBRHNDLENBQTFDLENBRnVFLENBQWhELENBRC9CLEtBU08sQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NaLFVBQXBDLEVBQWdELENBQ3ZFLENBQUMsR0FBR3Y1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLGFBQTVCLENBQTNCLENBQTFDLEVBQWtIO0lBQUU7SUFBcEgsQ0FEdUUsRUFFdkUsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3JDL3RDLElBQUksQ0FBQ2krQyxXQUFOLElBQ08sQ0FBQyxHQUFHcnBELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NYLFVBQXRDLEVBQWtELENBQUMsR0FBR3g1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnR2QyxJQUFJLENBQUNpK0MsV0FBaEMsQ0FBbEQsRUFBZ0c7SUFBRTtJQUFsRyxDQUQvQixLQUVPLENBQUMsR0FBR3JwRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDVixXQUF0QyxFQUFtRCxDQUFDLEdBQUd6NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK3JCLE9BQWpCLEVBQTNCLENBQW5ELEVBQTJHO0lBQUU7SUFBN0csQ0FGL0IsQ0FEc0MsQ0FBMUMsQ0FGdUUsQ0FBaEQsQ0FUL0IsQ0FEeUMsRUFrQnpDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsWUFBNUIsQ0FBM0IsQ0FBMUMsRUFBaUg7SUFBRTtJQUFuSCxDQURzQyxFQUV0QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDckMvdEMsSUFBSSxDQUFDNDlDLFVBQU4sSUFDTyxDQUFDLEdBQUdocEQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2EsV0FBdEMsRUFBbUQsT0FBTyxDQUFDLEdBQUdoN0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQy9wQixVQUFQLENBQWtCMWtCLElBQUksQ0FBQzQ5QyxVQUF2QixDQUEzQixDQUFQLEdBQXdFLEtBQTNILEVBQWtJO0lBQUU7SUFBcEksQ0FEL0IsS0FFTyxDQUFDLEdBQUdocEQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2MsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHajdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQityQixPQUFqQixFQUEzQixDQUFuRCxFQUEyRztJQUFFO0lBQTdHLENBRi9CLENBRHNDLENBQTFDLENBRnNDLENBQTFDLENBbEJ5QyxFQTBCeENqb0IsSUFBSSxDQUFDNjlDLGlCQUFMLElBQTBCLElBQTNCLElBQ08sQ0FBQyxHQUFHanBELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NlLFdBQXBDLEVBQWlELENBQ3hFLENBQUMsR0FBR2w3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLGdCQUE1QixDQUEzQixDQUExQyxFQUFxSDtJQUFFO0lBQXZILENBRHdFLEVBRXhFLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUNyQy90QyxJQUFJLENBQUMwNkMsY0FBTixJQUNPLENBQUMsR0FBRzlsRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO01BQzFEdHZDLEdBQUcsRUFBRSxDQURxRDtNQUUxRGdTLE1BQU0sRUFBRSxRQUZrRDtNQUcxRG5hLElBQUksRUFBRTBJLElBQUksQ0FBQzA2QztJQUgrQyxDQUFuQyxFQUl4QixDQUFDLEdBQUc5bEQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ0dkMsSUFBSSxDQUFDMDZDLGNBQWhDLENBSndCLEVBSXlCO0lBQUU7SUFKM0IsRUFJOEMzSyxXQUo5QyxDQUQvQixLQU1PLENBQUMsR0FBR243QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDaUIsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHcDdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQityQixPQUFqQixFQUEzQixDQUFuRCxFQUEyRztJQUFFO0lBQTdHLENBTi9CLENBRHNDLENBQTFDLENBRndFLENBQWpELENBRC9CLElBYU0sQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQXZDbUMsRUF3Q3pDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsV0FBNUIsQ0FBM0IsQ0FBMUMsRUFBZ0g7SUFBRTtJQUFsSCxDQURzQyxFQUV0QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsRUFDckMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQjF4QyxJQUFJLENBQUNrUixTQUEzQixFQUFzQyxVQUFVQSxTQUFWLEVBQXFCa04sQ0FBckIsRUFBd0I7TUFDM0ksSUFBSTdvQixFQUFKOztNQUNBLE9BQVEsQ0FBQyxHQUFHWCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1FBQ2pFdHZDLEdBQUcsRUFBRTJlLENBRDREO1FBRWpFLFNBQU8sQ0FBQyxHQUFHeHBCLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMscUJBQUQsRUFBd0I7VUFBRSxRQUFRcnpCLENBQUMsS0FBS3BlLElBQUksQ0FBQ2tSLFNBQUwsQ0FBZW5XLE1BQWYsR0FBd0I7UUFBeEMsQ0FBeEIsQ0FBMUI7TUFGMEQsQ0FBckMsRUFHN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNrQyxXQUFyQyxFQUFrRCxPQUFPLENBQUMsR0FBR3I3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixVQUE1QixDQUEzQixDQUFQLEdBQTZFLElBQTdFLEdBQW9GLENBQUMsR0FBRzlJLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCcCtCLFNBQVMsQ0FBQ2hVLFFBQVYsR0FDM0p1eEMsTUFBTSxDQUFDOXhCLEtBQVAsQ0FBYTFmLFNBQWIsQ0FBdUJpVSxTQUFTLENBQUNoVSxRQUFqQyxDQUQySixHQUUzSnV4QyxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQityQixPQUFqQixFQUZnSSxDQUFwRixHQUVkLElBRnBDLEVBRTBDO01BQUU7TUFGNUMsQ0FERCxFQUlDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNtQyxXQUFyQyxFQUFrRCxDQUFDLEdBQUd0N0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQy81QyxFQUFFLEdBQUcyYixTQUFTLENBQUNBLFNBQWhCLE1BQStCLElBQS9CLElBQXVDM2IsRUFBRSxLQUFLLEtBQUssQ0FBbkQsR0FBdURBLEVBQXZELEdBQTREazVDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK3JCLE9BQWpCLEVBQXZGLENBQWxELEVBQXNLO01BQUU7TUFBeEssQ0FKRCxDQUg2QixFQVE3QjtNQUFFO01BUjJCLENBQWhDO0lBU0gsQ0FYZ0YsQ0FBcEQsRUFXekI7SUFBSTtJQVhxQixDQURTLEVBQTFDLENBRnNDLENBQTFDLENBeEN5QyxDQUE3QyxDQUR5QyxDQUE3QyxDQUQ2QyxDQUFqRCxDQU5ELENBSDZCLEVBdUU3QjtJQUFFO0lBdkUyQixDQUFoQztFQXdFSCxDQXpFdUYsQ0FBcEQsRUF5RWhDO0VBQUk7RUF6RTRCLENBQXBDO0FBMEVIOztBQUNEdnpCLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDakdhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUVwdUMsR0FBRyxFQUFFO0FBQVAsQ0FBakI7QUFDQSxJQUFJcXVDLFVBQVUsR0FBRztFQUNicnVDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSXV1QyxVQUFVLEdBQUc7RUFBRXZ1QyxHQUFHLEVBQUU7QUFBUCxDQUFqQjtBQUNBLElBQUl3dUMsVUFBVSxHQUFHO0VBQ2J4dUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7O0FBSUEsU0FBU2l1QyxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELE9BQVEsQ0FBQyxHQUFHLzVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnBELElBQUksQ0FBQ24zQyxJQUEzQixFQUFpQyxVQUFVNkksSUFBVixFQUFnQlAsR0FBaEIsRUFBcUI7SUFDMUksT0FBUSxDQUFDLEdBQUc3SyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pFdHZDLEdBQUcsRUFBRUEsR0FENEQ7TUFFakUsU0FBTyxDQUFDLEdBQUc3SyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQjtRQUFFLFFBQVExMUMsTUFBTSxDQUFDMEQsR0FBRCxDQUFOLEtBQWdCNnVDLElBQUksQ0FBQ24zQyxJQUFMLENBQVU0RCxNQUFWLEdBQW1CO01BQTdDLENBQTFCO0lBRjBELENBQXJDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSixVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSCxVQUFyQyxFQUFpRCxDQUM1QzV0QyxJQUFJLENBQUNrK0MsaUJBQU4sSUFDTyxDQUFDLEdBQUd0cEQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2xCLFVBQXRDLEVBQWtELENBQUMsR0FBR2o1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzN4QixLQUFMLENBQVd3aEMsbUJBQVgsQ0FBK0JuK0MsSUFBSSxDQUFDaytDLGlCQUFwQyxDQUEzQixDQUFsRCxFQUFzSTtJQUFFO0lBQXhJLENBRC9CLEtBRU8sQ0FBQyxHQUFHdHBELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NqQixVQUF0QyxFQUFrRCxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsQ0FBdUIsU0FBdkIsRUFBa0MsYUFBbEMsQ0FBM0IsQ0FBbEQsRUFBZ0k7SUFBRTtJQUFsSSxDQUYvQixDQUQ2QyxDQUFqRCxDQUQ2QyxFQU03QyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3RDL3RDLElBQUksQ0FBQzJoQixtQkFBTixJQUNPLENBQUMsR0FBRy9zQixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDZixVQUF0QyxFQUFrRCxDQUFDLEdBQUdwNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ0dkMsSUFBSSxDQUFDMmhCLG1CQUFoQyxDQUFsRCxFQUF3RztJQUFFO0lBQTFHLENBRC9CLEtBRU8sQ0FBQyxHQUFHL3NCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NkLFVBQXRDLEVBQWtELENBQUMsR0FBR3I1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixDQUF1QixTQUF2QixFQUFrQyxrQkFBbEMsQ0FBM0IsQ0FBbEQsRUFBcUk7SUFBRTtJQUF2SSxDQUYvQixDQUR1QyxDQUEzQyxDQU42QyxDQUFqRCxDQURELENBSDZCLEVBZ0I3QjtJQUFFO0lBaEIyQixDQUFoQztFQWlCSCxDQWxCdUYsQ0FBcEQsRUFrQmhDO0VBQUk7RUFsQjRCLENBQXBDO0FBbUJIOztBQUNEdnpCLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDckNhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCOztBQUNBLFNBQVNKLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsT0FBUSxDQUFDLEdBQUcvNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCbEQsTUFBTSxDQUFDcjNDLElBQVAsQ0FBWWd1QixPQUFsQyxFQUEyQyxVQUFVaTVCLGFBQVYsRUFBeUJuM0MsS0FBekIsRUFBZ0M7SUFDL0osSUFBSTFSLEVBQUosRUFBUXlHLEVBQVI7O0lBQ0EsT0FBUSxDQUFDLEdBQUdwSCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pFdHZDLEdBQUcsRUFBRXdILEtBRDREO01BRWpFLFNBQU8sQ0FBQyxHQUFHclMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxNQUFELEVBQVM7UUFDbEMsa0NBQWtDMTFDLE1BQU0sQ0FBQ2tMLEtBQUQsQ0FBTixJQUFpQnVuQyxNQUFNLENBQUNyM0MsSUFBUCxDQUFZZ3VCLE9BQVosQ0FBb0JwcUIsTUFBcEIsR0FBNkI7TUFEOUMsQ0FBVCxDQUExQjtJQUYwRCxDQUFyQyxFQUs3QixDQUNDLENBQUMsR0FBR25HLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0osVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0gsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkI4TyxhQUFhLENBQUM1aUQsSUFBZCxHQUNqRSxDQUFDakcsRUFBRSxHQUFHazVDLE1BQU0sQ0FBQzl4QixLQUFiLE1BQXdCLElBQXhCLElBQWdDcG5CLEVBQUUsS0FBSyxLQUFLLENBQTVDLEdBQWdELEtBQUssQ0FBckQsR0FBeURBLEVBQUUsQ0FBQyttRCxnQkFBSCxDQUFvQjhCLGFBQWEsQ0FBQzVpRCxJQUFsQyxDQURRLEdBRWpFaXpDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK3JCLE9BQWpCLENBQXlCLE1BQXpCLENBRnNDLENBQTVDLEVBRXlDO0lBQUU7SUFGM0MsQ0FENkMsQ0FBakQsQ0FENkMsRUFNN0MsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QyxJQUF2QyxFQUE2QyxDQUN6QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDLElBQXZDLEVBQTZDLENBQ3pDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsV0FBNUIsQ0FBM0IsQ0FBMUMsRUFBZ0g7SUFBRTtJQUFsSCxDQURzQyxFQUV0QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCLENBQUN0ekMsRUFBRSxHQUFHb2lELGFBQWEsQ0FBQ3hvRCxHQUFwQixNQUE2QixJQUE3QixJQUFxQ29HLEVBQUUsS0FBSyxLQUFLLENBQWpELEdBQXFEQSxFQUFyRCxHQUEwRHl5QyxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQityQixPQUFqQixDQUF5QixTQUF6QixFQUFvQyxrQkFBcEMsQ0FBckYsQ0FBMUMsRUFBeUw7SUFBRTtJQUEzTCxDQUZzQyxDQUExQyxDQUR5QyxFQUt6QyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLG9CQUE1QixDQUEzQixDQUExQyxFQUF5SDtJQUFFO0lBQTNILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ4TixRQUFRLENBQUNzYyxhQUFhLENBQUNDLGtCQUFmLENBQVIsR0FDL0Q1UCxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLE1BQTVCLENBRCtELEdBRS9EMGdELGFBQWEsQ0FBQ0Msa0JBQWQsR0FDSTVQLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsT0FBNUIsQ0FESixHQUVJK3dDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK3JCLE9BQWpCLEVBSmdDLENBQTFDLEVBSXVDO0lBQUU7SUFKekMsQ0FGc0MsQ0FBMUMsQ0FMeUMsRUFhekMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixXQUE1QixDQUEzQixDQUExQyxFQUFnSDtJQUFFO0lBQWxILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxFQUNyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCME0sYUFBYSxDQUFDbHRDLFNBQXBDLEVBQStDLFVBQVVBLFNBQVYsRUFBcUI1SixDQUFyQixFQUF3QjtNQUNwSixJQUFJL1IsRUFBSixFQUFReUcsRUFBUjs7TUFDQSxPQUFRLENBQUMsR0FBR3BILEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFDakV0dkMsR0FBRyxFQUFFNkgsQ0FENEQ7UUFFakUsU0FBTyxDQUFDLEdBQUcxUyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLHFCQUFELEVBQXdCO1VBQ2pELFFBQVFucUMsQ0FBQyxJQUFJODJDLGFBQWEsQ0FBQ2x0QyxTQUFkLENBQXdCblcsTUFBeEIsR0FBaUM7UUFERyxDQUF4QixDQUExQjtNQUYwRCxDQUFyQyxFQUs3QixDQUNDLENBQUMsR0FBR25HLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0YsVUFBckMsRUFBaUQsT0FBTyxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJwK0IsU0FBUyxDQUFDaFUsUUFBVixHQUM3RSxHQUFHM0csTUFBSCxDQUFVazRDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsVUFBNUIsQ0FBVixFQUFtRCxJQUFuRCxFQUF5RG5ILE1BQXpELENBQWdFLENBQUNoQixFQUFFLEdBQUdrNUMsTUFBTSxDQUFDOXhCLEtBQWIsTUFBd0IsSUFBeEIsSUFBZ0NwbkIsRUFBRSxLQUFLLEtBQUssQ0FBNUMsR0FBZ0QsS0FBSyxDQUFyRCxHQUF5REEsRUFBRSxDQUFDMEgsU0FBSCxDQUFhaVUsU0FBUyxDQUFDaFUsUUFBdkIsQ0FBekgsQ0FENkUsR0FFN0UsR0FBRzNHLE1BQUgsQ0FBVWs0QyxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLFVBQTVCLENBQVYsRUFBbUQsS0FBbkQsRUFBMERuSCxNQUExRCxDQUFpRWs0QyxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQityQixPQUFqQixFQUFqRSxDQUZrRCxDQUFQLEdBRXFELElBRnRHLEVBRTRHO01BQUU7TUFGOUcsQ0FERCxFQUlDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNELFVBQXJDLEVBQWlELENBQUMsR0FBR2w1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQixDQUFDdHpDLEVBQUUsR0FBR2tWLFNBQVMsQ0FBQ0EsU0FBaEIsTUFBK0IsSUFBL0IsSUFBdUNsVixFQUFFLEtBQUssS0FBSyxDQUFuRCxHQUF1REEsRUFBdkQsR0FBNER5eUMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrckIsT0FBakIsQ0FBeUIsV0FBekIsQ0FBdkYsQ0FBakQsRUFBZ0w7TUFBRTtNQUFsTCxDQUpELENBTDZCLEVBVTdCO01BQUU7TUFWMkIsQ0FBaEM7SUFXSCxDQWJnRixDQUFwRCxFQWF6QjtJQUFJO0lBYnFCLENBRFMsRUFBMUMsQ0FGc0MsQ0FBMUMsQ0FieUMsQ0FBN0MsQ0FEeUMsQ0FBN0MsQ0FONkMsQ0FBakQsQ0FERCxDQUw2QixFQWdEN0I7SUFBRTtJQWhEMkIsQ0FBaEM7RUFpREgsQ0FuRHVGLENBQXBELEVBbURoQztFQUFJO0VBbkQ0QixDQUFwQztBQW9ESDs7QUFDRHZ6QixjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQzlEYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUNidndDLEVBQUUsRUFBRSxFQURTO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSXd3QyxVQUFVLEdBQUcsQ0FBQyxJQUFELENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCOztBQUNBLElBQUlDLFVBQVUsR0FBRyxhQUFjLENBQUMsR0FBR3I1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7RUFBRSxTQUFPO0FBQVQsQ0FBbkMsRUFBMEUsR0FBMUUsRUFBK0UsQ0FBQztBQUFFO0FBQWxGLENBQS9COztBQUNBLElBQUlHLFVBQVUsR0FBRztFQUNienVDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSTB1QyxVQUFVLEdBQUc7RUFDYjF1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUkydUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCOztBQUNBLElBQUlDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBR3o1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7RUFBRSxTQUFPO0FBQVQsQ0FBckMsRUFBb0YsSUFBcEYsRUFBMEYsQ0FBQztBQUFFO0FBQTdGLENBQWhDOztBQUNBLElBQUk2QixXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRWp4QyxHQUFHLEVBQUU7QUFBUCxDQUFsQjs7QUFDQSxJQUFJa3hDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBRy83QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsSUFBMUMsRUFBZ0QsQ0FBQztBQUFFO0FBQW5ELENBQWhDOztBQUNBLElBQUk2QyxXQUFXLEdBQUc7RUFDZG54QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUlveEMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUveEMsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJNDFDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLE1BQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRWwyQyxHQUFHLEVBQUU7QUFBUCxDQUFsQjs7QUFDQSxJQUFJbTJDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBR2hoRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsSUFBMUMsRUFBZ0QsQ0FBQztBQUFFO0FBQW5ELENBQWhDOztBQUNBLElBQUk4SCxXQUFXLEdBQUc7RUFDZHAyQyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjs7QUFJQSxTQUFTaXVDLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSUMsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHaDZDLEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixTQUE1QixDQUF6Qjs7RUFDQSxJQUFJaUcsY0FBYyxHQUFHLENBQUMsR0FBR2xnRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsS0FBNUIsQ0FBckI7O0VBQ0EsSUFBSXNHLG9CQUFvQixHQUFHLENBQUMsR0FBR3ZnRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsV0FBNUIsQ0FBM0I7O0VBQ0EsSUFBSXlQLGlCQUFpQixHQUFHLENBQUMsR0FBRzFwRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsUUFBNUIsQ0FBeEI7O0VBQ0EsT0FBUSxDQUFDLEdBQUdqNkMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3BCLFVBQXJDLEVBQWlELENBQzdFLENBQUMsR0FBRy80QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFDakMzd0MsRUFBRSxFQUFFa3hDLElBQUksQ0FBQ3hoQyxLQUR3QjtJQUVqQyxTQUFPO0VBRjBCLENBQXJDLEVBR0csQ0FDQyxDQUFDLEdBQUdsWSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNGLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2o1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNELFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2w1QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDLFNBQU8sK0JBRGdDO0lBRXZDNXBDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxDQUQ2QyxFQUs3QyxDQUFDLEdBQUdwUSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNDLFVBQXJDLEVBQWlELENBQUMsR0FBR3A1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWVxaUQsc0JBQWYsQ0FBc0NqUSxJQUFJLENBQUN4aEMsS0FBTCxDQUFXMkYsUUFBWCxFQUF0QyxDQUEzQixDQUFqRCxFQUEySTtFQUFFO0VBQTdJLENBTDZDLEVBTTdDLENBQUMsR0FBRzdkLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUNqQyxTQUFPLENBQUMsR0FBR241QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLHNDQUFELEVBQXlDO01BQ2xFLGtCQUFrQm5ELElBQUksQ0FBQ3BzQyxTQUQyQztNQUVsRSxtQkFBbUIsQ0FBQ29zQyxJQUFJLENBQUNwc0M7SUFGeUMsQ0FBekMsQ0FBMUI7RUFEMEIsQ0FBckMsRUFLRyxDQUNDK3JDLFVBREQsRUFFRUssSUFBSSxDQUFDcHNDLFNBQU4sSUFDTyxDQUFDLEdBQUd0TixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDYixVQUF0QyxFQUFrRCxDQUFDLEdBQUd0NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixXQUExQixDQUEzQixDQUFsRCxFQUFzSDtFQUFFO0VBQXhILENBRC9CLEtBRU8sQ0FBQyxHQUFHOUksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ1osVUFBdEMsRUFBa0QsQ0FBQyxHQUFHdjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsZUFBMUIsQ0FBM0IsQ0FBbEQsRUFBMEg7RUFBRTtFQUE1SCxDQUYvQixDQUZELENBTEgsRUFVRztFQUFFO0VBVkwsQ0FONkMsQ0FBakQsQ0FENkMsRUFtQjdDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0ssVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCNEYsY0FBdkIsRUFBdUM7SUFDbkNod0MsSUFBSSxFQUFFd3BDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrYSxNQUFmLENBQXNCLGFBQXRCLEVBQXFDLG1CQUFyQyxDQUQ2QjtJQUVuQ2pTLElBQUksRUFBRSxLQUY2QjtJQUduQzVOLElBQUksRUFBRSxhQUFhYixNQUFiLENBQW9CKzNDLElBQUksQ0FBQ3o1QixVQUF6QixFQUFxQyxHQUFyQyxFQUEwQ3RlLE1BQTFDLENBQWlEKzNDLElBQUksQ0FBQ3hoQyxLQUF0RCxFQUE2RCxTQUE3RCxDQUg2QjtJQUluQyxTQUFPO0VBSjRCLENBQXZDLEVBS0csSUFMSCxFQUtTO0VBQUU7RUFMWCxFQUt3QixDQUFDLE1BQUQsRUFBUyxNQUFULENBTHhCLENBRDZDLEVBTzdDLENBQUMsR0FBR2xZLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCNEYsY0FBdkIsRUFBdUM7SUFDbkNod0MsSUFBSSxFQUFFd3BDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrYSxNQUFmLENBQXNCLGNBQXRCLEVBQXNDLG9CQUF0QyxDQUQ2QjtJQUVuQ2pTLElBQUksRUFBRSxFQUY2QjtJQUduQ3dQLE1BQU0sRUFBRSxRQUgyQjtJQUluQ3BkLElBQUksRUFBRSxhQUFhYixNQUFiLENBQW9CKzNDLElBQUksQ0FBQ3o1QixVQUF6QixFQUFxQyxHQUFyQyxFQUEwQ3RlLE1BQTFDLENBQWlEKzNDLElBQUksQ0FBQ3hoQyxLQUF0RCxDQUo2QjtJQUtuQyxTQUFPO0VBTDRCLENBQXZDLEVBTUcsSUFOSCxFQU1TO0VBQUU7RUFOWCxFQU13QixDQUFDLE1BQUQsRUFBUyxNQUFULENBTnhCLENBUDZDLEVBYzdDLENBQUMsR0FBR2xZLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxRQURnQztJQUV2QzVwQyxJQUFJLEVBQUU7RUFGaUMsQ0FBM0MsQ0FkNkMsRUFrQjdDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCaUcsb0JBQXZCLEVBQTZDO0lBQ3pDMzNDLElBQUksRUFBRTh3QyxJQUFJLENBQUN4aEMsS0FBTCxDQUFXMkYsUUFBWCxHQUFzQjlSLE9BQXRCLENBQThCLElBQTlCLEVBQW9DLEdBQXBDLENBRG1DO0lBRXpDLGNBQWMydEMsSUFBSSxDQUFDdHBCLE9BRnNCO0lBR3pDLHVCQUF1QixJQUhrQjtJQUl6QyxTQUFPO0VBSmtDLENBQTdDLEVBS0csSUFMSCxFQUtTO0VBQUU7RUFMWCxFQUt3QixDQUFDLE1BQUQsRUFBUyxZQUFULENBTHhCLENBbEI2QyxDQUFqRCxDQW5CNkMsQ0FBakQsQ0FERCxFQThDQ3FwQixXQTlDRCxFQStDQyxDQUFDLEdBQUd6NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDNkIsV0FBckMsRUFBa0QsRUFDN0MsQ0FBQyxHQUFHaDdDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnBELElBQUksQ0FBQ3BwQixVQUEzQixFQUF1QyxVQUFVenJCLE1BQVYsRUFBa0JxMkIsQ0FBbEIsRUFBcUI7SUFDekksSUFBSXY2QixFQUFKLEVBQVF5RyxFQUFSLEVBQVkrQixFQUFaLEVBQWdCeU0sRUFBaEIsRUFBb0JDLEVBQXBCLEVBQXdCZ1csRUFBeEIsRUFBNEJDLEVBQTVCLEVBQWdDQyxFQUFoQzs7SUFDQSxPQUFRLENBQUMsR0FBRy9yQixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztNQUFFdnZDLEdBQUcsRUFBRXF3QjtJQUFQLENBQTlDLEVBQTBELENBQ3RGLENBQUMsR0FBR2w3QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM4QixXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdqN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDK0IsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHbDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN2QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLFNBQTlCLENBRHVDLEVBRXZDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNnQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUduN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDaUMsV0FBckMsRUFBa0QsQ0FBQyxHQUFHcDdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDOXNDLGdCQUFMLENBQXNCL0gsTUFBTSxDQUFDQSxNQUFQLENBQWNxVCxLQUFkLENBQW9CLENBQXBCLEVBQXVCb0UsU0FBN0MsRUFBd0QsSUFBeEQsQ0FBM0IsQ0FBbEQsRUFBNkk7SUFBRTtJQUEvSSxDQUQ4QyxFQUU5QyxDQUFDLEdBQUd0YyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNrQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdyN0MsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUI0RixjQUF2QixFQUF1QztNQUNuQ2h3QyxJQUFJLEVBQUV3cEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZSthLE1BQWYsQ0FBc0IsY0FBdEIsRUFBc0MsZUFBdEMsQ0FENkI7TUFFbkNqUyxJQUFJLEVBQUUsS0FGNkI7TUFHbkM1TixJQUFJLEVBQUUsYUFBYWIsTUFBYixDQUFvQiszQyxJQUFJLENBQUN6NUIsVUFBekIsRUFBcUMsR0FBckMsRUFBMEN0ZSxNQUExQyxDQUFpRCszQyxJQUFJLENBQUN4aEMsS0FBdEQsRUFBNkQsR0FBN0QsRUFBa0V2VyxNQUFsRSxDQUF5RWtELE1BQU0sQ0FBQzJELEVBQWhGLENBSDZCO01BSW5DLFNBQU87SUFKNEIsQ0FBdkMsRUFLRyxJQUxILEVBS1M7SUFBRTtJQUxYLEVBS3dCLENBQUMsTUFBRCxFQUFTLE1BQVQsQ0FMeEIsQ0FEOEMsRUFPOUMsQ0FBQyxHQUFHeEksS0FBSyxDQUFDczZDLFdBQVYsRUFBdUI0RixjQUF2QixFQUF1QztNQUNuQ2h3QyxJQUFJLEVBQUV3cEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZSthLE1BQWYsQ0FBc0IsY0FBdEIsRUFBc0MsZUFBdEMsQ0FENkI7TUFFbkNqUyxJQUFJLEVBQUUsTUFGNkI7TUFHbkM1TixJQUFJLEVBQUUsYUFBYWIsTUFBYixDQUFvQiszQyxJQUFJLENBQUN6NUIsVUFBekIsRUFBcUMsR0FBckMsRUFBMEN0ZSxNQUExQyxDQUFpRCszQyxJQUFJLENBQUN4aEMsS0FBdEQsRUFBNkQsR0FBN0QsRUFBa0V2VyxNQUFsRSxDQUF5RWtELE1BQU0sQ0FBQzJELEVBQWhGLEVBQW9GLE9BQXBGO0lBSDZCLENBQXZDLEVBSUcsSUFKSCxFQUlTO0lBQUU7SUFKWCxFQUl3QixDQUFDLE1BQUQsRUFBUyxNQUFULENBSnhCLENBUDhDLENBQWxELENBRjhDLENBQWxELENBRnVDLEVBa0J2QyxDQUFDLEdBQUd4SSxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsV0FBOUIsQ0FsQnVDLEVBbUJ2QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDbUMsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHdDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1Q29DLFdBQXZDLEVBQW9ELENBQ2hELENBQUMsR0FBR3Y3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMsSUFBdkMsRUFBNkMsQ0FDekMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DcUMsV0FBcEMsRUFBaUQsQ0FBQyxHQUFHeDdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsYUFBMUIsQ0FBM0IsQ0FBakQsRUFBdUg7SUFBRTtJQUF6SCxDQURzQyxFQUV0QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3NDLFdBQXJDLEVBQWtELENBQUMsR0FBR3o3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQixDQUFDLzVDLEVBQUUsR0FBRys0QyxJQUFJLENBQUMzeEIsS0FBTCxDQUFXc1MsVUFBWCxDQUFzQngxQixNQUFNLENBQUNBLE1BQVAsQ0FBYytCLElBQXBDLENBQU4sTUFBcUQsSUFBckQsSUFBNkRqRyxFQUFFLEtBQUssS0FBSyxDQUF6RSxHQUE2RUEsRUFBN0UsR0FBa0YrNEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQTdHLENBQWxELEVBQTBMO0lBQUU7SUFBNUwsQ0FEc0MsQ0FBMUMsQ0FGc0MsQ0FBMUMsQ0FEeUMsRUFPekMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DdUMsV0FBcEMsRUFBaUQsQ0FBQyxHQUFHMTdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsYUFBMUIsQ0FBM0IsQ0FBakQsRUFBdUg7SUFBRTtJQUF6SCxDQURzQyxFQUV0QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3dDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRzM3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN5QyxXQUFyQyxFQUFrRCxPQUFPLENBQUMsR0FBRzU3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFVBQTFCLENBQTNCLENBQVAsR0FBMkUsSUFBM0UsR0FBa0YsQ0FBQyxHQUFHOUksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUM5c0MsZ0JBQUwsQ0FBc0IvSCxNQUFNLENBQUNBLE1BQVAsQ0FBYzhiLFdBQWQsQ0FBMEIsQ0FBMUIsRUFBNkJyRSxTQUFuRCxFQUE4RG85QixJQUFJLENBQUNscEIsZUFBbkUsTUFBd0YsVUFBeEYsR0FDekprcEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBRHlKLEdBRXpKcW1CLElBQUksQ0FBQzN4QixLQUFMLENBQVcxZixTQUFYLENBQXFCLENBQUMwakIsRUFBRSxHQUFHLENBQUNELEVBQUUsR0FBRyxDQUFDRCxFQUFFLEdBQUcsQ0FBQ2hXLEVBQUUsR0FBRyxDQUFDRCxFQUFFLEdBQUcsQ0FBQ3pNLEVBQUUsR0FBRyxDQUFDL0IsRUFBRSxHQUFHdkMsTUFBTSxLQUFLLElBQVgsSUFBbUJBLE1BQU0sS0FBSyxLQUFLLENBQW5DLEdBQXVDLEtBQUssQ0FBNUMsR0FBZ0RBLE1BQU0sQ0FBQ0EsTUFBN0QsTUFBeUUsSUFBekUsSUFBaUZ1QyxFQUFFLEtBQUssS0FBSyxDQUE3RixHQUFpRyxLQUFLLENBQXRHLEdBQTBHQSxFQUFFLENBQUN1WixXQUFuSCxNQUFvSSxJQUFwSSxJQUE0SXhYLEVBQUUsS0FBSyxLQUFLLENBQXhKLEdBQTRKLEtBQUssQ0FBakssR0FBcUtBLEVBQUUsQ0FBQyxDQUFELENBQTdLLE1BQXNMLElBQXRMLElBQThMeU0sRUFBRSxLQUFLLEtBQUssQ0FBMU0sR0FBOE0sS0FBSyxDQUFuTixHQUF1TkEsRUFBRSxDQUFDMEcsU0FBaE8sTUFBK08sSUFBL08sSUFBdVB6RyxFQUFFLEtBQUssS0FBSyxDQUFuUSxHQUF1USxLQUFLLENBQTVRLEdBQWdSQSxFQUFFLENBQUMsQ0FBRCxDQUF4UixNQUFpUyxJQUFqUyxJQUF5U2dXLEVBQUUsS0FBSyxLQUFLLENBQXJULEdBQXlULEtBQUssQ0FBOVQsR0FBa1VBLEVBQUUsQ0FBQ3ZqQixRQUEzVSxNQUF5VixJQUF6VixJQUFpV3dqQixFQUFFLEtBQUssS0FBSyxDQUE3VyxHQUFpWEEsRUFBalgsR0FBc1g0dEIsSUFBSSxDQUFDcnBCLGVBQWpZLE1BQXNaLElBQXRaLElBQThadEUsRUFBRSxLQUFLLEtBQUssQ0FBMWEsR0FBOGFBLEVBQTlhLEdBQW1iLElBQXhjLENBRjhILENBQWxGLEdBRXFhLElBRnZkLEVBRTZkO0lBQUU7SUFGL2QsQ0FEOEMsRUFJOUMsQ0FBQyxHQUFHL3JCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzBDLFdBQXJDLEVBQWtELENBQUMsR0FBRzc3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzlzQyxnQkFBTCxDQUFzQi9ILE1BQU0sQ0FBQ0EsTUFBUCxDQUFjOGIsV0FBZCxDQUEwQixDQUExQixFQUE2QnJFLFNBQW5ELEVBQThEbzlCLElBQUksQ0FBQ2xwQixlQUFuRSxDQUEzQixDQUFsRCxFQUFtSztJQUFFO0lBQXJLLENBSjhDLENBQWxELENBRHNDLENBQTFDLENBRnNDLENBQTFDLENBUHlDLEVBa0J4QzNyQixNQUFNLENBQUN5dEIsVUFBUCxDQUFrQm5zQixNQUFsQixLQUE2QixDQUE5QixJQUNPLENBQUMsR0FBR25HLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MyQixXQUFwQyxFQUFpRCxDQUN4RUMsV0FEd0UsRUFFeEUsQ0FBQyxHQUFHLzdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR241QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qm9QLGlCQUF2QixFQUEwQztNQUN0Q2xuRCxJQUFJLEVBQUUsSUFBSWIsTUFBSixDQUFXKzNDLElBQUksQ0FBQ3hoQyxLQUFoQixFQUF1QixHQUF2QixFQUE0QnZXLE1BQTVCLENBQW1Da0QsTUFBTSxDQUFDMkQsRUFBMUMsRUFBOEMsbUJBQTlDLENBRGdDO01BRXRDbVksV0FBVyxFQUFFKzRCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrYSxNQUFmLENBQXNCLHNCQUF0QixDQUZ5QjtNQUd0QyxZQUFZcTNCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrYSxNQUFmLENBQXNCLDBCQUF0QjtJQUgwQixDQUExQyxFQUlHLElBSkgsRUFJUztJQUFFO0lBSlgsRUFJd0IsQ0FBQyxNQUFELEVBQVMsYUFBVCxFQUF3QixVQUF4QixDQUp4QixDQUR1QyxDQUEzQyxDQURzQyxDQUExQyxDQUZ3RSxDQUFqRCxDQUQvQixJQWFNLENBQUMsR0FBR3JpQixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0EvQm1DLENBQTdDLENBRGdELENBQXBELENBRDhDLEVBb0M5QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLGFBQTlCLENBcEM4QyxFQXFDN0MxMUMsTUFBTSxDQUFDeXRCLFVBQVAsQ0FBa0Juc0IsTUFBbEIsR0FBMkIsQ0FBNUIsSUFDTyxDQUFDLEdBQUduRyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDNkIsV0FBckMsRUFBa0QsQ0FDekUsQ0FBQyxHQUFHaDhDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzhDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR2o4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMrQyxXQUFyQyxFQUFrRCxDQUFDLEdBQUdsOEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixXQUExQixDQUEzQixDQUFsRCxFQUFzSDtJQUFFO0lBQXhILENBRDhDLEVBRTlDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2dELFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR244QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QjRGLGNBQXZCLEVBQXVDO01BQ25DaHdDLElBQUksRUFBRXdwQyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK2EsTUFBZixDQUFzQixhQUF0QixFQUFxQyxzQkFBckMsQ0FENkI7TUFFbkNqUyxJQUFJLEVBQUUsS0FGNkI7TUFHbkM1TixJQUFJLEVBQUUsSUFBSWIsTUFBSixDQUFXKzNDLElBQUksQ0FBQ3hoQyxLQUFoQixFQUF1QixHQUF2QixFQUE0QnZXLE1BQTVCLENBQW1Da0QsTUFBTSxDQUFDMkQsRUFBMUMsRUFBOEMsbUJBQTlDLENBSDZCO01BSW5DLFNBQU87SUFKNEIsQ0FBdkMsRUFLRyxJQUxILEVBS1M7SUFBRTtJQUxYLEVBS3dCLENBQUMsTUFBRCxFQUFTLE1BQVQsQ0FMeEIsQ0FEOEMsRUFPOUMsQ0FBQyxHQUFHeEksS0FBSyxDQUFDczZDLFdBQVYsRUFBdUI0RixjQUF2QixFQUF1QztNQUNuQ2h3QyxJQUFJLEVBQUV3cEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZSthLE1BQWYsQ0FBc0IsY0FBdEIsRUFBc0MsdUJBQXRDLENBRDZCO01BRW5DalMsSUFBSSxFQUFFLEVBRjZCO01BR25Dd1AsTUFBTSxFQUFFLFFBSDJCO01BSW5DcGQsSUFBSSxFQUFFLElBQUliLE1BQUosQ0FBVyszQyxJQUFJLENBQUN4aEMsS0FBaEIsRUFBdUIsR0FBdkIsRUFBNEJ2VyxNQUE1QixDQUFtQ2tELE1BQU0sQ0FBQzJELEVBQTFDLEVBQThDLFlBQTlDO0lBSjZCLENBQXZDLEVBS0csSUFMSCxFQUtTO0lBQUU7SUFMWCxFQUt3QixDQUFDLE1BQUQsRUFBUyxNQUFULENBTHhCLENBUDhDLENBQWxELENBRjhDLENBQWxELENBRHlFLEVBa0J6RSxDQUFDLEdBQUd4SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsRUFDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQmo0QyxNQUFNLENBQUN5dEIsVUFBN0IsRUFBeUMsVUFBVWxCLFNBQVYsRUFBcUIvaEIsQ0FBckIsRUFBd0I7TUFDOUksSUFBSTFPLEVBQUo7O01BQ0EsT0FBUSxDQUFDLEdBQUdYLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFDakV0dkMsR0FBRyxFQUFFd0UsQ0FENEQ7UUFFakUsU0FBTyxDQUFDLEdBQUdyUCxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLGtDQUFELEVBQXFDO1VBQzlELDZCQUE2Qnh0QyxDQUFDLEtBQUt4SyxNQUFNLENBQUN5dEIsVUFBUCxDQUFrQm5zQixNQUFsQixHQUEyQjtRQURBLENBQXJDLENBQTFCO01BRjBELENBQXJDLEVBSzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDaUQsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHcDhDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2tELFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3I4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNtRCxXQUFyQyxFQUFrRCxDQUFDLEdBQUd0OEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQy81QyxFQUFFLEdBQUd5d0IsU0FBUyxDQUFDQSxTQUFWLENBQW9CbFosS0FBcEIsQ0FBMEIsQ0FBMUIsRUFBNkJvRSxTQUE3QixDQUF1QyxDQUF2QyxFQUM5RUEsU0FEd0UsTUFDekQsSUFEeUQsSUFDakQzYixFQUFFLEtBQUssS0FBSyxDQURxQyxHQUNqQ0EsRUFEaUMsR0FDNUIrNEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsVUFBMUIsQ0FEQyxDQUFsRCxFQUN5RjtNQUFFO01BRDNGLENBRDhDLEVBRzlDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ29ELFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3Y4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NxRCxXQUF0QyxFQUFtRCxDQUMvQyxDQUFDLEdBQUd4OEMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUI0RixjQUF2QixFQUF1QztRQUNuQ2h3QyxJQUFJLEVBQUV3cEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZSthLE1BQWYsQ0FBc0IsY0FBdEIsRUFBc0Msa0JBQXRDLENBRDZCO1FBRW5DalMsSUFBSSxFQUFFLEtBRjZCO1FBR25DNU4sSUFBSSxFQUFFLElBQUliLE1BQUosQ0FBVyszQyxJQUFJLENBQUN4aEMsS0FBaEIsRUFBdUIsR0FBdkIsRUFBNEJ2VyxNQUE1QixDQUFtQ2tELE1BQU0sQ0FBQzJELEVBQTFDLEVBQThDLGFBQTlDLEVBQTZEN0csTUFBN0QsQ0FBb0V5dkIsU0FBUyxDQUFDNW9CLEVBQTlFLENBSDZCO1FBSW5DLFNBQU87TUFKNEIsQ0FBdkMsRUFLRyxJQUxILEVBS1M7TUFBRTtNQUxYLEVBS3dCLENBQUMsTUFBRCxFQUFTLE1BQVQsQ0FMeEIsQ0FEK0MsRUFPL0MsQ0FBQyxHQUFHeEksS0FBSyxDQUFDczZDLFdBQVYsRUFBdUI0RixjQUF2QixFQUF1QztRQUNuQ2h3QyxJQUFJLEVBQUV3cEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZSthLE1BQWYsQ0FBc0IsY0FBdEIsRUFBc0Msa0JBQXRDLENBRDZCO1FBRW5DN2YsSUFBSSxFQUFFLElBQUliLE1BQUosQ0FBVyszQyxJQUFJLENBQUN4aEMsS0FBaEIsRUFBdUIsR0FBdkIsRUFBNEJ2VyxNQUE1QixDQUFtQ2tELE1BQU0sQ0FBQzJELEVBQTFDLEVBQThDLGFBQTlDLEVBQTZEN0csTUFBN0QsQ0FBb0V5dkIsU0FBUyxDQUFDNW9CLEVBQTlFLEVBQWtGLE9BQWxGLENBRjZCO1FBR25DLFNBQU87TUFINEIsQ0FBdkMsRUFJRyxJQUpILEVBSVM7TUFBRTtNQUpYLEVBSXdCLENBQUMsTUFBRCxFQUFTLE1BQVQsQ0FKeEIsQ0FQK0MsQ0FBbkQsQ0FEOEMsRUFjOUMsQ0FBQyxHQUFHeEksS0FBSyxDQUFDczZDLFdBQVYsRUFBdUI0RixjQUF2QixFQUF1QztRQUNuQ2h3QyxJQUFJLEVBQUV3cEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZSthLE1BQWYsQ0FBc0IsYUFBdEIsRUFBcUMsZUFBckMsQ0FENkI7UUFFbkNqUyxJQUFJLEVBQUUsS0FGNkI7UUFHbkM1TixJQUFJLEVBQUUsY0FBY2IsTUFBZCxDQUFxQnl2QixTQUFTLENBQUM1b0IsRUFBL0IsRUFBbUMsZ0JBQW5DO01BSDZCLENBQXZDLEVBSUcsSUFKSCxFQUlTO01BQUU7TUFKWCxFQUl3QixDQUFDLE1BQUQsRUFBUyxNQUFULENBSnhCLENBZDhDLENBQWxELENBSDhDLENBQWxELENBRDhDLEVBeUI5QyxDQUFDLEdBQUd4SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMsSUFBdkMsRUFBNkMsQ0FDekMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QyxJQUF2QyxFQUE2QyxDQUN6QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NzRCxXQUFwQyxFQUFpRCxDQUFDLEdBQUd6OEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixVQUExQixDQUEzQixJQUFvRSxJQUFySCxFQUEySDtNQUFFO01BQTdILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxFQUNyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCMXJCLFNBQVMsQ0FDM0dBLFNBRGtHLENBQ3hGNEIsUUFEa0UsRUFDeEQsVUFBVUEsUUFBVixFQUFvQmtVLENBQXBCLEVBQXVCO1FBQzVDLE9BQVEsQ0FBQyxHQUFHbG5DLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7VUFDakV0dkMsR0FBRyxFQUFFcThCLENBRDREO1VBRWpFLFNBQU8sQ0FBQyxHQUFHbG5DLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsRUFBRCxFQUFLO1lBQzlCLFFBQVEzVixDQUFDLEtBQ0w5VixTQUFTLENBQUNBLFNBQVYsQ0FBb0I0QixRQUFwQixDQUE2QjdzQixNQUE3QixHQUNJO1VBSHNCLENBQUwsQ0FBMUI7UUFGMEQsQ0FBckMsRUFPN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN1RCxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUcxOEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDd0QsV0FBdEMsRUFBbUQsQ0FDL0MsQ0FBQyxHQUFHMzhDLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLE9BQTFCLENBQTNCLElBQWlFLElBQTVGLEVBQWtHO1FBQUU7UUFBcEcsQ0FEK0MsRUFFOUNrcUIsUUFBUSxDQUFDanpCLEtBQVYsSUFDTyxDQUFDLEdBQUdDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO1VBQUV2dkMsR0FBRyxFQUFFO1FBQVAsQ0FBOUMsRUFBMEQsQ0FDakYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCMW5CLFFBQVEsQ0FBQ2p6QixLQUFwQyxJQUE2QyxJQUF4RSxFQUE4RTtRQUFFO1FBQWhGLENBRGlGLENBQTFELEVBRXhCO1FBQUc7UUFGcUIsQ0FEL0IsS0FJTyxDQUFDLEdBQUdDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO1VBQUV2dkMsR0FBRyxFQUFFO1FBQVAsQ0FBOUMsRUFBMEQsQ0FDakYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQTNCLElBQXVELElBQWxGLEVBQXdGO1FBQUU7UUFBMUYsQ0FEaUYsQ0FBMUQsRUFFeEI7UUFBRztRQUZxQixDQUovQixDQUYrQyxDQUFuRCxDQUQ4QyxFQVc5QyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQ3hDLENBQUMsR0FBR241QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixNQUExQixDQUEzQixJQUFnRSxJQUEzRixFQUFpRztRQUFFO1FBQW5HLENBRHdDLEVBRXZDa3FCLFFBQVEsQ0FBQy9lLElBQVYsSUFDTyxDQUFDLEdBQUdqVSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztVQUFFdnZDLEdBQUcsRUFBRTtRQUFQLENBQTlDLEVBQTBELENBQ2pGLENBQUMsR0FBRzdLLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQjFuQixRQUFRLENBQUMvZSxJQUFwQyxDQUEzQixFQUFzRTtRQUFFO1FBQXhFLENBRGlGLENBQTFELEVBRXhCO1FBQUc7UUFGcUIsQ0FEL0IsS0FJTyxDQUFDLEdBQUdqVSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztVQUFFdnZDLEdBQUcsRUFBRTtRQUFQLENBQTlDLEVBQTBELENBQ2pGLENBQUMsR0FBRzdLLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUEzQixDQUEzQixFQUFpRjtRQUFFO1FBQW5GLENBRGlGLENBQTFELEVBRXhCO1FBQUc7UUFGcUIsQ0FKL0IsQ0FGd0MsQ0FBNUMsQ0FYOEMsQ0FBbEQsQ0FERCxDQVA2QixFQThCN0I7UUFBRTtRQTlCMkIsQ0FBaEM7TUErQkgsQ0FqQ2dGLENBQXBELEVBaUN6QjtNQUFJO01BakNxQixDQURTLEVBQTFDLENBRnNDLENBQTFDLENBRHlDLEVBd0N4Q2pDLFNBQVMsQ0FBQ3c0QixPQUFWLENBQWtCempELE1BQWxCLEdBQTJCLENBQTVCLElBQ08sQ0FBQyxHQUFHbkcsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ3lDLFdBQXBDLEVBQWlELENBQ3hFLENBQUMsR0FBRzU4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NzSCxXQUFwQyxFQUFpRCxDQUFDLEdBQUd6Z0QsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixRQUExQixDQUEzQixJQUFrRSxJQUFuSCxFQUF5SDtNQUFFO01BQTNILENBRHdFLEVBRXhFLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDdUgsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHMWdELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxFQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCMXJCLFNBQVMsQ0FBQ3c0QixPQUFoQyxFQUF5QyxVQUFVdjRCLE1BQVYsRUFBa0JsTSxDQUFsQixFQUFxQjtRQUMzSSxPQUFRLENBQUMsR0FBR25sQixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1VBQ2pFdHZDLEdBQUcsRUFBRXNhLENBRDREO1VBRWpFLFNBQU8sQ0FBQyxHQUFHbmxCLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsTUFBRCxFQUFTO1lBQ2xDLFFBQVExM0IsQ0FBQyxLQUNMaU0sU0FBUyxDQUFDdzRCLE9BQVYsQ0FBa0J6akQsTUFBbEIsR0FBMkI7VUFGRyxDQUFULENBQTFCO1FBRjBELENBQXJDLEVBTTdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDd0gsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHM2dELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztVQUMvQixTQUFPLG1CQUR3QjtVQUUvQnoyQyxJQUFJLEVBQUUsY0FBY2YsTUFBZCxDQUFxQnl2QixTQUFTLENBQUM1b0IsRUFBL0IsRUFBbUMsVUFBbkMsRUFBK0M3RyxNQUEvQyxDQUFzRDB2QixNQUFNLENBQUM3b0IsRUFBN0Q7UUFGeUIsQ0FBbkMsRUFHRyxDQUFDLEdBQUd4SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzdwQixVQUFMLENBQWdCd0IsTUFBTSxDQUFDQSxNQUFQLENBQWM5VSxZQUFkLENBQTJCLENBQTNCLEVBQ3pDdEksSUFEeUIsRUFDbkJ5bEMsSUFBSSxDQUFDNW5DLE1BRGMsQ0FBM0IsSUFDd0IsS0FEeEIsR0FDZ0MsQ0FBQyxHQUFHOVIsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUM3cEIsVUFBTCxDQUFnQndCLE1BQU0sQ0FBQ0EsTUFBUCxDQUFjN1UsVUFBZCxDQUF5QixDQUF6QixFQUN6RXZJLElBRHlELEVBQ25EeWxDLElBQUksQ0FBQzVuQyxNQUQ4QyxDQUEzQixDQUpuQyxFQUswQjtRQUFFO1FBTDVCLEVBSytDOHVDLFdBTC9DLENBRDhDLENBQWxELENBREQsRUFTQyxDQUFDLEdBQUc1Z0QsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDMEgsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHN2dELEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCNEYsY0FBdkIsRUFBdUM7VUFDbkNod0MsSUFBSSxFQUFFd3BDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrYSxNQUFmLENBQXNCLE1BQXRCLENBRDZCO1VBRW5DalMsSUFBSSxFQUFFLE1BRjZCO1VBR25DNU4sSUFBSSxFQUFFLGNBQWNiLE1BQWQsQ0FBcUJ5dkIsU0FBUyxDQUFDNW9CLEVBQS9CLEVBQW1DLFVBQW5DLEVBQStDN0csTUFBL0MsQ0FBc0QwdkIsTUFBTSxDQUFDN29CLEVBQTdELEVBQWlFLE9BQWpFO1FBSDZCLENBQXZDLEVBSUcsSUFKSCxFQUlTO1FBQUU7UUFKWCxFQUl3QixDQUFDLE1BQUQsRUFBUyxNQUFULENBSnhCLENBRDhDLENBQWxELENBVEQsQ0FONkIsRUFzQjdCO1FBQUU7UUF0QjJCLENBQWhDO01BdUJILENBeEJnRixDQUFwRCxFQXdCekI7TUFBSTtNQXhCcUIsQ0FEVSxFQUEzQyxDQUQ4QyxFQTRCOUMsQ0FBQyxHQUFHeEksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDMkgsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHOWdELEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCNEYsY0FBdkIsRUFBdUM7UUFDbkMsU0FBTyxPQUQ0QjtRQUVuQ2h3QyxJQUFJLEVBQUV3cEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZSthLE1BQWYsQ0FBc0Isa0JBQXRCLENBRjZCO1FBR25DalMsSUFBSSxFQUFFLEVBSDZCO1FBSW5Dd1AsTUFBTSxFQUFFLFFBSjJCO1FBS25DcGQsSUFBSSxFQUFFLGNBQWNiLE1BQWQsQ0FBcUJ5dkIsU0FBUyxDQUFDNW9CLEVBQS9CLEVBQW1DLFNBQW5DO01BTDZCLENBQXZDLEVBTUcsSUFOSCxFQU1TO01BQUU7TUFOWCxFQU13QixDQUFDLE1BQUQsRUFBUyxNQUFULENBTnhCLENBRDhDLENBQWxELENBNUI4QyxDQUFsRCxDQURzQyxDQUExQyxDQUZ3RSxDQUFqRCxDQUQvQixLQTRDTyxDQUFDLEdBQUd4SSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DNEcsV0FBcEMsRUFBaUQsQ0FDeEVDLFdBRHdFLEVBRXhFLENBQUMsR0FBR2hoRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN2QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJvUCxpQkFBdkIsRUFBMEM7UUFDdENsbkQsSUFBSSxFQUFFLGNBQWNiLE1BQWQsQ0FBcUJ5dkIsU0FBUyxDQUFDNW9CLEVBQS9CLEVBQW1DLGdCQUFuQyxDQURnQztRQUV0Q21ZLFdBQVcsRUFBRSs0QixJQUFJLENBQUNweUMsU0FBTCxDQUFlK2EsTUFBZixDQUFzQixzQkFBdEI7TUFGeUIsQ0FBMUMsRUFHRyxJQUhILEVBR1M7TUFBRTtNQUhYLEVBR3dCLENBQUMsTUFBRCxFQUFTLGFBQVQsQ0FIeEIsQ0FEdUMsQ0FBM0MsQ0FEc0MsQ0FBMUMsQ0FGd0UsQ0FBakQsQ0E1Qy9CLENBeEN5QyxDQUE3QyxDQUR5QyxDQUE3QyxDQXpCOEMsQ0FBbEQsQ0FERCxDQUw2QixFQWtJN0I7TUFBRTtNQWxJMkIsQ0FBaEM7SUFtSUgsQ0FySWdGLENBQXBELEVBcUl6QjtJQUFJO0lBcklxQixDQURVLEVBQTNDLENBbEJ5RSxDQUFsRCxDQUQvQixJQTRKTSxDQUFDLEdBQUdyaUIsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBak13QyxDQUFsRCxDQW5CdUMsQ0FBM0MsQ0FEOEMsQ0FBbEQsQ0FEOEMsQ0FBbEQsQ0FEc0YsRUE0TnJGcmYsQ0FBQyxLQUFLd2UsSUFBSSxDQUFDbjNDLElBQUwsQ0FBVWd1QixPQUFWLENBQWtCcHFCLE1BQWxCLEdBQTJCLENBQWxDLElBQ08sQ0FBQyxHQUFHbkcsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzhHLFdBQXJDLENBRC9CLElBRU0sQ0FBQyxHQUFHamhELEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQTlOZ0YsQ0FBMUQsRUErTjdCO0lBQUc7SUEvTjBCLENBQWhDO0VBZ09ILENBbE9nRixDQUFwRCxFQWtPekI7RUFBSTtFQWxPcUIsQ0FEaUIsRUFBbEQsQ0EvQ0QsQ0FISCxFQXVSRztFQUFFO0VBdlJMLEVBdVJrQnZCLFVBdlJsQixDQUQ2RSxDQUFqRCxDQUFoQztBQTBSSDs7QUFDRGw1QyxjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ25XYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFbnVDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSW91QyxVQUFVLEdBQUc7RUFDYnB1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUlxdUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHO0VBQUV2dUMsR0FBRyxFQUFFO0FBQVAsQ0FBakI7QUFDQSxJQUFJd3VDLFVBQVUsR0FBRztFQUFFeHVDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSXl1QyxVQUFVLEdBQUc7RUFDYnp1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUkwdUMsVUFBVSxHQUFHO0VBQUUxdUMsR0FBRyxFQUFFO0FBQVAsQ0FBakI7QUFDQSxJQUFJMnVDLFVBQVUsR0FBRztFQUFFM3VDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSTR1QyxXQUFXLEdBQUc7RUFDZDV1QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUltd0MsV0FBVyxHQUFHO0VBQUVud0MsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJb3dDLFdBQVcsR0FBRztFQUFFcHdDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSXF3QyxXQUFXLEdBQUc7RUFDZHJ3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUlzd0MsV0FBVyxHQUFHO0VBQUV0d0MsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJdXdDLFdBQVcsR0FBRztFQUFFdndDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSXd3QyxXQUFXLEdBQUc7RUFDZHh3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUl5d0MsV0FBVyxHQUFHO0VBQUV6d0MsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJMHdDLFdBQVcsR0FBRztFQUFFMXdDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSTJ3QyxXQUFXLEdBQUc7RUFDZDN3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUk0d0MsV0FBVyxHQUFHO0VBQ2Q1d0MsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJNndDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkL3dDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSWd4QyxXQUFXLEdBQUc7RUFDZGh4QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUlpeEMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2RseEMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJbXhDLFdBQVcsR0FBRztFQUFFbnhDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSW94QyxXQUFXLEdBQUcsQ0FBQyxNQUFELENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2RyeEMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7O0FBSUEsU0FBU2l1QyxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELE9BQVEsQ0FBQyxHQUFHLzVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnBELElBQUksQ0FBQ24zQyxJQUEzQixFQUFpQyxVQUFVNkksSUFBVixFQUFnQlAsR0FBaEIsRUFBcUI7SUFDMUksT0FBUSxDQUFDLEdBQUc3SyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pFdHZDLEdBQUcsRUFBRUEsR0FENEQ7TUFFakUsU0FBTyxDQUFDLEdBQUc3SyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLHNDQUFELEVBQXlDO1FBQUUsUUFBUTExQyxNQUFNLENBQUMwRCxHQUFELENBQU4sS0FBZ0I2dUMsSUFBSSxDQUFDbjNDLElBQUwsQ0FBVTRELE1BQVYsR0FBbUI7TUFBN0MsQ0FBekMsQ0FBMUI7SUFGMEQsQ0FBckMsRUFHN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNKLFVBQXJDLEVBQWlELENBQzVDM3RDLElBQUksQ0FBQ3krQyxpQkFBTixJQUNPLENBQUMsR0FBRzdwRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDbkIsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDM3hCLEtBQUwsQ0FBVytoQyxnQkFBWCxDQUE0QjErQyxJQUFJLENBQUN5K0MsaUJBQWpDLENBQTNCLENBQWxELEVBQW1JO0lBQUU7SUFBckksQ0FEL0IsS0FFTyxDQUFDLEdBQUc3cEQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2xCLFVBQXRDLEVBQWtELENBQUMsR0FBR2o1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixDQUF1QixZQUF2QixDQUEzQixDQUFsRCxFQUFvSDtJQUFFO0lBQXRILENBRi9CLENBRDZDLENBQWpELENBREQsRUFNQyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3RDL3RDLElBQUksQ0FBQ3krQyxpQkFBTCxJQUEwQixDQUEzQixJQUNPLENBQUMsR0FBRzdwRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDZixVQUFyQyxFQUFpRCxDQUN2RWh1QyxJQUFJLENBQUM2d0IsSUFBTixJQUNPLENBQUMsR0FBR2o4QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDZCxVQUF0QyxFQUFrRCxDQUFDLEdBQUdyNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUMzeEIsS0FBTCxDQUFXZ2lDLFVBQVgsQ0FBc0IzK0MsSUFBSSxDQUFDNndCLElBQTNCLENBQTNCLENBQWxELEVBQWdIO0lBQUU7SUFBbEgsQ0FEL0IsS0FFTyxDQUFDLEdBQUdqOEIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2IsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQTNCLENBQWxELEVBQXdHO0lBQUU7SUFBMUcsQ0FGL0IsQ0FEd0UsQ0FBakQsQ0FEL0IsSUFNT2pvQixJQUFJLENBQUN5K0MsaUJBQUwsSUFBMEIsQ0FBM0IsSUFDSyxDQUFDLEdBQUc3cEQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ1osVUFBckMsRUFBaUQsQ0FDdkVudUMsSUFBSSxDQUFDNCtDLGFBQU4sSUFDTyxDQUFDLEdBQUdocUQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ1gsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDM3hCLEtBQUwsQ0FBV2tpQyxjQUFYLENBQTBCNytDLElBQUksQ0FBQzQrQyxhQUEvQixDQUEzQixDQUFsRCxFQUE2SDtJQUFFO0lBQS9ILENBRC9CLEtBRU8sQ0FBQyxHQUFHaHFELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NWLFdBQXRDLEVBQW1ELENBQUMsR0FBR3o1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUEzQixDQUFuRCxFQUF5RztJQUFFO0lBQTNHLENBRi9CLENBRHdFLENBQWpELENBRDdCLElBTUtqb0IsSUFBSSxDQUFDeStDLGlCQUFMLElBQTBCLENBQTNCLElBQ0ssQ0FBQyxHQUFHN3BELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNhLFdBQXJDLEVBQWtELENBQ3hFNXZDLElBQUksQ0FBQzgrQyxRQUFOLElBQ08sQ0FBQyxHQUFHbHFELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NjLFdBQXRDLEVBQW1ELENBQUMsR0FBR2o3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzN4QixLQUFMLENBQVdvaUMsUUFBWCxDQUFvQi8rQyxJQUFJLENBQUM4K0MsUUFBekIsQ0FBM0IsQ0FBbkQsRUFBbUg7SUFBRTtJQUFySCxDQUQvQixLQUVPLENBQUMsR0FBR2xxRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDZSxXQUF0QyxFQUFtRCxDQUFDLEdBQUdsN0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBM0IsQ0FBbkQsRUFBeUc7SUFBRTtJQUEzRyxDQUYvQixDQUR5RSxDQUFsRCxDQUQ3QixJQU1Lam9CLElBQUksQ0FBQ3krQyxpQkFBTCxJQUEwQixDQUEzQixJQUNLLENBQUMsR0FBRzdwRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDZ0IsV0FBckMsRUFBa0QsQ0FDeEUvdkMsSUFBSSxDQUFDZy9DLFVBQU4sSUFDTyxDQUFDLEdBQUdwcUQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2lCLFdBQXRDLEVBQW1ELENBQUMsR0FBR3A3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzN4QixLQUFMLENBQVdzaUMsU0FBWCxDQUFxQmovQyxJQUFJLENBQUNnL0MsVUFBMUIsQ0FBM0IsQ0FBbkQsRUFBc0g7SUFBRTtJQUF4SCxDQUQvQixLQUVPLENBQUMsR0FBR3BxRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDa0IsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHcjdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQTNCLENBQW5ELEVBQXlHO0lBQUU7SUFBM0csQ0FGL0IsQ0FEeUUsQ0FBbEQsQ0FEN0IsS0FNSyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ21CLFdBQXJDLEVBQWtELENBQ3hFbHdDLElBQUksQ0FBQzhFLElBQU4sSUFDTyxDQUFDLEdBQUdsUSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDb0IsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHdjdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCdHZDLElBQUksQ0FBQzhFLElBQWhDLENBQW5ELEVBQTBGO0lBQUU7SUFBNUYsQ0FEL0IsS0FFTyxDQUFDLEdBQUdsUSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDcUIsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHeDdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQTNCLENBQW5ELEVBQXlHO0lBQUU7SUFBM0csQ0FGL0IsQ0FEeUUsQ0FBbEQsQ0FON0IsQ0FuQnlCLENBQTNDLENBRDZDLEVBZ0M1Q2pvQixJQUFJLENBQUM0OUMsVUFBTixJQUNPLENBQUMsR0FBR2hwRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDc0IsV0FBdEMsRUFBbUQsTUFBTSxDQUFDLEdBQUd6N0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUM1cEIsVUFBTCxDQUFnQjFrQixJQUFJLENBQUM0OUMsVUFBckIsQ0FBM0IsQ0FBTixHQUFxRSxJQUF4SCxFQUE4SDtJQUFFO0lBQWhJLENBRC9CLElBRU0sQ0FBQyxHQUFHaHBELEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWxDdUMsQ0FBakQsQ0FORCxFQTBDQyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDdUMsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHMTdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QyxJQUF2QyxFQUE2QyxDQUN6QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9Dd0MsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHMzdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixXQUExQixDQUEzQixDQUExQyxFQUE4RztJQUFFO0lBQWhILENBRDZDLEVBRTdDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxFQUNyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCMXhDLElBQUksQ0FBQ2tSLFNBQTNCLEVBQXNDLFVBQVVBLFNBQVYsRUFBcUJrTixDQUFyQixFQUF3QjtNQUMzSSxPQUFRLENBQUMsR0FBR3hwQixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1FBQ2pFdHZDLEdBQUcsRUFBRTJlLENBRDREO1FBRWpFLFNBQU8sQ0FBQyxHQUFHeHBCLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCO1VBQUUsUUFBUXJ6QixDQUFDLEtBQUtwZSxJQUFJLENBQUNrUixTQUFMLEdBQWlCO1FBQWpDLENBQTFCO01BRjBELENBQXJDLEVBRzdCLENBQ0VBLFNBQVMsQ0FBQ0EsU0FBWCxJQUNPLENBQUMsR0FBR3RjLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN5QixXQUFyQyxFQUFrRCxDQUN4RXQvQixTQUFTLENBQUNoVSxRQUFYLElBQ08sQ0FBQyxHQUFHdEksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQzBCLFdBQXRDLEVBQW1ELE1BQU0sQ0FBQyxHQUFHNzdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsVUFBMUIsQ0FBM0IsQ0FBTixHQUEwRSxJQUExRSxHQUFpRixDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzN4QixLQUFMLENBQVcxZixTQUFYLENBQXFCaVUsU0FBUyxDQUFDaFUsUUFBL0IsQ0FBM0IsQ0FBakYsR0FBd0osR0FBM00sRUFBZ047TUFBRTtNQUFsTixDQUQvQixJQUVNLENBQUMsR0FBR3RJLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQUhtRSxFQUl6RSxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDMkMsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHOTdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCcCtCLFNBQVMsQ0FBQ0EsU0FBckMsQ0FBbkQsRUFBb0c7TUFBRTtNQUF0RyxDQUp5RSxDQUFsRCxDQUQvQixLQU9PLENBQUMsR0FBR3RjLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M0QixXQUF0QyxFQUFtRCxDQUFDLEdBQUcvN0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBM0IsQ0FBbkQsRUFBeUc7TUFBRTtNQUEzRyxDQVAvQixDQURELENBSDZCLEVBWTdCO01BQUU7TUFaMkIsQ0FBaEM7SUFhSCxDQWRnRixDQUFwRCxFQWN6QjtJQUFJO0lBZHFCLENBRFMsRUFBMUMsQ0FGNkMsQ0FBakQsQ0FEeUMsRUFxQnhDam9CLElBQUksQ0FBQ3krQyxpQkFBTCxLQUEyQixJQUEzQixJQUFtQ3orQyxJQUFJLENBQUN5K0MsaUJBQUwsS0FBMkIsSUFBL0QsSUFDTyxDQUFDLEdBQUc3cEQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQzZCLFdBQXBDLEVBQWlELENBQ3hFLENBQUMsR0FBR2g4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsZ0JBQTFCLENBQTNCLENBQTFDLEVBQW1IO0lBQUU7SUFBckgsQ0FEd0UsRUFFeEUsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3JDL3RDLElBQUksQ0FBQzA2QyxjQUFOLElBQ08sQ0FBQyxHQUFHOWxELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7TUFDMUR0dkMsR0FBRyxFQUFFLENBRHFEO01BRTFEZ1MsTUFBTSxFQUFFLFFBRmtEO01BRzFEbmEsSUFBSSxFQUFFMEksSUFBSSxDQUFDMDZDO0lBSCtDLENBQW5DLEVBSXhCLENBQUMsR0FBRzlsRCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnR2QyxJQUFJLENBQUMwNkMsY0FBaEMsQ0FKd0IsRUFJeUI7SUFBRTtJQUozQixFQUk4QzdKLFdBSjlDLENBRC9CLEtBTU8sQ0FBQyxHQUFHajhDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MrQixXQUF0QyxFQUFtRCxDQUFDLEdBQUdsOEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBM0IsQ0FBbkQsRUFBeUc7SUFBRTtJQUEzRyxDQU4vQixDQURzQyxDQUExQyxDQUZ3RSxDQUFqRCxDQUQvQixJQWFNLENBQUMsR0FBR3J6QixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FsQ21DLENBQTdDLENBRDhDLENBQWxELENBMUNELENBSDZCLEVBbUY3QjtJQUFFO0lBbkYyQixDQUFoQztFQW9GSCxDQXJGdUYsQ0FBcEQsRUFxRmhDO0VBQUk7RUFyRjRCLENBQXBDO0FBc0ZIOztBQUNEejZDLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDMUphOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUVudUMsR0FBRyxFQUFFO0FBQVAsQ0FBakI7QUFDQSxJQUFJb3VDLFVBQVUsR0FBRztFQUNicHVDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSXF1QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRXZ1QyxHQUFHLEVBQUU7QUFBUCxDQUFqQjtBQUNBLElBQUl3dUMsVUFBVSxHQUFHO0VBQUV4dUMsR0FBRyxFQUFFO0FBQVAsQ0FBakI7QUFDQSxJQUFJeXVDLFVBQVUsR0FBRztFQUNienVDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSTB1QyxVQUFVLEdBQUc7RUFBRTF1QyxHQUFHLEVBQUU7QUFBUCxDQUFqQjtBQUNBLElBQUkydUMsVUFBVSxHQUFHO0VBQUUzdUMsR0FBRyxFQUFFO0FBQVAsQ0FBakI7QUFDQSxJQUFJNHVDLFdBQVcsR0FBRztFQUNkNXVDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSW13QyxXQUFXLEdBQUc7RUFBRW53QyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUlvd0MsV0FBVyxHQUFHO0VBQUVwd0MsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJcXdDLFdBQVcsR0FBRztFQUNkcndDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSXN3QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRXZ3QyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUl3d0MsV0FBVyxHQUFHLENBQUMsTUFBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkendDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSTB3QyxXQUFXLEdBQUc7RUFDZDF3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUkyd0MsV0FBVyxHQUFHO0VBQ2Qzd0MsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJNHdDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkN3dDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCOztBQUlBLFNBQVNpdUMsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxPQUFRLENBQUMsR0FBRy81QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JwRCxJQUFJLENBQUNuM0MsSUFBM0IsRUFBaUMsVUFBVTZJLElBQVYsRUFBZ0JQLEdBQWhCLEVBQXFCO0lBQzFJLE9BQVEsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqRXR2QyxHQUFHLEVBQUVBLEdBRDREO01BRWpFLFNBQU8sQ0FBQyxHQUFHN0ssS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxpQkFBRCxFQUFvQjtRQUFFLFFBQVExMUMsTUFBTSxDQUFDMEQsR0FBRCxDQUFOLEtBQWdCNnVDLElBQUksQ0FBQ24zQyxJQUFMLENBQVU0RCxNQUFWLEdBQW1CO01BQTdDLENBQXBCLENBQTFCO0lBRjBELENBQXJDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSixVQUFyQyxFQUFpRCxDQUM1QzN0QyxJQUFJLENBQUNrL0MsY0FBTixJQUNPLENBQUMsR0FBR3RxRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDbkIsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDM3hCLEtBQUwsQ0FBV3dpQyxhQUFYLENBQXlCbi9DLElBQUksQ0FBQ2svQyxjQUE5QixDQUEzQixDQUFsRCxFQUE2SDtJQUFFO0lBQS9ILENBRC9CLEtBRU8sQ0FBQyxHQUFHdHFELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NsQixVQUF0QyxFQUFrRCxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsQ0FBdUIsWUFBdkIsQ0FBM0IsQ0FBbEQsRUFBb0g7SUFBRTtJQUF0SCxDQUYvQixDQUQ2QyxDQUFqRCxDQURELEVBTUMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0QsVUFBckMsRUFBaUQsQ0FDNUM5dEMsSUFBSSxDQUFDay9DLGNBQUwsS0FBd0IsR0FBeEIsSUFBK0JsL0MsSUFBSSxDQUFDay9DLGNBQUwsS0FBd0IsSUFBeEQsSUFDTyxDQUFDLEdBQUd0cUQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2YsVUFBdEMsRUFBa0QsQ0FDeEVodUMsSUFBSSxDQUFDby9DLFFBQU4sSUFDTyxDQUFDLEdBQUd4cUQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2QsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCdHZDLElBQUksQ0FBQ28vQyxRQUFoQyxDQUFsRCxFQUE2RjtJQUFFO0lBQS9GLENBRC9CLEtBRU8sQ0FBQyxHQUFHeHFELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NiLFVBQXRDLEVBQWtELENBQUMsR0FBR3Q1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUEzQixDQUFsRCxFQUF3RztJQUFFO0lBQTFHLENBRi9CLENBRHlFLENBQWxELENBRC9CLElBTU0sQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQVB1QyxFQVE1Q252QyxJQUFJLENBQUNrL0MsY0FBTCxLQUF3QixHQUF6QixJQUNPLENBQUMsR0FBR3RxRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDWixVQUF0QyxFQUFrRCxDQUN4RW51QyxJQUFJLENBQUNxL0MsY0FBTixJQUNPLENBQUMsR0FBR3pxRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDWCxVQUF0QyxFQUFrRCxDQUFDLEdBQUd4NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUMzeEIsS0FBTCxDQUFXb2lDLFFBQVgsQ0FBb0IvK0MsSUFBSSxDQUFDcS9DLGNBQXpCLENBQTNCLENBQWxELEVBQXdIO0lBQUU7SUFBMUgsQ0FEL0IsS0FFTyxDQUFDLEdBQUd6cUQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ1YsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHejVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQTNCLENBQW5ELEVBQXlHO0lBQUU7SUFBM0csQ0FGL0IsQ0FEeUUsQ0FBbEQsQ0FEL0IsSUFNTSxDQUFDLEdBQUdyekIsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBZHVDLEVBZTVDbnZDLElBQUksQ0FBQ2svQyxjQUFMLEtBQXdCLEdBQXpCLElBQ08sQ0FBQyxHQUFHdHFELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NhLFdBQXRDLEVBQW1ELENBQ3pFNXZDLElBQUksQ0FBQ3MvQyxnQkFBTixJQUNPLENBQUMsR0FBRzFxRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDYyxXQUF0QyxFQUFtRCxDQUFDLEdBQUdqN0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUMzeEIsS0FBTCxDQUFXc2lDLFNBQVgsQ0FBcUJqL0MsSUFBSSxDQUFDcy9DLGdCQUExQixDQUEzQixDQUFuRCxFQUE0SDtJQUFFO0lBQTlILENBRC9CLEtBRU8sQ0FBQyxHQUFHMXFELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NlLFdBQXRDLEVBQW1ELENBQUMsR0FBR2w3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUEzQixDQUFuRCxFQUF5RztJQUFFO0lBQTNHLENBRi9CLENBRDBFLENBQW5ELENBRC9CLElBTU0sQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQXJCdUMsQ0FBakQsQ0FORCxFQTZCQyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDZ0MsV0FBdkMsRUFBb0QsQ0FDaEQsQ0FBQyxHQUFHbjdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QyxJQUF2QyxFQUE2QyxDQUN4Qy90QyxJQUFJLENBQUNrL0MsY0FBTCxLQUF3QixJQUF6QixJQUNPLENBQUMsR0FBR3RxRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DaUIsV0FBcEMsRUFBaUQsQ0FDeEUsQ0FBQyxHQUFHcDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixnQkFBMUIsQ0FBM0IsQ0FBMUMsRUFBbUg7SUFBRTtJQUFySCxDQUR3RSxFQUV4RSxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDckMvdEMsSUFBSSxDQUFDMDZDLGNBQU4sSUFDTyxDQUFDLEdBQUc5bEQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztNQUMxRHR2QyxHQUFHLEVBQUUsQ0FEcUQ7TUFFMURnUyxNQUFNLEVBQUUsUUFGa0Q7TUFHMURuYSxJQUFJLEVBQUUwSSxJQUFJLENBQUMwNkM7SUFIK0MsQ0FBbkMsRUFJeEIsQ0FBQyxHQUFHOWxELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCdHZDLElBQUksQ0FBQzA2QyxjQUFoQyxDQUp3QixFQUl5QjtJQUFFO0lBSjNCLEVBSThDekssV0FKOUMsQ0FEL0IsS0FNTyxDQUFDLEdBQUdyN0MsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ21CLFdBQXRDLEVBQW1ELENBQUMsR0FBR3Q3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUEzQixDQUFuRCxFQUF5RztJQUFFO0lBQTNHLENBTi9CLENBRHNDLENBQTFDLENBRndFLENBQWpELENBRC9CLElBYU0sQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWRtQyxFQWV6QyxDQUFDbnZDLElBQUksS0FBSyxJQUFULElBQWlCQSxJQUFJLEtBQUssS0FBSyxDQUEvQixHQUFtQyxLQUFLLENBQXhDLEdBQTRDQSxJQUFJLENBQUNrUixTQUFsRCxLQUNPLENBQUMsR0FBR3RjLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7TUFDM0R0dkMsR0FBRyxFQUFFLENBRHNEO01BRTNELFNBQU8sQ0FBQyxHQUFHN0ssS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxXQUFELEVBQWM7UUFBRSxRQUFRbkQsSUFBSSxDQUFDbHdCLENBQUwsS0FBV3BlLElBQUksQ0FBQ2tSLFNBQUwsQ0FBZW5XLE1BQWYsR0FBd0I7TUFBN0MsQ0FBZCxDQUExQjtJQUZvRCxDQUFwQyxFQUd4QixDQUNDLENBQUMsR0FBR25HLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixXQUExQixDQUEzQixDQUExQyxFQUE4RztJQUFFO0lBQWhILENBREQsRUFFQyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsRUFDckMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQjF4QyxJQUFJLENBQUNrUixTQUEzQixFQUFzQyxVQUFVQSxTQUFWLEVBQXFCa04sQ0FBckIsRUFBd0I7TUFDM0ksT0FBUSxDQUFDLEdBQUd4cEIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztRQUFFdHZDLEdBQUcsRUFBRTJlO01BQVAsQ0FBckMsRUFBaUQsQ0FDNUVsTixTQUFTLENBQUNBLFNBQVgsSUFDTyxDQUFDLEdBQUd0YyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDb0IsV0FBckMsRUFBa0QsQ0FDeEVqL0IsU0FBUyxDQUFDaFUsUUFBWCxJQUNPLENBQUMsR0FBR3RJLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NxQixXQUF0QyxFQUFtRCxNQUFNLENBQUMsR0FBR3g3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFVBQTFCLENBQTNCLENBQU4sR0FBMEUsSUFBMUUsR0FBaUYsQ0FBQyxHQUFHOUksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUMzeEIsS0FBTCxDQUFXMWYsU0FBWCxDQUFxQmlVLFNBQVMsQ0FBQ2hVLFFBQS9CLENBQTNCLENBQWpGLEdBQXdKLEdBQTNNLEVBQWdOO01BQUU7TUFBbE4sQ0FEL0IsSUFFTSxDQUFDLEdBQUd0SSxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FIbUUsRUFJekUsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ3NDLFdBQXRDLEVBQW1ELENBQUMsR0FBR3o3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnArQixTQUFTLENBQUNBLFNBQXJDLENBQW5ELEVBQW9HO01BQUU7TUFBdEcsQ0FKeUUsQ0FBbEQsQ0FEL0IsS0FPTyxDQUFDLEdBQUd0YyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDdUIsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHMTdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQTNCLENBQW5ELEVBQXlHO01BQUU7TUFBM0csQ0FQL0IsQ0FENkUsQ0FBakQsQ0FBaEM7SUFVSCxDQVhnRixDQUFwRCxFQVd6QjtJQUFJO0lBWHFCLENBRFMsRUFBMUMsQ0FGRCxDQUh3QixFQW1CeEI7SUFBRTtJQW5Cc0IsQ0FEL0IsSUFxQk0sQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQXBDbUMsQ0FBN0MsQ0FEZ0QsQ0FBcEQsQ0E3QkQsQ0FINkIsRUF3RTdCO0lBQUU7SUF4RTJCLENBQWhDO0VBeUVILENBMUV1RixDQUFwRCxFQTBFaEM7RUFBSTtFQTFFNEIsQ0FBcEM7QUEyRUg7O0FBQ0R6NkMsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUM5SGE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFDYmx1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUltdUMsVUFBVSxHQUFHO0VBQ2JudUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJb3VDLFVBQVUsR0FBRztFQUNicHVDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSXF1QyxVQUFVLEdBQUc7RUFDYnJ1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUl1dUMsVUFBVSxHQUFHO0VBQ2J2dUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7O0FBSUEsU0FBU2l1QyxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELE9BQVEsQ0FBQyxHQUFHLzVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnBELElBQUksQ0FBQ24zQyxJQUFMLENBQVVndUIsT0FBaEMsRUFBeUMsVUFBVW5sQixJQUFWLEVBQWdCaUUsQ0FBaEIsRUFBbUI7SUFDaEosT0FBUSxDQUFDLEdBQUdyUCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pFdHZDLEdBQUcsRUFBRXdFLENBRDREO01BRWpFLFNBQU87SUFGMEQsQ0FBckMsRUFHN0IsQ0FDRWpFLElBQUksQ0FBQ2tSLFNBQU4sSUFDTyxDQUFDLEdBQUd0YyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcEIsVUFBckMsRUFBaUQsQ0FDdkUzdEMsSUFBSSxDQUFDOUMsUUFBTixJQUNPLENBQUMsR0FBR3RJLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NuQixVQUF0QyxFQUFrRCxPQUFPLENBQUMsR0FBR2g1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFVBQTFCLENBQTNCLENBQVAsR0FBMkUsSUFBM0UsR0FBa0YsQ0FBQyxHQUFHOUksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUMzeEIsS0FBTCxDQUFXMWYsU0FBWCxDQUFxQitDLElBQUksQ0FBQzlDLFFBQTFCLENBQTNCLENBQWxGLEdBQW9KLElBQXRNLEVBQTRNO0lBQUU7SUFBOU0sQ0FEL0IsSUFFTSxDQUFDLEdBQUd0SSxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FIa0UsRUFJdkVudkMsSUFBSSxDQUFDa1IsU0FBTixJQUNPLENBQUMsR0FBR3RjLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NsQixVQUF0QyxFQUFrRCxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ0dkMsSUFBSSxDQUFDa1IsU0FBaEMsQ0FBbEQsRUFBOEY7SUFBRTtJQUFoRyxDQUQvQixJQUVNLENBQUMsR0FBR3RjLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQU5rRSxDQUFqRCxDQUQvQixLQVNPLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDakIsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLENBQXVCLFNBQXZCLEVBQWtDLGNBQWxDLENBQTNCLENBQWxELEVBQWlJO0lBQUU7SUFBbkksQ0FUL0IsQ0FERCxFQVdFaGtCLENBQUMsS0FBS3FxQyxJQUFJLENBQUNuM0MsSUFBTCxDQUFVZ3VCLE9BQVYsQ0FBa0JwcUIsTUFBbEIsR0FBMkIsQ0FBbEMsSUFDTyxDQUFDLEdBQUduRyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDZixVQUFyQyxDQUQvQixJQUVNLENBQUMsR0FBR3A1QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FiUCxDQUg2QixDQUFoQztFQWtCSCxDQW5CdUYsQ0FBcEQsRUFtQmhDO0VBQUk7RUFuQjRCLENBQXBDO0FBb0JIOztBQUNEejZDLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDOUNhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCOztBQUNBLFNBQVNGLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSW1HLGNBQWMsR0FBRyxDQUFDLEdBQUdsZ0QsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLEtBQTVCLENBQXJCOztFQUNBLE9BQVEsQ0FBQyxHQUFHajZDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnBELElBQUksQ0FBQ24zQyxJQUEzQixFQUFpQyxVQUFVb29ELEtBQVYsRUFBaUJ2bEQsQ0FBakIsRUFBb0I7SUFDekksSUFBSXpFLEVBQUo7O0lBQ0EsT0FBUSxDQUFDLEdBQUdYLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7TUFDakV0dkMsR0FBRyxFQUFFekYsQ0FENEQ7TUFFakUsU0FBTyxDQUFDLEdBQUdwRixLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLEVBQUQsRUFBSztRQUFFLFFBQVExMUMsTUFBTSxDQUFDL0IsQ0FBRCxDQUFOLEtBQWNzMEMsSUFBSSxDQUFDbjNDLElBQUwsQ0FBVTRELE1BQVYsR0FBbUI7TUFBM0MsQ0FBTCxDQUExQjtJQUYwRCxDQUFyQyxFQUc3QixDQUNDLENBQUMsR0FBR25HLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0osVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQixDQUFDLzVDLEVBQUUsR0FBRys0QyxJQUFJLENBQUMzeEIsS0FBTCxDQUFXNmlDLGVBQVgsQ0FBMkJELEtBQUssQ0FBQzd2QixXQUFOLENBQWtCK3ZCLGdCQUFsQixDQUFtQyxDQUFuQyxFQUFzQ0MscUJBQWpFLENBQU4sTUFBbUcsSUFBbkcsSUFBMkducUQsRUFBRSxLQUFLLEtBQUssQ0FBdkgsR0FBMkhBLEVBQTNILEdBQWdJKzRDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixDQUF1QixrQkFBdkIsQ0FBM0osSUFBeU0sR0FBcE8sRUFBeU87SUFBRTtJQUEzTyxDQUQ2QyxFQUU3QyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUI0RixjQUF2QixFQUF1QztNQUNuQ2h3QyxJQUFJLEVBQUV3cEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZSthLE1BQWYsQ0FBc0IsTUFBdEIsQ0FENkI7TUFFbkNqUyxJQUFJLEVBQUUsTUFGNkI7TUFHbkM1TixJQUFJLEVBQUUsYUFBYWIsTUFBYixDQUFvQmdwRCxLQUFLLENBQUMzN0MsV0FBMUIsRUFBdUMsZUFBdkMsRUFBd0RyTixNQUF4RCxDQUErRGdwRCxLQUFLLENBQUNuaUQsRUFBckUsRUFBeUUsT0FBekU7SUFINkIsQ0FBdkMsRUFJRyxJQUpILEVBSVM7SUFBRTtJQUpYLEVBSXdCLENBQUMsTUFBRCxFQUFTLE1BQVQsQ0FKeEIsQ0FENkMsQ0FBakQsQ0FGNkMsQ0FBakQsQ0FERCxHQVdFLENBQUMsR0FBR3hJLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQjZOLEtBQUssQ0FBQzd2QixXQUFOLENBQWtCLzZCLEtBQXhDLEVBQStDLFVBQVVnckQsR0FBVixFQUFlamxELENBQWYsRUFBa0I7TUFDOUksT0FBUSxDQUFDLEdBQUc5RixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1FBQ2pFdHZDLEdBQUcsRUFBRS9FLENBRDREO1FBRWpFLFNBQU8sQ0FBQyxHQUFHOUYsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxxQkFBRCxFQUF3QjtVQUFFLFFBQVExMUMsTUFBTSxDQUFDL0IsQ0FBRCxDQUFOLEtBQWN1bEQsS0FBSyxDQUFDN3ZCLFdBQU4sQ0FBa0IvNkIsS0FBbEIsQ0FBd0JvRyxNQUF4QixHQUFpQztRQUF6RCxDQUF4QixDQUExQjtNQUYwRCxDQUFyQyxFQUc3QixDQUFDLEdBQUduRyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnFRLEdBQUcsQ0FBQ2hELE1BQUosR0FDeEI1Z0QsTUFBTSxDQUFDNGpELEdBQUcsQ0FBQ2hELE1BQUwsQ0FBTixDQUFtQkMsY0FBbkIsRUFEd0IsR0FFeEJ0TyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsQ0FBdUIsU0FBdkIsRUFBa0MsY0FBbEMsQ0FGSCxJQUV3RCxHQUZ4RCxHQUU4RCxDQUFDLEdBQUdyekIsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJxUSxHQUFHLENBQUM5QyxRQUEvQixDQUY5RCxHQUV5RyxHQUZ6RyxHQUUrRyxDQUFDLEdBQUdqb0QsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUM3cEIsVUFBTCxDQUFnQms3QixHQUFHLENBQUM5MkMsSUFBcEIsRUFBMEIsZUFBMUIsSUFDdkksS0FBS3RTLE1BQUwsQ0FBWSszQyxJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixXQUExQixFQUF1QzRRLFdBQXZDLEVBQVosSUFDRSxHQURGLEdBRUVnZ0MsSUFBSSxDQUFDN3BCLFVBQUwsQ0FBZ0JrN0IsR0FBRyxDQUFDOTJDLElBQXBCLEVBQTBCLGVBQTFCLENBSHFJLEdBSXZJLEVBSjRHLENBTGxGLEVBU3JCO01BQUU7TUFUbUIsQ0FBaEM7SUFVSCxDQVhnRixDQUFwRCxFQVd6QjtJQUFJO0lBWHFCLENBWDlCLEVBSDZCLEVBMEI3QjtJQUFFO0lBMUIyQixDQUFoQztFQTJCSCxDQTdCdUYsQ0FBcEQsRUE2QmhDO0VBQUk7RUE3QjRCLENBQXBDO0FBOEJIOztBQUNEblUsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUN2Q2E7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUcsQ0FBQyxNQUFELENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUV6dUMsR0FBRyxFQUFFO0FBQVAsQ0FBakI7QUFDQSxJQUFJMHVDLFVBQVUsR0FBRyxDQUFDLE1BQUQsQ0FBakI7O0FBQ0EsSUFBSUMsVUFBVSxHQUFHLGFBQWMsQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLGNBQTNCLENBQS9COztBQUNBLElBQUl6RCxXQUFXLEdBQUc7RUFBRTV1QyxHQUFHLEVBQUU7QUFBUCxDQUFsQjs7QUFDQSxJQUFJbXdDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBR2g3QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixVQUEzQixDQUFoQzs7QUFDQSxJQUFJakMsV0FBVyxHQUFHLENBQ2RELFdBRGMsQ0FBbEI7QUFHQSxJQUFJRSxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxNQUFELENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUxd0MsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJMndDLFdBQVcsR0FBRyxDQUFDLE1BQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRTV3QyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUk2d0MsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLElBQUlDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBRzM3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsSUFBM0MsRUFBaUQsQ0FBQztBQUFFO0FBQXBELENBQWhDOztBQUNBLElBQUl5QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRXh6QyxFQUFFLEVBQUU7QUFBTixDQUFsQjtBQUNBLElBQUl5ekMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLElBQUlDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBR3I4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7RUFBRSxTQUFPO0FBQVQsQ0FBckMsRUFBaUcsSUFBakcsRUFBdUcsQ0FBQztBQUFFO0FBQTFHLENBQWhDOztBQUNBLElBQUltRCxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsU0FBU3hELE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSUMsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHaDZDLEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixTQUE1QixDQUF6Qjs7RUFDQSxJQUFJb0ksZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHcmlELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixPQUE1QixDQUF2Qjs7RUFDQSxJQUFJaUcsY0FBYyxHQUFHLENBQUMsR0FBR2xnRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsS0FBNUIsQ0FBckI7O0VBQ0EsSUFBSTBKLG9CQUFvQixHQUFHLENBQUMsR0FBRzNqRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsV0FBNUIsQ0FBM0I7O0VBQ0EsSUFBSStRLHVCQUF1QixHQUFHLENBQUMsR0FBR2hyRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsY0FBNUIsQ0FBOUI7O0VBQ0EsSUFBSWdSLG9CQUFvQixHQUFHLENBQUMsR0FBR2pyRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsV0FBNUIsQ0FBM0I7O0VBQ0EsSUFBSWlSLGtCQUFrQixHQUFHLENBQUMsR0FBR2xyRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsU0FBNUIsQ0FBekI7O0VBQ0EsSUFBSWtSLDRCQUE0QixHQUFHLENBQUMsR0FBR25yRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsbUJBQTVCLENBQW5DOztFQUNBLElBQUltUixzQkFBc0IsR0FBRyxDQUFDLEdBQUdwckQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLGFBQTVCLENBQTdCOztFQUNBLElBQUlvUixvQkFBb0IsR0FBRyxDQUFDLEdBQUdyckQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFdBQTVCLENBQTNCOztFQUNBLElBQUlxUixtQkFBbUIsR0FBRyxDQUFDLEdBQUd0ckQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFVBQTVCLENBQTFCOztFQUNBLElBQUlzUixpQkFBaUIsR0FBRyxDQUFDLEdBQUd2ckQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFFBQTVCLENBQXhCOztFQUNBLElBQUl1Uix1QkFBdUIsR0FBRyxDQUFDLEdBQUd4ckQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLGNBQTVCLENBQTlCOztFQUNBLElBQUlpSix3QkFBd0IsR0FBRyxDQUFDLEdBQUdsakQsS0FBSyxDQUFDaWpELGdCQUFWLEVBQTRCLGVBQTVCLENBQS9COztFQUNBLE9BQVEsQ0FBQyxHQUFHampELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNwQixVQUFyQyxFQUFpRCxDQUM1RVcsSUFBSSxDQUFDN3hDLFdBQU4sSUFDTyxDQUFDLEdBQUc3SCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQzVEdHZDLEdBQUcsRUFBRSxDQUR1RDtJQUU1RCxTQUFPLG1FQUZxRDtJQUc1RHd2QyxPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUNuQixZQUFZO01BQ1JELElBQUksQ0FBQzd4QyxXQUFMLEdBQW1CLENBQUM2eEMsSUFBSSxDQUFDN3hDLFdBQXpCO0lBQ0gsQ0FISTtFQUhtRCxDQUFyQyxDQUQvQixJQVNNLENBQUMsR0FBRzdILEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQVZ1RSxFQVc1RWIsSUFBSSxDQUFDN3hDLFdBQU4sSUFDTyxDQUFDLEdBQUc3SCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQzVEdHZDLEdBQUcsRUFBRSxDQUR1RDtJQUU1RCxTQUFPLDhCQUZxRDtJQUc1RHd2QyxPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUNuQixZQUFZO01BQ1JELElBQUksQ0FBQzd4QyxXQUFMLEdBQW1CLENBQUM2eEMsSUFBSSxDQUFDN3hDLFdBQXpCO0lBQ0gsQ0FISTtFQUhtRCxDQUFyQyxFQU94QixDQUNDLENBQUMsR0FBRzdILEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkM1cEMsSUFBSSxFQUFFLFNBRGlDO0lBRXZDLFNBQU87RUFGZ0MsQ0FBM0MsQ0FERCxDQVB3QixDQUQvQixJQWNNLENBQUMsR0FBR3BRLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQXpCdUUsRUEwQjdFLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QnFKLG9CQUF2QixFQUE2QztJQUN6QyxtQkFBbUJqSyxJQUFJLENBQUMvc0MsY0FEaUI7SUFFekN1TCxLQUFLLEVBQUUsR0FBR3ZXLE1BQUgsQ0FBVSszQyxJQUFJLENBQUN4bkIsY0FBZixFQUErQixLQUEvQixFQUFzQ3Z3QixNQUF0QyxDQUE2QyszQyxJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixrQkFBMUIsQ0FBN0MsQ0FGa0M7SUFHekMsYUFBYSxHQUFHbkgsTUFBSCxDQUFVKzNDLElBQUksQ0FBQ3puQixhQUFmO0VBSDRCLENBQTdDLEVBSUc7SUFDQyxXQUFTLENBQUMsR0FBR2p5QixLQUFLLENBQUM0NkMsT0FBVixFQUFtQixZQUFZO01BQUUsT0FBTyxDQUM3QyxDQUFDLEdBQUc1NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSCxVQUFyQyxFQUFpRCxDQUM1Q1UsSUFBSSxDQUFDOWlDLFNBQUwsQ0FBZTFJLFVBQWhCLElBQ08sQ0FBQyxHQUFHbE8sS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCMEgsZ0JBQXZCLEVBQXlDO1FBQ2hFeDNDLEdBQUcsRUFBRSxDQUQyRDtRQUVoRXJCLE9BQU8sRUFBRWt3QyxJQUFJLENBQUM5aUMsU0FBTCxDQUFlcE4sT0FGd0M7UUFHaEU1QyxJQUFJLEVBQUU4eUMsSUFBSSxDQUFDOWlDLFNBQUwsQ0FBZWhRLElBSDJDO1FBSWhFLFNBQU87TUFKeUQsQ0FBekMsRUFLeEIsSUFMd0IsRUFLbEI7TUFBRTtNQUxnQixFQUtILENBQUMsU0FBRCxFQUFZLE1BQVosQ0FMRyxDQUQvQixJQU9NLENBQUMsR0FBRzVHLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQVJ1QyxFQVM3QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLCtDQUE5QixDQVQ2QyxFQVU3QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUI0RixjQUF2QixFQUF1QztRQUNuQ2h3QyxJQUFJLEVBQUV3cEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZSthLE1BQWYsQ0FBc0IsYUFBdEIsRUFBcUMsa0JBQXJDLENBRDZCO1FBRW5DalMsSUFBSSxFQUFFLEtBRjZCO1FBR25DNU4sSUFBSSxFQUFFLEdBQUdiLE1BQUgsQ0FBVSszQyxJQUFJLENBQUN6bkIsYUFBZixFQUE4QixTQUE5QixDQUg2QjtRQUluQyxTQUFPO01BSjRCLENBQXZDLEVBS0csSUFMSCxFQUtTO01BQUU7TUFMWCxFQUt3QixDQUFDLE1BQUQsRUFBUyxNQUFULENBTHhCLENBVjZDLEVBZ0I3QyxDQUFDLEdBQUdqeUIsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUI0RixjQUF2QixFQUF1QztRQUNuQ2h3QyxJQUFJLEVBQUV3cEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZSthLE1BQWYsQ0FBc0IsYUFBdEIsRUFBcUMsZUFBckMsQ0FENkI7UUFFbkNqUyxJQUFJLEVBQUUsS0FGNkI7UUFHbkM1TixJQUFJLEVBQUUsY0FBY2IsTUFBZCxDQUFxQiszQyxJQUFJLENBQUN0b0IsU0FBTCxDQUFlNW9CLEVBQXBDLEVBQXdDLGdCQUF4QyxDQUg2QjtRQUluQyxTQUFPO01BSjRCLENBQXZDLEVBS0csSUFMSCxFQUtTO01BQUU7TUFMWCxFQUt3QixDQUFDLE1BQUQsRUFBUyxNQUFULENBTHhCLENBaEI2QyxFQXNCN0MsQ0FBQyxHQUFHeEksS0FBSyxDQUFDczZDLFdBQVYsRUFBdUI0RixjQUF2QixFQUF1QztRQUNuQ2h3QyxJQUFJLEVBQUV3cEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZSthLE1BQWYsQ0FBc0IsY0FBdEIsRUFBc0MsZUFBdEMsQ0FENkI7UUFFbkM3ZixJQUFJLEVBQUUsR0FBR2IsTUFBSCxDQUFVKzNDLElBQUksQ0FBQ3puQixhQUFmLEVBQThCLEdBQTlCLEVBQW1DdHdCLE1BQW5DLENBQTBDKzNDLElBQUksQ0FBQ3RvQixTQUFMLENBQWU1b0IsRUFBekQsRUFBNkQsT0FBN0Q7TUFGNkIsQ0FBdkMsRUFHRyxJQUhILEVBR1M7TUFBRTtNQUhYLEVBR3dCLENBQUMsTUFBRCxFQUFTLE1BQVQsQ0FIeEIsQ0F0QjZDLENBQWpELENBRDZDLENBQVA7SUE0QnRDLENBNUJLLENBRFY7SUE4QkN2RCxDQUFDLEVBQUU7SUFBRTs7RUE5Qk4sQ0FKSCxFQW1DRztFQUFFO0VBbkNMLEVBbUNrQixDQUFDLGlCQUFELEVBQW9CLE9BQXBCLEVBQTZCLFdBQTdCLENBbkNsQixDQTFCNkUsRUE4RDdFLENBQUMsR0FBR2pGLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0YsVUFBckMsRUFBaUQsd0JBQXdCLENBQUMsR0FBR2o1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3RvQixTQUFMLENBQWVxNkIsY0FBMUMsQ0FBekUsRUFBb0k7RUFBRTtFQUF0SSxDQTlENkUsRUErRDdFLENBQUMsR0FBR3pyRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFDakMsU0FBTyxtQkFEMEI7SUFFakNrQixPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUNuQixZQUFZO01BQ1JELElBQUksQ0FBQzd4QyxXQUFMLEdBQW1CLENBQUM2eEMsSUFBSSxDQUFDN3hDLFdBQXpCO0lBQ0gsQ0FISTtFQUZ3QixDQUFyQyxFQU1HLENBQ0MsQ0FBQyxHQUFHN0gsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QzVwQyxJQUFJLEVBQUUsU0FEaUM7SUFFdkMsU0FBTztFQUZnQyxDQUEzQyxDQURELENBTkgsQ0EvRDZFLEVBMkU3RSxDQUFDLEdBQUdwUSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUM7SUFDbkMsU0FBTyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FDN0JuRCxJQUFJLENBQUM3eEMsV0FBTCxHQUNNLElBQUlsRyxNQUFKLENBQVcrM0MsSUFBSSxDQUFDN3dCLFlBQUwsR0FDUCxtQ0FETyxHQUVQLGdCQUZKLEVBRXNCLHFCQUZ0QixDQUROLEdBSU0sS0FBS2xuQixNQUFMLENBQVkrM0MsSUFBSSxDQUFDN3dCLFlBQUwsR0FDUixtQ0FEUSxHQUVSLGdCQUZKLEVBRXNCLHNCQUZ0QixDQUx1QixFQVE3QixnR0FSNkIsQ0FBMUI7RUFENEIsQ0FBdkMsRUFXRyxDQUNDLENBQUMsR0FBRzdvQixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNELFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2w1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NDLFVBQXBDLEVBQWdELEVBQzNDLENBQUMsR0FBR3A1QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JwRCxJQUFJLENBQUNsb0IsYUFBM0IsRUFBMEMsVUFBVWs2QixLQUFWLEVBQWlCeHdCLENBQWpCLEVBQW9CeXdCLEVBQXBCLEVBQXdCO0lBQy9JLE9BQVEsQ0FBQyxHQUFHM3JELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7TUFBRXR2QyxHQUFHLEVBQUU4Z0Q7SUFBUCxDQUFwQyxFQUFpRCxDQUM3RSxDQUFDLEdBQUczckQsS0FBSyxDQUFDbTlDLGNBQVYsR0FBMkIsQ0FBQyxHQUFHbjlDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7TUFDbEZ6M0MsSUFBSSxFQUFFLElBQUlmLE1BQUosQ0FBV3dPLE1BQU0sQ0FBQytxQixDQUFELENBQWpCLENBRDRFO01BRWxGLFNBQU8sQ0FBQyxHQUFHbDdCLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCbkQsSUFBSSxDQUFDbm9CLFdBQS9CO0lBRjJFLENBQW5DLEVBR2hELENBQ0MsQ0FBQyxHQUFHdnhCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4Qiw4REFBOUIsQ0FERCxFQUVDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ4ZixDQUEzQixDQUEzQixFQUEwRDtJQUFFO0lBQTVELENBRkQsQ0FIZ0QsRUFNaEQ7SUFBRztJQU42QyxFQU16Qm1lLFVBTnlCLENBQW5ELEdBTXdDLENBQ3BDLENBQUM2Six3QkFBRCxDQURvQyxDQU54QyxDQUQ2RSxDQUFqRCxDQUFoQztFQVdILENBWmdGLENBQXBELEVBWXpCO0VBQUk7RUFacUIsQ0FEZSxHQWMzQ3hKLElBQUksQ0FBQ2pvQixVQUFMLENBQWdCdHJCLE1BQWhCLEtBQTJCLENBQTVCLElBQ08sQ0FBQyxHQUFHbkcsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ2IsVUFBcEMsRUFBZ0QsQ0FDdkUsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztJQUMvQnoyQyxJQUFJLEVBQUUsY0FBY2YsTUFBZCxDQUFxQiszQyxJQUFJLENBQUN0b0IsU0FBTCxDQUFlNW9CLEVBQXBDLEVBQXdDLGdCQUF4QyxDQUR5QjtJQUUvQixTQUFPLENBQUMsR0FBR3hJLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUNuRCxJQUFJLENBQUNub0IsV0FBTixFQUFtQixrQ0FBbkIsQ0FBMUI7RUFGd0IsQ0FBbkMsRUFHRyxDQUNDLENBQUMsR0FBR3Z4QixLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDNXBDLElBQUksRUFBRSxLQURpQztJQUV2QyxTQUFPO0VBRmdDLENBQTNDLENBREQsRUFLQ29wQyxVQUxELENBSEgsRUFTRztFQUFHO0VBVE4sRUFTMEJELFVBVDFCLENBRHVFLENBQWhELENBRC9CLEtBYU8sQ0FBQyxHQUFHdjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NWLFdBQXBDLEVBQWlELENBQ3hFLENBQUMsR0FBR3o1QyxLQUFLLENBQUNtOUMsY0FBVixHQUEyQixDQUFDLEdBQUduOUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztJQUNsRnozQyxJQUFJLEVBQUUsU0FENEU7SUFFbEYsU0FBTyxDQUFDLEdBQUcxQyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQm5ELElBQUksQ0FBQ25vQixXQUEvQjtFQUYyRSxDQUFuQyxFQUdoRDBwQixXQUhnRCxFQUduQztFQUFFO0VBSGlDLENBQW5ELEdBR2lDLENBQzdCLENBQUNpSSx3QkFBRCxDQUQ2QixDQUhqQyxDQUR3RSxDQUFqRCxDQWIvQixDQWQ0QyxDQUFoRCxDQUQ2QyxDQUFqRCxDQURELENBWEgsRUFrREc7RUFBRTtFQWxETCxDQTNFNkUsRUE4SDdFLENBQUMsR0FBR2xqRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMrQixXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdsN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDZ0MsV0FBdkMsRUFBb0QsQ0FDaEQsQ0FBQyxHQUFHbjdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2lDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3A3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NrQyxXQUFwQyxFQUFpRCxFQUM1QyxDQUFDLEdBQUdyN0MsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCcEQsSUFBSSxDQUFDbG9CLGFBQTNCLEVBQTBDLFVBQVVrNkIsS0FBVixFQUFpQnh3QixDQUFqQixFQUFvQnl3QixFQUFwQixFQUF3QjtJQUMvSSxJQUFJaHJELEVBQUo7O0lBQ0EsT0FBUSxDQUFDLEdBQUdYLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7TUFBRXR2QyxHQUFHLEVBQUU4Z0Q7SUFBUCxDQUFwQyxFQUFpRCxDQUM3RSxDQUFDLEdBQUczckQsS0FBSyxDQUFDbTlDLGNBQVYsR0FBMkIsQ0FBQyxHQUFHbjlDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7TUFDbEZ6M0MsSUFBSSxFQUFFLElBQUlmLE1BQUosQ0FBV3dPLE1BQU0sQ0FBQytxQixDQUFELENBQWpCLENBRDRFO01BRWxGLFNBQU8sQ0FBQyxHQUFHbDdCLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCbkQsSUFBSSxDQUFDbm9CLFdBQS9CO0lBRjJFLENBQW5DLEVBR2hELENBQ0MsQ0FBQyxHQUFHdnhCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4Qiw4REFBOUIsQ0FERCxFQUVDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQy81QyxFQUFFLEdBQUcrNEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZWdxQixPQUFmLENBQXVCNEosQ0FBdkIsQ0FBTixNQUFxQyxJQUFyQyxJQUE2Q3Y2QixFQUFFLEtBQUssS0FBSyxDQUF6RCxHQUE2REEsRUFBN0QsR0FBa0V1NkIsQ0FBN0YsQ0FBM0IsRUFBNEg7SUFBRTtJQUE5SCxDQUZELENBSGdELEVBTWhEO0lBQUc7SUFONkMsRUFNekJvZ0IsV0FOeUIsQ0FBbkQsR0FNeUMsQ0FDckMsQ0FBQzRILHdCQUFELENBRHFDLENBTnpDLENBRDZFLENBQWpELENBQWhDO0VBV0gsQ0FiZ0YsQ0FBcEQsRUFhekI7RUFBSTtFQWJxQixDQURnQixHQWU1Q3hKLElBQUksQ0FBQ2pvQixVQUFMLENBQWdCdHJCLE1BQWhCLEtBQTJCLENBQTVCLElBQ08sQ0FBQyxHQUFHbkcsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ29CLFdBQXBDLEVBQWlELENBQ3hFLENBQUMsR0FBR3Y3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7SUFDL0J6MkMsSUFBSSxFQUFFLGNBQWNmLE1BQWQsQ0FBcUIrM0MsSUFBSSxDQUFDdG9CLFNBQUwsQ0FBZTVvQixFQUFwQyxFQUF3QyxnQkFBeEMsQ0FEeUI7SUFFL0IsU0FBTyxDQUFDLEdBQUd4SSxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDbkQsSUFBSSxDQUFDbm9CLFdBQU4sRUFBbUIsa0NBQW5CLENBQTFCO0VBRndCLENBQW5DLEVBR0csQ0FDQyxDQUFDLEdBQUd2eEIsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QzVwQyxJQUFJLEVBQUUsS0FEaUM7SUFFdkMsU0FBTztFQUZnQyxDQUEzQyxDQURELEVBS0MsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsTUFBTSxDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK2EsTUFBZixDQUFzQixhQUF0QixFQUFxQyxlQUFyQyxFQUFzRDNJLFdBQXRELEVBQTNCLENBQWpDLEVBQWtJO0VBQUU7RUFBcEksQ0FMRCxDQUhILEVBU0c7RUFBRztFQVROLEVBUzBCOGhDLFdBVDFCLENBRHdFLENBQWpELENBRC9CLEtBYU8sQ0FBQyxHQUFHeDdDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NzQixXQUFwQyxFQUFpRCxDQUN4RSxDQUFDLEdBQUd6N0MsS0FBSyxDQUFDbTlDLGNBQVYsR0FBMkIsQ0FBQyxHQUFHbjlDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7SUFDbEZ6M0MsSUFBSSxFQUFFLFNBRDRFO0lBRWxGLFNBQU8sQ0FBQyxHQUFHMUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEJuRCxJQUFJLENBQUNub0IsV0FBL0I7RUFGMkUsQ0FBbkMsRUFHaEQsQ0FDQyxDQUFDLEdBQUd2eEIsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QzVwQyxJQUFJLEVBQUUsTUFEaUM7SUFFdkMsU0FBTztFQUZnQyxDQUEzQyxDQURELEVBS0MsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsTUFBTSxDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK2EsTUFBZixDQUFzQixlQUF0QixDQUEzQixDQUFqQyxFQUFxRztFQUFFO0VBQXZHLENBTEQsQ0FIZ0QsRUFTaEQ7RUFBRTtFQVQ4QyxDQUFuRCxHQVNvQixDQUNoQixDQUFDNmdDLHdCQUFELENBRGdCLENBVHBCLENBRHdFLENBQWpELENBYi9CLENBZjZDLENBQWpELENBRDhDLENBQWxELENBRGdELENBQXBELENBRDhDLEVBZ0Q5QyxDQUFDLEdBQUdsakQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDdUMsV0FBckMsRUFBa0QsQ0FDOUNDLFdBRDhDLEVBRTlDLENBQUMsR0FBRzM3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN5QyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUc1N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQ2pDLFNBQU8sQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsdUJBQUQsRUFBMEI7TUFDbkQsU0FBU25ELElBQUksQ0FBQ3ZuQixpQkFBTCxDQUF1QnVuQixJQUFJLENBQUNsb0IsYUFBTCxDQUFtQm82QixhQUExQyxJQUEyRDtJQURqQixDQUExQixDQUExQjtFQUQwQixDQUFyQyxFQUlHLENBQ0MsQ0FBQyxHQUFHNXJELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzBDLFdBQXJDLEVBQWtELENBQUMsR0FBRzc3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3huQixjQUFoQyxDQUFsRCxFQUFtRztFQUFFO0VBQXJHLENBREQsRUFFQyxDQUFDLEdBQUdseUIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDMkMsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHOTdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzRDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRy83QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMsSUFBdkMsRUFBNkMsQ0FDekMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QyxJQUF2QyxFQUE2QyxDQUN4Q08sSUFBSSxDQUFDbG9CLGFBQUwsQ0FBbUJ0WixLQUFuQixDQUF5QixDQUF6QixFQUE0Qm9FLFNBQTVCLENBQXNDblcsTUFBdEMsR0FBK0MsQ0FBaEQsSUFDTyxDQUFDLEdBQUduRyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJxUSx1QkFBdkIsRUFBZ0Q7SUFDdkVuZ0QsR0FBRyxFQUFFLENBRGtFO0lBRXZFckMsRUFBRSxFQUFFLE9BRm1FO0lBR3ZFakcsSUFBSSxFQUFFbTNDLElBQUksQ0FBQ2xvQixhQUFMLENBQW1CdFosS0FBbkIsQ0FBeUIsQ0FBekIsQ0FIaUU7SUFJdkUsY0FBY3doQyxJQUFJLENBQUMzeEIsS0FBTCxDQUFXemY7RUFKOEMsQ0FBaEQsRUFLeEIsSUFMd0IsRUFLbEI7RUFBRTtFQUxnQixFQUtILENBQUMsTUFBRCxFQUFTLFlBQVQsQ0FMRyxDQUQvQixJQU9NLENBQUMsR0FBR3RJLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQVJtQyxFQVN6QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUIyUSxvQkFBdkIsRUFBNkM7SUFDekN6aUQsRUFBRSxFQUFFLFdBRHFDO0lBRXpDakcsSUFBSSxFQUFFbTNDLElBQUksQ0FBQ2xvQixhQUFMLENBQW1CcTZCO0VBRmdCLENBQTdDLEVBR0csSUFISCxFQUdTO0VBQUU7RUFIWCxFQUd3QixDQUFDLE1BQUQsQ0FIeEIsQ0FUeUMsRUFhekMsQ0FBQyxHQUFHN3JELEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCNFEsa0JBQXZCLEVBQTJDO0lBQ3ZDMWlELEVBQUUsRUFBRSxTQURtQztJQUV2Q2pHLElBQUksRUFBRW0zQyxJQUFJLENBQUNsb0IsYUFBTCxDQUFtQnM2QixPQUZjO0lBR3ZDLGdCQUFnQnBTLElBQUksQ0FBQzN4QixLQUFMLENBQVdna0M7RUFIWSxDQUEzQyxFQUlHLElBSkgsRUFJUztFQUFFO0VBSlgsRUFJd0IsQ0FBQyxNQUFELEVBQVMsY0FBVCxDQUp4QixDQWJ5QyxFQWtCekMsQ0FBQyxHQUFHL3JELEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCNlEsNEJBQXZCLEVBQXFEO0lBQ2pEM2lELEVBQUUsRUFBRSxvQkFENkM7SUFFakRqRyxJQUFJLEVBQUVtM0MsSUFBSSxDQUFDbG9CLGFBQUwsQ0FBbUJ3NkI7RUFGd0IsQ0FBckQsRUFHRyxJQUhILEVBR1M7RUFBRTtFQUhYLEVBR3dCLENBQUMsTUFBRCxDQUh4QixDQWxCeUMsRUFzQnhDdFMsSUFBSSxDQUFDbG9CLGFBQUwsQ0FBbUI3USxXQUFuQixDQUErQixDQUEvQixFQUFrQ3JFLFNBQWxDLENBQTRDblcsTUFBNUMsR0FBcUQsQ0FBdEQsSUFDTyxDQUFDLEdBQUduRyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJ5USxzQkFBdkIsRUFBK0M7SUFDdEV2Z0QsR0FBRyxFQUFFLENBRGlFO0lBRXRFckMsRUFBRSxFQUFFLGFBRmtFO0lBR3RFakcsSUFBSSxFQUFFbTNDLElBQUksQ0FBQ2xvQixhQUFMLENBQW1CN1EsV0FBbkIsQ0FBK0IsQ0FBL0IsQ0FIZ0U7SUFJdEUsYUFBYSs0QixJQUFJLENBQUMzeEIsS0FBTCxDQUFXemY7RUFKOEMsQ0FBL0MsRUFLeEIsSUFMd0IsRUFLbEI7RUFBRTtFQUxnQixFQUtILENBQUMsTUFBRCxFQUFTLFdBQVQsQ0FMRyxDQUQvQixJQU9NLENBQUMsR0FBR3RJLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQTdCbUMsRUE4QnhDYixJQUFJLENBQUNsb0IsYUFBTCxDQUFtQjBCLFNBQW5CLENBQTZCL3NCLE1BQTdCLEdBQXNDLENBQXZDLElBQ08sQ0FBQyxHQUFHbkcsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCMFEsb0JBQXZCLEVBQTZDO0lBQ3BFeGdELEdBQUcsRUFBRSxDQUQrRDtJQUVwRXJDLEVBQUUsRUFBRSxXQUZnRTtJQUdwRWpHLElBQUksRUFBRW0zQyxJQUFJLENBQUNsb0IsYUFBTCxDQUFtQjBCLFNBSDJDO0lBSXBFLFlBQVl3bUIsSUFBSSxDQUFDM3hCO0VBSm1ELENBQTdDLEVBS3hCLElBTHdCLEVBS2xCO0VBQUU7RUFMZ0IsRUFLSCxDQUFDLE1BQUQsRUFBUyxVQUFULENBTEcsQ0FEL0IsSUFPTSxDQUFDLEdBQUcvbkIsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBckNtQyxFQXNDeENiLElBQUksQ0FBQ2xvQixhQUFMLENBQW1Cd0IsUUFBbkIsQ0FBNEI3c0IsTUFBNUIsR0FBcUMsQ0FBdEMsSUFDTyxDQUFDLEdBQUduRyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUIyUSxtQkFBdkIsRUFBNEM7SUFDbkV6Z0QsR0FBRyxFQUFFLENBRDhEO0lBRW5FckMsRUFBRSxFQUFFLFVBRitEO0lBR25FakcsSUFBSSxFQUFFbTNDLElBQUksQ0FBQ2xvQixhQUFMLENBQW1Cd0IsUUFIMEM7SUFJbkUsYUFBYTBtQixJQUFJLENBQUMzeEI7RUFKaUQsQ0FBNUMsRUFLeEIsSUFMd0IsRUFLbEI7RUFBRTtFQUxnQixFQUtILENBQUMsTUFBRCxFQUFTLFdBQVQsQ0FMRyxDQUQvQixJQU9NLENBQUMsR0FBRy9uQixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0E3Q21DLEVBOEN6QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJpUixpQkFBdkIsRUFBMEM7SUFDdEMvaUQsRUFBRSxFQUFFLFFBRGtDO0lBRXRDakcsSUFBSSxFQUFFbTNDLElBQUksQ0FBQ2pvQjtFQUYyQixDQUExQyxFQUdHLElBSEgsRUFHUztFQUFFO0VBSFgsRUFHd0IsQ0FBQyxNQUFELENBSHhCLENBOUN5QyxDQUE3QyxDQUR5QyxDQUE3QyxDQUQ4QyxDQUFsRCxDQUQ4QyxDQUFsRCxDQUZELEVBMkRDLENBQUMsR0FBR3p4QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM2QyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdoOEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDOEMsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHajhDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQytDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR2w4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUNnRCxXQUF2QyxFQUFvRCxDQUNoRCxDQUFDLEdBQUduOEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NpRCxXQUFwQyxFQUFpRCxDQUFDLEdBQUdwOEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixlQUExQixDQUEzQixDQUFqRCxFQUF5SDtFQUFFO0VBQTNILENBRHNDLENBQTFDLENBRGdELENBQXBELENBRDhDLENBQWxELENBRDhDLEVBUTlDdXpDLFdBUjhDLENBQWxELENBRDhDLEVBVzlDLENBQUMsR0FBR3I4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNtRCxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd0OEMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJrUix1QkFBdkIsRUFBZ0Q7SUFDNUNqcEQsSUFBSSxFQUFFbTNDLElBQUksQ0FBQ2xvQixhQUFMLENBQW1CbzZCLGFBRG1CO0lBRTVDaGxELElBQUksRUFBRTh5QyxJQUFJLENBQUMzeEI7RUFGaUMsQ0FBaEQsRUFHRyxJQUhILEVBR1M7RUFBRTtFQUhYLEVBR3dCLENBQUMsTUFBRCxFQUFTLE1BQVQsQ0FIeEIsQ0FEOEMsQ0FBbEQsQ0FYOEMsQ0FBbEQsQ0EzREQsQ0FKSCxFQWlGRztFQUFFO0VBakZMLENBRDhDLENBQWxELENBRjhDLENBQWxELENBaEQ4QyxDQUFsRCxDQTlINkUsQ0FBakQsQ0FBaEM7QUF1UUg7O0FBQ0Rqb0IsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUM5VGE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUcsQ0FBQyxNQUFELENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQ2I3d0MsRUFBRSxFQUFFLE9BRFM7RUFFYnlqRCxLQUFLLEVBQUU7QUFGTSxDQUFqQjs7QUFJQSxJQUFJM1MsVUFBVSxHQUFHLGFBQWMsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztFQUMvRDN3QyxFQUFFLEVBQUUsTUFEMkQ7RUFFL0R5akQsS0FBSyxFQUFFLEtBRndEO0VBRy9ENXpDLEtBQUssRUFBRTtBQUh3RCxDQUFwQyxFQUk1QixDQUNDLGFBQWMsQ0FBQyxHQUFHclksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLGtCQUE1QyxDQURmLENBSjRCLEVBTTVCLENBQUM7QUFBRTtBQU55QixDQUEvQjs7QUFPQSxJQUFJSSxVQUFVLEdBQUc7RUFDYi93QyxFQUFFLEVBQUUsU0FEUztFQUVieWpELEtBQUssRUFBRSxLQUZNO0VBR2I1ekMsS0FBSyxFQUFFO0FBSE0sQ0FBakI7QUFLQSxJQUFJbWhDLFVBQVUsR0FBRztFQUNiaHhDLEVBQUUsRUFBRSxvQkFEUztFQUVieWpELEtBQUssRUFBRSxLQUZNO0VBR2I1ekMsS0FBSyxFQUFFO0FBSE0sQ0FBakI7QUFLQSxJQUFJb2hDLFdBQVcsR0FBRztFQUNkanhDLEVBQUUsRUFBRSxRQURVO0VBRWR5akQsS0FBSyxFQUFFLEtBRk87RUFHZDV6QyxLQUFLLEVBQUU7QUFITyxDQUFsQjtBQUtBLElBQUkyaUMsV0FBVyxHQUFHO0VBQUVud0MsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJb3dDLFdBQVcsR0FBRyxDQUFDLFNBQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxNQUFELENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsU0FBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLFNBQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxNQUFELENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUU3d0MsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJOHdDLFdBQVcsR0FBRztFQUNkdVEsT0FBTyxFQUFFLEdBREs7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJdFEsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLFNBQVM5QyxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELElBQUlzSSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUdyaUQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLE9BQTVCLENBQXZCOztFQUNBLElBQUlpRyxjQUFjLEdBQUcsQ0FBQyxHQUFHbGdELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixLQUE1QixDQUFyQjs7RUFDQSxJQUFJMEosb0JBQW9CLEdBQUcsQ0FBQyxHQUFHM2pELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixXQUE1QixDQUEzQjs7RUFDQSxJQUFJRCxrQkFBa0IsR0FBRyxDQUFDLEdBQUdoNkMsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFNBQTVCLENBQXpCOztFQUNBLElBQUlrUyx1QkFBdUIsR0FBRyxDQUFDLEdBQUduc0QsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLGNBQTVCLENBQTlCOztFQUNBLElBQUk4SixxQkFBcUIsR0FBRyxDQUFDLEdBQUcvakQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFlBQTVCLENBQTVCOztFQUNBLE9BQVEsQ0FBQyxHQUFHajZDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNwQixVQUFyQyxFQUFpRCxDQUM3RSxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJxSixvQkFBdkIsRUFBNkM7SUFDekMsbUJBQW1CakssSUFBSSxDQUFDL3NDLGNBRGlCO0lBRXpDdUwsS0FBSyxFQUFFd2hDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLGdCQUExQixDQUZrQztJQUd6QyxhQUFhLEdBQUduSCxNQUFILENBQVUrM0MsSUFBSSxDQUFDMW5CLFVBQWY7RUFINEIsQ0FBN0MsRUFJRztJQUNDLFdBQVMsQ0FBQyxHQUFHaHlCLEtBQUssQ0FBQzQ2QyxPQUFWLEVBQW1CLFlBQVk7TUFBRSxPQUFPLENBQzdDLENBQUMsR0FBRzU2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQzVDVSxJQUFJLENBQUM5aUMsU0FBTCxDQUFlMUksVUFBaEIsSUFDTyxDQUFDLEdBQUdsTyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUIwSCxnQkFBdkIsRUFBeUM7UUFDaEV4M0MsR0FBRyxFQUFFLENBRDJEO1FBRWhFckIsT0FBTyxFQUFFa3dDLElBQUksQ0FBQzlpQyxTQUFMLENBQWVwTixPQUZ3QztRQUdoRTVDLElBQUksRUFBRTh5QyxJQUFJLENBQUM5aUMsU0FBTCxDQUFlaFEsSUFIMkM7UUFJaEUsU0FBTztNQUp5RCxDQUF6QyxFQUt4QixJQUx3QixFQUtsQjtNQUFFO01BTGdCLEVBS0gsQ0FBQyxTQUFELEVBQVksTUFBWixDQUxHLENBRC9CLElBT00sQ0FBQyxHQUFHNUcsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBUnVDLEVBUzdDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7UUFDL0J6MkMsSUFBSSxFQUFFLEdBQUdmLE1BQUgsQ0FBVSszQyxJQUFJLENBQUN6bkIsYUFBZixFQUE4QixTQUE5QjtNQUR5QixDQUFuQyxFQUVHLENBQ0MsQ0FBQyxHQUFHanlCLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCNEYsY0FBdkIsRUFBdUM7UUFDbkNod0MsSUFBSSxFQUFFd3BDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrYSxNQUFmLENBQXNCLGFBQXRCLEVBQXFDLGtCQUFyQyxDQUQ2QjtRQUVuQ2pTLElBQUksRUFBRSxNQUY2QjtRQUduQ3hKLElBQUksRUFBRTtNQUg2QixDQUF2QyxFQUlHLElBSkgsRUFJUztNQUFFO01BSlgsRUFJd0IsQ0FBQyxNQUFELENBSnhCLENBREQsQ0FGSCxFQVFHO01BQUU7TUFSTCxFQVFrQnF5QyxVQVJsQixDQVQ2QyxDQUFqRCxDQUQ2QyxDQUFQO0lBb0J0QyxDQXBCSyxDQURWO0lBc0JDaDBDLENBQUMsRUFBRTtJQUFFOztFQXRCTixDQUpILEVBMkJHO0VBQUU7RUEzQkwsRUEyQmtCLENBQUMsaUJBQUQsRUFBb0IsT0FBcEIsRUFBNkIsV0FBN0IsQ0EzQmxCLENBRDZFLEVBNkI3RSxDQUFDLEdBQUdqRixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNELFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2w1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMsSUFBdkMsRUFBNkMsQ0FDekMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QyxJQUF2QyxFQUE2QyxDQUN6QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DQyxVQUFwQyxFQUFnRCxDQUM1QyxDQUFDLEdBQUdwNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DRSxVQUFwQyxFQUFnRCxDQUM1QyxDQUFDLEdBQUdyNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLE9BQTFCLENBQTNCLENBQTVDLEVBQTRHO0VBQUU7RUFBOUcsQ0FENEMsQ0FBaEQsQ0FENEMsRUFJNUN3d0MsVUFKNEMsRUFLNUMsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ0ksVUFBcEMsRUFBZ0QsQ0FDNUMsQ0FBQyxHQUFHdjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixTQUExQixDQUEzQixDQUE1QyxFQUE4RztFQUFFO0VBQWhILENBRDRDLENBQWhELENBTDRDLEVBUTVDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ0ssVUFBcEMsRUFBZ0QsQ0FDNUMsQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixvQkFBMUIsQ0FBM0IsQ0FBNUMsRUFBeUg7RUFBRTtFQUEzSCxDQUQ0QyxDQUFoRCxDQVI0QyxFQVc1QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NNLFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBR3o1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsUUFBMUIsQ0FBM0IsQ0FBNUMsRUFBNkc7RUFBRTtFQUEvRyxDQUQ2QyxDQUFqRCxDQVg0QyxDQUFoRCxDQUR5QyxDQUE3QyxDQUR5QyxFQWtCeEM0d0MsSUFBSSxDQUFDbm5CLGNBQUwsQ0FBb0Jod0IsSUFBcEIsSUFBNEJtM0MsSUFBSSxDQUFDbm5CLGNBQUwsQ0FBb0Jod0IsSUFBcEIsQ0FBeUI0RCxNQUF6QixHQUFrQyxDQUEvRCxJQUNPLENBQUMsR0FBR25HLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUNhLFdBQXZDLEVBQW9ELEVBQzFFLENBQUMsR0FBR2g3QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JwRCxJQUFJLENBQUNubkIsY0FBTCxDQUFvQmh3QixJQUExQyxFQUFnRCxVQUFVNnVCLFNBQVYsRUFBcUJoc0IsQ0FBckIsRUFBd0JpTixLQUF4QixFQUErQjtJQUM1SixPQUFRLENBQUMsR0FBR3JTLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7TUFBRXR2QyxHQUFHLEVBQUV3SDtJQUFQLENBQXBDLEVBQW9ELENBQ2hGLENBQUMsR0FBR3JTLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztNQUNoQyxTQUFPLHFDQUR5QjtNQUVoQ2tCLE9BQU8sRUFBRSxpQkFBVUksTUFBVixFQUFrQjtRQUFFLE9BQVFmLElBQUksQ0FBQ2xuQixjQUFMLENBQW9CLFdBQVc3d0IsTUFBWCxDQUFrQnl2QixTQUFTLENBQUNPLFNBQTVCLEVBQXVDLGFBQXZDLEVBQXNEaHdCLE1BQXRELENBQTZEeXZCLFNBQVMsQ0FBQzVvQixFQUF2RSxDQUFwQixDQUFSO01BQTJHO0lBRnhHLENBQXBDLEVBR0csQ0FDQyxDQUFDLEdBQUd4SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMrQixXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdsN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO01BQy9CejJDLElBQUksRUFBRSxXQUFXZixNQUFYLENBQWtCeXZCLFNBQVMsQ0FBQ08sU0FBNUIsRUFBdUMsYUFBdkMsRUFBc0Rod0IsTUFBdEQsQ0FBNkR5dkIsU0FBUyxDQUFDNW9CLEVBQXZFLENBRHlCO01BRS9CLFNBQU87SUFGd0IsQ0FBbkMsRUFHRyxDQUFDLEdBQUd4SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzlzQyxnQkFBTCxDQUFzQndrQixTQUFTLENBQUNBLFNBQVYsQ0FBb0JsWixLQUFwQixDQUEwQixDQUExQixFQUE2Qm9FLFNBQW5ELEVBQThELElBQTlELENBQTNCLENBSEgsRUFHb0c7SUFBRTtJQUh0RyxFQUd5SDYrQixXQUh6SCxDQUQ4QyxFQUs5QyxDQUFDLEdBQUduN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDaUMsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHcDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2tDLFdBQXRDLEVBQW1ELENBQUMsR0FBR3I3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzlzQyxnQkFBTCxDQUFzQndrQixTQUFTLENBQUNBLFNBQVYsQ0FBb0JsWixLQUFwQixDQUEwQixDQUExQixFQUE2Qm9FLFNBQW5ELEVBQThELElBQTlELENBQTNCLENBQW5ELEVBQW9KO0lBQUU7SUFBdEosQ0FEOEMsQ0FBbEQsQ0FMOEMsQ0FBbEQsQ0FERCxDQUhILEVBYUc7SUFBRTtJQWJMLEVBYWtCMitCLFdBYmxCLENBRGdGLEVBZWhGLENBQUMsR0FBR2o3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCdHBCLFNBQVMsQ0FBQyxnQkFBRCxDQUFwQyxDQUExQyxFQUFtRztJQUFFO0lBQXJHLENBZmdGLEVBZ0JoRixDQUFDLEdBQUdweEIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DO01BQ2hDLFNBQU8sZ0JBRHlCO01BRWhDa0IsT0FBTyxFQUFFLGlCQUFVSSxNQUFWLEVBQWtCO1FBQUUsT0FBUWYsSUFBSSxDQUFDbG5CLGNBQUwsQ0FBb0IsV0FBVzd3QixNQUFYLENBQWtCeXZCLFNBQVMsQ0FBQ08sU0FBNUIsRUFBdUMsYUFBdkMsRUFBc0Rod0IsTUFBdEQsQ0FBNkR5dkIsU0FBUyxDQUFDNW9CLEVBQXZFLENBQXBCLENBQVI7TUFBMkc7SUFGeEcsQ0FBcEMsRUFHRyxDQUFDLEdBQUd4SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzN4QixLQUFMLENBQVdna0MsZ0JBQVgsQ0FBNEIzNkIsU0FBUyxDQUFDQSxTQUFWLENBQW9CMDZCLE9BQWhELENBQTNCLENBSEgsRUFHeUY7SUFBRTtJQUgzRixFQUc4R3hRLFdBSDlHLENBaEJnRixFQW9CaEYsQ0FBQyxHQUFHdDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztNQUNoQyxTQUFPLDJCQUR5QjtNQUVoQ2tCLE9BQU8sRUFBRSxpQkFBVUksTUFBVixFQUFrQjtRQUFFLE9BQVFmLElBQUksQ0FBQ2xuQixjQUFMLENBQW9CLFdBQVc3d0IsTUFBWCxDQUFrQnl2QixTQUFTLENBQUNPLFNBQTVCLEVBQXVDLGFBQXZDLEVBQXNEaHdCLE1BQXRELENBQTZEeXZCLFNBQVMsQ0FBQzVvQixFQUF2RSxDQUFwQixDQUFSO01BQTJHO0lBRnhHLENBQXBDLEVBR0csQ0FBQyxHQUFHeEksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ4TixRQUFRLENBQUM5YixTQUFTLENBQUNBLFNBQVYsQ0FBb0I0NkIsa0JBQXJCLENBQVIsR0FDeEJ0UyxJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixNQUExQixDQUR3QixHQUV4QnNvQixTQUFTLENBQUNBLFNBQVYsQ0FBb0I0NkIsa0JBQXBCLEdBQ0l0UyxJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixPQUExQixDQURKLEdBRUk0d0MsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBSlAsQ0FISCxFQU9xQztJQUFFO0lBUHZDLEVBTzBEa29CLFdBUDFELENBcEJnRixFQTRCaEYsQ0FBQyxHQUFHdjdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcUMsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHeDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztNQUMvQixTQUFPLE1BRHdCO01BRS9CejJDLElBQUksRUFBRSxXQUFXZixNQUFYLENBQWtCeXZCLFNBQVMsQ0FBQ08sU0FBNUIsRUFBdUMsYUFBdkMsRUFBc0Rod0IsTUFBdEQsQ0FBNkR5dkIsU0FBUyxDQUFDNW9CLEVBQXZFLEVBQTJFLE9BQTNFO0lBRnlCLENBQW5DLEVBR0csQ0FDQyxDQUFDLEdBQUd4SSxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO01BQ3ZDNXBDLElBQUksRUFBRSxNQURpQztNQUV2QyxTQUFPO0lBRmdDLENBQTNDLENBREQsQ0FISCxFQVFHO0lBQUU7SUFSTCxFQVFrQnFyQyxXQVJsQixDQUQ4QyxFQVU5QyxDQUFDLEdBQUd6N0MsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUI2Uix1QkFBdkIsRUFBZ0Q7TUFDNUMsV0FBVy82QixTQUFTLENBQUM1b0IsRUFEdUI7TUFFNUMsYUFBYTtJQUYrQixDQUFoRCxFQUdHLElBSEgsRUFHUztJQUFFO0lBSFgsRUFHd0IsQ0FBQyxTQUFELENBSHhCLENBVjhDLENBQWxELENBRHNDLENBQTFDLENBNUJnRixDQUFwRCxDQUFoQztFQThDSCxDQS9DZ0YsQ0FBcEQsRUErQ3pCO0VBQUk7RUEvQ3FCLENBRDhDLEVBQXBELENBRC9CLEtBbURPLENBQUMsR0FBR3hJLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUN1QixXQUF2QyxFQUFvRCxDQUMzRSxDQUFDLEdBQUcxN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9Dd0MsV0FBcEMsRUFBaUQsQ0FBQyxHQUFHMzdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDOW1CLHlCQUFMLENBQStCOG1CLElBQUksQ0FBQ3B5QyxTQUFMLENBQWVncUIsT0FBZixDQUF1QixZQUF2QixDQUEvQixFQUFxRW9vQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsQ0FBdUIsV0FBdkIsQ0FBckUsQ0FBM0IsQ0FBakQsRUFBd0w7RUFBRTtFQUExTCxDQUQyRSxDQUFwRCxDQW5EL0IsQ0FsQnlDLENBQTdDLENBRDZDLENBQWpELENBN0I2RSxFQXdHN0UsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3lDLFdBQXJDLEVBQWtELENBQzdDbEMsSUFBSSxDQUFDbm5CLGNBQUwsSUFBdUJtbkIsSUFBSSxDQUFDbm5CLGNBQUwsQ0FBb0JsWCxTQUFwQixHQUFnQyxDQUF4RCxJQUNPLENBQUMsR0FBR3JiLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1Qm9KLHFCQUF2QixFQUE4QztJQUNyRWw1QyxHQUFHLEVBQUUsQ0FEZ0U7SUFFckV0SSxJQUFJLEVBQUVtM0MsSUFBSSxDQUFDbm5CLGNBRjBEO0lBR3JFMnhCLGlCQUFpQixFQUFFeEssSUFBSSxDQUFDam5CO0VBSDZDLENBQTlDLEVBSXhCLElBSndCLEVBSWxCO0VBQUU7RUFKZ0IsRUFJSCxDQUFDLE1BQUQsRUFBUyxtQkFBVCxDQUpHLENBRC9CLElBTU0sQ0FBQyxHQUFHenlCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQVB3QyxDQUFsRCxDQXhHNkUsQ0FBakQsQ0FBaEM7QUFrSEg7O0FBQ0R6NkMsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUM3S2E7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7O0FBQ0EsU0FBU0QsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxPQUFRLENBQUMsR0FBRy81QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RFLENBQUMsR0FBR242QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsb0JBQTFCLENBQTNCLENBQTFDLEVBQXVIO0VBQUU7RUFBekgsQ0FEc0UsRUFFdEUsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DSixVQUFwQyxFQUFnRCxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ4TixRQUFRLENBQUN3TSxJQUFJLENBQUNuM0MsSUFBTixDQUFSLEdBQ3JFbTNDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLE1BQTFCLENBRHFFLEdBRXJFNHdDLElBQUksQ0FBQ24zQyxJQUFMLEdBQ0ltM0MsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsT0FBMUIsQ0FESixHQUVJNHdDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUpzQyxDQUFoRCxFQUlxQztFQUFFO0VBSnZDLENBRnNFLENBQTFDLENBQWhDO0FBUUg7O0FBQ0R2ekIsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUNmYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRyxhQUFjLENBQUMsR0FBRy80QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixLQUEzQixDQUEvQjs7QUFDQSxJQUFJbEUsVUFBVSxHQUFHLGFBQWMsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLEtBQTNCLENBQS9COztBQUNBLElBQUlqRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7O0FBQ0EsSUFBSUMsVUFBVSxHQUFHLGFBQWMsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxJQUEzQyxFQUFpRCxDQUFDO0FBQUU7QUFBcEQsQ0FBL0I7O0FBQ0EsSUFBSUksVUFBVSxHQUFHLGFBQWMsQ0FBQyxHQUFHdjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztFQUFFLFNBQU87QUFBVCxDQUFyQyxFQUFpRyxJQUFqRyxFQUF1RyxDQUFDO0FBQUU7QUFBMUcsQ0FBL0I7O0FBQ0EsU0FBU0wsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJeVIsdUJBQXVCLEdBQUcsQ0FBQyxHQUFHeHJELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixjQUE1QixDQUE5Qjs7RUFDQSxPQUFRLENBQUMsR0FBR2o2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RFLENBQUMsR0FBR242QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsVUFBMUIsQ0FBM0IsQ0FBMUMsRUFBNkc7RUFBRTtFQUEvRyxDQURzRSxFQUV0RSxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsRUFDckMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnBELElBQUksQ0FBQzFtQixRQUEzQixFQUFxQyxVQUFVbzVCLElBQVYsRUFBZ0JsbEIsQ0FBaEIsRUFBbUI7SUFDckksT0FBUSxDQUFDLEdBQUdsbkMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqRXR2QyxHQUFHLEVBQUVxOEIsQ0FENEQ7TUFFakUsU0FBTyxDQUFDLEdBQUdsbkMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEI7UUFDN0IsUUFBUTNWLENBQUMsS0FBS3dTLElBQUksQ0FBQzFtQixRQUFMLENBQWM3c0IsTUFBZCxHQUF1QjtNQURSLENBQTFCO0lBRjBELENBQXJDLEVBSzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pDLFNBQU8sQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCbkQsSUFBSSxDQUFDM21CLGNBQS9CO0lBRDBCLENBQXJDLEVBRUcsQ0FDQyxDQUFDLEdBQUcveUIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQ3hDLENBQUMsR0FBR241QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixNQUExQixDQUEzQixJQUFnRSxJQUEzRixFQUFpRztJQUFFO0lBQW5HLENBRHdDLEVBRXZDc2pELElBQUksQ0FBQ2o0QyxJQUFOLElBQ08sQ0FBQyxHQUFHblUsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEM7TUFBRXZ2QyxHQUFHLEVBQUU7SUFBUCxDQUE5QyxFQUEwRCxDQUNqRixDQUFDLEdBQUc3SyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIwUixJQUFJLENBQUNqNEMsSUFBaEMsQ0FBM0IsRUFBa0U7SUFBRTtJQUFwRSxDQURpRixDQUExRCxFQUV4QjtJQUFHO0lBRnFCLENBRC9CLEtBSU8sQ0FBQyxHQUFHblUsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEM7TUFBRXZ2QyxHQUFHLEVBQUU7SUFBUCxDQUE5QyxFQUEwRCxDQUNqRixDQUFDLEdBQUc3SyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBM0IsQ0FBM0IsRUFBaUY7SUFBRTtJQUFuRixDQURpRixDQUExRCxFQUV4QjtJQUFHO0lBRnFCLENBSi9CLENBRndDLEVBU3hDMGxCLFVBVHdDLENBQTVDLENBREQsRUFZQyxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQ3hDLENBQUMsR0FBR241QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixNQUExQixDQUEzQixJQUFnRSxJQUEzRixFQUFpRztJQUFFO0lBQW5HLENBRHdDLEVBRXZDc2pELElBQUksQ0FBQ240QyxJQUFOLElBQ08sQ0FBQyxHQUFHalUsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEM7TUFBRXZ2QyxHQUFHLEVBQUU7SUFBUCxDQUE5QyxFQUEwRCxDQUNqRixDQUFDLEdBQUc3SyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIwUixJQUFJLENBQUNuNEMsSUFBaEMsQ0FBM0IsRUFBa0U7SUFBRTtJQUFwRSxDQURpRixDQUExRCxFQUV4QjtJQUFHO0lBRnFCLENBRC9CLEtBSU8sQ0FBQyxHQUFHalUsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEM7TUFBRXZ2QyxHQUFHLEVBQUU7SUFBUCxDQUE5QyxFQUEwRCxDQUNqRixDQUFDLEdBQUc3SyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBM0IsQ0FBM0IsRUFBaUY7SUFBRTtJQUFuRixDQURpRixDQUExRCxFQUV4QjtJQUFHO0lBRnFCLENBSi9CLENBRndDLEVBU3hDMmxCLFVBVHdDLENBQTVDLENBWkQsRUF1QkMsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUN4QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsT0FBMUIsQ0FBM0IsSUFBaUUsSUFBNUYsRUFBa0c7SUFBRTtJQUFwRyxDQUR3QyxFQUV2Q3NqRCxJQUFJLENBQUNyc0QsS0FBTixJQUNPLENBQUMsR0FBR0MsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEM7TUFBRXZ2QyxHQUFHLEVBQUU7SUFBUCxDQUE5QyxFQUEwRCxDQUNqRixDQUFDLEdBQUc3SyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIwUixJQUFJLENBQUNyc0QsS0FBaEMsQ0FBM0IsRUFBbUU7SUFBRTtJQUFyRSxDQURpRixDQUExRCxFQUV4QjtJQUFHO0lBRnFCLENBRC9CLEtBSU8sQ0FBQyxHQUFHQyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztNQUFFdnZDLEdBQUcsRUFBRTtJQUFQLENBQTlDLEVBQTBELENBQ2pGLENBQUMsR0FBRzdLLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUEzQixDQUEzQixFQUFpRjtJQUFFO0lBQW5GLENBRGlGLENBQTFELEVBRXhCO0lBQUc7SUFGcUIsQ0FKL0IsQ0FGd0MsQ0FBNUMsQ0F2QkQsQ0FGSCxFQW1DRztJQUFFO0lBbkNMLENBREQsRUFxQ0MsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqQyxTQUFPLENBQUMsR0FBR241QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLE1BQUQsRUFBU25ELElBQUksQ0FBQzNtQixjQUFkLENBQTFCO0lBRDBCLENBQXJDLEVBRUcsQ0FDQyxDQUFDLEdBQUcveUIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFVBQTFCLENBQTNCLElBQW9FLElBQS9HLEVBQXFIO0lBQUU7SUFBdkgsQ0FERCxFQUVDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNqdkMsUUFBTCxDQUFjMmhELElBQUksQ0FBQzNoRCxRQUFuQixJQUNoRWl2QyxJQUFJLENBQUNqdkMsUUFBTCxDQUFjMmhELElBQUksQ0FBQzNoRCxRQUFuQixDQURnRSxHQUVoRWl2QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFGcUMsQ0FBM0MsRUFFaUM7SUFBRTtJQUZuQyxDQUZELENBRkgsRUFPRztJQUFFO0lBUEwsQ0FyQ0QsRUE2Q0MsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqQyxTQUFPLENBQUMsR0FBR241QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLE1BQUQsRUFBU25ELElBQUksQ0FBQzNtQixjQUFkLENBQTFCO0lBRDBCLENBQXJDLEVBRUcsQ0FDQyxDQUFDLEdBQUcveUIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFdBQTFCLENBQTNCLElBQXFFLElBQWhILEVBQXNIO0lBQUU7SUFBeEgsQ0FERCxFQUVDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0YsVUFBckMsRUFBaUQsQ0FBQyxHQUFHajVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDdG1CLFVBQUwsQ0FBZ0JnNUIsSUFBSSxDQUFDQyxTQUFyQixDQUEzQixDQUFqRCxFQUE4RztJQUFFO0lBQWhILENBRkQsQ0FGSCxFQUtHO0lBQUU7SUFMTCxDQTdDRCxFQW1EQyxDQUFDLEdBQUdyc0QsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pDLFNBQU8sQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsTUFBRCxFQUFTbkQsSUFBSSxDQUFDM21CLGNBQWQsQ0FBMUI7SUFEMEIsQ0FBckMsRUFFRyxDQUNDLENBQUMsR0FBRy95QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsU0FBMUIsQ0FBM0IsSUFBbUUsSUFBOUcsRUFBb0g7SUFBRTtJQUF0SCxDQURELEVBRUMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLEVBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JzUCxJQUFJLENBQUNFLE9BQUwsQ0FBYSxDQUFiLEVBQWdCaHdDLFNBQXRDLEVBQWlELFVBQVVpd0MsR0FBVixFQUFlL0gsQ0FBZixFQUFrQjtNQUNoSixPQUFRLENBQUMsR0FBR3hrRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1FBQ2pFdHZDLEdBQUcsRUFBRTI1QyxDQUQ0RDtRQUVqRSxTQUFPLENBQUMsR0FBR3hrRCxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLE1BQUQsRUFBUztVQUNsQyxVQUFVMkgsQ0FBQyxLQUFLNEgsSUFBSSxDQUFDRSxPQUFMLENBQWEsQ0FBYixFQUFnQmh3QyxTQUFoQixDQUEwQm5XLE1BQTFCLEdBQW1DO1FBRGpCLENBQVQsQ0FBMUI7TUFGMEQsQ0FBckMsRUFLN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsQ0FDdkMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0QsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQjZSLEdBQUcsQ0FBQ2p3QyxTQUFKLEdBQWdCaXdDLEdBQUcsQ0FBQ2p3QyxTQUFwQixHQUFnQ285QixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBM0QsSUFBdUYsR0FBbEgsRUFBdUg7TUFBRTtNQUF6SCxDQUQ2QyxFQUU3QyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDQyxVQUF0QyxFQUFrRCxPQUFPLENBQUMsR0FBR3A1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFVBQTFCLENBQTNCLENBQVAsR0FBMkUsSUFBM0UsR0FBa0YsQ0FBQyxHQUFHOUksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkI2UixHQUFHLENBQUNqa0QsUUFBSixHQUN6Sm94QyxJQUFJLENBQUM1bUIsUUFBTCxDQUFjeHFCLFFBQWQsQ0FBdUJpa0QsR0FBRyxDQUFDamtELFFBQTNCLENBRHlKLEdBRXpKb3hDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUY4SCxDQUFsRixHQUVoQixHQUZsQyxFQUV1QztNQUFFO01BRnpDLENBRjZDLENBQWpELENBRHVDLENBQTNDLENBREQsQ0FMNkIsRUFjN0I7TUFBRTtNQWQyQixDQUFoQztJQWVILENBaEJnRixDQUFwRCxFQWdCekI7SUFBSTtJQWhCcUIsQ0FEVSxFQUEzQyxDQUZELENBRkgsRUF1Qkc7SUFBRTtJQXZCTCxDQW5ERCxFQTJFQyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNFLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3I1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsZUFBMUIsQ0FBM0IsSUFBeUUsSUFBcEgsRUFBMEg7SUFBRTtJQUE1SCxDQUQ2QyxFQUU3Q3d3QyxVQUY2QyxDQUFqRCxDQUR1QyxFQUt2Q0MsVUFMdUMsRUFNdkMsQ0FBQyxHQUFHdjVDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCa1IsdUJBQXZCLEVBQWdEO01BQzVDanBELElBQUksRUFBRTZwRCxJQUFJLENBQUNSLGFBRGlDO01BRTVDaGxELElBQUksRUFBRTh5QyxJQUFJLENBQUM1bUIsUUFGaUM7TUFHNUNVLFNBQVMsRUFBRTtJQUhpQyxDQUFoRCxFQUlHLElBSkgsRUFJUztJQUFFO0lBSlgsRUFJd0IsQ0FBQyxNQUFELEVBQVMsTUFBVCxDQUp4QixDQU51QyxDQUEzQyxDQTNFRCxDQUw2QixFQTRGN0I7SUFBRTtJQTVGMkIsQ0FBaEM7RUE2RkgsQ0E5RmdGLENBQXBELEVBOEZ6QjtFQUFJO0VBOUZxQixDQURTLEVBQTFDLENBRnNFLENBQTFDLENBQWhDO0FBb0dIOztBQUNEMXpCLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDbkhhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCOztBQUNBLFNBQVNGLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsT0FBUSxDQUFDLEdBQUcvNUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0RSxDQUFDLEdBQUduNkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLGFBQTFCLENBQTNCLENBQTFDLEVBQWdIO0VBQUU7RUFBbEgsQ0FEc0UsRUFFdEUsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLEVBQ3JDLENBQUMsR0FBR241QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JwRCxJQUFJLENBQUNubUIsZUFBTCxDQUFxQmpYLFNBQTNDLEVBQXNELFVBQVVxRSxXQUFWLEVBQXVCdmIsQ0FBdkIsRUFBMEI7SUFDN0osT0FBUSxDQUFDLEdBQUdwRixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pFdHZDLEdBQUcsRUFBRXpGLENBRDREO01BRWpFLFNBQU8sQ0FBQyxHQUFHcEYsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxxQkFBRCxFQUF3QjtRQUNqRCxRQUFRejNDLENBQUMsS0FBS3MwQyxJQUFJLENBQUNubUIsZUFBTCxDQUFxQmpYLFNBQXJCLENBQStCblcsTUFBL0IsR0FBd0M7TUFETCxDQUF4QixDQUExQjtJQUYwRCxDQUFyQyxFQUs3QixDQUNDLENBQUMsR0FBR25HLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0osVUFBckMsRUFBaUQsT0FBTyxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixVQUExQixDQUEzQixDQUFQLEdBQTJFLElBQTNFLEdBQWtGLENBQUMsR0FBRzlJLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCLzVCLFdBQVcsQ0FBQ3JZLFFBQVosR0FDeEpveEMsSUFBSSxDQUFDcG1CLFFBQUwsQ0FBYzNTLFdBQVcsQ0FBQ3JZLFFBQTFCLENBRHdKLEdBRXhKb3hDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUY2SCxDQUFsRixHQUVmLElBRmxDLEVBRXdDO0lBQUU7SUFGMUMsQ0FERCxFQUlDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQUMsR0FBR2g1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQi81QixXQUFXLENBQUNyRSxTQUF2QyxDQUFqRCxFQUFvRztJQUFFO0lBQXRHLENBSkQsQ0FMNkIsRUFVN0I7SUFBRTtJQVYyQixDQUFoQztFQVdILENBWmdGLENBQXBELEVBWXpCO0VBQUk7RUFacUIsQ0FEUyxFQUExQyxDQUZzRSxDQUExQyxDQUFoQztBQWtCSDs7QUFDRHhjLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDMUJhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQ2JwdUMsR0FBRyxFQUFFLENBRFE7RUFFYnZKLEtBQUssRUFBRTtJQUFFLFNBQVM7RUFBWDtBQUZNLENBQWpCO0FBSUEsSUFBSTQzQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUcsQ0FBQyxNQUFELENBQWpCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUU1dUMsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJbXdDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFcndDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSXN3QyxXQUFXLEdBQUc7RUFBRXR3QyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUl1d0MsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLFNBQVN2QyxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELE9BQVEsQ0FBQyxHQUFHLzVDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNwQixVQUFyQyxFQUFpRCxDQUM3RSxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDLElBQXZDLEVBQTZDLENBQ3pDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMsSUFBdkMsRUFBNkMsRUFDeEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnBELElBQUksQ0FBQ2ptQixNQUEzQixFQUFtQyxVQUFVcm9CLElBQVYsRUFBZ0JpRSxDQUFoQixFQUFtQjtJQUNuSSxJQUFJMU8sRUFBSixFQUFReUcsRUFBUjs7SUFDQSxPQUFRLENBQUMsR0FBR3BILEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7TUFBRXR2QyxHQUFHLEVBQUV3RTtJQUFQLENBQXBDLEVBQWdELENBQzNFcXFDLElBQUksQ0FBQ2xtQixTQUFMLEtBQW1CLFFBQXBCLElBQ08sQ0FBQyxHQUFHeHpCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NsQixVQUFwQyxDQUQvQixJQUVNLENBQUMsR0FBR2o1QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FIc0UsRUFJNUUsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDQyxVQUFyQyxFQUFpRCxDQUFDLEdBQUdwNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUM5c0MsZ0JBQUwsQ0FBc0J4QixJQUFJLENBQUM4TSxLQUFMLENBQVcsQ0FBWCxFQUFjb0UsU0FBcEMsRUFBK0MsSUFBL0MsSUFDdEVvOUIsSUFBSSxDQUFDOXNDLGdCQUFMLENBQXNCeEIsSUFBSSxDQUFDOE0sS0FBTCxDQUFXLENBQVgsRUFBY29FLFNBQXBDLEVBQStDLElBQS9DLENBRHNFLEdBRXRFbzlCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUYyQyxDQUFqRCxFQUVpQztJQUFFO0lBRm5DLENBRDZDLEVBSTdDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNFLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3I1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMsSUFBdkMsRUFBNkMsQ0FDekMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QyxJQUF2QyxFQUE2QyxDQUN6QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsT0FBMUIsQ0FBM0IsQ0FBMUMsRUFBMEc7SUFBRTtJQUE1RyxDQURzQyxFQUV0QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsRUFDckMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQjF4QyxJQUFJLENBQUM4TSxLQUFMLENBQVcsQ0FBWCxFQUFjb0UsU0FBcEMsRUFBK0MsVUFBVWt3QyxFQUFWLEVBQWMzbUQsQ0FBZCxFQUFpQjtNQUM3SSxJQUFJbEYsRUFBSjs7TUFDQSxPQUFRLENBQUMsR0FBR1gsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztRQUNqRXR2QyxHQUFHLEVBQUVoRixDQUQ0RDtRQUVqRSxTQUFPLENBQUMsR0FBRzdGLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsZUFBRCxFQUFrQjtVQUMzQyxVQUFVenhDLElBQUksQ0FBQzhNLEtBQUwsQ0FBVyxDQUFYLEVBQWNvRSxTQUFkLENBQXdCblcsTUFBeEIsR0FBaUMsQ0FBakMsSUFBc0NOO1FBREwsQ0FBbEIsQ0FBMUI7TUFGMEQsQ0FBckMsRUFLN0IsQ0FDQyxDQUFDLEdBQUc3RixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNHLFVBQXJDLEVBQWlELE9BQU8sQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsVUFBMUIsQ0FBM0IsQ0FBUCxHQUEyRSxJQUEzRSxHQUFrRixDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQjhSLEVBQUUsQ0FBQ2xrRCxRQUFILEdBQ3hKb3hDLElBQUksQ0FBQzl5QyxJQUFMLENBQVUwQixRQUFWLENBQW1Ca2tELEVBQUUsQ0FBQ2xrRCxRQUF0QixDQUR3SixHQUV4Sm94QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFGNkgsQ0FBbEYsR0FFZixJQUZsQyxFQUV3QztNQUFFO01BRjFDLENBREQsRUFJQyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSSxVQUFyQyxFQUFpRCxDQUFDLEdBQUd2NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQy81QyxFQUFFLEdBQUc2ckQsRUFBRSxDQUFDbHdDLFNBQVQsTUFBd0IsSUFBeEIsSUFBZ0MzYixFQUFFLEtBQUssS0FBSyxDQUE1QyxHQUFnREEsRUFBaEQsR0FBcUQrNEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQWhGLENBQWpELEVBQTRKO01BQUU7TUFBOUosQ0FKRCxDQUw2QixFQVU3QjtNQUFFO01BVjJCLENBQWhDO0lBV0gsQ0FiZ0YsQ0FBcEQsRUFhekI7SUFBSTtJQWJxQixDQURTLEVBQTFDLENBRnNDLENBQTFDLENBRHlDLEVBb0J6QyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsZUFBMUIsQ0FBM0IsQ0FBMUMsRUFBa0g7SUFBRTtJQUFwSCxDQURzQyxFQUV0QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDckMvdEMsSUFBSSxDQUFDckosR0FBTixJQUNPLENBQUMsR0FBRy9CLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7TUFDMUR0dkMsR0FBRyxFQUFFLENBRHFEO01BRTFEZ1MsTUFBTSxFQUFFLFFBRmtEO01BRzFEbmEsSUFBSSxFQUFFMEksSUFBSSxDQUFDcko7SUFIK0MsQ0FBbkMsRUFJeEIsQ0FBQyxHQUFHL0IsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ0dkMsSUFBSSxDQUFDckosR0FBaEMsQ0FKd0IsRUFJYztJQUFFO0lBSmhCLEVBSW1DeTNDLFVBSm5DLENBRC9CLEtBTU8sQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NWLFdBQXRDLEVBQW1ELENBQUMsR0FBR3o1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUEzQixDQUFuRCxFQUF5RztJQUFFO0lBQTNHLENBTi9CLENBRHNDLENBQTFDLENBRnNDLENBQTFDLENBcEJ5QyxFQWdDekMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFFBQTFCLENBQTNCLENBQTFDLEVBQTJHO0lBQUU7SUFBN0csQ0FEc0MsRUFFdEMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQixDQUFDLzVDLEVBQUUsR0FBR3lLLElBQUksQ0FBQzBHLE1BQVgsTUFBdUIsSUFBdkIsSUFBK0JuUixFQUFFLEtBQUssS0FBSyxDQUEzQyxHQUErQ0EsRUFBL0MsR0FBb0QrNEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQS9FLENBQTFDLEVBQW9KO0lBQUU7SUFBdEosQ0FGc0MsQ0FBMUMsQ0FoQ3lDLEVBb0N6QyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsYUFBMUIsQ0FBM0IsQ0FBMUMsRUFBZ0g7SUFBRTtJQUFsSCxDQURzQyxFQUV0QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsRUFDckMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQjF4QyxJQUFJLENBQUN1VixXQUFMLENBQWlCLENBQWpCLEVBQW9CckUsU0FBMUMsRUFBcUQsVUFBVWt3QyxFQUFWLEVBQWMzbUQsQ0FBZCxFQUFpQjtNQUNuSixJQUFJbEYsRUFBSjs7TUFDQSxPQUFRLENBQUMsR0FBR1gsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztRQUNqRXR2QyxHQUFHLEVBQUVoRixDQUQ0RDtRQUVqRSxTQUFPLENBQUMsR0FBRzdGLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMscUJBQUQsRUFBd0I7VUFDakQsVUFBVXp4QyxJQUFJLENBQUN1VixXQUFMLENBQWlCLENBQWpCLEVBQW9CckUsU0FBcEIsQ0FBOEJuVyxNQUE5QixHQUF1QyxDQUF2QyxJQUE0Q047UUFETCxDQUF4QixDQUExQjtNQUYwRCxDQUFyQyxFQUs3QixDQUNDLENBQUMsR0FBRzdGLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzZCLFdBQXJDLEVBQWtELE9BQU8sQ0FBQyxHQUFHaDdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsVUFBMUIsQ0FBM0IsQ0FBUCxHQUEyRSxJQUEzRSxHQUFrRixDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQjhSLEVBQUUsQ0FBQ2xrRCxRQUFILEdBQ3pKb3hDLElBQUksQ0FBQzl5QyxJQUFMLENBQVUwQixRQUFWLENBQW1Ca2tELEVBQUUsQ0FBQ2xrRCxRQUF0QixDQUR5SixHQUV6Sm94QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFGOEgsQ0FBbEYsR0FFaEIsSUFGbEMsRUFFd0M7TUFBRTtNQUYxQyxDQURELEVBSUMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzhCLFdBQXJDLEVBQWtELENBQUMsR0FBR2o3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQixDQUFDLzVDLEVBQUUsR0FBRzZyRCxFQUFFLENBQUNsd0MsU0FBVCxNQUF3QixJQUF4QixJQUFnQzNiLEVBQUUsS0FBSyxLQUFLLENBQTVDLEdBQWdEQSxFQUFoRCxHQUFxRCs0QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBaEYsQ0FBbEQsRUFBNko7TUFBRTtNQUEvSixDQUpELENBTDZCLEVBVTdCO01BQUU7TUFWMkIsQ0FBaEM7SUFXSCxDQWJnRixDQUFwRCxFQWF6QjtJQUFJO0lBYnFCLENBRFMsRUFBMUMsQ0FGc0MsQ0FBMUMsQ0FwQ3lDLEVBdUR4Q2pvQixJQUFJLENBQUNxaEQsUUFBTCxDQUFjdG1ELE1BQWQsR0FBdUIsQ0FBeEIsSUFDTyxDQUFDLEdBQUduRyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DZSxXQUFwQyxFQUFpRCxDQUN4RSxDQUFDLEdBQUdsN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFVBQTFCLENBQTNCLENBQTFDLEVBQTZHO0lBQUU7SUFBL0csQ0FEd0UsRUFFeEUsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLEVBQ3JDLENBQUMsR0FBR241QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0IxeEMsSUFBSSxDQUFDcWhELFFBQTNCLEVBQXFDLFVBQVVDLEdBQVYsRUFBZWxJLENBQWYsRUFBa0I7TUFDcEksT0FBUSxDQUFDLEdBQUd4a0QsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztRQUNqRXR2QyxHQUFHLEVBQUUyNUMsQ0FENEQ7UUFFakUsU0FBTyxDQUFDLEdBQUd4a0QsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxTQUFELEVBQVk7VUFBRSxRQUFRenhDLElBQUksQ0FBQ3FoRCxRQUFMLENBQWN0bUQsTUFBZCxHQUF1QixDQUF2QixJQUE0QnErQztRQUF0QyxDQUFaLENBQTFCO01BRjBELENBQXJDLEVBRzdCLENBQUMsR0FBR3hrRCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmdTLEdBQUcsQ0FBQ3p3QixJQUFKLEdBQ3hCeWQsSUFBSSxDQUFDOXlDLElBQUwsQ0FBVStsRCxnQkFBVixDQUEyQkQsR0FBRyxDQUFDendCLElBQS9CLENBRHdCLEdBRXhCeWQsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBRkgsQ0FINkIsRUFLQztNQUFFO01BTEgsQ0FBaEM7SUFNSCxDQVBnRixDQUFwRCxFQU96QjtJQUFJO0lBUHFCLENBRFMsRUFBMUMsQ0FGd0UsQ0FBakQsQ0FEL0IsSUFjTSxDQUFDLEdBQUdyekIsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBckVtQyxFQXNFeENudkMsSUFBSSxDQUFDOUMsUUFBTCxDQUFjbkMsTUFBZCxHQUF1QixDQUF4QixJQUNPLENBQUMsR0FBR25HLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NnQixXQUFwQyxFQUFpRCxDQUN4RSxDQUFDLEdBQUduN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFVBQTFCLENBQTNCLENBQTFDLEVBQTZHO0lBQUU7SUFBL0csQ0FEd0UsRUFFeEUsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNpQyxXQUFyQyxFQUFrRCxDQUFDLEdBQUdwN0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ0dkMsSUFBSSxDQUFDOUMsUUFBTCxDQUFjLENBQWQsRUFBaUJBLFFBQWpCLEdBQ3ZFOEMsSUFBSSxDQUFDOUMsUUFBTCxDQUNHZ1IsR0FESCxDQUNPLFVBQVV3aUIsS0FBVixFQUFpQjtNQUFFLE9BQU80ZCxJQUFJLENBQUM5eUMsSUFBTCxDQUFVMEIsUUFBVixDQUFtQnd6QixLQUFLLENBQUN4ekIsUUFBekIsQ0FBUDtJQUE0QyxDQUR0RSxFQUVHNkQsSUFGSCxDQUVRLElBRlIsQ0FEdUUsR0FJdkV1dEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBSjRDLENBQWxELEVBSWlDO0lBQUU7SUFKbkMsQ0FEc0MsQ0FBMUMsQ0FGd0UsQ0FBakQsQ0FEL0IsSUFXTSxDQUFDLEdBQUdyekIsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBakZtQyxFQWtGekMsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLGVBQTFCLENBQTNCLENBQTFDLEVBQWtIO0lBQUU7SUFBcEgsQ0FEc0MsRUFFdEMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNrQyxXQUFyQyxFQUFrRCxDQUFDLEdBQUdyN0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQ3R6QyxFQUFFLEdBQUdnRSxJQUFJLENBQUN3aEQsYUFBTCxDQUFtQixDQUFuQixFQUFzQjM0QyxJQUE1QixNQUFzQyxJQUF0QyxJQUE4QzdNLEVBQUUsS0FBSyxLQUFLLENBQTFELEdBQThEQSxFQUE5RCxHQUFtRXN5QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBOUYsQ0FBbEQsRUFBMks7SUFBRTtJQUE3SyxDQURzQyxDQUExQyxDQUZzQyxDQUExQyxDQWxGeUMsQ0FBN0MsQ0FEeUMsQ0FBN0MsQ0FENkMsQ0FBakQsQ0FKNkMsQ0FBakQsQ0FEc0MsQ0FBMUMsQ0FKNEUsQ0FBaEQsQ0FBaEM7RUF5R0gsQ0EzR2dGLENBQXBELEVBMkd6QjtFQUFJO0VBM0dxQixDQURZLEVBQTdDLENBRHlDLENBQTdDLENBRDZDLENBQWpELENBRDZFLENBQWpELENBQWhDO0FBb0hIOztBQUNEdnpCLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDN0lhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLFNBQVM2NEMsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxPQUFRLENBQUMsR0FBRy81QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RFLENBQUMsR0FBR242QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsV0FBMUIsQ0FBM0IsQ0FBMUMsRUFBOEc7RUFBRTtFQUFoSCxDQURzRSxFQUV0RSxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCeE4sUUFBUSxDQUFDd00sSUFBSSxDQUFDbjNDLElBQU4sQ0FBUixHQUMvRG0zQyxJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixNQUExQixDQUQrRCxHQUUvRDR3QyxJQUFJLENBQUNuM0MsSUFBTCxHQUNJbTNDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLE9BQTFCLENBREosR0FFSTR3QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFKZ0MsQ0FBMUMsRUFJcUM7RUFBRTtFQUp2QyxDQUZzRSxDQUExQyxDQUFoQztBQVFIOztBQUNEdnpCLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDZGE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsU0FBUzY0QyxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELE9BQVEsQ0FBQyxHQUFHLzVDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEUsQ0FBQyxHQUFHbjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixTQUExQixDQUEzQixDQUExQyxFQUE0RztFQUFFO0VBQTlHLENBRHNFLEVBRXRFLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUMvbEIsV0FBTCxHQUFtQitsQixJQUFJLENBQUNobUIsV0FBTCxDQUFpQmdtQixJQUFJLENBQUMvbEIsV0FBdEIsQ0FBbkIsR0FBd0QrbEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQW5GLENBQTFDLEVBQXdKO0VBQUU7RUFBMUosQ0FGc0UsQ0FBMUMsQ0FBaEM7QUFJSDs7QUFDRHZ6QixjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ1ZhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQUVsdUMsR0FBRyxFQUFFO0FBQVAsQ0FBakI7O0FBQ0EsSUFBSW11QyxVQUFVLEdBQUcsYUFBYyxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLElBQTFDLEVBQWdELENBQUM7QUFBRTtBQUFuRCxDQUEvQjs7QUFDQSxJQUFJRixVQUFVLEdBQUc7RUFBRXB1QyxHQUFHLEVBQUU7QUFBUCxDQUFqQjtBQUNBLElBQUlxdUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHLENBQUMsTUFBRCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjs7QUFDQSxTQUFTUixNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELElBQUkyUCxpQkFBaUIsR0FBRyxDQUFDLEdBQUcxcEQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFFBQTVCLENBQXhCOztFQUNBLElBQUlpRyxjQUFjLEdBQUcsQ0FBQyxHQUFHbGdELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixLQUE1QixDQUFyQjs7RUFDQSxPQUFRUCxJQUFJLENBQUNuM0MsSUFBTCxDQUFVNEQsTUFBVixLQUFxQixDQUF0QixJQUNBLENBQUMsR0FBR25HLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NwQixVQUFwQyxFQUFnRCxDQUN2RUMsVUFEdUUsRUFFdkUsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR241QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qm9QLGlCQUF2QixFQUEwQztJQUN0Q2xuRCxJQUFJLEVBQUUsY0FBY2IsTUFBZCxDQUFxQiszQyxJQUFJLENBQUNseEMsRUFBTCxDQUFRNG9CLFNBQTdCLEVBQXdDLGdCQUF4QyxDQURnQztJQUV0Q3pRLFdBQVcsRUFBRSs0QixJQUFJLENBQUNweUMsU0FBTCxDQUFlK2EsTUFBZixDQUFzQixzQkFBdEIsQ0FGeUI7SUFHdEMsWUFBWXEzQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK2EsTUFBZixDQUFzQixhQUF0QixFQUFxQyxlQUFyQyxDQUgwQjtJQUl0QyxTQUFPO0VBSitCLENBQTFDLEVBS0csSUFMSCxFQUtTO0VBQUU7RUFMWCxFQUt3QixDQUFDLE1BQUQsRUFBUyxhQUFULEVBQXdCLFVBQXhCLENBTHhCLENBRHVDLENBQTNDLENBRHNDLENBQTFDLENBRnVFLENBQWhELENBRHhCLEtBY0EsQ0FBQyxHQUFHcmlCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NsQixVQUFwQyxFQUFnRCxDQUN2RSxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFNBQTFCLENBQTNCLENBQTFDLEVBQTRHO0VBQUU7RUFBOUcsQ0FEdUUsRUFFdkUsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNELFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2w1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsRUFDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnBELElBQUksQ0FBQ24zQyxJQUEzQixFQUFpQyxVQUFVZ1gsSUFBVixFQUFnQjFPLEdBQWhCLEVBQXFCO0lBQ25JLE9BQVEsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqRXR2QyxHQUFHLEVBQUVBLEdBRDREO01BRWpFLFNBQU8sQ0FBQyxHQUFHN0ssS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxNQUFELEVBQVM7UUFDbEMsUUFBUTExQyxNQUFNLENBQUMwRCxHQUFELENBQU4sS0FBZ0I2dUMsSUFBSSxDQUFDbjNDLElBQUwsQ0FBVTRELE1BQVYsR0FBbUI7TUFEVCxDQUFULENBQTFCO0lBRjBELENBQXJDLEVBSzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7TUFDL0IsU0FBTyxtQkFEd0I7TUFFL0J6MkMsSUFBSSxFQUFFLGNBQWNmLE1BQWQsQ0FBcUIrM0MsSUFBSSxDQUFDbHhDLEVBQUwsQ0FBUTRvQixTQUE3QixFQUF3QyxVQUF4QyxFQUFvRHp2QixNQUFwRCxDQUEyRDRYLElBQUksQ0FBQy9RLEVBQWhFO0lBRnlCLENBQW5DLEVBR0csQ0FBQyxHQUFHeEksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUM3cEIsVUFBTCxDQUFnQnRXLElBQUksQ0FBQzhYLE1BQUwsQ0FBWTlVLFlBQVosQ0FBeUIsQ0FBekIsRUFBNEJ0SSxJQUE1QyxFQUFrRCxlQUFsRCxDQUEzQixJQUFpRyxLQUFqRyxHQUF5RyxDQUFDLEdBQUdqVSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzdwQixVQUFMLENBQWdCdFcsSUFBSSxDQUFDOFgsTUFBTCxDQUFZN1UsVUFBWixDQUF1QixDQUF2QixFQUEwQnZJLElBQTFDLEVBQWdELGVBQWhELENBQTNCLENBSDVHLEVBRzBNO0lBQUU7SUFINU0sRUFHK05tbEMsVUFIL04sQ0FEdUMsQ0FBM0MsQ0FERCxFQU9DLENBQUMsR0FBR3A1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNFLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3I1QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QjRGLGNBQXZCLEVBQXVDO01BQ25DaHdDLElBQUksRUFBRXdwQyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK2EsTUFBZixDQUFzQixNQUF0QixDQUQ2QjtNQUVuQ2pTLElBQUksRUFBRSxNQUY2QjtNQUduQzVOLElBQUksRUFBRSxjQUFjYixNQUFkLENBQXFCKzNDLElBQUksQ0FBQ2x4QyxFQUFMLENBQVE0b0IsU0FBN0IsRUFBd0MsVUFBeEMsRUFBb0R6dkIsTUFBcEQsQ0FBMkQ0WCxJQUFJLENBQUMvUSxFQUFoRSxFQUFvRSxPQUFwRTtJQUg2QixDQUF2QyxFQUlHLElBSkgsRUFJUztJQUFFO0lBSlgsRUFJd0IsQ0FBQyxNQUFELEVBQVMsTUFBVCxDQUp4QixDQUQ2QyxDQUFqRCxDQVBELENBTDZCLEVBbUI3QjtJQUFFO0lBbkIyQixDQUFoQztFQW9CSCxDQXJCZ0YsQ0FBcEQsRUFxQnpCO0VBQUk7RUFyQnFCLENBRFUsRUFBM0MsQ0FENkMsRUF5QjdDLENBQUMsR0FBR3hJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0csVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCNEYsY0FBdkIsRUFBdUM7SUFDbkNod0MsSUFBSSxFQUFFd3BDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrYSxNQUFmLENBQXNCLGtCQUF0QixDQUQ2QjtJQUVuQ2pTLElBQUksRUFBRSxFQUY2QjtJQUduQ3dQLE1BQU0sRUFBRSxRQUgyQjtJQUluQ3BkLElBQUksRUFBRSxjQUFjYixNQUFkLENBQXFCKzNDLElBQUksQ0FBQ2x4QyxFQUFMLENBQVE0b0IsU0FBN0IsRUFBd0MsU0FBeEMsQ0FKNkI7SUFLbkMsU0FBTztFQUw0QixDQUF2QyxFQU1HLElBTkgsRUFNUztFQUFFO0VBTlgsRUFNd0IsQ0FBQyxNQUFELEVBQVMsTUFBVCxDQU54QixDQUQ2QyxDQUFqRCxDQXpCNkMsQ0FBakQsQ0FEc0MsQ0FBMUMsQ0FGdUUsQ0FBaEQsQ0FkeEIsQ0FBUDtBQXNESDs7QUFDRHR4QixjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ3JFYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFbHVDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSW11QyxVQUFVLEdBQUcsQ0FBQyxNQUFELENBQWpCOztBQUNBLFNBQVNGLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsT0FBUSxDQUFDLEdBQUcvNUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0RSxDQUFDLEdBQUduNkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFdBQTFCLENBQTNCLENBQTFDLEVBQThHO0VBQUU7RUFBaEgsQ0FEc0UsRUFFdEUsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLEVBQ3JDLENBQUMsR0FBR241QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JwRCxJQUFJLENBQUM3bEIsT0FBM0IsRUFBb0MsVUFBVTd5QixHQUFWLEVBQWVrNkIsQ0FBZixFQUFrQjtJQUNuSSxJQUFJdjZCLEVBQUosRUFBUXlHLEVBQVI7O0lBQ0EsT0FBUSxDQUFDLEdBQUdwSCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pFdHZDLEdBQUcsRUFBRXF3QixDQUQ0RDtNQUVqRSxTQUFPLENBQUMsR0FBR2w3QixLQUFLLENBQUM2OEMsY0FBVixFQUEwQjtRQUM3QixVQUFVM2hCLENBQUMsS0FBS3Q3QixNQUFNLENBQUMwUCxJQUFQLENBQVlvcUMsSUFBSSxDQUFDN2xCLE9BQWpCLEVBQTBCMXRCLE1BQTFCLEdBQW1DO01BRHRCLENBQTFCO0lBRjBELENBQXJDLEVBSzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFlBQTFCLENBQTNCLElBQXNFLElBQXRFLEdBQTZFLENBQUMsR0FBRzlJLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCLENBQUMvNUMsRUFBRSxHQUFHKzRDLElBQUksQ0FBQzlsQixPQUFMLENBQWFpNUIsbUJBQWIsQ0FBaUM3ckQsR0FBRyxDQUFDNmtELFVBQXJDLENBQU4sTUFBNEQsSUFBNUQsSUFBb0VsbEQsRUFBRSxLQUFLLEtBQUssQ0FBaEYsR0FBb0ZBLEVBQXBGLEdBQXlGKzRDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUFwSCxDQUE3RSxHQUE2TixJQUF6USxFQUErUTtJQUFFO0lBQWpSLENBREQsRUFFQyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLE1BQTFCLENBQTNCLElBQWdFLElBQWhFLEdBQXVFLENBQUMsR0FBRzlJLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCLENBQUN0ekMsRUFBRSxHQUFHcEcsR0FBRyxDQUFDaTdCLElBQVYsTUFBb0IsSUFBcEIsSUFBNEI3MEIsRUFBRSxLQUFLLEtBQUssQ0FBeEMsR0FBNENBLEVBQTVDLEdBQWlEc3lDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUE1RSxDQUF2RSxHQUErSyxJQUEzTixFQUFpTztJQUFFO0lBQW5PLENBRkQsRUFHRXJ5QixHQUFHLENBQUM4ckQsYUFBTCxJQUNPLENBQUMsR0FBRzlzRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDcEIsVUFBdEMsRUFBa0QsQ0FDekUsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLGVBQTFCLENBQTNCLElBQXlFLElBQXBHLEVBQTBHO0lBQUU7SUFBNUcsQ0FEeUUsRUFFekUsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO01BQy9CdDhCLE1BQU0sRUFBRSxRQUR1QjtNQUUvQm5hLElBQUksRUFBRTFCLEdBQUcsQ0FBQzhyRDtJQUZxQixDQUFuQyxFQUdHLENBQUMsR0FBRzlzRCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQjE1QyxHQUFHLENBQUM4ckQsYUFBL0IsQ0FISCxFQUdrRDtJQUFFO0lBSHBELEVBR3VFOVQsVUFIdkUsQ0FGeUUsQ0FBbEQsQ0FEL0IsSUFRTSxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBWFAsQ0FMNkIsRUFpQjdCO0lBQUU7SUFqQjJCLENBQWhDO0VBa0JILENBcEJnRixDQUFwRCxFQW9CekI7RUFBSTtFQXBCcUIsQ0FEUyxFQUExQyxDQUZzRSxDQUExQyxDQUFoQztBQTBCSDs7QUFDRHo2QyxjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ2xDYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjs7QUFDQSxTQUFTRixNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELE9BQVEsQ0FBQyxHQUFHLzVDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEUsQ0FBQyxHQUFHbjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixPQUExQixDQUEzQixDQUExQyxFQUEwRztFQUFFO0VBQTVHLENBRHNFLEVBRXRFLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxFQUNyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCcEQsSUFBSSxDQUFDM2xCLFNBQUwsQ0FBZXpYLFNBQXJDLEVBQWdELFVBQVVwRSxLQUFWLEVBQWlCOVMsQ0FBakIsRUFBb0I7SUFDakosSUFBSXpFLEVBQUosRUFBUXlHLEVBQVI7O0lBQ0EsT0FBUSxDQUFDLEdBQUdwSCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pFdHZDLEdBQUcsRUFBRXpGLENBRDREO01BRWpFLFNBQU8sQ0FBQyxHQUFHcEYsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxlQUFELEVBQWtCO1FBQzNDLFFBQVF6M0MsQ0FBQyxLQUFLczBDLElBQUksQ0FBQzNsQixTQUFMLENBQWV6WCxTQUFmLENBQXlCblcsTUFBekIsR0FBa0M7TUFETCxDQUFsQixDQUExQjtJQUYwRCxDQUFyQyxFQUs3QixDQUNDLENBQUMsR0FBR25HLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0osVUFBckMsRUFBaUQsT0FBTyxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixVQUExQixDQUEzQixDQUFQLEdBQTJFLElBQTNFLEdBQWtGLENBQUMsR0FBRzlJLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCLENBQUMvNUMsRUFBRSxHQUFHKzRDLElBQUksQ0FBQzVsQixTQUFMLENBQWU1YixLQUFLLENBQUM1UCxRQUFyQixDQUFOLE1BQTBDLElBQTFDLElBQWtEM0gsRUFBRSxLQUFLLEtBQUssQ0FBOUQsR0FBa0VBLEVBQWxFLEdBQXVFKzRDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUFsRyxDQUFsRixHQUFnTixJQUFqUSxFQUF1UTtJQUFFO0lBQXpRLENBREQsRUFFQyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSCxVQUFyQyxFQUFpRCxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQ3R6QyxFQUFFLEdBQUc4USxLQUFLLENBQUNvRSxTQUFaLE1BQTJCLElBQTNCLElBQW1DbFYsRUFBRSxLQUFLLEtBQUssQ0FBL0MsR0FBbURBLEVBQW5ELEdBQXdEc3lDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUFuRixDQUFqRCxFQUErSjtJQUFFO0lBQWpLLENBRkQsQ0FMNkIsRUFRN0I7SUFBRTtJQVIyQixDQUFoQztFQVNILENBWGdGLENBQXBELEVBV3pCO0VBQUk7RUFYcUIsQ0FEUyxFQUExQyxDQUZzRSxDQUExQyxDQUFoQztBQWlCSDs7QUFDRHZ6QixjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ3pCYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRyxDQUFDLGFBQUQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFDYnI0QyxHQUFHLEVBQUUsVUFEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUlzNEMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHLENBQUMsSUFBRCxFQUFPLE1BQVAsQ0FBakI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJdUIsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLFNBQVNsQyxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELElBQUlwNUMsRUFBSjs7RUFDQSxJQUFJcTVDLGtCQUFrQixHQUFHLENBQUMsR0FBR2g2QyxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsU0FBNUIsQ0FBekI7O0VBQ0EsT0FBUSxDQUFDLEdBQUdqNkMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3BCLFVBQXJDLEVBQWlELENBQzdFLENBQUMsR0FBRy80QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2g1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNGLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2o1QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDLFNBQU8seURBRGdDO0lBRXZDNXBDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxDQUQ2QyxFQUs3QyxDQUFDLEdBQUdwUSxLQUFLLENBQUNtOUMsY0FBVixFQUEwQixDQUFDLEdBQUduOUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDO0lBQzdELHVCQUF1QlEsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtNQUFFLE9BQVNaLE1BQU0sQ0FBQ2p5QixRQUFQLENBQWdCbmMsTUFBakIsR0FBMkJndkMsTUFBbkM7SUFBNkMsQ0FBM0YsQ0FEc0M7SUFFN0QsU0FBTyxjQUZzRDtJQUc3RDVELFdBQVcsRUFBRWdELE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCdWlCLFdBQWpCLENBQTZCLDZDQUE3QixDQUhnRDtJQUk3RGpqQixJQUFJLEVBQUU7RUFKdUQsQ0FBdkMsRUFLdkIsSUFMdUIsRUFLakI7RUFBRTtFQUxlLEVBS0ZzeUMsVUFMRSxDQUExQixFQUtxQyxDQUNqQyxDQUFDbDVDLEtBQUssQ0FBQ3M5QyxVQUFQLEVBQW1CekQsTUFBTSxDQUFDanlCLFFBQVAsQ0FBZ0JuYyxNQUFuQyxDQURpQyxDQUxyQyxDQUw2QyxDQUFqRCxDQUQ2QyxFQWU3QyxDQUFDLEdBQUd6TCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNDLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3A1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0M7SUFDcENuNEMsR0FBRyxFQUFFLGFBRCtCO0lBRXBDLFNBQU8sK0JBRjZCO0lBR3BDcTVDLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtNQUFFLE9BQVFaLE1BQU0sQ0FBQ3psQixlQUFQLEVBQVI7SUFBb0MsQ0FBbEY7RUFIMkIsQ0FBeEMsRUFJRyxDQUNDLENBQUMsR0FBR3AwQixLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDNXBDLElBQUksRUFBRSxDQUFDelAsRUFBRSxHQUFHazVDLE1BQU0sQ0FBQ3hsQixZQUFQLENBQW9Cd2xCLE1BQU0sQ0FBQ2p5QixRQUFQLENBQWdCdmMsTUFBcEMsQ0FBTixNQUF1RCxJQUF2RCxJQUErRDFLLEVBQUUsS0FBSyxLQUFLLENBQTNFLEdBQStFQSxFQUEvRSxHQUFvRixLQURuRDtJQUV2QyxTQUFPO0VBRmdDLENBQTNDLEVBR0csSUFISCxFQUdTO0VBQUU7RUFIWCxFQUd3QixDQUFDLE1BQUQsQ0FIeEIsQ0FERCxFQUtDLENBQUMsR0FBR1gsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QyxTQUFPLENBQUMsR0FBR2g2QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDO01BQzFCLGNBQWNoRCxNQUFNLENBQUMxbEI7SUFESyxDQUFELEVBRTFCLG1EQUYwQixDQUExQixDQURnQztJQUl2Qy9qQixJQUFJLEVBQUU7RUFKaUMsQ0FBM0MsRUFLRyxJQUxILEVBS1M7RUFBRTtFQUxYLEVBS3dCLENBQUMsT0FBRCxDQUx4QixDQUxELENBSkgsRUFlRztFQUFJO0VBZlAsQ0FENkMsRUFpQjdDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ205QyxjQUFWLEVBQTBCLENBQUMsR0FBR245QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNFLFVBQXJDLEVBQWlELENBQ3ZFLENBQUMsR0FBR3I1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NHLFVBQXBDLEVBQWdELENBQzVDLENBQUMsR0FBR3Q1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7SUFDaEMsU0FBTyxtQ0FEeUI7SUFFaENrQixPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7TUFBRSxPQUFRWixNQUFNLENBQUNsbEIsY0FBUCxDQUFzQixFQUF0QixDQUFSO0lBQXFDLENBQW5GO0VBRnVCLENBQXBDLEVBR0csQ0FDQyxDQUFDLEdBQUczMEIsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QyxTQUFPLGNBRGdDO0lBRXZDNXBDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxDQURELEVBS0MsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixjQUE1QixDQUEzQixDQUE1QyxFQUFxSDtFQUFFO0VBQXZILENBTEQsQ0FISCxDQUQ0QyxFQVc1QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7SUFDaEMsU0FBTyxtQ0FEeUI7SUFFaENrQixPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7TUFBRSxPQUFRWixNQUFNLENBQUNsbEIsY0FBUCxDQUFzQixNQUF0QixDQUFSO0lBQXlDLENBQXZGO0VBRnVCLENBQXBDLEVBR0csQ0FDQyxDQUFDLEdBQUczMEIsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QyxTQUFPLGNBRGdDO0lBRXZDNXBDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxDQURELEVBS0MsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixNQUE1QixDQUEzQixDQUE1QyxFQUE2RztFQUFFO0VBQS9HLENBTEQsQ0FISCxDQVg0QyxFQXFCNUMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DO0lBQ2hDLFNBQU8sbUNBRHlCO0lBRWhDa0IsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBUVosTUFBTSxDQUFDbGxCLGNBQVAsQ0FBc0IsV0FBdEIsQ0FBUjtJQUE4QyxDQUE1RjtFQUZ1QixDQUFwQyxFQUdHLENBQ0MsQ0FBQyxHQUFHMzBCLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxjQURnQztJQUV2QzVwQyxJQUFJLEVBQUU7RUFGaUMsQ0FBM0MsQ0FERCxFQUtDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsV0FBNUIsQ0FBM0IsQ0FBNUMsRUFBa0g7RUFBRTtFQUFwSCxDQUxELENBSEgsQ0FyQjRDLEVBK0I1QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7SUFDaEMsU0FBTyxtQ0FEeUI7SUFFaENrQixPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7TUFBRSxPQUFRWixNQUFNLENBQUNsbEIsY0FBUCxDQUFzQixlQUF0QixDQUFSO0lBQWtELENBQWhHO0VBRnVCLENBQXBDLEVBR0csQ0FDQyxDQUFDLEdBQUczMEIsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QyxTQUFPLGNBRGdDO0lBRXZDNXBDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxDQURELEVBS0MsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixlQUE1QixDQUEzQixDQUE1QyxFQUFzSDtFQUFFO0VBQXhILENBTEQsQ0FISCxDQS9CNEMsQ0FBaEQsQ0FEdUUsQ0FBakQsRUEyQ3ZCO0VBQUk7RUEzQ21CLENBQTFCLEVBMkMwQixDQUN0QixDQUFDOUksS0FBSyxDQUFDODlDLEtBQVAsRUFBY2pFLE1BQU0sQ0FBQzFsQixjQUFyQixDQURzQixDQTNDMUIsQ0FqQjZDLENBQWpELENBZjZDLENBQWpELENBRDZFLEVBaUY3RSxDQUFDLEdBQUduMEIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSSxVQUFyQyxFQUFpRCxFQUM1QyxDQUFDLEdBQUd2NUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCakQsTUFBTSxDQUFDcmxCLGdCQUE3QixFQUErQyxVQUFVcHBCLElBQVYsRUFBZ0JpSCxLQUFoQixFQUF1QjtJQUNuSixPQUFRLENBQUMsR0FBR3JTLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO01BQUV2dkMsR0FBRyxFQUFFd0g7SUFBUCxDQUE5QyxFQUE4RCxDQUN6RixFQUFFQSxLQUFLLENBQUN3TCxRQUFOLE9BQXFCLFdBQXJCLElBQW9DeEwsS0FBSyxDQUFDd0wsUUFBTixPQUFxQixRQUEzRCxDQUFELElBQ08sQ0FBQyxHQUFHN2QsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztNQUMxRHR2QyxHQUFHLEVBQUUsQ0FEcUQ7TUFFMURyQyxFQUFFLEVBQUUsYUFBYTZKLEtBQUssQ0FBQ3dMLFFBQU4sRUFGeUM7TUFHMUQsU0FBTyw0SUFIbUQ7TUFJMURuYixJQUFJLEVBQUVtM0MsTUFBTSxDQUFDaGxCLE9BQVAsQ0FBZXpwQixJQUFJLENBQUMwcEIsUUFBcEIsRUFBOEJ6aUIsS0FBSyxDQUFDd0wsUUFBTixFQUE5QjtJQUpvRCxDQUFuQyxFQUt4QixDQUNDLENBQUMsR0FBRzdkLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ00sV0FBckMsRUFBa0QsQ0FDN0NydUMsSUFBSSxDQUFDa0MsU0FBTixJQUNPLENBQUMsR0FBR3ROLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1Qlgsa0JBQXZCLEVBQTJDO01BQ2xFbnZDLEdBQUcsRUFBRSxDQUQ2RDtNQUVsRSxTQUFPLDBCQUYyRDtNQUdsRXVGLElBQUksRUFBRTtJQUg0RCxDQUEzQyxDQUQvQixJQU1NLENBQUMsR0FBR3BRLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQVB3QyxFQVE3Q1YsTUFBTSxDQUFDbmxCLG9CQUFQLEdBQThCNXBCLFFBQTlCLENBQXVDdUgsS0FBSyxDQUFDd0wsUUFBTixFQUF2QyxDQUFELElBQ08sQ0FBQyxHQUFHN2QsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCWCxrQkFBdkIsRUFBMkM7TUFDbEVudkMsR0FBRyxFQUFFLENBRDZEO01BRWxFLFNBQU8seUJBRjJEO01BR2xFdUYsSUFBSSxFQUFFO0lBSDRELENBQTNDLENBRC9CLElBTU0sQ0FBQyxHQUFHcFEsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBZHdDLENBQWxELENBREQsRUFpQkVsb0MsS0FBSyxLQUFLLGVBQVYsSUFDR0EsS0FBSyxLQUFLLHFCQURiLElBRUdBLEtBQUssS0FBSyxTQUZiLElBR0dBLEtBQUssS0FBSyxLQUhkLElBSU8sQ0FBQyxHQUFHclMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCWCxrQkFBdkIsRUFBMkM7TUFDbEVudkMsR0FBRyxFQUFFLENBRDZEO01BRWxFLFNBQU8sV0FGMkQ7TUFHbEV1RixJQUFJLEVBQUU7SUFINEQsQ0FBM0MsQ0FKL0IsS0FTTyxDQUFDLEdBQUdwUSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJYLGtCQUF2QixFQUEyQztNQUNsRW52QyxHQUFHLEVBQUUsQ0FENkQ7TUFFbEV1RixJQUFJLEVBQUUsdUJBQXVCaUMsS0FGcUM7TUFHbEUsU0FBTztJQUgyRCxDQUEzQyxFQUl4QixJQUp3QixFQUlsQjtJQUFFO0lBSmdCLEVBSUgsQ0FBQyxNQUFELENBSkcsQ0FUL0IsQ0FqQkQsRUErQkMsQ0FBQyxHQUFHclMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDNkIsV0FBckMsRUFBa0QsQ0FBQyxHQUFHaDdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnFpRCxzQkFBakIsQ0FBd0N0M0MsS0FBSyxDQUFDd0wsUUFBTixFQUF4QyxDQUEzQixDQUFsRCxFQUF5STtJQUFFO0lBQTNJLENBL0JELENBTHdCLEVBcUN4QjtJQUFFO0lBckNzQixFQXFDVDI3QixVQXJDUyxDQUQvQixJQXVDTSxDQUFDLEdBQUd4NUMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBeENvRixDQUE5RCxFQXlDN0I7SUFBRztJQXpDMEIsQ0FBaEM7RUEwQ0gsQ0EzQ2dGLENBQXBELEVBMkN6QjtFQUFJO0VBM0NxQixDQURnQixFQUFqRCxDQWpGNkUsQ0FBakQsQ0FBaEM7QUFnSUg7O0FBQ0R6NkMsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUN0SmE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUcsQ0FBQyxJQUFELENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSXVCLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkcHdDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSXF3QyxXQUFXLEdBQUc7RUFDZHJ3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjs7QUFJQSxJQUFJc3dDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBR243QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7RUFDakUsU0FBTyxjQUQwRDtFQUVqRTlnQyxLQUFLLEVBQUUsSUFGMEQ7RUFHakVpbEIsTUFBTSxFQUFFLElBSHlEO0VBSWpFeXZCLE9BQU8sRUFBRSxXQUp3RDtFQUtqRUMsSUFBSSxFQUFFLE1BTDJEO0VBTWpFQyxLQUFLLEVBQUU7QUFOMEQsQ0FBckMsRUFPN0IsQ0FDQyxhQUFjLENBQUMsR0FBR2p0RCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M7RUFDaER3RSxDQUFDLEVBQUUsMHVFQUQ2QztFQUVoRHFQLElBQUksRUFBRTtBQUYwQyxDQUF0QyxDQURmLENBUDZCLEVBWTdCLENBQUM7QUFBRTtBQVowQixDQUFoQzs7QUFhQSxJQUFJNVIsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHcDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztFQUFFLFNBQU87QUFBVCxDQUFyQyxFQUFvRixJQUFwRixFQUEwRixDQUFDO0FBQUU7QUFBN0YsQ0FBaEM7O0FBQ0EsSUFBSWtDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFMXdDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSTJ3QyxXQUFXLEdBQUc7RUFDZDN3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUk0d0MsV0FBVyxHQUFHO0VBQ2Q1d0MsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJNndDLFdBQVcsR0FBRztFQUFFN3dDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSTh3QyxXQUFXLEdBQUc7RUFDZDl3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUkrd0MsV0FBVyxHQUFHO0VBQ2Qvd0MsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJZ3hDLFdBQVcsR0FBRztFQUFFaHhDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSWl4QyxXQUFXLEdBQUc7RUFDZGp4QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUlreEMsV0FBVyxHQUFHO0VBQ2RseEMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJbXhDLFdBQVcsR0FBRztFQUFFbnhDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSW94QyxXQUFXLEdBQUc7RUFDZHB4QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUlxeEMsV0FBVyxHQUFHO0VBQ2RyeEMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJc3hDLFdBQVcsR0FBRztFQUFFdHhDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSXV4QyxXQUFXLEdBQUc7RUFDZHZ4QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUl3eEMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUxeEMsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJMnhDLFdBQVcsR0FBRztFQUNkM3hDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSTR4QyxXQUFXLEdBQUc7RUFDZDV4QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUk2eEMsV0FBVyxHQUFHO0VBQ2Q3eEMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJOHhDLFdBQVcsR0FBRztFQUNkOXhDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSSt4QyxXQUFXLEdBQUc7RUFDZC94QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUk0MUMsV0FBVyxHQUFHO0VBQUU1MUMsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJNjFDLFdBQVcsR0FBRztFQUNkNzFDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSTgxQyxXQUFXLEdBQUc7RUFBRTkxQyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUkrMUMsV0FBVyxHQUFHO0VBQ2QvMUMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJZzJDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkbDJDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSW0yQyxXQUFXLEdBQUc7RUFDZG4yQyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUlvMkMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2RyMkMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJczJDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFdjJDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSXcyQyxXQUFXLEdBQUc7RUFDZHgyQyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUl5MkMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2QxMkMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJMjJDLFdBQVcsR0FBRztFQUFFMzJDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSTQyQyxXQUFXLEdBQUc7RUFDZDUyQyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUk2MkMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUvMkMsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJZzNDLFdBQVcsR0FBRztFQUNkaDNDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSWkzQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRWwzQyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUltM0MsV0FBVyxHQUFHO0VBQ2RuM0MsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJbzNDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFcjNDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSXMzQyxXQUFXLEdBQUc7RUFDZHQzQyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUl1M0MsV0FBVyxHQUFHO0VBQ2R2M0MsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJcWlELFdBQVcsR0FBRyxDQUFDLE1BQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZHRpRCxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUl1aUQsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsMEJBQTBCO0FBQTVCLENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUV6aUQsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJMGlELFdBQVcsR0FBRztFQUNkMWlELEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSTJpRCxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRTVpRCxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUk2aUQsV0FBVyxHQUFHO0VBQ2Q3aUQsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJOGlELFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkL2lELEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSWdqRCxXQUFXLEdBQUc7RUFDZGhqRCxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUlpakQsV0FBVyxHQUFHO0VBQ2RqakQsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJa2pELFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFbmpELEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSW9qRCxXQUFXLEdBQUc7RUFDZHBqRCxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUlxakQsV0FBVyxHQUFHO0VBQUVyakQsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJc2pELFdBQVcsR0FBRztFQUNkdGpELEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSXVqRCxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZHpqRCxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUkwakQsV0FBVyxHQUFHO0VBQ2QxakQsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJMmpELFdBQVcsR0FBRztFQUNkM2pELEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSTRqRCxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRTdqRCxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUk4akQsV0FBVyxHQUFHO0VBQ2Q5akQsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJK2pELFdBQVcsR0FBRztFQUFFL2pELEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSWdrRCxXQUFXLEdBQUc7RUFDZGhrRCxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUlpa0QsV0FBVyxHQUFHO0VBQUVqa0QsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJa2tELFdBQVcsR0FBRztFQUNkbGtELEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSW1rRCxXQUFXLEdBQUc7RUFBRW5rRCxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUlva0QsV0FBVyxHQUFHO0VBQ2Rwa0QsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJcWtELFlBQVksR0FBRztFQUFFcmtELEdBQUcsRUFBRTtBQUFQLENBQW5CO0FBQ0EsSUFBSXNrRCxZQUFZLEdBQUc7RUFDZnRrRCxHQUFHLEVBQUUsQ0FEVTtFQUVmLFNBQU87QUFGUSxDQUFuQjtBQUlBLElBQUl1a0QsWUFBWSxHQUFHO0VBQUV2a0QsR0FBRyxFQUFFO0FBQVAsQ0FBbkI7QUFDQSxJQUFJd2tELFlBQVksR0FBRztFQUNmeGtELEdBQUcsRUFBRSxDQURVO0VBRWYsU0FBTztBQUZRLENBQW5CO0FBSUEsSUFBSXlrRCxZQUFZLEdBQUc7RUFBRXprRCxHQUFHLEVBQUU7QUFBUCxDQUFuQjtBQUNBLElBQUkwa0QsWUFBWSxHQUFHO0VBQ2Yxa0QsR0FBRyxFQUFFLENBRFU7RUFFZixTQUFPO0FBRlEsQ0FBbkI7QUFJQSxJQUFJMmtELFlBQVksR0FBRztFQUNmM2tELEdBQUcsRUFBRSxDQURVO0VBRWYsU0FBTztBQUZRLENBQW5COztBQUlBLFNBQVNpdUMsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJcDVDLEVBQUo7O0VBQ0EsSUFBSXE1QyxrQkFBa0IsR0FBRyxDQUFDLEdBQUdoNkMsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFNBQTVCLENBQXpCOztFQUNBLE9BQVEsQ0FBQyxHQUFHajZDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQ2hGLENBQUMsR0FBR3A2QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLE9BQUQsQ0FBN0IsRUFBd0M7SUFDcEMsZ0JBQWdCQSxNQUFNLENBQUN6NkIsV0FEYTtJQUVwQy9HLEtBQUssRUFBRSxLQUY2QjtJQUdwQ2tsQyxPQUFPLEVBQUUxRCxNQUFNLENBQUN4NkI7RUFIb0IsQ0FBeEMsRUFJRztJQUNDLFdBQVMsQ0FBQyxHQUFHcmYsS0FBSyxDQUFDNDZDLE9BQVYsRUFBbUIsWUFBWTtNQUFFLE9BQU8sQ0FDN0MsQ0FBQyxHQUFHNTZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0osVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0gsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7UUFDdkMsU0FBTyxxQ0FEZ0M7UUFFdkM1cEMsSUFBSSxFQUFFO01BRmlDLENBQTNDLENBRDZDLEVBSzdDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ0YsVUFBbkMsRUFBK0MsQ0FBQyxHQUFHajVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUNyNkIsVUFBUCxDQUFrQnE2QixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQithLE1BQWpCLENBQXdCLGdCQUF4QixFQUEwQyxnQkFBMUMsRUFBNEQzSSxXQUE1RCxFQUFsQixDQUEzQixDQUEvQyxFQUF5SztNQUFFO01BQTNLLENBTDZDLENBQWpELENBRDZDLEVBUTdDLENBQUMsR0FBRzFaLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0QsVUFBckMsRUFBaUQsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUNyNkIsVUFBUCxDQUFrQnE2QixNQUFNLENBQUN2eUMsU0FBUCxDQUN6RithLE1BRHlGLENBQ2xGLHFCQURrRixFQUMzRCxnQkFEMkQsRUFFekYzSSxXQUZ5RixFQUFsQixDQUEzQixJQUUxQixLQUZ2QixFQUU4QjtNQUFFO01BRmhDLENBUjZDLENBQWpELENBRDZDLEVBYTdDLENBQUMsR0FBRzFaLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0MsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHcDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0UsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsY0FBRCxDQUE3QixFQUErQztRQUMzQyxTQUFPLHlCQURvQztRQUUzQzNwQyxJQUFJLEVBQUUycEMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrYSxNQUFqQixDQUF3QixTQUF4QixDQUZxQztRQUczQ3piLElBQUksRUFBRSxFQUhxQztRQUkzQ3l6QyxPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7VUFBRSxPQUFRWixNQUFNLENBQUN6NkIsV0FBUCxHQUFxQixLQUE3QjtRQUFzQyxDQUFwRjtNQUprQyxDQUEvQyxFQUtHLElBTEgsRUFLUztNQUFFO01BTFgsRUFLd0IsQ0FBQyxNQUFELENBTHhCLENBRDZDLEVBTzdDLENBQUMsR0FBR3BmLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsY0FBRCxDQUE3QixFQUErQztRQUMzQyxTQUFPLE9BRG9DO1FBRTNDM3BDLElBQUksRUFBRTJwQyxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQithLE1BQWpCLENBQXdCLFFBQXhCLENBRnFDO1FBRzNDemIsSUFBSSxFQUFFLFNBSHFDO1FBSTNDeXpDLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtVQUFFLE9BQVFaLE1BQU0sQ0FBQzFrQixhQUFQLENBQXFCeWtCLE1BQU0sQ0FBQzM1QixVQUE1QixFQUF3QzI1QixNQUFNLENBQUMxaEMsS0FBL0MsQ0FBUjtRQUFpRSxDQUEvRztNQUprQyxDQUEvQyxFQUtHLElBTEgsRUFLUztNQUFFO01BTFgsRUFLd0IsQ0FBQyxNQUFELENBTHhCLENBUDZDLENBQWpELENBRDZDLENBQWpELENBYjZDLENBQVA7SUE2QnRDLENBN0JLLENBRFY7SUErQkNqVCxDQUFDLEVBQUU7SUFBRTs7RUEvQk4sQ0FKSCxFQW9DRztFQUFFO0VBcENMLEVBb0NrQixDQUFDLGNBQUQsRUFBaUIsU0FBakIsQ0FwQ2xCLENBRGdGLEVBc0NoRixDQUFDLEdBQUdqRixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFDakMsU0FBTyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQ2hELE1BQU0sQ0FBQzVrQixNQUFSLEVBQWdCLDRDQUFoQixDQUExQjtFQUQwQixDQUFyQyxFQUVHLENBQ0MsQ0FBQyxHQUFHajFCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUNqQzN3QyxFQUFFLEVBQUVveEMsTUFBTSxDQUFDMWhDLEtBRHNCO0lBRWpDLFNBQU87RUFGMEIsQ0FBckMsRUFHRyxDQUNDLENBQUMsR0FBR2xZLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0ksVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHdjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0ssVUFBckMsRUFBaUQsQ0FDNUNJLE1BQU0sQ0FBQzFoQyxLQUFQLEtBQWlCLGVBQWpCLElBQ0cwaEMsTUFBTSxDQUFDMWhDLEtBQVAsS0FBaUIscUJBRHBCLElBRUcwaEMsTUFBTSxDQUFDMWhDLEtBQVAsS0FBaUIsU0FGcEIsSUFHRzBoQyxNQUFNLENBQUMxaEMsS0FBUCxLQUFpQixLQUhyQixJQUlPLENBQUMsR0FBR2xZLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1Qlgsa0JBQXZCLEVBQTJDO0lBQ2xFbnZDLEdBQUcsRUFBRSxDQUQ2RDtJQUVsRSxTQUFPLGNBRjJEO0lBR2xFdUYsSUFBSSxFQUFFO0VBSDRELENBQTNDLENBSi9CLElBU093cEMsTUFBTSxDQUFDMWhDLEtBQVAsS0FBaUIsaUJBQWxCLElBQ0ssQ0FBQyxHQUFHbFksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCWCxrQkFBdkIsRUFBMkM7SUFDbEVudkMsR0FBRyxFQUFFLENBRDZEO0lBRWxFLFNBQU8sY0FGMkQ7SUFHbEV1RixJQUFJLEVBQUU7RUFINEQsQ0FBM0MsQ0FEN0IsS0FNSyxDQUFDLEdBQUdwUSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJYLGtCQUF2QixFQUEyQztJQUNsRW52QyxHQUFHLEVBQUUsQ0FENkQ7SUFFbEV1RixJQUFJLEVBQUUsdUJBQXVCd3BDLE1BQU0sQ0FBQzFoQyxLQUY4QjtJQUdsRSxTQUFPO0VBSDJELENBQTNDLEVBSXhCLElBSndCLEVBSWxCO0VBQUU7RUFKZ0IsRUFJSCxDQUFDLE1BQUQsQ0FKRyxDQU43QixDQVZ1QyxFQXFCN0MsQ0FBQyxHQUFHbFksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDTSxXQUFyQyxFQUFrRCxDQUFDLEdBQUd6NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCcWlELHNCQUFqQixDQUF3Qy9QLE1BQU0sQ0FBQzFoQyxLQUFQLENBQWEyRixRQUFiLEVBQXhDLENBQTNCLENBQWxELEVBQWdKO0VBQUU7RUFBbEosQ0FyQjZDLEVBc0I3QyxDQUFDLEdBQUc3ZCxLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLFFBQUQsQ0FBN0IsRUFBeUM7SUFBRXQzQyxJQUFJLEVBQUVxM0MsTUFBTSxDQUFDdHNDO0VBQWYsQ0FBekMsRUFBcUUsSUFBckUsRUFBMkU7RUFBRTtFQUE3RSxFQUEwRixDQUFDLE1BQUQsQ0FBMUYsQ0F0QjZDLENBQWpELENBRDZDLEVBeUI3QyxDQUFDLEdBQUd0TixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM2QixXQUFyQyxFQUFrRCxDQUM3Q3BCLE1BQU0sQ0FBQzFoQyxLQUFQLElBQWdCLGNBQWpCLElBQ08sQ0FBQyxHQUFHbFksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEM7SUFBRXZ2QyxHQUFHLEVBQUU7RUFBUCxDQUE5QyxFQUEwRCxDQUNqRixDQUFDLEdBQUc3SyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLEtBQUQsQ0FBN0IsRUFBc0M7SUFDbEMzcEMsSUFBSSxFQUFFMnBDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK2EsTUFBakIsQ0FBd0IsYUFBeEIsRUFBdUMsb0JBQXZDLENBRDRCO0lBRWxDalMsSUFBSSxFQUFFLEtBRjRCO0lBR2xDNU4sSUFBSSxFQUFFLGFBQWFiLE1BQWIsQ0FBb0JpNEMsTUFBTSxDQUFDMzVCLFVBQTNCLEVBQXVDLHFCQUF2QyxDQUg0QjtJQUlsQyxTQUFPO0VBSjJCLENBQXRDLEVBS0csSUFMSCxFQUtTO0VBQUU7RUFMWCxFQUt3QixDQUFDLE1BQUQsRUFBUyxNQUFULENBTHhCLENBRGlGLEVBT2pGLENBQUMsR0FBR2pnQixLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLEtBQUQsQ0FBN0IsRUFBc0M7SUFDbEMzcEMsSUFBSSxFQUFFMnBDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK2EsTUFBakIsQ0FBd0IsY0FBeEIsRUFBd0MseUJBQXhDLENBRDRCO0lBRWxDalMsSUFBSSxFQUFFLEVBRjRCO0lBR2xDd1AsTUFBTSxFQUFFLFFBSDBCO0lBSWxDcGQsSUFBSSxFQUFFLGFBQWFiLE1BQWIsQ0FBb0JpNEMsTUFBTSxDQUFDMzVCLFVBQTNCLEVBQXVDLGNBQXZDLENBSjRCO0lBS2xDLFNBQU87RUFMMkIsQ0FBdEMsRUFNRyxJQU5ILEVBTVM7RUFBRTtFQU5YLEVBTXdCLENBQUMsTUFBRCxFQUFTLE1BQVQsQ0FOeEIsQ0FQaUYsQ0FBMUQsRUFjeEI7RUFBRztFQWRxQixDQUQvQixLQWdCTyxDQUFDLEdBQUdqZ0IsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2MsV0FBckMsRUFBa0QsQ0FDekUsQ0FBQyxHQUFHajdDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsS0FBRCxDQUE3QixFQUFzQztJQUNsQzNwQyxJQUFJLEVBQUUycEMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrYSxNQUFqQixDQUF3QixNQUF4QixDQUQ0QjtJQUVsQzdmLElBQUksRUFBRSxhQUFhYixNQUFiLENBQW9CaTRDLE1BQU0sQ0FBQzM1QixVQUEzQixFQUF1QyxHQUF2QyxFQUE0Q3RlLE1BQTVDLENBQW1EaTRDLE1BQU0sQ0FBQzFoQyxLQUExRCxDQUY0QjtJQUdsQyxTQUFPO0VBSDJCLENBQXRDLEVBSUcsSUFKSCxFQUlTO0VBQUU7RUFKWCxFQUl3QixDQUFDLE1BQUQsRUFBUyxNQUFULENBSnhCLENBRHlFLEVBTXhFMGhDLE1BQU0sQ0FBQzFoQyxLQUFQLEtBQWlCLE9BQWpCLElBQ0cwaEMsTUFBTSxDQUFDMWhDLEtBQVAsS0FBaUIsaUJBRHBCLElBRUcwaEMsTUFBTSxDQUFDMWhDLEtBQVAsS0FBaUIsZUFGckIsSUFHTyxDQUFDLEdBQUdsWSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxLQUFELENBQTdCLEVBQXNDO0lBQzdEaHZDLEdBQUcsRUFBRSxDQUR3RDtJQUU3RHFGLElBQUksRUFBRTJwQyxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQithLE1BQWpCLENBQXdCLFFBQXhCLENBRnVEO0lBRzdELFNBQU8sZUFIc0Q7SUFJN0RqUyxJQUFJLEVBQUUsUUFKdUQ7SUFLN0RpcUMsT0FBTyxFQUFFUixNQUFNLENBQUMza0I7RUFMNkMsQ0FBdEMsRUFNeEIsSUFOd0IsRUFNbEI7RUFBRTtFQU5nQixFQU1ILENBQUMsTUFBRCxDQU5HLENBSC9CLElBVU0sQ0FBQyxHQUFHbDFCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWhCbUUsQ0FBbEQsQ0FoQi9CLENBRDhDLEVBbUM3Q1YsTUFBTSxDQUFDbmxCLG9CQUFQLEdBQThCNXBCLFFBQTlCLENBQXVDOHVDLE1BQU0sQ0FBQzFoQyxLQUE5QyxDQUFELElBQ08sQ0FBQyxHQUFHbFksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCWCxrQkFBdkIsRUFBMkM7SUFDbEVudkMsR0FBRyxFQUFFLENBRDZEO0lBRWxFLFNBQU8sUUFGMkQ7SUFHbEV1RixJQUFJLEVBQUU7RUFINEQsQ0FBM0MsQ0FEL0IsSUFNTSxDQUFDLEdBQUdwUSxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0F6Q3dDLEVBMEM3Q1gsTUFBTSxDQUFDeHBCLE9BQVIsSUFDTyxDQUFDLEdBQUdwd0IsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCZCxNQUFNLENBQUMsV0FBRCxDQUE3QixFQUE0QztJQUNuRWh2QyxHQUFHLEVBQUUsQ0FEOEQ7SUFFbkVqQyxJQUFJLEVBQUVpeEMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJxaUQsc0JBQWpCLENBQXdDL1AsTUFBTSxDQUFDMWhDLEtBQVAsQ0FBYTJGLFFBQWIsRUFBeEMsQ0FGNkQ7SUFHbkUsY0FBYys3QixNQUFNLENBQUN4cEIsT0FIOEM7SUFJbkUsdUJBQXVCLElBSjRDO0lBS25FLFNBQU87RUFMNEQsQ0FBNUMsRUFNeEIsSUFOd0IsRUFNbEI7RUFBRTtFQU5nQixFQU1ILENBQUMsTUFBRCxFQUFTLFlBQVQsQ0FORyxDQUQvQixJQVFNLENBQUMsR0FBR3B3QixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FsRHdDLENBQWxELENBekI2QyxDQUFqRCxDQURELEVBK0VFWCxNQUFNLENBQUMxaEMsS0FBUCxLQUFpQixjQUFqQixJQUFtQzBoQyxNQUFNLENBQUNyM0MsSUFBUCxDQUFZa2hELGlCQUFaLEtBQWtDLEVBQXRFLElBQ08sQ0FBQyxHQUFHempELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNlLFdBQXJDLEVBQWtELENBQ3pFQyxXQUR5RSxFQUV6RSxDQUFDLEdBQUduN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQixDQUFDLzVDLEVBQUUsR0FBR2k1QyxNQUFNLENBQUNyM0MsSUFBUCxDQUFZa2hELGlCQUFsQixNQUF5QyxJQUF6QyxJQUFpRDlpRCxFQUFFLEtBQUssS0FBSyxDQUE3RCxHQUFpRUEsRUFBakUsR0FBc0UsRUFBakcsQ0FBM0MsRUFBaUo7RUFBRTtFQUFuSixDQUZ5RSxDQUFsRCxDQUQvQixJQUtNLENBQUMsR0FBR1gsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBcEZQLEVBcUZDYSxXQXJGRCxFQXNGRXhCLE1BQU0sQ0FBQzFoQyxLQUFQLEtBQWlCLGlCQUFsQixJQUNPLENBQUMsR0FBR2xZLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QmQsTUFBTSxDQUFDLGdCQUFELENBQTdCLEVBQWlEO0lBQ3hFaHZDLEdBQUcsRUFBRSxDQURtRTtJQUV4RXRJLElBQUksRUFBRXEzQyxNQUFNLENBQUNyM0MsSUFBUCxDQUFZZ3VCLE9BQVosQ0FBb0JnMEI7RUFGOEMsQ0FBakQsRUFHeEIsSUFId0IsRUFHbEI7RUFBRTtFQUhnQixFQUdILENBQUMsTUFBRCxDQUhHLENBRC9CLElBS08zSyxNQUFNLENBQUMxaEMsS0FBUCxLQUFpQixrQkFBbEIsSUFDSyxDQUFDLEdBQUdsWSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxpQkFBRCxDQUE3QixFQUFrRDtJQUN6RWh2QyxHQUFHLEVBQUUsQ0FEb0U7SUFFekV0SSxJQUFJLEVBQUVxM0MsTUFBTSxDQUFDcjNDO0VBRjRELENBQWxELEVBR3hCLElBSHdCLEVBR2xCO0VBQUU7RUFIZ0IsRUFHSCxDQUFDLE1BQUQsQ0FIRyxDQUQ3QixJQUtLcTNDLE1BQU0sQ0FBQzFoQyxLQUFQLEtBQWlCLE9BQWxCLElBQ0ssQ0FBQyxHQUFHbFksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCZCxNQUFNLENBQUMsY0FBRCxDQUE3QixFQUErQztJQUN0RWh2QyxHQUFHLEVBQUUsQ0FEaUU7SUFFdEV0SSxJQUFJLEVBQUVxM0MsTUFBTSxDQUFDcjNDO0VBRnlELENBQS9DLEVBR3hCLElBSHdCLEVBR2xCO0VBQUU7RUFIZ0IsRUFHSCxDQUFDLE1BQUQsQ0FIRyxDQUQ3QixJQUtLcTNDLE1BQU0sQ0FBQzFoQyxLQUFQLEtBQWlCLGVBQWxCLElBQ0ssQ0FBQyxHQUFHbFksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCZCxNQUFNLENBQUMsdUJBQUQsQ0FBN0IsRUFBd0Q7SUFDL0VodkMsR0FBRyxFQUFFLENBRDBFO0lBRS9FdEksSUFBSSxFQUFFcTNDLE1BQU0sQ0FBQ3IzQztFQUZrRSxDQUF4RCxFQUd4QixJQUh3QixFQUdsQjtFQUFFO0VBSGdCLEVBR0gsQ0FBQyxNQUFELENBSEcsQ0FEN0IsSUFLS3EzQyxNQUFNLENBQUMxaEMsS0FBUCxLQUFpQixhQUFsQixJQUNLLENBQUMsR0FBR2xZLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QmQsTUFBTSxDQUFDLGFBQUQsQ0FBN0IsRUFBOEM7SUFDckVodkMsR0FBRyxFQUFFLENBRGdFO0lBRXJFdEksSUFBSSxFQUFFcTNDLE1BQU0sQ0FBQ3IzQyxJQUFQLENBQVlndUI7RUFGbUQsQ0FBOUMsRUFHeEIsSUFId0IsRUFHbEI7RUFBRTtFQUhnQixFQUdILENBQUMsTUFBRCxDQUhHLENBRDdCLElBS0txcEIsTUFBTSxDQUFDMWhDLEtBQVAsS0FBaUIsZUFBbEIsSUFDSyxDQUFDLEdBQUdsWSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxjQUFELENBQTdCLEVBQStDO0lBQ3RFaHZDLEdBQUcsRUFBRSxDQURpRTtJQUV0RXRJLElBQUksRUFBRXEzQyxNQUFNLENBQUNyM0MsSUFBUCxDQUFZZ3VCO0VBRm9ELENBQS9DLEVBR3hCLElBSHdCLEVBR2xCO0VBQUU7RUFIZ0IsRUFHSCxDQUFDLE1BQUQsQ0FIRyxDQUQ3QixJQUtLcXBCLE1BQU0sQ0FBQzFoQyxLQUFQLEtBQWlCLGNBQWxCLElBQ0ssQ0FBQyxHQUFHbFksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCZCxNQUFNLENBQUMsYUFBRCxDQUE3QixFQUE4QztJQUNyRWh2QyxHQUFHLEVBQUUsQ0FEZ0U7SUFFckV0SSxJQUFJLEVBQUVxM0MsTUFBTSxDQUFDcjNDLElBQVAsQ0FBWWd1QjtFQUZtRCxDQUE5QyxFQUd4QixJQUh3QixFQUdsQjtFQUFFO0VBSGdCLEVBR0gsQ0FBQyxNQUFELENBSEcsQ0FEN0IsSUFLS3FwQixNQUFNLENBQUMxaEMsS0FBUCxLQUFpQixtQkFBbEIsSUFDSyxDQUFDLEdBQUdsWSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxrQkFBRCxDQUE3QixFQUFtRDtJQUMxRWh2QyxHQUFHLEVBQUUsQ0FEcUU7SUFFMUV0SSxJQUFJLEVBQUVxM0MsTUFBTSxDQUFDcjNDLElBQVAsQ0FBWWd1QjtFQUZ3RCxDQUFuRCxFQUd4QixJQUh3QixFQUdsQjtFQUFFO0VBSGdCLEVBR0gsQ0FBQyxNQUFELENBSEcsQ0FEN0IsSUFLS3FwQixNQUFNLENBQUMxaEMsS0FBUCxLQUFpQixtQkFBbEIsSUFDSyxDQUFDLEdBQUdsWSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxrQkFBRCxDQUE3QixFQUFtRDtJQUMxRWh2QyxHQUFHLEVBQUUsQ0FEcUU7SUFFMUV0SSxJQUFJLEVBQUVxM0MsTUFBTSxDQUFDcjNDLElBQVAsQ0FBWWd1QjtFQUZ3RCxDQUFuRCxFQUd4QixJQUh3QixFQUdsQjtFQUFFO0VBSGdCLEVBR0gsQ0FBQyxNQUFELENBSEcsQ0FEN0IsSUFLS3FwQixNQUFNLENBQUMxaEMsS0FBUCxLQUFpQixrQkFBbEIsSUFDSyxDQUFDLEdBQUdsWSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxpQkFBRCxDQUE3QixFQUFrRDtJQUN6RWh2QyxHQUFHLEVBQUUsRUFEb0U7SUFFekV0SSxJQUFJLEVBQUVxM0MsTUFBTSxDQUFDcjNDLElBQVAsQ0FBWWd1QjtFQUZ1RCxDQUFsRCxFQUd4QixJQUh3QixFQUdsQjtFQUFFO0VBSGdCLEVBR0gsQ0FBQyxNQUFELENBSEcsQ0FEN0IsSUFLS3FwQixNQUFNLENBQUMxaEMsS0FBUCxLQUFpQixVQUFsQixJQUNLLENBQUMsR0FBR2xZLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QmQsTUFBTSxDQUFDLFVBQUQsQ0FBN0IsRUFBMkM7SUFDbEVodkMsR0FBRyxFQUFFLEVBRDZEO0lBRWxFdEksSUFBSSxFQUFFcTNDLE1BQU0sQ0FBQ3IzQyxJQUFQLENBQVlndUI7RUFGZ0QsQ0FBM0MsRUFHeEIsSUFId0IsRUFHbEI7RUFBRTtFQUhnQixFQUdILENBQUMsTUFBRCxDQUhHLENBRDdCLElBS0txcEIsTUFBTSxDQUFDMWhDLEtBQVAsS0FBaUIsUUFBbEIsSUFDSyxDQUFDLEdBQUdsWSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxRQUFELENBQTdCLEVBQXlDO0lBQ2hFaHZDLEdBQUcsRUFBRSxFQUQyRDtJQUVoRXRJLElBQUksRUFBRXEzQyxNQUFNLENBQUNyM0MsSUFBUCxDQUFZZ3VCO0VBRjhDLENBQXpDLEVBR3hCLElBSHdCLEVBR2xCO0VBQUU7RUFIZ0IsRUFHSCxDQUFDLE1BQUQsQ0FIRyxDQUQ3QixJQUtLcXBCLE1BQU0sQ0FBQzFoQyxLQUFQLEtBQWlCLGVBQWxCLElBQ0ssQ0FBQyxHQUFHbFksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCZCxNQUFNLENBQUMsY0FBRCxDQUE3QixFQUErQztJQUN0RWh2QyxHQUFHLEVBQUUsRUFEaUU7SUFFdEV0SSxJQUFJLEVBQUVxM0MsTUFBTSxDQUFDcjNDLElBQVAsQ0FBWWd1QjtFQUZvRCxDQUEvQyxFQUd4QixJQUh3QixFQUdsQjtFQUFFO0VBSGdCLEVBR0gsQ0FBQyxNQUFELENBSEcsQ0FEN0IsSUFLS3FwQixNQUFNLENBQUMxaEMsS0FBUCxLQUFpQixLQUFsQixJQUNLLENBQUMsR0FBR2xZLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QmQsTUFBTSxDQUFDLEtBQUQsQ0FBN0IsRUFBc0M7SUFDN0RodkMsR0FBRyxFQUFFLEVBRHdEO0lBRTdEdEksSUFBSSxFQUFFcTNDLE1BQU0sQ0FBQ3IzQyxJQUFQLENBQVlndUI7RUFGMkMsQ0FBdEMsRUFHeEIsSUFId0IsRUFHbEI7RUFBRTtFQUhnQixFQUdILENBQUMsTUFBRCxDQUhHLENBRDdCLElBS0txcEIsTUFBTSxDQUFDMWhDLEtBQVAsS0FBaUIsa0JBQWxCLElBQ0ssQ0FBQyxHQUFHbFksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEM7SUFBRXZ2QyxHQUFHLEVBQUU7RUFBUCxDQUE5QyxFQUEyRCxDQUNsRixDQUFDLEdBQUc3SyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsb0JBQTlCLENBRGtGLEdBRWpGLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JsRCxNQUFNLENBQUNyM0MsSUFBUCxDQUFZZ3VCLE9BQWxDLEVBQTJDLFVBQVVubEIsSUFBVixFQUFnQlAsR0FBaEIsRUFBcUI7SUFDN0ksT0FBUSxDQUFDLEdBQUc3SyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pFdHZDLEdBQUcsRUFBRUEsR0FENEQ7TUFFakUsU0FBTyxDQUFDLEdBQUc3SyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLGtCQUFELEVBQXFCO1FBQUUsUUFBUWh5QyxHQUFHLEtBQUsrdUMsTUFBTSxDQUFDcjNDLElBQVAsQ0FBWWd1QixPQUFaLENBQW9CcHFCLE1BQXBCLEdBQTZCO01BQS9DLENBQXJCLENBQTFCO0lBRjBELENBQXJDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDa0MsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHcjdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ21DLFdBQXJDLEVBQWtELENBQzdDbHdDLElBQUksQ0FBQ3FrRCwyQkFBTixJQUNPLENBQUMsR0FBR3p2RCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDb0IsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHdjdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCZCxNQUFNLENBQUM3eEIsS0FBUCxDQUFhMm5DLGlCQUFiLENBQStCdGtELElBQUksQ0FBQ3FrRCwyQkFBcEMsQ0FBM0IsQ0FBbkQsRUFBaUo7SUFBRTtJQUFuSixDQUQvQixLQUVPLENBQUMsR0FBR3p2RCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDcUIsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHeDdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQityQixPQUFqQixDQUF5QixZQUF6QixDQUEzQixDQUFuRCxFQUF1SDtJQUFFO0lBQXpILENBRi9CLENBRDhDLENBQWxELENBRDhDLEVBTTdDam9CLElBQUksQ0FBQ3FrRCwyQkFBTCxJQUFvQyxHQUFyQyxJQUNPLENBQUMsR0FBR3p2RCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDc0IsV0FBckMsRUFBa0QsQ0FDeEVyd0MsSUFBSSxDQUFDdWtELG1CQUFOLElBQ08sQ0FBQyxHQUFHM3ZELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0N1QixXQUF0QyxFQUFtRCxDQUFDLEdBQUcxN0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJkLE1BQU0sQ0FBQzd4QixLQUFQLENBQWE2bkMsa0JBQWIsQ0FBZ0N4a0QsSUFBSSxDQUFDdWtELG1CQUFyQyxDQUEzQixDQUFuRCxFQUEwSTtJQUFFO0lBQTVJLENBRC9CLEtBRU8sQ0FBQyxHQUFHM3ZELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0N3QixXQUF0QyxFQUFtRCxDQUFDLEdBQUczN0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK3JCLE9BQWpCLENBQXlCLE1BQXpCLENBQTNCLENBQW5ELEVBQWlIO0lBQUU7SUFBbkgsQ0FGL0IsQ0FEeUUsQ0FBbEQsQ0FEL0IsSUFNT2pvQixJQUFJLENBQUNxa0QsMkJBQUwsSUFBb0MsR0FBckMsSUFDSyxDQUFDLEdBQUd6dkQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3lCLFdBQXJDLEVBQWtELENBQ3hFeHdDLElBQUksQ0FBQ3lrRCxtQkFBTixJQUNPLENBQUMsR0FBRzd2RCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDMEIsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHNzdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCZCxNQUFNLENBQUM3eEIsS0FBUCxDQUFhK25DLGtCQUFiLENBQWdDMWtELElBQUksQ0FBQ3lrRCxtQkFBckMsQ0FBM0IsQ0FBbkQsRUFBMEk7SUFBRTtJQUE1SSxDQUQvQixLQUVPLENBQUMsR0FBRzd2RCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDMkIsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHOTdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQityQixPQUFqQixDQUF5QixNQUF6QixDQUEzQixDQUFuRCxFQUFpSDtJQUFFO0lBQW5ILENBRi9CLENBRHlFLENBQWxELENBRDdCLElBTUtqb0IsSUFBSSxDQUFDcWtELDJCQUFMLElBQW9DLEdBQXJDLElBQ0ssQ0FBQyxHQUFHenZELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM0QixXQUFyQyxFQUFrRCxDQUN4RTN3QyxJQUFJLENBQUMya0QsMkJBQU4sSUFDTyxDQUFDLEdBQUcvdkQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQzZCLFdBQXRDLEVBQW1ELENBQUMsR0FBR2g4QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmQsTUFBTSxDQUFDN3hCLEtBQVAsQ0FBYWlvQyx3QkFBYixDQUFzQzVrRCxJQUFJLENBQUMya0QsMkJBQTNDLENBQTNCLENBQW5ELEVBQXdKO0lBQUU7SUFBMUosQ0FEL0IsS0FFTyxDQUFDLEdBQUcvdkQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQzhCLFdBQXRDLEVBQW1ELENBQUMsR0FBR2o4QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrckIsT0FBakIsQ0FBeUIsTUFBekIsQ0FBM0IsQ0FBbkQsRUFBaUg7SUFBRTtJQUFuSCxDQUYvQixDQUR5RSxDQUFsRCxDQUQ3QixLQU1LLENBQUMsR0FBR3J6QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDK0IsV0FBckMsRUFBa0QsQ0FDeEU5d0MsSUFBSSxDQUFDNmtELGdCQUFOLElBQ08sQ0FBQyxHQUFHandELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NnQyxXQUF0QyxFQUFtRCxDQUFDLEdBQUduOEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJkLE1BQU0sQ0FBQzd4QixLQUFQLENBQWFtb0MsT0FBYixDQUFxQjlrRCxJQUFJLENBQUM2a0QsZ0JBQTFCLENBQTNCLENBQW5ELEVBQTRIO0lBQUU7SUFBOUgsQ0FEL0IsS0FFTyxDQUFDLEdBQUdqd0QsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2lDLFdBQXRDLEVBQW1ELENBQUMsR0FBR3A4QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrckIsT0FBakIsQ0FBeUIsTUFBekIsQ0FBM0IsQ0FBbkQsRUFBaUg7SUFBRTtJQUFuSCxDQUYvQixDQUR5RSxDQUFsRCxDQU43QixDQWxCb0MsQ0FBbEQsQ0FERCxDQUg2QixFQWtDN0I7SUFBRTtJQWxDMkIsQ0FBaEM7RUFtQ0gsQ0FwQ2dGLENBQXBELEVBb0N6QjtFQUFJO0VBcENxQixDQUZxRCxFQUEzRCxFQXVDeEI7RUFBRztFQXZDcUIsQ0FEN0IsSUF5Q0t1bUIsTUFBTSxDQUFDMWhDLEtBQVAsS0FBaUIsc0JBQWxCLElBQ0ssQ0FBQyxHQUFHbFksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEM7SUFBRXZ2QyxHQUFHLEVBQUU7RUFBUCxDQUE5QyxFQUEyRCxDQUNsRixDQUFDLEdBQUc3SyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsd0JBQTlCLENBRGtGLEVBRWxGLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNrRCxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdyOEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDbUQsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHdDhDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLFlBQTVCLENBQTNCLElBQXdFLEtBQTNILEVBQWtJO0VBQUU7RUFBcEksQ0FEOEMsRUFFOUMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQ3ZDUyxNQUFNLENBQUNyM0MsSUFBUCxDQUFZZ3VCLE9BQVosQ0FBb0I0L0IseUJBQXJCLElBQ08sQ0FBQyxHQUFHbndELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NvQyxXQUF0QyxFQUFtRCxDQUFDLEdBQUd2OEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ256QyxLQUFQLENBQWFxaEIsS0FBYixDQUFtQnFvQywwQkFBbkIsQ0FBOEN4VyxNQUFNLENBQUNyM0MsSUFBUCxDQUFZZ3VCLE9BQVosQ0FBb0I0L0IseUJBQWxFLENBQTNCLENBQW5ELEVBQTZLO0VBQUU7RUFBL0ssQ0FEL0IsS0FFTyxDQUFDLEdBQUdud0QsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ3FDLFdBQXRDLEVBQW1ELENBQUMsR0FBR3g4QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrckIsT0FBakIsRUFBM0IsQ0FBbkQsRUFBMkc7RUFBRTtFQUE3RyxDQUYvQixDQUR3QyxDQUE1QyxDQUY4QyxDQUFsRCxDQUZrRixHQVVqRixDQUFDLEdBQUdyekIsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCbEQsTUFBTSxDQUFDcjNDLElBQVAsQ0FBWWd1QixPQUFaLENBQW9COC9CLFdBQTFDLEVBQXVELFVBQVVqbEQsSUFBVixFQUFnQlAsR0FBaEIsRUFBcUI7SUFDekosT0FBUSxDQUFDLEdBQUc3SyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pFdHZDLEdBQUcsRUFBRUEsR0FENEQ7TUFFakUsU0FBTyxDQUFDLEdBQUc3SyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLGlCQUFELEVBQW9CO1FBQUUsUUFBUWh5QyxHQUFHLEtBQUsrdUMsTUFBTSxDQUFDcjNDLElBQVAsQ0FBWWd1QixPQUFaLENBQW9COC9CLFdBQXBCLENBQWdDbHFELE1BQWhDLEdBQXlDO01BQTNELENBQXBCLENBQTFCO0lBRjBELENBQXJDLEVBRzdCLENBQ0V5ekMsTUFBTSxDQUFDcjNDLElBQVAsQ0FBWWd1QixPQUFaLENBQW9CNC9CLHlCQUFwQixLQUFrRCxHQUFuRCxJQUNPLENBQUMsR0FBR253RCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDc0MsV0FBckMsRUFBa0QsQ0FDeEVyeEMsSUFBSSxDQUFDNndCLElBQU4sSUFDTyxDQUFDLEdBQUdqOEIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3VDLFdBQXJDLEVBQWtELENBQ3pFLENBQUMsR0FBRzE4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCZCxNQUFNLENBQUM3eEIsS0FBUCxDQUFhdW9DLGdCQUFiLENBQThCbGxELElBQUksQ0FBQzZ3QixJQUFuQyxDQUEzQixDQUE1QyxFQUFrSDtJQUFFO0lBQXBILENBRHlFLEVBRXpFLENBQUMsR0FBR2o4QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsTUFBTSxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQy9wQixVQUFQLENBQWtCMWtCLElBQUksQ0FBQzQ5QyxVQUF2QixDQUEzQixDQUFOLEdBQXVFLElBQW5ILEVBQXlIO0lBQUU7SUFBM0gsQ0FGeUUsQ0FBbEQsQ0FEL0IsS0FLTyxDQUFDLEdBQUdocEQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ3dDLFdBQXRDLEVBQW1ELENBQUMsR0FBRzM4QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrckIsT0FBakIsRUFBM0IsQ0FBbkQsRUFBMkc7SUFBRTtJQUE3RyxDQUwvQixDQUR5RSxDQUFsRCxDQUQvQixLQVNPLENBQUMsR0FBR3J6QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDeUMsV0FBckMsRUFBa0QsQ0FDeEV4eEMsSUFBSSxDQUFDNndCLElBQU4sSUFDTyxDQUFDLEdBQUdqOEIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ3NHLFdBQXRDLEVBQW1ELENBQUMsR0FBR3pnRCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmQsTUFBTSxDQUFDN3hCLEtBQVAsQ0FBYXVvQyxnQkFBYixDQUE4QmxsRCxJQUFJLENBQUM2d0IsSUFBbkMsQ0FBM0IsQ0FBbkQsRUFBeUg7SUFBRTtJQUEzSCxDQUQvQixLQUVPLENBQUMsR0FBR2o4QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDdUcsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHMWdELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQityQixPQUFqQixFQUEzQixDQUFuRCxFQUEyRztJQUFFO0lBQTdHLENBRi9CLENBRHlFLEVBSXhFam9CLElBQUksQ0FBQzQ5QyxVQUFOLElBQ08sQ0FBQyxHQUFHaHBELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0N3RyxXQUF0QyxFQUFtRCxPQUFPLENBQUMsR0FBRzNnRCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDL3BCLFVBQVAsQ0FBa0Ixa0IsSUFBSSxDQUFDNDlDLFVBQXZCLENBQTNCLENBQVAsR0FBd0UsS0FBM0gsRUFBa0k7SUFBRTtJQUFwSSxDQUQvQixLQUVPLENBQUMsR0FBR2hwRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDeUcsV0FBdEMsRUFBbUQsTUFBTSxDQUFDLEdBQUc1Z0QsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK3JCLE9BQWpCLENBQXlCLFlBQXpCLENBQTNCLENBQU4sR0FBMkUsR0FBOUgsRUFBbUk7SUFBRTtJQUFySSxDQUYvQixDQUp5RSxDQUFsRCxDQVQvQixDQURELEdBa0JFLENBQUMsR0FBR3J6QixLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0IxeEMsSUFBSSxDQUFDdVYsV0FBM0IsRUFBd0MsVUFBVXBILElBQVYsRUFBZ0JsSyxDQUFoQixFQUFtQjtNQUN4SSxPQUFRLENBQUMsR0FBR3JQLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO1FBQUV2dkMsR0FBRyxFQUFFd0U7TUFBUCxDQUE5QyxFQUEwRCxFQUNyRixDQUFDLEdBQUdyUCxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0J2akMsSUFBSSxDQUFDK0MsU0FBM0IsRUFBc0MsVUFBVUEsU0FBVixFQUFxQmtOLENBQXJCLEVBQXdCO1FBQzNJLE9BQVEsQ0FBQyxHQUFHeHBCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7VUFDakV0dkMsR0FBRyxFQUFFMmUsQ0FENEQ7VUFFakUsU0FBTyxDQUFDLEdBQUd4cEIsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxzQkFBRCxFQUF5QjtZQUFFLFFBQVFyekIsQ0FBQyxLQUFLalEsSUFBSSxDQUFDK0MsU0FBTCxHQUFpQjtVQUFqQyxDQUF6QixDQUExQjtRQUYwRCxDQUFyQyxFQUc3QixDQUNDLENBQUMsR0FBR3RjLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QyxJQUF2QyxFQUE2QyxDQUN6QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DMEgsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHN2dELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQzJILFdBQXBDLEVBQWlELENBQUMsR0FBRzlnRCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixhQUE1QixDQUEzQixDQUFqRCxFQUF5SDtRQUFFO1FBQTNILENBRDZDLEVBRTdDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUNyQzc4QixTQUFTLENBQUNBLFNBQVgsSUFDTyxDQUFDLEdBQUd0YyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDNEcsV0FBckMsRUFBa0QsQ0FDeEV6a0MsU0FBUyxDQUFDaFUsUUFBWCxJQUNPLENBQUMsR0FBR3RJLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M2RyxXQUF0QyxFQUFtRCxNQUFNLENBQUMsR0FBR2hoRCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixVQUE1QixDQUEzQixDQUFOLEdBQTRFLElBQTVFLEdBQW1GLENBQUMsR0FBRzlJLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCZCxNQUFNLENBQUM3eEIsS0FBUCxDQUFhMWYsU0FBYixDQUF1QmlVLFNBQVMsQ0FBQ2hVLFFBQWpDLENBQTNCLENBQW5GLEdBQTRKLEdBQS9NLEVBQW9OO1FBQUU7UUFBdE4sQ0FEL0IsSUFFTSxDQUFDLEdBQUd0SSxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FIbUUsRUFJekUsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQzhILFdBQXRDLEVBQW1ELENBQUMsR0FBR2poRCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnArQixTQUFTLENBQUNBLFNBQXJDLENBQW5ELEVBQW9HO1FBQUU7UUFBdEcsQ0FKeUUsQ0FBbEQsQ0FEL0IsS0FPTyxDQUFDLEdBQUd0YyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDK0csV0FBdEMsRUFBbUQsQ0FBQyxHQUFHbGhELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQityQixPQUFqQixFQUEzQixDQUFuRCxFQUEyRztRQUFFO1FBQTdHLENBUC9CLENBRHNDLENBQTFDLENBRjZDLENBQWpELENBRHlDLENBQTdDLENBREQsQ0FINkIsRUFtQjdCO1FBQUU7UUFuQjJCLENBQWhDO01Bb0JILENBckJnRixDQUFwRCxFQXFCekI7TUFBSTtNQXJCcUIsQ0FEeUQsRUFBMUQsRUF1QjdCO01BQUc7TUF2QjBCLENBQWhDO0lBd0JILENBekJnRixDQUFwRCxFQXlCekI7SUFBSTtJQXpCcUIsQ0FsQjlCLEVBSDZCLEVBK0M3QjtJQUFFO0lBL0MyQixDQUFoQztFQWdESCxDQWpEZ0YsQ0FBcEQsRUFpRHpCO0VBQUk7RUFqRHFCLENBVnFELEVBQTNELEVBNER4QjtFQUFHO0VBNURxQixDQUQ3QixJQThES3VtQixNQUFNLENBQUMxaEMsS0FBUCxLQUFpQixvQkFBbEIsSUFDSyxDQUFDLEdBQUdsWSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztJQUFFdnZDLEdBQUcsRUFBRTtFQUFQLENBQTlDLEVBQTJELENBQ2xGLENBQUMsR0FBRzdLLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixzQkFBOUIsQ0FEa0YsRUFFbEYsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsbUJBQUQsQ0FBN0IsRUFBb0Q7SUFDaER0M0MsSUFBSSxFQUFFcTNDLE1BQU0sQ0FBQ3IzQyxJQUFQLENBQVlndUI7RUFEOEIsQ0FBcEQsRUFFRyxJQUZILEVBRVM7RUFBRTtFQUZYLEVBRXdCLENBQUMsTUFBRCxDQUZ4QixDQUZrRixDQUEzRCxFQUt4QjtFQUFHO0VBTHFCLENBRDdCLElBT0txcEIsTUFBTSxDQUFDMWhDLEtBQVAsS0FBaUIsUUFBbEIsSUFDSyxDQUFDLEdBQUdsWSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztJQUFFdnZDLEdBQUcsRUFBRTtFQUFQLENBQTlDLEVBQTJELENBQ2xGLENBQUMsR0FBRzdLLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixVQUE5QixDQURrRixHQUVqRixDQUFDLEdBQUd2NkMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCbEQsTUFBTSxDQUFDcjNDLElBQVAsQ0FBWWd1QixPQUFsQyxFQUEyQyxVQUFVbmxCLElBQVYsRUFBZ0JQLEdBQWhCLEVBQXFCO0lBQzdJLE9BQVEsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqRXR2QyxHQUFHLEVBQUVBLEdBRDREO01BRWpFLFNBQU8sQ0FBQyxHQUFHN0ssS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxpQkFBRCxFQUFvQjtRQUFFLFFBQVFoeUMsR0FBRyxLQUFLK3VDLE1BQU0sQ0FBQ3IzQyxJQUFQLENBQVlndUIsT0FBWixDQUFvQnBxQixNQUFwQixHQUE2QjtNQUEvQyxDQUFwQixDQUExQjtJQUYwRCxDQUFyQyxFQUc3QixDQUNDLENBQUMsR0FBR25HLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2dJLFdBQXJDLEVBQWtELENBQzdDLzFDLElBQUksQ0FBQ21sRCxXQUFOLElBQ08sQ0FBQyxHQUFHdndELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NpSCxXQUF0QyxFQUFtRCxDQUFDLEdBQUdwaEQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJkLE1BQU0sQ0FBQzd4QixLQUFQLENBQWE4L0IsVUFBYixDQUF3Qno4QyxJQUFJLENBQUNtbEQsV0FBN0IsQ0FBM0IsQ0FBbkQsRUFBMEg7SUFBRTtJQUE1SCxDQUQvQixLQUVPLENBQUMsR0FBR3Z3RCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDa0gsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHcmhELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLE1BQTVCLENBQTNCLENBQW5ELEVBQW9IO0lBQUU7SUFBdEgsQ0FGL0IsQ0FEOEMsQ0FBbEQsQ0FERCxHQU1FLENBQUMsR0FBRzlJLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQjF4QyxJQUFJLENBQUNvbEQsWUFBM0IsRUFBeUMsVUFBVWozQyxJQUFWLEVBQWdCbEssQ0FBaEIsRUFBbUI7TUFDekksT0FBUSxDQUFDLEdBQUdyUCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1FBQ2pFdHZDLEdBQUcsRUFBRXdFLENBRDREO1FBRWpFLFNBQU8sQ0FBQyxHQUFHclAsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxzQkFBRCxFQUF5QjtVQUFFLFFBQVF4dEMsQ0FBQyxLQUFLakUsSUFBSSxDQUFDb2xELFlBQUwsQ0FBa0JycUQsTUFBbEIsR0FBMkI7UUFBM0MsQ0FBekIsQ0FBMUI7TUFGMEQsQ0FBckMsRUFHN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNtSSxXQUFyQyxFQUFrRCxDQUM3Qy9uQyxJQUFJLENBQUN3dUMsTUFBTixJQUNPLENBQUMsR0FBRy9uRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDb0gsV0FBckMsRUFBa0QsQ0FDekUsQ0FBQyxHQUFHdmhELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ2ekMsTUFBTSxDQUFDb1MsSUFBSSxDQUFDd3VDLE1BQU4sQ0FBTixDQUFvQkMsY0FBcEIsRUFBM0IsQ0FBNUMsRUFBOEc7TUFBRTtNQUFoSCxDQUR5RSxFQUV6RSxDQUFDLEdBQUdob0QsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQm5oQyxJQUFJLENBQUMwdUMsUUFBaEMsQ0FBNUMsRUFBdUY7TUFBRTtNQUF6RixDQUZ5RSxFQUd4RTF1QyxJQUFJLENBQUMydUMsVUFBTixJQUNPLENBQUMsR0FBR2xvRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDcUgsV0FBdEMsRUFBbUQsTUFBTSxDQUFDLEdBQUd4aEQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsV0FBNUIsQ0FBM0IsQ0FBTixHQUE2RSxHQUE3RSxHQUFtRixDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDbHFCLFVBQVAsQ0FBa0JwVyxJQUFJLENBQUMydUMsVUFBdkIsQ0FBM0IsQ0FBbkYsR0FBb0osR0FBdk0sRUFBNE07TUFBRTtNQUE5TSxDQUQvQixJQUVNLENBQUMsR0FBR2xvRCxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FMbUUsQ0FBbEQsQ0FEL0IsS0FRTyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ3NILFdBQXRDLEVBQW1ELENBQUMsR0FBR3poRCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrckIsT0FBakIsQ0FBeUIsU0FBekIsRUFBb0MscUJBQXBDLENBQTNCLENBQW5ELEVBQTJJO01BQUU7TUFBN0ksQ0FSL0IsQ0FEOEMsQ0FBbEQsQ0FERCxDQUg2QixFQWU3QjtNQUFFO01BZjJCLENBQWhDO0lBZ0JILENBakJnRixDQUFwRCxFQWlCekI7SUFBSTtJQWpCcUIsQ0FOOUIsR0F3QkMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3VJLFdBQXJDLEVBQWtELEVBQzdDLENBQUMsR0FBRzFoRCxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0IxeEMsSUFBSSxDQUFDbVIsWUFBM0IsRUFBeUMsVUFBVWhELElBQVYsRUFBZ0JsSyxDQUFoQixFQUFtQjtNQUN6SSxPQUFRLENBQUMsR0FBR3JQLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFDakV0dkMsR0FBRyxFQUFFd0UsQ0FENEQ7UUFFakUsU0FBTyxDQUFDLEdBQUdyUCxLQUFLLENBQUM2OEMsY0FBVixFQUEwQjtVQUFFLFFBQVF4dEMsQ0FBQyxLQUFLakUsSUFBSSxDQUFDbVIsWUFBTCxDQUFrQnBXLE1BQWxCLEdBQTJCO1FBQTNDLENBQTFCO01BRjBELENBQXJDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDLElBQXZDLEVBQTZDLENBQ3pDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ3dJLFdBQXBDLEVBQWlELENBQUMsR0FBRzNoRCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixjQUE1QixDQUEzQixDQUFqRCxFQUEwSDtNQUFFO01BQTVILENBRHNDLEVBRXJDeVEsSUFBSSxDQUFDdEYsSUFBTixJQUNPLENBQUMsR0FBR2pVLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0N5SCxXQUFwQyxFQUFpRCxDQUFDLEdBQUc1aEQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ2xxQixVQUFQLENBQWtCcFcsSUFBSSxDQUFDdEYsSUFBdkIsQ0FBM0IsQ0FBakQsRUFBMkc7TUFBRTtNQUE3RyxDQUQvQixLQUVPLENBQUMsR0FBR2pVLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MwSCxXQUFwQyxFQUFpRCxDQUFDLEdBQUc3aEQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK3JCLE9BQWpCLEVBQTNCLENBQWpELEVBQXlHO01BQUU7TUFBM0csQ0FGL0IsQ0FGc0MsQ0FBMUMsQ0FEeUMsQ0FBN0MsQ0FERCxDQUg2QixFQVk3QjtNQUFFO01BWjJCLENBQWhDO0lBYUgsQ0FkZ0YsQ0FBcEQsRUFjekI7SUFBSTtJQWRxQixDQURpQixJQWdCN0MsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQjF4QyxJQUFJLENBQUNvUixVQUEzQixFQUF1QyxVQUFVakQsSUFBVixFQUFnQmxLLENBQWhCLEVBQW1CO01BQ3ZJLE9BQVEsQ0FBQyxHQUFHclAsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztRQUNqRXR2QyxHQUFHLEVBQUV3RSxDQUQ0RDtRQUVqRSxTQUFPLENBQUMsR0FBR3JQLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCO1VBQUUsUUFBUXh0QyxDQUFDLEtBQUtqRSxJQUFJLENBQUNvUixVQUFMLENBQWdCclcsTUFBaEIsR0FBeUI7UUFBekMsQ0FBMUI7TUFGMEQsQ0FBckMsRUFHN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMsSUFBdkMsRUFBNkMsQ0FDekMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DMkksV0FBcEMsRUFBaUQsQ0FBQyxHQUFHOWhELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLFlBQTVCLENBQTNCLENBQWpELEVBQXdIO01BQUU7TUFBMUgsQ0FEc0MsRUFFckN5USxJQUFJLENBQUN0RixJQUFOLElBQ08sQ0FBQyxHQUFHalUsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQzRILFdBQXBDLEVBQWlELENBQUMsR0FBRy9oRCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDbHFCLFVBQVAsQ0FBa0JwVyxJQUFJLENBQUN0RixJQUF2QixDQUEzQixDQUFqRCxFQUEyRztNQUFFO01BQTdHLENBRC9CLEtBRU8sQ0FBQyxHQUFHalUsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQzZILFdBQXBDLEVBQWlELENBQUMsR0FBR2hpRCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrckIsT0FBakIsRUFBM0IsQ0FBakQsRUFBeUc7TUFBRTtNQUEzRyxDQUYvQixDQUZzQyxDQUExQyxDQUR5QyxDQUE3QyxDQURELENBSDZCLEVBWTdCO01BQUU7TUFaMkIsQ0FBaEM7SUFhSCxDQWRnRixDQUFwRCxFQWN6QjtJQUFJO0lBZHFCLENBaEJpQixHQStCOUMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QyxJQUF2QyxFQUE2QyxDQUN6QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M4SSxXQUFwQyxFQUFpRCxDQUFDLEdBQUdqaUQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsUUFBNUIsQ0FBM0IsQ0FBakQsRUFBb0g7SUFBRTtJQUF0SCxDQURzQyxFQUV0QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDckMvdEMsSUFBSSxDQUFDcWxELGFBQU4sSUFDTyxDQUFDLEdBQUd6d0QsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQytILFdBQXRDLEVBQW1ELENBQUMsR0FBR2xpRCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmQsTUFBTSxDQUFDN3hCLEtBQVAsQ0FBYTJvQyxZQUFiLENBQTBCdGxELElBQUksQ0FBQ3FsRCxhQUEvQixDQUEzQixDQUFuRCxFQUE4SDtJQUFFO0lBQWhJLENBRC9CLEtBRU8sQ0FBQyxHQUFHendELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NnSSxXQUF0QyxFQUFtRCxDQUFDLEdBQUduaUQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK3JCLE9BQWpCLEVBQTNCLENBQW5ELEVBQTJHO0lBQUU7SUFBN0csQ0FGL0IsQ0FEc0MsQ0FBMUMsQ0FGc0MsQ0FBMUMsQ0FEeUMsQ0FBN0MsQ0EvQjhDLENBQWxELENBeEJELENBSDZCLEVBcUU3QjtJQUFFO0lBckUyQixDQUFoQztFQXNFSCxDQXZFZ0YsQ0FBcEQsRUF1RXpCO0VBQUk7RUF2RXFCLENBRnFELEVBQTNELEVBMEV4QjtFQUFHO0VBMUVxQixDQUQ3QixJQTRFS3VtQixNQUFNLENBQUMxaEMsS0FBUCxLQUFpQixzQkFBbEIsSUFDSyxDQUFDLEdBQUdsWSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztJQUFFdnZDLEdBQUcsRUFBRTtFQUFQLENBQTlDLEVBQTJELENBQ2xGLENBQUMsR0FBRzdLLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4Qix3QkFBOUIsQ0FEa0YsRUFFbEYsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMscUJBQUQsQ0FBN0IsRUFBc0Q7SUFDbER0M0MsSUFBSSxFQUFFcTNDLE1BQU0sQ0FBQ3IzQyxJQUFQLENBQVlndUI7RUFEZ0MsQ0FBdEQsRUFFRyxJQUZILEVBRVM7RUFBRTtFQUZYLEVBRXdCLENBQUMsTUFBRCxDQUZ4QixDQUZrRixDQUEzRCxFQUt4QjtFQUFHO0VBTHFCLENBRDdCLElBT0txcEIsTUFBTSxDQUFDMWhDLEtBQVAsS0FBaUIsZUFBbEIsSUFDSyxDQUFDLEdBQUdsWSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztJQUFFdnZDLEdBQUcsRUFBRTtFQUFQLENBQTlDLEVBQTJELENBQ2xGLENBQUMsR0FBRzdLLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixpQkFBOUIsQ0FEa0YsR0FFakYsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQmxELE1BQU0sQ0FBQ3IzQyxJQUFQLENBQVlndUIsT0FBbEMsRUFBMkMsVUFBVW5sQixJQUFWLEVBQWdCUCxHQUFoQixFQUFxQjtJQUM3SSxPQUFRLENBQUMsR0FBRzdLLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7TUFDakV0dkMsR0FBRyxFQUFFQSxHQUQ0RDtNQUVqRSxTQUFPLENBQUMsR0FBRzdLLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsaUJBQUQsRUFBb0I7UUFBRSxRQUFRaHlDLEdBQUcsS0FBSyt1QyxNQUFNLENBQUNyM0MsSUFBUCxDQUFZZ3VCLE9BQVosQ0FBb0JwcUIsTUFBcEIsR0FBNkI7TUFBL0MsQ0FBcEIsQ0FBMUI7SUFGMEQsQ0FBckMsRUFHN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsQ0FDdEMvdEMsSUFBSSxDQUFDckosR0FBTixJQUNPLENBQUMsR0FBRy9CLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNpSSxXQUFyQyxFQUFrRCxDQUN6RSxDQUFDLEdBQUdwaUQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO01BQy9CejJDLElBQUksRUFBRTBJLElBQUksQ0FBQ3JKLEdBRG9CO01BRS9COGEsTUFBTSxFQUFFO0lBRnVCLENBQW5DLEVBR0csQ0FBQyxHQUFHN2MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ0dkMsSUFBSSxDQUFDckosR0FBaEMsQ0FISCxFQUd5QztJQUFFO0lBSDNDLEVBRzhEbXJELFdBSDlELENBRHlFLENBQWxELENBRC9CLEtBT08sQ0FBQyxHQUFHbHRELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NnVCxXQUF0QyxFQUFtRCxDQUFDLEdBQUdudEQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK3JCLE9BQWpCLENBQXlCLEtBQXpCLENBQTNCLENBQW5ELEVBQWdIO0lBQUU7SUFBbEgsQ0FQL0IsQ0FEdUMsQ0FBM0MsQ0FERCxFQVdDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNpVSxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdwdEQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLEVBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0IxeEMsSUFBSSxDQUFDOUMsUUFBM0IsRUFBcUMsVUFBVUEsUUFBVixFQUFvQitHLENBQXBCLEVBQXVCO01BQ3pJLE9BQVEsQ0FBQyxHQUFHclAsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztRQUFFdHZDLEdBQUcsRUFBRXdFO01BQVAsQ0FBckMsRUFBaUQsQ0FDN0UsQ0FBQyxHQUFHclAsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDLElBQXZDLEVBQTZDLENBQ3pDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ2tVLFdBQXBDLEVBQWlELENBQUMsR0FBR3J0RCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixVQUE1QixDQUEzQixDQUFqRCxFQUFzSDtNQUFFO01BQXhILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUNyQzd3QyxRQUFRLENBQUMyekIsSUFBVixJQUNPLENBQUMsR0FBR2o4QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDbVQsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHdHRELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCZCxNQUFNLENBQUM3eEIsS0FBUCxDQUFhMWYsU0FBYixDQUF1QkMsUUFBUSxDQUFDMnpCLElBQWhDLENBQTNCLENBQW5ELEVBQXNIO01BQUU7TUFBeEgsQ0FEL0IsS0FFTyxDQUFDLEdBQUdqOEIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ29ULFdBQXRDLEVBQW1ELENBQUMsR0FBR3Z0RCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrckIsT0FBakIsRUFBM0IsQ0FBbkQsRUFBMkc7TUFBRTtNQUE3RyxDQUYvQixDQURzQyxDQUExQyxDQUZzQyxDQUExQyxDQUR5QyxDQUE3QyxDQUQ2RSxDQUFqRCxDQUFoQztJQVlILENBYmdGLENBQXBELEVBYXpCO0lBQUk7SUFicUIsQ0FEVSxJQWV0QyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCMXhDLElBQUksQ0FBQ3doRCxhQUEzQixFQUEwQyxVQUFVQSxhQUFWLEVBQXlCdjlDLENBQXpCLEVBQTRCO01BQ25KLE9BQVEsQ0FBQyxHQUFHclAsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztRQUFFdHZDLEdBQUcsRUFBRXdFO01BQVAsQ0FBckMsRUFBaUQsQ0FDN0UsQ0FBQyxHQUFHclAsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDLElBQXZDLEVBQTZDLENBQ3pDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ3FVLFdBQXBDLEVBQWlELENBQUMsR0FBR3h0RCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixNQUE1QixDQUEzQixDQUFqRCxFQUFrSDtNQUFFO01BQXBILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUNyQ3lULGFBQWEsQ0FBQzM0QyxJQUFmLElBQ08sQ0FBQyxHQUFHalUsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ3NULFdBQXRDLEVBQW1ELENBQUMsR0FBR3p0RCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDbHFCLFVBQVAsQ0FBa0JpOUIsYUFBYSxDQUFDMzRDLElBQWhDLENBQTNCLENBQW5ELEVBQXNIO01BQUU7TUFBeEgsQ0FEL0IsS0FFTyxDQUFDLEdBQUdqVSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDdVQsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHMXRELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQityQixPQUFqQixFQUEzQixDQUFuRCxFQUEyRztNQUFFO01BQTdHLENBRi9CLENBRHNDLENBQTFDLENBRnNDLENBQTFDLENBRHlDLENBQTdDLENBRDZFLENBQWpELENBQWhDO0lBWUgsQ0FiZ0YsQ0FBcEQsRUFhekI7SUFBSTtJQWJxQixDQWZVLEVBQTNDLENBRDhDLEdBK0I3QyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCMXhDLElBQUksQ0FBQzhNLEtBQTNCLEVBQWtDLFVBQVVxQixJQUFWLEVBQWdCbEssQ0FBaEIsRUFBbUI7TUFDbEksT0FBUSxDQUFDLEdBQUdyUCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1FBQUV0dkMsR0FBRyxFQUFFd0U7TUFBUCxDQUFyQyxFQUFpRCxFQUM1RSxDQUFDLEdBQUdyUCxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0J2akMsSUFBSSxDQUFDK0MsU0FBM0IsRUFBc0MsVUFBVUEsU0FBVixFQUFxQjVKLENBQXJCLEVBQXdCO1FBQzNJLE9BQVEsQ0FBQyxHQUFHMVMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztVQUNqRXR2QyxHQUFHLEVBQUU2SCxDQUQ0RDtVQUVqRSxTQUFPO1FBRjBELENBQXJDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHMVMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDLElBQXZDLEVBQTZDLENBQ3pDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0N3VSxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUczdEQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixPQUE1QixDQUEzQixDQUExQyxFQUE0RztRQUFFO1FBQTlHLENBRDZDLEVBRTdDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUNyQzc4QixTQUFTLENBQUNoVSxRQUFYLElBQ08sQ0FBQyxHQUFHdEksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ3lULFdBQXRDLEVBQW1ELE9BQU8sQ0FBQyxHQUFHNXRELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCZCxNQUFNLENBQUM3eEIsS0FBUCxDQUFhMWYsU0FBYixDQUF1QmlVLFNBQVMsQ0FBQ2hVLFFBQWpDLENBQTNCLENBQVAsR0FBZ0YsSUFBbkksRUFBeUk7UUFBRTtRQUEzSSxDQUQvQixJQUVNLENBQUMsR0FBR3RJLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQUhnQyxFQUlyQ2orQixTQUFTLENBQUNBLFNBQVgsSUFDTyxDQUFDLEdBQUd0YyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDMFQsV0FBckMsRUFBa0QsQ0FDekUsQ0FBQyxHQUFHN3RELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJwK0IsU0FBUyxDQUFDQSxTQUFyQyxDQUE1QyxFQUE2RjtRQUFFO1FBQS9GLENBRHlFLENBQWxELENBRC9CLEtBSU8sQ0FBQyxHQUFHdGMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQzJULFdBQXRDLEVBQW1ELENBQUMsR0FBRzl0RCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrckIsT0FBakIsRUFBM0IsQ0FBbkQsRUFBMkc7UUFBRTtRQUE3RyxDQUovQixDQUpzQyxDQUExQyxDQUY2QyxDQUFqRCxDQUR5QyxDQUE3QyxDQURELENBSDZCLENBQWhDO01Bb0JILENBckJnRixDQUFwRCxFQXFCekI7TUFBSTtNQXJCcUIsQ0FEZ0QsRUFBakQsQ0FBaEM7SUF3QkgsQ0F6QmdGLENBQXBELEVBeUJ6QjtJQUFJO0lBekJxQixDQS9CaUIsSUF5RDdDLENBQUMsR0FBR3J6QixLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0IxeEMsSUFBSSxDQUFDcWhELFFBQTNCLEVBQXFDLFVBQVVBLFFBQVYsRUFBb0JwOUMsQ0FBcEIsRUFBdUI7TUFDekksT0FBUSxDQUFDLEdBQUdyUCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1FBQUV0dkMsR0FBRyxFQUFFd0U7TUFBUCxDQUFyQyxFQUFpRCxDQUM3RSxDQUFDLEdBQUdyUCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMsSUFBdkMsRUFBNkMsQ0FDekMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DNFUsV0FBcEMsRUFBaUQsQ0FBQyxHQUFHL3RELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLFVBQTVCLENBQTNCLENBQWpELEVBQXNIO01BQUU7TUFBeEgsQ0FEc0MsRUFFdEMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3JDc1QsUUFBUSxDQUFDeHdCLElBQVYsSUFDTyxDQUFDLEdBQUdqOEIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQzZULFdBQXRDLEVBQW1ELENBQUMsR0FBR2h1RCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmQsTUFBTSxDQUFDN3hCLEtBQVAsQ0FBYTRrQyxnQkFBYixDQUE4QkYsUUFBUSxDQUFDeHdCLElBQXZDLENBQTNCLENBQW5ELEVBQTZIO01BQUU7TUFBL0gsQ0FEL0IsS0FFTyxDQUFDLEdBQUdqOEIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQzhULFdBQXRDLEVBQW1ELENBQUMsR0FBR2p1RCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrckIsT0FBakIsRUFBM0IsQ0FBbkQsRUFBMkc7TUFBRTtNQUE3RyxDQUYvQixDQURzQyxDQUExQyxDQUZzQyxDQUExQyxDQUR5QyxDQUE3QyxDQUQ2RSxDQUFqRCxDQUFoQztJQVlILENBYmdGLENBQXBELEVBYXpCO0lBQUk7SUFicUIsQ0F6RGlCLEdBdUU5QyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDLElBQXZDLEVBQTZDLENBQ3pDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsUUFBNUIsQ0FBM0IsQ0FBMUMsRUFBNkc7SUFBRTtJQUEvRyxDQURzQyxFQUVyQ3NDLElBQUksQ0FBQzBHLE1BQU4sSUFDTyxDQUFDLEdBQUc5UixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DK1QsV0FBcEMsRUFBaUQsQ0FBQyxHQUFHbHVELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCdHZDLElBQUksQ0FBQzBHLE1BQWhDLENBQWpELEVBQTBGO0lBQUU7SUFBNUYsQ0FEL0IsS0FFTyxDQUFDLEdBQUc5UixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DZ1UsV0FBcEMsRUFBaUQsQ0FBQyxHQUFHbnVELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQityQixPQUFqQixFQUEzQixDQUFqRCxFQUF5RztJQUFFO0lBQTNHLENBRi9CLENBRnNDLENBQTFDLENBRHlDLENBQTdDLENBdkU4QyxHQStFN0MsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQjF4QyxJQUFJLENBQUN1VixXQUEzQixFQUF3QyxVQUFVQSxXQUFWLEVBQXVCdFIsQ0FBdkIsRUFBMEI7TUFDL0ksT0FBUSxDQUFDLEdBQUdyUCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1FBQUV0dkMsR0FBRyxFQUFFd0U7TUFBUCxDQUFyQyxFQUFpRCxFQUM1RSxDQUFDLEdBQUdyUCxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JuOEIsV0FBVyxDQUFDckUsU0FBbEMsRUFBNkMsVUFBVUEsU0FBVixFQUFxQjVKLENBQXJCLEVBQXdCO1FBQ2xKLE9BQVEsQ0FBQyxHQUFHMVMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztVQUFFdHZDLEdBQUcsRUFBRTZIO1FBQVAsQ0FBckMsRUFBaUQsQ0FDN0UsQ0FBQyxHQUFHMVMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDLElBQXZDLEVBQTZDLENBQ3pDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NpVixXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdwdUQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9Da1YsV0FBcEMsRUFBaUQsQ0FBQyxHQUFHcnVELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLGFBQTVCLENBQTNCLENBQWpELEVBQXlIO1FBQUU7UUFBM0gsQ0FENkMsRUFFN0MsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3JDNzhCLFNBQVMsQ0FBQ0EsU0FBWCxJQUNPLENBQUMsR0FBR3RjLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNtVSxXQUFyQyxFQUFrRCxDQUN4RWh5QyxTQUFTLENBQUNoVSxRQUFYLElBQ08sQ0FBQyxHQUFHdEksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ29VLFdBQXRDLEVBQW1ELE1BQU0sQ0FBQyxHQUFHdnVELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLFVBQTVCLENBQTNCLENBQU4sR0FBNEUsSUFBNUUsR0FBbUYsQ0FBQyxHQUFHOUksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJkLE1BQU0sQ0FBQzd4QixLQUFQLENBQWExZixTQUFiLENBQXVCaVUsU0FBUyxDQUFDaFUsUUFBakMsQ0FBM0IsQ0FBbkYsR0FBNEosR0FBL00sRUFBb047UUFBRTtRQUF0TixDQUQvQixJQUVNLENBQUMsR0FBR3RJLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQUhtRSxFQUl6RSxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnArQixTQUFTLENBQUNBLFNBQXJDLENBQTVDLEVBQTZGO1FBQUU7UUFBL0YsQ0FKeUUsQ0FBbEQsQ0FEL0IsS0FPTyxDQUFDLEdBQUd0YyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDcVUsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHeHVELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQityQixPQUFqQixFQUEzQixDQUFuRCxFQUEyRztRQUFFO1FBQTdHLENBUC9CLENBRHNDLENBQTFDLENBRjZDLENBQWpELENBRHlDLENBQTdDLENBRDZFLENBQWpELENBQWhDO01BaUJILENBbEJnRixDQUFwRCxFQWtCekI7TUFBSTtNQWxCcUIsQ0FEZ0QsRUFBakQsQ0FBaEM7SUFxQkgsQ0F0QmdGLENBQXBELEVBc0J6QjtJQUFJO0lBdEJxQixDQS9FaUIsRUFBbEQsQ0FYRCxDQUg2QixFQXFIN0I7SUFBRTtJQXJIMkIsQ0FBaEM7RUFzSEgsQ0F2SGdGLENBQXBELEVBdUh6QjtFQUFJO0VBdkhxQixDQUZxRCxFQUEzRCxFQTBIeEI7RUFBRztFQTFIcUIsQ0FEN0IsSUE0SEt1bUIsTUFBTSxDQUFDMWhDLEtBQVAsS0FBaUIsa0JBQWxCLElBQ0ssQ0FBQyxHQUFHbFksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCZCxNQUFNLENBQUMsaUJBQUQsQ0FBN0IsRUFBa0Q7SUFDekVodkMsR0FBRyxFQUFFLEVBRG9FO0lBRXpFdEksSUFBSSxFQUFFcTNDLE1BQU0sQ0FBQ3IzQyxJQUFQLENBQVlndUI7RUFGdUQsQ0FBbEQsRUFHeEIsSUFId0IsRUFHbEI7RUFBRTtFQUhnQixFQUdILENBQUMsTUFBRCxDQUhHLENBRDdCLElBS0txcEIsTUFBTSxDQUFDMWhDLEtBQVAsS0FBaUIsYUFBbEIsSUFDSyxDQUFDLEdBQUdsWSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxZQUFELENBQTdCLEVBQTZDO0lBQ3BFaHZDLEdBQUcsRUFBRSxFQUQrRDtJQUVwRXRJLElBQUksRUFBRXEzQyxNQUFNLENBQUNyM0MsSUFBUCxDQUFZZ3VCO0VBRmtELENBQTdDLEVBR3hCLElBSHdCLEVBR2xCO0VBQUU7RUFIZ0IsRUFHSCxDQUFDLE1BQUQsQ0FIRyxDQUQ3QixJQUtLcXBCLE1BQU0sQ0FBQzFoQyxLQUFQLEtBQWlCLFlBQWxCLElBQ0ssQ0FBQyxHQUFHbFksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCZCxNQUFNLENBQUMsWUFBRCxDQUE3QixFQUE2QztJQUNwRWh2QyxHQUFHLEVBQUUsRUFEK0Q7SUFFcEV0SSxJQUFJLEVBQUVxM0MsTUFBTSxDQUFDcjNDLElBQVAsQ0FBWWd1QjtFQUZrRCxDQUE3QyxFQUd4QixJQUh3QixFQUdsQjtFQUFFO0VBSGdCLEVBR0gsQ0FBQyxNQUFELENBSEcsQ0FEN0IsSUFLS3FwQixNQUFNLENBQUMxaEMsS0FBUCxLQUFpQixjQUFsQixJQUNLLENBQUMsR0FBR2xZLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QmQsTUFBTSxDQUFDLGNBQUQsQ0FBN0IsRUFBK0M7SUFDdEVodkMsR0FBRyxFQUFFLEVBRGlFO0lBRXRFdEksSUFBSSxFQUFFcTNDLE1BQU0sQ0FBQ3IzQyxJQUFQLENBQVlndUI7RUFGb0QsQ0FBL0MsRUFHeEIsSUFId0IsRUFHbEI7RUFBRTtFQUhnQixFQUdILENBQUMsTUFBRCxDQUhHLENBRDdCLEtBS0ssQ0FBQyxHQUFHdndCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO0lBQUV2dkMsR0FBRyxFQUFFO0VBQVAsQ0FBOUMsRUFBMkQsQ0FDbEYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLG1CQUE5QixDQURrRixFQUVsRixDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDc1YsV0FBckMsRUFBa0QsQ0FDN0M3VSxNQUFNLENBQUMxaEMsS0FBUCxLQUFpQixpQkFBbEIsSUFDTyxDQUFDLEdBQUdsWSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztJQUFFdnZDLEdBQUcsRUFBRTtFQUFQLENBQTlDLEVBQTBELENBQ2hGK3VDLE1BQU0sQ0FBQ3IzQyxJQUFQLENBQVlndUIsT0FBYixJQUNPLENBQUMsR0FBR3Z3QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDdVUsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHMXVELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUNuekMsS0FBUCxDQUFhcWhCLEtBQWIsQ0FBbUI0b0MsY0FBbkIsQ0FBa0MvVyxNQUFNLENBQUNyM0MsSUFBUCxDQUFZZ3VCLE9BQTlDLENBQTNCLENBQW5ELEVBQXVJO0VBQUU7RUFBekksQ0FEL0IsS0FFTyxDQUFDLEdBQUd2d0IsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ3dVLFdBQXRDLEVBQW1ELENBQUMsR0FBRzN1RCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrckIsT0FBakIsRUFBM0IsQ0FBbkQsRUFBMkc7RUFBRTtFQUE3RyxDQUYvQixDQURpRixDQUExRCxFQUl4QjtFQUFHO0VBSnFCLENBRC9CLElBTU91bUIsTUFBTSxDQUFDMWhDLEtBQVAsS0FBaUIsZ0JBQWxCLElBQ0ssQ0FBQyxHQUFHbFksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEM7SUFBRXZ2QyxHQUFHLEVBQUU7RUFBUCxDQUE5QyxFQUEwRCxDQUNqRixDQUFDLEdBQUc3SyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsa0JBQTlCLENBRGlGLEVBRWhGWCxNQUFNLENBQUNyM0MsSUFBUCxDQUFZZ3VCLE9BQWIsSUFDTyxDQUFDLEdBQUd2d0IsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ3lVLFdBQXRDLEVBQW1ELENBQUMsR0FBRzV1RCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDbnpDLEtBQVAsQ0FBYXFoQixLQUFiLENBQW1CNm9DLGFBQW5CLENBQWlDaFgsTUFBTSxDQUFDcjNDLElBQVAsQ0FBWWd1QixPQUE3QyxDQUEzQixDQUFuRCxFQUFzSTtFQUFFO0VBQXhJLENBRC9CLEtBRU8sQ0FBQyxHQUFHdndCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MwVSxXQUF0QyxFQUFtRCxDQUFDLEdBQUc3dUQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK3JCLE9BQWpCLEVBQTNCLENBQW5ELEVBQTJHO0VBQUU7RUFBN0csQ0FGL0IsQ0FGaUYsQ0FBMUQsRUFLeEI7RUFBRztFQUxxQixDQUQ3QixJQU9LdW1CLE1BQU0sQ0FBQzFoQyxLQUFQLEtBQWlCLG9CQUFsQixJQUNLLENBQUMsR0FBR2xZLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO0lBQUV2dkMsR0FBRyxFQUFFO0VBQVAsQ0FBOUMsRUFBMEQsQ0FDakYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLHNCQUE5QixDQURpRixFQUVoRlgsTUFBTSxDQUFDcjNDLElBQVAsQ0FBWWd1QixPQUFiLElBQ08sQ0FBQyxHQUFHdndCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MyVSxXQUF0QyxFQUFtRCxDQUFDLEdBQUc5dUQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ256QyxLQUFQLENBQWFxaEIsS0FBYixDQUFtQjhvQyxpQkFBbkIsQ0FBcUNqWCxNQUFNLENBQUNyM0MsSUFBUCxDQUFZZ3VCLE9BQWpELENBQTNCLENBQW5ELEVBQTBJO0VBQUU7RUFBNUksQ0FEL0IsS0FFTyxDQUFDLEdBQUd2d0IsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQzRVLFdBQXRDLEVBQW1ELENBQUMsR0FBRy91RCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrckIsT0FBakIsRUFBM0IsQ0FBbkQsRUFBMkc7RUFBRTtFQUE3RyxDQUYvQixDQUZpRixDQUExRCxFQUt4QjtFQUFHO0VBTHFCLENBRDdCLElBT0t1bUIsTUFBTSxDQUFDMWhDLEtBQVAsS0FBaUIsbUJBQWxCLElBQ0ssQ0FBQyxHQUFHbFksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEM7SUFBRXZ2QyxHQUFHLEVBQUU7RUFBUCxDQUE5QyxFQUEwRCxDQUNqRixDQUFDLEdBQUc3SyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIscUJBQTlCLENBRGlGLEVBRWhGWCxNQUFNLENBQUNyM0MsSUFBUCxDQUFZZ3VCLE9BQWIsSUFDTyxDQUFDLEdBQUd2d0IsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQzZVLFdBQXRDLEVBQW1ELENBQUMsR0FBR2h2RCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDbnpDLEtBQVAsQ0FBYXFoQixLQUFiLENBQW1CK29DLFFBQW5CLENBQTRCbFgsTUFBTSxDQUFDcjNDLElBQVAsQ0FBWWd1QixPQUF4QyxDQUEzQixDQUFuRCxFQUFpSTtFQUFFO0VBQW5JLENBRC9CLEtBRU8sQ0FBQyxHQUFHdndCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M4VSxXQUF0QyxFQUFtRCxDQUFDLEdBQUdqdkQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK3JCLE9BQWpCLEVBQTNCLENBQW5ELEVBQTJHO0VBQUU7RUFBN0csQ0FGL0IsQ0FGaUYsQ0FBMUQsRUFLeEI7RUFBRztFQUxxQixDQUQ3QixJQU9LdW1CLE1BQU0sQ0FBQzFoQyxLQUFQLEtBQWlCLHFCQUFsQixJQUNLLENBQUMsR0FBR2xZLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO0lBQUV2dkMsR0FBRyxFQUFFO0VBQVAsQ0FBOUMsRUFBMEQsQ0FDakYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLHVCQUE5QixDQURpRixFQUVoRlgsTUFBTSxDQUFDcjNDLElBQVAsQ0FBWWd1QixPQUFiLElBQ08sQ0FBQyxHQUFHdndCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MrVSxZQUF0QyxFQUFvRCxDQUFDLEdBQUdsdkQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ256QyxLQUFQLENBQWFxaEIsS0FBYixDQUFtQmdwQyxVQUFuQixDQUE4Qm5YLE1BQU0sQ0FBQ3IzQyxJQUFQLENBQVlndUIsT0FBMUMsQ0FBM0IsQ0FBcEQsRUFBb0k7RUFBRTtFQUF0SSxDQUQvQixLQUVPLENBQUMsR0FBR3Z3QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDZ1YsWUFBdEMsRUFBb0QsQ0FBQyxHQUFHbnZELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQityQixPQUFqQixFQUEzQixDQUFwRCxFQUE0RztFQUFFO0VBQTlHLENBRi9CLENBRmlGLENBQTFELEVBS3hCO0VBQUc7RUFMcUIsQ0FEN0IsSUFPS3VtQixNQUFNLENBQUMxaEMsS0FBUCxLQUFpQixlQUFsQixJQUNLLENBQUMsR0FBR2xZLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO0lBQUV2dkMsR0FBRyxFQUFFO0VBQVAsQ0FBOUMsRUFBMEQsQ0FDakYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLGlCQUE5QixDQURpRixFQUVoRlgsTUFBTSxDQUFDcjNDLElBQVAsQ0FBWWd1QixPQUFaLENBQW9CMVMsUUFBcEIsRUFBRCxJQUNPLENBQUMsR0FBRzdkLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NpVixZQUF0QyxFQUFvRCxDQUFDLEdBQUdwdkQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJkLE1BQU0sQ0FBQ3IzQyxJQUFQLENBQVlndUIsT0FBWixDQUFvQjFTLFFBQXBCLEVBQTNCLElBQTZELEdBQWpILEVBQXNIO0VBQUU7RUFBeEgsQ0FEL0IsS0FFTyxDQUFDLEdBQUc3ZCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDa1YsWUFBdEMsRUFBb0QsQ0FBQyxHQUFHcnZELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQityQixPQUFqQixFQUEzQixDQUFwRCxFQUE0RztFQUFFO0VBQTlHLENBRi9CLENBRmlGLENBQTFELEVBS3hCO0VBQUc7RUFMcUIsQ0FEN0IsSUFPS3VtQixNQUFNLENBQUMxaEMsS0FBUCxLQUFpQixzQkFBbEIsSUFDSyxDQUFDLEdBQUdsWSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztJQUFFdnZDLEdBQUcsRUFBRTtFQUFQLENBQTlDLEVBQTBELENBQ2pGLENBQUMsR0FBRzdLLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4Qix3QkFBOUIsQ0FEaUYsRUFFaEZYLE1BQU0sQ0FBQ3IzQyxJQUFQLENBQVlndUIsT0FBYixJQUNPLENBQUMsR0FBR3Z3QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDbVYsWUFBdEMsRUFBb0QsQ0FBQyxHQUFHdHZELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUNuekMsS0FBUCxDQUFhcWhCLEtBQWIsQ0FBbUJpcEMsV0FBbkIsQ0FBK0JwWCxNQUFNLENBQUNyM0MsSUFBUCxDQUFZZ3VCLE9BQTNDLENBQTNCLENBQXBELEVBQXFJO0VBQUU7RUFBdkksQ0FEL0IsS0FFTyxDQUFDLEdBQUd2d0IsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ29WLFlBQXRDLEVBQW9ELENBQUMsR0FBR3Z2RCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrckIsT0FBakIsRUFBM0IsQ0FBcEQsRUFBNEc7RUFBRTtFQUE5RyxDQUYvQixDQUZpRixDQUExRCxFQUt4QjtFQUFHO0VBTHFCLENBRDdCLEtBT0ssQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NxVixZQUF0QyxFQUFvRCxDQUFDLEdBQUd4dkQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK3JCLE9BQWpCLENBQXlCLFlBQXpCLENBQTNCLENBQXBELEVBQXdIO0VBQUU7RUFBMUgsQ0FQN0IsQ0ExQ29CLENBQWxELENBRmtGLENBQTNELEVBcUR4QjtFQUFHO0VBckRxQixDQUw3QixDQXhlL0YsQ0FISCxFQXNpQkc7RUFBRTtFQXRpQkwsRUFzaUJrQmltQixVQXRpQmxCLENBREQsQ0FGSCxFQTBpQkc7RUFBRTtFQTFpQkwsQ0F0Q2dGLENBQXBELEVBaWxCN0I7RUFBRztFQWpsQjBCLENBQWhDO0FBa2xCSDs7QUFDRHg1QyxjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQzcxQmE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFDYmx1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjs7QUFJQSxTQUFTaXVDLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSUMsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHaDZDLEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixTQUE1QixDQUF6Qjs7RUFDQSxJQUFJZ1gsc0JBQXNCLEdBQUcsQ0FBQyxHQUFHanhELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixhQUE1QixDQUE3Qjs7RUFDQSxPQUFRLENBQUMsR0FBR2o2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZFLENBQUMsR0FBR242QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0M7SUFDcENuNEMsR0FBRyxFQUFFLGFBRCtCO0lBRXBDLFNBQU8sdUNBRjZCO0lBR3BDcTVDLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQ25CO0lBQ0EsWUFBWTtNQUNSLElBQUkwRixJQUFJLEdBQUcsRUFBWDs7TUFDQSxLQUFLLElBQUkvNkIsRUFBRSxHQUFHLENBQWQsRUFBaUJBLEVBQUUsR0FBR1ksU0FBUyxDQUFDL2UsTUFBaEMsRUFBd0NtZSxFQUFFLEVBQTFDLEVBQThDO1FBQzFDKzZCLElBQUksQ0FBQy82QixFQUFELENBQUosR0FBV1ksU0FBUyxDQUFDWixFQUFELENBQXBCO01BQ0g7O01BQ0QsT0FBUW8xQixJQUFJLENBQUM1MkIsTUFBTCxJQUFlNDJCLElBQUksQ0FBQzUyQixNQUFMLENBQVkvZCxLQUFaLENBQWtCMjBDLElBQWxCLEVBQXdCMkYsSUFBeEIsQ0FBdkI7SUFDSCxDQVJJO0VBSDJCLENBQXhDLEVBWUcsQ0FDQyxDQUFDLEdBQUdyL0MsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUFFNXBDLElBQUksRUFBRTtFQUFSLENBQTNDLENBREQsRUFFQyxDQUFDLEdBQUdwUSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZSthLE1BQWYsQ0FBc0IsY0FBdEIsQ0FBM0IsQ0FBNUMsRUFBK0c7RUFBRTtFQUFqSCxDQUZELEVBR0VxM0IsSUFBSSxDQUFDendDLEtBQUwsQ0FBV3V0QixTQUFaLElBQ08sQ0FBQyxHQUFHeDJCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNwQixVQUFyQyxFQUFpRCxDQUN4RSxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztJQUMvQjN3QyxFQUFFLEVBQUUsdUJBRDJCO0lBRS9COUYsSUFBSSxFQUFFLEdBRnlCO0lBRy9CLFNBQU8sQ0FBQyxHQUFHMUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEJuRCxJQUFJLENBQUN4d0MsT0FBL0IsQ0FId0I7SUFJL0JteEMsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBUWYsSUFBSSxDQUFDcndDLFVBQUwsR0FBa0IsSUFBMUI7SUFBa0MsQ0FBaEY7RUFKc0IsQ0FBbkMsRUFLRyxDQUFDLEdBQUdySixLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLHVCQUExQixDQUEzQixDQUxILEVBS21GO0VBQUU7RUFMckYsQ0FEc0MsQ0FBMUMsQ0FEc0MsRUFTdEMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7SUFDL0Izd0MsRUFBRSxFQUFFLGlCQUQyQjtJQUUvQjlGLElBQUksRUFBRSxTQUZ5QjtJQUcvQixTQUFPLENBQUMsR0FBRzFDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCbkQsSUFBSSxDQUFDeHdDLE9BQS9CO0VBSHdCLENBQW5DLEVBSUcsQ0FBQyxHQUFHbEosS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQiw0QkFBMUIsQ0FBM0IsQ0FKSCxFQUl3RjtFQUFFO0VBSjFGLENBRHNDLENBQTFDLENBVHNDLEVBZ0J0QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztJQUMvQjN3QyxFQUFFLEVBQUUsWUFEMkI7SUFFL0I5RixJQUFJLEVBQUUsYUFGeUI7SUFHL0IsU0FBTyxDQUFDLEdBQUcxQyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQm5ELElBQUksQ0FBQ3h3QyxPQUEvQjtFQUh3QixDQUFuQyxFQUlHLENBQUMsR0FBR2xKLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsNEJBQTFCLENBQTNCLENBSkgsRUFJd0Y7RUFBRTtFQUoxRixDQURzQyxDQUExQyxDQWhCc0MsQ0FBMUMsQ0FEd0UsQ0FBakQsQ0FEL0IsSUEyQk0sQ0FBQyxHQUFHOUksS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBOUJQLENBWkgsRUEyQ0c7RUFBSTtFQTNDUCxDQUR1RSxFQTZDdkUsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCMlcsc0JBQXZCLEVBQStDO0lBQzNDLGdCQUFnQnZYLElBQUksQ0FBQ3J3QyxVQURzQjtJQUUzQ2swQyxPQUFPLEVBQUU3RCxJQUFJLENBQUNwd0MsV0FGNkI7SUFHM0NrMEMsWUFBWSxFQUFFOUQsSUFBSSxDQUFDcHdDO0VBSHdCLENBQS9DLEVBSUcsSUFKSCxFQUlTO0VBQUU7RUFKWCxFQUl3QixDQUFDLGNBQUQsRUFBaUIsU0FBakIsRUFBNEIsY0FBNUIsQ0FKeEIsQ0E3Q3VFLENBQTNDLENBQWhDO0FBbURIOztBQUNEeEosY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUMvRGE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTQ2QyxZQUFZLEdBQUcsU0FBZkEsWUFBZSxDQUFVaDFDLENBQVYsRUFBYTtFQUFFLE9BQVEsQ0FBQyxHQUFHN0YsS0FBSyxDQUFDODZDLFdBQVYsRUFBdUIsaUJBQXZCLEdBQTJDajFDLENBQUMsR0FBR0EsQ0FBQyxFQUFoRCxFQUFvRCxDQUFDLEdBQUc3RixLQUFLLENBQUMrNkMsVUFBVixHQUFwRCxFQUE2RWwxQyxDQUFyRjtBQUEwRixDQUE1SDs7QUFDQSxJQUFJa3pDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUNibnVDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSW91QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHLGFBQWNvQixZQUFZLENBQUMsWUFBWTtFQUFFO0VBQWMsT0FBTyxDQUFDLEdBQUc3NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDO0lBQUUsU0FBTztFQUFULENBQXRDLEVBQWdGLG1DQUFoRixFQUFxSCxDQUFDO0VBQUU7RUFBeEgsQ0FBUDtBQUFnSixDQUE3SyxDQUE1Qzs7QUFDQSxJQUFJNkIsV0FBVyxHQUFHLGFBQWNILFlBQVksQ0FBQyxZQUFZO0VBQUU7RUFBYyxPQUFPLENBQUMsR0FBRzc2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFBRSxTQUFPO0VBQVQsQ0FBckMsRUFBcUcsQ0FDakwsYUFBYyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0lBQUUsU0FBTztFQUFULENBQW5DLEVBQXNELHNMQUF0RCxDQURtSyxFQUVqTCxhQUFjLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUMsSUFBbkMsRUFBeUMsbU1BQXpDLENBRm1LLENBQXJHLEVBRzdFLENBQUM7RUFBRTtFQUgwRSxDQUFQO0FBR2xELENBSHFCLENBQTVDOztBQUlBLElBQUk4QixXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHLGFBQWNQLFlBQVksQ0FBQyxZQUFZO0VBQUU7RUFBYyxPQUFPLENBQUMsR0FBRzc2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M7SUFBRSxTQUFPO0VBQVQsQ0FBdEMsRUFBZ0YsOENBQWhGLEVBQWdJLENBQUM7RUFBRTtFQUFuSSxDQUFQO0FBQTJKLENBQXhMLENBQTVDOztBQUNBLElBQUlrQyxXQUFXLEdBQUcsYUFBY1IsWUFBWSxDQUFDLFlBQVk7RUFBRTtFQUFjLE9BQU8sQ0FBQyxHQUFHNzZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUFFLFNBQU87RUFBVCxDQUFyQyxFQUFpRyxDQUM3SyxhQUFjLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUMsSUFBbkMsRUFBeUMsd0ZBQXpDLENBRCtKLEVBRTdLLGFBQWMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQyxJQUFuQyxFQUF5QyxzSUFBekMsQ0FGK0osRUFHN0ssYUFBYyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DLElBQW5DLEVBQXlDLGtEQUF6QyxDQUgrSixDQUFqRyxFQUk3RSxDQUFDO0VBQUU7RUFKMEUsQ0FBUDtBQUlsRCxDQUpxQixDQUE1Qzs7QUFLQSxJQUFJbUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2Qxd0MsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7O0FBSUEsSUFBSTJ3QyxXQUFXLEdBQUcsYUFBY1gsWUFBWSxDQUFDLFlBQVk7RUFBRTtFQUFjLE9BQU8sQ0FBQyxHQUFHNzZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN2SCxhQUFjLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M7SUFBRSxTQUFPO0VBQVQsQ0FBdEMsQ0FEeUcsQ0FBM0MsRUFFN0UsQ0FBQztFQUFFO0VBRjBFLENBQVA7QUFFbEQsQ0FGcUIsQ0FBNUM7O0FBR0EsSUFBSXNDLFdBQVcsR0FBRyxDQUNkRCxXQURjLENBQWxCOztBQUdBLFNBQVMxQyxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELElBQUlDLGtCQUFrQixHQUFHLENBQUMsR0FBR2g2QyxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsU0FBNUIsQ0FBekI7O0VBQ0EsSUFBSW9LLGdCQUFnQixHQUFHLENBQUMsR0FBR3JrRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsT0FBNUIsQ0FBdkI7O0VBQ0EsSUFBSW9JLGdCQUFnQixHQUFHLENBQUMsR0FBR3JpRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsT0FBNUIsQ0FBdkI7O0VBQ0EsSUFBSWdYLHNCQUFzQixHQUFHLENBQUMsR0FBR2p4RCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsYUFBNUIsQ0FBN0I7O0VBQ0EsT0FBUSxDQUFDLEdBQUdqNkMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3BCLFVBQXJDLEVBQWlELENBQzVFVyxJQUFJLENBQUM3NEMsS0FBTCxDQUFXb0ksS0FBWCxDQUFpQnlXLGtCQUFqQixDQUFvQ3ZaLE1BQXBDLEtBQStDLENBQWhELElBQ08sQ0FBQyxHQUFHbkcsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztJQUMvRHR2QyxHQUFHLEVBQUUsQ0FEMEQ7SUFFL0Q3SixHQUFHLEVBQUUsYUFGMEQ7SUFHL0QsU0FBTyxnQ0FId0Q7SUFJL0RxNUMsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FDbkI7SUFDQSxZQUFZO01BQ1IsSUFBSTBGLElBQUksR0FBRyxFQUFYOztNQUNBLEtBQUssSUFBSS82QixFQUFFLEdBQUcsQ0FBZCxFQUFpQkEsRUFBRSxHQUFHWSxTQUFTLENBQUMvZSxNQUFoQyxFQUF3Q21lLEVBQUUsRUFBMUMsRUFBOEM7UUFDMUMrNkIsSUFBSSxDQUFDLzZCLEVBQUQsQ0FBSixHQUFXWSxTQUFTLENBQUNaLEVBQUQsQ0FBcEI7TUFDSDs7TUFDRCxPQUFRbzFCLElBQUksQ0FBQzUyQixNQUFMLElBQWU0MkIsSUFBSSxDQUFDNTJCLE1BQUwsQ0FBWS9kLEtBQVosQ0FBa0IyMEMsSUFBbEIsRUFBd0IyRixJQUF4QixDQUF2QjtJQUNILENBUkk7RUFKc0QsQ0FBeEMsRUFheEIsQ0FDQyxDQUFDLEdBQUdyL0MsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUFFNXBDLElBQUksRUFBRTtFQUFSLENBQTNDLENBREQsRUFFQyxDQUFDLEdBQUdwUSxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixNQUFNLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrYSxNQUFmLENBQXNCLGNBQXRCLENBQTNCLENBQU4sR0FBMEUsR0FBckcsRUFBMEc7RUFBRTtFQUE1RyxDQUZELEVBR0MsQ0FBQyxHQUFHcmlCLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkM1cEMsSUFBSSxFQUFFLGdCQURpQztJQUV2QyxTQUFPO0VBRmdDLENBQTNDLENBSEQsQ0Fid0IsRUFvQnhCO0VBQUk7RUFwQm9CLENBRC9CLElBc0JNLENBQUMsR0FBR3BRLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQXZCdUUsRUF3QjVFYixJQUFJLENBQUM3NEMsS0FBTCxDQUFXb0ksS0FBWCxDQUFpQnlXLGtCQUFqQixDQUFvQ3ZaLE1BQXBDLEdBQTZDLENBQTlDLElBQ08sQ0FBQyxHQUFHbkcsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztJQUMvRHR2QyxHQUFHLEVBQUUsQ0FEMEQ7SUFFL0Q3SixHQUFHLEVBQUUsYUFGMEQ7SUFHL0QsU0FBTyxnQ0FId0Q7SUFJL0RxNUMsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FDbkI7SUFDQSxZQUFZO01BQ1IsSUFBSTBGLElBQUksR0FBRyxFQUFYOztNQUNBLEtBQUssSUFBSS82QixFQUFFLEdBQUcsQ0FBZCxFQUFpQkEsRUFBRSxHQUFHWSxTQUFTLENBQUMvZSxNQUFoQyxFQUF3Q21lLEVBQUUsRUFBMUMsRUFBOEM7UUFDMUMrNkIsSUFBSSxDQUFDLzZCLEVBQUQsQ0FBSixHQUFXWSxTQUFTLENBQUNaLEVBQUQsQ0FBcEI7TUFDSDs7TUFDRCxPQUFRbzFCLElBQUksQ0FBQzUyQixNQUFMLElBQWU0MkIsSUFBSSxDQUFDNTJCLE1BQUwsQ0FBWS9kLEtBQVosQ0FBa0IyMEMsSUFBbEIsRUFBd0IyRixJQUF4QixDQUF2QjtJQUNILENBUkk7RUFKc0QsQ0FBeEMsRUFheEIsQ0FDQyxDQUFDLEdBQUdyL0MsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUFFNXBDLElBQUksRUFBRTtFQUFSLENBQTNDLENBREQsRUFFQyxDQUFDLEdBQUdwUSxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDNXBDLElBQUksRUFBRSxnQkFEaUM7SUFFdkMsU0FBTztFQUZnQyxDQUEzQyxDQUZELENBYndCLEVBbUJ4QjtFQUFJO0VBbkJvQixDQUQvQixJQXFCTSxDQUFDLEdBQUdwUSxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0E3Q3VFLEVBOEM1RWIsSUFBSSxDQUFDendDLEtBQUwsQ0FBV3V0QixTQUFaLElBQ08sQ0FBQyxHQUFHeDJCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNuQixVQUFyQyxFQUFpRCxDQUN4RSxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztJQUMvQnoyQyxJQUFJLEVBQUUsR0FEeUI7SUFFL0IsU0FBTyxDQUFDLEdBQUcxQyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQm5ELElBQUksQ0FBQ3h3QyxPQUEvQixDQUZ3QjtJQUcvQm14QyxPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7TUFBRSxPQUFRZixJQUFJLENBQUM5aEIsV0FBTCxDQUFpQjhoQixJQUFJLENBQUM3NEMsS0FBTCxDQUFXb0ksS0FBWCxDQUFpQnlXLGtCQUFqQixDQUFvQ3ZaLE1BQXJELENBQVI7SUFBd0UsQ0FBdEg7RUFIc0IsQ0FBbkMsRUFJRyxDQUFDLEdBQUduRyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ2w2QixVQUFMLENBQWdCazZCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrYSxNQUFmLENBQXNCLGtCQUF0QixFQUEwQyxZQUExQyxDQUFoQixDQUEzQixDQUpILEVBSXlHO0VBQUU7RUFKM0csQ0FEc0MsQ0FBMUMsQ0FEc0MsRUFRdEMsQ0FBQyxHQUFHcmlCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0lBQy9CejJDLElBQUksRUFBRSxHQUR5QjtJQUUvQixTQUFPLENBQUMsR0FBRzFDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCbkQsSUFBSSxDQUFDeHdDLE9BQS9CLENBRndCO0lBRy9CbXhDLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtNQUFFLE9BQVFmLElBQUksQ0FBQ2ppQixXQUFMLENBQWlCaWlCLElBQUksQ0FBQzc0QyxLQUFMLENBQVdvSSxLQUFYLENBQWlCeVcsa0JBQWpCLENBQW9DdlosTUFBckQsQ0FBUjtJQUF3RSxDQUF0SDtFQUhzQixDQUFuQyxFQUlHLENBQUMsR0FBR25HLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDbDZCLFVBQUwsQ0FBZ0JrNkIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZSthLE1BQWYsQ0FBc0Isa0JBQXRCLEVBQTBDLFlBQTFDLENBQWhCLENBQTNCLENBSkgsRUFJeUc7RUFBRTtFQUozRyxDQURzQyxDQUExQyxDQVJzQyxFQWV0QyxDQUFDLEdBQUdyaUIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7SUFDL0J6MkMsSUFBSSxFQUFFLEdBRHlCO0lBRS9CLFNBQU8sQ0FBQyxHQUFHMUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEJuRCxJQUFJLENBQUN4d0MsT0FBL0IsQ0FGd0I7SUFHL0JteEMsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FDbkI7SUFDQSxZQUFZO01BQ1IsSUFBSTBGLElBQUksR0FBRyxFQUFYOztNQUNBLEtBQUssSUFBSS82QixFQUFFLEdBQUcsQ0FBZCxFQUFpQkEsRUFBRSxHQUFHWSxTQUFTLENBQUMvZSxNQUFoQyxFQUF3Q21lLEVBQUUsRUFBMUMsRUFBOEM7UUFDMUMrNkIsSUFBSSxDQUFDLzZCLEVBQUQsQ0FBSixHQUFXWSxTQUFTLENBQUNaLEVBQUQsQ0FBcEI7TUFDSDs7TUFDRCxPQUFRbzFCLElBQUksQ0FBQ2p0QixhQUFMLElBQXNCaXRCLElBQUksQ0FBQ2p0QixhQUFMLENBQW1CMW5CLEtBQW5CLENBQXlCMjBDLElBQXpCLEVBQStCMkYsSUFBL0IsQ0FBOUI7SUFDSCxDQVJJO0VBSHNCLENBQW5DLEVBWUcsQ0FBQyxHQUFHci9DLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDbDZCLFVBQUwsQ0FBZ0JrNkIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZSthLE1BQWYsQ0FBc0Isa0JBQXRCLEVBQTBDLFlBQTFDLENBQWhCLENBQTNCLENBWkgsRUFZeUc7RUFBRTtFQVozRyxDQURzQyxDQUExQyxDQWZzQyxDQUExQyxDQUR3RSxDQUFqRCxDQUQvQixJQWtDTSxDQUFDLEdBQUdyaUIsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBaEZ1RSxFQWlGN0UsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCK0osZ0JBQXZCLEVBQXlDO0lBQ3JDLGdCQUFnQjNLLElBQUksQ0FBQzlpQixjQURnQjtJQUVyQ3ZlLEtBQUssRUFBRSxLQUY4QjtJQUdyQ2tsQyxPQUFPLEVBQUU1RCxNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FDbkIsWUFBWTtNQUNSRCxJQUFJLENBQUM5aUIsY0FBTCxHQUFzQixLQUF0QjtJQUNILENBSEk7RUFINEIsQ0FBekMsRUFPRztJQUNDLFdBQVMsQ0FBQyxHQUFHNTJCLEtBQUssQ0FBQzQ2QyxPQUFWLEVBQW1CLFlBQVk7TUFBRSxPQUFPLENBQzdDLENBQUMsR0FBRzU2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNGLFVBQW5DLEVBQStDLENBQUMsR0FBR2o1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrYSxNQUFmLENBQXNCLDJCQUF0QixDQUEzQixDQUEvQyxFQUErSDtNQUFFO01BQWpJLENBRDZDLEVBRTdDLENBQUMsR0FBR3JpQixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNELFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2w1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNDLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3A1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNFLFVBQXJDLEVBQWlELENBQUMsR0FBR3I1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLGVBQTFCLENBQTNCLENBQWpELEVBQXlIO01BQUU7TUFBM0gsQ0FENkMsRUFFN0MsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO1FBQy9CLFNBQU8sZ0RBRHdCO1FBRS9Ca0IsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO1VBQUUsT0FBUWYsSUFBSSxDQUFDM2lCLGFBQUwsQ0FBbUIsT0FBbkIsRUFBNEIyaUIsSUFBSSxDQUFDbHdDLE9BQWpDLENBQVI7UUFBcUQsQ0FBbkc7TUFGc0IsQ0FBbkMsRUFHRyxDQUFDLEdBQUd4SixLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ2w2QixVQUFMLENBQWdCazZCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrYSxNQUFmLENBQXNCLGtCQUF0QixFQUEwQyxzQkFBMUMsQ0FBaEIsQ0FBM0IsQ0FISCxFQUdtSDtNQUFFO01BSHJILENBRjZDLENBQWpELENBRDZDLEVBUTdDLENBQUMsR0FBR3JpQixLQUFLLENBQUNrOUMsZUFBVixFQUEyQixNQUFNLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ2x3QyxPQUFoQyxDQUFqQyxFQUEyRTtNQUFFO01BQTdFLENBUjZDLENBQWpELENBRjZDLEVBWTdDLENBQUMsR0FBR3hKLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0csVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztRQUNwQyxTQUFPLDZDQUQ2QjtRQUVwQ2tCLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQ25CLFlBQVk7VUFDUkQsSUFBSSxDQUFDOWlCLGNBQUwsR0FBc0IsS0FBdEI7UUFDSCxDQUhJO01BRjJCLENBQXhDLEVBTUcsQ0FBQyxHQUFHNTJCLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZSthLE1BQWYsQ0FBc0IsU0FBdEIsQ0FBM0IsQ0FOSCxFQU1pRTtNQUFFO01BTm5FLENBRDZDLEVBUTdDLENBQUMsR0FBR3JpQixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0M7UUFDcEMsU0FBTyxxREFENkI7UUFFcENrQixPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7VUFBRSxPQUFRZixJQUFJLENBQUN0aUIsZ0JBQUwsQ0FBc0JzaUIsSUFBSSxDQUFDNzRDLEtBQUwsQ0FBV29JLEtBQVgsQ0FBaUJ5VyxrQkFBakIsQ0FBb0N2WixNQUExRCxDQUFSO1FBQTZFLENBQTNIO01BRjJCLENBQXhDLEVBR0csQ0FBQyxHQUFHbkcsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNsNkIsVUFBTCxDQUFnQms2QixJQUFJLENBQUNweUMsU0FBTCxDQUFlK2EsTUFBZixDQUFzQixrQkFBdEIsRUFBMEMsZUFBMUMsQ0FBaEIsQ0FBM0IsQ0FISCxFQUc0RztNQUFFO01BSDlHLENBUjZDLENBQWpELENBWjZDLENBQVA7SUF5QnRDLENBekJLLENBRFY7SUEyQkNwZCxDQUFDLEVBQUU7SUFBRTs7RUEzQk4sQ0FQSCxFQW1DRztFQUFFO0VBbkNMLEVBbUNrQixDQUFDLGNBQUQsQ0FuQ2xCLENBakY2RSxFQXFINUV5MEMsSUFBSSxDQUFDaHlDLGVBQU4sSUFDTyxDQUFDLEdBQUcxSCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUIwSCxnQkFBdkIsRUFBeUM7SUFDaEV4M0MsR0FBRyxFQUFFLENBRDJEO0lBRWhFakUsSUFBSSxFQUFFOHlDLElBQUksQ0FBQy9pQixnQkFGcUQ7SUFHaEUsU0FBTyxPQUh5RDtJQUloRW50QixPQUFPLEVBQUVrd0MsSUFBSSxDQUFDNXhDO0VBSmtELENBQXpDLEVBS3hCLElBTHdCLEVBS2xCO0VBQUU7RUFMZ0IsRUFLSCxDQUFDLE1BQUQsRUFBUyxTQUFULENBTEcsQ0FEL0IsSUFPTSxDQUFDLEdBQUc5SCxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0E1SHVFLEVBNkg3RSxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUIyVyxzQkFBdkIsRUFBK0M7SUFDM0MsZ0JBQWdCdlgsSUFBSSxDQUFDcndDLFVBRHNCO0lBRTNDazBDLE9BQU8sRUFBRTdELElBQUksQ0FBQ3B3QyxXQUY2QjtJQUczQ2swQyxZQUFZLEVBQUU5RCxJQUFJLENBQUNwd0M7RUFId0IsQ0FBL0MsRUFJRyxJQUpILEVBSVM7RUFBRTtFQUpYLEVBSXdCLENBQUMsY0FBRCxFQUFpQixTQUFqQixFQUE0QixjQUE1QixDQUp4QixDQTdINkUsRUFrSTdFLENBQUMsR0FBR3RKLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCK0osZ0JBQXZCLEVBQXlDO0lBQ3JDLGdCQUFnQjNLLElBQUksQ0FBQzdpQiw0QkFEZ0I7SUFFckN4ZSxLQUFLLEVBQUU7RUFGOEIsQ0FBekMsRUFHRztJQUNDLFdBQVMsQ0FBQyxHQUFHclksS0FBSyxDQUFDNDZDLE9BQVYsRUFBbUIsWUFBWTtNQUFFLE9BQU8sQ0FDN0MsQ0FBQyxHQUFHNTZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0ksVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHdjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0ssVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7UUFDdkM1cEMsSUFBSSxFQUFFLGNBRGlDO1FBRXZDLFNBQU87TUFGZ0MsQ0FBM0MsQ0FENkMsRUFLN0NxcEMsV0FMNkMsQ0FBakQsQ0FENkMsRUFRN0N1QixXQVI2QyxFQVM3QyxDQUFDLEdBQUdoN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDOEIsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHajdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztRQUNwQyxTQUFPLFdBRDZCO1FBRXBDa0IsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO1VBQUUsT0FBUWYsSUFBSSxDQUFDN2lCLDRCQUFMLEdBQW9DLEtBQTVDO1FBQXFELENBQW5HO01BRjJCLENBQXhDLEVBR0csbUJBSEgsQ0FEOEMsRUFLOUMsQ0FBQyxHQUFHNzJCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztRQUNwQyxTQUFPLGFBRDZCO1FBRXBDa0IsT0FBTyxFQUFFVixNQUFNLENBQUMsRUFBRCxDQUFOLEtBQWVBLE1BQU0sQ0FBQyxFQUFELENBQU4sR0FBYSxVQUFVYyxNQUFWLEVBQWtCO1VBQUUsT0FBUWYsSUFBSSxDQUFDL2hCLFdBQUwsQ0FBaUIraEIsSUFBSSxDQUFDNzRDLEtBQUwsQ0FBV29JLEtBQVgsQ0FBaUJ5VyxrQkFBakIsQ0FBb0N2WixNQUFyRCxDQUFSO1FBQXdFLENBQXhIO01BRjJCLENBQXhDLEVBR0csQ0FBQyxHQUFHbkcsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK2EsTUFBZixDQUFzQixVQUF0QixDQUEzQixDQUhILEVBR2tFO01BQUU7TUFIcEUsQ0FMOEMsQ0FBbEQsQ0FUNkMsQ0FBakQsQ0FENkMsQ0FBUDtJQXFCdEMsQ0FyQkssQ0FEVjtJQXVCQ3BkLENBQUMsRUFBRTtJQUFFOztFQXZCTixDQUhILEVBMkJHO0VBQUU7RUEzQkwsRUEyQmtCLENBQUMsY0FBRCxDQTNCbEIsQ0FsSTZFLEVBOEo3RSxDQUFDLEdBQUdqRixLQUFLLENBQUNzNkMsV0FBVixFQUF1QitKLGdCQUF2QixFQUF5QztJQUNyQyxnQkFBZ0IzSyxJQUFJLENBQUM1aUIsb0JBRGdCO0lBRXJDemUsS0FBSyxFQUFFO0VBRjhCLENBQXpDLEVBR0c7SUFDQyxXQUFTLENBQUMsR0FBR3JZLEtBQUssQ0FBQzQ2QyxPQUFWLEVBQW1CLFlBQVk7TUFBRSxPQUFPLENBQzdDLENBQUMsR0FBRzU2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMrQixXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdsN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDZ0MsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHbjdDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7UUFDdkM1cEMsSUFBSSxFQUFFLGNBRGlDO1FBRXZDLFNBQU87TUFGZ0MsQ0FBM0MsQ0FEOEMsRUFLOUNnckMsV0FMOEMsQ0FBbEQsQ0FEOEMsRUFROUNDLFdBUjhDLEVBUzlDLENBQUMsR0FBR3I3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNtQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd0N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO1FBQ3BDLFNBQU8sV0FENkI7UUFFcENrQixPQUFPLEVBQUVWLE1BQU0sQ0FBQyxFQUFELENBQU4sS0FBZUEsTUFBTSxDQUFDLEVBQUQsQ0FBTixHQUFhLFVBQVVjLE1BQVYsRUFBa0I7VUFBRSxPQUFRZixJQUFJLENBQUM1aUIsb0JBQUwsR0FBNEIsS0FBcEM7UUFBNkMsQ0FBN0Y7TUFGMkIsQ0FBeEMsRUFHRyxDQUFDLEdBQUc5MkIsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK2EsTUFBZixDQUFzQixTQUF0QixDQUEzQixDQUhILEVBR2lFO01BQUU7TUFIbkUsQ0FEOEMsRUFLOUMsQ0FBQyxHQUFHcmlCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztRQUNwQyxTQUFPLGFBRDZCO1FBRXBDa0IsT0FBTyxFQUFFVixNQUFNLENBQUMsRUFBRCxDQUFOLEtBQWVBLE1BQU0sQ0FBQyxFQUFELENBQU4sR0FDcEI7UUFDQSxZQUFZO1VBQ1IsSUFBSTBGLElBQUksR0FBRyxFQUFYOztVQUNBLEtBQUssSUFBSS82QixFQUFFLEdBQUcsQ0FBZCxFQUFpQkEsRUFBRSxHQUFHWSxTQUFTLENBQUMvZSxNQUFoQyxFQUF3Q21lLEVBQUUsRUFBMUMsRUFBOEM7WUFDMUMrNkIsSUFBSSxDQUFDLzZCLEVBQUQsQ0FBSixHQUFXWSxTQUFTLENBQUNaLEVBQUQsQ0FBcEI7VUFDSDs7VUFDRCxPQUFRbzFCLElBQUksQ0FBQ3ZpQixjQUFMLElBQXVCdWlCLElBQUksQ0FBQ3ZpQixjQUFMLENBQW9CcHlCLEtBQXBCLENBQTBCMjBDLElBQTFCLEVBQWdDMkYsSUFBaEMsQ0FBL0I7UUFDSCxDQVJJO01BRjJCLENBQXhDLEVBV0csQ0FBQyxHQUFHci9DLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDbDZCLFVBQUwsQ0FBZ0JrNkIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZSthLE1BQWYsQ0FBc0Isa0JBQXRCLEVBQTBDLGVBQTFDLENBQWhCLENBQTNCLENBWEgsRUFXNEc7TUFBRTtNQVg5RyxDQUw4QyxDQUFsRCxDQVQ4QyxDQUFsRCxDQUQ2QyxDQUFQO0lBNkJ0QyxDQTdCSyxDQURWO0lBK0JDcGQsQ0FBQyxFQUFFO0lBQUU7O0VBL0JOLENBSEgsRUFtQ0c7RUFBRTtFQW5DTCxFQW1Da0IsQ0FBQyxjQUFELENBbkNsQixDQTlKNkUsRUFrTTVFeTBDLElBQUksQ0FBQ3o0QyxTQUFOLElBQ08sQ0FBQyxHQUFHakIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ29CLFdBQXJDLEVBQWtERSxXQUFsRCxDQUQvQixJQUVNLENBQUMsR0FBR3o3QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FwTXVFLENBQWpELENBQWhDO0FBc01IOztBQUNEejZDLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDdFBhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCOztBQUNBLFNBQVNULE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSUMsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHaDZDLEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixTQUE1QixDQUF6Qjs7RUFDQSxJQUFJc0csb0JBQW9CLEdBQUcsQ0FBQyxHQUFHdmdELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixXQUE1QixDQUEzQjs7RUFDQSxPQUFRLENBQUMsR0FBR2o2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcEIsVUFBckMsRUFBaUQsQ0FDN0UsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0gsVUFBckMsRUFBaUQsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsTUFBMUIsQ0FBM0IsQ0FBakQsRUFBZ0g7RUFBRTtFQUFsSCxDQUQ2RSxFQUU3RSxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNGLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2o1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNELFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2w1QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDLFNBQU8sU0FEZ0M7SUFFdkM1cEMsSUFBSSxFQUFFO0VBRmlDLENBQTNDLENBRDZDLEVBSzdDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixlQUExQixDQUEzQixDQUE1QyxFQUFvSDtFQUFFO0VBQXRILENBTDZDLENBQWpELENBRDZDLEVBUTdDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCaUcsb0JBQXZCLEVBQTZDO0lBQ3pDLGNBQWM3RyxJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQix5Q0FBMUIsQ0FEMkI7SUFFekNGLElBQUksRUFBRTtFQUZtQyxDQUE3QyxFQUdHLElBSEgsRUFHUztFQUFFO0VBSFgsRUFHd0IsQ0FBQyxZQUFELENBSHhCLENBUjZDLENBQWpELENBRjZFLEVBZTdFLENBQUMsR0FBRzVJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0MsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHcDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0UsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxTQURnQztJQUV2QzVwQyxJQUFJLEVBQUU7RUFGaUMsQ0FBM0MsQ0FENkMsRUFLN0MsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLHdCQUExQixDQUEzQixDQUE1QyxFQUE2SDtFQUFFO0VBQS9ILENBTDZDLENBQWpELENBRDZDLEVBUTdDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCaUcsb0JBQXZCLEVBQTZDO0lBQ3pDLGNBQWM3RyxJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQix5Q0FBMUIsQ0FEMkI7SUFFekNGLElBQUksRUFBRTtFQUZtQyxDQUE3QyxFQUdHLElBSEgsRUFHUztFQUFFO0VBSFgsRUFHd0IsQ0FBQyxZQUFELENBSHhCLENBUjZDLENBQWpELENBZjZFLEVBNEI3RSxDQUFDLEdBQUc1SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNHLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3Q1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNJLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3Y1QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDLFNBQU8sU0FEZ0M7SUFFdkM1cEMsSUFBSSxFQUFFO0VBRmlDLENBQTNDLENBRDZDLEVBSzdDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQiwwQkFBMUIsQ0FBM0IsQ0FBNUMsRUFBK0g7RUFBRTtFQUFqSSxDQUw2QyxDQUFqRCxDQUQ2QyxFQVE3QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNzNkMsV0FBVixFQUF1QmlHLG9CQUF2QixFQUE2QztJQUN6QyxjQUFjN0csSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIseUNBQTFCLENBRDJCO0lBRXpDRixJQUFJLEVBQUU7RUFGbUMsQ0FBN0MsRUFHRyxJQUhILEVBR1M7RUFBRTtFQUhYLEVBR3dCLENBQUMsWUFBRCxDQUh4QixDQVI2QyxDQUFqRCxDQTVCNkUsQ0FBakQsQ0FBaEM7QUEwQ0g7O0FBQ0Q5SSxjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQzFEYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUNidndDLEVBQUUsRUFBRSxhQURTO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSXd3QyxVQUFVLEdBQUc7RUFDYixTQUFPLHdFQURNO0VBRWIxM0MsS0FBSyxFQUFFO0lBQUUsY0FBYztFQUFoQjtBQUZNLENBQWpCO0FBSUEsSUFBSTIzQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7O0FBQ0EsU0FBU0osTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUdoNkMsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFNBQTVCLENBQXpCOztFQUNBLElBQUlpWCx5QkFBeUIsR0FBRyxDQUFDLEdBQUdseEQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLGdCQUE1QixDQUFoQzs7RUFDQSxPQUFRLENBQUMsR0FBR2o2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcEIsVUFBckMsRUFBaUQsQ0FDN0UsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0gsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkM1cEMsSUFBSSxFQUFFLFFBRGlDO0lBRXZDLFNBQU87RUFGZ0MsQ0FBM0MsQ0FENkMsQ0FBakQsQ0FENkUsRUFPN0UsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DRixVQUFwQyxFQUFnRCxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFldWlCLFdBQWYsQ0FBMkIsa0RBQTNCLENBQTNCLENBQWhELEVBQTRKO0VBQUU7RUFBOUosQ0FQNkUsRUFRN0UsQ0FBQyxHQUFHN3BCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0QsVUFBckMsRUFBaUQsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXVpQixXQUFmLENBQTJCLGtEQUEzQixDQUEzQixDQUFqRCxFQUE2SjtFQUFFO0VBQS9KLENBUjZFLEVBUzdFLENBQUMsR0FBRzdwQixLQUFLLENBQUNzNkMsV0FBVixFQUF1QjRXLHlCQUF2QixDQVQ2RSxDQUFqRCxDQUFoQztBQVdIOztBQUNEcHhELGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDN0JhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHO0VBQ2IsY0FBYyxhQUREO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSXVCLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLFdBQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxXQUFELENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsV0FBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxJQUFJQyxXQUFXLEdBQUcsYUFBYyxDQUFDLEdBQUczN0MsS0FBSyxDQUFDazlDLGVBQVYsR0FBaEM7O0FBQ0EsSUFBSXRCLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxTQUFTOUMsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUdoNkMsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFNBQTVCLENBQXpCOztFQUNBLE9BQVEsQ0FBQyxHQUFHajZDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNwQixVQUFyQyxFQUFpRCxDQUM3RSxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRixVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDQyxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdwNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DLElBQW5DLEVBQXlDLENBQ3JDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NFLFVBQXRDLEVBQWtELENBQUMsR0FBR3I1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ1aUIsV0FBakIsQ0FBNkIsNEJBQTdCLENBQTNCLENBQWxELEVBQTBJO0VBQUU7RUFBNUksQ0FEcUMsQ0FBekMsQ0FENkMsQ0FBakQsQ0FENkMsQ0FBakQsQ0FENkMsRUFRN0MsQ0FBQyxHQUFHN3BCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0csVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ0ksVUFBcEMsRUFBZ0QsQ0FBQyxHQUFHdjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnVpQixXQUFqQixDQUE2Qiw0QkFBN0IsQ0FBM0IsQ0FBaEQsRUFBd0k7RUFBRTtFQUExSSxDQUQ2QyxFQUU3QyxDQUFDLEdBQUc3cEIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSyxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd4NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDTSxXQUF4QyxFQUFxRCxDQUNqRCxDQUFDLEdBQUd6NUMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUFFNXBDLElBQUksRUFBRTtFQUFSLENBQTNDLENBRGlELEVBRWpELENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCdWlCLFdBQWpCLENBQTZCLHNDQUE3QixDQUEzQixDQUE1QyxFQUE4STtFQUFFO0VBQWhKLENBRmlELENBQXJELENBRDZDLEVBSzdDLENBQUMsR0FBRzdwQixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM2QixXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdoN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDOEIsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHajdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQytCLFdBQXJDLEVBQWtELENBQUMsR0FBR2w3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ1aUIsV0FBakIsQ0FBNkIsc0NBQTdCLENBQTNCLENBQWxELEVBQW9KO0VBQUU7RUFBdEosQ0FEOEMsRUFFOUMsQ0FBQyxHQUFHN3BCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztJQUMvQjRGLFNBQVMsRUFBRWxGLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCdWlCLFdBQWpCLENBQTZCLGdEQUE3QjtFQURvQixDQUFuQyxFQUVHLElBRkgsRUFFUztFQUFFO0VBRlgsRUFFd0JzeEIsV0FGeEIsQ0FGOEMsRUFLOUMsQ0FBQyxHQUFHbjdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztJQUMvQjRGLFNBQVMsRUFBRWxGLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCdWlCLFdBQWpCLENBQTZCLGdEQUE3QjtFQURvQixDQUFuQyxFQUVHLElBRkgsRUFFUztFQUFFO0VBRlgsRUFFd0J1eEIsV0FGeEIsQ0FMOEMsRUFROUMsQ0FBQyxHQUFHcDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztJQUMvQjRGLFNBQVMsRUFBRWxGLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCdWlCLFdBQWpCLENBQTZCLGtEQUE3QjtFQURvQixDQUFuQyxFQUVHLElBRkgsRUFFUztFQUFFO0VBRlgsRUFFd0J3eEIsV0FGeEIsQ0FSOEMsQ0FBbEQsQ0FEOEMsQ0FBbEQsQ0FMNkMsQ0FBakQsQ0FGNkMsQ0FBakQsQ0FSNkMsQ0FBakQsQ0FENkMsRUFpQzdDLENBQUMsR0FBR3I3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNtQyxXQUFyQyxFQUFrRCxDQUM3Q3pCLE1BQU0sQ0FBQy94QyxZQUFQLENBQW9Cb0csVUFBckIsSUFDTyxDQUFDLEdBQUdsTyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxPQUFELENBQTdCLEVBQXdDO0lBQy9EaHZDLEdBQUcsRUFBRSxDQUQwRDtJQUUvRCxTQUFPLDZCQUZ3RDtJQUcvRHJCLE9BQU8sRUFBRXF3QyxNQUFNLENBQUMveEMsWUFBUCxDQUFvQjBCLE9BSGtDO0lBSS9ENUMsSUFBSSxFQUFFaXpDLE1BQU0sQ0FBQy94QyxZQUFQLENBQW9CbEI7RUFKcUMsQ0FBeEMsRUFLeEIsSUFMd0IsRUFLbEI7RUFBRTtFQUxnQixFQUtILENBQUMsU0FBRCxFQUFZLE1BQVosQ0FMRyxDQUQvQixJQU9NLENBQUMsR0FBRzVHLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQVJ3QyxFQVM3Q1YsTUFBTSxDQUFDaGpDLFNBQVAsQ0FBaUIzSSxVQUFsQixJQUNPLENBQUMsR0FBR2xPLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QmQsTUFBTSxDQUFDLFlBQUQsQ0FBN0IsRUFBNkM7SUFDcEVodkMsR0FBRyxFQUFFLENBRCtEO0lBRXBFckIsT0FBTyxFQUFFcXdDLE1BQU0sQ0FBQ2hqQyxTQUFQLENBQWlCck4sT0FGMEM7SUFHcEUwTyxLQUFLLEVBQUUyaEMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrRyxLQUFqQixDQUF1QixpQ0FBdkIsQ0FINkQ7SUFJcEU4MEMsWUFBWSxFQUFFeEosTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQ3hCLFlBQVk7TUFDUkUsTUFBTSxDQUFDaGpDLFNBQVAsQ0FBaUIzSSxVQUFqQixHQUE4QixLQUE5QjtJQUNILENBSFM7RUFKc0QsQ0FBN0MsRUFReEIsSUFSd0IsRUFRbEI7RUFBRTtFQVJnQixFQVFILENBQUMsU0FBRCxFQUFZLE9BQVosQ0FSRyxDQUQvQixJQVVNLENBQUMsR0FBR2xPLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQW5Cd0MsRUFvQjlDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNvQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd2N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcUMsV0FBckMsRUFBa0QsQ0FDN0MzQixNQUFNLENBQUN0c0MsZUFBUCxDQUF1QlcsVUFBeEIsSUFDTyxDQUFDLEdBQUdsTyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxxQkFBRCxDQUE3QixFQUFzRDtJQUM3RWh2QyxHQUFHLEVBQUUsQ0FEd0U7SUFFN0VyQixPQUFPLEVBQUVxd0MsTUFBTSxDQUFDdHNDLGVBQVAsQ0FBdUJhLGNBRjZDO0lBRzdFeEgsSUFBSSxFQUFFaXpDLE1BQU0sQ0FBQ3RzQyxlQUFQLENBQXVCWTtFQUhnRCxDQUF0RCxFQUl4QixJQUp3QixFQUlsQjtFQUFFO0VBSmdCLEVBSUgsQ0FBQyxTQUFELEVBQVksTUFBWixDQUpHLENBRC9CLElBTU0sQ0FBQyxHQUFHbk8sS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBUHdDLEVBUTlDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNzQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd6N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDdUMsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHMTdDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsd0JBQUQsQ0FBN0IsQ0FEOEMsRUFFOUM4QixXQUY4QyxFQUc5QyxDQUFDLEdBQUczN0MsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJULE1BQU0sQ0FBQyxpQkFBRCxDQUE3QixDQUg4QyxDQUFsRCxDQUQ4QyxFQU05QyxDQUFDLEdBQUc3NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDeUMsV0FBckMsRUFBa0QsQ0FDN0MvQixNQUFNLENBQUNoNUMsS0FBUCxDQUFhb0ksS0FBYixDQUFtQnlXLGtCQUFuQixDQUFzQ3ZaLE1BQXRDLEtBQWlELENBQWxELElBQ08sQ0FBQyxHQUFHbkcsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCZCxNQUFNLENBQUMsY0FBRCxDQUE3QixFQUErQztJQUFFaHZDLEdBQUcsRUFBRTtFQUFQLENBQS9DLENBRC9CLElBRU0sQ0FBQyxHQUFHN0ssS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBSHdDLEVBSTlDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLG1CQUFELENBQTdCLENBSjhDLENBQWxELENBTjhDLENBQWxELENBUjhDLENBQWxELENBRDhDLENBQWxELENBcEI4QyxDQUFsRCxDQWpDNkMsQ0FBakQsQ0FENkUsQ0FBakQsQ0FBaEM7QUFpRkg7O0FBQ0QvNUMsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUNsSGE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFDYixTQUFPLHNGQURNO0VBRWJ6M0MsS0FBSyxFQUFFO0lBQUUsY0FBYztFQUFoQjtBQUZNLENBQWpCOztBQUlBLElBQUkwM0MsVUFBVSxHQUFHLGFBQWMsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztFQUFFLFNBQU87QUFBVCxDQUFyQyxFQUE4RyxDQUN6SSxhQUFjLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7RUFDL0M5Z0MsS0FBSyxFQUFFLElBRHdDO0VBRS9DaWxCLE1BQU0sRUFBRSxJQUZ1QztFQUcvQ3l2QixPQUFPLEVBQUUsV0FIc0M7RUFJL0NDLElBQUksRUFBRSxNQUp5QztFQUsvQ0MsS0FBSyxFQUFFO0FBTHdDLENBQXJDLEVBTVgsQ0FDQyxhQUFjLENBQUMsR0FBR2p0RCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M7RUFDaER3RSxDQUFDLEVBQUUsdVlBRDZDO0VBRWhEcVAsSUFBSSxFQUFFLFNBRjBDO0VBR2hEN3VCLE1BQU0sRUFBRSxTQUh3QztFQUloRCxnQkFBZ0I7QUFKZ0MsQ0FBdEMsQ0FEZixDQU5XLENBRDJILENBQTlHLEVBZTVCLENBQUM7QUFBRTtBQWZ5QixDQUEvQjs7QUFnQkEsSUFBSThhLFVBQVUsR0FBRyxhQUFjLENBQUMsR0FBR2o1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7RUFBRSxTQUFPO0FBQVQsQ0FBckMsRUFBdUYsSUFBdkYsRUFBNkYsQ0FBQztBQUFFO0FBQWhHLENBQS9COztBQUNBLElBQUlELFVBQVUsR0FBRyxDQUNiRixVQURhLEVBRWJDLFVBRmEsQ0FBakI7O0FBSUEsU0FBU0gsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxPQUFRLENBQUMsR0FBRy81QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcEIsVUFBckMsRUFBaURHLFVBQWpELENBQWhDO0FBQ0g7O0FBQ0RwNUMsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUNoQ2E7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTQ2QyxZQUFZLEdBQUcsU0FBZkEsWUFBZSxDQUFVaDFDLENBQVYsRUFBYTtFQUFFLE9BQVEsQ0FBQyxHQUFHN0YsS0FBSyxDQUFDODZDLFdBQVYsRUFBdUIsaUJBQXZCLEdBQTJDajFDLENBQUMsR0FBR0EsQ0FBQyxFQUFoRCxFQUFvRCxDQUFDLEdBQUc3RixLQUFLLENBQUMrNkMsVUFBVixHQUFwRCxFQUE2RWwxQyxDQUFyRjtBQUEwRixDQUE1SDs7QUFDQSxJQUFJa3pDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUNiendDLEVBQUUsRUFBRSxPQURTO0VBRWJ5akQsS0FBSyxFQUFFO0FBRk0sQ0FBakI7QUFJQSxJQUFJL1MsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHO0VBQ2I1d0MsRUFBRSxFQUFFLHFCQURTO0VBRWJ5akQsS0FBSyxFQUFFLEtBRk07RUFHYixTQUFPO0FBSE0sQ0FBakI7QUFLQSxJQUFJNVMsVUFBVSxHQUFHLENBQUMsTUFBRCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUNiL3dDLEVBQUUsRUFBRSxNQURTO0VBRWJ5akQsS0FBSyxFQUFFO0FBRk0sQ0FBakI7QUFJQSxJQUFJelMsVUFBVSxHQUFHLENBQUMsTUFBRCxDQUFqQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUl1QixXQUFXLEdBQUc7RUFDZHh5QyxFQUFFLEVBQUUsUUFEVTtFQUVkeWpELEtBQUssRUFBRTtBQUZPLENBQWxCO0FBSUEsSUFBSWhSLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkMXlDLEVBQUUsRUFBRSxTQURVO0VBRWR5akQsS0FBSyxFQUFFO0FBRk8sQ0FBbEI7QUFJQSxJQUFJOVEsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2Q1eUMsRUFBRSxFQUFFLElBRFU7RUFFZHlqRCxLQUFLLEVBQUU7QUFGTyxDQUFsQjtBQUlBLElBQUk1USxXQUFXLEdBQUc7RUFBRXh3QyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUl5d0MsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsTUFBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkLFNBQU8sd0JBRE87RUFFZCxPQUFLO0FBRlMsQ0FBbEI7QUFJQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxPQUFELENBQWxCOztBQUNBLElBQUlDLFdBQVcsR0FBRyxhQUFjNUIsWUFBWSxDQUFDLFlBQVk7RUFBRTtFQUFjLE9BQU8sQ0FBQyxHQUFHNzZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztJQUFFLFNBQU87RUFBVCxDQUF0QyxFQUE4RCxJQUE5RCxFQUFvRSxDQUFDO0VBQUU7RUFBdkUsQ0FBUDtBQUErRixDQUE1SCxDQUE1Qzs7QUFDQSxJQUFJdUQsV0FBVyxHQUFHO0VBQUU3eEMsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJOHhDLFdBQVcsR0FBRztFQUNkOXhDLEdBQUcsRUFBRSxDQURTO0VBRWRxaEQsT0FBTyxFQUFFLEdBRks7RUFHZCxTQUFPO0FBSE8sQ0FBbEI7O0FBS0EsSUFBSXRQLFdBQVcsR0FBRyxhQUFjL0IsWUFBWSxDQUFDLFlBQVk7RUFBRTtFQUFjLE9BQU8sQ0FBQyxHQUFHNzZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUNqSCtTLE9BQU8sRUFBRSxHQUR3RztJQUVqSCxTQUFPO0VBRjBHLENBQXJDLEVBRzdFLElBSDZFLEVBR3ZFLENBQUM7RUFBRTtFQUhvRSxDQUFQO0FBRzVDLENBSGUsQ0FBNUM7O0FBSUEsSUFBSXpMLFdBQVcsR0FBRyxDQUNkN0QsV0FEYyxDQUFsQjtBQUdBLElBQUk4RCxXQUFXLEdBQUc7RUFDZDcxQyxHQUFHLEVBQUUsQ0FEUztFQUVkcWhELE9BQU8sRUFBRSxHQUZLO0VBR2QsU0FBTztBQUhPLENBQWxCOztBQUtBLFNBQVNwVCxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELElBQUlDLGtCQUFrQixHQUFHLENBQUMsR0FBR2g2QyxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsU0FBNUIsQ0FBekI7O0VBQ0EsT0FBUSxDQUFDLEdBQUdqNkMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3BCLFVBQXJDLEVBQWlELENBQzdFLENBQUMsR0FBRy80QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMsSUFBdkMsRUFBNkMsQ0FDekMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QyxJQUF2QyxFQUE2QyxDQUN6QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DSCxVQUFwQyxFQUFnRCxDQUM1QyxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DRixVQUFwQyxFQUFnRCxDQUM1QyxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDRCxVQUF0QyxFQUFrRCxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsZ0JBQTVCLENBQTNCLENBQWxELEVBQTZIO0VBQUU7RUFBL0gsQ0FENEMsQ0FBaEQsQ0FENEMsRUFJNUMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DQyxVQUFwQyxFQUFnRCxDQUM1QyxDQUFDLEdBQUdwNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0lBQy9CLFNBQU8seUVBRHdCO0lBRS9CejJDLElBQUksRUFBRW0zQyxNQUFNLENBQUM5Z0Isd0JBQVA7RUFGeUIsQ0FBbkMsRUFHRyxDQUNDLENBQUMsR0FBRy80QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M7SUFDbEMsU0FBTyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxtQkFBRCxFQUFzQmhELE1BQU0sQ0FBQy9nQixnQkFBUCxFQUF0QixDQUExQjtFQUQyQixDQUF0QyxFQUVHLENBQ0MsQ0FBQyxHQUFHOTRCLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkM1cEMsSUFBSSxFQUFFLEdBQUd6TyxNQUFILENBQVVrNEMsTUFBTSxDQUFDL2dCLGdCQUFQLEVBQVYsRUFBcUMsUUFBckM7RUFEaUMsQ0FBM0MsRUFFRyxJQUZILEVBRVM7RUFBRTtFQUZYLEVBRXdCLENBQUMsTUFBRCxDQUZ4QixDQURELENBRkgsRUFNRztFQUFFO0VBTkwsQ0FERCxFQVFDLENBQUMsR0FBRzk0QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NHLFVBQXRDLEVBQWtELENBQUMsR0FBR3Q1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixxQkFBNUIsQ0FBM0IsQ0FBbEQsRUFBa0k7RUFBRTtFQUFwSSxDQVJELENBSEgsRUFZRztFQUFFO0VBWkwsRUFZa0J1d0MsVUFabEIsQ0FENEMsQ0FBaEQsQ0FKNEMsRUFtQjVDLENBQUMsR0FBR3I1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NJLFVBQXBDLEVBQWdELENBQzVDLENBQUMsR0FBR3Y1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7SUFDL0IsU0FBTyx3REFEd0I7SUFFL0J6MkMsSUFBSSxFQUFFbTNDLE1BQU0sQ0FBQzdnQixhQUFQO0VBRnlCLENBQW5DLEVBR0csQ0FDQyxDQUFDLEdBQUdoNUIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDO0lBQ2xDLFNBQU8sQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsbUJBQUQsRUFBc0JoRCxNQUFNLENBQUMvZ0IsZ0JBQVAsRUFBdEIsQ0FBMUI7RUFEMkIsQ0FBdEMsRUFFRyxDQUNDLENBQUMsR0FBRzk0QixLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDNXBDLElBQUksRUFBRSxHQUFHek8sTUFBSCxDQUFVazRDLE1BQU0sQ0FBQy9nQixnQkFBUCxFQUFWLEVBQXFDLFFBQXJDO0VBRGlDLENBQTNDLEVBRUcsSUFGSCxFQUVTO0VBQUU7RUFGWCxFQUV3QixDQUFDLE1BQUQsQ0FGeEIsQ0FERCxDQUZILEVBTUc7RUFBRTtFQU5MLENBREQsRUFRQyxDQUFDLEdBQUc5NEIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDTSxXQUF0QyxFQUFtRCxDQUFDLEdBQUd6NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsWUFBNUIsQ0FBM0IsQ0FBbkQsRUFBMEg7RUFBRTtFQUE1SCxDQVJELENBSEgsRUFZRztFQUFFO0VBWkwsRUFZa0Iwd0MsVUFabEIsQ0FENEMsQ0FBaEQsQ0FuQjRDLEVBa0M1QyxDQUFDLEdBQUd4NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DNkIsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHaDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQzhCLFdBQXRDLEVBQW1ELENBQUMsR0FBR2o3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixRQUE1QixDQUEzQixDQUFuRCxFQUFzSDtFQUFFO0VBQXhILENBRDZDLENBQWpELENBbEM0QyxFQXFDNUMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DK0IsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHbDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2dDLFdBQXRDLEVBQW1ELENBQUMsR0FBR243QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixTQUE1QixDQUEzQixDQUFuRCxFQUF1SDtFQUFFO0VBQXpILENBRDZDLENBQWpELENBckM0QyxFQXdDNUMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DaUMsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHcDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztJQUNsQyxTQUFPLGdCQUQyQjtJQUVsQ2tCLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtNQUFFLE9BQVFaLE1BQU0sQ0FBQ25oQixlQUFQLENBQXVCa2hCLE1BQU0sQ0FBQ3IzQyxJQUFQLENBQVlBLElBQW5DLEVBQXlDczNDLE1BQU0sQ0FBQ3RoQixjQUFoRCxDQUFSO0lBQTJFLENBQXpIO0VBRnlCLENBQXRDLEVBR0csQ0FDQyxDQUFDLEdBQUd2NEIsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUFFNXBDLElBQUksRUFBRTtFQUFSLENBQTNDLENBREQsQ0FISCxDQUQ2QyxDQUFqRCxDQXhDNEMsQ0FBaEQsQ0FEeUMsQ0FBN0MsQ0FEeUMsRUFvRHhDd3BDLE1BQU0sQ0FBQ3IzQyxJQUFQLENBQVlvZ0MsS0FBWixHQUFvQixDQUFyQixJQUNPLENBQUMsR0FBRzNpQyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDa0IsV0FBdkMsRUFBb0QsRUFDMUUsQ0FBQyxHQUFHcjdDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQmxELE1BQU0sQ0FBQ3IzQyxJQUFQLENBQVlBLElBQWxDLEVBQXdDLFVBQVVvMkIsS0FBVixFQUFpQjtJQUN0SSxPQUFRLENBQUMsR0FBRzM0QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DO01BQ2hFdHZDLEdBQUcsRUFBRTh0QixLQUFLLENBQUMsSUFBRCxDQURzRDtNQUVoRSxTQUFPLENBQUMsR0FBRzM0QixLQUFLLENBQUM2OEMsY0FBVixFQUEwQjtRQUM3QixxQkFBcUJsa0IsS0FBSyxDQUFDLGdCQUFELENBQUwsSUFBMkJBLEtBQUssQ0FBQyxRQUFELENBQUwsS0FBb0I7TUFEdkMsQ0FBMUI7SUFGeUQsQ0FBcEMsRUFLN0IsQ0FDQyxDQUFDLEdBQUczNEIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DbUMsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHdDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ29DLFdBQXJDLEVBQWtELENBQzdDNWlCLEtBQUssQ0FBQyxnQkFBRCxDQUFMLElBQTJCQSxLQUFLLENBQUMsUUFBRCxDQUFMLEtBQW9CLE9BQWhELElBQ08sQ0FBQyxHQUFHMzRCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QmQsTUFBTSxDQUFDLHFCQUFELENBQTdCLEVBQXNEO01BQzdFaHZDLEdBQUcsRUFBRSxDQUR3RTtNQUU3RSxTQUFPO0lBRnNFLENBQXRELENBRC9CLElBS00sQ0FBQyxHQUFHN0ssS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBTndDLEVBTzlDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNxQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd4N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO01BQy9CejJDLElBQUksRUFBRSxlQUFlaTJCLEtBQUssQ0FBQyxJQUFELENBREs7TUFFL0IsU0FBTztJQUZ3QixDQUFuQyxFQUdHLENBQUMsR0FBRzM0QixLQUFLLENBQUMwNkMsZUFBVixFQUEyQi9oQixLQUFLLENBQUMseUJBQUQsQ0FBTCxJQUMxQkEsS0FBSyxDQUFDLHlCQUFELENBQUwsS0FBcUMsRUFEWCxHQUV4QkEsS0FBSyxDQUFDLHlCQUFELENBRm1CLEdBR3hCa2hCLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsVUFBNUIsQ0FISCxDQUhILEVBTWdEO0lBQUU7SUFObEQsRUFNcUUyeUMsV0FOckUsQ0FEOEMsRUFROUMsQ0FBQyxHQUFHejdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3VDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRzE3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0N3QyxXQUF0QyxFQUFtRCxDQUFDLEdBQUczN0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIvaEIsS0FBSyxDQUFDLHlCQUFELENBQUwsSUFDMUVBLEtBQUssQ0FBQyx5QkFBRCxDQUFMLEtBQXFDLEVBRHFDLEdBRXhFQSxLQUFLLENBQUMseUJBQUQsQ0FGbUUsR0FHeEVraEIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixVQUE1QixDQUg2QyxDQUFuRCxFQUdnRDtJQUFFO0lBSGxELENBRDhDLENBQWxELENBUjhDLENBQWxELENBUDhDLENBQWxELENBRDZDLENBQWpELENBREQsRUEwQkMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DeUMsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHNTdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzBDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRzc3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMyQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUc5N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDNEMsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHLzdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqQyxTQUFPLGdDQUQwQjtNQUVqQzczQyxLQUFLLEVBQUUsQ0FBQyxHQUFHdEIsS0FBSyxDQUFDdzZDLGNBQVYsRUFBMEI7UUFBRW5pQyxLQUFLLEVBQUVzZ0IsS0FBSyxDQUFDLHFCQUFELENBQUwsR0FBK0I7TUFBeEMsQ0FBMUI7SUFGMEIsQ0FBckMsRUFHRyxJQUhILEVBR1M7SUFBRTtJQUhYLENBRDhDLENBQWxELENBRDhDLENBQWxELENBRDhDLEVBUzlDLENBQUMsR0FBRzM0QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM2QyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdoOEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDOEMsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHajhDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCL2hCLEtBQUssQ0FBQyxxQkFBRCxDQUFoQyxJQUEyRCxHQUE5RyxFQUFtSDtJQUFFO0lBQXJILENBRDhDLENBQWxELENBVDhDLENBQWxELENBRDZDLENBQWpELENBMUJELEVBeUNDLENBQUMsR0FBRzM0QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MrQyxXQUFwQyxFQUFpRCxDQUFDLEdBQUdsOEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ2xxQixVQUFQLENBQWtCZ0osS0FBSyxDQUFDdzRCLFVBQXhCLENBQTNCLENBQWpELEVBQWtIO0lBQUU7SUFBcEgsQ0F6Q0QsRUEwQ0MsQ0FBQyxHQUFHbnhELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO01BQ3BDLFNBQU8sQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsdUVBQUQsRUFBMEU7UUFDbkcsYUFBYWxrQixLQUFLLENBQUMsUUFBRCxDQUFMLEtBQW9CLE9BRGtFO1FBRW5HLGtCQUFrQkEsS0FBSyxDQUFDLFFBQUQsQ0FBTCxLQUFvQjtNQUY2RCxDQUExRSxDQUExQjtJQUQ2QixDQUF4QyxFQUtHLENBQ0MsQ0FBQyxHQUFHMzRCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2dELFdBQXRDLEVBQW1ELENBQy9DLENBQUMsR0FBR244QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO01BQ3ZDNXBDLElBQUksRUFBRXVvQixLQUFLLENBQUMsUUFBRCxDQUFMLEtBQW9CLE9BQXBCLEdBQThCLGdCQUE5QixHQUFpRDtJQURoQixDQUEzQyxFQUVHLElBRkgsRUFFUztJQUFFO0lBRlgsRUFFd0IsQ0FBQyxNQUFELENBRnhCLENBRCtDLENBQW5ELENBREQsRUFNQyxDQUFDLEdBQUczNEIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDaUQsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHcDhDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnVpQixXQUFqQixDQUE2Qiw0QkFBNEJsb0IsTUFBNUIsQ0FBbUNnM0IsS0FBSyxDQUFDLFFBQUQsQ0FBeEMsQ0FBN0IsQ0FBM0IsQ0FBbkQsRUFBa0s7SUFBRTtJQUFwSyxDQU5ELENBTEgsRUFZRztJQUFFO0lBWkwsQ0FEc0MsQ0FBMUMsQ0ExQ0QsRUF5REMsQ0FBQyxHQUFHMzRCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDa0QsV0FBckMsRUFBa0QsQ0FDN0MxakIsS0FBSyxDQUFDdlcsY0FBUCxJQUNPLENBQUMsR0FBR3BpQixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxXQUFELENBQTdCLEVBQTRDO01BQ25FaHZDLEdBQUcsRUFBRSxDQUQ4RDtNQUVuRWpFLElBQUksRUFBRSxTQUY2RDtNQUduRSxlQUFlK3hCLEtBQUssQ0FBQyxJQUFEO0lBSCtDLENBQTVDLEVBSXhCLElBSndCLEVBSWxCO0lBQUU7SUFKZ0IsRUFJSCxDQUFDLGFBQUQsQ0FKRyxDQUQvQixJQU1NLENBQUMsR0FBRzM0QixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FQd0MsRUFRN0M1aEIsS0FBSyxDQUFDLFFBQUQsQ0FBTCxLQUFvQixXQUFyQixJQUNPLENBQUMsR0FBRzM0QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxTQUFELENBQTdCLEVBQTBDO01BQ2pFaHZDLEdBQUcsRUFBRSxDQUQ0RDtNQUVqRSxrQkFBa0I4dEIsS0FBSyxDQUFDdlcsY0FGeUM7TUFHakUvVyxNQUFNLEVBQUVzdEIsS0FBSyxDQUFDdHRCLE1BSG1EO01BSWpFLGtCQUFrQnN0QixLQUFLLENBQUMzWSxhQUp5QztNQUtqRXBaLElBQUksRUFBRSxTQUwyRDtNQU1qRSxlQUFlK3hCLEtBQUssQ0FBQyxJQUFEO0lBTjZDLENBQTFDLEVBT3hCLElBUHdCLEVBT2xCO0lBQUU7SUFQZ0IsRUFPSCxDQUFDLGdCQUFELEVBQW1CLFFBQW5CLEVBQTZCLGdCQUE3QixFQUErQyxhQUEvQyxDQVBHLENBRC9CLElBU00sQ0FBQyxHQUFHMzRCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWpCd0MsQ0FBbEQsQ0FEc0MsQ0FBMUMsQ0F6REQsRUE4RUMsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztNQUNoQyxTQUFPLGNBRHlCO01BRWhDa0IsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVeGtDLEtBQVYsRUFBaUI7UUFBRSxPQUFPQSxLQUFLLENBQUNDLGVBQU4sRUFBUDtNQUFpQyxDQUE5RTtJQUZ1QixDQUFwQyxFQUdHLENBQ0MsQ0FBQyxHQUFHcFYsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDbUQsV0FBdkMsRUFBb0QsQ0FBQyxHQUFHdDhDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLFFBQTVCLENBQTNCLElBQW9FLEtBQXBFLEdBQTRFLENBQUMsR0FBRzlJLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCL2hCLEtBQUssQ0FBQyx5QkFBRCxDQUFoQyxDQUE1RSxHQUEySSxLQUEvTCxFQUFzTTtJQUFFO0lBQXhNLENBREQsRUFFQyxDQUFDLEdBQUczNEIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDb0QsV0FBdkMsRUFBb0QsQ0FDaEQsQ0FBQyxHQUFHdjhDLEtBQUssQ0FBQ205QyxjQUFWLEVBQTBCLENBQUMsR0FBR245QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUM7TUFDN0QsdUJBQXVCUSxNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO1FBQUUsT0FBU1osTUFBTSxDQUFDaDVDLEtBQVAsQ0FBYW9JLEtBQWIsQ0FBbUJ5VyxrQkFBcEIsR0FBMEMrNkIsTUFBbEQ7TUFBNEQsQ0FBMUcsQ0FEc0M7TUFFN0QxNkMsS0FBSyxFQUFFNDRCLEtBQUssQ0FBQ253QixFQUZnRDtNQUc3RDVCLElBQUksRUFBRTtJQUh1RCxDQUF2QyxFQUl2QixJQUp1QixFQUlqQjtJQUFFO0lBSmUsRUFJRjQxQyxXQUpFLENBQTFCLEVBSXNDLENBQ2xDLENBQUN4OEMsS0FBSyxDQUFDaS9DLGNBQVAsRUFBdUJwRixNQUFNLENBQUNoNUMsS0FBUCxDQUFhb0ksS0FBYixDQUFtQnlXLGtCQUExQyxDQURrQyxDQUp0QyxDQURnRCxFQVFoRCs4QixXQVJnRCxDQUFwRCxDQUZELENBSEgsQ0E5RUQsQ0FMNkIsRUFtRzdCO0lBQUU7SUFuRzJCLENBQWhDO0VBb0dILENBckdnRixDQUFwRCxFQXFHekI7RUFBSTtFQXJHcUIsQ0FEOEMsRUFBcEQsQ0FEL0IsS0F5R08sQ0FBQyxHQUFHejhDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUN1QyxXQUF2QyxFQUFvRCxDQUMxRTlDLE1BQU0sQ0FBQ3Q2QixNQUFSLElBQ08sQ0FBQyxHQUFHdGYsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ3dDLFdBQXBDLEVBQWlEOEQsV0FBakQsQ0FEL0IsS0FFTyxDQUFDLEdBQUd6Z0QsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ3VHLFdBQXBDLEVBQWlELENBQUMsR0FBRzFnRCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixzQkFBNUIsQ0FBM0IsQ0FBakQsRUFBa0k7RUFBRTtFQUFwSSxDQUYvQixDQUQyRSxDQUFwRCxDQXpHL0IsQ0FwRHlDLENBQTdDLENBRDZFLENBQWpELENBQWhDO0FBcUtIOztBQUNEaEosY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUN6UGE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsSUFBSXVCLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBR2g3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsSUFBM0MsRUFBaUQsQ0FBQztBQUFFO0FBQXBELENBQWhDOztBQUNBLElBQUk4QixXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHcDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztFQUFFLFNBQU87QUFBVCxDQUFyQyxFQUFrRyxJQUFsRyxFQUF3RyxDQUFDO0FBQUU7QUFBM0csQ0FBaEM7O0FBQ0EsU0FBU0wsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUdoNkMsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFNBQTVCLENBQXpCOztFQUNBLElBQUlvSSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUdyaUQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLE9BQTVCLENBQXZCOztFQUNBLElBQUlpRyxjQUFjLEdBQUcsQ0FBQyxHQUFHbGdELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixLQUE1QixDQUFyQjs7RUFDQSxJQUFJMEosb0JBQW9CLEdBQUcsQ0FBQyxHQUFHM2pELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixXQUE1QixDQUEzQjs7RUFDQSxJQUFJbVgsc0JBQXNCLEdBQUcsQ0FBQyxHQUFHcHhELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixhQUE1QixDQUE3Qjs7RUFDQSxJQUFJb1gsc0JBQXNCLEdBQUcsQ0FBQyxHQUFHcnhELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixhQUE1QixDQUE3Qjs7RUFDQSxJQUFJaUosd0JBQXdCLEdBQUcsQ0FBQyxHQUFHbGpELEtBQUssQ0FBQ2lqRCxnQkFBVixFQUE0QixlQUE1QixDQUEvQjs7RUFDQSxJQUFJRCwyQkFBMkIsR0FBRyxDQUFDLEdBQUdoakQsS0FBSyxDQUFDaWpELGdCQUFWLEVBQTRCLGtCQUE1QixDQUFsQzs7RUFDQSxPQUFRLENBQUMsR0FBR2pqRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcEIsVUFBckMsRUFBaUQsQ0FDNUVXLElBQUksQ0FBQzd4QyxXQUFOLElBQ08sQ0FBQyxHQUFHN0gsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUM1RHR2QyxHQUFHLEVBQUUsQ0FEdUQ7SUFFNUQsU0FBTyxtRUFGcUQ7SUFHNUR3dkMsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FDbkIsWUFBWTtNQUNSRCxJQUFJLENBQUM3eEMsV0FBTCxHQUFtQixDQUFDNnhDLElBQUksQ0FBQzd4QyxXQUF6QjtJQUNILENBSEk7RUFIbUQsQ0FBckMsQ0FEL0IsSUFTTSxDQUFDLEdBQUc3SCxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FWdUUsRUFXNUViLElBQUksQ0FBQzd4QyxXQUFOLElBQ08sQ0FBQyxHQUFHN0gsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUM1RHR2QyxHQUFHLEVBQUUsQ0FEdUQ7SUFFNUQsU0FBTyw4QkFGcUQ7SUFHNUR3dkMsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FDbkIsWUFBWTtNQUNSRCxJQUFJLENBQUM3eEMsV0FBTCxHQUFtQixDQUFDNnhDLElBQUksQ0FBQzd4QyxXQUF6QjtJQUNILENBSEk7RUFIbUQsQ0FBckMsRUFPeEIsQ0FDQyxDQUFDLEdBQUc3SCxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDNXBDLElBQUksRUFBRSxTQURpQztJQUV2QyxTQUFPO0VBRmdDLENBQTNDLENBREQsQ0FQd0IsQ0FEL0IsSUFjTSxDQUFDLEdBQUdwUSxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0F6QnVFLEVBMEI3RSxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJxSixvQkFBdkIsRUFBNkM7SUFDekMsbUJBQW1CakssSUFBSSxDQUFDL3NDLGNBRGlCO0lBRXpDdUwsS0FBSyxFQUFFd2hDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLGVBQTFCLENBRmtDO0lBR3pDLGFBQWEsR0FBR25ILE1BQUgsQ0FBVSszQyxJQUFJLENBQUN0Z0IsVUFBZjtFQUg0QixDQUE3QyxFQUlHO0lBQ0MsV0FBUyxDQUFDLEdBQUdwNUIsS0FBSyxDQUFDNDZDLE9BQVYsRUFBbUIsWUFBWTtNQUFFLE9BQU8sQ0FDN0MsQ0FBQyxHQUFHNTZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0gsVUFBckMsRUFBaUQsQ0FDNUNVLElBQUksQ0FBQzlpQyxTQUFMLENBQWUxSSxVQUFoQixJQUNPLENBQUMsR0FBR2xPLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QjBILGdCQUF2QixFQUF5QztRQUNoRXgzQyxHQUFHLEVBQUUsQ0FEMkQ7UUFFaEVyQixPQUFPLEVBQUVrd0MsSUFBSSxDQUFDOWlDLFNBQUwsQ0FBZXBOLE9BRndDO1FBR2hFNUMsSUFBSSxFQUFFOHlDLElBQUksQ0FBQzlpQyxTQUFMLENBQWVoUSxJQUgyQztRQUloRSxTQUFPO01BSnlELENBQXpDLEVBS3hCLElBTHdCLEVBS2xCO01BQUU7TUFMZ0IsRUFLSCxDQUFDLFNBQUQsRUFBWSxNQUFaLENBTEcsQ0FEL0IsSUFPTSxDQUFDLEdBQUc1RyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FSdUMsRUFTN0MsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QiwrQ0FBOUIsQ0FUNkMsRUFVN0MsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCNEYsY0FBdkIsRUFBdUM7UUFDbkNod0MsSUFBSSxFQUFFd3BDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrYSxNQUFmLENBQXNCLGFBQXRCLEVBQXFDLGVBQXJDLENBRDZCO1FBRW5DalMsSUFBSSxFQUFFLEtBRjZCO1FBR25DNU4sSUFBSSxFQUFFLEdBQUdiLE1BQUgsQ0FBVSszQyxJQUFJLENBQUN0Z0IsVUFBZixFQUEyQixTQUEzQixDQUg2QjtRQUluQyxTQUFPO01BSjRCLENBQXZDLEVBS0csSUFMSCxFQUtTO01BQUU7TUFMWCxFQUt3QixDQUFDLE1BQUQsRUFBUyxNQUFULENBTHhCLENBVjZDLEVBZ0I3QyxDQUFDLEdBQUdwNUIsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUI0RixjQUF2QixFQUF1QztRQUNuQ2h3QyxJQUFJLEVBQUV3cEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZSthLE1BQWYsQ0FBc0IsY0FBdEIsRUFBc0MsZUFBdEMsQ0FENkI7UUFFbkM3ZixJQUFJLEVBQUUsR0FBR2IsTUFBSCxDQUFVKzNDLElBQUksQ0FBQ3RnQixVQUFmLEVBQTJCLEdBQTNCLEVBQWdDejNCLE1BQWhDLENBQXVDKzNDLElBQUksQ0FBQ3JvQixNQUFMLENBQVk3b0IsRUFBbkQsRUFBdUQsT0FBdkQ7TUFGNkIsQ0FBdkMsRUFHRyxJQUhILEVBR1M7TUFBRTtNQUhYLEVBR3dCLENBQUMsTUFBRCxFQUFTLE1BQVQsQ0FIeEIsQ0FoQjZDLENBQWpELENBRDZDLENBQVA7SUFzQnRDLENBdEJLLENBRFY7SUF3QkN2RCxDQUFDLEVBQUU7SUFBRTs7RUF4Qk4sQ0FKSCxFQTZCRztFQUFFO0VBN0JMLEVBNkJrQixDQUFDLGlCQUFELEVBQW9CLE9BQXBCLEVBQTZCLFdBQTdCLENBN0JsQixDQTFCNkUsRUF3RDdFLENBQUMsR0FBR2pGLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0YsVUFBckMsRUFBaUQscUJBQXFCLENBQUMsR0FBR2o1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3JvQixNQUFMLENBQVlpZ0MsV0FBdkMsQ0FBdEUsRUFBMkg7RUFBRTtFQUE3SCxDQXhENkUsRUF5RDdFLENBQUMsR0FBR3R4RCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFDakMsU0FBTyxtQkFEMEI7SUFFakNrQixPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUNuQixZQUFZO01BQ1JELElBQUksQ0FBQzd4QyxXQUFMLEdBQW1CLENBQUM2eEMsSUFBSSxDQUFDN3hDLFdBQXpCO0lBQ0gsQ0FISTtFQUZ3QixDQUFyQyxFQU1HLENBQ0MsQ0FBQyxHQUFHN0gsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QzVwQyxJQUFJLEVBQUUsU0FEaUM7SUFFdkMsU0FBTztFQUZnQyxDQUEzQyxDQURELENBTkgsQ0F6RDZFLEVBcUU3RSxDQUFDLEdBQUdwUSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUM7SUFDbkMsU0FBTyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FDN0JuRCxJQUFJLENBQUM3eEMsV0FBTCxHQUNNLElBQUlsRyxNQUFKLENBQVcrM0MsSUFBSSxDQUFDN3dCLFlBQUwsR0FDUCxtQ0FETyxHQUVQLGdCQUZKLEVBRXNCLHFCQUZ0QixDQUROLEdBSU0sS0FBS2xuQixNQUFMLENBQVkrM0MsSUFBSSxDQUFDN3dCLFlBQUwsR0FDUixtQ0FEUSxHQUVSLGdCQUZKLEVBRXNCLHNCQUZ0QixDQUx1QixFQVE3QixtR0FSNkIsQ0FBMUI7RUFENEIsQ0FBdkMsRUFXRyxDQUNDLENBQUMsR0FBRzdvQixLQUFLLENBQUNtOUMsY0FBVixHQUEyQixDQUFDLEdBQUduOUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUMxRixDQUFDLEdBQUduNkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DQyxVQUFwQyxFQUFnRCxDQUM1QyxDQUFDLEdBQUdwNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtOUMsY0FBVixHQUEyQixDQUFDLEdBQUduOUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztJQUNsRnozQyxJQUFJLEVBQUUsU0FENEU7SUFFbEYsU0FBTyxDQUFDLEdBQUcxQyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQm5ELElBQUksQ0FBQ25vQixXQUEvQjtFQUYyRSxDQUFuQyxFQUdoRCxDQUNDLENBQUMsR0FBR3Z4QixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsOERBQTlCLENBREQsRUFFQyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsUUFBMUIsRUFBb0M0USxXQUFwQyxFQUEzQixDQUEzQixFQUEwRztFQUFFO0VBQTVHLENBRkQsQ0FIZ0QsRUFNaEQ7RUFBRTtFQU44QyxDQUFuRCxHQU1vQixDQUNoQixDQUFDd3BDLHdCQUFELENBRGdCLENBTnBCLENBRHNDLENBQTFDLENBRDRDLEVBWTVDLENBQUMsR0FBR2xqRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ205QyxjQUFWLEdBQTJCLENBQUMsR0FBR245QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0lBQ2xGejNDLElBQUksRUFBRSxTQUQ0RTtJQUVsRixTQUFPLENBQUMsR0FBRzFDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCbkQsSUFBSSxDQUFDbm9CLFdBQS9CO0VBRjJFLENBQW5DLEVBR2hELENBQ0MsQ0FBQyxHQUFHdnhCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4Qiw4REFBOUIsQ0FERCxFQUVDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixRQUExQixFQUFvQzRRLFdBQXBDLEVBQTNCLENBQTNCLEVBQTBHO0VBQUU7RUFBNUcsQ0FGRCxDQUhnRCxFQU1oRDtFQUFFO0VBTjhDLENBQW5ELEdBTW9CLENBQ2hCLENBQUN3cEMsd0JBQUQsQ0FEZ0IsQ0FOcEIsQ0FEc0MsQ0FBMUMsQ0FaNEMsQ0FBaEQsQ0FENkMsQ0FBakQsQ0FEMEYsQ0FBM0MsQ0FBbkQsR0EyQkssQ0FDRCxDQUFDRiwyQkFBRCxDQURDLENBM0JMLENBREQsQ0FYSCxFQTBDRztFQUFFO0VBMUNMLENBckU2RSxFQWdIN0UsQ0FBQyxHQUFHaGpELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0UsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1Q0csVUFBdkMsRUFBbUQsQ0FDL0MsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQ205QyxjQUFWLEdBQTJCLENBQUMsR0FBR245QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQzFGLENBQUMsR0FBR242QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNJLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3Y1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NLLFVBQXBDLEVBQWdELENBQzVDLENBQUMsR0FBR3g1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ205QyxjQUFWLEdBQTJCLENBQUMsR0FBR245QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0lBQ2xGejNDLElBQUksRUFBRSxTQUQ0RTtJQUVsRixTQUFPLENBQUMsR0FBRzFDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCbkQsSUFBSSxDQUFDbm9CLFdBQS9CO0VBRjJFLENBQW5DLEVBR2hELENBQ0MsQ0FBQyxHQUFHdnhCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4Qiw4REFBOUIsQ0FERCxFQUVDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixRQUExQixFQUFvQzRRLFdBQXBDLEVBQTNCLENBQTNCLEVBQTBHO0VBQUU7RUFBNUcsQ0FGRCxDQUhnRCxFQU1oRDtFQUFFO0VBTjhDLENBQW5ELEdBTW9CLENBQ2hCLENBQUN3cEMsd0JBQUQsQ0FEZ0IsQ0FOcEIsQ0FEc0MsQ0FBMUMsQ0FENEMsRUFZNUMsQ0FBQyxHQUFHbGpELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTlDLGNBQVYsR0FBMkIsQ0FBQyxHQUFHbjlDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7SUFDbEZ6M0MsSUFBSSxFQUFFLFNBRDRFO0lBRWxGLFNBQU8sQ0FBQyxHQUFHMUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEJuRCxJQUFJLENBQUNub0IsV0FBL0I7RUFGMkUsQ0FBbkMsRUFHaEQsQ0FDQyxDQUFDLEdBQUd2eEIsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLDhEQUE5QixDQURELEVBRUMsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFFBQTFCLEVBQW9DNFEsV0FBcEMsRUFBM0IsQ0FBM0IsRUFBMEc7RUFBRTtFQUE1RyxDQUZELENBSGdELEVBTWhEO0VBQUU7RUFOOEMsQ0FBbkQsR0FNb0IsQ0FDaEIsQ0FBQ3dwQyx3QkFBRCxDQURnQixDQU5wQixDQURzQyxDQUExQyxDQVo0QyxDQUFoRCxDQUQ2QyxDQUFqRCxDQUQwRixDQUEzQyxDQUFuRCxHQTJCSyxDQUNELENBQUNGLDJCQUFELENBREMsQ0EzQkwsQ0FEK0MsQ0FBbkQsQ0FENkMsRUFpQzdDLENBQUMsR0FBR2hqRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNNLFdBQXJDLEVBQWtELENBQzlDdUIsV0FEOEMsRUFFOUMsQ0FBQyxHQUFHaDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzhCLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR2o3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMrQixXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdsN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDZ0MsV0FBckMsRUFBa0QsQ0FBQyxHQUFHbjdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDN3BCLFVBQUwsQ0FBZ0I2cEIsSUFBSSxDQUFDam9CLFVBQUwsQ0FBZ0JsVixZQUFoQixDQUE2QixDQUE3QixFQUFnQ3RJLElBQWhELENBQTNCLElBQW9GLEtBQXBGLEdBQTRGLENBQUMsR0FBR2pVLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDN3BCLFVBQUwsQ0FBZ0I2cEIsSUFBSSxDQUFDam9CLFVBQUwsQ0FBZ0JqVixVQUFoQixDQUEyQixDQUEzQixFQUE4QnZJLElBQTlDLENBQTNCLENBQTlJLEVBQStOO0VBQUU7RUFBak8sQ0FEOEMsRUFFOUMsQ0FBQyxHQUFHalUsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUI4VyxzQkFBdkIsRUFBK0M7SUFDM0M1b0QsRUFBRSxFQUFFLFFBRHVDO0lBRTNDakcsSUFBSSxFQUFFbTNDLElBQUksQ0FBQ2pvQixVQUFMLENBQWdCNVU7RUFGcUIsQ0FBL0MsRUFHRyxJQUhILEVBR1M7RUFBRTtFQUhYLEVBR3dCLENBQUMsTUFBRCxDQUh4QixDQUY4QyxFQU05Q3UrQixXQU44QyxFQU85QyxDQUFDLEdBQUdwN0MsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUIrVyxzQkFBdkIsRUFBK0M7SUFDM0M3b0QsRUFBRSxFQUFFLFFBRHVDO0lBRTNDakcsSUFBSSxFQUFFbTNDLElBQUksQ0FBQ2pvQixVQUFMLENBQWdCOC9CO0VBRnFCLENBQS9DLEVBR0csSUFISCxFQUdTO0VBQUU7RUFIWCxFQUd3QixDQUFDLE1BQUQsQ0FIeEIsQ0FQOEMsQ0FBbEQsQ0FEOEMsQ0FBbEQsQ0FGOEMsQ0FBbEQsQ0FqQzZDLENBQWpELENBaEg2RSxDQUFqRCxDQUFoQztBQW9LSDs7QUFDRHp4RCxjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ2pNYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRyxDQUFDLE1BQUQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFDYjd3QyxFQUFFLEVBQUUsa0JBRFM7RUFFYnlqRCxLQUFLLEVBQUU7QUFGTSxDQUFqQjs7QUFJQSxJQUFJM1MsVUFBVSxHQUFHLGFBQWMsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztFQUMvRDN3QyxFQUFFLEVBQUUsTUFEMkQ7RUFFL0R5akQsS0FBSyxFQUFFLEtBRndEO0VBRy9ENXpDLEtBQUssRUFBRTtBQUh3RCxDQUFwQyxFQUk1QixDQUNDLGFBQWMsQ0FBQyxHQUFHclksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLGVBQTVDLENBRGYsQ0FKNEIsRUFNNUIsQ0FBQztBQUFFO0FBTnlCLENBQS9COztBQU9BLElBQUlJLFVBQVUsR0FBRztFQUNiL3dDLEVBQUUsRUFBRSxRQURTO0VBRWJ5akQsS0FBSyxFQUFFLEtBRk07RUFHYjV6QyxLQUFLLEVBQUU7QUFITSxDQUFqQjtBQUtBLElBQUltaEMsVUFBVSxHQUFHO0VBQUUzdUMsR0FBRyxFQUFFO0FBQVAsQ0FBakI7QUFDQSxJQUFJNHVDLFdBQVcsR0FBRyxDQUFDLFNBQUQsQ0FBbEI7QUFDQSxJQUFJdUIsV0FBVyxHQUFHLENBQUMsTUFBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLE1BQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRXR3QyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUl1d0MsV0FBVyxHQUFHO0VBQ2Q4USxPQUFPLEVBQUUsR0FESztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUk3USxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsU0FBU3ZDLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSXNJLGdCQUFnQixHQUFHLENBQUMsR0FBR3JpRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsT0FBNUIsQ0FBdkI7O0VBQ0EsSUFBSWlHLGNBQWMsR0FBRyxDQUFDLEdBQUdsZ0QsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLEtBQTVCLENBQXJCOztFQUNBLElBQUkwSixvQkFBb0IsR0FBRyxDQUFDLEdBQUczakQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFdBQTVCLENBQTNCOztFQUNBLElBQUlELGtCQUFrQixHQUFHLENBQUMsR0FBR2g2QyxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsU0FBNUIsQ0FBekI7O0VBQ0EsSUFBSWtTLHVCQUF1QixHQUFHLENBQUMsR0FBR25zRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsY0FBNUIsQ0FBOUI7O0VBQ0EsSUFBSThKLHFCQUFxQixHQUFHLENBQUMsR0FBRy9qRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsWUFBNUIsQ0FBNUI7O0VBQ0EsT0FBUSxDQUFDLEdBQUdqNkMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3BCLFVBQXJDLEVBQWlELENBQzdFLENBQUMsR0FBRy80QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QnFKLG9CQUF2QixFQUE2QztJQUN6QyxtQkFBbUJqSyxJQUFJLENBQUMvc0MsY0FEaUI7SUFFekN1TCxLQUFLLEVBQUV3aEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsY0FBMUIsQ0FGa0M7SUFHekMsYUFBYTR3QyxJQUFJLENBQUN6bkI7RUFIdUIsQ0FBN0MsRUFJRztJQUNDLFdBQVMsQ0FBQyxHQUFHanlCLEtBQUssQ0FBQzQ2QyxPQUFWLEVBQW1CLFlBQVk7TUFBRSxPQUFPLENBQzdDLENBQUMsR0FBRzU2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQzVDVSxJQUFJLENBQUM5aUMsU0FBTCxDQUFlMUksVUFBaEIsSUFDTyxDQUFDLEdBQUdsTyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUIwSCxnQkFBdkIsRUFBeUM7UUFDaEV4M0MsR0FBRyxFQUFFLENBRDJEO1FBRWhFckIsT0FBTyxFQUFFa3dDLElBQUksQ0FBQzlpQyxTQUFMLENBQWVwTixPQUZ3QztRQUdoRTVDLElBQUksRUFBRTh5QyxJQUFJLENBQUM5aUMsU0FBTCxDQUFlaFEsSUFIMkM7UUFJaEUsU0FBTztNQUp5RCxDQUF6QyxFQUt4QixJQUx3QixFQUtsQjtNQUFFO01BTGdCLEVBS0gsQ0FBQyxTQUFELEVBQVksTUFBWixDQUxHLENBRC9CLElBT00sQ0FBQyxHQUFHNUcsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBUnVDLEVBUzdDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7UUFDL0J6MkMsSUFBSSxFQUFFLEdBQUdmLE1BQUgsQ0FBVSszQyxJQUFJLENBQUN0Z0IsVUFBZixFQUEyQixTQUEzQjtNQUR5QixDQUFuQyxFQUVHLENBQ0MsQ0FBQyxHQUFHcDVCLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCNEYsY0FBdkIsRUFBdUM7UUFDbkNod0MsSUFBSSxFQUFFd3BDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrYSxNQUFmLENBQXNCLGFBQXRCLEVBQXFDLGVBQXJDLENBRDZCO1FBRW5DalMsSUFBSSxFQUFFLE1BRjZCO1FBR25DeEosSUFBSSxFQUFFO01BSDZCLENBQXZDLEVBSUcsSUFKSCxFQUlTO01BQUU7TUFKWCxFQUl3QixDQUFDLE1BQUQsQ0FKeEIsQ0FERCxDQUZILEVBUUc7TUFBRTtNQVJMLEVBUWtCcXlDLFVBUmxCLENBVDZDLENBQWpELENBRDZDLENBQVA7SUFvQnRDLENBcEJLLENBRFY7SUFzQkNoMEMsQ0FBQyxFQUFFO0lBQUU7O0VBdEJOLENBSkgsRUEyQkc7RUFBRTtFQTNCTCxFQTJCa0IsQ0FBQyxpQkFBRCxFQUFvQixPQUFwQixFQUE2QixXQUE3QixDQTNCbEIsQ0FENkUsRUE2QjdFLENBQUMsR0FBR2pGLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0QsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QyxJQUF2QyxFQUE2QyxDQUN6QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDLElBQXZDLEVBQTZDLENBQ3pDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NDLFVBQXBDLEVBQWdELENBQzVDLENBQUMsR0FBR3A1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NFLFVBQXBDLEVBQWdELENBQzVDLENBQUMsR0FBR3I1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZWdxQixPQUFmLENBQXVCLFlBQXZCLENBQTNCLElBQW1FLEtBQW5FLEdBQTJFLENBQUMsR0FBR3R4QixLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWVncUIsT0FBZixDQUF1QixVQUF2QixDQUEzQixDQUF2SCxFQUF1TDtFQUFFO0VBQXpMLENBRDRDLENBQWhELENBRDRDLEVBSTVDZ29CLFVBSjRDLEVBSzVDLENBQUMsR0FBR3Q1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NJLFVBQXBDLEVBQWdELENBQzVDLENBQUMsR0FBR3Y1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsUUFBMUIsQ0FBM0IsQ0FBNUMsRUFBNkc7RUFBRTtFQUEvRyxDQUQ0QyxDQUFoRCxDQUw0QyxDQUFoRCxDQUR5QyxDQUE3QyxDQUR5QyxFQVl4QzR3QyxJQUFJLENBQUNyZ0IsV0FBTCxDQUFpQjkyQixJQUFqQixJQUF5Qm0zQyxJQUFJLENBQUNyZ0IsV0FBTCxDQUFpQjkyQixJQUFqQixDQUFzQjRELE1BQXRCLEdBQStCLENBQXpELElBQ08sQ0FBQyxHQUFHbkcsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixPQUE5QixFQUF1Q1gsVUFBdkMsRUFBbUQsRUFDekUsQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnBELElBQUksQ0FBQ3JnQixXQUFMLENBQWlCOTJCLElBQXZDLEVBQTZDLFVBQVVpdkQsRUFBVixFQUFjcnNDLENBQWQsRUFBaUI7SUFDM0ksT0FBUSxDQUFDLEdBQUdubEIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztNQUNoRXR2QyxHQUFHLEVBQUVzYSxDQUQyRDtNQUVoRSxTQUFPLGdCQUZ5RDtNQUdoRWsxQixPQUFPLEVBQUUsaUJBQVVJLE1BQVYsRUFBa0I7UUFBRSxPQUFRZixJQUFJLENBQUNsbkIsY0FBTCxDQUFvQixHQUFHN3dCLE1BQUgsQ0FBVSszQyxJQUFJLENBQUN0Z0IsVUFBZixFQUEyQixHQUEzQixFQUFnQ3ozQixNQUFoQyxDQUF1QzZ2RCxFQUFFLENBQUNocEQsRUFBMUMsQ0FBcEIsQ0FBUjtNQUE4RTtJQUgzQyxDQUFwQyxFQUk3QixDQUNDLENBQUMsR0FBR3hJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO01BQy9CLFNBQU8seURBRHdCO01BRS9CejJDLElBQUksRUFBRSxHQUFHZixNQUFILENBQVUrM0MsSUFBSSxDQUFDdGdCLFVBQWYsRUFBMkIsR0FBM0IsRUFBZ0N6M0IsTUFBaEMsQ0FBdUM2dkQsRUFBRSxDQUFDaHBELEVBQTFDO0lBRnlCLENBQW5DLEVBR0csQ0FBQyxHQUFHeEksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkI4VyxFQUFFLENBQUNuZ0MsTUFBSCxDQUFVOVUsWUFBVixDQUF1QixDQUF2QixFQUEwQnRJLElBQTFCLEdBQ3hCeWxDLElBQUksQ0FBQzdwQixVQUFMLENBQWdCMmhDLEVBQUUsQ0FBQ25nQyxNQUFILENBQVU5VSxZQUFWLENBQXVCLENBQXZCLEVBQTBCdEksSUFBMUMsQ0FEd0IsR0FFeEJ5bEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBRkgsSUFFK0IsS0FGL0IsR0FFdUMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCOFcsRUFBRSxDQUFDbmdDLE1BQUgsQ0FBVTdVLFVBQVYsQ0FBcUIsQ0FBckIsRUFBd0J2SSxJQUF4QixHQUMvRHlsQyxJQUFJLENBQUM3cEIsVUFBTCxDQUFnQjJoQyxFQUFFLENBQUNuZ0MsTUFBSCxDQUFVN1UsVUFBVixDQUFxQixDQUFyQixFQUF3QnZJLElBQXhDLENBRCtELEdBRS9EeWxDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUZvQyxDQUwxQyxFQU9pQztJQUFFO0lBUG5DLEVBT3NEMm5CLFdBUHRELENBRHNDLENBQTFDLENBREQsRUFXQyxDQUFDLEdBQUdoN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQjhXLEVBQUUsQ0FBQ0YsV0FBOUIsQ0FBMUMsRUFBc0Y7SUFBRTtJQUF4RixDQVhELEVBWUMsQ0FBQyxHQUFHdHhELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDOEIsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHajdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztNQUMvQixTQUFPLGdCQUR3QjtNQUUvQnoyQyxJQUFJLEVBQUUsR0FBR2YsTUFBSCxDQUFVKzNDLElBQUksQ0FBQ3RnQixVQUFmLEVBQTJCLEdBQTNCLEVBQWdDejNCLE1BQWhDLENBQXVDNnZELEVBQUUsQ0FBQ2hwRCxFQUExQyxFQUE4QyxPQUE5QztJQUZ5QixDQUFuQyxFQUdHLENBQ0MsQ0FBQyxHQUFHeEksS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztNQUN2QzVwQyxJQUFJLEVBQUUsTUFEaUM7TUFFdkMsU0FBTztJQUZnQyxDQUEzQyxDQURELENBSEgsRUFRRztJQUFFO0lBUkwsRUFRa0I4cUMsV0FSbEIsQ0FEOEMsRUFVOUMsQ0FBQyxHQUFHbDdDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCNlIsdUJBQXZCLEVBQWdEO01BQzVDLGFBQWEsUUFEK0I7TUFFNUMsV0FBV3FGLEVBQUUsQ0FBQ2hwRDtJQUY4QixDQUFoRCxFQUdHLElBSEgsRUFHUztJQUFFO0lBSFgsRUFHd0IsQ0FBQyxTQUFELENBSHhCLENBVjhDLENBQWxELENBRHNDLENBQTFDLENBWkQsQ0FKNkIsRUFpQzdCO0lBQUU7SUFqQzJCLEVBaUNkaXhDLFdBakNjLENBQWhDO0VBa0NILENBbkNnRixDQUFwRCxFQW1DekI7RUFBSTtFQW5DcUIsQ0FENkMsRUFBbkQsQ0FEL0IsS0F1Q08sQ0FBQyxHQUFHejVDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUNnQixXQUF2QyxFQUFvRCxDQUMzRSxDQUFDLEdBQUduN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DaUMsV0FBcEMsRUFBaUQsQ0FBQyxHQUFHcDdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDOW1CLHlCQUFMLENBQStCOG1CLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFNBQTFCLENBQS9CLEVBQXFFNHdDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixDQUF1QixXQUF2QixDQUFyRSxDQUEzQixDQUFqRCxFQUF3TDtFQUFFO0VBQTFMLENBRDJFLENBQXBELENBdkMvQixDQVp5QyxDQUE3QyxDQUQ2QyxDQUFqRCxDQTdCNkUsRUFzRjdFLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNrQyxXQUFyQyxFQUFrRCxDQUM3QzNCLElBQUksQ0FBQ3JnQixXQUFMLElBQW9CcWdCLElBQUksQ0FBQ3JnQixXQUFMLENBQWlCaGUsU0FBakIsR0FBNkIsQ0FBbEQsSUFDTyxDQUFDLEdBQUdyYixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJvSixxQkFBdkIsRUFBOEM7SUFDckVsNUMsR0FBRyxFQUFFLENBRGdFO0lBRXJFdEksSUFBSSxFQUFFbTNDLElBQUksQ0FBQ3JnQixXQUYwRDtJQUdyRTZxQixpQkFBaUIsRUFBRXhLLElBQUksQ0FBQ2puQjtFQUg2QyxDQUE5QyxFQUl4QixJQUp3QixFQUlsQjtFQUFFO0VBSmdCLEVBSUgsQ0FBQyxNQUFELEVBQVMsbUJBQVQsQ0FKRyxDQUQvQixJQU1NLENBQUMsR0FBR3p5QixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FQd0MsQ0FBbEQsQ0F0RjZFLENBQWpELENBQWhDO0FBZ0dIOztBQUNEejZDLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDNUlhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHO0VBQUU4UyxPQUFPLEVBQUU7QUFBWCxDQUFqQjtBQUNBLElBQUk3UyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7O0FBQ0EsSUFBSUMsVUFBVSxHQUFHLGFBQWMsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztFQUFFLFNBQU87QUFBVCxDQUFyQyxFQUFpRyxJQUFqRyxFQUF1RyxDQUFDO0FBQUU7QUFBMUcsQ0FBL0I7O0FBQ0EsU0FBU0wsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJeVIsdUJBQXVCLEdBQUcsQ0FBQyxHQUFHeHJELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixjQUE1QixDQUE5Qjs7RUFDQSxPQUFRLENBQUMsR0FBR2o2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcEIsVUFBckMsRUFBaUQsRUFDNUUsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnBELElBQUksQ0FBQ25nQixXQUEzQixFQUF3QyxVQUFVazRCLE1BQVYsRUFBa0IzckQsQ0FBbEIsRUFBcUI7SUFDMUksSUFBSW5GLEVBQUo7O0lBQ0EsT0FBUSxDQUFDLEdBQUdYLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7TUFDakV0dkMsR0FBRyxFQUFFL0UsQ0FENEQ7TUFFakUsU0FBTztJQUYwRCxDQUFyQyxFQUc3QixDQUNDLENBQUMsR0FBRzlGLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1Q0gsVUFBdkMsRUFBbUQsQ0FDL0MsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QyxJQUF2QyxFQUE2QyxDQUN6QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ0YsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHajVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsY0FBMUIsQ0FBM0IsQ0FBbEQsRUFBeUg7SUFBRTtJQUEzSCxDQURzQyxDQUExQyxDQURzQyxFQUl0QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqQyxTQUFPLENBQUMsR0FBR241QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQm5ELElBQUksQ0FBQzNtQixjQUEvQjtJQUQwQixDQUFyQyxFQUVHLENBQUMsR0FBRy95QixLQUFLLENBQUMwNkMsZUFBVixFQUEyQixDQUFDLzVDLEVBQUUsR0FBRzh3RCxNQUFNLENBQUMxeEQsS0FBYixNQUF3QixJQUF4QixJQUFnQ1ksRUFBRSxLQUFLLEtBQUssQ0FBNUMsR0FBZ0RBLEVBQWhELEdBQXFEKzRDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUFoRixDQUZILEVBRThHO0lBQUU7SUFGaEgsQ0FEc0MsRUFJdEMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqQyxTQUFPLENBQUMsR0FBR241QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLE1BQUQsRUFBU25ELElBQUksQ0FBQzNtQixjQUFkLENBQTFCO0lBRDBCLENBQXJDLEVBRUcsQ0FDQyxDQUFDLEdBQUcveUIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLG9CQUExQixDQUEzQixJQUE4RSxLQUF6SCxFQUFnSTtJQUFFO0lBQWxJLENBREQsRUFFQyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDbGdCLFdBQUwsQ0FBaUJpNEIsTUFBTSxDQUFDaG5ELFFBQXhCLElBQ2hFaXZDLElBQUksQ0FBQ2xnQixXQUFMLENBQWlCaTRCLE1BQU0sQ0FBQ2huRCxRQUF4QixDQURnRSxHQUVoRWl2QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFGcUMsQ0FBM0MsRUFFaUM7SUFBRTtJQUZuQyxDQUZELENBRkgsRUFPRztJQUFFO0lBUEwsQ0FKc0MsRUFZdEMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqQyxTQUFPLENBQUMsR0FBR241QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLE1BQUQsRUFBU25ELElBQUksQ0FBQzNtQixjQUFkLENBQTFCO0lBRDBCLENBQXJDLEVBRUcsQ0FDQyxDQUFDLEdBQUcveUIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFdBQTFCLENBQTNCLElBQXFFLElBQWhILEVBQXNIO0lBQUU7SUFBeEgsQ0FERCxFQUVDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxFQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCMlUsTUFBTSxDQUFDcEYsU0FBN0IsRUFBd0MsVUFBVXFGLEdBQVYsRUFBZS9ULENBQWYsRUFBa0I7TUFDdkksSUFBSWg5QyxFQUFKLEVBQVF5RyxFQUFSOztNQUNBLE9BQVEsQ0FBQyxHQUFHcEgsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztRQUNqRXR2QyxHQUFHLEVBQUU4eUMsQ0FENEQ7UUFFakUsU0FBTztNQUYwRCxDQUFyQyxFQUc3QixDQUFDLEdBQUczOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQy81QyxFQUFFLEdBQUcrd0QsR0FBRyxDQUFDOW9ELElBQVYsTUFBb0IsSUFBcEIsSUFBNEJqSSxFQUFFLEtBQUssS0FBSyxDQUF4QyxHQUE0Q0EsRUFBNUMsR0FBaUQrNEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQTVFLElBQXdHLElBQXhHLEdBQStHLENBQUMsR0FBR3J6QixLQUFLLENBQUMwNkMsZUFBVixFQUEyQixDQUFDdHpDLEVBQUUsR0FBR3NxRCxHQUFHLENBQUMzeEQsS0FBVixNQUFxQixJQUFyQixJQUE2QnFILEVBQUUsS0FBSyxLQUFLLENBQXpDLEdBQTZDQSxFQUE3QyxHQUFrRHN5QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBN0UsQ0FBL0csR0FBd04sSUFIM0wsRUFHaU07TUFBRTtNQUhuTSxDQUFoQztJQUlILENBTmdGLENBQXBELEVBTXpCO0lBQUk7SUFOcUIsQ0FEVSxFQUEzQyxDQUZELENBRkgsRUFhRztJQUFFO0lBYkwsQ0Fac0MsRUEwQnRDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7TUFDakMsU0FBTyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxNQUFELEVBQVNuRCxJQUFJLENBQUMzbUIsY0FBZCxDQUExQjtJQUQwQixDQUFyQyxFQUVHLENBQ0MsQ0FBQyxHQUFHL3lCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixTQUExQixDQUEzQixJQUFtRSxJQUE5RyxFQUFvSDtJQUFFO0lBQXRILENBREQsRUFFQyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsRUFDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQjJVLE1BQU0sQ0FBQ25GLE9BQVAsQ0FBZSxDQUFmLEVBQWtCaHdDLFNBQXhDLEVBQW1ELFVBQVVpd0MsR0FBVixFQUFlL0gsQ0FBZixFQUFrQjtNQUNsSixPQUFRLENBQUMsR0FBR3hrRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1FBQ2pFdHZDLEdBQUcsRUFBRTI1QyxDQUQ0RDtRQUVqRSxTQUFPLENBQUMsR0FBR3hrRCxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLE1BQUQsRUFBUztVQUNsQyxVQUFVMkgsQ0FBQyxLQUFLaU4sTUFBTSxDQUFDbkYsT0FBUCxDQUFlLENBQWYsRUFBa0Jod0MsU0FBbEIsQ0FBNEJuVyxNQUE1QixHQUFxQztRQURuQixDQUFULENBQTFCO01BRjBELENBQXJDLEVBSzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCNlIsR0FBRyxDQUFDandDLFNBQUosR0FBZ0Jpd0MsR0FBRyxDQUFDandDLFNBQXBCLEdBQWdDbzlCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUEzRCxJQUF1RixLQUFuSSxFQUEwSTtNQUFFO01BQTVJLENBRHVDLEVBRXZDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsT0FBTyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixVQUExQixDQUEzQixDQUFQLEdBQTJFLElBQTNFLEdBQWtGLENBQUMsR0FBRzlJLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCNlIsR0FBRyxDQUFDamtELFFBQUosR0FDbkpveEMsSUFBSSxDQUFDcGdCLE1BQUwsQ0FBWWh4QixRQUFaLENBQXFCaWtELEdBQUcsQ0FBQ2prRCxRQUF6QixDQURtSixHQUVuSm94QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFGd0gsQ0FBbEYsR0FFVixJQUZsQyxFQUV3QztNQUFFO01BRjFDLENBRnVDLENBQTNDLENBREQsQ0FMNkIsRUFZN0I7TUFBRTtNQVoyQixDQUFoQztJQWFILENBZGdGLENBQXBELEVBY3pCO0lBQUk7SUFkcUIsQ0FEVSxFQUEzQyxDQUZELENBRkgsRUFxQkc7SUFBRTtJQXJCTCxDQTFCc0MsQ0FBMUMsQ0FKc0MsQ0FBMUMsQ0FEeUMsQ0FBN0MsQ0FEK0MsQ0FBbkQsQ0FERCxFQTJEQyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDRCxVQUF2QyxFQUFtRCxDQUMvQyxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDLElBQXZDLEVBQTZDLENBQ3pDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ0MsVUFBcEMsRUFBZ0QsQ0FDNUMsQ0FBQyxHQUFHcDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0UsVUFBckMsRUFBaUQsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsZUFBMUIsQ0FBM0IsQ0FBakQsRUFBeUg7SUFBRTtJQUEzSCxDQUQ0QyxFQUU1Q3d3QyxVQUY0QyxDQUFoRCxDQURzQyxDQUExQyxDQUR5QyxDQUE3QyxDQUQrQyxDQUFuRCxDQTNERCxFQXFFQyxDQUFDLEdBQUd0NUMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJrUix1QkFBdkIsRUFBZ0Q7TUFDNUNqcEQsSUFBSSxFQUFFa3ZELE1BQU0sQ0FBQzdGLGFBRCtCO01BRTVDaGxELElBQUksRUFBRTh5QyxJQUFJLENBQUNwZ0I7SUFGaUMsQ0FBaEQsRUFHRyxJQUhILEVBR1M7SUFBRTtJQUhYLEVBR3dCLENBQUMsTUFBRCxFQUFTLE1BQVQsQ0FIeEIsQ0FyRUQsQ0FINkIsQ0FBaEM7RUE2RUgsQ0EvRWdGLENBQXBELEVBK0V6QjtFQUFJO0VBL0VxQixDQURnRCxFQUFqRCxDQUFoQztBQWtGSDs7QUFDRHg1QixjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ2hHYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlFLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFNFMsT0FBTyxFQUFFO0FBQVgsQ0FBakI7QUFDQSxJQUFJM1MsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCOztBQUNBLElBQUlDLFVBQVUsR0FBRyxhQUFjLENBQUMsR0FBR3g1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7RUFBRSxTQUFPO0FBQVQsQ0FBckMsRUFBaUcsSUFBakcsRUFBdUcsQ0FBQztBQUFFO0FBQTFHLENBQS9COztBQUNBLElBQUlNLFdBQVcsR0FBRztFQUNkNXVDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCOztBQUlBLFNBQVNpdUMsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJeVIsdUJBQXVCLEdBQUcsQ0FBQyxHQUFHeHJELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixjQUE1QixDQUE5Qjs7RUFDQSxPQUFRLENBQUMsR0FBR2o2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcEIsVUFBckMsRUFBaUQsRUFDNUUsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnBELElBQUksQ0FBQ2pnQixXQUEzQixFQUF3QyxVQUFVZzRCLE1BQVYsRUFBa0IzckQsQ0FBbEIsRUFBcUI7SUFDMUksSUFBSW5GLEVBQUo7O0lBQ0EsT0FBUSxDQUFDLEdBQUdYLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7TUFDakV0dkMsR0FBRyxFQUFFL0UsQ0FENEQ7TUFFakUsU0FBTztJQUYwRCxDQUFyQyxFQUc3QixDQUNDLENBQUMsR0FBRzlGLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1Q0gsVUFBdkMsRUFBbUQsQ0FDL0MsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QyxJQUF2QyxFQUE2QyxDQUN6QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ0YsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHajVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsY0FBMUIsQ0FBM0IsQ0FBbEQsRUFBeUg7SUFBRTtJQUEzSCxDQURzQyxDQUExQyxDQURzQyxFQUl0QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqQyxTQUFPLENBQUMsR0FBR241QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQm5ELElBQUksQ0FBQzNtQixjQUEvQjtJQUQwQixDQUFyQyxFQUVHLENBQUMsR0FBRy95QixLQUFLLENBQUMwNkMsZUFBVixFQUEyQixDQUFDLzVDLEVBQUUsR0FBRzh3RCxNQUFNLENBQUMxeEQsS0FBYixNQUF3QixJQUF4QixJQUFnQ1ksRUFBRSxLQUFLLEtBQUssQ0FBNUMsR0FBZ0RBLEVBQWhELEdBQXFEKzRDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUFoRixDQUZILEVBRThHO0lBQUU7SUFGaEgsQ0FEc0MsRUFJdEMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqQyxTQUFPLENBQUMsR0FBR241QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLE1BQUQsRUFBU25ELElBQUksQ0FBQzNtQixjQUFkLENBQTFCO0lBRDBCLENBQXJDLEVBRUcsQ0FDQyxDQUFDLEdBQUcveUIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLG9CQUExQixDQUEzQixJQUE4RSxLQUF6SCxFQUFnSTtJQUFFO0lBQWxJLENBREQsRUFFQyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDbGdCLFdBQUwsQ0FBaUJpNEIsTUFBTSxDQUFDaG5ELFFBQXhCLElBQ2hFaXZDLElBQUksQ0FBQ2xnQixXQUFMLENBQWlCaTRCLE1BQU0sQ0FBQ2huRCxRQUF4QixDQURnRSxHQUVoRWl2QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFGcUMsQ0FBM0MsRUFFaUM7SUFBRTtJQUZuQyxDQUZELENBRkgsRUFPRztJQUFFO0lBUEwsQ0FKc0MsRUFZdEMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqQyxTQUFPLENBQUMsR0FBR241QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLE1BQUQsRUFBU25ELElBQUksQ0FBQzNtQixjQUFkLENBQTFCO0lBRDBCLENBQXJDLEVBRUcsQ0FDQyxDQUFDLEdBQUcveUIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFdBQTFCLENBQTNCLElBQXFFLElBQWhILEVBQXNIO0lBQUU7SUFBeEgsQ0FERCxFQUVDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxFQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCMlUsTUFBTSxDQUFDcEYsU0FBN0IsRUFBd0MsVUFBVXFGLEdBQVYsRUFBZS9ULENBQWYsRUFBa0I7TUFDdkksSUFBSWg5QyxFQUFKLEVBQVF5RyxFQUFSOztNQUNBLE9BQVEsQ0FBQyxHQUFHcEgsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztRQUNqRXR2QyxHQUFHLEVBQUU4eUMsQ0FENEQ7UUFFakUsU0FBTztNQUYwRCxDQUFyQyxFQUc3QixDQUFDLEdBQUczOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQy81QyxFQUFFLEdBQUcrd0QsR0FBRyxDQUFDOW9ELElBQVYsTUFBb0IsSUFBcEIsSUFBNEJqSSxFQUFFLEtBQUssS0FBSyxDQUF4QyxHQUE0Q0EsRUFBNUMsR0FBaUQrNEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQTVFLElBQXdHLElBQXhHLEdBQStHLENBQUMsR0FBR3J6QixLQUFLLENBQUMwNkMsZUFBVixFQUEyQixDQUFDdHpDLEVBQUUsR0FBR3NxRCxHQUFHLENBQUMzeEQsS0FBVixNQUFxQixJQUFyQixJQUE2QnFILEVBQUUsS0FBSyxLQUFLLENBQXpDLEdBQTZDQSxFQUE3QyxHQUFrRHN5QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBN0UsQ0FBL0csR0FBd04sSUFIM0wsRUFHaU07TUFBRTtNQUhuTSxDQUFoQztJQUlILENBTmdGLENBQXBELEVBTXpCO0lBQUk7SUFOcUIsQ0FEVSxFQUEzQyxDQUZELENBRkgsRUFhRztJQUFFO0lBYkwsQ0Fac0MsRUEwQnRDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7TUFDakMsU0FBTyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxNQUFELEVBQVNuRCxJQUFJLENBQUMzbUIsY0FBZCxDQUExQjtJQUQwQixDQUFyQyxFQUVHLENBQ0MsQ0FBQyxHQUFHL3lCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixTQUExQixDQUEzQixJQUFtRSxJQUE5RyxFQUFvSDtJQUFFO0lBQXRILENBREQsRUFFQyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsRUFDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQjJVLE1BQU0sQ0FBQ25GLE9BQVAsQ0FBZSxDQUFmLEVBQWtCaHdDLFNBQXhDLEVBQW1ELFVBQVVpd0MsR0FBVixFQUFlL0gsQ0FBZixFQUFrQjtNQUNsSixPQUFRLENBQUMsR0FBR3hrRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1FBQ2pFdHZDLEdBQUcsRUFBRTI1QyxDQUQ0RDtRQUVqRSxTQUFPLENBQUMsR0FBR3hrRCxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLHFCQUFELEVBQXdCO1VBQ2pELFVBQVUySCxDQUFDLEtBQUtpTixNQUFNLENBQUNuRixPQUFQLENBQWUsQ0FBZixFQUFrQmh3QyxTQUFsQixDQUE0Qm5XLE1BQTVCLEdBQXFDO1FBREosQ0FBeEIsQ0FBMUI7TUFGMEQsQ0FBckMsRUFLN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNELFVBQXJDLEVBQWlELE9BQU8sQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsVUFBMUIsQ0FBM0IsQ0FBUCxHQUEyRSxJQUEzRSxHQUFrRixDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQjZSLEdBQUcsQ0FBQ2prRCxRQUFKLEdBQ3hKb3hDLElBQUksQ0FBQ3BnQixNQUFMLENBQVloeEIsUUFBWixDQUFxQmlrRCxHQUFHLENBQUNqa0QsUUFBekIsQ0FEd0osR0FFeEpveEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBRjZILENBQWxGLEdBRWYsSUFGbEMsRUFFd0M7TUFBRTtNQUYxQyxDQURELEVBSUMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0MsVUFBckMsRUFBaUQsQ0FBQyxHQUFHcDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCNlIsR0FBRyxDQUFDandDLFNBQUosR0FBZ0Jpd0MsR0FBRyxDQUFDandDLFNBQXBCLEdBQWdDbzlCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUEzRCxDQUFqRCxFQUF1STtNQUFFO01BQXpJLENBSkQsQ0FMNkIsRUFVN0I7TUFBRTtNQVYyQixDQUFoQztJQVdILENBWmdGLENBQXBELEVBWXpCO0lBQUk7SUFacUIsQ0FEVSxFQUEzQyxDQUZELENBRkgsRUFtQkc7SUFBRTtJQW5CTCxDQTFCc0MsQ0FBMUMsQ0FKc0MsQ0FBMUMsQ0FEeUMsQ0FBN0MsQ0FEK0MsQ0FBbkQsQ0FERCxFQXlEQyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDRSxVQUF2QyxFQUFtRCxDQUMvQyxDQUFDLEdBQUdyNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDLElBQXZDLEVBQTZDLENBQ3pDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ0csVUFBcEMsRUFBZ0QsQ0FDNUMsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0ksVUFBckMsRUFBaUQsQ0FBQyxHQUFHdjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsZUFBMUIsQ0FBM0IsQ0FBakQsRUFBeUg7SUFBRTtJQUEzSCxDQUQ0QyxFQUU1QzB3QyxVQUY0QyxDQUFoRCxDQURzQyxDQUExQyxDQUR5QyxDQUE3QyxDQUQrQyxDQUFuRCxDQXpERCxFQW1FQyxDQUFDLEdBQUd4NUMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJrUix1QkFBdkIsRUFBZ0Q7TUFDNUNqcEQsSUFBSSxFQUFFa3ZELE1BQU0sQ0FBQzdGLGFBRCtCO01BRTVDaGxELElBQUksRUFBRTh5QyxJQUFJLENBQUNwZ0I7SUFGaUMsQ0FBaEQsRUFHRyxJQUhILEVBR1M7SUFBRTtJQUhYLEVBR3dCLENBQUMsTUFBRCxFQUFTLE1BQVQsQ0FIeEIsQ0FuRUQsRUF1RUVueUIsTUFBTSxDQUFDckIsQ0FBRCxDQUFOLElBQWE0ekMsSUFBSSxDQUFDamdCLFdBQUwsQ0FBaUJ0ekIsTUFBakIsR0FBMEIsQ0FBeEMsSUFDTyxDQUFDLEdBQUduRyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDVixXQUFyQyxDQUQvQixJQUVNLENBQUMsR0FBR3o1QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0F6RVAsQ0FINkIsQ0FBaEM7RUE4RUgsQ0FoRmdGLENBQXBELEVBZ0Z6QjtFQUFJO0VBaEZxQixDQURnRCxFQUFqRCxDQUFoQztBQW1GSDs7QUFDRHo2QyxjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ3ZHYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRyxDQUFDLE1BQUQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUcsQ0FBQyxNQUFELENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUxdUMsR0FBRyxFQUFFO0FBQVAsQ0FBakI7QUFDQSxJQUFJMnVDLFVBQVUsR0FBRztFQUFFM3VDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSTR1QyxXQUFXLEdBQUcsQ0FBQyxNQUFELENBQWxCO0FBQ0EsSUFBSXVCLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLE1BQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRXh3QyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUl5d0MsV0FBVyxHQUFHO0VBQUV6d0MsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJMHdDLFdBQVcsR0FBRyxDQUFDLE1BQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHejdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxJQUEzQyxFQUFpRCxDQUFDO0FBQUU7QUFBcEQsQ0FBaEM7O0FBQ0EsSUFBSXVDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLE1BQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsU0FBU2hELE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSUMsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHaDZDLEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixTQUE1QixDQUF6Qjs7RUFDQSxJQUFJb0ksZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHcmlELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixPQUE1QixDQUF2Qjs7RUFDQSxJQUFJaUcsY0FBYyxHQUFHLENBQUMsR0FBR2xnRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsS0FBNUIsQ0FBckI7O0VBQ0EsSUFBSTBKLG9CQUFvQixHQUFHLENBQUMsR0FBRzNqRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsV0FBNUIsQ0FBM0I7O0VBQ0EsSUFBSTBYLHdCQUF3QixHQUFHLENBQUMsR0FBRzN4RCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsZUFBNUIsQ0FBL0I7O0VBQ0EsSUFBSTJYLG9CQUFvQixHQUFHLENBQUMsR0FBRzV4RCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsV0FBNUIsQ0FBM0I7O0VBQ0EsSUFBSWlKLHdCQUF3QixHQUFHLENBQUMsR0FBR2xqRCxLQUFLLENBQUNpakQsZ0JBQVYsRUFBNEIsZUFBNUIsQ0FBL0I7O0VBQ0EsT0FBUSxDQUFDLEdBQUdqakQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3BCLFVBQXJDLEVBQWlELENBQzVFVyxJQUFJLENBQUM3eEMsV0FBTixJQUNPLENBQUMsR0FBRzdILEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFDNUR0dkMsR0FBRyxFQUFFLENBRHVEO0lBRTVELFNBQU8sbUVBRnFEO0lBRzVEd3ZDLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQ25CLFlBQVk7TUFDUkQsSUFBSSxDQUFDN3hDLFdBQUwsR0FBbUIsQ0FBQzZ4QyxJQUFJLENBQUM3eEMsV0FBekI7SUFDSCxDQUhJO0VBSG1ELENBQXJDLENBRC9CLElBU00sQ0FBQyxHQUFHN0gsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBVnVFLEVBVzVFYixJQUFJLENBQUM3eEMsV0FBTixJQUNPLENBQUMsR0FBRzdILEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFDNUR0dkMsR0FBRyxFQUFFLENBRHVEO0lBRTVELFNBQU8sOEJBRnFEO0lBRzVEd3ZDLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQ25CLFlBQVk7TUFDUkQsSUFBSSxDQUFDN3hDLFdBQUwsR0FBbUIsQ0FBQzZ4QyxJQUFJLENBQUM3eEMsV0FBekI7SUFDSCxDQUhJO0VBSG1ELENBQXJDLEVBT3hCLENBQ0MsQ0FBQyxHQUFHN0gsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QzVwQyxJQUFJLEVBQUUsU0FEaUM7SUFFdkMsU0FBTztFQUZnQyxDQUEzQyxDQURELENBUHdCLENBRC9CLElBY00sQ0FBQyxHQUFHcFEsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBekJ1RSxFQTBCN0UsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCcUosb0JBQXZCLEVBQTZDO0lBQ3pDLG1CQUFtQmpLLElBQUksQ0FBQy9zQyxjQURpQjtJQUV6Q3VMLEtBQUssRUFBRXdoQyxJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixlQUExQixDQUZrQztJQUd6QyxhQUFhLEdBQUduSCxNQUFILENBQVUrM0MsSUFBSSxDQUFDOW5CLFlBQWYsRUFBNkIsU0FBN0I7RUFINEIsQ0FBN0MsRUFJRztJQUNDLFdBQVMsQ0FBQyxHQUFHNXhCLEtBQUssQ0FBQzQ2QyxPQUFWLEVBQW1CLFlBQVk7TUFBRSxPQUFPLENBQzdDLENBQUMsR0FBRzU2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQzVDVSxJQUFJLENBQUM5aUMsU0FBTCxDQUFlMUksVUFBaEIsSUFDTyxDQUFDLEdBQUdsTyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUIwSCxnQkFBdkIsRUFBeUM7UUFDaEV4M0MsR0FBRyxFQUFFLENBRDJEO1FBRWhFckIsT0FBTyxFQUFFa3dDLElBQUksQ0FBQzlpQyxTQUFMLENBQWVwTixPQUZ3QztRQUdoRTVDLElBQUksRUFBRTh5QyxJQUFJLENBQUM5aUMsU0FBTCxDQUFlaFEsSUFIMkM7UUFJaEUsU0FBTztNQUp5RCxDQUF6QyxFQUt4QixJQUx3QixFQUtsQjtNQUFFO01BTGdCLEVBS0gsQ0FBQyxTQUFELEVBQVksTUFBWixDQUxHLENBRC9CLElBT00sQ0FBQyxHQUFHNUcsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBUnVDLEVBUzdDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7UUFDL0J6MkMsSUFBSSxFQUFFLEdBQUdmLE1BQUgsQ0FBVSszQyxJQUFJLENBQUM5bkIsWUFBZixFQUE2QixnQkFBN0I7TUFEeUIsQ0FBbkMsRUFFRyxDQUNDLENBQUMsR0FBRzV4QixLQUFLLENBQUNzNkMsV0FBVixFQUF1QjRGLGNBQXZCLEVBQXVDO1FBQ25DaHdDLElBQUksRUFBRXdwQyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK2EsTUFBZixDQUFzQixjQUF0QixFQUFzQyxlQUF0QyxDQUQ2QjtRQUVuQzdmLElBQUksRUFBRSxHQUFHYixNQUFILENBQVUrM0MsSUFBSSxDQUFDMW5CLFVBQWYsRUFBMkIsT0FBM0IsQ0FGNkI7UUFHbkM1aEIsSUFBSSxFQUFFO01BSDZCLENBQXZDLEVBSUcsSUFKSCxFQUlTO01BQUU7TUFKWCxFQUl3QixDQUFDLE1BQUQsRUFBUyxNQUFULENBSnhCLENBREQsQ0FGSCxFQVFHO01BQUU7TUFSTCxFQVFrQjZvQyxVQVJsQixDQVQ2QyxDQUFqRCxDQUQ2QyxDQUFQO0lBb0J0QyxDQXBCSyxDQURWO0lBc0JDaDBDLENBQUMsRUFBRTtJQUFFOztFQXRCTixDQUpILEVBMkJHO0VBQUU7RUEzQkwsRUEyQmtCLENBQUMsaUJBQUQsRUFBb0IsT0FBcEIsRUFBNkIsV0FBN0IsQ0EzQmxCLENBMUI2RSxFQXNEN0UsQ0FBQyxHQUFHakYsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRCxVQUFyQyxFQUFpRCxxQkFBcUIsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDNzBDLE1BQUwsQ0FBWWd0RCxXQUF2QyxDQUF0RSxFQUEySDtFQUFFO0VBQTdILENBdEQ2RSxFQXVEN0UsQ0FBQyxHQUFHN3hELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUNqQyxTQUFPLG1CQUQwQjtJQUVqQ2tCLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQ25CLFlBQVk7TUFDUkQsSUFBSSxDQUFDN3hDLFdBQUwsR0FBbUIsQ0FBQzZ4QyxJQUFJLENBQUM3eEMsV0FBekI7SUFDSCxDQUhJO0VBRndCLENBQXJDLEVBTUcsQ0FDQyxDQUFDLEdBQUc3SCxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDNXBDLElBQUksRUFBRSxTQURpQztJQUV2QyxTQUFPO0VBRmdDLENBQTNDLENBREQsQ0FOSCxDQXZENkUsRUFtRTdFLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QztJQUNuQyxTQUFPLENBQUMsR0FBR241QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUM3Qm5ELElBQUksQ0FBQzd4QyxXQUFMLEdBQ00sS0FBS2xHLE1BQUwsQ0FBWSszQyxJQUFJLENBQUM3d0IsWUFBTCxHQUNSLG1DQURRLEdBRVIscUJBRkosRUFFMkIsb0JBRjNCLENBRE4sR0FJTSxHQUFHbG5CLE1BQUgsQ0FBVSszQyxJQUFJLENBQUM3d0IsWUFBTCxHQUNOLG1DQURNLEdBRU4scUJBRkosRUFFMkIsc0JBRjNCLENBTHVCLEVBUTdCLG1HQVI2QixDQUExQjtFQUQ0QixDQUF2QyxFQVdHLENBQ0MsQ0FBQyxHQUFHN29CLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0MsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHcDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ0UsVUFBcEMsRUFBZ0QsRUFDM0MsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnBELElBQUksQ0FBQzNmLFdBQTNCLEVBQXdDLFVBQVUyeEIsS0FBVixFQUFpQnh3QixDQUFqQixFQUFvQnl3QixFQUFwQixFQUF3QjtJQUM3SSxPQUFRLENBQUMsR0FBRzNyRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DO01BQUV0dkMsR0FBRyxFQUFFOGdEO0lBQVAsQ0FBcEMsRUFBaUQsQ0FDN0UsQ0FBQyxHQUFHM3JELEtBQUssQ0FBQ205QyxjQUFWLEdBQTJCLENBQUMsR0FBR245QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO01BQ2xGejNDLElBQUksRUFBRSxJQUFJZixNQUFKLENBQVd3TyxNQUFNLENBQUMrcUIsQ0FBRCxDQUFqQixDQUQ0RTtNQUVsRixTQUFPLENBQUMsR0FBR2w3QixLQUFLLENBQUM2OEMsY0FBVixFQUEwQm5ELElBQUksQ0FBQ25vQixXQUEvQjtJQUYyRSxDQUFuQyxFQUdoRCxDQUNDLENBQUMsR0FBR3Z4QixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsOERBQTlCLENBREQsRUFFQyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCeGYsQ0FBM0IsQ0FBM0IsRUFBMEQ7SUFBRTtJQUE1RCxDQUZELENBSGdELEVBTWhEO0lBQUc7SUFONkMsRUFNekJvZSxVQU55QixDQUFuRCxHQU13QyxDQUNwQyxDQUFDNEosd0JBQUQsQ0FEb0MsQ0FOeEMsQ0FENkUsQ0FBakQsQ0FBaEM7RUFXSCxDQVpnRixDQUFwRCxFQVl6QjtFQUFJO0VBWnFCLENBRGUsR0FjM0N4SixJQUFJLENBQUM1ZixhQUFOLElBQ08sQ0FBQyxHQUFHOTVCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NaLFVBQXBDLEVBQWdELENBQ3ZFLENBQUMsR0FBR3Y1QyxLQUFLLENBQUNtOUMsY0FBVixHQUEyQixDQUFDLEdBQUduOUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztJQUNsRnozQyxJQUFJLEVBQUUsWUFENEU7SUFFbEYsU0FBTyxDQUFDLEdBQUcxQyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQm5ELElBQUksQ0FBQ25vQixXQUEvQjtFQUYyRSxDQUFuQyxFQUdoRCxDQUNDLENBQUMsR0FBR3Z4QixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsOERBQTlCLENBREQsRUFFQyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZThnRCxZQUFmLENBQTRCLFdBQTVCLENBQTNCLENBQTNCLEVBQWlHO0VBQUU7RUFBbkcsQ0FGRCxDQUhnRCxFQU1oRDtFQUFFO0VBTjhDLENBQW5ELEdBTW9CLENBQ2hCLENBQUNsRix3QkFBRCxDQURnQixDQU5wQixDQUR1RSxDQUFoRCxDQUQvQixJQVlNLENBQUMsR0FBR2xqRCxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0ExQnNDLEVBMkIzQyxDQUFDYixJQUFJLENBQUM1ZixhQUFQLElBQ08sQ0FBQyxHQUFHOTVCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NYLFVBQXBDLEVBQWdELENBQ3ZFLENBQUMsR0FBR3g1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7SUFDL0J6MkMsSUFBSSxFQUFFLFdBQVdmLE1BQVgsQ0FBa0IrM0MsSUFBSSxDQUFDNzBDLE1BQUwsQ0FBWTJELEVBQTlCLEVBQWtDLG1CQUFsQyxDQUR5QjtJQUUvQixTQUFPLENBQUMsR0FBR3hJLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUNuRCxJQUFJLENBQUNub0IsV0FBTixFQUFtQixrQ0FBbkIsQ0FBMUI7RUFGd0IsQ0FBbkMsRUFHRyxDQUNDLENBQUMsR0FBR3Z4QixLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDNXBDLElBQUksRUFBRSxLQURpQztJQUV2QyxTQUFPO0VBRmdDLENBQTNDLENBREQsRUFLQyxDQUFDLEdBQUdwUSxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixNQUFNLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrYSxNQUFmLENBQXNCLGFBQXRCLEVBQXFDLDBCQUFyQyxDQUEzQixDQUFqQyxFQUErSDtFQUFFO0VBQWpJLENBTEQsQ0FISCxFQVNHO0VBQUc7RUFUTixFQVMwQm8zQixXQVQxQixDQUR1RSxDQUFoRCxDQUQvQixJQWFNLENBQUMsR0FBR3o1QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0F4Q3NDLENBQWhELENBRDZDLENBQWpELENBREQsQ0FYSCxFQXdERztFQUFFO0VBeERMLENBbkU2RSxFQTRIN0UsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzZCLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR2g3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUM4QixXQUF2QyxFQUFvRCxDQUNoRCxDQUFDLEdBQUdqN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDK0IsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHbDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ2dDLFdBQXBDLEVBQWlELEVBQzVDLENBQUMsR0FBR243QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JwRCxJQUFJLENBQUMzZixXQUEzQixFQUF3QyxVQUFVMnhCLEtBQVYsRUFBaUJ4d0IsQ0FBakIsRUFBb0J5d0IsRUFBcEIsRUFBd0I7SUFDN0ksSUFBSWhyRCxFQUFKOztJQUNBLE9BQVEsQ0FBQyxHQUFHWCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DO01BQUV0dkMsR0FBRyxFQUFFOGdEO0lBQVAsQ0FBcEMsRUFBaUQsQ0FDN0UsQ0FBQyxHQUFHM3JELEtBQUssQ0FBQ205QyxjQUFWLEdBQTJCLENBQUMsR0FBR245QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO01BQ2xGejNDLElBQUksRUFBRSxJQUFJZixNQUFKLENBQVd3TyxNQUFNLENBQUMrcUIsQ0FBRCxDQUFqQixDQUQ0RTtNQUVsRixTQUFPLENBQUMsR0FBR2w3QixLQUFLLENBQUM2OEMsY0FBVixFQUEwQm5ELElBQUksQ0FBQ25vQixXQUEvQjtJQUYyRSxDQUFuQyxFQUdoRCxDQUNDLENBQUMsR0FBR3Z4QixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsOERBQTlCLENBREQsRUFFQyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCLENBQUMvNUMsRUFBRSxHQUFHKzRDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWU4Z0QsWUFBZixDQUE0Qmx0QixDQUE1QixDQUFOLE1BQTBDLElBQTFDLElBQWtEdjZCLEVBQUUsS0FBSyxLQUFLLENBQTlELEdBQWtFQSxFQUFsRSxHQUF1RXU2QixDQUFsRyxDQUEzQixFQUFpSTtJQUFFO0lBQW5JLENBRkQsQ0FIZ0QsRUFNaEQ7SUFBRztJQU42QyxFQU16QmtnQixXQU55QixDQUFuRCxHQU15QyxDQUNyQyxDQUFDOEgsd0JBQUQsQ0FEcUMsQ0FOekMsQ0FENkUsQ0FBakQsQ0FBaEM7RUFXSCxDQWJnRixDQUFwRCxFQWF6QjtFQUFJO0VBYnFCLENBRGdCLEdBZTVDeEosSUFBSSxDQUFDNWYsYUFBTixJQUNPLENBQUMsR0FBRzk1QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9Da0IsV0FBcEMsRUFBaUQsQ0FDeEUsQ0FBQyxHQUFHcjdDLEtBQUssQ0FBQ205QyxjQUFWLEdBQTJCLENBQUMsR0FBR245QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0lBQ2xGejNDLElBQUksRUFBRSxZQUQ0RTtJQUVsRixTQUFPLENBQUMsR0FBRzFDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCbkQsSUFBSSxDQUFDbm9CLFdBQS9CO0VBRjJFLENBQW5DLEVBR2hELENBQ0MsQ0FBQyxHQUFHdnhCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4Qiw4REFBOUIsQ0FERCxFQUVDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixrQkFBMUIsQ0FBM0IsQ0FBM0IsRUFBc0c7RUFBRTtFQUF4RyxDQUZELENBSGdELEVBTWhEO0VBQUU7RUFOOEMsQ0FBbkQsR0FNb0IsQ0FDaEIsQ0FBQ282Qyx3QkFBRCxDQURnQixDQU5wQixDQUR3RSxDQUFqRCxDQUQvQixJQVlNLENBQUMsR0FBR2xqRCxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0EzQnVDLEVBNEI1QyxDQUFDYixJQUFJLENBQUM1ZixhQUFQLElBQ08sQ0FBQyxHQUFHOTVCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NtQixXQUFwQyxFQUFpRCxDQUN4RSxDQUFDLEdBQUd0N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0lBQy9CejJDLElBQUksRUFBRSxXQUFXZixNQUFYLENBQWtCKzNDLElBQUksQ0FBQzcwQyxNQUFMLENBQVkyRCxFQUE5QixFQUFrQyxtQkFBbEMsQ0FEeUI7SUFFL0IsU0FBTyxDQUFDLEdBQUd4SSxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDbkQsSUFBSSxDQUFDbm9CLFdBQU4sRUFBbUIsa0NBQW5CLENBQTFCO0VBRndCLENBQW5DLEVBR0csQ0FDQyxDQUFDLEdBQUd2eEIsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QzVwQyxJQUFJLEVBQUUsS0FEaUM7SUFFdkMsU0FBTztFQUZnQyxDQUEzQyxDQURELEVBS0MsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsTUFBTSxDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixzQkFBMUIsQ0FBM0IsQ0FBakMsRUFBZ0g7RUFBRTtFQUFsSCxDQUxELENBSEgsRUFTRztFQUFHO0VBVE4sRUFTMEJ5eUMsV0FUMUIsQ0FEd0UsQ0FBakQsQ0FEL0IsSUFhTSxDQUFDLEdBQUd2N0MsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBekN1QyxDQUFqRCxDQUQ4QyxDQUFsRCxDQURnRCxDQUFwRCxDQUQ4QyxFQWdEOUMsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3FDLFdBQXJDLEVBQWtELENBQzlDQyxXQUQ4QyxFQUU5QyxDQUFDLEdBQUd6N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDdUMsV0FBckMsRUFBa0QsRUFDN0MsQ0FBQyxHQUFHMTdDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnBELElBQUksQ0FBQzcwQyxNQUFMLENBQVlBLE1BQWxDLEVBQTBDLFVBQVV1RyxJQUFWLEVBQWdCUCxHQUFoQixFQUFxQjtJQUM1SSxJQUFJbEssRUFBSixFQUFReUcsRUFBUjs7SUFDQSxPQUFRLENBQUMsR0FBR3BILEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QmdYLHdCQUF2QixFQUFpRDtNQUM3RTltRCxHQUFHLEVBQUVBLEdBRHdFO01BRTdFdEksSUFBSSxFQUFFNkksSUFGdUU7TUFHN0UsZ0JBQWdCUCxHQUFHLENBQUNnVCxRQUFKLEVBSDZEO01BSTdFLFlBQVksYUFBYWxjLE1BQWIsQ0FBb0IrM0MsSUFBSSxDQUFDNzBDLE1BQUwsQ0FBWW1LLFdBQWhDLEVBQTZDLFVBQTdDLEVBQXlEck4sTUFBekQsQ0FBZ0UrM0MsSUFBSSxDQUFDNzBDLE1BQUwsQ0FBWTJELEVBQTVFLENBSmlFO01BSzdFNlAsS0FBSyxFQUFFeE4sR0FBRyxDQUFDZ1QsUUFBSixPQUFtQixPQUFuQixJQUNIaFQsR0FBRyxDQUFDZ1QsUUFBSixPQUFtQixhQURoQixJQUVIaFQsR0FBRyxDQUFDZ1QsUUFBSixPQUFtQixlQUZoQixJQUdIaFQsR0FBRyxDQUFDZ1QsUUFBSixPQUFtQixXQUhoQixHQUlELE1BSkMsR0FLRCxFQVZ1RTtNQVc3RWtLLEtBQUssRUFBRTJ4QixJQUFJLENBQUMzeEIsS0FYaUU7TUFZN0UsY0FBYzJ4QixJQUFJLENBQUNwb0IsT0FBTCxDQUFhLFlBQWIsRUFBMkJ6bUIsR0FBM0IsSUFDUixDQUFDbEssRUFBRSxHQUFHKzRDLElBQUksQ0FBQ3BvQixPQUFMLENBQWEsWUFBYixFQUEyQnptQixHQUEzQixFQUFnQyxZQUFoQyxDQUFOLE1BQXlELElBQXpELElBQWlFbEssRUFBRSxLQUFLLEtBQUssQ0FBN0UsR0FBaUZBLEVBQWpGLEdBQXNGLEVBRDlFLEdBRVIsQ0FBQ3lHLEVBQUUsR0FBR3N5QyxJQUFJLENBQUNwb0IsT0FBTCxDQUFhLGNBQWIsRUFBNkJ6bUIsR0FBN0IsRUFBa0MsWUFBbEMsQ0FBTixNQUEyRCxJQUEzRCxJQUFtRXpELEVBQUUsS0FBSyxLQUFLLENBQS9FLEdBQW1GQSxFQUFuRixHQUF3RjtJQWRqQixDQUFqRCxFQWU3QixJQWY2QixFQWV2QjtJQUFFO0lBZnFCLEVBZVIsQ0FBQyxNQUFELEVBQVMsY0FBVCxFQUF5QixVQUF6QixFQUFxQyxPQUFyQyxFQUE4QyxPQUE5QyxFQUF1RCxZQUF2RCxDQWZRLENBQWhDO0VBZ0JILENBbEJnRixDQUFwRCxFQWtCekI7RUFBSTtFQWxCcUIsQ0FEaUIsR0FvQjlDLENBQUMsR0FBR3BILEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixhQUE5QixDQXBCOEMsRUFxQjdDYixJQUFJLENBQUM1ZixhQUFOLElBQ08sQ0FBQyxHQUFHOTVCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QmlYLG9CQUF2QixFQUE2QztJQUNwRS9tRCxHQUFHLEVBQUUsQ0FEK0Q7SUFFcEVoRyxNQUFNLEVBQUU2MEMsSUFBSSxDQUFDNzBDLE1BRnVEO0lBR3BFK0IsSUFBSSxFQUFFOHlDLElBQUksQ0FBQzN4QixLQUh5RDtJQUlwRSxZQUFZO0VBSndELENBQTdDLEVBS3hCLElBTHdCLEVBS2xCO0VBQUU7RUFMZ0IsRUFLSCxDQUFDLFFBQUQsRUFBVyxNQUFYLENBTEcsQ0FEL0IsSUFPTSxDQUFDLEdBQUcvbkIsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBNUJ3QyxDQUFsRCxDQUY4QyxFQWdDOUMsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixvQkFBOUIsQ0FoQzhDLEVBaUM3QyxDQUFDYixJQUFJLENBQUM1ZixhQUFQLElBQ08sQ0FBQyxHQUFHOTVCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7SUFDMUR0dkMsR0FBRyxFQUFFLENBRHFEO0lBRTFEbkksSUFBSSxFQUFFLFdBQVdmLE1BQVgsQ0FBa0IrM0MsSUFBSSxDQUFDNzBDLE1BQUwsQ0FBWTJELEVBQTlCLEVBQWtDLG1CQUFsQyxDQUZvRDtJQUcxRCxTQUFPO0VBSG1ELENBQW5DLEVBSXhCLENBQ0MsQ0FBQyxHQUFHeEksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDeUMsV0FBckMsRUFBa0QsQ0FBQyxHQUFHNTdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZSthLE1BQWYsQ0FBc0IseUJBQXRCLENBQTNCLENBQWxELEVBQWdJO0VBQUU7RUFBbEksQ0FERCxFQUVDLENBQUMsR0FBR3JpQixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMwQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUc3N0MsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QzVwQyxJQUFJLEVBQUUsS0FEaUM7SUFFdkMsU0FBTztFQUZnQyxDQUEzQyxDQUQ4QyxFQUs5QyxDQUFDLEdBQUdwUSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MyQyxXQUF0QyxFQUFtRCxDQUFDLEdBQUc5N0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK2EsTUFBZixDQUFzQixhQUF0QixFQUFxQyxzQkFBckMsQ0FBM0IsQ0FBbkQsRUFBNkk7RUFBRTtFQUEvSSxDQUw4QyxDQUFsRCxDQUZELENBSndCLEVBYXhCO0VBQUU7RUFic0IsRUFhVHM1QixXQWJTLENBRC9CLElBZU0sQ0FBQyxHQUFHMzdDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWhEd0MsQ0FBbEQsQ0FoRDhDLENBQWxELENBNUg2RSxDQUFqRCxDQUFoQztBQWdPSDs7QUFDRHo2QyxjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ3RRYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRyxDQUFDLElBQUQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7O0FBQ0EsSUFBSUMsVUFBVSxHQUFHLGFBQWMsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztFQUFFLFNBQU87QUFBVCxDQUFyQyxFQUFvRixJQUFwRixFQUEwRixDQUFDO0FBQUU7QUFBN0YsQ0FBL0I7O0FBQ0EsSUFBSUksVUFBVSxHQUFHO0VBQ2IxdUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7O0FBSUEsU0FBU2l1QyxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELElBQUl3RyxvQkFBb0IsR0FBRyxDQUFDLEdBQUd2Z0QsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFdBQTVCLENBQTNCOztFQUNBLElBQUk2WCwyQkFBMkIsR0FBRyxDQUFDLEdBQUc5eEQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLGtCQUE1QixDQUFsQzs7RUFDQSxJQUFJdVIsdUJBQXVCLEdBQUcsQ0FBQyxHQUFHeHJELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixjQUE1QixDQUE5Qjs7RUFDQSxJQUFJb1Isb0JBQW9CLEdBQUcsQ0FBQyxHQUFHcnJELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixXQUE1QixDQUEzQjs7RUFDQSxJQUFJOFgscUJBQXFCLEdBQUcsQ0FBQyxHQUFHL3hELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixZQUE1QixDQUE1Qjs7RUFDQSxPQUFRLENBQUMsR0FBR2o2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQ2pFM3hDLEVBQUUsRUFBRWt4QyxJQUFJLENBQUN4ZixXQUR3RDtJQUVqRSxTQUFPLENBQUMsR0FBR2w2QixLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLGtEQUFELEVBQXFEO01BQzlFLGNBQWNuRCxJQUFJLENBQUNyaEMsS0FBTCxLQUFlLE1BRGlEO01BRTlFLGNBQWNxaEMsSUFBSSxDQUFDcmhDLEtBQUwsS0FBZTtJQUZpRCxDQUFyRCxDQUExQjtFQUYwRCxDQUFyQyxFQU03QixDQUNDLENBQUMsR0FBR3JZLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0gsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0YsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHajVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0QsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0MsVUFBckMsRUFBaUQsQ0FBQyxHQUFHcDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZThnRCxZQUFmLENBQTRCMU8sSUFBSSxDQUFDeGYsV0FBakMsQ0FBM0IsQ0FBakQsRUFBNEg7RUFBRTtFQUE5SCxDQUQ2QyxDQUFqRCxDQUQ2QyxFQUk3QyxDQUFDLEdBQUdsNkIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRSxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdyNUMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJpRyxvQkFBdkIsRUFBNkM7SUFDekMsY0FBYzdHLElBQUksQ0FBQ3RoQyxTQURzQjtJQUV6QyxTQUFPO0VBRmtDLENBQTdDLEVBR0csSUFISCxFQUdTO0VBQUU7RUFIWCxFQUd3QixDQUFDLFlBQUQsQ0FIeEIsQ0FENkMsQ0FBakQsQ0FKNkMsQ0FBakQsQ0FENkMsRUFZN0NraEMsVUFaNkMsRUFhN0MsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN0Q08sSUFBSSxDQUFDeGYsV0FBTCxLQUFxQixPQUFyQixJQUFnQ3dmLElBQUksQ0FBQ3hmLFdBQUwsS0FBcUIsYUFBdEQsSUFDTyxDQUFDLEdBQUdsNkIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCbVgsMkJBQXZCLEVBQW9EO0lBQzNFam5ELEdBQUcsRUFBRSxDQURzRTtJQUUzRXRJLElBQUksRUFBRW0zQyxJQUFJLENBQUN0ZixXQUZnRTtJQUczRXh6QixJQUFJLEVBQUU4eUMsSUFBSSxDQUFDM3hCLEtBQUwsQ0FBV3pmO0VBSDBELENBQXBELEVBSXhCLElBSndCLEVBSWxCO0VBQUU7RUFKZ0IsRUFJSCxDQUFDLE1BQUQsRUFBUyxNQUFULENBSkcsQ0FEL0IsSUFNT294QyxJQUFJLENBQUN4ZixXQUFMLEtBQXFCLG9CQUF0QixJQUNLLENBQUMsR0FBR2w2QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDWixVQUF0QyxFQUFrRCxDQUFDLEdBQUd2NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ4TixRQUFRLENBQUN3TSxJQUFJLENBQUNuM0MsSUFBTixDQUFSLEdBQ2xHbTNDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLE1BQTFCLENBRGtHLEdBRWxHNHdDLElBQUksQ0FBQ24zQyxJQUFMLEdBQ0ltM0MsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsT0FBMUIsQ0FESixHQUVJNHdDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUptRSxDQUFsRCxFQUlVO0VBQUU7RUFKWixDQUQ3QixJQU1LcW1CLElBQUksQ0FBQ3hmLFdBQUwsS0FBcUIsZUFBdEIsSUFDSyxDQUFDLEdBQUdsNkIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCNlEsdUJBQXZCLEVBQWdEO0lBQ3ZFM2dELEdBQUcsRUFBRSxDQURrRTtJQUV2RXRJLElBQUksRUFBRW0zQyxJQUFJLENBQUN0ZixXQUY0RDtJQUd2RXh6QixJQUFJLEVBQUU4eUMsSUFBSSxDQUFDM3hCO0VBSDRELENBQWhELEVBSXhCLElBSndCLEVBSWxCO0VBQUU7RUFKZ0IsRUFJSCxDQUFDLE1BQUQsRUFBUyxNQUFULENBSkcsQ0FEN0IsSUFNSzJ4QixJQUFJLENBQUN4ZixXQUFMLEtBQXFCLFdBQXRCLElBQ0ssQ0FBQyxHQUFHbDZCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QjBRLG9CQUF2QixFQUE2QztJQUNwRXhnRCxHQUFHLEVBQUUsQ0FEK0Q7SUFFcEV0SSxJQUFJLEVBQUVtM0MsSUFBSSxDQUFDdGYsV0FGeUQ7SUFHcEV4ekIsSUFBSSxFQUFFOHlDLElBQUksQ0FBQ3BmO0VBSHlELENBQTdDLEVBSXhCLElBSndCLEVBSWxCO0VBQUU7RUFKZ0IsRUFJSCxDQUFDLE1BQUQsRUFBUyxNQUFULENBSkcsQ0FEN0IsSUFNS29mLElBQUksQ0FBQ3hmLFdBQUwsS0FBcUIsTUFBdEIsSUFDSyxDQUFDLEdBQUdsNkIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCb1gscUJBQXZCLEVBQThDO0lBQ3JFbG5ELEdBQUcsRUFBRSxDQURnRTtJQUVyRXRJLElBQUksRUFBRTRFLE1BQU0sQ0FBQ3V5QyxJQUFJLENBQUN0ZixXQUFOLENBRnlEO0lBR3JFeHpCLElBQUksRUFBRTh5QyxJQUFJLENBQUNyZjtFQUgwRCxDQUE5QyxFQUl4QixJQUp3QixFQUlsQjtFQUFFO0VBSmdCLEVBSUgsQ0FBQyxNQUFELEVBQVMsTUFBVCxDQUpHLENBRDdCLEtBTUssQ0FBQyxHQUFHcjZCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO0lBQUV2dkMsR0FBRyxFQUFFO0VBQVAsQ0FBOUMsRUFBMEQsQ0FDakYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDbjNDLElBQWhDLENBQTNCLEVBQWtFO0VBQUU7RUFBcEUsQ0FEaUYsQ0FBMUQsRUFFeEI7RUFBRztFQUZxQixDQU43QixDQXpCcUIsQ0FBM0MsQ0FiNkMsQ0FBakQsQ0FERCxDQU42QixFQXdEN0I7RUFBRztFQXhEMEIsRUF3RE53MkMsVUF4RE0sQ0FBaEM7QUF5REg7O0FBQ0RqNUMsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUMvRWE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUcsQ0FBQyxNQUFELENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQ2I3d0MsRUFBRSxFQUFFLGtCQURTO0VBRWJ5akQsS0FBSyxFQUFFO0FBRk0sQ0FBakI7O0FBSUEsSUFBSTNTLFVBQVUsR0FBRyxhQUFjLENBQUMsR0FBR3Q1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7RUFDL0Qzd0MsRUFBRSxFQUFFLGtCQUQyRDtFQUUvRHlqRCxLQUFLLEVBQUU7QUFGd0QsQ0FBcEMsRUFHNUIsQ0FDQyxhQUFjLENBQUMsR0FBR2pzRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsZUFBNUMsQ0FEZixDQUg0QixFQUs1QixDQUFDO0FBQUU7QUFMeUIsQ0FBL0I7O0FBTUEsSUFBSUksVUFBVSxHQUFHO0VBQ2Ivd0MsRUFBRSxFQUFFLG1CQURTO0VBRWJ5akQsS0FBSyxFQUFFLEtBRk07RUFHYjV6QyxLQUFLLEVBQUU7QUFITSxDQUFqQjtBQUtBLElBQUltaEMsVUFBVSxHQUFHO0VBQ2JoeEMsRUFBRSxFQUFFLGtCQURTO0VBRWJ5akQsS0FBSyxFQUFFLEtBRk07RUFHYjV6QyxLQUFLLEVBQUU7QUFITSxDQUFqQjtBQUtBLElBQUlvaEMsV0FBVyxHQUFHO0VBQ2RqeEMsRUFBRSxFQUFFLFFBRFU7RUFFZHlqRCxLQUFLLEVBQUUsS0FGTztFQUdkNXpDLEtBQUssRUFBRTtBQUhPLENBQWxCO0FBS0EsSUFBSTJpQyxXQUFXLEdBQUc7RUFBRW53QyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUlvd0MsV0FBVyxHQUFHLENBQUMsU0FBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLE1BQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxTQUFELENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsU0FBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLE1BQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRTd3QyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUk4d0MsV0FBVyxHQUFHO0VBQ2R1USxPQUFPLEVBQUUsR0FESztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUl0USxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsU0FBUzlDLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSXNJLGdCQUFnQixHQUFHLENBQUMsR0FBR3JpRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsT0FBNUIsQ0FBdkI7O0VBQ0EsSUFBSWlHLGNBQWMsR0FBRyxDQUFDLEdBQUdsZ0QsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLEtBQTVCLENBQXJCOztFQUNBLElBQUkwSixvQkFBb0IsR0FBRyxDQUFDLEdBQUczakQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFdBQTVCLENBQTNCOztFQUNBLElBQUlELGtCQUFrQixHQUFHLENBQUMsR0FBR2g2QyxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsU0FBNUIsQ0FBekI7O0VBQ0EsSUFBSWtTLHVCQUF1QixHQUFHLENBQUMsR0FBR25zRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsY0FBNUIsQ0FBOUI7O0VBQ0EsSUFBSThKLHFCQUFxQixHQUFHLENBQUMsR0FBRy9qRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsWUFBNUIsQ0FBNUI7O0VBQ0EsT0FBUSxDQUFDLEdBQUdqNkMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3BCLFVBQXJDLEVBQWlELENBQzdFLENBQUMsR0FBRy80QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QnFKLG9CQUF2QixFQUE2QztJQUN6QyxtQkFBbUJqSyxJQUFJLENBQUMvc0MsY0FEaUI7SUFFekN1TCxLQUFLLEVBQUV3aEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsYUFBMUIsQ0FGa0M7SUFHekMsYUFBYTR3QyxJQUFJLENBQUM5bkI7RUFIdUIsQ0FBN0MsRUFJRztJQUNDLFdBQVMsQ0FBQyxHQUFHNXhCLEtBQUssQ0FBQzQ2QyxPQUFWLEVBQW1CLFlBQVk7TUFBRSxPQUFPLENBQzdDLENBQUMsR0FBRzU2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQzVDVSxJQUFJLENBQUM5aUMsU0FBTCxDQUFlMUksVUFBaEIsSUFDTyxDQUFDLEdBQUdsTyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUIwSCxnQkFBdkIsRUFBeUM7UUFDaEV4M0MsR0FBRyxFQUFFLENBRDJEO1FBRWhFckIsT0FBTyxFQUFFa3dDLElBQUksQ0FBQzlpQyxTQUFMLENBQWVwTixPQUZ3QztRQUdoRTVDLElBQUksRUFBRTh5QyxJQUFJLENBQUM5aUMsU0FBTCxDQUFlaFEsSUFIMkM7UUFJaEUsU0FBTztNQUp5RCxDQUF6QyxFQUt4QixJQUx3QixFQUtsQjtNQUFFO01BTGdCLEVBS0gsQ0FBQyxTQUFELEVBQVksTUFBWixDQUxHLENBRC9CLElBT00sQ0FBQyxHQUFHNUcsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBUnVDLEVBUzdDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7UUFDL0J6MkMsSUFBSSxFQUFFLEdBQUdmLE1BQUgsQ0FBVSszQyxJQUFJLENBQUM5bkIsWUFBZixFQUE2QixnQkFBN0I7TUFEeUIsQ0FBbkMsRUFFRyxDQUNDLENBQUMsR0FBRzV4QixLQUFLLENBQUNzNkMsV0FBVixFQUF1QjRGLGNBQXZCLEVBQXVDO1FBQ25DaHdDLElBQUksRUFBRXdwQyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK2EsTUFBZixDQUFzQixhQUF0QixFQUFxQyxlQUFyQyxDQUQ2QjtRQUVuQ2pTLElBQUksRUFBRSxNQUY2QjtRQUduQ3hKLElBQUksRUFBRTtNQUg2QixDQUF2QyxFQUlHLElBSkgsRUFJUztNQUFFO01BSlgsRUFJd0IsQ0FBQyxNQUFELENBSnhCLENBREQsQ0FGSCxFQVFHO01BQUU7TUFSTCxFQVFrQnF5QyxVQVJsQixDQVQ2QyxDQUFqRCxDQUQ2QyxDQUFQO0lBb0J0QyxDQXBCSyxDQURWO0lBc0JDaDBDLENBQUMsRUFBRTtJQUFFOztFQXRCTixDQUpILEVBMkJHO0VBQUU7RUEzQkwsRUEyQmtCLENBQUMsaUJBQUQsRUFBb0IsT0FBcEIsRUFBNkIsV0FBN0IsQ0EzQmxCLENBRDZFLEVBNkI3RSxDQUFDLEdBQUdqRixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsZ0JBQTlCLENBN0I2RSxFQThCN0UsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0QsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QyxJQUF2QyxFQUE2QyxDQUN6QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDLElBQXZDLEVBQTZDLENBQ3pDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NDLFVBQXBDLEVBQWdELENBQzVDLENBQUMsR0FBR3A1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NFLFVBQXBDLEVBQWdELENBQzVDLENBQUMsR0FBR3I1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsT0FBMUIsQ0FBM0IsQ0FBNUMsRUFBNEc7RUFBRTtFQUE5RyxDQUQ0QyxDQUFoRCxDQUQ0QyxFQUk1Q3d3QyxVQUo0QyxFQUs1QyxDQUFDLEdBQUd0NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DSSxVQUFwQyxFQUFnRCxDQUM1QyxDQUFDLEdBQUd2NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLGFBQTFCLENBQTNCLENBQTVDLEVBQWtIO0VBQUU7RUFBcEgsQ0FENEMsQ0FBaEQsQ0FMNEMsRUFRNUMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DSyxVQUFwQyxFQUFnRCxDQUM1QyxDQUFDLEdBQUd4NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLG9CQUExQixDQUEzQixDQUE1QyxFQUF5SDtFQUFFO0VBQTNILENBRDRDLENBQWhELENBUjRDLEVBVzVDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ00sV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHejVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixRQUExQixDQUEzQixDQUE1QyxFQUE2RztFQUFFO0VBQS9HLENBRDZDLENBQWpELENBWDRDLENBQWhELENBRHlDLENBQTdDLENBRHlDLEVBa0J4QzR3QyxJQUFJLENBQUMzZixXQUFMLENBQWlCeDNCLElBQWpCLElBQXlCbTNDLElBQUksQ0FBQzNmLFdBQUwsQ0FBaUJ4M0IsSUFBakIsQ0FBc0I0RCxNQUF0QixHQUErQixDQUF6RCxJQUNPLENBQUMsR0FBR25HLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUNhLFdBQXZDLEVBQW9ELEVBQzFFLENBQUMsR0FBR2g3QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JwRCxJQUFJLENBQUMzZixXQUFMLENBQWlCeDNCLElBQXZDLEVBQTZDLFVBQVVzQyxNQUFWLEVBQWtCTyxDQUFsQixFQUFxQmlOLEtBQXJCLEVBQTRCO0lBQ3RKLElBQUkxUixFQUFKOztJQUNBLE9BQVEsQ0FBQyxHQUFHWCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DO01BQUV0dkMsR0FBRyxFQUFFd0g7SUFBUCxDQUFwQyxFQUFvRCxDQUNoRixDQUFDLEdBQUdyUyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7TUFDaEMsU0FBTyxrQ0FEeUI7TUFFaENrQixPQUFPLEVBQUUsaUJBQVVJLE1BQVYsRUFBa0I7UUFBRSxPQUFRZixJQUFJLENBQUNsbkIsY0FBTCxDQUFvQixHQUFHN3dCLE1BQUgsQ0FBVSszQyxJQUFJLENBQUM5bkIsWUFBZixFQUE2QixVQUE3QixFQUF5Q2p3QixNQUF6QyxDQUFnRGtELE1BQU0sQ0FBQzJELEVBQXZELENBQXBCLENBQVI7TUFBMkY7SUFGeEYsQ0FBcEMsRUFHRyxDQUNDLENBQUMsR0FBR3hJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQytCLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR2w3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7TUFDL0J6MkMsSUFBSSxFQUFFLEdBQUdmLE1BQUgsQ0FBVSszQyxJQUFJLENBQUM5bkIsWUFBZixFQUE2QixVQUE3QixFQUF5Q2p3QixNQUF6QyxDQUFnRGtELE1BQU0sQ0FBQzJELEVBQXZELENBRHlCO01BRS9CLFNBQU87SUFGd0IsQ0FBbkMsRUFHRyxDQUFDLEdBQUd4SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzlzQyxnQkFBTCxDQUFzQi9ILE1BQU0sQ0FBQ0EsTUFBUCxDQUFjcVQsS0FBZCxDQUFvQixDQUFwQixFQUF1Qm9FLFNBQTdDLEVBQXdELElBQXhELENBQTNCLENBSEgsRUFHOEY7SUFBRTtJQUhoRyxFQUdtSDYrQixXQUhuSCxDQUQ4QyxFQUs5QyxDQUFDLEdBQUduN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDaUMsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHcDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2tDLFdBQXRDLEVBQW1ELENBQUMsR0FBR3I3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzlzQyxnQkFBTCxDQUFzQi9ILE1BQU0sQ0FBQ0EsTUFBUCxDQUFjcVQsS0FBZCxDQUFvQixDQUFwQixFQUF1Qm9FLFNBQTdDLEVBQXdELElBQXhELENBQTNCLENBQW5ELEVBQThJO0lBQUU7SUFBaEosQ0FEOEMsQ0FBbEQsQ0FMOEMsQ0FBbEQsQ0FERCxDQUhILEVBYUc7SUFBRTtJQWJMLEVBYWtCMitCLFdBYmxCLENBRGdGLEVBZWhGLENBQUMsR0FBR2o3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCNzFDLE1BQU0sQ0FBQ2d0RCxXQUFsQyxDQUExQyxFQUEwRjtJQUFFO0lBQTVGLENBZmdGLEVBZ0JoRixDQUFDLEdBQUc3eEQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DO01BQ2hDLFNBQU8sZ0JBRHlCO01BRWhDa0IsT0FBTyxFQUFFLGlCQUFVSSxNQUFWLEVBQWtCO1FBQUUsT0FBUWYsSUFBSSxDQUFDbG5CLGNBQUwsQ0FBb0IsR0FBRzd3QixNQUFILENBQVUrM0MsSUFBSSxDQUFDOW5CLFlBQWYsRUFBNkIsVUFBN0IsRUFBeUNqd0IsTUFBekMsQ0FBZ0RrRCxNQUFNLENBQUMyRCxFQUF2RCxDQUFwQixDQUFSO01BQTJGO0lBRnhGLENBQXBDLEVBR0csQ0FBQyxHQUFHeEksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQy81QyxFQUFFLEdBQUcrNEMsSUFBSSxDQUFDM3hCLEtBQUwsQ0FBV3NTLFVBQVgsQ0FBc0J4MUIsTUFBTSxDQUFDQSxNQUFQLENBQWMrQixJQUFwQyxDQUFOLE1BQXFELElBQXJELElBQTZEakcsRUFBRSxLQUFLLEtBQUssQ0FBekUsR0FBNkVBLEVBQTdFLEdBQWtGKzRDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUE3RyxDQUhILEVBRzJJO0lBQUU7SUFIN0ksRUFHZ0tpb0IsV0FIaEssQ0FoQmdGLEVBb0JoRixDQUFDLEdBQUd0N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DO01BQ2hDLFNBQU8sMkJBRHlCO01BRWhDa0IsT0FBTyxFQUFFLGlCQUFVSSxNQUFWLEVBQWtCO1FBQUUsT0FBUWYsSUFBSSxDQUFDbG5CLGNBQUwsQ0FBb0IsR0FBRzd3QixNQUFILENBQVUrM0MsSUFBSSxDQUFDOW5CLFlBQWYsRUFBNkIsVUFBN0IsRUFBeUNqd0IsTUFBekMsQ0FBZ0RrRCxNQUFNLENBQUMyRCxFQUF2RCxDQUFwQixDQUFSO01BQTJGO0lBRnhGLENBQXBDLEVBR0csQ0FBQyxHQUFHeEksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ4TixRQUFRLENBQUNyb0MsTUFBTSxDQUFDQSxNQUFQLENBQWNtbkQsa0JBQWYsQ0FBUixHQUN4QnRTLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLE9BQTFCLENBRHdCLEdBRXhCakUsTUFBTSxDQUFDQSxNQUFQLENBQWNtbkQsa0JBQWQsR0FDSXRTLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLE9BQTFCLENBREosR0FFSTR3QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFKUCxDQUhILEVBT3FDO0lBQUU7SUFQdkMsRUFPMERrb0IsV0FQMUQsQ0FwQmdGLEVBNEJoRixDQUFDLEdBQUd2N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNxQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd4N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO01BQy9CLFNBQU8sZ0JBRHdCO01BRS9CejJDLElBQUksRUFBRSxhQUFhZixNQUFiLENBQW9Ca0QsTUFBTSxDQUFDbUssV0FBM0IsRUFBd0MsVUFBeEMsRUFBb0RyTixNQUFwRCxDQUEyRGtELE1BQU0sQ0FBQzJELEVBQWxFLEVBQXNFLE9BQXRFO0lBRnlCLENBQW5DLEVBR0csQ0FDQyxDQUFDLEdBQUd4SSxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO01BQ3ZDNXBDLElBQUksRUFBRSxNQURpQztNQUV2QyxTQUFPO0lBRmdDLENBQTNDLENBREQsQ0FISCxFQVFHO0lBQUU7SUFSTCxFQVFrQnFyQyxXQVJsQixDQUQ4QyxFQVU5QyxDQUFDLEdBQUd6N0MsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUI2Uix1QkFBdkIsRUFBZ0Q7TUFDNUMsV0FBV3RuRCxNQUFNLENBQUMyRCxFQUQwQjtNQUU1QyxhQUFhO0lBRitCLENBQWhELEVBR0csSUFISCxFQUdTO0lBQUU7SUFIWCxFQUd3QixDQUFDLFNBQUQsQ0FIeEIsQ0FWOEMsQ0FBbEQsQ0FEc0MsQ0FBMUMsQ0E1QmdGLENBQXBELENBQWhDO0VBOENILENBaERnRixDQUFwRCxFQWdEekI7RUFBSTtFQWhEcUIsQ0FEOEMsRUFBcEQsQ0FEL0IsS0FvRE8sQ0FBQyxHQUFHeEksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixPQUE5QixFQUF1Q3VCLFdBQXZDLEVBQW9ELENBQzNFLENBQUMsR0FBRzE3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0N3QyxXQUFwQyxFQUFpRCxDQUFDLEdBQUczN0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUM5bUIseUJBQUwsQ0FBK0I4bUIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZThnRCxZQUFmLENBQTRCLFNBQTVCLENBQS9CLEVBQXVFMU8sSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLENBQXVCLFdBQXZCLENBQXZFLENBQTNCLENBQWpELEVBQTBMO0VBQUU7RUFBNUwsQ0FEMkUsQ0FBcEQsQ0FwRC9CLENBbEJ5QyxDQUE3QyxDQUQ2QyxDQUFqRCxDQTlCNkUsRUEwRzdFLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN5QyxXQUFyQyxFQUFrRCxDQUM3Q2xDLElBQUksQ0FBQzNmLFdBQUwsSUFBb0IyZixJQUFJLENBQUMzZixXQUFMLENBQWlCMWUsU0FBakIsR0FBNkIsQ0FBbEQsSUFDTyxDQUFDLEdBQUdyYixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJvSixxQkFBdkIsRUFBOEM7SUFDckVsNUMsR0FBRyxFQUFFLENBRGdFO0lBRXJFdEksSUFBSSxFQUFFbTNDLElBQUksQ0FBQzNmLFdBRjBEO0lBR3JFbXFCLGlCQUFpQixFQUFFeEssSUFBSSxDQUFDam5CO0VBSDZDLENBQTlDLEVBSXhCLElBSndCLEVBSWxCO0VBQUU7RUFKZ0IsRUFJSCxDQUFDLE1BQUQsRUFBUyxtQkFBVCxDQUpHLENBRC9CLElBTU0sQ0FBQyxHQUFHenlCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQVB3QyxDQUFsRCxDQTFHNkUsQ0FBakQsQ0FBaEM7QUFvSEg7O0FBQ0R6NkMsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUM5S2E7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRXp1QyxHQUFHLEVBQUU7QUFBUCxDQUFqQjtBQUNBLElBQUkwdUMsVUFBVSxHQUFHLENBQUMsTUFBRCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUl1QixXQUFXLEdBQUc7RUFBRW53QyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUlvd0MsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLFNBQVNwQyxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELE9BQVEsQ0FBQyxHQUFHLzVDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNwQixVQUFyQyxFQUFpRCxFQUM1RSxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCcEQsSUFBSSxDQUFDam1CLE1BQTNCLEVBQW1DLFVBQVVyb0IsSUFBVixFQUFnQmlFLENBQWhCLEVBQW1CO0lBQ25JLE9BQVEsQ0FBQyxHQUFHclAsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqRXR2QyxHQUFHLEVBQUV3RSxDQUQ0RDtNQUVqRSxTQUFPO0lBRjBELENBQXJDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHclAsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSCxVQUFyQyxFQUFpRCxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ0dkMsSUFBSSxDQUFDOE0sS0FBTCxDQUFXLENBQVgsRUFBY29FLFNBQWQsQ0FBd0IsQ0FBeEIsRUFBMkJBLFNBQXRELENBQWpELEVBQW1IO0lBQUU7SUFBckgsQ0FERCxFQUVDLENBQUMsR0FBR3RjLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0YsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHajVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1Q0QsVUFBdkMsRUFBbUQsQ0FDL0MsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QyxJQUF2QyxFQUE2QyxDQUN6QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsT0FBMUIsQ0FBM0IsQ0FBMUMsRUFBMEc7SUFBRTtJQUE1RyxDQURzQyxFQUV0QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsRUFDckMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQjF4QyxJQUFJLENBQUM4TSxLQUFMLENBQVcsQ0FBWCxFQUFjb0UsU0FBcEMsRUFBK0MsVUFBVWt3QyxFQUFWLEVBQWMzbUQsQ0FBZCxFQUFpQjtNQUM3SSxPQUFRLENBQUMsR0FBRzdGLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFDakV0dkMsR0FBRyxFQUFFaEYsQ0FENEQ7UUFFakUsU0FBTztNQUYwRCxDQUFyQyxFQUc3QixDQUNDLENBQUMsR0FBRzdGLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0MsVUFBckMsRUFBaUQsT0FBTyxDQUFDLEdBQUdwNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixVQUExQixDQUEzQixDQUFQLEdBQTJFLElBQTNFLEdBQWtGLENBQUMsR0FBRzlJLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDOXlDLElBQUwsQ0FBVTBCLFFBQVYsQ0FBbUJra0QsRUFBRSxDQUFDbGtELFFBQXRCLElBQ3hKb3hDLElBQUksQ0FBQzl5QyxJQUFMLENBQVUwQixRQUFWLENBQW1Ca2tELEVBQUUsQ0FBQ2xrRCxRQUF0QixDQUR3SixHQUV4Sm94QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFGNkgsQ0FBbEYsR0FFZixJQUZsQyxFQUV3QztNQUFFO01BRjFDLENBREQsRUFJQyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRSxVQUFyQyxFQUFpRCxDQUFDLEdBQUdyNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkI4UixFQUFFLENBQUNsd0MsU0FBOUIsQ0FBakQsRUFBMkY7TUFBRTtNQUE3RixDQUpELENBSDZCLENBQWhDO0lBU0gsQ0FWZ0YsQ0FBcEQsRUFVekI7SUFBSTtJQVZxQixDQURTLEVBQTFDLENBRnNDLENBQTFDLENBRHlDLEVBaUJ4Q2xSLElBQUksQ0FBQ3JKLEdBQU4sSUFDTyxDQUFDLEdBQUcvQixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DYixVQUFwQyxFQUFnRCxDQUN2RSxDQUFDLEdBQUd0NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLGVBQTFCLENBQTNCLENBQTFDLEVBQWtIO0lBQUU7SUFBcEgsQ0FEdUUsRUFFdkUsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7TUFDL0IsU0FBTywwRUFEd0I7TUFFL0J0OEIsTUFBTSxFQUFFLFFBRnVCO01BRy9CbmEsSUFBSSxFQUFFMEksSUFBSSxDQUFDcko7SUFIb0IsQ0FBbkMsRUFJRyxDQUFDLEdBQUcvQixLQUFLLENBQUMwNkMsZUFBVixFQUEyQnR2QyxJQUFJLENBQUNySixHQUFoQyxDQUpILEVBSXlDO0lBQUU7SUFKM0MsRUFJOER3M0MsVUFKOUQsQ0FEc0MsQ0FBMUMsQ0FGdUUsQ0FBaEQsQ0FEL0IsSUFXTSxDQUFDLEdBQUd2NUMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBNUJtQyxFQTZCekMsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFFBQTFCLENBQTNCLENBQTFDLEVBQTJHO0lBQUU7SUFBN0csQ0FEc0MsRUFFdEMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnR2QyxJQUFJLENBQUMwRyxNQUFMLEdBQWMxRyxJQUFJLENBQUMwRyxNQUFuQixHQUE0QjRuQyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBdkQsQ0FBMUMsRUFBNEg7SUFBRTtJQUE5SCxDQUZzQyxDQUExQyxDQTdCeUMsRUFpQ3pDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixhQUExQixDQUEzQixDQUExQyxFQUFnSDtJQUFFO0lBQWxILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxFQUNyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCMXhDLElBQUksQ0FBQ3VWLFdBQUwsQ0FBaUIsQ0FBakIsRUFBb0JyRSxTQUExQyxFQUFxRCxVQUFVa3dDLEVBQVYsRUFBYzNtRCxDQUFkLEVBQWlCO01BQ25KLE9BQVEsQ0FBQyxHQUFHN0YsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztRQUNqRXR2QyxHQUFHLEVBQUVoRixDQUQ0RDtRQUVqRSxTQUFPO01BRjBELENBQXJDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHN0YsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSyxVQUFyQyxFQUFpRCxPQUFPLENBQUMsR0FBR3g1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFVBQTFCLENBQTNCLENBQVAsR0FBMkUsSUFBM0UsR0FBa0YsQ0FBQyxHQUFHOUksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUM5eUMsSUFBTCxDQUFVMEIsUUFBVixDQUFtQmtrRCxFQUFFLENBQUNsa0QsUUFBdEIsSUFDeEpveEMsSUFBSSxDQUFDOXlDLElBQUwsQ0FBVTBCLFFBQVYsQ0FBbUJra0QsRUFBRSxDQUFDbGtELFFBQXRCLENBRHdKLEdBRXhKb3hDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUY2SCxDQUFsRixHQUVmLElBRmxDLEVBRXdDO01BQUU7TUFGMUMsQ0FERCxFQUlDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNNLFdBQXJDLEVBQWtELENBQUMsR0FBR3o1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQjhSLEVBQUUsQ0FBQ2x3QyxTQUE5QixDQUFsRCxFQUE0RjtNQUFFO01BQTlGLENBSkQsQ0FINkIsQ0FBaEM7SUFTSCxDQVZnRixDQUFwRCxFQVV6QjtJQUFJO0lBVnFCLENBRFMsRUFBMUMsQ0FGc0MsQ0FBMUMsQ0FqQ3lDLEVBaUR6QyxDQUFDLEdBQUd0YyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixVQUExQixDQUEzQixDQUExQyxFQUE2RztJQUFFO0lBQS9HLENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxFQUNyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCMXhDLElBQUksQ0FBQ3FoRCxRQUEzQixFQUFxQyxVQUFVQyxHQUFWLEVBQWVsSSxDQUFmLEVBQWtCO01BQ3BJLE9BQVEsQ0FBQyxHQUFHeGtELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFDakV0dkMsR0FBRyxFQUFFMjVDLENBRDREO1FBRWpFLFNBQU87TUFGMEQsQ0FBckMsRUFHN0IsQ0FBQyxHQUFHeGtELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDOXlDLElBQUwsQ0FBVStsRCxnQkFBVixDQUEyQkQsR0FBRyxDQUFDendCLElBQS9CLElBQ3hCeWQsSUFBSSxDQUFDOXlDLElBQUwsQ0FBVStsRCxnQkFBVixDQUEyQkQsR0FBRyxDQUFDendCLElBQS9CLENBRHdCLEdBRXhCeWQsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBRkgsQ0FINkIsRUFLQztNQUFFO01BTEgsQ0FBaEM7SUFNSCxDQVBnRixDQUFwRCxFQU96QjtJQUFJO0lBUHFCLENBRFMsRUFBMUMsQ0FGc0MsQ0FBMUMsQ0FqRHlDLEVBOER4Q2pvQixJQUFJLENBQUM5QyxRQUFMLENBQWNuQyxNQUFkLEdBQXVCLENBQXhCLElBQ08sQ0FBQyxHQUFHbkcsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ2EsV0FBcEMsRUFBaUQsQ0FDeEUsQ0FBQyxHQUFHaDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixVQUExQixDQUEzQixDQUExQyxFQUE2RztJQUFFO0lBQS9HLENBRHdFLEVBRXhFLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDOEIsV0FBckMsRUFBa0QsQ0FBQyxHQUFHajdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCdHZDLElBQUksQ0FBQzlDLFFBQUwsQ0FBYyxDQUFkLEVBQWlCQSxRQUFqQixLQUE4QixJQUE5QixHQUN2RW94QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFEdUUsR0FFdkVqb0IsSUFBSSxDQUFDOUMsUUFBTCxDQUNHZ1IsR0FESCxDQUNPLFVBQVV3aUIsS0FBVixFQUFpQjtNQUFFLE9BQU80ZCxJQUFJLENBQUM5eUMsSUFBTCxDQUFVMEIsUUFBVixDQUFtQnd6QixLQUFLLENBQUN4ekIsUUFBekIsQ0FBUDtJQUE0QyxDQUR0RSxFQUVHNkQsSUFGSCxDQUVRLElBRlIsQ0FGNEMsQ0FBbEQsRUFJc0I7SUFBRTtJQUp4QixDQURzQyxDQUExQyxDQUZ3RSxDQUFqRCxDQUQvQixJQVdNLENBQUMsR0FBR25NLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQXpFbUMsRUEwRXpDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixlQUExQixDQUEzQixDQUExQyxFQUFrSDtJQUFFO0lBQXBILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDK0IsV0FBckMsRUFBa0QsQ0FBQyxHQUFHbDdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCdHZDLElBQUksQ0FBQ3doRCxhQUFMLENBQW1CLENBQW5CLEVBQXNCMzRDLElBQXRCLEdBQ3ZFN0ksSUFBSSxDQUFDd2hELGFBQUwsQ0FBbUIsQ0FBbkIsRUFBc0IzNEMsSUFEaUQsR0FFdkV5bEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBRjRDLENBQWxELEVBRWlDO0lBQUU7SUFGbkMsQ0FEc0MsQ0FBMUMsQ0FGc0MsQ0FBMUMsQ0ExRXlDLENBQTdDLENBRCtDLENBQW5ELENBRDZDLENBQWpELENBRkQsQ0FINkIsQ0FBaEM7RUE2RkgsQ0E5RmdGLENBQXBELEVBOEZ6QjtFQUFJO0VBOUZxQixDQURnRCxFQUFqRCxDQUFoQztBQWlHSDs7QUFDRHZ6QixjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ3BIYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUNidndDLEVBQUUsRUFBRSxXQURTO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSXd3QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7O0FBQ0EsSUFBSUMsVUFBVSxHQUFHLGFBQWMsQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztFQUFFLFNBQU87QUFBVCxDQUF0QyxFQUE2RSxJQUE3RSxFQUFtRixDQUFDO0FBQUU7QUFBdEYsQ0FBL0I7O0FBQ0EsSUFBSU0sV0FBVyxHQUFHLENBQUMsUUFBRCxDQUFsQjs7QUFDQSxJQUFJdUIsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHaDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztFQUFFLFNBQU87QUFBVCxDQUFyQyxFQUFpRyxJQUFqRyxFQUF1RyxDQUFDO0FBQUU7QUFBMUcsQ0FBaEM7O0FBQ0EsSUFBSThCLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLE1BQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRWp4QyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUlreEMsV0FBVyxHQUFHO0VBQUVseEMsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJbXhDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLE1BQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRXR4QyxHQUFHLEVBQUU7QUFBUCxDQUFsQjs7QUFDQSxJQUFJdXhDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBR3A4QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixLQUEzQixDQUFoQzs7QUFDQSxJQUFJYixXQUFXLEdBQUcsYUFBYyxDQUFDLEdBQUdyOEMsS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsS0FBM0IsQ0FBaEM7O0FBQ0EsSUFBSVosV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLElBQUlDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBR3o4QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixLQUEzQixDQUFoQzs7QUFDQSxJQUFJUixXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHNThDLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLEtBQTNCLENBQWhDOztBQUNBLElBQUl1RCxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRTcxQyxHQUFHLEVBQUU7QUFBUCxDQUFsQjs7QUFDQSxJQUFJODFDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBRzNnRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsSUFBMUMsRUFBZ0QsQ0FBQztBQUFFO0FBQW5ELENBQWhDOztBQUNBLElBQUl5SCxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZGgyQyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUlpMkMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsTUFBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxJQUFJQyxXQUFXLEdBQUcsYUFBYyxDQUFDLEdBQUd2aEQsS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsS0FBM0IsQ0FBaEM7O0FBQ0EsSUFBSXNFLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxJQUFJQyxXQUFXLEdBQUcsYUFBYyxDQUFDLEdBQUc1aEQsS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsS0FBM0IsQ0FBaEM7O0FBQ0EsSUFBSTJFLFdBQVcsR0FBRztFQUNkaDNDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCOztBQUlBLFNBQVNpdUMsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUdoNkMsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFNBQTVCLENBQXpCOztFQUNBLElBQUlpRyxjQUFjLEdBQUcsQ0FBQyxHQUFHbGdELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixLQUE1QixDQUFyQjs7RUFDQSxJQUFJeVAsaUJBQWlCLEdBQUcsQ0FBQyxHQUFHMXBELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixRQUE1QixDQUF4Qjs7RUFDQSxPQUFRLENBQUMsR0FBR2o2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcEIsVUFBckMsRUFBaUQsQ0FDN0UsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0gsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0YsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHajVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0QsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTywrQkFEZ0M7SUFFdkM1cEMsSUFBSSxFQUFFO0VBRmlDLENBQTNDLENBRDZDLEVBSzdDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0MsVUFBckMsRUFBaUQsQ0FBQyxHQUFHcDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsV0FBMUIsQ0FBM0IsQ0FBakQsRUFBcUg7RUFBRTtFQUF2SCxDQUw2QyxFQU03QyxDQUFDLEdBQUc5SSxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsZ0ZBQTlCLENBTjZDLEVBTzdDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIseURBQTlCLENBUDZDLEVBUTdDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsd0NBQTlCLENBUjZDLEVBUzdDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsa0JBQTlCLENBVDZDLENBQWpELENBRDZDLEVBWTdDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNFLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3I1QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QjRGLGNBQXZCLEVBQXVDO0lBQ25DaHdDLElBQUksRUFBRXdwQyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK2EsTUFBZixDQUFzQixhQUF0QixFQUFxQyxrQkFBckMsQ0FENkI7SUFFbkNqUyxJQUFJLEVBQUUsS0FGNkI7SUFHbkM1TixJQUFJLEVBQUUsV0FBV2IsTUFBWCxDQUFrQiszQyxJQUFJLENBQUM3MEMsTUFBTCxDQUFZMkQsRUFBOUIsRUFBa0MsbUJBQWxDLENBSDZCO0lBSW5DLFNBQU87RUFKNEIsQ0FBdkMsRUFLRyxJQUxILEVBS1M7RUFBRTtFQUxYLEVBS3dCLENBQUMsTUFBRCxFQUFTLE1BQVQsQ0FMeEIsQ0FENkMsRUFPN0MsQ0FBQyxHQUFHeEksS0FBSyxDQUFDczZDLFdBQVYsRUFBdUI0RixjQUF2QixFQUF1QztJQUNuQ2h3QyxJQUFJLEVBQUV3cEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZSthLE1BQWYsQ0FBc0IsY0FBdEIsRUFBc0MsdUJBQXRDLENBRDZCO0lBRW5DalMsSUFBSSxFQUFFLEVBRjZCO0lBR25Dd1AsTUFBTSxFQUFFLFFBSDJCO0lBSW5DcGQsSUFBSSxFQUFFLFdBQVdiLE1BQVgsQ0FBa0IrM0MsSUFBSSxDQUFDNzBDLE1BQUwsQ0FBWTJELEVBQTlCLEVBQWtDLFlBQWxDLENBSjZCO0lBS25DLFNBQU87RUFMNEIsQ0FBdkMsRUFNRyxJQU5ILEVBTVM7RUFBRTtFQU5YLEVBTXdCLENBQUMsTUFBRCxFQUFTLE1BQVQsQ0FOeEIsQ0FQNkMsRUFjN0MsQ0FBQyxHQUFHeEksS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QyxTQUFPLFFBRGdDO0lBRXZDNXBDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxDQWQ2QyxFQWtCN0MsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRyxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd0NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDLElBQXhDLEVBQThDLENBQzFDLENBQUMsR0FBR241QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQUU1cEMsSUFBSSxFQUFFO0VBQVIsQ0FBM0MsQ0FEMEMsQ0FBOUMsQ0FENkMsRUFJN0MsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSSxVQUFyQyxFQUFpRCxDQUM3Q0MsVUFENkMsRUFFN0MsQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztJQUFFLFVBQVVPLElBQUksQ0FBQ25mO0VBQWpCLENBQW5DLEVBQStELElBQS9ELEVBQXFFO0VBQUU7RUFBdkUsRUFBb0ZrZixXQUFwRixDQUY2QyxDQUFqRCxDQUo2QyxDQUFqRCxDQWxCNkMsQ0FBakQsQ0FaNkMsQ0FBakQsQ0FENkMsRUEwQzdDdUIsV0ExQzZDLEVBMkM3QyxDQUFDLEdBQUdoN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDOEIsV0FBckMsRUFBa0QsRUFDN0MsQ0FBQyxHQUFHajdDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnBELElBQUksQ0FBQ2xvQixhQUEzQixFQUEwQyxVQUFVcG1CLElBQVYsRUFBZ0J1Z0QsRUFBaEIsRUFBb0I7SUFDM0ksT0FBUSxDQUFDLEdBQUczckQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEM7TUFBRXZ2QyxHQUFHLEVBQUU4Z0Q7SUFBUCxDQUE5QyxFQUEyRCxDQUN2RixDQUFDLEdBQUczckQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDK0IsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHbDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2dDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR243QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNpQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdwN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDa0MsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHcjdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztNQUMvQixTQUFPLFdBRHdCO01BRS9CejJDLElBQUksRUFBRSxXQUFXZixNQUFYLENBQWtCKzNDLElBQUksQ0FBQzcwQyxNQUFMLENBQVkyRCxFQUE5QixFQUFrQyxhQUFsQyxFQUFpRDdHLE1BQWpELENBQXdEeUosSUFBSSxDQUFDNUMsRUFBN0Q7SUFGeUIsQ0FBbkMsRUFHRyxDQUFDLEdBQUd4SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzlzQyxnQkFBTCxDQUFzQnhCLElBQUksQ0FBQ2dtQixTQUFMLENBQWVsWixLQUFmLENBQXFCLENBQXJCLEVBQXdCb0UsU0FBOUMsRUFBeUQsSUFBekQsQ0FBM0IsQ0FISCxFQUcrRjtJQUFFO0lBSGpHLEVBR29IZy9CLFdBSHBILENBRDhDLENBQWxELENBRDhDLEVBTzlDLENBQUMsR0FBR3Q3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNvQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd2N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDcUMsV0FBdEMsRUFBbUQsQ0FDL0MsQ0FBQyxHQUFHeDdDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCNEYsY0FBdkIsRUFBdUM7TUFDbkNod0MsSUFBSSxFQUFFd3BDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrYSxNQUFmLENBQXNCLGNBQXRCLEVBQXNDLGtCQUF0QyxDQUQ2QjtNQUVuQ2pTLElBQUksRUFBRSxLQUY2QjtNQUduQzVOLElBQUksRUFBRSxXQUFXYixNQUFYLENBQWtCKzNDLElBQUksQ0FBQzcwQyxNQUFMLENBQVkyRCxFQUE5QixFQUFrQyxhQUFsQyxFQUFpRDdHLE1BQWpELENBQXdEeUosSUFBSSxDQUFDNUMsRUFBN0QsQ0FINkI7TUFJbkMsU0FBTztJQUo0QixDQUF2QyxFQUtHLElBTEgsRUFLUztJQUFFO0lBTFgsRUFLd0IsQ0FBQyxNQUFELEVBQVMsTUFBVCxDQUx4QixDQUQrQyxFQU8vQyxDQUFDLEdBQUd4SSxLQUFLLENBQUNzNkMsV0FBVixFQUF1QjRGLGNBQXZCLEVBQXVDO01BQ25DaHdDLElBQUksRUFBRXdwQyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK2EsTUFBZixDQUFzQixjQUF0QixFQUFzQyxrQkFBdEMsQ0FENkI7TUFFbkNqUyxJQUFJLEVBQUUsTUFGNkI7TUFHbkM1TixJQUFJLEVBQUUsV0FBV2IsTUFBWCxDQUFrQiszQyxJQUFJLENBQUM3MEMsTUFBTCxDQUFZMkQsRUFBOUIsRUFBa0MsYUFBbEMsRUFBaUQ3RyxNQUFqRCxDQUF3RHlKLElBQUksQ0FBQzVDLEVBQTdELEVBQWlFLE9BQWpFO0lBSDZCLENBQXZDLEVBSUcsSUFKSCxFQUlTO0lBQUU7SUFKWCxFQUl3QixDQUFDLE1BQUQsRUFBUyxNQUFULENBSnhCLENBUCtDLENBQW5ELENBRDhDLEVBYzlDLENBQUMsR0FBR3hJLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCNEYsY0FBdkIsRUFBdUM7TUFDbkNod0MsSUFBSSxFQUFFd3BDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrYSxNQUFmLENBQXNCLGFBQXRCLEVBQXFDLGVBQXJDLENBRDZCO01BRW5DalMsSUFBSSxFQUFFLE1BRjZCO01BR25DNU4sSUFBSSxFQUFFLGNBQWNiLE1BQWQsQ0FBcUJ5SixJQUFJLENBQUM1QyxFQUExQixFQUE4QixnQkFBOUIsQ0FINkI7TUFJbkMsU0FBTztJQUo0QixDQUF2QyxFQUtHLElBTEgsRUFLUztJQUFFO0lBTFgsRUFLd0IsQ0FBQyxNQUFELEVBQVMsTUFBVCxDQUx4QixDQWQ4QyxDQUFsRCxDQVA4QyxDQUFsRCxDQUQ4QyxFQThCOUMsQ0FBQyxHQUFHeEksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDc0MsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHejdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3VDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRzE3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUN3QyxXQUF2QyxFQUFvRCxDQUNoRCxDQUFDLEdBQUczN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDLElBQXZDLEVBQTZDLENBQ3pDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixpQkFBMUIsQ0FBM0IsQ0FBMUMsRUFBb0g7SUFBRTtJQUF0SCxDQURzQyxFQUV0QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsRUFDckMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQjF4QyxJQUFJLENBQUNnbUIsU0FBTCxDQUFlbFosS0FBZixDQUFxQixDQUFyQixFQUNsR29FLFNBRDRFLEVBQ2pFLFVBQVVwRSxLQUFWLEVBQWlCOVMsQ0FBakIsRUFBb0I7TUFDaEMsT0FBUSxDQUFDLEdBQUdwRixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1FBQ2pFdHZDLEdBQUcsRUFBRXpGLENBRDREO1FBRWpFLFNBQU8sQ0FBQyxHQUFHcEYsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxlQUFELEVBQWtCO1VBQzNDLFVBQVV6M0MsQ0FBQyxLQUNQZ0csSUFBSSxDQUFDZ21CLFNBQUwsQ0FBZWxaLEtBQWYsQ0FBcUIsQ0FBckIsRUFBd0JvRSxTQUF4QixDQUFrQ25XLE1BQWxDLEdBQTJDO1FBRkosQ0FBbEIsQ0FBMUI7TUFGMEQsQ0FBckMsRUFNN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN5QyxXQUFyQyxFQUFrRCxPQUFPLENBQUMsR0FBRzU3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFVBQTFCLENBQTNCLENBQVAsR0FBMkUsSUFBM0UsR0FBa0YsQ0FBQyxHQUFHOUksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUM5eUMsSUFBTCxDQUFVMEIsUUFBVixDQUFtQjRQLEtBQUssQ0FBQzVQLFFBQXpCLElBQ3pKb3hDLElBQUksQ0FBQzl5QyxJQUFMLENBQVUwQixRQUFWLENBQW1CNFAsS0FBSyxDQUFDNVAsUUFBekIsQ0FEeUosR0FFekpveEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBRjhILENBQWxGLEdBRWhCLElBRmxDLEVBRXdDO01BQUU7TUFGMUMsQ0FERCxFQUlDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMwQyxXQUFyQyxFQUFrRCxDQUFDLEdBQUc3N0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ4aUMsS0FBSyxDQUFDb0UsU0FBakMsQ0FBbEQsRUFBK0Y7TUFBRTtNQUFqRyxDQUpELENBTjZCLEVBVzdCO01BQUU7TUFYMkIsQ0FBaEM7SUFZSCxDQWRnRixDQUFwRCxFQWN6QjtJQUFJO0lBZHFCLENBRFMsRUFBMUMsQ0FGc0MsQ0FBMUMsQ0FEeUMsRUFxQnhDbFIsSUFBSSxDQUFDZ21CLFNBQUwsQ0FBZTA2QixPQUFoQixJQUNPLENBQUMsR0FBRzlyRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DMkIsV0FBcEMsRUFBaUQsQ0FDeEUsQ0FBQyxHQUFHOTdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixTQUExQixDQUEzQixDQUExQyxFQUE0RztJQUFFO0lBQTlHLENBRHdFLEVBRXhFLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUM5eUMsSUFBTCxDQUFVbWxELGdCQUFWLENBQTJCM2dELElBQUksQ0FBQ2dtQixTQUFMLENBQWUwNkIsT0FBMUMsQ0FBM0IsQ0FBMUMsRUFBMEg7SUFBRTtJQUE1SCxDQUZ3RSxDQUFqRCxDQUQvQixJQUtNLENBQUMsR0FBRzlyRCxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0ExQm1DLEVBMkJ4Q252QyxJQUFJLENBQUNnbUIsU0FBTCxDQUFlNDZCLGtCQUFoQixJQUNPLENBQUMsR0FBR2hzRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DNEIsV0FBcEMsRUFBaUQsQ0FDeEUsQ0FBQyxHQUFHLzdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixvQkFBMUIsQ0FBM0IsQ0FBMUMsRUFBdUg7SUFBRTtJQUF6SCxDQUR3RSxFQUV4RSxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCdHZDLElBQUksQ0FBQ2dtQixTQUFMLENBQWU0NkIsa0JBQWYsSUFBcUMsQ0FBaEUsQ0FBMUMsRUFBOEc7SUFBRTtJQUFoSCxDQUZ3RSxDQUFqRCxDQUQvQixJQUtNLENBQUMsR0FBR2hzRCxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FoQ21DLEVBaUN6QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsYUFBMUIsQ0FBM0IsQ0FBMUMsRUFBZ0g7SUFBRTtJQUFsSCxDQURzQyxFQUV0QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsRUFDckMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQjF4QyxJQUFJLENBQUNnbUIsU0FBTCxDQUNsR3pRLFdBRGtHLENBQ3RGLENBRHNGLEVBQ25GckUsU0FENkQsRUFDbEQsVUFBVXFFLFdBQVYsRUFBdUJnOUIsQ0FBdkIsRUFBMEI7TUFDckQsT0FBUSxDQUFDLEdBQUczOUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztRQUNqRXR2QyxHQUFHLEVBQUU4eUMsQ0FENEQ7UUFFakUsU0FBTyxDQUFDLEdBQUczOUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxlQUFELEVBQWtCO1VBQzNDLFVBQVVjLENBQUMsS0FDUHZ5QyxJQUFJLENBQUNnbUIsU0FBTCxDQUFlelEsV0FBZixDQUEyQixDQUEzQixFQUE4QnJFLFNBQTlCLENBQ0tuVyxNQURMLEdBRUk7UUFKbUMsQ0FBbEIsQ0FBMUI7TUFGMEQsQ0FBckMsRUFRN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM2QyxXQUFyQyxFQUFrRCxPQUFPLENBQUMsR0FBR2g4QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFVBQTFCLENBQTNCLENBQVAsR0FBMkUsSUFBM0UsR0FBa0YsQ0FBQyxHQUFHOUksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUM5eUMsSUFBTCxDQUFVMEIsUUFBVixDQUFtQnFZLFdBQVcsQ0FBQ3JZLFFBQS9CLElBQ3pKb3hDLElBQUksQ0FBQzl5QyxJQUFMLENBQVUwQixRQUFWLENBQW1CcVksV0FBVyxDQUFDclksUUFBL0IsQ0FEeUosR0FFekpveEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBRjhILENBQWxGLEdBRWhCLElBRmxDLEVBRXdDO01BQUU7TUFGMUMsQ0FERCxFQUlDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM4QyxXQUFyQyxFQUFrRCxDQUFDLEdBQUdqOEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIvNUIsV0FBVyxDQUFDckUsU0FBdkMsQ0FBbEQsRUFBcUc7TUFBRTtNQUF2RyxDQUpELENBUjZCLEVBYTdCO01BQUU7TUFiMkIsQ0FBaEM7SUFjSCxDQWhCZ0YsQ0FBcEQsRUFnQnpCO0lBQUk7SUFoQnFCLENBRFMsRUFBMUMsQ0FGc0MsQ0FBMUMsQ0FqQ3lDLEVBdUR6QyxDQUFDLEdBQUd0YyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixXQUExQixDQUEzQixDQUExQyxFQUE4RztJQUFFO0lBQWhILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxFQUNyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCMXhDLElBQUksQ0FBQ2dtQixTQUFMLENBQWU4QixTQUFyQyxFQUFnRCxVQUFVbHlCLEdBQVYsRUFBZWs2QixDQUFmLEVBQWtCO01BQy9JLElBQUl2NkIsRUFBSjs7TUFDQSxPQUFRLENBQUMsR0FBR1gsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztRQUNqRXR2QyxHQUFHLEVBQUVxd0IsQ0FENEQ7UUFFakUsU0FBTyxDQUFDLEdBQUdsN0IsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEI7VUFDN0IsVUFBVTNoQixDQUFDLEtBQUs5dkIsSUFBSSxDQUFDZ21CLFNBQUwsQ0FBZThCLFNBQWYsQ0FBeUIvc0IsTUFBekIsR0FBa0M7UUFEckIsQ0FBMUI7TUFGMEQsQ0FBckMsRUFLN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsWUFBMUIsQ0FBM0IsSUFBc0UsSUFBdEUsR0FBNkUsQ0FBQyxHQUFHOUksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQy81QyxFQUFFLEdBQUdLLEdBQUcsQ0FBQzZrRCxVQUFWLE1BQTBCLElBQTFCLElBQWtDbGxELEVBQUUsS0FBSyxLQUFLLENBQTlDLEdBQWtEQSxFQUFsRCxHQUF1RCs0QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBbEYsQ0FBN0UsR0FBMkwsSUFBdk8sRUFBNk87TUFBRTtNQUEvTyxDQURELEVBRUMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixNQUExQixDQUEzQixJQUFnRSxJQUFoRSxHQUF1RSxDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQjE1QyxHQUFHLENBQUNpN0IsSUFBSixHQUFXajdCLEdBQUcsQ0FBQ2k3QixJQUFmLEdBQXNCeWQsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQWpELENBQXZFLEdBQW9KLElBQWhNLEVBQXNNO01BQUU7TUFBeE0sQ0FGRCxFQUdDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FDeEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLGVBQTFCLENBQTNCLElBQXlFLElBQXBHLEVBQTBHO01BQUU7TUFBNUcsQ0FEd0MsRUFFdkM5SCxHQUFHLENBQUM4ckQsYUFBTCxJQUNPLENBQUMsR0FBRzlzRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO1FBQzFEdHZDLEdBQUcsRUFBRSxDQURxRDtRQUUxRG5JLElBQUksRUFBRTFCLEdBQUcsQ0FBQzhyRCxhQUZnRDtRQUcxRCxTQUFPLGdCQUhtRDtRQUkxRGp3QyxNQUFNLEVBQUU7TUFKa0QsQ0FBbkMsRUFLeEIsQ0FBQyxHQUFHN2MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIxNUMsR0FBRyxDQUFDOHJELGFBQS9CLENBTHdCLEVBS3VCO01BQUU7TUFMekIsRUFLNEM1USxXQUw1QyxDQUQvQixLQU9PLENBQUMsR0FBR2w4QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDZ0MsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHbjhDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQTNCLENBQW5ELEVBQXlHO01BQUU7TUFBM0csQ0FQL0IsQ0FGd0MsQ0FBNUMsQ0FIRCxDQUw2QixFQW1CN0I7TUFBRTtNQW5CMkIsQ0FBaEM7SUFvQkgsQ0F0QmdGLENBQXBELEVBc0J6QjtJQUFJO0lBdEJxQixDQURTLEVBQTFDLENBRnNDLENBQTFDLENBdkR5QyxFQW1GekMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLGVBQTFCLENBQTNCLENBQTFDLEVBQWtIO0lBQUU7SUFBcEgsQ0FEc0MsRUFFdEMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3ZuQixpQkFBTCxDQUF1Qi9tQixJQUFJLENBQUNnbUIsU0FBTCxDQUFldzZCLGFBQXRDLENBQTNCLElBQW1GLEdBQW5GLEdBQXlGLENBQUMsR0FBRzVyRCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFdBQTFCLENBQTNCLENBQW5JLEVBQXVNO0lBQUU7SUFBek0sQ0FGc0MsQ0FBMUMsQ0FuRnlDLEVBdUZ6QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixVQUExQixDQUEzQixDQUExQyxFQUE2RztJQUFFO0lBQS9HLENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxFQUNyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCMXhDLElBQUksQ0FBQ2dtQixTQUFMLENBQWU0QixRQUFyQyxFQUErQyxVQUFVbzVCLElBQVYsRUFBZ0JsbEIsQ0FBaEIsRUFBbUI7TUFDL0ksT0FBUSxDQUFDLEdBQUdsbkMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztRQUNqRXR2QyxHQUFHLEVBQUVxOEIsQ0FENEQ7UUFFakUsU0FBTyxDQUFDLEdBQUdsbkMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEI7VUFDN0IsVUFBVTNWLENBQUMsS0FBSzk3QixJQUFJLENBQUNnbUIsU0FBTCxDQUFlNEIsUUFBZixDQUF3QjdzQixNQUF4QixHQUFpQztRQURwQixDQUExQjtNQUYwRCxDQUFyQyxFQUs3QixDQUNDLENBQUMsR0FBR25HLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN2QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQ3hDLENBQUMsR0FBR241QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixNQUExQixDQUEzQixJQUFnRSxJQUEzRixFQUFpRztNQUFFO01BQW5HLENBRHdDLEVBRXZDc2pELElBQUksQ0FBQ2o0QyxJQUFOLElBQ08sQ0FBQyxHQUFHblUsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEM7UUFBRXZ2QyxHQUFHLEVBQUU7TUFBUCxDQUE5QyxFQUEwRCxDQUNqRixDQUFDLEdBQUc3SyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIwUixJQUFJLENBQUNqNEMsSUFBaEMsQ0FBM0IsRUFBa0U7TUFBRTtNQUFwRSxDQURpRixDQUExRCxFQUV4QjtNQUFHO01BRnFCLENBRC9CLEtBSU8sQ0FBQyxHQUFHblUsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEM7UUFBRXZ2QyxHQUFHLEVBQUU7TUFBUCxDQUE5QyxFQUEwRCxDQUNqRixDQUFDLEdBQUc3SyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBM0IsQ0FBM0IsRUFBaUY7TUFBRTtNQUFuRixDQURpRixDQUExRCxFQUV4QjtNQUFHO01BRnFCLENBSi9CLENBRndDLEVBU3hDK29CLFdBVHdDLENBQTVDLENBRHVDLEVBWXZDLENBQUMsR0FBR3A4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FDeEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLE1BQTFCLENBQTNCLElBQWdFLElBQTNGLEVBQWlHO01BQUU7TUFBbkcsQ0FEd0MsRUFFdkNzakQsSUFBSSxDQUFDbjRDLElBQU4sSUFDTyxDQUFDLEdBQUdqVSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztRQUFFdnZDLEdBQUcsRUFBRTtNQUFQLENBQTlDLEVBQTBELENBQ2pGLENBQUMsR0FBRzdLLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQjBSLElBQUksQ0FBQ240QyxJQUFoQyxDQUEzQixFQUFrRTtNQUFFO01BQXBFLENBRGlGLENBQTFELEVBRXhCO01BQUc7TUFGcUIsQ0FEL0IsS0FJTyxDQUFDLEdBQUdqVSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztRQUFFdnZDLEdBQUcsRUFBRTtNQUFQLENBQTlDLEVBQTBELENBQ2pGLENBQUMsR0FBRzdLLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUEzQixDQUEzQixFQUFpRjtNQUFFO01BQW5GLENBRGlGLENBQTFELEVBRXhCO01BQUc7TUFGcUIsQ0FKL0IsQ0FGd0MsRUFTeENncEIsV0FUd0MsQ0FBNUMsQ0FadUMsRUF1QnZDLENBQUMsR0FBR3I4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FDeEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLE9BQTFCLENBQTNCLElBQWlFLElBQTVGLEVBQWtHO01BQUU7TUFBcEcsQ0FEd0MsRUFFdkNzakQsSUFBSSxDQUFDcnNELEtBQU4sSUFDTyxDQUFDLEdBQUdDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO1FBQUV2dkMsR0FBRyxFQUFFO01BQVAsQ0FBOUMsRUFBMEQsQ0FDakYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCMFIsSUFBSSxDQUFDcnNELEtBQWhDLENBQTNCLEVBQW1FO01BQUU7TUFBckUsQ0FEaUYsQ0FBMUQsRUFFeEI7TUFBRztNQUZxQixDQUQvQixLQUlPLENBQUMsR0FBR0MsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEM7UUFBRXZ2QyxHQUFHLEVBQUU7TUFBUCxDQUE5QyxFQUEwRCxDQUNqRixDQUFDLEdBQUc3SyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBM0IsQ0FBM0IsRUFBaUY7TUFBRTtNQUFuRixDQURpRixDQUExRCxFQUV4QjtNQUFHO01BRnFCLENBSi9CLENBRndDLENBQTVDLENBdkJ1QyxDQUEzQyxDQURELEVBbUNDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNtRCxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd0OEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFVBQTFCLENBQTNCLElBQW9FLEtBQS9HLEVBQXNIO01BQUU7TUFBeEgsQ0FEOEMsRUFFOUMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLEVBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JzUCxJQUFJLENBQUMzaEQsUUFBM0IsRUFBcUMsVUFBVXVuRCxHQUFWLEVBQWVDLENBQWYsRUFBa0I7UUFDcEksT0FBUSxDQUFDLEdBQUdqeUQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztVQUNqRXR2QyxHQUFHLEVBQUVvbkQsQ0FENEQ7VUFFakUsU0FBTyxDQUFDLEdBQUdqeUQsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxNQUFELEVBQVM7WUFDbEMsVUFBVW9WLENBQUMsS0FBSzdGLElBQUksQ0FBQzNoRCxRQUFMLENBQWN0RSxNQUFkLEdBQXVCO1VBREwsQ0FBVCxDQUExQjtRQUYwRCxDQUFyQyxFQUs3QixDQUNFNnJELEdBQUcsQ0FBQzkrQixTQUFMLElBQ08sQ0FBQyxHQUFHbHpCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO1VBQUV2dkMsR0FBRyxFQUFFO1FBQVAsQ0FBOUMsRUFBMEQsQ0FDakYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCc1gsR0FBRyxDQUFDOStCLFNBQS9CLENBQTNCLEVBQXNFO1FBQUU7UUFBeEUsQ0FEaUYsQ0FBMUQsRUFFeEI7UUFBRztRQUZxQixDQUQvQixLQUlPLENBQUMsR0FBR2x6QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztVQUFFdnZDLEdBQUcsRUFBRTtRQUFQLENBQTlDLEVBQTBELENBQ2pGLENBQUMsR0FBRzdLLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUEzQixDQUEzQixFQUFpRjtRQUFFO1FBQW5GLENBRGlGLENBQTFELEVBRXhCO1FBQUc7UUFGcUIsQ0FKL0IsQ0FERCxDQUw2QixFQWE3QjtRQUFFO1FBYjJCLENBQWhDO01BY0gsQ0FmZ0YsQ0FBcEQsRUFlekI7TUFBSTtNQWZxQixDQURVLEVBQTNDLENBRjhDLENBQWxELENBbkNELEVBd0RDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNvRCxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd2OEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFdBQTFCLENBQTNCLElBQXFFLEtBQWhILEVBQXVIO01BQUU7TUFBekgsQ0FEOEMsRUFFOUMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcUQsV0FBckMsRUFBa0QsRUFDN0MsQ0FBQyxHQUFHeDhDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnNQLElBQUksQ0FBQ0MsU0FBM0IsRUFBc0MsVUFBVXFGLEdBQVYsRUFBZS9ULENBQWYsRUFBa0I7UUFDckksT0FBUSxDQUFDLEdBQUczOUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztVQUNqRXR2QyxHQUFHLEVBQUU4eUMsQ0FENEQ7VUFFakUsU0FBTyxDQUFDLEdBQUczOUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEI7WUFDN0IsVUFBVWMsQ0FBQyxLQUFLeU8sSUFBSSxDQUFDQyxTQUFMLENBQWVsbUQsTUFBZixHQUF3QjtVQURYLENBQTFCO1FBRjBELENBQXJDLEVBSzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FDdkN1WSxHQUFHLENBQUM5b0QsSUFBTCxJQUNPLENBQUMsR0FBRzVJLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO1VBQUV2dkMsR0FBRyxFQUFFO1FBQVAsQ0FBOUMsRUFBMEQsQ0FDakYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCZ1gsR0FBRyxDQUFDOW9ELElBQS9CLENBQTNCLEVBQWlFO1FBQUU7UUFBbkUsQ0FEaUYsQ0FBMUQsRUFFeEI7UUFBRztRQUZxQixDQUQvQixLQUlPLENBQUMsR0FBRzVJLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO1VBQUV2dkMsR0FBRyxFQUFFO1FBQVAsQ0FBOUMsRUFBMEQsQ0FDakYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQTNCLENBQTNCLEVBQWlGO1FBQUU7UUFBbkYsQ0FEaUYsQ0FBMUQsRUFFeEI7UUFBRztRQUZxQixDQUovQixDQUR3QyxFQVF4Q29wQixXQVJ3QyxDQUE1QyxDQUR1QyxFQVd2QyxDQUFDLEdBQUd6OEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQ3ZDdVksR0FBRyxDQUFDM3hELEtBQUwsSUFDTyxDQUFDLEdBQUdDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO1VBQUV2dkMsR0FBRyxFQUFFO1FBQVAsQ0FBOUMsRUFBMEQsQ0FDakYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsT0FBTyxDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJnWCxHQUFHLENBQUMzeEQsS0FBL0IsQ0FBUCxHQUErQyxJQUExRSxFQUFnRjtRQUFFO1FBQWxGLENBRGlGLENBQTFELEVBRXhCO1FBQUc7UUFGcUIsQ0FEL0IsS0FJTyxDQUFDLEdBQUdDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO1VBQUV2dkMsR0FBRyxFQUFFO1FBQVAsQ0FBOUMsRUFBMEQsQ0FDakYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsT0FBTyxDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBM0IsQ0FBUCxHQUE4RCxJQUF6RixFQUErRjtRQUFFO1FBQWpHLENBRGlGLENBQTFELEVBRXhCO1FBQUc7UUFGcUIsQ0FKL0IsQ0FEd0MsQ0FBNUMsQ0FYdUMsQ0FBM0MsQ0FERCxDQUw2QixFQTJCN0I7UUFBRTtRQTNCMkIsQ0FBaEM7TUE0QkgsQ0E3QmdGLENBQXBELEVBNkJ6QjtNQUFJO01BN0JxQixDQURpQixFQUFsRCxDQUY4QyxDQUFsRCxDQXhERCxFQTJGQyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDdUQsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHMThDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixTQUExQixDQUEzQixJQUFtRSxLQUE5RyxFQUFxSDtNQUFFO01BQXZILENBRDhDLEVBRTlDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3dELFdBQXJDLEVBQWtELEVBQzdDLENBQUMsR0FBRzM4QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JzUCxJQUFJLENBQUNFLE9BQUwsQ0FBYSxDQUFiLEVBQWdCaHdDLFNBQXRDLEVBQWlELFVBQVVpd0MsR0FBVixFQUFlL0gsQ0FBZixFQUFrQjtRQUNoSixPQUFRLENBQUMsR0FBR3hrRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1VBQ2pFdHZDLEdBQUcsRUFBRTI1QyxDQUQ0RDtVQUVqRSxTQUFPLENBQUMsR0FBR3hrRCxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLE1BQUQsRUFBUztZQUNsQyxVQUFVMkgsQ0FBQyxLQUNQNEgsSUFBSSxDQUFDRSxPQUFMLENBQWEsQ0FBYixFQUFnQmh3QyxTQUFoQixDQUEwQm5XLE1BQTFCLEdBQW1DO1VBRkwsQ0FBVCxDQUExQjtRQUYwRCxDQUFyQyxFQU03QixDQUNDLENBQUMsR0FBR25HLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN2QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQ3ZDb1QsR0FBRyxDQUFDandDLFNBQUwsSUFDTyxDQUFDLEdBQUd0YyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztVQUFFdnZDLEdBQUcsRUFBRTtRQUFQLENBQTlDLEVBQTBELENBQ2pGLENBQUMsR0FBRzdLLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQjZSLEdBQUcsQ0FBQ2p3QyxTQUEvQixDQUEzQixFQUFzRTtRQUFFO1FBQXhFLENBRGlGLENBQTFELEVBRXhCO1FBQUc7UUFGcUIsQ0FEL0IsS0FJTyxDQUFDLEdBQUd0YyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztVQUFFdnZDLEdBQUcsRUFBRTtRQUFQLENBQTlDLEVBQTBELENBQ2pGLENBQUMsR0FBRzdLLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUEzQixDQUEzQixFQUFpRjtRQUFFO1FBQW5GLENBRGlGLENBQTFELEVBRXhCO1FBQUc7UUFGcUIsQ0FKL0IsQ0FEd0MsRUFReEN1cEIsV0FSd0MsQ0FBNUMsQ0FEdUMsRUFXdkMsQ0FBQyxHQUFHNThDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUN4QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsT0FBTyxDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixVQUExQixDQUEzQixDQUFQLEdBQTJFLElBQXRHLEVBQTRHO1FBQUU7UUFBOUcsQ0FEd0MsRUFFdkN5akQsR0FBRyxDQUFDamtELFFBQUwsSUFDTyxDQUFDLEdBQUd0SSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztVQUFFdnZDLEdBQUcsRUFBRTtRQUFQLENBQTlDLEVBQTBELENBQ2pGLENBQUMsR0FBRzdLLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzl5QyxJQUFMLENBQVUwQixRQUFWLENBQW1CaWtELEdBQUcsQ0FBQ2prRCxRQUF2QixDQUEzQixJQUErRCxJQUExRixFQUFnRztRQUFFO1FBQWxHLENBRGlGLENBQTFELEVBRXhCO1FBQUc7UUFGcUIsQ0FEL0IsS0FJTyxDQUFDLEdBQUd0SSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztVQUFFdnZDLEdBQUcsRUFBRTtRQUFQLENBQTlDLEVBQTBELENBQ2pGLENBQUMsR0FBRzdLLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUEzQixJQUF1RCxJQUFsRixFQUF3RjtRQUFFO1FBQTFGLENBRGlGLENBQTFELEVBRXhCO1FBQUc7UUFGcUIsQ0FKL0IsQ0FGd0MsQ0FBNUMsQ0FYdUMsQ0FBM0MsQ0FERCxDQU42QixFQTZCN0I7UUFBRTtRQTdCMkIsQ0FBaEM7TUE4QkgsQ0EvQmdGLENBQXBELEVBK0J6QjtNQUFJO01BL0JxQixDQURpQixFQUFsRCxDQUY4QyxDQUFsRCxDQTNGRCxFQWdJQyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDc0gsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHemdELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixlQUExQixDQUEzQixJQUF5RSxRQUFwSCxFQUE4SDtNQUFFO01BQWhJLENBRDhDLEVBRTlDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN2bkIsaUJBQUwsQ0FBdUJpNkIsSUFBSSxDQUFDUixhQUE1QixDQUEzQixJQUF5RSxHQUF6RSxHQUErRSxDQUFDLEdBQUc1ckQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixVQUExQixDQUEzQixDQUExSCxFQUE2TDtNQUFFO01BQS9MLENBRjhDLENBQWxELENBaElELENBTDZCLEVBeUk3QjtNQUFFO01BekkyQixDQUFoQztJQTBJSCxDQTNJZ0YsQ0FBcEQsRUEySXpCO0lBQUk7SUEzSXFCLENBRFMsRUFBMUMsQ0FGc0MsQ0FBMUMsQ0F2RnlDLEVBd094Q3NDLElBQUksQ0FBQ3crQyxPQUFMLENBQWF6akQsTUFBYixLQUF3QixDQUF6QixJQUNPLENBQUMsR0FBR25HLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0N1RyxXQUFwQyxFQUFpRCxDQUN4RUMsV0FEd0UsRUFFeEUsQ0FBQyxHQUFHM2dELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDeUgsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHNWdELEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCb1AsaUJBQXZCLEVBQTBDO01BQ3RDbG5ELElBQUksRUFBRSxjQUFjYixNQUFkLENBQXFCeUosSUFBSSxDQUFDNUMsRUFBMUIsRUFBOEIsZ0JBQTlCLENBRGdDO01BRXRDbVksV0FBVyxFQUFFKzRCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrYSxNQUFmLENBQXNCLHNCQUF0QixDQUZ5QjtNQUd0QyxZQUFZcTNCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrYSxNQUFmLENBQXNCLGFBQXRCLEVBQXFDLGVBQXJDLENBSDBCO01BSXRDLFNBQU87SUFKK0IsQ0FBMUMsRUFLRyxJQUxILEVBS1M7SUFBRTtJQUxYLEVBS3dCLENBQUMsTUFBRCxFQUFTLGFBQVQsRUFBd0IsVUFBeEIsQ0FMeEIsQ0FEOEMsQ0FBbEQsQ0FEc0MsQ0FBMUMsQ0FGd0UsQ0FBakQsQ0FEL0IsSUFjTSxDQUFDLEdBQUdyaUIsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBdFBtQyxDQUE3QyxDQURnRCxDQUFwRCxDQUQ4QyxDQUFsRCxDQUQ4QyxFQTZQOUMsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixlQUE5QixDQTdQOEMsRUE4UDdDbnZDLElBQUksQ0FBQ3crQyxPQUFMLENBQWF6akQsTUFBYixHQUFzQixDQUF2QixJQUNPLENBQUMsR0FBR25HLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMwRyxXQUFyQyxFQUFrRCxFQUN4RSxDQUFDLEdBQUc3Z0QsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCMXhDLElBQUksQ0FBQ3crQyxPQUEzQixFQUFvQyxVQUFVcndDLElBQVYsRUFBZ0IxTyxHQUFoQixFQUFxQjtNQUN0SSxPQUFRLENBQUMsR0FBRzdLLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUM7UUFBRXR2QyxHQUFHLEVBQUVBO01BQVAsQ0FBdkMsRUFBcUQsQ0FDakYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDLElBQXZDLEVBQTZDLENBQ3pDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDMkgsV0FBckMsRUFBa0QsQ0FBQyxHQUFHOWdELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsUUFBMUIsQ0FBM0IsSUFBa0UsR0FBbEUsR0FBd0UsQ0FBQyxHQUFHOUksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ2ekMsTUFBTSxDQUFDMEQsR0FBRCxDQUFOLEdBQWMsQ0FBekMsQ0FBMUgsRUFBdUs7TUFBRTtNQUF6SyxDQURzQyxDQUExQyxDQURzQyxFQUl0QyxDQUFDLEdBQUc3SyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzRILFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRy9nRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM2SCxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdoaEQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO1FBQy9CLFNBQU8sV0FEd0I7UUFFL0J6MkMsSUFBSSxFQUFFLGNBQWNmLE1BQWQsQ0FBcUJ5SixJQUFJLENBQUM1QyxFQUExQixFQUE4QixVQUE5QixFQUEwQzdHLE1BQTFDLENBQWlENFgsSUFBSSxDQUFDL1EsRUFBdEQ7TUFGeUIsQ0FBbkMsRUFHRyxDQUFDLEdBQUd4SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzdwQixVQUFMLENBQWdCdFcsSUFBSSxDQUFDOFgsTUFBTCxDQUFZOVUsWUFBWixDQUF5QixDQUF6QixFQUE0QnRJLElBQTVDLEVBQWtELGVBQWxELENBQTNCLElBQWlHLEtBQWpHLEdBQXlHLENBQUMsR0FBR2pVLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDN3BCLFVBQUwsQ0FBZ0J0VyxJQUFJLENBQUM4WCxNQUFMLENBQVk3VSxVQUFaLENBQXVCLENBQXZCLEVBQTBCdkksSUFBMUMsRUFBZ0QsZUFBaEQsQ0FBM0IsQ0FINUcsRUFHME07TUFBRTtNQUg1TSxFQUcrTmd0QyxXQUgvTixDQUQ4QyxDQUFsRCxDQUQ4QyxFQU85QyxDQUFDLEdBQUdqaEQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDK0gsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHbGhELEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCNEYsY0FBdkIsRUFBdUM7UUFDbkNod0MsSUFBSSxFQUFFd3BDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrYSxNQUFmLENBQXNCLGNBQXRCLEVBQXNDLGVBQXRDLENBRDZCO1FBRW5DalMsSUFBSSxFQUFFLEtBRjZCO1FBR25DNU4sSUFBSSxFQUFFLGNBQWNiLE1BQWQsQ0FBcUJ5SixJQUFJLENBQUM1QyxFQUExQixFQUE4QixVQUE5QixFQUEwQzdHLE1BQTFDLENBQWlENFgsSUFBSSxDQUFDL1EsRUFBdEQsQ0FINkI7UUFJbkMsU0FBTztNQUo0QixDQUF2QyxFQUtHLElBTEgsRUFLUztNQUFFO01BTFgsRUFLd0IsQ0FBQyxNQUFELEVBQVMsTUFBVCxDQUx4QixDQUQ4QyxFQU85QyxDQUFDLEdBQUd4SSxLQUFLLENBQUNzNkMsV0FBVixFQUF1QjRGLGNBQXZCLEVBQXVDO1FBQ25DaHdDLElBQUksRUFBRXdwQyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK2EsTUFBZixDQUFzQixjQUF0QixFQUFzQyxlQUF0QyxDQUQ2QjtRQUVuQ2pTLElBQUksRUFBRSxNQUY2QjtRQUduQzVOLElBQUksRUFBRSxjQUFjYixNQUFkLENBQXFCeUosSUFBSSxDQUFDNUMsRUFBMUIsRUFBOEIsVUFBOUIsRUFBMEM3RyxNQUExQyxDQUFpRDRYLElBQUksQ0FBQy9RLEVBQXRELEVBQTBELE9BQTFEO01BSDZCLENBQXZDLEVBSUcsSUFKSCxFQUlTO01BQUU7TUFKWCxFQUl3QixDQUFDLE1BQUQsRUFBUyxNQUFULENBSnhCLENBUDhDLENBQWxELENBUDhDLENBQWxELENBRHNDLENBQTFDLENBSnNDLENBQTFDLENBRHlDLEVBNkJ6QyxDQUFDLEdBQUd4SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixjQUExQixDQUEzQixDQUExQyxFQUFpSDtNQUFFO01BQW5ILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxFQUNyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCdmpDLElBQUksQ0FBQzhYLE1BQUwsQ0FBWXhVLE1BQWxDLEVBQTBDLFVBQVVxMUMsR0FBVixFQUFlOXNELENBQWYsRUFBa0I7UUFDekksT0FBUSxDQUFDLEdBQUdwRixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1VBQ2pFdHZDLEdBQUcsRUFBRXpGLENBRDREO1VBRWpFLFNBQU8sQ0FBQyxHQUFHcEYsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxNQUFELEVBQVM7WUFDbEMsVUFBVXozQyxDQUFDLEtBQUttVSxJQUFJLENBQUM4WCxNQUFMLENBQVl4VSxNQUFaLENBQW1CMVcsTUFBbkIsR0FBNEI7VUFEVixDQUFULENBQTFCO1FBRjBELENBQXJDLEVBSzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDZ0ksV0FBckMsRUFBa0QsQ0FBQyxHQUFHbmhELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCd1gsR0FBRyxDQUFDbnlELEtBQS9CLENBQWxELEVBQXlGO1FBQUU7UUFBM0YsQ0FERCxFQUVDLENBQUMsR0FBR0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDaUksV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHcGhELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixvQkFBMUIsQ0FBM0IsSUFBOEUsS0FBekgsRUFBZ0k7UUFBRTtRQUFsSSxDQUQ4QyxFQUU5QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsRUFDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQm9WLEdBQUcsQ0FBQ3puRCxRQUExQixFQUFvQyxVQUFVdW5ELEdBQVYsRUFBZUMsQ0FBZixFQUFrQjtVQUNuSSxPQUFRLENBQUMsR0FBR2p5RCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1lBQ2pFdHZDLEdBQUcsRUFBRW9uRCxDQUQ0RDtZQUVqRSxTQUFPLENBQUMsR0FBR2p5RCxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLE1BQUQsRUFBUztjQUNsQyxVQUFVb1YsQ0FBQyxLQUFLQyxHQUFHLENBQUN6bkQsUUFBSixDQUFhdEUsTUFBYixHQUFzQjtZQURKLENBQVQsQ0FBMUI7VUFGMEQsQ0FBckMsRUFLN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsQ0FDdkMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUN2QzZZLEdBQUcsQ0FBQzkrQixTQUFMLElBQ08sQ0FBQyxHQUFHbHpCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO1lBQUV2dkMsR0FBRyxFQUFFO1VBQVAsQ0FBOUMsRUFBMEQsQ0FDakYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCc1gsR0FBRyxDQUFDOStCLFNBQS9CLENBQTNCLEVBQXNFO1VBQUU7VUFBeEUsQ0FEaUYsQ0FBMUQsRUFFeEI7VUFBRztVQUZxQixDQUQvQixLQUlPLENBQUMsR0FBR2x6QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztZQUFFdnZDLEdBQUcsRUFBRTtVQUFQLENBQTlDLEVBQTBELENBQ2pGLENBQUMsR0FBRzdLLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUEzQixDQUEzQixFQUFpRjtVQUFFO1VBQW5GLENBRGlGLENBQTFELEVBRXhCO1VBQUc7VUFGcUIsQ0FKL0IsQ0FEd0MsQ0FBNUMsQ0FEdUMsQ0FBM0MsQ0FERCxDQUw2QixFQWlCN0I7VUFBRTtVQWpCMkIsQ0FBaEM7UUFrQkgsQ0FuQmdGLENBQXBELEVBbUJ6QjtRQUFJO1FBbkJxQixDQURVLEVBQTNDLENBRjhDLENBQWxELENBRkQsRUEyQkMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2tJLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3JoRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsV0FBMUIsQ0FBM0IsSUFBcUUsS0FBaEgsRUFBdUg7UUFBRTtRQUF6SCxDQUQ4QyxFQUU5QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsRUFDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQm9WLEdBQUcsQ0FBQzdGLFNBQTFCLEVBQXFDLFVBQVVxRixHQUFWLEVBQWUvVCxDQUFmLEVBQWtCO1VBQ3BJLE9BQVEsQ0FBQyxHQUFHMzlDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7WUFDakV0dkMsR0FBRyxFQUFFOHlDLENBRDREO1lBRWpFLFNBQU8sQ0FBQyxHQUFHMzlDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsTUFBRCxFQUFTO2NBQ2xDLFVBQVVjLENBQUMsS0FBS3VVLEdBQUcsQ0FBQzdGLFNBQUosQ0FBY2xtRCxNQUFkLEdBQXVCO1lBREwsQ0FBVCxDQUExQjtVQUYwRCxDQUFyQyxFQUs3QixDQUNDLENBQUMsR0FBR25HLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUN2Q3VZLEdBQUcsQ0FBQzlvRCxJQUFMLElBQ08sQ0FBQyxHQUFHNUksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEM7WUFBRXZ2QyxHQUFHLEVBQUU7VUFBUCxDQUE5QyxFQUEwRCxDQUNqRixDQUFDLEdBQUc3SyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJnWCxHQUFHLENBQUM5b0QsSUFBL0IsQ0FBM0IsRUFBaUU7VUFBRTtVQUFuRSxDQURpRixDQUExRCxFQUV4QjtVQUFHO1VBRnFCLENBRC9CLEtBSU8sQ0FBQyxHQUFHNUksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEM7WUFBRXZ2QyxHQUFHLEVBQUU7VUFBUCxDQUE5QyxFQUEwRCxDQUNqRixDQUFDLEdBQUc3SyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBM0IsQ0FBM0IsRUFBaUY7VUFBRTtVQUFuRixDQURpRixDQUExRCxFQUV4QjtVQUFHO1VBRnFCLENBSi9CLENBRHdDLENBQTVDLENBREQsRUFVQyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQ3ZDdVksR0FBRyxDQUFDM3hELEtBQUwsSUFDTyxDQUFDLEdBQUdDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO1lBQUV2dkMsR0FBRyxFQUFFO1VBQVAsQ0FBOUMsRUFBMEQsQ0FDakYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsT0FBTyxDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJnWCxHQUFHLENBQUMzeEQsS0FBL0IsQ0FBUCxHQUErQyxJQUExRSxFQUFnRjtVQUFFO1VBQWxGLENBRGlGLENBQTFELEVBRXhCO1VBQUc7VUFGcUIsQ0FEL0IsS0FJTyxDQUFDLEdBQUdDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO1lBQUV2dkMsR0FBRyxFQUFFO1VBQVAsQ0FBOUMsRUFBMEQsQ0FDakYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsT0FBTyxDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBM0IsQ0FBUCxHQUE4RCxJQUF6RixFQUErRjtVQUFFO1VBQWpHLENBRGlGLENBQTFELEVBRXhCO1VBQUc7VUFGcUIsQ0FKL0IsQ0FEd0MsQ0FBNUMsQ0FWRCxDQUw2QixFQXdCN0I7VUFBRTtVQXhCMkIsQ0FBaEM7UUF5QkgsQ0ExQmdGLENBQXBELEVBMEJ6QjtRQUFJO1FBMUJxQixDQURVLEVBQTNDLENBRjhDLENBQWxELENBM0JELEVBMkRDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNtSSxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd0aEQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFNBQTFCLENBQTNCLElBQW1FLEtBQTlHLEVBQXFIO1FBQUU7UUFBdkgsQ0FEOEMsRUFFOUMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLEVBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JvVixHQUFHLENBQUM1RixPQUFKLENBQVksQ0FBWixFQUFlaHdDLFNBQXJDLEVBQWdELFVBQVVpd0MsR0FBVixFQUFlL0gsQ0FBZixFQUFrQjtVQUMvSSxPQUFRLENBQUMsR0FBR3hrRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1lBQ2pFdHZDLEdBQUcsRUFBRTI1QyxDQUQ0RDtZQUVqRSxTQUFPLENBQUMsR0FBR3hrRCxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLE1BQUQsRUFBUztjQUNsQyxVQUFVMkgsQ0FBQyxLQUFLME4sR0FBRyxDQUFDNUYsT0FBSixDQUFZbm1ELE1BQVosR0FBcUI7WUFESCxDQUFULENBQTFCO1VBRjBELENBQXJDLEVBSzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FDdkNvVCxHQUFHLENBQUNqd0MsU0FBTCxJQUNPLENBQUMsR0FBR3RjLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO1lBQUV2dkMsR0FBRyxFQUFFO1VBQVAsQ0FBOUMsRUFBMEQsQ0FDakYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCNlIsR0FBRyxDQUFDandDLFNBQS9CLENBQTNCLEVBQXNFO1VBQUU7VUFBeEUsQ0FEaUYsQ0FBMUQsRUFFeEI7VUFBRztVQUZxQixDQUQvQixLQUlPLENBQUMsR0FBR3RjLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO1lBQUV2dkMsR0FBRyxFQUFFO1VBQVAsQ0FBOUMsRUFBMEQsQ0FDakYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQTNCLENBQTNCLEVBQWlGO1VBQUU7VUFBbkYsQ0FEaUYsQ0FBMUQsRUFFeEI7VUFBRztVQUZxQixDQUovQixDQUR3QyxFQVF4Q2t1QixXQVJ3QyxDQUE1QyxDQUR1QyxFQVd2QyxDQUFDLEdBQUd2aEQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQ3hDLENBQUMsR0FBR241QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixRQUFRLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFVBQTFCLENBQTNCLENBQVIsR0FBNEUsSUFBdkcsRUFBNkc7VUFBRTtVQUEvRyxDQUR3QyxFQUV2Q3lqRCxHQUFHLENBQUNqa0QsUUFBTCxJQUNPLENBQUMsR0FBR3RJLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO1lBQUV2dkMsR0FBRyxFQUFFO1VBQVAsQ0FBOUMsRUFBMEQsQ0FDakYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDOXlDLElBQUwsQ0FBVTBCLFFBQVYsQ0FBbUJpa0QsR0FBRyxDQUFDamtELFFBQXZCLENBQTNCLElBQStELElBQTFGLEVBQWdHO1VBQUU7VUFBbEcsQ0FEaUYsQ0FBMUQsRUFFeEI7VUFBRztVQUZxQixDQUQvQixLQUlPLENBQUMsR0FBR3RJLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO1lBQUV2dkMsR0FBRyxFQUFFO1VBQVAsQ0FBOUMsRUFBMEQsQ0FDakYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQTNCLElBQXVELEtBQWxGLEVBQXlGO1VBQUU7VUFBM0YsQ0FEaUYsQ0FBMUQsRUFFeEI7VUFBRztVQUZxQixDQUovQixDQUZ3QyxDQUE1QyxDQVh1QyxDQUEzQyxDQURELENBTDZCLEVBNEI3QjtVQUFFO1VBNUIyQixDQUFoQztRQTZCSCxDQTlCZ0YsQ0FBcEQsRUE4QnpCO1FBQUk7UUE5QnFCLENBRFUsRUFBM0MsQ0FGOEMsQ0FBbEQsQ0EzREQsQ0FMNkIsRUFvRzdCO1FBQUU7UUFwRzJCLENBQWhDO01BcUdILENBdEdnRixDQUFwRCxFQXNHekI7TUFBSTtNQXRHcUIsQ0FEUyxFQUExQyxDQUZzQyxDQUExQyxDQTdCeUMsRUF5SXpDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixjQUExQixDQUEzQixDQUExQyxFQUFpSDtNQUFFO01BQW5ILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxFQUNyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCdmpDLElBQUksQ0FBQzhYLE1BQUwsQ0FBWWtnQyxNQUFsQyxFQUEwQyxVQUFVVyxHQUFWLEVBQWU5c0QsQ0FBZixFQUFrQjtRQUN6SSxPQUFRLENBQUMsR0FBR3BGLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7VUFDakV0dkMsR0FBRyxFQUFFekYsQ0FENEQ7VUFFakUsU0FBTyxDQUFDLEdBQUdwRixLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLE1BQUQsRUFBUztZQUNsQyxVQUFVejNDLENBQUMsS0FBS21VLElBQUksQ0FBQzhYLE1BQUwsQ0FBWWtnQyxNQUFaLENBQW1CcHJELE1BQW5CLEdBQTRCO1VBRFYsQ0FBVCxDQUExQjtRQUYwRCxDQUFyQyxFQUs3QixDQUNDLENBQUMsR0FBR25HLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3FJLFdBQXJDLEVBQWtELENBQUMsR0FBR3hoRCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQndYLEdBQUcsQ0FBQ255RCxLQUEvQixDQUFsRCxFQUF5RjtRQUFFO1FBQTNGLENBREQsRUFFQyxDQUFDLEdBQUdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3NJLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3poRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsb0JBQTFCLENBQTNCLElBQThFLEtBQXpILEVBQWdJO1FBQUU7UUFBbEksQ0FEOEMsRUFFOUMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLEVBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JvVixHQUFHLENBQUN6bkQsUUFBMUIsRUFBb0MsVUFBVXVuRCxHQUFWLEVBQWVDLENBQWYsRUFBa0I7VUFDbkksT0FBUSxDQUFDLEdBQUdqeUQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztZQUNqRXR2QyxHQUFHLEVBQUVvbkQsQ0FENEQ7WUFFakUsU0FBTyxDQUFDLEdBQUdqeUQsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxNQUFELEVBQVM7Y0FDbEMsVUFBVW9WLENBQUMsS0FBS0MsR0FBRyxDQUFDem5ELFFBQUosQ0FBYXRFLE1BQWIsR0FBc0I7WUFESixDQUFULENBQTFCO1VBRjBELENBQXJDLEVBSzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FDdkM2WSxHQUFHLENBQUM5K0IsU0FBTCxJQUNPLENBQUMsR0FBR2x6QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztZQUFFdnZDLEdBQUcsRUFBRTtVQUFQLENBQTlDLEVBQTBELENBQ2pGLENBQUMsR0FBRzdLLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnNYLEdBQUcsQ0FBQzkrQixTQUEvQixDQUEzQixFQUFzRTtVQUFFO1VBQXhFLENBRGlGLENBQTFELEVBRXhCO1VBQUc7VUFGcUIsQ0FEL0IsS0FJTyxDQUFDLEdBQUdsekIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEM7WUFBRXZ2QyxHQUFHLEVBQUU7VUFBUCxDQUE5QyxFQUEwRCxDQUNqRixDQUFDLEdBQUc3SyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBM0IsQ0FBM0IsRUFBaUY7VUFBRTtVQUFuRixDQURpRixDQUExRCxFQUV4QjtVQUFHO1VBRnFCLENBSi9CLENBRHdDLENBQTVDLENBRHVDLENBQTNDLENBREQsQ0FMNkIsRUFpQjdCO1VBQUU7VUFqQjJCLENBQWhDO1FBa0JILENBbkJnRixDQUFwRCxFQW1CekI7UUFBSTtRQW5CcUIsQ0FEVSxFQUEzQyxDQUY4QyxDQUFsRCxDQUZELEVBMkJDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN1SSxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUcxaEQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFdBQTFCLENBQTNCLElBQXFFLEtBQWhILEVBQXVIO1FBQUU7UUFBekgsQ0FEOEMsRUFFOUMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLEVBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JvVixHQUFHLENBQUM3RixTQUExQixFQUFxQyxVQUFVcUYsR0FBVixFQUFlL1QsQ0FBZixFQUFrQjtVQUNwSSxPQUFRLENBQUMsR0FBRzM5QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1lBQ2pFdHZDLEdBQUcsRUFBRTh5QyxDQUQ0RDtZQUVqRSxTQUFPLENBQUMsR0FBRzM5QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLE1BQUQsRUFBUztjQUNsQyxVQUFVYyxDQUFDLEtBQUt1VSxHQUFHLENBQUM3RixTQUFKLENBQWNsbUQsTUFBZCxHQUF1QjtZQURMLENBQVQsQ0FBMUI7VUFGMEQsQ0FBckMsRUFLN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FDdkN1WSxHQUFHLENBQUM5b0QsSUFBTCxJQUNPLENBQUMsR0FBRzVJLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO1lBQUV2dkMsR0FBRyxFQUFFO1VBQVAsQ0FBOUMsRUFBMEQsQ0FDakYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCZ1gsR0FBRyxDQUFDOW9ELElBQS9CLENBQTNCLEVBQWlFO1VBQUU7VUFBbkUsQ0FEaUYsQ0FBMUQsRUFFeEI7VUFBRztVQUZxQixDQUQvQixLQUlPLENBQUMsR0FBRzVJLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO1lBQUV2dkMsR0FBRyxFQUFFO1VBQVAsQ0FBOUMsRUFBMEQsQ0FDakYsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQTNCLENBQTNCLEVBQWlGO1VBQUU7VUFBbkYsQ0FEaUYsQ0FBMUQsRUFFeEI7VUFBRztVQUZxQixDQUovQixDQUR3QyxDQUE1QyxDQURELEVBVUMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUN2Q3VZLEdBQUcsQ0FBQzN4RCxLQUFMLElBQ08sQ0FBQyxHQUFHQyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztZQUFFdnZDLEdBQUcsRUFBRTtVQUFQLENBQTlDLEVBQTBELENBQ2pGLENBQUMsR0FBRzdLLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLE9BQU8sQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCZ1gsR0FBRyxDQUFDM3hELEtBQS9CLENBQVAsR0FBK0MsSUFBMUUsRUFBZ0Y7VUFBRTtVQUFsRixDQURpRixDQUExRCxFQUV4QjtVQUFHO1VBRnFCLENBRC9CLEtBSU8sQ0FBQyxHQUFHQyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztZQUFFdnZDLEdBQUcsRUFBRTtVQUFQLENBQTlDLEVBQTBELENBQ2pGLENBQUMsR0FBRzdLLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLE9BQU8sQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQTNCLENBQVAsR0FBOEQsSUFBekYsRUFBK0Y7VUFBRTtVQUFqRyxDQURpRixDQUExRCxFQUV4QjtVQUFHO1VBRnFCLENBSi9CLENBRHdDLENBQTVDLENBVkQsQ0FMNkIsRUF3QjdCO1VBQUU7VUF4QjJCLENBQWhDO1FBeUJILENBMUJnRixDQUFwRCxFQTBCekI7UUFBSTtRQTFCcUIsQ0FEVSxFQUEzQyxDQUY4QyxDQUFsRCxDQTNCRCxFQTJEQyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDd0ksV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHM2hELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixTQUExQixDQUEzQixJQUFtRSxLQUE5RyxFQUFxSDtRQUFFO1FBQXZILENBRDhDLEVBRTlDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxFQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCb1YsR0FBRyxDQUFDNUYsT0FBSixDQUFZLENBQVosRUFBZWh3QyxTQUFyQyxFQUFnRCxVQUFVaXdDLEdBQVYsRUFBZS9ILENBQWYsRUFBa0I7VUFDL0ksT0FBUSxDQUFDLEdBQUd4a0QsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztZQUNqRXR2QyxHQUFHLEVBQUUyNUMsQ0FENEQ7WUFFakUsU0FBTyxDQUFDLEdBQUd4a0QsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxNQUFELEVBQVM7Y0FDbEMsVUFBVTJILENBQUMsS0FBSzBOLEdBQUcsQ0FBQzVGLE9BQUosQ0FBWW5tRCxNQUFaLEdBQXFCO1lBREgsQ0FBVCxDQUExQjtVQUYwRCxDQUFyQyxFQUs3QixDQUNDLENBQUMsR0FBR25HLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN2QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQ3ZDb1QsR0FBRyxDQUFDandDLFNBQUwsSUFDTyxDQUFDLEdBQUd0YyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztZQUFFdnZDLEdBQUcsRUFBRTtVQUFQLENBQTlDLEVBQTBELENBQ2pGLENBQUMsR0FBRzdLLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQjZSLEdBQUcsQ0FBQ2p3QyxTQUEvQixDQUEzQixFQUFzRTtVQUFFO1VBQXhFLENBRGlGLENBQTFELEVBRXhCO1VBQUc7VUFGcUIsQ0FEL0IsS0FJTyxDQUFDLEdBQUd0YyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztZQUFFdnZDLEdBQUcsRUFBRTtVQUFQLENBQTlDLEVBQTBELENBQ2pGLENBQUMsR0FBRzdLLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUEzQixDQUEzQixFQUFpRjtVQUFFO1VBQW5GLENBRGlGLENBQTFELEVBRXhCO1VBQUc7VUFGcUIsQ0FKL0IsQ0FEd0MsRUFReEN1dUIsV0FSd0MsQ0FBNUMsQ0FEdUMsRUFXdkMsQ0FBQyxHQUFHNWhELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUN4QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsUUFBUSxDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixVQUExQixDQUEzQixDQUFSLEdBQTRFLElBQXZHLEVBQTZHO1VBQUU7VUFBL0csQ0FEd0MsRUFFdkN5akQsR0FBRyxDQUFDamtELFFBQUwsSUFDTyxDQUFDLEdBQUd0SSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztZQUFFdnZDLEdBQUcsRUFBRTtVQUFQLENBQTlDLEVBQTBELENBQ2pGLENBQUMsR0FBRzdLLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzl5QyxJQUFMLENBQVUwQixRQUFWLENBQW1CaWtELEdBQUcsQ0FBQ2prRCxRQUF2QixDQUEzQixJQUErRCxJQUExRixFQUFnRztVQUFFO1VBQWxHLENBRGlGLENBQTFELEVBRXhCO1VBQUc7VUFGcUIsQ0FEL0IsS0FJTyxDQUFDLEdBQUd0SSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztZQUFFdnZDLEdBQUcsRUFBRTtVQUFQLENBQTlDLEVBQTBELENBQ2pGLENBQUMsR0FBRzdLLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUEzQixJQUF1RCxLQUFsRixFQUF5RjtVQUFFO1VBQTNGLENBRGlGLENBQTFELEVBRXhCO1VBQUc7VUFGcUIsQ0FKL0IsQ0FGd0MsQ0FBNUMsQ0FYdUMsQ0FBM0MsQ0FERCxDQUw2QixFQTRCN0I7VUFBRTtVQTVCMkIsQ0FBaEM7UUE2QkgsQ0E5QmdGLENBQXBELEVBOEJ6QjtRQUFJO1FBOUJxQixDQURVLEVBQTNDLENBRjhDLENBQWxELENBM0RELENBTDZCLEVBb0c3QjtRQUFFO1FBcEcyQixDQUFoQztNQXFHSCxDQXRHZ0YsQ0FBcEQsRUFzR3pCO01BQUk7TUF0R3FCLENBRFMsRUFBMUMsQ0FGc0MsQ0FBMUMsQ0F6SXlDLENBQTdDLENBRGlGLENBQXJELENBQWhDO0lBd1BILENBelBnRixDQUFwRCxFQXlQekI7SUFBSTtJQXpQcUIsQ0FENEMsRUFBbEQsQ0FEL0IsSUE2UE0sQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQTNmd0MsQ0FBbEQsQ0E5QjhDLENBQWxELENBRDhDLENBQWxELENBRHVGLEVBK2hCdEZvUixFQUFFLElBQUlqUyxJQUFJLENBQUNsb0IsYUFBTCxDQUFtQnJyQixNQUFuQixHQUE0QixDQUFuQyxJQUNPLENBQUMsR0FBR25HLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMwSCxXQUFyQyxDQUQvQixJQUVNLENBQUMsR0FBRzdoRCxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FqaUJpRixDQUEzRCxFQWtpQjdCO0lBQUc7SUFsaUIwQixDQUFoQztFQW1pQkgsQ0FwaUJnRixDQUFwRCxFQW9pQnpCO0VBQUk7RUFwaUJxQixDQURpQixFQUFsRCxDQTNDNkMsQ0FBakQsQ0FENkUsQ0FBakQsQ0FBaEM7QUFxbEJIOztBQUNEejZDLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDbnFCYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRyxDQUFDLE1BQUQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRXZ1QyxHQUFHLEVBQUU7QUFBUCxDQUFqQjs7QUFDQSxTQUFTaXVDLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsT0FBUSxDQUFDLEdBQUcvNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCcEQsSUFBSSxDQUFDamYsYUFBM0IsRUFBMEMsVUFBVXo1QixHQUFWLEVBQWVrNkIsQ0FBZixFQUFrQjtJQUNoSixPQUFRLENBQUMsR0FBR2w3QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pFdHZDLEdBQUcsRUFBRXF3QixDQUQ0RDtNQUVqRSxTQUFPLENBQUMsR0FBR2w3QixLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLHNCQUFELEVBQXlCO1FBQUUsUUFBUTExQyxNQUFNLENBQUMrekIsQ0FBRCxDQUFOLEtBQWN3ZSxJQUFJLENBQUNuM0MsSUFBTCxDQUFVNEQsTUFBVixHQUFtQjtNQUEzQyxDQUF6QixDQUExQjtJQUYwRCxDQUFyQyxFQUc3QixDQUNDLENBQUMsR0FBR25HLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0osVUFBckMsRUFBaUQsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDOXlDLElBQUwsQ0FBVTVGLEdBQUcsQ0FBQzZrRCxVQUFkLENBQTNCLENBQWpELEVBQXdHO0lBQUU7SUFBMUcsQ0FERCxFQUVDLENBQUMsR0FBRzdsRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2g1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUNGLFVBQXZDLEVBQW1ELENBQy9DLENBQUMsR0FBR2o1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMsSUFBdkMsRUFBNkMsQ0FDekMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLE1BQTFCLENBQTNCLENBQTFDLEVBQXlHO0lBQUU7SUFBM0csQ0FEc0MsRUFFdEMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQjE1QyxHQUFHLENBQUNpN0IsSUFBL0IsQ0FBMUMsRUFBZ0Y7SUFBRTtJQUFsRixDQUZzQyxDQUExQyxDQUR5QyxFQUt6QyxDQUFDLEdBQUdqOEIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsZ0JBQTFCLENBQTNCLENBQTFDLEVBQW1IO0lBQUU7SUFBckgsQ0FEc0MsRUFFdEMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3JDbjRDLEdBQUcsQ0FBQzhrRCxjQUFMLElBQ08sQ0FBQyxHQUFHOWxELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7TUFDMUR0dkMsR0FBRyxFQUFFLENBRHFEO01BRTFEZ1MsTUFBTSxFQUFFLFFBRmtEO01BRzFEbmEsSUFBSSxFQUFFMUIsR0FBRyxDQUFDOGtEO0lBSGdELENBQW5DLEVBSXhCLENBQUMsR0FBRzlsRCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQjE1QyxHQUFHLENBQUM4a0QsY0FBL0IsQ0FKd0IsRUFJd0I7SUFBRTtJQUoxQixFQUk2QzVNLFVBSjdDLENBRC9CLEtBTU8sQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NmLFVBQXRDLEVBQWtELENBQUMsR0FBR3A1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUEzQixDQUFsRCxFQUF3RztJQUFFO0lBQTFHLENBTi9CLENBRHNDLENBQTFDLENBRnNDLENBQTFDLENBTHlDLENBQTdDLENBRCtDLENBQW5ELENBRDZDLENBQWpELENBRkQsQ0FINkIsRUEyQjdCO0lBQUU7SUEzQjJCLENBQWhDO0VBNEJILENBN0J1RixDQUFwRCxFQTZCaEM7RUFBSTtFQTdCNEIsQ0FBcEM7QUE4Qkg7O0FBQ0R2ekIsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUN6Q2E7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7O0FBQ0EsU0FBU0QsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJcDVDLEVBQUo7O0VBQ0EsT0FBUSxDQUFDLEdBQUdYLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNwQixVQUFyQyxFQUFpRCxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQy81QyxFQUFFLEdBQUcrNEMsSUFBSSxDQUFDOXlDLElBQUwsQ0FBVTh5QyxJQUFJLENBQUNoZixRQUFmLENBQU4sTUFBb0MsSUFBcEMsSUFBNEMvNUIsRUFBRSxLQUFLLEtBQUssQ0FBeEQsR0FBNERBLEVBQTVELEdBQWlFKzRDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUE1RixDQUFqRCxFQUF3SztFQUFFO0VBQTFLLENBQWhDO0FBQ0g7O0FBQ0R2ekIsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUNUYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjs7QUFDQSxTQUFTRixNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELE9BQVEsQ0FBQyxHQUFHLzVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnBELElBQUksQ0FBQy9lLE1BQUwsQ0FBWSxDQUFaLEVBQWVyZSxTQUFyQyxFQUFnRCxVQUFVbFIsSUFBVixFQUFnQmlFLENBQWhCLEVBQW1CO0lBQ3ZKLE9BQVEsQ0FBQyxHQUFHclAsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqRXR2QyxHQUFHLEVBQUV3RSxDQUQ0RDtNQUVqRSxTQUFPLENBQUMsR0FBR3JQLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsZUFBRCxFQUFrQjtRQUMzQyxRQUFReHRDLENBQUMsS0FBS3pQLE1BQU0sQ0FBQzBQLElBQVAsQ0FBWW9xQyxJQUFJLENBQUMvZSxNQUFMLENBQVksQ0FBWixFQUFlcmUsU0FBM0IsRUFBc0NuVyxNQUF0QyxHQUErQztNQURsQixDQUFsQixDQUExQjtJQUYwRCxDQUFyQyxFQUs3QixDQUNDLENBQUMsR0FBR25HLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0osVUFBckMsRUFBaUQsT0FBTyxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlb0IsT0FBZixDQUF1QixVQUF2QixDQUEzQixDQUFQLEdBQXdFLElBQXhFLEdBQStFLENBQUMsR0FBRzFJLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDOXlDLElBQUwsQ0FBVXdFLElBQUksQ0FBQzlDLFFBQWYsQ0FBM0IsQ0FBL0UsR0FBc0ksSUFBdkwsRUFBNkw7SUFBRTtJQUEvTCxDQURELEVBRUMsQ0FBQyxHQUFHdEksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSCxVQUFyQyxFQUFpRCxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ0dkMsSUFBSSxDQUFDa1IsU0FBaEMsQ0FBakQsRUFBNkY7SUFBRTtJQUEvRixDQUZELENBTDZCLEVBUTdCO0lBQUU7SUFSMkIsQ0FBaEM7RUFTSCxDQVZ1RixDQUFwRCxFQVVoQztFQUFJO0VBVjRCLENBQXBDO0FBV0g7O0FBQ0R4YyxjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ25CYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlFLFVBQVUsR0FBRyxDQUFDLE1BQUQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxNQUFELENBQWxCO0FBQ0EsSUFBSXVCLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxJQUFJQyxXQUFXLEdBQUcsYUFBYyxDQUFDLEdBQUdqN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLElBQTNDLEVBQWlELENBQUM7QUFBRTtBQUFwRCxDQUFoQzs7QUFDQSxJQUFJK0IsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLFNBQVNwQyxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELElBQUlDLGtCQUFrQixHQUFHLENBQUMsR0FBR2g2QyxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsU0FBNUIsQ0FBekI7O0VBQ0EsSUFBSW9JLGdCQUFnQixHQUFHLENBQUMsR0FBR3JpRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsT0FBNUIsQ0FBdkI7O0VBQ0EsSUFBSWlHLGNBQWMsR0FBRyxDQUFDLEdBQUdsZ0QsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLEtBQTVCLENBQXJCOztFQUNBLElBQUkwSixvQkFBb0IsR0FBRyxDQUFDLEdBQUczakQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFdBQTVCLENBQTNCOztFQUNBLElBQUlrWSw2QkFBNkIsR0FBRyxDQUFDLEdBQUdueUQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLG9CQUE1QixDQUFwQzs7RUFDQSxJQUFJaUosd0JBQXdCLEdBQUcsQ0FBQyxHQUFHbGpELEtBQUssQ0FBQ2lqRCxnQkFBVixFQUE0QixlQUE1QixDQUEvQjs7RUFDQSxPQUFRLENBQUMsR0FBR2pqRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcEIsVUFBckMsRUFBaUQsQ0FDNUVXLElBQUksQ0FBQzd4QyxXQUFOLElBQ08sQ0FBQyxHQUFHN0gsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUM1RHR2QyxHQUFHLEVBQUUsQ0FEdUQ7SUFFNUQsU0FBTyxtRUFGcUQ7SUFHNUR3dkMsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FDbkIsWUFBWTtNQUNSRCxJQUFJLENBQUM3eEMsV0FBTCxHQUFtQixDQUFDNnhDLElBQUksQ0FBQzd4QyxXQUF6QjtJQUNILENBSEk7RUFIbUQsQ0FBckMsQ0FEL0IsSUFTTSxDQUFDLEdBQUc3SCxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FWdUUsRUFXNUViLElBQUksQ0FBQzd4QyxXQUFOLElBQ08sQ0FBQyxHQUFHN0gsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUM1RHR2QyxHQUFHLEVBQUUsQ0FEdUQ7SUFFNUQsU0FBTyw4QkFGcUQ7SUFHNUR3dkMsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FDbkIsWUFBWTtNQUNSRCxJQUFJLENBQUM3eEMsV0FBTCxHQUFtQixDQUFDNnhDLElBQUksQ0FBQzd4QyxXQUF6QjtJQUNILENBSEk7RUFIbUQsQ0FBckMsRUFPeEIsQ0FDQyxDQUFDLEdBQUc3SCxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDNXBDLElBQUksRUFBRSxTQURpQztJQUV2QyxTQUFPO0VBRmdDLENBQTNDLENBREQsQ0FQd0IsQ0FEL0IsSUFjTSxDQUFDLEdBQUdwUSxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0F6QnVFLEVBMEI3RSxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJxSixvQkFBdkIsRUFBNkM7SUFDekMsbUJBQW1CakssSUFBSSxDQUFDL3NDLGNBRGlCO0lBRXpDdUwsS0FBSyxFQUFFLEdBQUd2VyxNQUFILENBQVUrM0MsSUFBSSxDQUFDM2UsZUFBTCxDQUFxQjdILFNBQXJCLElBQWtDd21CLElBQUksQ0FBQzNlLGVBQUwsQ0FBcUI3SCxTQUFyQixLQUFtQyxFQUFyRSxHQUNYd21CLElBQUksQ0FBQzNlLGVBQUwsQ0FBcUI3SCxTQURWLEdBRVh3bUIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsVUFBMUIsQ0FGQyxFQUVzQyxLQUZ0QyxFQUU2Q25ILE1BRjdDLENBRW9EKzNDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLG9CQUExQixDQUZwRCxDQUZrQztJQUt6QyxhQUFhLEdBQUduSCxNQUFILENBQVUrM0MsSUFBSSxDQUFDOW5CLFlBQWYsRUFBNkIsY0FBN0I7RUFMNEIsQ0FBN0MsRUFNRztJQUNDLFdBQVMsQ0FBQyxHQUFHNXhCLEtBQUssQ0FBQzQ2QyxPQUFWLEVBQW1CLFlBQVk7TUFBRSxPQUFPLENBQzdDLENBQUMsR0FBRzU2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQzVDVSxJQUFJLENBQUM5aUMsU0FBTCxDQUFlMUksVUFBaEIsSUFDTyxDQUFDLEdBQUdsTyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUIwSCxnQkFBdkIsRUFBeUM7UUFDaEV4M0MsR0FBRyxFQUFFLENBRDJEO1FBRWhFckIsT0FBTyxFQUFFa3dDLElBQUksQ0FBQzlpQyxTQUFMLENBQWVwTixPQUZ3QztRQUdoRTVDLElBQUksRUFBRTh5QyxJQUFJLENBQUM5aUMsU0FBTCxDQUFlaFEsSUFIMkM7UUFJaEUsU0FBTztNQUp5RCxDQUF6QyxFQUt4QixJQUx3QixFQUtsQjtNQUFFO01BTGdCLEVBS0gsQ0FBQyxTQUFELEVBQVksTUFBWixDQUxHLENBRC9CLElBT00sQ0FBQyxHQUFHNUcsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBUnVDLEVBUzdDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QjRGLGNBQXZCLEVBQXVDO1FBQ25DaHdDLElBQUksRUFBRXdwQyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK2EsTUFBZixDQUFzQixjQUF0QixFQUFzQyxvQkFBdEMsQ0FENkI7UUFFbkM3ZixJQUFJLEVBQUUsR0FBR2IsTUFBSCxDQUFVKzNDLElBQUksQ0FBQzluQixZQUFmLEVBQTZCLGVBQTdCLEVBQThDandCLE1BQTlDLENBQXFEKzNDLElBQUksQ0FBQzVlLFdBQUwsQ0FBaUJ0eUIsRUFBdEUsRUFBMEUsT0FBMUUsQ0FGNkI7UUFHbkM0SCxJQUFJLEVBQUU7TUFINkIsQ0FBdkMsRUFJRyxJQUpILEVBSVM7TUFBRTtNQUpYLEVBSXdCLENBQUMsTUFBRCxFQUFTLE1BQVQsQ0FKeEIsQ0FUNkMsQ0FBakQsQ0FENkMsQ0FBUDtJQWdCdEMsQ0FoQkssQ0FEVjtJQWtCQ25MLENBQUMsRUFBRTtJQUFFOztFQWxCTixDQU5ILEVBeUJHO0VBQUU7RUF6QkwsRUF5QmtCLENBQUMsaUJBQUQsRUFBb0IsT0FBcEIsRUFBNkIsV0FBN0IsQ0F6QmxCLENBMUI2RSxFQW9EN0UsQ0FBQyxHQUFHakYsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQ2pDLFNBQU8sbUJBRDBCO0lBRWpDa0IsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FDbkIsWUFBWTtNQUNSRCxJQUFJLENBQUM3eEMsV0FBTCxHQUFtQixDQUFDNnhDLElBQUksQ0FBQzd4QyxXQUF6QjtJQUNILENBSEk7RUFGd0IsQ0FBckMsRUFNRyxDQUNDLENBQUMsR0FBRzdILEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkM1cEMsSUFBSSxFQUFFLFNBRGlDO0lBRXZDLFNBQU87RUFGZ0MsQ0FBM0MsQ0FERCxDQU5ILENBcEQ2RSxFQWdFN0UsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDO0lBQ25DLFNBQU8sQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQzdCbkQsSUFBSSxDQUFDN3hDLFdBQUwsR0FDTSxLQUFLbEcsTUFBTCxDQUFZKzNDLElBQUksQ0FBQzd3QixZQUFMLEdBQ1IsbUNBRFEsR0FFUixxQkFGSixFQUUyQixvQkFGM0IsQ0FETixHQUlNLEdBQUdsbkIsTUFBSCxDQUFVKzNDLElBQUksQ0FBQzd3QixZQUFMLEdBQ04sbUNBRE0sR0FFTixxQkFGSixFQUUyQixzQkFGM0IsQ0FMdUIsRUFRN0IsbUdBUjZCLENBQTFCO0VBRDRCLENBQXZDLEVBV0csQ0FDQyxDQUFDLEdBQUc3b0IsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRixVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DRCxVQUFwQyxFQUFnRCxFQUMzQyxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCcEQsSUFBSSxDQUFDM2UsZUFBM0IsRUFBNEMsVUFBVTJ3QixLQUFWLEVBQWlCeHdCLENBQWpCLEVBQW9CeXdCLEVBQXBCLEVBQXdCO0lBQ2pKLE9BQVEsQ0FBQyxHQUFHM3JELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7TUFBRXR2QyxHQUFHLEVBQUU4Z0Q7SUFBUCxDQUFwQyxFQUFpRCxDQUM3RSxDQUFDLEdBQUczckQsS0FBSyxDQUFDbTlDLGNBQVYsR0FBMkIsQ0FBQyxHQUFHbjlDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7TUFDbEZ6M0MsSUFBSSxFQUFFLElBQUlmLE1BQUosQ0FBV3dPLE1BQU0sQ0FBQytxQixDQUFELENBQWpCLENBRDRFO01BRWxGLFNBQU8sQ0FBQyxHQUFHbDdCLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCbkQsSUFBSSxDQUFDbm9CLFdBQS9CO0lBRjJFLENBQW5DLEVBR2hELENBQ0Vtb0IsSUFBSSxDQUFDemUsZUFBTCxDQUFxQkMsQ0FBckIsQ0FBRCxJQUNPLENBQUMsR0FBR2w3QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJYLGtCQUF2QixFQUEyQztNQUNsRW52QyxHQUFHLEVBQUUsQ0FENkQ7TUFFbEV1RixJQUFJLEVBQUUsTUFGNEQ7TUFHbEUsU0FBTztJQUgyRCxDQUEzQyxDQUQvQixJQU1NLENBQUMsR0FBR3BRLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQVBQLEVBUUMsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztNQUNsQyxTQUFPLENBQUMsR0FBR241QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQm5ELElBQUksQ0FBQ3plLGVBQUwsQ0FBcUJDLENBQXJCLElBQTBCLEVBQTFCLEdBQStCLE1BQXpEO0lBRDJCLENBQXRDLEVBRUcsQ0FBQyxHQUFHbDdCLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCeGYsQ0FBM0IsQ0FGSCxFQUVrQztJQUFFO0lBRnBDLENBUkQsQ0FIZ0QsRUFjaEQ7SUFBRztJQWQ2QyxFQWN6QmtlLFVBZHlCLENBQW5ELEdBY3dDLENBQ3BDLENBQUM4Six3QkFBRCxDQURvQyxDQWR4QyxDQUQ2RSxDQUFqRCxDQUFoQztFQW1CSCxDQXBCZ0YsQ0FBcEQsRUFvQnpCO0VBQUk7RUFwQnFCLENBRGUsRUFBaEQsQ0FENkMsQ0FBakQsQ0FERCxDQVhILEVBcUNHO0VBQUU7RUFyQ0wsQ0FoRTZFLEVBc0c3RSxDQUFDLEdBQUdsakQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRSxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdyNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDRyxVQUF2QyxFQUFtRCxDQUMvQyxDQUFDLEdBQUd0NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSSxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd2NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DSyxVQUFwQyxFQUFnRCxFQUMzQyxDQUFDLEdBQUd4NUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCcEQsSUFBSSxDQUFDM2UsZUFBM0IsRUFBNEMsVUFBVTJ3QixLQUFWLEVBQWlCeHdCLENBQWpCLEVBQW9CeXdCLEVBQXBCLEVBQXdCO0lBQ2pKLElBQUlockQsRUFBSjs7SUFDQSxPQUFRLENBQUMsR0FBR1gsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztNQUFFdHZDLEdBQUcsRUFBRThnRDtJQUFQLENBQXBDLEVBQWlELENBQzdFLENBQUMsR0FBRzNyRCxLQUFLLENBQUNtOUMsY0FBVixHQUEyQixDQUFDLEdBQUduOUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztNQUNsRnozQyxJQUFJLEVBQUUsSUFBSWYsTUFBSixDQUFXd08sTUFBTSxDQUFDK3FCLENBQUQsQ0FBakIsQ0FENEU7TUFFbEYsU0FBTyxDQUFDLEdBQUdsN0IsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEJuRCxJQUFJLENBQUNub0IsV0FBL0I7SUFGMkUsQ0FBbkMsRUFHaEQsQ0FDRW1vQixJQUFJLENBQUN6ZSxlQUFMLENBQXFCQyxDQUFyQixDQUFELElBQ08sQ0FBQyxHQUFHbDdCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1Qlgsa0JBQXZCLEVBQTJDO01BQ2xFbnZDLEdBQUcsRUFBRSxDQUQ2RDtNQUVsRXVGLElBQUksRUFBRSxNQUY0RDtNQUdsRSxTQUFPO0lBSDJELENBQTNDLENBRC9CLElBTU0sQ0FBQyxHQUFHcFEsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBUFAsRUFRQyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDO01BQ2xDLFNBQU8sQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCbkQsSUFBSSxDQUFDemUsZUFBTCxDQUFxQkMsQ0FBckIsSUFBMEIsRUFBMUIsR0FBK0IsTUFBekQ7SUFEMkIsQ0FBdEMsRUFFRyxDQUFDLEdBQUdsN0IsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQy81QyxFQUFFLEdBQUcrNEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZWdxQixPQUFmLENBQXVCNEosQ0FBdkIsQ0FBTixNQUFxQyxJQUFyQyxJQUE2Q3Y2QixFQUFFLEtBQUssS0FBSyxDQUF6RCxHQUE2REEsRUFBN0QsR0FBa0V1NkIsQ0FBN0YsQ0FGSCxFQUVvRztJQUFFO0lBRnRHLENBUkQsQ0FIZ0QsRUFjaEQ7SUFBRztJQWQ2QyxFQWN6QnVlLFdBZHlCLENBQW5ELEdBY3lDLENBQ3JDLENBQUN5Six3QkFBRCxDQURxQyxDQWR6QyxDQUQ2RSxDQUFqRCxDQUFoQztFQW1CSCxDQXJCZ0YsQ0FBcEQsRUFxQnpCO0VBQUk7RUFyQnFCLENBRGUsRUFBaEQsQ0FENkMsQ0FBakQsQ0FEK0MsQ0FBbkQsQ0FENkMsRUE2QjdDLENBQUMsR0FBR2xqRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM2QixXQUFyQyxFQUFrRCxDQUM5Q0MsV0FEOEMsRUFFOUMsQ0FBQyxHQUFHajdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQytCLFdBQXJDLEVBQWtELEVBQzdDLENBQUMsR0FBR2w3QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JwRCxJQUFJLENBQUMzZSxlQUEzQixFQUE0QyxVQUFVM3ZCLElBQVYsRUFBZ0JQLEdBQWhCLEVBQXFCO0lBQzlJLElBQUlsSyxFQUFKLEVBQVF5RyxFQUFSOztJQUNBLE9BQVEsQ0FBQyxHQUFHcEgsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCd1gsNkJBQXZCLEVBQXNEO01BQ2xGdG5ELEdBQUcsRUFBRUEsR0FENkU7TUFFbEZ0SSxJQUFJLEVBQUU2SSxJQUY0RTtNQUdsRixnQkFBZ0JQLEdBQUcsQ0FBQ2dULFFBQUosRUFIa0U7TUFJbEYsWUFBWSxhQUFhbGMsTUFBYixDQUFvQiszQyxJQUFJLENBQUM1ZSxXQUFMLENBQWlCOXJCLFdBQXJDLEVBQWtELGVBQWxELEVBQW1Fck4sTUFBbkUsQ0FBMEUrM0MsSUFBSSxDQUFDNWUsV0FBTCxDQUFpQnR5QixFQUEzRixDQUpzRTtNQUtsRjZQLEtBQUssRUFBRXhOLEdBQUcsQ0FBQ2dULFFBQUosT0FBbUIsT0FBbkIsSUFDSGhULEdBQUcsQ0FBQ2dULFFBQUosT0FBbUIsa0JBRGhCLElBRUhoVCxHQUFHLENBQUNnVCxRQUFKLE9BQW1CLGtCQUZoQixJQUdIaFQsR0FBRyxDQUFDZ1QsUUFBSixPQUFtQixXQUhoQixJQUlIaFQsR0FBRyxDQUFDZ1QsUUFBSixPQUFtQixzQkFKaEIsSUFLSGhULEdBQUcsQ0FBQ2dULFFBQUosT0FBbUIsY0FMaEIsR0FNRCxFQU5DLEdBT0QsTUFaNEU7TUFhbEYsY0FBYzY3QixJQUFJLENBQUNwb0IsT0FBTCxDQUFhLFlBQWIsRUFBMkJ6bUIsR0FBM0IsSUFDUixDQUFDbEssRUFBRSxHQUFHKzRDLElBQUksQ0FBQ3BvQixPQUFMLENBQWEsWUFBYixFQUEyQnptQixHQUEzQixFQUFnQyxZQUFoQyxDQUFOLE1BQXlELElBQXpELElBQWlFbEssRUFBRSxLQUFLLEtBQUssQ0FBN0UsR0FBaUZBLEVBQWpGLEdBQXNGLEVBRDlFLEdBRVIsQ0FBQ3lHLEVBQUUsR0FBR3N5QyxJQUFJLENBQUNwb0IsT0FBTCxDQUFhLGNBQWIsRUFBNkJ6bUIsR0FBN0IsRUFBa0MsWUFBbEMsQ0FBTixNQUEyRCxJQUEzRCxJQUFtRXpELEVBQUUsS0FBSyxLQUFLLENBQS9FLEdBQW1GQSxFQUFuRixHQUF3RixFQWZaO01BZ0JsRjJnQixLQUFLLEVBQUUyeEIsSUFBSSxDQUFDM3hCO0lBaEJzRSxDQUF0RCxFQWlCN0IsSUFqQjZCLEVBaUJ2QjtJQUFFO0lBakJxQixFQWlCUixDQUFDLE1BQUQsRUFBUyxjQUFULEVBQXlCLFVBQXpCLEVBQXFDLE9BQXJDLEVBQThDLFlBQTlDLEVBQTRELE9BQTVELENBakJRLENBQWhDO0VBa0JILENBcEJnRixDQUFwRCxFQW9CekI7RUFBSTtFQXBCcUIsQ0FEaUIsRUFBbEQsQ0FGOEMsQ0FBbEQsQ0E3QjZDLENBQWpELENBdEc2RSxDQUFqRCxDQUFoQztBQStKSDs7QUFDRGpvQixjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ3hMYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRyxDQUFDLElBQUQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7O0FBQ0EsSUFBSUMsVUFBVSxHQUFHLGFBQWMsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztFQUFFLFNBQU87QUFBVCxDQUFyQyxFQUFvRixJQUFwRixFQUEwRixDQUFDO0FBQUU7QUFBN0YsQ0FBL0I7O0FBQ0EsSUFBSUksVUFBVSxHQUFHO0VBQ2IxdUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJMnVDLFVBQVUsR0FBRztFQUNiM3VDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSTR1QyxXQUFXLEdBQUc7RUFDZDV1QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUltd0MsV0FBVyxHQUFHO0VBQ2Rud0MsR0FBRyxFQUFFLEVBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7O0FBSUEsU0FBU2l1QyxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELElBQUlwNUMsRUFBSjs7RUFDQSxJQUFJNC9DLG9CQUFvQixHQUFHLENBQUMsR0FBR3ZnRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsV0FBNUIsQ0FBM0I7O0VBQ0EsSUFBSW1SLHNCQUFzQixHQUFHLENBQUMsR0FBR3ByRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsYUFBNUIsQ0FBN0I7O0VBQ0EsSUFBSW1ZLGtCQUFrQixHQUFHLENBQUMsR0FBR3B5RCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsU0FBNUIsQ0FBekI7O0VBQ0EsSUFBSW9ZLDBCQUEwQixHQUFHLENBQUMsR0FBR3J5RCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsaUJBQTVCLENBQWpDOztFQUNBLElBQUlxWSwwQkFBMEIsR0FBRyxDQUFDLEdBQUd0eUQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLGlCQUE1QixDQUFqQzs7RUFDQSxJQUFJc1ksZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHdnlELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixPQUE1QixDQUF2Qjs7RUFDQSxJQUFJdVksK0JBQStCLEdBQUcsQ0FBQyxHQUFHeHlELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixzQkFBNUIsQ0FBdEM7O0VBQ0EsSUFBSXdZLCtCQUErQixHQUFHLENBQUMsR0FBR3p5RCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsc0JBQTVCLENBQXRDOztFQUNBLElBQUl5WSw4QkFBOEIsR0FBRyxDQUFDLEdBQUcxeUQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLHFCQUE1QixDQUFyQzs7RUFDQSxJQUFJMFksaUJBQWlCLEdBQUcsQ0FBQyxHQUFHM3lELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixRQUE1QixDQUF4Qjs7RUFDQSxJQUFJMlksMkJBQTJCLEdBQUcsQ0FBQyxHQUFHNXlELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixrQkFBNUIsQ0FBbEM7O0VBQ0EsSUFBSTRZLDBCQUEwQixHQUFHLENBQUMsR0FBRzd5RCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsaUJBQTVCLENBQWpDOztFQUNBLElBQUk2WSxtQkFBbUIsR0FBRyxDQUFDLEdBQUc5eUQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFVBQTVCLENBQTFCOztFQUNBLElBQUk4WSxzQkFBc0IsR0FBRyxDQUFDLEdBQUcveUQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLGFBQTVCLENBQTdCOztFQUNBLElBQUkrWSxxQkFBcUIsR0FBRyxDQUFDLEdBQUdoekQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFlBQTVCLENBQTVCOztFQUNBLE9BQVEsQ0FBQyxHQUFHajZDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFDakUzeEMsRUFBRSxFQUFFa3hDLElBQUksQ0FBQ3hmLFdBRHdEO0lBRWpFLFNBQU8sQ0FBQyxHQUFHbDZCLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsa0RBQUQsRUFBcUQ7TUFDOUUsY0FBY25ELElBQUksQ0FBQ3JoQyxLQUFMLEtBQWUsTUFEaUQ7TUFFOUUsY0FBY3FoQyxJQUFJLENBQUNyaEMsS0FBTCxLQUFlO0lBRmlELENBQXJELENBQTFCO0VBRjBELENBQXJDLEVBTTdCLENBQ0MsQ0FBQyxHQUFHclksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRixVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDQyxVQUFyQyxFQUFpRCxDQUFDLEdBQUdwNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlcWlELHNCQUFmLENBQXNDalEsSUFBSSxDQUFDeGYsV0FBM0MsQ0FBM0IsQ0FBakQsRUFBc0k7RUFBRTtFQUF4SSxDQUQ2QyxDQUFqRCxDQUQ2QyxFQUk3QyxDQUFDLEdBQUdsNkIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRSxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdyNUMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLHNEQUE5QixDQUQ2QyxFQUU3QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJpRyxvQkFBdkIsRUFBNkM7SUFDekMsY0FBYzdHLElBQUksQ0FBQ3RoQyxTQURzQjtJQUV6QyxTQUFPO0VBRmtDLENBQTdDLEVBR0csSUFISCxFQUdTO0VBQUU7RUFIWCxFQUd3QixDQUFDLFlBQUQsQ0FIeEIsQ0FGNkMsQ0FBakQsQ0FKNkMsQ0FBakQsQ0FENkMsRUFhN0NraEMsVUFiNkMsRUFjN0MsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN0Q08sSUFBSSxDQUFDeGYsV0FBTCxLQUFxQixhQUF0QixJQUNPLENBQUMsR0FBR2w2QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJ5USxzQkFBdkIsRUFBK0M7SUFDdEV2Z0QsR0FBRyxFQUFFLENBRGlFO0lBRXRFdEksSUFBSSxFQUFFbTNDLElBQUksQ0FBQ3RmO0VBRjJELENBQS9DLEVBR3hCLElBSHdCLEVBR2xCO0VBQUU7RUFIZ0IsRUFHSCxDQUFDLE1BQUQsQ0FIRyxDQUQvQixJQUtPc2YsSUFBSSxDQUFDeGYsV0FBTCxLQUFxQixVQUF0QixJQUNLLENBQUMsR0FBR2w2QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJ5WCxrQkFBdkIsRUFBMkM7SUFDbEV2bkQsR0FBRyxFQUFFLENBRDZEO0lBRWxFdEksSUFBSSxFQUFFbTNDLElBQUksQ0FBQ3RmO0VBRnVELENBQTNDLEVBR3hCLElBSHdCLEVBR2xCO0VBQUU7RUFIZ0IsRUFHSCxDQUFDLE1BQUQsQ0FIRyxDQUQ3QixJQUtLc2YsSUFBSSxDQUFDeGYsV0FBTCxLQUFxQixrQkFBdEIsSUFDSyxDQUFDLEdBQUdsNkIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ1osVUFBckMsRUFBaUQsQ0FDeEUsQ0FBQyxHQUFHdjVDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCK1gsMEJBQXZCLEVBQW1EO0lBQUU5dkQsSUFBSSxFQUFFbTNDLElBQUksQ0FBQ3RmO0VBQWIsQ0FBbkQsRUFBK0UsSUFBL0UsRUFBcUY7RUFBRTtFQUF2RixFQUFvRyxDQUFDLE1BQUQsQ0FBcEcsQ0FEd0UsQ0FBakQsQ0FEN0IsSUFJS3NmLElBQUksQ0FBQ3hmLFdBQUwsS0FBcUIsa0JBQXRCLElBQ0ssQ0FBQyxHQUFHbDZCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNYLFVBQXJDLEVBQWlELENBQ3hFLENBQUMsR0FBR3g1QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QmdZLDBCQUF2QixFQUFtRDtJQUFFL3ZELElBQUksRUFBRW0zQyxJQUFJLENBQUN0ZjtFQUFiLENBQW5ELEVBQStFLElBQS9FLEVBQXFGO0VBQUU7RUFBdkYsRUFBb0csQ0FBQyxNQUFELENBQXBHLENBRHdFLENBQWpELENBRDdCLElBSUtzZixJQUFJLENBQUN4ZixXQUFMLEtBQXFCLE9BQXRCLElBQ0ssQ0FBQyxHQUFHbDZCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QjRYLGdCQUF2QixFQUF5QztJQUNoRTFuRCxHQUFHLEVBQUUsQ0FEMkQ7SUFFaEV0SSxJQUFJLEVBQUVtM0MsSUFBSSxDQUFDdGY7RUFGcUQsQ0FBekMsRUFHeEIsSUFId0IsRUFHbEI7RUFBRTtFQUhnQixFQUdILENBQUMsTUFBRCxDQUhHLENBRDdCLElBS0tzZixJQUFJLENBQUN4ZixXQUFMLEtBQXFCLGNBQXRCLElBQ0ssQ0FBQyxHQUFHbDZCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNWLFdBQXJDLEVBQWtELENBQUMsR0FBR3o1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ24zQyxJQUFMLEtBQWMsR0FBZCxHQUNsR20zQyxJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixPQUExQixDQURrRyxHQUVsRzR3QyxJQUFJLENBQUNuM0MsSUFBTCxLQUFjLEdBQWQsR0FDSW0zQyxJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixNQUExQixDQURKLEdBRUk0d0MsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBSm1FLENBQWxELEVBSVU7RUFBRTtFQUpaLENBRDdCLElBTUtxbUIsSUFBSSxDQUFDeGYsV0FBTCxLQUFxQix1QkFBdEIsSUFDSyxDQUFDLEdBQUdsNkIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCNlgsK0JBQXZCLEVBQXdEO0lBQy9FM25ELEdBQUcsRUFBRSxDQUQwRTtJQUUvRXRJLElBQUksRUFBRW0zQyxJQUFJLENBQUN0ZjtFQUZvRSxDQUF4RCxFQUd4QixJQUh3QixFQUdsQjtFQUFFO0VBSGdCLEVBR0gsQ0FBQyxNQUFELENBSEcsQ0FEN0IsSUFLS3NmLElBQUksQ0FBQ3hmLFdBQUwsS0FBcUIsdUJBQXRCLElBQ0ssQ0FBQyxHQUFHbDZCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QjhYLCtCQUF2QixFQUF3RDtJQUMvRTVuRCxHQUFHLEVBQUUsQ0FEMEU7SUFFL0V0SSxJQUFJLEVBQUVtM0MsSUFBSSxDQUFDdGY7RUFGb0UsQ0FBeEQsRUFHeEIsSUFId0IsRUFHbEI7RUFBRTtFQUhnQixFQUdILENBQUMsTUFBRCxDQUhHLENBRDdCLElBS0tzZixJQUFJLENBQUN4ZixXQUFMLEtBQXFCLHNCQUF0QixJQUNLLENBQUMsR0FBR2w2QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUIrWCw4QkFBdkIsRUFBdUQ7SUFDOUU3bkQsR0FBRyxFQUFFLENBRHlFO0lBRTlFdEksSUFBSSxFQUFFbTNDLElBQUksQ0FBQ3RmO0VBRm1FLENBQXZELEVBR3hCLElBSHdCLEVBR2xCO0VBQUU7RUFIZ0IsRUFHSCxDQUFDLE1BQUQsQ0FIRyxDQUQ3QixJQUtLc2YsSUFBSSxDQUFDeGYsV0FBTCxLQUFxQixRQUF0QixJQUNLLENBQUMsR0FBR2w2QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJnWSxpQkFBdkIsRUFBMEM7SUFDakU5bkQsR0FBRyxFQUFFLENBRDREO0lBRWpFdEksSUFBSSxFQUFFbTNDLElBQUksQ0FBQ3RmO0VBRnNELENBQTFDLEVBR3hCLElBSHdCLEVBR2xCO0VBQUU7RUFIZ0IsRUFHSCxDQUFDLE1BQUQsQ0FIRyxDQUQ3QixJQUtLc2YsSUFBSSxDQUFDeGYsV0FBTCxLQUFxQixtQkFBdEIsSUFDSyxDQUFDLEdBQUdsNkIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCaVksMkJBQXZCLEVBQW9EO0lBQzNFL25ELEdBQUcsRUFBRSxFQURzRTtJQUUzRXRJLElBQUksRUFBRW0zQyxJQUFJLENBQUN0ZjtFQUZnRSxDQUFwRCxFQUd4QixJQUh3QixFQUdsQjtFQUFFO0VBSGdCLEVBR0gsQ0FBQyxNQUFELENBSEcsQ0FEN0IsSUFLS3NmLElBQUksQ0FBQ3hmLFdBQUwsS0FBcUIsa0JBQXRCLElBQ0ssQ0FBQyxHQUFHbDZCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QmtZLDBCQUF2QixFQUFtRDtJQUMxRWhvRCxHQUFHLEVBQUUsRUFEcUU7SUFFMUV0SSxJQUFJLEVBQUVtM0MsSUFBSSxDQUFDdGY7RUFGK0QsQ0FBbkQsRUFHeEIsSUFId0IsRUFHbEI7RUFBRTtFQUhnQixFQUdILENBQUMsTUFBRCxDQUhHLENBRDdCLElBS0tzZixJQUFJLENBQUN4ZixXQUFMLEtBQXFCLFdBQXRCLElBQ0ssQ0FBQyxHQUFHbDZCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1Qm1ZLG1CQUF2QixFQUE0QztJQUNuRWpvRCxHQUFHLEVBQUUsRUFEOEQ7SUFFbkV0SSxJQUFJLEVBQUVtM0MsSUFBSSxDQUFDdGY7RUFGd0QsQ0FBNUMsRUFHeEIsSUFId0IsRUFHbEI7RUFBRTtFQUhnQixFQUdILENBQUMsTUFBRCxDQUhHLENBRDdCLElBS0tzZixJQUFJLENBQUN4ZixXQUFMLEtBQXFCLGNBQXRCLElBQ0ssQ0FBQyxHQUFHbDZCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1Qm9ZLHNCQUF2QixFQUErQztJQUN0RWxvRCxHQUFHLEVBQUUsRUFEaUU7SUFFdEV0SSxJQUFJLEVBQUVtM0MsSUFBSSxDQUFDdGY7RUFGMkQsQ0FBL0MsRUFHeEIsSUFId0IsRUFHbEI7RUFBRTtFQUhnQixFQUdILENBQUMsTUFBRCxDQUhHLENBRDdCLElBS0tzZixJQUFJLENBQUN4ZixXQUFMLEtBQXFCLGFBQXRCLElBQ0ssQ0FBQyxHQUFHbDZCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QnFZLHFCQUF2QixFQUE4QztJQUNyRW5vRCxHQUFHLEVBQUUsRUFEZ0U7SUFFckV0SSxJQUFJLEVBQUVtM0MsSUFBSSxDQUFDdGY7RUFGMEQsQ0FBOUMsRUFHeEIsSUFId0IsRUFHbEI7RUFBRTtFQUhnQixFQUdILENBQUMsTUFBRCxDQUhHLENBRDdCLEtBS0ssQ0FBQyxHQUFHcDZCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNhLFdBQXJDLEVBQWtELENBQUMsR0FBR2g3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQixDQUFDLzVDLEVBQUUsR0FBRys0QyxJQUFJLENBQUNuM0MsSUFBWCxNQUFxQixJQUFyQixJQUE2QjVCLEVBQUUsS0FBSyxLQUFLLENBQXpDLEdBQTZDQSxFQUE3QyxHQUFrRCs0QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBN0UsQ0FBbEQsRUFBMEo7RUFBRTtFQUE1SixDQUw3QixDQXRFbkIsQ0FBM0MsQ0FkNkMsQ0FBakQsQ0FERCxDQU42QixFQW1HN0I7RUFBRztFQW5HMEIsRUFtR04wbEIsVUFuR00sQ0FBaEM7QUFvR0g7O0FBQ0RqNUMsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUNqSmE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUcsQ0FBQyxNQUFELENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQ2I3d0MsRUFBRSxFQUFFLGNBRFM7RUFFYnlqRCxLQUFLLEVBQUU7QUFGTSxDQUFqQjtBQUlBLElBQUkzUyxVQUFVLEdBQUc7RUFDYjl3QyxFQUFFLEVBQUUsa0JBRFM7RUFFYnlqRCxLQUFLLEVBQUU7QUFGTSxDQUFqQjtBQUlBLElBQUkxUyxVQUFVLEdBQUc7RUFDYi93QyxFQUFFLEVBQUUsbUJBRFM7RUFFYnlqRCxLQUFLLEVBQUU7QUFGTSxDQUFqQjtBQUlBLElBQUl6UyxVQUFVLEdBQUc7RUFDYmh4QyxFQUFFLEVBQUUsa0JBRFM7RUFFYnlqRCxLQUFLLEVBQUU7QUFGTSxDQUFqQjtBQUlBLElBQUl4UyxXQUFXLEdBQUc7RUFDZGp4QyxFQUFFLEVBQUUsUUFEVTtFQUVkeWpELEtBQUssRUFBRTtBQUZPLENBQWxCO0FBSUEsSUFBSWpSLFdBQVcsR0FBRztFQUFFbndDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSW93QyxXQUFXLEdBQUcsQ0FBQyxTQUFELENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsTUFBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLFNBQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxTQUFELENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsU0FBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLE1BQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRTl3QyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUkrd0MsV0FBVyxHQUFHO0VBQ2RzUSxPQUFPLEVBQUUsR0FESztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUlyUSxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsU0FBUy9DLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSXNJLGdCQUFnQixHQUFHLENBQUMsR0FBR3JpRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsT0FBNUIsQ0FBdkI7O0VBQ0EsSUFBSWlHLGNBQWMsR0FBRyxDQUFDLEdBQUdsZ0QsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLEtBQTVCLENBQXJCOztFQUNBLElBQUkwSixvQkFBb0IsR0FBRyxDQUFDLEdBQUczakQsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFdBQTVCLENBQTNCOztFQUNBLElBQUlELGtCQUFrQixHQUFHLENBQUMsR0FBR2g2QyxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsU0FBNUIsQ0FBekI7O0VBQ0EsSUFBSWtTLHVCQUF1QixHQUFHLENBQUMsR0FBR25zRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsY0FBNUIsQ0FBOUI7O0VBQ0EsSUFBSThKLHFCQUFxQixHQUFHLENBQUMsR0FBRy9qRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsWUFBNUIsQ0FBNUI7O0VBQ0EsT0FBUSxDQUFDLEdBQUdqNkMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3BCLFVBQXJDLEVBQWlELENBQzdFLENBQUMsR0FBRy80QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QnFKLG9CQUF2QixFQUE2QztJQUN6QyxtQkFBbUJqSyxJQUFJLENBQUMvc0MsY0FEaUI7SUFFekN1TCxLQUFLLEVBQUV3aEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsa0JBQTFCLENBRmtDO0lBR3pDLGFBQWE0d0MsSUFBSSxDQUFDOW5CO0VBSHVCLENBQTdDLEVBSUc7SUFDQyxXQUFTLENBQUMsR0FBRzV4QixLQUFLLENBQUM0NkMsT0FBVixFQUFtQixZQUFZO01BQUUsT0FBTyxDQUM3QyxDQUFDLEdBQUc1NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSCxVQUFyQyxFQUFpRCxDQUM1Q1UsSUFBSSxDQUFDOWlDLFNBQUwsQ0FBZTFJLFVBQWhCLElBQ08sQ0FBQyxHQUFHbE8sS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCMEgsZ0JBQXZCLEVBQXlDO1FBQ2hFeDNDLEdBQUcsRUFBRSxDQUQyRDtRQUVoRXJCLE9BQU8sRUFBRWt3QyxJQUFJLENBQUM5aUMsU0FBTCxDQUFlcE4sT0FGd0M7UUFHaEU1QyxJQUFJLEVBQUU4eUMsSUFBSSxDQUFDOWlDLFNBQUwsQ0FBZWhRLElBSDJDO1FBSWhFLFNBQU87TUFKeUQsQ0FBekMsRUFLeEIsSUFMd0IsRUFLbEI7TUFBRTtNQUxnQixFQUtILENBQUMsU0FBRCxFQUFZLE1BQVosQ0FMRyxDQUQvQixJQU9NLENBQUMsR0FBRzVHLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQVJ1QyxFQVM3QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO1FBQy9CejJDLElBQUksRUFBRSxHQUFHZixNQUFILENBQVUrM0MsSUFBSSxDQUFDOW5CLFlBQWYsRUFBNkIscUJBQTdCO01BRHlCLENBQW5DLEVBRUcsQ0FDQyxDQUFDLEdBQUc1eEIsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUI0RixjQUF2QixFQUF1QztRQUNuQ2h3QyxJQUFJLEVBQUV3cEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZSthLE1BQWYsQ0FBc0IsYUFBdEIsRUFBcUMsb0JBQXJDLENBRDZCO1FBRW5DalMsSUFBSSxFQUFFLE1BRjZCO1FBR25DeEosSUFBSSxFQUFFO01BSDZCLENBQXZDLEVBSUcsSUFKSCxFQUlTO01BQUU7TUFKWCxFQUl3QixDQUFDLE1BQUQsQ0FKeEIsQ0FERCxDQUZILEVBUUc7TUFBRTtNQVJMLEVBUWtCcXlDLFVBUmxCLENBVDZDLENBQWpELENBRDZDLENBQVA7SUFvQnRDLENBcEJLLENBRFY7SUFzQkNoMEMsQ0FBQyxFQUFFO0lBQUU7O0VBdEJOLENBSkgsRUEyQkc7RUFBRTtFQTNCTCxFQTJCa0IsQ0FBQyxpQkFBRCxFQUFvQixPQUFwQixFQUE2QixXQUE3QixDQTNCbEIsQ0FENkUsRUE2QjdFLENBQUMsR0FBR2pGLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixnQkFBOUIsQ0E3QjZFLEVBOEI3RSxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDLElBQXZDLEVBQTZDLENBQ3pDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMsSUFBdkMsRUFBNkMsQ0FDekMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ0MsVUFBcEMsRUFBZ0QsQ0FDNUMsQ0FBQyxHQUFHcDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ0UsVUFBcEMsRUFBZ0QsQ0FDNUMsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixVQUExQixDQUEzQixJQUFvRSxHQUFwRSxHQUEwRSxDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLEtBQTFCLENBQTNCLENBQXRILEVBQW9MO0VBQUU7RUFBdEwsQ0FENEMsQ0FBaEQsQ0FENEMsRUFJNUMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DRyxVQUFwQyxFQUFnRCxDQUM1QyxDQUFDLEdBQUd0NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLGFBQTFCLENBQTNCLElBQXVFLEdBQXZFLEdBQTZFLENBQUMsR0FBRzlJLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsTUFBMUIsQ0FBM0IsQ0FBekgsRUFBd0w7RUFBRTtFQUExTCxDQUQ0QyxDQUFoRCxDQUo0QyxFQU81QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NJLFVBQXBDLEVBQWdELENBQzVDLENBQUMsR0FBR3Y1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsYUFBMUIsQ0FBM0IsSUFBdUUsR0FBdkUsR0FBNkUsQ0FBQyxHQUFHOUksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixPQUExQixDQUEzQixDQUF6SCxFQUF5TDtFQUFFO0VBQTNMLENBRDRDLENBQWhELENBUDRDLEVBVTVDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ0ssVUFBcEMsRUFBZ0QsQ0FDNUMsQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixhQUExQixDQUEzQixJQUF1RSxHQUF2RSxHQUE2RSxDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLE1BQTFCLENBQTNCLENBQXpILEVBQXdMO0VBQUU7RUFBMUwsQ0FENEMsQ0FBaEQsQ0FWNEMsRUFhNUMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLDhDQUE5QixDQWI0QyxFQWM1QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLGtCQUE5QixDQWQ0QyxFQWU1QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLGtGQUE5QixDQWY0QyxFQWdCNUMsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4Qiw0QkFBOUIsQ0FoQjRDLEVBaUI1QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLGlCQUE5QixDQWpCNEMsRUFrQjVDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsK0RBQTlCLENBbEI0QyxFQW1CNUMsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4Qix5REFBOUIsQ0FuQjRDLEVBb0I1QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLHlCQUE5QixDQXBCNEMsRUFxQjVDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIscUNBQTlCLENBckI0QyxFQXNCNUMsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixvQkFBOUIsQ0F0QjRDLEVBdUI1QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLG1CQUE5QixDQXZCNEMsRUF3QjVDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NNLFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBR3o1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsUUFBMUIsQ0FBM0IsQ0FBNUMsRUFBNkc7RUFBRTtFQUEvRyxDQUQ2QyxDQUFqRCxDQXhCNEMsQ0FBaEQsQ0FEeUMsQ0FBN0MsQ0FEeUMsRUErQnhDNHdDLElBQUksQ0FBQzNkLGdCQUFMLENBQXNCeDVCLElBQXRCLElBQThCbTNDLElBQUksQ0FBQzNkLGdCQUFMLENBQXNCeDVCLElBQXRCLENBQTJCNEQsTUFBM0IsR0FBb0MsQ0FBbkUsSUFDTyxDQUFDLEdBQUduRyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDYSxXQUF2QyxFQUFvRCxFQUMxRSxDQUFDLEdBQUdoN0MsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCcEQsSUFBSSxDQUFDM2QsZ0JBQUwsQ0FBc0J4NUIsSUFBNUMsRUFBa0QsVUFBVW9vRCxLQUFWLEVBQWlCdmxELENBQWpCLEVBQW9CaU4sS0FBcEIsRUFBMkI7SUFDMUosSUFBSTFSLEVBQUo7O0lBQ0EsT0FBUSxDQUFDLEdBQUdYLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7TUFBRXR2QyxHQUFHLEVBQUV3SDtJQUFQLENBQXBDLEVBQW9ELENBQ2hGLENBQUMsR0FBR3JTLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztNQUNoQyxTQUFPLGdCQUR5QjtNQUVoQ2tCLE9BQU8sRUFBRSxpQkFBVUksTUFBVixFQUFrQjtRQUFFLE9BQVFmLElBQUksQ0FBQ2xuQixjQUFMLENBQW9CLEdBQUc3d0IsTUFBSCxDQUFVKzNDLElBQUksQ0FBQzluQixZQUFmLEVBQTZCLGVBQTdCLEVBQThDandCLE1BQTlDLENBQXFEZ3BELEtBQUssQ0FBQ25pRCxFQUEzRCxDQUFwQixDQUFSO01BQStGO0lBRjVGLENBQXBDLEVBR0csQ0FDQyxDQUFDLEdBQUd4SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMrQixXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdsN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO01BQy9CejJDLElBQUksRUFBRSxHQUFHZixNQUFILENBQVUrM0MsSUFBSSxDQUFDOW5CLFlBQWYsRUFBNkIsZUFBN0IsRUFBOENqd0IsTUFBOUMsQ0FBcURncEQsS0FBSyxDQUFDbmlELEVBQTNEO0lBRHlCLENBQW5DLEVBRUcsQ0FDQyxDQUFDLEdBQUd4SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaVEsS0FBSyxDQUFDN3ZCLFdBQU4sQ0FBa0I1SCxTQUFsQixJQUNuRXkzQixLQUFLLENBQUM3dkIsV0FBTixDQUFrQjVILFNBQWxCLEtBQWdDLEVBRG1DLEdBRWpFeTNCLEtBQUssQ0FBQzd2QixXQUFOLENBQWtCNUgsU0FGK0MsR0FHakUsT0FIc0MsQ0FBNUMsRUFHZ0I7SUFBRTtJQUhsQixDQURELENBRkgsRUFPRztJQUFFO0lBUEwsRUFPa0Jpb0IsV0FQbEIsQ0FEOEMsRUFTOUMsQ0FBQyxHQUFHbjdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2lDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3A3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NrQyxXQUF0QyxFQUFtRCxDQUFDLEdBQUdyN0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJpUSxLQUFLLENBQUM3dkIsV0FBTixDQUFrQjVILFNBQWxCLElBQzFFeTNCLEtBQUssQ0FBQzd2QixXQUFOLENBQWtCNUgsU0FBbEIsS0FBZ0MsRUFEMEMsR0FFeEV5M0IsS0FBSyxDQUFDN3ZCLFdBQU4sQ0FBa0I1SCxTQUZzRCxHQUd4RSxPQUg2QyxDQUFuRCxFQUdnQjtJQUFFO0lBSGxCLENBRDhDLENBQWxELENBVDhDLENBQWxELENBREQsQ0FISCxFQW9CRztJQUFFO0lBcEJMLEVBb0JrQituQixXQXBCbEIsQ0FEZ0YsRUFzQmhGLENBQUMsR0FBR2o3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7TUFDaEMsU0FBTyxnQkFEeUI7TUFFaENrQixPQUFPLEVBQUUsaUJBQVVJLE1BQVYsRUFBa0I7UUFBRSxPQUFRZixJQUFJLENBQUNsbkIsY0FBTCxDQUFvQixHQUFHN3dCLE1BQUgsQ0FBVSszQyxJQUFJLENBQUM5bkIsWUFBZixFQUE2QixlQUE3QixFQUE4Q2p3QixNQUE5QyxDQUFxRGdwRCxLQUFLLENBQUNuaUQsRUFBM0QsQ0FBcEIsQ0FBUjtNQUErRjtJQUY1RixDQUFwQyxFQUdHLENBQUMsR0FBR3hJLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCLENBQUMvNUMsRUFBRSxHQUFHKzRDLElBQUksQ0FBQzN4QixLQUFMLENBQVc2aUMsZUFBWCxDQUEyQkQsS0FBSyxDQUFDN3ZCLFdBQU4sQ0FBa0IrdkIsZ0JBQWxCLENBQW1DLENBQW5DLEVBQXNDQyxxQkFBakUsQ0FBTixNQUFtRyxJQUFuRyxJQUEyR25xRCxFQUFFLEtBQUssS0FBSyxDQUF2SCxHQUEySEEsRUFBM0gsR0FBZ0ksT0FBM0osQ0FISCxFQUd3SztJQUFFO0lBSDFLLEVBRzZMMjZDLFdBSDdMLENBdEJnRixFQTBCaEYsQ0FBQyxHQUFHdDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztNQUNoQyxTQUFPLHlCQUR5QjtNQUVoQ2tCLE9BQU8sRUFBRSxpQkFBVUksTUFBVixFQUFrQjtRQUFFLE9BQVFmLElBQUksQ0FBQ2xuQixjQUFMLENBQW9CLEdBQUc3d0IsTUFBSCxDQUFVKzNDLElBQUksQ0FBQzluQixZQUFmLEVBQTZCLGVBQTdCLEVBQThDandCLE1BQTlDLENBQXFEZ3BELEtBQUssQ0FBQ25pRCxFQUEzRCxDQUFwQixDQUFSO01BQStGO0lBRjVGLENBQXBDLEVBR0csQ0FBQyxHQUFHeEksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJpUSxLQUFLLENBQUM3dkIsV0FBTixDQUFrQi82QixLQUFsQixDQUF3QixDQUF4QixFQUEyQmdvRCxNQUEzQixHQUN4QjVnRCxNQUFNLENBQUN3akQsS0FBSyxDQUFDN3ZCLFdBQU4sQ0FBa0IvNkIsS0FBbEIsQ0FBd0IsQ0FBeEIsRUFBMkJnb0QsTUFBNUIsQ0FBTixDQUEwQ0MsY0FBMUMsRUFEd0IsR0FFeEIsT0FGSCxDQUhILEVBS2dCO0lBQUU7SUFMbEIsRUFLcUN6TSxXQUxyQyxDQTFCZ0YsRUFnQ2hGLENBQUMsR0FBR3Y3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7TUFDaEMsU0FBTyxnQkFEeUI7TUFFaENrQixPQUFPLEVBQUUsaUJBQVVJLE1BQVYsRUFBa0I7UUFBRSxPQUFRZixJQUFJLENBQUNsbkIsY0FBTCxDQUFvQixHQUFHN3dCLE1BQUgsQ0FBVSszQyxJQUFJLENBQUM5bkIsWUFBZixFQUE2QixlQUE3QixFQUE4Q2p3QixNQUE5QyxDQUFxRGdwRCxLQUFLLENBQUNuaUQsRUFBM0QsQ0FBcEIsQ0FBUjtNQUErRjtJQUY1RixDQUFwQyxFQUdHLENBQ0MsQ0FBQyxHQUFHeEksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmlRLEtBQUssQ0FBQzd2QixXQUFOLENBQWtCbTRCLGdCQUFsQixDQUFtQyxDQUFuQyxFQUFzQ2gvQyxJQUF0QyxHQUNqRXlsQyxJQUFJLENBQUM3cEIsVUFBTCxDQUFnQjg2QixLQUFLLENBQUM3dkIsV0FBTixDQUFrQm00QixnQkFBbEIsQ0FBbUMsQ0FBbkMsRUFBc0NoL0MsSUFBdEQsRUFBNEQsU0FBNUQsQ0FEaUUsR0FFakUsT0FGc0MsQ0FBNUMsRUFFZ0I7SUFBRTtJQUZsQixDQURELENBSEgsRUFPRztJQUFFO0lBUEwsRUFPa0J1bkMsV0FQbEIsQ0FoQ2dGLEVBd0NoRixDQUFDLEdBQUd4N0MsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLHNFQUE5QixDQXhDZ0YsRUF5Q2hGLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3NDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3o3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7TUFDL0IsU0FBTyxNQUR3QjtNQUUvQnoyQyxJQUFJLEVBQUUsR0FBR2YsTUFBSCxDQUFVKzNDLElBQUksQ0FBQzluQixZQUFmLEVBQTZCLGVBQTdCLEVBQThDandCLE1BQTlDLENBQXFEZ3BELEtBQUssQ0FBQ25pRCxFQUEzRCxFQUErRCxPQUEvRDtJQUZ5QixDQUFuQyxFQUdHLENBQ0MsQ0FBQyxHQUFHeEksS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztNQUN2QzVwQyxJQUFJLEVBQUUsTUFEaUM7TUFFdkMsU0FBTztJQUZnQyxDQUEzQyxDQURELENBSEgsRUFRRztJQUFFO0lBUkwsRUFRa0JzckMsV0FSbEIsQ0FEOEMsRUFVOUMsQ0FBQyxHQUFHMTdDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCNlIsdUJBQXZCLEVBQWdEO01BQzVDLFdBQVd4QixLQUFLLENBQUNuaUQsRUFEMkI7TUFFNUMsYUFBYTtJQUYrQixDQUFoRCxFQUdHLElBSEgsRUFHUztJQUFFO0lBSFgsRUFHd0IsQ0FBQyxTQUFELENBSHhCLENBVjhDLENBQWxELENBRHNDLENBQTFDLENBekNnRixDQUFwRCxDQUFoQztFQTJESCxDQTdEZ0YsQ0FBcEQsRUE2RHpCO0VBQUk7RUE3RHFCLENBRDhDLEVBQXBELENBRC9CLEtBaUVPLENBQUMsR0FBR3hJLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUN3QixXQUF2QyxFQUFvRCxDQUMzRSxDQUFDLEdBQUczN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DeUMsV0FBcEMsRUFBaUQsQ0FBQyxHQUFHNTdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDOW1CLHlCQUFMLENBQStCOG1CLElBQUksQ0FBQ3B5QyxTQUFMLENBQWVncUIsT0FBZixDQUF1QixjQUF2QixDQUEvQixFQUF1RW9vQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsQ0FBdUIsV0FBdkIsQ0FBdkUsQ0FBM0IsQ0FBakQsRUFBMEw7RUFBRTtFQUE1TCxDQUQyRSxDQUFwRCxDQWpFL0IsQ0EvQnlDLENBQTdDLENBRDZDLENBQWpELENBOUI2RSxFQW9JN0UsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzBDLFdBQXJDLEVBQWtELENBQzdDbkMsSUFBSSxDQUFDM2QsZ0JBQUwsSUFBeUIyZCxJQUFJLENBQUMzZCxnQkFBTCxDQUFzQjFnQixTQUF0QixHQUFrQyxDQUE1RCxJQUNPLENBQUMsR0FBR3JiLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1Qm9KLHFCQUF2QixFQUE4QztJQUNyRWw1QyxHQUFHLEVBQUUsQ0FEZ0U7SUFFckV0SSxJQUFJLEVBQUVtM0MsSUFBSSxDQUFDM2QsZ0JBRjBEO0lBR3JFbW9CLGlCQUFpQixFQUFFeEssSUFBSSxDQUFDam5CO0VBSDZDLENBQTlDLEVBSXhCLElBSndCLEVBSWxCO0VBQUU7RUFKZ0IsRUFJSCxDQUFDLE1BQUQsRUFBUyxtQkFBVCxDQUpHLENBRC9CLElBTU0sQ0FBQyxHQUFHenlCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQVB3QyxDQUFsRCxDQXBJNkUsQ0FBakQsQ0FBaEM7QUE4SUg7O0FBQ0R6NkMsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUNwTWE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRXh1QyxHQUFHLEVBQUU7QUFBUCxDQUFqQjtBQUNBLElBQUl5dUMsVUFBVSxHQUFHO0VBQUV6dUMsR0FBRyxFQUFFO0FBQVAsQ0FBakI7QUFDQSxJQUFJMHVDLFVBQVUsR0FBRztFQUFFMXVDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSTJ1QyxVQUFVLEdBQUc7RUFBRTN1QyxHQUFHLEVBQUU7QUFBUCxDQUFqQjtBQUNBLElBQUk0dUMsV0FBVyxHQUFHO0VBQUU1dUMsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7O0FBQ0EsU0FBU2l1QyxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELE9BQVEsQ0FBQyxHQUFHLzVDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNwQixVQUFyQyxFQUFpRCxFQUM1RSxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCcEQsSUFBSSxDQUFDMWQsTUFBM0IsRUFBbUMsVUFBVWszQixFQUFWLEVBQWM3akQsQ0FBZCxFQUFpQjtJQUNqSSxJQUFJMU8sRUFBSjs7SUFDQSxPQUFRLENBQUMsR0FBR1gsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqRXR2QyxHQUFHLEVBQUV3RSxDQUQ0RDtNQUVqRSxTQUFPLENBQUMsR0FBR3JQLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsTUFBRCxFQUFTO1FBQ2xDLFFBQVF4dEMsQ0FBQyxLQUFLelAsTUFBTSxDQUFDMFAsSUFBUCxDQUFZb3FDLElBQUksQ0FBQzFkLE1BQWpCLEVBQXlCNzFCLE1BQXpCLEdBQWtDO01BRGQsQ0FBVCxDQUExQjtJQUYwRCxDQUFyQyxFQUs3QixDQUNDLENBQUMsR0FBR25HLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0gsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQy81QyxFQUFFLEdBQUcrNEMsSUFBSSxDQUFDOXlDLElBQUwsQ0FBVThvRCxpQkFBVixDQUE0QndELEVBQUUsQ0FBQ0MsbUJBQS9CLENBQU4sTUFBK0QsSUFBL0QsSUFBdUV4eUQsRUFBRSxLQUFLLEtBQUssQ0FBbkYsR0FBdUZBLEVBQXZGLEdBQTRGKzRDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUF2SCxDQUE1QyxFQUE4TDtJQUFFO0lBQWhNLENBRDZDLENBQWpELENBREQsRUFJQyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRixVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDRCxVQUF2QyxFQUFtRCxDQUMvQyxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsTUFBMUIsQ0FBM0IsQ0FBMUMsRUFBeUc7SUFBRTtJQUEzRyxDQURzQyxFQUV0QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0MsVUFBckMsRUFBaUQsQ0FDNUM4WixFQUFFLENBQUNFLGFBQUosSUFDTyxDQUFDLEdBQUdwekQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2QsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDOXlDLElBQUwsQ0FBVXNwRCxPQUFWLENBQWtCZ0QsRUFBRSxDQUFDRSxhQUFyQixDQUEzQixDQUFsRCxFQUFtSDtJQUFFO0lBQXJILENBRC9CLElBRU9GLEVBQUUsQ0FBQ25ELDJCQUFKLElBQ0ssQ0FBQyxHQUFHL3ZELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NiLFVBQXRDLEVBQWtELENBQUMsR0FBR3Q1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzl5QyxJQUFMLENBQVV5c0Qsd0JBQVYsQ0FBbUNILEVBQUUsQ0FBQ25ELDJCQUF0QyxDQUEzQixDQUFsRCxFQUFrSjtJQUFFO0lBQXBKLENBRDdCLElBRUttRCxFQUFFLENBQUN2RCxtQkFBSixJQUNLLENBQUMsR0FBRzN2RCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDWixVQUF0QyxFQUFrRCxDQUFDLEdBQUd2NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUM5eUMsSUFBTCxDQUFVMHNELGtCQUFWLENBQTZCSixFQUFFLENBQUN2RCxtQkFBaEMsQ0FBM0IsQ0FBbEQsRUFBb0k7SUFBRTtJQUF0SSxDQUQ3QixJQUVLdUQsRUFBRSxDQUFDckQsbUJBQUosSUFDSyxDQUFDLEdBQUc3dkQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ1gsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDOXlDLElBQUwsQ0FBVTJzRCxrQkFBVixDQUE2QkwsRUFBRSxDQUFDckQsbUJBQWhDLENBQTNCLENBQWxELEVBQW9JO0lBQUU7SUFBdEksQ0FEN0IsS0FFSyxDQUFDLEdBQUc3dkQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ1YsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHejVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQTNCLENBQW5ELEVBQXlHO0lBQUU7SUFBM0csQ0FGN0IsQ0FQK0IsQ0FBakQsQ0FEc0MsQ0FBMUMsQ0FGc0MsQ0FBMUMsQ0FEK0MsQ0FBbkQsQ0FENkMsQ0FBakQsQ0FKRCxDQUw2QixFQTZCN0I7SUFBRTtJQTdCMkIsQ0FBaEM7RUE4QkgsQ0FoQ2dGLENBQXBELEVBZ0N6QjtFQUFJO0VBaENxQixDQURnRCxFQUFqRCxDQUFoQztBQW1DSDs7QUFDRHZ6QixjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ25EYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjs7QUFDQSxTQUFTRixNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELE9BQVEsQ0FBQyxHQUFHLzVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnBELElBQUksQ0FBQy9lLE1BQUwsQ0FBWSxDQUFaLEVBQWVyZSxTQUFyQyxFQUFnRCxVQUFVbFIsSUFBVixFQUFnQmlFLENBQWhCLEVBQW1CO0lBQ3ZKLElBQUkxTyxFQUFKOztJQUNBLE9BQVEsQ0FBQyxHQUFHWCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pFdHZDLEdBQUcsRUFBRXdFLENBRDREO01BRWpFLFNBQU8sQ0FBQyxHQUFHclAsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxlQUFELEVBQWtCO1FBQzNDLFFBQVF4dEMsQ0FBQyxLQUFLelAsTUFBTSxDQUFDMFAsSUFBUCxDQUFZb3FDLElBQUksQ0FBQy9lLE1BQUwsQ0FBWSxDQUFaLEVBQWVyZSxTQUEzQixFQUFzQ25XLE1BQXRDLEdBQStDO01BRGxCLENBQWxCLENBQTFCO0lBRjBELENBQXJDLEVBSzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSixVQUFyQyxFQUFpRCxPQUFPLENBQUMsR0FBRy80QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnR2QyxJQUFJLENBQUM5QyxRQUFMLEdBQzdFLEdBQUczRyxNQUFILENBQVUrM0MsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsVUFBMUIsQ0FBVixFQUFpRCxJQUFqRCxFQUF1RG5ILE1BQXZELENBQThEKzNDLElBQUksQ0FBQzl5QyxJQUFMLENBQVV5QixTQUFWLENBQW9CK0MsSUFBSSxDQUFDOUMsUUFBekIsQ0FBOUQsQ0FENkUsR0FFN0VveEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLENBQXVCLFVBQXZCLENBRmtELENBQVAsR0FFTCxJQUY1QyxFQUVrRDtJQUFFO0lBRnBELENBREQsRUFJQyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSCxVQUFyQyxFQUFpRCxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQy81QyxFQUFFLEdBQUd5SyxJQUFJLENBQUNrUixTQUFYLE1BQTBCLElBQTFCLElBQWtDM2IsRUFBRSxLQUFLLEtBQUssQ0FBOUMsR0FBa0RBLEVBQWxELEdBQXVEKzRDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixDQUF1QixXQUF2QixDQUFsRixDQUFqRCxFQUF5SztJQUFFO0lBQTNLLENBSkQsQ0FMNkIsRUFVN0I7SUFBRTtJQVYyQixDQUFoQztFQVdILENBYnVGLENBQXBELEVBYWhDO0VBQUk7RUFiNEIsQ0FBcEM7QUFjSDs7QUFDRHZ6QixjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ3RCYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjs7QUFDQSxTQUFTRCxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELE9BQVEsQ0FBQyxHQUFHLzVDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNwQixVQUFyQyxFQUFpRCxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN6ZCxJQUFMLENBQVUsQ0FBVixFQUFhdTNCLHlCQUFiLEdBQ3RHOVosSUFBSSxDQUFDOXlDLElBQUwsQ0FBVTZzRCxtQkFBVixDQUE4Qi9aLElBQUksQ0FBQ3pkLElBQUwsQ0FBVSxDQUFWLEVBQWF1M0IseUJBQTNDLENBRHNHLEdBRXRHOVosSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLENBQXVCLDJCQUF2QixDQUYyRSxDQUFqRCxFQUU0QjtFQUFFO0VBRjlCLENBQWhDO0FBR0g7O0FBQ0R2ekIsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUNWYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjs7QUFDQSxTQUFTRCxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELE9BQVEsQ0FBQyxHQUFHLzVDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNwQixVQUFyQyxFQUFpRCxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN4ZCxXQUFMLENBQWlCLENBQWpCLEVBQW9CdzNCLFlBQXBCLEdBQ3RHaGEsSUFBSSxDQUFDOXlDLElBQUwsQ0FBVW9xRCxXQUFWLENBQXNCdFgsSUFBSSxDQUFDeGQsV0FBTCxDQUFpQixDQUFqQixFQUFvQnczQixZQUExQyxDQURzRyxHQUV0R2hhLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixDQUF1QixjQUF2QixDQUYyRSxDQUFqRCxFQUVlO0VBQUU7RUFGakIsQ0FBaEM7QUFHSDs7QUFDRHZ6QixjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ1ZhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCOztBQUNBLFNBQVNELE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsT0FBUSxDQUFDLEdBQUcvNUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3BCLFVBQXJDLEVBQWlELENBQUMsR0FBRy80QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3ZkLFFBQUwsQ0FBYyxDQUFkLEVBQWlCdzNCLFNBQWpCLEdBQ3RHamEsSUFBSSxDQUFDOXlDLElBQUwsQ0FBVWtxRCxRQUFWLENBQW1CcFgsSUFBSSxDQUFDdmQsUUFBTCxDQUFjLENBQWQsRUFBaUJ3M0IsU0FBcEMsQ0FEc0csR0FFdEdqYSxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsQ0FBdUIsV0FBdkIsQ0FGMkUsQ0FBakQsRUFFWTtFQUFFO0VBRmQsQ0FBaEM7QUFHSDs7QUFDRHZ6QixjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ1ZhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCOztBQUNBLFNBQVNULE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSXA1QyxFQUFKLEVBQVF5RyxFQUFSOztFQUNBLE9BQVEsQ0FBQyxHQUFHcEgsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3BCLFVBQXJDLEVBQWlELENBQzdFLENBQUMsR0FBRy80QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2g1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUNGLFVBQXZDLEVBQW1ELENBQy9DLENBQUMsR0FBR2o1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMsSUFBdkMsRUFBNkMsQ0FDekMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLDJCQUExQixDQUEzQixDQUExQyxFQUE4SDtFQUFFO0VBQWhJLENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRCxVQUFyQyxFQUFpRCxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQy81QyxFQUFFLEdBQUcrNEMsSUFBSSxDQUFDdGQsTUFBTCxDQUFZLENBQVosRUFBZXczQiw0QkFBckIsTUFBdUQsSUFBdkQsSUFBK0RqekQsRUFBRSxLQUFLLEtBQUssQ0FBM0UsR0FBK0VBLEVBQS9FLEdBQW9GKzRDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUEvRyxDQUFqRCxFQUEyTDtFQUFFO0VBQTdMLENBRHNDLENBQTFDLENBRnNDLENBQTFDLENBRHlDLEVBT3pDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixhQUExQixDQUEzQixDQUExQyxFQUFnSDtFQUFFO0VBQWxILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxFQUNyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCcEQsSUFBSSxDQUFDdGQsTUFBTCxDQUFZLENBQVosRUFBZTlmLFNBQXJDLEVBQWdELFVBQVV1M0MsRUFBVixFQUFjeGtELENBQWQsRUFBaUI7SUFDOUksSUFBSTFPLEVBQUo7O0lBQ0EsT0FBUSxDQUFDLEdBQUdYLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7TUFDakV0dkMsR0FBRyxFQUFFd0UsQ0FENEQ7TUFFakUsU0FBTyxDQUFDLEdBQUdyUCxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLG9CQUFELEVBQXVCO1FBQ2hELFFBQVF4dEMsQ0FBQyxLQUFLcXFDLElBQUksQ0FBQ3RkLE1BQUwsQ0FBWSxDQUFaLEVBQWU5ZixTQUFmLENBQXlCblcsTUFBekIsR0FBa0M7TUFEQSxDQUF2QixDQUExQjtJQUYwRCxDQUFyQyxFQUs3QixDQUNDLENBQUMsR0FBR25HLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0MsVUFBckMsRUFBaUQsUUFBUSxDQUFDLEdBQUdwNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJtWixFQUFFLENBQUN2ckQsUUFBSCxHQUM5RSxHQUFHM0csTUFBSCxDQUFVKzNDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFVBQTFCLENBQVYsRUFBaUQsSUFBakQsRUFBdURuSCxNQUF2RCxDQUE4RCszQyxJQUFJLENBQUM5eUMsSUFBTCxDQUFVeUIsU0FBVixDQUFvQndyRCxFQUFFLENBQUN2ckQsUUFBdkIsQ0FBOUQsQ0FEOEUsR0FFOUUsR0FBRzNHLE1BQUgsQ0FBVSszQyxJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixVQUExQixDQUFWLEVBQWlELEdBQWpELEVBQXNEbkgsTUFBdEQsQ0FBNkQrM0MsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQTdELENBRm1ELENBQVIsR0FFK0MsSUFGaEcsRUFFc0c7SUFBRTtJQUZ4RyxDQURELEVBSUMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0UsVUFBckMsRUFBaUQsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCLENBQUMvNUMsRUFBRSxHQUFHa3pELEVBQUUsQ0FBQ3YzQyxTQUFULE1BQXdCLElBQXhCLElBQWdDM2IsRUFBRSxLQUFLLEtBQUssQ0FBNUMsR0FBZ0RBLEVBQWhELEdBQXFEKzRDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixDQUF1QixXQUF2QixDQUFoRixDQUFqRCxFQUF1SztJQUFFO0lBQXpLLENBSkQsQ0FMNkIsRUFVN0I7SUFBRTtJQVYyQixDQUFoQztFQVdILENBYmdGLENBQXBELEVBYXpCO0VBQUk7RUFicUIsQ0FEUyxFQUExQyxDQUZzQyxDQUExQyxDQVB5QyxFQTBCekMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLHNCQUExQixDQUEzQixDQUExQyxFQUF5SDtFQUFFO0VBQTNILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRyxVQUFyQyxFQUFpRCxDQUFDLEdBQUd0NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQ3R6QyxFQUFFLEdBQUdzeUMsSUFBSSxDQUFDdGQsTUFBTCxDQUFZLENBQVosRUFBZWlzQixvQkFBckIsTUFBK0MsSUFBL0MsSUFBdURqaEQsRUFBRSxLQUFLLEtBQUssQ0FBbkUsR0FBdUVBLEVBQXZFLEdBQTRFc3lDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUF2RyxDQUFqRCxFQUFtTDtFQUFFO0VBQXJMLENBRHNDLENBQTFDLENBRnNDLENBQTFDLENBMUJ5QyxFQWdDekMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLE1BQTFCLENBQTNCLENBQTFDLEVBQXlHO0VBQUU7RUFBM0csQ0FEc0MsRUFFdEMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNJLFVBQXJDLEVBQWlELENBQUMsR0FBR3Y1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3RkLE1BQUwsQ0FBWSxDQUFaLEVBQWV4MUIsSUFBZixHQUN0RTh5QyxJQUFJLENBQUM5eUMsSUFBTCxDQUFVOGdELGdCQUFWLENBQTJCaE8sSUFBSSxDQUFDdGQsTUFBTCxDQUFZLENBQVosRUFBZXgxQixJQUExQyxDQURzRSxHQUV0RTh5QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFGMkMsQ0FBakQsRUFFaUM7RUFBRTtFQUZuQyxDQURzQyxDQUExQyxDQUZzQyxDQUExQyxDQWhDeUMsQ0FBN0MsQ0FEK0MsQ0FBbkQsQ0FENkMsQ0FBakQsQ0FENkUsQ0FBakQsQ0FBaEM7QUErQ0g7O0FBQ0R2ekIsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUM5RGE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7O0FBQ0EsU0FBU1QsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJcDVDLEVBQUosRUFBUXlHLEVBQVI7O0VBQ0EsT0FBUSxDQUFDLEdBQUdwSCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcEIsVUFBckMsRUFBaUQsQ0FDN0UsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0gsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1Q0YsVUFBdkMsRUFBbUQsQ0FDL0MsQ0FBQyxHQUFHajVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QyxJQUF2QyxFQUE2QyxDQUN6QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsMkJBQTFCLENBQTNCLENBQTFDLEVBQThIO0VBQUU7RUFBaEksQ0FEc0MsRUFFdEMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNELFVBQXJDLEVBQWlELENBQUMsR0FBR2w1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQixDQUFDLzVDLEVBQUUsR0FBRys0QyxJQUFJLENBQUN0ZCxNQUFMLENBQVksQ0FBWixFQUFldzNCLDRCQUFyQixNQUF1RCxJQUF2RCxJQUErRGp6RCxFQUFFLEtBQUssS0FBSyxDQUEzRSxHQUErRUEsRUFBL0UsR0FBb0YrNEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQS9HLENBQWpELEVBQTJMO0VBQUU7RUFBN0wsQ0FEc0MsQ0FBMUMsQ0FGc0MsQ0FBMUMsQ0FEeUMsRUFPekMsQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLGFBQTFCLENBQTNCLENBQTFDLEVBQWdIO0VBQUU7RUFBbEgsQ0FEc0MsRUFFdEMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLEVBQ3JDLENBQUMsR0FBR241QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JwRCxJQUFJLENBQUN0ZCxNQUFMLENBQVksQ0FBWixFQUFlOWYsU0FBckMsRUFBZ0QsVUFBVXUzQyxFQUFWLEVBQWN4a0QsQ0FBZCxFQUFpQjtJQUM5SSxJQUFJMU8sRUFBSjs7SUFDQSxPQUFRLENBQUMsR0FBR1gsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqRXR2QyxHQUFHLEVBQUV3RSxDQUQ0RDtNQUVqRSxTQUFPLENBQUMsR0FBR3JQLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsb0JBQUQsRUFBdUI7UUFDaEQsUUFBUXh0QyxDQUFDLEtBQUtxcUMsSUFBSSxDQUFDdGQsTUFBTCxDQUFZLENBQVosRUFBZTlmLFNBQWYsQ0FBeUJuVyxNQUF6QixHQUFrQztNQURBLENBQXZCLENBQTFCO0lBRjBELENBQXJDLEVBSzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDQyxVQUFyQyxFQUFpRCxPQUFPLENBQUMsR0FBR3A1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQm1aLEVBQUUsQ0FBQ3ZyRCxRQUFILEdBQzdFLEdBQUczRyxNQUFILENBQVUrM0MsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsVUFBMUIsQ0FBVixFQUFpRCxJQUFqRCxFQUF1RG5ILE1BQXZELENBQThEKzNDLElBQUksQ0FBQzl5QyxJQUFMLENBQVV5QixTQUFWLENBQW9Cd3JELEVBQUUsQ0FBQ3ZyRCxRQUF2QixDQUE5RCxDQUQ2RSxHQUU3RW94QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsQ0FBdUIsVUFBdkIsQ0FGa0QsQ0FBUCxHQUVMLElBRjVDLEVBRWtEO0lBQUU7SUFGcEQsQ0FERCxFQUlDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNFLFVBQXJDLEVBQWlELENBQUMsR0FBR3I1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQixDQUFDLzVDLEVBQUUsR0FBR2t6RCxFQUFFLENBQUN2M0MsU0FBVCxNQUF3QixJQUF4QixJQUFnQzNiLEVBQUUsS0FBSyxLQUFLLENBQTVDLEdBQWdEQSxFQUFoRCxHQUFxRCs0QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsQ0FBdUIsV0FBdkIsQ0FBaEYsQ0FBakQsRUFBdUs7SUFBRTtJQUF6SyxDQUpELENBTDZCLEVBVTdCO0lBQUU7SUFWMkIsQ0FBaEM7RUFXSCxDQWJnRixDQUFwRCxFQWF6QjtFQUFJO0VBYnFCLENBRFMsRUFBMUMsQ0FGc0MsQ0FBMUMsQ0FQeUMsRUEwQnpDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixzQkFBMUIsQ0FBM0IsQ0FBMUMsRUFBeUg7RUFBRTtFQUEzSCxDQURzQyxFQUV0QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0csVUFBckMsRUFBaUQsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCLENBQUN0ekMsRUFBRSxHQUFHc3lDLElBQUksQ0FBQ3RkLE1BQUwsQ0FBWSxDQUFaLEVBQWVtc0Isb0JBQXJCLE1BQStDLElBQS9DLElBQXVEbmhELEVBQUUsS0FBSyxLQUFLLENBQW5FLEdBQXVFQSxFQUF2RSxHQUE0RXN5QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBdkcsQ0FBakQsRUFBbUw7RUFBRTtFQUFyTCxDQURzQyxDQUExQyxDQUZzQyxDQUExQyxDQTFCeUMsRUFnQ3pDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixNQUExQixDQUEzQixDQUExQyxFQUF5RztFQUFFO0VBQTNHLENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSSxVQUFyQyxFQUFpRCxDQUFDLEdBQUd2NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN0ZCxNQUFMLENBQVksQ0FBWixFQUFleDFCLElBQWYsR0FDdEU4eUMsSUFBSSxDQUFDOXlDLElBQUwsQ0FBVThnRCxnQkFBVixDQUEyQmhPLElBQUksQ0FBQ3RkLE1BQUwsQ0FBWSxDQUFaLEVBQWV4MUIsSUFBMUMsQ0FEc0UsR0FFdEU4eUMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBRjJDLENBQWpELEVBRWlDO0VBQUU7RUFGbkMsQ0FEc0MsQ0FBMUMsQ0FGc0MsQ0FBMUMsQ0FoQ3lDLENBQTdDLENBRCtDLENBQW5ELENBRDZDLENBQWpELENBRDZFLENBQWpELENBQWhDO0FBK0NIOztBQUNEdnpCLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDOURhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCOztBQUNBLFNBQVNQLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsT0FBUSxDQUFDLEdBQUcvNUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3BCLFVBQXJDLEVBQWlELEVBQzVFLENBQUMsR0FBRy80QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JwRCxJQUFJLENBQUNyZCxPQUEzQixFQUFvQyxVQUFVeTNCLEdBQVYsRUFBZXRQLENBQWYsRUFBa0I7SUFDbkksT0FBUSxDQUFDLEdBQUd4a0QsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqRXR2QyxHQUFHLEVBQUUyNUMsQ0FENEQ7TUFFakUsU0FBTyxDQUFDLEdBQUd4a0QsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxNQUFELEVBQVM7UUFDbEMsUUFBUTJILENBQUMsS0FBSzVrRCxNQUFNLENBQUMwUCxJQUFQLENBQVlvcUMsSUFBSSxDQUFDcmQsT0FBakIsRUFBMEJsMkIsTUFBMUIsR0FBbUM7TUFEZixDQUFULENBQTFCO0lBRjBELENBQXJDLEVBSzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzl5QyxJQUFMLENBQVVtdEQsV0FBVixDQUFzQkQsR0FBRyxDQUFDL0ssWUFBMUIsQ0FBM0IsQ0FBNUMsRUFBaUg7SUFBRTtJQUFuSCxDQUQ2QyxDQUFqRCxDQURELEVBSUMsQ0FBQyxHQUFHL29ELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0YsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHajVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1Q0QsVUFBdkMsRUFBbUQsQ0FDL0MsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QyxJQUF2QyxFQUE2QyxDQUN6QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsYUFBMUIsQ0FBM0IsQ0FBMUMsRUFBZ0g7SUFBRTtJQUFsSCxDQURzQyxFQUV0QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsRUFDckMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQmdYLEdBQUcsQ0FBQ3gzQyxTQUExQixFQUFxQyxVQUFVMDNDLEVBQVYsRUFBYzNrRCxDQUFkLEVBQWlCO01BQ25JLElBQUkxTyxFQUFKOztNQUNBLE9BQVEsQ0FBQyxHQUFHWCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1FBQ2pFdHZDLEdBQUcsRUFBRXdFLENBRDREO1FBRWpFLFNBQU8sQ0FBQyxHQUFHclAsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxvQkFBRCxFQUF1QjtVQUNoRCxRQUFReHRDLENBQUMsS0FBS3lrRCxHQUFHLENBQUN4M0MsU0FBSixDQUFjblcsTUFBZCxHQUF1QjtRQURXLENBQXZCLENBQTFCO01BRjBELENBQXJDLEVBSzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDQyxVQUFyQyxFQUFpRCxRQUFRLENBQUMsR0FBR3A1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnNaLEVBQUUsQ0FBQzFyRCxRQUFILEdBQzlFLEdBQUczRyxNQUFILENBQVUrM0MsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsVUFBMUIsQ0FBVixFQUFpRCxJQUFqRCxFQUF1RG5ILE1BQXZELENBQThEKzNDLElBQUksQ0FBQzl5QyxJQUFMLENBQVV5QixTQUFWLENBQW9CMnJELEVBQUUsQ0FBQzFyRCxRQUF2QixDQUE5RCxDQUQ4RSxHQUU5RW94QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsQ0FBdUIsVUFBdkIsQ0FGbUQsQ0FBUixHQUVMLElBRjVDLEVBRWtEO01BQUU7TUFGcEQsQ0FERCxFQUlDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNFLFVBQXJDLEVBQWlELENBQUMsR0FBR3I1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQixDQUFDLzVDLEVBQUUsR0FBR3F6RCxFQUFFLENBQUMxM0MsU0FBVCxNQUF3QixJQUF4QixJQUFnQzNiLEVBQUUsS0FBSyxLQUFLLENBQTVDLEdBQWdEQSxFQUFoRCxHQUFxRCs0QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsQ0FBdUIsV0FBdkIsQ0FBaEYsQ0FBakQsRUFBdUs7TUFBRTtNQUF6SyxDQUpELENBTDZCLEVBVTdCO01BQUU7TUFWMkIsQ0FBaEM7SUFXSCxDQWJnRixDQUFwRCxFQWF6QjtJQUFJO0lBYnFCLENBRFMsRUFBMUMsQ0FGc0MsQ0FBMUMsQ0FEeUMsQ0FBN0MsQ0FEK0MsQ0FBbkQsQ0FENkMsQ0FBakQsQ0FKRCxDQUw2QixFQWtDN0I7SUFBRTtJQWxDMkIsQ0FBaEM7RUFtQ0gsQ0FwQ2dGLENBQXBELEVBb0N6QjtFQUFJO0VBcENxQixDQURnRCxFQUFqRCxDQUFoQztBQXVDSDs7QUFDRHZ6QixjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ25EYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlFLFVBQVUsR0FBRztFQUFFdnVDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSXd1QyxVQUFVLEdBQUc7RUFBRXh1QyxHQUFHLEVBQUU7QUFBUCxDQUFqQjtBQUNBLElBQUl5dUMsVUFBVSxHQUFHO0VBQUV6dUMsR0FBRyxFQUFFO0FBQVAsQ0FBakI7QUFDQSxJQUFJMHVDLFVBQVUsR0FBRyxDQUFDLE1BQUQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsU0FBU1gsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxPQUFRLENBQUMsR0FBRy81QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcEIsVUFBckMsRUFBaUQsRUFDNUUsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnBELElBQUksQ0FBQ3JkLE9BQTNCLEVBQW9DLFVBQVV5M0IsR0FBVixFQUFldFAsQ0FBZixFQUFrQjtJQUNuSSxJQUFJN2pELEVBQUo7O0lBQ0EsT0FBUSxDQUFDLEdBQUdYLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7TUFDakV0dkMsR0FBRyxFQUFFMjVDLENBRDREO01BRWpFLFNBQU8sQ0FBQyxHQUFHeGtELEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsTUFBRCxFQUFTO1FBQ2xDLFFBQVEySCxDQUFDLEtBQUs1a0QsTUFBTSxDQUFDMFAsSUFBUCxDQUFZb3FDLElBQUksQ0FBQ3JkLE9BQWpCLEVBQTBCbDJCLE1BQTFCLEdBQW1DO01BRGYsQ0FBVCxDQUExQjtJQUYwRCxDQUFyQyxFQUs3QixDQUNDLENBQUMsR0FBR25HLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0gsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUM5eUMsSUFBTCxDQUFVc2lELGdCQUFWLENBQTJCNEssR0FBRyxDQUFDN0ssaUJBQS9CLENBQTNCLENBQTVDLEVBQTJIO0lBQUU7SUFBN0gsQ0FENkMsQ0FBakQsQ0FERCxFQUlDLENBQUMsR0FBR2pwRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNGLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2o1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUNELFVBQXZDLEVBQW1ELENBQy9DLENBQUMsR0FBR2w1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMsSUFBdkMsRUFBNkMsQ0FDekMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLE1BQTFCLENBQTNCLENBQTFDLEVBQXlHO0lBQUU7SUFBM0csQ0FEc0MsRUFFdEMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3JDMmEsR0FBRyxDQUFDN0ssaUJBQUosS0FBMEIsR0FBM0IsSUFDTyxDQUFDLEdBQUdqcEQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2YsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHcDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCb1osR0FBRyxDQUFDM0ssV0FBSixHQUNsR3pQLElBQUksQ0FBQzl5QyxJQUFMLENBQVVxdEQsVUFBVixDQUFxQkgsR0FBRyxDQUFDM0ssV0FBekIsQ0FEa0csR0FFbEd6UCxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsQ0FBdUIsTUFBdkIsQ0FGdUUsQ0FBbEQsRUFFWTtJQUFFO0lBRmQsQ0FEL0IsS0FJTyxDQUFDLEdBQUdyekIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2QsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCLENBQUMvNUMsRUFBRSxHQUFHbXpELEdBQUcsQ0FBQ3pLLFdBQVYsTUFBMkIsSUFBM0IsSUFBbUMxb0QsRUFBRSxLQUFLLEtBQUssQ0FBL0MsR0FBbURBLEVBQW5ELEdBQXdEKzRDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixDQUF1QixNQUF2QixDQUFuRixDQUFsRCxFQUFzSztJQUFFO0lBQXhLLENBSi9CLENBRHNDLENBQTFDLENBRnNDLENBQTFDLENBRHlDLEVBV3hDeWdDLEdBQUcsQ0FBQ2hPLGNBQUwsSUFDTyxDQUFDLEdBQUc5bEQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ2IsVUFBcEMsRUFBZ0QsQ0FDdkUsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixnQkFBMUIsQ0FBM0IsQ0FBMUMsRUFBbUg7SUFBRTtJQUFySCxDQUR1RSxFQUV2RSxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztNQUMvQnQ4QixNQUFNLEVBQUUsUUFEdUI7TUFFL0JuYSxJQUFJLEVBQUVveEQsR0FBRyxDQUFDaE87SUFGcUIsQ0FBbkMsRUFHRyxDQUFDLEdBQUc5bEQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJvWixHQUFHLENBQUNoTyxjQUEvQixDQUhILEVBR21EO0lBQUU7SUFIckQsRUFHd0V2TSxVQUh4RSxDQURzQyxDQUExQyxDQUZ1RSxDQUFoRCxDQUQvQixJQVVNLENBQUMsR0FBR3Y1QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FyQm1DLEVBc0J6QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsYUFBMUIsQ0FBM0IsQ0FBMUMsRUFBZ0g7SUFBRTtJQUFsSCxDQURzQyxFQUV0QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsRUFDckMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQmdYLEdBQUcsQ0FBQ3gzQyxTQUExQixFQUFxQyxVQUFVMDNDLEVBQVYsRUFBYzNrRCxDQUFkLEVBQWlCO01BQ25JLElBQUkxTyxFQUFKOztNQUNBLE9BQVEsQ0FBQyxHQUFHWCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1FBQ2pFdHZDLEdBQUcsRUFBRXdFLENBRDREO1FBRWpFLFNBQU8sQ0FBQyxHQUFHclAsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxvQkFBRCxFQUF1QjtVQUNoRCxRQUFReHRDLENBQUMsS0FBS3lrRCxHQUFHLENBQUN4M0MsU0FBSixDQUFjblcsTUFBZCxHQUF1QjtRQURXLENBQXZCLENBQTFCO01BRjBELENBQXJDLEVBSzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSyxVQUFyQyxFQUFpRCxRQUFRLENBQUMsR0FBR3g1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnNaLEVBQUUsQ0FBQzFyRCxRQUFILEdBQzlFLEdBQUczRyxNQUFILENBQVUrM0MsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsVUFBMUIsQ0FBVixFQUFpRCxJQUFqRCxFQUF1RG5ILE1BQXZELENBQThEKzNDLElBQUksQ0FBQzl5QyxJQUFMLENBQVV5QixTQUFWLENBQW9CMnJELEVBQUUsQ0FBQzFyRCxRQUF2QixDQUE5RCxDQUQ4RSxHQUU5RW94QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsQ0FBdUIsVUFBdkIsQ0FGbUQsQ0FBUixHQUVMLElBRjVDLEVBRWtEO01BQUU7TUFGcEQsQ0FERCxFQUlDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNNLFdBQXJDLEVBQWtELENBQUMsR0FBR3o1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQixDQUFDLzVDLEVBQUUsR0FBR3F6RCxFQUFFLENBQUMxM0MsU0FBVCxNQUF3QixJQUF4QixJQUFnQzNiLEVBQUUsS0FBSyxLQUFLLENBQTVDLEdBQWdEQSxFQUFoRCxHQUFxRCs0QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsQ0FBdUIsV0FBdkIsQ0FBaEYsQ0FBbEQsRUFBd0s7TUFBRTtNQUExSyxDQUpELENBTDZCLEVBVTdCO01BQUU7TUFWMkIsQ0FBaEM7SUFXSCxDQWJnRixDQUFwRCxFQWF6QjtJQUFJO0lBYnFCLENBRFMsRUFBMUMsQ0FGc0MsQ0FBMUMsQ0F0QnlDLENBQTdDLENBRCtDLENBQW5ELENBRDZDLENBQWpELENBSkQsQ0FMNkIsRUF1RDdCO0lBQUU7SUF2RDJCLENBQWhDO0VBd0RILENBMURnRixDQUFwRCxFQTBEekI7RUFBSTtFQTFEcUIsQ0FEZ0QsRUFBakQsQ0FBaEM7QUE2REg7O0FBQ0R2ekIsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUM3RWE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRXh1QyxHQUFHLEVBQUU7QUFBUCxDQUFqQjtBQUNBLElBQUl5dUMsVUFBVSxHQUFHO0VBQUV6dUMsR0FBRyxFQUFFO0FBQVAsQ0FBakI7QUFDQSxJQUFJMHVDLFVBQVUsR0FBRztFQUFFMXVDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSTJ1QyxVQUFVLEdBQUc7RUFBRTN1QyxHQUFHLEVBQUU7QUFBUCxDQUFqQjtBQUNBLElBQUk0dUMsV0FBVyxHQUFHO0VBQUU1dUMsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJbXdDLFdBQVcsR0FBRztFQUFFbndDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSW93QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRXJ3QyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUlzd0MsV0FBVyxHQUFHO0VBQ2R6NEMsSUFBSSxFQUFFLG9CQURRO0VBRWRtYSxNQUFNLEVBQUU7QUFGTSxDQUFsQjtBQUlBLElBQUl1K0IsV0FBVyxHQUFHO0VBQUV2d0MsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJd3dDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxTQUFTeEMsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxPQUFRLENBQUMsR0FBRy81QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcEIsVUFBckMsRUFBaUQsRUFDNUUsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnBELElBQUksQ0FBQ3BkLE1BQTNCLEVBQW1DLFVBQVU0M0IsR0FBVixFQUFlcnpDLENBQWYsRUFBa0I7SUFDbEksSUFBSWxnQixFQUFKOztJQUNBLE9BQVEsQ0FBQyxHQUFHWCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pFdHZDLEdBQUcsRUFBRWdXLENBRDREO01BRWpFLFNBQU8sQ0FBQyxHQUFHN2dCLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsTUFBRCxFQUFTO1FBQ2xDLFFBQVFoOEIsQ0FBQyxLQUFLamhCLE1BQU0sQ0FBQzBQLElBQVAsQ0FBWW9xQyxJQUFJLENBQUNwZCxNQUFqQixFQUF5Qm4yQixNQUF6QixHQUFrQztNQURkLENBQVQsQ0FBMUI7SUFGMEQsQ0FBckMsRUFLN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2g1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCd1osR0FBRyxDQUFDckssaUJBQUosR0FDakVuUSxJQUFJLENBQUM5eUMsSUFBTCxDQUFVa2pELGdCQUFWLENBQTJCb0ssR0FBRyxDQUFDckssaUJBQS9CLENBRGlFLEdBRWpFblEsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLENBQXVCLFlBQXZCLENBRnNDLENBQTVDLEVBRTZDO0lBQUU7SUFGL0MsQ0FENkMsQ0FBakQsQ0FERCxFQU1DLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNGLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2o1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUNELFVBQXZDLEVBQW1ELENBQy9DLENBQUMsR0FBR2w1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMsSUFBdkMsRUFBNkMsQ0FDekMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLE1BQTFCLENBQTNCLENBQTFDLEVBQXlHO0lBQUU7SUFBM0csQ0FEc0MsRUFFdEMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNDLFVBQXJDLEVBQWlELENBQzVDOGEsR0FBRyxDQUFDaGtELElBQUwsSUFDTyxDQUFDLEdBQUdsUSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDZCxVQUF0QyxFQUFrRCxDQUFDLEdBQUdyNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQy81QyxFQUFFLEdBQUd1ekQsR0FBRyxDQUFDaGtELElBQVYsTUFBb0IsSUFBcEIsSUFBNEJ2UCxFQUFFLEtBQUssS0FBSyxDQUF4QyxHQUE0Q0EsRUFBNUMsR0FBaUQrNEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBQTVFLENBQWxELEVBQXlKO0lBQUU7SUFBM0osQ0FEL0IsSUFFTzZnQyxHQUFHLENBQUNqNEIsSUFBTCxJQUNLLENBQUMsR0FBR2o4QixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDYixVQUF0QyxFQUFrRCxDQUFDLEdBQUd0NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ3WixHQUFHLENBQUNqNEIsSUFBSixHQUFXeWQsSUFBSSxDQUFDOXlDLElBQUwsQ0FBVW1qRCxVQUFWLENBQXFCbUssR0FBRyxDQUFDajRCLElBQXpCLENBQVgsR0FBNEN5ZCxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFBdkUsQ0FBbEQsRUFBb0o7SUFBRTtJQUF0SixDQUQ3QixJQUVLNmdDLEdBQUcsQ0FBQ2xLLGFBQUwsSUFDSyxDQUFDLEdBQUdocUQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ1osVUFBdEMsRUFBa0QsQ0FBQyxHQUFHdjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCd1osR0FBRyxDQUFDbEssYUFBSixHQUNsR3RRLElBQUksQ0FBQzl5QyxJQUFMLENBQVVxakQsY0FBVixDQUF5QmlLLEdBQUcsQ0FBQ2xLLGFBQTdCLENBRGtHLEdBRWxHdFEsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLEVBRnVFLENBQWxELEVBRU07SUFBRTtJQUZSLENBRDdCLElBSUs2Z0MsR0FBRyxDQUFDaEssUUFBTCxJQUNLLENBQUMsR0FBR2xxRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDWCxVQUF0QyxFQUFrRCxDQUFDLEdBQUd4NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ3WixHQUFHLENBQUNoSyxRQUFKLEdBQ2xHeFEsSUFBSSxDQUFDOXlDLElBQUwsQ0FBVXV0RCxVQUFWLENBQXFCRCxHQUFHLENBQUNoSyxRQUF6QixDQURrRyxHQUVsR3hRLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUZ1RSxDQUFsRCxFQUVNO0lBQUU7SUFGUixDQUQ3QixJQUlLNmdDLEdBQUcsQ0FBQzlKLFVBQUwsSUFDSyxDQUFDLEdBQUdwcUQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ1YsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHejVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCd1osR0FBRyxDQUFDOUosVUFBSixHQUNuRzFRLElBQUksQ0FBQzl5QyxJQUFMLENBQVV3dEQsWUFBVixDQUF1QkYsR0FBRyxDQUFDOUosVUFBM0IsQ0FEbUcsR0FFbkcxUSxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsRUFGd0UsQ0FBbkQsRUFFTTtJQUFFO0lBRlIsQ0FEN0IsSUFJSSxDQUFDLEdBQUdyekIsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBakJ1QixDQUFqRCxDQURzQyxDQUExQyxDQUZzQyxDQUExQyxDQUR5QyxFQXlCeEMyWixHQUFHLENBQUNySyxpQkFBSixLQUEwQixJQUExQixJQUFrQ3FLLEdBQUcsQ0FBQ3JLLGlCQUFKLEtBQTBCLElBQTdELElBQ08sQ0FBQyxHQUFHN3BELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NhLFdBQXBDLEVBQWlELENBQ3hFLENBQUMsR0FBR2g3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsZ0JBQTFCLENBQTNCLENBQTFDLEVBQW1IO0lBQUU7SUFBckgsQ0FEd0UsRUFFeEUsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM4QixXQUFyQyxFQUFrRCxDQUM3Q2laLEdBQUcsQ0FBQ3BPLGNBQUwsSUFDTyxDQUFDLEdBQUc5bEQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2UsV0FBdEMsRUFBbUQsQ0FDMUUsQ0FBQyxHQUFHbDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ2dDLFdBQW5DLEVBQWdELENBQUMsR0FBR243QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQndaLEdBQUcsQ0FBQ3BPLGNBQS9CLENBQWhELEVBQWdHO0lBQUU7SUFBbEcsQ0FEMEUsQ0FBbkQsQ0FEL0IsS0FJTyxDQUFDLEdBQUc5bEQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2lCLFdBQXRDLEVBQW1ELENBQUMsR0FBR3A3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixFQUEzQixDQUFuRCxFQUF5RztJQUFFO0lBQTNHLENBSi9CLENBRDhDLENBQWxELENBRHNDLENBQTFDLENBRndFLENBQWpELENBRC9CLElBYU0sQ0FBQyxHQUFHcnpCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQXRDbUMsRUF1Q3pDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixhQUExQixDQUEzQixDQUExQyxFQUFnSDtJQUFFO0lBQWxILENBRHNDLEVBRXRDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxFQUNyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCb1gsR0FBRyxDQUFDNTNDLFNBQTFCLEVBQXFDLFVBQVUwM0MsRUFBVixFQUFjM2tELENBQWQsRUFBaUI7TUFDbkksSUFBSTFPLEVBQUo7O01BQ0EsT0FBUSxDQUFDLEdBQUdYLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFDakV0dkMsR0FBRyxFQUFFd0UsQ0FENEQ7UUFFakUsU0FBTyxDQUFDLEdBQUdyUCxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLG9CQUFELEVBQXVCO1VBQ2hELFFBQVF4dEMsQ0FBQyxLQUFLNmtELEdBQUcsQ0FBQzUzQyxTQUFKLENBQWNuVyxNQUFkLEdBQXVCO1FBRFcsQ0FBdkIsQ0FBMUI7TUFGMEQsQ0FBckMsRUFLN0IsQ0FDQyxDQUFDLEdBQUduRyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNrQyxXQUFyQyxFQUFrRCxRQUFRLENBQUMsR0FBR3I3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnNaLEVBQUUsQ0FBQzFyRCxRQUFILEdBQy9FLEdBQUczRyxNQUFILENBQVUrM0MsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsVUFBMUIsQ0FBVixFQUFpRCxJQUFqRCxFQUF1RG5ILE1BQXZELENBQThEKzNDLElBQUksQ0FBQzl5QyxJQUFMLENBQVV5QixTQUFWLENBQW9CMnJELEVBQUUsQ0FBQzFyRCxRQUF2QixDQUE5RCxDQUQrRSxHQUUvRW94QyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsQ0FBdUIsVUFBdkIsQ0FGb0QsQ0FBUixHQUVOLElBRjVDLEVBRWtEO01BQUU7TUFGcEQsQ0FERCxFQUlDLENBQUMsR0FBR3J6QixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNtQyxXQUFyQyxFQUFrRCxDQUFDLEdBQUd0N0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQy81QyxFQUFFLEdBQUdxekQsRUFBRSxDQUFDMTNDLFNBQVQsTUFBd0IsSUFBeEIsSUFBZ0MzYixFQUFFLEtBQUssS0FBSyxDQUE1QyxHQUFnREEsRUFBaEQsR0FBcUQrNEMsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZStyQixPQUFmLENBQXVCLFdBQXZCLENBQWhGLENBQWxELEVBQXdLO01BQUU7TUFBMUssQ0FKRCxDQUw2QixFQVU3QjtNQUFFO01BVjJCLENBQWhDO0lBV0gsQ0FiZ0YsQ0FBcEQsRUFhekI7SUFBSTtJQWJxQixDQURTLEVBQTFDLENBRnNDLENBQTFDLENBdkN5QyxDQUE3QyxDQUQrQyxDQUFuRCxDQUQ2QyxDQUFqRCxDQU5ELENBTDZCLEVBMEU3QjtJQUFFO0lBMUUyQixDQUFoQztFQTJFSCxDQTdFZ0YsQ0FBcEQsRUE2RXpCO0VBQUk7RUE3RXFCLENBRGdELEVBQWpELENBQWhDO0FBZ0ZIOztBQUNEdnpCLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDMUdhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCOztBQUNBLFNBQVNELE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsT0FBUSxDQUFDLEdBQUcvNUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3BCLFVBQXJDLEVBQWlELENBQUMsR0FBRy80QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ25kLE1BQUwsQ0FBWSxDQUFaLEVBQWU4M0IsZ0JBQWYsR0FDdEczYSxJQUFJLENBQUM5eUMsSUFBTCxDQUFVMHRELGNBQVYsQ0FBeUI1YSxJQUFJLENBQUNuZCxNQUFMLENBQVksQ0FBWixFQUFlODNCLGdCQUF4QyxDQURzRyxHQUV0RzNhLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixDQUF1QixrQkFBdkIsQ0FGMkUsQ0FBakQsRUFFbUI7RUFBRTtFQUZyQixDQUFoQztBQUdIOztBQUNEdnpCLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDVmE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsU0FBUzY0QyxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELE9BQU8sQ0FBQyxHQUFHLzVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDemxDLElBQUwsQ0FBVSxDQUFWLEVBQWFBLElBQWIsR0FBb0J5bEMsSUFBSSxDQUFDN3BCLFVBQUwsQ0FBZ0I2cEIsSUFBSSxDQUFDemxDLElBQUwsQ0FBVSxDQUFWLEVBQWFBLElBQTdCLENBQXBCLEdBQXlEeWxDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWUrckIsT0FBZixDQUF1QixNQUF2QixDQUFwRixDQUFQO0FBQ0g7O0FBQ0R2ekIsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUNQYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxTQUFTNjRDLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsT0FBTyxDQUFDLEdBQUcvNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN6ZCxJQUFMLENBQVUsQ0FBVixFQUFhNnVCLHFCQUFiLEdBQzVCcFIsSUFBSSxDQUFDOXlDLElBQUwsQ0FBVWdrRCxlQUFWLENBQTBCbFIsSUFBSSxDQUFDemQsSUFBTCxDQUFVLENBQVYsRUFBYTZ1QixxQkFBdkMsQ0FENEIsR0FFNUJwUixJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsQ0FBdUIsTUFBdkIsQ0FGQyxDQUFQO0FBR0g7O0FBQ0R2ekIsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUNUYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUNibnVDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSW91QyxVQUFVLEdBQUc7RUFDYnB1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjs7QUFJQSxTQUFTaXVDLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsT0FBUSxDQUFDLEdBQUcvNUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FDaEYsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0osVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztJQUNsQyxTQUFPLENBQUMsR0FBR241QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQjtNQUM3QixlQUFlbkQsSUFBSSxDQUFDMzVDLEtBQUwsQ0FBVyxDQUFYLEVBQWNnb0Q7SUFEQSxDQUExQjtFQUQyQixDQUF0QyxFQUlHLENBQUMsR0FBRy9uRCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzM1QyxLQUFMLENBQVcsQ0FBWCxFQUFjZ29ELE1BQWQsR0FDeEI1Z0QsTUFBTSxDQUFDdXlDLElBQUksQ0FBQzM1QyxLQUFMLENBQVcsQ0FBWCxFQUFjZ29ELE1BQWYsQ0FBTixDQUE2QkMsY0FBN0IsRUFEd0IsR0FFeEJ0TyxJQUFJLENBQUNweUMsU0FBTCxDQUFlK3JCLE9BQWYsQ0FBdUIsWUFBdkIsQ0FGSCxDQUpILEVBTTZDO0VBQUU7RUFOL0MsQ0FENkMsRUFRNUNxbUIsSUFBSSxDQUFDMzVDLEtBQUwsQ0FBVyxDQUFYLEVBQWNnb0QsTUFBZixJQUNPLENBQUMsR0FBRy9uRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDbkIsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDMzVDLEtBQUwsQ0FBVyxDQUFYLEVBQWNrb0QsUUFBekMsQ0FBbEQsRUFBc0c7RUFBRTtFQUF4RyxDQUQvQixJQUVNLENBQUMsR0FBR2pvRCxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FWdUMsQ0FBakQsQ0FEZ0YsRUFhL0ViLElBQUksQ0FBQzM1QyxLQUFMLENBQVcsQ0FBWCxFQUFjZ29ELE1BQWYsSUFDTyxDQUFDLEdBQUcvbkQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2xCLFVBQXJDLEVBQWlELENBQUMsR0FBR2o1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzM1QyxLQUFMLENBQVcsQ0FBWCxFQUFja1UsSUFBZCxHQUNqRyxHQUFHdFMsTUFBSCxDQUFVKzNDLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFdBQTFCLEVBQXVDNFEsV0FBdkMsRUFBVixFQUFnRSxHQUFoRSxFQUFxRS9YLE1BQXJFLENBQTRFKzNDLElBQUksQ0FBQzdwQixVQUFMLENBQWdCNnBCLElBQUksQ0FBQzM1QyxLQUFMLENBQVcsQ0FBWCxFQUFja1UsSUFBOUIsQ0FBNUUsQ0FEaUcsR0FFakcsRUFGc0UsQ0FBakQsRUFFaEI7RUFBRTtFQUZjLENBRC9CLElBSU0sQ0FBQyxHQUFHalUsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBakIwRSxDQUFwRCxFQWtCN0I7RUFBRztFQWxCMEIsQ0FBaEM7QUFtQkg7O0FBQ0R6NkMsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUNsQ2E7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFDYixjQUFjLGFBREQ7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFDYixTQUFPLHVDQURNO0VBRWJ4MkMsSUFBSSxFQUFFO0FBRk8sQ0FBakI7O0FBSUEsSUFBSTAyQyxVQUFVLEdBQUcsYUFBYyxDQUFDLEdBQUdwNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0VBQUUsU0FBTztBQUFULENBQXJDLEVBQWdILElBQWhILEVBQXNILENBQUM7QUFBRTtBQUF6SCxDQUEvQjs7QUFDQSxTQUFTTCxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELE9BQVEsQ0FBQyxHQUFHLzVDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNwQixVQUFyQyxFQUFpRCxDQUM1RWMsTUFBTSxDQUFDMWlDLGVBQVIsSUFDTyxDQUFDLEdBQUduWCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxRQUFELENBQTdCLEVBQXlDO0lBQUVodkMsR0FBRyxFQUFFO0VBQVAsQ0FBekMsQ0FEL0IsSUFFTSxDQUFDLEdBQUc3SyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FIdUUsRUFJN0UsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0gsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0YsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHajVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ0QsVUFBbkMsRUFBK0MsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLFFBQTVCLENBQTNCLENBQS9DLEVBQWtIO0VBQUU7RUFBcEgsQ0FENkMsQ0FBakQsQ0FENkMsQ0FBakQsQ0FKNkUsRUFTN0UsQ0FBQyxHQUFHOUksS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJULE1BQU0sQ0FBQyxXQUFELENBQTdCLEVBQTRDO0lBQ3hDM2hDLEtBQUssRUFBRSxRQURpQztJQUV4QyxhQUFhLEVBRjJCO0lBR3hDLG1CQUFtQjtFQUhxQixDQUE1QyxFQUlHO0lBQ0MsV0FBUyxDQUFDLEdBQUdsWSxLQUFLLENBQUM0NkMsT0FBVixFQUFtQixZQUFZO01BQUUsT0FBTyxDQUM3Q3hCLFVBRDZDLENBQVA7SUFFdEMsQ0FGSyxDQURWO0lBSUNuMEMsQ0FBQyxFQUFFO0lBQUU7O0VBSk4sQ0FKSCxDQVQ2RSxFQW1CN0UsQ0FBQyxHQUFHakYsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLG1CQUE5QixDQW5CNkUsQ0FBakQsQ0FBaEM7QUFxQkg7O0FBQ0R6NkMsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUN0Q2E7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFDYm51QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjs7QUFJQSxTQUFTaXVDLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSXdhLG9CQUFvQixHQUFHLENBQUMsR0FBR3YwRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsV0FBNUIsQ0FBM0I7O0VBQ0EsT0FBUSxDQUFDLEdBQUdqNkMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3BCLFVBQXJDLEVBQWlELENBQzVFYyxNQUFNLENBQUMvYyxlQUFSLElBQ08sQ0FBQyxHQUFHOThCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNuQixVQUFyQyxFQUFpRCxDQUN4RSxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJULE1BQU0sQ0FBQyxlQUFELENBQTdCLEVBQWdEO0lBQUUsU0FBTztFQUFULENBQWhELENBRHdFLENBQWpELENBRC9CLElBSU0sQ0FBQyxHQUFHNzVDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQUx1RSxFQU03RSxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJpYSxvQkFBdkIsRUFBNkM7SUFDekMvckQsRUFBRSxFQUFFLE9BRHFDO0lBRXpDeEgsR0FBRyxFQUFFLE9BRm9DO0lBR3pDNEYsSUFBSSxFQUFFLE1BSG1DO0lBSXpDLFNBQU8sQ0FBQyxHQUFHNUcsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEI7TUFBRSxhQUFhaEQsTUFBTSxDQUFDL2M7SUFBdEIsQ0FBMUIsQ0FKa0M7SUFLekNZLE9BQU8sRUFBRW1jLE1BQU0sQ0FBQ3hjLFlBTHlCO0lBTXpDaUIsTUFBTSxFQUFFdWIsTUFBTSxDQUFDdmI7RUFOMEIsQ0FBN0MsRUFPRyxJQVBILEVBT1M7RUFBRTtFQVBYLEVBT3dCLENBQUMsT0FBRCxFQUFVLFNBQVYsRUFBcUIsUUFBckIsQ0FQeEIsQ0FONkUsQ0FBakQsQ0FBaEM7QUFlSDs7QUFDRHgrQixjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQzNCYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFbHVDLEdBQUcsRUFBRTtBQUFQLENBQWpCOztBQUNBLElBQUltdUMsVUFBVSxHQUFHLGFBQWMsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztFQUFFLFNBQU87QUFBVCxDQUFwQyxFQUE4RSx1QkFBOUUsRUFBdUcsQ0FBQztBQUFFO0FBQTFHLENBQS9COztBQUNBLElBQUlGLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlFLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjs7QUFDQSxJQUFJQyxVQUFVLEdBQUcsYUFBYyxDQUFDLEdBQUd0NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLGNBQTVDLEVBQTRELENBQUM7QUFBRTtBQUEvRCxDQUEvQjs7QUFDQSxJQUFJSSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7O0FBQ0EsSUFBSUMsVUFBVSxHQUFHLGFBQWMsQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxPQUE1QyxFQUFxRCxDQUFDO0FBQUU7QUFBeEQsQ0FBL0I7O0FBQ0EsSUFBSU0sV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLElBQUl1QixXQUFXLEdBQUcsYUFBYyxDQUFDLEdBQUdoN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLFNBQTVDLEVBQXVELENBQUM7QUFBRTtBQUExRCxDQUFoQzs7QUFDQSxJQUFJOEIsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLElBQUlDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBR2w3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsUUFBNUMsRUFBc0QsQ0FBQztBQUFFO0FBQXpELENBQWhDOztBQUNBLElBQUlnQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHcDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxhQUE1QyxFQUEyRCxDQUFDO0FBQUU7QUFBOUQsQ0FBaEM7O0FBQ0EsSUFBSWtDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxJQUFJQyxXQUFXLEdBQUcsYUFBYyxDQUFDLEdBQUd0N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLFFBQTVDLEVBQXNELENBQUM7QUFBRTtBQUF6RCxDQUFoQzs7QUFDQSxJQUFJb0MsV0FBVyxHQUFHO0VBQUUxd0MsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJMndDLFdBQVcsR0FBRztFQUFFM3dDLEdBQUcsRUFBRTtBQUFQLENBQWxCOztBQUNBLElBQUk0d0MsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHejdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztFQUFFLFNBQU87QUFBVCxDQUFwQyxFQUF5RCxDQUNyRixhQUFjLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7RUFBRSxTQUFPO0FBQVQsQ0FBckMsRUFBOEUsZUFBOUUsQ0FEdUUsQ0FBekQsRUFFN0IsQ0FBQztBQUFFO0FBRjBCLENBQWhDOztBQUdBLElBQUl1QyxXQUFXLEdBQUcsQ0FDZEQsV0FEYyxDQUFsQjtBQUdBLElBQUlFLFdBQVcsR0FBRztFQUFFOXdDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSSt3QyxXQUFXLEdBQUcsQ0FBQyxTQUFELENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLElBQUlDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBR2w4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7RUFBRSxTQUFPO0FBQVQsQ0FBbkMsRUFBZ0YsaURBQWhGLEVBQW1JLENBQUM7QUFBRTtBQUF0SSxDQUFoQzs7QUFDQSxJQUFJZ0QsV0FBVyxHQUFHO0VBQUV0eEMsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJdXhDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkenhDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSTB4QyxXQUFXLEdBQUc7RUFDZDF4QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUkyeEMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsU0FBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkL3hDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSTQxQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHOWdELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztFQUFFLFNBQU87QUFBVCxDQUF0QyxFQUF5RSxXQUF6RSxFQUFzRixDQUFDO0FBQUU7QUFBekYsQ0FBaEM7O0FBQ0EsSUFBSTRILFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxJQUFJQyxXQUFXLEdBQUcsYUFBYyxDQUFDLEdBQUdqaEQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0VBQUUsU0FBTztBQUFULENBQXJDLEVBQXdFLE9BQXhFLEVBQWlGLENBQUM7QUFBRTtBQUFwRixDQUFoQzs7QUFDQSxJQUFJK0gsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLElBQUlDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBR3BoRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7RUFBRSxTQUFPO0FBQVQsQ0FBckMsRUFBd0UsT0FBeEUsRUFBaUYsQ0FBQztBQUFFO0FBQXBGLENBQWhDOztBQUNBLElBQUlrSSxXQUFXLEdBQUc7RUFDZHgyQyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUl5MkMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLElBQUlDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBR3poRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsT0FBNUMsRUFBcUQsQ0FBQztBQUFFO0FBQXhELENBQWhDOztBQUNBLElBQUl1SSxXQUFXLEdBQUc7RUFBRTcyQyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUk4MkMsV0FBVyxHQUFHO0VBQ2Q5MkMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7O0FBSUEsSUFBSSsyQyxXQUFXLEdBQUcsYUFBYyxDQUFDLEdBQUc1aEQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0VBQUUsU0FBTztBQUFULENBQXJDLEVBQXdELGVBQXhELEVBQXlFLENBQUM7QUFBRTtBQUE1RSxDQUFoQzs7QUFDQSxJQUFJMEksV0FBVyxHQUFHLENBQ2RELFdBRGMsQ0FBbEI7QUFHQSxJQUFJRSxXQUFXLEdBQUc7RUFBRWozQyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUlrM0MsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLElBQUlDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBR25pRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7RUFBRSxTQUFPO0FBQVQsQ0FBcEMsRUFBeUUsQ0FDckcsYUFBYyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0VBQUUsU0FBTztBQUFULENBQXJDLEVBQXVFLG9DQUF2RSxDQUR1RixDQUF6RSxFQUU3QixDQUFDO0FBQUU7QUFGMEIsQ0FBaEM7O0FBR0EsSUFBSWlKLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUk4SyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZGhqRCxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjs7QUFJQSxJQUFJaWpELFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBRzl0RCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7RUFBRSxTQUFPO0FBQVQsQ0FBckMsRUFBb0UsZUFBcEUsRUFBcUYsQ0FBQztBQUFFO0FBQXhGLENBQWhDOztBQUNBLElBQUk0VSxXQUFXLEdBQUcsQ0FDZEQsV0FEYyxDQUFsQjtBQUdBLElBQUlFLFdBQVcsR0FBRztFQUNkbmpELEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCOztBQUlBLElBQUlvakQsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHanVELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztFQUFFLFNBQU87QUFBVCxDQUFyQyxFQUFvRSxlQUFwRSxFQUFxRixDQUFDO0FBQUU7QUFBeEYsQ0FBaEM7O0FBQ0EsSUFBSStVLFdBQVcsR0FBRyxDQUNkRCxXQURjLENBQWxCO0FBR0EsSUFBSUUsV0FBVyxHQUFHO0VBQUV0akQsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJdWpELFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLFNBQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRTNqRCxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUk0akQsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsU0FBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFaGtELEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSWlrRCxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxZQUFZLEdBQUc7RUFBRXJrRCxHQUFHLEVBQUU7QUFBUCxDQUFuQjtBQUNBLElBQUlza0QsWUFBWSxHQUFHO0VBQUUsU0FBTztBQUFULENBQW5CO0FBQ0EsSUFBSUMsWUFBWSxHQUFHO0VBQUUsU0FBTztBQUFULENBQW5CO0FBQ0EsSUFBSUMsWUFBWSxHQUFHO0VBQUUsU0FBTztBQUFULENBQW5CO0FBQ0EsSUFBSUMsWUFBWSxHQUFHO0VBQUUsU0FBTztBQUFULENBQW5CO0FBQ0EsSUFBSUMsWUFBWSxHQUFHO0VBQUUsU0FBTztBQUFULENBQW5CO0FBQ0EsSUFBSUMsWUFBWSxHQUFHO0VBQUUsU0FBTztBQUFULENBQW5CO0FBQ0EsSUFBSWdGLFlBQVksR0FBRztFQUFFLFNBQU87QUFBVCxDQUFuQjtBQUNBLElBQUlDLFlBQVksR0FBRztFQUFFLFNBQU87QUFBVCxDQUFuQjtBQUNBLElBQUlDLFlBQVksR0FBRztFQUNmN3BELEdBQUcsRUFBRSxFQURVO0VBRWYsU0FBTztBQUZRLENBQW5COztBQUlBLElBQUk4cEQsWUFBWSxHQUFHLGFBQWMsQ0FBQyxHQUFHMzBELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztFQUFFLFNBQU87QUFBVCxDQUFyQyxFQUF3RCxlQUF4RCxFQUF5RSxDQUFDO0FBQUU7QUFBNUUsQ0FBakM7O0FBQ0EsSUFBSXliLFlBQVksR0FBRyxDQUNmRCxZQURlLENBQW5COztBQUdBLFNBQVM3YixNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELElBQUlwNUMsRUFBSixFQUFReUcsRUFBUixFQUFZK0IsRUFBWixFQUFnQnlNLEVBQWhCLEVBQW9CQyxFQUFwQixFQUF3QmdXLEVBQXhCLEVBQTRCQyxFQUE1QixFQUFnQ0MsRUFBaEMsRUFBb0NDLEVBQXBDLEVBQXdDQyxFQUF4QyxFQUE0Q2laLEVBQTVDLEVBQWdEQyxFQUFoRCxFQUFvRDB2QixFQUFwRCxFQUF3REMsRUFBeEQ7O0VBQ0EsSUFBSTlhLGtCQUFrQixHQUFHLENBQUMsR0FBR2g2QyxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsU0FBNUIsQ0FBekI7O0VBQ0EsT0FBUSxDQUFDLEdBQUdqNkMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUNqRSxTQUFPLENBQUMsR0FBR242QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLGdDQUFELEVBQW1DO01BQUUsVUFBVWpELE1BQU0sQ0FBQy9vQyxXQUFQLEtBQXVCO0lBQW5DLENBQW5DLENBQTFCO0VBRDBELENBQXJDLEVBRTdCLENBQ0Urb0MsTUFBTSxDQUFDL29DLFdBQVAsS0FBdUIsTUFBeEIsSUFDTyxDQUFDLEdBQUc3USxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcEIsVUFBckMsRUFBaUQsQ0FDeEVDLFVBRHdFLEVBRXhFLENBQUMsR0FBR2g1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNGLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2o1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUNELFVBQXZDLEVBQW1ELENBQy9DLENBQUMsR0FBR2w1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUNDLFVBQXZDLEVBQW1ELENBQy9DLENBQUMsR0FBR3A1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRSxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdyNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO0lBQ3BDLFNBQU8sS0FENkI7SUFFcENrQixPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7TUFBRSxPQUFRWixNQUFNLENBQUNsWixVQUFQLENBQWtCLGNBQWxCLENBQVI7SUFBNkMsQ0FBM0Y7RUFGMkIsQ0FBeEMsRUFHRyxDQUNFa1osTUFBTSxDQUFDaHJDLE1BQVAsQ0FBY214QixJQUFkLEtBQXVCLEtBQXZCLElBQ0c2WixNQUFNLENBQUNockMsTUFBUCxDQUFja3hCLE9BQWQsS0FBMEIsY0FEOUIsSUFFTyxDQUFDLEdBQUcvL0IsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCWCxrQkFBdkIsRUFBMkM7SUFDbEVudkMsR0FBRyxFQUFFLENBRDZEO0lBRWxFLFNBQU8sU0FGMkQ7SUFHbEV1RixJQUFJLEVBQUU7RUFINEQsQ0FBM0MsQ0FGL0IsS0FPTyxDQUFDLEdBQUdwUSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJYLGtCQUF2QixFQUEyQztJQUNsRW52QyxHQUFHLEVBQUUsQ0FENkQ7SUFFbEUsU0FBTyxTQUYyRDtJQUdsRXVGLElBQUksRUFBRTtFQUg0RCxDQUEzQyxDQVAvQixDQURELENBSEgsQ0FENkMsRUFrQjdDa3BDLFVBbEI2QyxDQUFqRCxDQURzQyxDQUExQyxDQURzQyxFQXVCdEMsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSSxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd2NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO0lBQ3BDLFNBQU8sS0FENkI7SUFFcENrQixPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7TUFBRSxPQUFRWixNQUFNLENBQUNsWixVQUFQLENBQWtCLE9BQWxCLENBQVI7SUFBc0MsQ0FBcEY7RUFGMkIsQ0FBeEMsRUFHRyxDQUNFa1osTUFBTSxDQUFDaHJDLE1BQVAsQ0FBY214QixJQUFkLEtBQXVCLEtBQXZCLElBQWdDNlosTUFBTSxDQUFDaHJDLE1BQVAsQ0FBY2t4QixPQUFkLEtBQTBCLE9BQTNELElBQ08sQ0FBQyxHQUFHLy9CLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1Qlgsa0JBQXZCLEVBQTJDO0lBQ2xFbnZDLEdBQUcsRUFBRSxDQUQ2RDtJQUVsRSxTQUFPLFNBRjJEO0lBR2xFdUYsSUFBSSxFQUFFO0VBSDRELENBQTNDLENBRC9CLEtBTU8sQ0FBQyxHQUFHcFEsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCWCxrQkFBdkIsRUFBMkM7SUFDbEVudkMsR0FBRyxFQUFFLENBRDZEO0lBRWxFLFNBQU8sU0FGMkQ7SUFHbEV1RixJQUFJLEVBQUU7RUFINEQsQ0FBM0MsQ0FOL0IsQ0FERCxDQUhILENBRDZDLEVBaUI3Q29wQyxVQWpCNkMsQ0FBakQsQ0FEc0MsQ0FBMUMsQ0F2QnNDLEVBNEN0QyxDQUFDLEdBQUd4NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNNLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3o1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0M7SUFDcEMsU0FBTyxLQUQ2QjtJQUVwQ2tCLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtNQUFFLE9BQVFaLE1BQU0sQ0FBQ2xaLFVBQVAsQ0FBa0IsU0FBbEIsQ0FBUjtJQUF3QyxDQUF0RjtFQUYyQixDQUF4QyxFQUdHLENBQ0VrWixNQUFNLENBQUNockMsTUFBUCxDQUFjbXhCLElBQWQsS0FBdUIsS0FBdkIsSUFBZ0M2WixNQUFNLENBQUNockMsTUFBUCxDQUFja3hCLE9BQWQsS0FBMEIsU0FBM0QsSUFDTyxDQUFDLEdBQUcvL0IsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCWCxrQkFBdkIsRUFBMkM7SUFDbEVudkMsR0FBRyxFQUFFLENBRDZEO0lBRWxFLFNBQU8sU0FGMkQ7SUFHbEV1RixJQUFJLEVBQUU7RUFINEQsQ0FBM0MsQ0FEL0IsS0FNTyxDQUFDLEdBQUdwUSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJYLGtCQUF2QixFQUEyQztJQUNsRW52QyxHQUFHLEVBQUUsQ0FENkQ7SUFFbEUsU0FBTyxTQUYyRDtJQUdsRXVGLElBQUksRUFBRTtFQUg0RCxDQUEzQyxDQU4vQixDQURELENBSEgsQ0FEOEMsRUFpQjlDNHFDLFdBakI4QyxDQUFsRCxDQURzQyxDQUExQyxDQTVDc0MsRUFpRXRDLENBQUMsR0FBR2g3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzhCLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR2o3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0M7SUFDcEMsU0FBTyxLQUQ2QjtJQUVwQ2tCLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtNQUFFLE9BQVFaLE1BQU0sQ0FBQ2xaLFVBQVAsQ0FBa0IsUUFBbEIsQ0FBUjtJQUF1QyxDQUFyRjtFQUYyQixDQUF4QyxFQUdHLENBQ0VrWixNQUFNLENBQUNockMsTUFBUCxDQUFjbXhCLElBQWQsS0FBdUIsS0FBdkIsSUFBZ0M2WixNQUFNLENBQUNockMsTUFBUCxDQUFja3hCLE9BQWQsS0FBMEIsUUFBM0QsSUFDTyxDQUFDLEdBQUcvL0IsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCWCxrQkFBdkIsRUFBMkM7SUFDbEVudkMsR0FBRyxFQUFFLENBRDZEO0lBRWxFLFNBQU8sU0FGMkQ7SUFHbEV1RixJQUFJLEVBQUU7RUFINEQsQ0FBM0MsQ0FEL0IsS0FNTyxDQUFDLEdBQUdwUSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJYLGtCQUF2QixFQUEyQztJQUNsRW52QyxHQUFHLEVBQUUsQ0FENkQ7SUFFbEUsU0FBTyxTQUYyRDtJQUdsRXVGLElBQUksRUFBRTtFQUg0RCxDQUEzQyxDQU4vQixDQURELENBSEgsQ0FEOEMsRUFpQjlDOHFDLFdBakI4QyxDQUFsRCxDQURzQyxDQUExQyxDQWpFc0MsRUFzRnRDLENBQUMsR0FBR2w3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2dDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR243QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0M7SUFDcEMsU0FBTyxLQUQ2QjtJQUVwQ2tCLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtNQUFFLE9BQVFaLE1BQU0sQ0FBQ2xaLFVBQVAsQ0FBa0IsYUFBbEIsQ0FBUjtJQUE0QyxDQUExRjtFQUYyQixDQUF4QyxFQUdHLENBQ0VrWixNQUFNLENBQUNockMsTUFBUCxDQUFjbXhCLElBQWQsS0FBdUIsS0FBdkIsSUFDRzZaLE1BQU0sQ0FBQ2hyQyxNQUFQLENBQWNreEIsT0FBZCxLQUEwQixhQUQ5QixJQUVPLENBQUMsR0FBRy8vQixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJYLGtCQUF2QixFQUEyQztJQUNsRW52QyxHQUFHLEVBQUUsQ0FENkQ7SUFFbEUsU0FBTyxTQUYyRDtJQUdsRXVGLElBQUksRUFBRTtFQUg0RCxDQUEzQyxDQUYvQixLQU9PLENBQUMsR0FBR3BRLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1Qlgsa0JBQXZCLEVBQTJDO0lBQ2xFbnZDLEdBQUcsRUFBRSxDQUQ2RDtJQUVsRSxTQUFPLFNBRjJEO0lBR2xFdUYsSUFBSSxFQUFFO0VBSDRELENBQTNDLENBUC9CLENBREQsQ0FISCxDQUQ4QyxFQWtCOUNnckMsV0FsQjhDLENBQWxELENBRHNDLENBQTFDLENBdEZzQyxFQTRHdEMsQ0FBQyxHQUFHcDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDa0MsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHcjdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztJQUNwQyxTQUFPLEtBRDZCO0lBRXBDa0IsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBUVosTUFBTSxDQUFDbFosVUFBUCxDQUFrQixPQUFsQixDQUFSO0lBQXNDLENBQXBGO0VBRjJCLENBQXhDLEVBR0csQ0FDRWtaLE1BQU0sQ0FBQ2hyQyxNQUFQLENBQWNteEIsSUFBZCxLQUF1QixLQUF2QixJQUFnQzZaLE1BQU0sQ0FBQ2hyQyxNQUFQLENBQWNreEIsT0FBZCxLQUEwQixPQUEzRCxJQUNPLENBQUMsR0FBRy8vQixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJYLGtCQUF2QixFQUEyQztJQUNsRW52QyxHQUFHLEVBQUUsQ0FENkQ7SUFFbEUsU0FBTyxTQUYyRDtJQUdsRXVGLElBQUksRUFBRTtFQUg0RCxDQUEzQyxDQUQvQixLQU1PLENBQUMsR0FBR3BRLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1Qlgsa0JBQXZCLEVBQTJDO0lBQ2xFbnZDLEdBQUcsRUFBRSxDQUQ2RDtJQUVsRSxTQUFPLFNBRjJEO0lBR2xFdUYsSUFBSSxFQUFFO0VBSDRELENBQTNDLENBTi9CLENBREQsQ0FISCxDQUQ4QyxFQWlCOUNrckMsV0FqQjhDLENBQWxELENBRHNDLENBQTFDLENBNUdzQyxDQUExQyxDQUQrQyxDQUFuRCxDQUQrQyxFQXFJL0MsQ0FBQyxHQUFHdDdDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixvQkFBOUIsQ0FySStDLEVBc0k5Q1YsTUFBTSxDQUFDOVksZUFBUixJQUNPLENBQUMsR0FBRy9nQyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDb0IsV0FBdkMsRUFBb0QsQ0FDM0UsQ0FBQyxHQUFHdjdDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsc0JBQUQsQ0FBN0IsRUFBdUQ7SUFDbkQsYUFBYSxDQURzQztJQUVuRCxhQUFhO0VBRnNDLENBQXZELENBRDJFLENBQXBELENBRC9CLElBT09ELE1BQU0sQ0FBQ3BhLFNBQVAsQ0FBaUJyNUIsTUFBakIsS0FBNEIsQ0FBN0IsSUFDSyxDQUFDLEdBQUduRyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDcUIsV0FBdkMsRUFBb0RFLFdBQXBELENBRDdCLEtBRUssQ0FBQyxHQUFHMTdDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUN3QixXQUF2QyxFQUFvRCxFQUMxRSxDQUFDLEdBQUczN0MsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCbEQsTUFBTSxDQUFDcGEsU0FBUCxDQUFpQmo5QixJQUF2QyxFQUE2QyxVQUFVMGlELFlBQVYsRUFBd0I7SUFDbEosT0FBUSxDQUFDLEdBQUdqbEQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztNQUNoRXR2QyxHQUFHLEVBQUVvNkMsWUFBWSxLQUFLLElBQWpCLElBQXlCQSxZQUFZLEtBQUssS0FBSyxDQUEvQyxHQUFtRCxLQUFLLENBQXhELEdBQTREQSxZQUFZLENBQUN6OEMsRUFEZDtNQUVoRSxTQUFPO0lBRnlELENBQXBDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHeEksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7TUFDL0IsU0FBTyw2Q0FEd0I7TUFFL0JrQixPQUFPLEVBQUUsaUJBQVVJLE1BQVYsRUFBa0I7UUFBRSxPQUFRWixNQUFNLENBQUNwWixrQkFBUCxDQUEwQixPQUExQixFQUFtQyxjQUFuQyxFQUFtRHdrQixZQUFZLENBQUN6MkIsZUFBaEUsQ0FBUjtNQUE0RjtJQUYxRixDQUFuQyxFQUdHLENBQUMsR0FBR3h1QixLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDN1ksWUFBUCxDQUFvQmlrQixZQUFZLENBQUNBLFlBQWpDLEVBQStDLEVBQS9DLENBQTNCLENBSEgsRUFHbUY7SUFBRTtJQUhyRixFQUd3R3JKLFdBSHhHLENBRHNDLENBQTFDLENBREQsRUFPQyxDQUFDLEdBQUc1N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUMwQyxXQUFuQyxFQUFnRCxDQUFDLEdBQUc3N0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ1SyxZQUFZLENBQUM4UCxnQkFBeEMsQ0FBaEQsRUFBMkc7SUFBRTtJQUE3RyxDQURzQyxDQUExQyxDQVBELEVBVUMsQ0FBQyxHQUFHLzBELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DMkMsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHOTdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCdUssWUFBWSxDQUFDK1Asa0JBQXhDLENBQWhELEVBQTZHO0lBQUU7SUFBL0csQ0FEc0MsQ0FBMUMsQ0FWRCxFQWFDLENBQUMsR0FBR2gxRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQzRDLFdBQW5DLEVBQWdELENBQUMsR0FBRy83QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnVLLFlBQVksQ0FBQ2dRLGlCQUF4QyxDQUFoRCxFQUE0RztJQUFFO0lBQTlHLENBRHNDLENBQTFDLENBYkQsRUFnQkMsQ0FBQyxHQUFHajFELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DNkMsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHaDhDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCdUssWUFBWSxDQUFDaVEsc0JBQXhDLENBQWhELEVBQWlIO0lBQUU7SUFBbkgsQ0FEc0MsQ0FBMUMsQ0FoQkQsRUFtQkMsQ0FBQyxHQUFHbDFELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DOEMsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHajhDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCdUssWUFBWSxDQUFDa1EsZ0JBQXhDLENBQWhELEVBQTJHO0lBQUU7SUFBN0csQ0FEc0MsQ0FBMUMsQ0FuQkQsQ0FINkIsQ0FBaEM7RUEwQkgsQ0EzQmdGLENBQXBELEVBMkJ6QjtFQUFJO0VBM0JxQixDQUQ4QyxFQUFwRCxDQUY3QixDQTdJeUMsQ0FBbkQsQ0FENkMsQ0FBakQsQ0FGd0UsRUFrTHZFdmIsTUFBTSxDQUFDcGEsU0FBUCxDQUFpQm5rQixTQUFqQixHQUE2QixDQUE5QixJQUNPLENBQUMsR0FBR3JiLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QmQsTUFBTSxDQUFDLFlBQUQsQ0FBN0IsRUFBNkM7SUFDcEVodkMsR0FBRyxFQUFFLENBRCtEO0lBRXBFdEksSUFBSSxFQUFFcTNDLE1BQU0sQ0FBQ3BhLFNBRnVEO0lBR3BFMGtCLGlCQUFpQixFQUFFdkssTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVTErQixJQUFWLEVBQWdCO01BQUUsT0FBTzQrQixNQUFNLENBQUN0WixpQkFBUCxDQUF5QnRsQixJQUF6QixDQUFQO0lBQXdDLENBQXBGO0VBSGlELENBQTdDLEVBSXhCLElBSndCLEVBSWxCO0VBQUU7RUFKZ0IsRUFJSCxDQUFDLE1BQUQsQ0FKRyxDQUQvQixJQU1NLENBQUMsR0FBR2piLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQXhMa0UsRUF5THhFMkIsV0F6THdFLENBQWpELENBRC9CLEtBNExPLENBQUMsR0FBR2w4QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDZ0MsV0FBckMsRUFBa0QsQ0FDekUsQ0FBQyxHQUFHbjhDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2lELFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3A4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNrRCxXQUFyQyxFQUFrRCxDQUM3Q3pDLE1BQU0sQ0FBQy9vQyxXQUFQLEtBQXVCLFVBQXhCLElBQ08sQ0FBQyxHQUFHN1EsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ21DLFdBQXBDLEVBQWlELGlCQUFqRCxDQUQvQixLQUVPLENBQUMsR0FBR3Q4QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9Db0MsV0FBcEMsRUFBaUQsMkJBQWpELENBRi9CLENBRDhDLEVBSTlDLENBQUMsR0FBR3Y4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NxRCxXQUFwQyxFQUFpRCxFQUM1QyxDQUFDLEdBQUd4OEMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCakQsTUFBTSxDQUFDelosY0FBN0IsRUFBNkMsVUFBVTdtQixJQUFWLEVBQWdCO0lBQzFJLE9BQVEsQ0FBQyxHQUFHdlosS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztNQUNoRXR2QyxHQUFHLEVBQUUwTyxJQUFJLENBQUNyVSxLQURzRDtNQUVoRSxTQUFPLHNFQUZ5RDtNQUdoRW0xQyxPQUFPLEVBQUUsbUJBQVk7UUFDakJSLE1BQU0sQ0FBQ2hhLFdBQVAsR0FBcUIsQ0FBckI7UUFDQWdhLE1BQU0sQ0FBQ3haLGNBQVAsQ0FBc0I5bUIsSUFBdEI7UUFDQXNnQyxNQUFNLENBQUMxWixXQUFQLEdBQXFCNW1CLElBQXJCO1FBQ0FzZ0MsTUFBTSxDQUFDL1osZUFBUCxHQUF5QixJQUF6QjtNQUNIO0lBUitELENBQXBDLEVBUzdCLENBQ0MsQ0FBQyxHQUFHOS9CLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqQyxTQUFPLENBQUMsR0FBR241QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLFdBQUQsRUFBY2hELE1BQU0sQ0FBQ3JaLFdBQVAsTUFBd0JqbkIsSUFBSSxLQUFLLElBQVQsSUFBaUJBLElBQUksS0FBSyxLQUFLLENBQS9CLEdBQW1DLEtBQUssQ0FBeEMsR0FBNENBLElBQUksQ0FBQ3JVLEtBQXpFLElBQWtGLFdBQWxGLEdBQWdHLEVBQTlHLENBQTFCO0lBRDBCLENBQXJDLEVBRUcsQ0FBQyxHQUFHbEYsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJuaEMsSUFBSSxLQUFLLElBQVQsSUFBaUJBLElBQUksS0FBSyxLQUFLLENBQS9CLEdBQW1DLEtBQUssQ0FBeEMsR0FBNENBLElBQUksQ0FBQ3JVLEtBQTVFLENBRkgsRUFFdUY7SUFBRTtJQUZ6RixDQURELENBVDZCLEVBYTdCO0lBQUU7SUFiMkIsRUFhZHUzQyxXQWJjLENBQWhDO0VBY0gsQ0FmZ0YsQ0FBcEQsRUFlekI7RUFBSTtFQWZxQixDQURnQixFQUFqRCxDQUo4QyxDQUFsRCxDQUQ4QyxFQXdCOUMsQ0FBQyxHQUFHejhDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3VELFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRzE4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUN3RCxXQUF2QyxFQUFvRCxDQUMvQy9DLE1BQU0sQ0FBQy9vQyxXQUFQLEtBQXVCLFVBQXZCLElBQXFDZ3BDLE1BQU0sQ0FBQzNoQyxLQUFQLEtBQWlCLHFCQUF2RCxJQUNPLENBQUMsR0FBR2xZLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUN5QyxXQUF2QyxFQUFvRCxDQUMzRSxDQUFDLEdBQUc1OEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NzSCxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd6Z0QsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDdUgsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHMWdELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztJQUNwQyxTQUFPLEtBRDZCO0lBRXBDa0IsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBUVosTUFBTSxDQUFDbFosVUFBUCxDQUFrQmtaLE1BQU0sQ0FBQzVaLFdBQVAsQ0FBbUJOLFNBQXJDLENBQVI7SUFBMkQsQ0FBekc7RUFGMkIsQ0FBeEMsRUFHRyxDQUNFa2EsTUFBTSxDQUFDaHJDLE1BQVAsQ0FBY214QixJQUFkLEtBQXVCLEtBQXZCLElBQ0c2WixNQUFNLENBQUNockMsTUFBUCxDQUFja3hCLE9BQWQsS0FBMEI4WixNQUFNLENBQUM1WixXQUFQLENBQW1CTixTQURqRCxJQUVPLENBQUMsR0FBRzMvQixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJYLGtCQUF2QixFQUEyQztJQUNsRW52QyxHQUFHLEVBQUUsQ0FENkQ7SUFFbEUsU0FBTyxTQUYyRDtJQUdsRXVGLElBQUksRUFBRTtFQUg0RCxDQUEzQyxDQUYvQixLQU9PLENBQUMsR0FBR3BRLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1Qlgsa0JBQXZCLEVBQTJDO0lBQ2xFbnZDLEdBQUcsRUFBRSxDQUQ2RDtJQUVsRSxTQUFPLFNBRjJEO0lBR2xFdUYsSUFBSSxFQUFFO0VBSDRELENBQTNDLENBUC9CLENBREQsQ0FISCxDQUQ4QyxFQWtCOUMsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDd0gsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHM2dELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzaEMsS0FBbEMsQ0FBbkQsRUFBNkY7RUFBRTtFQUEvRixDQWxCOEMsQ0FBbEQsQ0FENkMsQ0FBakQsQ0FEc0MsRUF1QnRDLENBQUMsR0FBR2xZLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ3lILFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBRzVnRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMwSCxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUc3Z0QsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO0lBQ3BDLFNBQU8sWUFENkI7SUFFcENrQixPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7TUFBRSxPQUFRWixNQUFNLENBQUNsWixVQUFQLENBQWtCLFdBQWxCLENBQVI7SUFBMEMsQ0FBeEY7RUFGMkIsQ0FBeEMsRUFHRyxDQUNFa1osTUFBTSxDQUFDaHJDLE1BQVAsQ0FBY214QixJQUFkLEtBQXVCLEtBQXZCLElBQ0c2WixNQUFNLENBQUNockMsTUFBUCxDQUFja3hCLE9BQWQsS0FBMEIsV0FEOUIsSUFFTyxDQUFDLEdBQUcvL0IsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCWCxrQkFBdkIsRUFBMkM7SUFDbEVudkMsR0FBRyxFQUFFLENBRDZEO0lBRWxFLFNBQU8sU0FGMkQ7SUFHbEV1RixJQUFJLEVBQUU7RUFINEQsQ0FBM0MsQ0FGL0IsS0FPTyxDQUFDLEdBQUdwUSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJYLGtCQUF2QixFQUEyQztJQUNsRW52QyxHQUFHLEVBQUUsQ0FENkQ7SUFFbEUsU0FBTyxTQUYyRDtJQUdsRXVGLElBQUksRUFBRTtFQUg0RCxDQUEzQyxDQVAvQixDQURELENBSEgsQ0FEOEMsRUFrQjlDMHdDLFdBbEI4QyxDQUFsRCxDQUQ2QyxDQUFqRCxDQXZCc0MsRUE2Q3RDLENBQUMsR0FBRzlnRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M0SCxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUcvZ0QsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDNkgsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHaGhELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztJQUNwQyxTQUFPLEtBRDZCO0lBRXBDa0IsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBUVosTUFBTSxDQUFDbFosVUFBUCxDQUFrQixPQUFsQixDQUFSO0lBQXNDLENBQXBGO0VBRjJCLENBQXhDLEVBR0csQ0FDRWtaLE1BQU0sQ0FBQ2hyQyxNQUFQLENBQWNteEIsSUFBZCxLQUF1QixLQUF2QixJQUFnQzZaLE1BQU0sQ0FBQ2hyQyxNQUFQLENBQWNreEIsT0FBZCxLQUEwQixPQUEzRCxJQUNPLENBQUMsR0FBRy8vQixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJYLGtCQUF2QixFQUEyQztJQUNsRW52QyxHQUFHLEVBQUUsQ0FENkQ7SUFFbEUsU0FBTyxTQUYyRDtJQUdsRXVGLElBQUksRUFBRTtFQUg0RCxDQUEzQyxDQUQvQixLQU1PLENBQUMsR0FBR3BRLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1Qlgsa0JBQXZCLEVBQTJDO0lBQ2xFbnZDLEdBQUcsRUFBRSxDQUQ2RDtJQUVsRSxTQUFPLFNBRjJEO0lBR2xFdUYsSUFBSSxFQUFFO0VBSDRELENBQTNDLENBTi9CLENBREQsQ0FISCxDQUQ4QyxFQWlCOUM2d0MsV0FqQjhDLENBQWxELENBRDZDLENBQWpELENBN0NzQyxFQWtFdEMsQ0FBQyxHQUFHamhELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQytILFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBR2xoRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNnSSxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUduaEQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO0lBQ3BDLFNBQU8sS0FENkI7SUFFcENrQixPQUFPLEVBQUVWLE1BQU0sQ0FBQyxFQUFELENBQU4sS0FBZUEsTUFBTSxDQUFDLEVBQUQsQ0FBTixHQUFhLFVBQVVjLE1BQVYsRUFBa0I7TUFBRSxPQUFRWixNQUFNLENBQUNsWixVQUFQLENBQWtCLE9BQWxCLENBQVI7SUFBc0MsQ0FBdEY7RUFGMkIsQ0FBeEMsRUFHRyxDQUNFa1osTUFBTSxDQUFDaHJDLE1BQVAsQ0FBY214QixJQUFkLEtBQXVCLEtBQXZCLElBQWdDNlosTUFBTSxDQUFDaHJDLE1BQVAsQ0FBY2t4QixPQUFkLEtBQTBCLE9BQTNELElBQ08sQ0FBQyxHQUFHLy9CLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1Qlgsa0JBQXZCLEVBQTJDO0lBQ2xFbnZDLEdBQUcsRUFBRSxDQUQ2RDtJQUVsRSxTQUFPLFNBRjJEO0lBR2xFdUYsSUFBSSxFQUFFO0VBSDRELENBQTNDLENBRC9CLEtBTU8sQ0FBQyxHQUFHcFEsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCWCxrQkFBdkIsRUFBMkM7SUFDbEVudkMsR0FBRyxFQUFFLENBRDZEO0lBRWxFLFNBQU8sU0FGMkQ7SUFHbEV1RixJQUFJLEVBQUU7RUFINEQsQ0FBM0MsQ0FOL0IsQ0FERCxDQUhILENBRDhDLEVBaUI5Q2d4QyxXQWpCOEMsQ0FBbEQsQ0FENkMsQ0FBakQsQ0FsRXNDLENBQTFDLENBRDJFLENBQXBELENBRC9CLEtBMkZPLENBQUMsR0FBR3BoRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDa0gsV0FBdkMsRUFBb0QsQ0FDM0UsQ0FBQyxHQUFHcmhELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNtSSxXQUFyQyxFQUFrRCxDQUM3Q3pILE1BQU0sQ0FBQzNoQyxLQUFQLEtBQWlCLG9CQUFqQixJQUNHMmhDLE1BQU0sQ0FBQzNoQyxLQUFQLEtBQWlCLG1CQURyQixJQUVPLENBQUMsR0FBR2xZLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0M7SUFDL0R0dkMsR0FBRyxFQUFFLENBRDBEO0lBRS9ELFNBQU8sS0FGd0Q7SUFHL0R3dkMsT0FBTyxFQUFFVixNQUFNLENBQUMsRUFBRCxDQUFOLEtBQWVBLE1BQU0sQ0FBQyxFQUFELENBQU4sR0FBYSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBUVosTUFBTSxDQUFDbFosVUFBUCxDQUFrQmtaLE1BQU0sQ0FBQzVaLFdBQVAsQ0FBbUJOLFNBQXJDLENBQVI7SUFBMkQsQ0FBM0c7RUFIc0QsQ0FBeEMsRUFJeEIsQ0FDRWthLE1BQU0sQ0FBQ2hyQyxNQUFQLENBQWNteEIsSUFBZCxLQUF1QixLQUF2QixJQUNHNlosTUFBTSxDQUFDaHJDLE1BQVAsQ0FBY2t4QixPQUFkLEtBQTBCOFosTUFBTSxDQUFDNVosV0FBUCxDQUFtQk4sU0FEakQsSUFFTyxDQUFDLEdBQUczL0IsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCWCxrQkFBdkIsRUFBMkM7SUFDbEVudkMsR0FBRyxFQUFFLENBRDZEO0lBRWxFLFNBQU8sU0FGMkQ7SUFHbEV1RixJQUFJLEVBQUU7RUFINEQsQ0FBM0MsQ0FGL0IsS0FPTyxDQUFDLEdBQUdwUSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJYLGtCQUF2QixFQUEyQztJQUNsRW52QyxHQUFHLEVBQUUsQ0FENkQ7SUFFbEUsU0FBTyxTQUYyRDtJQUdsRXVGLElBQUksRUFBRTtFQUg0RCxDQUEzQyxDQVAvQixDQURELENBSndCLENBRi9CLElBb0JNLENBQUMsR0FBR3BRLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQXJCd0MsRUFzQjlDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzaEMsS0FBbEMsQ0FBNUMsRUFBc0Y7RUFBRTtFQUF4RixDQXRCOEMsQ0FBbEQsQ0FEc0MsQ0FBMUMsQ0FEc0MsRUEyQnRDLENBQUMsR0FBR2xZLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ29JLFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBR3ZoRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNxSSxXQUFyQyxFQUFrRCxDQUM3QzNILE1BQU0sQ0FBQzNoQyxLQUFQLEtBQWlCLG9CQUFqQixJQUNHMmhDLE1BQU0sQ0FBQzNoQyxLQUFQLEtBQWlCLG1CQURyQixJQUVPLENBQUMsR0FBR2xZLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0M7SUFDL0R0dkMsR0FBRyxFQUFFLENBRDBEO0lBRS9ELFNBQU8sS0FGd0Q7SUFHL0R3dkMsT0FBTyxFQUFFVixNQUFNLENBQUMsRUFBRCxDQUFOLEtBQWVBLE1BQU0sQ0FBQyxFQUFELENBQU4sR0FBYSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBUVosTUFBTSxDQUFDbFosVUFBUCxDQUFrQixPQUFsQixDQUFSO0lBQXNDLENBQXRGO0VBSHNELENBQXhDLEVBSXhCLENBQ0VrWixNQUFNLENBQUNockMsTUFBUCxDQUFjbXhCLElBQWQsS0FBdUIsS0FBdkIsSUFBZ0M2WixNQUFNLENBQUNockMsTUFBUCxDQUFja3hCLE9BQWQsS0FBMEIsT0FBM0QsSUFDTyxDQUFDLEdBQUcvL0IsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCWCxrQkFBdkIsRUFBMkM7SUFDbEVudkMsR0FBRyxFQUFFLENBRDZEO0lBRWxFLFNBQU8sU0FGMkQ7SUFHbEV1RixJQUFJLEVBQUU7RUFINEQsQ0FBM0MsQ0FEL0IsS0FNTyxDQUFDLEdBQUdwUSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJYLGtCQUF2QixFQUEyQztJQUNsRW52QyxHQUFHLEVBQUUsQ0FENkQ7SUFFbEUsU0FBTyxTQUYyRDtJQUdsRXVGLElBQUksRUFBRTtFQUg0RCxDQUEzQyxDQU4vQixDQURELENBSndCLENBRi9CLElBbUJNLENBQUMsR0FBR3BRLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQXBCd0MsRUFxQjlDa0gsV0FyQjhDLENBQWxELENBRDZDLENBQWpELENBM0JzQyxDQUExQyxDQUQyRSxDQUFwRCxDQTNGL0IsQ0FEZ0QsRUFtSi9DNUgsTUFBTSxDQUFDOVksZUFBUixJQUNPLENBQUMsR0FBRy9nQyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDdUgsV0FBdkMsRUFBb0QsQ0FDM0UsQ0FBQyxHQUFHMWhELEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsc0JBQUQsQ0FBN0IsRUFBdUQ7SUFDbkQsYUFBYSxDQURzQztJQUVuRCxhQUFhO0VBRnNDLENBQXZELENBRDJFLENBQXBELENBRC9CLElBT09BLE1BQU0sQ0FBQ3hnQyxtQkFBUixJQUNLLENBQUMsR0FBR3JaLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUN3SCxXQUF2QyxFQUFvREUsV0FBcEQsQ0FEN0IsSUFFS2hJLE1BQU0sQ0FBQzNoQyxLQUFQLEtBQWlCLG9CQUFqQixJQUNDMGhDLE1BQU0sQ0FBQy9vQyxXQUFQLEtBQXVCLFdBRHhCLElBRUNqUixNQUFNLENBQUMwUCxJQUFQLENBQVl1cUMsTUFBTSxDQUFDaFosWUFBbkIsRUFBaUMxNkIsTUFGbkMsSUFHSyxDQUFDLEdBQUduRyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDMkgsV0FBdkMsRUFBb0QsQ0FDM0UsQ0FBQyxHQUFHOWhELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQzRJLFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBRy9oRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M2SSxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdoaUQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0lBQy9CLFNBQU8sb0NBRHdCO0lBRS9Ca0IsT0FBTyxFQUFFVixNQUFNLENBQUMsRUFBRCxDQUFOLEtBQWVBLE1BQU0sQ0FBQyxFQUFELENBQU4sR0FBYSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBUVosTUFBTSxDQUFDcFosa0JBQVAsQ0FBMEIsb0JBQTFCLEVBQWdELGNBQWhELEVBQWdFLGdDQUFoRSxDQUFSO0lBQTZHLENBQTdKO0VBRnNCLENBQW5DLEVBR0csa0NBSEgsQ0FENkMsQ0FBakQsQ0FENkMsRUFPN0MsQ0FBQyxHQUFHemdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQzhJLFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBR2ppRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMrSSxXQUFyQyxFQUFrRCxDQUFDLEdBQUdsaUQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQ3R6QyxFQUFFLEdBQUcsQ0FBQ3pHLEVBQUUsR0FBR2s1QyxNQUFNLENBQUNoWixZQUFiLE1BQStCLElBQS9CLElBQXVDbGdDLEVBQUUsS0FBSyxLQUFLLENBQW5ELEdBQXVELEtBQUssQ0FBNUQsR0FBZ0VBLEVBQUUsQ0FBQ3kwRCxhQUF6RSxNQUE0RixJQUE1RixJQUFvR2h1RCxFQUFFLEtBQUssS0FBSyxDQUFoSCxHQUFvSCxLQUFLLENBQXpILEdBQTZIQSxFQUFFLENBQUNnSSxLQUEzSixDQUFsRCxFQUFxTjtFQUFFO0VBQXZOLENBRDZDLENBQWpELENBUDZDLENBQWpELENBRDJFLEVBWTNFLENBQUMsR0FBR3BQLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0Q2dKLFdBRHNDLEVBRXRDLENBQUMsR0FBR25pRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NpSixXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdwaUQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDK1QsV0FBckMsRUFBa0QsQ0FBQyxHQUFHbHRELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCLENBQUM5a0MsRUFBRSxHQUFHLENBQUN6TSxFQUFFLEdBQUcwd0MsTUFBTSxDQUFDaFosWUFBYixNQUErQixJQUEvQixJQUF1QzEzQixFQUFFLEtBQUssS0FBSyxDQUFuRCxHQUF1RCxLQUFLLENBQTVELEdBQWdFQSxFQUFFLENBQUNrc0QsZUFBekUsTUFBOEYsSUFBOUYsSUFBc0d6L0MsRUFBRSxLQUFLLEtBQUssQ0FBbEgsR0FBc0gsS0FBSyxDQUEzSCxHQUErSEEsRUFBRSxDQUFDeEcsS0FBN0osQ0FBbEQsRUFBdU47RUFBRTtFQUF6TixDQUQ2QyxDQUFqRCxDQUZzQyxDQUExQyxDQVoyRSxFQWtCM0UsQ0FBQyxHQUFHcFAsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NnVSxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdudEQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0lBQy9CLFNBQU8sb0NBRHdCO0lBRS9Ca0IsT0FBTyxFQUFFVixNQUFNLENBQUMsRUFBRCxDQUFOLEtBQWVBLE1BQU0sQ0FBQyxFQUFELENBQU4sR0FBYSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBUVosTUFBTSxDQUFDcFosa0JBQVAsQ0FBMEIsb0JBQTFCLEVBQWdELGNBQWhELEVBQWdFLG1DQUFoRSxDQUFSO0lBQWdILENBQWhLO0VBRnNCLENBQW5DLEVBR0csb0NBSEgsQ0FENkMsQ0FBakQsQ0FEc0MsRUFPdEMsQ0FBQyxHQUFHemdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ2lVLFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBR3B0RCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNrVSxXQUFyQyxFQUFrRCxDQUFDLEdBQUdydEQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQzV1QixFQUFFLEdBQUcsQ0FBQ0QsRUFBRSxHQUFHLENBQUNoVyxFQUFFLEdBQUdna0MsTUFBTSxDQUFDaFosWUFBYixNQUErQixJQUEvQixJQUF1Q2hyQixFQUFFLEtBQUssS0FBSyxDQUFuRCxHQUF1RCxLQUFLLENBQTVELEdBQWdFQSxFQUFFLENBQUN3L0MsZUFBekUsTUFBOEYsSUFBOUYsSUFBc0d4cEMsRUFBRSxLQUFLLEtBQUssQ0FBbEgsR0FBc0gsS0FBSyxDQUEzSCxHQUErSEEsRUFBRSxDQUFDOUQsS0FBeEksTUFBbUosSUFBbkosSUFBMkorRCxFQUFFLEtBQUssS0FBSyxDQUF2SyxHQUEySyxLQUFLLENBQWhMLEdBQW9MQSxFQUFFLENBQUMyVixTQUFsTixDQUFsRCxFQUFnUjtFQUFFO0VBQWxSLENBRDZDLENBQWpELENBUHNDLENBQTFDLENBbEIyRSxFQTZCM0UsQ0FBQyxHQUFHemhDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DbVUsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHdHRELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztJQUMvQixTQUFPLG9DQUR3QjtJQUUvQmtCLE9BQU8sRUFBRVYsTUFBTSxDQUFDLEVBQUQsQ0FBTixLQUFlQSxNQUFNLENBQUMsRUFBRCxDQUFOLEdBQWEsVUFBVWMsTUFBVixFQUFrQjtNQUFFLE9BQVFaLE1BQU0sQ0FBQ3BaLGtCQUFQLENBQTBCLG9CQUExQixFQUFnRCxjQUFoRCxFQUFnRSw4QkFBaEUsQ0FBUjtJQUEyRyxDQUEzSjtFQUZzQixDQUFuQyxFQUdHLGdDQUhILENBRDZDLENBQWpELENBRHNDLEVBT3RDLENBQUMsR0FBR3pnQyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NvVSxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd2dEQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcVUsV0FBckMsRUFBa0QsQ0FBQyxHQUFHeHRELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCLENBQUN6dUIsRUFBRSxHQUFHLENBQUNELEVBQUUsR0FBRyxDQUFDRCxFQUFFLEdBQUc4dEIsTUFBTSxDQUFDaFosWUFBYixNQUErQixJQUEvQixJQUF1QzlVLEVBQUUsS0FBSyxLQUFLLENBQW5ELEdBQXVELEtBQUssQ0FBNUQsR0FBZ0VBLEVBQUUsQ0FBQ3NwQyxlQUF6RSxNQUE4RixJQUE5RixJQUFzR3JwQyxFQUFFLEtBQUssS0FBSyxDQUFsSCxHQUFzSCxLQUFLLENBQTNILEdBQStIQSxFQUFFLENBQUNqRSxLQUF4SSxNQUFtSixJQUFuSixJQUEySmtFLEVBQUUsS0FBSyxLQUFLLENBQXZLLEdBQTJLLEtBQUssQ0FBaEwsR0FBb0xBLEVBQUUsQ0FBQ3FwQyxZQUFsTixDQUFsRCxFQUFtUjtFQUFFO0VBQXJSLENBRDZDLENBQWpELENBUHNDLENBQTFDLENBN0IyRSxFQXdDM0UsQ0FBQyxHQUFHdDFELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ3NVLFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBR3p0RCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0N1VSxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUcxdEQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0lBQy9CLFNBQU8sb0NBRHdCO0lBRS9Ca0IsT0FBTyxFQUFFVixNQUFNLENBQUMsRUFBRCxDQUFOLEtBQWVBLE1BQU0sQ0FBQyxFQUFELENBQU4sR0FBYSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBUVosTUFBTSxDQUFDcFosa0JBQVAsQ0FBMEIsb0JBQTFCLEVBQWdELGNBQWhELEVBQWdFLDJEQUFoRSxDQUFSO0lBQXdJLENBQXhMO0VBRnNCLENBQW5DLEVBR0csNERBSEgsQ0FENkMsQ0FBakQsQ0FENkMsRUFPN0MsQ0FBQyxHQUFHemdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ3dVLFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBRzN0RCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN5VSxXQUFyQyxFQUFrRCxDQUFDLEdBQUc1dEQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQ21hLEVBQUUsR0FBRyxDQUFDMXZCLEVBQUUsR0FBRyxDQUFDRCxFQUFFLEdBQUcyVSxNQUFNLENBQUNoWixZQUFiLE1BQStCLElBQS9CLElBQXVDcUUsRUFBRSxLQUFLLEtBQUssQ0FBbkQsR0FBdUQsS0FBSyxDQUE1RCxHQUFnRUEsRUFBRSxDQUFDbXdCLGVBQXpFLE1BQThGLElBQTlGLElBQXNHbHdCLEVBQUUsS0FBSyxLQUFLLENBQWxILEdBQXNILEtBQUssQ0FBM0gsR0FBK0hBLEVBQUUsQ0FBQ3BkLEtBQXhJLE1BQW1KLElBQW5KLElBQTJKOHNDLEVBQUUsS0FBSyxLQUFLLENBQXZLLEdBQTJLLEtBQUssQ0FBaEwsR0FBb0xBLEVBQUUsQ0FBQ1UsSUFBbE4sQ0FBbEQsRUFBMlE7RUFBRTtFQUE3USxDQUQ2QyxDQUFqRCxDQVA2QyxDQUFqRCxDQXhDMkUsQ0FBcEQsQ0FIN0IsSUF1REsxYixNQUFNLENBQUMzaEMsS0FBUCxLQUFpQixvQkFBakIsSUFDQzBoQyxNQUFNLENBQUMvb0MsV0FBUCxLQUF1QixXQUR4QixJQUVDLENBQUNqUixNQUFNLENBQUMwUCxJQUFQLENBQVl1cUMsTUFBTSxDQUFDaFosWUFBbkIsRUFBaUMxNkIsTUFGcEMsSUFHSyxDQUFDLEdBQUduRyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDMFQsV0FBdkMsRUFBb0RFLFdBQXBELENBSDdCLElBSUtsVSxNQUFNLENBQUMvWSxnQkFBUCxJQUNDK1ksTUFBTSxDQUFDM2hDLEtBQVAsS0FBaUIsbUJBRGxCLElBRUMsQ0FBQzJoQyxNQUFNLENBQUMvWSxnQkFBUCxDQUF3QjM2QixNQUYxQixJQUdDeXpDLE1BQU0sQ0FBQy9vQyxXQUFQLEtBQXVCLFdBSHpCLElBSUssQ0FBQyxHQUFHN1EsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QzZULFdBQXZDLEVBQW9ERSxXQUFwRCxDQUo3QixJQUtLclUsTUFBTSxDQUFDM2hDLEtBQVAsS0FBaUIsbUJBQWpCLElBQ0MyaEMsTUFBTSxDQUFDL1ksZ0JBQVAsQ0FBd0IzNkIsTUFEekIsSUFFQ3l6QyxNQUFNLENBQUMvb0MsV0FBUCxLQUF1QixXQUZ6QixJQUdLLENBQUMsR0FBRzdRLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUNnVSxXQUF2QyxFQUFvRCxFQUMxRSxDQUFDLEdBQUdudUQsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCakQsTUFBTSxDQUFDL1ksZ0JBQTdCLEVBQStDLFVBQVV2bkIsSUFBVixFQUFnQjtJQUM1SSxPQUFRLENBQUMsR0FBR3ZaLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7TUFDaEV0dkMsR0FBRyxFQUFFME8sSUFBSSxLQUFLLElBQVQsSUFBaUJBLElBQUksS0FBSyxLQUFLLENBQS9CLEdBQW1DLEtBQUssQ0FBeEMsR0FBNENBLElBQUksQ0FBQy9RLEVBRFU7TUFFaEUsU0FBTztJQUZ5RCxDQUFwQyxFQUc3QixDQUNDLENBQUMsR0FBR3hJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ2lWLFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBR3B1RCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7TUFDL0IsU0FBTyxvQ0FEd0I7TUFFL0JrQixPQUFPLEVBQUUsaUJBQVVJLE1BQVYsRUFBa0I7UUFBRSxPQUFRWixNQUFNLENBQUNwWixrQkFBUCxDQUEwQixvQkFBMUIsRUFBZ0QsbUJBQWhELEVBQXFFbG5CLElBQUksS0FBSyxJQUFULElBQWlCQSxJQUFJLEtBQUssS0FBSyxDQUEvQixHQUFtQyxLQUFLLENBQXhDLEdBQTRDQSxJQUFJLENBQUN3MEIsaUJBQXRILENBQVI7TUFBb0o7SUFGbEosQ0FBbkMsRUFHRyxDQUFDLEdBQUcvdEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQ25oQyxJQUFJLEtBQUssSUFBVCxJQUFpQkEsSUFBSSxLQUFLLEtBQUssQ0FBL0IsR0FBbUMsS0FBSyxDQUF4QyxHQUE0Q0EsSUFBSSxDQUFDdzBCLGlCQUFsRCxNQUF5RSxTQUF6RSxHQUN4QixrQkFEd0IsR0FFeEIsdUJBRkgsQ0FISCxFQUtnQztJQUFFO0lBTGxDLEVBS3FEc2dCLFdBTHJELENBRDZDLENBQWpELENBREQsRUFTQyxDQUFDLEdBQUdydUQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DbVYsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHdHVELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ29WLFdBQXJDLEVBQWtELENBQUMsR0FBR3Z1RCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQm5oQyxJQUFJLENBQUNuSyxLQUFoQyxDQUFsRCxFQUEwRjtJQUFFO0lBQTVGLENBRDZDLENBQWpELENBVEQsQ0FINkIsQ0FBaEM7RUFnQkgsQ0FqQmdGLENBQXBELEVBaUJ6QjtFQUFJO0VBakJxQixDQUQ4QyxFQUFwRCxDQUg3QixJQXVCS3lxQyxNQUFNLENBQUMzaEMsS0FBUCxLQUFpQixvQkFBakIsSUFBeUMwaEMsTUFBTSxDQUFDL29DLFdBQVAsS0FBdUIsV0FBakUsSUFDSyxDQUFDLEdBQUc3USxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDcVUsV0FBdkMsRUFBb0QsRUFDMUUsQ0FBQyxHQUFHeHVELEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQmxELE1BQU0sQ0FBQ3BhLFNBQVAsQ0FBaUJqOUIsSUFBdkMsRUFBNkMsVUFBVWdYLElBQVYsRUFBZ0I7SUFDMUksT0FBUSxDQUFDLEdBQUd2WixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DO01BQ2hFdHZDLEdBQUcsRUFBRTBPLElBQUksS0FBSyxJQUFULElBQWlCQSxJQUFJLEtBQUssS0FBSyxDQUEvQixHQUFtQyxLQUFLLENBQXhDLEdBQTRDQSxJQUFJLENBQUMvUSxFQURVO01BRWhFLFNBQU87SUFGeUQsQ0FBcEMsRUFHN0IsQ0FDQyxDQUFDLEdBQUd4SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NzVixXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd6dUQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO01BQy9CLFNBQU8sK0NBRHdCO01BRS9Ca0IsT0FBTyxFQUFFLGlCQUFVSSxNQUFWLEVBQWtCO1FBQ3ZCLElBQUk5NUMsRUFBSjs7UUFDQSxPQUFRazVDLE1BQU0sQ0FBQ3BaLGtCQUFQLENBQTBCLG9CQUExQixFQUFnRCxDQUFDOS9CLEVBQUUsR0FBR2s1QyxNQUFNLENBQUMxWixXQUFiLE1BQThCLElBQTlCLElBQXNDeC9CLEVBQUUsS0FBSyxLQUFLLENBQWxELEdBQXNELEtBQUssQ0FBM0QsR0FBK0RBLEVBQUUsQ0FBQ2cvQixTQUFsSCxFQUE2SHBtQixJQUFJLENBQUMvUSxFQUFsSSxDQUFSO01BQ0g7SUFMOEIsQ0FBbkMsRUFNRyxDQUNDLENBQUMsR0FBR3hJLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4Qix3Q0FBOUIsQ0FERCxFQUVDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJuaEMsSUFBSSxDQUFDLE9BQUQsQ0FBL0IsQ0FBM0IsRUFBc0U7SUFBRTtJQUF4RSxDQUZELENBTkgsRUFTRztJQUFFO0lBVEwsRUFTa0JtMUMsV0FUbEIsQ0FENkMsQ0FBakQsQ0FERCxFQWFDLENBQUMsR0FBRzF1RCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0N3VixXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUczdUQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDeVYsV0FBckMsRUFBa0QsQ0FBQyxHQUFHNXVELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCbmhDLElBQUksS0FBSyxJQUFULElBQWlCQSxJQUFJLEtBQUssS0FBSyxDQUEvQixHQUFtQyxLQUFLLENBQXhDLEdBQTRDQSxJQUFJLENBQUNvcEIsS0FBNUUsQ0FBbEQsRUFBc0k7SUFBRTtJQUF4SSxDQUQ2QyxDQUFqRCxDQWJELENBSDZCLENBQWhDO0VBb0JILENBckJnRixDQUFwRCxFQXFCekI7RUFBSTtFQXJCcUIsQ0FEOEMsRUFBcEQsQ0FEN0IsSUF5QktpWCxNQUFNLENBQUMvb0MsV0FBUCxLQUF1QixVQUF2QixJQUFxQ2dwQyxNQUFNLENBQUMzaEMsS0FBUCxLQUFpQixxQkFBdkQsSUFDSyxDQUFDLEdBQUdsWSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDMFUsV0FBdkMsRUFBb0QsRUFDMUUsQ0FBQyxHQUFHN3VELEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQmxELE1BQU0sQ0FBQ3BhLFNBQTdCLEVBQXdDLFVBQVVqbUIsSUFBVixFQUFnQmxILEtBQWhCLEVBQXVCO0lBQzVJLE9BQVEsQ0FBQyxHQUFHclMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztNQUNoRXR2QyxHQUFHLEVBQUUwTyxJQUFJLEtBQUssSUFBVCxJQUFpQkEsSUFBSSxLQUFLLEtBQUssQ0FBL0IsR0FBbUMsS0FBSyxDQUF4QyxHQUE0Q0EsSUFBSSxDQUFDL1EsRUFEVTtNQUVoRSxTQUFPO0lBRnlELENBQXBDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHeEksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DMlYsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHOXVELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzRWLFdBQXJDLEVBQWtELENBQUMsR0FBRy91RCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnJvQyxLQUEzQixDQUFsRCxFQUFxRjtJQUFFO0lBQXZGLENBRDZDLENBQWpELENBREQsRUFJQyxDQUFDLEdBQUdyUyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M2VixXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdodkQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDOFYsV0FBckMsRUFBa0QsQ0FBQyxHQUFHanZELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCbmhDLElBQTNCLENBQWxELEVBQW9GO0lBQUU7SUFBdEYsQ0FENkMsQ0FBakQsQ0FKRCxDQUg2QixDQUFoQztFQVdILENBWmdGLENBQXBELEVBWXpCO0VBQUk7RUFacUIsQ0FEOEMsRUFBcEQsQ0FEN0IsSUFnQktxZ0MsTUFBTSxDQUFDL29DLFdBQVAsS0FBdUIsVUFBdkIsSUFBcUNncEMsTUFBTSxDQUFDM2hDLEtBQVAsS0FBaUIscUJBQXZELElBQ0ssQ0FBQyxHQUFHbFksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QytVLFlBQXZDLEVBQXFELEVBQzNFLENBQUMsR0FBR2x2RCxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JsRCxNQUFNLENBQUNwYSxTQUE3QixFQUF3QyxVQUFVam1CLElBQVYsRUFBZ0JsSCxLQUFoQixFQUF1QjtJQUM1SSxJQUFJMVIsRUFBSixFQUFReUcsRUFBUixFQUFZK0IsRUFBWixFQUFnQnlNLEVBQWhCOztJQUNBLE9BQVEsQ0FBQyxHQUFHNVYsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztNQUNoRXR2QyxHQUFHLEVBQUUwTyxJQUFJLEtBQUssSUFBVCxJQUFpQkEsSUFBSSxLQUFLLEtBQUssQ0FBL0IsR0FBbUMsS0FBSyxDQUF4QyxHQUE0Q0EsSUFBSSxDQUFDL1EsRUFEVTtNQUVoRSxTQUFPO0lBRnlELENBQXBDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHeEksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DZ1csWUFBcEMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHbnZELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2lXLFlBQXJDLEVBQW1ELENBQUMsR0FBR3B2RCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnJvQyxLQUEzQixDQUFuRCxFQUFzRjtJQUFFO0lBQXhGLENBRDhDLENBQWxELENBREQsRUFJQyxDQUFDLEdBQUdyUyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NrVyxZQUFwQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdydkQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDbVcsWUFBckMsRUFBbUQsQ0FBQyxHQUFHdHZELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCdnpDLE1BQU0sQ0FBQyxDQUFDeEcsRUFBRSxHQUFHNFksSUFBSSxLQUFLLElBQVQsSUFBaUJBLElBQUksS0FBSyxLQUFLLENBQS9CLEdBQW1DLEtBQUssQ0FBeEMsR0FBNENBLElBQUksQ0FBQ21VLFNBQXZELE1BQXNFLElBQXRFLElBQThFL3NCLEVBQUUsS0FBSyxLQUFLLENBQTFGLEdBQThGQSxFQUE5RixHQUFtRyxDQUFwRyxDQUFqQyxDQUFuRCxFQUE2TDtJQUFFO0lBQS9MLENBRDhDLENBQWxELENBSkQsRUFPQyxDQUFDLEdBQUdYLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ29XLFlBQXBDLEVBQWtELENBQzlDLENBQUMsR0FBR3Z2RCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNxVyxZQUFyQyxFQUFtRCxDQUFDLEdBQUd4dkQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ2ekMsTUFBTSxDQUFDLENBQUNDLEVBQUUsR0FBR21TLElBQUksS0FBSyxJQUFULElBQWlCQSxJQUFJLEtBQUssS0FBSyxDQUEvQixHQUFtQyxLQUFLLENBQXhDLEdBQTRDQSxJQUFJLENBQUNpOEMsS0FBdkQsTUFBa0UsSUFBbEUsSUFBMEVwdUQsRUFBRSxLQUFLLEtBQUssQ0FBdEYsR0FBMEZBLEVBQTFGLEdBQStGLENBQWhHLENBQWpDLENBQW5ELEVBQXlMO0lBQUU7SUFBM0wsQ0FEOEMsQ0FBbEQsQ0FQRCxFQVVDLENBQUMsR0FBR3BILEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ3FiLFlBQXBDLEVBQWtELENBQzlDLENBQUMsR0FBR3gwRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNzYixZQUFyQyxFQUFtRCxDQUFDLEdBQUd6MEQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJ2ekMsTUFBTSxDQUFDLENBQUNnQyxFQUFFLEdBQUdvUSxJQUFJLEtBQUssSUFBVCxJQUFpQkEsSUFBSSxLQUFLLEtBQUssQ0FBL0IsR0FBbUMsS0FBSyxDQUF4QyxHQUE0Q0EsSUFBSSxDQUFDbVUsU0FBdkQsTUFBc0UsSUFBdEUsSUFBOEV2a0IsRUFBRSxLQUFLLEtBQUssQ0FBMUYsR0FBOEZBLEVBQTlGLEdBQW1HLENBQXBHLENBQU4sR0FBK0doQyxNQUFNLENBQUMsQ0FBQ3lPLEVBQUUsR0FBRzJELElBQUksS0FBSyxJQUFULElBQWlCQSxJQUFJLEtBQUssS0FBSyxDQUEvQixHQUFtQyxLQUFLLENBQXhDLEdBQTRDQSxJQUFJLENBQUNpOEMsS0FBdkQsTUFBa0UsSUFBbEUsSUFBMEU1L0MsRUFBRSxLQUFLLEtBQUssQ0FBdEYsR0FBMEZBLEVBQTFGLEdBQStGLENBQWhHLENBQWhKLENBQW5ELEVBQXdTO0lBQUU7SUFBMVMsQ0FEOEMsQ0FBbEQsQ0FWRCxDQUg2QixDQUFoQztFQWlCSCxDQW5CZ0YsQ0FBcEQsRUFtQnpCO0VBQUk7RUFuQnFCLENBRCtDLEVBQXJELENBRDdCLEtBdUJLLENBQUMsR0FBRzVWLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUN1YSxZQUF2QyxFQUFxREUsWUFBckQsQ0F2QjdCLENBNVJjLENBQXBELENBRDhDLEVBc1Q3Qy9hLE1BQU0sQ0FBQzNoQyxLQUFQLEtBQWlCLG9CQUFqQixJQUNHMmhDLE1BQU0sQ0FBQzNoQyxLQUFQLEtBQWlCLG1CQURwQixJQUVHLENBQUMsQ0FBQzQ4QyxFQUFFLEdBQUdsYixNQUFNLENBQUNwYSxTQUFQLENBQWlCZ0QsYUFBdkIsTUFBMEMsSUFBMUMsSUFBa0RzeUIsRUFBRSxLQUFLLEtBQUssQ0FBOUQsR0FBa0UsS0FBSyxDQUF2RSxHQUEyRUEsRUFBRSxDQUFDejVDLFNBQS9FLElBQTRGLENBRi9GLElBR0d1K0IsTUFBTSxDQUFDL29DLFdBQVAsS0FBdUIsV0FIM0IsSUFJTyxDQUFDLEdBQUc3USxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxZQUFELENBQTdCLEVBQTZDO0lBQ3BFaHZDLEdBQUcsRUFBRSxDQUQrRDtJQUVwRSxTQUFPLE1BRjZEO0lBR3BFNlAsS0FBSyxFQUFFbS9CLE1BQU0sQ0FBQy9aLGVBSHNEO0lBSXBFdjlCLElBQUksRUFBRXEzQyxNQUFNLENBQUNwYSxTQUFQLENBQWlCZ0QsYUFKNkM7SUFLcEUwaEIsaUJBQWlCLEVBQUV2SyxNQUFNLENBQUMsRUFBRCxDQUFOLEtBQWVBLE1BQU0sQ0FBQyxFQUFELENBQU4sR0FBYSxVQUFVMStCLElBQVYsRUFBZ0I7TUFBRSxPQUFPNCtCLE1BQU0sQ0FBQ3RaLGlCQUFQLENBQXlCdGxCLElBQXpCLENBQVA7SUFBd0MsQ0FBdEY7RUFMaUQsQ0FBN0MsRUFNeEIsSUFOd0IsRUFNbEI7RUFBRTtFQU5nQixFQU1ILENBQUMsT0FBRCxFQUFVLE1BQVYsQ0FORyxDQUovQixJQVdNLENBQUMsR0FBR2piLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWpVd0MsQ0FBbEQsQ0F4QjhDLENBQWxELENBRHlFLENBQWxELENBNUwvQixDQURELENBRjZCLEVBNmhCN0I7RUFBRTtFQTdoQjJCLENBQWhDO0FBOGhCSDs7QUFDRHo2QyxjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQzNyQmE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7O0FBQ0EsSUFBSUMsVUFBVSxHQUFHLGFBQWMsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxZQUE1QyxFQUEwRCxDQUFDO0FBQUU7QUFBN0QsQ0FBL0I7O0FBQ0EsSUFBSUMsVUFBVSxHQUFHLENBQ2JGLFVBRGEsQ0FBakI7O0FBR0EsSUFBSUcsVUFBVSxHQUFHLGFBQWMsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxVQUE1QyxFQUF3RCxDQUFDO0FBQUU7QUFBM0QsQ0FBL0I7O0FBQ0EsSUFBSUcsVUFBVSxHQUFHLENBQ2JELFVBRGEsQ0FBakI7O0FBR0EsSUFBSUUsVUFBVSxHQUFHLGFBQWMsQ0FBQyxHQUFHdjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxPQUE1QyxFQUFxRCxDQUFDO0FBQUU7QUFBeEQsQ0FBL0I7O0FBQ0EsSUFBSUssVUFBVSxHQUFHLENBQ2JELFVBRGEsQ0FBakI7QUFHQSxJQUFJRSxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsU0FBU1gsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxPQUFRLENBQUMsR0FBRy81QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcEIsVUFBckMsRUFBaUQsQ0FDN0UsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0gsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0YsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHajVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztJQUNwQyxTQUFPLENBQUMsR0FBR241QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUM3QmhELE1BQU0sQ0FBQ2hwQyxXQUFQLEtBQXVCLFdBQXZCLEdBQ00sMkNBRE4sR0FFTSxFQUh1QixFQUk3QixpRkFKNkIsQ0FBMUIsQ0FENkI7SUFPcEN3cEMsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBUVosTUFBTSxDQUFDaHBDLFdBQVAsR0FBcUIsV0FBN0I7SUFBNEMsQ0FBMUY7RUFQMkIsQ0FBeEMsRUFRR3VvQyxVQVJILEVBUWU7RUFBRTtFQVJqQixDQUQ2QyxFQVU3QyxDQUFDLEdBQUdwNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO0lBQ3BDLFNBQU8sQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQzdCaEQsTUFBTSxDQUFDaHBDLFdBQVAsS0FBdUIsVUFBdkIsR0FDTSwyQ0FETixHQUVNLEVBSHVCLEVBSTdCLGlGQUo2QixDQUExQixDQUQ2QjtJQU9wQ3dwQyxPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7TUFBRSxPQUFRWixNQUFNLENBQUNocEMsV0FBUCxHQUFxQixVQUE3QjtJQUEyQyxDQUF6RjtFQVAyQixDQUF4QyxFQVFHeW9DLFVBUkgsRUFRZTtFQUFFO0VBUmpCLENBVjZDLEVBbUI3QyxDQUFDLEdBQUd0NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO0lBQ3BDLFNBQU8sQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQzdCaEQsTUFBTSxDQUFDaHBDLFdBQVAsS0FBdUIsTUFBdkIsR0FDTSwyQ0FETixHQUVNLEVBSHVCLEVBSTdCLGlGQUo2QixDQUExQixDQUQ2QjtJQU9wQ3dwQyxPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7TUFBRSxPQUFRWixNQUFNLENBQUNocEMsV0FBUCxHQUFxQixNQUE3QjtJQUF1QyxDQUFyRjtFQVAyQixDQUF4QyxFQVFHMm9DLFVBUkgsRUFRZTtFQUFFO0VBUmpCLENBbkI2QyxDQUFqRCxDQUQ2QyxFQThCN0MsQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ00sV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHejVDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsaUJBQUQsQ0FBN0IsRUFBa0Q7SUFDOUMsY0FBY0EsTUFBTSxDQUFDdFksU0FEeUI7SUFFOUMsY0FBY3FZLE1BQU0sQ0FBQ3ZZLFdBQVAsQ0FBbUJ3WSxNQUFNLENBQUNocEMsV0FBMUIsQ0FGZ0M7SUFHOUMsZ0JBQWdCZ3BDLE1BQU0sQ0FBQ2hwQyxXQUh1QjtJQUk5QyxhQUFhLFVBSmlDO0lBSzlDNGtELHFCQUFxQixFQUFFNWIsTUFBTSxDQUFDbFk7RUFMZ0IsQ0FBbEQsRUFNRyxJQU5ILEVBTVM7RUFBRTtFQU5YLEVBTXdCLENBQUMsWUFBRCxFQUFlLFlBQWYsRUFBNkIsY0FBN0IsQ0FOeEIsQ0FEOEMsRUFROUMsQ0FBQyxHQUFHM2hDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsaUJBQUQsQ0FBN0IsRUFBa0Q7SUFDOUMzcEMsSUFBSSxFQUFFLGlCQUR3QztJQUU5Q3RKLElBQUksRUFBRSxXQUZ3QztJQUc5Q3dKLElBQUksRUFBRSxlQUh3QztJQUk5Q2lxQyxPQUFPLEVBQUVSLE1BQU0sQ0FBQ2hZO0VBSjhCLENBQWxELENBUjhDLENBQWxELENBOUI2QyxDQUFqRCxDQUQ2RSxFQStDN0UsQ0FBQyxHQUFHN2hDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsdUJBQUQsQ0FBN0IsRUFBd0Q7SUFBRSxnQkFBZ0JBLE1BQU0sQ0FBQ2hwQztFQUF6QixDQUF4RCxFQUFnRyxJQUFoRyxFQUFzRztFQUFFO0VBQXhHLEVBQXFILENBQUMsY0FBRCxDQUFySCxDQS9DNkUsRUFnRDdFLENBQUMsR0FBRzdRLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsc0JBQUQsQ0FBN0IsRUFBdUQ7SUFDbkQsZ0JBQWdCQSxNQUFNLENBQUNocEMsV0FENEI7SUFFbkQsY0FBY2dwQyxNQUFNLENBQUNyYSxTQUY4QjtJQUduRCxnQkFBZ0JxYSxNQUFNLENBQUN2WSxVQUFQLENBQWtCLE9BQWxCLENBSG1DO0lBSW5ELGNBQWN1WSxNQUFNLENBQUN4a0MsU0FKOEI7SUFLbkQsWUFBWXdrQyxNQUFNLENBQUN2a0MsT0FMZ0M7SUFNbkQsYUFBYXVrQyxNQUFNLENBQUN4b0MsUUFOK0I7SUFPbkRxa0QsVUFBVSxFQUFFL2IsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQ3RCLFVBQVU5ekMsQ0FBVixFQUFhZ0osTUFBYixFQUFxQm9NLElBQXJCLEVBQTJCeWxCLFNBQTNCLEVBQXNDO01BQ2xDLE9BQU9tWixNQUFNLENBQUNuWSxvQkFBUCxDQUE0Qjc3QixDQUE1QixFQUErQmdKLE1BQS9CLEVBQXVDb00sSUFBdkMsRUFBNkN5bEIsU0FBN0MsQ0FBUDtJQUNILENBSE87RUFQdUMsQ0FBdkQsRUFXRyxJQVhILEVBV1M7RUFBRTtFQVhYLEVBV3dCLENBQUMsY0FBRCxFQUFpQixZQUFqQixFQUErQixjQUEvQixFQUErQyxZQUEvQyxFQUE2RCxVQUE3RCxFQUF5RSxXQUF6RSxDQVh4QixDQWhENkUsQ0FBakQsQ0FBaEM7QUE2REg7O0FBQ0Q1Z0MsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUNuRmE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFDYm51QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUlvdUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQ2JydUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJdXVDLFVBQVUsR0FBRztFQUFFdnVDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSXd1QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFDYjF1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUkydUMsVUFBVSxHQUFHO0VBQ2IzdUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJNHVDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUl1QixXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZHJ3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUlzd0MsV0FBVyxHQUFHO0VBQ2R0d0MsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJdXdDLFdBQVcsR0FBRztFQUNkdndDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSXd3QyxXQUFXLEdBQUc7RUFDZHh3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUl5d0MsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2Qzd0MsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJNHdDLFdBQVcsR0FBRztFQUNkNXdDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSTZ3QyxXQUFXLEdBQUc7RUFDZDd3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUk4d0MsV0FBVyxHQUFHO0VBQ2Q5d0MsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJK3dDLFdBQVcsR0FBRztFQUFFL3dDLEdBQUcsRUFBRTtBQUFQLENBQWxCOztBQUNBLElBQUlneEMsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHNzdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztFQUFFLFNBQU87QUFBVCxDQUFyQyxFQUFzRixDQUNsSCxhQUFjLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M7RUFBRSxTQUFPO0FBQVQsQ0FBdEMsRUFBMkUsb0NBQTNFLENBRG9HLENBQXRGLEVBRTdCLENBQUM7QUFBRTtBQUYwQixDQUFoQzs7QUFHQSxJQUFJMkMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLElBQUlDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBRy83QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMsSUFBdkMsRUFBNkMsQ0FDekUsYUFBYyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DO0VBQUUsU0FBTztBQUFULENBQXBDLEVBQTBELENBQ3BFLGFBQWMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztFQUFFLFNBQU87QUFBVCxDQUFwQyxFQUFrRyxTQUFsRyxDQURzRCxFQUVwRSxhQUFjLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7RUFBRSxTQUFPO0FBQVQsQ0FBcEMsRUFBNkYsUUFBN0YsQ0FGc0QsRUFHcEUsYUFBYyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DO0VBQUUsU0FBTztBQUFULENBQXBDLEVBQTZGLFlBQTdGLENBSHNELEVBSXBFLGFBQWMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztFQUFFLFNBQU87QUFBVCxDQUFwQyxFQUE2RixPQUE3RixDQUpzRCxDQUExRCxDQUQyRCxDQUE3QyxFQU83QixDQUFDO0FBQUU7QUFQMEIsQ0FBaEM7O0FBUUEsSUFBSTZDLFdBQVcsR0FBRztFQUFFbnhDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSW94QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxNQUFELENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUV6eEMsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJMHhDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxJQUFJQyxXQUFXLEdBQUcsYUFBYyxDQUFDLEdBQUczOEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0VBQUUsU0FBTztBQUFULENBQW5DLEVBQWdGLGlEQUFoRixFQUFtSSxDQUFDO0FBQUU7QUFBdEksQ0FBaEM7O0FBQ0EsSUFBSXlELFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUk2RCxXQUFXLEdBQUc7RUFBRTUxQyxHQUFHLEVBQUU7QUFBUCxDQUFsQjs7QUFDQSxJQUFJNjFDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBRzFnRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7RUFBRSxTQUFPO0FBQVQsQ0FBckMsRUFBcUcsQ0FDakksYUFBYyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DLElBQW5DLEVBQXlDLHVCQUF6QyxDQURtSCxDQUFyRyxFQUU3QixDQUFDO0FBQUU7QUFGMEIsQ0FBaEM7O0FBR0EsSUFBSXdILFdBQVcsR0FBRztFQUNkOTFDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSSsxQyxXQUFXLEdBQUc7RUFBRS8xQyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUlnMkMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUVqMkMsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJazJDLFdBQVcsR0FBRztFQUFFbDJDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSW0yQyxXQUFXLEdBQUc7RUFDZG4yQyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjs7QUFJQSxTQUFTaXVDLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSXA1QyxFQUFKLEVBQVF5RyxFQUFSLEVBQVkrQixFQUFaLEVBQWdCeU0sRUFBaEIsRUFBb0JDLEVBQXBCLEVBQXdCZ1csRUFBeEIsRUFBNEJDLEVBQTVCLEVBQWdDQyxFQUFoQyxFQUFvQ0MsRUFBcEMsRUFBd0NDLEVBQXhDOztFQUNBLE9BQVEsQ0FBQyxHQUFHanNCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsU0FBOUIsRUFBeUNwQixVQUF6QyxFQUFxRCxDQUNoRmMsTUFBTSxDQUFDdlcsZUFBUixJQUNPLENBQUMsR0FBR3RqQyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDbkIsVUFBckMsRUFBaUQsRUFDdkUsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQixDQUF0QixFQUF5QixVQUFVajNDLENBQVYsRUFBYTtJQUMvRyxPQUFPLENBQUMsR0FBRzdGLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUN4Q3R1QyxHQUFHLEVBQUVoRixDQURtQztNQUV4QyxTQUFPO0lBRmlDLENBQXJDLEVBR0osQ0FDQyxDQUFDLEdBQUc3RixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNGLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2o1QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLGdCQUFELENBQTdCLEVBQWlEO01BQUUsU0FBTztJQUFULENBQWpELENBRDZDLENBQWpELENBREQsRUFJQyxDQUFDLEdBQUc3NUMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJULE1BQU0sQ0FBQyxnQkFBRCxDQUE3QixFQUFpRDtNQUFFLFNBQU87SUFBVCxDQUFqRCxDQUpELENBSEksQ0FBUDtFQVNILENBVjRFLENBQXBELEVBVXJCO0VBQUc7RUFWa0IsQ0FEK0MsR0FZeEUsQ0FBQyxHQUFHNzVDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsZ0JBQUQsQ0FBN0IsRUFBaUQ7SUFBRSxTQUFPO0VBQVQsQ0FBakQsQ0Fad0UsQ0FBakQsQ0FEL0IsS0FlTyxDQUFDLEdBQUc3NUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2pCLFVBQXJDLEVBQWlELENBQ3ZFVSxNQUFNLENBQUMvb0MsV0FBUCxLQUF1QixNQUF4QixJQUNPLENBQUMsR0FBRzdRLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNmLFVBQXJDLEVBQWlELENBQ3hFLENBQUMsR0FBR3A1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNFLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3I1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNHLFVBQXJDLEVBQWlELENBQzVDTSxNQUFNLENBQUMvb0MsV0FBUCxLQUF1QixXQUF4QixJQUNPLENBQUMsR0FBRzdRLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NaLFVBQXRDLEVBQWtELDZDQUFsRCxDQUQvQixLQUVPLENBQUMsR0FBR3Y1QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDWCxVQUF0QyxFQUFrRCxpQ0FBbEQsQ0FGL0IsQ0FENkMsQ0FBakQsQ0FENkMsRUFNN0MsQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ00sV0FBbkMsRUFBZ0QsQ0FDNUMsQ0FBQyxHQUFHejVDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixlQUE5QixDQUQ0QyxFQUU1QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUNsWCxLQUFsQyxDQUEzQixFQUFxRTtFQUFFO0VBQXZFLENBRjRDLENBQWhELENBTjZDLENBQWpELENBRHdFLEVBWXhFLENBQUMsR0FBRzNpQyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM2QixXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdoN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDOEIsV0FBckMsRUFBa0QsQ0FDN0NyQixNQUFNLENBQUMvb0MsV0FBUCxLQUF1QixXQUF4QixJQUNPLENBQUMsR0FBRzdRLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NlLFdBQXRDLEVBQW1ELDJCQUFuRCxDQUQvQixLQUVPLENBQUMsR0FBR2w3QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDZ0IsV0FBdEMsRUFBbUQsdUNBQW5ELENBRi9CLENBRDhDLENBQWxELENBRDhDLEVBTTlDLENBQUMsR0FBR243QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsQ0FDdENTLE1BQU0sQ0FBQy9vQyxXQUFQLEtBQXVCLFdBQXhCLElBQ08sQ0FBQyxHQUFHN1EsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztJQUMvRHR2QyxHQUFHLEVBQUUsQ0FEMEQ7SUFFL0QsU0FBTyxtQ0FGd0Q7SUFHL0R3dkMsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBUVosTUFBTSxDQUFDbFcsU0FBUCxFQUFSO0lBQThCLENBQTVFO0VBSHNELENBQXhDLEVBSXhCLENBQ0MsQ0FBQyxHQUFHM2pDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixxQkFBOUIsQ0FERCxFQUVDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzdZLFlBQVAsQ0FBb0IsQ0FBQyxDQUFDcmdDLEVBQUUsR0FBR2s1QyxNQUFNLENBQUMxVyxjQUFiLE1BQWlDLElBQWpDLElBQXlDeGlDLEVBQUUsS0FBSyxLQUFLLENBQXJELEdBQXlELEtBQUssQ0FBOUQsR0FBa0VBLEVBQUUsQ0FBQ2lJLElBQXRFLElBQ3BFLENBQUN4QixFQUFFLEdBQUd5eUMsTUFBTSxDQUFDMVcsY0FBYixNQUFpQyxJQUFqQyxJQUF5Qy83QixFQUFFLEtBQUssS0FBSyxDQUFyRCxHQUF5RCxLQUFLLENBQTlELEdBQWtFQSxFQUFFLENBQUN3QixJQUFILENBQVEsQ0FBUixFQUFXMFQsU0FEVCxHQUVwRSxDQUFDLENBQUNuVCxFQUFFLEdBQUcwd0MsTUFBTSxDQUFDMVcsY0FBYixNQUFpQyxJQUFqQyxJQUF5Q2g2QixFQUFFLEtBQUssS0FBSyxDQUFyRCxHQUF5RCxLQUFLLENBQTlELEdBQWtFQSxFQUFFLENBQUM0ckMsY0FBdEUsSUFDSSxDQUFDbi9CLEVBQUUsR0FBR2lrQyxNQUFNLENBQUMxVyxjQUFiLE1BQWlDLElBQWpDLElBQXlDdnRCLEVBQUUsS0FBSyxLQUFLLENBQXJELEdBQXlELEtBQUssQ0FBOUQsR0FBa0VBLEVBQUUsQ0FBQ20vQixjQUR6RSxHQUVJLFVBSjRDLEVBSWhDLEVBSmdDLENBQTNCLENBQTNCLEVBSTRCO0VBQUU7RUFKOUIsQ0FGRCxDQUp3QixDQUQvQixLQWFPLENBQUMsR0FBRy8wQyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO0lBQy9EdHZDLEdBQUcsRUFBRSxDQUQwRDtJQUUvRCxTQUFPLG1DQUZ3RDtJQUcvRHd2QyxPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7TUFBRSxPQUFRWixNQUFNLENBQUNsVyxTQUFQLEVBQVI7SUFBOEIsQ0FBNUU7RUFIc0QsQ0FBeEMsRUFJeEIsQ0FDQyxDQUFDLEdBQUczakMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLG9CQUE5QixDQURELEVBRUMsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDN1ksWUFBUCxDQUFvQixDQUFDLENBQUNuckIsRUFBRSxHQUFHZ2tDLE1BQU0sQ0FBQ3pXLG9CQUFiLE1BQXVDLElBQXZDLElBQStDdnRCLEVBQUUsS0FBSyxLQUFLLENBQTNELEdBQStELEtBQUssQ0FBcEUsR0FBd0VBLEVBQUUsQ0FBQ2pOLElBQTVFLElBQ3BFLENBQUNpakIsRUFBRSxHQUFHZ3VCLE1BQU0sQ0FBQ3pXLG9CQUFiLE1BQXVDLElBQXZDLElBQStDdlgsRUFBRSxLQUFLLEtBQUssQ0FBM0QsR0FBK0QsS0FBSyxDQUFwRSxHQUF3RUEsRUFBRSxDQUFDampCLElBQUgsQ0FBUSxDQUFSLEVBQVcwVCxTQURmLEdBRXBFLENBQUMsQ0FBQ3dQLEVBQUUsR0FBRyt0QixNQUFNLENBQUN6VyxvQkFBYixNQUF1QyxJQUF2QyxJQUErQ3RYLEVBQUUsS0FBSyxLQUFLLENBQTNELEdBQStELEtBQUssQ0FBcEUsR0FBd0VBLEVBQUUsQ0FBQ2lwQixjQUE1RSxJQUNJLENBQUNocEIsRUFBRSxHQUFHOHRCLE1BQU0sQ0FBQ3pXLG9CQUFiLE1BQXVDLElBQXZDLElBQStDclgsRUFBRSxLQUFLLEtBQUssQ0FBM0QsR0FBK0QsS0FBSyxDQUFwRSxHQUF3RUEsRUFBRSxDQUFDZ3BCLGNBRC9FLEdBRUksVUFKNEMsRUFJaEMsRUFKZ0MsQ0FBM0IsQ0FBM0IsRUFJNEI7RUFBRTtFQUo5QixDQUZELENBSndCLENBYi9CLENBRHVDLEVBMEJ0QzZFLE1BQU0sQ0FBQy9vQyxXQUFQLEtBQXVCLFdBQXhCLElBQ08sQ0FBQyxHQUFHN1EsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2lCLFdBQXJDLEVBQWtELENBQ3pFLENBQUMsR0FBR3A3QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsMEJBQTlCLENBRHlFLEVBRXpFLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixxQkFBcUIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUNscUIsVUFBUCxDQUFrQixDQUFDM0QsRUFBRSxHQUFHNnRCLE1BQU0sQ0FBQzFXLGNBQWIsTUFBaUMsSUFBakMsSUFBeUNuWCxFQUFFLEtBQUssS0FBSyxDQUFyRCxHQUF5RCxLQUFLLENBQTlELEdBQWtFQSxFQUFFLENBQUN5aUIsVUFBdkYsQ0FBM0IsQ0FBaEQsRUFBZ0w7RUFBRTtFQUFsTCxDQUZ5RSxDQUFsRCxDQUQvQixLQUtPLENBQUMsR0FBR3p1QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDa0IsV0FBckMsRUFBa0QsQ0FDekUsQ0FBQyxHQUFHcjdDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QiwwQkFBOUIsQ0FEeUUsRUFFekUsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLHVCQUF1QixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ2xxQixVQUFQLENBQWtCLENBQUMxRCxFQUFFLEdBQUc0dEIsTUFBTSxDQUFDeFcsbUJBQWIsTUFBc0MsSUFBdEMsSUFBOENwWCxFQUFFLEtBQUssS0FBSyxDQUExRCxHQUE4RCxLQUFLLENBQW5FLEdBQXVFQSxFQUFFLENBQUNrbEMsVUFBNUYsQ0FBM0IsQ0FBbEQsRUFBdUw7RUFBRTtFQUF6TCxDQUZ5RSxDQUFsRCxDQUwvQixDQTFCdUMsQ0FBM0MsQ0FOOEMsQ0FBbEQsQ0Fad0UsRUF1RHhFLENBQUMsR0FBR254RCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNtQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd0N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDb0MsV0FBckMsRUFBa0QsQ0FDN0MzQixNQUFNLENBQUMvb0MsV0FBUCxLQUF1QixXQUF4QixJQUNPLENBQUMsR0FBRzdRLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NxQixXQUF0QyxFQUFtRCxtRUFBbkQsQ0FEL0IsS0FFTyxDQUFDLEdBQUd4N0MsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ3NCLFdBQXRDLEVBQW1ELG9EQUFuRCxDQUYvQixDQUQ4QyxDQUFsRCxDQUQ4QyxFQU03QzdCLE1BQU0sQ0FBQy9vQyxXQUFQLEtBQXVCLFdBQXhCLElBQ08sQ0FBQyxHQUFHN1EsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ3VCLFdBQW5DLEVBQWdELENBQ3ZFLENBQUMsR0FBRzE3QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsZUFBOUIsQ0FEdUUsRUFFdkUsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDNVcsaUJBQWxDLENBQTNCLEVBQWlGO0VBQUU7RUFBbkYsQ0FGdUUsQ0FBaEQsQ0FEL0IsS0FLTyxDQUFDLEdBQUdqakMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3dCLFdBQXJDLEVBQWtELENBQ3pFLENBQUMsR0FBRzM3QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsZUFBOUIsQ0FEeUUsRUFFekUsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDM1csd0JBQWxDLENBQTNCLEVBQXdGO0VBQUU7RUFBMUYsQ0FGeUUsQ0FBbEQsQ0FML0IsQ0FOOEMsQ0FBbEQsQ0F2RHdFLENBQWpELENBRC9CLEtBeUVPLENBQUMsR0FBR2xqQyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDeUIsV0FBckMsRUFBa0QsQ0FDekVDLFdBRHlFLEVBRXpFLENBQUMsR0FBRzc3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMyQyxXQUF2QyxFQUFvRCxDQUNoREMsV0FEZ0QsRUFFL0NsQyxNQUFNLENBQUNyVyxrQkFBUixJQUNPLENBQUMsR0FBR3hqQyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDNkIsV0FBdkMsRUFBb0QsRUFDMUUsQ0FBQyxHQUFHaDhDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQmpELE1BQU0sQ0FBQ3RXLGNBQTdCLEVBQTZDLFVBQVV4akMsS0FBVixFQUFpQjhLLEdBQWpCLEVBQXNCO0lBQ2hKLE9BQVEsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztNQUNoRXR2QyxHQUFHLEVBQUVBLEdBRDJEO01BRWhFLFNBQU87SUFGeUQsQ0FBcEMsRUFHN0IsQ0FDQyxDQUFDLEdBQUc3SyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M4QyxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdqOEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO01BQy9CejJDLElBQUksRUFBRSxnQkFBZ0JmLE1BQWhCLENBQXVCNUIsS0FBSyxDQUFDNDFELE1BQTdCO0lBRHlCLENBQW5DLEVBRUcsQ0FBQyxHQUFHMzFELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCMzZDLEtBQUssQ0FBQzZqQixPQUFqQyxDQUZILEVBRThDO0lBQUU7SUFGaEQsRUFFbUVzNEIsV0FGbkUsQ0FENkMsQ0FBakQsQ0FERCxFQU1DLENBQUMsR0FBR2w4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NnRCxXQUFwQyxFQUFpRCxDQUFDLEdBQUduOEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIzNkMsS0FBSyxDQUFDMEksTUFBakMsQ0FBakQsRUFBMkY7SUFBRTtJQUE3RixDQU5ELEVBT0MsQ0FBQyxHQUFHekksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DaUQsV0FBcEMsRUFBaUQsQ0FBQyxHQUFHcDhDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCMzZDLEtBQUssQ0FBQzg5QyxRQUFqQyxDQUFqRCxFQUE2RjtJQUFFO0lBQS9GLENBUEQsRUFRQyxDQUFDLEdBQUc3OUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9Da0QsV0FBcEMsRUFBaUQsQ0FBQyxHQUFHcjhDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCMzZDLEtBQUssQ0FBQzBJLE1BQU4sR0FBZTFJLEtBQUssQ0FBQzg5QyxRQUFoRCxDQUFqRCxFQUE0RztJQUFFO0lBQTlHLENBUkQsQ0FINkIsQ0FBaEM7RUFhSCxDQWRnRixDQUFwRCxFQWN6QjtFQUFJO0VBZHFCLENBRDhDLEVBQXBELENBRC9CLEtBa0JPLENBQUMsR0FBRzc5QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDbUMsV0FBdkMsRUFBb0QsRUFDMUUsQ0FBQyxHQUFHdDhDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQixDQUF0QixFQUF5QixVQUFVenRDLENBQVYsRUFBYTtJQUMvRyxPQUFPLENBQUMsR0FBR3JQLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztNQUFFdHVDLEdBQUcsRUFBRXdFO0lBQVAsQ0FBcEMsRUFBZ0QsQ0FDbkQsQ0FBQyxHQUFHclAsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9Db0QsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHdjhDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsZ0JBQUQsQ0FBN0IsRUFBaUQ7TUFBRSxTQUFPO0lBQVQsQ0FBakQsQ0FENkMsQ0FBakQsQ0FEbUQsRUFJbkQsQ0FBQyxHQUFHNzVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ3FELFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBR3g4QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLGdCQUFELENBQTdCLEVBQWlEO01BQUUsU0FBTztJQUFULENBQWpELENBRDZDLENBQWpELENBSm1ELEVBT25ELENBQUMsR0FBRzc1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NzRCxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd6OEMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJULE1BQU0sQ0FBQyxnQkFBRCxDQUE3QixFQUFpRDtNQUFFLFNBQU87SUFBVCxDQUFqRCxDQUQ2QyxDQUFqRCxDQVBtRCxFQVVuRCxDQUFDLEdBQUc3NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DdUQsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHMThDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsZ0JBQUQsQ0FBN0IsRUFBaUQ7TUFBRSxTQUFPO0lBQVQsQ0FBakQsQ0FENkMsQ0FBakQsQ0FWbUQsQ0FBaEQsQ0FBUDtFQWNILENBZjRFLENBQXBELEVBZXJCO0VBQUc7RUFma0IsQ0FEa0QsRUFBcEQsQ0FsQi9CLENBRmdELENBQXBELENBRnlFLENBQWxELENBekUvQixDQUR3RSxFQW9IeEU4QyxXQXBId0UsQ0FBakQsQ0FmL0IsQ0FEaUYsRUFzSWpGLENBQUMsR0FBRzM4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN5RCxXQUFyQyxFQUFrRCxDQUM3Q2hELE1BQU0sQ0FBQy9vQyxXQUFQLEtBQXVCLE1BQXhCLElBQ08sQ0FBQyxHQUFHN1EsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3NHLFdBQXJDLEVBQWtELENBQ3pFQyxXQUR5RSxFQUV4RTdHLE1BQU0sQ0FBQy9jLGVBQVIsSUFDTyxDQUFDLEdBQUc5OEIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCZCxNQUFNLENBQUMsZ0JBQUQsQ0FBN0IsRUFBaUQ7SUFDeEVodkMsR0FBRyxFQUFFLENBRG1FO0lBRXhFLFNBQU87RUFGaUUsQ0FBakQsQ0FEL0IsS0FLTyxDQUFDLEdBQUc3SyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDd0csV0FBckMsRUFBa0QsQ0FBQyxHQUFHM2dELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUNyWSxVQUFsQyxDQUFsRCxFQUFpRztFQUFFO0VBQW5HLENBTC9CLENBRnlFLENBQWxELENBRC9CLEtBVU8sQ0FBQyxHQUFHeGhDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN5RyxXQUFyQyxFQUFrRCxDQUN6RSxDQUFDLEdBQUc1Z0QsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDMEgsV0FBckMsRUFBa0QsQ0FDN0NqSCxNQUFNLENBQUMvb0MsV0FBUCxLQUF1QixXQUF4QixJQUNPLENBQUMsR0FBRzdRLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUMyRyxXQUFuQyxFQUFnRCx1Q0FBaEQsQ0FEL0IsS0FFTyxDQUFDLEdBQUc5Z0QsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQzRHLFdBQW5DLEVBQWdELCtCQUFoRCxDQUYvQixDQUQ4QyxDQUFsRCxDQUR5RSxFQU14RWxILE1BQU0sQ0FBQy9jLGVBQVIsSUFDTyxDQUFDLEdBQUc5OEIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCZCxNQUFNLENBQUMsZ0JBQUQsQ0FBN0IsRUFBaUQ7SUFDeEVodkMsR0FBRyxFQUFFLENBRG1FO0lBRXhFLFNBQU87RUFGaUUsQ0FBakQsQ0FEL0IsS0FLTyxDQUFDLEdBQUc3SyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDNkcsV0FBckMsRUFBa0QsQ0FBQyxHQUFHaGhELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUNyWSxVQUFsQyxDQUFsRCxFQUFpRztFQUFFO0VBQW5HLENBTC9CLENBTnlFLENBQWxELENBVi9CLENBRDhDLEVBd0I5QyxDQUFDLEdBQUd4aEMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJULE1BQU0sQ0FBQyxnQkFBRCxDQUE3QixFQUFpRDtJQUFFLGdCQUFnQkQsTUFBTSxDQUFDL29DO0VBQXpCLENBQWpELEVBQXlGLElBQXpGLEVBQStGO0VBQUU7RUFBakcsRUFBOEcsQ0FBQyxjQUFELENBQTlHLENBeEI4QyxDQUFsRCxDQXRJaUYsRUFnS2hGZ3BDLE1BQU0sQ0FBQ3Y2QixNQUFQLENBQWNqVSxNQUFmLElBQ08sQ0FBQyxHQUFHckwsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCZCxNQUFNLENBQUMsUUFBRCxDQUE3QixFQUF5QztJQUNoRWh2QyxHQUFHLEVBQUUsQ0FEMkQ7SUFFaEVxRixJQUFJLEVBQUUycEMsTUFBTSxDQUFDdjZCLE1BQVAsQ0FBY3BQLElBRjRDO0lBR2hFLFNBQU8sQ0FBQyxHQUFHbFEsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEI7TUFBRSxrQkFBa0JoRCxNQUFNLENBQUN2NkI7SUFBM0IsQ0FBMUI7RUFIeUQsQ0FBekMsRUFJeEIsSUFKd0IsRUFJbEI7RUFBRTtFQUpnQixFQUlILENBQUMsTUFBRCxFQUFTLE9BQVQsQ0FKRyxDQUQvQixJQU1NLENBQUMsR0FBR3RmLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQXRLMkUsQ0FBckQsQ0FBaEM7QUF3S0g7O0FBQ0R6NkMsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUNuUmE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRTUyQyxJQUFJLEVBQUU7QUFBUixDQUFqQjtBQUNBLElBQUk2MkMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSXVCLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLFdBQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxXQUFELENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsV0FBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkNzZDLEdBQUcsRUFBRSxNQURTO0VBRWQ0RixJQUFJLEVBQUUsTUFGUTtFQUdkLFNBQU87QUFITyxDQUFsQjtBQUtBLElBQUlrMUMsV0FBVyxHQUFHO0VBQ2RqeEMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJa3hDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxTQUFTbkQsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUdoNkMsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFNBQTVCLENBQXpCOztFQUNBLE9BQVEsQ0FBQyxHQUFHajZDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQ2hGLENBQUMsR0FBR3A2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNKLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBRy80QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2g1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNGLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2o1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNELFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2w1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNDLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3A1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNFLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3I1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNHLFVBQW5DLEVBQStDLENBQzNDLENBQUMsR0FBR3Q1QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQUU1cEMsSUFBSSxFQUFFO0VBQVIsQ0FBM0MsQ0FEMkMsQ0FBL0MsQ0FENkMsQ0FBakQsQ0FENkMsRUFNN0MsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSSxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd2NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DSyxVQUFwQyxFQUFnRCxDQUM1QyxDQUFDLEdBQUd4NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDTSxXQUF0QyxFQUFtRCxDQUFDLEdBQUd6NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsaUJBQTVCLENBQTNCLENBQW5ELEVBQStIO0VBQUU7RUFBakksQ0FENEMsQ0FBaEQsQ0FENkMsRUFJN0MsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDNkIsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHaDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QzhCLFdBQXhDLEVBQXFELENBQ2pELENBQUMsR0FBR2o3QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQUU1cEMsSUFBSSxFQUFFO0VBQVIsQ0FBM0MsQ0FEaUQsRUFFakQsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ1aUIsV0FBakIsQ0FBNkIsc0NBQTdCLENBQTNCLENBQTVDLEVBQThJO0VBQUU7RUFBaEosQ0FGaUQsQ0FBckQsQ0FEOEMsRUFLOUMsQ0FBQyxHQUFHN3BCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQytCLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR2w3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNnQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUduN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDaUMsV0FBckMsRUFBa0QsQ0FBQyxHQUFHcDdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnVpQixXQUFqQixDQUE2QixzQ0FBN0IsQ0FBM0IsQ0FBbEQsRUFBb0o7RUFBRTtFQUF0SixDQUQ4QyxFQUU5QyxDQUFDLEdBQUc3cEIsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLGdDQUE5QixDQUY4QyxFQUc5QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0lBQy9CNEYsU0FBUyxFQUFFbEYsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ1aUIsV0FBakIsQ0FBNkIsZ0RBQTdCO0VBRG9CLENBQW5DLEVBRUcsSUFGSCxFQUVTO0VBQUU7RUFGWCxFQUV3Qnd4QixXQUZ4QixDQUg4QyxFQU05QyxDQUFDLEdBQUdyN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0lBQy9CNEYsU0FBUyxFQUFFbEYsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ1aUIsV0FBakIsQ0FBNkIsZ0RBQTdCO0VBRG9CLENBQW5DLEVBRUcsSUFGSCxFQUVTO0VBQUU7RUFGWCxFQUV3Qnl4QixXQUZ4QixDQU44QyxFQVM5QyxDQUFDLEdBQUd0N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0lBQy9CNEYsU0FBUyxFQUFFbEYsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ1aUIsV0FBakIsQ0FBNkIsa0RBQTdCO0VBRG9CLENBQW5DLEVBRUcsSUFGSCxFQUVTO0VBQUU7RUFGWCxFQUV3QjB4QixXQUZ4QixDQVQ4QyxFQVk5QyxDQUFDLEdBQUd2N0MsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLGVBQTlCLENBWjhDLENBQWxELENBRDhDLENBQWxELENBTDhDLENBQWxELENBSjZDLENBQWpELENBTjZDLENBQWpELENBRDZDLENBQWpELENBRDZDLEVBcUM3QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLGdVQUE5QixDQXJDNkMsQ0FBakQsQ0FENkMsQ0FBakQsQ0FENkMsRUEwQzdDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNxQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd4N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDc0MsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHejdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN2QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DdUMsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHMTdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLDRCQUE1QixDQUEzQixDQUFoRCxFQUF1STtFQUFFO0VBQXpJLENBRHVDLEVBRXZDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3dDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRzM3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN5QyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUc1N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDMEMsV0FBdkMsRUFBb0QsSUFBcEQsRUFBMEQ7RUFBSTtFQUE5RCxDQUQ4QyxDQUFsRCxDQUQ4QyxFQUk3Q2hDLE1BQU0sQ0FBQ3hyQyxLQUFSLElBQ08sQ0FBQyxHQUFHck8sS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQzJCLFdBQXRDLEVBQW1ELENBQUMsR0FBRzk3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDeHJDLEtBQWxDLENBQW5ELEVBQTZGO0VBQUU7RUFBL0YsQ0FEL0IsSUFFTSxDQUFDLEdBQUdyTyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FOd0MsRUFPOUMsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzRDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRy83QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLGNBQUQsQ0FBN0IsRUFBK0M7SUFDM0MsU0FBTyxxQkFEb0M7SUFFM0NqekMsSUFBSSxFQUFFLFNBRnFDO0lBRzNDc0osSUFBSSxFQUFFMnBDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK2EsTUFBakIsQ0FBd0IsYUFBeEIsQ0FIcUM7SUFJM0NqUyxJQUFJLEVBQUUsYUFKcUM7SUFLM0NpcUMsT0FBTyxFQUFFUixNQUFNLENBQUM1VjtFQUwyQixDQUEvQyxFQU1HLElBTkgsRUFNUztFQUFFO0VBTlgsRUFNd0IsQ0FBQyxNQUFELENBTnhCLENBRDhDLEVBUTlDLENBQUMsR0FBR2prQyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM2QyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdoOEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDOEMsV0FBeEMsRUFBcUQsQ0FDakQsQ0FBQyxHQUFHajhDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkM1cEMsSUFBSSxFQUFFLFVBRGlDO0lBRXZDLFNBQU87RUFGZ0MsQ0FBM0MsQ0FEaUQsRUFLakQsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDO0lBQUVrQixPQUFPLEVBQUVSLE1BQU0sQ0FBQ3hWO0VBQWxCLENBQXRDLEVBQXlFLENBQUMsR0FBR3JrQyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0Qix1QkFBNUIsQ0FBM0IsQ0FBekUsRUFBMko7RUFBRTtFQUE3SixDQUxpRCxDQUFyRCxDQUQ4QyxFQVE5QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLFdBQUQsQ0FBN0IsRUFBNEM7SUFDeEMsY0FBY0EsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixtQ0FBNUIsQ0FEMEI7SUFFeENGLElBQUksRUFBRSxFQUZrQztJQUd4QyxTQUFPLDRCQUhpQztJQUl4QzBQLFFBQVEsRUFBRSxPQUo4QjtJQUt4Qyx1QkFBdUI7RUFMaUIsQ0FBNUMsRUFNRyxJQU5ILEVBTVM7RUFBRTtFQU5YLEVBTXdCLENBQUMsWUFBRCxDQU54QixDQVI4QyxDQUFsRCxDQVI4QyxDQUFsRCxDQVA4QyxDQUFsRCxDQUZ1QyxDQUEzQyxDQUQ4QyxDQUFsRCxDQUQ4QyxDQUFsRCxDQTFDNkMsQ0FBakQsQ0FEZ0YsRUFvRi9FdWhDLE1BQU0sQ0FBQ3Y2QixNQUFSLElBQ08sQ0FBQyxHQUFHdGYsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCZCxNQUFNLENBQUMsUUFBRCxDQUE3QixFQUF5QztJQUNoRWh2QyxHQUFHLEVBQUUsQ0FEMkQ7SUFFaEVxRixJQUFJLEVBQUUycEMsTUFBTSxDQUFDdDVCLFVBRm1EO0lBR2hFLFNBQU8sQ0FBQyxHQUFHdmdCLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCO01BQUUsa0JBQWtCaEQsTUFBTSxDQUFDdjZCO0lBQTNCLENBQTFCO0VBSHlELENBQXpDLEVBSXhCLElBSndCLEVBSWxCO0VBQUU7RUFKZ0IsRUFJSCxDQUFDLE1BQUQsRUFBUyxPQUFULENBSkcsQ0FEL0IsSUFNTSxDQUFDLEdBQUd0ZixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0ExRjBFLENBQXBELEVBMkY3QjtFQUFHO0VBM0YwQixDQUFoQztBQTRGSDs7QUFDRHo2QyxjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ3RJYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlFLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFNTJDLElBQUksRUFBRTtBQUFSLENBQWpCOztBQUNBLElBQUk2MkMsVUFBVSxHQUFHLGFBQWMsQ0FBQyxHQUFHdjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztFQUFFLFNBQU87QUFBVCxDQUFyQyxFQUE4RixDQUN6SCxhQUFjLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7RUFBRSxTQUFPO0FBQVQsQ0FBcEMsRUFBMEYsQ0FDcEcsYUFBYyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDO0VBQUUsU0FBTztBQUFULENBQXRDLEVBQW9GLCtCQUFwRixDQURzRixDQUExRixDQUQyRyxDQUE5RixFQUk1QixDQUFDO0FBQUU7QUFKeUIsQ0FBL0I7O0FBS0EsSUFBSUssVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCOztBQUNBLElBQUlDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBR3o1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7RUFBRSxTQUFPO0FBQVQsQ0FBcEMsRUFBcUcsZ0NBQXJHLEVBQXVJLENBQUM7QUFBRTtBQUExSSxDQUFoQzs7QUFDQSxJQUFJNkIsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLElBQUlDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBR3A3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M7RUFBRSxTQUFPO0FBQVQsQ0FBdEMsRUFBNkUseUJBQTdFLEVBQXdHLENBQUM7QUFBRTtBQUEzRyxDQUFoQzs7QUFDQSxJQUFJa0MsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHcjdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztFQUFFLFNBQU87QUFBVCxDQUFuQyxFQUFpRywrTEFBakcsRUFBa1MsQ0FBQztBQUFFO0FBQXJTLENBQWhDOztBQUNBLElBQUltQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHejdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztFQUFFLFNBQU87QUFBVCxDQUF0QyxFQUE2RSxvQ0FBN0UsRUFBbUgsQ0FBQztBQUFFO0FBQXRILENBQWhDOztBQUNBLElBQUl1QyxXQUFXLEdBQUcsYUFBYyxDQUFDLEdBQUcxN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0VBQUUsU0FBTztBQUFULENBQW5DLEVBQWlHLHVSQUFqRyxFQUEwWCxDQUFDO0FBQUU7QUFBN1gsQ0FBaEM7O0FBQ0EsSUFBSXdDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxJQUFJQyxXQUFXLEdBQUcsYUFBYyxDQUFDLEdBQUc5N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDO0VBQUUsU0FBTztBQUFULENBQXRDLEVBQTZFLDBCQUE3RSxFQUF5RyxDQUFDO0FBQUU7QUFBNUcsQ0FBaEM7O0FBQ0EsSUFBSTRDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBRy83QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7RUFBRSxTQUFPO0FBQVQsQ0FBbkMsRUFBaUcsK1BBQWpHLEVBQWtXLENBQUM7QUFBRTtBQUFyVyxDQUFoQzs7QUFDQSxJQUFJNkMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLElBQUlDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBR244QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M7RUFBRSxTQUFPO0FBQVQsQ0FBdEMsRUFBNkUsUUFBN0UsRUFBdUYsQ0FBQztBQUFFO0FBQTFGLENBQWhDOztBQUNBLElBQUlpRCxXQUFXLEdBQUcsYUFBYyxDQUFDLEdBQUdwOEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0VBQUUsU0FBTztBQUFULENBQW5DLEVBQWlHLCtNQUFqRyxFQUFrVCxDQUFDO0FBQUU7QUFBclQsQ0FBaEM7O0FBQ0EsSUFBSWtELFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxJQUFJQyxXQUFXLEdBQUcsYUFBYyxDQUFDLEdBQUd4OEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0VBQUUsU0FBTztBQUFULENBQW5DLEVBQWlGLCtNQUFqRixFQUFrUyxDQUFDO0FBQUU7QUFBclMsQ0FBaEM7O0FBQ0EsSUFBSXNELFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkNTdDLEdBQUcsRUFBRSxNQURTO0VBRWQ0RixJQUFJLEVBQUUsTUFGUTtFQUdkLFNBQU87QUFITyxDQUFsQjtBQUtBLElBQUk2NUMsV0FBVyxHQUFHO0VBQ2Q1MUMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7O0FBSUEsSUFBSTYxQyxXQUFXLEdBQUcsYUFBYyxDQUFDLEdBQUcxZ0QsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0VBQUUsU0FBTztBQUFULENBQW5DLEVBQTRFLDRFQUE1RSxFQUEwSixDQUFDO0FBQUU7QUFBN0osQ0FBaEM7O0FBQ0EsSUFBSXdILFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkbCtDLElBQUksRUFBRSxvREFEUTtFQUVkODBCLFFBQVEsRUFBRSxhQUZJO0VBR2QsU0FBTztBQUhPLENBQWxCOztBQUtBLElBQUlxcEIsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHN2dELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztFQUFFLFNBQU87QUFBVCxDQUF0QyxFQUEyRCx3QkFBM0QsRUFBcUYsQ0FBQztBQUFFO0FBQXhGLENBQWhDOztBQUNBLElBQUkySCxXQUFXLEdBQUcsYUFBYyxDQUFDLEdBQUc5Z0QsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDO0VBQUUsU0FBTztBQUFULENBQXRDLEVBQThELEdBQTlELEVBQW1FLENBQUM7QUFBRTtBQUF0RSxDQUFoQzs7QUFDQSxJQUFJNEgsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHL2dELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztFQUFFLFNBQU87QUFBVCxDQUF4QyxFQUFzRixDQUNsSCxhQUFjLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsaUNBQTVDLENBRG9HLENBQXRGLEVBRTdCLENBQUM7QUFBRTtBQUYwQixDQUFoQzs7QUFHQSxJQUFJNkgsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHaGhELEtBQUssQ0FBQzIrQyxpQkFBVixFQUE2Qiw2akNBQTdCLEVBQTRsQyxDQUE1bEMsQ0FBaEM7O0FBQ0EsSUFBSXlDLFdBQVcsR0FBRyxDQUNkSixXQURjLENBQWxCO0FBR0EsSUFBSUssV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLElBQUlDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBR3hoRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7RUFBRSxTQUFPO0FBQVQsQ0FBcEMsRUFBMkQsWUFBM0QsRUFBeUUsQ0FBQztBQUFFO0FBQTVFLENBQWhDOztBQUNBLElBQUlzSSxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHMWhELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztFQUFFLFNBQU87QUFBVCxDQUFuQyxFQUFtRSwyRkFBbkUsRUFBZ0ssQ0FBQztBQUFFO0FBQW5LLENBQWhDOztBQUNBLElBQUl3SSxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHL2hELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztFQUFFLFNBQU87QUFBVCxDQUFwQyxFQUFzRSxnQkFBdEUsRUFBd0YsQ0FBQztBQUFFO0FBQTNGLENBQWhDOztBQUNBLElBQUk2SSxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHbGlELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxZQUE1QyxFQUEwRCxDQUFDO0FBQUU7QUFBN0QsQ0FBaEM7O0FBQ0EsSUFBSWdKLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBR25pRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7RUFBRSxTQUFPO0FBQVQsQ0FBcEMsRUFBNEQsUUFBNUQsRUFBc0UsQ0FBQztBQUFFO0FBQXpFLENBQWhDOztBQUNBLElBQUlpSixXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJOEssV0FBVyxHQUFHO0VBQ2RyaUQsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJc2lELFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLE9BQUQsQ0FBbEI7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHOXRELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztFQUFFLFNBQU87QUFBVCxDQUF0QyxFQUE4RCxJQUE5RCxFQUFvRSxDQUFDO0FBQUU7QUFBdkUsQ0FBaEM7O0FBQ0EsSUFBSTRVLFdBQVcsR0FBRztFQUNkbGpELEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCOztBQUlBLElBQUltakQsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHaHVELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztFQUFFLFNBQU87QUFBVCxDQUFuQyxFQUFvRixvQkFBcEYsRUFBMEcsQ0FBQztBQUFFO0FBQTdHLENBQWhDOztBQUNBLElBQUk4VSxXQUFXLEdBQUcsQ0FDZEQsV0FEYyxDQUFsQjtBQUdBLElBQUlFLFdBQVcsR0FBRztFQUNkcmpELEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSXNqRCxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHcHVELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztFQUFFLFNBQU87QUFBVCxDQUFwQyxFQUFvRSxvQkFBcEUsRUFBMEYsQ0FBQztBQUFFO0FBQTdGLENBQWhDOztBQUNBLElBQUlrVixXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsU0FBU3pWLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSUMsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHaDZDLEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixTQUE1QixDQUF6Qjs7RUFDQSxPQUFRLENBQUMsR0FBR2o2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUNoRixDQUFDLEdBQUdwNkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSixVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRixVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDQyxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdwNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRSxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdyNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DRyxVQUFuQyxFQUErQyxDQUMzQyxDQUFDLEdBQUd0NUMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUFFNXBDLElBQUksRUFBRTtFQUFSLENBQTNDLENBRDJDLENBQS9DLENBRDZDLENBQWpELENBRDZDLEVBTTdDbXBDLFVBTjZDLENBQWpELENBRDZDLENBQWpELENBRDZDLEVBVzVDTSxNQUFNLENBQUNueUMsZUFBUixJQUNPLENBQUMsR0FBRzFILEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QmQsTUFBTSxDQUFDLE9BQUQsQ0FBN0IsRUFBd0M7SUFDL0RodkMsR0FBRyxFQUFFLENBRDBEO0lBRS9ELFNBQU8sMEJBRndEO0lBRy9EckIsT0FBTyxFQUFFcXdDLE1BQU0sQ0FBQy94QyxZQUgrQztJQUkvRGxCLElBQUksRUFBRWl6QyxNQUFNLENBQUM5eEM7RUFKa0QsQ0FBeEMsRUFLeEIsSUFMd0IsRUFLbEI7RUFBRTtFQUxnQixFQUtILENBQUMsU0FBRCxFQUFZLE1BQVosQ0FMRyxDQUQvQixJQU9NLENBQUMsR0FBRy9ILEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWxCdUMsQ0FBakQsQ0FENkMsQ0FBakQsQ0FENkMsRUF1QjdDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNLLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3g1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsQ0FDdkNNLFdBRHVDLEVBRXZDLENBQUMsR0FBR3o1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM2QixXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdoN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQ2pDLFNBQU8sQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUNoRCxNQUFNLENBQUN0VixVQUFQLEtBQXNCLFVBQXRCLElBQW9DLGVBQXJDLEVBQXNELG9EQUF0RCxDQUExQjtFQUQwQixDQUFyQyxFQUVHLENBQ0MsQ0FBQyxHQUFHdmtDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QzhCLFdBQXZDLEVBQW9ELENBQ2hELENBQUMsR0FBR2o3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMrQixXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdsN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDZ0MsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHbjdDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFBRTVwQyxJQUFJLEVBQUU7RUFBUixDQUEzQyxDQUQ4QyxFQUU5Q2dyQyxXQUY4QyxDQUFsRCxDQUQ4QyxFQUs5QyxDQUFDLEdBQUdwN0MsS0FBSyxDQUFDbTlDLGNBQVYsRUFBMEIsQ0FBQyxHQUFHbjlDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QztJQUM3RCx1QkFBdUJRLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7TUFBRSxPQUFTWixNQUFNLENBQUN0VixVQUFSLEdBQXNCa1csTUFBOUI7SUFBd0MsQ0FBdEYsQ0FEc0M7SUFFN0QxNkMsS0FBSyxFQUFFLFVBRnNEO0lBRzdENkcsSUFBSSxFQUFFLE9BSHVEO0lBSTdEZ0MsSUFBSSxFQUFFO0VBSnVELENBQXZDLEVBS3ZCLElBTHVCLEVBS2pCO0VBQUk7RUFMYSxDQUExQixFQUtnQyxDQUM1QixDQUFDNUksS0FBSyxDQUFDNDFELFdBQVAsRUFBb0IvYixNQUFNLENBQUN0VixVQUEzQixDQUQ0QixDQUxoQyxDQUw4QyxDQUFsRCxDQURnRCxFQWVoRDhXLFdBZmdELENBQXBELENBREQsQ0FGSCxFQW9CRztFQUFFO0VBcEJMLENBRDhDLEVBc0I5QyxDQUFDLEdBQUdyN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQ2pDLFNBQU8sQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUNoRCxNQUFNLENBQUN0VixVQUFQLEtBQXNCLFFBQXRCLElBQWtDLGVBQW5DLEVBQW9ELG1FQUFwRCxDQUExQjtFQUQwQixDQUFyQyxFQUVHLENBQ0MsQ0FBQyxHQUFHdmtDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1Q21DLFdBQXZDLEVBQW9ELENBQ2hELENBQUMsR0FBR3Q3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNvQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd2N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcUMsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHeDdDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFBRTVwQyxJQUFJLEVBQUU7RUFBUixDQUEzQyxDQUQ4QyxFQUU5Q3FyQyxXQUY4QyxDQUFsRCxDQUQ4QyxFQUs5QyxDQUFDLEdBQUd6N0MsS0FBSyxDQUFDbTlDLGNBQVYsRUFBMEIsQ0FBQyxHQUFHbjlDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QztJQUM3RCx1QkFBdUJRLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7TUFBRSxPQUFTWixNQUFNLENBQUN0VixVQUFSLEdBQXNCa1csTUFBOUI7SUFBd0MsQ0FBdEYsQ0FEc0M7SUFFN0QxNkMsS0FBSyxFQUFFLFFBRnNEO0lBRzdENkcsSUFBSSxFQUFFLE9BSHVEO0lBSTdEZ0MsSUFBSSxFQUFFO0VBSnVELENBQXZDLEVBS3ZCLElBTHVCLEVBS2pCO0VBQUk7RUFMYSxDQUExQixFQUtnQyxDQUM1QixDQUFDNUksS0FBSyxDQUFDNDFELFdBQVAsRUFBb0IvYixNQUFNLENBQUN0VixVQUEzQixDQUQ0QixDQUxoQyxDQUw4QyxDQUFsRCxDQURnRCxFQWVoRG1YLFdBZmdELENBQXBELENBREQsQ0FGSCxFQW9CRztFQUFFO0VBcEJMLENBdEI4QyxFQTJDOUMsQ0FBQyxHQUFHMTdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUNqQyxTQUFPLENBQUMsR0FBR241QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDaEQsTUFBTSxDQUFDdFYsVUFBUCxLQUFzQixXQUF0QixJQUFxQyxlQUF0QyxFQUF1RCxtRUFBdkQsQ0FBMUI7RUFEMEIsQ0FBckMsRUFFRyxDQUNDLENBQUMsR0FBR3ZrQyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUN3QyxXQUF2QyxFQUFvRCxDQUNoRCxDQUFDLEdBQUczN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDeUMsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHNTdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzBDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRzc3QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQUU1cEMsSUFBSSxFQUFFO0VBQVIsQ0FBM0MsQ0FEOEMsRUFFOUMwckMsV0FGOEMsQ0FBbEQsQ0FEOEMsRUFLOUMsQ0FBQyxHQUFHOTdDLEtBQUssQ0FBQ205QyxjQUFWLEVBQTBCLENBQUMsR0FBR245QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUM7SUFDN0QsdUJBQXVCUSxNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBU1osTUFBTSxDQUFDdFYsVUFBUixHQUFzQmtXLE1BQTlCO0lBQXdDLENBQXRGLENBRHNDO0lBRTdEMTZDLEtBQUssRUFBRSxXQUZzRDtJQUc3RDZHLElBQUksRUFBRSxPQUh1RDtJQUk3RGdDLElBQUksRUFBRTtFQUp1RCxDQUF2QyxFQUt2QixJQUx1QixFQUtqQjtFQUFJO0VBTGEsQ0FBMUIsRUFLZ0MsQ0FDNUIsQ0FBQzVJLEtBQUssQ0FBQzQxRCxXQUFQLEVBQW9CL2IsTUFBTSxDQUFDdFYsVUFBM0IsQ0FENEIsQ0FMaEMsQ0FMOEMsQ0FBbEQsQ0FEZ0QsRUFlaER3WCxXQWZnRCxDQUFwRCxDQURELENBRkgsRUFvQkc7RUFBRTtFQXBCTCxDQTNDOEMsRUFnRTlDLENBQUMsR0FBRy83QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFDakMsU0FBTyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQ2hELE1BQU0sQ0FBQ3RWLFVBQVAsS0FBc0IsUUFBdEIsSUFBa0MsZUFBbkMsRUFBb0QsbUVBQXBELENBQTFCO0VBRDBCLENBQXJDLEVBRUcsQ0FDQyxDQUFDLEdBQUd2a0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDNkMsV0FBdkMsRUFBb0QsQ0FDaEQsQ0FBQyxHQUFHaDhDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzhDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR2o4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMrQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdsOEMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUFFNXBDLElBQUksRUFBRTtFQUFSLENBQTNDLENBRDhDLEVBRTlDK3JDLFdBRjhDLENBQWxELENBRDhDLEVBSzlDLENBQUMsR0FBR244QyxLQUFLLENBQUNtOUMsY0FBVixFQUEwQixDQUFDLEdBQUduOUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDO0lBQzdELHVCQUF1QlEsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtNQUFFLE9BQVNaLE1BQU0sQ0FBQ3RWLFVBQVIsR0FBc0JrVyxNQUE5QjtJQUF3QyxDQUF0RixDQURzQztJQUU3RDE2QyxLQUFLLEVBQUUsUUFGc0Q7SUFHN0Q2RyxJQUFJLEVBQUUsT0FIdUQ7SUFJN0RnQyxJQUFJLEVBQUU7RUFKdUQsQ0FBdkMsRUFLdkIsSUFMdUIsRUFLakI7RUFBSTtFQUxhLENBQTFCLEVBS2dDLENBQzVCLENBQUM1SSxLQUFLLENBQUM0MUQsV0FBUCxFQUFvQi9iLE1BQU0sQ0FBQ3RWLFVBQTNCLENBRDRCLENBTGhDLENBTDhDLENBQWxELENBRGdELEVBZWhENlgsV0FmZ0QsQ0FBcEQsQ0FERCxDQUZILEVBb0JHO0VBQUU7RUFwQkwsQ0FoRThDLENBQWxELENBRnVDLEVBd0Z2QyxDQUFDLEdBQUdwOEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDa0QsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHcjhDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ21ELFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3Q4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNvRCxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd2OEMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QyxTQUFPLG9CQURnQztJQUV2QzVwQyxJQUFJLEVBQUU7RUFGaUMsQ0FBM0MsQ0FEOEMsQ0FBbEQsQ0FEOEMsRUFPOUNvc0MsV0FQOEMsQ0FBbEQsQ0FEOEMsRUFVOUMsQ0FBQyxHQUFHeDhDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3NELFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3o4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0M7SUFDcEMsU0FBTyxrQ0FENkI7SUFFcENrQixPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7TUFBRSxPQUFRWixNQUFNLENBQUNwVixnQkFBUCxHQUEwQixJQUFsQztJQUEwQyxDQUF4RjtFQUYyQixDQUF4QyxFQUdHLDRCQUhILENBRDhDLENBQWxELENBVjhDLENBQWxELENBeEZ1QyxFQXlHdkMsQ0FBQyxHQUFHemtDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN2QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDdUQsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHMThDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3dELFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRzM4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUN5RCxXQUF2QyxFQUFvRCxJQUFwRCxFQUEwRDtFQUFJO0VBQTlELENBRDhDLENBQWxELENBRDhDLEVBSTlDLENBQUMsR0FBRzU4QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLGNBQUQsQ0FBN0IsRUFBK0M7SUFDM0MsU0FBTywwQkFEb0M7SUFFM0NqekMsSUFBSSxFQUFFLFNBRnFDO0lBRzNDc0osSUFBSSxFQUFFLGFBSHFDO0lBSTNDRSxJQUFJLEVBQUUsYUFKcUM7SUFLM0MsbUJBQW1CeXBDLE1BQU0sQ0FBQ3hwQyxjQUxpQjtJQU0zQ2dxQyxPQUFPLEVBQUVSLE1BQU0sQ0FBQzVWO0VBTjJCLENBQS9DLEVBT0csSUFQSCxFQU9TO0VBQUU7RUFQWCxFQU93QixDQUFDLGlCQUFELENBUHhCLENBSjhDLENBQWxELENBRHVDLEVBY3RDNFYsTUFBTSxDQUFDeHJDLEtBQVIsSUFDTyxDQUFDLEdBQUdyTyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDc0csV0FBckMsRUFBa0QsQ0FBQyxHQUFHemdELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN4ckMsS0FBbEMsQ0FBbEQsRUFBNEY7RUFBRTtFQUE5RixDQUQvQixJQUVNLENBQUMsR0FBR3JPLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWhCaUMsQ0FBM0MsQ0F6R3VDLEVBMkh2Q21HLFdBM0h1QyxFQTRIdkMsQ0FBQyxHQUFHMWdELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3dILFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRzNnRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUN5SCxXQUFuQyxFQUFnRCxDQUM1Q0MsV0FENEMsRUFFNUMsQ0FBQyxHQUFHN2dELEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxNQURnQztJQUV2QzVwQyxJQUFJLEVBQUU7RUFGaUMsQ0FBM0MsQ0FGNEMsQ0FBaEQsQ0FEOEMsRUFROUMwd0MsV0FSOEMsRUFTOUMsQ0FBQyxHQUFHOWdELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUNqQyxTQUFPLDZDQUQwQjtJQUVqQ2tCLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtNQUFFLE9BQVFaLE1BQU0sQ0FBQ3JWLG9CQUFQLEdBQThCLENBQUNxVixNQUFNLENBQUNyVixvQkFBOUM7SUFBc0UsQ0FBcEg7RUFGd0IsQ0FBckMsRUFHRyxDQUNDdWMsV0FERCxFQUVDLENBQUMsR0FBRy9nRCxLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLFdBQUQsQ0FBN0IsRUFBNEM7SUFDeEMsY0FBYyx1TUFEMEI7SUFFeENqeEMsSUFBSSxFQUFFLEVBRmtDO0lBR3hDLFNBQU8sNEJBSGlDO0lBSXhDMFAsUUFBUSxFQUFFLE9BSjhCO0lBS3hDLHVCQUF1QjtFQUxpQixDQUE1QyxDQUZELEVBU0MsQ0FBQyxHQUFHdFksS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QyxTQUFPLDJCQURnQztJQUV2QzVwQyxJQUFJLEVBQUU7RUFGaUMsQ0FBM0MsQ0FURCxFQWFDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztJQUNoQyxTQUFPLENBQUMsR0FBR241QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDO01BQzFCLHFDQUFxQ2hELE1BQU0sQ0FBQ3JWLG9CQURsQjtNQUUxQixzQ0FBc0MsQ0FBQ3FWLE1BQU0sQ0FBQ3JWO0lBRnBCLENBQUQsRUFHMUIsdUdBSDBCLENBQTFCO0VBRHlCLENBQXBDLEVBS0c0YyxXQUxILEVBS2dCO0VBQUU7RUFMbEIsQ0FiRCxDQUhILENBVDhDLENBQWxELENBNUh1QyxDQUEzQyxDQUQ2QyxDQUFqRCxDQXZCNkMsRUF1TDVDdkgsTUFBTSxDQUFDMTdCLE9BQVAsSUFBbUIwN0IsTUFBTSxDQUFDcjdCLFdBQVAsSUFBc0IsQ0FBQ3E3QixNQUFNLENBQUN4N0IsaUJBQWpELElBQXVFdzdCLE1BQU0sQ0FBQzV1QyxvQkFBL0UsSUFDTyxDQUFDLEdBQUdqTCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxvQkFBRCxDQUE3QixFQUFxRDtJQUM1RWh2QyxHQUFHLEVBQUUsQ0FEdUU7SUFFNUUsZUFBZWd2QyxNQUFNLENBQUN6OEIsVUFGc0Q7SUFHNUUsbUJBQW1CeThCLE1BQU0sQ0FBQ3g4QixjQUhrRDtJQUk1RSxjQUFjdzhCLE1BQU0sQ0FBQ3Y4QixTQUp1RDtJQUs1RSxpQkFBaUJ1OEIsTUFBTSxDQUFDMThCLFlBTG9EO0lBTTVFLFlBQVkwOEIsTUFBTSxDQUFDMTdCLE9BTnlEO0lBTzVFN1EsU0FBUyxFQUFFdXNDLE1BQU0sQ0FBQ3R1QixjQVAwRDtJQVE1RSx5QkFBeUJzdUIsTUFBTSxDQUFDNXVDO0VBUjRDLENBQXJELEVBU3hCLElBVHdCLEVBU2xCO0VBQUU7RUFUZ0IsRUFTSCxDQUFDLGFBQUQsRUFBZ0IsaUJBQWhCLEVBQW1DLFlBQW5DLEVBQWlELGVBQWpELEVBQWtFLFVBQWxFLEVBQThFLFdBQTlFLEVBQTJGLHVCQUEzRixDQVRHLENBRC9CLElBV00sQ0FBQyxHQUFHakwsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBbE11QyxDQUFqRCxDQURnRixFQXFNL0VWLE1BQU0sQ0FBQ3Y2QixNQUFSLElBQ08sQ0FBQyxHQUFHdGYsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCZCxNQUFNLENBQUMsUUFBRCxDQUE3QixFQUF5QztJQUNoRWh2QyxHQUFHLEVBQUUsQ0FEMkQ7SUFFaEVxRixJQUFJLEVBQUUycEMsTUFBTSxDQUFDdDVCLFVBRm1EO0lBR2hFLFNBQU8sQ0FBQyxHQUFHdmdCLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCO01BQUUsa0JBQWtCaEQsTUFBTSxDQUFDdjZCO0lBQTNCLENBQTFCO0VBSHlELENBQXpDLEVBSXhCLElBSndCLEVBSWxCO0VBQUU7RUFKZ0IsRUFJSCxDQUFDLE1BQUQsRUFBUyxPQUFULENBSkcsQ0FEL0IsSUFNTSxDQUFDLEdBQUd0ZixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0EzTTBFLEVBNE1oRixDQUFDLEdBQUd2NkMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJULE1BQU0sQ0FBQyxPQUFELENBQTdCLEVBQXdDO0lBQ3BDLGNBQWMsSUFEc0I7SUFFcEMsZ0JBQWdCQSxNQUFNLENBQUNwVixnQkFGYTtJQUdwQ3BzQixLQUFLLEVBQUU7RUFINkIsQ0FBeEMsRUFJRztJQUNDLFdBQVMsQ0FBQyxHQUFHclksS0FBSyxDQUFDNDZDLE9BQVYsRUFBbUIsWUFBWTtNQUFFLE9BQU8sQ0FDN0MsQ0FBQyxHQUFHNTZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2tJLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3JoRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNtSSxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd0aEQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNvSSxXQUFyQyxFQUFrRCxDQUM5Q0MsV0FEOEMsRUFFOUMsQ0FBQyxHQUFHeGhELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ3NJLFdBQXRDLEVBQW1ELENBQUMsR0FBR3poRCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDcnNDLFVBQVAsQ0FBa0IsT0FBbEIsQ0FBM0IsSUFBeUQsYUFBNUcsRUFBMkg7TUFBRTtNQUE3SCxDQUY4QyxDQUFsRCxDQUR1QyxFQUt2Q2swQyxXQUx1QyxDQUEzQyxDQUQ4QyxFQVE5QyxDQUFDLEdBQUcxaEQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO1FBQ3BDa0IsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO1VBQUUsT0FBUVosTUFBTSxDQUFDcFYsZ0JBQVAsR0FBMEIsS0FBbEM7UUFBMkMsQ0FBekY7TUFEMkIsQ0FBeEMsRUFFRyxDQUNDLENBQUMsR0FBR3prQyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO1FBQ3ZDLFNBQU8sMEJBRGdDO1FBRXZDNXBDLElBQUksRUFBRTtNQUZpQyxDQUEzQyxDQURELENBRkgsQ0FSOEMsQ0FBbEQsQ0FEOEMsQ0FBbEQsQ0FENkMsRUFvQjdDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3dJLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRzNoRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN5SSxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUc1aEQsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztRQUN2QyxTQUFPLHVFQURnQztRQUV2QzVwQyxJQUFJLEVBQUU7TUFGaUMsQ0FBM0MsQ0FEOEMsRUFLOUMsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTlDLGNBQVYsRUFBMEIsQ0FBQyxHQUFHbjlDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QztRQUM3RCx1QkFBdUJRLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7VUFBRSxPQUFTWixNQUFNLENBQUN2dUMsV0FBUixHQUF1Qm12QyxNQUEvQjtRQUF5QyxDQUF2RixDQURzQztRQUU3RCxTQUFPLG9DQUZzRDtRQUc3RDd6QyxJQUFJLEVBQUUsTUFIdUQ7UUFJN0Rpd0MsV0FBVyxFQUFFLG9CQUpnRDtRQUs3RHVHLE9BQU8sRUFBRXpELE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLENBQUMsR0FBRzM1QyxLQUFLLENBQUNxOUMsUUFBVixFQUFvQixVQUFVNUMsTUFBVixFQUFrQjtVQUFFLE9BQVFaLE1BQU0sQ0FBQ2h0QixlQUFQLENBQXVCLENBQXZCLENBQVI7UUFBcUMsQ0FBN0UsRUFBK0UsQ0FBQyxPQUFELENBQS9FLENBQTFCO01BTG9ELENBQXZDLEVBTXZCLElBTnVCLEVBTWpCO01BQUk7TUFOYSxDQUExQixFQU1nRCxDQUM1QyxDQUFDN3NCLEtBQUssQ0FBQ3M5QyxVQUFQLEVBQW1CekQsTUFBTSxDQUFDdnVDLFdBQTFCLENBRDRDLENBTmhELENBTDhDLENBQWxELENBRDhDLEVBZ0I5QyxDQUFDLEdBQUd0TCxLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLGNBQUQsQ0FBN0IsRUFBK0M7UUFDM0NqekMsSUFBSSxFQUFFLFNBRHFDO1FBRTNDc0osSUFBSSxFQUFFMnBDLE1BQU0sQ0FBQ2g1QyxLQUFQLENBQWFvSSxLQUFiLENBQW1CeVcsa0JBQW5CLENBQXNDdlosTUFBdEMsR0FBK0MsQ0FBL0MsR0FDQSxtQkFEQSxHQUVBLGNBSnFDO1FBSzNDaUssSUFBSSxFQUFFLFVBTHFDO1FBTTNDaXFDLE9BQU8sRUFBRVIsTUFBTSxDQUFDbFY7TUFOMkIsQ0FBL0MsRUFPRyxJQVBILEVBT1M7TUFBRTtNQVBYLEVBT3dCLENBQUMsTUFBRCxDQVB4QixDQWhCOEMsQ0FBbEQsQ0FwQjZDLEVBNkM3QyxDQUFDLEdBQUcza0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMwSSxXQUF2QyxFQUFvRCxDQUNoRCxDQUFDLEdBQUc3aEQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDLElBQXZDLEVBQTZDLENBQ3pDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MySSxXQUFwQyxFQUFpRCxDQUM3Q0MsV0FENkMsRUFFN0MsQ0FBQyxHQUFHL2hELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQzZJLFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBR2hpRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFDakMsU0FBTyw0RUFEMEI7UUFFakNrQixPQUFPLEVBQUVSLE1BQU0sQ0FBQy9nQjtNQUZpQixDQUFyQyxFQUdHLENBQ0MsQ0FBQyxHQUFHOTRCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQzhJLFdBQXRDLEVBQW1ELENBQy9DLENBQUMsR0FBR2ppRCxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO1FBQ3ZDNXBDLElBQUksRUFBRXlwQyxNQUFNLENBQUNoaEIsU0FBUCxLQUFxQixNQUFyQixHQUNBLGtCQURBLEdBRUE7TUFIaUMsQ0FBM0MsRUFJRyxJQUpILEVBSVM7TUFBRTtNQUpYLEVBSXdCLENBQUMsTUFBRCxDQUp4QixDQUQrQyxDQUFuRCxDQURELEVBUUNxcEIsV0FSRCxDQUhILENBRDZDLENBQWpELENBRjZDLEVBaUI3Q0MsV0FqQjZDLEVBa0I3QyxDQUFDLEdBQUduaUQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DaUosV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHcGlELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztRQUNwQyxTQUFPLGdCQUQ2QjtRQUVwQ2tCLE9BQU8sRUFBRVIsTUFBTSxDQUFDN1U7TUFGb0IsQ0FBeEMsRUFHRyxDQUNDLENBQUMsR0FBR2hsQyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO1FBQ3ZDLFNBQU8sV0FEZ0M7UUFFdkM1cEMsSUFBSSxFQUFFO01BRmlDLENBQTNDLENBREQsQ0FISCxDQUQ2QyxDQUFqRCxDQWxCNkMsQ0FBakQsQ0FEeUMsQ0FBN0MsQ0FEZ0QsRUFpQy9DeXBDLE1BQU0sQ0FBQ3JzQyxVQUFQLENBQWtCLE9BQWxCLElBQTZCLENBQTlCLElBQ08sQ0FBQyxHQUFHeE4sS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QytTLFdBQXZDLEVBQW9ELEVBQzFFLENBQUMsR0FBR2x0RCxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JqRCxNQUFNLENBQUNyc0MsVUFBUCxDQUFrQmpMLElBQXhDLEVBQThDLFVBQVVvWixRQUFWLEVBQW9CO1FBQy9JLE9BQVEsQ0FBQyxHQUFHM2IsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztVQUNoRXR2QyxHQUFHLEVBQUU4USxRQUFRLENBQUMsSUFBRCxDQURtRDtVQUVoRSxTQUFPO1FBRnlELENBQXBDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHM2IsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DZ1UsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHbnRELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2lVLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3B0RCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNrVSxXQUFyQyxFQUFrRCxDQUFDLEdBQUdydEQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIvK0IsUUFBUSxDQUFDLE9BQUQsQ0FBUixDQUFrQixDQUFsQixFQUFxQixXQUFyQixDQUEzQixDQUFsRCxFQUFpSDtRQUFFO1FBQW5ILENBRDhDLEVBRTlDLENBQUMsR0FBRzNiLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ21VLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3R0RCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NvVSxXQUF0QyxFQUFtRCxDQUFDLEdBQUd2dEQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIvK0IsUUFBUSxDQUFDLE9BQUQsQ0FBUixDQUFrQixDQUFsQixFQUFxQixXQUFyQixDQUEzQixDQUFuRCxFQUFrSDtRQUFFO1FBQXBILENBRDhDLENBQWxELENBRjhDLENBQWxELENBRDZDLENBQWpELENBREQsRUFTQyxDQUFDLEdBQUczYixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NxVSxXQUFwQyxFQUFpRCxDQUFDLEdBQUd4dEQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ2hxQixVQUFQLENBQWtCbFUsUUFBUSxDQUFDLFlBQUQsQ0FBMUIsRUFBMEMsU0FBMUMsQ0FBM0IsQ0FBakQsRUFBbUk7UUFBRTtRQUFySSxDQVRELEVBVUMsQ0FBQyxHQUFHM2IsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0M7VUFDcEMsU0FBTyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyx1RUFBRCxFQUEwRTtZQUNuRyxhQUFhbGhDLFFBQVEsQ0FBQyxRQUFELENBQVIsS0FBdUIsT0FEK0Q7WUFFbkcsa0JBQWtCQSxRQUFRLENBQUMsUUFBRCxDQUFSLEtBQXVCO1VBRjBELENBQTFFLENBQTFCO1FBRDZCLENBQXhDLEVBS0csQ0FDQyxDQUFDLEdBQUczYixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NzVSxXQUF0QyxFQUFtRCxDQUMvQyxDQUFDLEdBQUd6dEQsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztVQUN2QzVwQyxJQUFJLEVBQUV1TCxRQUFRLENBQUMsUUFBRCxDQUFSLEtBQXVCLE9BQXZCLEdBQWlDLGdCQUFqQyxHQUFvRDtRQURuQixDQUEzQyxFQUVHLElBRkgsRUFFUztRQUFFO1FBRlgsRUFFd0IsQ0FBQyxNQUFELENBRnhCLENBRCtDLENBQW5ELENBREQsRUFNQyxDQUFDLEdBQUczYixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0N1VSxXQUF0QyxFQUFtRCxDQUFDLEdBQUcxdEQsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIvK0IsUUFBUSxDQUFDLFFBQUQsQ0FBbkMsQ0FBbkQsRUFBbUc7UUFBRTtRQUFyRyxDQU5ELENBTEgsRUFZRztRQUFFO1FBWkwsQ0FEc0MsQ0FBMUMsQ0FWRCxFQXlCQyxDQUFDLEdBQUczYixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0N3VSxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUczdEQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDeVUsV0FBdkMsRUFBb0QsQ0FDaEQsQ0FBQyxHQUFHNXRELEtBQUssQ0FBQ205QyxjQUFWLEVBQTBCLENBQUMsR0FBR245QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUM7VUFDN0QsdUJBQXVCUSxNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO1lBQUUsT0FBU1osTUFBTSxDQUFDaDVDLEtBQVAsQ0FBYW9JLEtBQWIsQ0FBbUJ5VyxrQkFBcEIsR0FBMEMrNkIsTUFBbEQ7VUFBNEQsQ0FBMUcsQ0FEc0M7VUFFN0QxNkMsS0FBSyxFQUFFNGIsUUFBUSxDQUFDLElBQUQsQ0FGOEM7VUFHN0QvVSxJQUFJLEVBQUU7UUFIdUQsQ0FBdkMsRUFJdkIsSUFKdUIsRUFJakI7UUFBRTtRQUplLEVBSUZpbkQsV0FKRSxDQUExQixFQUlzQyxDQUNsQyxDQUFDN3RELEtBQUssQ0FBQ2kvQyxjQUFQLEVBQXVCcEYsTUFBTSxDQUFDaDVDLEtBQVAsQ0FBYW9JLEtBQWIsQ0FBbUJ5VyxrQkFBMUMsQ0FEa0MsQ0FKdEMsQ0FEZ0QsRUFRaERvdUMsV0FSZ0QsQ0FBcEQsQ0FENkMsQ0FBakQsQ0F6QkQsQ0FINkIsQ0FBaEM7TUF5Q0gsQ0ExQ2dGLENBQXBELEVBMEN6QjtNQUFJO01BMUNxQixDQUQ4QyxFQUFwRCxDQUQvQixJQThDTSxDQUFDLEdBQUc5dEQsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBL0UwQyxDQUFwRCxDQUR1QyxFQWtGdENWLE1BQU0sQ0FBQ3JzQyxVQUFQLENBQWtCLE9BQWxCLE1BQStCLENBQWhDLElBQ08sQ0FBQyxHQUFHeE4sS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzRULFdBQXJDLEVBQWtERSxXQUFsRCxDQUQvQixJQUVNLENBQUMsR0FBR2p1RCxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FwRmlDLEVBcUZ0QyxDQUFDVixNQUFNLENBQUNyakMsT0FBVCxJQUNPLENBQUMsR0FBR3hXLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMrVCxXQUFyQyxFQUFrRCxDQUN4RXJVLE1BQU0sQ0FBQ3JzQyxVQUFQLElBQXFCcXNDLE1BQU0sQ0FBQ3JzQyxVQUFQLENBQWtCNk4sU0FBbEIsR0FBOEIsQ0FBcEQsSUFDTyxDQUFDLEdBQUdyYixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxZQUFELENBQTdCLEVBQTZDO1FBQ3BFaHZDLEdBQUcsRUFBRSxDQUQrRDtRQUVwRXRJLElBQUksRUFBRXMzQyxNQUFNLENBQUNyc0MsVUFGdUQ7UUFHcEUwMkMsaUJBQWlCLEVBQUVySyxNQUFNLENBQUNodEI7TUFIMEMsQ0FBN0MsRUFJeEIsSUFKd0IsRUFJbEI7TUFBRTtNQUpnQixFQUlILENBQUMsTUFBRCxDQUpHLENBRC9CLElBTU0sQ0FBQyxHQUFHN3NCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQVBtRSxDQUFsRCxDQUQvQixJQVVNLENBQUMsR0FBR3Y2QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0EvRmlDLENBQTNDLENBN0M2QyxDQUFQO0lBOEl0QyxDQTlJSyxDQURWO0lBZ0pDdDFDLENBQUMsRUFBRTtJQUFFOztFQWhKTixDQUpILEVBcUpHO0VBQUU7RUFySkwsRUFxSmtCLENBQUMsY0FBRCxDQXJKbEIsQ0E1TWdGLEVBa1doRixDQUFDLEdBQUdqRixLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLE9BQUQsQ0FBN0IsRUFBd0M7SUFDcEMsZ0JBQWdCQSxNQUFNLENBQUNuVixlQURhO0lBRXBDcnNCLEtBQUssRUFBRTtFQUY2QixDQUF4QyxFQUdHO0lBQ0MsV0FBUyxDQUFDLEdBQUdyWSxLQUFLLENBQUM0NkMsT0FBVixFQUFtQixZQUFZO01BQUUsT0FBTyxDQUM3QyxDQUFDLEdBQUc1NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNnVixXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdudUQsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztRQUN2QyxTQUFPLGlCQURnQztRQUV2QzVwQyxJQUFJLEVBQUU7TUFGaUMsQ0FBM0MsQ0FEOEMsRUFLOUNnK0MsV0FMOEMsQ0FBbEQsQ0FEdUMsRUFRdkMsQ0FBQyxHQUFHcHVELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2tWLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3J1RCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNtVixXQUFuQyxFQUFnRCwwQ0FBMEMsQ0FBQyxHQUFHdHVELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUNuOEIsZUFBUCxDQUF1Qm04QixNQUFNLENBQUMxOEIsWUFBOUIsQ0FBM0IsQ0FBMUMsR0FBb0gsNERBQXBILEdBQW1MLENBQUMsR0FBR25kLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN0dUIsY0FBUCxJQUF5QnN1QixNQUFNLENBQUN2OEIsU0FBaEMsR0FBNEMsNkJBQTVDLEdBQTRFLEVBQXZHLENBQW5MLEdBQWdTLElBQWhWLEVBQXNWO01BQUU7TUFBeFYsQ0FEOEMsQ0FBbEQsQ0FSdUMsRUFXdkMsQ0FBQyxHQUFHdGQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDb1YsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHdnVELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztRQUNwQyxTQUFPLHVDQUQ2QjtRQUVwQ2tCLE9BQU8sRUFBRVYsTUFBTSxDQUFDLEVBQUQsQ0FBTixLQUFlQSxNQUFNLENBQUMsRUFBRCxDQUFOLEdBQ3BCLFlBQVk7VUFDUkUsTUFBTSxDQUFDblYsZUFBUCxHQUF5QixLQUF6QjtVQUNBbVYsTUFBTSxDQUFDdFYsVUFBUCxHQUFvQixFQUFwQjtVQUNBc1YsTUFBTSxDQUFDN1YsSUFBUCxDQUFZamtDLEtBQVosR0FBb0IsSUFBcEI7UUFDSCxDQUxJO01BRjJCLENBQXhDLEVBUUcsV0FSSCxDQUQ4QyxFQVU3Qzg1QyxNQUFNLENBQUN0dUIsY0FBUCxJQUF5QnN1QixNQUFNLENBQUN2OEIsU0FBakMsSUFDTyxDQUFDLEdBQUd0ZCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxjQUFELENBQTdCLEVBQStDO1FBQ3RFaHZDLEdBQUcsRUFBRSxDQURpRTtRQUV0RXFGLElBQUksRUFBRSxlQUZnRTtRQUd0RXRKLElBQUksRUFBRSxTQUhnRTtRQUl0RXl6QyxPQUFPLEVBQUVSLE1BQU0sQ0FBQzlVO01BSnNELENBQS9DLENBRC9CLElBT00sQ0FBQyxHQUFHL2tDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWpCd0MsQ0FBbEQsQ0FYdUMsQ0FBM0MsQ0FENkMsQ0FBUDtJQWdDdEMsQ0FoQ0ssQ0FEVjtJQWtDQ3QxQyxDQUFDLEVBQUU7SUFBRTs7RUFsQ04sQ0FISCxFQXNDRztFQUFFO0VBdENMLEVBc0NrQixDQUFDLGNBQUQsQ0F0Q2xCLENBbFdnRixDQUFwRCxFQXlZN0I7RUFBRztFQXpZMEIsQ0FBaEM7QUEwWUg7O0FBQ0RuRixjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ3JnQmE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTQ2QyxZQUFZLEdBQUcsU0FBZkEsWUFBZSxDQUFVaDFDLENBQVYsRUFBYTtFQUFFLE9BQVEsQ0FBQyxHQUFHN0YsS0FBSyxDQUFDODZDLFdBQVYsRUFBdUIsaUJBQXZCLEdBQTJDajFDLENBQUMsR0FBR0EsQ0FBQyxFQUFoRCxFQUFvRCxDQUFDLEdBQUc3RixLQUFLLENBQUMrNkMsVUFBVixHQUFwRCxFQUE2RWwxQyxDQUFyRjtBQUEwRixDQUE1SDs7QUFDQSxJQUFJa3pDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUNiLGNBQWMsYUFERDtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUlFLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUNiLFNBQU8sNkJBRE07RUFFYjMyQyxJQUFJLEVBQUU7QUFGTyxDQUFqQjtBQUlBLElBQUk0MkMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSXVCLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLFdBQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxXQUFELENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsV0FBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkeHpDLEVBQUUsRUFBRSxPQURVO0VBRWR5akQsS0FBSyxFQUFFO0FBRk8sQ0FBbEI7QUFJQSxJQUFJaFEsV0FBVyxHQUFHO0VBQ2R6ekMsRUFBRSxFQUFFLFFBRFU7RUFFZHlqRCxLQUFLLEVBQUU7QUFGTyxDQUFsQjtBQUlBLElBQUkvUCxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZDN6QyxFQUFFLEVBQUUsSUFEVTtFQUVkeWpELEtBQUssRUFBRTtBQUZPLENBQWxCO0FBSUEsSUFBSTdQLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxTQUFTdEQsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUdoNkMsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFNBQTVCLENBQXpCOztFQUNBLE9BQVEsQ0FBQyxHQUFHajZDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQ2hGLENBQUMsR0FBR3A2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNKLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBRy80QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2g1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNGLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2o1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsQ0FDdkMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0QsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0MsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHcDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ0UsVUFBbkMsRUFBK0MsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnVpQixXQUFqQixDQUE2Qiw0QkFBN0IsQ0FBM0IsQ0FBL0MsRUFBdUk7RUFBRTtFQUF6SSxDQUQ2QyxDQUFqRCxDQUQ2QyxDQUFqRCxDQUR1QyxDQUEzQyxDQUQ2QyxDQUFqRCxDQUQ2QyxFQVU3QyxDQUFDLEdBQUc3cEIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRyxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd0NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSSxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd2NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSyxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd4NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDTSxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd6NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DNkIsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHaDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQzhCLFdBQXRDLEVBQW1ELENBQUMsR0FBR2o3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixpQkFBNUIsQ0FBM0IsQ0FBbkQsRUFBK0g7RUFBRTtFQUFqSSxDQUQ2QyxDQUFqRCxDQUQ4QyxFQUk5QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMrQixXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdsN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDZ0MsV0FBeEMsRUFBcUQsQ0FDakQsQ0FBQyxHQUFHbjdDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFBRTVwQyxJQUFJLEVBQUU7RUFBUixDQUEzQyxDQURpRCxFQUVqRCxDQUFDLEdBQUdwUSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnVpQixXQUFqQixDQUE2QixzQ0FBN0IsQ0FBM0IsQ0FBNUMsRUFBOEk7RUFBRTtFQUFoSixDQUZpRCxDQUFyRCxDQUQ4QyxFQUs5QyxDQUFDLEdBQUc3cEIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDaUMsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHcDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2tDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3I3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNtQyxXQUFyQyxFQUFrRCxDQUFDLEdBQUd0N0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCdWlCLFdBQWpCLENBQTZCLHNDQUE3QixDQUEzQixDQUFsRCxFQUFvSjtFQUFFO0VBQXRKLENBRDhDLEVBRTlDLENBQUMsR0FBRzdwQixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsZ0NBQTlCLENBRjhDLEVBRzlDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7SUFDL0I0RixTQUFTLEVBQUVsRixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnVpQixXQUFqQixDQUE2QixnREFBN0I7RUFEb0IsQ0FBbkMsRUFFRyxJQUZILEVBRVM7RUFBRTtFQUZYLEVBRXdCMHhCLFdBRnhCLENBSDhDLEVBTTlDLENBQUMsR0FBR3Y3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7SUFDL0I0RixTQUFTLEVBQUVsRixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnVpQixXQUFqQixDQUE2QixnREFBN0I7RUFEb0IsQ0FBbkMsRUFFRyxJQUZILEVBRVM7RUFBRTtFQUZYLEVBRXdCMnhCLFdBRnhCLENBTjhDLEVBUzlDLENBQUMsR0FBR3g3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7SUFDL0I0RixTQUFTLEVBQUVsRixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnVpQixXQUFqQixDQUE2QixrREFBN0I7RUFEb0IsQ0FBbkMsRUFFRyxJQUZILEVBRVM7RUFBRTtFQUZYLEVBRXdCNHhCLFdBRnhCLENBVDhDLEVBWTlDLENBQUMsR0FBR3o3QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsZUFBOUIsQ0FaOEMsQ0FBbEQsQ0FEOEMsQ0FBbEQsQ0FMOEMsQ0FBbEQsQ0FKOEMsQ0FBbEQsQ0FENkMsQ0FBakQsQ0FENkMsQ0FBakQsQ0FENkMsRUFnQzdDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN1QyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUcxN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDd0MsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHMzdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3lDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRzU3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMwQyxXQUFyQyxFQUFrRCxDQUM3Q2hDLE1BQU0sQ0FBQ242QixrQkFBUCxDQUEwQnZaLE1BQTFCLEdBQW1DLENBQXBDLElBQ08sQ0FBQyxHQUFHbkcsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCZCxNQUFNLENBQUMsY0FBRCxDQUE3QixFQUErQztJQUN0RWh2QyxHQUFHLEVBQUUsQ0FEaUU7SUFFdEUsU0FBTyxRQUYrRDtJQUd0RWpFLElBQUksRUFBRSxTQUhnRTtJQUl0RXNKLElBQUksRUFBRSxHQUFHdk8sTUFBSCxDQUFVazRDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK2EsTUFBakIsQ0FBd0IsUUFBeEIsQ0FBVixFQUE2QyxJQUE3QyxFQUFtRDFnQixNQUFuRCxDQUEwRGs0QyxNQUFNLENBQUN2VSxhQUFqRSxFQUFnRixHQUFoRixFQUFxRjNqQyxNQUFyRixDQUE0Rms0QyxNQUFNLENBQUN0VSxnQkFBbkcsRUFBcUgsR0FBckgsQ0FKZ0U7SUFLdEVuMUIsSUFBSSxFQUFFLGVBTGdFO0lBTXRFaXFDLE9BQU8sRUFBRVIsTUFBTSxDQUFDNVQ7RUFOc0QsQ0FBL0MsRUFPeEIsSUFQd0IsRUFPbEI7RUFBRTtFQVBnQixFQU9ILENBQUMsTUFBRCxDQVBHLENBRC9CLElBU00sQ0FBQyxHQUFHam1DLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQVZ3QyxDQUFsRCxDQUQ4QyxDQUFsRCxDQUQ4QyxDQUFsRCxDQUQ4QyxDQUFsRCxDQWhDNkMsQ0FBakQsQ0FWNkMsQ0FBakQsQ0FENkMsRUErRDdDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsNENBQTlCLENBL0Q2QyxFQWdFN0MsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzJDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRzk3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMsSUFBdkMsRUFBNkMsQ0FDekMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QyxJQUF2QyxFQUE2QyxDQUN6QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DNEMsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHLzdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQzZDLFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBR2g4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLFlBQTVCLENBQTNCLElBQXdFLEdBQXhFLEdBQThFLENBQUMsR0FBRzlJLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLE9BQTVCLENBQTNCLENBQTFILEVBQTRMO0VBQUU7RUFBOUwsQ0FENkMsQ0FBakQsQ0FENkMsRUFJN0MsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DOEMsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHajhDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQytDLFdBQXRDLEVBQW1ELENBQUMsR0FBR2w4QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixRQUE1QixDQUEzQixDQUFuRCxFQUFzSDtFQUFFO0VBQXhILENBRDZDLENBQWpELENBSjZDLEVBTzdDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ2dELFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBR244QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NpRCxXQUF0QyxFQUFtRCxDQUMvQyxDQUFDLEdBQUdwOEMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QzVwQyxJQUFJLEVBQUUsVUFEaUM7SUFFdkNpcUMsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBUVosTUFBTSxDQUFDN1QsbUJBQVAsRUFBUjtJQUF3QyxDQUF0RjtFQUY4QixDQUEzQyxDQUQrQyxDQUFuRCxDQUQ2QyxDQUFqRCxDQVA2QyxDQUFqRCxDQUR5QyxDQUE3QyxDQUR5QyxFQW1CekMsQ0FBQyxHQUFHaG1DLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QyxJQUF2QyxFQUE2QyxDQUN4Q1UsTUFBTSxDQUFDdFUsZ0JBQVAsS0FBNEIsQ0FBN0IsSUFDTyxDQUFDLEdBQUd2bEMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCZCxNQUFNLENBQUMsYUFBRCxDQUE3QixFQUE4QztJQUFFaHZDLEdBQUcsRUFBRTtFQUFQLENBQTlDLENBRC9CLEtBRU8sQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEM7SUFBRXZ2QyxHQUFHLEVBQUU7RUFBUCxDQUE5QyxFQUEwRCxDQUFDLEdBQUc3SyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQmpELE1BQU0sQ0FBQ3JzQyxVQUE3QixFQUF5QyxVQUFVbU8sUUFBVixFQUFvQnRKLEtBQXBCLEVBQTJCO0lBQ3pKLE9BQVEsQ0FBQyxHQUFHclMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztNQUNoRThDLE9BQU8sRUFBRSxJQUR1RDtNQUVoRWo4QyxHQUFHLEVBQUUsVUFGMkQ7TUFHaEU2SixHQUFHLEVBQUV3SCxLQUgyRDtNQUloRSxTQUFPLENBQUMsR0FBR3JTLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCO1FBQzdCLGdCQUFnQmo5QyxNQUFNLENBQUMwUCxJQUFQLENBQVlxTSxRQUFRLENBQUMsUUFBRCxDQUFwQixFQUFnQ3hWLE1BQWhDLEdBQXlDO01BRDVCLENBQTFCO0lBSnlELENBQXBDLEVBTzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJULE1BQU0sQ0FBQyxhQUFELENBQTdCLEVBQThDO01BQzFDeGhDLEtBQUssRUFBRXdoQyxNQUFNLENBQUNwVSxVQUQ0QjtNQUUxQzlwQixRQUFRLEVBQUVBLFFBRmdDO01BRzFDdEosS0FBSyxFQUFFQSxLQUhtQztNQUkxQyx1QkFBdUIzQyxJQUFJLENBQUNHLFNBQUwsQ0FBZWdxQyxNQUFNLENBQUNuNkIsa0JBQXRCLENBSm1CO01BSzFDbTJDLGVBQWUsRUFBRSx5QkFBVXBiLE1BQVYsRUFBa0I7UUFBRSxPQUFRWixNQUFNLENBQUMvVCx3QkFBUCxDQUFnQ3p6QixLQUFoQyxDQUFSO01BQWtEO0lBTDdDLENBQTlDLEVBTUcsSUFOSCxFQU1TO0lBQUU7SUFOWCxFQU13QixDQUFDLE9BQUQsRUFBVSxVQUFWLEVBQXNCLE9BQXRCLEVBQStCLHFCQUEvQixFQUFzRCxpQkFBdEQsQ0FOeEIsQ0FERCxDQVA2QixFQWU3QjtJQUFFO0lBZjJCLENBQWhDO0VBZ0JILENBakJ3RixDQUExRCxFQWlCM0I7RUFBSTtFQWpCdUIsQ0FGbkMsQ0FEeUMsQ0FBN0MsQ0FuQnlDLENBQTdDLENBRDhDLENBQWxELENBaEU2QyxDQUFqRCxDQURnRixFQThHL0V3bkMsTUFBTSxDQUFDdjZCLE1BQVIsSUFDTyxDQUFDLEdBQUd0ZixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxRQUFELENBQTdCLEVBQXlDO0lBQ2hFaHZDLEdBQUcsRUFBRSxDQUQyRDtJQUVoRXFGLElBQUksRUFBRTJwQyxNQUFNLENBQUN0NUIsVUFGbUQ7SUFHaEUsU0FBTyxDQUFDLEdBQUd2Z0IsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEI7TUFBRSxrQkFBa0JoRCxNQUFNLENBQUN2NkI7SUFBM0IsQ0FBMUIsQ0FIeUQ7SUFJaEUsZUFBZTtFQUppRCxDQUF6QyxFQUt4QixJQUx3QixFQUtsQjtFQUFFO0VBTGdCLEVBS0gsQ0FBQyxNQUFELEVBQVMsT0FBVCxDQUxHLENBRC9CLElBT00sQ0FBQyxHQUFHdGYsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBckgwRSxDQUFwRCxFQXNIN0I7RUFBRztFQXRIMEIsQ0FBaEM7QUF1SEg7O0FBQ0R6NkMsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUM3S2E7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7O0FBQ0EsU0FBU0YsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxPQUFRLENBQUMsR0FBRy81QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0IsQ0FBdEIsRUFBeUIsVUFBVXpxQyxLQUFWLEVBQWlCO0lBQzFILE9BQU8sQ0FBQyxHQUFHclMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DO01BQUV0dUMsR0FBRyxFQUFFd0g7SUFBUCxDQUFwQyxFQUFvRCxDQUN2RCxDQUFDLEdBQUdyUyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NKLFVBQXBDLEVBQWdELENBQzVDLENBQUMsR0FBRy80QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLFNBQUQsQ0FBN0IsQ0FENEMsQ0FBaEQsQ0FEdUQsRUFJdkQsQ0FBQyxHQUFHNzVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJULE1BQU0sQ0FBQyxTQUFELENBQTdCLENBRHNDLENBQTFDLENBSnVELEVBT3ZELENBQUMsR0FBRzc1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NILFVBQXBDLEVBQWdELENBQzVDLENBQUMsR0FBR2g1QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLFNBQUQsQ0FBN0IsQ0FENEMsQ0FBaEQsQ0FQdUQsQ0FBcEQsQ0FBUDtFQVdILENBWm1GLENBQXBELEVBWTVCO0VBQUc7RUFaeUIsQ0FBaEM7QUFhSDs7QUFDRC81QyxjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ3JCYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJNDZDLFlBQVksR0FBRyxTQUFmQSxZQUFlLENBQVVoMUMsQ0FBVixFQUFhO0VBQUUsT0FBUSxDQUFDLEdBQUc3RixLQUFLLENBQUM4NkMsV0FBVixFQUF1QixpQkFBdkIsR0FBMkNqMUMsQ0FBQyxHQUFHQSxDQUFDLEVBQWhELEVBQW9ELENBQUMsR0FBRzdGLEtBQUssQ0FBQys2QyxVQUFWLEdBQXBELEVBQTZFbDFDLENBQXJGO0FBQTBGLENBQTVIOztBQUNBLElBQUlrekMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSXVCLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxJQUFJQyxXQUFXLEdBQUcsYUFBY0osWUFBWSxDQUFDLFlBQVk7RUFBRTtFQUFjLE9BQU8sQ0FBQyxHQUFHNzZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxJQUExQyxFQUFnRCxDQUFDO0VBQUU7RUFBbkQsQ0FBUDtBQUEyRSxDQUF4RyxDQUE1Qzs7QUFDQSxJQUFJK0IsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLElBQUlDLFdBQVcsR0FBRyxhQUFjWCxZQUFZLENBQUMsWUFBWTtFQUFFO0VBQWMsT0FBTyxDQUFDLEdBQUc3NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLElBQTFDLEVBQWdELENBQUM7RUFBRTtFQUFuRCxDQUFQO0FBQTJFLENBQXhHLENBQTVDOztBQUNBLElBQUlzQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHLGFBQWNsQixZQUFZLENBQUMsWUFBWTtFQUFFO0VBQWMsT0FBTyxDQUFDLEdBQUc3NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLElBQTFDLEVBQWdELENBQUM7RUFBRTtFQUFuRCxDQUFQO0FBQTJFLENBQXhHLENBQTVDOztBQUNBLElBQUk2QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZCxTQUFPLFNBRE87RUFFZCxPQUFLO0FBRlMsQ0FBbEI7QUFJQSxJQUFJQyxXQUFXLEdBQUc7RUFDZHJ4QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUlzeEMsV0FBVyxHQUFHLENBQUMsT0FBRCxDQUFsQjs7QUFDQSxJQUFJQyxXQUFXLEdBQUcsYUFBY3ZCLFlBQVksQ0FBQyxZQUFZO0VBQUU7RUFBYyxPQUFPLENBQUMsR0FBRzc2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M7SUFBRSxTQUFPO0VBQVQsQ0FBdEMsRUFBOEQsSUFBOUQsRUFBb0UsQ0FBQztFQUFFO0VBQXZFLENBQVA7QUFBK0YsQ0FBNUgsQ0FBNUM7O0FBQ0EsSUFBSWtELFdBQVcsR0FBRztFQUNkeHhDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCOztBQUlBLElBQUl5eEMsV0FBVyxHQUFHLGFBQWN6QixZQUFZLENBQUMsWUFBWTtFQUFFO0VBQWMsT0FBTyxDQUFDLEdBQUc3NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDO0lBQUUsU0FBTztFQUFULENBQXRDLEVBQThELElBQTlELEVBQW9FLENBQUM7RUFBRTtFQUF2RSxDQUFQO0FBQStGLENBQTVILENBQTVDOztBQUNBLElBQUlvRCxXQUFXLEdBQUcsQ0FDZEQsV0FEYyxDQUFsQjs7QUFHQSxTQUFTeEQsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUdoNkMsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFNBQTVCLENBQXpCOztFQUNBLE9BQVEsQ0FBQyxHQUFHajZDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQ2hGLENBQUMsR0FBR3A2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NKLFVBQXBDLEVBQWdELENBQzVDLENBQUMsR0FBRy80QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NILFVBQXRDLEVBQWtELENBQzlDLENBQUMsR0FBR2g1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NGLFVBQXRDLEVBQWtELENBQUMsR0FBR2o1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmQsTUFBTSxDQUFDaitCLFFBQVAsQ0FBZ0IsTUFBaEIsRUFBd0IsT0FBeEIsRUFBaUMsQ0FBakMsRUFBb0MsV0FBcEMsSUFDdkVpK0IsTUFBTSxDQUFDaitCLFFBQVAsQ0FBZ0IsTUFBaEIsRUFBd0IsT0FBeEIsRUFBaUMsQ0FBakMsRUFBb0MsV0FBcEMsQ0FEdUUsR0FFdkVrK0IsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrckIsT0FBakIsRUFGNEMsQ0FBbEQsRUFFbUM7RUFBRTtFQUZyQyxDQUQ4QyxFQUk3Q3p6QixNQUFNLENBQUMwUCxJQUFQLENBQVlzcUMsTUFBTSxDQUFDaitCLFFBQVAsQ0FBZ0IsUUFBaEIsQ0FBWixFQUF1Q3hWLE1BQXZDLEdBQWdELENBQWpELElBQ08sQ0FBQyxHQUFHbkcsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztJQUM3RHR2QyxHQUFHLEVBQUUsQ0FEd0Q7SUFFN0QsU0FBTyx1RkFGc0Q7SUFHN0R3dkMsT0FBTyxFQUFFUixNQUFNLENBQUN2VDtFQUg2QyxDQUF0QyxFQUl4QixDQUNDLENBQUMsR0FBR3RtQyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NELFVBQXRDLEVBQWtELENBQzlDLENBQUMsR0FBR2w1QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDLFNBQU8saUJBRGdDO0lBRXZDNXBDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxDQUQ4QyxFQUs5QyxDQUFDLEdBQUdwUSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLE1BQTVCLENBQTNCLElBQWtFLEdBQWxFLEdBQXdFLENBQUMsR0FBRzlJLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUNwOUIsV0FBUCxFQUEzQixDQUF4RSxHQUEySCxHQUEzSCxHQUFpSSxDQUFDLEdBQUd6YyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrYSxNQUFqQixDQUF3QixRQUF4QixDQUEzQixDQUE3SyxFQUE0TztFQUFFO0VBQTlPLENBTDhDLENBQWxELENBREQsRUFRQyxDQUFDLEdBQUdyaUIsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QzVwQyxJQUFJLEVBQUUsZ0JBRGlDO0lBRXZDLFNBQU8sQ0FBQyxHQUFHcFEsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyw4QkFBRCxFQUFpQztNQUFFLGNBQWNoRCxNQUFNLENBQUNweEMsTUFBdkI7TUFBK0IsSUFBSSxDQUFDb3hDLE1BQU0sQ0FBQ3B4QztJQUEzQyxDQUFqQyxDQUExQjtFQUZnQyxDQUEzQyxFQUdHLElBSEgsRUFHUztFQUFFO0VBSFgsRUFHd0IsQ0FBQyxPQUFELENBSHhCLENBUkQsQ0FKd0IsQ0FEL0IsSUFrQk0sQ0FBQyxHQUFHekksS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBdEJ3QyxDQUFsRCxDQUQ0QyxFQXlCNUMsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUNqQzczQyxLQUFLLEVBQUUsQ0FBQyxHQUFHdEIsS0FBSyxDQUFDdzZDLGNBQVYsRUFBMEIsVUFBVTc0QyxNQUFWLENBQWlCaTRDLE1BQU0sQ0FBQ3ZoQyxLQUFQLEdBQWUsRUFBaEMsRUFBb0MsS0FBcEMsQ0FBMUIsQ0FEMEI7SUFFakMsU0FBTyxDQUFDLEdBQUdyWSxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLDBEQUFELEVBQTZEO01BQUVpWixNQUFNLEVBQUUsQ0FBQ2pjLE1BQU0sQ0FBQ3B4QztJQUFsQixDQUE3RCxDQUExQjtFQUYwQixDQUFyQyxFQUdHLENBQ0MsQ0FBQyxHQUFHekksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDQyxVQUFyQyxFQUFpRCxDQUM1Q3g1QyxNQUFNLENBQUMwUCxJQUFQLENBQVlzcUMsTUFBTSxDQUFDaitCLFFBQVAsQ0FBZ0IsUUFBaEIsQ0FBWixFQUF1QzVNLE9BQXZDLENBQStDLFVBQS9DLE1BQStELENBQUMsQ0FBakUsSUFDTyxDQUFDLEdBQUcvTyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQzVEdHZDLEdBQUcsRUFBRSxDQUR1RDtJQUU1RCxTQUFPLHdDQUZxRDtJQUc1RHZKLEtBQUssRUFBRSxDQUFDLEdBQUd0QixLQUFLLENBQUN3NkMsY0FBVixFQUEwQixVQUFVNzRDLE1BQVYsQ0FBaUJpNEMsTUFBTSxDQUFDdmhDLEtBQVAsR0FBZSxFQUFoQyxFQUFvQyxLQUFwQyxDQUExQixDQUhxRDtJQUk1RGdpQyxPQUFPLEVBQUVSLE1BQU0sQ0FBQ2w5QjtFQUo0QyxDQUFyQyxFQUt4QixDQUNDLENBQUMsR0FBRzNjLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0UsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ0csVUFBdEMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxpQkFEZ0M7SUFFdkM1cEMsSUFBSSxFQUFFO0VBRmlDLENBQTNDLENBRDhDLEVBSzlDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzE5QixXQUFQLENBQW1CLFVBQW5CLENBQTNCLElBQTZELEdBQTdELEdBQW1FLENBQUMsR0FBR25jLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnlaLFVBQWpCLENBQTRCLFVBQTVCLEVBQXdDLFFBQXhDLENBQTNCLENBQW5FLEdBQW1KLEdBQW5KLEdBQXlKLENBQUMsR0FBRy9nQixLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ5WixVQUFqQixDQUE0QixRQUE1QixFQUFzQyxRQUF0QyxDQUEzQixDQUFyTSxFQUFrUjtFQUFFO0VBQXBSLENBTDhDLENBQWxELENBRDZDLEVBUTdDLENBQUMsR0FBRy9nQixLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDNXBDLElBQUksRUFBRSxnQkFEaUM7SUFFdkMsU0FBTyxDQUFDLEdBQUdwUSxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLDZDQUFELEVBQWdEO01BQUUsY0FBY2hELE1BQU0sQ0FBQ2grQixZQUF2QjtNQUFxQyxJQUFJLENBQUNnK0IsTUFBTSxDQUFDaCtCO0lBQWpELENBQWhELENBQTFCO0VBRmdDLENBQTNDLEVBR0csSUFISCxFQUdTO0VBQUU7RUFIWCxFQUd3QixDQUFDLE9BQUQsQ0FIeEIsQ0FSNkMsQ0FBakQsQ0FERCxFQWNDLENBQUMsR0FBRzdiLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0ksVUFBckMsRUFBaUQsT0FBTyxDQUFDLEdBQUd2NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsbUNBQTVCLENBQTNCLENBQVAsR0FBc0csSUFBdkosRUFBNko7RUFBRTtFQUEvSixDQWRELEVBZUMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSyxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd4NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDTSxXQUFyQyxFQUFrRCxFQUM3QyxDQUFDLEdBQUd6NUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCbEQsTUFBTSxDQUFDaitCLFFBQVAsQ0FBZ0IsUUFBaEIsRUFBMEIsVUFBMUIsQ0FBdEIsRUFBNkQsVUFBVWtrQyxPQUFWLEVBQW1CeHdDLENBQW5CLEVBQXNCO0lBQ2hLLE9BQVEsQ0FBQyxHQUFHclAsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqRXR2QyxHQUFHLEVBQUV3RSxDQUQ0RDtNQUVqRSxTQUFPO0lBRjBELENBQXJDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHclAsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DNkIsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHaDdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCcnJDLENBQTNCLENBQWhELEVBQStFO0lBQUU7SUFBakYsQ0FERCxHQUVFLENBQUMsR0FBR3JQLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQmw5QyxNQUFNLENBQUMwUCxJQUFQLENBQVl1d0MsT0FBWixDQUF0QixFQUE0QyxVQUFVdG1DLElBQVYsRUFBZ0I7TUFDekksT0FBUSxDQUFDLEdBQUd2WixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO1FBQy9EdHZDLEdBQUcsRUFBRTBPLElBRDBEO1FBRS9ELFNBQU87TUFGd0QsQ0FBbkMsRUFHN0IsQ0FDQyxDQUFDLEdBQUd2WixLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJuaEMsSUFBSSxDQUFDc0UsUUFBTCxHQUFnQjlSLE9BQWhCLENBQXdCLElBQXhCLEVBQThCLEdBQTlCLEVBQW1DQSxPQUFuQyxDQUEyQyxLQUEzQyxFQUFrRCxLQUFsRCxDQUEzQixJQUF1RixHQUFsSCxFQUF1SDtNQUFFO01BQXpILENBREQsRUFFQ2t2QyxXQUZELEVBR0MsQ0FBQyxHQUFHajdDLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLE1BQU0sQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCbUYsT0FBTyxDQUFDdG1DLElBQUQsQ0FBbEMsQ0FBakMsRUFBNEU7TUFBRTtNQUE5RSxDQUhELENBSDZCLENBQWhDO0lBUUgsQ0FUZ0YsQ0FBcEQsRUFTekI7SUFBSTtJQVRxQixDQUY5QixFQUg2QixDQUFoQztFQWdCSCxDQWpCZ0YsQ0FBcEQsRUFpQnpCO0VBQUk7RUFqQnFCLENBRGlCLEVBQWxELENBRDZDLENBQWpELENBZkQsQ0FMd0IsRUEwQ3hCO0VBQUU7RUExQ3NCLENBRC9CLElBNENNLENBQUMsR0FBR3ZaLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQTdDdUMsRUE4QzVDMzZDLE1BQU0sQ0FBQzBQLElBQVAsQ0FBWXNxQyxNQUFNLENBQUNqK0IsUUFBUCxDQUFnQixRQUFoQixDQUFaLEVBQXVDNU0sT0FBdkMsQ0FBK0MsT0FBL0MsTUFBNEQsQ0FBQyxDQUE5RCxJQUNPLENBQUMsR0FBRy9PLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFDNUR0dkMsR0FBRyxFQUFFLENBRHVEO0lBRTVELFNBQU8scUNBRnFEO0lBRzVEdkosS0FBSyxFQUFFLENBQUMsR0FBR3RCLEtBQUssQ0FBQ3c2QyxjQUFWLEVBQTBCLFVBQVU3NEMsTUFBVixDQUFpQmk0QyxNQUFNLENBQUN2aEMsS0FBUCxHQUFlLEVBQWhDLEVBQW9DLEtBQXBDLENBQTFCLENBSHFEO0lBSTVEZ2lDLE9BQU8sRUFBRVIsTUFBTSxDQUFDMzhCO0VBSjRDLENBQXJDLEVBS3hCLENBQ0MsQ0FBQyxHQUFHbGQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDK0IsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHbDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2dDLFdBQXRDLEVBQW1ELENBQy9DLENBQUMsR0FBR243QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDLFNBQU8saUJBRGdDO0lBRXZDNXBDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxDQUQrQyxFQUsvQyxDQUFDLEdBQUdwUSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUMxOUIsV0FBUCxDQUFtQixPQUFuQixDQUEzQixJQUEwRCxHQUExRCxHQUFnRSxDQUFDLEdBQUduYyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ5WixVQUFqQixDQUE0QixRQUE1QixFQUFzQyxRQUF0QyxDQUEzQixDQUE1RyxFQUF5TDtFQUFFO0VBQTNMLENBTCtDLENBQW5ELENBRDhDLEVBUTlDLENBQUMsR0FBRy9nQixLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDNXBDLElBQUksRUFBRSxnQkFEaUM7SUFFdkMsU0FBTyxDQUFDLEdBQUdwUSxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLDZDQUFELEVBQWdEO01BQUUsY0FBY2hELE1BQU0sQ0FBQzk5QixTQUF2QjtNQUFrQyxJQUFJLENBQUM4OUIsTUFBTSxDQUFDOTlCO0lBQTlDLENBQWhELENBQTFCO0VBRmdDLENBQTNDLEVBR0csSUFISCxFQUdTO0VBQUU7RUFIWCxFQUd3QixDQUFDLE9BQUQsQ0FIeEIsQ0FSOEMsQ0FBbEQsQ0FERCxFQWNDLENBQUMsR0FBRy9iLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2lDLFdBQXJDLEVBQWtELE9BQU8sQ0FBQyxHQUFHcDdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLHdDQUE1QixDQUEzQixDQUFQLEdBQTJHLElBQTdKLEVBQW1LO0VBQUU7RUFBckssQ0FkRCxFQWVDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2tDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3I3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNtQyxXQUFyQyxFQUFrRCxFQUM3QyxDQUFDLEdBQUd0N0MsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCbEQsTUFBTSxDQUFDaitCLFFBQVAsQ0FBZ0IsUUFBaEIsRUFBMEIsT0FBMUIsQ0FBdEIsRUFBMEQsVUFBVWtrQyxPQUFWLEVBQW1CeHdDLENBQW5CLEVBQXNCO0lBQzdKLE9BQVEsQ0FBQyxHQUFHclAsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqRXR2QyxHQUFHLEVBQUV3RSxDQUQ0RDtNQUVqRSxTQUFPO0lBRjBELENBQXJDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHclAsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1Db0MsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHdjdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCcnJDLENBQTNCLENBQWhELEVBQStFO0lBQUU7SUFBakYsQ0FERCxHQUVFLENBQUMsR0FBR3JQLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQmw5QyxNQUFNLENBQUMwUCxJQUFQLENBQVl1d0MsT0FBWixDQUF0QixFQUE0QyxVQUFVdG1DLElBQVYsRUFBZ0I7TUFDekksT0FBUSxDQUFDLEdBQUd2WixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO1FBQy9EdHZDLEdBQUcsRUFBRTBPLElBRDBEO1FBRS9ELFNBQU87TUFGd0QsQ0FBbkMsRUFHN0IsQ0FDQyxDQUFDLEdBQUd2WixLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJuaEMsSUFBSSxDQUFDc0UsUUFBTCxHQUFnQjlSLE9BQWhCLENBQXdCLElBQXhCLEVBQThCLEdBQTlCLEVBQW1DQSxPQUFuQyxDQUEyQyxLQUEzQyxFQUFrRCxLQUFsRCxDQUEzQixJQUF1RixHQUFsSCxFQUF1SDtNQUFFO01BQXpILENBREQsRUFFQ3l2QyxXQUZELEVBR0MsQ0FBQyxHQUFHeDdDLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLE1BQU0sQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCbUYsT0FBTyxDQUFDdG1DLElBQUQsQ0FBbEMsQ0FBakMsRUFBNEU7TUFBRTtNQUE5RSxDQUhELENBSDZCLENBQWhDO0lBUUgsQ0FUZ0YsQ0FBcEQsRUFTekI7SUFBSTtJQVRxQixDQUY5QixFQUg2QixDQUFoQztFQWdCSCxDQWpCZ0YsQ0FBcEQsRUFpQnpCO0VBQUk7RUFqQnFCLENBRGlCLEVBQWxELENBRDhDLENBQWxELENBZkQsQ0FMd0IsRUEwQ3hCO0VBQUU7RUExQ3NCLENBRC9CLElBNENNLENBQUMsR0FBR3ZaLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQTFGdUMsRUEyRjVDMzZDLE1BQU0sQ0FBQzBQLElBQVAsQ0FBWXNxQyxNQUFNLENBQUNqK0IsUUFBUCxDQUFnQixRQUFoQixDQUFaLEVBQXVDNU0sT0FBdkMsQ0FBK0MsU0FBL0MsTUFBOEQsQ0FBQyxDQUFoRSxJQUNPLENBQUMsR0FBRy9PLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFDNUR0dkMsR0FBRyxFQUFFLENBRHVEO0lBRTVELFNBQU8sK0RBRnFEO0lBRzVEdkosS0FBSyxFQUFFLENBQUMsR0FBR3RCLEtBQUssQ0FBQ3c2QyxjQUFWLEVBQTBCLFVBQVU3NEMsTUFBVixDQUFpQmk0QyxNQUFNLENBQUN2aEMsS0FBUCxHQUFlLEVBQWhDLEVBQW9DLEtBQXBDLENBQTFCLENBSHFEO0lBSTVEZ2lDLE9BQU8sRUFBRVIsTUFBTSxDQUFDNThCO0VBSjRDLENBQXJDLEVBS3hCLENBQ0MsQ0FBQyxHQUFHamQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDc0MsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHejdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ3VDLFdBQXRDLEVBQW1ELENBQy9DLENBQUMsR0FBRzE3QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDNXBDLElBQUksRUFBRSxPQURpQztJQUV2QyxTQUFPO0VBRmdDLENBQTNDLENBRCtDLEVBSy9DLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzE5QixXQUFQLENBQW1CLFNBQW5CLENBQTNCLElBQTRELEdBQTVELEdBQWtFLENBQUMsR0FBR25jLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnlaLFVBQWpCLENBQTRCLFVBQTVCLEVBQXdDLFFBQXhDLENBQTNCLENBQTlHLEVBQTZMO0VBQUU7RUFBL0wsQ0FMK0MsQ0FBbkQsQ0FEOEMsRUFROUMsQ0FBQyxHQUFHL2dCLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkM1cEMsSUFBSSxFQUFFLGdCQURpQztJQUV2QyxTQUFPLENBQUMsR0FBR3BRLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsNkNBQUQsRUFBZ0Q7TUFBRSxjQUFjaEQsTUFBTSxDQUFDMzlCLFdBQXZCO01BQW9DLElBQUksQ0FBQzI5QixNQUFNLENBQUMzOUI7SUFBaEQsQ0FBaEQsQ0FBMUI7RUFGZ0MsQ0FBM0MsRUFHRyxJQUhILEVBR1M7RUFBRTtFQUhYLEVBR3dCLENBQUMsT0FBRCxDQUh4QixDQVI4QyxDQUFsRCxDQURELEVBY0MsQ0FBQyxHQUFHbGMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDd0MsV0FBckMsRUFBa0QsT0FBTyxDQUFDLEdBQUczN0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIscUNBQTVCLENBQTNCLENBQVAsR0FBd0csSUFBMUosRUFBZ0s7RUFBRTtFQUFsSyxDQWRELEVBZUMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDeUMsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHNTdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzBDLFdBQXJDLEVBQWtELEVBQzdDLENBQUMsR0FBRzc3QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JsRCxNQUFNLENBQUNqK0IsUUFBUCxDQUFnQixRQUFoQixFQUEwQixTQUExQixDQUF0QixFQUE0RCxVQUFVa2tDLE9BQVYsRUFBbUJ4d0MsQ0FBbkIsRUFBc0I7SUFDL0osT0FBUSxDQUFDLEdBQUdyUCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pFdHZDLEdBQUcsRUFBRXdFLENBRDREO01BRWpFLFNBQU87SUFGMEQsQ0FBckMsRUFHN0IsQ0FDQyxDQUFDLEdBQUdyUCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUMyQyxXQUFuQyxFQUFnRCxDQUFDLEdBQUc5N0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJyckMsQ0FBM0IsQ0FBaEQsRUFBK0U7SUFBRTtJQUFqRixDQURELEdBRUUsQ0FBQyxHQUFHclAsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCbDlDLE1BQU0sQ0FBQzBQLElBQVAsQ0FBWXV3QyxPQUFaLENBQXRCLEVBQTRDLFVBQVV0bUMsSUFBVixFQUFnQjtNQUN6SSxPQUFRLENBQUMsR0FBR3ZaLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7UUFDL0R0dkMsR0FBRyxFQUFFME8sSUFEMEQ7UUFFL0QsU0FBTztNQUZ3RCxDQUFuQyxFQUc3QixDQUNDLENBQUMsR0FBR3ZaLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQm5oQyxJQUFJLENBQUNzRSxRQUFMLEdBQWdCOVIsT0FBaEIsQ0FBd0IsSUFBeEIsRUFBOEIsR0FBOUIsRUFBbUNBLE9BQW5DLENBQTJDLEtBQTNDLEVBQWtELEtBQWxELENBQTNCLElBQXVGLEdBQWxILEVBQXVIO01BQUU7TUFBekgsQ0FERCxFQUVDZ3dDLFdBRkQsRUFHQyxDQUFDLEdBQUcvN0MsS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsTUFBTSxDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJtRixPQUFPLENBQUN0bUMsSUFBRCxDQUFsQyxDQUFqQyxFQUE0RTtNQUFFO01BQTlFLENBSEQsQ0FINkIsQ0FBaEM7SUFRSCxDQVRnRixDQUFwRCxFQVN6QjtJQUFJO0lBVHFCLENBRjlCLEVBSDZCLENBQWhDO0VBZ0JILENBakJnRixDQUFwRCxFQWlCekI7RUFBSTtFQWpCcUIsQ0FEaUIsRUFBbEQsQ0FEOEMsQ0FBbEQsQ0FmRCxDQUx3QixFQTBDeEI7RUFBRTtFQTFDc0IsQ0FEL0IsSUE0Q00sQ0FBQyxHQUFHdlosS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBdkl1QyxDQUFqRCxDQURELEVBMElDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIscWlCQUE5QixDQTFJRCxDQUhILEVBOElHO0VBQUU7RUE5SUwsQ0F6QjRDLENBQWhELENBRGdGLEVBMEtoRixDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M2QyxXQUF0QyxFQUFtRCxDQUFDLEdBQUdoOEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQ2QsTUFBTSxDQUFDaitCLFFBQVAsQ0FBZ0IsV0FBaEIsQ0FBRCxHQUN4RWsrQixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLEtBQTVCLENBRHdFLEdBRXhFK3dDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsVUFBNUIsQ0FGNkMsQ0FBbkQsRUFFZ0Q7RUFBRTtFQUZsRCxDQURzQyxDQUExQyxDQTFLZ0YsRUErS2hGLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztJQUNoQyxTQUFPLGNBRHlCO0lBRWhDa0IsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVeGtDLEtBQVYsRUFBaUI7TUFBRSxPQUFPQSxLQUFLLENBQUNDLGVBQU4sRUFBUDtJQUFpQyxDQUE5RTtFQUZ1QixDQUFwQyxFQUdHLENBQ0MsQ0FBQyxHQUFHcFYsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDOEMsV0FBdkMsRUFBb0QsQ0FBQyxHQUFHajhDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLFFBQTVCLENBQTNCLENBQXBELEVBQXVIO0VBQUU7RUFBekgsQ0FERCxFQUVFbEosTUFBTSxDQUFDMFAsSUFBUCxDQUFZc3FDLE1BQU0sQ0FBQ2orQixRQUFQLENBQWdCLFFBQWhCLENBQVosRUFBdUM1TSxPQUF2QyxDQUErQyxVQUEvQyxNQUErRCxDQUFDLENBQWpFLElBQ08sQ0FBQyxHQUFHL08sS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QytCLFdBQXZDLEVBQW9ELENBQzNFLENBQUMsR0FBR2w4QyxLQUFLLENBQUNtOUMsY0FBVixFQUEwQixDQUFDLEdBQUduOUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDO0lBQzdELHVCQUF1QlEsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtNQUFFLE9BQVNaLE1BQU0sQ0FBQ3JzQyxVQUFSLEdBQXNCaXRDLE1BQTlCO0lBQXdDLENBQXRGLENBRHNDO0lBRTdEN3pDLElBQUksRUFBRSxVQUZ1RDtJQUc3RDdHLEtBQUssRUFBRTY1QyxNQUFNLENBQUN2bkMsS0FIK0M7SUFJN0Rnb0MsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBUVosTUFBTSxDQUFDdFQsYUFBUCxDQUFxQnFULE1BQU0sQ0FBQ3ZuQyxLQUE1QixDQUFSO0lBQThDLENBQTVGO0VBSm9ELENBQXZDLEVBS3ZCLElBTHVCLEVBS2pCO0VBQUU7RUFMZSxFQUtGOHBDLFdBTEUsQ0FBMUIsRUFLc0MsQ0FDbEMsQ0FBQ244QyxLQUFLLENBQUNpL0MsY0FBUCxFQUF1QnBGLE1BQU0sQ0FBQ3JzQyxVQUE5QixDQURrQyxDQUx0QyxDQUQyRSxFQVMzRTR1QyxXQVQyRSxDQUFwRCxDQUQvQixLQVlPLENBQUMsR0FBR3A4QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDa0MsV0FBdkMsRUFBb0RFLFdBQXBELENBWi9CLENBRkQsQ0FISCxDQS9LZ0YsQ0FBcEQsRUFrTTdCO0VBQUc7RUFsTTBCLENBQWhDO0FBbU1IOztBQUNEejhDLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDeFBhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk0NkMsWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBVWgxQyxDQUFWLEVBQWE7RUFBRSxPQUFRLENBQUMsR0FBRzdGLEtBQUssQ0FBQzg2QyxXQUFWLEVBQXVCLGlCQUF2QixHQUEyQ2oxQyxDQUFDLEdBQUdBLENBQUMsRUFBaEQsRUFBb0QsQ0FBQyxHQUFHN0YsS0FBSyxDQUFDKzZDLFVBQVYsR0FBcEQsRUFBNkVsMUMsQ0FBckY7QUFBMEYsQ0FBNUg7O0FBQ0EsSUFBSWt6QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7O0FBQ0EsSUFBSUMsVUFBVSxHQUFHLGFBQWMsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLGtCQUEzQixDQUEvQjs7QUFDQSxJQUFJOUQsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCOztBQUNBLElBQUlDLFVBQVUsR0FBRyxhQUFjdUIsWUFBWSxDQUFDLFlBQVk7RUFBRTtFQUFjLE9BQU8sQ0FBQyxHQUFHNzZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxvQkFBNUMsRUFBa0UsQ0FBQztFQUFFO0VBQXJFLENBQVA7QUFBNkYsQ0FBMUgsQ0FBM0M7O0FBQ0EsSUFBSUksVUFBVSxHQUFHLGFBQWNzQixZQUFZLENBQUMsWUFBWTtFQUFFO0VBQWMsT0FBTyxDQUFDLEdBQUc3NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDO0lBQUUsU0FBTztFQUFULENBQXRDLEVBQXlELE1BQXpELEVBQWlFLENBQUM7RUFBRTtFQUFwRSxDQUFQO0FBQTRGLENBQXpILENBQTNDOztBQUNBLElBQUlLLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUl1QixXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZDF5QyxFQUFFLEVBQUUsT0FEVTtFQUVkLFNBQU8sNkJBRk87RUFHZHlqRCxLQUFLLEVBQUU7QUFITyxDQUFsQjs7QUFLQSxJQUFJOVEsV0FBVyxHQUFHLGFBQWNOLFlBQVksQ0FBQyxZQUFZO0VBQUU7RUFBYyxPQUFPLENBQUMsR0FBRzc2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7SUFDaEgzd0MsRUFBRSxFQUFFLFFBRDRHO0lBRWhIeWpELEtBQUssRUFBRTtFQUZ5RyxDQUFwQyxFQUc3RSxDQUNDLGFBQWMsQ0FBQyxHQUFHanNELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztJQUFFLFNBQU87RUFBVCxDQUF0QyxFQUFvRSxRQUFwRSxDQURmLENBSDZFLEVBSzdFLENBQUM7RUFBRTtFQUwwRSxDQUFQO0FBS2xELENBTHFCLENBQTVDOztBQU1BLElBQUlpQyxXQUFXLEdBQUc7RUFDZDV5QyxFQUFFLEVBQUUsSUFEVTtFQUVkeWpELEtBQUssRUFBRTtBQUZPLENBQWxCO0FBSUEsSUFBSTVRLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFendDLEdBQUcsRUFBRTtBQUFQLENBQWxCOztBQUNBLElBQUkwd0MsV0FBVyxHQUFHLGFBQWNWLFlBQVksQ0FBQyxZQUFZO0VBQUU7RUFBYyxPQUFPLENBQUMsR0FBRzc2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFBRSxTQUFPO0VBQVQsQ0FBckMsRUFBbUUsMEJBQW5FLEVBQStGLENBQUM7RUFBRTtFQUFsRyxDQUFQO0FBQTBILENBQXZKLENBQTVDOztBQUNBLElBQUlxQyxXQUFXLEdBQUcsQ0FDZEQsV0FEYyxDQUFsQjtBQUdBLElBQUlFLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLE9BQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHLGFBQWNmLFlBQVksQ0FBQyxZQUFZO0VBQUU7RUFBYyxPQUFPLENBQUMsR0FBRzc2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsQ0FDdkgsYUFBYyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DO0lBQUUsU0FBTztFQUFULENBQXBDLEVBQXNFLGlCQUF0RSxDQUR5RyxFQUV2SCxhQUFjLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7SUFBRSxTQUFPO0VBQVQsQ0FBbkMsRUFBbUUsaURBQW5FLENBRnlHLENBQTNDLEVBRzdFLENBQUM7RUFBRTtFQUgwRSxDQUFQO0FBR2xELENBSHFCLENBQTVDOztBQUlBLElBQUkwQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHLGFBQWNqQixZQUFZLENBQUMsWUFBWTtFQUFFO0VBQWMsT0FBTyxDQUFDLEdBQUc3NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DO0lBQUUsU0FBTztFQUFULENBQXBDLEVBQXlFLG1CQUF6RSxFQUE4RixDQUFDO0VBQUU7RUFBakcsQ0FBUDtBQUF5SCxDQUF0SixDQUE1Qzs7QUFDQSxJQUFJNEMsV0FBVyxHQUFHLGFBQWNsQixZQUFZLENBQUMsWUFBWTtFQUFFO0VBQWMsT0FBTyxDQUFDLEdBQUc3NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0lBQUUsU0FBTztFQUFULENBQW5DLEVBQW1FLG1JQUFuRSxFQUF3TSxDQUFDO0VBQUU7RUFBM00sQ0FBUDtBQUFtTyxDQUFoUSxDQUE1Qzs7QUFDQSxJQUFJNkMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2RweEMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJcXhDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxJQUFJQyxXQUFXLEdBQUcsYUFBY3ZCLFlBQVksQ0FBQyxZQUFZO0VBQUU7RUFBYyxPQUFPLENBQUMsR0FBRzc2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsQ0FDdkgsYUFBYyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DO0lBQUUsU0FBTztFQUFULENBQXBDLEVBQXNFLGlCQUF0RSxDQUR5RyxFQUV2SCxhQUFjLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7SUFBRSxTQUFPO0VBQVQsQ0FBbkMsRUFBbUUsaURBQW5FLENBRnlHLENBQTNDLEVBRzdFLENBQUM7RUFBRTtFQUgwRSxDQUFQO0FBR2xELENBSHFCLENBQTVDOztBQUlBLElBQUlrRCxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZHp4QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjs7QUFJQSxJQUFJMHhDLFdBQVcsR0FBRyxhQUFjMUIsWUFBWSxDQUFDLFlBQVk7RUFBRTtFQUFjLE9BQU8sQ0FBQyxHQUFHNzZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztJQUFFLFNBQU87RUFBVCxDQUFwQyxFQUF5RSxpQkFBekUsRUFBNEYsQ0FBQztFQUFFO0VBQS9GLENBQVA7QUFBdUgsQ0FBcEosQ0FBNUM7O0FBQ0EsSUFBSXFELFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxTQUFTM0QsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJcDVDLEVBQUo7O0VBQ0EsSUFBSXE1QyxrQkFBa0IsR0FBRyxDQUFDLEdBQUdoNkMsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFNBQTVCLENBQXpCOztFQUNBLE9BQVEsQ0FBQyxHQUFHajZDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQ2hGLENBQUMsR0FBR3A2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNKLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBRy80QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2g1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NGLFVBQXBDLEVBQWdELENBQzVDQyxVQUQ0QyxFQUU1QyxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDQyxVQUF0QyxFQUFrRCxDQUFDLEdBQUdwNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJkLE1BQU0sQ0FBQ3Z1QyxNQUFQLENBQWNtaEIsUUFBekMsQ0FBbEQsRUFBc0c7RUFBRTtFQUF4RyxDQUY0QyxDQUFoRCxDQUQ2QyxFQUs3QyxDQUFDLEdBQUd4c0IsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRSxVQUFyQyxFQUFpRCxDQUM1Q1EsTUFBTSxDQUFDbnlDLGVBQVIsSUFDTyxDQUFDLEdBQUcxSCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxPQUFELENBQTdCLEVBQXdDO0lBQy9EaHZDLEdBQUcsRUFBRSxDQUQwRDtJQUUvRCxTQUFPLGtCQUZ3RDtJQUcvRHJCLE9BQU8sRUFBRXF3QyxNQUFNLENBQUMveEMsWUFIK0M7SUFJL0RsQixJQUFJLEVBQUVpekMsTUFBTSxDQUFDOXhDO0VBSmtELENBQXhDLEVBS3hCLElBTHdCLEVBS2xCO0VBQUU7RUFMZ0IsRUFLSCxDQUFDLFNBQUQsRUFBWSxNQUFaLENBTEcsQ0FEL0IsSUFPTSxDQUFDLEdBQUcvSCxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FSdUMsRUFTN0MsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztJQUNwQyxTQUFPLCtFQUQ2QjtJQUVwQ2tCLE9BQU8sRUFBRVIsTUFBTSxDQUFDL1U7RUFGb0IsQ0FBeEMsRUFHRyxDQUNDLENBQUMsR0FBRzlrQyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FDeEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxpQkFEZ0M7SUFFdkM1cEMsSUFBSSxFQUFFO0VBRmlDLENBQTNDLENBRHdDLENBQTVDLENBREQsRUFPQ2twQyxVQVBELENBSEgsQ0FUNkMsRUFxQjdDLENBQUMsR0FBR3Q1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0M7SUFDcEMsU0FBTyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQ2hELE1BQU0sQ0FBQ242QixrQkFBUCxDQUEwQnZaLE1BQTFCLEtBQXFDLENBQXJDLElBQTBDLHFCQUEzQyxFQUFrRSxxRUFBbEUsQ0FBMUIsQ0FENkI7SUFFcENrMEMsT0FBTyxFQUFFUixNQUFNLENBQUNuUztFQUZvQixDQUF4QyxFQUdHLENBQ0MsQ0FBQyxHQUFHMW5DLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxjQURnQztJQUV2QzVwQyxJQUFJLEVBQUU7RUFGaUMsQ0FBM0MsQ0FERCxFQUtDbXBDLFVBTEQsRUFNQyxDQUFDLEdBQUd2NUMsS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsT0FBTyxDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ242QixrQkFBUCxDQUEwQnZaLE1BQXJELENBQVAsR0FBc0UsS0FBdEUsR0FBOEUsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsQ0FBQy81QyxFQUFFLEdBQUdrNUMsTUFBTSxDQUFDdFUsZ0JBQWIsTUFBbUMsSUFBbkMsSUFBMkM1a0MsRUFBRSxLQUFLLEtBQUssQ0FBdkQsR0FBMkRBLEVBQTNELEdBQWdFLENBQTNGLENBQTlFLEdBQThLLElBQXpNLEVBQStNO0VBQUU7RUFBak4sQ0FORCxDQUhILEVBVUc7RUFBRTtFQVZMLENBckI2QyxDQUFqRCxDQUw2QyxDQUFqRCxDQUQ2QyxFQXdDN0MsQ0FBQyxHQUFHWCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNLLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3g1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNNLFdBQW5DLEVBQWdELENBQzVDLENBQUMsR0FBR3o1QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQix3Q0FBd0MsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCZCxNQUFNLENBQUN2dUMsTUFBUCxDQUFjbWhCLFFBQXpDLENBQXhDLEdBQTZGLG1IQUE3RixHQUFtTixDQUFDLEdBQUd4c0IsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJkLE1BQU0sQ0FBQ3Z1QyxNQUFQLENBQWNtaEIsUUFBekMsQ0FBbk4sR0FBd1EsR0FBblMsRUFBd1M7RUFBRTtFQUExUyxDQUQ0QyxFQUU1QyxDQUFDLEdBQUd4c0IsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DLElBQW5DLEVBQXlDLHlEQUF5RCxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJkLE1BQU0sQ0FBQ3Z1QyxNQUFQLENBQWNtaEIsUUFBekMsQ0FBekQsR0FBOEcsc0VBQXZKLEVBQStOO0VBQUU7RUFBak8sQ0FGNEMsQ0FBaEQsQ0FENkMsRUFLN0MsQ0FBQyxHQUFHeHNCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4Qiw4N0VBQTlCLENBTDZDLENBQWpELENBeEM2QyxFQStDN0MsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzZCLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR2g3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUMsSUFBdkMsRUFBNkMsQ0FDekMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QyxJQUF2QyxFQUE2QyxDQUN6QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DOEIsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHajdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQytCLFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBR2w3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M7SUFDbEMsU0FBTyxnQkFEMkI7SUFFbENrQixPQUFPLEVBQUVSLE1BQU0sQ0FBQzdaO0VBRmtCLENBQXRDLEVBR0csQ0FDQyxDQUFDLEdBQUdoZ0MsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QyxTQUFPLENBQUMsR0FBR2g2QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDaEQsTUFBTSxDQUFDbFQsU0FBUCxLQUFxQixZQUFyQixHQUFvQyxhQUFwQyxHQUFvRCxFQUFyRCxFQUF5RCxpQkFBekQsQ0FBMUIsQ0FEZ0M7SUFFdkN2MkIsSUFBSSxFQUFFO0VBRmlDLENBQTNDLEVBR0csSUFISCxFQUdTO0VBQUU7RUFIWCxFQUd3QixDQUFDLE9BQUQsQ0FIeEIsQ0FERCxDQUhILENBRDZDLEVBVTdDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJkLE1BQU0sQ0FBQ3Z1QyxNQUFQLENBQWNtaEIsUUFBekMsSUFBcUQsUUFBakcsRUFBMkc7RUFBRTtFQUE3RyxDQVY2QyxDQUFqRCxDQUQ2QyxFQWE3QzJ1QixXQWI2QyxFQWM3QyxDQUFDLEdBQUduN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DaUMsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHcDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2tDLFdBQXRDLEVBQW1ELENBQy9DLENBQUMsR0FBR3I3QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDNXBDLElBQUksRUFBRSxVQURpQztJQUV2Q2lxQyxPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7TUFBRSxPQUFRWixNQUFNLENBQUM3VCxtQkFBUCxFQUFSO0lBQXdDLENBQXRGO0VBRjhCLENBQTNDLENBRCtDLENBQW5ELENBRDZDLENBQWpELENBZDZDLENBQWpELENBRHlDLENBQTdDLENBRHlDLEVBMEJ6QyxDQUFDLEdBQUdobUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDLElBQXZDLEVBQTZDLENBQ3hDLENBQUNTLE1BQU0sQ0FBQ2wrQixVQUFQLENBQWtCdlYsTUFBcEIsSUFDTyxDQUFDLEdBQUduRyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DbUIsV0FBcEMsRUFBaURFLFdBQWpELENBRC9CLEtBRU8sQ0FBQyxHQUFHeDdDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO0lBQUV2dkMsR0FBRyxFQUFFO0VBQVAsQ0FBOUMsRUFBMEQsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JsRCxNQUFNLENBQUNsK0IsVUFBN0IsRUFBeUMsVUFBVUMsUUFBVixFQUFvQnRKLEtBQXBCLEVBQTJCO0lBQ3pKLE9BQVEsQ0FBQyxHQUFHclMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztNQUNoRThDLE9BQU8sRUFBRSxJQUR1RDtNQUVoRWo4QyxHQUFHLEVBQUUsVUFGMkQ7TUFHaEU2SixHQUFHLEVBQUV3SCxLQUgyRDtNQUloRSxTQUFPLENBQUMsR0FBR3JTLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCO1FBQzdCLGdCQUFnQmxoQyxRQUFRLElBQ3BCQSxRQUFRLENBQUMsUUFBRCxDQURJLElBRVovYixNQUFNLENBQUMwUCxJQUFQLENBQVlxTSxRQUFRLENBQUMsUUFBRCxDQUFwQixFQUFnQ3hWLE1BQWhDLEdBQXlDO01BSGhCLENBQTFCO0lBSnlELENBQXBDLEVBUzdCLENBQ0MsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DO01BQ2hDLFNBQU8sQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsT0FBRCxFQUFVaEQsTUFBTSxDQUFDcDlCLFdBQVAsQ0FBbUJwSyxLQUFuQixJQUE0QixDQUE1QixJQUFpQyxXQUEzQyxDQUExQjtJQUR5QixDQUFwQyxFQUVHLENBQ0MsQ0FBQyxHQUFHclMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJULE1BQU0sQ0FBQyxjQUFELENBQTdCLEVBQStDO01BQzNDeGhDLEtBQUssRUFBRXdoQyxNQUFNLENBQUNwVSxVQUQ2QjtNQUUzQzlwQixRQUFRLEVBQUVBLFFBRmlDO01BRzNDdEosS0FBSyxFQUFFQSxLQUhvQztNQUkzQyxlQUFldW5DLE1BQU0sQ0FBQ2wrQixVQUpxQjtNQUszQ3JRLE1BQU0sRUFBRXV1QyxNQUFNLENBQUN2dUM7SUFMNEIsQ0FBL0MsRUFNRyxJQU5ILEVBTVM7SUFBRTtJQU5YLEVBTXdCLENBQUMsT0FBRCxFQUFVLFVBQVYsRUFBc0IsT0FBdEIsRUFBK0IsYUFBL0IsRUFBOEMsUUFBOUMsQ0FOeEIsQ0FERCxDQUZILEVBVUc7SUFBRTtJQVZMLENBREQsRUFZQyxDQUFDLEdBQUdyTCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7TUFDaEMsU0FBTyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEJoRCxNQUFNLENBQUNwOUIsV0FBUCxDQUFtQnBLLEtBQW5CLElBQTRCLENBQTVCLElBQWlDLFlBQTNEO0lBRHlCLENBQXBDLEVBRUcsQ0FDQyxDQUFDLEdBQUdyUyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NzQyxXQUF0QyxFQUFtRCxDQUFDLEdBQUd6N0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIvK0IsUUFBUSxDQUFDbzZDLFFBQVQsR0FBb0IsVUFBcEIsR0FBaUMsS0FBNUQsQ0FBbkQsRUFBdUg7SUFBRTtJQUF6SCxDQURELENBRkgsRUFJRztJQUFFO0lBSkwsQ0FaRCxFQWlCQyxDQUFDLEdBQUcvMUQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DO01BQ2hDLFNBQU8sQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUNoRCxNQUFNLENBQUNwOUIsV0FBUCxDQUFtQnBLLEtBQW5CLElBQTRCLENBQTVCLElBQWlDLFlBQWxDLEVBQWdELGNBQWhELENBQTFCLENBRHlCO01BRWhDZ29DLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVXhrQyxLQUFWLEVBQWlCO1FBQUUsT0FBT0EsS0FBSyxDQUFDQyxlQUFOLEVBQVA7TUFBaUMsQ0FBOUU7SUFGdUIsQ0FBcEMsRUFHRyxDQUNFeWtDLE1BQU0sQ0FBQzE5QixXQUFQLENBQW1CLFVBQW5CLEVBQStCOUosS0FBL0IsTUFBMEMsQ0FBM0MsR0FDTSxDQUFDLEdBQUdyUyxLQUFLLENBQUNtOUMsY0FBVixHQUEyQixDQUFDLEdBQUduOUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QztNQUN4RnR2QyxHQUFHLEVBQUUsQ0FEbUY7TUFFeEYsdUJBQXVCOHVDLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7UUFBRSxPQUFTWixNQUFNLENBQUNuNkIsa0JBQVIsR0FBOEIrNkIsTUFBdEM7TUFBZ0QsQ0FBOUYsQ0FGaUU7TUFHeEY3ekMsSUFBSSxFQUFFLFVBSGtGO01BSXhGN0csS0FBSyxFQUFFc1M7SUFKaUYsQ0FBdkMsRUFLbEQsSUFMa0QsRUFLNUM7SUFBRTtJQUwwQyxFQUs3QnFwQyxXQUw2QixDQUFuRCxHQUtxQyxDQUNuQyxDQUFDMTdDLEtBQUssQ0FBQ2kvQyxjQUFQLEVBQXVCcEYsTUFBTSxDQUFDbjZCLGtCQUE5QixDQURtQyxDQUxyQyxDQUROLEdBU00sQ0FBQyxHQUFHMWYsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBVlAsQ0FISCxFQWNHO0lBQUU7SUFkTCxDQWpCRCxFQWdDQyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLGdEQUE5QixDQWhDRCxDQVQ2QixFQTBDN0I7SUFBRTtJQTFDMkIsQ0FBaEM7RUEyQ0gsQ0E1Q3dGLENBQTFELEVBNEMzQjtFQUFJO0VBNUN1QixDQUZuQyxDQUR5QyxDQUE3QyxDQTFCeUMsQ0FBN0MsQ0FEOEMsQ0FBbEQsQ0EvQzZDLENBQWpELENBRGdGLEVBK0gvRVYsTUFBTSxDQUFDdjZCLE1BQVIsSUFDTyxDQUFDLEdBQUd0ZixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxRQUFELENBQTdCLEVBQXlDO0lBQ2hFaHZDLEdBQUcsRUFBRSxDQUQyRDtJQUVoRXFGLElBQUksRUFBRTJwQyxNQUFNLENBQUN0NUIsVUFGbUQ7SUFHaEUsU0FBTyxDQUFDLEdBQUd2Z0IsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEI7TUFBRSxrQkFBa0JoRCxNQUFNLENBQUN2NkI7SUFBM0IsQ0FBMUI7RUFIeUQsQ0FBekMsRUFJeEIsSUFKd0IsRUFJbEI7RUFBRTtFQUpnQixFQUlILENBQUMsTUFBRCxFQUFTLE9BQVQsQ0FKRyxDQUQvQixJQU1NLENBQUMsR0FBR3RmLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQXJJMEUsRUFzSWhGLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLE9BQUQsQ0FBN0IsRUFBd0M7SUFDcEMsZ0JBQWdCQSxNQUFNLENBQUNoVCx3QkFBUCxJQUFtQ2dULE1BQU0sQ0FBQzlTLGVBRHRCO0lBRXBDMXVCLEtBQUssRUFBRTtFQUY2QixDQUF4QyxFQUdHO0lBQ0MsV0FBUyxDQUFDLEdBQUdyWSxLQUFLLENBQUM0NkMsT0FBVixFQUFtQixZQUFZO01BQUUsT0FBTyxDQUM3QyxDQUFDLEdBQUc1NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDd0MsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHMzdDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7UUFDdkMsU0FBTywwQkFEZ0M7UUFFdkM1cEMsSUFBSSxFQUFFO01BRmlDLENBQTNDLENBRDhDLEVBSzlDd3JDLFdBTDhDLENBQWxELENBRDZDLEVBUTdDLENBQUMsR0FBRzU3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMwQyxXQUFyQyxFQUFrRCxDQUM5Q0MsV0FEOEMsRUFFOUNDLFdBRjhDLEVBRzlDLENBQUMsR0FBRy83QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M2QyxXQUFwQyxFQUFpRCxFQUM1QyxDQUFDLEdBQUdoOEMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCakQsTUFBTSxDQUFDbnpDLEtBQVAsQ0FBYWdnQyxXQUFuQyxFQUFnRCxVQUFVcjRCLEtBQVYsRUFBaUI7UUFDOUksT0FBUSxDQUFDLEdBQUdyTyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DO1VBQ2hFdHZDLEdBQUcsRUFBRXdELEtBRDJEO1VBRWhFLFNBQU87UUFGeUQsQ0FBcEMsRUFHN0IsQ0FBQyxHQUFHck8sS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJyc0MsS0FBM0IsQ0FINkIsRUFHTTtRQUFFO1FBSFIsQ0FBaEM7TUFJSCxDQUxnRixDQUFwRCxFQUt6QjtNQUFJO01BTHFCLENBRGdCLEVBQWpELENBSDhDLENBQWxELENBUjZDLEVBb0I1Q3VyQyxNQUFNLENBQUNqakMsVUFBUCxDQUFrQnVLLFFBQWxCLEdBQTZCMDRCLE1BQU0sQ0FBQ2pqQyxVQUFQLENBQWtCdEksS0FBL0MsR0FBdUR1ckMsTUFBTSxDQUFDampDLFVBQVAsQ0FBa0JxTCxPQUF6RSxHQUFtRixDQUFwRixJQUNPLENBQUMsR0FBR2hpQixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DOEIsV0FBbkMsRUFBZ0QsOEJBQThCLENBQUMsR0FBR2o4QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmQsTUFBTSxDQUFDampDLFVBQVAsQ0FBa0J1SyxRQUE3QyxDQUE5QixHQUF1RixtQkFBdkYsR0FBNkcsQ0FBQyxHQUFHbGhCLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCZCxNQUFNLENBQUNqakMsVUFBUCxDQUFrQnRJLEtBQTdDLENBQTdHLEdBQW1LLGNBQW5LLEdBQW9MLENBQUMsR0FBR3JPLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCZCxNQUFNLENBQUNqakMsVUFBUCxDQUFrQnFMLE9BQTdDLENBQXBMLEdBQTRPLHVCQUE1UixFQUFxVDtNQUFFO01BQXZULENBRC9CLElBRU0sQ0FBQyxHQUFHaGlCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQXRCdUMsRUF1QjdDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMrQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdsOEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO1FBQ3BDLFNBQU8sV0FENkI7UUFFcENrQixPQUFPLEVBQUVSLE1BQU0sQ0FBQy9VO01BRm9CLENBQXhDLEVBR0csZUFISCxDQUQ4QyxFQUs5QyxDQUFDLEdBQUc5a0MsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJULE1BQU0sQ0FBQyxjQUFELENBQTdCLEVBQStDO1FBQzNDLFNBQU8sRUFEb0M7UUFFM0MzcEMsSUFBSSxFQUFFLDRCQUZxQztRQUczQ3RKLElBQUksRUFBRSxTQUhxQztRQUkzQ3dKLElBQUksRUFBRSxVQUpxQztRQUszQ2lxQyxPQUFPLEVBQUVSLE1BQU0sQ0FBQ3pTO01BTDJCLENBQS9DLENBTDhDLENBQWxELENBdkI2QyxDQUFQO0lBb0N0QyxDQXBDSyxDQURWO0lBc0NDbmlDLENBQUMsRUFBRTtJQUFFOztFQXRDTixDQUhILEVBMENHO0VBQUU7RUExQ0wsRUEwQ2tCLENBQUMsY0FBRCxDQTFDbEIsQ0F0SWdGLEVBaUxoRixDQUFDLEdBQUdqRixLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLE9BQUQsQ0FBN0IsRUFBd0M7SUFDcEMsZ0JBQWdCQSxNQUFNLENBQUNqVCxzQkFBUCxJQUFpQyxDQUFDaVQsTUFBTSxDQUFDaFQsd0JBRHJCO0lBRXBDeHVCLEtBQUssRUFBRTtFQUY2QixDQUF4QyxFQUdHO0lBQ0MsV0FBUyxDQUFDLEdBQUdyWSxLQUFLLENBQUM0NkMsT0FBVixFQUFtQixZQUFZO01BQUUsT0FBTyxDQUM3QyxDQUFDLEdBQUc1NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDZ0QsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHbjhDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7UUFDdkMsU0FBTywwQkFEZ0M7UUFFdkM1cEMsSUFBSSxFQUFFO01BRmlDLENBQTNDLENBRDhDLEVBSzlDZ3NDLFdBTDhDLENBQWxELENBRDZDLEVBUTdDLENBQUMsR0FBR3A4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNrRCxXQUFyQyxFQUFrRCxDQUM3Q3hDLE1BQU0sQ0FBQy9TLHdCQUFSLElBQ08sQ0FBQyxHQUFHOW1DLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNtQyxXQUFyQyxFQUFrRCxDQUN6RUMsV0FEeUUsRUFFekUsQ0FBQyxHQUFHdjhDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ3FELFdBQW5DLEVBQWdELGtCQUFrQixDQUFDLEdBQUd4OEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJkLE1BQU0sQ0FBQ3Z1QyxNQUFQLENBQWNtaEIsUUFBekMsQ0FBbEIsR0FBdUUsNkpBQXZILEVBQXNSO01BQUU7TUFBeFIsQ0FGeUUsQ0FBbEQsQ0FEL0IsSUFLTSxDQUFDLEdBQUd4c0IsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBTndDLENBQWxELENBUjZDLEVBZ0I3QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDc0QsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHejhDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztRQUNwQyxTQUFPLFdBRDZCO1FBRXBDa0IsT0FBTyxFQUFFUixNQUFNLENBQUMvVTtNQUZvQixDQUF4QyxFQUdHLGVBSEgsQ0FEOEMsRUFLOUMsQ0FBQyxHQUFHOWtDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsY0FBRCxDQUE3QixFQUErQztRQUMzQzNwQyxJQUFJLEVBQUUsZUFEcUM7UUFFM0N0SixJQUFJLEVBQUUsU0FGcUM7UUFHM0N5ekMsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO1VBQUUsT0FBUVosTUFBTSxDQUFDalQsc0JBQVAsR0FBZ0MsS0FBeEM7UUFBaUQsQ0FBL0Y7TUFIa0MsQ0FBL0MsQ0FMOEMsQ0FBbEQsQ0FoQjZDLENBQVA7SUEyQnRDLENBM0JLLENBRFY7SUE2QkMzaEMsQ0FBQyxFQUFFO0lBQUU7O0VBN0JOLENBSEgsRUFpQ0c7RUFBRTtFQWpDTCxFQWlDa0IsQ0FBQyxjQUFELENBakNsQixDQWpMZ0YsQ0FBcEQsRUFtTjdCO0VBQUc7RUFuTjBCLENBQWhDO0FBb05IOztBQUNEbkYsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUMzUmE7Ozs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlFLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUNiLGNBQWMsYUFERDtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUNiLFNBQU8sNkJBRE07RUFFYjcyQyxJQUFJLEVBQUU7QUFGTyxDQUFqQjs7QUFJQSxJQUFJODJDLFVBQVUsR0FBRyxhQUFjLENBQUMsR0FBR3g1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M7RUFBRSxTQUFPO0FBQVQsQ0FBdEMsRUFBbUUsS0FBbkUsRUFBMEUsQ0FBQztBQUFFO0FBQTdFLENBQS9COztBQUNBLElBQUlNLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUl1QixXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRTE0QyxJQUFJLEVBQUU7QUFBUixDQUFsQjtBQUNBLElBQUkyNEMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSTZELFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtB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QUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSXVCLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLFdBQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxXQUFELENBQWxCOztBQUNBLFNBQVNqRCxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJD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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWhCOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FROzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FHOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBb0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUg7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU47Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQThCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FwQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBZ0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUY7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUU7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWpCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FGOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBZjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBaUI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUo7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUY7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU87Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWxCOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FJOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FYOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBMUI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUg7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUY7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU07Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUc7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUo7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU87Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUY7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUg7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUg7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUg7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUk7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUg7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVk7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUo7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVA7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVA7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVA7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU87Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU47Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUY7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUw7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUo7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWxCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FQOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FNOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FIOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FWOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FiOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FROzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FPOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBZjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBYzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0F2RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQTVOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7OztBQzNLQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BY3Rpdml0eURvd25sb2FkLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWRtaW5IZWFkZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CcmVhZENydW1iLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa1B1Ymxpc2hpbmdFcnJvclBvcHVwLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRGF0ZVJhbmdlV2lkZ2V0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRGVzY3JpcHRpb25Gb3JtLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRXJyb3JNZXNzYWdlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRXJyb3JQb3BVcC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0hvdmVyVGV4dC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0xvYWRlci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL05hdkRyb3Bkb3duLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUG9wdXBNb2RhbC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1JhZGlhbFByb2dyZXNzQmFyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvVGFibGVMb2FkZXJDb21wb25lbnQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNMaXN0RXJyb3IudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNMb2FkZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNVcGxvYWRJbmRpY2F0b3IudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9idXR0b25zL0RlbGV0ZUJ1dHRvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvTGluay52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvUHVibGlzaEJ1dHRvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvVW5QdWJsaXNoQnV0dG9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvRGVsZXRlQWN0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvRXJyb3JMaXN0cy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0hhdmVOb3RBZGRlZFlldC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL09yZ2FuaXphdGlvblB1Ymxpc2hVbnB1Ymxpc2hCdXR0b24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1N0aWNreUVycm9ycy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1VwbG9hZGVkRXJyb3JzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3RhdHVzL0VsZW1lbnRTdGF0dXMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zdGF0dXMvUHJldmlvdXNseVB1Ymxpc2hlZC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eURlZmF1bHRWYWx1ZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eURldGFpbC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eUluZGV4LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0NyZWF0ZU1vZGFsLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9FcnJvckl0ZW0udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL1B1Ymxpc2hTZWxlY3RlZC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvUmVmcmVzaFRvYXN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9WYWxpZGF0aW9uRXJyb3JzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0FjdGl2aXR5RGF0ZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Db25kaXRpb25zLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0NvbnRhY3RJbmZvLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0h1bWFuaXRhcmlhblNjb3BlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0lhdGlJZGVudGlmaWVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0xlZ2FjeURhdGEudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvTG9jYXRpb24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvT3RoZXJJZGVudGlmaWVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BhcnRpY2lwYXRpbmdPcmcudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUGxhbm5lZERpc2J1cnNlbWVudC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Qb2xpY3lNYXJrZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVjaXBpZW50Q291bnRyeS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZWNpcGllbnRSZWdpb24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVsYXRlZEFjdGl2aXR5LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlcG9ydGluZ09yZ2FuaXphdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZXN1bHQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvU2VjdG9yLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1RhZy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9UaXRsZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9UcmFuc2FjdGlvbnMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9JbmRpY2F0b3JEZXRhaWwudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9JbmRpY2F0b3JMaXN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvQWdncmVnYXRpb25TdGF0dXMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9CYXNlbGluZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvRG9jdW1lbnRMaW5rLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvSW5kaWNhdG9yQXNjZW5kaW5nLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvTWVhc3VyZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1BlcmlvZC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1JlZmVyZW5jZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1RpdGxlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXRpZXNFbGVtZW50cy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0eUVsZW1lbnQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWRkQWN0aXZpdHlCdXR0b24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9FbGVtZW50c05vdGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRW1wdHlBY3Rpdml0eS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9QYWdlVGl0bGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvU2lkZWJhckhlbHBCbG9jay52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9UYWJsZUxheW91dC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL1BlcmlvZHNEZXRhaWwudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9QZXJpb2RzTGlzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL2VsZW1lbnRzL0FjdHVhbFZhbHVlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvZWxlbWVudHMvVGFyZ2V0VmFsdWUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHREZXRhaWwudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHRFbGVtZW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0TGlzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL0RvY3VtZW50TGluay52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL0luZGljYXRvci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1JlZmVyZW5jZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1Jlc3VsdFR5cGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9UaXRsZURlc2NyaXB0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkRldGFpbC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25FbGVtZW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkxpc3QudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0FpZFR5cGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9EaXNidXJzZW1lbnRDaGFubmVsLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9GaW5hbmNlVHlwZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRmxvd1R5cGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1Byb3ZpZGVyT3JnYW5pemF0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNlaXZlck9yZ2FuaXphdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjaXBpZW50Q291bnRyeS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjaXBpZW50UmVnaW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9TZWN0b3IudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RpZWRTdGF0dXMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RyYW5zYWN0aW9uRGF0ZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVHJhbnNhY3Rpb25UeXBlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9WYWx1ZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hdWRpdC9BdWRpdExpc3RpbmcudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZEdyYXBoLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkUGFnZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9BY3Rpdml0eVVwbG9hZC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvQWN0aXZpdHlYbHNVcGxvYWQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydExpc3QudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydFBsYWNlaG9sZGVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9MaXN0RWxlbWVudC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvWGxzTGlzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRGF0YS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRWxlbWVudHMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Eb2N1bWVudExpbmsudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlY2lwaWVudENvdW50cnlCdWRnZXQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlcG9ydGluZ09yZ0J1ZGdldC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVwb3J0aW5nT3JnYW5pc2F0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZXBvcnRpbmdSZWdpb25CdWRnZXQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1RvdGFsQnVkZ2V0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Ub3RhbEV4cGVuZGl0dXJlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Bhc3N3b3JkUmVjb3ZlcnkudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYWdlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Jlc2V0UGFzc3dvcmQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc2V0dGluZy9TZXR0aW5nRGVmYXVsdEZvcm0udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc2V0dGluZy9TZXR0aW5nUGFnZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zZXR0aW5nL1NldHRpbmdQdWJsaXNoaW5nRm9ybS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL09yZ2FuaXNhdGlvbkxpc3QudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9TeXN0ZW1WZXJzaW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vY29tcG9uZW50cy9BZG1pbkJhci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL2NvbXBvbmVudHMvVGFibGVMaXN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlckxpc3RpbmcudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvdXNlci9Vc2VyUHJvZmlsZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvQWJvdXRQYWdlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9FbWFpbFZlcmlmaWNhdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVJlZ2lzdGVyUGFnZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVN0YW5kYXJkLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9QdWJsaXNoaW5nQ2hlY2tsaXN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9SZWdpc3RlclBhZ2UudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1N1cHBvcnRQYWdlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9BZG1pbkZvb3Rlci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvSm9pbk5vdy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvU2lnbkluLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJGb290ZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1dlYkhlYWRlci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9hcHAudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb3NhYmxlL2NvcmVFbGVtZW50cy50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvc2FibGUvZGF0ZUZvcm1hdC50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvc2FibGUvZW5jcnlwdGlvbi50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvc2FibGUvdGl0bGUudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyLnRzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9zYWJsZS91dGlscy50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3N0b3JlL2FjdGl2aXRpZXMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9zdG9yZS9hY3Rpdml0aWVzL3Nob3cudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9zdG9yZS9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3N0b3JlL3NldHRpbmcvYWN0aW9ucy50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3N0b3JlL3NldHRpbmcvbXV0YXRpb24udHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9zdG9yZS9zZXR0aW5nL3N0YXRlLnRzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvSW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0luZGV4LnRzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9lbGVtZW50cy9JbmRleC50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvSW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvSW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvSW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvV2VsY29tZVBhZ2UudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9TaGltbWVyTG9hZGluZy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NwaW5uZXJMb2FkZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlPzIyY2QiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xpc3RFcnJvci52dWU/OGYzYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3Bpbm5lckxvYWRlci52dWU/YzgwOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL1RhYmxlTGF5b3V0LnZ1ZT8yNGU5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0xpc3RFbGVtZW50LnZ1ZT85NzhhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L1hsc0xpc3QudnVlPzZlMDMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL2NvbXBvbmVudHMvVGFibGVMaXN0LnZ1ZT84YTdjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvdXNlci9Vc2VyTGlzdGluZy52dWU/NDg4ZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWRtaW5IZWFkZXIudnVlP2I5Y2UiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1bGtwdWJsaXNoV2l0aFhscy52dWU/ZDU5OCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRXJyb3JNZXNzYWdlLnZ1ZT83Y2U4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Ib3ZlclRleHQudnVlPzc4M2EiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0xvYWRlci52dWU/NTkzOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUG9wdXBNb2RhbC52dWU/MWYwOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvU2hpbW1lckxvYWRpbmcudnVlP2I3ZGEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0Vycm9yTGlzdHMudnVlPzYzMTEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZT85ZGU4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9TdGlja3lFcnJvcnMudnVlP2YzNWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1VwbG9hZGVkRXJyb3JzLnZ1ZT8xNjEzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlJbmRleC52dWU/NWRiNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0NyZWF0ZU1vZGFsLnZ1ZT84ZGY3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL0Vycm9ySXRlbS52dWU/NTdhZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/NDUxMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlPzdkN2UiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlP2I0Y2EiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvSW1wb3J0TGlzdC52dWU/MTkwNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25EYXRhLnZ1ZT81ZmE1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYWdlLnZ1ZT8yZGViIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0lhdGlSZWdpc3RlclBhZ2UudnVlPzhiMGEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvUmVnaXN0ZXJQYWdlLnZ1ZT8xMTQ3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1NpZ25Jbi52dWU/MjcwZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJIZWFkZXIudnVlPzI2NTAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2FwcC5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy93ZWJwb3J0YWwtYXBwLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvIHN5bmMgXlxcLlxcLy4qJCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvYWN0aXZpdHlfZGF0ZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2FjdGl2aXR5X3Njb3BlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvYWN0aXZpdHlfc3RhdHVzLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvYnVkZ2V0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvYnVpbGRpbmcuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jYXBpdGFsX3NwZW5kLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvY29sbGFib3JhdGlvbl90eXBlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvY29uZGl0aW9ucy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2NvbnRhY3RfaW5mby5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2NvdW50cnlfYnVkZ2V0X2l0ZW1zLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvY3JzLWFkZC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2RlZmF1bHRfYWlkX3R5cGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9kZWZhdWx0X2ZpbmFuY2VfdHlwZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2RlZmF1bHRfZmxvd190eXBlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvZGVzY3JpcHRpb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9kb2N1bWVudF9saW5rLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvaHVtYW5pdGFyaWFuX3Njb3BlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvaWF0aV9pZGVudGlmaWVyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvaW5kaWNhdG9yLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvbGVnYWN5X2RhdGEuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9sb2NhdGlvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL290aGVyX2lkZW50aWZpZXIuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9wYXJ0aWNpcGF0aW5nX29yZy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3BlcmlvZC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3BsYW5uZWRfZGlzYnVyc2VtZW50LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcG9saWN5X21hcmtlci5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3JlY2lwaWVudF9jb3VudHJ5LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcmVjaXBpZW50X3JlZ2lvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3JlbGF0ZWRfYWN0aXZpdHkuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9yZXBvcnRpbmdfb3JnLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcmVzdWx0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcmVzdWx0cy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3NlY3Rvci5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3RhZy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3RpdGxlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvdHJhbnNhY3Rpb25zLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWRkLW1vcmUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hZGQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hbGVydC1vdXRsaW5lLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWxlcnQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hbGlnbi1jZW50ZXIuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hbGlnbi1yaWdodC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FwcHJvdmVkLWNsb3VkLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYXJyb3ctZG93bi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Fycm93LWxlZnQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hcnJvdy1yaWdodC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Fycm93LXNob3J0LWxlZnQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hc2NlbmRpbmctYXJyb3cuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9iaWxsLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYm94LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYnVkZ2V0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYnVpbGRpbmcuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jYW5jZWwtY2xvdWQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jYW5jZWwtY3Jvc3Muc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jaGVjay1jaXJjbGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jaGVja2JveC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NoZWNrZWQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jaGV2cm9uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2lyY2xlLXJlZC1jcm9zcy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Nsb3NlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY29weXJpZ2h0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY29yZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Nyb3NzLWljb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jcm9zcy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2RlZmF1bHQtMS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2RlZmF1bHQtMi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2RlbGV0ZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Rlc2NlbmRpbmctYXJyb3cuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kb2N1bWVudC13cml0ZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2RvdWJsZS10aWNrLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZG93bmxvYWQtY29kZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Rvd25sb2FkLWZpbGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kb3dubG9hZC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Ryb3Bkb3duLWFycm93LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZWRpdC1hY3Rpb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9lZGl0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZXhjbGFtYXRpb24td2FybmluZy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2V4cG9ydC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2V4dGVybmFsLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZXllLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZm9sZGVyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZm9vdGVyLWxvZ28uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9mdW5uZWwuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9ncm91cC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2hhbWJ1cmdlci1jcm9zcy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2hlYWRlci1sb2dvLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGVhZHBob25lLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGVscC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2hpZGUtcGFzc3dvcmQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9oaXN0b3J5LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaWMtdmVyaWZpY2F0aW9uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaW5kaWNhdG9yLWljb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9rZXkuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9sZWZ0LWFycm93LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbG9nby13aGl0ZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2xvZ28uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9sb2dvdXQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9tYWduaWZ5aW5nLWdsYXNzLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbWFpbC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL21pbmltaXplLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbW9vbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL25vdGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvYnVpbGRpbmcuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvZGVzY3JpcHRpb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvZG9jdW1lbnRfbGluay5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9uYW1lLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL29yZ19pZGVudGlmaWVyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL29yZ2FuaXNhdGlvbl9pZGVudGlmaWVyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL29yZ2FuaXphdGlvbl9pZGVudGlmaWVyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlY2lwaWVudF9jb3VudHJ5X2J1ZGdldC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZWNpcGllbnRfb3JnX2J1ZGdldC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZWNpcGllbnRfcmVnaW9uX2J1ZGdldC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZXBvcnRpbmdfb3JnLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlcG9ydGluZ19vcmdhbmlzYXRpb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvdGl0bGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvdG90YWxfYnVkZ2V0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3RvdGFsX2V4cGVuZGl0dXJlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcGFuZWwtc2VhcmNoLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcGVyaW9kLWljb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wbHVzLW91dGxpbmVkLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcGx1cy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3B1Ymxpc2guc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wdy1sb2NrLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcXVlc3Rpb24tbWFyay5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3JlZC1jcm9zcy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3JlZC1kb3Quc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9yZWRvLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcmVzdWx0LWljb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9yaWdodC1hcnJvdy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NlYXJjaC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NldHRpbmcuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zaGllbGQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zbWlsZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NvcnQtYXNjZW5kaW5nLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc29ydC1kZXNjZW5kaW5nLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc29ydC1pY29uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc3Rhci5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3RpY2stb3V0bGluZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3RpY2suc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy90aWNrZWQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy90aW1lcy1jaXJjbGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy90d2l0dGVyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdXAtYXJyb3ctb3V0bGluZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3VwbG9hZC1maWxlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdXNlci1wcm9maWxlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdXNlci5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3dhcm5pbmctYWN0aXZpdHkuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy93YXJuaW5nLWZpbGwuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy93YXJuaW5nLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcveW91dHViZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWU/OTcwOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvWGxzTGlzdEVycm9yLnZ1ZT81Yjk3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zcGlubmVyTG9hZGVyLnZ1ZT8zYzNkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvVGFibGVMYXlvdXQudnVlPzAyY2UiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvTGlzdEVsZW1lbnQudnVlP2FiY2UiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvWGxzTGlzdC52dWU/NWI0OSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vY29tcG9uZW50cy9UYWJsZUxpc3QudnVlP2YyNWQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy91c2VyL1VzZXJMaXN0aW5nLnZ1ZT9mNTc2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BZG1pbkhlYWRlci52dWU/ZjZlOSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZT83OTI2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9FcnJvck1lc3NhZ2UudnVlPzg4OTgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0hvdmVyVGV4dC52dWU/Yjc3ZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZT82ODc0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZT9mZDg2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9TaGltbWVyTG9hZGluZy52dWU/YjRiYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvRXJyb3JMaXN0cy52dWU/Y2U5OCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlPzZhMTciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1N0aWNreUVycm9ycy52dWU/NWQyMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvVXBsb2FkZWRFcnJvcnMudnVlP2I2MWYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eUluZGV4LnZ1ZT9lM2U3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQ3JlYXRlTW9kYWwudnVlPzJlOGYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvRXJyb3JJdGVtLnZ1ZT9kNjdkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWN0aXZpdGllc0VsZW1lbnRzLnZ1ZT83NzM3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/ZmVhZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWU/YzRmYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9JbXBvcnRMaXN0LnZ1ZT82Y2Q0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkRhdGEudnVlPzgxZDUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9SZXNldFBhZ2UudnVlPzBlYWIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVJlZ2lzdGVyUGFnZS52dWU/ZDYwYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9SZWdpc3RlclBhZ2UudnVlPzY5YjEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvU2lnbkluLnZ1ZT9kMzgwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1dlYkhlYWRlci52dWU/MTkwYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWN0aXZpdHlEb3dubG9hZC52dWU/NGY2OSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWRtaW5IZWFkZXIudnVlPzNjMmQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0JyZWFkQ3J1bWIudnVlP2FhMWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1bGtQdWJsaXNoaW5nRXJyb3JQb3B1cC52dWU/YWRiMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZT83YTk5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlPzZmMTEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0RhdGVSYW5nZVdpZGdldC52dWU/YzY5OSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRGVzY3JpcHRpb25Gb3JtLnZ1ZT8xNDEwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9FcnJvck1lc3NhZ2UudnVlP2UxZDAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0Vycm9yUG9wVXAudnVlPzMyZmEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0hvdmVyVGV4dC52dWU/YTJlNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZT80MmI3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlP2Y1NTkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL05hdkRyb3Bkb3duLnZ1ZT9hZTBjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZT9lZDMwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9SYWRpYWxQcm9ncmVzc0Jhci52dWU/NzRhNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvU2hpbW1lckxvYWRpbmcudnVlPzI2N2IiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1RhYmxlTG9hZGVyQ29tcG9uZW50LnZ1ZT81YjFmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlPzI3YjIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWU/MzkxZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvWGxzTGlzdEVycm9yLnZ1ZT8wMTIxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNMb2FkZXIudnVlPzZhNWMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc1VwbG9hZEluZGljYXRvci52dWU/ODJiYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9EZWxldGVCdXR0b24udnVlPzZlNDEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvTGluay52dWU/MjQ3YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9QdWJsaXNoQnV0dG9uLnZ1ZT9hOGQ3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9idXR0b25zL1VuUHVibGlzaEJ1dHRvbi52dWU/NDFhMiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvRGVsZXRlQWN0aW9uLnZ1ZT84YzkwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9FcnJvckxpc3RzLnZ1ZT84ODhlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9IYXZlTm90QWRkZWRZZXQudnVlPzkzNjEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL09yZ2FuaXphdGlvblB1Ymxpc2hVbnB1Ymxpc2hCdXR0b24udnVlPzkxN2IiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWU/ZTJmMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlP2ZkYzciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1N0aWNreUVycm9ycy52dWU/YWZjYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvVXBsb2FkZWRFcnJvcnMudnVlP2YyNDUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NwaW5uZXJMb2FkZXIudnVlPzUwNmEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3N0YXR1cy9FbGVtZW50U3RhdHVzLnZ1ZT9kYTU0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zdGF0dXMvUHJldmlvdXNseVB1Ymxpc2hlZC52dWU/Zjg3MyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5RGVmYXVsdFZhbHVlLnZ1ZT9kNGE5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlEZXRhaWwudnVlPzk0NjQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eUluZGV4LnZ1ZT8wNDZkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQ3JlYXRlTW9kYWwudnVlPzhlNmQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvRXJyb3JJdGVtLnZ1ZT8wMTNkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL1B1Ymxpc2hTZWxlY3RlZC52dWU/MzlkYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9SZWZyZXNoVG9hc3QudnVlPzkxYmEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvVmFsaWRhdGlvbkVycm9ycy52dWU/MmJmMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0FjdGl2aXR5RGF0ZS52dWU/MmYwYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0NvbmRpdGlvbnMudnVlP2MxOGUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Db250YWN0SW5mby52dWU/NjA3MiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZT82YjVhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvSHVtYW5pdGFyaWFuU2NvcGUudnVlPzU5YmIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9JYXRpSWRlbnRpZmllci52dWU/MmQ3NiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0xlZ2FjeURhdGEudnVlP2I4ZGIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Mb2NhdGlvbi52dWU/MmJiYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL090aGVySWRlbnRpZmllci52dWU/NzIzZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BhcnRpY2lwYXRpbmdPcmcudnVlPzg5OGIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9QbGFubmVkRGlzYnVyc2VtZW50LnZ1ZT8wZGM2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUG9saWN5TWFya2VyLnZ1ZT84ZWI4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVjaXBpZW50Q291bnRyeS52dWU/ODEwZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlY2lwaWVudFJlZ2lvbi52dWU/YmI4OCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlbGF0ZWRBY3Rpdml0eS52dWU/NWU5OCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlcG9ydGluZ09yZ2FuaXphdGlvbi52dWU/M2JlOSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1Jlc3VsdC52dWU/MThkZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1NlY3Rvci52dWU/MjI3OSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1RhZy52dWU/OGQxNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1RpdGxlLnZ1ZT9jM2UwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvVHJhbnNhY3Rpb25zLnZ1ZT81MDI2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9JbmRpY2F0b3JEZXRhaWwudnVlPzQ5MDYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL0luZGljYXRvckxpc3QudnVlPzA5NTgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0FnZ3JlZ2F0aW9uU3RhdHVzLnZ1ZT80MWI2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9CYXNlbGluZS52dWU/ODA2MCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvRGVzY3JpcHRpb24udnVlPzk3OWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0RvY3VtZW50TGluay52dWU/NGQ4NyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvSW5kaWNhdG9yQXNjZW5kaW5nLnZ1ZT80NmQ3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9NZWFzdXJlLnZ1ZT8xYzZiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9QZXJpb2QudnVlPzJlNzkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1JlZmVyZW5jZS52dWU/YWI3MSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvVGl0bGUudnVlPzAxMzEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0aWVzRWxlbWVudHMudnVlPzc1ZTAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0eUVsZW1lbnQudnVlPzIxNmEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BZGRBY3Rpdml0eUJ1dHRvbi52dWU/NDc0MyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlPzExMmIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9FbGVtZW50c05vdGUudnVlPzQ2YTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9FbXB0eUFjdGl2aXR5LnZ1ZT81NDFmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvUGFnZVRpdGxlLnZ1ZT8yMTFhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvU2lkZWJhckhlbHBCbG9jay52dWU/Mzg4NiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL1RhYmxlTGF5b3V0LnZ1ZT83MDQ2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9QZXJpb2RzRGV0YWlsLnZ1ZT9lNjRjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9QZXJpb2RzTGlzdC52dWU/YzMyYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvZWxlbWVudHMvQWN0dWFsVmFsdWUudnVlPzRlYTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL2VsZW1lbnRzL1RhcmdldFZhbHVlLnZ1ZT8yYzk4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHREZXRhaWwudnVlPzQ3ZWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL1Jlc3VsdEVsZW1lbnQudnVlPzNlZjEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL1Jlc3VsdExpc3QudnVlPzhiM2MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL0RvY3VtZW50TGluay52dWU/N2QxNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvSW5kaWNhdG9yLnZ1ZT84NWU2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9SZWZlcmVuY2UudnVlPzI5MzAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1Jlc3VsdFR5cGUudnVlP2YzZjQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1RpdGxlRGVzY3JpcHRpb24udnVlP2UwOWEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25EZXRhaWwudnVlPzU4ZjIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25FbGVtZW50LnZ1ZT9kYjVmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL1RyYW5zYWN0aW9uTGlzdC52dWU/MTUwOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9BaWRUeXBlLnZ1ZT8zMmY4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZT8xOTVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0Rpc2J1cnNlbWVudENoYW5uZWwudnVlPzgxZDEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRmluYW5jZVR5cGUudnVlPzRhODQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRmxvd1R5cGUudnVlPzcxMzQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUHJvdmlkZXJPcmdhbml6YXRpb24udnVlPzMxNTEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjZWl2ZXJPcmdhbml6YXRpb24udnVlPzYyZWMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjaXBpZW50Q291bnRyeS52dWU/MDE1MCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNpcGllbnRSZWdpb24udnVlP2RmNjMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvU2VjdG9yLnZ1ZT9hYjNmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RpZWRTdGF0dXMudnVlPzc4ZDIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVHJhbnNhY3Rpb25EYXRlLnZ1ZT9lODlkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RyYW5zYWN0aW9uVHlwZS52dWU/ODNjYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9WYWx1ZS52dWU/MTE4NyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2F1ZGl0L0F1ZGl0TGlzdGluZy52dWU/OTZmMiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRHcmFwaC52dWU/NmZkNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWU/NDA5YiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRQYWdlLnZ1ZT9iYzZlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZFN0YXRzU2VjdGlvbi52dWU/NjUzNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9BY3Rpdml0eVVwbG9hZC52dWU/Zjg3NyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9BY3Rpdml0eVhsc1VwbG9hZC52dWU/MTUzNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9JbXBvcnRMaXN0LnZ1ZT9mZjhlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydFBsYWNlaG9sZGVyLnZ1ZT8xYTUwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0xpc3RFbGVtZW50LnZ1ZT9lNjE2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L1hsc0xpc3QudnVlP2FhZWIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRGF0YS52dWU/ZDJlNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25FbGVtZW50cy52dWU/YWE0YSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25FbGVtZW50c0RldGFpbC52dWU/Yjg3NSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Eb2N1bWVudExpbmsudnVlPzAwNDQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVjaXBpZW50Q291bnRyeUJ1ZGdldC52dWU/MzdlZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZXBvcnRpbmdPcmdCdWRnZXQudnVlPzllYWIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVwb3J0aW5nT3JnYW5pc2F0aW9uLnZ1ZT85ZWE0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlcG9ydGluZ1JlZ2lvbkJ1ZGdldC52dWU/YjEwOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Ub3RhbEJ1ZGdldC52dWU/ZGQyYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Ub3RhbEV4cGVuZGl0dXJlLnZ1ZT83YjM3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUGFzc3dvcmRSZWNvdmVyeS52dWU/OWNiZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Jlc2V0UGFnZS52dWU/ZjFhYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Jlc2V0UGFzc3dvcmQudnVlPzQzNjMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zZXR0aW5nL1NldHRpbmdEZWZhdWx0Rm9ybS52dWU/OTE1YiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ1BhZ2UudnVlPzAxMDMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zZXR0aW5nL1NldHRpbmdQdWJsaXNoaW5nRm9ybS52dWU/ZTI0NCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vT3JnYW5pc2F0aW9uTGlzdC52dWU/ZTUwNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vU3lzdGVtVmVyc2lvbi52dWU/ODE5MiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vY29tcG9uZW50cy9BZG1pbkJhci52dWU/NjY2MCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vY29tcG9uZW50cy9UYWJsZUxpc3QudnVlPzMxMTciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy91c2VyL1VzZXJMaXN0aW5nLnZ1ZT8wOGIwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvdXNlci9Vc2VyUHJvZmlsZS52dWU/N2JiYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9BYm91dFBhZ2UudnVlPzc4ZGMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvRW1haWxWZXJpZmljYXRpb24udnVlP2MwYTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVJlZ2lzdGVyUGFnZS52dWU/MjNlNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9JYXRpU3RhbmRhcmQudnVlPzY1MmMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvUHVibGlzaGluZ0NoZWNrbGlzdC52dWU/ODY5ZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9SZWdpc3RlclBhZ2UudnVlPzE1ZTUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvU3VwcG9ydFBhZ2UudnVlPzA1OGMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvV2VsY29tZVBhZ2UudnVlPzBkZWIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvQWRtaW5Gb290ZXIudnVlPzQyMmIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvSm9pbk5vdy52dWU/NWE1NiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9TaWduSW4udnVlPzAzNWQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvV2ViRm9vdGVyLnZ1ZT9hN2QyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1dlYkhlYWRlci52dWU/YWViMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWN0aXZpdHlEb3dubG9hZC52dWU/MzJmYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWRtaW5IZWFkZXIudnVlP2Q0ODAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0JyZWFkQ3J1bWIudnVlPzFiMjYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1bGtQdWJsaXNoaW5nRXJyb3JQb3B1cC52dWU/NGZkZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZT9lMjJmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlPzUxMjEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0RhdGVSYW5nZVdpZGdldC52dWU/ZmUyYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRGVzY3JpcHRpb25Gb3JtLnZ1ZT9kZDFkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9FcnJvck1lc3NhZ2UudnVlP2Q3YjciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0Vycm9yUG9wVXAudnVlPzQyODEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0hvdmVyVGV4dC52dWU/MTIwZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZT9lZThjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlPzU2YmQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL05hdkRyb3Bkb3duLnZ1ZT9iY2RlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZT8zOTQ3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9SYWRpYWxQcm9ncmVzc0Jhci52dWU/MDFiOSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvVGFibGVMb2FkZXJDb21wb25lbnQudnVlP2IxMmYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWU/NmQzYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZT8zNWQ2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNMaXN0RXJyb3IudnVlP2JjYWEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xvYWRlci52dWU/MTc0MiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvWGxzVXBsb2FkSW5kaWNhdG9yLnZ1ZT9mZTU1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9idXR0b25zL0RlbGV0ZUJ1dHRvbi52dWU/OGIyYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZT9mYTVmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9idXR0b25zL1B1Ymxpc2hCdXR0b24udnVlP2FiZTAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvVW5QdWJsaXNoQnV0dG9uLnZ1ZT8wZThiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9EZWxldGVBY3Rpb24udnVlPzEzMzUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0Vycm9yTGlzdHMudnVlPzBjYjciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0hhdmVOb3RBZGRlZFlldC52dWU/ODk0ZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbi52dWU/Y2IyZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvUGFnZVRpdGxlLnZ1ZT9iMjZjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWU/Zjc4MyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvU3RpY2t5RXJyb3JzLnZ1ZT82ZTk2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9VcGxvYWRlZEVycm9ycy52dWU/MGEwZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3RhdHVzL0VsZW1lbnRTdGF0dXMudnVlP2Y0M2QiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3N0YXR1cy9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZT8yYWVjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlEZWZhdWx0VmFsdWUudnVlPzY1YzEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eURldGFpbC52dWU/YjFlMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5SW5kZXgudnVlP2MyNmQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9DcmVhdGVNb2RhbC52dWU/ZjU4OCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9FcnJvckl0ZW0udnVlPzUwNjIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvUHVibGlzaFNlbGVjdGVkLnZ1ZT83NzQyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL1JlZnJlc2hUb2FzdC52dWU/Zjk2NCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9WYWxpZGF0aW9uRXJyb3JzLnZ1ZT8zYTkyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvQWN0aXZpdHlEYXRlLnZ1ZT8zM2I2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvQ29uZGl0aW9ucy52dWU/NTlhNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0NvbnRhY3RJbmZvLnZ1ZT85ZGE2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvRGVzY3JpcHRpb24udnVlPzRiZTIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9IdW1hbml0YXJpYW5TY29wZS52dWU/YzI3MyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0lhdGlJZGVudGlmaWVyLnZ1ZT8yNmUwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvTGVnYWN5RGF0YS52dWU/NzFhNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0xvY2F0aW9uLnZ1ZT8zNDBhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvT3RoZXJJZGVudGlmaWVyLnZ1ZT9hMmM2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUGFydGljaXBhdGluZ09yZy52dWU/NzBjMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BsYW5uZWREaXNidXJzZW1lbnQudnVlP2ZmNGQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Qb2xpY3lNYXJrZXIudnVlP2RlYjAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZWNpcGllbnRDb3VudHJ5LnZ1ZT9kODU3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVjaXBpZW50UmVnaW9uLnZ1ZT9kMzhjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVsYXRlZEFjdGl2aXR5LnZ1ZT8zZGU3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVwb3J0aW5nT3JnYW5pemF0aW9uLnZ1ZT9kNWNmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVzdWx0LnZ1ZT83NGY2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvU2VjdG9yLnZ1ZT80OTZjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvVGFnLnZ1ZT8wMzE0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvVGl0bGUudnVlPzgxMDgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9UcmFuc2FjdGlvbnMudnVlPzAxZTAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL0luZGljYXRvckRldGFpbC52dWU/OTcxNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvSW5kaWNhdG9yTGlzdC52dWU/MmNjNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvQWdncmVnYXRpb25TdGF0dXMudnVlPzAxOGQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0Jhc2VsaW5lLnZ1ZT8wYzJiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9EZXNjcmlwdGlvbi52dWU/ZmY4ZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvRG9jdW1lbnRMaW5rLnZ1ZT80NDI0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9JbmRpY2F0b3JBc2NlbmRpbmcudnVlPzEzYWEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL01lYXN1cmUudnVlP2VhZTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1BlcmlvZC52dWU/MzhmNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvUmVmZXJlbmNlLnZ1ZT85MjQyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9UaXRsZS52dWU/OWZmMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/OGM5NCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXR5RWxlbWVudC52dWU/NWM1MiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FkZEFjdGl2aXR5QnV0dG9uLnZ1ZT9jMjBkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/OTQyNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0VsZW1lbnRzTm90ZS52dWU/MDYxNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0VtcHR5QWN0aXZpdHkudnVlPzI4MWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9QYWdlVGl0bGUudnVlPzlkMWYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9TaWRlYmFySGVscEJsb2NrLnZ1ZT8wZGY0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvVGFibGVMYXlvdXQudnVlPzYzNDAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL1BlcmlvZHNEZXRhaWwudnVlPzdhODMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL1BlcmlvZHNMaXN0LnZ1ZT82NzQzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9lbGVtZW50cy9BY3R1YWxWYWx1ZS52dWU/MzMwZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvZWxlbWVudHMvVGFyZ2V0VmFsdWUudnVlPzE2YjAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL1Jlc3VsdERldGFpbC52dWU/MGE5YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0RWxlbWVudC52dWU/ODUxYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0TGlzdC52dWU/NmE3MiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvRG9jdW1lbnRMaW5rLnZ1ZT9hY2NkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9JbmRpY2F0b3IudnVlPzBiNzEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1JlZmVyZW5jZS52dWU/NjNhNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvUmVzdWx0VHlwZS52dWU/MTYzMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvVGl0bGVEZXNjcmlwdGlvbi52dWU/NWUzMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkRldGFpbC52dWU/MmU1MCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkVsZW1lbnQudnVlPzUzYjEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25MaXN0LnZ1ZT85MjA3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0FpZFR5cGUudnVlPzM0NzkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRGVzY3JpcHRpb24udnVlPzgzZjMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRGlzYnVyc2VtZW50Q2hhbm5lbC52dWU/MWU1MiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9GaW5hbmNlVHlwZS52dWU/NWRjMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9GbG93VHlwZS52dWU/YjVkNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9Qcm92aWRlck9yZ2FuaXphdGlvbi52dWU/ODgwYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNlaXZlck9yZ2FuaXphdGlvbi52dWU/OWM0NyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNpcGllbnRDb3VudHJ5LnZ1ZT9jNWFhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1JlY2lwaWVudFJlZ2lvbi52dWU/NGJiNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9TZWN0b3IudnVlPzZmODAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVGllZFN0YXR1cy52dWU/ODI3OCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9UcmFuc2FjdGlvbkRhdGUudnVlPzBiOTkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVHJhbnNhY3Rpb25UeXBlLnZ1ZT80NTRiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1ZhbHVlLnZ1ZT84YmY0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYXVkaXQvQXVkaXRMaXN0aW5nLnZ1ZT8yOWQwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZEdyYXBoLnZ1ZT8yZGViIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT82MmRlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZFBhZ2UudnVlP2Q5NzEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZT9lOTc3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0FjdGl2aXR5VXBsb2FkLnZ1ZT9jZjY1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0FjdGl2aXR5WGxzVXBsb2FkLnZ1ZT83NTFlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydExpc3QudnVlPzg1NDAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvSW1wb3J0UGxhY2Vob2xkZXIudnVlPzJhYjIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvTGlzdEVsZW1lbnQudnVlP2M5NjEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvWGxzTGlzdC52dWU/ZDVjOSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25EYXRhLnZ1ZT9iMzI5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkVsZW1lbnRzLnZ1ZT84NzhiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZT9hYzRmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL0RvY3VtZW50TGluay52dWU/NTM5MSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZWNpcGllbnRDb3VudHJ5QnVkZ2V0LnZ1ZT83YTAyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlcG9ydGluZ09yZ0J1ZGdldC52dWU/NmFmMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZXBvcnRpbmdPcmdhbmlzYXRpb24udnVlPzA5ODMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVwb3J0aW5nUmVnaW9uQnVkZ2V0LnZ1ZT9hMDc5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1RvdGFsQnVkZ2V0LnZ1ZT80YmFkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1RvdGFsRXhwZW5kaXR1cmUudnVlPzUxZDIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9QYXNzd29yZFJlY292ZXJ5LnZ1ZT8yNmUwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYWdlLnZ1ZT9lOGIzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYXNzd29yZC52dWU/ZWU0OSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ0RlZmF1bHRGb3JtLnZ1ZT84NWU5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc2V0dGluZy9TZXR0aW5nUGFnZS52dWU/ZjBlMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ1B1Ymxpc2hpbmdGb3JtLnZ1ZT8zZjM0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9PcmdhbmlzYXRpb25MaXN0LnZ1ZT80NDBhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9TeXN0ZW1WZXJzaW9uLnZ1ZT8xODZmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL0FkbWluQmFyLnZ1ZT80MjRjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL1RhYmxlTGlzdC52dWU/ZTVlOSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlckxpc3RpbmcudnVlPzBiNjMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy91c2VyL1VzZXJQcm9maWxlLnZ1ZT85MGQ2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0Fib3V0UGFnZS52dWU/NzcyNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9FbWFpbFZlcmlmaWNhdGlvbi52dWU/NWExNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZT83Y2IwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0lhdGlTdGFuZGFyZC52dWU/MDZhNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9QdWJsaXNoaW5nQ2hlY2tsaXN0LnZ1ZT9mNjNmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1JlZ2lzdGVyUGFnZS52dWU/OTg2MyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9TdXBwb3J0UGFnZS52dWU/Y2ZkYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9BZG1pbkZvb3Rlci52dWU/Yjg3YiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9Kb2luTm93LnZ1ZT82NjAxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1NpZ25Jbi52dWU/NjNkMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJGb290ZXIudnVlPzZkZWIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvV2ViSGVhZGVyLnZ1ZT8wMmY2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1dlbGNvbWVQYWdlLnZ1ZT9jNjYyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy8gc3luYyBeXFwuXFwvLiokIiwid2VicGFjazovLy9pZ25vcmVkfC9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL2NyeXB0by1qc3xjcnlwdG8iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBzcGlubmVyTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3NwaW5uZXJMb2FkZXIudnVlXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgaW5kZXhfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL2luZGV4XCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0FjdGl2aXR5RG93bmxvYWQnLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgc2hvd1JldHJ5RG93bmxvYWRNb2RlbCA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBpc0xvYWRpbmcgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgc3VwcG9ydEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNsYXVuY2hlcicpO1xuICAgICAgICAgICAgaWYgKHN1cHBvcnRCdXR0b24gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBzdXBwb3J0QnV0dG9uLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGV5KC01MHB4KSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZG93bmxvYWRGaWxlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUNvbXBsZXRlWGxzRG93bmxvYWQnLCB0cnVlKTtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVDYW5jZWxEb3dubG9hZCcsIHRydWUpO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0WGxzRG93bmxvYWQnLCBmYWxzZSk7XG4gICAgICAgICAgICB2YXIgYXBpVXJsID0gXCJcIi5jb25jYXQoZG93bmxvYWRBcGlVcmwudmFsdWUuc3BsaXQoKVswXS5zcGxpdCgnLycpWzNdLCBcIi9cIikuY29uY2F0KGRvd25sb2FkQXBpVXJsLnZhbHVlLnNwbGl0KClbMF0uc3BsaXQoJy8nKVs0XSk7XG4gICAgICAgICAgICAoMCwgYXhpb3NfMS5kZWZhdWx0KSh7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnZ2V0JyxcbiAgICAgICAgICAgICAgICB1cmw6IGFwaVVybCxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJyxcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciBmaWxlTmFtZSA9IHJlcy5oZWFkZXJzWydjb250ZW50LWRpc3Bvc2l0aW9uJ10uc3BsaXQoJ2ZpbGVuYW1lPScpWzFdO1xuICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlcy5kYXRhXSwge30pO1xuICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIGZpbGVOYW1lKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcmV0cnlEb3dubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHhsc0Rvd25sb2FkU3RhdHVzLnZhbHVlID0gJyc7XG4gICAgICAgICAgICBpc0xvYWRpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0WGxzRG93bmxvYWQnLCB0cnVlKTtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVDYW5jZWxEb3dubG9hZCcsIGZhbHNlKTtcbiAgICAgICAgICAgIHNob3dSZXRyeURvd25sb2FkTW9kZWwudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHZhciBhcGlVcmwgPSAnYWN0aXZpdGllcy9yZXRyeS14bHMtZG93bmxvYWQnO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChhcGlVcmwpLmZpbmFsbHkoZnVuY3Rpb24gKCkgeyByZXR1cm4gKGlzTG9hZGluZy52YWx1ZSA9IGZhbHNlKTsgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjYW5jZWxEb3dubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHhsc0Rvd25sb2FkU3RhdHVzLnZhbHVlID0gJ2NhbmNlbGxlZCc7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvYWN0aXZpdGllcy9jYW5jZWwteGxzLWRvd25sb2FkJykudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUNhbmNlbERvd25sb2FkJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydFhsc0Rvd25sb2FkJywgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcGVyY2VudGFnZVdpZHRoID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gKGZpbGVDb3VudC52YWx1ZSAvIDQpICogMTAwO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGZpbGVDb3VudCA9ICgwLCB2dWVfMi5pbmplY3QpKCdmaWxlQ291bnQnKTtcbiAgICAgICAgdmFyIHhsc0Rvd25sb2FkU3RhdHVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3hsc0Rvd25sb2FkU3RhdHVzJyk7XG4gICAgICAgIHZhciBkb3dubG9hZEFwaVVybCA9ICgwLCB2dWVfMi5pbmplY3QpKCdkb3dubG9hZEFwaVVybCcpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBzdG9yZTogc3RvcmUsIHNob3dSZXRyeURvd25sb2FkTW9kZWw6IHNob3dSZXRyeURvd25sb2FkTW9kZWwsIGlzTG9hZGluZzogaXNMb2FkaW5nLCBkb3dubG9hZEZpbGU6IGRvd25sb2FkRmlsZSwgcmV0cnlEb3dubG9hZDogcmV0cnlEb3dubG9hZCwgY2FuY2VsRG93bmxvYWQ6IGNhbmNlbERvd25sb2FkLCBwZXJjZW50YWdlV2lkdGg6IHBlcmNlbnRhZ2VXaWR0aCwgZmlsZUNvdW50OiBmaWxlQ291bnQsIHhsc0Rvd25sb2FkU3RhdHVzOiB4bHNEb3dubG9hZFN0YXR1cywgZG93bmxvYWRBcGlVcmw6IGRvd25sb2FkQXBpVXJsLCBzcGlubmVyTG9hZGVyOiBzcGlubmVyTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgc2hvd18xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvc2hvd1wiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBDcmVhdGVNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vdmlld3MvYWN0aXZpdHkvQ3JlYXRlTW9kYWwudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0FkbWluSGVhZGVyJyxcbiAgICBwcm9wczoge1xuICAgICAgICB1c2VyOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgb3JnYW5pemF0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB2ID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgdiA9PT0gJ3N0cmluZycgfHwgdiA9PT0gbnVsbDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc3VwZXJBZG1pbjogeyB0eXBlOiBCb29sZWFuLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBoYXNBZG1pbkJhcjogeyB0eXBlOiBOdW1iZXIgfHwgQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF9iO1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIHNob3dfMS5kZXRhaWxTdG9yZSkoKTtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgc2hvd1VzZXJEcm9wZG93biA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dBY3Rpdml0eURyb3Bkb3duID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG9hc3RWaXNpYmlsaXR5ID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgaXNMb2FkaW5nID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZHJvcERvd25FbGVtZW50ID0gKDAsIHZ1ZV8yLnJlZikobnVsbCk7XG4gICAgICAgIHZhciBhY3Rpdml0eURyb3Bkb3duSGVpZ2h0ID0gKDAsIHZ1ZV8yLnJlZikoMCk7XG4gICAgICAgIHZhciBzaG93U2lkZWJhciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIHRvYXN0VHlwZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGxhbmd1YWdlTmF2TGlDbGFzc2VzOiAnZmxleCcsXG4gICAgICAgICAgICBsYW5ndWFnZU5hdkFuY2hvckNsYXNzZXM6ICdmbGV4IHRleHQtd2hpdGUgaXRlbXMtY2VudGVyIHVwcGVyY2FzZSBuYXZfX3BvaW50ZXItaG92ZXIgcHgtMScsXG4gICAgICAgICAgICBtZW51TmF2TGlDbGFzc2VzOiAnZmxleCByZWxhdGl2ZScsXG4gICAgICAgICAgICBtZW51TmF2QW5jaG9yQ2xhc3NlczogJ2ZsZXggdGV4dC13aGl0ZSBpdGVtcy1jZW50ZXIgdXBwZXJjYXNlIG5hdl9fcG9pbnRlci1ob3ZlcicsXG4gICAgICAgICAgICBsYW5ndWFnZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlOiAnRU4nLFxuICAgICAgICAgICAgICAgICAgICBwZXJtYWxpbms6ICcvbGFuZy9lbicsXG4gICAgICAgICAgICAgICAgICAgIGlkOiAnbGFuZ3VhZ2UtZW4nLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IHRyYW5zbGF0ZS53ZWJUZXh0KCdhY3RpdmUnKSA9PT0gJ2VuJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2U6ICdGUicsXG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluazogJy9sYW5nL2ZyJyxcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdsYW5ndWFnZS1mcicsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogdHJhbnNsYXRlLndlYlRleHQoJ2FjdGl2ZScpID09PSAnZnInLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZTogJ0VTJyxcbiAgICAgICAgICAgICAgICAgICAgcGVybWFsaW5rOiAnL2xhbmcvZXMnLFxuICAgICAgICAgICAgICAgICAgICBpZDogJ2xhbmd1YWdlLWVzJyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiB0cmFuc2xhdGUud2ViVGV4dCgnYWN0aXZlJykgPT09ICdlcycsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBvcmdfbWVudXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHRyYW5zbGF0ZS5hZG1pblRleHQoJ2FjdGl2aXR5X2RhdGEnKSxcbiAgICAgICAgICAgICAgICAgICAgcGVybWFsaW5rOiAnL2FjdGl2aXRpZXMnLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHRyYW5zbGF0ZS5hZG1pblRleHQoJ29yZ2FuaXNhdGlvbl9kYXRhJyksXG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluazogJy9vcmdhbmlzYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiB0cmFuc2xhdGUuYWRtaW5UZXh0KCdzZXR0aW5ncycpLFxuICAgICAgICAgICAgICAgICAgICBwZXJtYWxpbms6ICcvc2V0dGluZycsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdhZGRfaW1wb3J0X2FjdGl2aXR5JyksXG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluazogJyMnLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiB0cmFuc2xhdGUuY29tbW9uVGV4dCgndXNlcnMnKSxcbiAgICAgICAgICAgICAgICAgICAgcGVybWFsaW5rOiAnL3VzZXJzJyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHN1cGVyYWRtaW5fbWVudXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdEYXNoYm9hcmQnLFxuICAgICAgICAgICAgICAgICAgICBwZXJtYWxpbms6ICcvZGFzaGJvYXJkJyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogdHJhbnNsYXRlLmNvbW1vblRleHQoJ29yZ19saXN0JyksXG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluazogJy9saXN0LW9yZ2FuaXNhdGlvbnMnLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiB0cmFuc2xhdGUuY29tbW9uVGV4dCgndXNlcnMnKSxcbiAgICAgICAgICAgICAgICAgICAgcGVybWFsaW5rOiAnL3VzZXJzJyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIC8vIHtcbiAgICAgICAgICAgICAgICAvLyAgIG5hbWU6IHRyYW5zYWx0aW9uLmNvbW1vbi5sb2dzLmRlZmF1bHQsXG4gICAgICAgICAgICAgICAgLy8gICBwZXJtYWxpbms6ICcvc3lzdGVtLXZlcnNpb24nLFxuICAgICAgICAgICAgICAgIC8vICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAvLyB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuaXNMb2FkaW5nOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlzTG9hZGluZy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGxpQ2xhc3MgPSAnYmxvY2sgcC0yLjUgdGV4dC1uLTQwIHRleHQtdGlueSB1cHBlcmNhc2UgbGVhZGluZy1bMS41XSBmb250LWJvbGQgaG92ZXI6IXRleHQtbi01MCBob3ZlcjpiZy1uLTEwJztcbiAgICAgICAgdmFyIF9jID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIG1vZGFsVmFsdWUgPSBfY1swXSwgbW9kYWxUb2dnbGUgPSBfY1sxXTtcbiAgICAgICAgZnVuY3Rpb24gdG9hc3QobWVzc2FnZSwgdHlwZSkge1xuICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKTsgfSwgMTUwMDApO1xuICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gbWVzc2FnZTtcbiAgICAgICAgICAgIHRvYXN0VHlwZS52YWx1ZSA9IHR5cGU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGlzVG91Y2hEZXZpY2UgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiAnb250b3VjaHN0YXJ0JyBpbiB3aW5kb3cgfHwgbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzID4gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIFRvZ2dsZU1vZGVsKCkge1xuICAgICAgICAgICAgbW9kYWxUb2dnbGUoKTtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnb3BlbkFkZE1vZGVsJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJvdGF0ZURyb3Bkb3duSWNvbiA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHNob3dBY3Rpdml0eURyb3Bkb3duLnZhbHVlICYmIHdpbmRvdy5pbm5lcldpZHRoIDwgMTQyMDtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB0b2dnbGVBY3Rpdml0eURyb3Bkb3duID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIHNob3dBY3Rpdml0eURyb3Bkb3duLnZhbHVlID0gIXNob3dBY3Rpdml0eURyb3Bkb3duLnZhbHVlO1xuICAgICAgICAgICAgYWN0aXZpdHlEcm9wZG93bkhlaWdodC52YWx1ZSA9IChfYiA9IChfYSA9IGRyb3BEb3duRWxlbWVudC52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hWzBdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgYWN0aXZpdHlEcm9wZG93bkhlaWdodC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgfSwgMTApO1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgYWN0aXZpdHlEcm9wZG93bkhlaWdodC52YWx1ZSA9ICdhdXRvJztcbiAgICAgICAgICAgIH0sIDIwMCk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc2hvd1NpZGViYXIudmFsdWU7IH0sIGZ1bmN0aW9uIChzaWRlYmFyKSB7XG4gICAgICAgICAgICBpZiAoc2lkZWJhcikge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGNoYW5nZUFjdGl2ZU1lbnUoKSB7XG4gICAgICAgICAgICB2YXIgcGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcbiAgICAgICAgICAgIGRhdGEub3JnX21lbnVzLmZvckVhY2goZnVuY3Rpb24gKG1lbnUsIGtleSkge1xuICAgICAgICAgICAgICAgIGRhdGEub3JnX21lbnVzW2tleV1bJ2FjdGl2ZSddID0gbWVudS5wZXJtYWxpbmsgPT09IHBhdGggPyB0cnVlIDogZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCdhY3Rpdml0eScpIHx8XG4gICAgICAgICAgICAgICAgcGF0aC5pbmNsdWRlcygncmVzdWx0JykgfHxcbiAgICAgICAgICAgICAgICBwYXRoLmluY2x1ZGVzKCdpbmRpY2F0b3InKSkge1xuICAgICAgICAgICAgICAgIGRhdGEub3JnX21lbnVzWzBdWydhY3RpdmUnXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGF0aC5pbmNsdWRlcygnb3JnYW5pc2F0aW9uJykpIHtcbiAgICAgICAgICAgICAgICBkYXRhLm9yZ19tZW51c1sxXVsnYWN0aXZlJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhdGguaW5jbHVkZXMoJ2ltcG9ydCcpKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5vcmdfbWVudXNbM11bJ2FjdGl2ZSddID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCdkYXNoYm9hcmQnKSkge1xuICAgICAgICAgICAgICAgIGRhdGEuc3VwZXJhZG1pbl9tZW51c1swXVsnYWN0aXZlJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhdGguaW5jbHVkZXMoJ3VzZXJzJykpIHtcbiAgICAgICAgICAgICAgICBkYXRhLm9yZ19tZW51c1s0XVsnYWN0aXZlJ10gPSB0cnVlO1xuICAgICAgICAgICAgICAgIGRhdGEuc3VwZXJhZG1pbl9tZW51c1syXVsnYWN0aXZlJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhdGguaW5jbHVkZXMoJ2xpc3Qtb3JnYW5pc2F0aW9ucycpKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5zdXBlcmFkbWluX21lbnVzWzFdWydhY3RpdmUnXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGF0aC5pbmNsdWRlcygnc3lzdGVtLXZlcnNpb24nKSB8fFxuICAgICAgICAgICAgICAgIHBhdGguaW5jbHVkZXMoJ2xvZy12aWV3ZXInKSB8fFxuICAgICAgICAgICAgICAgIHBhdGguaW5jbHVkZXMoJ2xpbmszJykgfHxcbiAgICAgICAgICAgICAgICBwYXRoLmluY2x1ZGVzKCdsaW5rNCcpKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5zdXBlcmFkbWluX21lbnVzWzJdWydhY3RpdmUnXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gbG9jYWwgc3RvcmFnZSBmb3IgcHVibGlzaGluZ1xuICAgICAgICB2YXIgcGEgPSAoMCwgY29yZV8xLnVzZVN0b3JhZ2UpKCd2dWUtdXNlLWxvY2FsLXN0b3JhZ2UnLCB7XG4gICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllczogKF9iID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3B1Ymxpc2hpbmdBY3Rpdml0aWVzJykpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHt9LFxuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gbG9nb3V0KCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NfMS5kZWZhdWx0LnBvc3QoJy9sb2dvdXQnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnLyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogU2VhcmNoIGZ1bmN0aW9uYWxpdHlcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIHZhciBzZWFyY2hWYWx1ZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGN1cnJlbnRVUkwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICAgICAgaWYgKGN1cnJlbnRVUkwuaW5jbHVkZXMoJz8nKSkge1xuICAgICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaCwgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyksIHNlYXJjaCA9IHVybFBhcmFtcy5nZXQoJ3EnKTtcbiAgICAgICAgICAgIHNlYXJjaFZhbHVlLnZhbHVlID0gc2VhcmNoO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzcGlubmVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2VhcmNoRnVuY3Rpb24gPSBmdW5jdGlvbiAodXJsKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBzcGlubmVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBwYXJhbSA9IChfYSA9IHNlYXJjaFZhbHVlLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVwbGFjZSgnIycsICcnKTtcbiAgICAgICAgICAgIHZhciBzb3J0aW5nUGFyYW0gPSAnJztcbiAgICAgICAgICAgIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykgJiYgY3VycmVudFVSTC5pbmNsdWRlcygnJicpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaDtcbiAgICAgICAgICAgICAgICB2YXIgcXVlcnlTdHJpbmdBcnIgPSBxdWVyeVN0cmluZy5zcGxpdCgnJicpO1xuICAgICAgICAgICAgICAgIHNvcnRpbmdQYXJhbSA9ICcmJyArIHF1ZXJ5U3RyaW5nQXJyLnNsaWNlKDEpLmpvaW4oJyYnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBocmVmID0gcGFyYW1cbiAgICAgICAgICAgICAgICA/IFwiXCIuY29uY2F0KHVybCwgXCI/cT1cIikuY29uY2F0KHBhcmFtKS5jb25jYXQoc29ydGluZ1BhcmFtKVxuICAgICAgICAgICAgICAgIDogcHJvcHMuc3VwZXJBZG1pblxuICAgICAgICAgICAgICAgICAgICA/ICcvbGlzdC1vcmdhbmlzYXRpb25zJ1xuICAgICAgICAgICAgICAgICAgICA6ICcvYWN0aXZpdGllcy8nO1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBocmVmO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjaGFuZ2VBY3RpdmVNZW51KCk7XG4gICAgICAgICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ29wZW5BZGRNb2RlbCcpID09PSAndHJ1ZScgJiZcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgPT09ICcvYWN0aXZpdGllcycpIHtcbiAgICAgICAgICAgICAgICBtb2RhbFZhbHVlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciByZWRpcmVjdFByb2ZpbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvcHJvZmlsZSc7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ29wZW5BZGRNb2RlbCcpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgc3RvcmU6IHN0b3JlLCBwcm9wczogcHJvcHMsIHRyYW5zbGF0ZTogdHJhbnNsYXRlLCBzaG93VXNlckRyb3Bkb3duOiBzaG93VXNlckRyb3Bkb3duLCBzaG93QWN0aXZpdHlEcm9wZG93bjogc2hvd0FjdGl2aXR5RHJvcGRvd24sIHRvYXN0VmlzaWJpbGl0eTogdG9hc3RWaXNpYmlsaXR5LCBpc0xvYWRpbmc6IGlzTG9hZGluZywgZHJvcERvd25FbGVtZW50OiBkcm9wRG93bkVsZW1lbnQsIGFjdGl2aXR5RHJvcGRvd25IZWlnaHQ6IGFjdGl2aXR5RHJvcGRvd25IZWlnaHQsIHNob3dTaWRlYmFyOiBzaG93U2lkZWJhciwgdG9hc3RNZXNzYWdlOiB0b2FzdE1lc3NhZ2UsIHRvYXN0VHlwZTogdG9hc3RUeXBlLCBkYXRhOiBkYXRhLCBsaUNsYXNzOiBsaUNsYXNzLCBtb2RhbFZhbHVlOiBtb2RhbFZhbHVlLCBtb2RhbFRvZ2dsZTogbW9kYWxUb2dnbGUsIHRvYXN0OiB0b2FzdCwgaXNUb3VjaERldmljZTogaXNUb3VjaERldmljZSwgVG9nZ2xlTW9kZWw6IFRvZ2dsZU1vZGVsLCByb3RhdGVEcm9wZG93bkljb246IHJvdGF0ZURyb3Bkb3duSWNvbiwgdG9nZ2xlQWN0aXZpdHlEcm9wZG93bjogdG9nZ2xlQWN0aXZpdHlEcm9wZG93biwgY2hhbmdlQWN0aXZlTWVudTogY2hhbmdlQWN0aXZlTWVudSwgcGE6IHBhLCBsb2dvdXQ6IGxvZ291dCwgc2VhcmNoVmFsdWU6IHNlYXJjaFZhbHVlLCBjdXJyZW50VVJMOiBjdXJyZW50VVJMLCBzcGlubmVyOiBzcGlubmVyLCBzZWFyY2hGdW5jdGlvbjogc2VhcmNoRnVuY3Rpb24sIHJlZGlyZWN0UHJvZmlsZTogcmVkaXJlY3RQcm9maWxlLCBDcmVhdGVNb2RhbDogQ3JlYXRlTW9kYWxfdnVlXzEuZGVmYXVsdCwgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0aXRsZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL3RpdGxlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQnJlYWRDcnVtYicsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBicmVhZGNydW1iRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7IGdldEFjdGl2aXR5VGl0bGU6IHRpdGxlXzEuZGVmYXVsdCwgYnJlYWRjcnVtYkRhdGE6IGJyZWFkY3J1bWJEYXRhIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnQnVsa1B1Ymxpc2hpbmdFcnJvclBvcHVwJyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgYnVsa1B1Ymxpc2hTdGF0dXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgnYnVsa1B1Ymxpc2hTdGF0dXMnKTtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgYnVsa1B1Ymxpc2hTdGF0dXM6IGJ1bGtQdWJsaXNoU3RhdHVzLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYWN0aXZpdGllc18xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXNcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnQnVsa3B1Ymxpc2hXaXRoWGxzJyxcbiAgICBlbWl0czogWydjbG9zZScsICd0b2dnbGUnXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfYjtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZSwgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgYWN0aXZpdGllc18xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgcGEgPSAoMCwgY29yZV8xLnVzZVN0b3JhZ2UpKCd2dWUtdXNlLWxvY2FsLXN0b3JhZ2UnLCB7XG4gICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllczogKF9iID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3B1Ymxpc2hpbmdBY3Rpdml0aWVzJykpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHt9LFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgYnVsa1B1Ymxpc2hMZW5ndGggPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIG9wZW5Nb2RlbCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHBhU3RvcmFnZSA9ICgwLCB2dWVfMi5yZWYpKHN0b3JlLnN0YXRlLmJ1bGtwdWJsaXNoQWN0aXZpdGllcyk7XG4gICAgICAgIHZhciBwdWJsaXNoaW5nQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkocGFTdG9yYWdlLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzWydhY3Rpdml0aWVzJ10pO1xuICAgICAgICB2YXIgY29tcGxldGVkID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIHJlZnJlc2hUb2FzdE1zZyA9ICgwLCB2dWVfMi5pbmplY3QpKCdyZWZyZXNoVG9hc3RNc2cnKTtcbiAgICAgICAgdmFyIGFjdGl2aXRpZXMgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgaGFzRmFpbGVkQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgZGF0YToge30sXG4gICAgICAgICAgICBpZHM6IFtdLFxuICAgICAgICAgICAgc3RhdHVzOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGNvbXBsZXRlZC52YWx1ZSA9IChfYSA9IHBhU3RvcmFnZS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcy5zdGF0dXMpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICdwcm9jZXNzaW5nJztcbiAgICAgICAgICAgIGJ1bGtQdWJsaXNoU3RhdHVzKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgYnVsa1B1Ymxpc2hTdGF0dXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL2FjdGl2aXRpZXMvYnVsay1wdWJsaXNoLXN0YXR1c1wiKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAoJ2RhdGEnIGluIHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2aXRpZXMudmFsdWUgPSByZXNwb25zZS5kYXRhLmFjdGl2aXRpZXM7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZC52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICAvLyBzYXZpbmcgaW4gbG9jYWwgc3RvcmFnZVxuICAgICAgICAgICAgICAgICAgICBwYVN0b3JhZ2UudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMuYWN0aXZpdGllcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5kYXRhLmFjdGl2aXRpZXM7XG4gICAgICAgICAgICAgICAgICAgIHBhU3RvcmFnZS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcy5zdGF0dXMgPSByZXNwb25zZS5kYXRhLnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgcGFTdG9yYWdlLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzLm1lc3NhZ2UgPSByZXNwb25zZS5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLnN0YXR1cyAhPT0gJ2NvbXBsZXRlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvbGxpbmdGb3JCdWxrcHVibGlzaERhdGEoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkLnZhbHVlID0gJ2NvbXBsZXRlZCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YXIgcG9sbGluZ0ZvckJ1bGtwdWJsaXNoRGF0YSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgaW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChcIi9hY3Rpdml0aWVzL2J1bGstcHVibGlzaC1zdGF0dXNcIikudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2UucHVibGlzaGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJRCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ2RhdGEnIGluIHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllcy52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuYWN0aXZpdGllcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQudmFsdWUgPSByZXNwb25zZS5kYXRhLnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzYXZpbmcgaW4gbG9jYWwgc3RvcmFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhU3RvcmFnZS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcy5hY3Rpdml0aWVzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhU3RvcmFnZS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcy5zdGF0dXMgPSByZXNwb25zZS5kYXRhLnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYVN0b3JhZ2UudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMubWVzc2FnZSA9IHJlc3BvbnNlLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcGxldGVkLnZhbHVlID09PSAnY29tcGxldGVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsSUQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsZWRBY3Rpdml0aWVzKHBhU3RvcmFnZS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcy5hY3Rpdml0aWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoX2EgPSBoYXNGYWlsZWRBY3Rpdml0aWVzID09PSBudWxsIHx8IGhhc0ZhaWxlZEFjdGl2aXRpZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGhhc0ZhaWxlZEFjdGl2aXRpZXMuaWRzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZy52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZy5yZWZyZXNoTWVzc2FnZVR5cGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZy5yZWZyZXNoTWVzc2FnZSA9IHRyYW5zbGF0ZS5lcnJvcignc29tZV9hY3Rpdml0aWVzX2hhdmVfZmFpbGVkX3RvX3B1Ymxpc2hfcmVmcmVzaF90b19zZWVfY2hhbmdlcycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRvYXN0TXNnLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRvYXN0TXNnLnJlZnJlc2hNZXNzYWdlID0gdHJhbnNsYXRlLmVycm9yKCdhY3Rpdml0eV9oYXNfYmVlbl9wdWJsaXNoZWRfc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoVG9hc3RNc2cudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkLnZhbHVlID0gJ2NvbXBsZXRlZCc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sIDMwMDApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHJldHJ5UHVibGlzaGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vcmVzZXQgcmVxdWlyZWQgc3RhdGVzXG4gICAgICAgICAgICBjb21wbGV0ZWQudmFsdWUgPSAncHJvY2Vzc2luZyc7XG4gICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gaGFzRmFpbGVkQWN0aXZpdGllcy5kYXRhKSB7XG4gICAgICAgICAgICAgICAgaGFzRmFpbGVkQWN0aXZpdGllcy5kYXRhW2tleV0uc3RhdHVzID0gJ3Byb2Nlc3NpbmcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWN0aXZpdGllcy52YWx1ZSA9IGhhc0ZhaWxlZEFjdGl2aXRpZXMuZGF0YTtcbiAgICAgICAgICAgIC8vIGFwaSBlbmRwb2ludCBjYWxsXG4gICAgICAgICAgICB2YXIgZW5kcG9pbnQgPSBcIi9hY3Rpdml0aWVzL3N0YXJ0LWJ1bGstcHVibGlzaD9hY3Rpdml0aWVzPVtcIi5jb25jYXQoaGFzRmFpbGVkQWN0aXZpdGllcy5pZHMsIFwiXVwiKTtcbiAgICAgICAgICAgIGhhc0ZhaWxlZEFjdGl2aXRpZXMuc3RhdHVzID0gZmFsc2U7XG4gICAgICAgICAgICBoYXNGYWlsZWRBY3Rpdml0aWVzLmlkcyA9IFtdO1xuICAgICAgICAgICAgaGFzRmFpbGVkQWN0aXZpdGllcy5kYXRhID0ge307XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KGVuZHBvaW50KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBwYVN0b3JhZ2UudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBidWxrUHVibGlzaFN0YXR1cygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZmFpbGVkQWN0aXZpdGllcyA9IGZ1bmN0aW9uIChuZXN0ZWRPYmplY3QpIHtcbiAgICAgICAgICAgIHZhciBmYWlsZWRBY3Rpdml0aWVzSUQgPSBbXTtcbiAgICAgICAgICAgIHZhciBhc0FycmF5RGF0YSA9IG5lc3RlZE9iamVjdCAmJiBPYmplY3QuZW50cmllcyhuZXN0ZWRPYmplY3QpO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAgICAgdmFyIGZpbHRlcmVkID0gYXNBcnJheURhdGEgPT09IG51bGwgfHwgYXNBcnJheURhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFzQXJyYXlEYXRhLmZpbHRlcihmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0gX2FbMF0sIHZhbHVlID0gX2FbMV07XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlICYmIE9iamVjdC52YWx1ZXModmFsdWUpLmluZGV4T2YoJ2ZhaWxlZCcpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgZmFpbGVkQWN0aXZpdGllc0lELnB1c2godmFsdWUuYWN0aXZpdHlfaWQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIGZhaWxlZEFjdGl2aXRpZXNEYXRhID0gZmlsdGVyZWQgJiYgT2JqZWN0LmZyb21FbnRyaWVzKGZpbHRlcmVkKTtcbiAgICAgICAgICAgIGlmICgoZmFpbGVkQWN0aXZpdGllc0lEID09PSBudWxsIHx8IGZhaWxlZEFjdGl2aXRpZXNJRCA9PT0gdm9pZCAwID8gdm9pZCAwIDogZmFpbGVkQWN0aXZpdGllc0lELmxlbmd0aCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgaGFzRmFpbGVkQWN0aXZpdGllcy5zdGF0dXMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGhhc0ZhaWxlZEFjdGl2aXRpZXMuaWRzID0gZmFpbGVkQWN0aXZpdGllc0lEO1xuICAgICAgICAgICAgICAgIGhhc0ZhaWxlZEFjdGl2aXRpZXMuZGF0YSA9IGZhaWxlZEFjdGl2aXRpZXNEYXRhO1xuICAgICAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZy5yZWZyZXNoTWVzc2FnZVR5cGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZWZyZXNoVG9hc3RNc2cucmVmcmVzaE1lc3NhZ2UgPSB0cmFuc2xhdGUuZXJyb3IoJ3NvbWVfYWN0aXZpdGllc19oYXZlX2ZhaWxlZF90b19wdWJsaXNoX3JlZnJlc2hfdG9fc2VlX2NoYW5nZXMnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGhhc0ZhaWxlZEFjdGl2aXRpZXMuc3RhdHVzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaGFzRmFpbGVkQWN0aXZpdGllcy5pZHMgPSBbXTtcbiAgICAgICAgICAgICAgICBoYXNGYWlsZWRBY3Rpdml0aWVzLmRhdGEgPSB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNvbXBsZXRlZEFjdGl2aXRpZXMgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPFxuICAgICAgICAgICAgICAgICgoKF9hID0gcGFTdG9yYWdlLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucHVibGlzaGluZ0FjdGl2aXRpZXNbJ2FjdGl2aXRpZXMnXSkgJiZcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LnZhbHVlcygoX2IgPSBwYVN0b3JhZ2UudmFsdWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5wdWJsaXNoaW5nQWN0aXZpdGllc1snYWN0aXZpdGllcyddKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmxlbmd0aCk7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3QudmFsdWVzKHBhU3RvcmFnZS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllc1snYWN0aXZpdGllcyddKVtpXVsnc3RhdHVzJ10gPT09ICdjb21wbGV0ZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHBlcmNlbnRhZ2VXaWR0aCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIHJldHVybiAoKGNvbXBsZXRlZEFjdGl2aXRpZXMudmFsdWUgL1xuICAgICAgICAgICAgICAgICgoKF9hID0gcGEudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5wdWJsaXNoaW5nQWN0aXZpdGllc1snYWN0aXZpdGllcyddKSAmJlxuICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cygoX2IgPSBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnB1Ymxpc2hpbmdBY3Rpdml0aWVzWydhY3Rpdml0aWVzJ10pLmxlbmd0aCkpICpcbiAgICAgICAgICAgICAgICAxMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5idWxrcHVibGlzaEFjdGl2aXRpZXM7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNldERhdGFUb0xvY2Fsc3RvcmFnZSgpO1xuICAgICAgICAgICAgZ2V0RGF0YUZyb21Mb2NhbHN0b3JhZ2UoKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gb3Blbk1vZGVsLnZhbHVlOyB9LCBmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIGVtaXQoJ3RvZ2dsZScsIHZhbHVlKTsgfSk7XG4gICAgICAgIHZhciBnZXREYXRhRnJvbUxvY2Fsc3RvcmFnZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGFjdGl2aXRpZXMudmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnVsa1B1Ymxpc2hBY3Rpdml0aWVzJyk7XG4gICAgICAgICAgICBhY3Rpdml0aWVzLnZhbHVlID0gKDAsIHV0aWxzXzEuaXNKc29uKShhY3Rpdml0aWVzLnZhbHVlKSAmJiBKU09OLnBhcnNlKGFjdGl2aXRpZXMudmFsdWUpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgc2V0RGF0YVRvTG9jYWxzdG9yYWdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2J1bGtQdWJsaXNoQWN0aXZpdGllcycsIEpTT04uc3RyaW5naWZ5KHBhU3RvcmFnZS52YWx1ZSkpO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydEJ1bGtQdWJsaXNoJywgZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGVtcHR5YnVsa1B1Ymxpc2hTdGF0dXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBzdGF0dXNfMSBpbiBwdWJsaXNoaW5nQWN0aXZpdGllcykge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBwdWJsaXNoaW5nQWN0aXZpdGllc1tzdGF0dXNfMV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuYnVsa1B1Ymxpc2hMZW5ndGg7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGJ1bGtQdWJsaXNoTGVuZ3RoLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICBwYSA9ICgwLCBjb3JlXzEudXNlU3RvcmFnZSkoJ3Z1ZS11c2UtbG9jYWwtc3RvcmFnZScsIHtcbiAgICAgICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllczogKF9hID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3B1Ymxpc2hpbmdBY3Rpdml0aWVzJykpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHt9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzKCk7XG4gICAgICAgICAgICBidWxrUHVibGlzaFN0YXR1cygpO1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihwdWJsaXNoaW5nQWN0aXZpdGllcywgKF9iID0gcGEudmFsdWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5wdWJsaXNoaW5nQWN0aXZpdGllc1snYWN0aXZpdGllcyddKTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBzdG9yZTogc3RvcmUsIHBhOiBwYSwgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIGJ1bGtQdWJsaXNoTGVuZ3RoOiBidWxrUHVibGlzaExlbmd0aCwgb3Blbk1vZGVsOiBvcGVuTW9kZWwsIHBhU3RvcmFnZTogcGFTdG9yYWdlLCBwdWJsaXNoaW5nQWN0aXZpdGllczogcHVibGlzaGluZ0FjdGl2aXRpZXMsIGNvbXBsZXRlZDogY29tcGxldGVkLCBlbWl0OiBlbWl0LCByZWZyZXNoVG9hc3RNc2c6IHJlZnJlc2hUb2FzdE1zZywgYWN0aXZpdGllczogYWN0aXZpdGllcywgaGFzRmFpbGVkQWN0aXZpdGllczogaGFzRmFpbGVkQWN0aXZpdGllcywgYnVsa1B1Ymxpc2hTdGF0dXM6IGJ1bGtQdWJsaXNoU3RhdHVzLCByZXRyeVB1Ymxpc2hpbmc6IHJldHJ5UHVibGlzaGluZywgZmFpbGVkQWN0aXZpdGllczogZmFpbGVkQWN0aXZpdGllcywgY29tcGxldGVkQWN0aXZpdGllczogY29tcGxldGVkQWN0aXZpdGllcywgcGVyY2VudGFnZVdpZHRoOiBwZXJjZW50YWdlV2lkdGgsIGdldERhdGFGcm9tTG9jYWxzdG9yYWdlOiBnZXREYXRhRnJvbUxvY2Fsc3RvcmFnZSwgc2V0RGF0YVRvTG9jYWxzdG9yYWdlOiBzZXREYXRhVG9Mb2NhbHN0b3JhZ2UsIGVtcHR5YnVsa1B1Ymxpc2hTdGF0dXM6IGVtcHR5YnVsa1B1Ymxpc2hTdGF0dXMgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdCdXR0b25Db21wb25lbnQnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIHRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBpY29uOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGxpbms6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBhY3Rpdml0eUxlbmd0aDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgYnRuVHlwZSA9ICcnO1xuICAgICAgICBpZiAocHJvcHMudHlwZSA9PT0gJ3NlY29uZGFyeScpIHtcbiAgICAgICAgICAgIGJ0blR5cGUgPSAnc2Vjb25kYXJ5LWJ0biBmb250LWJvbGQnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHByb3BzLnR5cGUgPT09ICdvdXRsaW5lJykge1xuICAgICAgICAgICAgYnRuVHlwZSA9ICdwcmltYXJ5LW91dGxpbmUtYnRuJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwcm9wcy50eXBlID09PSAncHJpbWFyeScpIHtcbiAgICAgICAgICAgIGJ0blR5cGUgPSAncHJpbWFyeS1idG4gZm9udC1ib2xkJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGJ0blR5cGUgPSAnZm9udC1ib2xkJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBidG5UeXBlOiBidG5UeXBlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgZGF0ZV9mbnNfMSA9IHJlcXVpcmUoXCJkYXRlLWZuc1wiKTtcbnZhciB2dWVfZGF0ZXBpY2tlcl8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJAdnVlcGljL3Z1ZS1kYXRlcGlja2VyXCIpKTtcbnJlcXVpcmUoXCJAdnVlcGljL3Z1ZS1kYXRlcGlja2VyL2Rpc3QvbWFpbi5jc3NcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRGF0ZVJhbmdlV2lkZ2V0JyxcbiAgICBwcm9wczoge1xuICAgICAgICBkcm9wZG93blJhbmdlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiBmdW5jdGlvbiAoKSB7IHJldHVybiAoe30pOyB9LFxuICAgICAgICB9LFxuICAgICAgICBmaXJzdERhdGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkYXRlTGFiZWw6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBjdXJyZW50Vmlldzoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGNsZWFyRGF0ZToge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBzdGFydGluZ0RhdGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBlbmRpbmdEYXRlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF0ZU5hbWU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZW1pdHM6IFtcbiAgICAgICAgJ3RyaWdnZXJTZXREYXRlUmFuZ2UnLFxuICAgICAgICAndHJpZ2dlclNldERhdGVUeXBlJyxcbiAgICAgICAgJ2RhdGVDbGVhcmVkJyxcbiAgICBdLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZSwgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgc2VsZWN0ZWRQcmVzZW50SW5kZXggPSAoMCwgdnVlXzIucmVmKSg5OSk7XG4gICAgICAgIHZhciBkYXRlUmFuZ2VNYWluID0gKDAsIHZ1ZV8yLnJlZikobnVsbCk7XG4gICAgICAgIHZhciBkYXRlVHlwZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGRhdGVEcm9wZG93biA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBkYXRlVHlwZU5hbWUgPSAoMCwgdnVlXzIucmVmKShwcm9wcy5kYXRlTmFtZSk7XG4gICAgICAgIGRhdGVUeXBlLnZhbHVlID0gcHJvcHMuZHJvcGRvd25SYW5nZSAmJiBPYmplY3QudmFsdWVzKHByb3BzLmRyb3Bkb3duUmFuZ2UpWzBdO1xuICAgICAgICB2YXIgZGF0ZVR5cGVLZXkgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIGRhdGVUeXBlS2V5LnZhbHVlID0gcHJvcHMuZHJvcGRvd25SYW5nZSAmJiBPYmplY3Qua2V5cyhwcm9wcy5kcm9wZG93blJhbmdlKVswXTtcbiAgICAgICAgdmFyIHNob3dSYW5nZURyb3Bkb3duID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgaW5pdGlhbERhdGUgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHByb3BzLmZpcnN0RGF0ZTsgfSk7XG4gICAgICAgIHZhciBmaXhlZCA9ICgwLCB2dWVfMi5yZWYpKHByb3BzLmRhdGVOYW1lKTtcbiAgICAgICAgdmFyIHRvZGF5RGF0ZSA9ICgwLCBtb21lbnRfMS5kZWZhdWx0KShuZXcgRGF0ZSgpKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcbiAgICAgICAgdmFyIHNlbGVjdGVkRGF0ZSA9ICgwLCB2dWVfMi5yZWYpKFtcbiAgICAgICAgICAgIG5ldyBEYXRlKCksXG4gICAgICAgICAgICBuZXcgRGF0ZShuZXcgRGF0ZSgpLnNldERhdGUobmV3IERhdGUoKS5nZXREYXRlKCkgKyA3KSksXG4gICAgICAgIF0pO1xuICAgICAgICB2YXIgZGF0ZXBpY2tlciA9ICgwLCB2dWVfMi5yZWYpKG51bGwpO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzZWxlY3RlZERhdGUudmFsdWVbMF0gPSAnJztcbiAgICAgICAgICAgIHNlbGVjdGVkRGF0ZS52YWx1ZVsxXSA9IHRvZGF5RGF0ZTtcbiAgICAgICAgICAgIHRyaWdnZXJTZXREYXRlUmFuZ2UoJycsIHRvZGF5RGF0ZSwgZml4ZWQudmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBbcHJvcHMuZW5kaW5nRGF0ZSwgcHJvcHMuc3RhcnRpbmdEYXRlXTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHByb3BzLmVuZGluZ0RhdGUgJiYgcHJvcHMuc3RhcnRpbmdEYXRlKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRlLnZhbHVlWzBdID0gcHJvcHMuc3RhcnRpbmdEYXRlO1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0ZS52YWx1ZVsxXSA9IHByb3BzLmVuZGluZ0RhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgdmFyIGhhbmRsZVByZXNlbnRSYW5nZUl0ZW1DbGljayA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgICAgICAgdmFyIHByZXNlbnRSYW5nZUl0ZW1zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZHBfX3ByZXNldF9yYW5nZScpO1xuICAgICAgICAgICAgc2VsZWN0ZWRQcmVzZW50SW5kZXgudmFsdWUgPSBpbmRleDtcbiAgICAgICAgICAgIHByZXNlbnRSYW5nZUl0ZW1zW2luZGV4XS5jbGFzc0xpc3QuYWRkKCdwcmVzZXQtcmFuZ2UtaXRlbS1hY3RpdmUnKTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcHJlc2VudFJhbmdlSXRlbXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaiAhPT0gaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJlc2VudFJhbmdlSXRlbXNbal0uY2xhc3NMaXN0LnJlbW92ZSgncHJlc2V0LXJhbmdlLWl0ZW0tYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHByb3BzLmNsZWFyRGF0ZTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmVzZXREYXRlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZW1pdCgnZGF0ZUNsZWFyZWQnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgIHZhciBoYW5kbGVDYWxlbmRhckl0ZW1DbGljayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkUHJlc2VudEluZGV4LnZhbHVlID0gOTk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBhZGRFdmVudHNGb3JDYWxlbmRhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dSYW5nZURyb3Bkb3duLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgcHJlc2VudFJhbmdlSXRlbXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdkcF9fcHJlc2V0X3JhbmdlJyk7XG4gICAgICAgICAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIChpKSB7XG4gICAgICAgICAgICAgICAgcHJlc2VudFJhbmdlSXRlbXNbaV0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZVByZXNlbnRSYW5nZUl0ZW1DbGljayhpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByZXNlbnRSYW5nZUl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgX2xvb3BfMShpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBjYWxlbmRhckl0ZW1zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZHBfX2NhbGVuZGFyX2l0ZW0nKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FsZW5kYXJJdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNhbGVuZGFySXRlbXNbaV0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDYWxlbmRhckl0ZW1DbGljayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciByZW1vdmVFdmVudHNPZkNhbGVuZGFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHByZXNlbnRSYW5nZUl0ZW1zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZHBfX3ByZXNldF9yYW5nZScpO1xuICAgICAgICAgICAgdmFyIF9sb29wXzIgPSBmdW5jdGlvbiAoaSkge1xuICAgICAgICAgICAgICAgIHByZXNlbnRSYW5nZUl0ZW1zW2ldLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVQcmVzZW50UmFuZ2VJdGVtQ2xpY2soaSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmVzZW50UmFuZ2VJdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIF9sb29wXzIoaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgY2FsZW5kYXJJdGVtcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2RwX19jYWxlbmRhcl9pdGVtJyk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhbGVuZGFySXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjYWxlbmRhckl0ZW1zW2ldLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2FsZW5kYXJJdGVtQ2xpY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgdG9nZ2xlU2hvd1JhbmdlRHJvcGRvd24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaG93UmFuZ2VEcm9wZG93bi52YWx1ZSA9ICFzaG93UmFuZ2VEcm9wZG93bi52YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHJlc2V0RGF0ZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyU2V0RGF0ZVJhbmdlKCcnLCAnJyk7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRlLnZhbHVlWzBdID0gJyc7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRlLnZhbHVlWzFdID0gJyc7XG4gICAgICAgICAgICAgICAgZml4ZWQudmFsdWUgPSAnQWxsIHRpbWUnO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCB7IHN1Y2Nlc3M6IHRydWUgfV07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgIHZhciBwcmVzZXRSYW5nZXMgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1RvZGF5JyxcbiAgICAgICAgICAgICAgICByYW5nZTogWygwLCBkYXRlX2Zuc18xLnN0YXJ0T2ZEYXkpKG5ldyBEYXRlKCkpLCAoMCwgZGF0ZV9mbnNfMS5lbmRPZkRheSkobmV3IERhdGUoKSldLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1RoaXMgd2VlaycsXG4gICAgICAgICAgICAgICAgcmFuZ2U6IFsoMCwgZGF0ZV9mbnNfMS5zdGFydE9mV2VlaykobmV3IERhdGUoKSksICgwLCBkYXRlX2Zuc18xLmVuZE9mRGF5KShuZXcgRGF0ZSgpKV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnTGFzdCA3IGRheXMnLFxuICAgICAgICAgICAgICAgIHJhbmdlOiBbKDAsIGRhdGVfZm5zXzEuc3ViRGF5cykobmV3IERhdGUoKSwgNiksICgwLCBkYXRlX2Zuc18xLmVuZE9mRGF5KShuZXcgRGF0ZSgpKV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnVGhpcyBtb250aCcsXG4gICAgICAgICAgICAgICAgcmFuZ2U6IFsoMCwgZGF0ZV9mbnNfMS5zdGFydE9mTW9udGgpKG5ldyBEYXRlKCkpLCAoMCwgZGF0ZV9mbnNfMS5lbmRPZk1vbnRoKShuZXcgRGF0ZSgpKV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnTGFzdCA2IG1vbnRoJyxcbiAgICAgICAgICAgICAgICByYW5nZTogWygwLCBkYXRlX2Zuc18xLnN0YXJ0T2ZNb250aCkoKDAsIGRhdGVfZm5zXzEuc3ViTW9udGhzKShuZXcgRGF0ZSgpLCA2KSksICgwLCBkYXRlX2Zuc18xLmVuZE9mTW9udGgpKG5ldyBEYXRlKCkpXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdUaGlzIHllYXInLFxuICAgICAgICAgICAgICAgIHJhbmdlOiBbKDAsIGRhdGVfZm5zXzEuc3RhcnRPZlllYXIpKG5ldyBEYXRlKCkpLCAoMCwgZGF0ZV9mbnNfMS5lbmRPZkRheSkobmV3IERhdGUoKSldLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0xhc3QgMTIgbW9udGhzJyxcbiAgICAgICAgICAgICAgICByYW5nZTogWygwLCBkYXRlX2Zuc18xLnN0YXJ0T2ZNb250aCkoKDAsIGRhdGVfZm5zXzEuc3ViTW9udGhzKShuZXcgRGF0ZSgpLCAxMikpLCAoMCwgZGF0ZV9mbnNfMS5lbmRPZkRheSkobmV3IERhdGUoKSldLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0FsbCB0aW1lJyxcbiAgICAgICAgICAgICAgICByYW5nZTogW25ldyBEYXRlKGluaXRpYWxEYXRlLnZhbHVlKSwgKDAsIGRhdGVfZm5zXzEuZW5kT2ZEYXkpKG5ldyBEYXRlKCkpXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07IH0pO1xuICAgICAgICB2YXIgY29udmVydERhdGUgPSBmdW5jdGlvbiAoZGF0ZSkge1xuICAgICAgICAgICAgdmFyIGRhdGVPYmogPSBuZXcgRGF0ZShkYXRlKTtcbiAgICAgICAgICAgIHZhciB5ZWFyID0gZGF0ZU9iai5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgdmFyIG1vbnRoID0gU3RyaW5nKGRhdGVPYmouZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICAgICAgICB2YXIgZGF5ID0gU3RyaW5nKGRhdGVPYmouZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KHllYXIsIFwiLVwiKS5jb25jYXQobW9udGgsIFwiLVwiKS5jb25jYXQoZGF5KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIG9wZW5DYWxlbmRhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChkYXRlcGlja2VyLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgZGF0ZXBpY2tlci52YWx1ZS5vcGVuTWVudSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgY2xvc2VDYWxlbmRhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChkYXRlcGlja2VyLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlRXZlbnRzT2ZDYWxlbmRhcigpO1xuICAgICAgICAgICAgICAgIGRhdGVwaWNrZXIudmFsdWUuY2xvc2VNZW51KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZWxlY3REYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGRhdGVwaWNrZXIudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBkYXRlcGlja2VyLnZhbHVlLnNlbGVjdERhdGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGZvcm1hdCA9IGZ1bmN0aW9uIChkYXRlcykge1xuICAgICAgICAgICAgdmFyIHRlbXBBcnJheSA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHRlbXBBcnJheVtpXSA9IGRhdGVzW2ldLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tVVMnLCB7XG4gICAgICAgICAgICAgICAgICAgIG1vbnRoOiAnc2hvcnQnLFxuICAgICAgICAgICAgICAgICAgICBkYXk6ICdudW1lcmljJyxcbiAgICAgICAgICAgICAgICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRlbXBBcnJheS5qb2luKCcgLSAnKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNsb3NlRGF0ZURyb3Bkb3duID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd1JhbmdlRHJvcGRvd24udmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzaG93UmFuZ2VEcm9wZG93bi52YWx1ZTsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZURhdGVEcm9wZG93bik7XG4gICAgICAgICAgICAgICAgKF9hID0gZGF0ZVJhbmdlTWFpbi52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywga2VlcE1vZGVsT3Blbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGNsb3NlRGF0ZURyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICAoX2IgPSBkYXRlUmFuZ2VNYWluLnZhbHVlKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBrZWVwTW9kZWxPcGVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBrZWVwTW9kZWxPcGVuID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBbc2VsZWN0ZWREYXRlXTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHN0YXJ0RGF0ZSA9IHNlbGVjdGVkRGF0ZS52YWx1ZSAmJiBzZWxlY3RlZERhdGUudmFsdWVbMF1cbiAgICAgICAgICAgICAgICA/IGNvbnZlcnREYXRlKHNlbGVjdGVkRGF0ZS52YWx1ZVswXSlcbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICAgICAgdmFyIGVuZERhdGUgPSBzZWxlY3RlZERhdGUudmFsdWUgJiYgc2VsZWN0ZWREYXRlLnZhbHVlWzFdXG4gICAgICAgICAgICAgICAgPyBjb252ZXJ0RGF0ZShzZWxlY3RlZERhdGUudmFsdWVbMV0pXG4gICAgICAgICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgICAgIGlmIChzdGFydERhdGUgJiYgZW5kRGF0ZSkge1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkUHJlc2VudERheVRleHQoKTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyU2V0RGF0ZVJhbmdlKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgZml4ZWQudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gW2RhdGVUeXBlXTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdHJpZ2dlclNldERhdGVUeXBlKGRhdGVUeXBlS2V5LnZhbHVlKTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtwcm9wcy5jdXJyZW50Vmlld107IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkRGF0ZS52YWx1ZVswXSA9ICcnO1xuICAgICAgICAgICAgc2VsZWN0ZWREYXRlLnZhbHVlWzFdID0gJyc7XG4gICAgICAgICAgICBmaXhlZC52YWx1ZSA9ICdBbGwgdGltZSc7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgdmFyIHRyaWdnZXJTZXREYXRlUmFuZ2UgPSBmdW5jdGlvbiAoc3RhcnREYXRlLCBlbmREYXRlLCBmaWx0ZXJlZERhdGVUeXBlKSB7XG4gICAgICAgICAgICBpZiAoZmlsdGVyZWREYXRlVHlwZSA9PT0gdm9pZCAwKSB7IGZpbHRlcmVkRGF0ZVR5cGUgPSAnJzsgfVxuICAgICAgICAgICAgZW1pdCgndHJpZ2dlclNldERhdGVSYW5nZScsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgZmlsdGVyZWREYXRlVHlwZSk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gcHJvcHMuZGF0ZU5hbWU7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgZGF0ZVR5cGVOYW1lLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZpeGVkLnZhbHVlOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgc3RhcnREYXRlID0gc2VsZWN0ZWREYXRlLnZhbHVlICYmIHNlbGVjdGVkRGF0ZS52YWx1ZVswXVxuICAgICAgICAgICAgICAgID8gY29udmVydERhdGUoc2VsZWN0ZWREYXRlLnZhbHVlWzBdKVxuICAgICAgICAgICAgICAgIDogZmFsc2U7XG4gICAgICAgICAgICB2YXIgZW5kRGF0ZSA9IHNlbGVjdGVkRGF0ZS52YWx1ZSAmJiBzZWxlY3RlZERhdGUudmFsdWVbMV1cbiAgICAgICAgICAgICAgICA/IGNvbnZlcnREYXRlKHNlbGVjdGVkRGF0ZS52YWx1ZVsxXSlcbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHN0YXJ0RGF0ZSAmJiBlbmREYXRlKSB7XG4gICAgICAgICAgICAgICAgdHJpZ2dlclNldERhdGVSYW5nZShzdGFydERhdGUsIGVuZERhdGUsIGZpeGVkLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB0cmlnZ2VyU2V0RGF0ZVR5cGUgPSBmdW5jdGlvbiAoZXZlbnRUeXBlKSB7XG4gICAgICAgICAgICBlbWl0KCd0cmlnZ2VyU2V0RGF0ZVR5cGUnLCBldmVudFR5cGUpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgc2V0U2VsZWN0ZWRQcmVzZW50RGF5VGV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBmaXhlZC52YWx1ZSA9XG4gICAgICAgICAgICAgICAgKF9iID0gKF9hID0gcHJlc2V0UmFuZ2VzLnZhbHVlW3NlbGVjdGVkUHJlc2VudEluZGV4LnZhbHVlXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxhYmVsKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnQ3VzdG9tJztcbiAgICAgICAgICAgIC8vIHNlbGVjdGVkUHJlc2VudEluZGV4LnZhbHVlID0gOTk7XG4gICAgICAgICAgICBpZiAoZGF0ZVR5cGVOYW1lLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgZml4ZWQudmFsdWUgPSBkYXRlVHlwZU5hbWUudmFsdWU7XG4gICAgICAgICAgICAgICAgZGF0ZVR5cGVOYW1lLnZhbHVlID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjdXN0b21Qb3NpdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2U7XG4gICAgICAgICAgICB2YXIgbGVmdFBvc2l0aW9uID0gMDtcbiAgICAgICAgICAgIGlmIChkYXRlUmFuZ2VNYWluLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbGVmdFBvc2l0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmlubmVyV2lkdGggLSAoKF9iID0gKF9hID0gZGF0ZVJhbmdlTWFpbi52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucmlnaHQpID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDE1MFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBOdW1iZXIoKF9jID0gZGF0ZVJhbmdlTWFpbi52YWx1ZSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0KSAtIDMwMFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBOdW1iZXIoKF9kID0gZGF0ZVJhbmdlTWFpbi52YWx1ZSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0KSAtIDQyMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdG9wOiBOdW1iZXIoKF9lID0gZGF0ZVJhbmdlTWFpbi52YWx1ZSkgPT09IG51bGwgfHwgX2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSkgKyAyMCxcbiAgICAgICAgICAgICAgICBsZWZ0OiBsZWZ0UG9zaXRpb24sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgc2V0RGF0ZVJhbmdlVHlwZUluRHJvcGRvd24gPSBmdW5jdGlvbiAodmFsdWUsIGtleSkge1xuICAgICAgICAgICAgc2hvd1JhbmdlRHJvcGRvd24udmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGRhdGVUeXBlLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICBkYXRlVHlwZUtleS52YWx1ZSA9IGtleTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgcHJvcHM6IHByb3BzLCBzZWxlY3RlZFByZXNlbnRJbmRleDogc2VsZWN0ZWRQcmVzZW50SW5kZXgsIGRhdGVSYW5nZU1haW46IGRhdGVSYW5nZU1haW4sIGRhdGVUeXBlOiBkYXRlVHlwZSwgZGF0ZURyb3Bkb3duOiBkYXRlRHJvcGRvd24sIGRhdGVUeXBlTmFtZTogZGF0ZVR5cGVOYW1lLCBkYXRlVHlwZUtleTogZGF0ZVR5cGVLZXksIHNob3dSYW5nZURyb3Bkb3duOiBzaG93UmFuZ2VEcm9wZG93biwgZW1pdDogZW1pdCwgaW5pdGlhbERhdGU6IGluaXRpYWxEYXRlLCBmaXhlZDogZml4ZWQsIHRvZGF5RGF0ZTogdG9kYXlEYXRlLCBzZWxlY3RlZERhdGU6IHNlbGVjdGVkRGF0ZSwgZGF0ZXBpY2tlcjogZGF0ZXBpY2tlciwgaGFuZGxlUHJlc2VudFJhbmdlSXRlbUNsaWNrOiBoYW5kbGVQcmVzZW50UmFuZ2VJdGVtQ2xpY2ssIGhhbmRsZUNhbGVuZGFySXRlbUNsaWNrOiBoYW5kbGVDYWxlbmRhckl0ZW1DbGljaywgYWRkRXZlbnRzRm9yQ2FsZW5kYXI6IGFkZEV2ZW50c0ZvckNhbGVuZGFyLCByZW1vdmVFdmVudHNPZkNhbGVuZGFyOiByZW1vdmVFdmVudHNPZkNhbGVuZGFyLCB0b2dnbGVTaG93UmFuZ2VEcm9wZG93bjogdG9nZ2xlU2hvd1JhbmdlRHJvcGRvd24sIHJlc2V0RGF0ZTogcmVzZXREYXRlLCBwcmVzZXRSYW5nZXM6IHByZXNldFJhbmdlcywgY29udmVydERhdGU6IGNvbnZlcnREYXRlLCBvcGVuQ2FsZW5kYXI6IG9wZW5DYWxlbmRhciwgY2xvc2VDYWxlbmRhcjogY2xvc2VDYWxlbmRhciwgc2VsZWN0RGF0ZTogc2VsZWN0RGF0ZSwgZm9ybWF0OiBmb3JtYXQsIGNsb3NlRGF0ZURyb3Bkb3duOiBjbG9zZURhdGVEcm9wZG93biwga2VlcE1vZGVsT3Blbjoga2VlcE1vZGVsT3BlbiwgdHJpZ2dlclNldERhdGVSYW5nZTogdHJpZ2dlclNldERhdGVSYW5nZSwgdHJpZ2dlclNldERhdGVUeXBlOiB0cmlnZ2VyU2V0RGF0ZVR5cGUsIHNldFNlbGVjdGVkUHJlc2VudERheVRleHQ6IHNldFNlbGVjdGVkUHJlc2VudERheVRleHQsIGN1c3RvbVBvc2l0aW9uOiBjdXN0b21Qb3NpdGlvbiwgc2V0RGF0ZVJhbmdlVHlwZUluRHJvcGRvd246IHNldERhdGVSYW5nZVR5cGVJbkRyb3Bkb3duLCBWdWVEYXRlUGlja2VyOiB2dWVfZGF0ZXBpY2tlcl8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnRGVzY3JpcHRpb25Gb3JtJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge30sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICByZXR1cm4geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8zID0gcmVxdWlyZShcIkBoZWFkbGVzc3VpL3Z1ZVwiKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdFcnJvck1lc3NhZ2UnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGlzRW1wdHk6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgc2hvdyA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGhhc0Vycm9ycyA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVycm9yQ291bnQgPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMi5pbmplY3QpKCd0b2FzdERhdGEnKTtcbiAgICAgICAgdmFyIGVycm9yRGF0YSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgYWNjb3VudF92ZXJpZmllZDogZmFsc2UsXG4gICAgICAgICAgICBwdWJsaXNoZXJfYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHRfc2V0dGluZzogZmFsc2UsXG4gICAgICAgICAgICBwdWJsaXNoZXJfc2V0dGluZzogZmFsc2UsXG4gICAgICAgICAgICB0b2tlbl9zdGF0dXM6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlzTG9hZGVyVmlzaWJsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgZnVuY3Rpb24gcmVzZW5kVmVyaWZpY2F0aW9uRW1haWwoKSB7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy91c2VyL3ZlcmlmaWNhdGlvbi9lbWFpbCcpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gZXJyb3IuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIC5hbGwoW1xuICAgICAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvc2V0dGluZy9zdGF0dXMnKSxcbiAgICAgICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL3VzZXIvdmVyaWZpY2F0aW9uL3N0YXR1cycpLFxuICAgICAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvb3JnYW5pc2F0aW9uL3N0YXR1cycpLFxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGF4aW9zXzEuZGVmYXVsdC5zcHJlYWQoZnVuY3Rpb24gKHNldHRpbmdfcmVzLCB1c2VyX3Jlcywgb3JnX3Jlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gc2V0dGluZ19yZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHVzZXJfcmVzcG9uc2UgPSB1c2VyX3Jlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICB2YXIgb3JnX3Jlc3BvbnNlID0gb3JnX3Jlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEuZGVmYXVsdF9zZXR0aW5nID0gKF9hID0gcmVzcG9uc2UgPT09IG51bGwgfHwgcmVzcG9uc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3BvbnNlLmRhdGEpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kZWZhdWx0X3N0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLnB1Ymxpc2hlcl9zZXR0aW5nID0gKF9iID0gcmVzcG9uc2UgPT09IG51bGwgfHwgcmVzcG9uc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3BvbnNlLmRhdGEpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5wdWJsaXNoZXJfc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEudG9rZW5fc3RhdHVzID0gKF9jID0gcmVzcG9uc2UgPT09IG51bGwgfHwgcmVzcG9uc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3BvbnNlLmRhdGEpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy50b2tlbl9zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS5hY2NvdW50X3ZlcmlmaWVkID0gdXNlcl9yZXNwb25zZS5kYXRhLmFjY291bnRfdmVyaWZpZWQ7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wdWJsaXNoZXJfYWN0aXZlID0gb3JnX3Jlc3BvbnNlLmRhdGEucHVibGlzaGVyX2FjdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGdyb3VwZWRFcnJvciA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdkZWZhdWx0X3NldHRpbmcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3B1Ymxpc2hlcl9zZXR0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b2tlbl9zdGF0dXMnLFxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlcnJvciBpbiBlcnJvckRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXJyb3JEYXRhW2Vycm9yXSAmJiBncm91cGVkRXJyb3IuaW5kZXhPZihlcnJvcikgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JDb3VudC52YWx1ZSArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGVycm9yRGF0YS5wdWJsaXNoZXJfc2V0dGluZyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLnRva2VuX3N0YXR1cyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLmRlZmF1bHRfc2V0dGluZykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yQ291bnQudmFsdWUgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnZhbHVlcyhlcnJvckRhdGEpLmluZGV4T2YoZmFsc2UpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0Vycm9ycy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHNob3c6IHNob3csIGhhc0Vycm9yczogaGFzRXJyb3JzLCBlcnJvckNvdW50OiBlcnJvckNvdW50LCB0b2FzdERhdGE6IHRvYXN0RGF0YSwgZXJyb3JEYXRhOiBlcnJvckRhdGEsIGlzTG9hZGVyVmlzaWJsZTogaXNMb2FkZXJWaXNpYmxlLCByZXNlbmRWZXJpZmljYXRpb25FbWFpbDogcmVzZW5kVmVyaWZpY2F0aW9uRW1haWwsIFRyYW5zaXRpb25Sb290OiB2dWVfMy5UcmFuc2l0aW9uUm9vdCwgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdFcnJvclBvcFVwJyxcbiAgICBwcm9wczoge1xuICAgICAgICBtZXNzYWdlOiB7XG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIHR5cGU6IEFycmF5IHx8IFN0cmluZyxcbiAgICAgICAgfSxcbiAgICAgICAgdGl0bGU6IHsgdHlwZTogU3RyaW5nLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgZW1pdHM6IFsnY2xvc2UtcG9wdXAnXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2UsIGVtaXQgPSBfYS5lbWl0O1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBlbWl0KCdjbG9zZS1wb3B1cCcsICdjbG9zZWQnKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCBlbWl0OiBlbWl0LCBwcm9wczogcHJvcHMsIGNsb3NlOiBjbG9zZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIHByb3BzOiB7XG4gICAgICAgIG5hbWU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBob3ZlclRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJ3ctNjAnLFxuICAgICAgICB9LFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGxpbms6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBpY29uU2l6ZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIHNob3dJYXRpUmVmZXJlbmNlOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHJldHVybiB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdMb2FkZXJDbXAnLFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdNdWx0aVNlbGVjdFdpdGhTZWFyY2gnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGxpc3RJdGVtczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGhlYWRlcjoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBlbWl0czogWydjaGFuZ2VTZWxlY3RlZFB1Ymxpc2hlcicsICdjbG9zZSddLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZSwgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgdGVtcExpc3RJdGVtcyA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hlclR5cGVNdWx0aXNlbGVjdCA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMocHJvcHMubGlzdEl0ZW1zKTtcbiAgICAgICAgdmFyIHNlYXJjaElucHV0ID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgY2hlY2tlZEJveGVzID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgY2hhbmdlU2VsZWN0ZWRQdWJsaXNoZXIgPSBmdW5jdGlvbiAoc2VsZWN0ZWRQdWJsaXNoZXJUeXBlKSB7XG4gICAgICAgICAgICBlbWl0KCdjaGFuZ2VTZWxlY3RlZFB1Ymxpc2hlcicsIHNlbGVjdGVkUHVibGlzaGVyVHlwZSk7XG4gICAgICAgIH07XG4gICAgICAgIGZvcm1hdFB1Ymxpc2hlclR5cGUoKTtcbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0UHVibGlzaGVyVHlwZSgpIHtcbiAgICAgICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMocHJvcHMubGlzdEl0ZW1zKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHRlbXBMaXN0SXRlbXMudmFsdWUucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGtleToga2V5c1tpXSxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzLmxpc3RJdGVtc1trZXlzW2ldXSxcbiAgICAgICAgICAgICAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwdWJsaXNoZXJUeXBlTXVsdGlzZWxlY3QudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBrZWVwUHVibGlzaGVyTW9kZWxPcGVuKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vbkJlZm9yZVVubW91bnQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHB1Ymxpc2hlclR5cGVNdWx0aXNlbGVjdC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGtlZXBQdWJsaXNoZXJNb2RlbE9wZW4pO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHNob3dOb0RhdGFDb21wb25lbnQgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICB0ZW1wTGlzdEl0ZW1zLnZhbHVlLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLnNob3cpIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiAhY291bnQ7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdXBkYXRlQXJyYXlCeVNlYXJjaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzZWFyY2hTdHJpbmcgPSBzZWFyY2hJbnB1dC52YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSB0ZW1wTGlzdEl0ZW1zLnZhbHVlW2ldO1xuICAgICAgICAgICAgICAgIHRlbXBMaXN0SXRlbXMudmFsdWVbaV0uc2hvdyA9IGl0ZW0ubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKHNlYXJjaFN0cmluZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBrZWVwUHVibGlzaGVyTW9kZWxPcGVuID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGFwcGx5RmlsdGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZW1pdCgnY2xvc2UnKTtcbiAgICAgICAgICAgIGNoYW5nZVNlbGVjdGVkUHVibGlzaGVyKGNoZWNrZWRCb3hlcy52YWx1ZSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgdGVtcExpc3RJdGVtczogdGVtcExpc3RJdGVtcywgcHVibGlzaGVyVHlwZU11bHRpc2VsZWN0OiBwdWJsaXNoZXJUeXBlTXVsdGlzZWxlY3QsIGVtaXQ6IGVtaXQsIGtleXM6IGtleXMsIHNlYXJjaElucHV0OiBzZWFyY2hJbnB1dCwgY2hlY2tlZEJveGVzOiBjaGVja2VkQm94ZXMsIGNoYW5nZVNlbGVjdGVkUHVibGlzaGVyOiBjaGFuZ2VTZWxlY3RlZFB1Ymxpc2hlciwgZm9ybWF0UHVibGlzaGVyVHlwZTogZm9ybWF0UHVibGlzaGVyVHlwZSwgc2hvd05vRGF0YUNvbXBvbmVudDogc2hvd05vRGF0YUNvbXBvbmVudCwgdXBkYXRlQXJyYXlCeVNlYXJjaDogdXBkYXRlQXJyYXlCeVNlYXJjaCwga2VlcFB1Ymxpc2hlck1vZGVsT3Blbjoga2VlcFB1Ymxpc2hlck1vZGVsT3BlbiwgYXBwbHlGaWx0ZXI6IGFwcGx5RmlsdGVyLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBwcm9wczoge1xuICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdGV4dDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGJ0blRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBidG5MaW5rOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1BvcHVwTW9kYWwnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG1vZGFsQWN0aXZlOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG5vUGFkZGluZzoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJzgwOScsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBlbWl0czogWydjbG9zZScsICdyZXNldCddLFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBwcm9wcy5tb2RhbEFjdGl2ZTsgfSwgZnVuY3Rpb24gKG1vZGFsQWN0aXZlKSB7XG4gICAgICAgICAgICBpZiAobW9kYWxBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIGVtaXQoJ2Nsb3NlJyk7XG4gICAgICAgICAgICBlbWl0KCdyZXNldCcpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4geyBjbG9zZTogY2xvc2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlM19yYWRpYWxfcHJvZ3Jlc3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwidnVlMy1yYWRpYWwtcHJvZ3Jlc3NcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgUmFkaWFsUHJvZ3Jlc3NCYXI6IHZ1ZTNfcmFkaWFsX3Byb2dyZXNzXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIHBlcmNlbnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IDAsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBjb21wbGV0ZWRQZXJjZW50ID0gKDAsIHZ1ZV8xLnJlZikocHJvcHMucGVyY2VudCk7XG4gICAgICAgIHZhciB0b3RhbFBlcmNlbnQgPSAoMCwgdnVlXzEucmVmKSgxMDApO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29tcGxldGVkUGVyY2VudDogY29tcGxldGVkUGVyY2VudCxcbiAgICAgICAgICAgIHRvdGFsUGVyY2VudDogdG90YWxQZXJjZW50LFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBTaGltbWVyTG9hZGluZ192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9TaGltbWVyTG9hZGluZy52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1RhYmxlTG9hZGVyQ29tcG9uZW50JyxcbiAgICBwcm9wczoge1xuICAgICAgICByb3dDb3VudDogeyB0eXBlOiBOdW1iZXIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGNvbENvdW50OiB7IHR5cGU6IE51bWJlciwgcmVxdWlyZWQ6IGZhbHNlLCBkZWZhdWx0OiAxIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBTaGltbWVyTG9hZGluZzogU2hpbW1lckxvYWRpbmdfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdQYWdpbmF0aW9uQ29tcG9uZW50JyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZW1pdHM6IFsnZmV0Y2hBY3Rpdml0aWVzJ10sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGVtaXQgPSBfYS5lbWl0O1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBhY3RpdmVfcGFnZSA9ICgwLCB2dWVfMS5yZWYpKDEpO1xuICAgICAgICB2YXIgbGFzdF9wYWdlbGlzdCA9ICgwLCB2dWVfMS5yZWYpKCk7XG4gICAgICAgIHZhciBtaWRfcGFnZWxpc3QgPSAoMCwgdnVlXzEucmVmKSgpO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHByb3BzLnJlc2V0OyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGFjdGl2ZV9wYWdlLnZhbHVlID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoYWN0aXZlX3BhZ2UsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGVtaXQoJ2ZldGNoQWN0aXZpdGllcycsIGFjdGl2ZV9wYWdlLnZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBsYXN0cGFnZXMgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBsYXN0X3BhZ2VsaXN0LnZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIG1pZHBhZ2VzID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gbWlkX3BhZ2VsaXN0LnZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlQWN0aXZlUGFnZShwYWdlKSB7XG4gICAgICAgICAgICBhY3RpdmVfcGFnZS52YWx1ZSA9IHBhZ2U7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gY2hhbmdlUGFnZShwYWdlTnVtKSB7XG4gICAgICAgICAgICBhY3RpdmVfcGFnZS52YWx1ZSA9IHBhZ2VOdW07XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gbmV4dFBhZ2UoKSB7XG4gICAgICAgICAgICBhY3RpdmVfcGFnZS52YWx1ZSA9XG4gICAgICAgICAgICAgICAgYWN0aXZlX3BhZ2UudmFsdWUgPT09IHByb3BzLmRhdGEubGFzdF9wYWdlID8gMSA6IGFjdGl2ZV9wYWdlLnZhbHVlICsgMTtcbiAgICAgICAgfVxuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFjdGl2ZV9wYWdlLnZhbHVlOyB9LCBmdW5jdGlvbiAoY3VycmVudFBhZ2UpIHtcbiAgICAgICAgICAgIGxhc3RfcGFnZWxpc3QudmFsdWUgPSBBcnJheS5mcm9tKEFycmF5KHByb3BzLmRhdGEubGFzdF9wYWdlKSwgZnVuY3Rpb24gKF8sIGluZGV4KSB7IHJldHVybiBpbmRleCArIDE7IH0pO1xuICAgICAgICAgICAgbGFzdF9wYWdlbGlzdC52YWx1ZSA9IGxhc3RfcGFnZWxpc3QudmFsdWUuZmlsdGVyKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAodmFsdWUgPiBwcm9wcy5kYXRhLmxhc3RfcGFnZSAtIDUgJiYgcHJvcHMuZGF0YS5sYXN0X3BhZ2UgIT0gdmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBtaWRfcGFnZWxpc3QudmFsdWUgPSBBcnJheS5mcm9tKEFycmF5KGN1cnJlbnRQYWdlICsgMiksIGZ1bmN0aW9uIChfLCBpbmRleCkgeyByZXR1cm4gaW5kZXggKyAxOyB9KTtcbiAgICAgICAgICAgIG1pZF9wYWdlbGlzdC52YWx1ZSA9IG1pZF9wYWdlbGlzdC52YWx1ZS5maWx0ZXIoZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlID4gY3VycmVudFBhZ2UgLSAzO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBmdW5jdGlvbiBwcmV2aW91c1BhZ2UoKSB7XG4gICAgICAgICAgICBhY3RpdmVfcGFnZS52YWx1ZSA9XG4gICAgICAgICAgICAgICAgYWN0aXZlX3BhZ2UudmFsdWUgPT09IDEgPyBwcm9wcy5kYXRhLmxhc3RfcGFnZSA6IGFjdGl2ZV9wYWdlLnZhbHVlIC0gMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgYWN0aXZlX3BhZ2U6IGFjdGl2ZV9wYWdlLFxuICAgICAgICAgICAgdXBkYXRlQWN0aXZlUGFnZTogdXBkYXRlQWN0aXZlUGFnZSxcbiAgICAgICAgICAgIG5leHRQYWdlOiBuZXh0UGFnZSxcbiAgICAgICAgICAgIHByZXZpb3VzUGFnZTogcHJldmlvdXNQYWdlLFxuICAgICAgICAgICAgY2hhbmdlUGFnZTogY2hhbmdlUGFnZSxcbiAgICAgICAgICAgIGxhc3RwYWdlczogbGFzdHBhZ2VzLFxuICAgICAgICAgICAgbWlkcGFnZXM6IG1pZHBhZ2VzLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdUb2FzdE1lc3NhZ2UnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG1lc3NhZ2U6IHsgdHlwZTogU3RyaW5nLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICB0eXBlOiB7IHR5cGU6IEJvb2xlYW4sIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgY2xhc3NOYW1lID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICBjbGFzc05hbWUudmFsdWUgPVxuICAgICAgICAgICAgcHJvcHMudHlwZSA9PT0gdHJ1ZVxuICAgICAgICAgICAgICAgID8gJ3JvdW5kZWQtbGcgYmctbWludCBib3JkZXIgYm9yZGVyLXNwcmluZy01MCBweS0zIHB4LTUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSB0ZXh0LXNtIGxlYWRpbmctbm9ybWFsIHRleHQtbi01MCdcbiAgICAgICAgICAgICAgICA6ICdyb3VuZGVkLWxnIGJnLWNyaW1zb24tMTAgYm9yZGVyIGJvcmRlci1jcmltc29uLTIwIHB5LTMgcHgtNSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHRleHQtc20gbGVhZGluZy1ub3JtYWwgdGV4dC1uLTUwJztcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgcHJvcHM6IHByb3BzLCBjbGFzc05hbWU6IGNsYXNzTmFtZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1hsc0xpc3RFcnJvcicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgLy8gTnVtYmVyIHdpdGggYSBkZWZhdWx0IHZhbHVlXG4gICAgICAgIGltcG9ydERhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDogeyB0eXBlOiBOdW1iZXIsIHJlcXVpcmVkOiBmYWxzZSwgZGVmYXVsdDogMCB9LFxuICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGluZGV4OiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBzaG93RXJyb3JzID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0NyaXRpY2FsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgY3JpdGljYWxUb2dnbGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93RXJyb3IgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBlcnJvclRvZ2dsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHdhcm5pbmdUb2dnbGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93V2FybmluZyA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVycm9yTGVuZ3RoID0gZnVuY3Rpb24gKGN1cnJlbnRFcnJvcikge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICAoKF9hID0gcHJvcHMuYWN0aXZpdHkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5lcnJvcnNbY3VycmVudEVycm9yXSkgJiZcbiAgICAgICAgICAgICAgICAoKF9iID0gT2JqZWN0LnZhbHVlcyhwcm9wcy5hY3Rpdml0eVsnZXJyb3JzJ11bY3VycmVudEVycm9yXSkpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gT2JqZWN0LmtleXMoaXRlbSkubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHRpdGxlID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgICAgIHN3aXRjaCAocHJvcHMuc3RhdHVzWyd0ZW1wbGF0ZSddKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnYWN0aXZpdHknOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuYWN0aXZpdHkuZGF0YS50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAoX2EgPSBwcm9wcy5hY3Rpdml0eS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ1VudGl0bGVkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnVW50aXRsZWQnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3Jlc3VsdCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5hY3Rpdml0eS5kYXRhLnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IChfYiA9IHByb3BzLmFjdGl2aXR5LmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJ1VudGl0bGVkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnVW50aXRsZWQnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3BlcmlvZCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoKHByb3BzLmFjdGl2aXR5LmRhdGEucGVyaW9kX3N0YXJ0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5hY3Rpdml0eS5kYXRhLnBlcmlvZF9zdGFydFswXS5kYXRlKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAnIC0gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAocHJvcHMuYWN0aXZpdHkuZGF0YS5wZXJpb2RfZW5kICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuYWN0aXZpdHkuZGF0YS5wZXJpb2RfZW5kWzBdLmRhdGUpKTtcbiAgICAgICAgICAgICAgICBjYXNlICdpbmRpY2F0b3InOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuYWN0aXZpdHkuZGF0YS50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAoX2MgPSBwcm9wcy5hY3Rpdml0eS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10pICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6ICdVbnRpdGxlZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ1VudGl0bGVkJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1VudGl0bGVkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjb3VudEVycm9ycyA9IGZ1bmN0aW9uIChhY3Rpdml0eUluZGV4KSB7XG4gICAgICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICAgICAgZm9yICh2YXIgdHlwZSBpbiBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXSkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGluZGV4IGluIHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddW3R5cGVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ11bdHlwZV1baW5kZXhdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNyaXRpY2FsQWNjb3JkaW9uVG9nZ2xlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHNob3dDcml0aWNhbC52YWx1ZSA9ICFzaG93Q3JpdGljYWwudmFsdWU7XG4gICAgICAgICAgICB2YXIgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmNyaXRpY2FsLWRyb3Bkb3duLWNvbnRhaW5lcicpO1xuICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gKF9hID0gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJy5jcml0aWNhbC1kcm9wZG93bicpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgaWYgKGNyaXRpY2FsVG9nZ2xlLnZhbHVlICYmIHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgY3JpdGljYWxUb2dnbGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogYXV0bztcIjtcbiAgICAgICAgICAgICAgICB9LCA2MDApO1xuICAgICAgICAgICAgICAgIGNyaXRpY2FsVG9nZ2xlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHdhcm5pbmdBY2NvcmRpb25Ub2dnbGUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgc2hvd1dhcm5pbmcudmFsdWUgPSAhc2hvd1dhcm5pbmcudmFsdWU7XG4gICAgICAgICAgICB2YXIgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLndhcm5pbmctZHJvcGRvd24tY29udGFpbmVyJyk7XG4gICAgICAgICAgICB2YXIgZWxIZWlnaHQgPSAoX2EgPSB0YXJnZXQgPT09IG51bGwgfHwgdGFyZ2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YXJnZXQucXVlcnlTZWxlY3RvcignLndhcm5pbmctZHJvcGRvd24nKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIGlmICh3YXJuaW5nVG9nZ2xlLnZhbHVlICYmIHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgd2FybmluZ1RvZ2dsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBhdXRvO1wiO1xuICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgd2FybmluZ1RvZ2dsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBlcnJvckFjY29yZGlvblRvZ2dsZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBzaG93RXJyb3IudmFsdWUgPSAhc2hvd0Vycm9yLnZhbHVlO1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRUYXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5lcnJvci1kcm9wZG93bi1jb250YWluZXInKTtcbiAgICAgICAgICAgIHZhciBlbEhlaWdodCA9IChfYSA9IHRhcmdldCA9PT0gbnVsbCB8fCB0YXJnZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhcmdldC5xdWVyeVNlbGVjdG9yKCcuZXJyb3ItZHJvcGRvd24nKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIGlmIChlcnJvclRvZ2dsZS52YWx1ZSAmJiB0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJcIjtcbiAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgIGVycm9yVG9nZ2xlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IGF1dG87XCI7XG4gICAgICAgICAgICAgICAgfSwgNjAwKTtcbiAgICAgICAgICAgICAgICBlcnJvclRvZ2dsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHNob3dFcnJvcnM6IHNob3dFcnJvcnMsIHNob3dDcml0aWNhbDogc2hvd0NyaXRpY2FsLCBjcml0aWNhbFRvZ2dsZTogY3JpdGljYWxUb2dnbGUsIHNob3dFcnJvcjogc2hvd0Vycm9yLCBlcnJvclRvZ2dsZTogZXJyb3JUb2dnbGUsIHdhcm5pbmdUb2dnbGU6IHdhcm5pbmdUb2dnbGUsIHNob3dXYXJuaW5nOiBzaG93V2FybmluZywgcHJvcHM6IHByb3BzLCBlcnJvckxlbmd0aDogZXJyb3JMZW5ndGgsIHRpdGxlOiB0aXRsZSwgY291bnRFcnJvcnM6IGNvdW50RXJyb3JzLCBjcml0aWNhbEFjY29yZGlvblRvZ2dsZTogY3JpdGljYWxBY2NvcmRpb25Ub2dnbGUsIHdhcm5pbmdBY2NvcmRpb25Ub2dnbGU6IHdhcm5pbmdBY2NvcmRpb25Ub2dnbGUsIGVycm9yQWNjb3JkaW9uVG9nZ2xlOiBlcnJvckFjY29yZGlvblRvZ2dsZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHNwaW5uZXJMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vc3Bpbm5lckxvYWRlci52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdYbHNMb2FkZXInLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGFjdGl2aXR5TmFtZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlZDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICB0b3RhbENvdW50OiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIgfHwgbnVsbCxcbiAgICAgICAgICAgIGRlZmF1bHQ6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHByb2Nlc3NlZENvdW50OiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICBkZWZhdWx0OiAwLFxuICAgICAgICB9LFxuICAgICAgICB4bHNGYWlsZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ2Nsb3NlJ10sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGN1cnJlbnRBY3Rpdml0eSA9ICgwLCB2dWVfMi5yZWYpKG51bGwpO1xuICAgICAgICB2YXIgbWF4aW1pemUgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgc2hvd01pbmltaXplZE1vZGVsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgbWFwQWN0aXZpdHlOYW1lID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2FjdGl2aXR5JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdCYXNpYyBBY3Rpdml0eSBFbGVtZW50cyc7XG4gICAgICAgICAgICAgICAgY2FzZSAncGVyaW9kJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdQZXJpb2QnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2luZGljYXRvcic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnSW5kaWNhdG9ycyBleGNlcHQgUGVyaW9kJztcbiAgICAgICAgICAgICAgICBjYXNlICdyZXN1bHQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1Jlc3VsdCBleGNlcHQgSW5kaWNhdG9ycyBhbmQgUGVyaW9kJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHJldHJ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIi9pbXBvcnQveGxzXCIpO1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2ltcG9ydC94bHMnO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbWF4aW1pemUnKSA9PT0gJ2ZhbHNlJ1xuICAgICAgICAgICAgICAgID8gKG1heGltaXplLnZhbHVlID0gZmFsc2UpXG4gICAgICAgICAgICAgICAgOiAobWF4aW1pemUudmFsdWUgPSB0cnVlKTtcbiAgICAgICAgICAgIGN1cnJlbnRBY3Rpdml0eS52YWx1ZSA9IG1hcEFjdGl2aXR5TmFtZShwcm9wcy5hY3Rpdml0eU5hbWUpO1xuICAgICAgICAgICAgdmFyIGNoZWNrU3VwcG9ydEJ1dHRvbiA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgc3VwcG9ydEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNsYXVuY2hlcicpO1xuICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0QnV0dG9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1cHBvcnRCdXR0b24uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZXkoLTUwcHgpJztcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja1N1cHBvcnRCdXR0b24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIDEwKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gbWF4aW1pemUudmFsdWU7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHNob3dNaW5pbWl6ZWRNb2RlbC52YWx1ZSA9IHRydWUpOyB9LCAyNjApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2hvd01pbmltaXplZE1vZGVsLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbWF4aW1pemUnLCB2YWx1ZS50b1N0cmluZygpKTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdtYXhpbWl6ZScsICcnKTtcbiAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICBpZiAoc3VwcG9ydEJ1dHRvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHN1cHBvcnRCdXR0b24uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZXkoMHB4KSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcGVyY2VudGFnZVdpZHRoID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAocHJvcHMudG90YWxDb3VudCAhPT0gMCAmJiBwcm9wcy50b3RhbENvdW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChwcm9wcy5wcm9jZXNzZWRDb3VudCAvIHByb3BzLnRvdGFsQ291bnQpICogMTAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocHJvcHMuY29tcGxldGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDEwMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHhsc0ZhaWxlZE1lc3NhZ2UgPSAoMCwgdnVlXzIuaW5qZWN0KSgneGxzRmFpbGVkTWVzc2FnZScpO1xuICAgICAgICB2YXIgcHJvY2Vzc2luZyA9ICgwLCB2dWVfMi5pbmplY3QpKCdwcm9jZXNzaW5nJyk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGN1cnJlbnRBY3Rpdml0eTogY3VycmVudEFjdGl2aXR5LCBtYXhpbWl6ZTogbWF4aW1pemUsIHNob3dNaW5pbWl6ZWRNb2RlbDogc2hvd01pbmltaXplZE1vZGVsLCBwcm9wczogcHJvcHMsIG1hcEFjdGl2aXR5TmFtZTogbWFwQWN0aXZpdHlOYW1lLCByZXRyeTogcmV0cnksIHBlcmNlbnRhZ2VXaWR0aDogcGVyY2VudGFnZVdpZHRoLCB4bHNGYWlsZWRNZXNzYWdlOiB4bHNGYWlsZWRNZXNzYWdlLCBwcm9jZXNzaW5nOiBwcm9jZXNzaW5nLCBzcGlubmVyTG9hZGVyOiBzcGlubmVyTG9hZGVyX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEFjdGl2aXR5RG93bmxvYWRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vQWN0aXZpdHlEb3dubG9hZC52dWVcIikpO1xudmFyIFhsc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9YbHNMb2FkZXIudnVlXCIpKTtcbnZhciBCdWxrcHVibGlzaFdpdGhYbHNfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZVwiKSk7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdYbHNVcGxvYWRJbmRpY2F0b3InLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGFjdGl2aXR5TmFtZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlZDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICB0b3RhbENvdW50OiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIgfHwgbnVsbCxcbiAgICAgICAgICAgIGRlZmF1bHQ6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHByb2Nlc3NlZENvdW50OiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICBkZWZhdWx0OiAwLFxuICAgICAgICB9LFxuICAgICAgICB4bHNGYWlsZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgeGxzRGF0YToge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF9iO1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG4gICAgICAgIHZhciBzaG93WGxzU3RhdHVzID0gKDAsIHZ1ZV8yLnJlZikodHJ1ZSk7XG4gICAgICAgIHZhciBkb3dubG9hZENvbXBsZXRlZCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvZ2dsZUJ1bGtQdWJsaXNoID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgY2FuY2VsRG93bmxvYWQgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93QnVsa3B1Ymxpc2ggPSAoMCwgdnVlXzIucmVmKSh0cnVlKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hpbmdBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgYnVsa1B1Ymxpc2hMZW5ndGggPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIHBhID0gKDAsIGNvcmVfMS51c2VTdG9yYWdlKSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywge1xuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IChfYiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwdWJsaXNoaW5nQWN0aXZpdGllcycpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiB7fSxcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzLnZhbHVlID1cbiAgICAgICAgICAgICAgICBwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcyAmJiBPYmplY3Qua2V5cyhwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcyk7XG4gICAgICAgICAgICB2YXIgY2hlY2tTdXBwb3J0QnV0dG9uID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRCdXR0b24gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRleSgtNTBweCknO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIShwcm9wcy54bHNEYXRhICYmIHNob3dYbHNTdGF0dXMpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhKGRvd25sb2FkaW5nICYmICFkb3dubG9hZENvbXBsZXRlZC52YWx1ZSAmJiAhY2FuY2VsRG93bmxvYWQudmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93QnVsa3B1Ymxpc2ggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllcy52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzdXBwb3J0QnV0dG9uLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGUoLTM1MHB4ICwwcHgpJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrU3VwcG9ydEJ1dHRvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMTApO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBbc3RvcmUuc3RhdGUuc3RhcnRCdWxrUHVibGlzaCwgc3RvcmUuc3RhdGUuYnVsa3B1Ymxpc2hBY3Rpdml0aWVzXTsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllcy52YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtwdWJsaXNoQWN0aXZpdGllcy5wdWJsaXNoaW5nQWN0aXZpdGllcyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoc3RvcmUuc3RhdGUuYnVsa3B1Ymxpc2hBY3Rpdml0aWVzLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKTtcbiAgICAgICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllcy52YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgIHBhLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuc3RhcnRCdWxrUHVibGlzaDsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd0J1bGtwdWJsaXNoLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHByb3BzLnhsc0RhdGE7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc2hvd1hsc1N0YXR1cy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtcbiAgICAgICAgICAgIHByb3BzLnhsc0RhdGEsXG4gICAgICAgICAgICBzaG93WGxzU3RhdHVzLnZhbHVlLFxuICAgICAgICAgICAgZG93bmxvYWRpbmcsXG4gICAgICAgICAgICBkb3dubG9hZENvbXBsZXRlZC52YWx1ZSxcbiAgICAgICAgICAgIGNhbmNlbERvd25sb2FkLnZhbHVlLFxuICAgICAgICAgICAgdG9nZ2xlQnVsa1B1Ymxpc2gudmFsdWUsXG4gICAgICAgIF07IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICBpZiAoIXNob3dYbHNQb3B1cC52YWx1ZSAmJlxuICAgICAgICAgICAgICAgICFzaG93RG93bmxvYWRQb3B1cC52YWx1ZSAmJlxuICAgICAgICAgICAgICAgIHNob3dCdWxrUHVibGlzaFBvcHVwICYmXG4gICAgICAgICAgICAgICAgdG9nZ2xlQnVsa1B1Ymxpc2gudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRCdXR0b24gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRCdXR0b24uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZSgtMzUwcHggLDBweCknO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0QnV0dG9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1cHBvcnRCdXR0b24uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZXkoLTUwcHgpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgc2hvd0J1bGtQdWJsaXNoUG9wdXAgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiAoc2hvd0J1bGtwdWJsaXNoLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgYWN0aXZpdGllcy52YWx1ZSAmJlxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGFjdGl2aXRpZXMudmFsdWUpLmxlbmd0aCA+IDApO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHNob3dEb3dubG9hZFBvcHVwID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZG93bmxvYWRpbmcudmFsdWUgJiYgIWRvd25sb2FkQ29tcGxldGVkLnZhbHVlICYmICFjYW5jZWxEb3dubG9hZC52YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBzaG93WGxzUG9wdXAgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBwcm9wcy54bHNEYXRhICYmIHNob3dYbHNTdGF0dXMudmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICBpZiAoc3VwcG9ydEJ1dHRvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChidWxrUHVibGlzaExlbmd0aC52YWx1ZSA+IDAgfHxcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocGEudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlKC0zNTBweCAsLTIwcHgpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN1cHBvcnRCdXR0b24uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVkoLTY1cHgpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2xvc2VCdWxrcHVibGlzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dCdWxrcHVibGlzaC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Z1ZS11c2UtbG9jYWwtc3RvcmFnZScsICdwdWJsaXNoaW5nQWN0aXZpdGllczp7fScpO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUJ1bGtwdWJsaXNoQWN0aXZpdGllcycsIHt9KTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5kZWxldGUoXCIvYWN0aXZpdGllcy9kZWxldGUtYnVsay1wdWJsaXNoLXN0YXR1c1wiKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNsb3NlWGxzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd1hsc1N0YXR1cy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIi9pbXBvcnQveGxzXCIpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVDYW5jZWxVcGxvYWQnLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQ2xvc2VYbHNNb2RlbCcsIHRydWUpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUNsb3NlWGxzTW9kZWwnLCBmYWxzZSk7IH0sIDIwMDApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuY29tcGxldGVYbHNEb3dubG9hZDsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBkb3dubG9hZENvbXBsZXRlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkb3dubG9hZENvbXBsZXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuYnVsa1B1Ymxpc2hMZW5ndGg7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgYnVsa1B1Ymxpc2hMZW5ndGgudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLmNhbmNlbERvd25sb2FkOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGNhbmNlbERvd25sb2FkLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgdmFyIGRvd25sb2FkaW5nID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2Rvd25sb2FkaW5nJyk7XG4gICAgICAgIHZhciBhY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2FjdGl2aXRpZXMnKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgc3RvcmU6IHN0b3JlLCBzaG93WGxzU3RhdHVzOiBzaG93WGxzU3RhdHVzLCBkb3dubG9hZENvbXBsZXRlZDogZG93bmxvYWRDb21wbGV0ZWQsIHRvZ2dsZUJ1bGtQdWJsaXNoOiB0b2dnbGVCdWxrUHVibGlzaCwgY2FuY2VsRG93bmxvYWQ6IGNhbmNlbERvd25sb2FkLCBzaG93QnVsa3B1Ymxpc2g6IHNob3dCdWxrcHVibGlzaCwgcHVibGlzaGluZ0FjdGl2aXRpZXM6IHB1Ymxpc2hpbmdBY3Rpdml0aWVzLCBidWxrUHVibGlzaExlbmd0aDogYnVsa1B1Ymxpc2hMZW5ndGgsIHBhOiBwYSwgcHJvcHM6IHByb3BzLCBzaG93QnVsa1B1Ymxpc2hQb3B1cDogc2hvd0J1bGtQdWJsaXNoUG9wdXAsIHNob3dEb3dubG9hZFBvcHVwOiBzaG93RG93bmxvYWRQb3B1cCwgc2hvd1hsc1BvcHVwOiBzaG93WGxzUG9wdXAsIGNsb3NlQnVsa3B1Ymxpc2g6IGNsb3NlQnVsa3B1Ymxpc2gsIGNsb3NlWGxzOiBjbG9zZVhscywgZG93bmxvYWRpbmc6IGRvd25sb2FkaW5nLCBhY3Rpdml0aWVzOiBhY3Rpdml0aWVzLCBBY3Rpdml0eURvd25sb2FkOiBBY3Rpdml0eURvd25sb2FkX3Z1ZV8xLmRlZmF1bHQsIFhsc0xvYWRlcjogWGxzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIEJ1bGtwdWJsaXNoV2l0aFhsczogQnVsa3B1Ymxpc2hXaXRoWGxzX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbi8vY29tcG9uZW50XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIFByb2dyZXNzTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZVwiKSk7XG4vLyBWdWV4IFN0b3JlXG52YXIgaW5kZXhfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL2luZGV4XCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdEZWxldGVCdXR0b24nLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG4gICAgICAgIC8vIHRvZ2dsZSBzdGF0ZSBmb3IgbW9kYWwgcG9wdXBcbiAgICAgICAgdmFyIF9iID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIGRlbGV0ZVZhbHVlID0gX2JbMF0sIGRlbGV0ZVRvZ2dsZSA9IF9iWzFdO1xuICAgICAgICAvLyBkaXNwbGF5L2hpZGUgdmFsaWRhdG9yIGxvYWRlclxuICAgICAgICB2YXIgbG9hZGVyID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGUuY29tbW9uVGV4dCgncGxlYXNlX3dhaXQnKSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGNhbGwgYXBpIGZvciB1bnB1Ymxpc2hpbmdcbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMi5pbmplY3QpKCd0b2FzdE1lc3NhZ2UnKTtcbiAgICAgICAgdmFyIGRlbGV0ZUZ1bmN0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGxvYWRlci50ZXh0ID0gKDAsIHZ1ZV8yLmNhcGl0YWxpemUpKHRyYW5zbGF0ZS5ldmVudCgnZGVsZXRpbmcnKSk7XG4gICAgICAgICAgICBkZWxldGVWYWx1ZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIGRlbGV0ZUVuZFBvaW50ID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KHN0b3JlLnN0YXRlLnNlbGVjdGVkQWN0aXZpdGllcyk7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZGVsZXRlKGRlbGV0ZUVuZFBvaW50KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnR5cGUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKCcvYWN0aXZpdGllcycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHN0b3JlOiBzdG9yZSwgZGVsZXRlVmFsdWU6IGRlbGV0ZVZhbHVlLCBkZWxldGVUb2dnbGU6IGRlbGV0ZVRvZ2dsZSwgbG9hZGVyOiBsb2FkZXIsIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLCBkZWxldGVGdW5jdGlvbjogZGVsZXRlRnVuY3Rpb24sIGNhcGl0YWxpemU6IHZ1ZV8yLmNhcGl0YWxpemUsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsIExvYWRlcjogUHJvZ3Jlc3NMb2FkZXJfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0xpbmtCdXR0b24nLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIHRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBsaW5rOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgaWNvbjoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJ2VkaXQnLFxuICAgICAgICB9LFxuICAgICAgICBkZXNpZ246IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICdpY29uVGV4dCcsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkZXNpZ24gPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGVzaWduO1xuICAgICAgICB2YXIgc3R5bGVUeXBlID0gZGVzaWduLnZhbHVlO1xuICAgICAgICB2YXIgY2xhc3NlcyA9ICcnO1xuICAgICAgICBzd2l0Y2ggKHN0eWxlVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnYmdUZXh0JzpcbiAgICAgICAgICAgICAgICBjbGFzc2VzID0gJ2ZsZXggaXRlbXMtY2VudGVyIGJnLW4tMTAgcC0xIHRleHQtdGlueSBmb250LWJvbGQgdXBwZXJjYXNlJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY2xhc3NlcyA9XG4gICAgICAgICAgICAgICAgICAgICdmbGV4IGl0ZW1zLWNlbnRlciBmb250LWJvbGQgbGVhZGluZy1ub3JtYWwgdXBwZXJjYXNlIHRleHQtdGlueSc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgY2xhc3NlczogY2xhc3NlcyB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG4vL2NvbXBvbmVudFxudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBQcm9ncmVzc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIikpO1xuLy8gVnVleCBTdG9yZVxudmFyIHNob3dfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL3Nob3dcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1B1Ymxpc2hCdXR0b24nLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHR5cGU6IHsgdHlwZTogU3RyaW5nLCBkZWZhdWx0OiAncHJpbWFyeScgfSxcbiAgICAgICAgbGlua2VkVG9JYXRpOiB7IHR5cGU6IEJvb2xlYW4sIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHN0YXR1czogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGNvcmVDb21wbGV0ZWQ6IHsgdHlwZTogQm9vbGVhbiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgYWN0aXZpdHlJZDogeyB0eXBlOiBOdW1iZXIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBfYiA9ICgwLCB2dWVfMi50b1JlZnMpKHByb3BzKSwgbGlua2VkVG9JYXRpID0gX2IubGlua2VkVG9JYXRpLCBzdGF0dXMgPSBfYi5zdGF0dXMsIGNvcmVDb21wbGV0ZWQgPSBfYi5jb3JlQ29tcGxldGVkLCBhY3Rpdml0eUlkID0gX2IuYWN0aXZpdHlJZDtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uVXBkYXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGxvYWRlci52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVJc0xvYWRpbmcnLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVJc0xvYWRpbmcnLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobG9hZGVyLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcHVibGlzaFZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHVibGlzaFZhbHVlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHVibGlzaFN0ZXAudmFsdWUgPT09IDEpIHtcbiAgICAgICAgICAgICAgICBwdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHB1Ymxpc2hTdGVwLnZhbHVlID09PSAzIHx8XG4gICAgICAgICAgICAgICAgcHVibGlzaFN0ZXAudmFsdWUgPT09IDIgfHxcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RlcC52YWx1ZSA9PT0gNCkge1xuICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hWYWx1ZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogIEdsb2JhbCBTdGF0ZVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIHNob3dfMS5kZXRhaWxTdG9yZSkoKTtcbiAgICAgICAgLy9hY3Rpdml0eSBpZFxuICAgICAgICB2YXIgaWQgPSBhY3Rpdml0eUlkLnZhbHVlO1xuICAgICAgICAvLyB0b2dnbGUgc3RhdGUgZm9yIG1vZGFsIHBvcHVwXG4gICAgICAgIHZhciBfYyA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBwdWJsaXNoVmFsdWUgPSBfY1swXSwgcHVibGlzaFRvZ2dsZSA9IF9jWzFdO1xuICAgICAgICAvLyBzdGF0ZSBmb3Igc3RlcCBvZiB0aGUgZmxvd1xuICAgICAgICB2YXIgcHVibGlzaFN0ZXAgPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgLy8gZGlzcGxheS9oaWRlIHZhbGlkYXRvciBsb2FkZXJcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgLy8gc3RhdGUgZm9yIGZpcnN0IHN0ZXBcbiAgICAgICAgLy8gZGV0ZXJtaW5lIGlmIGNvcmUgZWxlbWVudCBjb21wbGV0ZWQgb3Igbm90XG4gICAgICAgIC8vIHRydWUgZm9yIGNvbXBsZXRlZCBhbmQgZmFsc2UgZm9yIG5vdCBjb21wbGV0ZWRcbiAgICAgICAgdmFyIGNvcmVFbGVtZW50U3RhdHVzID0gY29yZUNvbXBsZXRlZC52YWx1ZTtcbiAgICAgICAgLy8gRHluYW1pYyB0ZXh0IGZvciBsb2FkZXJcbiAgICAgICAgdmFyIGxvYWRlclRleHQgPSAoMCwgdnVlXzIucmVmKSh0cmFuc2xhdGUuY29tbW9uVGV4dCgncGxlYXNlX3dhaXQnKSk7XG4gICAgICAgIC8vIHJlc2V0IHN0ZXAgdG8gemVybyBhZnRlciBjbG9zaW5nIG1vZGFsXG4gICAgICAgIHZhciByZXNldFB1Ymxpc2hTdGVwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcHVibGlzaFN0ZXAudmFsdWUgPSAwO1xuICAgICAgICAgICAgcHVibGlzaFZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICAgIC8vIGNvbXB1dGVkIGZ1bmN0aW9uIHRvIGNoYW5nZSBjb250ZW50IG9mIG1vZGFsXG4gICAgICAgIHZhciBwdWJsaXNoU3RhdGVDaGFuZ2UgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBwdWJsaXNoU3RhdGUgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJycsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgICAgICAgICAgIGljb246ICcnLFxuICAgICAgICAgICAgICAgIGFsZXJ0U3RhdGU6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciB0aXRsZSA9ICcnLCBkZXNjcmlwdGlvbiA9ICcnLCBpY29uID0gJ3RpY2snO1xuICAgICAgICAgICAgLy8gZGlmZmVyZW50IGNvbnRlbnQgZm9yIHN0ZXAgMSBiYXNlZCBvbiBjb3JlRWxlbWVudCBzdGF0dXNcbiAgICAgICAgICAgIGlmIChjb3JlRWxlbWVudFN0YXR1cykge1xuICAgICAgICAgICAgICAgIHRpdGxlID0gdHJhbnNsYXRlLmNvbW1vblRleHQoJ2NvcmVfZWxlbWVudHNfY29tcGxldGVkJyk7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSB0cmFuc2xhdGUuY29tbW9uVGV4dCgnY29uZ3JhdHVsYXRpb25zX2FsbF90aGVfY29yZV9lbGVtZW50c19hcmVfY29tcGxldGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRpdGxlID0gdHJhbnNsYXRlLmNvbW1vblRleHQoJ2NvcmVfZWxlbWVudHNfbm90X2NvbXBsZXRlJyk7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSB0cmFuc2xhdGUuY29tbW9uVGV4dCgndGhlcmVfaXNfbWlzc2luZ19kYXRhX2luX3NvbWVfb2ZfdGhlX2NvcmVfZWxlbWVudHMnKTtcbiAgICAgICAgICAgICAgICBpY29uID0gJ3dhcm5pbmctZmlsbCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvL2NyZWF0aW5nIGEgc2hvcnRlciB2YXJpYWJsZSBzbyB0aGF0IGJ1aWxkaW5nIGVycm9yIGRlc2NyaXB0aW9uIGZvciBjYXNlIDMgYW5kIDQgYmVjb21lcyBlYXNpZXJcbiAgICAgICAgICAgIHZhciBzID0gdHJhbnNsYXRlLmdldFN0aWNreU9iamVjdCgnY29tbW9uJyk7XG4gICAgICAgICAgICBzd2l0Y2ggKHB1Ymxpc2hTdGVwLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgLy8gZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLnRpdGxlID0gdGl0bGU7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuaWNvbiA9IGljb247XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5hbGVydFN0YXRlID0gY29yZUVsZW1lbnRTdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIC8vc2Vjb25kIHN0ZXBcbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS50aXRsZSA9IHRyYW5zbGF0ZS5zdGlja3lUZXh0KCdhY3Rpdml0eV93aWxsX2JlX3ZhbGlkYXRlZF9iZWZvcmVfcHVibGlzaGluZycpO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuZGVzY3JpcHRpb24gPSB0cmFuc2xhdGUuc3RpY2t5VGV4dCgndGhpc19hY3Rpdml0eV93aWxsX2JlX2ZpcnN0X3ZhbGlkYXRlZF9iZWZvcmVfcHVibGlzaGluZ190aGVfYWN0aXZpdHlfdG9fdGhlX2lhdGlfcmVnaXN0cnknKTtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmljb24gPSBcInNoaWVsZFwiO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuYWxlcnRTdGF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAvLyBjYXNlIDIgaXMgZm9yIHN1Y2Nlc3MgdmFsaWRhdGlvblxuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLnRpdGxlID0gdHJhbnNsYXRlLnN0aWNreVRleHQoJ2lhdGlfdmFsaWRhdGlvbicpO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuZGVzY3JpcHRpb24gPSB0cmFuc2xhdGUuc3RpY2t5VGV4dCgnY29uZ3JhdHVsYXRpb25zX25vX2Vycm9yc193ZXJlX2ZvdW5kJyk7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5pY29uID0gXCJ0aWNrXCI7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5hbGVydFN0YXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgLy9jYXNlIDMgaXMgZm9yIHZhbGlkYXRpb24gd2l0aCBjcml0aWNhbCBlcnJvcnNcbiAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS50aXRsZSA9IHRyYW5zbGF0ZS5zdGlja3lUZXh0KCdpYXRpX3ZhbGlkYXRpb25faXNzdWUnKTtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmRlc2NyaXB0aW9uID0gXCI8cD48Yj5cIi5jb25jYXQoZXJyLmNyaXRpY2FsTnVtYmVyLCBcIiBcIikuY29uY2F0KHMuY3JpdGljYWwsIFwiIFwiKS5jb25jYXQocy5lcnJvcnMsIFwiPC9iPiwgPGI+XCIpLmNvbmNhdChlcnIuZXJyb3JOdW1iZXIsIFwiIFwiKS5jb25jYXQocy5lcnJvcnMsIFwiPC9iPiBcIikuY29uY2F0KHMuYW5kLCBcIiA8Yj5cIikuY29uY2F0KGVyci53YXJuaW5nTnVtYmVyLCBcIiBcIikuY29uY2F0KHMud2FybmluZ3MsIFwiPC9iPiBcIikuY29uY2F0KHMud2FybmluZ3MsIFwiLiBcIikuY29uY2F0KHMuY3JpdGljYWwsIFwiPC9wPjxwPlwiKS5jb25jYXQocy5oYXNfYXRsZWFzdF9vbmVfY3JpdGljYWxfZXJyb3IsIFwiPC9wPjxwPlwiKS5jb25jYXQocy53ZV9oaWdobHlfcmVjb21tZW5kX3lvdV9maXhfdGhlc2VfaXNzdWVzLCBcIjwvcD5cIik7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5pY29uID0gXCJ3YXJuaW5nLWZpbGxcIjtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmFsZXJ0U3RhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgLy8gY2FzZSA0IGlzIGZvciB2YWxpZGF0aW9uIHdpdGhvdXQgY3JpdGljYWwgZXJyb3JzXG4gICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUudGl0bGUgPSB0cmFuc2xhdGUuc3RpY2t5VGV4dCgnaWF0aV92YWxpZGF0aW9uX2lzc3VlJyk7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5kZXNjcmlwdGlvbiA9IFwiPHA+PGI+XCIuY29uY2F0KGVyci5lcnJvck51bWJlciwgXCIgIFwiKS5jb25jYXQocy5lcnJvcnMsIFwiPC9iPiAgXCIpLmNvbmNhdChzLmFuZCwgXCIgPGI+XCIpLmNvbmNhdChlcnIud2FybmluZ051bWJlciwgXCIgIFwiKS5jb25jYXQocy53YXJuaW5ncywgXCI8L2I+ICBcIikuY29uY2F0KHMud2VyZV9mb3VuZCwgXCIuICBcIikuY29uY2F0KHMudmlld19pbmZvcm1hdGlvbl9hYm91dF90aGVzZSwgXCI8L3A+PHA+XCIpLmNvbmNhdChzLndlX2hpZ2hseV9yZWNvbW1lbmRfeW91X2ZpeF90aGVzZV9pc3N1ZXMsIFwiPC9wPlwiKTtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmljb24gPSBcIndhcm5pbmctZmlsbFwiO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuYWxlcnRTdGF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwdWJsaXNoU3RhdGU7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBmdW5jdGlvblxuICAgICAgICB2YXIgc3RlcFBsdXNPbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAocHVibGlzaFN0ZXAudmFsdWUgPj0gMCAmJiBwdWJsaXNoU3RlcC52YWx1ZSA8IDQpIHtcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RlcC52YWx1ZSsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgc3RlcE1pbnVzT25lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHB1Ymxpc2hTdGVwLnZhbHVlID4gMCAmJiBwdWJsaXNoU3RlcC52YWx1ZSA8PSA0KSB7XG4gICAgICAgICAgICAgICAgcHVibGlzaFN0ZXAudmFsdWUtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLy8gcmVhY3RpdmUgdmFyaWFibGUgZm9yIGVycm9ycyBudW1iZXJcbiAgICAgICAgdmFyIGVyciA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgY3JpdGljYWxOdW1iZXI6IDAsXG4gICAgICAgICAgICBlcnJvck51bWJlcjogMCxcbiAgICAgICAgICAgIHdhcm5pbmdOdW1iZXI6IDAsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBjYWxsIGFwaSBmb3IgdmFsaWRhdGlvblxuICAgICAgICB2YXIgdmFsaWRhdG9yRnVuY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICghcHVibGlzaFZhbHVlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvYWRlclRleHQudmFsdWUgPSBcIlwiLmNvbmNhdCh0cmFuc2xhdGUuY29tbW9uVGV4dCgndmFsaWRhdGluZycpLCBcIiBcIikuY29uY2F0KHRyYW5zbGF0ZS5jb21tb25UZXh0KCdhY3Rpdml0eScpKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5wb3N0KFwiL2FjdGl2aXR5L1wiLmNvbmNhdChpZCwgXCIvdmFsaWRhdGVBY3Rpdml0eVwiKSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9IHJlc3BvbnNlLmVycm9ycztcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlUHVibGlzaEVycm9ycycsIGVycm9ycyk7XG4gICAgICAgICAgICAgICAgICAgIC8vaWRlbnRpZnkgZXJyb3IgdHlwZXNcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNyaXQgPSByZXNwb25zZS5zdW1tYXJ5LmNyaXRpY2FsO1xuICAgICAgICAgICAgICAgICAgICAoZXJyLmNyaXRpY2FsTnVtYmVyID0gY3JpdCksXG4gICAgICAgICAgICAgICAgICAgICAgICAoZXJyLmVycm9yTnVtYmVyID0gcmVzcG9uc2Uuc3VtbWFyeS5lcnJvciksXG4gICAgICAgICAgICAgICAgICAgICAgICAoZXJyLndhcm5pbmdOdW1iZXIgPSByZXNwb25zZS5zdW1tYXJ5Lndhcm5pbmcpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3JpdCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGVwLnZhbHVlID0gMztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGVwLnZhbHVlID0gNDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0ZXAudmFsdWUgPSAyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSwgMjAwMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gY2FsbCBhcGkgZm9yIHB1Ymxpc2hpbmdcbiAgICAgICAgdmFyIGVycm9yRGF0YSA9ICgwLCB2dWVfMi5pbmplY3QpKCdlcnJvckRhdGEnKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGNoZWNrIHB1Ymxpc2ggc3RhdHVzXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgY2hlY2tQdWJsaXNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChcIi9hY3Rpdml0aWVzL2NoZWNrcy1mb3ItYWN0aXZpdHktcHVibGlzaFwiKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoVmFsdWUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLm1lc3NhZ2UgPSByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEudHlwZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHB1Ymxpc2hGdW5jdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHB1Ymxpc2hWYWx1ZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgICAgICBsb2FkZXJUZXh0LnZhbHVlID0gXCJcIi5jb25jYXQodHJhbnNsYXRlLmNvbW1vblRleHQoJ3B1Ymxpc2hpbmcnKSwgXCIgXCIpLmNvbmNhdCh0cmFuc2xhdGUuY29tbW9uVGV4dCgnYWN0aXZpdHknKSk7XG4gICAgICAgICAgICByZXNldFB1Ymxpc2hTdGVwKCk7XG4gICAgICAgICAgICBwdWJsaXNoU3RlcC52YWx1ZSA9IDA7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQucG9zdChcIi9hY3Rpdml0eS9cIi5jb25jYXQoaWQsIFwiL3B1Ymxpc2hcIikpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVVblB1Ymxpc2hlZCcsIHJlc3BvbnNlLnN1Y2Nlc3MpO1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTaG93UHVibGlzaGVkJywgIXJlc3BvbnNlLnN1Y2Nlc3MpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAvLyBwdWJsaXNoLXJlcHVibGlzaFxuICAgICAgICB2YXIgcHVibGlzaFN0YXR1cyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgbGlua2VkX3RvX2lhdGk6IGxpbmtlZFRvSWF0aS52YWx1ZSxcbiAgICAgICAgICAgIHN0YXR1czogc3RhdHVzLnZhbHVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGJ0blRleHQgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChwdWJsaXNoU3RhdHVzLmxpbmtlZF90b19pYXRpICYmIHB1Ymxpc2hTdGF0dXMuc3RhdHVzID09PSAnZHJhZnQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZS5idXR0b24oJ3JlcHVibGlzaCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIXB1Ymxpc2hTdGF0dXMubGlua2VkX3RvX2lhdGkgJiZcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdHVzLnN0YXR1cyA9PT0gJ2RyYWZ0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdGUuYnV0dG9uKCdwdWJsaXNoJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgcHJvcHM6IHByb3BzLCBsaW5rZWRUb0lhdGk6IGxpbmtlZFRvSWF0aSwgc3RhdHVzOiBzdGF0dXMsIGNvcmVDb21wbGV0ZWQ6IGNvcmVDb21wbGV0ZWQsIGFjdGl2aXR5SWQ6IGFjdGl2aXR5SWQsIHN0b3JlOiBzdG9yZSwgaWQ6IGlkLCBwdWJsaXNoVmFsdWU6IHB1Ymxpc2hWYWx1ZSwgcHVibGlzaFRvZ2dsZTogcHVibGlzaFRvZ2dsZSwgcHVibGlzaFN0ZXA6IHB1Ymxpc2hTdGVwLCBsb2FkZXI6IGxvYWRlciwgY29yZUVsZW1lbnRTdGF0dXM6IGNvcmVFbGVtZW50U3RhdHVzLCBsb2FkZXJUZXh0OiBsb2FkZXJUZXh0LCByZXNldFB1Ymxpc2hTdGVwOiByZXNldFB1Ymxpc2hTdGVwLCBwdWJsaXNoU3RhdGVDaGFuZ2U6IHB1Ymxpc2hTdGF0ZUNoYW5nZSwgc3RlcFBsdXNPbmU6IHN0ZXBQbHVzT25lLCBzdGVwTWludXNPbmU6IHN0ZXBNaW51c09uZSwgZXJyOiBlcnIsIHZhbGlkYXRvckZ1bmN0aW9uOiB2YWxpZGF0b3JGdW5jdGlvbiwgZXJyb3JEYXRhOiBlcnJvckRhdGEsIGNoZWNrUHVibGlzaDogY2hlY2tQdWJsaXNoLCBwdWJsaXNoRnVuY3Rpb246IHB1Ymxpc2hGdW5jdGlvbiwgcHVibGlzaFN0YXR1czogcHVibGlzaFN0YXR1cywgYnRuVGV4dDogYnRuVGV4dCwgQnRuQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnRfdnVlXzEuZGVmYXVsdCwgTW9kYWw6IFBvcHVwTW9kYWxfdnVlXzEuZGVmYXVsdCwgTG9hZGVyOiBQcm9ncmVzc0xvYWRlcl92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG4vL2NvbXBvbmVudFxudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBQcm9ncmVzc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIikpO1xuLy8gVnVleCBTdG9yZVxudmFyIHNob3dfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL3Nob3dcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1VuUHVibGlzaEJ1dHRvbicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgdHlwZTogeyB0eXBlOiBTdHJpbmcsIGRlZmF1bHQ6ICdwcmltYXJ5JyB9LFxuICAgICAgICBhY3Rpdml0eUlkOiB7IHR5cGU6IE51bWJlciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGFjdGl2aXR5SWQgPSAoMCwgdnVlXzIudG9SZWZzKShwcm9wcykuYWN0aXZpdHlJZDtcbiAgICAgICAgLy8gdG9nZ2xlIHN0YXRlIGZvciBtb2RhbCBwb3B1cFxuICAgICAgICB2YXIgX2IgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgdW5wdWJsaXNoVmFsdWUgPSBfYlswXSwgdW5wdWJsaXNoVG9nZ2xlID0gX2JbMV07XG4gICAgICAgIC8vR2xvYmFsIFN0YXRlXG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBzaG93XzEuZGV0YWlsU3RvcmUpKCk7XG4gICAgICAgIC8vYWN0aXZpdHkgaWRcbiAgICAgICAgdmFyIGlkID0gYWN0aXZpdHlJZC52YWx1ZTtcbiAgICAgICAgLy8gZGlzcGxheS9oaWRlIHZhbGlkYXRvciBsb2FkZXJcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgICAgICAgdGV4dDogdHJhbnNsYXRlLmNvbW1vblRleHQoJ3BsZWFzZV93YWl0JyksXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBjYWxsIGFwaSBmb3IgdW5wdWJsaXNoaW5nXG4gICAgICAgICgwLCB2dWVfMi5vblVwZGF0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChsb2FkZXIudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlSXNMb2FkaW5nJywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlSXNMb2FkaW5nJywgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHVucHVibGlzaFZhbHVlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobG9hZGVyLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdW5wdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzIuaW5qZWN0KSgndG9hc3RNZXNzYWdlJyk7XG4gICAgICAgIHZhciB1blB1Ymxpc2hGdW5jdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHVucHVibGlzaFZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICAgIGxvYWRlci50ZXh0ID0gdHJhbnNsYXRlLmV2ZW50KCd1bnB1Ymxpc2hpbmcnKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5wb3N0KFwiL2FjdGl2aXR5L1wiLmNvbmNhdChpZCwgXCIvdW5wdWJsaXNoXCIpKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnR5cGUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIHVucHVibGlzaFZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlVW5QdWJsaXNoZWQnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU2hvd1B1Ymxpc2hlZCcsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVB1Ymxpc2hFcnJvcnMnLCBbXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHByb3BzOiBwcm9wcywgYWN0aXZpdHlJZDogYWN0aXZpdHlJZCwgdW5wdWJsaXNoVmFsdWU6IHVucHVibGlzaFZhbHVlLCB1bnB1Ymxpc2hUb2dnbGU6IHVucHVibGlzaFRvZ2dsZSwgc3RvcmU6IHN0b3JlLCBpZDogaWQsIGxvYWRlcjogbG9hZGVyLCB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSwgdW5QdWJsaXNoRnVuY3Rpb246IHVuUHVibGlzaEZ1bmN0aW9uLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbi8vY29tcG9uZW50XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbi8vIHByb3BzXG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRGVsZXRlQWN0aW9uJyxcbiAgICBwcm9wczoge1xuICAgICAgICBpdGVtSWQ6IHsgdHlwZTogW051bWJlciwgU3RyaW5nXSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgaXRlbVR5cGU6IHsgdHlwZTogU3RyaW5nLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICAvLyB0b2dnbGUgc3RhdGUgZm9yIG1vZGFsIHBvcHVwXG4gICAgICAgIHZhciBfYiA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBkZWxldGVWYWx1ZSA9IF9iWzBdLCBkZWxldGVUb2dnbGUgPSBfYlsxXTtcbiAgICAgICAgdmFyIGRlbGV0ZUZ1bmN0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHByb3BzLml0ZW1UeXBlID09PSAncmVzdWx0JyB8fCBwcm9wcy5pdGVtVHlwZSA9PT0gJ3RyYW5zYWN0aW9uJykge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5kZWxldGUoXCJcIi5jb25jYXQocHJvcHMuaXRlbVR5cGUsIFwiL1wiKS5jb25jYXQocHJvcHMuaXRlbUlkKSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZVZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByb3BzLml0ZW1UeXBlID09PSAnaW5kaWNhdG9yJykge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5kZWxldGUoXCJcIi5jb25jYXQocHJvcHMuaXRlbVR5cGUsIFwiL1wiKS5jb25jYXQocHJvcHMuaXRlbUlkKSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZVZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByb3BzLml0ZW1UeXBlID09PSAncGVyaW9kJykge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5kZWxldGUoXCJcIi5jb25jYXQocHJvcHMuaXRlbVR5cGUsIFwiL1wiKS5jb25jYXQocHJvcHMuaXRlbUlkKSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZVZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBwcm9wczogcHJvcHMsIHRyYW5zbGF0ZTogdHJhbnNsYXRlLCBkZWxldGVWYWx1ZTogZGVsZXRlVmFsdWUsIGRlbGV0ZVRvZ2dsZTogZGVsZXRlVG9nZ2xlLCBkZWxldGVGdW5jdGlvbjogZGVsZXRlRnVuY3Rpb24sIGNhcGl0YWxpemU6IHZ1ZV8yLmNhcGl0YWxpemUsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdFcnJvckxpc3RzJyxcbiAgICBwcm9wczoge1xuICAgICAgICBlcnJvcnM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICB0eXBlOiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJ2Vycm9yJyB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICAvL3Byb3BzXG4gICAgICAgIC8vcHJvcHMgZGVzdHJ1Y3R1cmluZ1xuICAgICAgICB2YXIgX2IgPSAoMCwgdnVlXzIudG9SZWZzKShwcm9wcyksIHR5cGUgPSBfYi50eXBlLCBlcnJvcnMgPSBfYi5lcnJvcnM7XG4gICAgICAgIHZhciBlcnJvclR5cGUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIC8vIGNvbG9ycyBiYXNlZCBvbiB0eXBlIHByb3BzIHZhbHVlXG4gICAgICAgIHZhciBiZ0NvbG9yID0gJycsIGljb25Db2xvciA9ICcnO1xuICAgICAgICBzd2l0Y2ggKHR5cGUudmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2NyaXRpY2FsJzpcbiAgICAgICAgICAgICAgICBiZ0NvbG9yID0gJ2JnLWxhdmVuZGVyLTYwIGJvcmRlci1sYXZlbmRlci01MCc7XG4gICAgICAgICAgICAgICAgaWNvbkNvbG9yID0gJ3RleHQtbGF2ZW5kZXItNTAnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnd2FybmluZ3MnOlxuICAgICAgICAgICAgICAgIGJnQ29sb3IgPSAnYmctZWdnc2hlbGwgYm9yZGVyLWNhbWVsLTUwJztcbiAgICAgICAgICAgICAgICBpY29uQ29sb3IgPSAndGV4dC1jYW1lbC01MCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJnQ29sb3IgPSAnYmctcm9zZSBib3JkZXItY3JpbXNvbi00MCc7XG4gICAgICAgICAgICAgICAgaWNvbkNvbG9yID0gJ3RleHQtY3JpbXNvbi00MCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvZ2dsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGFjY29yZGlvblRvZ2dsZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmVycm9yc19fbGlzdCcpO1xuICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gKF9hID0gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJ3VsJykpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbGllbnRIZWlnaHQ7XG4gICAgICAgICAgICBpZiAodG9nZ2xlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgICAgICB0b2dnbGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBhdXRvO1wiO1xuICAgICAgICAgICAgICAgICAgICB9LCA2MDApO1xuICAgICAgICAgICAgICAgICAgICB0b2dnbGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHVwZGF0ZUVycm9yQ291bnRNZXNzYWdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRyYW5zbGF0ZWRUeXBlID0gdHJhbnNsYXRlLnN0aWNreVRleHQodHlwZSA9PT0gbnVsbCB8fCB0eXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0eXBlLnZhbHVlLCAnY29tbW9uJyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygndHlwZT8udmFsdWUnLCB0eXBlID09PSBudWxsIHx8IHR5cGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHR5cGUudmFsdWUpO1xuICAgICAgICAgICAgZXJyb3JUeXBlLnZhbHVlID0gZXJyb3JzLnZhbHVlLmxlbmd0aCArICcgJyArICgwLCB2dWVfMi5jYXBpdGFsaXplKSh0cmFuc2xhdGVkVHlwZSk7XG4gICAgICAgIH07XG4gICAgICAgIHVwZGF0ZUVycm9yQ291bnRNZXNzYWdlKCk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gZXJyb3JzLnZhbHVlOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB1cGRhdGVFcnJvckNvdW50TWVzc2FnZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHByb3BzOiBwcm9wcywgdHlwZTogdHlwZSwgZXJyb3JzOiBlcnJvcnMsIGVycm9yVHlwZTogZXJyb3JUeXBlLCBiZ0NvbG9yOiBiZ0NvbG9yLCBpY29uQ29sb3I6IGljb25Db2xvciwgdG9nZ2xlOiB0b2dnbGUsIGFjY29yZGlvblRvZ2dsZTogYWNjb3JkaW9uVG9nZ2xlLCB1cGRhdGVFcnJvckNvdW50TWVzc2FnZTogdXBkYXRlRXJyb3JDb3VudE1lc3NhZ2UgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuLy8gY29tcG9uZW50c1xudmFyIExpbmtfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0hhdmVOb3RBZGRlZFlldCcsXG4gICAgY29tcG9uZW50czogeyBCdG46IExpbmtfdnVlXzEuZGVmYXVsdCB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGxpbms6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGJ0blRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG4vL2NvbXBvbmVudFxudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBQcm9ncmVzc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbi8vIHB1Ymxpc2gtcmVwdWJsaXNoXG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbicsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICAvLyB0b2dnbGUgc3RhdGUgZm9yIG1vZGFsIHBvcHVwXG4gICAgICAgIHZhciBfYiA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBwdWJsaXNoVmFsdWUgPSBfYlswXSwgcHVibGlzaFRvZ2dsZSA9IF9iWzFdO1xuICAgICAgICB2YXIgX2MgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgdW5wdWJsaXNoVmFsdWUgPSBfY1swXSwgdW5wdWJsaXNoVG9nZ2xlID0gX2NbMV07XG4gICAgICAgIC8vIGRpc3BsYXkvaGlkZSB2YWxpZGF0b3IgbG9hZGVyXG4gICAgICAgIHZhciBsb2FkZXIgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIC8vIHN0YXRlIGZvciBmaXJzdCBzdGVwXG4gICAgICAgIC8vIGRldGVybWluZSBpZiBjb3JlIGVsZW1lbnQgY29tcGxldGVkIG9yIG5vdFxuICAgICAgICAvLyB0cnVlIGZvciBjb21wbGV0ZWQgYW5kIGZhbHNlIGZvciBub3QgY29tcGxldGVkXG4gICAgICAgIHZhciBtYW5kYXRvcnlFbGVtZW50U3RhdHVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ21hbmRhdG9yeUNvbXBsZXRlZCcpO1xuICAgICAgICAvLyBEeW5hbWljIHRleHQgZm9yIGxvYWRlclxuICAgICAgICB2YXIgbG9hZGVyVGV4dCA9ICgwLCB2dWVfMi5yZWYpKHRyYW5zbGF0ZS5jb21tb25UZXh0KCdwbGVhc2Vfd2FpdCcpKTtcbiAgICAgICAgLy8gY29tcHV0ZWQgZnVuY3Rpb24gdG8gY2hhbmdlIGNvbnRlbnQgb2YgbW9kYWxcbiAgICAgICAgdmFyIHB1Ymxpc2hTdGF0ZUNoYW5nZSA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHB1Ymxpc2hTdGF0ZSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgICAgICAgaWNvbjogJycsXG4gICAgICAgICAgICAgICAgYWxlcnRTdGF0ZTogbWFuZGF0b3J5RWxlbWVudFN0YXR1cyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gZGlmZmVyZW50IGNvbnRlbnQgZm9yIHN0ZXAgMSBiYXNlZCBvbiBjb3JlRWxlbWVudCBzdGF0dXNcbiAgICAgICAgICAgIGlmIChtYW5kYXRvcnlFbGVtZW50U3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLnRpdGxlID0gdHJhbnNsYXRlLmNvbW1vblRleHQoJ2NvcmVfZWxlbWVudHNfY29tcGxldGVkJyk7XG4gICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmRlc2NyaXB0aW9uID0gdHJhbnNsYXRlLmNvbW1vblRleHQoJ2NvbmdyYXR1bGF0aW9uc19hbGxfdGhlX2NvcmVfZWxlbWVudHNfYXJlX2NvbXBsZXRlJyk7XG4gICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmljb24gPSAndGljayc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUudGl0bGUgPSB0cmFuc2xhdGUuY29tbW9uVGV4dCgnY29yZV9lbGVtZW50c19jb21wbGV0ZWQnKTtcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuZGVzY3JpcHRpb24gPSB0cmFuc2xhdGUuY29tbW9uVGV4dCgndGhlcmVfaXNfbWlzc2luZ19kYXRhX2luX3NvbWVfb2ZfdGhlX2NvcmVfZWxlbWVudHMnKTtcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuaWNvbiA9ICd3YXJuaW5nLWZpbGwnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHB1Ymxpc2hTdGF0ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGNhbGwgYXBpIGZvciBwdWJsaXNoaW5nXG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzIuaW5qZWN0KSgndG9hc3REYXRhJyk7XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzIuaW5qZWN0KSgnZXJyb3JEYXRhJyk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBjaGVjayBwdWJsaXNoIHN0YXR1c1xuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGNoZWNrUHVibGlzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvb3JnYW5pc2F0aW9uL2NoZWNrcy1mb3Itb3JnYW5pc2F0aW9uLXB1Ymxpc2hcIikudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFZhbHVlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLnR5cGUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwdWJsaXNoRnVuY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdwdWJsaXNoaW5nJyk7XG4gICAgICAgICAgICBwdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5wb3N0KFwiL29yZ2FuaXNhdGlvbi9wdWJsaXNoXCIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdHVzLmlzX3B1Ymxpc2hlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0dXMuc3RhdHVzID0gdHJhbnNsYXRlLmV2ZW50KCdwdWJsaXNoZWQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHVuUHVibGlzaEZ1bmN0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdW5wdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBsb2FkZXJUZXh0LnZhbHVlID0gKDAsIHZ1ZV8yLmNhcGl0YWxpemUpKHRyYW5zbGF0ZS5ldmVudCgndW5wdWJsaXNoaW5nJykpO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LnBvc3QoXCIvb3JnYW5pc2F0aW9uL3VucHVibGlzaFwiKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSwgMjAwMCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXR1cy5pc19wdWJsaXNoZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHB1Ymxpc2hTdGF0dXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgncHVibGlzaFN0YXR1cycpO1xuICAgICAgICB2YXIgYnRuVGV4dCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHB1Ymxpc2hTdGF0dXMuaXNfcHVibGlzaGVkICYmIHB1Ymxpc2hTdGF0dXMuc3RhdHVzID09PSAnZHJhZnQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZS5idXR0b24oJ3JlcHVibGlzaCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZS5idXR0b24oJ3B1Ymxpc2gnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCBwdWJsaXNoVmFsdWU6IHB1Ymxpc2hWYWx1ZSwgcHVibGlzaFRvZ2dsZTogcHVibGlzaFRvZ2dsZSwgdW5wdWJsaXNoVmFsdWU6IHVucHVibGlzaFZhbHVlLCB1bnB1Ymxpc2hUb2dnbGU6IHVucHVibGlzaFRvZ2dsZSwgbG9hZGVyOiBsb2FkZXIsIG1hbmRhdG9yeUVsZW1lbnRTdGF0dXM6IG1hbmRhdG9yeUVsZW1lbnRTdGF0dXMsIGxvYWRlclRleHQ6IGxvYWRlclRleHQsIHB1Ymxpc2hTdGF0ZUNoYW5nZTogcHVibGlzaFN0YXRlQ2hhbmdlLCB0b2FzdERhdGE6IHRvYXN0RGF0YSwgZXJyb3JEYXRhOiBlcnJvckRhdGEsIGNoZWNrUHVibGlzaDogY2hlY2tQdWJsaXNoLCBwdWJsaXNoRnVuY3Rpb246IHB1Ymxpc2hGdW5jdGlvbiwgdW5QdWJsaXNoRnVuY3Rpb246IHVuUHVibGlzaEZ1bmN0aW9uLCBwdWJsaXNoU3RhdHVzOiBwdWJsaXNoU3RhdHVzLCBidG5UZXh0OiBidG5UZXh0LCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuLy8gY29tcG9uZW50c1xudmFyIEJyZWFkQ3J1bWJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnJlYWRDcnVtYi52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdQYWdlVGl0bGUnLFxuICAgIGNvbXBvbmVudHM6IHsgQnJlYWRjcnVtYjogQnJlYWRDcnVtYl92dWVfMS5kZWZhdWx0IH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYnJlYWRjcnVtYkRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0aXRsZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGJhY2tMaW5rOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgY29uc29sZS5sb2cocHJvcHMudGl0bGUsICd0aXRsZScpO1xuICAgICAgICByZXR1cm4ge307XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUHJvZ3Jlc3NMb2FkZXInLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjaGFuZ2VUZXh0OiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdvdmVyZmxvdy15LWhpZGRlbicpO1xuICAgICAgICAgICAgdmFyIHN1cHBvcnRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbGF1bmNoZXInKTtcbiAgICAgICAgICAgIGlmIChzdXBwb3J0QnV0dG9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ292ZXJmbG93LXktaGlkZGVuJyk7XG4gICAgICAgICAgICB2YXIgc3VwcG9ydEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNsYXVuY2hlcicpO1xuICAgICAgICAgICAgaWYgKHN1cHBvcnRCdXR0b24gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBzdXBwb3J0QnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xuLy8gY29tcG9uZW50c1xudmFyIEVycm9yTGlzdHNfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvRXJyb3JMaXN0cy52dWVcIikpO1xudmFyIFVwbG9hZGVkRXJyb3JzX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1VwbG9hZGVkRXJyb3JzLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdTdGlja3lFcnJvcnMnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGVycm9yRGF0YTogeyB0eXBlOiBBcnJheSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgLy8gdG9nZ2xlIGlzc3Vlc1xuICAgICAgICB2YXIgX2IgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgZXJyb3JWYWx1ZSA9IF9iWzBdLCBlcnJvclRvZ2dsZSA9IF9iWzFdO1xuICAgICAgICB2YXIgaW1wb3J0RXJyb3JzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2ltcG9ydEFjdGl2aXR5RXJyb3InKTtcbiAgICAgICAgdmFyIGFjdGl2aXR5SWQgPSAoMCwgdnVlXzIuaW5qZWN0KSgnYWN0aXZpdHlJZCcpO1xuICAgICAgICB2YXIgaXNzdWVUeXBlID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGxpc3Qgb2YgZXJyb3JzXG4gICAgICAgICAqKi9cbiAgICAgICAgdmFyIGVycm9yRGF0YSA9ICgwLCB2dWVfMi50b1JlZnMpKHByb3BzKS5lcnJvckRhdGE7XG4gICAgICAgIHZhciBpbXBvcnRFcnJvclR5cGVzID0gWydlcnJvcicsICd3YXJuaW5nJ107XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChlcnJvckRhdGEudmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaXNzdWVUeXBlLnZhbHVlID0gJ3ZhbGlkYXRvcic7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXNzdWVUeXBlLnZhbHVlID0gJ3VwbG9hZCc7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdGVtcERhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGVycm9yczogW10sXG4gICAgICAgICAgICBjcml0aWNhbDogW10sXG4gICAgICAgICAgICB3YXJuaW5nczogW10sXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdXBkYXRlVGVtcE1lc3NhZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZXJyb3JEYXRhUHJvcHMgPSBlcnJvckRhdGEudmFsdWU7XG4gICAgICAgICAgICBmb3IgKHZhciBkYXRhIGluIHRlbXBEYXRhKSB7XG4gICAgICAgICAgICAgICAgdGVtcERhdGFbZGF0YV0gPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMCwgZXJyb3JEYXRhUHJvcHNfMSA9IGVycm9yRGF0YVByb3BzOyBfaSA8IGVycm9yRGF0YVByb3BzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBlcnJvckRhdGFQcm9wc18xW19pXTtcbiAgICAgICAgICAgICAgICB2YXIgc2V2ZXJpdHkgPSBkYXRhLnNldmVyaXR5O1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoc2V2ZXJpdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnY3JpdGljYWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcERhdGEuY3JpdGljYWwucHVzaChkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wRGF0YS5lcnJvcnMucHVzaChkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICd3YXJuaW5nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBEYXRhLndhcm5pbmdzLnB1c2goZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHVwZGF0ZVRlbXBNZXNzYWdlKCk7XG4gICAgICAgIHZhciBpbXBvcnRFcnJvcmxlbmd0aCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgIGZvciAodmFyIHR5cGUgaW4gaW1wb3J0RXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaW5kZXggaW4gaW1wb3J0RXJyb3JzW3R5cGVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IE9iamVjdC5rZXlzKGltcG9ydEVycm9yc1t0eXBlXVtpbmRleF0pLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGVycm9yRGF0YS52YWx1ZTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdXBkYXRlVGVtcE1lc3NhZ2UoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBkZWxldGVFcnJvcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZGVsZXRlKFwiL2ltcG9ydC9lcnJvcnMvXCIuY29uY2F0KGFjdGl2aXR5SWQpKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdyZW1vdmVkJywgJ3RydWUnKTtcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCBwcm9wczogcHJvcHMsIGVycm9yVmFsdWU6IGVycm9yVmFsdWUsIGVycm9yVG9nZ2xlOiBlcnJvclRvZ2dsZSwgaW1wb3J0RXJyb3JzOiBpbXBvcnRFcnJvcnMsIGFjdGl2aXR5SWQ6IGFjdGl2aXR5SWQsIGlzc3VlVHlwZTogaXNzdWVUeXBlLCBlcnJvckRhdGE6IGVycm9yRGF0YSwgaW1wb3J0RXJyb3JUeXBlczogaW1wb3J0RXJyb3JUeXBlcywgdGVtcERhdGE6IHRlbXBEYXRhLCB1cGRhdGVUZW1wTWVzc2FnZTogdXBkYXRlVGVtcE1lc3NhZ2UsIGltcG9ydEVycm9ybGVuZ3RoOiBpbXBvcnRFcnJvcmxlbmd0aCwgZGVsZXRlRXJyb3JzOiBkZWxldGVFcnJvcnMsIEVycm9yTGlzdHM6IEVycm9yTGlzdHNfdnVlXzEuZGVmYXVsdCwgVXBsb2FkZWRFcnJvcnM6IFVwbG9hZGVkRXJyb3JzX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdVcGxvYWRlZEVycm9ycycsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgaXRlbToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGluZGV4OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBhY3RpdmUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2dnbGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBlcnJvckxlbmd0aCA9IGZ1bmN0aW9uIChjdXJyZW50RXJyb3IpIHtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICBpZiAocHJvcHMuaW5kZXggPT09IGN1cnJlbnRFcnJvcikge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIHR5cGUgaW4gcHJvcHMuaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICBjb3VudCArPSBPYmplY3Qua2V5cyhwcm9wcy5pdGVtW3R5cGVdKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgYWNjb3JkaW9uVG9nZ2xlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGFjdGl2ZS52YWx1ZSA9ICFhY3RpdmUudmFsdWU7XG4gICAgICAgICAgICB2YXIgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmNvbnRhaW5lcicpO1xuICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gKF9hID0gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJy5lcnJvci1jb250YWluZXInKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIGlmICh0b2dnbGUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgICAgIHRvZ2dsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IGF1dG87XCI7XG4gICAgICAgICAgICAgICAgICAgIH0sIDYwMCk7XG4gICAgICAgICAgICAgICAgICAgIHRvZ2dsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBhY3RpdmU6IGFjdGl2ZSwgcHJvcHM6IHByb3BzLCB0b2dnbGU6IHRvZ2dsZSwgZXJyb3JMZW5ndGg6IGVycm9yTGVuZ3RoLCBhY2NvcmRpb25Ub2dnbGU6IGFjY29yZGlvblRvZ2dsZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdFbGVtZW50U3RhdHVzJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7IHR5cGU6IEJvb2xlYW4sIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8yLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBjb2xvciA9IGRhdGEudmFsdWUgPyAndGV4dC1zcHJpbmctNTAnIDogJ3RleHQtY3JpbXNvbi01MCcsIHRleHQgPSBkYXRhLnZhbHVlXG4gICAgICAgICAgICA/IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdjb21wbGV0ZWQnKVxuICAgICAgICAgICAgOiB0cmFuc2xhdGUuY29tbW9uVGV4dCgnbm90X2NvbXBsZXRlZCcpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgcHJvcHM6IHByb3BzLCBkYXRhOiBkYXRhLCBjb2xvcjogY29sb3IsIHRleHQ6IHRleHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1ByZXZpb3VzbHlQdWJsaXNoZWQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIGRlZmF1bHQ6IHdpbmRvd1snZ2xvYmFsTGFuZyddLmNvbW1vbi5wcmV2aW91c2x5X3B1Ymxpc2hlZF9vbl9pYXRpLFxuICAgICAgICB9LFxuICAgICAgICBpY29uOiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJ2FwcHJvdmVkLWNsb3VkJyB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHt9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbXVsdGlzZWxlY3RfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3RcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdBY3Rpdml0eURlZmF1bHRWYWx1ZScsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY3VycmVuY2llczoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBsYW5ndWFnZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZpdHlJZDogeyB0eXBlOiBOdW1iZXIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGJ1ZGdldE5vdFByb3ZpZGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGh1bWFuaXRhcmlhbjoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICAvKipcbiAgICAgICAgICogUHJvcHNcbiAgICAgICAgICovXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZWFjdGl2ZSB2YXJpYWJsZXNcbiAgICAgICAgICovXG4gICAgICAgIHZhciBkZWZhdWx0VmFsdWVzID0gKDAsIHZ1ZV8yLnJlZikoe1xuICAgICAgICAgICAgYnVkZ2V0X25vdF9wcm92aWRlZDogJycsXG4gICAgICAgICAgICBkZWZhdWx0X2N1cnJlbmN5OiAnJyxcbiAgICAgICAgICAgIGRlZmF1bHRfbGFuZ3VhZ2U6ICcnLFxuICAgICAgICAgICAgaGllcmFyY2h5OiAnJyxcbiAgICAgICAgICAgIGh1bWFuaXRhcmlhbjogJycsXG4gICAgICAgIH0pLCBkZWZhdWx0RXJyb3JzID0gKDAsIHZ1ZV8yLnJlZikoe1xuICAgICAgICAgICAgYnVkZ2V0X25vdF9wcm92aWRlZDogW10sXG4gICAgICAgICAgICBkZWZhdWx0X2N1cnJlbmN5OiBbXSxcbiAgICAgICAgICAgIGRlZmF1bHRfbGFuZ3VhZ2U6IFtdLFxuICAgICAgICAgICAgaGllcmFyY2h5OiBbXSxcbiAgICAgICAgICAgIGh1bWFuaXRhcmlhbjogW10sXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZXJyb3JSZXNldCA9IGRlZmF1bHRFcnJvcnMudmFsdWU7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBPbiBNb3VudGVkXG4gICAgICAgICAqL1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZGF0YSwgZGVmYXVsdERhdGE7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvYWN0aXZpdHkvXCIuY29uY2F0KHByb3BzLmFjdGl2aXR5SWQsIFwiL2RlZmF1bHRfdmFsdWVzL2RhdGFcIikpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IChfYS5zZW50KCkpLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RGF0YSA9IGRhdGEuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0RGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZXMudmFsdWUgPSBkZWZhdWx0RGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogUmVmXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgbG9hZGVyVmlzaWJpbGl0eSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKSwgdG9hc3RWaXNpYmlsaXR5ID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpLCB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzIucmVmKSgnJyksIHRvYXN0VHlwZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFN1Ym1pdCBmb3JtXG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBzdWJtaXRGb3JtKCkge1xuICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBkZWZhdWx0RXJyb3JzLnZhbHVlID0gZXJyb3JSZXNldDtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wdXQoXCIvYWN0aXZpdHkvXCIuY29uY2F0KHByb3BzLmFjdGl2aXR5SWQsIFwiL2RlZmF1bHRfdmFsdWVzXCIpLCBkZWZhdWx0VmFsdWVzLnZhbHVlKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSk7IH0sIDUwMDApO1xuICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IHJlc3BvbnNlID09PSBudWxsIHx8IHJlc3BvbnNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0VHlwZS52YWx1ZSA9IHJlc3BvbnNlID09PSBudWxsIHx8IHJlc3BvbnNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgZGVmYXVsdEVycm9ycy52YWx1ZSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBkZWZhdWx0RXJyb3JzLnZhbHVlKSwgKF9hID0gZXJyb3IucmVzcG9uc2UuZGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmVycm9ycyk7XG4gICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudmFsdWUgPSAoX2IgPSBlcnJvci5yZXNwb25zZS5kYXRhKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgcHJvcHM6IHByb3BzLCBkZWZhdWx0VmFsdWVzOiBkZWZhdWx0VmFsdWVzLCBkZWZhdWx0RXJyb3JzOiBkZWZhdWx0RXJyb3JzLCBlcnJvclJlc2V0OiBlcnJvclJlc2V0LCBsb2FkZXJWaXNpYmlsaXR5OiBsb2FkZXJWaXNpYmlsaXR5LCB0b2FzdFZpc2liaWxpdHk6IHRvYXN0VmlzaWJpbGl0eSwgdG9hc3RNZXNzYWdlOiB0b2FzdE1lc3NhZ2UsIHRvYXN0VHlwZTogdG9hc3RUeXBlLCBzdWJtaXRGb3JtOiBzdWJtaXRGb3JtLCBNdWx0aXNlbGVjdDogbXVsdGlzZWxlY3RfMS5kZWZhdWx0LCBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LCBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG4vLyBjb21wb25lbnRzXG52YXIgSW5kZXhfMSA9IHJlcXVpcmUoXCIuL2VsZW1lbnRzL0luZGV4XCIpO1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbnZhciBSYWRpYWxQcm9ncmVzc0Jhcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9SYWRpYWxQcm9ncmVzc0Jhci52dWVcIikpO1xudmFyIFB1Ymxpc2hCdXR0b25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9QdWJsaXNoQnV0dG9uLnZ1ZVwiKSk7XG52YXIgVW5QdWJsaXNoQnV0dG9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvVW5QdWJsaXNoQnV0dG9uLnZ1ZVwiKSk7XG52YXIgRGVsZXRlQnV0dG9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvRGVsZXRlQnV0dG9uLnZ1ZVwiKSk7XG52YXIgU3RpY2t5RXJyb3JzX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1N0aWNreUVycm9ycy52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciBFcnJvclBvcFVwX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0Vycm9yUG9wVXAudnVlXCIpKTtcbnZhciB0aXRsZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL3RpdGxlXCIpKTtcbi8vIEFjdGl2aXR5IENvbXBvbmVudHNcbnZhciBBY3Rpdml0aWVzRWxlbWVudHNfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkFjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXRpZXNFbGVtZW50cy52dWVcIikpO1xudmFyIEFjdGl2aXR5RWxlbWVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQWN0aXZpdHkvcGFydGlhbHMvQWN0aXZpdHlFbGVtZW50LnZ1ZVwiKSk7XG52YXIgUHJldmlvdXNseVB1Ymxpc2hlZF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zdGF0dXMvUHJldmlvdXNseVB1Ymxpc2hlZC52dWVcIikpO1xuLy8gVnVleCBTdG9yZVxudmFyIHNob3dfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL3Nob3dcIik7XG52YXIgaW5kZXhfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL2luZGV4XCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFByb2dyZXNzQmFyOiBSYWRpYWxQcm9ncmVzc0Jhcl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBFbGVtZW50czogQWN0aXZpdGllc0VsZW1lbnRzX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEFjdGl2aXR5RWxlbWVudDogQWN0aXZpdHlFbGVtZW50X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFJlc3VsdDogSW5kZXhfMS5SZXN1bHQsXG4gICAgICAgIFB1Ymxpc2g6IFB1Ymxpc2hCdXR0b25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgRXJyb3JzOiBTdGlja3lFcnJvcnNfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVW5QdWJsaXNoOiBVblB1Ymxpc2hCdXR0b25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgRGVsZXRlQnV0dG9uOiBEZWxldGVCdXR0b25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUHJldmlvdXNseVB1Ymxpc2hlZDogUHJldmlvdXNseVB1Ymxpc2hlZF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBFcnJvclBvcFVwOiBFcnJvclBvcFVwX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZ3JvdXBzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZpdHk6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwcm9ncmVzczoge1xuICAgICAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvYXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0dXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICByZXN1bHRzOiB7XG4gICAgICAgICAgICB0eXBlOiBBcnJheSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0cmFuc2FjdGlvbnM6IHtcbiAgICAgICAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNvcmVDb21wbGV0ZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaWF0aVZhbGlkYXRvclJlc3BvbnNlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaW1wb3J0QWN0aXZpdHlFcnJvcjoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgX2IgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIHR5cGVzID0gX2IudHlwZXMsIGNvcmVDb21wbGV0ZWQgPSBfYi5jb3JlQ29tcGxldGVkO1xuICAgICAgICB2YXIgcmVtb3ZlZCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3JlbW92ZWQnKTtcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIHNob3dfMS5kZXRhaWxTdG9yZSkoKTtcbiAgICAgICAgdmFyIGluZGV4U3RvcmUgPSAoMCwgaW5kZXhfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgdmFyIHNob3dTaWRlYmFyID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcG9zaXRpb25ZID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciBzY3JlZW5XaWR0aCA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgc2hvd1NpZGViYXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb3IgbW9kYWwgcG9wdXAgY29tcGxldGVkXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgX2MgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgZGVsZXRlVmFsdWUgPSBfY1swXSwgZGVsZXRlVG9nZ2xlID0gX2NbMV07XG4gICAgICAgIHZhciBfZCA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBkb3dubG9hZFZhbHVlID0gX2RbMF0sIGRvd25sb2FkVG9nZ2xlID0gX2RbMV07XG4gICAgICAgIHZhciB0b2dnbGVTaWRlYmFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd1NpZGViYXIudmFsdWUgPSAhc2hvd1NpZGViYXIudmFsdWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBoYW5kbGVTY3JvbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwb3NpdGlvblkudmFsdWUgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGlzdG9wVmlzaWJsZSA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uWS52YWx1ZSA9PT0gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB3aWR0aCA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVtb3ZlZCkge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSAnUmVtb3ZlZCBzdWNjZXNmdWxseSc7XG4gICAgICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHNjcmVlbldpZHRoLnZhbHVlID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2FsY1dpZHRoID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBzY3JlZW5XaWR0aC52YWx1ZSA9IGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xuICAgICAgICAgICAgaWYgKHNjcmVlbldpZHRoLnZhbHVlID4gMTAyNCkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNob3dTaWRlYmFyLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc2hvd1NpZGViYXIudmFsdWU7IH0sIGZ1bmN0aW9uIChzaWRlYmFyKSB7XG4gICAgICAgICAgICBpZiAoc2lkZWJhcikge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gdG9hc3REYXRhLnZpc2liaWxpdHk7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWdub3JlVG9hc3RVcGRhdGUoKTtcbiAgICAgICAgICAgIH0sIDEwMDAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHcm91cGluZyBhbGwgdGhlIGRhdGEncyBmb3Igc2Nyb2xsIGZ1bmN0aW9uXG4gICAgICAgICAqXG4gICAgICAgICAqIHRoaXMgZGF0YSBpcyBjcmVhdGVkIHVzaW5nIHByb3BzLmVsZW1lbnRfZ3JvdXAgYW5kIHByb3BzLmFjdGl2aXR5XG4gICAgICAgICAqL1xuICAgICAgICB2YXIgX2UgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIGdyb3VwcyA9IF9lLmdyb3VwcywgYWN0aXZpdHkgPSBfZS5hY3Rpdml0eSwgZWxlbWVudHMgPSBfZS5lbGVtZW50cywgc3RhdHVzID0gX2Uuc3RhdHVzLCB0cmFuc2FjdGlvbnMgPSBfZS50cmFuc2FjdGlvbnMsIGdyb3VwZWREYXRhID0gZ3JvdXBzLnZhbHVlLCBhY3Rpdml0eVByb3BzID0gYWN0aXZpdHkudmFsdWUsIGFjdGl2aXRpZXMgPSBncm91cHMudmFsdWUsIGVsZW1lbnRQcm9wcyA9IGVsZW1lbnRzLnZhbHVlLCBzdGF0dXNQcm9wcyA9IHN0YXR1cy52YWx1ZSwgdHJhbnNhY3Rpb25Qcm9wcyA9IHRyYW5zYWN0aW9ucy52YWx1ZTtcbiAgICAgICAgdmFyIHJlc3VsdHMgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykucmVzdWx0cztcbiAgICAgICAgYWN0aXZpdHlQcm9wcy5yZXN1bHQgPSByZXN1bHRzLnZhbHVlO1xuICAgICAgICBhY3Rpdml0eVByb3BzLnRyYW5zYWN0aW9ucyA9IHRyYW5zYWN0aW9uUHJvcHM7XG4gICAgICAgIC8vIGdlbmVyYXRpbmcgYXZhaWxhYmxlIGVsZW1lbnRzXG4gICAgICAgIE9iamVjdC5rZXlzKGFjdGl2aXRpZXMpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICB2YXIgZmxhZyA9IGZhbHNlO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoYWN0aXZpdGllc1trZXldWydlbGVtZW50cyddKS5tYXAoZnVuY3Rpb24gKGspIHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYWN0aXZpdHlQcm9wc1trXSA9PT0gJ251bWJlcicgfHxcbiAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiBhY3Rpdml0eVByb3BzW2tdID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdHlQcm9wc1trXSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoYWN0aXZpdHlQcm9wc1trXSkubGVuZ3RoKSkge1xuICAgICAgICAgICAgICAgICAgICBhY3Rpdml0aWVzW2tleV1bJ2VsZW1lbnRzJ11ba11bJ2NvbnRlbnQnXSA9IGFjdGl2aXR5UHJvcHNba107XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2aXRpZXNba2V5XVsnZWxlbWVudHMnXVtrXVsnaG92ZXJfdGV4dCddID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChfYSA9IGVsZW1lbnRQcm9wc1trXVsnaG92ZXJfdGV4dCddKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllc1trZXldWydlbGVtZW50cyddW2tdWyd3YXJuaW5nX2luZm9fdGV4dCddID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChfYiA9IGVsZW1lbnRQcm9wc1trXVsnd2FybmluZ19pbmZvX3RleHQnXSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJyc7XG4gICAgICAgICAgICAgICAgICAgIGZsYWcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGFjdGl2aXRpZXNba2V5XVtrXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChmbGFnID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBhY3Rpdml0aWVzW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBnZW5lcmF0aW5nIGF2YWlsYWJsZSBjYXRlZ29yaWVzIG9mIGVsZW1lbnRzXG4gICAgICAgIE9iamVjdC5rZXlzKGdyb3VwZWREYXRhKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhY3Rpdml0aWVzLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBlZERhdGFba2V5XVsnc3RhdHVzJ10gPSAnZW5hYmxlZCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBncm91cGVkRGF0YVtrZXldWydzdGF0dXMnXSA9ICdkaXNhYmxlZCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogR3JvdXBpbmcgYWxsIGVsZW1lbnRzIGFuZCB0aGVpcnMgY29tcGxldGVkIHN0YXR1c1xuICAgICAgICAgKlxuICAgICAgICAgKiBjb21iaW5pbmcgcHJvcHMuZWxlbWVudHMgYW5kIHByb3BzLnN0YXR1c1xuICAgICAgICAgKlxuICAgICAgICAgKiBAcmV0dXJucyBvYmplY3RcbiAgICAgICAgICovXG4gICAgICAgIE9iamVjdC5rZXlzKGVsZW1lbnRQcm9wcykubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBlbGVtZW50UHJvcHNba2V5XVsnY29tcGxldGVkJ10gPSAoX2EgPSBzdGF0dXNQcm9wc1trZXldKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBmYWxzZTtcbiAgICAgICAgICAgIGVsZW1lbnRQcm9wc1trZXldWydub3RfY29tcGxldGVkJ10gPSAhKChfYiA9IHN0YXR1c1Byb3BzW2tleV0pICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IGZhbHNlKTtcbiAgICAgICAgICAgIGVsZW1lbnRQcm9wc1trZXldWydoYXNfZGF0YSddID0gMDtcbiAgICAgICAgICAgIGlmIChrZXkgaW4gYWN0aXZpdHlQcm9wcykge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYWN0aXZpdHlQcm9wc1trZXldID09PSAnbnVtYmVyJyB8fFxuICAgICAgICAgICAgICAgICAgICAodHlwZW9mIGFjdGl2aXR5UHJvcHNba2V5XSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXR5UHJvcHNba2V5XSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoYWN0aXZpdHlQcm9wc1trZXldKS5sZW5ndGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhhY3Rpdml0eVByb3BzW2tleV0pLmxlbmd0aCA+IDAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXR5UHJvcHNba2V5XS50b1N0cmluZy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50UHJvcHNba2V5XVsnaGFzX2RhdGEnXSA9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogRmluZGluZyBjdXJyZW50IGxhbmd1YWdlIC0gYWN0aXZpdHkgdGl0bGVcbiAgICAgICAgICovXG4gICAgICAgIHZhciBwYWdlVGl0bGUgPSAoMCwgdGl0bGVfMS5kZWZhdWx0KShhY3Rpdml0eVByb3BzLnRpdGxlLCAoX2EgPSBhY3Rpdml0eVByb3BzLmRlZmF1bHRfZmllbGRfdmFsdWVzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGVmYXVsdF9sYW5ndWFnZSk7XG4gICAgICAgIGZ1bmN0aW9uIGZvcm1hdFRpdGxlKHRpdGxlKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgdHJhbnNsYXRlZFRpdGxlID0gKF9hID0gdHJhbnNsYXRlLnRleHRGcm9tS2V5KFwiYWN0aXZpdHlfZGV0YWlsLlwiLmNvbmNhdCh0aXRsZSwgXCIubGFiZWxcIikpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aXRsZS5yZXBsYWNlKC9fL2dpLCAnICcpO1xuICAgICAgICAgICAgcmV0dXJuICgwLCB2dWVfMS5jYXBpdGFsaXplKSh0cmFuc2xhdGVkVGl0bGUpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaWdub3JlVXBkYXRlcyA9ICgwLCBjb3JlXzEud2F0Y2hJZ25vcmFibGUpKHRvYXN0RGF0YSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9LCB7XG4gICAgICAgICAgICBmbHVzaDogJ3N5bmMnLFxuICAgICAgICB9KS5pZ25vcmVVcGRhdGVzO1xuICAgICAgICB2YXIgaWdub3JlVG9hc3RVcGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZ25vcmVVcGRhdGVzKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9ICcnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwdWJsaXNoU3RhdHVzID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBsaW5rZWRfdG9faWF0aTogYWN0aXZpdHlQcm9wcy5saW5rZWRfdG9faWF0aSxcbiAgICAgICAgICAgIHN0YXR1czogYWN0aXZpdHlQcm9wcy5zdGF0dXMsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyB2dWUgcHJvdmlkZXNcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCd0eXBlcycsIHR5cGVzLnZhbHVlKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdjb3JlQ29tcGxldGVkJywgY29yZUNvbXBsZXRlZC52YWx1ZSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgndG9hc3RNZXNzYWdlJywgdG9hc3RNZXNzYWdlKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCd0b2FzdERhdGEnLCB0b2FzdERhdGEpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ2Vycm9yRGF0YScsIGVycm9yRGF0YSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnaW1wb3J0QWN0aXZpdHlFcnJvcicsIHByb3BzLmltcG9ydEFjdGl2aXR5RXJyb3IpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ2FjdGl2aXR5SWQnLCBwcm9wcy5hY3Rpdml0eS5pZCk7XG4gICAgICAgIGluZGV4U3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVNlbGVjdGVkQWN0aXZpdGllcycsIFthY3Rpdml0eS52YWx1ZS5pZF0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogQnJlYWRjcnVtYiBkYXRhXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgYnJlYWRjcnVtYkRhdGEgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRyYW5zbGF0ZS50ZXh0RnJvbUtleSgnYWN0aXZpdGllcy55b3VyX2FjdGl2aXRpZXMnKSxcbiAgICAgICAgICAgICAgICBsaW5rOiAnL2FjdGl2aXRpZXMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcGFnZVRpdGxlLFxuICAgICAgICAgICAgICAgIGxpbms6ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqICBHbG9iYWwgU3RhdGVcbiAgICAgICAgICovXG4gICAgICAgIHZhciBpYXRpVmFsaWRhdG9yUmVzcG9uc2UgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuaWF0aVZhbGlkYXRvclJlc3BvbnNlO1xuICAgICAgICB2YXIgdmFsaWRhdGlvblJlc3VsdCA9IGlhdGlWYWxpZGF0b3JSZXNwb25zZS52YWx1ZTtcbiAgICAgICAgaWYgKHZhbGlkYXRpb25SZXN1bHQgJiYgdmFsaWRhdGlvblJlc3VsdC5lcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVB1Ymxpc2hFcnJvcnMnLCB2YWxpZGF0aW9uUmVzdWx0LmVycm9ycyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHB1Ymxpc2hTdGF0dXMubGlua2VkX3RvX2lhdGkpIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVVblB1Ymxpc2hlZCcsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVVuUHVibGlzaGVkJywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghKHB1Ymxpc2hTdGF0dXMubGlua2VkX3RvX2lhdGkgJiYgcHVibGlzaFN0YXR1cy5zdGF0dXMgPT09ICdwdWJsaXNoZWQnKSkge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVNob3dQdWJsaXNoZWQnLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTaG93UHVibGlzaGVkJywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0b1NuYWtlQ2FzZSA9IGZ1bmN0aW9uIChzZW50ZW5jZSkge1xuICAgICAgICAgICAgdmFyIHdvcmRzID0gc2VudGVuY2Uuc3BsaXQoJyAnKTtcbiAgICAgICAgICAgIHJldHVybiB3b3Jkcy5tYXAoZnVuY3Rpb24gKHdvcmQpIHsgcmV0dXJuIHdvcmQudG9Mb3dlckNhc2UoKTsgfSkuam9pbignXycpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3JvdXBlZERhdGE6IGdyb3VwZWREYXRhLFxuICAgICAgICAgICAgYWN0aXZpdGllczogYWN0aXZpdGllcyxcbiAgICAgICAgICAgIGRlbGV0ZVZhbHVlOiBkZWxldGVWYWx1ZSxcbiAgICAgICAgICAgIGRlbGV0ZVRvZ2dsZTogZGVsZXRlVG9nZ2xlLFxuICAgICAgICAgICAgZG93bmxvYWRWYWx1ZTogZG93bmxvYWRWYWx1ZSxcbiAgICAgICAgICAgIGRvd25sb2FkVG9nZ2xlOiBkb3dubG9hZFRvZ2dsZSxcbiAgICAgICAgICAgIHRvYXN0RGF0YTogdG9hc3REYXRhLFxuICAgICAgICAgICAgZWxlbWVudFByb3BzOiBlbGVtZW50UHJvcHMsXG4gICAgICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgICAgICBmb3JtYXRUaXRsZTogZm9ybWF0VGl0bGUsXG4gICAgICAgICAgICBwYWdlVGl0bGU6IHBhZ2VUaXRsZSxcbiAgICAgICAgICAgIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLFxuICAgICAgICAgICAgcHVibGlzaFN0YXR1czogcHVibGlzaFN0YXR1cyxcbiAgICAgICAgICAgIGJyZWFkY3J1bWJEYXRhOiBicmVhZGNydW1iRGF0YSxcbiAgICAgICAgICAgIHN0b3JlOiBzdG9yZSxcbiAgICAgICAgICAgIGFjdGl2aXR5UHJvcHM6IGFjdGl2aXR5UHJvcHMsXG4gICAgICAgICAgICBlcnJvckRhdGE6IGVycm9yRGF0YSxcbiAgICAgICAgICAgIHNob3dTaWRlYmFyOiBzaG93U2lkZWJhcixcbiAgICAgICAgICAgIHRvZ2dsZVNpZGViYXI6IHRvZ2dsZVNpZGViYXIsXG4gICAgICAgICAgICBpc3RvcFZpc2libGU6IGlzdG9wVmlzaWJsZSxcbiAgICAgICAgICAgIHNjcmVlbldpZHRoOiBzY3JlZW5XaWR0aCxcbiAgICAgICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgdG9TbmFrZUNhc2U6IHRvU25ha2VDYXNlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgWGxzVXBsb2FkSW5kaWNhdG9yX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1hsc1VwbG9hZEluZGljYXRvci52dWVcIikpO1xudmFyIEVtcHR5QWN0aXZpdHlfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vcGFydGlhbHMvRW1wdHlBY3Rpdml0eS52dWVcIikpO1xudmFyIFRhYmxlTGF5b3V0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3BhcnRpYWxzL1RhYmxlTGF5b3V0LnZ1ZVwiKSk7XG52YXIgVGFibGVQYWdpbmF0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9wYXJ0aWFscy9QYWdlVGl0bGUudnVlXCIpKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgRXJyb3JNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0Vycm9yTWVzc2FnZS52dWVcIikpO1xudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbnZhciBzaG93XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9zaG93XCIpO1xudmFyIGNvcmVfMiA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xudmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG52YXIgYWN0aXZpdHlTdG9yZSA9ICgwLCBzaG93XzEuZGV0YWlsU3RvcmUpKCk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5Q29tcG9uZW50JyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEVtcHR5QWN0aXZpdHk6IEVtcHR5QWN0aXZpdHlfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnZVRpdGxlOiBQYWdlVGl0bGVfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnaW5hdGlvbjogVGFibGVQYWdpbmF0aW9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRhYmxlTGF5b3V0OiBUYWJsZUxheW91dF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBFcnJvck1lc3NhZ2U6IEVycm9yTWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBYbHNVcGxvYWRJbmRpY2F0b3I6IFhsc1VwbG9hZEluZGljYXRvcl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgdG9hc3Q6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBhY3Rpdml0aWVzID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7fSk7XG4gICAgICAgIHZhciBpc0xvYWRpbmcgPSAoMCwgdnVlXzEucmVmKSh0cnVlKTtcbiAgICAgICAgdmFyIGFjdGl2aXR5TmFtZSA9ICgwLCB2dWVfMS5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGZpbGVDb3VudCA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICB2YXIgZG93bmxvYWRDb21wbGV0ZWQgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBjbG9zZU1vZGVsID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgeGxzRG93bmxvYWRTdGF0dXMgPSAoMCwgdnVlXzEucmVmKSgnJyk7XG4gICAgICAgIHZhciB4bHNEYXRhID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZG93bmxvYWRpbmcgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzdGFydEJ1bGtQdWJsaXNoID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgeGxzRmFpbGVkID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgeGxzRmFpbGVkTWVzc2FnZSA9ICgwLCB2dWVfMS5yZWYpKCcnKTtcbiAgICAgICAgdmFyIHByb2Nlc3NpbmcgPSAoMCwgdnVlXzEucmVmKSgpO1xuICAgICAgICB2YXIgcHVibGlzaGluZ0FjdGl2aXRpZXMgPSAoMCwgdnVlXzEucmVmKSgpO1xuICAgICAgICB2YXIgdXBsb2FkQ29tcGxldGUgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBpbXBvcnRDb21wbGV0ZWQgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b3RhbENvdW50ID0gKDAsIHZ1ZV8xLnJlZikoKTtcbiAgICAgICAgdmFyIHByb2Nlc3NlZENvdW50ID0gKDAsIHZ1ZV8xLnJlZikoKTtcbiAgICAgICAgdmFyIHNob3dYbHNTdGF0dXMgPSAoMCwgdnVlXzEucmVmKSh0cnVlKTtcbiAgICAgICAgdmFyIHRhYmxlTG9hZGVyID0gKDAsIHZ1ZV8xLnJlZikodHJ1ZSk7XG4gICAgICAgIHZhciBkb3dubG9hZEFwaVVybCA9ICgwLCB2dWVfMS5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGN1cnJlbnRVUkwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICAgICAgdmFyIGVuZHBvaW50ID0gJyc7XG4gICAgICAgIHZhciBzaG93RW1wdHlUZW1wbGF0ZSA9IGZhbHNlO1xuICAgICAgICB2YXIgcGEgPSAoMCwgY29yZV8yLnVzZVN0b3JhZ2UpKCd2dWUtdXNlLWxvY2FsLXN0b3JhZ2UnLCB7XG4gICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllczogKF9hID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3B1Ymxpc2hpbmdBY3Rpdml0aWVzJykpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHt9LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGN1cnJlbnRVUkwuaW5jbHVkZXMoJz8nKSkge1xuICAgICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaDtcbiAgICAgICAgICAgIGVuZHBvaW50ID0gXCIvYWN0aXZpdGllcy9wYWdlXCIuY29uY2F0KHF1ZXJ5U3RyaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVuZHBvaW50ID0gXCIvYWN0aXZpdGllcy9wYWdlXCI7XG4gICAgICAgICAgICBzaG93RW1wdHlUZW1wbGF0ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICAvL2ZvciBzZXNzaW9uIG1lc3NhZ2VcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGZvciBwdWJsaXNoIGJ1dHRvblxuICAgICAgICB2YXIgdG9hc3RNZXNzYWdlID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcG9sbGluZ0Zvclhsc1N0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBjaGVja1N0YXR1cyA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvaW1wb3J0L3hscy9zdGF0dXMnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nLCBfaCwgX2osIF9rO1xuICAgICAgICAgICAgICAgICAgICBpZiAoKChfYSA9IHJlcy5kYXRhLmRhdGEpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5tZXNzYWdlKSA9PT0gJ1N0YXJ0ZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL3Jlc2V0XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbENvdW50LnZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZENvdW50LnZhbHVlID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkTWVzc2FnZS52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxDb3VudC52YWx1ZSA9IChfYiA9IHJlcy5kYXRhLmRhdGEpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi50b3RhbF9jb3VudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZENvdW50LnZhbHVlID0gKF9jID0gcmVzLmRhdGEuZGF0YSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnByb2Nlc3NlZF9jb3VudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZC52YWx1ZSA9ICEoKF9kID0gcmVzLmRhdGEuZGF0YSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLnN1Y2Nlc3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkTWVzc2FnZS52YWx1ZSA9IChfZSA9IHJlcy5kYXRhLmRhdGEpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICgoKF9mID0gcmVzLmRhdGEuZGF0YSkgPT09IG51bGwgfHwgX2YgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9mLm1lc3NhZ2UpID09PSAnUHJvY2Vzc2luZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghKChfaCA9IChfZyA9IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2cuZGF0YSkgPT09IG51bGwgfHwgX2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9oLnN1Y2Nlc3MpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAoKF9rID0gKF9qID0gcmVzLmRhdGEpID09PSBudWxsIHx8IF9qID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfai5kYXRhKSA9PT0gbnVsbCB8fCBfayA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2subWVzc2FnZSkgPT09ICdDb21wbGV0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZENvbXBsZXRlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tTdGF0dXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCAyNTAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5zdGFydFhsc0Rvd25sb2FkOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdwb2xsaW5nIHdhdGNoZXIgdHJpZ2dlcmVkJyk7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjaGVja0Rvd25sb2FkU3RhdHVzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBbc3RvcmUuc3RhdGUuc3RhcnRCdWxrUHVibGlzaCwgc3RvcmUuc3RhdGUuYnVsa3B1Ymxpc2hBY3Rpdml0aWVzXTsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBzdGFydEJ1bGtQdWJsaXNoLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllcy52YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtwdWJsaXNoQWN0aXZpdGllcy5wdWJsaXNoaW5nQWN0aXZpdGllcztcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdGFydEJ1bGtQdWJsaXNoLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5jb21wbGV0ZVhsc0Rvd25sb2FkOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGRvd25sb2FkQ29tcGxldGVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRYbHNEb3dubG9hZCcsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLmNsb3NlWGxzTW9kZWw7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY2hlY2tYbHNzdGF0dXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjaGVja1hsc3N0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9pbXBvcnQveGxzL3Byb2dyZXNzX3N0YXR1cycpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2g7XG4gICAgICAgICAgICAgICAgYWN0aXZpdHlOYW1lLnZhbHVlID0gKF9iID0gKF9hID0gcmVzID09PSBudWxsIHx8IHJlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzLmRhdGEpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zdGF0dXMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICB4bHNEYXRhLnZhbHVlID0gT2JqZWN0LmtleXMocmVzLmRhdGEuc3RhdHVzKS5sZW5ndGggPiAwO1xuICAgICAgICAgICAgICAgIGlmICgoKF9kID0gKF9jID0gcmVzID09PSBudWxsIHx8IHJlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzLmRhdGEpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5zdGF0dXMpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5zdGF0dXMpID09PSAnY29tcGxldGVkJykge1xuICAgICAgICAgICAgICAgICAgICB1cGxvYWRDb21wbGV0ZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCgoX2YgPSAoX2UgPSByZXMgPT09IG51bGwgfHwgcmVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXMuZGF0YSkgPT09IG51bGwgfHwgX2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9lLnN0YXR1cykgPT09IG51bGwgfHwgX2YgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9mLnN0YXR1cykgPT09ICdmYWlsZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZE1lc3NhZ2UudmFsdWUgPSAoX2ggPSAoX2cgPSByZXMgPT09IG51bGwgfHwgcmVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXMuZGF0YSkgPT09IG51bGwgfHwgX2cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9nLnN0YXR1cykgPT09IG51bGwgfHwgX2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9oLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKE9iamVjdC5rZXlzKHJlcy5kYXRhLnN0YXR1cykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL3Jlc2V0XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbENvdW50LnZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZENvdW50LnZhbHVlID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkTWVzc2FnZS52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9sbGluZ0Zvclhsc1N0YXR1cygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjaGVja0Rvd25sb2FkU3RhdHVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZG93bmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHZhciBjaGVja0Rvd25sb2FkID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9hY3Rpdml0aWVzL2Rvd25sb2FkLXhscy1wcm9ncmVzcy1zdGF0dXMnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsZUNvdW50LnZhbHVlID0gcmVzLmRhdGEuZmlsZV9jb3VudDtcbiAgICAgICAgICAgICAgICAgICAgeGxzRG93bmxvYWRTdGF0dXMudmFsdWUgPSByZXMuZGF0YS5zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIGRvd25sb2FkQXBpVXJsLnZhbHVlID0gcmVzLmRhdGEudXJsO1xuICAgICAgICAgICAgICAgICAgICBkb3dubG9hZGluZy52YWx1ZSA9ICEhcmVzLmRhdGEuc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICBpZiAoeGxzRG93bmxvYWRTdGF0dXMudmFsdWUgPT09ICdjb21wbGV0ZWQnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNEb3dubG9hZFN0YXR1cy52YWx1ZSA9PT0gJ2ZhaWxlZCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICFyZXMuZGF0YS5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tEb3dubG9hZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIDMwMDApO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLmNsb3NlWGxzTW9kZWw7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNoZWNrRG93bmxvYWRTdGF0dXMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzLnZhbHVlID0gKF9hID0gcGEudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5wdWJsaXNoaW5nQWN0aXZpdGllcztcbiAgICAgICAgICAgIGNoZWNrWGxzc3RhdHVzKCk7XG4gICAgICAgICAgICBjaGVja0Rvd25sb2FkU3RhdHVzKCk7XG4gICAgICAgICAgICBpZiAocHJvcHMudG9hc3QubWVzc2FnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHByb3BzLnRvYXN0LnR5cGU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcHJvcHMudG9hc3QubWVzc2FnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB0YWJsZUxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChlbmRwb2ludCkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGFjdGl2aXRpZXMsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGFibGVMb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNob3dFbXB0eVRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc0VtcHR5LnZhbHVlID0gIXJlc3BvbnNlLmRhdGEuZGF0YS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRvYXN0RGF0YS52aXNpYmlsaXR5OyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlnbm9yZVRvYXN0VXBkYXRlKCk7XG4gICAgICAgICAgICB9LCAxMDAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgc3RhdGUgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHNob3dCdXR0b25zOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpc0VtcHR5ID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd09ySGlkZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICBpZiAoZGF0YSA9PT0gdm9pZCAwKSB7IGRhdGEgPSBBcnJheTsgfVxuICAgICAgICAgICAgaWYgKGRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHN0YXRlLnNob3dCdXR0b25zID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0YXRlLnNob3dCdXR0b25zID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGZ1bmN0aW9uIGZldGNoQWN0aXZpdGllcyhhY3RpdmVfcGFnZSkge1xuICAgICAgICAgICAgdGFibGVMb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gJyc7XG4gICAgICAgICAgICBpZiAoY3VycmVudFVSTC5pbmNsdWRlcygnPycpKSB7XG4gICAgICAgICAgICAgICAgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL2FjdGl2aXRpZXMvcGFnZS8nICsgYWN0aXZlX3BhZ2UgKyBxdWVyeVN0cmluZykudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihhY3Rpdml0aWVzLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICBpc0VtcHR5LnZhbHVlID0gIXJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRhYmxlTG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGlnbm9yZVVwZGF0ZXMgPSAoMCwgY29yZV8xLndhdGNoSWdub3JhYmxlKSh0b2FzdERhdGEsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSwge1xuICAgICAgICAgICAgZmx1c2g6ICdzeW5jJyxcbiAgICAgICAgfSkuaWdub3JlVXBkYXRlcztcbiAgICAgICAgdmFyIGlnbm9yZVRvYXN0VXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWdub3JlVXBkYXRlcyhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSAnJztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAvLyBmb3IgcmVmcmVzaCB0b2FzdCBtZXNzYWdlXG4gICAgICAgIC8vIGxldCByZWZyZXNoVG9hc3RNc2cgPSByZWYoZmFsc2UpO1xuICAgICAgICB2YXIgcmVmcmVzaFRvYXN0TXNnID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIHJlZnJlc2hNZXNzYWdlVHlwZTogdHJ1ZSxcbiAgICAgICAgICAgIHJlZnJlc2hNZXNzYWdlOiB0cmFuc2xhdGUuZXJyb3IoJ2FjdGl2aXR5X2hhc19iZWVuX3B1Ymxpc2hlZF9zdWNjZXNzZnVsbHknKSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQcm92aWRlXG4gICAgICAgICAqL1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3RvYXN0TWVzc2FnZScsIHRvYXN0TWVzc2FnZSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgndG9hc3REYXRhJywgdG9hc3REYXRhKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdlcnJvckRhdGEnLCBlcnJvckRhdGEpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3JlZnJlc2hUb2FzdE1zZycsIHJlZnJlc2hUb2FzdE1zZyk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgneGxzRmFpbGVkTWVzc2FnZScsIHhsc0ZhaWxlZE1lc3NhZ2UpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3Byb2Nlc3NpbmcnLCBwcm9jZXNzaW5nKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdkb3dubG9hZGluZycsIGRvd25sb2FkaW5nKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdmaWxlQ291bnQnLCBmaWxlQ291bnQpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3hsc0Rvd25sb2FkU3RhdHVzJywgeGxzRG93bmxvYWRTdGF0dXMpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ2Rvd25sb2FkQXBpVXJsJywgZG93bmxvYWRBcGlVcmwpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ2Nsb3NlTW9kZWwnLCBjbG9zZU1vZGVsKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdhY3Rpdml0aWVzJywgcHVibGlzaGluZ0FjdGl2aXRpZXMpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ2NvbXBsZXRlZCcsIHVwbG9hZENvbXBsZXRlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFjdGl2aXRpZXM6IGFjdGl2aXRpZXMsXG4gICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICBpc0VtcHR5OiBpc0VtcHR5LFxuICAgICAgICAgICAgaXNMb2FkaW5nOiBpc0xvYWRpbmcsXG4gICAgICAgICAgICBzaG93T3JIaWRlOiBzaG93T3JIaWRlLFxuICAgICAgICAgICAgZmV0Y2hBY3Rpdml0aWVzOiBmZXRjaEFjdGl2aXRpZXMsXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLFxuICAgICAgICAgICAgcmVmcmVzaFRvYXN0TXNnOiByZWZyZXNoVG9hc3RNc2csXG4gICAgICAgICAgICBlcnJvckRhdGE6IGVycm9yRGF0YSxcbiAgICAgICAgICAgIHRhYmxlTG9hZGVyOiB0YWJsZUxvYWRlcixcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeGxzRGF0YTogeGxzRGF0YSxcbiAgICAgICAgICAgIGFjdGl2aXR5TmFtZTogYWN0aXZpdHlOYW1lLFxuICAgICAgICAgICAgcHJvY2Vzc2VkQ291bnQ6IHByb2Nlc3NlZENvdW50LFxuICAgICAgICAgICAgdG90YWxDb3VudDogdG90YWxDb3VudCxcbiAgICAgICAgICAgIHNob3dYbHNTdGF0dXM6IHNob3dYbHNTdGF0dXMsXG4gICAgICAgICAgICB4bHNGYWlsZWQ6IHhsc0ZhaWxlZCxcbiAgICAgICAgICAgIHhsc0ZhaWxlZE1lc3NhZ2U6IHhsc0ZhaWxlZE1lc3NhZ2UsXG4gICAgICAgICAgICBpbXBvcnRDb21wbGV0ZWQ6IGltcG9ydENvbXBsZXRlZCxcbiAgICAgICAgICAgIGRvd25sb2FkQ29tcGxldGVkOiBkb3dubG9hZENvbXBsZXRlZCxcbiAgICAgICAgICAgIHVwbG9hZENvbXBsZXRlOiB1cGxvYWRDb21wbGV0ZSxcbiAgICAgICAgICAgIGRvd25sb2FkaW5nOiBkb3dubG9hZGluZyxcbiAgICAgICAgICAgIHN0YXJ0QnVsa1B1Ymxpc2g6IHN0YXJ0QnVsa1B1Ymxpc2gsXG4gICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllczogcHVibGlzaGluZ0FjdGl2aXRpZXMsXG4gICAgICAgICAgICBhY3Rpdml0eVN0b3JlOiBhY3Rpdml0eVN0b3JlLFxuICAgICAgICAgICAgcGE6IHBhLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vY29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIG11bHRpc2VsZWN0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkB2dWVmb3JtL211bHRpc2VsZWN0XCIpKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBNdWx0aXNlbGVjdDogbXVsdGlzZWxlY3RfMS5kZWZhdWx0LFxuICAgICAgICBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbW9kYWxWYWx1ZToge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ2Nsb3NlTW9kYWwnLCAndG9hc3QnXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzLCBfYSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGZvcm1EYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBuYXJyYXRpdmU6ICcnLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6ICcnLFxuICAgICAgICAgICAgYWN0aXZpdHlfaWRlbnRpZmllcjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBuYXJyYXRpdmU6ICcnLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6ICcnLFxuICAgICAgICAgICAgYWN0aXZpdHlfaWRlbnRpZmllcjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgbG9hZGVyVmlzaWJpbGl0eSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGxhbmd1YWdlcyA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgb3JnYW5pemF0aW9uID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7fSk7XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvYWN0aXZpdGllcy9jb2RlbGlzdHMnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24obGFuZ3VhZ2VzLCByZXNwb25zZS5kYXRhLmxhbmd1YWdlcyk7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ob3JnYW5pemF0aW9uLCByZXNwb25zZS5kYXRhLm9yZ2FuaXphdGlvbik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9KTtcbiAgICAgICAgZnVuY3Rpb24gY2xvc2VNb2RhbCgpIHtcbiAgICAgICAgICAgIGVtaXQoJ2Nsb3NlTW9kYWwnKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzdG9yZUFjdGl2aXR5KCkge1xuICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL2FjdGl2aXR5JywgZm9ybURhdGEpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBlbWl0KCdjbG9zZU1vZGFsJyk7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KHJlc3BvbnNlLmRhdGEuaWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHZhciBlcnJvcnMgPSBlcnJvci5yZXNwb25zZS5kYXRhLmVycm9ycztcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEubmFycmF0aXZlID0gZXJyb3JzLm5hcnJhdGl2ZSA/IGVycm9ycy5uYXJyYXRpdmVbMF0gOiAnJztcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEubGFuZ3VhZ2UgPSBlcnJvcnMubGFuZ3VhZ2UgPyBlcnJvcnMubGFuZ3VhZ2VbMF0gOiAnJztcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEuYWN0aXZpdHlfaWRlbnRpZmllciA9IGVycm9ycy5hY3Rpdml0eV9pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgID8gZXJyb3JzLmFjdGl2aXR5X2lkZW50aWZpZXJbMF1cbiAgICAgICAgICAgICAgICAgICAgOiAnJztcbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgZm9ybURhdGE6IGZvcm1EYXRhLFxuICAgICAgICAgICAgZXJyb3JEYXRhOiBlcnJvckRhdGEsXG4gICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5OiBsb2FkZXJWaXNpYmlsaXR5LFxuICAgICAgICAgICAgbGFuZ3VhZ2VzOiBsYW5ndWFnZXMsXG4gICAgICAgICAgICBvcmdhbml6YXRpb246IG9yZ2FuaXphdGlvbixcbiAgICAgICAgICAgIGNsb3NlTW9kYWw6IGNsb3NlTW9kYWwsXG4gICAgICAgICAgICBzdG9yZUFjdGl2aXR5OiBzdG9yZUFjdGl2aXR5LFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRXJyb3JJdGVtJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgbWVzc2FnZTogeyB0eXBlOiBTdHJpbmcsIGRlZmF1bHQ6ICcnIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBzZWxlY3RlZEFjdGl2aXRpZXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgnc2VsZWN0ZWRBY3Rpdml0aWVzJyk7XG4gICAgICAgIHZhciB0b2dnbGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBhY2NvcmRpb25Ub2dnbGUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRUYXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gY3VycmVudFRhcmdldC5jbG9zZXN0KCcuYWNjb3JkaW9uJykucXVlcnlTZWxlY3RvcignLmFjY29yZGlvbi1jb250ZW50Jyk7XG4gICAgICAgICAgICB2YXIgZWxIZWlnaHQgPSAoX2EgPSB0YXJnZXQgPT09IG51bGwgfHwgdGFyZ2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YXJnZXQucXVlcnlTZWxlY3RvcignZGl2JykpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbGllbnRIZWlnaHQ7XG4gICAgICAgICAgICBpZiAodG9nZ2xlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgICAgICB0b2dnbGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBhdXRvO1wiO1xuICAgICAgICAgICAgICAgICAgICB9LCA2MDApO1xuICAgICAgICAgICAgICAgICAgICB0b2dnbGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGVycm9yQ291bnQgPSBmdW5jdGlvbiAoZXJyb3JzKSB7XG4gICAgICAgICAgICB2YXIgZXJyb3JDb3VudCA9ICcnO1xuICAgICAgICAgICAgdmFyIHNjID0gdHJhbnNsYXRlLmdldFN0aWNreU9iamVjdCgnY29tbW9uJyk7XG4gICAgICAgICAgICBpZiAoZXJyb3JzID09PSBudWxsIHx8IGVycm9ycyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXJyb3JzLndhcm5pbmcpIHtcbiAgICAgICAgICAgICAgICBlcnJvckNvdW50ID0gXCJcIi5jb25jYXQoZXJyb3JzID09PSBudWxsIHx8IGVycm9ycyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXJyb3JzLmVycm9yLCBcIiBcIikuY29uY2F0KHNjLmVycm9ycywgXCIgXCIpLmNvbmNhdChzYy5hbmQsIFwiIFwiKS5jb25jYXQoZXJyb3JzID09PSBudWxsIHx8IGVycm9ycyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXJyb3JzLndhcm5pbmcsIFwiIFwiKS5jb25jYXQoc2Mud2FybmluZ3MsIFwiXFxuICAgICBcIikuY29uY2F0KHNjLndlcmVfZm91bmQsIFwiLlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGVycm9yQ291bnQgPSBcIlwiLmNvbmNhdChlcnJvcnMgPT09IG51bGwgfHwgZXJyb3JzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlcnJvcnMuY3JpdGljYWwsIFwiIFwiKS5jb25jYXQoc2MuY3JpdGljYWwsIFwiIFwiKS5jb25jYXQoc2MuZXJyb3JzLCBcIiBcIikuY29uY2F0KHNjLndlcmVfZm91bmQsIFwiLlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBlcnJvckNvdW50O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgc2VsZWN0ZWRBY3Rpdml0aWVzOiBzZWxlY3RlZEFjdGl2aXRpZXMsIHRvZ2dsZTogdG9nZ2xlLCBhY2NvcmRpb25Ub2dnbGU6IGFjY29yZGlvblRvZ2dsZSwgZXJyb3JDb3VudDogZXJyb3JDb3VudCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuLy9jb21wb25lbnRcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgUHJvZ3Jlc3NMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCIpKTtcbnZhciBWYWxpZGF0aW9uRXJyb3JzX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL1ZhbGlkYXRpb25FcnJvcnMudnVlXCIpKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG4vLyBWdWV4IFN0b3JlXG52YXIgaW5kZXhfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL2luZGV4XCIpO1xudmFyIEJ1bGtQdWJsaXNoaW5nRXJyb3JQb3B1cF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdWxrUHVibGlzaGluZ0Vycm9yUG9wdXAudnVlXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUHVibGlzaFNlbGVjdGVkJyxcbiAgICBwcm9wczoge1xuICAgICAgICB0eXBlOiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJ3ByaW1hcnknIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfYjtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqICBHbG9iYWwgU3RhdGVcbiAgICAgICAgICovXG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuICAgICAgICAvLyB0b2dnbGUgc3RhdGUgZm9yIG1vZGFsIHBvcHVwXG4gICAgICAgIHZhciBfYyA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBwdWJsaXNoQWxlcnRWYWx1ZSA9IF9jWzBdLCBwdWJsaXNoQWxlcnRUb2dnbGUgPSBfY1sxXTtcbiAgICAgICAgLy8gc3RhdGUgZm9yIHN0ZXAgb2YgdGhlIGZsb3dcbiAgICAgICAgdmFyIGJ1bGtQdWJsaXNoU3RlcCA9ICgwLCB2dWVfMi5yZWYpKDEpO1xuICAgICAgICB2YXIgYnVsa1B1Ymxpc2hTdGF0dXMgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHt9KTtcbiAgICAgICAgdmFyIGlzTG9hZGluZyA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHN0YXJ0UHVibGlzaCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hlZCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgLy8gZGlzcGxheS9oaWRlIHZhbGlkYXRvciBsb2FkZXJcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgLy8gRHluYW1pYyB0ZXh0IGZvciBsb2FkZXJcbiAgICAgICAgdmFyIGxvYWRlclRleHQgPSAoMCwgdnVlXzIucmVmKSh0cmFuc2xhdGUuY29tbW9uVGV4dCgncGxlYXNlX3dhaXQnKSk7XG4gICAgICAgIC8qU3RhdGVzIGZvciBCdWxrIHB1Ymxpc2ggY2FuY2VsbGF0aW9uIGZsb3cqL1xuICAgICAgICB2YXIgc2hvd0NhbmNlbENvbmZpcm1hdGlvblBvcHVwID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0NhbmNlbGxlZFBvcHVwID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgbWVzc2FnZU9uQ2FuY2VsbGF0aW9uID0gKDAsIHZ1ZV8yLnJlZikoJ05vIGJ1bGsgcHVibGlzaCB3ZXJlIGNhbmNlbGxlZCcpO1xuICAgICAgICAvLyByZXNldCBzdGVwIHRvIHplcm8gYWZ0ZXIgY2xvc2luZyBtb2RhbFxuICAgICAgICB2YXIgcmVzZXRQdWJsaXNoU3RlcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGJ1bGtQdWJsaXNoU3RlcC52YWx1ZSA9IDE7XG4gICAgICAgICAgICBwdWJsaXNoQWxlcnRWYWx1ZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgc2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlID0gW107XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwb3BVcFdpZHRoQ2hhbmdlID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgd2lkdGggPSAoMCwgdnVlXzIucmVmKSgnODI1Jyk7XG4gICAgICAgICAgICBzd2l0Y2ggKGJ1bGtQdWJsaXNoU3RlcC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgd2lkdGgudmFsdWUgPSAnNTgzJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICB3aWR0aC52YWx1ZSA9ICc4MDknO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHdpZHRoLnZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gdG9hc3QgdmlzaWJpbGl0eVxuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2Vycm9yRGF0YScpO1xuICAgICAgICB2YXIgZGlzcGxheVRvYXN0ID0gZnVuY3Rpb24gKG1lc3NhZ2UsIHR5cGUpIHtcbiAgICAgICAgICAgIGVycm9yRGF0YS5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgICAgIGVycm9yRGF0YS50eXBlID0gdHlwZTtcbiAgICAgICAgICAgIGVycm9yRGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGVtcHR5YnVsa1B1Ymxpc2hTdGF0dXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBzdGF0dXNfMSBpbiBidWxrUHVibGlzaFN0YXR1cykge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBidWxrUHVibGlzaFN0YXR1c1tzdGF0dXNfMV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBjaGVjayBwdWJsaXNoIHN0YXR1c1xuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGNoZWNrUHVibGlzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlzTG9hZGluZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KFwiL2FjdGl2aXRpZXMvY2hlY2tzLWZvci1hY3Rpdml0eS1idWxrLXB1Ymxpc2hcIilcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaEFsZXJ0VmFsdWUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlID09PSBudWxsIHx8IHJlc3BvbnNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNwb25zZS5pbl9wcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlidWxrUHVibGlzaFN0YXR1cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihidWxrUHVibGlzaFN0YXR1cywgcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDYW5jZWxDb25maXJtYXRpb25Nb2RhbCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheVRvYXN0KHJlc3BvbnNlLm1lc3NhZ2UsIHJlc3BvbnNlLnN1Y2Nlc3MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmluYWxseShmdW5jdGlvbiAoKSB7IHJldHVybiAoaXNMb2FkaW5nLnZhbHVlID0gZmFsc2UpOyB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFZlcmlmeSBjb3JlIGVsZW1lbnRzXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgY29yZUNvbXBsZXRlZEFjdGl2aXRpZXMgPSAoMCwgdnVlXzIucmVmKShbXSksIGNvcmVJbkNvbXBsZXRlZEFjdGl2aXRpZXMgPSAoMCwgdnVlXzIucmVmKShbXSksIHBlcm1hbGluayA9IFwiL2FjdGl2aXR5L1wiO1xuICAgICAgICB2YXIgdmVyaWZ5Q29yZUVsZW1lbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGxvYWRlclRleHQudmFsdWUgPSB0cmFuc2xhdGUuY29tbW9uVGV4dCgndmVyaWZ5aW5nX2NvcmVfZWxlbWVudHMnKTtcbiAgICAgICAgICAgIHZhciBhY3Rpdml0aWVzID0gc3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzLmpvaW4oJywgJyk7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KFwiL2FjdGl2aXRpZXMvY29yZS1lbGVtZW50cy1jb21wbGV0ZWQ/YWN0aXZpdGllcz1bXCIuY29uY2F0KGFjdGl2aXRpZXMsIFwiXVwiKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgY29yZUNvbXBsZXRlZEFjdGl2aXRpZXMudmFsdWUgPSByZXNwb25zZS5kYXRhLmNvbXBsZXRlO1xuICAgICAgICAgICAgICAgICAgICBjb3JlSW5Db21wbGV0ZWRBY3Rpdml0aWVzLnZhbHVlID0gcmVzcG9uc2UuZGF0YS5pbmNvbXBsZXRlO1xuICAgICAgICAgICAgICAgICAgICBidWxrUHVibGlzaFN0ZXAudmFsdWUgPSAyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJlc2V0UHVibGlzaFN0ZXAoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlID09PSBudWxsIHx8IHJlc3BvbnNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNwb25zZS5pbl9wcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlidWxrUHVibGlzaFN0YXR1cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihidWxrUHVibGlzaFN0YXR1cywgcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDYW5jZWxDb25maXJtYXRpb25Nb2RhbCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheVRvYXN0KHJlc3BvbnNlLm1lc3NhZ2UsIHJlc3BvbnNlLnN1Y2Nlc3MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogVmFsaWRhdGluZyBBY3Rpdml0aWVzXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgdmFsaWRhdGlvbkVycm9ycyA9ICgwLCB2dWVfMi5yZWYpKHt9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoXCJhY3Rpdml0aWVzL2J1bGstcHVibGlzaC1zdGF0dXM/b3JnYW5pemF0aW9uX2lkPVwiLmNvbmNhdCgoX2EgPSBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnB1Ymxpc2hpbmdBY3Rpdml0aWVzLm9yZ2FuaXphdGlvbl9pZCwgXCImJnV1aWQ9XCIpLmNvbmNhdCgoX2IgPSBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnB1Ymxpc2hpbmdBY3Rpdml0aWVzLmpvYl9iYXRjaF91dWlkKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKChfYSA9IHBhLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucHVibGlzaGluZ0FjdGl2aXRpZXMsIChfYiA9IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZGF0YSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB2YWxpZGF0ZUFjdGl2aXRpZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9IHRyYW5zbGF0ZS5jb21tb25UZXh0KCd2YWxpZGF0aW5nX2FjdGl2aXRpZXMnKTtcbiAgICAgICAgICAgIHZhciBhY3Rpdml0aWVzID0gc3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzLmpvaW4oJywgJyk7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdChcIi9hY3Rpdml0aWVzL3ZhbGlkYXRlLWFjdGl2aXRpZXM/YWN0aXZpdGllcz1bXCIuY29uY2F0KGFjdGl2aXRpZXMsIFwiXVwiKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVsa1B1Ymxpc2hTdGVwLnZhbHVlID0gMztcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbkVycm9ycy52YWx1ZSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXNldFB1Ymxpc2hTdGVwKCk7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlUb2FzdChyZXNwb25zZS5tZXNzYWdlLCByZXNwb25zZS5zdWNjZXNzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCdWxrIHB1Ymxpc2hpbmcgYWN0aXZpdGllc1xuICAgICAgICAgKi9cbiAgICAgICAgdmFyIHNlbGVjdGVkQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdzZWxlY3RlZEFjdGl2aXRpZXMnLCBzZWxlY3RlZEFjdGl2aXRpZXMpO1xuICAgICAgICAvLyBsb2NhbCBzdG9yYWdlIGZvciBwdWJsaXNoaW5nXG4gICAgICAgIHZhciBwYSA9ICgwLCBjb3JlXzEudXNlU3RvcmFnZSkoJ3Z1ZS11c2UtbG9jYWwtc3RvcmFnZScsIHtcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiAoX2IgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncHVibGlzaGluZ0FjdGl2aXRpZXMnKSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDoge30sXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgc3RhcnRCdWxrUHVibGlzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydEJ1bGtQdWJsaXNoJywgdHJ1ZSk7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdzdGFydGluZ190b19wdWJsaXNoJyk7XG4gICAgICAgICAgICBwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcyA9IHt9O1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChcImFjdGl2aXRpZXMvc3RhcnQtYnVsay1wdWJsaXNoP2FjdGl2aXRpZXM9W1wiLmNvbmNhdChzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUsIFwiXVwiKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0QnVsa1B1Ymxpc2gnLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBzdGFydFB1Ymxpc2gudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1bGtQdWJsaXNoU3RlcC52YWx1ZSA9IDE7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hBbGVydFZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHBhLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXNldFB1Ymxpc2hTdGVwKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZSA9PT0gbnVsbCB8fCByZXNwb25zZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzcG9uc2UuaW5fcHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5YnVsa1B1Ymxpc2hTdGF0dXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYnVsa1B1Ymxpc2hTdGF0dXMsIHJlc3BvbnNlLmRhdGEuYWN0aXZpdGllcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHBhLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzLCByZXNwb25zZS5kYXRhLmFjdGl2aXRpZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUJ1bGtwdWJsaXNoQWN0aXZpdGllcycsIHJlc3BvbnNlLmRhdGEuYWN0aXZpdGllcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2FuY2VsQ29uZmlybWF0aW9uTW9kYWwoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlUb2FzdChyZXNwb25zZS5tZXNzYWdlLCByZXNwb25zZS5zdWNjZXNzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBwYS52YWx1ZTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUJ1bGtQdWJsaXNoTGVuZ3RoJywgKChfYiA9IChfYSA9IHBhID09PSBudWxsIHx8IHBhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuYWN0aXZpdGllcykgJiZcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cygoX2QgPSAoX2MgPSBwYSA9PT0gbnVsbCB8fCBwYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGEudmFsdWUpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5wdWJsaXNoaW5nQWN0aXZpdGllcykgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLmFjdGl2aXRpZXMpXG4gICAgICAgICAgICAgICAgICAgIC5sZW5ndGgpO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUJ1bGtwdWJsaXNoQWN0aXZpdGllcycsIHBhID09PSBudWxsIHx8IHBhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYS52YWx1ZSk7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgLypDYW5jZWxzIG9uLWdvaW5nIGJ1bGsgcHVibGlzaCovXG4gICAgICAgIHZhciBjYW5jZWxPdGhlckJ1bGtQdWJsaXNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9ICdDYW5jZWxsaW5nIEJ1bGsgUHVibGlzaCc7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgY2xvc2VDYW5jZWxDb25maXJtYXRpb25Nb2RhbCgpO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnYWN0aXZpdGllcy9jYW5jZWwtYnVsay1wdWJsaXNoJykudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0Q2FuY2VsbGF0aW9uTWVzc2FnZShyZXMuZGF0YS5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgc2hvd0NhbmNlbGxlZERldGFpbFBvcHVwKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIC8qU2hvdyBtb2RhbCB0aGF0IHNob3dzIG51bWJlciBvZiBidWxrIHB1Ymxpc2ggY2FuY2VsbGVkICovXG4gICAgICAgIHZhciBzaG93Q2FuY2VsbGVkRGV0YWlsUG9wdXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBlcnJvckRhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgc2hvd0NhbmNlbGxlZFBvcHVwLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgLypTZXRzIG1lc3NhZ2UgaW4gbW9kYWwgdHJpZ2dlcmVkIGJ5IHNob3dDYW5jZWxsZWREZXRhaWxQb3B1cCgpICovXG4gICAgICAgIHZhciBzZXRDYW5jZWxsYXRpb25NZXNzYWdlID0gZnVuY3Rpb24gKG1zZykge1xuICAgICAgICAgICAgZXJyb3JEYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgIG1lc3NhZ2VPbkNhbmNlbGxhdGlvbi52YWx1ZSA9IG1zZztcbiAgICAgICAgfTtcbiAgICAgICAgLypDbG9zZXMgQ2FuY2VsIENvbmZpcm1hdGlvbiBQb3B1cCovXG4gICAgICAgIHZhciBjbG9zZUNhbmNlbGxlZERldGFpbHNQb3B1cCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGVycm9yRGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICBzaG93Q2FuY2VsbGVkUG9wdXAudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgLypPcGVucyBtb2RhbCB0aGF0IGFsbG93cyB0byBjYW5jZWwgZXhpc3RpbmcgYnVsayBwdWJsaXNoKi9cbiAgICAgICAgdmFyIHNob3dDYW5jZWxDb25maXJtYXRpb25Nb2RhbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dDYW5jZWxDb25maXJtYXRpb25Qb3B1cC52YWx1ZSA9IHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIC8qQ2xvc2VzIG1vZGFsIHRoYXQgYWxsb3dzIHRvIGNhbmNlbCBleGlzdGluZyBidWxrIHB1Ymxpc2gqL1xuICAgICAgICB2YXIgY2xvc2VDYW5jZWxDb25maXJtYXRpb25Nb2RhbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dDYW5jZWxDb25maXJtYXRpb25Qb3B1cC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICAvKiBUcmlnZ2VyIHRoZSBub3JtYWwgZmxvdyBvZiBidWxrIHB1Ymxpc2hpbmcgYWN0aXZpdGllcyovXG4gICAgICAgIHZhciBwdWJsaXNoQWZ0ZXJDYW5jZWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaG93Q2FuY2VsbGVkUG9wdXAudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGNoZWNrUHVibGlzaCgpO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ3BhU3RvcmFnZScsIHBhKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdidWxrUHVibGlzaFN0YXR1cycsIGJ1bGtQdWJsaXNoU3RhdHVzKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdzdGFydFB1Ymxpc2gnLCBzdGFydFB1Ymxpc2gpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgc3RvcmU6IHN0b3JlLCBwdWJsaXNoQWxlcnRWYWx1ZTogcHVibGlzaEFsZXJ0VmFsdWUsIHB1Ymxpc2hBbGVydFRvZ2dsZTogcHVibGlzaEFsZXJ0VG9nZ2xlLCBidWxrUHVibGlzaFN0ZXA6IGJ1bGtQdWJsaXNoU3RlcCwgYnVsa1B1Ymxpc2hTdGF0dXM6IGJ1bGtQdWJsaXNoU3RhdHVzLCBpc0xvYWRpbmc6IGlzTG9hZGluZywgc3RhcnRQdWJsaXNoOiBzdGFydFB1Ymxpc2gsIHB1Ymxpc2hlZDogcHVibGlzaGVkLCBsb2FkZXI6IGxvYWRlciwgbG9hZGVyVGV4dDogbG9hZGVyVGV4dCwgc2hvd0NhbmNlbENvbmZpcm1hdGlvblBvcHVwOiBzaG93Q2FuY2VsQ29uZmlybWF0aW9uUG9wdXAsIHNob3dDYW5jZWxsZWRQb3B1cDogc2hvd0NhbmNlbGxlZFBvcHVwLCBtZXNzYWdlT25DYW5jZWxsYXRpb246IG1lc3NhZ2VPbkNhbmNlbGxhdGlvbiwgcmVzZXRQdWJsaXNoU3RlcDogcmVzZXRQdWJsaXNoU3RlcCwgcG9wVXBXaWR0aENoYW5nZTogcG9wVXBXaWR0aENoYW5nZSwgZXJyb3JEYXRhOiBlcnJvckRhdGEsIGRpc3BsYXlUb2FzdDogZGlzcGxheVRvYXN0LCBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzOiBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzLCBjaGVja1B1Ymxpc2g6IGNoZWNrUHVibGlzaCwgY29yZUNvbXBsZXRlZEFjdGl2aXRpZXM6IGNvcmVDb21wbGV0ZWRBY3Rpdml0aWVzLCBjb3JlSW5Db21wbGV0ZWRBY3Rpdml0aWVzOiBjb3JlSW5Db21wbGV0ZWRBY3Rpdml0aWVzLCBwZXJtYWxpbms6IHBlcm1hbGluaywgdmVyaWZ5Q29yZUVsZW1lbnRzOiB2ZXJpZnlDb3JlRWxlbWVudHMsIHZhbGlkYXRpb25FcnJvcnM6IHZhbGlkYXRpb25FcnJvcnMsIHZhbGlkYXRlQWN0aXZpdGllczogdmFsaWRhdGVBY3Rpdml0aWVzLCBzZWxlY3RlZEFjdGl2aXRpZXM6IHNlbGVjdGVkQWN0aXZpdGllcywgcGE6IHBhLCBzdGFydEJ1bGtQdWJsaXNoOiBzdGFydEJ1bGtQdWJsaXNoLCBjYW5jZWxPdGhlckJ1bGtQdWJsaXNoOiBjYW5jZWxPdGhlckJ1bGtQdWJsaXNoLCBzaG93Q2FuY2VsbGVkRGV0YWlsUG9wdXA6IHNob3dDYW5jZWxsZWREZXRhaWxQb3B1cCwgc2V0Q2FuY2VsbGF0aW9uTWVzc2FnZTogc2V0Q2FuY2VsbGF0aW9uTWVzc2FnZSwgY2xvc2VDYW5jZWxsZWREZXRhaWxzUG9wdXA6IGNsb3NlQ2FuY2VsbGVkRGV0YWlsc1BvcHVwLCBzaG93Q2FuY2VsQ29uZmlybWF0aW9uTW9kYWw6IHNob3dDYW5jZWxDb25maXJtYXRpb25Nb2RhbCwgY2xvc2VDYW5jZWxDb25maXJtYXRpb25Nb2RhbDogY2xvc2VDYW5jZWxDb25maXJtYXRpb25Nb2RhbCwgcHVibGlzaEFmdGVyQ2FuY2VsOiBwdWJsaXNoQWZ0ZXJDYW5jZWwsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsIExvYWRlcjogUHJvZ3Jlc3NMb2FkZXJfdnVlXzEuZGVmYXVsdCwgVmFsaWRhdGlvbkVycm9yczogVmFsaWRhdGlvbkVycm9yc192dWVfMS5kZWZhdWx0LCBQYWdlTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCwgQnVsa1B1Ymxpc2hpbmdFcnJvclBvcHVwOiBCdWxrUHVibGlzaGluZ0Vycm9yUG9wdXBfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdSZWZyZXNoVG9hc3QnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG1lc3NhZ2U6IHsgdHlwZTogU3RyaW5nLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICB0eXBlOiB7IHR5cGU6IEJvb2xlYW4sIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBjbGFzc05hbWUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIGNsYXNzTmFtZS52YWx1ZSA9IHByb3BzLnR5cGVcbiAgICAgICAgICAgID8gJ2JnLW1pbnQgYm9yZGVyLXNwcmluZy0xMCdcbiAgICAgICAgICAgIDogJ2JnLWNyaW1zb24tMTAgYm9yZGVyLWNyaW1zb24tMjAnO1xuICAgICAgICB2YXIgY2xhc3NOYW1lMiA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgY2xhc3NOYW1lMi52YWx1ZSA9IHByb3BzLnR5cGVcbiAgICAgICAgICAgID8gJ3RleHQtc3ByaW5nLTUwIGhvdmVyOnRleHQtc3ByaW5nLTUwJ1xuICAgICAgICAgICAgOiAndGV4dC1jcmltc29uLTUwIGhvdmVyOnRleHQtY3JpbXNvbi01MCc7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCBwcm9wczogcHJvcHMsIGNsYXNzTmFtZTogY2xhc3NOYW1lLCBjbGFzc05hbWUyOiBjbGFzc05hbWUyIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBFcnJvckl0ZW1fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vRXJyb3JJdGVtLnZ1ZVwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1ZhbGlkYXRpb25FcnJvcnMnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgY3JpdGljYWxNZXNzYWdlID0gdHJhbnNsYXRlLmNvbW1vblRleHQoJ21lc3NhZ2UuY3JpdGljYWwnKTtcbiAgICAgICAgdmFyIHdhcm5pbmdNZXNzYWdlID0gdHJhbnNsYXRlLmNvbW1vblRleHQoJ21lc3NhZ2Uud2FybmluZycpO1xuICAgICAgICB2YXIgbm9FcnJvck1lc3NhZ2UgPSB0cmFuc2xhdGUuY29tbW9uVGV4dCgnbWVzc2FnZS5ub19lcnJvcicpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgY3JpdGljYWxNZXNzYWdlOiBjcml0aWNhbE1lc3NhZ2UsIHdhcm5pbmdNZXNzYWdlOiB3YXJuaW5nTWVzc2FnZSwgbm9FcnJvck1lc3NhZ2U6IG5vRXJyb3JNZXNzYWdlLCBFcnJvckl0ZW06IEVycm9ySXRlbV92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5RGF0ZScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICBmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZm9ybWF0KCdMTCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcywgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZSwgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlDb25kaXRpb25zJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcywgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlDb250YWN0SW5mbycsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlEZXNjcmlwdGlvbicsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnSHVtYW5pdGFyaWFuU2NvcGUnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHR5cGVzOiB0eXBlcyB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0lhdGlJZGVudGlmaWVyJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eVNlY3RvcicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHJldHVybiB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlMb2NhdGlvbicsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnT3RoZXJJZGVudGlmaWVyJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcywgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eVBhcnRpY2lwYXRpbmdPcmcnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHR5cGVzLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1BsYW5uZWREaXNidXJzZW1lbnQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTEwnKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMi5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBmb3JtYXREYXRlOiBmb3JtYXREYXRlLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgdHlwZXM6IHR5cGVzIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdQb2xpY3lNYXJrZXInLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHR5cGVzLCBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCwgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eVJlY2lwaWVudENvdW50cnknLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgZnVuY3Rpb24gcm91bmRGbG9hdChudW0pIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG51bSkudG9GaXhlZCgyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIHJvdW5kRmxvYXQ6IHJvdW5kRmxvYXQsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUmVjaXBpZW50UmVnaW9uJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIGZ1bmN0aW9uIHJvdW5kRmxvYXQobnVtKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChudW0pLnRvRml4ZWQoMik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHR5cGVzOiB0eXBlcywgcm91bmRGbG9hdDogcm91bmRGbG9hdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUmVsYXRlZEFjdGl2aXR5JyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcywgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUmVwb3J0aW5nT3JnYW5pemF0aW9uJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCB0eXBlczogdHlwZXMgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xuLy9jb21wb25lbnRzXG52YXIgTGlua192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL0xpbmsudnVlXCIpKTtcbnZhciBIYXZlTm90QWRkZWRZZXRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvSGF2ZU5vdEFkZGVkWWV0LnZ1ZVwiKSk7XG4vLyBjb21wb3NhYmxlXG52YXIgdGl0bGVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS90aXRsZVwiKSk7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlSZXN1bHQnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIE5vdFlldDogSGF2ZU5vdEFkZGVkWWV0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZpdHlJZDoge1xuICAgICAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRMYW5ndWFnZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGZvcm1hdCA9ICdNTU1NIERELCBZWVlZJztcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIHJlc3VsdERhdGEgPSBkYXRhLnZhbHVlLmNvbnRlbnQ7XG4gICAgICAgIHZhciBjdXJyZW50TGFuZ3VhZ2UgPSAnZW4nO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbW9tZW50OiBtb21lbnRfMS5kZWZhdWx0LFxuICAgICAgICAgICAgZm9ybWF0OiBmb3JtYXQsXG4gICAgICAgICAgICByZXN1bHREYXRhOiByZXN1bHREYXRhLFxuICAgICAgICAgICAgZ2V0QWN0aXZpdHlUaXRsZTogdGl0bGVfMS5kZWZhdWx0LFxuICAgICAgICAgICAgY3VycmVudExhbmd1YWdlOiBjdXJyZW50TGFuZ3VhZ2UsXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogdHJhbnNsYXRlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5U2VjdG9yJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIGZ1bmN0aW9uIHJvdW5kRmxvYXQobnVtKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChudW0pLnRvRml4ZWQoMik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHR5cGVzLCByb3VuZEZsb2F0OiByb3VuZEZsb2F0LCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eVRhZycsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5VGl0bGUnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHR5cGVzLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgTGlua192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL0xpbmsudnVlXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5VHJhbnNhY3Rpb25zJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEJ0bjogTGlua192dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbi8vY29tcG9uZW50XG52YXIgTGlua192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL0xpbmsudnVlXCIpKTtcbnZhciBQYWdlVGl0bGVfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUGFnZVRpdGxlLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xuLy9oZWxwZXJcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG52YXIgSW5kZXhfMSA9IHJlcXVpcmUoXCIuL2VsZW1lbnRzL0luZGV4XCIpO1xuLy9jb21wb3NhYmxlXG52YXIgdGl0bGVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS90aXRsZVwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdJbmRpY2F0b3JEZXRhaWwnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgVGl0bGVFbGVtZW50OiBJbmRleF8xLlRpdGxlRWxlbWVudCxcbiAgICAgICAgTWVhc3VyZTogSW5kZXhfMS5NZWFzdXJlLFxuICAgICAgICBBc2NlbmRpbmc6IEluZGV4XzEuQXNjZW5kaW5nLFxuICAgICAgICBBZ2dyZWdhdGlvblN0YXR1czogSW5kZXhfMS5BZ2dyZWdhdGlvblN0YXR1cyxcbiAgICAgICAgRGVzY3JpcHRpb246IEluZGV4XzEuRGVzY3JpcHRpb24sXG4gICAgICAgIFJlZmVyZW5jZTogSW5kZXhfMS5SZWZlcmVuY2UsXG4gICAgICAgIEJhc2VsaW5lOiBJbmRleF8xLkJhc2VsaW5lLFxuICAgICAgICBEb2N1bWVudExpbms6IEluZGV4XzEuRG9jdW1lbnRMaW5rLFxuICAgICAgICBQZXJpb2Q6IEluZGV4XzEuUGVyaW9kLFxuICAgICAgICBCdG46IExpbmtfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnZVRpdGxlOiBQYWdlVGl0bGVfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYWN0aXZpdHk6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICByZXN1bHRUaXRsZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGluZGljYXRvcjoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHBlcmlvZDoge1xuICAgICAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGVsZW1lbnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGxpbmtDbGFzc2VzID0gJ2ZsZXggaXRlbXMtY2VudGVyIHctZnVsbCBiZy13aGl0ZSByb3VuZGVkIHAtMiB0ZXh0LXNtIHRleHQtbi01MCBmb250LWJvbGQgbGVhZGluZy1ub3JtYWwgbWItMiBzaGFkb3ctZGVmYXVsdCc7XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9iID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLCBpbmRpY2F0b3IgPSBfYi5pbmRpY2F0b3IsIGFjdGl2aXR5ID0gX2IuYWN0aXZpdHksIHBlcmlvZCA9IF9iLnBlcmlvZCwgcmVzdWx0VGl0bGUgPSBfYi5yZXN1bHRUaXRsZTtcbiAgICAgICAgdmFyIHNob3dTaWRlYmFyID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcG9zaXRpb25ZID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciBzY3JlZW5XaWR0aCA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICAvL2luZGljYXRvclxuICAgICAgICB2YXIgaW5kaWNhdG9yRGF0YSA9IGluZGljYXRvci52YWx1ZS5pbmRpY2F0b3I7XG4gICAgICAgIHZhciBwZXJpb2REYXRhID0gcGVyaW9kLnZhbHVlO1xuICAgICAgICAvLyB2dWUgcHJvdmlkZXNcbiAgICAgICAgdmFyIHBhcmVudERhdGEgPSB7XG4gICAgICAgICAgICBhY3Rpdml0eTogYWN0aXZpdHkudmFsdWUuaWQsXG4gICAgICAgICAgICByZXN1bHQ6IGluZGljYXRvci52YWx1ZS5yZXN1bHRfaWQsXG4gICAgICAgICAgICBpbmRpY2F0b3I6IGluZGljYXRvci52YWx1ZS5pZCxcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdwYXJlbnREYXRhJywgcGFyZW50RGF0YSk7XG4gICAgICAgIHZhciBhY3Rpdml0eUlkID0gYWN0aXZpdHkudmFsdWUuaWQsIGFjdGl2aXR5TGluayA9IFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkKSwgcmVzdWx0SWQgPSBpbmRpY2F0b3IudmFsdWUucmVzdWx0X2lkLCBkZWZhdWx0TGFuZ3VhZ2UgPSAoX2EgPSBhY3Rpdml0eS52YWx1ZS5kZWZhdWx0X2ZpZWxkX3ZhbHVlcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxhbmd1YWdlLCBhY3Rpdml0eVRpdGxlID0gKDAsIHRpdGxlXzEuZGVmYXVsdCkoYWN0aXZpdHkudmFsdWUudGl0bGUsIGRlZmF1bHRMYW5ndWFnZSksIHJlc3VsdFRpdGxlZCA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKHJlc3VsdFRpdGxlLnZhbHVlWzBdLm5hcnJhdGl2ZSwgZGVmYXVsdExhbmd1YWdlKSwgcmVzdWx0TGluayA9IFwiXCIuY29uY2F0KGFjdGl2aXR5TGluaywgXCIvcmVzdWx0L1wiKS5jb25jYXQocmVzdWx0SWQpLCBpbmRpY2F0b3JMaW5rID0gXCIvcmVzdWx0L1wiLmNvbmNhdChyZXN1bHRJZCwgXCIvaW5kaWNhdG9yXCIpLCBpbmRpY2F0b3JUaXRsZSA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKGluZGljYXRvckRhdGEudGl0bGVbMF0ubmFycmF0aXZlLCBkZWZhdWx0TGFuZ3VhZ2UpO1xuICAgICAgICB2YXIgY2FsY1dpZHRoID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBzY3JlZW5XaWR0aC52YWx1ZSA9IGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xuICAgICAgICAgICAgaWYgKHNjcmVlbldpZHRoLnZhbHVlID4gMTAyNCkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNob3dTaWRlYmFyLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCcmVhZGNydW1iIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIHZhciBicmVhZGNydW1iRGF0YSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdHJhbnNsYXRlLnRleHRGcm9tS2V5KCdhY3Rpdml0aWVzLnlvdXJfYWN0aXZpdGllcycpLFxuICAgICAgICAgICAgICAgIGxpbms6ICcvYWN0aXZpdGllcycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBhY3Rpdml0eVRpdGxlLFxuICAgICAgICAgICAgICAgIGxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHJlc3VsdFRpdGxlZCxcbiAgICAgICAgICAgICAgICBsaW5rOiByZXN1bHRMaW5rLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaW5kaWNhdG9yVGl0bGUsXG4gICAgICAgICAgICAgICAgbGluazogJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICB2YXIgaGFuZGxlU2Nyb2xsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcG9zaXRpb25ZLnZhbHVlID0gd2luZG93LnNjcm9sbFk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgICAgICBpZiAocHJvcHMudG9hc3QubWVzc2FnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHByb3BzLnRvYXN0LnR5cGU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcHJvcHMudG9hc3QubWVzc2FnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpc3RvcFZpc2libGUgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBwb3NpdGlvblkudmFsdWUgPT09IDA7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGNXaWR0aCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNob3dTaWRlYmFyLnZhbHVlOyB9LCBmdW5jdGlvbiAoc2lkZWJhcikge1xuICAgICAgICAgICAgaWYgKHNpZGViYXIpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGlua0NsYXNzZXM6IGxpbmtDbGFzc2VzLFxuICAgICAgICAgICAgaW5kaWNhdG9yVGl0bGU6IGluZGljYXRvclRpdGxlLFxuICAgICAgICAgICAgaW5kaWNhdG9yRGF0YTogaW5kaWNhdG9yRGF0YSxcbiAgICAgICAgICAgIGFjdGl2aXR5TGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgcmVzdWx0TGluazogcmVzdWx0TGluayxcbiAgICAgICAgICAgIGluZGljYXRvckxpbms6IGluZGljYXRvckxpbmssXG4gICAgICAgICAgICBicmVhZGNydW1iRGF0YTogYnJlYWRjcnVtYkRhdGEsXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIHBlcmlvZERhdGE6IHBlcmlvZERhdGEsXG4gICAgICAgICAgICBzaG93U2lkZWJhcjogc2hvd1NpZGViYXIsXG4gICAgICAgICAgICBpc3RvcFZpc2libGU6IGlzdG9wVmlzaWJsZSxcbiAgICAgICAgICAgIGNvdW50RG9jdW1lbnRMaW5rOiB1dGlsc18xLmNvdW50RG9jdW1lbnRMaW5rLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG4vLyBjb21wb25lbnRzXG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIFRhYmxlUGFnaW5hdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlXCIpKTtcbnZhciBQYWdlVGl0bGVfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUGFnZVRpdGxlLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIERlbGV0ZUFjdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9EZWxldGVBY3Rpb24udnVlXCIpKTtcbi8vIGNvbXBvc2FibGVcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgdGl0bGVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS90aXRsZVwiKSk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jb21wb3NhYmxlL3V0aWxzXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yTGlzdCcsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBCdG46IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdpbmF0aW9uOiBUYWJsZVBhZ2luYXRpb25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnZVRpdGxlOiBQYWdlVGl0bGVfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBEZWxldGVBY3Rpb246IERlbGV0ZUFjdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYWN0aXZpdHk6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwYXJlbnREYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaW5kaWNhdG9yczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9hc3Q6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBfYSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKSwgYWN0aXZpdHkgPSBfYS5hY3Rpdml0eSwgcGFyZW50RGF0YSA9IF9hLnBhcmVudERhdGE7XG4gICAgICAgIHZhciBhY3Rpdml0eUlkID0gYWN0aXZpdHkudmFsdWUuaWQsIGFjdGl2aXR5VGl0bGUgPSBhY3Rpdml0eS52YWx1ZS50aXRsZSwgYWN0aXZpdHlMaW5rID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQpLCByZXN1bHRJZCA9IHBhcmVudERhdGEudmFsdWUucmVzdWx0LmlkLCByZXN1bHRUaXRsZSA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKHBhcmVudERhdGEudmFsdWUucmVzdWx0LnRpdGxlLCAnZW4nKSwgcmVzdWx0TGluayA9IFwiXCIuY29uY2F0KGFjdGl2aXR5TGluaywgXCIvcmVzdWx0L1wiKS5jb25jYXQocmVzdWx0SWQpLCBpbmRpY2F0b3JMaW5rID0gXCIvcmVzdWx0L1wiLmNvbmNhdChyZXN1bHRJZCwgXCIvaW5kaWNhdG9yXCIpO1xuICAgICAgICB2YXIgaW5kaWNhdG9yc0RhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHt9KTtcbiAgICAgICAgdmFyIGlzRW1wdHkgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJyZWFkY3J1bWIgZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGJyZWFkY3J1bWJEYXRhID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0cmFuc2xhdGUudGV4dEZyb21LZXkoJ2FjdGl2aXRpZXMueW91cl9hY3Rpdml0aWVzJyksXG4gICAgICAgICAgICAgICAgbGluazogJy9hY3Rpdml0aWVzJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICgwLCB0aXRsZV8xLmRlZmF1bHQpKGFjdGl2aXR5VGl0bGUsICdlbicpLFxuICAgICAgICAgICAgICAgIGxpbms6IFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHJlc3VsdFRpdGxlLFxuICAgICAgICAgICAgICAgIGxpbms6IFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkLCBcIi9yZXN1bHQvXCIpLmNvbmNhdChyZXN1bHRJZCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0cmFuc2xhdGUuY29tbW9uVGV4dCgnaW5kaWNhdG9yX2xpc3QnKSxcbiAgICAgICAgICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL3Jlc3VsdC9cIi5jb25jYXQocmVzdWx0SWQsIFwiL2luZGljYXRvcnMvcGFnZS8xXCIpKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oaW5kaWNhdG9yc0RhdGEsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICBpc0VtcHR5LnZhbHVlID0gcmVzcG9uc2UuZGF0YS5kYXRhLmxlbmd0aCA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHMudG9hc3QubWVzc2FnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcHJvcHMudG9hc3QubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9KTtcbiAgICAgICAgZnVuY3Rpb24gaGFuZGxlTmF2aWdhdGUocGF0aCkge1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBwYXRoO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGZldGNoTGlzdGluZ3MoYWN0aXZlX3BhZ2UpIHtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoXCIvcmVzdWx0L1wiLmNvbmNhdChyZXN1bHRJZCwgXCIvaW5kaWNhdG9ycy9wYWdlL1wiKSArIGFjdGl2ZV9wYWdlKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGluZGljYXRvcnNEYXRhLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICBpc0VtcHR5LnZhbHVlID0gcmVzcG9uc2UuZGF0YSA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIHByb3ZpZGVcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdwYXJlbnRJdGVtSWQnLCByZXN1bHRJZCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhY3Rpdml0eUlkOiBhY3Rpdml0eUlkLFxuICAgICAgICAgICAgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsXG4gICAgICAgICAgICBpbmRpY2F0b3JzRGF0YTogaW5kaWNhdG9yc0RhdGEsXG4gICAgICAgICAgICBnZXRBY3Rpdml0eVRpdGxlOiB0aXRsZV8xLmRlZmF1bHQsXG4gICAgICAgICAgICBmZXRjaExpc3RpbmdzOiBmZXRjaExpc3RpbmdzLFxuICAgICAgICAgICAgcmVzdWx0TGluazogcmVzdWx0TGluayxcbiAgICAgICAgICAgIGluZGljYXRvckxpbms6IGluZGljYXRvckxpbmssXG4gICAgICAgICAgICBicmVhZGNydW1iRGF0YTogYnJlYWRjcnVtYkRhdGEsXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIHJlc3VsdElkOiByZXN1bHRJZCxcbiAgICAgICAgICAgIGhhbmRsZU5hdmlnYXRlOiBoYW5kbGVOYXZpZ2F0ZSxcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogdHJhbnNsYXRlLFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgbWV0aG9kczogeyBzbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZTogdXRpbHNfMS5zbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZSwgY3JlYXRlQ2FwaXRhbGl6ZWRTZW50ZW5jZTogdXRpbHNfMS5jcmVhdGVDYXBpdGFsaXplZFNlbnRlbmNlIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0luZGljYXRvckFnZ3JlZ2F0aW9uU3RhdHVzJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgc3RhdHVzRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7IHN0YXR1c0RhdGE6IHN0YXR1c0RhdGEsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEluZGV4XzEgPSByZXF1aXJlKFwiLi9JbmRleFwiKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdJbmRpY2F0b3JCYXNlbGluZScsXG4gICAgY29tcG9uZW50czogeyBEb2N1bWVudExpbms6IEluZGV4XzEuRG9jdW1lbnRMaW5rIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYmFzZVR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgZWxlbWVudFNwYWNpbmcgPSAnbWItMSc7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGJhc2VsaW5lID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIGxvY2F0aW9uID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgIHZhciBsb2NhdGlvbnMgPSBbXTtcbiAgICAgICAgICAgIGxvY2F0aW9ucyA9IGRhdGEubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0ucmVmZXJlbmNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YXIgbGFzdExvY2F0aW9uID0gbG9jYXRpb25zLnNsaWNlKC0xKVswXTtcbiAgICAgICAgICAgIGxvY2F0aW9ucyA9IGxvY2F0aW9ucy5zbGljZSgwLCAtMSk7XG4gICAgICAgICAgICBpZiAobG9jYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKGxvY2F0aW9ucy5qb2luKCcsICcpICtcbiAgICAgICAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlLnN0aWNreVRleHQoJ2FuZCcsICdjb21tb24nKSArXG4gICAgICAgICAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICAgICAgICAgIGxhc3RMb2NhdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGFzdExvY2F0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogRnVuY3Rpb24gdG8gcmV0dXJuIGRpbWVuc2lvbnMgb2YgYmFzZWxpbmVcbiAgICAgICAgICogQHBhcmFtIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIHZhciBkaW1lbnNpb25zID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgIHZhciBkaW1lbnNpb25zID0gW107XG4gICAgICAgICAgICBkaW1lbnNpb25zID0gZGF0YS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgICAgIHZhciBuYW1lID0gKF9hID0gaXRlbS5uYW1lKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0cmFuc2xhdGUubWlzc2luZygpLCB2YWx1ZSA9IChfYiA9IGl0ZW0udmFsdWUpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHRyYW5zbGF0ZS5taXNzaW5nKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KHRyYW5zbGF0ZS5jb21tb25UZXh0KCdjb2RlJyksIFwiIC0gXCIpLmNvbmNhdChuYW1lLCBcIiwgXCIpLmNvbmNhdCh0cmFuc2xhdGUuY29tbW9uVGV4dCgndmFsdWUnKSwgXCIgLSAoXCIpLmNvbmNhdCh2YWx1ZSwgXCIpXCIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gZGltZW5zaW9ucy5qb2luKCc7ICcpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYmFzZWxpbmU6IGJhc2VsaW5lLFxuICAgICAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uLFxuICAgICAgICAgICAgZGltZW5zaW9uczogZGltZW5zaW9ucyxcbiAgICAgICAgICAgIGVsZW1lbnRTcGFjaW5nOiBlbGVtZW50U3BhY2luZyxcbiAgICAgICAgICAgIGNvdW50RG9jdW1lbnRMaW5rOiB1dGlsc18xLmNvdW50RG9jdW1lbnRMaW5rLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yRGVzY3JpcHRpb24nLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZXNjVHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGRlc2NyaXB0aW9uRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7IGRlc2NyaXB0aW9uRGF0YTogZGVzY3JpcHRpb25EYXRhLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbi8vY29tcG9zYWJsZVxudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yRG9jdW1lbnRMaW5rJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBBcnJheSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYWxpZ25tZW50OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnY2VudGVyJyxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgZGxEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgZGxEYXRhOiBkbERhdGEsIGdldEFjdGl2aXR5VGl0bGU6IHRpdGxlXzEuZGVmYXVsdCwgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdJbmRpY2F0b3JBc2NlbmRpbmcnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICByZXR1cm4geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0luZGljYXRvck1lYXN1cmUnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBtZWFzdXJlVHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIG1lYXN1cmVEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgbWVhc3VyZURhdGE6IG1lYXN1cmVEYXRhLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgTGlua192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL0xpbmsudnVlXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0luZGljYXRvclBlcmlvZCcsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBCdG46IExpbmtfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgaWQgPSAoMCwgdnVlXzEuaW5qZWN0KSgncGFyZW50RGF0YScpO1xuICAgICAgICByZXR1cm4geyBpZDogaWQsIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0luZGljYXRvclJlZmVyZW5jZScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHJlZlR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciByZWZEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgcmVmRGF0YTogcmVmRGF0YSwgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdJbmRpY2F0b3JUaXRsZScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRpdGxlVHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIHRpdGxlRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7IHRpdGxlRGF0YTogdGl0bGVEYXRhLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBjb3JlRWxlbWVudHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL2NvcmVFbGVtZW50c1wiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnQWN0aXZpdGllc0VsZW1lbnRzJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZpdHlJZDoge1xuICAgICAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8yLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBkcm9wZG93biA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBkcm9wZG93bkJ0biA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBfYiA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBzZWFyY2hCdG5WYWx1ZSA9IF9iWzBdLCBzZWFyY2hCdG5Ub2dnbGUgPSBfYlsxXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNlYXJjaCBmdW5jdGlvbmFsaXR5XG4gICAgICAgICAqL1xuICAgICAgICB2YXIgZWxlbWVudHMgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHNlYXJjaDogJycsXG4gICAgICAgICAgICBzdGF0dXM6ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGVsZW1lbnRJY29ucyA9IHtcbiAgICAgICAgICAgIGNvbXBsZXRlZDogJ2RvdWJsZS10aWNrJyxcbiAgICAgICAgICAgIG5vdF9jb21wbGV0ZWQ6ICdyZWQtY3Jvc3MnLFxuICAgICAgICAgICAgY29yZTogJ2NvcmUnLFxuICAgICAgICB9O1xuICAgICAgICB2YXIgYXNBcnJheURhdGEgPSBPYmplY3QuZW50cmllcyhkYXRhLnZhbHVlKTtcbiAgICAgICAgdmFyIGZpbHRlcmVkRWxlbWVudHMgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBmaWx0ZXJlZCA9IGFzQXJyYXlEYXRhLmZpbHRlcihmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0gX2FbMF0sIHZhbHVlID0gX2FbMV07XG4gICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50cy5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgLmVsZW1lbnQoa2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhlbGVtZW50cy5zZWFyY2gudG9Mb3dlckNhc2UoKS5yZXBsYWNlKCdfJywgJycpLnJlcGxhY2UoJy0nLCAnXycpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZVtlbGVtZW50cy5zdGF0dXNdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoZWxlbWVudHMuc2VhcmNoLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgnXycsICcnKS5yZXBsYWNlKCctJywgJ18nKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciBqdXN0U3RyaW5ncyA9IE9iamVjdC5mcm9tRW50cmllcyhmaWx0ZXJlZCk7XG4gICAgICAgICAgICByZXR1cm4ganVzdFN0cmluZ3M7XG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogQWRkaW5nIGNvcmUgZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgT2JqZWN0LmtleXMoZGF0YS52YWx1ZSkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIGlmICgoMCwgY29yZUVsZW1lbnRzXzEuYWN0aXZpdHlDb3JlRWxlbWVudHMpKCkuaW5jbHVkZXMoa2V5LnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgZGF0YS52YWx1ZVtrZXldWydjb3JlJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGRyb3Bkb3duRmlsdGVyID0gZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgIGVsZW1lbnRzLnN0YXR1cyA9IHM7XG4gICAgICAgICAgICBzZWFyY2hCdG5Ub2dnbGUoKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWRyb3Bkb3duQnRuLnZhbHVlLmNvbnRhaW5zKGUudGFyZ2V0KSAmJlxuICAgICAgICAgICAgICAgICAgICAhZHJvcGRvd24udmFsdWUuY29udGFpbnMoZS50YXJnZXQpICYmXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEJ0blZhbHVlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEJ0blRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gZ2V0TGluayhoYXNfZGF0YSwgaW5kZXgpIHtcbiAgICAgICAgICAgIGlmIChoYXNfZGF0YSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcIiNcIi5jb25jYXQoaW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaW5kZXggPT0gJ3Jlc3VsdCcgfHwgaW5kZXggPT0gJ3RyYW5zYWN0aW9ucycpIHtcbiAgICAgICAgICAgICAgICB2YXIgZWxlbWVudCA9IGluZGV4ID09ICdyZXN1bHQnID8gJ3Jlc3VsdCcgOiAndHJhbnNhY3Rpb24nO1xuICAgICAgICAgICAgICAgIHJldHVybiBcIi9hY3Rpdml0eS9cIi5jb25jYXQocHJvcHMuYWN0aXZpdHlJZCwgXCIvXCIpLmNvbmNhdChlbGVtZW50LCBcIi9jcmVhdGVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gXCIvYWN0aXZpdHkvXCIuY29uY2F0KHByb3BzLmFjdGl2aXR5SWQsIFwiL1wiKS5jb25jYXQoaW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCBwcm9wczogcHJvcHMsIGRhdGE6IGRhdGEsIGRyb3Bkb3duOiBkcm9wZG93biwgZHJvcGRvd25CdG46IGRyb3Bkb3duQnRuLCBzZWFyY2hCdG5WYWx1ZTogc2VhcmNoQnRuVmFsdWUsIHNlYXJjaEJ0blRvZ2dsZTogc2VhcmNoQnRuVG9nZ2xlLCBlbGVtZW50czogZWxlbWVudHMsIGVsZW1lbnRJY29uczogZWxlbWVudEljb25zLCBhc0FycmF5RGF0YTogYXNBcnJheURhdGEsIGZpbHRlcmVkRWxlbWVudHM6IGZpbHRlcmVkRWxlbWVudHMsIGRyb3Bkb3duRmlsdGVyOiBkcm9wZG93bkZpbHRlciwgZ2V0TGluazogZ2V0TGluaywgYWN0aXZpdHlDb3JlRWxlbWVudHM6IGNvcmVFbGVtZW50c18xLmFjdGl2aXR5Q29yZUVsZW1lbnRzIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgdnVlXzMgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVFbGVtZW50c18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvY29yZUVsZW1lbnRzXCIpO1xuLy9jb21wb25lbnRzXG52YXIgSW5kZXhfMSA9IHJlcXVpcmUoXCJBY3Rpdml0eS9lbGVtZW50cy9JbmRleFwiKTtcbnZhciBMaW5rX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvTGluay52dWVcIikpO1xudmFyIEVsZW1lbnRTdGF0dXNfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc3RhdHVzL0VsZW1lbnRTdGF0dXMudnVlXCIpKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdBY3Rpdml0eUVsZW1lbnQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBhY3Rpdml0eUlkOiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgd2lkdGg6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlZDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB3YXJuaW5nSW5mb1RleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIF9iID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIGRlbGV0ZVZhbHVlID0gX2JbMF0sIGRlbGV0ZVRvZ2dsZSA9IF9iWzFdO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIC8vIGNhbGwgYXBpIGZvciBwdWJsaXNoaW5nXG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzIuaW5qZWN0KSgndG9hc3REYXRhJyk7XG4gICAgICAgIHZhciBsYXlvdXQgPSAnYmFzaXMtZnVsbCAgbGc6YmFzaXMtNi8xMic7XG4gICAgICAgIGlmIChwcm9wcy53aWR0aCA9PT0gJ2Z1bGwnKSB7XG4gICAgICAgICAgICBsYXlvdXQgPSAnYmFzaXMtZnVsbCc7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTEwnKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiByb3VuZEZsb2F0KG51bSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQobnVtKS50b0ZpeGVkKDIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkZWxldGVBY3Rpdml0eUVsZW1lbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkZWxldGVWYWx1ZS52YWx1ZSA9IHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIGZ1bmN0aW9uIGRlbGV0ZUVsZW1lbnQoaWQsIGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGRlbGV0ZVZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZGVsZXRlKFwiL2FwaS9hY3Rpdml0eS9cIi5jb25jYXQoaWQsIFwiL1wiKS5jb25jYXQoZWxlbWVudCkpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHJlc3BvbnNlLnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdjb3VsZG50X2RlbGV0ZV90aGVfYWN0aXZpdHknKTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGRlbGV0ZVZhbHVlOiBkZWxldGVWYWx1ZSwgZGVsZXRlVG9nZ2xlOiBkZWxldGVUb2dnbGUsIHRyYW5zbGF0ZTogdHJhbnNsYXRlLCBwcm9wczogcHJvcHMsIHRvYXN0RGF0YTogdG9hc3REYXRhLCBsYXlvdXQ6IGxheW91dCwgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZSwgcm91bmRGbG9hdDogcm91bmRGbG9hdCwgZGVsZXRlQWN0aXZpdHlFbGVtZW50OiBkZWxldGVBY3Rpdml0eUVsZW1lbnQsIGRlbGV0ZUVsZW1lbnQ6IGRlbGV0ZUVsZW1lbnQsIGNhcGl0YWxpemU6IHZ1ZV8zLmNhcGl0YWxpemUsIGFjdGl2aXR5Q29yZUVsZW1lbnRzOiBjb3JlRWxlbWVudHNfMS5hY3Rpdml0eUNvcmVFbGVtZW50cywgQWN0aXZpdHlEYXRlOiBJbmRleF8xLkFjdGl2aXR5RGF0ZSwgQ29uZGl0aW9uczogSW5kZXhfMS5Db25kaXRpb25zLCBDb250YWN0SW5mbzogSW5kZXhfMS5Db250YWN0SW5mbywgRGVzY3JpcHRpb246IEluZGV4XzEuRGVzY3JpcHRpb24sIEh1bWFuaXRhcmlhblNjb3BlOiBJbmRleF8xLkh1bWFuaXRhcmlhblNjb3BlLCBJYXRpSWRlbnRpZmllcjogSW5kZXhfMS5JYXRpSWRlbnRpZmllciwgTGVnYWN5RGF0YTogSW5kZXhfMS5MZWdhY3lEYXRhLCBMb2NhdGlvbjogSW5kZXhfMS5Mb2NhdGlvbiwgT3RoZXJJZGVudGlmaWVyOiBJbmRleF8xLk90aGVySWRlbnRpZmllciwgUGFydGljaXBhdGluZ09yZzogSW5kZXhfMS5QYXJ0aWNpcGF0aW5nT3JnLCBQbGFubmVkRGlzYnVyc2VtZW50OiBJbmRleF8xLlBsYW5uZWREaXNidXJzZW1lbnQsIFBvbGljeU1hcmtlcjogSW5kZXhfMS5Qb2xpY3lNYXJrZXIsIFJlY2lwaWVudENvdW50cnk6IEluZGV4XzEuUmVjaXBpZW50Q291bnRyeSwgUmVjaXBpZW50UmVnaW9uOiBJbmRleF8xLlJlY2lwaWVudFJlZ2lvbiwgUmVsYXRlZEFjdGl2aXR5OiBJbmRleF8xLlJlbGF0ZWRBY3Rpdml0eSwgUmVwb3J0aW5nT3JnYW5pemF0aW9uOiBJbmRleF8xLlJlcG9ydGluZ09yZ2FuaXphdGlvbiwgU2VjdG9yOiBJbmRleF8xLlNlY3RvciwgVGFnOiBJbmRleF8xLlRhZywgVGl0bGVFbGVtZW50OiBJbmRleF8xLlRpdGxlRWxlbWVudCwgVHJhbnNhY3Rpb25zOiBJbmRleF8xLlRyYW5zYWN0aW9ucywgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQsIFN0YXR1czogRWxlbWVudFN0YXR1c192dWVfMS5kZWZhdWx0LCBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBDcmVhdGVNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vQ3JlYXRlTW9kYWwudnVlXCIpKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWRkQWN0aXZpdHlCdXR0b24nLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgQ3JlYXRlTW9kYWw6IENyZWF0ZU1vZGFsX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBzdGF0ZSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgaXNWaXNpYmxlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfYSA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBtb2RhbFZhbHVlID0gX2FbMF0sIG1vZGFsVG9nZ2xlID0gX2FbMV07XG4gICAgICAgIHZhciBtb2RlbFZpc2libGUgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2dnbGVNb2RlbCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgbW9kZWxWaXNpYmxlLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBsaUNsYXNzID0gJ2Jsb2NrIHAtMi41IHRleHQtbi00MCB0ZXh0LXRpbnkgbGVhZGluZy1bMS41XSBmb250LWJvbGQgaG92ZXI6dGV4dC1uLTUwIGhvdmVyOmJnLW4tMTAnO1xuICAgICAgICB2YXIgZHJvcGRvd25CdG4gPSAoMCwgdnVlXzEucmVmKSgpO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIGlmICghZHJvcGRvd25CdG4udmFsdWUuY29udGFpbnMoZS50YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHRvZ2dsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHN0YXRlLmlzVmlzaWJsZSA9ICFzdGF0ZS5pc1Zpc2libGU7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICBsaUNsYXNzOiBsaUNsYXNzLFxuICAgICAgICAgICAgbW9kZWxWaXNpYmxlOiBtb2RlbFZpc2libGUsXG4gICAgICAgICAgICBtb2RhbFZhbHVlOiBtb2RhbFZhbHVlLFxuICAgICAgICAgICAgdG9nZ2xlOiB0b2dnbGUsXG4gICAgICAgICAgICBtb2RhbFRvZ2dsZTogbW9kYWxUb2dnbGUsXG4gICAgICAgICAgICB0b2dnbGVNb2RlbDogdG9nZ2xlTW9kZWwsXG4gICAgICAgICAgICBkcm9wZG93bkJ0bjogZHJvcGRvd25CdG4sXG4gICAgICAgICAgICB0cmFuc2xhdGU6IHRyYW5zbGF0ZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIENyZWF0ZU1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi9DcmVhdGVNb2RhbC52dWVcIikpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi8uLi9jb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG4vKipcbiAqICBHbG9iYWwgU3RhdGVcbiAqL1xudmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FkZEFjdGl2aXR5QnV0dG9uJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIENyZWF0ZU1vZGFsOiBDcmVhdGVNb2RhbF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBzdGF0ZSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgaXNWaXNpYmxlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfYSA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBtb2RhbFZhbHVlID0gX2FbMF0sIG1vZGFsVG9nZ2xlID0gX2FbMV07XG4gICAgICAgIHZhciBtb2RlbFZpc2libGUgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2FzdFZpc2liaWxpdHkgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzEucmVmKSgnJyk7XG4gICAgICAgIHZhciB0b2FzdG1lc3NhZ2VUeXBlID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0Vycm9ycG9wdXAgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBtZXNzYWdlID0gKDAsIHZ1ZV8xLnJlZikoJycpO1xuICAgICAgICB2YXIgZG93bmxvYWRpbmdCYWNrZ3JvdW5kTWVzc2FnZSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGRvd25sb2FkaW5nSW5Qcm9jZXNzID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgaXNMb2FkaW5nID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG9nZ2xlTW9kZWwgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIG1vZGVsVmlzaWJsZS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgbGlDbGFzcyA9ICdibG9jayBwLTIuNSB0ZXh0LW4tNDAgdGV4dC10aW55IGxlYWRpbmctWzEuNV0gZm9udC1ib2xkIGhvdmVyOnRleHQtbi01MCBob3ZlcjpiZy1uLTEwJztcbiAgICAgICAgdmFyIGRyb3Bkb3duQnRuID0gKDAsIHZ1ZV8xLnJlZikoKTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWRyb3Bkb3duQnRuLnZhbHVlLmNvbnRhaW5zKGUudGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5pc1Zpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGRvd25sb2FkRXJyb3IoZmlsZW5hbWUsIHRleHQpIHtcbiAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCAnZGF0YTp0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgsJyArIGVuY29kZVVSSUNvbXBvbmVudCh0ZXh0KSk7XG4gICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlbmFtZSk7XG4gICAgICAgICAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICAgICAgZWxlbWVudC5jbGljaygpO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdG9nZ2xlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3RhdGUuaXNWaXNpYmxlID0gIXN0YXRlLmlzVmlzaWJsZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNoZWNrRG93bmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpc0xvYWRpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL2FjdGl2aXRpZXMvZG93bmxvYWQteGxzLXByb2dyZXNzLXN0YXR1cycpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGRvd25sb2FkaW5nSW5Qcm9jZXNzLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBkb3dubG9hZGluZ0JhY2tncm91bmRNZXNzYWdlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGRvd25sb2FkQW55d2F5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUNhbmNlbERvd25sb2FkJywgdHJ1ZSk7XG4gICAgICAgICAgICBpc0xvYWRpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgZG93bmxvYWRpbmdJblByb2Nlc3MudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVDYW5jZWxEb3dubG9hZCcsIHRydWUpO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0WGxzRG93bmxvYWQnLCBmYWxzZSk7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvYWN0aXZpdGllcy9jYW5jZWwteGxzLWRvd25sb2FkJykudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgY2hlY2tEb3dubG9hZCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBkb3dubG9hZEVycm9yeG1sID0gZnVuY3Rpb24gKGNvdW50QWN0aXZpdGllcykge1xuICAgICAgICAgICAgc2hvd0Vycm9ycG9wdXAudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHZhciBxdWVyeVBhcmFtZXRlcnMgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5zcGxpdCgnPycpO1xuICAgICAgICAgICAgdmFyIGFkZFF1ZXJ5UGFyYW1zID0gJyc7XG4gICAgICAgICAgICBpZiAocXVlcnlQYXJhbWV0ZXJzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgICAgIGFkZFF1ZXJ5UGFyYW1zID0gJyYnICsgcXVlcnlQYXJhbWV0ZXJzWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGFwaVVybCA9ICcvYWN0aXZpdGllcy9kb3dubG9hZC14bWwvdHJ1ZT9hY3Rpdml0aWVzPWFsbCcgKyBhZGRRdWVyeVBhcmFtcztcbiAgICAgICAgICAgIGlmIChjb3VudEFjdGl2aXRpZXMgPiAwKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFjdGl2aXRpZXMgPSBzdG9yZS5zdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXMuam9pbignLCcpO1xuICAgICAgICAgICAgICAgIGFwaVVybCA9IFwiL2FjdGl2aXRpZXMvZG93bmxvYWQteG1sL3RydWU/YWN0aXZpdGllcz1bXCIuY29uY2F0KGFjdGl2aXRpZXMsIFwiXVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoYXBpVXJsKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gcmVzLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3RtZXNzYWdlVHlwZS52YWx1ZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKTsgfSwgMTUwMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL3htbCcsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSAoX2EgPSByZXMuaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3BsaXQoJz0nKVsxXTtcbiAgICAgICAgICAgICAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZG93bmxvYWRYbWwgPSBmdW5jdGlvbiAoY291bnRBY3Rpdml0aWVzKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgcXVlcnlQYXJhbWV0ZXJzID0gKF9hID0gd2luZG93LmxvY2F0aW9uLmhyZWYpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zcGxpdCgnPycpO1xuICAgICAgICAgICAgdmFyIGFkZFF1ZXJ5UGFyYW1zID0gJyc7XG4gICAgICAgICAgICBpZiAocXVlcnlQYXJhbWV0ZXJzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgICAgIGFkZFF1ZXJ5UGFyYW1zID0gJyYnICsgcXVlcnlQYXJhbWV0ZXJzWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGFwaVVybCA9ICcvYWN0aXZpdGllcy9kb3dubG9hZC14bWw/YWN0aXZpdGllcz1hbGwnICsgYWRkUXVlcnlQYXJhbXM7XG4gICAgICAgICAgICBpZiAoY291bnRBY3Rpdml0aWVzID4gMCkge1xuICAgICAgICAgICAgICAgIHZhciBhY3Rpdml0aWVzID0gc3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzLmpvaW4oJywnKTtcbiAgICAgICAgICAgICAgICBhcGlVcmwgPSBcIi9hY3Rpdml0aWVzL2Rvd25sb2FkLXhtbD9hY3Rpdml0aWVzPVtcIi5jb25jYXQoYWN0aXZpdGllcywgXCJdXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChhcGlVcmwpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3VjY2VzcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEueG1sX2Vycm9yID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93RXJyb3Jwb3B1cC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnZhbHVlID0gcmVzLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudmFsdWUgPSByZXMuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3RtZXNzYWdlVHlwZS52YWx1ZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSk7IH0sIDE1MDAwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL3htbCcsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSAoX2EgPSByZXMuaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3BsaXQoJz0nKVsxXTtcbiAgICAgICAgICAgICAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZG93bmxvYWRYbHMgPSBmdW5jdGlvbiAoY291bnRBY3Rpdml0aWVzKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBpc0xvYWRpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0WGxzRG93bmxvYWQnLCB0cnVlKTtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVDYW5jZWxEb3dubG9hZCcsIGZhbHNlKTtcbiAgICAgICAgICAgIGRvd25sb2FkaW5nQmFja2dyb3VuZE1lc3NhZ2UudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHZhciBxdWVyeVBhcmFtZXRlcnMgPSAoX2EgPSB3aW5kb3cubG9jYXRpb24uaHJlZikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNwbGl0KCc/Jyk7XG4gICAgICAgICAgICB2YXIgYWRkUXVlcnlQYXJhbXMgPSAnJztcbiAgICAgICAgICAgIGlmIChxdWVyeVBhcmFtZXRlcnMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgYWRkUXVlcnlQYXJhbXMgPSAnJicgKyBxdWVyeVBhcmFtZXRlcnNbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgYXBpVXJsID0gJy9hY3Rpdml0aWVzL3ByZXBhcmUteGxzP2FjdGl2aXRpZXM9YWxsJyArIGFkZFF1ZXJ5UGFyYW1zO1xuICAgICAgICAgICAgaWYgKGNvdW50QWN0aXZpdGllcyA+IDApIHtcbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZpdGllcyA9IHN0b3JlLnN0YXRlLnNlbGVjdGVkQWN0aXZpdGllcy5qb2luKCcsJyk7XG4gICAgICAgICAgICAgICAgYXBpVXJsID0gXCIvYWN0aXZpdGllcy9wcmVwYXJlLXhscz9hY3Rpdml0aWVzPVtcIi5jb25jYXQoYWN0aXZpdGllcywgXCJdXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChhcGlVcmwpLmZpbmFsbHkoZnVuY3Rpb24gKCkgeyByZXR1cm4gKGlzTG9hZGluZy52YWx1ZSA9IGZhbHNlKTsgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBkb3dubG9hZENzdiA9IGZ1bmN0aW9uIChjb3VudEFjdGl2aXRpZXMpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHZhciBxdWVyeVBhcmFtZXRlcnMgPSAoX2EgPSB3aW5kb3cubG9jYXRpb24uaHJlZikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNwbGl0KCc/Jyk7XG4gICAgICAgICAgICB2YXIgYWRkUXVlcnlQYXJhbXMgPSAnJztcbiAgICAgICAgICAgIGlmIChxdWVyeVBhcmFtZXRlcnMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgYWRkUXVlcnlQYXJhbXMgPSAnJicgKyBxdWVyeVBhcmFtZXRlcnNbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgYXBpVXJsID0gJy9hY3Rpdml0aWVzL2Rvd25sb2FkLWNzdj9hY3Rpdml0aWVzPWFsbCcgKyBhZGRRdWVyeVBhcmFtcztcbiAgICAgICAgICAgIGlmIChjb3VudEFjdGl2aXRpZXMgPiAwKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFjdGl2aXRpZXMgPSBzdG9yZS5zdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXMuam9pbignLCcpO1xuICAgICAgICAgICAgICAgIGFwaVVybCA9IFwiL2FjdGl2aXRpZXMvZG93bmxvYWQtY3N2P2FjdGl2aXRpZXM9W1wiLmNvbmNhdChhY3Rpdml0aWVzLCBcIl1cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KGFwaVVybCkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdWNjZXNzID09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0bWVzc2FnZVR5cGUudmFsdWUgPSByZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSk7IH0sIDE1MDAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtyZXNwb25zZV0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9jc3YnLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgICAgICBsaW5rLmRvd25sb2FkID0gKF9hID0gcmVzLmhlYWRlcnNbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNwbGl0KCc9JylbMV07XG4gICAgICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0b3JlOiBzdG9yZSxcbiAgICAgICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgIGxpQ2xhc3M6IGxpQ2xhc3MsXG4gICAgICAgICAgICBtb2RlbFZpc2libGU6IG1vZGVsVmlzaWJsZSxcbiAgICAgICAgICAgIG1vZGFsVmFsdWU6IG1vZGFsVmFsdWUsXG4gICAgICAgICAgICB0b2dnbGU6IHRvZ2dsZSxcbiAgICAgICAgICAgIG1vZGFsVG9nZ2xlOiBtb2RhbFRvZ2dsZSxcbiAgICAgICAgICAgIHRvZ2dsZU1vZGVsOiB0b2dnbGVNb2RlbCxcbiAgICAgICAgICAgIGRyb3Bkb3duQnRuOiBkcm9wZG93bkJ0bixcbiAgICAgICAgICAgIGRvd25sb2FkQ3N2OiBkb3dubG9hZENzdixcbiAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eTogdG9hc3RWaXNpYmlsaXR5LFxuICAgICAgICAgICAgZG93bmxvYWRpbmdCYWNrZ3JvdW5kTWVzc2FnZTogZG93bmxvYWRpbmdCYWNrZ3JvdW5kTWVzc2FnZSxcbiAgICAgICAgICAgIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLFxuICAgICAgICAgICAgdG9hc3RtZXNzYWdlVHlwZTogdG9hc3RtZXNzYWdlVHlwZSxcbiAgICAgICAgICAgIGRvd25sb2FkWG1sOiBkb3dubG9hZFhtbCxcbiAgICAgICAgICAgIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgICAgICBzaG93RXJyb3Jwb3B1cDogc2hvd0Vycm9ycG9wdXAsXG4gICAgICAgICAgICBjaGVja0Rvd25sb2FkOiBjaGVja0Rvd25sb2FkLFxuICAgICAgICAgICAgZG93bmxvYWRFcnJvcnhtbDogZG93bmxvYWRFcnJvcnhtbCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICAgICAgICBkb3dubG9hZEVycm9yOiBkb3dubG9hZEVycm9yLFxuICAgICAgICAgICAgZG93bmxvYWRYbHM6IGRvd25sb2FkWGxzLFxuICAgICAgICAgICAgZG93bmxvYWRpbmdJblByb2Nlc3M6IGRvd25sb2FkaW5nSW5Qcm9jZXNzLFxuICAgICAgICAgICAgaXNMb2FkaW5nOiBpc0xvYWRpbmcsXG4gICAgICAgICAgICBkb3dubG9hZEFueXdheTogZG93bmxvYWRBbnl3YXksXG4gICAgICAgICAgICB0cmFuc2xhdGU6IHRyYW5zbGF0ZSxcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIG1ldGhvZHM6IHsgY2FwaXRhbGl6ZTogdnVlXzEuY2FwaXRhbGl6ZSB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi8uLi9jb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnRWxlbWVudE5vdGUnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgSG92ZXJUZXh0OiBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgcmV0dXJuIHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgQWRkQWN0aXZpdHlCdXR0b25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vQWRkQWN0aXZpdHlCdXR0b24udnVlXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0VtcHR5QWN0aXZpdHknLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgQWN0aXZpdHlCdXR0b246IEFkZEFjdGl2aXR5QnV0dG9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBzdGF0ZSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgZGlzbWlzczogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7IHN0YXRlOiBzdGF0ZSwgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIERvd25sb2FkQWN0aXZpdHlCdXR0b25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWVcIikpO1xudmFyIEFkZEFjdGl2aXR5QnV0dG9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL0FkZEFjdGl2aXR5QnV0dG9uLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIFJlZnJlc2hUb2FzdF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQWN0aXZpdHkvYnVsay1wdWJsaXNoL1JlZnJlc2hUb2FzdC52dWVcIikpO1xudmFyIFB1Ymxpc2hTZWxlY3RlZF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQWN0aXZpdHkvYnVsay1wdWJsaXNoL1B1Ymxpc2hTZWxlY3RlZC52dWVcIikpO1xudmFyIERlbGV0ZUJ1dHRvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL0RlbGV0ZUJ1dHRvbi52dWVcIikpO1xuLy8gVnVleCBTdG9yZVxudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbnZhciBFcnJvclBvcFVwX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0Vycm9yUG9wVXAudnVlXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUGFnZVRpdGxlJyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciByZWZyZXNoVG9hc3RNc2cgPSAoMCwgdnVlXzIuaW5qZWN0KSgncmVmcmVzaFRvYXN0TXNnJyk7XG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzIuaW5qZWN0KSgndG9hc3REYXRhJyk7XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzIuaW5qZWN0KSgnZXJyb3JEYXRhJyk7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgcmVmcmVzaFRvYXN0TXNnOiByZWZyZXNoVG9hc3RNc2csIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLCBlcnJvckRhdGE6IGVycm9yRGF0YSwgc3RvcmU6IHN0b3JlLCBEb3dubG9hZEFjdGl2aXR5QnV0dG9uOiBEb3dubG9hZEFjdGl2aXR5QnV0dG9uX3Z1ZV8xLmRlZmF1bHQsIEFkZEFjdGl2aXR5QnV0dG9uOiBBZGRBY3Rpdml0eUJ1dHRvbl92dWVfMS5kZWZhdWx0LCBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsIFJlZnJlc2hUb2FzdE1lc3NhZ2U6IFJlZnJlc2hUb2FzdF92dWVfMS5kZWZhdWx0LCBQdWJsaXNoU2VsZWN0ZWQ6IFB1Ymxpc2hTZWxlY3RlZF92dWVfMS5kZWZhdWx0LCBEZWxldGVCdXR0b246IERlbGV0ZUJ1dHRvbl92dWVfMS5kZWZhdWx0LCBFcnJvclBvcFVwOiBFcnJvclBvcFVwX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdTaWRlYmFySGVscEJsb2NrJyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG4vLyBWdWV4IFN0b3JlXG52YXIgaW5kZXhfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL2luZGV4XCIpO1xudmFyIFByZXZpb3VzbHlQdWJsaXNoZWRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc3RhdHVzL1ByZXZpb3VzbHlQdWJsaXNoZWQudnVlXCIpKTtcbnZhciBQdWJsaXNoQnV0dG9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvUHVibGlzaEJ1dHRvbi52dWVcIikpO1xudmFyIFVuUHVibGlzaEJ1dHRvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL1VuUHVibGlzaEJ1dHRvbi52dWVcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbi8vIGltcG9ydCBTaGltbWVyIGZyb20gXCJDb21wb25lbnRzL1NoaW1tZXJMb2FkaW5nLnZ1ZVwiO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1RhYmxlTGF5b3V0JyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgbG9hZGVyOiB7IHR5cGU6IEJvb2xlYW4sIHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgX2IgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgc2VsZWN0QWxsVmFsdWUgPSBfYlswXSwgc2VsZWN0QWxsVG9nZ2xlID0gX2JbMV07XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuICAgICAgICBmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZnJvbU5vdygpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHRvZ2dsZVNlbGVjdEFsbChhY3Rpdml0aWVzLCBzZWxlY3RBbGxWYWx1ZSkge1xuICAgICAgICAgICAgaWYgKCFzZWxlY3RBbGxWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHZhciBpZHMgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBkYXR1bSBpbiBhY3Rpdml0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlkcy5wdXNoKGFjdGl2aXRpZXNbZGF0dW1dLmlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVNlbGVjdGVkQWN0aXZpdGllcycsIGlkcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU2VsZWN0ZWRBY3Rpdml0aWVzJywgW10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZWN0QWxsVG9nZ2xlKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy9Tb3J0aW5nIGJ5IHVwZGF0ZV9hdFxuICAgICAgICB2YXIgY3VycmVudFVSTCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgICAgICB2YXIgcXVlcnkgPSAnJywgZGlyZWN0aW9uID0gJ2FzYyc7XG4gICAgICAgIHZhciBzb3J0aW5nRGlyZWN0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PT0gJ2FzYycgPyAnZGVzY2VuZGluZycgOiAnYXNjZW5kaW5nJztcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNvcnRCeVB1Ymxpc2hpbmdQcm9ncmVzcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykpIHtcbiAgICAgICAgICAgICAgICB2YXIgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLCB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKTtcbiAgICAgICAgICAgICAgICBxdWVyeSA9IChfYSA9IHVybFBhcmFtcy5nZXQoJ3EnKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gdXJsUGFyYW1zLmdldCgnZGlyZWN0aW9uJykgPT09ICdkZXNjJyA/ICdhc2MnIDogJ2Rlc2MnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFwiP3E9XCIuY29uY2F0KHF1ZXJ5LCBcIiZvcmRlckJ5PWNvbXBsZXRlX3BlcmNlbnRhZ2UmZGlyZWN0aW9uPVwiKS5jb25jYXQoZGlyZWN0aW9uKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNvcnRCeURhdGVVcmwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBpZiAoY3VycmVudFVSTC5pbmNsdWRlcygnPycpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaCwgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyk7XG4gICAgICAgICAgICAgICAgcXVlcnkgPSAoX2EgPSB1cmxQYXJhbXMuZ2V0KCdxJykpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnO1xuICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IHVybFBhcmFtcy5nZXQoJ2RpcmVjdGlvbicpID09PSAnZGVzYycgPyAnYXNjJyA6ICdkZXNjJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBcIj9xPVwiLmNvbmNhdChxdWVyeSwgXCImb3JkZXJCeT11cGRhdGVkX2F0JmRpcmVjdGlvbj1cIikuY29uY2F0KGRpcmVjdGlvbik7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCBzZWxlY3RBbGxWYWx1ZTogc2VsZWN0QWxsVmFsdWUsIHNlbGVjdEFsbFRvZ2dsZTogc2VsZWN0QWxsVG9nZ2xlLCBzdG9yZTogc3RvcmUsIGZvcm1hdERhdGU6IGZvcm1hdERhdGUsIHRvZ2dsZVNlbGVjdEFsbDogdG9nZ2xlU2VsZWN0QWxsLCBjdXJyZW50VVJMOiBjdXJyZW50VVJMLCBxdWVyeTogcXVlcnksIGRpcmVjdGlvbjogZGlyZWN0aW9uLCBzb3J0aW5nRGlyZWN0aW9uOiBzb3J0aW5nRGlyZWN0aW9uLCBzb3J0QnlQdWJsaXNoaW5nUHJvZ3Jlc3M6IHNvcnRCeVB1Ymxpc2hpbmdQcm9ncmVzcywgc29ydEJ5RGF0ZVVybDogc29ydEJ5RGF0ZVVybCwgUHJldmlvdXNseVB1Ymxpc2hlZDogUHJldmlvdXNseVB1Ymxpc2hlZF92dWVfMS5kZWZhdWx0LCBQdWJsaXNoOiBQdWJsaXNoQnV0dG9uX3Z1ZV8xLmRlZmF1bHQsIFVuUHVibGlzaDogVW5QdWJsaXNoQnV0dG9uX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuLy9jb21wb25lbnRcbnZhciBMaW5rX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvTGluay52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgSW5kZXhfMSA9IHJlcXVpcmUoXCIuL2VsZW1lbnRzL0luZGV4XCIpO1xuLy9jb21wb3NhYmxlXG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUGVyaW9kRGV0YWlsJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIFRhcmdldFZhbHVlOiBJbmRleF8xLlRhcmdldFZhbHVlLFxuICAgICAgICBBY3R1YWxWYWx1ZTogSW5kZXhfMS5BY3R1YWxWYWx1ZSxcbiAgICAgICAgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2VUaXRsZTogUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcGFyZW50RGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHBlcmlvZDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9hc3Q6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBlbGVtZW50OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgcG9zaXRpb25ZID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciBzY3JlZW5XaWR0aCA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBsaW5rQ2xhc3NlcyA9ICdmbGV4IGl0ZW1zLWNlbnRlciB3LWZ1bGwgYmctd2hpdGUgcm91bmRlZCBwLTIgdGV4dC1zbSB0ZXh0LW4tNTAgZm9udC1ib2xkIGxlYWRpbmctbm9ybWFsIG1iLTIgc2hhZG93LWRlZmF1bHQnO1xuICAgICAgICB2YXIgX2IgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIHBlcmlvZCA9IF9iLnBlcmlvZCwgYWN0aXZpdHkgPSBfYi5hY3Rpdml0eSwgcGFyZW50RGF0YSA9IF9iLnBhcmVudERhdGEsIHR5cGVzID0gX2IudHlwZXM7XG4gICAgICAgIHZhciBoYW5kbGVTY3JvbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwb3NpdGlvblkudmFsdWUgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGlzdG9wVmlzaWJsZSA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uWS52YWx1ZSA9PT0gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHNob3dTaWRlYmFyID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICAvLyB2dWUgcHJvdmlkZVxuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3R5cGVzJywgdHlwZXMudmFsdWUpO1xuICAgICAgICAvL2luZGljYXRvclxuICAgICAgICB2YXIgcGVyaW9kRGF0YSA9IHBlcmlvZC52YWx1ZS5wZXJpb2Q7XG4gICAgICAgIC8vdGl0bGVzXG4gICAgICAgIHZhciBhY3Rpdml0eUlkID0gYWN0aXZpdHkudmFsdWUuaWQsIGRlZmF1bHRMYW5ndWFnZSA9IChfYSA9IGFjdGl2aXR5LnZhbHVlLmRlZmF1bHRfZmllbGRfdmFsdWVzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGVmYXVsdF9sYW5ndWFnZSwgYWN0aXZpdHlUaXRsZSA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKGFjdGl2aXR5LnZhbHVlLnRpdGxlLCBkZWZhdWx0TGFuZ3VhZ2UpLCBhY3Rpdml0eUxpbmsgPSBcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCksIHJlc3VsdElkID0gcGFyZW50RGF0YS52YWx1ZS5yZXN1bHQuaWQsIHJlc3VsdFRpdGxlID0gKDAsIHRpdGxlXzEuZGVmYXVsdCkocGFyZW50RGF0YS52YWx1ZS5yZXN1bHQudGl0bGUsIGRlZmF1bHRMYW5ndWFnZSksIHJlc3VsdExpbmsgPSBcIlwiLmNvbmNhdChhY3Rpdml0eUxpbmssIFwiL3Jlc3VsdC9cIikuY29uY2F0KHJlc3VsdElkKSwgaW5kaWNhdG9ySWQgPSBwYXJlbnREYXRhLnZhbHVlLmluZGljYXRvci5pZCwgaW5kaWNhdG9yVGl0bGUgPSAoMCwgdGl0bGVfMS5kZWZhdWx0KShwYXJlbnREYXRhLnZhbHVlLmluZGljYXRvci50aXRsZSwgZGVmYXVsdExhbmd1YWdlKSwgaW5kaWNhdG9yTGluayA9IFwiL3Jlc3VsdC9cIi5jb25jYXQocmVzdWx0SWQsIFwiL2luZGljYXRvci9cIikuY29uY2F0KGluZGljYXRvcklkKSwgcGVyaW9kTGluayA9IFwiL2luZGljYXRvci9cIi5jb25jYXQoaW5kaWNhdG9ySWQsIFwiL3BlcmlvZFwiKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJyZWFkY3J1bWIgZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGJyZWFkY3J1bWJEYXRhID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0cmFuc2xhdGUudGV4dEZyb21LZXkoJ2FjdGl2aXRpZXMueW91cl9hY3Rpdml0aWVzJyksXG4gICAgICAgICAgICAgICAgbGluazogJy9hY3Rpdml0aWVzJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGFjdGl2aXR5VGl0bGUsXG4gICAgICAgICAgICAgICAgbGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcmVzdWx0VGl0bGUsXG4gICAgICAgICAgICAgICAgbGluazogcmVzdWx0TGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGluZGljYXRvclRpdGxlLFxuICAgICAgICAgICAgICAgIGxpbms6IGluZGljYXRvckxpbmssXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0cmFuc2xhdGUuY29tbW9uVGV4dCgncGVyaW9kJyksXG4gICAgICAgICAgICAgICAgbGluazogJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICB2YXIgY2FsY1dpZHRoID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBzY3JlZW5XaWR0aC52YWx1ZSA9IGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xuICAgICAgICAgICAgaWYgKHNjcmVlbldpZHRoLnZhbHVlID4gMTAyNCkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNob3dTaWRlYmFyLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc2hvd1NpZGViYXIudmFsdWU7IH0sIGZ1bmN0aW9uIChzaWRlYmFyKSB7XG4gICAgICAgICAgICBpZiAoc2lkZWJhcikge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgICAgICBpZiAocHJvcHMudG9hc3QubWVzc2FnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHByb3BzLnRvYXN0LnR5cGU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcHJvcHMudG9hc3QubWVzc2FnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2FsY1dpZHRoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaW5rQ2xhc3NlczogbGlua0NsYXNzZXMsXG4gICAgICAgICAgICBwZXJpb2REYXRhOiBwZXJpb2REYXRhLFxuICAgICAgICAgICAgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsXG4gICAgICAgICAgICBicmVhZGNydW1iRGF0YTogYnJlYWRjcnVtYkRhdGEsXG4gICAgICAgICAgICBhY3Rpdml0eUxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIHJlc3VsdExpbms6IHJlc3VsdExpbmssXG4gICAgICAgICAgICBpbmRpY2F0b3JMaW5rOiBpbmRpY2F0b3JMaW5rLFxuICAgICAgICAgICAgcGVyaW9kTGluazogcGVyaW9kTGluayxcbiAgICAgICAgICAgIHRvYXN0RGF0YTogdG9hc3REYXRhLFxuICAgICAgICAgICAgc2hvd1NpZGViYXI6IHNob3dTaWRlYmFyLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBpc3RvcFZpc2libGU6IGlzdG9wVmlzaWJsZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbi8vIGNvbXBvbmVudHNcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgVGFibGVQYWdpbmF0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgRGVsZXRlQWN0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL0RlbGV0ZUFjdGlvbi52dWVcIikpO1xuLy8gY29tcG9zYWJsZVxudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbnZhciB0aXRsZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL3RpdGxlXCIpKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdQZXJpb2RMaXN0JyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEJ0bjogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2luYXRpb246IFRhYmxlUGFnaW5hdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdlVGl0bGU6IFBhZ2VUaXRsZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIERlbGV0ZUFjdGlvbjogRGVsZXRlQWN0aW9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHBhcmVudERhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwZXJpb2Q6IHtcbiAgICAgICAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvYXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgX2EgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIGFjdGl2aXR5ID0gX2EuYWN0aXZpdHksIHBhcmVudERhdGEgPSBfYS5wYXJlbnREYXRhO1xuICAgICAgICB2YXIgYWN0aXZpdHlJZCA9IGFjdGl2aXR5LnZhbHVlLmlkLCBhY3Rpdml0eVRpdGxlID0gYWN0aXZpdHkudmFsdWUudGl0bGUsIGFjdGl2aXR5TGluayA9IFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkKSwgcmVzdWx0VGl0bGUgPSBwYXJlbnREYXRhLnZhbHVlLnJlc3VsdC50aXRsZSwgcmVzdWx0SWQgPSBwYXJlbnREYXRhLnZhbHVlLnJlc3VsdC5pZCwgcmVzdWx0TGluayA9IFwiXCIuY29uY2F0KGFjdGl2aXR5TGluaywgXCIvcmVzdWx0L1wiKS5jb25jYXQocmVzdWx0SWQpLCBpbmRpY2F0b3JUaXRsZSA9IHBhcmVudERhdGEudmFsdWUuaW5kaWNhdG9yLnRpdGxlLCBpbmRpY2F0b3JJZCA9IHBhcmVudERhdGEudmFsdWUuaW5kaWNhdG9yLmlkLCBpbmRpY2F0b3JMaW5rID0gXCIvcmVzdWx0L1wiLmNvbmNhdChyZXN1bHRJZCwgXCIvaW5kaWNhdG9yL1wiKS5jb25jYXQoaW5kaWNhdG9ySWQpLCBwZXJpb2RMaW5rID0gXCIvaW5kaWNhdG9yL1wiLmNvbmNhdChpbmRpY2F0b3JJZCwgXCIvcGVyaW9kXCIpO1xuICAgICAgICB2YXIgcGVyaW9kc0RhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHt9KTtcbiAgICAgICAgdmFyIGlzRW1wdHkgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJyZWFkY3J1bWIgZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGJyZWFkY3J1bWJEYXRhID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0cmFuc2xhdGUudGV4dEZyb21LZXkoJ2FjdGl2aXRpZXMueW91cl9hY3Rpdml0aWVzJyksXG4gICAgICAgICAgICAgICAgbGluazogJy9hY3Rpdml0eScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAoMCwgdGl0bGVfMS5kZWZhdWx0KShhY3Rpdml0eVRpdGxlLCAnZW4nKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBhY3Rpdml0eUxpbmssXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAoMCwgdGl0bGVfMS5kZWZhdWx0KShyZXN1bHRUaXRsZSwgJ2VuJyksXG4gICAgICAgICAgICAgICAgbGluazogcmVzdWx0TGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICgwLCB0aXRsZV8xLmRlZmF1bHQpKGluZGljYXRvclRpdGxlLCAnZW4nKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBpbmRpY2F0b3JMaW5rLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdHJhbnNsYXRlLmNvbW1vblRleHQoJ3BlcmlvZHNfbGlzdCcpLFxuICAgICAgICAgICAgICAgIGxpbms6ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvaW5kaWNhdG9yL1wiLmNvbmNhdChpbmRpY2F0b3JJZCwgXCIvcGVyaW9kcy9wYWdlLzFcIikpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihwZXJpb2RzRGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSByZXNwb25zZS5kYXRhLmRhdGEubGVuZ3RoID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChwcm9wcy50b2FzdC5tZXNzYWdlICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHByb3BzLnRvYXN0LnR5cGU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBwcm9wcy50b2FzdC5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICBmdW5jdGlvbiBmZXRjaExpc3RpbmdzKGFjdGl2ZV9wYWdlKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KFwiL2luZGljYXRvci9cIi5jb25jYXQoaW5kaWNhdG9ySWQsIFwiL3BlcmlvZHMvcGFnZS9cIikgKyBhY3RpdmVfcGFnZSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihwZXJpb2RzRGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEgPyBmYWxzZSA6IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBoYW5kbGVOYXZpZ2F0ZShwYXRoKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcHJvdmlkZVxuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3BhcmVudEl0ZW1JZCcsIGluZGljYXRvcklkKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJyZWFkY3J1bWJEYXRhOiBicmVhZGNydW1iRGF0YSxcbiAgICAgICAgICAgIGluZGljYXRvckxpbms6IGluZGljYXRvckxpbmssXG4gICAgICAgICAgICBwZXJpb2RMaW5rOiBwZXJpb2RMaW5rLFxuICAgICAgICAgICAgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsXG4gICAgICAgICAgICBwZXJpb2RzRGF0YTogcGVyaW9kc0RhdGEsXG4gICAgICAgICAgICBnZXRBY3Rpdml0eVRpdGxlOiB0aXRsZV8xLmRlZmF1bHQsXG4gICAgICAgICAgICBmZXRjaExpc3RpbmdzOiBmZXRjaExpc3RpbmdzLFxuICAgICAgICAgICAgaW5kaWNhdG9ySWQ6IGluZGljYXRvcklkLFxuICAgICAgICAgICAgdG9hc3REYXRhOiB0b2FzdERhdGEsXG4gICAgICAgICAgICBoYW5kbGVOYXZpZ2F0ZTogaGFuZGxlTmF2aWdhdGUsXG4gICAgICAgICAgICB0cmFuc2xhdGU6IHRyYW5zbGF0ZSxcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIG1ldGhvZHM6IHsgY3JlYXRlQ2FwaXRhbGl6ZWRTZW50ZW5jZTogdXRpbHNfMS5jcmVhdGVDYXBpdGFsaXplZFNlbnRlbmNlIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbi8vIGNvbXBvbmVudFxudmFyIEluZGV4XzEgPSByZXF1aXJlKFwiQWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9JbmRleFwiKTtcbi8vY29tcG9zYWJsZVxudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdHVhbFZhbHVlJyxcbiAgICBjb21wb25lbnRzOiB7IERvY3VtZW50TGluazogSW5kZXhfMS5Eb2N1bWVudExpbmsgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICAvLyB2dWUgaW5qZWN0XG4gICAgICAgIHZhciBkbFR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgdmFyIGVsZW1lbnRTcGFjaW5nID0gJ21iLTEnO1xuICAgICAgICB2YXIgYWN0dWFsVmFsdWUgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWN0dWFsVmFsdWU6IGFjdHVhbFZhbHVlLFxuICAgICAgICAgICAgZWxlbWVudFNwYWNpbmc6IGVsZW1lbnRTcGFjaW5nLFxuICAgICAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uLFxuICAgICAgICAgICAgZ2V0TG9jYXRpb246IHV0aWxzXzEuZ2V0TG9jYXRpb24sXG4gICAgICAgICAgICBkbFR5cGU6IGRsVHlwZSxcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogdHJhbnNsYXRlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbi8vIGNvbXBvbmVudFxudmFyIEluZGV4XzEgPSByZXF1aXJlKFwiQWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9JbmRleFwiKTtcbi8vY29tcG9zYWJsZVxudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RhcmdldFZhbHVlJyxcbiAgICBjb21wb25lbnRzOiB7IERvY3VtZW50TGluazogSW5kZXhfMS5Eb2N1bWVudExpbmsgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICAvLyB2dWUgaW5qZWN0XG4gICAgICAgIC8vIGNvbnN0IGxhbmd1YWdlVHlwZSA9IGluamVjdCgndHlwZXMnKS5sYW5ndWFnZTtcbiAgICAgICAgdmFyIGRsVHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICB2YXIgZWxlbWVudFNwYWNpbmcgPSAnbWItMSc7XG4gICAgICAgIHZhciB0YXJnZXRWYWx1ZSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0YXJnZXRWYWx1ZTogdGFyZ2V0VmFsdWUsXG4gICAgICAgICAgICBlbGVtZW50U3BhY2luZzogZWxlbWVudFNwYWNpbmcsXG4gICAgICAgICAgICBsb2NhdGlvbjogbG9jYXRpb24sXG4gICAgICAgICAgICBnZXRMb2NhdGlvbjogdXRpbHNfMS5nZXRMb2NhdGlvbixcbiAgICAgICAgICAgIC8vIGxhbmd1YWdlVHlwZSxcbiAgICAgICAgICAgIGRsVHlwZTogZGxUeXBlLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuLy9jb21wb25lbnRcbnZhciBSZXN1bHRFbGVtZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL1Jlc3VsdEVsZW1lbnQudnVlXCIpKTtcbnZhciBJbmRpY2F0b3JfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkFjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvSW5kaWNhdG9yLnZ1ZVwiKSk7XG52YXIgTGlua192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL0xpbmsudnVlXCIpKTtcbnZhciBQYWdlVGl0bGVfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUGFnZVRpdGxlLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xuLy9jb21wb3NhYmxlXG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUmVzdWx0RGV0YWlsJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIFJlc3VsdEVsZW1lbnQ6IFJlc3VsdEVsZW1lbnRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgSW5kaWNhdG9yOiBJbmRpY2F0b3JfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2VUaXRsZTogUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGVsZW1lbnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGxpbmtDbGFzc2VzID0gJ2ZsZXggaXRlbXMtY2VudGVyIHctZnVsbCBiZy13aGl0ZSByb3VuZGVkIHAtMiB0ZXh0LXNtIHRleHQtbi01MCBmb250LWJvbGQgbGVhZGluZy1ub3JtYWwgbWItMiBzaGFkb3ctZGVmYXVsdCc7XG4gICAgICAgIHZhciBwb3NpdGlvblkgPSAoMCwgdnVlXzEucmVmKSgwKTtcbiAgICAgICAgdmFyIHNob3dTaWRlYmFyID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2NyZWVuV2lkdGggPSAoMCwgdnVlXzEucmVmKSgwKTtcbiAgICAgICAgdmFyIF9iID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLCByZXN1bHQgPSBfYi5yZXN1bHQsIGFjdGl2aXR5ID0gX2IuYWN0aXZpdHk7XG4gICAgICAgIHZhciBoYXNJbmRpY2F0b3JzID0gcmVzdWx0LnZhbHVlLmluZGljYXRvcnMubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgdmFyIHJlc3VsdHNEYXRhID0gcmVzdWx0LnZhbHVlLnJlc3VsdDtcbiAgICAgICAgdmFyIGFjdGl2aXR5SWQgPSBhY3Rpdml0eS52YWx1ZS5pZCwgYWN0aXZpdHlUaXRsZSA9IGFjdGl2aXR5LnZhbHVlLnRpdGxlLCBhY3Rpdml0eUxpbmsgPSBcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCksIHJlc3VsdFRpdGxlID0gKDAsIHRpdGxlXzEuZGVmYXVsdCkocmVzdWx0c0RhdGEudGl0bGVbMF0ubmFycmF0aXZlLCAnZW4nKSwgcmVzdWx0TGluayA9IFwiXCIuY29uY2F0KGFjdGl2aXR5TGluaywgXCIvcmVzdWx0L1wiKS5jb25jYXQocmVzdWx0LnZhbHVlLmlkKSwgZGVmYXVsdExhbmd1YWdlID0gKF9hID0gYWN0aXZpdHkudmFsdWUuZGVmYXVsdF9maWVsZF92YWx1ZXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sYW5ndWFnZTtcbiAgICAgICAgdmFyIGhhbmRsZVNjcm9sbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHBvc2l0aW9uWS52YWx1ZSA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCcmVhZGNydW1iIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIHZhciBicmVhZGNydW1iRGF0YSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdHJhbnNsYXRlLnRleHRGcm9tS2V5KCdhY3Rpdml0aWVzLnlvdXJfYWN0aXZpdGllcycpLFxuICAgICAgICAgICAgICAgIGxpbms6ICcvYWN0aXZpdGllcycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAoMCwgdGl0bGVfMS5kZWZhdWx0KShhY3Rpdml0eVRpdGxlLCBkZWZhdWx0TGFuZ3VhZ2UpLFxuICAgICAgICAgICAgICAgIGxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHJlc3VsdFRpdGxlLFxuICAgICAgICAgICAgICAgIGxpbms6ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgdmFyIGlzdG9wVmlzaWJsZSA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uWS52YWx1ZSA9PT0gMDtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGNXaWR0aCk7XG4gICAgICAgICAgICBpZiAocHJvcHMudG9hc3QubWVzc2FnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHByb3BzLnRvYXN0LnR5cGU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcHJvcHMudG9hc3QubWVzc2FnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2FsY1dpZHRoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjYWxjV2lkdGggPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHNjcmVlbldpZHRoLnZhbHVlID0gZXZlbnQudGFyZ2V0LmlubmVyV2lkdGg7XG4gICAgICAgICAgICBpZiAoc2NyZWVuV2lkdGgudmFsdWUgPiAxMDI0KSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2hvd1NpZGViYXIudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzaG93U2lkZWJhci52YWx1ZTsgfSwgZnVuY3Rpb24gKHNpZGViYXIpIHtcbiAgICAgICAgICAgIGlmIChzaWRlYmFyKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFjdGl2aXR5TGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgcmVzdWx0VGl0bGU6IHJlc3VsdFRpdGxlLFxuICAgICAgICAgICAgcmVzdWx0TGluazogcmVzdWx0TGluayxcbiAgICAgICAgICAgIGxpbmtDbGFzc2VzOiBsaW5rQ2xhc3NlcyxcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LFxuICAgICAgICAgICAgaGFzSW5kaWNhdG9yczogaGFzSW5kaWNhdG9ycyxcbiAgICAgICAgICAgIHJlc3VsdHNEYXRhOiByZXN1bHRzRGF0YSxcbiAgICAgICAgICAgIGJyZWFkY3J1bWJEYXRhOiBicmVhZGNydW1iRGF0YSxcbiAgICAgICAgICAgIHRvYXN0RGF0YTogdG9hc3REYXRhLFxuICAgICAgICAgICAgc2hvd1NpZGViYXI6IHNob3dTaWRlYmFyLFxuICAgICAgICAgICAgaXN0b3BWaXNpYmxlOiBpc3RvcFZpc2libGUsXG4gICAgICAgICAgICB0cmFuc2xhdGU6IHRyYW5zbGF0ZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIEluZGV4XzEgPSByZXF1aXJlKFwiLi9lbGVtZW50cy9JbmRleFwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5RWxlbWVudCcsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUaXRsZURlc2NyaXB0aW9uOiBJbmRleF8xLlRpdGxlRGVzY3JpcHRpb24sXG4gICAgICAgIERvY3VtZW50TGluazogSW5kZXhfMS5Eb2N1bWVudExpbmssXG4gICAgICAgIFJlZmVyZW5jZTogSW5kZXhfMS5SZWZlcmVuY2UsXG4gICAgICAgIFJlc3VsdFR5cGU6IEluZGV4XzEuUmVzdWx0VHlwZSxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZWxlbWVudE5hbWU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBlZGl0VXJsOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgd2lkdGg6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGhvdmVyVGV4dDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfYSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKSwgZGF0YSA9IF9hLmRhdGEsIHR5cGVzID0gX2EudHlwZXMsIGVsZW1lbnREYXRhID0gZGF0YS52YWx1ZSwgcmVzdWx0VHlwZSA9IHR5cGVzLnZhbHVlLnJlc3VsdFR5cGUsIHJlc3VsdFZvY2FidWxhcnkgPSB0eXBlcy52YWx1ZS5yZXN1bHRWb2NhYnVsYXJ5LCBsYW5ndWFnZSA9IHR5cGVzLnZhbHVlLmxhbmd1YWdlO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbGVtZW50RGF0YTogZWxlbWVudERhdGEsXG4gICAgICAgICAgICByZXN1bHRUeXBlOiByZXN1bHRUeXBlLFxuICAgICAgICAgICAgcmVzdWx0Vm9jYWJ1bGFyeTogcmVzdWx0Vm9jYWJ1bGFyeSxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogdHJhbnNsYXRlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuLy8gY29tcG9uZW50c1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBUYWJsZVBhZ2luYXRpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVGFibGVQYWdpbmF0aW9uLnZ1ZVwiKSk7XG52YXIgUGFnZVRpdGxlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciBEZWxldGVBY3Rpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvRGVsZXRlQWN0aW9uLnZ1ZVwiKSk7XG4vLyBjb21wb3NhYmxlXG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiLi4vLi4vLi4vY29tcG9zYWJsZS91dGlsc1wiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1Jlc3VsdHNMaXN0JyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEJ0bjogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2luYXRpb246IFRhYmxlUGFnaW5hdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdlVGl0bGU6IFBhZ2VUaXRsZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIERlbGV0ZUFjdGlvbjogRGVsZXRlQWN0aW9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHJlc3VsdHM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvYXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgYWN0aXZpdHkgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuYWN0aXZpdHk7XG4gICAgICAgIHZhciBhY3Rpdml0eUlkID0gYWN0aXZpdHkudmFsdWUuaWQsIGFjdGl2aXR5VGl0bGUgPSBhY3Rpdml0eS52YWx1ZS50aXRsZSwgYWN0aXZpdHlMaW5rID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQpO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciByZXN1bHRzRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgaXNFbXB0eSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJyZWFkY3J1bWIgZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGJyZWFkY3J1bWJEYXRhID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0cmFuc2xhdGUudGV4dEZyb21LZXkoJ2FjdGl2aXRpZXMueW91cl9hY3Rpdml0aWVzJyksXG4gICAgICAgICAgICAgICAgbGluazogJy9hY3Rpdml0aWVzJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICgwLCB0aXRsZV8xLmRlZmF1bHQpKGFjdGl2aXR5VGl0bGUsICdlbicpLFxuICAgICAgICAgICAgICAgIGxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdyZXN1bHRfbGlzdCcpLFxuICAgICAgICAgICAgICAgIGxpbms6ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgZnVuY3Rpb24gaGFuZGxlTmF2aWdhdGUocGF0aCkge1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBwYXRoO1xuICAgICAgICB9XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkLCBcIi9yZXN1bHRzL3BhZ2UvMVwiKSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHJlc3VsdHNEYXRhLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuZGF0YS5sZW5ndGggPyBmYWxzZSA6IHRydWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcHJvcHMudG9hc3QudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGZldGNoTGlzdGluZ3MoYWN0aXZlX3BhZ2UpIHtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQsIFwiL3Jlc3VsdHMvcGFnZS9cIikgKyBhY3RpdmVfcGFnZSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihyZXN1bHRzRGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEgPyBmYWxzZSA6IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBQcm92aWRlXG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgncGFyZW50SXRlbUlkJywgYWN0aXZpdHlJZCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBicmVhZGNydW1iRGF0YTogYnJlYWRjcnVtYkRhdGEsXG4gICAgICAgICAgICBhY3Rpdml0eUxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIHRvYXN0RGF0YTogdG9hc3REYXRhLFxuICAgICAgICAgICAgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsXG4gICAgICAgICAgICByZXN1bHRzRGF0YTogcmVzdWx0c0RhdGEsXG4gICAgICAgICAgICBnZXRBY3Rpdml0eVRpdGxlOiB0aXRsZV8xLmRlZmF1bHQsXG4gICAgICAgICAgICBmZXRjaExpc3RpbmdzOiBmZXRjaExpc3RpbmdzLFxuICAgICAgICAgICAgaGFuZGxlTmF2aWdhdGU6IGhhbmRsZU5hdmlnYXRlLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBtZXRob2RzOiB7IGNyZWF0ZUNhcGl0YWxpemVkU2VudGVuY2U6IHV0aWxzXzEuY3JlYXRlQ2FwaXRhbGl6ZWRTZW50ZW5jZSB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdSZXN1bHREb2N1bWVudExpbmsnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBkbERhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHJldHVybiB7IGRsRGF0YTogZGxEYXRhLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbi8vY29tcG9zYWJsZVxudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbnZhciB0aXRsZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL3RpdGxlXCIpKTtcbi8vY29tcG9uZW50c1xudmFyIEhhdmVOb3RBZGRlZFlldF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9IYXZlTm90QWRkZWRZZXQudnVlXCIpKTtcbnZhciBMaW5rX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvTGluay52dWVcIikpO1xuLy8gaGVscGVyIGZ1bmN0aW9uXG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUmVzdWx0SW5kaWNhdG9yJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIE5vdFlldDogSGF2ZU5vdEFkZGVkWWV0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEJ0bjogTGlua192dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvb2xUaXA6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciByZXN1bHQgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykucmVzdWx0O1xuICAgICAgICB2YXIgaW5kaWNhdG9yRGF0YSA9IHJlc3VsdC52YWx1ZS5pbmRpY2F0b3JzLnJldmVyc2UoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGluZGljYXRvckRhdGE6IGluZGljYXRvckRhdGEsXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGdldEFjdGl2aXR5VGl0bGU6IHRpdGxlXzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGNvdW50RG9jdW1lbnRMaW5rOiB1dGlsc18xLmNvdW50RG9jdW1lbnRMaW5rLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUmVzdWx0UmVmZXJlbmNlJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciByZWZlcmVuY2VEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgcmVmZXJlbmNlRGF0YTogcmVmZXJlbmNlRGF0YSwgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdSZXN1bHRUeXBlJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIHR5cGVEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZURhdGE6IHR5cGVEYXRhLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1Jlc3VsdFREJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgdGREYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICByZXR1cm4geyB0ZERhdGE6IHRkRGF0YSwgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG4vL2NvbXBvbmVudHNcbnZhciBMaW5rX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvTGluay52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG4vL2NvbXBvc2FibGVcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgdGl0bGVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS90aXRsZVwiKSk7XG52YXIgVHJhbnNhY3Rpb25FbGVtZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL1RyYW5zYWN0aW9uRWxlbWVudC52dWVcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25EZXRhaWwnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgVHJhbnNhY3Rpb25FbGVtZW50OiBUcmFuc2FjdGlvbkVsZW1lbnRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2VUaXRsZTogUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNhY3Rpb246IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvYXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZWxlbWVudDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIF9hID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLCBhY3Rpdml0eSA9IF9hLmFjdGl2aXR5LCB0cmFuc2FjdGlvbiA9IF9hLnRyYW5zYWN0aW9uO1xuICAgICAgICB2YXIgbGlua0NsYXNzZXMgPSAnZmxleCBpdGVtcy1jZW50ZXIgdy1mdWxsIGJnLXdoaXRlIHJvdW5kZWQgcC0yIHRleHQtc20gdGV4dC1uLTUwIGZvbnQtYm9sZCBsZWFkaW5nLXJlbGF4ZWQgbWItMiBzaGFkb3ctZGVmYXVsdCc7XG4gICAgICAgIHZhciBzaG93U2lkZWJhciA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHBvc2l0aW9uWSA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICB2YXIgc2NyZWVuV2lkdGggPSAoMCwgdnVlXzEucmVmKSgwKTtcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaGFuZGxlU2Nyb2xsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcG9zaXRpb25ZLnZhbHVlID0gd2luZG93LnNjcm9sbFk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBpc3RvcFZpc2libGUgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBwb3NpdGlvblkudmFsdWUgPT09IDA7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyB0aXRsZXNcbiAgICAgICAgdmFyIHRyYW5zYWN0aW9uRGF0YSA9IHRyYW5zYWN0aW9uLnZhbHVlLnRyYW5zYWN0aW9uO1xuICAgICAgICB2YXIgY2FsY1dpZHRoID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBzY3JlZW5XaWR0aC52YWx1ZSA9IGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xuICAgICAgICAgICAgaWYgKHNjcmVlbldpZHRoLnZhbHVlID4gMTAyNCkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNob3dTaWRlYmFyLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBhY3Rpdml0eUlkID0gYWN0aXZpdHkudmFsdWUuaWQsIGFjdGl2aXR5VGl0bGUgPSAoMCwgdGl0bGVfMS5kZWZhdWx0KShhY3Rpdml0eS52YWx1ZS50aXRsZSwgJ2VuJyksIGFjdGl2aXR5TGluayA9IFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkKSwgdHJhbnNhY3Rpb25MaW5rID0gXCJcIi5jb25jYXQoYWN0aXZpdHlMaW5rLCBcIi90cmFuc2FjdGlvbi9cIikuY29uY2F0KHRyYW5zYWN0aW9uLnZhbHVlLmlkKTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzaG93U2lkZWJhci52YWx1ZTsgfSwgZnVuY3Rpb24gKHNpZGViYXIpIHtcbiAgICAgICAgICAgIGlmIChzaWRlYmFyKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogQnJlYWRjcnVtYiBkYXRhXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgYnJlYWRjcnVtYkRhdGEgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRyYW5zbGF0ZS50ZXh0RnJvbUtleSgnYWN0aXZpdGllcy55b3VyX2FjdGl2aXRpZXMnKSxcbiAgICAgICAgICAgICAgICBsaW5rOiAnL2FjdGl2aXR5JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGFjdGl2aXR5VGl0bGUsXG4gICAgICAgICAgICAgICAgbGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdHJhbnNsYXRlLmNvbW1vblRleHQoJ3RyYW5zYWN0aW9uJyksXG4gICAgICAgICAgICAgICAgbGluazogJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXNNYW5kYXRvcnlJY29uID0gZnVuY3Rpb24gKHIpIHtcbiAgICAgICAgICAgIHJldHVybiAoci50b1N0cmluZygpID09PSAndmFsdWUnIHx8XG4gICAgICAgICAgICAgICAgci50b1N0cmluZygpID09PSAndHJhbnNhY3Rpb25fdHlwZScgfHxcbiAgICAgICAgICAgICAgICByLnRvU3RyaW5nKCkgPT09ICd0cmFuc2FjdGlvbl9kYXRlJyk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhY3Rpdml0eVRpdGxlOiBhY3Rpdml0eVRpdGxlLFxuICAgICAgICAgICAgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsXG4gICAgICAgICAgICB0cmFuc2FjdGlvbkRhdGE6IHRyYW5zYWN0aW9uRGF0YSxcbiAgICAgICAgICAgIGxpbmtDbGFzc2VzOiBsaW5rQ2xhc3NlcyxcbiAgICAgICAgICAgIGJyZWFkY3J1bWJEYXRhOiBicmVhZGNydW1iRGF0YSxcbiAgICAgICAgICAgIGFjdGl2aXR5TGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgdHJhbnNhY3Rpb25MaW5rOiB0cmFuc2FjdGlvbkxpbmssXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIGlzTWFuZGF0b3J5SWNvbjogaXNNYW5kYXRvcnlJY29uLFxuICAgICAgICAgICAgc2hvd1NpZGViYXI6IHNob3dTaWRlYmFyLFxuICAgICAgICAgICAgaXN0b3BWaXNpYmxlOiBpc3RvcFZpc2libGUsXG4gICAgICAgICAgICB0cmFuc2xhdGU6IHRyYW5zbGF0ZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLy4uLy4uLy4uL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLy4uLy4uLy4uL2NvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgSW5kZXhfMSA9IHJlcXVpcmUoXCIuL2VsZW1lbnRzL0luZGV4XCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlFbGVtZW50JyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIERlc2NyaXB0aW9uOiBJbmRleF8xLkRlc2NyaXB0aW9uLFxuICAgICAgICBBaWRUeXBlOiBJbmRleF8xLkFpZFR5cGUsXG4gICAgICAgIFRyYW5zYWN0aW9uVHlwZTogSW5kZXhfMS5UcmFuc2FjdGlvblR5cGUsXG4gICAgICAgIFRyYW5zYWN0aW9uRGF0ZTogSW5kZXhfMS5UcmFuc2FjdGlvbkRhdGUsXG4gICAgICAgIFZhbHVlOiBJbmRleF8xLlZhbHVlLFxuICAgICAgICBQcm92aWRlck9yZ2FuaXphdGlvbjogSW5kZXhfMS5Qcm92aWRlck9yZ2FuaXphdGlvbixcbiAgICAgICAgUmVjZWl2ZXJPcmdhbml6YXRpb246IEluZGV4XzEuUmVjZWl2ZXJPcmdhbml6YXRpb24sXG4gICAgICAgIERpc2J1cnNlbWVudENoYW5uZWw6IEluZGV4XzEuRGlzYnVyc2VtZW50Q2hhbm5lbCxcbiAgICAgICAgU2VjdG9yOiBJbmRleF8xLlNlY3RvcixcbiAgICAgICAgUmVjaXBpZW50Q291bnRyeTogSW5kZXhfMS5SZWNpcGllbnRDb3VudHJ5LFxuICAgICAgICBSZWNpcGllbnRSZWdpb246IEluZGV4XzEuUmVjaXBpZW50UmVnaW9uLFxuICAgICAgICBGbG93VHlwZTogSW5kZXhfMS5GbG93VHlwZSxcbiAgICAgICAgRmluYW5jZVR5cGU6IEluZGV4XzEuRmluYW5jZVR5cGUsXG4gICAgICAgIFRpZWRTdGF0dXM6IEluZGV4XzEuVGllZFN0YXR1cyxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZWxlbWVudE5hbWU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBlZGl0VXJsOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgd2lkdGg6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGhvdmVyVGV4dDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIF9hID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLCBkYXRhID0gX2EuZGF0YSwgdHlwZXMgPSBfYS50eXBlcywgZWxlbWVudERhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3R5cGVzJywgdHlwZXMpO1xuICAgICAgICBmdW5jdGlvbiBnZXRMYW5ndWFnZXMobGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiBsYW5ndWFnZS5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7IHJldHVybiBlbnRyeS5sYW5ndWFnZTsgfSkuam9pbignLCAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZWxlbWVudERhdGE6IGVsZW1lbnREYXRhLFxuICAgICAgICAgICAgZ2V0TGFuZ3VhZ2VzOiBnZXRMYW5ndWFnZXMsXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogdHJhbnNsYXRlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuLy9jb21wb25lbnRzXG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIFRhYmxlUGFnaW5hdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlXCIpKTtcbnZhciBQYWdlVGl0bGVfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUGFnZVRpdGxlLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIERlbGV0ZUFjdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9EZWxldGVBY3Rpb24udnVlXCIpKTtcbi8vY29tcG9zYWJsZVxudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbnZhciB0aXRsZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL3RpdGxlXCIpKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiLi4vLi4vLi4vY29tcG9zYWJsZS91dGlsc1wiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG4vLyB0b2dnbGUgc3RhdGUgZm9yIG1vZGFsIHBvcHVwXG52YXIgX2EgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgZGVsZXRlVmFsdWUgPSBfYVswXSwgZGVsZXRlVG9nZ2xlID0gX2FbMV07XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uTGlzdCcsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBCdG46IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdpbmF0aW9uOiBUYWJsZVBhZ2luYXRpb25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnZVRpdGxlOiBQYWdlVGl0bGVfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBEZWxldGVBY3Rpb246IERlbGV0ZUFjdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYWN0aXZpdHk6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0cmFuc2FjdGlvbnM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvYXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgYWN0aXZpdHkgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuYWN0aXZpdHk7XG4gICAgICAgIHZhciBhY3Rpdml0eUlkID0gYWN0aXZpdHkudmFsdWUuaWQsIGFjdGl2aXR5VGl0bGUgPSAoMCwgdGl0bGVfMS5kZWZhdWx0KShhY3Rpdml0eS52YWx1ZS50aXRsZSwgJ2VuJyksIGFjdGl2aXR5TGluayA9IFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkKTtcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdHJhbnNhY3Rpb25zRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe30pO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCwgXCIvdHJhbnNhY3Rpb25zL3BhZ2UvMVwiKSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHRyYW5zYWN0aW9uc0RhdGEsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChwcm9wcy50b2FzdC5tZXNzYWdlICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHByb3BzLnRvYXN0LnR5cGU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBwcm9wcy50b2FzdC5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICBmdW5jdGlvbiBoYW5kbGVOYXZpZ2F0ZShwYXRoKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZmV0Y2hMaXN0aW5ncyhhY3RpdmVfcGFnZSkge1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCwgXCIvdHJhbnNhY3Rpb25zL3BhZ2UvXCIpICsgYWN0aXZlX3BhZ2UpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odHJhbnNhY3Rpb25zRGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBQcm92aWRlXG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgncGFyZW50SXRlbUlkJywgYWN0aXZpdHlJZCk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCcmVhZGNydW1iIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIHZhciBicmVhZGNydW1iRGF0YSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdHJhbnNsYXRlLnRleHRGcm9tS2V5KCdhY3Rpdml0aWVzLnlvdXJfYWN0aXZpdGllcycpLFxuICAgICAgICAgICAgICAgIGxpbms6ICcvYWN0aXZpdGllcycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBhY3Rpdml0eVRpdGxlLFxuICAgICAgICAgICAgICAgIGxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRyYW5zbGF0ZS5jb21tb25UZXh0KCd0cmFuc2FjdGlvbl9saXN0JyksXG4gICAgICAgICAgICAgICAgbGluazogJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnJlYWRjcnVtYkRhdGE6IGJyZWFkY3J1bWJEYXRhLFxuICAgICAgICAgICAgYWN0aXZpdHlMaW5rOiBhY3Rpdml0eUxpbmssXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uc0RhdGE6IHRyYW5zYWN0aW9uc0RhdGEsXG4gICAgICAgICAgICBnZXRBY3Rpdml0eVRpdGxlOiB0aXRsZV8xLmRlZmF1bHQsXG4gICAgICAgICAgICBmZXRjaExpc3RpbmdzOiBmZXRjaExpc3RpbmdzLFxuICAgICAgICAgICAgdG9hc3REYXRhOiB0b2FzdERhdGEsXG4gICAgICAgICAgICBkZWxldGVWYWx1ZTogZGVsZXRlVmFsdWUsXG4gICAgICAgICAgICBkZWxldGVUb2dnbGU6IGRlbGV0ZVRvZ2dsZSxcbiAgICAgICAgICAgIGhhbmRsZU5hdmlnYXRlOiBoYW5kbGVOYXZpZ2F0ZSxcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogdHJhbnNsYXRlLFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgbWV0aG9kczogeyBjcmVhdGVDYXBpdGFsaXplZFNlbnRlbmNlOiB1dGlsc18xLmNyZWF0ZUNhcGl0YWxpemVkU2VudGVuY2UgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25BaWRUeXBlJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGF0RGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciB0eXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhdERhdGE6IGF0RGF0YSxcbiAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICB0cmFuc2xhdGU6IHRyYW5zbGF0ZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvbkRlc2NyaXB0aW9uJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIHRkRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciB0eXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IHRkRGF0YTogdGREYXRhLCB0eXBlOiB0eXBlLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uRGlzYnVyc2VtZW50Q2hhbm5lbCcsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBjb2RlID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgY29kZTogY29kZSwgdHlwZTogdHlwZSwgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvbkZpbmFuY2VUeXBlJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGZpbmFuY2VEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgZmluYW5jZURhdGE6IGZpbmFuY2VEYXRhLCB0eXBlOiB0eXBlLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uRmxvd1R5cGUnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgZmxvd0RhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgdHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyBmbG93RGF0YTogZmxvd0RhdGEsIHR5cGU6IHR5cGUsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25Qcm92aWRlck9yZ2FuaXNhdGlvbicsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBQb0RhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgdHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyBQb0RhdGE6IFBvRGF0YSwgdHlwZTogdHlwZSwgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvblJlY2VpdmVyT3JnYW5pc2F0aW9uJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIFBvRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciB0eXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IFBvRGF0YTogUG9EYXRhLCB0eXBlOiB0eXBlLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uUmVjaXBpZW50Q291bnRyeScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBjb3VudHJ5ID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgY291bnRyeTogY291bnRyeSwgdHlwZTogdHlwZSwgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvblJlY2lwaWVudFJlZ2lvbicsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBjb3VudHJ5ID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgY291bnRyeTogY291bnRyeSwgdHlwZTogdHlwZSwgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvblNlY3RvcicsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciB0eXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHZhciBzZWN0b3IgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2VjdG9yOiBzZWN0b3IsXG4gICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25UaWVkU3RhdHVzJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIHRzRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciB0eXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IHRzRGF0YTogdHNEYXRhLCB0eXBlOiB0eXBlLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vLi4vLi4vLi4vLi4vY29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uRGF0ZScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBkYXRlID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgZGF0ZTogZGF0ZSwgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25UeXBlJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGNvZGUgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgdHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyBjb2RlOiBjb2RlLCB0eXBlOiB0eXBlLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vLi4vLi4vLi4vLi4vY29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uVmFsdWUnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgdmFsdWUgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4geyB2YWx1ZTogdmFsdWUsIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgUGFnZVRpdGxlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWVcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdBdWRpdExpc3RpbmcnLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGF1ZGl0RGF0YSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgaXNFbXB0eSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGlzTG9hZGVyVmlzaWJsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIGZldGNoQXVkaXRMaXN0KDEpO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGZldGNoQXVkaXRMaXN0KGFjdGl2ZV9wYWdlLCBmaWx0ZXJlZCkge1xuICAgICAgICAgICAgaWYgKGZpbHRlcmVkID09PSB2b2lkIDApIHsgZmlsdGVyZWQgPSBmYWxzZTsgfVxuICAgICAgICAgICAgdmFyIHJvdXRlID0gXCIvYXVkaXQvcGFnZS9cIi5jb25jYXQoZmlsdGVyZWQgPyAnMScgOiBhY3RpdmVfcGFnZSk7XG4gICAgICAgICAgICB2YXIgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChyb3V0ZSwgeyBwYXJhbXM6IHBhcmFtcyB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGF1ZGl0RGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEgPyBmYWxzZSA6IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgYXVkaXREYXRhOiBhdWRpdERhdGEsIGlzRW1wdHk6IGlzRW1wdHksIGlzTG9hZGVyVmlzaWJsZTogaXNMb2FkZXJWaXNpYmxlLCBmZXRjaEF1ZGl0TGlzdDogZmV0Y2hBdWRpdExpc3QsIExvYWRlcjogTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIFBhZ2VUaXRsZTogUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xudmFyIHNwaW5uZXJMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc3Bpbm5lckxvYWRlci52dWVcIikpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdEYXNoYm9hcmRHcmFwaCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY3VycmVudFZpZXc6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGxhYmVscyA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIHJvdW5kZWRMYWJlbHMgPSAoMCwgdnVlXzIucmVmKShbXSk7XG4gICAgICAgIHZhciBzaG93R3JhcGhMb2FkZXIgPSAoMCwgdnVlXzIuaW5qZWN0KSgnc2hvd0dyYXBoTG9hZGVyJyk7XG4gICAgICAgIHZhciBncmFwaEFtb3VudCA9ICgwLCB2dWVfMi5pbmplY3QpKCdncmFwaEFtb3VudCcpO1xuICAgICAgICB2YXIgeWF4aXNUaWNrcyA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIG1heFZhbHVlID0gKDAsIHZ1ZV8yLnJlZikoMCk7XG4gICAgICAgIHZhciBjaGFydCA9ICgwLCB2dWVfMi5yZWYpKHt9KTtcbiAgICAgICAgdmFyIGdyYXBoQ29sb3IgPSAnIzE3OTk3Qic7XG4gICAgICAgIHZhciB0b29sdGlwVGV4dCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3dpdGNoIChwcm9wcy5jdXJyZW50Vmlldykge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3B1Ymxpc2hlcic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnVG90YWwgbm8uIG9mIHB1Ymxpc2hlciByZWdpc3RyYXRpb24nO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2FjdGl2aXR5JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdUb3RhbCBuby4gb2YgYWN0aXZpdGllcyBhZGRlZCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdUb3RhbCBudW1iZXIgb2YgdXNlcic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2hhcnRPcHRpb25zID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiAoe1xuICAgICAgICAgICAgY2hhcnQ6IHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgICAgICAgICAgb2Zmc2V0WTogNSxcbiAgICAgICAgICAgICAgICB6b29tOiB7XG4gICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICB4YXhpczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiA1MCwgLy8gQWRqdXN0IHRoZSBsZWZ0IHBhZGRpbmcgdmFsdWUgYXMgbmVlZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0b29sYmFyOiB7XG4gICAgICAgICAgICAgICAgICAgIHNob3c6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWFya2Vyczoge1xuICAgICAgICAgICAgICAgIHNpemU6IGdyYXBoQW1vdW50LnZhbHVlLmxlbmd0aCA+IDEgPyAwIDogMixcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMCxcbiAgICAgICAgICAgICAgICBjb2xvcnM6IFsnIzE3OTk3QiddLFxuICAgICAgICAgICAgICAgIGhvdmVyOiB7XG4gICAgICAgICAgICAgICAgICAgIHNpemU6IDYsIC8vIEN1c3RvbWl6ZSB0aGUgbWFya2VyIHNpemUgb24gaG92ZXJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN0cm9rZToge1xuICAgICAgICAgICAgICAgIGN1cnZlOiAnc3RyYWlnaHQnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAxLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbG9yczogW2dyYXBoQ29sb3JdLFxuICAgICAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgICAgIGN1c3RvbTogZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzZXJpZXMgPSBfYS5zZXJpZXMsIHNlcmllc0luZGV4ID0gX2Euc2VyaWVzSW5kZXgsIGRhdGFQb2ludEluZGV4ID0gX2EuZGF0YVBvaW50SW5kZXgsIHcgPSBfYS53O1xuICAgICAgICAgICAgICAgICAgICB2YXIgZ2V0RGF5ID0gZnVuY3Rpb24gKGZvcm1hdHRlZERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZm9ybWF0dGVkRGF0ZSkuZm9ybWF0KCdkZGQgTU1NIEREIFlZWVknKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiPGRpdiBjbGFzcz1cXFwicC00XFxcIj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj4gXCIuY29uY2F0KGdldERheSh3Lmdsb2JhbHMuY2F0ZWdvcnlMYWJlbHNbZGF0YVBvaW50SW5kZXhdKSwgXCI8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCB0ZXh0LW4tNTAgc3BhY2UteC00IGp1c3RpZnktYmV0d2VlblxcXCI+PGRpdj5cIikuY29uY2F0KHRvb2x0aXBUZXh0LnZhbHVlLCBcIjwvZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmb250LWJvbGRcXFwiPlwiKS5jb25jYXQoc2VyaWVzW3Nlcmllc0luZGV4XVtkYXRhUG9pbnRJbmRleF0sIFwiPC9kaXY+PC9kaXY+XFxuICAgICAgICAgICAgICA8L2Rpdj5cIik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB4YXhpczoge1xuICAgICAgICAgICAgICAgIHRpY2tBbW91bnQ6IDMsXG4gICAgICAgICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAxMDAsXG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAyMCwgLy8gSW5jcmVhc2UgdGhlIHNwYWNlIGJldHdlZW4gdGhlIGxhc3QgdGljayBhbmQgdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIGNoYXJ0XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgcm90YXRlOiAwLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeWF4aXM6IHtcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiBtYXhWYWx1ZS52YWx1ZSArIDMsXG4gICAgICAgICAgICAgICAgdGlja0Ftb3VudDogbWF4VmFsdWUudmFsdWUgPiA0ID8gNSA6IG1heFZhbHVlLnZhbHVlICsgMyxcbiAgICAgICAgICAgICAgICAvLyBBZGRpdGlvbmFsIHNwYWNpbmcgb3B0aW9uc1xuICAgICAgICAgICAgICAgIG9mZnNldFk6IDEwLFxuICAgICAgICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyOiBmdW5jdGlvbiAodmFsdWUsIGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzLnZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFydC52YWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9iID0gKF9hID0gY2hhcnQudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jaGFydCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLncuZ2xvYmFscy55QXhpc1NjYWxlWzBdLnJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3VuZGVkTGFiZWxzLnZhbHVlID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBjb3VudCA9IDA7IGNvdW50IDwgbGFiZWxzLnZhbHVlLmxlbmd0aDsgY291bnQrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcm91bmRlZExhYmVscy52YWx1ZS5pbmNsdWRlcyhNYXRoLnJvdW5kKGxhYmVscy52YWx1ZVtjb3VudF0pKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3VuZGVkTGFiZWxzLnZhbHVlLnB1c2goTWF0aC5yb3VuZChsYWJlbHMudmFsdWVbY291bnRdKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJvdW5kZWRMYWJlbHMudmFsdWVbaW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTsgfSk7XG4gICAgICAgIHZhciBzZXJpZXMgPSAoMCwgdnVlXzIucmVhY3RpdmUpKFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnRGVza3RvcHMnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdsaW5lJyxcbiAgICAgICAgICAgICAgICBkYXRhOiBncmFwaEFtb3VudC52YWx1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGdyYXBoQW1vdW50LnZhbHVlOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBtYXhWYWx1ZS52YWx1ZSA9IDA7XG4gICAgICAgICAgICB5YXhpc1RpY2tzLnZhbHVlLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdyYXBoQW1vdW50LnZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1heFZhbHVlLnZhbHVlIDwgZ3JhcGhBbW91bnQudmFsdWVbaV1bJ3knXSkge1xuICAgICAgICAgICAgICAgICAgICBtYXhWYWx1ZS52YWx1ZSA9IGdyYXBoQW1vdW50LnZhbHVlW2ldWyd5J107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VyaWVzWydkYXRhJ10gPSBncmFwaEFtb3VudC52YWx1ZTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYWJlbHM6IGxhYmVscywgcm91bmRlZExhYmVsczogcm91bmRlZExhYmVscywgc2hvd0dyYXBoTG9hZGVyOiBzaG93R3JhcGhMb2FkZXIsIGdyYXBoQW1vdW50OiBncmFwaEFtb3VudCwgeWF4aXNUaWNrczogeWF4aXNUaWNrcywgbWF4VmFsdWU6IG1heFZhbHVlLCBjaGFydDogY2hhcnQsIGdyYXBoQ29sb3I6IGdyYXBoQ29sb3IsIHByb3BzOiBwcm9wcywgdG9vbHRpcFRleHQ6IHRvb2x0aXBUZXh0LCBjaGFydE9wdGlvbnM6IGNoYXJ0T3B0aW9ucywgc2VyaWVzOiBzZXJpZXMsIHNwaW5uZXJMb2FkZXI6IHNwaW5uZXJMb2FkZXJfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIFRhYmxlUGFnaW5hdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlXCIpKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG52YXIgVGFibGVMb2FkZXJDb21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVGFibGVMb2FkZXJDb21wb25lbnQudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdEYXNoYm9hcmRMaXN0U2VjdGlvbicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY3VycmVudFZpZXc6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0YWJsZURhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRhYmxlSGVhZGVyOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhcnREYXRlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZW5kRGF0ZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGVUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ3RhYmxlTmF2J10sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX2IsIF9jO1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlLCBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBhY3Rpdml0eU5hdkxpc3QgPSBbXG4gICAgICAgICAgICB7IGxhYmVsOiAnQWN0aXZpdHkgU3RhdHVzJywgYXBpUGFyYW1zOiAnc3RhdHVzJyB9LFxuICAgICAgICAgICAgeyBsYWJlbDogJ0FjdGl2aXR5IEFkZGVkJywgYXBpUGFyYW1zOiAnbWV0aG9kJyB9LFxuICAgICAgICAgICAgeyBsYWJlbDogJ0FjdGl2aXR5IENvbXBsZXRpb24nLCBhcGlQYXJhbXM6ICdjb21wbGV0ZW5lc3MnIH0sXG4gICAgICAgIF07XG4gICAgICAgIHZhciBwdWJsaXNoZXJOYXZMaXN0ID0gW1xuICAgICAgICAgICAgeyBsYWJlbDogJ1B1Ymxpc2hlciBUeXBlJywgYXBpUGFyYW1zOiAncHVibGlzaGVyLXR5cGUnIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiAnRGF0YSBMaWNlbmNlJywgYXBpUGFyYW1zOiAnZGF0YS1saWNlbnNlJyB9LFxuICAgICAgICAgICAgeyBsYWJlbDogJ0NvdW50cnknLCBhcGlQYXJhbXM6ICdjb3VudHJ5JyB9LFxuICAgICAgICAgICAgeyBsYWJlbDogJ1JlZ2lzdHJhdGlvbiBUeXBlJywgYXBpUGFyYW1zOiAncmVnaXN0cmF0aW9uLXR5cGUnIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiAnU2V0dXAgQ29tcGxldGVuZXNzJywgYXBpUGFyYW1zOiAnc2V0dXAnIH0sXG4gICAgICAgIF07XG4gICAgICAgIHZhciBjdXJyZW50cGFnZSA9ICgwLCB2dWVfMi5yZWYpKDEpO1xuICAgICAgICB2YXIgcmVzZXRwYWdpbmF0aW9uID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZmlsdGVyID0gKDAsIHZ1ZV8yLnJlZikoeyBvcmRlckJ5OiAnJywgc29ydDogJycgfSk7XG4gICAgICAgIHZhciBzb3J0RWxlbWVudCA9ICgwLCB2dWVfMi5yZWYpKHsgbGFiZWw6ICcnLCBhcGlQYXJhbXM6ICcnIH0pO1xuICAgICAgICB2YXIgdXNlck5hdmxpc3QgPSBbeyBsYWJlbDogJ3VzZXInLCBhcGlQYXJhbXM6ICcnIH1dO1xuICAgICAgICB2YXIgY3VycmVudEl0ZW0gPSAoMCwgdnVlXzIucmVmKSh7XG4gICAgICAgICAgICBsYWJlbDogJ1B1Ymxpc2hlciBUeXBlJyxcbiAgICAgICAgICAgIGFwaVBhcmFtczogJ3B1Ymxpc2hlci10eXBlJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjdXJyZW50TmF2TGlzdCA9ICgwLCB2dWVfMi5yZWYpKHB1Ymxpc2hlck5hdkxpc3QpO1xuICAgICAgICB2YXIgdGl0bGUgPSAoMCwgdnVlXzIucmVmKSgoX2IgPSBjdXJyZW50TmF2TGlzdC52YWx1ZVswXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmxhYmVsKTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZmV0Y2hUYWJsZURhdGEoY3VycmVudE5hdkxpc3QudmFsdWVbMF0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHNvcnRUYWJsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZldGNoVGFibGVEYXRhKGN1cnJlbnRJdGVtLnZhbHVlLCBmYWxzZSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciB0cmlnZ2VycGFnaW5hdGlvbiA9IGZ1bmN0aW9uIChwYWdlKSB7XG4gICAgICAgICAgICBjdXJyZW50cGFnZS52YWx1ZSA9IHBhZ2U7XG4gICAgICAgICAgICByZXNldHBhZ2luYXRpb24udmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGZldGNoVGFibGVEYXRhKGN1cnJlbnRJdGVtLnZhbHVlLCBmYWxzZSk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gZmlsdGVyLnZhbHVlOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXNldHBhZ2luYXRpb24udmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgY3VycmVudHBhZ2UudmFsdWUgPSAxO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gcHJvcHMuY3VycmVudFZpZXc7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGN1cnJlbnRwYWdlLnZhbHVlID0gMTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gJ2FjdGl2aXR5Jykge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRJdGVtLnZhbHVlID0geyBsYWJlbDogJ0FjdGl2aXR5IFN0YXR1cycsIGFwaVBhcmFtczogJ3N0YXR1cycgfTtcbiAgICAgICAgICAgICAgICBjdXJyZW50TmF2TGlzdC52YWx1ZSA9IGFjdGl2aXR5TmF2TGlzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09PSAncHVibGlzaGVyJykge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRJdGVtLnZhbHVlID0ge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ1B1Ymxpc2hlciBUeXBlJyxcbiAgICAgICAgICAgICAgICAgICAgYXBpUGFyYW1zOiAncHVibGlzaGVyLXR5cGUnLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY3VycmVudE5hdkxpc3QudmFsdWUgPSBwdWJsaXNoZXJOYXZMaXN0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY3VycmVudE5hdkxpc3QudmFsdWUgPSB1c2VyTmF2bGlzdDtcbiAgICAgICAgICAgICAgICBjdXJyZW50SXRlbS52YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICd1c2VyJyxcbiAgICAgICAgICAgICAgICAgICAgYXBpUGFyYW1zOiAnJyxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmV0Y2hUYWJsZURhdGEoY3VycmVudE5hdkxpc3QudmFsdWVbMF0pO1xuICAgICAgICAgICAgYWN0aXZlQ2xhc3MudmFsdWUgPSAoX2EgPSBjdXJyZW50TmF2TGlzdC52YWx1ZVswXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxhYmVsO1xuICAgICAgICAgICAgdGl0bGUudmFsdWUgPSAoX2IgPSBjdXJyZW50TmF2TGlzdC52YWx1ZVswXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmxhYmVsO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHNob3dOb0RhdGFDb21wb25lbnQgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICByZXR1cm4gKHByb3BzLnRhYmxlRGF0YS5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICAgICAgICAoISh0aXRsZS52YWx1ZSA9PT0gJ1JlZ2lzdHJhdGlvbiBUeXBlJyB8fFxuICAgICAgICAgICAgICAgICAgICB0aXRsZS52YWx1ZSA9PT0gJ1NldHVwIENvbXBsZXRlbmVzcycpICYmXG4gICAgICAgICAgICAgICAgICAgICgoX2IgPSAoX2EgPSBwcm9wcy50YWJsZURhdGEpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kYXRhKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSA9PT0gMCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGFjdGl2ZUNsYXNzID0gKDAsIHZ1ZV8yLnJlZikoKF9jID0gY3VycmVudE5hdkxpc3QudmFsdWVbMF0pID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5sYWJlbCk7XG4gICAgICAgIHZhciBOYXZpZ2F0ZVdpdGhGaWx0ZXIgPSBmdW5jdGlvbiAocGFnZSwga2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKCEhcHJvcHMuc3RhcnREYXRlICYmICEhcHJvcHMuZW5kRGF0ZSkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gXCIvXCIuY29uY2F0KHBhZ2UsIFwiP1wiKS5jb25jYXQoa2V5LCBcIj1cIikuY29uY2F0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IFwiL1wiLmNvbmNhdChwYWdlLCBcIj9cIikuY29uY2F0KGtleSwgXCI9XCIpLmNvbmNhdCh2YWx1ZSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBmZXRjaFRhYmxlRGF0YSA9IGZ1bmN0aW9uIChpdGVtLCB0YWJDaGFuZ2UpIHtcbiAgICAgICAgICAgIGlmICh0YWJDaGFuZ2UgPT09IHZvaWQgMCkgeyB0YWJDaGFuZ2UgPSB0cnVlOyB9XG4gICAgICAgICAgICBhY3RpdmVDbGFzcy52YWx1ZSA9IGl0ZW0gPT09IG51bGwgfHwgaXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogaXRlbS5sYWJlbDtcbiAgICAgICAgICAgIHRpdGxlLnZhbHVlID0gaXRlbSA9PT0gbnVsbCB8fCBpdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBpdGVtLmxhYmVsO1xuICAgICAgICAgICAgc29ydEVsZW1lbnQudmFsdWUgPSBpdGVtO1xuICAgICAgICAgICAgZW1pdCgndGFibGVOYXYnLCBpdGVtLCBmaWx0ZXIsIGN1cnJlbnRwYWdlLnZhbHVlLCB0YWJDaGFuZ2UpO1xuICAgICAgICAgICAgcmVzZXRwYWdpbmF0aW9uLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICAgIHZhciB0b2dnbGVTb3J0ID0gZnVuY3Rpb24gKG9yZGVyKSB7XG4gICAgICAgICAgICBmaWx0ZXIudmFsdWUuc29ydCA9PT0gJ2FzYydcbiAgICAgICAgICAgICAgICA/IChmaWx0ZXIudmFsdWUuc29ydCA9ICdkZXNjJylcbiAgICAgICAgICAgICAgICA6IChmaWx0ZXIudmFsdWUuc29ydCA9ICdhc2MnKTtcbiAgICAgICAgICAgIGZpbHRlci52YWx1ZS5vcmRlckJ5ID0gb3JkZXI7XG4gICAgICAgICAgICBzb3J0VGFibGUoKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNvbXBsZXRlTmVzcyA9ICgwLCB2dWVfMi5pbmplY3QpKCdjb21wbGV0ZU5lc3MnKTtcbiAgICAgICAgdmFyIHJlZ2lzdHJhdGlvblR5cGUgPSAoMCwgdnVlXzIuaW5qZWN0KSgncmVnaXN0cmF0aW9uVHlwZScpO1xuICAgICAgICB2YXIgc2hvd1RhYmxlTG9hZGVyID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3Nob3dUYWJsZUxvYWRlcicpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBwcm9wczogcHJvcHMsIGVtaXQ6IGVtaXQsIGFjdGl2aXR5TmF2TGlzdDogYWN0aXZpdHlOYXZMaXN0LCBwdWJsaXNoZXJOYXZMaXN0OiBwdWJsaXNoZXJOYXZMaXN0LCBjdXJyZW50cGFnZTogY3VycmVudHBhZ2UsIHJlc2V0cGFnaW5hdGlvbjogcmVzZXRwYWdpbmF0aW9uLCBmaWx0ZXI6IGZpbHRlciwgc29ydEVsZW1lbnQ6IHNvcnRFbGVtZW50LCB1c2VyTmF2bGlzdDogdXNlck5hdmxpc3QsIGN1cnJlbnRJdGVtOiBjdXJyZW50SXRlbSwgY3VycmVudE5hdkxpc3Q6IGN1cnJlbnROYXZMaXN0LCB0aXRsZTogdGl0bGUsIHNvcnRUYWJsZTogc29ydFRhYmxlLCB0cmlnZ2VycGFnaW5hdGlvbjogdHJpZ2dlcnBhZ2luYXRpb24sIHNob3dOb0RhdGFDb21wb25lbnQ6IHNob3dOb0RhdGFDb21wb25lbnQsIGFjdGl2ZUNsYXNzOiBhY3RpdmVDbGFzcywgTmF2aWdhdGVXaXRoRmlsdGVyOiBOYXZpZ2F0ZVdpdGhGaWx0ZXIsIGZldGNoVGFibGVEYXRhOiBmZXRjaFRhYmxlRGF0YSwgdG9nZ2xlU29ydDogdG9nZ2xlU29ydCwgY29tcGxldGVOZXNzOiBjb21wbGV0ZU5lc3MsIHJlZ2lzdHJhdGlvblR5cGU6IHJlZ2lzdHJhdGlvblR5cGUsIHNob3dUYWJsZUxvYWRlcjogc2hvd1RhYmxlTG9hZGVyLCBQYWdpbmF0aW9uOiBUYWJsZVBhZ2luYXRpb25fdnVlXzEuZGVmYXVsdCwgdHJ1bmNhdGVUZXh0OiB1dGlsc18xLnRydW5jYXRlVGV4dCwgVGFibGVMb2FkZXJDb21wb25lbnQ6IFRhYmxlTG9hZGVyQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIERhc2hib2FyZFN0YXRzU2VjdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9EYXNoYm9hcmRTdGF0c1NlY3Rpb24udnVlXCIpKTtcbnZhciBEYXNoYm9hcmRMaXN0U2VjdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWVcIikpO1xudmFyIERhdGVSYW5nZVdpZGdldF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9EYXRlUmFuZ2VXaWRnZXQudnVlXCIpKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRGFzaGJvYXJkUGFnZScsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgb2xkZXN0RGF0ZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGN1cnJlbnROYXYgPSAoMCwgdnVlXzIucmVmKSh7XG4gICAgICAgICAgICBsYWJlbDogJ1B1Ymxpc2hlciBUeXBlJyxcbiAgICAgICAgICAgIGFwaVBhcmFtczogJ3B1Ymxpc2hlci10eXBlJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB0YWJsZURhdGEgPSAoMCwgdnVlXzIucmVmKSh7fSk7XG4gICAgICAgIHZhciBEYXRlTGFiZWwgPSAoMCwgdnVlXzIucmVmKSgnUmVnaXN0ZXJlZCBkYXRlOicpO1xuICAgICAgICB2YXIgc3RhcnREYXRlID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgZW5kRGF0ZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGdyYXBoQW1vdW50ID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgZ3JhcGhUb3RhbCA9ICgwLCB2dWVfMi5yZWYpKDApO1xuICAgICAgICB2YXIgc2hvd1RhYmxlTG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0dyYXBoTG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZGF0ZVR5cGUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBkYXRlTGFiZWwgPSB7XG4gICAgICAgICAgICBwdWJsaXNoZXI6ICdSZWdpc3RlcmVkIGRhdGU6JyxcbiAgICAgICAgICAgIGFjdGl2aXR5OiAnQWN0aXZpdHkgQWRkZWQgb246JyxcbiAgICAgICAgICAgIHVzZXI6ICdVc2VyIENyZWF0ZWQgRGF0ZTonLFxuICAgICAgICB9O1xuICAgICAgICB2YXIgY3VycmVudFZpZXcgPSAoMCwgdnVlXzIucmVmKSgncHVibGlzaGVyJyk7XG4gICAgICAgIHZhciBjb21wbGV0ZU5lc3MgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgcmVnaXN0cmF0aW9uVHlwZSA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBoYW5kbGVDaGFuZ2VUYWJsZU5hdiA9IGZ1bmN0aW9uIChpdGVtLCBmaWx0ZXIsIHBhZ2UsIHRhYkNoYW5nZSkge1xuICAgICAgICAgICAgaWYgKHRhYkNoYW5nZSA9PT0gdm9pZCAwKSB7IHRhYkNoYW5nZSA9IHRydWU7IH1cbiAgICAgICAgICAgIGlmICh0YWJDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXIudmFsdWUub3JkZXJCeSA9ICcnO1xuICAgICAgICAgICAgICAgIGZpbHRlci52YWx1ZS5zb3J0ID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjdXJyZW50TmF2LnZhbHVlID0gaXRlbTtcbiAgICAgICAgICAgIGZldGNoVGFibGVEYXRhKGZpbHRlci52YWx1ZSwgcGFnZSk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNldERhdGVSYW5nZURhdGUoJycsICcnKTtcbiAgICAgICAgICAgIGZldGNoVGFibGVEYXRhKCk7XG4gICAgICAgICAgICBmZXRjaEdyYXBoRGF0YSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICB2YXIgZG93bmxvYWRSZXBvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgICAgICAgaWYgKHN0YXJ0RGF0ZS52YWx1ZSAmJiBlbmREYXRlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnc3RhcnRfZGF0ZScsIHN0YXJ0RGF0ZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnZW5kX2RhdGUnLCBlbmREYXRlLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoXCIvZGFzaGJvYXJkL1wiLmNvbmNhdChjdXJyZW50Vmlldy52YWx1ZSwgXCIvZG93bmxvYWRcIiksIHsgcGFyYW1zOiBwYXJhbXMgfSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2VdLCB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9jc3YnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBcIlwiLmNvbmNhdChjdXJyZW50Vmlldy52YWx1ZSwgXCItcmVwb3J0LmNzdlwiKTtcbiAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGdyYXBoRGF0YUZvcm1hdHRlciA9IGZ1bmN0aW9uIChncmFwaERhdGEpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGRhdGUgaW4gZ3JhcGhEYXRhKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgIHg6ICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mb3JtYXQoJ01NTSBERCBZWVlZJyksXG4gICAgICAgICAgICAgICAgICAgIHk6IGdyYXBoRGF0YVtkYXRlXSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGdyYXBoQW1vdW50LnZhbHVlLnB1c2goZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBmZXRjaEdyYXBoRGF0YSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dHcmFwaExvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB2YXIgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnc3RhcnRfZGF0ZScsIHN0YXJ0RGF0ZS52YWx1ZSk7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdlbmRfZGF0ZScsIGVuZERhdGUudmFsdWUpO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChcIi9kYXNoYm9hcmQvXCIuY29uY2F0KGN1cnJlbnRWaWV3LnZhbHVlLCBcIi9jb3VudC9cIiksIHsgcGFyYW1zOiBwYXJhbXMgfSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgZ3JhcGhBbW91bnQudmFsdWUubGVuZ3RoID0gMDtcbiAgICAgICAgICAgICAgICBncmFwaFRvdGFsLnZhbHVlID0gcmVzLmRhdGEuZGF0YVsnY291bnQnXTtcbiAgICAgICAgICAgICAgICBncmFwaERhdGFGb3JtYXR0ZXIocmVzLmRhdGEuZGF0YVsnZ3JhcGgnXSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzaG93R3JhcGhMb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgc2V0RGF0ZVJhbmdlRGF0ZSA9IGZ1bmN0aW9uIChzdGFydCwgZW5kLCB0eXBlKSB7XG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gdm9pZCAwKSB7IHR5cGUgPSAnJzsgfVxuICAgICAgICAgICAgc3RhcnREYXRlLnZhbHVlID0gJyc7XG4gICAgICAgICAgICBkYXRlVHlwZS52YWx1ZSA9IHR5cGU7XG4gICAgICAgICAgICBpZiAoc3RhcnQgIT0gJzE5OTAtMTItMzEnKSB7XG4gICAgICAgICAgICAgICAgc3RhcnREYXRlLnZhbHVlID0gc3RhcnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbmREYXRlLnZhbHVlID0gZW5kO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRWaWV3LnZhbHVlICE9PSAndXNlcicpIHtcbiAgICAgICAgICAgICAgICBmZXRjaFRhYmxlRGF0YSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmV0Y2hHcmFwaERhdGEoKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBjdXJyZW50Vmlldy52YWx1ZTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgRGF0ZUxhYmVsLnZhbHVlID0gKF9hID0gZGF0ZUxhYmVsW2N1cnJlbnRWaWV3LnZhbHVlXSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogY3VycmVudFZpZXcudmFsdWU7XG4gICAgICAgICAgICBzdGFydERhdGUudmFsdWUgPSAnJztcbiAgICAgICAgICAgIGVuZERhdGUudmFsdWUgPSAnJztcbiAgICAgICAgICAgIGZldGNoR3JhcGhEYXRhKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZmV0Y2hUYWJsZURhdGEgPSBmdW5jdGlvbiAoZmlsdGVyLCBwYWdlKSB7XG4gICAgICAgICAgICBpZiAoZmlsdGVyID09PSB2b2lkIDApIHsgZmlsdGVyID0geyBvcmRlckJ5OiAnJywgc29ydDogJycgfTsgfVxuICAgICAgICAgICAgaWYgKHBhZ2UgPT09IHZvaWQgMCkgeyBwYWdlID0gJzEnOyB9XG4gICAgICAgICAgICBzaG93VGFibGVMb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICAgICAgICAgIHZhciBhY3RpdmVUYWIgPSBjdXJyZW50TmF2LnZhbHVlWydhcGlQYXJhbXMnXTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIub3JkZXJCeSkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ29yZGVyQnknLCAoMCwgdXRpbHNfMS5rZWJhYkNhc2VUb1NuYWtlY2FzZSkoZmlsdGVyLm9yZGVyQnkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ3BhZ2UnLCBwYWdlKTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIuc29ydCkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ2RpcmVjdGlvbicsIGZpbHRlci5zb3J0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdGFydERhdGUudmFsdWUgJiYgZW5kRGF0ZS52YWx1ZSAmJiBjdXJyZW50TmF2LnZhbHVlLmxhYmVsICE9PSAndXNlcicpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdzdGFydF9kYXRlJywgc3RhcnREYXRlLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdlbmRfZGF0ZScsIGVuZERhdGUudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGFwaVVybCA9IFwiL2Rhc2hib2FyZC9cIi5jb25jYXQoY3VycmVudFZpZXcudmFsdWUsIFwiL1wiKS5jb25jYXQoYWN0aXZlVGFiKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoYXBpVXJsLCB7IHBhcmFtczogcGFyYW1zIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFZpZXcudmFsdWUgPT09ICdwdWJsaXNoZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhY3RpdmVUYWIgIT09ICdzZXR1cCcgJiYgYWN0aXZlVGFiICE9PSAncmVnaXN0cmF0aW9uLXR5cGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJsZURhdGEudmFsdWUgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ZW1wRGF0YSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvZGVMaXN0ID0gKF9hID0gcmVzcG9uc2UuZGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNvZGVMaXN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9iamVjdExlbmd0aCA9IChfYyA9IChfYiA9IHJlc3BvbnNlLmRhdGEpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5wYWdpbmF0ZWREYXRhLmRhdGEubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvYmplY3RMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpdGVtSW5QYWdpbmF0ZWREYXRhID0gKF9kID0gcmVzcG9uc2UuZGF0YSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLnBhZ2luYXRlZERhdGEuZGF0YVtpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHVibGlzaGVyVHlwZUtleSA9IGl0ZW1JblBhZ2luYXRlZERhdGFbKDAsIHV0aWxzXzEua2ViYWJDYXNlVG9TbmFrZWNhc2UpKGFjdGl2ZVRhYildO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBEYXRhLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogY29kZUxpc3RbcHVibGlzaGVyVHlwZUtleV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBwdWJsaXNoZXJUeXBlS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbDogaXRlbUluUGFnaW5hdGVkRGF0YS5jb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlRGF0YS52YWx1ZSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJsZURhdGEudmFsdWUuZGF0YSA9IHRlbXBEYXRhO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFjdGl2ZVRhYiA9PT0gJ3JlZ2lzdHJhdGlvbi10eXBlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cmF0aW9uVHlwZS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlTmVzcy52YWx1ZSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRWaWV3LnZhbHVlID09PSAndXNlcicgfHwgY3VycmVudFZpZXcudmFsdWUgPT09ICdhY3Rpdml0eScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFibGVEYXRhLnZhbHVlID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzaG93VGFibGVMb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ2NvbXBsZXRlTmVzcycsIGNvbXBsZXRlTmVzcyk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgncmVnaXN0cmF0aW9uVHlwZScsIHJlZ2lzdHJhdGlvblR5cGUpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ2dyYXBoQW1vdW50JywgZ3JhcGhBbW91bnQpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ2dyYXBoVG90YWwnLCBncmFwaFRvdGFsKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdzaG93VGFibGVMb2FkZXInLCBzaG93VGFibGVMb2FkZXIpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ3Nob3dHcmFwaExvYWRlcicsIHNob3dHcmFwaExvYWRlcik7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnY3VycmVudFZpZXcnLCBjdXJyZW50Vmlldyk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGN1cnJlbnROYXY6IGN1cnJlbnROYXYsIHRhYmxlRGF0YTogdGFibGVEYXRhLCBEYXRlTGFiZWw6IERhdGVMYWJlbCwgc3RhcnREYXRlOiBzdGFydERhdGUsIGVuZERhdGU6IGVuZERhdGUsIGdyYXBoQW1vdW50OiBncmFwaEFtb3VudCwgZ3JhcGhUb3RhbDogZ3JhcGhUb3RhbCwgc2hvd1RhYmxlTG9hZGVyOiBzaG93VGFibGVMb2FkZXIsIHNob3dHcmFwaExvYWRlcjogc2hvd0dyYXBoTG9hZGVyLCBkYXRlVHlwZTogZGF0ZVR5cGUsIGRhdGVMYWJlbDogZGF0ZUxhYmVsLCBjdXJyZW50VmlldzogY3VycmVudFZpZXcsIGNvbXBsZXRlTmVzczogY29tcGxldGVOZXNzLCByZWdpc3RyYXRpb25UeXBlOiByZWdpc3RyYXRpb25UeXBlLCBoYW5kbGVDaGFuZ2VUYWJsZU5hdjogaGFuZGxlQ2hhbmdlVGFibGVOYXYsIHByb3BzOiBwcm9wcywgZG93bmxvYWRSZXBvcnQ6IGRvd25sb2FkUmVwb3J0LCBncmFwaERhdGFGb3JtYXR0ZXI6IGdyYXBoRGF0YUZvcm1hdHRlciwgZmV0Y2hHcmFwaERhdGE6IGZldGNoR3JhcGhEYXRhLCBzZXREYXRlUmFuZ2VEYXRlOiBzZXREYXRlUmFuZ2VEYXRlLCBmZXRjaFRhYmxlRGF0YTogZmV0Y2hUYWJsZURhdGEsIERhc2hib2FyZFN0YXRzU2VjdGlvbjogRGFzaGJvYXJkU3RhdHNTZWN0aW9uX3Z1ZV8xLmRlZmF1bHQsIERhc2hib2FyZExpc3RTZWN0aW9uOiBEYXNoYm9hcmRMaXN0U2VjdGlvbl92dWVfMS5kZWZhdWx0LCBEYXRlUmFuZ2VXaWRnZXQ6IERhdGVSYW5nZVdpZGdldF92dWVfMS5kZWZhdWx0LCBCdXR0b25Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgRGFzaGJvYXJkR3JhcGhfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vRGFzaGJvYXJkR3JhcGgudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG52YXIgUHJvZ3Jlc3NMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCIpKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIi4uLy4uL2NvbXBvc2FibGUvdXRpbHNcIik7XG52YXIgU2hpbW1lckxvYWRpbmdfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvU2hpbW1lckxvYWRpbmcudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdEYXNoYm9hcmRTdGF0c1NlY3Rpb24nLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGN1cnJlbnRWaWV3OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciB0b3RhbCA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBpbmFjdGl2ZVB1Ymxpc2hlciA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBwdWJsaXNoZXJXaXRob3V0QWN0aXZpdHkgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgbGFzdFJlZ2lzdGVyZWQgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgbGFzdFVwZGF0ZWRQdWJsaXNoZXIgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgbGFzdFVwZGF0ZWRBY3Rpdml0eSA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBsb2FkZXIgPSAoMCwgdnVlXzIucmVmKSh7IHN0YXR1czogZmFsc2UsIHRleHQ6ICcnIH0pO1xuICAgICAgICB2YXIgc2hvd1N0YXRzTG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZ3JhcGhUb3RhbCA9ICgwLCB2dWVfMi5pbmplY3QpKCdncmFwaFRvdGFsJyk7XG4gICAgICAgIHZhciBwdWJsaXNoZXJTdGF0cyA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIHNob3dQdWJsaXNoZXJTdGF0cyA9ICgwLCB2dWVfMi5yZWYpKHRydWUpO1xuICAgICAgICB2YXIgc2hvd0dyYXBoTG9hZGVyID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3Nob3dHcmFwaExvYWRlcicpO1xuICAgICAgICB2YXIgdXNlcklkID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZmV0Y2hTdGF0c0RhdGEoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBmb3JtYXREYXRlID0gZnVuY3Rpb24gKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZm9ybWF0KCdNTU1NIERELCBZWVlZJyk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwcm94eVVzZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUuc3RhdHVzID0gdHJ1ZTtcbiAgICAgICAgICAgIGxvYWRlci52YWx1ZS50ZXh0ID0gJ1Byb3h5IExvZ2luJztcbiAgICAgICAgICAgIHZhciBlbmRwb2ludCA9IFwiL3Byb3h5LW9yZ2FuaXNhdGlvbi9cIi5jb25jYXQodXNlcklkLnZhbHVlKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoZW5kcG9pbnQpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UoJy9hY3Rpdml0aWVzJyk7XG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlLnN0YXR1cyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHByb3BzLmN1cnJlbnRWaWV3OyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmZXRjaFN0YXRzRGF0YSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGZldGNoU3RhdHNEYXRhID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd1N0YXRzTG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoXCIvZGFzaGJvYXJkL1wiLmNvbmNhdChwcm9wcy5jdXJyZW50VmlldywgXCIvc3RhdHNcIikpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHRvdGFsLnZhbHVlID0gcmVzcG9uc2UuZGF0YS50b3RhbENvdW50O1xuICAgICAgICAgICAgICAgIGxhc3RSZWdpc3RlcmVkLnZhbHVlID0gcmVzcG9uc2UuZGF0YS5sYXN0UmVnaXN0ZXJlZFB1Ymxpc2hlcjtcbiAgICAgICAgICAgICAgICBsYXN0VXBkYXRlZFB1Ymxpc2hlci52YWx1ZSA9IHJlc3BvbnNlLmRhdGEubGFzdFVwZGF0ZWRQdWJsaXNoZXI7XG4gICAgICAgICAgICAgICAgbGFzdFVwZGF0ZWRBY3Rpdml0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEubGFzdFVwZGF0ZWRBY3Rpdml0eTtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHMuY3VycmVudFZpZXcgPT09ICdwdWJsaXNoZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIHVzZXJJZC52YWx1ZSA9IGxhc3RSZWdpc3RlcmVkLnZhbHVlLnVzZXJfaWQ7XG4gICAgICAgICAgICAgICAgICAgIGluYWN0aXZlUHVibGlzaGVyLnZhbHVlID0gcmVzcG9uc2UuZGF0YS5pbkFjdGl2ZVB1Ymxpc2hlcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLmN1cnJlbnRWaWV3ID09PSAnYWN0aXZpdHknKSB7XG4gICAgICAgICAgICAgICAgICAgIHVzZXJJZC52YWx1ZSA9IHJlc3BvbnNlLmRhdGEudXNlcklkO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoZXJXaXRob3V0QWN0aXZpdHkudmFsdWUgPSByZXNwb25zZS5kYXRhLnB1Ymxpc2hlcldpdGhvdXRBY3Rpdml0eTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLmN1cnJlbnRWaWV3ID09PSAndXNlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgc2hvd1B1Ymxpc2hlclN0YXRzLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVyU3RhdHMudmFsdWUgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbmFsbHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHNob3dTdGF0c0xvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgdG90YWw6IHRvdGFsLCBpbmFjdGl2ZVB1Ymxpc2hlcjogaW5hY3RpdmVQdWJsaXNoZXIsIHB1Ymxpc2hlcldpdGhvdXRBY3Rpdml0eTogcHVibGlzaGVyV2l0aG91dEFjdGl2aXR5LCBsYXN0UmVnaXN0ZXJlZDogbGFzdFJlZ2lzdGVyZWQsIGxhc3RVcGRhdGVkUHVibGlzaGVyOiBsYXN0VXBkYXRlZFB1Ymxpc2hlciwgbGFzdFVwZGF0ZWRBY3Rpdml0eTogbGFzdFVwZGF0ZWRBY3Rpdml0eSwgbG9hZGVyOiBsb2FkZXIsIHNob3dTdGF0c0xvYWRlcjogc2hvd1N0YXRzTG9hZGVyLCBncmFwaFRvdGFsOiBncmFwaFRvdGFsLCBwdWJsaXNoZXJTdGF0czogcHVibGlzaGVyU3RhdHMsIHNob3dQdWJsaXNoZXJTdGF0czogc2hvd1B1Ymxpc2hlclN0YXRzLCBzaG93R3JhcGhMb2FkZXI6IHNob3dHcmFwaExvYWRlciwgdXNlcklkOiB1c2VySWQsIGZvcm1hdERhdGU6IGZvcm1hdERhdGUsIHByb3h5VXNlcjogcHJveHlVc2VyLCBmZXRjaFN0YXRzRGF0YTogZmV0Y2hTdGF0c0RhdGEsIERhc2hib2FyZEdyYXBoOiBEYXNoYm9hcmRHcmFwaF92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIHRydW5jYXRlVGV4dDogdXRpbHNfMS50cnVuY2F0ZVRleHQsIFNoaW1tZXJMb2FkaW5nOiBTaGltbWVyTG9hZGluZ192dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbnZhciBQcm9ncmVzc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnQWN0aXZpdHlVcGxvYWQnLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGZpbGUgPSAoMCwgdnVlXzIucmVmKSgpLCBlcnJvciA9ICgwLCB2dWVfMi5yZWYpKCcnKSwgbG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpLCBsb2FkZXJUZXh0ID0gKDAsIHZ1ZV8yLnJlZikodHJhbnNsYXRlLmNvbW1vblRleHQoJ3BsZWFzZV93YWl0JykpO1xuICAgICAgICBmdW5jdGlvbiB1cGxvYWRGaWxlKCkge1xuICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGxvYWRlclRleHQudmFsdWUgPSB0cmFuc2xhdGUuY29tbW9uVGV4dCgndXBsb2FkaW5nX2Nzdl94bWxfZmlsZScpO1xuICAgICAgICAgICAgdmFyIGFjdGl2aXR5ID0gZmlsZS52YWx1ZS5maWxlcy5sZW5ndGggPyBmaWxlLnZhbHVlLmZpbGVzWzBdIDogJyc7XG4gICAgICAgICAgICB2YXIgY29uZmlnID0ge1xuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHZhciBkYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgICAgICBkYXRhLmFwcGVuZCgnYWN0aXZpdHknLCBhY3Rpdml0eSk7XG4gICAgICAgICAgICBlcnJvci52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy9pbXBvcnQnLCBkYXRhLCBjb25maWcpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBpZiAoZmlsZS52YWx1ZS5maWxlcy5sZW5ndGggJiYgKChfYSA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3VjY2VzcykpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvaW1wb3J0L2xpc3QnO1xuICAgICAgICAgICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yLnZhbHVlID0gT2JqZWN0LnZhbHVlcyhyZXMuZGF0YS5lcnJvcnMpLmpvaW4oJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGVycm9yLnZhbHVlID0gdHJhbnNsYXRlLmNvbW1vblRleHQoJ2Vycm9yX2hhc19vY2N1cnJlZF93aGlsZV91cGxvYWRpbmdfZmlsZScpO1xuICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZG93bmxvYWRFeGNlbCgpIHtcbiAgICAgICAgICAgICgwLCBheGlvc18xLmRlZmF1bHQpKHtcbiAgICAgICAgICAgICAgICB1cmw6ICdpbXBvcnQvZG93bmxvYWQvY3N2JyxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyxcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2UuZGF0YV0sIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2NzdicsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9ICdJbXBvcnRfQWN0aXZpdHlfQ1NWX1RlbXBsYXRlLmNzdic7XG4gICAgICAgICAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIGZpbGU6IGZpbGUsIGVycm9yOiBlcnJvciwgbG9hZGVyOiBsb2FkZXIsIGxvYWRlclRleHQ6IGxvYWRlclRleHQsIHVwbG9hZEZpbGU6IHVwbG9hZEZpbGUsIGRvd25sb2FkRXhjZWw6IGRvd25sb2FkRXhjZWwsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsIExvYWRlcjogUHJvZ3Jlc3NMb2FkZXJfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIFByb2dyZXNzTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIFhsc1VwbG9hZEluZGljYXRvcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9YbHNVcGxvYWRJbmRpY2F0b3IudnVlXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIFRhYmxlUGFnaW5hdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlXCIpKTtcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdBY3Rpdml0eVhsc1VwbG9hZCcsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgX2I7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgeGxzSW5kaWNhdG9yTW91bnRlZCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHhsc0ZhaWxlZE1lc3NhZ2UgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciB1cGxvYWRUeXBlID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIHNob3dEb3dubG9hZERyb3Bkb3duID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgYWN0aXZpdHlOYW1lID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgZmlsZUNvdW50ID0gKDAsIHZ1ZV8yLnJlZikoMCk7XG4gICAgICAgIHZhciB4bHNEb3dubG9hZFN0YXR1cyA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGRvd25sb2FkQ29tcGxldGVkID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcHVibGlzaGluZ0FjdGl2aXRpZXMgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgdG9hc3RNZXNzYWdlID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgdG9hc3RUeXBlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0Rvd25sb2FkQ29kZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGlzRW1wdHkgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB4bHNGYWlsZWQgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBjdXJyZW50QWN0aXZpdHkgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciB0b2FzdFZpc2liaWxpdHkgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB4bHNEYXRhID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0NhbmNlbE1vZGVsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgYWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgc2VsZWN0QWxsVmFsdWUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB1cGxvYWRDb21wbGV0ZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvdGFsQ291bnQgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgcHJvY2Vzc2VkQ291bnQgPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIGZpbGUgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgZXJyb3IgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBsb2FkZXIgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBsb2FkZXJUZXh0ID0gKDAsIHZ1ZV8yLnJlZikoJ1BsZWFzZSBXYWl0Jyk7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgc2VhcmNoVmFsdWUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBkaXJlY3Rpb24gPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBwcm9jZXNzaW5nID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIHNvcnRpbmdEaXJlY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkaXJlY3Rpb24udmFsdWUgPT09ICdhc2MnXG4gICAgICAgICAgICAgICAgPyAoZGlyZWN0aW9uLnZhbHVlID0gJ2Rlc2MnKVxuICAgICAgICAgICAgICAgIDogKGRpcmVjdGlvbi52YWx1ZSA9ICdhc2MnKTtcbiAgICAgICAgICAgIGZldGNoQWN0aXZpdGllcygxLCBkaXJlY3Rpb24udmFsdWUpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZG93bmxvYWRBcGlVcmwgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBkb3dubG9hZGluZyA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHBhID0gKDAsIGNvcmVfMS51c2VTdG9yYWdlKSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywge1xuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IChfYiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwdWJsaXNoaW5nQWN0aXZpdGllcycpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiB7fSxcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPCA2KSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0QWxsVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBtYXBBY3Rpdml0eU5hbWUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnYWN0aXZpdHknOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ0Jhc2ljIEFjdGl2aXR5IEVsZW1lbnRzJztcbiAgICAgICAgICAgICAgICBjYXNlICdwZXJpb2QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1BlcmlvZCc7XG4gICAgICAgICAgICAgICAgY2FzZSAnaW5kaWNhdG9yJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdJbmRpY2F0b3JzIGV4Y2VwdCBQZXJpb2QnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3Jlc3VsdCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnUmVzdWx0IGV4Y2VwdCBJbmRpY2F0b3JzIGFuZCBQZXJpb2QnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnN0YXJ0QnVsa1B1Ymxpc2g7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXMudmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICBwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocGEudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgYWN0aXZpdHlMZW5ndGggPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHJldHVybiAhKChfYSA9IHVwbG9hZFR5cGUgPT09IG51bGwgfHwgdXBsb2FkVHlwZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdXBsb2FkVHlwZS52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnN0YXJ0WGxzRG93bmxvYWQ7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY2hlY2tEb3dubG9hZFN0YXR1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuY2xvc2VYbHNNb2RlbDsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY2hlY2tEb3dubG9hZFN0YXR1cygpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNoZWNrRG93bmxvYWRTdGF0dXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkb3dubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIGNoZWNrRG93bmxvYWQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL2FjdGl2aXRpZXMvZG93bmxvYWQteGxzLXByb2dyZXNzLXN0YXR1cycpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICBmaWxlQ291bnQudmFsdWUgPSByZXMuZGF0YS5maWxlX2NvdW50O1xuICAgICAgICAgICAgICAgICAgICB4bHNEb3dubG9hZFN0YXR1cy52YWx1ZSA9IHJlcy5kYXRhLnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRBcGlVcmwudmFsdWUgPSByZXMuZGF0YS51cmw7XG4gICAgICAgICAgICAgICAgICAgIGRvd25sb2FkaW5nLnZhbHVlID0gISFyZXMuZGF0YS5zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIGlmICh4bHNEb3dubG9hZFN0YXR1cy52YWx1ZSA9PT0gJ2NvbXBsZXRlZCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0Rvd25sb2FkU3RhdHVzLnZhbHVlID09PSAnZmFpbGVkJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgIXJlcy5kYXRhLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0Rvd25sb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgMzAwMCk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBkb3dubG9hZENvZGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgYXBpVXJsLCBhY3Rpdml0aWVzXzEsIHJlcSwgYmxvYiwgbGluaztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwaVVybCA9ICcvYWN0aXZpdGllcy9kb3dubG9hZC1jb2Rlcy8/YWN0aXZpdGllcz1hbGwnO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0b3JlLnN0YXRlLnNlbGVjdGVkQWN0aXZpdGllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllc18xID0gc3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzLmpvaW4oJywnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGlVcmwgPSBcIi9hY3Rpdml0aWVzL2Rvd25sb2FkLWNvZGVzLz9hY3Rpdml0aWVzPVtcIi5jb25jYXQoYWN0aXZpdGllc18xLCBcIl1cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCAoMCwgYXhpb3NfMS5kZWZhdWx0KSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ2dldCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYXBpVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2IgPSBuZXcgQmxvYihbcmVxLmRhdGFdLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9ICdpZGVudGlmaWVycy54bHN4JztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3RvcmUuc3RhdGUuY2FuY2VsVXBsb2FkO1xuICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjYW5jZWxJbXBvcnQoKTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgaW1wb3J0QW55d2F5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIi9pbXBvcnQveGxzXCIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHhsc0RhdGEudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB1cGxvYWRGaWxlKCk7XG4gICAgICAgICAgICAgICAgdXBsb2FkVHlwZS52YWx1ZSA9IFtdO1xuICAgICAgICAgICAgICAgIHNob3dDYW5jZWxNb2RlbC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiAodG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2UpOyB9LCAxNTAwMCk7XG4gICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZWxlY3RBbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoIXNlbGVjdEFsbFZhbHVlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGlkcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgT2JqZWN0LnZhbHVlcyhhY3Rpdml0aWVzLmRhdGEpLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlkcy5wdXNoKGFjdGl2aXRpZXMuZGF0YVtpXVsnaWQnXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTZWxlY3RlZEFjdGl2aXRpZXMnLCBpZHMpO1xuICAgICAgICAgICAgICAgIHNlbGVjdEFsbFZhbHVlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTZWxlY3RlZEFjdGl2aXRpZXMnLCBbXSk7XG4gICAgICAgICAgICAgICAgc2VsZWN0QWxsVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgZnVuY3Rpb24gdXBsb2FkRmlsZSgpIHtcbiAgICAgICAgICAgIGlmICgheGxzRGF0YS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9ICdGZXRjaGluZyAueGxzIGZpbGUnO1xuICAgICAgICAgICAgICAgIHZhciBhY3Rpdml0eSA9IGZpbGUudmFsdWUuZmlsZXMubGVuZ3RoID8gZmlsZS52YWx1ZS5maWxlc1swXSA6ICcnO1xuICAgICAgICAgICAgICAgIHZhciB4bHNUeXBlID0gdXBsb2FkVHlwZTtcbiAgICAgICAgICAgICAgICB2YXIgY29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnY29udGVudC10eXBlJzogJ211bHRpcGFydC9mb3JtLWRhdGEnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCgnYWN0aXZpdHknLCBhY3Rpdml0eSk7XG4gICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoJ3hsc1R5cGUnLCB4bHNUeXBlLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBlcnJvci52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAucG9zdCgnL2ltcG9ydC94bHMnLCBkYXRhLCBjb25maWcpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZS52YWx1ZS5maWxlcy5sZW5ndGggJiYgKChfYSA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3VjY2VzcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrWGxzc3RhdHVzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvci52YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLmRhdGEuZXJyb3JzICYmIE9iamVjdC52YWx1ZXMocmVzLmRhdGEuZXJyb3JzKS5qb2luKCcgJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvci52YWx1ZSA9ICdFcnJvciBoYXMgb2NjdXJlZCB3aGlsZSB1cGxvYWRpbmcgZmlsZS4nO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZFR5cGUudmFsdWUgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgZmlsZS52YWx1ZS52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzaG93Q2FuY2VsTW9kZWwudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGZldGNoQWN0aXZpdGllcyhhY3RpdmVfcGFnZSwgZGlyZWN0aW9uKSB7XG4gICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09PSB2b2lkIDApIHsgZGlyZWN0aW9uID0gJyc7IH1cbiAgICAgICAgICAgIHZhciBhcGlVcmwgPSBcIi9hY3Rpdml0aWVzL3BhZ2UvXCIuY29uY2F0KGFjdGl2ZV9wYWdlKTtcbiAgICAgICAgICAgIHZhciBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdsaW1pdCcsICc2Jyk7XG4gICAgICAgICAgICBpZiAoZGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnb3JkZXJCeScsICd1cGRhdGVkX2F0Jyk7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnZGlyZWN0aW9uJywgZGlyZWN0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWFyY2hWYWx1ZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ3EnLCBzZWFyY2hWYWx1ZS52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KGFwaVVybCwgeyBwYXJhbXM6IHBhcmFtcyB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGFjdGl2aXRpZXMsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSAhcmVzcG9uc2UuZGF0YS5kYXRhLmxlbmd0aDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjYW5jZWxJbXBvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZGVsZXRlKFwiL2ltcG9ydC94bHNcIikudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgeGxzRGF0YS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHVwbG9hZFR5cGUudmFsdWUgPSBbXTtcbiAgICAgICAgICAgICAgICBmaWxlLnZhbHVlLnZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBzaG93Q2FuY2VsTW9kZWwudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKTsgfSwgMTUwMDApO1xuICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3RUeXBlLnZhbHVlID0gcmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcG9sbGluZ0Zvclhsc1N0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBjaGVja1N0YXR1cyA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygncG9sbGluZycsIHhsc0RhdGEpO1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9pbXBvcnQveGxzL3N0YXR1cycpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfaiwgX2ssIF9sLCBfbTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCgoX2EgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubWVzc2FnZSkgPT09ICdTdGFydGVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXNldFxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxDb3VudC52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWRDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZE1lc3NhZ2UudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsQ291bnQudmFsdWUgPSAoX2IgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudG90YWxfY291bnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWRDb3VudC52YWx1ZSA9IChfYyA9IHJlcy5kYXRhLmRhdGEpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5wcm9jZXNzZWRfY291bnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWQudmFsdWUgPSAhKChfZCA9IHJlcy5kYXRhLmRhdGEpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5zdWNjZXNzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZE1lc3NhZ2UudmFsdWUgPSAoX2UgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoKChfZiA9IHJlcy5kYXRhLmRhdGEpID09PSBudWxsIHx8IF9mID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZi5tZXNzYWdlKSA9PT0gJ1Byb2Nlc3NpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzaW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoISgoX2ggPSAoX2cgPSByZXMuZGF0YSkgPT09IG51bGwgfHwgX2cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9nLmRhdGEpID09PSBudWxsIHx8IF9oID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfaC5zdWNjZXNzKSB8fCAoKF9rID0gKF9qID0gcmVzLmRhdGEpID09PSBudWxsIHx8IF9qID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfai5kYXRhKSA9PT0gbnVsbCB8fCBfayA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2subWVzc2FnZSkgPT09ICdDb21wbGV0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tTdGF0dXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICgoKF9tID0gKF9sID0gcmVzLmRhdGEpID09PSBudWxsIHx8IF9sID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbC5kYXRhKSA9PT0gbnVsbCB8fCBfbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX20ubWVzc2FnZSkgPT09ICdDb21wbGV0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZENvbXBsZXRlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgMjUwMCk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjaGVja1hsc3N0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9pbXBvcnQveGxzL3Byb2dyZXNzX3N0YXR1cycpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2g7XG4gICAgICAgICAgICAgICAgdXBsb2FkQ29tcGxldGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBhY3Rpdml0eU5hbWUudmFsdWUgPSAoX2IgPSAoX2EgPSByZXMgPT09IG51bGwgfHwgcmVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXMuZGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnN0YXR1cykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRBY3Rpdml0eS52YWx1ZSA9IG1hcEFjdGl2aXR5TmFtZShhY3Rpdml0eU5hbWUudmFsdWUpO1xuICAgICAgICAgICAgICAgIHhsc0RhdGEudmFsdWUgPSBPYmplY3Qua2V5cyhyZXMuZGF0YS5zdGF0dXMpLmxlbmd0aCA+IDA7XG4gICAgICAgICAgICAgICAgaWYgKCgoX2QgPSAoX2MgPSByZXMgPT09IG51bGwgfHwgcmVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXMuZGF0YSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnN0YXR1cykgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLnN0YXR1cykgPT09ICdjb21wbGV0ZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZENvbXBsZXRlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKChfZiA9IChfZSA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Uuc3RhdHVzKSA9PT0gbnVsbCB8fCBfZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Yuc3RhdHVzKSA9PT0gJ2ZhaWxlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkTWVzc2FnZS52YWx1ZSA9IChfaCA9IChfZyA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2cuc3RhdHVzKSA9PT0gbnVsbCB8fCBfaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2gubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoT2JqZWN0LmtleXMocmVzLmRhdGEuc3RhdHVzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vcmVzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsQ291bnQudmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2luZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkQ291bnQudmFsdWUgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWRNZXNzYWdlLnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2xsaW5nRm9yWGxzU3RhdHVzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCd4bHNGYWlsZWRNZXNzYWdlJywgeGxzRmFpbGVkTWVzc2FnZSk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnYWN0aXZpdHlMZW5ndGgnLCBhY3Rpdml0eUxlbmd0aCk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnY29tcGxldGVkJywgdXBsb2FkQ29tcGxldGUpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ3Byb2Nlc3NpbmcnLCBwcm9jZXNzaW5nKTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5jb21wbGV0ZVhsc0Rvd25sb2FkOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGRvd25sb2FkQ29tcGxldGVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRYbHNEb3dubG9hZCcsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHhsc0luZGljYXRvck1vdW50ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZldGNoQWN0aXZpdGllcygxKTtcbiAgICAgICAgICAgIGNoZWNrWGxzc3RhdHVzKCk7XG4gICAgICAgICAgICBjaGVja0Rvd25sb2FkU3RhdHVzKCk7XG4gICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllcy52YWx1ZSA9XG4gICAgICAgICAgICAgICAgcGEudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMgJiYgT2JqZWN0LmtleXMocGEudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMpO1xuICAgICAgICAgICAgeGxzSW5kaWNhdG9yTW91bnRlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ3hsc0ZhaWxlZE1lc3NhZ2UnLCB4bHNGYWlsZWRNZXNzYWdlKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdhY3Rpdml0eUxlbmd0aCcsIGFjdGl2aXR5TGVuZ3RoKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCd4bHNJbmRpY2F0b3JNb3VudGVkJywgeGxzSW5kaWNhdG9yTW91bnRlZCk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnZG93bmxvYWRpbmcnLCBkb3dubG9hZGluZyk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgneGxzRG93bmxvYWRTdGF0dXMnLCB4bHNEb3dubG9hZFN0YXR1cyk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnZG93bmxvYWRBcGlVcmwnLCBkb3dubG9hZEFwaVVybCk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnYWN0aXZpdGllcycsIHB1Ymxpc2hpbmdBY3Rpdml0aWVzKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdmaWxlQ291bnQnLCBmaWxlQ291bnQpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB4bHNJbmRpY2F0b3JNb3VudGVkOiB4bHNJbmRpY2F0b3JNb3VudGVkLCB4bHNGYWlsZWRNZXNzYWdlOiB4bHNGYWlsZWRNZXNzYWdlLCB1cGxvYWRUeXBlOiB1cGxvYWRUeXBlLCBzaG93RG93bmxvYWREcm9wZG93bjogc2hvd0Rvd25sb2FkRHJvcGRvd24sIGFjdGl2aXR5TmFtZTogYWN0aXZpdHlOYW1lLCBmaWxlQ291bnQ6IGZpbGVDb3VudCwgeGxzRG93bmxvYWRTdGF0dXM6IHhsc0Rvd25sb2FkU3RhdHVzLCBkb3dubG9hZENvbXBsZXRlZDogZG93bmxvYWRDb21wbGV0ZWQsIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiBwdWJsaXNoaW5nQWN0aXZpdGllcywgdG9hc3RNZXNzYWdlOiB0b2FzdE1lc3NhZ2UsIHRvYXN0VHlwZTogdG9hc3RUeXBlLCBzaG93RG93bmxvYWRDb2RlOiBzaG93RG93bmxvYWRDb2RlLCBpc0VtcHR5OiBpc0VtcHR5LCB4bHNGYWlsZWQ6IHhsc0ZhaWxlZCwgY3VycmVudEFjdGl2aXR5OiBjdXJyZW50QWN0aXZpdHksIHRvYXN0VmlzaWJpbGl0eTogdG9hc3RWaXNpYmlsaXR5LCB4bHNEYXRhOiB4bHNEYXRhLCBzaG93Q2FuY2VsTW9kZWw6IHNob3dDYW5jZWxNb2RlbCwgYWN0aXZpdGllczogYWN0aXZpdGllcywgc2VsZWN0QWxsVmFsdWU6IHNlbGVjdEFsbFZhbHVlLCB1cGxvYWRDb21wbGV0ZTogdXBsb2FkQ29tcGxldGUsIHRvdGFsQ291bnQ6IHRvdGFsQ291bnQsIHByb2Nlc3NlZENvdW50OiBwcm9jZXNzZWRDb3VudCwgZmlsZTogZmlsZSwgZXJyb3I6IGVycm9yLCBsb2FkZXI6IGxvYWRlciwgbG9hZGVyVGV4dDogbG9hZGVyVGV4dCwgc3RvcmU6IHN0b3JlLCBzZWFyY2hWYWx1ZTogc2VhcmNoVmFsdWUsIGRpcmVjdGlvbjogZGlyZWN0aW9uLCBwcm9jZXNzaW5nOiBwcm9jZXNzaW5nLCBzb3J0aW5nRGlyZWN0aW9uOiBzb3J0aW5nRGlyZWN0aW9uLCBkb3dubG9hZEFwaVVybDogZG93bmxvYWRBcGlVcmwsIGRvd25sb2FkaW5nOiBkb3dubG9hZGluZywgcGE6IHBhLCBtYXBBY3Rpdml0eU5hbWU6IG1hcEFjdGl2aXR5TmFtZSwgYWN0aXZpdHlMZW5ndGg6IGFjdGl2aXR5TGVuZ3RoLCBjaGVja0Rvd25sb2FkU3RhdHVzOiBjaGVja0Rvd25sb2FkU3RhdHVzLCBkb3dubG9hZENvZGU6IGRvd25sb2FkQ29kZSwgaW1wb3J0QW55d2F5OiBpbXBvcnRBbnl3YXksIHNlbGVjdEFsbDogc2VsZWN0QWxsLCB1cGxvYWRGaWxlOiB1cGxvYWRGaWxlLCBmZXRjaEFjdGl2aXRpZXM6IGZldGNoQWN0aXZpdGllcywgY2FuY2VsSW1wb3J0OiBjYW5jZWxJbXBvcnQsIHBvbGxpbmdGb3JYbHNTdGF0dXM6IHBvbGxpbmdGb3JYbHNTdGF0dXMsIGNoZWNrWGxzc3RhdHVzOiBjaGVja1hsc3N0YXR1cywgQnRuQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnRfdnVlXzEuZGVmYXVsdCwgSG92ZXJUZXh0OiBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCwgTG9hZGVyOiBQcm9ncmVzc0xvYWRlcl92dWVfMS5kZWZhdWx0LCBYbHNVcGxvYWRJbmRpY2F0b3I6IFhsc1VwbG9hZEluZGljYXRvcl92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LCBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LCBQYWdpbmF0aW9uOiBUYWJsZVBhZ2luYXRpb25fdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgUHJvZ3Jlc3NMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCIpKTtcbnZhciBJbXBvcnRQbGFjZWhvbGRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9JbXBvcnRQbGFjZWhvbGRlci52dWVcIikpO1xudmFyIExpc3RFbGVtZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL0xpc3RFbGVtZW50LnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdJbXBvcnRMaXN0JyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBhY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7fSk7XG4gICAgICAgIHZhciBzZWxlY3RlZEFjdGl2aXRpZXMgPSAoMCwgdnVlXzIucmVhY3RpdmUpKFtdKTtcbiAgICAgICAgdmFyIHNlbGVjdGVkQ291bnQgPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIGFjdGl2aXRpZXNMZW5ndGggPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNlbGVjdEFsbCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGxvYWRlclRleHQgPSAoMCwgdnVlXzIucmVmKSh0cmFuc2xhdGUuY29tbW9uVGV4dCgncGxlYXNlX3dhaXQnKSk7XG4gICAgICAgIHZhciB0YWJsZVJvdyA9ICgwLCB2dWVfMi5yZWYpKHt9KTtcbiAgICAgICAgdmFyIHRhYmxlV2lkdGggPSAoMCwgdnVlXzIucmVmKSh7fSk7XG4gICAgICAgIHZhciB0aW1lcjtcbiAgICAgICAgdmFyIGdldERpbWVuc2lvbnMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IHJldHVybiBbNCAvKnlpZWxkKi8sICgwLCB2dWVfMi5uZXh0VGljaykoKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlV2lkdGgudmFsdWUgPSB0YWJsZVJvdyA9PT0gbnVsbCB8fCB0YWJsZVJvdyA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFibGVSb3cudmFsdWVbJzAnXS5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgICgwLCB2dWVfMi5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGdldERpbWVuc2lvbnMpO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGdldERpbWVuc2lvbnMpO1xuICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGxvYWRlclRleHQudmFsdWUgPSB0cmFuc2xhdGUuY29tbW9uVGV4dCgncGxlYXNlX3dhaXQnKTtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICB0aW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgLmdldCgnL2ltcG9ydC9jaGVja19zdGF0dXMnKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYWN0aXZpdGllcywgcmVzLmRhdGEuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2aXRpZXNMZW5ndGgudmFsdWUgPSByZXMuZGF0YS5kYXRhLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3RhdHVzID09PSAnZXJyb3InIHx8ICghcmVzLmRhdGEuZGF0YSAmJiBjb3VudCA+PSA0MCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZ2V0RGltZW5zaW9ucywgMjAwKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgMzAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICBmdW5jdGlvbiB1cGRhdGVTZWxlY3RlZEFjdGl2aXRpZXMoYWN0aXZpdHlfaWQpIHtcbiAgICAgICAgICAgIHZhciBpbmRleCA9IHNlbGVjdGVkQWN0aXZpdGllcy5pbmRleE9mKGFjdGl2aXR5X2lkKTtcbiAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhhY3Rpdml0aWVzW2FjdGl2aXR5X2lkXVsnZXJyb3JzJ10pLmluZGV4T2YoJ2NyaXRpY2FsJykgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRBY3Rpdml0aWVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ291bnQudmFsdWUgPSBzZWxlY3RlZENvdW50LnZhbHVlIC0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQWN0aXZpdGllcy5wdXNoKGFjdGl2aXR5X2lkKTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudC52YWx1ZSA9IHNlbGVjdGVkQ291bnQudmFsdWUgKyAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzZWxlY3RBbGxBY3Rpdml0aWVzKCkge1xuICAgICAgICAgICAgc2VsZWN0QWxsLnZhbHVlID0gIXNlbGVjdEFsbC52YWx1ZTtcbiAgICAgICAgICAgIHNlbGVjdGVkQ291bnQudmFsdWUgPSAwO1xuICAgICAgICAgICAgc2VsZWN0ZWRBY3Rpdml0aWVzLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhhY3Rpdml0aWVzKS5mb3JFYWNoKGZ1bmN0aW9uIChhY3Rpdml0eV9pZCkge1xuICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHNlbGVjdGVkQWN0aXZpdGllcy5pbmRleE9mKGFjdGl2aXR5X2lkKTtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoYWN0aXZpdGllc1thY3Rpdml0eV9pZF1bJ2Vycm9ycyddKS5pbmRleE9mKCdjcml0aWNhbCcpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0QWxsLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEFjdGl2aXRpZXMucHVzaChhY3Rpdml0eV9pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50LnZhbHVlID0gc2VsZWN0ZWRDb3VudC52YWx1ZSArIDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEFjdGl2aXRpZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKCFzZWxlY3RBbGwudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50LnZhbHVlID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBpbXBvcnRBY3Rpdml0aWVzKCkge1xuICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdpbXBvcnRpbmdfY3N2X3htbF9maWxlJyk7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy9pbXBvcnQvYWN0aXZpdHknLCB7XG4gICAgICAgICAgICAgICAgYWN0aXZpdGllczogc2VsZWN0ZWRBY3Rpdml0aWVzLFxuICAgICAgICAgICAgICAgIGZpbGV0eXBlOiAnY3N2JyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgYWN0aXZpdGllczogYWN0aXZpdGllcywgc2VsZWN0ZWRBY3Rpdml0aWVzOiBzZWxlY3RlZEFjdGl2aXRpZXMsIHNlbGVjdGVkQ291bnQ6IHNlbGVjdGVkQ291bnQsIGFjdGl2aXRpZXNMZW5ndGg6IGFjdGl2aXRpZXNMZW5ndGgsIGxvYWRlcjogbG9hZGVyLCBzZWxlY3RBbGw6IHNlbGVjdEFsbCwgbG9hZGVyVGV4dDogbG9hZGVyVGV4dCwgdGFibGVSb3c6IHRhYmxlUm93LCB0YWJsZVdpZHRoOiB0YWJsZVdpZHRoLCB0aW1lcjogdGltZXIsIGdldERpbWVuc2lvbnM6IGdldERpbWVuc2lvbnMsIHVwZGF0ZVNlbGVjdGVkQWN0aXZpdGllczogdXBkYXRlU2VsZWN0ZWRBY3Rpdml0aWVzLCBzZWxlY3RBbGxBY3Rpdml0aWVzOiBzZWxlY3RBbGxBY3Rpdml0aWVzLCBpbXBvcnRBY3Rpdml0aWVzOiBpbXBvcnRBY3Rpdml0aWVzLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIFBsYWNlaG9sZGVyOiBJbXBvcnRQbGFjZWhvbGRlcl92dWVfMS5kZWZhdWx0LCBMaXN0RWxlbWVudDogTGlzdEVsZW1lbnRfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgU2hpbW1lckxvYWRpbmdfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvU2hpbW1lckxvYWRpbmcudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdJbXBvcnRQbGFjZWhvbGRlcicsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgU2hpbW1lcjogU2hpbW1lckxvYWRpbmdfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdMaXN0RWxlbWVudCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYWN0aXZpdHk6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBpbmRleDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiB7IHR5cGU6IE51bWJlciwgcmVxdWlyZWQ6IGZhbHNlLCBkZWZhdWx0OiAwIH0sXG4gICAgICAgIHNlbGVjdGVkQWN0aXZpdGllczoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBlbWl0czogWydzZWxlY3RFbGVtZW50J10sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlLCBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGFjdGl2ZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dDcml0aWNhbCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dFcnJvciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dXYXJuaW5nID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgYWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoW10pO1xuICAgICAgICB2YXIgY3JpdGljYWxUb2dnbGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBlcnJvclRvZ2dsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHdhcm5pbmdUb2dnbGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIGZ1bmN0aW9uIHRvZ2dsZUVycm9yKCkge1xuICAgICAgICAgICAgYWN0aXZlLnZhbHVlID0gIWFjdGl2ZS52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc2VsZWN0RWxlbWVudCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgICAgICAgZW1pdCgnc2VsZWN0RWxlbWVudCcsIGluZGV4KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNvdW50RXJyb3JzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgIGZvciAodmFyIHR5cGUgaW4gcHJvcHMuYWN0aXZpdHlbJ2Vycm9ycyddKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaW5kZXggaW4gcHJvcHMuYWN0aXZpdHlbJ2Vycm9ycyddW3R5cGVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IE9iamVjdC5rZXlzKHByb3BzLmFjdGl2aXR5WydlcnJvcnMnXVt0eXBlXVtpbmRleF0pLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjcml0aWNhbEFjY29yZGlvblRvZ2dsZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBzaG93Q3JpdGljYWwudmFsdWUgPSAhc2hvd0NyaXRpY2FsLnZhbHVlO1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRUYXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jcml0aWNhbC1kcm9wZG93bi1jb250YWluZXInKTtcbiAgICAgICAgICAgIHZhciBlbEhlaWdodCA9IChfYSA9IHRhcmdldCA9PT0gbnVsbCB8fCB0YXJnZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhcmdldC5xdWVyeVNlbGVjdG9yKCcuY3JpdGljYWwtZHJvcGRvd24nKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIGlmIChjcml0aWNhbFRvZ2dsZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgY3JpdGljYWxUb2dnbGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBhdXRvO1wiO1xuICAgICAgICAgICAgICAgICAgICB9LCA2MDApO1xuICAgICAgICAgICAgICAgICAgICBjcml0aWNhbFRvZ2dsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgZXJyb3JBY2NvcmRpb25Ub2dnbGUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgc2hvd0Vycm9yLnZhbHVlID0gIXNob3dFcnJvci52YWx1ZTtcbiAgICAgICAgICAgIHZhciBjdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgdmFyIHRhcmdldCA9IGN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZXJyb3ItZHJvcGRvd24tY29udGFpbmVyJyk7XG4gICAgICAgICAgICB2YXIgZWxIZWlnaHQgPSAoX2EgPSB0YXJnZXQgPT09IG51bGwgfHwgdGFyZ2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YXJnZXQucXVlcnlTZWxlY3RvcignLmVycm9yLWRyb3Bkb3duJykpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbGllbnRIZWlnaHQ7XG4gICAgICAgICAgICBpZiAoZXJyb3JUb2dnbGUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yVG9nZ2xlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogYXV0bztcIjtcbiAgICAgICAgICAgICAgICAgICAgfSwgNjAwKTtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JUb2dnbGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGVycm9yTGVuZ3RoID0gZnVuY3Rpb24gKGN1cnJlbnRFcnJvcikge1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgIC8vIGlmIChPYmplY3Qua2V5cyhwcm9wcy5hY3Rpdml0eSkuaW5kZXhPZignZXJyb3JzJykgIT09IC0xKSB7XG4gICAgICAgICAgICBPYmplY3QudmFsdWVzKHByb3BzLmFjdGl2aXR5WydlcnJvcnMnXVtjdXJyZW50RXJyb3JdKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICBjb3VudCArPSBPYmplY3Qua2V5cyhpdGVtKS5sZW5ndGg7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHdhcm5pbmdBY2NvcmRpb25Ub2dnbGUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgc2hvd1dhcm5pbmcudmFsdWUgPSAhc2hvd1dhcm5pbmcudmFsdWU7XG4gICAgICAgICAgICB2YXIgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLndhcm5pbmctZHJvcGRvd24tY29udGFpbmVyJyk7XG4gICAgICAgICAgICB2YXIgZWxIZWlnaHQgPSAoX2EgPSB0YXJnZXQgPT09IG51bGwgfHwgdGFyZ2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YXJnZXQucXVlcnlTZWxlY3RvcignLndhcm5pbmctZHJvcGRvd24nKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIGlmICh3YXJuaW5nVG9nZ2xlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgICAgICB3YXJuaW5nVG9nZ2xlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogYXV0bztcIjtcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgd2FybmluZ1RvZ2dsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHByb3BzLnNlbGVjdGVkQWN0aXZpdGllczsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHNlbGVjdGVkRGF0YSA9IEpTT04ucGFyc2UocHJvcHMuc2VsZWN0ZWRBY3Rpdml0aWVzKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZERhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihhY3Rpdml0aWVzLCBzZWxlY3RlZERhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYWN0aXZpdGllcy5sZW5ndGggPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHByb3BzOiBwcm9wcywgZW1pdDogZW1pdCwgYWN0aXZlOiBhY3RpdmUsIHNob3dDcml0aWNhbDogc2hvd0NyaXRpY2FsLCBzaG93RXJyb3I6IHNob3dFcnJvciwgc2hvd1dhcm5pbmc6IHNob3dXYXJuaW5nLCBhY3Rpdml0aWVzOiBhY3Rpdml0aWVzLCBjcml0aWNhbFRvZ2dsZTogY3JpdGljYWxUb2dnbGUsIGVycm9yVG9nZ2xlOiBlcnJvclRvZ2dsZSwgd2FybmluZ1RvZ2dsZTogd2FybmluZ1RvZ2dsZSwgdG9nZ2xlRXJyb3I6IHRvZ2dsZUVycm9yLCBzZWxlY3RFbGVtZW50OiBzZWxlY3RFbGVtZW50LCBjb3VudEVycm9yczogY291bnRFcnJvcnMsIGNyaXRpY2FsQWNjb3JkaW9uVG9nZ2xlOiBjcml0aWNhbEFjY29yZGlvblRvZ2dsZSwgZXJyb3JBY2NvcmRpb25Ub2dnbGU6IGVycm9yQWNjb3JkaW9uVG9nZ2xlLCBlcnJvckxlbmd0aDogZXJyb3JMZW5ndGgsIHdhcm5pbmdBY2NvcmRpb25Ub2dnbGU6IHdhcm5pbmdBY2NvcmRpb25Ub2dnbGUgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBYbHNMaXN0RXJyb3JfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvWGxzTGlzdEVycm9yLnZ1ZVwiKSk7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgUHJvZ3Jlc3NMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCIpKTtcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnWGxzTGlzdCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgc3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gTnVtYmVyIHdpdGggYSBkZWZhdWx0IHZhbHVlXG4gICAgICAgIGltcG9ydERhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBnbG9iYWxFcnJvcjoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yQ291bnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHNlbGVjdEFsbCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNvcnRPcmRlciA9ICgwLCB2dWVfMi5yZWYpKCdhc2NlZGluZycpO1xuICAgICAgICB2YXIgdGFibGVSb3cgPSAoMCwgdnVlXzIucmVmKSh7fSk7XG4gICAgICAgIHZhciBzaG93Q3JpdGljYWxFcnJvck1vZGVsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0lkZW50aWZpZXJFcnJvck1vZGVsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgbG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpLCBsb2FkZXJUZXh0ID0gKDAsIHZ1ZV8yLnJlZikoJ0FkZGluZyBhY3Rpdml0aWVzJyk7XG4gICAgICAgIHZhciBzaG93Q3JpdGljYWxFcnJvck1lc3NhZ2UgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93R0xvYmFsRXJyb3IgPSAoMCwgdnVlXzIucmVmKSh0cnVlKTtcbiAgICAgICAgdmFyIHNlbGVjdGVkQ291bnQgPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIGFjdGl2aXRpZXNMZW5ndGggPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIHNlbGVjdGVkQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIHRhYmxlV2lkdGggPSAoMCwgdnVlXzIucmVmKSh7fSk7XG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciB0b2FzdFR5cGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2FzdFZpc2liaWxpdHkgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBnZXREaW1lbnNpb25zID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYikge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2IubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gWzQgLyp5aWVsZCovLCAoMCwgdnVlXzIubmV4dFRpY2spKCldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJsZVdpZHRoLnZhbHVlID0gKF9hID0gdGFibGVSb3cgPT09IG51bGwgfHwgdGFibGVSb3cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhYmxlUm93LnZhbHVlWycwJ10pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgIHZhciBzb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc29ydE9yZGVyLnZhbHVlID09PSAnYXNjZW5kaW5nJ1xuICAgICAgICAgICAgICAgID8gKHNvcnRPcmRlci52YWx1ZSA9ICdkZXNjZW5kaW5nJylcbiAgICAgICAgICAgICAgICA6IChzb3J0T3JkZXIudmFsdWUgPSAnYXNjZW5kaW5nJyk7XG4gICAgICAgICAgICB2YXIgc29ydGVkRGF0YSA9IHByb3BzLmltcG9ydERhdGE7XG4gICAgICAgICAgICBzd2l0Y2ggKHByb3BzLnN0YXR1c1sndGVtcGxhdGUnXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2FjdGl2aXR5JzpcbiAgICAgICAgICAgICAgICAgICAgc29ydGVkRGF0YS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5kYXRhLnRpdGxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPCBiLmRhdGEudGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogLTE7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdyZXN1bHQnOlxuICAgICAgICAgICAgICAgICAgICBzb3J0ZWREYXRhLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmRhdGEudGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLmRhdGEudGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IC0xO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAncGVyaW9kJzpcbiAgICAgICAgICAgICAgICAgICAgc29ydGVkRGF0YS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5kYXRhLnRpdGxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIDxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5kYXRhLnRpdGxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAtMTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2luZGljYXRvcic6XG4gICAgICAgICAgICAgICAgICAgIHNvcnRlZERhdGEuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuZGF0YS50aXRsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuZGF0YS50aXRsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogLTE7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZ2V0RGltZW5zaW9ucyk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBnZXREaW1lbnNpb25zKCk7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZ2V0RGltZW5zaW9ucyk7XG4gICAgICAgICAgICBjaGVja0NyaXRpY2FsRXJyb3IoKTtcbiAgICAgICAgICAgIGlmIChwcm9wcy5nbG9iYWxFcnJvcikge1xuICAgICAgICAgICAgICAgIHNob3dJZGVudGlmaWVyRXJyb3JNb2RlbC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhY3Rpdml0aWVzTGVuZ3RoLnZhbHVlID0gcHJvcHMuaW1wb3J0RGF0YS5sZW5ndGg7XG4gICAgICAgICAgICBsb2FkZXJUZXh0LnZhbHVlID0gXCJBZGRpbmcgXCIuY29uY2F0KHByb3BzLnN0YXR1cy50ZW1wbGF0ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2FuY2VsSW1wb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd0NyaXRpY2FsRXJyb3JNb2RlbC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgc2hvd0dMb2JhbEVycm9yLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZGVsZXRlKFwiL2ltcG9ydC94bHNcIikudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSk7IH0sIDE1MDAwKTtcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudmFsdWUgPSByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0VHlwZS52YWx1ZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9pbXBvcnQveGxzJztcbiAgICAgICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZG93bmxvYWRJZGVudGlmaWVyRXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGV4dDtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcHMuZ2xvYmFsRXJyb3IgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgdGV4dCA9IE9iamVjdC52YWx1ZXMocHJvcHMuZ2xvYmFsRXJyb3IpLmpvaW4oJ1xcbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGZpbGUgPSBuZXcgRmlsZShbJ1xcdWZlZmYnICsgdGV4dF0sICdpZGVudGlmaWVyLWVycm9ycy50eHQnLCB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQvcGxhaW46Y2hhcnNldD1VVEYtOCcsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcbiAgICAgICAgICAgIHZhciBhbmNob3JUYWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICBhbmNob3JUYWcuaHJlZiA9IHVybDtcbiAgICAgICAgICAgIGFuY2hvclRhZy5kb3dubG9hZCA9IGZpbGUubmFtZTtcbiAgICAgICAgICAgIGFuY2hvclRhZy5jbGljaygpO1xuICAgICAgICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNoZWNrQ3JpdGljYWxFcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHZhciBjcml0aWNhbEFycnkgPSBwcm9wcy5pbXBvcnREYXRhICYmXG4gICAgICAgICAgICAgICAgcHJvcHMuaW1wb3J0RGF0YS5tYXAoZnVuY3Rpb24gKGRhdGEsIGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvckxlbmd0aCgnY3JpdGljYWwnLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YXIgdG90YWxDcmlyaWNhbEVycm9yQ291bnQgPSAwO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjcml0aWNhbEFycnkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0b3RhbENyaXJpY2FsRXJyb3JDb3VudCArPSBjcml0aWNhbEFycnlbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodG90YWxDcmlyaWNhbEVycm9yQ291bnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgc2hvd0NyaXRpY2FsRXJyb3JNZXNzYWdlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0b3RhbENyaXJpY2FsRXJyb3JDb3VudCA+IDAgfHwgKChfYSA9IHByb3BzLmdsb2JhbEVycm9yKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSA+IDApIHtcbiAgICAgICAgICAgICAgICBzaG93Q3JpdGljYWxFcnJvck1vZGVsLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNvdW50RXJyb3JzID0gZnVuY3Rpb24gKGFjdGl2aXR5SW5kZXgpIHtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICBmb3IgKHZhciB0eXBlIGluIHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaW5kZXggaW4gcHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ11bdHlwZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gT2JqZWN0LmtleXMocHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ11bdHlwZV1baW5kZXhdKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgYWRkQWN0aXZpdGllcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIC5wb3N0KFwiL2ltcG9ydC94bHMvYWN0aXZpdHlcIiwgeyBhY3Rpdml0aWVzOiBzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUgfSlcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBlcnJvckxlbmd0aCA9IGZ1bmN0aW9uIChlcnJvclR5cGUsIGFjdGl2aXR5SW5kZXgpIHtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICBmb3IgKHZhciBpbmRleCBpbiBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXVtlcnJvclR5cGVdKSB7XG4gICAgICAgICAgICAgICAgY291bnQgKz0gT2JqZWN0LmtleXMocHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ11bZXJyb3JUeXBlXVtpbmRleF0pLmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgICAgfTtcbiAgICAgICAgZnVuY3Rpb24gc2VsZWN0QWxsQWN0aXZpdGllcygpIHtcbiAgICAgICAgICAgIHNlbGVjdEFsbC52YWx1ZSA9ICFzZWxlY3RBbGwudmFsdWU7XG4gICAgICAgICAgICBzZWxlY3RlZENvdW50LnZhbHVlID0gMDtcbiAgICAgICAgICAgIHNlbGVjdGVkQWN0aXZpdGllcy52YWx1ZS5sZW5ndGggPSAwO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMocHJvcHMuaW1wb3J0RGF0YSkuZm9yRWFjaChmdW5jdGlvbiAoYWN0aXZpdHlfaWQpIHtcbiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUuaW5kZXhPZihhY3Rpdml0eV9pZCk7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlfaWRdWydlcnJvcnMnXSkuaW5kZXhPZignY3JpdGljYWwnKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdEFsbC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlLnB1c2goYWN0aXZpdHlfaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudC52YWx1ZSA9IHNlbGVjdGVkQ291bnQudmFsdWUgKyAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICghc2VsZWN0QWxsLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgc2VsZWN0QWxsOiBzZWxlY3RBbGwsIHNvcnRPcmRlcjogc29ydE9yZGVyLCB0YWJsZVJvdzogdGFibGVSb3csIHNob3dDcml0aWNhbEVycm9yTW9kZWw6IHNob3dDcml0aWNhbEVycm9yTW9kZWwsIHNob3dJZGVudGlmaWVyRXJyb3JNb2RlbDogc2hvd0lkZW50aWZpZXJFcnJvck1vZGVsLCBsb2FkZXI6IGxvYWRlciwgbG9hZGVyVGV4dDogbG9hZGVyVGV4dCwgc2hvd0NyaXRpY2FsRXJyb3JNZXNzYWdlOiBzaG93Q3JpdGljYWxFcnJvck1lc3NhZ2UsIHNob3dHTG9iYWxFcnJvcjogc2hvd0dMb2JhbEVycm9yLCBzZWxlY3RlZENvdW50OiBzZWxlY3RlZENvdW50LCBhY3Rpdml0aWVzTGVuZ3RoOiBhY3Rpdml0aWVzTGVuZ3RoLCBzZWxlY3RlZEFjdGl2aXRpZXM6IHNlbGVjdGVkQWN0aXZpdGllcywgdGFibGVXaWR0aDogdGFibGVXaWR0aCwgdG9hc3RNZXNzYWdlOiB0b2FzdE1lc3NhZ2UsIHRvYXN0VHlwZTogdG9hc3RUeXBlLCB0b2FzdFZpc2liaWxpdHk6IHRvYXN0VmlzaWJpbGl0eSwgcHJvcHM6IHByb3BzLCBnZXREaW1lbnNpb25zOiBnZXREaW1lbnNpb25zLCBzb3J0OiBzb3J0LCBjYW5jZWxJbXBvcnQ6IGNhbmNlbEltcG9ydCwgZG93bmxvYWRJZGVudGlmaWVyRXJyb3I6IGRvd25sb2FkSWRlbnRpZmllckVycm9yLCBjaGVja0NyaXRpY2FsRXJyb3I6IGNoZWNrQ3JpdGljYWxFcnJvciwgY291bnRFcnJvcnM6IGNvdW50RXJyb3JzLCBhZGRBY3Rpdml0aWVzOiBhZGRBY3Rpdml0aWVzLCBlcnJvckxlbmd0aDogZXJyb3JMZW5ndGgsIHNlbGVjdEFsbEFjdGl2aXRpZXM6IHNlbGVjdEFsbEFjdGl2aXRpZXMsIFhsc0xpc3RFcnJvcjogWGxzTGlzdEVycm9yX3Z1ZV8xLmRlZmF1bHQsIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCwgTG9hZGVyOiBQcm9ncmVzc0xvYWRlcl92dWVfMS5kZWZhdWx0LCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgUmFkaWFsUHJvZ3Jlc3NCYXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvUmFkaWFsUHJvZ3Jlc3NCYXIudnVlXCIpKTtcbnZhciBPcmdhbmlzYXRpb25FbGVtZW50c192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9PcmdhbmlzYXRpb25FbGVtZW50cy52dWVcIikpO1xudmFyIE9yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIE9yZ2FuaXphdGlvblB1Ymxpc2hVbnB1Ymxpc2hCdXR0b25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbi52dWVcIikpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgY29yZV8yID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBFcnJvclBvcFVwX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0Vycm9yUG9wVXAudnVlXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ09yZ2FuaXNhdGlvbkRhdGEnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgSG92ZXJUZXh0OiBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUmFkaWFsUHJvZ3Jlc3NCYXI6IFJhZGlhbFByb2dyZXNzQmFyX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIE9yZ2FuaXNhdGlvbkVsZW1lbnRzOiBPcmdhbmlzYXRpb25FbGVtZW50c192dWVfMS5kZWZhdWx0LFxuICAgICAgICBPcmdhbmlzYXRpb25FbGVtZW50c0RldGFpbDogT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWxfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQdWJsaXNoVW5wdWJsaXNoOiBPcmdhbml6YXRpb25QdWJsaXNoVW5wdWJsaXNoQnV0dG9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEVycm9yUG9wVXA6IEVycm9yUG9wVXBfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZ3JvdXBzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgb3JnYW5pemF0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcHJvZ3Jlc3M6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbWFuZGF0b3J5Q29tcGxldGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXR1czoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHVzZXJSb2xlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHNob3dTaWRlYmFyID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2NyZWVuV2lkdGggPSAoMCwgdnVlXzEucmVmKSgwKTtcbiAgICAgICAgdmFyIF9hID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIHB1Ymxpc2hWYWx1ZSA9IF9hWzBdLCBwdWJsaXNoVG9nZ2xlID0gX2FbMV07XG4gICAgICAgIHZhciBfYiA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCB1bnB1Ymxpc2hWYWx1ZSA9IF9iWzBdLCB1bnB1Ymxpc2hUb2dnbGUgPSBfYlsxXTtcbiAgICAgICAgdmFyIF9jID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIGRlbGV0ZVZhbHVlID0gX2NbMF0sIGRlbGV0ZVRvZ2dsZSA9IF9jWzFdO1xuICAgICAgICB2YXIgX2QgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgZG93bmxvYWRWYWx1ZSA9IF9kWzBdLCBkb3dubG9hZFRvZ2dsZSA9IF9kWzFdO1xuICAgICAgICB2YXIgcG9zaXRpb25ZID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciB0b2dnbGVTaWRlYmFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd1NpZGViYXIudmFsdWUgPSAhc2hvd1NpZGViYXIudmFsdWU7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMS5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2FsY1dpZHRoKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgICAgICBpZiAocHJvcHMudG9hc3QubWVzc2FnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHByb3BzLnRvYXN0LnR5cGUgPT09ICdzdWNjZXNzJyA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBwcm9wcy50b2FzdC5tZXNzYWdlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNhbGNXaWR0aCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgc2NyZWVuV2lkdGgudmFsdWUgPSBldmVudC50YXJnZXQuaW5uZXJXaWR0aDtcbiAgICAgICAgICAgIGlmIChzY3JlZW5XaWR0aC52YWx1ZSA+IDEwMjQpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzaG93U2lkZWJhci52YWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgaGFuZGxlU2Nyb2xsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcG9zaXRpb25ZLnZhbHVlID0gd2luZG93LnNjcm9sbFk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBpc3RvcFZpc2libGUgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBwb3NpdGlvblkudmFsdWUgPT09IDA7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaWdub3JlVXBkYXRlcyA9ICgwLCBjb3JlXzIud2F0Y2hJZ25vcmFibGUpKHRvYXN0RGF0YSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9LCB7XG4gICAgICAgICAgICBmbHVzaDogJ3N5bmMnLFxuICAgICAgICB9KS5pZ25vcmVVcGRhdGVzO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNob3dTaWRlYmFyLnZhbHVlOyB9LCBmdW5jdGlvbiAoc2lkZWJhcikge1xuICAgICAgICAgICAgaWYgKHNpZGViYXIpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRvYXN0RGF0YS52aXNpYmlsaXR5OyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlnbm9yZVRvYXN0VXBkYXRlKCk7XG4gICAgICAgICAgICB9LCAxMDAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaWdub3JlVG9hc3RVcGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZ25vcmVVcGRhdGVzKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9ICcnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHcm91cGluZyBhbGwgdGhlIGRhdGEncyBmb3Igc2Nyb2xsIGZ1bmN0aW9uXG4gICAgICAgICAqXG4gICAgICAgICAqIHRoaXMgZGF0YSBpcyBjcmVhdGVkIHVzaW5nIHByb3BzLmdyb3VwcyBhbmQgcHJvcHMuYWN0aXZpdHlcbiAgICAgICAgICovXG4gICAgICAgIHZhciBfZSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKSwgZ3JvdXBzID0gX2UuZ3JvdXBzLCBvcmdhbml6YXRpb24gPSBfZS5vcmdhbml6YXRpb24sIGVsZW1lbnRzID0gX2UuZWxlbWVudHMsIGdyb3VwZWREYXRhID0gZ3JvdXBzLnZhbHVlLCBvcmdhbml6YXRpb25Qcm9wcyA9IG9yZ2FuaXphdGlvbi52YWx1ZSwgb3JnYW5pemF0aW9uRGF0YSA9IGdyb3Vwcy52YWx1ZSwgZWxlbWVudFByb3BzID0gZWxlbWVudHMudmFsdWU7XG4gICAgICAgIC8vIGdlbmVyYXRpbmcgYXZhaWxhYmxlIGVsZW1lbnRzXG4gICAgICAgIE9iamVjdC5rZXlzKG9yZ2FuaXphdGlvbkRhdGEpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICB2YXIgZmxhZyA9IGZhbHNlO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMob3JnYW5pemF0aW9uRGF0YVtrZXldWydlbGVtZW50cyddKS5tYXAoZnVuY3Rpb24gKGspIHtcbiAgICAgICAgICAgICAgICBpZiAob3JnYW5pemF0aW9uUHJvcHNba10gfHwgdHlwZW9mIG9yZ2FuaXphdGlvblByb3BzW2tdID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25EYXRhW2tleV1bJ2VsZW1lbnRzJ11ba11bJ2NvbnRlbnQnXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25Qcm9wc1trXTtcbiAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRQcm9wc1trXVsnaGFzX2RhdGEnXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgb3JnYW5pemF0aW9uRGF0YVtrZXldW2tdO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50UHJvcHNba11bJ2hhc19kYXRhJ10gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxlbWVudFByb3BzW2tdWydjb3JlJ10gPVxuICAgICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25EYXRhW2tleV1bJ2VsZW1lbnRzJ11ba11bJ21hbmRhdG9yeSddO1xuICAgICAgICAgICAgICAgIGVsZW1lbnRQcm9wc1trXVsnY29tcGxldGVkJ10gPVxuICAgICAgICAgICAgICAgICAgICBrID09PSAnb3JnYW5pc2F0aW9uX2lkZW50aWZpZXInXG4gICAgICAgICAgICAgICAgICAgICAgICA/IG9yZ2FuaXphdGlvblByb3BzWydlbGVtZW50X3N0YXR1cyddWydpZGVudGlmaWVyJ11cbiAgICAgICAgICAgICAgICAgICAgICAgIDogb3JnYW5pemF0aW9uUHJvcHNbJ2VsZW1lbnRfc3RhdHVzJ11ba107XG4gICAgICAgICAgICAgICAgZWxlbWVudFByb3BzW2tdWydub3RfY29tcGxldGVkJ10gPSAhZWxlbWVudFByb3BzW2tdWydjb21wbGV0ZWQnXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGZsYWcgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG9yZ2FuaXphdGlvbkRhdGFba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGdlbmVyYXRpbmcgYXZhaWxhYmxlIGNhdGVnb3JpZXMgb2YgZWxlbWVudHNcbiAgICAgICAgT2JqZWN0LmtleXMoZ3JvdXBlZERhdGEpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9yZ2FuaXphdGlvbkRhdGEsIGtleSkpIHtcbiAgICAgICAgICAgICAgICBncm91cGVkRGF0YVtrZXldWydzdGF0dXMnXSA9ICdlbmFibGVkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGdyb3VwZWREYXRhW2tleV1bJ3N0YXR1cyddID0gJ2Rpc2FibGVkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwdWJsaXNoTWVzc2FnZSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwdWJsaXNoU3RhdHVzID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBpc19wdWJsaXNoZWQ6IG9yZ2FuaXphdGlvblByb3BzLmlzX3B1Ymxpc2hlZCxcbiAgICAgICAgICAgIHN0YXR1czogb3JnYW5pemF0aW9uUHJvcHMuc3RhdHVzLFxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdwdWJsaXNoTWVzc2FnZScsIHB1Ymxpc2hNZXNzYWdlKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdtYW5kYXRvcnlDb21wbGV0ZWQnLCBwcm9wcy5tYW5kYXRvcnlDb21wbGV0ZWQpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3RvYXN0RGF0YScsIHRvYXN0RGF0YSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgncHVibGlzaFN0YXR1cycsIHB1Ymxpc2hTdGF0dXMpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ2Vycm9yRGF0YScsIGVycm9yRGF0YSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgndXNlclJvbGUnLCBwcm9wcy51c2VyUm9sZSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBncm91cGVkRGF0YTogZ3JvdXBlZERhdGEsXG4gICAgICAgICAgICBvcmdhbml6YXRpb25EYXRhOiBvcmdhbml6YXRpb25EYXRhLFxuICAgICAgICAgICAgcHVibGlzaFZhbHVlOiBwdWJsaXNoVmFsdWUsXG4gICAgICAgICAgICBwdWJsaXNoVG9nZ2xlOiBwdWJsaXNoVG9nZ2xlLFxuICAgICAgICAgICAgdW5wdWJsaXNoVmFsdWU6IHVucHVibGlzaFZhbHVlLFxuICAgICAgICAgICAgdW5wdWJsaXNoVG9nZ2xlOiB1bnB1Ymxpc2hUb2dnbGUsXG4gICAgICAgICAgICBkZWxldGVWYWx1ZTogZGVsZXRlVmFsdWUsXG4gICAgICAgICAgICBkZWxldGVUb2dnbGU6IGRlbGV0ZVRvZ2dsZSxcbiAgICAgICAgICAgIGRvd25sb2FkVmFsdWU6IGRvd25sb2FkVmFsdWUsXG4gICAgICAgICAgICBkb3dubG9hZFRvZ2dsZTogZG93bmxvYWRUb2dnbGUsXG4gICAgICAgICAgICBlbGVtZW50UHJvcHM6IGVsZW1lbnRQcm9wcyxcbiAgICAgICAgICAgIHRvYXN0RGF0YTogdG9hc3REYXRhLFxuICAgICAgICAgICAgcHVibGlzaFN0YXR1czogcHVibGlzaFN0YXR1cyxcbiAgICAgICAgICAgIGVycm9yRGF0YTogZXJyb3JEYXRhLFxuICAgICAgICAgICAgdG9nZ2xlU2lkZWJhcjogdG9nZ2xlU2lkZWJhcixcbiAgICAgICAgICAgIHNob3dTaWRlYmFyOiBzaG93U2lkZWJhcixcbiAgICAgICAgICAgIGlzdG9wVmlzaWJsZTogaXN0b3BWaXNpYmxlLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIGNvcmVFbGVtZW50c18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvY29yZUVsZW1lbnRzXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdPcmdhbmlzYXRpb25FbGVtZW50cycsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXR1czoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlZDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG1hbmRhdG9yeToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBfYiA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBzZWFyY2hCdG5WYWx1ZSA9IF9iWzBdLCBzZWFyY2hCdG5Ub2dnbGUgPSBfYlsxXTtcbiAgICAgICAgdmFyIGRyb3Bkb3duID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIGRyb3Bkb3duQnRuID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIHVzZXJSb2xlID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3VzZXJSb2xlJyk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZWFyY2ggZnVuY3Rpb25hbGl0eVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGVsZW1lbnRzID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBzZWFyY2g6ICcnLFxuICAgICAgICAgICAgc3RhdHVzOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlbGVtZW50SWNvbnMgPSB7XG4gICAgICAgICAgICBjb21wbGV0ZWQ6ICdkb3VibGUtdGljaycsXG4gICAgICAgICAgICBub3RfY29tcGxldGVkOiAncmVkLWNyb3NzJyxcbiAgICAgICAgICAgIGNvcmU6ICdjb3JlJyxcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGFzQXJyYXlEYXRhID0gT2JqZWN0LmVudHJpZXMocHJvcHMuZGF0YSk7XG4gICAgICAgIHZhciBmaWx0ZXJlZEVsZW1lbnRzID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZmlsdGVyZWQgPSBhc0FycmF5RGF0YS5maWx0ZXIoZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgdmFyIGtleSA9IF9hWzBdLCB2YWx1ZSA9IF9hWzFdO1xuICAgICAgICAgICAgICAgIGlmICghZWxlbWVudHMuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIC5lbGVtZW50KGtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoZWxlbWVudHMuc2VhcmNoLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXy9nLCAnICcpLnJlcGxhY2UoLy0vZywgJ18nKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVbZWxlbWVudHMuc3RhdHVzXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKGVsZW1lbnRzLnNlYXJjaC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL18vZywgJyAnKS5yZXBsYWNlKC8tL2csICdfJykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YXIganVzdFN0cmluZ3MgPSBPYmplY3QuZnJvbUVudHJpZXMoZmlsdGVyZWQpO1xuICAgICAgICAgICAgcmV0dXJuIGp1c3RTdHJpbmdzO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWRyb3Bkb3duQnRuLnZhbHVlLmNvbnRhaW5zKGUudGFyZ2V0KSAmJlxuICAgICAgICAgICAgICAgICAgICAhZHJvcGRvd24udmFsdWUuY29udGFpbnMoZS50YXJnZXQpICYmXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEJ0blZhbHVlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEJ0blRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGRyb3Bkb3duRmlsdGVyID0gZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgIGVsZW1lbnRzLnN0YXR1cyA9IHM7XG4gICAgICAgICAgICBzZWFyY2hCdG5Ub2dnbGUoKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHByb3BzOiBwcm9wcywgc2VhcmNoQnRuVmFsdWU6IHNlYXJjaEJ0blZhbHVlLCBzZWFyY2hCdG5Ub2dnbGU6IHNlYXJjaEJ0blRvZ2dsZSwgZHJvcGRvd246IGRyb3Bkb3duLCBkcm9wZG93bkJ0bjogZHJvcGRvd25CdG4sIHVzZXJSb2xlOiB1c2VyUm9sZSwgZWxlbWVudHM6IGVsZW1lbnRzLCBlbGVtZW50SWNvbnM6IGVsZW1lbnRJY29ucywgYXNBcnJheURhdGE6IGFzQXJyYXlEYXRhLCBmaWx0ZXJlZEVsZW1lbnRzOiBmaWx0ZXJlZEVsZW1lbnRzLCBkcm9wZG93bkZpbHRlcjogZHJvcGRvd25GaWx0ZXIsIG9yZ01hbmRhdG9yeUVsZW1lbnRzOiBjb3JlRWxlbWVudHNfMS5vcmdNYW5kYXRvcnlFbGVtZW50cyB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbnZhciBjb3JlRWxlbWVudHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL2NvcmVFbGVtZW50c1wiKTtcbnZhciBJbmRleF8xID0gcmVxdWlyZShcIk9yZ2FuaXNhdGlvbi9lbGVtZW50cy9JbmRleFwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWwnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0aXRsZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QgfHwgQXJyYXksXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbGFuZ3VhZ2U6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICdlbicsXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0dXM6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHVzZXJSb2xlID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3VzZXJSb2xlJyk7XG4gICAgICAgIHZhciBsYXlvdXQgPSAnYmFzaXMtNi8xMic7XG4gICAgICAgIGlmIChwcm9wcy53aWR0aCA9PT0gJ2Z1bGwnKSB7XG4gICAgICAgICAgICBsYXlvdXQgPSAnYmFzaXMtZnVsbCc7XG4gICAgICAgIH1cbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdvcmdUeXBlcycsIHByb3BzLnR5cGVzKTtcbiAgICAgICAgdmFyIHJlcGxhY2VVbmRlcnNjb3JlID0gZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgdmFyIHJlZ2V4ID0gL18vZztcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBzdHJpbmcucmVwbGFjZShyZWdleCwgJy0nKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCBwcm9wczogcHJvcHMsIHVzZXJSb2xlOiB1c2VyUm9sZSwgbGF5b3V0OiBsYXlvdXQsIHJlcGxhY2VVbmRlcnNjb3JlOiByZXBsYWNlVW5kZXJzY29yZSwgSG92ZXJUZXh0OiBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCwgb3JnTWFuZGF0b3J5RWxlbWVudHM6IGNvcmVFbGVtZW50c18xLm9yZ01hbmRhdG9yeUVsZW1lbnRzLCBSZXBvcnRpbmdPcmdhbmlzYXRpb246IEluZGV4XzEuUmVwb3J0aW5nT3JnYW5pc2F0aW9uLCBUb3RhbEJ1ZGdldDogSW5kZXhfMS5Ub3RhbEJ1ZGdldCwgUmVwb3J0aW5nT3JnQnVkZ2V0OiBJbmRleF8xLlJlcG9ydGluZ09yZ0J1ZGdldCwgUmVwb3J0aW5nUmVnaW9uQnVkZ2V0OiBJbmRleF8xLlJlcG9ydGluZ1JlZ2lvbkJ1ZGdldCwgUmVjaXBpZW50Q291bnRyeUJ1ZGdldDogSW5kZXhfMS5SZWNpcGllbnRDb3VudHJ5QnVkZ2V0LCBUb3RhbEV4cGVuZGl0dXJlOiBJbmRleF8xLlRvdGFsRXhwZW5kaXR1cmUsIERvY3VtZW50TGluazogSW5kZXhfMS5Eb2N1bWVudExpbmsgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRG9jdW1lbnRMaW5rJyxcbiAgICBwcm9wczoge1xuICAgICAgICBjb250ZW50OiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ29yZ1R5cGVzJyk7XG4gICAgICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUgPyAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZm9ybWF0KCdMTCcpIDogdHJhbnNsYXRlLm1pc3NpbmcoJ2RhdGUnKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgdHlwZXM6IHR5cGVzLCBmb3JtYXREYXRlOiBmb3JtYXREYXRlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1JlY2lwaWVudENvdW50cnlCdWRnZXQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvbnRlbnQ6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgnb3JnVHlwZXMnKTtcbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZSA/ICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mb3JtYXQoJ0xMJykgOiB0cmFuc2xhdGUubWlzc2luZygnZGF0ZScpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCB0eXBlczogdHlwZXMsIGZvcm1hdERhdGU6IGZvcm1hdERhdGUgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUmVwb3J0aW5nT3JnQnVkZ2V0JyxcbiAgICBwcm9wczoge1xuICAgICAgICBjb250ZW50OiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ29yZ1R5cGVzJyk7XG4gICAgICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUgPyAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZm9ybWF0KCdMTCcpIDogdHJhbnNsYXRlLm1pc3NpbmcoJ2RhdGUnKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgdHlwZXM6IHR5cGVzLCBmb3JtYXREYXRlOiBmb3JtYXREYXRlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1JlcG9ydGluZ09yZ2FuaXNhdGlvbicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY29udGVudDogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMi5pbmplY3QpKCdvcmdUeXBlcycpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgdHlwZXM6IHR5cGVzIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1JlcG9ydGluZ1JlZ2lvbkJ1ZGdldCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY29udGVudDogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMi5pbmplY3QpKCdvcmdUeXBlcycpO1xuICAgICAgICBmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlID8gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTEwnKSA6IHRyYW5zbGF0ZS5taXNzaW5nKCdkYXRlJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHR5cGVzOiB0eXBlcywgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdUb3RhbEJ1ZGdldCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY29udGVudDogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMi5pbmplY3QpKCdvcmdUeXBlcycpO1xuICAgICAgICBmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlID8gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTEwnKSA6IHRyYW5zbGF0ZS5taXNzaW5nKCdkYXRlJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHR5cGVzOiB0eXBlcywgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdUb3RhbEV4cGVuZGl0dXJlJyxcbiAgICBwcm9wczoge1xuICAgICAgICBjb250ZW50OiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ29yZ1R5cGVzJyk7XG4gICAgICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUgPyAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZm9ybWF0KCdMTCcpIDogdHJhbnNsYXRlLm1pc3NpbmcoJ2RhdGUnKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgdHlwZXM6IHR5cGVzLCBmb3JtYXREYXRlOiBmb3JtYXREYXRlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUGFzc3dvcmRSZWNvdmVyeScsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgZm9ybURhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGVtYWlsOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlbWFpbEVycm9yID0gKDAsIHZ1ZV8xLnJlZikoJycpO1xuICAgICAgICB2YXIgbG9hZGVyVmlzaWJpbGl0eSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgZnVuY3Rpb24gcmVzZXQoKSB7XG4gICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvcGFzc3dvcmQvZW1haWwnLCBmb3JtRGF0YSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXF1ZXN0LnJlc3BvbnNlVVJMLmluY2x1ZGVzKCdhY3Rpdml0aWVzJykpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gIXJlc3BvbnNlLnN1Y2Nlc3MgfHwgJ2Vycm9ycycgaW4gcmVzcG9uc2UgPyByZXNwb25zZS5lcnJvcnMgOiBbXTtcbiAgICAgICAgICAgICAgICBlbWFpbEVycm9yLnZhbHVlID0gZXJyb3JzLmVtYWlsID8gZXJyb3JzLmVtYWlsWzBdIDogJyc7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL3Bhc3N3b3JkL2NvbmZpcm0nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gZXJyb3IucmVzcG9uc2UuZGF0YS5lcnJvcnM7XG4gICAgICAgICAgICAgICAgZW1haWxFcnJvci52YWx1ZSA9IGVycm9ycy5lbWFpbCA/IGVycm9ycy5lbWFpbFswXSA6ICcnO1xuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmb3JtRGF0YTogZm9ybURhdGEsXG4gICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5OiBsb2FkZXJWaXNpYmlsaXR5LFxuICAgICAgICAgICAgZW1haWxFcnJvcjogZW1haWxFcnJvcixcbiAgICAgICAgICAgIHJlc2V0OiByZXNldCxcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogdHJhbnNsYXRlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIGVuY3J5cHRpb25fMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9lbmNyeXB0aW9uXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZW1haWw6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2tlbjoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGxvYWRlclZpc2liaWxpdHkgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBmb3JtRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgZW1haWw6IHByb3BzLmVtYWlsLFxuICAgICAgICAgICAgdG9rZW46IHByb3BzLnRva2VuLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGVtYWlsOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICBmdW5jdGlvbiByZXNldCgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBmb3JtID0ge1xuICAgICAgICAgICAgICAgIGVtYWlsOiBmb3JtRGF0YS5lbWFpbCxcbiAgICAgICAgICAgICAgICB0b2tlbjogcHJvcHMudG9rZW4sXG4gICAgICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbiwgKF9hID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmQsIChfYiA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJycpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvcmVzZXQnLCBmb3JtKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlcXVlc3QucmVzcG9uc2VVUkwuaW5jbHVkZXMoJ2FjdGl2aXRpZXMnKSkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHZhciBlcnJvcnMgPSAnZXJyb3JzJyBpbiByZXNwb25zZSA/IHJlc3BvbnNlLmVycm9ycyA6IFtdO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wYXNzd29yZCA9IGVycm9ycy5wYXNzd29yZCA/IGVycm9ycy5wYXNzd29yZFswXSA6ICcnO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5lbWFpbCA9IGVycm9ycy5lbWFpbCA/IGVycm9ycy5lbWFpbFswXSA6ICcnO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24gPSBlcnJvcnMucGFzc3dvcmRfY29uZmlybWF0aW9uXG4gICAgICAgICAgICAgICAgICAgID8gZXJyb3JzLnBhc3N3b3JkX2NvbmZpcm1hdGlvblswXVxuICAgICAgICAgICAgICAgICAgICA6ICcnO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9IGVycm9yLnJlc3BvbnNlLmRhdGEuZXJyb3JzO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wYXNzd29yZCA9IGVycm9ycy5wYXNzd29yZCA/IGVycm9ycy5wYXNzd29yZFswXSA6ICcnO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5lbWFpbCA9IGVycm9ycy5lbWFpbCA/IGVycm9ycy5lbWFpbFswXSA6ICcnO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24gPSBlcnJvcnMucGFzc3dvcmRfY29uZmlybWF0aW9uXG4gICAgICAgICAgICAgICAgICAgID8gZXJyb3JzLnBhc3N3b3JkX2NvbmZpcm1hdGlvblswXVxuICAgICAgICAgICAgICAgICAgICA6ICcnO1xuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5OiBsb2FkZXJWaXNpYmlsaXR5LFxuICAgICAgICAgICAgZm9ybURhdGE6IGZvcm1EYXRhLFxuICAgICAgICAgICAgZXJyb3JEYXRhOiBlcnJvckRhdGEsXG4gICAgICAgICAgICByZXNldDogcmVzZXQsXG4gICAgICAgICAgICB0cmFuc2xhdGU6IHRyYW5zbGF0ZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbXVsdGlzZWxlY3RfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3RcIikpO1xudmFyIHN0b3JlXzEgPSByZXF1aXJlKFwiLi4vLi4vc3RvcmVcIik7XG52YXIgYWN0aW9uc18xID0gcmVxdWlyZShcIi4uLy4uL3N0b3JlL3NldHRpbmcvYWN0aW9uc1wiKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vLi4vLi4vY29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBNdWx0aXNlbGVjdDogbXVsdGlzZWxlY3RfMS5kZWZhdWx0LFxuICAgICAgICBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY3VycmVuY2llczoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBsYW5ndWFnZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaHVtYW5pdGFyaWFuOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGJ1ZGdldE5vdFByb3ZpZGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRDb2xsYWJvcmF0aW9uVHlwZToge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0Rmxvd1R5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdEZpbmFuY2VUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRBaWRUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRUaWVkU3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHVzZXJSb2xlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3VzZXJSb2xlJyk7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBzdG9yZV8xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgZGVmYXVsdEZvcm0gPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5zdGF0ZS5kZWZhdWx0Rm9ybTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBkZWZhdWx0RXJyb3IgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5zdGF0ZS5kZWZhdWx0RXJyb3I7XG4gICAgICAgIH0pO1xuICAgICAgICBmdW5jdGlvbiB1cGRhdGVTdG9yZShrZXkpIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKGFjdGlvbnNfMS5BY3Rpb25UeXBlcy5VUERBVEVfREVGQVVMVF9WQUxVRVMsIHtcbiAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogZGVmYXVsdEZvcm0udmFsdWVba2V5XSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgICAgICB1c2VyUm9sZTogdXNlclJvbGUsXG4gICAgICAgICAgICBkZWZhdWx0Rm9ybTogZGVmYXVsdEZvcm0sXG4gICAgICAgICAgICBkZWZhdWx0RXJyb3I6IGRlZmF1bHRFcnJvcixcbiAgICAgICAgICAgIHVwZGF0ZVN0b3JlOiB1cGRhdGVTdG9yZSxcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogdHJhbnNsYXRlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHN0b3JlXzEgPSByZXF1aXJlKFwiLi4vLi4vc3RvcmVcIik7XG52YXIgYWN0aW9uc18xID0gcmVxdWlyZShcIi4uLy4uL3N0b3JlL3NldHRpbmcvYWN0aW9uc1wiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgU2V0dGluZ0RlZmF1bHRGb3JtX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL1NldHRpbmdEZWZhdWx0Rm9ybS52dWVcIikpO1xudmFyIFNldHRpbmdQdWJsaXNoaW5nRm9ybV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9TZXR0aW5nUHVibGlzaGluZ0Zvcm0udnVlXCIpKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIFNldHRpbmdEZWZhdWx0Rm9ybTogU2V0dGluZ0RlZmF1bHRGb3JtX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFNldHRpbmdQdWJsaXNoaW5nRm9ybTogU2V0dGluZ1B1Ymxpc2hpbmdGb3JtX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIExvYWRlcjogTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGN1cnJlbmNpZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbGFuZ3VhZ2VzOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGh1bWFuaXRhcmlhbjoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBvcmdhbml6YXRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYnVkZ2V0Tm90UHJvdmlkZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB1c2VyUm9sZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRDb2xsYWJvcmF0aW9uVHlwZToge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0Rmxvd1R5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdEZpbmFuY2VUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRBaWRUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRUaWVkU3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHRhYiA9ICgwLCB2dWVfMS5yZWYpKCdwdWJsaXNoJyk7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBzdG9yZV8xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgbG9hZGVyVmlzaWJpbGl0eSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvYXN0VmlzaWJpbGl0eSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMS5yZWYpKCcnKTtcbiAgICAgICAgdmFyIHRvYXN0VHlwZSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hpbmdGb3JtID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5wdWJsaXNoaW5nRm9ybTsgfSk7XG4gICAgICAgIHZhciBwdWJsaXNoaW5nSW5mbyA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUucHVibGlzaGluZ0luZm87IH0pO1xuICAgICAgICB2YXIgcHVibGlzaGluZ0Vycm9yID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5wdWJsaXNoaW5nRXJyb3I7IH0pO1xuICAgICAgICB2YXIgZGVmYXVsdEZvcm0gPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLmRlZmF1bHRGb3JtOyB9KTtcbiAgICAgICAgdmFyIGRlZmF1bHRFcnJvciA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuZGVmYXVsdEVycm9yOyB9KTtcbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlU3RvcmUobmFtZSwga2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goYWN0aW9uc18xLkFjdGlvblR5cGVzW25hbWVdLCB7XG4gICAgICAgICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGRhdGEsIHNldHRpbmdEYXRhLCBkZWZhdWx0VmFsdWVzLCBwdWJsaXNoZXJJbmZvLCBhY3Rpdml0eVZhbHVlcywga2V5LCBrZXksIGtleTtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NfMS5kZWZhdWx0LmdldCgnL3NldHRpbmcvZGF0YScpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IChfYS5zZW50KCkpLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5nRGF0YSA9IGRhdGEuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5nRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBzZXR0aW5nRGF0YS5kZWZhdWx0X3ZhbHVlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNldHRpbmdEYXRhLmRlZmF1bHRfdmFsdWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVySW5mbyA9IHNldHRpbmdEYXRhLnB1Ymxpc2hpbmdfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNldHRpbmdEYXRhLnB1Ymxpc2hpbmdfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXR5VmFsdWVzID0gc2V0dGluZ0RhdGEuYWN0aXZpdHlfZGVmYXVsdF92YWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzZXR0aW5nRGF0YS5hY3Rpdml0eV9kZWZhdWx0X3ZhbHVlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwdWJsaXNoZXJJbmZvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoa2V5IGluIHB1Ymxpc2hlckluZm8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0b3JlKHR5cGVvZiBwdWJsaXNoZXJJbmZvW2tleV0gPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnVVBEQVRFX1BVQkxJU0hJTkdfRk9STSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdVUERBVEVfUFVCTElTSEVSX0lORk8nLCBrZXksIHB1Ymxpc2hlckluZm9ba2V5XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHB1Ymxpc2hlckluZm8uYXBpX3Rva2VuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX1BVQkxJU0hFUl9JTkZPJywgJ2lzVmVyaWZpY2F0aW9uUmVxdWVzdGVkJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlZmF1bHRWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChrZXkgaW4gZGVmYXVsdFZhbHVlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RvcmUoJ1VQREFURV9ERUZBVUxUX1ZBTFVFUycsIGtleSwgZGVmYXVsdFZhbHVlc1trZXldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZpdHlWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChrZXkgaW4gYWN0aXZpdHlWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0b3JlKCdVUERBVEVfREVGQVVMVF9WQUxVRVMnLCBrZXksIGFjdGl2aXR5VmFsdWVzW2tleV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSk7XG4gICAgICAgIGZ1bmN0aW9uIHRvZ2dsZVRhYihwYWdlKSB7XG4gICAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRhYi52YWx1ZSA9IHBhZ2U7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gc3VibWl0RGVmYXVsdCgpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGRhdGEgaW4gZGVmYXVsdEVycm9yLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlU3RvcmUoJ1VQREFURV9ERUZBVUxUX0VSUk9SJywgZGF0YSwgJycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL3NldHRpbmcvc3RvcmUvZGVmYXVsdCcsIGRlZmF1bHRGb3JtLnZhbHVlKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSk7IH0sIDUwMDApO1xuICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3RUeXBlLnZhbHVlID0gcmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX1BVQkxJU0hFUl9JTkZPJywgcmVzcG9uc2UuZGF0YS5oaWVyYXJjaGlhbCwgJycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gZXJyb3IucmVzcG9uc2UuZGF0YS5lcnJvcnM7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgZSBpbiBlcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RvcmUoJ1VQREFURV9ERUZBVUxUX0VSUk9SJywgZSwgZXJyb3JzW2VdWzBdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gc3VibWl0UHVibGlzaGluZyh1cmwpIHtcbiAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgZm9yICh2YXIgZGF0YSBpbiBwdWJsaXNoaW5nRXJyb3IudmFsdWUpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX1BVQkxJU0hJTkdfRVJST1InLCBkYXRhLCAnJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCh1cmwsIF9fYXNzaWduKF9fYXNzaWduKHt9LCBwdWJsaXNoaW5nSW5mby52YWx1ZSksIHB1Ymxpc2hpbmdGb3JtLnZhbHVlKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdG9hc3RUeXBlLnZhbHVlID0gcmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX1BVQkxJU0hFUl9JTkZPJywgJ3B1Ymxpc2hlcl92ZXJpZmljYXRpb24nLCByZXNwb25zZS5kYXRhLnB1Ymxpc2hlcl92ZXJpZmljYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX1BVQkxJU0hFUl9JTkZPJywgJ3Rva2VuX3ZlcmlmaWNhdGlvbicsIHJlc3BvbnNlLmRhdGEudG9rZW5fdmVyaWZpY2F0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RvcmUoJ1VQREFURV9QVUJMSVNIRVJfSU5GTycsICdpc1ZlcmlmaWNhdGlvblJlcXVlc3RlZCcsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS5wdWJsaXNoZXJfdmVyaWZpY2F0aW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS50b2tlbl92ZXJpZmljYXRpb247XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKTsgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHZhciBlcnJvcnMgPSBlcnJvci5yZXNwb25zZS5kYXRhLmVycm9ycztcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBlIGluIGVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX1BVQkxJU0hJTkdfRVJST1InLCBlLCBlcnJvcnNbZV1bMF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzdWJtaXRGb3JtKHVybCkge1xuICAgICAgICAgICAgaWYgKHVybCA9PT0gdm9pZCAwKSB7IHVybCA9ICdzZXR0aW5nL3ZlcmlmeSc7IH1cbiAgICAgICAgICAgIGlmIChwcm9wcy51c2VyUm9sZSA9PT0gJ2FkbWluJykge1xuICAgICAgICAgICAgICAgIGlmICh0YWIudmFsdWUgPT09ICdwdWJsaXNoJylcbiAgICAgICAgICAgICAgICAgICAgc3VibWl0UHVibGlzaGluZyh1cmwpO1xuICAgICAgICAgICAgICAgIGlmICh0YWIudmFsdWUgPT09ICdkZWZhdWx0JylcbiAgICAgICAgICAgICAgICAgICAgc3VibWl0RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgndXNlclJvbGUnLCBwcm9wcy51c2VyUm9sZSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgICAgICB0YWI6IHRhYixcbiAgICAgICAgICAgIGRlZmF1bHRFcnJvcjogZGVmYXVsdEVycm9yLFxuICAgICAgICAgICAgcHVibGlzaGluZ0Vycm9yOiBwdWJsaXNoaW5nRXJyb3IsXG4gICAgICAgICAgICBzdG9yZTogc3RvcmUsXG4gICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5OiBsb2FkZXJWaXNpYmlsaXR5LFxuICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5OiB0b2FzdFZpc2liaWxpdHksXG4gICAgICAgICAgICB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSxcbiAgICAgICAgICAgIHRvYXN0VHlwZTogdG9hc3RUeXBlLFxuICAgICAgICAgICAgdG9nZ2xlVGFiOiB0b2dnbGVUYWIsXG4gICAgICAgICAgICBzdWJtaXRGb3JtOiBzdWJtaXRGb3JtLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHN0b3JlXzEgPSByZXF1aXJlKFwiLi4vLi4vc3RvcmVcIik7XG52YXIgYWN0aW9uc18xID0gcmVxdWlyZShcIi4uLy4uL3N0b3JlL3NldHRpbmcvYWN0aW9uc1wiKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vLi4vLi4vY29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgb3JnYW5pemF0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ3N1Ym1pdFB1Ymxpc2hpbmcnXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzLCBfYSkge1xuICAgICAgICB2YXIgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHRhYiA9ICgwLCB2dWVfMS5yZWYpKCdwdWJsaXNoJyk7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBzdG9yZV8xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgdXNlclJvbGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndXNlclJvbGUnKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hpbmdGb3JtID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5wdWJsaXNoaW5nRm9ybTsgfSk7XG4gICAgICAgIHZhciBwdWJsaXNoaW5nSW5mbyA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUucHVibGlzaGluZ0luZm87IH0pO1xuICAgICAgICB2YXIgcHVibGlzaGluZ0Vycm9yID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5wdWJsaXNoaW5nRXJyb3I7IH0pO1xuICAgICAgICBmdW5jdGlvbiBzdWJtaXRQdWJsaXNoaW5nKCkge1xuICAgICAgICAgICAgaWYgKHVzZXJSb2xlID09PSAnYWRtaW4nKSB7XG4gICAgICAgICAgICAgICAgZW1pdCgnc3VibWl0UHVibGlzaGluZycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGF1dG9WZXJpZnkoKSB7XG4gICAgICAgICAgICBlbWl0KCdzdWJtaXRQdWJsaXNoaW5nJyk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlU3RvcmUoa2V5KSB7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaChhY3Rpb25zXzEuQWN0aW9uVHlwZXMuVVBEQVRFX1BVQkxJU0hJTkdfRk9STSwge1xuICAgICAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBwdWJsaXNoaW5nRm9ybS52YWx1ZVtrZXldLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gdG9nZ2xlVGFiKCkge1xuICAgICAgICAgICAgdGFiLnZhbHVlID0gdGFiLnZhbHVlID09PSAncHVibGlzaCcgPyAnZGVmYXVsdCcgOiAncHVibGlzaCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRhYjogdGFiLFxuICAgICAgICAgICAgcHVibGlzaGluZ0Zvcm06IHB1Ymxpc2hpbmdGb3JtLFxuICAgICAgICAgICAgcHVibGlzaGluZ0luZm86IHB1Ymxpc2hpbmdJbmZvLFxuICAgICAgICAgICAgcHVibGlzaGluZ0Vycm9yOiBwdWJsaXNoaW5nRXJyb3IsXG4gICAgICAgICAgICBzdG9yZTogc3RvcmUsXG4gICAgICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgICAgICB1c2VyUm9sZTogdXNlclJvbGUsXG4gICAgICAgICAgICBzdWJtaXRQdWJsaXNoaW5nOiBzdWJtaXRQdWJsaXNoaW5nLFxuICAgICAgICAgICAgdG9nZ2xlVGFiOiB0b2dnbGVUYWIsXG4gICAgICAgICAgICB1cGRhdGVTdG9yZTogdXBkYXRlU3RvcmUsXG4gICAgICAgICAgICBhdXRvVmVyaWZ5OiBhdXRvVmVyaWZ5LFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbi8vIENvbXBvbmVudHNcbnZhciBQcm9ncmVzc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciBUYWJsZUxpc3RfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vY29tcG9uZW50cy9UYWJsZUxpc3QudnVlXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnT3JnYW5pc2F0aW9uTGlzdCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY291bnRyaWVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2V0dXBDb21wbGV0ZW5lc3M6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICByZWdpc3RyYXRpb25UeXBlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHB1Ymxpc2hlclR5cGVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgZGF0YUxpY2Vuc2VzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgb2xkZXN0RGF0ZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICAvLyByZWZcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgc3RhdHVzOiBmYWxzZSxcbiAgICAgICAgICAgIHRleHQ6IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdwbGVhc2Vfd2FpdCcpLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBwcm92aWRlXG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnbG9hZGVyJywgbG9hZGVyKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCd0b2FzdERhdGEnLCB0b2FzdE1lc3NhZ2UpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgcHJvcHM6IHByb3BzLCBsb2FkZXI6IGxvYWRlciwgdG9hc3RNZXNzYWdlOiB0b2FzdE1lc3NhZ2UsIExvYWRlcjogUHJvZ3Jlc3NMb2FkZXJfdnVlXzEuZGVmYXVsdCwgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LCBUYWJsZUxpc3Q6IFRhYmxlTGlzdF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBsYW5nXzEgPSByZXF1aXJlKFwibG9kYXNoL2xhbmdcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnU3lzdGVtVmVyc2lvbicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgcGhwRGVwZW5kZW5jaWVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgbm9kZURlcGVuZGVuY2llczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHBhY2thZ2VNYW5hZ2VyVmVyc2lvbjogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGxhdGVzdE1hbmFnZXJWZXJzaW9uOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIC8qIFNldHMgVXBkYXRlIHN0YXR1cyBjbGFzcyAqL1xuICAgICAgICB2YXIgZ2V0U3RhdHVzQ2xhc3MgPSBmdW5jdGlvbiAodXBkYXRlU3RhdHVzKSB7XG4gICAgICAgICAgICBpZiAodXBkYXRlU3RhdHVzID09ICdzZW12ZXItc2FmZS11cGRhdGUnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdyb3VuZGVkLWZ1bGwgYmctc3ByaW5nLTUwIGJvcmRlciBib3JkZXItc3ByaW5nLTUwIHB4LTUgcHktMSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHRleHQtc20gbGVhZGluZy1ub3JtYWwgdGV4dC13aGl0ZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJ3JvdW5kZWQtZnVsbCBiZy1zYWxtb24tNTAgYm9yZGVyIGJvcmRlci1zYWxtb24tNTAgcHgtNSBweS0xIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTEgdGV4dC1zbSBsZWFkaW5nLW5vcm1hbCB0ZXh0LXdoaXRlJztcbiAgICAgICAgfTtcbiAgICAgICAgLyogUmV0dXJucyBVcGRhdGUgc3RhdHVzICovXG4gICAgICAgIHZhciBnZXRTdGF0dXNNZXNzYWdlID0gZnVuY3Rpb24gKHVwZGF0ZVN0YXR1cykge1xuICAgICAgICAgICAgaWYgKHVwZGF0ZVN0YXR1cyA9PSAnc2VtdmVyLXNhZmUtdXBkYXRlJykge1xuICAgICAgICAgICAgICAgIHJldHVybiAnU2FmZSB1cGRhdGUnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICdNYXkgYnJlYWsgc3lzdGVtJztcbiAgICAgICAgfTtcbiAgICAgICAgLyogUmV0dXJucyBMYXRlc3QgdmVyc2lvbiBvZiBwYWNrYWdlIG1hbmFnZXIgKi9cbiAgICAgICAgdmFyIHJlc29sdmVMYXRlc3RWZXJzaW9uID0gZnVuY3Rpb24gKGxhdGVzdE1hbmFnZXJWZXJzaW9uLCBrZXkpIHtcbiAgICAgICAgICAgIGlmIChrZXkgaW4gbGF0ZXN0TWFuYWdlclZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGF0ZXN0TWFuYWdlclZlcnNpb25ba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGtleSA9PSAnY29tcG9zZXInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcyLjUuNCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJ05BJztcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGdldEluZGV4ID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoaW5kZXgudG9TdHJpbmcoKSkgKyAxO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBnZXRTdGF0dXNDbGFzczogZ2V0U3RhdHVzQ2xhc3MsIGdldFN0YXR1c01lc3NhZ2U6IGdldFN0YXR1c01lc3NhZ2UsIHJlc29sdmVMYXRlc3RWZXJzaW9uOiByZXNvbHZlTGF0ZXN0VmVyc2lvbiwgZ2V0SW5kZXg6IGdldEluZGV4LCBpc0VtcHR5OiBsYW5nXzEuaXNFbXB0eSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0FkbWluQmFyJyxcbiAgICBwcm9wczoge1xuICAgICAgICBuYW1lOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgb3JnYW5pemF0aW9uTmFtZTogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTd2l0Y2ggQmFja1xuICAgICAgICAgKi9cbiAgICAgICAgdmFyIHN3aXRjaEJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVwbGFjZSgnL2xpc3Qtb3JnYW5pc2F0aW9ucycpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgc3dpdGNoQmFjazogc3dpdGNoQmFjayB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBNdWx0aVNlbGVjdFdpdGhTZWFyY2hfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZVwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIFRhYmxlUGFnaW5hdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlXCIpKTtcbnZhciBtdWx0aXNlbGVjdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJAdnVlZm9ybS9tdWx0aXNlbGVjdFwiKSk7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBEYXRlUmFuZ2VXaWRnZXRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvRGF0ZVJhbmdlV2lkZ2V0LnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RhYmxlTGlzdCcsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdpbmF0aW9uOiBUYWJsZVBhZ2luYXRpb25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgTXVsdGlzZWxlY3Q6IG11bHRpc2VsZWN0XzEuZGVmYXVsdCxcbiAgICAgICAgRGF0ZVJhbmdlV2lkZ2V0OiBEYXRlUmFuZ2VXaWRnZXRfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvdW50cmllczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNldHVwQ29tcGxldGVuZXNzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcmVnaXN0cmF0aW9uVHlwZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBwdWJsaXNoZXJUeXBlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGRhdGFMaWNlbnNlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIG9sZGVzdERhdGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgdG9hc3RNZXNzYWdlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3RvYXN0RGF0YScpO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBsb2FkZXIgPSAoMCwgdnVlXzEuaW5qZWN0KSgnbG9hZGVyJyk7XG4gICAgICAgIHZhciBkYXRlRHJvcGRvd24gPSAoMCwgdnVlXzEucmVmKSgpO1xuICAgICAgICB2YXIgY2xlYXJEYXRlID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZGF0ZVR5cGUgPSAoMCwgdnVlXzEucmVmKSgnQWxsIFRpbWUnKTtcbiAgICAgICAgdmFyIGdldENvdW50cmllc1dpdGhQcmVmaXggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcmV0dXJuVmFsdWVGb3JDb3VudHJpZXMgPSB7fTtcbiAgICAgICAgICAgIHZhciBjb3VudHJ5Q29kZXMgPSBPYmplY3Qua2V5cyhwcm9wcy5jb3VudHJpZXMpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudHJ5Q29kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZUZvckNvdW50cmllc1tjb3VudHJ5Q29kZXNbaV1dID0gXCJcIi5jb25jYXQoY291bnRyeUNvZGVzW2ldLCBcIiAtIFwiKS5jb25jYXQocHJvcHMuY291bnRyaWVzW2NvdW50cnlDb2Rlc1tpXV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlRm9yQ291bnRyaWVzO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY291bnRyaWVzV2l0aFByZWZpeCA9IGdldENvdW50cmllc1dpdGhQcmVmaXgoKTtcbiAgICAgICAgLy8gcmVhY3Rpdml0eVxuICAgICAgICB2YXIgb3JnYW5pc2F0aW9uRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgZGF0YToge30sXG4gICAgICAgICAgICBzdGF0dXM6ICdmZXRjaGluZycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgbXVsdGlzZWxlY3RTdHlsZSA9ICgwLCB2dWVfMS5yZWYpKHt9KTtcbiAgICAgICAgdmFyIGZpbHRlciA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgcHVibGlzaGVyX3R5cGU6IFtdLFxuICAgICAgICAgICAgZGF0YV9saWNlbnNlOiBbXSxcbiAgICAgICAgICAgIGNvdW50cnk6IFtdLFxuICAgICAgICAgICAgY29tcGxldGVuZXNzOiAnJyxcbiAgICAgICAgICAgIHJlZ2lzdHJhdGlvbl90eXBlOiAnJyxcbiAgICAgICAgICAgIHN0YXJ0X2RhdGU6ICcnLFxuICAgICAgICAgICAgZW5kX2RhdGU6ICcnLFxuICAgICAgICAgICAgZGF0ZV90eXBlOiAnY3JlYXRlZF9hdCcsXG4gICAgICAgICAgICBzZWxlY3RlZF9kYXRlX2ZpbHRlcjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcmVzZXRQYWdpbmF0aW9uID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG90YWxPcmdhbmlzYXRpb24gPSAoMCwgdnVlXzEucmVmKSgwKTtcbiAgICAgICAgdmFyIHJlZ2lzdHJ5QXBpS2V5U3RhdHVzID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKShbXSk7XG4gICAgICAgIHZhciBkZWZhdWx0VmFsdWVTdGF0dXMgPSAoMCwgdnVlXzEucmVhY3RpdmUpKFtdKTtcbiAgICAgICAgdmFyIHNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2ggPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBkcm9wZG93blJhbmdlID0ge1xuICAgICAgICAgICAgY3JlYXRlZF9hdDogJ1JlZ2lzdGVyZWQgZGF0ZSByYW5nZScsXG4gICAgICAgICAgICBsYXN0X2xvZ2dlZF9pbjogJ0xhc3QgbG9naW4gZGF0ZSByYW5nZScsXG4gICAgICAgIH07XG4gICAgICAgIHZhciBzb3J0UGFyYW1zID0gKDAsIHZ1ZV8xLnJlZikoeyBvcmRlckJ5OiAnJywgZGlyZWN0aW9uOiAnJyB9KTtcbiAgICAgICAgdmFyIGlnbm9yZVVwZGF0ZXMgPSAoMCwgY29yZV8xLndhdGNoSWdub3JhYmxlKShmaWx0ZXIsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSkuaWdub3JlVXBkYXRlcztcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZhbHVlOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJvdGF0ZUNsYXNzLnZhbHVlID0gJ3JvdGF0ZS0xODAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcm90YXRlQ2xhc3MudmFsdWUgPSAncm90YXRlLTAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZVB1Ymxpc2hlck1vZGVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2xvc2VQdWJsaXNoZXJNb2RlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2xlYXJEYXRlRmlsdGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZmlsdGVyLnN0YXJ0X2RhdGUgPSAnJztcbiAgICAgICAgICAgIGZpbHRlci5lbmRfZGF0ZSA9ICcnO1xuICAgICAgICAgICAgZmlsdGVyLnNlbGVjdGVkX2RhdGVfZmlsdGVyID0gJyc7XG4gICAgICAgICAgICBjbGVhckRhdGUudmFsdWUgPSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2xvc2VQdWJsaXNoZXJNb2RlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2gudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGdlbmVyYXRlTGFiZWwgPSBmdW5jdGlvbiAobGFiZWwpIHtcbiAgICAgICAgICAgIHJldHVybiB7ICctLWxhYmVsJzogXCInXCIuY29uY2F0KGxhYmVsLCBcIidcIikgfTtcbiAgICAgICAgfTtcbiAgICAgICAgLy9saWZlY3ljbGVcbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGZpbHRlclBhcmFtcyA9IGdldEZpbHRlclBhcmFtc0Zyb21QcmV2aW91c1BhZ2UoKTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXJQYXJhbXMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbHRlclBhcmFtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICB2YXIga2V5ID0gKDAsIHV0aWxzXzEua2ViYWJDYXNlVG9TbmFrZWNhc2UpKGZpbHRlclBhcmFtc1tpXVswXSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IGZpbHRlclBhcmFtc1tpXVsxXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFsncHVibGlzaGVyX3R5cGUnLCAnZGF0YV9saWNlbnNlJywgJ2NvdW50cnknXS5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJba2V5XS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChrZXkgPT09ICdkYXRlX3R5cGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlVHlwZS52YWx1ZSA9IHZhbHVlLnNwbGl0KCctJykuam9pbignICcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZldGNoT3JnYW5pc2F0aW9uKDEpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGdldEZpbHRlclBhcmFtc0Zyb21QcmV2aW91c1BhZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgcXVlcnlTdHJpbmcgPSAoX2EgPSB3aW5kb3cubG9jYXRpb24uaHJlZikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBpZiAocXVlcnlTdHJpbmcpIHtcbiAgICAgICAgICAgICAgICBxdWVyeVN0cmluZyA9IHF1ZXJ5U3RyaW5nLnNwbGl0KCc/JylbMV07XG4gICAgICAgICAgICAgICAgdmFyIHF1ZXJ5UGFyYW1zSW5LZXlWYWwgPSBbXTtcbiAgICAgICAgICAgICAgICB2YXIgcXVlcnlQYXJhbXMgPSBxdWVyeVN0cmluZyA9PT0gbnVsbCB8fCBxdWVyeVN0cmluZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcXVlcnlTdHJpbmcuc3BsaXQoJyYnKTtcbiAgICAgICAgICAgICAgICBpZiAocXVlcnlQYXJhbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWVyeVBhcmFtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9iID0gcXVlcnlQYXJhbXNbaV0uc3BsaXQoJz0nKSwga2V5ID0gX2JbMF0sIHZhbHVlID0gX2JbMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNJbktleVZhbC5wdXNoKFtrZXksIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB2b2lkIDAgPyB2YWx1ZSA6ICcnXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5UGFyYW1zSW5LZXlWYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGZXRjaGluZyBvcmdhbml6YXRpb24gbGlzdFxuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGN1cnJlbnRVUkwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICAgICAgdmFyIGZldGNoT3JnYW5pc2F0aW9uID0gZnVuY3Rpb24gKGFjdGl2ZV9wYWdlKSB7XG4gICAgICAgICAgICBpZiAoYWN0aXZlX3BhZ2UgPT09IHZvaWQgMCkgeyBhY3RpdmVfcGFnZSA9IDE7IH1cbiAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkRhdGEuc3RhdHVzID0gJ2ZldGNoaW5nJztcbiAgICAgICAgICAgIHZhciBxdWVyeVN0cmluZyA9ICcnO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRVUkwuaW5jbHVkZXMoJz8nKSkge1xuICAgICAgICAgICAgICAgIHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFjdGl2ZV9wYWdlID0gYWN0aXZlX3BhZ2UgIT09IG51bGwgJiYgYWN0aXZlX3BhZ2UgIT09IHZvaWQgMCA/IGFjdGl2ZV9wYWdlIDogMTtcbiAgICAgICAgICAgIHZhciBlbmRwb2ludCA9IFwiL2xpc3Qtb3JnYW5pc2F0aW9ucy9wYWdlL1wiLmNvbmNhdChhY3RpdmVfcGFnZSkuY29uY2F0KHF1ZXJ5U3RyaW5nKTtcbiAgICAgICAgICAgIGlmIChzb3J0UGFyYW1zLnZhbHVlLm9yZGVyQnkpIHtcbiAgICAgICAgICAgICAgICB1cmxQYXJhbXMuYXBwZW5kKCdvcmRlckJ5Jywgc29ydFBhcmFtcy52YWx1ZS5vcmRlckJ5KTtcbiAgICAgICAgICAgICAgICB1cmxQYXJhbXMuYXBwZW5kKCdkaXJlY3Rpb24nLCBzb3J0UGFyYW1zLnZhbHVlLmRpcmVjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNGaWx0ZXJBcHBsaWVkLnZhbHVlIHx8XG4gICAgICAgICAgICAgICAgQm9vbGVhbihzb3J0UGFyYW1zLnZhbHVlLm9yZGVyQnkgJiYgc29ydFBhcmFtcy52YWx1ZS5kaXJlY3Rpb24pKSB7XG4gICAgICAgICAgICAgICAgcXVlcnlTdHJpbmcgPSBxdWVyeVN0cmluZyAhPT0gbnVsbCAmJiBxdWVyeVN0cmluZyAhPT0gdm9pZCAwID8gcXVlcnlTdHJpbmcgOiAnJnE9JztcbiAgICAgICAgICAgICAgICBlbmRwb2ludCA9IHF1ZXJ5U3RyaW5nICE9PSAnJyA/IGVuZHBvaW50IDogXCJcIi5jb25jYXQoZW5kcG9pbnQpO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGZpbHRlcktleSBpbiBmaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlcltmaWx0ZXJLZXldICYmIGZpbHRlcltmaWx0ZXJLZXldLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybFBhcmFtcy5hcHBlbmQoZmlsdGVyS2V5LCBmaWx0ZXJbZmlsdGVyS2V5XSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KGVuZHBvaW50LCB7XG4gICAgICAgICAgICAgICAgcGFyYW1zOiBpc0ZpbHRlckFwcGxpZWQudmFsdWUgfHxcbiAgICAgICAgICAgICAgICAgICAgQm9vbGVhbihzb3J0UGFyYW1zLnZhbHVlLm9yZGVyQnkgJiYgc29ydFBhcmFtcy52YWx1ZS5kaXJlY3Rpb24pXG4gICAgICAgICAgICAgICAgICAgID8gdXJsUGFyYW1zXG4gICAgICAgICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdG90YWxPcmdhbmlzYXRpb24udmFsdWUgPSAoX2EgPSByZXNwb25zZS5kYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudG90YWw7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkRhdGEuc3RhdHVzID0gJ2VtcHR5JztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkRhdGEuc3RhdHVzID0gJ3N1Y2Nlc3MnO1xuICAgICAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uRGF0YS5kYXRhID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hTdGF0dXNBcnJheXMob3JnYW5pc2F0aW9uRGF0YS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uRGF0YS5zdGF0dXMgPSAnZmFpbGVkIHRvIHJldHJpZXZlIGRhdGEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQcm94eSBVc2VyXG4gICAgICAgICAqL1xuICAgICAgICAvLyBkaXNwbGF5L2hpZGUgdmFsaWRhdG9yIGxvYWRlclxuICAgICAgICB2YXIgcHJveHlVc2VyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICAgICAgICBsb2FkZXIuc3RhdHVzID0gdHJ1ZTtcbiAgICAgICAgICAgIGxvYWRlci50ZXh0ID0gdHJhbnNsYXRlLmJ1dHRvbigncHJveHlfbG9naW4nKTtcbiAgICAgICAgICAgIHZhciBlbmRwb2ludCA9IFwiL3Byb3h5LW9yZ2FuaXNhdGlvbi9cIi5jb25jYXQoaWQpO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChlbmRwb2ludCkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVwbGFjZSgnL2FjdGl2aXRpZXMnKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIuc3RhdHVzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnR5cGUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogU29ydGluZyBCeSB1cGRhdGUgb25cbiAgICAgICAgICovXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgdmFyIHF1ZXJ5ID0gJycsIGRlZmF1bHRTb3J0RGlyZWN0aW9uID0gJ2Rlc2NlbmRpbmcnLCBcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICBzb3J0RGlyZWN0aW9uID0gJ2Rlc2MnO1xuICAgICAgICB2YXIgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoO1xuICAgICAgICB2YXIgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyk7XG4gICAgICAgIHZhciBvcmRlclR5cGUgPSAoMCwgdnVlXzEucmVmKSgnJyk7XG4gICAgICAgIG9yZGVyVHlwZS52YWx1ZSA9IChfYSA9IHVybFBhcmFtcy5nZXQoJ29yZGVyQnknKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgdmFyIHJhbmdlID0gJyc7XG4gICAgICAgIHZhciBzb3J0aW5nRGlyZWN0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHNvcnRQYXJhbXMudmFsdWUuZGlyZWN0aW9uID09PSAnYXNjJyA/ICdkZXNjZW5kaW5nJyA6ICdhc2NlbmRpbmcnO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgc29ydEJ5ID0gZnVuY3Rpb24gKG9yZGVyKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgc3RhcnREYXRlLCBlbmREYXRlO1xuICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9kKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfZC5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNldFBhZ2luYXRpb24udmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy52YWx1ZS5vcmRlckJ5ID0gb3JkZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLnZhbHVlLmRpcmVjdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy52YWx1ZS5kaXJlY3Rpb24gPT09ICdkZXNjJyA/ICdhc2MnIDogJ2Rlc2MnO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRVUkwuaW5jbHVkZXMoJz8nKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5ID0gKF9hID0gdXJsUGFyYW1zLmdldCgncScpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0RGlyZWN0aW9uID0gdXJsUGFyYW1zLmdldCgnZGlyZWN0aW9uJykgPT09ICdkZXNjJyA/ICdhc2MnIDogJ2Rlc2MnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0RGF0ZSA9IChfYiA9IHVybFBhcmFtcy5nZXQoJ3N0YXJ0X2RhdGUnKSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kRGF0ZSA9IChfYyA9IHVybFBhcmFtcy5nZXQoJ2VuZF9kYXRlJykpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydERhdGUgJiYgZW5kRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZSA9IFwiJnN0YXJ0X2RhdGU9XCIuY29uY2F0KHN0YXJ0RGF0ZSwgXCImZW5kX2RhdGU9XCIpLmNvbmNhdChlbmREYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBmZXRjaE9yZ2FuaXNhdGlvbigxKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9kLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0UGFnaW5hdGlvbi52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBbXG4gICAgICAgICAgICBmaWx0ZXIuY291bnRyeSxcbiAgICAgICAgICAgIGZpbHRlci5jb21wbGV0ZW5lc3MsXG4gICAgICAgICAgICBmaWx0ZXIucmVnaXN0cmF0aW9uX3R5cGUsXG4gICAgICAgICAgICBmaWx0ZXIucHVibGlzaGVyX3R5cGUsXG4gICAgICAgICAgICBmaWx0ZXIuZGF0YV9saWNlbnNlLFxuICAgICAgICAgICAgZmlsdGVyLnN0YXJ0X2RhdGUsXG4gICAgICAgICAgICBmaWx0ZXIuZW5kX2RhdGUsXG4gICAgICAgICAgICBmaWx0ZXIuZGF0ZV90eXBlLFxuICAgICAgICBdOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmZXRjaE9yZ2FuaXNhdGlvbigpO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgIHZhciByZXNldEFsbEZpbHRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZ25vcmVVcGRhdGVzKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXIuY291bnRyeSA9IFtdO1xuICAgICAgICAgICAgICAgIGZpbHRlci5wdWJsaXNoZXJfdHlwZSA9IFtdO1xuICAgICAgICAgICAgICAgIGZpbHRlci5kYXRhX2xpY2Vuc2UgPSBbXTtcbiAgICAgICAgICAgICAgICBmaWx0ZXIuY29tcGxldGVuZXNzID0gJyc7XG4gICAgICAgICAgICAgICAgZmlsdGVyLnJlZ2lzdHJhdGlvbl90eXBlID0gJyc7XG4gICAgICAgICAgICAgICAgZmlsdGVyLnN0YXJ0X2RhdGUgPSAnJztcbiAgICAgICAgICAgICAgICBmaWx0ZXIuZW5kX2RhdGUgPSAnJztcbiAgICAgICAgICAgICAgICBmaWx0ZXIuZGF0ZV90eXBlID0gJ2NyZWF0ZWRfYXQnO1xuICAgICAgICAgICAgICAgIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlciA9ICcnO1xuICAgICAgICAgICAgICAgIGNsZWFyRGF0ZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGlzRmlsdGVyQXBwbGllZCA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIChmaWx0ZXIuY291bnRyeS5sZW5ndGggK1xuICAgICAgICAgICAgICAgIGZpbHRlci5wdWJsaXNoZXJfdHlwZS5sZW5ndGggK1xuICAgICAgICAgICAgICAgIGZpbHRlci5kYXRhX2xpY2Vuc2UubGVuZ3RoICE9XG4gICAgICAgICAgICAgICAgMCB8fFxuICAgICAgICAgICAgICAgIGZpbHRlci5jb21wbGV0ZW5lc3MgIT09ICcnIHx8XG4gICAgICAgICAgICAgICAgZmlsdGVyLnJlZ2lzdHJhdGlvbl90eXBlICE9PSAnJyB8fFxuICAgICAgICAgICAgICAgIChmaWx0ZXIuc3RhcnRfZGF0ZSAhPT0gJycgJiYgZmlsdGVyLmVuZF9kYXRlICE9PSAnJykpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHJlZnJlc2hTdGF0dXNBcnJheXMgPSBmdW5jdGlvbiAob3JnRGF0YSkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDAsIF9kID0gb3JnRGF0YS5kYXRhOyBfaSA8IF9kLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgICAgIHZhciBvcmdEYXR1bSA9IF9kW19pXTtcbiAgICAgICAgICAgICAgICByZWdpc3RyeUFwaUtleVN0YXR1c1tvcmdEYXR1bS5pZF0gPVxuICAgICAgICAgICAgICAgICAgICAoX2MgPSAoX2IgPSAoX2EgPSBvcmdEYXR1bSA9PT0gbnVsbCB8fCBvcmdEYXR1bSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3JnRGF0dW0uc2V0dGluZ3MpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5wdWJsaXNoaW5nX2luZm8pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi50b2tlbl92ZXJpZmljYXRpb24pICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IGZhbHNlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZVN0YXR1c1tvcmdEYXR1bS5pZF0gPSBjaGVja0lmRGVmYXVsdFZhbHVlc0FyZVZhbGlkKG9yZ0RhdHVtID8gb3JnRGF0dW0uc2V0dGluZ3MgOiBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjaGVja0lmRGVmYXVsdFZhbHVlc0FyZVZhbGlkID0gZnVuY3Rpb24gKHNldHRpbmdzKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgICAgICAgICBpZiAoc2V0dGluZ3MpIHtcbiAgICAgICAgICAgICAgICB2YXIgZGVmYXVsdFZhbHVlcyA9IHNldHRpbmdzLmRlZmF1bHRfdmFsdWVzO1xuICAgICAgICAgICAgICAgIHZhciBhY3Rpdml0eURlZmF1bHRWYWx1ZXMgPSBzZXR0aW5ncy5hY3Rpdml0eV9kZWZhdWx0X3ZhbHVlcztcbiAgICAgICAgICAgICAgICByZXR1cm4gISEoKChfYSA9IGRlZmF1bHRWYWx1ZXMgPT09IG51bGwgfHwgZGVmYXVsdFZhbHVlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVmYXVsdFZhbHVlcy5kZWZhdWx0X2N1cnJlbmN5KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgKChfYiA9IGRlZmF1bHRWYWx1ZXMgPT09IG51bGwgfHwgZGVmYXVsdFZhbHVlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVmYXVsdFZhbHVlcy5kZWZhdWx0X2xhbmd1YWdlKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgKChfYyA9IGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9PT0gbnVsbCB8fCBhY3Rpdml0eURlZmF1bHRWYWx1ZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFjdGl2aXR5RGVmYXVsdFZhbHVlcy5oaWVyYXJjaHkpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAoKF9kID0gYWN0aXZpdHlEZWZhdWx0VmFsdWVzID09PSBudWxsIHx8IGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogYWN0aXZpdHlEZWZhdWx0VmFsdWVzLmJ1ZGdldF9ub3RfcHJvdmlkZWQpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAoKGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9PT0gbnVsbCB8fCBhY3Rpdml0eURlZmF1bHRWYWx1ZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFjdGl2aXR5RGVmYXVsdFZhbHVlcy5odW1hbml0YXJpYW4pICE9IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIChhY3Rpdml0eURlZmF1bHRWYWx1ZXMgPT09IG51bGwgfHwgYWN0aXZpdHlEZWZhdWx0VmFsdWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhY3Rpdml0eURlZmF1bHRWYWx1ZXMuaHVtYW5pdGFyaWFuKSAhPSAnJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9PT0gbnVsbCB8fCBhY3Rpdml0eURlZmF1bHRWYWx1ZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFjdGl2aXR5RGVmYXVsdFZhbHVlcy5odW1hbml0YXJpYW4pICE9IGZhbHNlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZXREYXRlUmFuZ2VEYXRlID0gZnVuY3Rpb24gKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgc2VsZWN0ZWREYXRlRmlsdGVyKSB7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWREYXRlRmlsdGVyID09PSB2b2lkIDApIHsgc2VsZWN0ZWREYXRlRmlsdGVyID0gJyc7IH1cbiAgICAgICAgICAgIGZpbHRlci5zdGFydF9kYXRlID0gc3RhcnREYXRlO1xuICAgICAgICAgICAgZmlsdGVyLmVuZF9kYXRlID0gZW5kRGF0ZTtcbiAgICAgICAgICAgIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlciA9IHNlbGVjdGVkRGF0ZUZpbHRlcjtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNldERhdGVUeXBlID0gZnVuY3Rpb24gKGRhdGVUeXBlKSB7XG4gICAgICAgICAgICBmaWx0ZXIuZGF0ZV90eXBlID0gZGF0ZVR5cGU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciByb3RhdGVDbGFzcyA9ICgwLCB2dWVfMS5yZWYpKCcnKTtcbiAgICAgICAgdmFyIHRvZ2dsZVNob3dNdWx0aVNlbGVjdCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB2YXIgcmVjdCA9IGV2ZW50LnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIG11bHRpc2VsZWN0U3R5bGUudmFsdWUgPSB7XG4gICAgICAgICAgICAgICAgdG9wOiBOdW1iZXIocmVjdC50b3ApIDwgMTAwID8gMjEwICsgJ3B4JyA6IE51bWJlcihyZWN0LnRvcCkgKyA1MCArICdweCcsXG4gICAgICAgICAgICAgICAgbGVmdDogTnVtYmVyKHJlY3QubGVmdCkgKyAncHgnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2gudmFsdWUgPSAhc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaC52YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNldFNlbGVjdGVkUHVibGlzaGVyID0gZnVuY3Rpb24gKHB1Ymxpc2hlclR5cGVzKSB7XG4gICAgICAgICAgICBmaWx0ZXIucHVibGlzaGVyX3R5cGUgPSBwdWJsaXNoZXJUeXBlcztcbiAgICAgICAgfTtcbiAgICAgICAgLypcbiAgICAgICAgICogRm9yIG1hcHBpbmcgY291bnRyeSwgcHVibGlzaGVyX3R5cGUgYW5kIGRhdGEgbGljZW5zZVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIHNob3dNYXBwZWREYXRhID0gZnVuY3Rpb24gKGtleSwgZGF0YSwgbWFwKSB7XG4gICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgPT0gJ2RhdGFfbGljZW5zZScpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxpY2Vuc2UgPSBkYXRhW2tleV07XG4gICAgICAgICAgICAgICAgICAgIGxpY2Vuc2UgPSBsaWNlbnNlID09PSBudWxsIHx8IGxpY2Vuc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGxpY2Vuc2UudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGljZW5zZSA/IG1hcFtsaWNlbnNlXSA6IHRyYW5zbGF0ZS5taXNzaW5nKCdub3RfYXZhaWxhYmxlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhW2tleV0gPyBtYXBbZGF0YVtrZXldXSA6IHRyYW5zbGF0ZS5taXNzaW5nKCdub3RfYXZhaWxhYmxlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJhbnNsYXRlLm1pc3NpbmcoJ25vdF9hdmFpbGFibGUnKTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgICAgICBNdWx0aXNlbGVjdDogbXVsdGlzZWxlY3RfMS5kZWZhdWx0LFxuICAgICAgICAgICAgRGF0ZVJhbmdlV2lkZ2V0OiBEYXRlUmFuZ2VXaWRnZXRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgICAgIE11bHRpU2VsZWN0V2l0aFNlYXJjaDogTXVsdGlTZWxlY3RXaXRoU2VhcmNoX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgICAgICBvcmdhbmlzYXRpb25EYXRhOiBvcmdhbmlzYXRpb25EYXRhLFxuICAgICAgICAgICAgZHJvcGRvd25SYW5nZTogZHJvcGRvd25SYW5nZSxcbiAgICAgICAgICAgIHNldFNlbGVjdGVkUHVibGlzaGVyOiBzZXRTZWxlY3RlZFB1Ymxpc2hlcixcbiAgICAgICAgICAgIHRvZ2dsZVNob3dNdWx0aVNlbGVjdDogdG9nZ2xlU2hvd011bHRpU2VsZWN0LFxuICAgICAgICAgICAgc2V0RGF0ZVR5cGU6IHNldERhdGVUeXBlLFxuICAgICAgICAgICAgc2V0RGF0ZVJhbmdlRGF0ZTogc2V0RGF0ZVJhbmdlRGF0ZSxcbiAgICAgICAgICAgIHNvcnRCeTogc29ydEJ5LFxuICAgICAgICAgICAgcmVzZXRBbGxGaWx0ZXJzOiByZXNldEFsbEZpbHRlcnMsXG4gICAgICAgICAgICBzb3J0aW5nRGlyZWN0aW9uOiBzb3J0aW5nRGlyZWN0aW9uLFxuICAgICAgICAgICAgZGVmYXVsdFNvcnREaXJlY3Rpb246IGRlZmF1bHRTb3J0RGlyZWN0aW9uLFxuICAgICAgICAgICAgcHJveHlVc2VyOiBwcm94eVVzZXIsXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGZldGNoT3JnYW5pc2F0aW9uOiBmZXRjaE9yZ2FuaXNhdGlvbixcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZVN0YXR1czogZGVmYXVsdFZhbHVlU3RhdHVzLFxuICAgICAgICAgICAgcmVnaXN0cnlBcGlLZXlTdGF0dXM6IHJlZ2lzdHJ5QXBpS2V5U3RhdHVzLFxuICAgICAgICAgICAgb3JkZXJUeXBlOiBvcmRlclR5cGUsXG4gICAgICAgICAgICBjbGVhckRhdGU6IGNsZWFyRGF0ZSxcbiAgICAgICAgICAgIGZpbHRlcjogZmlsdGVyLFxuICAgICAgICAgICAgc25ha2VDYXNlVG9TZW50ZW5jZUNhc2U6IHV0aWxzXzEuc25ha2VDYXNlVG9TZW50ZW5jZUNhc2UsXG4gICAgICAgICAgICBpc0ZpbHRlckFwcGxpZWQ6IGlzRmlsdGVyQXBwbGllZCxcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgICAgIHNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2g6IHNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2gsXG4gICAgICAgICAgICBkYXRlVHlwZTogZGF0ZVR5cGUsXG4gICAgICAgICAgICByb3RhdGVDbGFzczogcm90YXRlQ2xhc3MsXG4gICAgICAgICAgICBtdWx0aXNlbGVjdFN0eWxlOiBtdWx0aXNlbGVjdFN0eWxlLFxuICAgICAgICAgICAgY2xlYXJEYXRlRmlsdGVyOiBjbGVhckRhdGVGaWx0ZXIsXG4gICAgICAgICAgICBkYXRlRHJvcGRvd246IGRhdGVEcm9wZG93bixcbiAgICAgICAgICAgIHNvcnRQYXJhbXM6IHNvcnRQYXJhbXMsXG4gICAgICAgICAgICByZXNldFBhZ2luYXRpb246IHJlc2V0UGFnaW5hdGlvbixcbiAgICAgICAgICAgIHNob3dNYXBwZWREYXRhOiBzaG93TWFwcGVkRGF0YSxcbiAgICAgICAgICAgIHRvdGFsT3JnYW5pc2F0aW9uOiB0b3RhbE9yZ2FuaXNhdGlvbixcbiAgICAgICAgICAgIGNvdW50cmllc1dpdGhQcmVmaXg6IGNvdW50cmllc1dpdGhQcmVmaXgsXG4gICAgICAgICAgICBnZW5lcmF0ZUxhYmVsOiBnZW5lcmF0ZUxhYmVsLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vY29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIGVuY3J5cHRpb25fMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9lbmNyeXB0aW9uXCIpKTtcbnZhciBtdWx0aXNlbGVjdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJAdnVlZm9ybS9tdWx0aXNlbGVjdFwiKSk7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG52YXIgVGFibGVQYWdpbmF0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWVcIikpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgRGF0ZVJhbmdlV2lkZ2V0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0RhdGVSYW5nZVdpZGdldC52dWVcIikpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnVXNlckxpc3RpbmcnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG9yZ2FuaXphdGlvbnM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBzdGF0dXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICByb2xlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHVzZXJSb2xlOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgb2xkZXN0RGF0ZXM6IHsgdHlwZTogU3RyaW5nLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZmlsdGVyID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBvcmdhbml6YXRpb246IFtdLFxuICAgICAgICAgICAgcm9sZXM6IFtdLFxuICAgICAgICAgICAgc3RhdHVzOiAnJyxcbiAgICAgICAgICAgIG9yZGVyQnk6ICcnLFxuICAgICAgICAgICAgZGlyZWN0aW9uOiAnJyxcbiAgICAgICAgICAgIHE6ICcnLFxuICAgICAgICAgICAgc3RhcnRfZGF0ZTogJycsXG4gICAgICAgICAgICBlbmRfZGF0ZTogJycsXG4gICAgICAgICAgICBkYXRlX3R5cGU6ICdjcmVhdGVkX2F0JyxcbiAgICAgICAgICAgIHNlbGVjdGVkX2RhdGVfZmlsdGVyOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpc0xvYWRlclZpc2libGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBhZGRVc2VyRm9ybSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVkaXRVc2VyRm9ybSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHVzZXJzRGF0YSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoeyBkYXRhOiBbXSB9KTtcbiAgICAgICAgdmFyIGlzRW1wdHkgPSAoMCwgdnVlXzIucmVmKSh0cnVlKTtcbiAgICAgICAgdmFyIGFsbFNlbGVjdGVkID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgZGVsZXRlTW9kYWwgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBkZWxldGVJZCA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciB0b3RhbFVzZXIgPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIHN0YXR1c0lkID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIHN0YXR1c01vZGFsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc3RhdHVzVmFsdWUgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgc3RhdHVzVXNlcm5hbWUgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgZGVsZXRlVXNlcm5hbWUgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgbG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikodHJ1ZSk7XG4gICAgICAgIHZhciBmZXRjaGluZ1RhYmxlRGF0YSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNlbGVjdGVkSWRzID0gKDAsIHZ1ZV8yLnJlZikoe30pO1xuICAgICAgICB2YXIgY2hlY2tsaXN0ID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgY3VycmVudHBhZ2VEYXRhID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgY2xlYXJEYXRlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZWRpdFVzZXJJZCA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGRhdGVUeXBlID0gKDAsIHZ1ZV8yLnJlZikoJ0FsbCBUaW1lJyk7XG4gICAgICAgIHZhciBkcm9wZG93blJhbmdlID0ge1xuICAgICAgICAgICAgY3JlYXRlZF9hdDogJ1VzZXIgY3JlYXRlZCBkYXRlJyxcbiAgICAgICAgICAgIGxhc3RfbG9nZ2VkX2luOiAnTGFzdCBsb2dpbiBkYXRlJyxcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGZvcm1EYXRhID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB1c2VybmFtZTogJycsXG4gICAgICAgICAgICBmdWxsX25hbWU6ICcnLFxuICAgICAgICAgICAgZW1haWw6ICcnLFxuICAgICAgICAgICAgc3RhdHVzOiAnMScsXG4gICAgICAgICAgICByb2xlX2lkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZm9ybUVycm9yID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB1c2VybmFtZTogJycsXG4gICAgICAgICAgICBmdWxsX25hbWU6ICcnLFxuICAgICAgICAgICAgZW1haWw6ICcnLFxuICAgICAgICAgICAgc3RhdHVzOiAnJyxcbiAgICAgICAgICAgIHJvbGVfaWQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpc0ZpbHRlckFwcGxpZWQgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiAoZmlsdGVyLm9yZ2FuaXphdGlvbi5sZW5ndGggKyBmaWx0ZXIucm9sZXMubGVuZ3RoICE9IDAgfHxcbiAgICAgICAgICAgICAgICBmaWx0ZXIuc3RhdHVzICE9ICcnIHx8XG4gICAgICAgICAgICAgICAgKGZpbHRlci5zdGFydF9kYXRlICYmIGZpbHRlci5lbmRfZGF0ZSkpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlnbm9yZVVwZGF0ZXMgPSAoMCwgY29yZV8xLndhdGNoSWdub3JhYmxlKSh0b2FzdERhdGEsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSwge1xuICAgICAgICAgICAgZmx1c2g6ICdzeW5jJyxcbiAgICAgICAgfSkuaWdub3JlVXBkYXRlcztcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiB0b2FzdERhdGEudmlzaWJpbGl0eTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZ25vcmVUb2FzdFVwZGF0ZSgpO1xuICAgICAgICAgICAgfSwgMjAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaWdub3JlVG9hc3RVcGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZ25vcmVVcGRhdGVzKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9ICcnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjbGVhckRhdGVGaWx0ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSAnJztcbiAgICAgICAgICAgIGNsZWFyRGF0ZVJhbmdlRmlsdGVyKCk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBmaWx0ZXJQYXJhbXMgPSBnZXRGaWx0ZXJQYXJhbXNGcm9tUHJldmlvdXNQYWdlKCk7XG4gICAgICAgICAgICBpZiAoZmlsdGVyUGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWx0ZXJQYXJhbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGtleSA9ICgwLCB1dGlsc18xLmtlYmFiQ2FzZVRvU25ha2VjYXNlKShmaWx0ZXJQYXJhbXNbaV1bMF0pO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBmaWx0ZXJQYXJhbXNbaV1bMV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChbJ3JvbGVzJywgJ29yZ2FuaXphdGlvbiddLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcltrZXldLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtleSA9PT0gJ2RhdGVfdHlwZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVUeXBlLnZhbHVlID0gdmFsdWUuc3BsaXQoJy0nKS5qb2luKCcgJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGdldEZpbHRlclBhcmFtc0Zyb21QcmV2aW91c1BhZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgcXVlcnlTdHJpbmcgPSAoX2EgPSB3aW5kb3cubG9jYXRpb24uaHJlZikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBpZiAocXVlcnlTdHJpbmcpIHtcbiAgICAgICAgICAgICAgICBxdWVyeVN0cmluZyA9IHF1ZXJ5U3RyaW5nLnNwbGl0KCc/JylbMV07XG4gICAgICAgICAgICAgICAgdmFyIHF1ZXJ5UGFyYW1zSW5LZXlWYWwgPSBbXTtcbiAgICAgICAgICAgICAgICB2YXIgcXVlcnlQYXJhbXMgPSBxdWVyeVN0cmluZyA9PT0gbnVsbCB8fCBxdWVyeVN0cmluZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcXVlcnlTdHJpbmcuc3BsaXQoJyYnKTtcbiAgICAgICAgICAgICAgICBpZiAocXVlcnlQYXJhbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWVyeVBhcmFtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9iID0gcXVlcnlQYXJhbXNbaV0uc3BsaXQoJz0nKSwga2V5ID0gX2JbMF0sIHZhbHVlID0gX2JbMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNJbktleVZhbC5wdXNoKFtrZXksIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB2b2lkIDAgPyB2YWx1ZSA6ICcnXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5UGFyYW1zSW5LZXlWYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL3VzZXJzL3BhZ2UvMVwiKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzcG9uc2UuZGF0YS5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5kYXRhLmRhdGFbaV0ucm9sZSA9IHJlc3BvbnNlLmRhdGEuZGF0YVtpXS5yb2xlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCdfJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuam9pbignICcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odXNlcnNEYXRhLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuZGF0YS5sZW5ndGggPyBmYWxzZSA6IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSk7XG4gICAgICAgIHZhciB0ZXh0QnViYmxlZGF0YSA9IGZ1bmN0aW9uIChpZCwgZmllbGQpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoZmllbGQpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdvcmcnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMub3JnYW5pemF0aW9uc1sraWRdO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3JvbGVzJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLnJvbGVzWytpZF07XG4gICAgICAgICAgICAgICAgY2FzZSAnc3RhdHVzJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLnN0YXR1c1sraWRdO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNsZWFyRmlsdGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZmlsdGVyLm9yZ2FuaXphdGlvbiA9IFtdO1xuICAgICAgICAgICAgZmlsdGVyLnJvbGVzID0gW107XG4gICAgICAgICAgICBmaWx0ZXIuc3RhdHVzID0gJyc7XG4gICAgICAgICAgICBmaWx0ZXIuZGlyZWN0aW9uID0gJyc7XG4gICAgICAgICAgICBmaWx0ZXIub3JkZXJCeSA9ICcnO1xuICAgICAgICAgICAgZmlsdGVyLnEgPSAnJztcbiAgICAgICAgICAgIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlciA9ICcnO1xuICAgICAgICAgICAgY2xlYXJEYXRlUmFuZ2VGaWx0ZXIoKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNsZWFyRGF0ZVJhbmdlRmlsdGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY2xlYXJEYXRlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNldERhdGVSYW5nZURhdGUgPSBmdW5jdGlvbiAoc3RhcnREYXRlLCBlbmREYXRlLCBzZWxlY3RlZERhdGUpIHtcbiAgICAgICAgICAgIGZpbHRlci5zdGFydF9kYXRlID0gc3RhcnREYXRlO1xuICAgICAgICAgICAgZmlsdGVyLmVuZF9kYXRlID0gZW5kRGF0ZTtcbiAgICAgICAgICAgIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlciA9IHNlbGVjdGVkRGF0ZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNldERhdGVUeXBlID0gZnVuY3Rpb24gKGRhdGVUeXBlKSB7XG4gICAgICAgICAgICBmaWx0ZXIuZGF0ZV90eXBlID0gZGF0ZVR5cGU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjcmVhdGVVc2VyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB2YXIgcGFzc3dvcmREYXRhID0ge1xuICAgICAgICAgICAgICAgIHBhc3N3b3JkOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkLCAoX2EgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnKSxcbiAgICAgICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLCAoX2IgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL3VzZXInLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZm9ybURhdGEpLCBwYXNzd29yZERhdGEpKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSByZXMuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcmVzLmRhdGEuc3VjY2VzcztcbiAgICAgICAgICAgICAgICBzZXRGb3JtRXJyb3IoKTtcbiAgICAgICAgICAgICAgICBzZXRGb3JtRXJyb3IocmVzLmRhdGEuZXJyb3JzKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBjbGVhckZpbHRlcigpO1xuICAgICAgICAgICAgICAgICAgICBmZXRjaFVzZXJzTGlzdCh1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgYWRkVXNlckZvcm0udmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgZW1wdHlGb3JtRGF0YSgpO1xuICAgICAgICAgICAgICAgICAgICBzZXRGb3JtRXJyb3IoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBlcnJvci5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBhZGRVc2VyRm9ybS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmluYWxseShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGVkaXRVc2VyID0gZnVuY3Rpb24gKHVzZXIpIHtcbiAgICAgICAgICAgIGZvcm1EYXRhLnVzZXJuYW1lID0gdXNlci51c2VybmFtZTtcbiAgICAgICAgICAgIGZvcm1EYXRhLmZ1bGxfbmFtZSA9IHVzZXIuZnVsbF9uYW1lO1xuICAgICAgICAgICAgZm9ybURhdGEuZW1haWwgPSB1c2VyLmVtYWlsO1xuICAgICAgICAgICAgZm9ybURhdGEucm9sZV9pZCA9IHVzZXIucm9sZV9pZDtcbiAgICAgICAgICAgIGVkaXRVc2VySWQudmFsdWUgPSB1c2VyLmlkO1xuICAgICAgICAgICAgZWRpdFVzZXJGb3JtLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGVtcHR5Rm9ybURhdGEgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZm9ybURhdGEpIHtcbiAgICAgICAgICAgICAgICBmb3JtRGF0YVtrZXldID0ga2V5ID09PSAnc3RhdHVzJyA/IDEgOiAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNldEZvcm1FcnJvciA9IGZ1bmN0aW9uIChlcnJvcnMpIHtcbiAgICAgICAgICAgIGlmIChlcnJvcnMgPT09IHZvaWQgMCkgeyBlcnJvcnMgPSB7fTsgfVxuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGVycm9ycykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICBmb3JtRXJyb3Jba2V5XSA9IGVycm9yc1trZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBmb3JtRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUVycm9yW2tleV0gPSAnJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBvcGVuU3RhdHVzTW9kZWwgPSBmdW5jdGlvbiAodXNlcikge1xuICAgICAgICAgICAgc3RhdHVzSWQudmFsdWUgPSB1c2VyLmlkO1xuICAgICAgICAgICAgc3RhdHVzVmFsdWUudmFsdWUgPSB1c2VyLnN0YXR1cztcbiAgICAgICAgICAgIHN0YXR1c01vZGFsLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHN0YXR1c1VzZXJuYW1lLnZhbHVlID0gdXNlci51c2VybmFtZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHVwZGF0ZVVzZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBwYXNzd29yZERhdGEgPSB7XG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmQsIChfYSA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sIChfYiA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJycpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wYXRjaChcIi91c2VyL1wiLmNvbmNhdChlZGl0VXNlcklkLnZhbHVlKSwgX19hc3NpZ24oX19hc3NpZ24oe30sIGZvcm1EYXRhKSwgcGFzc3dvcmREYXRhKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgc2V0Rm9ybUVycm9yKCk7XG4gICAgICAgICAgICAgICAgc2V0Rm9ybUVycm9yKHJlcy5kYXRhLmVycm9ycyk7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgZWRpdFVzZXJGb3JtLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGZldGNoVXNlcnNMaXN0KHVzZXJzRGF0YVsnY3VycmVudF9wYWdlJ10pO1xuICAgICAgICAgICAgICAgICAgICBlZGl0VXNlcklkLnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIGVtcHR5Rm9ybURhdGEoKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0Rm9ybUVycm9yKCk7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBlZGl0VXNlcklkLnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gZXJyb3IuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtcbiAgICAgICAgICAgIGZpbHRlci5vcmdhbml6YXRpb24sXG4gICAgICAgICAgICBmaWx0ZXIucm9sZXMsXG4gICAgICAgICAgICBmaWx0ZXIucSxcbiAgICAgICAgICAgIGZpbHRlci5zdGF0dXMsXG4gICAgICAgICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSxcbiAgICAgICAgICAgIGZpbHRlci5lbmRfZGF0ZSxcbiAgICAgICAgICAgIGZpbHRlci5kYXRlX3R5cGUsXG4gICAgICAgIF07IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZldGNoVXNlcnNMaXN0KHVzZXJzRGF0YVsnY3VycmVudF9wYWdlJ10sIHRydWUpO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGZldGNoVXNlcnNMaXN0KGFjdGl2ZV9wYWdlLCBmaWx0ZXJlZCkge1xuICAgICAgICAgICAgaWYgKGZpbHRlcmVkID09PSB2b2lkIDApIHsgZmlsdGVyZWQgPSBmYWxzZTsgfVxuICAgICAgICAgICAgdmFyIHJvdXRlID0gXCIvdXNlcnMvcGFnZS9cIi5jb25jYXQoZmlsdGVyZWQgPyAnMScgOiBhY3RpdmVfcGFnZSk7XG4gICAgICAgICAgICBmZXRjaGluZ1RhYmxlRGF0YS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB2YXIgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgICAgICAgZm9yICh2YXIgZmlsdGVyX2tleSBpbiBmaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyW2ZpbHRlcl9rZXldKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJbZmlsdGVyX2tleV0ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZChmaWx0ZXJfa2V5LCBmaWx0ZXJbZmlsdGVyX2tleV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChyb3V0ZSwgeyBwYXJhbXM6IHBhcmFtcyB9KVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHVzZXJzRGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEgPyBmYWxzZSA6IHRydWU7XG4gICAgICAgICAgICAgICAgdG90YWxVc2VyLnZhbHVlID0gcmVzcG9uc2UuZGF0YS50b3RhbDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbmFsbHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGZldGNoaW5nVGFibGVEYXRhLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgb3BlbkRlbGV0ZW1vZGVsID0gZnVuY3Rpb24gKHVzZXIpIHtcbiAgICAgICAgICAgIGRlbGV0ZU1vZGFsLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGRlbGV0ZUlkLnZhbHVlID0gdXNlci5pZDtcbiAgICAgICAgICAgIGRlbGV0ZVVzZXJuYW1lLnZhbHVlID0gdXNlci51c2VybmFtZTtcbiAgICAgICAgfTtcbiAgICAgICAgZnVuY3Rpb24gZGVsZXRlVXNlcihpZCkge1xuICAgICAgICAgICAgZGVsZXRlTW9kYWwudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5kZWxldGUoXCIvdXNlci9cIi5jb25jYXQoaWQpKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEubWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBmZXRjaFVzZXJzTGlzdCh1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc29ydCA9IGZ1bmN0aW9uIChwYXJhbSkge1xuICAgICAgICAgICAgZmlsdGVyLmRpcmVjdGlvbiA9XG4gICAgICAgICAgICAgICAgZmlsdGVyLmRpcmVjdGlvbiA9PT0gJ2FzYycgJiYgZmlsdGVyLm9yZGVyQnkgPT09IHBhcmFtID8gJ2Rlc2MnIDogJ2FzYyc7XG4gICAgICAgICAgICBmaWx0ZXIub3JkZXJCeSA9IHBhcmFtO1xuICAgICAgICAgICAgZmV0Y2hVc2Vyc0xpc3QoMSk7XG4gICAgICAgIH07XG4gICAgICAgIGZ1bmN0aW9uIHRvZ2dsZVVzZXJTdGF0dXMoaWQpIHtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBzdGF0dXNNb2RhbC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBhdGNoKFwiL3VzZXIvc3RhdHVzL1wiLmNvbmNhdChpZCkpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGlmIChyZXMuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSByZXMuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgICAgIGZldGNoVXNlcnNMaXN0KHVzZXJzRGF0YVsnY3VycmVudF9wYWdlJ10pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbmFsbHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTEwnKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdG9nZ2xlU2VsZWN0YWxsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY3VycmVudHBhZ2VEYXRhLnZhbHVlID0gdXNlcnNEYXRhLmRhdGEubWFwKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVsnaWQnXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1c2Vyc0RhdGEuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICghY2hlY2tsaXN0LnZhbHVlLmluY2x1ZGVzKHVzZXJzRGF0YS5kYXRhW2ldWydpZCddKSlcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tsaXN0LnZhbHVlW2NoZWNrbGlzdC52YWx1ZS5sZW5ndGggKyBpXSA9IHVzZXJzRGF0YS5kYXRhW2ldWydpZCddO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZWN0ZWRJZHMudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV0gPSBjaGVja2xpc3QudmFsdWU7XG4gICAgICAgICAgICBpZiAoYWxsU2VsZWN0ZWQudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV0pIHtcbiAgICAgICAgICAgICAgICBjaGVja2xpc3QudmFsdWUgPSBjaGVja2xpc3QudmFsdWUuZmlsdGVyKGZ1bmN0aW9uIChuKSB7IHJldHVybiAhT2JqZWN0LnZhbHVlcyhjdXJyZW50cGFnZURhdGEudmFsdWUpLmluY2x1ZGVzKG4pOyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNoZWNrbGlzdC52YWx1ZSA9IGNoZWNrbGlzdC52YWx1ZS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsICE9IG51bGw7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGFsbFNlbGVjdGVkLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dID1cbiAgICAgICAgICAgICAgICAhYWxsU2VsZWN0ZWQudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV07XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gY2hlY2tsaXN0LnZhbHVlOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzZWxlY3RlZElkcy52YWx1ZVt1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddXSA9IFtdO1xuICAgICAgICAgICAgY3VycmVudHBhZ2VEYXRhLnZhbHVlID0gdXNlcnNEYXRhLmRhdGEubWFwKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVsnaWQnXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVja2xpc3QudmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudHBhZ2VEYXRhLnZhbHVlLmluY2x1ZGVzKGNoZWNrbGlzdC52YWx1ZVtpXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJZHMudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV1baV0gPSBjaGVja2xpc3QudmFsdWVbaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZWN0ZWRJZHMudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV0gPSBzZWxlY3RlZElkcy52YWx1ZVt1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddXS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsICE9IG51bGw7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBnZW5lcmF0ZUxhYmVsID0gZnVuY3Rpb24gKGxhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4geyAnLS1sYWJlbCc6IFwiJ1wiLmNvbmNhdChsYWJlbCwgXCInXCIpIH07XG4gICAgICAgIH07XG4gICAgICAgIHZhciBkb3dubG9hZEFsbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciByb3V0ZSA9IFwiL3VzZXJzL2Rvd25sb2FkL1wiO1xuICAgICAgICAgICAgdmFyIHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICAgICAgICAgIHZhciBhbGxQYWdlU2VsZWN0ZWQ7XG4gICAgICAgICAgICBhbGxQYWdlU2VsZWN0ZWQgPSBPYmplY3QudmFsdWVzKHNlbGVjdGVkSWRzLnZhbHVlKS5mbGF0KCk7XG4gICAgICAgICAgICBpZiAoY2hlY2tsaXN0LnZhbHVlLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgZmlsdGVyX2tleSBpbiBmaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlcltmaWx0ZXJfa2V5XS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKGZpbHRlcl9rZXksIGZpbHRlcltmaWx0ZXJfa2V5XSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCd1c2VycycsIGFsbFBhZ2VTZWxlY3RlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KHJvdXRlLCB7IHBhcmFtczogcGFyYW1zIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24vY3N2JyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgICAgICBsaW5rLmRvd25sb2FkID0gcmVzLmhlYWRlcnNbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXS5zcGxpdCgnPScpWzFdO1xuICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgcHJvcHM6IHByb3BzLCB0b2FzdERhdGE6IHRvYXN0RGF0YSwgZmlsdGVyOiBmaWx0ZXIsIGlzTG9hZGVyVmlzaWJsZTogaXNMb2FkZXJWaXNpYmxlLCBhZGRVc2VyRm9ybTogYWRkVXNlckZvcm0sIGVkaXRVc2VyRm9ybTogZWRpdFVzZXJGb3JtLCB1c2Vyc0RhdGE6IHVzZXJzRGF0YSwgaXNFbXB0eTogaXNFbXB0eSwgYWxsU2VsZWN0ZWQ6IGFsbFNlbGVjdGVkLCBkZWxldGVNb2RhbDogZGVsZXRlTW9kYWwsIGRlbGV0ZUlkOiBkZWxldGVJZCwgdG90YWxVc2VyOiB0b3RhbFVzZXIsIHN0YXR1c0lkOiBzdGF0dXNJZCwgc3RhdHVzTW9kYWw6IHN0YXR1c01vZGFsLCBzdGF0dXNWYWx1ZTogc3RhdHVzVmFsdWUsIHN0YXR1c1VzZXJuYW1lOiBzdGF0dXNVc2VybmFtZSwgZGVsZXRlVXNlcm5hbWU6IGRlbGV0ZVVzZXJuYW1lLCBsb2FkZXI6IGxvYWRlciwgZmV0Y2hpbmdUYWJsZURhdGE6IGZldGNoaW5nVGFibGVEYXRhLCBzZWxlY3RlZElkczogc2VsZWN0ZWRJZHMsIGNoZWNrbGlzdDogY2hlY2tsaXN0LCBjdXJyZW50cGFnZURhdGE6IGN1cnJlbnRwYWdlRGF0YSwgY2xlYXJEYXRlOiBjbGVhckRhdGUsIGVkaXRVc2VySWQ6IGVkaXRVc2VySWQsIGRhdGVUeXBlOiBkYXRlVHlwZSwgZHJvcGRvd25SYW5nZTogZHJvcGRvd25SYW5nZSwgZm9ybURhdGE6IGZvcm1EYXRhLCBmb3JtRXJyb3I6IGZvcm1FcnJvciwgaXNGaWx0ZXJBcHBsaWVkOiBpc0ZpbHRlckFwcGxpZWQsIGlnbm9yZVVwZGF0ZXM6IGlnbm9yZVVwZGF0ZXMsIGlnbm9yZVRvYXN0VXBkYXRlOiBpZ25vcmVUb2FzdFVwZGF0ZSwgY2xlYXJEYXRlRmlsdGVyOiBjbGVhckRhdGVGaWx0ZXIsIGdldEZpbHRlclBhcmFtc0Zyb21QcmV2aW91c1BhZ2U6IGdldEZpbHRlclBhcmFtc0Zyb21QcmV2aW91c1BhZ2UsIHRleHRCdWJibGVkYXRhOiB0ZXh0QnViYmxlZGF0YSwgY2xlYXJGaWx0ZXI6IGNsZWFyRmlsdGVyLCBjbGVhckRhdGVSYW5nZUZpbHRlcjogY2xlYXJEYXRlUmFuZ2VGaWx0ZXIsIHNldERhdGVSYW5nZURhdGU6IHNldERhdGVSYW5nZURhdGUsIHNldERhdGVUeXBlOiBzZXREYXRlVHlwZSwgY3JlYXRlVXNlcjogY3JlYXRlVXNlciwgZWRpdFVzZXI6IGVkaXRVc2VyLCBlbXB0eUZvcm1EYXRhOiBlbXB0eUZvcm1EYXRhLCBzZXRGb3JtRXJyb3I6IHNldEZvcm1FcnJvciwgb3BlblN0YXR1c01vZGVsOiBvcGVuU3RhdHVzTW9kZWwsIHVwZGF0ZVVzZXI6IHVwZGF0ZVVzZXIsIGZldGNoVXNlcnNMaXN0OiBmZXRjaFVzZXJzTGlzdCwgb3BlbkRlbGV0ZW1vZGVsOiBvcGVuRGVsZXRlbW9kZWwsIGRlbGV0ZVVzZXI6IGRlbGV0ZVVzZXIsIHNvcnQ6IHNvcnQsIHRvZ2dsZVVzZXJTdGF0dXM6IHRvZ2dsZVVzZXJTdGF0dXMsIGZvcm1hdERhdGU6IGZvcm1hdERhdGUsIHRvZ2dsZVNlbGVjdGFsbDogdG9nZ2xlU2VsZWN0YWxsLCBnZW5lcmF0ZUxhYmVsOiBnZW5lcmF0ZUxhYmVsLCBkb3dubG9hZEFsbDogZG93bmxvYWRBbGwsIExvYWRlcjogTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCwgUG9wdXBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LCBNdWx0aXNlbGVjdDogbXVsdGlzZWxlY3RfMS5kZWZhdWx0LCBQYWdpbmF0aW9uOiBUYWJsZVBhZ2luYXRpb25fdnVlXzEuZGVmYXVsdCwgRGF0ZVJhbmdlV2lkZ2V0OiBEYXRlUmFuZ2VXaWRnZXRfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vY29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIGVuY3J5cHRpb25fMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9lbmNyeXB0aW9uXCIpKTtcbnZhciBtdWx0aXNlbGVjdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJAdnVlZm9ybS9tdWx0aXNlbGVjdFwiKSk7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnVXNlclByb2ZpbGUnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHVzZXI6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBsYW5ndWFnZVByZWZlcmVuY2U6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpc0xvYWRlclZpc2libGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBlZGl0UHJvZmlsZUZvcm0gPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBlZGl0UGFzc3dvcmRGb3JtID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0N1cnJlbnRQYXNzd29yZCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dOZXdQYXNzd29yZCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dDb25maXJtUGFzc3dvcmQgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB1c2VyRGF0YSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoeyB1c2VyX3JvbGU6ICcnIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHVzZXJEYXRhLCBwcm9wcy51c2VyKTtcbiAgICAgICAgICAgIHVzZXJEYXRhLnVzZXJfcm9sZSA9IHVzZXJEYXRhLnVzZXJfcm9sZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGZvcm1EYXRhID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB1c2VybmFtZTogcHJvcHMudXNlci51c2VybmFtZSxcbiAgICAgICAgICAgIGZ1bGxfbmFtZTogcHJvcHMudXNlci5mdWxsX25hbWUsXG4gICAgICAgICAgICBlbWFpbDogcHJvcHMudXNlci5lbWFpbCxcbiAgICAgICAgICAgIGxhbmd1YWdlX3ByZWZlcmVuY2U6IHByb3BzLnVzZXIubGFuZ3VhZ2VfcHJlZmVyZW5jZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlcnJvckZvcm1EYXRhID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB1c2VybmFtZTogJycsXG4gICAgICAgICAgICBmdWxsX25hbWU6ICcnLFxuICAgICAgICAgICAgZW1haWw6ICcnLFxuICAgICAgICAgICAgbGFuZ3VhZ2VfcHJlZmVyZW5jZTogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcGFzc3dvcmREYXRhID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBjdXJyZW50X3Bhc3N3b3JkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZXJyb3JQYXNzd29yZERhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGN1cnJlbnRfcGFzc3dvcmQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpZ25vcmVVcGRhdGVzID0gKDAsIGNvcmVfMS53YXRjaElnbm9yYWJsZSkodG9hc3REYXRhLCBmdW5jdGlvbiAoKSB7IHJldHVybiB1bmRlZmluZWQ7IH0sIHtcbiAgICAgICAgICAgIGZsdXNoOiAnc3luYycsXG4gICAgICAgIH0pLmlnbm9yZVVwZGF0ZXM7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gdG9hc3REYXRhLnZpc2liaWxpdHk7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWdub3JlVG9hc3RVcGRhdGUoKTtcbiAgICAgICAgICAgIH0sIDEwMDAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpZ25vcmVUb2FzdFVwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlnbm9yZVVwZGF0ZXMoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gJyc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvdXNlci92ZXJpZmljYXRpb24vZW1haWwnKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gKF9hID0gcmVzLmRhdGEubWVzc2FnZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IChfYSA9IGVycm9yLmRhdGEubWVzc2FnZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgdXBkYXRlUGFzc3dvcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB2YXIgcGFzc3dvcmRGb3JtRGF0YSA9IHtcbiAgICAgICAgICAgICAgICBjdXJyZW50X3Bhc3N3b3JkOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKHBhc3N3b3JkRGF0YS5jdXJyZW50X3Bhc3N3b3JkLCAoX2EgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnKSxcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShwYXNzd29yZERhdGEucGFzc3dvcmQsIChfYiA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJycpLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShwYXNzd29yZERhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLCAoX2MgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6ICcnKSxcbiAgICAgICAgICAgICAgICBmb3JtX3R5cGU6ICdwYXNzd29yZCcsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy91cGRhdGUvcGFzc3dvcmQnLCBwYXNzd29yZEZvcm1EYXRhKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSByZXMuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcmVzLmRhdGEuc3VjY2VzcztcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBlZGl0UGFzc3dvcmRGb3JtLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBlcnJvclBhc3N3b3JkRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JQYXNzd29yZERhdGFba2V5XSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gcmVzLmRhdGEuZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvclBhc3N3b3JkRGF0YVtrZXldID0gcmVzLmRhdGEuZXJyb3JzW2tleV1bMF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBlcnJvci5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbmFsbHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciB1cGRhdGVQcm9maWxlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvdXBkYXRlL3Byb2ZpbGUnLCBmb3JtRGF0YSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgZWRpdFByb2ZpbGVGb3JtLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBlcnJvckZvcm1EYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvckZvcm1EYXRhW2tleV0gPSAnJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZm9ybURhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJEYXRhW2tleV0gPSBmb3JtRGF0YVtrZXldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gcmVzLmRhdGEuZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvckZvcm1EYXRhW2tleV0gPSByZXMuZGF0YS5lcnJvcnNba2V5XVswXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IGVycm9yLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmluYWxseShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHByb3BzOiBwcm9wcywgdG9hc3REYXRhOiB0b2FzdERhdGEsIGlzTG9hZGVyVmlzaWJsZTogaXNMb2FkZXJWaXNpYmxlLCBlZGl0UHJvZmlsZUZvcm06IGVkaXRQcm9maWxlRm9ybSwgZWRpdFBhc3N3b3JkRm9ybTogZWRpdFBhc3N3b3JkRm9ybSwgc2hvd0N1cnJlbnRQYXNzd29yZDogc2hvd0N1cnJlbnRQYXNzd29yZCwgc2hvd05ld1Bhc3N3b3JkOiBzaG93TmV3UGFzc3dvcmQsIHNob3dDb25maXJtUGFzc3dvcmQ6IHNob3dDb25maXJtUGFzc3dvcmQsIHVzZXJEYXRhOiB1c2VyRGF0YSwgZm9ybURhdGE6IGZvcm1EYXRhLCBlcnJvckZvcm1EYXRhOiBlcnJvckZvcm1EYXRhLCBwYXNzd29yZERhdGE6IHBhc3N3b3JkRGF0YSwgZXJyb3JQYXNzd29yZERhdGE6IGVycm9yUGFzc3dvcmREYXRhLCBpZ25vcmVVcGRhdGVzOiBpZ25vcmVVcGRhdGVzLCBpZ25vcmVUb2FzdFVwZGF0ZTogaWdub3JlVG9hc3RVcGRhdGUsIHJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsOiByZXNlbmRWZXJpZmljYXRpb25FbWFpbCwgdXBkYXRlUGFzc3dvcmQ6IHVwZGF0ZVBhc3N3b3JkLCB1cGRhdGVQcm9maWxlOiB1cGRhdGVQcm9maWxlLCBjYXBpdGFsaXplOiB2dWVfMi5jYXBpdGFsaXplLCBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LCBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsIFBvcHVwTW9kYWw6IFBvcHVwTW9kYWxfdnVlXzEuZGVmYXVsdCwgTXVsdGlzZWxlY3Q6IG11bHRpc2VsZWN0XzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgcmV0dXJuIHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIHByb3BzOiB7XG4gICAgICAgIGVtYWlsOiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJycgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgRW1haWxWZXJpZmljYXRpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vRW1haWxWZXJpZmljYXRpb24udnVlXCIpKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vLi4vLi4vY29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbnZhciBtdWx0aXNlbGVjdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJAdnVlZm9ybS9tdWx0aXNlbGVjdFwiKSk7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIGVuY3J5cHRpb25fMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9lbmNyeXB0aW9uXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBFbWFpbFZlcmlmaWNhdGlvbjogRW1haWxWZXJpZmljYXRpb25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgSG92ZXJUZXh0OiBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgTXVsdGlzZWxlY3Q6IG11bHRpc2VsZWN0XzEuZGVmYXVsdCxcbiAgICAgICAgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgc3RlcCA9ICgwLCB2dWVfMS5yZWYpKDEpO1xuICAgICAgICB2YXIgcHVibGlzaGVyRXhpc3RzID0gKDAsIHZ1ZV8xLnJlZikodHJ1ZSk7XG4gICAgICAgIHZhciBpc0xvYWRlclZpc2libGUgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0ZXh0YXJlYSA9ICgwLCB2dWVfMS5yZWYpKG51bGwpO1xuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBwdWJsaXNoZXJfbmFtZTogJycsXG4gICAgICAgICAgICBwdWJsaXNoZXJfaWQ6ICcnLFxuICAgICAgICAgICAgY291bnRyeTogJycsXG4gICAgICAgICAgICByZWdpc3RyYXRpb25fYWdlbmN5OiAnJyxcbiAgICAgICAgICAgIHJlZ2lzdHJhdGlvbl9udW1iZXI6ICcnLFxuICAgICAgICAgICAgaWRlbnRpZmllcjogJycsXG4gICAgICAgICAgICBwdWJsaXNoZXJfdHlwZTogJycsXG4gICAgICAgICAgICBsaWNlbnNlX2lkOiAnJyxcbiAgICAgICAgICAgIGltYWdlX3VybDogJycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgICBjb250YWN0X2VtYWlsOiAnJyxcbiAgICAgICAgICAgIHdlYnNpdGU6ICcnLFxuICAgICAgICAgICAgYWRkcmVzczogJycsXG4gICAgICAgICAgICBzb3VyY2U6ICcnLFxuICAgICAgICAgICAgcmVjb3JkX2V4Y2x1c2lvbnM6ICcnLFxuICAgICAgICAgICAgdXNlcm5hbWU6ICcnLFxuICAgICAgICAgICAgZnVsbF9uYW1lOiAnJyxcbiAgICAgICAgICAgIGVtYWlsOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaWF0aUVycm9yID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7fSk7XG4gICAgICAgIHZhciBmb3JtRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgcHVibGlzaGVyX25hbWU6ICcnLFxuICAgICAgICAgICAgcHVibGlzaGVyX2lkOiAnJyxcbiAgICAgICAgICAgIGNvdW50cnk6ICcnLFxuICAgICAgICAgICAgcmVnaXN0cmF0aW9uX2FnZW5jeTogJycsXG4gICAgICAgICAgICByZWdpc3RyYXRpb25fbnVtYmVyOiAnJyxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6ICcnLFxuICAgICAgICAgICAgcHVibGlzaGVyX3R5cGU6ICcnLFxuICAgICAgICAgICAgbGljZW5zZV9pZDogJycsXG4gICAgICAgICAgICBpbWFnZV91cmw6ICcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgICAgICAgY29udGFjdF9lbWFpbDogJycsXG4gICAgICAgICAgICB3ZWJzaXRlOiAnJyxcbiAgICAgICAgICAgIGFkZHJlc3M6ICcnLFxuICAgICAgICAgICAgc291cmNlOiAnJyxcbiAgICAgICAgICAgIHJlY29yZF9leGNsdXNpb25zOiAnJyxcbiAgICAgICAgICAgIHVzZXJuYW1lOiAnJyxcbiAgICAgICAgICAgIGZ1bGxfbmFtZTogJycsXG4gICAgICAgICAgICBlbWFpbDogJycsXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICcnLFxuICAgICAgICAgICAgc3RlcDogJzEnLFxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBmb3JtRGF0YS5jb3VudHJ5OyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmb3JtRGF0YS5yZWdpc3RyYXRpb25fYWdlbmN5ID0gJyc7XG4gICAgICAgIH0pO1xuICAgICAgICBmdW5jdGlvbiByZXNpemUoZXZlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldC5zdHlsZS5oZWlnaHQgPSAnYXV0byc7XG4gICAgICAgICAgICBldmVudC50YXJnZXQuc3R5bGUuaGVpZ2h0ID0gXCJcIi5jb25jYXQoZXZlbnQudGFyZ2V0LnNjcm9sbEhlaWdodCwgXCJweFwiKTtcbiAgICAgICAgfVxuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtmb3JtRGF0YS5yZWdpc3RyYXRpb25fYWdlbmN5LCBmb3JtRGF0YS5yZWdpc3RyYXRpb25fbnVtYmVyXTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZm9ybURhdGEuaWRlbnRpZmllciA9IGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9hZ2VuY3lcbiAgICAgICAgICAgICAgICA/IGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9hZ2VuY3kgKyAnLScgKyBmb3JtRGF0YS5yZWdpc3RyYXRpb25fbnVtYmVyXG4gICAgICAgICAgICAgICAgOiBmb3JtRGF0YS5yZWdpc3RyYXRpb25fbnVtYmVyO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgIHZhciByZWdpc3RyYXRpb25fYWdlbmN5ID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgYWdlbmNpZXMgPSBwcm9wcy50eXBlcy5yZWdpc3RyYXRpb25BZ2VuY3k7XG4gICAgICAgICAgICBpZiAoZm9ybURhdGEuY291bnRyeSkge1xuICAgICAgICAgICAgICAgIHZhciB1bmNhdGVnb3JpemVkXzEgPSBbJ1hJJywgJ1hSJ107XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhhZ2VuY2llcykuZmlsdGVyKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIga2V5ID0gX2FbMF07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXkuc3RhcnRzV2l0aChmb3JtRGF0YS5jb3VudHJ5KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5jYXRlZ29yaXplZF8xLnNvbWUoZnVuY3Rpb24gKGspIHsgcmV0dXJuIGtleS5zdGFydHNXaXRoKGspOyB9KTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWdlbmNpZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXNUZXh0RmllbGQgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZmllbGRUeXBlLCBmaWVsZE5hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKChmaWVsZFR5cGUgPT09ICd0ZXh0JyB8fFxuICAgICAgICAgICAgICAgICAgICBmaWVsZFR5cGUgPT09ICdwYXNzd29yZCcgfHxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRUeXBlID09PSAnZW1haWwnKSAmJlxuICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWUgIT0gJ2lkZW50aWZpZXInKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2hlY2tTdGVwID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGZvcm1TdGVwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGZvcm1TdGVwLnRvU3RyaW5nKCkpID09PSBzdGVwLnZhbHVlO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBvYmplY3Qgd2l0aCBtdWx0aS1zdGVwIGZvcm0gaW5mb3JtYXRpb25cbiAgICAgICAgICovXG4gICAgICAgIHZhciByZWdpc3RlckZvcm0gPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIDE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncHVibGlzaGVyX2luZm9ybWF0aW9uLmxhYmVsJyksXG4gICAgICAgICAgICAgICAgaXNfY29tcGxldGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwdWJsaXNoZXJfaW5mb3JtYXRpb24uZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwdWJsaXNoZXJfaW5mb3JtYXRpb24uaG92ZXJfdGV4dCcpLFxuICAgICAgICAgICAgICAgIGZpZWxkczoge1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoZXJfbmFtZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3B1Ymxpc2hlcl9uYW1lLmxhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncHVibGlzaGVyX25hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3B1Ymxpc2hlcl9uYW1lLnBsYWNlaG9sZGVyJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3B1Ymxpc2hlci1uYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncHVibGlzaGVyX25hbWUuaG92ZXJfdGV4dCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdjb2wtc3Bhbi0yIG1iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoZXJfaWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwdWJsaXNoZXJfaWQubGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwdWJsaXNoZXJfaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3B1Ymxpc2hlcl9pZC5wbGFjZWhvbGRlcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdwdWJsaXNoZXItaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwdWJsaXNoZXJfaWQuaG92ZXJfdGV4dCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY291bnRyeToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2NvdW50cnkubGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjb3VudHJ5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdjb3VudHJ5LnBsYWNlaG9sZGVyJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2NvdW50cnlfc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnY291bnRyeS5ob3Zlcl90ZXh0JyksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcy50eXBlcy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTIgcmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0cmF0aW9uX2FnZW5jeToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ29yZ19yZWdpc3RyYXRpb25fYWdlbmN5LmxhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVnaXN0cmF0aW9uX2FnZW5jeScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnb3JnX3JlZ2lzdHJhdGlvbl9hZ2VuY3kucGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncmVnaXN0cmF0aW9uLWFnZW5jeScsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ29yZ19yZWdpc3RyYXRpb25fYWdlbmN5LmhvdmVyX3RleHQnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogcmVnaXN0cmF0aW9uX2FnZW5jeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yIHJlbGF0aXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJhdGlvbl9udW1iZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdyZWdpc3RyYXRpb25fbnVtYmVyLmxhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVnaXN0cmF0aW9uX251bWJlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncmVnaXN0cmF0aW9uX251bWJlci5wbGFjZWhvbGRlcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdyZWdpc3RyYXRpb24tbnVtYmVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncmVnaXN0cmF0aW9uX251bWJlci5ob3Zlcl90ZXh0JyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6IFwiXCIuY29uY2F0KHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2Zvcl9lZycpLCBcIiAxMjM0NTZcIiksXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdpYXRpX29yZ19pZGVudGlmaWVyLmxhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnaWRlbnRpZmllcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2lkZW50aWZpZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdpYXRpX29yZ19pZGVudGlmaWVyLmhvdmVyX3RleHQnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi02JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnaWF0aV9vcmdfaWRlbnRpZmllci5oZWxwX3RleHQnKSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVyX3R5cGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwdWJsaXNoZXJfdHlwZS5sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3B1Ymxpc2hlcl90eXBlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwdWJsaXNoZXJfdHlwZS5wbGFjZWhvbGRlcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdwdWJsaXNoZXItdHlwZScsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3B1Ymxpc2hlcl90eXBlLmhvdmVyX3RleHQnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHMudHlwZXMucHVibGlzaGVyVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yIHJlbGF0aXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGxpY2Vuc2VfaWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdkYXRhX2xpY2Vuc2UubGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdsaWNlbnNlX2lkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdkYXRhX2xpY2Vuc2UucGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnZGF0YS1saWNlbnNlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnZGF0YV9saWNlbnNlLmhvdmVyX3RleHQnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHMudHlwZXMuZGF0YUxpY2Vuc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMiByZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBpbWFnZV91cmw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwdWJsaXNoZXJfbG9nb191cmwubGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdpbWFnZV91cmwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IFwiXCIuY29uY2F0KHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2Zvcl9lZycpLCBcIjogaHR0cDovL215bG9nby5jb20gXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdwdWJsaXNoZXItbG9nby11cmwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncHVibGlzaGVyX2xvZ29fdXJsLmhvdmVyX3RleHQnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yIHJlbGF0aXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnb3JnYW5pc2F0aW9uX2Rlc2MubGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkZXNjcmlwdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnb3JnYW5pc2F0aW9uX2Rlc2MucGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnb3JnYW5pemF0aW9uLWRlc2NyaXB0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ29yZ2FuaXNhdGlvbl9kZXNjLmhvdmVyX3RleHQnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgY29sLXNwYW4tMiBsZzptYi0yIHJlbGF0aXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAyOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2NvbnRhY3RfaW5mby50aXRsZScpLFxuICAgICAgICAgICAgICAgIGlzX2NvbXBsZXRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncHVibGlzaGVyX2luZm9ybWF0aW9uLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICAgICAgZmllbGRzOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhY3RfZW1haWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdjb250YWN0LmxhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY29udGFjdF9lbWFpbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2NvbnRhY3QtZW1haWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdjb250YWN0LmhvdmVyX3RleHQnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCAgbGc6bWItNicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHdlYnNpdGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCd3ZWJzaXRlLmxhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnd2Vic2l0ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogXCJcIi5jb25jYXQodHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnZm9yX2VnJyksIFwiIGh0dHA6Ly9teXdlYnNpdGUuY29tXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICd3ZWJzaXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3dlYnNpdGUuaG92ZXJfdGV4dCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTYnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnYWRkcmVzcy5sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2FkZHJlc3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2FkZHJlc3MucGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnYWRkcmVzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdhZGRyZXNzLmhvdmVyX3RleHQnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgY29sLXNwYW4tMiBsZzptYi02JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIDM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncHVibGlzaGluZ19hZGRpdGlvbmFsX2luZm8udGl0bGUnKSxcbiAgICAgICAgICAgICAgICBpc19jb21wbGV0ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3B1Ymxpc2hpbmdfYWRkaXRpb25hbF9pbmZvLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICAgICAgZmllbGRzOiB7XG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3NvdXJjZS5sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3NvdXJjZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnc291cmNlLnBsYWNlaG9sZGVyJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2NvbnRhY3QtZW1haWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdzb3VyY2UuaG92ZXJfdGV4dCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcy50eXBlcy5zb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItNicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZF9leGNsdXNpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncmVjb3JkX2V4Y2x1c2lvbnMubGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdyZWNvcmRfZXhjbHVzaW9ucycsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncmVjb3JkX2V4Y2x1c2lvbnMucGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncmVjb3JkLWV4Y2x1c2lvbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncmVjb3JkX2V4Y2x1c2lvbnMuaG92ZXJfdGV4dCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCAgY29sLXNwYW4tMiBsZzptYi02JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIDQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnYWRtaW5pc3RyYXRvcl9pbmZvcm1hdGlvbi5sYWJlbCcpLFxuICAgICAgICAgICAgICAgIGlzX2NvbXBsZXRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnYWRtaW5pc3RyYXRvcl9pbmZvcm1hdGlvbi5pYXRpX3JlZ2lzdGVyX2Rlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICAgICAgZmllbGRzOiB7XG4gICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgndXNlcm5hbWUubGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd1c2VybmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgndXNlcm5hbWUucGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAndXNlcm5hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCd1c2VybmFtZS5ob3Zlcl90ZXh0JyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBmdWxsX25hbWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdmdWxsbmFtZS5sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Z1bGxfbmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnZnVsbG5hbWUucGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnZnVsbC1uYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ2NvbC1zdGFydC0xIG1iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnZW1haWxfYWRkcmVzcy5sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdlbWFpbF9hZGRyZXNzLnBsYWNlaG9sZGVyJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3Bhc3N3b3JkLmxhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3Bhc3N3b3JkLnBsYWNlaG9sZGVyJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwYXNzd29yZC5oZWxwX3RleHQnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdwYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3Bhc3N3b3JkLmNvbmZpcm0nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwYXNzd29yZF9jb25maXJtYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3Bhc3N3b3JkLnBsYWNlaG9sZGVyJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3Bhc3N3b3JkLWNvbmZpcm1hdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncGFzc3dvcmQuY29uZmlybV9oZWxwJyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTYnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgNToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdlbWFpbF92ZXJpZmljYXRpb24udGl0bGUnKSxcbiAgICAgICAgICAgICAgICBpc19jb21wbGV0ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2VtYWlsX3ZlcmlmaWNhdGlvbi5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVcGRhdGUgVmFsaWRhdGlvbiBlcnJvcnMgZnJvbSBhcGkgaW50byBlcnJvckRhdGEgYXJyYXlcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVZhbGlkYXRpb25FcnJvcnMoZXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgY2xlYW5WYWxpZGF0aW9uRXJyb3JzKCk7XG4gICAgICAgICAgICBmb3IgKHZhciBmaWVsZCBpbiBlcnJvckRhdGEpIHtcbiAgICAgICAgICAgICAgICBlcnJvckRhdGFbZmllbGRdID0gZXJyb3JSZXNwb25zZVtmaWVsZF0gPyBlcnJvclJlc3BvbnNlW2ZpZWxkXVswXSA6ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVcGRhdGUgVmFsaWRhdGlvbiBlcnJvcnMgZnJvbSBhcGkgaW50byBlcnJvckRhdGEgYXJyYXlcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGNsZWFuVmFsaWRhdGlvbkVycm9ycygpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGZpZWxkIGluIGVycm9yRGF0YSkge1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YVtmaWVsZF0gPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogVXBkYXRlIElBVEkgYW5kIHN5c3RlbSBFcnJvclxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlRXJyb3JzKGVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3QudmFsdWVzKGVycm9yRGF0YSkuZXZlcnkoZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PT0gJyc7IH0pIHx8XG4gICAgICAgICAgICAgICAgc3RlcC52YWx1ZSA9PT0gNCkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oaWF0aUVycm9yLCB0eXBlb2YgZXJyb3JSZXNwb25zZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB7IGVycm9yOiBlcnJvclJlc3BvbnNlIH1cbiAgICAgICAgICAgICAgICAgICAgOiBlcnJvclJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYW5JYXRpRXJyb3JzKCk7XG4gICAgICAgICAgICAgICAgfSwgMzUwMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGNsZWFuSWF0aUVycm9ycygpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGVyciBpbiBpYXRpRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgaWF0aUVycm9yW2Vycl07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFZlcmlmaWVzIHB1Ymxpc2hlclxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gdmVyaWZ5UHVibGlzaGVyKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBmb3JtRGF0YS5pZGVudGlmaWVyID0gXCJcIi5jb25jYXQoZm9ybURhdGEucmVnaXN0cmF0aW9uX2FnZW5jeSwgXCItXCIpLmNvbmNhdChmb3JtRGF0YS5yZWdpc3RyYXRpb25fbnVtYmVyKTtcbiAgICAgICAgICAgIGZvcm1EYXRhLnN0ZXAgPSAnMSc7XG4gICAgICAgICAgICB2YXIgZm9ybSA9IHtcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZCwgKF9hID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbiwgKF9iID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJyksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy9pYXRpL3JlZ2lzdGVyL3B1Ymxpc2hlcicsIF9fYXNzaWduKF9fYXNzaWduKHt9LCBmb3JtRGF0YSksIGZvcm0pKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlcXVlc3QucmVzcG9uc2VVUkwuaW5jbHVkZXMoJ2FjdGl2aXRpZXMnKSkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hlckV4aXN0cy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9ICFyZXNwb25zZS5zdWNjZXNzIHx8ICdlcnJvcnMnIGluIHJlc3BvbnNlID8gcmVzcG9uc2UuZXJyb3JzIDogW107XG4gICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWycxJ10uaXNfY29tcGxldGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAoJ3B1Ymxpc2hlcl9lcnJvcicgaW4gcmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVyRXhpc3RzLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFuVmFsaWRhdGlvbkVycm9ycygpO1xuICAgICAgICAgICAgICAgICAgICByZWdpc3RlckZvcm1bJzEnXS5pc19jb21wbGV0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0ZXAoMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVWYWxpZGF0aW9uRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVFcnJvcnMoZXJyKTtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTdWJtaXRzIHJlZ2lzdHJhdGlvbiBGb3JtXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiB2ZXJpZnlDb250YWN0SW5mb3JtYXRpb24oKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGZvcm1EYXRhLnN0ZXAgPSAnMic7XG4gICAgICAgICAgICB2YXIgZm9ybSA9IHtcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZCwgKF9hID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbiwgKF9iID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJyksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy9pYXRpL3JlZ2lzdGVyL2NvbnRhY3QnLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZm9ybURhdGEpLCBmb3JtKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXF1ZXN0LnJlc3BvbnNlVVJMLmluY2x1ZGVzKCdhY3Rpdml0aWVzJykpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gIXJlc3BvbnNlLnN1Y2Nlc3MgfHwgJ2Vycm9ycycgaW4gcmVzcG9uc2UgPyByZXNwb25zZS5lcnJvcnMgOiBbXTtcbiAgICAgICAgICAgICAgICB1cGRhdGVWYWxpZGF0aW9uRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWycyJ10uaXNfY29tcGxldGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBjbGVhblZhbGlkYXRpb25FcnJvcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWycyJ10uaXNfY29tcGxldGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGVwKDIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlRXJyb3JzKGVycm9yKTtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTdWJtaXRzIHJlZ2lzdHJhdGlvbiBGb3JtXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiB2ZXJpZnlBZGRpdGlvbmFsSW5mb3JtYXRpb24oKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGZvcm1EYXRhLnN0ZXAgPSAnMyc7XG4gICAgICAgICAgICB2YXIgZm9ybSA9IHtcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZCwgKF9hID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbiwgKF9iID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJyksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy9pYXRpL3JlZ2lzdGVyL2FkZGl0aW9uYWwnLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZm9ybURhdGEpLCBmb3JtKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXF1ZXN0LnJlc3BvbnNlVVJMLmluY2x1ZGVzKCdhY3Rpdml0aWVzJykpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gIXJlc3BvbnNlLnN1Y2Nlc3MgfHwgJ2Vycm9ycycgaW4gcmVzcG9uc2UgPyByZXNwb25zZS5lcnJvcnMgOiBbXTtcbiAgICAgICAgICAgICAgICB1cGRhdGVWYWxpZGF0aW9uRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWyczJ10uaXNfY29tcGxldGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBjbGVhblZhbGlkYXRpb25FcnJvcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWyczJ10uaXNfY29tcGxldGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGVwKDMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlRXJyb3JzKGVycm9yKTtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTdWJtaXRzIHJlZ2lzdHJhdGlvbiBGb3JtXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBzdWJtaXRGb3JtKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBmb3JtRGF0YS5zdGVwID0gJzQnO1xuICAgICAgICAgICAgdmFyIGZvcm0gPSB7XG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmQsIChfYSA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sIChfYiA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJycpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvaWF0aS9yZWdpc3RlcicsIF9fYXNzaWduKF9fYXNzaWduKHt9LCBmb3JtRGF0YSksIGZvcm0pKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlcXVlc3QucmVzcG9uc2VVUkwuaW5jbHVkZXMoJ2FjdGl2aXRpZXMnKSkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHZhciBlcnJvcnMgPSAhcmVzcG9uc2Uuc3VjY2VzcyB8fCAnZXJyb3JzJyBpbiByZXNwb25zZSA/IHJlc3BvbnNlLmVycm9ycyA6IFtdO1xuICAgICAgICAgICAgICAgIHVwZGF0ZVZhbGlkYXRpb25FcnJvcnMoZXJyb3JzKTtcbiAgICAgICAgICAgICAgICBjbGVhbklhdGlFcnJvcnMoKTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGlhdGlFcnJvciwgZXJyb3JzKTtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZWdpc3RlckZvcm1bJzQnXS5pc19jb21wbGV0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFuVmFsaWRhdGlvbkVycm9ycygpO1xuICAgICAgICAgICAgICAgICAgICByZWdpc3RlckZvcm1bJzQnXS5pc19jb21wbGV0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0ZXAoNCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlRXJyb3JzKGVycm9yKTtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGdldEN1cnJlbnRTdGVwKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0ZXAudmFsdWUudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiB1cGRhdGVTdGVwKGN1cnJlbnRfc3RlcCkge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRfc3RlcCA9PT0gc3RlcC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHN0ZXAudmFsdWUgKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogY2FsbHMgc3VibWl0IGZ1bmN0aW9uIGJhc2VkIG9uIGN1cnJlbnQgc3RlcCB2YWx1ZVxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZ29Ub05leHRGb3JtKCkge1xuICAgICAgICAgICAgc3dpdGNoIChzdGVwLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICB2ZXJpZnlQdWJsaXNoZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICB2ZXJpZnlDb250YWN0SW5mb3JtYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICB2ZXJpZnlBZGRpdGlvbmFsSW5mb3JtYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBzdWJtaXRGb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGdvVG9QcmV2aW91c0Zvcm0oKSB7XG4gICAgICAgICAgICBjbGVhbklhdGlFcnJvcnMoKTtcbiAgICAgICAgICAgIHN0ZXAudmFsdWUgLT0gMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVnaXN0ZXJGb3JtOiByZWdpc3RlckZvcm0sXG4gICAgICAgICAgICBmb3JtRGF0YTogZm9ybURhdGEsXG4gICAgICAgICAgICBlcnJvckRhdGE6IGVycm9yRGF0YSxcbiAgICAgICAgICAgIHB1Ymxpc2hlckV4aXN0czogcHVibGlzaGVyRXhpc3RzLFxuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlOiBpc0xvYWRlclZpc2libGUsXG4gICAgICAgICAgICBnb1RvTmV4dEZvcm06IGdvVG9OZXh0Rm9ybSxcbiAgICAgICAgICAgIGdvVG9QcmV2aW91c0Zvcm06IGdvVG9QcmV2aW91c0Zvcm0sXG4gICAgICAgICAgICBnZXRDdXJyZW50U3RlcDogZ2V0Q3VycmVudFN0ZXAsXG4gICAgICAgICAgICBjaGVja1N0ZXA6IGNoZWNrU3RlcCxcbiAgICAgICAgICAgIGlhdGlFcnJvcjogaWF0aUVycm9yLFxuICAgICAgICAgICAgaXNUZXh0RmllbGQ6IGlzVGV4dEZpZWxkLFxuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgc3RlcDogc3RlcCxcbiAgICAgICAgICAgIHJlc2l6ZTogcmVzaXplLFxuICAgICAgICAgICAgdGV4dGFyZWE6IHRleHRhcmVhLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnSWF0aVN0YW5kYXJkJyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIGZ1bmN0aW9uIGRvd25sb2FkTWFudWFsKHR5cGUpIHtcbiAgICAgICAgICAgIHZhciBmaWxlTmFtZSA9IHtcbiAgICAgICAgICAgICAgICBhY3Rpdml0eTogJ0lBVElfUHVibGlzaGVyX0FjdGl2aXR5X1N0YW5kYXJkLnBkZicsXG4gICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uOiAnSUFUSV9QdWJsaXNoZXJfT3JnYW5pc2F0aW9uX1N0YW5kYXJkLnBkZicsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIHVybCA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyBcIi9EYXRhL01hbnVhbHMvXCIuY29uY2F0KGZpbGVOYW1lW3R5cGVdKTtcbiAgICAgICAgICAgICgwLCBheGlvc18xLmRlZmF1bHQpKHtcbiAgICAgICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyxcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2UuZGF0YV0sIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lW3R5cGVdO1xuICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCBkb3dubG9hZE1hbnVhbDogZG93bmxvYWRNYW51YWwgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdQdWJsaXNoaW5nQ2hlY2tsaXN0JyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICBmdW5jdGlvbiB0cmlnZ2VyTW9kZWwoKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnb3BlbkFkZE1vZGVsJywgJ3RydWUnKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyaWdnZXJNb2RlbDogdHJpZ2dlck1vZGVsLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBFbWFpbFZlcmlmaWNhdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9FbWFpbFZlcmlmaWNhdGlvbi52dWVcIikpO1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi8uLi8uLi9jb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIG11bHRpc2VsZWN0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkB2dWVmb3JtL211bHRpc2VsZWN0XCIpKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgZW5jcnlwdGlvbl8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2VuY3J5cHRpb25cIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEVtYWlsVmVyaWZpY2F0aW9uOiBFbWFpbFZlcmlmaWNhdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBNdWx0aXNlbGVjdDogbXVsdGlzZWxlY3RfMS5kZWZhdWx0LFxuICAgICAgICBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY291bnRyeToge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBhZ2VuY3k6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgc3RlcCA9ICgwLCB2dWVfMS5yZWYpKDEpO1xuICAgICAgICB2YXIgcHVibGlzaGVyRXhpc3RzID0gKDAsIHZ1ZV8xLnJlZikodHJ1ZSk7XG4gICAgICAgIHZhciBpc0xvYWRlclZpc2libGUgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBhZ2VuY3kgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuYWdlbmN5O1xuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBwdWJsaXNoZXJfbmFtZTogJycsXG4gICAgICAgICAgICBwdWJsaXNoZXJfaWQ6ICcnLFxuICAgICAgICAgICAgY291bnRyeTogJycsXG4gICAgICAgICAgICByZWdpc3RyYXRpb25fYWdlbmN5OiAnJyxcbiAgICAgICAgICAgIHJlZ2lzdHJhdGlvbl9udW1iZXI6ICcnLFxuICAgICAgICAgICAgaWRlbnRpZmllcjogJycsXG4gICAgICAgICAgICB1c2VybmFtZTogJycsXG4gICAgICAgICAgICBmdWxsX25hbWU6ICcnLFxuICAgICAgICAgICAgZW1haWw6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBmb3JtRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgcHVibGlzaGVyX25hbWU6ICcnLFxuICAgICAgICAgICAgcHVibGlzaGVyX2lkOiAnJyxcbiAgICAgICAgICAgIGNvdW50cnk6ICcnLFxuICAgICAgICAgICAgcmVnaXN0cmF0aW9uX2FnZW5jeTogJycsXG4gICAgICAgICAgICByZWdpc3RyYXRpb25fbnVtYmVyOiAnJyxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6ICcnLFxuICAgICAgICAgICAgdXNlcm5hbWU6ICcnLFxuICAgICAgICAgICAgZnVsbF9uYW1lOiAnJyxcbiAgICAgICAgICAgIGVtYWlsOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZvcm1EYXRhLmNvdW50cnk7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9hZ2VuY3kgPSAnJztcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gW2Zvcm1EYXRhLnJlZ2lzdHJhdGlvbl9hZ2VuY3ksIGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9udW1iZXJdOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmb3JtRGF0YS5pZGVudGlmaWVyID0gZm9ybURhdGEucmVnaXN0cmF0aW9uX2FnZW5jeVxuICAgICAgICAgICAgICAgID8gZm9ybURhdGEucmVnaXN0cmF0aW9uX2FnZW5jeSArICctJyArIGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9udW1iZXJcbiAgICAgICAgICAgICAgICA6IGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9udW1iZXI7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgdmFyIHJlZ2lzdHJhdGlvbl9hZ2VuY3kgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBhZ2VuY2llcyA9IGFnZW5jeS52YWx1ZTtcbiAgICAgICAgICAgIGlmIChmb3JtRGF0YS5jb3VudHJ5KSB7XG4gICAgICAgICAgICAgICAgdmFyIHVuY2F0ZWdvcml6ZWRfMSA9IFsnWEknLCAnWFInXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGFnZW5jaWVzKS5maWx0ZXIoZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBrZXkgPSBfYVswXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleS5zdGFydHNXaXRoKGZvcm1EYXRhLmNvdW50cnkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB1bmNhdGVnb3JpemVkXzEuc29tZShmdW5jdGlvbiAoaykgeyByZXR1cm4ga2V5LnN0YXJ0c1dpdGgoayk7IH0pO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBhZ2VuY2llcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpc1RleHRGaWVsZCA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChmaWVsZFR5cGUsIGZpZWxkTmFtZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoKGZpZWxkVHlwZSA9PT0gJ3RleHQnIHx8XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkVHlwZSA9PT0gJ3Bhc3N3b3JkJyB8fFxuICAgICAgICAgICAgICAgICAgICBmaWVsZFR5cGUgPT09ICdlbWFpbCcpICYmXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZSAhPSAnaWRlbnRpZmllcicpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjaGVja1N0ZXAgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZm9ybVN0ZXApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoZm9ybVN0ZXAudG9TdHJpbmcoKSkgPT09IHN0ZXAudmFsdWU7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHJlZ2lzdGVyRm9ybSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgMToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwdWJsaXNoZXJfaW5mb3JtYXRpb24ubGFiZWwnKSxcbiAgICAgICAgICAgICAgICBpc19jb21wbGV0ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3B1Ymxpc2hlcl9pbmZvcm1hdGlvbi5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3B1Ymxpc2hlcl9pbmZvcm1hdGlvbi5ob3Zlcl90ZXh0JyksXG4gICAgICAgICAgICAgICAgZmllbGRzOiB7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlcl9uYW1lOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncHVibGlzaGVyX25hbWUubGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwdWJsaXNoZXJfbmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncHVibGlzaGVyX25hbWUucGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncHVibGlzaGVyLW5hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwdWJsaXNoZXJfbmFtZS5ob3Zlcl90ZXh0JyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ2NvbC1zcGFuLTIgbWItNCBsZzptYi0yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlcl9pZDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3B1Ymxpc2hlcl9pZC5sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3B1Ymxpc2hlcl9pZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncHVibGlzaGVyX2lkLnBsYWNlaG9sZGVyJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3B1Ymxpc2hlci1pZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3B1Ymxpc2hlcl9pZC5ob3Zlcl90ZXh0JyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnY291bnRyeS5sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NvdW50cnknLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2NvdW50cnkucGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnY291bnRyeV9zZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdjb3VudHJ5LmhvdmVyX3RleHQnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzLmNvdW50cnksXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMiByZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25fcmVnaXN0cmF0aW9uX2FnZW5jeToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ29yZ19yZWdpc3RyYXRpb25fYWdlbmN5LmxhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVnaXN0cmF0aW9uX2FnZW5jeScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnb3JnX3JlZ2lzdHJhdGlvbl9hZ2VuY3kucGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncmVnaXN0cmF0aW9uLWFnZW5jeScsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ29yZ19yZWdpc3RyYXRpb25fYWdlbmN5LmhvdmVyX3RleHQnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogcmVnaXN0cmF0aW9uX2FnZW5jeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yIHJlbGF0aXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG9yZ2FuaXphdGlvbl9yZWdpc3RyYXRpb25fbm86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdvcmdfcmVnaXN0cmF0aW9uX25vLmxhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVnaXN0cmF0aW9uX251bWJlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnb3JnX3JlZ2lzdHJhdGlvbl9uby5wbGFjZWhvbGRlcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdyZWdpc3RyYXRpb24tbnVtYmVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnb3JnX3JlZ2lzdHJhdGlvbl9uby5ob3Zlcl90ZXh0JyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6IFwiXCIuY29uY2F0KHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2Zvcl9lZycpLCBcIiAxMjM0NTZcIiksXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGlhdGlfb3JnYW5pemF0aW9uYWxfaWRlbnRpZmllcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2lhdGlfb3JnX2lkZW50aWZpZXIubGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdpZGVudGlmaWVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnaWRlbnRpZmllcicsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2lhdGlfb3JnX2lkZW50aWZpZXIuaG92ZXJfdGV4dCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTYnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdpYXRpX29yZ19pZGVudGlmaWVyLmhlbHBfdGV4dCcpLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgMjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdhZG1pbmlzdHJhdG9yX2luZm9ybWF0aW9uLmxhYmVsJyksXG4gICAgICAgICAgICAgICAgaXNfY29tcGxldGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdhZG1pbmlzdHJhdG9yX2luZm9ybWF0aW9uLnJlZ2lzdGVyX2Rlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnYWRtaW5pc3RyYXRvcl9pbmZvcm1hdGlvbi5ob3Zlcl90ZXh0JyksXG4gICAgICAgICAgICAgICAgZmllbGRzOiB7XG4gICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgndXNlcm5hbWUubGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd1c2VybmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgndXNlcm5hbWUucGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAndXNlcm5hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCd1c2VybmFtZS5ob3Zlcl90ZXh0JyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBmdWxsX25hbWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdmdWxsbmFtZS5sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Z1bGxfbmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnZnVsbG5hbWUucGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnZnVsbC1uYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ2NvbC1zdGFydC0xIG1iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnZW1haWxfYWRkcmVzcy5sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdlbWFpbF9hZGRyZXNzLnBsYWNlaG9sZGVyJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3Bhc3N3b3JkLmxhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3Bhc3N3b3JkLnBsYWNlaG9sZGVyJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBjb25maXJtX3Bhc3N3b3JkOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncGFzc3dvcmQuY29uZmlybScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3Bhc3N3b3JkX2NvbmZpcm1hdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncGFzc3dvcmQucGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncGFzc3dvcmQtY29uZmlybWF0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTYnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgMzoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdlbWFpbF92ZXJpZmljYXRpb24udGl0bGUnKSxcbiAgICAgICAgICAgICAgICBpc19jb21wbGV0ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2VtYWlsX3ZlcmlmaWNhdGlvbi5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB1cGRhdGVGb3JtRXJyb3JzID0gZnVuY3Rpb24gKGVycm9ycykge1xuICAgICAgICAgICAgaWYgKGVycm9ycyA9PT0gdm9pZCAwKSB7IGVycm9ycyA9IFtdOyB9XG4gICAgICAgICAgICB2YXIgZXJyb3JMZW5ndGggPSBPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChlcnJvckxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGVycktleSBpbiBlcnJvckRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhW2VycktleV0gPSAnJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJyb3JMZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgZXJyS2V5IGluIGVycm9yRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGFbZXJyS2V5XSA9IGVycktleSBpbiBlcnJvcnMgPyBlcnJvcnNbZXJyS2V5XVswXSA6ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgZnVuY3Rpb24gdmVyaWZ5UHVibGlzaGVyKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBmb3JtRGF0YS5pZGVudGlmaWVyID0gXCJcIi5jb25jYXQoZm9ybURhdGEucmVnaXN0cmF0aW9uX2FnZW5jeSwgXCItXCIpLmNvbmNhdChmb3JtRGF0YS5yZWdpc3RyYXRpb25fbnVtYmVyKTtcbiAgICAgICAgICAgIHZhciBmb3JtID0ge1xuICAgICAgICAgICAgICAgIHBhc3N3b3JkOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkLCAoX2EgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnKSxcbiAgICAgICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLCAoX2IgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL3ZlcmlmeVB1Ymxpc2hlcicsIF9fYXNzaWduKF9fYXNzaWduKHt9LCBmb3JtRGF0YSksIGZvcm0pKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlcXVlc3QucmVzcG9uc2VVUkwuaW5jbHVkZXMoJ2FjdGl2aXRpZXMnKSkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hlckV4aXN0cy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9ICFyZXNwb25zZS5zdWNjZXNzIHx8ICdlcnJvcnMnIGluIHJlc3BvbnNlID8gcmVzcG9uc2UuZXJyb3JzIDogW107XG4gICAgICAgICAgICAgICAgdXBkYXRlRm9ybUVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgIGlmICgncHVibGlzaGVyX2Vycm9yJyBpbiByZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoZXJFeGlzdHMudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWycxJ10uaXNfY29tcGxldGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnZhbHVlICs9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gc3VibWl0Rm9ybSgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIGZvcm0gPSB7XG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmQsIChfYSA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sIChfYiA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJycpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvcmVnaXN0ZXInLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZm9ybURhdGEpLCBmb3JtKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXF1ZXN0LnJlc3BvbnNlVVJMLmluY2x1ZGVzKCdhY3Rpdml0aWVzJykpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gIXJlc3BvbnNlLnN1Y2Nlc3MgfHwgJ2Vycm9ycycgaW4gcmVzcG9uc2UgPyByZXNwb25zZS5lcnJvcnMgOiBbXTtcbiAgICAgICAgICAgICAgICB1cGRhdGVGb3JtRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgZXJyb3JEYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbiA9IGVycm9ycy5wYXNzd29yZF9jb25maXJtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgPyBlcnJvcnMucGFzc3dvcmRfY29uZmlybWF0aW9uWzBdXG4gICAgICAgICAgICAgICAgICAgIDogZXJyb3JzLnBhc3N3b3JkXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGVycm9ycy5wYXNzd29yZFswXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnJztcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICByZWdpc3RlckZvcm1bJzInXS5pc19jb21wbGV0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAudmFsdWUgKz0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gZXJyb3IucmVzcG9uc2UuZGF0YS5lcnJvcnM7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdXBkYXRlRm9ybUVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24gPSBlcnJvcnMucGFzc3dvcmRfY29uZmlybWF0aW9uXG4gICAgICAgICAgICAgICAgICAgID8gZXJyb3JzLnBhc3N3b3JkX2NvbmZpcm1hdGlvblswXVxuICAgICAgICAgICAgICAgICAgICA6IGVycm9ycy5wYXNzd29yZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBlcnJvcnMucGFzc3dvcmRbMF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogJyc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBnZXRDdXJyZW50U3RlcCgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGVwLnZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZ29Ub05leHRGb3JtKCkge1xuICAgICAgICAgICAgaWYgKHN0ZXAudmFsdWUgPT09IDEpXG4gICAgICAgICAgICAgICAgdmVyaWZ5UHVibGlzaGVyKCk7XG4gICAgICAgICAgICBpZiAoc3RlcC52YWx1ZSA9PT0gMilcbiAgICAgICAgICAgICAgICBzdWJtaXRGb3JtKCk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZ29Ub1ByZXZpb3VzRm9ybSgpIHtcbiAgICAgICAgICAgIHN0ZXAudmFsdWUgLT0gMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVnaXN0ZXJGb3JtOiByZWdpc3RlckZvcm0sXG4gICAgICAgICAgICBmb3JtRGF0YTogZm9ybURhdGEsXG4gICAgICAgICAgICBlcnJvckRhdGE6IGVycm9yRGF0YSxcbiAgICAgICAgICAgIHB1Ymxpc2hlckV4aXN0czogcHVibGlzaGVyRXhpc3RzLFxuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlOiBpc0xvYWRlclZpc2libGUsXG4gICAgICAgICAgICBnb1RvTmV4dEZvcm06IGdvVG9OZXh0Rm9ybSxcbiAgICAgICAgICAgIGdvVG9QcmV2aW91c0Zvcm06IGdvVG9QcmV2aW91c0Zvcm0sXG4gICAgICAgICAgICBnZXRDdXJyZW50U3RlcDogZ2V0Q3VycmVudFN0ZXAsXG4gICAgICAgICAgICBjaGVja1N0ZXA6IGNoZWNrU3RlcCxcbiAgICAgICAgICAgIGlzVGV4dEZpZWxkOiBpc1RleHRGaWVsZCxcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogdHJhbnNsYXRlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnU3VwcG9ydFBhZ2UnLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnQWRtaW5Gb290ZXInLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHN1cGVyQWRtaW46IHsgdHlwZTogQm9vbGVhbiwgcmVxdWlyZWQ6IGZhbHNlLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICBmdW5jdGlvbiBkb3dubG9hZE1hbnVhbCh0eXBlKSB7XG4gICAgICAgICAgICB2YXIgZmlsZU5hbWUgPSB7XG4gICAgICAgICAgICAgICAgdXNlcjogJ0lBVElfUHVibGlzaGVyLVVzZXJfTWFudWFsX3YxLjAucGRmJyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB2YXIgdXJsID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbiArIFwiL0RhdGEvTWFudWFscy9cIi5jb25jYXQoZmlsZU5hbWVbdHlwZV0pO1xuICAgICAgICAgICAgKDAsIGF4aW9zXzEuZGVmYXVsdCkoe1xuICAgICAgICAgICAgICAgIHVybDogdXJsLFxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInLFxuICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtyZXNwb25zZS5kYXRhXSwge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24vcGRmJyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgICAgICBsaW5rLmRvd25sb2FkID0gZmlsZU5hbWVbdHlwZV07XG4gICAgICAgICAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIGRvd25sb2FkTWFudWFsOiBkb3dubG9hZE1hbnVhbCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIHByb3BzOiB7XG4gICAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIGVuY3J5cHRpb25fMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9lbmNyeXB0aW9uXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGludGVudDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBmb3JtRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdXNlcm5hbWU6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGVycm9yRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdXNlcm5hbWU6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlzTG9hZGVyVmlzaWJsZSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgZnVuY3Rpb24gbG9naW4oKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZvcm07XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYikge1xuICAgICAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBmb3JtID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWU6IGZvcm1EYXRhLnVzZXJuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ6ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmQsIChfYSA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgIC5wb3N0KCcvbG9naW4nLCBmb3JtKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEudXNlcm5hbWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wYXNzd29yZCA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoJ2Vycm9ycycgaW4gcmVzcG9uc2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9IGVycm9yLnJlc3BvbnNlLmRhdGEuZXJyb3JzO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLnVzZXJuYW1lID0gZXJyb3JzLnVzZXJuYW1lID8gZXJyb3JzLnVzZXJuYW1lWzBdIDogJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEucGFzc3dvcmQgPSBlcnJvcnMucGFzc3dvcmQgPyBlcnJvcnMucGFzc3dvcmRbMF0gOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZvcm1EYXRhOiBmb3JtRGF0YSxcbiAgICAgICAgICAgIGVycm9yRGF0YTogZXJyb3JEYXRhLFxuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlOiBpc0xvYWRlclZpc2libGUsXG4gICAgICAgICAgICBsb2dpbjogbG9naW4sXG4gICAgICAgICAgICB0cmFuc2xhdGU6IHRyYW5zbGF0ZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdXZWJGb290ZXInLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgZnVuY3Rpb24gZG93bmxvYWRNYW51YWwodHlwZSkge1xuICAgICAgICAgICAgdmFyIGZpbGVOYW1lID0ge1xuICAgICAgICAgICAgICAgIHVzZXI6ICdJQVRJX1B1Ymxpc2hlci1Vc2VyX01hbnVhbF92MS4wLnBkZicsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIHVybCA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyBcIi9EYXRhL01hbnVhbHMvXCIuY29uY2F0KGZpbGVOYW1lW3R5cGVdKTtcbiAgICAgICAgICAgICgwLCBheGlvc18xLmRlZmF1bHQpKHtcbiAgICAgICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyxcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2UuZGF0YV0sIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lW3R5cGVdO1xuICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCBkb3dubG9hZE1hbnVhbDogZG93bmxvYWRNYW51YWwgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIE5hdkRyb3Bkb3duX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi8uLi9jb21wb25lbnRzL05hdkRyb3Bkb3duLnZ1ZVwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgTmF2RHJvcGRvd246IE5hdkRyb3Bkb3duX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICB0aXRsZTogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGF1dGg6IHsgdHlwZTogU3RyaW5nLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBzdXBlckFkbWluOiB7IHR5cGU6IEJvb2xlYW4sIHJlcXVpcmVkOiBmYWxzZSwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnbm8tbmF2Jyk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnbm8tbmF2Jyk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHJldHVybiB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKipcbiAqIEZpcnN0IHdlIHdpbGwgbG9hZCBhbGwgb2YgdGhpcyBwcm9qZWN0J3MgSmF2YVNjcmlwdCBkZXBlbmRlbmNpZXMgd2hpY2hcbiAqIGluY2x1ZGVzIFZ1ZSBhbmQgb3RoZXIgbGlicmFyaWVzLiBJdCBpcyBhIGdyZWF0IHN0YXJ0aW5nIHBvaW50IHdoZW5cbiAqIGJ1aWxkaW5nIHJvYnVzdCwgcG93ZXJmdWwgd2ViIGFwcGxpY2F0aW9ucyB1c2luZyBWdWUgYW5kIExhcmF2ZWwuXG4gKi9cbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlM19zbW9vdGhfc2Nyb2xsXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcInZ1ZTMtc21vb3RoLXNjcm9sbFwiKSk7XG52YXIgc3ZnX3Z1ZTNfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwic3ZnLXZ1ZTNcIikpO1xudmFyIFdlYkhlYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy93ZWIvcGFydGlhbHMvV2ViSGVhZGVyLnZ1ZVwiKSk7XG52YXIgV2ViRm9vdGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJGb290ZXIudnVlXCIpKTtcbnZhciBBZG1pbkZvb3Rlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy93ZWIvcGFydGlhbHMvQWRtaW5Gb290ZXIudnVlXCIpKTtcbnZhciBXZWxjb21lUGFnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy93ZWIvV2VsY29tZVBhZ2UudnVlXCIpKTtcbnZhciBSZWdpc3RlclBhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvd2ViL1JlZ2lzdGVyUGFnZS52dWVcIikpO1xudmFyIEFib3V0UGFnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy93ZWIvQWJvdXRQYWdlLnZ1ZVwiKSk7XG52YXIgU3VwcG9ydFBhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvd2ViL1N1cHBvcnRQYWdlLnZ1ZVwiKSk7XG52YXIgSWF0aVN0YW5kYXJkX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3dlYi9JYXRpU3RhbmRhcmQudnVlXCIpKTtcbnZhciBQdWJsaXNoaW5nQ2hlY2tsaXN0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3dlYi9QdWJsaXNoaW5nQ2hlY2tsaXN0LnZ1ZVwiKSk7XG52YXIgSWF0aVJlZ2lzdGVyUGFnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy93ZWIvSWF0aVJlZ2lzdGVyUGFnZS52dWVcIikpO1xuLyoqXG4gKiBWdWUgY29tcG9uZW50cyBmb3IgQWN0aXZpdGllcyBMaXN0aW5nXG4gKi9cbnZhciBSZXN1bHREZXRhaWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHREZXRhaWwudnVlXCIpKTtcbnZhciBSZXN1bHRMaXN0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0TGlzdC52dWVcIikpO1xudmFyIEluZGljYXRvckRldGFpbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL0luZGljYXRvckRldGFpbC52dWVcIikpO1xudmFyIEluZGljYXRvckxpc3RfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9JbmRpY2F0b3JMaXN0LnZ1ZVwiKSk7XG52YXIgUGVyaW9kc0RldGFpbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL1BlcmlvZHNEZXRhaWwudnVlXCIpKTtcbnZhciBQZXJpb2RzTGlzdF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL1BlcmlvZHNMaXN0LnZ1ZVwiKSk7XG52YXIgVHJhbnNhY3Rpb25MaXN0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkxpc3QudnVlXCIpKTtcbnZhciBUcmFuc2FjdGlvbkRldGFpbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25EZXRhaWwudnVlXCIpKTtcbnZhciBEZXNjcmlwdGlvbkZvcm1fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vY29tcG9uZW50cy9EZXNjcmlwdGlvbkZvcm0udnVlXCIpKTtcbnZhciBFbGVtZW50c05vdGVfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRWxlbWVudHNOb3RlLnZ1ZVwiKSk7XG52YXIgQWN0aXZpdHlJbmRleF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eUluZGV4LnZ1ZVwiKSk7XG52YXIgQWRtaW5IZWFkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vY29tcG9uZW50cy9BZG1pbkhlYWRlci52dWVcIikpO1xudmFyIEFjdGl2aXR5RGV0YWlsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5RGV0YWlsLnZ1ZVwiKSk7XG52YXIgU2lkZWJhckhlbHBCbG9ja192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9TaWRlYmFySGVscEJsb2NrLnZ1ZVwiKSk7XG52YXIgQWN0aXZpdHlVcGxvYWRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvaW1wb3J0L0FjdGl2aXR5VXBsb2FkLnZ1ZVwiKSk7XG52YXIgQWN0aXZpdHlYbHNVcGxvYWRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvaW1wb3J0L0FjdGl2aXR5WGxzVXBsb2FkLnZ1ZVwiKSk7XG52YXIgRGFzaGJvYXJkUGFnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkUGFnZS52dWVcIikpO1xudmFyIEltcG9ydExpc3RfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvaW1wb3J0L0ltcG9ydExpc3QudnVlXCIpKTtcbnZhciBYbHNMaXN0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2ltcG9ydC9YbHNMaXN0LnZ1ZVwiKSk7XG4vKipcbiAqIFNldHRpbmcgcGFnZVxuICovXG52YXIgU2V0dGluZ1BhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvc2V0dGluZy9TZXR0aW5nUGFnZS52dWVcIikpO1xuLy9BY3Rpdml0eSBEZWZhdWx0IFZhbHVlc1xudmFyIEFjdGl2aXR5RGVmYXVsdFZhbHVlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5RGVmYXVsdFZhbHVlLnZ1ZVwiKSk7XG4vKipcbiAqIHZ1ZSBjb21wb25lbnQgZm9yIHBhc3N3b3JkIHJlc2V0XG4gKi9cbnZhciBSZXNldFBhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvcmVzZXQvUmVzZXRQYWdlLnZ1ZVwiKSk7XG52YXIgUGFzc3dvcmRSZWNvdmVyeV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9yZXNldC9QYXNzd29yZFJlY292ZXJ5LnZ1ZVwiKSk7XG52YXIgUmVzZXRQYXNzd29yZF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9yZXNldC9SZXNldFBhc3N3b3JkLnZ1ZVwiKSk7XG4vKipcbiAqIE9yZ2FuaXNhdGlvbiBkYXRhXG4gKi9cbnZhciBPcmdhbmlzYXRpb25EYXRhX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25EYXRhLnZ1ZVwiKSk7XG4vKipcbiAqIE9yZ2FuaXNhdGlvbiBMaXN0IC8gUHJveHlcbiAqL1xudmFyIE9yZ2FuaXNhdGlvbkxpc3RfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvc3VwZXJhZG1pbi9PcmdhbmlzYXRpb25MaXN0LnZ1ZVwiKSk7XG52YXIgQWRtaW5CYXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL0FkbWluQmFyLnZ1ZVwiKSk7XG4vKipcbiAqIFVzZXIgTW9kdWxlIGNvbXBvbmVudHNcbiAqL1xudmFyIFVzZXJQcm9maWxlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3VzZXIvVXNlclByb2ZpbGUudnVlXCIpKTtcbnZhciBVc2VyTGlzdGluZ192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy91c2VyL1VzZXJMaXN0aW5nLnZ1ZVwiKSk7XG4vKipcbiAqIEF1ZGl0IGNvbXBvbmVudFxuICovXG52YXIgQXVkaXRMaXN0aW5nX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2F1ZGl0L0F1ZGl0TGlzdGluZy52dWVcIikpO1xuLyoqXG4gKiBBZGRpdGlvbmFsIENvbXBvbmVudHNcbiAqL1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9jb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9jb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWVcIikpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9jb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIFN5c3RlbVZlcnNpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvc3VwZXJhZG1pbi9TeXN0ZW1WZXJzaW9uLnZ1ZVwiKSk7XG52YXIgdnVlM19hcGV4Y2hhcnRzXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcInZ1ZTMtYXBleGNoYXJ0c1wiKSk7XG52YXIgYXBwID0gKDAsIHZ1ZV8xLmNyZWF0ZUFwcCkoe30pO1xuYXBwLnVzZSh2dWUzX2FwZXhjaGFydHNfMS5kZWZhdWx0KTtcbi8qKlxuICogR2xvYmFsIENvbXBvbmVudHNcbiAqL1xuYXBwXG4gICAgLmNvbXBvbmVudCgnV2ViSGVhZGVyJywgV2ViSGVhZGVyX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnV2ViRm9vdGVyJywgV2ViRm9vdGVyX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnQWRtaW5Gb290ZXInLCBBZG1pbkZvb3Rlcl92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1dlbGNvbWVTaWduaW4nLCBXZWxjb21lUGFnZV92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1JlZ2lzdGVyRm9ybScsIFJlZ2lzdGVyUGFnZV92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ0lhdGlSZWdpc3RlckZvcm0nLCBJYXRpUmVnaXN0ZXJQYWdlX3Z1ZV8xLmRlZmF1bHQpO1xuLyoqXG4gKiByZWdpc3RlcmluZyB3ZWIgcG9ydGFsIHBhZ2VzXG4gKi9cbmFwcFxuICAgIC5jb21wb25lbnQoJ0Fib3V0UGFnZScsIEFib3V0UGFnZV92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1N1cHBvcnRQYWdlJywgU3VwcG9ydFBhZ2VfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdJYXRpU3RhbmRhcmQnLCBJYXRpU3RhbmRhcmRfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdQdWJsaXNoaW5nQ2hlY2tsaXN0JywgUHVibGlzaGluZ0NoZWNrbGlzdF92dWVfMS5kZWZhdWx0KTtcbi8qKlxuICogUmVnaXN0ZXJpbmcgdnVlIGNvbXBvbmVudCBmb3IgYWN0aXZpdHkgbGlzdGluZ1xuICovXG5hcHBcbiAgICAuY29tcG9uZW50KCdBY3Rpdml0eVRlbXBsYXRlJywgQWN0aXZpdHlJbmRleF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ0xvZ2dlZGluSGVhZGVyJywgQWRtaW5IZWFkZXJfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdBY3Rpdml0aWVzRGV0YWlsJywgQWN0aXZpdHlEZXRhaWxfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdEZXNjcmlwdGlvbkZvcm0nLCBEZXNjcmlwdGlvbkZvcm1fdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdFbGVtZW50c05vdGUnLCBFbGVtZW50c05vdGVfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdSZXN1bHREZXRhaWwnLCBSZXN1bHREZXRhaWxfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdSZXN1bHRMaXN0JywgUmVzdWx0TGlzdF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ0luZGljYXRvckRldGFpbCcsIEluZGljYXRvckRldGFpbF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ0luZGljYXRvckxpc3QnLCBJbmRpY2F0b3JMaXN0X3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnUGVyaW9kc0RldGFpbCcsIFBlcmlvZHNEZXRhaWxfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdQZXJpb2RzTGlzdCcsIFBlcmlvZHNMaXN0X3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnVHJhbnNhY3Rpb25MaXN0JywgVHJhbnNhY3Rpb25MaXN0X3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnVHJhbnNhY3Rpb25EZXRhaWwnLCBUcmFuc2FjdGlvbkRldGFpbF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1NpZGViYXJIZWxwQmxvY2snLCBTaWRlYmFySGVscEJsb2NrX3Z1ZV8xLmRlZmF1bHQpO1xuLypcbiAqIEltcG9ydCBwYWdlXG4gKi9cbmFwcFxuICAgIC5jb21wb25lbnQoJ0FjdGl2aXR5VXBsb2FkJywgQWN0aXZpdHlVcGxvYWRfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdBY3Rpdml0eVhsc1VwbG9hZCcsIEFjdGl2aXR5WGxzVXBsb2FkX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnSW1wb3J0TGlzdCcsIEltcG9ydExpc3RfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdYbHNMaXN0JywgWGxzTGlzdF92dWVfMS5kZWZhdWx0KTtcbi8vIGRhc2hib2FyZCBwYWdlXG5hcHAuY29tcG9uZW50KCdEYXNoYm9hcmRQYWdlJywgRGFzaGJvYXJkUGFnZV92dWVfMS5kZWZhdWx0KTtcbi8qXG4gKiBTZXR0aW5nIHBhZ2VcbiAqL1xuYXBwLmNvbXBvbmVudCgnU2V0dGluZ1BhZ2UnLCBTZXR0aW5nUGFnZV92dWVfMS5kZWZhdWx0KTtcbmFwcC5jb21wb25lbnQoJ1N5c3RlbVZlcnNpb24nLCBTeXN0ZW1WZXJzaW9uX3Z1ZV8xLmRlZmF1bHQpO1xuYXBwLmNvbXBvbmVudCgnQWN0aXZpdHlEZWZhdWx0VmFsdWVzJywgQWN0aXZpdHlEZWZhdWx0VmFsdWVfdnVlXzEuZGVmYXVsdCk7XG4vKlxuUmVnaXN0ZXJpbmcgdnVlIGNvbXBvbmVudCBmb3IgcGFzc3dvcmQgcmVzZXRcbiovXG5hcHBcbiAgICAuY29tcG9uZW50KCdSZXNldFBhZ2UnLCBSZXNldFBhZ2VfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdQYXNzd29yZFJlY292ZXJ5JywgUGFzc3dvcmRSZWNvdmVyeV92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1Jlc2V0UGFzc3dvcmQnLCBSZXNldFBhc3N3b3JkX3Z1ZV8xLmRlZmF1bHQpO1xuLyoqXG4gKiBSZWdpc3RlcmluZyB1c2VyIG1vZHVsZSByZWxhdGVkIHZ1ZSBjb21wb25lbnRzXG4gKi9cbmFwcC5jb21wb25lbnQoJ1VzZXJQcm9maWxlJywgVXNlclByb2ZpbGVfdnVlXzEuZGVmYXVsdCkuY29tcG9uZW50KCdVc2VyTGlzdGluZycsIFVzZXJMaXN0aW5nX3Z1ZV8xLmRlZmF1bHQpO1xuLyoqXG4gKiBSZWdpc3RlcmluZyBBZGRpdGlvbmFsIENvbXBvbmVudHNcbiAqL1xuYXBwLmNvbXBvbmVudCgnSG92ZXJUZXh0JywgSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQpO1xuYXBwLmNvbXBvbmVudCgnUGFnZVRpdGxlJywgUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQpO1xuYXBwLmNvbXBvbmVudCgnTG9hZGluZ1N0YXRlJywgTG9hZGVyX3Z1ZV8xLmRlZmF1bHQpO1xuLyoqXG4gKiBPcmdhbmlzYXRpb24gZGF0YVxuICovXG5hcHAuY29tcG9uZW50KCdPcmdhbmlzYXRpb25EYXRhJywgT3JnYW5pc2F0aW9uRGF0YV92dWVfMS5kZWZhdWx0KTtcbi8qKlxuICogUHJveHlcbiAqL1xuYXBwLmNvbXBvbmVudCgnT3JnYW5pc2F0aW9uTGlzdCcsIE9yZ2FuaXNhdGlvbkxpc3RfdnVlXzEuZGVmYXVsdCk7XG5hcHAuY29tcG9uZW50KCdBZG1pbkJhcicsIEFkbWluQmFyX3Z1ZV8xLmRlZmF1bHQpO1xuLyoqXG4gKiBBdWRpdFxuICovXG5hcHAuY29tcG9uZW50KCdBdWRpdExpc3RpbmcnLCBBdWRpdExpc3RpbmdfdnVlXzEuZGVmYXVsdCk7XG4vKipcbiAqIEV4dGVuc2lvbiB0byBpbmxpbmUgU1ZHIGZpbGVzIHdpdGggVnVlLmpzIGFuZCBvcHRpbWl6ZSB0aGVtIGF1dG9tYXRpY2FsbHkgd2l0aCBTVkdPXG4gKi9cbmFwcC51c2Uoc3ZnX3Z1ZTNfMS5kZWZhdWx0KTtcbmFwcC51c2UodnVlM19zbW9vdGhfc2Nyb2xsXzEuZGVmYXVsdCk7XG4vLyBkZXRlY3Qgc2Nyb2xsIHVwIG9yIGRvd25cbnZhciBsYXN0U2Nyb2xsVG9wID0gMCwgYWZmaXhUeXBlID0gJ3N0aWNreS1ub25lJztcbnZhciBzdGlja3lTaWRlYmFyID0gZnVuY3Rpb24gKGVsLCBwYXJlbnRXcmFwcGVyKSB7XG4gICAgLy9zdGlja3kgZWxlbWVudC9jaGlsZCBkYXRhXG4gICAgdmFyIHN0aWNreUVsZW1lbnQgPSBlbC5maXJzdENoaWxkLCBlbEhlaWdodCA9IHN0aWNreUVsZW1lbnQub2Zmc2V0SGVpZ2h0LCBzdGlja3lDdXJyZW50VG9wID0gc3RpY2t5RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AsIHN0aWNreUN1cnJlbnRCb3R0b20gPSBzdGlja3lFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbTtcbiAgICAvL3N0aWNreSBlbGVtZW50J3MgcGFyZW50L3dyYXBwZXIgZGF0YVxuICAgIHZhciBlbFdpZHRoID0gZWwub2Zmc2V0V2lkdGgsIGVsU2Nyb2xsTGVmdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQsIGVsU2Nyb2xsVG9wID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wLCBlbFNjcm9sbEJvdHRvbSA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSwgdmlld3BvcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgLy8gd2luZG93L2RvY3VtZW50IGRhdGFcbiAgICB2YXIgY3VycmVudFdpbmRvd3NTY3JvbGxQb3NpdGlvbiA9IHdpbmRvdy5wYWdlWU9mZnNldCwgdGFyZ2V0U2Nyb2xsUG9zaXRpb24gPSBlbFNjcm9sbEJvdHRvbSArIGN1cnJlbnRXaW5kb3dzU2Nyb2xsUG9zaXRpb24gLSB2aWV3cG9ydEhlaWdodDtcbiAgICAvLyBwYXJlbnQgd3JhcHBlciAvIHN0aWNreSBib3VuZGFyeVxuICAgIHZhciBlbFBhcmVudCA9IHN0aWNreUVsZW1lbnQuY2xvc2VzdChwYXJlbnRXcmFwcGVyKSwgZWxQYXJlbnRCb3R0b20gPSBlbFBhcmVudCA9PT0gbnVsbCB8fCBlbFBhcmVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogZWxQYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tO1xuICAgIC8vIHNjcm9sbCBiZWhhdmlvdXJcbiAgICB2YXIgaXNTY3JvbGxEb3duID0gY3VycmVudFdpbmRvd3NTY3JvbGxQb3NpdGlvbiA+IGxhc3RTY3JvbGxUb3AgPyB0cnVlIDogZmFsc2U7XG4gICAgdmFyIGlzU2Nyb2xsVXAgPSAhaXNTY3JvbGxEb3duO1xuICAgIGxhc3RTY3JvbGxUb3AgPVxuICAgICAgICBjdXJyZW50V2luZG93c1Njcm9sbFBvc2l0aW9uIDw9IDAgPyAwIDogY3VycmVudFdpbmRvd3NTY3JvbGxQb3NpdGlvbjtcbiAgICBmdW5jdGlvbiBzY3JvbGxEb3duU3RpY2t5Qm90dG9tKCkge1xuICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uIDogYWJzb2x1dGU7ICB3aWR0aDoyODBweDsgYm90dG9tOiAxNnB4XCI7XG4gICAgICAgIGFmZml4VHlwZSA9ICdzdGlja3ktYm91bmQnO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzY3JvbGxEb3duU3RpY2t5VG9wKCkge1xuICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiByZWxhdGl2ZTsgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCBcIi5jb25jYXQoc3RpY2t5Q3VycmVudFRvcCAtIGVsU2Nyb2xsVG9wLCBcInB4LCAwKTtcIik7XG4gICAgICAgIGFmZml4VHlwZSA9ICdzdGlja3ktdHJhbnNsYXRlJztcbiAgICB9XG4gICAgZnVuY3Rpb24gc2Nyb2xsRG93blN0aWNreVRyYW5zbGF0ZSgpIHtcbiAgICAgICAge1xuICAgICAgICAgICAgKHdpbmRvdy5zY3JvbGxZLFxuICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxZICtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCArXG4gICAgICAgICAgICAgICAgICAgIDQ3NiAtXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQgPlxuICAgICAgICAgICAgICAgICAgICAwKVxuICAgICAgICAgICAgICAgID8gd2luZG93LnNjcm9sbFkgK1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0ICtcbiAgICAgICAgICAgICAgICAgICAgNDc2IC1cbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodFxuICAgICAgICAgICAgICAgIDogMTY7XG4gICAgICAgIH1cbiAgICAgICAgc3RpY2t5RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjogZml4ZWQ7IHRvcDogYXV0bzsgbGVmdDogXCIuY29uY2F0KGVsU2Nyb2xsTGVmdCwgXCI7IGJvdHRvbTpcIikuY29uY2F0KCh3aW5kb3cuc2Nyb2xsWSxcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxZICtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0ICtcbiAgICAgICAgICAgICAgICA0NzYgLVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQgPlxuICAgICAgICAgICAgICAgIDE2KVxuICAgICAgICAgICAgPyB3aW5kb3cuc2Nyb2xsWSArXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCArXG4gICAgICAgICAgICAgICAgNDc2IC1cbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgICA6IDE2LCBcInB4OyB3aWR0aDogXCIpLmNvbmNhdChlbFdpZHRoLCBcInB4XCIpO1xuICAgICAgICBhZmZpeFR5cGUgPSAnc3RpY2t5LWJvdHRvbSc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcm9sbERvd25GaXhlZFRvcCgpIHtcbiAgICAgICAgZWwuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246IGZpeGVkOyB0b3A6MHB4XCI7XG4gICAgICAgIGFmZml4VHlwZSA9ICdzdGlja3ktdHJhbnNsYXRlJztcbiAgICB9XG4gICAgZnVuY3Rpb24gc2Nyb2xsRG93blN0aWNreU5vbmUoKSB7XG4gICAgICAgIGlmICh0YXJnZXRTY3JvbGxQb3NpdGlvbiA8PSBjdXJyZW50V2luZG93c1Njcm9sbFBvc2l0aW9uKSB7XG4gICAgICAgICAgICBpZiAodmlld3BvcnRIZWlnaHQgKyB3aW5kb3cuc2Nyb2xsWSArIDQ1MCA+PSBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCkge1xuICAgICAgICAgICAgICAgIGVsLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBzdGlja3k7IHRvcDowcHhcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0aWNreUVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246IGZpeGVkOyB0b3A6IGF1dG87IGxlZnQ6IFwiLmNvbmNhdChlbFNjcm9sbExlZnQsIFwiOyBib3R0b206IDA7IHdpZHRoOiBcIikuY29uY2F0KGVsV2lkdGgsIFwicHhcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhZmZpeFR5cGUgPSAnc3RpY2t5LWJvdHRvbSc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gc2Nyb2xsRG93blN0aWNreUJvdW5kKCkge1xuICAgICAgICBpZiAoZWxQYXJlbnRCb3R0b20gJiYgZWxQYXJlbnRCb3R0b20gPCBzdGlja3lDdXJyZW50Qm90dG9tKSB7XG4gICAgICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uIDogYWJzb2x1dGU7ICB3aWR0aDoyODBweDsgYm90dG9tOiAxNnB4XCI7XG4gICAgICAgICAgICBhZmZpeFR5cGUgPSAnc3RpY2t5LWJvdW5kJztcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVTY3JvbGxEb3duKCkge1xuICAgICAgICBzd2l0Y2ggKGFmZml4VHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnc3RpY2t5LXRvcCc6XG4gICAgICAgICAgICAgICAgc2Nyb2xsRG93blN0aWNreVRvcCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3RpY2t5LWJvdHRvbSc6XG4gICAgICAgICAgICAgICAgaWYgKGVsUGFyZW50Qm90dG9tICYmIGVsUGFyZW50Qm90dG9tIDwgc3RpY2t5Q3VycmVudEJvdHRvbSkge1xuICAgICAgICAgICAgICAgICAgICBzY3JvbGxEb3duU3RpY2t5Qm90dG9tKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3RpY2t5LXRyYW5zbGF0ZSc6XG4gICAgICAgICAgICAgICAgaWYgKHN0aWNreUN1cnJlbnRCb3R0b20gPD0gdmlld3BvcnRIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsRG93blN0aWNreVRyYW5zbGF0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2ZpeGVkLXRvcCc6XG4gICAgICAgICAgICAgICAgc2Nyb2xsRG93bkZpeGVkVG9wKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzdGlja3ktbm9uZSc6XG4gICAgICAgICAgICAgICAgc2Nyb2xsRG93blN0aWNreU5vbmUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N0aWNreS1ib3VuZCc6XG4gICAgICAgICAgICAgICAgc2Nyb2xsRG93blN0aWNreUJvdW5kKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gc2Nyb2xsVXBTdGlja3lUb3AoKSB7XG4gICAgICAgIGlmIChlbFNjcm9sbFRvcCA+PSAwKSB7XG4gICAgICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiByZWxhdGl2ZTsgIFwiO1xuICAgICAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS1ub25lJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHN0aWNreUVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246IGZpeGVkOyB0b3A6IGF1dG87IGJvdHRvbTpcIi5jb25jYXQoKHdpbmRvdy5zY3JvbGxZLFxuICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxZICtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCArXG4gICAgICAgICAgICAgICAgICAgIDQ3NiAtXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQgPlxuICAgICAgICAgICAgICAgICAgICAxNilcbiAgICAgICAgICAgICAgICA/IHdpbmRvdy5zY3JvbGxZICtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCArXG4gICAgICAgICAgICAgICAgICAgIDQ3NiAtXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHRcbiAgICAgICAgICAgICAgICA6IDE2LCBcInB4OyBsZWZ0OiBcIikuY29uY2F0KGVsU2Nyb2xsTGVmdCwgXCI7IHdpZHRoOiBcIikuY29uY2F0KGVsV2lkdGgsIFwicHggXCIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcm9sbFVwU3RpY2t5Qm90dG9tKCkge1xuICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBmaXhlZDsgdG9wOiAwcHg7IGxlZnQ6IFwiLmNvbmNhdChlbFNjcm9sbExlZnQsIFwiOyB3aWR0aDogXCIpLmNvbmNhdChlbFdpZHRoLCBcInB4IFwiKTtcbiAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS1ib3VuZCc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcm9sbFVwRml4ZWRUb3AoKSB7XG4gICAgICAgIGVsLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBmaXhlZDsgdG9wOjBweFwiO1xuICAgICAgICBhZmZpeFR5cGUgPSAnc3RpY2t5LXRyYW5zbGF0ZSc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcm9sbFVwU3RpY2t5VHJhbnNsYXRlKCkge1xuICAgICAgICBpZiAoc3RpY2t5Q3VycmVudFRvcCA+PSAwKSB7XG4gICAgICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBmaXhlZDsgdG9wOiAwcHg7IGxlZnQ6IFwiLmNvbmNhdChlbFNjcm9sbExlZnQsIFwiOyB3aWR0aDogXCIpLmNvbmNhdChlbFdpZHRoLCBcInB4XCIpO1xuICAgICAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS10b3AnO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcm9sbFVwU3RpY2t5Qm91bmQoKSB7XG4gICAgICAgIGlmIChzdGlja3lDdXJyZW50VG9wID49IDAgJiYgY3VycmVudFdpbmRvd3NTY3JvbGxQb3NpdGlvbiAhPSAwKSB7XG4gICAgICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOmZpeGVkOyB0b3A6IDA7IGxlZnQ6IFwiLmNvbmNhdChlbFNjcm9sbExlZnQsIFwiOyB3aWR0aDogXCIpLmNvbmNhdChlbFdpZHRoLCBcInB4XCIpO1xuICAgICAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS10b3AnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGlja3lDdXJyZW50VG9wID49IDAgJiYgY3VycmVudFdpbmRvd3NTY3JvbGxQb3NpdGlvbiA9PSAwKSB7XG4gICAgICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcIiB0b3A6IDA7IGxlZnQ6IFwiLmNvbmNhdChlbFNjcm9sbExlZnQsIFwiOyB3aWR0aDogXCIpLmNvbmNhdChlbFdpZHRoLCBcInB4XCIpO1xuICAgICAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS10b3AnO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZVNjcm9sbFVwKCkge1xuICAgICAgICBzd2l0Y2ggKGFmZml4VHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnc3RpY2t5LXRvcCc6XG4gICAgICAgICAgICAgICAgc2Nyb2xsVXBTdGlja3lUb3AoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N0aWNreS1ib3R0b20nOlxuICAgICAgICAgICAgICAgIHNjcm9sbFVwU3RpY2t5Qm90dG9tKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdmaXhlZC10b3AnOlxuICAgICAgICAgICAgICAgIHNjcm9sbFVwRml4ZWRUb3AoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N0aWNreS10cmFuc2xhdGUnOlxuICAgICAgICAgICAgICAgIHNjcm9sbFVwU3RpY2t5VHJhbnNsYXRlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzdGlja3ktbm9uZSc6XG4gICAgICAgICAgICAgICAgLy9ub3RoaW5nIHRvIGRvIGhlcmVcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N0aWNreS1ib3VuZCc6XG4gICAgICAgICAgICAgICAgc2Nyb2xsVXBTdGlja3lCb3VuZCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChlbEhlaWdodCA8IHZpZXdwb3J0SGVpZ2h0KSB7XG4gICAgICAgIGVsLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBzdGlja3k7IHRvcDowcHhcIjtcbiAgICAgICAgc3RpY2t5RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCJcIjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGVsLnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgaWYgKGlzU2Nyb2xsRG93biAmJiBjdXJyZW50V2luZG93c1Njcm9sbFBvc2l0aW9uICE9IDApIHtcbiAgICAgICAgICAgIGhhbmRsZVNjcm9sbERvd24oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc1Njcm9sbFVwICYmIGN1cnJlbnRXaW5kb3dzU2Nyb2xsUG9zaXRpb24gIT0gMCkge1xuICAgICAgICAgICAgaGFuZGxlU2Nyb2xsVXAoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVsLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBzdGlja3k7IHRvcDowcHhcIjtcbiAgICAgICAgICAgIHN0aWNreUVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IFwiXCI7XG4gICAgICAgIH1cbiAgICB9XG59O1xud2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAvL2NoZWNrIGNvbnN0YW50bHkgaW4gYSBpbnRlciBmb3Igd2hlbiBzdXBwb3J0IGJ1dHRvbiBlbnRlcnMgdGhlIGRvbVxuICAgIHZhciBjaGVja1N1cHBvcnRCdXR0b24gPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgIGlmIChzdXBwb3J0QnV0dG9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICBzdXBwb3J0QnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS5ib3JkZXIgPSAnMnB4IHNvbGlkIHJnYigyMSwgODMsIDEwMiknO1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja1N1cHBvcnRCdXR0b24pO1xuICAgICAgICB9XG4gICAgfSwgMTApO1xufTtcbi8vIGN1c3RvbSBkaXJlY3RpdmVcbmFwcC5kaXJlY3RpdmUoJ3N0aWNreS1jb21wb25lbnQnLCB7XG4gICAgbW91bnRlZDogZnVuY3Rpb24gKGVsLCBiaW5kaW5nKSB7XG4gICAgICAgIHZhciBib3VuZGFyeSA9IChiaW5kaW5nLnZhbHVlIHx8IHt9KS5ib3VuZGFyeTtcbiAgICAgICAgYm91bmRhcnkgPSBib3VuZGFyeSB8fCAnYm9keSc7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBmdW5jdGlvbiAoKSB7IHJldHVybiBzdGlja3lTaWRlYmFyKGVsLCBib3VuZGFyeSk7IH0pO1xuICAgIH0sXG4gICAgdW5tb3VudGVkOiBmdW5jdGlvbiAoZWwsIGJpbmRpbmcpIHtcbiAgICAgICAgdmFyIHBhcmVudCA9IGJpbmRpbmcudmFsdWUuYm91bmRhcnk7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBmdW5jdGlvbiAoKSB7IHJldHVybiBzdGlja3lTaWRlYmFyKGVsLCBwYXJlbnQpOyB9KTtcbiAgICB9LFxufSk7XG4vKipcbiAqIE5leHQsIHdlIHdpbGwgY3JlYXRlIGEgZnJlc2ggVnVlIGFwcGxpY2F0aW9uIGluc3RhbmNlIGFuZCBhdHRhY2ggaXQgdG9cbiAqIHRoZSBwYWdlLiBUaGVuLCB5b3UgbWF5IGJlZ2luIGFkZGluZyBjb21wb25lbnRzIHRvIHRoaXMgYXBwbGljYXRpb25cbiAqIG9yIGN1c3RvbWl6ZSB0aGUgSmF2YVNjcmlwdCBzY2FmZm9sZGluZyB0byBmaXQgeW91ciB1bmlxdWUgbmVlZHMuXG4gKi9cbmFwcC5tb3VudCgnI2FwcCcpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLm9yZ01hbmRhdG9yeUVsZW1lbnRzID0gZXhwb3J0cy5hY3Rpdml0eUNvcmVFbGVtZW50cyA9IHZvaWQgMDtcbmZ1bmN0aW9uIGFjdGl2aXR5Q29yZUVsZW1lbnRzKCkge1xuICAgIHZhciBlbGVtZW50cyA9IFtcbiAgICAgICAgJ3JlcG9ydGluZ19vcmcnLFxuICAgICAgICAnaWF0aV9pZGVudGlmaWVyJyxcbiAgICAgICAgJ3RpdGxlJyxcbiAgICAgICAgJ2Rlc2NyaXB0aW9uJyxcbiAgICAgICAgJ3BhcnRpY2lwYXRpbmdfb3JnJyxcbiAgICAgICAgJ2FjdGl2aXR5X3N0YXR1cycsXG4gICAgICAgICdhY3Rpdml0eV9kYXRlJyxcbiAgICAgICAgJ3JlY2lwaWVudF9jb3VudHJ5JyxcbiAgICAgICAgJ3JlY2lwaWVudF9yZWdpb24nLFxuICAgICAgICAnc2VjdG9yJyxcbiAgICAgICAgJ2NvbGxhYm9yYXRpb25fdHlwZScsXG4gICAgICAgICdkZWZhdWx0X2Zsb3dfdHlwZScsXG4gICAgICAgICdkZWZhdWx0X2ZpbmFuY2VfdHlwZScsXG4gICAgICAgICdkZWZhdWx0X2FpZF90eXBlJyxcbiAgICAgICAgJ2J1ZGdldCcsXG4gICAgICAgICd0cmFuc2FjdGlvbnMnLFxuICAgIF07XG4gICAgcmV0dXJuIGVsZW1lbnRzO1xufVxuZXhwb3J0cy5hY3Rpdml0eUNvcmVFbGVtZW50cyA9IGFjdGl2aXR5Q29yZUVsZW1lbnRzO1xuZnVuY3Rpb24gb3JnTWFuZGF0b3J5RWxlbWVudHMoKSB7XG4gICAgdmFyIGVsZW1lbnRzID0gWydyZXBvcnRpbmdfb3JnJywgJ25hbWUnXTtcbiAgICByZXR1cm4gZWxlbWVudHM7XG59XG5leHBvcnRzLm9yZ01hbmRhdG9yeUVsZW1lbnRzID0gb3JnTWFuZGF0b3J5RWxlbWVudHM7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbmZ1bmN0aW9uIGRhdGVGb3JtYXQoZGF0ZSwgZm9ybWF0KSB7XG4gICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9ICdNTU1NIERELCBZWVlZJzsgfVxuICAgIHZhciBmb3JtYXRfZGF0ZTtcbiAgICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgICAgICBjYXNlICdmcm9tTm93JzpcbiAgICAgICAgICAgIGZvcm1hdF9kYXRlID0gZGF0ZSA/ICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mcm9tTm93KCkgOiAnJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgZm9ybWF0X2RhdGUgPSBkYXRlID8gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdChmb3JtYXQpIDogJyc7XG4gICAgfVxuICAgIHJldHVybiBmb3JtYXRfZGF0ZTtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IGRhdGVGb3JtYXQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBjcnlwdG9fanNfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiY3J5cHRvLWpzXCIpKTtcbmZ1bmN0aW9uIGVuY3J5cHQoc3RyaW5nLCBrZXkpIHtcbiAgICB2YXIgaXYgPSBjcnlwdG9fanNfMS5kZWZhdWx0LmxpYi5Xb3JkQXJyYXkucmFuZG9tKDE2KTtcbiAgICB2YXIgc2FsdCA9IGNyeXB0b19qc18xLmRlZmF1bHQubGliLldvcmRBcnJheS5yYW5kb20oMjU2KTtcbiAgICB2YXIgaXRlcmF0aW9ucyA9IDk5OTtcbiAgICB2YXIgZW5jcnlwdE1ldGhvZExlbmd0aCA9IDI1NiAvIDQ7XG4gICAgdmFyIGhhc2hLZXkgPSBjcnlwdG9fanNfMS5kZWZhdWx0LlBCS0RGMihrZXksIHNhbHQsIHtcbiAgICAgICAgaGFzaGVyOiBjcnlwdG9fanNfMS5kZWZhdWx0LmFsZ28uU0hBNTEyLFxuICAgICAgICBrZXlTaXplOiBlbmNyeXB0TWV0aG9kTGVuZ3RoIC8gOCxcbiAgICAgICAgaXRlcmF0aW9uczogaXRlcmF0aW9ucyxcbiAgICB9KTtcbiAgICB2YXIgZW5jcnlwdGVkID0gY3J5cHRvX2pzXzEuZGVmYXVsdC5BRVMuZW5jcnlwdChzdHJpbmcsIGhhc2hLZXksIHtcbiAgICAgICAgbW9kZTogY3J5cHRvX2pzXzEuZGVmYXVsdC5tb2RlLkNCQyxcbiAgICAgICAgaXY6IGl2LFxuICAgIH0pO1xuICAgIHZhciBlbmNyeXB0ZWRTdHJpbmcgPSBjcnlwdG9fanNfMS5kZWZhdWx0LmVuYy5CYXNlNjQuc3RyaW5naWZ5KGVuY3J5cHRlZC5jaXBoZXJ0ZXh0KTtcbiAgICB2YXIgb3V0cHV0ID0ge1xuICAgICAgICBjaXBoZXJ0ZXh0OiBlbmNyeXB0ZWRTdHJpbmcsXG4gICAgICAgIGl2OiBjcnlwdG9fanNfMS5kZWZhdWx0LmVuYy5IZXguc3RyaW5naWZ5KGl2KSxcbiAgICAgICAgc2FsdDogY3J5cHRvX2pzXzEuZGVmYXVsdC5lbmMuSGV4LnN0cmluZ2lmeShzYWx0KSxcbiAgICAgICAgaXRlcmF0aW9uczogaXRlcmF0aW9ucyxcbiAgICB9O1xuICAgIHJldHVybiBjcnlwdG9fanNfMS5kZWZhdWx0LmVuYy5CYXNlNjQuc3RyaW5naWZ5KGNyeXB0b19qc18xLmRlZmF1bHQuZW5jLlV0ZjgucGFyc2UoSlNPTi5zdHJpbmdpZnkob3V0cHV0KSkpO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0gZW5jcnlwdDtcbiIsIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBHZXQgY3VycmVudCBhY3Rpdml0eSB0aXRsZVxuICpcbiAqIEByZXR1cm4gdGl0bGUgdGV4dFxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5mdW5jdGlvbiBnZXRBY3Rpdml0eVRpdGxlKGRhdGEsIGxhbmd1YWdlKSB7XG4gICAgdmFyIHRpdGxlID0gJ1VudGl0bGVkJztcbiAgICAvLyB0aXRsZSByZXR1cm4gaWYgbGFuZ3VhZ2UgZXhpc3QgaW4gZGF0YVxuICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGZvciAodmFyIF9pID0gMCwgZGF0YV8xID0gZGF0YTsgX2kgPCBkYXRhXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIgdCA9IGRhdGFfMVtfaV07XG4gICAgICAgICAgICBpZiAodC5sYW5ndWFnZSAmJiB0Lmxhbmd1YWdlID09PSBsYW5ndWFnZSkge1xuICAgICAgICAgICAgICAgIHRpdGxlID0gdC5uYXJyYXRpdmUgJiYgdC5uYXJyYXRpdmUgIT09ICcnID8gdC5uYXJyYXRpdmUgOiAnVW50aXRsZWQnO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aXRsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBkZWZhdWx0IHRpdGxlIHJldHVybiBpZiBsYW5ndWFnZSBkb2VzIG5vdCBleGlzdHMgaW4gZGF0YVxuICAgICAgICB0aXRsZSA9XG4gICAgICAgICAgICBkYXRhWycwJ10ubmFycmF0aXZlICYmIGRhdGFbJzAnXS5uYXJyYXRpdmUgIT09ICcnXG4gICAgICAgICAgICAgICAgPyBkYXRhWycwJ10ubmFycmF0aXZlXG4gICAgICAgICAgICAgICAgOiAnVW50aXRsZWQnO1xuICAgIH1cbiAgICByZXR1cm4gdGl0bGU7XG59XG5leHBvcnRzLmRlZmF1bHQgPSBnZXRBY3Rpdml0eVRpdGxlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlRyYW5zbGF0ZSA9IHZvaWQgMDtcbnZhciBUcmFuc2xhdGUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gVHJhbnNsYXRlKCkge1xuICAgICAgICB0aGlzLmxhbmd1YWdlU291cmNlcyA9IFtcbiAgICAgICAgICAgICdhYm91dCcsXG4gICAgICAgICAgICAnYWN0aXZpdGllcycsXG4gICAgICAgICAgICAnYWN0aXZpdHlfZGVmYXVsdCcsXG4gICAgICAgICAgICAnYWN0aXZpdHlfZGV0YWlsJyxcbiAgICAgICAgICAgICdhZG1pbicsXG4gICAgICAgICAgICAnYXV0aCcsXG4gICAgICAgICAgICAnYnV0dG9ucycsXG4gICAgICAgICAgICAnY29tbW9uJyxcbiAgICAgICAgICAgICdlbGVtZW50X2xhYmVscycsXG4gICAgICAgICAgICAnZWxlbWVudHMnLFxuICAgICAgICAgICAgJ2VsZW1lbnRzX2NvbW1vbicsXG4gICAgICAgICAgICAnZW1haWxfdmVyaWZpY2F0aW9uJyxcbiAgICAgICAgICAgICdldmVudHMnLFxuICAgICAgICAgICAgJ2hvbWUnLFxuICAgICAgICAgICAgJ2lhdGlfc3RhbmRhcmQnLFxuICAgICAgICAgICAgJ21pZGRsZXdhcmUnLFxuICAgICAgICAgICAgJ21pc3NpbmcnLFxuICAgICAgICAgICAgJ29yZ2FuaXNhdGlvbicsXG4gICAgICAgICAgICAncGFnaW5hdGlvbicsXG4gICAgICAgICAgICAncGFzc3dvcmRfcmVjb3ZlcnknLFxuICAgICAgICAgICAgJ3Bhc3N3b3JkcycsXG4gICAgICAgICAgICAncHVibGlzaGluZ19jaGVja2xpc3QnLFxuICAgICAgICAgICAgJ3JlZ2lzdGVyJyxcbiAgICAgICAgICAgICdyZXF1ZXN0cycsXG4gICAgICAgICAgICAncmVzcG9uc2VzJyxcbiAgICAgICAgICAgICdzZXR0aW5nJyxcbiAgICAgICAgICAgICdzZXR0aW5ncycsXG4gICAgICAgICAgICAnc3VwcG9ydCcsXG4gICAgICAgICAgICAndXNlcicsXG4gICAgICAgICAgICAndmFsaWRhdGlvbicsXG4gICAgICAgICAgICAnd2ViJyxcbiAgICAgICAgICAgICdzdGlja3knLFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLmxhbmcgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICB9XG4gICAgVHJhbnNsYXRlLnByb3RvdHlwZS5idXR0b24gPSBmdW5jdGlvbiAoYnV0dG9uS2V5LCBlbGVtZW50S2V5KSB7XG4gICAgICAgIGlmIChlbGVtZW50S2V5ID09PSB2b2lkIDApIHsgZWxlbWVudEtleSA9ICcnOyB9XG4gICAgICAgIHZhciBiYXNlTWVzc2FnZSA9IHRoaXMubGFuZy5idXR0b25zW2J1dHRvbktleV07XG4gICAgICAgIGlmICghZWxlbWVudEtleSkge1xuICAgICAgICAgICAgcmV0dXJuIGJhc2VNZXNzYWdlO1xuICAgICAgICB9XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudGV4dEZyb21LZXkoZWxlbWVudEtleSk7XG4gICAgICAgIHJldHVybiBiYXNlTWVzc2FnZS5yZXBsYWNlKCc6ZWxlbWVudCcsIHZhbHVlKTtcbiAgICB9O1xuICAgIFRyYW5zbGF0ZS5wcm90b3R5cGUuZXZlbnQgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIChfYSA9IHRoaXMubGFuZy5ldmVudHNba2V5XSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDoga2V5O1xuICAgIH07XG4gICAgVHJhbnNsYXRlLnByb3RvdHlwZS5lbGVtZW50ID0gZnVuY3Rpb24gKGtleSwgcGFyZW50S2V5KSB7XG4gICAgICAgIGlmIChwYXJlbnRLZXkgPT09IHZvaWQgMCkgeyBwYXJlbnRLZXkgPSAnZWxlbWVudHNfY29tbW9uJzsgfVxuICAgICAgICByZXR1cm4gdGhpcy5sYW5nW3BhcmVudEtleV1ba2V5XTtcbiAgICB9O1xuICAgIFRyYW5zbGF0ZS5wcm90b3R5cGUuZXJyb3IgPSBmdW5jdGlvbiAoZXJyb3JLZXksIGVsZW1lbnRLZXkpIHtcbiAgICAgICAgaWYgKGVsZW1lbnRLZXkgPT09IHZvaWQgMCkgeyBlbGVtZW50S2V5ID0gJyc7IH1cbiAgICAgICAgdmFyIGJhc2VNZXNzYWdlID0gdGhpcy5sYW5nLmNvbW1vbi5lcnJvcltlcnJvcktleV07XG4gICAgICAgIGlmICghZWxlbWVudEtleSkge1xuICAgICAgICAgICAgcmV0dXJuIGJhc2VNZXNzYWdlO1xuICAgICAgICB9XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudGV4dEZyb21LZXkoZWxlbWVudEtleSk7XG4gICAgICAgIHJldHVybiBiYXNlTWVzc2FnZS5yZXBsYWNlKCc6ZWxlbWVudCcsIHZhbHVlKTtcbiAgICB9O1xuICAgIFRyYW5zbGF0ZS5wcm90b3R5cGUuY29tbW9uVGV4dCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgdHJhbnNsYXRlZFN0cmluZyA9IHRoaXMubGFuZy5jb21tb247XG4gICAgICAgIHZhciBrZXlzID0gdGhpcy5leHBsb2RlKGtleSk7XG4gICAgICAgIGZvciAodmFyIF9pID0gMCwga2V5c18xID0ga2V5czsgX2kgPCBrZXlzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIgaW5uZXJLZXkgPSBrZXlzXzFbX2ldO1xuICAgICAgICAgICAgdHJhbnNsYXRlZFN0cmluZyA9IChfYSA9IHRyYW5zbGF0ZWRTdHJpbmdbaW5uZXJLZXldKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBrZXk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZWRTdHJpbmc7XG4gICAgfTtcbiAgICBUcmFuc2xhdGUucHJvdG90eXBlLmVsZW1lbnRMYWJlbCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgdHJhbnNsYXRlZFN0cmluZyA9IHRoaXMubGFuZy5lbGVtZW50X2xhYmVscztcbiAgICAgICAgdmFyIGtleXMgPSB0aGlzLmV4cGxvZGUoa2V5KTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBrZXlzXzIgPSBrZXlzOyBfaSA8IGtleXNfMi5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIHZhciBpbm5lcktleSA9IGtleXNfMltfaV07XG4gICAgICAgICAgICB0cmFuc2xhdGVkU3RyaW5nID0gKF9hID0gdHJhbnNsYXRlZFN0cmluZ1tpbm5lcktleV0pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGtleTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJhbnNsYXRlZFN0cmluZztcbiAgICB9O1xuICAgIFRyYW5zbGF0ZS5wcm90b3R5cGUuZWxlbWVudEZyb21FbGVtZW50TmFtZSA9IGZ1bmN0aW9uIChlbGVtZW50TmFtZSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiAoKF9hID0gdGhpcy5sYW5nLmVsZW1lbnRzX2NvbW1vbltlbGVtZW50TmFtZV0pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGVsZW1lbnROYW1lLnJlcGxhY2UoL18vZywgJy0nKSk7XG4gICAgfTtcbiAgICBUcmFuc2xhdGUucHJvdG90eXBlLm1pc3NpbmcgPSBmdW5jdGlvbiAoa2V5LCBlbGVtZW50KSB7XG4gICAgICAgIGlmIChrZXkgPT09IHZvaWQgMCkgeyBrZXkgPSAnJzsgfVxuICAgICAgICBpZiAoZWxlbWVudCA9PT0gdm9pZCAwKSB7IGVsZW1lbnQgPSAnJzsgfVxuICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICB2YXIgYmFzZU1lc3NhZ2UgPSB0aGlzLmxhbmcubWlzc2luZ1trZXldO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50ID0gdGhpcy50ZXh0RnJvbUtleShlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBiYXNlTWVzc2FnZSA9IGJhc2VNZXNzYWdlLnJlcGxhY2UoJzplbGVtZW50JywgZWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYmFzZU1lc3NhZ2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubGFuZy5taXNzaW5nLmRlZmF1bHQ7XG4gICAgfTtcbiAgICBUcmFuc2xhdGUucHJvdG90eXBlLnN0aWNreVRleHQgPSBmdW5jdGlvbiAoa2V5LCBvdXRlcktleSkge1xuICAgICAgICBpZiAob3V0ZXJLZXkgPT09IHZvaWQgMCkgeyBvdXRlcktleSA9ICcnOyB9XG4gICAgICAgIGlmIChvdXRlcktleSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubGFuZy5zdGlja3lbb3V0ZXJLZXldW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubGFuZy5zdGlja3lba2V5XTtcbiAgICB9O1xuICAgIFRyYW5zbGF0ZS5wcm90b3R5cGUubG9nVGV4dCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFuZy5jb21tb24ubG9nc1trZXldO1xuICAgIH07XG4gICAgVHJhbnNsYXRlLnByb3RvdHlwZS53ZWJUZXh0ID0gZnVuY3Rpb24gKGtleSkge1xuICAgICAgICByZXR1cm4gdGhpcy5sYW5nLndlYltrZXldO1xuICAgIH07XG4gICAgVHJhbnNsYXRlLnByb3RvdHlwZS5hZG1pblRleHQgPSBmdW5jdGlvbiAoa2V5LCBwYXJlbnRLZXkpIHtcbiAgICAgICAgaWYgKHBhcmVudEtleSA9PT0gdm9pZCAwKSB7IHBhcmVudEtleSA9ICdoZWFkZXInOyB9XG4gICAgICAgIHJldHVybiB0aGlzLmxhbmcuYWRtaW5bcGFyZW50S2V5XVtrZXldO1xuICAgIH07XG4gICAgVHJhbnNsYXRlLnByb3RvdHlwZS5yZWdpc3RlclRleHQgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZSh0aGlzLmxhbmcucmVnaXN0ZXIsIGtleSk7XG4gICAgfTtcbiAgICBUcmFuc2xhdGUucHJvdG90eXBlLmFib3V0VGV4dCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlKHRoaXMubGFuZy5hYm91dCwga2V5KTtcbiAgICB9O1xuICAgIFRyYW5zbGF0ZS5wcm90b3R5cGUuaWF0aVN0YW5kYXJkVGV4dCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlKHRoaXMubGFuZy5pYXRpX3N0YW5kYXJkLCBrZXkpO1xuICAgIH07XG4gICAgVHJhbnNsYXRlLnByb3RvdHlwZS5wdWJsaXNoaW5nQ2hlY2tsaXN0VGV4dCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlKHRoaXMubGFuZy5wdWJsaXNoaW5nX2NoZWNrbGlzdCwga2V5KTtcbiAgICB9O1xuICAgIFRyYW5zbGF0ZS5wcm90b3R5cGUuZ2V0U3RpY2t5T2JqZWN0ID0gZnVuY3Rpb24gKGlubmVyS2V5KSB7XG4gICAgICAgIGlmIChpbm5lcktleSA9PT0gdm9pZCAwKSB7IGlubmVyS2V5ID0gJyc7IH1cbiAgICAgICAgaWYgKGlubmVyS2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sYW5nLnN0aWNreVtpbm5lcktleV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubGFuZy5zdGlja3k7XG4gICAgfTtcbiAgICBUcmFuc2xhdGUucHJvdG90eXBlLnRleHRGcm9tS2V5ID0gZnVuY3Rpb24gKGVsZW1lbnRLZXkpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLmxhbmc7XG4gICAgICAgIHZhciBlbGVtZW50S2V5c0FycmF5ID0gdGhpcy5leHBsb2RlKGVsZW1lbnRLZXkpO1xuICAgICAgICBpZiAoZWxlbWVudEtleXNBcnJheS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB2YXIgbGVhZGluZ0tleSA9IGVsZW1lbnRLZXlzQXJyYXlbMF07XG4gICAgICAgICAgICBpZiAodGhpcy5sYW5ndWFnZVNvdXJjZXMuaW5jbHVkZXMobGVhZGluZ0tleSkpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMubGFuZ1tsZWFkaW5nS2V5XTtcbiAgICAgICAgICAgICAgICBlbGVtZW50S2V5c0FycmF5LnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBlbGVtZW50S2V5c0FycmF5XzEgPSBlbGVtZW50S2V5c0FycmF5OyBfaSA8IGVsZW1lbnRLZXlzQXJyYXlfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGVsZW1lbnRLZXlfMSA9IGVsZW1lbnRLZXlzQXJyYXlfMVtfaV07XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gKF9hID0gdmFsdWVbZWxlbWVudEtleV8xXSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogZWxlbWVudEtleV8xO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWVbZWxlbWVudEtleV07XG4gICAgfTtcbiAgICBUcmFuc2xhdGUucHJvdG90eXBlLnRyYW5zbGF0ZSA9IGZ1bmN0aW9uICh0cmFuc2xhdGlvblNvdXJjZSwga2V5KSB7XG4gICAgICAgIHZhciBrZXlzID0gdGhpcy5leHBsb2RlKGtleSk7XG4gICAgICAgIGZvciAodmFyIF9pID0gMCwga2V5c18zID0ga2V5czsgX2kgPCBrZXlzXzMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIgaW5uZXJLZXkgPSBrZXlzXzNbX2ldO1xuICAgICAgICAgICAgdHJhbnNsYXRpb25Tb3VyY2UgPSB0cmFuc2xhdGlvblNvdXJjZVtpbm5lcktleV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRyYW5zbGF0aW9uU291cmNlO1xuICAgIH07XG4gICAgVHJhbnNsYXRlLnByb3RvdHlwZS5leHBsb2RlID0gZnVuY3Rpb24gKGtleSkge1xuICAgICAgICByZXR1cm4ga2V5LnNwbGl0KCcuJyk7XG4gICAgfTtcbiAgICByZXR1cm4gVHJhbnNsYXRlO1xufSgpKTtcbmV4cG9ydHMuVHJhbnNsYXRlID0gVHJhbnNsYXRlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmNyZWF0ZUNhcGl0YWxpemVkU2VudGVuY2UgPSBleHBvcnRzLnRydW5jYXRlVGV4dCA9IGV4cG9ydHMua2ViYWJDYXNlVG9TbmFrZWNhc2UgPSBleHBvcnRzLnNuYWtlQ2FzZVRvU2VudGVuY2VDYXNlID0gZXhwb3J0cy5zZW50ZW5jZUNhc2VUb0tlYmFiQ2FzZSA9IGV4cG9ydHMuaXNKc29uID0gZXhwb3J0cy5yZWR1Y2VEb2N1bWVudExpbmsgPSBleHBvcnRzLmNvdW50RG9jdW1lbnRMaW5rID0gZXhwb3J0cy5nZXRMb2NhdGlvbiA9IHZvaWQgMDtcbmZ1bmN0aW9uIGdldExvY2F0aW9uKGRhdGEpIHtcbiAgICB2YXIgbG9jYXRpb25zID0gW107XG4gICAgbG9jYXRpb25zID0gZGF0YS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0ucmVmZXJlbmNlO1xuICAgIH0pO1xuICAgIHZhciBsYXN0TG9jYXRpb24gPSBsb2NhdGlvbnMuc2xpY2UoLTEpWzBdO1xuICAgIGxvY2F0aW9ucyA9IGxvY2F0aW9ucy5zbGljZSgwLCAtMSk7XG4gICAgaWYgKGxvY2F0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiBsb2NhdGlvbnMuam9pbignLCAnKSArICcgJyArICdhbmQnICsgJyAnICsgbGFzdExvY2F0aW9uO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGxhc3RMb2NhdGlvbjtcbiAgICB9XG59XG5leHBvcnRzLmdldExvY2F0aW9uID0gZ2V0TG9jYXRpb247XG5mdW5jdGlvbiBjb3VudERvY3VtZW50TGluayhkb2N1bWVudF9saW5rKSB7XG4gICAgdmFyIGRvY3VtZW50Q291bnQgPSAwO1xuICAgIGZvciAodmFyIGRvY3VtZW50XzEgaW4gZG9jdW1lbnRfbGluaykge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVkdWNlRG9jdW1lbnRMaW5rKGRvY3VtZW50X2xpbmtbZG9jdW1lbnRfMV0sIFtdKTtcbiAgICAgICAgaWYgKCFyZXN1bHQuZXZlcnkoZnVuY3Rpb24gKGl0ZW0pIHsgcmV0dXJuIGl0ZW0gPT09IG51bGw7IH0pKSB7XG4gICAgICAgICAgICBkb2N1bWVudENvdW50Kys7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRvY3VtZW50Q291bnQ7XG59XG5leHBvcnRzLmNvdW50RG9jdW1lbnRMaW5rID0gY291bnREb2N1bWVudExpbms7XG5mdW5jdGlvbiByZWR1Y2VEb2N1bWVudExpbmsoZG9jdW1lbnRfbGluaywgdmFsdWVzKSB7XG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudF9saW5rID09PSAnb2JqZWN0JyAmJiBkb2N1bWVudF9saW5rKSB7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBkb2N1bWVudF9saW5rKSB7XG4gICAgICAgICAgICB2YWx1ZXMuY29uY2F0KHJlZHVjZURvY3VtZW50TGluayhkb2N1bWVudF9saW5rW2tleV0sIHZhbHVlcykpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YWx1ZXMucHVzaChkb2N1bWVudF9saW5rKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlcztcbn1cbmV4cG9ydHMucmVkdWNlRG9jdW1lbnRMaW5rID0gcmVkdWNlRG9jdW1lbnRMaW5rO1xuZnVuY3Rpb24gaXNKc29uKHN0cikge1xuICAgIHRyeSB7XG4gICAgICAgIEpTT04ucGFyc2Uoc3RyKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmV4cG9ydHMuaXNKc29uID0gaXNKc29uO1xuZnVuY3Rpb24gc2VudGVuY2VDYXNlVG9LZWJhYkNhc2Uoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5zcGxpdCgnICcpLmpvaW4oJy0nKTtcbn1cbmV4cG9ydHMuc2VudGVuY2VDYXNlVG9LZWJhYkNhc2UgPSBzZW50ZW5jZUNhc2VUb0tlYmFiQ2FzZTtcbmZ1bmN0aW9uIHNuYWtlQ2FzZVRvU2VudGVuY2VDYXNlKHN0cikge1xuICAgIHZhciB3b3JkcyA9IHN0ci5zcGxpdCgnXycpO1xuICAgIHZhciBzZW50ZW5jZSA9IHdvcmRzWzBdLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgd29yZHNbMF0uc2xpY2UoMSkudG9Mb3dlckNhc2UoKTtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IHdvcmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHNlbnRlbmNlICs9ICcgJyArIHdvcmRzW2ldLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuICAgIHJldHVybiBzZW50ZW5jZTtcbn1cbmV4cG9ydHMuc25ha2VDYXNlVG9TZW50ZW5jZUNhc2UgPSBzbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZTtcbmZ1bmN0aW9uIGtlYmFiQ2FzZVRvU25ha2VjYXNlKHN0cikge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvLS9nLCAnXycpO1xufVxuZXhwb3J0cy5rZWJhYkNhc2VUb1NuYWtlY2FzZSA9IGtlYmFiQ2FzZVRvU25ha2VjYXNlO1xuZnVuY3Rpb24gdHJ1bmNhdGVUZXh0KHRleHQsIG1heExlbmd0aCkge1xuICAgIGlmICh0ZXh0Lmxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgICAgICByZXR1cm4gdGV4dC5zdWJzdHJpbmcoMCwgbWF4TGVuZ3RoKSArICcuLi4nO1xuICAgIH1cbiAgICByZXR1cm4gdGV4dDtcbn1cbmV4cG9ydHMudHJ1bmNhdGVUZXh0ID0gdHJ1bmNhdGVUZXh0O1xuZnVuY3Rpb24gY3JlYXRlQ2FwaXRhbGl6ZWRTZW50ZW5jZSgpIHtcbiAgICB2YXIgd29yZHMgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICB3b3Jkc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICB2YXIgY2FwaXRhbGl6ZWRGaXJzdFdvcmQgPSB3b3Jkc1swXS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHdvcmRzWzBdLnNsaWNlKDEpO1xuICAgIHZhciBjb25jYXRlbmF0ZWRXb3JkcyA9IHdvcmRzLnNsaWNlKDEpLmpvaW4oJyAnKTtcbiAgICByZXR1cm4gXCJcIi5jb25jYXQoY2FwaXRhbGl6ZWRGaXJzdFdvcmQsIFwiIFwiKS5jb25jYXQoY29uY2F0ZW5hdGVkV29yZHMpO1xufVxuZXhwb3J0cy5jcmVhdGVDYXBpdGFsaXplZFNlbnRlbmNlID0gY3JlYXRlQ2FwaXRhbGl6ZWRTZW50ZW5jZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy51c2VTdG9yZSA9IHZvaWQgMDtcbnZhciB2dWV4XzEgPSByZXF1aXJlKFwidnVleFwiKTtcbnZhciBzdGF0ZSA9IHtcbiAgICBzZWxlY3RlZEFjdGl2aXRpZXM6IFtdLFxuICAgIGJ1bGtQdWJsaXNoTGVuZ3RoOiAwLFxuICAgIGNhbmNlbFVwbG9hZDogZmFsc2UsXG4gICAgc3RhcnRCdWxrUHVibGlzaDogZmFsc2UsXG4gICAgbWF4aW1pemVYbHM6IHRydWUsXG4gICAgc3RhcnRYbHNEb3dubG9hZDogZmFsc2UsXG4gICAgY29tcGxldGVYbHNEb3dubG9hZDogZmFsc2UsXG4gICAgY2FuY2VsRG93bmxvYWQ6IGZhbHNlLFxuICAgIGNsb3NlWGxzTW9kZWw6IGZhbHNlLFxuICAgIGJ1bGtwdWJsaXNoQWN0aXZpdGllczoge1xuICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllczoge1xuICAgICAgICAgICAgYWN0aXZpdGllczogeyBhY3Rpdml0eV9pZDogMCwgYWN0aXZpdHlfdGl0bGU6ICcnLCBzdGF0dXM6ICcnIH0sXG4gICAgICAgICAgICBvcmdhbml6YXRpb25faWQ6IDAsXG4gICAgICAgICAgICBqb2JfYmF0Y2hfdXVpZDogJycsXG4gICAgICAgICAgICBzdGF0dXM6ICcnLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgIH0sXG4gICAgfSxcbn07XG52YXIgbXV0YXRpb25zID0ge1xuICAgIG11dGF0ZVNlbGVjdGVkQWN0aXZpdGllczogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLnNlbGVjdGVkQWN0aXZpdGllcyA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVDbG9zZVhsc01vZGVsOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuY2xvc2VYbHNNb2RlbCA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVCdWxrUHVibGlzaExlbmd0aDogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLmJ1bGtQdWJsaXNoTGVuZ3RoID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZUNhbmNlbFVwbG9hZDogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLmNhbmNlbFVwbG9hZCA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVNYXhpbWl6ZVhsczogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLm1heGltaXplWGxzID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZVN0YXJ0WGxzRG93bmxvYWQ6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5zdGFydFhsc0Rvd25sb2FkID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZUNvbXBsZXRlWGxzRG93bmxvYWQ6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5jb21wbGV0ZVhsc0Rvd25sb2FkID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZUNhbmNlbERvd25sb2FkOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuY2FuY2VsRG93bmxvYWQgPSBwYXlsb2FkO1xuICAgIH0sXG4gICAgbXV0YXRlQnVsa3B1Ymxpc2hBY3Rpdml0aWVzOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuYnVsa3B1Ymxpc2hBY3Rpdml0aWVzID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZVN0YXJ0QnVsa1B1Ymxpc2g6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5zdGFydEJ1bGtQdWJsaXNoID0gcGF5bG9hZDtcbiAgICB9LFxufTtcbnZhciBhY3Rpb25zID0ge1xuICAgIHVwZGF0ZVNlbGVjdGVkQWN0aXZpdGllczogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlU2VsZWN0ZWRBY3Rpdml0aWVzJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVDbG9zZVhsc01vZGVsOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVDbG9zZVhsc01vZGVsJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVCdWxrUHVibGlzaExlbmd0aDogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlQnVsa1B1Ymxpc2hMZW5ndGgnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZUNhbmNlbFVwbG9hZDogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlQ2FuY2VsVXBsb2FkJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVNYXhpbWl6ZVhsczogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlTWF4aW1pemVYbHMnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZVN0YXJ0WGxzRG93bmxvYWQ6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZVN0YXJ0WGxzRG93bmxvYWQnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZUNvbXBsZXRlWGxzRG93bmxvYWQ6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZUNvbXBsZXRlWGxzRG93bmxvYWQnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZUNhbmNlbERvd25sb2FkOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVDYW5jZWxEb3dubG9hZCcsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgdXBkYXRlQnVsa3B1Ymxpc2hBY3Rpdml0aWVzOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVCdWxrcHVibGlzaEFjdGl2aXRpZXMnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZVN0YXJ0QnVsa1B1Ymxpc2g6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZVN0YXJ0QnVsa1B1Ymxpc2gnLCBwYXlsb2FkKTtcbiAgICB9LFxufTtcbnZhciBhY3Rpdml0eUxpc3RTdG9yZSA9ICgwLCB2dWV4XzEuY3JlYXRlU3RvcmUpKHtcbiAgICBzdGF0ZTogc3RhdGUsXG4gICAgbXV0YXRpb25zOiBtdXRhdGlvbnMsXG4gICAgYWN0aW9uczogYWN0aW9ucyxcbn0pO1xuZnVuY3Rpb24gdXNlU3RvcmUoKSB7XG4gICAgcmV0dXJuIGFjdGl2aXR5TGlzdFN0b3JlO1xufVxuZXhwb3J0cy51c2VTdG9yZSA9IHVzZVN0b3JlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmRldGFpbFN0b3JlID0gdm9pZCAwO1xudmFyIHZ1ZXhfMSA9IHJlcXVpcmUoXCJ2dWV4XCIpO1xudmFyIHN0YXRlID0ge1xuICAgIHVuUHVibGlzaGVkOiBmYWxzZSxcbiAgICBzaG93UHVibGlzaGVkOiBmYWxzZSxcbiAgICBwdWJsaXNoRXJyb3JzOiBbXSxcbiAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgIGJ1bGtwdWJsaXNoTGVuZ3RoOiAwLFxufTtcbnZhciBtdXRhdGlvbnMgPSB7XG4gICAgbXV0YXRlVW5QdWJsaXNoZWQ6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS51blB1Ymxpc2hlZCA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVTaG93UHVibGlzaGVkOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuc2hvd1B1Ymxpc2hlZCA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVQdWJsaXNoRXJyb3JzOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUucHVibGlzaEVycm9ycyA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVJc0xvYWRpbmc6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5pc0xvYWRpbmcgPSBwYXlsb2FkO1xuICAgIH0sXG4gICAgbXV0YXRlQnVsa3B1Ymxpc2hMZW5ndGg6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5idWxrcHVibGlzaExlbmd0aCA9IHBheWxvYWQ7XG4gICAgfSxcbn07XG52YXIgYWN0aW9ucyA9IHtcbiAgICB1cGRhdGVVblB1Ymxpc2hlZDogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlVW5QdWJsaXNoZWQnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZVNob3dQdWJsaXNoZWQ6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZVNob3dQdWJsaXNoZWQnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZVB1Ymxpc2hFcnJvcnM6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZVB1Ymxpc2hFcnJvcnMnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZUlzTG9hZGluZzogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlSXNMb2FkaW5nJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVCdWxrcHVibGlzaExlbmd0aDogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlQnVsa3B1Ymxpc2hMZW5ndGgnLCBwYXlsb2FkKTtcbiAgICB9LFxufTtcbnZhciBhY3Rpdml0eURldGFpbFN0b3JlID0gKDAsIHZ1ZXhfMS5jcmVhdGVTdG9yZSkoe1xuICAgIHN0YXRlOiBzdGF0ZSxcbiAgICBtdXRhdGlvbnM6IG11dGF0aW9ucyxcbiAgICBhY3Rpb25zOiBhY3Rpb25zLFxufSk7XG5mdW5jdGlvbiBkZXRhaWxTdG9yZSgpIHtcbiAgICByZXR1cm4gYWN0aXZpdHlEZXRhaWxTdG9yZTtcbn1cbmV4cG9ydHMuZGV0YWlsU3RvcmUgPSBkZXRhaWxTdG9yZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy51c2VTdG9yZSA9IGV4cG9ydHMuc3RvcmUgPSB2b2lkIDA7XG52YXIgdnVleF8xID0gcmVxdWlyZShcInZ1ZXhcIik7XG52YXIgc3RhdGVfMSA9IHJlcXVpcmUoXCIuL3NldHRpbmcvc3RhdGVcIik7XG52YXIgbXV0YXRpb25fMSA9IHJlcXVpcmUoXCIuL3NldHRpbmcvbXV0YXRpb25cIik7XG52YXIgYWN0aW9uc18xID0gcmVxdWlyZShcIi4vc2V0dGluZy9hY3Rpb25zXCIpO1xuZXhwb3J0cy5zdG9yZSA9ICgwLCB2dWV4XzEuY3JlYXRlU3RvcmUpKHtcbiAgICBzdGF0ZTogc3RhdGVfMS5zdGF0ZSxcbiAgICBtdXRhdGlvbnM6IG11dGF0aW9uXzEubXV0YXRpb25zLFxuICAgIGFjdGlvbnM6IGFjdGlvbnNfMS5hY3Rpb25zLFxufSk7XG5mdW5jdGlvbiB1c2VTdG9yZSgpIHtcbiAgICByZXR1cm4gZXhwb3J0cy5zdG9yZTtcbn1cbmV4cG9ydHMudXNlU3RvcmUgPSB1c2VTdG9yZTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9hO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5hY3Rpb25zID0gZXhwb3J0cy5BY3Rpb25UeXBlcyA9IHZvaWQgMDtcbnZhciBtdXRhdGlvbl8xID0gcmVxdWlyZShcIi4vbXV0YXRpb25cIik7XG52YXIgQWN0aW9uVHlwZXM7XG4oZnVuY3Rpb24gKEFjdGlvblR5cGVzKSB7XG4gICAgQWN0aW9uVHlwZXNbXCJVUERBVEVfUFVCTElTSElOR19GT1JNXCJdID0gXCJVUERBVEVfUFVCTElTSElOR19GT1JNXCI7XG4gICAgQWN0aW9uVHlwZXNbXCJVUERBVEVfUFVCTElTSEVSX0lORk9cIl0gPSBcIlVQREFURV9QVUJMSVNIRVJfSU5GT1wiO1xuICAgIEFjdGlvblR5cGVzW1wiVVBEQVRFX1BVQkxJU0hJTkdfRVJST1JcIl0gPSBcIlVQREFURV9QVUJMSVNISU5HX0VSUk9SXCI7XG4gICAgQWN0aW9uVHlwZXNbXCJVUERBVEVfREVGQVVMVF9WQUxVRVNcIl0gPSBcIlVQREFURV9ERUZBVUxUX1ZBTFVFU1wiO1xuICAgIEFjdGlvblR5cGVzW1wiVVBEQVRFX0RFRkFVTFRfRVJST1JcIl0gPSBcIlVQREFURV9ERUZBVUxUX0VSUk9SXCI7XG4gICAgQWN0aW9uVHlwZXNbXCJVUERBVEVfSVNfTE9BRElOR1wiXSA9IFwiVVBEQVRFX0lTX0xPQURJTkdcIjtcbiAgICBBY3Rpb25UeXBlc1tcIlVQREFURV9CVUxLUFVCTElTSF9MRU5HVEhcIl0gPSBcIlVQREFURV9CVUxLUFVCTElTSF9MRU5HVEhcIjtcbn0pKEFjdGlvblR5cGVzID0gZXhwb3J0cy5BY3Rpb25UeXBlcyB8fCAoZXhwb3J0cy5BY3Rpb25UeXBlcyA9IHt9KSk7XG5leHBvcnRzLmFjdGlvbnMgPSAoX2EgPSB7fSxcbiAgICBfYVtBY3Rpb25UeXBlcy5VUERBVEVfUFVCTElTSElOR19GT1JNXSA9IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQobXV0YXRpb25fMS5NdXRhdGlvblR5cGVzLlVQREFURV9QVUJMSVNISU5HX0ZPUk0sIHBheWxvYWQpO1xuICAgIH0sXG4gICAgX2FbQWN0aW9uVHlwZXMuVVBEQVRFX1BVQkxJU0hFUl9JTkZPXSA9IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQobXV0YXRpb25fMS5NdXRhdGlvblR5cGVzLlVQREFURV9QVUJMSVNIRVJfSU5GTywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICBfYVtBY3Rpb25UeXBlcy5VUERBVEVfUFVCTElTSElOR19FUlJPUl0gPSBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KG11dGF0aW9uXzEuTXV0YXRpb25UeXBlcy5VUERBVEVfUFVCTElTSElOR19FUlJPUiwgcGF5bG9hZCk7XG4gICAgfSxcbiAgICBfYVtBY3Rpb25UeXBlcy5VUERBVEVfREVGQVVMVF9WQUxVRVNdID0gZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdChtdXRhdGlvbl8xLk11dGF0aW9uVHlwZXMuVVBEQVRFX0RFRkFVTFRfVkFMVUVTLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIF9hW0FjdGlvblR5cGVzLlVQREFURV9ERUZBVUxUX0VSUk9SXSA9IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQobXV0YXRpb25fMS5NdXRhdGlvblR5cGVzLlVQREFURV9ERUZBVUxUX0VSUk9SLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIF9hW0FjdGlvblR5cGVzLlVQREFURV9JU19MT0FESU5HXSA9IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQobXV0YXRpb25fMS5NdXRhdGlvblR5cGVzLklTX0xPQURJTkcsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgX2FbQWN0aW9uVHlwZXMuVVBEQVRFX0JVTEtQVUJMSVNIX0xFTkdUSF0gPSBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KG11dGF0aW9uXzEuTXV0YXRpb25UeXBlcy5CVUxLUFVCTElTSF9MRU5HVEgsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgX2EpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX2E7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLm11dGF0aW9ucyA9IGV4cG9ydHMuTXV0YXRpb25UeXBlcyA9IHZvaWQgMDtcbnZhciBNdXRhdGlvblR5cGVzO1xuKGZ1bmN0aW9uIChNdXRhdGlvblR5cGVzKSB7XG4gICAgTXV0YXRpb25UeXBlc1tcIlVQREFURV9QVUJMSVNISU5HX0ZPUk1cIl0gPSBcIlVQREFURV9QVUJMSVNISU5HX0ZPUk1cIjtcbiAgICBNdXRhdGlvblR5cGVzW1wiVVBEQVRFX1BVQkxJU0hFUl9JTkZPXCJdID0gXCJVUERBVEVfUFVCTElTSEVSX0lORk9cIjtcbiAgICBNdXRhdGlvblR5cGVzW1wiVVBEQVRFX1BVQkxJU0hJTkdfRVJST1JcIl0gPSBcIlVQREFURV9QVUJMSVNISU5HX0VSUk9SXCI7XG4gICAgTXV0YXRpb25UeXBlc1tcIlVQREFURV9ERUZBVUxUX1ZBTFVFU1wiXSA9IFwiVVBEQVRFX0RFRkFVTFRfVkFMVUVTXCI7XG4gICAgTXV0YXRpb25UeXBlc1tcIlVQREFURV9ERUZBVUxUX0VSUk9SXCJdID0gXCJVUERBVEVfREVGQVVMVF9FUlJPUlwiO1xuICAgIE11dGF0aW9uVHlwZXNbXCJJU19MT0FESU5HXCJdID0gXCJJU19MT0FESU5HXCI7XG4gICAgTXV0YXRpb25UeXBlc1tcIkJVTEtQVUJMSVNIX0xFTkdUSFwiXSA9IFwiQlVMS1BVQkxJU0hfTEVOR1RIXCI7XG59KShNdXRhdGlvblR5cGVzID0gZXhwb3J0cy5NdXRhdGlvblR5cGVzIHx8IChleHBvcnRzLk11dGF0aW9uVHlwZXMgPSB7fSkpO1xuZXhwb3J0cy5tdXRhdGlvbnMgPSAoX2EgPSB7fSxcbiAgICBfYVtNdXRhdGlvblR5cGVzLlVQREFURV9QVUJMSVNISU5HX0ZPUk1dID0gZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLnB1Ymxpc2hpbmdGb3JtW3BheWxvYWQua2V5XSA9IHBheWxvYWQudmFsdWU7XG4gICAgfSxcbiAgICBfYVtNdXRhdGlvblR5cGVzLlVQREFURV9QVUJMSVNIRVJfSU5GT10gPSBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUucHVibGlzaGluZ0luZm9bcGF5bG9hZC5rZXldID0gcGF5bG9hZC52YWx1ZTtcbiAgICB9LFxuICAgIF9hW011dGF0aW9uVHlwZXMuVVBEQVRFX0RFRkFVTFRfVkFMVUVTXSA9IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5kZWZhdWx0Rm9ybVtwYXlsb2FkLmtleV0gPSBwYXlsb2FkLnZhbHVlO1xuICAgIH0sXG4gICAgX2FbTXV0YXRpb25UeXBlcy5VUERBVEVfUFVCTElTSElOR19FUlJPUl0gPSBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUucHVibGlzaGluZ0Vycm9yW3BheWxvYWQua2V5XSA9IHBheWxvYWQudmFsdWU7XG4gICAgfSxcbiAgICBfYVtNdXRhdGlvblR5cGVzLlVQREFURV9ERUZBVUxUX0VSUk9SXSA9IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5kZWZhdWx0RXJyb3JbcGF5bG9hZC5rZXldID0gcGF5bG9hZC52YWx1ZTtcbiAgICB9LFxuICAgIF9hW011dGF0aW9uVHlwZXMuSVNfTE9BRElOR10gPSBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuZGVmYXVsdEVycm9yW3BheWxvYWQua2V5XSA9IHBheWxvYWQudmFsdWU7XG4gICAgfSxcbiAgICBfYVtNdXRhdGlvblR5cGVzLkJVTEtQVUJMSVNIX0xFTkdUSF0gPSBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuZGVmYXVsdEVycm9yW3BheWxvYWQua2V5XSA9IHBheWxvYWQudmFsdWU7XG4gICAgfSxcbiAgICBfYSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuc3RhdGUgPSB2b2lkIDA7XG5leHBvcnRzLnN0YXRlID0ge1xuICAgIHB1Ymxpc2hpbmdGb3JtOiB7XG4gICAgICAgIHB1Ymxpc2hlcl9pZDogJycsXG4gICAgICAgIGFwaV90b2tlbjogJycsXG4gICAgfSxcbiAgICBwdWJsaXNoaW5nSW5mbzoge1xuICAgICAgICBwdWJsaXNoZXJfdmVyaWZpY2F0aW9uOiBmYWxzZSxcbiAgICAgICAgdG9rZW5fdmVyaWZpY2F0aW9uOiBmYWxzZSxcbiAgICAgICAgaXNWZXJpZmljYXRpb25SZXF1ZXN0ZWQ6IGZhbHNlLFxuICAgIH0sXG4gICAgZGVmYXVsdEZvcm06IHtcbiAgICAgICAgZGVmYXVsdF9jdXJyZW5jeTogJycsXG4gICAgICAgIGRlZmF1bHRfbGFuZ3VhZ2U6ICcnLFxuICAgICAgICBoaWVyYXJjaHk6ICcnLFxuICAgICAgICBsaW5rZWRfZGF0YV91cmk6ICcnLFxuICAgICAgICBodW1hbml0YXJpYW46ICcnLFxuICAgICAgICBidWRnZXRfbm90X3Byb3ZpZGVkOiAnJyxcbiAgICAgICAgZGVmYXVsdF9jb2xsYWJvcmF0aW9uX3R5cGU6ICcnLFxuICAgICAgICBkZWZhdWx0X2Zsb3dfdHlwZTogJycsXG4gICAgICAgIGRlZmF1bHRfZmluYW5jZV90eXBlOiAnJyxcbiAgICAgICAgZGVmYXVsdF9haWRfdHlwZTogJycsXG4gICAgICAgIGRlZmF1bHRfdGllZF9zdGF0dXM6ICcnLFxuICAgIH0sXG4gICAgcHVibGlzaGluZ0Vycm9yOiB7XG4gICAgICAgIGFwaV90b2tlbjogJycsXG4gICAgfSxcbiAgICBkZWZhdWx0RXJyb3I6IHtcbiAgICAgICAgZGVmYXVsdF9jdXJyZW5jeTogJycsXG4gICAgICAgIGRlZmF1bHRfbGFuZ3VhZ2U6ICcnLFxuICAgICAgICBoaWVyYXJjaHk6ICcnLFxuICAgICAgICBsaW5rZWRfZGF0YV91cmk6ICcnLFxuICAgICAgICBodW1hbml0YXJpYW46ICcnLFxuICAgICAgICBidWRnZXRfbm90X3Byb3ZpZGVkOiAnJyxcbiAgICAgICAgZGVmYXVsdF9jb2xsYWJvcmF0aW9uX3R5cGU6ICcnLFxuICAgICAgICBkZWZhdWx0X2Zsb3dfdHlwZTogJycsXG4gICAgICAgIGRlZmF1bHRfZmluYW5jZV90eXBlOiAnJyxcbiAgICAgICAgZGVmYXVsdF9haWRfdHlwZTogJycsXG4gICAgICAgIGRlZmF1bHRfdGllZF9zdGF0dXM6ICcnLFxuICAgIH0sXG4gICAgaXNMb2FkaW5nOiB7fSxcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuUmVwb3J0aW5nT3JnYW5pemF0aW9uID0gZXhwb3J0cy5QbGFubmVkRGlzYnVyc2VtZW50ID0gZXhwb3J0cy5IdW1hbml0YXJpYW5TY29wZSA9IGV4cG9ydHMuVGFnID0gZXhwb3J0cy5Qb2xpY3lNYXJrZXIgPSBleHBvcnRzLlJlbGF0ZWRBY3Rpdml0eSA9IGV4cG9ydHMuQ29uZGl0aW9ucyA9IGV4cG9ydHMuTGVnYWN5RGF0YSA9IGV4cG9ydHMuU2VjdG9yID0gZXhwb3J0cy5Mb2NhdGlvbiA9IGV4cG9ydHMuVHJhbnNhY3Rpb25zID0gZXhwb3J0cy5SZWNpcGllbnRSZWdpb24gPSBleHBvcnRzLlJlY2lwaWVudENvdW50cnkgPSBleHBvcnRzLlBhcnRpY2lwYXRpbmdPcmcgPSBleHBvcnRzLkNvbnRhY3RJbmZvID0gZXhwb3J0cy5BY3Rpdml0eURhdGUgPSBleHBvcnRzLkRlc2NyaXB0aW9uID0gZXhwb3J0cy5UaXRsZUVsZW1lbnQgPSBleHBvcnRzLk90aGVySWRlbnRpZmllciA9IGV4cG9ydHMuSWF0aUlkZW50aWZpZXIgPSBleHBvcnRzLlJlc3VsdCA9IHZvaWQgMDtcbi8vIFByb3h5IGV4cG9ydCBhbGwgcmVsYXRlZCBjb21wb25lbnRzLlxudmFyIFJlc3VsdF92dWVfMSA9IHJlcXVpcmUoXCIuL1Jlc3VsdC52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZXN1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZXN1bHRfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgSWF0aUlkZW50aWZpZXJfdnVlXzEgPSByZXF1aXJlKFwiLi9JYXRpSWRlbnRpZmllci52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJJYXRpSWRlbnRpZmllclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KElhdGlJZGVudGlmaWVyX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIE90aGVySWRlbnRpZmllcl92dWVfMSA9IHJlcXVpcmUoXCIuL090aGVySWRlbnRpZmllci52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJPdGhlcklkZW50aWZpZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChPdGhlcklkZW50aWZpZXJfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgVGl0bGVfdnVlXzEgPSByZXF1aXJlKFwiLi9UaXRsZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUaXRsZUVsZW1lbnRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChUaXRsZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBEZXNjcmlwdGlvbl92dWVfMSA9IHJlcXVpcmUoXCIuL0Rlc2NyaXB0aW9uLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkRlc2NyaXB0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoRGVzY3JpcHRpb25fdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgQWN0aXZpdHlEYXRlX3Z1ZV8xID0gcmVxdWlyZShcIi4vQWN0aXZpdHlEYXRlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkFjdGl2aXR5RGF0ZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KEFjdGl2aXR5RGF0ZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBDb250YWN0SW5mb192dWVfMSA9IHJlcXVpcmUoXCIuL0NvbnRhY3RJbmZvLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkNvbnRhY3RJbmZvXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoQ29udGFjdEluZm9fdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUGFydGljaXBhdGluZ09yZ192dWVfMSA9IHJlcXVpcmUoXCIuL1BhcnRpY2lwYXRpbmdPcmcudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUGFydGljaXBhdGluZ09yZ1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFBhcnRpY2lwYXRpbmdPcmdfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVjaXBpZW50Q291bnRyeV92dWVfMSA9IHJlcXVpcmUoXCIuL1JlY2lwaWVudENvdW50cnkudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVjaXBpZW50Q291bnRyeVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlY2lwaWVudENvdW50cnlfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVjaXBpZW50UmVnaW9uX3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVjaXBpZW50UmVnaW9uLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlY2lwaWVudFJlZ2lvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlY2lwaWVudFJlZ2lvbl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBUcmFuc2FjdGlvbnNfdnVlXzEgPSByZXF1aXJlKFwiLi9UcmFuc2FjdGlvbnMudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVHJhbnNhY3Rpb25zXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVHJhbnNhY3Rpb25zX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIExvY2F0aW9uX3Z1ZV8xID0gcmVxdWlyZShcIi4vTG9jYXRpb24udnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTG9jYXRpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChMb2NhdGlvbl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBTZWN0b3JfdnVlXzEgPSByZXF1aXJlKFwiLi9TZWN0b3IudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiU2VjdG9yXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoU2VjdG9yX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIExlZ2FjeURhdGFfdnVlXzEgPSByZXF1aXJlKFwiLi9MZWdhY3lEYXRhLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkxlZ2FjeURhdGFcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChMZWdhY3lEYXRhX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIENvbmRpdGlvbnNfdnVlXzEgPSByZXF1aXJlKFwiLi9Db25kaXRpb25zLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkNvbmRpdGlvbnNcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChDb25kaXRpb25zX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlbGF0ZWRBY3Rpdml0eV92dWVfMSA9IHJlcXVpcmUoXCIuL1JlbGF0ZWRBY3Rpdml0eS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZWxhdGVkQWN0aXZpdHlcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZWxhdGVkQWN0aXZpdHlfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUG9saWN5TWFya2VyX3Z1ZV8xID0gcmVxdWlyZShcIi4vUG9saWN5TWFya2VyLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlBvbGljeU1hcmtlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFBvbGljeU1hcmtlcl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBUYWdfdnVlXzEgPSByZXF1aXJlKFwiLi9UYWcudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVGFnXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVGFnX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIEh1bWFuaXRhcmlhblNjb3BlX3Z1ZV8xID0gcmVxdWlyZShcIi4vSHVtYW5pdGFyaWFuU2NvcGUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiSHVtYW5pdGFyaWFuU2NvcGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChIdW1hbml0YXJpYW5TY29wZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBQbGFubmVkRGlzYnVyc2VtZW50X3Z1ZV8xID0gcmVxdWlyZShcIi4vUGxhbm5lZERpc2J1cnNlbWVudC52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJQbGFubmVkRGlzYnVyc2VtZW50XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUGxhbm5lZERpc2J1cnNlbWVudF92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBSZXBvcnRpbmdPcmdhbml6YXRpb25fdnVlXzEgPSByZXF1aXJlKFwiLi9SZXBvcnRpbmdPcmdhbml6YXRpb24udnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVwb3J0aW5nT3JnYW5pemF0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVwb3J0aW5nT3JnYW5pemF0aW9uX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlBlcmlvZCA9IGV4cG9ydHMuQmFzZWxpbmUgPSBleHBvcnRzLkRvY3VtZW50TGluayA9IGV4cG9ydHMuUmVmZXJlbmNlID0gZXhwb3J0cy5EZXNjcmlwdGlvbiA9IGV4cG9ydHMuQWdncmVnYXRpb25TdGF0dXMgPSBleHBvcnRzLkFzY2VuZGluZyA9IGV4cG9ydHMuTWVhc3VyZSA9IGV4cG9ydHMuVGl0bGVFbGVtZW50ID0gdm9pZCAwO1xuLy8gUHJveHkgZXhwb3J0IGFsbCByZWxhdGVkIGNvbXBvbmVudHMuXG52YXIgVGl0bGVfdnVlXzEgPSByZXF1aXJlKFwiLi9UaXRsZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUaXRsZUVsZW1lbnRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChUaXRsZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBNZWFzdXJlX3Z1ZV8xID0gcmVxdWlyZShcIi4vTWVhc3VyZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJNZWFzdXJlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoTWVhc3VyZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBJbmRpY2F0b3JBc2NlbmRpbmdfdnVlXzEgPSByZXF1aXJlKFwiLi9JbmRpY2F0b3JBc2NlbmRpbmcudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQXNjZW5kaW5nXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoSW5kaWNhdG9yQXNjZW5kaW5nX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIEFnZ3JlZ2F0aW9uU3RhdHVzX3Z1ZV8xID0gcmVxdWlyZShcIi4vQWdncmVnYXRpb25TdGF0dXMudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQWdncmVnYXRpb25TdGF0dXNcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChBZ2dyZWdhdGlvblN0YXR1c192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBEZXNjcmlwdGlvbl92dWVfMSA9IHJlcXVpcmUoXCIuL0Rlc2NyaXB0aW9uLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkRlc2NyaXB0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoRGVzY3JpcHRpb25fdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVmZXJlbmNlX3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVmZXJlbmNlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlZmVyZW5jZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlZmVyZW5jZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBEb2N1bWVudExpbmtfdnVlXzEgPSByZXF1aXJlKFwiLi9Eb2N1bWVudExpbmsudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRG9jdW1lbnRMaW5rXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoRG9jdW1lbnRMaW5rX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIEJhc2VsaW5lX3Z1ZV8xID0gcmVxdWlyZShcIi4vQmFzZWxpbmUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQmFzZWxpbmVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChCYXNlbGluZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBQZXJpb2RfdnVlXzEgPSByZXF1aXJlKFwiLi9QZXJpb2QudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUGVyaW9kXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUGVyaW9kX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkFjdHVhbFZhbHVlID0gZXhwb3J0cy5UYXJnZXRWYWx1ZSA9IHZvaWQgMDtcbnZhciBUYXJnZXRWYWx1ZV92dWVfMSA9IHJlcXVpcmUoXCIuL1RhcmdldFZhbHVlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRhcmdldFZhbHVlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVGFyZ2V0VmFsdWVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgQWN0dWFsVmFsdWVfdnVlXzEgPSByZXF1aXJlKFwiLi9BY3R1YWxWYWx1ZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJBY3R1YWxWYWx1ZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KEFjdHVhbFZhbHVlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkluZGljYXRvciA9IGV4cG9ydHMuUmVzdWx0VHlwZSA9IGV4cG9ydHMuUmVmZXJlbmNlID0gZXhwb3J0cy5Eb2N1bWVudExpbmsgPSBleHBvcnRzLlRpdGxlRGVzY3JpcHRpb24gPSB2b2lkIDA7XG4vLyBQcm94eSBleHBvcnQgYWxsIHJlbGF0ZWQgY29tcG9uZW50cy5cbnZhciBUaXRsZURlc2NyaXB0aW9uX3Z1ZV8xID0gcmVxdWlyZShcIi4vVGl0bGVEZXNjcmlwdGlvbi52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUaXRsZURlc2NyaXB0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVGl0bGVEZXNjcmlwdGlvbl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBEb2N1bWVudExpbmtfdnVlXzEgPSByZXF1aXJlKFwiLi9Eb2N1bWVudExpbmsudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRG9jdW1lbnRMaW5rXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoRG9jdW1lbnRMaW5rX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlZmVyZW5jZV92dWVfMSA9IHJlcXVpcmUoXCIuL1JlZmVyZW5jZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZWZlcmVuY2VcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZWZlcmVuY2VfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVzdWx0VHlwZV92dWVfMSA9IHJlcXVpcmUoXCIuL1Jlc3VsdFR5cGUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVzdWx0VHlwZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlc3VsdFR5cGVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgSW5kaWNhdG9yX3Z1ZV8xID0gcmVxdWlyZShcIi4vSW5kaWNhdG9yLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkluZGljYXRvclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KEluZGljYXRvcl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5UaWVkU3RhdHVzID0gZXhwb3J0cy5GaW5hbmNlVHlwZSA9IGV4cG9ydHMuRmxvd1R5cGUgPSBleHBvcnRzLlJlY2lwaWVudFJlZ2lvbiA9IGV4cG9ydHMuUmVjaXBpZW50Q291bnRyeSA9IGV4cG9ydHMuU2VjdG9yID0gZXhwb3J0cy5EaXNidXJzZW1lbnRDaGFubmVsID0gZXhwb3J0cy5SZWNlaXZlck9yZ2FuaXphdGlvbiA9IGV4cG9ydHMuUHJvdmlkZXJPcmdhbml6YXRpb24gPSBleHBvcnRzLlZhbHVlID0gZXhwb3J0cy5UcmFuc2FjdGlvbkRhdGUgPSBleHBvcnRzLlRyYW5zYWN0aW9uVHlwZSA9IGV4cG9ydHMuQWlkVHlwZSA9IGV4cG9ydHMuRGVzY3JpcHRpb24gPSB2b2lkIDA7XG4vLyBQcm94eSBleHBvcnQgYWxsIHJlbGF0ZWQgY29tcG9uZW50cy5cbnZhciBEZXNjcmlwdGlvbl92dWVfMSA9IHJlcXVpcmUoXCIuL0Rlc2NyaXB0aW9uLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkRlc2NyaXB0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoRGVzY3JpcHRpb25fdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgQWlkVHlwZV92dWVfMSA9IHJlcXVpcmUoXCIuL0FpZFR5cGUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQWlkVHlwZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KEFpZFR5cGVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgVHJhbnNhY3Rpb25UeXBlX3Z1ZV8xID0gcmVxdWlyZShcIi4vVHJhbnNhY3Rpb25UeXBlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRyYW5zYWN0aW9uVHlwZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFRyYW5zYWN0aW9uVHlwZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBUcmFuc2FjdGlvbkRhdGVfdnVlXzEgPSByZXF1aXJlKFwiLi9UcmFuc2FjdGlvbkRhdGUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVHJhbnNhY3Rpb25EYXRlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVHJhbnNhY3Rpb25EYXRlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFZhbHVlX3Z1ZV8xID0gcmVxdWlyZShcIi4vVmFsdWUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVmFsdWVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChWYWx1ZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBQcm92aWRlck9yZ2FuaXphdGlvbl92dWVfMSA9IHJlcXVpcmUoXCIuL1Byb3ZpZGVyT3JnYW5pemF0aW9uLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlByb3ZpZGVyT3JnYW5pemF0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUHJvdmlkZXJPcmdhbml6YXRpb25fdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVjZWl2ZXJPcmdhbml6YXRpb25fdnVlXzEgPSByZXF1aXJlKFwiLi9SZWNlaXZlck9yZ2FuaXphdGlvbi52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZWNlaXZlck9yZ2FuaXphdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlY2VpdmVyT3JnYW5pemF0aW9uX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIERpc2J1cnNlbWVudENoYW5uZWxfdnVlXzEgPSByZXF1aXJlKFwiLi9EaXNidXJzZW1lbnRDaGFubmVsLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkRpc2J1cnNlbWVudENoYW5uZWxcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChEaXNidXJzZW1lbnRDaGFubmVsX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFNlY3Rvcl92dWVfMSA9IHJlcXVpcmUoXCIuL1NlY3Rvci52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJTZWN0b3JcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChTZWN0b3JfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVjaXBpZW50Q291bnRyeV92dWVfMSA9IHJlcXVpcmUoXCIuL1JlY2lwaWVudENvdW50cnkudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVjaXBpZW50Q291bnRyeVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlY2lwaWVudENvdW50cnlfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVjaXBpZW50UmVnaW9uX3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVjaXBpZW50UmVnaW9uLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlY2lwaWVudFJlZ2lvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlY2lwaWVudFJlZ2lvbl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBGbG93VHlwZV92dWVfMSA9IHJlcXVpcmUoXCIuL0Zsb3dUeXBlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkZsb3dUeXBlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoRmxvd1R5cGVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgRmluYW5jZVR5cGVfdnVlXzEgPSByZXF1aXJlKFwiLi9GaW5hbmNlVHlwZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJGaW5hbmNlVHlwZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KEZpbmFuY2VUeXBlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFRpZWRTdGF0dXNfdnVlXzEgPSByZXF1aXJlKFwiLi9UaWVkU3RhdHVzLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRpZWRTdGF0dXNcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChUaWVkU3RhdHVzX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkRvY3VtZW50TGluayA9IGV4cG9ydHMuVG90YWxFeHBlbmRpdHVyZSA9IGV4cG9ydHMuUmVjaXBpZW50Q291bnRyeUJ1ZGdldCA9IGV4cG9ydHMuUmVwb3J0aW5nUmVnaW9uQnVkZ2V0ID0gZXhwb3J0cy5SZXBvcnRpbmdPcmdCdWRnZXQgPSBleHBvcnRzLlRvdGFsQnVkZ2V0ID0gZXhwb3J0cy5SZXBvcnRpbmdPcmdhbmlzYXRpb24gPSB2b2lkIDA7XG4vLyBQcm94eSBleHBvcnQgYWxsIHJlbGF0ZWQgY29tcG9uZW50cy5cbnZhciBSZXBvcnRpbmdPcmdhbmlzYXRpb25fdnVlXzEgPSByZXF1aXJlKFwiLi9SZXBvcnRpbmdPcmdhbmlzYXRpb24udnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVwb3J0aW5nT3JnYW5pc2F0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVwb3J0aW5nT3JnYW5pc2F0aW9uX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFRvdGFsQnVkZ2V0X3Z1ZV8xID0gcmVxdWlyZShcIi4vVG90YWxCdWRnZXQudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVG90YWxCdWRnZXRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChUb3RhbEJ1ZGdldF92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBSZXBvcnRpbmdPcmdCdWRnZXRfdnVlXzEgPSByZXF1aXJlKFwiLi9SZXBvcnRpbmdPcmdCdWRnZXQudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVwb3J0aW5nT3JnQnVkZ2V0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVwb3J0aW5nT3JnQnVkZ2V0X3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlcG9ydGluZ1JlZ2lvbkJ1ZGdldF92dWVfMSA9IHJlcXVpcmUoXCIuL1JlcG9ydGluZ1JlZ2lvbkJ1ZGdldC52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZXBvcnRpbmdSZWdpb25CdWRnZXRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZXBvcnRpbmdSZWdpb25CdWRnZXRfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVjaXBpZW50Q291bnRyeUJ1ZGdldF92dWVfMSA9IHJlcXVpcmUoXCIuL1JlY2lwaWVudENvdW50cnlCdWRnZXQudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVjaXBpZW50Q291bnRyeUJ1ZGdldFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlY2lwaWVudENvdW50cnlCdWRnZXRfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgVG90YWxFeHBlbmRpdHVyZV92dWVfMSA9IHJlcXVpcmUoXCIuL1RvdGFsRXhwZW5kaXR1cmUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVG90YWxFeHBlbmRpdHVyZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFRvdGFsRXhwZW5kaXR1cmVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgRG9jdW1lbnRMaW5rX3Z1ZV8xID0gcmVxdWlyZShcIi4vRG9jdW1lbnRMaW5rLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkRvY3VtZW50TGlua1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KERvY3VtZW50TGlua192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbiIsIjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb24gY2xhc3M9XCJtYWluIG10LTEwIHNtOm14LTEwIHhsOm14LTI0IHhsOnB4LTFcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm1haW5fX2NvbnRhaW5lciByb3VuZGVkLWxnIGJnLWJsdWVjb3JhbCBwYi04IHNtOm1iLTEwIG1kOm1iLTIwIG1kOmZsZXggbWQ6Ymctbm9uZSBtZDpwYi0wXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibGVmdCBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1ibHVlY29yYWwgcHgtMyBwdC01IHBiLTcyIHRleHQtd2hpdGUgc206cm91bmRlZC1yLWxnIHNtOnJvdW5kZWQtbC1sZyBzbTpweC01IHNtOnB0LTEwIG1kOmJhc2lzLTIvNCBtZDpyb3VuZGVkLXItbm9uZSBtZDpwYi0xNiBsZzpwdC00NCBsZzpwYi00NCB4bDpweC0yNFwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0X19jb250YWluZXIgcm91bmRlZC1sZyBwLTUgc206cC0xMFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGVmdF9fdGl0bGUgaG9tZS10cmFuc2xhdGVkLXRleHQgZm9udC1ib2xkXCI+e3tcbiAgICAgICAgICAgIHRyYW5zbGF0ZS50ZXh0RnJvbUtleSgnaG9tZS5pYXRpX3B1Ymxpc2hpbmdfdG9vbF9oZWFkZXInKVxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgIDxwIGNsYXNzPVwiaG9tZS10cmFuc2xhdGVkLXRleHQgcHQtMiBzbTpwdC02IHNtOnBiLThcIj5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgIHRyYW5zbGF0ZS50ZXh0RnJvbUtleShcbiAgICAgICAgICAgICAgICAnaG9tZS5pYXRpX3B1Ymxpc2hpbmdfdG9vbF9zZWN0aW9uLndlbGNvbWVfdGV4dCdcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJsb2NrXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhvbWUtdHJhbnNsYXRlZC10ZXh0IGZsZXggZmxleC13cmFwXCI+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgcGFnZUNvbnRlbnQgPT09IHRyYW5zbGF0ZS53ZWJUZXh0KCdqb2luX25vdycpXG4gICAgICAgICAgICAgICAgICA/IHRyYW5zbGF0ZS50ZXh0RnJvbUtleShcbiAgICAgICAgICAgICAgICAgICAgICAnaG9tZS5pYXRpX3B1Ymxpc2hpbmdfdG9vbF9zZWN0aW9uLmhhdmVudF9yZWdpc3RlcmVkX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICA6IHRyYW5zbGF0ZS50ZXh0RnJvbUtleShcbiAgICAgICAgICAgICAgICAgICAgICAnaG9tZS5pYXRpX3B1Ymxpc2hpbmdfdG9vbF9zZWN0aW9uLmFscmVhZHlfaGF2ZV9hY2NvdW50X2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1sLTEgYm9yZGVyLWItMiBib3JkZXItYi10cmFuc3BhcmVudCB0ZXh0LWJhc2UgdGV4dC10dXJxdW9pc2UgaG92ZXI6Ym9yZGVyLWItMiBob3Zlcjpib3JkZXItYi10dXJxdW9pc2VcIlxuICAgICAgICAgICAgICAgIEBjbGljaz1cInRvZ2dsZVBhZ2VcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgcGFnZUNvbnRlbnQgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxTaWduSW5cbiAgICAgICAgdi1pZj1cInBhZ2VDb250ZW50ID09PSB0cmFuc2xhdGUud2ViVGV4dCgnam9pbl9ub3cnKVwiXG4gICAgICAgIDptZXNzYWdlPVwibWVzc2FnZVwiXG4gICAgICAgIDppbnRlbnQ9XCJpbnRlbnRcIlxuICAgICAgLz5cbiAgICAgIDxKb2luTm93IHYtZWxzZSAvPlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50LCByZWYgfSBmcm9tICd2dWUnO1xuaW1wb3J0IFNpZ25JbiBmcm9tICcuL3BhcnRpYWxzL1NpZ25Jbi52dWUnO1xuaW1wb3J0IEpvaW5Ob3cgZnJvbSAnLi9wYXJ0aWFscy9Kb2luTm93LnZ1ZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGUgfSBmcm9tICdDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyJztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgY29tcG9uZW50czoge1xuICAgIEpvaW5Ob3csXG4gICAgU2lnbkluLFxuICB9LFxuICBwcm9wczoge1xuICAgIHBhZ2U6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6ICdzaWduaW4nLFxuICAgIH0sXG4gICAgbWVzc2FnZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSxcbiAgICBpbnRlbnQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0sXG4gIH0sXG4gIHNldHVwKHByb3BzKSB7XG4gICAgY29uc3QgdHJhbnNsYXRlID0gbmV3IFRyYW5zbGF0ZSgpO1xuICAgIGNvbnN0IHBhZ2VDb250ZW50ID0gcmVmKFxuICAgICAgcHJvcHMucGFnZSA9PT0gJ3NpZ25pbidcbiAgICAgICAgPyB0cmFuc2xhdGUud2ViVGV4dCgnam9pbl9ub3cnKVxuICAgICAgICA6IHRyYW5zbGF0ZS53ZWJUZXh0KCdzaWduX2luJylcbiAgICApO1xuICAgIGZ1bmN0aW9uIHRvZ2dsZVBhZ2UoKSB7XG4gICAgICBwYWdlQ29udGVudC52YWx1ZSA9XG4gICAgICAgIHBhZ2VDb250ZW50LnZhbHVlID09PSB0cmFuc2xhdGUud2ViVGV4dCgnam9pbl9ub3cnKVxuICAgICAgICAgID8gdHJhbnNsYXRlLndlYlRleHQoJ3NpZ25faW4nKVxuICAgICAgICAgIDogdHJhbnNsYXRlLndlYlRleHQoJ2pvaW5fbm93Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBhZ2VDb250ZW50LFxuICAgICAgdG9nZ2xlUGFnZSxcbiAgICAgIHRyYW5zbGF0ZSxcbiAgICB9O1xuICB9LFxufSk7XG48L3NjcmlwdD5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInNoaW1tZXJfX2Jsb2NrXCIgc3R5bGU9XCJtYXgtd2lkdGg6IDUxNXB4XCI+PC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBzY29wZWQ+XG4uc2hpbW1lcl9fYmxvY2sge1xuICBhbmltYXRpb24tZHVyYXRpb246IDJzO1xuICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcbiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gIGFuaW1hdGlvbi1uYW1lOiBwbGFjZUhvbGRlclNoaW1tZXI7XG4gIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWRlZGVkO1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgOTBkZWcsXG4gICAgI2VkZWRlZCAxNC4zNiUsXG4gICAgI2Q3ZDZkNiA1Ni4yOSUsXG4gICAgI2VkZWRlZCAxMDAlXG4gICk7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtc2l6ZTogMjQ0cHggMTA0cHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxOXB4O1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luOiAzcHggNnB4IDNweCAwcHg7XG59XG5cbkBrZXlmcmFtZXMgcGxhY2VIb2xkZXJTaGltbWVyIHtcbiAgMCUge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMCUgLSAzMDBweCkgMDtcbiAgfVxuXG4gIDIwJSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2FsYygwJSAtIDMwMHB4KSAwO1xuICB9XG5cbiAgODAlIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDEwMCUgKyAzMDBweCkgMDtcbiAgfVxuXG4gIDEwMCUge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMTAwJSArIDMwMHB4KSAwO1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8c3BhbiBjbGFzcz1cImxvYWRlclwiPjwvc3Bhbj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPjwvc2NyaXB0PlxuPHN0eWxlPlxuLmxvYWRlciB7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGJvcmRlcjogM3B4IHNvbGlkICNkNWRjZGU7XG4gIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYW5pbWF0aW9uOiByb3RhdGlvbiAxcyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgcm90YXRpb24ge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgfVxufVxuPC9zdHlsZT5cbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiXFxuLmJvcmRlci10aGlzIHtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJlZDtcXG59XFxuLm1hcmdpbi0yMCB7XFxuICBtYXJnaW46IDIwcHg7XFxufVxcbi5mb290ZXItcmliYm9uIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xcbiAgcGFkZGluZzogOHB4IDIwcHg7XFxuICBiYWNrZ3JvdW5kOiAjZmZmZGU3O1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiO0FBb0pBO0VBQ0UscUJBQXFCO0FBQ3ZCO0FBQ0E7RUFDRSxZQUFZO0FBQ2Q7QUFFQTtFQUNFLGFBQWE7RUFDYix5QkFBeUI7RUFDekIsaUJBQWlCO0VBQ2pCLG1CQUFtQjtBQUNyQlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCI8dGVtcGxhdGU+XFxuICA8ZGl2IHJlZj1cXFwicHVibGlzaGVyVHlwZU11bHRpc2VsZWN0XFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwibWFyZ2luLTIwXFxcIj5cXG4gICAgICA8cCBjbGFzcz1cXFwibS0yIHBiLTIgdGV4dC14cyBmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtbi01MFxcXCI+XFxuICAgICAgICB7eyBwcm9wcy5oZWFkZXIgfX1cXG4gICAgICA8L3A+XFxuXFxuICAgICAgPGRpdiBjbGFzcz1cXFwic2VhcmNoXFxcIiBzdHlsZT1cXFwibWFyZ2luLXJpZ2h0OiA0cHggIWltcG9ydGFudFxcXCI+XFxuICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgdi1tb2RlbD1cXFwic2VhcmNoSW5wdXRcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJzZWFyY2hfX2lucHV0IG1yLTMuNVxcXCJcXG4gICAgICAgICAgdHlwZT1cXFwidGV4dFxcXCJcXG4gICAgICAgICAgOnBsYWNlaG9sZGVyPVxcXCJgU2VhcmNoICR7cHJvcHMuaGVhZGVyfS4uLmBcXFwiXFxuICAgICAgICAgIHN0eWxlPVxcXCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA0MHB4XFxcIlxcbiAgICAgICAgICBAaW5wdXQ9XFxcInVwZGF0ZUFycmF5QnlTZWFyY2goKVxcXCJcXG4gICAgICAgIC8+XFxuICAgICAgICA8c3ZnLXZ1ZSBpY29uPVxcXCJzZWFyY2hcXFwiIC8+XFxuICAgICAgPC9kaXY+XFxuXFxuICAgICAgPGRpdiBjbGFzcz1cXFwibXktMVxcXCI+XFxuICAgICAgICA8ZGl2IHYtaWY9XFxcInNob3dOb0RhdGFDb21wb25lbnRcXFwiIGNsYXNzPVxcXCJwLTUgdGV4dC1jZW50ZXIgY2FwaXRhbGl6ZVxcXCI+XFxuICAgICAgICAgIG5vIGRhdGEgZm91bmRcXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPHVsIHYtZWxzZSBjbGFzcz1cXFwibWF4LWgtWzM1MHB4XSBvdmVyZmxvdy15LXNjcm9sbFxcXCI+XFxuICAgICAgICAgIDxsaSB2LWZvcj1cXFwiaXRlbSBpbiB0ZW1wTGlzdEl0ZW1zXFxcIiA6a2V5PVxcXCJpdGVtLmtleVxcXCI+XFxuICAgICAgICAgICAgPGRpdiB2LWlmPVxcXCJpdGVtLnNob3dcXFwiIGNsYXNzPVxcXCJtdC0yXFxcIj5cXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJtLTJcXFwiPlxcbiAgICAgICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgICAgICA6aWQ9XFxcIml0ZW0ua2V5XFxcIlxcbiAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XFxcImNoZWNrZWRCb3hlc1xcXCJcXG4gICAgICAgICAgICAgICAgICB0eXBlPVxcXCJjaGVja2JveFxcXCJcXG4gICAgICAgICAgICAgICAgICA6dmFsdWU9XFxcIml0ZW0ua2V5XFxcIlxcbiAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVxcXCJtLTIgcHgtMyB0ZXh0LW4tNDBcXFwiIDpmb3I9XFxcIml0ZW0ua2V5XFxcIj57e1xcbiAgICAgICAgICAgICAgICBpdGVtLmxhYmVsXFxuICAgICAgICAgICAgICB9fTwvbGFiZWw+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDwvbGk+XFxuICAgICAgICA8L3VsPlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG5cXG4gICAgPGRpdiBjbGFzcz1cXFwiZm9vdGVyLXJpYmJvblxcXCIgc3R5bGU9XFxcIlxcXCI+XFxuICAgICAgPEJ0bkNvbXBvbmVudFxcbiAgICAgICAgY2xhc3M9XFxcInNwYWNlXFxcIlxcbiAgICAgICAgdGV4dD1cXFwiQXBwbHlcXFwiXFxuICAgICAgICB0eXBlPVxcXCJwcmltYXJ5XFxcIlxcbiAgICAgICAgQGNsaWNrPVxcXCJhcHBseUZpbHRlclxcXCJcXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIDwvZGl2PlxcbjwvdGVtcGxhdGU+XFxuPHNjcmlwdCBsYW5nPVxcXCJ0c1xcXCIgc2V0dXA+XFxuaW1wb3J0IHtcXG4gIGRlZmluZUVtaXRzLFxcbiAgZGVmaW5lUHJvcHMsXFxuICByZWYsXFxuICBvbk1vdW50ZWQsXFxuICBvbkJlZm9yZVVubW91bnQsXFxuICBjb21wdXRlZCxcXG59IGZyb20gJ3Z1ZSc7XFxuaW1wb3J0IEJ0bkNvbXBvbmVudCBmcm9tICdDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWUnO1xcblxcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xcbiAgbGlzdEl0ZW1zOiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgaGVhZGVyOiB7XFxuICAgIHR5cGU6IFN0cmluZyxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbn0pO1xcbmludGVyZmFjZSBUZW1wSXRlbSB7XFxuICBrZXk6IHN0cmluZztcXG4gIGxhYmVsOiBzdHJpbmc7XFxuICBzaG93OiBib29sZWFuO1xcbn1cXG5cXG5sZXQgdGVtcExpc3RJdGVtcyA9IHJlZjxUZW1wSXRlbVtdPihbXSk7XFxuY29uc3QgcHVibGlzaGVyVHlwZU11bHRpc2VsZWN0ID0gcmVmKCk7XFxuXFxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlU2VsZWN0ZWRQdWJsaXNoZXInLCAnY2xvc2UnXSk7XFxubGV0IGtleXMgPSBPYmplY3Qua2V5cyhwcm9wcy5saXN0SXRlbXMpO1xcbmxldCBzZWFyY2hJbnB1dCA9IHJlZignJyk7XFxubGV0IGNoZWNrZWRCb3hlcyA9IHJlZihbXSk7XFxuXFxubGV0IGNoYW5nZVNlbGVjdGVkUHVibGlzaGVyID0gKHNlbGVjdGVkUHVibGlzaGVyVHlwZSkgPT4ge1xcbiAgZW1pdCgnY2hhbmdlU2VsZWN0ZWRQdWJsaXNoZXInLCBzZWxlY3RlZFB1Ymxpc2hlclR5cGUpO1xcbn07XFxuXFxuZm9ybWF0UHVibGlzaGVyVHlwZSgpO1xcblxcbmZ1bmN0aW9uIGZvcm1hdFB1Ymxpc2hlclR5cGUoKSB7XFxuICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKHByb3BzLmxpc3RJdGVtcyk7XFxuICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcXG4gICAgdGVtcExpc3RJdGVtcy52YWx1ZS5wdXNoKHtcXG4gICAgICBrZXk6IGtleXNbaV0sXFxuICAgICAgbGFiZWw6IHByb3BzLmxpc3RJdGVtc1trZXlzW2ldXSxcXG4gICAgICBzaG93OiB0cnVlLFxcbiAgICB9KTtcXG4gIH1cXG59XFxub25Nb3VudGVkKCgpID0+IHtcXG4gIHB1Ymxpc2hlclR5cGVNdWx0aXNlbGVjdC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKFxcbiAgICAnY2xpY2snLFxcbiAgICBrZWVwUHVibGlzaGVyTW9kZWxPcGVuXFxuICApO1xcbn0pO1xcblxcbm9uQmVmb3JlVW5tb3VudCgoKSA9PiB7XFxuICBwdWJsaXNoZXJUeXBlTXVsdGlzZWxlY3QudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcXG4gICAgJ2NsaWNrJyxcXG4gICAga2VlcFB1Ymxpc2hlck1vZGVsT3BlblxcbiAgKTtcXG59KTtcXG5cXG5jb25zdCBzaG93Tm9EYXRhQ29tcG9uZW50ID0gY29tcHV0ZWQoKCkgPT4ge1xcbiAgbGV0IGNvdW50ID0gMDtcXG4gIHRlbXBMaXN0SXRlbXMudmFsdWUubWFwKChpdGVtKSA9PiB7XFxuICAgIGlmIChpdGVtLnNob3cpIHtcXG4gICAgICBjb3VudCsrO1xcbiAgICB9XFxuICB9KTtcXG4gIHJldHVybiAhY291bnQ7XFxufSk7XFxuXFxuY29uc3QgdXBkYXRlQXJyYXlCeVNlYXJjaCA9ICgpID0+IHtcXG4gIGxldCBzZWFyY2hTdHJpbmcgPSBzZWFyY2hJbnB1dC52YWx1ZS50b0xvd2VyQ2FzZSgpO1xcblxcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XFxuICAgIGxldCBpdGVtID0gdGVtcExpc3RJdGVtcy52YWx1ZVtpXTtcXG4gICAgdGVtcExpc3RJdGVtcy52YWx1ZVtpXS5zaG93ID0gaXRlbS5sYWJlbFxcbiAgICAgIC50b0xvd2VyQ2FzZSgpXFxuICAgICAgLmluY2x1ZGVzKHNlYXJjaFN0cmluZyk7XFxuICB9XFxufTtcXG5jb25zdCBrZWVwUHVibGlzaGVyTW9kZWxPcGVuID0gKGV2ZW50KSA9PiB7XFxuICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcXG59O1xcbmNvbnN0IGFwcGx5RmlsdGVyID0gKCkgPT4ge1xcbiAgZW1pdCgnY2xvc2UnKTtcXG5cXG4gIGNoYW5nZVNlbGVjdGVkUHVibGlzaGVyKGNoZWNrZWRCb3hlcy52YWx1ZSk7XFxufTtcXG48L3NjcmlwdD5cXG48c3R5bGU+XFxuLmJvcmRlci10aGlzIHtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJlZDtcXG59XFxuLm1hcmdpbi0yMCB7XFxuICBtYXJnaW46IDIwcHg7XFxufVxcblxcbi5mb290ZXItcmliYm9uIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xcbiAgcGFkZGluZzogOHB4IDIwcHg7XFxuICBiYWNrZ3JvdW5kOiAjZmZmZGU3O1xcbn1cXG48L3N0eWxlPlxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIlxcbi5jcml0aWNhbC1jb250YWluZXJbZGF0YS12LTM3NjE3NzAyXSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjZmMGZmO1xcbiAgei1pbmRleDogMTtcXG59XFxuLmNyaXRpY2FsLWNvbnRhaW5lcltkYXRhLXYtMzc2MTc3MDJdOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjb250ZW50OiAnICc7XFxuICB6LWluZGV4OiAxMDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNhNjZlZTk7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuLmVycm9yLWRyb3Bkb3duLWNvbnRhaW5lcltkYXRhLXYtMzc2MTc3MDJdLCBcXG4ud2FybmluZy1kcm9wZG93bi1jb250YWluZXJbZGF0YS12LTM3NjE3NzAyXSwgXFxuLmNyaXRpY2FsLWRyb3Bkb3duLWNvbnRhaW5lcltkYXRhLXYtMzc2MTc3MDJdIHtcXG4gIGhlaWdodDogMHB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IGFsbDtcXG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNTAwbXM7XFxufVxcbi53YXJuaW5nLWNvbnRhaW5lcltkYXRhLXYtMzc2MTc3MDJdIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHotaW5kZXg6IDE7XFxufVxcbi5lcnJvci1jb250YWluZXJbZGF0YS12LTM3NjE3NzAyXTo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgY29udGVudDogJyAnO1xcbiAgei1pbmRleDogMTA7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWNyaW1zb24tNDApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuLmVycm9yLWNvbnRhaW5lcltkYXRhLXYtMzc2MTc3MDJdIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHotaW5kZXg6IDE7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXJvc2UpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxufVxcbi53YXJuaW5nLWNvbnRhaW5lcltkYXRhLXYtMzc2MTc3MDJdOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjb250ZW50OiAnICc7XFxuICB6LWluZGV4OiAxMDtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tY2FtZWwtNDApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuLmVycm9yLWhlbHBbZGF0YS12LTM3NjE3NzAyXSB7XFxuICBmb250LXNpemU6IDEycHg7XFxuICBwYWRkaW5nLWxlZnQ6IDMwcHg7XFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgbWFyZ2luLWJvdHRvbTogMThweDtcXG4gIGJhY2tncm91bmQtY29sb3I6IG5vbmU7XFxufVxcbi5lcnJvci1kcm9wZG93bi1jb250YWluZXIgcFtkYXRhLXYtMzc2MTc3MDJdIHtcXG4gIGNvbG9yOiBibGFjaztcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xpc3RFcnJvci52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIjtBQW9WQTtFQUNFLGtCQUFrQjtFQUNsQix5QkFBeUI7RUFDekIsVUFBVTtBQUNaO0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsWUFBWTtFQUNaLFdBQVc7RUFDWCx5QkFBeUI7RUFDekIsWUFBWTtFQUNaLFVBQVU7RUFDVixPQUFPO0VBQ1AsTUFBTTtBQUNSO0FBS0U7OztFQUFBLFdBQXNEO0VBQXRELGdCQUFzRDtFQUF0RCx3QkFBc0Q7RUFBdEQsd0RBQXNEO0VBQXRELDBCQUFBO0FBQXNEO0FBR3hEO0VBQ0Usa0JBQWtCO0VBQ2xCLFVBQVU7QUFDWjtBQUVBO0VBQ0Usa0JBQWtCO0VBQ2xCLFlBQVk7RUFDWixXQUFXO0VBQ1gsa0JBQW9CO0VBQXBCLCtEQUFvQjtFQUNwQixZQUFZO0VBQ1osVUFBVTtFQUNWLE9BQU87RUFDUCxNQUFNO0FBQ1I7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixVQUFVO0VBRVYsa0JBQWM7RUFBZCx5REFBYztBQUNoQjtBQUVBO0VBQ0Usa0JBQWtCO0VBQ2xCLFlBQVk7RUFDWixXQUFXO0VBQ1gsa0JBQWtCO0VBQWxCLDZEQUFrQjtFQUNsQixZQUFZO0VBQ1osVUFBVTtFQUNWLE9BQU87RUFDUCxNQUFNO0FBQ1I7QUFFQTtFQUNFLGVBQWU7RUFDZixrQkFBa0I7RUFDbEIsa0JBQWtCO0VBQ2xCLGdCQUFnQjtFQUNoQixtQkFBbUI7RUFDbkIsc0JBQXNCO0FBQ3hCO0FBRUE7RUFDRSxZQUFZO0FBQ2RcIixcInNvdXJjZXNDb250ZW50XCI6W1wiPHRlbXBsYXRlPlxcbiAgPGRpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwiZmxleFxcXCI+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiZ3JvdXAgcmVsYXRpdmVcXFwiPlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICA6Y2xhc3M9XFxcInsgJ2ZvbnQtYm9sZCc6IGNvdW50RXJyb3JzKGluZGV4KSB9XFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiZ3JvdXAgbWF4LXctWzMwMHB4XSBvdmVyZmxvdy1oaWRkZW4gb3ZlcmZsb3cteC1oaWRkZW4gdGV4dC1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcCB0ZXh0LXNtIHVwcGVyY2FzZSB0ZXh0LW4tNTBcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIHt7IHRpdGxlIH19XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDxkaXZcXG4gICAgICAgICAgY2xhc3M9XFxcImFic29sdXRlIGxlZnQtWzgwJV0gdG9wLTAgei1bMTEwXSBoaWRkZW4gbWF4LXctWzUwMHB4XSBvdmVyZmxvdy14LXNjcm9sbCB3aGl0ZXNwYWNlLW5vd3JhcCByb3VuZGVkIGJnLWVnZ3NoZWxsIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtbm9ybWFsIHNoYWRvdy1zbSBncm91cC1ob3ZlcjpibG9ja1xcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAge3sgdGl0bGUgfX1cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcInRlY3QteHMgbXgtMyBmb250LW5vcm1hbCB0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgPHNwYW4gY2xhc3M9XFxcImNhcGl0YWxpemVcXFwiPiAoe3sgc3RhdHVzWyd0ZW1wbGF0ZSddIH19IElkZW50aWZpZXIgPC9zcGFuPlxcbiAgICAgICAgOiB7eyBhY3Rpdml0eS5pZGVudGlmaWVyIH19KVxcbiAgICAgIDwvZGl2PlxcbiAgICAgIDxzcGFuXFxuICAgICAgICB2LWlmPVxcXCJjb3VudEVycm9ycyhpbmRleCkgPiAwXFxcIlxcbiAgICAgICAgY2xhc3M9XFxcIm1sLTQgaW5saW5lLWZsZXggY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIHNwYWNlLXgtMiB0ZXh0LWNyaW1zb24tNTBcXFwiXFxuICAgICAgICBAY2xpY2s9XFxcIlxcbiAgICAgICAgICAoKSA9PiB7XFxuICAgICAgICAgICAgc2hvd0Vycm9ycyA9ICFzaG93RXJyb3JzO1xcbiAgICAgICAgICB9XFxuICAgICAgICBcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPHNwYW4+c2hvdyB7eyBjb3VudEVycm9ycyhpbmRleCkgfX0gZXJyb3I8L3NwYW4+XFxuICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidGV4dC1bNnB4XVxcXCIgaWNvbj1cXFwiZHJvcGRvd24tYXJyb3dcXFwiIC8+XFxuICAgICAgPC9zcGFuPlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiB2LWlmPVxcXCJzaG93RXJyb3JzXFxcIiBjbGFzcz1cXFwibXQtNiBweS0yIHB4LTdcXFwiPlxcbiAgICAgIDxkaXZcXG4gICAgICAgIHYtaWY9XFxcIk9iamVjdC5rZXlzKGFjdGl2aXR5WydlcnJvcnMnXSkuaW5kZXhPZignY3JpdGljYWwnKSAhPT0gLTFcXFwiXFxuICAgICAgICA6c3R5bGU9XFxcImB3aWR0aDogJHt3aWR0aCAtIDcwfXB4O2BcXFwiXFxuICAgICAgICBjbGFzcz1cXFwiY3JpdGljYWwtY29udGFpbmVyIG10LTIgY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICBAY2xpY2s9XFxcImNyaXRpY2FsQWNjb3JkaW9uVG9nZ2xlXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxkaXZcXG4gICAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBib3JkZXIgYm9yZGVyLW5vbmUgcC0zIHBiLTAuNVxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlxcXCI+XFxuICAgICAgICAgICAgPHN2Zy12dWUgY2xhc3M9XFxcInRleHQtY3JpbXNvbi00MFxcXCIgaWNvbj1cXFwiYWxlcnRcXFwiIC8+XFxuICAgICAgICAgICAgPHNwYW4+IHt7IGVycm9yTGVuZ3RoKCdjcml0aWNhbCcpIH19IENyaXRpY2FsIGVycm9yczwvc3Bhbj5cXG4gICAgICAgICAgPC9zcGFuPlxcblxcbiAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgIGljb249XFxcImRyb3Bkb3duLWFycm93XFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJtbC0xIGN1cnNvci1wb2ludGVyIHRleHQtWzRweF0gZHVyYXRpb24tMjAwXFxcIlxcbiAgICAgICAgICAgIDpjbGFzcz1cXFwieyAncm90YXRlLTE4MCc6IHNob3dDcml0aWNhbCwgJyc6ICFzaG93Q3JpdGljYWwgfVxcXCJcXG4gICAgICAgICAgLz5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItaGVscFxcXCI+XFxuICAgICAgICAgIChUaGUgYWN0aXZpdHkgY29udGFpbnMgY3JpdGljYWwgZXJyb3JzIGFuZCB0aHVzIGNhbm5vdCBiZSB1cGxvYWRlZCB0b1xcbiAgICAgICAgICB0aGUgc3lzdGVtLilcXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiY3JpdGljYWwtZHJvcGRvd24tY29udGFpbmVyXFxcIj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY3JpdGljYWwtZHJvcGRvd25cXFwiPlxcbiAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgIHYtZm9yPVxcXCIoZWxlX2VyciwgaSkgaW4gYWN0aXZpdHlbJ2Vycm9ycyddWydjcml0aWNhbCddXFxcIlxcbiAgICAgICAgICAgICAgOmtleT1cXFwiaVxcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJwLTRcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XFxcIm1iLTIgZm9udC1zZW1pYm9sZCBjYXBpdGFsaXplXFxcIj5cXG4gICAgICAgICAgICAgICAge3sgaSB9fVxcbiAgICAgICAgICAgICAgPC9wPlxcblxcbiAgICAgICAgICAgICAgPHBcXG4gICAgICAgICAgICAgICAgdi1mb3I9XFxcIml0ZW0gaW4gT2JqZWN0LmtleXMoZWxlX2VycilcXFwiXFxuICAgICAgICAgICAgICAgIDprZXk9XFxcIihpdGVtIGFzIHN0cmluZylcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJlcnJvci1saXN0IG1iLTIgdGV4dC1zbSBmb250LW1lZGl1bVxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAge3sgaXRlbS50b1N0cmluZygpLnJlcGxhY2UoL18vZywgJyAnKS5yZXBsYWNlKC9cXFxcLi9nLCAnID4gJykgfX1cXG4gICAgICAgICAgICAgICAgPGJyIC8+XFxuICAgICAgICAgICAgICAgIHt7IGVsZV9lcnJbaXRlbV0gfX1cXG4gICAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgICA8ZGl2XFxuICAgICAgICB2LWlmPVxcXCJcXG4gICAgICAgICAgYWN0aXZpdHlbJ2Vycm9ycyddICYmXFxuICAgICAgICAgIE9iamVjdC5rZXlzKGFjdGl2aXR5WydlcnJvcnMnXSkuaW5kZXhPZignZXJyb3InKSAhPT0gLTFcXG4gICAgICAgIFxcXCJcXG4gICAgICAgIDpzdHlsZT1cXFwiYHdpZHRoOiAke3dpZHRoIC0gNzB9cHg7YFxcXCJcXG4gICAgICAgIGNsYXNzPVxcXCJlcnJvci1jb250YWluZXIgbXQtMiBjdXJzb3ItcG9pbnRlclxcXCJcXG4gICAgICAgIEBjbGljaz1cXFwiZXJyb3JBY2NvcmRpb25Ub2dnbGVcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGJvcmRlciBib3JkZXItbm9uZSBiZy1yb3NlIHAtMyBwYi0wLjVcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcXFwiPlxcbiAgICAgICAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJ0ZXh0LWNyaW1zb24tNDBcXFwiIGljb249XFxcImFsZXJ0XFxcIiAvPlxcbiAgICAgICAgICAgIDxzcGFuPnt7IGVycm9yTGVuZ3RoKCdlcnJvcicpIH19IEVycm9yczwvc3Bhbj5cXG4gICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgIGljb249XFxcImRyb3Bkb3duLWFycm93XFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJtbC0xIGN1cnNvci1wb2ludGVyIHRleHQtWzRweF0gZHVyYXRpb24tMjAwXFxcIlxcbiAgICAgICAgICAgIDpjbGFzcz1cXFwieyAncm90YXRlLTE4MCc6IHNob3dFcnJvciwgJyc6ICFzaG93RXJyb3IgfVxcXCJcXG4gICAgICAgICAgLz5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItaGVscFxcXCI+XFxuICAgICAgICAgIChUaGUgYWN0aXZpdHkgd2l0aCB0aGUgZXJyb3JzIHdpbGwgYmUgdXBsb2FkZWQgdG8gb3VyIHN5c3RlbSwgYnV0IHRoZVxcbiAgICAgICAgICBmaWVsZCBjb250YWluaW5nIHRoZSBlcnJvciB3aWxsIGJlIHJlbW92ZWQuIFlvdSB3aWxsIG5lZWQgdG8gcmVmaWxsXFxuICAgICAgICAgIHRoZXNlIGZpZWxkcyB3aXRoIGNvcnJlY3QgZGF0YSBvbmNlIHRoZSBhY3Rpdml0eSBpcyB1cGxvYWRlZCB0byBvdXJcXG4gICAgICAgICAgc3lzdGVtLilcXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItZHJvcGRvd24tY29udGFpbmVyXFxcIj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItZHJvcGRvd25cXFwiPlxcbiAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgIHYtZm9yPVxcXCIoZWxlX2VyciwgaSkgaW4gYWN0aXZpdHlbJ2Vycm9ycyddWydlcnJvciddXFxcIlxcbiAgICAgICAgICAgICAgOmtleT1cXFwiaVxcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJ0ZXh0LXByaW1hcnktYmxhY2sgYmctcm9zZSBwLTRcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XFxcIm1iLTIgZm9udC1zZW1pYm9sZCBjYXBpdGFsaXplXFxcIj5cXG4gICAgICAgICAgICAgICAge3sgaSB9fVxcbiAgICAgICAgICAgICAgPC9wPlxcblxcbiAgICAgICAgICAgICAgPHBcXG4gICAgICAgICAgICAgICAgdi1mb3I9XFxcIml0ZW0gaW4gT2JqZWN0LmtleXMoZWxlX2VycilcXFwiXFxuICAgICAgICAgICAgICAgIDprZXk9XFxcIihpdGVtIGFzIHN0cmluZylcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJlcnJvci1saXN0IG1iLTIgdGV4dC1zbSBmb250LW1lZGl1bVxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAge3sgaXRlbS50b1N0cmluZygpLnJlcGxhY2UoL18vZywgJyAnKS5yZXBsYWNlKC9cXFxcLi9nLCAnID4gJykgfX1cXG4gICAgICAgICAgICAgICAgPGJyIC8+XFxuICAgICAgICAgICAgICAgIHt7IGVsZV9lcnJbaXRlbV0gfX1cXG4gICAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgICA8ZGl2XFxuICAgICAgICB2LWlmPVxcXCJcXG4gICAgICAgICAgYWN0aXZpdHlbJ2Vycm9ycyddICYmXFxuICAgICAgICAgIE9iamVjdC5rZXlzKGFjdGl2aXR5WydlcnJvcnMnXSkuaW5kZXhPZignd2FybmluZycpICE9PSAtMVxcbiAgICAgICAgXFxcIlxcbiAgICAgICAgOnN0eWxlPVxcXCJgd2lkdGg6ICR7d2lkdGggLSA3MH1weDtgXFxcIlxcbiAgICAgICAgY2xhc3M9XFxcIndhcm5pbmctY29udGFpbmVyIG15LTIgY3Vyc29yLXBvaW50ZXIgYm9yZGVyLW5vbmUgYmctZWdnc2hlbGxcXFwiXFxuICAgICAgICBAY2xpY2s9XFxcIndhcm5pbmdBY2NvcmRpb25Ub2dnbGVcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGJnLWVnZ3NoZWxsIHAtMyBwYi0wLjVcXFwiPlxcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yXFxcIj5cXG4gICAgICAgICAgICA8c3ZnLXZ1ZSBpY29uPVxcXCJhbGVydFxcXCIgY2xhc3M9XFxcInRleHQtY2FtZWwtNDBcXFwiIC8+PHNwYW4+XFxuICAgICAgICAgICAgICB7eyBlcnJvckxlbmd0aCgnd2FybmluZycpIH19IFdhcm5pbmdzPC9zcGFuXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgaWNvbj1cXFwiZHJvcGRvd24tYXJyb3dcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcIm1sLTEgY3Vyc29yLXBvaW50ZXIgdGV4dC1bNHB4XSBkdXJhdGlvbi0yMDBcXFwiXFxuICAgICAgICAgICAgOmNsYXNzPVxcXCJ7ICdyb3RhdGUtMTgwJzogc2hvd1dhcm5pbmcsICcnOiAhc2hvd1dhcm5pbmcgfVxcXCJcXG4gICAgICAgICAgLz5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItaGVscCBiZy1lZ2dzaGVsbFxcXCI+XFxuICAgICAgICAgIChUaGUgZmllbGQgd2l0aCB3YXJuaW5ncyB3aWxsIGJlIHVwbG9hZGVkIHRvIG91ciBzeXN0ZW0uIFRoZXNlIGZpZWxkc1xcbiAgICAgICAgICBjb250YWluIGRhdGEgdGhhdCBhcmUgYWdhaW5zdCB0aGUgcnVsZXMgb2YgdGhlIElBVEkgVmFsaWRhdG9yIGFuZCB3aWxsXFxuICAgICAgICAgIGNhdXNlIHZhbGlkYXRpb24gZXJyb3JzIHdoaWxlIHB1Ymxpc2hpbmcuKVxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ3YXJuaW5nLWRyb3Bkb3duLWNvbnRhaW5lclxcXCI+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcIndhcm5pbmctZHJvcGRvd25cXFwiPlxcbiAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgIHYtZm9yPVxcXCIoZWxlX2VyciwgaSkgaW4gYWN0aXZpdHlbJ2Vycm9ycyddWyd3YXJuaW5nJ11cXFwiXFxuICAgICAgICAgICAgICA6a2V5PVxcXCJpXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImJnLWVnZ3NoZWxsIHAtNFxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8cCBjbGFzcz1cXFwibWItMiBmb250LXNlbWlib2xkIGNhcGl0YWxpemVcXFwiPlxcbiAgICAgICAgICAgICAgICB7eyBpIH19XFxuICAgICAgICAgICAgICA8L3A+XFxuXFxuICAgICAgICAgICAgICA8cFxcbiAgICAgICAgICAgICAgICB2LWZvcj1cXFwiaXRlbSBpbiBPYmplY3Qua2V5cyhlbGVfZXJyKVxcXCJcXG4gICAgICAgICAgICAgICAgOmtleT1cXFwiKGl0ZW0gYXMgc3RyaW5nKVxcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImVycm9yLWxpc3QgbWItMiB0ZXh0LXNtIGZvbnQtbWVkaXVtXFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICB7eyBpdGVtLnRvU3RyaW5nKCkucmVwbGFjZSgvXy9nLCAnICcpLnJlcGxhY2UoL1xcXFwuL2csICcgPiAnKSB9fVxcbiAgICAgICAgICAgICAgICA8YnIgLz5cXG4gICAgICAgICAgICAgICAge3sgZWxlX2VycltpdGVtXSB9fVxcbiAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gIDwvZGl2PlxcbjwvdGVtcGxhdGU+XFxuPHNjcmlwdCBzZXR1cCBsYW5nPVxcXCJ0c1xcXCI+XFxuaW1wb3J0IHsgZGVmaW5lUHJvcHMsIGNvbXB1dGVkLCByZWYgfSBmcm9tICd2dWUnO1xcbmNvbnN0IHNob3dFcnJvcnMgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHNob3dDcml0aWNhbCA9IHJlZihmYWxzZSk7XFxuY29uc3QgY3JpdGljYWxUb2dnbGUgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHNob3dFcnJvciA9IHJlZihmYWxzZSk7XFxuY29uc3QgZXJyb3JUb2dnbGUgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHdhcm5pbmdUb2dnbGUgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHNob3dXYXJuaW5nID0gcmVmKGZhbHNlKTtcXG5cXG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzKHtcXG4gIC8vIE51bWJlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZVxcbiAgaW1wb3J0RGF0YToge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIHdpZHRoOiB7IHR5cGU6IE51bWJlciwgcmVxdWlyZWQ6IGZhbHNlLCBkZWZhdWx0OiAwIH0sXFxuICBhY3Rpdml0eToge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIGluZGV4OiB7XFxuICAgIHR5cGU6IE51bWJlcixcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgc3RhdHVzOiB7XFxuICAgIHR5cGU6IFN0cmluZyxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbn0pO1xcblxcbmNvbnN0IGVycm9yTGVuZ3RoID0gKGN1cnJlbnRFcnJvcikgPT4ge1xcbiAgbGV0IGNvdW50ID0gMDtcXG5cXG4gIHByb3BzLmFjdGl2aXR5Py5lcnJvcnNbY3VycmVudEVycm9yXSAmJlxcbiAgICBPYmplY3QudmFsdWVzKHByb3BzLmFjdGl2aXR5WydlcnJvcnMnXVtjdXJyZW50RXJyb3JdKT8ubWFwKChpdGVtKSA9PiB7XFxuICAgICAgY291bnQgKz0gT2JqZWN0LmtleXMoaXRlbSBhcyBvYmplY3QpLmxlbmd0aDtcXG4gICAgfSk7XFxuXFxuICByZXR1cm4gY291bnQ7XFxufTtcXG5jb25zdCB0aXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcXG4gIHN3aXRjaCAocHJvcHMuc3RhdHVzWyd0ZW1wbGF0ZSddKSB7XFxuICAgIGNhc2UgJ2FjdGl2aXR5JzpcXG4gICAgICByZXR1cm4gcHJvcHMuYWN0aXZpdHkuZGF0YS50aXRsZVxcbiAgICAgICAgPyBwcm9wcy5hY3Rpdml0eS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZSA/PyAnVW50aXRsZWQnXFxuICAgICAgICA6ICdVbnRpdGxlZCc7XFxuXFxuICAgIGNhc2UgJ3Jlc3VsdCc6XFxuICAgICAgcmV0dXJuIHByb3BzLmFjdGl2aXR5LmRhdGEudGl0bGVcXG4gICAgICAgID8gcHJvcHMuYWN0aXZpdHkuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddID8/ICdVbnRpdGxlZCdcXG4gICAgICAgIDogJ1VudGl0bGVkJztcXG4gICAgY2FzZSAncGVyaW9kJzpcXG4gICAgICByZXR1cm4gKFxcbiAgICAgICAgKHByb3BzLmFjdGl2aXR5LmRhdGEucGVyaW9kX3N0YXJ0ICYmXFxuICAgICAgICAgIHByb3BzLmFjdGl2aXR5LmRhdGEucGVyaW9kX3N0YXJ0WzBdLmRhdGUpICtcXG4gICAgICAgICcgLSAnICtcXG4gICAgICAgIChwcm9wcy5hY3Rpdml0eS5kYXRhLnBlcmlvZF9lbmQgJiZcXG4gICAgICAgICAgcHJvcHMuYWN0aXZpdHkuZGF0YS5wZXJpb2RfZW5kWzBdLmRhdGUpXFxuICAgICAgKTtcXG4gICAgY2FzZSAnaW5kaWNhdG9yJzpcXG4gICAgICByZXR1cm4gcHJvcHMuYWN0aXZpdHkuZGF0YS50aXRsZVxcbiAgICAgICAgPyBwcm9wcy5hY3Rpdml0eS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10gPz8gJ1VudGl0bGVkJ1xcbiAgICAgICAgOiAnVW50aXRsZWQnO1xcbiAgICBkZWZhdWx0OlxcbiAgICAgIHJldHVybiAnVW50aXRsZWQnO1xcbiAgfVxcbn0pO1xcblxcbmNvbnN0IGNvdW50RXJyb3JzID0gKGFjdGl2aXR5SW5kZXgpID0+IHtcXG4gIGxldCBjb3VudCA9IDA7XFxuICBmb3IgKGNvbnN0IHR5cGUgaW4gcHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ10pIHtcXG4gICAgZm9yIChjb25zdCBpbmRleCBpbiBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXVt0eXBlXSkge1xcbiAgICAgIGNvdW50ICs9XFxuICAgICAgICBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdICYmXFxuICAgICAgICBPYmplY3Qua2V5cyhwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXVt0eXBlXVtpbmRleF0pXFxuICAgICAgICAgIC5sZW5ndGg7XFxuICAgIH1cXG4gIH1cXG5cXG4gIHJldHVybiBjb3VudDtcXG59O1xcbmNvbnN0IGNyaXRpY2FsQWNjb3JkaW9uVG9nZ2xlID0gKGU6IEV2ZW50KSA9PiB7XFxuICBzaG93Q3JpdGljYWwudmFsdWUgPSAhc2hvd0NyaXRpY2FsLnZhbHVlO1xcbiAgY29uc3QgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcXG4gIGNvbnN0IHRhcmdldCA9IChcXG4gICAgY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50IGFzIEhUTUxFbGVtZW50XFxuICApLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcuY3JpdGljYWwtZHJvcGRvd24tY29udGFpbmVyJyk7XFxuICBjb25zdCBlbEhlaWdodCA9IHRhcmdldD8ucXVlcnlTZWxlY3RvcignLmNyaXRpY2FsLWRyb3Bkb3duJyk/LmNsaWVudEhlaWdodDtcXG5cXG4gIGlmIChjcml0aWNhbFRvZ2dsZS52YWx1ZSAmJiB0YXJnZXQgIT0gbnVsbCkge1xcbiAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBoZWlnaHQ6ICR7ZWxIZWlnaHR9cHg7YDtcXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XFxuICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgYDtcXG4gICAgfSwgMTAwKTtcXG4gICAgY3JpdGljYWxUb2dnbGUudmFsdWUgPSBmYWxzZTtcXG4gIH0gZWxzZSBpZiAodGFyZ2V0ICE9IG51bGwpIHtcXG4gICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiAke2VsSGVpZ2h0fXB4O2A7XFxuXFxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xcbiAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogYXV0bztgO1xcbiAgICB9LCA2MDApO1xcblxcbiAgICBjcml0aWNhbFRvZ2dsZS52YWx1ZSA9IHRydWU7XFxuICB9XFxufTtcXG5jb25zdCB3YXJuaW5nQWNjb3JkaW9uVG9nZ2xlID0gKGU6IEV2ZW50KSA9PiB7XFxuICBzaG93V2FybmluZy52YWx1ZSA9ICFzaG93V2FybmluZy52YWx1ZTtcXG4gIGNvbnN0IGN1cnJlbnRUYXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XFxuICBjb25zdCB0YXJnZXQgPSAoXFxuICAgIGN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCBhcyBIVE1MRWxlbWVudFxcbiAgKS5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLndhcm5pbmctZHJvcGRvd24tY29udGFpbmVyJyk7XFxuICBjb25zdCBlbEhlaWdodCA9IHRhcmdldD8ucXVlcnlTZWxlY3RvcignLndhcm5pbmctZHJvcGRvd24nKT8uY2xpZW50SGVpZ2h0O1xcbiAgaWYgKHdhcm5pbmdUb2dnbGUudmFsdWUgJiYgdGFyZ2V0ICE9IG51bGwpIHtcXG4gICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiAke2VsSGVpZ2h0fXB4O2A7XFxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xcbiAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGA7XFxuICAgIH0sIDEwMCk7XFxuICAgIHdhcm5pbmdUb2dnbGUudmFsdWUgPSBmYWxzZTtcXG4gIH0gZWxzZSBpZiAodGFyZ2V0ICE9IG51bGwpIHtcXG4gICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiAke2VsSGVpZ2h0fXB4O2A7XFxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xcbiAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogYXV0bztgO1xcbiAgICB9LCAxMDApO1xcblxcbiAgICB3YXJuaW5nVG9nZ2xlLnZhbHVlID0gdHJ1ZTtcXG4gIH1cXG59O1xcbmNvbnN0IGVycm9yQWNjb3JkaW9uVG9nZ2xlID0gKGU6IEV2ZW50KSA9PiB7XFxuICBzaG93RXJyb3IudmFsdWUgPSAhc2hvd0Vycm9yLnZhbHVlO1xcbiAgY29uc3QgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcXG4gIGNvbnN0IHRhcmdldCA9IChcXG4gICAgY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50IGFzIEhUTUxFbGVtZW50XFxuICApLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcuZXJyb3ItZHJvcGRvd24tY29udGFpbmVyJyk7XFxuICBjb25zdCBlbEhlaWdodCA9IHRhcmdldD8ucXVlcnlTZWxlY3RvcignLmVycm9yLWRyb3Bkb3duJyk/LmNsaWVudEhlaWdodDtcXG4gIGlmIChlcnJvclRvZ2dsZS52YWx1ZSAmJiB0YXJnZXQgIT0gbnVsbCkge1xcbiAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBoZWlnaHQ6ICR7ZWxIZWlnaHR9cHg7YDtcXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XFxuICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgYDtcXG4gICAgfSwgMTAwKTtcXG4gICAgZXJyb3JUb2dnbGUudmFsdWUgPSBmYWxzZTtcXG4gIH0gZWxzZSBpZiAodGFyZ2V0ICE9IG51bGwpIHtcXG4gICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiAke2VsSGVpZ2h0fXB4O2A7XFxuXFxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xcbiAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogYXV0bztgO1xcbiAgICB9LCA2MDApO1xcblxcbiAgICBlcnJvclRvZ2dsZS52YWx1ZSA9IHRydWU7XFxuICB9XFxufTtcXG48L3NjcmlwdD5cXG48c3R5bGUgc2NvcGVkPlxcbi5jcml0aWNhbC1jb250YWluZXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y2ZjBmZjtcXG4gIHotaW5kZXg6IDE7XFxufVxcblxcbi5jcml0aWNhbC1jb250YWluZXI6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGNvbnRlbnQ6ICcgJztcXG4gIHotaW5kZXg6IDEwO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2E2NmVlOTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAycHg7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbn1cXG5cXG4uZXJyb3ItZHJvcGRvd24tY29udGFpbmVyLFxcbi53YXJuaW5nLWRyb3Bkb3duLWNvbnRhaW5lcixcXG4uY3JpdGljYWwtZHJvcGRvd24tY29udGFpbmVyIHtcXG4gIEBhcHBseSBoLTAgb3ZlcmZsb3ctaGlkZGVuIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMDtcXG59XFxuXFxuLndhcm5pbmctY29udGFpbmVyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHotaW5kZXg6IDE7XFxufVxcblxcbi5lcnJvci1jb250YWluZXI6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGNvbnRlbnQ6ICcgJztcXG4gIHotaW5kZXg6IDEwO1xcbiAgQGFwcGx5IGJnLWNyaW1zb24tNDA7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuXFxuLmVycm9yLWNvbnRhaW5lciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB6LWluZGV4OiAxO1xcblxcbiAgQGFwcGx5IGJnLXJvc2U7XFxufVxcblxcbi53YXJuaW5nLWNvbnRhaW5lcjo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgY29udGVudDogJyAnO1xcbiAgei1pbmRleDogMTA7XFxuICBAYXBwbHkgYmctY2FtZWwtNDA7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuXFxuLmVycm9yLWhlbHAge1xcbiAgZm9udC1zaXplOiAxMnB4O1xcbiAgcGFkZGluZy1sZWZ0OiAzMHB4O1xcbiAgZm9udC1zdHlsZTogaXRhbGljO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIG1hcmdpbi1ib3R0b206IDE4cHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiBub25lO1xcbn1cXG5cXG4uZXJyb3ItZHJvcGRvd24tY29udGFpbmVyIHAge1xcbiAgY29sb3I6IGJsYWNrO1xcbn1cXG48L3N0eWxlPlxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIlxcbi5sb2FkZXIge1xcbiAgd2lkdGg6IDIwcHg7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBib3JkZXI6IDNweCBzb2xpZCAjZDVkY2RlO1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgLXdlYmtpdC1hbmltYXRpb246IHJvdGF0aW9uIDFzIGxpbmVhciBpbmZpbml0ZTtcXG4gICAgICAgICAgYW5pbWF0aW9uOiByb3RhdGlvbiAxcyBsaW5lYXIgaW5maW5pdGU7XFxufVxcbkAtd2Via2l0LWtleWZyYW1lcyByb3RhdGlvbiB7XFxuMCUge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG59XFxuMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxufVxcbn1cXG5Aa2V5ZnJhbWVzIHJvdGF0aW9uIHtcXG4wJSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbn1cXG4xMDAlIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG59XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zcGlubmVyTG9hZGVyLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiO0FBS0E7RUFDRSxXQUFXO0VBQ1gsWUFBWTtFQUNaLHlCQUF5QjtFQUN6QixnQ0FBZ0M7RUFDaEMsa0JBQWtCO0VBQ2xCLHFCQUFxQjtFQUNyQixzQkFBc0I7RUFDdEIsOENBQXNDO1VBQXRDLHNDQUFzQztBQUN4QztBQUVBO0FBQ0U7SUFDRSx1QkFBdUI7QUFDekI7QUFDQTtJQUNFLHlCQUF5QjtBQUMzQjtBQUNGO0FBUEE7QUFDRTtJQUNFLHVCQUF1QjtBQUN6QjtBQUNBO0lBQ0UseUJBQXlCO0FBQzNCO0FBQ0ZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiPHRlbXBsYXRlPlxcbiAgPHNwYW4gY2xhc3M9XFxcImxvYWRlclxcXCI+PC9zcGFuPlxcbjwvdGVtcGxhdGU+XFxuPHNjcmlwdCBzZXR1cCBsYW5nPVxcXCJ0c1xcXCI+PC9zY3JpcHQ+XFxuPHN0eWxlPlxcbi5sb2FkZXIge1xcbiAgd2lkdGg6IDIwcHg7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBib3JkZXI6IDNweCBzb2xpZCAjZDVkY2RlO1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgYW5pbWF0aW9uOiByb3RhdGlvbiAxcyBsaW5lYXIgaW5maW5pdGU7XFxufVxcblxcbkBrZXlmcmFtZXMgcm90YXRpb24ge1xcbiAgMCUge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgfVxcbn1cXG48L3N0eWxlPlxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIlxcbkAtd2Via2l0LWtleWZyYW1lcyBzcGlubmVyLTVkODRhMWQ4IHtcXG4wJSB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCkgcm90YXRlKDBkZWcpO1xcbn1cXG4xMDAlIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKSByb3RhdGUoMzYwZGVnKTtcXG59XFxufVxcbkBrZXlmcmFtZXMgc3Bpbm5lci01ZDg0YTFkOCB7XFxuMCUge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApIHJvdGF0ZSgwZGVnKTtcXG59XFxuMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCkgcm90YXRlKDM2MGRlZyk7XFxufVxcbn1cXG4uc3BpbltkYXRhLXYtNWQ4NGExZDhdOjpiZWZvcmUge1xcbiAgLXdlYmtpdC1hbmltYXRpb246IDEuNXMgbGluZWFyIGluZmluaXRlIHNwaW5uZXItNWQ4NGExZDg7XFxuICAgICAgICAgIGFuaW1hdGlvbjogMS41cyBsaW5lYXIgaW5maW5pdGUgc3Bpbm5lci01ZDg0YTFkODtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLXBsYXktc3RhdGU6IGluaGVyaXQ7XFxuICAgICAgICAgIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBpbmhlcml0O1xcbiAgYm9yZGVyOiBzb2xpZCAzcHggI2NmZDBkMTtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6IGdyZXk7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBjb250ZW50OiAnJztcXG4gIGhlaWdodDogMjBweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogNTAlO1xcbiAgbGVmdDogNTAlO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKTtcXG4gIHdpZHRoOiAyMHB4O1xcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcXG59XFxuLnNwaW5bZGF0YS12LTVkODRhMWQ4XSB7XFxuICBoZWlnaHQ6IDQwcHg7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1hcmdpbjogYXV0bztcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vVGFibGVMYXlvdXQudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCI7QUE2UUE7QUFDRTtJQUNFLGtEQUFrRDtBQUNwRDtBQUNBO0lBQ0Usb0RBQW9EO0FBQ3REO0FBQ0Y7QUFQQTtBQUNFO0lBQ0Usa0RBQWtEO0FBQ3BEO0FBQ0E7SUFDRSxvREFBb0Q7QUFDdEQ7QUFDRjtBQUVBO0VBQ0Usd0RBQXVDO1VBQXZDLGdEQUF1QztFQUN2QyxxQ0FBNkI7VUFBN0IsNkJBQTZCO0VBQzdCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIsa0JBQWtCO0VBQ2xCLFdBQVc7RUFDWCxZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLFFBQVE7RUFDUixTQUFTO0VBQ1QscUNBQXFDO0VBQ3JDLFdBQVc7RUFDWCxzQkFBc0I7QUFDeEI7QUFDQTtFQUNFLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIsV0FBVztFQUNYLFlBQVk7QUFDZFwiLFwic291cmNlc0NvbnRlbnRcIjpbXCI8dGVtcGxhdGU+XFxuICA8ZGl2IGNsYXNzPVxcXCJpYXRpLWxpc3QtdGFibGUgbWItMTBcXFwiPlxcbiAgICA8dGFibGU+XFxuICAgICAgPHRoZWFkPlxcbiAgICAgICAgPHRyIGNsYXNzPVxcXCJiZy1uLTEwXFxcIj5cXG4gICAgICAgICAgPHRoIGlkPVxcXCJ0aXRsZVxcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImFjdGl2aXR5LXRyYW5zbGF0ZS10ZXh0XFxcIj57e1xcbiAgICAgICAgICAgICAgdHJhbnNsYXRlLmNvbW1vblRleHQoJ2FjdGl2aXR5X3RpdGxlJylcXG4gICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgPC90aD5cXG4gICAgICAgICAgPHRoIGlkPVxcXCJwdWJsaXNoaW5nLXByb2dyZXNzXFxcIiBzY29wZT1cXFwiY29sXFxcIiBjbGFzcz1cXFwicHJvZ3Jlc3MtYmFyLWhlYWRlclxcXCI+XFxuICAgICAgICAgICAgPGFcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJmbGV4IGp1c3RpZnktZW5kIHRleHQtbi01MCB0cmFuc2l0aW9uIGR1cmF0aW9uLTUwMCBob3Zlcjp0ZXh0LXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICAgIDpocmVmPVxcXCJzb3J0QnlQdWJsaXNoaW5nUHJvZ3Jlc3MoKVxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwic29ydGluZy1pbmRpY2F0b3JcXFwiIDpjbGFzcz1cXFwic29ydGluZ0RpcmVjdGlvbigpXFxcIj5cXG4gICAgICAgICAgICAgICAgPHN2Zy12dWUgOmljb249XFxcImAke3NvcnRpbmdEaXJlY3Rpb24oKX0tYXJyb3dgXFxcIiAvPlxcbiAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImFjdGl2aXR5LXRyYW5zbGF0ZS10ZXh0XFxcIj57e1xcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGUuY29tbW9uVGV4dCgncHVibGlzaGluZ19wcm9ncmVzcycpXFxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgICA8L2E+XFxuICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgIDx0aCBpZD1cXFwiZGF0ZVxcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgPGFcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJ0ZXh0LW4tNTAgdHJhbnNpdGlvbiBkdXJhdGlvbi01MDAgaG92ZXI6dGV4dC1zcHJpbmctNTBcXFwiXFxuICAgICAgICAgICAgICA6aHJlZj1cXFwic29ydEJ5RGF0ZVVybCgpXFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJzb3J0aW5nLWluZGljYXRvclxcXCIgOmNsYXNzPVxcXCJzb3J0aW5nRGlyZWN0aW9uKClcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3ZnLXZ1ZSA6aWNvbj1cXFwiYCR7c29ydGluZ0RpcmVjdGlvbigpfS1hcnJvd2BcXFwiIC8+XFxuICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiYWN0aXZpdHktdHJhbnNsYXRlLXRleHRcXFwiPnt7XFxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZS5jb21tb25UZXh0KCd1cGRhdGVkX29uJylcXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxcbiAgICAgICAgICAgIDwvYT5cXG4gICAgICAgICAgPC90aD5cXG4gICAgICAgICAgPHRoIGlkPVxcXCJzdGF0dXNcXFwiIHNjb3BlPVxcXCJjb2xcXFwiPlxcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJhY3Rpdml0eS10cmFuc2xhdGUtdGV4dCBoaWRkZW5cXFwiPnt7XFxuICAgICAgICAgICAgICB0cmFuc2xhdGUuY29tbW9uVGV4dCgnc3RhdHVzJylcXG4gICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgPC90aD5cXG4gICAgICAgICAgPHRoIGlkPVxcXCJwdWJsaXNoXFxcIiBzY29wZT1cXFwiY29sXFxcIj5cXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiYWN0aXZpdHktdHJhbnNsYXRlLXRleHQgaGlkZGVuXFxcIj57e1xcbiAgICAgICAgICAgICAgdHJhbnNsYXRlLmNvbW1vblRleHQoJ3B1Ymxpc2gnKVxcbiAgICAgICAgICAgIH19PC9zcGFuPlxcbiAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICA8dGggaWQ9XFxcImNiXFxcIiBzY29wZT1cXFwiY29sXFxcIj5cXG4gICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImN1cnNvci1wb2ludGVyXFxcIlxcbiAgICAgICAgICAgICAgQGNsaWNrPVxcXCJ0b2dnbGVTZWxlY3RBbGwoZGF0YS5kYXRhLCBzZWxlY3RBbGxWYWx1ZSlcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPHN2Zy12dWUgaWNvbj1cXFwiY2hlY2tib3hcXFwiIC8+XFxuICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICA8L3RoPlxcbiAgICAgICAgPC90cj5cXG4gICAgICA8L3RoZWFkPlxcbiAgICAgIDx0Ym9keSB2LWlmPVxcXCJkYXRhLnRvdGFsID4gMFxcXCI+XFxuICAgICAgICA8dHJcXG4gICAgICAgICAgdi1mb3I9XFxcImRhdHVtIGluIGRhdGEuZGF0YVxcXCJcXG4gICAgICAgICAgOmtleT1cXFwiZGF0dW1bJ2lkJ11cXFwiXFxuICAgICAgICAgIDpjbGFzcz1cXFwie1xcbiAgICAgICAgICAgICdhbHJlYWR5LXB1Ymxpc2hlZCc6XFxuICAgICAgICAgICAgICBkYXR1bVsnbGlua2VkX3RvX2lhdGknXSAmJiBkYXR1bVsnc3RhdHVzJ10gPT09ICdkcmFmdCcsXFxuICAgICAgICAgIH1cXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDx0ZCBjbGFzcz1cXFwidGl0bGVcXFwiPlxcbiAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLXN0YXJ0IHRyYW5zaXRpb24gZHVyYXRpb24tNTAwIGhvdmVyOnRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxQcmV2aW91c2x5UHVibGlzaGVkXFxuICAgICAgICAgICAgICAgIHYtaWY9XFxcImRhdHVtWydsaW5rZWRfdG9faWF0aSddICYmIGRhdHVtWydzdGF0dXMnXSA9PT0gJ2RyYWZ0J1xcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImFic29sdXRlIHRvcC0wIGxlZnQtMFxcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlbGxpcHNpcyByZWxhdGl2ZSB3LWZ1bGxcXFwiPlxcbiAgICAgICAgICAgICAgICA8YVxcbiAgICAgICAgICAgICAgICAgIDpocmVmPVxcXCInL2FjdGl2aXR5LycgKyBkYXR1bVsnaWQnXVxcXCJcXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiZWxsaXBzaXMgdHJhbnNsYXRlLXRleHQtbGluayB3LWZ1bGwgIW1heC13LWZ1bGwgb3ZlcmZsb3ctaGlkZGVuIHRleHQtbi01MFxcXCJcXG4gICAgICAgICAgICAgICAgICA+e3tcXG4gICAgICAgICAgICAgICAgICAgIGRhdHVtWydkZWZhdWx0X3RpdGxlX25hcnJhdGl2ZSddICYmXFxuICAgICAgICAgICAgICAgICAgICBkYXR1bVsnZGVmYXVsdF90aXRsZV9uYXJyYXRpdmUnXSAhPT0gJydcXG4gICAgICAgICAgICAgICAgICAgICAgPyBkYXR1bVsnZGVmYXVsdF90aXRsZV9uYXJyYXRpdmUnXVxcbiAgICAgICAgICAgICAgICAgICAgICA6IHRyYW5zbGF0ZS5jb21tb25UZXh0KCd1bnRpdGxlZCcpXFxuICAgICAgICAgICAgICAgICAgfX08L2FcXG4gICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ3LTUyXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZWxsaXBzaXNfX3RpdGxlLS1ob3ZlciB0cmFuc2xhdGUtdGV4dC1ob3ZlclxcXCI+e3tcXG4gICAgICAgICAgICAgICAgICAgIGRhdHVtWydkZWZhdWx0X3RpdGxlX25hcnJhdGl2ZSddICYmXFxuICAgICAgICAgICAgICAgICAgICBkYXR1bVsnZGVmYXVsdF90aXRsZV9uYXJyYXRpdmUnXSAhPT0gJydcXG4gICAgICAgICAgICAgICAgICAgICAgPyBkYXR1bVsnZGVmYXVsdF90aXRsZV9uYXJyYXRpdmUnXVxcbiAgICAgICAgICAgICAgICAgICAgICA6IHRyYW5zbGF0ZS5jb21tb25UZXh0KCd1bnRpdGxlZCcpXFxuICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDwvdGQ+XFxuXFxuICAgICAgICAgIDx0ZCBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJwcm9ncmVzcy1iYXItcGFyZW50XFxcIj5cXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInByb2dyZXNzLWJhci13cmFwcGVyXFxcIj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciBiZy1zcHJpbmctMTBcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJwcm9ncmVzcy1iYXItZmlsbCBiZy1zcHJpbmctNTBcXFwiXFxuICAgICAgICAgICAgICAgICAgICA6c3R5bGU9XFxcInsgd2lkdGg6IGRhdHVtWydjb21wbGV0ZV9wZXJjZW50YWdlJ10gKyAnJScgfVxcXCJcXG4gICAgICAgICAgICAgICAgICA+PC9kaXY+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJwcm9ncmVzcy1iYXItbnVtYmVyXFxcIj5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICAgICAgICA+e3sgZGF0dW1bJ2NvbXBsZXRlX3BlcmNlbnRhZ2UnXSB9fSU8L3NwYW5cXG4gICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDwvdGQ+XFxuXFxuICAgICAgICAgIDx0ZCBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgICB7eyBmb3JtYXREYXRlKGRhdHVtLnVwZGF0ZWRfYXQpIH19XFxuICAgICAgICAgIDwvdGQ+XFxuXFxuICAgICAgICAgIDx0ZD5cXG4gICAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHRyYW5zaXRpb24gZHVyYXRpb24tNTAwIGhvdmVyOnRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgOmNsYXNzPVxcXCJ7XFxuICAgICAgICAgICAgICAgICd0ZXh0LW4tNDAnOiBkYXR1bVsnc3RhdHVzJ10gPT09ICdkcmFmdCcsXFxuICAgICAgICAgICAgICAgICd0ZXh0LXNwcmluZy01MCc6IGRhdHVtWydzdGF0dXMnXSA9PT0gJ3B1Ymxpc2hlZCcsXFxuICAgICAgICAgICAgICB9XFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJtci0xIHRleHQtYmFzZVxcXCI+XFxuICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgOmljb249XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgZGF0dW1bJ3N0YXR1cyddID09PSAnZHJhZnQnID8gJ2RvY3VtZW50LXdyaXRlJyA6ICd0aWNrJ1xcbiAgICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJhY3Rpdml0eS10cmFuc2xhdGUtdGV4dCB0ZXh0LXNtIGxlYWRpbmctcmVsYXhlZFxcXCI+XFxuICAgICAgICAgICAgICAgIHt7XFxuICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlLnRleHRGcm9tS2V5KFxcbiAgICAgICAgICAgICAgICAgICAgYGFjdGl2aXRpZXMuc3RhdHVzX2xhYmVscy4ke2RhdHVtWydzdGF0dXMnXX1gXFxuICAgICAgICAgICAgICAgICAgKVxcbiAgICAgICAgICAgICAgICB9fTwvc3BhblxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICA8L3RkPlxcblxcbiAgICAgICAgICA8dGQ+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBmbGV4LXdyYXAgZ2FwLTJcXFwiPlxcbiAgICAgICAgICAgICAgPFVuUHVibGlzaFxcbiAgICAgICAgICAgICAgICB2LWlmPVxcXCJkYXR1bS5saW5rZWRfdG9faWF0aVxcXCJcXG4gICAgICAgICAgICAgICAgdHlwZT1cXFwib3V0bGluZVxcXCJcXG4gICAgICAgICAgICAgICAgOmFjdGl2aXR5LWlkPVxcXCJkYXR1bVsnaWQnXVxcXCJcXG4gICAgICAgICAgICAgIC8+XFxuXFxuICAgICAgICAgICAgICA8UHVibGlzaFxcbiAgICAgICAgICAgICAgICB2LWlmPVxcXCJkYXR1bVsnc3RhdHVzJ10gIT09ICdwdWJsaXNoZWQnXFxcIlxcbiAgICAgICAgICAgICAgICA6bGlua2VkLXRvLWlhdGk9XFxcImRhdHVtLmxpbmtlZF90b19pYXRpXFxcIlxcbiAgICAgICAgICAgICAgICA6c3RhdHVzPVxcXCJkYXR1bS5zdGF0dXNcXFwiXFxuICAgICAgICAgICAgICAgIDpjb3JlLWNvbXBsZXRlZD1cXFwiZGF0dW0uY29yZUNvbXBsZXRlZFxcXCJcXG4gICAgICAgICAgICAgICAgdHlwZT1cXFwib3V0bGluZVxcXCJcXG4gICAgICAgICAgICAgICAgOmFjdGl2aXR5LWlkPVxcXCJkYXR1bVsnaWQnXVxcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDwvdGQ+XFxuXFxuICAgICAgICAgIDx0aFxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJjaGVjay1jb2x1bW5cXFwiXFxuICAgICAgICAgICAgQGNsaWNrPVxcXCIoZXZlbnQ6IEV2ZW50KSA9PiBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cXFwidHJhbnNsYXRlLXRleHQgc3Itb25seVxcXCIgZm9yPVxcXCJcXFwiPlxcbiAgICAgICAgICAgICAge3sgdHJhbnNsYXRlLmNvbW1vblRleHQoJ3NlbGVjdCcpIH19IFxcXCJ7e1xcbiAgICAgICAgICAgICAgICBkYXR1bVsnZGVmYXVsdF90aXRsZV9uYXJyYXRpdmUnXVxcbiAgICAgICAgICAgICAgfX1cXFwiXFxuICAgICAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XFxcImNoZWNrYm94XFxcIj5cXG4gICAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJzdG9yZS5zdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXNcXFwiXFxuICAgICAgICAgICAgICAgIDp2YWx1ZT1cXFwiZGF0dW0uaWRcXFwiXFxuICAgICAgICAgICAgICAgIHR5cGU9XFxcImNoZWNrYm94XFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJjaGVja21hcmtcXFwiIC8+XFxuICAgICAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgICAgPC90aD5cXG4gICAgICAgIDwvdHI+XFxuICAgICAgPC90Ym9keT5cXG4gICAgICA8dGJvZHkgdi1lbHNlPlxcbiAgICAgICAgPHRkIHYtaWY9XFxcImxvYWRlclxcXCIgY29sc3Bhbj1cXFwiNVxcXCIgY2xhc3M9XFxcInRleHQtY2VudGVyXFxcIj5cXG4gICAgICAgICAgPGRpdiBjb2xzcGFuPVxcXCI1XFxcIiBjbGFzcz1cXFwic3BpblxcXCI+PC9kaXY+XFxuICAgICAgICA8L3RkPlxcbiAgICAgICAgPHRkIHYtZWxzZSBjb2xzcGFuPVxcXCI1XFxcIiBjbGFzcz1cXFwidHJhbnNsYXRlLXRleHQgdGV4dC1jZW50ZXJcXFwiPlxcbiAgICAgICAgICB7eyB0cmFuc2xhdGUuY29tbW9uVGV4dCgnYWN0aXZpdGllc19ub3RfZm91bmQnKSB9fVxcbiAgICAgICAgPC90ZD5cXG4gICAgICA8L3Rib2R5PlxcbiAgICA8L3RhYmxlPlxcbiAgPC9kaXY+XFxuPC90ZW1wbGF0ZT5cXG5cXG48c2NyaXB0IHNldHVwIGxhbmc9XFxcInRzXFxcIj5cXG5pbXBvcnQgeyBkZWZpbmVQcm9wcyB9IGZyb20gJ3Z1ZSc7XFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xcbmltcG9ydCB7IHVzZVRvZ2dsZSB9IGZyb20gJ0B2dWV1c2UvY29yZSc7XFxuXFxuLy8gVnVleCBTdG9yZVxcbmltcG9ydCB7IHVzZVN0b3JlIH0gZnJvbSAnU3RvcmUvYWN0aXZpdGllcy9pbmRleCc7XFxuXFxuaW1wb3J0IFByZXZpb3VzbHlQdWJsaXNoZWQgZnJvbSAnQ29tcG9uZW50cy9zdGF0dXMvUHJldmlvdXNseVB1Ymxpc2hlZC52dWUnO1xcbmltcG9ydCBQdWJsaXNoIGZyb20gJ0NvbXBvbmVudHMvYnV0dG9ucy9QdWJsaXNoQnV0dG9uLnZ1ZSc7XFxuaW1wb3J0IFVuUHVibGlzaCBmcm9tICdDb21wb25lbnRzL2J1dHRvbnMvVW5QdWJsaXNoQnV0dG9uLnZ1ZSc7XFxuaW1wb3J0IHsgVHJhbnNsYXRlIH0gZnJvbSAnQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlcic7XFxuLy8gaW1wb3J0IFNoaW1tZXIgZnJvbSBcXFwiQ29tcG9uZW50cy9TaGltbWVyTG9hZGluZy52dWVcXFwiO1xcbmNvbnN0IHRyYW5zbGF0ZSA9IG5ldyBUcmFuc2xhdGUoKTtcXG5jb25zdCBbc2VsZWN0QWxsVmFsdWUsIHNlbGVjdEFsbFRvZ2dsZV0gPSB1c2VUb2dnbGUoKTtcXG5cXG5kZWZpbmVQcm9wcyh7XFxuICBkYXRhOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcXG4gIGxvYWRlcjogeyB0eXBlOiBCb29sZWFuLCByZXF1aXJlZDogZmFsc2UgfSxcXG59KTtcXG5cXG5jb25zdCBzdG9yZSA9IHVzZVN0b3JlKCk7XFxuXFxuZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlOiBEYXRlKSB7XFxuICByZXR1cm4gbW9tZW50KGRhdGUpLmZyb21Ob3coKTtcXG59XFxuXFxuZnVuY3Rpb24gdG9nZ2xlU2VsZWN0QWxsKFxcbiAgYWN0aXZpdGllczogeyBbeDogc3RyaW5nXTogeyBpZDogbnVtYmVyIH0gfSxcXG4gIHNlbGVjdEFsbFZhbHVlOiBib29sZWFuXFxuKSB7XFxuICBpZiAoIXNlbGVjdEFsbFZhbHVlKSB7XFxuICAgIGxldCBpZHMgPSBbXSBhcyBudW1iZXJbXTtcXG4gICAgZm9yIChjb25zdCBkYXR1bSBpbiBhY3Rpdml0aWVzKSB7XFxuICAgICAgaWRzLnB1c2goYWN0aXZpdGllc1tkYXR1bV0uaWQpO1xcbiAgICB9XFxuICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTZWxlY3RlZEFjdGl2aXRpZXMnLCBpZHMpO1xcbiAgfSBlbHNlIHtcXG4gICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVNlbGVjdGVkQWN0aXZpdGllcycsIFtdKTtcXG4gIH1cXG4gIHNlbGVjdEFsbFRvZ2dsZSgpO1xcbn1cXG5cXG4vL1NvcnRpbmcgYnkgdXBkYXRlX2F0XFxuY29uc3QgY3VycmVudFVSTCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xcbmxldCBxdWVyeSA9ICcnLFxcbiAgZGlyZWN0aW9uID0gJ2FzYyc7XFxuXFxuY29uc3Qgc29ydGluZ0RpcmVjdGlvbiA9ICgpID0+IHtcXG4gIHJldHVybiBkaXJlY3Rpb24gPT09ICdhc2MnID8gJ2Rlc2NlbmRpbmcnIDogJ2FzY2VuZGluZyc7XFxufTtcXG5cXG5jb25zdCBzb3J0QnlQdWJsaXNoaW5nUHJvZ3Jlc3MgPSAoKSA9PiB7XFxuICBpZiAoY3VycmVudFVSTC5pbmNsdWRlcygnPycpKSB7XFxuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaCxcXG4gICAgICB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKTtcXG4gICAgcXVlcnkgPSB1cmxQYXJhbXMuZ2V0KCdxJykgPz8gJyc7XFxuICAgIGRpcmVjdGlvbiA9IHVybFBhcmFtcy5nZXQoJ2RpcmVjdGlvbicpID09PSAnZGVzYycgPyAnYXNjJyA6ICdkZXNjJztcXG4gIH1cXG5cXG4gIHJldHVybiBgP3E9JHtxdWVyeX0mb3JkZXJCeT1jb21wbGV0ZV9wZXJjZW50YWdlJmRpcmVjdGlvbj0ke2RpcmVjdGlvbn1gO1xcbn07XFxuXFxuY29uc3Qgc29ydEJ5RGF0ZVVybCA9ICgpID0+IHtcXG4gIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykpIHtcXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLFxcbiAgICAgIHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocXVlcnlTdHJpbmcpO1xcbiAgICBxdWVyeSA9IHVybFBhcmFtcy5nZXQoJ3EnKSA/PyAnJztcXG4gICAgZGlyZWN0aW9uID0gdXJsUGFyYW1zLmdldCgnZGlyZWN0aW9uJykgPT09ICdkZXNjJyA/ICdhc2MnIDogJ2Rlc2MnO1xcbiAgfVxcblxcbiAgcmV0dXJuIGA/cT0ke3F1ZXJ5fSZvcmRlckJ5PXVwZGF0ZWRfYXQmZGlyZWN0aW9uPSR7ZGlyZWN0aW9ufWA7XFxufTtcXG48L3NjcmlwdD5cXG48c3R5bGUgc2NvcGVkPlxcbkBrZXlmcmFtZXMgc3Bpbm5lciB7XFxuICAwJSB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCkgcm90YXRlKDBkZWcpO1xcbiAgfVxcbiAgMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCkgcm90YXRlKDM2MGRlZyk7XFxuICB9XFxufVxcblxcbi5zcGluOjpiZWZvcmUge1xcbiAgYW5pbWF0aW9uOiAxLjVzIGxpbmVhciBpbmZpbml0ZSBzcGlubmVyO1xcbiAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IGluaGVyaXQ7XFxuICBib3JkZXI6IHNvbGlkIDNweCAjY2ZkMGQxO1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogZ3JleTtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIGNvbnRlbnQ6ICcnO1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiA1MCU7XFxuICBsZWZ0OiA1MCU7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApO1xcbiAgd2lkdGg6IDIwcHg7XFxuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xcbn1cXG4uc3BpbiB7XFxuICBoZWlnaHQ6IDQwcHg7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1hcmdpbjogYXV0bztcXG59XFxuPC9zdHlsZT5cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJcXG4uY3JpdGljYWwtY29udGFpbmVyW2RhdGEtdi05YTYwODQzMl0ge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y2ZjBmZjtcXG4gIHotaW5kZXg6IDE7XFxufVxcbi5jcml0aWNhbC1jb250YWluZXJbZGF0YS12LTlhNjA4NDMyXTo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgY29udGVudDogJyAnO1xcbiAgei1pbmRleDogMTA7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTY2ZWU5O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDJweDtcXG4gIGxlZnQ6IDA7XFxuICB0b3A6IDA7XFxufVxcbi5lcnJvci1kcm9wZG93bi1jb250YWluZXJbZGF0YS12LTlhNjA4NDMyXSwgXFxuLndhcm5pbmctZHJvcGRvd24tY29udGFpbmVyW2RhdGEtdi05YTYwODQzMl0sIFxcbi5jcml0aWNhbC1kcm9wZG93bi1jb250YWluZXJbZGF0YS12LTlhNjA4NDMyXSB7XFxuICBoZWlnaHQ6IDBweDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0cmFuc2l0aW9uLXByb3BlcnR5OiBhbGw7XFxuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDUwMG1zO1xcbn1cXG4ud2FybmluZy1jb250YWluZXJbZGF0YS12LTlhNjA4NDMyXSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB6LWluZGV4OiAxO1xcbn1cXG4uZXJyb3ItY29udGFpbmVyW2RhdGEtdi05YTYwODQzMl06OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGNvbnRlbnQ6ICcgJztcXG4gIHotaW5kZXg6IDEwO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1jcmltc29uLTQwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDJweDtcXG4gIGxlZnQ6IDA7XFxuICB0b3A6IDA7XFxufVxcbi5lcnJvci1jb250YWluZXJbZGF0YS12LTlhNjA4NDMyXSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB6LWluZGV4OiAxO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1yb3NlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbn1cXG4ud2FybmluZy1jb250YWluZXJbZGF0YS12LTlhNjA4NDMyXTo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgY29udGVudDogJyAnO1xcbiAgei1pbmRleDogMTA7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWNhbWVsLTQwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDJweDtcXG4gIGxlZnQ6IDA7XFxuICB0b3A6IDA7XFxufVxcbi5lcnJvci1oZWxwW2RhdGEtdi05YTYwODQzMl0ge1xcbiAgZm9udC1zaXplOiAxMnB4O1xcbiAgcGFkZGluZy1sZWZ0OiAzMHB4O1xcbiAgZm9udC1zdHlsZTogaXRhbGljO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIG1hcmdpbi1ib3R0b206IDE4cHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiBub25lO1xcbn1cXG4uZXJyb3ItZHJvcGRvd24tY29udGFpbmVyIHBbZGF0YS12LTlhNjA4NDMyXSB7XFxuICBjb2xvcjogYmxhY2s7XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL0xpc3RFbGVtZW50LnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiO0FBd1lBO0VBQ0Usa0JBQWtCO0VBQ2xCLHlCQUF5QjtFQUN6QixVQUFVO0FBQ1o7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixZQUFZO0VBQ1osV0FBVztFQUNYLHlCQUF5QjtFQUN6QixZQUFZO0VBQ1osVUFBVTtFQUNWLE9BQU87RUFDUCxNQUFNO0FBQ1I7QUFLRTs7O0VBQUEsV0FBc0Q7RUFBdEQsZ0JBQXNEO0VBQXRELHdCQUFzRDtFQUF0RCx3REFBc0Q7RUFBdEQsMEJBQUE7QUFBc0Q7QUFHeEQ7RUFDRSxrQkFBa0I7RUFDbEIsVUFBVTtBQUNaO0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsWUFBWTtFQUNaLFdBQVc7RUFDWCxrQkFBb0I7RUFBcEIsK0RBQW9CO0VBQ3BCLFlBQVk7RUFDWixVQUFVO0VBQ1YsT0FBTztFQUNQLE1BQU07QUFDUjtBQUVBO0VBQ0Usa0JBQWtCO0VBQ2xCLFVBQVU7RUFFVixrQkFBYztFQUFkLHlEQUFjO0FBQ2hCO0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsWUFBWTtFQUNaLFdBQVc7RUFDWCxrQkFBa0I7RUFBbEIsNkRBQWtCO0VBQ2xCLFlBQVk7RUFDWixVQUFVO0VBQ1YsT0FBTztFQUNQLE1BQU07QUFDUjtBQUVBO0VBQ0UsZUFBZTtFQUNmLGtCQUFrQjtFQUNsQixrQkFBa0I7RUFDbEIsZ0JBQWdCO0VBQ2hCLG1CQUFtQjtFQUNuQixzQkFBc0I7QUFDeEI7QUFDQTtFQUNFLFlBQVk7QUFDZFwiLFwic291cmNlc0NvbnRlbnRcIjpbXCI8dGVtcGxhdGU+XFxuICA8dGQgY2xhc3M9XFxcInRpdGxlXFxcIj5cXG4gICAgPHNwYW4gY2xhc3M9XFxcImZsZXhcXFwiPlxcbiAgICAgIDxzcGFuXFxuICAgICAgICBjbGFzcz1cXFwiZWxsaXBzaXMgIWlubGluZS1ibG9jayB3LVs0MDBweF0gb3ZlcmZsb3cteC1oaWRkZW4gdGV4dC1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcCBmb250LW5vcm1hbFxcXCJcXG4gICAgICAgID57e1xcbiAgICAgICAgICBhY3Rpdml0eVsnZGF0YSddWyd0aXRsZSddWzBdWyduYXJyYXRpdmUnXVxcbiAgICAgICAgICAgID8gYWN0aXZpdHlbJ2RhdGEnXVsndGl0bGUnXVswXVsnbmFycmF0aXZlJ11cXG4gICAgICAgICAgICA6IHRyYW5zbGF0ZS5taXNzaW5nKClcXG4gICAgICAgIH19PC9zcGFuXFxuICAgICAgPlxcblxcbiAgICAgIDxzcGFuXFxuICAgICAgICB2LWlmPVxcXCJPYmplY3Qua2V5cyhhY3Rpdml0eVsnZXJyb3JzJ10pLmxlbmd0aCA+IDBcXFwiXFxuICAgICAgICBjbGFzcz1cXFwibWItNCBtbC00IGlubGluZS1mbGV4IGN1cnNvci1wb2ludGVyIGl0ZW1zLWNlbnRlciB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtY3JpbXNvbi01MFxcXCJcXG4gICAgICAgIEBjbGljaz1cXFwidG9nZ2xlRXJyb3JcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPHNwYW4gY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlxcXCI+XFxuICAgICAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJ0ZXh0LWNyaW1zb24tNDBcXFwiIGljb249XFxcImFsZXJ0XFxcIiAvPlxcbiAgICAgICAgICA8c3Bhbj5cXG4gICAgICAgICAgICB7eyB0cmFuc2xhdGUuY29tbW9uVGV4dCgnc2hvdycpIH19IHt7IGNvdW50RXJyb3JzKCkgfX1cXG4gICAgICAgICAgICB7eyB0cmFuc2xhdGUuYnV0dG9uKCdpc3N1ZXMnKSB9fTwvc3BhblxcbiAgICAgICAgICA+XFxuICAgICAgICA8L3NwYW4+XFxuXFxuICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICBpY29uPVxcXCJkcm9wZG93bi1hcnJvd1xcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcIm1sLTEgdGV4dC1bNHB4XSBkdXJhdGlvbi0yMDBcXFwiXFxuICAgICAgICAgIDpjbGFzcz1cXFwieyAncm90YXRlLTE4MCc6IGFjdGl2ZSwgJyc6ICFhY3RpdmUgfVxcXCJcXG4gICAgICAgIC8+IDwvc3BhblxcbiAgICA+PC9zcGFuPlxcblxcbiAgICA8ZGl2XFxuICAgICAgOnN0eWxlPVxcXCJgd2lkdGg6ICR7d2lkdGggLSA0MH1weDtgXFxcIlxcbiAgICAgIGNsYXNzPVxcXCJ1cGxvYWQtZXJyb3ItY29udGVudCBoLVthdXRvXSAhbWF4LWgtW2F1dG9dIGR1cmF0aW9uLTIwMFxcXCJcXG4gICAgICA6Y2xhc3M9XFxcInsgY2xvc2VkOiAhYWN0aXZlIH1cXFwiXFxuICAgID5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJweS00XFxcIj5cXG4gICAgICAgIDxkaXZcXG4gICAgICAgICAgdi1pZj1cXFwiT2JqZWN0LmtleXMoYWN0aXZpdHlbJ2Vycm9ycyddKS5pbmRleE9mKCdjcml0aWNhbCcpICE9PSAtMVxcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcImNyaXRpY2FsLWNvbnRhaW5lciBtdC0yIGN1cnNvci1wb2ludGVyXFxcIlxcbiAgICAgICAgICA6c3R5bGU9XFxcImB3aWR0aDogJHt3aWR0aCAtIDQwfXB4O2BcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwiY3JpdGljYWxBY2NvcmRpb25Ub2dnbGVcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGJvcmRlciBib3JkZXItbm9uZSBwLTMgcGItMC41XFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlxcXCI+XFxuICAgICAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidGV4dC1jcmltc29uLTQwXFxcIiBpY29uPVxcXCJhbGVydFxcXCIgLz5cXG4gICAgICAgICAgICAgIDxzcGFuPlxcbiAgICAgICAgICAgICAgICB7eyBlcnJvckxlbmd0aCgnY3JpdGljYWwnKSB9fVxcbiAgICAgICAgICAgICAgICB7eyB0cmFuc2xhdGUuc3RpY2t5VGV4dCgnY3JpdGljYWwnLCAnY29tbW9uJykgfX1cXG4gICAgICAgICAgICAgICAge3sgdHJhbnNsYXRlLnN0aWNreVRleHQoJ2Vycm9ycycsICdjb21tb24nKSB9fTwvc3BhblxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgIDwvc3Bhbj5cXG5cXG4gICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgaWNvbj1cXFwiZHJvcGRvd24tYXJyb3dcXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibWwtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LVs0cHhdIGR1cmF0aW9uLTIwMFxcXCJcXG4gICAgICAgICAgICAgIDpjbGFzcz1cXFwieyAncm90YXRlLTE4MCc6IHNob3dDcml0aWNhbCwgJyc6ICFzaG93Q3JpdGljYWwgfVxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItaGVscFxcXCI+XFxuICAgICAgICAgICAgKHt7IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdhY3Rpdml0eV9jb250YWluc19jcml0aWNhbF9lcnJvcnMnKSB9fSlcXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImNyaXRpY2FsLWRyb3Bkb3duLWNvbnRhaW5lclxcXCI+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY3JpdGljYWwtZHJvcGRvd25cXFwiPlxcbiAgICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgICB2LWZvcj1cXFwiKGVsZV9lcnIsIGkpIGluIGFjdGl2aXR5WydlcnJvcnMnXVsnY3JpdGljYWwnXVxcXCJcXG4gICAgICAgICAgICAgICAgOmtleT1cXFwiaVxcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcInAtNFxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XFxcIm1iLTIgZm9udC1zZW1pYm9sZCBjYXBpdGFsaXplXFxcIj5cXG4gICAgICAgICAgICAgICAgICB7eyBpIH19XFxuICAgICAgICAgICAgICAgIDwvcD5cXG5cXG4gICAgICAgICAgICAgICAgPHBcXG4gICAgICAgICAgICAgICAgICB2LWZvcj1cXFwiaXRlbSBpbiBPYmplY3Qua2V5cyhlbGVfZXJyKVxcXCJcXG4gICAgICAgICAgICAgICAgICA6a2V5PVxcXCIoaXRlbSBhcyBzdHJpbmcpXFxcIlxcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJlcnJvci1saXN0IG1iLTIgdGV4dC1zbSBmb250LW1lZGl1bVxcXCJcXG4gICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udG9TdHJpbmcoKS5yZXBsYWNlKC9fL2csICcgJykucmVwbGFjZSgvXFxcXC4vZywgJyA+ICcpIH19XFxuICAgICAgICAgICAgICAgICAgPGJyIC8+XFxuICAgICAgICAgICAgICAgICAge3sgZWxlX2VycltpdGVtXSB9fVxcbiAgICAgICAgICAgICAgICA8L3A+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG5cXG4gICAgICAgIDxkaXZcXG4gICAgICAgICAgdi1pZj1cXFwiT2JqZWN0LmtleXMoYWN0aXZpdHlbJ2Vycm9ycyddKS5pbmRleE9mKCdlcnJvcicpICE9PSAtMVxcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcImVycm9yLWNvbnRhaW5lciBtdC0yIGN1cnNvci1wb2ludGVyXFxcIlxcbiAgICAgICAgICA6c3R5bGU9XFxcImB3aWR0aDogJHt3aWR0aCAtIDQwfXB4O2BcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwiZXJyb3JBY2NvcmRpb25Ub2dnbGVcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGJvcmRlciBib3JkZXItbm9uZSBiZy1yb3NlIHAtMyBwYi0wLjVcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yXFxcIj5cXG4gICAgICAgICAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJ0ZXh0LWNyaW1zb24tNDBcXFwiIGljb249XFxcImFsZXJ0XFxcIiAvPlxcbiAgICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgICAgPnt7IGVycm9yTGVuZ3RoKCdlcnJvcicpIH19XFxuICAgICAgICAgICAgICAgIHt7IHRyYW5zbGF0ZS5zdGlja3lUZXh0KCdlcnJvcnMnLCAnY29tbW9uJykgfX08L3NwYW5cXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgIGljb249XFxcImRyb3Bkb3duLWFycm93XFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcIm1sLTEgY3Vyc29yLXBvaW50ZXIgdGV4dC1bNHB4XSBkdXJhdGlvbi0yMDBcXFwiXFxuICAgICAgICAgICAgICA6Y2xhc3M9XFxcInsgJ3JvdGF0ZS0xODAnOiBzaG93RXJyb3IsICcnOiAhc2hvd0Vycm9yIH1cXFwiXFxuICAgICAgICAgICAgLz5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImVycm9yLWhlbHBcXFwiPlxcbiAgICAgICAgICAgICh7e1xcbiAgICAgICAgICAgICAgdHJhbnNsYXRlLmNvbW1vblRleHQoJ2FjdGl2aXRpZXNfd2l0aF9lcnJvcl93aWxsX2JlX3VwbG9hZGVkJylcXG4gICAgICAgICAgICB9fSlcXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImVycm9yLWRyb3Bkb3duLWNvbnRhaW5lclxcXCI+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItZHJvcGRvd25cXFwiPlxcbiAgICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgICB2LWZvcj1cXFwiKGVsZV9lcnIsIGkpIGluIGFjdGl2aXR5WydlcnJvcnMnXVsnZXJyb3InXVxcXCJcXG4gICAgICAgICAgICAgICAgOmtleT1cXFwiaVxcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcInRleHQtcHJpbWFyeS1ibGFjayBiZy1yb3NlIHAtNFxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XFxcIm1iLTIgZm9udC1zZW1pYm9sZCBjYXBpdGFsaXplXFxcIj5cXG4gICAgICAgICAgICAgICAgICB7eyBpIH19XFxuICAgICAgICAgICAgICAgIDwvcD5cXG5cXG4gICAgICAgICAgICAgICAgPHBcXG4gICAgICAgICAgICAgICAgICB2LWZvcj1cXFwiaXRlbSBpbiBPYmplY3Qua2V5cyhlbGVfZXJyKVxcXCJcXG4gICAgICAgICAgICAgICAgICA6a2V5PVxcXCIoaXRlbSBhcyBzdHJpbmcpXFxcIlxcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJlcnJvci1saXN0IG1iLTIgdGV4dC1zbSBmb250LW1lZGl1bVxcXCJcXG4gICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udG9TdHJpbmcoKS5yZXBsYWNlKC9fL2csICcgJykucmVwbGFjZSgvXFxcXC4vZywgJyA+ICcpIH19XFxuICAgICAgICAgICAgICAgICAgPGJyIC8+XFxuICAgICAgICAgICAgICAgICAge3sgZWxlX2VycltpdGVtXSB9fVxcbiAgICAgICAgICAgICAgICA8L3A+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDxkaXZcXG4gICAgICAgICAgdi1pZj1cXFwiT2JqZWN0LmtleXMoYWN0aXZpdHlbJ2Vycm9ycyddKS5pbmRleE9mKCd3YXJuaW5nJykgIT09IC0xXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwid2FybmluZy1jb250YWluZXIgbXktMiBjdXJzb3ItcG9pbnRlciBib3JkZXItbm9uZSBiZy1lZ2dzaGVsbFxcXCJcXG4gICAgICAgICAgOnN0eWxlPVxcXCJgd2lkdGg6ICR7d2lkdGggLSA0MH1weDtgXFxcIlxcbiAgICAgICAgICBAY2xpY2s9XFxcIndhcm5pbmdBY2NvcmRpb25Ub2dnbGVcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBiZy1lZ2dzaGVsbCBwLTMgcGItMC41XFxcIj5cXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yXFxcIj5cXG4gICAgICAgICAgICAgIDxzdmctdnVlIGljb249XFxcImFsZXJ0XFxcIiBjbGFzcz1cXFwidGV4dC1jYW1lbC00MFxcXCIgLz48c3Bhbj5cXG4gICAgICAgICAgICAgICAge3sgZXJyb3JMZW5ndGgoJ3dhcm5pbmcnKSB9fVxcbiAgICAgICAgICAgICAgICB7eyB0cmFuc2xhdGUuc3RpY2t5VGV4dCgnd2FybmluZ3MnLCAnY29tbW9uJykgfX08L3NwYW5cXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgIGljb249XFxcImRyb3Bkb3duLWFycm93XFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcIm1sLTEgY3Vyc29yLXBvaW50ZXIgdGV4dC1bNHB4XSBkdXJhdGlvbi0yMDBcXFwiXFxuICAgICAgICAgICAgICA6Y2xhc3M9XFxcInsgJ3JvdGF0ZS0xODAnOiBzaG93V2FybmluZywgJyc6ICFzaG93V2FybmluZyB9XFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlcnJvci1oZWxwIGJnLWVnZ3NoZWxsXFxcIj5cXG4gICAgICAgICAgICAoe3sgdHJhbnNsYXRlLmNvbW1vblRleHQoJ2ZpZWxkX3dpdGhfd2FybmluZ193aWxsX2JlX3VwbG9hZGVkJykgfX0pXFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ3YXJuaW5nLWRyb3Bkb3duLWNvbnRhaW5lclxcXCI+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwid2FybmluZy1kcm9wZG93blxcXCI+XFxuICAgICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICAgIHYtZm9yPVxcXCIoZWxlX2VyciwgaSkgaW4gYWN0aXZpdHlbJ2Vycm9ycyddWyd3YXJuaW5nJ11cXFwiXFxuICAgICAgICAgICAgICAgIDprZXk9XFxcImlcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJiZy1lZ2dzaGVsbCBwLTRcXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVxcXCJtYi0yIGZvbnQtc2VtaWJvbGQgY2FwaXRhbGl6ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAge3sgaSB9fVxcbiAgICAgICAgICAgICAgICA8L3A+XFxuXFxuICAgICAgICAgICAgICAgIDxwXFxuICAgICAgICAgICAgICAgICAgdi1mb3I9XFxcIml0ZW0gaW4gT2JqZWN0LmtleXMoZWxlX2VycilcXFwiXFxuICAgICAgICAgICAgICAgICAgOmtleT1cXFwiKGl0ZW0gYXMgc3RyaW5nKVxcXCJcXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiZXJyb3ItbGlzdCBtYi0yIHRleHQtc20gZm9udC1tZWRpdW1cXFwiXFxuICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICB7eyBpdGVtLnRvU3RyaW5nKCkucmVwbGFjZSgvXy9nLCAnICcpLnJlcGxhY2UoL1xcXFwuL2csICcgPiAnKSB9fVxcbiAgICAgICAgICAgICAgICAgIDxiciAvPlxcbiAgICAgICAgICAgICAgICAgIHt7IGVsZV9lcnJbaXRlbV0gfX1cXG4gICAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgICAgPCEtLSA8ZGl2IHYtZm9yPVxcXCIoZWxlX2VyciwgaSkgaW4gYWN0aXZpdHlbJ2Vycm9ycyddXFxcIiA6a2V5PVxcXCJpXFxcIj5cXG4gICAgICAgIDx1bD5cXG4gICAgICAgICAgPGxpIHYtZm9yPVxcXCIoZXJyLCBrZXksIGopIGluIGVsZV9lcnJcXFwiIDprZXk9XFxcImpcXFwiPlxcbiAgICAgICAgICAgIDxwIGNsYXNzPVxcXCJtYi0yIGZvbnQtc2VtaWJvbGQgY2FwaXRhbGl6ZVxcXCI+XFxuICAgICAgICAgICAgICB7eyBrZXkudG9TdHJpbmcoKS5yZXBsYWNlKC9fL2csICcgJykucmVwbGFjZSgvXFxcXC4vZywgJyA+ICcpIH19XFxuICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgIDxwXFxuICAgICAgICAgICAgICB2LWZvcj1cXFwiaXRlbSBpbiBPYmplY3QudmFsdWVzKGVycilcXFwiXFxuICAgICAgICAgICAgICA6a2V5PVxcXCIoaXRlbSBhcyBzdHJpbmcpXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImVycm9yLWxpc3QgbWItMlxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICB7eyBpdGVtIH19XFxuICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICA8L2xpPlxcbiAgICAgICAgPC91bD5cXG4gICAgICA8L2Rpdj4gLS0+XFxuICAgIDwvZGl2PlxcbiAgPC90ZD5cXG5cXG4gIDx0ZD5cXG4gICAgPHNwYW4gY2xhc3M9XFxcInRleHQtc20gbGVhZGluZy1yZWxheGVkXFxcIj57e1xcbiAgICAgICFhY3Rpdml0eVsnZXhpc3RlbmNlJ11cXG4gICAgICAgID8gdHJhbnNsYXRlLmNvbW1vblRleHQoJ25ldycpXFxuICAgICAgICA6IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdleGlzdGluZycpXFxuICAgIH19PC9zcGFuPlxcbiAgPC90ZD5cXG5cXG4gIDx0ZCBjbGFzcz1cXFwiY2hlY2stY29sdW1uXFxcIiBAY2xpY2s9XFxcIihldmVudDogRXZlbnQpID0+IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXFxcIj5cXG4gICAgPGxhYmVsIGNsYXNzPVxcXCJzci1vbmx5XFxcIiBmb3I9XFxcIlxcXCI+IHt7IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdzZWxlY3QnKSB9fSA8L2xhYmVsPlxcbiAgICA8bGFiZWxcXG4gICAgICB2LWlmPVxcXCJPYmplY3Qua2V5cyhhY3Rpdml0eVsnZXJyb3JzJ10pLmluZGV4T2YoJ2NyaXRpY2FsJykgPT09IC0xXFxcIlxcbiAgICAgIGNsYXNzPVxcXCJjaGVja2JveFxcXCJcXG4gICAgPlxcbiAgICAgIDxpbnB1dFxcbiAgICAgICAgdi1tb2RlbD1cXFwiYWN0aXZpdGllc1xcXCJcXG4gICAgICAgIHR5cGU9XFxcImNoZWNrYm94XFxcIlxcbiAgICAgICAgOnZhbHVlPVxcXCJpbmRleFxcXCJcXG4gICAgICAgIEBjbGljaz1cXFwic2VsZWN0RWxlbWVudChpbmRleClcXFwiXFxuICAgICAgLz5cXG4gICAgICA8c3BhbiBjbGFzcz1cXFwiY2hlY2ttYXJrXFxcIiAvPlxcbiAgICA8L2xhYmVsPlxcbiAgICA8bGFiZWwgdi1lbHNlIGNsYXNzPVxcXCJjaGVja2JveFxcXCI+XFxuICAgICAgPHNwYW4gY2xhc3M9XFxcImNoZWNrbWFya1xcXCIgLz5cXG4gICAgPC9sYWJlbD5cXG4gIDwvdGQ+XFxuPC90ZW1wbGF0ZT5cXG5cXG48c2NyaXB0IHNldHVwIGxhbmc9XFxcInRzXFxcIj5cXG5pbXBvcnQgeyBkZWZpbmVQcm9wcywgZGVmaW5lRW1pdHMsIHJlZiwgd2F0Y2gsIHJlYWN0aXZlIH0gZnJvbSAndnVlJztcXG5pbXBvcnQgeyBUcmFuc2xhdGUgfSBmcm9tICdDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyJztcXG5cXG5jb25zdCB0cmFuc2xhdGUgPSBuZXcgVHJhbnNsYXRlKCk7XFxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wcyh7XFxuICBhY3Rpdml0eToge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIGluZGV4OiB7XFxuICAgIHR5cGU6IFN0cmluZyxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgd2lkdGg6IHsgdHlwZTogTnVtYmVyLCByZXF1aXJlZDogZmFsc2UsIGRlZmF1bHQ6IDAgfSxcXG4gIHNlbGVjdGVkQWN0aXZpdGllczoge1xcbiAgICB0eXBlOiBTdHJpbmcsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG59KTtcXG5cXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydzZWxlY3RFbGVtZW50J10pO1xcblxcbmNvbnN0IGFjdGl2ZSA9IHJlZihmYWxzZSk7XFxuY29uc3Qgc2hvd0NyaXRpY2FsID0gcmVmKGZhbHNlKTtcXG5jb25zdCBzaG93RXJyb3IgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHNob3dXYXJuaW5nID0gcmVmKGZhbHNlKTtcXG5sZXQgYWN0aXZpdGllcyA9IHJlYWN0aXZlKFtdKTtcXG5jb25zdCBjcml0aWNhbFRvZ2dsZSA9IHJlZihmYWxzZSk7XFxuY29uc3QgZXJyb3JUb2dnbGUgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHdhcm5pbmdUb2dnbGUgPSByZWYoZmFsc2UpO1xcblxcbmZ1bmN0aW9uIHRvZ2dsZUVycm9yKCkge1xcbiAgYWN0aXZlLnZhbHVlID0gIWFjdGl2ZS52YWx1ZTtcXG59XFxuXFxuY29uc3Qgc2VsZWN0RWxlbWVudCA9IChpbmRleCkgPT4ge1xcbiAgZW1pdCgnc2VsZWN0RWxlbWVudCcsIGluZGV4KTtcXG59O1xcblxcbmNvbnN0IGNvdW50RXJyb3JzID0gKCkgPT4ge1xcbiAgbGV0IGNvdW50ID0gMDtcXG5cXG4gIGZvciAoY29uc3QgdHlwZSBpbiBwcm9wcy5hY3Rpdml0eVsnZXJyb3JzJ10pIHtcXG4gICAgZm9yIChjb25zdCBpbmRleCBpbiBwcm9wcy5hY3Rpdml0eVsnZXJyb3JzJ11bdHlwZV0pIHtcXG4gICAgICBjb3VudCArPSBPYmplY3Qua2V5cyhwcm9wcy5hY3Rpdml0eVsnZXJyb3JzJ11bdHlwZV1baW5kZXhdKS5sZW5ndGg7XFxuICAgIH1cXG4gIH1cXG5cXG4gIHJldHVybiBjb3VudDtcXG59O1xcblxcbmNvbnN0IGNyaXRpY2FsQWNjb3JkaW9uVG9nZ2xlID0gKGU6IEV2ZW50KSA9PiB7XFxuICBzaG93Q3JpdGljYWwudmFsdWUgPSAhc2hvd0NyaXRpY2FsLnZhbHVlO1xcbiAgY29uc3QgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcXG4gIGNvbnN0IHRhcmdldCA9IChcXG4gICAgY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50IGFzIEhUTUxFbGVtZW50XFxuICApLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcuY3JpdGljYWwtZHJvcGRvd24tY29udGFpbmVyJyk7XFxuICBjb25zdCBlbEhlaWdodCA9IHRhcmdldD8ucXVlcnlTZWxlY3RvcignLmNyaXRpY2FsLWRyb3Bkb3duJyk/LmNsaWVudEhlaWdodDtcXG5cXG4gIGlmIChjcml0aWNhbFRvZ2dsZS52YWx1ZSkge1xcbiAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcXG4gICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBoZWlnaHQ6ICR7ZWxIZWlnaHR9cHg7YDtcXG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcXG4gICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGA7XFxuICAgICAgfSwgMTAwKTtcXG4gICAgICBjcml0aWNhbFRvZ2dsZS52YWx1ZSA9IGZhbHNlO1xcbiAgICB9XFxuICB9IGVsc2Uge1xcbiAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcXG4gICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBoZWlnaHQ6ICR7ZWxIZWlnaHR9cHg7YDtcXG5cXG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcXG4gICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogYXV0bztgO1xcbiAgICAgIH0sIDYwMCk7XFxuXFxuICAgICAgY3JpdGljYWxUb2dnbGUudmFsdWUgPSB0cnVlO1xcbiAgICB9XFxuICB9XFxufTtcXG5jb25zdCBlcnJvckFjY29yZGlvblRvZ2dsZSA9IChlOiBFdmVudCkgPT4ge1xcbiAgc2hvd0Vycm9yLnZhbHVlID0gIXNob3dFcnJvci52YWx1ZTtcXG4gIGNvbnN0IGN1cnJlbnRUYXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XFxuICBjb25zdCB0YXJnZXQgPSAoXFxuICAgIGN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCBhcyBIVE1MRWxlbWVudFxcbiAgKS5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLmVycm9yLWRyb3Bkb3duLWNvbnRhaW5lcicpO1xcbiAgY29uc3QgZWxIZWlnaHQgPSB0YXJnZXQ/LnF1ZXJ5U2VsZWN0b3IoJy5lcnJvci1kcm9wZG93bicpPy5jbGllbnRIZWlnaHQ7XFxuICBpZiAoZXJyb3JUb2dnbGUudmFsdWUpIHtcXG4gICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XFxuICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiAke2VsSGVpZ2h0fXB4O2A7XFxuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XFxuICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBgO1xcbiAgICAgIH0sIDEwMCk7XFxuICAgICAgZXJyb3JUb2dnbGUudmFsdWUgPSBmYWxzZTtcXG4gICAgfVxcbiAgfSBlbHNlIHtcXG4gICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XFxuICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiAke2VsSGVpZ2h0fXB4O2A7XFxuXFxuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XFxuICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBoZWlnaHQ6IGF1dG87YDtcXG4gICAgICB9LCA2MDApO1xcblxcbiAgICAgIGVycm9yVG9nZ2xlLnZhbHVlID0gdHJ1ZTtcXG4gICAgfVxcbiAgfVxcbn07XFxuY29uc3QgZXJyb3JMZW5ndGggPSAoY3VycmVudEVycm9yKSA9PiB7XFxuICBsZXQgY291bnQgPSAwO1xcblxcbiAgLy8gaWYgKE9iamVjdC5rZXlzKHByb3BzLmFjdGl2aXR5KS5pbmRleE9mKCdlcnJvcnMnKSAhPT0gLTEpIHtcXG4gIE9iamVjdC52YWx1ZXMocHJvcHMuYWN0aXZpdHlbJ2Vycm9ycyddW2N1cnJlbnRFcnJvcl0pLm1hcCgoaXRlbSkgPT4ge1xcbiAgICBjb3VudCArPSBPYmplY3Qua2V5cyhpdGVtIGFzIG9iamVjdCkubGVuZ3RoO1xcbiAgfSk7XFxuICAvLyB9XFxuXFxuICByZXR1cm4gY291bnQ7XFxufTtcXG5jb25zdCB3YXJuaW5nQWNjb3JkaW9uVG9nZ2xlID0gKGU6IEV2ZW50KSA9PiB7XFxuICBzaG93V2FybmluZy52YWx1ZSA9ICFzaG93V2FybmluZy52YWx1ZTtcXG4gIGNvbnN0IGN1cnJlbnRUYXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XFxuICBjb25zdCB0YXJnZXQgPSAoXFxuICAgIGN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCBhcyBIVE1MRWxlbWVudFxcbiAgKS5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLndhcm5pbmctZHJvcGRvd24tY29udGFpbmVyJyk7XFxuICBjb25zdCBlbEhlaWdodCA9IHRhcmdldD8ucXVlcnlTZWxlY3RvcignLndhcm5pbmctZHJvcGRvd24nKT8uY2xpZW50SGVpZ2h0O1xcbiAgaWYgKHdhcm5pbmdUb2dnbGUudmFsdWUpIHtcXG4gICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XFxuICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiAke2VsSGVpZ2h0fXB4O2A7XFxuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XFxuICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBgO1xcbiAgICAgIH0sIDEwMCk7XFxuICAgICAgd2FybmluZ1RvZ2dsZS52YWx1ZSA9IGZhbHNlO1xcbiAgICB9XFxuICB9IGVsc2Uge1xcbiAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcXG4gICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBoZWlnaHQ6ICR7ZWxIZWlnaHR9cHg7YDtcXG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcXG4gICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogYXV0bztgO1xcbiAgICAgIH0sIDEwMCk7XFxuXFxuICAgICAgd2FybmluZ1RvZ2dsZS52YWx1ZSA9IHRydWU7XFxuICAgIH1cXG4gIH1cXG59O1xcbndhdGNoKFxcbiAgKCkgPT4gcHJvcHMuc2VsZWN0ZWRBY3Rpdml0aWVzLFxcbiAgKCkgPT4ge1xcbiAgICBsZXQgc2VsZWN0ZWREYXRhID0gSlNPTi5wYXJzZShwcm9wcy5zZWxlY3RlZEFjdGl2aXRpZXMpO1xcbiAgICBpZiAoc2VsZWN0ZWREYXRhLmxlbmd0aCkge1xcbiAgICAgIE9iamVjdC5hc3NpZ24oYWN0aXZpdGllcywgc2VsZWN0ZWREYXRhKTtcXG4gICAgfSBlbHNlIHtcXG4gICAgICBhY3Rpdml0aWVzLmxlbmd0aCA9IDA7XFxuICAgIH1cXG4gIH1cXG4pO1xcbjwvc2NyaXB0PlxcbjxzdHlsZSBzY29wZWQ+XFxuLmNyaXRpY2FsLWNvbnRhaW5lciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjZmMGZmO1xcbiAgei1pbmRleDogMTtcXG59XFxuXFxuLmNyaXRpY2FsLWNvbnRhaW5lcjo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgY29udGVudDogJyAnO1xcbiAgei1pbmRleDogMTA7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTY2ZWU5O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDJweDtcXG4gIGxlZnQ6IDA7XFxuICB0b3A6IDA7XFxufVxcblxcbi5lcnJvci1kcm9wZG93bi1jb250YWluZXIsXFxuLndhcm5pbmctZHJvcGRvd24tY29udGFpbmVyLFxcbi5jcml0aWNhbC1kcm9wZG93bi1jb250YWluZXIge1xcbiAgQGFwcGx5IGgtMCBvdmVyZmxvdy1oaWRkZW4gdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwO1xcbn1cXG5cXG4ud2FybmluZy1jb250YWluZXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgei1pbmRleDogMTtcXG59XFxuXFxuLmVycm9yLWNvbnRhaW5lcjo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgY29udGVudDogJyAnO1xcbiAgei1pbmRleDogMTA7XFxuICBAYXBwbHkgYmctY3JpbXNvbi00MDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAycHg7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbn1cXG5cXG4uZXJyb3ItY29udGFpbmVyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHotaW5kZXg6IDE7XFxuXFxuICBAYXBwbHkgYmctcm9zZTtcXG59XFxuXFxuLndhcm5pbmctY29udGFpbmVyOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjb250ZW50OiAnICc7XFxuICB6LWluZGV4OiAxMDtcXG4gIEBhcHBseSBiZy1jYW1lbC00MDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAycHg7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbn1cXG5cXG4uZXJyb3ItaGVscCB7XFxuICBmb250LXNpemU6IDEycHg7XFxuICBwYWRkaW5nLWxlZnQ6IDMwcHg7XFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgbWFyZ2luLWJvdHRvbTogMThweDtcXG4gIGJhY2tncm91bmQtY29sb3I6IG5vbmU7XFxufVxcbi5lcnJvci1kcm9wZG93bi1jb250YWluZXIgcCB7XFxuICBjb2xvcjogYmxhY2s7XFxufVxcbjwvc3R5bGU+XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiXFxuLnhscy1lcnJvcltkYXRhLXYtNWY1MDA4YjRdIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgjZmZmMWYwIDYwcHgsICNmZmZmZmYgMCUpO1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9YbHNMaXN0LnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiO0FBeWZBO0VBQ0UsMkRBQTJEO0FBQzdEXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIjx0ZW1wbGF0ZT5cXG4gIDxkaXYgY2xhc3M9XFxcInB5LTggcHgtMTBcXFwiPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWJldHdlZW5cXFwiPlxcbiAgICAgIDxoNiBjbGFzcz1cXFwidGV4dC0zeGwgZm9udC1ib2xkIHRleHQtbi01MFxcXCI+XFxuICAgICAgICBBZGQvVXBkYXRlIEFsbCA8c3BhbiBjbGFzcz1cXFwiY2FwaXRhbGl6ZVxcXCI+e3sgc3RhdHVzLnRlbXBsYXRlIH19PC9zcGFuPlxcbiAgICAgIDwvaDY+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBmbGV4LXdyYXAganVzdGlmeS1lbmQgZ2FwLTNcXFwiPlxcbiAgICAgICAgPFRvYXN0XFxuICAgICAgICAgIHYtaWY9XFxcInRvYXN0VmlzaWJpbGl0eVxcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcInRvYXN0IC1ib3R0b20tMjRcXFwiXFxuICAgICAgICAgIDptZXNzYWdlPVxcXCJ0b2FzdE1lc3NhZ2VcXFwiXFxuICAgICAgICAgIDp0eXBlPVxcXCJ0b2FzdFR5cGVcXFwiXFxuICAgICAgICAvPlxcbiAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICBjbGFzcz1cXFwicm91bmRlZCBiZy1uLTAgcHgtNCBweS0zIHRleHQteHMgZm9udC1ib2xkIHVwcGVyY2FzZSB0ZXh0LWJsdWVjb3JhbCBzaGFkb3ctbWRcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwiY2FuY2VsSW1wb3J0XFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8c3Bhbj48c3ZnLXZ1ZSBjbGFzcz1cXFwicHQtMS41IHRleHQtMnhsXFxcIiBpY29uPVxcXCJjcm9zc1xcXCIgLz48L3NwYW4+XFxuICAgICAgICAgIDxzcGFuPmNhbmNlbCB0aGlzIGltcG9ydDwvc3Bhbj5cXG4gICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICA6Y2xhc3M9XFxcInNlbGVjdGVkQWN0aXZpdGllcy5sZW5ndGggPT09IDAgJiYgJyBjdXJzb3Itbm90LWFsbG93ZWQnXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwicm91bmRlZCBiZy1ibHVlY29yYWwgcHgtNCBweS0zIHRleHQteHMgZm9udC1ib2xkIHVwcGVyY2FzZSB0ZXh0LW4tMFxcXCJcXG4gICAgICAgICAgQGNsaWNrPVxcXCJhZGRBY3Rpdml0aWVzXFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwibXItMiB0ZXh0LXNtXFxcIiBpY29uPVxcXCJ1cC1hcnJvdy1vdXRsaW5lXFxcIiAvPlxcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwibXItMlxcXCI+YWRkIDwvc3Bhbj4gKHt7IHNlbGVjdGVkQWN0aXZpdGllcy5sZW5ndGggfX0gL1xcbiAgICAgICAgICB7eyBhY3Rpdml0aWVzTGVuZ3RoID8/IDAgfX0pXFxuICAgICAgICA8L2J1dHRvbj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBzcGFjZS14LTRcXFwiPlxcbiAgICAgIDxwIGNsYXNzPVxcXCJtdC00IHRleHQtc20gdGV4dC1uLTQwXFxcIj5cXG4gICAgICAgIFNlbGVjdCBmcm9tIHRoZSBsaXN0IGJlbG93IHRvIGFkZCB7eyBzdGF0dXMudGVtcGxhdGUgfX0gdG8gdGhlXFxuICAgICAgICBwdWJsaXNoZXIuIE1ha2UgeW91ciBzZWxlY3Rpb24gYW5kIGZvbGxvdyB0aGUgb24tc2NyZWVuIHByb21wdHMgdG9cXG4gICAgICAgIHN1Y2Nlc3NmdWxseSBhZGQvdXBkYXRlIHlvdXIgc2VsZWN0ZWQge3sgc3RhdHVzLnRlbXBsYXRlIH19XFxuICAgICAgICA8Yj5cXG4gICAgICAgICAgUGxlYXNlIG5vdGUgdGhhdCB5b3UgbXVzdCByZS11cGxvYWQgYW55IHVuc2VsZWN0ZWRcXG4gICAgICAgICAge3sgc3RhdHVzLnRlbXBsYXRlIH19LCBhbmQgaWYgdGhlIGltcG9ydCBpcyBjYW5jZWxlZCwgeW91IHdpbGwgbmVlZCB0b1xcbiAgICAgICAgICB1cGxvYWQgdGhlbSBhZ2Fpbi48L2JcXG4gICAgICAgID5cXG4gICAgICA8L3A+XFxuICAgICAgPCEtLSA8ZGl2IHYtaWY9XFxcImdsb2JhbEVycm9yXFxcIiBjbGFzcz1cXFwicmVsYXRpdmUgbXQtNFxcXCI+XFxuICAgICAgICA8ZGl2XFxuICAgICAgICAgIHYtaWY9XFxcIiFzaG93R0xvYmFsRXJyb3JcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJmbGV4IHctWzI1MHB4XSBqdXN0aWZ5LWJldHdlZW4gcm91bmRlZC1sLWxnIGJvcmRlciBib3JkZXItY3JpbXNvbi0yMCBiZy1jcmltc29uLTEwIHAtNFxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleFxcXCI+XFxuICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJtci0xIC1tdC0xLjUgdGV4dC0yeGwgdGV4dC1jcmltc29uLTUwXFxcIlxcbiAgICAgICAgICAgICAgaWNvbj1cXFwid2FybmluZy1maWxsXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtc20gZm9udC1ib2xkXFxcIj5cXG4gICAgICAgICAgICAgIHt7IGdsb2JhbEVycm9yLmxlbmd0aCB9fSBnbG9iYWwgZXJyb3JzIGZvdW5kXFxuICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJjdXJzb3ItcG9pbnRlciB0ZXh0LXhzIHVwcGVyY2FzZSB0ZXh0LWJsdWVjb3JhbFxcXCJcXG4gICAgICAgICAgICBAY2xpY2s9XFxcInNob3dHTG9iYWxFcnJvciA9IHRydWVcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICBzaG93XFxuICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgICA8ZGl2XFxuICAgICAgICAgIHYtZWxzZVxcbiAgICAgICAgICBjbGFzcz1cXFwiYWJzb2x1dGUgLXRvcC00IHJpZ2h0LTAgei1bMTAwXSB3LVs0NTBweF0gcm91bmRlZC1sLWxnIGJnLXdoaXRlIHAtNFxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwibWItNCBmbGV4IGp1c3RpZnktYmV0d2VlblxcXCI+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleFxcXCI+XFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ0ZXh0LXNtIGZvbnQtYm9sZFxcXCI+XFxuICAgICAgICAgICAgICAgIHt7IGdsb2JhbEVycm9yLmxlbmd0aCB9fSBnbG9iYWwgZXJyb3JzIGZvdW5kXFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG5cXG4gICAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXIgdGV4dC14cyB1cHBlcmNhc2UgdGV4dC1ibHVlY29yYWxcXFwiXFxuICAgICAgICAgICAgICBAY2xpY2s9XFxcInNob3dHTG9iYWxFcnJvciA9IGZhbHNlXFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIGhpZGVcXG4gICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImJvcmRlci1sIGJvcmRlci1jcmltc29uLTQwIGJnLXJvc2UgcC00XFxcIj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJteS0yIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblxcXCI+XFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlclxcXCI+XFxuICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcIm1yLTEgLW10LTEuNSB0ZXh0LTJ4bCB0ZXh0LWNyaW1zb24tNTBcXFwiXFxuICAgICAgICAgICAgICAgICAgaWNvbj1cXFwiYWxlcnRcXFwiXFxuICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInRleHQtc20gZm9udC1ib2xkIGNhcGl0YWxpemVcXFwiPlxcbiAgICAgICAgICAgICAgICAgIHt7IGdsb2JhbEVycm9yLmxlbmd0aCB9fSBnbG9iYWwgZXJyb3JzXFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwibXItMSAtbXQtMS41IGN1cnNvci1wb2ludGVyIHRleHQtWzdweF0gZHVyYXRpb24tMjAwXFxcIlxcbiAgICAgICAgICAgICAgICBpY29uPVxcXCJkcm9wZG93bi1hcnJvd1xcXCJcXG4gICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJzaG93R2xvYmFsRXJyb3JMaXN0ICYmICcgcm90YXRlLTE4MCdcXFwiXFxuICAgICAgICAgICAgICAgIEBjbGljaz1cXFwic2hvd0dsb2JhbEVycm9yTGlzdCA9ICFzaG93R2xvYmFsRXJyb3JMaXN0XFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8dWwgdi1pZj1cXFwic2hvd0dsb2JhbEVycm9yTGlzdFxcXCI+XFxuICAgICAgICAgICAgICA8bGlcXG4gICAgICAgICAgICAgICAgdi1mb3I9XFxcImVycm9yIGluIGdsb2JhbEVycm9yXFxcIlxcbiAgICAgICAgICAgICAgICA6a2V5PVxcXCJlcnJvclxcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImJvcmRlci1iIGJvcmRlci1uLTIwIHAtNCB0ZXh0LXNtXFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICB7eyBlcnJvciB9fVxcbiAgICAgICAgICAgICAgPC9saT5cXG4gICAgICAgICAgICA8L3VsPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PiAtLT5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcImlhdGktbGlzdC10YWJsZSB1cGxvYWQtbGlzdC10YWJsZSBtdC00XFxcIj5cXG4gICAgICA8dGFibGU+XFxuICAgICAgICA8dGhlYWQ+XFxuICAgICAgICAgIDx0ciBjbGFzcz1cXFwiYmctbi0xMFxcXCI+XFxuICAgICAgICAgICAgPHRoIGlkPVxcXCJ0aXRsZVxcXCIgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMVxcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXJcXFwiIEBjbGljaz1cXFwic29ydFxcXCI+XFxuICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJzb3J0T3JkZXIgPT09ICdkZXNjZW5kaW5nJyA/ICcgcm90YXRlLTE4MCcgOiAnJ1xcXCJcXG4gICAgICAgICAgICAgICAgICBpY29uPVxcXCJzb3J0LWljb25cXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInB0LTEgdGV4dC1bNXB4XVxcXCJcXG4gICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDxzcGFuPnt7IHN0YXR1cy50ZW1wbGF0ZSB9fSBUaXRsZTwvc3Bhbj5cXG4gICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgIDx0aCBpZD1cXFwic3RhdHVzXFxcIiBzY29wZT1cXFwiY29sXFxcIj5cXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJibG9jayB0ZXh0LWxlZnRcXFwiPlN0YXR1czwvc3Bhbj5cXG4gICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgIDx0aCBpZD1cXFwiY2JcXFwiIHNjb3BlPVxcXCJjb2xcXFwiPlxcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImN1cnNvci1wb2ludGVyXFxcIj5cXG4gICAgICAgICAgICAgICAgPHN2Zy12dWUgaWNvbj1cXFwiY2hlY2tib3hcXFwiIEBjbGljaz1cXFwic2VsZWN0QWxsQWN0aXZpdGllcygpXFxcIiAvPlxcbiAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgIDwvdHI+XFxuICAgICAgICA8L3RoZWFkPlxcbiAgICAgICAgPHRib2R5PlxcbiAgICAgICAgICA8dHIgdi1pZj1cXFwiIWltcG9ydERhdGEubGVuZ3RoXFxcIj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJwLTQgdGV4dC1jZW50ZXJcXFwiPk5vIGRhdGEgZm91bmQgZm9yIGltcG9ydDwvZGl2PlxcbiAgICAgICAgICA8L3RyPlxcbiAgICAgICAgICA8dHJcXG4gICAgICAgICAgICB2LWZvcj1cXFwiKGFjdGl2aXR5LCBpbmRleCkgaW4gaW1wb3J0RGF0YVxcXCJcXG4gICAgICAgICAgICB2LWVsc2VcXG4gICAgICAgICAgICByZWY9XFxcInRhYmxlUm93XFxcIlxcbiAgICAgICAgICAgIDprZXk9XFxcImluZGV4XFxcIlxcbiAgICAgICAgICAgIDpjbGFzcz1cXFwie1xcbiAgICAgICAgICAgICAgJ3VwbG9hZC1lcnJvcic6XFxuICAgICAgICAgICAgICAgIGFjdGl2aXR5ICYmXFxuICAgICAgICAgICAgICAgIGFjdGl2aXR5WydlcnJvcnMnXSAmJlxcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhhY3Rpdml0eVsnZXJyb3JzJ10pLmxlbmd0aCA+IDAsXFxuICAgICAgICAgICAgfVxcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cXFwidGl0bGVcXFwiIDpjbGFzcz1cXFwiY291bnRFcnJvcnMoaW5kZXgpID4gMCAmJiAneGxzLWVycm9yJ1xcXCI+XFxuICAgICAgICAgICAgICA8WGxzTGlzdEVycm9yXFxuICAgICAgICAgICAgICAgIDp3aWR0aD1cXFwidGFibGVXaWR0aFxcXCJcXG4gICAgICAgICAgICAgICAgOmFjdGl2aXR5PVxcXCJhY3Rpdml0eVxcXCJcXG4gICAgICAgICAgICAgICAgOmluZGV4PVxcXCJpbmRleFxcXCJcXG4gICAgICAgICAgICAgICAgOmltcG9ydC1kYXRhPVxcXCJpbXBvcnREYXRhXFxcIlxcbiAgICAgICAgICAgICAgICA6c3RhdHVzPVxcXCJzdGF0dXNcXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgPHRkIDpjbGFzcz1cXFwiY291bnRFcnJvcnMoaW5kZXgpID4gMCAmJiAnIHhscy1lcnJvcidcXFwiPlxcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtc20gdGV4dC1uLTQwXFxcIj57e1xcbiAgICAgICAgICAgICAgICBhY3Rpdml0eS5leGlzdGluZyA/ICdFeGlzdGluZycgOiAnTmV3J1xcbiAgICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICA8dGRcXG4gICAgICAgICAgICAgIDpjbGFzcz1cXFwiY291bnRFcnJvcnMoaW5kZXgpID4gMCAmJiAnIHhscy1lcnJvcidcXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiY2hlY2stY29sdW1uXFxcIlxcbiAgICAgICAgICAgICAgQGNsaWNrPVxcXCIoZXZlbnQ6IEV2ZW50KSA9PiBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgICAgdi1pZj1cXFwiZXJyb3JMZW5ndGgoJ2NyaXRpY2FsJywgaW5kZXgpID09PSAwXFxcIlxcbiAgICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJzZWxlY3RlZEFjdGl2aXRpZXNcXFwiXFxuICAgICAgICAgICAgICAgIHR5cGU9XFxcImNoZWNrYm94XFxcIlxcbiAgICAgICAgICAgICAgICA6dmFsdWU9XFxcImluZGV4XFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgIDwhLS0gPHRkPnt7IGFjdGl2aXR5W2luZGV4XS5kYXRhLnRpdGxlWzBdIH19PC90ZD4gLS0+XFxuICAgICAgICAgIDwvdHI+XFxuICAgICAgICA8L3Rib2R5PlxcbiAgICAgIDwvdGFibGU+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuICA8TG9hZGVyXFxuICAgIHYtaWY9XFxcImxvYWRlclxcXCJcXG4gICAgOnRleHQ9XFxcImxvYWRlclRleHRcXFwiXFxuICAgIDpjbGFzcz1cXFwieyAnYW5pbWF0ZS1sb2FkZXInOiBsb2FkZXIgfVxcXCJcXG4gIC8+XFxuICA8TW9kYWxcXG4gICAgOm1vZGFsLWFjdGl2ZT1cXFwic2hvd0lkZW50aWZpZXJFcnJvck1vZGVsICYmIHNob3dHTG9iYWxFcnJvclxcXCJcXG4gICAgd2lkdGg9XFxcIjU4M1xcXCJcXG4gID5cXG4gICAgPGRpdiBjbGFzcz1cXFwibWItNSBmbGV4IHNwYWNlLXgtMi41XFxcIj5cXG4gICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidGV4dC00eGwgdGV4dC1jcmltc29uLTQwXFxcIiBpY29uPVxcXCJ3YXJuaW5nLWZpbGxcXFwiIC8+XFxuICAgICAgPGRpdj5cXG4gICAgICAgIDxoNiBjbGFzcz1cXFwidGV4dC1iYXNlIGZvbnQtYm9sZFxcXCI+RXJyb3JzIERldGVjdGVkPC9oNj5cXG4gICAgICAgIDxwIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi00MFxcXCI+XFxuICAgICAgICAgIFdlIGRldGVjdGVkIHNvbWUgZXJyb3JzIGluIHRoZSB1cGxvYWRlZCBmaWxlLlxcbiAgICAgICAgPC9wPlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG5cXG4gICAgPGRpdlxcbiAgICAgIGNsYXNzPVxcXCJtYi02IHJvdW5kZWQtc20gYm9yZGVyLWNyaW1zb24tMjAgYmctcm9zZSBwLTQgdGV4dC1zbSB0ZXh0LW4tNTBcXFwiXFxuICAgID5cXG4gICAgICA8aDYgY2xhc3M9XFxcIm1iLTIgdGV4dC1zbSBmb250LWJvbGRcXFwiPklkZW50aWZpZXIgRXJyb3JzPC9oNj5cXG4gICAgICA8cCBjbGFzcz1cXFwidGV4dC1zbSB0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgV2UgaGF2ZSBmb3VuZCBzb21lIGlkZW50aWZpZXIgZXJyb3JzIGluIHRoZSBpbXBvcnRlZCBmaWxlLiBZb3UgY2Fubm90XFxuICAgICAgICBpbXBvcnQgZGF0YSB1bnRpbCBhbGwgdGhlIGlkZW50aWZpZXIgZXJyb3JzIGFyZSByZXNvbHZlZC5cXG4gICAgICA8L3A+XFxuICAgICAgPHVsIGNsYXNzPVxcXCJtYXgtaC1bMjUwcHhdIG92ZXJmbG93LXktc2Nyb2xsXFxcIj5cXG4gICAgICAgIDxsaVxcbiAgICAgICAgICB2LWZvcj1cXFwiZXJyb3IgaW4gcHJvcHMuZ2xvYmFsRXJyb3JcXFwiXFxuICAgICAgICAgIDprZXk9XFxcImVycm9yXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiYm9yZGVyLWIgYm9yZGVyLW4tMjAgcC00IHRleHQtc21cXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIHt7IGVycm9yIH19XFxuICAgICAgICA8L2xpPlxcbiAgICAgIDwvdWw+XFxuICAgIDwvZGl2PlxcbiAgICA8cFxcbiAgICAgIHYtaWY9XFxcImVycm9yQ291bnQuY3JpdGljYWwgKyBlcnJvckNvdW50LmVycm9yICsgZXJyb3JDb3VudC53YXJuaW5nID4gMFxcXCJcXG4gICAgICBjbGFzcz1cXFwidGV4dC1zbSB0ZXh0LW4tNDBcXFwiXFxuICAgID5cXG4gICAgICBBZGRpdGlvbmFsbHksIHRoZXJlIGFyZSB7eyBlcnJvckNvdW50LmNyaXRpY2FsIH19IGNyaXRpY2FsIGVycm9yLFxcbiAgICAgIHt7IGVycm9yQ291bnQuZXJyb3IgfX0gZXJyb3JzIGFuZCB7eyBlcnJvckNvdW50Lndhcm5pbmcgfX0gd2FybmluZyBpbiB0aGVcXG4gICAgICBmaWxlXFxuICAgIDwvcD5cXG4gICAgPGRpdiBjbGFzcz1cXFwiZmxleCBqdXN0aWZ5LWVuZCBzcGFjZS14LTNcXFwiPlxcbiAgICAgIDxidXR0b24gY2xhc3M9XFxcImdob3N0LWJ0blxcXCIgQGNsaWNrPVxcXCJjYW5jZWxJbXBvcnRcXFwiPkNhbmNlbCBJbXBvcnQ8L2J1dHRvbj5cXG4gICAgICA8QnRuQ29tcG9uZW50XFxuICAgICAgICBjbGFzcz1cXFwiXFxcIlxcbiAgICAgICAgdGV4dD1cXFwiZG93bmxvYWQgaWRlbnRpZmllciBlcnJvcnNcXFwiXFxuICAgICAgICB0eXBlPVxcXCJwcmltYXJ5XFxcIlxcbiAgICAgICAgaWNvbj1cXFwiZG93bmxvYWRcXFwiXFxuICAgICAgICBAY2xpY2s9XFxcImRvd25sb2FkSWRlbnRpZmllckVycm9yXFxcIlxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgPC9Nb2RhbD5cXG4gIDxNb2RhbFxcbiAgICA6bW9kYWwtYWN0aXZlPVxcXCJzaG93Q3JpdGljYWxFcnJvck1vZGVsICYmICFzaG93SWRlbnRpZmllckVycm9yTW9kZWxcXFwiXFxuICAgIHdpZHRoPVxcXCI1ODNcXFwiXFxuICA+XFxuICAgIDxkaXYgY2xhc3M9XFxcIm1iLTUgZmxleCBzcGFjZS14LTIuNVxcXCI+XFxuICAgICAgPHN2Zy12dWUgY2xhc3M9XFxcInRleHQtNHhsIHRleHQtY3JpbXNvbi00MFxcXCIgaWNvbj1cXFwid2FybmluZy1maWxsXFxcIiAvPlxcbiAgICAgIDxkaXY+XFxuICAgICAgICA8aDYgY2xhc3M9XFxcInRleHQtYmFzZSBmb250LWJvbGRcXFwiPkVycm9ycyBEZXRlY3RlZDwvaDY+XFxuICAgICAgICA8cCBjbGFzcz1cXFwidGV4dC1zbSB0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICBXZSBkZXRlY3RlZCBzb21lIGVycm9ycyBpbiB0aGUgdXBsb2FkZWQgZmlsZS5cXG4gICAgICAgIDwvcD5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXZcXG4gICAgICBjbGFzcz1cXFwibWItNiByb3VuZGVkLXNtIGJvcmRlciBib3JkZXItY3JpbXNvbi0yMCBiZy1yb3NlIHAtNCB0ZXh0LXNtIHRleHQtbi01MFxcXCJcXG4gICAgPlxcbiAgICAgIDxkaXYgdi1pZj1cXFwic2hvd0NyaXRpY2FsRXJyb3JNZXNzYWdlXFxcIiBjbGFzcz1cXFwibWItNlxcXCI+XFxuICAgICAgICA8aDYgY2xhc3M9XFxcIm1iLTIgdGV4dC1zbSBmb250LWJvbGRcXFwiPkNyaXRpY2FsIEVycm9yczwvaDY+XFxuICAgICAgICA8cCBjbGFzcz1cXFwidGV4dC1zbSB0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICBTb21lIG9mIHRoZSB7eyBzdGF0dXMudGVtcGxhdGUgfX0gY29udGFpbiBjcml0aWNhbCBlcnJvcnMgYW5kIHRodXMsXFxuICAgICAgICAgIGNhbm5vdCBiZSB1cGxvYWRlZCB0byBJQVRJIFB1Ymxpc2hlci4gUGxlYXNlIHJldmlldyB0aGUgZXJyb3JzIGFuZFxcbiAgICAgICAgICBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBwcm92aWRlZCBpbiB0aGUgdXNlciBtYW51YWwuXFxuICAgICAgICA8L3A+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGp1c3RpZnktZW5kIHNwYWNlLXgtM1xcXCI+XFxuICAgICAgPGJ1dHRvbiBjbGFzcz1cXFwiZ2hvc3QtYnRuXFxcIiBAY2xpY2s9XFxcImNhbmNlbEltcG9ydFxcXCI+Q2FuY2VsIEltcG9ydDwvYnV0dG9uPlxcbiAgICAgIDxCdG5Db21wb25lbnRcXG4gICAgICAgIHRleHQ9XFxcIlJldmlldyBlcnJvcnNcXFwiXFxuICAgICAgICB0eXBlPVxcXCJwcmltYXJ5XFxcIlxcbiAgICAgICAgQGNsaWNrPVxcXCJzaG93Q3JpdGljYWxFcnJvck1vZGVsID0gZmFsc2VcXFwiXFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICA8L01vZGFsPlxcbjwvdGVtcGxhdGU+XFxuPHNjcmlwdCBzZXR1cCBsYW5nPVxcXCJ0c1xcXCI+XFxuaW1wb3J0IFhsc0xpc3RFcnJvciBmcm9tICdDb21wb25lbnRzL1hsc0xpc3RFcnJvci52dWUnO1xcbmltcG9ydCBNb2RhbCBmcm9tICdDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlJztcXG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xcbmltcG9ydCBUb2FzdCBmcm9tICdDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWUnO1xcbmltcG9ydCB7IGRlZmluZVByb3BzLCBvbk1vdW50ZWQsIHJlZiwgbmV4dFRpY2ssIG9uVW5tb3VudGVkIH0gZnJvbSAndnVlJztcXG5pbXBvcnQgTG9hZGVyIGZyb20gJ0NvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlJztcXG5pbXBvcnQgQnRuQ29tcG9uZW50IGZyb20gJ0NvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZSc7XFxuXFxuY29uc3Qgc2VsZWN0QWxsID0gcmVmKGZhbHNlKTtcXG5jb25zdCBzb3J0T3JkZXIgPSByZWYoJ2FzY2VkaW5nJyk7XFxuXFxuY29uc3QgdGFibGVSb3cgPSByZWYoe30pO1xcbmNvbnN0IHNob3dDcml0aWNhbEVycm9yTW9kZWwgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHNob3dJZGVudGlmaWVyRXJyb3JNb2RlbCA9IHJlZihmYWxzZSk7XFxuXFxuY29uc3QgbG9hZGVyID0gcmVmKGZhbHNlKSxcXG4gIGxvYWRlclRleHQgPSByZWYoJ0FkZGluZyBhY3Rpdml0aWVzJyk7XFxuY29uc3Qgc2hvd0NyaXRpY2FsRXJyb3JNZXNzYWdlID0gcmVmKGZhbHNlKTtcXG5jb25zdCBzaG93R0xvYmFsRXJyb3IgPSByZWYodHJ1ZSk7XFxuY29uc3Qgc2VsZWN0ZWRDb3VudCA9IHJlZigwKTtcXG5jb25zdCBhY3Rpdml0aWVzTGVuZ3RoID0gcmVmKDApO1xcbmNvbnN0IHNlbGVjdGVkQWN0aXZpdGllcyA9IHJlZjxzdHJpbmdbXT4oW10pO1xcbmNvbnN0IHRhYmxlV2lkdGggPSByZWYoe30pO1xcbmNvbnN0IHRvYXN0TWVzc2FnZSA9IHJlZignJyk7XFxuY29uc3QgdG9hc3RUeXBlID0gcmVmKGZhbHNlKTtcXG5jb25zdCB0b2FzdFZpc2liaWxpdHkgPSByZWYoZmFsc2UpO1xcblxcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xcbiAgc3RhdHVzOiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgLy8gTnVtYmVyIHdpdGggYSBkZWZhdWx0IHZhbHVlXFxuICBpbXBvcnREYXRhOiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgZ2xvYmFsRXJyb3I6IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBlcnJvckNvdW50OiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbn0pO1xcbmNvbnN0IGdldERpbWVuc2lvbnMgPSBhc3luYyAoKSA9PiB7XFxuICBhd2FpdCBuZXh0VGljaygpO1xcbiAgdGFibGVXaWR0aC52YWx1ZSA9IHRhYmxlUm93Py52YWx1ZVsnMCddPy5jbGllbnRXaWR0aDtcXG59O1xcblxcbmNvbnN0IHNvcnQgPSAoKSA9PiB7XFxuICBzb3J0T3JkZXIudmFsdWUgPT09ICdhc2NlbmRpbmcnXFxuICAgID8gKHNvcnRPcmRlci52YWx1ZSA9ICdkZXNjZW5kaW5nJylcXG4gICAgOiAoc29ydE9yZGVyLnZhbHVlID0gJ2FzY2VuZGluZycpO1xcblxcbiAgbGV0IHNvcnRlZERhdGEgPSBwcm9wcy5pbXBvcnREYXRhO1xcbiAgc3dpdGNoIChwcm9wcy5zdGF0dXNbJ3RlbXBsYXRlJ10pIHtcXG4gICAgY2FzZSAnYWN0aXZpdHknOlxcbiAgICAgIHNvcnRlZERhdGEuc29ydCgoYSwgYikgPT5cXG4gICAgICAgIGEuZGF0YS50aXRsZSAmJlxcbiAgICAgICAgYS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPCBiLmRhdGEudGl0bGUgJiZcXG4gICAgICAgIGIuZGF0YS50aXRsZVswXS5uYXJyYXRpdmUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpXFxuICAgICAgICAgID8gMVxcbiAgICAgICAgICA6IC0xXFxuICAgICAgKTtcXG4gICAgICBicmVhaztcXG5cXG4gICAgY2FzZSAncmVzdWx0JzpcXG4gICAgICBzb3J0ZWREYXRhLnNvcnQoKGEsIGIpID0+XFxuICAgICAgICBhLmRhdGEudGl0bGUgJiZcXG4gICAgICAgIGEuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA8XFxuICAgICAgICAgIGIuZGF0YS50aXRsZSAmJlxcbiAgICAgICAgYi5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpXFxuICAgICAgICAgID8gMVxcbiAgICAgICAgICA6IC0xXFxuICAgICAgKTtcXG5cXG4gICAgICBicmVhaztcXG4gICAgY2FzZSAncGVyaW9kJzpcXG4gICAgICBzb3J0ZWREYXRhLnNvcnQoKGEsIGIpID0+XFxuICAgICAgICBhLmRhdGEudGl0bGUgJiZcXG4gICAgICAgIGEuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA8XFxuICAgICAgICAgIGIuZGF0YS50aXRsZSAmJlxcbiAgICAgICAgYi5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpXFxuICAgICAgICAgID8gMVxcbiAgICAgICAgICA6IC0xXFxuICAgICAgKTtcXG5cXG4gICAgICBicmVhaztcXG4gICAgY2FzZSAnaW5kaWNhdG9yJzpcXG4gICAgICBzb3J0ZWREYXRhLnNvcnQoKGEsIGIpID0+XFxuICAgICAgICBhLmRhdGEudGl0bGUgJiZcXG4gICAgICAgIGEuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA8XFxuICAgICAgICAgIGIuZGF0YS50aXRsZSAmJlxcbiAgICAgICAgYi5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpXFxuICAgICAgICAgID8gMVxcbiAgICAgICAgICA6IC0xXFxuICAgICAgKTtcXG5cXG4gICAgICBicmVhaztcXG4gICAgZGVmYXVsdDpcXG4gICAgICBicmVhaztcXG4gIH1cXG59O1xcblxcbm9uVW5tb3VudGVkKCgpID0+IHtcXG4gIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBnZXREaW1lbnNpb25zKTtcXG59KTtcXG5cXG5vbk1vdW50ZWQoKCkgPT4ge1xcbiAgZ2V0RGltZW5zaW9ucygpO1xcbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGdldERpbWVuc2lvbnMpO1xcbiAgY2hlY2tDcml0aWNhbEVycm9yKCk7XFxuXFxuICBpZiAocHJvcHMuZ2xvYmFsRXJyb3IpIHtcXG4gICAgc2hvd0lkZW50aWZpZXJFcnJvck1vZGVsLnZhbHVlID0gdHJ1ZTtcXG4gIH1cXG4gIGFjdGl2aXRpZXNMZW5ndGgudmFsdWUgPSBwcm9wcy5pbXBvcnREYXRhLmxlbmd0aDtcXG4gIGxvYWRlclRleHQudmFsdWUgPSBgQWRkaW5nICR7cHJvcHMuc3RhdHVzLnRlbXBsYXRlfWA7XFxufSk7XFxuXFxuY29uc3QgY2FuY2VsSW1wb3J0ID0gKCkgPT4ge1xcbiAgc2hvd0NyaXRpY2FsRXJyb3JNb2RlbC52YWx1ZSA9IGZhbHNlO1xcbiAgc2hvd0dMb2JhbEVycm9yLnZhbHVlID0gZmFsc2U7XFxuICBheGlvcy5kZWxldGUoYC9pbXBvcnQveGxzYCkudGhlbigocmVzKSA9PiB7XFxuICAgIGNvbnN0IHJlc3BvbnNlID0gcmVzLmRhdGE7XFxuICAgIHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XFxuICAgIHNldFRpbWVvdXQoKCkgPT4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKSwgMTUwMDApO1xcbiAgICB0b2FzdE1lc3NhZ2UudmFsdWUgPSByZXNwb25zZS5tZXNzYWdlO1xcbiAgICB0b2FzdFR5cGUudmFsdWUgPSByZXNwb25zZS5zdWNjZXNzO1xcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvaW1wb3J0L3hscyc7XFxuICAgIH0sIDIwMDApO1xcbiAgfSk7XFxufTtcXG5jb25zdCBkb3dubG9hZElkZW50aWZpZXJFcnJvciA9ICgpID0+IHtcXG4gIGxldCB0ZXh0O1xcbiAgaWYgKHR5cGVvZiBwcm9wcy5nbG9iYWxFcnJvciA9PT0gJ29iamVjdCcpIHtcXG4gICAgdGV4dCA9IE9iamVjdC52YWx1ZXMocHJvcHMuZ2xvYmFsRXJyb3IpLmpvaW4oJ1xcXFxuJyk7XFxuICB9XFxuICBsZXQgZmlsZSA9IG5ldyBGaWxlKFsnXFxcXHVmZWZmJyArIHRleHRdLCAnaWRlbnRpZmllci1lcnJvcnMudHh0Jywge1xcbiAgICB0eXBlOiAndGV4dC9wbGFpbjpjaGFyc2V0PVVURi04JyxcXG4gIH0pO1xcbiAgbGV0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpO1xcbiAgbGV0IGFuY2hvclRhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcXG4gIGFuY2hvclRhZy5ocmVmID0gdXJsO1xcbiAgYW5jaG9yVGFnLmRvd25sb2FkID0gZmlsZS5uYW1lO1xcbiAgYW5jaG9yVGFnLmNsaWNrKCk7XFxuICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xcbn07XFxuXFxuY29uc3QgY2hlY2tDcml0aWNhbEVycm9yID0gKCkgPT4ge1xcbiAgY29uc3QgY3JpdGljYWxBcnJ5ID1cXG4gICAgcHJvcHMuaW1wb3J0RGF0YSAmJlxcbiAgICBwcm9wcy5pbXBvcnREYXRhLm1hcCgoZGF0YSwgaW5kZXgpID0+IHtcXG4gICAgICByZXR1cm4gZXJyb3JMZW5ndGgoJ2NyaXRpY2FsJywgaW5kZXgpO1xcbiAgICB9KTtcXG4gIGxldCB0b3RhbENyaXJpY2FsRXJyb3JDb3VudCA9IDA7XFxuICBmb3IgKGxldCBpID0gMDsgaSA8IGNyaXRpY2FsQXJyeS5sZW5ndGg7IGkrKykge1xcbiAgICB0b3RhbENyaXJpY2FsRXJyb3JDb3VudCArPSBjcml0aWNhbEFycnlbaV07XFxuICB9XFxuICBpZiAodG90YWxDcmlyaWNhbEVycm9yQ291bnQgPiAwKSB7XFxuICAgIHNob3dDcml0aWNhbEVycm9yTWVzc2FnZS52YWx1ZSA9IHRydWU7XFxuICB9XFxuICBpZiAodG90YWxDcmlyaWNhbEVycm9yQ291bnQgPiAwIHx8IHByb3BzLmdsb2JhbEVycm9yPy5sZW5ndGggPiAwKSB7XFxuICAgIHNob3dDcml0aWNhbEVycm9yTW9kZWwudmFsdWUgPSB0cnVlO1xcbiAgfVxcbn07XFxuY29uc3QgY291bnRFcnJvcnMgPSAoYWN0aXZpdHlJbmRleCkgPT4ge1xcbiAgbGV0IGNvdW50ID0gMDtcXG4gIGZvciAoY29uc3QgdHlwZSBpbiBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXSkge1xcbiAgICBmb3IgKGNvbnN0IGluZGV4IGluIHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddW3R5cGVdKSB7XFxuICAgICAgY291bnQgKz0gT2JqZWN0LmtleXMoXFxuICAgICAgICBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXVt0eXBlXVtpbmRleF1cXG4gICAgICApLmxlbmd0aDtcXG4gICAgfVxcbiAgfVxcblxcbiAgcmV0dXJuIGNvdW50O1xcbn07XFxuY29uc3QgYWRkQWN0aXZpdGllcyA9ICgpID0+IHtcXG4gIGlmIChzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUubGVuZ3RoID4gMCkge1xcbiAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xcblxcbiAgICBheGlvc1xcbiAgICAgIC5wb3N0KGAvaW1wb3J0L3hscy9hY3Rpdml0eWAsIHsgYWN0aXZpdGllczogc2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlIH0pXFxuICAgICAgLnRoZW4oKCkgPT4ge1xcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xcbiAgICAgIH0pO1xcbiAgfVxcbn07XFxuY29uc3QgZXJyb3JMZW5ndGggPSAoZXJyb3JUeXBlLCBhY3Rpdml0eUluZGV4KSA9PiB7XFxuICBsZXQgY291bnQgPSAwO1xcblxcbiAgZm9yIChjb25zdCBpbmRleCBpbiBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXVtlcnJvclR5cGVdKSB7XFxuICAgIGNvdW50ICs9IE9iamVjdC5rZXlzKFxcbiAgICAgIHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddW2Vycm9yVHlwZV1baW5kZXhdXFxuICAgICkubGVuZ3RoO1xcbiAgfVxcblxcbiAgcmV0dXJuIGNvdW50O1xcbn07XFxuXFxuZnVuY3Rpb24gc2VsZWN0QWxsQWN0aXZpdGllcygpIHtcXG4gIHNlbGVjdEFsbC52YWx1ZSA9ICFzZWxlY3RBbGwudmFsdWU7XFxuICBzZWxlY3RlZENvdW50LnZhbHVlID0gMDtcXG4gIHNlbGVjdGVkQWN0aXZpdGllcy52YWx1ZS5sZW5ndGggPSAwO1xcbiAgT2JqZWN0LmtleXMocHJvcHMuaW1wb3J0RGF0YSkuZm9yRWFjaCgoYWN0aXZpdHlfaWQpID0+IHtcXG4gICAgbGV0IGluZGV4ID0gc2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlLmluZGV4T2YoYWN0aXZpdHlfaWQpO1xcbiAgICBpZiAoXFxuICAgICAgT2JqZWN0LmtleXMocHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eV9pZF1bJ2Vycm9ycyddKS5pbmRleE9mKFxcbiAgICAgICAgJ2NyaXRpY2FsJ1xcbiAgICAgICkgPT09IC0xXFxuICAgICkge1xcbiAgICAgIGlmIChzZWxlY3RBbGwudmFsdWUpIHtcXG4gICAgICAgIHNlbGVjdGVkQWN0aXZpdGllcy52YWx1ZS5wdXNoKGFjdGl2aXR5X2lkKTtcXG4gICAgICAgIHNlbGVjdGVkQ291bnQudmFsdWUgPSBzZWxlY3RlZENvdW50LnZhbHVlICsgMTtcXG4gICAgICB9IGVsc2Uge1xcbiAgICAgICAgc2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlLnNwbGljZShpbmRleCwgMSk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9KTtcXG4gIGlmICghc2VsZWN0QWxsLnZhbHVlKSB7XFxuICAgIHNlbGVjdGVkQ291bnQudmFsdWUgPSAwO1xcbiAgfVxcbn1cXG48L3NjcmlwdD5cXG48c3R5bGUgc2NvcGVkPlxcbi54bHMtZXJyb3Ige1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCNmZmYxZjAgNjBweCwgI2ZmZmZmZiAwJSk7XFxufVxcbjwvc3R5bGU+XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiXFxuLm11bHRpc2VsZWN0LXdyYXBwZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgei1pbmRleDogNTtcXG4gIHdpZHRoOiA0MjRweDtcXG4gIGhlaWdodDogLXdlYmtpdC1maXQtY29udGVudDtcXG4gIGhlaWdodDogLW1vei1maXQtY29udGVudDtcXG4gIGhlaWdodDogZml0LWNvbnRlbnQ7XFxuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxufVxcbi5tdWx0aXNlbGVjdC1sb29rYWxpa2Uge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkMWQ1ZGI7XFxuICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICB3aWR0aDogMTYwcHggIWltcG9ydGFudDtcXG4gIGhlaWdodDogNDBweDtcXG4gIHBhZGRpbmc6IDEycHg7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL1RhYmxlTGlzdC52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIjtBQTZsQ0E7RUFDRSxrQkFBa0I7RUFDbEIsVUFBVTtFQUNWLFlBQVk7RUFDWiwyQkFBbUI7RUFBbkIsd0JBQW1CO0VBQW5CLG1CQUFtQjtFQUNuQixpQkFBaUI7RUFDakIsZ0JBQWdCO0FBQ2xCO0FBQ0E7RUFDRSxrQkFBa0I7RUFDbEIsbUJBQW1CO0VBQ25CLGlDQUFpQztFQUNqQyx5QkFBeUI7RUFDekIsa0JBQWtCO0VBQ2xCLHVCQUF1QjtFQUN2QixZQUFZO0VBQ1osYUFBYTtFQUNiLGVBQWU7QUFDakJcIixcInNvdXJjZXNDb250ZW50XCI6W1wiPHRlbXBsYXRlPlxcbiAgPGRpdiBjbGFzcz1cXFwiZmlsdGVycyBtYi00IGZsZXggZmxleC13cmFwIGp1c3RpZnktYmV0d2VlbiBnYXAtMlxcXCI+XFxuICAgIDwhLS1GaWx0ZXIgb3B0aW9ucyBzdGFydC0tPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJzZWxlY3QgZmlsdGVycyBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yXFxcIj5cXG4gICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidy0xMCB0ZXh0LWxnXFxcIiBpY29uPVxcXCJmdW5uZWxcXFwiIC8+XFxuICAgICAgPHNwYW4gY2xhc3M9XFxcIm11bHRpc2VsZWN0LWxhYmVsLXdyYXBwZXJcXFwiIDpzdHlsZT1cXFwiZ2VuZXJhdGVMYWJlbCgnY291bnRyeScpXFxcIj5cXG4gICAgICAgIDxNdWx0aXNlbGVjdFxcbiAgICAgICAgICBpZD1cXFwiY291bnRyeS1maWx0ZXJcXFwiXFxuICAgICAgICAgIHYtbW9kZWw9XFxcImZpbHRlci5jb3VudHJ5XFxcIlxcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwiQ09VTlRSWVxcXCJcXG4gICAgICAgICAgbW9kZT1cXFwibXVsdGlwbGVcXFwiXFxuICAgICAgICAgIDpzZWFyY2hhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICA6b3B0aW9ucz1cXFwiY291bnRyaWVzV2l0aFByZWZpeFxcXCJcXG4gICAgICAgICAgOnRhZ2dhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICA6Y2xvc2Utb24tc2VsZWN0PVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgOmNsZWFyLW9uLXNlbGVjdD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIDpoaWRlLXNlbGVjdGVkPVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgOmNhbi1jbGVhcj1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIGxhYmVsPVxcXCJjb3VudHJ5XFxcIlxcbiAgICAgICAgLz5cXG4gICAgICA8L3NwYW4+XFxuICAgICAgPHNwYW5cXG4gICAgICAgIGNsYXNzPVxcXCJtdWx0aXNlbGVjdC1sYWJlbC13cmFwcGVyXFxcIlxcbiAgICAgICAgOnN0eWxlPVxcXCJnZW5lcmF0ZUxhYmVsKCdzZXR1cCBjb21wbGV0ZW5lc3MnKVxcXCJcXG4gICAgICA+XFxuICAgICAgICA8TXVsdGlzZWxlY3RcXG4gICAgICAgICAgaWQ9XFxcInNldHVwLWNvbXBsZXRlbmVzc1xcXCJcXG4gICAgICAgICAgdi1tb2RlbD1cXFwiZmlsdGVyLmNvbXBsZXRlbmVzc1xcXCJcXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIlNFVFVQIENPTVBMRVRFTkVTU1xcXCJcXG4gICAgICAgICAgOm9wdGlvbnM9XFxcInNldHVwQ29tcGxldGVuZXNzXFxcIlxcbiAgICAgICAgICA6dGFnZ2FibGU9XFxcInRydWVcXFwiXFxuICAgICAgICAgIDpjbG9zZS1vbi1zZWxlY3Q9XFxcInRydWVcXFwiXFxuICAgICAgICAgIDpjbGVhci1vbi1zZWxlY3Q9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICA6aGlkZS1zZWxlY3RlZD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIDpjYW4tY2xlYXI9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICBsYWJlbD1cXFwic2V0dXBDb21wbGV0ZW5lc3NcXFwiXFxuICAgICAgICAvPlxcbiAgICAgIDwvc3Bhbj5cXG4gICAgICA8c3BhblxcbiAgICAgICAgY2xhc3M9XFxcIm11bHRpc2VsZWN0LWxhYmVsLXdyYXBwZXIgd2hpdGVzcGFjZS1ub3dyYXBcXFwiXFxuICAgICAgICA6c3R5bGU9XFxcImdlbmVyYXRlTGFiZWwoJ3JlZ2lzdHJhdGlvbiB0eXBlJylcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgIGlkPVxcXCJyZWdpc3RyYXRpb24tdHlwZVxcXCJcXG4gICAgICAgICAgdi1tb2RlbD1cXFwiZmlsdGVyLnJlZ2lzdHJhdGlvbl90eXBlXFxcIlxcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwiUkVHSVNUUkFUSU9OIFRZUEVcXFwiXFxuICAgICAgICAgIDpvcHRpb25zPVxcXCJyZWdpc3RyYXRpb25UeXBlc1xcXCJcXG4gICAgICAgICAgOnRhZ2dhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICA6Y2xvc2Utb24tc2VsZWN0PVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICA6Y2xlYXItb24tc2VsZWN0PVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgOmhpZGUtc2VsZWN0ZWQ9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICA6Y2FuLWNsZWFyPVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgbGFiZWw9XFxcInJlZ2lzdHJhdGlvblR5cGVcXFwiXFxuICAgICAgICAvPlxcbiAgICAgIDwvc3Bhbj5cXG5cXG4gICAgICA8IS0tTXVsdGlzZWxlY3Qgd2l0aCBzZWFyY2ggLS0+XFxuICAgICAgPCEtLSB0byBiZSBpbXBsZW1lbnRlZCAtLT5cXG4gICAgICA8IS0tIDxkaXZcXG4gICAgICAgIGNsYXNzPVxcXCJvcmdhbml6YXRpb24gbXVsdGlzZWxlY3QtbG9va2FsaWtlXFxcIlxcbiAgICAgICAgQGNsaWNrPVxcXCJ0b2dnbGVTaG93TXVsdGlTZWxlY3QoJGV2ZW50KVxcXCJcXG4gICAgICA+XFxuICAgICAgICA8ZGl2XFxuICAgICAgICAgIGNsYXNzPVxcXCJmbGV4IGgtZnVsbCB3LWZ1bGwganVzdGlmeS1iZXR3ZWVuIGFsaWduLW1pZGRsZSB0ZXh0LXhzIGZvbnQtYm9sZCB1cHBlcmNhc2UgdGV4dC1ibHVlY29yYWxcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxzcGFuPlB1Ymxpc2hlciBUeXBlPC9zcGFuPlxcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXJcXFwiPlxcbiAgICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgICB2LWlmPVxcXCJmaWx0ZXIucHVibGlzaGVyX3R5cGUubGVuZ3RoXFxcIlxcbiAgICAgICAgICAgICAgQGNsaWNrPVxcXCJcXG4gICAgICAgICAgICAgICAgKGV2ZW50KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XFxuICAgICAgICAgICAgICAgICAgZmlsdGVyLnB1Ymxpc2hlcl90eXBlLmxlbmd0aCA9IDA7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcIm10LTIuNSB0cmFuc2xhdGUteC0xIHRleHQtWzE2cHhdIHRleHQtbi0zMFxcXCJcXG4gICAgICAgICAgICAgID48L3N2Zy12dWU+XFxuICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgICA6Y2xhc3M9XFxcInJvdGF0ZUNsYXNzXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImR1cmF0aW9uLTIwMFxcXCJcXG4gICAgICAgICAgICAgIHN0eWxlPVxcXCJoZWlnaHQ6IGZpdC1jb250ZW50OyBmb250LXNpemU6IDIwcHg7IG1hcmdpbi10b3A6IC0ycHhcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPHN2Zy12dWUgaWNvbj1cXFwiYXJyb3ctZG93blxcXCI+PC9zdmctdnVlPiA8L3NwYW5cXG4gICAgICAgICAgPjwvc3Bhbj5cXG4gICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgPFRlbGVwb3J0IHRvPVxcXCJib2R5XFxcIj5cXG4gICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgIHYtaWY9XFxcInNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2hcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcIm11bHRpc2VsZWN0LXdyYXBwZXJcXFwiXFxuICAgICAgICAgICAgOnN0eWxlPVxcXCJtdWx0aXNlbGVjdFN0eWxlXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPE11bHRpU2VsZWN0V2l0aFNlYXJjaFxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcInJlbGF0aXZlICF6LVsxMDAwXVxcXCJcXG4gICAgICAgICAgICAgIGhlYWRlcj1cXFwiUHVibGlzaGVyIFR5cGVcXFwiXFxuICAgICAgICAgICAgICA6bGlzdC1pdGVtcz1cXFwicHVibGlzaGVyVHlwZXNcXFwiXFxuICAgICAgICAgICAgICBAY2hhbmdlLXNlbGVjdGVkLXB1Ymxpc2hlcj1cXFwic2V0U2VsZWN0ZWRQdWJsaXNoZXJcXFwiXFxuICAgICAgICAgICAgICBAY2xvc2U9XFxcInNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2ggPSBmYWxzZVxcXCJcXG4gICAgICAgICAgICA+PC9NdWx0aVNlbGVjdFdpdGhTZWFyY2g+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9UZWxlcG9ydD5cXG4gICAgICA8L2Rpdj4gLS0+XFxuICAgICAgPHNwYW5cXG4gICAgICAgIGNsYXNzPVxcXCJtdWx0aXNlbGVjdC1sYWJlbC13cmFwcGVyXFxcIlxcbiAgICAgICAgOnN0eWxlPVxcXCJnZW5lcmF0ZUxhYmVsKCdwdWJsaXNoZXIgdHlwZScpXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxNdWx0aXNlbGVjdFxcbiAgICAgICAgICBpZD1cXFwicHVibGlzaGVyLXR5cGVcXFwiXFxuICAgICAgICAgIHYtbW9kZWw9XFxcImZpbHRlci5wdWJsaXNoZXJfdHlwZVxcXCJcXG4gICAgICAgICAgOm9wdGlvbnM9XFxcInB1Ymxpc2hlclR5cGVzXFxcIlxcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwiUFVCTElTSEVSIFRZUEVcXFwiXFxuICAgICAgICAgIG1vZGU9XFxcIm11bHRpcGxlXFxcIlxcbiAgICAgICAgICA6dGFnZ2FibGU9XFxcInRydWVcXFwiXFxuICAgICAgICAgIDpjbG9zZS1vbi1zZWxlY3Q9XFxcInRydWVcXFwiXFxuICAgICAgICAgIDpjbGVhci1vbi1zZWxlY3Q9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICA6aGlkZS1zZWxlY3RlZD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIDpjYW4tY2xlYXI9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICBsYWJlbD1cXFwicHVibGlzaGVyVHlwZVxcXCJcXG4gICAgICAgIC8+XFxuICAgICAgPC9zcGFuPlxcbiAgICAgIDxzcGFuXFxuICAgICAgICBjbGFzcz1cXFwibXVsdGlzZWxlY3QtbGFiZWwtd3JhcHBlclxcXCJcXG4gICAgICAgIDpzdHlsZT1cXFwiZ2VuZXJhdGVMYWJlbCgnZGF0YSBsaWNlbnNlJylcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgIGlkPVxcXCJkYXRhLWxpY2Vuc2VcXFwiXFxuICAgICAgICAgIHYtbW9kZWw9XFxcImZpbHRlci5kYXRhX2xpY2Vuc2VcXFwiXFxuICAgICAgICAgIDpvcHRpb25zPVxcXCJkYXRhTGljZW5zZXNcXFwiXFxuICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJEQVRBIExJQ0VOU0VcXFwiXFxuICAgICAgICAgIG1vZGU9XFxcIm11bHRpcGxlXFxcIlxcbiAgICAgICAgICA6dGFnZ2FibGU9XFxcInRydWVcXFwiXFxuICAgICAgICAgIDpjbG9zZS1vbi1zZWxlY3Q9XFxcInRydWVcXFwiXFxuICAgICAgICAgIDpjbGVhci1vbi1zZWxlY3Q9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICA6aGlkZS1zZWxlY3RlZD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIDpjYW4tY2xlYXI9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICBsYWJlbD1cXFwiZGF0YUxpY2Vuc2VcXFwiXFxuICAgICAgICAvPlxcbiAgICAgIDwvc3Bhbj5cXG4gICAgPC9kaXY+XFxuICAgIDwhLS1GaWx0ZXIgb3B0aW9ucyBlbmQtLT5cXG5cXG4gICAgPCEtLURhdGUgcmFuZ2Ugc3RhcnQtLT5cXG4gICAgPGRpdiBjbGFzcz1cXFwiZmxleCBoLVszOHB4XSB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIHB4LTQgMnhsOnctYXV0b1xcXCI+XFxuICAgICAgPERhdGVSYW5nZVdpZGdldFxcbiAgICAgICAgOmRyb3Bkb3duLXJhbmdlPVxcXCJkcm9wZG93blJhbmdlXFxcIlxcbiAgICAgICAgOmZpcnN0LWRhdGU9XFxcIm9sZGVzdERhdGVzXFxcIlxcbiAgICAgICAgOmNsZWFyLWRhdGU9XFxcImNsZWFyRGF0ZVxcXCJcXG4gICAgICAgIDpzdGFydGluZy1kYXRlPVxcXCJmaWx0ZXIuc3RhcnRfZGF0ZVxcXCJcXG4gICAgICAgIDplbmRpbmctZGF0ZT1cXFwiZmlsdGVyLmVuZF9kYXRlXFxcIlxcbiAgICAgICAgOmRhdGUtbmFtZT1cXFwiZGF0ZVR5cGVcXFwiXFxuICAgICAgICBAdHJpZ2dlci1zZXQtZGF0ZS1yYW5nZT1cXFwic2V0RGF0ZVJhbmdlRGF0ZVxcXCJcXG4gICAgICAgIEB0cmlnZ2VyLXNldC1kYXRlLXR5cGU9XFxcInNldERhdGVUeXBlXFxcIlxcbiAgICAgICAgQGRhdGUtY2xlYXJlZD1cXFwiY2xlYXJEYXRlID0gZmFsc2VcXFwiXFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICAgIDwhLS1EYXRlIHJhbmdlIHN0YXJ0LS0+XFxuICA8L2Rpdj5cXG5cXG4gIDwhLS1GaWx0ZXIgdGFnIHBpbGxzIHN0YXJ0LS0+XFxuICA8ZGl2XFxuICAgIHYtaWY9XFxcImlzRmlsdGVyQXBwbGllZFxcXCJcXG4gICAgY2xhc3M9XFxcIm1iLTQgZmxleCBtYXgtdy1mdWxsIGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yXFxcIlxcbiAgPlxcbiAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1zbSBmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtbi00MFxcXCI+RmlsdGVyZWQgYnk6IDwvc3Bhbj5cXG5cXG4gICAgPHNwYW4gdi1zaG93PVxcXCJmaWx0ZXIuY291bnRyeVxcXCIgY2xhc3M9XFxcImlubGluZS1mbGV4IGZsZXgtd3JhcCBnYXAtMlxcXCI+XFxuICAgICAgPHNwYW5cXG4gICAgICAgIHYtZm9yPVxcXCIoaXRlbSwgaW5kZXgpIGluIGZpbHRlci5jb3VudHJ5XFxcIlxcbiAgICAgICAgOmtleT1cXFwiaW5kZXhcXFwiXFxuICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLW4tMzAgcHktMSBweC0yIHRleHQteHNcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtbi00MFxcXCI+Q291bnRyeTo8L3NwYW4+XFxuICAgICAgICA8c3BhblxcbiAgICAgICAgICBjbGFzcz1cXFwibWF4LXctWzUwMHB4XSBvdmVyZmxvdy14LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgICA+e3sgaXRlbSB9fTwvc3BhblxcbiAgICAgICAgPlxcbiAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgY2xhc3M9XFxcIm14LTIgbXQtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgQGNsaWNrPVxcXCJmaWx0ZXIuY291bnRyeS5zcGxpY2UoaW5kZXgsIDEpXFxcIlxcbiAgICAgICAgLz5cXG4gICAgICA8L3NwYW4+XFxuICAgIDwvc3Bhbj5cXG5cXG4gICAgPHNwYW4gdi1zaG93PVxcXCJmaWx0ZXIuY29tcGxldGVuZXNzXFxcIiBjbGFzcz1cXFwiaW5saW5lLWZsZXggZmxleC13cmFwIGdhcC0yXFxcIj5cXG4gICAgICA8c3BhblxcbiAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1uLTMwIHB5LTEgcHgtMiB0ZXh0LXhzXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPlNldHVwIENvbXBsZXRlbmVzczo8L3NwYW4+XFxuICAgICAgICA8c3BhblxcbiAgICAgICAgICBjbGFzcz1cXFwibWF4LXctWzUwMHB4XSBvdmVyZmxvdy14LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgICA+e3sgc25ha2VDYXNlVG9TZW50ZW5jZUNhc2UoZmlsdGVyLmNvbXBsZXRlbmVzcykgfX08L3NwYW5cXG4gICAgICAgID5cXG4gICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgIGNsYXNzPVxcXCJteC0yIG10LTEgY3Vyc29yLXBvaW50ZXIgdGV4dC14c1xcXCJcXG4gICAgICAgICAgaWNvbj1cXFwiY3Jvc3NcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwiZmlsdGVyLmNvbXBsZXRlbmVzcyA9ICcnXFxcIlxcbiAgICAgICAgLz5cXG4gICAgICA8L3NwYW4+XFxuICAgIDwvc3Bhbj5cXG5cXG4gICAgPHNwYW4gdi1zaG93PVxcXCJmaWx0ZXIucmVnaXN0cmF0aW9uX3R5cGVcXFwiIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgZ2FwLTJcXFwiPlxcbiAgICAgIDxzcGFuXFxuICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLW4tMzAgcHktMSBweC0yIHRleHQteHNcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtbi00MFxcXCI+UmVnaXN0cmF0aW9uIFR5cGU6PC9zcGFuPlxcbiAgICAgICAgPHNwYW5cXG4gICAgICAgICAgY2xhc3M9XFxcIm1heC13LVs1MDBweF0gb3ZlcmZsb3cteC1oaWRkZW4gdGV4dC1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcFxcXCJcXG4gICAgICAgICAgPnt7IHNuYWtlQ2FzZVRvU2VudGVuY2VDYXNlKGZpbHRlci5yZWdpc3RyYXRpb25fdHlwZSkgfX08L3NwYW5cXG4gICAgICAgID5cXG4gICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgIGNsYXNzPVxcXCJteC0yIG10LTEgY3Vyc29yLXBvaW50ZXIgdGV4dC14c1xcXCJcXG4gICAgICAgICAgaWNvbj1cXFwiY3Jvc3NcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwiZmlsdGVyLnJlZ2lzdHJhdGlvbl90eXBlID0gJydcXFwiXFxuICAgICAgICAvPlxcbiAgICAgIDwvc3Bhbj5cXG4gICAgPC9zcGFuPlxcblxcbiAgICA8c3BhblxcbiAgICAgIHYtc2hvdz1cXFwiZmlsdGVyLnB1Ymxpc2hlcl90eXBlLmxlbmd0aFxcXCJcXG4gICAgICBjbGFzcz1cXFwiaW5saW5lLWZsZXggZmxleC13cmFwIGdhcC0yXFxcIlxcbiAgICA+XFxuICAgICAgPHNwYW5cXG4gICAgICAgIHYtZm9yPVxcXCIoaXRlbSwgaW5kZXgpIGluIGZpbHRlci5wdWJsaXNoZXJfdHlwZVxcXCJcXG4gICAgICAgIDprZXk9XFxcImluZGV4XFxcIlxcbiAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1uLTMwIHB5LTEgcHgtMiB0ZXh0LXhzXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPlB1Ymxpc2hlciB0eXBlOjwvc3Bhbj5cXG4gICAgICAgIDxzcGFuXFxuICAgICAgICAgIGNsYXNzPVxcXCJtYXgtdy1bNTAwcHhdIG92ZXJmbG93LXgtaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXBcXFwiXFxuICAgICAgICAgID57eyBwdWJsaXNoZXJUeXBlc1tpdGVtXSB9fVxcbiAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgY2xhc3M9XFxcIm14LTIgbXQtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgQGNsaWNrPVxcXCJmaWx0ZXIucHVibGlzaGVyX3R5cGUuc3BsaWNlKGluZGV4LCAxKVxcXCJcXG4gICAgICAgIC8+XFxuICAgICAgPC9zcGFuPlxcbiAgICA8L3NwYW4+XFxuXFxuICAgIDxzcGFuXFxuICAgICAgdi1zaG93PVxcXCJmaWx0ZXIuZGF0YV9saWNlbnNlLmxlbmd0aFxcXCJcXG4gICAgICBjbGFzcz1cXFwiaW5saW5lLWZsZXggZmxleC13cmFwIGdhcC0yXFxcIlxcbiAgICA+XFxuICAgICAgPHNwYW5cXG4gICAgICAgIHYtZm9yPVxcXCIoaXRlbSwgaW5kZXgpIGluIGZpbHRlci5kYXRhX2xpY2Vuc2VcXFwiXFxuICAgICAgICA6a2V5PVxcXCJpbmRleFxcXCJcXG4gICAgICAgIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTEgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItbi0zMCBweS0xIHB4LTIgdGV4dC14c1xcXCJcXG4gICAgICA+XFxuICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5EYXRhIExpY2Vuc2U6PC9zcGFuPlxcbiAgICAgICAgPHNwYW5cXG4gICAgICAgICAgY2xhc3M9XFxcIm1heC13LVs1MDBweF0gb3ZlcmZsb3cteC1oaWRkZW4gdGV4dC1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcFxcXCJcXG4gICAgICAgICAgPnt7IGl0ZW0gfX08L3NwYW5cXG4gICAgICAgID5cXG4gICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgIGNsYXNzPVxcXCJteC0yIG10LTEgY3Vyc29yLXBvaW50ZXIgdGV4dC14c1xcXCJcXG4gICAgICAgICAgaWNvbj1cXFwiY3Jvc3NcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwiZmlsdGVyLmRhdGFfbGljZW5zZS5zcGxpY2UoaW5kZXgsIDEpXFxcIlxcbiAgICAgICAgLz5cXG4gICAgICA8L3NwYW4+XFxuICAgIDwvc3Bhbj5cXG4gICAgPHNwYW5cXG4gICAgICB2LXNob3c9XFxcImZpbHRlci5zdGFydF9kYXRlICYmIGZpbHRlci5lbmRfZGF0ZVxcXCJcXG4gICAgICBjbGFzcz1cXFwiaW5saW5lLWZsZXggZmxleC13cmFwIGdhcC0yXFxcIlxcbiAgICA+XFxuICAgICAgPHNwYW5cXG4gICAgICAgIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTEgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItbi0zMCBweS0xIHB4LTIgdGV4dC14c1xcXCJcXG4gICAgICA+XFxuICAgICAgICA8c3Bhbj5cXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtbi00MFxcXCI+IERhdGUgcmFuZ2U6IDwvc3Bhbj5cXG4gICAgICAgICAge3sgZmlsdGVyLnNlbGVjdGVkX2RhdGVfZmlsdGVyIH19XFxuICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICBjbGFzcz1cXFwibXgtMiBtdC0xIGN1cnNvci1wb2ludGVyIHRleHQteHNcXFwiXFxuICAgICAgICAgIGljb249XFxcImNyb3NzXFxcIlxcbiAgICAgICAgICBAY2xpY2s9XFxcIlxcbiAgICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICAgIGNsZWFyRGF0ZUZpbHRlcigpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgXFxcIlxcbiAgICAgICAgLz5cXG4gICAgICA8L3NwYW4+XFxuICAgIDwvc3Bhbj5cXG5cXG4gICAgPGJ1dHRvbiBjbGFzcz1cXFwiZm9udC1ib2xkIHVwcGVyY2FzZSB0ZXh0LWJsdWVjb3JhbFxcXCIgQGNsaWNrPVxcXCJyZXNldEFsbEZpbHRlcnNcXFwiPlxcbiAgICAgIENsZWFyIEZpbHRlclxcbiAgICA8L2J1dHRvbj5cXG4gIDwvZGl2PlxcbiAgPCEtLUZpbHRlciB0YWcgcGlsbHMgZW5kLS0+XFxuXFxuICA8ZGl2PlxcbiAgICA8cCBjbGFzcz1cXFwicHktMVxcXCI+VG90YWwgTnVtYmVyIG9mIE9yZ2FuaXNhdGlvbjoge3sgdG90YWxPcmdhbmlzYXRpb24gfX08L3A+XFxuICAgIDxkaXYgY2xhc3M9XFxcImlhdGktbGlzdC10YWJsZVxcXCI+XFxuICAgICAgPHRhYmxlPlxcbiAgICAgICAgPHRoZWFkPlxcbiAgICAgICAgICA8dHIgY2xhc3M9XFxcImJnLW4tMTBcXFwiPlxcbiAgICAgICAgICAgIDx0aCBpZD1cXFwib3JnYW5pc2F0aW9uX25hbWVcXFwiIHNjb3BlPVxcXCJjb2xcXFwiPlxcbiAgICAgICAgICAgICAgPGFcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImN1cnNvci1wb2ludGVyIHRleHQtbi01MCB0cmFuc2l0aW9uIGR1cmF0aW9uLTUwMCBob3Zlcjp0ZXh0LXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICduYW1lJ1xcbiAgICAgICAgICAgICAgICAgICAgPyBzb3J0aW5nRGlyZWN0aW9uKClcXG4gICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFNvcnREaXJlY3Rpb25cXG4gICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNvcnRCeSgnbmFtZScpXFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwic29ydGluZy1pbmRpY2F0b3JcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICA6aWNvbj1cXFwiYCR7XFxuICAgICAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMub3JkZXJCeSA9PT0gJ25hbWUnXFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzb3J0aW5nRGlyZWN0aW9uKClcXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRTb3J0RGlyZWN0aW9uXFxuICAgICAgICAgICAgICAgICAgICB9LWFycm93YFxcXCJcXG4gICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDxzcGFuPk9yZ2FuaXNhdGlvbjwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvYT5cXG4gICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgIDx0aCBpZD1cXFwiY291bnRyeVxcXCIgc2NvcGU9XFxcImNvbFxcXCIgc3R5bGU9XFxcIndpZHRoOiAxNzNweFxcXCI+XFxuICAgICAgICAgICAgICA8YVxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXIgdGV4dC1uLTUwIHRyYW5zaXRpb24gZHVyYXRpb24tNTAwIGhvdmVyOnRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMub3JkZXJCeSA9PT0gJ2NvdW50cnknXFxuICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0U29ydERpcmVjdGlvblxcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIEBjbGljaz1cXFwic29ydEJ5KCdjb3VudHJ5JylcXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJzb3J0aW5nLWluZGljYXRvclxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgIDppY29uPVxcXCJgJHtcXG4gICAgICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy5vcmRlckJ5ID09PSAnY291bnRyeSdcXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFNvcnREaXJlY3Rpb25cXG4gICAgICAgICAgICAgICAgICAgIH0tYXJyb3dgXFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPHNwYW4+Q291bnRyeTwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvYT5cXG4gICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgIDx0aCBpZD1cXFwicmVnaXN0ZXJlZF9vblxcXCIgc2NvcGU9XFxcImNvbFxcXCIgc3R5bGU9XFxcIndpZHRoOiAxNzNweFxcXCI+XFxuICAgICAgICAgICAgICA8YVxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXIgdGV4dC1uLTUwIHRyYW5zaXRpb24gZHVyYXRpb24tNTAwIGhvdmVyOnRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMub3JkZXJCeSA9PT0gJ3JlZ2lzdGVyZWRfb24nXFxuICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0U29ydERpcmVjdGlvblxcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIEBjbGljaz1cXFwic29ydEJ5KCdyZWdpc3RlcmVkX29uJylcXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJzb3J0aW5nLWluZGljYXRvclxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgIDppY29uPVxcXCJgJHtcXG4gICAgICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy5vcmRlckJ5ID09PSAncmVnaXN0ZXJlZF9vbidcXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFNvcnREaXJlY3Rpb25cXG4gICAgICAgICAgICAgICAgICAgIH0tYXJyb3dgXFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPHNwYW4+UmVnaXN0ZXJlZCBPbjwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvYT5cXG4gICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgIDx0aCBpZD1cXFwibGFzdF9sb2dpblxcXCIgc2NvcGU9XFxcImNvbFxcXCIgc3R5bGU9XFxcIndpZHRoOiAxNzNweFxcXCI+XFxuICAgICAgICAgICAgICA8YVxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXIgdGV4dC1uLTUwIHRyYW5zaXRpb24gZHVyYXRpb24tNTAwIGhvdmVyOnRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMub3JkZXJCeSA9PT0gJ2xhc3RfbG9nZ2VkX2luJ1xcbiAgICAgICAgICAgICAgICAgICAgPyBzb3J0aW5nRGlyZWN0aW9uKClcXG4gICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFNvcnREaXJlY3Rpb25cXG4gICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNvcnRCeSgnbGFzdF9sb2dnZWRfaW4nKVxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInNvcnRpbmctaW5kaWNhdG9yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgOmljb249XFxcImAke1xcbiAgICAgICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICdsYXN0X2xvZ2dlZF9pbidcXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFNvcnREaXJlY3Rpb25cXG4gICAgICAgICAgICAgICAgICAgIH0tYXJyb3dgXFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPHNwYW4+TGFzdCBMb2dpbjwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvYT5cXG4gICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgIDx0aCBpZD1cXFwiYWN0aXZpdGllc1xcXCIgc2NvcGU9XFxcImNvbFxcXCIgc3R5bGU9XFxcIndpZHRoOiAxNzNweFxcXCI+XFxuICAgICAgICAgICAgICA8YVxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXIgdGV4dC1uLTUwIHRyYW5zaXRpb24gZHVyYXRpb24tNTAwIGhvdmVyOnRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMub3JkZXJCeSA9PT0gJ2FsbF9hY3Rpdml0aWVzX2NvdW50J1xcbiAgICAgICAgICAgICAgICAgICAgPyBzb3J0aW5nRGlyZWN0aW9uKClcXG4gICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFNvcnREaXJlY3Rpb25cXG4gICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNvcnRCeSgnYWxsX2FjdGl2aXRpZXNfY291bnQnKVxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInNvcnRpbmctaW5kaWNhdG9yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgOmljb249XFxcImAke1xcbiAgICAgICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICdhbGxfYWN0aXZpdGllc19jb3VudCdcXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFNvcnREaXJlY3Rpb25cXG4gICAgICAgICAgICAgICAgICAgIH0tYXJyb3dgXFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdHJhbnNsYXRlLmNvbW1vblRleHQoJ2FjdGl2aXRpZXMnKSB9fTwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvYT5cXG4gICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgIDx0aCBpZD1cXFwicHVibGlzaGVyX3R5cGVcXFwiIHNjb3BlPVxcXCJjb2xcXFwiIHN0eWxlPVxcXCJ3aWR0aDogMTczcHhcXFwiPlxcbiAgICAgICAgICAgICAgPGFcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImN1cnNvci1wb2ludGVyIHRleHQtbi01MCB0cmFuc2l0aW9uIGR1cmF0aW9uLTUwMCBob3Zlcjp0ZXh0LXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICdwdWJsaXNoZXJfdHlwZSdcXG4gICAgICAgICAgICAgICAgICAgID8gc29ydGluZ0RpcmVjdGlvbigpXFxuICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRTb3J0RGlyZWN0aW9uXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0QnkoJ3B1Ymxpc2hlcl90eXBlJylcXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJzb3J0aW5nLWluZGljYXRvclxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgIDppY29uPVxcXCJgJHtcXG4gICAgICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy5vcmRlckJ5ID09PSAncHVibGlzaGVyX3R5cGUnXFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzb3J0aW5nRGlyZWN0aW9uKClcXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRTb3J0RGlyZWN0aW9uXFxuICAgICAgICAgICAgICAgICAgICB9LWFycm93YFxcXCJcXG4gICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDxzcGFuPlB1Ymxpc2hlciBUeXBlPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC9hPlxcbiAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgPHRoIGlkPVxcXCJkYXRhX2xpY2VuY2VcXFwiIHNjb3BlPVxcXCJjb2xcXFwiIHN0eWxlPVxcXCJ3aWR0aDogMTczcHhcXFwiPlxcbiAgICAgICAgICAgICAgPGFcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImN1cnNvci1wb2ludGVyIHRleHQtbi01MCB0cmFuc2l0aW9uIGR1cmF0aW9uLTUwMCBob3Zlcjp0ZXh0LXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICdkYXRhX2xpY2Vuc2UnXFxuICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0U29ydERpcmVjdGlvblxcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIEBjbGljaz1cXFwic29ydEJ5KCdkYXRhX2xpY2Vuc2UnKVxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInNvcnRpbmctaW5kaWNhdG9yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgOmljb249XFxcImAke1xcbiAgICAgICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICdkYXRhX2xpY2Vuc2UnXFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzb3J0aW5nRGlyZWN0aW9uKClcXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRTb3J0RGlyZWN0aW9uXFxuICAgICAgICAgICAgICAgICAgICB9LWFycm93YFxcXCJcXG4gICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDxzcGFuPkRhdGEgbGljZW5jZSA8L3NwYW4+XFxuICAgICAgICAgICAgICA8L2E+XFxuICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICA8dGggaWQ9XFxcInByb3h5XFxcIiBzY29wZT1cXFwiY29sXFxcIiBzdHlsZT1cXFwid2lkdGg6IDE1OHB4XFxcIj5cXG4gICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cXG4gICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICA8L3RyPlxcbiAgICAgICAgPC90aGVhZD5cXG4gICAgICAgIDx0Ym9keT5cXG4gICAgICAgICAgPHRyIHYtaWY9XFxcIm9yZ2FuaXNhdGlvbkRhdGEuc3RhdHVzID09PSAnZmV0Y2hpbmcnXFxcIj5cXG4gICAgICAgICAgICA8dGQgY29sc3Bhbj1cXFwiNFxcXCI+e3sgdHJhbnNsYXRlLmNvbW1vblRleHQoJ2ZldGNoaW5nX2RhdGEnKSB9fTwvdGQ+XFxuICAgICAgICAgIDwvdHI+XFxuICAgICAgICAgIDx0ciB2LWVsc2UtaWY9XFxcIm9yZ2FuaXNhdGlvbkRhdGEuc3RhdHVzID09PSAnZmFpbGVkIHRvIHJldHJpZXZlIGRhdGEnXFxcIj5cXG4gICAgICAgICAgICA8dGQgY29sc3Bhbj1cXFwiNFxcXCI+RmFpbGVkIHRvIHJldHJpZXZlIGRhdGEuLi48L3RkPlxcbiAgICAgICAgICA8L3RyPlxcbiAgICAgICAgICA8dHIgdi1lbHNlLWlmPVxcXCJvcmdhbmlzYXRpb25EYXRhLnN0YXR1cyA9PT0gJ2VtcHR5J1xcXCI+XFxuICAgICAgICAgICAgPHRkIGNvbHNwYW49XFxcIjRcXFwiPk5vIERhdGEgQXZhaWxhYmxlPC90ZD5cXG4gICAgICAgICAgPC90cj5cXG4gICAgICAgICAgPHRyIHYtZm9yPVxcXCJkYXRhIGluIG9yZ2FuaXNhdGlvbkRhdGEuZGF0YS5kYXRhXFxcIiB2LWVsc2UgOmtleT1cXFwiZGF0YS5pZFxcXCI+XFxuICAgICAgICAgICAgPHRkPlxcbiAgICAgICAgICAgICAgPGRpdj5cXG4gICAgICAgICAgICAgICAgPGRpdiB2LWlmPVxcXCJkYXRhLm5hbWVcXFwiIGNsYXNzPVxcXCJlbGxpcHNpcyByZWxhdGl2ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImVsbGlwc2lzIG92ZXJmbG93LWhpZGRlblxcXCI+XFxuICAgICAgICAgICAgICAgICAgICB7eyBkYXRhPy5uYW1lWzBdPy5uYXJyYXRpdmUgPz8gdHJhbnNsYXRlLm1pc3NpbmcoJ25hbWUnKSB9fVxcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICAgICAgICAgIDxkaXYgdi1lbHNlPnt7IHRyYW5zbGF0ZS5taXNzaW5nKCduYW1lJykgfX08L2Rpdj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZ3JvdXAgcmVsYXRpdmVcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ3LWZ1bGwgb3ZlcmZsb3cteC1oaWRkZW4gdGV4dC1lbGxpcHNpcyB0ZXh0LWJsdWUtNDBcXFwiXFxuICAgICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgICAge3sgZGF0YT8udXNlcj8uZW1haWwgfX1cXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiYWJzb2x1dGUgdG9wLWZ1bGwgbGVmdC0wIGhpZGRlbiByb3VuZGVkIGJnLWVnZ3NoZWxsIHAtMiBzaGFkb3ctc20gZ3JvdXAtaG92ZXI6YmxvY2tcXFwiXFxuICAgICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgICAge3sgZGF0YT8udXNlcj8uZW1haWwgfX1cXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXhcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiZmxleCB3LWZpdFxcXCJcXG4gICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5QXBpS2V5U3RhdHVzW2RhdGEuaWRdXFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAndGV4dC1zcHJpbmctNTAnXFxuICAgICAgICAgICAgICAgICAgICAgICAgOiAndGV4dC1jcmltc29uLTUwJ1xcbiAgICAgICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ0ZXh0LW1kIG10LTEgY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIDppY29uPVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RyeUFwaUtleVN0YXR1c1tkYXRhLmlkXVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAndGljaydcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2NpcmNsZS1yZWQtY3Jvc3MnXFxuICAgICAgICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgICAgID48L3N2Zy12dWU+XFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwicHgtMVxcXCI+IFJlZ2lzdHJ5IEFQSSBLZXkgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcIm14LTIgZmxleCB3LWZpdFxcXCJcXG4gICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZVN0YXR1c1tkYXRhLmlkXVxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RleHQtc3ByaW5nLTUwJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RleHQtY3JpbXNvbi01MCdcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwidGV4dC1tZCBtdC0xIGN1cnNvci1wb2ludGVyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICA6aWNvbj1cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlU3RhdHVzW2RhdGEuaWRdXFxuICAgICAgICAgICAgICAgICAgICAgICAgICA/ICd0aWNrJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnY2lyY2xlLXJlZC1jcm9zcydcXG4gICAgICAgICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLXZ1ZT5cXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJweC0xXFxcIj4gRGVmYXVsdCBWYWx1ZXMgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgICAgIDxkaXY+XFxuICAgICAgICAgICAgICAgIHt7IGNvdW50cmllc1dpdGhQcmVmaXhbZGF0YVsnY291bnRyeSddXSB9fVxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICA8dGQgY2xhc3M9XFxcInRleHQtbi00MFxcXCI+XFxuICAgICAgICAgICAgICA8ZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJwYi0xXFxcIj5cXG4gICAgICAgICAgICAgICAgICB7eyBkYXRlRm9ybWF0KGRhdGFbJ2NyZWF0ZWRfYXQnXSwgJ01NTU0sIERELCBZWVlZJykgfX1cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInRleHQteHNcXFwiPlxcbiAgICAgICAgICAgICAgICAgIFByZXZpb3VzbHlcXG4gICAgICAgICAgICAgICAgICB7e1xcbiAgICAgICAgICAgICAgICAgICAgZGF0YVsncmVnaXN0cmF0aW9uX3R5cGUnXSAhPT0gJ2V4aXN0aW5nX29yZycgPyAnbm90JyA6ICcnXFxuICAgICAgICAgICAgICAgICAgfX1cXG4gICAgICAgICAgICAgICAgICByZWdpc3RlcmVkIGluIElBVEkgcGxhdGZvcm1cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgICAgIDxkaXY+XFxuICAgICAgICAgICAgICAgIHt7XFxuICAgICAgICAgICAgICAgICAgZGF0YS5sYXN0X2xvZ2dlZF9pblxcbiAgICAgICAgICAgICAgICAgICAgPyBkYXRlRm9ybWF0KGRhdGEubGFzdF9sb2dnZWRfaW4sICdNTU1NLCBERCxZWVlZJylcXG4gICAgICAgICAgICAgICAgICAgIDogdHJhbnNsYXRlLm1pc3NpbmcoJ25vdF9hdmFpbGFibGUnKVxcbiAgICAgICAgICAgICAgICB9fVxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICA8dGQgY2xhc3M9XFxcInRleHQtbi00MFxcXCI+XFxuICAgICAgICAgICAgICA8ZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJweC0xXFxcIj5cXG4gICAgICAgICAgICAgICAgICB7eyBkYXRhLmFsbF9hY3Rpdml0aWVzX2NvdW50IH19XFxuICAgICAgICAgICAgICAgICAge3sgdHJhbnNsYXRlLmNvbW1vblRleHQoJ2FjdGl2aXRpZXNfbm9jYXNlJykgfX1cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInRleHQteHNcXFwiPlxcbiAgICAgICAgICAgICAgICAgIHt7XFxuICAgICAgICAgICAgICAgICAgICBkYXRhWydsYXRlc3RfdXBkYXRlZF9hY3Rpdml0eSddXFxuICAgICAgICAgICAgICAgICAgICAgID8gJ0xhc3QgdXBkYXRlZCBvbjonICtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlRm9ybWF0KFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsnbGF0ZXN0X3VwZGF0ZWRfYWN0aXZpdHknXS51cGRhdGVkX2F0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ01NTU0sIERELCBZWVlZJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIClcXG4gICAgICAgICAgICAgICAgICAgICAgOiB0cmFuc2xhdGUubWlzc2luZygnbm90X2F2YWlsYWJsZScpXFxuICAgICAgICAgICAgICAgICAgfX1cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgICAgIDxkaXY+XFxuICAgICAgICAgICAgICAgIHt7IHNob3dNYXBwZWREYXRhKCdwdWJsaXNoZXJfdHlwZScsIGRhdGEsIHB1Ymxpc2hlclR5cGVzKSB9fVxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICA8dGQgY2xhc3M9XFxcInRleHQtbi00MFxcXCI+XFxuICAgICAgICAgICAgICA8ZGl2PlxcbiAgICAgICAgICAgICAgICB7eyBzaG93TWFwcGVkRGF0YSgnZGF0YV9saWNlbnNlJywgZGF0YSwgZGF0YUxpY2Vuc2VzKSB9fVxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICA8dGQ+XFxuICAgICAgICAgICAgICA8ZGl2PlxcbiAgICAgICAgICAgICAgICA8QnRuQ29tcG9uZW50XFxuICAgICAgICAgICAgICAgICAgdGV4dD1cXFwicHJveHlcXFwiXFxuICAgICAgICAgICAgICAgICAgdHlwZT1cXFwib3V0bGluZVxcXCJcXG4gICAgICAgICAgICAgICAgICBpY29uPVxcXCJzbWlsZVxcXCJcXG4gICAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInByb3h5VXNlcig8bnVtYmVyPmRhdGE/LnVzZXI/LmlkKVxcXCJcXG4gICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgIDwvdHI+XFxuICAgICAgICA8L3Rib2R5PlxcbiAgICAgIDwvdGFibGU+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJtdC02XFxcIj5cXG4gICAgICA8UGFnaW5hdGlvblxcbiAgICAgICAgdi1pZj1cXFwib3JnYW5pc2F0aW9uRGF0YS5kYXRhICYmIG9yZ2FuaXNhdGlvbkRhdGEuZGF0YS5sYXN0X3BhZ2UgPiAxXFxcIlxcbiAgICAgICAgOmRhdGE9XFxcIm9yZ2FuaXNhdGlvbkRhdGEuZGF0YVxcXCJcXG4gICAgICAgIDpyZXNldD1cXFwicmVzZXRQYWdpbmF0aW9uXFxcIlxcbiAgICAgICAgQGZldGNoLWFjdGl2aXRpZXM9XFxcIihuKSA9PiBmZXRjaE9yZ2FuaXNhdGlvbihuKVxcXCJcXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdj48L2Rpdj5cXG4gIDwvZGl2PlxcbjwvdGVtcGxhdGU+XFxuPHNjcmlwdCBsYW5nPVxcXCJ0c1xcXCI+XFxuaW1wb3J0IHtcXG4gIHJlYWN0aXZlLFxcbiAgb25Nb3VudGVkLFxcbiAgaW5qZWN0LFxcbiAgcmVmLFxcbiAgd2F0Y2gsXFxuICBjb21wdXRlZCxcXG4gIGRlZmluZUNvbXBvbmVudCxcXG59IGZyb20gJ3Z1ZSc7XFxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcXG5pbXBvcnQgTXVsdGlTZWxlY3RXaXRoU2VhcmNoIGZyb20gJ0NvbXBvbmVudHMvTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZSc7XFxuaW1wb3J0IHsgVHJhbnNsYXRlIH0gZnJvbSAnQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlcic7XFxuXFxuaW1wb3J0IGRhdGVGb3JtYXQgZnJvbSAnQ29tcG9zYWJsZS9kYXRlRm9ybWF0JztcXG5pbXBvcnQge1xcbiAga2ViYWJDYXNlVG9TbmFrZWNhc2UsXFxuICBzbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZSxcXG59IGZyb20gJ0NvbXBvc2FibGUvdXRpbHMnO1xcblxcbmltcG9ydCBCdG5Db21wb25lbnQgZnJvbSAnQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlJztcXG5pbXBvcnQgUGFnaW5hdGlvbiBmcm9tICdDb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWUnO1xcbmltcG9ydCBNdWx0aXNlbGVjdCBmcm9tICdAdnVlZm9ybS9tdWx0aXNlbGVjdCc7XFxuaW1wb3J0IHsgd2F0Y2hJZ25vcmFibGUgfSBmcm9tICdAdnVldXNlL2NvcmUnO1xcbmltcG9ydCBEYXRlUmFuZ2VXaWRnZXQgZnJvbSAnQ29tcG9uZW50cy9EYXRlUmFuZ2VXaWRnZXQudnVlJztcXG5cXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xcbiAgbmFtZTogJ1RhYmxlTGlzdCcsXFxuICBjb21wb25lbnRzOiB7XFxuICAgIEJ0bkNvbXBvbmVudDogQnRuQ29tcG9uZW50LFxcbiAgICBQYWdpbmF0aW9uOiBQYWdpbmF0aW9uLFxcbiAgICBNdWx0aXNlbGVjdDogTXVsdGlzZWxlY3QsXFxuICAgIERhdGVSYW5nZVdpZGdldDogRGF0ZVJhbmdlV2lkZ2V0LFxcbiAgfSxcXG4gIHByb3BzOiB7XFxuICAgIGNvdW50cmllczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXFxuICAgIHNldHVwQ29tcGxldGVuZXNzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcXG4gICAgcmVnaXN0cmF0aW9uVHlwZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxcbiAgICBwdWJsaXNoZXJUeXBlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXFxuICAgIGRhdGFMaWNlbnNlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXFxuICAgIG9sZGVzdERhdGVzOiB7XFxuICAgICAgdHlwZTogU3RyaW5nLFxcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgICB9LFxcbiAgfSxcXG5cXG4gIHNldHVwKHByb3BzKSB7XFxuICAgIC8vIGluamVjdFxcbiAgICBpbnRlcmZhY2UgVG9hc3RJbnRlcmZhY2Uge1xcbiAgICAgIHZpc2liaWxpdHk6IGJvb2xlYW47XFxuICAgICAgbWVzc2FnZTogc3RyaW5nO1xcbiAgICAgIHR5cGU6IGJvb2xlYW47XFxuICAgIH1cXG4gICAgY29uc3QgdG9hc3RNZXNzYWdlID0gaW5qZWN0KCd0b2FzdERhdGEnKSBhcyBUb2FzdEludGVyZmFjZTtcXG5cXG4gICAgaW50ZXJmYWNlIExvYWRlckludGVyZmFjZSB7XFxuICAgICAgc3RhdHVzOiBib29sZWFuO1xcbiAgICAgIHRleHQ6IHN0cmluZztcXG4gICAgfVxcblxcbiAgICBjb25zdCB0cmFuc2xhdGUgPSBuZXcgVHJhbnNsYXRlKCk7XFxuICAgIGNvbnN0IGxvYWRlciA9IGluamVjdCgnbG9hZGVyJykgYXMgTG9hZGVySW50ZXJmYWNlO1xcbiAgICBjb25zdCBkYXRlRHJvcGRvd24gPSByZWYoKTtcXG4gICAgY29uc3QgY2xlYXJEYXRlID0gcmVmKGZhbHNlKTtcXG4gICAgY29uc3QgZGF0ZVR5cGUgPSByZWYoJ0FsbCBUaW1lJyk7XFxuXFxuICAgIC8vdHlwZWZhY2VcXG4gICAgaW50ZXJmYWNlIG9yZ2FuaXphdGlvbkludGVyZmFjZSB7XFxuICAgICAgZGF0YTogb0RhdGFJbnRlcmZhY2U7XFxuICAgICAgc3RhdHVzOiBzdHJpbmc7XFxuICAgIH1cXG5cXG4gICAgaW50ZXJmYWNlIG9EYXRhSW50ZXJmYWNlIHtcXG4gICAgICBkYXRhOiB7XFxuICAgICAgICB0b3RhbDogbnVtYmVyO1xcblxcbiAgICAgICAgaWQ6IG51bWJlcjtcXG4gICAgICAgIG5hbWU6IHtcXG4gICAgICAgICAgbmFycmF0aXZlOiBzdHJpbmc7XFxuICAgICAgICB9W107XFxuICAgICAgICBvcmdhbml6YXRpb25fdXJsOiBzdHJpbmc7XFxuICAgICAgICB1c2VyOiB7XFxuICAgICAgICAgIGVtYWlsOiBzdHJpbmc7XFxuICAgICAgICAgIGlkOiBudW1iZXI7XFxuICAgICAgICB9O1xcbiAgICAgICAgdXBkYXRlZF9hdDogRGF0ZTtcXG4gICAgICAgIGNvdW50cnk6IHN0cmluZztcXG4gICAgICAgIGNyZWF0ZWRfYXQ6IERhdGU7XFxuICAgICAgICBsYXN0X2xvZ2dlZF9pbjogRGF0ZTtcXG4gICAgICAgIGFsbF9hY3Rpdml0aWVzX2NvdW50OiBudW1iZXI7XFxuICAgICAgICBwdWJsaXNoZXJfdHlwZTogc3RyaW5nIHwgbnVtYmVyO1xcbiAgICAgICAgZGF0YV9saWNlbnNlOiBzdHJpbmc7XFxuICAgICAgfVtdO1xcbiAgICAgIGxhc3RfcGFnZTogbnVtYmVyO1xcbiAgICAgIGN1cnJlbnRfcGFnZTogbnVtYmVyO1xcbiAgICB9XFxuXFxuICAgIGNvbnN0IGdldENvdW50cmllc1dpdGhQcmVmaXggPSAoKSA9PiB7XFxuICAgICAgY29uc3QgcmV0dXJuVmFsdWVGb3JDb3VudHJpZXMgPSB7fTtcXG4gICAgICBjb25zdCBjb3VudHJ5Q29kZXMgPSBPYmplY3Qua2V5cyhwcm9wcy5jb3VudHJpZXMpO1xcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnRyeUNvZGVzLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICByZXR1cm5WYWx1ZUZvckNvdW50cmllc1tjb3VudHJ5Q29kZXNbaV1dID0gYCR7Y291bnRyeUNvZGVzW2ldfSAtICR7XFxuICAgICAgICAgIHByb3BzLmNvdW50cmllc1tjb3VudHJ5Q29kZXNbaV1dXFxuICAgICAgICB9YDtcXG4gICAgICB9XFxuICAgICAgcmV0dXJuIHJldHVyblZhbHVlRm9yQ291bnRyaWVzO1xcbiAgICB9O1xcblxcbiAgICBjb25zdCBjb3VudHJpZXNXaXRoUHJlZml4ID0gZ2V0Q291bnRyaWVzV2l0aFByZWZpeCgpO1xcblxcbiAgICAvLyByZWFjdGl2aXR5XFxuICAgIGxldCBvcmdhbmlzYXRpb25EYXRhOiBvcmdhbml6YXRpb25JbnRlcmZhY2UgPSByZWFjdGl2ZSh7XFxuICAgICAgZGF0YToge30gYXMgb0RhdGFJbnRlcmZhY2UsXFxuICAgICAgc3RhdHVzOiAnZmV0Y2hpbmcnLFxcbiAgICB9KTtcXG5cXG4gICAgbGV0IG11bHRpc2VsZWN0U3R5bGUgPSByZWYoe30pO1xcblxcbiAgICBsZXQgZmlsdGVyID0gcmVhY3RpdmUoe1xcbiAgICAgIHB1Ymxpc2hlcl90eXBlOiBbXSxcXG4gICAgICBkYXRhX2xpY2Vuc2U6IFtdLFxcbiAgICAgIGNvdW50cnk6IFtdLFxcbiAgICAgIGNvbXBsZXRlbmVzczogJycsXFxuICAgICAgcmVnaXN0cmF0aW9uX3R5cGU6ICcnLFxcbiAgICAgIHN0YXJ0X2RhdGU6ICcnLFxcbiAgICAgIGVuZF9kYXRlOiAnJyxcXG4gICAgICBkYXRlX3R5cGU6ICdjcmVhdGVkX2F0JyxcXG4gICAgICBzZWxlY3RlZF9kYXRlX2ZpbHRlcjogJycsXFxuICAgIH0pO1xcbiAgICBjb25zdCByZXNldFBhZ2luYXRpb24gPSByZWYoZmFsc2UpO1xcbiAgICBjb25zdCB0b3RhbE9yZ2FuaXNhdGlvbiA9IHJlZigwKTtcXG4gICAgbGV0IHJlZ2lzdHJ5QXBpS2V5U3RhdHVzOiBib29sZWFuW10gPSByZWFjdGl2ZShbXSk7XFxuICAgIGxldCBkZWZhdWx0VmFsdWVTdGF0dXM6IGJvb2xlYW5bXSA9IHJlYWN0aXZlKFtdKTtcXG4gICAgY29uc3Qgc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaCA9IHJlZihmYWxzZSk7XFxuICAgIGxldCBkcm9wZG93blJhbmdlID0ge1xcbiAgICAgIGNyZWF0ZWRfYXQ6ICdSZWdpc3RlcmVkIGRhdGUgcmFuZ2UnLFxcbiAgICAgIGxhc3RfbG9nZ2VkX2luOiAnTGFzdCBsb2dpbiBkYXRlIHJhbmdlJyxcXG4gICAgfTtcXG4gICAgY29uc3Qgc29ydFBhcmFtcyA9IHJlZih7IG9yZGVyQnk6ICcnLCBkaXJlY3Rpb246ICcnIH0pO1xcblxcbiAgICBjb25zdCB7IGlnbm9yZVVwZGF0ZXMgfSA9IHdhdGNoSWdub3JhYmxlKGZpbHRlciwgKCkgPT4gdW5kZWZpbmVkKTtcXG4gICAgd2F0Y2goXFxuICAgICAgKCkgPT4gc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaC52YWx1ZSxcXG4gICAgICAodmFsdWUpID0+IHtcXG4gICAgICAgIGlmICh2YWx1ZSkge1xcbiAgICAgICAgICByb3RhdGVDbGFzcy52YWx1ZSA9ICdyb3RhdGUtMTgwJztcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgIHJvdGF0ZUNsYXNzLnZhbHVlID0gJ3JvdGF0ZS0wJztcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICh2YWx1ZSkge1xcbiAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNsb3NlUHVibGlzaGVyTW9kZWwpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZVB1Ymxpc2hlck1vZGVsKTtcXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgICk7XFxuXFxuICAgIGNvbnN0IGNsZWFyRGF0ZUZpbHRlciA9ICgpID0+IHtcXG4gICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSA9ICcnO1xcbiAgICAgIGZpbHRlci5lbmRfZGF0ZSA9ICcnO1xcbiAgICAgIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlciA9ICcnO1xcbiAgICAgIGNsZWFyRGF0ZS52YWx1ZSA9IHRydWU7XFxuICAgIH07XFxuXFxuICAgIGNvbnN0IGNsb3NlUHVibGlzaGVyTW9kZWwgPSAoKSA9PiB7XFxuICAgICAgc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaC52YWx1ZSA9IGZhbHNlO1xcbiAgICB9O1xcbiAgICBjb25zdCBnZW5lcmF0ZUxhYmVsID0gKGxhYmVsKSA9PiB7XFxuICAgICAgcmV0dXJuIHsgJy0tbGFiZWwnOiBgJyR7bGFiZWx9J2AgfTtcXG4gICAgfTtcXG5cXG4gICAgLy9saWZlY3ljbGVcXG4gICAgb25Nb3VudGVkKCgpID0+IHtcXG4gICAgICBsZXQgZmlsdGVyUGFyYW1zID0gZ2V0RmlsdGVyUGFyYW1zRnJvbVByZXZpb3VzUGFnZSgpO1xcblxcbiAgICAgIGlmIChmaWx0ZXJQYXJhbXMpIHtcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsdGVyUGFyYW1zLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgIGxldCBrZXkgPSBrZWJhYkNhc2VUb1NuYWtlY2FzZShmaWx0ZXJQYXJhbXNbaV1bMF0pO1xcbiAgICAgICAgICBsZXQgdmFsdWUgPSBmaWx0ZXJQYXJhbXNbaV1bMV07XFxuXFxuICAgICAgICAgIGlmIChbJ3B1Ymxpc2hlcl90eXBlJywgJ2RhdGFfbGljZW5zZScsICdjb3VudHJ5J10uaW5jbHVkZXMoa2V5KSkge1xcbiAgICAgICAgICAgIGZpbHRlcltrZXldLnB1c2godmFsdWUpO1xcbiAgICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2RhdGVfdHlwZScpIHtcXG4gICAgICAgICAgICBkYXRlVHlwZS52YWx1ZSA9IHZhbHVlLnNwbGl0KCctJykuam9pbignICcpO1xcbiAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGZpbHRlcltrZXldID0gdmFsdWU7XFxuICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICB9XFxuXFxuICAgICAgZmV0Y2hPcmdhbmlzYXRpb24oMSk7XFxuICAgIH0pO1xcblxcbiAgICBjb25zdCBnZXRGaWx0ZXJQYXJhbXNGcm9tUHJldmlvdXNQYWdlID0gKCkgPT4ge1xcbiAgICAgIGxldCBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmPy50b1N0cmluZygpO1xcblxcbiAgICAgIGlmIChxdWVyeVN0cmluZykge1xcbiAgICAgICAgcXVlcnlTdHJpbmcgPSBxdWVyeVN0cmluZy5zcGxpdCgnPycpWzFdO1xcblxcbiAgICAgICAgbGV0IHF1ZXJ5UGFyYW1zSW5LZXlWYWw6IG9iamVjdFtdID0gW107XFxuICAgICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHF1ZXJ5U3RyaW5nPy5zcGxpdCgnJicpO1xcblxcbiAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zKSB7XFxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcXVlcnlQYXJhbXMubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBsZXQgW2tleSwgdmFsdWVdID0gcXVlcnlQYXJhbXNbaV0uc3BsaXQoJz0nKTtcXG4gICAgICAgICAgICBpZiAoa2V5KSB7XFxuICAgICAgICAgICAgICBxdWVyeVBhcmFtc0luS2V5VmFsLnB1c2goW2tleSwgdmFsdWUgPz8gJyddKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH1cXG4gICAgICAgIH1cXG5cXG4gICAgICAgIHJldHVybiBxdWVyeVBhcmFtc0luS2V5VmFsO1xcbiAgICAgIH1cXG5cXG4gICAgICByZXR1cm4gZmFsc2U7XFxuICAgIH07XFxuXFxuICAgIC8qKlxcbiAgICAgKiBGZXRjaGluZyBvcmdhbml6YXRpb24gbGlzdFxcbiAgICAgKlxcbiAgICAgKi9cXG4gICAgY29uc3QgY3VycmVudFVSTCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xcbiAgICBjb25zdCBmZXRjaE9yZ2FuaXNhdGlvbiA9IChhY3RpdmVfcGFnZSA9IDEpID0+IHtcXG4gICAgICBvcmdhbmlzYXRpb25EYXRhLnN0YXR1cyA9ICdmZXRjaGluZyc7XFxuICAgICAgbGV0IHF1ZXJ5U3RyaW5nID0gJyc7XFxuICAgICAgaWYgKGN1cnJlbnRVUkwuaW5jbHVkZXMoJz8nKSkge1xcbiAgICAgICAgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoO1xcbiAgICAgIH1cXG5cXG4gICAgICBhY3RpdmVfcGFnZSA9IGFjdGl2ZV9wYWdlID8/IDE7XFxuICAgICAgbGV0IGVuZHBvaW50ID0gYC9saXN0LW9yZ2FuaXNhdGlvbnMvcGFnZS8ke2FjdGl2ZV9wYWdlfSR7cXVlcnlTdHJpbmd9YDtcXG5cXG4gICAgICBpZiAoc29ydFBhcmFtcy52YWx1ZS5vcmRlckJ5KSB7XFxuICAgICAgICB1cmxQYXJhbXMuYXBwZW5kKCdvcmRlckJ5Jywgc29ydFBhcmFtcy52YWx1ZS5vcmRlckJ5KTtcXG4gICAgICAgIHVybFBhcmFtcy5hcHBlbmQoJ2RpcmVjdGlvbicsIHNvcnRQYXJhbXMudmFsdWUuZGlyZWN0aW9uKTtcXG4gICAgICB9XFxuXFxuICAgICAgaWYgKFxcbiAgICAgICAgaXNGaWx0ZXJBcHBsaWVkLnZhbHVlIHx8XFxuICAgICAgICBCb29sZWFuKHNvcnRQYXJhbXMudmFsdWUub3JkZXJCeSAmJiBzb3J0UGFyYW1zLnZhbHVlLmRpcmVjdGlvbilcXG4gICAgICApIHtcXG4gICAgICAgIHF1ZXJ5U3RyaW5nID0gcXVlcnlTdHJpbmcgPz8gJyZxPSc7XFxuICAgICAgICBlbmRwb2ludCA9IHF1ZXJ5U3RyaW5nICE9PSAnJyA/IGVuZHBvaW50IDogYCR7ZW5kcG9pbnR9YDtcXG4gICAgICAgIGZvciAoY29uc3QgZmlsdGVyS2V5IGluIGZpbHRlcikge1xcbiAgICAgICAgICBpZiAoZmlsdGVyW2ZpbHRlcktleV0gJiYgZmlsdGVyW2ZpbHRlcktleV0ubGVuZ3RoID4gMCkge1xcbiAgICAgICAgICAgIHVybFBhcmFtcy5hcHBlbmQoZmlsdGVyS2V5LCBmaWx0ZXJbZmlsdGVyS2V5XSk7XFxuICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICB9XFxuXFxuICAgICAgYXhpb3NcXG4gICAgICAgIC5nZXQoZW5kcG9pbnQsIHtcXG4gICAgICAgICAgcGFyYW1zOlxcbiAgICAgICAgICAgIGlzRmlsdGVyQXBwbGllZC52YWx1ZSB8fFxcbiAgICAgICAgICAgIEJvb2xlYW4oc29ydFBhcmFtcy52YWx1ZS5vcmRlckJ5ICYmIHNvcnRQYXJhbXMudmFsdWUuZGlyZWN0aW9uKVxcbiAgICAgICAgICAgICAgPyB1cmxQYXJhbXNcXG4gICAgICAgICAgICAgIDogJycsXFxuICAgICAgICB9KVxcbiAgICAgICAgLnRoZW4oKHJlcykgPT4ge1xcbiAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHJlcy5kYXRhO1xcbiAgICAgICAgICB0b3RhbE9yZ2FuaXNhdGlvbi52YWx1ZSA9IHJlc3BvbnNlLmRhdGE/LnRvdGFsO1xcblxcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLmRhdGEubGVuZ3RoID09PSAwKSB7XFxuICAgICAgICAgICAgICBvcmdhbmlzYXRpb25EYXRhLnN0YXR1cyA9ICdlbXB0eSc7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkRhdGEuc3RhdHVzID0gJ3N1Y2Nlc3MnO1xcbiAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uRGF0YS5kYXRhID0gcmVzcG9uc2UuZGF0YTtcXG5cXG4gICAgICAgICAgICAgIHJlZnJlc2hTdGF0dXNBcnJheXMob3JnYW5pc2F0aW9uRGF0YS5kYXRhKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgb3JnYW5pc2F0aW9uRGF0YS5zdGF0dXMgPSAnZmFpbGVkIHRvIHJldHJpZXZlIGRhdGEnO1xcbiAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKTtcXG4gICAgfTtcXG5cXG4gICAgLyoqXFxuICAgICAqIFByb3h5IFVzZXJcXG4gICAgICovXFxuICAgIC8vIGRpc3BsYXkvaGlkZSB2YWxpZGF0b3IgbG9hZGVyXFxuICAgIGNvbnN0IHByb3h5VXNlciA9IChpZDogbnVtYmVyKSA9PiB7XFxuICAgICAgbG9hZGVyLnN0YXR1cyA9IHRydWU7XFxuICAgICAgbG9hZGVyLnRleHQgPSB0cmFuc2xhdGUuYnV0dG9uKCdwcm94eV9sb2dpbicpO1xcbiAgICAgIGNvbnN0IGVuZHBvaW50ID0gYC9wcm94eS1vcmdhbmlzYXRpb24vJHtpZH1gO1xcblxcbiAgICAgIGF4aW9zLmdldChlbmRwb2ludCkudGhlbigocmVzKSA9PiB7XFxuICAgICAgICBjb25zdCByZXNwb25zZSA9IHJlcy5kYXRhO1xcblxcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UoJy9hY3Rpdml0aWVzJyk7XFxuICAgICAgICAgIH0sIDEwMDApO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgbG9hZGVyLnN0YXR1cyA9IGZhbHNlO1xcbiAgICAgICAgICB0b2FzdE1lc3NhZ2UubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XFxuICAgICAgICAgIHRvYXN0TWVzc2FnZS50eXBlID0gcmVzcG9uc2Uuc3VjY2VzcztcXG4gICAgICAgIH1cXG4gICAgICB9KTtcXG4gICAgfTtcXG5cXG4gICAgLyoqXFxuICAgICAqIFNvcnRpbmcgQnkgdXBkYXRlIG9uXFxuICAgICAqL1xcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXFxuICAgIGxldCBxdWVyeSA9ICcnLFxcbiAgICAgIGRlZmF1bHRTb3J0RGlyZWN0aW9uID0gJ2Rlc2NlbmRpbmcnLFxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcXG4gICAgICBzb3J0RGlyZWN0aW9uID0gJ2Rlc2MnO1xcblxcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XFxuXFxuICAgIGxldCB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKTtcXG4gICAgbGV0IG9yZGVyVHlwZSA9IHJlZignJyk7XFxuICAgIG9yZGVyVHlwZS52YWx1ZSA9IHVybFBhcmFtcy5nZXQoJ29yZGVyQnknKSA/PyAnJztcXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xcbiAgICBsZXQgcmFuZ2UgPSAnJztcXG5cXG4gICAgY29uc3Qgc29ydGluZ0RpcmVjdGlvbiA9ICgpID0+IHtcXG4gICAgICByZXR1cm4gc29ydFBhcmFtcy52YWx1ZS5kaXJlY3Rpb24gPT09ICdhc2MnID8gJ2Rlc2NlbmRpbmcnIDogJ2FzY2VuZGluZyc7XFxuICAgIH07XFxuXFxuICAgIGNvbnN0IHNvcnRCeSA9IGFzeW5jIChvcmRlcikgPT4ge1xcbiAgICAgIHJlc2V0UGFnaW5hdGlvbi52YWx1ZSA9IHRydWU7XFxuICAgICAgc29ydFBhcmFtcy52YWx1ZS5vcmRlckJ5ID0gb3JkZXI7XFxuICAgICAgc29ydFBhcmFtcy52YWx1ZS5kaXJlY3Rpb24gPVxcbiAgICAgICAgc29ydFBhcmFtcy52YWx1ZS5kaXJlY3Rpb24gPT09ICdkZXNjJyA/ICdhc2MnIDogJ2Rlc2MnO1xcblxcbiAgICAgIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykpIHtcXG4gICAgICAgIHF1ZXJ5ID0gdXJsUGFyYW1zLmdldCgncScpID8/ICcnO1xcbiAgICAgICAgc29ydERpcmVjdGlvbiA9IHVybFBhcmFtcy5nZXQoJ2RpcmVjdGlvbicpID09PSAnZGVzYycgPyAnYXNjJyA6ICdkZXNjJztcXG5cXG4gICAgICAgIGxldCBzdGFydERhdGUgPSB1cmxQYXJhbXMuZ2V0KCdzdGFydF9kYXRlJykgPz8gZmFsc2U7XFxuICAgICAgICBsZXQgZW5kRGF0ZSA9IHVybFBhcmFtcy5nZXQoJ2VuZF9kYXRlJykgPz8gZmFsc2U7XFxuXFxuICAgICAgICBpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcXG4gICAgICAgICAgcmFuZ2UgPSBgJnN0YXJ0X2RhdGU9JHtzdGFydERhdGV9JmVuZF9kYXRlPSR7ZW5kRGF0ZX1gO1xcbiAgICAgICAgfVxcbiAgICAgIH1cXG5cXG4gICAgICBhd2FpdCBmZXRjaE9yZ2FuaXNhdGlvbigxKTtcXG4gICAgICByZXNldFBhZ2luYXRpb24udmFsdWUgPSBmYWxzZTtcXG4gICAgfTtcXG5cXG4gICAgd2F0Y2goXFxuICAgICAgKCkgPT4gW1xcbiAgICAgICAgZmlsdGVyLmNvdW50cnksXFxuICAgICAgICBmaWx0ZXIuY29tcGxldGVuZXNzLFxcbiAgICAgICAgZmlsdGVyLnJlZ2lzdHJhdGlvbl90eXBlLFxcbiAgICAgICAgZmlsdGVyLnB1Ymxpc2hlcl90eXBlLFxcbiAgICAgICAgZmlsdGVyLmRhdGFfbGljZW5zZSxcXG4gICAgICAgIGZpbHRlci5zdGFydF9kYXRlLFxcbiAgICAgICAgZmlsdGVyLmVuZF9kYXRlLFxcbiAgICAgICAgZmlsdGVyLmRhdGVfdHlwZSxcXG4gICAgICBdLFxcbiAgICAgICgpID0+IHtcXG4gICAgICAgIGZldGNoT3JnYW5pc2F0aW9uKCk7XFxuICAgICAgfSxcXG4gICAgICB7IGRlZXA6IHRydWUgfVxcbiAgICApO1xcblxcbiAgICBjb25zdCByZXNldEFsbEZpbHRlcnMgPSAoKSA9PiB7XFxuICAgICAgaWdub3JlVXBkYXRlcygoKSA9PiB7XFxuICAgICAgICBmaWx0ZXIuY291bnRyeSA9IFtdO1xcbiAgICAgICAgZmlsdGVyLnB1Ymxpc2hlcl90eXBlID0gW107XFxuICAgICAgICBmaWx0ZXIuZGF0YV9saWNlbnNlID0gW107XFxuICAgICAgICBmaWx0ZXIuY29tcGxldGVuZXNzID0gJyc7XFxuICAgICAgICBmaWx0ZXIucmVnaXN0cmF0aW9uX3R5cGUgPSAnJztcXG4gICAgICAgIGZpbHRlci5zdGFydF9kYXRlID0gJyc7XFxuICAgICAgICBmaWx0ZXIuZW5kX2RhdGUgPSAnJztcXG4gICAgICAgIGZpbHRlci5kYXRlX3R5cGUgPSAnY3JlYXRlZF9hdCc7XFxuICAgICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSAnJztcXG4gICAgICAgIGNsZWFyRGF0ZS52YWx1ZSA9IHRydWU7XFxuICAgICAgfSk7XFxuICAgIH07XFxuXFxuICAgIGNvbnN0IGlzRmlsdGVyQXBwbGllZCA9IGNvbXB1dGVkKCgpID0+IHtcXG4gICAgICByZXR1cm4gKFxcbiAgICAgICAgZmlsdGVyLmNvdW50cnkubGVuZ3RoICtcXG4gICAgICAgICAgZmlsdGVyLnB1Ymxpc2hlcl90eXBlLmxlbmd0aCArXFxuICAgICAgICAgIGZpbHRlci5kYXRhX2xpY2Vuc2UubGVuZ3RoICE9XFxuICAgICAgICAgIDAgfHxcXG4gICAgICAgIGZpbHRlci5jb21wbGV0ZW5lc3MgIT09ICcnIHx8XFxuICAgICAgICBmaWx0ZXIucmVnaXN0cmF0aW9uX3R5cGUgIT09ICcnIHx8XFxuICAgICAgICAoZmlsdGVyLnN0YXJ0X2RhdGUgIT09ICcnICYmIGZpbHRlci5lbmRfZGF0ZSAhPT0gJycpXFxuICAgICAgKTtcXG4gICAgfSk7XFxuXFxuICAgIGNvbnN0IHJlZnJlc2hTdGF0dXNBcnJheXMgPSAob3JnRGF0YSkgPT4ge1xcbiAgICAgIGZvciAobGV0IG9yZ0RhdHVtIG9mIG9yZ0RhdGEuZGF0YSkge1xcbiAgICAgICAgcmVnaXN0cnlBcGlLZXlTdGF0dXNbb3JnRGF0dW0uaWRdID1cXG4gICAgICAgICAgb3JnRGF0dW0/LnNldHRpbmdzPy5wdWJsaXNoaW5nX2luZm8/LnRva2VuX3ZlcmlmaWNhdGlvbiA/PyBmYWxzZTtcXG4gICAgICAgIGRlZmF1bHRWYWx1ZVN0YXR1c1tvcmdEYXR1bS5pZF0gPSBjaGVja0lmRGVmYXVsdFZhbHVlc0FyZVZhbGlkKFxcbiAgICAgICAgICBvcmdEYXR1bSA/IG9yZ0RhdHVtLnNldHRpbmdzIDogZmFsc2VcXG4gICAgICAgICk7XFxuICAgICAgfVxcbiAgICB9O1xcblxcbiAgICBjb25zdCBjaGVja0lmRGVmYXVsdFZhbHVlc0FyZVZhbGlkID0gKHNldHRpbmdzKSA9PiB7XFxuICAgICAgaWYgKHNldHRpbmdzKSB7XFxuICAgICAgICBsZXQgZGVmYXVsdFZhbHVlcyA9IHNldHRpbmdzLmRlZmF1bHRfdmFsdWVzO1xcbiAgICAgICAgbGV0IGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9IHNldHRpbmdzLmFjdGl2aXR5X2RlZmF1bHRfdmFsdWVzO1xcbiAgICAgICAgcmV0dXJuICEhKFxcbiAgICAgICAgICAoZGVmYXVsdFZhbHVlcz8uZGVmYXVsdF9jdXJyZW5jeSA/PyBmYWxzZSkgJiZcXG4gICAgICAgICAgKGRlZmF1bHRWYWx1ZXM/LmRlZmF1bHRfbGFuZ3VhZ2UgPz8gZmFsc2UpICYmXFxuICAgICAgICAgIChhY3Rpdml0eURlZmF1bHRWYWx1ZXM/LmhpZXJhcmNoeSA/PyBmYWxzZSkgJiZcXG4gICAgICAgICAgKGFjdGl2aXR5RGVmYXVsdFZhbHVlcz8uYnVkZ2V0X25vdF9wcm92aWRlZCA/PyBmYWxzZSkgJiZcXG4gICAgICAgICAgKGFjdGl2aXR5RGVmYXVsdFZhbHVlcz8uaHVtYW5pdGFyaWFuICE9IG51bGwgfHxcXG4gICAgICAgICAgICBhY3Rpdml0eURlZmF1bHRWYWx1ZXM/Lmh1bWFuaXRhcmlhbiAhPSAnJyB8fFxcbiAgICAgICAgICAgIGFjdGl2aXR5RGVmYXVsdFZhbHVlcz8uaHVtYW5pdGFyaWFuICE9IGZhbHNlKVxcbiAgICAgICAgKTtcXG4gICAgICB9XFxuXFxuICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICB9O1xcblxcbiAgICBjb25zdCBzZXREYXRlUmFuZ2VEYXRlID0gKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgc2VsZWN0ZWREYXRlRmlsdGVyID0gJycpID0+IHtcXG4gICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSA9IHN0YXJ0RGF0ZTtcXG4gICAgICBmaWx0ZXIuZW5kX2RhdGUgPSBlbmREYXRlO1xcbiAgICAgIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlciA9IHNlbGVjdGVkRGF0ZUZpbHRlcjtcXG4gICAgfTtcXG5cXG4gICAgY29uc3Qgc2V0RGF0ZVR5cGUgPSAoZGF0ZVR5cGUpID0+IHtcXG4gICAgICBmaWx0ZXIuZGF0ZV90eXBlID0gZGF0ZVR5cGU7XFxuICAgIH07XFxuXFxuICAgIGNvbnN0IHJvdGF0ZUNsYXNzID0gcmVmKCcnKTtcXG5cXG4gICAgY29uc3QgdG9nZ2xlU2hvd011bHRpU2VsZWN0ID0gKGV2ZW50KSA9PiB7XFxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XFxuICAgICAgY29uc3QgcmVjdCA9IGV2ZW50LnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcXG4gICAgICBtdWx0aXNlbGVjdFN0eWxlLnZhbHVlID0ge1xcbiAgICAgICAgdG9wOiBOdW1iZXIocmVjdC50b3ApIDwgMTAwID8gMjEwICsgJ3B4JyA6IE51bWJlcihyZWN0LnRvcCkgKyA1MCArICdweCcsXFxuICAgICAgICBsZWZ0OiBOdW1iZXIocmVjdC5sZWZ0KSArICdweCcsXFxuICAgICAgfTtcXG4gICAgICBzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZhbHVlID0gIXNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2gudmFsdWU7XFxuICAgIH07XFxuXFxuICAgIGNvbnN0IHNldFNlbGVjdGVkUHVibGlzaGVyID0gKHB1Ymxpc2hlclR5cGVzKSA9PiB7XFxuICAgICAgZmlsdGVyLnB1Ymxpc2hlcl90eXBlID0gcHVibGlzaGVyVHlwZXM7XFxuICAgIH07XFxuXFxuICAgIC8qXFxuICAgICAqIEZvciBtYXBwaW5nIGNvdW50cnksIHB1Ymxpc2hlcl90eXBlIGFuZCBkYXRhIGxpY2Vuc2VcXG4gICAgICovXFxuICAgIGNvbnN0IHNob3dNYXBwZWREYXRhID0gKGtleSwgZGF0YSwgbWFwKSA9PiB7XFxuICAgICAgaWYgKGRhdGEpIHtcXG4gICAgICAgIGlmIChrZXkgPT0gJ2RhdGFfbGljZW5zZScpIHtcXG4gICAgICAgICAgbGV0IGxpY2Vuc2UgPSBkYXRhW2tleV07XFxuICAgICAgICAgIGxpY2Vuc2UgPSBsaWNlbnNlPy50cmltKCk7XFxuICAgICAgICAgIHJldHVybiBsaWNlbnNlID8gbWFwW2xpY2Vuc2VdIDogdHJhbnNsYXRlLm1pc3NpbmcoJ25vdF9hdmFpbGFibGUnKTtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgIHJldHVybiBkYXRhW2tleV0gPyBtYXBbZGF0YVtrZXldXSA6IHRyYW5zbGF0ZS5taXNzaW5nKCdub3RfYXZhaWxhYmxlJyk7XFxuICAgICAgfVxcbiAgICAgIHJldHVybiB0cmFuc2xhdGUubWlzc2luZygnbm90X2F2YWlsYWJsZScpO1xcbiAgICB9O1xcblxcbiAgICByZXR1cm4ge1xcbiAgICAgIEJ0bkNvbXBvbmVudCxcXG4gICAgICBNdWx0aXNlbGVjdCxcXG4gICAgICBEYXRlUmFuZ2VXaWRnZXQsXFxuICAgICAgTXVsdGlTZWxlY3RXaXRoU2VhcmNoLFxcbiAgICAgIG9yZ2FuaXNhdGlvbkRhdGEsXFxuICAgICAgZHJvcGRvd25SYW5nZSxcXG4gICAgICBzZXRTZWxlY3RlZFB1Ymxpc2hlcixcXG4gICAgICB0b2dnbGVTaG93TXVsdGlTZWxlY3QsXFxuICAgICAgc2V0RGF0ZVR5cGUsXFxuICAgICAgc2V0RGF0ZVJhbmdlRGF0ZSxcXG4gICAgICBzb3J0QnksXFxuICAgICAgcmVzZXRBbGxGaWx0ZXJzLFxcbiAgICAgIHNvcnRpbmdEaXJlY3Rpb24sXFxuICAgICAgZGVmYXVsdFNvcnREaXJlY3Rpb24sXFxuICAgICAgcHJveHlVc2VyLFxcbiAgICAgIGRhdGVGb3JtYXQsXFxuICAgICAgZmV0Y2hPcmdhbmlzYXRpb24sXFxuICAgICAgZGVmYXVsdFZhbHVlU3RhdHVzLFxcbiAgICAgIHJlZ2lzdHJ5QXBpS2V5U3RhdHVzLFxcbiAgICAgIG9yZGVyVHlwZSxcXG4gICAgICBjbGVhckRhdGUsXFxuICAgICAgZmlsdGVyLFxcbiAgICAgIHNuYWtlQ2FzZVRvU2VudGVuY2VDYXNlLFxcbiAgICAgIGlzRmlsdGVyQXBwbGllZCxcXG4gICAgICBwcm9wcyxcXG4gICAgICBzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoLFxcbiAgICAgIGRhdGVUeXBlLFxcbiAgICAgIHJvdGF0ZUNsYXNzLFxcbiAgICAgIG11bHRpc2VsZWN0U3R5bGUsXFxuICAgICAgY2xlYXJEYXRlRmlsdGVyLFxcbiAgICAgIGRhdGVEcm9wZG93bixcXG4gICAgICBzb3J0UGFyYW1zLFxcbiAgICAgIHJlc2V0UGFnaW5hdGlvbixcXG4gICAgICBzaG93TWFwcGVkRGF0YSxcXG4gICAgICB0b3RhbE9yZ2FuaXNhdGlvbixcXG4gICAgICBjb3VudHJpZXNXaXRoUHJlZml4LFxcbiAgICAgIGdlbmVyYXRlTGFiZWwsXFxuICAgICAgdHJhbnNsYXRlLFxcbiAgICB9O1xcbiAgfSxcXG59KTtcXG48L3NjcmlwdD5cXG5cXG48c3R5bGU+XFxuLm11bHRpc2VsZWN0LXdyYXBwZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgei1pbmRleDogNTtcXG4gIHdpZHRoOiA0MjRweDtcXG4gIGhlaWdodDogZml0LWNvbnRlbnQ7XFxuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxufVxcbi5tdWx0aXNlbGVjdC1sb29rYWxpa2Uge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkMWQ1ZGI7XFxuICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICB3aWR0aDogMTYwcHggIWltcG9ydGFudDtcXG4gIGhlaWdodDogNDBweDtcXG4gIHBhZGRpbmc6IDEycHg7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcbjwvc3R5bGU+XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiXFxuQC13ZWJraXQta2V5ZnJhbWVzIHNwaW5uZXItMDYxMWQ5ZjAge1xcbjAlIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKSByb3RhdGUoMGRlZyk7XFxufVxcbjEwMCUge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApIHJvdGF0ZSgzNjBkZWcpO1xcbn1cXG59XFxuQGtleWZyYW1lcyBzcGlubmVyLTA2MTFkOWYwIHtcXG4wJSB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCkgcm90YXRlKDBkZWcpO1xcbn1cXG4xMDAlIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKSByb3RhdGUoMzYwZGVnKTtcXG59XFxufVxcbi5zcGluW2RhdGEtdi0wNjExZDlmMF06OmJlZm9yZSB7XFxuICAtd2Via2l0LWFuaW1hdGlvbjogMS41cyBsaW5lYXIgaW5maW5pdGUgc3Bpbm5lci0wNjExZDlmMDtcXG4gICAgICAgICAgYW5pbWF0aW9uOiAxLjVzIGxpbmVhciBpbmZpbml0ZSBzcGlubmVyLTA2MTFkOWYwO1xcbiAgLXdlYmtpdC1hbmltYXRpb24tcGxheS1zdGF0ZTogaW5oZXJpdDtcXG4gICAgICAgICAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IGluaGVyaXQ7XFxuICBib3JkZXI6IHNvbGlkIDNweCAjY2ZkMGQxO1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogZ3JleTtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIGNvbnRlbnQ6ICcnO1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiA1MCU7XFxuICBsZWZ0OiA1MCU7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApO1xcbiAgd2lkdGg6IDIwcHg7XFxuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xcbn1cXG4uc3BpbltkYXRhLXYtMDYxMWQ5ZjBdIHtcXG4gIGhlaWdodDogNDBweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgbWFyZ2luOiBhdXRvO1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9Vc2VyTGlzdGluZy52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIjtBQTJ1Q0E7QUFDRTtJQUNFLGtEQUFrRDtBQUNwRDtBQUNBO0lBQ0Usb0RBQW9EO0FBQ3REO0FBQ0Y7QUFQQTtBQUNFO0lBQ0Usa0RBQWtEO0FBQ3BEO0FBQ0E7SUFDRSxvREFBb0Q7QUFDdEQ7QUFDRjtBQUVBO0VBQ0Usd0RBQXVDO1VBQXZDLGdEQUF1QztFQUN2QyxxQ0FBNkI7VUFBN0IsNkJBQTZCO0VBQzdCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIsa0JBQWtCO0VBQ2xCLFdBQVc7RUFDWCxZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLFFBQVE7RUFDUixTQUFTO0VBQ1QscUNBQXFDO0VBQ3JDLFdBQVc7RUFDWCxzQkFBc0I7QUFDeEI7QUFDQTtFQUNFLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIsV0FBVztFQUNYLFlBQVk7QUFDZFwiLFwic291cmNlc0NvbnRlbnRcIjpbXCI8dGVtcGxhdGU+XFxuICA8ZGl2IGNsYXNzPVxcXCJweC02IHB5LTQgbWQ6cHgtMTBcXFwiPlxcbiAgICA8TG9hZGVyIHYtaWY9XFxcImlzTG9hZGVyVmlzaWJsZVxcXCIgLz5cXG4gICAgPGRpdiBjbGFzcz1cXFwibXktNCBmbGV4IGp1c3RpZnktYmV0d2VlblxcXCI+XFxuICAgICAgPGg0IGNsYXNzPVxcXCJtci00IHRleHQtM3hsIGZvbnQtYm9sZCB4bDp0ZXh0LWhlYWRpbmctNFxcXCI+XFxuICAgICAgICB7eyB0cmFuc2xhdGUudGV4dEZyb21LZXkoJ3VzZXIudXNlcnMnKSB9fVxcbiAgICAgIDwvaDQ+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiaW5saW5lLWZsZXggZmxleC1jb2wgaXRlbXMtZW5kIGp1c3RpZnktZW5kIGdhcC0yIG1kOmZsZXgtcm93XFxcIj5cXG4gICAgICAgIDxUb2FzdFxcbiAgICAgICAgICB2LWlmPVxcXCJcXG4gICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSAmJlxcbiAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlICYmXFxuICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgIT09ICcnXFxuICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgOm1lc3NhZ2U9XFxcInRvYXN0RGF0YS5tZXNzYWdlXFxcIlxcbiAgICAgICAgICA6dHlwZT1cXFwidG9hc3REYXRhLnR5cGVcXFwiXFxuICAgICAgICAvPlxcbiAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICB2LWlmPVxcXCJ1c2Vyc0RhdGFbJ3RvdGFsJ10gPiAwXFxcIlxcbiAgICAgICAgICByZWY9XFxcImRyb3Bkb3duQnRuXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiYnV0dG9uIHNlY29uZGFyeS1idG4gd2hpdGVzcGFjZS1ub3dyYXAgZm9udC1ib2xkXFxcIlxcbiAgICAgICAgICBAY2xpY2s9XFxcImRvd25sb2FkQWxsXFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8c3ZnLXZ1ZSBpY29uPVxcXCJkb3dubG9hZC1maWxlXFxcIiAvPlxcbiAgICAgICAgICB7eyBjaGVja2xpc3QubGVuZ3RoID09PSAwID8gdHJhbnNsYXRlLmJ1dHRvbignZG93bmxvYWRfYWxsJykgOiAnJyB9fVxcbiAgICAgICAgPC9idXR0b24+XFxuICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgIHYtaWY9XFxcInVzZXJSb2xlICE9PSAnZ2VuZXJhbF91c2VyJ1xcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcInByaW1hcnktYnRuIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgICBAY2xpY2s9XFxcIlxcbiAgICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICAgIGVtcHR5Rm9ybURhdGEoKTtcXG4gICAgICAgICAgICAgIHNldEZvcm1FcnJvcigpO1xcbiAgICAgICAgICAgICAgYWRkVXNlckZvcm0gPSB0cnVlO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgXFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidGV4dC1iYXNlXFxcIiBpY29uPVxcXCJwbHVzLW91dGxpbmVkXFxcIiAvPnt7XFxuICAgICAgICAgICAgdHJhbnNsYXRlLmJ1dHRvbignYWRkX2FfbmV3JylcXG4gICAgICAgICAgfX1cXG4gICAgICAgICAge3tcXG4gICAgICAgICAgICB1c2VyUm9sZSA9PT0gJ2FkbWluJ1xcbiAgICAgICAgICAgICAgPyB0cmFuc2xhdGUudGV4dEZyb21LZXkoJ3VzZXIudXNlcnMnKVxcbiAgICAgICAgICAgICAgOiB0cmFuc2xhdGUudGV4dEZyb21LZXkoJ3VzZXIudXNlcl9yb2xlcy5pYXRpX2FkbWluJylcXG4gICAgICAgICAgfX1cXG4gICAgICAgIDwvYnV0dG9uPlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG5cXG4gICAgPGRpdj5cXG4gICAgICA8UG9wdXBNb2RhbFxcbiAgICAgICAgOm1vZGFsLWFjdGl2ZT1cXFwiYWRkVXNlckZvcm0gfHwgZWRpdFVzZXJGb3JtXFxcIlxcbiAgICAgICAgQGNsb3NlPVxcXCJcXG4gICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgIGFkZFVzZXJGb3JtID0gZmFsc2U7XFxuICAgICAgICAgICAgZWRpdFVzZXJGb3JtID0gZmFsc2U7XFxuICAgICAgICAgIH1cXG4gICAgICAgIFxcXCJcXG4gICAgICA+XFxuICAgICAgICA8ZGl2XFxuICAgICAgICAgIGNsYXNzPVxcXCJwb3B1cC1tb2RlbFxcXCJcXG4gICAgICAgICAgQGtleXVwLmVudGVyPVxcXCJhZGRVc2VyRm9ybSA/IGNyZWF0ZVVzZXIoKSA6IHVwZGF0ZVVzZXIoKVxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwibWItNSB0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1ibHVlY29yYWxcXFwiPlxcbiAgICAgICAgICAgIHt7XFxuICAgICAgICAgICAgICBhZGRVc2VyRm9ybVxcbiAgICAgICAgICAgICAgICA/IHRyYW5zbGF0ZS5idXR0b24oJ2FkZF9hX25ldycpXFxuICAgICAgICAgICAgICAgIDogdHJhbnNsYXRlLmJ1dHRvbignZWRpdCcpXFxuICAgICAgICAgICAgfX1cXG4gICAgICAgICAgICB7e1xcbiAgICAgICAgICAgICAgdXNlclJvbGUgPT09ICdhZG1pbidcXG4gICAgICAgICAgICAgICAgPyB0cmFuc2xhdGUudGV4dEZyb21LZXkoJ3VzZXIudXNlcnMnKVxcbiAgICAgICAgICAgICAgICA6IHRyYW5zbGF0ZS50ZXh0RnJvbUtleSgndXNlci51c2VyX3JvbGVzLmlhdGlfYWRtaW4nKVxcbiAgICAgICAgICAgIH19XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJncmlkIGdyaWQtY29scy0yIGdhcC02XFxcIj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtc3Bhbi0yIGZsZXggZmxleC1jb2wgaXRlbXMtc3RhcnQgZ2FwLTJcXFwiPlxcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi01MFxcXCI+XFxuICAgICAgICAgICAgICAgIHt7IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2Z1bGxuYW1lLmxhYmVsJykgfX1cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtY3JpbXNvbi01MFxcXCI+ICogPC9zcGFuPjwvbGFiZWxcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgICBpZD1cXFwiZnVsbF9uYW1lXFxcIlxcbiAgICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJmb3JtRGF0YS5mdWxsX25hbWVcXFwiXFxuICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgZm9ybUVycm9yWydmdWxsX25hbWUnXSA/ICdib3JkZXItY3JpbXNvbi01MCcgOiAnYm9yZGVyLW4tMzAnXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcInctZnVsbCByb3VuZGVkIGJvcmRlciBwLTNcXFwiXFxuICAgICAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cXFwiZm9ybUVycm9yWydmdWxsX25hbWUnXVxcXCIgY2xhc3M9XFxcImVycm9yXFxcIj57e1xcbiAgICAgICAgICAgICAgICBmb3JtRXJyb3JbJ2Z1bGxfbmFtZSddWzBdXFxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGdhcC0yXFxcIj5cXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cXFwidGV4dC1zbSB0ZXh0LW4tNTBcXFwiXFxuICAgICAgICAgICAgICAgID57eyB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCd1c2VybmFtZS5sYWJlbCcpXFxuICAgICAgICAgICAgICAgIH19PHNwYW4gY2xhc3M9XFxcInRleHQtY3JpbXNvbi01MFxcXCI+ICo8L3NwYW4+PC9sYWJlbFxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICAgIGlkPVxcXCJ1c2VybmFtZVxcXCJcXG4gICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiZm9ybURhdGEudXNlcm5hbWVcXFwiXFxuICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgZm9ybUVycm9yWyd1c2VybmFtZSddID8gJ2JvcmRlci1jcmltc29uLTUwJyA6ICdib3JkZXItbi0zMCdcXG4gICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwidy1mdWxsIHJvdW5kZWQgYm9yZGVyIHAtM1xcXCJcXG4gICAgICAgICAgICAgICAgdHlwZT1cXFwidGV4dFxcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8c3BhbiB2LWlmPVxcXCJmb3JtRXJyb3JbJ3VzZXJuYW1lJ11cXFwiIGNsYXNzPVxcXCJlcnJvclxcXCI+e3tcXG4gICAgICAgICAgICAgICAgZm9ybUVycm9yWyd1c2VybmFtZSddWzBdXFxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGdhcC0yXFxcIj5cXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cXFwidGV4dC1zbSB0ZXh0LW4tNTBcXFwiXFxuICAgICAgICAgICAgICAgID57eyB0cmFuc2xhdGUudGV4dEZyb21LZXkoJ3VzZXIuZW1haWwnKVxcbiAgICAgICAgICAgICAgICB9fTxzcGFuIGNsYXNzPVxcXCJ0ZXh0LWNyaW1zb24tNTBcXFwiPiAqIDwvc3Bhbj48L2xhYmVsXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgICAgaWQ9XFxcImVtYWlsXFxcIlxcbiAgICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJmb3JtRGF0YS5lbWFpbFxcXCJcXG4gICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICBmb3JtRXJyb3JbJ2VtYWlsJ10gPyAnYm9yZGVyLWNyaW1zb24tNTAnIDogJ2JvcmRlci1uLTMwJ1xcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ3LWZ1bGwgcm91bmRlZCBib3JkZXIgcC0zXFxcIlxcbiAgICAgICAgICAgICAgICB0eXBlPVxcXCJlbWFpbFxcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8c3BhbiB2LWlmPVxcXCJmb3JtRXJyb3JbJ2VtYWlsJ11cXFwiIGNsYXNzPVxcXCJlcnJvclxcXCI+e3tcXG4gICAgICAgICAgICAgICAgZm9ybUVycm9yWydlbWFpbCddWzBdXFxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG5cXG4gICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICB2LWlmPVxcXCJhZGRVc2VyRm9ybVxcXCJcXG4gICAgICAgICAgICAgIDpjbGFzcz1cXFwiZm9ybUVycm9yWydzdGF0dXMnXSAmJiAnZXJyb3JfX211bHRpc2VsZWN0J1xcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGdhcC0yXFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cXFwidGV4dC1zbSB0ZXh0LW4tNTBcXFwiXFxuICAgICAgICAgICAgICAgID57eyB0cmFuc2xhdGUudGV4dEZyb21LZXkoJ3VzZXIuc3RhdHVzJylcXG4gICAgICAgICAgICAgICAgfX08c3BhbiBjbGFzcz1cXFwidGV4dC1jcmltc29uLTUwXFxcIj4gKiA8L3NwYW4+PC9sYWJlbFxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgICAgICAgIGlkPVxcXCJzdGF0dXNcXFwiXFxuICAgICAgICAgICAgICAgIHYtbW9kZWw9XFxcImZvcm1EYXRhLnN0YXR1c1xcXCJcXG4gICAgICAgICAgICAgICAgOm9wdGlvbnM9XFxcInN0YXR1c1xcXCJcXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIlNlbGVjdCBzdGF0dXNcXFwiXFxuICAgICAgICAgICAgICAgIDpzZWFyY2hhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDxzcGFuIHYtaWY9XFxcImZvcm1FcnJvclsnc3RhdHVzJ11cXFwiIGNsYXNzPVxcXCJlcnJvclxcXCI+e3tcXG4gICAgICAgICAgICAgICAgZm9ybUVycm9yWydzdGF0dXMnXVswXVxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgdi1pZj1cXFwidXNlclJvbGUgPT09ICdhZG1pbidcXFwiXFxuICAgICAgICAgICAgICA6Y2xhc3M9XFxcImZvcm1FcnJvclsncm9sZV9pZCddICYmICdlcnJvcl9fbXVsdGlzZWxlY3QnXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggZmxleC1jb2wgaXRlbXMtc3RhcnQgZ2FwLTJcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi01MFxcXCJcXG4gICAgICAgICAgICAgICAgPnt7IHRyYW5zbGF0ZS50ZXh0RnJvbUtleSgndXNlci5yb2xlJylcXG4gICAgICAgICAgICAgICAgfX08c3BhbiBjbGFzcz1cXFwidGV4dC1jcmltc29uLTUwXFxcIj4gKiA8L3NwYW4+PC9sYWJlbFxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgICAgICAgIGlkPVxcXCJyb2xlXFxcIlxcbiAgICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJmb3JtRGF0YS5yb2xlX2lkXFxcIlxcbiAgICAgICAgICAgICAgICA6b3B0aW9ucz1cXFwicm9sZXNcXFwiXFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJTZWxlY3QgdXNlciByb2xlXFxcIlxcbiAgICAgICAgICAgICAgICA6c2VhcmNoYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8c3BhbiB2LWlmPVxcXCJmb3JtRXJyb3JbJ3JvbGVfaWQnXVxcXCIgY2xhc3M9XFxcImVycm9yXFxcIj57e1xcbiAgICAgICAgICAgICAgICBmb3JtRXJyb3JbJ3JvbGVfaWQnXVswXVxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBmbGV4LWNvbCBpdGVtcy1zdGFydCBnYXAtMlxcXCI+XFxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XFxcInRleHQtc20gdGV4dC1uLTUwXFxcIlxcbiAgICAgICAgICAgICAgICA+e3sgdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncGFzc3dvcmQubmV3JylcXG4gICAgICAgICAgICAgICAgfX08c3BhbiB2LWlmPVxcXCIhZWRpdFVzZXJGb3JtXFxcIiBjbGFzcz1cXFwidGV4dC1jcmltc29uLTUwXFxcIj5cXG4gICAgICAgICAgICAgICAgICAqXFxuICAgICAgICAgICAgICAgIDwvc3Bhbj48L2xhYmVsXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgICAgaWQ9XFxcInBhc3N3b3JkXFxcIlxcbiAgICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJmb3JtRGF0YS5wYXNzd29yZFxcXCJcXG4gICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICBmb3JtRXJyb3JbJ3Bhc3N3b3JkJ10gPyAnYm9yZGVyLWNyaW1zb24tNTAnIDogJ2JvcmRlci1uLTMwJ1xcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ3LWZ1bGwgcm91bmRlZCBib3JkZXIgYm9yZGVyLW4tMzAgcC0zXFxcIlxcbiAgICAgICAgICAgICAgICB0eXBlPVxcXCJwYXNzd29yZFxcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8c3BhbiB2LWlmPVxcXCJmb3JtRXJyb3JbJ3Bhc3N3b3JkJ11cXFwiIGNsYXNzPVxcXCJlcnJvclxcXCI+e3tcXG4gICAgICAgICAgICAgICAgZm9ybUVycm9yWydwYXNzd29yZCddWzBdXFxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGdhcC0yXFxcIj5cXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cXFwidGV4dC1zbSB0ZXh0LW4tNTBcXFwiPlxcbiAgICAgICAgICAgICAgICB7eyB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwYXNzd29yZC5jb25maXJtJykgfX1cXG4gICAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cXFwiIWVkaXRVc2VyRm9ybVxcXCIgY2xhc3M9XFxcInRleHQtY3JpbXNvbi01MFxcXCI+ICogPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC9sYWJlbD5cXG5cXG4gICAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgICBpZD1cXFwicGFzc3dvcmQtY29uZmlybWF0aW9uXFxcIlxcbiAgICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb25cXFwiXFxuICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgZm9ybUVycm9yWydwYXNzd29yZF9jb25maXJtYXRpb24nXVxcbiAgICAgICAgICAgICAgICAgICAgPyAnYm9yZGVyLWNyaW1zb24tNTAnXFxuICAgICAgICAgICAgICAgICAgICA6ICdib3JkZXItbi0zMCdcXG4gICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwidy1mdWxsIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTMwIHAtM1xcXCJcXG4gICAgICAgICAgICAgICAgdHlwZT1cXFwicGFzc3dvcmRcXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cXFwiZm9ybUVycm9yWydwYXNzd29yZF9jb25maXJtYXRpb24nXVxcXCIgY2xhc3M9XFxcImVycm9yXFxcIj57e1xcbiAgICAgICAgICAgICAgICBmb3JtRXJyb3JbJ3Bhc3N3b3JkX2NvbmZpcm1hdGlvbiddWzBdXFxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcIm10LTYgZmxleCBqdXN0aWZ5LWVuZCBzcGFjZS14LTJcXFwiPlxcbiAgICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJzZWNvbmRhcnktYnRuIGZvbnQtYm9sZFxcXCJcXG4gICAgICAgICAgICAgIEBjbGljaz1cXFwiXFxuICAgICAgICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICAgICAgICBhZGRVc2VyRm9ybSA9IGZhbHNlO1xcbiAgICAgICAgICAgICAgICAgIGVkaXRVc2VyRm9ybSA9IGZhbHNlO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAge3sgdHJhbnNsYXRlLmJ1dHRvbignY2FuY2VsJykgfX1cXG4gICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwicHJpbWFyeS1idG4gIXB4LTEwXFxcIlxcbiAgICAgICAgICAgICAgQGNsaWNrPVxcXCJhZGRVc2VyRm9ybSA/IGNyZWF0ZVVzZXIoKSA6IHVwZGF0ZVVzZXIoKVxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICB7eyB0cmFuc2xhdGUuYnV0dG9uKCdzYXZlJykgfX1cXG4gICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L1BvcHVwTW9kYWw+XFxuICAgICAgPFBvcHVwTW9kYWxcXG4gICAgICAgIDptb2RhbC1hY3RpdmU9XFxcImRlbGV0ZU1vZGFsXFxcIlxcbiAgICAgICAgQGNsb3NlPVxcXCJcXG4gICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgIGRlbGV0ZU1vZGFsID0gZmFsc2U7XFxuICAgICAgICAgIH1cXG4gICAgICAgIFxcXCJcXG4gICAgICA+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ0aXRsZSBtYi02IGZsZXhcXFwiPlxcbiAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwibXItMSBtdC0wLjUgdGV4dC1sZyB0ZXh0LWNyaW1zb24tNDBcXFwiIGljb249XFxcImRlbGV0ZVxcXCIgLz5cXG4gICAgICAgICAgPGIgY2xhc3M9XFxcInVwcGVyY2FzZVxcXCI+XFxuICAgICAgICAgICAge3sgdHJhbnNsYXRlLmJ1dHRvbignZGVsZXRlX2VsZW1lbnQnLCAndXNlci51c2VyJykgfX1cXG4gICAgICAgICAgPC9iPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgICA8cCBjbGFzcz1cXFwicm91bmRlZC1sZyBiZy1yb3NlIHAtNFxcXCI+XFxuICAgICAgICAgIHt7XFxuICAgICAgICAgICAgdHJhbnNsYXRlXFxuICAgICAgICAgICAgICAudGV4dEZyb21LZXkoJ3VzZXIuZGVsZXRlX2NvbmZpcm1hdGlvbicpXFxuICAgICAgICAgICAgICAucmVwbGFjZSgnOmVsZW1lbnQnLCAnOicpXFxuICAgICAgICAgIH19XFxuICAgICAgICAgIDxiPiB7eyBkZWxldGVVc2VybmFtZSB9fTwvYj4gP1xcbiAgICAgICAgPC9wPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwibXQtNiBmbGV4IGp1c3RpZnktZW5kIHNwYWNlLXgtMlxcXCI+XFxuICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICBjbGFzcz1cXFwic2Vjb25kYXJ5LWJ0biBmb250LWJvbGRcXFwiXFxuICAgICAgICAgICAgQGNsaWNrPVxcXCJcXG4gICAgICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICAgICAgZGVsZXRlTW9kYWwgPSBmYWxzZTtcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICB7eyB0cmFuc2xhdGUuYnV0dG9uKCdjYW5jZWwnKSB9fVxcbiAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cXFwicHJpbWFyeS1idG4gIXB4LTEwXFxcIiBAY2xpY2s9XFxcImRlbGV0ZVVzZXIoZGVsZXRlSWQpXFxcIj5cXG4gICAgICAgICAgICB7eyB0cmFuc2xhdGUuYnV0dG9uKCdkZWxldGUnKSB9fVxcbiAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvUG9wdXBNb2RhbD5cXG5cXG4gICAgICA8UG9wdXBNb2RhbFxcbiAgICAgICAgOm1vZGFsLWFjdGl2ZT1cXFwic3RhdHVzTW9kYWxcXFwiXFxuICAgICAgICBAY2xvc2U9XFxcIlxcbiAgICAgICAgICAoKSA9PiB7XFxuICAgICAgICAgICAgc3RhdHVzTW9kYWwgPSBmYWxzZTtcXG4gICAgICAgICAgfVxcbiAgICAgICAgXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcInRpdGxlIG1iLTYgZmxleFxcXCI+XFxuICAgICAgICAgIDxiIGNsYXNzPVxcXCJmaXJzdC1sZXR0ZXI6dXBwZXJjYXNlXFxcIj5cXG4gICAgICAgICAgICB7eyB0cmFuc2xhdGUuYnV0dG9uKCdtYWtlX2VsZW1lbnQnLCAndXNlci51c2VyJykudG9Mb3dlckNhc2UoKSB9fVxcbiAgICAgICAgICAgIHt7XFxuICAgICAgICAgICAgICBzdGF0dXNWYWx1ZVxcbiAgICAgICAgICAgICAgICA/IHRyYW5zbGF0ZS50ZXh0RnJvbUtleSgndXNlci5pbmFjdGl2ZScpXFxuICAgICAgICAgICAgICAgIDogdHJhbnNsYXRlLnRleHRGcm9tS2V5KCd1c2VyLmFjdGl2ZScpXFxuICAgICAgICAgICAgfX1cXG4gICAgICAgICAgPC9iPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgICA8cCBjbGFzcz1cXFwicm91bmRlZC1sZyBiZy1yb3NlIHAtNFxcXCI+XFxuICAgICAgICAgIHt7IHRyYW5zbGF0ZS5idXR0b24oJ21ha2VfY29uZmlybWF0aW9uJykucmVwbGFjZSgnOmVsZW1lbnQnLCAnICcpIH19XFxuICAgICAgICAgIDxiPiB7eyBzdGF0dXNVc2VybmFtZSB9fTwvYj5cXG4gICAgICAgICAge3tcXG4gICAgICAgICAgICBzdGF0dXNWYWx1ZVxcbiAgICAgICAgICAgICAgPyB0cmFuc2xhdGUudGV4dEZyb21LZXkoJ3VzZXIuaW5hY3RpdmUnKVxcbiAgICAgICAgICAgICAgOiB0cmFuc2xhdGUudGV4dEZyb21LZXkoJ3VzZXIuYWN0aXZlJylcXG4gICAgICAgICAgfX1cXG4gICAgICAgICAgP1xcbiAgICAgICAgPC9wPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwibXQtNiBmbGV4IGp1c3RpZnktZW5kIHNwYWNlLXgtMlxcXCI+XFxuICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICBjbGFzcz1cXFwic2Vjb25kYXJ5LWJ0biBmb250LWJvbGRcXFwiXFxuICAgICAgICAgICAgQGNsaWNrPVxcXCJcXG4gICAgICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICAgICAgc3RhdHVzTW9kYWwgPSBmYWxzZTtcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICB7eyB0cmFuc2xhdGUuYnV0dG9uKCdjYW5jZWwnKSB9fVxcbiAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJwcmltYXJ5LWJ0biAhcHgtMTBcXFwiXFxuICAgICAgICAgICAgQGNsaWNrPVxcXCJ0b2dnbGVVc2VyU3RhdHVzKHN0YXR1c0lkKVxcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIHt7IHRyYW5zbGF0ZS5jb21tb25UZXh0KCd5ZXMnKSB9fVxcbiAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvUG9wdXBNb2RhbD5cXG5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJmaWx0ZXJzIG1iLTQgZmxleCBmbGV4LXdyYXAganVzdGlmeS1iZXR3ZWVuIGdhcC0yXFxcIj5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcInNlbGVjdCBmaWx0ZXJzIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcXFwiPlxcbiAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidy0xMCB0ZXh0LWxnXFxcIiBpY29uPVxcXCJmdW5uZWxcXFwiIC8+XFxuICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgdi1pZj1cXFwidXNlclJvbGUgPT09ICdzdXBlcmFkbWluJyB8fCB1c2VyUm9sZSA9PT0gJ2lhdGlfYWRtaW4nXFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJtdWx0aXNlbGVjdC1sYWJlbC13cmFwcGVyXFxcIlxcbiAgICAgICAgICAgIDpzdHlsZT1cXFwiZ2VuZXJhdGVMYWJlbCgnb3JnYW5pc2F0aW9uJylcXFwiXFxuICAgICAgICAgICAgPjxNdWx0aXNlbGVjdFxcbiAgICAgICAgICAgICAgaWQ9XFxcIm9yZ2FuaXphdGlvbi1maWx0ZXJcXFwiXFxuICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJmaWx0ZXIub3JnYW5pemF0aW9uXFxcIlxcbiAgICAgICAgICAgICAgOm9wdGlvbnM9XFxcIm9yZ2FuaXphdGlvbnNcXFwiXFxuICAgICAgICAgICAgICA6cGxhY2Vob2xkZXI9XFxcInRyYW5zbGF0ZS5jb21tb25UZXh0KCdvcmdhbmlzYXRpb24nKVxcXCJcXG4gICAgICAgICAgICAgIDpzZWFyY2hhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgbW9kZT1cXFwibXVsdGlwbGVcXFwiXFxuICAgICAgICAgICAgICA6dGFnZ2FibGU9XFxcInRydWVcXFwiXFxuICAgICAgICAgICAgICA6Y2xvc2Utb24tc2VsZWN0PVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgICAgIDpjbGVhci1vbi1zZWxlY3Q9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICAgICAgOmhpZGUtc2VsZWN0ZWQ9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICAgICAgbGFiZWw9XFxcIm5hbWVcXFwiXFxuICAgICAgICAgICAgLz5cXG4gICAgICAgICAgPC9zcGFuPlxcblxcbiAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJtdWx0aXNlbGVjdC1sYWJlbC13cmFwcGVyXFxcIlxcbiAgICAgICAgICAgIDpzdHlsZT1cXFwiZ2VuZXJhdGVMYWJlbCgncm9sZScpXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgICAgICBpZD1cXFwicm9sZS1maWx0ZXJcXFwiXFxuICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJmaWx0ZXIucm9sZXNcXFwiXFxuICAgICAgICAgICAgICA6b3B0aW9ucz1cXFwicm9sZXNcXFwiXFxuICAgICAgICAgICAgICA6cGxhY2Vob2xkZXI9XFxcInRyYW5zbGF0ZS50ZXh0RnJvbUtleSgndXNlci5yb2xlJylcXFwiXFxuICAgICAgICAgICAgICA6c2VhcmNoYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgIG1vZGU9XFxcIm11bHRpcGxlXFxcIlxcbiAgICAgICAgICAgICAgOmNsb3NlLW9uLXNlbGVjdD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgICAgICA6Y2xlYXItb24tc2VsZWN0PVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgICAgIDpoaWRlLXNlbGVjdGVkPVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICAgIDxzcGFuIHYtaWY9XFxcImZpbHRlci5yb2xlcy5sZW5ndGggPiAwXFxcIiBjbGFzcz1cXFwic3RhdHVzXFxcIj5cXG4gICAgICAgICAgICAgIDwhLS0gcGxhY2Vob2xkZXIgLS0+XFxuICAgICAgICAgICAgICA8IS0tIHJvbGUgLS0+XFxuICAgICAgICAgICAgPC9zcGFuPjwvc3BhblxcbiAgICAgICAgICA+XFxuICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgY2xhc3M9XFxcIm11bHRpc2VsZWN0LWxhYmVsLXdyYXBwZXJcXFwiXFxuICAgICAgICAgICAgOnN0eWxlPVxcXCJnZW5lcmF0ZUxhYmVsKCdzdGF0dXMnKVxcXCJcXG4gICAgICAgICAgICA+PE11bHRpc2VsZWN0XFxuICAgICAgICAgICAgICBpZD1cXFwic3RhdHVzLWZpbHRlclxcXCJcXG4gICAgICAgICAgICAgIHYtbW9kZWw9XFxcImZpbHRlci5zdGF0dXNcXFwiXFxuICAgICAgICAgICAgICA6b3B0aW9ucz1cXFwic3RhdHVzXFxcIlxcbiAgICAgICAgICAgICAgOnBsYWNlaG9sZGVyPVxcXCJ0cmFuc2xhdGUudGV4dEZyb21LZXkoJ3VzZXIuc3RhdHVzJylcXFwiXFxuICAgICAgICAgICAgICA6c2VhcmNoYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICBjbGFzcz1cXFwiZmxleCBoLVszOHB4XSB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIGdhcC0zIHNwYWNlLXgtMiBweC00IDJ4bDp3LWF1dG9cXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxzcGFuPlxcbiAgICAgICAgICAgIDxEYXRlUmFuZ2VXaWRnZXRcXG4gICAgICAgICAgICAgIDpkcm9wZG93bi1yYW5nZT1cXFwiZHJvcGRvd25SYW5nZVxcXCJcXG4gICAgICAgICAgICAgIDpmaXJzdC1kYXRlPVxcXCJvbGRlc3REYXRlc1xcXCJcXG4gICAgICAgICAgICAgIDpjbGVhci1kYXRlPVxcXCJjbGVhckRhdGVcXFwiXFxuICAgICAgICAgICAgICA6c3RhcnRpbmctZGF0ZT1cXFwiZmlsdGVyLnN0YXJ0X2RhdGVcXFwiXFxuICAgICAgICAgICAgICA6ZGF0ZS1uYW1lPVxcXCJkYXRlVHlwZVxcXCJcXG4gICAgICAgICAgICAgIDplbmRpbmctZGF0ZT1cXFwiZmlsdGVyLmVuZF9kYXRlXFxcIlxcbiAgICAgICAgICAgICAgQHRyaWdnZXItc2V0LWRhdGUtcmFuZ2U9XFxcInNldERhdGVSYW5nZURhdGVcXFwiXFxuICAgICAgICAgICAgICBAdHJpZ2dlci1zZXQtZGF0ZS10eXBlPVxcXCJzZXREYXRlVHlwZVxcXCJcXG4gICAgICAgICAgICAgIEBkYXRlLWNsZWFyZWQ9XFxcImNsZWFyRGF0ZSA9IGZhbHNlXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwib3Blbi10ZXh0IGgtWzM4cHhdXFxcIj5cXG4gICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImFic29sdXRlIHRvcC0xLzIgbGVmdC0yIHctMTAgLXRyYW5zbGF0ZS15LTEvMiB0ZXh0LWJhc2VcXFwiXFxuICAgICAgICAgICAgICBpY29uPVxcXCJtYWduaWZ5aW5nLWdsYXNzXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJmaWx0ZXIucVxcXCJcXG4gICAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgICA6cGxhY2Vob2xkZXI9XFxcInRyYW5zbGF0ZS50ZXh0RnJvbUtleSgndXNlci5zZWFyY2hfZm9yX3VzZXJzJylcXFwiXFxuICAgICAgICAgICAgLz5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG5cXG4gICAgICA8ZGl2XFxuICAgICAgICB2LWlmPVxcXCJpc0ZpbHRlckFwcGxpZWRcXFwiXFxuICAgICAgICBjbGFzcz1cXFwibWItNCBmbGV4IG1heC13LWZ1bGwgZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMlxcXCJcXG4gICAgICA+XFxuICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1zbSBmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtbi00MFxcXCI+XFxuICAgICAgICAgIHt7IHRyYW5zbGF0ZS50ZXh0RnJvbUtleSgndXNlci5maWx0ZXJlZF9ieScpIH19OlxcbiAgICAgICAgPC9zcGFuPlxcblxcbiAgICAgICAgPHNwYW5cXG4gICAgICAgICAgdi1pZj1cXFwiZmlsdGVyLm9yZ2FuaXphdGlvbi5sZW5ndGhcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgZ2FwLTJcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgdi1mb3I9XFxcIihpdGVtLCBpbmRleCkgaW4gZmlsdGVyLm9yZ2FuaXphdGlvblxcXCJcXG4gICAgICAgICAgICA6a2V5PVxcXCJpbmRleFxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLW4tMzAgcHktMSBweC0yIHRleHQteHNcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj57eyB0cmFuc2xhdGUuY29tbW9uVGV4dCgnb3JnJykgfX06PC9zcGFuXFxuICAgICAgICAgICAgPjxzcGFuXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibWF4LXctWzUwMHB4XSBvdmVyZmxvdy14LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgICAgICAgPnt7IHRleHRCdWJibGVkYXRhKGl0ZW0sICdvcmcnKSB9fTwvc3BhblxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcIm14LTIgbXQtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICAgICAgaWNvbj1cXFwiY3Jvc3NcXFwiXFxuICAgICAgICAgICAgICBAY2xpY2s9XFxcImZpbHRlci5vcmdhbml6YXRpb24uc3BsaWNlKGluZGV4LCAxKVxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8c3BhbiB2LWlmPVxcXCJmaWx0ZXIucm9sZXMubGVuZ3RoXFxcIiBjbGFzcz1cXFwiaW5saW5lLWZsZXggZmxleC13cmFwIGdhcC0yXFxcIj5cXG4gICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICB2LWZvcj1cXFwiKGl0ZW0sIGluZGV4KSBpbiBmaWx0ZXIucm9sZXNcXFwiXFxuICAgICAgICAgICAgOmtleT1cXFwiaW5kZXhcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1uLTMwIHB4LTIgcHktMSB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtbi00MFxcXCJcXG4gICAgICAgICAgICAgID57eyB0cmFuc2xhdGUudGV4dEZyb21LZXkoJ3VzZXIucm9sZXMnKSB9fTo8L3NwYW5cXG4gICAgICAgICAgICA+PHNwYW4+e3sgdGV4dEJ1YmJsZWRhdGEoaXRlbSwgJ3JvbGVzJykgfX08L3NwYW4+XFxuICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJteC0yIG10LTEgY3Vyc29yLXBvaW50ZXIgdGV4dC14c1xcXCJcXG4gICAgICAgICAgICAgIGljb249XFxcImNyb3NzXFxcIlxcbiAgICAgICAgICAgICAgQGNsaWNrPVxcXCJmaWx0ZXIucm9sZXMuc3BsaWNlKGluZGV4LCAxKVxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8c3BhbiB2LWlmPVxcXCJmaWx0ZXIuc3RhdHVzLmxlbmd0aFxcXCIgY2xhc3M9XFxcImlubGluZS1mbGV4IGZsZXgtd3JhcCBnYXAtMlxcXCI+XFxuICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgdi1mb3I9XFxcIihpdGVtLCBpbmRleCkgaW4gZmlsdGVyLnN0YXR1c1xcXCJcXG4gICAgICAgICAgICA6a2V5PVxcXCJpbmRleFxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLW4tMzAgcHktMSBweC0yIHRleHQteHNcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIlxcbiAgICAgICAgICAgICAgPnt7IHRyYW5zbGF0ZS50ZXh0RnJvbUtleSgndXNlci5zdGF0dXMnKSB9fTo8L3NwYW5cXG4gICAgICAgICAgICA+PHNwYW4+e3sgdGV4dEJ1YmJsZWRhdGEoaXRlbSwgJ3N0YXR1cycpIH19PC9zcGFuPlxcbiAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBtdC0xIGN1cnNvci1wb2ludGVyIHRleHQteHNcXFwiXFxuICAgICAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgICAgIEBjbGljaz1cXFwiXFxuICAgICAgICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICAgICAgICBmaWx0ZXIuc3RhdHVzID0gJyc7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8c3BhblxcbiAgICAgICAgICB2LWlmPVxcXCJmaWx0ZXIuc3RhcnRfZGF0ZSAmJiBmaWx0ZXIuZW5kX2RhdGVcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgZ2FwLTJcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1uLTMwIHB5LTEgcHgtMiB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtbi00MFxcXCI+RGF0ZTo8L3NwYW5cXG4gICAgICAgICAgICA+PHNwYW4+e3tcXG4gICAgICAgICAgICAgIHRleHRCdWJibGVkYXRhKFxcbiAgICAgICAgICAgICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIsXFxuICAgICAgICAgICAgICAgIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlclxcbiAgICAgICAgICAgICAgKVxcbiAgICAgICAgICAgIH19PC9zcGFuPlxcbiAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBtdC0xIGN1cnNvci1wb2ludGVyIHRleHQteHNcXFwiXFxuICAgICAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgICAgIEBjbGljaz1cXFwiXFxuICAgICAgICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICAgICAgICBjbGVhckRhdGVGaWx0ZXIoKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgIDwvc3Bhbj5cXG4gICAgICAgIDxidXR0b25cXG4gICAgICAgICAgY2xhc3M9XFxcImZvbnQtYm9sZCB1cHBlcmNhc2UgdGV4dC1ibHVlY29yYWxcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwiXFxuICAgICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgICAgY2xlYXJGaWx0ZXIoKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIFxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAge3sgdHJhbnNsYXRlLnRleHRGcm9tS2V5KCd1c2VyLmNsZWFyX2ZpbHRlcicpIH19XFxuICAgICAgICA8L2J1dHRvbj5cXG4gICAgICA8L2Rpdj5cXG4gICAgICA8cCBjbGFzcz1cXFwicHktMVxcXCI+VG90YWwgTnVtYmVyIG9mIFVzZXJzOiB7eyB0b3RhbFVzZXIgfX08L3A+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiaWF0aS1saXN0LXRhYmxlIHVzZXItbGlzdC10YWJsZSB0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgPHRhYmxlPlxcbiAgICAgICAgICA8dGhlYWQ+XFxuICAgICAgICAgICAgPHRyIGNsYXNzPVxcXCJiZy1uLTEwXFxcIj5cXG4gICAgICAgICAgICAgIDx0aCBpZD1cXFwidGl0bGVcXFwiIHNjb3BlPVxcXCJjb2xcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgICAgICAgdi1pZj1cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci5kaXJlY3Rpb24gPT09ICdkZXNjJyAmJlxcbiAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIub3JkZXJCeSA9PT0gJ3VzZXJuYW1lJ1xcbiAgICAgICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJteC0yIGgtMyB3LTIgY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGljb249XFxcInNvcnQtZGVzY2VuZGluZ1xcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0KCd1c2VybmFtZScpXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgICAgPHNwYW4gdi1lbHNlPlxcbiAgICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcIm14LTIgaC0zIHctMiBjdXJzb3ItcG9pbnRlclxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj1cXFwic29ydC1hc2NlbmRpbmdcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz1cXFwic29ydCgndXNlcm5hbWUnKVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxcblxcbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHRyYW5zbGF0ZS50ZXh0RnJvbUtleSgndXNlci51c2VycycpIH19PC9zcGFuPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgICAgPHRoIGlkPVxcXCJtZWFzdXJlXFxcIiBzY29wZT1cXFwiY29sXFxcIiBzdHlsZT1cXFwid2lkdGg6IDIxMHB4XFxcIj5cXG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdHJhbnNsYXRlLnRleHRGcm9tS2V5KCd1c2VyLmVtYWlsJykgfX08L3NwYW4+XFxuICAgICAgICAgICAgICA8L3RoPlxcblxcbiAgICAgICAgICAgICAgPHRoIGlkPVxcXCJ0aXRsZVxcXCIgdi1pZj1cXFwidXNlclJvbGUgPT09ICdzdXBlcmFkbWluJ1xcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXJcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgICAgICAgICB2LWlmPVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLmRpcmVjdGlvbiA9PT0gJ2Rlc2MnICYmXFxuICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci5vcmRlckJ5ID09PSAncHVibGlzaGVyX25hbWUnXFxuICAgICAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcIm14LTIgaC0zIHctMiBjdXJzb3ItcG9pbnRlclxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj1cXFwic29ydC1kZXNjZW5kaW5nXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNvcnQoJ3B1Ymxpc2hlcl9uYW1lJylcXFwiXFxuICAgICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgICA8c3BhbiB2LWVsc2U+XFxuICAgICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBoLTMgdy0yIGN1cnNvci1wb2ludGVyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBpY29uPVxcXCJzb3J0LWFzY2VuZGluZ1xcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0KCdwdWJsaXNoZXJfbmFtZScpXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuXFxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgdHJhbnNsYXRlLmNvbW1vblRleHQoJ29yZ2FuaXNhdGlvbl9uYW1lJykgfX08L3NwYW4+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvdGg+XFxuXFxuICAgICAgICAgICAgICA8dGggaWQ9XFxcInRpdGxlXFxcIiBzY29wZT1cXFwiY29sXFxcIj5cXG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdHJhbnNsYXRlLnRleHRGcm9tS2V5KCd1c2VyLnVzZXJfcm9sZScpIH19PC9zcGFuPlxcbiAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICAgIDx0aD5cXG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdHJhbnNsYXRlLnRleHRGcm9tS2V5KCd1c2VyLnN0YXR1cycpIH19PC9zcGFuPlxcbiAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICAgIDx0aFxcbiAgICAgICAgICAgICAgICBpZD1cXFwiYWdncmVnYXRpb25fc3RhdHVzXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXJcXFwiXFxuICAgICAgICAgICAgICAgIHNjb3BlPVxcXCJjb2xcXFwiXFxuICAgICAgICAgICAgICAgIHdpZHRoPVxcXCIyMDhweFxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgICAgICB2LWlmPVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlci5kaXJlY3Rpb24gPT09ICdkZXNjJyAmJlxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyLm9yZGVyQnkgPT09ICdjcmVhdGVkX2F0J1xcbiAgICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyXFxcIlxcbiAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJteC0yIGgtMyB3LTIgY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICAgICAgICAgICAgICBpY29uPVxcXCJzb3J0LWRlc2NlbmRpbmdcXFwiXFxuICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNvcnQoJ2NyZWF0ZWRfYXQnKVxcXCJcXG4gICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDxzcGFuIHYtZWxzZT5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcIm14LTIgaC0zIHctMiBjdXJzb3ItcG9pbnRlclxcXCJcXG4gICAgICAgICAgICAgICAgICAgIGljb249XFxcInNvcnQtYXNjZW5kaW5nXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0KCdsYXN0X2xvZ2dlZF9pbicpXFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcIndoaXRlc3BhY2Utbm93cmFwXFxcIj5MYXN0IExvZ2luPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICAgIDx0aFxcbiAgICAgICAgICAgICAgICB2LWlmPVxcXCJ1c2VyUm9sZSAhPT0gJ2dlbmVyYWxfdXNlcidcXFwiXFxuICAgICAgICAgICAgICAgIGlkPVxcXCJhY3Rpb25cXFwiXFxuICAgICAgICAgICAgICAgIHNjb3BlPVxcXCJjb2xcXFwiXFxuICAgICAgICAgICAgICAgIHdpZHRoPVxcXCIxOTBweFxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdHJhbnNsYXRlLnRleHRGcm9tS2V5KCd1c2VyLmFjdGlvbicpIH19PC9zcGFuPlxcbiAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICAgIDx0aCBpZD1cXFwiY2JcXFwiIHNjb3BlPVxcXCJjb2xcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXJcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzdmctdnVlIGljb249XFxcImNoZWNrYm94XFxcIiBAY2xpY2s9XFxcInRvZ2dsZVNlbGVjdGFsbFxcXCIgLz5cXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICA8L3RyPlxcbiAgICAgICAgICA8L3RoZWFkPlxcbiAgICAgICAgICA8dGJvZHkgdi1pZj1cXFwidXNlcnNEYXRhPy5kYXRhLmxlbmd0aCA+IDAgfHwgZmV0Y2hpbmdUYWJsZURhdGFcXFwiPlxcbiAgICAgICAgICAgIDx0ciB2LWlmPVxcXCJmZXRjaGluZ1RhYmxlRGF0YVxcXCI+XFxuICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cXFwiNFxcXCI+RmV0Y2hpbmcgRGF0YS4uLjwvdGQ+XFxuICAgICAgICAgICAgPC90cj5cXG4gICAgICAgICAgICA8dHIgdi1mb3I9XFxcIih1c2VyLCBpbmRleCkgaW4gdXNlcnNEYXRhPy5kYXRhXFxcIiB2LWVsc2UgOmtleT1cXFwiaW5kZXhcXFwiPlxcbiAgICAgICAgICAgICAgPHRkPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlbGxpcHNpcyByZWxhdGl2ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHBcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ3LTMyIG92ZXJmbG93LXgtaGlkZGVuIG92ZXJmbG93LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwIHRleHQtc20gY2FwaXRhbGl6ZSB0ZXh0LW4tNTBcXFwiXFxuICAgICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgICAge3sgdXNlclsnZnVsbF9uYW1lJ10gfX1cXG4gICAgICAgICAgICAgICAgICA8L3A+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlbGxpcHNpcyByZWxhdGl2ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHBcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ3LTMyIG92ZXJmbG93LXgtaGlkZGVuIG92ZXJmbG93LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICAgIHt7IHVzZXJbJ3VzZXJuYW1lJ10gfX1cXG4gICAgICAgICAgICAgICAgICA8L3A+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cXFwiZmxleCBzcGFjZS14LTJcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwibXMtMVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJtdC0xIGN1cnNvci1wb2ludGVyIHRleHQtYmFzZVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIDppY29uPVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgdXNlclsnZW1haWxfdmVyaWZpZWRfYXQnXVxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RpY2stb3V0bGluZSdcXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdhbGVydC1vdXRsaW5lJ1xcbiAgICAgICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcIi4uLiB0cnVuY2F0ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAge3sgdXNlclsnZW1haWwnXSB9fVxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgICAgPHRkIHYtaWY9XFxcInVzZXJSb2xlID09PSAnc3VwZXJhZG1pbicgfHwgdXNlclJvbGUgPT09ICdpYXRpX2FkbWluJ1xcXCI+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImVsbGlwc2lzIHJlbGF0aXZlXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8cFxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInctMzIgb3ZlcmZsb3cteC1oaWRkZW4gb3ZlcmZsb3ctZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXBcXFwiXFxuICAgICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgICAge3sgdXNlclsnbmFtZSddIH19XFxuICAgICAgICAgICAgICAgICAgICB7e1xcbiAgICAgICAgICAgICAgICAgICAgICB1c2VyWydwdWJsaXNoZXJfbmFtZSddID8gdXNlclsncHVibGlzaGVyX25hbWUnXSA6ICctIC0nXFxuICAgICAgICAgICAgICAgICAgICB9fVxcbiAgICAgICAgICAgICAgICAgIDwvcD5cXG5cXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ3LTUyXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJlbGxpcHNpc19fdGl0bGUtLWhvdmVyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICA+e3tcXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyWydwdWJsaXNoZXJfbmFtZSddID8gdXNlclsncHVibGlzaGVyX25hbWUnXSA6ICctIC0nXFxuICAgICAgICAgICAgICAgICAgICAgIH19XFxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cXFwiY2FwaXRhbGl6ZVxcXCI+XFxuICAgICAgICAgICAgICAgIHt7IHJvbGVzW3VzZXJbJ3JvbGVfaWQnXV0gfX1cXG4gICAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgICA8dGQgOmNsYXNzPVxcXCJ1c2VyWydzdGF0dXMnXSA/ICd0ZXh0LXNwcmluZy01MCcgOiAndGV4dC1uLTQwJ1xcXCI+XFxuICAgICAgICAgICAgICAgIHt7XFxuICAgICAgICAgICAgICAgICAgdXNlclsnc3RhdHVzJ11cXG4gICAgICAgICAgICAgICAgICAgID8gdHJhbnNsYXRlLnRleHRGcm9tS2V5KCd1c2VyLmFjdGl2ZScpXFxuICAgICAgICAgICAgICAgICAgICA6IHRyYW5zbGF0ZS50ZXh0RnJvbUtleSgndXNlci5pbmFjdGl2ZScpXFxuICAgICAgICAgICAgICAgIH19XFxuICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgICAgPHRkPlxcbiAgICAgICAgICAgICAgICB7e1xcbiAgICAgICAgICAgICAgICAgIHVzZXJbJ2xhc3RfbG9nZ2VkX2luJ11cXG4gICAgICAgICAgICAgICAgICAgID8gZm9ybWF0RGF0ZSh1c2VyWydsYXN0X2xvZ2dlZF9pbiddKVxcbiAgICAgICAgICAgICAgICAgICAgOiB0cmFuc2xhdGUubWlzc2luZygnbm90X2F2YWlsYWJsZScpXFxuICAgICAgICAgICAgICAgIH19XFxuICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgICAgPHRkXFxuICAgICAgICAgICAgICAgIHYtaWY9XFxcInVzZXJSb2xlICE9PSAnZ2VuZXJhbF91c2VyJ1xcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggaC1mdWxsIGl0ZW1zLWNlbnRlciBzcGFjZS14LTZcXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxwIEBjbGljaz1cXFwiZWRpdFVzZXIodXNlcilcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXIgdGV4dC1iYXNlXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cXFwiZWRpdC1hY3Rpb25cXFwiXFxuICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgICAgICA8IS0tIDxwIEBjbGljaz1cXFwiZGVsZXRlVXNlcih1c2VyWydpZCddKVxcXCI+IC0tPlxcbiAgICAgICAgICAgICAgICA8cCBAY2xpY2s9XFxcIm9wZW5EZWxldGVtb2RlbCh1c2VyKVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWUgY2xhc3M9XFxcImN1cnNvci1wb2ludGVyIHRleHQtYmFzZVxcXCIgaWNvbj1cXFwiZGVsZXRlXFxcIiAvPlxcbiAgICAgICAgICAgICAgICA8L3A+XFxuXFxuICAgICAgICAgICAgICAgIDxwIEBjbGljaz1cXFwib3BlblN0YXR1c01vZGVsKHVzZXIpXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJ1c2VyWydzdGF0dXMnXSA/ICdiZy1zcHJpbmctNTAnIDogJ2JnLW4tNDAnXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInJlbGF0aXZlIGJsb2NrIGgtNCB3LTcgY3Vyc29yLXBvaW50ZXIgcm91bmRlZC1mdWxsXFxcIlxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlclsnc3RhdHVzJ10gPyAndHJhbnNsYXRlLXgtMCcgOiAndHJhbnNsYXRlLXgtZnVsbCdcXG4gICAgICAgICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiYWJzb2x1dGUgdG9wLTEvMiBsZWZ0LVsycHhdIGJsb2NrIGgtMyB3LTMgLXRyYW5zbGF0ZS15LTEvMiByb3VuZGVkLWZ1bGwgYmctd2hpdGUgZHVyYXRpb24tMjAwXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgICA8dGQ+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJyZWxhdGl2ZSBoLTUgdy01XFxcIlxcbiAgICAgICAgICAgICAgICAgID48aW5wdXRcXG4gICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XFxcImNoZWNrbGlzdFxcXCJcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ1c2VyLWNoZWNrbGlzdFxcXCJcXG4gICAgICAgICAgICAgICAgICAgIDp2YWx1ZT1cXFwidXNlclsnaWQnXVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XFxcImNoZWNrYm94XFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInBzZXVkby1jaGVja2JveFxcXCIgLz5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidGlja2VkLXN2ZyB0ZXh0LXNwcmluZy01MFxcXCIgaWNvbj1cXFwidGlja2VkXFxcIiAvPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgIDwvdHI+XFxuICAgICAgICAgIDwvdGJvZHk+XFxuICAgICAgICAgIDx0Ym9keSB2LWVsc2U+XFxuICAgICAgICAgICAgPHRkIHYtaWY9XFxcImxvYWRlclxcXCIgY29sc3Bhbj1cXFwiNVxcXCIgY2xhc3M9XFxcInRleHQtY2VudGVyXFxcIj5cXG4gICAgICAgICAgICAgIDxkaXYgY29sc3Bhbj1cXFwiNVxcXCIgY2xhc3M9XFxcInNwaW5cXFwiPjwvZGl2PlxcbiAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgPHRkIHYtZWxzZSBjb2xzcGFuPVxcXCI4XFxcIiBjbGFzcz1cXFwidGV4dC1jZW50ZXJcXFwiPlxcbiAgICAgICAgICAgICAge3sgdHJhbnNsYXRlLnRleHRGcm9tS2V5KCd1c2VyLnVzZXJfbm90X2ZvdW5kJykgfX1cXG4gICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICA8L3Rib2R5PlxcbiAgICAgICAgPC90YWJsZT5cXG4gICAgICA8L2Rpdj5cXG5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJtdC02XFxcIj5cXG4gICAgICAgIDxQYWdpbmF0aW9uXFxuICAgICAgICAgIHYtaWY9XFxcInVzZXJzRGF0YSAmJiB1c2Vyc0RhdGFbJ2xhc3RfcGFnZSddID4gMVxcXCJcXG4gICAgICAgICAgOmRhdGE9XFxcInVzZXJzRGF0YVxcXCJcXG4gICAgICAgICAgQGZldGNoLWFjdGl2aXRpZXM9XFxcImZldGNoVXNlcnNMaXN0XFxcIlxcbiAgICAgICAgLz5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICA8L2Rpdj5cXG48L3RlbXBsYXRlPlxcbjxzY3JpcHQgc2V0dXAgbGFuZz1cXFwidHNcXFwiPlxcbmltcG9ydCB7IGRlZmluZVByb3BzLCByZWFjdGl2ZSwgcmVmLCBjb21wdXRlZCwgd2F0Y2gsIG9uTW91bnRlZCB9IGZyb20gJ3Z1ZSc7XFxuaW1wb3J0IExvYWRlciBmcm9tICcuLi8uLi9jb21wb25lbnRzL0xvYWRlci52dWUnO1xcbmltcG9ydCBUb2FzdCBmcm9tICdDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWUnO1xcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XFxuaW1wb3J0IFBvcHVwTW9kYWwgZnJvbSAnQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZSc7XFxuaW1wb3J0IGVuY3J5cHQgZnJvbSAnQ29tcG9zYWJsZS9lbmNyeXB0aW9uJztcXG5pbXBvcnQgTXVsdGlzZWxlY3QgZnJvbSAnQHZ1ZWZvcm0vbXVsdGlzZWxlY3QnO1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcXG5pbXBvcnQgUGFnaW5hdGlvbiBmcm9tICdDb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWUnO1xcbmltcG9ydCB7IHdhdGNoSWdub3JhYmxlIH0gZnJvbSAnQHZ1ZXVzZS9jb3JlJztcXG5pbXBvcnQgRGF0ZVJhbmdlV2lkZ2V0IGZyb20gJ0NvbXBvbmVudHMvRGF0ZVJhbmdlV2lkZ2V0LnZ1ZSc7XFxuXFxuY29uc3QgdHJhbnNsYXRlID0gbmV3IFRyYW5zbGF0ZSgpO1xcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xcbiAgb3JnYW5pemF0aW9uczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXFxuICBzdGF0dXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxcbiAgcm9sZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxcbiAgdXNlclJvbGU6IHsgdHlwZTogU3RyaW5nLCByZXF1aXJlZDogdHJ1ZSB9LFxcbiAgb2xkZXN0RGF0ZXM6IHsgdHlwZTogU3RyaW5nLCByZXF1aXJlZDogdHJ1ZSB9LFxcbn0pO1xcblxcbmNvbnN0IHRvYXN0RGF0YSA9IHJlYWN0aXZlKHtcXG4gIHZpc2liaWxpdHk6IGZhbHNlLFxcbiAgbWVzc2FnZTogJycsXFxuICB0eXBlOiBmYWxzZSxcXG59KTtcXG5cXG5jb25zdCBmaWx0ZXIgPSByZWFjdGl2ZSh7XFxuICBvcmdhbml6YXRpb246IFtdLFxcbiAgcm9sZXM6IFtdLFxcbiAgc3RhdHVzOiAnJyxcXG4gIG9yZGVyQnk6ICcnLFxcbiAgZGlyZWN0aW9uOiAnJyxcXG4gIHE6ICcnLFxcbiAgc3RhcnRfZGF0ZTogJycsXFxuICBlbmRfZGF0ZTogJycsXFxuICBkYXRlX3R5cGU6ICdjcmVhdGVkX2F0JyxcXG4gIHNlbGVjdGVkX2RhdGVfZmlsdGVyOiAnJyxcXG59KTtcXG5cXG5jb25zdCBpc0xvYWRlclZpc2libGUgPSByZWYoZmFsc2UpO1xcbmNvbnN0IGFkZFVzZXJGb3JtID0gcmVmKGZhbHNlKTtcXG5jb25zdCBlZGl0VXNlckZvcm0gPSByZWYoZmFsc2UpO1xcbmNvbnN0IHVzZXJzRGF0YSA9IHJlYWN0aXZlKHsgZGF0YTogW10gfSk7XFxuY29uc3QgaXNFbXB0eSA9IHJlZih0cnVlKTtcXG5jb25zdCBhbGxTZWxlY3RlZCA9IHJlZjxib29sZWFuW10+KFtdKTtcXG5jb25zdCBkZWxldGVNb2RhbCA9IHJlZihmYWxzZSk7XFxuY29uc3QgZGVsZXRlSWQgPSByZWYoKTtcXG5jb25zdCB0b3RhbFVzZXIgPSByZWYoMCk7XFxuY29uc3Qgc3RhdHVzSWQgPSByZWYoKTtcXG5jb25zdCBzdGF0dXNNb2RhbCA9IHJlZihmYWxzZSk7XFxuY29uc3Qgc3RhdHVzVmFsdWUgPSByZWYoKTtcXG5jb25zdCBzdGF0dXNVc2VybmFtZSA9IHJlZigpO1xcbmNvbnN0IGRlbGV0ZVVzZXJuYW1lID0gcmVmKCk7XFxuY29uc3QgbG9hZGVyID0gcmVmKHRydWUpO1xcbmNvbnN0IGZldGNoaW5nVGFibGVEYXRhID0gcmVmKGZhbHNlKTtcXG5jb25zdCBzZWxlY3RlZElkcyA9IHJlZih7fSk7XFxuY29uc3QgY2hlY2tsaXN0ID0gcmVmKFtdKTtcXG5jb25zdCBjdXJyZW50cGFnZURhdGEgPSByZWYoW10pO1xcbmNvbnN0IGNsZWFyRGF0ZSA9IHJlZihmYWxzZSk7XFxuY29uc3QgZWRpdFVzZXJJZCA9IHJlZignJyk7XFxuY29uc3QgZGF0ZVR5cGUgPSByZWYoJ0FsbCBUaW1lJyk7XFxuXFxuY29uc3QgZHJvcGRvd25SYW5nZSA9IHtcXG4gIGNyZWF0ZWRfYXQ6ICdVc2VyIGNyZWF0ZWQgZGF0ZScsXFxuICBsYXN0X2xvZ2dlZF9pbjogJ0xhc3QgbG9naW4gZGF0ZScsXFxufTtcXG5cXG5jb25zdCBmb3JtRGF0YSA9IHJlYWN0aXZlKHtcXG4gIHVzZXJuYW1lOiAnJyxcXG4gIGZ1bGxfbmFtZTogJycsXFxuICBlbWFpbDogJycsXFxuICBzdGF0dXM6ICcxJyxcXG4gIHJvbGVfaWQ6ICcnLFxcbiAgcGFzc3dvcmQ6ICcnLFxcbiAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAnJyxcXG59KTtcXG5cXG5jb25zdCBmb3JtRXJyb3IgPSByZWFjdGl2ZSh7XFxuICB1c2VybmFtZTogJycsXFxuICBmdWxsX25hbWU6ICcnLFxcbiAgZW1haWw6ICcnLFxcbiAgc3RhdHVzOiAnJyxcXG4gIHJvbGVfaWQ6ICcnLFxcbiAgcGFzc3dvcmQ6ICcnLFxcbiAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAnJyxcXG59KTtcXG5pbXBvcnQgeyBrZWJhYkNhc2VUb1NuYWtlY2FzZSB9IGZyb20gJ0NvbXBvc2FibGUvdXRpbHMnO1xcbmltcG9ydCB7IFRyYW5zbGF0ZSB9IGZyb20gJ0NvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXInO1xcblxcbmNvbnN0IGlzRmlsdGVyQXBwbGllZCA9IGNvbXB1dGVkKCgpID0+IHtcXG4gIHJldHVybiAoXFxuICAgIGZpbHRlci5vcmdhbml6YXRpb24ubGVuZ3RoICsgZmlsdGVyLnJvbGVzLmxlbmd0aCAhPSAwIHx8XFxuICAgIGZpbHRlci5zdGF0dXMgIT0gJycgfHxcXG4gICAgKGZpbHRlci5zdGFydF9kYXRlICYmIGZpbHRlci5lbmRfZGF0ZSlcXG4gICk7XFxufSk7XFxuXFxuY29uc3QgeyBpZ25vcmVVcGRhdGVzIH0gPSB3YXRjaElnbm9yYWJsZSh0b2FzdERhdGEsICgpID0+IHVuZGVmaW5lZCwge1xcbiAgZmx1c2g6ICdzeW5jJyxcXG59KTtcXG5cXG53YXRjaChcXG4gICgpID0+IHRvYXN0RGF0YS52aXNpYmlsaXR5LFxcbiAgKCkgPT4ge1xcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xcbiAgICAgIGlnbm9yZVRvYXN0VXBkYXRlKCk7XFxuICAgIH0sIDIwMDApO1xcbiAgfVxcbik7XFxuXFxuY29uc3QgaWdub3JlVG9hc3RVcGRhdGUgPSAoKSA9PiB7XFxuICBpZ25vcmVVcGRhdGVzKCgpID0+IHtcXG4gICAgdG9hc3REYXRhLm1lc3NhZ2UgPSAnJztcXG4gIH0pO1xcbn07XFxuXFxuY29uc3QgY2xlYXJEYXRlRmlsdGVyID0gKCkgPT4ge1xcbiAgZmlsdGVyLnNlbGVjdGVkX2RhdGVfZmlsdGVyID0gJyc7XFxuICBjbGVhckRhdGVSYW5nZUZpbHRlcigpO1xcbn07XFxuXFxub25Nb3VudGVkKCgpID0+IHtcXG4gIGxldCBmaWx0ZXJQYXJhbXMgPSBnZXRGaWx0ZXJQYXJhbXNGcm9tUHJldmlvdXNQYWdlKCk7XFxuICBpZiAoZmlsdGVyUGFyYW1zKSB7XFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsdGVyUGFyYW1zLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgbGV0IGtleSA9IGtlYmFiQ2FzZVRvU25ha2VjYXNlKGZpbHRlclBhcmFtc1tpXVswXSk7XFxuICAgICAgbGV0IHZhbHVlID0gZmlsdGVyUGFyYW1zW2ldWzFdO1xcbiAgICAgIGlmIChbJ3JvbGVzJywgJ29yZ2FuaXphdGlvbiddLmluY2x1ZGVzKGtleSkpIHtcXG4gICAgICAgIGZpbHRlcltrZXldLnB1c2godmFsdWUpO1xcbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnZGF0ZV90eXBlJykge1xcbiAgICAgICAgZGF0ZVR5cGUudmFsdWUgPSB2YWx1ZS5zcGxpdCgnLScpLmpvaW4oJyAnKTtcXG4gICAgICB9IGVsc2Uge1xcbiAgICAgICAgZmlsdGVyW2tleV0gPSB2YWx1ZTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG59KTtcXG5jb25zdCBnZXRGaWx0ZXJQYXJhbXNGcm9tUHJldmlvdXNQYWdlID0gKCkgPT4ge1xcbiAgbGV0IHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLmhyZWY/LnRvU3RyaW5nKCk7XFxuXFxuICBpZiAocXVlcnlTdHJpbmcpIHtcXG4gICAgcXVlcnlTdHJpbmcgPSBxdWVyeVN0cmluZy5zcGxpdCgnPycpWzFdO1xcblxcbiAgICBsZXQgcXVlcnlQYXJhbXNJbktleVZhbDogb2JqZWN0W10gPSBbXTtcXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSBxdWVyeVN0cmluZz8uc3BsaXQoJyYnKTtcXG5cXG4gICAgaWYgKHF1ZXJ5UGFyYW1zKSB7XFxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBxdWVyeVBhcmFtcy5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgbGV0IFtrZXksIHZhbHVlXSA9IHF1ZXJ5UGFyYW1zW2ldLnNwbGl0KCc9Jyk7XFxuICAgICAgICBpZiAoa2V5KSB7XFxuICAgICAgICAgIHF1ZXJ5UGFyYW1zSW5LZXlWYWwucHVzaChba2V5LCB2YWx1ZSA/PyAnJ10pO1xcbiAgICAgICAgfVxcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICByZXR1cm4gcXVlcnlQYXJhbXNJbktleVZhbDtcXG4gIH1cXG5cXG4gIHJldHVybiBmYWxzZTtcXG59O1xcblxcbm9uTW91bnRlZChhc3luYyAoKSA9PiB7XFxuICBheGlvcy5nZXQoYC91c2Vycy9wYWdlLzFgKS50aGVuKChyZXMpID0+IHtcXG4gICAgY29uc3QgcmVzcG9uc2UgPSByZXMuZGF0YTtcXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNwb25zZS5kYXRhLmRhdGEubGVuZ3RoOyBpKyspIHtcXG4gICAgICByZXNwb25zZS5kYXRhLmRhdGFbaV0ucm9sZSA9IHJlc3BvbnNlLmRhdGEuZGF0YVtpXS5yb2xlXFxuICAgICAgICAuc3BsaXQoJ18nKVxcbiAgICAgICAgLmpvaW4oJyAnKTtcXG4gICAgfVxcbiAgICBPYmplY3QuYXNzaWduKHVzZXJzRGF0YSwgcmVzcG9uc2UuZGF0YSk7XFxuICAgIGlzRW1wdHkudmFsdWUgPSByZXNwb25zZS5kYXRhLmRhdGEubGVuZ3RoID8gZmFsc2UgOiB0cnVlO1xcbiAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcXG4gIH0pO1xcblxcbiAgc2V0VGltZW91dCgoKSA9PiB7XFxuICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XFxuICB9LCA1MDAwKTtcXG59KTtcXG5cXG5jb25zdCB0ZXh0QnViYmxlZGF0YSA9IChpZCwgZmllbGQpID0+IHtcXG4gIHN3aXRjaCAoZmllbGQpIHtcXG4gICAgY2FzZSAnb3JnJzpcXG4gICAgICByZXR1cm4gcHJvcHMub3JnYW5pemF0aW9uc1sraWRdO1xcbiAgICBjYXNlICdyb2xlcyc6XFxuICAgICAgcmV0dXJuIHByb3BzLnJvbGVzWytpZF07XFxuICAgIGNhc2UgJ3N0YXR1cyc6XFxuICAgICAgcmV0dXJuIHByb3BzLnN0YXR1c1sraWRdO1xcbiAgICBkZWZhdWx0OlxcbiAgICAgIHJldHVybiBmaWVsZDtcXG4gIH1cXG59O1xcblxcbmNvbnN0IGNsZWFyRmlsdGVyID0gKCkgPT4ge1xcbiAgZmlsdGVyLm9yZ2FuaXphdGlvbiA9IFtdO1xcbiAgZmlsdGVyLnJvbGVzID0gW107XFxuICBmaWx0ZXIuc3RhdHVzID0gJyc7XFxuICBmaWx0ZXIuZGlyZWN0aW9uID0gJyc7XFxuICBmaWx0ZXIub3JkZXJCeSA9ICcnO1xcbiAgZmlsdGVyLnEgPSAnJztcXG4gIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlciA9ICcnO1xcbiAgY2xlYXJEYXRlUmFuZ2VGaWx0ZXIoKTtcXG59O1xcblxcbmNvbnN0IGNsZWFyRGF0ZVJhbmdlRmlsdGVyID0gKCkgPT4ge1xcbiAgY2xlYXJEYXRlLnZhbHVlID0gdHJ1ZTtcXG59O1xcblxcbmNvbnN0IHNldERhdGVSYW5nZURhdGUgPSAoc3RhcnREYXRlLCBlbmREYXRlLCBzZWxlY3RlZERhdGUpID0+IHtcXG4gIGZpbHRlci5zdGFydF9kYXRlID0gc3RhcnREYXRlO1xcbiAgZmlsdGVyLmVuZF9kYXRlID0gZW5kRGF0ZTtcXG4gIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlciA9IHNlbGVjdGVkRGF0ZTtcXG59O1xcbmNvbnN0IHNldERhdGVUeXBlID0gKGRhdGVUeXBlKSA9PiB7XFxuICBmaWx0ZXIuZGF0ZV90eXBlID0gZGF0ZVR5cGU7XFxufTtcXG5cXG5jb25zdCBjcmVhdGVVc2VyID0gKCkgPT4ge1xcbiAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcXG4gIGxldCBwYXNzd29yZERhdGEgPSB7XFxuICAgIHBhc3N3b3JkOiBlbmNyeXB0KGZvcm1EYXRhLnBhc3N3b3JkLCBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkgPz8gJycpLFxcbiAgICBwYXNzd29yZF9jb25maXJtYXRpb246IGVuY3J5cHQoXFxuICAgICAgZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLFxcbiAgICAgIHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSA/PyAnJ1xcbiAgICApLFxcbiAgfTtcXG5cXG4gIGF4aW9zXFxuICAgIC5wb3N0KCcvdXNlcicsIHsgLi4uZm9ybURhdGEsIC4uLnBhc3N3b3JkRGF0YSB9KVxcbiAgICAudGhlbigocmVzKSA9PiB7XFxuICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xcbiAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzLmRhdGEubWVzc2FnZTtcXG4gICAgICB0b2FzdERhdGEudHlwZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XFxuICAgICAgc2V0Rm9ybUVycm9yKCk7XFxuICAgICAgc2V0Rm9ybUVycm9yKHJlcy5kYXRhLmVycm9ycyk7XFxuXFxuICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MpIHtcXG4gICAgICAgIGNsZWFyRmlsdGVyKCk7XFxuICAgICAgICBmZXRjaFVzZXJzTGlzdCh1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddLCB0cnVlKTtcXG4gICAgICAgIGFkZFVzZXJGb3JtLnZhbHVlID0gZmFsc2U7XFxuICAgICAgICBlbXB0eUZvcm1EYXRhKCk7XFxuICAgICAgICBzZXRGb3JtRXJyb3IoKTtcXG4gICAgICB9XFxuICAgIH0pXFxuICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcXG4gICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XFxuICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBlcnJvci5kYXRhLm1lc3NhZ2U7XFxuICAgICAgdG9hc3REYXRhLnR5cGUgPSBmYWxzZTtcXG4gICAgICBhZGRVc2VyRm9ybS52YWx1ZSA9IGZhbHNlO1xcbiAgICB9KVxcbiAgICAuZmluYWxseSgoKSA9PiB7XFxuICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XFxuICAgIH0pO1xcbn07XFxuXFxuY29uc3QgZWRpdFVzZXIgPSAodXNlcikgPT4ge1xcbiAgZm9ybURhdGEudXNlcm5hbWUgPSB1c2VyLnVzZXJuYW1lO1xcbiAgZm9ybURhdGEuZnVsbF9uYW1lID0gdXNlci5mdWxsX25hbWU7XFxuICBmb3JtRGF0YS5lbWFpbCA9IHVzZXIuZW1haWw7XFxuICBmb3JtRGF0YS5yb2xlX2lkID0gdXNlci5yb2xlX2lkO1xcbiAgZWRpdFVzZXJJZC52YWx1ZSA9IHVzZXIuaWQ7XFxuICBlZGl0VXNlckZvcm0udmFsdWUgPSB0cnVlO1xcbn07XFxuXFxuY29uc3QgZW1wdHlGb3JtRGF0YSA9ICgpID0+IHtcXG4gIGZvciAoY29uc3Qga2V5IGluIGZvcm1EYXRhKSB7XFxuICAgIGZvcm1EYXRhW2tleV0gPSBrZXkgPT09ICdzdGF0dXMnID8gMSA6ICcnO1xcbiAgfVxcbn07XFxuY29uc3Qgc2V0Rm9ybUVycm9yID0gKGVycm9ycyA9IHt9KSA9PiB7XFxuICBpZiAoT2JqZWN0LmtleXMoZXJyb3JzKS5sZW5ndGgpIHtcXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZXJyb3JzKSB7XFxuICAgICAgZm9ybUVycm9yW2tleV0gPSBlcnJvcnNba2V5XTtcXG4gICAgfVxcbiAgfSBlbHNlIHtcXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZm9ybUVycm9yKSB7XFxuICAgICAgZm9ybUVycm9yW2tleV0gPSAnJztcXG4gICAgfVxcbiAgfVxcbn07XFxuXFxuY29uc3Qgb3BlblN0YXR1c01vZGVsID0gKHVzZXIpID0+IHtcXG4gIHN0YXR1c0lkLnZhbHVlID0gdXNlci5pZDtcXG4gIHN0YXR1c1ZhbHVlLnZhbHVlID0gdXNlci5zdGF0dXM7XFxuICBzdGF0dXNNb2RhbC52YWx1ZSA9IHRydWU7XFxuICBzdGF0dXNVc2VybmFtZS52YWx1ZSA9IHVzZXIudXNlcm5hbWU7XFxufTtcXG5cXG5jb25zdCB1cGRhdGVVc2VyID0gKCkgPT4ge1xcbiAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcXG4gIGxldCBwYXNzd29yZERhdGEgPSB7XFxuICAgIHBhc3N3b3JkOiBlbmNyeXB0KGZvcm1EYXRhLnBhc3N3b3JkLCBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkgPz8gJycpLFxcbiAgICBwYXNzd29yZF9jb25maXJtYXRpb246IGVuY3J5cHQoXFxuICAgICAgZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLFxcbiAgICAgIHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSA/PyAnJ1xcbiAgICApLFxcbiAgfTtcXG5cXG4gIGF4aW9zXFxuICAgIC5wYXRjaChgL3VzZXIvJHtlZGl0VXNlcklkLnZhbHVlfWAsIHsgLi4uZm9ybURhdGEsIC4uLnBhc3N3b3JkRGF0YSB9KVxcbiAgICAudGhlbigocmVzKSA9PiB7XFxuICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xcbiAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzLmRhdGEubWVzc2FnZTtcXG4gICAgICB0b2FzdERhdGEudHlwZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XFxuICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XFxuICAgICAgc2V0Rm9ybUVycm9yKCk7XFxuICAgICAgc2V0Rm9ybUVycm9yKHJlcy5kYXRhLmVycm9ycyk7XFxuXFxuICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MpIHtcXG4gICAgICAgIGVkaXRVc2VyRm9ybS52YWx1ZSA9IGZhbHNlO1xcbiAgICAgICAgZmV0Y2hVc2Vyc0xpc3QodXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXSk7XFxuICAgICAgICBlZGl0VXNlcklkLnZhbHVlID0gJyc7XFxuICAgICAgICBlbXB0eUZvcm1EYXRhKCk7XFxuICAgICAgICBzZXRGb3JtRXJyb3IoKTtcXG4gICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcXG4gICAgICB9XFxuICAgIH0pXFxuICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcXG4gICAgICBlZGl0VXNlcklkLnZhbHVlID0gJyc7XFxuICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xcbiAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gZXJyb3IuZGF0YS5tZXNzYWdlO1xcbiAgICAgIHRvYXN0RGF0YS50eXBlID0gZmFsc2U7XFxuICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XFxuICAgIH0pXFxuICAgIC5maW5hbGx5KCgpID0+IHtcXG4gICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcXG4gICAgfSk7XFxufTtcXG5cXG53YXRjaChcXG4gICgpID0+IFtcXG4gICAgZmlsdGVyLm9yZ2FuaXphdGlvbixcXG4gICAgZmlsdGVyLnJvbGVzLFxcbiAgICBmaWx0ZXIucSxcXG4gICAgZmlsdGVyLnN0YXR1cyxcXG4gICAgZmlsdGVyLnN0YXJ0X2RhdGUsXFxuICAgIGZpbHRlci5lbmRfZGF0ZSxcXG4gICAgZmlsdGVyLmRhdGVfdHlwZSxcXG4gIF0sXFxuICAoKSA9PiB7XFxuICAgIGZldGNoVXNlcnNMaXN0KHVzZXJzRGF0YVsnY3VycmVudF9wYWdlJ10sIHRydWUpO1xcbiAgfSxcXG4gIHsgZGVlcDogdHJ1ZSB9XFxuKTtcXG5cXG5mdW5jdGlvbiBmZXRjaFVzZXJzTGlzdChhY3RpdmVfcGFnZTogbnVtYmVyLCBmaWx0ZXJlZCA9IGZhbHNlKSB7XFxuICBsZXQgcm91dGUgPSBgL3VzZXJzL3BhZ2UvJHtmaWx0ZXJlZCA/ICcxJyA6IGFjdGl2ZV9wYWdlfWA7XFxuICBmZXRjaGluZ1RhYmxlRGF0YS52YWx1ZSA9IHRydWU7XFxuICBsZXQgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xcblxcbiAgZm9yIChjb25zdCBmaWx0ZXJfa2V5IGluIGZpbHRlcikge1xcbiAgICBpZiAoZmlsdGVyW2ZpbHRlcl9rZXldKSB7XFxuICAgICAgaWYgKGZpbHRlcltmaWx0ZXJfa2V5XS5sZW5ndGggPiAwKSB7XFxuICAgICAgICBwYXJhbXMuYXBwZW5kKGZpbHRlcl9rZXksIGZpbHRlcltmaWx0ZXJfa2V5XSk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuXFxuICBheGlvc1xcbiAgICAuZ2V0KHJvdXRlLCB7IHBhcmFtczogcGFyYW1zIH0pXFxuICAgIC50aGVuKChyZXMpID0+IHtcXG4gICAgICBjb25zdCByZXNwb25zZSA9IHJlcy5kYXRhO1xcbiAgICAgIE9iamVjdC5hc3NpZ24odXNlcnNEYXRhLCByZXNwb25zZS5kYXRhKTtcXG4gICAgICBpc0VtcHR5LnZhbHVlID0gcmVzcG9uc2UuZGF0YSA/IGZhbHNlIDogdHJ1ZTtcXG4gICAgICB0b3RhbFVzZXIudmFsdWUgPSByZXNwb25zZS5kYXRhLnRvdGFsO1xcbiAgICB9KVxcbiAgICAuZmluYWxseSgoKSA9PiB7XFxuICAgICAgZmV0Y2hpbmdUYWJsZURhdGEudmFsdWUgPSBmYWxzZTtcXG4gICAgfSk7XFxufVxcblxcbmNvbnN0IG9wZW5EZWxldGVtb2RlbCA9ICh1c2VyKSA9PiB7XFxuICBkZWxldGVNb2RhbC52YWx1ZSA9IHRydWU7XFxuICBkZWxldGVJZC52YWx1ZSA9IHVzZXIuaWQ7XFxuICBkZWxldGVVc2VybmFtZS52YWx1ZSA9IHVzZXIudXNlcm5hbWU7XFxufTtcXG5cXG5mdW5jdGlvbiBkZWxldGVVc2VyKGlkOiBudW1iZXIpIHtcXG4gIGRlbGV0ZU1vZGFsLnZhbHVlID0gZmFsc2U7XFxuICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XFxuXFxuICBheGlvcy5kZWxldGUoYC91c2VyLyR7aWR9YCkudGhlbigocmVzKSA9PiB7XFxuICAgIGlmIChyZXMuZGF0YS5tZXNzYWdlKSB7XFxuICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xcbiAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzLmRhdGEubWVzc2FnZTtcXG4gICAgICB0b2FzdERhdGEudHlwZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XFxuICAgIH1cXG5cXG4gICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MpIHtcXG4gICAgICBmZXRjaFVzZXJzTGlzdCh1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddKTtcXG4gICAgfVxcbiAgfSk7XFxufVxcblxcbmNvbnN0IHNvcnQgPSAocGFyYW0pID0+IHtcXG4gIGZpbHRlci5kaXJlY3Rpb24gPVxcbiAgICBmaWx0ZXIuZGlyZWN0aW9uID09PSAnYXNjJyAmJiBmaWx0ZXIub3JkZXJCeSA9PT0gcGFyYW0gPyAnZGVzYycgOiAnYXNjJztcXG4gIGZpbHRlci5vcmRlckJ5ID0gcGFyYW07XFxuXFxuICBmZXRjaFVzZXJzTGlzdCgxKTtcXG59O1xcblxcbmZ1bmN0aW9uIHRvZ2dsZVVzZXJTdGF0dXMoaWQ6IG51bWJlcikge1xcbiAgd2luZG93LnNjcm9sbFRvKDAsIDApO1xcbiAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcXG4gIHN0YXR1c01vZGFsLnZhbHVlID0gZmFsc2U7XFxuXFxuICBheGlvc1xcbiAgICAucGF0Y2goYC91c2VyL3N0YXR1cy8ke2lkfWApXFxuICAgIC50aGVuKChyZXMpID0+IHtcXG4gICAgICBpZiAocmVzLnN0YXR1cykge1xcbiAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xcbiAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSByZXMuZGF0YS5tZXNzYWdlO1xcbiAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xcblxcbiAgICAgICAgZmV0Y2hVc2Vyc0xpc3QodXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXSk7XFxuICAgICAgfVxcbiAgICB9KVxcbiAgICAuZmluYWxseSgoKSA9PiB7XFxuICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XFxuICAgIH0pO1xcbn1cXG5cXG5mdW5jdGlvbiBmb3JtYXREYXRlKGRhdGU6IERhdGUpIHtcXG4gIHJldHVybiBtb21lbnQoZGF0ZSkuZm9ybWF0KCdMTCcpO1xcbn1cXG5cXG5jb25zdCB0b2dnbGVTZWxlY3RhbGwgPSAoKSA9PiB7XFxuICBjdXJyZW50cGFnZURhdGEudmFsdWUgPSB1c2Vyc0RhdGEuZGF0YS5tYXAoKHZhbHVlKSA9PiB7XFxuICAgIHJldHVybiB2YWx1ZVsnaWQnXTtcXG4gIH0pO1xcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB1c2Vyc0RhdGEuZGF0YS5sZW5ndGg7IGkrKykge1xcbiAgICBpZiAoIWNoZWNrbGlzdC52YWx1ZS5pbmNsdWRlcyh1c2Vyc0RhdGEuZGF0YVtpXVsnaWQnXSkpXFxuICAgICAgY2hlY2tsaXN0LnZhbHVlW2NoZWNrbGlzdC52YWx1ZS5sZW5ndGggKyBpXSA9IHVzZXJzRGF0YS5kYXRhW2ldWydpZCddO1xcbiAgfVxcbiAgc2VsZWN0ZWRJZHMudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV0gPSBjaGVja2xpc3QudmFsdWU7XFxuICBpZiAoYWxsU2VsZWN0ZWQudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV0pIHtcXG4gICAgY2hlY2tsaXN0LnZhbHVlID0gY2hlY2tsaXN0LnZhbHVlLmZpbHRlcihcXG4gICAgICAobikgPT4gIU9iamVjdC52YWx1ZXMoY3VycmVudHBhZ2VEYXRhLnZhbHVlKS5pbmNsdWRlcyhuKVxcbiAgICApO1xcbiAgfVxcbiAgY2hlY2tsaXN0LnZhbHVlID0gY2hlY2tsaXN0LnZhbHVlLmZpbHRlcihmdW5jdGlvbiAoZWwpIHtcXG4gICAgcmV0dXJuIGVsICE9IG51bGw7XFxuICB9KTtcXG4gIGFsbFNlbGVjdGVkLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dID1cXG4gICAgIWFsbFNlbGVjdGVkLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dO1xcbn07XFxud2F0Y2goXFxuICAoKSA9PiBjaGVja2xpc3QudmFsdWUsXFxuICAoKSA9PiB7XFxuICAgIHNlbGVjdGVkSWRzLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dID0gW107XFxuXFxuICAgIGN1cnJlbnRwYWdlRGF0YS52YWx1ZSA9IHVzZXJzRGF0YS5kYXRhLm1hcCgodmFsdWUpID0+IHtcXG4gICAgICByZXR1cm4gdmFsdWVbJ2lkJ107XFxuICAgIH0pO1xcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoZWNrbGlzdC52YWx1ZS5sZW5ndGg7IGkrKykge1xcbiAgICAgIGlmIChjdXJyZW50cGFnZURhdGEudmFsdWUuaW5jbHVkZXMoY2hlY2tsaXN0LnZhbHVlW2ldKSkge1xcbiAgICAgICAgc2VsZWN0ZWRJZHMudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV1baV0gPSBjaGVja2xpc3QudmFsdWVbaV07XFxuICAgICAgfVxcbiAgICB9XFxuICAgIHNlbGVjdGVkSWRzLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dID0gc2VsZWN0ZWRJZHMudmFsdWVbXFxuICAgICAgdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXVxcbiAgICBdLmZpbHRlcihmdW5jdGlvbiAoZWwpIHtcXG4gICAgICByZXR1cm4gZWwgIT0gbnVsbDtcXG4gICAgfSk7XFxuICB9XFxuKTtcXG5cXG5jb25zdCBnZW5lcmF0ZUxhYmVsID0gKGxhYmVsKSA9PiB7XFxuICByZXR1cm4geyAnLS1sYWJlbCc6IGAnJHtsYWJlbH0nYCB9O1xcbn07XFxuXFxuY29uc3QgZG93bmxvYWRBbGwgPSAoKSA9PiB7XFxuICBsZXQgcm91dGUgPSBgL3VzZXJzL2Rvd25sb2FkL2A7XFxuICBsZXQgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xcbiAgbGV0IGFsbFBhZ2VTZWxlY3RlZDtcXG4gIGFsbFBhZ2VTZWxlY3RlZCA9IE9iamVjdC52YWx1ZXMoc2VsZWN0ZWRJZHMudmFsdWUpLmZsYXQoKTtcXG5cXG4gIGlmIChjaGVja2xpc3QudmFsdWUubGVuZ3RoID09IDApIHtcXG4gICAgZm9yIChjb25zdCBmaWx0ZXJfa2V5IGluIGZpbHRlcikge1xcbiAgICAgIGlmIChmaWx0ZXJbZmlsdGVyX2tleV0ubGVuZ3RoID4gMCkge1xcbiAgICAgICAgcGFyYW1zLmFwcGVuZChmaWx0ZXJfa2V5LCBmaWx0ZXJbZmlsdGVyX2tleV0pO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfSBlbHNlIHtcXG4gICAgcGFyYW1zLmFwcGVuZCgndXNlcnMnLCBhbGxQYWdlU2VsZWN0ZWQpO1xcbiAgfVxcblxcbiAgYXhpb3MuZ2V0KHJvdXRlLCB7IHBhcmFtczogcGFyYW1zIH0pLnRoZW4oKHJlcykgPT4ge1xcbiAgICBjb25zdCByZXNwb25zZSA9IHJlcy5kYXRhO1xcbiAgICBsZXQgYmxvYiA9IG5ldyBCbG9iKFtyZXNwb25zZV0sIHtcXG4gICAgICB0eXBlOiAnYXBwbGljYXRpb24vY3N2JyxcXG4gICAgfSk7XFxuICAgIGxldCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xcbiAgICBsaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcXG4gICAgbGluay5kb3dubG9hZCA9IHJlcy5oZWFkZXJzWydjb250ZW50LWRpc3Bvc2l0aW9uJ10uc3BsaXQoJz0nKVsxXTtcXG4gICAgbGluay5jbGljaygpO1xcbiAgfSk7XFxufTtcXG48L3NjcmlwdD5cXG48c3R5bGUgc2NvcGVkPlxcbkBrZXlmcmFtZXMgc3Bpbm5lciB7XFxuICAwJSB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCkgcm90YXRlKDBkZWcpO1xcbiAgfVxcbiAgMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCkgcm90YXRlKDM2MGRlZyk7XFxuICB9XFxufVxcblxcbi5zcGluOjpiZWZvcmUge1xcbiAgYW5pbWF0aW9uOiAxLjVzIGxpbmVhciBpbmZpbml0ZSBzcGlubmVyO1xcbiAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IGluaGVyaXQ7XFxuICBib3JkZXI6IHNvbGlkIDNweCAjY2ZkMGQxO1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogZ3JleTtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIGNvbnRlbnQ6ICcnO1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiA1MCU7XFxuICBsZWZ0OiA1MCU7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApO1xcbiAgd2lkdGg6IDIwcHg7XFxuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xcbn1cXG4uc3BpbiB7XFxuICBoZWlnaHQ6IDQwcHg7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1hcmdpbjogYXV0bztcXG59XFxuPC9zdHlsZT5cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuYWRkLWltcG9ydC1zaWRlYmFyLWRyb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgb3ZlcmZsb3cteTogaGlkZGVuO1xcbiAgcGFkZGluZzogMTRweCA4cHg7XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiAxNDIwcHgpIHtcXG4uYWRkLWltcG9ydC1zaWRlYmFyLWRyb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbn1cXG59XFxuLmFjdGl2aXR5X19oZWFkZXJbZGF0YS12LTZmZTU5MDU1XSB7XFxuICB0b3A6IDBweDtcXG4gIHotaW5kZXg6IDEwMDtcXG59XFxuLmFjdGl2aXR5X19oZWFkZXIgbmF2W2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxNDIwcHgpIHtcXG4uYWN0aXZpdHlfX2hlYWRlciBuYXZbZGF0YS12LTZmZTU5MDU1XSB7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbn1cXG59XFxuLmFjdGl2aXR5X19oZWFkZXIgbmF2IGFbZGF0YS12LTZmZTU5MDU1XTpob3ZlciB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLXdoaXRlKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbi5hY3Rpdml0eV9faGVhZGVyIG5hdiB1bFtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM3NXB4KSB7XFxuLmFjdGl2aXR5X19oZWFkZXIgLmFkZC1idG5bZGF0YS12LTZmZTU5MDU1XSB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxufVxcbn1cXG4uYWN0aXZpdHlfX2hlYWRlciAudXNlci1uYXZbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuLnRvYXN0W2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogNTAlO1xcbiAgei1pbmRleDogNTA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcmlnaHQ6IDAuNzVyZW07XFxuICB6LWluZGV4OiAyMDtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG4gIG9wYWNpdHk6IDA7XFxuICAtLXR3LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG4gIC0tdHctc2hhZG93LWNvbG9yZWQ6IDBweCA0cHggNDBweCB2YXIoLS10dy1zaGFkb3ctY29sb3IpO1xcbiAgYm94LXNoYWRvdzogdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LCAwIDAgIzAwMDApLCB2YXIoLS10dy1yaW5nLXNoYWRvdywgMCAwICMwMDAwKSwgdmFyKC0tdHctc2hhZG93KTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDMwMG1zO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucHJvZmlsZV9fZHJvcGRvd25bZGF0YS12LTZmZTU5MDU1XSB7XFxuICAgIHJpZ2h0OiAyLjVyZW07XFxufVxcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd25bZGF0YS12LTZmZTU5MDU1XSB7XFxuICB0b3A6IDUwcHg7XFxuICB3aWR0aDogMjY1cHg7XFxuICBib3gtc2hhZG93OiA0cHggNHB4IDQwcHggcmdiYSgwLCA1MCwgNzYsIDAuMik7XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY0MHB4KSB7XFxuLnByb2ZpbGVfX2Ryb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgICB3aWR0aDogMjIwcHg7XFxufVxcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24gbGlbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duIGxpW2RhdGEtdi02ZmU1OTA1NV0gPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gIC0tdHctc3BhY2UteC1yZXZlcnNlOiAwO1xcbiAgbWFyZ2luLXJpZ2h0OiBjYWxjKDAuNzVyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTtcXG4gIG1hcmdpbi1sZWZ0OiBjYWxjKDAuNzVyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSk7XFxufVxcbi5wcm9maWxlX19kcm9wZG93biBsaVtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIHBhZGRpbmc6IDAuNzVyZW07XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xcbi5wcm9maWxlX19kcm9wZG93biBsaVtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gICAgcGFkZGluZzogMXJlbTtcXG59XFxufVxcbi5wcm9maWxlX19kcm9wZG93biBsaSBhW2RhdGEtdi02ZmU1OTA1NV06aG92ZXIge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duIGxpIC51c2VyLXByb2ZpbGVbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBmb250LXNpemU6IDI2cHg7XFxufVxcbi5wcm9maWxlX19kcm9wZG93biAuZHJvcGRvd25fX2xpc3RbZGF0YS12LTZmZTU5MDU1XSB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLW4tMTApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxufVxcbi5wcm9maWxlX19kcm9wZG93biAuZHJvcGRvd25fX2xpc3RbZGF0YS12LTZmZTU5MDU1XTpob3ZlciB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLW4tMjApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24gLmRyb3Bkb3duX19saXN0IGFbZGF0YS12LTZmZTU5MDU1XSB7XFxuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaFtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHJpZ2h0OiAyLjVyZW07XFxuICB6LWluZGV4OiAyMDtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG4gIC0tdHctc2hhZG93OiAwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xcbiAgLS10dy1zaGFkb3ctY29sb3JlZDogMHB4IDRweCA0MHB4IHZhcigtLXR3LXNoYWRvdy1jb2xvcik7XFxuICBib3gtc2hhZG93OiB2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3csIDAgMCAjMDAwMCksIHZhcigtLXR3LXJpbmctc2hhZG93LCAwIDAgIzAwMDApLCB2YXIoLS10dy1zaGFkb3cpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMzAwbXM7XFxuICB0b3A6IDUwcHg7XFxuICB3aWR0aDogMjY1cHg7XFxuICBib3gtc2hhZG93OiA0cHggNHB4IDQwcHggcmdiYSgwLCA1MCwgNzYsIDAuMik7XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY0MHB4KSB7XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaFtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gICAgd2lkdGg6IDIyMHB4O1xcbn1cXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaCBsaVtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoIGxpW2RhdGEtdi02ZmU1OTA1NV0gPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gIC0tdHctc3BhY2UteC1yZXZlcnNlOiAwO1xcbiAgbWFyZ2luLXJpZ2h0OiBjYWxjKDAuNzVyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTtcXG4gIG1hcmdpbi1sZWZ0OiBjYWxjKDAuNzVyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSk7XFxufVxcbi5wcm9maWxlX19kcm9wZG93bi0tdG91Y2ggbGlbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBwYWRkaW5nOiAwLjc1cmVtO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoIGxpW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgICBwYWRkaW5nOiAxcmVtO1xcbn1cXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaCBsaSBhW2RhdGEtdi02ZmU1OTA1NV06aG92ZXIge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaCBsaSAudXNlci1wcm9maWxlW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgZm9udC1zaXplOiAyNnB4O1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoIC5kcm9wZG93bl9fbGlzdFtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tbi0xMCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaCAuZHJvcGRvd25fX2xpc3RbZGF0YS12LTZmZTU5MDU1XTpob3ZlciB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLW4tMjApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoIC5kcm9wZG93bl9fbGlzdCBhW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XFxufVxcbi5kcm9wZG93bi1idG46aG92ZXIgLnByb2ZpbGVfX2Ryb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0sIFxcbi5kcm9wZG93bi1idG46YWN0aXZlIC5wcm9maWxlX19kcm9wZG93bltkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICBvcGFjaXR5OiAxO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwcHgpO1xcbn1cXG4uZHJvcGRvd24tYnRuOmhvdmVyIC5kcm9wZG93bl9fYXJyb3dbZGF0YS12LTZmZTU5MDU1XSxcXG4uZHJvcGRvd24tYnRuOmFjdGl2ZSAuZHJvcGRvd25fX2Fycm93W2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcXG59XFxuLmFkZC1pbXBvcnRbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcbi5hZGQtaW1wb3J0LWRyb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgb3BhY2l0eTogMDtcXG59XFxuLmRyb3Bkb3duLXRyaWdnZXItY29udGFpbmVyW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgZGlzcGxheTogYmxvY2s7XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiAxNDIwcHgpIHtcXG4uZHJvcGRvd24tdHJpZ2dlci1jb250YWluZXJbZGF0YS12LTZmZTU5MDU1XSB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxufVxcbi5hZGQtaW1wb3J0OmhvdmVyIC5hZGQtaW1wb3J0LWRyb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XFxuICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xcbn1cXG59XFxuLnNwaW5uZXJbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDAuNzVyZW07XFxuICByaWdodDogMS43NXJlbTtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG59XFxuQC13ZWJraXQta2V5ZnJhbWVzIHNwaW4tNmZlNTkwNTUge1xcbnRvIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG59XFxufVxcbkBrZXlmcmFtZXMgc3Bpbi02ZmU1OTA1NSB7XFxudG8ge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbn1cXG59XFxuLnNwaW5uZXJbZGF0YS12LTZmZTU5MDU1XSB7XFxuICAtd2Via2l0LWFuaW1hdGlvbjogc3Bpbi02ZmU1OTA1NSAxcyBsaW5lYXIgaW5maW5pdGU7XFxuICAgICAgICAgIGFuaW1hdGlvbjogc3Bpbi02ZmU1OTA1NSAxcyBsaW5lYXIgaW5maW5pdGU7XFxuICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XFxuICBib3JkZXItd2lkdGg6IDJweDtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1uLTEwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDAuMDU7XFxuICB3aWR0aDogMTVweDtcXG4gIGhlaWdodDogMTVweDtcXG4gIGJvcmRlci10b3AtY29sb3I6IHdoaXRlO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWRtaW5IZWFkZXIudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNBO0VBQ0Usa0JBQUE7RUFDQSxpQkFBQTtBQUFGO0FBRUU7QUFKRjtJQUtJLGFBQUE7QUFDRjtBQUNGO0FBRUE7RUFDRSxRQUFBO0VBQ0EsWUFBQTtBQUNGO0FBQ0U7RUFDRSxhQUFBO0VBQ0EsV0FBQTtFQUNBLDhCQUFBO0FBQ0o7QUFDSTtBQUxGO0lBTUksc0JBQUE7SUFDQSx1QkFBQTtBQUVKO0FBQ0Y7QUFDTTtFQUFBLG9CQUFBO0VBQUEsaURBQUE7QUFBQTtBQUlBO0VBQUEsYUFBQTtBQUFBO0FBS0Y7QUFERjtJQUVJLGFBQUE7QUFESjtBQUNGO0FBS0k7RUFBQSxhQUFBO0VBQUEsbUJBQUE7QUFBQTtBQUtGO0VBQUEsa0JBQUE7RUFBQSxTQUFBO0VBQUEsV0FBQTtFQUNBLGdDQUFBO0FBREE7QUFLQTtFQUFBLGtCQUFBO0VBQUEsa0JBQUE7RUFBQSxjQUFBO0VBQUEsV0FBQTtFQUFBLGtCQUFBO0VBQUEsMERBQUE7RUFBQSxnQkFBQTtFQUFBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSxvQkFBQTtFQUFBLHFEQUFBO0VBQUEsVUFBQTtFQUFBLDRDQUFBO0VBQUEsd0RBQUE7RUFBQSx1R0FBQTtFQUFBLDBCQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEsYUFBQTtBQUFBO0FBQUE7QUFERjtFQUVFLFNBQUE7RUFDQSxZQUFBO0VBQ0EsNkNBQUE7QUFIRjtBQUtFO0FBTkY7SUFPSSxZQUFBO0FBRkY7QUFDRjtBQUtJO0VBQUEsYUFBQTtFQUFBLG1CQUFBO0FBQUE7QUFBQTtFQUFBLHVCQUFBO0VBQUEsdURBQUE7RUFBQSxnRUFBQTtBQUFBO0FBQUE7RUFBQSxnQkFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLGFBQUE7QUFBQTtBQUFBO0FBR0U7RUFBQSxvQkFBQTtFQUFBLHFEQUFBO0FBQUE7QUFHRjtFQUNFLGVBQUE7QUFITjtBQVFJO0VBQUEsa0JBQUE7RUFBQSx5REFBQTtBQUFBO0FBQUE7RUFBQSxrQkFBQTtFQUFBLHlEQUFBO0VBQUEsb0JBQUE7RUFBQSxxREFBQTtBQUFBO0FBR0U7RUFBQSwwQkFBQTtBQUFBO0FBTUo7RUFBQSxrQkFBQTtFQUFBLGFBQUE7RUFBQSxXQUFBO0VBQUEsa0JBQUE7RUFBQSwwREFBQTtFQUFBLGdCQUFBO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLG9CQUFBO0VBQUEscURBQUE7RUFBQSw0Q0FBQTtFQUFBLHdEQUFBO0VBQUEsdUdBQUE7RUFBQSwwQkFBQTtFQUNBLFNBQUE7RUFDQSxZQUFBO0VBQ0EsNkNBQUE7QUFIQTtBQUtBO0FBTkY7SUFPSSxZQUFBO0FBTkY7QUFDRjtBQVNJO0VBQUEsYUFBQTtFQUFBLG1CQUFBO0FBQUE7QUFBQTtFQUFBLHVCQUFBO0VBQUEsdURBQUE7RUFBQSxnRUFBQTtBQUFBO0FBQUE7RUFBQSxnQkFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLGFBQUE7QUFBQTtBQUFBO0FBR0U7RUFBQSxvQkFBQTtFQUFBLHFEQUFBO0FBQUE7QUFHRjtFQUNFLGVBQUE7QUFQTjtBQVlJO0VBQUEsa0JBQUE7RUFBQSx5REFBQTtBQUFBO0FBQUE7RUFBQSxrQkFBQTtFQUFBLHlEQUFBO0VBQUEsb0JBQUE7RUFBQSxxREFBQTtBQUFBO0FBR0U7RUFBQSwwQkFBQTtBQUFBO0FBUUY7O0VBQUEsbUJBQUE7RUFBQSxVQUFBO0VBQ0EsMkJBQUE7QUFEQTtBQUlGOztFQUNFLHlCQUFBO0FBWko7QUFnQkE7RUFDRSxlQUFBO0FBYkY7QUFnQkE7RUFDRSxrQkFBQTtFQUNBLFVBQUE7QUFiRjtBQWdCQTtFQUNFLGNBQUE7QUFiRjtBQWVFO0FBSEY7SUFJSSxhQUFBO0FBWkY7QUFnQkY7SUFFSSw4QkFBQTtJQUNBLHFCQUFBO0lBQ0Esd0JBQUE7QUFaRjtBQVBGO0FBd0JFO0VBQUEsa0JBQUE7RUFBQSxZQUFBO0VBQUEsY0FBQTtFQUFBLHFCQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEseUJBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLHlCQUFBO0FBQUE7QUFBQTtBQUFBO0VBQUEsbURBQUE7VUFBQSwyQ0FBQTtFQUFBLHFCQUFBO0VBQUEsaUJBQUE7RUFBQSx5REFBQTtFQUFBLHlCQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSx1QkFBQTtBQUhBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5hZGQtaW1wb3J0LXNpZGViYXItZHJvcGRvd24ge1xcbiAgb3ZlcmZsb3cteTogaGlkZGVuO1xcbiAgcGFkZGluZzogMTRweCA4cHg7XFxuXFxuICBAbWVkaWEgKG1pbi13aWR0aDogMTQyMHB4KSB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICB9XFxufVxcblxcbi5hY3Rpdml0eV9faGVhZGVyIHtcXG4gIHRvcDogMHB4O1xcbiAgei1pbmRleDogMTAwO1xcblxcbiAgbmF2IHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG5cXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTQyMHB4KSB7XFxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgfVxcblxcbiAgICBhOmhvdmVyIHtcXG4gICAgICBAYXBwbHkgdGV4dC13aGl0ZTtcXG4gICAgfVxcblxcbiAgICB1bCB7XFxuICAgICAgQGFwcGx5IGZsZXg7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5hZGQtYnRuIHtcXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzc1cHgpIHtcXG4gICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxuICB9XFxuXFxuICAudXNlci1uYXYge1xcbiAgICBAYXBwbHkgZmxleCBpdGVtcy1jZW50ZXI7XFxuICB9XFxufVxcblxcbi50b2FzdCB7XFxuICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0yLzQgei01MDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xcbn1cXG5cXG4ucHJvZmlsZV9fZHJvcGRvd24ge1xcbiAgQGFwcGx5IGludmlzaWJsZSBhYnNvbHV0ZSByaWdodC0zIHotMjAgYmctd2hpdGUgdGV4dC1sZWZ0IHRleHQtc20gdGV4dC1ibHVlY29yYWwgb3BhY2l0eS0wIHNoYWRvdy1kcm9wZG93biBkdXJhdGlvbi0zMDAgc206cmlnaHQtMTA7XFxuICB0b3A6IDUwcHg7XFxuICB3aWR0aDogMjY1cHg7XFxuICBib3gtc2hhZG93OiA0cHggNHB4IDQwcHggcmdiYSgwLCA1MCwgNzYsIDAuMik7XFxuXFxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2NDBweCkge1xcbiAgICB3aWR0aDogMjIwcHg7XFxuICB9XFxuXFxuICBsaSB7XFxuICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTMgcC0zIHNtOnAtNDtcXG5cXG4gICAgYTpob3ZlciB7XFxuICAgICAgQGFwcGx5IHRleHQtYmx1ZWNvcmFsO1xcbiAgICB9XFxuXFxuICAgIC51c2VyLXByb2ZpbGUge1xcbiAgICAgIGZvbnQtc2l6ZTogMjZweDtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmRyb3Bkb3duX19saXN0IHtcXG4gICAgQGFwcGx5IGJnLW4tMTAgaG92ZXI6Ymctbi0yMCBob3Zlcjp0ZXh0LWJsdWVjb3JhbDtcXG5cXG4gICAgYSB7XFxuICAgICAgQGFwcGx5IGNhcGl0YWxpemU7XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaCB7XFxuICBAYXBwbHkgYWJzb2x1dGUgcmlnaHQtMTAgei0yMCBiZy13aGl0ZSB0ZXh0LWxlZnQgdGV4dC1zbSB0ZXh0LWJsdWVjb3JhbCBzaGFkb3ctZHJvcGRvd24gZHVyYXRpb24tMzAwO1xcbiAgdG9wOiA1MHB4O1xcbiAgd2lkdGg6IDI2NXB4O1xcbiAgYm94LXNoYWRvdzogNHB4IDRweCA0MHB4IHJnYmEoMCwgNTAsIDc2LCAwLjIpO1xcblxcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjQwcHgpIHtcXG4gICAgd2lkdGg6IDIyMHB4O1xcbiAgfVxcblxcbiAgbGkge1xcbiAgICBAYXBwbHkgZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0zIHAtMyBzbTpwLTQ7XFxuXFxuICAgIGE6aG92ZXIge1xcbiAgICAgIEBhcHBseSB0ZXh0LWJsdWVjb3JhbDtcXG4gICAgfVxcblxcbiAgICAudXNlci1wcm9maWxlIHtcXG4gICAgICBmb250LXNpemU6IDI2cHg7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5kcm9wZG93bl9fbGlzdCB7XFxuICAgIEBhcHBseSBiZy1uLTEwIGhvdmVyOmJnLW4tMjAgaG92ZXI6dGV4dC1ibHVlY29yYWw7XFxuXFxuICAgIGEge1xcbiAgICAgIEBhcHBseSBjYXBpdGFsaXplO1xcbiAgICB9XFxuICB9XFxufVxcblxcbi5kcm9wZG93bi1idG46aG92ZXIsXFxuLmRyb3Bkb3duLWJ0bjphY3RpdmUge1xcbiAgLnByb2ZpbGVfX2Ryb3Bkb3duIHtcXG4gICAgQGFwcGx5IHZpc2libGUgb3BhY2l0eS0xMDA7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMHB4KTtcXG4gIH1cXG5cXG4gIC5kcm9wZG93bl9fYXJyb3cge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xcbiAgfVxcbn1cXG5cXG4uYWRkLWltcG9ydCB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi5hZGQtaW1wb3J0LWRyb3Bkb3duIHtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIG9wYWNpdHk6IDA7XFxufVxcblxcbi5kcm9wZG93bi10cmlnZ2VyLWNvbnRhaW5lciB7XFxuICBkaXNwbGF5OiBibG9jaztcXG5cXG4gIEBtZWRpYSAobWluLXdpZHRoOiAxNDIwcHgpIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gIH1cXG59XFxuXFxuLmFkZC1pbXBvcnQ6aG92ZXIgLmFkZC1pbXBvcnQtZHJvcGRvd24ge1xcbiAgQG1lZGlhIChtaW4td2lkdGg6IDE0MjBweCkge1xcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XFxuICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xcbiAgfVxcbn1cXG5cXG4uc3Bpbm5lciB7XFxuICBAYXBwbHkgYWJzb2x1dGUgdG9wLTMgcmlnaHQtNyBpbmxpbmUtYmxvY2sgYW5pbWF0ZS1zcGluIHJvdW5kZWQtZnVsbCBib3JkZXItMiBib3JkZXItbi0xMCBib3JkZXItb3BhY2l0eS01O1xcbiAgd2lkdGg6IDE1cHg7XFxuICBoZWlnaHQ6IDE1cHg7XFxuICBib3JkZXItdG9wLWNvbG9yOiB3aGl0ZTtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLm1pbnVzW2RhdGEtdi0yNDQzZGY1M10ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGhlaWdodDogMC43NXJlbTtcXG4gIHdpZHRoOiAwLjc1cmVtO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuLm1pbnVzW2RhdGEtdi0yNDQzZGY1M106YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBoZWlnaHQ6IDAuMTI1cmVtO1xcbiAgd2lkdGg6IDAuNzVyZW07XFxuICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwtNTApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxufVxcbiNwdWJsaXNoaW5nX2FjdGl2aXRpZXNbZGF0YS12LTI0NDNkZjUzXSB7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICBib3R0b206IDBweDtcXG4gIHJpZ2h0OiAwcHg7XFxuICBmaWx0ZXI6IGRyb3Atc2hhZG93KDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xcbn1cXG4ucm9sbGluZ1tkYXRhLXYtMjQ0M2RmNTNdIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG59XFxuQC13ZWJraXQta2V5ZnJhbWVzIHNwaW4tMjQ0M2RmNTMge1xcbnRvIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG59XFxufVxcbkBrZXlmcmFtZXMgc3Bpbi0yNDQzZGY1MyB7XFxudG8ge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbn1cXG59XFxuLnJvbGxpbmdbZGF0YS12LTI0NDNkZjUzXSB7XFxuICAtd2Via2l0LWFuaW1hdGlvbjogc3Bpbi0yNDQzZGY1MyAxcyBsaW5lYXIgaW5maW5pdGU7XFxuICAgICAgICAgIGFuaW1hdGlvbjogc3Bpbi0yNDQzZGY1MyAxcyBsaW5lYXIgaW5maW5pdGU7XFxuICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XFxuICBib3JkZXItd2lkdGg6IDJweDtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tbi0yMCksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XFxuICB3aWR0aDogMjBweDtcXG4gIGhlaWdodDogMjBweDtcXG4gIGJvcmRlci10b3AtY29sb3I6IHdoaXRlO1xcbn1cXG4uYWN0aXZpdHktdGl0bGVbZGF0YS12LTI0NDNkZjUzXSB7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtFQUFBLGFBQUE7RUFBQSxlQUFBO0VBQUEsY0FBQTtFQUFBLG1CQUFBO0FBQUE7QUFDQTtFQUNFLFdBQUE7RUFDQSxjQUFBO0VBQUEsZ0JBQUE7RUFBQSxjQUFBO0VBQUEsc0JBQUE7RUFBQSxrQkFBQTtFQUFBLGlFQUFBO0FBQ0o7QUFJRTtFQUFBLGVBQUE7RUFBQSxXQUFBO0VBQUEsVUFBQTtFQUNBLG9EQUFBO0FBREE7QUFLQTtFQUFBLHFCQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEseUJBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLHlCQUFBO0FBQUE7QUFBQTtBQUFBO0VBQUEsbURBQUE7VUFBQSwyQ0FBQTtFQUFBLHFCQUFBO0VBQUEsaUJBQUE7RUFBQSxzQkFBQTtFQUFBLHlEQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSx1QkFBQTtBQUhBO0FBTUY7RUFDRSxtQkFBQTtFQUNBLGdCQUFBO0VBQ0EsdUJBQUE7QUFBRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4ubWludXMge1xcbiAgQGFwcGx5IGZsZXggaC0zIHctMyBpdGVtcy1jZW50ZXI7XFxuICAmOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6ICcnO1xcbiAgICBAYXBwbHkgYmxvY2sgaC0wLjUgdy0zIHJvdW5kZWQteGwgYmctYmx1ZS01MDtcXG4gIH1cXG59XFxuXFxuI3B1Ymxpc2hpbmdfYWN0aXZpdGllcyB7XFxuICBAYXBwbHkgZml4ZWQgYm90dG9tLTAgcmlnaHQtMDtcXG4gIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKSk7XFxufVxcblxcbi5yb2xsaW5nIHtcXG4gIEBhcHBseSBpbmxpbmUtYmxvY2sgYW5pbWF0ZS1zcGluIHJvdW5kZWQtZnVsbCBib3JkZXItMiBib3JkZXItbi0yMDtcXG4gIHdpZHRoOiAyMHB4O1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGU7XFxufVxcblxcbi5hY3Rpdml0eS10aXRsZSB7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuYWxlcnRbZGF0YS12LWI3N2IxMWQ0XSB7XFxuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1jYW1lbC0xMCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHBhZGRpbmc6IDFyZW07XFxuICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XFxuICBsaW5lLWhlaWdodDogMS42MjU7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNTApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKVxcbn1cXG4uYWxlcnRfX2NvbnRhaW5lcltkYXRhLXYtYjc3YjExZDRdIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgbGluZS1oZWlnaHQ6IDEuNXJlbVxcbn1cXG4uYWxlcnRfX2NvbnRlbnRbZGF0YS12LWI3N2IxMWQ0XSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlclxcbn1cXG4uYWxlcnRfX2NvbnRlbnRbZGF0YS12LWI3N2IxMWQ0XSA+IDpub3QoW2hpZGRlbl0pIH4gOm5vdChbaGlkZGVuXSkge1xcbiAgLS10dy1zcGFjZS14LXJldmVyc2U6IDA7XFxuICBtYXJnaW4tcmlnaHQ6IGNhbGMoMXJlbSAqIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpO1xcbiAgbWFyZ2luLWxlZnQ6IGNhbGMoMXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpKVxcbn1cXG4uYWxlcnRfX2NvbnRlbnQgc3BhbltkYXRhLXYtYjc3YjExZDRdIHtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNTApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKVxcbn1cXG4uYWxlcnRfX21lc3NhZ2VbZGF0YS12LWI3N2IxMWQ0XSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlclxcbn1cXG4uYWxlcnRfX21lc3NhZ2VbZGF0YS12LWI3N2IxMWQ0XSA+IDpub3QoW2hpZGRlbl0pIH4gOm5vdChbaGlkZGVuXSkge1xcbiAgLS10dy1zcGFjZS14LXJldmVyc2U6IDA7XFxuICBtYXJnaW4tcmlnaHQ6IGNhbGMoMC4yNXJlbSAqIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpO1xcbiAgbWFyZ2luLWxlZnQ6IGNhbGMoMC4yNXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpKVxcbn1cXG4udGV4dC1zaG93W2RhdGEtdi1iNzdiMTFkNF0ge1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXJcXG59XFxuLnRleHQtc2hvd1tkYXRhLXYtYjc3YjExZDRdID4gOm5vdChbaGlkZGVuXSkgfiA6bm90KFtoaWRkZW5dKSB7XFxuICAtLXR3LXNwYWNlLXgtcmV2ZXJzZTogMDtcXG4gIG1hcmdpbi1yaWdodDogY2FsYygwLjVyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTtcXG4gIG1hcmdpbi1sZWZ0OiBjYWxjKDAuNXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpKVxcbn1cXG4udGV4dC1zaG93W2RhdGEtdi1iNzdiMTFkNF0ge1xcbiAgb3BhY2l0eTogMDtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDMwMG1zO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwcHgsIDMwcHgpXFxufVxcbi50ZXh0LWhpZGVbZGF0YS12LWI3N2IxMWQ0XSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLS10dy10cmFuc2xhdGUteTogLTBweDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKHZhcigtLXR3LXRyYW5zbGF0ZS14KSwgdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tld1godmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlclxcbn1cXG4udGV4dC1oaWRlW2RhdGEtdi1iNzdiMTFkNF0gPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gIC0tdHctc3BhY2UteC1yZXZlcnNlOiAwO1xcbiAgbWFyZ2luLXJpZ2h0OiBjYWxjKDAuNXJlbSAqIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpO1xcbiAgbWFyZ2luLWxlZnQ6IGNhbGMoMC41cmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSkpXFxufVxcbi50ZXh0LWhpZGVbZGF0YS12LWI3N2IxMWQ0XSB7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAzMDBtc1xcbn1cXG4uYm9yZGVyLWhpZGVbZGF0YS12LWI3N2IxMWQ0XTo6YmVmb3JlIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDBweDtcXG4gIHRvcDogMHB4O1xcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tc2FsbW9uLTUwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMzAwbXM7XFxuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XFxuICB3aWR0aDogMnB4O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpXFxufVxcbi5ib3JkZXItc2hvd1tkYXRhLXYtYjc3YjExZDRdOjpiZWZvcmUge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMHB4O1xcbiAgdG9wOiAwcHg7XFxuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1zYWxtb24tNTApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAzMDBtcztcXG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcXG4gIHdpZHRoOiAycHg7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSlcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0Vycm9yTWVzc2FnZS52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxzQkFBQTtFQUFBLGtCQUFBO0VBQUEsNkRBQUE7RUFBQSxhQUFBO0VBQUEscUJBQUE7RUFBQSxtQkFBQTtFQUFBLG9CQUFBO0VBQUEsa0JBQUE7RUFBQSxvQkFBQTtFQUFBO0FBQUE7QUFHRTtFQUFBLGFBQUE7RUFBQSxzQkFBQTtFQUFBO0FBQUE7QUFHQTtFQUFBLGFBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQSx1QkFBQTtFQUFBLG9EQUFBO0VBQUE7QUFBQTtBQUdFO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLGdCQUFBO0VBQUEsb0JBQUE7RUFBQTtBQUFBO0FBSUY7RUFBQSxhQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUEsdUJBQUE7RUFBQSx1REFBQTtFQUFBO0FBQUE7QUFJRjtFQUFBLGtCQUFBO0VBQUEsYUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBLHVCQUFBO0VBQUEsc0RBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQSxVQUFBO0VBQUEsMEJBQUE7RUFDQTtBQURBO0FBSUE7RUFBQSxhQUFBO0VBQUEsc0JBQUE7RUFBQSwrTEFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBLHVCQUFBO0VBQUEsc0RBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBR0E7RUFBQSxrQkFBQTtFQUFBLFNBQUE7RUFBQSxRQUFBO0VBQUEsc0JBQUE7RUFBQSxrQkFBQTtFQUFBLDhEQUFBO0VBQUEsMEJBQUE7RUFBQSxzREFBQTtFQUNBLFVBQUE7RUFDQSxZQUFBO0VBQ0EsV0FBQTtFQUNBO0FBSkE7QUFPQTtFQUFBLGtCQUFBO0VBQUEsU0FBQTtFQUFBLFFBQUE7RUFBQSxzQkFBQTtFQUFBLGtCQUFBO0VBQUEsOERBQUE7RUFBQSwwQkFBQTtFQUFBLHNEQUFBO0VBQ0EsVUFBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0VBQ0E7QUFKQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4uYWxlcnQge1xcbiAgQGFwcGx5IHJvdW5kZWQgYmctY2FtZWwtMTAgcC00IHByLTYgdGV4dC1zbSBsZWFkaW5nLXJlbGF4ZWQgdGV4dC1uLTUwO1xcblxcbiAgJl9fY29udGFpbmVyIHtcXG4gICAgQGFwcGx5IGZsZXggZmxleC1jb2wgbGVhZGluZy02O1xcbiAgfVxcbiAgJl9fY29udGVudCB7XFxuICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTQ7XFxuXFxuICAgIHNwYW4ge1xcbiAgICAgIEBhcHBseSB0ZXh0LXNtIGZvbnQtYm9sZCB0ZXh0LW4tNTA7XFxuICAgIH1cXG4gIH1cXG4gICZfX21lc3NhZ2Uge1xcbiAgICBAYXBwbHkgZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xO1xcbiAgfVxcbn1cXG4udGV4dC1zaG93IHtcXG4gIEBhcHBseSBpbnZpc2libGUgZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yIG9wYWNpdHktMCBkdXJhdGlvbi0zMDA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTBweCwgMzBweCk7XFxufVxcbi50ZXh0LWhpZGUge1xcbiAgQGFwcGx5IGZsZXggLXRyYW5zbGF0ZS15LTAgaXRlbXMtY2VudGVyIHNwYWNlLXgtMiBkdXJhdGlvbi0zMDA7XFxufVxcbi5ib3JkZXItaGlkZTo6YmVmb3JlIHtcXG4gIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgcm91bmRlZCBiZy1zYWxtb24tNTAgZHVyYXRpb24tMzAwIGVhc2Utb3V0O1xcbiAgd2lkdGg6IDJweDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIGNvbnRlbnQ6ICcnO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTtcXG59XFxuLmJvcmRlci1zaG93OjpiZWZvcmUge1xcbiAgQGFwcGx5IGFic29sdXRlIGxlZnQtMCB0b3AtMCByb3VuZGVkIGJnLXNhbG1vbi01MCBkdXJhdGlvbi0zMDAgZWFzZS1vdXQ7XFxuICB3aWR0aDogMnB4O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgY29udGVudDogJyc7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuaGVscCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5oZWxwX190ZXh0IHtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMXJlbTtcXG4gIHotaW5kZXg6IDIwO1xcbn1cXG4uaGVscF9fdGV4dCA+IDpub3QoW2hpZGRlbl0pIH4gOm5vdChbaGlkZGVuXSkge1xcbiAgLS10dy1zcGFjZS15LXJldmVyc2U6IDA7XFxuICBtYXJnaW4tdG9wOiBjYWxjKDAuMzc1cmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpO1xcbiAgbWFyZ2luLWJvdHRvbTogY2FsYygwLjM3NXJlbSAqIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpO1xcbn1cXG4uaGVscF9fdGV4dCB7XFxuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1lZ2dzaGVsbCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHBhZGRpbmc6IDFyZW07XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDFyZW07XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNDApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG4gIG9wYWNpdHk6IDA7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAyMDBtcztcXG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0O1xcbiAgYm94LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG59XFxuLmhlbHBfX3RleHQgcCBhIHtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxufVxcbi5oZWxwOmhvdmVyIC5oZWxwX190ZXh0IHtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKDUwJSwgNXB4KTtcXG4gIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICBvcGFjaXR5OiAxO1xcbn1cXG5AbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XFxuLmhlbHA6aG92ZXIgLmhlbHBfX3RleHQge1xcbiAgICB3aWR0aDogMjAwcHg7XFxufVxcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtFQUFBLGtCQUFBO0FBQUE7QUFHRTtFQUFBLGtCQUFBO0VBQUEsa0JBQUE7RUFBQSxTQUFBO0VBQUEsV0FBQTtBQUFBO0FBQUE7RUFBQSx1QkFBQTtFQUFBLGdFQUFBO0VBQUEseURBQUE7QUFBQTtBQUFBO0VBQUEsc0JBQUE7RUFBQSxrQkFBQTtFQUFBLDZEQUFBO0VBQUEsYUFBQTtFQUFBLGdCQUFBO0VBQUEsa0JBQUE7RUFBQSxpQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7RUFBQSxVQUFBO0VBQUEsMEJBQUE7RUFDQSw2QkFBQTtFQUNBLDJDQUFBO0FBRkE7QUFJQTtFQUNFLGdCQUFBO0FBQU47QUFNRTtFQUNFLDhCQUFBO0VBQ0EsbUJBQUE7RUFDQSxVQUFBO0FBSEo7QUFJSTtBQUpGO0lBS0ksWUFBQTtBQURKO0FBQ0ZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLmhlbHAge1xcbiAgQGFwcGx5IHJlbGF0aXZlO1xcblxcbiAgJl9fdGV4dCB7XFxuICAgIEBhcHBseSBpbnZpc2libGUgYWJzb2x1dGUgdG9wLTQgei0yMCBzcGFjZS15LTEuNSByb3VuZGVkIGJnLWVnZ3NoZWxsIHAtNCB0ZXh0LWxlZnQgdGV4dC14cyB0ZXh0LW4tNDAgb3BhY2l0eS0wIGR1cmF0aW9uLTIwMDtcXG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQ7XFxuICAgIGJveC1zaGFkb3c6IDBweCA0cHggNDBweCByZ2IoMCAwIDAgLyAxMCUpO1xcblxcbiAgICBwIGEge1xcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLmhlbHA6aG92ZXIge1xcbiAgLmhlbHBfX3RleHQge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg1MCUsIDVweCk7XFxuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICAgIG9wYWNpdHk6IDE7XFxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcXG4gICAgICB3aWR0aDogMjAwcHg7XFxuICAgIH1cXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLm92ZXJsYXkge1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgbGVmdDogMHB4O1xcbiAgdG9wOiAwcHg7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMTAwJTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tYmxhY2spLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBvcGFjaXR5OiAwLjc7XFxuICB6LWluZGV4OiAxMDAwXFxufVxcbi5vdmVybGF5X19pbm5lciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwcHg7XFxuICB0b3A6IDBweDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAxMDAlXFxufVxcbi5vdmVybGF5X19jb250ZW50IHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDUwJTtcXG4gIHRvcDogNTAlO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSlcXG59XFxuLm92ZXJsYXlfX2NvbnRlbnQgLnNwaW5uZXIge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrXFxufVxcbkAtd2Via2l0LWtleWZyYW1lcyBzcGluIHtcXG50byB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZylcXG59XFxufVxcbkBrZXlmcmFtZXMgc3BpbiB7XFxudG8ge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpXFxufVxcbn1cXG4ub3ZlcmxheV9fY29udGVudCAuc3Bpbm5lciB7XFxuICAtd2Via2l0LWFuaW1hdGlvbjogc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7XFxuICAgICAgICAgIGFuaW1hdGlvbjogc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7XFxuICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XFxuICBib3JkZXItd2lkdGg6IDJweDtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1uLTEwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDAuMDU7XFxuICB3aWR0aDogNzVweDtcXG4gIGhlaWdodDogNzVweDtcXG4gIGJvcmRlci10b3AtY29sb3I6IHdoaXRlXFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Mb2FkZXIudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0VBQUEsZUFBQTtFQUFBLFNBQUE7RUFBQSxRQUFBO0VBQUEsWUFBQTtFQUFBLFdBQUE7RUFBQSxrQkFBQTtFQUFBLDBEQUFBO0VBQ0EsWUFBQTtFQUNBO0FBRkE7QUFLRTtFQUFBLGtCQUFBO0VBQUEsU0FBQTtFQUFBLFFBQUE7RUFBQSxZQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUEsa0JBQUE7RUFBQSxTQUFBO0VBQUEsUUFBQTtFQUNBO0FBREE7QUFJRTtFQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBO0FBQUE7QUFBQTtBQUFBO0VBQUEsMENBQUE7VUFBQSxrQ0FBQTtFQUFBLHFCQUFBO0VBQUEsaUJBQUE7RUFBQSx5REFBQTtFQUFBLHlCQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQTtBQUhBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5vdmVybGF5IHtcXG4gIEBhcHBseSBmaXhlZCBsZWZ0LTAgIHRvcC0wICBoLWZ1bGwgdy1mdWxsIGJnLWJsYWNrO1xcbiAgb3BhY2l0eTogMC43O1xcbiAgei1pbmRleDogMTAwMDtcXG5cXG4gICZfX2lubmVyIHtcXG4gICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMCB0b3AtMCBoLWZ1bGwgdy1mdWxsO1xcbiAgfVxcblxcbiAgJl9fY29udGVudCB7XFxuICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTIvNCB0b3AtMi80O1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcXG5cXG4gICAgLnNwaW5uZXIge1xcbiAgICAgIEBhcHBseSBpbmxpbmUtYmxvY2sgYW5pbWF0ZS1zcGluIHJvdW5kZWQtZnVsbCBib3JkZXItMiBib3JkZXItbi0xMCBib3JkZXItb3BhY2l0eS01O1xcbiAgICAgIHdpZHRoOiA3NXB4O1xcbiAgICAgIGhlaWdodDogNzVweDtcXG4gICAgICBib3JkZXItdG9wLWNvbG9yOiB3aGl0ZTtcXG4gICAgfVxcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIubW9kYWwtYW5pbWF0aW9uLWVudGVyLWFjdGl2ZVtkYXRhLXYtNWEyYmRhNThdLFxcbi5tb2RhbC1hbmltYXRpb24tbGVhdmUtYWN0aXZlW2RhdGEtdi01YTJiZGE1OF0ge1xcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGN1YmljLWJlemllcigwLjUyLCAwLjAyLCAwLjE5LCAxLjAyKTtcXG59XFxuLm1vZGFsLWFuaW1hdGlvbi1lbnRlci1mcm9tW2RhdGEtdi01YTJiZGE1OF0sXFxuLm1vZGFsLWFuaW1hdGlvbi1sZWF2ZS10b1tkYXRhLXYtNWEyYmRhNThdIHtcXG4gIG9wYWNpdHk6IDA7XFxufVxcbi5tb2RhbC1hbmltYXRpb24taW5uZXItZW50ZXItYWN0aXZlW2RhdGEtdi01YTJiZGE1OF0ge1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgY3ViaWMtYmV6aWVyKDAuNTIsIDAuMDIsIDAuMTksIDEuMDIpIDAuMTVzO1xcbn1cXG4ubW9kYWwtYW5pbWF0aW9uLWlubmVyLWxlYXZlLWFjdGl2ZVtkYXRhLXYtNWEyYmRhNThdIHtcXG4gIHRyYW5zaXRpb246IGFsbCAwLjFzIGN1YmljLWJlemllcigwLjUyLCAwLjAyLCAwLjE5LCAxLjAyKTtcXG59XFxuLm1vZGFsLWFuaW1hdGlvbi1pbm5lci1lbnRlci1mcm9tW2RhdGEtdi01YTJiZGE1OF0ge1xcbiAgb3BhY2l0eTogMDtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMC44KTtcXG59XFxuLm1vZGFsLWFuaW1hdGlvbi1pbm5lci1sZWF2ZS10b1tkYXRhLXYtNWEyYmRhNThdIHtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMC44KTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNBOztFQUVFLDZEQUFBO0FBQUY7QUFHQTs7RUFFRSxVQUFBO0FBQUY7QUFHQTtFQUNFLCtEQUFBO0FBQUY7QUFHQTtFQUNFLHlEQUFBO0FBQUY7QUFHQTtFQUNFLFVBQUE7RUFDQSxxQkFBQTtBQUFGO0FBR0E7RUFDRSxxQkFBQTtBQUFGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5tb2RhbC1hbmltYXRpb24tZW50ZXItYWN0aXZlLFxcbi5tb2RhbC1hbmltYXRpb24tbGVhdmUtYWN0aXZlIHtcXG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC41cyBjdWJpYy1iZXppZXIoMC41MiwgMC4wMiwgMC4xOSwgMS4wMik7XFxufVxcblxcbi5tb2RhbC1hbmltYXRpb24tZW50ZXItZnJvbSxcXG4ubW9kYWwtYW5pbWF0aW9uLWxlYXZlLXRvIHtcXG4gIG9wYWNpdHk6IDA7XFxufVxcblxcbi5tb2RhbC1hbmltYXRpb24taW5uZXItZW50ZXItYWN0aXZlIHtcXG4gIHRyYW5zaXRpb246IGFsbCAwLjVzIGN1YmljLWJlemllcigwLjUyLCAwLjAyLCAwLjE5LCAxLjAyKSAwLjE1cztcXG59XFxuXFxuLm1vZGFsLWFuaW1hdGlvbi1pbm5lci1sZWF2ZS1hY3RpdmUge1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuMXMgY3ViaWMtYmV6aWVyKDAuNTIsIDAuMDIsIDAuMTksIDEuMDIpO1xcbn1cXG5cXG4ubW9kYWwtYW5pbWF0aW9uLWlubmVyLWVudGVyLWZyb20ge1xcbiAgb3BhY2l0eTogMDtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMC44KTtcXG59XFxuXFxuLm1vZGFsLWFuaW1hdGlvbi1pbm5lci1sZWF2ZS10byB7XFxuICB0cmFuc2Zvcm06IHNjYWxlKDAuOCk7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5zaGltbWVyX19ibG9ja1tkYXRhLXYtNzQzNTYxNzJdIHtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAycztcXG4gICAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAycztcXG4gIC13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XFxuICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xcbiAgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcXG4gICAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XFxuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBwbGFjZUhvbGRlclNoaW1tZXItNzQzNTYxNzI7XFxuICAgICAgICAgIGFuaW1hdGlvbi1uYW1lOiBwbGFjZUhvbGRlclNoaW1tZXItNzQzNTYxNzI7XFxuICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcXG4gICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xcbiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuNXM7XFxuICAgICAgICAgIGFuaW1hdGlvbi1kZWxheTogMC41cztcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlZGVkZWQ7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICNlZGVkZWQgMTQuMzYlLCAjZDdkNmQ2IDU2LjI5JSwgI2VkZWRlZCAxMDAlKTtcXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuICBiYWNrZ3JvdW5kLXNpemU6IDI0NHB4IDEwNHB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgaGVpZ2h0OiAxOXB4O1xcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgbWFyZ2luOiAzcHggNnB4IDNweCAwcHg7XFxufVxcbkAtd2Via2l0LWtleWZyYW1lcyBwbGFjZUhvbGRlclNoaW1tZXItNzQzNTYxNzIge1xcbjAlIHtcXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2FsYygwJSAtIDMwMHB4KSAwO1xcbn1cXG4yMCUge1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDAlIC0gMzAwcHgpIDA7XFxufVxcbjgwJSB7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMTAwJSArIDMwMHB4KSAwO1xcbn1cXG4xMDAlIHtcXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2FsYygxMDAlICsgMzAwcHgpIDA7XFxufVxcbn1cXG5Aa2V5ZnJhbWVzIHBsYWNlSG9sZGVyU2hpbW1lci03NDM1NjE3MiB7XFxuMCUge1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDAlIC0gMzAwcHgpIDA7XFxufVxcbjIwJSB7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMCUgLSAzMDBweCkgMDtcXG59XFxuODAlIHtcXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2FsYygxMDAlICsgMzAwcHgpIDA7XFxufVxcbjEwMCUge1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDEwMCUgKyAzMDBweCkgMDtcXG59XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9TaGltbWVyTG9hZGluZy52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQ0E7RUFDRSw4QkFBQTtVQUFBLHNCQUFBO0VBQ0EscUNBQUE7VUFBQSw2QkFBQTtFQUNBLDJDQUFBO1VBQUEsbUNBQUE7RUFDQSxtREFBQTtVQUFBLDJDQUFBO0VBQ0EseUNBQUE7VUFBQSxpQ0FBQTtFQUNBLDZCQUFBO1VBQUEscUJBQUE7RUFDQSx5QkFBQTtFQUNBLHNGQUFBO0VBTUEsNEJBQUE7RUFDQSw0QkFBQTtFQUNBLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLG1CQUFBO0VBQ0EsV0FBQTtFQUNBLHVCQUFBO0FBTEY7QUFRQTtBQUNFO0lBQ0UsdUNBQUE7QUFMRjtBQVFBO0lBQ0UsdUNBQUE7QUFORjtBQVNBO0lBQ0UseUNBQUE7QUFQRjtBQVVBO0lBQ0UseUNBQUE7QUFSRjtBQUNGO0FBUEE7QUFDRTtJQUNFLHVDQUFBO0FBTEY7QUFRQTtJQUNFLHVDQUFBO0FBTkY7QUFTQTtJQUNFLHlDQUFBO0FBUEY7QUFVQTtJQUNFLHlDQUFBO0FBUkY7QUFDRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4uc2hpbW1lcl9fYmxvY2sge1xcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAycztcXG4gIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xcbiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XFxuICBhbmltYXRpb24tbmFtZTogcGxhY2VIb2xkZXJTaGltbWVyO1xcbiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjVzO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VkZWRlZDtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChcXG4gICAgOTBkZWcsXFxuICAgICNlZGVkZWQgMTQuMzYlLFxcbiAgICAjZDdkNmQ2IDU2LjI5JSxcXG4gICAgI2VkZWRlZCAxMDAlXFxuICApO1xcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcXG4gIGJhY2tncm91bmQtc2l6ZTogMjQ0cHggMTA0cHg7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBoZWlnaHQ6IDE5cHg7XFxuICBib3JkZXItcmFkaXVzOiAxMHB4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXJnaW46IDNweCA2cHggM3B4IDBweDtcXG59XFxuXFxuQGtleWZyYW1lcyBwbGFjZUhvbGRlclNoaW1tZXIge1xcbiAgMCUge1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDAlIC0gMzAwcHgpIDA7XFxuICB9XFxuXFxuICAyMCUge1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDAlIC0gMzAwcHgpIDA7XFxuICB9XFxuXFxuICA4MCUge1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDEwMCUgKyAzMDBweCkgMDtcXG4gIH1cXG5cXG4gIDEwMCUge1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDEwMCUgKyAzMDBweCkgMDtcXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmVycm9yc1tkYXRhLXYtZjY3YzdlNzJdIHtcXG4gICAgYm9yZGVyLWxlZnQtd2lkdGg6IDJweFxcbn1cXG4uZXJyb3JzX19oZWFkW2RhdGEtdi1mNjdjN2U3Ml0ge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICAgIHBhZGRpbmc6IDFyZW1cXG59XFxuLmVycm9yc19faGVhZC0tdGl0bGVbZGF0YS12LWY2N2M3ZTcyXSB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGZsZXgtZ3JvdzogMTtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gICAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjYyNVxcbn1cXG4uZXJyb3JzX19saXN0W2RhdGEtdi1mNjdjN2U3Ml0ge1xcbiAgICBoZWlnaHQ6IDBweDtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBhbGw7XFxuICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiA1MDBtc1xcbn1cXG4uZXJyb3JzX19saXN0IHVsW2RhdGEtdi1mNjdjN2U3Ml0ge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbTtcXG4gICAgcGFkZGluZy1yaWdodDogMS41cmVtXFxufVxcbi5lcnJvcnNfX2l0ZW1bZGF0YS12LWY2N2M3ZTcyXSB7XFxuICAgIHBhZGRpbmctdG9wOiAxcmVtO1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMXJlbTtcXG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gICAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjVcXG59XFxuLmVycm9yc19faXRlbVtkYXRhLXYtZjY3YzdlNzJdOm5vdCg6bGFzdC1jaGlsZCkge1xcbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7XFxuICAgIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1uLTIwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKVxcbn1cXG4uZXJyb3JzX19lbGVtZW50W2RhdGEtdi1mNjdjN2U3Ml0ge1xcbiAgICBsaXN0LXN0eWxlLXR5cGU6IGRpc2M7XFxuICAgIHBhZGRpbmctbGVmdDogMXJlbTtcXG4gICAgcGFkZGluZy1yaWdodDogMXJlbTtcXG4gICAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICAgIGNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbC01MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpXFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9FcnJvckxpc3RzLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtJQUFBO0FBQUE7QUFHRTtJQUFBLGFBQUE7SUFBQSw4QkFBQTtJQUFBO0FBQUE7QUFHRTtJQUFBLGFBQUE7SUFBQSxZQUFBO0lBQUEsbUJBQUE7SUFBQSxtQkFBQTtJQUFBLG9CQUFBO0lBQUE7QUFBQTtBQUtGO0lBQUEsV0FBQTtJQUFBLGdCQUFBO0lBQUEsa0JBQUE7SUFBQSxtQkFBQTtJQUFBLHdCQUFBO0lBQUEsd0RBQUE7SUFBQTtBQUFBO0FBR0U7SUFBQSxvQkFBQTtJQUFBO0FBQUE7QUFLRjtJQUFBLGlCQUFBO0lBQUEsb0JBQUE7SUFBQSxtQkFBQTtJQUFBLG9CQUFBO0lBQUE7QUFBQTtBQUlBO0lBQUEsd0JBQUE7SUFBQSxzQkFBQTtJQUFBO0FBQUE7QUFJQTtJQUFBLHFCQUFBO0lBQUEsa0JBQUE7SUFBQSxtQkFBQTtJQUFBLG9CQUFBO0lBQUE7QUFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4uZXJyb3JzIHtcXG4gIEBhcHBseSBib3JkZXItbC0yO1xcblxcbiAgJl9faGVhZCB7XFxuICAgIEBhcHBseSBmbGV4IGp1c3RpZnktYmV0d2VlbiBwLTQ7XFxuXFxuICAgICYtLXRpdGxlIHtcXG4gICAgICBAYXBwbHkgZmxleCBncm93IGl0ZW1zLWNlbnRlciB0ZXh0LXNtIGxlYWRpbmctcmVsYXhlZDtcXG4gICAgfVxcbiAgfVxcblxcbiAgJl9fbGlzdCB7XFxuICAgIEBhcHBseSBoLTAgb3ZlcmZsb3ctaGlkZGVuIHB4LTQgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwO1xcblxcbiAgICB1bCB7XFxuICAgICAgQGFwcGx5IHB4LTY7XFxuICAgIH1cXG4gIH1cXG5cXG4gICZfX2l0ZW0ge1xcbiAgICBAYXBwbHkgcHktNCB0ZXh0LXNtIGxlYWRpbmctbm9ybWFsO1xcbiAgfVxcblxcbiAgJl9faXRlbTpub3QoOmxhc3QtY2hpbGQpIHtcXG4gICAgQGFwcGx5IGJvcmRlci1iIGJvcmRlci1uLTIwO1xcbiAgfVxcblxcbiAgJl9fZWxlbWVudCB7XFxuICAgIEBhcHBseSBsaXN0LWRpc2MgcHgtNCB0ZXh0LWJsdWUtNTA7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5wcm9ncmVzc19iYXJbZGF0YS12LTVjMzJiZjBjXSB7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICBsZWZ0OiAwcHg7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXdoaXRlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgdG9wOiAwICFpbXBvcnRhbnQ7XFxuICB6LWluZGV4OiA5OTk5OTk7XFxuICBoZWlnaHQ6IDEwMHZoO1xcbn1cXG4ucHJvZ3Jlc3NfYmFyX193cmFwcGVyW2RhdGEtdi01YzMyYmYwY10ge1xcbiAgd2lkdGg6IDI1MHB4O1xcbiAgYm9yZGVyLXJhZGl1czogMXJlbTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjNGM0YzQ7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbn1cXG4ucHJvZ3Jlc3NfYmFyX192aWV3ZXJbZGF0YS12LTVjMzJiZjBjXSB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXNwcmluZy01MCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gIGhlaWdodDogNHB4O1xcbiAgdHJhbnNmb3JtOiBzY2FsZVgoMCk7XFxuICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7XFxufVxcbi5wcm9ncmVzc19iYXIuYW5pbWF0ZS1sb2FkZXIgLnByb2dyZXNzX2Jhcl9fdmlld2VyW2RhdGEtdi01YzMyYmYwY10ge1xcbiAgLXdlYmtpdC1hbmltYXRpb246IEZpbGxBbmltYXRpb24tNWMzMmJmMGMgNnMgbGluZWFyIGZvcndhcmRzO1xcbiAgICAgICAgICBhbmltYXRpb246IEZpbGxBbmltYXRpb24tNWMzMmJmMGMgNnMgbGluZWFyIGZvcndhcmRzO1xcbn1cXG4ucHJvZ3Jlc3NfYmFyLmFuaW1hdGUtbG9hZGVyIC5wcm9ncmVzc19iYXJfX3N0YXRlW2RhdGEtdi01YzMyYmYwY106OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBUZXh0Q2hhbmdlLTVjMzJiZjBjIDZzIGxpbmVhciBmb3J3YXJkcztcXG4gICAgICAgICAgYW5pbWF0aW9uOiBUZXh0Q2hhbmdlLTVjMzJiZjBjIDZzIGxpbmVhciBmb3J3YXJkcztcXG59XFxuLnByb2dyZXNzX2Jhcl9fY29udGVudFtkYXRhLXYtNWMzMmJmMGNdIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG4ucHJvZ3Jlc3NfYmFyX19zdGF0ZVtkYXRhLXYtNWMzMmJmMGNdIHtcXG4gIG1hcmdpbi10b3A6IDEuNXJlbTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICBsaW5lLWhlaWdodDogMS41O1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwtNTApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuQC13ZWJraXQta2V5ZnJhbWVzIEZpbGxBbmltYXRpb24tNWMzMmJmMGMge1xcbjAlIHtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZVgoMCk7XFxufVxcbjEwMCUge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKTtcXG59XFxufVxcbkBrZXlmcmFtZXMgRmlsbEFuaW1hdGlvbi01YzMyYmYwYyB7XFxuMCUge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlWCgwKTtcXG59XFxuMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogc2NhbGVYKDEpO1xcbn1cXG59XFxuQC13ZWJraXQta2V5ZnJhbWVzIFRleHRDaGFuZ2UtNWMzMmJmMGMge1xcbjAlIHtcXG4gICAgY29udGVudDogYXR0cihkYXRhLXN0YXJ0KTtcXG59XFxuOTUlIHtcXG4gICAgY29udGVudDogYXR0cihkYXRhLXN0YXJ0KTtcXG59XFxuMTAwJSB7XFxuICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1lbmQpO1xcbn1cXG59XFxuQGtleWZyYW1lcyBUZXh0Q2hhbmdlLTVjMzJiZjBjIHtcXG4wJSB7XFxuICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1zdGFydCk7XFxufVxcbjk1JSB7XFxuICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1zdGFydCk7XFxufVxcbjEwMCUge1xcbiAgICBjb250ZW50OiBhdHRyKGRhdGEtZW5kKTtcXG59XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxlQUFBO0VBQUEsU0FBQTtFQUFBLGFBQUE7RUFBQSxXQUFBO0VBQUEsbUJBQUE7RUFBQSx1QkFBQTtFQUFBLGtCQUFBO0VBQUEsMERBQUE7RUFDQSxpQkFBQTtFQUNBLGVBQUE7RUFDQSxhQUFBO0FBSEE7QUFNRTtFQUFBLFlBQUE7RUFBQSxtQkFBQTtFQUNBLHlCQUFBO0VBQ0EsZ0JBQUE7QUFGQTtBQU1BO0VBQUEsa0JBQUE7RUFBQSw4REFBQTtFQUNBLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLG9CQUFBO0VBQ0EscUJBQUE7QUFKQTtBQU9GO0VBQ0UsNERBQUE7VUFBQSxvREFBQTtBQUZKO0FBS0U7RUFDRSxXQUFBO0VBQ0EseURBQUE7VUFBQSxpREFBQTtBQUhKO0FBT0k7RUFBQSxhQUFBO0VBQUEsc0JBQUE7QUFBQTtBQUlBO0VBQUEsa0JBQUE7RUFBQSxrQkFBQTtFQUFBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSxnQkFBQTtFQUFBLGdCQUFBO0VBQUEsb0JBQUE7RUFBQSx3REFBQTtBQUFBO0FBSUo7QUFDRTtJQUNFLG9CQUFBO0FBTkY7QUFRQTtJQUNFLG9CQUFBO0FBTkY7QUFDRjtBQUFBO0FBQ0U7SUFDRSxvQkFBQTtBQU5GO0FBUUE7SUFDRSxvQkFBQTtBQU5GO0FBQ0Y7QUFTQTtBQUNFO0lBQ0UseUJBQUE7QUFQRjtBQVVBO0lBQ0UseUJBQUE7QUFSRjtBQVdBO0lBQ0UsdUJBQUE7QUFURjtBQUNGO0FBRkE7QUFDRTtJQUNFLHlCQUFBO0FBUEY7QUFVQTtJQUNFLHlCQUFBO0FBUkY7QUFXQTtJQUNFLHVCQUFBO0FBVEY7QUFDRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4ucHJvZ3Jlc3NfYmFyIHtcXG4gIEBhcHBseSBmaXhlZCAgbGVmdC0wIGZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy13aGl0ZTtcXG4gIHRvcDogMCAhaW1wb3J0YW50O1xcbiAgei1pbmRleDogOTk5OTk5O1xcbiAgaGVpZ2h0OiAxMDB2aDtcXG5cXG4gICZfX3dyYXBwZXIge1xcbiAgICBAYXBwbHkgdy1bMjUwcHhdIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLTJ4bDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2M0YzRjNDtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIH1cXG5cXG4gICZfX3ZpZXdlciB7XFxuICAgIEBhcHBseSBiZy1zcHJpbmctNTA7XFxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gICAgaGVpZ2h0OiA0cHg7XFxuICAgIHRyYW5zZm9ybTogc2NhbGVYKDApO1xcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7XFxuICB9XFxuXFxuICAmLmFuaW1hdGUtbG9hZGVyICZfX3ZpZXdlciB7XFxuICAgIGFuaW1hdGlvbjogRmlsbEFuaW1hdGlvbiA2cyBsaW5lYXIgZm9yd2FyZHM7XFxuICB9XFxuXFxuICAmLmFuaW1hdGUtbG9hZGVyICZfX3N0YXRlOjpiZWZvcmUge1xcbiAgICBjb250ZW50OiAnJztcXG4gICAgYW5pbWF0aW9uOiBUZXh0Q2hhbmdlIDZzIGxpbmVhciBmb3J3YXJkcztcXG4gIH1cXG5cXG4gICZfX2NvbnRlbnQge1xcbiAgICBAYXBwbHkgZmxleCBmbGV4LWNvbDtcXG4gIH1cXG5cXG4gICZfX3N0YXRlIHtcXG4gICAgQGFwcGx5IG10LTYgdGV4dC1jZW50ZXIgdGV4dC1zbSBmb250LWJvbGQgbGVhZGluZy1ub3JtYWwgdGV4dC1ibHVlLTUwO1xcbiAgfVxcbn1cXG5cXG5Aa2V5ZnJhbWVzIEZpbGxBbmltYXRpb24ge1xcbiAgMCUge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlWCgwKTtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKTtcXG4gIH1cXG59XFxuXFxuQGtleWZyYW1lcyBUZXh0Q2hhbmdlIHtcXG4gIDAlIHtcXG4gICAgY29udGVudDogYXR0cihkYXRhLXN0YXJ0KTtcXG4gIH1cXG5cXG4gIDk1JSB7XFxuICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1zdGFydCk7XFxuICB9XFxuXFxuICAxMDAlIHtcXG4gICAgY29udGVudDogYXR0cihkYXRhLWVuZCk7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi52YWxpZGF0aW9uW2RhdGEtdi0xZTM4ZDEwZV0ge1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC41cmVtO1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMC41cmVtO1xcbiAgYm9yZGVyLXdpZHRoOiAxcHg7XFxuICB0cmFuc2l0aW9uLXByb3BlcnR5OiBhbGw7XFxuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDUwMG1zO1xcbiAgYm94LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG59XFxuLnZhbGlkYXRpb25fX2Vycm9ySGVhZFtkYXRhLXYtMWUzOGQxMGVdIHtcXG4gIHdpZHRoOiAyMTJweDtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY3JpbXNvbi0yMCksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWNyaW1zb24tMTApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBib3gtc2hhZG93OiAwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xcbn1cXG4udmFsaWRhdGlvbl9fZXJyb3JzW2RhdGEtdi0xZTM4ZDEwZV0ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwcHg7XFxuICByaWdodDogMHB4O1xcbiAgei1pbmRleDogMTA7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgd2lkdGg6IDU5NXB4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXdoaXRlKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNjBweCk7XFxufVxcbi52YWxpZGF0aW9uX19oZWFkaW5nW2RhdGEtdi0xZTM4ZDEwZV0ge1xcbiAgcGFkZGluZy1sZWZ0OiAxcmVtO1xcbiAgcGFkZGluZy1yaWdodDogMXJlbTtcXG4gIHBhZGRpbmctdG9wOiAwLjc1cmVtO1xcbiAgcGFkZGluZy1ib3R0b206IDAuNzVyZW07XFxufVxcbi52YWxpZGF0aW9uX19lcnJvcnMtbGlzdFtkYXRhLXYtMWUzOGQxMGVdIHtcXG4gIGZsZXgtZ3JvdzogMTtcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxuICBwYWRkaW5nLWxlZnQ6IDFyZW07XFxuICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xcbiAgcGFkZGluZy10b3A6IDAuNzVyZW07XFxuICBwYWRkaW5nLWJvdHRvbTogMC43NXJlbTtcXG59XFxuLnZhbGlkYXRpb25fX3RvZ2dsZVtkYXRhLXYtMWUzOGQxMGVdIHtcXG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxcmVtO1xcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbC01MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4uYWN0aXZlW2RhdGEtdi0xZTM4ZDEwZV06OmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgaGVpZ2h0OiAycHg7XFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDZkYmU0O1xcbiAgd2lkdGg6IDEwMCU7XFxuICB0b3A6IGNhbGMoMTAwJSArIDNweCk7XFxuICBsZWZ0OiAwO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvU3RpY2t5RXJyb3JzLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtFQUFBLDhCQUFBO0VBQUEsaUNBQUE7RUFBQSxpQkFBQTtFQUFBLHdCQUFBO0VBQUEsd0RBQUE7RUFBQSwwQkFBQTtFQUNBLDJDQUFBO0FBREE7QUFJRTtFQUFBLFlBQUE7RUFBQSxzQkFBQTtFQUFBLCtEQUFBO0VBQUEsa0JBQUE7RUFBQSwrREFBQTtFQUNBLDJDQUFBO0FBREE7QUFLQTtFQUFBLGtCQUFBO0VBQUEsUUFBQTtFQUFBLFVBQUE7RUFBQSxXQUFBO0VBQUEsYUFBQTtFQUFBLFlBQUE7RUFBQSxzQkFBQTtFQUFBLGdCQUFBO0VBQUEsc0JBQUE7RUFBQSwwREFBQTtFQUFBLGtCQUFBO0VBQUEsMERBQUE7RUFDQSw4QkFBQTtBQURBO0FBS0E7RUFBQSxrQkFBQTtFQUFBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSx1QkFBQTtBQUFBO0FBSUE7RUFBQSxZQUFBO0VBQUEsZ0JBQUE7RUFBQSxrQkFBQTtFQUFBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSx1QkFBQTtBQUFBO0FBSUE7RUFBQSxrQkFBQTtFQUFBLGlCQUFBO0VBQUEseUJBQUE7RUFBQSxnQkFBQTtFQUFBLG9CQUFBO0VBQUEsd0RBQUE7QUFBQTtBQUlGO0VBQ0UsV0FBQTtFQUNBLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0EseUJBQUE7RUFDQSxXQUFBO0VBQ0EscUJBQUE7RUFDQSxPQUFBO0FBTEpcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLnZhbGlkYXRpb24ge1xcbiAgQGFwcGx5IHJvdW5kZWQtdGwtbGcgcm91bmRlZC1ibC1sZyBib3JkZXIgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwO1xcbiAgYm94LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG5cXG4gICZfX2Vycm9ySGVhZCB7XFxuICAgIEBhcHBseSB3LVsyMTJweF0gYm9yZGVyLWNyaW1zb24tMjAgYmctY3JpbXNvbi0xMDtcXG4gICAgYm94LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG4gIH1cXG5cXG4gICZfX2Vycm9ycyB7XFxuICAgIEBhcHBseSBhYnNvbHV0ZSB0b3AtMCByaWdodC0wIHotMTAgZmxleCB3LVs1OTVweF0gZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuIGJvcmRlci13aGl0ZSBiZy13aGl0ZTtcXG4gICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDYwcHgpO1xcbiAgfVxcblxcbiAgJl9faGVhZGluZyB7XFxuICAgIEBhcHBseSBweC00IHB5LTM7XFxuICB9XFxuXFxuICAmX19lcnJvcnMtbGlzdCB7XFxuICAgIEBhcHBseSBncm93IG92ZXJmbG93LXktYXV0byBweC00IHB5LTM7XFxuICB9XFxuXFxuICAmX190b2dnbGUge1xcbiAgICBAYXBwbHkgdGV4dC14cyB1cHBlcmNhc2UgbGVhZGluZy1ub3JtYWwgdGV4dC1ibHVlLTUwO1xcbiAgfVxcbn1cXG4uYWN0aXZlIHtcXG4gICY6OmFmdGVyIHtcXG4gICAgY29udGVudDogJyc7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgaGVpZ2h0OiAycHg7XFxuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzA2ZGJlNDtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIHRvcDogY2FsYygxMDAlICsgM3B4KTtcXG4gICAgbGVmdDogMDtcXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmVycm9yLWJvcmRlcltkYXRhLXYtNmYxN2VjNDVdOjphZnRlciB7XFxuICBjb250ZW50OiBcXFwiIFxcXCI7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDJweDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlMzRkNWI7XFxufVxcbi53YXJuaW5nLWJvcmRlcltkYXRhLXYtNmYxN2VjNDVdOjphZnRlciB7XFxuICBjb250ZW50OiBcXFwiIFxcXCI7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDJweDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmNGI3ODQ7XFxufVxcbi5lcnJvci1jb250YWluZXJbZGF0YS12LTZmMTdlYzQ1XSB7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuM3MgZWFzZS1vdXQ7XFxuICBoZWlnaHQ6IGF1dG87XFxufVxcbi5saXN0LWluZGV4W2RhdGEtdi02ZjE3ZWM0NV0ge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgcGFkZGluZy1sZWZ0OiAyNHB4O1xcbn1cXG4ubGlzdC1pbmRleFtkYXRhLXYtNmYxN2VjNDVdOmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCIgXFxcIjtcXG4gIHotaW5kZXg6IDEwO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgaGVpZ2h0OiA0cHg7XFxuICB3aWR0aDogNHB4O1xcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcXG4gIGxlZnQ6IDhweDtcXG4gIHRvcDogNTAlO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xcbiAgYmFja2dyb3VuZDogIzJhMmYzMDtcXG59XFxuLmNvbnRhaW5lcltkYXRhLXYtNmYxN2VjNDVdIHtcXG4gIGhlaWdodDogMHB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHBhZGRpbmctbGVmdDogMXJlbTtcXG4gIHBhZGRpbmctcmlnaHQ6IDFyZW07XFxuICB0cmFuc2l0aW9uLXByb3BlcnR5OiBhbGw7XFxuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDUwMG1zO1xcbn1cXG4uZXJyb3ItZWxlbWVudFtkYXRhLXYtNmYxN2VjNDVdOm5vdCg6bGFzdC1vZi10eXBlKSB7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Q1ZGNkZTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1VwbG9hZGVkRXJyb3JzLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtFQUNFLFlBQUE7RUFDQSxrQkFBQTtFQUNBLE9BQUE7RUFDQSxNQUFBO0VBQ0EsWUFBQTtFQUNBLFVBQUE7RUFDQSx5QkFBQTtBQURKO0FBS0U7RUFDRSxZQUFBO0VBQ0Esa0JBQUE7RUFDQSxPQUFBO0VBQ0EsTUFBQTtFQUNBLFlBQUE7RUFDQSxVQUFBO0VBQ0EseUJBQUE7QUFGSjtBQUtBO0VBQ0UsZ0JBQUE7RUFDQSxnQ0FBQTtFQUNBLFlBQUE7QUFGRjtBQUtBO0VBQ0Usa0JBQUE7RUFDQSxrQkFBQTtBQUZGO0FBSUU7RUFDRSxZQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLFVBQUE7RUFDQSxtQkFBQTtFQUNBLFNBQUE7RUFDQSxRQUFBO0VBQ0EsMkJBQUE7RUFDQSxtQkFBQTtBQUZKO0FBTUU7RUFBQSxXQUFBO0VBQUEsZ0JBQUE7RUFBQSxrQkFBQTtFQUFBLG1CQUFBO0VBQUEsd0JBQUE7RUFBQSx3REFBQTtFQUFBLDBCQUFBO0FBQUE7QUFFRjtFQUNFLGdDQUFBO0FBREZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLmVycm9yLWJvcmRlciB7XFxuICAmOjphZnRlciB7XFxuICAgIGNvbnRlbnQ6ICcgJztcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICBsZWZ0OiAwO1xcbiAgICB0b3A6IDA7XFxuICAgIGhlaWdodDogMTAwJTtcXG4gICAgd2lkdGg6IDJweDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2UzNGQ1YjtcXG4gIH1cXG59XFxuLndhcm5pbmctYm9yZGVyIHtcXG4gICY6OmFmdGVyIHtcXG4gICAgY29udGVudDogJyAnO1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGxlZnQ6IDA7XFxuICAgIHRvcDogMDtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICB3aWR0aDogMnB4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRiNzg0O1xcbiAgfVxcbn1cXG4uZXJyb3ItY29udGFpbmVyIHtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0cmFuc2l0aW9uOiBoZWlnaHQgMC4zcyBlYXNlLW91dDtcXG4gIGhlaWdodDogYXV0bztcXG59XFxuXFxuLmxpc3QtaW5kZXgge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgcGFkZGluZy1sZWZ0OiAyNHB4O1xcblxcbiAgJjphZnRlciB7XFxuICAgIGNvbnRlbnQ6ICcgJztcXG4gICAgei1pbmRleDogMTA7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgaGVpZ2h0OiA0cHg7XFxuICAgIHdpZHRoOiA0cHg7XFxuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XFxuICAgIGxlZnQ6IDhweDtcXG4gICAgdG9wOiA1MCU7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcXG4gICAgYmFja2dyb3VuZDogIzJhMmYzMDtcXG4gIH1cXG59XFxuLmNvbnRhaW5lciB7XFxuICBAYXBwbHkgaC0wIG92ZXJmbG93LWhpZGRlbiBweC00IHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMDtcXG59XFxuLmVycm9yLWVsZW1lbnQ6bm90KDpsYXN0LW9mLXR5cGUpIHtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZDVkY2RlO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIucGFnZS1oZWlnaHQge1xcbiAgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIDYwcHgpO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5SW5kZXgudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNBO0VBQ0UsOEJBQUE7QUFBRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4ucGFnZS1oZWlnaHQge1xcbiAgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIDYwcHgpO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuZm9ybS1ncm91cFtkYXRhLXYtYzdjYTI4YjhdIHtcXG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcXG4gIGJvcmRlci13aWR0aDogMXB4O1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1uLTIwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG4gIHBhZGRpbmc6IDEuMjVyZW07XFxufVxcbi5mb3JtLWdyb3VwW2RhdGEtdi1jN2NhMjhiOF06bGFzdC1jaGlsZCB7XFxuICBtYXJnaW4tYm90dG9tOiAwO1xcbn1cXG4uZm9ybS1ncm91cCAuZm9ybV9fY29udGVudFtkYXRhLXYtYzdjYTI4YjhdIHtcXG4gIG1hcmdpbi10b3A6IDA7XFxuICBnYXA6IDI1cHg7XFxufVxcbi5mb3JtLWdyb3VwIC5mb3JtX19jb250ZW50IC5sYWJlbC1maWVsZFtkYXRhLXYtYzdjYTI4YjhdIHtcXG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbn1cXG4uZm9ybS1ncm91cC10aXRsZS1jb250YWluZXJbZGF0YS12LWM3Y2EyOGI4XSB7XFxuICBtYXJnaW4tYm90dG9tOiAwLjM3NXJlbTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxufVxcbi5mb3JtLWdyb3VwLXRpdGxlLWNvbnRhaW5lcltkYXRhLXYtYzdjYTI4YjhdID4gOm5vdChbaGlkZGVuXSkgfiA6bm90KFtoaWRkZW5dKSB7XFxuICAtLXR3LXNwYWNlLXgtcmV2ZXJzZTogMDtcXG4gIG1hcmdpbi1yaWdodDogY2FsYygwLjI1cmVtICogdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSk7XFxuICBtYXJnaW4tbGVmdDogY2FsYygwLjI1cmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSkpO1xcbn1cXG4uZm9ybS1ncm91cC10aXRsZVtkYXRhLXYtYzdjYTI4YjhdIHtcXG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxcmVtO1xcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQ3JlYXRlTW9kYWwudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0VBQUEscUJBQUE7RUFBQSxpQkFBQTtFQUFBLHNCQUFBO0VBQUEseURBQUE7RUFBQSxnQkFBQTtBQUFBO0FBRUE7RUFDRSxnQkFBQTtBQUFKO0FBR0U7RUFDRSxhQUFBO0VBQ0EsU0FBQTtBQURKO0FBSU07RUFBQSxxQkFBQTtFQUFBLGFBQUE7RUFBQSxtQkFBQTtFQUFBLDhCQUFBO0FBQUE7QUFLSjtFQUFBLHVCQUFBO0VBQUEsYUFBQTtBQUFBO0FBQUE7RUFBQSx1QkFBQTtFQUFBLHVEQUFBO0VBQUEsZ0VBQUE7QUFBQTtBQUdBO0VBQUEsa0JBQUE7RUFBQSxpQkFBQTtFQUFBLGdCQUFBO0VBQUEsb0JBQUE7RUFBQSxxREFBQTtBQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5mb3JtLWdyb3VwIHtcXG4gIEBhcHBseSByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItbi0yMCBwLTU7XFxuXFxuICAmOmxhc3QtY2hpbGQge1xcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xcbiAgfVxcblxcbiAgLmZvcm1fX2NvbnRlbnQge1xcbiAgICBtYXJnaW4tdG9wOiAwO1xcbiAgICBnYXA6IDI1cHg7XFxuXFxuICAgIC5sYWJlbC1maWVsZCB7XFxuICAgICAgQGFwcGx5IG1iLTIgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuO1xcbiAgICB9XFxuICB9XFxufVxcbi5mb3JtLWdyb3VwLXRpdGxlLWNvbnRhaW5lciB7XFxuICBAYXBwbHkgbWItMS41IGZsZXggc3BhY2UteC0xO1xcbn1cXG4uZm9ybS1ncm91cC10aXRsZSB7XFxuICBAYXBwbHkgdGV4dC14cyBmb250LWJvbGQgdGV4dC1ibHVlY29yYWw7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5hY2NvcmRpb24tY29udGVudFtkYXRhLXYtMDYzY2JkODZdIHtcXG4gIGhlaWdodDogMHB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IGFsbDtcXG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNTAwbXM7XFxufVxcbi5hY2NvcmRpb24tY29udGVudCBkaXZbZGF0YS12LTA2M2NiZDg2XSB7XFxuICBtYXJnaW4tdG9wOiAxcmVtO1xcbiAgYm9yZGVyLXRvcC13aWR0aDogMXB4O1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1uLTIwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG4gIHBhZGRpbmctdG9wOiAwLjc1cmVtO1xcbiAgcGFkZGluZy1ib3R0b206IDAuNzVyZW07XFxufVxcbi5hY3Rpdml0eS10aXRsZVtkYXRhLXYtMDYzY2JkODZdIHtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL0Vycm9ySXRlbS52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxXQUFBO0VBQUEsZ0JBQUE7RUFBQSx3QkFBQTtFQUFBLHdEQUFBO0VBQUEsMEJBQUE7QUFBQTtBQUVFO0VBQUEsZ0JBQUE7RUFBQSxxQkFBQTtFQUFBLHNCQUFBO0VBQUEseURBQUE7RUFBQSxvQkFBQTtFQUFBLHVCQUFBO0FBQUE7QUFJSjtFQUNFLG1CQUFBO0VBQ0EsZ0JBQUE7RUFDQSx1QkFBQTtBQUFGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5hY2NvcmRpb24tY29udGVudCB7XFxuICBAYXBwbHkgaC0wIG92ZXJmbG93LWhpZGRlbiB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDA7XFxuICBkaXYge1xcbiAgICBAYXBwbHkgbXQtNCBib3JkZXItdCBib3JkZXItbi0yMCBweS0zO1xcbiAgfVxcbn1cXG5cXG4uYWN0aXZpdHktdGl0bGUge1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmFjdGl2aXRpZXMge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbn1cXG4uYWN0aXZpdGllcyAuZWxlbWVudHMge1xcbiAgYm9yZGVyLXJhZGl1czogMHB4IDhweCA4cHggMHB4O1xcbiAgd2lkdGg6IDEyNXB4O1xcbiAgbWluLWhlaWdodDogMTc0cHg7XFxufVxcbi5hY3Rpdml0aWVzIC5lbGVtZW50c19fcGFuZWwge1xcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xcbiAgcGFkZGluZzogMXJlbTtcXG4gIC0tdHctc2hhZG93OiAwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xcbiAgLS10dy1zaGFkb3ctY29sb3JlZDogMHB4IDRweCA0MHB4IHZhcigtLXR3LXNoYWRvdy1jb2xvcik7XFxuICBib3gtc2hhZG93OiB2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3csIDAgMCAjMDAwMCksIHZhcigtLXR3LXJpbmctc2hhZG93LCAwIDAgIzAwMDApLCB2YXIoLS10dy1zaGFkb3cpO1xcbn1cXG4uYWN0aXZpdGllcyAuZWxlbWVudHNfX3BhbmVsIC5wYW5lbF9faW5wdXQ6Zm9jdXMsIFxcbi5hY3Rpdml0aWVzIC5lbGVtZW50c19fcGFuZWwgLnBhbmVsX19zZWFyY2g6Zm9jdXMge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTQwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbi5hY3Rpdml0aWVzIC5ob3Zlcl9fdGV4dCB7XFxuICBtYXJnaW4tbGVmdDogMC4yNXJlbTtcXG59XFxuLmFjdGl2aXRpZXMgLmJ1dHRvbl9fZHJvcGRvd24ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcmlnaHQ6IDBweDtcXG4gIHRvcDogMTAwJTtcXG4gIHotaW5kZXg6IDEwO1xcbiAgdGV4dC1hbGlnbjogbGVmdDtcXG4gIC0tdHctc2hhZG93OiAwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xcbiAgLS10dy1zaGFkb3ctY29sb3JlZDogMHB4IDRweCA0MHB4IHZhcigtLXR3LXNoYWRvdy1jb2xvcik7XFxuICBib3gtc2hhZG93OiB2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3csIDAgMCAjMDAwMCksIHZhcigtLXR3LXJpbmctc2hhZG93LCAwIDAgIzAwMDApLCB2YXIoLS10dy1zaGFkb3cpO1xcbiAgbWluLXdpZHRoOiAxNTBweDtcXG59XFxuLmFjdGl2aXRpZXMgLmJ1dHRvbl9fZHJvcGRvd24gbGkge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIHBhZGRpbmctdG9wOiAwLjM3NXJlbTtcXG4gIHBhZGRpbmctYm90dG9tOiAwLjM3NXJlbTtcXG4gIHBhZGRpbmctbGVmdDogMC44NzVyZW07XFxuICBwYWRkaW5nLXJpZ2h0OiAwLjg3NXJlbTtcXG59XFxuLmFjdGl2aXRpZXMgLmJ1dHRvbl9fZHJvcGRvd24gbGk6aG92ZXIge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS13aGl0ZSksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG59XFxuLmFjdGl2aXRpZXMgLmJ1dHRvbl9fZHJvcGRvd24gbGkgc3ZnIHtcXG4gIG1hcmdpbi1yaWdodDogMC4yNXJlbTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0aWVzRWxlbWVudHMudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNBO0VBQ0Usa0JBQUE7QUFBRjtBQUNFO0VBQ0UsOEJBQUE7RUFDQSxZQUFBO0VBQ0EsaUJBQUE7QUFDSjtBQUdJO0VBQUEscUJBQUE7RUFBQSxhQUFBO0VBQUEsNENBQUE7RUFBQSx3REFBQTtFQUFBLHVHQUFBO0FBQUE7QUFJRTs7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0FBQUE7QUFLRjtFQUFBLG9CQUFBO0FBQUE7QUFHQTtFQUFBLGtCQUFBO0VBQUEsVUFBQTtFQUFBLFNBQUE7RUFBQSxXQUFBO0VBQUEsZ0JBQUE7RUFBQSw0Q0FBQTtFQUFBLHdEQUFBO0VBQUEsdUdBQUE7RUFDQSxnQkFBQTtBQURBO0FBSUU7RUFBQSxhQUFBO0VBQUEscUJBQUE7RUFBQSx3QkFBQTtFQUFBLHNCQUFBO0VBQUEsdUJBQUE7QUFBQTtBQUFBO0VBQUEsa0JBQUE7RUFBQSwwREFBQTtBQUFBO0FBR0U7RUFBQSxxQkFBQTtBQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5hY3Rpdml0aWVzIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIC5lbGVtZW50cyB7XFxuICAgIGJvcmRlci1yYWRpdXM6IDBweCA4cHggOHB4IDBweDtcXG4gICAgd2lkdGg6IDEyNXB4O1xcbiAgICBtaW4taGVpZ2h0OiAxNzRweDtcXG4gIH1cXG5cXG4gIC5lbGVtZW50c19fcGFuZWwge1xcbiAgICBAYXBwbHkgcm91bmRlZC1sZyBwLTQgc2hhZG93LWRyb3Bkb3duO1xcblxcbiAgICAucGFuZWxfX2lucHV0OmZvY3VzLFxcbiAgICAucGFuZWxfX3NlYXJjaDpmb2N1cyB7XFxuICAgICAgQGFwcGx5IHRleHQtbi00MDtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmhvdmVyX190ZXh0IHtcXG4gICAgQGFwcGx5IG1sLTE7XFxuICB9XFxuICAuYnV0dG9uX19kcm9wZG93biB7XFxuICAgIEBhcHBseSBhYnNvbHV0ZSByaWdodC0wIHRvcC1mdWxsIHotMTAgdGV4dC1sZWZ0IHNoYWRvdy1kcm9wZG93bjtcXG4gICAgbWluLXdpZHRoOiAxNTBweDtcXG5cXG4gICAgbGkge1xcbiAgICAgIEBhcHBseSBmbGV4IHB5LTEuNSBweC0zLjUgaG92ZXI6Ymctd2hpdGU7XFxuXFxuICAgICAgc3ZnIHtcXG4gICAgICAgIEBhcHBseSBtci0xO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuc3Bpbm5lcltkYXRhLXYtNjYxZTZmOGVdIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9ja1xcbn1cXG5ALXdlYmtpdC1rZXlmcmFtZXMgc3Bpbi02NjFlNmY4ZSB7XFxudG8ge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpXFxufVxcbn1cXG5Aa2V5ZnJhbWVzIHNwaW4tNjYxZTZmOGUge1xcbnRvIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKVxcbn1cXG59XFxuLnNwaW5uZXJbZGF0YS12LTY2MWU2ZjhlXSB7XFxuICAtd2Via2l0LWFuaW1hdGlvbjogc3Bpbi02NjFlNmY4ZSAxcyBsaW5lYXIgaW5maW5pdGU7XFxuICAgICAgICAgIGFuaW1hdGlvbjogc3Bpbi02NjFlNmY4ZSAxcyBsaW5lYXIgaW5maW5pdGU7XFxuICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XFxuICBib3JkZXItd2lkdGg6IDJweDtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1uLTEwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDAuMDU7XFxuICB3aWR0aDogNzVweDtcXG4gIGhlaWdodDogNzVweDtcXG4gIGJvcmRlci10b3AtY29sb3I6IHdoaXRlXFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQTtBQUFBO0FBQUE7QUFBQTtFQUFBLG1EQUFBO1VBQUEsMkNBQUE7RUFBQSxxQkFBQTtFQUFBLGlCQUFBO0VBQUEseURBQUE7RUFBQSx5QkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0E7QUFIQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4uc3Bpbm5lciB7XFxuICBAYXBwbHkgaW5saW5lLWJsb2NrICBhbmltYXRlLXNwaW4gcm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci1uLTEwIGJvcmRlci1vcGFjaXR5LTU7XFxuICB3aWR0aDogNzVweDtcXG4gIGhlaWdodDogNzVweDtcXG4gIGJvcmRlci10b3AtY29sb3I6IHdoaXRlO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuYWN0aXZlTmF2IHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuLm5hdmxpc3Qtd2lkdGgge1xcbiAgd2lkdGg6IDEwMHB4O1xcbn1cXG4udGV4dC1zZW1pLWRhcmsge1xcbiAgY29sb3I6ICMyYTJmMzAgIWltcG9ydGFudDtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0VBQUEsa0JBQUE7RUFBQSxzQkFBQTtFQUFBLGtCQUFBO0VBQUEsOERBQUE7RUFBQSxvQkFBQTtFQUFBLGlEQUFBO0FBQUE7QUFHRjtFQUNFLFlBQUE7QUFBRjtBQUdBO0VBQ0UseUJBQUE7QUFBRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4uYWN0aXZlTmF2IHtcXG4gIEBhcHBseSByZWxhdGl2ZSAgcm91bmRlZCBiZy1ibHVlY29yYWwgdGV4dC13aGl0ZTtcXG59XFxuXFxuLm5hdmxpc3Qtd2lkdGgge1xcbiAgd2lkdGg6IDEwMHB4O1xcbn1cXG5cXG4udGV4dC1zZW1pLWRhcmsge1xcbiAgY29sb3I6ICMyYTJmMzAgIWltcG9ydGFudDtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnVwbG9hZC1lcnJvcltkYXRhLXYtNDBkNzg3MGFdIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwKSAhaW1wb3J0YW50O1xcbiAgei1pbmRleDogMTtcXG59XFxuLnVwbG9hZC1lcnJvcltkYXRhLXYtNDBkNzg3MGFdOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIGhlaWdodDogNjhweDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjZDEwMDFlO1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYxZjA7XFxuICB6LWluZGV4OiAtMTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvSW1wb3J0TGlzdC52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQ0E7RUFDRSw2QkFBQTtFQUNBLHVDQUFBO0VBQ0EsVUFBQTtBQUFGO0FBRUU7RUFDRSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsV0FBQTtFQUNBLDhCQUFBO0VBQ0EsT0FBQTtFQUNBLE1BQUE7RUFDQSx5QkFBQTtFQUNBLFdBQUE7QUFBSlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4udXBsb2FkLWVycm9yIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwKSAhaW1wb3J0YW50O1xcbiAgei1pbmRleDogMTtcXG5cXG4gICY6OmFmdGVyIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICBjb250ZW50OiAnJztcXG4gICAgaGVpZ2h0OiA2OHB4O1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjZDEwMDFlO1xcbiAgICBsZWZ0OiAwO1xcbiAgICB0b3A6IDA7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYxZjA7XFxuICAgIHotaW5kZXg6IC0xO1xcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIubWFuZGF0b3J5OjphZnRlciB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHdpZHRoOiAwLjVweDtcXG4gIGhlaWdodDogMTQwcHg7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDAuMjVyZW07XFxuICByaWdodDogLTEuNXJlbTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tbi0yMCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG59XFxuLmVsZW1lbnQge1xcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcXG4gIG1hcmdpbi1sZWZ0OiAwLjVyZW07XFxufVxcbi5lbGVtZW50X19pbm5lciB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbn1cXG4uZWxlbWVudF9faW5uZXIgPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gIC0tdHctc3BhY2UteC1yZXZlcnNlOiAwO1xcbiAgbWFyZ2luLXJpZ2h0OiBjYWxjKDAuNjI1cmVtICogdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSk7XFxuICBtYXJnaW4tbGVmdDogY2FsYygwLjYyNXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpKTtcXG59XFxuLmVsZW1lbnRfX25vdGVzIHtcXG4gIGhlaWdodDogMXJlbTtcXG4gIHdpZHRoOiAycmVtO1xcbiAgYm9yZGVyLXJhZGl1czogMC4xMjVyZW07XFxuICBib3JkZXItd2lkdGg6IDFweDtcXG59XFxuLmVsZW1lbnRfX3NlYXJjaCB7XFxuICBtYXJnaW4tdG9wOiAxcmVtO1xcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcXG4gIGhlaWdodDogMi41cmVtO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xcbiAgYm9yZGVyLXdpZHRoOiAxcHg7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLW4tMzApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS13aGl0ZSksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHBhZGRpbmctdG9wOiAwLjc1cmVtO1xcbiAgcGFkZGluZy1ib3R0b206IDAuNzVyZW07XFxuICBwYWRkaW5nLXJpZ2h0OiAwLjc1cmVtO1xcbiAgcGFkZGluZy1sZWZ0OiAyLjVyZW07XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNDApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG4gIG91dGxpbmU6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIG91dGxpbmUtb2Zmc2V0OiAycHg7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAzMDBtcztcXG59XFxuLmVsZW1lbnRfX3NlYXJjaDo6LW1vei1wbGFjZWhvbGRlciB7XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tMzApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDMwMG1zO1xcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XFxufVxcbi5lbGVtZW50X19zZWFyY2g6OnBsYWNlaG9sZGVyIHtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi0zMCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMzAwbXM7XFxuICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcXG59XFxuLmVsZW1lbnRfX3NlYXJjaDpmb2N1czo6LW1vei1wbGFjZWhvbGRlciB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNDApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuLmVsZW1lbnRfX3NlYXJjaDpmb2N1czo6cGxhY2Vob2xkZXIge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTQwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbi50YWJfX2xpbmtzIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIHBhZGRpbmctbGVmdDogMC41cmVtO1xcbiAgcGFkZGluZy1yaWdodDogMC41cmVtO1xcbiAgcGFkZGluZy1ib3R0b206IDEuNXJlbTtcXG59XFxuLnRhYl9fbGlua3M6OmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgYm90dG9tOiAwcHg7XFxuICBsZWZ0OiAwcHg7XFxuICBoZWlnaHQ6IDAuMjVyZW07XFxuICB3aWR0aDogMTAwJTtcXG4gIC0tdHctc2NhbGUteDogMDtcXG4gIC0tdHctc2NhbGUteTogMDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKHZhcigtLXR3LXRyYW5zbGF0ZS14KSwgdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tld1godmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAzMDBtcztcXG59XFxuLnRhYl9fbGlua3M6aG92ZXI6OmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gIC0tdHctc2NhbGUteDogMTtcXG4gIC0tdHctc2NhbGUteTogMTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKHZhcigtLXR3LXRyYW5zbGF0ZS14KSwgdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tld1godmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpO1xcbn1cXG4udGFiX19saW5rcy0tYWN0aXZlIHtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4udGFiX19saW5rcy0tYWN0aXZlOjphZnRlciB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGJvdHRvbTogMHB4O1xcbiAgbGVmdDogMHB4O1xcbiAgaGVpZ2h0OiAwLjI1cmVtO1xcbiAgd2lkdGg6IDEwMCU7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDMwMG1zO1xcbn1cXG4uc2VwYXJhdG9yIHtcXG4gIG1hcmdpbi1sZWZ0OiAxcmVtO1xcbiAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xcbn1cXG4ubGFzdCB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tMzApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRGF0YS52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQ0E7RUFDRSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxrQkFBQTtFQUFBLFlBQUE7RUFBQSxjQUFBO0VBQUEsa0JBQUE7RUFBQSx5REFBQTtBQUFGO0FBSUU7RUFBQSxzQkFBQTtFQUFBLG1CQUFBO0FBQUE7QUFHRTtFQUFBLGFBQUE7QUFBQTtBQUFBO0VBQUEsdUJBQUE7RUFBQSx3REFBQTtFQUFBLGlFQUFBO0FBQUE7QUFJQTtFQUFBLFlBQUE7RUFBQSxXQUFBO0VBQUEsdUJBQUE7RUFBQSxpQkFBQTtBQUFBO0FBS0Y7RUFBQSxnQkFBQTtFQUFBLG1CQUFBO0VBQUEsY0FBQTtFQUFBLFdBQUE7RUFBQSxzQkFBQTtFQUFBLGlCQUFBO0VBQUEsc0JBQUE7RUFBQSx5REFBQTtFQUFBLGtCQUFBO0VBQUEsMERBQUE7RUFBQSxvQkFBQTtFQUFBLHVCQUFBO0VBQUEsc0JBQUE7RUFBQSxvQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7RUFBQSw4QkFBQTtFQUFBLG1CQUFBO0VBQUEsMEJBQUE7QUFBQTtBQUdFO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7RUFBQSwwQkFBQTtFQUNBLHVCQUFBO0FBREE7QUFBQTtFQUFBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0VBQUEsMEJBQUE7RUFDQSx1QkFBQTtBQURBO0FBS0E7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0FBQUE7QUFBQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7QUFBQTtBQUtGO0VBQUEsa0JBQUE7RUFBQSxlQUFBO0VBQUEsb0JBQUE7RUFBQSxxQkFBQTtFQUFBLHNCQUFBO0FBQUE7QUFFQTtFQUNFLFdBQUE7RUFDQSxrQkFBQTtFQUFBLFdBQUE7RUFBQSxTQUFBO0VBQUEsZUFBQTtFQUFBLFdBQUE7RUFBQSxlQUFBO0VBQUEsZUFBQTtFQUFBLCtMQUFBO0VBQUEsa0JBQUE7RUFBQSw4REFBQTtFQUFBLDBCQUFBO0FBSko7QUFPRTtFQUNFLFdBQUE7RUFDQSxtQkFBQTtFQUFBLGVBQUE7RUFBQSxlQUFBO0VBQUEsK0xBQUE7QUFMSjtBQVNJO0VBQUEsZ0JBQUE7RUFBQSxvQkFBQTtFQUFBLHFEQUFBO0FBQUE7QUFJSjtFQUNFLFdBQUE7RUFDQSxrQkFBQTtFQUFBLFdBQUE7RUFBQSxTQUFBO0VBQUEsZUFBQTtFQUFBLFdBQUE7RUFBQSxrQkFBQTtFQUFBLDhEQUFBO0VBQUEsMEJBQUE7QUFQRjtBQVdFO0VBQUEsaUJBQUE7RUFBQSxrQkFBQTtBQUFBO0FBSUE7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0FBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLm1hbmRhdG9yeTo6YWZ0ZXIge1xcbiAgY29udGVudDogJyc7XFxuICB3aWR0aDogMC41cHg7XFxuICBoZWlnaHQ6IDE0MHB4O1xcbiAgQGFwcGx5IGFic29sdXRlIHRvcC0xIC1yaWdodC02IGJnLW4tMjA7XFxufVxcblxcbi5lbGVtZW50IHtcXG4gIEBhcHBseSBtYi0zIG1sLTI7XFxuXFxuICAmX19pbm5lciB7XFxuICAgIEBhcHBseSBmbGV4IHNwYWNlLXgtMi41O1xcbiAgfVxcblxcbiAgJl9fbm90ZXMge1xcbiAgICBAYXBwbHkgaC00IHctOCByb3VuZGVkLXNtIGJvcmRlcjtcXG4gIH1cXG59XFxuXFxuLmVsZW1lbnRfX3NlYXJjaCB7XFxuICBAYXBwbHkgbXktNCBoLTEwIHctZnVsbCByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCBiZy13aGl0ZSBweS0zIHByLTMgcGwtMTAgdGV4dC1uLTQwIG91dGxpbmUtbm9uZSBkdXJhdGlvbi0zMDA7XFxuXFxuICAmOjpwbGFjZWhvbGRlciB7XFxuICAgIEBhcHBseSB0ZXh0LXNtIHRleHQtbi0zMCBkdXJhdGlvbi0zMDA7XFxuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xcbiAgfVxcblxcbiAgJjpmb2N1czo6cGxhY2Vob2xkZXIge1xcbiAgICBAYXBwbHkgdGV4dC1uLTQwO1xcbiAgfVxcbn1cXG5cXG4udGFiX19saW5rcyB7XFxuICBAYXBwbHkgcmVsYXRpdmUgY3Vyc29yLXBvaW50ZXIgcHgtMiBwYi02O1xcblxcbiAgJjo6YWZ0ZXIge1xcbiAgICBjb250ZW50OiAnJztcXG4gICAgQGFwcGx5IGFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCBoLTEgdy1mdWxsIHNjYWxlLTAgYmctYmx1ZWNvcmFsIGR1cmF0aW9uLTMwMDtcXG4gIH1cXG5cXG4gICY6aG92ZXI6OmFmdGVyIHtcXG4gICAgY29udGVudDogJyc7XFxuICAgIEBhcHBseSB2aXNpYmxlIHNjYWxlLTEwMDtcXG4gIH1cXG5cXG4gICYtLWFjdGl2ZSB7XFxuICAgIEBhcHBseSBmb250LWJvbGQgdGV4dC1ibHVlY29yYWw7XFxuICB9XFxufVxcblxcbi50YWJfX2xpbmtzLS1hY3RpdmU6OmFmdGVyIHtcXG4gIGNvbnRlbnQ6ICcnO1xcbiAgQGFwcGx5IGFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCBoLTEgdy1mdWxsIGJnLWJsdWVjb3JhbCBkdXJhdGlvbi0zMDA7XFxufVxcblxcbi5zZXBhcmF0b3Ige1xcbiAgQGFwcGx5IG14LTQ7XFxufVxcblxcbi5sYXN0IHtcXG4gIEBhcHBseSB0ZXh0LW4tMzA7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5yZXNldCB7XFxuICBib3gtc2hhZG93OiAwcHggMjBweCA0MHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcXG4gIG1hcmdpbi1sZWZ0OiAwLjc1cmVtO1xcbiAgbWFyZ2luLXJpZ2h0OiAwLjc1cmVtO1xcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS13aGl0ZSksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHBhZGRpbmc6IDEuMjVyZW07XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ0MHB4KSB7XFxuLnJlc2V0IHtcXG4gICAgcGFkZGluZzogMi41cmVtO1xcbn1cXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucmVzZXQge1xcbiAgICB3aWR0aDogNTgzcHg7XFxuICAgIG1hcmdpbjogYXV0bztcXG4gICAgcGFkZGluZzogNnJlbTtcXG59XFxufVxcbi5yZXNldF9fY29udGVudCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG59XFxuLnJlc2V0X19jb250ZW50IC5pbnB1dCB7XFxuICBtYXJnaW4tdG9wOiAwLjVyZW07XFxuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XFxuICBwYWRkaW5nLXRvcDogMS4yNXJlbTtcXG4gIHBhZGRpbmctYm90dG9tOiAxLjI1cmVtO1xcbn1cXG4ucmVzZXRfX2NvbnRlbnQgLmxvY2staWNvbiB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAxLjVyZW07XFxuICBmb250LXNpemU6IDEuMTI1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuNzVyZW07XFxuICB0b3A6IDQ3cHg7XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuLnJlc2V0X19jb250ZW50IC5sb2NrLWljb24ge1xcbiAgICB0b3A6IDUwcHg7XFxuICAgIGZvbnQtc2l6ZTogMjBweDtcXG59XFxufVxcbi5yZXNldF9fY29udGVudCAubWFpbC1pY29uIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDEuNXJlbTtcXG4gIHRvcDogNDdweDtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucmVzZXRfX2NvbnRlbnQgLm1haWwtaWNvbiB7XFxuICAgIHRvcDogNTFweDtcXG59XFxufVxcbi5yZXNldCBoMiB7XFxuICBmb250LXNpemU6IDI0cHg7XFxuICBmb250LXdlaWdodDogNzAwO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTUwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xcbi5yZXNldCBoMiB7XFxuICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcXG59XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuLnJlc2V0IGgyIHtcXG4gICAgZm9udC1zaXplOiA0MHB4O1xcbiAgICBsaW5lLWhlaWdodDogNjBweDtcXG59XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ0MHB4KSB7XFxuLnJlc2V0IGgyIHtcXG4gICAgZm9udC1zaXplOiAzMnB4O1xcbiAgICBsaW5lLWhlaWdodDogNTBweDtcXG59XFxufVxcbi5yZXNldCBwIHtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi00MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucmVzZXQgcCB7XFxuICAgIGZvbnQtc2l6ZTogMXJlbTtcXG4gICAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcXG59XFxufVxcbi5yZXNldCAucmVzZXQtYnRuIHtcXG4gIG1hcmdpbi10b3A6IDAuNzVyZW07XFxuICB3aWR0aDogMTAwJTtcXG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxcmVtO1xcbiAgcGFkZGluZzogMTRweDtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucmVzZXQgLnJlc2V0LWJ0biB7XFxuICAgIHBhZGRpbmc6IDE4cHggOTRweDtcXG4gICAgZm9udC1zaXplOiAxNHB4O1xcbn1cXG59XFxuLnJlc2V0IC52ZXJpZmljYXRpb24ge1xcbiAgZm9udC1zaXplOiAxNTBweDtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucmVzZXQgLnZlcmlmaWNhdGlvbiB7XFxuICAgIGZvbnQtc2l6ZTogMTkwcHg7XFxufVxcbn1cXG4ucmVzZXRfX3Bhc3N3b3JkIHtcXG4gIGhlaWdodDogNjEwcHg7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYWdlLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFDQTtFQVdFLGtEQUFBO0VBQ0Esb0JBQUE7RUFBQSxxQkFBQTtFQUFBLHFCQUFBO0VBQUEsa0JBQUE7RUFBQSwwREFBQTtFQUFBLGdCQUFBO0FBVkY7QUFERTtBQUNFO0lBQUEsZUFBQTtBQUFBO0FBS0o7QUFGRTtBQUxGO0lBTUksWUFBQTtJQUNBLFlBQUE7SUFFQSxhQUFBO0FBSUY7QUFDRjtBQUNJO0VBQUEsa0JBQUE7RUFBQSxhQUFBO0VBQUEsc0JBQUE7QUFBQTtBQUdFO0VBQUEsa0JBQUE7RUFBQSxxQkFBQTtFQUFBLG9CQUFBO0VBQUEsdUJBQUE7QUFBQTtBQUlBO0VBQUEsa0JBQUE7RUFBQSxZQUFBO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUNBLFNBQUE7QUFEQTtBQUdBO0FBSkY7SUFLSSxTQUFBO0lBQ0EsZUFBQTtBQUVOO0FBQ0Y7QUFFTTtFQUFBLGtCQUFBO0VBQUEsWUFBQTtFQUNBLFNBQUE7QUFEQTtBQUdBO0FBSkY7SUFLSSxTQUFBO0FBRU47QUFDRjtBQVdJO0VBQUEsZUFBQTtFQUFBLGdCQUFBO0VBQUEsb0JBQUE7RUFBQSxnREFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLHFCQUFBO0FBQUE7QUFBQTtBQVRBO0FBQ0U7SUFBQSxlQUFBO0lBQ0EsaUJBQUE7QUFEQTtBQU1OO0FBRkk7QUFDRTtJQUFBLGVBQUE7SUFDQSxpQkFBQTtBQURBO0FBT047QUFESTtFQUFBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEsZUFBQTtJQUFBLG1CQUFBO0FBQUE7QUFBQTtBQUdBO0VBQUEsbUJBQUE7RUFBQSxXQUFBO0VBQUEsa0JBQUE7RUFBQSxpQkFBQTtFQUNBLGFBQUE7QUFEQTtBQUdBO0FBSkY7SUFLSSxrQkFBQTtJQUNBLGVBQUE7QUFLSjtBQUNGO0FBSEU7RUFDRSxnQkFBQTtBQUtKO0FBSEk7QUFIRjtJQUlJLGdCQUFBO0FBTUo7QUFDRjtBQUhBO0VBQ0UsYUFBQTtBQU1GXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5yZXNldCB7XFxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0NDBweCkge1xcbiAgICBAYXBwbHkgcC0xMDtcXG4gIH1cXG5cXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuICAgIHdpZHRoOiA1ODNweDtcXG4gICAgbWFyZ2luOiBhdXRvO1xcblxcbiAgICBAYXBwbHkgcC0yNDtcXG4gIH1cXG4gIGJveC1zaGFkb3c6IDBweCAyMHB4IDQwcHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xcbiAgQGFwcGx5IG14LTMgcm91bmRlZC1sZyBiZy13aGl0ZSBwLTU7XFxuXFxuICAmX19jb250ZW50IHtcXG4gICAgQGFwcGx5IHJlbGF0aXZlIGZsZXggZmxleC1jb2w7XFxuXFxuICAgIC5pbnB1dCB7XFxuICAgICAgQGFwcGx5IG15LTIgcHktNTtcXG4gICAgfVxcblxcbiAgICAubG9jay1pY29uIHtcXG4gICAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC02IHRleHQtbGc7XFxuICAgICAgdG9wOiA0N3B4O1xcblxcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuICAgICAgICB0b3A6IDUwcHg7XFxuICAgICAgICBmb250LXNpemU6IDIwcHg7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC5tYWlsLWljb24ge1xcbiAgICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTY7XFxuICAgICAgdG9wOiA0N3B4O1xcblxcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuICAgICAgICB0b3A6IDUxcHg7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuICBoMiB7XFxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuICAgICAgQGFwcGx5IHRleHQtaGVhZGluZy0zO1xcbiAgICAgIGxpbmUtaGVpZ2h0OiA2MHB4O1xcbiAgICB9XFxuXFxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ0MHB4KSB7XFxuICAgICAgQGFwcGx5IHRleHQtaGVhZGluZy00O1xcbiAgICAgIGxpbmUtaGVpZ2h0OiA1MHB4O1xcbiAgICB9XFxuICAgIEBhcHBseSB0ZXh0LWhlYWRpbmctNSBmb250LWJvbGQgdGV4dC1uLTUwIHNtOm1iLTI7XFxuICB9XFxuICBwIHtcXG4gICAgQGFwcGx5IHRleHQtc20gdGV4dC1uLTQwIHNtOnRleHQtYmFzZTtcXG4gIH1cXG4gIC5yZXNldC1idG4ge1xcbiAgICBAYXBwbHkgbXQtMyB3LWZ1bGwgdGV4dC14cztcXG4gICAgcGFkZGluZzogMTRweDtcXG5cXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4gICAgICBwYWRkaW5nOiAxOHB4IDk0cHg7XFxuICAgICAgZm9udC1zaXplOiAxNHB4O1xcbiAgICB9XFxuICB9XFxuICAudmVyaWZpY2F0aW9uIHtcXG4gICAgZm9udC1zaXplOiAxNTBweDtcXG5cXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4gICAgICBmb250LXNpemU6IDE5MHB4O1xcbiAgICB9XFxuICB9XFxufVxcbi5yZXNldF9fcGFzc3dvcmQge1xcbiAgaGVpZ2h0OiA2MTBweDtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmxhYmVsIHtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNTApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciB7XFxuICBtYXgtd2lkdGg6IDg2NXB4O1xcbiAgbWFyZ2luOiBhdXRvO1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjgwcHgpIHtcXG4uc2VjdGlvbl9fY29udGFpbmVyIHtcXG4gICAgbWF4LXdpZHRoOiAxMjA2cHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLmZlZWRiYWNrIHtcXG4gICAgd2lkdGg6IDcwMnB4O1xcbn1cXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuZmVlZGJhY2sgcCB7XFxuICBsaW5lLWhlaWdodDogMjJweDtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fd3JhcHBlciB7XFxuICBib3gtc2hhZG93OiAwcHggMjBweCA0MHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fd3JhcHBlciAudmVyaWZpY2F0aW9uIHtcXG4gIGZvbnQtc2l6ZTogMTkwcHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3RpdGxlIHtcXG4gIG1hcmdpbi10b3A6IDEuNzVyZW07XFxuICBtYXJnaW4tYm90dG9tOiAxLjc1cmVtO1xcbiAgbWFyZ2luLWxlZnQ6IDAuNzVyZW07XFxuICBtYXJnaW4tcmlnaHQ6IDAuNzVyZW07XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBsaW5lLWhlaWdodDogMS43NXJlbTtcXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fdGl0bGUge1xcbiAgICBsaW5lLWhlaWdodDogMi41cmVtO1xcbn1cXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3RpdGxlIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMi41cmVtO1xcbiAgICBtYXJnaW4tdG9wOiAzLjVyZW07XFxufVxcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0NDBweCkge1xcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3RpdGxlIHtcXG4gICAgbGluZS1oZWlnaHQ6IDIuMjVyZW07XFxufVxcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX190aXRsZSBwIHtcXG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNDApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fdGl0bGUgcCB7XFxuICAgIGZvbnQtc2l6ZTogMXJlbTtcXG4gICAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcXG59XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnJlZ2lzdGVyX19zaWRlYmFyIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tZWdnc2hlbGwpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBwYWRkaW5nOiA5NnB4IDMycHggNDBweDtcXG4gIHdpZHRoOiAzNDRweDtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAucmVnaXN0ZXJfX3NpZGViYXIgdWwge1xcbiAgd2lkdGg6IDI1M3B4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5yZWdpc3Rlcl9fc2lkZWJhciB1bDo6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgd2lkdGg6IDRweDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tbi0yMCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDBweDtcXG4gIHRvcDogMHB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5yZWdpc3Rlcl9fc2lkZWJhciAuZGV0YWlsIHtcXG4gIG1hcmdpbi1sZWZ0OiA0NXB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5yZWdpc3Rlcl9fc2lkZWJhciAubGlzdF9fYWN0aXZlOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAtMXB4O1xcbiAgd2lkdGg6IDZweDtcXG4gIGhlaWdodDogODVweDtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tdHVycXVvaXNlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxuICB6LWluZGV4OiA1O1xcbn1cXG4uZm9ybSB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXdoaXRlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgcGFkZGluZzogMS4yNXJlbTtcXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuLmZvcm0ge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDIuNXJlbTtcXG4gICAgcGFkZGluZy1yaWdodDogMi41cmVtO1xcbiAgICBwYWRkaW5nLXRvcDogMi41cmVtO1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMi41cmVtO1xcbn1cXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xcbi5mb3JtIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA1cmVtO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1cmVtO1xcbn1cXG59XFxuLmZvcm0ge1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogOHB4O1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogOHB4O1xcbiAgd2lkdGg6IDg2MnB4O1xcbn1cXG4uZm9ybV9fY29udGFpbmVyIHtcXG4gIGJvcmRlci1ib3R0b20td2lkdGg6IDJweDtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKHZhcigtLW4tMTApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbiAgbWFyZ2luLWJvdHRvbTogMjRweDtcXG59XFxuLmZvcm1fX2NvbnRhaW5lciAuZXJyb3JfX2lucHV0IHtcXG4gIGJvcmRlci13aWR0aDogMXB4O1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jcmltc29uLTUwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG59XFxuLmZvcm1fX2NvbnRlbnQge1xcbiAgbWFyZ2luLXRvcDogMjRweDtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSB7XFxuLmZvcm1fX2NvbnRlbnQge1xcbiAgICBkaXNwbGF5OiBncmlkO1xcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xcbiAgICBnYXA6IDE2cHg7XFxufVxcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtFQUFBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSxnQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7QUFBQTtBQUlBO0VBSUUsZ0JBQUE7RUFDQSxZQUFBO0FBSko7QUFBSTtBQURGO0lBRUksaUJBQUE7QUFHSjtBQUVFO0lBRUksWUFBQTtBQUNOO0FBSkY7QUFNTTtFQUNFLGlCQUFBO0FBQ1I7QUFHSTtFQUNFLGtEQUFBO0FBRE47QUFHTTtFQUNFLGdCQUFBO0FBRFI7QUFVTTtFQUFBLG1CQUFBO0VBQUEsc0JBQUE7RUFBQSxvQkFBQTtFQUFBLHFCQUFBO0VBQUEsa0JBQUE7RUFBQSxvQkFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLG1CQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQSxxQkFBQTtJQUFBLGtCQUFBO0FBQUE7QUFBQTtBQUpBO0FBQ0U7SUFBQSxvQkFBQTtBQUFBO0FBQ1I7QUFJTTtFQUNFLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxtQkFBQTtFQUFBLG9CQUFBO0VBQUEsb0JBQUE7RUFBQSxnREFBQTtBQUZSO0FBRVE7QUFBQTtJQUFBLGVBQUE7SUFBQSxtQkFBQTtBQUFBO0FBQUE7QUFLRjtFQUFBLGtCQUFBO0VBQUEsNkRBQUE7RUFDQSx1QkFBQTtFQUNBLFlBQUE7QUFGQTtBQUlBO0VBQ0UsWUFBQTtBQUpSO0FBT007RUFDRSxXQUFBO0VBQ0EsVUFBQTtFQUNBLFlBQUE7RUFDQSxrQkFBQTtFQUFBLHlEQUFBO0VBQ0Esa0JBQUE7RUFDQSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxRQUFBO0FBTFI7QUFRTTtFQUNFLGlCQUFBO0FBTlI7QUFTTTtFQUNFLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLFVBQUE7RUFDQSxVQUFBO0VBQ0EsWUFBQTtFQUNBLGtCQUFBO0VBQUEsOERBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBO0FBUFI7QUFjRTtFQUFBLGtCQUFBO0VBQUEsMERBQUE7RUFBQSxnQkFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLG9CQUFBO0lBQUEscUJBQUE7SUFBQSxtQkFBQTtJQUFBLHNCQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQSxrQkFBQTtJQUFBLG1CQUFBO0FBQUE7QUFBQTtBQURGO0VBRUUsMkJBQUE7RUFDQSw4QkFBQTtFQUNBLFlBQUE7QUFWRjtBQWFJO0VBQUEsd0JBQUE7RUFBQSxzQkFBQTtFQUFBLGdFQUFBO0VBQ0EsbUJBQUE7QUFEQTtBQUlFO0VBQUEsaUJBQUE7RUFBQSxzQkFBQTtFQUFBLCtEQUFBO0FBQUE7QUFJSjtFQUNFLGdCQUFBO0FBWko7QUFnQkE7QUFDRTtJQUNFLGFBQUE7SUFDQSxxQ0FBQTtJQUNBLFNBQUE7QUFiRjtBQUNGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5sYWJlbCB7XFxuICBAYXBwbHkgdGV4dC1zbSBmb250LW5vcm1hbCB0ZXh0LW4tNTA7XFxufVxcblxcbi5zZWN0aW9uIHtcXG4gICZfX2NvbnRhaW5lciB7XFxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyODBweCkge1xcbiAgICAgIG1heC13aWR0aDogMTIwNnB4O1xcbiAgICB9XFxuICAgIG1heC13aWR0aDogODY1cHg7XFxuICAgIG1hcmdpbjogYXV0bztcXG5cXG4gICAgLmZlZWRiYWNrIHtcXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjgwcHgpIHtcXG4gICAgICAgIHdpZHRoOiA3MDJweDtcXG4gICAgICB9XFxuXFxuICAgICAgcCB7XFxuICAgICAgICBsaW5lLWhlaWdodDogMjJweDtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgLnNlY3Rpb25fX3dyYXBwZXIge1xcbiAgICAgIGJveC1zaGFkb3c6IDBweCAyMHB4IDQwcHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xcblxcbiAgICAgIC52ZXJpZmljYXRpb24ge1xcbiAgICAgICAgZm9udC1zaXplOiAxOTBweDtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgLnNlY3Rpb25fX3RpdGxlIHtcXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0NDBweCkge1xcbiAgICAgICAgQGFwcGx5IGxlYWRpbmctOTtcXG4gICAgICB9XFxuXFxuICAgICAgQGFwcGx5IG15LTcgbXgtMyB0ZXh0LWNlbnRlciBsZWFkaW5nLTcgc206bGVhZGluZy0xMCBsZzptYi0xMCBsZzptdC0xNDtcXG5cXG4gICAgICBwIHtcXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XFxuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XFxuICAgICAgICBAYXBwbHkgdGV4dC1zbSB0ZXh0LW4tNDAgc206dGV4dC1iYXNlO1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAucmVnaXN0ZXJfX3NpZGViYXIge1xcbiAgICAgIEBhcHBseSBiZy1lZ2dzaGVsbDtcXG4gICAgICBwYWRkaW5nOiA5NnB4IDMycHggNDBweDtcXG4gICAgICB3aWR0aDogMzQ0cHg7XFxuXFxuICAgICAgdWwge1xcbiAgICAgICAgd2lkdGg6IDI1M3B4O1xcbiAgICAgIH1cXG5cXG4gICAgICB1bDo6YmVmb3JlIHtcXG4gICAgICAgIGNvbnRlbnQ6ICcnO1xcbiAgICAgICAgd2lkdGg6IDRweDtcXG4gICAgICAgIGhlaWdodDogMTAwJTtcXG4gICAgICAgIEBhcHBseSBiZy1uLTIwO1xcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgbGVmdDogMHB4O1xcbiAgICAgICAgdG9wOiAwcHg7XFxuICAgICAgfVxcblxcbiAgICAgIC5kZXRhaWwge1xcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDQ1cHg7XFxuICAgICAgfVxcblxcbiAgICAgIC5saXN0X19hY3RpdmU6OmFmdGVyIHtcXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgIHRvcDogMDtcXG4gICAgICAgIGxlZnQ6IC0xcHg7XFxuICAgICAgICB3aWR0aDogNnB4O1xcbiAgICAgICAgaGVpZ2h0OiA4NXB4O1xcbiAgICAgICAgQGFwcGx5IGJnLXR1cnF1b2lzZTtcXG4gICAgICAgIGNvbnRlbnQ6ICcnO1xcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgICAgICAgei1pbmRleDogNTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLmZvcm0ge1xcbiAgQGFwcGx5IGJnLXdoaXRlIHAtNSBzbTpweC0xMCBzbTpweS0xMCBsZzpweC0yMDtcXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDhweDtcXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDhweDtcXG4gIHdpZHRoOiA4NjJweDtcXG5cXG4gICZfX2NvbnRhaW5lciB7XFxuICAgIEBhcHBseSBib3JkZXItYi0yIGJvcmRlci1iLW4tMTA7XFxuICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XFxuXFxuICAgIC5lcnJvcl9faW5wdXQge1xcbiAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLWNyaW1zb24tNTA7XFxuICAgIH1cXG4gIH1cXG5cXG4gICZfX2NvbnRlbnQge1xcbiAgICBtYXJnaW4tdG9wOiAyNHB4O1xcbiAgfVxcbn1cXG5cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcXG4gIC5mb3JtX19jb250ZW50IHtcXG4gICAgZGlzcGxheTogZ3JpZDtcXG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcXG4gICAgZ2FwOiAxNnB4O1xcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIubGFiZWwge1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi01MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIHtcXG4gIG1heC13aWR0aDogODY1cHg7XFxuICBtYXJnaW46IGF1dG87XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyODBweCkge1xcbi5zZWN0aW9uX19jb250YWluZXIge1xcbiAgICBtYXgtd2lkdGg6IDEyMDZweDtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuZmVlZGJhY2sge1xcbiAgICB3aWR0aDogNzAycHg7XFxufVxcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5mZWVkYmFjayBwIHtcXG4gIGxpbmUtaGVpZ2h0OiAyMnB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX193cmFwcGVyIHtcXG4gIGJveC1zaGFkb3c6IDBweCAyMHB4IDQwcHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX193cmFwcGVyIC52ZXJpZmljYXRpb24ge1xcbiAgZm9udC1zaXplOiAxOTBweDtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fdGl0bGUge1xcbiAgbWFyZ2luLXRvcDogMS43NXJlbTtcXG4gIG1hcmdpbi1ib3R0b206IDEuNzVyZW07XFxuICBtYXJnaW4tbGVmdDogMC43NXJlbTtcXG4gIG1hcmdpbi1yaWdodDogMC43NXJlbTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGxpbmUtaGVpZ2h0OiAxLjc1cmVtO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX190aXRsZSB7XFxuICAgIGxpbmUtaGVpZ2h0OiAyLjVyZW07XFxufVxcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fdGl0bGUge1xcbiAgICBtYXJnaW4tYm90dG9tOiAyLjVyZW07XFxuICAgIG1hcmdpbi10b3A6IDMuNXJlbTtcXG59XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ0MHB4KSB7XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fdGl0bGUge1xcbiAgICBsaW5lLWhlaWdodDogMi4yNXJlbTtcXG59XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3RpdGxlIHAge1xcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi00MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX190aXRsZSBwIHtcXG4gICAgZm9udC1zaXplOiAxcmVtO1xcbiAgICBsaW5lLWhlaWdodDogMS41cmVtO1xcbn1cXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAucmVnaXN0ZXJfX3NpZGViYXIge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1lZ2dzaGVsbCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHBhZGRpbmc6IDk2cHggMzJweCA0MHB4O1xcbiAgd2lkdGg6IDM0NHB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5yZWdpc3Rlcl9fc2lkZWJhciB1bCB7XFxuICB3aWR0aDogMjUzcHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnJlZ2lzdGVyX19zaWRlYmFyIHVsOjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICB3aWR0aDogNHB4O1xcbiAgaGVpZ2h0OiAxNzVweDtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tbi0yMCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDBweDtcXG4gIHRvcDogMHB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5yZWdpc3Rlcl9fc2lkZWJhciAuZGV0YWlsIHtcXG4gIG1hcmdpbi1sZWZ0OiA0NXB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5yZWdpc3Rlcl9fc2lkZWJhciAubGlzdF9fYWN0aXZlOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAtMXB4O1xcbiAgd2lkdGg6IDZweDtcXG4gIGhlaWdodDogODVweDtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tdHVycXVvaXNlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxuICB6LWluZGV4OiA1O1xcbn1cXG4uZm9ybSB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXdoaXRlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgcGFkZGluZzogMS4yNXJlbTtcXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuLmZvcm0ge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDIuNXJlbTtcXG4gICAgcGFkZGluZy1yaWdodDogMi41cmVtO1xcbiAgICBwYWRkaW5nLXRvcDogMi41cmVtO1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMi41cmVtO1xcbn1cXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xcbi5mb3JtIHtcXG4gICAgcGFkZGluZy1sZWZ0OiA1cmVtO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA1cmVtO1xcbn1cXG59XFxuLmZvcm0ge1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogOHB4O1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogOHB4O1xcbiAgd2lkdGg6IDg2MnB4O1xcbn1cXG4uZm9ybV9fY29udGFpbmVyIHtcXG4gIGJvcmRlci1ib3R0b20td2lkdGg6IDJweDtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKHZhcigtLW4tMTApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbiAgbWFyZ2luLWJvdHRvbTogMjRweDtcXG59XFxuLmZvcm1fX2NvbnRhaW5lciAuZXJyb3JfX2lucHV0IHtcXG4gIGJvcmRlci13aWR0aDogMXB4O1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jcmltc29uLTUwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG59XFxuLmZvcm1fX2NvbnRlbnQge1xcbiAgbWFyZ2luLXRvcDogMjRweDtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSB7XFxuLmZvcm1fX2NvbnRlbnQge1xcbiAgICBkaXNwbGF5OiBncmlkO1xcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xcbiAgICBnYXA6IDE2cHg7XFxufVxcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9SZWdpc3RlclBhZ2UudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLGdCQUFBO0VBQUEsb0JBQUE7RUFBQSxnREFBQTtBQUFBO0FBSUE7RUFJRSxnQkFBQTtFQUNBLFlBQUE7QUFKSjtBQUFJO0FBREY7SUFFSSxpQkFBQTtBQUdKO0FBRUU7SUFFSSxZQUFBO0FBQ047QUFKRjtBQU1NO0VBQ0UsaUJBQUE7QUFDUjtBQUdJO0VBQ0Usa0RBQUE7QUFETjtBQUdNO0VBQ0UsZ0JBQUE7QUFEUjtBQVVNO0VBQUEsbUJBQUE7RUFBQSxzQkFBQTtFQUFBLG9CQUFBO0VBQUEscUJBQUE7RUFBQSxrQkFBQTtFQUFBLG9CQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEsbUJBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLHFCQUFBO0lBQUEsa0JBQUE7QUFBQTtBQUFBO0FBSkE7QUFDRTtJQUFBLG9CQUFBO0FBQUE7QUFDUjtBQUlNO0VBQ0UsbUJBQUE7RUFDQSxrQkFBQTtFQUNBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0FBRlI7QUFFUTtBQUFBO0lBQUEsZUFBQTtJQUFBLG1CQUFBO0FBQUE7QUFBQTtBQUtGO0VBQUEsa0JBQUE7RUFBQSw2REFBQTtFQUNBLHVCQUFBO0VBQ0EsWUFBQTtBQUZBO0FBSUE7RUFDRSxZQUFBO0FBSlI7QUFPTTtFQUNFLFdBQUE7RUFDQSxVQUFBO0VBQ0EsYUFBQTtFQUNBLGtCQUFBO0VBQUEseURBQUE7RUFDQSxrQkFBQTtFQUNBLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLFFBQUE7QUFMUjtBQVFNO0VBQ0UsaUJBQUE7QUFOUjtBQVNNO0VBQ0Usa0JBQUE7RUFDQSxNQUFBO0VBQ0EsVUFBQTtFQUNBLFVBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7RUFBQSw4REFBQTtFQUNBLFdBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7QUFQUjtBQWNFO0VBQUEsa0JBQUE7RUFBQSwwREFBQTtFQUFBLGdCQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEsb0JBQUE7SUFBQSxxQkFBQTtJQUFBLG1CQUFBO0lBQUEsc0JBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLGtCQUFBO0lBQUEsbUJBQUE7QUFBQTtBQUFBO0FBREY7RUFFRSwyQkFBQTtFQUNBLDhCQUFBO0VBQ0EsWUFBQTtBQVZGO0FBYUk7RUFBQSx3QkFBQTtFQUFBLHNCQUFBO0VBQUEsZ0VBQUE7RUFDQSxtQkFBQTtBQURBO0FBSUU7RUFBQSxpQkFBQTtFQUFBLHNCQUFBO0VBQUEsK0RBQUE7QUFBQTtBQUlKO0VBQ0UsZ0JBQUE7QUFaSjtBQWdCQTtBQUNFO0lBQ0UsYUFBQTtJQUNBLHFDQUFBO0lBQ0EsU0FBQTtBQWJGO0FBQ0ZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLmxhYmVsIHtcXG4gIEBhcHBseSB0ZXh0LXNtIGZvbnQtbm9ybWFsIHRleHQtbi01MDtcXG59XFxuXFxuLnNlY3Rpb24ge1xcbiAgJl9fY29udGFpbmVyIHtcXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTI4MHB4KSB7XFxuICAgICAgbWF4LXdpZHRoOiAxMjA2cHg7XFxuICAgIH1cXG4gICAgbWF4LXdpZHRoOiA4NjVweDtcXG4gICAgbWFyZ2luOiBhdXRvO1xcblxcbiAgICAuZmVlZGJhY2sge1xcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyODBweCkge1xcbiAgICAgICAgd2lkdGg6IDcwMnB4O1xcbiAgICAgIH1cXG5cXG4gICAgICBwIHtcXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyMnB4O1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAuc2VjdGlvbl9fd3JhcHBlciB7XFxuICAgICAgYm94LXNoYWRvdzogMHB4IDIwcHggNDBweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XFxuXFxuICAgICAgLnZlcmlmaWNhdGlvbiB7XFxuICAgICAgICBmb250LXNpemU6IDE5MHB4O1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAuc2VjdGlvbl9fdGl0bGUge1xcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ0MHB4KSB7XFxuICAgICAgICBAYXBwbHkgbGVhZGluZy05O1xcbiAgICAgIH1cXG5cXG4gICAgICBAYXBwbHkgbXktNyBteC0zIHRleHQtY2VudGVyIGxlYWRpbmctNyBzbTpsZWFkaW5nLTEwIGxnOm1iLTEwIGxnOm10LTE0O1xcblxcbiAgICAgIHAge1xcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcXG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG4gICAgICAgIEBhcHBseSB0ZXh0LXNtIHRleHQtbi00MCBzbTp0ZXh0LWJhc2U7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC5yZWdpc3Rlcl9fc2lkZWJhciB7XFxuICAgICAgQGFwcGx5IGJnLWVnZ3NoZWxsO1xcbiAgICAgIHBhZGRpbmc6IDk2cHggMzJweCA0MHB4O1xcbiAgICAgIHdpZHRoOiAzNDRweDtcXG5cXG4gICAgICB1bCB7XFxuICAgICAgICB3aWR0aDogMjUzcHg7XFxuICAgICAgfVxcblxcbiAgICAgIHVsOjpiZWZvcmUge1xcbiAgICAgICAgY29udGVudDogJyc7XFxuICAgICAgICB3aWR0aDogNHB4O1xcbiAgICAgICAgaGVpZ2h0OiAxNzVweDtcXG4gICAgICAgIEBhcHBseSBiZy1uLTIwO1xcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgbGVmdDogMHB4O1xcbiAgICAgICAgdG9wOiAwcHg7XFxuICAgICAgfVxcblxcbiAgICAgIC5kZXRhaWwge1xcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDQ1cHg7XFxuICAgICAgfVxcblxcbiAgICAgIC5saXN0X19hY3RpdmU6OmFmdGVyIHtcXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgIHRvcDogMDtcXG4gICAgICAgIGxlZnQ6IC0xcHg7XFxuICAgICAgICB3aWR0aDogNnB4O1xcbiAgICAgICAgaGVpZ2h0OiA4NXB4O1xcbiAgICAgICAgQGFwcGx5IGJnLXR1cnF1b2lzZTtcXG4gICAgICAgIGNvbnRlbnQ6ICcnO1xcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgICAgICAgei1pbmRleDogNTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLmZvcm0ge1xcbiAgQGFwcGx5IGJnLXdoaXRlIHAtNSBzbTpweC0xMCBzbTpweS0xMCBsZzpweC0yMDtcXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDhweDtcXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDhweDtcXG4gIHdpZHRoOiA4NjJweDtcXG5cXG4gICZfX2NvbnRhaW5lciB7XFxuICAgIEBhcHBseSBib3JkZXItYi0yIGJvcmRlci1iLW4tMTA7XFxuICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XFxuXFxuICAgIC5lcnJvcl9faW5wdXQge1xcbiAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLWNyaW1zb24tNTA7XFxuICAgIH1cXG4gIH1cXG5cXG4gICZfX2NvbnRlbnQge1xcbiAgICBtYXJnaW4tdG9wOiAyNHB4O1xcbiAgfVxcbn1cXG5cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcXG4gIC5mb3JtX19jb250ZW50IHtcXG4gICAgZGlzcGxheTogZ3JpZDtcXG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcXG4gICAgZ2FwOiAxNnB4O1xcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIjYnRuW2RhdGEtdi1hMTg2MWYzZV0ge1xcbiAgcGFkZGluZzogMTNweCAwO1xcbn1cXG4jYnRuIHN2Z1tkYXRhLXYtYTE4NjFmM2VdIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHJpZ2h0OiAxLjc1cmVtO1xcbiAgZm9udC1zaXplOiAxLjVyZW07XFxuICBsaW5lLWhlaWdodDogMnJlbTtcXG4gIHRyYW5zaXRpb246IDAuNHM7XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuI2J0bltkYXRhLXYtYTE4NjFmM2VdIHtcXG4gICAgcGFkZGluZzogMThweCAwO1xcbn1cXG59XFxuLnVzZXJuYW1lW2RhdGEtdi1hMTg2MWYzZV0ge1xcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xcbn1cXG4ucGFzc3dvcmRbZGF0YS12LWExODYxZjNlXSB7XFxuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XFxufVxcbmxhYmVsW2RhdGEtdi1hMTg2MWYzZV0ge1xcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvU2lnbkluLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFDQTtFQUNFLGVBQUE7QUFBRjtBQUdJO0VBQUEsa0JBQUE7RUFBQSxjQUFBO0VBQUEsaUJBQUE7RUFBQSxpQkFBQTtFQUNBLGdCQUFBO0FBREE7QUFJSjtBQUNFO0lBQ0UsZUFBQTtBQUFGO0FBQ0Y7QUFHRTtFQUFBLHFCQUFBO0FBQUE7QUFHQTtFQUFBLHFCQUFBO0FBQUE7QUFHQTtFQUFBLHFCQUFBO0VBQUEsZ0JBQUE7QUFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4jYnRuIHtcXG4gIHBhZGRpbmc6IDEzcHggMDtcXG5cXG4gIHN2ZyB7XFxuICAgIEBhcHBseSBhYnNvbHV0ZSByaWdodC03IHRleHQtMnhsO1xcbiAgICB0cmFuc2l0aW9uOiAwLjRzO1xcbiAgfVxcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbiAgI2J0biB7XFxuICAgIHBhZGRpbmc6IDE4cHggMDtcXG4gIH1cXG59XFxuLnVzZXJuYW1lIHtcXG4gIEBhcHBseSBtYi0yO1xcbn1cXG4ucGFzc3dvcmQge1xcbiAgQGFwcGx5IG1iLTI7XFxufVxcbmxhYmVsIHtcXG4gIEBhcHBseSBtYi0yIGZvbnQtYm9sZDtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmJvcmRlci1ib3R0b21bZGF0YS12LTEwYzllMGIyXSB7XFxuICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNCk7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1dlYkhlYWRlci52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQ0E7RUFDRSx1Q0FBQTtBQUFGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5ib3JkZXItYm90dG9tIHtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI0KTtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IHt9OyIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IHt9OyIsInZhciBtYXAgPSB7XG5cdFwiLi9hZlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYWYuanNcIixcblx0XCIuL2FmLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hZi5qc1wiLFxuXHRcIi4vYXJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLmpzXCIsXG5cdFwiLi9hci1kelwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItZHouanNcIixcblx0XCIuL2FyLWR6LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1kei5qc1wiLFxuXHRcIi4vYXIta3dcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWt3LmpzXCIsXG5cdFwiLi9hci1rdy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXIta3cuanNcIixcblx0XCIuL2FyLWx5XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1seS5qc1wiLFxuXHRcIi4vYXItbHkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWx5LmpzXCIsXG5cdFwiLi9hci1tYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItbWEuanNcIixcblx0XCIuL2FyLW1hLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1tYS5qc1wiLFxuXHRcIi4vYXItc2FcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLXNhLmpzXCIsXG5cdFwiLi9hci1zYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItc2EuanNcIixcblx0XCIuL2FyLXRuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci10bi5qc1wiLFxuXHRcIi4vYXItdG4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLXRuLmpzXCIsXG5cdFwiLi9hci5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXIuanNcIixcblx0XCIuL2F6XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hei5qc1wiLFxuXHRcIi4vYXouanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2F6LmpzXCIsXG5cdFwiLi9iZVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYmUuanNcIixcblx0XCIuL2JlLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iZS5qc1wiLFxuXHRcIi4vYmdcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JnLmpzXCIsXG5cdFwiLi9iZy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYmcuanNcIixcblx0XCIuL2JtXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibS5qc1wiLFxuXHRcIi4vYm0uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JtLmpzXCIsXG5cdFwiLi9iblwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm4uanNcIixcblx0XCIuL2JuLWJkXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibi1iZC5qc1wiLFxuXHRcIi4vYm4tYmQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JuLWJkLmpzXCIsXG5cdFwiLi9ibi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm4uanNcIixcblx0XCIuL2JvXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iby5qc1wiLFxuXHRcIi4vYm8uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JvLmpzXCIsXG5cdFwiLi9iclwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYnIuanNcIixcblx0XCIuL2JyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ici5qc1wiLFxuXHRcIi4vYnNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JzLmpzXCIsXG5cdFwiLi9icy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYnMuanNcIixcblx0XCIuL2NhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jYS5qc1wiLFxuXHRcIi4vY2EuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2NhLmpzXCIsXG5cdFwiLi9jc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3MuanNcIixcblx0XCIuL2NzLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jcy5qc1wiLFxuXHRcIi4vY3ZcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2N2LmpzXCIsXG5cdFwiLi9jdi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3YuanNcIixcblx0XCIuL2N5XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jeS5qc1wiLFxuXHRcIi4vY3kuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2N5LmpzXCIsXG5cdFwiLi9kYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGEuanNcIixcblx0XCIuL2RhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kYS5qc1wiLFxuXHRcIi4vZGVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLmpzXCIsXG5cdFwiLi9kZS1hdFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUtYXQuanNcIixcblx0XCIuL2RlLWF0LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS1hdC5qc1wiLFxuXHRcIi4vZGUtY2hcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLWNoLmpzXCIsXG5cdFwiLi9kZS1jaC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUtY2guanNcIixcblx0XCIuL2RlLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS5qc1wiLFxuXHRcIi4vZHZcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2R2LmpzXCIsXG5cdFwiLi9kdi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZHYuanNcIixcblx0XCIuL2VsXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbC5qc1wiLFxuXHRcIi4vZWwuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VsLmpzXCIsXG5cdFwiLi9lbi1hdVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tYXUuanNcIixcblx0XCIuL2VuLWF1LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1hdS5qc1wiLFxuXHRcIi4vZW4tY2FcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWNhLmpzXCIsXG5cdFwiLi9lbi1jYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tY2EuanNcIixcblx0XCIuL2VuLWdiXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1nYi5qc1wiLFxuXHRcIi4vZW4tZ2IuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWdiLmpzXCIsXG5cdFwiLi9lbi1pZVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4taWUuanNcIixcblx0XCIuL2VuLWllLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pZS5qc1wiLFxuXHRcIi4vZW4taWxcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWlsLmpzXCIsXG5cdFwiLi9lbi1pbC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4taWwuanNcIixcblx0XCIuL2VuLWluXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pbi5qc1wiLFxuXHRcIi4vZW4taW4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWluLmpzXCIsXG5cdFwiLi9lbi1uelwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tbnouanNcIixcblx0XCIuL2VuLW56LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1uei5qc1wiLFxuXHRcIi4vZW4tc2dcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLXNnLmpzXCIsXG5cdFwiLi9lbi1zZy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tc2cuanNcIixcblx0XCIuL2VvXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lby5qc1wiLFxuXHRcIi4vZW8uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VvLmpzXCIsXG5cdFwiLi9lc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMuanNcIixcblx0XCIuL2VzLWRvXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy1kby5qc1wiLFxuXHRcIi4vZXMtZG8uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLWRvLmpzXCIsXG5cdFwiLi9lcy1teFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMtbXguanNcIixcblx0XCIuL2VzLW14LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy1teC5qc1wiLFxuXHRcIi4vZXMtdXNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLXVzLmpzXCIsXG5cdFwiLi9lcy11cy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMtdXMuanNcIixcblx0XCIuL2VzLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy5qc1wiLFxuXHRcIi4vZXRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2V0LmpzXCIsXG5cdFwiLi9ldC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXQuanNcIixcblx0XCIuL2V1XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ldS5qc1wiLFxuXHRcIi4vZXUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2V1LmpzXCIsXG5cdFwiLi9mYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZmEuanNcIixcblx0XCIuL2ZhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mYS5qc1wiLFxuXHRcIi4vZmlcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZpLmpzXCIsXG5cdFwiLi9maS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZmkuanNcIixcblx0XCIuL2ZpbFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZmlsLmpzXCIsXG5cdFwiLi9maWwuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZpbC5qc1wiLFxuXHRcIi4vZm9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZvLmpzXCIsXG5cdFwiLi9mby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZm8uanNcIixcblx0XCIuL2ZyXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci5qc1wiLFxuXHRcIi4vZnItY2FcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLWNhLmpzXCIsXG5cdFwiLi9mci1jYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnItY2EuanNcIixcblx0XCIuL2ZyLWNoXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci1jaC5qc1wiLFxuXHRcIi4vZnItY2guanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLWNoLmpzXCIsXG5cdFwiLi9mci5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnIuanNcIixcblx0XCIuL2Z5XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9meS5qc1wiLFxuXHRcIi4vZnkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2Z5LmpzXCIsXG5cdFwiLi9nYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2EuanNcIixcblx0XCIuL2dhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nYS5qc1wiLFxuXHRcIi4vZ2RcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dkLmpzXCIsXG5cdFwiLi9nZC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2QuanNcIixcblx0XCIuL2dsXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nbC5qc1wiLFxuXHRcIi4vZ2wuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dsLmpzXCIsXG5cdFwiLi9nb20tZGV2YVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ29tLWRldmEuanNcIixcblx0XCIuL2dvbS1kZXZhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nb20tZGV2YS5qc1wiLFxuXHRcIi4vZ29tLWxhdG5cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dvbS1sYXRuLmpzXCIsXG5cdFwiLi9nb20tbGF0bi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ29tLWxhdG4uanNcIixcblx0XCIuL2d1XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ndS5qc1wiLFxuXHRcIi4vZ3UuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2d1LmpzXCIsXG5cdFwiLi9oZVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaGUuanNcIixcblx0XCIuL2hlLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oZS5qc1wiLFxuXHRcIi4vaGlcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hpLmpzXCIsXG5cdFwiLi9oaS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaGkuanNcIixcblx0XCIuL2hyXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oci5qc1wiLFxuXHRcIi4vaHIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hyLmpzXCIsXG5cdFwiLi9odVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHUuanNcIixcblx0XCIuL2h1LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9odS5qc1wiLFxuXHRcIi4vaHktYW1cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2h5LWFtLmpzXCIsXG5cdFwiLi9oeS1hbS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHktYW0uanNcIixcblx0XCIuL2lkXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pZC5qc1wiLFxuXHRcIi4vaWQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2lkLmpzXCIsXG5cdFwiLi9pc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXMuanNcIixcblx0XCIuL2lzLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pcy5qc1wiLFxuXHRcIi4vaXRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2l0LmpzXCIsXG5cdFwiLi9pdC1jaFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXQtY2guanNcIixcblx0XCIuL2l0LWNoLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pdC1jaC5qc1wiLFxuXHRcIi4vaXQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2l0LmpzXCIsXG5cdFwiLi9qYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvamEuanNcIixcblx0XCIuL2phLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9qYS5qc1wiLFxuXHRcIi4vanZcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2p2LmpzXCIsXG5cdFwiLi9qdi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvanYuanNcIixcblx0XCIuL2thXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rYS5qc1wiLFxuXHRcIi4va2EuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2thLmpzXCIsXG5cdFwiLi9ra1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva2suanNcIixcblx0XCIuL2trLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ray5qc1wiLFxuXHRcIi4va21cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ttLmpzXCIsXG5cdFwiLi9rbS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva20uanNcIixcblx0XCIuL2tuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rbi5qc1wiLFxuXHRcIi4va24uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2tuLmpzXCIsXG5cdFwiLi9rb1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva28uanNcIixcblx0XCIuL2tvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rby5qc1wiLFxuXHRcIi4va3VcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2t1LmpzXCIsXG5cdFwiLi9rdS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3UuanNcIixcblx0XCIuL2t5XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9reS5qc1wiLFxuXHRcIi4va3kuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2t5LmpzXCIsXG5cdFwiLi9sYlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbGIuanNcIixcblx0XCIuL2xiLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sYi5qc1wiLFxuXHRcIi4vbG9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2xvLmpzXCIsXG5cdFwiLi9sby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbG8uanNcIixcblx0XCIuL2x0XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sdC5qc1wiLFxuXHRcIi4vbHQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2x0LmpzXCIsXG5cdFwiLi9sdlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbHYuanNcIixcblx0XCIuL2x2LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sdi5qc1wiLFxuXHRcIi4vbWVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21lLmpzXCIsXG5cdFwiLi9tZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWUuanNcIixcblx0XCIuL21pXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9taS5qc1wiLFxuXHRcIi4vbWkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21pLmpzXCIsXG5cdFwiLi9ta1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWsuanNcIixcblx0XCIuL21rLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tay5qc1wiLFxuXHRcIi4vbWxcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21sLmpzXCIsXG5cdFwiLi9tbC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWwuanNcIixcblx0XCIuL21uXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tbi5qc1wiLFxuXHRcIi4vbW4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21uLmpzXCIsXG5cdFwiLi9tclwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXIuanNcIixcblx0XCIuL21yLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tci5qc1wiLFxuXHRcIi4vbXNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21zLmpzXCIsXG5cdFwiLi9tcy1teVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXMtbXkuanNcIixcblx0XCIuL21zLW15LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tcy1teS5qc1wiLFxuXHRcIi4vbXMuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21zLmpzXCIsXG5cdFwiLi9tdFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXQuanNcIixcblx0XCIuL210LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tdC5qc1wiLFxuXHRcIi4vbXlcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL215LmpzXCIsXG5cdFwiLi9teS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXkuanNcIixcblx0XCIuL25iXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9uYi5qc1wiLFxuXHRcIi4vbmIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25iLmpzXCIsXG5cdFwiLi9uZVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmUuanNcIixcblx0XCIuL25lLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9uZS5qc1wiLFxuXHRcIi4vbmxcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25sLmpzXCIsXG5cdFwiLi9ubC1iZVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmwtYmUuanNcIixcblx0XCIuL25sLWJlLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubC1iZS5qc1wiLFxuXHRcIi4vbmwuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25sLmpzXCIsXG5cdFwiLi9ublwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbm4uanNcIixcblx0XCIuL25uLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubi5qc1wiLFxuXHRcIi4vb2MtbG5jXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9vYy1sbmMuanNcIixcblx0XCIuL29jLWxuYy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvb2MtbG5jLmpzXCIsXG5cdFwiLi9wYS1pblwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcGEtaW4uanNcIixcblx0XCIuL3BhLWluLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wYS1pbi5qc1wiLFxuXHRcIi4vcGxcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3BsLmpzXCIsXG5cdFwiLi9wbC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcGwuanNcIixcblx0XCIuL3B0XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wdC5qc1wiLFxuXHRcIi4vcHQtYnJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3B0LWJyLmpzXCIsXG5cdFwiLi9wdC1ici5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcHQtYnIuanNcIixcblx0XCIuL3B0LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wdC5qc1wiLFxuXHRcIi4vcm9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3JvLmpzXCIsXG5cdFwiLi9yby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcm8uanNcIixcblx0XCIuL3J1XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ydS5qc1wiLFxuXHRcIi4vcnUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3J1LmpzXCIsXG5cdFwiLi9zZFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2QuanNcIixcblx0XCIuL3NkLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zZC5qc1wiLFxuXHRcIi4vc2VcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NlLmpzXCIsXG5cdFwiLi9zZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2UuanNcIixcblx0XCIuL3NpXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zaS5qc1wiLFxuXHRcIi4vc2kuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NpLmpzXCIsXG5cdFwiLi9za1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2suanNcIixcblx0XCIuL3NrLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zay5qc1wiLFxuXHRcIi4vc2xcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NsLmpzXCIsXG5cdFwiLi9zbC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2wuanNcIixcblx0XCIuL3NxXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zcS5qc1wiLFxuXHRcIi4vc3EuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NxLmpzXCIsXG5cdFwiLi9zclwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3IuanNcIixcblx0XCIuL3NyLWN5cmxcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NyLWN5cmwuanNcIixcblx0XCIuL3NyLWN5cmwuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NyLWN5cmwuanNcIixcblx0XCIuL3NyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zci5qc1wiLFxuXHRcIi4vc3NcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NzLmpzXCIsXG5cdFwiLi9zcy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3MuanNcIixcblx0XCIuL3N2XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zdi5qc1wiLFxuXHRcIi4vc3YuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3N2LmpzXCIsXG5cdFwiLi9zd1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3cuanNcIixcblx0XCIuL3N3LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zdy5qc1wiLFxuXHRcIi4vdGFcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RhLmpzXCIsXG5cdFwiLi90YS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGEuanNcIixcblx0XCIuL3RlXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ZS5qc1wiLFxuXHRcIi4vdGUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RlLmpzXCIsXG5cdFwiLi90ZXRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RldC5qc1wiLFxuXHRcIi4vdGV0LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ZXQuanNcIixcblx0XCIuL3RnXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90Zy5qc1wiLFxuXHRcIi4vdGcuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RnLmpzXCIsXG5cdFwiLi90aFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGguanNcIixcblx0XCIuL3RoLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90aC5qc1wiLFxuXHRcIi4vdGtcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RrLmpzXCIsXG5cdFwiLi90ay5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGsuanNcIixcblx0XCIuL3RsLXBoXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90bC1waC5qc1wiLFxuXHRcIi4vdGwtcGguanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RsLXBoLmpzXCIsXG5cdFwiLi90bGhcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RsaC5qc1wiLFxuXHRcIi4vdGxoLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90bGguanNcIixcblx0XCIuL3RyXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ci5qc1wiLFxuXHRcIi4vdHIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RyLmpzXCIsXG5cdFwiLi90emxcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bC5qc1wiLFxuXHRcIi4vdHpsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90emwuanNcIixcblx0XCIuL3R6bVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHptLmpzXCIsXG5cdFwiLi90em0tbGF0blwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHptLWxhdG4uanNcIixcblx0XCIuL3R6bS1sYXRuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90em0tbGF0bi5qc1wiLFxuXHRcIi4vdHptLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90em0uanNcIixcblx0XCIuL3VnLWNuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91Zy1jbi5qc1wiLFxuXHRcIi4vdWctY24uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VnLWNuLmpzXCIsXG5cdFwiLi91a1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdWsuanNcIixcblx0XCIuL3VrLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ay5qc1wiLFxuXHRcIi4vdXJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VyLmpzXCIsXG5cdFwiLi91ci5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXIuanNcIixcblx0XCIuL3V6XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ei5qc1wiLFxuXHRcIi4vdXotbGF0blwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXotbGF0bi5qc1wiLFxuXHRcIi4vdXotbGF0bi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXotbGF0bi5qc1wiLFxuXHRcIi4vdXouanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3V6LmpzXCIsXG5cdFwiLi92aVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdmkuanNcIixcblx0XCIuL3ZpLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS92aS5qc1wiLFxuXHRcIi4veC1wc2V1ZG9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3gtcHNldWRvLmpzXCIsXG5cdFwiLi94LXBzZXVkby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUveC1wc2V1ZG8uanNcIixcblx0XCIuL3lvXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS95by5qc1wiLFxuXHRcIi4veW8uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3lvLmpzXCIsXG5cdFwiLi96aC1jblwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtY24uanNcIixcblx0XCIuL3poLWNuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1jbi5qc1wiLFxuXHRcIi4vemgtaGtcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLWhrLmpzXCIsXG5cdFwiLi96aC1oay5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtaGsuanNcIixcblx0XCIuL3poLW1vXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1tby5qc1wiLFxuXHRcIi4vemgtbW8uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLW1vLmpzXCIsXG5cdFwiLi96aC10d1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtdHcuanNcIixcblx0XCIuL3poLXR3LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC10dy5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLiokXCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTIuNjY3IDIuNjY2aC0xLjMzM1YyQS42NjYuNjY2IDAgMSAwIDEwIDJ2LjY2Nkg2VjJhLjY2Ny42NjcgMCAwIDAtMS4zMzMgMHYuNjY2SDMuMzM0YTIgMiAwIDAgMC0yIDJ2OGEyIDIgMCAwIDAgMiAyaDkuMzMzYTIgMiAwIDAgMCAyLTJ2LThhMiAyIDAgMCAwLTItMlptLjY2NyAxMGEuNjY2LjY2NiAwIDAgMS0uNjY3LjY2N0gzLjMzM2EuNjY2LjY2NiAwIDAgMS0uNjY2LS42NjdWOGgxMC42NjZ2NC42NjZabTAtNkgyLjY2N3YtMkEuNjY3LjY2NyAwIDAgMSAzLjMzNCA0aDEuMzMzdi42NjZhLjY2Ny42NjcgMCAwIDAgMS4zMzMgMFY0aDR2LjY2NmEuNjY3LjY2NyAwIDEgMCAxLjMzNCAwVjRoMS4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny42NjZ2MlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTE0IDEzLjMzM0gyLjY2N1YxMmgyYS42NjcuNjY3IDAgMCAwIDAtMS4zMzRoLTJWOS4zMzNoNC42NjdhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM0gyLjY2N1Y2LjY2NkgxMGEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzSDIuNjY3VjRoMTBhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNGgtMTBWMmEuNjY3LjY2NyAwIDAgMC0xLjMzMyAwdjEyYS42NjcuNjY3IDAgMCAwIC42NjYuNjY2aDEyYS42NjcuNjY3IDAgMCAwIDAtMS4zMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk04IDRhLjY2Ny42NjcgMCAwIDAtLjY2Ny42NjZ2Ni42NjdhLjY2Ny42NjcgMCAxIDAgMS4zMzQgMFY0LjY2NkEuNjY3LjY2NyAwIDAgMCA4IDRaTTQuNjY3IDhBLjY2Ny42NjcgMCAwIDAgNCA4LjY2NnYyLjY2N2EuNjY3LjY2NyAwIDEgMCAxLjMzMyAwVjguNjY2QS42NjcuNjY3IDAgMCAwIDQuNjY3IDhabTYuNjY3LTEuMzM0YS42NjcuNjY3IDAgMCAwLS42NjcuNjY3djRhLjY2Ny42NjcgMCAwIDAgMS4zMzMgMHYtNGEuNjY3LjY2NyAwIDAgMC0uNjY2LS42NjdabTEuMzMzLTUuMzMzSDMuMzMzYTIgMiAwIDAgMC0yIDJ2OS4zMzNhMiAyIDAgMCAwIDIgMmg5LjMzNGEyIDIgMCAwIDAgMi0yVjMuMzMzYTIgMiAwIDAgMC0yLTJabS42NjcgMTEuMzMzYS42NjYuNjY2IDAgMCAxLS42NjcuNjY3SDMuMzMzYS42NjYuNjY2IDAgMCAxLS42NjYtLjY2N1YzLjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LS42NjdoOS4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny42Njd2OS4zMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk01LjMzNCA3LjMzNGg1LjMzM2EuNjY3LjY2NyAwIDAgMCAuNTEzLS4yNDcuNjY2LjY2NiAwIDAgMCAuMTU0LS41NTNMMTAuNjY3IDMuMkEuNjY3LjY2NyAwIDAgMCAxMCAyLjY2N0g2YS42NjcuNjY3IDAgMCAwLS42NjYuNTMzbC0uNjY3IDMuMzM0YS42NjcuNjY3IDAgMCAwIC4xNC41NTMuNjY3LjY2NyAwIDAgMCAuNTI3LjI0N1pNNi41NDcgNGgyLjkwN2wuNCAySDYuMTQ3bC40LTJabTguMTIgNS4yQS42NjcuNjY3IDAgMCAwIDE0IDguNjY3aC00YS42NjcuNjY3IDAgMCAwLS42NjYuNTMzbC0uNjY3IDMuMzM0YS42NjcuNjY3IDAgMCAwIC4xNC41NTMuNjY2LjY2NiAwIDAgMCAuNTI3LjI0N2g1LjMzM2EuNjY3LjY2NyAwIDAgMCAuNTEzLS4yNDcuNjY2LjY2NiAwIDAgMCAuMTU0LS41NTNMMTQuNjY3IDkuMlptLTQuNTIgMi44LjQtMmgyLjkwNmwuNCAyaC0zLjcwNlpNNiA4LjY2OEgyYS42NjcuNjY3IDAgMCAwLS42NjYuNTMzbC0uNjY3IDMuMzM0YS42NjcuNjY3IDAgMCAwIC4xNC41NTMuNjY2LjY2NiAwIDAgMCAuNTI3LjI0N2g1LjMzM2EuNjY3LjY2NyAwIDAgMCAuNTEzLS4yNDcuNjY2LjY2NiAwIDAgMCAuMTU0LS41NTNMNi42NjcgOS4yQS42NjcuNjY3IDAgMCAwIDYgOC42NjdabS0zLjg1MyAzLjMzNC40LTJoMi45MDdsLjQgMkgyLjE0N1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTkuMzM0IDUuMzMzSDEwQS42NjcuNjY3IDAgMCAwIDEwIDRoLS42NjZhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptMCAyLjY2N0gxMGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0aC0uNjY2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRaTTYgNS4zMzNoLjY2N2EuNjY3LjY2NyAwIDAgMCAwLTEuMzMzSDZhLjY2Ny42NjcgMCAxIDAgMCAxLjMzM1pNNiA4aC42NjdhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNEg2QS42NjcuNjY3IDAgMCAwIDYgOFptOCA1LjMzM2gtLjY2NlYyYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N0gzLjMzM0EuNjY3LjY2NyAwIDAgMCAyLjY2NyAydjExLjMzM0gyYS42NjYuNjY2IDAgMSAwIDAgMS4zMzNoMTJhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptLTUuMzMzIDBINy4zMzR2LTIuNjY3aDEuMzMzdjIuNjY3Wm0zLjMzMyAwaC0yVjEwYS42NjcuNjY3IDAgMCAwLS42NjYtLjY2N0g2LjY2N0EuNjY3LjY2NyAwIDAgMCA2IDEwdjMuMzMzSDRWMi42NjZoOHYxMC42NjdaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk03LjMzNCA2SDEwYS42NjcuNjY3IDAgMSAwIDAtMS4zMzNIOC42NjdWNGEuNjY3LjY2NyAwIDEgMC0xLjMzMyAwdi42NjdhMiAyIDAgMCAwIDAgNGgxLjMzM2EuNjY3LjY2NyAwIDAgMSAwIDEuMzMzSDZhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNGgxLjMzNFYxMmEuNjY3LjY2NyAwIDEgMCAxLjMzMyAwdi0uNjY2YTIgMiAwIDAgMCAwLTRINy4zMzRhLjY2Ny42NjcgMCAwIDEgMC0xLjMzNFpNOCAuNjY3YTcuMzMzIDcuMzMzIDAgMSAwIDAgMTQuNjY3QTcuMzMzIDcuMzMzIDAgMCAwIDggLjY2N1pNOCAxNEE2IDYgMCAxIDEgOCAyYTYgNiAwIDAgMSAwIDEyWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTMuMTIgNC41ODdhMi45MzMgMi45MzMgMCAwIDAtMi4yMDYtLjIxMyAyLjkxMyAyLjkxMyAwIDAgMC01LjgyIDAgMi45ODcgMi45ODcgMCAwIDAtMi4yMDcuMTkzQTIuOTEzIDIuOTEzIDAgMCAwIDMuMjk0IDkuOWEyLjkzMyAyLjkzMyAwIDAgMC0uNTM0IDEuNjY3Yy4wMDMuMTY4LjAxOS4zMzUuMDQ3LjVhMi44OTMgMi44OTMgMCAwIDAgMi44NiAyLjQyYy4xNDIuMDEuMjg1LjAxLjQyNyAwQTIuOTQ3IDIuOTQ3IDAgMCAwIDggMTMuMzM0YTIuOTQ3IDIuOTQ3IDAgMCAwIDEuOTA3IDEuMTI2Yy4xNDIuMDEuMjg1LjAxLjQyNyAwYTIuOTA3IDIuOTA3IDAgMCAwIDIuMzczLTQuNTggMi45MDcgMi45MDcgMCAwIDAgLjQxMy01LjMzM3YuMDRaTTYuODk0IDMuMjk0YTEuNiAxLjYgMCAwIDEgMi4yMTMgMCAxLjYyIDEuNjIgMCAwIDEgLjM0NyAxLjc3M2wtLjE3NC4zOTMtLjQ0LjM4N0EyLjcxMyAyLjcxMyAwIDAgMCA4IDUuN2MtLjM3IDAtLjczNS4wNzgtMS4wNzMuMjI3bC0uMzczLS44NmExLjU5MyAxLjU5MyAwIDAgMSAuMzQtMS43NzNabS00LjA2NyA0LjU2QTEuNTggMS41OCAwIDAgMSA1LjI5NCA2bC4zMjYuMjg3LjIzNC41MzNhMi42MTMgMi42MTMgMCAwIDAtLjUyIDEuNTQ3IDEuOSAxLjkgMCAwIDAgMCAuM2gtLjM2N2wtLjU2LjA1M2ExLjU4IDEuNTggMCAwIDEtMS41OC0uODY2Wm00LjQgNC4wNTNhMS41ODcgMS41ODcgMCAwIDEtMy4xMDctLjA1MyAyLjA0NyAyLjA0NyAwIDAgMSAwLS4yOCAxLjU1MyAxLjU1MyAwIDAgMSAuNzgtMS4zMzRsLjM0LS4yNC42MDctLjA2NmMuMzgyLjUzMi45NDcuOTA0IDEuNTg3IDEuMDQ2bC0uMjA3LjkyN1pNOCA5LjdhMS4zMzMgMS4zMzMgMCAxIDEgMC0yLjY2NkExLjMzMyAxLjMzMyAwIDAgMSA4IDkuN1ptMy44OCAyLjE0N2ExLjU3MyAxLjU3MyAwIDAgMS0xLjc4NiAxLjI5MyAxLjU5MyAxLjU5MyAwIDAgMS0xLjMzNC0xLjIzM2wtLjA5My0uNC4xNC0uNjEzYTIuNjY3IDIuNjY3IDAgMCAwIDEuNDY3LTEuMTc0bC4zMzMuMmguMDZsLjQ0LjI2YTEuNTg3IDEuNTg3IDAgMCAxIC43NzMgMS42NjdabTEuMjk0LTRhMS41OTQgMS41OTQgMCAwIDEtMS40Mi44ODdoLS4xNmwtLjQyNy0uMDY3LS41LS4yNzNjMC0uNjQ5LS4yMzgtMS4yNzQtLjY2Ny0xLjc2bC4yODctLjI0Ny40Mi0uMzg3YTEuNTggMS41OCAwIDAgMSAyLjQ2NyAxLjg4di0uMDMzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTMuMzM0IDUuOTZhLjg4Ljg4IDAgMCAwLS4wNC0uMTh2LS4wNmEuNzE2LjcxNiAwIDAgMC0uMTI3LS4xODdsLTQtNGEuNzEzLjcxMyAwIDAgMC0uMTg3LS4xMjdoLS4wNmEuNTg3LjU4NyAwIDAgMC0uMjItLjA3M0g0LjY2N2EyIDIgMCAwIDAtMiAydjkuMzMzYTIgMiAwIDAgMCAyIDJoNi42NjdhMiAyIDAgMCAwIDItMlY1Ljk2Wm0tNC0yLjM1NCAxLjcyNiAxLjcyN0gxMGEuNjY3LjY2NyAwIDAgMS0uNjY2LS42Njd2LTEuMDZaTTEyIDEyLjY2NmEuNjY3LjY2NyAwIDAgMS0uNjY2LjY2N0g0LjY2N0EuNjY2LjY2NiAwIDAgMSA0IDEyLjY2NlYzLjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LS42NjdIOHYyYTIgMiAwIDAgMCAyIDJoMnY2WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTIuOTYgOC42NjZjLS4xNDcgMC0uMy0uMDQ2LS40NDctLjA4YTYuMjkgNi4yOSAwIDAgMS0uODczLS4yNiAxLjMzMyAxLjMzMyAwIDAgMC0xLjY1My42NjdsLS4xNDcuM0E4LjEyIDguMTIgMCAwIDEgOC4wNjcgNy45NmE4LjEyIDguMTIgMCAwIDEtMS4zMzQtMS43NzRMNy4wMTMgNmExLjMzMyAxLjMzMyAwIDAgMCAuNjY3LTEuNjU0IDYuODg3IDYuODg3IDAgMCAxLS4yNi0uODczYy0uMDMzLS4xNDctLjA2LS4zLS4wOC0uNDUzYTIgMiAwIDAgMC0yLTEuNjZoLTJhMiAyIDAgMCAwLTIgMi4yNzMgMTIuNjY3IDEyLjY2NyAwIDAgMCAxMS4wMTMgMTAuOTczaC4yNTRhMiAyIDAgMCAwIDEuODI3LTEuMTg1IDIgMiAwIDAgMCAuMTczLS44MjF2LTJhMiAyIDAgMCAwLTEuNjQ3LTEuOTM0Wm0uMzMzIDRhLjY2Ni42NjYgMCAwIDEtLjQ4Mi42NDEuNzA3LjcwNyAwIDAgMS0uMjkuMDI2QTExLjMzMyAxMS4zMzMgMCAwIDEgMi43MTIgMy40OGEuNzI3LjcyNyAwIDAgMSAuMTY3LS41NDcuNjY3LjY2NyAwIDAgMSAuNS0uMjI3aDJhLjY2Ny42NjcgMCAwIDEgLjY2Ny41MjcgNy40MTQgNy40MTQgMCAwIDAgLjQwNyAxLjU3M2wtLjkzNC40MzRhLjY2Ny42NjcgMCAwIDAtLjMyNy44ODYgOS42NiA5LjY2IDAgMCAwIDQuNjY3IDQuNjY3LjY2Ni42NjYgMCAwIDAgLjUwNyAwIC42NjUuNjY1IDAgMCAwIC4zOC0uMzQ3bC40MTMtLjkzM2MuMzQ1LjEyMy42OTcuMjI2IDEuMDUzLjMwNy4xNzguMDQuMzU4LjA3My41NC4xYS42NjcuNjY3IDAgMCAxIC41MjcuNjY2bC4wMTMgMi4wOFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTE0LjE0NiA4YTIgMiAwIDAgMCAuNTItMS4zMzMgMiAyIDAgMCAwLTItMkg5LjIxM0EyIDIgMCAwIDAgNy4zMzMgMmgtNGEyIDIgMCAwIDAtMiAyIDIgMiAwIDAgMCAuNTIgMS4zMzMgMiAyIDAgMCAwIDAgMi42NjcgMiAyIDAgMCAwIDAgMi42NjdBMiAyIDAgMCAwIDEuMzMzIDEyYTIgMiAwIDAgMCAyIDJoOS4zMzNhMiAyIDAgMCAwIDEuNDgtMy4zMzMgMiAyIDAgMCAwIDAtMi42NjdabS02LjgxMyA0LjY2N2gtNGEuNjY3LjY2NyAwIDAgMSAwLTEuMzM0aDRhLjY2Ny42NjcgMCAwIDEgMCAxLjMzNFptMC0yLjY2N2gtNGEuNjY3LjY2NyAwIDAgMSAwLTEuMzMzaDRhLjY2Ny42NjcgMCAwIDEgMCAxLjMzM1ptMC0yLjY2N2gtNGEuNjY3LjY2NyAwIDEgMSAwLTEuMzMzaDRhLjY2Ny42NjcgMCAwIDEgMCAxLjMzM1ptMC0yLjY2NmgtNGEuNjY3LjY2NyAwIDAgMSAwLTEuMzM0aDRhLjY2Ny42NjcgMCAxIDEgMCAxLjMzNFptNS43OTMgNy44MDZhLjYyLjYyIDAgMCAxLS40Ni4xOTRIOS4yMTNjLjE2LS40My4xNi0uOTA0IDAtMS4zMzRoMy40NTNhLjY2Ny42NjcgMCAwIDEgLjY2Ny42NjcuNjY2LjY2NiAwIDAgMS0uMjA3LjQ3M1ptMC0yLjY2NmEuNjIuNjIgMCAwIDEtLjQ2LjE5M0g5LjIxM2MuMTYtLjQzLjE2LS45MDMgMC0xLjMzM2gzLjQ1M2EuNjY2LjY2NiAwIDAgMSAuNjY3LjY2Ni42NjYuNjY2IDAgMCAxLS4yMDcuNDc0Wm0wLTIuNjY3YS42Mi42MiAwIDAgMS0uNDYuMTkzSDkuMjEzYy4xNi0uNDMuMTYtLjkwMyAwLTEuMzMzaDMuNDUzYS42NjYuNjY2IDAgMCAxIC42NjcuNjY3LjY2Ni42NjYgMCAwIDEtLjIwNy40NzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk05LjMzMyA1LjMzM0gxMEEuNjY3LjY2NyAwIDEgMCAxMCA0aC0uNjY3YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNabTAgMi42NjdIMTBhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNGgtLjY2N2EuNjY3LjY2NyAwIDAgMCAwIDEuMzM0Wk02IDUuMzMzaC42NjZhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM0g2YS42NjcuNjY3IDAgMSAwIDAgMS4zMzNaTTYgOGguNjY2YS42NjcuNjY3IDAgMSAwIDAtMS4zMzRINkEuNjY3LjY2NyAwIDAgMCA2IDhabTggNS4zMzNoLS42NjdWMmEuNjY2LjY2NiAwIDAgMC0uNjY3LS42NjdIMy4zMzNBLjY2Ny42NjcgMCAwIDAgMi42NjYgMnYxMS4zMzNIMmEuNjY2LjY2NiAwIDEgMCAwIDEuMzMzaDEyYS42NjcuNjY3IDAgMSAwIDAtMS4zMzNabS01LjMzNCAwSDcuMzMzdi0yLjY2N2gxLjMzM3YyLjY2N1ptMy4zMzQgMGgtMlYxMGEuNjY3LjY2NyAwIDAgMC0uNjY3LS42NjdINi42NjZBLjY2Ny42NjcgMCAwIDAgNiAxMHYzLjMzM0g0VjIuNjY2aDh2MTAuNjY3WlxcXCIgZmlsbD1cXFwiI0E2QjVCQVxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEzLjMzNC42NjdIMi42NjdhMiAyIDAgMCAwLTIgMnYxMC42NjdhMiAyIDAgMCAwIDIgMmgxMC42NjdhMiAyIDAgMCAwIDItMlYyLjY2N2EyIDIgMCAwIDAtMi0yWk01LjMzNCAxNEgyLjY2N0EuNjY3LjY2NyAwIDAgMSAyIDEzLjMzNHYtLjc4N2EyIDIgMCAwIDAgLjY2Ny4xMmgyLjY2N1YxNFptMC0yLjY2NkgyLjY2N0EuNjY3LjY2NyAwIDAgMSAyIDEwLjY2N1Y5Ljg4YTIgMiAwIDAgMCAuNjY3LjEyaDIuNjY3djEuMzM0Wm0wLTIuNjY3SDIuNjY3QS42NjcuNjY3IDAgMCAxIDIgOFYyLjY2N0EuNjY3LjY2NyAwIDAgMSAyLjY2NyAyaDIuNjY3djYuNjY3Wm00IDUuMzMzSDYuNjY3di00aDIuNjY3djRabTAtNS4zMzNINi42NjdWMmgyLjY2N3Y2LjY2N1pNMTQgMTMuMzM0YS42NjcuNjY3IDAgMCAxLS42NjYuNjY2aC0yLjY2N3YtMS4zMzNoMi42NjdhMiAyIDAgMCAwIC42NjYtLjEydi43ODdabTAtMi42NjdhLjY2Ny42NjcgMCAwIDEtLjY2Ni42NjdoLTIuNjY3VjEwaDIuNjY3QTIgMiAwIDAgMCAxNCA5Ljg4di43ODdaTTE0IDhhLjY2Ny42NjcgMCAwIDEtLjY2Ni42NjdoLTIuNjY3VjJoMi42NjdhLjY2Ny42NjcgMCAwIDEgLjY2Ni42NjdWOFptLTItMy4zMzNhLjY2Ny42NjcgMCAxIDAgMCAxLjMzNC42NjcuNjY3IDAgMCAwIDAtMS4zMzRaTTQgNmEuNjY3LjY2NyAwIDEgMCAwLTEuMzMzQS42NjcuNjY3IDAgMCAwIDQgNlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTQgNy4zMzNhLjY2Ny42NjcgMCAxIDAgMCAxLjMzMy42NjcuNjY3IDAgMCAwIDAtMS4zMzNabTggMGEuNjY3LjY2NyAwIDEgMCAwIDEuMzM0LjY2Ny42NjcgMCAwIDAgMC0xLjMzNFptMS4zMzQtNEgyLjY2N2EyIDIgMCAwIDAtMiAydjUuMzMzYTIgMiAwIDAgMCAyIDJoMTAuNjY3YTIgMiAwIDAgMCAyLTJWNS4zMzNhMiAyIDAgMCAwLTItMlpNMTQgMTAuNjY2YS42NjcuNjY3IDAgMCAxLS42NjYuNjY3SDIuNjY3QS42NjYuNjY2IDAgMCAxIDIgMTAuNjY2VjUuMzMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N2gxMC42NjdhLjY2Ny42NjcgMCAwIDEgLjY2Ni42Njd2NS4zMzNaTTggNmEyIDIgMCAxIDAgMCA0IDIgMiAwIDAgMCAwLTRabTAgMi42NjZhLjY2Ny42NjcgMCAxIDEgMC0xLjMzMy42NjcuNjY3IDAgMCAxIDAgMS4zMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMS4zMzMgNGEuNjY3LjY2NyAwIDAgMC0uNjY3LjY2NnY1LjA2TDUuMTQgNC4xOTNhLjY3LjY3IDAgMCAwLS45NDcuOTQ3bDUuNTMzIDUuNTI2aC01LjA2YS42NjcuNjY3IDAgMSAwIDAgMS4zMzRoNi42NjdhLjY2Ny42NjcgMCAwIDAgLjY2Ny0uNjY3VjQuNjY2QS42NjYuNjY2IDAgMCAwIDExLjMzMyA0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNiA2LjY2NmguNjY3YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNINmEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWk02IDhhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM2g0QS42NjcuNjY3IDAgMCAwIDEwIDhINlptNy4zMzMtMi4wNGEuODguODggMCAwIDAtLjA0LS4xOHYtLjA2YS43MTQuNzE0IDAgMCAwLS4xMjctLjE4N2wtNC00YS43MTMuNzEzIDAgMCAwLS4xODYtLjEyNy4yMTMuMjEzIDAgMCAwLS4wNiAwIC41ODcuNTg3IDAgMCAwLS4yMi0uMDczSDQuNjY3YTIgMiAwIDAgMC0yIDJ2OS4zMzNhMiAyIDAgMCAwIDIgMmg2LjY2NmEyIDIgMCAwIDAgMi0yVjUuOTZabS00LTIuMzU0IDEuNzI3IDEuNzI3SDEwYS42NjcuNjY3IDAgMCAxLS42NjctLjY2N3YtMS4wNlpNMTIgMTIuNjY2YS42NjcuNjY3IDAgMCAxLS42NjcuNjY3SDQuNjY2QS42NjYuNjY2IDAgMCAxIDQgMTIuNjY2VjMuMzMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N0g4djJhMiAyIDAgMCAwIDIgMmgydjZabS0yLTJINkEuNjY3LjY2NyAwIDAgMCA2IDEyaDRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwibTYuNjY2IDExLjctMS4xOCAxLjE0N2ExLjY1IDEuNjUgMCAwIDEtMi4zMzMtMi4zMzNMNi4xOCA3LjQ4YTEuNjQgMS42NCAwIDAgMSAyLjI2LS4wNmwuMDguMDY3YS42NjcuNjY3IDAgMCAwIC45MzMtLjk1MyAxLjgzNiAxLjgzNiAwIDAgMC0uMTItLjE0IDIuOTczIDIuOTczIDAgMCAwLTQuMDYuMTQ2TDIuMjA2IDkuNTc0YTIuOTg3IDIuOTg3IDAgMCAwIDQuMjIgNC4yMmwxLjE1NC0xLjEyN2EuNjY3LjY2NyAwIDAgMC0uOTE0LS45NjdabTcuMTI3LTkuNDkzYTIuOTkzIDIuOTkzIDAgMCAwLTQuMjIgMEw4LjQyIDMuMzM0YS42NjcuNjY3IDAgMCAwIC45MTMuOTY2bDEuMTUzLTEuMTQ2YTEuNjUgMS42NSAwIDAgMSAyLjMzNCAyLjMzM0w5Ljc5MyA4LjUyYTEuNjQgMS42NCAwIDAgMS0yLjI2LjA2bC0uMDgtLjA2NmEuNjY3LjY2NyAwIDAgMC0uOTMzLjk1MyAyLjk4IDIuOTggMCAwIDAgNC4yMTMtLjAwN2wzLjAzMy0zLjAzM2EyLjk5MyAyLjk5MyAwIDAgMCAuMDI3LTQuMjJaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk05LjMzMyA3LjMzNGgtLjY2NnYtLjY2N2EuNjY3LjY2NyAwIDEgMC0xLjMzNCAwdi42NjdoLS42NjZhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM2guNjY2di42NjdhLjY2Ny42NjcgMCAwIDAgMS4zMzQgMHYtLjY2N2guNjY2YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNabTQuMTA3LTRBNC4xOTQgNC4xOTQgMCAwIDAgOCAyLjk0YTQuMTggNC4xOCAwIDAgMC01LjQ0IDYuMzJsNCA0LjAzNGEyIDIgMCAwIDAgMi44MjcgMGw0LTQuMDM0YTQuMTggNC4xOCAwIDAgMCAuMDUzLTUuOTI2Wm0tLjk0IDQuOTczLTQgNGEuNjY2LjY2NiAwIDAgMS0uOTQ3IDBsLTQtNGEyLjg2IDIuODYgMCAwIDEgMC00IDIuODQ3IDIuODQ3IDAgMCAxIDQgMCAuNjY3LjY2NyAwIDAgMCAuOTQ3IDAgMi44NDcgMi44NDcgMCAwIDEgNCAwIDIuODYgMi44NiAwIDAgMSAwIDQuMDEzdi0uMDEzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMy4zMzMgNS4zMzNoOS4zMzRhLjY2Ny42NjcgMCAxIDAgMC0xLjMzM0gzLjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWm0xMC42NjcgMkgyYS42NjcuNjY3IDAgMSAwIDAgMS4zMzRoMTJhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFptLTEuMzMzIDMuMzM0SDMuMzMzYS42NjcuNjY3IDAgMSAwIDAgMS4zMzNoOS4zMzRhLjY2Ni42NjYgMCAxIDAgMC0xLjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEwLjY2NyA5LjMzM0g1LjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaDUuMzM0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNabTAtMi42NjdoLTRhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNGg0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRabTIuNjY2LTRoLTJWMkEuNjY3LjY2NyAwIDEgMCAxMCAydi42NjZIOC42NjdWMmEuNjY3LjY2NyAwIDEgMC0xLjMzNCAwdi42NjZINlYyYS42NjcuNjY3IDAgMCAwLTEuMzMzIDB2LjY2NmgtMkEuNjY3LjY2NyAwIDAgMCAyIDMuMzMzdjkuMzMzYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjMuMzMzYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N1ptLS42NjYgMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjdINGEuNjY2LjY2NiAwIDAgMS0uNjY3LS42NjdWNGgxLjMzNHYuNjY2YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWNGgxLjMzM3YuNjY2YS42NjcuNjY3IDAgMCAwIDEuMzM0IDBWNEgxMHYuNjY2YS42NjYuNjY2IDAgMSAwIDEuMzMzIDBWNGgxLjMzNHY4LjY2NlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEzLjA4NyAyLjQzM2EuNjY3LjY2NyAwIDAgMC0uNTYtLjEzMyA1LjMzMyA1LjMzMyAwIDAgMS00LjE0Ny0uODQ3LjY2Ny42NjcgMCAwIDAtLjc2IDAgNS4zMzMgNS4zMzMgMCAwIDEtNC4xNDYuODQ3LjY2Ny42NjcgMCAwIDAtLjgwNy42NTNWNy45MmE2IDYgMCAwIDAgMi41MTMgNC44ODZsMi40MzQgMS43MzRhLjY2Ny42NjcgMCAwIDAgLjc3MyAwbDIuNDMzLTEuNzM0YTYgNiAwIDAgMCAyLjUxNC00Ljg4NlYyLjk1M2EuNjY3LjY2NyAwIDAgMC0uMjQ3LS41MlpNMTIgNy45MmE0LjY2NiA0LjY2NiAwIDAgMS0xLjk1MyAzLjhMOCAxMy4xOGwtMi4wNDYtMS40NkE0LjY2NyA0LjY2NyAwIDAgMSA0IDcuOTJ2LTQuMmE2LjY2NyA2LjY2NyAwIDAgMCA0LS45MjcgNi42NjcgNi42NjcgMCAwIDAgNCAuOTI3djQuMlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTcuMzMzIDcuOTMzdjMuNGEuNjY3LjY2NyAwIDEgMCAxLjMzNCAwdi0zLjRhMy4zMzMgMy4zMzMgMCAxIDAtMS4zMzQgMFpNOCAyLjY2N2EyIDIgMCAxIDEgMCA0IDIgMiAwIDAgMSAwLTRabTIuODA3IDYuOTQ2YS42ODEuNjgxIDAgMCAwLS4yOCAxLjMzNGMxLjUxMy4zIDIuMTQuODQgMi4xNCAxLjA1MyAwIC4zODctMS42MzQgMS4zMzMtNC42NjcgMS4zMzNTMy4zMzMgMTIuMzg3IDMuMzMzIDEyYzAtLjIxMy42MjctLjc1MyAyLjE0LTEuMDhhLjY4MS42ODEgMCAwIDAtLjI4LTEuMzMzQzMuMTY3IDEwLjA1MyAyIDEwLjkyNyAyIDEyYzAgMS43NTMgMy4wMiAyLjY2NyA2IDIuNjY3czYtLjkxNCA2LTIuNjY3YzAtMS4wNzMtMS4xNjctMS45NDctMy4xOTMtMi4zODdaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0yIDMuMzMzaDEyYy40IDAgLjY2Ny0uMjY2LjY2Ny0uNjY2UzE0LjQgMiAxNCAySDJjLS40IDAtLjY2Ny4yNjctLjY2Ny42NjdzLjI2Ny42NjYuNjY3LjY2NlptMTIgOS4zMzRINy4zMzNjLS40IDAtLjY2Ni4yNjYtLjY2Ni42NjZzLjI2Ny42NjcuNjY3LjY2N0gxNGMuNCAwIC42NjctLjI2Ny42NjctLjY2N3MtLjI2Ny0uNjY2LS42NjctLjY2NlptMC01LjMzNEgyYy0uNCAwLS42NjcuMjY3LS42NjcuNjY3cy4yNjcuNjY3LjY2Ny42NjdoMTJjLjQgMCAuNjY3LS4yNjcuNjY3LS42NjdTMTQuNCA3LjMzMyAxNCA3LjMzM1pNMTQgMTBIMmMtLjQgMC0uNjY3LjI2Ny0uNjY3LjY2N3MuMjY3LjY2Ni42NjcuNjY2aDEyYy40IDAgLjY2Ny0uMjY2LjY2Ny0uNjY2UzE0LjQgMTAgMTQgMTBabTAtNS4zMzNIMmMtLjQgMC0uNjY3LjI2Ni0uNjY3LjY2NlMxLjYgNiAyIDZoMTJjLjQgMCAuNjY3LS4yNjcuNjY3LS42NjdTMTQuNCA0LjY2NyAxNCA0LjY2N1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwibTEzLjMzMyA1LjMzMy00LTMuNTA2YTIgMiAwIDAgMC0yLjY2NiAwbC00IDMuNTA2QTIgMiAwIDAgMCAyIDYuODR2NS44MjdhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWNi44MzNhMiAyIDAgMCAwLS42NjctMS41Wm0tNCA4SDYuNjY3VjEwYS42NjcuNjY3IDAgMCAxIC42NjYtLjY2N2gxLjMzNGEuNjY3LjY2NyAwIDAgMSAuNjY2LjY2N3YzLjMzM1ptMy4zMzQtLjY2NmEuNjY3LjY2NyAwIDAgMS0uNjY3LjY2NmgtMS4zMzNWMTBhMiAyIDAgMCAwLTItMkg3LjMzM2EyIDIgMCAwIDAtMiAydjMuMzMzSDRhLjY2Ny42NjcgMCAwIDEtLjY2Ny0uNjY2VjYuODMzYS42NjcuNjY3IDAgMCAxIC4yMjctLjVsNC0zLjVhLjY2Ny42NjcgMCAwIDEgLjg4IDBsNCAzLjVhLjY2Ny42NjcgMCAwIDEgLjIyNy41djUuODM0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTAuNjY3IDkuMzMzSDUuMzMzYS42NjcuNjY3IDAgMCAwIDAgMS4zMzNoNS4zMzRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptMC0yLjY2N2gtNGEuNjY3LjY2NyAwIDAgMCAwIDEuMzM0aDRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFptMi42NjYtNGgtMlYyQS42NjcuNjY3IDAgMSAwIDEwIDJ2LjY2Nkg4LjY2N1YyYS42NjcuNjY3IDAgMSAwLTEuMzM0IDB2LjY2Nkg2VjJhLjY2Ny42NjcgMCAwIDAtMS4zMzMgMHYuNjY2aC0yQS42NjcuNjY3IDAgMCAwIDIgMy4zMzN2OS4zMzNhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMy4zMzNhLjY2Ni42NjYgMCAwIDAtLjY2Ny0uNjY3Wm0tLjY2NiAxMGEuNjY3LjY2NyAwIDAgMS0uNjY3LjY2N0g0YS42NjYuNjY2IDAgMCAxLS42NjctLjY2N1Y0aDEuMzM0di42NjZhLjY2Ny42NjcgMCAxIDAgMS4zMzMgMFY0aDEuMzMzdi42NjZhLjY2Ny42NjcgMCAwIDAgMS4zMzQgMFY0SDEwdi42NjZhLjY2Ni42NjYgMCAxIDAgMS4zMzMgMFY0aDEuMzM0djguNjY2WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxN1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNOCA4LjVhMiAyIDAgMSAwIDAgNCAyIDIgMCAwIDAgMC00Wm0wIDIuNjY2YS42NjcuNjY3IDAgMSAxIDAtMS4zMzQuNjY3LjY2NyAwIDAgMSAwIDEuMzM0Wm0tLjQ3My00LjE5M2MuMDYzLjA2LjEzOC4xMDguMjIuMTRhLjYyNy42MjcgMCAwIDAgLjUwNyAwIC42NjcuNjY3IDAgMCAwIC4yMi0uMTRMMTAgNS40NzNhLjY4OC42ODggMCAxIDAtLjk3My0uOTczbC0uMzYuMzkzVjIuNWEuNjY3LjY2NyAwIDAgMC0xLjMzMyAwdjIuMzkzbC0uMzYtLjM5M0EuNjg4LjY4OCAwIDAgMCA2IDUuNDczbDEuNTI3IDEuNVptNS4xNCAzLjUyN2EuNjY2LjY2NiAwIDEgMC0xLjMzMiAwIC42NjYuNjY2IDAgMCAwIDEuMzMyIDBabS42NjctNC42NjdoLTJhLjY2Ni42NjYgMCAxIDAgMCAxLjMzM2gyYS42NjcuNjY3IDAgMCAxIC42NjYuNjY3djUuMzMzYS42NjcuNjY3IDAgMCAxLS42NjYuNjY3SDIuNjY3QS42NjYuNjY2IDAgMCAxIDIgMTMuMTY2VjcuODMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N2gyYS42NjcuNjY3IDAgMCAwIDAtMS4zMzNoLTJhMiAyIDAgMCAwLTIgMnY1LjMzM2EyIDIgMCAwIDAgMiAyaDEwLjY2N2EyIDIgMCAwIDAgMi0yVjcuODMzYTIgMiAwIDAgMC0yLTJabS0xMCA0LjY2N2EuNjY3LjY2NyAwIDEgMCAxLjMzNCAwIC42NjcuNjY3IDAgMCAwLTEuMzM0IDBaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk02IDYuNjY2aC42NjdhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM0g2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNaTTEwIDhINmEuNjY3LjY2NyAwIDEgMCAwIDEuMzMzaDRBLjY2Ny42NjcgMCAxIDAgMTAgOFptMCAyLjY2Nkg2QS42NjcuNjY3IDAgMCAwIDYgMTJoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0Wm0zLjE0IDIuODZhMS4wODUgMS4wODUgMCAwIDAtLjEtLjA4LjUwNy41MDcgMCAwIDAtLjEyLS4wNmwtLjEyLS4wNTNhLjY2Ny42NjcgMCAwIDAtLjM4Ni4wNC41OTkuNTk5IDAgMCAwLS4zNi4zNkEuNTYuNTYgMCAwIDAgMTIgMTRhLjY2OC42NjggMCAxIDAgMS4yOC0uMjU0Ljc2Ni43NjYgMCAwIDAtLjE0LS4yMlptLjE5NC03LjU2NmEuODguODggMCAwIDAtLjA0LS4xOHYtLjA2YS43MTYuNzE2IDAgMCAwLS4xMjctLjE4N2wtNC00YS43MTMuNzEzIDAgMCAwLS4xODctLjEyNy4yMTMuMjEzIDAgMCAwLS4wNiAwIC41ODcuNTg3IDAgMCAwLS4yMi0uMDczSDQuNjY3YTIgMiAwIDAgMC0yIDJ2OS4zMzNhMiAyIDAgMCAwIDIgMkgxMGEuNjY3LjY2NyAwIDEgMCAwLTEuMzMzSDQuNjY3QS42NjYuNjY2IDAgMCAxIDQgMTIuNjY2VjMuMzMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N0g4djJhMiAyIDAgMCAwIDIgMmgyVjhhLjY2Ny42NjcgMCAwIDAgMS4zMzQgMFY1Ljk2Wk0xMCA1LjMzM2EuNjY3LjY2NyAwIDAgMS0uNjY2LS42Njd2LTEuMDZsMS43MjYgMS43MjdIMTBaTTEyLjY2NyAxMGEuNjY3LjY2NyAwIDAgMC0uNjY3LjY2NlYxMmEuNjY3LjY2NyAwIDAgMCAxLjMzNCAwdi0xLjMzNGEuNjY3LjY2NyAwIDAgMC0uNjY3LS42NjZaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIm0xNC4yMTMgMy4zNjctNC0xLjMzM2gtLjA0NmEuNDY2LjQ2NiAwIDAgMC0uMDk0IDBoLS4yODZMNiAzLjMzNGwtMy43ODctMS4zYS42NjcuNjY3IDAgMCAwLS42LjA5My42NjcuNjY3IDAgMCAwLS4yOC41NFYxMmEuNjY2LjY2NiAwIDAgMCAuNDU0LjYzM2w0IDEuMzM0YS42NjcuNjY3IDAgMCAwIC40MTMgMEwxMCAxMi43bDMuNzg3IDEuM2MuMDcuMDEuMTQyLjAxLjIxMyAwYS42MjYuNjI2IDAgMCAwIC4zODctLjEyNy42NjYuNjY2IDAgMCAwIC4yOC0uNTRWNGEuNjY3LjY2NyAwIDAgMC0uNDU0LS42MzNabS04Ljg4IDkuMDQtMi42NjYtLjg4N1YzLjU5NGwyLjY2Ny44ODZ2Ny45MjdabTQtLjg4Ny0yLjY2Ni44ODdWNC40OGwyLjY2Ny0uODg2djcuOTI2Wm00IC44ODctMi42NjYtLjg4N1YzLjU5NGwyLjY2Ny44ODZ2Ny45MjdaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMy42NCA2LjQyYTUuNjY2IDUuNjY2IDAgMCAwLTguNzczLTQuMThBNS43MDcgNS43MDcgMCAwIDAgMi4zNiA2LjQyIDUuNjQgNS42NCAwIDAgMCA0IDEwLjk3M2wzLjUzMyAzLjU0YS42NjYuNjY2IDAgMCAwIC45NDcgMGwzLjUyLTMuNTRhNS42MzggNS42MzggMCAwIDAgMS42NC00LjU1M1ptLTIuNTczIDMuNjEzTDggMTMuMWwtMy4wNjctMy4wNjdhNC4zMjcgNC4zMjcgMCAwIDEtMS4yNDYtMy40OCA0LjM4IDQuMzggMCAwIDEgMS45MjYtMy4yMkE0LjMxMyA0LjMxMyAwIDAgMSAxMS43MSA0LjcyYy4zMzQuNTU1LjU0IDEuMTc2LjYwNCAxLjgyYTQuMzI2IDQuMzI2IDAgMCAxLTEuMjQ2IDMuNDkzWk04IDRhMyAzIDAgMSAwIDMgMyAzLjAwNyAzLjAwNyAwIDAgMC0zLTNabTAgNC42NjZhMS42NjcgMS42NjcgMCAxIDEgMC0zLjMzMyAxLjY2NyAxLjY2NyAwIDAgMSAwIDMuMzMzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNC42NjcgMTAuNjY2YTEgMSAwIDAgMCAxLTEgLjUxNC41MTQgMCAwIDAgMC0uMWwxLjg2LTEuODZoLjMwNkw4LjkwNyA4Ljc4di4wNTNhMSAxIDAgMSAwIDIgMFY4Ljc4bDIuNDI2LTIuNDQ3YTEgMSAwIDEgMC0xLTEgLjUyMi41MjIgMCAwIDAgMCAuMUw5LjkyNyA3Ljg0SDkuODJMOC42NjcgNi42NjZhMSAxIDAgMCAwLTIgMGwtMiAyYTEgMSAwIDAgMCAwIDJabTkgMi42NjdIMi4zMzNWMkEuNjY3LjY2NyAwIDEgMCAxIDJ2MTJhLjY2Ny42NjcgMCAwIDAgLjY2Ny42NjZoMTJhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMiAxNVxcXCI+PHBhdGggZD1cXFwibTYuMTQgMTAuNzQyLjAyLjA1OC4wMDcuMDF2LjAzNmEuMDYuMDYgMCAwIDEtLjAwNi4wMjdsLS4wMS4wMjItLjAwOC4wMjFhLjEuMSAwIDAgMS0uMDYuMDZsLS4wMjIuMDA4LS4wMjEuMDFhLjA2LjA2IDAgMCAxLS4wMjcuMDA2aC0uMDA2YS4xNjYuMTY2IDAgMCAxLS4xMDYtLjA0LjI2Ni4yNjYgMCAwIDEtLjA0LS4wNjZsLS4wMDQtLjAxLS4wMDUtLjAxYS4wNi4wNiAwIDAgMS0uMDA1LS4wMjh2LS4wMjNsLS4wMDEtLjAyMy0uMDAxLS4wMTguMDAzLS4wMDcuMDEyLS4wMzNhLjU3Ni41NzYgMCAwIDEgLjAyMy0uMDMuMTY2LjE2NiAwIDAgMSAuMDQ0LS4wMjZsLjAxNC0uMDA1YS4xNjcuMTY3IDAgMCAxIC4wOTYtLjAxbC4wOTQtLjQ5MS0uMDk0LjQ5YS4xNjYuMTY2IDAgMCAxIC4wNzcuMDM4Yy4wMDkuMDEuMDE4LjAyMi4wMjYuMDM0Wm0uNjkzLTkuMzM1IDMuOTYzIDMuOTYzLjAyMy4wN2EuMzcuMzcgMCAwIDEgLjAxNC4wNTR2Ni42NzNhMS41IDEuNSAwIDAgMS0xLjUgMS41SDIuNjY3YTEuNSAxLjUgMCAwIDEtMS4wNjEtLjQ0bC0uMzQ4LjM0OC4zNDgtLjM0OGExLjUgMS41IDAgMCAxLS40NC0xLjA2VjIuODMzYTEuNSAxLjUgMCAwIDEgMS41LTEuNWgzLjk5bC4wMTUuMDA3LjExNi4wNjdoLjA0NlptLjg1NCAxLjM0Nkw2LjgzMyAxLjl2Mi4yNjdBMS4xNjcgMS4xNjcgMCAwIDAgOCA1LjMzM2gyLjI2N2wtLjg1My0uODUzLTEuNzI3LTEuNzI3Wk02LjUgMi4xNjd2LS41SDIuNjY3QTEuMTY3IDEuMTY3IDAgMCAwIDEuNSAyLjgzM3Y5LjMzNGExLjE2NyAxLjE2NyAwIDAgMCAxLjE2NyAxLjE2Nmg2LjY2NmExLjE2NyAxLjE2NyAwIDAgMCAxLjE2Ny0xLjE2NnYtNi41SDhhMS41IDEuNSAwIDAgMS0xLjUtMS41di0yWm0tLjYxOCA1LjIxNWEuMTY3LjE2NyAwIDAgMSAuMjg1LjExOHYxLjMzM2EuMTY3LjE2NyAwIDAgMS0uMzM0IDBWNy41YzAtLjA0NC4wMTgtLjA4Ny4wNS0uMTE4WlxcXCIgZmlsbD1cXFwiQ3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcIkN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEzLjA4NyAyLjQzM2EuNjY3LjY2NyAwIDAgMC0uNTYtLjEzMyA1LjMzMyA1LjMzMyAwIDAgMS00LjE0Ny0uODQ3LjY2Ny42NjcgMCAwIDAtLjc2IDAgNS4zMzMgNS4zMzMgMCAwIDEtNC4xNDYuODQ3LjY2Ny42NjcgMCAwIDAtLjgwNy42NTNWNy45MmE2IDYgMCAwIDAgMi41MTMgNC44ODZsMi40MzQgMS43MzRhLjY2Ny42NjcgMCAwIDAgLjc3MyAwbDIuNDMzLTEuNzM0YTYgNiAwIDAgMCAyLjUxNC00Ljg4NlYyLjk1M2EuNjY3LjY2NyAwIDAgMC0uMjQ3LS41MlpNMTIgNy45MmE0LjY2NiA0LjY2NiAwIDAgMS0xLjk1MyAzLjhMOCAxMy4xOGwtMi4wNDYtMS40NkE0LjY2NyA0LjY2NyAwIDAgMSA0IDcuOTJ2LTQuMmE2LjY2NyA2LjY2NyAwIDAgMCA0LS45MjcgNi42NjcgNi42NjcgMCAwIDAgNCAuOTI3djQuMlpNOS4wMjcgNi4zOTNsLTEuNzkzIDEuOC0uNTk0LS42YS42Ny42NyAwIDAgMC0uOTQ2Ljk0N0w2Ljc2IDkuNjA2YS42NjcuNjY3IDAgMCAwIC45NDcgMEwxMCA3LjMzM2EuNjcuNjcgMCAxIDAtLjk0Ni0uOTQ3bC0uMDI3LjAwN1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTMuNjM0IDE3LjlhLjUuNSAwIDAgMS0uNTI0LjA0N2wtLjE0OS4yOTcuMTQ5LS4yOTdhLjUuNSAwIDAgMS0uMjAyLS4xODRsLS4yODMuMTc0LjI4My0uMTc0YS41LjUgMCAwIDEtLjA3NS0uMjYzdi0xNWEuNS41IDAgMCAxIC41LS41aDEzLjMzNGEuNS41IDAgMCAxIC41LjV2MTQuOTk5YS41LjUgMCAwIDEtLjI3NS40NDVoLS4wMDFhLjUuNSAwIDAgMS0uNTI1LS4wNDVsLTEuNzI0LTEuMjktLjItLjE1LS4yLjE1LTEuNzE3IDEuMjkxYS41LjUgMCAwIDEtLjYgMEwxMC4yIDE2LjYwOGwtLjItLjE1LS4yLjE1TDguMDc1IDE3LjlhLjUuNSAwIDAgMS0uNiAwbC0xLjcxNi0xLjI5MS0uMi0uMTUtLjIuMTUtMS43MjUgMS4yOVptMTItMS44LjUzMy4zOTlWM0gzLjgzM3YxMy40OTlsLjUzMy0uMzk5Ljg5Mi0uNjY2YS41LjUgMCAwIDEgLjYgMGwxLjcxNyAxLjI5LjIuMTUxLjItLjE1TDkuNyAxNS40MzNhLjUuNSAwIDAgMSAuNiAwbDEuNzI1IDEuMjkyLjIuMTUuMi0uMTUgMS43MTctMS4yOTJhLjUuNSAwIDAgMSAuNiAwbC44OTIuNjY3Wm0tMi4zLTkuNzY3aC01YS41LjUgMCAwIDEgMC0xaDVhLjUuNSAwIDAgMSAwIDFabTAgMy4zMzRINi42NjZhLjUuNSAwIDAgMSAwLTFoNi42NjZhLjUuNSAwIDAgMSAwIDFabTAgMy4zMzNINi42NjZhLjUuNSAwIDAgMSAwLTFoNi42NjZhLjUuNSAwIDEgMSAwIDFaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk04IDcuMmExLjMzMyAxLjMzMyAwIDEgMCAwLTIuNjY3QTEuMzMzIDEuMzMzIDAgMCAwIDggNy4yWm0tLjQ3MyA0LjYwNmEuNjY2LjY2NiAwIDAgMCAuOTQ2IDBMMTEuMiA5LjA3M2E0LjUyNyA0LjUyNyAwIDEgMC02LjQgMGwyLjcyNyAyLjczM1pNNC44MiA1LjU2YTMuMjA3IDMuMjA3IDAgMCAxIDEuNDItMi4zNjcgMy4yMDcgMy4yMDcgMCAwIDEgMy41MiAwIDMuMjEzIDMuMjEzIDAgMCAxIC41IDQuOTRMOCAxMC4zOTNsLTIuMjYtMi4yNmEzLjE4IDMuMTggMCAwIDEtLjkyLTIuNTczWm03Ljg0NiA3Ljc3M0gzLjMzM2EuNjY3LjY2NyAwIDEgMCAwIDEuMzMzaDkuMzM0YS42NjYuNjY2IDAgMSAwIDAtMS4zMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk00LjY2NiA0YS42NjcuNjY3IDAgMSAwIDAgMS4zMzMuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWm05LjgwNyAzLjg1My02LjMyLTYuMzA3YS42NjcuNjY3IDAgMCAwLS40ODctLjIxM2gtNGEuNjY3LjY2NyAwIDAgMC0uNDczLjE5M2wtMS42NjcgMS42NmEuNjY3LjY2NyAwIDAgMC0uMTkzLjQ3NHY0YS43LjcgMCAwIDAgLjE5My40NzNsNi4zMjcgNi4zMzNhLjcuNyAwIDAgMCAuNDczLjE5NC42NjYuNjY2IDAgMCAwIC40NzQtLjE5NGw1LjY3My01LjY3M2EuNjY3LjY2NyAwIDAgMCAwLS45NFpNOC4zMjYgMTMuMDZsLTUuNjYtNS42Njd2LTMuNDZsMS4yNjctMS4yNjdoMy40NTNsNS42NjcgNS42Ni00LjcyNyA0LjczNFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEwLjY2NyA5LjMzM0g1LjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaDUuMzM0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNabTAtMi42NjdoLTRhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNGg0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRabTIuNjY2LTRoLTJWMkEuNjY3LjY2NyAwIDEgMCAxMCAydi42NjZIOC42NjdWMmEuNjY3LjY2NyAwIDEgMC0xLjMzNCAwdi42NjZINlYyYS42NjcuNjY3IDAgMCAwLTEuMzMzIDB2LjY2NmgtMkEuNjY3LjY2NyAwIDAgMCAyIDMuMzMzdjkuMzMzYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjMuMzMzYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N1ptLS42NjYgMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjdINGEuNjY2LjY2NiAwIDAgMS0uNjY3LS42NjdWNGgxLjMzNHYuNjY2YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWNGgxLjMzM3YuNjY2YS42NjcuNjY3IDAgMCAwIDEuMzM0IDBWNEgxMHYuNjY2YS42NjYuNjY2IDAgMSAwIDEuMzMzIDBWNGgxLjMzNHY4LjY2NlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTYuNjY3IDUuMzMzaDRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM2gtNGEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWk01LjMzMyA4aDUuMzM0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRINS4zMzNhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNFptMCAyLjY2Nmg1LjMzNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzSDUuMzMzYS42NjcuNjY3IDAgMCAwIDAgMS4zMzNabTgtOS4zMzNIMi42NjdBLjY2Ny42NjcgMCAwIDAgMiAydjEyYS42NjcuNjY3IDAgMCAwIDEuMDY3LjUzM2wxLjM4LTEuMDMzIDEuMzczIDEuMDMzYS42NjYuNjY2IDAgMCAwIC44IDBMOCAxMy41bDEuMzggMS4wMzNhLjY2Ni42NjYgMCAwIDAgLjggMGwxLjM3My0xLjAzMyAxLjM4IDEuMDMzQS42NjcuNjY3IDAgMCAwIDE0IDE0VjJhLjY2Ni42NjYgMCAwIDAtLjY2Ny0uNjY3Wm0tLjY2NiAxMS4zMzMtLjcxNC0uNTMzYS42NjcuNjY3IDAgMCAwLS44IDBMOS43OCAxMy4xNjYgOC40IDEyLjEzM2EuNjY3LjY2NyAwIDAgMC0uOCAwbC0xLjM4IDEuMDMzLTEuMzczLTEuMDMzYS42NjcuNjY3IDAgMCAwLS44IDBsLS43MTQuNTMzdi0xMGg5LjMzNHYxMFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTggMThcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHJlY3Qgd2lkdGg9XFxcIjE4XFxcIiBoZWlnaHQ9XFxcIjE4XFxcIiByeD1cXFwiOVxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PHBhdGggZD1cXFwiTTIgOWE3IDcgMCAxIDEgMTQgMEE3IDcgMCAxIDEgMiA5WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PHBhdGggZD1cXFwiTTEzLjA4MyA4LjQxNmgtMy41di0zLjVhLjU4My41ODMgMCAwIDAtMS4xNjcgMHYzLjVoLTMuNWEuNTgzLjU4MyAwIDAgMCAwIDEuMTY3aDMuNXYzLjVhLjU4My41ODMgMCAwIDAgMS4xNjcgMHYtMy41aDMuNWEuNTgzLjU4MyAwIDAgMCAwLTEuMTY3WlxcXCIgZmlsbD1cXFwiI2ZmZlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTcgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEyLjkzNSA3LjMzM2gtNHYtNGEuNjY3LjY2NyAwIDEgMC0xLjMzMyAwdjRoLTRhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNGg0djRhLjY2Ny42NjcgMCAxIDAgMS4zMzQgMHYtNGg0YS42NjcuNjY3IDAgMSAwIDAtMS4zMzRaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDIwIDIwXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMCA1YTEgMSAwIDAgMC0xIDF2NGExIDEgMCAxIDAgMiAwVjZhMSAxIDAgMCAwLTEtMVptLjkyIDguNjJhLjc1OC43NTggMCAwIDAtLjA5LS4xOGwtLjEyLS4xNWEuOTk5Ljk5OSAwIDAgMC0xLjA5LS4yMSAxLjE1IDEuMTUgMCAwIDAtLjMzLjIxIDEgMSAwIDAgMC0uMjEgMS4wOS45LjkgMCAwIDAgLjU0LjU0Ljk0Ljk0IDAgMCAwIC43NiAwIC45LjkgMCAwIDAgLjU0LS41NGMuMDUxLS4xMi4wNzgtLjI1LjA4LS4zOGExLjM2MiAxLjM2MiAwIDAgMCAwLS4yLjYzOS42MzkgMCAwIDAtLjA4LS4xOFpNMTAgMGExMCAxMCAwIDEgMCAwIDIwIDEwIDEwIDAgMCAwIDAtMjBabTAgMThhOCA4IDAgMSAxIDAtMTYgOCA4IDAgMCAxIDAgMTZaXFxcIiBmaWxsPVxcXCIjRjZDMzk4XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAyMSAyMFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTAuNDY0IDEuNjY3QzUuODggMS42NjcgMi4xMyA1LjQxNyAyLjEzIDEwYzAgNC41ODQgMy43NSA4LjMzNCA4LjMzMyA4LjMzNHM4LjMzMy0zLjc1IDguMzMzLTguMzM0YzAtNC41ODMtMy43NS04LjMzMy04LjMzMy04LjMzM1ptMCAxMi41Yy0uNSAwLS44MzMtLjMzMy0uODMzLS44MzMgMC0uNS4zMzMtLjgzNC44MzMtLjgzNC41IDAgLjgzMy4zMzQuODMzLjgzNCAwIC41LS4zMzMuODMzLS44MzMuODMzWk0xMS4yOTcgMTBjMCAuNS0uMzMzLjgzNC0uODMzLjgzNC0uNSAwLS44MzMtLjMzNC0uODMzLS44MzRWNi42NjdjMC0uNS4zMzMtLjgzMy44MzMtLjgzMy41IDAgLjgzMy4zMzMuODMzLjgzM1YxMFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTMuMzMzIDUuMzMzaDkuMzM0YS42NjcuNjY3IDAgMSAwIDAtMS4zMzNIMy4zMzNhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptMTAuNjY3IDJIMmEuNjY3LjY2NyAwIDEgMCAwIDEuMzM0aDEyYS42NjcuNjY3IDAgMCAwIDAtMS4zMzRabS0xLjMzMyAzLjMzNEgzLjMzM2EuNjY3LjY2NyAwIDEgMCAwIDEuMzMzaDkuMzM0YS42NjYuNjY2IDAgMSAwIDAtMS4zMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0yIDMuMzMzaDEyYy40IDAgLjY2Ny0uMjY2LjY2Ny0uNjY2UzE0LjQgMiAxNCAySDJjLS40IDAtLjY2Ny4yNjctLjY2Ny42NjdzLjI2Ny42NjYuNjY3LjY2NlptMTIgOS4zMzRINy4zMzNjLS40IDAtLjY2Ni4yNjYtLjY2Ni42NjZzLjI2Ny42NjcuNjY3LjY2N0gxNGMuNCAwIC42NjctLjI2Ny42NjctLjY2N3MtLjI2Ny0uNjY2LS42NjctLjY2NlptMC01LjMzNEgyYy0uNCAwLS42NjcuMjY3LS42NjcuNjY3cy4yNjcuNjY3LjY2Ny42NjdoMTJjLjQgMCAuNjY3LS4yNjcuNjY3LS42NjdTMTQuNCA3LjMzMyAxNCA3LjMzM1pNMTQgMTBIMmMtLjQgMC0uNjY3LjI2Ny0uNjY3LjY2N3MuMjY3LjY2Ni42NjcuNjY2aDEyYy40IDAgLjY2Ny0uMjY2LjY2Ny0uNjY2UzE0LjQgMTAgMTQgMTBabTAtNS4zMzNIMmMtLjQgMC0uNjY3LjI2Ni0uNjY3LjY2NlMxLjYgNiAyIDZoMTJjLjQgMCAuNjY3LS4yNjcuNjY3LS42NjdTMTQuNCA0LjY2NyAxNCA0LjY2N1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBkPVxcXCJtOS41MjcgOS40Ni0yLjE5NCAyLjE5NC0uODYtLjg2YS42NjguNjY4IDAgMSAwLS45NDYuOTRsMS4zMzMgMS4zMzNhLjY2Ni42NjYgMCAwIDAgLjk0NyAwbDIuNjY2LTIuNjY3YS42NjcuNjY3IDAgMSAwLS45NDYtLjk0Wm0yLjc1My0zLjkxM2E0LjY2NyA0LjY2NyAwIDAgMC04LjkwNyAxLjI2NyAyLjY2NyAyLjY2NyAwIDAgMC0uMjUzIDUuMS42NjguNjY4IDAgMSAwIC40MjctMS4yNDcgMS4zMzMgMS4zMzMgMCAwIDEtLjg4LTEuMjY3QTEuMzMzIDEuMzMzIDAgMCAxIDQgOC4wNjdhLjY2Ny42NjcgMCAwIDAgLjY2Ny0uNjY3IDMuMzMzIDMuMzMzIDAgMCAxIDYuNDg2LTEuMDY2LjY2OC42NjggMCAwIDAgLjUyLjQ0IDIgMiAwIDAgMSAuMTYgMy44OTNBLjY3Mi42NzIgMCAxIDAgMTIgMTJoLjE2N2EzLjMzMyAzLjMzMyAwIDAgMCAuMTEzLTYuNDEzdi0uMDRaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAyMCAyMFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTQuMTY3IDcuNjRhLjgzNC44MzQgMCAwIDAtMS4xNzUgMEwxMCAxMC41OSA3LjA1IDcuNjRhLjgzMy44MzMgMCAxIDAtMS4xNzUgMS4xODRsMy41MzQgMy41MzNhLjgzMy44MzMgMCAwIDAgMS4xODMgMGwzLjU3NS0zLjUzM2EuODMzLjgzMyAwIDAgMCAwLTEuMTgzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCA4IDEyXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk04IDEuMDU0IDYuODA1IDAgMCA2bDYuODA1IDZMOCAxMC45NDcgMi4zOSA2IDggMS4wNTRaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDggMTJcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTAgMS4wNTQgMS4xOTUgMCA4IDZsLTYuODA1IDZMMCAxMC45NDcgNS42MSA2IDAgMS4wNTRaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMThcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIgZD1cXFwiTTQuMzExIDcuNDMgMy43NCA4aDEwLjkyNmExIDEgMCAwIDEgMCAySDMuNzRsLjU3MS41NjkgNC40IDQuMzg3YS45OTkuOTk5IDAgMCAxIDAgMS40MmwtLjAwMS4wMDJhMS4wMDEgMS4wMDEgMCAwIDEtMS40MiAwaC0uMDAxTC42MjUgOS43MTJhMSAxIDAgMCAxLS4yMDgtLjMyN0wuNDE1IDkuMzhhMSAxIDAgMCAxIDAtLjc2bC4wMDItLjAwN2ExIDEgMCAwIDEgLjIwOC0uMzI3bDYuNjY0LTYuNjY0QTEuMDA1IDEuMDA1IDAgMSAxIDguNzEgMy4wNDRMNC4zMSA3LjQzWlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNyAxNlxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBkPVxcXCJNNS45NTUgMTAuMzMzaDQuNjdsLTIuMzM2IDIuMjUzLTIuMzM0LTIuMjUzWm0xLjg0NCAzLjE5NGMuMjcuMjYuNzA0LjI2Ljk3NCAwbDMuMTctMy4wNmMuNDM2LS40MTQuMTMyLTEuMTM0LS40ODMtMS4xMzRINS4xMjZjLS42MTUgMC0uOTI2LjcyLS40OSAxLjE0bDMuMTYzIDMuMDUzWm0tMi42OC02Ljg2aDYuMzQxYy42MTUgMCAuOTI2LS43Mi40OS0xLjE0bC0zLjE3LTMuMDZhLjcwNi43MDYgMCAwIDAtLjk3NCAwbC0zLjE3IDMuMDZjLS40MzYuNDItLjEzMiAxLjE0LjQ4MyAxLjE0WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTMuNjM0IDE3LjlhLjUuNSAwIDAgMS0uNTI0LjA0N2wtLjE0OS4yOTcuMTQ5LS4yOTdhLjUuNSAwIDAgMS0uMjAyLS4xODRsLS4yODMuMTc0LjI4My0uMTc0YS41LjUgMCAwIDEtLjA3NS0uMjYzdi0xNWEuNS41IDAgMCAxIC41LS41aDEzLjMzNGEuNS41IDAgMCAxIC41LjV2MTQuOTk5YS41LjUgMCAwIDEtLjI3NS40NDVoLS4wMDFhLjUuNSAwIDAgMS0uNTI1LS4wNDVsLTEuNzI0LTEuMjktLjItLjE1LS4yLjE1LTEuNzE3IDEuMjkxYS41LjUgMCAwIDEtLjYgMEwxMC4yIDE2LjYwOGwtLjItLjE1LS4yLjE1TDguMDc1IDE3LjlhLjUuNSAwIDAgMS0uNiAwbC0xLjcxNi0xLjI5MS0uMi0uMTUtLjIuMTUtMS43MjUgMS4yOVptMTItMS44LjUzMy4zOTlWM0gzLjgzM3YxMy40OTlsLjUzMy0uMzk5Ljg5Mi0uNjY2YS41LjUgMCAwIDEgLjYgMGwxLjcxNyAxLjI5LjIuMTUxLjItLjE1TDkuNyAxNS40MzNhLjUuNSAwIDAgMSAuNiAwbDEuNzI1IDEuMjkyLjIuMTUuMi0uMTUgMS43MTctMS4yOTJhLjUuNSAwIDAgMSAuNiAwbC44OTIuNjY3Wm0tMi4zLTkuNzY3aC01YS41LjUgMCAwIDEgMC0xaDVhLjUuNSAwIDAgMSAwIDFabTAgMy4zMzRINi42NjZhLjUuNSAwIDAgMSAwLTFoNi42NjZhLjUuNSAwIDAgMSAwIDFabTAgMy4zMzNINi42NjZhLjUuNSAwIDAgMSAwLTFoNi42NjZhLjUuNSAwIDEgMSAwIDFaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMy42NDcgNC45MTNWNC44NmwtLjA0LS4xYS40NjYuNDY2IDAgMCAwLS4wNDctLjA2LjYyMy42MjMgMCAwIDAtLjA2LS4wOGwtLjA2LS4wNDctLjEwNy0uMDUzLTUtMy4wODdhLjY2Ny42NjcgMCAwIDAtLjcwNiAwTDIuNjY3IDQuNTJsLS4wNi4wNTMtLjA2LjA0N2EuNjI3LjYyNyAwIDAgMC0uMDYuMDguNDczLjQ3MyAwIDAgMC0uMDQ3LjA2bC0uMDQuMXYuMDUzYS43NjcuNzY3IDAgMCAwIDAgLjE3NHY1LjgyNmEuNjY3LjY2NyAwIDAgMCAuMzEzLjU2N2w1IDMuMDg3Yy4wMzEuMDE5LjA2NS4wMzIuMS4wNGguMDU0YS41NzQuNTc0IDAgMCAwIC4zNDYgMGguMDU0YS4zMTQuMzE0IDAgMCAwIC4xLS4wNGw0Ljk2Ni0zLjA4N2EuNjY4LjY2OCAwIDAgMCAuMzE0LS41NjdWNS4wODdhLjc2MS43NjEgMCAwIDAgMC0uMTc0Wm0tNi4zMTQgNy44OTRMMy42NjcgMTAuNTRWNi4yODdsMy42NjYgMi4yNnY0LjI2Wk04IDcuMzkzIDQuMjY3IDUuMDg3IDggMi43ODdsMy43MzMgMi4zTDggNy4zOTNabTQuMzMzIDMuMTQ3LTMuNjY2IDIuMjY3di00LjI2bDMuNjY2LTIuMjZ2NC4yNTNaXFxcIiBmaWxsPVxcXCIjQTY2RUU5XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNS4zMzQgNy4zMzRoNS4zMzNhLjY2Ny42NjcgMCAwIDAgLjUxMy0uMjQ3LjY2Ni42NjYgMCAwIDAgLjE1NC0uNTUzTDEwLjY2NyAzLjJBLjY2Ny42NjcgMCAwIDAgMTAgMi42NjdINmEuNjY3LjY2NyAwIDAgMC0uNjY2LjUzM2wtLjY2NyAzLjMzNGEuNjY3LjY2NyAwIDAgMCAuMTQuNTUzLjY2Ny42NjcgMCAwIDAgLjUyNy4yNDdaTTYuNTQ3IDRoMi45MDdsLjQgMkg2LjE0N2wuNC0yWm04LjEyIDUuMkEuNjY3LjY2NyAwIDAgMCAxNCA4LjY2N2gtNGEuNjY3LjY2NyAwIDAgMC0uNjY2LjUzM2wtLjY2NyAzLjMzNGEuNjY3LjY2NyAwIDAgMCAuMTQuNTUzLjY2Ni42NjYgMCAwIDAgLjUyNy4yNDdoNS4zMzNhLjY2Ny42NjcgMCAwIDAgLjUxMy0uMjQ3LjY2Ni42NjYgMCAwIDAgLjE1NC0uNTUzTDE0LjY2NyA5LjJabS00LjUyIDIuOC40LTJoMi45MDZsLjQgMmgtMy43MDZaTTYgOC42NjhIMmEuNjY3LjY2NyAwIDAgMC0uNjY2LjUzM2wtLjY2NyAzLjMzNGEuNjY3LjY2NyAwIDAgMCAuMTQuNTUzLjY2Ni42NjYgMCAwIDAgLjUyNy4yNDdoNS4zMzNhLjY2Ny42NjcgMCAwIDAgLjUxMy0uMjQ3LjY2Ni42NjYgMCAwIDAgLjE1NC0uNTUzTDYuNjY3IDkuMkEuNjY3LjY2NyAwIDAgMCA2IDguNjY3Wm0tMy44NTMgMy4zMzQuNC0yaDIuOTA3bC40IDJIMi4xNDdaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk05LjMzNCA1LjMzM0gxMEEuNjY3LjY2NyAwIDAgMCAxMCA0aC0uNjY2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNabTAgMi42NjdIMTBhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNGgtLjY2NmEuNjY3LjY2NyAwIDAgMCAwIDEuMzM0Wk02IDUuMzMzaC42NjdhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM0g2YS42NjcuNjY3IDAgMSAwIDAgMS4zMzNaTTYgOGguNjY3YS42NjcuNjY3IDAgMSAwIDAtMS4zMzRINkEuNjY3LjY2NyAwIDAgMCA2IDhabTggNS4zMzNoLS42NjZWMmEuNjY2LjY2NiAwIDAgMC0uNjY3LS42NjdIMy4zMzNBLjY2Ny42NjcgMCAwIDAgMi42NjcgMnYxMS4zMzNIMmEuNjY2LjY2NiAwIDEgMCAwIDEuMzMzaDEyYS42NjcuNjY3IDAgMCAwIDAtMS4zMzNabS01LjMzMyAwSDcuMzM0di0yLjY2N2gxLjMzM3YyLjY2N1ptMy4zMzMgMGgtMlYxMGEuNjY3LjY2NyAwIDAgMC0uNjY2LS42NjdINi42NjdBLjY2Ny42NjcgMCAwIDAgNiAxMHYzLjMzM0g0VjIuNjY2aDh2MTAuNjY3WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE3IDE2XFxcIj48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBkPVxcXCJtMTIuMzIyIDUuNjguMDkyLjIxMi4yMjEuMDY3YTIuODM0IDIuODM0IDAgMCAxLS4wOTQgNS40NS4xNjguMTY4IDAgMCAxLS4wODMtLjMyNWwuMDA4LS4wMDJhMi41IDIuNSAwIDAgMC0uMi00Ljg2NmwtLjAwOC0uMDAyYS4xNjcuMTY3IDAgMCAxLS4xMy0uMTEybC0uMDAyLS4wMDRhMy44MzQgMy44MzQgMCAwIDAtNy40NiAxLjIzNS4xNjcuMTY3IDAgMCAxLS4xNjYuMTY3IDEuODMzIDEuODMzIDAgMSAwIDAgMy42NjcuMTY3LjE2NyAwIDAgMSAwIC4zMzNoLS4wMDFhMi4xNjcgMi4xNjcgMCAwIDEtLjUxLTQuMjczbC4zMzYtLjA4LjA0NC0uMzQyYTQuMTY3IDQuMTY3IDAgMCAxIDcuOTUzLTEuMTI1Wm0tMi4zNyA0LjE5OS4wMDIuMDAzYS4xNjcuMTY3IDAgMCAxIDAgLjIzN2wtLjg2Ni44Ni0uMzU4LjM1NS4zNTguMzU0Ljg2Ni44NmEuMTY3LjE2NyAwIDAgMSAwIC4yMzdsLS4wMDIuMDAzYS4xNjYuMTY2IDAgMCAxLS4xODMuMDM3LjE2Ni4xNjYgMCAwIDEtLjA1NC0uMDM3bC0uODYtLjg2Ny0uMzU1LS4zNTctLjM1NS4zNTctLjg2Ljg2N2EuMTY2LjE2NiAwIDAgMS0uMTgzLjAzNy4xNjYuMTY2IDAgMCAxLS4wNTQtLjAzN2wtLjAwMy0uMDAzYS4xNjcuMTY3IDAgMCAxIDAtLjIzNmwuODY3LS44Ni4zNTgtLjM1NS0uMzU4LS4zNTUtLjg2NS0uODU5YS4xNy4xNyAwIDAgMSAuMjQtLjI0bC44NTguODY2LjM1NS4zNTcuMzU1LS4zNTcuODYtLjg2N2EuMTY3LjE2NyAwIDAgMSAuMjM3IDBaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE0IDE0XFxcIj48cGF0aCBmaWxsPVxcXCIjMkEyRjMwXFxcIiBkPVxcXCJtOC40MSA3IDQuMy00LjI5YTEuMDA0IDEuMDA0IDAgMCAwLTEuNDItMS40Mkw3IDUuNTlsLTQuMjktNC4zYTEuMDA0IDEuMDA0IDAgMSAwLTEuNDIgMS40Mkw1LjU5IDdsLTQuMyA0LjI5YS45OTkuOTk5IDAgMCAwIDAgMS40MiAxIDEgMCAwIDAgMS40MiAwTDcgOC40MWw0LjI5IDQuM2ExLjAwMSAxLjAwMSAwIDAgMCAxLjYzOS0uMzI1IDEgMSAwIDAgMC0uMjItMS4wOTVMOC40MSA3WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNCAxNFxcXCI+PHBhdGggZD1cXFwiTTcgLjMzMmMtMy42NjcgMC02LjY2NyAzLTYuNjY3IDYuNjY3IDAgMy42NjYgMyA2LjY2NiA2LjY2NyA2LjY2NiAzLjY2NiAwIDYuNjY2LTMgNi42NjYtNi42NjYgMC0zLjY2Ny0zLTYuNjY3LTYuNjY2LTYuNjY3Wm0yLjggNS41MzMtMy4yIDMuMmEuNjQ0LjY0NCAwIDAgMS0uOTM0IDBMNC4yIDcuNmEuNjQ0LjY0NCAwIDAgMSAwLS45MzQuNjQ0LjY0NCAwIDAgMSAuOTMzIDBsMSAxIDIuNzMzLTIuNzMzYS42NDQuNjQ0IDAgMCAxIC45MzQgMCAuNjQ1LjY0NSAwIDAgMSAwIC45MzNaXFxcIiBmaWxsPVxcXCIjMTc5OTdCXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDIwIDIwXFxcIj48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBkPVxcXCJNMTcuMTY3IDMuMzM0di0uNWgtMTF2MTFoMTF2LTEwLjVaTTguMjA0IDguNzVsLjQ2My0uNDY2IDEuMzcgMS4zNzYuMzU1LjM1Ny4zNTQtLjM1NyAzLjkyLTMuOTUuNDYzLjQ2NS00LjczNyA0Ljc4TDguMjA0IDguNzVabS01LjM3IDcuOTE2di41SDE0LjV2LjY2N0gzLjMzM2MtLjY0IDAtMS4xNjYtLjUyNi0xLjE2Ni0xLjE2N1Y1LjVoLjY2NnYxMS4xNjdabTMuODMzLTE0LjVoMTBjLjY0IDAgMS4xNjYuNTI2IDEuMTY2IDEuMTY3djEwYzAgLjY0LS41MjYgMS4xNjYtMS4xNjYgMS4xNjZoLTEwYy0uNjQgMC0xLjE2Ny0uNTI2LTEuMTY3LTEuMTY2di0xMGMwLS42NC41MjYtMS4xNjcgMS4xNjctMS4xNjdaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDEyIDEwXFxcIj48cGF0aCBkPVxcXCJtLjc1IDUuMjUgMy41IDMuNSA3LTcuNVxcXCIgc3Ryb2tlPVxcXCIjMTU1MzY2XFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuNVxcXCIgc3Ryb2tlLWxpbmVjYXA9XFxcInJvdW5kXFxcIiBzdHJva2UtbGluZWpvaW49XFxcInJvdW5kXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS1saW5lY2FwPVxcXCJyb3VuZFxcXCIgc3Ryb2tlLWxpbmVqb2luPVxcXCJyb3VuZFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIyXFxcIiBjbGFzcz1cXFwiY2hldnJvbl9zdmdfX2ZlYXRoZXIgY2hldnJvbl9zdmdfX2ZlYXRoZXItY2hldnJvbnMtcmlnaHRcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwibTEzIDE3IDUtNS01LTVNNiAxN2w1LTUtNS01XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxMCAxMVxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNSAuNWMtMi43NSAwLTUgMi4yNS01IDVzMi4yNSA1IDUgNSA1LTIuMjUgNS01LTIuMjUtNS01LTVabTEuODUgNi4xNWMuMi4yLjIuNSAwIC43LS4yLjItLjUuMi0uNyAwTDUgNi4yIDMuODUgNy4zNWMtLjIuMi0uNS4yLS43IDAtLjItLjItLjItLjUgMC0uN0w0LjMgNS41IDMuMTUgNC4zNWMtLjItLjItLjItLjUgMC0uNy4yLS4yLjUtLjIuNyAwTDUgNC44bDEuMTUtMS4xNWMuMi0uMi41LS4yLjcgMCAuMi4yLjIuNSAwIC43TDUuNyA1LjVsMS4xNSAxLjE1WlxcXCIgZmlsbD1cXFwiI0UzNEQ1QlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTggMTlcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTkgMi40MzRjLTQuMTI1IDAtNy41IDMuMzc1LTcuNSA3LjVzMy4zNzUgNy41IDcuNSA3LjUgNy41LTMuMzc1IDcuNS03LjUtMy4zNzUtNy41LTcuNS03LjVabTIuNzc1IDkuMjI1Yy4zLjMuMy43NSAwIDEuMDUtLjMuMy0uNzUuMy0xLjA1IDBMOSAxMC45ODRsLTEuNzI1IDEuNzI1Yy0uMy4zLS43NS4zLTEuMDUgMC0uMy0uMy0uMy0uNzUgMC0xLjA1TDcuOTUgOS45MzQgNi4yMjUgOC4yMDljLS4zLS4zLS4zLS43NSAwLTEuMDUuMy0uMy43NS0uMyAxLjA1IDBMOSA4Ljg4NGwxLjcyNS0xLjcyNWMuMy0uMy43NS0uMyAxLjA1IDAgLjMuMy4zLjc1IDAgMS4wNUwxMC4wNSA5LjkzNGwxLjcyNSAxLjcyNVpcXFwiIGZpbGw9XFxcIiNFMzRENUJcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiPjxwYXRoIGQ9XFxcIk04Ljc1IDUuNDU3aC0xLjVBMS4wODMgMS4wODMgMCAwIDAgNi4xNjcgNi41NHYzYTEuMDgzIDEuMDgzIDAgMCAwIDEuMDgzIDEuMDgzaDEuNUExLjA4NCAxLjA4NCAwIDAgMCA5LjgzMyA5LjU0YS40MTcuNDE3IDAgMCAxIC44MzQgMCAxLjkxNyAxLjkxNyAwIDAgMS0xLjkxNyAxLjkxN2gtMS41QTEuOTE2IDEuOTE2IDAgMCAxIDUuMzMzIDkuNTR2LTNBMS45MTcgMS45MTcgMCAwIDEgNy4yNSA0LjYyM2gxLjVhMS45MTcgMS45MTcgMCAwIDEgMS45MTcgMS45MTcuNDE2LjQxNiAwIDEgMS0uODM0IDBBMS4wODMgMS4wODMgMCAwIDAgOC43NSA1LjQ1N1pNNC4wMTggMi4wOEE3LjE2NyA3LjE2NyAwIDEgMSAxMS45ODIgMTQgNy4xNjcgNy4xNjcgMCAwIDEgNC4wMTggMi4wOFptLjQ2MyAxMS4yMjVBNi4zMzQgNi4zMzQgMCAxIDAgMTEuNTIgMi43NzRhNi4zMzQgNi4zMzQgMCAwIDAtNy4wNCAxMC41MzJaXFxcIiBmaWxsPVxcXCIjQTZCNUJBXFxcIiBzdHJva2U9XFxcIiNBNkI1QkFcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTQgMTRcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTkuOTE3IDQuMDgzYTQuNTE1IDQuNTE1IDAgMSAwLTUuODM0IDUuODM0IDQuNTE1IDQuNTE1IDAgMSAwIDUuODM0LTUuODM0Wm0tLjkzNC45MzRhMy40NTMgMy40NTMgMCAwIDEtLjAzIDEuNDQ3TDcuNTMyIDUuMDUxYy4yNTYtLjA2MS41MTgtLjA5My43ODEtLjA5NC4yMjQgMCAuNDQ2LjAyMi42NjUuMDY0bC4wMDYtLjAwNVptLS41NDggMi41NjZhMy41IDMuNSAwIDAgMS0uODUyLjg1Mkw1LjU2NSA2LjQxN2EzLjUgMy41IDAgMCAxIC44NTItLjg1MmwyLjAxOCAyLjAxOFptLTQuNjY3Ljg1MmEzLjM1NCAzLjM1NCAwIDEgMSA0LjY2Ny00LjY2N2gtLjE0NmE0LjUyNyA0LjUyNyAwIDAgMC00LjQ5NyA0LjU0NGMwIC4wNDcuMDA1LjEuMDA1LjE0NmwtLjAyOS0uMDIzWm0xLjIyNS41MTlhMy41NyAzLjU3IDAgMCAxLS4wNjQtLjY2NWMuMDAxLS4yNjMuMDMzLS41MjYuMDkzLS43ODJMNi40NCA4LjkyNWMtLjI1Ni4wNi0uNTE5LjA5Mi0uNzgyLjA5M2EzLjU3IDMuNTcgMCAwIDEtLjYzNi0uMDRsLS4wMjktLjAyNFptMy4zMiAyLjcxMmEzLjM2NSAzLjM2NSAwIDAgMS0yLjc3MS0xLjQ2NGguMTQ1YTQuNTI3IDQuNTI3IDAgMCAwIDQuNTIxLTQuNTE1di0uMTQ1YTMuMzU0IDMuMzU0IDAgMCAxLTEuODk2IDYuMTI0WlxcXCIgZmlsbD1cXFwiI0Y0Qjc4NFxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZmlsbD1cXFwiIzY4Nzk3RVxcXCIgZD1cXFwiTTEwLjc4MyA1LjIxOGEuNzUuNzUgMCAwIDAtMS4wNjUgMEw4IDYuOTQyIDYuMjgzIDUuMjE4YS43NTMuNzUzIDAgMSAwLTEuMDY1IDEuMDY0TDYuOTQzIDggNS4yMTggOS43MTdhLjc1Ljc1IDAgMCAwIDAgMS4wNjYuNzUuNzUgMCAwIDAgMS4wNjUgMEw4IDkuMDU2bDEuNzE4IDEuNzI2YS43NS43NSAwIDAgMCAxLjIyOS0uMjQ1Ljc1Ljc1IDAgMCAwLS4xNjQtLjgyTDkuMDU4IDhsMS43MjUtMS43MThhLjc0OC43NDggMCAwIDAgMC0xLjA2NFptMi41Mi0yLjUyQTcuNTAxIDcuNTAxIDAgMSAwIDIuNjk4IDEzLjMwMSA3LjUwMSA3LjUwMSAwIDEgMCAxMy4zMDMgMi42OTlabS0xLjA1OCA5LjU0N0E2IDYgMCAxIDEgMTQgOGE1Ljk2NSA1Ljk2NSAwIDAgMS0xLjc1NSA0LjI0NVpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTIgMTRcXFwiIGZpbGw9XFxcIm5vbmVcXFwiPjxwYXRoIGZpbGw9XFxcIiMyQTJGMzBcXFwiIGQ9XFxcIk00LjU4OCAzLjUgNy4yMTIuODhhLjQxOC40MTggMCAwIDAtLjU5MS0uNTkyTDQgMi45MTMgMS4zOC4yODhhLjQxOC40MTggMCAxIDAtLjU5My41OTFMMy40MTMgMy41Ljc4NyA2LjEyYS40MTcuNDE3IDAgMCAwIC4xMzYuNjg0LjQxNy40MTcgMCAwIDAgLjQ1Ni0uMDkxTDQgNC4wODhsMi42MiAyLjYyNWEuNDE3LjQxNyAwIDAgMCAuNjg0LS4xMzYuNDE3LjQxNyAwIDAgMC0uMDkyLS40NTZMNC41ODggMy41WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCA1MiA1MlxcXCI+PGNpcmNsZSBjeD1cXFwiMjZcXFwiIGN5PVxcXCIyNlxcXCIgcj1cXFwiMjUuMjVcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuNVxcXCIvPjxwYXRoIGQ9XFxcIk0zNy40IDM3LjgyYy0uMDUxLS42MDktLjA1LTUuMzgzLS4wMzYtOC4zMThhLjYuNiAwIDAgMC0uNTk4LS42MDRoLS4wMDNhLjYuNiAwIDAgMC0uNi41OThjMCAuMDIyLS4wMSAyLjEyLS4wMSA0LjIwNC4wMDIgMi4xMTIuMDA0IDMuMjI0LjAyOSAzLjgzNGwtOS44NDkgMi45NjNhLjU5Ny41OTcgMCAwIDAgLjA1NC0uMjQ4di03Ljg5N2EuNi42IDAgMSAwLTEuMjAyIDB2Ny44OTdjMCAuMDU1LjAwOS4xMDguMDIyLjE1OWwtOS41Ni0yLjkwOC0uMDA4LTcuOWEuNi42IDAgMCAwLS42LS42MDFoLS4wMDFhLjYuNiAwIDAgMC0uNi42bC4wMDcgOC4zNDdhLjYuNiAwIDAgMCAuNDI1LjU3NGwxMC44NjggMy4zMDRhLjU5Mi41OTIgMCAwIDAgLjM0OCAwbDEwLjkwMy0zLjI4YS42LjYgMCAwIDAgLjQxLS43MjRabS0uNDcyLS40NFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCIjMThBQ0IyXFxcIiBzdHJva2Utd2lkdGg9XFxcIi4zXFxcIi8+PHBhdGggZD1cXFwibTQwLjA0IDIzLjc0Ni0zLjM2NS0xLjkwMi0uMDEzLS4wMDZhMTIuMDA0IDEyLjAwNCAwIDAgMC0yLjMzMS0zLjI1OS42LjYgMCAxIDAtLjg0Ny44NTIgMTAuNzc4IDEwLjc3OCAwIDAgMSAyLjYyNCA0LjIxN2wtMS41ODIuNDMzYy0xLjI1OC0zLjYzMy00LjczMy02LjEzMi04LjYxMy02LjEzMmE5LjExNSA5LjExNSAwIDAgMC00LjU3MiAxLjIyOC42MDEuNjAxIDAgMCAwIC42MDMgMS4wMzkgNy45MDggNy45MDggMCAwIDEgMy45NjktMS4wNjYgNy45NSA3Ljk1IDAgMCAxIDcuNDUgNS4yNWwtMS41ODMuNDMzYTYuMzEyIDYuMzEyIDAgMCAwLTUuODY3LTQuMDQ3IDYuMjk1IDYuMjk1IDAgMCAwLTUuODc5IDQuMDc1bC0xLjU4Ni0uNDI1YTcuOTQgNy45NCAwIDAgMSAxLjg3MS0yLjk3LjYuNiAwIDEgMC0uODUtLjg0OSA5LjE0OCA5LjE0OCAwIDAgMC0yLjE4NCAzLjUwNmwtMS41ODMtLjQyNWMuMTAyLS4zMS4yMTgtLjYxMy4zNDYtLjkwOWEuNjA3LjYwNyAwIDAgMCAuMTcyLS4zNzYgMTAuNzc2IDEwLjc3NiAwIDAgMSA5LjY5My02LjFjMS44OSAwIDMuNzQ5LjQ5NyA1LjM3NSAxLjQzOWEuNjAxLjYwMSAwIDAgMCAuNjAyLTEuMDQgMTEuOTQ5IDExLjk0OSAwIDAgMC01Ljk3Ny0xLjYgMTEuOTggMTEuOTggMCAwIDAtMTAuODE0IDYuODZsLTMuMTM5IDEuNzc0YS42LjYgMCAwIDAgLjM1OCAxLjEybDEuMzItLjEzNi0xLjQ3MyAxLjg3YS41OTkuNTk5IDAgMCAwIC4zMDEuOTQ3bDExLjM2MSAzLjM3OGEuNjAxLjYwMSAwIDAgMCAuNjkxLS4yNzRsMS40MDktMi40MTggMS4zMSAyLjE3N2EuNi42IDAgMCAwIC42NzMuMjdsMTEuNDQ3LTMuMTI5YS42MDIuNjAyIDAgMCAwIC4zMTMtLjk1MWwtMS40ODctMS44ODkgMS40OTkuMTU2YS42LjYgMCAwIDAgLjM1OC0xLjEyWm0tMTQuMTI3LTEuNzU4YTUuMTA0IDUuMTA0IDAgMCAxIDQuNzAyIDMuMTY1bC00LjcwMyAxLjI4OC00LjcxLTEuMjY1YTUuMDkgNS4wOSAwIDAgMSA0LjcxMS0zLjE4OFptLTIuMTk2IDcuNjUyLTEwLjA2MS0yLjk5MiAxLjQ2LTEuODU1TDI1IDI3LjQzOWwtMS4yODIgMi4yMDFabTQuMzE1LS4yNC0xLjE4NC0xLjk2NCA5Ljg3LTIuNjQzIDEuNDQ4IDEuODM4LTEwLjEzNCAyLjc3Wm0tNi40NDctMTUuOTdhLjYwMS42MDEgMCAwIDAgMS4xNTUtLjMzbC0uOC0yLjgwM2EuNjAxLjYwMSAwIDAgMC0xLjE1Ni4zM2wuODAxIDIuODA0Wm03Ljc1NS40NzlhLjYwMS42MDEgMCAwIDAgLjc0Mi0uNDEybC44LTIuODA0YS42LjYgMCAxIDAtMS4xNTUtLjMzbC0uOCAyLjgwNGEuNi42IDAgMCAwIC40MTIuNzQyWm02LjU3IDMuNjc3YS42MDEuNjAxIDAgMCAwIC40Mi0uMTdsMi4wNTMtMi4wMDNhLjYuNiAwIDEgMC0uODM5LS44NmwtMi4wNTIgMi4wMDJhLjYuNiAwIDAgMCAuNDE5IDEuMDNabS0yMC41NC0uMjIxYS42MDIuNjAyIDAgMCAwIC44NC0uODZsLTIuMDAzLTEuOTUyYS42LjYgMCAxIDAtLjgzOC44NmwyLjAwMSAxLjk1MlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCIjMThBQ0IyXFxcIiBzdHJva2Utd2lkdGg9XFxcIi4zXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDUyIDUyXFxcIj48Y2lyY2xlIGN4PVxcXCIyNlxcXCIgY3k9XFxcIjI2XFxcIiByPVxcXCIyNS4yNVxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS41XFxcIi8+PHBhdGggZD1cXFwiTTIwLjg3MSAxNy4yMDhBMTAuMTY3IDEwLjE2NyAwIDAgMSAyNiAxNS44MjNhMTAuMTEgMTAuMTEgMCAwIDEgNy4xOTYgMi45OC41NjYuNTY2IDAgMCAwIC44MDQgMEEuNTcuNTcgMCAwIDAgMzQgMThhMTEuMjQgMTEuMjQgMCAwIDAtOC0zLjMxM2MtMi4wMDggMC0zLjk4LjUzMi01LjcwMyAxLjU0YS41NjguNTY4IDAgMSAwIC41NzQuOTgyWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcIiMxOEFDQjJcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjNcXFwiLz48cGF0aCBkPVxcXCJNMjYgMTJjLTMuNzggMC03LjMyMSAxLjQ4Mi05Ljk3NCA0LjE3NWEuNTcuNTcgMCAwIDAgLjgxLjc5OEExMi43NyAxMi43NyAwIDAgMSAyNiAxMy4xMzdjNy4wOTIgMCAxMi44NjMgNS43NyAxMi44NjMgMTIuODYzIDAgMi4xODQtLjU0OCA0LjI0NC0xLjUxMyA2LjA0N2wtMS43Ny0yLjcwN2E0LjM4MSA0LjM4MSAwIDAgMCAxLjczNC0zLjQ5IDQuMzkyIDQuMzkyIDAgMCAwLTQuMzg4LTQuMzg4IDQuMzQgNC4zNCAwIDAgMC0yLjM4OS43MDcgNS45MyA1LjkzIDAgMCAwLTkuMTIzLjA2IDQuMzc3IDQuMzc3IDAgMCAwLTIuNDc5LS43NjcgNC4zOTIgNC4zOTIgMCAwIDAtNC4zODcgNC4zODdjMCAxLjQxNS42NzQgMi42NzQgMS43MTYgMy40NzdsLTEuNjM1IDIuNjgxYTEyLjg2IDEyLjg2IDAgMCAxIC4yMDQtMTIuMzkzLjU2OS41NjkgMCAxIDAtLjk4Ny0uNTY1QTE0IDE0IDAgMCAwIDEyIDI2YzAgNS4wOTUgMi43MzYgOS41NjQgNi44MTcgMTIuMDEzYS41NjYuNTY2IDAgMCAwIC4zMjUuMTg5QTEzLjkxMSAxMy45MTEgMCAwIDAgMjYgNDBjNy43MTkgMCAxNC02LjI4IDE0LTE0cy02LjI4MS0xNC0xNC0xNFptNi45MjUgMTAuNTk5YTMuMjUzIDMuMjUzIDAgMCAxIDMuMjUgMy4yNSAzLjI1MyAzLjI1MyAwIDAgMS0zLjI1IDMuMjVjLS41NzYgMC0xLjEyNy0uMTUtMS42MTgtLjQzNEE1LjkwNiA1LjkwNiAwIDAgMCAzMS45NCAyNmE1LjkwMyA1LjkwMyAwIDAgMC0uNzU3LTIuODk2IDMuMjE3IDMuMjE3IDAgMCAxIDEuNzQtLjUwNVpNMjYgMjEuMTk2QTQuODEgNC44MSAwIDAgMSAzMC44MDMgMjYgNC44MSA0LjgxIDAgMCAxIDI2IDMwLjgwNCA0LjgxIDQuODEgMCAwIDEgMjEuMTk1IDI2IDQuODEgNC44MSAwIDAgMSAyNiAyMS4xOTZabS0xMC4zMTYgNC42NTNhMy4yNTMgMy4yNTMgMCAwIDEgNS4wOTItMi42NzhBNS45MDUgNS45MDUgMCAwIDAgMjAuMDU4IDI2YzAgLjkzMy4yMTcgMS44MTYuNjAxIDIuNjAzYTMuMjUzIDMuMjUzIDAgMCAxLTQuOTc2LTIuNzU0Wm0zLjM4MSAxMC45ODFhMTIuOTYyIDEyLjk2MiAwIDAgMS0zLjc3OS0zLjcxOWwxLjk1OS0zLjIxM2MuNTIuMjE4IDEuMDkuMzM5IDEuNjg5LjMzOS44MzIgMCAxLjYyNy0uMjMgMi4zMjEtLjY2NWE2IDYgMCAwIDAgMS4zIDEuMjY1bC0zLjQ5IDUuOTkzWk0yNiAzOC44NjRjLTIuMTQ2IDAtNC4xNy0uNTMtNS45NTEtMS40NjNsMy40OS01Ljk5NWE1LjkgNS45IDAgMCAwIDIuNDYuNTM1Yy44NjEgMCAxLjY4LS4xODUgMi40MTgtLjUxNmwzLjQ5NSA1Ljk5N0ExMi43ODQgMTIuNzg0IDAgMCAxIDI2IDM4Ljg2NFptNi44OTctMi4wMS0zLjQ5LTUuOTljLjQ5LS4zNDUuOTI2LS43NjIgMS4yOTItMS4yMzVhNC4zNDkgNC4zNDkgMCAwIDAgMi4yMjYuNjA3Yy41OSAwIDEuMTUyLS4xMTggMS42NjYtLjMzbDIuMTEgMy4yMjRhMTIuOTczIDEyLjk3MyAwIDAgMS0zLjgwNCAzLjcyM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCIjMThBQ0IyXFxcIiBzdHJva2Utd2lkdGg9XFxcIi4zXFxcIi8+PHBhdGggZD1cXFwiTTI2IDI5LjgwM2EzLjgyMyAzLjgyMyAwIDAgMCAzLjA0OC0xLjUyOC41NjkuNTY5IDAgMCAwLS45MS0uNjggMi42NjggMi42NjggMCAwIDEtNC4zMzctLjA4Ni41NjkuNTY5IDAgMCAwLS45MzguNjQzQTMuODA0IDMuODA0IDAgMCAwIDI2IDI5LjgwM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCIjMThBQ0IyXFxcIiBzdHJva2Utd2lkdGg9XFxcIi4zXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDEyIDE0XFxcIj48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBkPVxcXCJNOC4xNjcgM3YuNWgzLjE2NmEuMTY3LjE2NyAwIDAgMSAwIC4zMzNoLTEuMTY2djcuODMzYTEuNSAxLjUgMCAwIDEtMS41IDEuNUgzLjMzM2ExLjUgMS41IDAgMCAxLTEuMDYtLjQzOWwtLjM1NC4zNTQuMzU0LS4zNTRhMS41IDEuNSAwIDAgMS0uNDQtMS4wNlYzLjgzMkguNjY3YS4xNjcuMTY3IDAgMSAxIDAtLjMzM2gzLjE2NlYyLjMzM2ExLjUgMS41IDAgMCAxIDEuNS0xLjVoMS4zMzRhMS41IDEuNSAwIDAgMSAxLjUgMS41VjNabS0uODM0LjVoLjVWMi4zMzNhMS4xNjcgMS4xNjcgMCAwIDAtMS4xNjYtMS4xNjdINS4zMzNhMS4xNjcgMS4xNjcgMCAwIDAtMS4xNjYgMS4xNjdWMy41aDMuMTY2Wm0tNC42NjYuMzMzaC0uNXY3LjgzM2ExLjE2NyAxLjE2NyAwIDAgMCAxLjE2NiAxLjE2N2g1LjMzNGExLjE2NyAxLjE2NyAwIDAgMCAxLjE2Ni0xLjE2N1YzLjgzM0gyLjY2N1ptMi4xMTggNi42MThhLjE2Ny4xNjcgMCAwIDEtLjI4NS0uMTE4di00YS4xNjcuMTY3IDAgMSAxIC4zMzMgMHY0YS4xNjcuMTY3IDAgMCAxLS4wNDguMTE4Wm0yLjY2NiAwYS4xNjcuMTY3IDAgMCAxLS4yODQtLjExOHYtNGEuMTY3LjE2NyAwIDAgMSAuMzMzIDB2NGEuMTY3LjE2NyAwIDAgMS0uMDQ5LjExOFpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTcgMTZcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgZD1cXFwiTTEwLjYyNCA1LjY2N2gtNC42N0w4LjI5IDMuNDE0bDIuMzM1IDIuMjUzWk04Ljc4IDIuNDc0YS43MDYuNzA2IDAgMCAwLS45NzQgMGwtMy4xNyAzLjA2Yy0uNDM2LjQxMy0uMTMyIDEuMTMzLjQ4MyAxLjEzM2g2LjMzNGMuNjE1IDAgLjkyNi0uNzIuNDktMS4xNEw4Ljc4IDIuNDc0Wm0yLjY4IDYuODZINS4xMTljLS42MTUgMC0uOTI2LjcyLS40OSAxLjE0bDMuMTcgMy4wNmMuMjcuMjYuNzA0LjI2Ljk3NCAwbDMuMTctMy4wNmMuNDM2LS40Mi4xMzItMS4xNC0uNDgzLTEuMTRaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIm0xMy44MDcgMTEuMTQtMS42MTQtMS42MTRhLjY2Ni42NjYgMCAwIDAtLjk0NiAwTDguODYgMTEuOTEzYS42NjcuNjY3IDAgMCAwLS4xOTMuNDczVjE0YS42NjcuNjY3IDAgMCAwIC42NjYuNjY2aDEuNjE0YS42NjguNjY4IDAgMCAwIC40NzMtLjE5M2wyLjM4Ny0yLjM4N2EuNjY3LjY2NyAwIDAgMCAwLS45NDZabS0zLjE0IDIuMTkzSDEwdi0uNjY3bDEuNzItMS43Mi42NjcuNjY3LTEuNzIgMS43MlptLTQgMEg0YS42NjYuNjY2IDAgMCAxLS42NjctLjY2N1YzLjMzM0EuNjY3LjY2NyAwIDAgMSA0IDIuNjY2aDMuMzMzdjJhMiAyIDAgMCAwIDIgMmgydi42NjdhLjY2Ny42NjcgMCAwIDAgMS4zMzQgMFY1Ljk2YS44OC44OCAwIDAgMC0uMDQtLjE4di0uMDZhLjcxNC43MTQgMCAwIDAtLjEyNy0uMTg3bC00LTRhLjcxMy43MTMgMCAwIDAtLjE4Ny0uMTI3LjIxMy4yMTMgMCAwIDAtLjA2IDBsLS4yMTMtLjA3M0g0YTIgMiAwIDAgMC0yIDJ2OS4zMzNhMiAyIDAgMCAwIDIgMmgyLjY2N2EuNjY3LjY2NyAwIDEgMCAwLTEuMzMzWm0yLTkuNzI3IDEuNzI2IDEuNzI3aC0xLjA2YS42NjcuNjY3IDAgMCAxLS42NjYtLjY2N3YtMS4wNlpNNS4zMzMgOS4zMzNoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzaC00YS42NjcuNjY3IDAgMSAwIDAgMS4zMzNabTAtMi42NjdINmEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzaC0uNjY3YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNabTEuMzM0IDRINS4zMzNhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNGgxLjMzNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTQgMTRcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGcgY2xpcC1wYXRoPVxcXCJ1cmwoI2RvdWJsZS10aWNrX3N2Z19fYSlcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCI+PHBhdGggZD1cXFwiTTkuODQ1IDMuNzA2YS42NDcuNjQ3IDAgMCAwLS45NDcgMGwtNS4wNyA1LjE0TDEuNzMzIDYuNzJhLjY0Ny42NDcgMCAwIDAtLjk0NyAwIC42NjkuNjY5IDAgMCAwIDAgLjk2bDIuNTcgMi42MDRhLjYxLjYxIDAgMCAwIC40NzIuMjA2LjYxLjYxIDAgMCAwIC40NzQtLjIwNmw1LjU0My01LjYyYS42NjkuNjY5IDAgMCAwIDAtLjk2WlxcXCIvPjxwYXRoIGQ9XFxcIk0xMy42MzIgMy4zNmExLjIzNCAxLjIzNCAwIDAgMC0xLjc4MyAwTDcuMTk3IDguMDc4bC0xLjY3Ny0xLjdhMS4yMzQgMS4yMzQgMCAwIDAtMS43ODMgMCAxLjI1NiAxLjI1NiAwIDAgMCAwIDEuNzg0bDIuNTcgMi42MDRjLjEwMS4xMDMuMjI3LjIwNS4zODcuMjc3LjE2NC4wNzQuMzMzLjEwNC41MDMuMTA0LjE3MSAwIC4zNC0uMDMuNTA0LS4xMDQuMTYtLjA3Mi4yODYtLjE3NC4zODgtLjI3N2w1LjU0My01LjYyYTEuMjU2IDEuMjU2IDAgMCAwIDAtMS43ODRaXFxcIiBzdHJva2U9XFxcIiNmZmZcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4xNzVcXFwiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPVxcXCJkb3VibGUtdGlja19zdmdfX2FcXFwiPjxwYXRoIGZpbGw9XFxcIiNmZmZcXFwiIGQ9XFxcIk0wIDBoMTR2MTRIMHpcXFwiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB3aWR0aD1cXFwiMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiPjxwYXRoIGZpbGw9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZT1cXFwiIzE1NTM2NlxcXCIgZD1cXFwiTTguMTY3IDkuNzMzdjEuMjA4bC44NTMtLjg1NC44NjctLjg2N0EuMTYuMTYgMCAwIDEgMTAgOS4xNjdjLjAzIDAgLjA3LjAxLjExMy4wNTNhLjE2LjE2IDAgMCAxIC4wNTQuMTE0LjE2LjE2IDAgMCAxLS4wNTQuMTEzbC0yIDJjLS4wMzcuMDM3LS4wNTQuMDQ1LS4wNTguMDQ2QS4xMzYuMTM2IDAgMCAxIDggMTEuNWEuMTM2LjEzNiAwIDAgMS0uMDU1LS4wMDcuMjA1LjIwNSAwIDAgMS0uMDU4LS4wNDZsLTItMmEuMTYuMTYgMCAwIDEtLjA1NC0uMTEzLjE2LjE2IDAgMCAxIC4wNTQtLjExNEEuMTYuMTYgMCAwIDEgNiA5LjE2N2MuMDMgMCAuMDcuMDEuMTEzLjA1M2wuODY3Ljg2Ny44NTMuODU0VjJjMC0uMDg2LjAyNy0uMTIuMDM3LS4xMy4wMS0uMDEuMDQ0LS4wMzcuMTMtLjAzNy4wODYgMCAuMTIuMDI3LjEzLjAzNy4wMS4wMS4wMzcuMDQ0LjAzNy4xM3Y3LjczM1ptMi41LTMuMjMzSDEyYy44NTcgMCAxLjUuNjQzIDEuNSAxLjV2NC42NjdjMCAuODU3LS42NDMgMS41LTEuNSAxLjVINGMtLjg1NyAwLTEuNS0uNjQzLTEuNS0xLjVWOGMwLS44NTcuNjQzLTEuNSAxLjUtMS41aDEuMzMzYy4wODcgMCAuMTIuMDI3LjEzLjAzNy4wMS4wMS4wMzcuMDQzLjAzNy4xMyAwIC4wODYtLjAyNy4xMi0uMDM3LjEzLS4wMS4wMS0uMDQzLjAzNy0uMTMuMDM3SDRjLS4zMTQgMC0uNjE0LjEwNi0uODM3LjMzLS4yMjMuMjIyLS4zMy41MjMtLjMzLjgzNnY0LjY2N2MwIC4zMTMuMTA3LjYxNC4zMy44MzcuMjIzLjIyMy41MjMuMzMuODM3LjMzaDhjLjMxNCAwIC42MTQtLjEwNy44MzctLjMzLjIyMy0uMjIzLjMzLS41MjQuMzMtLjgzN1Y4YzAtLjMxMy0uMTA3LS42MTQtLjMzLS44MzdhMS4xNjYgMS4xNjYgMCAwIDAtLjgzNy0uMzNoLTEuMzMzYy0uMDg3IDAtLjEyLS4wMjYtLjEzLS4wMzYtLjAxLS4wMS0uMDM3LS4wNDQtLjAzNy0uMTMgMC0uMDg3LjAyNy0uMTIuMDM3LS4xMy4wMS0uMDEuMDQzLS4wMzcuMTMtLjAzN1pcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIm0xMi43OTYgNS44Ny4wMjMuMDdhLjMwNS4zMDUgMCAwIDEgLjAxNC4wNTR2Ni42NzJhMS41IDEuNSAwIDAgMS0xLjUgMS41SDQuNjY3YTEuNSAxLjUgMCAwIDEtMS41LTEuNVYzLjMzM2ExLjUgMS41IDAgMCAxIDEuNS0xLjVoMy45NzhhLjIzMy4yMzMgMCAwIDEgLjAzMy4wMTRsLjExLjA2aC4wNDVsMy45NjMgMy45NjJabS0zLjExLTIuNjE3LS44NTMtLjg1NHYyLjI2N0ExLjE2NyAxLjE2NyAwIDAgMCAxMCA1LjgzM2gyLjI2N2wtLjg1My0uODU0LTEuNzI3LTEuNzI2Wk04LjUgMi42NjZ2LS41SDQuNjY3QTEuMTY3IDEuMTY3IDAgMCAwIDMuNSAzLjMzM3Y5LjMzM2ExLjE2NyAxLjE2NyAwIDAgMCAxLjE2NyAxLjE2N2g2LjY2NmExLjE2NyAxLjE2NyAwIDAgMCAxLjE2Ny0xLjE2N3YtNi41SDEwYTEuNSAxLjUgMCAwIDEtMS41LTEuNXYtMlptLS4zMzMgNy4wNnYxLjIzN2wuODYtLjg5LjE4OS0uMTk1YS4xNy4xNyAwIDAgMSAuMjM3LjI0MmwtMS4zMjggMS4zMjhhLjE2Ny4xNjcgMCAwIDEtLjA1Mi4wMzJsLS4wMTEuMDA0LS4wMS4wMDVhLjEyNy4xMjcgMCAwIDEtLjEwMyAwbC0uMDEtLjAwNS0uMDEyLS4wMDRhLjE2Ny4xNjcgMCAwIDEtLjA1Mi0uMDMybC0xLjMyOC0xLjMyOWEuMTcuMTcgMCAwIDEgLjIzNy0uMjQxbC4xOS4xOTYuODYuODg5VjhhLjE2Ny4xNjcgMCAwIDEgLjMzMyAwdjEuNzI2WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwibTIuNjI2IDEzLjM3NC4yMzYtLjIzNi0uMjM2LjIzNmExIDEgMCAwIDAgLjcwNy4yOTNoOS4zMzRhMSAxIDAgMCAwIC43MDctLjI5M2wtLjIzNi0uMjM2LjIzNi4yMzZhMSAxIDAgMCAwIC4yOTMtLjcwN1YxMGEuMzMzLjMzMyAwIDAgMSAuNTY5LS4yMzZsLjIzNS0uMjM1LS4yMzUuMjM1YS4zMzMuMzMzIDAgMCAxIC4wOTcuMjM2djIuNjY3YTEuNjY3IDEuNjY3IDAgMCAxLTEuNjY2IDEuNjY2SDMuMzMzYTEuNjY3IDEuNjY3IDAgMCAxLTEuNjY2LTEuNjY2VjEwYzAtLjA4OC4wMzUtLjE3My4wOTctLjIzNkwxLjUzIDkuNTNsLjIzNS4yMzVhLjMzMy4zMzMgMCAwIDEgLjQ3MiAwbC4yMzUtLjIzNS0uMjM1LjIzNWEuMzMzLjMzMyAwIDAgMSAuMDk3LjIzNnYyLjY2N2ExIDEgMCAwIDAgLjI5My43MDdabTUuMjU1LTMuMDY2LS4wMDctLjAwMy0uMDA3LS4wMDJhLjMzMy4zMzMgMCAwIDEtLjEwOC0uMDY4TDUuMDk2IDcuNTdhLjMzNi4zMzYgMCAwIDEgLjM2Ni0uNTQ4bC4xMjgtLjMwOC0uMTI4LjMwOGMuMDQuMDE3LjA3OC4wNDEuMTA5LjA3Mkw3LjA5NyA4LjYzbC41Ny41NzJWMmEuMzMzLjMzMyAwIDEgMSAuNjY2IDB2Ny4yMDFsLjU3LS41NzIgMS41MjYtMS41MzNhLjMzNi4zMzYgMCAwIDEgLjQ3NS40NzVsLTIuNjYzIDIuNjY0YS4zMzMuMzMzIDAgMCAxLS4xMDguMDY4bC0uMDA3LjAwMi0uMDA3LjAwM2EuMjkyLjI5MiAwIDAgMS0uMjM4IDBaXFxcIiBmaWxsPVxcXCJjdXJyZW50Y29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudGNvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTAgNlxcXCI+PHBhdGggZD1cXFwiTTguOTMyLjg3OGEuNS41IDAgMCAxIDAgLjcxTDUuMzU3IDUuMTIxbC0uMDAyLjAwM2EuNS41IDAgMCAxLS43MSAwdi0uMDAxTDEuMTEgMS41ODlhLjUuNSAwIDAgMSAwLS43MVYuODc3YS41LjUgMCAwIDEgLjcwNSAwbDIuOTUgMi45NS4yMzMuMjMzLjIzNi0uMjMyTDguMjI2Ljg3OVYuODc4YS41LjUgMCAwIDEgLjcwNiAwWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAyMCAyMFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTcuNSAxMGEuODMzLjgzMyAwIDAgMC0uODMzLjgzM3Y1YS44MzMuODMzIDAgMCAxLS44MzQuODM0SDQuMTY3YS44MzMuODMzIDAgMCAxLS44MzQtLjgzNFY0LjE2N2EuODMzLjgzMyAwIDAgMSAuODM0LS44MzRoNWEuODMzLjgzMyAwIDEgMCAwLTEuNjY2aC01YTIuNSAyLjUgMCAwIDAtMi41IDIuNXYxMS42NjZhMi41IDIuNSAwIDAgMCAyLjUgMi41aDExLjY2NmEyLjUgMi41IDAgMCAwIDIuNS0yLjV2LTVBLjgzMy44MzMgMCAwIDAgMTcuNSAxMFpNNSAxMC42MzN2My41MzRhLjgzMy44MzMgMCAwIDAgLjgzMy44MzNoMy41MzRhLjgzMy44MzMgMCAwIDAgLjU5MS0uMjQybDUuNzY3LTUuNzc1IDIuMzY3LTIuMzE2YS44MzMuODMzIDAgMCAwIDAtMS4xODRsLTMuNTM0LTMuNTc1YS44MzQuODM0IDAgMCAwLTEuMTgzIDBsLTIuMzUgMi4zNTktNS43ODMgNS43NzVhLjgzNC44MzQgMCAwIDAtLjI0Mi41OTFabTguOTY3LTYuOTU4IDIuMzU4IDIuMzU4LTEuMTgzIDEuMTg0LTIuMzU5LTIuMzU5IDEuMTg0LTEuMTgzWm0tNy4zIDcuMyA0Ljk0MS00Ljk0MiAyLjM1OSAyLjM1OS00Ljk0MiA0Ljk0MUg2LjY2N3YtMi4zNThaXFxcIiBmaWxsPVxcXCIjNjg3OTdFXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNyAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMy43MTggMTJoMi44MjdhLjY2Ni42NjYgMCAwIDAgLjQ3My0uMTk0bDQuNjE0LTQuNjIgMS44OTMtMS44NTNhLjY2OC42NjggMCAwIDAgMC0uOTQ3bC0yLjgyNy0yLjg2YS42NjcuNjY3IDAgMCAwLS45NDYgMGwtMS44OCAxLjg4Ny00LjYyNyA0LjYyYS42NjcuNjY3IDAgMCAwLS4xOTMuNDczdjIuODI3YS42NjcuNjY3IDAgMCAwIC42NjYuNjY3Wm02LjUwNy05LjA2IDEuODg3IDEuODg2LS45NDcuOTQ3LTEuODg3LTEuODg3Ljk0Ny0uOTQ2Wm0tNS44NCA1Ljg0IDMuOTUzLTMuOTU0IDEuODg3IDEuODg3LTMuOTUzIDMuOTUzSDQuMzg1VjguNzhabTEwIDQuNTUzaC0xMmEuNjY3LjY2NyAwIDEgMCAwIDEuMzMzaDEyYS42NjYuNjY2IDAgMSAwIDAtMS4zMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgY2xhc3M9XFxcImV4Y2xhbWF0aW9uLXdhcm5pbmdfc3ZnX19lbGVtZW50cy1zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxOCAxOFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNOSA0Ljc5NWEuODMzLjgzMyAwIDAgMC0uODM0LjgzNHYzLjMzM2EuODMzLjgzMyAwIDAgMCAxLjY2NyAwVjUuNjI5YS44MzMuODMzIDAgMCAwLS44MzQtLjgzNFptLjc2NiA3LjE4NGEuNjMyLjYzMiAwIDAgMC0uMDc1LS4xNWwtLjEtLjEyNWEuODMzLjgzMyAwIDAgMC0uOTA4LS4xNzUuOTU4Ljk1OCAwIDAgMC0uMjc1LjE3NS44MzMuODMzIDAgMCAwLS4xNzUuOTA4Ljc1Ljc1IDAgMCAwIC40NS40NS43ODMuNzgzIDAgMCAwIC42MzMgMCAuNzUuNzUgMCAwIDAgLjQ1LS40NS44MzQuODM0IDAgMCAwIC4wNjctLjMxNyAxLjEzMyAxLjEzMyAwIDAgMCAwLS4xNjYuNTMyLjUzMiAwIDAgMC0uMDY3LS4xNVpNOC45OTkuNjI5YTguMzMzIDguMzMzIDAgMSAwIDAgMTYuNjY2QTguMzMzIDguMzMzIDAgMCAwIDkgLjYzWm0wIDE1QTYuNjY2IDYuNjY2IDAgMSAxIDkgMi4yOTYgNi42NjYgNi42NjYgMCAwIDEgOSAxNS42M1pcXFwiIGZpbGw9XFxcIiNGNEI3ODRcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjEgMjBcXFwiPjxtYXNrIGlkPVxcXCJleHBvcnRfc3ZnX19hXFxcIiB3aWR0aD1cXFwiMjFcXFwiIGhlaWdodD1cXFwiMjBcXFwiIHg9XFxcIjBcXFwiIHk9XFxcIjBcXFwiIG1hc2tVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiIHN0eWxlPVxcXCJtYXNrLXR5cGU6YWxwaGFcXFwiPjxwYXRoIGZpbGw9XFxcIiNEOUQ5RDlcXFwiIGQ9XFxcIk0uNSAwaDIwdjIwSC41elxcXCIvPjwvbWFzaz48ZyBtYXNrPVxcXCJ1cmwoI2V4cG9ydF9zdmdfX2EpXFxcIj48cGF0aCBmaWxsPVxcXCIjMTU1MzY2XFxcIiBkPVxcXCJNNC42NjcgMTcuNWMtLjQ1OSAwLS44NTEtLjE2My0xLjE3Ny0uNDlBMS42MDUgMS42MDUgMCAwIDEgMyAxNS44MzNWNC4xNjdjMC0uNDU5LjE2My0uODUxLjQ5LTEuMTc3LjMyNi0uMzI3LjcxOC0uNDkgMS4xNzctLjQ5SDEwLjV2MS42NjdINC42Njd2MTEuNjY2aDExLjY2NlYxMEgxOHY1LjgzM2MwIC40NTktLjE2My44NTEtLjQ5IDEuMTc3LS4zMjYuMzI3LS43MTguNDktMS4xNzcuNDlINC42NjdabTMuOTE2LTQuNDE3LTEuMTY2LTEuMTY2IDcuNzUtNy43NWgtM1YyLjVIMTh2NS44MzNoLTEuNjY3di0zbC03Ljc1IDcuNzVaXFxcIi8+PC9nPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTcgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEyLjc1MSA3LjIxM2EuNzMyLjczMiAwIDAgMC0uNS4xOTUuNjQ3LjY0NyAwIDAgMC0uMjA4LjQ3MnY0Ljc4NmEuNjQ3LjY0NyAwIDAgMS0uMjA3LjQ3Mi43MzEuNzMxIDAgMCAxLS41MDEuMTk1SDMuNTQzYS43MzEuNzMxIDAgMCAxLS41LS4xOTUuNjQ3LjY0NyAwIDAgMS0uMjA4LS40NzJWNS4zMzNjMC0uMTc3LjA3NC0uMzQ2LjIwNy0uNDcxYS43MzEuNzMxIDAgMCAxIC41MDEtLjE5Nmg1LjA4NmMuMTg4IDAgLjM2OC0uMDcuNS0uMTk1QS42NDcuNjQ3IDAgMCAwIDkuMzM4IDRhLjY0Ny42NDcgMCAwIDAtLjIwNy0uNDcyLjczMS43MzEgMCAwIDAtLjUwMS0uMTk1SDMuNTQzYy0uNTY0IDAtMS4xMDQuMjEtMS41MDMuNTg2YTEuOTQyIDEuOTQyIDAgMCAwLS42MjIgMS40MTR2Ny4zMzNjMCAuNTMuMjI0IDEuMDQuNjIyIDEuNDE1LjM5OS4zNzUuOTQuNTg1IDEuNTAzLjU4NWg3Ljc5MmMuNTYzIDAgMS4xMDQtLjIxIDEuNTAyLS41ODUuMzk5LS4zNzUuNjIzLS44ODQuNjIzLTEuNDE1VjcuODhhLjY0Ny42NDcgMCAwIDAtLjIwOC0uNDcyLjczMi43MzIgMCAwIDAtLjUtLjE5NVptMi43NzctNS40NjdhLjY5LjY5IDAgMCAwLS4zODMtLjM2Ljc0Ny43NDcgMCAwIDAtLjI2OS0uMDUzaC00LjI1YS43MzIuNzMyIDAgMCAwLS41LjE5NS42NDcuNjQ3IDAgMCAwLS4yMDguNDcyYzAgLjE3Ni4wNzUuMzQ2LjIwNy40NzFhLjczMi43MzIgMCAwIDAgLjUwMS4xOTVoMi41NDNsLTcuMjk2IDYuODZhLjY2Ni42NjYgMCAwIDAtLjE1NS4yMTcuNjMzLjYzMyAwIDAgMCAuMTU1LjczLjc0Ni43NDYgMCAwIDAgMS4wMDYgMGw3LjI4OS02Ljg2N1Y2YzAgLjE3Ni4wNzUuMzQ2LjIwNy40NzFhLjczMi43MzIgMCAwIDAgLjUwMS4xOTVjLjE4OCAwIC4zNjgtLjA3LjUwMS0uMTk1QS42NDcuNjQ3IDAgMCAwIDE1LjU4NSA2VjJhLjYzMy42MzMgMCAwIDAtLjA1Ny0uMjU0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxN1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTQuNjEzIDcuOThDMTMuMjY3IDQuODUzIDEwLjczMyAyLjkxMyA4IDIuOTEzYy0yLjczMyAwLTUuMjY3IDEuOTQtNi42MTMgNS4wNjdhLjY2Ny42NjcgMCAwIDAgMCAuNTMzQzIuNzMzIDExLjY0IDUuMjY3IDEzLjU4IDggMTMuNThjMi43MzMgMCA1LjI2Ny0xLjk0IDYuNjEzLTUuMDY3YS42NjcuNjY3IDAgMCAwIDAtLjUzM1pNOCAxMi4yNDZjLTIuMTEzIDAtNC4xMTMtMS41MjYtNS4yNjctNCAxLjE1NC0yLjQ3MyAzLjE1NC00IDUuMjY3LTQgMi4xMTMgMCA0LjExMyAxLjUyNyA1LjI2NyA0LTEuMTU0IDIuNDc0LTMuMTU0IDQtNS4yNjcgNFpNOCA1LjU4YTIuNjY3IDIuNjY3IDAgMSAwIDAgNS4zMzNBMi42NjcgMi42NjcgMCAwIDAgOCA1LjU4Wm0wIDRhMS4zMzMgMS4zMzMgMCAxIDEgMC0yLjY2N0ExLjMzMyAxLjMzMyAwIDAgMSA4IDkuNThaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE1MCAxNTBcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGNpcmNsZSBjeD1cXFwiNzVcXFwiIGN5PVxcXCI3NVxcXCIgcj1cXFwiNzVcXFwiIGZpbGw9XFxcInVybCgjZm9sZGVyX3N2Z19fYSlcXFwiLz48cGF0aCBkPVxcXCJNNDUuNTQ4IDU0LjIyYzAtMi4zOCAwLTMuNTcuNDctNC40NzVhNC4xNzggNC4xNzggMCAwIDEgMS43ODItMS43ODFjLjkwNi0uNDcgMi4wOTUtLjQ3IDQuNDc1LS40N2gxNy41NTdjMS4wMTIgMCAxLjUxOCAwIDEuOTk1LjExMy40MDYuMDk2Ljc5NS4yNTMgMS4xNTQuNDY1LjQyMy4yNS43ODguNiAxLjUxNyAxLjMwMmwuNDMuNDE2Yy43My43MDIgMS4wOTQgMS4wNTMgMS41MTcgMS4zMDIuMzYuMjEyLjc0OC4zNjkgMS4xNTQuNDY1LjQ3Ny4xMTQuOTgzLjExNCAxLjk5Ni4xMTRoMTcuNzE4YzIuMzc5IDAgMy41NjggMCA0LjQ3NC40N2E0LjE4MiA0LjE4MiAwIDAgMSAxLjc4MiAxLjc4MmMuNDcuOTA2LjQ3IDIuMDk1LjQ3IDQuNDc0djQwLjA0NmMwIDEuMTkgMCAxLjc4NC0uMjM1IDIuMjM3YTIuMDgzIDIuMDgzIDAgMCAxLS44OTEuODkxYy0uNDUzLjIzNS0xLjA0OC4yMzUtMi4yMzcuMjM1SDUxLjYwMmMtMi4xNDEgMC0zLjIxMiAwLTQuMDI3LS40MjNhMy43NjMgMy43NjMgMCAwIDEtMS42MDQtMS42MDRjLS40MjMtLjgxNS0uNDIzLTEuODg1LS40MjMtNC4wMjdWNTQuMjJaXFxcIiBmaWxsPVxcXCJ1cmwoI2ZvbGRlcl9zdmdfX2IpXFxcIi8+PHBhdGggZD1cXFwiTTY2LjY1NiA2Mi4zMTFoMzguNTMxYzEuNjcyIDAgMi45MDQgMCAzLjgzLjEzMy45Mi4xMzMgMS40OTkuMzkgMS44OTQuODc3LjM5NC40ODYuNTI4IDEuMTA2LjQ2NyAyLjAzNC0uMDYxLjkzMy0uMzE0IDIuMTQtLjY1OCAzLjc3NWwtNS44OTQgMjcuOTkyYy0uMjM1IDEuMTE3LS40MDggMS45MzgtLjYyMSAyLjU2Mi0uMjExLjYxOS0uNDU1IDEuMDIzLS44MTkgMS4zMTgtLjM2My4yOTUtLjgwOC40NS0xLjQ1OC41MjktLjY1NC4wOC0xLjQ5My4wODEtMi42MzQuMDgxSDUwLjE1N2MuOTItMS4xMDEgMS40MjItMi4yNDUgMS45MTctMy44NjEuMjI1LS43MzQuNDUtMS41NjguNzEyLTIuNTQybC4xNjgtLjYyMmMuMzM3LTEuMjQ4Ljc0Mi0yLjcxNCAxLjI4LTQuNDc0IDEuNTUyLTUuMDYgNS4xMDUtMTcuMjQzIDYuOTg4LTIzLjcyMi4yOTctMS4wMjEuNTE1LTEuNzcuNzU1LTIuMzM5LjIzOC0uNTYzLjQ5LS45My44NDItMS4xOTQuMzUyLS4yNjUuNzc0LS40MDQgMS4zODItLjQ3NS42MTItLjA3MiAxLjM5Mi0uMDcyIDIuNDU1LS4wNzJaXFxcIiBmaWxsPVxcXCIjQjlEREZGXFxcIiBzdHJva2U9XFxcInVybCgjZm9sZGVyX3N2Z19fYylcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjM5XFxcIi8+PHBhdGggZD1cXFwiTTY2LjY1NiA2Mi4zMTFoMzguNTMxYzEuNjcyIDAgMi45MDQgMCAzLjgzLjEzMy45Mi4xMzMgMS40OTkuMzkgMS44OTQuODc3LjM5NC40ODYuNTI4IDEuMTA2LjQ2NyAyLjAzNC0uMDYxLjkzMy0uMzE0IDIuMTQtLjY1OCAzLjc3NWwtNS44OTQgMjcuOTkyYy0uMjM1IDEuMTE3LS40MDggMS45MzgtLjYyMSAyLjU2Mi0uMjExLjYxOS0uNDU1IDEuMDIzLS44MTkgMS4zMTgtLjM2My4yOTUtLjgwOC40NS0xLjQ1OC41MjktLjY1NC4wOC0xLjQ5My4wODEtMi42MzQuMDgxSDUwLjE1N2MuOTItMS4xMDEgMS40MjItMi4yNDUgMS45MTctMy44NjEuMjI1LS43MzQuNDUtMS41NjguNzEyLTIuNTQybC4xNjgtLjYyMmMuMzM3LTEuMjQ4Ljc0Mi0yLjcxNCAxLjI4LTQuNDc0IDEuNTUyLTUuMDYgNS4xMDUtMTcuMjQzIDYuOTg4LTIzLjcyMi4yOTctMS4wMjEuNTE1LTEuNzcuNzU1LTIuMzM5LjIzOC0uNTYzLjQ5LS45My44NDItMS4xOTQuMzUyLS4yNjUuNzc0LS40MDQgMS4zODItLjQ3NS42MTItLjA3MiAxLjM5Mi0uMDcyIDIuNDU1LS4wNzJaXFxcIiBmaWxsPVxcXCJ1cmwoI2ZvbGRlcl9zdmdfX2QpXFxcIiBmaWxsLW9wYWNpdHk9XFxcIi44XFxcIiBzdHJva2U9XFxcInVybCgjZm9sZGVyX3N2Z19fZSlcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjM5XFxcIi8+PHBhdGggZD1cXFwiTTU1Ljk5MyA1MS44MjhoOC4zNTZhMS45MzMgMS45MzMgMCAwIDEgMCAzLjg2NmgtOC4zNTZhMS45MzMgMS45MzMgMCAxIDEgMC0zLjg2NlpcXFwiIGZpbGw9XFxcInVybCgjZm9sZGVyX3N2Z19fZilcXFwiIGZpbGwtb3BhY2l0eT1cXFwiLjlcXFwiIHN0cm9rZT1cXFwidXJsKCNmb2xkZXJfc3ZnX19nKVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuMzEyXFxcIi8+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJmb2xkZXJfc3ZnX19hXFxcIiB4MT1cXFwiNzVcXFwiIHkxPVxcXCIwXFxcIiB4Mj1cXFwiNzVcXFwiIHkyPVxcXCIxNTBcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjRTNFQ0ZBXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIxXFxcIiBzdG9wLWNvbG9yPVxcXCIjREFFN0ZGXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImZvbGRlcl9zdmdfX2JcXFwiIHgxPVxcXCI2Mi40MlxcXCIgeTE9XFxcIjU5LjM3NFxcXCIgeDI9XFxcIjEwNi41NTRcXFwiIHkyPVxcXCI3NS43MTlcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjN0ZDMEZCXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIxXFxcIiBzdG9wLWNvbG9yPVxcXCIjNDA4OEY0XFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImZvbGRlcl9zdmdfX2NcXFwiIHgxPVxcXCI0Ni41OTNcXFwiIHkxPVxcXCI2NC45NTFcXFwiIHgyPVxcXCI2OC43NDZcXFwiIHkyPVxcXCIxMTguMzcyXFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiLjc2NlxcXCIgc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImZvbGRlcl9zdmdfX2RcXFwiIHgxPVxcXCIxMDguNVxcXCIgeTE9XFxcIjk4XFxcIiB4Mj1cXFwiNDFcXFwiIHkyPVxcXCI5OS41XFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiI0I0RDRGN1xcXCIvPjxzdG9wIG9mZnNldD1cXFwiLjEyOFxcXCIgc3RvcC1jb2xvcj1cXFwiIzhCQkRGQlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiLjI2MlxcXCIgc3RvcC1jb2xvcj1cXFwiIzkxQzJGQlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiLjc1OVxcXCIgc3RvcC1jb2xvcj1cXFwiIzlGQ0ZGRFxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiIzlFQ0VGRFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJmb2xkZXJfc3ZnX19lXFxcIiB4MT1cXFwiNDYuNTkzXFxcIiB5MT1cXFwiNjQuOTUxXFxcIiB4Mj1cXFwiNjguNzQ2XFxcIiB5Mj1cXFwiMTE4LjM3MlxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIi43NjZcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJmb2xkZXJfc3ZnX19mXFxcIiB4MT1cXFwiNTIuOTUyXFxcIiB5MT1cXFwiNTEuMzkzXFxcIiB4Mj1cXFwiNzAuMTA2XFxcIiB5Mj1cXFwiNTYuNDYxXFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImZvbGRlcl9zdmdfX2dcXFwiIHgxPVxcXCI1MS43ODJcXFwiIHkxPVxcXCI1Mi41NjJcXFwiIHgyPVxcXCI2MC4xNzFcXFwiIHkyPVxcXCI1NS44NVxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNjYgNjNcXFwiPjxwYXRoIGQ9XFxcIk0uODMgNTguOTFWMjguN2g4LjcyNXYzMC4yMUguODNabTM1LjAxNy0yLjkzYy0xLjk4MyAyLjQxNi00LjgzNSAzLjc3Ny04LjYxNSAzLjc3Ny02LjA3NiAwLTEwLjk3MS0zLjc3OC0xMC45NzEtOS42MDMgMC01Ljc2MyA0Ljg5OC04LjYxIDExLjc3Ny04Ljk4NSA1LjI3LS4zMSA2Ljk0My0uODY4IDYuOTQzLTIuNjYzIDAtMS43MzYtMS42MTEtMi45MTMtNC40NjMtMi45MTMtMy40NyAwLTQuOTYgMS43MzYtNS4xNDUgMy41OTRoLTguNDk0Yy40MzQtNi42MjggNS4zOTItMTEuMjE0IDEzLjcwMS0xMS4yMTQgOC4xMjIgMCAxMy4zMyA0LjM5OCAxMy4zMyAxMi42Mzd2MTguNDYzaC03LjI1NGwtLjgwOS0zLjA5NFptLTEwLjc4Ni02LjE5NWMwIDEuNzM2IDEuNTUgMi43ODggNC4wMyAyLjc4OCAzLjM0OCAwIDYuMDEyLTEuODU4IDYuMDEyLTUuNjM4VjQ1Ljgycy0xLjYxMS43NDMtNC45Ni45M2MtMy42NTguMTg1LTUuMDgyIDEuMzYyLTUuMDgyIDMuMDM1Wm0zOC4zMDcgOS40MTZjLTYuNjMyIDAtMTAuNDc3LTMuODQtMTAuNDc3LTEwLjUzM1YzNi44MzZoLTUuMDgzdi04LjExN2g1LjA4M3YtNC40NjFsOC44MDItNy40MzRWMjguNzJoNy42MjZ2OC4xMTdoLTcuNjI2VjQ3LjQzYzAgMi45MTIgMS45MjIgMy41OTMgMy43MiAzLjU5M2E5LjUzOSA5LjUzOSAwIDAgMCAzLjcyMS0uODA1djcuOTkyYzAgLjAwMi0yLjM1NS45OTItNS43NjYuOTkyWk0uMDggMTkuNjM0YzAtMi44NSAyLjIzLTUuMTQyIDUuMDgyLTUuMTQyYTUuMTMgNS4xMyAwIDAgMSA1LjE0NSA1LjE0MmMwIDIuNzg4LTIuMjkzIDUuMDgtNS4xNDUgNS4wOGE1LjA2MyA1LjA2MyAwIDAgMS01LjA4Mi01LjA4Wk03NS44MDkgNTguOTFWMjguN2g4LjcyNnYzMC4yMWgtOC43MjZabTIwLjE1NC0zOS4yMDJjMC0xLjQtLjE5LTIuNzYtLjUzNy00LjA1M2ExNS41MSAxNS41MSAwIDAgMC0xLjU2OS0zLjc3MiAxNS42NjUgMTUuNjY1IDAgMCAwLTIuNDg5LTMuMjQxIDE1LjczMiAxNS43MzIgMCAwIDAtNy4wMTgtNC4wNSAxNS42NTggMTUuNjU4IDAgMCAwLTQuMDUyLS41MzNoLS4wMDZhMTUuNzUgMTUuNzUgMCAwIDAtNC4wNDkuNTNjLTEuMzQuMzU3LTIuNjA1Ljg4OC0zLjc3NyAxLjU2NUExNS42NyAxNS42NyAwIDAgMCA2OS4yMiA4LjY0YTE1Ljc3IDE1Ljc3IDAgMCAwLTIuNDkyIDMuMjQyIDE1LjY0OCAxNS42NDggMCAwIDAtMS41NzIgMy43NzRsMi4yNDIuNjAyYTEzLjQyNyAxMy40MjcgMCAwIDEgMy40NjItNS45NzggMTMuNDI2IDEzLjQyNiAwIDAgMSA1Ljk4NC0zLjQ1IDEzLjQyNiAxMy40MjYgMCAwIDEgMy40NDgtLjQ1aC4wMDZjMS4xOTUgMCAyLjM1LjE1OCAzLjQ1NC40NTNhMTMuNDEyIDEzLjQxMiAwIDAgMSA1Ljk4IDMuNDQ5Yy44MTkuODIgMS41MzEgMS43NSAyLjExOSAyLjc2YTEzLjMgMTMuMyAwIDAgMSAxLjc5MyA2LjY2NHYuMDEyYTEzLjM4IDEzLjM4IDAgMCAxLS40NTEgMy40NDMgMTMuMjE3IDEzLjIxNyAwIDAgMS0xLjMzNCAzLjIxOWwyLjAxIDEuMTZhMTUuNTM5IDE1LjUzOSAwIDAgMCAxLjU2Ni0zLjc3OCAxNS43IDE1LjcgMCAwIDAgLjUzLTQuMDQxbC0uMDAyLS4wMTJaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PHBhdGggZD1cXFwiTTEwMC4wMjMgMTkuNzA4YTE5LjY1NSAxOS42NTUgMCAwIDAtMi42NDQtOS44NTUgMTkuODEgMTkuODEgMCAwIDAtNy4yMi03LjIxM0ExOS42MTIgMTkuNjEyIDAgMCAwIDg1LjQwMy42NyAxOS44MSAxOS44MSAwIDAgMCA4MC4yOTggMGgtLjAwNmMtMS43NjUgMC0zLjQ3My4yMzMtNS4xMDIuNjY2YTE5LjUxMyAxOS41MTMgMCAwIDAtNC43NTkgMS45NjkgMTkuODI0IDE5LjgyNCAwIDAgMC00LjA4NiAzLjEzNGwxLjIzMSAxLjIzYTE4LjEwNiAxOC4xMDYgMCAwIDEgMy43MjYtMi44NTUgMTcuODAzIDE3LjgwMyAwIDAgMSA0LjM0LTEuNzkzIDE4LjA4NCAxOC4wODQgMCAwIDEgNC42NDgtLjYwN2guMDA1YTE3Ljk1IDE3Ljk1IDAgMCAxIDEyLjcxMyA1LjI2MSAxNy45MzMgMTcuOTMzIDAgMCAxIDUuMjczIDEyLjcwM3YuMDExYTE4LjAzIDE4LjAzIDAgMCAxLS42MDcgNC42NDMgMTcuNjc1IDE3LjY3NSAwIDAgMS0xLjc5NyA0LjMzNyAxOC4wMjMgMTguMDIzIDAgMCAxLTIuODU3IDMuNzIzbDEuMjMxIDEuMjMxYTE5Ljc0MyAxOS43NDMgMCAwIDAgMy4xMzYtNC4wODQgMTkuNiAxOS42IDAgMCAwIDEuOTctNC43NTZjLjQzNC0xLjYyNS42NjYtMy4zMzIuNjY2LTUuMDk0di0uMDFaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PHBhdGggZD1cXFwiTTkwLjk0NSAxNi44NTVhMTAuOTQ4IDEwLjk0OCAwIDAgMC0xLjEwNC0yLjY1NSAxMS4xNTUgMTEuMTU1IDAgMCAwLTEuNzUtMi4yOCAxMS4wNDggMTEuMDQ4IDAgMCAwLTIuMjgyLTEuNzQ3QTEwLjk2NCAxMC45NjQgMCAwIDAgODAuMyA4LjY5NWgtLjAwNmMtLjk4NyAwLTEuOTQuMTMtMi44NDkuMzcyYTEwLjkxIDEwLjkxIDAgMCAwLTIuNjYgMS4xIDEwLjk5NCAxMC45OTQgMCAwIDAtNC4wMzcgNC4wMjcgMTEgMTEgMCAwIDAtMS40ODQgNS41MXYuMDEyYTEwLjkyNCAxMC45MjQgMCAwIDAgMS40NzYgNS41MDVsMy4wMTMtMS43MzhhNy41MzUgNy41MzUgMCAwIDEtMS4wMS0zLjc3di0uMDFhNy41NTMgNy41NTMgMCAwIDEgNy41NDgtNy41MzNoLjAwNmE3LjUyNCA3LjUyNCAwIDAgMSAzLjc2OSAxLjAxMiA3LjU1IDcuNTUgMCAwIDEgMy41MTMgNC41NzJjLjE2Ny42Mi4yNTggMS4yNzYuMjU4IDEuOTUxaDMuNDc5Yy4wMDMtLjk4NC0uMTI4LTEuOTQtLjM3Mi0yLjg1WlxcXCIgZmlsbD1cXFwiI2ZmZlxcXCIvPjxwYXRoIGQ9XFxcIk04Ny41ODUgMTcuNzY1YTcuNTQyIDcuNTQyIDAgMCAwLTEuOTU1LTMuMzhsLTEuNjQgMS42MzlhNS4yNjQgNS4yNjQgMCAwIDEgMS4zNTQgMi4zNDMgNS4xODQgNS4xODQgMCAwIDEgMCAyLjcwNSA1LjIzOSA1LjIzOSAwIDAgMS0zLjY5OCAzLjY5NSA1LjE5NSA1LjE5NSAwIDAgMS0yLjcwNyAwIDUuMjk2IDUuMjk2IDAgMCAxLTEuMjYtLjUyMWwtMS4xNiAyLjAwOGE3LjUyOCA3LjUyOCAwIDAgMCAzLjc3NCAxLjAxYy42NzcgMCAxLjMzLS4wOTEgMS45NTQtLjI1NmE3LjU1MyA3LjU1MyAwIDAgMCA0LjU4NC0zLjUxNyA3LjU0NCA3LjU0NCAwIDAgMCAxLjAxMy0zLjc3MSA3LjUgNy41IDAgMCAwLS4yNTktMS45NTVaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIi8+PHBhdGggZD1cXFwiTTkxLjg1MyAxMy4wNDZhMTMuNDM1IDEzLjQzNSAwIDAgMC0yLjEyLTIuNzY1IDEzLjM0MyAxMy4zNDMgMCAwIDAtMi43NjYtMi4xMTggMTMuMjg3IDEzLjI4NyAwIDAgMC02LjY3NS0xLjc5Yy0xLjE5NyAwLTIuMzUyLjE1OS0zLjQ1Ni40NTQtMS4xNDEuMzAzLTIuMjIuNzU3LTMuMjE4IDEuMzM2YTEzLjQzNiAxMy40MzYgMCAwIDAtMi43NjcgMi4xMTggMTMuMzM0IDEzLjMzNCAwIDAgMC0yLjEyIDIuNzY1IDEzLjI3MiAxMy4yNzIgMCAwIDAtMS43OSA2LjY3aDIuMzJjMC0uOTg2LjEzMS0xLjk0Mi4zNzUtMi44NTJhMTEuMDg4IDExLjA4OCAwIDAgMSAyLjg1NS00Ljk0IDExLjAwMiAxMS4wMDIgMCAwIDEgMi4yODQtMS43NSAxMS4wMyAxMS4wMyAwIDAgMSAyLjY2LTEuMTA0IDExLjAyIDExLjAyIDAgMCAxIDIuODU0LS4zNzRjLjk4OCAwIDEuOTQ0LjEzIDIuODU1LjM3NGExMS4wOTkgMTEuMDk5IDAgMCAxIDQuOTQzIDIuODUzIDEwLjk5IDEwLjk5IDAgMCAxIDEuNzUxIDIuMjgzYy40NzcuODI2Ljg1MiAxLjcxNiAxLjEwNCAyLjY1OGwyLjI0Mi0uNjAyYTEzLjE5NCAxMy4xOTQgMCAwIDAtMS4zMy0zLjIxNlpcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiLz48cGF0aCBkPVxcXCJNOTcuNjc0IDE1LjA2M2ExNy43OTEgMTcuNzkxIDAgMCAwLTEuOC00LjMzNiAxOC4wNDMgMTguMDQzIDAgMCAwLTYuNTg2LTYuNTgzIDE3LjkzIDE3LjkzIDAgMCAwLTguOTk2LTIuNDA4Yy0xLjYxMiAwLTMuMTcyLjIxMy00LjY1Ny42MWExNy44MTcgMTcuODE3IDAgMCAwLTQuMzM5IDEuNzk4IDE4LjAzMiAxOC4wMzIgMCAwIDAtNi41ODYgNi41ODNsMi4wMTIgMS4xNjNhMTUuNjc2IDE1LjY3NiAwIDAgMSAyLjQ4OS0zLjI0NWMuOTY1LS45NjQgMi4wNTctMS44IDMuMjQ2LTIuNDg3YTE1LjcwNiAxNS43MDYgMCAwIDEgMy43NzctMS41NjkgMTUuNjggMTUuNjggMCAwIDEgOC4xMSAwYzEuMzQuMzU4IDIuNjA2Ljg5MSAzLjc3OCAxLjU2OWExNS42ODUgMTUuNjg1IDAgMCAxIDMuMjQ2IDIuNDg3IDE1LjY3NiAxNS42NzYgMCAwIDEgMi40ODkgMy4yNDUgMTUuNjg0IDE1LjY4NCAwIDAgMSAxLjU2OSAzLjc3NCAxNS42NTQgMTUuNjU0IDAgMCAxIDAgOC4xMDZsMi4yNDUuNjAxYy4zOTctMS40ODMuNjEtMy4wNDMuNjEtNC42NTRhMTcuODc1IDE3Ljg3NSAwIDAgMC0uNjA4LTQuNjU0WlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIvPjxwYXRoIGQ9XFxcIk04MC4yOTMgMjQuOTQ0YzIuODg4IDAgNS4yMy0yLjM0IDUuMjMtNS4yMjdhNS4yMjkgNS4yMjkgMCAwIDAtNS4yMy01LjIyNyA1LjIyOCA1LjIyOCAwIDAgMC01LjIzIDUuMjI3IDUuMjI4IDUuMjI4IDAgMCAwIDUuMjMgNS4yMjdabTIwLjYxNSAxNS40MzZWMjkuNTQzaDIuMzA0VjQwLjM4aC0yLjMwNFptNi42MTgtMy43ODd2My43ODdoLTIuMTk2di03LjU3NmgyLjE2NXYuNTI1YTIuNTM5IDIuNTM5IDAgMCAxIDEuNzkzLS43MTJjMS44NTYgMCAzLjA3OSAxLjIwNiAzLjA3OSAzLjM1NXY0LjQwNWgtMi4xOTZ2LTQuMjM1YzAtLjgwMi0uMzcyLTEuNDgzLTEuMjU0LTEuNDgzLTEuMDMzLjAwMy0xLjM5MS43NzQtMS4zOTEgMS45MzRabTkuNjY2IDMuODE3Yy0xLjY1NSAwLTIuNjE0LS45NTgtMi42MTQtMi42Mjh2LTIuOTUzaC0xLjI2OHYtMi4wMjVoMS4yNjh2LTEuMTExbDIuMTk2LTEuODU1djIuOTdoMS45MDJ2Mi4wMjRoLTEuOTAydjIuNjQzYzAgLjcyNy40OC44OTcuOTI4Ljg5Ny41MTEgMCAuOTI4LS4yMDIuOTI4LS4yMDJ2MS45OTRzLS41ODcuMjQ3LTEuNDM4LjI0N1ptMTAuMTkzLTMuMjNoLTUuMzUyYy4xMjUuNzc1Ljc1NyAxLjM2MiAxLjcgMS4zNjIuNjM1IDAgMS4wMDQtLjI2NCAxLjIzNy0uNjVoMi4zNjdjLS41MTEgMS42NC0xLjY4NiAyLjY2LTMuNTczIDIuNjYtMi4xOTcgMC0zLjk1OS0xLjUzLTMuOTU5LTMuOTEgMC0yLjI4OSAxLjYwOS00LjAxOSAzLjgzNy00LjAxOSAyLjQ4OSAwIDMuNzU3IDEuOTYzIDMuNzU3IDMuOTg4IDAgLjE5OC0uMDE0LjU3LS4wMTQuNTdabS0zLjcxNS0yLjYyOGMtLjgzNCAwLTEuMzkzLjUxLTEuNTMyIDEuMTZoMi45NGMtLjA0Ni0uNjY0LS42MTktMS4xNi0xLjQwOC0xLjE2Wm0xMC4yMzktMS4zMTV2Mi4xNjRzLS41NzMtLjU4Ny0xLjQzOS0uNTg3Yy0uNjY0IDAtMS40MDcuMzU0LTEuNDA3IDEuNDY5djQuMDk1aC0yLjE5N3YtNy41NzVoMi4xNjV2LjYzNWMtLjAxNCAwIC40MzUtLjc0MyAxLjUxNi0uNzQzLjkyOCAwIDEuMzYyLjU0MiAxLjM2Mi41NDJabTMuNDAzIDMuMzU2djMuNzg3aC0yLjE5N3YtNy41NzZoMi4xNjV2LjUyNWEyLjU0MyAyLjU0MyAwIDAgMSAxLjc5NC0uNzEyYzEuODU2IDAgMy4wNzkgMS4yMDYgMy4wNzkgMy4zNTV2NC40MDVoLTIuMTk3di00LjIzNWMwLS44MDItLjM3MS0xLjQ4My0xLjI1NC0xLjQ4My0xLjAzNi4wMDMtMS4zOS43NzQtMS4zOSAxLjkzNFptMTEuMTY2IDMuMDE1Yy0uNDk2LjYwNC0xLjIwNi45NDUtMi4xNTEuOTQ1LTEuNTE1IDAtMi43MzgtLjk0NS0yLjczOC0yLjM5NyAwLTEuNDM4IDEuMjItMi4xNSAyLjkzNy0yLjI0IDEuMzE0LS4wNzcgMS43MzQtLjIxNiAxLjczNC0uNjY0IDAtLjQzNC0uNDAzLS43MjYtMS4xMTMtLjcyNi0uODY1IDAtMS4yMzcuNDM0LTEuMjg1Ljg5NmgtMi4xMmMuMTA4LTEuNjUzIDEuMzQ1LTIuNzk5IDMuNDItMi43OTkgMi4wMjYgMCAzLjMyNiAxLjA5OCAzLjMyNiAzLjE1NHY0LjYwNmgtMS44MTFsLS4xOTktLjc3NVptLTIuNjkzLTEuNTQ1YzAgLjQzNC4zODYuNjk0IDEuMDA1LjY5NC44MzQgMCAxLjUwMS0uNDYyIDEuNTAxLTEuNDA2di0uMjc4cy0uNDAzLjE4NC0xLjIzNy4yMzJjLS45MTQuMDQ2LTEuMjY5LjM0LTEuMjY5Ljc1OFptOS41NTggMi4zNDdjLTEuNjU1IDAtMi42MTQtLjk1OC0yLjYxNC0yLjYyOHYtMi45NTNoLTEuMjY5di0yLjAyNWgxLjI2OXYtMS4xMTFsMi4xOTYtMS44NTV2Mi45N2gxLjkwMnYyLjAyNGgtMS45MDJ2Mi42NDNjMCAuNzI3LjQ4Ljg5Ny45MjguODk3LjUxMSAwIC45MjgtLjIwMi45MjgtLjIwMnYxLjk5NHMtLjU5LjI0Ny0xLjQzOC4yNDdabTIuOTUxLTkuNzUzYzAtLjcxMi41NTYtMS4yODIgMS4yNjgtMS4yODIuNzEzIDAgMS4yODYuNTczIDEuMjg2IDEuMjgyIDAgLjY5NS0uNTczIDEuMjY4LTEuMjg2IDEuMjY4YTEuMjY0IDEuMjY0IDAgMCAxLTEuMjY4LTEuMjY4Wm0uMTcgOS43MjJ2LTcuNTc1aDIuMTk3djcuNTc1aC0yLjE5N1ptMy43ODktMy43ODZjMC0yLjI3MiAxLjc0OC0zLjk3NCA0LjAzOC0zLjk3NHM0LjAzNSAxLjcwMiA0LjAzNSAzLjk3NGMwIDIuMjcxLTEuNzQ4IDMuOTU2LTQuMDM1IDMuOTU2LTIuMjkgMC00LjAzOC0xLjY4NS00LjAzOC0zLjk1NlptMi4yNDUgMGMwIDEuMTExLjc1NyAxLjkxNyAxLjc5MyAxLjkxN3MxLjc5NC0uODAzIDEuNzk0LTEuOTE3YzAtMS4xMTItLjc1OC0xLjkxOC0xLjc5NC0xLjkxOHMtMS43OTMuODAzLTEuNzkzIDEuOTE4Wm05LjU0IDB2My43ODdoLTIuMTk2di03LjU3NmgyLjE2NXYuNTI1YTIuNTQgMi41NCAwIDAgMSAxLjc5My0uNzEyYzEuODU2IDAgMy4wNzkgMS4yMDYgMy4wNzkgMy4zNTV2NC40MDVoLTIuMTk2di00LjIzNWMwLS44MDItLjM3Mi0xLjQ4My0xLjI1NC0xLjQ4My0xLjAzNi4wMDMtMS4zOTEuNzc0LTEuMzkxIDEuOTM0Wm0xMS4xNjcgMy4wMTVjLS40OTcuNjA0LTEuMjA2Ljk0NS0yLjE1MS45NDUtMS41MTYgMC0yLjczOS0uOTQ1LTIuNzM5LTIuMzk3IDAtMS40MzggMS4yMjEtMi4xNSAyLjkzNy0yLjI0IDEuMzE0LS4wNzcgMS43MzQtLjIxNiAxLjczNC0uNjY0IDAtLjQzNC0uNDAzLS43MjYtMS4xMTItLjcyNi0uODY2IDAtMS4yMzcuNDM0LTEuMjg2Ljg5NmgtMi4xMTljLjEwNy0xLjY1MyAxLjM0NS0yLjc5OSAzLjQxOS0yLjc5OSAyLjAyNiAwIDMuMzI2IDEuMDk4IDMuMzI2IDMuMTU0djQuNjA2aC0xLjgxbC0uMTk5LS43NzVabS0yLjY5My0xLjU0NWMwIC40MzQuMzg2LjY5NCAxLjAwNC42OTQuODM1IDAgMS41MDItLjQ2MiAxLjUwMi0xLjQwNnYtLjI3OHMtLjQwMy4xODQtMS4yMzguMjMyYy0uOTExLjA0Ni0xLjI2OC4zNC0xLjI2OC43NThabTYuNTI0IDIuMzE3VjI5LjU0M2gyLjE5NlY0MC4zOGgtMi4xOTZabTE0LjA4OS0xMC44MzcgNC4yNCAxMC44MzdoLTIuMzgxbC0uODY2LTIuMTMzaC00LjE5MWwtLjg1MSAyLjEzM2gtMi4zODFsNC4yMzktMTAuODM3aDIuMTkxWm0tMS4wOTggMy4xMjMtMS4zNDUgMy41MzloMi42OWwtMS4zNDUtMy41NFptNi4zODUtMi4wMDljMC0uNzEyLjU1Ni0xLjI4MiAxLjI2OS0xLjI4Mi43MTIgMCAxLjI4NS41NzMgMS4yODUgMS4yODIgMCAuNjk1LS41NzMgMS4yNjgtMS4yODUgMS4yNjhhMS4yNjQgMS4yNjQgMCAwIDEtMS4yNjktMS4yNjhabS4xNyA5LjcyMnYtNy41NzVoMi4xOTd2Ny41NzVoLTIuMTk3Wm0zLjc4OS0zLjc4NmMwLTIuMzk2IDEuNzE2LTMuOTczIDMuODE5LTMuOTczLjg2NiAwIDEuNTkyLjMyMyAxLjk4MS42NjR2LTMuNzQxaDIuMTk2VjQwLjM4aC0yLjE2NXYtLjU0MmMtLjQuMzg2LTEuMTYuNzEyLTIuMDA5LjcxMi0yLjEwNiAwLTMuODIyLTEuNTE1LTMuODIyLTMuOTU2Wm01LjgzMSAwYzAtMS4xNzQtLjc3Mi0xLjk4LTEuNzkzLTEuOTgtMS4wMjIgMC0xLjc5NC44MDMtMS43OTQgMS45OCAwIDEuMTc1Ljc3MiAxLjk4IDEuNzk0IDEuOTggMS4wMjEgMCAxLjc5My0uODA1IDEuNzkzLTEuOThaTTEwMC4xOTYgNDguMDloOC41MjJ2Mi4xMThoLTMuMTF2OC43MTloLTIuMzA0di04LjcxOWgtMy4xMTFWNDguMDloLjAwM1ptMTMuODg4IDMuNjkydjIuMTY0cy0uNTczLS41ODctMS40MzktLjU4N2MtLjY2NCAwLTEuNDA3LjM1NC0xLjQwNyAxLjQ2OXY0LjA5NWgtMi4xOTZ2LTcuNTc1aDIuMTY1di42MzVjLS4wMTQgMCAuNDM0LS43NDMgMS41MTUtLjc0My45MzEuMDAzIDEuMzYyLjU0MiAxLjM2Mi41NDJabTUuODkxIDYuMzcxYy0uNDk2LjYwNC0xLjIwNi45NDUtMi4xNTEuOTQ1LTEuNTE1IDAtMi43MzgtLjk0NS0yLjczOC0yLjM5NyAwLTEuNDM4IDEuMjItMi4xNSAyLjkzNy0yLjI0IDEuMzE0LS4wNzcgMS43MzQtLjIxNiAxLjczNC0uNjY0IDAtLjQzNC0uNDAzLS43MjYtMS4xMTItLjcyNi0uODY2IDAtMS4yMzguNDM0LTEuMjg2Ljg5NmgtMi4xMmMuMTA4LTEuNjUzIDEuMzQ1LTIuNzk5IDMuNDItMi43OTkgMi4wMjYgMCAzLjMyNiAxLjA5OCAzLjMyNiAzLjE1NHY0LjYwNWgtMS44MTFsLS4xOTktLjc3NFptLTIuNjktMS41NDVjMCAuNDM0LjM4Ni42OTUgMS4wMDUuNjk1LjgzNCAwIDEuNTAxLS40NjMgMS41MDEtMS40MDd2LS4yNzhzLS40MDMuMTg0LTEuMjM3LjIzMmMtLjkxNC4wNDYtMS4yNjkuMzQtMS4yNjkuNzU4Wm04LjcyMS0xLjQ3djMuNzg3aC0yLjE5N3YtNy41NzZoMi4xNjV2LjUyNWEyLjU0IDIuNTQgMCAwIDEgMS43OTQtLjcxMmMxLjg1NiAwIDMuMDc5IDEuMjA1IDMuMDc5IDMuMzU1djQuNDA1aC0yLjE5N3YtNC4yMzVjMC0uODAyLS4zNzEtMS40ODMtMS4yNTQtMS40ODMtMS4wMzMuMDAzLTEuMzkuNzc0LTEuMzkgMS45MzRabTEwLjc5NSAxLjYwN2MwLS4yMzItLjEzOS0uNDE2LS43NDQtLjU0MWwtMS4xNDMtLjIzM2MtMS43MTctLjM0LTIuNDQ0LTEuMTYtMi40NDQtMi4yODggMC0xLjMzIDEuMDA1LTIuNTE5IDMuMDk0LTIuNTE5IDIuMTAyIDAgMy4wNDcgMS4xNzQgMy4yMDEgMi40OWgtMi4wODljLS4xMjUtLjQxNy0uNDgtLjY2NC0xLjEyOS0uNjY0LS42MTkgMC0uOTYuMjE2LS45Ni41MjUgMCAuMjMzLjE4NS4zNzIuNzU4LjQ4bDEuMTQ0LjIzMmMxLjYyMy4zMjMgMi40MjkgMS4wODMgMi40MjkgMi4zOCAwIDEuNDY5LTEuMDY3IDIuNDktMy4xODcgMi40OS0yLjE2NSAwLTMuMzI2LTEuMDIxLTMuNTQyLTIuNTk4aDIuMjE0Yy4xMjUuNTI0LjUxMS44MDIgMS4zMjguODAyLjc0NiAwIDEuMDctLjIxNSAxLjA3LS41NTZabTExLjU1Mi0xLjYwOGMwIDIuMzk3LTEuNzE3IDMuOTU3LTMuODE5IDMuOTU3LS44NjYgMC0xLjU5Mi0uMzEtMS45ODEtLjY1djMuNDc3aC0yLjE5N1Y1MS4zNDhoMi4xNjZ2LjU0MmMuNDAzLS4zODYgMS4xNi0uNzI2IDIuMDEyLS43MjYgMi4xMDIgMCAzLjgxOSAxLjUxNyAzLjgxOSAzLjk3M1ptLTUuODMxIDBjMCAxLjE3NS43NzQgMS45OCAxLjc5MyAxLjk4IDEuMDIyIDAgMS43OTQtLjgwMyAxLjc5NC0xLjk4IDAtMS4xNzQtLjc3Mi0xLjk4LTEuNzk0LTEuOTgtMS4wMTkuMDA0LTEuNzkzLjgwNi0xLjc5MyAxLjk4Wm0xMS44NzkgMy4wMTZjLS40OTcuNjA0LTEuMjA2Ljk0NS0yLjE1MS45NDUtMS41MTYgMC0yLjczOS0uOTQ1LTIuNzM5LTIuMzk3IDAtMS40MzggMS4yMi0yLjE1IDIuOTM3LTIuMjQgMS4zMTQtLjA3NyAxLjczNC0uMjE2IDEuNzM0LS42NjQgMC0uNDM0LS40MDMtLjcyNi0xLjExMi0uNzI2LS44NjYgMC0xLjIzNy40MzQtMS4yODYuODk2aC0yLjEyYy4xMDgtMS42NTMgMS4zNDYtMi43OTkgMy40Mi0yLjc5OSAyLjAyNiAwIDMuMzI2IDEuMDk4IDMuMzI2IDMuMTU0djQuNjA1aC0xLjgxMWwtLjE5OC0uNzc0Wm0tMi42OTMtMS41NDVjMCAuNDM0LjM4Ni42OTUgMS4wMDQuNjk1LjgzNSAwIDEuNTAxLS40NjMgMS41MDEtMS40MDd2LS4yNzhzLS40MDMuMTg0LTEuMjM3LjIzMmMtLjkxMS4wNDYtMS4yNjguMzQtMS4yNjguNzU4Wm0xMS41NjYtNC44MjZ2Mi4xNjRzLS41NzMtLjU4Ny0xLjQzOS0uNTg3Yy0uNjY0IDAtMS40MDcuMzU0LTEuNDA3IDEuNDY5djQuMDk1aC0yLjE5N3YtNy41NzVoMi4xNjZ2LjYzNWMtLjAxNSAwIC40MzQtLjc0MyAxLjUxNS0uNzQzLjkyOC4wMDMgMS4zNjIuNTQyIDEuMzYyLjU0MlptOC40MjggMy45NDRoLTUuMzUyYy4xMjUuNzc0Ljc1OCAxLjM2IDEuNzAzIDEuMzYuNjM2IDAgMS4wMDUtLjI2MyAxLjIzNy0uNjQ5aDIuMzY3Yy0uNTExIDEuNjQtMS42ODYgMi42Ni0zLjU3MyAyLjY2LTIuMTk2IDAtMy45NTktMS41My0zLjk1OS0zLjkxIDAtMi4yODkgMS42MS00LjAxOSAzLjgzNy00LjAxOSAyLjQ4OSAwIDMuNzU3IDEuOTYzIDMuNzU3IDMuOTg4IDAgLjItLjAxNy41Ny0uMDE3LjU3Wm0tMy43MTEtMi42MjdjLS44MzUgMC0xLjM5NC41MS0xLjUzMyAxLjE2aDIuOTRjLS4wNDUtLjY2Ni0uNjE5LTEuMTYtMS40MDctMS4xNlptNy4zOTIgMi4wMzl2My43ODdoLTIuMTk2di03LjU3NmgyLjE2NXYuNTI1YTIuNTM4IDIuNTM4IDAgMCAxIDEuNzkzLS43MTJjMS44NTYgMCAzLjA3OSAxLjIwNSAzLjA3OSAzLjM1NXY0LjQwNWgtMi4xOTZ2LTQuMjM1YzAtLjgwMi0uMzcyLTEuNDgzLTEuMjU0LTEuNDgzLTEuMDM2LjAwMy0xLjM5MS43NzQtMS4zOTEgMS45MzRabTExLjU2Ny44MzdoMi40MTJjLS4zNTcgMS44NC0xLjc0OCAzLjEyMy0zLjc5MSAzLjEyMy0yLjI5IDAtMy45OS0xLjY4NS0zLjk5LTMuOTU3IDAtMi4yNzEgMS43MDMtMy45NzMgMy45OS0zLjk3MyAxLjk5NSAwIDMuMzg4IDEuMjM2IDMuNjY2IDMuMDI5aC0yLjQxNWMtLjE3LS41NzMtLjY2NC0uOTU5LTEuMzI4LS45NTktLjkyOCAwLTEuNjcxLjc4OS0xLjY3MSAxLjkgMCAxLjExMi43NDMgMS45IDEuNzAzIDEuOS43MTIuMDA0IDEuMjQtLjQxNiAxLjQyNC0xLjA2M1ptNS4xMDIgNi4wMjdjLS45OSAwLTEuNDg0LS4yNjQtMS40ODQtLjI2NHYtMi4wMXMuNDQ4LjIzMi45MjguMjMyYy40OTYgMCAxLjE0My0uMTg0IDEuMjk5LTEuMDM1bC0yLjk1NC03LjU3NWgyLjQ0NGwxLjcxNyA0LjY5OSAxLjc0OC00LjdoMi4zNDlsLTMuMDc5IDcuN2MtLjgwMyAyLjAyNi0xLjQ1MyAyLjk1My0yLjk2OCAyLjk1M1ptMTEuNTk4LTMuMDc1VjQ4LjA5aDIuMzA1djEwLjgzN2gtMi4zMDVabTYuNjE4LTMuNzg5djMuNzg3aC0yLjE5N3YtNy41NzZoMi4xNjZ2LjUyNWEyLjUzOCAyLjUzOCAwIDAgMSAxLjc5My0uNzEyYzEuODU2IDAgMy4wNzkgMS4yMDUgMy4wNzkgMy4zNTV2NC40MDVoLTIuMTk2di00LjIzNWMwLS44MDItLjM3Mi0xLjQ4My0xLjI1NS0xLjQ4My0xLjAzMy4wMDMtMS4zOS43NzQtMS4zOSAxLjkzNFptNi41NDEtNS45MzZjMC0uNzEyLjU1Ni0xLjI4MiAxLjI2OC0xLjI4MnMxLjI4Ni41NzMgMS4yODYgMS4yODJhMS4yOCAxLjI4IDAgMCAxLTEuMjg2IDEuMjY4IDEuMjY0IDEuMjY0IDAgMCAxLTEuMjY4LTEuMjY4Wm0uMTcgOS43MjV2LTcuNTc1aDIuMTk2djcuNTc1aC0yLjE5NlptNy4yNTQuMDI5Yy0xLjY1NSAwLTIuNjE0LS45NTktMi42MTQtMi42M3YtMi45NTJoLTEuMjY4VjUxLjM1aDEuMjY4di0xLjExMWwyLjE5Ni0xLjg1NXYyLjk3aDEuOTAydjIuMDI0aC0xLjkwMnYyLjY0M2MwIC43MjYuNDguODk3LjkyOC44OTcuNTExIDAgLjkyOC0uMjAyLjkyOC0uMjAydjEuOTk0cy0uNTg3LjI0Ny0xLjQzOC4yNDdabTIuOTU0LTkuNzU0YzAtLjcxMi41NTYtMS4yODIgMS4yNjgtMS4yODJzMS4yODYuNTczIDEuMjg2IDEuMjgyYTEuMjggMS4yOCAwIDAgMS0xLjI4NiAxLjI2OCAxLjI2NCAxLjI2NCAwIDAgMS0xLjI2OC0xLjI2OFptLjE3IDkuNzI1di03LjU3NWgyLjE5NnY3LjU3NWgtMi4xOTZabTguNzU0LS43NzRjLS40OTYuNjA0LTEuMjA2Ljk0NS0yLjE1MS45NDUtMS41MTUgMC0yLjczOC0uOTQ1LTIuNzM4LTIuMzk3IDAtMS40MzggMS4yMi0yLjE1IDIuOTM3LTIuMjQgMS4zMTQtLjA3NyAxLjczNC0uMjE2IDEuNzM0LS42NjQgMC0uNDM0LS40MDMtLjcyNi0xLjExMy0uNzI2LS44NjUgMC0xLjIzNy40MzQtMS4yODUuODk2aC0yLjEyYy4xMDgtMS42NTMgMS4zNDUtMi43OTkgMy40MTktMi43OTkgMi4wMjcgMCAzLjMyNiAxLjA5OCAzLjMyNiAzLjE1NHY0LjYwNWgtMS44MWwtLjE5OS0uNzc0Wm0tMi42OTMtMS41NDVjMCAuNDM0LjM4Ni42OTUgMS4wMDUuNjk1LjgzNCAwIDEuNTAxLS40NjMgMS41MDEtMS40MDd2LS4yNzhzLS40MDMuMTg0LTEuMjM3LjIzMmMtLjkxNC4wNDYtMS4yNjkuMzQtMS4yNjkuNzU4Wm05LjU1OCAyLjM0OGMtMS42NTUgMC0yLjYxNC0uOTU5LTIuNjE0LTIuNjN2LTIuOTUyaC0xLjI2OFY1MS4zNWgxLjI2OHYtMS4xMTFsMi4xOTctMS44NTV2Mi45N2gxLjkwMXYyLjAyNGgtMS45MDF2Mi42NDNjMCAuNzI2LjQ3OS44OTcuOTI4Ljg5Ny41MSAwIC45MjgtLjIwMi45MjgtLjIwMnYxLjk5NHMtLjU4OC4yNDctMS40MzkuMjQ3Wm0yLjk1MS05Ljc1NGMwLS43MTIuNTU2LTEuMjgyIDEuMjY5LTEuMjgyLjcxMiAwIDEuMjg1LjU3MyAxLjI4NSAxLjI4MiAwIC42OTUtLjU3MyAxLjI2OC0xLjI4NSAxLjI2OGExLjI2NCAxLjI2NCAwIDAgMS0xLjI2OS0xLjI2OFptLjE3IDkuNzI1di03LjU3NWgyLjE5N3Y3LjU3NWgtMi4xOTdabTEwLjk4My03LjU3NS0yLjY5MSA3LjU3NWgtMi4yNThsLTIuNjkxLTcuNTc1aDIuMzM2bDEuNDg0IDQuNjg1IDEuNDg0LTQuNjg1aDIuMzM2Wm03Ljk4IDQuMzc0aC01LjM1MmMuMTI1Ljc3NC43NTcgMS4zNiAxLjcwMiAxLjM2LjYzNiAwIDEuMDA1LS4yNjMgMS4yMzgtLjY0OWgyLjM2NmMtLjUxIDEuNjQtMS42ODUgMi42Ni0zLjU3MiAyLjY2LTIuMTk3IDAtMy45NTktMS41My0zLjk1OS0zLjkxIDAtMi4yODkgMS42MDktNC4wMTkgMy44MzctNC4wMTkgMi40ODggMCAzLjc2IDEuOTYzIDMuNzYgMy45ODgtLjAwNi4yLS4wMi41Ny0uMDIuNTdabS0zLjcxMi0yLjYyN2MtLjgzNCAwLTEuMzkzLjUxLTEuNTMyIDEuMTZoMi45NGMtLjA0OS0uNjY2LS42MTktMS4xNi0xLjQwOC0xLjE2WlxcXCIgZmlsbD1cXFwiI2ZmZlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZmlsbD1cXFwiI2ZmZlxcXCIgc3Ryb2tlPVxcXCIjMTU1MzY2XFxcIiBkPVxcXCJtNy4zMzMgMTIuMzYxLS4yMjMuMTEyLjIyMy40NDdoLjV2LS4yNWwuODM0LS40MTctMS4zMzQuMTA4Wm0wIDBWOS4zMzN2My4wMjhabS01LjUtOC4yNDh2LS43OGExLjUgMS41IDAgMCAxIDEuNS0xLjVoOS4zMzRhMS41IDEuNSAwIDAgMSAxLjUgMS41di43NzJhMS40OTkgMS40OTkgMCAwIDEtLjE0NS41OTNsLS4wNDkuMTAydi4wNGExLjM3MSAxLjM3MSAwIDAgMS0uMjQ2LjMzMnYuMDAxbC00LjA4IDQuMDhMOS41IDkuNHYzLjI2NmMwIC4wMy0uMDA5LjA2LS4wMjUuMDg2bC40MjUuMjYzLS40MjUtLjI2M2EuMTY3LjE2NyAwIDAgMS0uMDY2LjA2MWwtMi42NjYgMS4zMzMtLjAwNC4wMDJhLjE2Ny4xNjcgMCAwIDEtLjA3NS4wMTkuMTY3LjE2NyAwIDAgMS0uMDg3LS4wMjUuMTY2LjE2NiAwIDAgMS0uMDc3LS4xNDFWOS4zOTlsLS4xNDgtLjE0Ny00LjEwNi00LjA4QTEuMzczIDEuMzczIDAgMCAxIDIgNC44NHYtLjAzbC0uMDQyLS4wOTdhMS41IDEuNSAwIDAgMS0uMTI1LS42Wk02IDkuNjA3VjE0YS42NjYuNjY2IDAgMCAwIC42NjcuNjY3LjY2Ni42NjYgMCAwIDAgLjMtLjA3NEw2IDkuNjA3Wm0zLjE2Ny0uMjc0VjkuMzNhLjE2Ny4xNjcgMCAwIDEgLjA0OC0uMTE4bDMuNTMxLTMuNTI1Ljg1Ni0uODU0SDIuMzk3bC44NTYuODU0IDMuNTMyIDMuNTI1YS4xNjcuMTY3IDAgMCAxIC4wNDguMTE4djQuMzk5bC43MjQtLjM2Mkw4Ljg5IDEyLjdsLjI3Ny0uMTM4VjkuMzMzWk0xMy4zMzMgNC41aC41VjMuMzMzYTEuMTY3IDEuMTY3IDAgMCAwLTEuMTY2LTEuMTY2SDMuMzMzYTEuMTY3IDEuMTY3IDAgMCAwLTEuMTY2IDEuMTY2VjQuNWgxMS4xNjZaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDk1MCAyOTJcXFwiPjxnIG9wYWNpdHk9XFxcIi4zXFxcIj48cGF0aCBvcGFjaXR5PVxcXCIuNFxcXCIgZD1cXFwiTTM5My4zODMgNTM3LjU5MmEyMTMuMDU4IDIxMy4wNTggMCAwIDEtNTUuMTMzLTcuMjQ4Yy0xOC4xOTYtNC44Ni0zNS40MTktMTIuMDktNTEuMzQ3LTIxLjMxNi0xNi4xNjYtOS4zNDUtMzEuMDAzLTIwLjcwMy00NC4xMTctMzMuODE3LTEzLjExMy0xMy4xMTMtMjQuNDcxLTI3Ljk2Ny0zMy44MTYtNDQuMTE2YTIxMS44MjYgMjExLjgyNiAwIDAgMS0yMS4zMTctNTEuMzQ3IDIxMi45MDYgMjEyLjkwNiAwIDAgMS03LjI0Ny01NS4xMzMgMjEzLjA5IDIxMy4wOSAwIDAgMSA3LjI0Ny01NS4xMzNjNC44NjEtMTguMTk2IDEyLjA5MS0zNS40MiAyMS4zMTctNTEuMzQ4bDU2LjY4NSAzMi43MjVhMTQ3LjIwMyAxNDcuMjAzIDAgMCAwLTE0Ljc2OCAzNS41NzMgMTQ3LjUzMSAxNDcuNTMxIDAgMCAwLTUuMDE0IDM4LjE4MyAxNDcuNTMgMTQ3LjUzIDAgMCAwIDUuMDE0IDM4LjE4MiAxNDYuNTI3IDE0Ni41MjcgMCAwIDAgMTQuNzY4IDM1LjU3M2M2LjQ4IDExLjE4NyAxNC4zNDEgMjEuNDcgMjMuNDMxIDMwLjU1OSA5LjA4OSA5LjA4OSAxOS4zNzIgMTYuOTUxIDMwLjU1OSAyMy40MzFhMTQ3LjIwMyAxNDcuMjAzIDAgMCAwIDM1LjU3MyAxNC43NjggMTQ3LjYyNyAxNDcuNjI3IDAgMCAwIDM4LjE4MiA1LjAxNGMxMy4yIDAgMjYuMDA2LTEuNzU3IDM4LjE4Mi01LjAxNGExNDYuNDk0IDE0Ni40OTQgMCAwIDAgMzUuNTczLTE0Ljc2OGMxMS4xODctNi40OCAyMS40Ny0xNC4zNDIgMzAuNTYtMjMuNDMxbDQ2LjI4MiA0Ni4yODJjLTEzLjExNCAxMy4xMTQtMjcuOTY3IDI0LjQ3Mi00NC4xMTcgMzMuODE3YTIxMS43NSAyMTEuNzUgMCAwIDEtNTEuMzQ3IDIxLjMxNiAyMTMuMjggMjEzLjI4IDAgMCAxLTU1LjE1IDcuMjQ4Wk01ODEuNjY4IDY1MC43NGMyOC41ODEtMTYuNTI0IDU0LjgyNi0zNi42MTMgNzguMDE4LTU5LjgwNSAyMy4xOTItMjMuMTkzIDQzLjI4MS00OS40NTUgNTkuODA2LTc4LjAxOSAxNi4zMDMtMjguMTcyIDI5LjA3NS01OC42MjkgMzcuNjg3LTkwLjgwOGEzNzYuNTkyIDM3Ni41OTIgMCAwIDAgMTIuODA3LTk3LjQ3NiAzNzcuMjMgMzc3LjIzIDAgMCAwLTEyLjgwNy05Ny40NzdjLTguNTk1LTMyLjE3OS0yMS4zODQtNjIuNjM2LTM3LjY4Ny05MC44MDgtMTYuNTQyLTI4LjU4MS0zNi42MTQtNTQuODI2LTU5LjgwNi03OC4wMTgtMjMuMTkyLTIzLjE5My00OS40NTQtNDMuMjgxLTc4LjAxOC01OS44MDYtMjguMTcyLTE2LjMwMy01OC42MjktMjkuMDkzLTkwLjgwOS0zNy42ODdhMzc2LjU5MiAzNzYuNTkyIDAgMCAwLTk3LjQ3Ni0xMi44MDd2NjUuNDVjMjcuODY1IDAgNTQuODQzIDMuNzE3IDgwLjU0MyAxMC41OSAyNi41ODUgNy4xMTEgNTEuNzM5IDE3LjY2NyA3NS4wMTcgMzEuMTM5IDIzLjYwMSAxMy42NiA0NS4zMSAzMC4yNTIgNjQuNDYxIDQ5LjQyIDE5LjE2NyAxOS4xNjggMzUuNzYgNDAuODYgNDkuNDIgNjQuNDYxIDEzLjQ3MiAyMy4yNzggMjQuMDI4IDQ4LjQzMSAzMS4xMzkgNzUuMDE3YTMxMS4yNjYgMzExLjI2NiAwIDAgMSAxMC41OSA4MC41NDNjMCAyNy44NjUtMy43MTcgNTQuODQzLTEwLjU5IDgwLjU0Mi03LjExMSAyNi41ODYtMTcuNjY3IDUxLjczOS0zMS4xMzkgNzUuMDE3LTEzLjY2IDIzLjYwMi0zMC4yNTMgNDUuMzEtNDkuNDIgNjQuNDYxLTE5LjE1MSAxOS4xNTEtNDAuODYgMzUuNzYxLTY0LjQ2MSA0OS40Mi0yMy4yNzggMTMuNDcyLTQ4LjQzMiAyNC4wMjgtNzUuMDE3IDMxLjEzOWwxNi45MzMgNjMuMjM0YzMyLjE5Ny04LjY0NiA2Mi42MzctMjEuNDE5IDkwLjgwOS0zNy43MjJabS01Ni45MDcgMTY0LjE4OGE1MDQuMzEyIDUwNC4zMTIgMCAwIDAgMTIyLjQyNS01MC43MzMgNTEwLjQgNTEwLjQgMCAwIDAgMTA1LjA4Mi04MC43MTNBNTA5LjIyNiA1MDkuMjI2IDAgMCAwIDgzMi45ODEgNTc4LjRhNTA0LjczIDUwNC43MyAwIDAgMCA1MC43MzMtMTIyLjQyNWMxMS4yMDQtNDEuOTE2IDE3LjIwNy04NS45NDggMTcuMjA3LTEzMS4zNzcgMC00NS40NDctNi4wMDMtODkuNDc5LTE3LjIwNy0xMzEuMzc4YTUwNC4zNDMgNTA0LjM0MyAwIDAgMC01MC43MzMtMTIyLjQyNUM4MTAuNzA5IDMyLjI4OCA3ODMuNTA5LTMuMDMgNzUyLjI2OC0zNC4yODdBNTA5LjIxNyA1MDkuMjE3IDAgMCAwIDY0Ny4xODYtMTE1bC0zMi43OTMgNTYuNzg3YzMzLjU0MyAxOS40MDcgNjQuMzU5IDQyLjk5MSA5MS41OTIgNzAuMjA4IDI3LjIxNyAyNy4yMTcgNTAuODAyIDU4LjA1IDcwLjIwOSA5MS41NzYgMTkuMTMzIDMzLjA2NiAzNC4xNCA2OC44MSA0NC4yMzYgMTA2LjU4MiA5Ljc1NCAzNi41MTEgMTUuMDQxIDc0Ljg0NyAxNS4wNDEgMTE0LjQyOCAwIDM5LjU4LTUuMjcgNzcuOTE2LTE1LjA0MSAxMTQuNDI2LTEwLjA5NiAzNy43NzMtMjUuMTAzIDczLjUxNy00NC4yMzYgMTA2LjU4My0xOS40MDcgMzMuNTQ0LTQyLjk5MiA2NC4zNTktNzAuMjA5IDkxLjU3Ni0yNy4yMTYgMjcuMjE3LTU4LjA0OSA1MC44MDEtOTEuNTkyIDcwLjIwOC0zMy4wNjYgMTkuMTM0LTY4LjgxIDM0LjE0LTEwNi41ODMgNDQuMjM2LTM2LjUxMSA5Ljc1NC03NC44NDYgMTUuMDQxLTExNC40MjcgMTUuMDQxLTM5LjU4IDAtNzcuOTE2LTUuMjg3LTExNC40MjctMTUuMDQxbC0xNi45NTEgNjMuMjg0YzQxLjkgMTEuMjA0IDg1LjkzMSAxNy4yMDcgMTMxLjM3OCAxNy4yMDcgNDUuNDQ3LjAzNCA4OS40NzgtNS45NjkgMTMxLjM3OC0xNy4xNzNaXFxcIiBmaWxsPVxcXCJ1cmwoI2dyb3VwX3N2Z19fYSlcXFwiLz48cGF0aCBkPVxcXCJNMzkzLjM4MyA3NjYuNjg2YTQ0Mi40ODkgNDQyLjQ4OSAwIDAgMS0xMTQuMTAzLTE0LjkzOGMtMzcuNzczLTEwLjA2Mi03My41MTYtMjUuMDUyLTEwNi41OTktNDQuMTUxbDMyLjcyNS01Ni42ODVjMjguMTg5IDE2LjI2OSA1OC42NDYgMjkuMDI0IDkwLjgyNSAzNy42MDJhMzc3LjEyNiAzNzcuMTI2IDAgMCAwIDk3LjE1MiAxMi43MjJoLjMwN2EzNzYuOTU4IDM3Ni45NTggMCAwIDAgOTcuNDI1LTEyLjg3NWMzMi4xNDYtOC42MTIgNjIuNTY4LTIxLjQwMiA5MC43MjMtMzcuNzA1IDI4LjU0Ny0xNi41MjQgNTQuNzc1LTM2LjYxMyA3Ny45MzMtNTkuNzg4IDIzLjE1OS0yMy4xNzYgNDMuMjMtNDkuNDA0IDU5Ljc1NS03Ny45NTEgMTYuMjg2LTI4LjE1NCAyOS4wNTktNTguNTYgMzcuNjctOTAuNzIzYTM3Ni41NzUgMzc2LjU3NSAwIDAgMCAxMi44MjQtOTcuMzl2LS4xODhjMC0zMy42MjktNC40NjctNjYuMjAxLTEyLjczOC05Ny4yMzctOC41NzgtMzIuMTYzLTIxLjMzNC02Mi42MDMtMzcuNjAzLTkwLjc3NS0xNi41MDctMjguNTgxLTM2LjU2Mi01NC44NDMtNTkuNzItNzguMDM1LTIzLjE3NS0yMy4yMS00OS40MDMtNDMuMzMyLTc3Ljk1LTU5Ljg5MS0yOC4xNzItMTYuMzM3LTU4LjYxMi0yOS4xNDQtOTAuNzc0LTM3Ljc3M2wxNi45MzMtNjMuMjMzYzM3Ljc3MyAxMC4xMyA3My41IDI1LjE1MyAxMDYuNTY2IDQ0LjMyMSAzMy41MjcgMTkuNDI0IDY0LjMwOCA0My4wNDIgOTEuNTA3IDcwLjI3NiAyNy4xODMgMjcuMjM0IDUwLjc1MSA1OC4wNjcgNzAuMTIzIDkxLjYxIDE5LjEgMzMuMDY2IDM0LjA3MiA2OC43OTMgNDQuMTUxIDEwNi41NjZhNDQyLjI4IDQ0Mi4yOCAwIDAgMSAxNC45NzMgMTE0LjE3MXYuMTg4YTQ0Mi43ODQgNDQyLjc4NCAwIDAgMS0xNS4wNTggMTE0LjM0MWMtMTAuMDk2IDM3LjczOS0yNS4wODYgNzMuNDQ4LTQ0LjIxOSAxMDYuNDk3LTE5LjM5IDMzLjUxLTQyLjk1NyA2NC4zMDgtNzAuMTQgOTEuNTI1LTI3LjIgMjcuMi01Ny45ODEgNTAuNzg0LTkxLjQ5MSA3MC4xOTEtMzMuMDMyIDE5LjEzNC02OC43NTggMzQuMTQxLTEwNi40OTcgNDQuMjUzYTQ0Mi4wNTIgNDQyLjA1MiAwIDAgMS0xMTQuMzU5IDE1LjA5MmMtLjEzNi0uMDE3LS4yMzgtLjAxNy0uMzQxLS4wMTdabS4zMDcgMTE0LjU0N2M0OS44MTMtLjAzNSA5OC4wOS02LjYzNCAxNDQuMDMyLTE4LjkyOWE1NTMuMzE2IDU1My4zMTYgMCAwIDAgMTM0LjE3NC01NS42NjIgNTU3Ljg4NyA1NTcuODg3IDAgMCAwIDExNS4xNDMtODguNTA2IDU1OC45MzggNTU4LjkzOCAwIDAgMCA4OC40NTUtMTE1LjE3OCA1NTIuODYzIDU1Mi44NjMgMCAwIDAgNTUuNjExLTEzNC4xNzRDOTQzLjQgNDIyLjg0MiA5NDkuOTgzIDM3NC41ODIgOTUwIDMyNC43ODZ2LS4xODdjMC00OS43NDQtNi41NjYtOTcuOTU0LTE4LjgxLTE0My44NDRhNTUzLjQ1NCA1NTMuNDU0IDAgMCAwLTU1LjU0Mi0xMzQuMjQzQzg1MS4yNDUgNC4yNzIgODIxLjQ1My0zNC40NTYgNzg3LjIxLTY4Ljc1bC0zNC43MiAzNC43MmE1MDguOTA4IDUwOC45MDggMCAwIDEgODAuNjI3IDEwNS4wOTkgNTA0LjQ2NSA1MDQuNDY1IDAgMCAxIDUwLjYzMSAxMjIuMzkxYzExLjE1MyA0MS44MzEgMTcuMTM5IDg1Ljc3NyAxNy4xMzkgMTMxLjEzOXYuMTg3Yy0uMDE3IDQ1LjQxMy02LjAyIDg5LjQxLTE3LjIyNCAxMzEuMjkzYTUwNC45MDIgNTA0LjkwMiAwIDAgMS01MC42OTkgMTIyLjMyMyA1MDkuNzE1IDUwOS43MTUgMCAwIDEtODAuNjYyIDEwNS4wMTMgNTA5LjI3OCA1MDkuMjc4IDAgMCAxLTEwNC45OTYgODAuNjk2IDUwNC4zMiA1MDQuMzIgMCAwIDEtMTIyLjMyMyA1MC43NWMtNDEuODgzIDExLjIyMS04NS44OTcgMTcuMjQxLTEzMS4zMjcgMTcuMjc1aC0uMzA3Yy00NS4zMjcgMC04OS4yMzktNS45NjgtMTMxLjA1NC0xNy4xMjFhNTA0Ljg5OSA1MDQuODk5IDAgMCAxLTEyMi40NDItNTAuNjMxQTUwOS4yODQgNTA5LjI4NCAwIDAgMSAzNC43MiA2ODMuNzIyTDAgNzE4LjQ0M2E1NTkuMjIyIDU1OS4yMjIgMCAwIDAgMTE1LjI5NyA4OC40NzIgNTUzLjU2MyA1NTMuNTYzIDAgMCAwIDEzNC4yOTQgNTUuNTQyYzQ1Ljg1NiAxMi4yMjcgOTQuMDMxIDE4Ljc3NiAxNDMuNzU4IDE4Ljc3NmguMzQxWm04MC40NzQtMjU2LjEwNmEzMDkuMjggMzA5LjI4IDAgMCAwIDc0LjkzMi0zMS4xNTZjMjMuNTY4LTEzLjY1OSA0NS4yNDItMzAuMjUyIDY0LjM3Ni00OS4zODYgMTkuMTM0LTE5LjE1MSAzNS43MDktNDAuODA4IDQ5LjM1Mi02NC4zOTMgMTMuNDU1LTIzLjI0MyAyNC4wMTEtNDguMzggMzEuMTA1LTc0LjkzMWEzMTEuMzk2IDMxMS4zOTYgMCAwIDAgMTAuNjA3LTgwLjQ1N3YtLjE4OGMwLTI3Ljc4LTMuNjgzLTU0LjY3My0xMC41MDUtODAuMjg3LTcuMDc3LTI2LjU2OC0xNy42MTYtNTEuNzIyLTMxLjA1NC03NS0xMy42MjUtMjMuNjE4LTMwLjIwMS00NS4zMS00OS4zMzQtNjQuNDc4LTE5LjEzNC0xOS4xODUtNDAuODA5LTM1LjgxMS02NC4zOTMtNDkuNDg4LTIzLjI2MS0xMy40OS00OC40MTQtMjQuMDgtNzUtMzEuMjI1YTMxMS40NTEgMzExLjQ1MSAwIDAgMC04MC41Ni0xMC42NzVoLS4zMDdhMzEwLjk5NyAzMTAuOTk3IDAgMCAwLTgwLjMwMyAxMC41MjJjLTI2LjYyIDcuMDk0LTUxLjgwOCAxNy42NS03NS4xMiAzMS4xMjJsNDkuMDk3IDg1LjAyN2EyMTEuNjc4IDIxMS42NzggMCAwIDEgNTEuNDMyLTIxLjI5OSAyMTMuMzE0IDIxMy4zMTQgMCAwIDEgNTQuODk0LTcuMThoLjMwN2EyMTMuMiAyMTMuMiAwIDAgMSA1NS4xNSA3LjMzMyAyMTEuMjQ1IDIxMS4yNDUgMCAwIDEgNTEuMzMxIDIxLjQwMmMxNi4xMzIgOS4zNzkgMzAuOTUxIDIwLjc3MSA0NC4wNDggMzMuOTAyIDEzLjA4IDEzLjEzMSAyNC40MiAyNy45ODQgMzMuNzQ4IDQ0LjEzNGEyMTEuNDA4IDIxMS40MDggMCAwIDEgMjEuMjMxIDUxLjMzIDIxMy4yNzYgMjEzLjI3NiAwIDAgMSA3LjE4IDU0Ljg3N3YuMTg4YTIxMi45MTEgMjEyLjkxMSAwIDAgMS03LjI2NSA1NS4wM2MtNC44NiAxOC4xNjItMTIuMDkxIDM1LjM1Mi0yMS4yODIgNTEuMjYyLTkuMzI4IDE2LjEzMy0yMC42NjkgMzAuOTUyLTMzLjc2NiA0NC4wNDktMTMuMDc5IDEzLjA5Ni0yNy44OTkgMjQuNDU0LTQ0LjAzMSAzMy43OTktMTUuOTExIDkuMjI2LTMzLjEgMTYuNDU2LTUxLjI2MiAyMS4zMzRhMjEyLjQ5NSAyMTIuNDk1IDAgMCAxLTU1LjA2NSA3LjI5OHY5OC4xNzZhMzEyLjA5IDMxMi4wOSAwIDAgMCA4MC40NTctMTAuNjQyWm02Ni43NDctMzAwLjUxMWMwLTgxLjQ4LTY2LjA0Ny0xNDcuNTI3LTE0Ny41MjgtMTQ3LjUyNy04MS40OCAwLTE0Ny41MjcgNjYuMDQ3LTE0Ny41MjcgMTQ3LjUyNyAwIDgxLjQ4IDY2LjA0NyAxNDcuNTI3IDE0Ny41MjcgMTQ3LjUyNyA4MS40ODEgMCAxNDcuNTI4LTY2LjA2NCAxNDcuNTI4LTE0Ny41MjdaXFxcIiBmaWxsPVxcXCJ1cmwoI2dyb3VwX3N2Z19fYilcXFwiLz48L2c+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJncm91cF9zdmdfX2FcXFwiIHgxPVxcXCIxMjcuODk1XFxcIiB5MT1cXFwiNTgyLjY0N1xcXCIgeDI9XFxcIjg3OC4zNDJcXFwiIHkyPVxcXCIxNDkuMzc3XFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agb2Zmc2V0PVxcXCIuNlxcXCIgc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImdyb3VwX3N2Z19fYlxcXCIgeDE9XFxcIi0xMS4wNzFcXFwiIHkxPVxcXCI2OTkuMTkzXFxcIiB4Mj1cXFwiOTM2LjU4OVxcXCIgeTI9XFxcIjE1Mi4wNjFcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBvZmZzZXQ9XFxcIi42XFxcIiBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIxXFxcIiBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIiBzdG9wLW9wYWNpdHk9XFxcIjBcXFwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDQwIDQwXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIm0yMi4zNSAyMCA3LjE2Ny03LjE1YTEuNjc0IDEuNjc0IDAgMCAwLTIuMzY3LTIuMzY3TDIwIDE3LjY1bC03LjE1LTcuMTY3YTEuNjc0IDEuNjc0IDAgMCAwLTIuMzY3IDIuMzY3TDE3LjY1IDIwbC03LjE2NyA3LjE1YTEuNjY1IDEuNjY1IDAgMCAwIDAgMi4zNjcgMS42NjUgMS42NjUgMCAwIDAgMi4zNjcgMEwyMCAyMi4zNWw3LjE1IDcuMTY3YTEuNjY2IDEuNjY2IDAgMCAwIDIuMzY3IDAgMS42NjYgMS42NjYgMCAwIDAgMC0yLjM2N0wyMi4zNSAyMFpcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgOTM0IDIyMFxcXCI+PGcgZmlsbD1cXFwibm9uZVxcXCI+PHBhdGggZmlsbD1cXFwiIzE4NTU2OFxcXCIgZD1cXFwiTTIuNiAyMDguN1YxMDIuMmgzMC44djEwNi41ek0xMjYgMTk4LjRjLTcgOC41LTE3IDEzLjMtMzAuNCAxMy4zLTIxLjQgMC0zOC43LTEzLjMtMzguNy0zMy45IDAtMjAuMyAxNy4zLTMwLjQgNDEuNS0zMS43IDE4LjYtMS4xIDI0LjUtMy4xIDI0LjUtOS40IDAtNi4xLTUuNy0xMC4zLTE1LjctMTAuMy0xMi4yIDAtMTcuNSA2LjEtMTguMSAxMi43SDU5LjJjMS41LTIzLjQgMTktMzkuNSA0OC4zLTM5LjUgMjguNiAwIDQ3IDE1LjUgNDcgNDQuNnY2NS4xaC0yNS42bC0yLjktMTAuOXptLTM4LTIxLjljMCA2LjEgNS41IDkuOCAxNC4yIDkuOCAxMS44IDAgMjEuMi02LjYgMjEuMi0xOS45di0zLjlzLTUuNyAyLjYtMTcuNSAzLjNjLTEyLjguNy0xNy45IDQuOC0xNy45IDEwLjd6bTEzNSAzMy4yYy0yMy40IDAtMzYuOS0xMy41LTM2LjktMzcuMXYtNDEuN2gtMTcuOXYtMjguNmgxNy45Vjg2LjVsMzEtMjYuMnY0MS45SDI0NHYyOC42aC0yNi45djM3LjRjMCAxMC4zIDYuOCAxMi43IDEzLjEgMTIuNyA3LjIgMCAxMy4xLTIuOCAxMy4xLTIuOHYyOC4ycy04LjMgMy40LTIwLjMgMy40ek0wIDcwLjJjMC0xMCA3LjktMTguMSAxNy45LTE4LjEgMTAgMCAxOC4xIDguMSAxOC4xIDE4LjEgMCA5LjgtOC4xIDE3LjktMTguMSAxNy45LTEwIDAtMTcuOS04LTE3LjktMTcuOXptMjY2LjkgMTM4LjVWMTAyLjJoMzAuOHYxMDYuNXpcXFwiLz48ZyB0cmFuc2Zvcm09XFxcInRyYW5zbGF0ZSgyMjcpXFxcIj48cGF0aCBmaWxsPVxcXCIjMTg1NTY4XFxcIiBkPVxcXCJNMTEwLjkgNzAuNWMwLTQuOS0uNy05LjctMS45LTE0LjMtMS4zLTQuNy0zLjEtOS4yLTUuNS0xMy4zLTIuNC00LjItNS40LTgtOC44LTExLjQtMy40LTMuNC03LjItNi4zLTExLjQtOC44LTQuMS0yLjQtOC42LTQuMy0xMy4zLTUuNS00LjYtMS4yLTkuMy0xLjktMTQuMy0xLjktNC45IDAtOS43LjctMTQuMyAxLjktNC43IDEuMy05LjIgMy4xLTEzLjMgNS41LTQuMiAyLjQtOCA1LjQtMTEuNCA4LjgtMy40IDMuNC02LjQgNy4yLTguOCAxMS40LTIuNCA0LjEtNC4zIDguNi01LjUgMTMuM2w3LjkgMi4xYzEuMS00IDIuNy03LjggNC43LTExLjMgMi4xLTMuNiA0LjYtNi44IDcuNS05LjcgMi45LTIuOSA2LjItNS40IDkuNy03LjUgMy41LTIgNy4zLTMuNiAxMS4zLTQuNyAzLjktMSA3LjktMS42IDEyLjEtMS42IDQuMiAwIDguMy42IDEyLjIgMS42IDQgMS4xIDcuOCAyLjcgMTEuMyA0LjcgMy42IDIuMSA2LjggNC42IDkuNyA3LjUgMi45IDIuOSA1LjQgNi4yIDcuNSA5LjcgMiAzLjUgMy42IDcuMyA0LjcgMTEuMyAxIDMuOSAxLjYgOCAxLjYgMTIuMiAwIDQuMi0uNiA4LjMtMS42IDEyLjEtMS4xIDQtMi43IDcuOC00LjcgMTEuM2w3LjEgNC4xYzIuNC00LjEgNC4zLTguNiA1LjUtMTMuMyAxLjMtNC41IDItOS4yIDItMTQuMlpcXFwiLz48cGF0aCBmaWxsPVxcXCIjMTg1NTY4XFxcIiBkPVxcXCJNMTI1LjIgNzAuNWMwLTYuMi0uOC0xMi4zLTIuNC0xOC0xLjYtNS45LTMuOS0xMS42LTctMTYuOC0zLjEtNS4zLTYuOC0xMC4xLTExLjEtMTQuNC00LjMtNC4zLTkuMS04LTE0LjQtMTEuMS01LjItMy0xMC44LTUuNC0xNi44LTYuOUM2Ny44IDEuOCA2MS43LjkgNTUuNS45Yy02LjIgMC0xMi4yLjgtMTggMi4zLTUuOSAxLjYtMTEuNiAzLjktMTYuOCA2LjktNS4zIDMtMTAuMSA2LjgtMTQuNCAxMWw0LjMgNC4zYzMuOS0zLjkgOC4zLTcuMyAxMy4xLTEwLjEgNC43LTIuNyA5LjktNC45IDE1LjMtNi4zIDUuMi0xLjQgMTAuNy0yLjEgMTYuNC0yLjEgNS43IDAgMTEuMi44IDE2LjQgMi4yIDUuNCAxLjQgMTAuNSAzLjYgMTUuMyA2LjNhNjQuNDY2IDY0LjQ2NiAwIDAgMSAyMy4yIDIzLjJjMi43IDQuNyA0LjkgOS45IDYuMyAxNS4zIDEuNCA1LjIgMi4yIDEwLjcgMi4yIDE2LjQgMCA1LjctLjcgMTEuMS0yLjEgMTYuNC0xLjQgNS40LTMuNiAxMC42LTYuMyAxNS4zLTIuOCA0LjgtNi4yIDkuMi0xMC4xIDEzLjFsNC4zIDQuM2M0LjMtNC4zIDgtOS4xIDExLjEtMTQuNCAzLTUuMiA1LjQtMTAuOCA2LjktMTYuOCAxLjgtNS40IDIuNi0xMS41IDIuNi0xNy43WlxcXCIvPjxwYXRoIGZpbGw9XFxcIiMxODU1NjhcXFwiIGQ9XFxcIk05My4yIDYwLjRjLS45LTMuMy0yLjItNi41LTMuOS05LjQtMS43LTIuOS0zLjgtNS43LTYuMi04LTIuNC0yLjQtNS4xLTQuNS04LTYuMi0yLjktMS43LTYtMy05LjQtMy45LTMuMi0uOS02LjYtMS4zLTEwLTEuMy0zLjUgMC02LjguNS0xMCAxLjMtMy4zLjktNi41IDIuMi05LjQgMy45LTIuOSAxLjctNS43IDMuOC04LjEgNi4yLTIuNCAyLjQtNC41IDUuMS02LjIgOC0xLjcgMi45LTMgNi0zLjkgOS40LS45IDMuMi0xLjMgNi42LTEuMyAxMC4xcy41IDYuOCAxLjMgMTBjLjkgMy4zIDIuMiA2LjUgMy45IDkuNGwxMC42LTYuMWMtMS4yLTItMi4xLTQuMS0yLjctNi40LS42LTIuMi0uOS00LjUtLjktNi45IDAtMi40LjMtNC43LjktNi45LjYtMi4zIDEuNS00LjQgMi43LTYuNCAxLjItMiAyLjYtMy45IDQuMi01LjVzMy41LTMuMSA1LjUtNC4yIDQuMS0yIDYuNC0yLjdjMi4yLS42IDQuNS0uOSA2LjktLjkgMi40IDAgNC43LjMgNi45LjkgMi4zLjYgNC40IDEuNSA2LjQgMi43IDIgMS4yIDMuOSAyLjYgNS41IDQuMnMzLjEgMy41IDQuMiA1LjVjMS4yIDIgMi4xIDQuMSAyLjcgNi40LjYgMi4yLjkgNC41LjkgNi45aDEyLjNjMC0zLjUtLjQtNi45LTEuMy0xMC4xWlxcXCIvPjxnIGZpbGw9XFxcIiNBN0VCRUZcXFwiPjxwYXRoIGQ9XFxcIk04MS40IDYzLjZjLS42LTIuMy0xLjUtNC40LTIuNy02LjQtMS4yLTItMi42LTMuOS00LjItNS41bC01LjggNS44YzEuMSAxLjEgMi4xIDIuNCAyLjkgMy44LjggMS40IDEuNCAyLjkgMS44IDQuNC40IDEuNS42IDMuMS42IDQuOCAwIDEuNy0uMiAzLjItLjYgNC44LS40IDEuNi0xIDMuMS0xLjggNC40LS44IDEuNC0xLjggMi43LTIuOSAzLjgtMS4xIDEuMS0yLjQgMi4xLTMuOCAyLjktMS40LjgtMi45IDEuNC00LjQgMS44LTEuNS40LTMuMS42LTQuOC42LTEuNyAwLTMuMi0uMi00LjgtLjYtMS42LS40LTMuMS0xLTQuNC0xLjhsLTQuMSA3LjFjMiAxLjIgNC4xIDIuMSA2LjQgMi43IDIuMi42IDQuNS45IDYuOS45IDIuNCAwIDQuNy0uMyA2LjktLjkgMi4zLS42IDQuNC0xLjUgNi40LTIuNyAyLTEuMiAzLjktMi42IDUuNS00LjJzMy4xLTMuNSA0LjItNS41YzEuMi0yIDIuMS00LjEgMi43LTYuNC42LTIuMi45LTQuNS45LTYuOSAwLTIuNC0uMy00LjctLjktNi45WlxcXCIvPjxwYXRoIGQ9XFxcIk05Ni40IDQ3Yy0yLjEtMy42LTQuNi02LjgtNy41LTkuNy0yLjktMi45LTYuMi01LjQtOS43LTcuNS0zLjUtMi03LjMtMy42LTExLjMtNC43LTMuOS0xLTgtMS42LTEyLjItMS42LTQuMiAwLTguMy42LTEyLjIgMS42LTQgMS4xLTcuOCAyLjctMTEuMyA0LjctMy42IDIuMS02LjggNC42LTkuNyA3LjUtMi45IDIuOS01LjQgNi4yLTcuNSA5LjctMiAzLjUtMy42IDcuMy00LjcgMTEuMy0xIDMuOS0xLjYgOC0xLjYgMTIuMmg4LjJjMC0zLjUuNS02LjkgMS4zLTEwLjEuOS0zLjMgMi4yLTYuNSAzLjktOS40IDEuNy0yLjkgMy44LTUuNyA2LjItOC4xIDIuNC0yLjQgNS4xLTQuNSA4LjEtNi4yIDIuOS0xLjcgNi4xLTMgOS40LTMuOSAzLjItLjkgNi42LTEuMyAxMC4xLTEuM3M2LjkuNSAxMC4xIDEuM2MzLjMuOSA2LjUgMi4yIDkuNCAzLjkgMi45IDEuNyA1LjcgMy44IDguMSA2LjIgMi40IDIuNCA0LjUgNS4xIDYuMiA4LjEgMS43IDIuOSAzIDYuMSAzLjkgOS40bDcuOS0yLjFjLTEuNS00LTMuMS03LjgtNS4xLTExLjNaXFxcIi8+PHBhdGggZD1cXFwiTTExNi45IDU0LjFjLTEuNC01LjQtMy42LTEwLjUtNi4zLTE1LjNhNjQuNDY2IDY0LjQ2NiAwIDAgMC0yMy4yLTIzLjJjLTQuNy0yLjctOS45LTQuOS0xNS4zLTYuMy01LjItMS40LTEwLjctMi4xLTE2LjQtMi4xLTUuNyAwLTExLjIuOC0xNi40IDIuMS01LjQgMS40LTEwLjUgMy42LTE1LjMgNi4zQTY0LjQ2NiA2NC40NjYgMCAwIDAgLjggMzguOGw3LjEgNC4xYzIuNC00LjIgNS40LTggOC44LTExLjQgMy40LTMuNCA3LjMtNi4zIDExLjQtOC44IDQuMS0yLjQgOC42LTQuMyAxMy4zLTUuNSA0LjYtMS4yIDkuMy0xLjkgMTQuMy0xLjlzOS43LjcgMTQuMyAxLjljNC43IDEuMyA5LjIgMy4xIDEzLjMgNS41IDQuMiAyLjQgOCA1LjQgMTEuNCA4LjggMy40IDMuNCA2LjMgNy4zIDguOCAxMS40IDIuNCA0LjEgNC4zIDguNiA1LjUgMTMuMyAxLjIgNC42IDEuOSA5LjMgMS45IDE0LjMgMCA0LjktLjcgOS43LTEuOSAxNC4zbDcuOSAyLjFjMS40LTUuMiAyLjEtMTAuNyAyLjEtMTYuNC4xLTUuNi0uNy0xMS4xLTIuMS0xNi40WlxcXCIvPjwvZz48Y2lyY2xlIGN4PVxcXCI1NS43XFxcIiBjeT1cXFwiNzAuNVxcXCIgcj1cXFwiMTguNFxcXCIgZmlsbD1cXFwiIzE4NTU2OFxcXCIvPjwvZz48cGF0aCBkPVxcXCJNMzU1LjMgMTQzLjR2LTM4LjJoOC4xdjM4LjJ6bTIzLjMtMTMuNHYxMy40aC03Ljd2LTI2LjdoNy42djEuOWMxLjUtMS40IDMuNi0yLjUgNi4zLTIuNSA2LjUgMCAxMC44IDQuMyAxMC44IDExLjh2MTUuNUgzODh2LTE0LjljMC0yLjgtMS4zLTUuMi00LjQtNS4yLTMuNy0uMS01IDIuNi01IDYuN3ptMzQuMSAxMy41Yy01LjggMC05LjItMy40LTkuMi05LjN2LTEwLjRIMzk5di03LjFoNC41di0zLjlsNy43LTYuNXYxMC41aDYuN3Y3LjFoLTYuN3Y5LjNjMCAyLjYgMS43IDMuMiAzLjMgMy4yIDEuOCAwIDMuMy0uNyAzLjMtLjd2N2MwLS4xLTIuMS44LTUuMS44em0zNS45LTExLjRoLTE4LjljLjQgMi43IDIuNyA0LjggNiA0LjggMi4yIDAgMy41LS45IDQuNC0yLjNoOC4zYy0xLjggNS44LTUuOSA5LjQtMTIuNiA5LjQtNy43IDAtMTQtNS40LTE0LTEzLjggMC04LjEgNS43LTE0LjIgMTMuNS0xNC4yIDguOCAwIDEzLjIgNi45IDEzLjIgMTQuMS4yLjcuMSAyIC4xIDJ6bS0xMy4xLTkuM2MtMi45IDAtNC45IDEuOC01LjQgNC4xaDEwLjRjLS4yLTIuMy0yLjItNC4xLTUtNC4xem0zNi4xLTQuNnY3LjZzLTItMi4xLTUuMS0yLjFjLTIuMyAwLTUgMS4zLTUgNS4ydjE0LjRoLTcuN3YtMjYuN2g3LjZ2Mi4yYy0uMSAwIDEuNS0yLjYgNS4zLTIuNiAzLjQuMSA0LjkgMiA0LjkgMnptMTIgMTEuOHYxMy40aC03Ljd2LTI2LjdoNy42djEuOWMxLjUtMS40IDMuNi0yLjUgNi4zLTIuNSA2LjUgMCAxMC44IDQuMyAxMC44IDExLjh2MTUuNWgtNy43di0xNC45YzAtMi44LTEuMy01LjItNC40LTUuMi0zLjctLjEtNC45IDIuNi00LjkgNi43em0zOS4zIDEwLjdjLTEuNyAyLjEtNC4zIDMuMy03LjYgMy4zLTUuMyAwLTkuNi0zLjMtOS42LTguNCAwLTUuMSA0LjMtNy42IDEwLjQtNy45IDQuNi0uMyA2LjEtLjggNi4xLTIuMyAwLTEuNS0xLjQtMi42LTMuOS0yLjYtMy4xIDAtNC40IDEuNS00LjUgMy4yaC03LjVjLjQtNS44IDQuNy05LjkgMTItOS45IDcuMSAwIDExLjcgMy45IDExLjcgMTEuMXYxNi4yaC02LjRsLS43LTIuN3ptLTkuNC01LjVjMCAxLjUgMS40IDIuNSAzLjUgMi41IDIuOSAwIDUuMy0xLjYgNS4zLTV2LTFzLTEuNC43LTQuNC44Yy0zLjIuMi00LjQgMS4yLTQuNCAyLjd6bTMzLjYgOC4zYy01LjggMC05LjItMy40LTkuMi05LjN2LTEwLjRoLTQuNXYtNy4xaDQuNXYtMy45bDcuNy02LjV2MTAuNWg2Ljd2Ny4xaC02Ljd2OS4zYzAgMi42IDEuNyAzLjIgMy4zIDMuMiAxLjggMCAzLjMtLjcgMy4zLS43djdjMC0uMS0yLjEuOC01LjEuOHptMTAuNC0zNC40YzAtMi41IDItNC41IDQuNS00LjVzNC41IDIgNC41IDQuNS0yIDQuNS00LjUgNC41LTQuNS0yLjEtNC41LTQuNXptLjYgMzQuM3YtMjYuN2g3Ljd2MjYuN2gtNy43em0xMy40LTEzLjRjMC04IDYuMi0xNCAxNC4yLTE0IDguMSAwIDE0LjIgNiAxNC4yIDE0cy02LjIgMTQtMTQuMiAxNGMtOC4xIDAtMTQuMi02LTE0LjItMTR6bTcuOSAwYzAgMy45IDIuNyA2LjggNi4zIDYuOCAzLjcgMCA2LjMtMi44IDYuMy02LjggMC0zLjktMi43LTYuOC02LjMtNi44LTMuNi4xLTYuMyAyLjktNi4zIDYuOHptMzMuNiAwdjEzLjRoLTcuN3YtMjYuN2g3LjZ2MS45YzEuNS0xLjQgMy42LTIuNSA2LjMtMi41IDYuNSAwIDEwLjggNC4zIDEwLjggMTEuOHYxNS41aC03Ljd2LTE0LjljMC0yLjgtMS4zLTUuMi00LjQtNS4yLTMuNi0uMS00LjkgMi42LTQuOSA2Ljd6bTM5LjQgMTAuN2MtMS43IDIuMS00LjMgMy4zLTcuNiAzLjMtNS4zIDAtOS42LTMuMy05LjYtOC40IDAtNS4xIDQuMy03LjYgMTAuNC03LjkgNC42LS4zIDYuMS0uOCA2LjEtMi4zIDAtMS41LTEuNC0yLjYtMy45LTIuNi0zLjEgMC00LjQgMS41LTQuNSAzLjJoLTcuNWMuNC01LjggNC43LTkuOSAxMi05LjkgNy4xIDAgMTEuNyAzLjkgMTEuNyAxMS4xdjE2LjJoLTYuNGwtLjctMi43em0tOS41LTUuNWMwIDEuNSAxLjQgMi41IDMuNSAyLjUgMi45IDAgNS4zLTEuNiA1LjMtNXYtMXMtMS40LjctNC40LjhjLTMuMi4yLTQuNCAxLjItNC40IDIuN3ptMjMgOC4ydi0zOC4yaDcuN3YzOC4yem00OS42LTM4LjIgMTQuOSAzOC4ySDcyMmwtMy4xLTcuNWgtMTQuOGwtMyA3LjVoLTguNGwxNC45LTM4LjJoNy45em0tMy45IDExLTQuNyAxMi41aDkuNWwtNC44LTEyLjV6bTIyLjUtNy4xYzAtMi41IDItNC41IDQuNS00LjVzNC41IDIgNC41IDQuNS0yIDQuNS00LjUgNC41LTQuNS0yLjEtNC41LTQuNXptLjYgMzQuM3YtMjYuN2g3Ljd2MjYuN2gtNy43em0xMy40LTEzLjRjMC04LjQgNi4xLTE0IDEzLjUtMTQgMy4xIDAgNS42IDEuMSA3IDIuM3YtMTMuMmg3Ljd2MzguMmgtNy42di0xLjljLTEuNCAxLjQtNC4xIDIuNS03LjEgMi41LTcuNS4xLTEzLjUtNS4zLTEzLjUtMTMuOXptMjAuNSAwYzAtNC4xLTIuNy03LTYuMy03LTMuNiAwLTYuMyAyLjgtNi4zIDcgMCA0LjEgMi43IDcgNi4zIDcgMy42IDAgNi4zLTIuOCA2LjMtN3ptLTQxNS44IDQwLjZoMzB2Ny41aC0xMXYzMC43aC04LjFWMTc4aC0xMXYtNy40em00OC45IDEzdjcuNnMtMi0yLjEtNS4xLTIuMWMtMi4zIDAtNSAxLjMtNSA1LjJ2MTQuNEgzODRWMTgyaDcuNnYyLjJjLS4xIDAgMS41LTIuNiA1LjMtMi42IDMuMy4xIDQuOCAyIDQuOCAyem0yMC44IDIyLjRjLTEuNyAyLjEtNC4zIDMuMy03LjYgMy4zLTUuMyAwLTkuNi0zLjMtOS42LTguNCAwLTUuMSA0LjMtNy42IDEwLjQtNy45IDQuNi0uMyA2LjEtLjggNi4xLTIuMyAwLTEuNS0xLjQtMi42LTMuOS0yLjYtMy4xIDAtNC40IDEuNS00LjUgMy4yaC03LjVjLjQtNS44IDQuNy05LjkgMTItOS45IDcuMSAwIDExLjcgMy45IDExLjcgMTEuMXYxNi4yaC02LjRsLS43LTIuN3ptLTkuNS01LjRjMCAxLjUgMS40IDIuNSAzLjUgMi41IDIuOSAwIDUuMy0xLjYgNS4zLTV2LTFzLTEuNC43LTQuNC44Yy0zLjEuMi00LjQgMS4yLTQuNCAyLjd6bTMwLjgtNS4ydjEzLjRINDM2di0yNi43aDcuNnYxLjljMS41LTEuNCAzLjYtMi41IDYuMy0yLjUgNi41IDAgMTAuOCA0LjMgMTAuOCAxMS44djE1LjVINDUzdi0xNC45YzAtMi44LTEuMy01LjItNC40LTUuMi0zLjYtLjEtNC44IDIuNi00LjggNi43em0zOCA1LjdjMC0uOC0uNS0xLjUtMi42LTEuOWwtNC0uOGMtNi4xLTEuMi04LjYtNC4xLTguNi04LjEgMC00LjcgMy41LTguOSAxMC45LTguOXMxMC43IDQuMSAxMS4zIDguOGgtNy40Yy0uNC0xLjUtMS43LTIuMy00LTIuMy0yLjIgMC0zLjQuOC0zLjQgMS45IDAgLjguNyAxLjMgMi43IDEuN2w0IC44YzUuNyAxLjEgOC42IDMuOCA4LjYgOC40IDAgNS4yLTMuOCA4LjgtMTEuMiA4LjgtNy42IDAtMTEuNy0zLjYtMTIuNS05LjJoNy44Yy40IDEuOSAxLjggMi44IDQuNyAyLjggMi41LS4xIDMuNy0uOCAzLjctMnptNDAuNy01LjdjMCA4LjQtNi4xIDE0LTEzLjUgMTQtMy4xIDAtNS42LTEuMS03LTIuM3YxMi4zaC03Ljd2LTM3LjNoNy42djEuOWMxLjQtMS40IDQuMS0yLjYgNy4xLTIuNiA3LjUgMCAxMy41IDUuNCAxMy41IDE0em0tMjAuNSAwYzAgNC4xIDIuNyA3IDYuMyA3IDMuNiAwIDYuMy0yLjggNi4zLTcgMC00LjEtMi43LTctNi4zLTctMy42IDAtNi4zIDIuOS02LjMgN3ptNDEuOCAxMC42Yy0xLjcgMi4xLTQuMyAzLjMtNy42IDMuMy01LjMgMC05LjYtMy4zLTkuNi04LjQgMC01LjEgNC4zLTcuNiAxMC40LTcuOSA0LjYtLjMgNi4xLS44IDYuMS0yLjMgMC0xLjUtMS40LTIuNi0zLjktMi42LTMuMSAwLTQuNCAxLjUtNC41IDMuMmgtNy41Yy40LTUuOCA0LjctOS45IDEyLTkuOSA3LjEgMCAxMS43IDMuOSAxMS43IDExLjF2MTYuMmgtNi40bC0uNy0yLjd6bS05LjUtNS40YzAgMS41IDEuNCAyLjUgMy41IDIuNSAyLjkgMCA1LjMtMS42IDUuMy01di0xcy0xLjQuNy00LjQuOGMtMy4xLjItNC40IDEuMi00LjQgMi43em00MC44LTE3djcuNnMtMi0yLjEtNS4xLTIuMWMtMi4zIDAtNSAxLjMtNSA1LjJ2MTQuNGgtNy43VjE4Mmg3LjZ2Mi4yYy0uMSAwIDEuNS0yLjYgNS4zLTIuNiAzLjQuMSA0LjkgMiA0LjkgMnptMjkuNyAxMy45aC0xOC45Yy40IDIuNyAyLjcgNC44IDYgNC44IDIuMiAwIDMuNS0uOSA0LjQtMi4zaDguM2MtMS44IDUuOC01LjkgOS40LTEyLjYgOS40LTcuNyAwLTE0LTUuNC0xNC0xMy44IDAtOC4xIDUuNy0xNC4yIDEzLjUtMTQuMiA4LjggMCAxMy4yIDYuOSAxMy4yIDE0LjEuMS43LjEgMiAuMSAyem0tMTMuMS05LjNjLTIuOSAwLTQuOSAxLjgtNS40IDQuMWgxMC40Yy0uMi0yLjMtMi4yLTQuMS01LTQuMXptMjYuMSA3LjJ2MTMuNEg2MTB2LTI2LjdoNy42djEuOWMxLjUtMS40IDMuNi0yLjUgNi4zLTIuNSA2LjUgMCAxMC44IDQuMyAxMC44IDExLjh2MTUuNUg2Mjd2LTE0LjljMC0yLjgtMS4zLTUuMi00LjQtNS4yLTMuNi0uMS00LjggMi42LTQuOCA2Ljd6bTQwLjcgM2g4LjVjLTEuMyA2LjUtNi4yIDExLTEzLjQgMTEtOC4xIDAtMTQuMS01LjktMTQuMS0xNCAwLTggNi0xNCAxNC4xLTE0IDcgMCAxMS45IDQuNCAxMi45IDEwLjdINjU4Yy0uNi0yLTIuMy0zLjQtNC43LTMuNC0zLjMgMC01LjkgMi44LTUuOSA2LjcgMCAzLjkgMi42IDYuNyA2IDYuNyAyLjYgMCA0LjUtMS40IDUuMS0zLjd6bTE4IDIxLjJjLTMuNSAwLTUuMi0uOS01LjItLjl2LTcuMXMxLjYuOCAzLjMuOGMxLjcgMCA0LS43IDQuNi0zLjdMNjY4LjggMTgyaDguNmw2LjEgMTYuNiA2LjItMTYuNmg4LjNsLTExIDI3LjJjLTIuOSA3LjEtNS4yIDEwLjQtMTAuNSAxMC40em00MC45LTEwLjh2LTM4LjJoOC4xdjM4LjJ6bTIzLjMtMTMuNHYxMy40SDczM3YtMjYuN2g3LjZ2MS45YzEuNS0xLjQgMy42LTIuNSA2LjMtMi41IDYuNSAwIDEwLjggNC4zIDEwLjggMTEuOHYxNS41SDc1MHYtMTQuOWMwLTIuOC0xLjMtNS4yLTQuNC01LjItMy43LS4xLTQuOSAyLjYtNC45IDYuN3ptMjMtMjAuOWMwLTIuNSAyLTQuNSA0LjUtNC41czQuNSAyIDQuNSA0LjUtMiA0LjUtNC41IDQuNS00LjUtMi4xLTQuNS00LjV6bS42IDM0LjN2LTI2LjdoNy43djI2LjdoLTcuN3ptMjUuNi4xYy01LjggMC05LjItMy40LTkuMi05LjN2LTEwLjRoLTQuNXYtNy4xaDQuNXYtMy45bDcuNy02LjV2MTAuNWg2Ljd2Ny4xaC02Ljd2OS4zYzAgMi42IDEuNyAzLjIgMy4zIDMuMiAxLjggMCAzLjMtLjcgMy4zLS43djdjMC0uMS0yLjEuOC01LjEuOHptMTAuNC0zNC40YzAtMi41IDItNC41IDQuNS00LjVzNC41IDIgNC41IDQuNS0yIDQuNS00LjUgNC41LTQuNS0yLjEtNC41LTQuNXptLjYgMzQuM3YtMjYuN2g3Ljd2MjYuN2gtNy43em0zMC44LTIuOGMtMS43IDIuMS00LjMgMy4zLTcuNiAzLjMtNS4zIDAtOS42LTMuMy05LjYtOC40IDAtNS4xIDQuMy03LjYgMTAuNC03LjkgNC42LS4zIDYuMS0uOCA2LjEtMi4zIDAtMS41LTEuNC0yLjYtMy45LTIuNi0zLjEgMC00LjQgMS41LTQuNSAzLjJoLTcuNWMuNC01LjggNC43LTkuOSAxMi05LjkgNy4xIDAgMTEuNyAzLjkgMTEuNyAxMS4xdjE2LjJoLTYuNGwtLjctMi43em0tOS40LTUuNGMwIDEuNSAxLjQgMi41IDMuNSAyLjUgMi45IDAgNS4zLTEuNiA1LjMtNXYtMXMtMS40LjctNC40LjhjLTMuMi4yLTQuNCAxLjItNC40IDIuN3ptMzMuNiA4LjNjLTUuOCAwLTkuMi0zLjQtOS4yLTkuM3YtMTAuNGgtNC41di03LjFoNC41di0zLjlsNy43LTYuNXYxMC41aDYuN3Y3LjFoLTYuN3Y5LjNjMCAyLjYgMS43IDMuMiAzLjMgMy4yIDEuOCAwIDMuMy0uNyAzLjMtLjd2N2MwLS4xLTIuMS44LTUuMS44em0xMC40LTM0LjRjMC0yLjUgMi00LjUgNC41LTQuNXM0LjUgMiA0LjUgNC41LTIgNC41LTQuNSA0LjUtNC41LTIuMS00LjUtNC41em0uNiAzNC4zdi0yNi43aDcuN3YyNi43aC03Ljd6bTM4LjctMjYuNy05LjUgMjYuN2gtOGwtOS41LTI2LjdoOC4ybDUuMiAxNi41IDUuMi0xNi41em0yOC4yIDE1LjRoLTE4LjljLjQgMi43IDIuNyA0LjggNiA0LjggMi4yIDAgMy41LS45IDQuNC0yLjNoOC4zYy0xLjggNS44LTUuOSA5LjQtMTIuNiA5LjQtNy43IDAtMTQtNS40LTE0LTEzLjggMC04LjEgNS43LTE0LjIgMTMuNS0xNC4yIDguOCAwIDEzLjIgNi45IDEzLjIgMTQuMS4xLjcuMSAyIC4xIDJabS0xMy4xLTkuM2MtMi45IDAtNC45IDEuOC01LjQgNC4xaDEwLjRjLS4yLTIuMy0yLjItNC4xLTUtNC4xWlxcXCIgZmlsbD1cXFwiIzE4NTU2OFxcXCIvPjwvZz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjUgMjRcXFwiPjxwYXRoIGQ9XFxcIk0yMC44MzQgMTEuMjNWOC45NTdhOC4zMzMgOC4zMzMgMCAwIDAtMTYuNjY3IDB2Mi4yNzFhMy4xMjUgMy4xMjUgMCAwIDAtMi4wODMgMi45Mzh2Mi4wODNhMy4xMjUgMy4xMjUgMCAwIDAgMy4xMjQgMy4xMjVoMy4xMjZhMS4wNDEgMS4wNDEgMCAwIDAgMS4wNDEtMS4wNDJ2LTYuMjVhMS4wNDIgMS4wNDIgMCAwIDAtMS4wNDEtMS4wNDFINi4yNVY4Ljk1OGE2LjI1IDYuMjUgMCAxIDEgMTIuNSAwdjIuMDg0aC0yLjA4M2ExLjA0MSAxLjA0MSAwIDAgMC0xLjA0MiAxLjA0MXY2LjI1YTEuMDQxIDEuMDQxIDAgMCAwIDEuMDQyIDEuMDQyaDMuMTI1YTMuMTI1IDMuMTI1IDAgMCAwIDMuMTI1LTMuMTI1di0yLjA4M2EzLjEyNSAzLjEyNSAwIDAgMC0yLjA4NC0yLjkzOFpNNy4yOTIgMTMuMTI0djQuMTY3SDUuMjA5YTEuMDQyIDEuMDQyIDAgMCAxLTEuMDQyLTEuMDQydi0yLjA4M2ExLjA0MiAxLjA0MiAwIDAgMSAxLjA0Mi0xLjA0MmgyLjA4M1ptMTMuNTQyIDMuMTI1YTEuMDQyIDEuMDQyIDAgMCAxLTEuMDQyIDEuMDQyaC0yLjA4NHYtNC4xNjdoMi4wODRhMS4wNDIgMS4wNDIgMCAwIDEgMS4wNDEgMS4wNDJ2Mi4wODNaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PHBhdGggZD1cXFwiTTE4LjM4NCAyMS42MTZBNC42MyA0LjYzIDAgMCAxIDE1LjEyIDIzbC0uMDEtMS4xNThhMy40NzIgMy40NzIgMCAwIDAgMy40NDUtMy41bDEuMTU3LS4wMDlhNC42MyA0LjYzIDAgMCAxLTEuMzMgMy4yODRaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIiBzdHJva2U9XFxcIiNmZmZcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4wNDJcXFwiLz48cmVjdCB4PVxcXCIxMS4yNVxcXCIgeT1cXFwiMjAuNDE2XFxcIiB3aWR0aD1cXFwiNC42ODhcXFwiIGhlaWdodD1cXFwiMy4xMjVcXFwiIHJ4PVxcXCIxLjU2M1xcXCIgZmlsbD1cXFwiI2ZmZlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNSAxNFxcXCI+PHBhdGggZD1cXFwiTTcuMzg1IDQuNjY3YTEuMSAxLjEgMCAwIDAtLjUxOC4xMjhjLS4xNi4wODUtLjI5NS4yMDktLjM5LjM2MmwtLjAwNC4wMDYtLjAwMy4wMDdhLjM0Ni4zNDYgMCAwIDEtLjA5My4xMDUuNDM4LjQzOCAwIDAgMS0uNDU1LjAzMy4zNy4zNyAwIDAgMS0uMTEzLS4wOTMuMzEzLjMxMyAwIDAgMS0uMDYtLjExNy4yODcuMjg3IDAgMCAxLS4wMDUtLjEyNGwtLjMyOS0uMDU4LjMyOS4wNThhLjMwNS4zMDUgMCAwIDEgLjA0OS0uMTJsLjAwNC0uMDA1LjAwNC0uMDA2YTEuNzUgMS43NSAwIDAgMSAuNjYzLS42MTUgMS45MiAxLjkyIDAgMCAxIDIuMDkyLjE3NmMuMzI0LjI1Ni41MzcuNjA1LjYwNy45ODUuMDcuMzc4LS4wMDUuNzctLjIxNSAxLjEwNS0uMjExLjMzNy0uNTQ2LjYtLjk1Mi43MzdsLS4yMjcuMDc2di4zNmEuMzEuMzEgMCAwIDEtLjEwNC4yMjcuNDE0LjQxNCAwIDAgMS0uMjguMTA2Yy0uMTEgMC0uMjEtLjA0LS4yODEtLjEwNkEuMzEuMzEgMCAwIDEgNyA3LjY2N1Y3YS4zMS4zMSAwIDAgMSAuMTA0LS4yMjcuNDE0LjQxNCAwIDAgMSAuMjgtLjEwNmMuMjcyIDAgLjUzNi0uMS43MzUtLjI4NWEuOTc3Ljk3NyAwIDAgMCAuMzE3LS43MTUuOTc3Ljk3NyAwIDAgMC0uMzE3LS43MTYgMS4wOCAxLjA4IDAgMCAwLS43MzQtLjI4NFptMCAwVjV2LS4zMzNabS0uMzY5IDQuOTA2LjAxMi0uMDIxLjAwOS0uMDIzYS4xNi4xNiAwIDAgMSAuMDItLjAzNy43MzYuNzM2IDAgMCAxIC4wNS0uMDYuMzkxLjM5MSAwIDAgMSAuMTIyLS4wNzQuNDMzLjQzMyAwIDAgMSAuMzExIDBsLjEyLS4zMS0uMTIuMzFhLjM5LjM5IDAgMCAxIC4xMjcuMDc5Yy4wMzQuMDMyLjA2LjA3LjA3Ny4xMDhhLjMuMyAwIDAgMSAuMDI1LjEydi4wMTVhLjI5LjI5IDAgMCAxLS4wMi4xMTguMjYzLjI2MyAwIDAgMS0uMDY3LjA5OGwuMjI3LjI0NC0uMjI3LS4yNDRhLjMyMS4zMjEgMCAwIDEtLjExNi4wNjhsLS4wMS4wMDMtLjAxLjAwNWEuMzg2LjM4NiAwIDAgMS0uMjkzIDBsLS4wMS0uMDA1LS4wMS0uMDAzYS4zMjEuMzIxIDAgMCAxLS4xMTctLjA2OGwtLjIyNy4yNDQuMjI3LS4yNDRhLjI2My4yNjMgMCAwIDEtLjA2Ny0uMDk3bC0uMDA2LS4wMTUtLjAwNy0uMDE1YS4xOTMuMTkzIDAgMCAxLS4wMjItLjA5M1Y5LjY0YS41MS41MSAwIDAgMS0uMDAyLS4wNTcuMDc4LjA3OCAwIDAgMSAuMDA0LS4wMVpNMy41NzIgMS43NEE3LjI0NSA3LjI0NSAwIDAgMSA3LjM4NS42NjdjLjkwMiAwIDEuNzk1LjE2NSAyLjYyNy40ODUuODMzLjMyIDEuNTg4Ljc4OSAyLjIyMiAxLjM3OGE2LjMyMyA2LjMyMyAwIDAgMSAxLjQ4IDIuMDU1Yy4zNDEuNzY2LjUxNyAxLjU4Ny41MTcgMi40MTVhNiA2IDAgMCAxLTEuMTQ3IDMuNTEgNi43NiA2Ljc2IDAgMCAxLTMuMDcyIDIuMzM4IDcuMzYyIDcuMzYyIDAgMCAxLTMuOTY4LjM2MyA3LjAzMyA3LjAzMyAwIDAgMS0zLjUxLTEuNzQxQTYuMjAxIDYuMjAxIDAgMCAxIC42NyA4LjIzYTUuODkyIDUuODkyIDAgMCAxIC4zODctMy42NDVBNi40NjcgNi40NjcgMCAwIDEgMy41NzIgMS43NFptLjQ0NiA5Ljk3OGE2LjM5IDYuMzkgMCAwIDAgMy4zNjcuOTQ5YzEuNjA0IDAgMy4xNDYtLjU5MiA0LjI4OC0xLjY1MkMxMi44MTUgOS45NTUgMTMuNDYgOC41MTEgMTMuNDYgN2E1LjQgNS40IDAgMCAwLTEuMDMtMy4xNTggNi4wMDcgNi4wMDcgMCAwIDAtMi43MjktMi4wOCA2LjQ4OCA2LjQ4OCAwIDAgMC0zLjQ5OC0uMzIgNi4yMjYgNi4yMjYgMCAwIDAtMy4xMDggMS41NDIgNS41NiA1LjU2IDAgMCAwLTEuNjcgMi45MDYgNS4zMTQgNS4zMTQgMCAwIDAgLjM0OCAzLjI4NyA1Ljc3MyA1Ljc3MyAwIDAgMCAyLjI0NCAyLjU0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDIwIDIwXFxcIj48cGF0aCBmaWxsPVxcXCIjNjg3OTdFXFxcIiBzdHJva2U9XFxcIiM2ODc5N0VcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIgZD1cXFwibTEyLjMzIDE0LjYwMi0uNTkuMTMyYTguMDc1IDguMDc1IDAgMCAxLTEuNzQuMTgzbDIuMzMtLjMxNVptMCAwLS40MjctLjQyOW0uNDI3LjQzLS40MjctLjQzbTAgMC0xLjktMS45MDgtLjA4My0uMDg0bTEuOTgzIDEuOTkyTDkuOTIgMTIuMTgxbTAgMC0uMTE4LS4wMTJtLjExOC4wMTItLjExOC0uMDEybTAgMGEyLjIyIDIuMjIgMCAwIDEtMS45Ny0xLjk3MWwtLjAxMy0uMTE3bTEuOTgzIDIuMDg4TDcuODIgMTAuMDhtMCAwLS4wODMtLjA4M20uMDgzLjA4My0uMDgzLS4wODNtMCAwTDQuOTAzIDcuMTU2bC0uMjE5LS4yMTltMy4wNTIgMy4wNjEtMy4wNTItMy4wNm0wIDAtLjIzNC4ybS4yMzQtLjItLjIzNC4ybTAgMGE4LjU0NCA4LjU0NCAwIDAgMC0yLjA3NiAyLjY3LjQzMi40MzIgMCAwIDAgMCAuMzg1IDguNTE4IDguNTE4IDAgMCAwIDMuMTE5IDMuNDM0TTQuNDUgNy4xMzlsMS4wNDMgNi40ODhNMTguODA4IDEwQzE3LjM4NCA2LjUyOSAxMy45NzggNC4wODMgMTAgNC4wODNhOS41NDUgOS41NDUgMCAwIDAtMy4zMjIuNTk2bC43ODIuNzc3QTguOTczIDguOTczIDAgMCAxIDEwIDUuMDgzTDE4LjgwOCAxMFptMCAwYTkuNDkyIDkuNDkyIDAgMCAxLTIuOTQzIDMuODgzbC0uNzA0LS43MDlhOC41NTEgOC41NTEgMCAwIDAgMi40NjYtMi45ODEuNDMyLjQzMiAwIDAgMCAwLS4zODVBOC41MTcgOC41MTcgMCAwIDAgMTAgNS4wODNMMTguODA4IDEwWk01LjQ5MyAxMy42MjdBOC41MTggOC41MTggMCAwIDAgMTAgMTQuOTE3bC00LjUwNy0xLjI5Wm03Ljc4NCAxLjkwNC0uMTQ1LS4xNDUtLjE5NS4wNjRhOS4zMTIgOS4zMTIgMCAwIDEtMi45MzcuNDY3Yy0zLjk3OCAwLTcuMzg0LTIuNDQ2LTguODA3LTUuOTE3YTkuNDY0IDkuNDY0IDAgMCAxIDIuNTE5LTMuNTMzbC4yNjctLjIzNS0uMjUxLS4yNTEtMS4yOTItMS4yOTJhLjQxOC40MTggMCAxIDEgLjU5MS0uNTlsMTIuODc1IDEyLjg3NGEuNDE4LjQxOCAwIDAgMS0uNTkxLjU5MWwtMi4wMzQtMi4wMzNaTTEwIDcuODMzQTIuMTY3IDIuMTY3IDAgMCAxIDEyLjE2NyAxMGMwIC4wNTUtLjAwMi4xMS0uMDA2LjE2NEw5LjgzNiA3Ljg0Yy4wNTQtLjAwNC4xMDktLjAwNi4xNjQtLjAwNlpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgZD1cXFwiTTExLjMzMyAyLjJjLTIuNi0xLjQ2Ny01LjgtMS03LjkzMyAxVjJjMC0uNC0uMjY3LS42NjctLjY2Ny0uNjY3UzIuMDY3IDEuNiAyLjA2NyAydjNjMCAuNC4yNjYuNjY2LjY2Ni42NjZoM2MuNCAwIC42NjctLjI2Ni42NjctLjY2NnMtLjI2Ny0uNjY3LS42NjctLjY2N2gtMS42YzEtMS4wNjcgMi40LTEuNjY3IDMuODY3LTEuNjY3IDIuOTMzIDAgNS4zMzMgMi40IDUuMzMzIDUuMzM0IDAgMi45MzMtMi40IDUuMzMzLTUuMzMzIDUuMzMzLTIuOTMzIDAtNS4zMzMtMi40LTUuMzMzLTUuMzMzIDAtLjQtLjI2Ny0uNjY3LS42NjctLjY2N1MxLjMzMyA3LjYgMS4zMzMgOGMwIDMuNjY2IDMgNi42NjYgNi42NjcgNi42NjYgMi40IDAgNC42LTEuMjY2IDUuOC0zLjMzMyAxLjgtMy4yLjczMy03LjI2Ny0yLjQ2Ny05LjEzM1pNOCA1LjMzM2MtLjQgMC0uNjY3LjI2Ny0uNjY3LjY2N3YyYzAgLjQuMjY3LjY2Ni42NjcuNjY2aDEuMzMzYy40IDAgLjY2Ny0uMjY2LjY2Ny0uNjY2cy0uMjY3LS42NjctLjY2Ny0uNjY3aC0uNjY2VjZjMC0uNC0uMjY3LS42NjctLjY2Ny0uNjY3WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTkwIDE5MFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48Y2lyY2xlIGN4PVxcXCI5NVxcXCIgY3k9XFxcIjk1XFxcIiByPVxcXCI4NVxcXCIgZmlsbD1cXFwiI2ZmZlxcXCIvPjxjaXJjbGUgY3g9XFxcIjk1XFxcIiBjeT1cXFwiOTVcXFwiIHI9XFxcIjk1XFxcIiBmaWxsPVxcXCIjQ0RGOEZBXFxcIi8+PHBhdGggZD1cXFwiTTUxLjE3MiA3OS42MzZjMC0xLjg0OCAwLTIuNzcyLjI0Mi0zLjYyMmE2LjMzMSA2LjMzMSAwIDAgMSAuOTgxLTIuMDA3Yy41MjMtLjcxMyAxLjI1Mi0xLjI4IDIuNzEtMi40MTZsMzQuMTE2LTI2LjUzN2MuOTI4LS43MjMgMS4zOTItMS4wODQgMS45LTEuMzQ5YTYuMzI5IDYuMzI5IDAgMCAxIDIuMDQ3LS42NTVjLjU2Ny0uMDggMS4xNTUtLjA1NiAyLjMzLS4wMDggMS4wMjcuMDQyIDEuNTQuMDYzIDIuMDMzLjE2My42MjIuMTI2IDEuMjIuMzQ0IDEuNzc3LjY0OC40NDIuMjQxLjg0OC41NTUgMS42NjEgMS4xODRsMzQuNjg4IDI2LjgyNGMxLjQ2NyAxLjEzNCAyLjIgMS43MDIgMi43MjYgMi40MTYuNDQ2LjYwNi43OCAxLjI4OC45ODcgMi4wMTIuMjQ0Ljg1Mi4yNDQgMS43OC4yNDQgMy42MzR2NTIuMTAxYzAgMS44MDIgMCAyLjcwNC0uMzU2IDMuMzlhMy4xNjcgMy4xNjcgMCAwIDEtMS4zNSAxLjM0OWMtLjY4Ni4zNTctMS41ODcuMzU3LTMuMzkuMzU3SDYwLjM0NWMtMy4yNDUgMC00Ljg2NyAwLTYuMTAyLS42NDJhNS42OTcgNS42OTcgMCAwIDEtMi40My0yLjQyOWMtLjY0MS0xLjIzNS0uNjQxLTIuODU3LS42NDEtNi4xMDJWNzkuNjM2WlxcXCIgZmlsbD1cXFwidXJsKCNpYy12ZXJpZmljYXRpb25fc3ZnX19hKVxcXCIvPjxwYXRoIGQ9XFxcIk01OS43NzUgNzEuOTI0YzEuMjg2IDAgMS44OS4wMDIgMi40Ni4xMTQuNzQuMTQ2IDEuNDQ2LjQyOSAyLjA4MS44MzQuNDkuMzEzLjkyOC43MyAxLjg1OCAxLjYxOGwyNi43NiAyNS41NjJhNS4zNiA1LjM2IDAgMCAxIC4wMTIgNy43MzhsLTI2LjEzNCAyNS4xMTNjLTEuODMyIDEuNzYtMi42OTMgMi41ODEtMy43NjYgMy4wMTMtMS4wNzIuNDMxLTIuMjYyLjQzNi00LjgwMi40MzZoLS43NDJjLTEuNSAwLTIuNTk2IDAtMy40MzQtLjExMy0uODI5LS4xMTEtMS4zNjEtLjMyOC0xLjc2LS43MjctLjQtLjQtLjYxNi0uOTMyLS43MjgtMS43NjEtLjExMi0uODM4LS4xMTMtMS45MzMtLjExMy0zLjQzNFY4MC4yMzJjMC0xLjM1OCAwLTIuMzYyLjA1Ni0zLjE2LjA1NS0uNzk0LjE2NC0xLjM2My4zNzItMS44NTNhNS40MDIgNS40MDIgMCAwIDEgMi44NjctMi44NjdjLjQ5LS4yMDggMS4wNTgtLjMxNyAxLjg1My0uMzcyLjc5OC0uMDU2IDEuODAyLS4wNTYgMy4xNi0uMDU2WlxcXCIgZmlsbD1cXFwiI0I5RERGRlxcXCIgZmlsbC1vcGFjaXR5PVxcXCIuNlxcXCIgc3Ryb2tlPVxcXCJ1cmwoI2ljLXZlcmlmaWNhdGlvbl9zdmdfX2IpXFxcIiBzdHJva2Utd2lkdGg9XFxcIi41OTFcXFwiLz48cGF0aCBkPVxcXCJNMTMxLjc4IDcxLjkyNGMtMS4yODYgMC0xLjg5LjAwMi0yLjQ2MS4xMTRhNi4wNDEgNi4wNDEgMCAwIDAtMi4wODEuODM0Yy0uNDkuMzEzLS45MjcuNzMtMS44NTcgMS42MThsLTI2Ljc2IDI1LjU2MmE1LjM2IDUuMzYgMCAwIDAtLjAxMiA3LjczOGwyNi4xMzQgMjUuMTEzYzEuODMyIDEuNzYgMi42OTMgMi41ODEgMy43NjUgMy4wMTMgMS4wNzMuNDMxIDIuMjYzLjQzNiA0LjgwMy40MzZoLjc0MmMxLjUgMCAyLjU5NiAwIDMuNDMzLS4xMTMuODMtLjExMSAxLjM2Mi0uMzI4IDEuNzYxLS43MjcuNC0uNC42MTYtLjkzMi43MjctMS43NjEuMTEzLS44MzguMTE0LTEuOTMzLjExNC0zLjQzNFY4MC4yMzJjMC0xLjM1OCAwLTIuMzYyLS4wNTYtMy4xNi0uMDU1LS43OTQtLjE2NS0xLjM2My0uMzcyLTEuODUzYTUuNDAyIDUuNDAyIDAgMCAwLTIuODY4LTIuODY3Yy0uNDg5LS4yMDgtMS4wNTgtLjMxNy0xLjg1My0uMzcyLS43OTctLjA1Ni0xLjgwMS0uMDU2LTMuMTU5LS4wNTZaXFxcIiBmaWxsPVxcXCIjQjlEREZGXFxcIiBmaWxsLW9wYWNpdHk9XFxcIi42XFxcIiBzdHJva2U9XFxcInVybCgjaWMtdmVyaWZpY2F0aW9uX3N2Z19fYylcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjU5MVxcXCIvPjxwYXRoIGQ9XFxcIk01MC43MSAxMjkuNDY1YzAtMS4zMS4wMDItMS45MjUuMTE1LTIuNDk3YTYuMDM2IDYuMDM2IDAgMCAxIDEuMzgyLTIuODA4Yy4zODQtLjQzOS44Ny0uODE1IDEuOTA5LTEuNjE1bDM1LjI3My0yNy4xNjhjLjk1Ni0uNzM2IDEuNDA0LTEuMDggMS44OTMtMS4zM2E2LjAzNCA2LjAzNCAwIDAgMSAxLjg5Mi0uNjAyYy41NDMtLjA3NyAxLjEwOS0uMDU1IDIuMzE0LS4wMDYgMS4wNS4wNDMgMS41NDQuMDY0IDIuMDE2LjE2YTYuMDM0IDYuMDM0IDAgMCAxIDEuNjQuNTk1Yy40MjUuMjI3LjgxNy41MjcgMS42NTMgMS4xNjZsMzQuNTUzIDI2LjQ1MWMyLjM0OSAxLjc5OCAzLjQ0NSAyLjY0NSA0LjA1OCAzLjgyNC4wMzguMDczLjA3NS4xNDcuMTEuMjIyLjU2MyAxLjIwMy41NyAyLjU4OS41NyA1LjU0NyAwIDEuNDMxLS4wMDEgMi40NzYtLjEwNCAzLjI3OC0uMTAyLjc5NS0uMyAxLjMwOS0uNjY2IDEuNzAyYTIuNzM1IDIuNzM1IDAgMCAxLS4xNDMuMTQyYy0uMzkzLjM2Ni0uOTA3LjU2NS0xLjcwMi42NjctLjgwMi4xMDMtMS44NDcuMTA0LTMuMjc4LjEwNEg1OC41NDJjLTIuMjg2IDAtMy4zNTQtLjAwNC00LjIwNS0uM2E1LjQwMyA1LjQwMyAwIDAgMS0zLjMyNi0zLjMyN2MtLjI5Ni0uODUtLjMtMS45MTgtLjMtNC4yMDVaXFxcIiBmaWxsPVxcXCIjQjlEREZGXFxcIiBzdHJva2U9XFxcInVybCgjaWMtdmVyaWZpY2F0aW9uX3N2Z19fZClcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjU5MVxcXCIvPjxwYXRoIGQ9XFxcIk01MC43MSAxMjkuNDY1YzAtMS4zMS4wMDItMS45MjUuMTE1LTIuNDk3YTYuMDM2IDYuMDM2IDAgMCAxIDEuMzgyLTIuODA4Yy4zODQtLjQzOS44Ny0uODE1IDEuOTA5LTEuNjE1bDM1LjI3My0yNy4xNjhjLjk1Ni0uNzM2IDEuNDA0LTEuMDggMS44OTMtMS4zM2E2LjAzNCA2LjAzNCAwIDAgMSAxLjg5Mi0uNjAyYy41NDMtLjA3NyAxLjEwOS0uMDU1IDIuMzE0LS4wMDYgMS4wNS4wNDMgMS41NDQuMDY0IDIuMDE2LjE2YTYuMDM0IDYuMDM0IDAgMCAxIDEuNjQuNTk1Yy40MjUuMjI3LjgxNy41MjcgMS42NTMgMS4xNjZsMzQuNTUzIDI2LjQ1MWMyLjM0OSAxLjc5OCAzLjQ0NSAyLjY0NSA0LjA1OCAzLjgyNGwuMjYyLS4xMzctLjI2Mi4xMzdjLjAzOC4wNzMuMDc1LjE0Ny4xMS4yMjJsLjI2Ny0uMTI1LS4yNjcuMTI1Yy41NjMgMS4yMDMuNTcgMi41ODkuNTcgNS41NDcgMCAxLjQzMS0uMDAxIDIuNDc2LS4xMDQgMy4yNzgtLjEwMi43OTUtLjMgMS4zMDktLjY2NiAxLjcwMmEzLjIxNCAzLjIxNCAwIDAgMS0uMTQzLjE0M2MtLjM5My4zNjUtLjkwNy41NjQtMS43MDIuNjY2LS44MDIuMTAzLTEuODQ3LjEwNC0zLjI3OC4xMDRINTguNTQyYy0yLjI4NiAwLTMuMzU0LS4wMDQtNC4yMDUtLjNhNS40MDMgNS40MDMgMCAwIDEtMy4zMjYtMy4zMjdjLS4yOTYtLjg1LS4zLTEuOTE4LS4zLTQuMjA1WlxcXCIgZmlsbD1cXFwidXJsKCNpYy12ZXJpZmljYXRpb25fc3ZnX19lKVxcXCIgc3Ryb2tlPVxcXCJ1cmwoI2ljLXZlcmlmaWNhdGlvbl9zdmdfX2YpXFxcIiBzdHJva2Utd2lkdGg9XFxcIi41OTFcXFwiLz48Y2lyY2xlIGN4PVxcXCIxMzMuNzMzXFxcIiBjeT1cXFwiMTMyLjIxM1xcXCIgcj1cXFwiMjEuMjEzXFxcIiBmaWxsPVxcXCIjRjFGN0Y5XFxcIi8+PG1hc2sgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2lcXFwiIGZpbGw9XFxcIiNmZmZcXFwiPjxwYXRoIGZpbGwtcnVsZT1cXFwiZXZlbm9kZFxcXCIgY2xpcC1ydWxlPVxcXCJldmVub2RkXFxcIiBkPVxcXCJNMTQ2LjU0MSAxMjcuMzY0YTMuMDAxIDMuMDAxIDAgMCAwLTQuMjQzLTQuMjQzbC0xMi4xMzEgMTIuMTMxLTQuMjgzLTQuMjgzYTMgMyAwIDEgMC00LjI0MyA0LjI0M2w2LjM2NCA2LjM2NGEzLjAwMSAzLjAwMSAwIDAgMCAzLjQ2LjU2NGMuMzM5LS4xNDYuNjU3LS4zNTcuOTM0LS42MzRsMTQuMTQyLTE0LjE0MlpcXFwiLz48L21hc2s+PHBhdGggZmlsbC1ydWxlPVxcXCJldmVub2RkXFxcIiBjbGlwLXJ1bGU9XFxcImV2ZW5vZGRcXFwiIGQ9XFxcIk0xNDYuNTQxIDEyNy4zNjRhMy4wMDEgMy4wMDEgMCAwIDAtNC4yNDMtNC4yNDNsLTEyLjEzMSAxMi4xMzEtNC4yODMtNC4yODNhMyAzIDAgMSAwLTQuMjQzIDQuMjQzbDYuMzY0IDYuMzY0YTMuMDAxIDMuMDAxIDAgMCAwIDMuNDYuNTY0Yy4zMzktLjE0Ni42NTctLjM1Ny45MzQtLjYzNGwxNC4xNDItMTQuMTQyWlxcXCIgZmlsbD1cXFwidXJsKCNpYy12ZXJpZmljYXRpb25fc3ZnX19nKVxcXCIgZmlsbC1vcGFjaXR5PVxcXCIuOVxcXCIvPjxwYXRoIGQ9XFxcIm0xNDYuNTQxIDEyMy4xMjEtLjE3My4xNzMuMTczLS4xNzNabTAgNC4yNDMtLjE3My0uMTc0LjE3My4xNzRabS00LjI0My00LjI0My0uMTczLS4xNzMuMTczLjE3M1ptLTEyLjEzMSAxMi4xMzEtLjE3My4xNzMuMTczLjE3NC4xNzMtLjE3NC0uMTczLS4xNzNabS00LjI4My00LjI4My4xNzMtLjE3My0uMTczLjE3M1ptLTQuMjQzIDQuMjQzLjE3NC0uMTc0LS4xNzQuMTc0Wm02LjM2NCA2LjM2NC0uMTczLjE3My4xNzMtLjE3M1ptMy40Ni41NjQtLjA5Ny0uMjI1LS4wMTIuMDA2LjEwOS4yMTlabS45MzQtLjYzNC0uMTc0LS4xNzQuMTc0LjE3NFptMTMuOTY5LTE4LjIxMmEyLjc1NiAyLjc1NiAwIDAgMSAwIDMuODk2bC4zNDYuMzQ3YTMuMjQ1IDMuMjQ1IDAgMCAwIDAtNC41ODlsLS4zNDYuMzQ2Wm0tMy44OTcgMGEyLjc1NiAyLjc1NiAwIDAgMSAzLjg5NyAwbC4zNDYtLjM0NmEzLjI0MyAzLjI0MyAwIDAgMC00LjU4OSAwbC4zNDYuMzQ2Wm0tMTIuMTMxIDEyLjEzMSAxMi4xMzEtMTIuMTMxLS4zNDYtLjM0Ni0xMi4xMzEgMTIuMTMxLjM0Ni4zNDZabS00LjYyOS00LjI4MyA0LjI4MyA0LjI4My4zNDYtLjM0Ni00LjI4My00LjI4My0uMzQ2LjM0NlptLTMuODk2IDBhMi43NTUgMi43NTUgMCAwIDEgMy44OTYgMGwuMzQ2LS4zNDZhMy4yNDMgMy4yNDMgMCAwIDAtNC41ODkgMGwuMzQ3LjM0NlptMCAzLjg5NmEyLjc1NSAyLjc1NSAwIDAgMSAwLTMuODk2bC0uMzQ3LS4zNDZhMy4yNDUgMy4yNDUgMCAwIDAgMCA0LjU4OWwuMzQ3LS4zNDdabTYuMzY0IDYuMzY0LTYuMzY0LTYuMzY0LS4zNDcuMzQ3IDYuMzY0IDYuMzY0LjM0Ny0uMzQ3Wm0zLjE3Ny41MTlhMi43NTUgMi43NTUgMCAwIDEtMy4xNzctLjUxOWwtLjM0Ny4zNDdhMy4yNDQgMy4yNDQgMCAwIDAgMy43NDIuNjFsLS4yMTgtLjQzOFptLjg2OS0uNTg5YTIuNzM1IDIuNzM1IDAgMCAxLS44NTcuNTgzbC4xOTQuNDVhMy4yMzcgMy4yMzcgMCAwIDAgMS4wMS0uNjg2bC0uMzQ3LS4zNDdabTE0LjE0My0xNC4xNDItMTQuMTQzIDE0LjE0Mi4zNDcuMzQ3IDE0LjE0Mi0xNC4xNDItLjM0Ni0uMzQ3WlxcXCIgZmlsbD1cXFwidXJsKCNpYy12ZXJpZmljYXRpb25fc3ZnX19oKVxcXCIgbWFzaz1cXFwidXJsKCNpYy12ZXJpZmljYXRpb25fc3ZnX19pKVxcXCIvPjxtYXNrIGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19sXFxcIiBmaWxsPVxcXCIjZmZmXFxcIj48cGF0aCBmaWxsLXJ1bGU9XFxcImV2ZW5vZGRcXFwiIGNsaXAtcnVsZT1cXFwiZXZlbm9kZFxcXCIgZD1cXFwiTTE0Ni41NDEgMTI3LjM2NGEzLjAwMSAzLjAwMSAwIDAgMC00LjI0My00LjI0M2wtMTIuMTMxIDEyLjEzMS00LjI4My00LjI4M2EzIDMgMCAxIDAtNC4yNDMgNC4yNDNsNi4zNjQgNi4zNjRhMy4wMDEgMy4wMDEgMCAwIDAgMy40Ni41NjRjLjMzOS0uMTQ2LjY1Ny0uMzU3LjkzNC0uNjM0bDE0LjE0Mi0xNC4xNDJaXFxcIi8+PC9tYXNrPjxwYXRoIGZpbGwtcnVsZT1cXFwiZXZlbm9kZFxcXCIgY2xpcC1ydWxlPVxcXCJldmVub2RkXFxcIiBkPVxcXCJNMTQ2LjU0MSAxMjcuMzY0YTMuMDAxIDMuMDAxIDAgMCAwLTQuMjQzLTQuMjQzbC0xMi4xMzEgMTIuMTMxLTQuMjgzLTQuMjgzYTMgMyAwIDEgMC00LjI0MyA0LjI0M2w2LjM2NCA2LjM2NGEzLjAwMSAzLjAwMSAwIDAgMCAzLjQ2LjU2NGMuMzM5LS4xNDYuNjU3LS4zNTcuOTM0LS42MzRsMTQuMTQyLTE0LjE0MlpcXFwiIGZpbGw9XFxcInVybCgjaWMtdmVyaWZpY2F0aW9uX3N2Z19failcXFwiIGZpbGwtb3BhY2l0eT1cXFwiLjc1XFxcIi8+PHBhdGggZD1cXFwibTE0Ni41NDEgMTIzLjEyMS0uMTczLjE3My4xNzMtLjE3M1ptMCA0LjI0My0uMTczLS4xNzQuMTczLjE3NFptLTQuMjQzLTQuMjQzLS4xNzMtLjE3My4xNzMuMTczWm0tMTIuMTMxIDEyLjEzMS0uMTczLjE3My4xNzMuMTc0LjE3My0uMTc0LS4xNzMtLjE3M1ptLTQuMjgzLTQuMjgzLjE3My0uMTczLS4xNzMuMTczWm0tNC4yNDMgNC4yNDMuMTc0LS4xNzQtLjE3NC4xNzRabTYuMzY0IDYuMzY0LS4xNzMuMTczLjE3My0uMTczWm0zLjQ2LjU2NC0uMDk3LS4yMjUtLjAxMi4wMDYuMTA5LjIxOVptLjkzNC0uNjM0LS4xNzQtLjE3NC4xNzQuMTc0Wm0xMy45NjktMTguMjEyYTIuNzU2IDIuNzU2IDAgMCAxIDAgMy44OTZsLjM0Ni4zNDdhMy4yNDUgMy4yNDUgMCAwIDAgMC00LjU4OWwtLjM0Ni4zNDZabS0zLjg5NyAwYTIuNzU2IDIuNzU2IDAgMCAxIDMuODk3IDBsLjM0Ni0uMzQ2YTMuMjQzIDMuMjQzIDAgMCAwLTQuNTg5IDBsLjM0Ni4zNDZabS0xMi4xMzEgMTIuMTMxIDEyLjEzMS0xMi4xMzEtLjM0Ni0uMzQ2LTEyLjEzMSAxMi4xMzEuMzQ2LjM0NlptLTQuNjI5LTQuMjgzIDQuMjgzIDQuMjgzLjM0Ni0uMzQ2LTQuMjgzLTQuMjgzLS4zNDYuMzQ2Wm0tMy44OTYgMGEyLjc1NSAyLjc1NSAwIDAgMSAzLjg5NiAwbC4zNDYtLjM0NmEzLjI0MyAzLjI0MyAwIDAgMC00LjU4OSAwbC4zNDcuMzQ2Wm0wIDMuODk2YTIuNzU1IDIuNzU1IDAgMCAxIDAtMy44OTZsLS4zNDctLjM0NmEzLjI0NSAzLjI0NSAwIDAgMCAwIDQuNTg5bC4zNDctLjM0N1ptNi4zNjQgNi4zNjQtNi4zNjQtNi4zNjQtLjM0Ny4zNDcgNi4zNjQgNi4zNjQuMzQ3LS4zNDdabTMuMTc3LjUxOWEyLjc1NSAyLjc1NSAwIDAgMS0zLjE3Ny0uNTE5bC0uMzQ3LjM0N2EzLjI0NCAzLjI0NCAwIDAgMCAzLjc0Mi42MWwtLjIxOC0uNDM4Wm0uODY5LS41ODlhMi43MzUgMi43MzUgMCAwIDEtLjg1Ny41ODNsLjE5NC40NWEzLjIzNyAzLjIzNyAwIDAgMCAxLjAxLS42ODZsLS4zNDctLjM0N1ptMTQuMTQzLTE0LjE0Mi0xNC4xNDMgMTQuMTQyLjM0Ny4zNDcgMTQuMTQyLTE0LjE0Mi0uMzQ2LS4zNDdaXFxcIiBmaWxsPVxcXCJ1cmwoI2ljLXZlcmlmaWNhdGlvbl9zdmdfX2spXFxcIiBmaWxsLW9wYWNpdHk9XFxcIi4xXFxcIiBtYXNrPVxcXCJ1cmwoI2ljLXZlcmlmaWNhdGlvbl9zdmdfX2wpXFxcIi8+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19hXFxcIiB4MT1cXFwiNzYuNjg0XFxcIiB5MT1cXFwiODYuNTY4XFxcIiB4Mj1cXFwiMTQzLjQxN1xcXCIgeTI9XFxcIjExMS4yODNcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjN0ZDMEZCXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIxXFxcIiBzdG9wLWNvbG9yPVxcXCIjNDA4OEY0XFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2JcXFwiIHgxPVxcXCI5MS44ODlcXFwiIHkxPVxcXCI2OC4zNzhcXFwiIHgyPVxcXCIzNC4wMDhcXFwiIHkyPVxcXCI5My45MzdcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIuNzY2XFxcIiBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIiBzdG9wLW9wYWNpdHk9XFxcIjBcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiaWMtdmVyaWZpY2F0aW9uX3N2Z19fY1xcXCIgeDE9XFxcIjk5LjY2NVxcXCIgeTE9XFxcIjY4LjM3OFxcXCIgeDI9XFxcIjE1Ny41NDdcXFwiIHkyPVxcXCI5My45MzdcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIuNzY2XFxcIiBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIiBzdG9wLW9wYWNpdHk9XFxcIjBcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiaWMtdmVyaWZpY2F0aW9uX3N2Z19fZFxcXCIgeDE9XFxcIjQ1LjkxN1xcXCIgeTE9XFxcIjk2LjE4NVxcXCIgeDI9XFxcIjY2LjU2OVxcXCIgeTI9XFxcIjE1OS44MjJcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIuNzY2XFxcIiBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIiBzdG9wLW9wYWNpdHk9XFxcIjBcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiaWMtdmVyaWZpY2F0aW9uX3N2Z19fZVxcXCIgeDE9XFxcIjk1LjRcXFwiIHkxPVxcXCI5M1xcXCIgeDI9XFxcIjk1LjRcXFwiIHkyPVxcXCIxMzcuNTkyXFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiI0E3RDJGRFxcXCIgc3RvcC1vcGFjaXR5PVxcXCIuMjVcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiM5N0M4RkNcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiaWMtdmVyaWZpY2F0aW9uX3N2Z19fZlxcXCIgeDE9XFxcIjQ1LjkxN1xcXCIgeTE9XFxcIjk2LjE4NVxcXCIgeDI9XFxcIjY2LjU2OVxcXCIgeTI9XFxcIjE1OS44MjJcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIuNzY2XFxcIiBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIiBzdG9wLW9wYWNpdHk9XFxcIjBcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiaWMtdmVyaWZpY2F0aW9uX3N2Z19fZ1xcXCIgeDE9XFxcIjE1MC4zNDNcXFwiIHkxPVxcXCIxMjQuMTI4XFxcIiB4Mj1cXFwiMTE3LjMyMlxcXCIgeTI9XFxcIjEzNy4zOTVcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjMTc5OTdCXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIxXFxcIiBzdG9wLWNvbG9yPVxcXCIjMTc5OTdCXFxcIiBzdG9wLW9wYWNpdHk9XFxcIjBcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiaWMtdmVyaWZpY2F0aW9uX3N2Z19faFxcXCIgeDE9XFxcIjE1MC44NzFcXFwiIHkxPVxcXCIxMjEuMjI1XFxcIiB4Mj1cXFwiMTM0LjAzNVxcXCIgeTI9XFxcIjEyNS44OVxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiMxNzk5N0JcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiMxNzk5N0JcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19qXFxcIiB4MT1cXFwiMTUwLjM0M1xcXCIgeTE9XFxcIjEyNC4xMjhcXFwiIHgyPVxcXCIxMTcuMzIyXFxcIiB5Mj1cXFwiMTM3LjM5NVxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiMxNzk5N0JcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiIzE3OTk3QlxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19rXFxcIiB4MT1cXFwiMTUwLjg3MVxcXCIgeTE9XFxcIjEyMS4yMjVcXFwiIHgyPVxcXCIxMzQuMDM1XFxcIiB5Mj1cXFwiMTI1Ljg5XFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiIzE3OTk3QlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIxXFxcIiBzdG9wLWNvbG9yPVxcXCIjMTc5OTdCXFxcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE5XFxcIj48cGF0aCBmaWxsPVxcXCIjZmZmXFxcIiBzdHJva2U9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIgZD1cXFwiTTExIDUuNjY3VjZoMi4zMzNhLjMzMy4zMzMgMCAwIDEgLjMzNC4zMzN2OS4zMzRBMS42NjcgMS42NjcgMCAwIDEgMTIgMTcuMzMzSDRhMS42NjcgMS42NjcgMCAwIDEtMS42NjctMS42NjZWNi4zMzNBLjMzMy4zMzMgMCAwIDEgMi42NjcgNkg1VjVhLjMzMy4zMzMgMCAxIDEgLjY2NyAwdjFoMlY1YS4zMzMuMzMzIDAgMSAxIC42NjYgMHYxaDJWNWMwLS4wODguMDM1LS4xNzMuMDk4LS4yMzZsLS4yMzYtLjIzNS4yMzYuMjM1QS4zMzMuMzMzIDAgMCAxIDExIDV2LjY2N1pNMy4yOTMgMTYuMzc0bC4yMzYtLjIzNi0uMjM2LjIzNmExIDEgMCAwIDAgLjcwNy4yOTNoOGExIDEgMCAwIDAgMS0xdi05aC0ydjFhLjMzMy4zMzMgMCAxIDEtLjY2NyAwdi0xaC0ydjFhLjMzMy4zMzMgMCAwIDEtLjY2NiAwdi0xaC0ydjFhLjMzMy4zMzMgMCAwIDEtLjY2NyAwdi0xSDN2OWExIDEgMCAwIDAgLjI5My43MDdabTIuMDQtMy43MDdoNS4zMzRhLjMzMy4zMzMgMCAxIDEgMCAuNjY2SDUuMzMzYS4zMzMuMzMzIDAgMCAxLS4yMzUtLjA5N2wtLjIzNi4yMzUuMjM2LS4yMzVhLjMzMy4zMzMgMCAwIDEgMC0uNDcybC0uMjM2LS4yMzYuMjM2LjIzNmEuMzMzLjMzMyAwIDAgMSAuMjM1LS4wOTdabTEuMDk4LTIuNTdBLjMzMy4zMzMgMCAwIDEgNi42NjcgMTBoNGEuMzMzLjMzMyAwIDEgMSAwIC42NjdoLTRhLjMzMy4zMzMgMCAwIDEtLjIzNi0uNTdaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDIwIDIwXFxcIj48cGF0aCBmaWxsPVxcXCIjMTU1MzY2XFxcIiBkPVxcXCJtMTcuNSAzLjY2Ny41ODMtLjU4NGEuODA2LjgwNiAwIDAgMCAwLTEuMTY2LjgwNi44MDYgMCAwIDAtMS4xNjYgMGwtOC43NSA4Ljc1QTQuNDggNC40OCAwIDAgMCA1LjgzMiAxMGE0LjEyNiA0LjEyNiAwIDAgMC00LjE2NyA0LjE2NyA0LjEyNiA0LjEyNiAwIDAgMCA0LjE2NyA0LjE2NkE0LjEyNiA0LjEyNiAwIDAgMCAxMCAxNC4xNjdhNC40OCA0LjQ4IDAgMCAwLS42NjctMi4zMzRMMTQgNy4xNjdsMS43NSAxLjc1YS44MDYuODA2IDAgMCAwIDEuMTY2IDAgLjgwNi44MDYgMCAwIDAgMC0xLjE2N0wxNS4xNjYgNmwxLjE2Ny0xLjE2Ny41ODQuNTg0YS44MDYuODA2IDAgMCAwIDEuMTY2IDAgLjgwNi44MDYgMCAwIDAgMC0xLjE2N2wtLjU4My0uNTgzWm0tMTEuNjY3IDEzYy0xLjQxNyAwLTIuNS0xLjA4NC0yLjUtMi41IDAtMS40MTcgMS4wODMtMi41IDIuNS0yLjVzMi41IDEuMDgzIDIuNSAyLjVjMCAxLjQxNi0xLjA4MyAyLjUtMi41IDIuNVpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMThcXFwiPjxwYXRoIGQ9XFxcIk00LjMxMSA3LjQzIDMuNzQgOGgxMC45MjZhMSAxIDAgMSAxIDAgMkgzLjc0bC41NzEuNTcgNC40IDQuMzg2YTEgMSAwIDAgMSAwIDEuNDJsLS4wMDEuMDAzYTEgMSAwIDAgMS0xLjQyIDBsLS4wMDEtLjAwMUwuNjI1IDkuNzE0YTEgMSAwIDAgMS0uMjA4LS4zMjhMLjQxNSA5LjM4YTEgMSAwIDAgMSAwLS43NmwuMDAyLS4wMDZhMSAxIDAgMCAxIC4yMDgtLjMyOGw2LjY2NC02LjY2NC0uMjM2LS4yMzUuMjM2LjIzNUExLjAwNSAxLjAwNSAwIDEgMSA4LjcxIDMuMDQ0bC00LjQgNC4zODdaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIiBzdHJva2U9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNjYgNjNcXFwiPjxwYXRoIGQ9XFxcIk0uODMgNTguOTFWMjguN2g4LjcyNXYzMC4yMUguODNabTM1LjAxNy0yLjkzYy0xLjk4MyAyLjQxNi00LjgzNSAzLjc3Ny04LjYxNSAzLjc3Ny02LjA3NiAwLTEwLjk3MS0zLjc3OC0xMC45NzEtOS42MDMgMC01Ljc2MyA0Ljg5OC04LjYxIDExLjc3Ny04Ljk4NSA1LjI3LS4zMSA2Ljk0My0uODY4IDYuOTQzLTIuNjYzIDAtMS43MzYtMS42MTEtMi45MTMtNC40NjMtMi45MTMtMy40NyAwLTQuOTYgMS43MzYtNS4xNDUgMy41OTRoLTguNDk0Yy40MzQtNi42MjggNS4zOTItMTEuMjE0IDEzLjcwMS0xMS4yMTQgOC4xMjIgMCAxMy4zMyA0LjM5OCAxMy4zMyAxMi42Mzd2MTguNDYzaC03LjI1NGwtLjgwOS0zLjA5NFptLTEwLjc4Ni02LjE5NWMwIDEuNzM2IDEuNTUgMi43ODggNC4wMyAyLjc4OCAzLjM0OCAwIDYuMDEyLTEuODU4IDYuMDEyLTUuNjM4VjQ1Ljgycy0xLjYxMS43NDMtNC45Ni45M2MtMy42NTguMTg1LTUuMDgyIDEuMzYyLTUuMDgyIDMuMDM1Wm0zOC4zMDcgOS40MTZjLTYuNjMyIDAtMTAuNDc3LTMuODQtMTAuNDc3LTEwLjUzM1YzNi44MzZoLTUuMDgzdi04LjExN2g1LjA4M3YtNC40NjFsOC44MDItNy40MzRWMjguNzJoNy42MjZ2OC4xMTdoLTcuNjI2VjQ3LjQzYzAgMi45MTIgMS45MjIgMy41OTMgMy43MiAzLjU5M2E5LjUzOSA5LjUzOSAwIDAgMCAzLjcyMS0uODA1djcuOTkyYzAgLjAwMi0yLjM1NS45OTItNS43NjYuOTkyWk0uMDggMTkuNjM0YzAtMi44NSAyLjIzLTUuMTQyIDUuMDgyLTUuMTQyYTUuMTMgNS4xMyAwIDAgMSA1LjE0NSA1LjE0MmMwIDIuNzg4LTIuMjkzIDUuMDgtNS4xNDUgNS4wOGE1LjA2MyA1LjA2MyAwIDAgMS01LjA4Mi01LjA4Wk03NS44MDkgNTguOTFWMjguN2g4LjcyNnYzMC4yMWgtOC43MjZabTIwLjE1NC0zOS4yMDJjMC0xLjQtLjE5LTIuNzYtLjUzNy00LjA1M2ExNS41MSAxNS41MSAwIDAgMC0xLjU2OS0zLjc3MiAxNS42NjUgMTUuNjY1IDAgMCAwLTIuNDg5LTMuMjQxIDE1LjczMiAxNS43MzIgMCAwIDAtNy4wMTgtNC4wNSAxNS42NTggMTUuNjU4IDAgMCAwLTQuMDUyLS41MzNoLS4wMDZhMTUuNzUgMTUuNzUgMCAwIDAtNC4wNDkuNTNjLTEuMzQuMzU3LTIuNjA1Ljg4OC0zLjc3NyAxLjU2NUExNS42NyAxNS42NyAwIDAgMCA2OS4yMiA4LjY0YTE1Ljc3IDE1Ljc3IDAgMCAwLTIuNDkyIDMuMjQyIDE1LjY0OCAxNS42NDggMCAwIDAtMS41NzIgMy43NzRsMi4yNDIuNjAyYTEzLjQyNyAxMy40MjcgMCAwIDEgMy40NjItNS45NzggMTMuNDI2IDEzLjQyNiAwIDAgMSA1Ljk4NC0zLjQ1IDEzLjQyNiAxMy40MjYgMCAwIDEgMy40NDgtLjQ1aC4wMDZjMS4xOTUgMCAyLjM1LjE1OCAzLjQ1NC40NTNhMTMuNDEyIDEzLjQxMiAwIDAgMSA1Ljk4IDMuNDQ5Yy44MTkuODIgMS41MzEgMS43NSAyLjExOSAyLjc2YTEzLjMgMTMuMyAwIDAgMSAxLjc5MyA2LjY2NHYuMDEyYTEzLjM4IDEzLjM4IDAgMCAxLS40NTEgMy40NDMgMTMuMjE3IDEzLjIxNyAwIDAgMS0xLjMzNCAzLjIxOWwyLjAxIDEuMTZhMTUuNTM5IDE1LjUzOSAwIDAgMCAxLjU2Ni0zLjc3OCAxNS43IDE1LjcgMCAwIDAgLjUzLTQuMDQxbC0uMDAyLS4wMTJaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PHBhdGggZD1cXFwiTTEwMC4wMjMgMTkuNzA4YTE5LjY1NSAxOS42NTUgMCAwIDAtMi42NDQtOS44NTUgMTkuODEgMTkuODEgMCAwIDAtNy4yMi03LjIxM0ExOS42MTIgMTkuNjEyIDAgMCAwIDg1LjQwMy42NyAxOS44MSAxOS44MSAwIDAgMCA4MC4yOTggMGgtLjAwNmMtMS43NjUgMC0zLjQ3My4yMzMtNS4xMDIuNjY2YTE5LjUxMyAxOS41MTMgMCAwIDAtNC43NTkgMS45NjkgMTkuODI0IDE5LjgyNCAwIDAgMC00LjA4NiAzLjEzNGwxLjIzMSAxLjIzYTE4LjEwNiAxOC4xMDYgMCAwIDEgMy43MjYtMi44NTUgMTcuODAzIDE3LjgwMyAwIDAgMSA0LjM0LTEuNzkzIDE4LjA4NCAxOC4wODQgMCAwIDEgNC42NDgtLjYwN2guMDA1YTE3Ljk1IDE3Ljk1IDAgMCAxIDEyLjcxMyA1LjI2MSAxNy45MzMgMTcuOTMzIDAgMCAxIDUuMjczIDEyLjcwM3YuMDExYTE4LjAzIDE4LjAzIDAgMCAxLS42MDcgNC42NDMgMTcuNjc1IDE3LjY3NSAwIDAgMS0xLjc5NyA0LjMzNyAxOC4wMjMgMTguMDIzIDAgMCAxLTIuODU3IDMuNzIzbDEuMjMxIDEuMjMxYTE5Ljc0MyAxOS43NDMgMCAwIDAgMy4xMzYtNC4wODQgMTkuNiAxOS42IDAgMCAwIDEuOTctNC43NTZjLjQzNC0xLjYyNS42NjYtMy4zMzIuNjY2LTUuMDk0di0uMDFaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PHBhdGggZD1cXFwiTTkwLjk0NSAxNi44NTVhMTAuOTQ4IDEwLjk0OCAwIDAgMC0xLjEwNC0yLjY1NSAxMS4xNTUgMTEuMTU1IDAgMCAwLTEuNzUtMi4yOCAxMS4wNDggMTEuMDQ4IDAgMCAwLTIuMjgyLTEuNzQ3QTEwLjk2NCAxMC45NjQgMCAwIDAgODAuMyA4LjY5NWgtLjAwNmMtLjk4NyAwLTEuOTQuMTMtMi44NDkuMzcyYTEwLjkxIDEwLjkxIDAgMCAwLTIuNjYgMS4xIDEwLjk5NCAxMC45OTQgMCAwIDAtNC4wMzcgNC4wMjcgMTEgMTEgMCAwIDAtMS40ODQgNS41MXYuMDEyYTEwLjkyNCAxMC45MjQgMCAwIDAgMS40NzYgNS41MDVsMy4wMTMtMS43MzhhNy41MzUgNy41MzUgMCAwIDEtMS4wMS0zLjc3di0uMDFhNy41NTMgNy41NTMgMCAwIDEgNy41NDgtNy41MzNoLjAwNmE3LjUyNCA3LjUyNCAwIDAgMSAzLjc2OSAxLjAxMiA3LjU1IDcuNTUgMCAwIDEgMy41MTMgNC41NzJjLjE2Ny42Mi4yNTggMS4yNzYuMjU4IDEuOTUxaDMuNDc5Yy4wMDMtLjk4NC0uMTI4LTEuOTQtLjM3Mi0yLjg1WlxcXCIgZmlsbD1cXFwiI2ZmZlxcXCIvPjxwYXRoIGQ9XFxcIk04Ny41ODUgMTcuNzY1YTcuNTQyIDcuNTQyIDAgMCAwLTEuOTU1LTMuMzhsLTEuNjQgMS42MzlhNS4yNjQgNS4yNjQgMCAwIDEgMS4zNTQgMi4zNDMgNS4xODQgNS4xODQgMCAwIDEgMCAyLjcwNSA1LjIzOSA1LjIzOSAwIDAgMS0zLjY5OCAzLjY5NSA1LjE5NSA1LjE5NSAwIDAgMS0yLjcwNyAwIDUuMjk2IDUuMjk2IDAgMCAxLTEuMjYtLjUyMWwtMS4xNiAyLjAwOGE3LjUyOCA3LjUyOCAwIDAgMCAzLjc3NCAxLjAxYy42NzcgMCAxLjMzLS4wOTEgMS45NTQtLjI1NmE3LjU1MyA3LjU1MyAwIDAgMCA0LjU4NC0zLjUxNyA3LjU0NCA3LjU0NCAwIDAgMCAxLjAxMy0zLjc3MSA3LjUgNy41IDAgMCAwLS4yNTktMS45NTVaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIi8+PHBhdGggZD1cXFwiTTkxLjg1MyAxMy4wNDZhMTMuNDM1IDEzLjQzNSAwIDAgMC0yLjEyLTIuNzY1IDEzLjM0MyAxMy4zNDMgMCAwIDAtMi43NjYtMi4xMTggMTMuMjg3IDEzLjI4NyAwIDAgMC02LjY3NS0xLjc5Yy0xLjE5NyAwLTIuMzUyLjE1OS0zLjQ1Ni40NTQtMS4xNDEuMzAzLTIuMjIuNzU3LTMuMjE4IDEuMzM2YTEzLjQzNiAxMy40MzYgMCAwIDAtMi43NjcgMi4xMTggMTMuMzM0IDEzLjMzNCAwIDAgMC0yLjEyIDIuNzY1IDEzLjI3MiAxMy4yNzIgMCAwIDAtMS43OSA2LjY3aDIuMzJjMC0uOTg2LjEzMS0xLjk0Mi4zNzUtMi44NTJhMTEuMDg4IDExLjA4OCAwIDAgMSAyLjg1NS00Ljk0IDExLjAwMiAxMS4wMDIgMCAwIDEgMi4yODQtMS43NSAxMS4wMyAxMS4wMyAwIDAgMSAyLjY2LTEuMTA0IDExLjAyIDExLjAyIDAgMCAxIDIuODU0LS4zNzRjLjk4OCAwIDEuOTQ0LjEzIDIuODU1LjM3NGExMS4wOTkgMTEuMDk5IDAgMCAxIDQuOTQzIDIuODUzIDEwLjk5IDEwLjk5IDAgMCAxIDEuNzUxIDIuMjgzYy40NzcuODI2Ljg1MiAxLjcxNiAxLjEwNCAyLjY1OGwyLjI0Mi0uNjAyYTEzLjE5NCAxMy4xOTQgMCAwIDAtMS4zMy0zLjIxNlpcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiLz48cGF0aCBkPVxcXCJNOTcuNjc0IDE1LjA2M2ExNy43OTEgMTcuNzkxIDAgMCAwLTEuOC00LjMzNiAxOC4wNDMgMTguMDQzIDAgMCAwLTYuNTg2LTYuNTgzIDE3LjkzIDE3LjkzIDAgMCAwLTguOTk2LTIuNDA4Yy0xLjYxMiAwLTMuMTcyLjIxMy00LjY1Ny42MWExNy44MTcgMTcuODE3IDAgMCAwLTQuMzM5IDEuNzk4IDE4LjAzMiAxOC4wMzIgMCAwIDAtNi41ODYgNi41ODNsMi4wMTIgMS4xNjNhMTUuNjc2IDE1LjY3NiAwIDAgMSAyLjQ4OS0zLjI0NWMuOTY1LS45NjQgMi4wNTctMS44IDMuMjQ2LTIuNDg3YTE1LjcwNiAxNS43MDYgMCAwIDEgMy43NzctMS41NjkgMTUuNjggMTUuNjggMCAwIDEgOC4xMSAwYzEuMzQuMzU4IDIuNjA2Ljg5MSAzLjc3OCAxLjU2OWExNS42ODUgMTUuNjg1IDAgMCAxIDMuMjQ2IDIuNDg3IDE1LjY3NiAxNS42NzYgMCAwIDEgMi40ODkgMy4yNDUgMTUuNjg0IDE1LjY4NCAwIDAgMSAxLjU2OSAzLjc3NCAxNS42NTQgMTUuNjU0IDAgMCAxIDAgOC4xMDZsMi4yNDUuNjAxYy4zOTctMS40ODMuNjEtMy4wNDMuNjEtNC42NTRhMTcuODc1IDE3Ljg3NSAwIDAgMC0uNjA4LTQuNjU0WlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIvPjxwYXRoIGQ9XFxcIk04MC4yOTMgMjQuOTQ0YzIuODg4IDAgNS4yMy0yLjM0IDUuMjMtNS4yMjdhNS4yMjkgNS4yMjkgMCAwIDAtNS4yMy01LjIyNyA1LjIyOCA1LjIyOCAwIDAgMC01LjIzIDUuMjI3IDUuMjI4IDUuMjI4IDAgMCAwIDUuMjMgNS4yMjdabTIwLjYxNSAxNS40MzZWMjkuNTQzaDIuMzA0VjQwLjM4aC0yLjMwNFptNi42MTgtMy43ODd2My43ODdoLTIuMTk2di03LjU3NmgyLjE2NXYuNTI1YTIuNTM5IDIuNTM5IDAgMCAxIDEuNzkzLS43MTJjMS44NTYgMCAzLjA3OSAxLjIwNiAzLjA3OSAzLjM1NXY0LjQwNWgtMi4xOTZ2LTQuMjM1YzAtLjgwMi0uMzcyLTEuNDgzLTEuMjU0LTEuNDgzLTEuMDMzLjAwMy0xLjM5MS43NzQtMS4zOTEgMS45MzRabTkuNjY2IDMuODE3Yy0xLjY1NSAwLTIuNjE0LS45NTgtMi42MTQtMi42Mjh2LTIuOTUzaC0xLjI2OHYtMi4wMjVoMS4yNjh2LTEuMTExbDIuMTk2LTEuODU1djIuOTdoMS45MDJ2Mi4wMjRoLTEuOTAydjIuNjQzYzAgLjcyNy40OC44OTcuOTI4Ljg5Ny41MTEgMCAuOTI4LS4yMDIuOTI4LS4yMDJ2MS45OTRzLS41ODcuMjQ3LTEuNDM4LjI0N1ptMTAuMTkzLTMuMjNoLTUuMzUyYy4xMjUuNzc1Ljc1NyAxLjM2MiAxLjcgMS4zNjIuNjM1IDAgMS4wMDQtLjI2NCAxLjIzNy0uNjVoMi4zNjdjLS41MTEgMS42NC0xLjY4NiAyLjY2LTMuNTczIDIuNjYtMi4xOTcgMC0zLjk1OS0xLjUzLTMuOTU5LTMuOTEgMC0yLjI4OSAxLjYwOS00LjAxOSAzLjgzNy00LjAxOSAyLjQ4OSAwIDMuNzU3IDEuOTYzIDMuNzU3IDMuOTg4IDAgLjE5OC0uMDE0LjU3LS4wMTQuNTdabS0zLjcxNS0yLjYyOGMtLjgzNCAwLTEuMzkzLjUxLTEuNTMyIDEuMTZoMi45NGMtLjA0Ni0uNjY0LS42MTktMS4xNi0xLjQwOC0xLjE2Wm0xMC4yMzktMS4zMTV2Mi4xNjRzLS41NzMtLjU4Ny0xLjQzOS0uNTg3Yy0uNjY0IDAtMS40MDcuMzU0LTEuNDA3IDEuNDY5djQuMDk1aC0yLjE5N3YtNy41NzVoMi4xNjV2LjYzNWMtLjAxNCAwIC40MzUtLjc0MyAxLjUxNi0uNzQzLjkyOCAwIDEuMzYyLjU0MiAxLjM2Mi41NDJabTMuNDAzIDMuMzU2djMuNzg3aC0yLjE5N3YtNy41NzZoMi4xNjV2LjUyNWEyLjU0MyAyLjU0MyAwIDAgMSAxLjc5NC0uNzEyYzEuODU2IDAgMy4wNzkgMS4yMDYgMy4wNzkgMy4zNTV2NC40MDVoLTIuMTk3di00LjIzNWMwLS44MDItLjM3MS0xLjQ4My0xLjI1NC0xLjQ4My0xLjAzNi4wMDMtMS4zOS43NzQtMS4zOSAxLjkzNFptMTEuMTY2IDMuMDE1Yy0uNDk2LjYwNC0xLjIwNi45NDUtMi4xNTEuOTQ1LTEuNTE1IDAtMi43MzgtLjk0NS0yLjczOC0yLjM5NyAwLTEuNDM4IDEuMjItMi4xNSAyLjkzNy0yLjI0IDEuMzE0LS4wNzcgMS43MzQtLjIxNiAxLjczNC0uNjY0IDAtLjQzNC0uNDAzLS43MjYtMS4xMTMtLjcyNi0uODY1IDAtMS4yMzcuNDM0LTEuMjg1Ljg5NmgtMi4xMmMuMTA4LTEuNjUzIDEuMzQ1LTIuNzk5IDMuNDItMi43OTkgMi4wMjYgMCAzLjMyNiAxLjA5OCAzLjMyNiAzLjE1NHY0LjYwNmgtMS44MTFsLS4xOTktLjc3NVptLTIuNjkzLTEuNTQ1YzAgLjQzNC4zODYuNjk0IDEuMDA1LjY5NC44MzQgMCAxLjUwMS0uNDYyIDEuNTAxLTEuNDA2di0uMjc4cy0uNDAzLjE4NC0xLjIzNy4yMzJjLS45MTQuMDQ2LTEuMjY5LjM0LTEuMjY5Ljc1OFptOS41NTggMi4zNDdjLTEuNjU1IDAtMi42MTQtLjk1OC0yLjYxNC0yLjYyOHYtMi45NTNoLTEuMjY5di0yLjAyNWgxLjI2OXYtMS4xMTFsMi4xOTYtMS44NTV2Mi45N2gxLjkwMnYyLjAyNGgtMS45MDJ2Mi42NDNjMCAuNzI3LjQ4Ljg5Ny45MjguODk3LjUxMSAwIC45MjgtLjIwMi45MjgtLjIwMnYxLjk5NHMtLjU5LjI0Ny0xLjQzOC4yNDdabTIuOTUxLTkuNzUzYzAtLjcxMi41NTYtMS4yODIgMS4yNjgtMS4yODIuNzEzIDAgMS4yODYuNTczIDEuMjg2IDEuMjgyIDAgLjY5NS0uNTczIDEuMjY4LTEuMjg2IDEuMjY4YTEuMjY0IDEuMjY0IDAgMCAxLTEuMjY4LTEuMjY4Wm0uMTcgOS43MjJ2LTcuNTc1aDIuMTk3djcuNTc1aC0yLjE5N1ptMy43ODktMy43ODZjMC0yLjI3MiAxLjc0OC0zLjk3NCA0LjAzOC0zLjk3NHM0LjAzNSAxLjcwMiA0LjAzNSAzLjk3NGMwIDIuMjcxLTEuNzQ4IDMuOTU2LTQuMDM1IDMuOTU2LTIuMjkgMC00LjAzOC0xLjY4NS00LjAzOC0zLjk1NlptMi4yNDUgMGMwIDEuMTExLjc1NyAxLjkxNyAxLjc5MyAxLjkxN3MxLjc5NC0uODAzIDEuNzk0LTEuOTE3YzAtMS4xMTItLjc1OC0xLjkxOC0xLjc5NC0xLjkxOHMtMS43OTMuODAzLTEuNzkzIDEuOTE4Wm05LjU0IDB2My43ODdoLTIuMTk2di03LjU3NmgyLjE2NXYuNTI1YTIuNTQgMi41NCAwIDAgMSAxLjc5My0uNzEyYzEuODU2IDAgMy4wNzkgMS4yMDYgMy4wNzkgMy4zNTV2NC40MDVoLTIuMTk2di00LjIzNWMwLS44MDItLjM3Mi0xLjQ4My0xLjI1NC0xLjQ4My0xLjAzNi4wMDMtMS4zOTEuNzc0LTEuMzkxIDEuOTM0Wm0xMS4xNjcgMy4wMTVjLS40OTcuNjA0LTEuMjA2Ljk0NS0yLjE1MS45NDUtMS41MTYgMC0yLjczOS0uOTQ1LTIuNzM5LTIuMzk3IDAtMS40MzggMS4yMjEtMi4xNSAyLjkzNy0yLjI0IDEuMzE0LS4wNzcgMS43MzQtLjIxNiAxLjczNC0uNjY0IDAtLjQzNC0uNDAzLS43MjYtMS4xMTItLjcyNi0uODY2IDAtMS4yMzcuNDM0LTEuMjg2Ljg5NmgtMi4xMTljLjEwNy0xLjY1MyAxLjM0NS0yLjc5OSAzLjQxOS0yLjc5OSAyLjAyNiAwIDMuMzI2IDEuMDk4IDMuMzI2IDMuMTU0djQuNjA2aC0xLjgxbC0uMTk5LS43NzVabS0yLjY5My0xLjU0NWMwIC40MzQuMzg2LjY5NCAxLjAwNC42OTQuODM1IDAgMS41MDItLjQ2MiAxLjUwMi0xLjQwNnYtLjI3OHMtLjQwMy4xODQtMS4yMzguMjMyYy0uOTExLjA0Ni0xLjI2OC4zNC0xLjI2OC43NThabTYuNTI0IDIuMzE3VjI5LjU0M2gyLjE5NlY0MC4zOGgtMi4xOTZabTE0LjA4OS0xMC44MzcgNC4yNCAxMC44MzdoLTIuMzgxbC0uODY2LTIuMTMzaC00LjE5MWwtLjg1MSAyLjEzM2gtMi4zODFsNC4yMzktMTAuODM3aDIuMTkxWm0tMS4wOTggMy4xMjMtMS4zNDUgMy41MzloMi42OWwtMS4zNDUtMy41NFptNi4zODUtMi4wMDljMC0uNzEyLjU1Ni0xLjI4MiAxLjI2OS0xLjI4Mi43MTIgMCAxLjI4NS41NzMgMS4yODUgMS4yODIgMCAuNjk1LS41NzMgMS4yNjgtMS4yODUgMS4yNjhhMS4yNjQgMS4yNjQgMCAwIDEtMS4yNjktMS4yNjhabS4xNyA5LjcyMnYtNy41NzVoMi4xOTd2Ny41NzVoLTIuMTk3Wm0zLjc4OS0zLjc4NmMwLTIuMzk2IDEuNzE2LTMuOTczIDMuODE5LTMuOTczLjg2NiAwIDEuNTkyLjMyMyAxLjk4MS42NjR2LTMuNzQxaDIuMTk2VjQwLjM4aC0yLjE2NXYtLjU0MmMtLjQuMzg2LTEuMTYuNzEyLTIuMDA5LjcxMi0yLjEwNiAwLTMuODIyLTEuNTE1LTMuODIyLTMuOTU2Wm01LjgzMSAwYzAtMS4xNzQtLjc3Mi0xLjk4LTEuNzkzLTEuOTgtMS4wMjIgMC0xLjc5NC44MDMtMS43OTQgMS45OCAwIDEuMTc1Ljc3MiAxLjk4IDEuNzk0IDEuOTggMS4wMjEgMCAxLjc5My0uODA1IDEuNzkzLTEuOThaTTEwMC4xOTYgNDguMDloOC41MjJ2Mi4xMThoLTMuMTF2OC43MTloLTIuMzA0di04LjcxOWgtMy4xMTFWNDguMDloLjAwM1ptMTMuODg4IDMuNjkydjIuMTY0cy0uNTczLS41ODctMS40MzktLjU4N2MtLjY2NCAwLTEuNDA3LjM1NC0xLjQwNyAxLjQ2OXY0LjA5NWgtMi4xOTZ2LTcuNTc1aDIuMTY1di42MzVjLS4wMTQgMCAuNDM0LS43NDMgMS41MTUtLjc0My45MzEuMDAzIDEuMzYyLjU0MiAxLjM2Mi41NDJabTUuODkxIDYuMzcxYy0uNDk2LjYwNC0xLjIwNi45NDUtMi4xNTEuOTQ1LTEuNTE1IDAtMi43MzgtLjk0NS0yLjczOC0yLjM5NyAwLTEuNDM4IDEuMjItMi4xNSAyLjkzNy0yLjI0IDEuMzE0LS4wNzcgMS43MzQtLjIxNiAxLjczNC0uNjY0IDAtLjQzNC0uNDAzLS43MjYtMS4xMTItLjcyNi0uODY2IDAtMS4yMzguNDM0LTEuMjg2Ljg5NmgtMi4xMmMuMTA4LTEuNjUzIDEuMzQ1LTIuNzk5IDMuNDItMi43OTkgMi4wMjYgMCAzLjMyNiAxLjA5OCAzLjMyNiAzLjE1NHY0LjYwNWgtMS44MTFsLS4xOTktLjc3NFptLTIuNjktMS41NDVjMCAuNDM0LjM4Ni42OTUgMS4wMDUuNjk1LjgzNCAwIDEuNTAxLS40NjMgMS41MDEtMS40MDd2LS4yNzhzLS40MDMuMTg0LTEuMjM3LjIzMmMtLjkxNC4wNDYtMS4yNjkuMzQtMS4yNjkuNzU4Wm04LjcyMS0xLjQ3djMuNzg3aC0yLjE5N3YtNy41NzZoMi4xNjV2LjUyNWEyLjU0IDIuNTQgMCAwIDEgMS43OTQtLjcxMmMxLjg1NiAwIDMuMDc5IDEuMjA1IDMuMDc5IDMuMzU1djQuNDA1aC0yLjE5N3YtNC4yMzVjMC0uODAyLS4zNzEtMS40ODMtMS4yNTQtMS40ODMtMS4wMzMuMDAzLTEuMzkuNzc0LTEuMzkgMS45MzRabTEwLjc5NSAxLjYwN2MwLS4yMzItLjEzOS0uNDE2LS43NDQtLjU0MWwtMS4xNDMtLjIzM2MtMS43MTctLjM0LTIuNDQ0LTEuMTYtMi40NDQtMi4yODggMC0xLjMzIDEuMDA1LTIuNTE5IDMuMDk0LTIuNTE5IDIuMTAyIDAgMy4wNDcgMS4xNzQgMy4yMDEgMi40OWgtMi4wODljLS4xMjUtLjQxNy0uNDgtLjY2NC0xLjEyOS0uNjY0LS42MTkgMC0uOTYuMjE2LS45Ni41MjUgMCAuMjMzLjE4NS4zNzIuNzU4LjQ4bDEuMTQ0LjIzMmMxLjYyMy4zMjMgMi40MjkgMS4wODMgMi40MjkgMi4zOCAwIDEuNDY5LTEuMDY3IDIuNDktMy4xODcgMi40OS0yLjE2NSAwLTMuMzI2LTEuMDIxLTMuNTQyLTIuNTk4aDIuMjE0Yy4xMjUuNTI0LjUxMS44MDIgMS4zMjguODAyLjc0NiAwIDEuMDctLjIxNSAxLjA3LS41NTZabTExLjU1Mi0xLjYwOGMwIDIuMzk3LTEuNzE3IDMuOTU3LTMuODE5IDMuOTU3LS44NjYgMC0xLjU5Mi0uMzEtMS45ODEtLjY1djMuNDc3aC0yLjE5N1Y1MS4zNDhoMi4xNjZ2LjU0MmMuNDAzLS4zODYgMS4xNi0uNzI2IDIuMDEyLS43MjYgMi4xMDIgMCAzLjgxOSAxLjUxNyAzLjgxOSAzLjk3M1ptLTUuODMxIDBjMCAxLjE3NS43NzQgMS45OCAxLjc5MyAxLjk4IDEuMDIyIDAgMS43OTQtLjgwMyAxLjc5NC0xLjk4IDAtMS4xNzQtLjc3Mi0xLjk4LTEuNzk0LTEuOTgtMS4wMTkuMDA0LTEuNzkzLjgwNi0xLjc5MyAxLjk4Wm0xMS44NzkgMy4wMTZjLS40OTcuNjA0LTEuMjA2Ljk0NS0yLjE1MS45NDUtMS41MTYgMC0yLjczOS0uOTQ1LTIuNzM5LTIuMzk3IDAtMS40MzggMS4yMi0yLjE1IDIuOTM3LTIuMjQgMS4zMTQtLjA3NyAxLjczNC0uMjE2IDEuNzM0LS42NjQgMC0uNDM0LS40MDMtLjcyNi0xLjExMi0uNzI2LS44NjYgMC0xLjIzNy40MzQtMS4yODYuODk2aC0yLjEyYy4xMDgtMS42NTMgMS4zNDYtMi43OTkgMy40Mi0yLjc5OSAyLjAyNiAwIDMuMzI2IDEuMDk4IDMuMzI2IDMuMTU0djQuNjA1aC0xLjgxMWwtLjE5OC0uNzc0Wm0tMi42OTMtMS41NDVjMCAuNDM0LjM4Ni42OTUgMS4wMDQuNjk1LjgzNSAwIDEuNTAxLS40NjMgMS41MDEtMS40MDd2LS4yNzhzLS40MDMuMTg0LTEuMjM3LjIzMmMtLjkxMS4wNDYtMS4yNjguMzQtMS4yNjguNzU4Wm0xMS41NjYtNC44MjZ2Mi4xNjRzLS41NzMtLjU4Ny0xLjQzOS0uNTg3Yy0uNjY0IDAtMS40MDcuMzU0LTEuNDA3IDEuNDY5djQuMDk1aC0yLjE5N3YtNy41NzVoMi4xNjZ2LjYzNWMtLjAxNSAwIC40MzQtLjc0MyAxLjUxNS0uNzQzLjkyOC4wMDMgMS4zNjIuNTQyIDEuMzYyLjU0MlptOC40MjggMy45NDRoLTUuMzUyYy4xMjUuNzc0Ljc1OCAxLjM2IDEuNzAzIDEuMzYuNjM2IDAgMS4wMDUtLjI2MyAxLjIzNy0uNjQ5aDIuMzY3Yy0uNTExIDEuNjQtMS42ODYgMi42Ni0zLjU3MyAyLjY2LTIuMTk2IDAtMy45NTktMS41My0zLjk1OS0zLjkxIDAtMi4yODkgMS42MS00LjAxOSAzLjgzNy00LjAxOSAyLjQ4OSAwIDMuNzU3IDEuOTYzIDMuNzU3IDMuOTg4IDAgLjItLjAxNy41Ny0uMDE3LjU3Wm0tMy43MTEtMi42MjdjLS44MzUgMC0xLjM5NC41MS0xLjUzMyAxLjE2aDIuOTRjLS4wNDUtLjY2Ni0uNjE5LTEuMTYtMS40MDctMS4xNlptNy4zOTIgMi4wMzl2My43ODdoLTIuMTk2di03LjU3NmgyLjE2NXYuNTI1YTIuNTM4IDIuNTM4IDAgMCAxIDEuNzkzLS43MTJjMS44NTYgMCAzLjA3OSAxLjIwNSAzLjA3OSAzLjM1NXY0LjQwNWgtMi4xOTZ2LTQuMjM1YzAtLjgwMi0uMzcyLTEuNDgzLTEuMjU0LTEuNDgzLTEuMDM2LjAwMy0xLjM5MS43NzQtMS4zOTEgMS45MzRabTExLjU2Ny44MzdoMi40MTJjLS4zNTcgMS44NC0xLjc0OCAzLjEyMy0zLjc5MSAzLjEyMy0yLjI5IDAtMy45OS0xLjY4NS0zLjk5LTMuOTU3IDAtMi4yNzEgMS43MDMtMy45NzMgMy45OS0zLjk3MyAxLjk5NSAwIDMuMzg4IDEuMjM2IDMuNjY2IDMuMDI5aC0yLjQxNWMtLjE3LS41NzMtLjY2NC0uOTU5LTEuMzI4LS45NTktLjkyOCAwLTEuNjcxLjc4OS0xLjY3MSAxLjkgMCAxLjExMi43NDMgMS45IDEuNzAzIDEuOS43MTIuMDA0IDEuMjQtLjQxNiAxLjQyNC0xLjA2M1ptNS4xMDIgNi4wMjdjLS45OSAwLTEuNDg0LS4yNjQtMS40ODQtLjI2NHYtMi4wMXMuNDQ4LjIzMi45MjguMjMyYy40OTYgMCAxLjE0My0uMTg0IDEuMjk5LTEuMDM1bC0yLjk1NC03LjU3NWgyLjQ0NGwxLjcxNyA0LjY5OSAxLjc0OC00LjdoMi4zNDlsLTMuMDc5IDcuN2MtLjgwMyAyLjAyNi0xLjQ1MyAyLjk1My0yLjk2OCAyLjk1M1ptMTEuNTk4LTMuMDc1VjQ4LjA5aDIuMzA1djEwLjgzN2gtMi4zMDVabTYuNjE4LTMuNzg5djMuNzg3aC0yLjE5N3YtNy41NzZoMi4xNjZ2LjUyNWEyLjUzOCAyLjUzOCAwIDAgMSAxLjc5My0uNzEyYzEuODU2IDAgMy4wNzkgMS4yMDUgMy4wNzkgMy4zNTV2NC40MDVoLTIuMTk2di00LjIzNWMwLS44MDItLjM3Mi0xLjQ4My0xLjI1NS0xLjQ4My0xLjAzMy4wMDMtMS4zOS43NzQtMS4zOSAxLjkzNFptNi41NDEtNS45MzZjMC0uNzEyLjU1Ni0xLjI4MiAxLjI2OC0xLjI4MnMxLjI4Ni41NzMgMS4yODYgMS4yODJhMS4yOCAxLjI4IDAgMCAxLTEuMjg2IDEuMjY4IDEuMjY0IDEuMjY0IDAgMCAxLTEuMjY4LTEuMjY4Wm0uMTcgOS43MjV2LTcuNTc1aDIuMTk2djcuNTc1aC0yLjE5NlptNy4yNTQuMDI5Yy0xLjY1NSAwLTIuNjE0LS45NTktMi42MTQtMi42M3YtMi45NTJoLTEuMjY4VjUxLjM1aDEuMjY4di0xLjExMWwyLjE5Ni0xLjg1NXYyLjk3aDEuOTAydjIuMDI0aC0xLjkwMnYyLjY0M2MwIC43MjYuNDguODk3LjkyOC44OTcuNTExIDAgLjkyOC0uMjAyLjkyOC0uMjAydjEuOTk0cy0uNTg3LjI0Ny0xLjQzOC4yNDdabTIuOTU0LTkuNzU0YzAtLjcxMi41NTYtMS4yODIgMS4yNjgtMS4yODJzMS4yODYuNTczIDEuMjg2IDEuMjgyYTEuMjggMS4yOCAwIDAgMS0xLjI4NiAxLjI2OCAxLjI2NCAxLjI2NCAwIDAgMS0xLjI2OC0xLjI2OFptLjE3IDkuNzI1di03LjU3NWgyLjE5NnY3LjU3NWgtMi4xOTZabTguNzU0LS43NzRjLS40OTYuNjA0LTEuMjA2Ljk0NS0yLjE1MS45NDUtMS41MTUgMC0yLjczOC0uOTQ1LTIuNzM4LTIuMzk3IDAtMS40MzggMS4yMi0yLjE1IDIuOTM3LTIuMjQgMS4zMTQtLjA3NyAxLjczNC0uMjE2IDEuNzM0LS42NjQgMC0uNDM0LS40MDMtLjcyNi0xLjExMy0uNzI2LS44NjUgMC0xLjIzNy40MzQtMS4yODUuODk2aC0yLjEyYy4xMDgtMS42NTMgMS4zNDUtMi43OTkgMy40MTktMi43OTkgMi4wMjcgMCAzLjMyNiAxLjA5OCAzLjMyNiAzLjE1NHY0LjYwNWgtMS44MWwtLjE5OS0uNzc0Wm0tMi42OTMtMS41NDVjMCAuNDM0LjM4Ni42OTUgMS4wMDUuNjk1LjgzNCAwIDEuNTAxLS40NjMgMS41MDEtMS40MDd2LS4yNzhzLS40MDMuMTg0LTEuMjM3LjIzMmMtLjkxNC4wNDYtMS4yNjkuMzQtMS4yNjkuNzU4Wm05LjU1OCAyLjM0OGMtMS42NTUgMC0yLjYxNC0uOTU5LTIuNjE0LTIuNjN2LTIuOTUyaC0xLjI2OFY1MS4zNWgxLjI2OHYtMS4xMTFsMi4xOTctMS44NTV2Mi45N2gxLjkwMXYyLjAyNGgtMS45MDF2Mi42NDNjMCAuNzI2LjQ3OS44OTcuOTI4Ljg5Ny41MSAwIC45MjgtLjIwMi45MjgtLjIwMnYxLjk5NHMtLjU4OC4yNDctMS40MzkuMjQ3Wm0yLjk1MS05Ljc1NGMwLS43MTIuNTU2LTEuMjgyIDEuMjY5LTEuMjgyLjcxMiAwIDEuMjg1LjU3MyAxLjI4NSAxLjI4MiAwIC42OTUtLjU3MyAxLjI2OC0xLjI4NSAxLjI2OGExLjI2NCAxLjI2NCAwIDAgMS0xLjI2OS0xLjI2OFptLjE3IDkuNzI1di03LjU3NWgyLjE5N3Y3LjU3NWgtMi4xOTdabTEwLjk4My03LjU3NS0yLjY5MSA3LjU3NWgtMi4yNThsLTIuNjkxLTcuNTc1aDIuMzM2bDEuNDg0IDQuNjg1IDEuNDg0LTQuNjg1aDIuMzM2Wm03Ljk4IDQuMzc0aC01LjM1MmMuMTI1Ljc3NC43NTcgMS4zNiAxLjcwMiAxLjM2LjYzNiAwIDEuMDA1LS4yNjMgMS4yMzgtLjY0OWgyLjM2NmMtLjUxIDEuNjQtMS42ODUgMi42Ni0zLjU3MiAyLjY2LTIuMTk3IDAtMy45NTktMS41My0zLjk1OS0zLjkxIDAtMi4yODkgMS42MDktNC4wMTkgMy44MzctNC4wMTkgMi40ODggMCAzLjc2IDEuOTYzIDMuNzYgMy45ODgtLjAwNi4yLS4wMi41Ny0uMDIuNTdabS0zLjcxMi0yLjYyN2MtLjgzNCAwLTEuMzkzLjUxLTEuNTMyIDEuMTZoMi45NGMtLjA0OS0uNjY2LS42MTktMS4xNi0xLjQwOC0xLjE2WlxcXCIgZmlsbD1cXFwiI2ZmZlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTIyIDM2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHhtbG5zOnhsaW5rPVxcXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXFxcIj48cGF0aCBkPVxcXCJNNDQuMDE5IDI3VjE2Ljk3OWgzLjI0N2MxLjIzIDAgMi4wMzIuMDUgMi40MDYuMTUuNTc0LjE1IDEuMDU1LjQ3OCAxLjQ0Mi45ODQuMzg4LjUwMi41ODEgMS4xNTEuNTgxIDEuOTQ4IDAgLjYxNi0uMTExIDEuMTMzLS4zMzUgMS41NTItLjIyMy40Mi0uNTA4Ljc1LS44NTQuOTkyLS4zNDIuMjM2LS42OS4zOTQtMS4wNDYuNDcxLS40ODMuMDk2LTEuMTgzLjE0NC0yLjA5OS4xNDRoLTEuMzE5VjI3aC0yLjAyM1ptMi4wMjMtOC4zMjZ2Mi44NDRoMS4xMDdjLjc5OCAwIDEuMzMxLS4wNTMgMS42LS4xNThhMS4zMzMgMS4zMzMgMCAwIDAgLjg2MS0xLjI3MWMwLS4zNjUtLjEwNy0uNjY1LS4zMi0uOTAyYTEuMzk5IDEuMzk5IDAgMCAwLS44MTQtLjQ0NWMtLjI0Mi0uMDQ1LS43MjctLjA2OC0xLjQ1Ni0uMDY4aC0uOTc4Wm03LjAyLTEuNjk1aDIuMDI0djUuNDI3YzAgLjg2Mi4wMjUgMS40Mi4wNzUgMS42NzUuMDg3LjQxLjI5Mi43NC42MTYuOTkxLjMyOC4yNDYuNzc0LjM3IDEuMzQuMzcuNTc0IDAgMS4wMDctLjExNyAxLjI5OC0uMzUuMjkyLS4yMzYuNDY3LS41MjYuNTI3LS44NjcuMDU5LS4zNDIuMDg5LS45MS4wODktMS43MDNWMTYuOThoMi4wMjN2NS4yNjNjMCAxLjIwMy0uMDU1IDIuMDUzLS4xNjQgMi41NS0uMTEuNDk3LS4zMTIuOTE2LS42MDggMS4yNTgtLjI5Mi4zNDItLjY4NC42MTUtMS4xNzYuODItLjQ5Mi4yLTEuMTM1LjMtMS45MjguMy0uOTU3IDAtMS42ODQtLjEwOS0yLjE4LS4zMjctLjQ5My0uMjI0LS44ODMtLjUxLTEuMTctLjg2MmEyLjc4OCAyLjc4OCAwIDAgMS0uNTY3LTEuMTE0Yy0uMTMyLS41NzQtLjE5OC0xLjQyMi0uMTk4LTIuNTQzdi01LjM0NlptOS44NTggMGg0LjAwNmMuNzkzIDAgMS4zODMuMDM0IDEuNzcuMTAyLjM5My4wNjQuNzQxLjIgMS4wNDcuNDEuMzEuMjEuNTY3LjQ5Ljc3Mi44NDEuMjA1LjM0Ni4zMDguNzM2LjMwOCAxLjE2OSAwIC40Ny0uMTI4LjktLjM4MyAxLjI5MmEyLjMzIDIuMzMgMCAwIDEtMS4wMjUuODgyYy42MS4xNzcgMS4wOC40OCAxLjQwOC45MDkuMzI4LjQyOC40OTIuOTMyLjQ5MiAxLjUxIDAgLjQ1Ni0uMTA3LjktLjMyMSAxLjMzNC0uMjEuNDI4LS41Ljc3Mi0uODY4IDEuMDMyLS4zNjUuMjU1LS44MTYuNDEyLTEuMzU0LjQ3Mi0uMzM3LjAzNi0xLjE1LjA1OS0yLjQ0LjA2OEg2Mi45MlYxNi45NzlabTIuMDI0IDEuNjY4djIuMzE3aDEuMzI2Yy43ODggMCAxLjI3OC0uMDExIDEuNDctLjAzNC4zNDYtLjA0MS42MTctLjE2LjgxMy0uMzU2LjItLjIuMzAxLS40NjIuMzAxLS43ODYgMC0uMzEtLjA4Ny0uNTYtLjI2LS43NTItLjE2OC0uMTk2LS40MjEtLjMxNC0uNzU4LS4zNTUtLjIwMS0uMDIzLS43NzgtLjAzNS0xLjczLS4wMzVoLTEuMTYyWm0wIDMuOTg1djIuNjhoMS44NzNjLjczIDAgMS4xOTItLjAyMSAxLjM4OC0uMDYyLjMtLjA1NS41NDQtLjE4Ny43MzEtLjM5Ni4xOTEtLjIxNS4yODctLjUuMjg3LS44NTUgMC0uMy0uMDczLS41NTYtLjIxOS0uNzY2YTEuMjM3IDEuMjM3IDAgMCAwLS42MzUtLjQ1OGMtLjI3NC0uMDk1LS44Ny0uMTQzLTEuNzkxLS4xNDNoLTEuNjM0Wk03Mi44MDUgMjd2LTkuOTRoMi4wMjR2OC4yNTJoNS4wMzFWMjdoLTcuMDU1Wm04LjE2MyAwVjE2Ljk3OWgyLjAyM1YyN2gtMi4wMjNabTMuMTY1LTMuMjYgMS45NjktLjE5MmMuMTE4LjY2LjM1OCAxLjE0Ni43MTggMS40NTYuMzY0LjMxLjg1NC40NjUgMS40Ny40NjUuNjUxIDAgMS4xNDEtLjEzNyAxLjQ3LS40MS4zMzItLjI3OC40OTgtLjYwMi40OTgtLjk3MWEuODkuODkgMCAwIDAtLjIxMi0uNjAyYy0uMTM2LS4xNjgtLjM3OC0uMzE0LS43MjQtLjQzNy0uMjM3LS4wODItLjc3Ny0uMjI4LTEuNjItLjQzOC0xLjA4NS0uMjY5LTEuODQ2LS41OTktMi4yODQtLjk5LS42MTUtLjU1Mi0uOTIyLTEuMjI0LS45MjItMi4wMTcgMC0uNTEuMTQzLS45ODcuNDMtMS40My4yOTItLjQ0Ni43MDktLjc4NSAxLjI1MS0xLjAxOC41NDctLjIzMiAxLjIwNi0uMzQ4IDEuOTc2LS4zNDggMS4yNTcgMCAyLjIwMy4yNzUgMi44MzcuODI3LjYzOC41NTEuOTczIDEuMjg3IDEuMDA1IDIuMjA4bC0yLjAyNC4wODljLS4wODctLjUxNS0uMjczLS44ODQtLjU2LTEuMTA4LS4yODMtLjIyOC0uNzEtLjM0Mi0xLjI3OS0uMzQyLS41ODggMC0xLjA0OC4xMjEtMS4zOC4zNjNhLjczLjczIDAgMCAwLS4zMjIuNjIyYzAgLjIzNy4xLjQ0LjMuNjA4LjI1Ni4yMTQuODc2LjQzOCAxLjg2LjY3Ljk4NS4yMzIgMS43MTIuNDc0IDIuMTguNzI1LjQ3NS4yNDYuODQ0LjU4NSAxLjEwOCAxLjAxOC4yNy40MjkuNDA0Ljk2LjQwNCAxLjU5MyAwIC41NzQtLjE2IDEuMTEyLS40NzkgMS42MTMtLjMxOS41MDItLjc3Ljg3NS0xLjM1MyAxLjEyMS0uNTg0LjI0Mi0xLjMxLjM2My0yLjE4MS4zNjMtMS4yNjcgMC0yLjI0LS4yOTItMi45MTktLjg3NS0uNjc5LS41ODgtMS4wODUtMS40NDMtMS4yMTctMi41NjRaTTkzLjcxMSAyN1YxNi45NzloMi4wMjN2My45NDRIOTkuN3YtMy45NDRoMi4wMjNWMjdoLTIuMDIzdi00LjM4MmgtMy45NjVWMjdoLTIuMDIzWm05LjgzIDBWMTYuOTc5aDcuNDMxdjEuNjk1aC01LjQwOHYyLjIyMWg1LjAzMnYxLjY4OWgtNS4wMzJ2Mi43MjdoNS41OTlWMjdoLTcuNjIyWm05LjA2NSAwVjE2Ljk3OWg0LjI1OGMxLjA3MSAwIDEuODQ4LjA5IDIuMzMyLjI3M2EyLjI4IDIuMjggMCAwIDEgMS4xNjguOTU3Yy4yOTIuNDYuNDM4Ljk4Ny40MzggMS41OCAwIC43NTEtLjIyMSAxLjM3My0uNjYzIDEuODY1LS40NDIuNDg4LTEuMTAzLjc5Ni0xLjk4My45MjMuNDM4LjI1NS43OTguNTM2IDEuMDgxLjg0MS4yODcuMzA1LjY3Mi44NDggMS4xNTUgMS42MjdMMTIxLjYxNSAyN2gtMi40MTlsLTEuNDYzLTIuMThjLS41Mi0uNzgtLjg3NS0xLjI3LTEuMDY3LTEuNDdhMS41MDMgMS41MDMgMCAwIDAtLjYwOC0uNDE3Yy0uMjE0LS4wNzgtLjU1NC0uMTE3LTEuMDE5LS4xMTdoLS40MVYyN2gtMi4wMjNabTIuMDIzLTUuNzgzaDEuNDk3Yy45NzEgMCAxLjU3Ny0uMDQxIDEuODE5LS4xMjMuMjQxLS4wODIuNDMtLjIyNC41NjctLjQyNC4xMzctLjIuMjA1LS40NTEuMjA1LS43NTIgMC0uMzM3LS4wOTEtLjYwOC0uMjczLS44MTMtLjE3OC0uMjEtLjQzMS0uMzQyLS43NTktLjM5Ny0uMTY0LS4wMjMtLjY1Ni0uMDM0LTEuNDc3LS4wMzRoLTEuNTc5djIuNTQzWlxcXCIgZmlsbD1cXFwiI2ZmZlxcXCIvPjxwYXRoIGZpbGw9XFxcInVybCgjbG9nb19zdmdfX2EpXFxcIiBkPVxcXCJNMCAwaDQxdjM2SDB6XFxcIi8+PGRlZnM+PHBhdHRlcm4gaWQ9XFxcImxvZ29fc3ZnX19hXFxcIiBwYXR0ZXJuQ29udGVudFVuaXRzPVxcXCJvYmplY3RCb3VuZGluZ0JveFxcXCIgd2lkdGg9XFxcIjFcXFwiIGhlaWdodD1cXFwiMVxcXCI+PHVzZSB4bGluazpocmVmPVxcXCIjbG9nb19zdmdfX2JcXFwiIHRyYW5zZm9ybT1cXFwibWF0cml4KC4wMDA5MyAwIDAgLjAwMTA2IC0uMTIyIC0uMDA3KVxcXCIvPjwvcGF0dGVybj48aW1hZ2UgaWQ9XFxcImxvZ29fc3ZnX19iXFxcIiB3aWR0aD1cXFwiMjIzNVxcXCIgaGVpZ2h0PVxcXCI5NTlcXFwiIHhsaW5rOmhyZWY9XFxcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFDTHNBQUFPL0NBWUFBQUF0S2xha0FBQUFDWEJJV1hNQUFDRTNBQUFoTndFeldKOTZBQUFnQUVsRVFWUjQydXpkUFloZDZaMG04T2NkT2pEc0RXcGhZQ293YkRXdW9JT0J2ZzNPWEdBcHNwTEYzYlNTaVZSaWNhVEFyVWhSMDJvY0tlcWVRSkdETGtXVHFMSE1KdFdSTlNEREJBdHpHeWFZb0l4cllZSmFHSmdhcUlVSkJ0NE4zbHVyc3R3ZityajNQZWZjKy90QmNVdHErNTZ2OTFTcGRCNDkvd1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRG9vRGdGQUFBQU1FNjExcDBrOHovN1liNlVwODRPQUFBQUFOdEsyQVVBQUFCV3JOYTZsMlJ2K2N0NWtwM2w1Ly90eXU5bitmdnpOZXpDMHhkK3ZVank3OHZQVDVjZlNiSW9wWnk3WWdBQUFBQk1pYkFMQUFBQXZLSmE2MldBNWRyeXQzNjZmTDBhYkptUzArWEhlWkt2bDYrTEpLZWxsRk5YSEFBQUFJQXhFWFlCQUFDQWIzQmxoTkE4clpGbG50YktzcmVGcDJPUkZvRDUreXlETVVZcEFRQUFBREFVWVJjQUFBQzIzcktwWlM4dDBQTFRUTGVocGJmVHRDRE0xMm1qa3pUQkFBQUFBTEIyd2k0QUFBQnNsV1ZqeTdVSXRxekxlVnJ3NVRJQXN5aWxuRHN0QUFBQUFLeUtzQXNBQUFBYmJkbmFjaGxzdVpidEhFTTB0RVd1QkdDMHZ3QUFBQUR3Sm9SZEFBQUEyQ2kxMXIyMFVNdlBsNjlhVzhibk5DMzg4dHUwOEl2bUZ3QUFBQUJlbXJBTEFBQUFrM1psTE5GbHVHWFBXWm1jeSthWDM1WlNuam9kQUFBQUFId1hZUmNBQUFBbVo5bmU4bjZlQjF6WUhPZDUzdnJ5Uk9zTEFBQUFBQzhTZGdFQUFHQVNhcTN6SkxmU1FpNTd6c2pXV0NSNWxCWjhPWFU2QUFBQUFCQjJBUUFBWUxRRVhIaUI0QXNBQUFBQXdpNEFBQUNNaTRBTEwwbndCUUFBQUdCTENic0FBQUF3dUZyclhscTQ1WmNSY09IVlBjM3o0TXU1MHdFQUFBQ3cyWVJkQUFBQUdFeXQ5VERKejlPQ0xyQUtSMGtlbFZLZU9oVUFBQUFBbTBuWUJRQUFnSzZXTFM2L1RIS1laTWNaWVUxTzA5cGVqb3c1QWdBQUFOZ3N3aTRBQUFCMHNXeHh1WlhrbXJOQlowZlI5Z0lBQUFDd01ZUmRBQUFBV0p0bGk4dGhXcE9MRmhlR2RwcmsweVJQU2lublRnY0FBQURBTkFtN0FBQUFzSEsxMW10cExTNkh6Z1lqZEo3Vzl2SzNSaHdCQUFBQVRJK3dDd0FBQUN0VGEzMC9yY1hsbXJQeFVoYmY4SHNuU2Y3dks3ekhqNUxNWHZpOVdaSjlwL2VsSE1XSUl3QUFBSUJKRVhZQkFBRGdqZFZhRDVOOGttUnZ5MC9GUlZwWUpVbStYcjZlTFQreS9HOFhBK3pYN3ZJamFTR1lXWkwva3VlQm1MbFZuS2RKUGhWNkFRQUFBQmcvWVJjQUFBQmUyNWFHWEM3REs1Y05MSXY4YWNobHl1WjUzZ3J6VjJrQm1jdHd6TFo0bXRiMGN1UU9Cd0FBQUJnbllSY0FBQUJlU2ExMUo4bEhhZU9LZGpiNFVDOERMQ2RKL3BBV2NGbHM2V1cvRE1Ec3A0MU4yczNtdDhHY3BqVzlITG5yQVFBQUFNWkYyQVVBQUlDWFZtdTluODBOdVN6U1JnOWRCbHpPWFBIdmRUVUFNOC96c1VpYjVEUkNMd0FBQUFDakl1d0NBQURBOTlyQWNVV1hMUzEvV0w2ZXVNb3JNMTkrWEFaZ05tVUUwaUxKM1ZMS1U1Y1lBQUFBWUZqQ0xnQUFBSHlyRFFxNVhDUjVsdGJjc29qV2xwNzIwMEl2NzJZendpOVAwNXBlbnJxMEFBQUFBTU1RZGdFQUFPRFAxRnF2cFlWY3JrMzRNQlpKZmgvTkxXTnoyZnp5azB4NzdOR1R0S2FYVTVjVUFBQUFvQzloRndBQUFQNi9XdXRla2k4eXpaREw1V2lpeTRETGhTczZlck1rQjJuQmw2bTJ2bnllMXZSeTduSUNBQUFBOUNIc0FnQUFRR3F0TzJsTkxoOU5iTmZQMHNZVGZSWHRMWnZnTXZoeWtHa0ZYODdUQWkrZnU0UUFBQUFBNnlmc0FnQUFzT1ZxclIrbEJWMTJKckxMQWk3YllZckJsOU1rdDBzcFQxMCtBQUFBZ1BVUmRnRUFBTmhTdGRaclNUNUxHeDh6ZGhkSmppUGdzcTJtRm54NWt1UnVLZVhVcFFNQUFBQllQV0VYQUFDQUxiTWNXZlJaa3NNSjdPNXhrdCtuTmJuQUxDM3c4ck9NUDZSMW51UnZTeW4zWFRZQUFBQ0ExUkoyQVFBQTJDSzExc08wb011WVJ4YWRwRFc0SEtjMXVzQTMyVTF5SXkzNHNqdmkvVnlrdGJ3OGRja0FBQUFBVmtQWUJRQUFZQXZVV3ZlU2ZKSGsyb2gzOHpqSmx6R21pRmQzMmZaeU1PSjkvRHpKcDZXVWM1Y0xBQUFBNE0wSXV3QUFBR3k0V3V0SFNUN0pPTnRjenRJQ0xscGNXSVhkSkIrbU5iN01ScmgvNTBsdWwxS2V1RlFBQUFBQXIwL1lCUUFBWUVQVld1ZHBiUzd6RWU3ZUlpM2s4c3lWWWcxbWFTMHZ0ekxPRVVkUDBrSXZXbDRBQUFBQVhvT3dDd0FBd0FhcXRkNVBhM01aRzZPSzZPMGdyZTFsYktFdkxTOEFBQUFBcjBuWUJRQUFZSVBVV3ZmUzJseXVqV3pYanBNOFNodGJCRU9ZcDRWZURrYTJYMXBlQUFBQUFGNlJzQXNBQU1DR3FMVitsTmJtc2pPU1hicElhM0Y1dlB3Y3htQTNiYnpSalJIdDAybGE0T1dweXdNQUFBRHcvWVJkQUFBQUpxN1d1cFBXNXZMK1NIWkp5SVVwR0dQbzVmTlN5bDJYQmdBQUFPQzdDYnNBQUFCTVdLMzFXcExmWkJ4dExrSXVUTkhZUWkrTEpCK1VVazVkR2dBQUFJQnZKdXdDQUFBd1ViWFcrMmxqaThiZ09NbkRDTGt3WGJ0SjdpV1pqMkJmenBQY0xhVWN1U3dBQUFBQWYwN1lCUUFBWUdKcXJYdHBiUzVqZUNoL25PUlJrak5YaGcweFQydDZHY1A5ZFpRV2VqbDNXUUFBQUFDZUUzWUJBQUNZa0JHTkxWcWtoVndXcnNyYXpKTHNmODgxWUgwT2t0eEphM3daK2w2N1hVcHh2UUVBQUFDV2hGMEFBQUFtWWlSamk4N1N4aFU5YzBWZXl0WEF5dFdta0hldmZMNmIxUVlxVHZLbjQ2UytYcjVlTFA5YklpanpLZzZUZkxpOGxrTTVUd3U4UEhFNUFBQUFBSVJkQUFBQVJxL1d1cFBXNW5KdHdOMjRTUEpsMmxnVi90UitXaEJpbnVTL0xIKzk2Z0RMdWx3R1k3N084ekRNV1l5bGV0RXNyZVhseHNENzhYa3A1YTdMQVFBQUFHdzdZUmNBQUlBUnE3WE8wNEl1ZXdQdXhyTzBOcGR0RDBCY0Jsam1TWDYwL0h4L2c0OTNzYnptZjBnTHdiellHTE9ONW1taGx5R3YrOU1rSDVSU3puMkZCQUFBQUxhVnNBc0FBTUJJMVZvUGszeVdaR2VnWFRoTDhpRGJPZkxtY3Z6UVpiQmxubUhIMkl6RldWcm81ZXZsNjdhT1E3cVo1TmFBYStJMExmQmlIQlVBQUFDd2xZUmRBQUFBUnFqV2VqL0pKd1B1d3FOczE4aWl5ekZFN3k1Zjk2M0NsN1pJQzc4c3NsM3RMN01rOTVJY0RMVDk4eVIzU3lsSGxpQUFBQUN3YllSZEFBQUFScVRXdXBQVzVuSTQwQzRzMGtZV25XejRxUlp1V2U4YXVneS9iRVB6eUR3dDlMSTcwUFkvTGFYY3Qrd0FBQUNBYlNMc0FnQUFNQkxMb012djBoNmU5M2FSMXVieWVJTlA4VzVhQzhkUEJqckgyK2dpTGZEeSt5VFBzcm10TDdPMHNVWTNCOXIrVVNubHR1VUdBQUFBYkF0aEZ3QUFnQkdvdGM3VGdpNDdBMngra2VSQmtyTU5QTFg3U1g2V0ZuTFp0ZElHZDVMa3E3VGd5eWF1dHlGYlhoWkpycGRTemkwekFBQUFZTk1KdXdBQUFBeXMxbm90eVcvU1AraXlxVzB1QWk3VHNLbkJseUZiWGhaSmJwZFNGcFlYQUFBQXNNbUVYUUFBQUFaVWF6MU04c1VBbXo1SjhuRTJKMlN3bStURENMaE0xV1h3NVRpYk0rcG9udVJYYWVHWG5zN1RHbDRFWGdBQUFJQ05KZXdDQUFBd2tGcnJSMGsrRzJEVGo1SWNiY0FwbktXRld6NU1hM05oTXp4TDh2dTA0TXNtck5GN3kzWGEwM2xhdzhzVHl3a0FBQURZUk1JdUFBQUFBNmkxZnBIa3NQTm16NUk4U0J0MU1tWHp0REZGTjZ5a2pYYVJGbmo1TXROdklMcVI1RTc2dDd6Y0xxVWNXVW9BQUFEQXBoRjJBUUFBNkd5Z29NdXp0S0RMVkVmRVhMYTQzSW94UmR0b2tlZGpqcVpxUDYzbHBYY0xrY0FMQUFBQXNIR0VYUUFBQURxcHRlNmtqUzA2N0x6cGgwa2VUL1MwN2FhTkticVIvcTBZak05Wld1amxjYVlaM0pxbE5iejBiaVg2dEpSeTMvSUJBQUFBTm9Xd0N3QUFRQWZMb012djBrYnc5SEtXNU9Na0p4TThaZk8wa011QjFjTTN1RWhySzNxVWFZNDRHbUtzMFZFcDViYWxBd0FBQUd3Q1lSY0FBSUExR3lqb010V3hSUWRwSVplNWxjTkxPazVyZTFsTWJMK0hHR3NrOEFJQUFBQnNCR0VYQUFDQU5Sb282UElveWRIRVR0V05KTGZTeGhiQjYxZ3MxLzZVUWkrenRNQkx6d1lqZ1JjQUFBQmc4b1JkQUFBQTFtU0FvTXRGV3B2THN3bWRKaUVYVm0yS29aZkQ1WDNRaThBTEFBQUFNR25DTGdBQUFHdlNPZXh5a2haME9abkk2VGxJY2lkQ0xxelAxRUl2QjJrdEw3Tk8yeE40QVFBQUFDWkwyQVVBQUdDTk9nVmVGa2srVG10MkdidDVXb1BGM09xZ2srTzAwTXZaQlBaMVA4bXYwaThFSnZBQ0FBQUFUSkt3Q3dBQXdKcXRPZkJ5bk5ib01uYTdhYTBWUWk0TTVYRmE2R1hzb2JCWmtzL1NnaTg5Q0x3QUFBQUFreVBzQWdBQTBNR2FBaThQMHg3Z2o5a3NyY25scGxYQUNGd2srVExKMFFUMjlWNlNHNTIySmZBQ0FBQUFUSXF3Q3dBQVFDY3JETHhjcEFWZGprZCt5RGZUZ2k0elY1K1JPVnZlUTg5R3ZwK0h5M3VvaDg5TEtYY3REUUFBQUdBS2hGMEFBQUE2V2tIZzVTTEozU1FuSXo3TWVaSTc2VGVHQlY3WEltME0yTm1JOS9GR1dzdExEN2RMS1VlV0JRQUFBREIyd2k0QUFBQ2R2VUhnNVN6Snh4bHYwR1dXRm5LNTRTcS9scE8wTU5QcjJvOFduZGYxS09NZWJYU1FGbmpwY1gwRlhnQUFBSURSRTNZQkFBQVl3R3NFWGs3U0dsMHVSbnBJTjlLQ0xzSVdmK29pejBNc2YxaiszdUtGLzdZdWwydHJsdWN0TysrKzhOOTQ3aXl0NVdVeDB2M2JUL0paQkY0QUFBQUFoRjBBQUFDRzhncUJsekVIWFhiVEdpZTJQVHh4dHZ6NCtzcm5pNUh2ODJVSVpqL0pYMTM1Zk5zRFM0L1RtbDdHZUwvMUNyeWNKN2xlU2xrRUFBQUFZSVNFWFFBQUFBYjBFb0dYTVFkZGJpYTVsZTBMUjF3R1dmNnd2RDZiRmdpNERNSE1rL3hvK2JxTjEzaXNMUy83YVFHei9UVnZSK0FGQUFBQUdDMWhGd0FBZ0lGOVIrRGxPTW5EakMvb3NtMXRMcGVCbHErWHJ4ZGJ1RXgzbDlmNzNlWHI3cFljOTFoYlhtWnBEUy9yRHJ5Y0pubXZsSEx1S3pVQUFBQXdKc0l1QUFBQUkvQU5nWmZqdEdhSnNkbUdOaGZobHUrM1RlR1hzYmE4OUFxOExOSWFYZ1JlQUFBQWdORVFkZ0VBQUJpSks0R1h5NGZyWXpKTGEzTTUyTkRUL3l3dDNQSnNlZjU1TlpkamozNlc5WWN2aHZJNHJXbHBiUGRsajhETFVTbmx0bVVPQUFBQWpJV3dDd0FBd0VqVVd0L0tPTU1rOHlTL3ltYTF1VnprVHdNdTJsdFc1N0wxNVNmWnZIRFVTWktQTTY1QVZLL0F5K2VsbEx1V053QUFBREFHd2k0QUFBQWpzQXk2ekRPK1FNbGgydGlpVGZFc3lWZkxWOVp2bGhaNCtUQ2IwL2h5a2Rid2NqeXk4OXdqOEhLN2xISmtXUU1BQUFCREUzWUJBQUFZMkVpRExyMGVudmR3a3VUTGFIQVoybTZTRzJtampuWTM0SGlPMDBJdkYxdDB6NTRudVY1S1dWak9BQUFBd0pDRVhRQUFBQVpXYS8zckpIODVvbDNhaExGRkYybGhoQzh6cnBFelBGOWpQMHNMdjB6WjJNWWE5UXE4dkYxS09iZU1BUUFBZ0tFSXV3QUFBQXlvMXZwT3h0VnljVFBKblFtZjBzc1dsMk9yYXhKbWFZR1hEelBkdHBlTEpBOHludEZZKzJtQmwzV0cxUmFsbFBjc1h3QUFBR0Fvd2k0QUFBQURHVm5RWlpia1hwS0RpWjdPNHlSZkpURmVaYm9PMGtJdjg0bnUvNk1rUnlQWmx4NkJsNk5TeW0zTEZnQUFBQmlDc0FzQUFNQUFhcTM3U1g0NGt0M1pUUnRidEQreDAyaFUwV2JhVHd1OVRISEUwYk8wbHBlTGtaekhkUWRlYnBkU2ppeFpBQUFBb0RkaEZ3QUFnTTVxcmJ0SjNobko3dlI0SUw1cUYya0JsOGNaUjZpQTlkaE5jaXZUQzcyY0pQazQ0d2hnelpmMzk3cWNKN2xlU3RHb0JBQUFBSFFsN0FJQUFORFJ5SUl1TjlKR0YwMkZrTXQybW1MbzVTTEozYlRneTZiZjU2ZEozaXVsbkZ1cUFBQUFRQy9DTGdBQUFKM1VXbWRKZmp5UzNUbE1DeEJNZ1pBTHlmUkNMeGRKSHFhTjJocmF6U1IzMXZqK1Qwb3BIMWlpQUFBQVFDL0NMZ0FBQUIwc2d5N3pKRytOWUhmdVpUcUJnY2RKSGtYSWhlZDIwNEliQnhQWjN3Y1pSK0JsM2ZmOTNWTEs1NVluQUFBQTBJT3dDd0FBd0pyVld0OUtDN3JNQnQ2VldaSmZMZmRsN0k3VFFpNW5WaERmWXA3VzlES1Y5ZnhnQlB2eDJSclAxM21TNjZXVWhhVUpBQUFBckp1d0N3QUF3SnJWV24rY2NRUmRQa3V5UC9MVGRaSTIrc1VEYzE3V2piVFF5KzdJOTNNTWdaZDFmeDFZcEFWZXppMUxBQUFBWUoyRVhRQUFBTmFvMXZwT2huOElQNFdneTBWYXlPWFlxdUUxMS9qTnRORExtQjB2MS9tUVk3bjJsMThQMWhYQSs3eVVjdGVTQkFBQUFOWkoyQVVBQUdCTmFxMjdTZDRaZURmMjAwWVhqYm4xNG5IYXlLSUxxNFkzdEp2a1hzWTkydWdreWQyQjEvczhMZkN5TGgrVVVwNVlqZ0FBQU1DNkNMc0FBQUNzUWExMUo4TS9jRjkzZzhPYk1yS0lkYm1SNU03STEvN1FnWmVieTNPMER1ZEozamJPQ0FBQUFGaVh2M0FLQUFBQVZxdlcrb01rZnozd2Jvdzk2UElveVM4aTZNSjZIQ2Y1bXlUUFJycC9ZN2cvSDJkOVk4TjJrbnhoR1FJQUFBRHJvdGtGQUFCZ3hXcXRQODZ3RDdISEhIUTVTZkpnK1FvOUhLU05OaHJyL1RCa3c4dHMrYlZpZjAzdmY3dVVjbVFKQWdBQUFLc203QUlBQUxCQ3RkWjNrdXdPdUF0akRybzhTbkswNVV0a2Qva3h5L09Bd1krdVhLK3J2Lzhxcmpia25DWDVQeS84L2ttR0haa3p0RmxhNE9WZ2hQczJkT0JsTjhtdjEvUTE0enpKZTZXVVU5OGRBQUFBZ0ZVU2RnRUFBRmlSV3V0dWtuY0czSVd4QmwzT2tueWM3V3B6bWVkNXNPWGR2SDZJWmRVV2FhR0tQeXl2eDltV1haZXh0cndNSFhnNVNQS3JOYjMzMDFMS2RkOGhBQUFBZ0ZVU2RnRUFBRmlCV3Vzc0xlRHcxa0M3c001MmhqZHhuT1JoTnJ0VlpILzU4ZTZWejZkbWtSYTQrTVB5ODdNTnZsNjdhWUdYK2NqMmErakF5NTBrTjlmMDNzWVpBUUFBQUNzbDdBSUFBUENHYXExdnBUMDRIeXBvTWt0cmRCbFR5T0lpTGVSeXZJR1hmSDk1dmQ4ZCtMcXYwMWxhNk9YcmJHNzQ1VERKclpIdDA3TzBGcVNoL0hwTlgwZk9rN3hkU2puM0hRTUFBQUJZQldFWEFBQ0FOMVJyM1UveXc0RTJQOGFneTBtU0I5bWM4VGl6dERFdjd5NWZaMXU0ekMvREw3OVBDMlJzaW5uYStKNHhYZFBqNWYwemhIVTJSRDBwcFh6Z093WUFBQUN3Q3NJdUFBQUFiNkRXK3BkSi9ucWd6WTh4NkxJcFk0dDIwNEl0UDhzMHh4S3QyN004RDc1TS9WcVA5VDRhS3ZCeWtCWUFXb2NQU2lsUDNENEFBQURBbXhKMkFRQUFlRTIxMWg4aytYR1N0d2JhaFh0SmJvem9sRHpJdE1jV3paYm5VOERsMVd4SzhHVnM5OVBESkk4MzdGeWNKbm5QT0NNQUFBRGdUUW03QUFBQXZLWmE2enpKemtDYkg5T0QrWXNrZHpQZHNVVTNrdndrcmRHQ04xc0h6NUo4bFRieWFLcHI0ZDZJOW1lb0FOa3NiWnpSN2hyZSs5TlN5bjIzQ3dBQUFQQW1oRjBBQUFCZVE2MzFoeG11L1dOTUQrUlBrbnljNUd4aWwzQTN5WWZMY3ptem9sZnVMTW1YYVVHTnFiVzk3S2VOTlJyTHV2aEZoZ21TN2FjRlh0Ymh2VkxLd20wQ0FBQUF2QzVoRndBQWdGZFVhNTBsbVdlWThVVUhTWDQxa2xQeExLMTVZa3BoaG5sYXlFV0xTei9IU1I1bFdvR28zZVY5Tm9aeFZrTTJKeDBtdWJXRzkzMWFTcm51MWdBQUFBQmVsN0FMQUFEQUs2cTEvampEdEQ2TXFYSGlPQzNvTWhVMzBoN2E3MXJCZzFta2hWNm0wdWd4Vzk1dll3aThuS1FGWG9ZSWx2MTZUZWZnZGlubHlHMEJBQUFBdkE1aEZ3QUFnRmRRYTkxTHNqZkFwbWRwRDUzSEVOWjRtT1R4QkM3WExLM0JSY2hsWEJaSnZrb0xURTNCdmJTdzFOQ2VwWTBNNjIxZDQ0eE8wOFlabmJzbEFBQUFnRmNsN0FJQUFQQ1NsdU9MZmp6UTVqOUxHOEV6dEFlWlJramhNRzFjMGN6S0hhMnp0S2FYS2F5bnNRUmVIcWVGellhNG45WXh6dWpUVXNwOXR3SUFBQUR3cW9SZEFBQUFYbEt0ZFo1a1o0Qk4zMGx5YytERHYwaDd5RDcyWUlKeFJkTXpsZkZHTjVmMzR0Q0dDcHl0YTV6UjI2V1VVN2NCQUFBQThDcUVYUUFBQUY1Q3JmV0hXYytEM3U5ekk2MVZZa2dYU2U0bU9SbnhKVHBJQ3lJSXVVelhJaTFRTmVaMXRzMzM0enl0WVdyVmprb3B0eTEvQUFBQTRGVUl1d0FBQUh5UFd1c1Awc1lYdmRWNTAvdHBENWVISE1VejlxRExmbHJJWlc2bGJvemp0TkRMeFVqM2J3eUJsNVBsZmRuN0hLMnJaZXA2S2VXcHBROEFBQUM4TEdFWEFBQ0E3MUZyL2Vza2Y5bDVzN08wb012K2dJYys1cURMTEcxYzBVMHJkQ05kcEkwMmVqelMvUnRENE9WWmtvOEh1TzkrbmRVM0tEMHRwVnkzN0FFQUFJQ1g5UmRPQVFBQXdMZXJ0ZTZrZjlBbGFRMEtnaTdmN0NESjMwWFFaWlBObHZmQXJ6UE8xcDdqSkE5R2NCL2NIT0Ryd3NNMXZPKzFXdXY3bGowQUFBRHdzalM3QUFBQWZJdGE2MXRwNDR0KzBIblRRN2RHakRYb3NyczhMMFlXYlovSGFVMHZZeHR0TklhR2wxOE1jSzkrdG9iNzhMU1U4cmFsRGdBQUFMd016UzRBQUFEZjdvZnBIM1RaVFd1MEdNcFlneTQzTTk2V0Q3YjMrbytoNGVWZVdoTk9UK3M0NXIxYTY2R2xEZ0FBQUx3TXpTNEFBQURmb05iNmc3UldsN2M2Yi9yWEdYWjgwZDBraXhGZENtMHV2R2lNTFM5RE43dzh6bnJHQzMyWHd5UzNWdnllMmwwQUFBQ0FsNkxaQlFBQTRKdjlNUDJETG9jWk51anlJT01LdWh4RW13dC83ckxsWlg5RSszUzgvQmp5bkJ4MDN1YmpKR2NyZmsvdExnQUFBTUJMMGV3Q0FBRHdMV3F0dTJrUDFIdUVYdVpKUGh2d2NCOWsySWYxVjgzU1JqbmRzQXI1SG8rU0hJMW9mKzROdUc0dmt2eE4ramJlcktQUlJyc0xBQUFBOEwwMHV3QUFBSHlMVXNwWmtuOUljcnJtVGMweS9BaVVzUVJkOXROQ1A0SXV2SXhieS9VeUc4bitETm1PTk1UWGtlTTFISzkyRndBQUFPQjdDYnNBQUFCOGgxTEtmNVpTVHROQ0wvKzZwczNjU3JJNzBDRWVKM2s0a3ROOUl5MjRzRy9sOFFybVNmNXVST3ZtNHlRbkEyMzdJUDNIR1QxYXczdCtZbGtEQUFBQTMwWFlCUUFBNENXVVV2NmpsUEpQYVMwRy83SEN0NTRudVRuUVlaMWtQRUdYZTh1UG1kWEdhNWdsK1hYRzBRaDBrUlo0dVJqd1h1cDVIeTJTUEZ2eGUycDNBUUFBQUw1VGNRb0FBQUJlWGEzMWgwbjJrcnoxQm05eitZQitpRmFYc3lTL3lIQVA1SytlQTIwdXJOSngyamlob2UwdjcrOGhQRXNMM1BTeW05YXVzMHFucFpTM0xXY0FBQURnbTJoMkFRQUFlQTJsbEg5SkcyMzBMMi93TmpjelROQmw2T2FKUzVkaEFFRVhWdW5HY2wwTjNSSjBrdUZDTjczSEdaMmxoWXhXU2JzTEFBQUE4SzJFWFFBQUFGNVRLZVUvU3lrblNmNVhrdk5YL0wvdko3azEwSzQvVEhzUVA2UjVXcVBMcnBYRUd1eG5ISTFCeDBrZUQ3VHRPK2tiK0htMGh2Zjh4RklHQUFBQXZvbXdDd0FBd0JzcXBWeVVVaFpKL2luSmY3emsvKzNPUUx2N09LdHZZSGhWTjlLQ0NET3JoelVhUytEbFlaTEZBTnZkVGQ5QTNWbFdIM2pacTdXK2J5a0RBQUFBTHhKMkFRQUFXSkZTeXIrV1V2NGh5V21TLy95Ty8rbk50R2FUM2hacEQ5NkhkRFBKUGF1RlRtWnBnWmVEZ2ZkanFMRmhOOU0zN1BONERjZjVTOHNZQUFBQWVKR3dDd0FBd0lxVlVrNlQvRU5hMDhHTFpobG1mTkZGMmdQM0lkM0xjSTAyYks5WmtsK2xOUW9ONVNMSjNZRzJmYWZ6Y1g2NTR2ZThWbXU5WmhrREFBQUFWd203QUFBQXJFRXA1VDlMS2YrYzFxWnlmdVUvM2NrdzQzdUdhcGE0ZEMvRGhnMWc2RFY0a21HYWxlYWRqM3NkN1M2M0xGOEFBQURnS21FWEFBQ0FOU3FsbkpkU0ZrbitPV1NHOXNBQUFDQUFTVVJCVk1rUE04ekQ5a2Rwb1p1aENMb3dGa092eGNjRDNZczlRM2JyYUhjNXJMWHVXYjRBQUFEQUpXRVhBQUNBRGtvcFowbit4d0NiWGlRNUd2RFFCVjBZbTZIWDVCQXRTN01rTnp0dTcvRWEzdlBRMGdVQUFBQXVDYnNBQUFCMFVHczlUSEt0ODJZdmtqd1k4TEFGWFJpcklkZm1VUGZsclNTN0hZL3hlTVh2K1V2TEZnQUFBTGdrN0FJQUFOREhKd05zODJHU3M0R09WOUNGc1J0eWpUN0xldHBQdnMrZGp0dDZ0T0wzMjFtR0JnRUFBQUR5bGxNQUFBQ3dYclhXKzBuMk9tLzJXVmJmclBDeURpUG84cktlSmpsUDh2V1ZYMTg2TDZVc3ZtTmRYYnZ5eTUwazgrWG5QMzNoMTN5N2U4dlhJZTZWUjBrTzBxOXRKY3Z0emRQR202M2IyZks4cnZKcndTOHo3RmcyQUFBQVlDU0tVd0FBQUxBK3RkYWRKSDlNQ3gvMGNwSGtiNWF2dmQzSTh3QUJ6NTJtQlF5K1RndTBMRW9wNXgzVzMxNWF1R0dlNU4yMFVWbzdMc2VmM1M5M2s1d01zTzE1a3M4NmIzT3hQTjRlOXBQOGVzWHYrZDUzaGNBQUFBQ0E3U0RzQWdBQXNFYkxWcGZlSTR3K1RtdDI2VTNRNWJsRldxamw3NU04N1JGc2VZVTF1WmNXZXZucDhuWFA1Um8wOEhJbnljM08yN3liUHUwdVNRdnpyTEpsNktpVWN0dVNCUUFBZ08wbTdBSUFBTEFtQTdXNlBFc0x1L1Mybi9aUWU3YkZsL3hKa3QrbWhWdE9KN1JPNTJtaGwxdlo3dEZIWjBsK2tmNk5TTE8wOXBPZTQ0eE9sc2ZhdzBHU1g2M3cvYzZUdkQybUFCa0FBQURRMzE4NEJRQUFBR3Z6VWZxUEwzbzR3SEh1Wm51RExrK1MzRTd5WDBzcEg1UlNqcVlVZEVtU1VzcWlsUEo1S2VXOUpHK25iK3ZIbUZ5dTQ5NHVranpvdk0zOXRDYW1IcDZsQllsV1pTZkorNzY5QUFBQXdIWVRkZ0VBQUZpRFphdkxMenR2OWxGVysxRDVaY3pTV2h1MktlaHltdVRUdEhhSnk0RExSclJNbEZKT3J3UmYza3Z5ZVZxVHhyYll6ekNqdUJicFAzcnNWc2R0ZlRuaGZRY0FBQUJHU05nRkFBQmdQWHEzdXB3a2VUekFjZDVKQ3doc2c2ZEpQaWlsdkYxS3VUKzFCcGRYdFd4OHVadlc5bkk3TGVTekRXNGt1VG5BZGgrbTd3aWwzZlJyZHpsZThiRmRxN1h1K1RZREFBQUEyMHZZQlFBQVlNVUdhblVaWW56UnpmUjdXRDZrbzdRV2wrdWxsQ2ZidHA1TEtlZkw5cHEzazF4UEMvMXN1anRKNXAyM2VaYld6dFJUcjRhVWk2eSt1ZWJRZHhzQUFBRFlYc0l1QUFBQXE5ZTcxZVU0YlF4S1QvTzBRTUFtTzBvTHVkemU5QmFYbDFWS2VWcEt1Wjd0Q0wwTU1aN3JjZnFPSXR0TnYxQ1BVVVlBQUFEQXlnaTdBQUFBck5BQXJTNFg2ZC9xTWtzTEFteXFvd2k1ZktjdENiME10YzRmZE41ZXI5REl5ZkpqVmZacXJYTjNJd0FBQUd3bllSY0FBSURWNnQzcThtVmE0S1duSVJvdmVuaWE1THFReTh1N0VucTVuV1FUejlrOC9jZmxMTkszcVdtZTZiYTcvTkpkQ0FBQUFOdEoyQVVBQUdDMWVvN1dPRXRySWVucE1QMGVqUGR5bnVSMktlVjZLZVdwSmZ6cVNpbEhTZDVMOHVtRzN0TzkxM3p2ZHBjUE8yM25XVlliem52ZjNRY0FBQURiU2RnRkFBQmdSV3F0aDBuMk9tN3lVZWREM0UvZk1FOFBSMmtqaTQ2czREZFRTamt2cGR4UDhuWTJiN1RSdmZSdE16cExjdHh4ZXdkSmRqdHM1eUl0OExJcU83VldnUmNBQUFEWVFzSXVBQUFBcTlOenBFYnZoK0d6dEFmK20rSTB6MGNXblZ1NnExTktPVjJPTnJxYjFwcXpDWFlIV1A4UDAzZEVXYThnMjFjcmZyK2Z1K3NBQUFCZyt3aTdBQUFBckVDdDlWcjZqanJwUGVia1ZscXp5eVk0U3ZLZWtVWHJWVXI1UEcyMDBhYWM1NFBsUnk4WFNiN3NmSHc5Mm1zV2FXRzlWZEhzQWdBQUFGdEkyQVVBQUdBMWVvNzNXU3cvZXBrbnVia0IxK2c4eVFmYVhQcTUwdkx5NllZY1V1OXhSby9UcjkxbGx1UkdwMjBaWlFRQUFBQzhFV0VYQUFDQU4xUnIzVXR5MkhHVGp6b2Y0aWFNTDFxa3RiazhzV0w3SzZYY1QzSTkweDlyMUh1Y1YrOTJsdzg3YldmVngyU1VFUUFBQUd3WllSY0FBSUEzZDloeFc3MWJYUTZUN0U3OCtod2x1VjVLT2JWVWg3TWNHL1YyNS9XN0RnZnBPN0tzWjd2TGJxZGpPMHR5c3NMM3UrWU9Bd0FBZ08waTdBSUFBUERtZW80dzZ0bnFzdHY1Mk5iaHJyRkY0MUZLT1MrbHZKY1dRSnF5bnVPTWVyZTcvS3pUZHI1YTRYdnQxVnJuN2pBQUFBRFlIc0l1QUFBQWI2RFcrbjZTdlU2YjY5M3FNdVh4UmVkSlBpaWxmRzZWams4cDVYYVN1eE0raE4wa056dHVyMmU3eTQzMENmSThXL0g3M1hKbkFRQUF3UFlRZGdFQUFIZ3pQUit3ZnRWeFc3MUh0YXpTZWRyWW9pZVc1M2d0ZzBpM0ozN3Y5eHJ4ZFpIa3VPT3gzZWl3RGFPTUFBQUFnTmNtN0FJQUFQQ2FhcTA3U2Q3dnRMbXo5SHZZUFV0eVo2S1g1VExvc3JCQ3g2K1VjcFRrZytWMW02S2U3VWM5UnhsOTJHazdxd3p3eld1dGUrNHFBQUFBMkE3Q0xnQUFBSy92c09PMkhuWGMxczMwYTZ4WXBVV1N0d1ZkcG1YWndITTkwd3k4ek5PdkFhbG40RzAzeVg2SDdheDZsTkUxZHhRQUFBQnNCMkVYQUFDQTE5ZHJoTkZGVnY5UStOdk0wcS9WWVpVV2FZMHU1NWJsOUN3RFNyZVhhMzFxZXJZZzlXeDMrVm1IYlp3dFAxYmw1KzRtQUFBQTJBNXZPUVh3YXBhMXlGYy9McjJiWk9mS3J4ZEovdjNLcjU4bVNTbmxxYk1JQUxBeGZ5N3MxZWh3bkg0aGdEdHBnWmNwMllpZ3k1V2ZOWFplV0Zzdi9xeHhtdVIvdjNEODUwa1dVejBIdGRaM2xzZHdOOGxuRTF1RCswbHVwRS9yeXNueWV2ZjQybk1qeWNNTzIzbVcxaWExQ3RkOGR3SUFBSUR0VUp3QytIYTExbm5hWDVhOW05WFdVNStuL1FYbDN5OWZuL29YcUFBQWsvdXo0djBrbjNUYTNOOWt0ZTBIMzJZM3lkOU43RktjcHdWZEZoTmJQMWQvMXRqTDZoN1NYLzZzc1VqeTlmSm5qZE9SbjR0MzhxZGpzK1pwZ1pjcE9WdmVwejNjU0hLdjA3WSt6dnBicFZaOXZkOHp5Z3dBQUFBMm43QUxYRkZyM1VueWZscjE4Ylg4NmIrZVhMZEZXdnZMYjdXL0FBQk00cytPZjh5Zk52MnR5N08wQjg0OTNFdDdrRDRWa3dtNkRQeXp4dW1WbnpXZWpPeTh2QmgwdWRRejBMRXFEOUtuM1NWSi9tZjZ0TjhjTDQ5clNzZnphU25sdnU5U0FBQUFzTm1FWGRoNkwveWw4L3NqMmEzekpFK1MvSzEva1FZQU1Nby9RODZUL0dPbnpmVm9Wa2ltMmVveTZnYUhrZjZza2VYUEdvK0dEcjU4UjlEbDBzMjBzVnBUMGJQZDVVNVdOL3JudTF3aytlOGR0clBLb04zVFVzcDEzNmtBQUFCZ3MvMkZVOEMycXJYT2E2MWZKUGxqa2k4eXJyOTgza2x5bU9RZmE2MS9yTFYrdFB5TGNnQUF4cUhYbngzUDBpZm9raVMzSm5ZTmJvODE2SExsWjQxL0crSFBHcGZyOXplMTFuK3J0WDVXYTkwYjRCeDlYOUFsU1I2blgxUEtLdXltWHpQU2w1MjJNMHR5MEdFN1g2L3d2YTc1RmdVQUFBQ2JUOWlGclZOcnZWWnIvVjNhdjhROVROLzY4TmV4bHphLy9JKzExdnREL0VVMEFBQi81dWVkdHRNcjZOTHpJZjBxZkY1S09Scmh6eHJ2di9Denh0anRKUGxvK2JQR0Y3WFdhNTNPMDhzRVhTNDlTQnY1T2hXOVFtTm5IYy9MVHpwc1k3SGlOWFl0QUFBQXdFWVRkbUZyWEFtNS9DN1QvSmRlTzBrK1NmdUw2TTgwdlFBQURQYm55cjBrODA2YjY5WGVNS1ZXbDZlbGxMc2ovRm5qajBsK2srbTJTaHdtK1YydDlYZkxNVjNyT2xldkVuUzU5SEZhdUdNS2VnYkh2dXEwblI3TkxtZEpUbGI0ZmxPOUR3RUFBSUNYSk96Q3hxdTE3dFZhZjVQcGhseSt5ZVcvdnJ6dkNnTUFkTmRySk0xSitqemduMlU2clM3blNUNFkwYzhhVndQMWV4dXl2cStsalZQOVl0V3RrcThaZEVtU2k3VEF5MVQwQ284OVc1NmJIbDhqOWp0c1o1WHRMai8xclFvQUFBQTJtN0FMRzIwWkJ2bkg5SHNnMGROT2trOXFyWDlVMFF3QS80Kzl1d2VSNU16VFJmKzhnNHlCSTlnY1dEZ3lGaWFibFhFOGxlQjZaMEhaMW82bmFzNDYxMUsyY2ExcnFOdGFhK2x1anJWV3Q0eTFxOXE2MTloRGwrQWFjNnpPQmkyTXNkQWxHR09NWHBRRFkvUUJ3ZVpDSDVBaGVLOFJVZXBTVFg5VVZVWkVSbWIrZnREMGpLVEt5UGhIdkZIeDhjVC9oVUVOTllYUlVGMWQvbTZMYW4rcmxMSWF3WFhHcE5aNmxOMEsxRjgwVHhONnVkOVJ6YTRiZERueklzay9iVW50UHNvdzNaOWVaYmlwenY1MmdHVjgyK0ZudVVZR0FBQ0FIU2Zzd2s2cXRSN1VXcCtubWZabjE2ZjdtYVpwTjI1cUl3Q0Evczh6SnhudUllcFFEN0gvMjVhVS8wRXBaVEdDZmVBd3lYZHB3aUM3N2l4Zy8zeWRxWTA2Q0xxYytlZDAyLzJqVDBOMWQvbVhnWll6UkhqbnRPT3hlaEFBQUFCZ1p3bTdzSE5xclhmU2RIUFp0eHRiZDlLOGVUbXpGd0FBOUdhb2M2MmhwaWY1VFpvcFNzYnV0SlJ5ZjhQWEdaTjJldFFuMmYxQS9VVUh1V2FYbHc2RExtZitZYUN4MFVYTlB0cWhZOFhIQTZ6UHF6UWRmTGJ0ZUEwQUFBQnNnTEFMTytQY3plZUhlMXlHYVpvdUwvZnRFUUFBdlJocUNxT2h1alZzUTFlWFZaSmJHNzdXT01qdVRvOTZGZmRxclU4djIxR3loNkJMMGdRaS9uRkw2alhVK0JxcUM5UzJkWGY1eEs4c0FBQUEyRjNDTHV5RTl1YnowN2o1Zk9aZXJmV0phWTBBQURvM0cyZzVRenk4L3JqOU0zWmZsVktXRzd6V21LY0p1a3p0L2orTmdlL2VOMFZNVDBHWDgrUGpteTJvMVc4R1dzNVE0Ymdod2lQZmJ1SHhHZ0FBQU5nQVlSZTIzcm1naS9tNGYrNHdUWmNYZ1JjQWdJNlVVbTRrdVpua1VicnRRSERlVU5PU2JFTlhsNDFPWDFScmZaamt5SjcvWnlacHBqV2F2NlZ1ZlFaZHp2eFR4aitkMFljWkp2QXkxREhqYjRZWTh4MSsxdFQxTUFBQUFPd3VZUmUyMnJtM0xOM0Flck9EWE9LdFN3QUFMcStVc2lpbDNDMmxmSnJrVjJtbTJEbE9zdXhvRWQ4T3RDcC9zd1hsdnJ2QmE0MmpKSGZzOGU5MFZHdTljNkZ1UXdSZGt1Umxrc2RiVUtPL0hXZzVRM1M2K1REOWQ0TjYxVzdiTHErSkFRQUFnQjBrN01MV2FvTXUzcko4djBtYURpOXU4Z0VBZEt5VXNpcWxuSlJTYnJkZFgyNGt1WjNrSk1ucW1oODd4RVByMzZSNWNEMW14NldVeFFhdU15YTExdWRKNXZid1MzbllCb09HRExxYytlY2tMMFplbjRPQmF2THRnT3ZUdHk2N3U4d01VUUFBQU5oTndpNXNKVUdYS3hONEFRQVlRQ2xsV1VvNUxxWGNLcVg4S3NtblNSNGtXVnp5STE2azI2NEdiL05mUjE3S1ZUYlExYVdkOHNRVXFWYzNyN1UreWJCQmx6UC90QVgxR2FLTDBqY0RyY3NuQXl6ajM3YnMrd0lBQUFBYklPekMxaEYwdVRhQkZ3Q0FnWlZTVGtzcDkwc3BOMHNwSmMyVVI0L3k5czRGcHdOOHJROHovaW1NdmlxbHJJWmNvS0RMMmc2VC9QMEdsbnM2MExoWngzOGJZQm12QnFyREVPT2p5MjQ5VTBNVEFBQUFkcE93QzF1bERXbzhWSWxyT3d1OFRKVUNBR0I0N1pSSGQwc3BueWI1VlpvcGo0NlRMTnYvNUY4RytCcGpEN29zMHdTQ2huWVVRWmQxL1NhYm1mN3BIMGRlbDQrU2ZEekFjb2FZeXVqRDlOL0JwOHZRampFTkFBQUFPMHJZaGEzUkJqU2VwZ2xzY0gyVEpFL2FOMWNCQU5pUVVzcXFuZkxvZGlubFJwb3BqNGJvekREMktZd2ViS0NyeTFHYXppU3M3NHMwb1pjaHZVenkyNUhYNVc5Ny92eFZrdjkzb0hYWnF1NHV0ZGFaWVFrQUFBQzdSOWlGcmRBR001NUUwS1VyQjIwOUFRQVlqMWNETEdQc1V4Z3RTeW5IQTE5cjNNbG11cEhzc3IvUDhCMDFIbS9CTlZqWHg0cy9KZmw5a20vYUtkTitteWIwMHJlL0htQVpwaklDQUFBQTNrblloVzN4TU5vUGQyMVdhNzJ2REFBQW96RkVzSHZzVXhnOUdISmhiY2NIMDZUMjQ3K24vK2x1emh0N2Q1ZVAxNnpIaiswNi9pSEo3MG9wLzFwS2VWRksrYjZVOHVPNS8yNHh3TG9NY1czK3Z6cjhyS25oQ0FBQUFMdEgySVhScTdYTzQwM0x2dHpUMGhrQVlCVG52QitrNmJyU3R6RlBZYlFhc3F0TE8wMnFib2Y5K1RCTjRHVklZKy91Y3RXdzJmZHBPcHo4YXlubG0xTEtIMG9wTDBzcFA3empaNTROc0I0ZkQ3Q01McWQwKzh4d0JBQUFnTjBqN01Lb3RUZWd2V25acnlmdE5GRUFBR3pPVU9kalkrNlcrTlhBeXp1S2FWTDc5bkdTLzN2QTViMU10eUdKcm4zeW5uLy9Lc2t5eVdrcFpWRksrWDBwNVUrbGxLdE1jYmJZa1dPSmFZd0FBQUNBZHhKMlllemNnTzdmcEswekFBQ2JQU2ZyMjBHRzZSNXpYWStHV2xBN25lZk1iamVJdjh1d0lhc3hkM2U1Mk5ubGh5Ui9Tdkw3Sk4rMFV4TXRTeW1yNnk2Z2xESlUyS2Z2N2k2djJqOWRtQnFHQUFBQXNIdUVYUml0ZHZxaW1Vb000ckRXZXFnTUFNQ0l6Z1VQYXEzN05NWE1FQ0dVTVhkMU9WN25BZjhWOTYxcGtudEcyYUQrUHNNRnJVN1RkSGdacTRNa2Ywanl1MUxLNzBvcEwwb3AzNWRTZnV4d0dZc0IxdU0vRDdDTUZ4Mk8rd1BERUFBQUFIYUxzQXVqMUU2clkvcWlZVDAwblJFQU1KSnp3WG1TcDltdkRuOURyT3NuSTE3L0lidHg2R280dkkvU2RIZ1p5djhZY1MxK1hVcDVXVXI1b2NkbFBCdGdQVDRlWUJsZFRtWGtXaGNBQUFCMmpMQUxZM1V2YmtZTmJacmtqaklBQUp0VWE3MlRQWnZLc3RZNlZNZUxzWFkyV0paU0ZnUFZlaDdkSXpmbGl6U2hseUg4ZHNSMUdHTC9HMklxb3lHT0ovOTd5K29PQUFBQURFalloZEZwMjRvTFhXekd2YmIrQUFDYk9BODh5bjUyOTl2M0tZeStHbWovMGoxeTgvNStvT1c4U3ZMTlNHdHdNRUJIemRPQjF1V2pMVnFQdnpEOEFBQUFZTGNJdXpCRzk1UkEvUUdBL1ZGcm5kUmFueWVaNzJrSjlqM3NjakxRY3U1RTk4aE5PeGh3WC95Zkk2OURiMG9weXlTckFkYWo3N0RMcXowNUJnSUFBQURYSU96Q3FMUmRSZVlxc1ZGejNWMEFnQUhQL3c2U1BNMStQNGdjSXV6eXlValgvYlI5TU4vM2ZqWko4cVVSTndwZkRMU2NiOUp0V0tKTHN5SEcxZ0RMNlB1NC9jSndBUUFBQU41RzJJV3gwVlhFZGdBQTlrU3RkUlpCbDJTWWJpTWZqM1RkSHcrMEhGMWR4bVBJN2k1am5jcm9zd0dXTVVUWTVUOE5zSXlYSFgzT3pOQURBQUNBM1NMc3dtam82aklxdXJzQUFIMmYrODNUQkYwbWUxNkhYdzZ3bUk4elRQZVk2emdab01hNnVvelBVTjFkdmgzcCtnOFI5dm5qUU1lV3ZyMDBYQUFBQUlBM0VYWmhUT1pLWUhzQUFMdXYxdm93eVpGS0pFbUdDTHQ4Tk5KMUgyUUtvL2E4VmxlWGNSbXF1OHRZTzd0TUJuaTVZSWpPTGtNY1d6cWJpcXJ0SmdZQUFBRHNDR0VYeHVRTEpSZ1ZiNzhDQUoycXRVNXFyVS9TVENsRFk1K25NRm80cjkxcmZ6dkFNbDVsbU5ESGRmUWQ5dG1Wc011L0dTb0FBQURBbXdpN01BcTExc01rVTVVWWxVazd2UUFBUUJmbmU1TTAweFlkcXNiUGZEREFNajRaNmJwLzdUcGpyLzBtdzB5dnRaZFRHWlZTVmtsV0E2ekhSMXUwenprV0FBQUF3QTRSZG1Fc1BsY0Myd1VBMkUyMTFvTWszMldZYVV1MnpSQVArMGY1TUxxVXNuQSt1L2QrTThBeXh0clo1Wk1kV2ZlUHRtZ2Rwb1ljQUFBQTdBNWhGOGJDRzc0ajNTN3RXOWdBQU5mU2RvcDdtbUdtNjlsR1EzUjJHV1BZWlRIQXZqZEpNcmVMamRvUVV4bU5OZXd5SFdBWk9yc0FBQUFBTzB2WWhZMXJXNHQ3K0RGZWdrZ0F3SFhQOCs0a09YS3U5MDU5ZDNZWmF6ZWRaODVqU2ZKeGhnbExqREh3TXNUWUhHSUtwNzYzMzhzT1Arc1RRdzRBQUFCMmg3QUxZL0NaRXRnK0FNQnVxYlVlSlhtb0V1K3MwUkJkWFQ0YzZlb1BFVDR3aGRGMitKc0Jsdkh0U0k4QjA1NFhzZHFCL2FQTHNJdmdKUUFBQU93UVlSZkd3QnVYdGc4QXNDTnFyWk5hNi9PWVB1WXloZ2lpZkR6U2RSOGk3REt6aTIyRi96ckFNbDZNZE4ybk96RE9kRXNCQUFBQU5rTFloWTFxMzJTYnFzU29UV3F0QjhvQUFGemkzTzRneWZPTWQrcWNmZlNmUnZpZFZxV1VaYy83NGl5Nk9HeUxJWTRYTDBlNjdxNkZoOTEramdrQUFBQ3dRNFJkMkRRUFFyYkRUQWtBZ0hkcHd3VlA0K0h0VlF6eDRIV01uVjEwZFdIbzY4Szk3T3hTU2xuc3lQN3hja3YyTXdBQUFHQkF3aTVzMm1kS1lEc0JBTnV0MWpwUEUzVHgxanlYTVVUWXhmbnJkam5Za2YzdXF2N0N0Z01BQUFDNG5nK1VnQTF6WTh4MkFnQzJXSzMxS01sY0paekhYY0YvT0gvbGdrOEdXTVlyNHhNQUFBQmdkK2pzd3FhNXViY2Rwa29BQUp4WGE1M1VXcDlFMEdVZCs5b0paOUh6dmptTkxrUGJab2pwdHY3TmVOdGFMd3dSQUFBQTRDSmhGemFtMWpxSm05RGJ0TDFtcWdBQXRPY0YwelRURmgycXhxaDl1S2ZyTFZDL25mdHEzL3Vyemk3YmU2ejUzeDMrL25KOEFBQUFnQjBoN01JbXVjbTBYUVNUQUlDekI0WFBuY3R0aFkvSCtLVktLUXZYR1d4Z2Z4MWpkNUNKYmFmbUFBQUF3UFVJdTdCSmJqSnRGdzhOQUdEUDFWcm5hVHE2T0k5anpINnRCRnZwWXlYb3hVb0pBQUFBZ0YwazdNSW1DVThBQUd5Sld1djlKRWNSZE9uU1B0WnlPY0F5cG5hdHJkVDNWRGd2OXJTdTM5cTFBQUFBZ0YwazdBSmMxaWRLQUFEN3FkWjZsT1NlU3RDQjVRRExFTWphVHYrNTU4OS9OZExqcTVkQUFBQUFBSzdoQXlVQUxzbERBd0RZTTdYV1NacHBpenlNM1U0SDFwc3Q4cEhyTE43aWxSSUFBQUFBRituc3dpYnBGQUlBTUZKdHQ0SG5FUndBWUxOZUtBRUFBQUJ3a2JBTG0rUU5OZ0NBRWFxMXp0SjBkSm1xQnJCRFhpb0JBQUFBd0c0UWRnRUFBSDVTYTUybkNib0lKdE9IbFJLd1FjSXVBQUFBQUR2aUF5VUFBQUNTcE5aNmxHU3VFdlRvV3lWZ2czNmY4UVd1Qk1BQUFBQUFya0hZQlFBQTlseXRkWkxrU1pLWmFneW5sTExvZWJ2YW52QnovMUJLV1NvREFBQUF3UFl6alJHYjVBMDJBSUFOcTdWTzAweGJORk1OQnZDSkVnQUFBQUFBNnhKMllaTzBNQWNBMktCYTYwR1M1MGtPVklPQlRKU0FEZnBCQ1FBQUFBQjJnN0FMY0ZsTEpRQ0EzVkZybmFjSnVnZ2ZBUHRDMkFVQUFBQmdSd2k3QUpmMVJ5VUFnTjFRYTcyZjVFZ2xkdDdLZWdNN1FQY3hBQUFBNE04SXU3QkpDeVVBQUJoT3JYVlNhejFLY2s4MTlzS3A5V2FMbU9ZV0FBQUFnRXY3UUFuWUlHOWNicGVGRWdEQTlxcTFUcEk4alRmazJTejdINXYwb3hJQUFBQUE3QWFkWGRpWVVvbzNMcmVMY0JJQWJLbGE2MEdTNXhFMFlQTW1BeXpqbVRKdnBSY0RYSU8rMnNPNmZtYlhBZ0FBQUhhUnNBdWJ0bFNDN1NDY0JBRGJxZFo2bUthankxUTFHTWsrMlhmZ1JVaDdPNzFTQXRzT0FBQUE0TEtFWGRnMEFZcnRzRkFDQU5nK3RkWjVraWNacHBzR0kxTktHZXM1WE44ZGhseGp1RFo4RTRHTS9yellvdSs2dExrQUFBQmdOd2k3c0duZktzRlc4TUFBQUxaTXJmVW95WkZLTUVKOWg2K2N1MjZmbHdNczQwZmpiV3Y5ZFZjZlZFcFpHbTRBQUFDd0c0UmQyTFNGRW15Rlowb0FBTnVoMWpxcHRUNU5NbGNOTXM0cGZYcnQ3RkpLV1VYM2htMHpSRUJwWHp1N0hPekFPbnhvaUFBQUFBQVhDYnV3VVNOdXJjN1AyVTRBc0FWcXJkTWtUNVBNVklQV0dMdWMvTnI1S3hmODJ3REwrRUdaZTJGNktBQUFBR0FqaEYwWWc0VVNqTnBwKzNZc0FEQml0ZGFESk0rekcyL3hzOXVHMkVkTmw3cGwxeHdETEdQdlFobHRBTEp2TCt5K0FBQUF3Q1lJdXpBR1h5dkJxQzJVQUFER3JkWTZUeE4wbWFnR0Y0eHhPc29od2k0bk52M1dlSlZoQWhQNzJJRmt1aVByOGJGcld3QUFBT0FpWVJmR3dJM29jWHVzQkFBd1hyWFdoMG1PVklJdDIyOTdEYnlVVXBaSmxpcTlGYjRaWUJrL2xGSitWT3BldkJ4Z0dSOHFNd0FBQUhDUnNBc2IxOTZJUGxXSlVWcVdVbXdiQUJpaFd1dWsxbnFVNUk1cThBNkxrWDR2M1YwNE04U1VVNi8ydExhekFaYnh2K3pDQUFBQXdDWUl1ekFXdW9mWUxnREFKZFZhSjBtZUpwbXJCdSt4R3VuMytzeTVMSzBoT3J1OFV1YXQ5WEdIbitWRkRnQUFBTmdod2k2TWhiY3V4K2xZQ1FCZ1hOcnBYNzdMTUoweDJISWo3dEkzRzJqZGwvYUNVZnR0aGdtaXJQYTB2a09FeXZvK3huUTVoZEYvR0hJQUFBQ3dPNFJkR0lWMktpT0JsM0ZadE5zRkFCaUpXdXRobW80dUU5WGdDc1lZZUpuV1dxY0RMTWMxeHJqOXkwRFhtL3NhZHRtRjN4VWZHaVlBQUFEQW13aTdNQ1pmS1lIdEFRQzhXYTMxVHBJbkVYVGg2cFlqL1Y0ejU3Ujc3V1dHbWNKb3RjYzFIcUlEMkl1ZVA3L0xhWXdXaGgwQUFBRHNEbUVYUnFPVXNvZzI0Mk94TEtWNEN4WUFScUxXZXBUa29VcHdUZCtPOUh2MVBzVksyNmx3WVJjWXBmODUwSEsrMzlQZkc5T0JGdlhLcmd3QUFBQnNnckFMWS9OQUNXd0hBS0JSYTUzVVdwOG1tYXNHYTFpTTlIc2RPcmZkYS84ODBITDJ0YlBMZElCbHZCaGdHWjkwK0ZsTHd3NEFBQUIyaDdBTG8xSktPWTRiVUp1MmJMY0RBTEJCdGRhREpFOHp6RlF2N0xiVGtYNnZTYnVmOTMyTnNYQ05NVHEvelRBZFFYNG9wZXhyNTVFaGZuZHNWVzNiVGs4QUFBREFqaEIyWVl5OGVibFpkNVVBQURiclhORGxRRFZZVnlsbGxmR0dQYjV3amJHWEhnKzBuTy8zdU1hL0htQVpRMHlSMXRYdndaVmhCd0FBQUx0RjJJWFJhYnVLTEZSaUl4YWxsQk5sQUlETnFiWE9renhQTWxFTnVqelBHK24zR21RcUl4MGtSK1czU1Y0T3RLeVhlMXpuQS9YOW1WTkREd0FBQUhhTHNBdGo1YzNMemREVkJRQTJxTmI2TU1tUlN0Q0RiMGY2dmFaRFRHWFV1bTAzMkxoWEdhNnJ5ejVQWVpUc1J0aWx5M1hRMlFVQUFBQjJqTEFMbzFSS1dTUTVWb2xCUFNxbGVOc05BRGFnMWpxcHRSNGx1YU1hOUdReDR1LzI1WURYR0F1N3drYjlqd3pYRFdSdnB6Q3F0YzRHV3RTTG5qLy93dzQvNjF2RER3QUFBSGFMc0F0amRqZmV2aHJLTXJycEFNQkcxRm9uU1o0bW1hc0dmV2xEeldNOXR6NXN4OEZRMXhoc3hzc2svenpnOHY2MHg3VWVxcXRMMzUxelB1N3dzOXhiQUFBQWdCMGo3TUpvbFZKVzBXcDhLTGZiZWdNQUEycW5iL2t1d3p5WWhNVkl2OWNreWVGQTF4aW5FZkxlbEg5Sy8rR0lNNnRTeWc5N1hPdFBCbGpHRUIxNi9yckR6OUxGRkFBQUFIYU1zQXVqVmtvNWllbU0rdmFnYmVrT0FBeW8xanBQMDlGbG9ob001Tm1Jdjl1WEF5N3JVWnJPaGd6bm0vYlBVRjd1ZWIySENGQU9NUzNRUngxK2xqRVBBQUFBTzBiWWhXMXdOOTdDNnN1aWxISmZHUUJnV0xYV08wbU9JdWpDc0U1Ry9OME9hcTJ6SVJiVWRqUzhaWGNZektzay96amc4bjRvcGV4dDJLV2RFbXlJc011TEFaYnhjWWZqZm1rb0FnQUF3RzRSZG1IMHprMW5aSnFkYnJuSkR3QWJVR3M5U3ZKUUpkakFlZlV5NCs1dThNV0F0VENkMFhEK0ljTk5YNVRvNmpJYmFEbDloMTArN3ZDekZvWWhBQUFBN0I1aEY3WkNlelA2dGtwMFpwWGtaaHNrQWdBR1VHdWQxRnFmSjVtckJoczA1dTR1ODFycmRNQnJqUHZ4RUx4dmp6TnNsODRmay94cHoydisyUURMZUpYK1EwV21NQUlBQUFEZVNkaUZyVkZLT1luQVMxZHV0d0VpQUdBQXRkYURKRTh6ek5RUzhDNWZqL3o3M1J0NGViZmlRWGhmVHBNY0Q3ek1QNVZTZnR6enVzOEdXTVpXVFdHVTVJK0dJd0FBQU93ZVlSZTJTaW5sT01QZk1OMDF0OXZnRUFBd2dGcnJMSUl1ak9kOGVwRnhUdzg2ZEhlWHM2azlkVHpzMW9zMDB4Y05hZSs3dXRSYUp3UDlydmwyZ0dWODB1Rm5lZEVEQUFBQWRwQ3dDMXVubEhJN0FpL1hkYnNOREFFQUE2aTF6dE1FWFNhcXdZaU1QZmc4YUhjWFU2WjI3bFdTZjJ6L0hwS3VMc04wZFVtRzZlelM1VFJHd2k0QUFBQ3dnNFJkMkVvQ0w5Y2k2QUlBQTZxMVBreHlwQktNME5pbk1ocTB1MHQ3ZldISzFHNjhTbkkzdzRRaHp0djdyaTZ0endaYVR0L2hrUS9UWWRpbGxMSzBhd0FBQU1EdUVYWmhhd204WEltZ0N3QU1wTlk2cWJVK1NYSkhOUmpwZWZSSitzeGJ2Z0FBSUFCSlJFRlV4ajl0ejhNTjFPVTRBaS9yMkZUUUpkSFY1Y3poQU10NGtmNjc5blE1RmRQQ2JnRUFBQUM3U2RpRnJkWUdYdTZxeEZ1dGt0d1VkQUdBWWRSYUoybW1MVHBVRFVadTdPZUhoN1hXZzZFWEt2QnliWnNNdXZ3UVhWM1Nka09hRHJDb0lhWUUrbmpMdmk4QUFBQ3dBY0l1YkwxU3lxTTBONlJYcXZFenl6UkJsNFZTQUVELzJnZnozNlhiTjlLaEw0KzM0RHgySXcrcEJWNnViSk5CbHlSNW9hdExrdUZDbHQ4T3NJeFB0dXo3QWdBQUFCc2c3TUpPYUc5STMweHpZNXprSk1tbm0zcEFBQUQ3cHRZNlQ5UFJaYUlhYk1uNTgra0l6NTFYU2U2V1VtNXNPckI5THZBaVVQOXVtdzY2ckVvcDM5c01TWkl2QmxxT3ppNEFBQURBS0FpN3NEUGFHL2FmcGdsNjdMTzdwWlJicFJRMzVnRmdBTFhXTzBtT0l1akM5dmxxUk4vbFVaSWJiZGZHc1Z4ZkhLY0oxRHV2ZnJNWFNmN1BiQzdva2lSL3NCbCtta0x2WUtCdC9xcm5aWHljNU1PTzd4TUFBQUFBTzBqWWhaMVNTbG1WVW01bFA5L0NQRTNUemVXUlBRRUFobEZyUFVyeVVDWFlVc2NqK0E2TDloejI3aGpEMnUyRDhodlJIZUtpMzZicDZQSnFnOTloV1VyNXdhWklNdHdVUnY5Zmt0K2xDUmw5bjZTUDZhTzZETzBzN0JvQUFBQ3d1NFJkMkVudFc1ajcwdVZsbGVSQktjVzBSUUF3a0ZycnBOYjZQTWxjTmRqaWMrWlZOaGQ0V1NhNVZVcTVPZlp6MkRaUS8ybWE3alA3N2xXU2Yyei9iRExvOHFxVXNyUTVmdkw1UU10NVZrcjVvWlR5c3BUeSsxTEtOMG4rdFIzUFhZWFYvcnJENyt2NkdBQUFBSFpZVVFKMlhhMzFNTTBiMTlNZFhMMlROTk1XTFcxcEFCanMzT0lneVpNZFBiY1ltMFVwNWFZeTlMNC9QeDl3a2Fza1g1VlM3bTlwdldacHBpM2J4L0gvSXNrL0pIazVndS95cjZXVVYwYndUMU1ZL2ZzUXl5cWxsRXQ4bjc5TU02M2ZKTmVianVqL1NmSlJSMS81VmlubHhGNENBQUFBdTBsbkYzWmVLZVdrbEhJalRadnRYWm5hYUpIa1ppbmxscUFMQUF5bmZkRDlOSUl1N002NThtbUdtK3JqT00yVVJmZTN1RjZMTkIwazk2bkx5NnNrajVQOFh4bEgwT1dGb012UEREV0YwY2tseDhqM3BaUVhwWlIvVGZKTm1pbVBYaWE1ekpSVEg2VzdvRXVpc3dzQUFBRHNOR0VYOWtZcDVWR1NHMGtlWkh0REw0czBJWmViN1kxMkFHQWd0ZFo1bXFETFJEWFlNWThIT29lOXZRdEI3WFphbzd0SmJtYjNINlova3lia2NqeVM3L045S2VWUGh1elBmRG5RY3I2K3hsajVzWjN5NkErbGxOOGwrVjJhRGtIZkovbnhEVDl5ME9IM1hYb3hCQUFBQUhhYmFZellXKzBEcXkvVDdRMjF2aHluYWZmdXpUUUEyTnk1dzlNa001VVlsR21NaHR1L3YwdjNIWXVXU1I2VVVvNTN0R1lmSlBrLzBuVFcrQ0xkZHFUWXRCZEovaW5qQ3ZQOGtHYjZvaCtOMkovMndXbVM3d1phM0kydXd5UHRGRXpuLy96M0pIL1QxVFYwS2VXMnZRUUFBQUIyMXdkS3dMNXFiN29mMTFvUDBvUmVEak91TjdWUGszeVY1S1NVc3JMRkFBRG8wWU1rUngxLzNxTWRQNC85cXlTL1RQTGJOQjFRL2k3SjMyYTdReTh2MDNUNitlMEl2OXZ2QlYzK3pIeW9hOU0rdXFTMHg0ZFY4bE40ck1zWFVaN1pQUUFBQUdDMzZld0M1OVJhRDVOOGxpYjRNdDNBVjFpa2FROTlvdVV5QUl6dVBFRm5sdzJjRytuc010aitQVW5USVdMZDhQZEprcnU3Zmk1YmEvMWxtcTR1YjNxQjVEZlp2azR2cDJsQ0xtUHRKUG1IVXNwTEkvWFA5c00rT2pLOXlkMTJXdUErMStVZ3lmTU9QL0pUblZFQkFBQmd0K25zQXVlVVVrN1MzcUJ2VzBMUDBvUmZEdEw5ZEVlck5EZVRuNlY1a0xPd0JRQUEyTkI1OEtyVytsV1NlOWY4aU5NMEQ4VDM1WngyK283cjZkKzJmdzdTZEhyNXpValg0Vlg3UGY5SG1vNHVZL1VuUVpjLzE3Nm9NUjFvY1NjRExHUFc1Ylcyb0FzQUFBRHNQcDFkNEFyYXQ4MG1lWDBqN3BOYzd1M1gweVQva1dUWi9qazFOUkVBYk4xNWdNNHV3OVBaWmRoOS9EcmRYVlpwUWk3SGUxYW5xd1RoUDB6eU4wbithL3YzSnIxS00rWFN2N1IvajkzTFVzb2ZqTTQzN29kUDBuUWs3ZHRwS2VYVExmc2RlMXhLdVcwdkFRQUFnTjJtc3d0Y3dibTN3eGFxQVFEQWpwM3JYclc3eTZNa0QvWXd4UDN4RmYvN3N3NHF2MjMvLzkra0NjMGZYT096cnVNMHliZHB3aTB2dHFqT3I3YnMrdzZtN1VKNk9ORGlIZyt3UHVkZktPbkNNM3NKQUFBQTdENWhGd0FBQUpJa3BaVDd0ZFl2OHU3cFVSWkpicGRTbHZ0V24xcnJSMms2dGF6am0veThxOHBaNk9VL3QzOS8xUDY1cWhkcEFpTGZwcG1XNkVXMk55enlLazFIa1IrTnlqZWFEN2lzSWFZdzZqcTRzN0NMQUFBQXdPNFRkZ0VBQU9DOEIwbU8zdkRQbDJsQ0xvdDlMRXF0OVlQMDA0bmx0UDN6SnUrYkxta1h1NThJdXJ6Zmx3TXQ1M1NnVU50bkhYN1djaCtEZUFBQUFMQ1BoRjBBQUFENFNTbmx1Tlo2TDYrN3U2eVNmRlZLdWIvbnBmbXJEVnhEbis1WmpRVmQzcVBXT2s4eUdXaHhqd2RhVHBlZFhVN3NKUUFBQUxBZmZxRUVBQUFBWEhDNy9mczR5WTE5RDdyVVduK1pkMC90eFBvRVhTN255d0dYZFR6QTJEcE10K0dkWjNZUkFBQUEyQTg2dXdBQUFQQXpwWlJGcmZXRzZVQis4ckVTOUVyUTVSSnFyYk84ZjJxcnJweVVVbFlETE9mempvOWRPcnNBQUFEQW5oQjJBUUFBNE04SXVqUnFyWk1rZjZrU3ZWa2wrYjJneTZYY0czQlpwakFDQUFBQVJrM1lCUUFBQU43dXZ5aEJiMTZXVXY2Z0RPL1hkbldaRGJTNDVSQWRVbnFZd3VocmV3b0FBQURzRDJFWEFBQUFlSU5hNjE4bCthVks5T0pGS2VWUHluQnBYdzY0cktHNnVuemU4ZWN0N0NZQUFBQ3dQNFJkQUFBQTRJSmE2d2RKcGlyUnVSL1RURnUwVW9wTDc0dlRkRHZkei9zY0Q3U2NMdGZwMU5SckFBQUFzRitFWFFBQUFPRFBUVjB6ZCs1Vm1xRExEMHB4SlE4SFhOYkpFS0dSSHFZd2VtdzNBUUFBZ1AzaXhoMEFBQUNjVTJ2OVpaSy9Vb2xPL2FtVThrSVpycnd2empKc1Y1ZXZCbHBPMTFNWW5kaGJBQUFBWUw4SXV3QUFBTURQL1JjbDZNd1BTZjVnMnFKcnV6ZmdzcGFsbEVYZkM2bTFUcExNTy94SVV4Z0JBQURBSGhKMkFRQUFnRmF0OVMvVDdmUXErK3hsa2hlbGxCK1Y0bHI3NGl6SmJNQkZQaGhvT1YxM3FqR0ZFUUFBQU93aFlSY0FBQUI0N1dNbFdKdHVMdDBZc3F2TEtzTk5CZlJseDU5bkNpTUFBQURZUThJdUFBQUFrS1RXT2szeVM1Vll5ekxKbjNSeldYdGZuR2ZZcmk1ZkRSRk9hc2ZZUVljZmFRb2pBQUFBMkZQQ0xnQUFBTkJZdFg5TVkzUjEzNmVac3VnSHBWaFByWFdTWWJ1NkpNbWpnWmJUZFZjWFV4Z0JBQURBbmhKMkFRQUFnQ1J0WjR2VFd1dEhTYWJSNWVVeVZrbVdwaXpxMU5CaHErTUJ0OSs4NDg4emhSRUFBQURzcVY4b0FRQUFBTHhXU25sWlN2bGRrajhrMGFua3pWWnBwcEE1RlhUcGZQOWJKdmsweVlPMnpuMTdNTVI2dFZNemRSbmtXWmpDQ0FBQUFQYVhzQXNBQUFDOHdZWFF5eXNWU1NMa010Uyt0eXFsM0U4VGV1bXplOG54Z0lHUkx6citQRk1ZQVFBQXdCNHJTZ0FBQU85WGEzMmFaS1lTZzFxVVVtNHFBeU02RGt5U2ZOVCsyU2MvSnZrK3pYUkZPdDFzWnQrYkpYbVk1S0Rqajc0eFJOaWwxanBOOGwySEg3bHF2N3ZBRlFBQUFPeXBENVFBQUFBQTNxOTlzTDZxdFM3ek92VHl5eDFlNVZkSi9wVGsrMUxLai9hQWplNTdpeVNmdGxNQlBVdzMwd0VOMmRYbFhzZWZkeUxvQWdBQUFQdE5aeGNBQUxnRW5WMDJRbWNYdHVIWThHR2EwTXRmWmplQ0x6OGtlWm5rcFM0dW85M25Ka251WlAwQXlWQmRYU1pwdXJwTU92elltMjBBQ0FBQUFOaFRPcnNBQUFEQU5aVlNYaVY1a2VURnVlRExKTW1IVzdRYXF6VFRGSDB2NExJVis5d3F5ZjFhNjNHU28xd3ZpRGxrVjVjNzZUYm9zaFIwQVFBQUFJUmRBQUFBb0FQbmdpK3B0ZjR5elFQK3MrRExtTUl2cXpSVEZLMlNyRXhSdExYNzJ6TEp6VnJyTEUzb1pYcUZIMzh3NEZmOW91UFArOHJXQndBQUFJUmRBQUFBb0dOdGg1U1g3Wi9VV2o5SUUzaVpwSm51NkN3TTA3ZFZtcW1KWGlWNTFYWUZZYmYydFVXU0c3WFdzNm1OM3JkZlBSaXFxMHV0ZFo2cmhYQXU0OWhXQndBQUFJb1NBQURBKzlWYW4rWjZVMFZ3Zll0U3lrMWxZTWVQTFdmQmw3TXdUUEk2REhOWnI1S2NkV2M1QzdPODByRmxML2VuU1pLSFNlWnYrVTlXU1c0TUZYcXF0WDZYYnNNdXg2V1UyN1kwQUFBQW9MTUxBQUFBYkVqYkFlYUg5djkrcnlLc3VUK3RrdHl1dFg2Vkp2UXl1L0NmZkRWZzBHV1c3cnU2UExhVkFRQUFnQ1Q1aFJJQUFBQUE3STVTeW1uYkdldFdrbVg3ajVlbGxQc0RmbzE3SFgvZWFUdGxFd0FBQUlET0xnQUFBQUM3cUpSeWt1U2sxbm8veWVsUXkyMjd1c3c2L3RpdmJGRUFBQURnakxBTEFBQUF3QTRidUtOTDBuMVhsMVVwNWRpV0JBQUFBTTZZeGdnQUFBQ0FUdWpxQWdBQUFBeEIyQVVBQUFDQXJ0enI0VE1mS1NzQUFBQnduckFMQUFBQUFHdnJxYXZMY1NsbHBib0FBQURBZVI4b0FRQmNYWHNqLzh4QmtzbUYvK1N6amhlNVRQTEhDLzlzY2Y3ZmwxS1d0Z3dBQUJ2VVIxZVhCOG9LQUFBQVhDVHNBZ0RuMUZxblNjNy8rWXMwWVphays3ZFUxM1h2d25jLys1K25TVmJ0bjIvYnYwK1RyRW9wcDdZeUFBQTluRWZQMGs5WGw2WHFBZ0FBQUJjSnV3Q3dkMnF0a3pRQmxvTWt2MjcvbnJaL2RzSEJ1Zjk5ZUdIZGs5ZmhsMldhYmpHTDZBd0RBTUI2K3VqcThsaFpBUUFBZ0RjUmRnRmdwOVZhejBJdG4rUjF3R1d5NTJXWjVPZHYzZDVyYTVXMHdaYzBIV0ZPU3lrTGV4RUFBTzg1NTU2bis2NHVDK2VpQUFBQXdOc0l1d0N3TTlvcGlHWjVIV3lacWNxVnpTN1VOR202d0p3bWVaWW1BR01xSkFBQXp1dWpxOHNEWlFVQUFBRGVSdGdGZ0szVmRtMlpKZm1zL1h1aUtyMDQ2NGd6Yit1K1N0TUI1bG1hTjI2Rlh3QUE5dmVjL0g2Nm53NVVWeGNBQUFEZ25ZUmRBTmdhNXpxM2ZCN2hsazJhSkRscy81eUZYMDd5T3Z5eVZDSUFnTDA0UDU4aytiS0hqOWJWQllCTi80NmJwZ2x6enRKTTk3d1V4QVFBR0JkaEY4WjhRWEVRRDdLSHROS2RnWkVlQzJacHdpMkg2ZjZOVWJveFNkUDFaZDV1czlNMG5WOGVPNjRBTUxMemlrbWFibVVNWnlrSXU5UHU5WERkdnJHdUxoMGNJMDVMS1N1N0JjQldueThldHIvZkR0N3c3ODVlOXJucmVNOGVqNUhaZFg5V1lBeUFyaFVsWU1RblRVL1RKT2NaeHFLVWNsTVpHTW40UDh6cmdJdlEyM1picHUzNlVrbzVVWTY5R2NQMzA5d2NCRGJ2UVNubHZqTDhkSHlhSlhtcUV2WkJPaGxQQjBtZTkvRFJOemNZZGxuM0dISFRReHlBcmYyOU5rbHlsTGFMN1h1c2t0eDJuNE05SFN2MXVqOWJTdkZNRW9CTy9VSUpBQmpKaGRKaHJmVkplOEgwSkUyWEVFR1g3VGROY2lmSmsxcnJ2OWRhSDdZUFJnQUEyRzRQZS9qTWhiQUlsN2gybktvQ0dQYzllSkxMQlYyUzVuN1ZrL1psTFFBQU5rVFlCWUNOcWJYT2FxMUh0ZFovejlWdUtyQ2RKbW1DTDg5cnJkL1ZXdSs3VVEwQXNKWG44WWZwcHhQclhkWGxQZnZlL1RTZEY0RDkrcDN6dk9kbDNML203N1VqOXpVQUFEWkgyQVdBUWRWYXAyM0k0YnMwTGNMbjBjRmxIMDNUVEhQelhhMzFhYTExcmlRQUFGdHhQajlKUDExZGprc3BweXJNMi9hN1d1dFJUSlVKK3piMjc2UjVPV3JTNHpJbVNiNjg1bzlQSEpjQUFEWkgyQVdBUVp4TlU1VGt1L1pHd0ZSVmFNM1N2QTMxNzdxOUFBQ01YbC9uOGcrVWxyZGNTMDd5K2tVSllIL0cvbEg2Q1ZkZU5NOTZZUnBkaWdFQU5rVFlCWURldEcvZm5YVnhNVTBSNzNQMlJ0UjM3ZlJXTXlVQkFCalYrZjFCbW1rcHUvYW9sTEpVWWQ2eXp6MVBjcUFhc0RmamZsSnJIVExnOXRtYVB6OXgvd0lBWURPRVhRRG9YRHRWMFZGMGNlSDY1a21ldGxNY0NVa0JBSXpEVVErZnVZcXVMcno1dXZJd1RVY1gxNU93UCtQK29CMzNzd0VYMjhVVVNRSjVBQUFiSU93Q1FHZHFyYk56SVpkNWVweFRtYjB4Uy9LazF2cGRyWFd1SEFBQUd6dlh2NU4rSHVaOVZVcFpxVEJ2Mk4rZXVLYUV2UnIzc3pSQmwyME1qamhXQVFCc2dMQUxBR3RyUXk1UFl4NTErak5OY2lUMEFnQ3drZlA5YVpxT2pWMWJsbEx1cXpBWDlyZWpKQTlWQXZacTNNL1QzRlBhMXRESXFhMElBREE4WVJjQXJ1MUN5R1dtSWd4Z210ZWhGL3NjQU1Bd2p0TFBBOGk3U3N1NTY4dEplMzA1VnczWXE3SC9NUDFNazNkWnB5UDVEQUFBcmtqWUJZQXJxN1ZPaFZ6WXNHbVNwN1hXcDBJdkFBQzludnZmNmVtY2YxRktPVkZoMnYzc3dQVWw3TjI0bjlSYW55UzVzK0d2OHZXYVAzOWFTbG5hb2dBQXd4TjJBZURTMnBETFVaTHY0aVlrNHpCTEUzbzVhdHZyQXdEUTRmbC8rcG0rS0VsdXF6RHRmbllXZERsUURkaWJjVDlweC8zaHByOUxLV1dSWkxIR1J6eXdSUUVBTmtQWUJZRDNhdCsydVova2ViU1VacHptU1o2Myt5a0FBTjNvYS9xaUI5NkNwNzNXbkxmWG1SUFZnTDBaOXdkcFhxSWFVOER0YnBMVk5YN3VXSmN5QUlETkVYWUI0SjFxcllkcGJqN2VpeHVRak5za3liMWE2M2VtTmdJQVdQczY0SDc2NmVhNFRQSkloYW0xUGt3VHFBTDJaOXpQMDNSMEdkWDlwVkxLYWE0ZWVGbTBQd01Bd0lZSXV3RHdSdTJVUlUrVFBFa3lWUkcyeURTdnB6WVMwQUlBdVBxMXdFSDZtNzdvYmlsbHBjcDd2NC9Oa3R4UkNkZzdmWFVNVzFzcDVUakp6YngvU3FOVm1nNWxOLzArQXdEWXJBK1VBSUNMMnJjNHY0eE9MbXkzZVpMRFd1dHRiWVVCQUM1OUxUQkpmOTAyVHB5WEFUQldiWWVYbTIwZzcvUDhmS3FsVlpKbmFhWXVFbklCQUJnQllSY0FmdEsrd1htVWNjMmJET3VZSkhsU2F6MUpjdHNOS1FDQTkzclkwL1hBS3FaN0FHQUxsRklXZVgrSEZ3QUFOc3cwUmdBaythbWJ5L01JdXJDYkRwTThiOS9PQWdEZ3pkY0VoMm02NC9YaFFTbGxxY29BQUFCQUY0UmRBUFpjcmZXZzF2bzh5VDNWWU1kTmt6eHRnMTBBQVB6OHVtQ2EvcVl2V3BSU0hxa3lBQUFBMEJWaEY0QTlWbXVkSjNrYTNWellML2RxcmMvYkJ6b0FBRFNlcEprQ3NnK21Md0lBQUFBNjlZRVNBT3lmV3Vza3pWdWJoNnJCbmpwSU02M1JyWFl1YmdDQWZiNCtPRXAvQWZnSHBaUlRWZDdJTmQrczNhNmY1TStEVE1za2YweHltdVRVRkZPZDF2NmdyZnMweWEvYnZ5ODZUZklmdTFiL2RyODdmeXhaalczOHQ5dG4xbTZiTngzM25pVlp0ZHRsc1FVMW43YnJjWkRrTDk1eExEKy96eTBkbDNmcWVITzJEN3p0ZUhOMnZGKzIrL1hwanRWZ2RtNU1YMXovVlpKdnQybmRML3dPZWRlWWZ0Yit2V2pIdE4vakFPd2xZUmVBL2J3UWZ2S1dDMkRZSjVNMDB4cmQxVllmQU5qajY0TjVrbmxQSDM5YVNybXZ5cGZhQnRlNVBsdVdVbzR2Zk5aaGtpOXl4UmNiYXEzTEpDZEp2dXJpZ2RrbDF1blhhM3o4OUJwVGt4NzMrU0N3cmZ2bmJkMHYweUZwOW9iNkw1SThIaUpnc2NiVXJtL2I1OTY2N3JYV3RPdjJkYnNkVnBmOGp0TTFqazAvMjk3blB1dUxTNHkxMllYdmZwTGs2NHZyUFlKanhtZFgyTi9ldE0rdHptMlhrOHR1bC9kOHI5bkY1V3g0djExY2RqeXRjUnp1L2ZoeTRYdE8ydTMrZVZ2cnlUVStvL050My9mK2NmRmNvcjIzK2VVbHg4RGhoWFUvR2VwWWU0MXRlcFhmM1dlMXZIZmg5OGpYcFpRVFoxY0E3SXVpQkl4VnJmVnBueGRJdlBFQzhLWXk3UHk0bWlkNW1QN2FrOE8yT2s1eWQ2aWJQSHR3ckxtZjlvWUxzSEVQUEdqKzJmRnBsbVlLUit5RDVLZUhSVTk3dWo1WUpmbDBtOTQwN3VBWWNmTTZEOC9XdVAveDAzVjgrOTJQMHMxTERZdDI3QzdXcU9YWTd1bmM3UHJCWnZ1QThrNmFCNjVkanFGbGtxOXloV0RJTmI1N3ZlNitzZVkrdDJyWDdkSDcxbTNOOFhpemxMSm90OUc5ZGp0MWNVeTcxSGZ2YVp0TjIzMXQzc014ZTlWZUU2OFZkaHZoZGVDbHowSFdQR2JkN0RzNGNTN2NNZS9oNDgrQ2puMnZ3N1gzajFKS09UY09IcWFiVHRYTGRoODUzdUE1eHhjOWJkTmxrc2Q5SGEvVytCM3kwN1lFZ0s3OFFna0E5a090OVdHYUcxR0NMdkRuNW1tNnZCZ2ZBTUMrWEI5TTBuUjg3T3Y4NTRHVytzTnN4L1phNzJtNjY5NDVhOCtOSHpvL2Ztdk43eWY1THMyRDI2NXJORTN6TVBkNSs4TEtXTzh2WEdlZk93dWZQRzBmM3ZmNUhXZEpucWVib012NTcvNjgvZXloeC9oMzdicjBNU2JQZ2x2ZnJkSDFoMzYyLzdRTjRqeFBmMTNZRHRzeCtYVElmZnNhdFppM2RlaHFTdlpwa3FOMnZhY0RiOU1uN1RHMHIyMDZiWTlYMzQzMTl3Z0FkRVhZQldEM0w0d243WVh4SGRXQWR6cEljK1B5UUNrQWdEM1E1OVNtQzlORURtS1M1bUZaWDlkNmR6SkFLR0hMcnE5bmFSNjI5aEZ5dVdpYTF3OWlKeU9xd1ZFSCs5eFpWNm0rZkpGdUEyQVh0OHZUSVVJaFBRUjJMdU5lcmRWMThlYkgyZm1RMDJ5Z3hjN2FmZnRvYkVISDlyalQxd3Q4c3d3VUxxeTEza20zZ1ozTG5DY2MxVnFmQ0s4Q3NLdUVYUUIyKytMNDdBYlNURFhnVXFaeFF4OEEyUDNyaEljOVhpT3NrdHhTNVVFY3RILzZYb2J6NC93MEJVZGZBWXAzbWFWNU8zOE0yMkNXN2pvUjlQbmdkVDVBTGU2MUQrRDcydC9tRzlyZmpQdk5IMnZPN3VWdDZxVzFlWHZNbVkyb0xIMlA2Yk5ReUx6SDdYcVV6VTB0ZjlhOVoycUVBYkJyaEYwQWR2L2kyTTBKdUpwSmV4TmdyaFFBd0E1ZUo4elQ3d08wMjZXVWxVcnY1UG54d1I2UG02TTAzVncydVEyZXUwWVpuWGtmZ1pkMk94K05ZTnpyOExLWjM5Rmp1SmUzci9kRmVnbTh0TWVKVGRmeXJKdXhEaThBN0JSaEY0RGR2amgyQVFQWDAvdGJQUUFBRzdoT21LWGZCNmlQU2lrbktyMno1OGQ3T1EzQ1NCNVNubkdOTWo3ekxyZkpTSUl1NStud010eXg1bXpiaitrNGU5Um5CNk9ST3VweW54L1o3NUN6RUpQN3hRRHNER0VYQUJmSHdOdTVtUXdBN01wMXdrR1NKejB1NGpUSkE1WGVhZE0wVXpEczA3Z1owMFBLODljb3dnZmo4ckNMNlVIYTdUcTJZTUZraE45cEY0ODE4eEhYZWI2SGdaZE93cDIxMWpzai9CMXlrTTEyS2dPQVRnbTdBTGc0QnQ1TjRBVUEyUGJyaExPSGxYMEY0bGN4ZmRHK21MY2RndlpoM056UCtCNVNudkZtL3JoMEZRaDVNdEwxTzJqSEEvMGNhdzR6L250NTh6MjdMekxObWxNK3RnRzRzUVpFNyt6TDczSUFkcCt3QzhEdVhCelBJK2dDZlJGNEFRQzI5VHBoa21hSzB6NDdRZHd0cFp5cTl0NjR0d2ZqWmpieTlaeGt2TUdJZlRWYjUrRnhHeWFaam5qOXZoU3c2dVZZTThadVBtOXp0R2NCaVhYMytiRnZWOTFkQU5nSndpNEF1M0Z4L0RDQ0x0QTNnUmNBWUJzOVRMOUJsK05TeXJFeTc1WFpMai93YkI5dVB0bVM3ZUQ2WkZ6dXJiSFBmVG55ZFp0a3pVNFh2TkcyVFVQK1pJOUNUOWZlNTl2ZmtXUC9QVG5UM1FXQVhTRHNBckRsMnB0YmJqakFNSTdhRnNNQUFOdHdyWENVZnFkaE9VMXlWNlgzMGhjN3ZHNzNzajBQbngvcXRqRXFzM2Jxa3FzNjNKSjk3Z3VidU5QZjBmZlRieGkxRDVPTWQycWVNZTN6MnpKV3ZqUVNBZGgySHlnQndGWmZHTStqb3dzTTdhald1dFNxSHdBWStiWEN3L1FiZEZrbHVWVktXYW4yWGpwTWNuc0h4ODAwM2I1TWNwcms2L1ovTDlOTVUvTVhhZDc0NytJaDkxbm5nZnQyeVZHTmpVZFgvSmt1SGppdmtwd2tlZGJ1YStjZEpQa2s2NGRxcHJYV1dTbGxZVE4zY3F6WjFxREJ2TmI2ZUUvMmd5dnY4MjBBc1l2enIrVzVNWDN4WEd0MmJreXZkYnlxdFU2Y3l3R3d6WVJkQUxiM3duZ2VRUmZZaEVtU3A3WFdtd0l2QU1DSXJ4WDY3djU0dTVTeVZPMVJPazN5dVAxN1dVcFp0bE1WVE5POGJUN3I0cHk0MW5wWVNqblpzZHJkNitoekhxU1o0bXY1am5FNmJaYzNYM05aWDBiWTVUTE93aUJmSjFtVlVoYnROcGdtK2J6ZERsMTBWL2tpVndpN3RBL0dEenJZM3g2OTQ0SDFvbDNXM1RSZE9kYlo1ejQvK3p6V1B0WjAyYzFuMlc2WGkyR25hVjZISXFZZGYvOU43d2ZMQzJQNnROWjZjR0ZNZCtHcSsveTZ2Mk5YU2U2K1o0ckl4Ym5mSTAvV1BJYk0yam9Dd0ZZU2RnSFlRb0l1c0hHVE5ITlZmK29OR0FCZ0Q2OFZIdXhneUdFWG5IWGJXVno4RitmKzJYRWJmRG5LK2c4K1A4dmJINURkemJzZjVCN2srbE5oWEdmNnJOTkxqSjFwMW44NGVwb21DUGJlNWJWQm1OdTExc2RwSGxaZTk4SDNwTlk2ZjgrRDBiNmREMWdscjd2WVROdjlaSlp1SDdSZjFYR2FoOGVyTjJ5RFpaSkZyZlZCbWdmNDZ3WUZENjdZS1dHMjV2SSt2ZXhMR08xM3VsMXJ6UnI3K3NGNzZyeDR6ODgvWFdOZGIxN3h2MStPOVBkMEY4ZWE4K3Y0NEJMai8yNTc3TCtYYmdLUHN3MTMrYmxiU25uMGhuMzh0RDBPbmJSaitxaUQ5YjNxejMrMjV2YThlZGt3Y1J0bXZkbU9xK3NHWHQ3MXV4d0FSay9ZQldETHRHOHBDTHJBNWszVDNGRDRWQ2tBZ0pGY0s4d0h1Rlk0S2FYY1YrM1JXU1c1Y1prSDdHMUhpMCtUUE05NkFZU0RkeXpqOUQzNzZscnIydE1EMW5Xbmd6aE44NUR5U21INGRudWNQYXk4YnVEbDh6UkJnNkdkcG5uby9LYnRzV3ovUG02MytXR2FMalN6Z2Ivakd4K0t2MkU3ck5JRUF2Nlk2d2V4em8rTnhicmo2SkxyZHAxdW8zZHovYkRGN0IwMVhPWTlBWk4xeHY0T1Rac3o3K2h6SHBWUzdsNnhmb3RhNjUwTzl2R2s2V0swaVcxeTZ6S0IyM1ovdkZscmZiTG04ZjJnNS8vKzRyb3Ryemd1Vm0zWHBxY0RyUjhBak1vdmxBQmdlN1JCbDZjcUFhTnhVR3NWUGdNQXhuQ3RNRS8vUVpmVEpMZFZlNVN1RkxJNDYvQ3c1akpuTzFiREw5ZjQyVld1RVhRNXR6MnUwNjNtdk1OMk9wd2hIWmRTUHIxc0FLR1VjbEpLdWRtdTUxRGRNVTh1RTNTNThEMGZaZjBIK0ZkNWVIemRMaENycTY3YmhmRi83WFZzTzVOd2ZWOTA4Qm0zcnhKMGVjTSszc1h2OHZrR2pqdlg2U3gzTzJ0MitXbTc0dlF4L2k4ZXIwNnZ1VTNYT1dZWnp3QnNOV0VYZ0MzUlhrQ3UwOW9ZNk1lOGZUTUtBR0JUMXdyejlCOTBPWnNpeHhTTzQzTjhuUWRrN2NPeFkrWDc2ZUg5ZEkyUHVMdnUyR2luSVZtdThSR0hBNVpzVVVxNWZjMzFmSlNtTyticEFOL3p1Z0dpZFlNQVE5eTNPZG5nZDV3NmFsejdXSFBRUWYwZXJEdHRXZnZ6WFFSZWhqenVMSy9UV2E0OU5qOFljTHhjZDJ3OTI5QnVhVHdEc05WTVl3U3dQWjY2QUlIUmVsaHJYVnozTFJ3QWdEVjlPY0F5Ymw2MXRUNkQrV3FObi8wNmEweXBVV3VkN2NqVUl1czhzRjJ0KytENW5NZEo3bDN6WnovTGNPR2x0UjZTdDhlU3ZxZURQYjd1TWF1VXNxeTFudWI2SFJxdTBxM2xicTczY0h5NXhyZzlpS2xMdHZGWWt5U25YVTBsV0VvNXJyVit2dVozR3ZLNHM4N3Z1cE0wVXpkZE40aHlrTXNIekc1ZWQ5dXVNYWE5Z0FYQTNoSjJBZGdDN1RRcGJrVEF1RDJ0dGQ3d3RqTUFzQUUzMDRUais3cG11QzNVTzFyTGRiWk5LZVdrMXFxSzE1OUtKa2xPcnpqRnhidXNjeTB4RzZoV3gxc1NmUHU2ZzUvdi9UN01rTWZXdG1Qd1BOY1BWTEhaWTAyeTNuUm5iL3U4ZGNJdXN3RnJkN0xHT0Z2VldoY1pvQlBOa0FIUXRpdVpNUTNBWGhOMkFSaTV0aVg1WENWZzlNNm1HcnVwRkFEQWtOcUhPSDBGWGg1MDJMV0M3cDEwOEJtTERQdkFjb3pXR1RlemtkUnZPdEJ5dnQ2U2Jicm80T2UzOWdGeUcydzVhSzlURDlLRUxQWjluSS9CT3R0ZzBYV1FvdTFpZEp6cjMzZWMxbHFuQXdUZ1RqdFl4cmNaZHRxbHJzZjB0RDNPbi8zcGJFenZVSmMyQVBhUXNBdkF1QzlrRHBJY3FRUnNqVm10OVg1WGJZVUJBQzZycDhETHNmT2EwZnUyZzg5WUt1TnVUQmxZeUlTUUFBQWdBRWxFUVZRODBBUExiZWp5dE95ZzQrWnF4TnY1YkJxaWFaSmZuOXQvSjlFVk9DUGZidXQ0M05OWFcyczZ1M2IvNi92M3lISWtuOUhic1R1dncybWY1UFYwUzlPWTBoNEEza25ZQldDOEZ6cG5YU0tBN1hLdjFucWkxVDhBTUxTT0F5K0xVc3B0VlIyOVpRZWY4Y2M5di9ZV0RyamFjV2E1RCtPaWxISTZsaW0rMm80T2gwaytqKzRzMjJ5eTd1L2xuc2IwdXRQWkhmVDEzYzdacVdCbiszdm5pM1k4K3gwRUFHdjRoUklBak5aUnBQZGhXejFwQTJzQUFJTnF1eG5jekhyZEYwNlQzRkxOcmJCU2dyWHQwbm43ek9iY25YRlJhNTNYV3A4bStTN0pROXQzNjAzWDJhZDdEcG90SEVON0g4K1RXdXVkV3V0M1NaNG51Uk5CRndCWW03QUx3RGd2Z081a2krZVJCVExORnMvdkRnQnN0elVETDZkSmJuWXdCUWpEYkd2ZEJPSFBmYnZOWDc3V09tc2ZpQjlGd0dYWDdoTmMxNzRmNnhkYlBxYm5lUjFhbXhvS0FOQWRZUmVBOFYwQUhiUVhQOEIydTlQT3V3d0FNTGhyQmw1V1NXNEp1Z0JzUnEzMVlacXA2S2Fxd1lBRUovc1p6NU8yTzlOUmRNQUJnRjRJdXdDTXo1RVN3TzZNWjlNWkFRQ2Jjc1hBeXlwTlI1ZWx5Z0VNcTMwb2ZqYTFDUXpOZll2dXgvUkJtbTR1TTlVQWdQNEl1d0NNNjBMb2ZzelhDcnRrR2pjckFZQU51bVRnNVN6bzRzMXVnTTE0R3ZlRGVMdSt3eWhUSmU1T3JYWGFqbWtoSWdEb21iQUx3SGd1aEE2UzNGTUoyRG4zMnZFTkFMQVI3d204Q0xvQWJGQTdkWkZyeHQyM3p1L1p2dmVQcWMzVHFTY1JkQUdBUVFpN0FJeUg2WXRnZHoxVUFnQmdrOTRTZUJGMEFkaWdXdXNzdzNZRFhTWTVUbktpK29OYnJibXZIUFMwRDA2eVh0aGxhZFArcko3M00yeDQ3VFRKbzZ3WHBnS0FyZldCRWdEczVZVVFNS3haclhWZVNqbFdDZ0JnVTBvcHExcnJ6YnllTHVPdW9BdkdSVm5VV3EvNzQ4dFN5ZzFWWkExZGQvaGQ1blg0WUpYazIvWi9MNUtjdHNISHMvdFFoOG8vcUhWLzMzNlJmZ0lOaHgzc2M3ejJaUS83emVwY3JmL1kvdi9UQzJQNnFkSURzSStFWFFBMnJKM0g5VXVWZ0oxM3I5WjZjbllqQWdCZ0U4NEZYbWFsRkcvMlEyT1Y2MDA1TWEyMUhnaU5jUjN0L2FCWkIvdnVjWkt2U3lrTFZSMzk3OS9ySG11U0pwUnl0NGV2OXNXYTYyVy9lejJtNTFsLytxSmxtczVMai8xdUFZRDNNNDBSd09ZOWpIbGNZUjlNTTJ4N2FnQ0FOeXFsckFSZDRHZldlYURvNVJXdWE5Mk9HaWRKYnBSUzdsNGpjUENKOG0vRVlvMmZuYlpoaXM2MDAyak5OblRzM0VXZnJmbnpEMG9wWjJQNnFyV2RLajhBKzBqWUJXQ0Qyb3RLYldOaGYzelp6b2NOQUFCY3o3U0h6M3kyeHMvTzJ3NGRjRlhyQkU0V3BaUmJhM1FPM2JwOWRrZkcyYk0xZi81aFYvY1Uyczg1V3ZOakZvYnh6OHpXK05rSHBaVDdhMnhMdjRjQTJFdW1NUUxZckNNbGdMMHlTZFBONmJaU0FBREF0VXhycmJPT3A4NDRTWEp2alo5L2t1VFRkYjVBKzdCeXJVNlExMzFReXViMjVUVis5dTRhKzlvMHljRVcxbXVlWk52MzhaUDJuc0IxVFpJOFhmZDQwM3FZOVFNU3p3emp6c2Iwb3pWKzFvdVVBT3d0WVJlQURhbTEzb25VUGV5amVhMzFRU2xscVJRQUFPeXAxWm8vZnk4ZGRoUW9wWnpXV3BkclhLTWYxRnFQU2lucmhOcVBzdDREeTlOc2Z4Q0FLK3l6YTQ2ZmJmUmxyZlhSR3Qxc3hyRGRsclhXMDZ3WE5qcW90UjRsdVh2ZFdyUS9QMTl6ZFphbVJPek1ZczM5K3A0U0FyQ3ZUR01Fc0FIdEcxc3VSR0IvR2Y4QUFPeXROUi9VSjhtczF2cmtmZE9hMUZvUDI0ZTZsL0Y0emU4MHI3VSt2YzVVSysxM1hQZk4vTWYyclAxeDNTbDkydW0wNXh2ODZvczFmbmFTNUdtN0R1OWF4NE5hNjhOYTYxaTcxM3pWd1dmTTIxb2NYSFcvcWJVKzdXZ2ZjTXpwenNFYXh3SXZVd0t3MTNSMkFkaU1PKzFGT3JDZmRIY0JBSUQxSENZNXJMVXU4dWRUYVh5VzV1SGgyWFgzWlRxdUhHZjlVUG9zeWZOYTYxZEozdHVCb24xby96RGRUQ2x6YkpmWXIydktYTEdUVHh1TWVMTGw2MzJRSnVSeG1pWTQ4eC9uL3QwbjdiK2Z0di8vNjVHdXc5bFVScE1PYXZHODFucWM1S3QzaFFqYmJmOWx1ZzA2T2VaMFozS2Q2ZmxxcmZPc055MFdBR3c5WVJlQWdiVmRYYjVVQ2RoNzkzSzVtKzRBQUxDTEZtbkNJZXVhZGZFNTdmUWl4MW4vWWZCWko5ZDc1NEk0eS9aUDBqeWcvbldhc002MG8xb2ViL1BVTGx6dmVyTFd1aXlsSEYvbVAyNjdQOXpMNWwrOGV0YlJ1RDlJTnlHeHdaVlNWbTBncnF1T3IvTTBMOVFzMDB4bjl1MjVmM2N4QU5TVll5L3ZkTzVKcmZYbVpUcWZuZXNZZmtmWkFOaDN3aTRBd3h2RHpRVmc4M1IzQVFCZ241Mm1tNGZlWFhxUWJqc2Z6QVpheHdkMnA2MjBidkRqcU5iNlJacXVIaWNYLzJYYnpXT1c1b1dyNllqRy9kNHJwZHh2dDEyWDIyWGEvam5zK2V1dmt0eTFGZDlvc2NhWW51UjFwNTdIYityeTBuWUQrN3o5UGVYZU1nQWsrWVVTQUF5bm5WTlo2aDQ0YzA4SkFBRFlVOC9HOW9YYUlQcTJCVWQwV05oZVhRUS9abWs2UXRSYTY3L1hXcCsyZjlja3o5Tk1jVElkMFRvdmJQYWZiR3VuMXdjNlNmVTZwdWRwcHVwNjA1aCttdWErc3FBTEFMU0VYUUNHTlZjQzRKekR0djBzQUFEc2xiWVR4UmdmbUQ3SzluU2YwR0ZodXkwNi9yeEptdkRMWk1UamZwWGt4S1pQMnM0ZGo3WnRueTJsUExMMTN1cnh2bzFwQU5nMFlSZUFnYlFQdEw5VUNlQ2NTWFI3QWdCZ2Z4MlA3UXUxRCtOdlo1eEJuSXR1NjdDd3ZkcHRkN3lIcS83WTF2L0pnMnhYdU82V1RmYk9NWDJhWktrU0FEQWNZUmVBNFdnekNiekpGMG9BQU1DZStpb2pESlcwRHl6SDNqSGx1TzJPdzNaN3NHOHIzTzYzcHpiOVQ0R25teGwvdUc2VjVLWnduVEVOQUdNajdBSXdIRjFkZ0RlWjFscm55Z0FBd0w0cHBTelRCRjdHK04yTzAzUjRHYU50Q09OdytUR3dqOVBDMkg5Zjd3TmpEN3ljQlYwRWxDNy91ME90QUdBZ3dpNEFBMmdmWk92cUFyeU43aTRBQU95bFVzcjlqUFRCNEVnREw2ZlJZV0hYYk5OVU5sMk5yVVgyTStUenRucWNwZ204TEVmMjFRUmRybWRicHNJRGdLMG43QUl3akh0S0FMekRyTlk2VlFZQUFQYlV6WXc3OEhJcjQzaHdLZWl5ZzlydHVZbUg0NHNOci9mZEpNZjJnSi9xY1pyazB4RWRDOCtPTjRJdTE5dVdtK2hldEZCOUFQYU5zQXRBejJxdHN5UlRsUURldzFSbkFBRHNwWFBUZUl3MThIS1N6VCtFUG9tZ3l5NlBnYlBPSGtOdDMrTlN5c2FuemltbDNJN0F5OCtPaGFXVVQ5TjArOW1rUnhGMFdYZGJIbWZZem1DM005NnA5d0NnTjhJdUFQMHpQUWx3R1hNbEFBQmdYNTBMdkR3YTZmZGJ0ZytoNzJiWWdNQXF5ZDFTeWkxQmw1MGZBNmRKYnFUL1VOV0RObVNTTkNHcVRhLzM3UTJNcTdIdkMvZlRCT3dXQXk5Nm1TYmtjdGZ4cHBQdGVOeHV4MlhQdnlOdWwxS09TeW5Makc4cUxBRG9sYkFMUUk5cXJaTjRnQTFjenFUV2VxZ01BQURzcTdhcndkMDBEd2U3ZWdpLzZ2ZzdQa29UU0hpUS9oL09IeWU1MFM2VC9Sa0RuL2EwZnkzVEJCbnVuL3RuejBheTNtZmo2cmpEOVY1dCtiNXcybmJmdVpYK0ExRExOSUdKRzZXVWhaSFk3WFpzZjZmMWNSeGZKUG0wRGRXYy8yY0FzRGVFWFFENk5WY0M0QW8rVndJQUFQWmQrNUQzVnBxSDMzZHo5WWQzcDJrZUxONHFwZnlxaCsrM2FnTURaOSt2eXdmUnl6UkJoeHVsbE51NksrenRHRGpidjdvSXZTelRkSE41VTVCaE1hSjFYclZkWG02a21ZN2w1SXJydmt3VGxybWQ1RmU3TWdWUEtlV2tEVURkVExkaG9MUTF2dFh1RzhkR1hxLzc5dDI4RG5TdDZ6Uk5PT2xtMjgzbHZHY3FEc0JlL1o1VkFzYXExdm8weVV3bEJyTm8zeGFnMi8zNHV5UlRsUUN1NEZmYmZrTzcxbm8veVQyYkVrYmh3WVczZC9mOTNHeVc1S2xLMkFmaExjZUlTWktETlQ3aTlEcm5jYlhXZ3lTVDZ5eXdpemZ3YTYzVE5hNWJUNGM4ZHoxWHE0dmYrVFROQStEVnBoNXd0M1djSmZtcy9mdXlOVjIxMy85WmtwTWh2bi83K3pDYjJ1Y0dHSS9MTnp3QUhySk9uZStIYlJmUXo5dWFYS1l1cCsyZnIwc3BKeDJ2NTlEai9teThYOXdubHUyZnRmZkxkWTdEUTlmajNQN3dXVnVQcTJ5L3hibmp6V0pEMjNFak5SN0RNZVhDZHptODR1K0wwM2I3UFg3WDhlV2E2M21sK203RDd4QUE5b2V3QzZNbDdESTRZWmZ1OStHREpNOVZZcStjM1dBOVRmSWY1MjRrdlBjaThpMFhpbWYvN0MvYUM5VjFiNzZ6SFc1dit4dFZ3aTR3S29JR2YvNzdWdGpGUGdndzVIMkJkejFBUDlXNWhUWE9hZDdJdytTOTNCL2VkNytvMDdBR2cyNi8xYTUwS1FLQVBueWdCQUM5K1VJSmR0WXlUYURsMnpSaGxyVnZHcnpsWnRUaUxSZkIwelJ2ZmN5Uy9EcFhlMnVROGZzODNiUzFCUUFBTnNnRFNucmN0eGFxd0xuOVlaVVJUVW1GN1FjQVF4RjJBZWpQb1JMc2pMTldvWU8zZVgzTFJmQXlUZURtcHd2aDlpMlFXWm9XcUljUmZ0bnFZMGV0ZGVJTlR3QUFBQUFBZ0RjVGRnSG9RVHQzN2xRbHR0cEpYcytadmh6N2wyMkRFU2Z0bjd0dDk1ZkROQjJHVEgyMGZRNmp1d3NBQUFBQUFNQWIvVUlKQUhyeHVSSnNwV1dTdTBsdWxGSnVsVkllYmV1Y3hxV1VaZnY5UDAxeUk4bWpKRHFGT0lZQUFBQUFBQUJzUFdFWGdIN01sR0NySENlNVdVcTVzYzBCbDdkcGd5OTNTeW0vU25JN1RhZ0h4eEFBQUFBQUFJQ3RKT3dDMExGYTYwRk1ZYlF0anROMGNibGRTbG5zd3dxWFVvNUxLVGNpOURKMmsxcnJUQmtBQUFBQUFBRCtuTEFMUVBlK1VJTFJPOG5ya010eUh3dHdMdlJ5TjZZM0dpdFRHUUVBQUFBQUFMeUJzQXRBOTJaS01GcW5hYVlydXJXdklaZUxTaW1Qa255YUpnQ0VZd2tBQUFBQUFNRG9DYnNBZEtqV09rMXlvQktqOUtDVTh1bStURmQwRmFXVVpTbmxWcG91TDR6SFFYdE1BUUFBQUFBQTRCeGhGNEJ1elpSZ2RKWkpQaTJsM0ZlS2R6dlg1Y1cwUm80cEFBQUFBQUFBb3lYc0F0Q3R6NVJnVkU3U0JGMU9sZUp5MmxyZFNEUGxFNDRwQUFBQUFBQUFveVBzQXRDdFF5VVlqUWVsbEZ1bEZGMUtycWl0MmMwSXZJekJUQWtBQUFBQUFBQis3Z01sQU9oR3JmVWd5VVFsUnVGMktlVllHYTZ2bExLcXRkNU04alRKZ1lwc3pMVFdPaTJsTExmc2V4OG5XZXpnOW5ob1BBenVOTWxkWlZqTFVna0FBQUFBZ0YwajdBTFFuWmtTaklLZ1MwZmF3TXZ0TklFWFFhN05PY2lXUGF4dXd6bkxYZHNRdFZhZG9vYTNLcVVzbEFFQUFBQUFnUE5NWXdUUW5VK1VZT01FWFRwV1NqbE5jbHNsTnVvekpRQUFBQUFBQUhoTjJBV2dPek1sMktpN2dpNzlLS1djSkhta0VodGoyaHdBQUFBQUFJQnpoRjBBT2xCcm5TU1pxc1RHSEpmeS83TjNyMWRPSk1rQ2dDUDM3UC9WV3JBYUM2YXhBR0VCalFXb0xZQzJnTVlDR0F0YVdFQmpBUm9MUm1NQldndFcxNEs0UDVSYU5DelFrcklrbGFUdk82Y1BUejBxTWl2cmtWR1JSVExHZnIyTkNFdTRITWRJQ0FBQUFBQUFBTDZTN0FMUWpaRVFITTJzbEdLWm5UMHJwU3dpNGxZa2ppTXpWWGNCQUFBQUFBQ29KTHNBZE1ORTlIRXNJdUtGTUJ4R1hTWnFMaExHR0FBQUFBQUFnR09TN0FMUWpWK0Y0Q2plbGxMbXduRFltQXVCTVFZQUFBQUFBT0NZSkxzQWRFUFZoY09ibGxMZUM4UEJQY1N5b2c3R0dBQUFBQUFBZ0tPUTdBTFFLRE1IRVRFVWlZTzdGWUxESzZVc1lwbnd3bUZKZGdFQUFBQUFBS2drdXdDME13bDllSk5TeWt3WWp1YVRFQnpjb0NiV0FRQUFBQUFBWER6SkxnRHRKTHNjM2xzaE9LcXBFQmhyQUFBQUFBQUFqa1d5QzBBNzFSWU9hMUpLbVF2RDhkU2xqRlRXT1R6SkxnQUFBQUFBQUNIWkJhQUxUNFhnb0g0VGdsNllDOEhCU2F3REFBQUFBQUFJeVM0QVhUQUJmVGl6VW9xS0l2M3dweEFjbk1RNkFBQUFBQUNBa093QzBBVkxpeHlPcWk1Y01vbDFBQUFBQUFBQUlka0ZvRWxtbW53K3JBY2g2QTBWZGc1UFloMEFBQUFBQUVCSWRnRm9aZkw1Y0thbGxJVXc5SWEyT0FJSmRnQUFBQUFBQUpKZEFGcVplRDZjVDBJQUV1d0FBQUFBQUFBa3V3QzBNZkY4T0ZNaDZKV2hFQUFBQUFBQUFIQU1rbDBBT0FtbGxKa285TXBRQ0k1aUpBUUFBQUFBQU1DbGsrd0MwT1pmUW5BUVV5SG9uWDhJQVFBQUFBQUFBTWNnMlFXZ3pWQUlEa0pWbC82eGhOZHhTTEFEQUFBQUFBQXVubVFYQUU3Qi93bEI3NHlFNENpR1FnQUFBQUFBQUZ3NnlTNEFiWVpDY0JCVEllaVB6THdXQlFBQUFBQUFBSTdsNzBJQTBPUkdDQTdDTWtiOThsd0lqbVlvQkFBQUFBQUF3S1dUN0FMUW9KUXlGUVV1U1dZT0ltSXNFa2N6RkFJQUFBQUFBT0RTV2NZSUFOakdheUVBQUFBQUFBRGdtQ1M3QUFBYnljeXJpSGdqRWdBQUFBQUFBQnlUWkJjQTRGRjErYUo3a2VoRld3eEZBUUFBQUFBQXVHU1NYUUNBVGJ5TGlDdGg2SVdoRUFBQUFBQUFBSmRNc2dzQThGT1plUjhSWTVFQUFBQUFBQUNnRHlTN0FBRGZsWmtEaVM0QUFBQUFBQUQwemQrRkFBRDRWbVplUmNSOVdMb0lBQUFBQUFDQW5sSFpCUUQ0aTh5OGk0Zy9RcUlMQUFBQUFBQUFQYVN5Q3dBUUVSR1pPWTZJTnhFeEZBMEFBQUFBQUFENlNySUxBRnc0U1M0blJ6c0JBTkNYYTRsaFJGeEh4SzlyNTZtemlQZ3pJaDVLS1F0UkFnQUFZQjhrdXdEQUJjck1xNGg0R1JIamlCaUl5RWtaQ2dFQXdFbWRlNDhienVHbXBaUnBEN2RwRU11RStkZmYrZWRSL2ZWZFp2NVdTcm5UbGhFUk1TbWx6TTlzbTA1RkwyTVBBQUMwa2V3Q0FCZWlKcmlNWXBua2NpVWlBQUN3OTNQd1FVUzhpOTBUeko5R3hMU0gyL1I1ZzJ1S1FVUzh5Y3luRWZIaVRLcTh2SXl2eVR6Ym1rYkUvTXkyNlZUME5mWUFBRUFEeVM0QWNLYnFUZWhSTEcrUVg0ZUtJQUFBY0dqWDBWWkpjWlNadzc1VXBkZ2kwZVV2MnhBUkh5UGltZTRBQUFCQVZ5UzdBTUNaeU14aExHOGsvMXAvVmIwRkFBQ082MlVINy9FcUltNTdzajJ2ZDd6T0dHWG11SlF5MFNVQUFBRG9nbVFYQURoQm1UbUtaYVdXWVN3cnQxeEYyeE9qQUFCQXQrZnN3K2htZVpoeDlDRFpwVloxZWRYd0ZtOGlZcUpuQUFBQTBBWEpMZ0RRVS9YbStEQytKckk4amE4SkxnQUFRTCs5NnVoOUJwbDVYVXA1T1BMMnRDN0pOTXpNVVNsbHFtc0FBQURRU3JJTEFCeEpyYzRTOFRXQjVWOXJ2eCtLRUFBQW5MUnhoKy8xTWlLT25lelN4VFhLS0NLbXVnWUFBQUN0SkxzQVFJY3ljMzA1b2ZYZlA2Mi9EbUszTmU0QkFJRFR1UzRZUjdmTGpGNW41ckNVTWovaVpqM1ZzZ0FBQVBTRlpCY0ErTWJhOGtFcjMvNzVYOS84ZVNScUFBREFtdWQ3ZU05eFJOd0pMUUFBQUVoMkFlRE1mWk80TWxyN3AvV25FdGYvRHdBQVFPczF5UFVlM3ZwbEhEZlo1ZmVRNkE4QUFFQlBTSFlCNEtSbDVpait1alRRS29sbEpEb0FBTUFSalBmMHZzUE12QzZsUEJ4cHUyWWR2TWVEN2dFQUFFQVhKTHNBMEh1WmVSWEx5aXRYOFhVSm9hdFlKcmtBQUFEMHljczl2dmZ6T0ZMQ1NDbmxJVE1YRGRkaDgxTEtUUGNBQUFDZ0M1SmRBT2lOekZ4VmFCbkZNcW5sS3I1V2JBRUFBT2o3TmMxMTdIZUoxSEZtM3BaU0ZrZmF4TGNSOFc3SDE5N3FJUUFBQUhSRnNnc0FSL0ZOWXN1djlmZERrUUVBQUU3WXl3Tjh4amdpM2g5ajQwb3A3elB6YVVSY2IvblN5UkdYWHdJQUFPQU1TWFlCNENBeWN4akx4SmFub1dJTEFBQndmdGM4ZzlnK0NXUVhyK0pJeVM3VlRmMTEwMjE5WDBwUjFhVy91bDVhYXRCNHZUK3ZQMTFhYUdZQUFEZy9rbDBBMkl0dmtsdEdvV29MQUFCdzNzWUgrcHhoWmw2VlVtYkgyTWk2aE5LTHpCeEh4SnVmWE90TkkrSnRLV1dxYS9SWDE0bEltVG1LaU04TmIvR2hsSEtuWlFBQWdNZElkZ0dnTTNWOStsVko2NkdJQUFBQUYrVFZnVC9yNXBnYlcwcVpSTVFrTTFmTDB3N3FQeTBpWW5xc1pCd0FBQUF1ZzJRWEFIWldxN2VzSjdnQUFBQmM0clhSS0E2YjhIK2RtYmUxeXNwUjFhUVdpUzBBQUFBY2xHUVhBTGF5bHVEeU10clc0UVlBQURnWEx3LzhlWU42WFRZUmVnQUFBQzZSWkJjQUhpWEJCUUFBNElmWFM2dkVrME43RlpKZEFBQUF1RkNTWFFENHJyVWJ0aTlqdWY0NkFBQUEvK3M2bHBWV0R1MHFNNi9xTWtJQUFBQndVU1M3QVBBWGRhMzVseEV4RmcwQUFJQkh2V3A0N1NMYUVtVmVSb1JrbDU5ZjM0NGk0dGVJR01hUEs1WE82OC92RVRFdHBVeEZqeTM2Mk5WMzl1TlpSTXhLS2ZNRGZwZXI3L1QzbjQwdnN6b0cvVjUvUHkybExFNjBIYTRqNG1uZDV0RUcrL21zbFBMUTh6RnJFSTgvZkRhdDIvUm5iYi9aQ2JiZFZTeVRSbit0N1RmY29MK2V4RGhkSHlSY2pSRlBhNXRlUFhKT01EdjFObDNiOWgvdGo5TzZEeTRPL0oyR2EvdlgxU05qNUdxOG1LMzF1Wk1jSDlmMnM1ZVBiSGZ2eDhnTjlySGhUOGFRVmQ5YkgwZWNROE1aa093Q3dPckVjQnpMbTdSREVRRUFBTmpvV21vMWFiQ3JoMWplcE4vMU9td2NFYmNIM041eExDZExkbkY3aUVtRk91bjlQTGFydURPc1A2T0llSk9aaTlvMnY1a0lPYXY5OWZPT0w1MlZVbTdYM21jWUVXODI2V09aT2F2OWFMTEhNZWpWanVQSWF1d2FyYjNmTkNJK1JNVER2aVoydXhwSDZyMnMxL1c5aGx2dTU5R1gvWHp0b2JOZHFvU052bm12MVRaOTZEb1pwUGExZHp1Ky9NUDZQbEQzb2ZFV2JmZHRmMzJUbWF0ajZLZDk3Vjg3eG1td3RtM2JuaDhNdnRPbTg3VitPdS9oK1BodDI0N3FtUFN6NVIzZnJJODMrMnkvaHZaWUh5OWVyNC9uK3h3ZmV6WkdSaXlYeS96UXArU3l4bjFzdFg5ZDcyUE1yUDMvVGVQYjdPVjh1WEVNLzU5eklRQTJQTUZLRHVtelhuZVIrOWt3TSs4ejh6OTJBVGdaZDBZdjV5Yk9UMkQzbTA5Mks4Y3Q2SGhjdVcvY1IwYVorYnJ4UGNZSDNONjdsbTNkODNjYlorYVhmWnlQMUFtQzF2UEIwWVhzRTZPK0hqZGF6MGt6YzVDWjczWjhqeTlkOW9FYTUzMWVuL3luN3UrRFBvNGpkWC8vVDhmNytmQUkrOG8rMi9Eekh2cGMwMzVkOTZIN1UrcXZPOXhqelZOcDA0N0d4L1cyL2RoNm5EMlI5dGhyZit0b2pMemV3eGg1ZGVUemkzM3ZZMTlhejZucmZ0QWE5L3M5eGU5ZDQvY2FCL1RVMzRRQTRDSnZ5STR5ODJORWZJbGxKdlJBVkFBQUFMWjIzZkRhZVgyS3RMVk0vTXRMYm9CNmZmc2xJdTVqUDVWS1J4SHhoK1M5eTFZbk5UOUhmY0ovQjhPSStOekJSTnF3SnQ5OGpzZVh1R2t4aU9YVDZWOXF0YVMrR05UN1dmZlI3YjJzVWQzV3UwUDBwYm9OKzI3RFVlMXpINCtaQkxLMjNkZng5VDdrUHZ2citBamJkcmZIYmZ0ZW03N3JRNXV1YmY5VjNmN3J4dTI2Nm1qLzJuZDdyUGUzMTlFdmc1b3M4WEVQWStSUnpvVldTWElIMk1lR0VYR2ZtWC9zbWxSV0svNjBudGZ2NjVqYkVyc3V0Z3YyUnJJTHdBVlpQVFZTTDZpdlJRUUFBR0RuNjZ0eHRFMGsvQllSVVpjbGFMbUJQRHAwUllLZXhIK1FtZS9xOWUwaHR2OU43SGRpbXY1YUpicDA4VlQ3ZlVPZkgwZkVId2Z1aDRPSStMaXZKODEzak44KzcyZTkyV2R5U0FkSkFidTRqdVdrL0RHck1yeU03aWZmZjlSZjcyc1ZpcjBuZzlUa3N6K2lmZG1TYmIyT1plTEJWUS8yeVgvVjhYSFFRZHU5NjJEL09tUjdEQ0xpM2FINjJ4Wmo1SGpQWStUQnRuZlBTWEkvY2hYTDVLdTdsdlA3bG43VmRaSnBmYitXTnR2cjBsM1FTcklMd0FYNEpzbGxKQ0lBQUFETldpdXFyQ2U0ZkdwOHIxY1hkbzE3RlcxVk5tQWJWOUZOb2t0TG43K1A3cXVaYkdOY24zWS85b1R1SVQ3L09wWVRuWU9PMjNBMWJnMk9GTGRqTGtNeVBQRG5qV0xQQ1Q1cmlSWEhqT25uSGlTOGpLTUhGY1BYa2dHSFIvajR2ZmUzbm8yUm8zMk1rZCswNTc0cTFHeGpwOFNlVXNvc0l1Wkh2c2JvK3YxK0MrZ3h5UzRBWjB5U0N3QUF3RjZ1dFlhTjExZ1B0YUpMUkVTVVVpYXhMQkcrcStzTGl2MXF3dmhLVCtSQyt2eStuOVRmMUZVc0p4NHZ3VlUwVk9INXliaDF6S1NBWXllOEhHTjcvOWpIc2tZOWFjOUxiTk1mdGNlN0x2ZFhiYkh4R1BsNVQrMjVxcWJXaCtQZUtIWkw3R2xORHJudUtwbW92ay9MZGNLc0p2QkFiMGwyQVRqUGsvd3JTUzRBQUFCNzAxcEo1WHVWWENZTjd6ZnN1dVI1WDY5MW94OFRqSENvUHY4NitqSGh0ektxRTh1WDRMcGhHWXYxTmh6RWNhc1RyRnN0UzNWSlkraDlsd2t2TmRtMVQ4ZWhWWkxGUlI0WGF6TGc2NTYxeGNVa3ZIUjlQRmhMZE9sVERLOTIyTWNtSFh4dVYrZjFyZU9mcWk3MG5tUVhnUE02d1YrVitEdjBHczRBQUFDWFpOencya1d0NVBLdEQ0M2Y2ZVU1Qjd5SEU0eXc3ejQvaW9nK0pwYThydC90RXJ6cFlPTDZUUnhuYVpVZkdjYnhxMkFjMm4ySENRaDlTVnhhTjdqQU5sMHRYVFR1WVZ0Y1V2SlJaOGVEbmlhNnJHeFZ5YWFVc29qMmhKZXVsaWh0dVQ1WXhGK1hYWVZla3V3Q2NENG4rSGNSOGFXSEova0FBQURuZE8xMUhXMFRYZCs5YVZ4TGhMZVVDYit1Q1NIbkdQTStWVWFBUTduMzNYcGg1NFNqT2lhLzd1RTJYVjlRd3RKS2N3SkN2ZmZhMTZvZDE1ZFE0VzJ0TFVZOUhvZFc1eXpHeU8yUEszMnVpck50Slp0UEhYemVzSEUvdVdxTTZVTk4zSUZlayt3Q2NBWW45NW41Unl5ZkZISGpEd0FBWUw5YUs2ajhyQng0YTNXWDhabkcvRTMwZXdJRU9sVXJGZ3g3L0JXSFhTNE4wM09qaHNTUU56MGZWeTlKVXdKQ1RaUjUxZk50dklnbHh0WVNZUHMrYnR4ZHlMNTExWG84cUxFNmhXU3RqU3ZabEZJZUltSis1UFA2ZlY2elFHOUlkZ0U0NFJQN21rM2MxL0orQUFBQTUzWWROb3kybS9HeldzSGxSeWFOWC9IbEdjWjhGUDJzakFENzlNWjM3SlZka3h6NlBIazdPdGRxWUk5czgzakgxNzZPL2o5a09MeVFpajN2NGpRZStIeDFRZnZZenVlZnRmcklteFByZjVzNjloS2wrN3htZ2Q2UTdBSndndXFGeXgvaGhoOEFBTUFoalJ0Zi85T2IzclZVK0tUaC9jOXhvdXRldCtPUzFLVkloaDIvN1N3aXBoSFI1WElFd3d0YUNtZnJaZUpxYkFZZHROdmJpTGlOaUdmMTUyMDlUc3c3Mks1WEY3aUx2ZHR4T2FPdWswa1hkWitjZC95K0w4KzU4ZXArTlQ2UnJ6dUl5MGtLYkVtZU83V0tSTnRVc3BrMGZ0Yk94OWtPemlWVWRlRmsvRjBJQUU3cWhINTFraXpKQlFBQTRQQmFKNUVtRy95ZlQ5RTJrZk15bGhObzUzQU5QSTd1Si8xWEU0eC9ydjNkUHlKaUZLcW1jaDdqVE5RKy9pRWlwcVdVK1hmMnJldUllQjd0azhiUGV6YmVySCtYVWNmdmZSMFI3N2Y0L3kyZlA0dUlGOTlydS9WdHJHTmtTNVdMVVkvYWJsWi8vcjMyZDcvVzc5aGxGWTlCTE8rcjNtMXhMQnAxY0N4YUpiTisrRjYxaEZyZFloVExCS1NXenhwSHhNMFpqNDlkSlk4c0l1S2hublBOVjIxUzIyRll4N2JyRHZyZU9EUGYvbUJmdnZReGNqV0dqVTYwSHo1NlRsOUttV2ZtUTdSVldObjF2UDU1Qi9zSG5BU1ZYUUJPUkQzWlZzMEZBQURnT05ka3JVOUlQdFRLTFQ5VlNubUl0aWU5eHpzK3RkNUhYVDRSUFkySVo2V1VmNVpTWHBSUzd0Witia3NwVHlMaWwxaFdUVmpvOGV6UXY2YlJUWldHVWNOckY3Rk1rbmhXU3BuOGFJSzFsUEpRU3JtSmlDZXhURERZVlIrVzZabEV4Sk95OUd6dHAwVEVpK2d1R2VmcGx2Ly8xeDAvWjE3SHFrZjdVaWxsVXNldFhjZXNxeU1mTHhaMXpQMmxsUEtrbEhMenpkajhvcFR5ejFoV3RKbDIrTG5iVnJSNTNrRWYvYVVlYTJZL2FNdFpLZVY5S2VXWGFLd0cwYk9LUzR1MThYSFJ3WFoxc1cyclBuZFR4OExaTisyd0doOVg1d1I5T3BmWnh4alpWVkxEOHlQSFpoN0xaSnRuWlUxdHg1dU94NUJ0S3E1OGF2eXM2eDMybFVHMEpiTnVkTTBDZlNIWkJmZmYxUmdBQUNBQVNVUkJWT0FFWk9icldDYTZERVVEQUFEZ0tGb251ejVzOFg5Ykp4N0daM0FkUE9yb0duZ1J5NG1QWjZXVTZjLytZeWxsWGtxNWkrWEVpQ2RhK1psNUxKZVcrZVdiQ2NSZjZ1VGFzMWhPdWkyMjdQZFhzWHNsZ1ZWZjM3anYxa25lbGlvUXd5TW1TOHhqT1lGNzg1TUVnb2RTeXJQb3B0TEZhTXYvdjJ0Y3RwcGtyUC8zUmNOMkhhdWkxVVBkZis0ZVMrd3BwVXhyT3o2TGJwSVJCMXNzUTlJYW8wbnRvOXUwYWV2RS9DaU9hMTczdVY5cWd1bHFmUHhuUlB5ejl0ZkpEdS9idXV6V29vNFpkeHNtSHkvcU9VRnJ2enRXRXZMcW1QRFlHUG1pdGxmcnZyVlZ2K3R3eWI1RlJOelc0Ky90dCtkNjlkeHVzamFHekR1Szc4c045K2RKWTJ5M0hhOGkyaE5STFdIRVNaSHNBdEJqbVRuSXpJOXhlbXRYQWdBQW5OVzFXYlFsa0N5Mm1ZQ085cHZNcjg0ZzdGMHM1VEtMNVdUYmRKc1gxUW11RjdGTVpvQnZ2YTJUYXU5L1VqbGxXa3E1amUyckJiVk1xdi8yb3duTlIvcjdMTnFTdTQ2UkxMR2F4SjF0dUkyVGFFOTRHV1RtOEFEYk50cWhEYWUxRGFjNy9BeU90QSs5MkxaeVFOM09YNkt0R3RISzgzMjJTVFd2aVNzNzdjOE4yL1pySE1kNjBzRjNLMHZWNCt1cWNzby9ZOFBLS2ZVODdQcFFZOFozK2wzcitIRjloTFo0dHVuNVR4MGptODk1dHF3cTFNVjUzcnh1NS9zdDJ2SkpSMlBJTm0wNk9lQjQxWG9kTU50bFA0RmprdXdDMEZQMWFaN1AwWStTc0FBQUFKZHMzUGo2eVRiL3VVNFF0ZHhvSHRacnlsUFdlaTI4bXVqWitXbmFPbm55WHZkbnpVMTkwbi9UUHJUWXNsclFzT0c3dGZUVlAxdkdteU8xdzN6TC9Ya1M3UldiRHJHdFY1bjVjZHZFbXBvODhteUhuME5Yc1hxL3pUNzB2WDBxdXFud2NyMUp0WTNHaWh3dENTdlRodGNlczRySSsyM2FzdmFGVFpJUHhoMk1HYk9HZnZjUWJRa0x6dy9jSHJmYmJtOGRJeWVObjd2UnVOVkI4dEtxenozWllUdFhZOGk4OGZNSFd5VDN0Q2F4WDI4NkZ0VmpSMVBpckZNOVRzM2ZoUUNnZitxSjBzY2pYWndBQUFEd1Y2MlZVbjdiOFRYM2pkLzU1aFNEWGErSlc2K0hYN1FrdXF5VVVtNXI0dERJYm5EeDN0Zkp3RjM2MFNJaVhtVG1ZNVY3NTdIYkpQZThzYi8vcStHMXd3TzN3N1FoUWVOdHRFMndqcUl0Q1dGVDE3R2MzSHlJWlNMU05KWlAyeTlPZkI5YVZUeHFIWmNYbWZraWxnOEpSbU43UG16UXYzZHQ4Mm5qZDl2Vk1aSmQzKzZhVEZKS21XWG1zMGYyemFkSEdqTytQUzhiTit6VGh6TGY5VmhWeDhoeHcyY1BEeGlQblJPYTZ4aHlHOHY1bDlZeFpMckI1ODB6YzlxNFg0OWpzNlRXbG11V1JWakdreE1rMlFXZ1orb2FqUGNpQVFBQTBJdHJ0S3RvbTh5ZGJWdUJvSHFJNVpLMnV5WjlYR2ZtN1lsT2pvNGFYei9aZHVtaVI5eEV4QmQ3dzBWYnhJYkxiZnpNWXhQOUhUMVp2KzBZTjRyMnFnbUg5S0VoL3JQTW5NVmhrZ0ZtSFl4bDEvWG5UVzJyV1gzZlArdXhaWHBpKzFGblM4T1ZVcWFaT1duc3UwL2prWW5kbXNEeDdNRDc1R0RWNWpzNjlNT1Q4MjBxdXZ3Z3pvdEh4cjdyWTR3WjN4ay81cnVlRTJibTZFRDc3RzhOMnpodkhDUC9zY1crMStKdDYxSTdwWlNIbHZhc2Z0MnlIN1ljRTE3R1pza3VMZnZLd3hra1ZYS0JKTHNBOUVoOXd1ZTFTQUFBQVBUR01hcTZySjQ2ZllqZEovSldKZUluSnhqejVrbVFMcjlNbmZ5WnhHa2xCTkN0czVzQXFra3VMMCt3WDdjK2RUNk53eVM3L0xtSDk3eGEvKzZaR2JGTWZsa2x3RXhiSjREM2FMS0g3OVphaGVLcVovdmtzQjYzWDhWeGxnZnJ4VEgzQjJOVmkxOHo4NjRIY1JyRllTcER0WTZSbnhyMmphc3RZckdyUlhTM3hPU3p4bjF0c1dXN3RDU3hYMlhtOEdjSjlIVmZhZGtlU3hoeGtpUzdBUFRuZ3VZKzNEZ0RBQURvMDNYYUttR2tSY3VrdzRmRzY4UlhjWnJKTGkwVGtBODdWdEo1ekNmWDdCZnQwd21PWFZmZjdGT0RXQzVYTkl6VFhaYXJpNlY4L3QzdzJtMldlNW9lY0x4Y1Q0Q1oxOC8rMExQS0w1M3ZRelVSOGFIaE9EMDY4SDY1Mmcrai9ub1Z5MG9ZcXdweXd4UGRML2ZkejFyajBwY0hTLzkxZ005WWRIQU9kSWlFdVpZMjdTejV0TVpxZm9qRzd5Q0pmWFZlLzdNS1dTOGJqNjk5VFphRW41THNBdENQbXhBU1hRQUFBUHJuT3RxV0E1aTAzSkN2eXpUTVkvZEpnVWVmQXUycGxwai92bzh2Vk12ZEwrTHd5MFBRRDlNK2ZxbjZGUGNvbGtzcERPSjBrMWcyMWNWWTFqS1p0L0ZZWEJNeHBrZG9rMkVzN3pHTzYvSGp0OVpqVVZkajZKN2UrdmRvVDBydGNwOWNKUi85R3FlZnhMSnhYejlBbno0SGg5aU9McElWRm52ZVIxckh4RThuM0FkK2k3WTVvT3Y0UWJKTEJ3bjZxcnB3c2lTN0FCei9Ja2lpQ3dBQVFEKzFMbUgwN3c1dTZzK2liWUxrc2FkQSszYU5mTlZCdlBabEZ1ZWZUTUIzOUdVSm83WEpyT2ZSb3duK0Evcnp4TDd2MnlPUEdjTllMcHZ4SmpOdlN5bVRJMzJQYVYvZk96TkhyUlZ3Nm5IclZXM3I0WVh0azlNRGZNYlRNNG5WSWZyRzJWZm0yR1BpM0NHKyt5d3paN0Y3QmNQaFQ4YXNsZ1Q5UmJRdmZ3VkhJOWtGNElna3VnQUFBUFQyZXUwdlMwUHM2RTM5T2FaeG5GQ3lTelJXVHRuenNoMlNYVGpXZURTSTVWSWNyMEoxb1pOUnEzTzFMTFBUNWJoNm41a3ZJK0xGRVpLM1pudU04U3d6ajdWZmp1c3hmcWkzczRGRDlKUC9PNEU0dEp4SHpjK2dIM3hvdkw1NEdkOVBNbXRad3VpaEwwbTlzSXUvQ1FIQWNVaDBBUUFBNkxXWFo3SWRnem9oUjd2L0V3SU9MVE5mUjhTWFdFNnFTM1E1UFRmUm4yb0xvNGo0MGtFRnJZc2VPelB6S2pQL2lJajdrT2dDaHpRL2cyMllOTDcrK2p0ajBqRGFrb2dzWWNSSmsrd0NjSnlMSW9rdUFBQUEvWFpPMTJ3dk5TZWNsc3djWk9ibldDNURJOG5sUk5XbjVaOUZmeEplQmhIeCtRZ0pMK2V5WDQ0ajRvOW9yL3dHWE80eFlkSXlobjhuaWIzbG1tVldTcGxwR1U2WlpCZUF3MThVdlF1SkxnQUFBSDIrYmh2SGVVMHVqK3BUbjhCcGpFR0RpUGdjbHMwNkN6MU5lTG12L1l6Tjk4djdXRlp6QVdqeG9mSDF6Ny81YzB0U3U2b3VuRHpKTGdDSHZTZ2F4M0tOWlFBQUFQcnJIQ3VoakRVcjlOOWFvb3ZLRVdla2xMSW9wVHlKaUxjOStVcFhjYmg3bFA4NGcvMXk3RGdLUnpjOGsrUEJOTnFXWkxwZUpiSFhLbDI3eG1VUkVRKzZGYWRPc2d2QTRTNktSaUg3SHdBQW9PL1hic000ejJvS0x5K2svZmFaSVBEVUhzSUJ2QW1KTG1lcmxISVhFYjlFMnpJV1hYbDFvT291ZSt2UGgxaU9xWDZHZTdyUWpXbkRhNGRuRklmVzZpN1hxM0c4NFQwZWF1VXhPR2wvRndLQS9hczNTeitLQkFBQVFPKzlPdFB0R21ibWRTbWwxMDl3bGxLbW1kbnlGcVBZMzFJaEVoRFlxM3IvNkZEVk5tYjE1L2RZUHQzdHZ0WGh4cmw1Uk54azV0dFlWZ3Q1R2NlWnhCM1V6MysvNTgrNTZ1dDcxd29MajNsM29QYVlyKzJUMDRqNHc5N3kzN2pzYWhJUi94YkNzenBPOXY1Y2RvdSsrYWJoOVMvcjJIM2Q4QjZXTU9Jc1NIWUIyUDhKMktEZU1MQU9MZ0FBUVA5ZG4vRzJ2WXpUS0ZlK2FMaUdmaHA3bUxqTnpHdlg5UnpBbXc3ZmF4ckxpZlAvVy90elJNUzhKbHVzOSsrUjBCOWViWWU3aUxpcjFVT3U2eGgyeVBaNEdmdFBkaG5zY1lMNmVlT3g1ckd4LzZyRDlwalhmZkxQK3VmWjZqdDhMK21tTWZIem5MUWtxeXhxTlNYNlk5YkJQbi95eVM2bGxIbG1QalJjZDF4bDVydUdjOU5aS1dXbU8zSU9KTHNBN04rNzhQUVhBQUJBNzlXRWh1RVpiK0oxWmc2L25lanVvVm5zUHJtNHIyMThiZy9oRVB0b0Ivdk9iNldVeVphdms4aDFaSFhTY2JaMlBCckY4bjdpci9YWGZkMWJ2TXJNd1FHV3N1aDhncnBXUXJwdTNGOGUwMXJ0YlJITDZnbVRFemoyOXZtY29HVk12UlhDWG8xMWk4eWNONXh2WDJmbWJWZGpWbVorYVR6M2Y5dVFVUFdoY1F4cnFRU25xZ3RuNDI5Q0FMQS85VWJwV0NRQUFBQk93c3NMMk1aVHFGelQrcVJwbDlVeFZoT3FydTNacTVyYzBKSjBNaW1sUE5raDBTWENRMXE5VTBxWmxsTGVsMUp1YXJ1V2lIZ1d5NG43U1hTN1hOc2gybjljeDlJdXRZNzFtOFJ3MVBqK1Qwb3BkOXNtdXRSSzRiU2ZFd3hWcnVxbGFjTnJCOUhSY24rMWJ3eVAxVDlydGF2RkVlSy9pRE9vamdNcmtsMEE5cVJld04yTEJBQUF3TWxjdzExZndLYStPb0h2K0h2ajY4ZDE2WW11dUxibkVFWU5yNTJXVW00YVh2K3I4UGZmdHdrd0VmRkxSTnpFY25tY0ZvZEtyT2hzTEsxai9QZ0F4NXBody92Zk5GUnpHZW54LyszMzg4WSsvazRVeis0ODcwMUg1M2xkSkVkUEcxOC9PVUw4SHc1UXpRc094akpHQVB1OWdKT0ZEd0FBY0JyR0Y3S2R3OHdjbFZLbVBmNk9YWHkzajVuNXBQVm1mbWJlaFVsSCt1OURReDhmeEdVaytoMUVyZks4NnlUc2RKdXh1U1lCVENKaWtwbjNEY2V4cXpqTVUvNmp6THhyV1BKanZjOStiUDB5dGFyQ3p6Nm5aZXlmMXFXcGRtWHB2TDk2aU4ycmVWeGw1bjFqUW1CazVzZkdzZkp0YTk4L3MvWnNUWDVyT3MvcjZQeHUxa0hTeUcvUlVhV2FMVDhUem9aa0Y0RDlYTmkrRGpmREFBQUFUc25MQzl2V2FWKy9YQ2xsa1prUDBUYXBOSXlJejVuNXJHRWlaQndkTDRrRVAvR3ZodGZPRzE2cmozZnJxaUdtLzJvWW0yL2pOSkkyMzJUbWZNZmx0bGFKTHAramZlbVIzaTdoWWVtODcvb1FiUWtCNDh5TVhSTmU2cjMrNjNQdGN5ZCtubmV6YldKWmgrZDNIenFJeFR3enAzRzR1YVJaWXlJZTlJNWtGNEQ5WEpDNFVjQWxtTGo0QmdEZ1RLN2pSdEUrY1RZOTRGY2V4TzZWQXlLV2t6NjNQUzloL2luYUo1YXVJdUtQT2hFeTNhSS9ER0s1N0lIckhVN0YxUzVqVUIzN1hndGZwMW9tRWNlWitYYVhwVy9xNVBHcHhPZytNNTlHeEZiSG9kcGY3enM0WGtkME1FbjlpSjIrWTFkVmE4NU5LV1dXbWZQR3RoL1grL1piTFM5Vks0QzAzdXVmU3pENDdqN1l4WG5lNXpwdXZ0OXcvM3JUNFhGdjBtRXNSZ2VLdTZvdW5CM0pMZ0RkZXhlV0wrSjh6ZW9KK0tUZVNCa0xDUUFBWjZDMXFzdWt0VHorTnVyTitpK04xNTdqaUhqZjF3WXBwVXd5ODAyMFQyb09ZemtSTW9tSTMzNDIyVlRqT283bFJJanJlZzd0M3cydmZaV1preDBTQjB5cWQyL2ErUHFQdTFTa2FsMXk1d2h4R2tmRWRXYStyY2ZReFUrMjdTb2lYa1YzQ1lqeng1WXdxbG9TUW9lWitYcVRDZmh2amtHZm95Mlo5Wnk5amZhbGIwWVI4YVdlRTN6NFdTTHNXdldQWVFmZlhZTEIvNTduUFhTUXdCVDFmTzFkWnI2S1pmV2NUOSsyYXgwZm45Y3hwS3Z6dTBsWFNlUDFuUGNRYzBxTFVHR0lNeVRaQmFCRDljVEpPc2VjbTFXQ3k4TXVUeGNCQUVEUHIrTldDUTR0UGh6eU82K1ZmMi81M2krang4a3VhM0h0cW5McU9KWlBkYzlqT2JIN2JXTEIwN0FjTWFkckdNdWtyaGVQWGJldlZTUWVDOXZleHVkWjdKNndzSFZGcWc0U2w0NVY1V3RWUmV0ZFhjYmo5Mi8rL1Y5MVhCNTIvTGx2TjJ6TFdXTzFuSGQxNlp4TktrNk13d09VajNub01FYXJjNEtJcjhsZTg3VysxdVg1d0NLNnF3QnlicnBJWUZvL0RyNk9pTmNIcW5MMWRnLzllOS9INVllZVYzV0VuVWgyQWVqV3ZSQndCaGIxUXU5VFJFd2x1QUFBY09iR2phK2ZiN05FVG9kK2EvenVWNWw1MWZPeSt1OWptWlF6N1BBOWgyR1NuMzZhUmx0eTExVXNLeFk4eERKcDROdDlleFFSdjRhSHRBN2hRN1JWNXhqR01ubHBIc3NKMEQ5ak9SRy9icldjM2ZQR3o0cWVIQWRHY1ppRXcza3BaYkxOLzI4OEJxMHFUbnlJLzYyZ000eGxvdVYxU0hMWnBKOHVNdk0ydXIvL3Z1OSs5NXNFZ3grMjZhVHVINmRXeldpeWgvdmxyZWYxbTM0R25CM0pMZ0FkeWN6WDBmMlRCbkFvMDFqZURIdXdoaXdBQUJmbVZlUHJqM0xqdUQ1eFBvMjJTWnBYRVhIVDE0WlptOWl5MUFwbnI1UXk3ZWhwOU91UTBISnNrK2htT2JSaExDc1Y3Tk9sTFdteDdURnZHdTBUME1QYUg5N1lOWnJIeVVsbXZvelRxY1Eyai81WDBldkRQdm5IQ1gzZlJYUmYxV1YxWHQ5U0Zld3hNL2Y4T1ZkL0V3S0FkclhzdFFzV1RzVThsamN6YmlQaVNWbDZWa3E1YzlJTEFNQ0ZYY3RkUmZ0REM1TWpia0xyOGtuWDlYcTJ0MG9wRDNGNWs3RmNMbjM5RE5RcURwTVQrYnFmTHFocDN1OVFpZTJESHQwN3QzRzhwYmUyL3E2cXVqdzZYczVpRDhramUvUjJqMVhROTVsQXI2b0xaMHV5QzBBM1hvZHlrL1RUUEpZM3k5NUd4TE9JK0djcDVaZFN5b3RTeW52SkxRQUFYTGpXcWk2VFkwNWkxS1VZV2o1L0VLZFJBZUltVG1kaUMxcVlqRG9mYjA5ZzNGcHN1YVRQS2R0cFFyMG14OHgxNS82bzl6SnZUK0NyUHRTRVhSNXYwN3M0aldUUGgxTEtQaXYxN0NzR2k1Qk15eG1UN0FMUXFENEY5MG9rT0xKNUxFdXJ2cThYZk05cXhaWlZZc3RkS1dYcWFRSUFBUGpMdFZ4cm9rY2Zub2lmTkw3K1pkL2JxbDdIUEFzSkw1eTVPckUrRlltemFNdEY5SGladU9ydGhUVEhJaUp1R3U2SnZkV2plN2QvVGFMZnl3UE5UbUQvNzV1YkdyZUxiZE05VmdWN01DZkFPWlBzQXRCT1ZSY09lVkk5clJkenEwb3RUOWFTV3A2VlVtNXJ4WmFwY0FFQXdFOWROMTdMelh2eXhHNXJKWWhSWmc3NzNsajFTVzRUUjF5Q1d5RTREL1VZTWVucDE1dnR1VUpCWHl4aStVRFlyS0VkSnlFSnJZLzcxMjFQOTYvVzVLcExiYzlWWXZPc3AyMzY0a0J0dW8rbDAxU040Nno5WFFnQW1xbnFRdXZKOG16dDkzL1czOC9yVDBoY0FRQ0FYbDdMZmVqRFJwUlM1cGs1alloUll5eDZQOEZlU25uSXpHY1I4VEU4ZE1LWktxWE1Ndk1tSXU1RjR5emE4eVl6SXlMR1BmcGFpNGg0Y1FIaGIwNTBXZk1pSXI0NDl2UnkvMXJFOG1IVWMrdHpsOWllaTNxZTl6a2lybnJ5dGVheFRIU1pIeWdHMDh5Y1I4U3dvN2VjNlkrY084a3VBQTB5Yyt3aWg3V0xtZG5hU2ZDL3YvUDMvejFwRlM0QUFEanF0ZHd3Mm0raVQzcTBTUitpTGRsbEhDZFNUYUpPQXF3U1hvWjZNK2VvbERMSnpLZHgyQVNKOTdHc2VHVy82cjQ5KzVUd3NwcU1uNTk1MkdmUjRRVDFONVB3Z3dOdXc2ZUllR012K21uYjNHYm1ueEh4TG81N24xNmlTMGY3V2tROHljejdIb3laczlxbWg2N1M4MXZ0ejEyOUY1dzF5UzRBYlZ4c1hKWlpMQk5aL295dmxWZm1GM0NEQUFBQXprMXJWWmVIUGwwSDFJbnhsa21lUVdhTzYxSU52VmNyWHp5SlplV0w2d04rOUNJODhNTGgrdmxOWnY0N0RuUHY2WDJkTUI1RXZ5cVFhTTl1eldLNXZNcTVUOGEvajRpM1hVOVExMlBQb1JKZVpyRmMwbVVZN2o5dmVoNDBpMldDd09nSVgyRWFoMXZtNXBMR3pFLzFYTzhZNTE1dlN5bDNSOXI4aCtnbTJXVlIzd3ZPMnQrRUFHQTNtVGtLVDd1Y3MybEV2STNsbXZCUHl0S1RVc3FMVXNwZEtXVlNTcGxLZEFFQWdKTTBibno5aHg1dTA2VHg5YzlQcVFGTEtZdFN5b3RZTGkyeDcrdXlSYjAyOUhRc2grN25kN1dQTC9iWnQwc3BxOHBPdjR2NjN0dnpTU3p2T1IzYSt6aGUxWWxwL2Z4OW05ZHR2TjFYMGtHTjN5OTdic09IdWgyTCtua1NLRFpzbTFMS3MzcThQbFRNRmhGeFcwcDVKdEZsTDIzNlVQZTM5d2Y4MkdrczV3THVqcmpkOCtnbVNlVkJ2K1FTU0hZQjJOMUxJVGdicXl6bjIvaWEyUEpzTGFsRitVa0FBRGdUSFN4SE82ODMzL3VtTlJIanVpN3ZkRkpLS1ErbGxGOWlPYmsxMzhOSFRDTGlsMU9wZXNQNTJlTmszelNXOTBEVys3WW53UGZmbnFzSitXZHhtS1NYMVJoMmU4eEp6NXBRdGE5RW4za3NrN1orT2NUUzRUVUo1ZGtlamp2eldGWUgrYlpDeU5TZXMxWDdUT3FZZVJ2N1M0WmR4UEloeVY5S0tlOUZmZS83MjIxdDAwbnNMNUZwVmZtcUwwdFJkWkZZTDBtYml5RFpCV0FIeXJxZWhWa3NieFE5S2FYOHMxNUl2cGZZQWdBQVo2KzFna2tmcTdwMDlSVG85YWsyYW4xUTRaZFlWc0dZUk50a3lEeStUbUxkZUNxV0h2VHY5Y20rdDlFMmdUdUpaZFdJWjk5V3E2MTkzWDJSdzdUcHRDWk1QSW5sL2FrdTR6Nkw1VVQvYWd5YjkyU2JaMnZiM0RwT0w5YjY4bEVTRXRlT096ZlJscEF5aTYrVnBiOTNIRmR4YWJjeDgzMkg1d1VyMDlwV3Y5U0hKSjBmSFBBOHQ1UnlVNCtETjlGTmN1WTh2czRQUE9sVFluTWRDMXJHN3BsNURpNW1mQkFDK2lvelA4ZHgxbGU4VktzTExEYnJuK05ZcmhmSmFabkg4c2IweFBKRG5lMExLUW9IZDh3MVk1MmJPRGR4ZnNLcDc4ZWppUGdzRW81YndFV04rNk9JK0RXVzFYeXU0dnRWZmFheG5BVDd2WjUvbUJ6Z0ZQcjNWZTNmVDJ1Ly90NjF5aXA1WmJiV3YwM085cmROaDNXY3V0cGczRnB2MzBWRS9GbC92NWMyYmp5UC91RjEzVGZqOUdyN2Y3U2Q4N3FkdlJ5bjY4T1IxM1Zicmh4emVqMXVydnJiNmlkKzBFNVIyMmx2K3hiTis5elZOK2Q2b3gvODkzbjltVVhFdjA5aDM4dk0vOFR1MVNodlZDWGtVdnhkQ0FCMllnbWowektKaUErSEtHVjZnUmVJQUFBQXZWU3ZBVjBIY3E3OWU1WEVZZ21OODJuVGVTd25ZeDh1YUp2UFpweXVpUkFUUGZra3hrM09aNTg3eTNPOXpMeU8zUk5kRm1GWlFpNklaQmVBN1U4MGh1SEovbE93aU9XNmxLcTQ3TTlBQ0FBQUFBQUFvRE92R2w3N29Bb1JsMFN5QzhEMnJvV2cxMVpKTHUrZDFBRUFBQUFBQUtjZ004ZlI5ckQxYjZMSUpaSHNBckM5cDBMUVc1T0llS3VTeThFTWhRQUFBQUFBQU5yVVJKZjdocmVZMXVXNjRHTDhUUWdBdGpyWkdJVEtMbjAwajRobnBaUWJpUzRITlJRQ0FBQUFBQUQ0cTh5OHk4ejd6THg2NVA4Tk0vTSsyaEpkSWlJK2lEcVhSbVVYZ08yTWhLQjNKaEZ4YThtaW8vaUhFQUFBQUFBQXdIZU5JMktjbVl1SW1FYkVuMnYvOW85WXpqbGRkZkE1ODFMS1JMaTVOSkpkQUxaakNhTit1WEVDZDFSWFFnQVlad0FBQUFEZ3AxYXJCdXhyNVlDM1Fzd2xrdXdDc0oyUkVQVENJaUplbEZLbVFuRlVReUVBRG5BakFBQUFBQUQ0UGxWZHVGaC9Fd0tBeldUbUlEeGgzZ2VMaUhnbTBhVVhoa0lBSE9qNEN3QUFBQUQ4TDFWZHVGaVNYUUEyTnhLQ1huaFdTcGtKdzNGbHB2MEJPQlNKcGdBQUFBRHd2MVIxNGFKSmRnSFluTW0yNDd1UjZOSWJReUVBakRjQUFBQUFjRFEzUXNBbGsrd0NzTG1uUW5CVTcyVW8yeCtBaS9TckVBQUFBQURBWHp5VVVxYkN3Q1dUN0FLd09aVmRqbWNlMXAyMFB3REdHd0FBQUFCZ0hxcTZnR1FYZ0UxazVpQWlCaUp4TkRlbGxJVXc5R3AvTVBrTUhNcElDQUFBQUFEZ3YxNllNd0hKTGdDYk1yRi9QRk9sK0hwbkpBVEFJV1dtY1FjQUFBQUFsZzhIejRRQkpMc0FiRXF5eS9GWXZxaC9uZ3NCY0dBaklRQUFBQURnd3QyVVVpYkNBRXVTWFFBMll3bWo0NWlwNnRKTEl5RUFEa3lTSFFBQUFBQ1hhaEVSenlTNndGOUpkZ0hZekZNaE9JcmZoS0JmTXZNcUlvWWlBUnpZVldZYWV3QUFBQUE0RmZPTzN1ZDlSUHppd1dENFg1SmRBT2l6QnlIb25aZENBQnpKV0FnQUFBQUFPQVcxQ3NzdkVYRWJ5N21PK1JZdm45WFgvVkpLdVMybExFUVUvdGZmaFFCZ0kxZENjSEF6SjNDOU5CWUM0RWhlUnNTZE1BQUFBQnhXclNaUVJBSmc2L0Z6SHN2S0xPOVhmNWVabzdYL3N2cjlJcFlKTHFHQ0MyeE9zZ3ZBWmdaQ2NIQk82SG9tTTYvdEMxdzRDWGpITmN6TXNiV0pBUUFBQURoVjN5U3pURVVFZG1jWkk0QkhaS2JKL2VQNFV3aDZ4eEpHR0pjd0RnRUFBQUFBY0hTU1hRQWVad21qNDVnTFFYOWs1akFpcmtVQ09MSlJabzZGQVFBQUFBRGdza2wyQWFDdlprTFFLMitFQURBZUFRQUFBQURRQjVKZEFPaWxVc3BDRlBxaEx1VTFGZ21nSjRhWmVTY01BQUFBQUFDWFM3SUxBUENZMTBJQUVSRWhDYTgvM21TbVpRWUJBQUFBQUM2VVpCZUF4NDJFZ0V1Vm1jT3daQWlzV0Y2dFh6N1d5bE1BQUFBQUFGd1l5UzRBd005SWRBSDZhaGdSSDRVQkFBQUFBT0R5U0hZQkFMNHJNMGNSTVJZSm9NZEdtWGt2REFBQUFBQUFsMFd5Q3dDOWxKbFhvbkIwNzRRQXZpcWxURVdobDhZU1hnQUFBQUFBTG90a0Z3RDZhaUFFeDVPWmR4RWg0UWc0RmVQTXZNOU14NDdsR0Q3SXpLRklBQUFBQUFEblNySUxBSDAxRW9ManFGVjEzb2dFZk5kQ0NIcHJIQkdmTHpuSkl6T0h0Y3JObDdBTUhRQUFBQUJ3eGlTN0FOQlh2d3JCNGRXcUNKWURnUitiQ1VHdlhVWEVINWw1ZlVuamRtYU9NL056ZkUxeVVlRUdBQUFBQURocmZ4Y0NBSHBxSkFSSDhTNHNYd1NjdGtGRWZNek1oNGk0TGFYTXozRWphMExQODRpNERza3RBQUFBQU1DRlVka0Y0SEZ6SVRpS1FWMU9od1BKek5kaDJRdDR6TzlDY0RLdUkrSkxadDdWcWxXblBrWVBNdk02TSs4ejh6OFI4VEZVY1FFQUFBQUFMcFJrRjRESHpZWGdhRjRKd1dIVUNnSHZSQUk0UTI5aW1mUnluNW5ERXh1YnJ6THpkVjJpU0lJTEFBQUFBRUFsMlFXQVBycytoNmZ4KzY1VzBMa1hDZGpJVkFoTzBpQ1dTU0pmTXZOelpvNzdlSHhaUzI3NVdLdTMvQkhMUk1TUkpnUUFBQUFBK09ydlFnQkFqdzBpNG5WRTNBbkZmdFJFbDgraFNnQnNhaUVFSjI5VWYrNHpjeFlSbnlKaVdrcVpIbmo4SFVYRU1DSitqWWlya05BQ0FBQUFBTEF4eVM0QWp6T3hlVnl2TXZOOUtVVTdkRXlpQzJ5dmxETExUSUU0SDFmMTUwMXQxMW45K1hmOWRSRVJzMTJPUVhXTUhkU2ZxNGo0Ui8xMVdIOEFBQUFBQU5pUlpCZUFSNWpZUERyVlhmWkFvZ3MwbVlka2hYTzFTbjc1ZHN4Y2IvdjVEMTQ3MUM4QUFBQUFBQTVEc2dzQXArQk5aajZVVW1aQzBTNHpyeVBpUGlTNndLN21JYW5oVWcyMVBRQUFBQURBOGYxTkNBQTJNaGVDbzd2UFRNa1pqVEp6SEJFZlE2SUx0UGhkQ0FBQUFBQUE0SGdrdXdCc1ppNEVSM2NWRWUrRVlUZVpPY2pNKzFoV2RBRWNFd0FBQUFBQTRHUlp4Z2hnTTNNaDZJVnhaa1lwNVVZb05wZVpWN0ZNY3JrU0RlaUVKZFVBQUFBQUFPQ0lWSFlCMk15L2hhQTN4cG41V2hnMlUyUDFPU1M2UUdkS0taSmRBQUFBQUFEZ2lDUzdBR3htTGdTOThxNHV5Y01QWk9aVlpuNk81ZEpQQXhHQnprMkZBQUFBQUFBQWprT3lDOEJtNWtMUU8rUE0vSmlaRWpuV1pPWWdNKzhpNG8rSUdJa0k3STNxTGdBQUFBQUFjQ1NTWFFBMlVFcVppa0l2WFVmRUg1azVFb3FJekJ4SHhKZUllQ01hc0hkL0NnRUFBQUFBQUJ5SFpCZUF6YzJGb0plR0VmRTVNOTlkYXBXWHpCeG41cGVJdUE5TEZzR2hUSVVBQUFBQUFBQ09RN0lMd09Zc1dkRnZyeVBpUzYxdWN2Wld5eFd0SmJrTWRRRTRuRkxLUENJV0lnRUEwSFJkczFxZWR0MS82dCtOTHpRbW83cjkvL2ttTHA5cnZEemdjTDc3d2JkdGZySDdBUUFBYkVLeUM4RG1MRm5SZjRPSXVNL01zMDE2cVRjKzd5UGlQN0Zjcm1pbzJlRm9wa0lBQUdkM3J0MWlKSW9ieC9vcU0vK0laZUwrOVhldTY2N3J0ZDBmbVhsMUlURVpaT2JuaVBoY3QvL2JwSlpSalplbGZNOTNQL2kyelZmN3daZEwyUThBQUdBYmtsMEFOamNWZ3BNeGpLODNoTzR5YzNqS0cxTnZnTDJyVlZ3K1I4UllFME12L0M0RUFBRGJYOS9VNjVwTkp1K3ZZcmxzN2RVRnhPUkxMQk5hTnJuZS9heml4MFh0QjhOWUpqbGRpeHdBQUh3bDJRVmdjNVl4T2ozRFdGWS8rYklxLzNzcUpaL3JVNldyQkpjL1lybE0wMUNUUXE5TWhRQUFZS3ZybkVFc0ovaTN1UzRieERLNVkzaWs3L3o2QUpWVTdyZU1TY1R5QVEvVlB2YlQ1dS8yMmVaMVAvaTRZNXU3THdBQUFKVmtGNEFObFZJV0llSGxsRjNIOGdiaWYyb3A3THUrbEg2dTVhcEg5VHQ5enN5TTVRMWdDUzdRNytQQ0xDTG1JZ0VBc0xGM3NmMEVmOVRYdkRuQ3RkcDkvYzc3L0l5NzJLeTZ4L2Zja25IYjJRQUFIa3BKUkVGVTYxS2RYNXQvck5maSs3VHJrc1FEYlE0QUFGLzlYUWdBdGpLTDNXOUMwUjlYOWVmTk1xOGtadlhuei9ycnZKUXkzOGNIMXdTYlFmMzhYK3V2UTAwQ0oyc2FsaFlEQU5qa1dtalFlTjQwenN5Mys3cFcrODUzM1hTSm1WWXZXNjV0TTNOVVNwbnFZYWZSNWgzc0I2UE12S3FKOXdBQWNORWt1d0JzNS9jd3FYbU9Wc2t2LzFXVFlPYnh0V3JETENMK2I4djNmVnAvSFlRa0tUaFhueHdYQUFBMmN0M1JlN3pmNTVlc1N3UGRIK0lhcm43V3NQRnRub2ZsTmJ0b2gyMlgxOXJWcUlQUHVRNlZod0VBUUxJTHdKWWVRc25ZU3pLTXJ6Y2VSOElCZk1kVUNBQUFOcjYrYXZXdmZYN0JXb256WXh3bTZTR2ltNFFhRDFhMHRmazRkbDllNjFqdDlhdVdBd0NBaUw4SkFjRG1TaW1MOFBRTUFIODlManlJQkFEQVFld3RzYU1tUFJ5cXVzZktVSk1lVDJhK2p1VURUWU1UKytvRHJRY0FBSkpkQUhZeEZRSUExbndTQWdDQWc1anY0MDB6ODEwY3A0cnJRcE1lUjJiZXg3S2lDd0FBY0tJa3V3QnM3NE1RQUxCbUtnUUFBSS9xSXJIajMxMStvY3djWk9iSGlIaDlwSmgwVVRsMnJtdHQzZVovUk1UNFNGK2hpL2I2WFVzQ0FJQmtGNEN0bFZKbTRla3JBTDRlRitZaDRRVUE0REVQUFhtUGlGZ21QY1J5MmFMckk1NUhUcVA5L29MRWg4M2IvS3EyK2RXSjd3ZXVQUUFBSUNTN0FPenFRUWdBV0tQcUZ3REFUM1NRSUR5dEQ1ODBxMGtQWCtLNFNROHJMZmNYNXFXVWlkNjFVWnVQNHZpSkxsRktXVVRFcExITnAxb1VBQUFrdXdEczZwTVFBTEJHRWlRQXdPTnVqL1RhLzhyTWNTeVRIZ1k5aXNuaW1ERTVkejFzODdjTmJYNmpSUUVBWUVteUM4QU9TaWtQWVNrakFMNGVGeFloNFFVQTRMRnpwbG5zTmxsLzAwVlZsOHg4SFJIMzBaK2toOVY1NUxQWS9oN0QrM3B2Z3ArMytidmE1bjNhRCtZTis4RlVxd0lBd0pKa0Y0RGRUWVFBZ0RXV01nSUFlRVJkZHVkRmJKYmNzWWlJRjEwczFWTVRYZDcxTkNheldDYTh6RGVNeVUwcFJWV1h4OXY4WFVTODdtbWJQOFRtU1U2ck5wOW9WUUFBK0VxeUM4RHVUR29DOEYvMWh2VmNKQUFBTmpwditpV1d5N2w4Ny94cFh2L3RsdzZybHd4NkhwTlpSRHlKNWRKRXN4L0U1SDFFUEpIMHNMR3JucmY1ZEl2OVFKc0RBTUEzL2k0RUFMc3BwY3d5Y3hZOXYza0N3RUY5aUlnM3dnQUE4T2cxOVNJaTdpTGlMak1IYTlmV3MvcHZseHFUOXhIeC9wdVl6T3ZTTjlnUEFBQ0FTcklMUUp2Zm9tZHJQd053VkpPUTdBSUFzSlU2cVQ4VkNUSFI1dG9jQUFBMlpSa2pnRFlQc2RuNnlnQmNnUHJFN1VRa0FBQUFBQUJnZnlTN0FEU29UOTFNUkFLQU5SK0VBQUFBQUFBQTlzY3lSZ0R0Zm91STE4SUFRRVJFS1dXYW1kT0lHSWtHQUhCTW1Ya1ZFWU9JR05hZmlJaFpMQ3VVTGtvcE0xRmloMzQxaUlpcitzZjEzMGVzTGNOVFNwbUtGajN1eDZ2cnRmWHhjVkhIeUlpSWVhM2NDUUJBVDBsMkFXaFVTcGxuNWlRaXhxSUJRUFUySkxzQUFCdFlTMGpaMW5lVFZUSnpIQkhQNjduSTRKSFBqbGdtSi93ZUVRLzdUbjdKekdGOG5WVGUxazhubnRjbXJuL2tYdzFmL2FyR2FwdDdCZE1OWS9KdHNraG5NZW00ajE1SHhOUDZYWC9Xcjk1ODA3L21zVXdlK0JRUjB5Ni83d1p0UHVocG0rOWxQMmpzU3o4Y1U0NHd0bTBWenkzMnMxVWZIbTBhLzh4Y0piOGNaSXdFQUdBN2tsMEF1dkVoSkxzQVVOWHFMdlBZL1NZMkFIQTUzc1Z1U2JMVGlIZ1c4ZCtKM05jUjhTcTJuMXdlMVo4M21UbUxpTjlLS1pNOWJlczQxcElodHZRMkl1NSs4dStmOTl4R1c1OFNidmovcmhxKysyTXgyVmxOeUJoSHhNdkdjOXBoL2JtdTd6dU5pQThkOWJGVGJmTzk3QWVsbEVWbWZvemRFMHptRWZGTGh6SDhvK0cxblh5WG1oRDFNbmEvWnpmNFpveWN4N0xDODZRdWJRNEF3Qkg5VFFnQTJ0V25UYVlpQWNDYXQwSUFBT3hibmN6OUk1YVQ1NFBHdDd1S2lQdk0vTEpCMVF6T3N6OE5Ndk0rSXI3VVBqWHMrQ05HYTMzc1dzUTc5OUR3Mm1HdHh0SkZQN28rNG5aRVpvNHk4M01zRTZMR0hjWjNHTXRFcUMrWmVWY1REUUVBT0JMSkxnRGRNYWtKd0gvVnAxV1Z1UVlBOWlZelg4ZHlNbmZZOFZzUEkrSnpacjRUNVl2cVQrTllKcm1NRC9CeHc0ajRtSm1mSlF4MDZsUGo2MTkyOUQyZU43Nyt0eDM3OEtCV3Qva2MrMTFXZGhETFpMQS9KQVlDQUJ5UFpCZUFqcWp1QXNCMzNBb0JBTEFubzlodHFaVnR2SmFNY1A3V3FybmNSM3Qxb0YzNjhaZXVLb3BjdWxMS1EwUzBMSy9UVmJXZGx2ZVpsVkxtTy9UajYxZ21heDJ5WXRBd0pBWUNBQnlOWkJlQWJ0MElBUUFyRWlFQmdETXdpdVZrcm9TWE0xVGJ0ZXVsWHJZMXFIMU13a3MzSmcydkhXYm1zTEZQWFVkYjB0U0hIVDd6ZFVSOGpNTW5hNjI4enN5UHhra0FnTU9TN0FMUW9mcmt5VVFrQUZoam1Uc0E0TlJkeGY2cnlIQmdhNGt1ZlVneWtmRFNuUStOcjIrdGpOSzZoTkhEbHYzNHZpZmowM1ZJREFRQU9DakpMZ0RkZXh0dEpXTUJPQ08xdXN0RUpBQ0FFemV1MVJNNEgrK2lINGt1SzRPSVVCMmovZnBqRmhIemhyZDQyZmdWUmcydmZkaG1DYU9hNkRMdVVmaXZZcmtjR0FBQUJ5RFpCYUJqOWFMOE41RUFZTTF0U0lRRUFFN2ZHNGtJNTZFdU5UUHU0VmNiUnNRYkxkU3NwYnJMMWE1TEdkWEtQTU9Hei82MHhXZU5lOXFIcnpOVEpTd0FnQU9RN0FLd0I2V1V1Mmg3aWdhQTh6b3VMTUp5UmdEQTZSdUU1WXhPWGsxWTZuUDFpZGU3Smx2d1g1UEcxKys2bEZGclZaaUhEZnZ3MVFuMDRXdmRFQUJndnlTN0FPelBqUkFBc0ZKS2VSOFJNNUVBQUU3Y1dDTEN5WHNkeThTbFBsUGRwZTNhWTk1NDdmRjB4OWUxSkhnODFJY0VmcW9tYTMwOGdXYTRWd2tMQUdDL0pMc0E3RWtwWlJvYlBwRUN3TVdRQ0FrQW5JT3hFSnkwVjZmUXh5UlZOV3RaeXVoNjIwU05EcFl3MnZUN3ZtbjhuRU1aaEtRdEFJQzlrdXdDc0Y4M0ViRVFCZ0FpSWtvcHM3Q2NFUUJ3K2w0S3dXbkt6SEYwVjlWbEZzdmxjdDZ1L1V5anUvc2dsb0ZwTXpsdy9FY05uN1VvcFR4czBIK0hzYXhNMUtWNTdiZlRqdnR2aENXNUFBRDI2dTlDQUxBL3BaUkZadDdFYVpSWEJlQXd4NGE3ekh3ZUVWZWlBUURzeVN5V2s3Yi90L1ozVDZOdE1ucmRNRE92YWlJdnArVjU0K3NYRWZGYlJMei8yWkl6bVRtS1pWV0xVZU4zZmEvSmRyN3VXR1RtUSt5ZU5QUTh0a3VZYVVtQzI3UXljbGVWVXFheHJDVHozYVdUYXBXYWw3R3NZdFdhSFBZbVZQZ0VBTmdMeVM0QWUxWktlV2k4dVFEQStibUppRCtFQVFEbzJDUWkzcFpTNXQvN3g3b3N5WnZvcGpMQ0tKWkpOWDN4V1BXOGxtU2ZTVVQ4KzB6NnlLamh0Yk9JZVBhekpKZVZ1clR6TkRQdlkvZGxyMGFOYmY0eWRsL3U1bHphL0ZQc2ZqOXE0OWZWNmlVdHlmd2ZOdnlNY1dNOEZoRng4MWdWbVpySU44dk10eEZ4SDIzMzlNYVplYnZKZmdNQXdIWWt1d0FjeGsyOTZCOEtCUUNsbEZsbTNrYkVPOUVBQUxxNjdpeWxUQjQ1QjFsRXhHMW0vaG5MQ2R3V1Q2TkhWVGRLS1hjLysvZk12SXZkRXowKzFPU05rMWFyVmV4YXBXSVJHeWE2Zk5NdU43WEt5M0RIN3p6NlVldzNhUE9uc2Z0OW1MTm84MWhXVExsdjZEUFhteXd2RkczSklQTU5ZLzJxTVJhclBqemJvdjh1SXVKRlk5SlcxTmVxVWdRQTBMRy9DUUhBL3RXTFl5VkxBVmcvTnJ5UHpjdDFBd0Q4ek8xamlTN2ZuSWRNSXVLMjhUTXR5WGg2aG8xOWJOZktGQitPOUoxZGN5emJiTkx3RnBzdWUzV0lKWXhhRW1xMlRuVDVKbzQzMFZiSjZxWGVDQURRUGNrdUFBZFNuMUo1S3hJQXJMbUppTGt3QUFBTnBqV0pkdHRyMVBlTjV5RkRvVDg1TFFsS3gwclMxcy9hZldwNDdhTUpKblY1dEgwdllkUmFMZm50cm9rdWExb1NCSzlxbkFBQTZKQmxqQUFPcUpSeWw1bS9SdHZUS0FDY3ozRmhrWmt2SXVKejdGNVNIZ0M0Ykw4MXZQWnR0QzF4Y3RYQkJES0hNOTN4ZFl1R3FpNFJ5eVd2T040MXgwTm1MbmE4M2hoc3NKUlI2eEpHbTR3aEx4cy80MzBIY1p4bTVpeDJUK3k1anJZcU93QUFmRU95QzhEaDNjVHlhUlFsbndHSVVzb3NNMitqWWFJSkFMaFlpMGNtb1IvejBIZ09JbG4zdE00N3A3Rjd3c3RPTXZNdUlrWU5ieUZScGhzUEVUSGU4YlhQNCtlVmZaNDNmSzlOay9YNlVwWG9VOE4zK1ZVM0JBRG9sbVFYZ0FPclQvSGZoS2Y0QWZoNmJKalV5bCt2UlFNQTJNSzBnK3ZUbGtvRjhCZDFxWlpSTEpOVXJzTXlSSDN4Vyt5ZTdESjZwTDFiS3JzOHRINkhUVjZibVo4N2ltTkxmemJPQWdCMFRMSUx3QkhVcC9odkl1S2phSERHSnJIN3pUUzR4R1BEYmIxWmJMOEJBRGIxWndmdnNSQkdIcE9adzFoTzlBL2lyNVAyLzRxdkNRQWprZXJ0dGNZc00rZXhXN0xHOENkTGxyVWt1c3hLS2ZNTitsNXJra2hma2t6c0h3QUFIWlBzQW5Ba2RjM2ttN0JzQmVkcEZoRzNzYnlSTmhJTzJOaHRMRy9HZXVvUEFOakV0SVAzK04wNU8rdStxYzV5cFgrY2pZZll2WkxreTNxZC82MldaYVkyWGNKb2NFNzdWaWxGZ2lFQVFFZitKZ1FBeDFOS21VVEVlNUhnek13ajRsbTlnZk5KT0dDcjQ4SWlJcDdGOTI4a0F3REEzbVRtZFdaK2pJai94TElTN2V1UTZISk9QalM4OW5yTHY5L0VJWll3NmhzUE5RQUFkRWl5QzhDUmxWSnVZN25jQzV5RFJVUzhXSHRTYVNva3NQVnhRY0lMQUxBcDV3czBxMGt1WDJLWjRISXRJbWQ3blRGckdET0czeTRubEpuWHNYdlZsUWNWVGdBQWFDWFpCYUFIU2lrM0llR0YwN2VJWlVXWDJWcmZudFcvQjdZN0xraDRBUUEyUFdlQW5XVG1JRE0veHpMSlpTZ2lGNkdsdXN2b216OC9iM2d2VldBQkFHZ20yUVdnSjJyQ3k0TkljTUplckNlNnJKa0tEZXgwWEpEd0FnREFYdFFxSFYvQ01rV1hwdVcrMDh0di9yeHJGYUJGdVA4RkFFQUhKTHNBOU10Tm1OVGtSUHR1S1dYNmczLzdYWGhnTnhKZUFBRG9XazEwK1J5N0wwSEQ2VjVmekdQM0IxS3VNbk80MW9jc1lRUUF3RkZKZGdIb2tiVkp6WWxvY0VKdVNpay82N05USVlKT2pnMFNYZ0FBYUpLWmc1RG9jdWxhbGpKYVZYTjUyZkFlbGpBQ0FLQVRrbDBBZXFhVXNxaExHazFFZ3hQd1dLSkwxS1dOUExVRmpjZUdXQ2E4VEVVREFJQUc5M0g0UkJkSjIvM1N4VkpHT3k5aFZFcXhoQkVBQUozNHV4QUE5Rk1wNVNZekl5TEdva0ZQUFpyb3N1WkJYNGJtNDhJaUlwNWw1cjM5Q1FDQWJXWG1LSFpQVXRqVU5KWVBPL3daeXlTWGFVU3NsazJpSjljVm1mbXdZMSs0cXYxb3VPUEhUM2JzVTI4YSt1UGJIb1ZmNGhjQVFJY2t1d0QwV0UxNFdVVEVhOUdnUnhheFRIVFo1bW1zMzhQa1BIUjViUGd6SXQ2SkJnQUFXM2pWMGZzOHhES1paUnJMU2gwL25jQ3ZEL0xRTDU5aTk4U24rNGJQM1dVSnBaWktzY05TeWxSekF3Q2NKOHNZQWZSY0tlVTJJbTVFZ3A1WVJNU3pIY29PVDRVT09qMDJ2SS9sc2thV0NBTUEyTC9CbVd4SGExV1h0eEh4ejFMS2kxTEtYU2xsK2xpaUM3MjlucGcwWEVzTWQzemRmSmYrMHRqSGhyVVNEUUFBWjBpeUM4QUpxRGNoVEdweWJLdEVsMTF1VHMwallpNkUwT214WVJvUlQwSXBiQUNBZmJzNjlRM29ZTUwvcGlhNDdISmZZblNDSVJ0ZVFMOStPUERuZldoNDdiVGh0VzhDQUlDelpCa2pnQk5SU3BsbTVyTllsb3U5RWhFT2JCYkxSSmVXaEt0cFdNb0l1ajQyekNQaVNXYStDMHZlQVFEc3k2OW5zQTB0OXhFbTlTR2NTNHJmMDRpWW5IbS8vblRnYS9TV2VQNGV1eWROalRKejNOaUhJek1IamZ0UldGSUpBS0Jia2wwQVRrZ3BaYmFXOEhJdEloeklReXlmNG11dExQUjdTSGFCZlIwZmJqUHo5M3A4R0lnSUFFQ25yalB6NnNTWDdHazVSL3g5MXhkbTVqQ09kLytpSlVGaW5KbHZhM0w1dVY1RFBHVG1QQTVUeFdiV0dNdUhhS3ZROGk0elo0MzdjT3U5dUlld3hETUFRS2NzWXdSd1lrb3BpMUxLaTRpNEZRME80RzFkajcyTEpiUWVoQlAyZW54NGlJaGY3R3NBQUh2eE9UTWZyZXFRbVlQTTlIREtWKzlPK0x0L3JNazZtN1Q1cVZiZ1BkUzFROHNTUmxHVFZPWU5iekdvKy9Cb2x4ZG41bDIwSjIxOU1od0FBSFJMc2d2QWlTcWx2SStJSjQwWCsvQWppNGg0VVVxNTY3RFBMbUs1SEJLd3YyUERLaUh5UmQyUEFRQllhcjBXR1VURUg1bDVuNW5YcXlTSXpCeG01aWd6WDJmbXg0ajRUMFM4T3JQWVBkM2xSWms1anRPdVNudFYyL3hkYmVOVm0xL1ZQOTlsNXVmYTVxZTZuUjhPOURsZEpOWDgxc0UrL0xudXc4TU4rL0FnTSsranJhcE0xR3N6RHlVQUFIUk1zZ3ZBQ2F0UHRqeHh3VXpIWmhIeHJGYUo2TnBVZU9FZ3g0ZFZsWmVKYUFBQVJFUjNpY0RqaVBnWUVWOHlNeVBpUzBSOGptVUZrM090NkRLdWlTc2J5OHgzc1Z6MjVaaTZ1UDRjUk1UcjJzYXJOditqL3ZsTjdMNU1VbCt1RzFvcnBtemlvYVBsb0NZZDdjZmoycGIzbVRuK052R2xKcmlNYWgvK0V0MHN4L3pRVWNWY0FBRFdTSFlCT0hHZTRxZGprMWdtdXV5ckFzdnZRZ3dIUFQ3Y1JNU3pVRlVKQUhCdU5MM3dFTFJ1LzMydFpETDQwWCtvU1FManpQd1N5d1NSWTNNT3ZKbDlWM2Y1MU5FK3ZJajI2aTdyeHJGTXlQcVNhMkpacWVkejdjT0Rqajdyclc0R0FOQTl5UzRBWjZJK3hmOGtWTTVnTjZ0bGkyNzIvTFNSL2dtSFB6NU1TeWxQSXVJMkpFVUNBSmZ0a3E5SDVoMjh4NXVJK0U5bWZxNUwrOXpWbjNkcnkvbmNSOFN3SitmQmk3RDA4eVltZTM3L0xxdkd2ai9CTnAxMFZOa0dBSUJ2U0hZQk9DT2xsSGtwNVZtbzhzSjJwaEh4eTU2V0xmcTJqeTdDMDNWd3JHUEUrMWd1YmZUV01RSUF1RkNmTG5YRDYyUjdWOWRpbzFoV3ZYaFRmMTVIZjVmenNlenpZZnZHdHlaZFBsQlQzK3YyaE1KN2F0OFhBT0NrU0hZQk9FTTFhZUdYMlAvVE9aeTJSVVRjbGxLZUhYanQ2S25RdzlHT0Q0dFN5bDA5UnJ3WEVRRGd3bHo2TmZLSEM5em0zM1Q3by9hTnpoUE02ajJ2VTdtV2VYdmcreTBBQUJkRnNndkFtYW9UbWpjUjhTeFUwdUIvUGNTeW1zc3hiaEI5RW43b3hUSGlObFI2QVFBdTdCd29ManZoWlhKcDUzMjFhc2xVNzkrb2IzUnRzYThLc3ZWYXB1LzN1aDZPZE04RkFPQmlTSFlCT0hPbGxHa3A1VWxFM0lUSlRKWnJXNzhvcGJ3NDF0TkZwWlNwWm9EZUhDUG1hNVZlM3RZeGd0Tm55VGdBK0xHTFRmU3QxNENYV09ua1JyZmZxRzkwblppeTd5V2srdnh3MTF5L0F3RFlQOGt1QUJlaWxESUpUL0Jmc2tWdCt5ZjdlckpxUzFOTkFyMDZSaXhLS1hlbGxGOWllVk5Xb3NScG1zUXlvZkdmUFJuckFhQ1A1ejN6aUxpOTRPMi91N1J6dmRybWIvWCtSM1ZkaGZYRG50dDFFZjFNZUZuVWMzTDMzZ0FBOWt5eUM4QUZXVTFteGpMcFJTblZ5ekdKWlpMTFhZOXV0dnl1V2FDM3g0cEpyUWoySkM2dzFQMEplb2hsZ3RJL1N5azNrbHdBWUxQem5ianM1WXhlSE9rY2IzSEVOcis3OERiZjlMeXlxemFhSDZLcWF3OFRYaFlSOGF5VTR1RUJBSUFEa093QzhQL3QzZEZ4R2tjQUJ1RC9adkllcDRMSUZWaXVRRklGamlwd3FDQkRCM1lGY1Ftb0E2V0Rjd2ZuRGxBRndSVmNIbmJQTUxGa0dZSGdUbnpmREFNampSRHNMdHplM3IrN0o2aUdYdVlwb1plRkVubXgycFNReTZ6T1pCdmJhd1BHZmF6bzZ2ZkhieWxoQ2lHS2NWalZZL2QxU3NEbHVnYVVoSklBWUx1K3p1eFV6NGZyK2VGVkRocyttWTNnUEhDdVQvdkRkckhQcll4dUQvbTZhMWovMkpPNnVwUXhHRUVYQUlBREVYWUJPR0ZOMHl6ckFKL3RqVjZXTm1VbTBXaG5FOVVaWHRvYlRPZDRzV2lhNWpxSjRNdnh2dGVIcmVpK3JlQWk0QUlBTy9keFpqblI3VzNxdWVKVmt1VXovNnRoUzVkRmpyekNadzFGWE1kS3R6K3lyNjJNYm81UXYvTUR0ZW43ZkVvWmgxbHFRZ0FBaHlQc0FzQVFldm1RZGVqRnlmazB0Vm1IWE5xSnZGNWdXc2VMMVQzQmwwV0UxL2F0U3hrd0gxWnZ1YXBiMFprbENnRDc3OTk4U05tK3NUM0I5OTdWOS81YzRZK3VucVBlanVrY2NDTVU0WnowKzdMWngxWkczYkg2clhVczVHME9ONkZyV2R2NFhCQWRBT0R3aEYwQTJCd1VXTldMYWE4emppV0crVG1MSks4bkZISVpmRloxTVBsanhtSmpxNk5oVU5teFl6dXJyRmR1dVVvSnQ3eXRBK1pXYndHQXcvUnJ1cVpwcm1wL1pwR25YeVJmcGdSSDVoUHIwKzA3L0xGS01xOTltbTZ6bkRPU2tIVFRORzJ0ODZzZDYzd0lLUzllMEVkaTExVWNiMGJRcGora1RPaWE1M2ttZEhWSlprM1R2SjdZT0F3QXdJdnlpeUlBNElIQmdVV1NSZC8zNTBuK1N2SkhrbGRLWmpTV0tRTklueVo4SWJSVmpmQ2lqaHRkeXFCdmtxVHYrOHNrbDBrdWtwdzdoaVFwRjFHR2N2cVNJODU2QmVEQlB2YkhIZi8rS1c1eTNDQjRlOEQzM0I3cGRXN1RuNWtsbWRWejRjdmFoN2w0NEUrNkpGL3JhK3VlZUc2MlM3dHI5L2plMnlSdDMvZG5HMk1BWjFzK3pXMlNmK3A0d2tQbVd6N3Y4cG5ydkszbE9LdjkxL05INnZ6elJ0ay90YzVIL1RtbzdmRnVoNzhmeFphbnRXNCtKZmxVUDgvdjYyZjYvSWxQMmFWczgzU3JEdzhBTUE2TklnRGdaL1Y5LzJlU2R5bURYaHpIYlpLYmpXV2dwOTZtL28wTDROdjZXR2Vwd2RRKzcyY3BBOHZuS1JjUHpyTDlCWlFwYVZNdXp0d05qNXVtV1dvSkFNQkUrMisvNXZ1UXdMZmdoOVV0bUZqYnZzdzYyUFQ3UGVjbFF6OStsUkpxMHI0QkFFWkkyQVdBcHd3S25LVUVYdDduNlROaStIbGR5bXpQMjVkMm9iVHYrNysxb2EzZFBESlRFcWIyUFhDWmRmRGxUY3FBOHhSV2dsbHUzTzQySG5lMkhnSUFBQUFBZUY3Q0xnRHNaQ1A0OGk1bE9WajJZNW4xS2k2V3h3Vk85Umd6aEY2R0FFeHkvNnppWFk4L3cvWkNtNFp0Q1lidjVPWHdjMkVXQUFBQUFJRGpFbllCWUcvNnZuK1ZFbnk1cVBlMnA5bE9tL1grejB2RkFRQUFBQUFBQU44VGRnSGcyZFFaK1pleDZzdERsbGtIWEZvckJRQUFBQUFBQU1EamhGMEFPSmlOOE10RnloWVVaeWRXQkYxS3VPVkxTcmhscVZVQUFBQUFBQURBZG9SZEFEaWF1dTNSRUlCNWt4SitPWDhoYjY5TldibmxTNUt1YVpwV2pRTUFBQUFBQU1EdWhGMEFHSjI2QXN4WlN2RGw5L3A0dUkxSmwyUlY3NyttQmx5czJBSUFBQUFBQUFEUFI5Z0ZnRW5aV0EwbTlmNVZmVHlFWWpadC92NHh5M3I3LzgvdTd2bDkxelROU20wQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBY0hyK0EzTEJkNGF3OFV5TEFBQUFBRWxGVGtTdVFtQ0NcXFwiLz48L2RlZnM+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDEyIDE0XFxcIj48cGF0aCBkPVxcXCJNLjY2NyA3YS42NjcuNjY3IDAgMCAwIC42NjYuNjY2aDUuMDZMNC44NiA5LjE5M2EuNjY3LjY2NyAwIDAgMCAuMjE3IDEuMDkzLjY2OC42NjggMCAwIDAgLjczLS4xNDZsMi42NjYtMi42NjdhLjY2Ny42NjcgMCAwIDAgLjE0LS4yMi42NjcuNjY3IDAgMCAwIDAtLjUwNy42NjcuNjY3IDAgMCAwLS4xNC0uMjJMNS44MDcgMy44NmEuNjcuNjcgMCAwIDAtLjk0Ny45NDZsMS41MzMgMS41MjdoLTUuMDZBLjY2Ny42NjcgMCAwIDAgLjY2NyA3Wk05LjMzMy4zMzNIMi42NjdhMiAyIDAgMCAwLTIgMnYyYS42NjcuNjY3IDAgMSAwIDEuMzMzIDB2LTJhLjY2Ny42NjcgMCAwIDEgLjY2Ny0uNjY3aDYuNjY2YS42NjcuNjY3IDAgMCAxIC42NjcuNjY3djkuMzMzYS42NjYuNjY2IDAgMCAxLS42NjcuNjY3SDIuNjY3QS42NjYuNjY2IDAgMCAxIDIgMTEuNjY2di0yYS42NjcuNjY3IDAgMCAwLTEuMzMzIDB2MmEyIDIgMCAwIDAgMiAyaDYuNjY2YTIgMiAwIDAgMCAyLTJWMi4zMzNhMiAyIDAgMCAwLTItMlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiPjxnIGNsaXAtcGF0aD1cXFwidXJsKCNtYWduaWZ5aW5nLWdsYXNzX3N2Z19fYSlcXFwiPjxwYXRoIGZpbGw9XFxcIiNBNkI1QkFcXFwiIGQ9XFxcIk0xMi45MTcgMTEuNjY3aC0uNjU5bC0uMjMzLS4yMjVhNS40MTcgNS40MTcgMCAwIDAgMS4yMzMtNC40NWMtLjM5MS0yLjMxNy0yLjMyNS00LjE2Ny00LjY1OC00LjQ1QTUuNDIgNS40MiAwIDAgMCAyLjU0MiA4LjZjLjI4MyAyLjMzMyAyLjEzMyA0LjI2NyA0LjQ1IDQuNjU4YTUuNDE3IDUuNDE3IDAgMCAwIDQuNDUtMS4yMzNsLjIyNS4yMzN2LjY1OWwzLjU0MSAzLjU0MWEuODguODggMCAwIDAgMS4yNDIgMCAuODguODggMCAwIDAgMC0xLjI0MWwtMy41MzMtMy41NVptLTUgMGEzLjc0NSAzLjc0NSAwIDAgMS0zLjc1LTMuNzUgMy43NDUgMy43NDUgMCAwIDEgMy43NS0zLjc1IDMuNzQ1IDMuNzQ1IDAgMCAxIDMuNzUgMy43NSAzLjc0NSAzLjc0NSAwIDAgMS0zLjc1IDMuNzVaXFxcIi8+PC9nPjxkZWZzPjxjbGlwUGF0aCBpZD1cXFwibWFnbmlmeWluZy1nbGFzc19zdmdfX2FcXFwiPjxwYXRoIGZpbGw9XFxcIiNmZmZcXFwiIGQ9XFxcIk0wIDBoMjB2MjBIMHpcXFwiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMTZcXFwiPjxwYXRoIGQ9XFxcIk0xNyAwSDNhMyAzIDAgMCAwLTMgM3YxMGEzIDMgMCAwIDAgMyAzaDE0YTMgMyAwIDAgMCAzLTNWM2EzIDMgMCAwIDAtMy0zWm0tLjQxIDItNS44OCA1Ljg4YTEgMSAwIDAgMS0xLjQyIDBMMy40MSAyaDEzLjE4Wk0xOCAxM2ExIDEgMCAwIDEtMSAxSDNhMSAxIDAgMCAxLTEtMVYzLjQxbDUuODggNS44OGEzIDMgMCAwIDAgNC4yNCAwTDE4IDMuNDFWMTNaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAyXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMy45NTggMEgxLjk5OUMxLjI0IDAgLjY2Ni4yNC42NjYgMXMuNTc0IDEgMS4zMzMgMWgxMmMuNzYgMCAxLjMzNC0uMjQgMS4zMzQtMXMtLjYxNi0xLTEuMzc1LTFaXFxcIiBmaWxsPVxcXCIjMkEyRjMwXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNSAxNFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTIuODQ2IDcuNTgzYS41ODMuNTgzIDAgMCAwLS42MTItLjA4MiA0LjY5NiA0LjY5NiAwIDAgMS0xLjk2Ni40MjZBNC43NTQgNC43NTQgMCAwIDEgNS41MiAzLjIwMmE1LjAxIDUuMDEgMCAwIDEgLjE0NS0xLjE2Ni41ODMuNTgzIDAgMCAwLS43NzUtLjY2IDUuOTE1IDUuOTE1IDAgMSAwIDguMTY2IDYuODIuNTgzLjU4MyAwIDAgMC0uMjEtLjYxM1ptLTUuNTQxIDMuOTAzYTQuNzQ4IDQuNzQ4IDAgMCAxLTIuOTUyLTguNDQxdi4xNTdhNS45MiA1LjkyIDAgMCAwIDcuMTQgNS43ODcgNC43MzEgNC43MzEgMCAwIDEtNC4xODggMi41MnYtLjAyM1pcXFwiIGZpbGw9XFxcIiNBNjZFRTlcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMC42NjcgOS4zMzNINS4zMzNhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM2g1LjMzNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWm0wLTIuNjY3aC00YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0Wm0yLjY2Ni00aC0yVjJBLjY2Ny42NjcgMCAxIDAgMTAgMnYuNjY2SDguNjY3VjJhLjY2Ny42NjcgMCAxIDAtMS4zMzQgMHYuNjY2SDZWMmEuNjY3LjY2NyAwIDAgMC0xLjMzMyAwdi42NjZoLTJBLjY2Ny42NjcgMCAwIDAgMiAzLjMzM3Y5LjMzM2EyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYzLjMzM2EuNjY2LjY2NiAwIDAgMC0uNjY3LS42NjdabS0uNjY2IDEwYS42NjcuNjY3IDAgMCAxLS42NjcuNjY3SDRhLjY2Ni42NjYgMCAwIDEtLjY2Ny0uNjY3VjRoMS4zMzR2LjY2NmEuNjY3LjY2NyAwIDEgMCAxLjMzMyAwVjRoMS4zMzN2LjY2NmEuNjY3LjY2NyAwIDAgMCAxLjMzNCAwVjRIMTB2LjY2NmEuNjY2LjY2NiAwIDEgMCAxLjMzMyAwVjRoMS4zMzR2OC42NjZaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk05LjMzNCA1LjMzM0gxMEEuNjY3LjY2NyAwIDAgMCAxMCA0aC0uNjY2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNabTAgMi42NjdIMTBhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNGgtLjY2NmEuNjY3LjY2NyAwIDAgMCAwIDEuMzM0Wk02IDUuMzMzaC42NjdhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM0g2YS42NjcuNjY3IDAgMSAwIDAgMS4zMzNaTTYgOGguNjY3YS42NjcuNjY3IDAgMSAwIDAtMS4zMzRINkEuNjY3LjY2NyAwIDAgMCA2IDhabTggNS4zMzNoLS42NjZWMmEuNjY2LjY2NiAwIDAgMC0uNjY3LS42NjdIMy4zMzNBLjY2Ny42NjcgMCAwIDAgMi42NjcgMnYxMS4zMzNIMmEuNjY2LjY2NiAwIDEgMCAwIDEuMzMzaDEyYS42NjcuNjY3IDAgMCAwIDAtMS4zMzNabS01LjMzMyAwSDcuMzM0di0yLjY2N2gxLjMzM3YyLjY2N1ptMy4zMzMgMGgtMlYxMGEuNjY3LjY2NyAwIDAgMC0uNjY2LS42NjdINi42NjdBLjY2Ny42NjcgMCAwIDAgNiAxMHYzLjMzM0g0VjIuNjY2aDh2MTAuNjY3WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNiA2LjY2NmguNjY3YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNINmEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWk02IDhhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM2g0QS42NjcuNjY3IDAgMCAwIDEwIDhINlptNy4zMzMtMi4wNGEuODguODggMCAwIDAtLjA0LS4xOHYtLjA2YS43MTQuNzE0IDAgMCAwLS4xMjctLjE4N2wtNC00YS43MTMuNzEzIDAgMCAwLS4xODYtLjEyNy4yMTMuMjEzIDAgMCAwLS4wNiAwIC41ODcuNTg3IDAgMCAwLS4yMi0uMDczSDQuNjY3YTIgMiAwIDAgMC0yIDJ2OS4zMzNhMiAyIDAgMCAwIDIgMmg2LjY2NmEyIDIgMCAwIDAgMi0yVjUuOTZabS00LTIuMzU0IDEuNzI3IDEuNzI3SDEwYS42NjcuNjY3IDAgMCAxLS42NjctLjY2N3YtMS4wNlpNMTIgMTIuNjY2YS42NjcuNjY3IDAgMCAxLS42NjcuNjY3SDQuNjY2QS42NjYuNjY2IDAgMCAxIDQgMTIuNjY2VjMuMzMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N0g4djJhMiAyIDAgMCAwIDIgMmgydjZabS0yLTJINkEuNjY3LjY2NyAwIDAgMCA2IDEyaDRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNCAxNVxcXCI+PHBhdGggZD1cXFwibTExLjc5IDYuODk2LjA1Ni40MzdIMTNhLjE2Ni4xNjYgMCAwIDEgLjExOC4yODVsLjM1My4zNTMtLjM1My0uMzUzYS4xNjYuMTY2IDAgMCAxLS4xMTguMDQ5aC0xLjE1NGwtLjA1NS40MzdhNC44MzMgNC44MzMgMCAwIDEtNC4xODcgNC4xODdsLS40MzcuMDU1VjEzLjVhLjE2Ny4xNjcgMCAwIDEtLjA1LjExOGwuMzU0LjM1My0uMzUzLS4zNTNhLjE2Ny4xNjcgMCAwIDEtLjI4NS0uMTE4di0xLjE1M2wtLjQzNy0uMDU2QTQuODMzIDQuODMzIDAgMCAxIDIuMjEgOC4xMDRsLS4wNTUtLjQzN0gxYS4xNjcuMTY3IDAgMSAxIDAtLjMzNGgxLjE1M2wuMDU2LS40MzdBNC44MzMgNC44MzMgMCAwIDEgNi4zOTYgMi43MWwuNDM3LS4wNTVWMS41YS4xNjcuMTY3IDAgMCAxIC4zMzQgMHYxLjE1M2wuNDM3LjA1NmE0LjgzNCA0LjgzNCAwIDAgMSA0LjE4NyA0LjE4N1ptLS4zNTcgMS4zNTQuMS0uNTgzaC0xLjJhLjE2Ni4xNjYgMCAxIDEgMC0uMzM0aDEuMTk5bC0uMS0uNTgzQTQuNSA0LjUgMCAwIDAgNy43NSAzLjA2N2wtLjU4My0uMXYxLjJhLjE2Ny4xNjcgMCAwIDEtLjA1LjExOGwuMzA0LjMwMy0uMzAzLS4zMDNhLjE2Ny4xNjcgMCAwIDEtLjI4NS0uMTE4VjIuOTY4bC0uNTgzLjFBNC41IDQuNSAwIDAgMCAyLjU2NyA2Ljc1bC0uMS41ODNoMS4yYS4xNjcuMTY3IDAgMCAxIC4xMTguMjg1bC4zMDMuMzAzLS4zMDQtLjMwM2EuMTY3LjE2NyAwIDAgMS0uMTE3LjA0OUgyLjQ2OGwuMS41ODNhNC41IDQuNSAwIDAgMCAzLjY4MiAzLjY4M2wuNTgzLjF2LTEuMmEuMTY2LjE2NiAwIDEgMSAuMzM0IDB2MS4xOTlsLjU4My0uMWE0LjUgNC41IDAgMCAwIDMuNjgzLTMuNjgyWm0tNC41MjYtLjg4OWEuMTY3LjE2NyAwIDEgMSAuMTg2LjI3OC4xNjcuMTY3IDAgMCAxLS4xODYtLjI3OFpcXFwiIGZpbGw9XFxcIkN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJDdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMC42NjcgOS4zMzNINS4zMzNhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM2g1LjMzNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWm0wLTIuNjY3aC00YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0Wm0yLjY2Ni00aC0yVjJBLjY2Ny42NjcgMCAxIDAgMTAgMnYuNjY2SDguNjY3VjJhLjY2Ny42NjcgMCAxIDAtMS4zMzQgMHYuNjY2SDZWMmEuNjY3LjY2NyAwIDAgMC0xLjMzMyAwdi42NjZoLTJBLjY2Ny42NjcgMCAwIDAgMiAzLjMzM3Y5LjMzM2EyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYzLjMzM2EuNjY2LjY2NiAwIDAgMC0uNjY3LS42NjdabS0uNjY2IDEwYS42NjcuNjY3IDAgMCAxLS42NjcuNjY3SDRhLjY2Ni42NjYgMCAwIDEtLjY2Ny0uNjY3VjRoMS4zMzR2LjY2NmEuNjY3LjY2NyAwIDEgMCAxLjMzMyAwVjRoMS4zMzN2LjY2NmEuNjY3LjY2NyAwIDAgMCAxLjMzNCAwVjRIMTB2LjY2NmEuNjY2LjY2NiAwIDEgMCAxLjMzMyAwVjRoMS4zMzR2OC42NjZaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk04IDRhLjY2Ny42NjcgMCAwIDAtLjY2Ny42NjZ2Ni42NjdhLjY2Ny42NjcgMCAxIDAgMS4zMzQgMFY0LjY2NkEuNjY3LjY2NyAwIDAgMCA4IDRaTTQuNjY3IDhBLjY2Ny42NjcgMCAwIDAgNCA4LjY2NnYyLjY2N2EuNjY3LjY2NyAwIDEgMCAxLjMzMyAwVjguNjY2QS42NjcuNjY3IDAgMCAwIDQuNjY3IDhabTYuNjY3LTEuMzM0YS42NjcuNjY3IDAgMCAwLS42NjcuNjY3djRhLjY2Ny42NjcgMCAwIDAgMS4zMzMgMHYtNGEuNjY3LjY2NyAwIDAgMC0uNjY2LS42NjdabTEuMzMzLTUuMzMzSDMuMzMzYTIgMiAwIDAgMC0yIDJ2OS4zMzNhMiAyIDAgMCAwIDIgMmg5LjMzNGEyIDIgMCAwIDAgMi0yVjMuMzMzYTIgMiAwIDAgMC0yLTJabS42NjcgMTEuMzMzYS42NjYuNjY2IDAgMCAxLS42NjcuNjY3SDMuMzMzYS42NjYuNjY2IDAgMCAxLS42NjYtLjY2N1YzLjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LS42NjdoOS4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny42Njd2OS4zMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk04IDRhLjY2Ny42NjcgMCAwIDAtLjY2Ny42NjZ2Ni42NjdhLjY2Ny42NjcgMCAxIDAgMS4zMzQgMFY0LjY2NkEuNjY3LjY2NyAwIDAgMCA4IDRaTTQuNjY3IDhBLjY2Ny42NjcgMCAwIDAgNCA4LjY2NnYyLjY2N2EuNjY3LjY2NyAwIDEgMCAxLjMzMyAwVjguNjY2QS42NjcuNjY3IDAgMCAwIDQuNjY3IDhabTYuNjY3LTEuMzM0YS42NjcuNjY3IDAgMCAwLS42NjcuNjY3djRhLjY2Ny42NjcgMCAwIDAgMS4zMzMgMHYtNGEuNjY3LjY2NyAwIDAgMC0uNjY2LS42NjdabTEuMzMzLTUuMzMzSDMuMzMzYTIgMiAwIDAgMC0yIDJ2OS4zMzNhMiAyIDAgMCAwIDIgMmg5LjMzNGEyIDIgMCAwIDAgMi0yVjMuMzMzYTIgMiAwIDAgMC0yLTJabS42NjcgMTEuMzMzYS42NjYuNjY2IDAgMCAxLS42NjcuNjY3SDMuMzMzYS42NjYuNjY2IDAgMCAxLS42NjYtLjY2N1YzLjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LS42NjdoOS4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny42Njd2OS4zMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk04IDRhLjY2Ny42NjcgMCAwIDAtLjY2Ny42NjZ2Ni42NjdhLjY2Ny42NjcgMCAxIDAgMS4zMzQgMFY0LjY2NkEuNjY3LjY2NyAwIDAgMCA4IDRaTTQuNjY3IDhBLjY2Ny42NjcgMCAwIDAgNCA4LjY2NnYyLjY2N2EuNjY3LjY2NyAwIDEgMCAxLjMzMyAwVjguNjY2QS42NjcuNjY3IDAgMCAwIDQuNjY3IDhabTYuNjY3LTEuMzM0YS42NjcuNjY3IDAgMCAwLS42NjcuNjY3djRhLjY2Ny42NjcgMCAwIDAgMS4zMzMgMHYtNGEuNjY3LjY2NyAwIDAgMC0uNjY2LS42NjdabTEuMzMzLTUuMzMzSDMuMzMzYTIgMiAwIDAgMC0yIDJ2OS4zMzNhMiAyIDAgMCAwIDIgMmg5LjMzNGEyIDIgMCAwIDAgMi0yVjMuMzMzYTIgMiAwIDAgMC0yLTJabS42NjcgMTEuMzMzYS42NjYuNjY2IDAgMCAxLS42NjcuNjY3SDMuMzMzYS42NjYuNjY2IDAgMCAxLS42NjYtLjY2N1YzLjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LS42NjdoOS4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny42Njd2OS4zMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk00LjY2NyAxMC42NjZhMSAxIDAgMCAwIDEtMSAuNTE0LjUxNCAwIDAgMCAwLS4xbDEuODYtMS44NmguMzA2TDguOTA3IDguNzh2LjA1M2ExIDEgMCAxIDAgMiAwVjguNzhsMi40MjYtMi40NDdhMSAxIDAgMSAwLTEtMSAuNTIyLjUyMiAwIDAgMCAwIC4xTDkuOTI3IDcuODRIOS44Mkw4LjY2NyA2LjY2NmExIDEgMCAwIDAtMiAwbC0yIDJhMSAxIDAgMCAwIDAgMlptOSAyLjY2N0gyLjMzM1YyQS42NjcuNjY3IDAgMSAwIDEgMnYxMmEuNjY3LjY2NyAwIDAgMCAuNjY3LjY2NmgxMmEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNiA2LjY2NmguNjY3YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNINmEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWk02IDhhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM2g0QS42NjcuNjY3IDAgMCAwIDEwIDhINlptNy4zMzMtMi4wNGEuODguODggMCAwIDAtLjA0LS4xOHYtLjA2YS43MTQuNzE0IDAgMCAwLS4xMjctLjE4N2wtNC00YS43MTMuNzEzIDAgMCAwLS4xODYtLjEyNy4yMTMuMjEzIDAgMCAwLS4wNiAwIC41ODcuNTg3IDAgMCAwLS4yMi0uMDczSDQuNjY3YTIgMiAwIDAgMC0yIDJ2OS4zMzNhMiAyIDAgMCAwIDIgMmg2LjY2NmEyIDIgMCAwIDAgMi0yVjUuOTZabS00LTIuMzU0IDEuNzI3IDEuNzI3SDEwYS42NjcuNjY3IDAgMCAxLS42NjctLjY2N3YtMS4wNlpNMTIgMTIuNjY2YS42NjcuNjY3IDAgMCAxLS42NjcuNjY3SDQuNjY2QS42NjYuNjY2IDAgMCAxIDQgMTIuNjY2VjMuMzMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N0g4djJhMiAyIDAgMCAwIDIgMmgydjZabS0yLTJINkEuNjY3LjY2NyAwIDAgMCA2IDEyaDRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTEyIDE0YTEgMSAwIDEgMC0xLTEgMSAxIDAgMCAwIDEgMVptNSAwYTEgMSAwIDEgMC0xLTEgMSAxIDAgMCAwIDEgMVptLTUgNGExIDEgMCAxIDAtMS0xIDEgMSAwIDAgMCAxIDFabTUgMGExIDEgMCAxIDAtMS0xIDEgMSAwIDAgMCAxIDFaTTcgMTRhMSAxIDAgMSAwLTEtMSAxIDEgMCAwIDAgMSAxWk0xOSA0aC0xVjNhMSAxIDAgMCAwLTIgMHYxSDhWM2ExIDEgMCAwIDAtMiAwdjFINWEzIDMgMCAwIDAtMyAzdjEyYTMgMyAwIDAgMCAzIDNoMTRhMyAzIDAgMCAwIDMtM1Y3YTMgMyAwIDAgMC0zLTNabTEgMTVhMSAxIDAgMCAxLTEgMUg1YTEgMSAwIDAgMS0xLTF2LTloMTZabTAtMTFINFY3YTEgMSAwIDAgMSAxLTFoMTRhMSAxIDAgMCAxIDEgMVpNNyAxOGExIDEgMCAxIDAtMS0xIDEgMSAwIDAgMCAxIDFaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTIgMTVcXFwiPjxwYXRoIGQ9XFxcIm02LjE0IDEwLjc0Mi4wMi4wNTguMDA3LjAxdi4wMzZhLjA2LjA2IDAgMCAxLS4wMDYuMDI3bC0uMDEuMDIyLS4wMDguMDIxYS4xLjEgMCAwIDEtLjA2LjA2bC0uMDIyLjAwOC0uMDIxLjAxYS4wNi4wNiAwIDAgMS0uMDI3LjAwNmgtLjAwNmEuMTY2LjE2NiAwIDAgMS0uMTA2LS4wNC4yNjYuMjY2IDAgMCAxLS4wNC0uMDY2bC0uMDA0LS4wMS0uMDA1LS4wMWEuMDYuMDYgMCAwIDEtLjAwNS0uMDI4di0uMDIzbC0uMDAxLS4wMjMtLjAwMS0uMDE4LjAwMy0uMDA3LjAxMi0uMDMzYS41NzYuNTc2IDAgMCAxIC4wMjMtLjAzLjE2Ni4xNjYgMCAwIDEgLjA0NC0uMDI2bC4wMTQtLjAwNWEuMTY3LjE2NyAwIDAgMSAuMDk2LS4wMWwuMDk0LS40OTEtLjA5NC40OWEuMTY2LjE2NiAwIDAgMSAuMDc3LjAzOGMuMDA5LjAxLjAxOC4wMjIuMDI2LjAzNFptLjY5My05LjMzNSAzLjk2MyAzLjk2My4wMjMuMDdhLjM3LjM3IDAgMCAxIC4wMTQuMDU0djYuNjczYTEuNSAxLjUgMCAwIDEtMS41IDEuNUgyLjY2N2ExLjUgMS41IDAgMCAxLTEuMDYxLS40NGwtLjM0OC4zNDguMzQ4LS4zNDhhMS41IDEuNSAwIDAgMS0uNDQtMS4wNlYyLjgzM2ExLjUgMS41IDAgMCAxIDEuNS0xLjVoMy45OWwuMDE1LjAwNy4xMTYuMDY3aC4wNDZabS44NTQgMS4zNDZMNi44MzMgMS45djIuMjY3QTEuMTY3IDEuMTY3IDAgMCAwIDggNS4zMzNoMi4yNjdsLS44NTMtLjg1My0xLjcyNy0xLjcyN1pNNi41IDIuMTY3di0uNUgyLjY2N0ExLjE2NyAxLjE2NyAwIDAgMCAxLjUgMi44MzN2OS4zMzRhMS4xNjcgMS4xNjcgMCAwIDAgMS4xNjcgMS4xNjZoNi42NjZhMS4xNjcgMS4xNjcgMCAwIDAgMS4xNjctMS4xNjZ2LTYuNUg4YTEuNSAxLjUgMCAwIDEtMS41LTEuNXYtMlptLS42MTggNS4yMTVhLjE2Ny4xNjcgMCAwIDEgLjI4NS4xMTh2MS4zMzNhLjE2Ny4xNjcgMCAwIDEtLjMzNCAwVjcuNWMwLS4wNDQuMDE4LS4wODcuMDUtLjExOFpcXFwiIGZpbGw9XFxcIkN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJDdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTIgMTVcXFwiPjxwYXRoIGQ9XFxcIm02LjE0IDEwLjc0Mi4wMi4wNTguMDA3LjAxdi4wMzZhLjA2LjA2IDAgMCAxLS4wMDYuMDI3bC0uMDEuMDIyLS4wMDguMDIxYS4xLjEgMCAwIDEtLjA2LjA2bC0uMDIyLjAwOC0uMDIxLjAxYS4wNi4wNiAwIDAgMS0uMDI3LjAwNmgtLjAwNmEuMTY2LjE2NiAwIDAgMS0uMTA2LS4wNC4yNjYuMjY2IDAgMCAxLS4wNC0uMDY2bC0uMDA0LS4wMS0uMDA1LS4wMWEuMDYuMDYgMCAwIDEtLjAwNS0uMDI4di0uMDIzbC0uMDAxLS4wMjMtLjAwMS0uMDE4LjAwMy0uMDA3LjAxMi0uMDMzYS41NzYuNTc2IDAgMCAxIC4wMjMtLjAzLjE2Ni4xNjYgMCAwIDEgLjA0NC0uMDI2bC4wMTQtLjAwNWEuMTY3LjE2NyAwIDAgMSAuMDk2LS4wMWwuMDk0LS40OTEtLjA5NC40OWEuMTY2LjE2NiAwIDAgMSAuMDc3LjAzOGMuMDA5LjAxLjAxOC4wMjIuMDI2LjAzNFptLjY5My05LjMzNSAzLjk2MyAzLjk2My4wMjMuMDdhLjM3LjM3IDAgMCAxIC4wMTQuMDU0djYuNjczYTEuNSAxLjUgMCAwIDEtMS41IDEuNUgyLjY2N2ExLjUgMS41IDAgMCAxLTEuMDYxLS40NGwtLjM0OC4zNDguMzQ4LS4zNDhhMS41IDEuNSAwIDAgMS0uNDQtMS4wNlYyLjgzM2ExLjUgMS41IDAgMCAxIDEuNS0xLjVoMy45OWwuMDE1LjAwNy4xMTYuMDY3aC4wNDZabS44NTQgMS4zNDZMNi44MzMgMS45djIuMjY3QTEuMTY3IDEuMTY3IDAgMCAwIDggNS4zMzNoMi4yNjdsLS44NTMtLjg1My0xLjcyNy0xLjcyN1pNNi41IDIuMTY3di0uNUgyLjY2N0ExLjE2NyAxLjE2NyAwIDAgMCAxLjUgMi44MzN2OS4zMzRhMS4xNjcgMS4xNjcgMCAwIDAgMS4xNjcgMS4xNjZoNi42NjZhMS4xNjcgMS4xNjcgMCAwIDAgMS4xNjctMS4xNjZ2LTYuNUg4YTEuNSAxLjUgMCAwIDEtMS41LTEuNXYtMlptLS42MTggNS4yMTVhLjE2Ny4xNjcgMCAwIDEgLjI4NS4xMTh2MS4zMzNhLjE2Ny4xNjcgMCAwIDEtLjMzNCAwVjcuNWMwLS4wNDQuMDE4LS4wODcuMDUtLjExOFpcXFwiIGZpbGw9XFxcIkN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJDdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMC42NjcgOS4zMzNINS4zMzNhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM2g1LjMzNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWm0wLTIuNjY3aC00YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0Wm0yLjY2Ni00aC0yVjJBLjY2Ny42NjcgMCAxIDAgMTAgMnYuNjY2SDguNjY3VjJhLjY2Ny42NjcgMCAxIDAtMS4zMzQgMHYuNjY2SDZWMmEuNjY3LjY2NyAwIDAgMC0xLjMzMyAwdi42NjZoLTJBLjY2Ny42NjcgMCAwIDAgMiAzLjMzM3Y5LjMzM2EyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYzLjMzM2EuNjY2LjY2NiAwIDAgMC0uNjY3LS42NjdabS0uNjY2IDEwYS42NjcuNjY3IDAgMCAxLS42NjcuNjY3SDRhLjY2Ni42NjYgMCAwIDEtLjY2Ny0uNjY3VjRoMS4zMzR2LjY2NmEuNjY3LjY2NyAwIDEgMCAxLjMzMyAwVjRoMS4zMzN2LjY2NmEuNjY3LjY2NyAwIDAgMCAxLjMzNCAwVjRIMTB2LjY2NmEuNjY2LjY2NiAwIDEgMCAxLjMzMyAwVjRoMS4zMzR2OC42NjZaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMC42NjcgOS4zMzNINS4zMzNhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM2g1LjMzNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWm0wLTIuNjY3aC00YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0Wm0yLjY2Ni00aC0yVjJBLjY2Ny42NjcgMCAxIDAgMTAgMnYuNjY2SDguNjY3VjJhLjY2Ny42NjcgMCAxIDAtMS4zMzQgMHYuNjY2SDZWMmEuNjY3LjY2NyAwIDAgMC0xLjMzMyAwdi42NjZoLTJBLjY2Ny42NjcgMCAwIDAgMiAzLjMzM3Y5LjMzM2EyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYzLjMzM2EuNjY2LjY2NiAwIDAgMC0uNjY3LS42NjdabS0uNjY2IDEwYS42NjcuNjY3IDAgMCAxLS42NjcuNjY3SDRhLjY2Ni42NjYgMCAwIDEtLjY2Ny0uNjY3VjRoMS4zMzR2LjY2NmEuNjY3LjY2NyAwIDEgMCAxLjMzMyAwVjRoMS4zMzN2LjY2NmEuNjY3LjY2NyAwIDAgMCAxLjMzNCAwVjRIMTB2LjY2NmEuNjY2LjY2NiAwIDEgMCAxLjMzMyAwVjRoMS4zMzR2OC42NjZaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMi45NiA4LjY2NmMtLjE0NyAwLS4zLS4wNDYtLjQ0Ny0uMDhhNi4yOSA2LjI5IDAgMCAxLS44NzMtLjI2IDEuMzMzIDEuMzMzIDAgMCAwLTEuNjUzLjY2N2wtLjE0Ny4zQTguMTIgOC4xMiAwIDAgMSA4LjA2NyA3Ljk2YTguMTIgOC4xMiAwIDAgMS0xLjMzNC0xLjc3NEw3LjAxMyA2YTEuMzMzIDEuMzMzIDAgMCAwIC42NjctMS42NTQgNi44ODcgNi44ODcgMCAwIDEtLjI2LS44NzNjLS4wMzMtLjE0Ny0uMDYtLjMtLjA4LS40NTNhMiAyIDAgMCAwLTItMS42NmgtMmEyIDIgMCAwIDAtMiAyLjI3MyAxMi42NjcgMTIuNjY3IDAgMCAwIDExLjAxMyAxMC45NzNoLjI1NGEyIDIgMCAwIDAgMS44MjctMS4xODUgMiAyIDAgMCAwIC4xNzMtLjgyMXYtMmEyIDIgMCAwIDAtMS42NDctMS45MzRabS4zMzMgNGEuNjY2LjY2NiAwIDAgMS0uNDgyLjY0MS43MDcuNzA3IDAgMCAxLS4yOS4wMjZBMTEuMzMzIDExLjMzMyAwIDAgMSAyLjcxMiAzLjQ4YS43MjcuNzI3IDAgMCAxIC4xNjctLjU0Ny42NjcuNjY3IDAgMCAxIC41LS4yMjdoMmEuNjY3LjY2NyAwIDAgMSAuNjY3LjUyNyA3LjQxNCA3LjQxNCAwIDAgMCAuNDA3IDEuNTczbC0uOTM0LjQzNGEuNjY3LjY2NyAwIDAgMC0uMzI3Ljg4NiA5LjY2IDkuNjYgMCAwIDAgNC42NjcgNC42NjcuNjY2LjY2NiAwIDAgMCAuNTA3IDAgLjY2NS42NjUgMCAwIDAgLjM4LS4zNDdsLjQxMy0uOTMzYy4zNDUuMTIzLjY5Ny4yMjYgMS4wNTMuMzA3LjE3OC4wNC4zNTguMDczLjU0LjFhLjY2Ny42NjcgMCAwIDEgLjUyNy42NjZsLjAxMyAyLjA4WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDE1IDE1XFxcIj48cGF0aCBkPVxcXCJNMTAuOTE3IDkuNjY2aC0uNjU5bC0uMjMzLS4yMjVhNS40MTcgNS40MTcgMCAwIDAgMS4yMzMtNC40NUMxMC44NjcgMi42NzUgOC45MzMuODI1IDYuNi41NDFBNS40MiA1LjQyIDAgMCAwIC41NDIgNi42Yy4yODMgMi4zMzMgMi4xMzMgNC4yNjYgNC40NSA0LjY1OGE1LjQxNyA1LjQxNyAwIDAgMCA0LjQ1LTEuMjMzbC4yMjUuMjMzdi42NThsMy41NDEgMy41NDJhLjg4Ljg4IDAgMCAwIDEuMjQyIDAgLjg4Ljg4IDAgMCAwIDAtMS4yNDJsLTMuNTMzLTMuNTVabS01IDBhMy43NDUgMy43NDUgMCAwIDEtMy43NS0zLjc1IDMuNzQ1IDMuNzQ1IDAgMCAxIDMuNzUtMy43NSAzLjc0NSAzLjc0NSAwIDAgMSAzLjc1IDMuNzUgMy43NDUgMy43NDUgMCAwIDEtMy43NSAzLjc1WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48bWFzayBpZD1cXFwicGVyaW9kLWljb25fc3ZnX19hXFxcIiBmaWxsPVxcXCIjZmZmXFxcIj48cGF0aCBkPVxcXCJNOCA5LjMzM0EuNjY3LjY2NyAwIDEgMCA4IDhhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptMy4zMzMgMGEuNjY3LjY2NyAwIDEgMCAwLTEuMzM0LjY2Ny42NjcgMCAwIDAgMCAxLjMzNFpNOCAxMmEuNjY3LjY2NyAwIDEgMCAwLTEuMzM0QS42NjcuNjY3IDAgMCAwIDggMTJabTMuMzMzIDBhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNS42NjcuNjY3IDAgMCAwIDAgMS4zMzVaTTQuNjY3IDkuMzMzYS42NjcuNjY3IDAgMSAwIDAtMS4zMzMuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWm04LTYuNjY2SDEyVjJhLjY2Ny42NjcgMCAxIDAtMS4zMzMgMHYuNjY3SDUuMzMzVjJBLjY2Ny42NjcgMCAxIDAgNCAydi42NjdoLS42NjdhMiAyIDAgMCAwLTIgMnY4YTIgMiAwIDAgMCAyIDJoOS4zMzRhMiAyIDAgMCAwIDItMnYtOGEyIDIgMCAwIDAtMi0yWm0uNjY2IDEwYS42NjcuNjY3IDAgMCAxLS42NjYuNjY2SDMuMzMzYS42NjcuNjY3IDAgMCAxLS42NjYtLjY2NnYtNmgxMC42NjZ2NlptMC03LjMzNEgyLjY2N3YtLjY2NkEuNjY3LjY2NyAwIDAgMSAzLjMzMyA0aDkuMzM0YS42NjcuNjY3IDAgMCAxIC42NjYuNjY3di42NjZaTTQuNjY3IDEyYS42NjcuNjY3IDAgMSAwIDAtMS4zMzQuNjY3LjY2NyAwIDAgMCAwIDEuMzM0WlxcXCIvPjwvbWFzaz48cGF0aCBmaWxsPVxcXCIjZmZmXFxcIiBzdHJva2U9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4zMzNcXFwiIGQ9XFxcIk04IDkuMzMzQS42NjcuNjY3IDAgMSAwIDggOGEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWm0zLjMzMyAwYS42NjcuNjY3IDAgMSAwIDAtMS4zMzQuNjY3LjY2NyAwIDAgMCAwIDEuMzM0Wk04IDEyYS42NjcuNjY3IDAgMSAwIDAtMS4zMzRBLjY2Ny42NjcgMCAwIDAgOCAxMlptMy4zMzMgMGEuNjY3LjY2NyAwIDEgMCAwLTEuMzM1LjY2Ny42NjcgMCAwIDAgMCAxLjMzNVpNNC42NjcgOS4zMzNhLjY2Ny42NjcgMCAxIDAgMC0xLjMzMy42NjcuNjY3IDAgMCAwIDAgMS4zMzNabTgtNi42NjZIMTJWMmEuNjY3LjY2NyAwIDEgMC0xLjMzMyAwdi42NjdINS4zMzNWMkEuNjY3LjY2NyAwIDEgMCA0IDJ2LjY2N2gtLjY2N2EyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmg5LjMzNGEyIDIgMCAwIDAgMi0ydi04YTIgMiAwIDAgMC0yLTJabS42NjYgMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ni42NjZIMy4zMzNhLjY2Ny42NjcgMCAwIDEtLjY2Ni0uNjY2di02aDEwLjY2NnY2Wm0wLTcuMzM0SDIuNjY3di0uNjY2QS42NjcuNjY3IDAgMCAxIDMuMzMzIDRoOS4zMzRhLjY2Ny42NjcgMCAwIDEgLjY2Ni42Njd2LjY2NlpNNC42NjcgMTJhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNC42NjcuNjY3IDAgMCAwIDAgMS4zMzRaXFxcIiBtYXNrPVxcXCJ1cmwoI3BlcmlvZC1pY29uX3N2Z19fYSlcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiPjxwYXRoIGZpbGw9XFxcIiNmZmZcXFwiIHN0cm9rZT1cXFwiI2ZmZlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIiBkPVxcXCJNOC4zMzMgNy4zMzN2LjMzNGgyLjMzNGEuMzMzLjMzMyAwIDEgMSAwIC42NjZIOC4zMzN2Mi4zMzRhLjMzMy4zMzMgMCAxIDEtLjY2NiAwVjguMzMzSDUuMzMzYS4zMzMuMzMzIDAgMCAxIDAtLjY2NmgyLjMzNFY1LjMzM2EuMzMzLjMzMyAwIDAgMSAuNjY2IDB2MlpNNC40ODEgMi43MzRhNi4zMzMgNi4zMzMgMCAxIDEgNy4wMzggMTAuNTMyQTYuMzMzIDYuMzMzIDAgMCAxIDQuNDggMi43MzRabS4zNyA5Ljk3OGE1LjY2NiA1LjY2NiAwIDEgMCA2LjI5Ny05LjQyMyA1LjY2NiA1LjY2NiAwIDAgMC02LjI5NiA5LjQyM1pcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiPjxwYXRoIGZpbGw9XFxcIiNmZmZcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBkPVxcXCJNOC4xNjcgNy4zMzR2LjVoNC41YS4xNjcuMTY3IDAgMSAxIDAgLjMzM2gtNC41djQuNWEuMTY2LjE2NiAwIDEgMS0uMzM0IDB2LTQuNWgtNC41YS4xNjcuMTY3IDAgMCAxIDAtLjMzM2g0LjV2LTQuNWEuMTY3LjE2NyAwIDEgMSAuMzM0IDB2NFpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTcgMTZcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIgZD1cXFwiTTguMTY3IDMuNnYtLjgwNWwtLjU3LjU2OS0uODY2Ljg2N2EuMzEyLjMxMiAwIDAgMS0uNDYyIDAgLjMxMi4zMTIgMCAwIDEgMC0uNDYybDItMi0uMjM0LS4yMzUuMjM0LjIzNWEuMzEyLjMxMiAwIDAgMSAuNDYyIDBsLjIzMy0uMjM0LS4yMzMuMjM0IDIgMmEuMzEyLjMxMiAwIDAgMSAwIC40NjIuMzY4LjM2OCAwIDAgMS0uMTA4LjA4LjI5Mi4yOTIgMCAwIDEtLjEyMy4wMjIuMjkyLjI5MiAwIDAgMS0uMTIzLS4wMjEuMzY4LjM2OCAwIDAgMS0uMTA4LS4wODFsLS44NjctLjg2Ny0uNTY5LS41N3Y4LjUzOWMwIC4xMjQtLjA0LjIwMi0uMDg1LjI0OC0uMDQ2LjA0NS0uMTI0LjA4NS0uMjQ4LjA4NXMtLjIwMi0uMDQtLjI0OC0uMDg1Yy0uMDQ1LS4wNDYtLjA4NS0uMTI0LS4wODUtLjI0OFYzLjZabTMgMi43MzNIMTIuNWMuOTUgMCAxLjY2Ny43MTcgMS42NjcgMS42Njd2NC42NjZjMCAuOTUtLjcxOCAxLjY2Ny0xLjY2NyAxLjY2N2gtOGMtLjk1IDAtMS42NjctLjcxNy0xLjY2Ny0xLjY2N1Y4YzAtLjk1LjcxOC0xLjY2NyAxLjY2Ny0xLjY2N2gxLjMzM2MuMTI1IDAgLjIwMi4wNC4yNDguMDg2LjA0Ni4wNDUuMDg2LjEyMy4wODYuMjQ3IDAgLjEyNS0uMDQuMjAyLS4wODYuMjQ4LS4wNDYuMDQ2LS4xMjMuMDg2LS4yNDguMDg2SDQuNWExIDEgMCAwIDAtLjcxOS4yOEExIDEgMCAwIDAgMy41IDh2NC42NjZhMSAxIDAgMCAwIC4yODEuNzIgMSAxIDAgMCAwIC43MTkuMjhoOGExIDEgMCAwIDAgLjcxOS0uMjggMSAxIDAgMCAwIC4yODEtLjcyVjhhMSAxIDAgMCAwLS4yODEtLjcyQTEgMSAwIDAgMCAxMi41IDdoLTEuMzMzYy0uMTI1IDAtLjIwMi0uMDQtLjI0OC0uMDg2LS4wNDYtLjA0Ni0uMDg2LS4xMjMtLjA4Ni0uMjQ4IDAtLjEyNC4wNC0uMjAyLjA4Ni0uMjQ3LjA0Ni0uMDQ2LjEyMy0uMDg2LjI0OC0uMDg2WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAyMFxcXCI+PHBhdGggZD1cXFwiTTEyLjY2NyA3di4zMzNIMTNBMi42NjcgMi42NjcgMCAwIDEgMTUuNjY3IDEwdjdBMi42NjcgMi42NjcgMCAwIDEgMTMgMTkuNjY3SDNBMi42NjcgMi42NjcgMCAwIDEgLjMzMyAxN3YtN0EyLjY2NyAyLjY2NyAwIDAgMSAzIDcuMzMzaC4zMzNWNWE0LjY2NyA0LjY2NyAwIDAgMSA5LjMzNCAwdjJaTTExIDcuMzMzaC4zMzNWNWEzLjMzMyAzLjMzMyAwIDAgMC02LjY2NiAwdjIuMzMzSDExWm0yLjk0MyAxMC42MWMuMjUtLjI1LjM5LS41OS4zOS0uOTQzdi03QTEuMzMzIDEuMzMzIDAgMCAwIDEzIDguNjY3SDNBMS4zMzMgMS4zMzMgMCAwIDAgMS42NjcgMTB2N0ExLjMzMyAxLjMzMyAwIDAgMCAzIDE4LjMzM2gxMGMuMzU0IDAgLjY5My0uMTQuOTQzLS4zOVpcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZT1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE1IDE0XFxcIj48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiIGQ9XFxcIk03LjUgNC42NjZhMSAxIDAgMCAwLS44NjkuNWwtLjAwNi4wMTJhLjMzMy4zMzMgMCAwIDEtLjIwMy4xNjZsLjA5My4zMi0uMDkzLS4zMmEuMzMzLjMzMyAwIDAgMS0uMzYtLjEybC0uMjY2LjIuMjY3LS4yYS4zMzMuMzMzIDAgMCAxLS4wMTUtLjM3OWwuMDA0LS4wMDYuMDAzLS4wMDZBMS42NjcgMS42NjcgMCAwIDEgNy41IDRhMS42NjcgMS42NjcgMCAwIDEgLjU1NCAzLjIzM2wtLjIyLjA4di4zNTNhLjMzMy4zMzMgMCAxIDEtLjY2NiAwVjdhLjMzMy4zMzMgMCAwIDEgLjMzMy0uMzM0IDEgMSAwIDAgMCAwLTJabTAgMFY1bC4wMDEtLjMzNFptLS4zMTYgNC44OTguMDEtLjAyLjAwOC0uMDIzYS4xNzMuMTczIDAgMCAxIC4wMi0uMDM5IDEuMiAxLjIgMCAwIDEgLjA0Ni0uMDYuMzMzLjMzMyAwIDAgMSAuMTA0LS4wNjdsLS4xMjgtLjMwOC4xMjguMzA4YS4zMzMuMzMzIDAgMCAxIC4zNjUuMDczLjMzMy4zMzMgMCAwIDEgLjA5Ni4yMzZ2LjAxNWEuMzMzLjMzMyAwIDAgMS0uMDIuMTI2di4wMDFhLjI2Ny4yNjcgMCAwIDEtLjA2Mi4wOThsLjIzNi4yMzYtLjIzNi0uMjM2YS4yNjcuMjY3IDAgMCAxLS4wOTguMDYybC0uMDEuMDA0LS4wMTEuMDA1YS4yOTMuMjkzIDAgMCAxLS4yMzcgMGwtLjAxLS4wMDUtLjAxMi0uMDA0YS4yNjcuMjY3IDAgMCAxLS4wOTctLjA2MmwtLjIzNi4yMzYuMjM2LS4yMzZhLjI2Ny4yNjcgMCAwIDEtLjA2My0uMDk4bC0uMDA1LS4wMTQtLjAwNy0uMDE1YS4yMjcuMjI3IDAgMCAxLS4wMjEtLjEwMnYtLjAzM2EuNTczLjU3MyAwIDAgMS0uMDAyLS4wNjQuMDk0LjA5NCAwIDAgMSAuMDA2LS4wMTRaTTMuOTggMS43MzRhNi4zMzMgNi4zMzMgMCAxIDEgNy4wMzggMTAuNTMyQTYuMzMzIDYuMzMzIDAgMCAxIDMuOTggMS43MzRabS4zNyA5Ljk3N2E1LjY2NiA1LjY2NiAwIDEgMCA2LjI5Ny05LjQyMiA1LjY2NiA1LjY2NiAwIDAgMC02LjI5NiA5LjQyMlpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTQgMTRcXFwiPjxwYXRoIGZpbGw9XFxcInJlZFxcXCIgZD1cXFwibTguNDEgNyA0LjMtNC4yOWExLjAwNCAxLjAwNCAwIDAgMC0xLjQyLTEuNDJMNyA1LjU5bC00LjI5LTQuM2ExLjAwNCAxLjAwNCAwIDEgMC0xLjQyIDEuNDJMNS41OSA3bC00LjMgNC4yOWEuOTk5Ljk5OSAwIDAgMCAwIDEuNDIgMSAxIDAgMCAwIDEuNDIgMEw3IDguNDFsNC4yOSA0LjNhMS4wMDEgMS4wMDEgMCAwIDAgMS42MzktLjMyNSAxIDEgMCAwIDAtLjIyLTEuMDk1TDguNDEgN1pcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgNiA2XFxcIj48Y2lyY2xlIGN4PVxcXCIzXFxcIiBjeT1cXFwiM1xcXCIgcj1cXFwiM1xcXCIgZmlsbD1cXFwiI0ZGNzI2NFxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEzLjk5OSA3LjMzM2MtLjQgMC0uNjY3LjI2Ny0uNjY3LjY2NyAwIDEuOTMzLTEgMy42NjYtMi42NjcgNC42LTIuNTMzIDEuNDY2LTUuOC42LTcuMjY2LTEuOTM0LTEuNDY3LTIuNTMzLS42LTUuOCAxLjkzMy03LjI2NmE1LjMzOCA1LjMzOCAwIDAgMSA2LjUzMy45MzNoLTEuNmMtLjQgMC0uNjY2LjI2Ny0uNjY2LjY2N3MuMjY2LjY2Ni42NjYuNjY2aDNjLjQgMCAuNjY3LS4yNjYuNjY3LS42NjZWMmMwLS40LS4yNjctLjY2Ny0uNjY3LS42NjdTMTIuNiAxLjYgMTIuNiAydjEuMmMtMS4yNjctMS4yLTIuODY3LTEuODY3LTQuNi0xLjg2Ny0zLjY2NyAwLTYuNjY3IDMtNi42NjcgNi42NjcgMCAzLjY2NiAzIDYuNjY2IDYuNjY3IDYuNjY2IDMuNjY2IDAgNi42NjYtMyA2LjY2Ni02LjY2NiAwLS40LS4yNjYtLjY2Ny0uNjY2LS42NjdaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTlcXFwiPjxwYXRoIGZpbGw9XFxcIiNmZmZcXFwiIHN0cm9rZT1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIiBkPVxcXCJtMTMgMTYuMzMyLS41MzMtLjM5OC0uNzEzLS41MzRhLjMzMy4zMzMgMCAwIDAtLjQgMGwxLjY0Ni45MzJabTAgMFY1LjMzM0gzdjEwLjk5OWwuNTMzLS4zOTguNzEzLS41MzRhLjMzMy4zMzMgMCAwIDEgLjQgMGwxLjM3NCAxLjAzMy4yLjE1LjItLjE1TDcuOCAxNS40YS4zMzMuMzMzIDAgMCAxIC40IDBsMS4zOCAxLjAzMy4yLjE1LjItLjE1IDEuMzczLTEuMDMzIDEuNjQ3LjkzMlptLTEwLjEzMy45MzRhLjMzNC4zMzQgMCAwIDEtLjQ4NC0uMDlsLS4yODMuMTc0LjI4My0uMTc1YS4zMzQuMzM0IDAgMCAxLS4wNS0uMTc1VjVhLjMzMy4zMzMgMCAwIDEgLjMzNC0uMzMzaDEwLjY2NmEuMzMzLjMzMyAwIDAgMSAuMzM0LjMzM3YxMS45OTlhLjMzNC4zMzQgMCAwIDEtLjA1LjE3NGwuMjgzLjE3NS0uMjgzLS4xNzVhLjMzMy4zMzMgMCAwIDEtLjMxNC4xNThsLS4wMjguMzMyLjAyOC0uMzMyYS4zMzQuMzM0IDAgMCAxLS4xNy0uMDY1bC0xLjM4LTEuMDMzLS4yLS4xNS0uMi4xNS0xLjM3MyAxLjAzNGEuMzMzLjMzMyAwIDAgMS0uNCAwTDguMiAxNi4yMzJsLS4yLS4xNS0uMi4xNS0xLjM4IDEuMDMzYS4zMzMuMzMzIDAgMCAxLS40IDBsLTEuMzczLTEuMDMyLS4yLS4xNS0uMi4xNS0xLjM4IDEuMDMyWm0yLjIzLTQuMDMtLjIzNS4yMzUuMjM2LS4yMzVhLjMzMy4zMzMgMCAwIDEgMC0uNDcybC0uMjM2LS4yMzYuMjM2LjIzNmEuMzMzLjMzMyAwIDAgMSAuMjM1LS4wOTdoNS4zMzRhLjMzMy4zMzMgMCAxIDEgMCAuNjY2SDUuMzMzYS4zMzMuMzMzIDAgMCAxLS4yMzUtLjA5N1pNMTAuNjY4IDhoLTRhLjMzMy4zMzMgMCAwIDEgMC0uNjY3aDRhLjMzMy4zMzMgMCAxIDEgMCAuNjY3Wm0wIDIuNjY3SDUuMzMzYS4zMzMuMzMzIDAgMSAxIDAtLjY2N2g1LjMzNGEuMzMzLjMzMyAwIDEgMSAwIC42NjdaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJNMyAxMmgxOG0tNS01IDUgNS01IDVcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIjJcXFwiIHN0cm9rZS1saW5lY2FwPVxcXCJyb3VuZFxcXCIgc3Ryb2tlLWxpbmVqb2luPVxcXCJyb3VuZFxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZD1cXFwibTEwLjE2NSA5LjY2Mi4xNjMuMTY0LjIxLS4wOTZhMS43MiAxLjcyIDAgMCAxIDEuODk1LjMxNGwxLjM3NiAxLjQwOS4yMzgtLjIzMy0uMjMzLjIzOGExLjY2NSAxLjY2NSAwIDAgMSAwIDIuMzg0bC0uMDAzLjAwMmExLjY2NyAxLjY2NyAwIDAgMS0yLjM1NSAwbC0xLjQxMi0xLjQxMmExLjY2NyAxLjY2NyAwIDAgMS0uMjkzLTEuOTJsLjExLS4yMTYtLjE3Mi0uMTcyLS41OTMtLjU5My0uMjA0LS4yMDQtLjIzMS4xNzNhNC4zMzMgNC4zMzMgMCAxIDEgLjg3Mi0uODczbC0uMTczLjIzMS4yMDUuMjA0LjYuNlptMi44NTMgMy44OThhMSAxIDAgMCAwIC41NDMtLjU0Mi45OTkuOTk5IDAgMCAwLS4yMTktMS4wOTRsLTEuNDEyLTEuNDEyYTEgMSAwIDAgMC0xLjYzNy4zMjMgMSAxIDAgMCAwIC4yMTkgMS4wOTVsMS40MTIgMS40MTF2LjAwMWEuOTk5Ljk5OSAwIDAgMCAxLjA5NC4yMThaTTYuNzUyIDkuNjNhMy42NjcgMy42NjcgMCAxIDAtMS40MjQtNy4xOTRBMy42NjcgMy42NjcgMCAwIDAgNi43NTIgOS42M1pcXFwiIGZpbGw9XFxcIiNBNkI1QkFcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIm0xNC4yMTIgNi4zNjYtMS4yNi0uNDIuNTkzLTEuMTg2QS42NjcuNjY3IDAgMCAwIDEzLjQyIDRsLTEuNDItMS40MmEuNjY3LjY2NyAwIDAgMC0uNzY3LS4xMjdsLTEuMTg3LjU5My0uNDItMS4yNkEuNjY3LjY2NyAwIDAgMCA5IDEuMzMzaC0yYS42NjcuNjY3IDAgMCAwLS42MzQuNDUzbC0uNDIgMS4yNi0xLjE4Ni0uNTkzYS42NjcuNjY3IDAgMCAwLS43Ni4xMjdMMi41NzkgNGEuNjY3LjY2NyAwIDAgMC0uMTI3Ljc2NmwuNTkzIDEuMTg3LTEuMjYuNDJBLjY2Ny42NjcgMCAwIDAgMS4zMzIgN3YyYS42NjcuNjY3IDAgMCAwIC40NTMuNjMzbDEuMjYuNDItLjU5MyAxLjE4N2EuNjY3LjY2NyAwIDAgMCAuMTI3Ljc2bDEuNDIgMS40MmEuNjY3LjY2NyAwIDAgMCAuNzY2LjEyNmwxLjE4Ny0uNTkzLjQyIDEuMjZhLjY2Ny42NjcgMCAwIDAgLjYzMy40NTNoMmEuNjY3LjY2NyAwIDAgMCAuNjM0LS40NTNsLjQyLTEuMjYgMS4xODYuNTkzQS42NjYuNjY2IDAgMCAwIDEyIDEzLjQybDEuNDItMS40MmEuNjY3LjY2NyAwIDAgMCAuMTI2LS43NjdsLS41OTMtMS4xODcgMS4yNi0uNDJBLjY2Ny42NjcgMCAwIDAgMTQuNjY1IDlWN2EuNjY3LjY2NyAwIDAgMC0uNDUzLS42MzRabS0uODggMi4xNTQtLjguMjY2YTEuMzM0IDEuMzM0IDAgMCAwLS43NzMgMS44OGwuMzguNzYtLjczNC43MzQtLjc0LS40YTEuMzM1IDEuMzM1IDAgMCAwLTEuODYuNzczbC0uMjY2LjhoLTEuMDZsLS4yNjctLjhhMS4zMzMgMS4zMzMgMCAwIDAtMS44OC0uNzczbC0uNzYuMzgtLjczMy0uNzM0LjQtLjc0YTEuMzMzIDEuMzMzIDAgMCAwLS43NzQtMS44OGwtLjgtLjI2NlY3LjQ4bC44LS4yNjdhMS4zMzMgMS4zMzMgMCAwIDAgLjc3NC0xLjg4bC0uMzgtLjc0LjczMy0uNzMzLjc0LjM4YTEuMzMzIDEuMzMzIDAgMCAwIDEuODgtLjc3NGwuMjY3LS44aDEuMDRsLjI2Ni44YTEuMzMzIDEuMzMzIDAgMCAwIDEuODguNzc0bC43Ni0uMzguNzM0LjczMy0uNC43NGExLjMzMyAxLjMzMyAwIDAgMCAuNzczIDEuODZsLjguMjY3djEuMDZaTTcuOTk5IDUuMzMzYTIuNjY3IDIuNjY3IDAgMSAwIDAgNS4zMzMgMi42NjcgMi42NjcgMCAwIDAgMC01LjMzM1ptMCA0YTEuMzMzIDEuMzMzIDAgMSAxIDAtMi42NjcgMS4zMzMgMS4zMzMgMCAwIDEgMCAyLjY2N1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTggMThcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTE0LjcyMyAyLjczOGEuNzUuNzUgMCAwIDAtLjYzLS4xNSA2IDYgMCAwIDEtNC42NjUtLjk1My43NS43NSAwIDAgMC0uODU2IDAgNiA2IDAgMCAxLTQuNjY0Ljk1My43NS43NSAwIDAgMC0uOTA4LjczNVY4LjkxYTYuNzUgNi43NSAwIDAgMCAyLjgyNyA1LjQ5OGwyLjczOCAxLjk1YS43NS43NSAwIDAgMCAuODcgMGwyLjczNy0xLjk1QTYuNzUgNi43NSAwIDAgMCAxNSA4LjkxVjMuMzIzYS43NDkuNzQ5IDAgMCAwLS4yNzctLjU4NVpNMTMuNSA4LjkxYTUuMjQ5IDUuMjQ5IDAgMCAxLTIuMTk3IDQuMjc1TDkgMTQuODI4bC0yLjMwMy0xLjY0M0E1LjI1IDUuMjUgMCAwIDEgNC41IDguOTFWNC4xODVBNy41IDcuNSAwIDAgMCA5IDMuMTQzYTcuNSA3LjUgMCAwIDAgNC41IDEuMDQyVjguOTFabS0zLjM0NS0xLjcxN0w4LjEzNyA5LjIxOGwtLjY2Ny0uNjc1YS43NTMuNzUzIDAgMSAwLTEuMDY1IDEuMDY1bDEuMiAxLjJhLjc1Ljc1IDAgMCAwIDEuMDY1IDBsMi41OC0yLjU1OGEuNzUzLjc1MyAwIDAgMC0xLjA2NS0xLjA2NWwtLjAzLjAwOFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTE0LjI3MyA1Ljc2N3YtLjA0YTYuNjY3IDYuNjY3IDAgMCAwLTEyLjUyLS4wNC41NjcuNTY3IDAgMCAwLS4wNTMuMTYgNi42NjcgNi42NjcgMCAxIDAgMTIuNTczLS4wOFpNOCAyLjY2N2E1LjMzMyA1LjMzMyAwIDAgMSA0LjYxMyAyLjY2NmgtLjhhMiAyIDAgMCAwLTMuMDguMTQ3QTIuMTEzIDIuMTEzIDAgMCAwIDggNS4zMzNjLS4yNTEuMDA1LS41LjA1NS0uNzMzLjE0N2EyIDIgMCAwIDAtMy4wOC0uMTQ3aC0uOEE1LjMzMyA1LjMzMyAwIDAgMSA4IDIuNjY3Wm0zIDRhLjY2Ny42NjcgMCAxIDEtMS4zMzQgMCAuNjY3LjY2NyAwIDAgMSAxLjMzNCAwWm0tNC42NjcgMGEuNjY3LjY2NyAwIDEgMS0xLjMzMyAwIC42NjcuNjY3IDAgMCAxIDEuMzMzIDBaTTggMTMuMzMzQTUuMzMzIDUuMzMzIDAgMCAxIDIuNjY3IDhjLjAwMy0uNDUuMDYtLjg5OC4xNzMtMS4zMzNoLjgyN2EyIDIgMCAwIDAgNCAuMTIuNjY3LjY2NyAwIDAgMSAuNjY2IDAgMiAyIDAgMSAwIDQtLjEyaC44MjdjLjExMi40MzUuMTcuODgzLjE3MyAxLjMzM0E1LjMzNCA1LjMzNCAwIDAgMSA4IDEzLjMzM1ptMS41NzMtMy44NDZhMi41MDcgMi41MDcgMCAwIDEtMy4xNDYgMCAuNjY3LjY2NyAwIDAgMC0uODU0IDEuMDI2IDMuNzg3IDMuNzg3IDAgMCAwIDQuODU0IDAgLjY2OC42NjggMCAwIDAtLjg1NC0xLjAyNlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgOSAxMlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMS45NTUgOC4zMzNoNC42N2wtMi4zMzYgMi4yNTQtMi4zMzQtMi4yNTRabTEuODQ0IDMuMTk0Yy4yNy4yNi43MDQuMjYuOTc0IDBsMy4xNy0zLjA2Yy40MzYtLjQxNC4xMzItMS4xMzQtLjQ4My0xLjEzNEgxLjEyNmMtLjYxNSAwLS45MjYuNzItLjQ5IDEuMTRsMy4xNjMgMy4wNTRabS0yLjY4LTYuODZINy40NmMuNjE1IDAgLjkyNi0uNzIuNDktMS4xNEw0Ljc4LjQ2N2EuNzA2LjcwNiAwIDAgMC0uOTc0IDBsLTMuMTcgMy4wNmMtLjQzNi40Mi0uMTMyIDEuMTQuNDgzIDEuMTRaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDkgMTJcXFwiPjxwYXRoIGZpbGw9XFxcIiMxNTUzNjZcXFwiIGQ9XFxcIk02LjYyNCAzLjY2N2gtNC42N0w0LjI5IDEuNDEzbDIuMzM1IDIuMjU0Wk00Ljc4LjQ3M2EuNzA2LjcwNiAwIDAgMC0uOTc0IDBsLTMuMTcgMy4wNmMtLjQzNi40MTQtLjEzMiAxLjEzNC40ODMgMS4xMzRoNi4zMzRjLjYxNSAwIC45MjYtLjcyLjQ5LTEuMTRMNC43OC40NzNabTIuNjggNi44NkgxLjExOWMtLjYxNSAwLS45MjYuNzItLjQ5IDEuMTRsMy4xNyAzLjA2Yy4yNy4yNi43MDQuMjYuOTc0IDBsMy4xNy0zLjA2Yy40MzYtLjQyLjEzMi0xLjE0LS40ODMtMS4xNFpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB3aWR0aD1cXFwiOVxcXCIgZmlsbD1cXFwibm9uZVxcXCI+PHBhdGggZmlsbD1cXFwiIzE1NTM2NlxcXCIgZD1cXFwiTTYuNjI1IDMuNjY3aC00LjY3TDQuMjkgMS40MTRsMi4zMzUgMi4yNTNaTTQuNzguNDc0YS43MDYuNzA2IDAgMCAwLS45NzQgMGwtMy4xNyAzLjA2Yy0uNDM1LjQxMy0uMTMxIDEuMTMzLjQ4MyAxLjEzM2g2LjMzNWMuNjE1IDAgLjkyNS0uNzIuNDktMS4xNEw0Ljc4LjQ3NFptMi42OCA2Ljg2SDEuMTJjLS42MTUgMC0uOTI2LjcyLS40OTEgMS4xNGwzLjE3IDMuMDZjLjI3LjI2LjcwNS4yNi45NzUgMGwzLjE3LTMuMDZjLjQzNS0uNDIuMTMxLTEuMTQtLjQ4My0xLjE0WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTcgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTE0Ljg5IDYuNDQ3QS42NjYuNjY2IDAgMCAwIDE0LjMxNiA2bC0zLjc5My0uNTUzTDguODIzIDJhLjY2Ny42NjcgMCAwIDAtMS4yIDBsLTEuNyAzLjQ0TDIuMTMgNmEuNjY3LjY2NyAwIDAgMC0uNTQuNDUzLjY2Ny42NjcgMCAwIDAgLjE2Ni42NjdMNC41MSA5Ljc4N2wtLjY2NyAzLjc4NmEuNjY3LjY2NyAwIDAgMCAuOTY3LjcxNGwzLjQxMy0xLjc4IDMuNCAxLjc4NmMuMDk0LjA1My4yLjA4LjMwNy4wOGEuNjY3LjY2NyAwIDAgMCAuNjI0LS40Mi42NjYuNjY2IDAgMCAwIC4wMzYtLjM3M2wtLjY2Ny0zLjc4NyAyLjc1My0yLjY2NmEuNjY3LjY2NyAwIDAgMCAuMjE0LS42OFptLTQuMSAyLjY2NmEuNjY2LjY2NiAwIDAgMC0uMTk0LjU5NGwuNDggMi43OTMtMi41MDYtMS4zMzNhLjY2Ni42NjYgMCAwIDAtLjYyNyAwTDUuNDM2IDEyLjVsLjQ4LTIuNzkzYS42NjcuNjY3IDAgMCAwLS4xOTMtLjU5NGwtMi0yIDIuODA3LS40MDZhLjY2Ny42NjcgMCAwIDAgLjUwNi0uMzY3TDguMjIzIDMuOGwxLjI1MyAyLjU0N2EuNjY3LjY2NyAwIDAgMCAuNTA3LjM2NmwyLjgwNy40MDctMiAxLjk5M1pcXFwiIGZpbGw9XFxcIiMwNkRCRTRcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTQgMTRcXFwiPjxwYXRoIGZpbGw9XFxcIiMxNzk5N0JcXFwiIHN0cm9rZT1cXFwiIzE3OTk3QlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIiBkPVxcXCJtNS43MTggNy45NjIuMjM2LjIzNi4yMzUtLjIzNiAyLjg2LTIuODY2YS4zMzMuMzMzIDAgMCAxIC40NyAwIC4zMzMuMzMzIDAgMCAxIDAgLjQ3NGwtLjAwMS4wMDEtMy4zMzMgMy4zMzJhLjMzMy4zMzMgMCAwIDEtLjQ3IDBMNC4xNDkgNy4zMzFsLS4wMDktLjAwOS0uMDEtLjAwOWEuMzMzLjMzMyAwIDEgMSAuNDctLjQ3bC4wMDguMDEuMDEuMDEgMS4xIDEuMVpNMy40OCAxLjczNGE2LjMzMyA2LjMzMyAwIDEgMSA3LjAzOCAxMC41MzJBNi4zMzMgNi4zMzMgMCAwIDEgMy40OCAxLjczNFptLjM3IDkuOTc4YTUuNjY3IDUuNjY3IDAgMSAwIDYuMjk3LTkuNDI1IDUuNjY3IDUuNjY3IDAgMCAwLTYuMjk2IDkuNDI1WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZmlsbD1cXFwiI2ZmZlxcXCIgZD1cXFwiTTYuODc1IDEwLjcyOWEuNjY1LjY2NSAwIDAgMS0uNDcxLS4xOTZMNC41MjkgOC42NThhLjY2Ny42NjcgMCAwIDEgLjk0Mi0uOTQybDEuNDA0IDEuNDAzIDMuNjU0LTMuNjUzYS42NjcuNjY3IDAgMCAxIC45NDIuOTQybC00LjEyNSA0LjEyNWEuNjY0LjY2NCAwIDAgMS0uNDcxLjE5NlpcXFwiIG9wYWNpdHk9XFxcIi45OVxcXCIvPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgZD1cXFwiTTggMS4zMzNBNi42NjcgNi42NjcgMCAxIDAgMTQuNjY3IDggNi42NzQgNi42NzQgMCAwIDAgOCAxLjMzM1ptMy40NzEgNS4wNzYtNC4xMjUgNC4xMjVhLjY2Ny42NjcgMCAwIDEtLjk0MiAwTDQuNTI5IDguNjU5YS42NjcuNjY3IDAgMCAxIC45NDItLjk0M2wxLjQwNCAxLjQwMyAzLjY1NC0zLjY1M2EuNjY3LjY2NyAwIDAgMSAuOTQyLjk0M1pcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiPjxwYXRoIHN0cm9rZT1cXFwiIzE3OTk3QlxcXCIgZmlsbD1cXFwiIzE3OTk3QlxcXCIgZD1cXFwiTTIwLjI4NSAyIDkgMTMuNTY3IDMuNzE0IDguNTU2IDAgMTIuMjcyIDkgMjEgMjQgNS43MTV6XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDE0IDE0XFxcIj48cGF0aCBkPVxcXCJNNyAuMzMyYy0zLjY2NyAwLTYuNjY3IDMtNi42NjcgNi42NjcgMCAzLjY2NiAzIDYuNjY2IDYuNjY3IDYuNjY2IDMuNjY2IDAgNi42NjYtMyA2LjY2Ni02LjY2NiAwLTMuNjY3LTMtNi42NjctNi42NjYtNi42NjdabTIuNDY2IDguMmEuNjQ0LjY0NCAwIDAgMSAwIC45MzMuNjQ0LjY0NCAwIDAgMS0uOTMzIDBMNyA3LjkzMiA1LjQ2NiA5LjQ2NWEuNjQ0LjY0NCAwIDAgMS0uOTMzIDAgLjY0NC42NDQgMCAwIDEgMC0uOTMzbDEuNTMzLTEuNTMzLTEuNTMzLTEuNTM0YS42NDQuNjQ0IDAgMCAxIDAtLjkzMy42NDQuNjQ0IDAgMCAxIC45MzMgMEw3IDYuMDY1bDEuNTMzLTEuNTMzYS42NDQuNjQ0IDAgMCAxIC45MzMgMCAuNjQ0LjY0NCAwIDAgMSAwIC45MzNMNy45MzMgN2wxLjUzMyAxLjUzM1pcXFwiIGZpbGw9XFxcIiNEMTAwMUVcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMzIgMzJcXFwiPjxjaXJjbGUgY3g9XFxcIjE2XFxcIiBjeT1cXFwiMTZcXFwiIHI9XFxcIjE2XFxcIiBmaWxsPVxcXCIjRjFGN0Y5XFxcIi8+PHBhdGggZD1cXFwiTTEwLjcwMiAxNy42OWEyLjc0OSAyLjc0OSAwIDAgMCAyLjM1IDEuNDExbC45MzMuMDE4LS43MzQuNTc4YTYuNDk4IDYuNDk4IDAgMCAxLTMuNDAxIDEuMzYyIDguMzQyIDguMzQyIDAgMCAwIDMuMzY3LjcwNWguMDA0YTguMzU4IDguMzU4IDAgMCAwIDguNDQ2LTguNDI0di0uNTY4bC4xMzQtLjFjLjI2My0uMTk2LjUxLS40MTQuNzM3LS42NUwxMC43MDIgMTcuNjlabTAgMGguMDUyYy4zMTEtLjAwMy42Mi0uMDUuOTE4LS4xNDFsLS4wMzItLjY0NmEyLjc0MSAyLjc0MSAwIDAgMS0yLjE1OC0yLjE3N2MuMzIyLjExLjY2LjE3MiAxLjAwNC4xODJsMS4xNTYuMDMxLS45NjItLjY0MmEyLjczNCAyLjczNCAwIDAgMS0xLjIxNy0yLjI4YzAtLjMyMy4wNTYtLjY0Mi4xNjQtLjk0M2E5LjA2NCA5LjA2NCAwIDAgMCA2LjIzNiAyLjk0MWwuNDQ1LjAyMy0uMTA0LS40MzRhMi43NDIgMi43NDIgMCAwIDEgNC42OC0yLjVsLjEyOC4xMzYuMTgzLS4wMzZjLjM4NC0uMDc2Ljc2LS4xODYgMS4xMjItLjMyOWEyLjc2MyAyLjc2MyAwIDAgMS0uNzU4LjY2OEwxMC43MDIgMTcuNjlaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIiBzdHJva2U9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZmlsbD1cXFwiI2ZmZlxcXCIgc3Ryb2tlPVxcXCIjZmZmXFxcIiBkPVxcXCJtOC4wNjMgNS44NS4wMS4wMDNhLjE2Ni4xNjYgMCAwIDEgLjA1Mi4wMzJMMTAuMTIgNy44OHYuMDAyYS4xNjguMTY4IDAgMCAxIC4wMzcuMTgybC40NjIuMTkyLS40NjItLjE5MmEuMTY4LjE2OCAwIDAgMS0uMDM2LjA1NGwtLjAwMy4wMDNhLjE2Ny4xNjcgMCAwIDEtLjE4Mi4wMzdsLS4xOTMuNDYxLjE5My0uNDYxYS4xNjcuMTY3IDAgMCAxLS4wNTUtLjAzN2wtLjg2LS44NjctLjg1NS0uODYxVjEwYS4xNjcuMTY3IDAgMCAxLS4zMzMgMFY2LjM5M2wtLjg1NS44NjEtLjg1OS44NjZhLjE3LjE3IDAgMCAxLS4yNC0uMjRsMS45OTYtMS45OTVhLjE2Ni4xNjYgMCAwIDEgLjA1Mi0uMDMybC4wMS0uMDA0YS4xNjcuMTY3IDAgMCAxIC4xMjYgMFptLTMuNDktMi45NzdhNi4xNjcgNi4xNjcgMCAxIDEgNi44NTMgMTAuMjU0QTYuMTY3IDYuMTY3IDAgMCAxIDQuNTc0IDIuODczWm0uMTg2IDkuOTc3YTUuODM0IDUuODM0IDAgMSAwIDYuNDgxLTkuNyA1LjgzNCA1LjgzNCAwIDAgMC02LjQ4MiA5LjcwMVpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk05LjI3IDkuNDkxYS4xNjcuMTY3IDAgMCAxLS4wNTQtLjAzNWwtLjE5LS4xOTctLjg2LS44ODl2Mi45NjNhLjE2Ny4xNjcgMCAwIDEtLjMzMyAwVjguMzdsLS44Ni44OS0uMTg5LjE5NWEuMTcuMTcgMCAwIDEtLjIzNy0uMjQxbDEuMzI4LTEuMzI5YS4xNjYuMTY2IDAgMCAxIC4wNTItLjAzMmwuMDEtLjAwNGEuMTY3LjE2NyAwIDAgMSAuMTI2IDBsLjAxLjAwNGEuMTU2LjE1NiAwIDAgMSAuMDUyLjAzMmwxLjMyOCAxLjMyOS4wMDIuMDAxYS4xNjcuMTY3IDAgMCAxIC4wMzYuMTgybC40NjIuMTkzLS40NjItLjE5M2EuMTY3LjE2NyAwIDAgMS0uMDM2LjA1NWwtLjAwMy4wMDNhLjE2Ny4xNjcgMCAwIDEtLjE4My4wMzZabS0uNDM3LTcuNTg0IDMuOTYzIDMuOTYzLjAyMy4wN2EuMzMuMzMgMCAwIDEgLjAxNC4wNTR2Ni42NzNhMS41IDEuNSAwIDAgMS0xLjUgMS41SDQuNjY3YTEuNSAxLjUgMCAwIDEtMS4wNjEtLjQ0bC0uMzQ4LjM0OC4zNDgtLjM0OGExLjUgMS41IDAgMCAxLS40NC0xLjA2VjMuMzMzYTEuNSAxLjUgMCAwIDEgMS41LTEuNWgzLjk4YS4yMzMuMjMzIDAgMCAxIC4wMzIuMDE1bC4xMS4wNTloLjA0NVptLjg1NCAxLjM0Nkw4LjgzMyAyLjR2Mi4yNjdBMS4xNjcgMS4xNjcgMCAwIDAgMTAgNS44MzNoMi4yNjdsLS44NTMtLjg1My0xLjcyNy0xLjcyN1pNOC41IDIuNjY3di0uNUg0LjY2N0ExLjE2NyAxLjE2NyAwIDAgMCAzLjUgMy4zMzN2OS4zMzRhMS4xNjcgMS4xNjcgMCAwIDAgMS4xNjcgMS4xNjZoNi42NjZhMS4xNjcgMS4xNjcgMCAwIDAgMS4xNjctMS4xNjZ2LTYuNUgxMGExLjUgMS41IDAgMCAxLTEuNS0xLjV2LTJaXFxcIiBmaWxsPVxcXCJjdXJyZW50Y29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudGNvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJtMy44MzcgMTEuNjQzLS4xMjguMzE0LjI0My4yMzVBNS44MzMgNS44MzMgMCAwIDAgOCAxMy44MzNoLjAwMmE1LjgzMyA1LjgzMyAwIDAgMCA0LjA0Ny0xLjY0bC4yNDMtLjIzNi0uMTI5LS4zMTRhNC41IDQuNSAwIDAgMC04LjMyNSAwWm04LjMzOC0uNzI0LjQzLjczNi40MzMtLjczNkE1Ljc4IDUuNzggMCAwIDAgMTMuODMzIDggNS44MzMgNS44MzMgMCAwIDAgMi4xNjcgOGE1Ljc4IDUuNzggMCAwIDAgLjc5NSAyLjkybC40MzIuNzM2LjQzLS43MzdhNC44MzMgNC44MzMgMCAwIDEgMi4zNjMtMi4wNDJsLjY1NS0uMjY1LS40NjctLjUzYTIuMTY3IDIuMTY3IDAgMSAxIDMuMjUgMGwtLjQ2Ny41My42NTUuMjY1YTQuODMzIDQuODMzIDAgMCAxIDIuMzYyIDIuMDQyWk00LjYzNSAyLjg0YzEtLjY1NSAyLjE3LTEuMDA1IDMuMzY1LTEuMDA3YTYuMTY2IDYuMTY2IDAgMCAxIDQuNTMyIDEwLjMzNSA2LjE2NyA2LjE2NyAwIDAgMS05LjA2NCAwQTYuMTY3IDYuMTY3IDAgMCAxIDQuNjM1IDIuODRabTEuODQgMi44MDhhMS44MzMgMS44MzMgMCAxIDAgMy4wNSAyLjAzNyAxLjgzMyAxLjgzMyAwIDAgMC0zLjA1LTIuMDM3WlxcXCIgZmlsbD1cXFwidHJhbnNwYXJlbnRcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDIwIDIyXFxcIj48cGF0aCBkPVxcXCJtMTMuNTA0IDExLjQ0OC0uNDU1LjM1OC41MzguMjE0YTkuNjY3IDkuNjY3IDAgMCAxIDYuMDQyIDcuOTE2LjY2Ny42NjcgMCAwIDEtLjU3LjczaC0uMDkxYS42NjcuNjY3IDAgMCAxLS42NjctLjU5MyA4LjMzMyA4LjMzMyAwIDAgMC0xNi41NjIgMEEuNjczLjY3MyAwIDAgMSAuNCAxOS45MjZhOS42NjcgOS42NjcgMCAwIDEgNi4wMTMtNy45MDdsLjUzNi0uMjE0LS40NTQtLjM1N2E1LjY2NyA1LjY2NyAwIDEgMSA3LjAwOCAwWm0tNS45MTEtLjg0NWE0LjMzNCA0LjMzNCAwIDEgMCA0LjgxNS03LjIwNyA0LjMzNCA0LjMzNCAwIDAgMC00LjgxNSA3LjIwN1pcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZT1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDIwIDE4XFxcIj48cGF0aCBkPVxcXCJtMTguOTE3IDEzLjU4My02Ljc1LTExLjY2NkMxMS41Ljc1IDkuOTE3LjMzMyA4Ljc1IDFjLS40MTcuMjUtLjc1LjU4My0uOTE3LjkxN2wtNi43NSAxMS42NjZDLjQxNyAxNC43NS44MzMgMTYuMzMzIDIgMTdjLjQxNy4yNS44MzMuMzMzIDEuMjUuMzMzaDEzLjQxN2MxLjQxNiAwIDIuNS0xLjE2NiAyLjUtMi41LjA4My0uNS0uMDg0LS45MTYtLjI1LTEuMjVaTTEwIDE0Yy0uNSAwLS44MzMtLjMzMy0uODMzLS44MzMgMC0uNS4zMzMtLjgzNC44MzMtLjgzNC41IDAgLjgzMy4zMzQuODMzLjgzNCAwIC41LS4zMzMuODMzLS44MzMuODMzWm0uODMzLTQuMTY3YzAgLjUtLjMzMy44MzQtLjgzMy44MzQtLjUgMC0uODMzLS4zMzQtLjgzMy0uODM0VjYuNWMwLS41LjMzMy0uODMzLjgzMy0uODMzLjUgMCAuODMzLjMzMy44MzMuODMzdjMuMzMzWlxcXCIgZmlsbD1cXFwiI0ZGNzI2NFxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxOCAxOVxcXCI+PGcgY2xpcC1wYXRoPVxcXCJ1cmwoI3dhcm5pbmctZmlsbF9zdmdfX2EpXFxcIj48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIm0xNy4wMiAxMy45OTItNi4wNzMtMTAuNWMtLjYtMS4wNS0yLjAyNS0xLjQyNS0zLjA3NC0uODI1LS4zNzUuMjI1LS42NzUuNTI1LS44MjUuODI1bC02LjA3MyAxMC41Yy0uNiAxLjA1LS4yMjUgMi40NzUuODI0IDMuMDc1LjM3NS4yMjUuNzUuMyAxLjEyNS4zaDEyLjA3MWMxLjI3NSAwIDIuMjUtMS4wNSAyLjI1LTIuMjUuMDc1LS40NS0uMDc1LS44MjUtLjIyNS0xLjEyNVptLTguMDIzLjM3NWMtLjQ1IDAtLjc1LS4zLS43NS0uNzVzLjMtLjc1Ljc1LS43NS43NS4zLjc1Ljc1LS4zLjc1LS43NS43NVptLjc1LTMuNzVjMCAuNDUtLjMuNzUtLjc1Ljc1cy0uNzUtLjMtLjc1LS43NXYtM2MwLS40NS4zLS43NS43NS0uNzVzLjc1LjMuNzUuNzV2M1pcXFwiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPVxcXCJ3YXJuaW5nLWZpbGxfc3ZnX19hXFxcIj48cGF0aCBmaWxsPVxcXCIjZmZmXFxcIiBkPVxcXCJNMCAwaDE3Ljk5NXYxOEgwelxcXCIgdHJhbnNmb3JtPVxcXCJ0cmFuc2xhdGUoMCAuODY3KVxcXCIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyMyAyMVxcXCI+PHBhdGggZD1cXFwiTTExLjg4NyAxNWExIDEgMCAxIDAgMCAyIDEgMSAwIDAgMCAwLTJabTEwLjY3IDEuNDctOC4wNS0xNGEzIDMgMCAwIDAtNS4yNCAwbC04IDE0QTMgMyAwIDAgMCAzLjgyNyAyMWgxNi4xMmEzIDMgMCAwIDAgMi42MS00LjUzWm0tMS43MyAyYTEgMSAwIDAgMS0uODguNTFIMy44MjdhMSAxIDAgMCAxLS44OC0uNTEgMSAxIDAgMCAxIDAtMWw4LTE0YTEgMSAwIDAgMSAxLjc4IDBsOC4wNSAxNGExIDEgMCAwIDEgLjA1IDEuMDJ2LS4wMlpNMTEuODg3IDdhMSAxIDAgMCAwLTEgMXY0YTEgMSAwIDAgMCAyIDBWOGExIDEgMCAwIDAtMS0xWlxcXCIgZmlsbD1cXFwiI0QxMDAxRVxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAzMiAzMlxcXCI+PGNpcmNsZSBjeD1cXFwiMTZcXFwiIGN5PVxcXCIxNlxcXCIgcj1cXFwiMTZcXFwiIGZpbGw9XFxcIiNGMUY3RjlcXFwiLz48cGF0aCBkPVxcXCJNMjMuOTE3IDE0LjI3di4wMTJjMCAuNDYyIDAgMi45NzctLjAzIDMuMzgxdi4wMjhhNy42IDcuNiAwIDAgMS0uMzc0IDIuNDQzdi4wMDFhMS41MzUgMS41MzUgMCAwIDEtLjM3NS42MTUgMS44MjcgMS44MjcgMCAwIDEtLjk1NS40OTFjLTIuNzAyLjIwOC00Ljk5LjI0NS03LjYwMy4yMDhoLS4wMTJhMzMuNTYyIDMzLjU2MiAwIDAgMS00LjgxNy0uMjQ0IDEuODExIDEuODExIDAgMCAxLS45MjctLjQ4NSAyLjAyMiAyLjAyMiAwIDAgMS0uNDUtLjg2OGwtLjAwMS0uMDA2YTYuODI4IDYuODI4IDAgMCAxLS4yMTUtMS40M3YtLjAwOWEzNS44ODcgMzUuODg3IDAgMCAxIC4wMDMtNC44NTdjLjAzNy0uNDQyLjA3NC0uODg4LjE3NS0xLjI5OC4xMDQtLjQyNC4yNy0uNzc1LjU0LTEuMDI1bC4wMDMtLjAwM2MuMjUzLS4yNC41Ny0uNDAxLjkxMS0uNDY2YTU4LjUyNyA1OC41MjcgMCAwIDEgNi4yMDQtLjIyM2guMDEyYTU4LjQyNiA1OC40MjYgMCAwIDEgNi4yMjYuMjNjLjQxLjA3OC43ODIuMjkgMS4wNTYuNjA1LjQ0Ny45LjY2NCAxLjg5Ni42MjkgMi45Wm0tOS45NDUgMy44Njd2LjU2bC40OTItLjI2N2E5OC45NyA5OC45NyAwIDAgMSAyLjI2NC0xLjE3NWwuMDYzLS4wMzJhNzAuNDUgNzAuNDUgMCAwIDAgMi4xMTYtMS4xMDRsLjU0LS4zLS41NDctLjI4Ny00LjQ0LTIuMzMyLS40ODgtLjI1N3Y1LjE5NFpcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZT1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIi8+PC9zdmc+XCI7IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9ZGM3MDVmNDgmbGFuZz1jc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1hsc0xpc3RFcnJvci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0zNzYxNzcwMiZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vc3Bpbm5lckxvYWRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wMDg5MmRmNiZsYW5nPWNzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGFibGVMYXlvdXQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NWQ4NGExZDgmc2NvcGVkPXRydWUmbGFuZz1jc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0xpc3RFbGVtZW50LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTlhNjA4NDMyJnNjb3BlZD10cnVlJmxhbmc9Y3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9YbHNMaXN0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTVmNTAwOGI0JnNjb3BlZD10cnVlJmxhbmc9Y3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWJsZUxpc3QudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MDViMjYzNGImbGFuZz1jc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1VzZXJMaXN0aW5nLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTA2MTFkOWYwJnNjb3BlZD10cnVlJmxhbmc9Y3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FkbWluSGVhZGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0xJmlkPTZmZTU5MDU1Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9CdWxrcHVibGlzaFdpdGhYbHMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MjQ0M2RmNTMmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Vycm9yTWVzc2FnZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1iNzdiMTFkNCZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSG92ZXJUZXh0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTU1MzhkN2UyJmxhbmc9c2Nzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Mb2FkZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9OGUzNmY4ZWMmbGFuZz1zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BvcHVwTW9kYWwudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NWEyYmRhNTgmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NoaW1tZXJMb2FkaW5nLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTc0MzU2MTcyJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FcnJvckxpc3RzLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPWY2N2M3ZTcyJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Qcm9ncmVzc0xvYWRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01YzMyYmYwYyZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU3RpY2t5RXJyb3JzLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTFlMzhkMTBlJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9VcGxvYWRlZEVycm9ycy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD02ZjE3ZWM0NSZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlJbmRleC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wYTU3MWZkNiZsYW5nPXNjc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQ3JlYXRlTW9kYWwudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9YzdjYTI4YjgmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Vycm9ySXRlbS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wNjNjYmQ4NiZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdGllc0VsZW1lbnRzLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTVhNDBmY2Y0Jmxhbmc9c2Nzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTY2MWU2ZjhlJnNjb3BlZD10cnVlJmxhbmc9c2Nzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD00ZjIyNWQzZSZsYW5nPXNjc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSW1wb3J0TGlzdC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD00MGQ3ODcwYSZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vT3JnYW5pc2F0aW9uRGF0YS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD00YWRhNWYzNiZsYW5nPXNjc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzZXRQYWdlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTM2Yjc2NGJiJmxhbmc9c2Nzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0xJmlkPTE3ZTYzMmE2Jmxhbmc9c2Nzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTEmaWQ9NTIyNjYyMDAmbGFuZz1zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NpZ25Jbi52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1hMTg2MWYzZSZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vV2ViSGVhZGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTEwYzllMGIyJnNjb3BlZD10cnVlJmxhbmc9c2Nzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXR5RG93bmxvYWQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTMyNmFkNzZlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BY3Rpdml0eURvd25sb2FkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FjdGl2aXR5RG93bmxvYWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWN0aXZpdHlEb3dubG9hZC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMzI2YWQ3NmVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCczMjZhZDc2ZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzMyNmFkNzZlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BY3Rpdml0eURvd25sb2FkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zMjZhZDc2ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzMyNmFkNzZlJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BZG1pbkhlYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmZlNTkwNTUmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FkbWluSGVhZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FkbWluSGVhZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3QvdGhlbWVzL2RlZmF1bHQuY3NzP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1jc3NcIlxuaW1wb3J0IFwiLi9BZG1pbkhlYWRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MSZpZD02ZmU1OTA1NSZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtNmZlNTkwNTVcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0FkbWluSGVhZGVyLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI2ZmU1OTA1NVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzZmZTU5MDU1JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNmZlNTkwNTUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FkbWluSGVhZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02ZmU1OTA1NSZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzZmZTU5MDU1JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9CcmVhZENydW1iLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02NWQwZTNkYSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQnJlYWRDcnVtYi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQnJlYWRDcnVtYi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnJlYWRDcnVtYi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNjVkMGUzZGFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc2NWQwZTNkYScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzY1ZDBlM2RhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9CcmVhZENydW1iLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02NWQwZTNkYSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzY1ZDBlM2RhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9CdWxrUHVibGlzaGluZ0Vycm9yUG9wdXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE2MmNiZjQwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9CdWxrUHVibGlzaGluZ0Vycm9yUG9wdXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuZXhwb3J0ICogZnJvbSBcIi4vQnVsa1B1Ymxpc2hpbmdFcnJvclBvcHVwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1bGtQdWJsaXNoaW5nRXJyb3JQb3B1cC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMTYyY2JmNDBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcxNjJjYmY0MCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzE2MmNiZjQwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9CdWxrUHVibGlzaGluZ0Vycm9yUG9wdXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE2MmNiZjQwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMTYyY2JmNDAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0J1bGtwdWJsaXNoV2l0aFhscy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjQ0M2RmNTMmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0J1bGtwdWJsaXNoV2l0aFhscy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9CdWxrcHVibGlzaFdpdGhYbHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL0J1bGtwdWJsaXNoV2l0aFhscy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0yNDQzZGY1MyZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtMjQ0M2RmNTNcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1bGtwdWJsaXNoV2l0aFhscy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMjQ0M2RmNTNcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyNDQzZGY1MycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzI0NDNkZjUzJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9CdWxrcHVibGlzaFdpdGhYbHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI0NDNkZjUzJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjQ0M2RmNTMnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0J1dHRvbkNvbXBvbmVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OWZmNWE4ZjgmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0J1dHRvbkNvbXBvbmVudC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQnV0dG9uQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjlmZjVhOGY4XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnOWZmNWE4ZjgnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc5ZmY1YThmOCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQnV0dG9uQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD05ZmY1YThmOCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzlmZjVhOGY4JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9EYXRlUmFuZ2VXaWRnZXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM0NzdjNmVjJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9EYXRlUmFuZ2VXaWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuZXhwb3J0ICogZnJvbSBcIi4vRGF0ZVJhbmdlV2lkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0RhdGVSYW5nZVdpZGdldC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMzQ3N2M2ZWNcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCczNDc3YzZlYycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzM0NzdjNmVjJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9EYXRlUmFuZ2VXaWRnZXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM0NzdjNmVjJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMzQ3N2M2ZWMnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Rlc2NyaXB0aW9uRm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmViZjQxZjkmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0Rlc2NyaXB0aW9uRm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRGVzY3JpcHRpb25Gb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9EZXNjcmlwdGlvbkZvcm0udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjZlYmY0MWY5XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNmViZjQxZjknLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc2ZWJmNDFmOScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGVzY3JpcHRpb25Gb3JtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02ZWJmNDFmOSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzZlYmY0MWY5JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9FcnJvck1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWI3N2IxMWQ0JnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9FcnJvck1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRXJyb3JNZXNzYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9FcnJvck1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9Yjc3YjExZDQmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LWI3N2IxMWQ0XCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9FcnJvck1lc3NhZ2UudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImI3N2IxMWQ0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnYjc3YjExZDQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdiNzdiMTFkNCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRXJyb3JNZXNzYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iNzdiMTFkNCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2I3N2IxMWQ0JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9FcnJvclBvcFVwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZjFkOGIxYiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRXJyb3JQb3BVcC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9FcnJvclBvcFVwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0Vycm9yUG9wVXAudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjBmMWQ4YjFiXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMGYxZDhiMWInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwZjFkOGIxYicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRXJyb3JQb3BVcC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGYxZDhiMWImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwZjFkOGIxYicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vSG92ZXJUZXh0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NTM4ZDdlMiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vSG92ZXJUZXh0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Ib3ZlclRleHQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9Ib3ZlclRleHQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NTUzOGQ3ZTImbGFuZz1zY3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNTUzOGQ3ZTJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1NTM4ZDdlMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzU1MzhkN2UyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Ib3ZlclRleHQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU1MzhkN2UyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNTUzOGQ3ZTInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0xvYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OGUzNmY4ZWMmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0xvYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vTG9hZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vTG9hZGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPThlMzZmOGVjJmxhbmc9c2Nzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Mb2FkZXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjhlMzZmOGVjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnOGUzNmY4ZWMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc4ZTM2ZjhlYycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vTG9hZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04ZTM2ZjhlYyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzhlMzZmOGVjJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWRjNzA1ZjQ4JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuZXhwb3J0ICogZnJvbSBcIi4vTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcblxuaW1wb3J0IFwiLi9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9ZGM3MDVmNDgmbGFuZz1jc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJkYzcwNWY0OFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2RjNzA1ZjQ4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZGM3MDVmNDgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZGM3MDVmNDgmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdkYzcwNWY0OCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vTmF2RHJvcGRvd24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI2MTlhN2VkJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9OYXZEcm9wZG93bi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vTmF2RHJvcGRvd24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL05hdkRyb3Bkb3duLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyNjE5YTdlZFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzI2MTlhN2VkJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjYxOWE3ZWQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL05hdkRyb3Bkb3duLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNjE5YTdlZCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzI2MTlhN2VkJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Qb3B1cE1vZGFsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01YTJiZGE1OCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUG9wdXBNb2RhbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUG9wdXBNb2RhbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL1BvcHVwTW9kYWwudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NWEyYmRhNTgmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LTVhMmJkYTU4XCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1YTJiZGE1OFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzVhMmJkYTU4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNWEyYmRhNTgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1BvcHVwTW9kYWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVhMmJkYTU4JnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNWEyYmRhNTgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JhZGlhbFByb2dyZXNzQmFyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xNTczOGU2MCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmFkaWFsUHJvZ3Jlc3NCYXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JhZGlhbFByb2dyZXNzQmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9SYWRpYWxQcm9ncmVzc0Jhci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMTU3MzhlNjBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcxNTczOGU2MCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzE1NzM4ZTYwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SYWRpYWxQcm9ncmVzc0Jhci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTU3MzhlNjAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcxNTczOGU2MCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vU2hpbW1lckxvYWRpbmcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc0MzU2MTcyJnNjb3BlZD10cnVlXCJcbmNvbnN0IHNjcmlwdCA9IHt9XG5cbmltcG9ydCBcIi4vU2hpbW1lckxvYWRpbmcudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NzQzNTYxNzImbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LTc0MzU2MTcyXCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9TaGltbWVyTG9hZGluZy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNzQzNTYxNzJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc3NDM1NjE3MicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzc0MzU2MTcyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9TaGltbWVyTG9hZGluZy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzQzNTYxNzImc2NvcGVkPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNzQzNTYxNzInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RhYmxlTG9hZGVyQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZDUyMDU5YSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVGFibGVMb2FkZXJDb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVGFibGVMb2FkZXJDb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvVGFibGVMb2FkZXJDb21wb25lbnQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjdkNTIwNTlhXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnN2Q1MjA1OWEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3ZDUyMDU5YScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVGFibGVMb2FkZXJDb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdkNTIwNTlhJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignN2Q1MjA1OWEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RhYmxlUGFnaW5hdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OGM5N2E1YmUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RhYmxlUGFnaW5hdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVGFibGVQYWdpbmF0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjhjOTdhNWJlXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnOGM5N2E1YmUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc4Yzk3YTViZScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVGFibGVQYWdpbmF0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04Yzk3YTViZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzhjOTdhNWJlJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Ub2FzdE1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQwMWQ4Y2QyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Ub2FzdE1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVG9hc3RNZXNzYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZDAxZDhjZDJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdkMDFkOGNkMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2QwMWQ4Y2QyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Ub2FzdE1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQwMWQ4Y2QyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZDAxZDhjZDInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1hsc0xpc3RFcnJvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Mzc2MTc3MDImc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1hsc0xpc3RFcnJvci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9YbHNMaXN0RXJyb3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL1hsc0xpc3RFcnJvci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0zNzYxNzcwMiZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi0zNzYxNzcwMlwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvWGxzTGlzdEVycm9yLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzNzYxNzcwMlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzM3NjE3NzAyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMzc2MTc3MDInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1hsc0xpc3RFcnJvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Mzc2MTc3MDImc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCczNzYxNzcwMicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vWGxzTG9hZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZWE0YjA2YSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vWGxzTG9hZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1hsc0xvYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNMb2FkZXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjdlYTRiMDZhXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnN2VhNGIwNmEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3ZWE0YjA2YScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vWGxzTG9hZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZWE0YjA2YSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzdlYTRiMDZhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9YbHNVcGxvYWRJbmRpY2F0b3IudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAyYWMyYmY0JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9YbHNVcGxvYWRJbmRpY2F0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vWGxzVXBsb2FkSW5kaWNhdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc1VwbG9hZEluZGljYXRvci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMDJhYzJiZjRcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwMmFjMmJmNCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzAyYWMyYmY0JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9YbHNVcGxvYWRJbmRpY2F0b3IudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAyYWMyYmY0JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMDJhYzJiZjQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0RlbGV0ZUJ1dHRvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YTkzZDg0N2MmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0RlbGV0ZUJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9EZWxldGVCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9EZWxldGVCdXR0b24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImE5M2Q4NDdjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnYTkzZDg0N2MnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdhOTNkODQ3YycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGVsZXRlQnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hOTNkODQ3YyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2E5M2Q4NDdjJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9MaW5rLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iZmU2NTEwMiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTGluay52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vTGluay52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJiZmU2NTEwMlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2JmZTY1MTAyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnYmZlNjUxMDInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0xpbmsudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWJmZTY1MTAyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignYmZlNjUxMDInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1B1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWVjYzUwODI4JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9QdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1B1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9QdWJsaXNoQnV0dG9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJlY2M1MDgyOFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2VjYzUwODI4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZWNjNTA4MjgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1B1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWVjYzUwODI4JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZWNjNTA4MjgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1VuUHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDU5YzMxOTMmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1VuUHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9VblB1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9VblB1Ymxpc2hCdXR0b24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjQ1OWMzMTkzXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNDU5YzMxOTMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0NTljMzE5MycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVW5QdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NTljMzE5MyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzQ1OWMzMTkzJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9EZWxldGVBY3Rpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU2YmNlOGNhJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9EZWxldGVBY3Rpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRGVsZXRlQWN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0RlbGV0ZUFjdGlvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNTZiY2U4Y2FcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1NmJjZThjYScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzU2YmNlOGNhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9EZWxldGVBY3Rpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU2YmNlOGNhJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNTZiY2U4Y2EnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Vycm9yTGlzdHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWY2N2M3ZTcyJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9FcnJvckxpc3RzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Vycm9yTGlzdHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL0Vycm9yTGlzdHMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9ZjY3YzdlNzImbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LWY2N2M3ZTcyXCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9FcnJvckxpc3RzLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJmNjdjN2U3MlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2Y2N2M3ZTcyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZjY3YzdlNzInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Vycm9yTGlzdHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWY2N2M3ZTcyJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZjY3YzdlNzInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0hhdmVOb3RBZGRlZFlldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzkyNWVmNDkmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0hhdmVOb3RBZGRlZFlldC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vSGF2ZU5vdEFkZGVkWWV0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9IYXZlTm90QWRkZWRZZXQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjM5MjVlZjQ5XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMzkyNWVmNDknLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCczOTI1ZWY0OScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vSGF2ZU5vdEFkZGVkWWV0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zOTI1ZWY0OSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzM5MjVlZjQ5JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Pcmdhbml6YXRpb25QdWJsaXNoVW5wdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yZmI4ZjQwNiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Pcmdhbml6YXRpb25QdWJsaXNoVW5wdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL09yZ2FuaXphdGlvblB1Ymxpc2hVbnB1Ymxpc2hCdXR0b24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjJmYjhmNDA2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMmZiOGY0MDYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcyZmI4ZjQwNicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmZiOGY0MDYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcyZmI4ZjQwNicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUGFnZVRpdGxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xYjU0ZTA5ZiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUGFnZVRpdGxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9QYWdlVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMWI1NGUwOWZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcxYjU0ZTA5ZicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzFiNTRlMDlmJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9QYWdlVGl0bGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFiNTRlMDlmJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMWI1NGUwOWYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1Byb2dyZXNzTG9hZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01YzMyYmYwYyZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUHJvZ3Jlc3NMb2FkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUHJvZ3Jlc3NMb2FkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL1Byb2dyZXNzTG9hZGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTVjMzJiZjBjJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi01YzMyYmYwY1wiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjVjMzJiZjBjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNWMzMmJmMGMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1YzMyYmYwYycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUHJvZ3Jlc3NMb2FkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVjMzJiZjBjJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNWMzMmJmMGMnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1N0aWNreUVycm9ycy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWUzOGQxMGUmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1N0aWNreUVycm9ycy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9TdGlja3lFcnJvcnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL1N0aWNreUVycm9ycy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0xZTM4ZDEwZSZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtMWUzOGQxMGVcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1N0aWNreUVycm9ycy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMWUzOGQxMGVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcxZTM4ZDEwZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzFlMzhkMTBlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9TdGlja3lFcnJvcnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFlMzhkMTBlJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMWUzOGQxMGUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1VwbG9hZGVkRXJyb3JzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02ZjE3ZWM0NSZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVXBsb2FkZWRFcnJvcnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVXBsb2FkZWRFcnJvcnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL1VwbG9hZGVkRXJyb3JzLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTZmMTdlYzQ1Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi02ZjE3ZWM0NVwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvVXBsb2FkZWRFcnJvcnMudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjZmMTdlYzQ1XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNmYxN2VjNDUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc2ZjE3ZWM0NScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVXBsb2FkZWRFcnJvcnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZmMTdlYzQ1JnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNmYxN2VjNDUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL3NwaW5uZXJMb2FkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAwODkyZGY2XCJcbmNvbnN0IHNjcmlwdCA9IHt9XG5cbmltcG9ydCBcIi4vc3Bpbm5lckxvYWRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wMDg5MmRmNiZsYW5nPWNzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zcGlubmVyTG9hZGVyLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwMDg5MmRmNlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzAwODkyZGY2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMDA4OTJkZjYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL3NwaW5uZXJMb2FkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAwODkyZGY2XCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzAwODkyZGY2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9FbGVtZW50U3RhdHVzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xZWI4ZGViMCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRWxlbWVudFN0YXR1cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9FbGVtZW50U3RhdHVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3N0YXR1cy9FbGVtZW50U3RhdHVzLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIxZWI4ZGViMFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzFlYjhkZWIwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMWViOGRlYjAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0VsZW1lbnRTdGF0dXMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFlYjhkZWIwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMWViOGRlYjAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1ByZXZpb3VzbHlQdWJsaXNoZWQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFmMmY5YWI4JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1ByZXZpb3VzbHlQdWJsaXNoZWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3RhdHVzL1ByZXZpb3VzbHlQdWJsaXNoZWQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjFmMmY5YWI4XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMWYyZjlhYjgnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxZjJmOWFiOCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUHJldmlvdXNseVB1Ymxpc2hlZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWYyZjlhYjgmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcxZjJmOWFiOCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQWN0aXZpdHlEZWZhdWx0VmFsdWUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIzZWUzNzVjJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BY3Rpdml0eURlZmF1bHRWYWx1ZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BY3Rpdml0eURlZmF1bHRWYWx1ZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlEZWZhdWx0VmFsdWUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjIzZWUzNzVjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMjNlZTM3NWMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcyM2VlMzc1YycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWN0aXZpdHlEZWZhdWx0VmFsdWUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIzZWUzNzVjJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjNlZTM3NWMnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXR5RGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZTQwMmIwNiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWN0aXZpdHlEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FjdGl2aXR5RGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlEZXRhaWwudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjRlNDAyYjA2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNGU0MDJiMDYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0ZTQwMmIwNicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWN0aXZpdHlEZXRhaWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRlNDAyYjA2JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNGU0MDJiMDYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXR5SW5kZXgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBhNTcxZmQ2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BY3Rpdml0eUluZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BY3Rpdml0eUluZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vQWN0aXZpdHlJbmRleC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wYTU3MWZkNiZsYW5nPXNjc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5SW5kZXgudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjBhNTcxZmQ2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMGE1NzFmZDYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwYTU3MWZkNicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWN0aXZpdHlJbmRleC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGE1NzFmZDYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwYTU3MWZkNicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQ3JlYXRlTW9kYWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWM3Y2EyOGI4JnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9DcmVhdGVNb2RhbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQ3JlYXRlTW9kYWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9DcmVhdGVNb2RhbC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1jN2NhMjhiOCZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtYzdjYTI4YjhcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9DcmVhdGVNb2RhbC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiYzdjYTI4YjhcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdjN2NhMjhiOCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2M3Y2EyOGI4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9DcmVhdGVNb2RhbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YzdjYTI4Yjgmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdjN2NhMjhiOCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRXJyb3JJdGVtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wNjNjYmQ4NiZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRXJyb3JJdGVtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Vycm9ySXRlbS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vRXJyb3JJdGVtLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTA2M2NiZDg2Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi0wNjNjYmQ4NlwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9FcnJvckl0ZW0udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjA2M2NiZDg2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMDYzY2JkODYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwNjNjYmQ4NicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRXJyb3JJdGVtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wNjNjYmQ4NiZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzA2M2NiZDg2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9QdWJsaXNoU2VsZWN0ZWQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNmYjFlMWNjJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9QdWJsaXNoU2VsZWN0ZWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUHVibGlzaFNlbGVjdGVkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvUHVibGlzaFNlbGVjdGVkLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzZmIxZTFjY1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzNmYjFlMWNjJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnM2ZiMWUxY2MnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1B1Ymxpc2hTZWxlY3RlZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2ZiMWUxY2MmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCczZmIxZTFjYycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVmcmVzaFRvYXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00MDExODk3YSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVmcmVzaFRvYXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JlZnJlc2hUb2FzdC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL1JlZnJlc2hUb2FzdC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNDAxMTg5N2FcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc0MDExODk3YScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzQwMTE4OTdhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZWZyZXNoVG9hc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQwMTE4OTdhJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNDAxMTg5N2EnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1ZhbGlkYXRpb25FcnJvcnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI1NzVkM2IyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9WYWxpZGF0aW9uRXJyb3JzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1ZhbGlkYXRpb25FcnJvcnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9WYWxpZGF0aW9uRXJyb3JzLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyNTc1ZDNiMlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzI1NzVkM2IyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjU3NWQzYjInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1ZhbGlkYXRpb25FcnJvcnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI1NzVkM2IyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjU3NWQzYjInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXR5RGF0ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDEzOGVhODgmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FjdGl2aXR5RGF0ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQWN0aXZpdHlEYXRlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvQWN0aXZpdHlEYXRlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwMTM4ZWE4OFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzAxMzhlYTg4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMDEzOGVhODgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FjdGl2aXR5RGF0ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDEzOGVhODgmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwMTM4ZWE4OCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQ29uZGl0aW9ucy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YmFmYjI1YmEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0NvbmRpdGlvbnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0NvbmRpdGlvbnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Db25kaXRpb25zLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJiYWZiMjViYVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2JhZmIyNWJhJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnYmFmYjI1YmEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0NvbmRpdGlvbnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWJhZmIyNWJhJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignYmFmYjI1YmEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0NvbnRhY3RJbmZvLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yOWE3ZDMxMyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQ29udGFjdEluZm8udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0NvbnRhY3RJbmZvLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvQ29udGFjdEluZm8udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjI5YTdkMzEzXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMjlhN2QzMTMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcyOWE3ZDMxMycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQ29udGFjdEluZm8udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI5YTdkMzEzJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjlhN2QzMTMnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jN2Q3OTliZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvRGVzY3JpcHRpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImM3ZDc5OWJlXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnYzdkNzk5YmUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdjN2Q3OTliZScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWM3ZDc5OWJlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignYzdkNzk5YmUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0h1bWFuaXRhcmlhblNjb3BlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jZGZiNzQ2OCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vSHVtYW5pdGFyaWFuU2NvcGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vSHVtYW5pdGFyaWFuU2NvcGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0h1bWFuaXRhcmlhblNjb3BlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJjZGZiNzQ2OFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2NkZmI3NDY4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnY2RmYjc0NjgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0h1bWFuaXRhcmlhblNjb3BlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jZGZiNzQ2OCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2NkZmI3NDY4JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9JYXRpSWRlbnRpZmllci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTI2MWFmZmUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0lhdGlJZGVudGlmaWVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9JYXRpSWRlbnRpZmllci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0lhdGlJZGVudGlmaWVyLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1MjYxYWZmZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzUyNjFhZmZlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNTI2MWFmZmUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0lhdGlJZGVudGlmaWVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01MjYxYWZmZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzUyNjFhZmZlJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9MZWdhY3lEYXRhLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jYjNlNDgwNCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTGVnYWN5RGF0YS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vTGVnYWN5RGF0YS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0xlZ2FjeURhdGEudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImNiM2U0ODA0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnY2IzZTQ4MDQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdjYjNlNDgwNCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vTGVnYWN5RGF0YS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Y2IzZTQ4MDQmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdjYjNlNDgwNCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vTG9jYXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTEyYzJlODYwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Mb2NhdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vTG9jYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Mb2NhdGlvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMTJjMmU4NjBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcxMmMyZTg2MCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzEyYzJlODYwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Mb2NhdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTJjMmU4NjAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcxMmMyZTg2MCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vT3RoZXJJZGVudGlmaWVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03OGI2NDQwNCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vT3RoZXJJZGVudGlmaWVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9PdGhlcklkZW50aWZpZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9PdGhlcklkZW50aWZpZXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjc4YjY0NDA0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNzhiNjQ0MDQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3OGI2NDQwNCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vT3RoZXJJZGVudGlmaWVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03OGI2NDQwNCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzc4YjY0NDA0JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9QYXJ0aWNpcGF0aW5nT3JnLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZDRkYWI3NCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUGFydGljaXBhdGluZ09yZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUGFydGljaXBhdGluZ09yZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BhcnRpY2lwYXRpbmdPcmcudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjdkNGRhYjc0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnN2Q0ZGFiNzQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3ZDRkYWI3NCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUGFydGljaXBhdGluZ09yZy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2Q0ZGFiNzQmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc3ZDRkYWI3NCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUGxhbm5lZERpc2J1cnNlbWVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDE3MmMyYWMmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1BsYW5uZWREaXNidXJzZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUGxhbm5lZERpc2J1cnNlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUGxhbm5lZERpc2J1cnNlbWVudC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMDE3MmMyYWNcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwMTcyYzJhYycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzAxNzJjMmFjJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9QbGFubmVkRGlzYnVyc2VtZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wMTcyYzJhYyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzAxNzJjMmFjJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Qb2xpY3lNYXJrZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWJkOTg4ODkyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Qb2xpY3lNYXJrZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1BvbGljeU1hcmtlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BvbGljeU1hcmtlci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiYmQ5ODg4OTJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdiZDk4ODg5MicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2JkOTg4ODkyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Qb2xpY3lNYXJrZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWJkOTg4ODkyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignYmQ5ODg4OTInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlY2lwaWVudENvdW50cnkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdmMThiZTMwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVjaXBpZW50Q291bnRyeS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiN2YxOGJlMzBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc3ZjE4YmUzMCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzdmMThiZTMwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZjE4YmUzMCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzdmMThiZTMwJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZWNpcGllbnRSZWdpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWViZDY2MmRjJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZWNpcGllbnRSZWdpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVjaXBpZW50UmVnaW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZWNpcGllbnRSZWdpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImViZDY2MmRjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZWJkNjYyZGMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdlYmQ2NjJkYycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVjaXBpZW50UmVnaW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lYmQ2NjJkYyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2ViZDY2MmRjJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZWxhdGVkQWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJjYTA0YzAyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZWxhdGVkQWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JlbGF0ZWRBY3Rpdml0eS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlbGF0ZWRBY3Rpdml0eS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMmNhMDRjMDJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyY2EwNGMwMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzJjYTA0YzAyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZWxhdGVkQWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJjYTA0YzAyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMmNhMDRjMDInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlcG9ydGluZ09yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDM4YjBhZTYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1JlcG9ydGluZ09yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZXBvcnRpbmdPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlcG9ydGluZ09yZ2FuaXphdGlvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNDM4YjBhZTZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc0MzhiMGFlNicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzQzOGIwYWU2JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZXBvcnRpbmdPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQzOGIwYWU2JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNDM4YjBhZTYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1Jlc3VsdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Mjc3Y2I0ZjAmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1Jlc3VsdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVzdWx0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVzdWx0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyNzdjYjRmMFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzI3N2NiNGYwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjc3Y2I0ZjAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1Jlc3VsdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Mjc3Y2I0ZjAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcyNzdjYjRmMCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vU2VjdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zMjk0Njg1MSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vU2VjdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9TZWN0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9TZWN0b3IudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjMyOTQ2ODUxXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMzI5NDY4NTEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCczMjk0Njg1MScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vU2VjdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zMjk0Njg1MSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzMyOTQ2ODUxJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UYWcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAxMTk2NjgyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UYWcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RhZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1RhZy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMDExOTY2ODJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwMTE5NjY4MicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzAxMTk2NjgyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9UYWcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAxMTk2NjgyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMDExOTY2ODInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RpdGxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NzRhNzEzZCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RpdGxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvVGl0bGUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjQ3NGE3MTNkXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNDc0YTcxM2QnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0NzRhNzEzZCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVGl0bGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ3NGE3MTNkJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNDc0YTcxM2QnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RyYW5zYWN0aW9ucy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmI4YWZmMDAmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RyYW5zYWN0aW9ucy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVHJhbnNhY3Rpb25zLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvVHJhbnNhY3Rpb25zLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyYjhhZmYwMFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzJiOGFmZjAwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMmI4YWZmMDAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RyYW5zYWN0aW9ucy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmI4YWZmMDAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcyYjhhZmYwMCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vSW5kaWNhdG9yRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01ZmYxNzc3MiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vSW5kaWNhdG9yRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9JbmRpY2F0b3JEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL0luZGljYXRvckRldGFpbC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNWZmMTc3NzJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1ZmYxNzc3MicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzVmZjE3NzcyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9JbmRpY2F0b3JEZXRhaWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVmZjE3NzcyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNWZmMTc3NzInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0luZGljYXRvckxpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZmNzhjZjdmJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9JbmRpY2F0b3JMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9JbmRpY2F0b3JMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9JbmRpY2F0b3JMaXN0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI2Zjc4Y2Y3ZlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzZmNzhjZjdmJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNmY3OGNmN2YnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0luZGljYXRvckxpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZmNzhjZjdmJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNmY3OGNmN2YnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FnZ3JlZ2F0aW9uU3RhdHVzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kZDc2M2U0YyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWdncmVnYXRpb25TdGF0dXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FnZ3JlZ2F0aW9uU3RhdHVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9BZ2dyZWdhdGlvblN0YXR1cy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZGQ3NjNlNGNcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdkZDc2M2U0YycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2RkNzYzZTRjJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BZ2dyZWdhdGlvblN0YXR1cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZGQ3NjNlNGMmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdkZDc2M2U0YycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQmFzZWxpbmUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZhYTZkMDYyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9CYXNlbGluZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQmFzZWxpbmUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0Jhc2VsaW5lLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI2YWE2ZDA2MlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzZhYTZkMDYyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNmFhNmQwNjInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Jhc2VsaW5lLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02YWE2ZDA2MiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzZhYTZkMDYyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Nzc1YjYxZTImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvRGVzY3JpcHRpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjc3NWI2MWUyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNzc1YjYxZTInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3NzViNjFlMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc3NWI2MWUyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNzc1YjYxZTInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2NiMjYwM2YmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9Eb2N1bWVudExpbmsudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjNjYjI2MDNmXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnM2NiMjYwM2YnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCczY2IyNjAzZicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zY2IyNjAzZiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzNjYjI2MDNmJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9JbmRpY2F0b3JBc2NlbmRpbmcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWY3ZWQ2YWRhJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9JbmRpY2F0b3JBc2NlbmRpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0luZGljYXRvckFzY2VuZGluZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvSW5kaWNhdG9yQXNjZW5kaW5nLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJmN2VkNmFkYVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2Y3ZWQ2YWRhJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZjdlZDZhZGEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0luZGljYXRvckFzY2VuZGluZy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZjdlZDZhZGEmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdmN2VkNmFkYScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vTWVhc3VyZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2E2NGQ5NDQmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL01lYXN1cmUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL01lYXN1cmUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL01lYXN1cmUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjdhNjRkOTQ0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnN2E2NGQ5NDQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3YTY0ZDk0NCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vTWVhc3VyZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2E2NGQ5NDQmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc3YTY0ZDk0NCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUGVyaW9kLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01ODE2ODQ2YSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUGVyaW9kLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9QZXJpb2QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1BlcmlvZC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNTgxNjg0NmFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1ODE2ODQ2YScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzU4MTY4NDZhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9QZXJpb2QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU4MTY4NDZhJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNTgxNjg0NmEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlZmVyZW5jZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDg1YTRkOWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1JlZmVyZW5jZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVmZXJlbmNlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9SZWZlcmVuY2UudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjQ4NWE0ZDllXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNDg1YTRkOWUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0ODVhNGQ5ZScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVmZXJlbmNlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ODVhNGQ5ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzQ4NWE0ZDllJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UaXRsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OGY2ZmY2ODQmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RpdGxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9UaXRsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvVGl0bGUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjhmNmZmNjg0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnOGY2ZmY2ODQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc4ZjZmZjY4NCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVGl0bGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPThmNmZmNjg0JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignOGY2ZmY2ODQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWE0MGZjZjQmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BY3Rpdml0aWVzRWxlbWVudHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01YTQwZmNmNCZsYW5nPXNjc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXRpZXNFbGVtZW50cy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNWE0MGZjZjRcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1YTQwZmNmNCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzVhNDBmY2Y0JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BY3Rpdml0aWVzRWxlbWVudHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVhNDBmY2Y0JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNWE0MGZjZjQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXR5RWxlbWVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2Y1ZDYwYTYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FjdGl2aXR5RWxlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BY3Rpdml0eUVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXR5RWxlbWVudC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiN2Y1ZDYwYTZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc3ZjVkNjBhNicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzdmNWQ2MGE2JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BY3Rpdml0eUVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdmNWQ2MGE2JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignN2Y1ZDYwYTYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FkZEFjdGl2aXR5QnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wNTBlMTczYyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWRkQWN0aXZpdHlCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FkZEFjdGl2aXR5QnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWRkQWN0aXZpdHlCdXR0b24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjA1MGUxNzNjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMDUwZTE3M2MnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwNTBlMTczYycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWRkQWN0aXZpdHlCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA1MGUxNzNjJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMDUwZTE3M2MnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTY2MWU2ZjhlJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD02NjFlNmY4ZSZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtNjYxZTZmOGVcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI2NjFlNmY4ZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzY2MWU2ZjhlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNjYxZTZmOGUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTY2MWU2ZjhlJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNjYxZTZmOGUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0VsZW1lbnRzTm90ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWJjMDQxZjkmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0VsZW1lbnRzTm90ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRWxlbWVudHNOb3RlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRWxlbWVudHNOb3RlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1YmMwNDFmOVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzViYzA0MWY5JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNWJjMDQxZjknLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0VsZW1lbnRzTm90ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWJjMDQxZjkmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc1YmMwNDFmOScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRW1wdHlBY3Rpdml0eS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OWFlZjk2ODgmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0VtcHR5QWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0VtcHR5QWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9FbXB0eUFjdGl2aXR5LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI5YWVmOTY4OFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzlhZWY5Njg4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnOWFlZjk2ODgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0VtcHR5QWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTlhZWY5Njg4JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignOWFlZjk2ODgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1BhZ2VUaXRsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzU4OWU4NmUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1BhZ2VUaXRsZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9QYWdlVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL1BhZ2VUaXRsZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNzU4OWU4NmVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc3NTg5ZTg2ZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzc1ODllODZlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9QYWdlVGl0bGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc1ODllODZlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNzU4OWU4NmUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1NpZGViYXJIZWxwQmxvY2sudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWZlZjI2YTgwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9TaWRlYmFySGVscEJsb2NrLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9TaWRlYmFySGVscEJsb2NrLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvU2lkZWJhckhlbHBCbG9jay52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZmVmMjZhODBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdmZWYyNmE4MCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2ZlZjI2YTgwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9TaWRlYmFySGVscEJsb2NrLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mZWYyNmE4MCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2ZlZjI2YTgwJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UYWJsZUxheW91dC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWQ4NGExZDgmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RhYmxlTGF5b3V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RhYmxlTGF5b3V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9UYWJsZUxheW91dC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01ZDg0YTFkOCZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi01ZDg0YTFkOFwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL1RhYmxlTGF5b3V0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1ZDg0YTFkOFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzVkODRhMWQ4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNWQ4NGExZDgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RhYmxlTGF5b3V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01ZDg0YTFkOCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzVkODRhMWQ4JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9QZXJpb2RzRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03MmUzYjU5OSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUGVyaW9kc0RldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUGVyaW9kc0RldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvUGVyaW9kc0RldGFpbC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNzJlM2I1OTlcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc3MmUzYjU5OScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzcyZTNiNTk5JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9QZXJpb2RzRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03MmUzYjU5OSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzcyZTNiNTk5JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9QZXJpb2RzTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZDMzYjI5MzQmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1BlcmlvZHNMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9QZXJpb2RzTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvUGVyaW9kc0xpc3QudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImQzM2IyOTM0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZDMzYjI5MzQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdkMzNiMjkzNCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUGVyaW9kc0xpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQzM2IyOTM0JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZDMzYjI5MzQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdHVhbFZhbHVlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03OWE4OGZjNSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWN0dWFsVmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FjdHVhbFZhbHVlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9lbGVtZW50cy9BY3R1YWxWYWx1ZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNzlhODhmYzVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc3OWE4OGZjNScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzc5YTg4ZmM1JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BY3R1YWxWYWx1ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzlhODhmYzUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc3OWE4OGZjNScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVGFyZ2V0VmFsdWUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBlNTcxYjIyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UYXJnZXRWYWx1ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVGFyZ2V0VmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL2VsZW1lbnRzL1RhcmdldFZhbHVlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwZTU3MWIyMlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzBlNTcxYjIyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMGU1NzFiMjInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RhcmdldFZhbHVlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZTU3MWIyMiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzBlNTcxYjIyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZXN1bHREZXRhaWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZjMjBmMTc4JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZXN1bHREZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1Jlc3VsdERldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0RGV0YWlsLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI2YzIwZjE3OFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzZjMjBmMTc4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNmMyMGYxNzgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1Jlc3VsdERldGFpbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmMyMGYxNzgmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc2YzIwZjE3OCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVzdWx0RWxlbWVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MThmZTQyMTkmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1Jlc3VsdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1Jlc3VsdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL1Jlc3VsdEVsZW1lbnQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjE4ZmU0MjE5XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMThmZTQyMTknLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxOGZlNDIxOScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVzdWx0RWxlbWVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MThmZTQyMTkmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcxOGZlNDIxOScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVzdWx0TGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YWEwNmE4NWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1Jlc3VsdExpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1Jlc3VsdExpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL1Jlc3VsdExpc3QudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImFhMDZhODVlXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnYWEwNmE4NWUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdhYTA2YTg1ZScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVzdWx0TGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YWEwNmE4NWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdhYTA2YTg1ZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZTJlODMwNyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL0RvY3VtZW50TGluay52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMGUyZTgzMDdcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwZTJlODMwNycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzBlMmU4MzA3JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBlMmU4MzA3JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMGUyZTgzMDcnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0luZGljYXRvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGMyZTY4MmQmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0luZGljYXRvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vSW5kaWNhdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9JbmRpY2F0b3IudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjRjMmU2ODJkXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNGMyZTY4MmQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0YzJlNjgyZCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vSW5kaWNhdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00YzJlNjgyZCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzRjMmU2ODJkJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZWZlcmVuY2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTgxYzIyOTJlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZWZlcmVuY2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JlZmVyZW5jZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvUmVmZXJlbmNlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI4MWMyMjkyZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzgxYzIyOTJlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnODFjMjI5MmUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlZmVyZW5jZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ODFjMjI5MmUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc4MWMyMjkyZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVzdWx0VHlwZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2MyMWM0NmUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1Jlc3VsdFR5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1Jlc3VsdFR5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1Jlc3VsdFR5cGUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjNjMjFjNDZlXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnM2MyMWM0NmUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCczYzIxYzQ2ZScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVzdWx0VHlwZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2MyMWM0NmUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCczYzIxYzQ2ZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVGl0bGVEZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZDEyZmVkNTQmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RpdGxlRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RpdGxlRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1RpdGxlRGVzY3JpcHRpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImQxMmZlZDU0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZDEyZmVkNTQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdkMTJmZWQ1NCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVGl0bGVEZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZDEyZmVkNTQmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdkMTJmZWQ1NCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVHJhbnNhY3Rpb25EZXRhaWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA3YzA2YzEyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UcmFuc2FjdGlvbkRldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVHJhbnNhY3Rpb25EZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25EZXRhaWwudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjA3YzA2YzEyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMDdjMDZjMTInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwN2MwNmMxMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVHJhbnNhY3Rpb25EZXRhaWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA3YzA2YzEyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMDdjMDZjMTInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RyYW5zYWN0aW9uRWxlbWVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZDU2YzExZWEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RyYW5zYWN0aW9uRWxlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVHJhbnNhY3Rpb25FbGVtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL1RyYW5zYWN0aW9uRWxlbWVudC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZDU2YzExZWFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdkNTZjMTFlYScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2Q1NmMxMWVhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9UcmFuc2FjdGlvbkVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQ1NmMxMWVhJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZDU2YzExZWEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RyYW5zYWN0aW9uTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Y2M4NzI3YzImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RyYW5zYWN0aW9uTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVHJhbnNhY3Rpb25MaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL1RyYW5zYWN0aW9uTGlzdC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiY2M4NzI3YzJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdjYzg3MjdjMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2NjODcyN2MyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9UcmFuc2FjdGlvbkxpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWNjODcyN2MyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignY2M4NzI3YzInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FpZFR5cGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWRmOTZjOTZhJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BaWRUeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BaWRUeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0FpZFR5cGUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImRmOTZjOTZhXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZGY5NmM5NmEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdkZjk2Yzk2YScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWlkVHlwZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZGY5NmM5NmEmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdkZjk2Yzk2YScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIyYThhNzMxJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRGVzY3JpcHRpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjIyYThhNzMxXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMjJhOGE3MzEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcyMmE4YTczMScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIyYThhNzMxJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjJhOGE3MzEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Rpc2J1cnNlbWVudENoYW5uZWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWM3ODUzMDUyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9EaXNidXJzZW1lbnRDaGFubmVsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9EaXNidXJzZW1lbnRDaGFubmVsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0Rpc2J1cnNlbWVudENoYW5uZWwudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImM3ODUzMDUyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnYzc4NTMwNTInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdjNzg1MzA1MicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGlzYnVyc2VtZW50Q2hhbm5lbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Yzc4NTMwNTImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdjNzg1MzA1MicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRmluYW5jZVR5cGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWU1YzdjNTJlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9GaW5hbmNlVHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRmluYW5jZVR5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRmluYW5jZVR5cGUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImU1YzdjNTJlXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZTVjN2M1MmUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdlNWM3YzUyZScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRmluYW5jZVR5cGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWU1YzdjNTJlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZTVjN2M1MmUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Zsb3dUeXBlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZTQwNmFhMyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRmxvd1R5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Zsb3dUeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0Zsb3dUeXBlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwZTQwNmFhM1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzBlNDA2YWEzJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMGU0MDZhYTMnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Zsb3dUeXBlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZTQwNmFhMyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzBlNDA2YWEzJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Qcm92aWRlck9yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzVlZjY4NWYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1Byb3ZpZGVyT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Qcm92aWRlck9yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9Qcm92aWRlck9yZ2FuaXphdGlvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMzVlZjY4NWZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCczNWVmNjg1ZicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzM1ZWY2ODVmJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Qcm92aWRlck9yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzVlZjY4NWYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCczNWVmNjg1ZicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVjZWl2ZXJPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPThhMDhkZjQ2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZWNlaXZlck9yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVjZWl2ZXJPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjZWl2ZXJPcmdhbml6YXRpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjhhMDhkZjQ2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnOGEwOGRmNDYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc4YTA4ZGY0NicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVjZWl2ZXJPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPThhMDhkZjQ2JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignOGEwOGRmNDYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlY2lwaWVudENvdW50cnkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQzZDUzNmQ4JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1JlY2lwaWVudENvdW50cnkudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjQzZDUzNmQ4XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNDNkNTM2ZDgnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0M2Q1MzZkOCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVjaXBpZW50Q291bnRyeS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDNkNTM2ZDgmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0M2Q1MzZkOCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVjaXBpZW50UmVnaW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wYTMwYmFhMiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVjaXBpZW50UmVnaW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZWNpcGllbnRSZWdpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjaXBpZW50UmVnaW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwYTMwYmFhMlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzBhMzBiYWEyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMGEzMGJhYTInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlY2lwaWVudFJlZ2lvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGEzMGJhYTImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwYTMwYmFhMicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vU2VjdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZWViYWE0MSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vU2VjdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9TZWN0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvU2VjdG9yLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0ZWViYWE0MVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzRlZWJhYTQxJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNGVlYmFhNDEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1NlY3Rvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGVlYmFhNDEmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0ZWViYWE0MScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVGllZFN0YXR1cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTcwODk4NDEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RpZWRTdGF0dXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RpZWRTdGF0dXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVGllZFN0YXR1cy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNTcwODk4NDFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1NzA4OTg0MScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzU3MDg5ODQxJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9UaWVkU3RhdHVzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NzA4OTg0MSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzU3MDg5ODQxJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UcmFuc2FjdGlvbkRhdGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTYxMmZjYzYxJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UcmFuc2FjdGlvbkRhdGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RyYW5zYWN0aW9uRGF0ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9UcmFuc2FjdGlvbkRhdGUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjYxMmZjYzYxXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNjEyZmNjNjEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc2MTJmY2M2MScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVHJhbnNhY3Rpb25EYXRlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02MTJmY2M2MSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzYxMmZjYzYxJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UcmFuc2FjdGlvblR5cGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTYzZjY3NDI2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UcmFuc2FjdGlvblR5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RyYW5zYWN0aW9uVHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9UcmFuc2FjdGlvblR5cGUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjYzZjY3NDI2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNjNmNjc0MjYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc2M2Y2NzQyNicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVHJhbnNhY3Rpb25UeXBlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02M2Y2NzQyNiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzYzZjY3NDI2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9WYWx1ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTY5NzI4MzQmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1ZhbHVlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9WYWx1ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9WYWx1ZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMTY5NzI4MzRcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcxNjk3MjgzNCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzE2OTcyODM0JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9WYWx1ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTY5NzI4MzQmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcxNjk3MjgzNCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQXVkaXRMaXN0aW5nLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mYjYxOWYyMCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQXVkaXRMaXN0aW5nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0F1ZGl0TGlzdGluZy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYXVkaXQvQXVkaXRMaXN0aW5nLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJmYjYxOWYyMFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2ZiNjE5ZjIwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZmI2MTlmMjAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0F1ZGl0TGlzdGluZy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZmI2MTlmMjAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdmYjYxOWYyMCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRGFzaGJvYXJkR3JhcGgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTMyMjU3ZjcwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9EYXNoYm9hcmRHcmFwaC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9EYXNoYm9hcmRHcmFwaC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZEdyYXBoLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzMjI1N2Y3MFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzMyMjU3ZjcwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMzIyNTdmNzAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Rhc2hib2FyZEdyYXBoLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zMjI1N2Y3MCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzMyMjU3ZjcwJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGYyMjVkM2UmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcblxuaW1wb3J0IFwiLi9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD00ZjIyNWQzZSZsYW5nPXNjc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNGYyMjVkM2VcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc0ZjIyNWQzZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzRmMjI1ZDNlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGYyMjVkM2UmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0ZjIyNWQzZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRGFzaGJvYXJkUGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZTExOWMzZjYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0Rhc2hib2FyZFBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRGFzaGJvYXJkUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZFBhZ2UudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImUxMTljM2Y2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZTExOWMzZjYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdlMTE5YzNmNicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGFzaGJvYXJkUGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZTExOWMzZjYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdlMTE5YzNmNicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yN2M2ZmIzYyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Rhc2hib2FyZFN0YXRzU2VjdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZFN0YXRzU2VjdGlvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMjdjNmZiM2NcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyN2M2ZmIzYycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzI3YzZmYjNjJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9EYXNoYm9hcmRTdGF0c1NlY3Rpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI3YzZmYjNjJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjdjNmZiM2MnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXR5VXBsb2FkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZWQ1ZmRkMiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWN0aXZpdHlVcGxvYWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQWN0aXZpdHlVcGxvYWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9BY3Rpdml0eVVwbG9hZC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMGVkNWZkZDJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwZWQ1ZmRkMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzBlZDVmZGQyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BY3Rpdml0eVVwbG9hZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGVkNWZkZDImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwZWQ1ZmRkMicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQWN0aXZpdHlYbHNVcGxvYWQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI4MDdjMDhjJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BY3Rpdml0eVhsc1VwbG9hZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BY3Rpdml0eVhsc1VwbG9hZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0FjdGl2aXR5WGxzVXBsb2FkLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyODA3YzA4Y1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzI4MDdjMDhjJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjgwN2MwOGMnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FjdGl2aXR5WGxzVXBsb2FkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yODA3YzA4YyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzI4MDdjMDhjJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9JbXBvcnRMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00MGQ3ODcwYSZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vSW1wb3J0TGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9JbXBvcnRMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9JbXBvcnRMaXN0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTQwZDc4NzBhJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi00MGQ3ODcwYVwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9JbXBvcnRMaXN0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0MGQ3ODcwYVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzQwZDc4NzBhJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNDBkNzg3MGEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0ltcG9ydExpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQwZDc4NzBhJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNDBkNzg3MGEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0ltcG9ydFBsYWNlaG9sZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01ZDE0OGQzNyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vSW1wb3J0UGxhY2Vob2xkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vSW1wb3J0UGxhY2Vob2xkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9JbXBvcnRQbGFjZWhvbGRlci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNWQxNDhkMzdcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1ZDE0OGQzNycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzVkMTQ4ZDM3JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9JbXBvcnRQbGFjZWhvbGRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWQxNDhkMzcmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc1ZDE0OGQzNycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vTGlzdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTlhNjA4NDMyJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9MaXN0RWxlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9MaXN0RWxlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vTGlzdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9OWE2MDg0MzImc2NvcGVkPXRydWUmbGFuZz1jc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtOWE2MDg0MzJcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvTGlzdEVsZW1lbnQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjlhNjA4NDMyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnOWE2MDg0MzInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc5YTYwODQzMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vTGlzdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTlhNjA4NDMyJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignOWE2MDg0MzInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1hsc0xpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVmNTAwOGI0JnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9YbHNMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1hsc0xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL1hsc0xpc3QudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NWY1MDA4YjQmc2NvcGVkPXRydWUmbGFuZz1jc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtNWY1MDA4YjRcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvWGxzTGlzdC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNWY1MDA4YjRcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1ZjUwMDhiNCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzVmNTAwOGI0JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9YbHNMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01ZjUwMDhiNCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzVmNTAwOGI0JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9PcmdhbmlzYXRpb25EYXRhLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00YWRhNWYzNiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vT3JnYW5pc2F0aW9uRGF0YS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vT3JnYW5pc2F0aW9uRGF0YS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL09yZ2FuaXNhdGlvbkRhdGEudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NGFkYTVmMzYmbGFuZz1zY3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRGF0YS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNGFkYTVmMzZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc0YWRhNWYzNicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzRhZGE1ZjM2JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9PcmdhbmlzYXRpb25EYXRhLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00YWRhNWYzNiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzRhZGE1ZjM2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9PcmdhbmlzYXRpb25FbGVtZW50cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDU0ZWE4MDMmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL09yZ2FuaXNhdGlvbkVsZW1lbnRzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL09yZ2FuaXNhdGlvbkVsZW1lbnRzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRWxlbWVudHMudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjQ1NGVhODAzXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNDU0ZWE4MDMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0NTRlYTgwMycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vT3JnYW5pc2F0aW9uRWxlbWVudHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ1NGVhODAzJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNDU0ZWE4MDMnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yODM5ZTA5OCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25FbGVtZW50c0RldGFpbC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMjgzOWUwOThcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyODM5ZTA5OCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzI4MzllMDk4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9PcmdhbmlzYXRpb25FbGVtZW50c0RldGFpbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjgzOWUwOTgmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcyODM5ZTA5OCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lZjZkMzEyYSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL0RvY3VtZW50TGluay52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZWY2ZDMxMmFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdlZjZkMzEyYScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2VmNmQzMTJhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWVmNmQzMTJhJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZWY2ZDMxMmEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlY2lwaWVudENvdW50cnlCdWRnZXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWNiZTg3NmQwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZWNpcGllbnRDb3VudHJ5QnVkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JlY2lwaWVudENvdW50cnlCdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZWNpcGllbnRDb3VudHJ5QnVkZ2V0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJjYmU4NzZkMFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2NiZTg3NmQwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnY2JlODc2ZDAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlY2lwaWVudENvdW50cnlCdWRnZXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWNiZTg3NmQwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignY2JlODc2ZDAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlcG9ydGluZ09yZ0J1ZGdldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjQ2N2QyZjEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1JlcG9ydGluZ09yZ0J1ZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZXBvcnRpbmdPcmdCdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZXBvcnRpbmdPcmdCdWRnZXQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjI0NjdkMmYxXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMjQ2N2QyZjEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcyNDY3ZDJmMScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVwb3J0aW5nT3JnQnVkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNDY3ZDJmMSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzI0NjdkMmYxJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZXBvcnRpbmdPcmdhbmlzYXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTY5OTlhZWUyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZXBvcnRpbmdPcmdhbmlzYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVwb3J0aW5nT3JnYW5pc2F0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVwb3J0aW5nT3JnYW5pc2F0aW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI2OTk5YWVlMlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzY5OTlhZWUyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNjk5OWFlZTInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlcG9ydGluZ09yZ2FuaXNhdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Njk5OWFlZTImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc2OTk5YWVlMicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVwb3J0aW5nUmVnaW9uQnVkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04NWM5ZGMzZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVwb3J0aW5nUmVnaW9uQnVkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JlcG9ydGluZ1JlZ2lvbkJ1ZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlcG9ydGluZ1JlZ2lvbkJ1ZGdldC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiODVjOWRjM2VcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc4NWM5ZGMzZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzg1YzlkYzNlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZXBvcnRpbmdSZWdpb25CdWRnZXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTg1YzlkYzNlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignODVjOWRjM2UnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RvdGFsQnVkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kM2MwZDMzYSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVG90YWxCdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVG90YWxCdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Ub3RhbEJ1ZGdldC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZDNjMGQzM2FcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdkM2MwZDMzYScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2QzYzBkMzNhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Ub3RhbEJ1ZGdldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZDNjMGQzM2EmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdkM2MwZDMzYScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVG90YWxFeHBlbmRpdHVyZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDY1NWY5NTEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RvdGFsRXhwZW5kaXR1cmUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVG90YWxFeHBlbmRpdHVyZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1RvdGFsRXhwZW5kaXR1cmUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjQ2NTVmOTUxXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNDY1NWY5NTEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0NjU1Zjk1MScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVG90YWxFeHBlbmRpdHVyZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDY1NWY5NTEmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0NjU1Zjk1MScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUGFzc3dvcmRSZWNvdmVyeS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzAzODVkYTMmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1Bhc3N3b3JkUmVjb3ZlcnkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUGFzc3dvcmRSZWNvdmVyeS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUGFzc3dvcmRSZWNvdmVyeS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNzAzODVkYTNcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc3MDM4NWRhMycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzcwMzg1ZGEzJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9QYXNzd29yZFJlY292ZXJ5LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03MDM4NWRhMyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzcwMzg1ZGEzJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZXNldFBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM2Yjc2NGJiJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZXNldFBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1Jlc2V0UGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL1Jlc2V0UGFnZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0zNmI3NjRiYiZsYW5nPXNjc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Jlc2V0UGFnZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMzZiNzY0YmJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCczNmI3NjRiYicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzM2Yjc2NGJiJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZXNldFBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM2Yjc2NGJiJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMzZiNzY0YmInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1Jlc2V0UGFzc3dvcmQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ1YjQyY2M3JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZXNldFBhc3N3b3JkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZXNldFBhc3N3b3JkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYXNzd29yZC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNDViNDJjYzdcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc0NWI0MmNjNycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzQ1YjQyY2M3JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZXNldFBhc3N3b3JkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NWI0MmNjNyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzQ1YjQyY2M3JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9TZXR0aW5nRGVmYXVsdEZvcm0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRkODY0NjY3JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9TZXR0aW5nRGVmYXVsdEZvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1NldHRpbmdEZWZhdWx0Rm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ0RlZmF1bHRGb3JtLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0ZDg2NDY2N1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzRkODY0NjY3JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNGQ4NjQ2NjcnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1NldHRpbmdEZWZhdWx0Rm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGQ4NjQ2NjcmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0ZDg2NDY2NycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vU2V0dGluZ1BhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTgxYTdmZDg2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9TZXR0aW5nUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vU2V0dGluZ1BhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zZXR0aW5nL1NldHRpbmdQYWdlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI4MWE3ZmQ4NlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzgxYTdmZDg2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnODFhN2ZkODYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1NldHRpbmdQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04MWE3ZmQ4NiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzgxYTdmZDg2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9TZXR0aW5nUHVibGlzaGluZ0Zvcm0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTYzMDc3MzA1JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9TZXR0aW5nUHVibGlzaGluZ0Zvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1NldHRpbmdQdWJsaXNoaW5nRm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ1B1Ymxpc2hpbmdGb3JtLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI2MzA3NzMwNVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzYzMDc3MzA1JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNjMwNzczMDUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1NldHRpbmdQdWJsaXNoaW5nRm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjMwNzczMDUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc2MzA3NzMwNScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vT3JnYW5pc2F0aW9uTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzViOTkwNjAmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL09yZ2FuaXNhdGlvbkxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vT3JnYW5pc2F0aW9uTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9PcmdhbmlzYXRpb25MaXN0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3NWI5OTA2MFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzc1Yjk5MDYwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNzViOTkwNjAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL09yZ2FuaXNhdGlvbkxpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc1Yjk5MDYwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNzViOTkwNjAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1N5c3RlbVZlcnNpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNlNGY1MTIxJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9TeXN0ZW1WZXJzaW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1N5c3RlbVZlcnNpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vU3lzdGVtVmVyc2lvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiM2U0ZjUxMjFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCczZTRmNTEyMScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzNlNGY1MTIxJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9TeXN0ZW1WZXJzaW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zZTRmNTEyMSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzNlNGY1MTIxJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BZG1pbkJhci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDU5NGFjZDUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FkbWluQmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FkbWluQmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL2NvbXBvbmVudHMvQWRtaW5CYXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjQ1OTRhY2Q1XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNDU5NGFjZDUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0NTk0YWNkNScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWRtaW5CYXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ1OTRhY2Q1JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNDU5NGFjZDUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RhYmxlTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDViMjYzNGImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RhYmxlTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVGFibGVMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vVGFibGVMaXN0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTA1YjI2MzRiJmxhbmc9Y3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL2NvbXBvbmVudHMvVGFibGVMaXN0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwNWIyNjM0YlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzA1YjI2MzRiJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMDViMjYzNGInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RhYmxlTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDViMjYzNGImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwNWIyNjM0YicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVXNlckxpc3RpbmcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA2MTFkOWYwJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Vc2VyTGlzdGluZy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Vc2VyTGlzdGluZy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vVXNlckxpc3RpbmcudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MDYxMWQ5ZjAmc2NvcGVkPXRydWUmbGFuZz1jc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtMDYxMWQ5ZjBcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy91c2VyL1VzZXJMaXN0aW5nLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwNjExZDlmMFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzA2MTFkOWYwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMDYxMWQ5ZjAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1VzZXJMaXN0aW5nLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wNjExZDlmMCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzA2MTFkOWYwJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Vc2VyUHJvZmlsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Mzc5MjcwYTYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1VzZXJQcm9maWxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1VzZXJQcm9maWxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy91c2VyL1VzZXJQcm9maWxlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzNzkyNzBhNlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzM3OTI3MGE2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMzc5MjcwYTYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1VzZXJQcm9maWxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNzkyNzBhNiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzM3OTI3MGE2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BYm91dFBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdkOWZhOTA0JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BYm91dFBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Fib3V0UGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9BYm91dFBhZ2UudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjdkOWZhOTA0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnN2Q5ZmE5MDQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3ZDlmYTkwNCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWJvdXRQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZDlmYTkwNCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzdkOWZhOTA0JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9FbWFpbFZlcmlmaWNhdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2NkYTVjMTkmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9FbWFpbFZlcmlmaWNhdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9FbWFpbFZlcmlmaWNhdGlvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiN2NkYTVjMTlcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc3Y2RhNWMxOScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzdjZGE1YzE5JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9FbWFpbFZlcmlmaWNhdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2NkYTVjMTkmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc3Y2RhNWMxOScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vSWF0aVJlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTdlNjMyYTYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0lhdGlSZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0lhdGlSZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3QvdGhlbWVzL2RlZmF1bHQuY3NzP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1jc3NcIlxuaW1wb3J0IFwiLi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0xJmlkPTE3ZTYzMmE2Jmxhbmc9c2Nzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0lhdGlSZWdpc3RlclBhZ2UudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjE3ZTYzMmE2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMTdlNjMyYTYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxN2U2MzJhNicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vSWF0aVJlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTdlNjMyYTYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcxN2U2MzJhNicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vSWF0aVN0YW5kYXJkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNjg0OTRkMCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vSWF0aVN0YW5kYXJkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcbmV4cG9ydCAqIGZyb20gXCIuL0lhdGlTdGFuZGFyZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0lhdGlTdGFuZGFyZC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZTY4NDk0ZDBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdlNjg0OTRkMCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2U2ODQ5NGQwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9JYXRpU3RhbmRhcmQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWU2ODQ5NGQwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZTY4NDk0ZDAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1B1Ymxpc2hpbmdDaGVja2xpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWRjYTY5Mzk2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9QdWJsaXNoaW5nQ2hlY2tsaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcbmV4cG9ydCAqIGZyb20gXCIuL1B1Ymxpc2hpbmdDaGVja2xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9QdWJsaXNoaW5nQ2hlY2tsaXN0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJkY2E2OTM5NlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2RjYTY5Mzk2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZGNhNjkzOTYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1B1Ymxpc2hpbmdDaGVja2xpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWRjYTY5Mzk2JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZGNhNjkzOTYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTIyNjYyMDAmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1JlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBcIkB2dWVmb3JtL211bHRpc2VsZWN0L3RoZW1lcy9kZWZhdWx0LmNzcz92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9Y3NzXCJcbmltcG9ydCBcIi4vUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0xJmlkPTUyMjY2MjAwJmxhbmc9c2Nzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1JlZ2lzdGVyUGFnZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNTIyNjYyMDBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1MjI2NjIwMCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzUyMjY2MjAwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTUyMjY2MjAwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNTIyNjYyMDAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1N1cHBvcnRQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NmZmZjk4MCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vU3VwcG9ydFBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuZXhwb3J0ICogZnJvbSBcIi4vU3VwcG9ydFBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9TdXBwb3J0UGFnZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNTZmZmY5ODBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1NmZmZjk4MCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzU2ZmZmOTgwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9TdXBwb3J0UGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTZmZmY5ODAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc1NmZmZjk4MCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vV2VsY29tZVBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWVhZTQ0ODVhXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vV2VsY29tZVBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1dlbGNvbWVQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1dlbGNvbWVQYWdlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJlYWU0NDg1YVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2VhZTQ0ODVhJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZWFlNDQ4NWEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1dlbGNvbWVQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lYWU0NDg1YVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdlYWU0NDg1YScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQWRtaW5Gb290ZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU1ZjliNGJiJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BZG1pbkZvb3Rlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BZG1pbkZvb3Rlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL0FkbWluRm9vdGVyLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1NWY5YjRiYlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzU1ZjliNGJiJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNTVmOWI0YmInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FkbWluRm9vdGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NWY5YjRiYiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzU1ZjliNGJiJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Kb2luTm93LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNjlmNTA4NiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vSm9pbk5vdy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vSm9pbk5vdy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9Kb2luTm93LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyNjlmNTA4NlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzI2OWY1MDg2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjY5ZjUwODYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0pvaW5Ob3cudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI2OWY1MDg2JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjY5ZjUwODYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1NpZ25Jbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YTE4NjFmM2Umc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1NpZ25Jbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vU2lnbkluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vU2lnbkluLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPWExODYxZjNlJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi1hMTg2MWYzZVwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9TaWduSW4udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImExODYxZjNlXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnYTE4NjFmM2UnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdhMTg2MWYzZScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vU2lnbkluLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hMTg2MWYzZSZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2ExODYxZjNlJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9XZWJGb290ZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIwZDEwNjgwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9XZWJGb290ZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuZXhwb3J0ICogZnJvbSBcIi4vV2ViRm9vdGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvV2ViRm9vdGVyLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyMGQxMDY4MFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzIwZDEwNjgwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjBkMTA2ODAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1dlYkZvb3Rlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjBkMTA2ODAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcyMGQxMDY4MCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vV2ViSGVhZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xMGM5ZTBiMiZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vV2ViSGVhZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9XZWJIZWFkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9XZWJIZWFkZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MTBjOWUwYjImc2NvcGVkPXRydWUmbGFuZz1zY3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LTEwYzllMGIyXCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1dlYkhlYWRlci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMTBjOWUwYjJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcxMGM5ZTBiMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzEwYzllMGIyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9XZWJIZWFkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTEwYzllMGIyJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMTBjOWUwYjInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eURvd25sb2FkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5RG93bmxvYWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BZG1pbkhlYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BZG1pbkhlYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0JyZWFkQ3J1bWIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0JyZWFkQ3J1bWIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQnVsa1B1Ymxpc2hpbmdFcnJvclBvcHVwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0J1bGtQdWJsaXNoaW5nRXJyb3JQb3B1cC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0J1bGtwdWJsaXNoV2l0aFhscy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9CdWxrcHVibGlzaFdpdGhYbHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9CdXR0b25Db21wb25lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0J1dHRvbkNvbXBvbmVudC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EYXRlUmFuZ2VXaWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGF0ZVJhbmdlV2lkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGVzY3JpcHRpb25Gb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EZXNjcmlwdGlvbkZvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRXJyb3JNZXNzYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Vycm9yTWVzc2FnZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Vycm9yUG9wVXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRXJyb3JQb3BVcC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0hvdmVyVGV4dC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSG92ZXJUZXh0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0xvYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTG9hZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9OYXZEcm9wZG93bi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTmF2RHJvcGRvd24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUG9wdXBNb2RhbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUG9wdXBNb2RhbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SYWRpYWxQcm9ncmVzc0Jhci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmFkaWFsUHJvZ3Jlc3NCYXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGFibGVMb2FkZXJDb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGFibGVMb2FkZXJDb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWJsZVBhZ2luYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhYmxlUGFnaW5hdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Ub2FzdE1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVG9hc3RNZXNzYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vWGxzTGlzdEVycm9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1hsc0xpc3RFcnJvci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1hsc0xvYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9YbHNMb2FkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9YbHNVcGxvYWRJbmRpY2F0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vWGxzVXBsb2FkSW5kaWNhdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGVsZXRlQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0RlbGV0ZUJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0xpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0xpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVW5QdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1VuUHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0RlbGV0ZUFjdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EZWxldGVBY3Rpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FcnJvckxpc3RzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Vycm9yTGlzdHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9IYXZlTm90QWRkZWRZZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0hhdmVOb3RBZGRlZFlldC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Pcmdhbml6YXRpb25QdWJsaXNoVW5wdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09yZ2FuaXphdGlvblB1Ymxpc2hVbnB1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QYWdlVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BhZ2VUaXRsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Qcm9ncmVzc0xvYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Qcm9ncmVzc0xvYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1N0aWNreUVycm9ycy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TdGlja3lFcnJvcnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9VcGxvYWRlZEVycm9ycy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9VcGxvYWRlZEVycm9ycy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0VsZW1lbnRTdGF0dXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRWxlbWVudFN0YXR1cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1ByZXZpb3VzbHlQdWJsaXNoZWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHJldmlvdXNseVB1Ymxpc2hlZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5RGVmYXVsdFZhbHVlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5RGVmYXVsdFZhbHVlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5RGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5SW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5SW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQ3JlYXRlTW9kYWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0NyZWF0ZU1vZGFsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Vycm9ySXRlbS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FcnJvckl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QdWJsaXNoU2VsZWN0ZWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHVibGlzaFNlbGVjdGVkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVmcmVzaFRvYXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlZnJlc2hUb2FzdC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1ZhbGlkYXRpb25FcnJvcnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVmFsaWRhdGlvbkVycm9ycy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5RGF0ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlEYXRlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0NvbmRpdGlvbnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0NvbmRpdGlvbnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQ29udGFjdEluZm8udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0NvbnRhY3RJbmZvLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9IdW1hbml0YXJpYW5TY29wZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9IdW1hbml0YXJpYW5TY29wZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0lhdGlJZGVudGlmaWVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JYXRpSWRlbnRpZmllci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9MZWdhY3lEYXRhLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9MZWdhY3lEYXRhLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0xvY2F0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Mb2NhdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PdGhlcklkZW50aWZpZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL090aGVySWRlbnRpZmllci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QYXJ0aWNpcGF0aW5nT3JnLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QYXJ0aWNpcGF0aW5nT3JnLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BsYW5uZWREaXNidXJzZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUGxhbm5lZERpc2J1cnNlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BvbGljeU1hcmtlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUG9saWN5TWFya2VyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlY2lwaWVudENvdW50cnkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlY2lwaWVudENvdW50cnkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVjaXBpZW50UmVnaW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlY2lwaWVudFJlZ2lvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlbGF0ZWRBY3Rpdml0eS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVsYXRlZEFjdGl2aXR5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlcG9ydGluZ09yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXBvcnRpbmdPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXN1bHQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc3VsdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TZWN0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NlY3Rvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UaXRsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVHJhbnNhY3Rpb25zLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UcmFuc2FjdGlvbnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSW5kaWNhdG9yRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JbmRpY2F0b3JEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSW5kaWNhdG9yTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSW5kaWNhdG9yTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BZ2dyZWdhdGlvblN0YXR1cy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWdncmVnYXRpb25TdGF0dXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQmFzZWxpbmUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Jhc2VsaW5lLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JbmRpY2F0b3JBc2NlbmRpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0luZGljYXRvckFzY2VuZGluZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9NZWFzdXJlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9NZWFzdXJlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BlcmlvZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUGVyaW9kLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlZmVyZW5jZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVmZXJlbmNlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RpdGxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UaXRsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0aWVzRWxlbWVudHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdGllc0VsZW1lbnRzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlFbGVtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5RWxlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FkZEFjdGl2aXR5QnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BZGRBY3Rpdml0eUJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0VsZW1lbnRzTm90ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRWxlbWVudHNOb3RlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0VtcHR5QWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0VtcHR5QWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUGFnZVRpdGxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BhZ2VUaXRsZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NpZGViYXJIZWxwQmxvY2sudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NpZGViYXJIZWxwQmxvY2sudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGFibGVMYXlvdXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGFibGVMYXlvdXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QZXJpb2RzRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QZXJpb2RzRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BlcmlvZHNMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QZXJpb2RzTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3R1YWxWYWx1ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0dWFsVmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGFyZ2V0VmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhcmdldFZhbHVlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc3VsdERldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzdWx0RGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc3VsdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc3VsdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzdWx0TGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzdWx0TGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JbmRpY2F0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0luZGljYXRvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWZlcmVuY2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlZmVyZW5jZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXN1bHRUeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXN1bHRUeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RpdGxlRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RpdGxlRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVHJhbnNhY3Rpb25EZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RyYW5zYWN0aW9uRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RyYW5zYWN0aW9uRWxlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVHJhbnNhY3Rpb25FbGVtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RyYW5zYWN0aW9uTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVHJhbnNhY3Rpb25MaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FpZFR5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FpZFR5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rpc2J1cnNlbWVudENoYW5uZWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rpc2J1cnNlbWVudENoYW5uZWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRmluYW5jZVR5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0ZpbmFuY2VUeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Zsb3dUeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9GbG93VHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Qcm92aWRlck9yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHJvdmlkZXJPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVjZWl2ZXJPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlY2VpdmVyT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlY2lwaWVudENvdW50cnkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlY2lwaWVudENvdW50cnkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVjaXBpZW50UmVnaW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWNpcGllbnRSZWdpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2VjdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TZWN0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGllZFN0YXR1cy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGllZFN0YXR1cy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UcmFuc2FjdGlvbkRhdGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RyYW5zYWN0aW9uRGF0ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UcmFuc2FjdGlvblR5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RyYW5zYWN0aW9uVHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9WYWx1ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQXVkaXRMaXN0aW5nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0F1ZGl0TGlzdGluZy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rhc2hib2FyZEdyYXBoLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rhc2hib2FyZEdyYXBoLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EYXNoYm9hcmRQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rhc2hib2FyZFBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EYXNoYm9hcmRTdGF0c1NlY3Rpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlVcGxvYWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlVcGxvYWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eVhsc1VwbG9hZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eVhsc1VwbG9hZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0ltcG9ydExpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSW1wb3J0TGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0ltcG9ydFBsYWNlaG9sZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0ltcG9ydFBsYWNlaG9sZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTGlzdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTGlzdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9YbHNMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1hsc0xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PcmdhbmlzYXRpb25EYXRhLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PcmdhbmlzYXRpb25EYXRhLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09yZ2FuaXNhdGlvbkVsZW1lbnRzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09yZ2FuaXNhdGlvbkVsZW1lbnRzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVjaXBpZW50Q291bnRyeUJ1ZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWNpcGllbnRDb3VudHJ5QnVkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVwb3J0aW5nT3JnQnVkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlcG9ydGluZ09yZ0J1ZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlcG9ydGluZ09yZ2FuaXNhdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXBvcnRpbmdPcmdhbmlzYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXBvcnRpbmdSZWdpb25CdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVwb3J0aW5nUmVnaW9uQnVkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVG90YWxCdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVG90YWxCdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Ub3RhbEV4cGVuZGl0dXJlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RvdGFsRXhwZW5kaXR1cmUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QYXNzd29yZFJlY292ZXJ5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Bhc3N3b3JkUmVjb3ZlcnkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXNldFBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc2V0UGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXNldFBhc3N3b3JkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXNldFBhc3N3b3JkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NldHRpbmdEZWZhdWx0Rm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2V0dGluZ0RlZmF1bHRGb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NldHRpbmdQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TZXR0aW5nUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TZXR0aW5nUHVibGlzaGluZ0Zvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NldHRpbmdQdWJsaXNoaW5nRm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PcmdhbmlzYXRpb25MaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09yZ2FuaXNhdGlvbkxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TeXN0ZW1WZXJzaW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1N5c3RlbVZlcnNpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BZG1pbkJhci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BZG1pbkJhci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhYmxlTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGFibGVMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1VzZXJMaXN0aW5nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1VzZXJMaXN0aW5nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVXNlclByb2ZpbGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVXNlclByb2ZpbGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BYm91dFBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Fib3V0UGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FbWFpbFZlcmlmaWNhdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRW1haWxWZXJpZmljYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSWF0aVJlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSWF0aVJlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JYXRpU3RhbmRhcmQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSWF0aVN0YW5kYXJkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHVibGlzaGluZ0NoZWNrbGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QdWJsaXNoaW5nQ2hlY2tsaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU3VwcG9ydFBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU3VwcG9ydFBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BZG1pbkZvb3Rlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BZG1pbkZvb3Rlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0pvaW5Ob3cudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0pvaW5Ob3cudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2lnbkluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TaWduSW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vV2ViRm9vdGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1dlYkZvb3Rlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1dlYkhlYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vV2ViSGVhZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vV2VsY29tZVBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vV2VsY29tZVBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCIiLCJ2YXIgbWFwID0ge1xuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvYWN0aXZpdHlfZGF0ZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9hY3Rpdml0eV9kYXRlLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvYWN0aXZpdHlfc2NvcGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvYWN0aXZpdHlfc2NvcGUuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9hY3Rpdml0eV9zdGF0dXMuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvYWN0aXZpdHlfc3RhdHVzLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvYnVkZ2V0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2J1ZGdldC5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2J1aWxkaW5nLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2J1aWxkaW5nLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvY2FwaXRhbF9zcGVuZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jYXBpdGFsX3NwZW5kLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvY29sbGFib3JhdGlvbl90eXBlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2NvbGxhYm9yYXRpb25fdHlwZS5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2NvbmRpdGlvbnMuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvY29uZGl0aW9ucy5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2NvbnRhY3RfaW5mby5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jb250YWN0X2luZm8uc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9jb3VudHJ5X2J1ZGdldF9pdGVtcy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jb3VudHJ5X2J1ZGdldF9pdGVtcy5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2Nycy1hZGQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvY3JzLWFkZC5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2RlZmF1bHRfYWlkX3R5cGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvZGVmYXVsdF9haWRfdHlwZS5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2RlZmF1bHRfZmluYW5jZV90eXBlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2RlZmF1bHRfZmluYW5jZV90eXBlLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvZGVmYXVsdF9mbG93X3R5cGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvZGVmYXVsdF9mbG93X3R5cGUuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9kZXNjcmlwdGlvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9kZXNjcmlwdGlvbi5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2RvY3VtZW50X2xpbmsuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvZG9jdW1lbnRfbGluay5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2h1bWFuaXRhcmlhbl9zY29wZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9odW1hbml0YXJpYW5fc2NvcGUuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9pYXRpX2lkZW50aWZpZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvaWF0aV9pZGVudGlmaWVyLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvaW5kaWNhdG9yLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2luZGljYXRvci5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2xlZ2FjeV9kYXRhLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2xlZ2FjeV9kYXRhLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvbG9jYXRpb24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvbG9jYXRpb24uc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9vdGhlcl9pZGVudGlmaWVyLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL290aGVyX2lkZW50aWZpZXIuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9wYXJ0aWNpcGF0aW5nX29yZy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9wYXJ0aWNpcGF0aW5nX29yZy5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3BlcmlvZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9wZXJpb2Quc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9wbGFubmVkX2Rpc2J1cnNlbWVudC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9wbGFubmVkX2Rpc2J1cnNlbWVudC5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3BvbGljeV9tYXJrZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcG9saWN5X21hcmtlci5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3JlY2lwaWVudF9jb3VudHJ5LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3JlY2lwaWVudF9jb3VudHJ5LnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvcmVjaXBpZW50X3JlZ2lvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9yZWNpcGllbnRfcmVnaW9uLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvcmVsYXRlZF9hY3Rpdml0eS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9yZWxhdGVkX2FjdGl2aXR5LnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvcmVwb3J0aW5nX29yZy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9yZXBvcnRpbmdfb3JnLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvcmVzdWx0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3Jlc3VsdC5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3Jlc3VsdHMuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcmVzdWx0cy5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3NlY3Rvci5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9zZWN0b3Iuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy90YWcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvdGFnLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvdGl0bGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvdGl0bGUuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy90cmFuc2FjdGlvbnMuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvdHJhbnNhY3Rpb25zLnN2Z1wiLFxuXHRcIi4vYWRkLW1vcmUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWRkLW1vcmUuc3ZnXCIsXG5cdFwiLi9hZGQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWRkLnN2Z1wiLFxuXHRcIi4vYWxlcnQtb3V0bGluZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hbGVydC1vdXRsaW5lLnN2Z1wiLFxuXHRcIi4vYWxlcnQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWxlcnQuc3ZnXCIsXG5cdFwiLi9hbGlnbi1jZW50ZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWxpZ24tY2VudGVyLnN2Z1wiLFxuXHRcIi4vYWxpZ24tcmlnaHQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWxpZ24tcmlnaHQuc3ZnXCIsXG5cdFwiLi9hcHByb3ZlZC1jbG91ZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hcHByb3ZlZC1jbG91ZC5zdmdcIixcblx0XCIuL2Fycm93LWRvd24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYXJyb3ctZG93bi5zdmdcIixcblx0XCIuL2Fycm93LWxlZnQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYXJyb3ctbGVmdC5zdmdcIixcblx0XCIuL2Fycm93LXJpZ2h0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Fycm93LXJpZ2h0LnN2Z1wiLFxuXHRcIi4vYXJyb3ctc2hvcnQtbGVmdC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hcnJvdy1zaG9ydC1sZWZ0LnN2Z1wiLFxuXHRcIi4vYXNjZW5kaW5nLWFycm93LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FzY2VuZGluZy1hcnJvdy5zdmdcIixcblx0XCIuL2JpbGwuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYmlsbC5zdmdcIixcblx0XCIuL2JveC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9ib3guc3ZnXCIsXG5cdFwiLi9idWRnZXQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYnVkZ2V0LnN2Z1wiLFxuXHRcIi4vYnVpbGRpbmcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYnVpbGRpbmcuc3ZnXCIsXG5cdFwiLi9jYW5jZWwtY2xvdWQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2FuY2VsLWNsb3VkLnN2Z1wiLFxuXHRcIi4vY2FuY2VsLWNyb3NzLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NhbmNlbC1jcm9zcy5zdmdcIixcblx0XCIuL2NoZWNrLWNpcmNsZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jaGVjay1jaXJjbGUuc3ZnXCIsXG5cdFwiLi9jaGVja2JveC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jaGVja2JveC5zdmdcIixcblx0XCIuL2NoZWNrZWQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2hlY2tlZC5zdmdcIixcblx0XCIuL2NoZXZyb24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2hldnJvbi5zdmdcIixcblx0XCIuL2NpcmNsZS1yZWQtY3Jvc3Muc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2lyY2xlLXJlZC1jcm9zcy5zdmdcIixcblx0XCIuL2Nsb3NlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Nsb3NlLnN2Z1wiLFxuXHRcIi4vY29weXJpZ2h0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NvcHlyaWdodC5zdmdcIixcblx0XCIuL2NvcmUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY29yZS5zdmdcIixcblx0XCIuL2Nyb3NzLWljb24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY3Jvc3MtaWNvbi5zdmdcIixcblx0XCIuL2Nyb3NzLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Nyb3NzLnN2Z1wiLFxuXHRcIi4vZGVmYXVsdC0xLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2RlZmF1bHQtMS5zdmdcIixcblx0XCIuL2RlZmF1bHQtMi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kZWZhdWx0LTIuc3ZnXCIsXG5cdFwiLi9kZWxldGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZGVsZXRlLnN2Z1wiLFxuXHRcIi4vZGVzY2VuZGluZy1hcnJvdy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kZXNjZW5kaW5nLWFycm93LnN2Z1wiLFxuXHRcIi4vZG9jdW1lbnQtd3JpdGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZG9jdW1lbnQtd3JpdGUuc3ZnXCIsXG5cdFwiLi9kb3VibGUtdGljay5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kb3VibGUtdGljay5zdmdcIixcblx0XCIuL2Rvd25sb2FkLWNvZGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZG93bmxvYWQtY29kZS5zdmdcIixcblx0XCIuL2Rvd25sb2FkLWZpbGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZG93bmxvYWQtZmlsZS5zdmdcIixcblx0XCIuL2Rvd25sb2FkLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Rvd25sb2FkLnN2Z1wiLFxuXHRcIi4vZHJvcGRvd24tYXJyb3cuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZHJvcGRvd24tYXJyb3cuc3ZnXCIsXG5cdFwiLi9lZGl0LWFjdGlvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9lZGl0LWFjdGlvbi5zdmdcIixcblx0XCIuL2VkaXQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZWRpdC5zdmdcIixcblx0XCIuL2V4Y2xhbWF0aW9uLXdhcm5pbmcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZXhjbGFtYXRpb24td2FybmluZy5zdmdcIixcblx0XCIuL2V4cG9ydC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9leHBvcnQuc3ZnXCIsXG5cdFwiLi9leHRlcm5hbC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9leHRlcm5hbC5zdmdcIixcblx0XCIuL2V5ZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9leWUuc3ZnXCIsXG5cdFwiLi9mb2xkZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZm9sZGVyLnN2Z1wiLFxuXHRcIi4vZm9vdGVyLWxvZ28uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZm9vdGVyLWxvZ28uc3ZnXCIsXG5cdFwiLi9mdW5uZWwuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZnVubmVsLnN2Z1wiLFxuXHRcIi4vZ3JvdXAuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZ3JvdXAuc3ZnXCIsXG5cdFwiLi9oYW1idXJnZXItY3Jvc3Muc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGFtYnVyZ2VyLWNyb3NzLnN2Z1wiLFxuXHRcIi4vaGVhZGVyLWxvZ28uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGVhZGVyLWxvZ28uc3ZnXCIsXG5cdFwiLi9oZWFkcGhvbmUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGVhZHBob25lLnN2Z1wiLFxuXHRcIi4vaGVscC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9oZWxwLnN2Z1wiLFxuXHRcIi4vaGlkZS1wYXNzd29yZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9oaWRlLXBhc3N3b3JkLnN2Z1wiLFxuXHRcIi4vaGlzdG9yeS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9oaXN0b3J5LnN2Z1wiLFxuXHRcIi4vaWMtdmVyaWZpY2F0aW9uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2ljLXZlcmlmaWNhdGlvbi5zdmdcIixcblx0XCIuL2luZGljYXRvci1pY29uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2luZGljYXRvci1pY29uLnN2Z1wiLFxuXHRcIi4va2V5LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2tleS5zdmdcIixcblx0XCIuL2xlZnQtYXJyb3cuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbGVmdC1hcnJvdy5zdmdcIixcblx0XCIuL2xvZ28td2hpdGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbG9nby13aGl0ZS5zdmdcIixcblx0XCIuL2xvZ28uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbG9nby5zdmdcIixcblx0XCIuL2xvZ291dC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9sb2dvdXQuc3ZnXCIsXG5cdFwiLi9tYWduaWZ5aW5nLWdsYXNzLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL21hZ25pZnlpbmctZ2xhc3Muc3ZnXCIsXG5cdFwiLi9tYWlsLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL21haWwuc3ZnXCIsXG5cdFwiLi9taW5pbWl6ZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9taW5pbWl6ZS5zdmdcIixcblx0XCIuL21vb24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbW9vbi5zdmdcIixcblx0XCIuL25vdGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbm90ZS5zdmdcIixcblx0XCIuL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9idWlsZGluZy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvYnVpbGRpbmcuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvZGVzY3JpcHRpb24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL2Rlc2NyaXB0aW9uLnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL2RvY3VtZW50X2xpbmsuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL2RvY3VtZW50X2xpbmsuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvbmFtZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvbmFtZS5zdmdcIixcblx0XCIuL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9vcmdfaWRlbnRpZmllci5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvb3JnX2lkZW50aWZpZXIuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvb3JnYW5pc2F0aW9uX2lkZW50aWZpZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL29yZ2FuaXNhdGlvbl9pZGVudGlmaWVyLnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL29yZ2FuaXphdGlvbl9pZGVudGlmaWVyLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9vcmdhbml6YXRpb25faWRlbnRpZmllci5zdmdcIixcblx0XCIuL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZWNpcGllbnRfY291bnRyeV9idWRnZXQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlY2lwaWVudF9jb3VudHJ5X2J1ZGdldC5zdmdcIixcblx0XCIuL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZWNpcGllbnRfb3JnX2J1ZGdldC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvcmVjaXBpZW50X29yZ19idWRnZXQuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvcmVjaXBpZW50X3JlZ2lvbl9idWRnZXQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlY2lwaWVudF9yZWdpb25fYnVkZ2V0LnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlcG9ydGluZ19vcmcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlcG9ydGluZ19vcmcuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvcmVwb3J0aW5nX29yZ2FuaXNhdGlvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvcmVwb3J0aW5nX29yZ2FuaXNhdGlvbi5zdmdcIixcblx0XCIuL29yZ2FuaXNhdGlvbi1lbGVtZW50cy90aXRsZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvdGl0bGUuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvdG90YWxfYnVkZ2V0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy90b3RhbF9idWRnZXQuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvdG90YWxfZXhwZW5kaXR1cmUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3RvdGFsX2V4cGVuZGl0dXJlLnN2Z1wiLFxuXHRcIi4vcGFuZWwtc2VhcmNoLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3BhbmVsLXNlYXJjaC5zdmdcIixcblx0XCIuL3BlcmlvZC1pY29uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3BlcmlvZC1pY29uLnN2Z1wiLFxuXHRcIi4vcGx1cy1vdXRsaW5lZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wbHVzLW91dGxpbmVkLnN2Z1wiLFxuXHRcIi4vcGx1cy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wbHVzLnN2Z1wiLFxuXHRcIi4vcHVibGlzaC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wdWJsaXNoLnN2Z1wiLFxuXHRcIi4vcHctbG9jay5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wdy1sb2NrLnN2Z1wiLFxuXHRcIi4vcXVlc3Rpb24tbWFyay5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9xdWVzdGlvbi1tYXJrLnN2Z1wiLFxuXHRcIi4vcmVkLWNyb3NzLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3JlZC1jcm9zcy5zdmdcIixcblx0XCIuL3JlZC1kb3Quc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcmVkLWRvdC5zdmdcIixcblx0XCIuL3JlZG8uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcmVkby5zdmdcIixcblx0XCIuL3Jlc3VsdC1pY29uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3Jlc3VsdC1pY29uLnN2Z1wiLFxuXHRcIi4vcmlnaHQtYXJyb3cuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcmlnaHQtYXJyb3cuc3ZnXCIsXG5cdFwiLi9zZWFyY2guc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc2VhcmNoLnN2Z1wiLFxuXHRcIi4vc2V0dGluZy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zZXR0aW5nLnN2Z1wiLFxuXHRcIi4vc2hpZWxkLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NoaWVsZC5zdmdcIixcblx0XCIuL3NtaWxlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NtaWxlLnN2Z1wiLFxuXHRcIi4vc29ydC1hc2NlbmRpbmcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc29ydC1hc2NlbmRpbmcuc3ZnXCIsXG5cdFwiLi9zb3J0LWRlc2NlbmRpbmcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc29ydC1kZXNjZW5kaW5nLnN2Z1wiLFxuXHRcIi4vc29ydC1pY29uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NvcnQtaWNvbi5zdmdcIixcblx0XCIuL3N0YXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc3Rhci5zdmdcIixcblx0XCIuL3RpY2stb3V0bGluZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy90aWNrLW91dGxpbmUuc3ZnXCIsXG5cdFwiLi90aWNrLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3RpY2suc3ZnXCIsXG5cdFwiLi90aWNrZWQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdGlja2VkLnN2Z1wiLFxuXHRcIi4vdGltZXMtY2lyY2xlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3RpbWVzLWNpcmNsZS5zdmdcIixcblx0XCIuL3R3aXR0ZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdHdpdHRlci5zdmdcIixcblx0XCIuL3VwLWFycm93LW91dGxpbmUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdXAtYXJyb3ctb3V0bGluZS5zdmdcIixcblx0XCIuL3VwbG9hZC1maWxlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3VwbG9hZC1maWxlLnN2Z1wiLFxuXHRcIi4vdXNlci1wcm9maWxlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3VzZXItcHJvZmlsZS5zdmdcIixcblx0XCIuL3VzZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdXNlci5zdmdcIixcblx0XCIuL3dhcm5pbmctYWN0aXZpdHkuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvd2FybmluZy1hY3Rpdml0eS5zdmdcIixcblx0XCIuL3dhcm5pbmctZmlsbC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy93YXJuaW5nLWZpbGwuc3ZnXCIsXG5cdFwiLi93YXJuaW5nLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3dhcm5pbmcuc3ZnXCIsXG5cdFwiLi95b3V0dWJlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3lvdXR1YmUuc3ZnXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLiokXCI7IiwiLyogKGlnbm9yZWQpICovIl0sIm5hbWVzIjpbIl9faW1wb3J0RGVmYXVsdCIsIm1vZCIsIl9fZXNNb2R1bGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsInZ1ZV8xIiwicmVxdWlyZSIsInZ1ZV8yIiwic3Bpbm5lckxvYWRlcl92dWVfMSIsIlBvcHVwTW9kYWxfdnVlXzEiLCJheGlvc18xIiwiaW5kZXhfMSIsImRlZmluZUNvbXBvbmVudCIsIl9fbmFtZSIsInNldHVwIiwiX19wcm9wcyIsIl9hIiwiZXhwb3NlIiwic3RvcmUiLCJ1c2VTdG9yZSIsInNob3dSZXRyeURvd25sb2FkTW9kZWwiLCJyZWYiLCJpc0xvYWRpbmciLCJvbk1vdW50ZWQiLCJzdXBwb3J0QnV0dG9uIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwic3R5bGUiLCJ0cmFuc2Zvcm0iLCJkb3dubG9hZEZpbGUiLCJkaXNwYXRjaCIsImFwaVVybCIsImNvbmNhdCIsImRvd25sb2FkQXBpVXJsIiwic3BsaXQiLCJtZXRob2QiLCJ1cmwiLCJyZXNwb25zZVR5cGUiLCJ0aGVuIiwicmVzIiwiZmlsZU5hbWUiLCJoZWFkZXJzIiwiYmxvYiIsIkJsb2IiLCJkYXRhIiwibGluayIsImNyZWF0ZUVsZW1lbnQiLCJocmVmIiwid2luZG93IiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwic2V0QXR0cmlidXRlIiwiYm9keSIsImFwcGVuZENoaWxkIiwiY2xpY2siLCJyZXRyeURvd25sb2FkIiwieGxzRG93bmxvYWRTdGF0dXMiLCJnZXQiLCJjYW5jZWxEb3dubG9hZCIsInN1Y2Nlc3MiLCJwZXJjZW50YWdlV2lkdGgiLCJjb21wdXRlZCIsImZpbGVDb3VudCIsImluamVjdCIsIl9fcmV0dXJuZWRfXyIsInNwaW5uZXJMb2FkZXIiLCJNb2RhbCIsImVudW1lcmFibGUiLCJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsIm5leHQiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwiYXBwbHkiLCJfX2dlbmVyYXRvciIsIl8iLCJsYWJlbCIsInNlbnQiLCJ0IiwidHJ5cyIsIm9wcyIsImYiLCJ5IiwiZyIsInZlcmIiLCJTeW1ib2wiLCJpdGVyYXRvciIsIm4iLCJ2Iiwib3AiLCJUeXBlRXJyb3IiLCJjYWxsIiwicG9wIiwibGVuZ3RoIiwicHVzaCIsInNob3dfMSIsImNvcmVfMSIsIkNyZWF0ZU1vZGFsX3Z1ZV8xIiwiVG9hc3RNZXNzYWdlX3Z1ZV8xIiwidHJhbnNsYXRpb25IZWxwZXJfMSIsInByb3BzIiwidXNlciIsInR5cGUiLCJyZXF1aXJlZCIsIm9yZ2FuaXphdGlvbiIsInZhbGlkYXRvciIsInN1cGVyQWRtaW4iLCJCb29sZWFuIiwiaGFzQWRtaW5CYXIiLCJOdW1iZXIiLCJfYiIsImRldGFpbFN0b3JlIiwidHJhbnNsYXRlIiwiVHJhbnNsYXRlIiwic2hvd1VzZXJEcm9wZG93biIsInNob3dBY3Rpdml0eURyb3Bkb3duIiwidG9hc3RWaXNpYmlsaXR5IiwiZHJvcERvd25FbGVtZW50IiwiYWN0aXZpdHlEcm9wZG93bkhlaWdodCIsInNob3dTaWRlYmFyIiwidG9hc3RNZXNzYWdlIiwidG9hc3RUeXBlIiwicmVhY3RpdmUiLCJsYW5ndWFnZU5hdkxpQ2xhc3NlcyIsImxhbmd1YWdlTmF2QW5jaG9yQ2xhc3NlcyIsIm1lbnVOYXZMaUNsYXNzZXMiLCJtZW51TmF2QW5jaG9yQ2xhc3NlcyIsImxhbmd1YWdlcyIsImxhbmd1YWdlIiwicGVybWFsaW5rIiwiaWQiLCJhY3RpdmUiLCJ3ZWJUZXh0Iiwib3JnX21lbnVzIiwibmFtZSIsImFkbWluVGV4dCIsImNvbW1vblRleHQiLCJzdXBlcmFkbWluX21lbnVzIiwid2F0Y2giLCJzdGF0ZSIsImxpQ2xhc3MiLCJfYyIsInVzZVRvZ2dsZSIsIm1vZGFsVmFsdWUiLCJtb2RhbFRvZ2dsZSIsInRvYXN0IiwibWVzc2FnZSIsInNldFRpbWVvdXQiLCJpc1RvdWNoRGV2aWNlIiwibmF2aWdhdG9yIiwibWF4VG91Y2hQb2ludHMiLCJUb2dnbGVNb2RlbCIsImxvY2FsU3RvcmFnZSIsInJlbW92ZUl0ZW0iLCJyb3RhdGVEcm9wZG93bkljb24iLCJpbm5lcldpZHRoIiwidG9nZ2xlQWN0aXZpdHlEcm9wZG93biIsImNsaWVudEhlaWdodCIsInNpZGViYXIiLCJkb2N1bWVudEVsZW1lbnQiLCJvdmVyZmxvdyIsImNoYW5nZUFjdGl2ZU1lbnUiLCJwYXRoIiwibG9jYXRpb24iLCJwYXRobmFtZSIsImZvckVhY2giLCJtZW51Iiwia2V5IiwiaW5jbHVkZXMiLCJwYSIsInVzZVN0b3JhZ2UiLCJwdWJsaXNoaW5nQWN0aXZpdGllcyIsImdldEl0ZW0iLCJsb2dvdXQiLCJwb3N0Iiwic3RhdHVzIiwic2VhcmNoVmFsdWUiLCJjdXJyZW50VVJMIiwicXVlcnlTdHJpbmciLCJzZWFyY2giLCJ1cmxQYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJzcGlubmVyIiwic2VhcmNoRnVuY3Rpb24iLCJwYXJhbSIsInJlcGxhY2UiLCJzb3J0aW5nUGFyYW0iLCJxdWVyeVN0cmluZ0FyciIsInNsaWNlIiwiam9pbiIsInJlZGlyZWN0UHJvZmlsZSIsIm9uVW5tb3VudGVkIiwiQ3JlYXRlTW9kYWwiLCJUb2FzdCIsInRpdGxlXzEiLCJjb21wb25lbnRzIiwidG9SZWZzIiwiYnJlYWRjcnVtYkRhdGEiLCJnZXRBY3Rpdml0eVRpdGxlIiwiYnVsa1B1Ymxpc2hTdGF0dXMiLCJhY3Rpdml0aWVzXzEiLCJ1dGlsc18xIiwiZW1pdHMiLCJlbWl0IiwiYnVsa1B1Ymxpc2hMZW5ndGgiLCJvcGVuTW9kZWwiLCJwYVN0b3JhZ2UiLCJidWxrcHVibGlzaEFjdGl2aXRpZXMiLCJjb21wbGV0ZWQiLCJyZWZyZXNoVG9hc3RNc2ciLCJhY3Rpdml0aWVzIiwiaGFzRmFpbGVkQWN0aXZpdGllcyIsImlkcyIsInJlc3BvbnNlIiwicG9sbGluZ0ZvckJ1bGtwdWJsaXNoRGF0YSIsImludGVydmFsSUQiLCJzZXRJbnRlcnZhbCIsInB1Ymxpc2hpbmciLCJjbGVhckludGVydmFsIiwiZmFpbGVkQWN0aXZpdGllcyIsInZpc2liaWxpdHkiLCJyZWZyZXNoTWVzc2FnZVR5cGUiLCJyZWZyZXNoTWVzc2FnZSIsImVycm9yIiwicmV0cnlQdWJsaXNoaW5nIiwiZW5kcG9pbnQiLCJuZXN0ZWRPYmplY3QiLCJmYWlsZWRBY3Rpdml0aWVzSUQiLCJhc0FycmF5RGF0YSIsImVudHJpZXMiLCJmaWx0ZXJlZCIsImZpbHRlciIsInZhbHVlcyIsImluZGV4T2YiLCJhY3Rpdml0eV9pZCIsImZhaWxlZEFjdGl2aXRpZXNEYXRhIiwiZnJvbUVudHJpZXMiLCJjb21wbGV0ZWRBY3Rpdml0aWVzIiwiY291bnQiLCJpIiwia2V5cyIsInNldERhdGFUb0xvY2Fsc3RvcmFnZSIsImdldERhdGFGcm9tTG9jYWxzdG9yYWdlIiwiaXNKc29uIiwiSlNPTiIsInBhcnNlIiwic2V0SXRlbSIsInN0cmluZ2lmeSIsImVtcHR5YnVsa1B1Ymxpc2hTdGF0dXMiLCJzdGF0dXNfMSIsImFzc2lnbiIsImRlZXAiLCJ0ZXh0IiwiU3RyaW5nIiwiaWNvbiIsImFjdGl2aXR5TGVuZ3RoIiwiYnRuVHlwZSIsImRhdGVfZm5zXzEiLCJ2dWVfZGF0ZXBpY2tlcl8xIiwibW9tZW50XzEiLCJkcm9wZG93blJhbmdlIiwiZmlyc3REYXRlIiwiZGF0ZUxhYmVsIiwiY3VycmVudFZpZXciLCJjbGVhckRhdGUiLCJzdGFydGluZ0RhdGUiLCJlbmRpbmdEYXRlIiwiZGF0ZU5hbWUiLCJfdGhpcyIsInNlbGVjdGVkUHJlc2VudEluZGV4IiwiZGF0ZVJhbmdlTWFpbiIsImRhdGVUeXBlIiwiZGF0ZURyb3Bkb3duIiwiZGF0ZVR5cGVOYW1lIiwiZGF0ZVR5cGVLZXkiLCJzaG93UmFuZ2VEcm9wZG93biIsImluaXRpYWxEYXRlIiwiZml4ZWQiLCJ0b2RheURhdGUiLCJEYXRlIiwiZm9ybWF0Iiwic2VsZWN0ZWREYXRlIiwic2V0RGF0ZSIsImdldERhdGUiLCJkYXRlcGlja2VyIiwidHJpZ2dlclNldERhdGVSYW5nZSIsImhhbmRsZVByZXNlbnRSYW5nZUl0ZW1DbGljayIsImluZGV4IiwicHJlc2VudFJhbmdlSXRlbXMiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiY2xhc3NMaXN0IiwiYWRkIiwiaiIsInJlbW92ZSIsInJlc2V0RGF0ZSIsImhhbmRsZUNhbGVuZGFySXRlbUNsaWNrIiwiYWRkRXZlbnRzRm9yQ2FsZW5kYXIiLCJfbG9vcF8xIiwiYWRkRXZlbnRMaXN0ZW5lciIsImNhbGVuZGFySXRlbXMiLCJyZW1vdmVFdmVudHNPZkNhbGVuZGFyIiwiX2xvb3BfMiIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ0b2dnbGVTaG93UmFuZ2VEcm9wZG93biIsInByZXNldFJhbmdlcyIsInJhbmdlIiwic3RhcnRPZkRheSIsImVuZE9mRGF5Iiwic3RhcnRPZldlZWsiLCJzdWJEYXlzIiwic3RhcnRPZk1vbnRoIiwiZW5kT2ZNb250aCIsInN1Yk1vbnRocyIsInN0YXJ0T2ZZZWFyIiwiY29udmVydERhdGUiLCJkYXRlIiwiZGF0ZU9iaiIsInllYXIiLCJnZXRGdWxsWWVhciIsIm1vbnRoIiwiZ2V0TW9udGgiLCJwYWRTdGFydCIsImRheSIsIm9wZW5DYWxlbmRhciIsIm9wZW5NZW51IiwiY2xvc2VDYWxlbmRhciIsImNsb3NlTWVudSIsInNlbGVjdERhdGUiLCJkYXRlcyIsInRlbXBBcnJheSIsInRvTG9jYWxlRGF0ZVN0cmluZyIsImNsb3NlRGF0ZURyb3Bkb3duIiwia2VlcE1vZGVsT3BlbiIsImV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsInNldFNlbGVjdGVkUHJlc2VudERheVRleHQiLCJ0cmlnZ2VyU2V0RGF0ZVR5cGUiLCJmaWx0ZXJlZERhdGVUeXBlIiwiZXZlbnRUeXBlIiwiY3VzdG9tUG9zaXRpb24iLCJfZCIsIl9lIiwibGVmdFBvc2l0aW9uIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwicmlnaHQiLCJ0b3AiLCJib3R0b20iLCJsZWZ0Iiwic2V0RGF0ZVJhbmdlVHlwZUluRHJvcGRvd24iLCJWdWVEYXRlUGlja2VyIiwidnVlXzMiLCJMb2FkZXJfdnVlXzEiLCJpc0VtcHR5Iiwic2hvdyIsImhhc0Vycm9ycyIsImVycm9yQ291bnQiLCJ0b2FzdERhdGEiLCJlcnJvckRhdGEiLCJhY2NvdW50X3ZlcmlmaWVkIiwicHVibGlzaGVyX2FjdGl2ZSIsImRlZmF1bHRfc2V0dGluZyIsInB1Ymxpc2hlcl9zZXR0aW5nIiwidG9rZW5fc3RhdHVzIiwiaXNMb2FkZXJWaXNpYmxlIiwicmVzZW5kVmVyaWZpY2F0aW9uRW1haWwiLCJhbGwiLCJzcHJlYWQiLCJzZXR0aW5nX3JlcyIsInVzZXJfcmVzIiwib3JnX3JlcyIsInVzZXJfcmVzcG9uc2UiLCJvcmdfcmVzcG9uc2UiLCJkZWZhdWx0X3N0YXR1cyIsInB1Ymxpc2hlcl9zdGF0dXMiLCJncm91cGVkRXJyb3IiLCJUcmFuc2l0aW9uUm9vdCIsIkxvYWRlciIsIkFycmF5IiwidGl0bGUiLCJjbG9zZSIsImhvdmVyVGV4dCIsIndpZHRoIiwicG9zaXRpb24iLCJpY29uU2l6ZSIsInNob3dJYXRpUmVmZXJlbmNlIiwiQnV0dG9uQ29tcG9uZW50X3Z1ZV8xIiwibGlzdEl0ZW1zIiwiaGVhZGVyIiwidGVtcExpc3RJdGVtcyIsInB1Ymxpc2hlclR5cGVNdWx0aXNlbGVjdCIsInNlYXJjaElucHV0IiwiY2hlY2tlZEJveGVzIiwiY2hhbmdlU2VsZWN0ZWRQdWJsaXNoZXIiLCJzZWxlY3RlZFB1Ymxpc2hlclR5cGUiLCJmb3JtYXRQdWJsaXNoZXJUeXBlIiwia2VlcFB1Ymxpc2hlck1vZGVsT3BlbiIsIm9uQmVmb3JlVW5tb3VudCIsInNob3dOb0RhdGFDb21wb25lbnQiLCJtYXAiLCJpdGVtIiwidXBkYXRlQXJyYXlCeVNlYXJjaCIsInNlYXJjaFN0cmluZyIsInRvTG93ZXJDYXNlIiwiYXBwbHlGaWx0ZXIiLCJCdG5Db21wb25lbnQiLCJidG5UZXh0IiwiYnRuTGluayIsIm1vZGFsQWN0aXZlIiwibm9QYWRkaW5nIiwidnVlM19yYWRpYWxfcHJvZ3Jlc3NfMSIsIlJhZGlhbFByb2dyZXNzQmFyIiwicGVyY2VudCIsImNvbXBsZXRlZFBlcmNlbnQiLCJ0b3RhbFBlcmNlbnQiLCJTaGltbWVyTG9hZGluZ192dWVfMSIsInJvd0NvdW50IiwiY29sQ291bnQiLCJTaGltbWVyTG9hZGluZyIsInJlc2V0IiwiYWN0aXZlX3BhZ2UiLCJsYXN0X3BhZ2VsaXN0IiwibWlkX3BhZ2VsaXN0IiwibGFzdHBhZ2VzIiwibWlkcGFnZXMiLCJ1cGRhdGVBY3RpdmVQYWdlIiwicGFnZSIsImNoYW5nZVBhZ2UiLCJwYWdlTnVtIiwibmV4dFBhZ2UiLCJsYXN0X3BhZ2UiLCJjdXJyZW50UGFnZSIsImZyb20iLCJwcmV2aW91c1BhZ2UiLCJjbGFzc05hbWUiLCJpbXBvcnREYXRhIiwiYWN0aXZpdHkiLCJzaG93RXJyb3JzIiwic2hvd0NyaXRpY2FsIiwiY3JpdGljYWxUb2dnbGUiLCJzaG93RXJyb3IiLCJlcnJvclRvZ2dsZSIsIndhcm5pbmdUb2dnbGUiLCJzaG93V2FybmluZyIsImVycm9yTGVuZ3RoIiwiY3VycmVudEVycm9yIiwiZXJyb3JzIiwibmFycmF0aXZlIiwicGVyaW9kX3N0YXJ0IiwicGVyaW9kX2VuZCIsImNvdW50RXJyb3JzIiwiYWN0aXZpdHlJbmRleCIsImNyaXRpY2FsQWNjb3JkaW9uVG9nZ2xlIiwiY3VycmVudFRhcmdldCIsInRhcmdldCIsInBhcmVudEVsZW1lbnQiLCJlbEhlaWdodCIsImNzc1RleHQiLCJ3YXJuaW5nQWNjb3JkaW9uVG9nZ2xlIiwiZXJyb3JBY2NvcmRpb25Ub2dnbGUiLCJhY3Rpdml0eU5hbWUiLCJ0b3RhbENvdW50IiwicHJvY2Vzc2VkQ291bnQiLCJ4bHNGYWlsZWQiLCJjdXJyZW50QWN0aXZpdHkiLCJtYXhpbWl6ZSIsInNob3dNaW5pbWl6ZWRNb2RlbCIsIm1hcEFjdGl2aXR5TmFtZSIsInJldHJ5IiwiY2hlY2tTdXBwb3J0QnV0dG9uIiwidG9TdHJpbmciLCJ4bHNGYWlsZWRNZXNzYWdlIiwicHJvY2Vzc2luZyIsIkFjdGl2aXR5RG93bmxvYWRfdnVlXzEiLCJYbHNMb2FkZXJfdnVlXzEiLCJCdWxrcHVibGlzaFdpdGhYbHNfdnVlXzEiLCJ4bHNEYXRhIiwic2hvd1hsc1N0YXR1cyIsImRvd25sb2FkQ29tcGxldGVkIiwidG9nZ2xlQnVsa1B1Ymxpc2giLCJzaG93QnVsa3B1Ymxpc2giLCJkb3dubG9hZGluZyIsInN0YXJ0QnVsa1B1Ymxpc2giLCJzaG93WGxzUG9wdXAiLCJzaG93RG93bmxvYWRQb3B1cCIsInNob3dCdWxrUHVibGlzaFBvcHVwIiwiY2xvc2VCdWxrcHVibGlzaCIsImNsb3NlWGxzIiwiY29tcGxldGVYbHNEb3dubG9hZCIsIkFjdGl2aXR5RG93bmxvYWQiLCJYbHNMb2FkZXIiLCJCdWxrcHVibGlzaFdpdGhYbHMiLCJQcm9ncmVzc0xvYWRlcl92dWVfMSIsImRlbGV0ZVZhbHVlIiwiZGVsZXRlVG9nZ2xlIiwibG9hZGVyIiwiZGVsZXRlRnVuY3Rpb24iLCJjYXBpdGFsaXplIiwiZGVsZXRlRW5kUG9pbnQiLCJzZWxlY3RlZEFjdGl2aXRpZXMiLCJyZWxvYWQiLCJkZXNpZ24iLCJzdHlsZVR5cGUiLCJjbGFzc2VzIiwibGlua2VkVG9JYXRpIiwiY29yZUNvbXBsZXRlZCIsImFjdGl2aXR5SWQiLCJvblVwZGF0ZWQiLCJwdWJsaXNoVmFsdWUiLCJwdWJsaXNoU3RlcCIsInB1Ymxpc2hUb2dnbGUiLCJjb3JlRWxlbWVudFN0YXR1cyIsImxvYWRlclRleHQiLCJyZXNldFB1Ymxpc2hTdGVwIiwicHVibGlzaFN0YXRlQ2hhbmdlIiwicHVibGlzaFN0YXRlIiwiZGVzY3JpcHRpb24iLCJhbGVydFN0YXRlIiwicyIsImdldFN0aWNreU9iamVjdCIsInN0aWNreVRleHQiLCJlcnIiLCJjcml0aWNhbE51bWJlciIsImNyaXRpY2FsIiwiZXJyb3JOdW1iZXIiLCJhbmQiLCJ3YXJuaW5nTnVtYmVyIiwid2FybmluZ3MiLCJoYXNfYXRsZWFzdF9vbmVfY3JpdGljYWxfZXJyb3IiLCJ3ZV9oaWdobHlfcmVjb21tZW5kX3lvdV9maXhfdGhlc2VfaXNzdWVzIiwid2VyZV9mb3VuZCIsInZpZXdfaW5mb3JtYXRpb25fYWJvdXRfdGhlc2UiLCJzdGVwUGx1c09uZSIsInN0ZXBNaW51c09uZSIsInZhbGlkYXRvckZ1bmN0aW9uIiwiY3JpdCIsInN1bW1hcnkiLCJ3YXJuaW5nIiwiY2hlY2tQdWJsaXNoIiwicHVibGlzaEZ1bmN0aW9uIiwicHVibGlzaFN0YXR1cyIsImxpbmtlZF90b19pYXRpIiwiYnV0dG9uIiwidW5wdWJsaXNoVmFsdWUiLCJ1bnB1Ymxpc2hUb2dnbGUiLCJ1blB1Ymxpc2hGdW5jdGlvbiIsIml0ZW1JZCIsIml0ZW1UeXBlIiwiZXJyb3JUeXBlIiwiYmdDb2xvciIsImljb25Db2xvciIsInRvZ2dsZSIsImFjY29yZGlvblRvZ2dsZSIsInVwZGF0ZUVycm9yQ291bnRNZXNzYWdlIiwidHJhbnNsYXRlZFR5cGUiLCJjb25zb2xlIiwibG9nIiwiTGlua192dWVfMSIsIkJ0biIsIm1hbmRhdG9yeUVsZW1lbnRTdGF0dXMiLCJpc19wdWJsaXNoZWQiLCJCcmVhZENydW1iX3Z1ZV8xIiwiQnJlYWRjcnVtYiIsImJhY2tMaW5rIiwiY2hhbmdlVGV4dCIsImRpc3BsYXkiLCJFcnJvckxpc3RzX3Z1ZV8xIiwiVXBsb2FkZWRFcnJvcnNfdnVlXzEiLCJlcnJvclZhbHVlIiwiaW1wb3J0RXJyb3JzIiwiaXNzdWVUeXBlIiwiaW1wb3J0RXJyb3JUeXBlcyIsInRlbXBEYXRhIiwidXBkYXRlVGVtcE1lc3NhZ2UiLCJlcnJvckRhdGFQcm9wcyIsIl9pIiwiZXJyb3JEYXRhUHJvcHNfMSIsInNldmVyaXR5IiwiaW1wb3J0RXJyb3JsZW5ndGgiLCJkZWxldGVFcnJvcnMiLCJzZXNzaW9uU3RvcmFnZSIsIkVycm9yTGlzdHMiLCJVcGxvYWRlZEVycm9ycyIsImNvbG9yIiwiY29tbW9uIiwicHJldmlvdXNseV9wdWJsaXNoZWRfb25faWF0aSIsIl9fYXNzaWduIiwiYXJndW1lbnRzIiwicCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibXVsdGlzZWxlY3RfMSIsImN1cnJlbmNpZXMiLCJidWRnZXROb3RQcm92aWRlZCIsImh1bWFuaXRhcmlhbiIsImRlZmF1bHRWYWx1ZXMiLCJidWRnZXRfbm90X3Byb3ZpZGVkIiwiZGVmYXVsdF9jdXJyZW5jeSIsImRlZmF1bHRfbGFuZ3VhZ2UiLCJoaWVyYXJjaHkiLCJkZWZhdWx0RXJyb3JzIiwiZXJyb3JSZXNldCIsImRlZmF1bHREYXRhIiwibG9hZGVyVmlzaWJpbGl0eSIsInN1Ym1pdEZvcm0iLCJwdXQiLCJNdWx0aXNlbGVjdCIsIkluZGV4XzEiLCJIb3ZlclRleHRfdnVlXzEiLCJSYWRpYWxQcm9ncmVzc0Jhcl92dWVfMSIsIlB1Ymxpc2hCdXR0b25fdnVlXzEiLCJVblB1Ymxpc2hCdXR0b25fdnVlXzEiLCJEZWxldGVCdXR0b25fdnVlXzEiLCJTdGlja3lFcnJvcnNfdnVlXzEiLCJFcnJvclBvcFVwX3Z1ZV8xIiwiQWN0aXZpdGllc0VsZW1lbnRzX3Z1ZV8xIiwiQWN0aXZpdHlFbGVtZW50X3Z1ZV8xIiwiUHJldmlvdXNseVB1Ymxpc2hlZF92dWVfMSIsIkhvdmVyVGV4dCIsIlByb2dyZXNzQmFyIiwiRWxlbWVudHMiLCJBY3Rpdml0eUVsZW1lbnQiLCJSZXN1bHQiLCJQdWJsaXNoIiwiRXJyb3JzIiwiVW5QdWJsaXNoIiwiRGVsZXRlQnV0dG9uIiwiUHJldmlvdXNseVB1Ymxpc2hlZCIsIkVycm9yUG9wVXAiLCJlbGVtZW50cyIsImdyb3VwcyIsInByb2dyZXNzIiwidHlwZXMiLCJyZXN1bHRzIiwidHJhbnNhY3Rpb25zIiwiaWF0aVZhbGlkYXRvclJlc3BvbnNlIiwiaW1wb3J0QWN0aXZpdHlFcnJvciIsInJlbW92ZWQiLCJpbmRleFN0b3JlIiwicG9zaXRpb25ZIiwic2NyZWVuV2lkdGgiLCJkb3dubG9hZFZhbHVlIiwiZG93bmxvYWRUb2dnbGUiLCJ0b2dnbGVTaWRlYmFyIiwiaGFuZGxlU2Nyb2xsIiwic2Nyb2xsWSIsImlzdG9wVmlzaWJsZSIsImNhbGNXaWR0aCIsIm9ubG9hZCIsImNsZWFyIiwiaWdub3JlVG9hc3RVcGRhdGUiLCJncm91cGVkRGF0YSIsImFjdGl2aXR5UHJvcHMiLCJlbGVtZW50UHJvcHMiLCJzdGF0dXNQcm9wcyIsInRyYW5zYWN0aW9uUHJvcHMiLCJmbGFnIiwiayIsInBhZ2VUaXRsZSIsImRlZmF1bHRfZmllbGRfdmFsdWVzIiwiZm9ybWF0VGl0bGUiLCJ0cmFuc2xhdGVkVGl0bGUiLCJ0ZXh0RnJvbUtleSIsImlnbm9yZVVwZGF0ZXMiLCJ3YXRjaElnbm9yYWJsZSIsInVuZGVmaW5lZCIsImZsdXNoIiwicHJvdmlkZSIsInZhbGlkYXRpb25SZXN1bHQiLCJ0b1NuYWtlQ2FzZSIsInNlbnRlbmNlIiwid29yZHMiLCJ3b3JkIiwiWGxzVXBsb2FkSW5kaWNhdG9yX3Z1ZV8xIiwiRW1wdHlBY3Rpdml0eV92dWVfMSIsIlRhYmxlTGF5b3V0X3Z1ZV8xIiwiVGFibGVQYWdpbmF0aW9uX3Z1ZV8xIiwiUGFnZVRpdGxlX3Z1ZV8xIiwiRXJyb3JNZXNzYWdlX3Z1ZV8xIiwiY29yZV8yIiwiYWN0aXZpdHlTdG9yZSIsIkVtcHR5QWN0aXZpdHkiLCJQYWdlVGl0bGUiLCJQYWdpbmF0aW9uIiwiVGFibGVMYXlvdXQiLCJFcnJvck1lc3NhZ2UiLCJYbHNVcGxvYWRJbmRpY2F0b3IiLCJjbG9zZU1vZGVsIiwidXBsb2FkQ29tcGxldGUiLCJpbXBvcnRDb21wbGV0ZWQiLCJ0YWJsZUxvYWRlciIsInNob3dFbXB0eVRlbXBsYXRlIiwicG9sbGluZ0Zvclhsc1N0YXR1cyIsImNoZWNrU3RhdHVzIiwiX2YiLCJfZyIsIl9oIiwiX2oiLCJfayIsInRvdGFsX2NvdW50IiwicHJvY2Vzc2VkX2NvdW50Iiwic3RhcnRYbHNEb3dubG9hZCIsImNoZWNrRG93bmxvYWRTdGF0dXMiLCJjbG9zZVhsc01vZGVsIiwiY2hlY2tYbHNzdGF0dXMiLCJ0ZW1wbGF0ZSIsImNoZWNrRG93bmxvYWQiLCJmaWxlX2NvdW50Iiwic2hvd0J1dHRvbnMiLCJzaG93T3JIaWRlIiwiZmV0Y2hBY3Rpdml0aWVzIiwiZm9ybURhdGEiLCJhY3Rpdml0eV9pZGVudGlmaWVyIiwiY2xvc2VNb2RhbCIsInN0b3JlQWN0aXZpdHkiLCJjbG9zZXN0Iiwic2MiLCJWYWxpZGF0aW9uRXJyb3JzX3Z1ZV8xIiwiQnVsa1B1Ymxpc2hpbmdFcnJvclBvcHVwX3Z1ZV8xIiwicHVibGlzaEFsZXJ0VmFsdWUiLCJwdWJsaXNoQWxlcnRUb2dnbGUiLCJidWxrUHVibGlzaFN0ZXAiLCJzdGFydFB1Ymxpc2giLCJwdWJsaXNoZWQiLCJzaG93Q2FuY2VsQ29uZmlybWF0aW9uUG9wdXAiLCJzaG93Q2FuY2VsbGVkUG9wdXAiLCJtZXNzYWdlT25DYW5jZWxsYXRpb24iLCJwb3BVcFdpZHRoQ2hhbmdlIiwiZGlzcGxheVRvYXN0IiwiaW5fcHJvZ3Jlc3MiLCJzaG93Q2FuY2VsQ29uZmlybWF0aW9uTW9kYWwiLCJjb3JlQ29tcGxldGVkQWN0aXZpdGllcyIsImNvcmVJbkNvbXBsZXRlZEFjdGl2aXRpZXMiLCJ2ZXJpZnlDb3JlRWxlbWVudHMiLCJjb21wbGV0ZSIsImluY29tcGxldGUiLCJ2YWxpZGF0aW9uRXJyb3JzIiwib3JnYW5pemF0aW9uX2lkIiwiam9iX2JhdGNoX3V1aWQiLCJ2YWxpZGF0ZUFjdGl2aXRpZXMiLCJjYW5jZWxPdGhlckJ1bGtQdWJsaXNoIiwiY2xvc2VDYW5jZWxDb25maXJtYXRpb25Nb2RhbCIsInNldENhbmNlbGxhdGlvbk1lc3NhZ2UiLCJzaG93Q2FuY2VsbGVkRGV0YWlsUG9wdXAiLCJtc2ciLCJjbG9zZUNhbmNlbGxlZERldGFpbHNQb3B1cCIsInB1Ymxpc2hBZnRlckNhbmNlbCIsIlZhbGlkYXRpb25FcnJvcnMiLCJQYWdlTG9hZGVyIiwiQnVsa1B1Ymxpc2hpbmdFcnJvclBvcHVwIiwiY2xhc3NOYW1lMiIsIkVycm9ySXRlbV92dWVfMSIsImNyaXRpY2FsTWVzc2FnZSIsIndhcm5pbmdNZXNzYWdlIiwibm9FcnJvck1lc3NhZ2UiLCJFcnJvckl0ZW0iLCJmb3JtYXREYXRlIiwiZGF0ZUZvcm1hdF8xIiwiZGF0ZUZvcm1hdCIsInJvdW5kRmxvYXQiLCJudW0iLCJwYXJzZUZsb2F0IiwidG9GaXhlZCIsIkhhdmVOb3RBZGRlZFlldF92dWVfMSIsIk5vdFlldCIsInRvb2x0aXAiLCJkZWZhdWx0TGFuZ3VhZ2UiLCJyZXN1bHREYXRhIiwiY29udGVudCIsImN1cnJlbnRMYW5ndWFnZSIsIm1vbWVudCIsIlRpdGxlRWxlbWVudCIsIk1lYXN1cmUiLCJBc2NlbmRpbmciLCJBZ2dyZWdhdGlvblN0YXR1cyIsIkRlc2NyaXB0aW9uIiwiUmVmZXJlbmNlIiwiQmFzZWxpbmUiLCJEb2N1bWVudExpbmsiLCJQZXJpb2QiLCJyZXN1bHRUaXRsZSIsImluZGljYXRvciIsInBlcmlvZCIsImVsZW1lbnQiLCJsaW5rQ2xhc3NlcyIsImluZGljYXRvckRhdGEiLCJwZXJpb2REYXRhIiwicGFyZW50RGF0YSIsInJlc3VsdF9pZCIsImFjdGl2aXR5TGluayIsInJlc3VsdElkIiwiYWN0aXZpdHlUaXRsZSIsInJlc3VsdFRpdGxlZCIsInJlc3VsdExpbmsiLCJpbmRpY2F0b3JMaW5rIiwiaW5kaWNhdG9yVGl0bGUiLCJjb3VudERvY3VtZW50TGluayIsIkRlbGV0ZUFjdGlvbl92dWVfMSIsIkRlbGV0ZUFjdGlvbiIsImluZGljYXRvcnMiLCJpbmRpY2F0b3JzRGF0YSIsImhhbmRsZU5hdmlnYXRlIiwiZmV0Y2hMaXN0aW5ncyIsIm1ldGhvZHMiLCJzbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZSIsImNyZWF0ZUNhcGl0YWxpemVkU2VudGVuY2UiLCJzdGF0dXNEYXRhIiwiYmFzZVR5cGUiLCJlbGVtZW50U3BhY2luZyIsImJhc2VsaW5lIiwibG9jYXRpb25zIiwicmVmZXJlbmNlIiwibGFzdExvY2F0aW9uIiwiZGltZW5zaW9ucyIsIm1pc3NpbmciLCJkZXNjVHlwZSIsImRlc2NyaXB0aW9uRGF0YSIsImFsaWdubWVudCIsImRsRGF0YSIsIm1lYXN1cmVUeXBlIiwibWVhc3VyZURhdGEiLCJyZWZUeXBlIiwicmVmRGF0YSIsInRpdGxlVHlwZSIsInRpdGxlRGF0YSIsImNvcmVFbGVtZW50c18xIiwiZHJvcGRvd24iLCJkcm9wZG93bkJ0biIsInNlYXJjaEJ0blZhbHVlIiwic2VhcmNoQnRuVG9nZ2xlIiwiZWxlbWVudEljb25zIiwibm90X2NvbXBsZXRlZCIsImNvcmUiLCJmaWx0ZXJlZEVsZW1lbnRzIiwianVzdFN0cmluZ3MiLCJhY3Rpdml0eUNvcmVFbGVtZW50cyIsImRyb3Bkb3duRmlsdGVyIiwiY29udGFpbnMiLCJnZXRMaW5rIiwiaGFzX2RhdGEiLCJFbGVtZW50U3RhdHVzX3Z1ZV8xIiwid2FybmluZ0luZm9UZXh0IiwibGF5b3V0IiwiZGVsZXRlQWN0aXZpdHlFbGVtZW50IiwiZGVsZXRlRWxlbWVudCIsInNjcm9sbFRvIiwiQWN0aXZpdHlEYXRlIiwiQ29uZGl0aW9ucyIsIkNvbnRhY3RJbmZvIiwiSHVtYW5pdGFyaWFuU2NvcGUiLCJJYXRpSWRlbnRpZmllciIsIkxlZ2FjeURhdGEiLCJMb2NhdGlvbiIsIk90aGVySWRlbnRpZmllciIsIlBhcnRpY2lwYXRpbmdPcmciLCJQbGFubmVkRGlzYnVyc2VtZW50IiwiUG9saWN5TWFya2VyIiwiUmVjaXBpZW50Q291bnRyeSIsIlJlY2lwaWVudFJlZ2lvbiIsIlJlbGF0ZWRBY3Rpdml0eSIsIlJlcG9ydGluZ09yZ2FuaXphdGlvbiIsIlNlY3RvciIsIlRhZyIsIlRyYW5zYWN0aW9ucyIsIlN0YXR1cyIsImlzVmlzaWJsZSIsIm1vZGVsVmlzaWJsZSIsInRvZ2dsZU1vZGVsIiwidG9hc3RtZXNzYWdlVHlwZSIsInNob3dFcnJvcnBvcHVwIiwiZG93bmxvYWRpbmdCYWNrZ3JvdW5kTWVzc2FnZSIsImRvd25sb2FkaW5nSW5Qcm9jZXNzIiwiZG93bmxvYWRFcnJvciIsImZpbGVuYW1lIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwicmVtb3ZlQ2hpbGQiLCJkb3dubG9hZEFueXdheSIsImRvd25sb2FkRXJyb3J4bWwiLCJjb3VudEFjdGl2aXRpZXMiLCJxdWVyeVBhcmFtZXRlcnMiLCJhZGRRdWVyeVBhcmFtcyIsImRvd25sb2FkIiwiZG93bmxvYWRYbWwiLCJ4bWxfZXJyb3IiLCJkb3dubG9hZFhscyIsImRvd25sb2FkQ3N2IiwiQWRkQWN0aXZpdHlCdXR0b25fdnVlXzEiLCJBY3Rpdml0eUJ1dHRvbiIsImRpc21pc3MiLCJEb3dubG9hZEFjdGl2aXR5QnV0dG9uX3Z1ZV8xIiwiUmVmcmVzaFRvYXN0X3Z1ZV8xIiwiUHVibGlzaFNlbGVjdGVkX3Z1ZV8xIiwiRG93bmxvYWRBY3Rpdml0eUJ1dHRvbiIsIkFkZEFjdGl2aXR5QnV0dG9uIiwiUmVmcmVzaFRvYXN0TWVzc2FnZSIsIlB1Ymxpc2hTZWxlY3RlZCIsInNlbGVjdEFsbFZhbHVlIiwic2VsZWN0QWxsVG9nZ2xlIiwiZnJvbU5vdyIsInRvZ2dsZVNlbGVjdEFsbCIsImRhdHVtIiwicXVlcnkiLCJkaXJlY3Rpb24iLCJzb3J0aW5nRGlyZWN0aW9uIiwic29ydEJ5UHVibGlzaGluZ1Byb2dyZXNzIiwic29ydEJ5RGF0ZVVybCIsIlRhcmdldFZhbHVlIiwiQWN0dWFsVmFsdWUiLCJpbmRpY2F0b3JJZCIsInBlcmlvZExpbmsiLCJwZXJpb2RzRGF0YSIsImRsVHlwZSIsImFjdHVhbFZhbHVlIiwiZ2V0TG9jYXRpb24iLCJ0YXJnZXRWYWx1ZSIsIlJlc3VsdEVsZW1lbnRfdnVlXzEiLCJJbmRpY2F0b3JfdnVlXzEiLCJSZXN1bHRFbGVtZW50IiwiSW5kaWNhdG9yIiwiaGFzSW5kaWNhdG9ycyIsInJlc3VsdHNEYXRhIiwiVGl0bGVEZXNjcmlwdGlvbiIsIlJlc3VsdFR5cGUiLCJlbGVtZW50TmFtZSIsImVkaXRVcmwiLCJlbGVtZW50RGF0YSIsInJlc3VsdFR5cGUiLCJyZXN1bHRWb2NhYnVsYXJ5IiwidG9vbFRpcCIsInJldmVyc2UiLCJyZWZlcmVuY2VEYXRhIiwidHlwZURhdGEiLCJ0ZERhdGEiLCJUcmFuc2FjdGlvbkVsZW1lbnRfdnVlXzEiLCJUcmFuc2FjdGlvbkVsZW1lbnQiLCJ0cmFuc2FjdGlvbiIsInRyYW5zYWN0aW9uRGF0YSIsInRyYW5zYWN0aW9uTGluayIsImlzTWFuZGF0b3J5SWNvbiIsInIiLCJBaWRUeXBlIiwiVHJhbnNhY3Rpb25UeXBlIiwiVHJhbnNhY3Rpb25EYXRlIiwiVmFsdWUiLCJQcm92aWRlck9yZ2FuaXphdGlvbiIsIlJlY2VpdmVyT3JnYW5pemF0aW9uIiwiRGlzYnVyc2VtZW50Q2hhbm5lbCIsIkZsb3dUeXBlIiwiRmluYW5jZVR5cGUiLCJUaWVkU3RhdHVzIiwiZ2V0TGFuZ3VhZ2VzIiwiZW50cnkiLCJ0cmFuc2FjdGlvbnNEYXRhIiwiYXREYXRhIiwiY29kZSIsImZpbmFuY2VEYXRhIiwiZmxvd0RhdGEiLCJQb0RhdGEiLCJjb3VudHJ5Iiwic2VjdG9yIiwidHNEYXRhIiwiYXVkaXREYXRhIiwiZmV0Y2hBdWRpdExpc3QiLCJyb3V0ZSIsInBhcmFtcyIsImxhYmVscyIsInJvdW5kZWRMYWJlbHMiLCJzaG93R3JhcGhMb2FkZXIiLCJncmFwaEFtb3VudCIsInlheGlzVGlja3MiLCJtYXhWYWx1ZSIsImNoYXJ0IiwiZ3JhcGhDb2xvciIsInRvb2x0aXBUZXh0IiwiY2hhcnRPcHRpb25zIiwiaGVpZ2h0Iiwib2Zmc2V0WSIsInpvb20iLCJlbmFibGVkIiwib3B0aW9ucyIsInhheGlzIiwicGFkZGluZyIsInRvb2xiYXIiLCJtYXJrZXJzIiwic2l6ZSIsInN0cm9rZVdpZHRoIiwiY29sb3JzIiwiaG92ZXIiLCJzdHJva2UiLCJjdXJ2ZSIsImN1c3RvbSIsInNlcmllcyIsInNlcmllc0luZGV4IiwiZGF0YVBvaW50SW5kZXgiLCJ3IiwiZ2V0RGF5IiwiZm9ybWF0dGVkRGF0ZSIsImdsb2JhbHMiLCJjYXRlZ29yeUxhYmVscyIsInRpY2tBbW91bnQiLCJyb3RhdGUiLCJ5YXhpcyIsIm1pbiIsIm1heCIsImZvcm1hdHRlciIsInlBeGlzU2NhbGUiLCJNYXRoIiwicm91bmQiLCJUYWJsZUxvYWRlckNvbXBvbmVudF92dWVfMSIsInRhYmxlRGF0YSIsInRhYmxlSGVhZGVyIiwiYWN0aXZpdHlOYXZMaXN0IiwiYXBpUGFyYW1zIiwicHVibGlzaGVyTmF2TGlzdCIsImN1cnJlbnRwYWdlIiwicmVzZXRwYWdpbmF0aW9uIiwib3JkZXJCeSIsInNvcnQiLCJzb3J0RWxlbWVudCIsInVzZXJOYXZsaXN0IiwiY3VycmVudEl0ZW0iLCJjdXJyZW50TmF2TGlzdCIsImZldGNoVGFibGVEYXRhIiwic29ydFRhYmxlIiwidHJpZ2dlcnBhZ2luYXRpb24iLCJhY3RpdmVDbGFzcyIsIk5hdmlnYXRlV2l0aEZpbHRlciIsInRhYkNoYW5nZSIsInRvZ2dsZVNvcnQiLCJvcmRlciIsImNvbXBsZXRlTmVzcyIsInJlZ2lzdHJhdGlvblR5cGUiLCJzaG93VGFibGVMb2FkZXIiLCJ0cnVuY2F0ZVRleHQiLCJUYWJsZUxvYWRlckNvbXBvbmVudCIsIkRhc2hib2FyZFN0YXRzU2VjdGlvbl92dWVfMSIsIkRhc2hib2FyZExpc3RTZWN0aW9uX3Z1ZV8xIiwiRGF0ZVJhbmdlV2lkZ2V0X3Z1ZV8xIiwib2xkZXN0RGF0ZXMiLCJjdXJyZW50TmF2IiwiRGF0ZUxhYmVsIiwiZ3JhcGhUb3RhbCIsInB1Ymxpc2hlciIsImhhbmRsZUNoYW5nZVRhYmxlTmF2Iiwic2V0RGF0ZVJhbmdlRGF0ZSIsImZldGNoR3JhcGhEYXRhIiwiZG93bmxvYWRSZXBvcnQiLCJhcHBlbmQiLCJncmFwaERhdGFGb3JtYXR0ZXIiLCJncmFwaERhdGEiLCJ4Iiwic3RhcnQiLCJlbmQiLCJhY3RpdmVUYWIiLCJrZWJhYkNhc2VUb1NuYWtlY2FzZSIsImNvZGVMaXN0Iiwib2JqZWN0TGVuZ3RoIiwicGFnaW5hdGVkRGF0YSIsIml0ZW1JblBhZ2luYXRlZERhdGEiLCJwdWJsaXNoZXJUeXBlS2V5IiwidG90YWwiLCJEYXNoYm9hcmRTdGF0c1NlY3Rpb24iLCJEYXNoYm9hcmRMaXN0U2VjdGlvbiIsIkRhdGVSYW5nZVdpZGdldCIsIkJ1dHRvbkNvbXBvbmVudCIsIkRhc2hib2FyZEdyYXBoX3Z1ZV8xIiwiaW5hY3RpdmVQdWJsaXNoZXIiLCJwdWJsaXNoZXJXaXRob3V0QWN0aXZpdHkiLCJsYXN0UmVnaXN0ZXJlZCIsImxhc3RVcGRhdGVkUHVibGlzaGVyIiwibGFzdFVwZGF0ZWRBY3Rpdml0eSIsInNob3dTdGF0c0xvYWRlciIsInB1Ymxpc2hlclN0YXRzIiwic2hvd1B1Ymxpc2hlclN0YXRzIiwidXNlcklkIiwiZmV0Y2hTdGF0c0RhdGEiLCJwcm94eVVzZXIiLCJsYXN0UmVnaXN0ZXJlZFB1Ymxpc2hlciIsInVzZXJfaWQiLCJpbkFjdGl2ZVB1Ymxpc2hlciIsIkRhc2hib2FyZEdyYXBoIiwiZmlsZSIsInVwbG9hZEZpbGUiLCJmaWxlcyIsImNvbmZpZyIsIkZvcm1EYXRhIiwiZG93bmxvYWRFeGNlbCIsInhsc0luZGljYXRvck1vdW50ZWQiLCJ1cGxvYWRUeXBlIiwic2hvd0Rvd25sb2FkRHJvcGRvd24iLCJzaG93RG93bmxvYWRDb2RlIiwic2hvd0NhbmNlbE1vZGVsIiwiZG93bmxvYWRDb2RlIiwicmVxIiwiY2FuY2VsVXBsb2FkIiwiY2FuY2VsSW1wb3J0IiwiaW1wb3J0QW55d2F5Iiwic2VsZWN0QWxsIiwieGxzVHlwZSIsIl9sIiwiX20iLCJJbXBvcnRQbGFjZWhvbGRlcl92dWVfMSIsIkxpc3RFbGVtZW50X3Z1ZV8xIiwic2VsZWN0ZWRDb3VudCIsImFjdGl2aXRpZXNMZW5ndGgiLCJ0YWJsZVJvdyIsInRhYmxlV2lkdGgiLCJ0aW1lciIsImdldERpbWVuc2lvbnMiLCJuZXh0VGljayIsImNsaWVudFdpZHRoIiwidXBkYXRlU2VsZWN0ZWRBY3Rpdml0aWVzIiwic3BsaWNlIiwic2VsZWN0QWxsQWN0aXZpdGllcyIsImltcG9ydEFjdGl2aXRpZXMiLCJmaWxldHlwZSIsIlBsYWNlaG9sZGVyIiwiTGlzdEVsZW1lbnQiLCJTaGltbWVyIiwidG9nZ2xlRXJyb3IiLCJzZWxlY3RFbGVtZW50Iiwic2VsZWN0ZWREYXRhIiwiWGxzTGlzdEVycm9yX3Z1ZV8xIiwiZ2xvYmFsRXJyb3IiLCJzb3J0T3JkZXIiLCJzaG93Q3JpdGljYWxFcnJvck1vZGVsIiwic2hvd0lkZW50aWZpZXJFcnJvck1vZGVsIiwic2hvd0NyaXRpY2FsRXJyb3JNZXNzYWdlIiwic2hvd0dMb2JhbEVycm9yIiwic29ydGVkRGF0YSIsImEiLCJiIiwiY2hlY2tDcml0aWNhbEVycm9yIiwiZG93bmxvYWRJZGVudGlmaWVyRXJyb3IiLCJGaWxlIiwiYW5jaG9yVGFnIiwicmV2b2tlT2JqZWN0VVJMIiwiY3JpdGljYWxBcnJ5IiwidG90YWxDcmlyaWNhbEVycm9yQ291bnQiLCJhZGRBY3Rpdml0aWVzIiwiWGxzTGlzdEVycm9yIiwiT3JnYW5pc2F0aW9uRWxlbWVudHNfdnVlXzEiLCJPcmdhbmlzYXRpb25FbGVtZW50c0RldGFpbF92dWVfMSIsIk9yZ2FuaXphdGlvblB1Ymxpc2hVbnB1Ymxpc2hCdXR0b25fdnVlXzEiLCJPcmdhbmlzYXRpb25FbGVtZW50cyIsIk9yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsIiwiUHVibGlzaFVucHVibGlzaCIsIm1hbmRhdG9yeUNvbXBsZXRlZCIsInVzZXJSb2xlIiwib3JnYW5pemF0aW9uUHJvcHMiLCJvcmdhbml6YXRpb25EYXRhIiwicHVibGlzaE1lc3NhZ2UiLCJtYW5kYXRvcnkiLCJvcmdNYW5kYXRvcnlFbGVtZW50cyIsInJlcGxhY2VVbmRlcnNjb3JlIiwic3RyaW5nIiwicmVnZXgiLCJSZXBvcnRpbmdPcmdhbmlzYXRpb24iLCJUb3RhbEJ1ZGdldCIsIlJlcG9ydGluZ09yZ0J1ZGdldCIsIlJlcG9ydGluZ1JlZ2lvbkJ1ZGdldCIsIlJlY2lwaWVudENvdW50cnlCdWRnZXQiLCJUb3RhbEV4cGVuZGl0dXJlIiwiZW1haWwiLCJlbWFpbEVycm9yIiwicmVxdWVzdCIsInJlc3BvbnNlVVJMIiwiZW5jcnlwdGlvbl8xIiwidG9rZW4iLCJwYXNzd29yZCIsInBhc3N3b3JkX2NvbmZpcm1hdGlvbiIsImZvcm0iLCJwcm9jZXNzIiwiZW52IiwiTUlYX0VOQ1JZUFRJT05fS0VZIiwic3RvcmVfMSIsImFjdGlvbnNfMSIsImRlZmF1bHRDb2xsYWJvcmF0aW9uVHlwZSIsImRlZmF1bHRGbG93VHlwZSIsImRlZmF1bHRGaW5hbmNlVHlwZSIsImRlZmF1bHRBaWRUeXBlIiwiZGVmYXVsdFRpZWRTdGF0dXMiLCJkZWZhdWx0Rm9ybSIsImRlZmF1bHRFcnJvciIsInVwZGF0ZVN0b3JlIiwiQWN0aW9uVHlwZXMiLCJVUERBVEVfREVGQVVMVF9WQUxVRVMiLCJTZXR0aW5nRGVmYXVsdEZvcm1fdnVlXzEiLCJTZXR0aW5nUHVibGlzaGluZ0Zvcm1fdnVlXzEiLCJTZXR0aW5nRGVmYXVsdEZvcm0iLCJTZXR0aW5nUHVibGlzaGluZ0Zvcm0iLCJ0YWIiLCJwdWJsaXNoaW5nRm9ybSIsInB1Ymxpc2hpbmdJbmZvIiwicHVibGlzaGluZ0Vycm9yIiwic2V0dGluZ0RhdGEiLCJwdWJsaXNoZXJJbmZvIiwiYWN0aXZpdHlWYWx1ZXMiLCJkZWZhdWx0X3ZhbHVlcyIsInB1Ymxpc2hpbmdfaW5mbyIsImFjdGl2aXR5X2RlZmF1bHRfdmFsdWVzIiwiYXBpX3Rva2VuIiwidG9nZ2xlVGFiIiwic3VibWl0RGVmYXVsdCIsImhpZXJhcmNoaWFsIiwic3VibWl0UHVibGlzaGluZyIsInB1Ymxpc2hlcl92ZXJpZmljYXRpb24iLCJ0b2tlbl92ZXJpZmljYXRpb24iLCJhdXRvVmVyaWZ5IiwiVVBEQVRFX1BVQkxJU0hJTkdfRk9STSIsIlRhYmxlTGlzdF92dWVfMSIsImNvdW50cmllcyIsInNldHVwQ29tcGxldGVuZXNzIiwicmVnaXN0cmF0aW9uVHlwZXMiLCJwdWJsaXNoZXJUeXBlcyIsImRhdGFMaWNlbnNlcyIsIlRhYmxlTGlzdCIsImxhbmdfMSIsInBocERlcGVuZGVuY2llcyIsIm5vZGVEZXBlbmRlbmNpZXMiLCJwYWNrYWdlTWFuYWdlclZlcnNpb24iLCJsYXRlc3RNYW5hZ2VyVmVyc2lvbiIsImdldFN0YXR1c0NsYXNzIiwidXBkYXRlU3RhdHVzIiwiZ2V0U3RhdHVzTWVzc2FnZSIsInJlc29sdmVMYXRlc3RWZXJzaW9uIiwiZ2V0SW5kZXgiLCJwYXJzZUludCIsIm9yZ2FuaXphdGlvbk5hbWUiLCJzd2l0Y2hCYWNrIiwiTXVsdGlTZWxlY3RXaXRoU2VhcmNoX3Z1ZV8xIiwiZ2V0Q291bnRyaWVzV2l0aFByZWZpeCIsInJldHVyblZhbHVlRm9yQ291bnRyaWVzIiwiY291bnRyeUNvZGVzIiwiY291bnRyaWVzV2l0aFByZWZpeCIsIm9yZ2FuaXNhdGlvbkRhdGEiLCJtdWx0aXNlbGVjdFN0eWxlIiwicHVibGlzaGVyX3R5cGUiLCJkYXRhX2xpY2Vuc2UiLCJjb21wbGV0ZW5lc3MiLCJyZWdpc3RyYXRpb25fdHlwZSIsInN0YXJ0X2RhdGUiLCJlbmRfZGF0ZSIsImRhdGVfdHlwZSIsInNlbGVjdGVkX2RhdGVfZmlsdGVyIiwicmVzZXRQYWdpbmF0aW9uIiwidG90YWxPcmdhbmlzYXRpb24iLCJyZWdpc3RyeUFwaUtleVN0YXR1cyIsImRlZmF1bHRWYWx1ZVN0YXR1cyIsInNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2giLCJjcmVhdGVkX2F0IiwibGFzdF9sb2dnZWRfaW4iLCJzb3J0UGFyYW1zIiwicm90YXRlQ2xhc3MiLCJjbG9zZVB1Ymxpc2hlck1vZGVsIiwiY2xlYXJEYXRlRmlsdGVyIiwiZ2VuZXJhdGVMYWJlbCIsImZpbHRlclBhcmFtcyIsImdldEZpbHRlclBhcmFtc0Zyb21QcmV2aW91c1BhZ2UiLCJmZXRjaE9yZ2FuaXNhdGlvbiIsInF1ZXJ5UGFyYW1zSW5LZXlWYWwiLCJxdWVyeVBhcmFtcyIsImlzRmlsdGVyQXBwbGllZCIsImZpbHRlcktleSIsInJlZnJlc2hTdGF0dXNBcnJheXMiLCJkZWZhdWx0U29ydERpcmVjdGlvbiIsInNvcnREaXJlY3Rpb24iLCJvcmRlclR5cGUiLCJzb3J0QnkiLCJyZXNldEFsbEZpbHRlcnMiLCJvcmdEYXRhIiwib3JnRGF0dW0iLCJzZXR0aW5ncyIsImNoZWNrSWZEZWZhdWx0VmFsdWVzQXJlVmFsaWQiLCJhY3Rpdml0eURlZmF1bHRWYWx1ZXMiLCJzZWxlY3RlZERhdGVGaWx0ZXIiLCJzZXREYXRlVHlwZSIsInRvZ2dsZVNob3dNdWx0aVNlbGVjdCIsInJlY3QiLCJzZXRTZWxlY3RlZFB1Ymxpc2hlciIsInNob3dNYXBwZWREYXRhIiwibGljZW5zZSIsInRyaW0iLCJNdWx0aVNlbGVjdFdpdGhTZWFyY2giLCJvcmdhbml6YXRpb25zIiwicm9sZXMiLCJxIiwiYWRkVXNlckZvcm0iLCJlZGl0VXNlckZvcm0iLCJ1c2Vyc0RhdGEiLCJhbGxTZWxlY3RlZCIsImRlbGV0ZU1vZGFsIiwiZGVsZXRlSWQiLCJ0b3RhbFVzZXIiLCJzdGF0dXNJZCIsInN0YXR1c01vZGFsIiwic3RhdHVzVmFsdWUiLCJzdGF0dXNVc2VybmFtZSIsImRlbGV0ZVVzZXJuYW1lIiwiZmV0Y2hpbmdUYWJsZURhdGEiLCJzZWxlY3RlZElkcyIsImNoZWNrbGlzdCIsImN1cnJlbnRwYWdlRGF0YSIsImVkaXRVc2VySWQiLCJ1c2VybmFtZSIsImZ1bGxfbmFtZSIsInJvbGVfaWQiLCJmb3JtRXJyb3IiLCJjbGVhckRhdGVSYW5nZUZpbHRlciIsInJvbGUiLCJ0ZXh0QnViYmxlZGF0YSIsImZpZWxkIiwiY2xlYXJGaWx0ZXIiLCJjcmVhdGVVc2VyIiwicGFzc3dvcmREYXRhIiwic2V0Rm9ybUVycm9yIiwiZmV0Y2hVc2Vyc0xpc3QiLCJlbXB0eUZvcm1EYXRhIiwiZWRpdFVzZXIiLCJvcGVuU3RhdHVzTW9kZWwiLCJ1cGRhdGVVc2VyIiwicGF0Y2giLCJmaWx0ZXJfa2V5Iiwib3BlbkRlbGV0ZW1vZGVsIiwiZGVsZXRlVXNlciIsInRvZ2dsZVVzZXJTdGF0dXMiLCJ0b2dnbGVTZWxlY3RhbGwiLCJlbCIsImRvd25sb2FkQWxsIiwiYWxsUGFnZVNlbGVjdGVkIiwiZmxhdCIsIlBvcHVwTW9kYWwiLCJsYW5ndWFnZVByZWZlcmVuY2UiLCJlZGl0UHJvZmlsZUZvcm0iLCJlZGl0UGFzc3dvcmRGb3JtIiwic2hvd0N1cnJlbnRQYXNzd29yZCIsInNob3dOZXdQYXNzd29yZCIsInNob3dDb25maXJtUGFzc3dvcmQiLCJ1c2VyRGF0YSIsInVzZXJfcm9sZSIsImxhbmd1YWdlX3ByZWZlcmVuY2UiLCJlcnJvckZvcm1EYXRhIiwiY3VycmVudF9wYXNzd29yZCIsImVycm9yUGFzc3dvcmREYXRhIiwidXBkYXRlUGFzc3dvcmQiLCJwYXNzd29yZEZvcm1EYXRhIiwiZm9ybV90eXBlIiwidXBkYXRlUHJvZmlsZSIsIkVtYWlsVmVyaWZpY2F0aW9uX3Z1ZV8xIiwiRW1haWxWZXJpZmljYXRpb24iLCJwdWJsaXNoZXJFeGlzdHMiLCJ0ZXh0YXJlYSIsInB1Ymxpc2hlcl9uYW1lIiwicHVibGlzaGVyX2lkIiwicmVnaXN0cmF0aW9uX2FnZW5jeSIsInJlZ2lzdHJhdGlvbl9udW1iZXIiLCJpZGVudGlmaWVyIiwibGljZW5zZV9pZCIsImltYWdlX3VybCIsImNvbnRhY3RfZW1haWwiLCJ3ZWJzaXRlIiwiYWRkcmVzcyIsInNvdXJjZSIsInJlY29yZF9leGNsdXNpb25zIiwiaWF0aUVycm9yIiwicmVzaXplIiwic2Nyb2xsSGVpZ2h0IiwiYWdlbmNpZXMiLCJyZWdpc3RyYXRpb25BZ2VuY3kiLCJ1bmNhdGVnb3JpemVkXzEiLCJzdGFydHNXaXRoIiwic29tZSIsImlzVGV4dEZpZWxkIiwiZmllbGRUeXBlIiwiZmllbGROYW1lIiwiY2hlY2tTdGVwIiwiZm9ybVN0ZXAiLCJyZWdpc3RlckZvcm0iLCJyZWdpc3RlclRleHQiLCJpc19jb21wbGV0ZSIsImhvdmVyX3RleHQiLCJmaWVsZHMiLCJwbGFjZWhvbGRlciIsImhlbHBfdGV4dCIsInB1Ymxpc2hlclR5cGUiLCJkYXRhTGljZW5zZSIsInVwZGF0ZVZhbGlkYXRpb25FcnJvcnMiLCJlcnJvclJlc3BvbnNlIiwiY2xlYW5WYWxpZGF0aW9uRXJyb3JzIiwidXBkYXRlRXJyb3JzIiwiZXZlcnkiLCJjbGVhbklhdGlFcnJvcnMiLCJ2ZXJpZnlQdWJsaXNoZXIiLCJ1cGRhdGVTdGVwIiwidmVyaWZ5Q29udGFjdEluZm9ybWF0aW9uIiwidmVyaWZ5QWRkaXRpb25hbEluZm9ybWF0aW9uIiwiZ2V0Q3VycmVudFN0ZXAiLCJjdXJyZW50X3N0ZXAiLCJnb1RvTmV4dEZvcm0iLCJnb1RvUHJldmlvdXNGb3JtIiwiZG93bmxvYWRNYW51YWwiLCJvcmlnaW4iLCJ0cmlnZ2VyTW9kZWwiLCJhZ2VuY3kiLCJvcmdhbml6YXRpb25fcmVnaXN0cmF0aW9uX2FnZW5jeSIsIm9yZ2FuaXphdGlvbl9yZWdpc3RyYXRpb25fbm8iLCJpYXRpX29yZ2FuaXphdGlvbmFsX2lkZW50aWZpZXIiLCJjb25maXJtX3Bhc3N3b3JkIiwidXBkYXRlRm9ybUVycm9ycyIsImVycktleSIsImludGVudCIsImxvZ2luIiwiTmF2RHJvcGRvd25fdnVlXzEiLCJOYXZEcm9wZG93biIsImF1dGgiLCJyZW5kZXIiLCJfaG9pc3RlZF8xIiwiX2hvaXN0ZWRfMiIsIl9ob2lzdGVkXzMiLCJfaG9pc3RlZF80IiwiY3JlYXRlRWxlbWVudFZOb2RlIiwiX2hvaXN0ZWRfNSIsIl9ob2lzdGVkXzYiLCJfaG9pc3RlZF83IiwiX2hvaXN0ZWRfOCIsIl9ob2lzdGVkXzkiLCJfaG9pc3RlZF8xMCIsIl9jdHgiLCJfY2FjaGUiLCIkcHJvcHMiLCIkc2V0dXAiLCIkZGF0YSIsIiRvcHRpb25zIiwiX2NvbXBvbmVudF9zdmdfdnVlIiwicmVzb2x2ZUNvbXBvbmVudCIsIm9wZW5CbG9jayIsImNyZWF0ZUVsZW1lbnRCbG9jayIsIkZyYWdtZW50Iiwib25DbGljayIsImNyZWF0ZVZOb2RlIiwiY3JlYXRlQ29tbWVudFZOb2RlIiwibm9ybWFsaXplU3R5bGUiLCIkZXZlbnQiLCJ0b0Rpc3BsYXlTdHJpbmciLCJjcmVhdGVCbG9jayIsIndpdGhDdHgiLCJfd2l0aFNjb3BlSWQiLCJwdXNoU2NvcGVJZCIsInBvcFNjb3BlSWQiLCJfaG9pc3RlZF8xMSIsIl9ob2lzdGVkXzEyIiwiX2hvaXN0ZWRfMTMiLCJfaG9pc3RlZF8xNCIsIl9ob2lzdGVkXzE1IiwiX2hvaXN0ZWRfMTYiLCJfaG9pc3RlZF8xNyIsIl9ob2lzdGVkXzE4IiwiX2hvaXN0ZWRfMTkiLCJfaG9pc3RlZF8yMCIsIl9ob2lzdGVkXzIxIiwiX2hvaXN0ZWRfMjIiLCJfaG9pc3RlZF8yMyIsIl9ob2lzdGVkXzI0IiwiX2hvaXN0ZWRfMjUiLCJfaG9pc3RlZF8yNiIsIl9ob2lzdGVkXzI3IiwiX2hvaXN0ZWRfMjgiLCJfaG9pc3RlZF8yOSIsIl9ob2lzdGVkXzMwIiwiX2hvaXN0ZWRfMzEiLCJfaG9pc3RlZF8zMiIsIl9ob2lzdGVkXzMzIiwiX2hvaXN0ZWRfMzQiLCJfaG9pc3RlZF8zNSIsIl9ob2lzdGVkXzM2IiwiX2hvaXN0ZWRfMzciLCJfaG9pc3RlZF8zOCIsIl9ob2lzdGVkXzM5Iiwibm9ybWFsaXplQ2xhc3MiLCJyZW5kZXJMaXN0IiwibmF2X19wb2ludGVyIiwibG9nVGV4dCIsInJlZl9mb3IiLCJjcmVhdGVUZXh0Vk5vZGUiLCJ3aXRoRGlyZWN0aXZlcyIsIm9uS2V5dXAiLCJ3aXRoS2V5cyIsInZNb2RlbFRleHQiLCJvbkNsb3NlIiwib25DbG9zZU1vZGFsIiwib25Ub2FzdCIsImJjIiwiZCIsIiRlbWl0IiwiZGlzYWJsZWQiLCJ2U2hvdyIsImVtcHR5IiwibW9kZWxWYWx1ZSIsImNsZWFyYWJsZSIsInRlbGVwb3J0Iiwib25PcGVuIiwib25DbGVhcmVkIiwieWVhcmx5IiwicHJlc2V0RGF0ZVJhbmdlIiwiYWN0aW9uIiwidGFiaW5kZXgiLCJjb2xzIiwicm93cyIsImNyZWF0ZVN0YXRpY1ZOb2RlIiwiYXMiLCJlbnRlciIsImxlYXZlIiwiaW5uZXJIVE1MIiwib25JbnB1dCIsInZNb2RlbENoZWNrYm94IiwiVGVsZXBvcnQiLCJ0byIsIlRyYW5zaXRpb24iLCJhcmdzIiwicmVuZGVyU2xvdCIsIiRzbG90cyIsIl9jb21wb25lbnRfcmFkaWFsX3Byb2dyZXNzX2JhciIsImRpYW1ldGVyIiwicm93IiwiY29sIiwibSIsImVsZV9lcnIiLCJ0cnVuYyIsIm9uVG9nZ2xlIiwib25SZXNldCIsImlhdGlfcGF0aCIsIl9jb21wb25lbnRfQnRuIiwiX2NvbXBvbmVudF9CcmVhZGNydW1iIiwiZXJyb3JJbmRleCIsImVycm9yTGlzdCIsImxpc3RJbmRleCIsIl9jb21wb25lbnRfSG92ZXJUZXh0Iiwic2VhcmNoYWJsZSIsIl9ob2lzdGVkXzQwIiwiX2hvaXN0ZWRfNDEiLCJfaG9pc3RlZF80MiIsIl9ob2lzdGVkXzQzIiwiX2hvaXN0ZWRfNDQiLCJfaG9pc3RlZF80NSIsIl9ob2lzdGVkXzQ2IiwiX2hvaXN0ZWRfNDciLCJfaG9pc3RlZF80OCIsIl9ob2lzdGVkXzQ5IiwiX2hvaXN0ZWRfNTAiLCJfaG9pc3RlZF81MSIsIl9ob2lzdGVkXzUyIiwiX2hvaXN0ZWRfNTMiLCJfaG9pc3RlZF81NCIsIl9ob2lzdGVkXzU1IiwiX2hvaXN0ZWRfNTYiLCJfaG9pc3RlZF81NyIsIl9ob2lzdGVkXzU4IiwiX2hvaXN0ZWRfNTkiLCJfaG9pc3RlZF82MCIsIl9ob2lzdGVkXzYxIiwiX2hvaXN0ZWRfNjIiLCJfaG9pc3RlZF82MyIsIl9ob2lzdGVkXzY0IiwiX2hvaXN0ZWRfNjUiLCJfaG9pc3RlZF82NiIsIl9ob2lzdGVkXzY3IiwiX2NvbXBvbmVudF9Ub2FzdCIsIl9jb21wb25lbnRfRXJyb3JQb3BVcCIsIl9jb21wb25lbnRfRGVsZXRlQnV0dG9uIiwiX2NvbXBvbmVudF9VblB1Ymxpc2giLCJfY29tcG9uZW50X1B1Ymxpc2giLCJfY29tcG9uZW50X0Vycm9ycyIsIl9jb21wb25lbnRfUHJldmlvdXNseVB1Ymxpc2hlZCIsIl9jb21wb25lbnRfUHJvZ3Jlc3NCYXIiLCJfY29tcG9uZW50X0VsZW1lbnRzIiwiX2NvbXBvbmVudF9BY3Rpdml0eUVsZW1lbnQiLCJfY29tcG9uZW50X1Jlc3VsdCIsIl9kaXJlY3RpdmVfc3RpY2t5X2NvbXBvbmVudCIsInJlc29sdmVEaXJlY3RpdmUiLCJfZGlyZWN0aXZlX3Ntb290aF9zY3JvbGwiLCJvbkNsb3NlUG9wdXAiLCJ1blB1Ymxpc2hlZCIsInNob3dQdWJsaXNoZWQiLCJwdWJsaXNoRXJyb3JzIiwiYm91bmRhcnkiLCJpY29uX3NpemUiLCJ3YXJuaW5nX2luZm9fdGV4dCIsIl9jb21wb25lbnRfTG9hZGVyIiwiX2NvbXBvbmVudF9QYWdlVGl0bGUiLCJfY29tcG9uZW50X0Vycm9yTWVzc2FnZSIsIl9jb21wb25lbnRfRW1wdHlBY3Rpdml0eSIsIl9jb21wb25lbnRfVGFibGVMYXlvdXQiLCJfY29tcG9uZW50X1BhZ2luYXRpb24iLCJfY29tcG9uZW50X1hsc1VwbG9hZEluZGljYXRvciIsIm9uU2hvd09ySGlkZSIsIm9uRmV0Y2hBY3Rpdml0aWVzIiwiX2NvbXBvbmVudF9NdWx0aXNlbGVjdCIsIl9jb21wb25lbnRfQnRuQ29tcG9uZW50IiwiX2NvbXBvbmVudF9Nb2RhbCIsImVycm9yX19pbnB1dCIsImlhdGlfaWRlbnRpZmllcl90ZXh0IiwiYyIsImFjdCIsIm5vX2Vycm9ycyIsImFjdGl2aXR5RGF0ZSIsImNvbmRpdGlvbl9hdHRhY2hlZCIsImNvbmRpdGlvbiIsImNvbmRpdGlvbl90eXBlIiwiY29uZGl0aW9uVHlwZSIsImNvbnRhY3RUeXBlIiwib3JnYW5pc2F0aW9uIiwicGVyc29uX25hbWUiLCJkZXBhcnRtZW50Iiwiam9iX3RpdGxlIiwiZW1haWxfdmFsdWUiLCJ0ZWxlcGhvbmUiLCJ0ZWwiLCJtYWlsaW5nX2FkZHJlc3MiLCJhZGRyZXNzX2luZGV4IiwiZGVzY3JpcHRpb25UeXBlIiwiaHVtYW5pdGFyaWFuU2NvcGVUeXBlIiwiaHVtYW5pdGFyaWFuU2NvcGVWb2NhYnVsYXJ5Iiwidm9jYWJ1bGFyeSIsInZvY2FidWxhcnlfdXJpIiwibGVnYWN5X25hbWUiLCJpYXRpX2VxdWl2YWxlbnQiLCJsb2NhdGlvbl9yZWFjaCIsImdlb2dyYXBoaWNMb2NhdGlvblJlYWNoIiwibG9jYXRpb25faWQiLCJnZW9ncmFwaGljVm9jYWJ1bGFyeSIsImFjdGl2aXR5X2Rlc2NyaXB0aW9uIiwiYWRtaW5pc3RyYXRpdmUiLCJsZXZlbCIsInBvaW50Iiwic3JzX25hbWUiLCJwb3MiLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsImV4YWN0bmVzcyIsImdlb2dyYXBoaWNFeGFjdG5lc3MiLCJsb2NhdGlvbl9jbGFzcyIsImdlb2dyYXBoaWNMb2NhdGlvbkNsYXNzIiwiZmVhdHVyZV9kZXNpZ25hdGlvbiIsInByb3Blcl9jbGFzcyIsImxvY2F0aW9uVHlwZSIsInJlZmVyZW5jZV90eXBlIiwib3RoZXJJZGVudGlmaWVyVHlwZSIsIm93bmVyX29yZyIsInBhcnRpY2lwYXRpbmdfb3JnIiwib3JnYW5pemF0aW9uX3JvbGUiLCJvcmdhbmlzYXRpb25Sb2xlIiwib3JnYW5pemF0aW9uVHlwZSIsImNyc19jaGFubmVsX2NvZGUiLCJjcnNDaGFubmVsQ29kZSIsImJ1ZGdldFR5cGUiLCJwbGFubmVkX2Rpc2J1cnNlbWVudF90eXBlIiwiYW1vdW50IiwidG9Mb2NhbGVTdHJpbmciLCJjdXJyZW5jeSIsInZhbHVlX2RhdGUiLCJwcm92aWRlcl9vcmciLCJlbGVtZW50TGFiZWwiLCJwcm92aWRlcl9hY3Rpdml0eV9pZCIsInJlY2VpdmVyX29yZyIsInJlY2VpdmVyX2FjdGl2aXR5X2lkIiwicG9saWN5X21hcmtlcl92b2NhYnVsYXJ5IiwicG9saWN5TWFya2VyVm9jYWJ1bGFyeSIsInBvbGljeV9tYXJrZXIiLCJwb2xpY3lNYXJrZXIiLCJwb2xpY3lfbWFya2VyX3RleHQiLCJzaWduaWZpY2FuY2UiLCJwb2xpY3lTaWduaWZpY2FuY2UiLCJjb3VudHJ5X2NvZGUiLCJwZXJjZW50YWdlIiwicmVnaW9uX3ZvY2FidWxhcnkiLCJyZWdpb25Wb2NhYnVsYXJ5IiwicmVnaW9uX2NvZGUiLCJyZWdpb24iLCJjdXN0b21fY29kZSIsInJlbGF0aW9uc2hpcF90eXBlIiwicmVsYXRlZEFjdGl2aXR5VHlwZSIsInJlcG9ydGluZ19vcmciLCJzZWNvbmRhcnlfcmVwb3J0ZXIiLCJfY29tcG9uZW50X05vdFlldCIsImVsZW1lbnRGcm9tRWxlbWVudE5hbWUiLCJwZXJpb2RzIiwic2VjdG9yX3ZvY2FidWxhcnkiLCJzZWN0b3JWb2NhYnVsYXJ5Iiwic2VjdG9yQ29kZSIsImNhdGVnb3J5X2NvZGUiLCJzZWN0b3JDYXRlZ29yeSIsInNkZ19nb2FsIiwic2RnR29hbHMiLCJzZGdfdGFyZ2V0Iiwic2RnVGFyZ2V0IiwidGFnX3ZvY2FidWxhcnkiLCJ0YWdWb2NhYnVsYXJ5IiwidGFnX3RleHQiLCJnb2Fsc190YWdfY29kZSIsInRhcmdldHNfdGFnX2NvZGUiLCJ0cmFucyIsInRyYW5zYWN0aW9uVHlwZSIsInRyYW5zYWN0aW9uX3R5cGUiLCJ0cmFuc2FjdGlvbl90eXBlX2NvZGUiLCJ2YWwiLCJfY29tcG9uZW50X1RpdGxlRWxlbWVudCIsIl9jb21wb25lbnRfQXNjZW5kaW5nIiwiX2NvbXBvbmVudF9NZWFzdXJlIiwiX2NvbXBvbmVudF9BZ2dyZWdhdGlvblN0YXR1cyIsIl9jb21wb25lbnRfRGVzY3JpcHRpb24iLCJfY29tcG9uZW50X1JlZmVyZW5jZSIsIl9jb21wb25lbnRfQmFzZWxpbmUiLCJfY29tcG9uZW50X1BlcmlvZCIsIl9jb21wb25lbnRfRG9jdW1lbnRMaW5rIiwiaW5kaWNhdG9yX2NvZGUiLCJyRGF0YSIsInJpIiwiZG9jdW1lbnRfbGluayIsImFzY2VuZGluZyIsIm1lYXN1cmUiLCJpbmRpY2F0b3JNZWFzdXJlIiwiYWdncmVnYXRpb25fc3RhdHVzIiwic2NvcGUiLCJjb2xzcGFuIiwiX2NvbXBvbmVudF9EZWxldGVBY3Rpb24iLCJiYXNlIiwiZGltZW5zaW9uIiwiY29tbWVudCIsImNvbSIsIm5hIiwiY2F0ZWdvcnkiLCJjYXQiLCJkb2N1bWVudENhdGVnb3J5IiwiZG9jdW1lbnRfZGF0ZSIsImluZGljYXRvclZvY2FidWxhcnkiLCJpbmRpY2F0b3JfdXJpIiwidmlld0JveCIsImZpbGwiLCJ4bWxucyIsIl9ob2lzdGVkXzY4IiwiX2hvaXN0ZWRfNjkiLCJfaG9pc3RlZF83MCIsIl9ob2lzdGVkXzcxIiwiX2hvaXN0ZWRfNzIiLCJfaG9pc3RlZF83MyIsIl9ob2lzdGVkXzc0IiwiX2hvaXN0ZWRfNzUiLCJfaG9pc3RlZF83NiIsIl9ob2lzdGVkXzc3IiwiX2hvaXN0ZWRfNzgiLCJfaG9pc3RlZF83OSIsIl9ob2lzdGVkXzgwIiwiX2hvaXN0ZWRfODEiLCJfaG9pc3RlZF84MiIsIl9ob2lzdGVkXzgzIiwiX2hvaXN0ZWRfODQiLCJfaG9pc3RlZF84NSIsIl9ob2lzdGVkXzg2IiwiX2hvaXN0ZWRfODciLCJfaG9pc3RlZF84OCIsIl9ob2lzdGVkXzg5IiwiX2hvaXN0ZWRfOTAiLCJfaG9pc3RlZF85MSIsIl9ob2lzdGVkXzkyIiwiX2hvaXN0ZWRfOTMiLCJfaG9pc3RlZF85NCIsIl9ob2lzdGVkXzk1IiwiX2hvaXN0ZWRfOTYiLCJfaG9pc3RlZF85NyIsIl9ob2lzdGVkXzk4IiwiX2hvaXN0ZWRfOTkiLCJfaG9pc3RlZF8xMDAiLCJfaG9pc3RlZF8xMDEiLCJfaG9pc3RlZF8xMDIiLCJfaG9pc3RlZF8xMDMiLCJfaG9pc3RlZF8xMDQiLCJfaG9pc3RlZF8xMDUiLCJfaG9pc3RlZF8xMDYiLCJkZWZhdWx0X2FpZF90eXBlX3ZvY2FidWxhcnkiLCJhaWRUeXBlVm9jYWJ1bGFyeSIsImVhcm1hcmtpbmdfY2F0ZWdvcnkiLCJlYXJtYXJraW5nQ2F0ZWdvcnkiLCJlYXJtYXJraW5nX21vZGFsaXR5IiwiZWFybWFya2luZ01vZGFsaXR5IiwiY2FzaF9hbmRfdm91Y2hlcl9tb2RhbGl0aWVzIiwiY2FzaGFuZFZvdWNoZXJNb2RhbGl0aWVzIiwiZGVmYXVsdF9haWRfdHlwZSIsImFpZFR5cGUiLCJjb3VudHJ5X2J1ZGdldF92b2NhYnVsYXJ5IiwiYnVkZ2V0SWRlbnRpZmllclZvY2FidWxhcnkiLCJidWRnZXRfaXRlbSIsImJ1ZGdldElkZW50aWZpZXIiLCJidWRnZXRfdHlwZSIsImJ1ZGdldF92YWx1ZSIsImJ1ZGdldF9zdGF0dXMiLCJidWRnZXRTdGF0dXMiLCJhY3Rpdml0eVN0YXR1cyIsImFjdGl2aXR5U2NvcGUiLCJjb2xsYWJvcmF0aW9uVHlwZSIsImZsb3dUeXBlIiwidGllZFN0YXR1cyIsImZpbmFuY2VUeXBlIiwiX2NvbXBvbmVudF9DcmVhdGVNb2RhbCIsIl9jb21wb25lbnRfQWN0aXZpdHlCdXR0b24iLCJ1cGRhdGVkX2F0IiwiX2NvbXBvbmVudF9UYXJnZXRWYWx1ZSIsIl9jb21wb25lbnRfQWN0dWFsVmFsdWUiLCJwZXJpb2RfY29kZSIsImFjdHVhbCIsInBlIiwidFZhbHVlIiwiZGltIiwiX2NvbXBvbmVudF9SZXN1bHRFbGVtZW50IiwiX2NvbXBvbmVudF9JbmRpY2F0b3IiLCJyZXN1bHRfY29kZSIsIl9jb21wb25lbnRfVGl0bGVEZXNjcmlwdGlvbiIsIl9jb21wb25lbnRfUmVzdWx0VHlwZSIsImxvYyIsImwiLCJ0YXIiLCJfY29tcG9uZW50X1RyYW5zYWN0aW9uRWxlbWVudCIsIl9jb21wb25lbnRfQWlkVHlwZSIsIl9jb21wb25lbnRfVHJhbnNhY3Rpb25UeXBlIiwiX2NvbXBvbmVudF9UcmFuc2FjdGlvbkRhdGUiLCJfY29tcG9uZW50X1ZhbHVlIiwiX2NvbXBvbmVudF9Qcm92aWRlck9yZ2FuaXphdGlvbiIsIl9jb21wb25lbnRfUmVjZWl2ZXJPcmdhbml6YXRpb24iLCJfY29tcG9uZW50X0Rpc2J1cnNlbWVudENoYW5uZWwiLCJfY29tcG9uZW50X1NlY3RvciIsIl9jb21wb25lbnRfUmVjaXBpZW50Q291bnRyeSIsIl9jb21wb25lbnRfUmVjaXBpZW50UmVnaW9uIiwiX2NvbXBvbmVudF9GbG93VHlwZSIsIl9jb21wb25lbnRfRmluYW5jZVR5cGUiLCJfY29tcG9uZW50X1RpZWRTdGF0dXMiLCJ0cmFuc2FjdGlvbl9kYXRlIiwiYXQiLCJhaWRfdHlwZV92b2NhYnVsYXJ5IiwiYWlkX3R5cGVfY29kZSIsImNhc2hBbmRWb3VjaGVyTW9kYWxpdGllcyIsImVhck1hcmtpbmdDYXRlZ29yeSIsImVhck1hcmtpbmdNb2RhbGl0eSIsImRpc2J1cnNlbWVudF9jaGFubmVsX2NvZGUiLCJkaXNidXJzZW1lbnRDaGFubmVsIiwiZmluYW5jZV90eXBlIiwiZmxvd190eXBlIiwib3JnYW5pemF0aW9uX2lkZW50aWZpZXJfY29kZSIsInBvIiwiY291IiwiY291bnRyeUNvZGUiLCJzZCIsInJlZ2lvbkNvZGUiLCJzZWMiLCJ1bnNkZ0dvYWxzIiwidW5zZGdUYXJnZXRzIiwidGllZF9zdGF0dXNfY29kZSIsInRpZWRTdGF0dXNUeXBlIiwiX2NvbXBvbmVudF9hcGV4Y2hhcnQiLCJfaG9pc3RlZF8xMDciLCJfaG9pc3RlZF8xMDgiLCJfaG9pc3RlZF8xMDkiLCJfaG9pc3RlZF8xMTAiLCJfaG9pc3RlZF8xMTEiLCJfbyIsIl9wIiwiYWRtaW5fdXNlcl9jb3VudCIsImdlbmVyYWxfdXNlcl9jb3VudCIsImFjdGl2ZV91c2VyX2NvdW50IiwiZGVhY3RpdmF0ZWRfdXNlcl9jb3VudCIsInRvdGFsX3VzZXJfY291bnQiLCJjb21wbGV0ZVNldHVwIiwiaW5jb21wbGV0ZVNldHVwIiwiZGVmYXVsdFZhbHVlIiwiYm90aCIsImRyYWZ0Iiwib25UcmlnZ2VyU2V0RGF0ZVJhbmdlIiwib25UYWJsZU5hdiIsInJvbGVJZCIsInZNb2RlbFJhZGlvIiwib25TZWxlY3RFbGVtZW50IiwiY2xvc2VkIiwiZXhpc3RpbmciLCJfY29tcG9uZW50X1B1Ymxpc2hVbnB1Ymxpc2giLCJfY29tcG9uZW50X1JhZGlhbFByb2dyZXNzQmFyIiwiX2NvbXBvbmVudF9PcmdhbmlzYXRpb25FbGVtZW50cyIsIl9jb21wb25lbnRfT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWwiLCJyZWNpcGllbnRfY291bnRyeSIsInJlY2lwaWVudF9jb3VudHJ5X2J1ZGdldCIsImJ1ZGdldF9saW5lIiwicmVjaXBpZW50X29yZ19idWRnZXQiLCJyZWNpcGllbnRfb3JnIiwicmVjaXBpZW50X29yZ19pbmRleCIsIm5hcnJhdGl2ZV9pbmRleCIsInJlY2lwaWVudF9yZWdpb25fYnVkZ2V0IiwicmVjaXBpZW50X3JlZ2lvbiIsInRvdGFsX2J1ZGdldCIsInRvdGFsX2J1ZGdldF9zdGF0dXMiLCJ0b3RhbF9leHBlbmRpdHVyZSIsImV4cGVuc2VfbGluZSIsImxpbmtlZF9kYXRhX3VyaSIsImRlZmF1bHRfY29sbGFib3JhdGlvbl90eXBlIiwiZGVmYXVsdF9mbG93X3R5cGUiLCJkZWZhdWx0X2ZpbmFuY2VfdHlwZSIsImRlZmF1bHRfdGllZF9zdGF0dXMiLCJfY29tcG9uZW50X1NldHRpbmdQdWJsaXNoaW5nRm9ybSIsIl9jb21wb25lbnRfU2V0dGluZ0RlZmF1bHRGb3JtIiwiYWN0aXZlX190YWIiLCJvblN1Ym1pdFB1Ymxpc2hpbmciLCJpc1ZlcmlmaWNhdGlvblJlcXVlc3RlZCIsInRhZ19fY29ycmVjdCIsInRhZ19faW5jb3JyZWN0IiwicGtnIiwidmVyc2lvbiIsImxhdGVzdCIsIl9jb21wb25lbnRfRGF0ZVJhbmdlV2lkZ2V0IiwibW9kZSIsInRhZ2dhYmxlIiwib25UcmlnZ2VyU2V0RGF0ZVR5cGUiLCJvbkRhdGVDbGVhcmVkIiwiYWxsX2FjdGl2aXRpZXNfY291bnQiLCJ2TW9kZWxEeW5hbWljIiwiYWJvdXRUZXh0IiwiX2NvbXBvbmVudF9FbWFpbFZlcmlmaWNhdGlvbiIsImVycm9yX2tleSIsImZvcm1fX2lucHV0Iiwib25Gb2N1cyIsIndpdGhNb2RpZmllcnMiLCJ2dWVfX3NlbGVjdCIsInJlbCIsImlhdGlTdGFuZGFyZFRleHQiLCJwdWJsaXNoaW5nQ2hlY2tsaXN0VGV4dCIsImVycm9yX2lucHV0IiwiX2NvbXBvbmVudF9OYXZEcm9wZG93biIsInZ1ZTNfc21vb3RoX3Njcm9sbF8xIiwic3ZnX3Z1ZTNfMSIsIldlYkhlYWRlcl92dWVfMSIsIldlYkZvb3Rlcl92dWVfMSIsIkFkbWluRm9vdGVyX3Z1ZV8xIiwiV2VsY29tZVBhZ2VfdnVlXzEiLCJSZWdpc3RlclBhZ2VfdnVlXzEiLCJBYm91dFBhZ2VfdnVlXzEiLCJTdXBwb3J0UGFnZV92dWVfMSIsIklhdGlTdGFuZGFyZF92dWVfMSIsIlB1Ymxpc2hpbmdDaGVja2xpc3RfdnVlXzEiLCJJYXRpUmVnaXN0ZXJQYWdlX3Z1ZV8xIiwiUmVzdWx0RGV0YWlsX3Z1ZV8xIiwiUmVzdWx0TGlzdF92dWVfMSIsIkluZGljYXRvckRldGFpbF92dWVfMSIsIkluZGljYXRvckxpc3RfdnVlXzEiLCJQZXJpb2RzRGV0YWlsX3Z1ZV8xIiwiUGVyaW9kc0xpc3RfdnVlXzEiLCJUcmFuc2FjdGlvbkxpc3RfdnVlXzEiLCJUcmFuc2FjdGlvbkRldGFpbF92dWVfMSIsIkRlc2NyaXB0aW9uRm9ybV92dWVfMSIsIkVsZW1lbnRzTm90ZV92dWVfMSIsIkFjdGl2aXR5SW5kZXhfdnVlXzEiLCJBZG1pbkhlYWRlcl92dWVfMSIsIkFjdGl2aXR5RGV0YWlsX3Z1ZV8xIiwiU2lkZWJhckhlbHBCbG9ja192dWVfMSIsIkFjdGl2aXR5VXBsb2FkX3Z1ZV8xIiwiQWN0aXZpdHlYbHNVcGxvYWRfdnVlXzEiLCJEYXNoYm9hcmRQYWdlX3Z1ZV8xIiwiSW1wb3J0TGlzdF92dWVfMSIsIlhsc0xpc3RfdnVlXzEiLCJTZXR0aW5nUGFnZV92dWVfMSIsIkFjdGl2aXR5RGVmYXVsdFZhbHVlX3Z1ZV8xIiwiUmVzZXRQYWdlX3Z1ZV8xIiwiUGFzc3dvcmRSZWNvdmVyeV92dWVfMSIsIlJlc2V0UGFzc3dvcmRfdnVlXzEiLCJPcmdhbmlzYXRpb25EYXRhX3Z1ZV8xIiwiT3JnYW5pc2F0aW9uTGlzdF92dWVfMSIsIkFkbWluQmFyX3Z1ZV8xIiwiVXNlclByb2ZpbGVfdnVlXzEiLCJVc2VyTGlzdGluZ192dWVfMSIsIkF1ZGl0TGlzdGluZ192dWVfMSIsIlN5c3RlbVZlcnNpb25fdnVlXzEiLCJ2dWUzX2FwZXhjaGFydHNfMSIsImFwcCIsImNyZWF0ZUFwcCIsInVzZSIsImNvbXBvbmVudCIsImxhc3RTY3JvbGxUb3AiLCJhZmZpeFR5cGUiLCJzdGlja3lTaWRlYmFyIiwicGFyZW50V3JhcHBlciIsInN0aWNreUVsZW1lbnQiLCJmaXJzdENoaWxkIiwib2Zmc2V0SGVpZ2h0Iiwic3RpY2t5Q3VycmVudFRvcCIsInN0aWNreUN1cnJlbnRCb3R0b20iLCJlbFdpZHRoIiwib2Zmc2V0V2lkdGgiLCJlbFNjcm9sbExlZnQiLCJlbFNjcm9sbFRvcCIsImVsU2Nyb2xsQm90dG9tIiwidmlld3BvcnRIZWlnaHQiLCJpbm5lckhlaWdodCIsImN1cnJlbnRXaW5kb3dzU2Nyb2xsUG9zaXRpb24iLCJwYWdlWU9mZnNldCIsInRhcmdldFNjcm9sbFBvc2l0aW9uIiwiZWxQYXJlbnQiLCJlbFBhcmVudEJvdHRvbSIsImlzU2Nyb2xsRG93biIsImlzU2Nyb2xsVXAiLCJzY3JvbGxEb3duU3RpY2t5Qm90dG9tIiwic2Nyb2xsRG93blN0aWNreVRvcCIsInNjcm9sbERvd25TdGlja3lUcmFuc2xhdGUiLCJzY3JvbGxEb3duRml4ZWRUb3AiLCJzY3JvbGxEb3duU3RpY2t5Tm9uZSIsInNjcm9sbERvd25TdGlja3lCb3VuZCIsImhhbmRsZVNjcm9sbERvd24iLCJzY3JvbGxVcFN0aWNreVRvcCIsInNjcm9sbFVwU3RpY2t5Qm90dG9tIiwic2Nyb2xsVXBGaXhlZFRvcCIsInNjcm9sbFVwU3RpY2t5VHJhbnNsYXRlIiwic2Nyb2xsVXBTdGlja3lCb3VuZCIsImhhbmRsZVNjcm9sbFVwIiwiYm9yZGVyIiwiZGlyZWN0aXZlIiwibW91bnRlZCIsImJpbmRpbmciLCJ1bm1vdW50ZWQiLCJwYXJlbnQiLCJtb3VudCIsImZvcm1hdF9kYXRlIiwiY3J5cHRvX2pzXzEiLCJlbmNyeXB0IiwiaXYiLCJsaWIiLCJXb3JkQXJyYXkiLCJyYW5kb20iLCJzYWx0IiwiaXRlcmF0aW9ucyIsImVuY3J5cHRNZXRob2RMZW5ndGgiLCJoYXNoS2V5IiwiUEJLREYyIiwiaGFzaGVyIiwiYWxnbyIsIlNIQTUxMiIsImtleVNpemUiLCJlbmNyeXB0ZWQiLCJBRVMiLCJDQkMiLCJlbmNyeXB0ZWRTdHJpbmciLCJlbmMiLCJCYXNlNjQiLCJjaXBoZXJ0ZXh0Iiwib3V0cHV0IiwiSGV4IiwiVXRmOCIsImRhdGFfMSIsImxhbmd1YWdlU291cmNlcyIsImxhbmciLCJidXR0b25LZXkiLCJlbGVtZW50S2V5IiwiYmFzZU1lc3NhZ2UiLCJidXR0b25zIiwiZXZlbnRzIiwicGFyZW50S2V5IiwiZXJyb3JLZXkiLCJ0cmFuc2xhdGVkU3RyaW5nIiwiZXhwbG9kZSIsImtleXNfMSIsImlubmVyS2V5IiwiZWxlbWVudF9sYWJlbHMiLCJrZXlzXzIiLCJlbGVtZW50c19jb21tb24iLCJvdXRlcktleSIsInN0aWNreSIsImxvZ3MiLCJ3ZWIiLCJhZG1pbiIsInJlZ2lzdGVyIiwiYWJvdXQiLCJpYXRpX3N0YW5kYXJkIiwicHVibGlzaGluZ19jaGVja2xpc3QiLCJlbGVtZW50S2V5c0FycmF5IiwibGVhZGluZ0tleSIsInNoaWZ0IiwiZWxlbWVudEtleXNBcnJheV8xIiwiZWxlbWVudEtleV8xIiwidHJhbnNsYXRpb25Tb3VyY2UiLCJrZXlzXzMiLCJzZW50ZW5jZUNhc2VUb0tlYmFiQ2FzZSIsInJlZHVjZURvY3VtZW50TGluayIsImRvY3VtZW50Q291bnQiLCJkb2N1bWVudF8xIiwic3RyIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJtYXhMZW5ndGgiLCJzdWJzdHJpbmciLCJjYXBpdGFsaXplZEZpcnN0V29yZCIsImNvbmNhdGVuYXRlZFdvcmRzIiwidnVleF8xIiwibWF4aW1pemVYbHMiLCJhY3Rpdml0eV90aXRsZSIsIm11dGF0aW9ucyIsIm11dGF0ZVNlbGVjdGVkQWN0aXZpdGllcyIsInBheWxvYWQiLCJtdXRhdGVDbG9zZVhsc01vZGVsIiwibXV0YXRlQnVsa1B1Ymxpc2hMZW5ndGgiLCJtdXRhdGVDYW5jZWxVcGxvYWQiLCJtdXRhdGVNYXhpbWl6ZVhscyIsIm11dGF0ZVN0YXJ0WGxzRG93bmxvYWQiLCJtdXRhdGVDb21wbGV0ZVhsc0Rvd25sb2FkIiwibXV0YXRlQ2FuY2VsRG93bmxvYWQiLCJtdXRhdGVCdWxrcHVibGlzaEFjdGl2aXRpZXMiLCJtdXRhdGVTdGFydEJ1bGtQdWJsaXNoIiwiYWN0aW9ucyIsImNvbW1pdCIsInVwZGF0ZUNsb3NlWGxzTW9kZWwiLCJ1cGRhdGVCdWxrUHVibGlzaExlbmd0aCIsInVwZGF0ZUNhbmNlbFVwbG9hZCIsInVwZGF0ZU1heGltaXplWGxzIiwidXBkYXRlU3RhcnRYbHNEb3dubG9hZCIsInVwZGF0ZUNvbXBsZXRlWGxzRG93bmxvYWQiLCJ1cGRhdGVDYW5jZWxEb3dubG9hZCIsInVwZGF0ZUJ1bGtwdWJsaXNoQWN0aXZpdGllcyIsInVwZGF0ZVN0YXJ0QnVsa1B1Ymxpc2giLCJhY3Rpdml0eUxpc3RTdG9yZSIsImNyZWF0ZVN0b3JlIiwiYnVsa3B1Ymxpc2hMZW5ndGgiLCJtdXRhdGVVblB1Ymxpc2hlZCIsIm11dGF0ZVNob3dQdWJsaXNoZWQiLCJtdXRhdGVQdWJsaXNoRXJyb3JzIiwibXV0YXRlSXNMb2FkaW5nIiwibXV0YXRlQnVsa3B1Ymxpc2hMZW5ndGgiLCJ1cGRhdGVVblB1Ymxpc2hlZCIsInVwZGF0ZVNob3dQdWJsaXNoZWQiLCJ1cGRhdGVQdWJsaXNoRXJyb3JzIiwidXBkYXRlSXNMb2FkaW5nIiwidXBkYXRlQnVsa3B1Ymxpc2hMZW5ndGgiLCJhY3Rpdml0eURldGFpbFN0b3JlIiwic3RhdGVfMSIsIm11dGF0aW9uXzEiLCJNdXRhdGlvblR5cGVzIiwiVVBEQVRFX1BVQkxJU0hFUl9JTkZPIiwiVVBEQVRFX1BVQkxJU0hJTkdfRVJST1IiLCJVUERBVEVfREVGQVVMVF9FUlJPUiIsIlVQREFURV9JU19MT0FESU5HIiwiSVNfTE9BRElORyIsIlVQREFURV9CVUxLUFVCTElTSF9MRU5HVEgiLCJCVUxLUFVCTElTSF9MRU5HVEgiLCJSZXN1bHRfdnVlXzEiLCJJYXRpSWRlbnRpZmllcl92dWVfMSIsIk90aGVySWRlbnRpZmllcl92dWVfMSIsIlRpdGxlX3Z1ZV8xIiwiRGVzY3JpcHRpb25fdnVlXzEiLCJBY3Rpdml0eURhdGVfdnVlXzEiLCJDb250YWN0SW5mb192dWVfMSIsIlBhcnRpY2lwYXRpbmdPcmdfdnVlXzEiLCJSZWNpcGllbnRDb3VudHJ5X3Z1ZV8xIiwiUmVjaXBpZW50UmVnaW9uX3Z1ZV8xIiwiVHJhbnNhY3Rpb25zX3Z1ZV8xIiwiTG9jYXRpb25fdnVlXzEiLCJTZWN0b3JfdnVlXzEiLCJMZWdhY3lEYXRhX3Z1ZV8xIiwiQ29uZGl0aW9uc192dWVfMSIsIlJlbGF0ZWRBY3Rpdml0eV92dWVfMSIsIlBvbGljeU1hcmtlcl92dWVfMSIsIlRhZ192dWVfMSIsIkh1bWFuaXRhcmlhblNjb3BlX3Z1ZV8xIiwiUGxhbm5lZERpc2J1cnNlbWVudF92dWVfMSIsIlJlcG9ydGluZ09yZ2FuaXphdGlvbl92dWVfMSIsIk1lYXN1cmVfdnVlXzEiLCJJbmRpY2F0b3JBc2NlbmRpbmdfdnVlXzEiLCJBZ2dyZWdhdGlvblN0YXR1c192dWVfMSIsIlJlZmVyZW5jZV92dWVfMSIsIkRvY3VtZW50TGlua192dWVfMSIsIkJhc2VsaW5lX3Z1ZV8xIiwiUGVyaW9kX3Z1ZV8xIiwiVGFyZ2V0VmFsdWVfdnVlXzEiLCJBY3R1YWxWYWx1ZV92dWVfMSIsIlRpdGxlRGVzY3JpcHRpb25fdnVlXzEiLCJSZXN1bHRUeXBlX3Z1ZV8xIiwiQWlkVHlwZV92dWVfMSIsIlRyYW5zYWN0aW9uVHlwZV92dWVfMSIsIlRyYW5zYWN0aW9uRGF0ZV92dWVfMSIsIlZhbHVlX3Z1ZV8xIiwiUHJvdmlkZXJPcmdhbml6YXRpb25fdnVlXzEiLCJSZWNlaXZlck9yZ2FuaXphdGlvbl92dWVfMSIsIkRpc2J1cnNlbWVudENoYW5uZWxfdnVlXzEiLCJGbG93VHlwZV92dWVfMSIsIkZpbmFuY2VUeXBlX3Z1ZV8xIiwiVGllZFN0YXR1c192dWVfMSIsIlJlcG9ydGluZ09yZ2FuaXNhdGlvbl92dWVfMSIsIlRvdGFsQnVkZ2V0X3Z1ZV8xIiwiUmVwb3J0aW5nT3JnQnVkZ2V0X3Z1ZV8xIiwiUmVwb3J0aW5nUmVnaW9uQnVkZ2V0X3Z1ZV8xIiwiUmVjaXBpZW50Q291bnRyeUJ1ZGdldF92dWVfMSIsIlRvdGFsRXhwZW5kaXR1cmVfdnVlXzEiLCJTaWduSW4iLCJKb2luTm93IiwicGFnZUNvbnRlbnQiLCJ0b2dnbGVQYWdlIiwiX2NyZWF0ZUVsZW1lbnRCbG9jayIsIl9jcmVhdGVFbGVtZW50Vk5vZGUiLCJfdG9EaXNwbGF5U3RyaW5nIiwiX2NyZWF0ZUJsb2NrIiwiX2NvbXBvbmVudF9TaWduSW4iLCJfY29tcG9uZW50X0pvaW5Ob3ciXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL2pzL2FwcC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBYTs7QUFDYixJQUFJQSxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJQyxLQUFLLEdBQUdELG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSUUsbUJBQW1CLEdBQUdWLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQywrRUFBRCxDQUFSLENBQXpDOztBQUNBLElBQUlHLGdCQUFnQixHQUFHWCxlQUFlLENBQUNRLG1CQUFPLENBQUMsa0ZBQUQsQ0FBUixDQUF0Qzs7QUFDQSxJQUFJSSxPQUFPLEdBQUdaLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0Q0FBRCxDQUFSLENBQTdCOztBQUNBLElBQUlLLE9BQU8sR0FBR0wsbUJBQU8sQ0FBQywrRUFBRCxDQUFyQjs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNDLE1BQU0sRUFBRSxrQkFEaUM7RUFFekNDLEtBQUssRUFBRSxlQUFVQyxPQUFWLEVBQW1CQyxFQUFuQixFQUF1QjtJQUMxQixJQUFJQyxNQUFNLEdBQUdELEVBQUUsQ0FBQ0MsTUFBaEI7SUFDQUEsTUFBTTtJQUNOLElBQUlDLEtBQUssR0FBRyxDQUFDLEdBQUdQLE9BQU8sQ0FBQ1EsUUFBWixHQUFaO0lBQ0EsSUFBSUMsc0JBQXNCLEdBQUcsQ0FBQyxHQUFHYixLQUFLLENBQUNjLEdBQVYsR0FBN0I7SUFDQSxJQUFJQyxTQUFTLEdBQUcsQ0FBQyxHQUFHZixLQUFLLENBQUNjLEdBQVYsR0FBaEI7SUFDQSxDQUFDLEdBQUdkLEtBQUssQ0FBQ2dCLFNBQVYsRUFBcUIsWUFBWTtNQUM3QixJQUFJQyxhQUFhLEdBQUdDLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixXQUF2QixDQUFwQjs7TUFDQSxJQUFJRixhQUFhLEtBQUssSUFBdEIsRUFBNEI7UUFDeEJBLGFBQWEsQ0FBQ0csS0FBZCxDQUFvQkMsU0FBcEIsR0FBZ0MsbUJBQWhDO01BQ0g7SUFDSixDQUxEOztJQU1BLElBQUlDLFlBQVksR0FBRyxTQUFmQSxZQUFlLEdBQVk7TUFDM0JYLEtBQUssQ0FBQ1ksUUFBTixDQUFlLDJCQUFmLEVBQTRDLElBQTVDO01BQ0FaLEtBQUssQ0FBQ1ksUUFBTixDQUFlLHNCQUFmLEVBQXVDLElBQXZDO01BQ0FaLEtBQUssQ0FBQ1ksUUFBTixDQUFlLHdCQUFmLEVBQXlDLEtBQXpDO01BQ0EsSUFBSUMsTUFBTSxHQUFHLEdBQUdDLE1BQUgsQ0FBVUMsY0FBYyxDQUFDN0IsS0FBZixDQUFxQjhCLEtBQXJCLEdBQTZCLENBQTdCLEVBQWdDQSxLQUFoQyxDQUFzQyxHQUF0QyxFQUEyQyxDQUEzQyxDQUFWLEVBQXlELEdBQXpELEVBQThERixNQUE5RCxDQUFxRUMsY0FBYyxDQUFDN0IsS0FBZixDQUFxQjhCLEtBQXJCLEdBQTZCLENBQTdCLEVBQWdDQSxLQUFoQyxDQUFzQyxHQUF0QyxFQUEyQyxDQUEzQyxDQUFyRSxDQUFiO01BQ0EsQ0FBQyxHQUFHeEIsT0FBTyxXQUFYLEVBQXFCO1FBQ2pCeUIsTUFBTSxFQUFFLEtBRFM7UUFFakJDLEdBQUcsRUFBRUwsTUFGWTtRQUdqQk0sWUFBWSxFQUFFO01BSEcsQ0FBckIsRUFJR0MsSUFKSCxDQUlRLFVBQVVDLEdBQVYsRUFBZTtRQUNuQixJQUFJQyxRQUFRLEdBQUdELEdBQUcsQ0FBQ0UsT0FBSixDQUFZLHFCQUFaLEVBQW1DUCxLQUFuQyxDQUF5QyxXQUF6QyxFQUFzRCxDQUF0RCxDQUFmO1FBQ0EsSUFBSVEsSUFBSSxHQUFHLElBQUlDLElBQUosQ0FBUyxDQUFDSixHQUFHLENBQUNLLElBQUwsQ0FBVCxFQUFxQixFQUFyQixDQUFYO1FBQ0EsSUFBSUMsSUFBSSxHQUFHcEIsUUFBUSxDQUFDcUIsYUFBVCxDQUF1QixHQUF2QixDQUFYO1FBQ0FELElBQUksQ0FBQ0UsSUFBTCxHQUFZQyxNQUFNLENBQUNDLEdBQVAsQ0FBV0MsZUFBWCxDQUEyQlIsSUFBM0IsQ0FBWjtRQUNBRyxJQUFJLENBQUNNLFlBQUwsQ0FBa0IsVUFBbEIsRUFBOEJYLFFBQTlCO1FBQ0FmLFFBQVEsQ0FBQzJCLElBQVQsQ0FBY0MsV0FBZCxDQUEwQlIsSUFBMUI7UUFDQUEsSUFBSSxDQUFDUyxLQUFMO01BQ0gsQ0FaRDtJQWFILENBbEJEOztJQW1CQSxJQUFJQyxhQUFhLEdBQUcsU0FBaEJBLGFBQWdCLEdBQVk7TUFDNUJDLGlCQUFpQixDQUFDcEQsS0FBbEIsR0FBMEIsRUFBMUI7TUFDQWtCLFNBQVMsQ0FBQ2xCLEtBQVYsR0FBa0IsSUFBbEI7TUFDQWMsS0FBSyxDQUFDWSxRQUFOLENBQWUsd0JBQWYsRUFBeUMsSUFBekM7TUFDQVosS0FBSyxDQUFDWSxRQUFOLENBQWUsc0JBQWYsRUFBdUMsS0FBdkM7TUFDQVYsc0JBQXNCLENBQUNoQixLQUF2QixHQUErQixLQUEvQjtNQUNBLElBQUkyQixNQUFNLEdBQUcsK0JBQWI7TUFDQXJCLE9BQU8sV0FBUCxDQUFnQitDLEdBQWhCLENBQW9CMUIsTUFBcEIsYUFBb0MsWUFBWTtRQUFFLE9BQVFULFNBQVMsQ0FBQ2xCLEtBQVYsR0FBa0IsS0FBMUI7TUFBbUMsQ0FBckY7SUFDSCxDQVJEOztJQVNBLElBQUlzRCxjQUFjLEdBQUcsU0FBakJBLGNBQWlCLEdBQVk7TUFDN0JGLGlCQUFpQixDQUFDcEQsS0FBbEIsR0FBMEIsV0FBMUI7TUFDQU0sT0FBTyxXQUFQLENBQWdCK0MsR0FBaEIsQ0FBb0IsaUNBQXBCLEVBQXVEbkIsSUFBdkQsQ0FBNEQsVUFBVUMsR0FBVixFQUFlO1FBQ3ZFLElBQUlBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTZSxPQUFiLEVBQXNCO1VBQ2xCekMsS0FBSyxDQUFDWSxRQUFOLENBQWUsc0JBQWYsRUFBdUMsSUFBdkM7VUFDQVosS0FBSyxDQUFDWSxRQUFOLENBQWUsd0JBQWYsRUFBeUMsS0FBekM7UUFDSDtNQUNKLENBTEQ7SUFNSCxDQVJEOztJQVNBLElBQUk4QixlQUFlLEdBQUcsQ0FBQyxHQUFHckQsS0FBSyxDQUFDc0QsUUFBVixFQUFvQixZQUFZO01BQ2xELE9BQVFDLFNBQVMsQ0FBQzFELEtBQVYsR0FBa0IsQ0FBbkIsR0FBd0IsR0FBL0I7SUFDSCxDQUZxQixDQUF0QjtJQUdBLElBQUkwRCxTQUFTLEdBQUcsQ0FBQyxHQUFHdkQsS0FBSyxDQUFDd0QsTUFBVixFQUFrQixXQUFsQixDQUFoQjtJQUNBLElBQUlQLGlCQUFpQixHQUFHLENBQUMsR0FBR2pELEtBQUssQ0FBQ3dELE1BQVYsRUFBa0IsbUJBQWxCLENBQXhCO0lBQ0EsSUFBSTlCLGNBQWMsR0FBRyxDQUFDLEdBQUcxQixLQUFLLENBQUN3RCxNQUFWLEVBQWtCLGdCQUFsQixDQUFyQjtJQUNBLElBQUlDLFlBQVksR0FBRztNQUFFOUMsS0FBSyxFQUFFQSxLQUFUO01BQWdCRSxzQkFBc0IsRUFBRUEsc0JBQXhDO01BQWdFRSxTQUFTLEVBQUVBLFNBQTNFO01BQXNGTyxZQUFZLEVBQUVBLFlBQXBHO01BQWtIMEIsYUFBYSxFQUFFQSxhQUFqSTtNQUFnSkcsY0FBYyxFQUFFQSxjQUFoSztNQUFnTEUsZUFBZSxFQUFFQSxlQUFqTTtNQUFrTkUsU0FBUyxFQUFFQSxTQUE3TjtNQUF3T04saUJBQWlCLEVBQUVBLGlCQUEzUDtNQUE4UXZCLGNBQWMsRUFBRUEsY0FBOVI7TUFBOFNnQyxhQUFhLEVBQUV6RCxtQkFBbUIsV0FBaFY7TUFBMFYwRCxLQUFLLEVBQUV6RCxnQkFBZ0I7SUFBalgsQ0FBbkI7SUFDQVIsTUFBTSxDQUFDQyxjQUFQLENBQXNCOEQsWUFBdEIsRUFBb0MsaUJBQXBDLEVBQXVEO01BQUVHLFVBQVUsRUFBRSxLQUFkO01BQXFCL0QsS0FBSyxFQUFFO0lBQTVCLENBQXZEO0lBQ0EsT0FBTzRELFlBQVA7RUFDSDtBQTVEd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDWGE7Ozs7QUFDYixJQUFJSSxTQUFTLEdBQUksUUFBUSxLQUFLQSxTQUFkLElBQTRCLFVBQVVDLE9BQVYsRUFBbUJDLFVBQW5CLEVBQStCQyxDQUEvQixFQUFrQ0MsU0FBbEMsRUFBNkM7RUFDckYsU0FBU0MsS0FBVCxDQUFlckUsS0FBZixFQUFzQjtJQUFFLE9BQU9BLEtBQUssWUFBWW1FLENBQWpCLEdBQXFCbkUsS0FBckIsR0FBNkIsSUFBSW1FLENBQUosQ0FBTSxVQUFVRyxPQUFWLEVBQW1CO01BQUVBLE9BQU8sQ0FBQ3RFLEtBQUQsQ0FBUDtJQUFpQixDQUE1QyxDQUFwQztFQUFvRjs7RUFDNUcsT0FBTyxLQUFLbUUsQ0FBQyxLQUFLQSxDQUFDLEdBQUdJLE9BQVQsQ0FBTixFQUF5QixVQUFVRCxPQUFWLEVBQW1CRSxNQUFuQixFQUEyQjtJQUN2RCxTQUFTQyxTQUFULENBQW1CekUsS0FBbkIsRUFBMEI7TUFBRSxJQUFJO1FBQUUwRSxJQUFJLENBQUNOLFNBQVMsQ0FBQ08sSUFBVixDQUFlM0UsS0FBZixDQUFELENBQUo7TUFBOEIsQ0FBcEMsQ0FBcUMsT0FBTzRFLENBQVAsRUFBVTtRQUFFSixNQUFNLENBQUNJLENBQUQsQ0FBTjtNQUFZO0lBQUU7O0lBQzNGLFNBQVNDLFFBQVQsQ0FBa0I3RSxLQUFsQixFQUF5QjtNQUFFLElBQUk7UUFBRTBFLElBQUksQ0FBQ04sU0FBUyxDQUFDLE9BQUQsQ0FBVCxDQUFtQnBFLEtBQW5CLENBQUQsQ0FBSjtNQUFrQyxDQUF4QyxDQUF5QyxPQUFPNEUsQ0FBUCxFQUFVO1FBQUVKLE1BQU0sQ0FBQ0ksQ0FBRCxDQUFOO01BQVk7SUFBRTs7SUFDOUYsU0FBU0YsSUFBVCxDQUFjSSxNQUFkLEVBQXNCO01BQUVBLE1BQU0sQ0FBQ0MsSUFBUCxHQUFjVCxPQUFPLENBQUNRLE1BQU0sQ0FBQzlFLEtBQVIsQ0FBckIsR0FBc0NxRSxLQUFLLENBQUNTLE1BQU0sQ0FBQzlFLEtBQVIsQ0FBTCxDQUFvQmtDLElBQXBCLENBQXlCdUMsU0FBekIsRUFBb0NJLFFBQXBDLENBQXRDO0lBQXNGOztJQUM5R0gsSUFBSSxDQUFDLENBQUNOLFNBQVMsR0FBR0EsU0FBUyxDQUFDWSxLQUFWLENBQWdCZixPQUFoQixFQUF5QkMsVUFBVSxJQUFJLEVBQXZDLENBQWIsRUFBeURTLElBQXpELEVBQUQsQ0FBSjtFQUNILENBTE0sQ0FBUDtBQU1ILENBUkQ7O0FBU0EsSUFBSU0sV0FBVyxHQUFJLFFBQVEsS0FBS0EsV0FBZCxJQUE4QixVQUFVaEIsT0FBVixFQUFtQmpCLElBQW5CLEVBQXlCO0VBQ3JFLElBQUlrQyxDQUFDLEdBQUc7SUFBRUMsS0FBSyxFQUFFLENBQVQ7SUFBWUMsSUFBSSxFQUFFLGdCQUFXO01BQUUsSUFBSUMsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFPLENBQVgsRUFBYyxNQUFNQSxDQUFDLENBQUMsQ0FBRCxDQUFQO01BQVksT0FBT0EsQ0FBQyxDQUFDLENBQUQsQ0FBUjtJQUFjLENBQXZFO0lBQXlFQyxJQUFJLEVBQUUsRUFBL0U7SUFBbUZDLEdBQUcsRUFBRTtFQUF4RixDQUFSO0VBQUEsSUFBc0dDLENBQXRHO0VBQUEsSUFBeUdDLENBQXpHO0VBQUEsSUFBNEdKLENBQTVHO0VBQUEsSUFBK0dLLENBQS9HO0VBQ0EsT0FBT0EsQ0FBQyxHQUFHO0lBQUVmLElBQUksRUFBRWdCLElBQUksQ0FBQyxDQUFELENBQVo7SUFBaUIsU0FBU0EsSUFBSSxDQUFDLENBQUQsQ0FBOUI7SUFBbUMsVUFBVUEsSUFBSSxDQUFDLENBQUQ7RUFBakQsQ0FBSixFQUE0RCxPQUFPQyxNQUFQLEtBQWtCLFVBQWxCLEtBQWlDRixDQUFDLENBQUNFLE1BQU0sQ0FBQ0MsUUFBUixDQUFELEdBQXFCLFlBQVc7SUFBRSxPQUFPLElBQVA7RUFBYyxDQUFqRixDQUE1RCxFQUFnSkgsQ0FBdko7O0VBQ0EsU0FBU0MsSUFBVCxDQUFjRyxDQUFkLEVBQWlCO0lBQUUsT0FBTyxVQUFVQyxDQUFWLEVBQWE7TUFBRSxPQUFPckIsSUFBSSxDQUFDLENBQUNvQixDQUFELEVBQUlDLENBQUosQ0FBRCxDQUFYO0lBQXNCLENBQTVDO0VBQStDOztFQUNsRSxTQUFTckIsSUFBVCxDQUFjc0IsRUFBZCxFQUFrQjtJQUNkLElBQUlSLENBQUosRUFBTyxNQUFNLElBQUlTLFNBQUosQ0FBYyxpQ0FBZCxDQUFOOztJQUNQLE9BQU9QLENBQUMsS0FBS0EsQ0FBQyxHQUFHLENBQUosRUFBT00sRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVZCxDQUFDLEdBQUcsQ0FBZCxDQUFaLENBQUQsRUFBZ0NBLENBQXZDO01BQTBDLElBQUk7UUFDMUMsSUFBSU0sQ0FBQyxHQUFHLENBQUosRUFBT0MsQ0FBQyxLQUFLSixDQUFDLEdBQUdXLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUSxDQUFSLEdBQVlQLENBQUMsQ0FBQyxRQUFELENBQWIsR0FBMEJPLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUVAsQ0FBQyxDQUFDLE9BQUQsQ0FBRCxLQUFlLENBQUNKLENBQUMsR0FBR0ksQ0FBQyxDQUFDLFFBQUQsQ0FBTixLQUFxQkosQ0FBQyxDQUFDYSxJQUFGLENBQU9ULENBQVAsQ0FBckIsRUFBZ0MsQ0FBL0MsQ0FBUixHQUE0REEsQ0FBQyxDQUFDZCxJQUFqRyxDQUFELElBQTJHLENBQUMsQ0FBQ1UsQ0FBQyxHQUFHQSxDQUFDLENBQUNhLElBQUYsQ0FBT1QsQ0FBUCxFQUFVTyxFQUFFLENBQUMsQ0FBRCxDQUFaLENBQUwsRUFBdUJqQixJQUE5SSxFQUFvSixPQUFPTSxDQUFQO1FBQ3BKLElBQUlJLENBQUMsR0FBRyxDQUFKLEVBQU9KLENBQVgsRUFBY1csRUFBRSxHQUFHLENBQUNBLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUSxDQUFULEVBQVlYLENBQUMsQ0FBQ3JGLEtBQWQsQ0FBTDs7UUFDZCxRQUFRZ0csRUFBRSxDQUFDLENBQUQsQ0FBVjtVQUNJLEtBQUssQ0FBTDtVQUFRLEtBQUssQ0FBTDtZQUFRWCxDQUFDLEdBQUdXLEVBQUo7WUFBUTs7VUFDeEIsS0FBSyxDQUFMO1lBQVFkLENBQUMsQ0FBQ0MsS0FBRjtZQUFXLE9BQU87Y0FBRW5GLEtBQUssRUFBRWdHLEVBQUUsQ0FBQyxDQUFELENBQVg7Y0FBZ0JqQixJQUFJLEVBQUU7WUFBdEIsQ0FBUDs7VUFDbkIsS0FBSyxDQUFMO1lBQVFHLENBQUMsQ0FBQ0MsS0FBRjtZQUFXTSxDQUFDLEdBQUdPLEVBQUUsQ0FBQyxDQUFELENBQU47WUFBV0EsRUFBRSxHQUFHLENBQUMsQ0FBRCxDQUFMO1lBQVU7O1VBQ3hDLEtBQUssQ0FBTDtZQUFRQSxFQUFFLEdBQUdkLENBQUMsQ0FBQ0ssR0FBRixDQUFNWSxHQUFOLEVBQUw7O1lBQWtCakIsQ0FBQyxDQUFDSSxJQUFGLENBQU9hLEdBQVA7O1lBQWM7O1VBQ3hDO1lBQ0ksSUFBSSxFQUFFZCxDQUFDLEdBQUdILENBQUMsQ0FBQ0ksSUFBTixFQUFZRCxDQUFDLEdBQUdBLENBQUMsQ0FBQ2UsTUFBRixHQUFXLENBQVgsSUFBZ0JmLENBQUMsQ0FBQ0EsQ0FBQyxDQUFDZSxNQUFGLEdBQVcsQ0FBWixDQUFuQyxNQUF1REosRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVLENBQVYsSUFBZUEsRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVLENBQWhGLENBQUosRUFBd0Y7Y0FBRWQsQ0FBQyxHQUFHLENBQUo7Y0FBTztZQUFXOztZQUM1RyxJQUFJYyxFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVUsQ0FBVixLQUFnQixDQUFDWCxDQUFELElBQU9XLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUVgsQ0FBQyxDQUFDLENBQUQsQ0FBVCxJQUFnQlcsRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRWCxDQUFDLENBQUMsQ0FBRCxDQUFoRCxDQUFKLEVBQTJEO2NBQUVILENBQUMsQ0FBQ0MsS0FBRixHQUFVYSxFQUFFLENBQUMsQ0FBRCxDQUFaO2NBQWlCO1lBQVE7O1lBQ3RGLElBQUlBLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFWLElBQWVkLENBQUMsQ0FBQ0MsS0FBRixHQUFVRSxDQUFDLENBQUMsQ0FBRCxDQUE5QixFQUFtQztjQUFFSCxDQUFDLENBQUNDLEtBQUYsR0FBVUUsQ0FBQyxDQUFDLENBQUQsQ0FBWDtjQUFnQkEsQ0FBQyxHQUFHVyxFQUFKO2NBQVE7WUFBUTs7WUFDckUsSUFBSVgsQ0FBQyxJQUFJSCxDQUFDLENBQUNDLEtBQUYsR0FBVUUsQ0FBQyxDQUFDLENBQUQsQ0FBcEIsRUFBeUI7Y0FBRUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQVg7O2NBQWdCSCxDQUFDLENBQUNLLEdBQUYsQ0FBTWMsSUFBTixDQUFXTCxFQUFYOztjQUFnQjtZQUFROztZQUNuRSxJQUFJWCxDQUFDLENBQUMsQ0FBRCxDQUFMLEVBQVVILENBQUMsQ0FBQ0ssR0FBRixDQUFNWSxHQUFOOztZQUNWakIsQ0FBQyxDQUFDSSxJQUFGLENBQU9hLEdBQVA7O1lBQWM7UUFYdEI7O1FBYUFILEVBQUUsR0FBR2hELElBQUksQ0FBQ2tELElBQUwsQ0FBVWpDLE9BQVYsRUFBbUJpQixDQUFuQixDQUFMO01BQ0gsQ0FqQnlDLENBaUJ4QyxPQUFPTixDQUFQLEVBQVU7UUFBRW9CLEVBQUUsR0FBRyxDQUFDLENBQUQsRUFBSXBCLENBQUosQ0FBTDtRQUFhYSxDQUFDLEdBQUcsQ0FBSjtNQUFRLENBakJPLFNBaUJFO1FBQUVELENBQUMsR0FBR0gsQ0FBQyxHQUFHLENBQVI7TUFBWTtJQWpCMUQ7O0lBa0JBLElBQUlXLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUSxDQUFaLEVBQWUsTUFBTUEsRUFBRSxDQUFDLENBQUQsQ0FBUjtJQUFhLE9BQU87TUFBRWhHLEtBQUssRUFBRWdHLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUUEsRUFBRSxDQUFDLENBQUQsQ0FBVixHQUFnQixLQUFLLENBQTlCO01BQWlDakIsSUFBSSxFQUFFO0lBQXZDLENBQVA7RUFDL0I7QUFDSixDQTFCRDs7QUEyQkEsSUFBSXJGLGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlDLEtBQUssR0FBR0QsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJb0csTUFBTSxHQUFHcEcsbUJBQU8sQ0FBQyw2RUFBRCxDQUFwQjs7QUFDQSxJQUFJSSxPQUFPLEdBQUdaLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0Q0FBRCxDQUFSLENBQTdCOztBQUNBLElBQUlxRyxNQUFNLEdBQUdyRyxtQkFBTyxDQUFDLDJEQUFELENBQXBCOztBQUNBLElBQUlzRyxpQkFBaUIsR0FBRzlHLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQywrRkFBRCxDQUFSLENBQXZDOztBQUNBLElBQUl1RyxrQkFBa0IsR0FBRy9HLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw2RUFBRCxDQUFSLENBQXhDOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsYUFEaUM7RUFFekNrRyxLQUFLLEVBQUU7SUFDSEMsSUFBSSxFQUFFO01BQUVDLElBQUksRUFBRWhILE1BQVI7TUFBZ0JpSCxRQUFRLEVBQUU7SUFBMUIsQ0FESDtJQUVIQyxZQUFZLEVBQUU7TUFDVkYsSUFBSSxFQUFFaEgsTUFESTtNQUVWbUgsU0FBUyxFQUFFLG1CQUFVakIsQ0FBVixFQUFhO1FBQ3BCLE9BQU8sUUFBT0EsQ0FBUCxNQUFhLFFBQWIsSUFBeUIsT0FBT0EsQ0FBUCxLQUFhLFFBQXRDLElBQWtEQSxDQUFDLEtBQUssSUFBL0Q7TUFDSCxDQUpTO01BS1ZlLFFBQVEsRUFBRSxLQUxBO01BTVYsV0FBUyxvQkFBWTtRQUNqQixPQUFPLEVBQVA7TUFDSDtJQVJTLENBRlg7SUFZSEcsVUFBVSxFQUFFO01BQUVKLElBQUksRUFBRUssT0FBUjtNQUFpQkosUUFBUSxFQUFFO0lBQTNCLENBWlQ7SUFhSEssV0FBVyxFQUFFO01BQUVOLElBQUksRUFBRU8sTUFBTSxJQUFJRixPQUFsQjtNQUEyQixXQUFTO0lBQXBDO0VBYlYsQ0FGa0M7RUFpQnpDeEcsS0FBSyxFQUFFLGVBQVVDLE9BQVYsRUFBbUJDLEVBQW5CLEVBQXVCO0lBQzFCLElBQUl5RyxFQUFKOztJQUNBLElBQUl4RyxNQUFNLEdBQUdELEVBQUUsQ0FBQ0MsTUFBaEI7SUFDQUEsTUFBTTtJQUNOLElBQUk4RixLQUFLLEdBQUdoRyxPQUFaO0lBQ0EsSUFBSUcsS0FBSyxHQUFHLENBQUMsR0FBR3dGLE1BQU0sQ0FBQ2dCLFdBQVgsR0FBWjtJQUNBLElBQUlDLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJQyxnQkFBZ0IsR0FBRyxDQUFDLEdBQUd0SCxLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQXZCO0lBQ0EsSUFBSXlHLG9CQUFvQixHQUFHLENBQUMsR0FBR3ZILEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBM0I7SUFDQSxJQUFJMEcsZUFBZSxHQUFHLENBQUMsR0FBR3hILEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBdEI7SUFDQSxJQUFJQyxTQUFTLEdBQUcsQ0FBQyxHQUFHZixLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQWhCO0lBQ0EsSUFBSTJHLGVBQWUsR0FBRyxDQUFDLEdBQUd6SCxLQUFLLENBQUNjLEdBQVYsRUFBZSxJQUFmLENBQXRCO0lBQ0EsSUFBSTRHLHNCQUFzQixHQUFHLENBQUMsR0FBRzFILEtBQUssQ0FBQ2MsR0FBVixFQUFlLENBQWYsQ0FBN0I7SUFDQSxJQUFJNkcsV0FBVyxHQUFHLENBQUMsR0FBRzNILEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBbEI7SUFDQSxJQUFJOEcsWUFBWSxHQUFHLENBQUMsR0FBRzVILEtBQUssQ0FBQ2MsR0FBVixFQUFlLEVBQWYsQ0FBbkI7SUFDQSxJQUFJK0csU0FBUyxHQUFHLENBQUMsR0FBRzdILEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBaEI7SUFDQSxJQUFJdUIsSUFBSSxHQUFHLENBQUMsR0FBR3JDLEtBQUssQ0FBQzhILFFBQVYsRUFBb0I7TUFDM0JDLG9CQUFvQixFQUFFLE1BREs7TUFFM0JDLHdCQUF3QixFQUFFLGdFQUZDO01BRzNCQyxnQkFBZ0IsRUFBRSxlQUhTO01BSTNCQyxvQkFBb0IsRUFBRSwyREFKSztNQUszQkMsU0FBUyxFQUFFLENBQ1A7UUFDSUMsUUFBUSxFQUFFLElBRGQ7UUFFSUMsU0FBUyxFQUFFLFVBRmY7UUFHSUMsRUFBRSxFQUFFLGFBSFI7UUFJSUMsTUFBTSxFQUFFbkIsU0FBUyxDQUFDb0IsT0FBVixDQUFrQixRQUFsQixNQUFnQztNQUo1QyxDQURPLEVBT1A7UUFDSUosUUFBUSxFQUFFLElBRGQ7UUFFSUMsU0FBUyxFQUFFLFVBRmY7UUFHSUMsRUFBRSxFQUFFLGFBSFI7UUFJSUMsTUFBTSxFQUFFbkIsU0FBUyxDQUFDb0IsT0FBVixDQUFrQixRQUFsQixNQUFnQztNQUo1QyxDQVBPLEVBYVA7UUFDSUosUUFBUSxFQUFFLElBRGQ7UUFFSUMsU0FBUyxFQUFFLFVBRmY7UUFHSUMsRUFBRSxFQUFFLGFBSFI7UUFJSUMsTUFBTSxFQUFFbkIsU0FBUyxDQUFDb0IsT0FBVixDQUFrQixRQUFsQixNQUFnQztNQUo1QyxDQWJPLENBTGdCO01BeUIzQkMsU0FBUyxFQUFFLENBQ1A7UUFDSUMsSUFBSSxFQUFFdEIsU0FBUyxDQUFDdUIsU0FBVixDQUFvQixlQUFwQixDQURWO1FBRUlOLFNBQVMsRUFBRSxhQUZmO1FBR0lFLE1BQU0sRUFBRTtNQUhaLENBRE8sRUFNUDtRQUNJRyxJQUFJLEVBQUV0QixTQUFTLENBQUN1QixTQUFWLENBQW9CLG1CQUFwQixDQURWO1FBRUlOLFNBQVMsRUFBRSxlQUZmO1FBR0lFLE1BQU0sRUFBRTtNQUhaLENBTk8sRUFXUDtRQUNJRyxJQUFJLEVBQUV0QixTQUFTLENBQUN1QixTQUFWLENBQW9CLFVBQXBCLENBRFY7UUFFSU4sU0FBUyxFQUFFLFVBRmY7UUFHSUUsTUFBTSxFQUFFO01BSFosQ0FYTyxFQWdCUDtRQUNJRyxJQUFJLEVBQUV0QixTQUFTLENBQUN3QixVQUFWLENBQXFCLHFCQUFyQixDQURWO1FBRUlQLFNBQVMsRUFBRSxHQUZmO1FBR0lFLE1BQU0sRUFBRTtNQUhaLENBaEJPLEVBcUJQO1FBQ0lHLElBQUksRUFBRXRCLFNBQVMsQ0FBQ3dCLFVBQVYsQ0FBcUIsT0FBckIsQ0FEVjtRQUVJUCxTQUFTLEVBQUUsUUFGZjtRQUdJRSxNQUFNLEVBQUU7TUFIWixDQXJCTyxDQXpCZ0I7TUFvRDNCTSxnQkFBZ0IsRUFBRSxDQUNkO1FBQ0lILElBQUksRUFBRSxXQURWO1FBRUlMLFNBQVMsRUFBRSxZQUZmO1FBR0lFLE1BQU0sRUFBRTtNQUhaLENBRGMsRUFNZDtRQUNJRyxJQUFJLEVBQUV0QixTQUFTLENBQUN3QixVQUFWLENBQXFCLFVBQXJCLENBRFY7UUFFSVAsU0FBUyxFQUFFLHFCQUZmO1FBR0lFLE1BQU0sRUFBRTtNQUhaLENBTmMsRUFXZDtRQUNJRyxJQUFJLEVBQUV0QixTQUFTLENBQUN3QixVQUFWLENBQXFCLE9BQXJCLENBRFY7UUFFSVAsU0FBUyxFQUFFLFFBRmY7UUFHSUUsTUFBTSxFQUFFO01BSFosQ0FYYyxDQWdCZDtNQUNBO01BQ0E7TUFDQTtNQUNBO01BcEJjO0lBcERTLENBQXBCLENBQVg7SUEyRUEsQ0FBQyxHQUFHdkksS0FBSyxDQUFDOEksS0FBVixFQUFpQixZQUFZO01BQUUsT0FBT25JLEtBQUssQ0FBQ29JLEtBQU4sQ0FBWWhJLFNBQW5CO0lBQStCLENBQTlELEVBQWdFLFVBQVVsQixLQUFWLEVBQWlCO01BQzdFa0IsU0FBUyxDQUFDbEIsS0FBVixHQUFrQkEsS0FBbEI7SUFDSCxDQUZEO0lBR0EsSUFBSW1KLE9BQU8sR0FBRyxrR0FBZDs7SUFDQSxJQUFJQyxFQUFFLEdBQUcsQ0FBQyxHQUFHN0MsTUFBTSxDQUFDOEMsU0FBWCxHQUFUO0lBQUEsSUFBa0NDLFVBQVUsR0FBR0YsRUFBRSxDQUFDLENBQUQsQ0FBakQ7SUFBQSxJQUFzREcsV0FBVyxHQUFHSCxFQUFFLENBQUMsQ0FBRCxDQUF0RTs7SUFDQSxTQUFTSSxLQUFULENBQWVDLE9BQWYsRUFBd0I1QyxJQUF4QixFQUE4QjtNQUMxQmMsZUFBZSxDQUFDM0gsS0FBaEIsR0FBd0IsSUFBeEI7TUFDQTBKLFVBQVUsQ0FBQyxZQUFZO1FBQUUsT0FBUS9CLGVBQWUsQ0FBQzNILEtBQWhCLEdBQXdCLEtBQWhDO01BQXlDLENBQXhELEVBQTBELEtBQTFELENBQVY7TUFDQStILFlBQVksQ0FBQy9ILEtBQWIsR0FBcUJ5SixPQUFyQjtNQUNBekIsU0FBUyxDQUFDaEksS0FBVixHQUFrQjZHLElBQWxCO0lBQ0g7O0lBQ0QsSUFBSThDLGFBQWEsR0FBRyxDQUFDLEdBQUd4SixLQUFLLENBQUNzRCxRQUFWLEVBQW9CLFlBQVk7TUFDaEQsT0FBTyxrQkFBa0JiLE1BQWxCLElBQTRCZ0gsU0FBUyxDQUFDQyxjQUFWLEdBQTJCLENBQTlEO0lBQ0gsQ0FGbUIsQ0FBcEI7O0lBR0EsU0FBU0MsV0FBVCxHQUF1QjtNQUNuQlAsV0FBVztNQUNYM0csTUFBTSxDQUFDbUgsWUFBUCxDQUFvQkMsVUFBcEIsQ0FBK0IsY0FBL0I7SUFDSDs7SUFDRCxJQUFJQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUc5SixLQUFLLENBQUNzRCxRQUFWLEVBQW9CLFlBQVk7TUFDckQsT0FBT2lFLG9CQUFvQixDQUFDMUgsS0FBckIsSUFBOEI0QyxNQUFNLENBQUNzSCxVQUFQLEdBQW9CLElBQXpEO0lBQ0gsQ0FGd0IsQ0FBekI7O0lBR0EsSUFBSUMsc0JBQXNCLEdBQUcsU0FBekJBLHNCQUF5QixHQUFZO01BQ3JDLElBQUl2SixFQUFKLEVBQVF5RyxFQUFSOztNQUNBSyxvQkFBb0IsQ0FBQzFILEtBQXJCLEdBQTZCLENBQUMwSCxvQkFBb0IsQ0FBQzFILEtBQW5EO01BQ0E2SCxzQkFBc0IsQ0FBQzdILEtBQXZCLEdBQStCLENBQUNxSCxFQUFFLEdBQUcsQ0FBQ3pHLEVBQUUsR0FBR2dILGVBQWUsQ0FBQzVILEtBQXRCLE1BQWlDLElBQWpDLElBQXlDWSxFQUFFLEtBQUssS0FBSyxDQUFyRCxHQUF5RCxLQUFLLENBQTlELEdBQWtFQSxFQUFFLENBQUMsQ0FBRCxDQUExRSxNQUFtRixJQUFuRixJQUEyRnlHLEVBQUUsS0FBSyxLQUFLLENBQXZHLEdBQTJHLEtBQUssQ0FBaEgsR0FBb0hBLEVBQUUsQ0FBQytDLFlBQXRKO01BQ0FWLFVBQVUsQ0FBQyxZQUFZO1FBQ25CN0Isc0JBQXNCLENBQUM3SCxLQUF2QixHQUErQixFQUEvQjtNQUNILENBRlMsRUFFUCxFQUZPLENBQVY7TUFHQTBKLFVBQVUsQ0FBQyxZQUFZO1FBQ25CN0Isc0JBQXNCLENBQUM3SCxLQUF2QixHQUErQixNQUEvQjtNQUNILENBRlMsRUFFUCxHQUZPLENBQVY7SUFHSCxDQVZEOztJQVdBLENBQUMsR0FBR0csS0FBSyxDQUFDOEksS0FBVixFQUFpQixZQUFZO01BQUUsT0FBT25CLFdBQVcsQ0FBQzlILEtBQW5CO0lBQTJCLENBQTFELEVBQTRELFVBQVVxSyxPQUFWLEVBQW1CO01BQzNFLElBQUlBLE9BQUosRUFBYTtRQUNUaEosUUFBUSxDQUFDaUosZUFBVCxDQUF5Qi9JLEtBQXpCLENBQStCZ0osUUFBL0IsR0FBMEMsUUFBMUM7TUFDSCxDQUZELE1BSUlsSixRQUFRLENBQUNpSixlQUFULENBQXlCL0ksS0FBekIsQ0FBK0JnSixRQUEvQixHQUEwQyxNQUExQztJQUNQLENBTkQ7O0lBT0EsU0FBU0MsZ0JBQVQsR0FBNEI7TUFDeEIsSUFBSUMsSUFBSSxHQUFHN0gsTUFBTSxDQUFDOEgsUUFBUCxDQUFnQkMsUUFBM0I7TUFDQW5JLElBQUksQ0FBQ29HLFNBQUwsQ0FBZWdDLE9BQWYsQ0FBdUIsVUFBVUMsSUFBVixFQUFnQkMsR0FBaEIsRUFBcUI7UUFDeEN0SSxJQUFJLENBQUNvRyxTQUFMLENBQWVrQyxHQUFmLEVBQW9CLFFBQXBCLElBQWdDRCxJQUFJLENBQUNyQyxTQUFMLEtBQW1CaUMsSUFBbkIsR0FBMEIsSUFBMUIsR0FBaUMsS0FBakU7TUFDSCxDQUZEOztNQUdBLElBQUlBLElBQUksQ0FBQ00sUUFBTCxDQUFjLFVBQWQsS0FDQU4sSUFBSSxDQUFDTSxRQUFMLENBQWMsUUFBZCxDQURBLElBRUFOLElBQUksQ0FBQ00sUUFBTCxDQUFjLFdBQWQsQ0FGSixFQUVnQztRQUM1QnZJLElBQUksQ0FBQ29HLFNBQUwsQ0FBZSxDQUFmLEVBQWtCLFFBQWxCLElBQThCLElBQTlCO01BQ0g7O01BQ0QsSUFBSTZCLElBQUksQ0FBQ00sUUFBTCxDQUFjLGNBQWQsQ0FBSixFQUFtQztRQUMvQnZJLElBQUksQ0FBQ29HLFNBQUwsQ0FBZSxDQUFmLEVBQWtCLFFBQWxCLElBQThCLElBQTlCO01BQ0g7O01BQ0QsSUFBSTZCLElBQUksQ0FBQ00sUUFBTCxDQUFjLFFBQWQsQ0FBSixFQUE2QjtRQUN6QnZJLElBQUksQ0FBQ29HLFNBQUwsQ0FBZSxDQUFmLEVBQWtCLFFBQWxCLElBQThCLElBQTlCO01BQ0g7O01BQ0QsSUFBSTZCLElBQUksQ0FBQ00sUUFBTCxDQUFjLFdBQWQsQ0FBSixFQUFnQztRQUM1QnZJLElBQUksQ0FBQ3dHLGdCQUFMLENBQXNCLENBQXRCLEVBQXlCLFFBQXpCLElBQXFDLElBQXJDO01BQ0g7O01BQ0QsSUFBSXlCLElBQUksQ0FBQ00sUUFBTCxDQUFjLE9BQWQsQ0FBSixFQUE0QjtRQUN4QnZJLElBQUksQ0FBQ29HLFNBQUwsQ0FBZSxDQUFmLEVBQWtCLFFBQWxCLElBQThCLElBQTlCO1FBQ0FwRyxJQUFJLENBQUN3RyxnQkFBTCxDQUFzQixDQUF0QixFQUF5QixRQUF6QixJQUFxQyxJQUFyQztNQUNIOztNQUNELElBQUl5QixJQUFJLENBQUNNLFFBQUwsQ0FBYyxvQkFBZCxDQUFKLEVBQXlDO1FBQ3JDdkksSUFBSSxDQUFDd0csZ0JBQUwsQ0FBc0IsQ0FBdEIsRUFBeUIsUUFBekIsSUFBcUMsSUFBckM7TUFDSDs7TUFDRCxJQUFJeUIsSUFBSSxDQUFDTSxRQUFMLENBQWMsZ0JBQWQsS0FDQU4sSUFBSSxDQUFDTSxRQUFMLENBQWMsWUFBZCxDQURBLElBRUFOLElBQUksQ0FBQ00sUUFBTCxDQUFjLE9BQWQsQ0FGQSxJQUdBTixJQUFJLENBQUNNLFFBQUwsQ0FBYyxPQUFkLENBSEosRUFHNEI7UUFDeEJ2SSxJQUFJLENBQUN3RyxnQkFBTCxDQUFzQixDQUF0QixFQUF5QixRQUF6QixJQUFxQyxJQUFyQztNQUNIO0lBQ0osQ0FsS3lCLENBbUsxQjs7O0lBQ0EsSUFBSWdDLEVBQUUsR0FBRyxDQUFDLEdBQUd6RSxNQUFNLENBQUMwRSxVQUFYLEVBQXVCLHVCQUF2QixFQUFnRDtNQUNyREMsb0JBQW9CLEVBQUUsQ0FBQzdELEVBQUUsR0FBRzBDLFlBQVksQ0FBQ29CLE9BQWIsQ0FBcUIsc0JBQXJCLENBQU4sTUFBd0QsSUFBeEQsSUFBZ0U5RCxFQUFFLEtBQUssS0FBSyxDQUE1RSxHQUFnRkEsRUFBaEYsR0FBcUY7SUFEdEQsQ0FBaEQsQ0FBVDs7SUFHQSxTQUFTK0QsTUFBVCxHQUFrQjtNQUNkLE9BQU9wSCxTQUFTLENBQUMsSUFBRCxFQUFPLEtBQUssQ0FBWixFQUFlLEtBQUssQ0FBcEIsRUFBdUIsWUFBWTtRQUMvQyxPQUFPaUIsV0FBVyxDQUFDLElBQUQsRUFBTyxVQUFVckUsRUFBVixFQUFjO1VBQ25DLFFBQVFBLEVBQUUsQ0FBQ3VFLEtBQVg7WUFDSSxLQUFLLENBQUw7Y0FDSTZGLEVBQUUsQ0FBQ2hMLEtBQUgsQ0FBU2tMLG9CQUFULEdBQWdDLEVBQWhDO2NBQ0EsT0FBTyxDQUFDO2NBQUU7Y0FBSCxFQUFjNUssT0FBTyxXQUFQLENBQWdCK0ssSUFBaEIsQ0FBcUIsU0FBckIsRUFBZ0NuSixJQUFoQyxDQUFxQyxVQUFVQyxHQUFWLEVBQWU7Z0JBQ2pFLElBQUlBLEdBQUcsQ0FBQ21KLE1BQVIsRUFBZ0I7a0JBQ1oxSSxNQUFNLENBQUM4SCxRQUFQLENBQWdCL0gsSUFBaEIsR0FBdUIsR0FBdkI7Z0JBQ0g7Y0FDSixDQUpnQixDQUFkLENBQVA7O1lBS0osS0FBSyxDQUFMO2NBQ0kvQixFQUFFLENBQUN3RSxJQUFIOztjQUNBLE9BQU8sQ0FBQztjQUFFO2NBQUgsQ0FBUDtVQVZSO1FBWUgsQ0FiaUIsQ0FBbEI7TUFjSCxDQWZlLENBQWhCO0lBZ0JIO0lBQ0Q7QUFDUjtBQUNBO0FBQ0E7OztJQUNRLElBQUltRyxXQUFXLEdBQUcsQ0FBQyxHQUFHcEwsS0FBSyxDQUFDYyxHQUFWLEVBQWUsRUFBZixDQUFsQjtJQUNBLElBQUl1SyxVQUFVLEdBQUc1SSxNQUFNLENBQUM4SCxRQUFQLENBQWdCL0gsSUFBakM7O0lBQ0EsSUFBSTZJLFVBQVUsQ0FBQ1QsUUFBWCxDQUFvQixHQUFwQixDQUFKLEVBQThCO01BQzFCLElBQUlVLFdBQVcsR0FBRzdJLE1BQU0sQ0FBQzhILFFBQVAsQ0FBZ0JnQixNQUFsQztNQUFBLElBQTBDQyxTQUFTLEdBQUcsSUFBSUMsZUFBSixDQUFvQkgsV0FBcEIsQ0FBdEQ7TUFBQSxJQUF3RkMsTUFBTSxHQUFHQyxTQUFTLENBQUN0SSxHQUFWLENBQWMsR0FBZCxDQUFqRztNQUNBa0ksV0FBVyxDQUFDdkwsS0FBWixHQUFvQjBMLE1BQXBCO0lBQ0g7O0lBQ0QsSUFBSUcsT0FBTyxHQUFHLENBQUMsR0FBRzFMLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBZDs7SUFDQSxJQUFJNkssY0FBYyxHQUFHLFNBQWpCQSxjQUFpQixDQUFVOUosR0FBVixFQUFlO01BQ2hDLElBQUlwQixFQUFKOztNQUNBaUwsT0FBTyxDQUFDN0wsS0FBUixHQUFnQixJQUFoQjtNQUNBLElBQUkrTCxLQUFLLEdBQUcsQ0FBQ25MLEVBQUUsR0FBRzJLLFdBQVcsQ0FBQ3ZMLEtBQWxCLE1BQTZCLElBQTdCLElBQXFDWSxFQUFFLEtBQUssS0FBSyxDQUFqRCxHQUFxRCxLQUFLLENBQTFELEdBQThEQSxFQUFFLENBQUNvTCxPQUFILENBQVcsR0FBWCxFQUFnQixFQUFoQixDQUExRTtNQUNBLElBQUlDLFlBQVksR0FBRyxFQUFuQjs7TUFDQSxJQUFJVCxVQUFVLENBQUNULFFBQVgsQ0FBb0IsR0FBcEIsS0FBNEJTLFVBQVUsQ0FBQ1QsUUFBWCxDQUFvQixHQUFwQixDQUFoQyxFQUEwRDtRQUN0RCxJQUFJVSxXQUFXLEdBQUc3SSxNQUFNLENBQUM4SCxRQUFQLENBQWdCZ0IsTUFBbEM7UUFDQSxJQUFJUSxjQUFjLEdBQUdULFdBQVcsQ0FBQzNKLEtBQVosQ0FBa0IsR0FBbEIsQ0FBckI7UUFDQW1LLFlBQVksR0FBRyxNQUFNQyxjQUFjLENBQUNDLEtBQWYsQ0FBcUIsQ0FBckIsRUFBd0JDLElBQXhCLENBQTZCLEdBQTdCLENBQXJCO01BQ0g7O01BQ0QsSUFBSXpKLElBQUksR0FBR29KLEtBQUssR0FDVixHQUFHbkssTUFBSCxDQUFVSSxHQUFWLEVBQWUsS0FBZixFQUFzQkosTUFBdEIsQ0FBNkJtSyxLQUE3QixFQUFvQ25LLE1BQXBDLENBQTJDcUssWUFBM0MsQ0FEVSxHQUVWdEYsS0FBSyxDQUFDTSxVQUFOLEdBQ0kscUJBREosR0FFSSxjQUpWO01BS0FyRSxNQUFNLENBQUM4SCxRQUFQLENBQWdCL0gsSUFBaEIsR0FBdUJBLElBQXZCO0lBQ0gsQ0FoQkQ7O0lBaUJBLENBQUMsR0FBR3hDLEtBQUssQ0FBQ2dCLFNBQVYsRUFBcUIsWUFBWTtNQUM3QnFKLGdCQUFnQjs7TUFDaEIsSUFBSVQsWUFBWSxDQUFDb0IsT0FBYixDQUFxQixjQUFyQixNQUF5QyxNQUF6QyxJQUNBdkksTUFBTSxDQUFDOEgsUUFBUCxDQUFnQkMsUUFBaEIsS0FBNkIsYUFEakMsRUFDZ0Q7UUFDNUNyQixVQUFVLENBQUN0SixLQUFYLEdBQW1CLElBQW5CO01BQ0g7SUFDSixDQU5EOztJQU9BLElBQUlxTSxlQUFlLEdBQUcsU0FBbEJBLGVBQWtCLEdBQVk7TUFDOUJ6SixNQUFNLENBQUM4SCxRQUFQLENBQWdCL0gsSUFBaEIsR0FBdUIsVUFBdkI7SUFDSCxDQUZEOztJQUdBLENBQUMsR0FBR3hDLEtBQUssQ0FBQ21NLFdBQVYsRUFBdUIsWUFBWTtNQUMvQnZDLFlBQVksQ0FBQ0MsVUFBYixDQUF3QixjQUF4QjtJQUNILENBRkQ7SUFHQSxJQUFJcEcsWUFBWSxHQUFHO01BQUU5QyxLQUFLLEVBQUVBLEtBQVQ7TUFBZ0I2RixLQUFLLEVBQUVBLEtBQXZCO01BQThCWSxTQUFTLEVBQUVBLFNBQXpDO01BQW9ERSxnQkFBZ0IsRUFBRUEsZ0JBQXRFO01BQXdGQyxvQkFBb0IsRUFBRUEsb0JBQTlHO01BQW9JQyxlQUFlLEVBQUVBLGVBQXJKO01BQXNLekcsU0FBUyxFQUFFQSxTQUFqTDtNQUE0TDBHLGVBQWUsRUFBRUEsZUFBN007TUFBOE5DLHNCQUFzQixFQUFFQSxzQkFBdFA7TUFBOFFDLFdBQVcsRUFBRUEsV0FBM1I7TUFBd1NDLFlBQVksRUFBRUEsWUFBdFQ7TUFBb1VDLFNBQVMsRUFBRUEsU0FBL1U7TUFBMFZ4RixJQUFJLEVBQUVBLElBQWhXO01BQXNXMkcsT0FBTyxFQUFFQSxPQUEvVztNQUF3WEcsVUFBVSxFQUFFQSxVQUFwWTtNQUFnWkMsV0FBVyxFQUFFQSxXQUE3WjtNQUEwYUMsS0FBSyxFQUFFQSxLQUFqYjtNQUF3YkcsYUFBYSxFQUFFQSxhQUF2YztNQUFzZEcsV0FBVyxFQUFFQSxXQUFuZTtNQUFnZkcsa0JBQWtCLEVBQUVBLGtCQUFwZ0I7TUFBd2hCRSxzQkFBc0IsRUFBRUEsc0JBQWhqQjtNQUF3a0JLLGdCQUFnQixFQUFFQSxnQkFBMWxCO01BQTRtQlEsRUFBRSxFQUFFQSxFQUFobkI7TUFBb25CSSxNQUFNLEVBQUVBLE1BQTVuQjtNQUFvb0JHLFdBQVcsRUFBRUEsV0FBanBCO01BQThwQkMsVUFBVSxFQUFFQSxVQUExcUI7TUFBc3JCSyxPQUFPLEVBQUVBLE9BQS9yQjtNQUF3c0JDLGNBQWMsRUFBRUEsY0FBeHRCO01BQXd1Qk8sZUFBZSxFQUFFQSxlQUF6dkI7TUFBMHdCRSxXQUFXLEVBQUUvRixpQkFBaUIsV0FBeHlCO01BQWt6QmdHLEtBQUssRUFBRS9GLGtCQUFrQjtJQUEzMEIsQ0FBbkI7SUFDQTVHLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQjhELFlBQXRCLEVBQW9DLGlCQUFwQyxFQUF1RDtNQUFFRyxVQUFVLEVBQUUsS0FBZDtNQUFxQi9ELEtBQUssRUFBRTtJQUE1QixDQUF2RDtJQUNBLE9BQU80RCxZQUFQO0VBQ0g7QUF0UHdDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ2pEYTs7QUFDYixJQUFJbEUsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXVNLE9BQU8sR0FBRy9NLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxtRUFBRCxDQUFSLENBQTdCOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q3FJLElBQUksRUFBRSxZQURtQztFQUV6QzZELFVBQVUsRUFBRSxFQUY2QjtFQUd6Qy9GLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQ0ZxRSxJQUFJLEVBQUVoSCxNQURKO01BRUZpSCxRQUFRLEVBQUU7SUFGUjtFQURILENBSGtDO0VBU3pDcEcsS0FBSyxFQUFFLGVBQVVpRyxLQUFWLEVBQWlCO0lBQ3BCLElBQUluRSxJQUFJLEdBQUcsQ0FBQyxHQUFHdkMsS0FBSyxDQUFDME0sTUFBVixFQUFrQmhHLEtBQWxCLEVBQXlCbkUsSUFBcEM7SUFDQSxJQUFJb0ssY0FBYyxHQUFHcEssSUFBSSxDQUFDeEMsS0FBMUI7SUFDQSxPQUFPO01BQUU2TSxnQkFBZ0IsRUFBRUosT0FBTyxXQUEzQjtNQUFxQ0csY0FBYyxFQUFFQTtJQUFyRCxDQUFQO0VBQ0g7QUFid0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDUGE7O0FBQ2IvTSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlDLEtBQUssR0FBR0QsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLDBCQURpQztFQUV6Q0MsS0FBSyxFQUFFLGVBQVVDLE9BQVYsRUFBbUJDLEVBQW5CLEVBQXVCO0lBQzFCLElBQUlDLE1BQU0sR0FBR0QsRUFBRSxDQUFDQyxNQUFoQjtJQUNBQSxNQUFNO0lBQ04sSUFBSWlNLGlCQUFpQixHQUFHLENBQUMsR0FBRzNNLEtBQUssQ0FBQ3dELE1BQVYsRUFBa0IsbUJBQWxCLENBQXhCO0lBQ0EsSUFBSTRELFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxDQUFDLEdBQUdySCxLQUFLLENBQUNnQixTQUFWLEVBQXFCLFlBQVk7TUFDN0JFLFFBQVEsQ0FBQ2lKLGVBQVQsQ0FBeUIvSSxLQUF6QixDQUErQmdKLFFBQS9CLEdBQTBDLFFBQTFDO0lBQ0gsQ0FGRDtJQUdBLENBQUMsR0FBR3BLLEtBQUssQ0FBQ21NLFdBQVYsRUFBdUIsWUFBWTtNQUMvQmpMLFFBQVEsQ0FBQ2lKLGVBQVQsQ0FBeUIvSSxLQUF6QixDQUErQmdKLFFBQS9CLEdBQTBDLE1BQTFDO0lBQ0gsQ0FGRDtJQUdBLElBQUkzRyxZQUFZLEdBQUc7TUFBRWtKLGlCQUFpQixFQUFFQSxpQkFBckI7TUFBd0N2RixTQUFTLEVBQUVBO0lBQW5ELENBQW5CO0lBQ0ExSCxNQUFNLENBQUNDLGNBQVAsQ0FBc0I4RCxZQUF0QixFQUFvQyxpQkFBcEMsRUFBdUQ7TUFBRUcsVUFBVSxFQUFFLEtBQWQ7TUFBcUIvRCxLQUFLLEVBQUU7SUFBNUIsQ0FBdkQ7SUFDQSxPQUFPNEQsWUFBUDtFQUNIO0FBaEJ3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNMYTs7QUFDYixJQUFJbEUsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXFHLE1BQU0sR0FBR3JHLG1CQUFPLENBQUMsMkRBQUQsQ0FBcEI7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHRCxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk2TSxZQUFZLEdBQUc3TSxtQkFBTyxDQUFDLHlFQUFELENBQTFCOztBQUNBLElBQUlJLE9BQU8sR0FBR1osZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRDQUFELENBQVIsQ0FBN0I7O0FBQ0EsSUFBSThNLE9BQU8sR0FBRzlNLG1CQUFPLENBQUMsbUVBQUQsQ0FBckI7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNDLE1BQU0sRUFBRSxvQkFEaUM7RUFFekN3TSxLQUFLLEVBQUUsQ0FBQyxPQUFELEVBQVUsUUFBVixDQUZrQztFQUd6Q3ZNLEtBQUssRUFBRSxlQUFVQyxPQUFWLEVBQW1CQyxFQUFuQixFQUF1QjtJQUMxQixJQUFJeUcsRUFBSjs7SUFDQSxJQUFJeEcsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQUEsSUFBd0JxTSxJQUFJLEdBQUd0TSxFQUFFLENBQUNzTSxJQUFsQztJQUNBck0sTUFBTTtJQUNOLElBQUlDLEtBQUssR0FBRyxDQUFDLEdBQUdpTSxZQUFZLENBQUNoTSxRQUFqQixHQUFaO0lBQ0EsSUFBSWlLLEVBQUUsR0FBRyxDQUFDLEdBQUd6RSxNQUFNLENBQUMwRSxVQUFYLEVBQXVCLHVCQUF2QixFQUFnRDtNQUNyREMsb0JBQW9CLEVBQUUsQ0FBQzdELEVBQUUsR0FBRzBDLFlBQVksQ0FBQ29CLE9BQWIsQ0FBcUIsc0JBQXJCLENBQU4sTUFBd0QsSUFBeEQsSUFBZ0U5RCxFQUFFLEtBQUssS0FBSyxDQUE1RSxHQUFnRkEsRUFBaEYsR0FBcUY7SUFEdEQsQ0FBaEQsQ0FBVDtJQUdBLElBQUlFLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJMkYsaUJBQWlCLEdBQUcsQ0FBQyxHQUFHaE4sS0FBSyxDQUFDYyxHQUFWLEVBQWUsQ0FBZixDQUF4QjtJQUNBLElBQUltTSxTQUFTLEdBQUcsQ0FBQyxHQUFHak4sS0FBSyxDQUFDYyxHQUFWLEVBQWUsS0FBZixDQUFoQjtJQUNBLElBQUlvTSxTQUFTLEdBQUcsQ0FBQyxHQUFHbE4sS0FBSyxDQUFDYyxHQUFWLEVBQWVILEtBQUssQ0FBQ29JLEtBQU4sQ0FBWW9FLHFCQUEzQixDQUFoQjtJQUNBLElBQUlwQyxvQkFBb0IsR0FBRyxDQUFDLEdBQUcvSyxLQUFLLENBQUM4SCxRQUFWLEVBQW9Cb0YsU0FBUyxDQUFDck4sS0FBVixDQUFnQmtMLG9CQUFoQixDQUFxQyxZQUFyQyxDQUFwQixDQUEzQjtJQUNBLElBQUlxQyxTQUFTLEdBQUcsQ0FBQyxHQUFHcE4sS0FBSyxDQUFDYyxHQUFWLEdBQWhCO0lBQ0EsSUFBSXVNLGVBQWUsR0FBRyxDQUFDLEdBQUdyTixLQUFLLENBQUN3RCxNQUFWLEVBQWtCLGlCQUFsQixDQUF0QjtJQUNBLElBQUk4SixVQUFVLEdBQUcsQ0FBQyxHQUFHdE4sS0FBSyxDQUFDYyxHQUFWLEdBQWpCO0lBQ0EsSUFBSXlNLG1CQUFtQixHQUFHLENBQUMsR0FBR3ZOLEtBQUssQ0FBQzhILFFBQVYsRUFBb0I7TUFDMUN6RixJQUFJLEVBQUUsRUFEb0M7TUFFMUNtTCxHQUFHLEVBQUUsRUFGcUM7TUFHMUNyQyxNQUFNLEVBQUU7SUFIa0MsQ0FBcEIsQ0FBMUI7SUFLQSxDQUFDLEdBQUduTCxLQUFLLENBQUNnQixTQUFWLEVBQXFCLFlBQVk7TUFDN0IsSUFBSVAsRUFBSjs7TUFDQTJNLFNBQVMsQ0FBQ3ZOLEtBQVYsR0FBa0IsQ0FBQ1ksRUFBRSxHQUFHeU0sU0FBUyxDQUFDck4sS0FBVixDQUFnQmtMLG9CQUFoQixDQUFxQ0ksTUFBM0MsTUFBdUQsSUFBdkQsSUFBK0QxSyxFQUFFLEtBQUssS0FBSyxDQUEzRSxHQUErRUEsRUFBL0UsR0FBb0YsWUFBdEc7TUFDQWtNLGlCQUFpQjtJQUNwQixDQUpEOztJQUtBLElBQUlBLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBb0IsR0FBWTtNQUNoQ3hNLE9BQU8sV0FBUCxDQUFnQitDLEdBQWhCLENBQW9CLGlDQUFwQixFQUF1RG5CLElBQXZELENBQTRELFVBQVVDLEdBQVYsRUFBZTtRQUN2RSxJQUFJeUwsUUFBUSxHQUFHekwsR0FBRyxDQUFDSyxJQUFuQjs7UUFDQSxJQUFJLFVBQVVvTCxRQUFkLEVBQXdCO1VBQ3BCSCxVQUFVLENBQUN6TixLQUFYLEdBQW1CNE4sUUFBUSxDQUFDcEwsSUFBVCxDQUFjaUwsVUFBakM7VUFDQUYsU0FBUyxDQUFDdk4sS0FBVixHQUFrQjROLFFBQVEsQ0FBQ3BMLElBQVQsQ0FBYzhJLE1BQWhDLENBRm9CLENBR3BCOztVQUNBK0IsU0FBUyxDQUFDck4sS0FBVixDQUFnQmtMLG9CQUFoQixDQUFxQ3VDLFVBQXJDLEdBQ0lHLFFBQVEsQ0FBQ3BMLElBQVQsQ0FBY2lMLFVBRGxCO1VBRUFKLFNBQVMsQ0FBQ3JOLEtBQVYsQ0FBZ0JrTCxvQkFBaEIsQ0FBcUNJLE1BQXJDLEdBQThDc0MsUUFBUSxDQUFDcEwsSUFBVCxDQUFjOEksTUFBNUQ7VUFDQStCLFNBQVMsQ0FBQ3JOLEtBQVYsQ0FBZ0JrTCxvQkFBaEIsQ0FBcUN6QixPQUFyQyxHQUErQ21FLFFBQVEsQ0FBQ3BMLElBQVQsQ0FBY2lILE9BQTdEOztVQUNBLElBQUltRSxRQUFRLENBQUNwTCxJQUFULENBQWM4SSxNQUFkLEtBQXlCLFdBQTdCLEVBQTBDO1lBQ3RDdUMseUJBQXlCO1VBQzVCO1FBQ0osQ0FYRCxNQVlLO1VBQ0ROLFNBQVMsQ0FBQ3ZOLEtBQVYsR0FBa0IsV0FBbEI7UUFDSDtNQUNKLENBakJEOztNQWtCQSxJQUFJNk4seUJBQXlCLEdBQUcsU0FBNUJBLHlCQUE0QixHQUFZO1FBQ3hDLElBQUlDLFVBQVUsR0FBR0MsV0FBVyxDQUFDLFlBQVk7VUFDckN6TixPQUFPLFdBQVAsQ0FBZ0IrQyxHQUFoQixDQUFvQixpQ0FBcEIsRUFBdURuQixJQUF2RCxDQUE0RCxVQUFVQyxHQUFWLEVBQWU7WUFDdkUsSUFBSXZCLEVBQUo7O1lBQ0EsSUFBSWdOLFFBQVEsR0FBR3pMLEdBQUcsQ0FBQ0ssSUFBbkI7O1lBQ0EsSUFBSSxDQUFDb0wsUUFBUSxDQUFDSSxVQUFkLEVBQTBCO2NBQ3RCQyxhQUFhLENBQUNILFVBQUQsQ0FBYjtZQUNIOztZQUNELElBQUksVUFBVUYsUUFBZCxFQUF3QjtjQUNwQkgsVUFBVSxDQUFDek4sS0FBWCxHQUFtQjROLFFBQVEsQ0FBQ3BMLElBQVQsQ0FBY2lMLFVBQWpDO2NBQ0FGLFNBQVMsQ0FBQ3ZOLEtBQVYsR0FBa0I0TixRQUFRLENBQUNwTCxJQUFULENBQWM4SSxNQUFoQyxDQUZvQixDQUdwQjs7Y0FDQStCLFNBQVMsQ0FBQ3JOLEtBQVYsQ0FBZ0JrTCxvQkFBaEIsQ0FBcUN1QyxVQUFyQyxHQUNJRyxRQUFRLENBQUNwTCxJQUFULENBQWNpTCxVQURsQjtjQUVBSixTQUFTLENBQUNyTixLQUFWLENBQWdCa0wsb0JBQWhCLENBQXFDSSxNQUFyQyxHQUE4Q3NDLFFBQVEsQ0FBQ3BMLElBQVQsQ0FBYzhJLE1BQTVEO2NBQ0ErQixTQUFTLENBQUNyTixLQUFWLENBQWdCa0wsb0JBQWhCLENBQXFDekIsT0FBckMsR0FBK0NtRSxRQUFRLENBQUNwTCxJQUFULENBQWNpSCxPQUE3RDs7Y0FDQSxJQUFJOEQsU0FBUyxDQUFDdk4sS0FBVixLQUFvQixXQUF4QixFQUFxQztnQkFDakNpTyxhQUFhLENBQUNILFVBQUQsQ0FBYjtnQkFDQUksZ0JBQWdCLENBQUNiLFNBQVMsQ0FBQ3JOLEtBQVYsQ0FBZ0JrTCxvQkFBaEIsQ0FBcUN1QyxVQUF0QyxDQUFoQjs7Z0JBQ0EsSUFBSSxDQUFDLENBQUM3TSxFQUFFLEdBQUc4TSxtQkFBbUIsS0FBSyxJQUF4QixJQUFnQ0EsbUJBQW1CLEtBQUssS0FBSyxDQUE3RCxHQUFpRSxLQUFLLENBQXRFLEdBQTBFQSxtQkFBbUIsQ0FBQ0MsR0FBcEcsTUFBNkcsSUFBN0csSUFBcUgvTSxFQUFFLEtBQUssS0FBSyxDQUFqSSxHQUFxSSxLQUFLLENBQTFJLEdBQThJQSxFQUFFLENBQUN3RixNQUFsSixJQUE0SixDQUFoSyxFQUFtSztrQkFDL0pvSCxlQUFlLENBQUNXLFVBQWhCLEdBQTZCLElBQTdCO2tCQUNBWCxlQUFlLENBQUNZLGtCQUFoQixHQUFxQyxLQUFyQztrQkFDQVosZUFBZSxDQUFDYSxjQUFoQixHQUFpQzlHLFNBQVMsQ0FBQytHLEtBQVYsQ0FBZ0IsK0RBQWhCLENBQWpDO2dCQUNILENBSkQsTUFLSztrQkFDRGQsZUFBZSxDQUFDVyxVQUFoQixHQUE2QixJQUE3QjtrQkFDQVgsZUFBZSxDQUFDYSxjQUFoQixHQUFpQzlHLFNBQVMsQ0FBQytHLEtBQVYsQ0FBZ0IsMENBQWhCLENBQWpDO2tCQUNBNUUsVUFBVSxDQUFDLFlBQVk7b0JBQ25COEQsZUFBZSxDQUFDVyxVQUFoQixHQUE2QixLQUE3QjtrQkFDSCxDQUZTLEVBRVAsS0FGTyxDQUFWO2dCQUdIO2NBQ0o7WUFDSixDQXhCRCxNQXlCSztjQUNEWixTQUFTLENBQUN2TixLQUFWLEdBQWtCLFdBQWxCO1lBQ0g7VUFDSixDQWxDRDtRQW1DSCxDQXBDMkIsRUFvQ3pCLElBcEN5QixDQUE1QjtNQXFDSCxDQXRDRDtJQXVDSCxDQTFERDs7SUEyREEsSUFBSXVPLGVBQWUsR0FBRyxTQUFsQkEsZUFBa0IsR0FBWTtNQUM5QjtNQUNBaEIsU0FBUyxDQUFDdk4sS0FBVixHQUFrQixZQUFsQjs7TUFDQSxLQUFLLElBQUk4SyxHQUFULElBQWdCNEMsbUJBQW1CLENBQUNsTCxJQUFwQyxFQUEwQztRQUN0Q2tMLG1CQUFtQixDQUFDbEwsSUFBcEIsQ0FBeUJzSSxHQUF6QixFQUE4QlEsTUFBOUIsR0FBdUMsWUFBdkM7TUFDSDs7TUFDRG1DLFVBQVUsQ0FBQ3pOLEtBQVgsR0FBbUIwTixtQkFBbUIsQ0FBQ2xMLElBQXZDLENBTjhCLENBTzlCOztNQUNBLElBQUlnTSxRQUFRLEdBQUcsOENBQThDNU0sTUFBOUMsQ0FBcUQ4TCxtQkFBbUIsQ0FBQ0MsR0FBekUsRUFBOEUsR0FBOUUsQ0FBZjtNQUNBRCxtQkFBbUIsQ0FBQ3BDLE1BQXBCLEdBQTZCLEtBQTdCO01BQ0FvQyxtQkFBbUIsQ0FBQ0MsR0FBcEIsR0FBMEIsRUFBMUI7TUFDQUQsbUJBQW1CLENBQUNsTCxJQUFwQixHQUEyQixFQUEzQjtNQUNBbEMsT0FBTyxXQUFQLENBQWdCK0MsR0FBaEIsQ0FBb0JtTCxRQUFwQixFQUE4QnRNLElBQTlCLENBQW1DLFVBQVVDLEdBQVYsRUFBZTtRQUM5QyxJQUFJeUwsUUFBUSxHQUFHekwsR0FBRyxDQUFDSyxJQUFuQjs7UUFDQSxJQUFJb0wsUUFBUSxDQUFDckssT0FBYixFQUFzQjtVQUNsQjhKLFNBQVMsQ0FBQ3JOLEtBQVYsQ0FBZ0JrTCxvQkFBaEIsR0FBdUMwQyxRQUFRLENBQUNwTCxJQUFoRDtVQUNBc0ssaUJBQWlCO1FBQ3BCO01BQ0osQ0FORDtJQU9ILENBbkJEOztJQW9CQSxJQUFJb0IsZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFtQixDQUFVTyxZQUFWLEVBQXdCO01BQzNDLElBQUlDLGtCQUFrQixHQUFHLEVBQXpCO01BQ0EsSUFBSUMsV0FBVyxHQUFHRixZQUFZLElBQUk1TyxNQUFNLENBQUMrTyxPQUFQLENBQWVILFlBQWYsQ0FBbEMsQ0FGMkMsQ0FHM0M7O01BQ0EsSUFBSUksUUFBUSxHQUFHRixXQUFXLEtBQUssSUFBaEIsSUFBd0JBLFdBQVcsS0FBSyxLQUFLLENBQTdDLEdBQWlELEtBQUssQ0FBdEQsR0FBMERBLFdBQVcsQ0FBQ0csTUFBWixDQUFtQixVQUFVbE8sRUFBVixFQUFjO1FBQ3RHLElBQUlrSyxHQUFHLEdBQUdsSyxFQUFFLENBQUMsQ0FBRCxDQUFaO1FBQUEsSUFBaUJaLEtBQUssR0FBR1ksRUFBRSxDQUFDLENBQUQsQ0FBM0I7O1FBQ0EsSUFBSVosS0FBSyxJQUFJSCxNQUFNLENBQUNrUCxNQUFQLENBQWMvTyxLQUFkLEVBQXFCZ1AsT0FBckIsQ0FBNkIsUUFBN0IsSUFBeUMsQ0FBQyxDQUF2RCxFQUEwRDtVQUN0RE4sa0JBQWtCLENBQUNySSxJQUFuQixDQUF3QnJHLEtBQUssQ0FBQ2lQLFdBQTlCO1VBQ0EsT0FBT25FLEdBQVA7UUFDSDtNQUNKLENBTndFLENBQXpFO01BT0EsSUFBSW9FLG9CQUFvQixHQUFHTCxRQUFRLElBQUloUCxNQUFNLENBQUNzUCxXQUFQLENBQW1CTixRQUFuQixDQUF2Qzs7TUFDQSxJQUFJLENBQUNILGtCQUFrQixLQUFLLElBQXZCLElBQStCQSxrQkFBa0IsS0FBSyxLQUFLLENBQTNELEdBQStELEtBQUssQ0FBcEUsR0FBd0VBLGtCQUFrQixDQUFDdEksTUFBNUYsSUFBc0csQ0FBMUcsRUFBNkc7UUFDekdzSCxtQkFBbUIsQ0FBQ3BDLE1BQXBCLEdBQTZCLElBQTdCO1FBQ0FvQyxtQkFBbUIsQ0FBQ0MsR0FBcEIsR0FBMEJlLGtCQUExQjtRQUNBaEIsbUJBQW1CLENBQUNsTCxJQUFwQixHQUEyQjBNLG9CQUEzQjtRQUNBMUIsZUFBZSxDQUFDWSxrQkFBaEIsR0FBcUMsS0FBckM7UUFDQVosZUFBZSxDQUFDYSxjQUFoQixHQUFpQzlHLFNBQVMsQ0FBQytHLEtBQVYsQ0FBZ0IsK0RBQWhCLENBQWpDO01BQ0gsQ0FORCxNQU9LO1FBQ0RaLG1CQUFtQixDQUFDcEMsTUFBcEIsR0FBNkIsS0FBN0I7UUFDQW9DLG1CQUFtQixDQUFDQyxHQUFwQixHQUEwQixFQUExQjtRQUNBRCxtQkFBbUIsQ0FBQ2xMLElBQXBCLEdBQTJCLEVBQTNCO01BQ0g7SUFDSixDQXhCRDs7SUF5QkEsSUFBSTRNLG1CQUFtQixHQUFHLENBQUMsR0FBR2pQLEtBQUssQ0FBQ3NELFFBQVYsRUFBb0IsWUFBWTtNQUN0RCxJQUFJN0MsRUFBSixFQUFReUcsRUFBUjs7TUFDQSxJQUFJZ0ksS0FBSyxHQUFHLENBQVo7O01BQ0EsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxJQUNaLENBQUMsQ0FBQzFPLEVBQUUsR0FBR3lNLFNBQVMsQ0FBQ3JOLEtBQWhCLE1BQTJCLElBQTNCLElBQW1DWSxFQUFFLEtBQUssS0FBSyxDQUEvQyxHQUFtRCxLQUFLLENBQXhELEdBQTREQSxFQUFFLENBQUNzSyxvQkFBSCxDQUF3QixZQUF4QixDQUE3RCxLQUNHckwsTUFBTSxDQUFDa1AsTUFBUCxDQUFjLENBQUMxSCxFQUFFLEdBQUdnRyxTQUFTLENBQUNyTixLQUFoQixNQUEyQixJQUEzQixJQUFtQ3FILEVBQUUsS0FBSyxLQUFLLENBQS9DLEdBQW1ELEtBQUssQ0FBeEQsR0FBNERBLEVBQUUsQ0FBQzZELG9CQUFILENBQXdCLFlBQXhCLENBQTFFLEVBQ0s5RSxNQUhJLENBQWpCLEVBR3NCa0osQ0FBQyxFQUh2QixFQUcyQjtRQUN2QixJQUFJelAsTUFBTSxDQUFDa1AsTUFBUCxDQUFjMUIsU0FBUyxDQUFDck4sS0FBVixDQUFnQmtMLG9CQUFoQixDQUFxQyxZQUFyQyxDQUFkLEVBQWtFb0UsQ0FBbEUsRUFBcUUsUUFBckUsTUFBbUYsV0FBdkYsRUFBb0c7VUFDaEdELEtBQUs7UUFDUjtNQUNKOztNQUNELE9BQU9BLEtBQVA7SUFDSCxDQVp5QixDQUExQjtJQWFBLElBQUk3TCxlQUFlLEdBQUcsQ0FBQyxHQUFHckQsS0FBSyxDQUFDc0QsUUFBVixFQUFvQixZQUFZO01BQ2xELElBQUk3QyxFQUFKLEVBQVF5RyxFQUFSOztNQUNBLE9BQVMrSCxtQkFBbUIsQ0FBQ3BQLEtBQXBCLElBQ0osQ0FBQyxDQUFDWSxFQUFFLEdBQUdvSyxFQUFFLENBQUNoTCxLQUFULE1BQW9CLElBQXBCLElBQTRCWSxFQUFFLEtBQUssS0FBSyxDQUF4QyxHQUE0QyxLQUFLLENBQWpELEdBQXFEQSxFQUFFLENBQUNzSyxvQkFBSCxDQUF3QixZQUF4QixDQUF0RCxLQUNHckwsTUFBTSxDQUFDMFAsSUFBUCxDQUFZLENBQUNsSSxFQUFFLEdBQUcyRCxFQUFFLENBQUNoTCxLQUFULE1BQW9CLElBQXBCLElBQTRCcUgsRUFBRSxLQUFLLEtBQUssQ0FBeEMsR0FBNEMsS0FBSyxDQUFqRCxHQUFxREEsRUFBRSxDQUFDNkQsb0JBQUgsQ0FBd0IsWUFBeEIsQ0FBakUsRUFBd0c5RSxNQUZ2RyxDQUFELEdBR0osR0FISjtJQUlILENBTnFCLENBQXRCO0lBT0EsQ0FBQyxHQUFHakcsS0FBSyxDQUFDOEksS0FBVixFQUFpQixZQUFZO01BQUUsT0FBT25JLEtBQUssQ0FBQ29JLEtBQU4sQ0FBWW9FLHFCQUFuQjtJQUEyQyxDQUExRSxFQUE0RSxZQUFZO01BQ3BGa0MscUJBQXFCO01BQ3JCQyx1QkFBdUI7SUFDMUIsQ0FIRDtJQUlBLENBQUMsR0FBR3RQLEtBQUssQ0FBQzhJLEtBQVYsRUFBaUIsWUFBWTtNQUFFLE9BQU9tRSxTQUFTLENBQUNwTixLQUFqQjtJQUF5QixDQUF4RCxFQUEwRCxVQUFVQSxLQUFWLEVBQWlCO01BQUUsT0FBT2tOLElBQUksQ0FBQyxRQUFELEVBQVdsTixLQUFYLENBQVg7SUFBK0IsQ0FBNUc7O0lBQ0EsSUFBSXlQLHVCQUF1QixHQUFHLFNBQTFCQSx1QkFBMEIsR0FBWTtNQUN0Q2hDLFVBQVUsQ0FBQ3pOLEtBQVgsR0FBbUIrSixZQUFZLENBQUNvQixPQUFiLENBQXFCLHVCQUFyQixDQUFuQjtNQUNBc0MsVUFBVSxDQUFDek4sS0FBWCxHQUFtQixDQUFDLEdBQUdnTixPQUFPLENBQUMwQyxNQUFaLEVBQW9CakMsVUFBVSxDQUFDek4sS0FBL0IsS0FBeUMyUCxJQUFJLENBQUNDLEtBQUwsQ0FBV25DLFVBQVUsQ0FBQ3pOLEtBQXRCLENBQTVEO0lBQ0gsQ0FIRDs7SUFJQSxJQUFJd1AscUJBQXFCLEdBQUcsU0FBeEJBLHFCQUF3QixHQUFZO01BQ3BDekYsWUFBWSxDQUFDOEYsT0FBYixDQUFxQix1QkFBckIsRUFBOENGLElBQUksQ0FBQ0csU0FBTCxDQUFlekMsU0FBUyxDQUFDck4sS0FBekIsQ0FBOUM7SUFDSCxDQUZEOztJQUdBLENBQUMsR0FBR0csS0FBSyxDQUFDbU0sV0FBVixFQUF1QixZQUFZO01BQy9CeEwsS0FBSyxDQUFDWSxRQUFOLENBQWUsd0JBQWYsRUFBeUMsS0FBekM7SUFDSCxDQUZEOztJQUdBLElBQUlxTyxzQkFBc0IsR0FBRyxTQUF6QkEsc0JBQXlCLEdBQVk7TUFDckMsS0FBSyxJQUFJQyxRQUFULElBQXFCOUUsb0JBQXJCLEVBQTJDO1FBQ3ZDLE9BQU9BLG9CQUFvQixDQUFDOEUsUUFBRCxDQUEzQjtNQUNIO0lBQ0osQ0FKRDs7SUFLQSxDQUFDLEdBQUc3UCxLQUFLLENBQUM4SSxLQUFWLEVBQWlCLFlBQVk7TUFBRSxPQUFPbkksS0FBSyxDQUFDb0ksS0FBTixDQUFZaUUsaUJBQW5CO0lBQXVDLENBQXRFLEVBQXdFLFVBQVVuTixLQUFWLEVBQWlCO01BQ3JGLElBQUlZLEVBQUosRUFBUXlHLEVBQVI7O01BQ0E4RixpQkFBaUIsQ0FBQ25OLEtBQWxCLEdBQTBCQSxLQUExQjtNQUNBZ0wsRUFBRSxHQUFHLENBQUMsR0FBR3pFLE1BQU0sQ0FBQzBFLFVBQVgsRUFBdUIsdUJBQXZCLEVBQWdEO1FBQ2pEQyxvQkFBb0IsRUFBRSxDQUFDdEssRUFBRSxHQUFHbUosWUFBWSxDQUFDb0IsT0FBYixDQUFxQixzQkFBckIsQ0FBTixNQUF3RCxJQUF4RCxJQUFnRXZLLEVBQUUsS0FBSyxLQUFLLENBQTVFLEdBQWdGQSxFQUFoRixHQUFxRjtNQUQxRCxDQUFoRCxDQUFMO01BR0FtUCxzQkFBc0I7TUFDdEJqRCxpQkFBaUI7TUFDakJqTixNQUFNLENBQUNvUSxNQUFQLENBQWMvRSxvQkFBZCxFQUFvQyxDQUFDN0QsRUFBRSxHQUFHMkQsRUFBRSxDQUFDaEwsS0FBVCxNQUFvQixJQUFwQixJQUE0QnFILEVBQUUsS0FBSyxLQUFLLENBQXhDLEdBQTRDLEtBQUssQ0FBakQsR0FBcURBLEVBQUUsQ0FBQzZELG9CQUFILENBQXdCLFlBQXhCLENBQXpGO0lBQ0gsQ0FURCxFQVNHO01BQUVnRixJQUFJLEVBQUU7SUFBUixDQVRIO0lBVUEsSUFBSXRNLFlBQVksR0FBRztNQUFFOUMsS0FBSyxFQUFFQSxLQUFUO01BQWdCa0ssRUFBRSxFQUFFQSxFQUFwQjtNQUF3QnpELFNBQVMsRUFBRUEsU0FBbkM7TUFBOEM0RixpQkFBaUIsRUFBRUEsaUJBQWpFO01BQW9GQyxTQUFTLEVBQUVBLFNBQS9GO01BQTBHQyxTQUFTLEVBQUVBLFNBQXJIO01BQWdJbkMsb0JBQW9CLEVBQUVBLG9CQUF0SjtNQUE0S3FDLFNBQVMsRUFBRUEsU0FBdkw7TUFBa01MLElBQUksRUFBRUEsSUFBeE07TUFBOE1NLGVBQWUsRUFBRUEsZUFBL047TUFBZ1BDLFVBQVUsRUFBRUEsVUFBNVA7TUFBd1FDLG1CQUFtQixFQUFFQSxtQkFBN1I7TUFBa1RaLGlCQUFpQixFQUFFQSxpQkFBclU7TUFBd1Z5QixlQUFlLEVBQUVBLGVBQXpXO01BQTBYTCxnQkFBZ0IsRUFBRUEsZ0JBQTVZO01BQThaa0IsbUJBQW1CLEVBQUVBLG1CQUFuYjtNQUF3YzVMLGVBQWUsRUFBRUEsZUFBemQ7TUFBMGVpTSx1QkFBdUIsRUFBRUEsdUJBQW5nQjtNQUE0aEJELHFCQUFxQixFQUFFQSxxQkFBbmpCO01BQTBrQk8sc0JBQXNCLEVBQUVBO0lBQWxtQixDQUFuQjtJQUNBbFEsTUFBTSxDQUFDQyxjQUFQLENBQXNCOEQsWUFBdEIsRUFBb0MsaUJBQXBDLEVBQXVEO01BQUVHLFVBQVUsRUFBRSxLQUFkO01BQXFCL0QsS0FBSyxFQUFFO0lBQTVCLENBQXZEO0lBQ0EsT0FBTzRELFlBQVA7RUFDSDtBQTFMd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDWmE7O0FBQ2IvRCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q3FJLElBQUksRUFBRSxpQkFEbUM7RUFFekM2RCxVQUFVLEVBQUUsRUFGNkI7RUFHekMvRixLQUFLLEVBQUU7SUFDSHdKLElBQUksRUFBRTtNQUNGdEosSUFBSSxFQUFFdUosTUFESjtNQUVGdEosUUFBUSxFQUFFO0lBRlIsQ0FESDtJQUtIdUosSUFBSSxFQUFFO01BQ0Z4SixJQUFJLEVBQUV1SixNQURKO01BRUZ0SixRQUFRLEVBQUUsS0FGUjtNQUdGLFdBQVM7SUFIUCxDQUxIO0lBVUhELElBQUksRUFBRTtNQUNGQSxJQUFJLEVBQUV1SixNQURKO01BRUZ0SixRQUFRLEVBQUUsS0FGUjtNQUdGLFdBQVM7SUFIUCxDQVZIO0lBZUhyRSxJQUFJLEVBQUU7TUFDRm9FLElBQUksRUFBRXVKLE1BREo7TUFFRnRKLFFBQVEsRUFBRSxLQUZSO01BR0YsV0FBUztJQUhQLENBZkg7SUFvQkh3SixjQUFjLEVBQUU7TUFDWnpKLElBQUksRUFBRUssT0FETTtNQUVaSixRQUFRLEVBQUUsS0FGRTtNQUdaLFdBQVM7SUFIRztFQXBCYixDQUhrQztFQTZCekNwRyxLQUFLLEVBQUUsZUFBVWlHLEtBQVYsRUFBaUI7SUFDcEIsSUFBSTRKLE9BQU8sR0FBRyxFQUFkOztJQUNBLElBQUk1SixLQUFLLENBQUNFLElBQU4sS0FBZSxXQUFuQixFQUFnQztNQUM1QjBKLE9BQU8sR0FBRyx5QkFBVjtJQUNILENBRkQsTUFHSyxJQUFJNUosS0FBSyxDQUFDRSxJQUFOLEtBQWUsU0FBbkIsRUFBOEI7TUFDL0IwSixPQUFPLEdBQUcscUJBQVY7SUFDSCxDQUZJLE1BR0EsSUFBSTVKLEtBQUssQ0FBQ0UsSUFBTixLQUFlLFNBQW5CLEVBQThCO01BQy9CMEosT0FBTyxHQUFHLHVCQUFWO0lBQ0gsQ0FGSSxNQUdBO01BQ0RBLE9BQU8sR0FBRyxXQUFWO0lBQ0g7O0lBQ0QsT0FBTztNQUFFQSxPQUFPLEVBQUVBO0lBQVgsQ0FBUDtFQUNIO0FBNUN3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNIYTs7QUFDYixJQUFJdk0sU0FBUyxHQUFJLFFBQVEsS0FBS0EsU0FBZCxJQUE0QixVQUFVQyxPQUFWLEVBQW1CQyxVQUFuQixFQUErQkMsQ0FBL0IsRUFBa0NDLFNBQWxDLEVBQTZDO0VBQ3JGLFNBQVNDLEtBQVQsQ0FBZXJFLEtBQWYsRUFBc0I7SUFBRSxPQUFPQSxLQUFLLFlBQVltRSxDQUFqQixHQUFxQm5FLEtBQXJCLEdBQTZCLElBQUltRSxDQUFKLENBQU0sVUFBVUcsT0FBVixFQUFtQjtNQUFFQSxPQUFPLENBQUN0RSxLQUFELENBQVA7SUFBaUIsQ0FBNUMsQ0FBcEM7RUFBb0Y7O0VBQzVHLE9BQU8sS0FBS21FLENBQUMsS0FBS0EsQ0FBQyxHQUFHSSxPQUFULENBQU4sRUFBeUIsVUFBVUQsT0FBVixFQUFtQkUsTUFBbkIsRUFBMkI7SUFDdkQsU0FBU0MsU0FBVCxDQUFtQnpFLEtBQW5CLEVBQTBCO01BQUUsSUFBSTtRQUFFMEUsSUFBSSxDQUFDTixTQUFTLENBQUNPLElBQVYsQ0FBZTNFLEtBQWYsQ0FBRCxDQUFKO01BQThCLENBQXBDLENBQXFDLE9BQU80RSxDQUFQLEVBQVU7UUFBRUosTUFBTSxDQUFDSSxDQUFELENBQU47TUFBWTtJQUFFOztJQUMzRixTQUFTQyxRQUFULENBQWtCN0UsS0FBbEIsRUFBeUI7TUFBRSxJQUFJO1FBQUUwRSxJQUFJLENBQUNOLFNBQVMsQ0FBQyxPQUFELENBQVQsQ0FBbUJwRSxLQUFuQixDQUFELENBQUo7TUFBa0MsQ0FBeEMsQ0FBeUMsT0FBTzRFLENBQVAsRUFBVTtRQUFFSixNQUFNLENBQUNJLENBQUQsQ0FBTjtNQUFZO0lBQUU7O0lBQzlGLFNBQVNGLElBQVQsQ0FBY0ksTUFBZCxFQUFzQjtNQUFFQSxNQUFNLENBQUNDLElBQVAsR0FBY1QsT0FBTyxDQUFDUSxNQUFNLENBQUM5RSxLQUFSLENBQXJCLEdBQXNDcUUsS0FBSyxDQUFDUyxNQUFNLENBQUM5RSxLQUFSLENBQUwsQ0FBb0JrQyxJQUFwQixDQUF5QnVDLFNBQXpCLEVBQW9DSSxRQUFwQyxDQUF0QztJQUFzRjs7SUFDOUdILElBQUksQ0FBQyxDQUFDTixTQUFTLEdBQUdBLFNBQVMsQ0FBQ1ksS0FBVixDQUFnQmYsT0FBaEIsRUFBeUJDLFVBQVUsSUFBSSxFQUF2QyxDQUFiLEVBQXlEUyxJQUF6RCxFQUFELENBQUo7RUFDSCxDQUxNLENBQVA7QUFNSCxDQVJEOztBQVNBLElBQUlNLFdBQVcsR0FBSSxRQUFRLEtBQUtBLFdBQWQsSUFBOEIsVUFBVWhCLE9BQVYsRUFBbUJqQixJQUFuQixFQUF5QjtFQUNyRSxJQUFJa0MsQ0FBQyxHQUFHO0lBQUVDLEtBQUssRUFBRSxDQUFUO0lBQVlDLElBQUksRUFBRSxnQkFBVztNQUFFLElBQUlDLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBTyxDQUFYLEVBQWMsTUFBTUEsQ0FBQyxDQUFDLENBQUQsQ0FBUDtNQUFZLE9BQU9BLENBQUMsQ0FBQyxDQUFELENBQVI7SUFBYyxDQUF2RTtJQUF5RUMsSUFBSSxFQUFFLEVBQS9FO0lBQW1GQyxHQUFHLEVBQUU7RUFBeEYsQ0FBUjtFQUFBLElBQXNHQyxDQUF0RztFQUFBLElBQXlHQyxDQUF6RztFQUFBLElBQTRHSixDQUE1RztFQUFBLElBQStHSyxDQUEvRztFQUNBLE9BQU9BLENBQUMsR0FBRztJQUFFZixJQUFJLEVBQUVnQixJQUFJLENBQUMsQ0FBRCxDQUFaO0lBQWlCLFNBQVNBLElBQUksQ0FBQyxDQUFELENBQTlCO0lBQW1DLFVBQVVBLElBQUksQ0FBQyxDQUFEO0VBQWpELENBQUosRUFBNEQsT0FBT0MsTUFBUCxLQUFrQixVQUFsQixLQUFpQ0YsQ0FBQyxDQUFDRSxNQUFNLENBQUNDLFFBQVIsQ0FBRCxHQUFxQixZQUFXO0lBQUUsT0FBTyxJQUFQO0VBQWMsQ0FBakYsQ0FBNUQsRUFBZ0pILENBQXZKOztFQUNBLFNBQVNDLElBQVQsQ0FBY0csQ0FBZCxFQUFpQjtJQUFFLE9BQU8sVUFBVUMsQ0FBVixFQUFhO01BQUUsT0FBT3JCLElBQUksQ0FBQyxDQUFDb0IsQ0FBRCxFQUFJQyxDQUFKLENBQUQsQ0FBWDtJQUFzQixDQUE1QztFQUErQzs7RUFDbEUsU0FBU3JCLElBQVQsQ0FBY3NCLEVBQWQsRUFBa0I7SUFDZCxJQUFJUixDQUFKLEVBQU8sTUFBTSxJQUFJUyxTQUFKLENBQWMsaUNBQWQsQ0FBTjs7SUFDUCxPQUFPUCxDQUFDLEtBQUtBLENBQUMsR0FBRyxDQUFKLEVBQU9NLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVWQsQ0FBQyxHQUFHLENBQWQsQ0FBWixDQUFELEVBQWdDQSxDQUF2QztNQUEwQyxJQUFJO1FBQzFDLElBQUlNLENBQUMsR0FBRyxDQUFKLEVBQU9DLENBQUMsS0FBS0osQ0FBQyxHQUFHVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVEsQ0FBUixHQUFZUCxDQUFDLENBQUMsUUFBRCxDQUFiLEdBQTBCTyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFQLENBQUMsQ0FBQyxPQUFELENBQUQsS0FBZSxDQUFDSixDQUFDLEdBQUdJLENBQUMsQ0FBQyxRQUFELENBQU4sS0FBcUJKLENBQUMsQ0FBQ2EsSUFBRixDQUFPVCxDQUFQLENBQXJCLEVBQWdDLENBQS9DLENBQVIsR0FBNERBLENBQUMsQ0FBQ2QsSUFBakcsQ0FBRCxJQUEyRyxDQUFDLENBQUNVLENBQUMsR0FBR0EsQ0FBQyxDQUFDYSxJQUFGLENBQU9ULENBQVAsRUFBVU8sRUFBRSxDQUFDLENBQUQsQ0FBWixDQUFMLEVBQXVCakIsSUFBOUksRUFBb0osT0FBT00sQ0FBUDtRQUNwSixJQUFJSSxDQUFDLEdBQUcsQ0FBSixFQUFPSixDQUFYLEVBQWNXLEVBQUUsR0FBRyxDQUFDQSxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVEsQ0FBVCxFQUFZWCxDQUFDLENBQUNyRixLQUFkLENBQUw7O1FBQ2QsUUFBUWdHLEVBQUUsQ0FBQyxDQUFELENBQVY7VUFDSSxLQUFLLENBQUw7VUFBUSxLQUFLLENBQUw7WUFBUVgsQ0FBQyxHQUFHVyxFQUFKO1lBQVE7O1VBQ3hCLEtBQUssQ0FBTDtZQUFRZCxDQUFDLENBQUNDLEtBQUY7WUFBVyxPQUFPO2NBQUVuRixLQUFLLEVBQUVnRyxFQUFFLENBQUMsQ0FBRCxDQUFYO2NBQWdCakIsSUFBSSxFQUFFO1lBQXRCLENBQVA7O1VBQ25CLEtBQUssQ0FBTDtZQUFRRyxDQUFDLENBQUNDLEtBQUY7WUFBV00sQ0FBQyxHQUFHTyxFQUFFLENBQUMsQ0FBRCxDQUFOO1lBQVdBLEVBQUUsR0FBRyxDQUFDLENBQUQsQ0FBTDtZQUFVOztVQUN4QyxLQUFLLENBQUw7WUFBUUEsRUFBRSxHQUFHZCxDQUFDLENBQUNLLEdBQUYsQ0FBTVksR0FBTixFQUFMOztZQUFrQmpCLENBQUMsQ0FBQ0ksSUFBRixDQUFPYSxHQUFQOztZQUFjOztVQUN4QztZQUNJLElBQUksRUFBRWQsQ0FBQyxHQUFHSCxDQUFDLENBQUNJLElBQU4sRUFBWUQsQ0FBQyxHQUFHQSxDQUFDLENBQUNlLE1BQUYsR0FBVyxDQUFYLElBQWdCZixDQUFDLENBQUNBLENBQUMsQ0FBQ2UsTUFBRixHQUFXLENBQVosQ0FBbkMsTUFBdURKLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFWLElBQWVBLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFoRixDQUFKLEVBQXdGO2NBQUVkLENBQUMsR0FBRyxDQUFKO2NBQU87WUFBVzs7WUFDNUcsSUFBSWMsRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVLENBQVYsS0FBZ0IsQ0FBQ1gsQ0FBRCxJQUFPVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFYLENBQUMsQ0FBQyxDQUFELENBQVQsSUFBZ0JXLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUVgsQ0FBQyxDQUFDLENBQUQsQ0FBaEQsQ0FBSixFQUEyRDtjQUFFSCxDQUFDLENBQUNDLEtBQUYsR0FBVWEsRUFBRSxDQUFDLENBQUQsQ0FBWjtjQUFpQjtZQUFROztZQUN0RixJQUFJQSxFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVUsQ0FBVixJQUFlZCxDQUFDLENBQUNDLEtBQUYsR0FBVUUsQ0FBQyxDQUFDLENBQUQsQ0FBOUIsRUFBbUM7Y0FBRUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQVg7Y0FBZ0JBLENBQUMsR0FBR1csRUFBSjtjQUFRO1lBQVE7O1lBQ3JFLElBQUlYLENBQUMsSUFBSUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQXBCLEVBQXlCO2NBQUVILENBQUMsQ0FBQ0MsS0FBRixHQUFVRSxDQUFDLENBQUMsQ0FBRCxDQUFYOztjQUFnQkgsQ0FBQyxDQUFDSyxHQUFGLENBQU1jLElBQU4sQ0FBV0wsRUFBWDs7Y0FBZ0I7WUFBUTs7WUFDbkUsSUFBSVgsQ0FBQyxDQUFDLENBQUQsQ0FBTCxFQUFVSCxDQUFDLENBQUNLLEdBQUYsQ0FBTVksR0FBTjs7WUFDVmpCLENBQUMsQ0FBQ0ksSUFBRixDQUFPYSxHQUFQOztZQUFjO1FBWHRCOztRQWFBSCxFQUFFLEdBQUdoRCxJQUFJLENBQUNrRCxJQUFMLENBQVVqQyxPQUFWLEVBQW1CaUIsQ0FBbkIsQ0FBTDtNQUNILENBakJ5QyxDQWlCeEMsT0FBT04sQ0FBUCxFQUFVO1FBQUVvQixFQUFFLEdBQUcsQ0FBQyxDQUFELEVBQUlwQixDQUFKLENBQUw7UUFBYWEsQ0FBQyxHQUFHLENBQUo7TUFBUSxDQWpCTyxTQWlCRTtRQUFFRCxDQUFDLEdBQUdILENBQUMsR0FBRyxDQUFSO01BQVk7SUFqQjFEOztJQWtCQSxJQUFJVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVEsQ0FBWixFQUFlLE1BQU1BLEVBQUUsQ0FBQyxDQUFELENBQVI7SUFBYSxPQUFPO01BQUVoRyxLQUFLLEVBQUVnRyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFBLEVBQUUsQ0FBQyxDQUFELENBQVYsR0FBZ0IsS0FBSyxDQUE5QjtNQUFpQ2pCLElBQUksRUFBRTtJQUF2QyxDQUFQO0VBQy9CO0FBQ0osQ0ExQkQ7O0FBMkJBLElBQUlyRixlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJQyxLQUFLLEdBQUdELG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXNRLFVBQVUsR0FBR3RRLG1CQUFPLENBQUMsc0RBQUQsQ0FBeEI7O0FBQ0EsSUFBSXVRLGdCQUFnQixHQUFHL1EsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGlHQUFELENBQVIsQ0FBdEM7O0FBQ0FBLG1CQUFPLENBQUMsaUdBQUQsQ0FBUDs7QUFDQSxJQUFJd1EsUUFBUSxHQUFHaFIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLCtDQUFELENBQVIsQ0FBOUI7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsaUJBRGlDO0VBRXpDa0csS0FBSyxFQUFFO0lBQ0hnSyxhQUFhLEVBQUU7TUFDWDlKLElBQUksRUFBRWhILE1BREs7TUFFWGlILFFBQVEsRUFBRSxLQUZDO01BR1gsV0FBUyxvQkFBWTtRQUFFLE9BQVEsRUFBUjtNQUFjO0lBSDFCLENBRFo7SUFNSDhKLFNBQVMsRUFBRTtNQUNQL0osSUFBSSxFQUFFdUosTUFEQztNQUVQdEosUUFBUSxFQUFFO0lBRkgsQ0FOUjtJQVVIK0osU0FBUyxFQUFFO01BQ1BoSyxJQUFJLEVBQUV1SixNQURDO01BRVB0SixRQUFRLEVBQUUsS0FGSDtNQUdQLFdBQVM7SUFIRixDQVZSO0lBZUhnSyxXQUFXLEVBQUU7TUFDVGpLLElBQUksRUFBRXVKLE1BREc7TUFFVHRKLFFBQVEsRUFBRSxLQUZEO01BR1QsV0FBUztJQUhBLENBZlY7SUFvQkhpSyxTQUFTLEVBQUU7TUFDUGxLLElBQUksRUFBRUssT0FEQztNQUVQSixRQUFRLEVBQUUsS0FGSDtNQUdQLFdBQVM7SUFIRixDQXBCUjtJQXlCSGtLLFlBQVksRUFBRTtNQUNWbkssSUFBSSxFQUFFdUosTUFESTtNQUVWdEosUUFBUSxFQUFFLEtBRkE7TUFHVixXQUFTO0lBSEMsQ0F6Qlg7SUE4QkhtSyxVQUFVLEVBQUU7TUFDUnBLLElBQUksRUFBRXVKLE1BREU7TUFFUnRKLFFBQVEsRUFBRSxLQUZGO01BR1IsV0FBUztJQUhELENBOUJUO0lBbUNIb0ssUUFBUSxFQUFFO01BQ05ySyxJQUFJLEVBQUV1SixNQURBO01BRU50SixRQUFRLEVBQUUsS0FGSjtNQUdOLFdBQVM7SUFISDtFQW5DUCxDQUZrQztFQTJDekNtRyxLQUFLLEVBQUUsQ0FDSCxxQkFERyxFQUVILG9CQUZHLEVBR0gsYUFIRyxDQTNDa0M7RUFnRHpDdk0sS0FBSyxFQUFFLGVBQVVDLE9BQVYsRUFBbUJDLEVBQW5CLEVBQXVCO0lBQzFCLElBQUl1USxLQUFLLEdBQUcsSUFBWjs7SUFDQSxJQUFJdFEsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQUEsSUFBd0JxTSxJQUFJLEdBQUd0TSxFQUFFLENBQUNzTSxJQUFsQztJQUNBck0sTUFBTTtJQUNOLElBQUk4RixLQUFLLEdBQUdoRyxPQUFaO0lBQ0EsSUFBSXlRLG9CQUFvQixHQUFHLENBQUMsR0FBR2pSLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEVBQWYsQ0FBM0I7SUFDQSxJQUFJb1EsYUFBYSxHQUFHLENBQUMsR0FBR2xSLEtBQUssQ0FBQ2MsR0FBVixFQUFlLElBQWYsQ0FBcEI7SUFDQSxJQUFJcVEsUUFBUSxHQUFHLENBQUMsR0FBR25SLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEVBQWYsQ0FBZjtJQUNBLElBQUlzUSxZQUFZLEdBQUcsQ0FBQyxHQUFHcFIsS0FBSyxDQUFDYyxHQUFWLEdBQW5CO0lBQ0EsSUFBSXVRLFlBQVksR0FBRyxDQUFDLEdBQUdyUixLQUFLLENBQUNjLEdBQVYsRUFBZTBGLEtBQUssQ0FBQ3VLLFFBQXJCLENBQW5CO0lBQ0FJLFFBQVEsQ0FBQ3RSLEtBQVQsR0FBaUIyRyxLQUFLLENBQUNnSyxhQUFOLElBQXVCOVEsTUFBTSxDQUFDa1AsTUFBUCxDQUFjcEksS0FBSyxDQUFDZ0ssYUFBcEIsRUFBbUMsQ0FBbkMsQ0FBeEM7SUFDQSxJQUFJYyxXQUFXLEdBQUcsQ0FBQyxHQUFHdFIsS0FBSyxDQUFDYyxHQUFWLEVBQWUsRUFBZixDQUFsQjtJQUNBd1EsV0FBVyxDQUFDelIsS0FBWixHQUFvQjJHLEtBQUssQ0FBQ2dLLGFBQU4sSUFBdUI5USxNQUFNLENBQUMwUCxJQUFQLENBQVk1SSxLQUFLLENBQUNnSyxhQUFsQixFQUFpQyxDQUFqQyxDQUEzQztJQUNBLElBQUllLGlCQUFpQixHQUFHLENBQUMsR0FBR3ZSLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBeEI7SUFDQSxJQUFJMFEsV0FBVyxHQUFHLENBQUMsR0FBR3hSLEtBQUssQ0FBQ3NELFFBQVYsRUFBb0IsWUFBWTtNQUFFLE9BQU9rRCxLQUFLLENBQUNpSyxTQUFiO0lBQXlCLENBQTNELENBQWxCO0lBQ0EsSUFBSWdCLEtBQUssR0FBRyxDQUFDLEdBQUd6UixLQUFLLENBQUNjLEdBQVYsRUFBZTBGLEtBQUssQ0FBQ3VLLFFBQXJCLENBQVo7SUFDQSxJQUFJVyxTQUFTLEdBQUcsQ0FBQyxHQUFHbkIsUUFBUSxXQUFaLEVBQXNCLElBQUlvQixJQUFKLEVBQXRCLEVBQWtDQyxNQUFsQyxDQUF5QyxZQUF6QyxDQUFoQjtJQUNBLElBQUlDLFlBQVksR0FBRyxDQUFDLEdBQUc3UixLQUFLLENBQUNjLEdBQVYsRUFBZSxDQUM5QixJQUFJNlEsSUFBSixFQUQ4QixFQUU5QixJQUFJQSxJQUFKLENBQVMsSUFBSUEsSUFBSixHQUFXRyxPQUFYLENBQW1CLElBQUlILElBQUosR0FBV0ksT0FBWCxLQUF1QixDQUExQyxDQUFULENBRjhCLENBQWYsQ0FBbkI7SUFJQSxJQUFJQyxVQUFVLEdBQUcsQ0FBQyxHQUFHaFMsS0FBSyxDQUFDYyxHQUFWLEVBQWUsSUFBZixDQUFqQjtJQUNBLENBQUMsR0FBR2QsS0FBSyxDQUFDZ0IsU0FBVixFQUFxQixZQUFZO01BQzdCNlEsWUFBWSxDQUFDaFMsS0FBYixDQUFtQixDQUFuQixJQUF3QixFQUF4QjtNQUNBZ1MsWUFBWSxDQUFDaFMsS0FBYixDQUFtQixDQUFuQixJQUF3QjZSLFNBQXhCO01BQ0FPLG1CQUFtQixDQUFDLEVBQUQsRUFBS1AsU0FBTCxFQUFnQkQsS0FBSyxDQUFDNVIsS0FBdEIsQ0FBbkI7SUFDSCxDQUpEO0lBS0EsQ0FBQyxHQUFHRyxLQUFLLENBQUM4SSxLQUFWLEVBQWlCLFlBQVk7TUFBRSxPQUFPLENBQUN0QyxLQUFLLENBQUNzSyxVQUFQLEVBQW1CdEssS0FBSyxDQUFDcUssWUFBekIsQ0FBUDtJQUFnRCxDQUEvRSxFQUFpRixZQUFZO01BQ3pGLElBQUlySyxLQUFLLENBQUNzSyxVQUFOLElBQW9CdEssS0FBSyxDQUFDcUssWUFBOUIsRUFBNEM7UUFDeENnQixZQUFZLENBQUNoUyxLQUFiLENBQW1CLENBQW5CLElBQXdCMkcsS0FBSyxDQUFDcUssWUFBOUI7UUFDQWdCLFlBQVksQ0FBQ2hTLEtBQWIsQ0FBbUIsQ0FBbkIsSUFBd0IyRyxLQUFLLENBQUNzSyxVQUE5QjtNQUNIO0lBQ0osQ0FMRCxFQUtHO01BQUVmLElBQUksRUFBRTtJQUFSLENBTEg7O0lBTUEsSUFBSW1DLDJCQUEyQixHQUFHLFNBQTlCQSwyQkFBOEIsQ0FBVUMsS0FBVixFQUFpQjtNQUMvQyxJQUFJQyxpQkFBaUIsR0FBR2xSLFFBQVEsQ0FBQ21SLHNCQUFULENBQWdDLGtCQUFoQyxDQUF4QjtNQUNBcEIsb0JBQW9CLENBQUNwUixLQUFyQixHQUE2QnNTLEtBQTdCO01BQ0FDLGlCQUFpQixDQUFDRCxLQUFELENBQWpCLENBQXlCRyxTQUF6QixDQUFtQ0MsR0FBbkMsQ0FBdUMsMEJBQXZDOztNQUNBLEtBQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0osaUJBQWlCLENBQUNuTSxNQUF0QyxFQUE4Q3VNLENBQUMsRUFBL0MsRUFBbUQ7UUFDL0MsSUFBSUEsQ0FBQyxLQUFLTCxLQUFWLEVBQWlCO1VBQ2JDLGlCQUFpQixDQUFDSSxDQUFELENBQWpCLENBQXFCRixTQUFyQixDQUErQkcsTUFBL0IsQ0FBc0MsMEJBQXRDO1FBQ0g7TUFDSjtJQUNKLENBVEQ7O0lBVUEsQ0FBQyxHQUFHelMsS0FBSyxDQUFDOEksS0FBVixFQUFpQixZQUFZO01BQUUsT0FBT3RDLEtBQUssQ0FBQ29LLFNBQWI7SUFBeUIsQ0FBeEQsRUFBMEQsWUFBWTtNQUNsRThCLFNBQVMsR0FBRzNRLElBQVosQ0FBaUIsWUFBWTtRQUN6QmdMLElBQUksQ0FBQyxhQUFELENBQUo7TUFDSCxDQUZEO0lBR0gsQ0FKRCxFQUlHO01BQUVnRCxJQUFJLEVBQUU7SUFBUixDQUpIOztJQUtBLElBQUk0Qyx1QkFBdUIsR0FBRyxTQUExQkEsdUJBQTBCLEdBQVk7TUFDdEMxQixvQkFBb0IsQ0FBQ3BSLEtBQXJCLEdBQTZCLEVBQTdCO0lBQ0gsQ0FGRDs7SUFHQSxJQUFJK1Msb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUF1QixHQUFZO01BQ25DckIsaUJBQWlCLENBQUMxUixLQUFsQixHQUEwQixLQUExQjtNQUNBLElBQUl1UyxpQkFBaUIsR0FBR2xSLFFBQVEsQ0FBQ21SLHNCQUFULENBQWdDLGtCQUFoQyxDQUF4Qjs7TUFDQSxJQUFJUSxPQUFPLEdBQUcsU0FBVkEsT0FBVSxDQUFVMUQsQ0FBVixFQUFhO1FBQ3ZCaUQsaUJBQWlCLENBQUNqRCxDQUFELENBQWpCLENBQXFCMkQsZ0JBQXJCLENBQXNDLE9BQXRDLEVBQStDLFlBQVk7VUFDdkRaLDJCQUEyQixDQUFDL0MsQ0FBRCxDQUEzQjtRQUNILENBRkQ7TUFHSCxDQUpEOztNQUtBLEtBQUssSUFBSUEsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR2lELGlCQUFpQixDQUFDbk0sTUFBdEMsRUFBOENrSixDQUFDLEVBQS9DLEVBQW1EO1FBQy9DMEQsT0FBTyxDQUFDMUQsQ0FBRCxDQUFQO01BQ0g7O01BQ0QsSUFBSTRELGFBQWEsR0FBRzdSLFFBQVEsQ0FBQ21SLHNCQUFULENBQWdDLG1CQUFoQyxDQUFwQjs7TUFDQSxLQUFLLElBQUlsRCxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHNEQsYUFBYSxDQUFDOU0sTUFBbEMsRUFBMENrSixDQUFDLEVBQTNDLEVBQStDO1FBQzNDNEQsYUFBYSxDQUFDNUQsQ0FBRCxDQUFiLENBQWlCMkQsZ0JBQWpCLENBQWtDLE9BQWxDLEVBQTJDSCx1QkFBM0M7TUFDSDtJQUNKLENBZkQ7O0lBZ0JBLElBQUlLLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBeUIsR0FBWTtNQUNyQyxJQUFJWixpQkFBaUIsR0FBR2xSLFFBQVEsQ0FBQ21SLHNCQUFULENBQWdDLGtCQUFoQyxDQUF4Qjs7TUFDQSxJQUFJWSxPQUFPLEdBQUcsU0FBVkEsT0FBVSxDQUFVOUQsQ0FBVixFQUFhO1FBQ3ZCaUQsaUJBQWlCLENBQUNqRCxDQUFELENBQWpCLENBQXFCK0QsbUJBQXJCLENBQXlDLE9BQXpDLEVBQWtELFlBQVk7VUFDMURoQiwyQkFBMkIsQ0FBQy9DLENBQUQsQ0FBM0I7UUFDSCxDQUZEO01BR0gsQ0FKRDs7TUFLQSxLQUFLLElBQUlBLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdpRCxpQkFBaUIsQ0FBQ25NLE1BQXRDLEVBQThDa0osQ0FBQyxFQUEvQyxFQUFtRDtRQUMvQzhELE9BQU8sQ0FBQzlELENBQUQsQ0FBUDtNQUNIOztNQUNELElBQUk0RCxhQUFhLEdBQUc3UixRQUFRLENBQUNtUixzQkFBVCxDQUFnQyxtQkFBaEMsQ0FBcEI7O01BQ0EsS0FBSyxJQUFJbEQsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRzRELGFBQWEsQ0FBQzlNLE1BQWxDLEVBQTBDa0osQ0FBQyxFQUEzQyxFQUErQztRQUMzQzRELGFBQWEsQ0FBQzVELENBQUQsQ0FBYixDQUFpQitELG1CQUFqQixDQUFxQyxPQUFyQyxFQUE4Q1AsdUJBQTlDO01BQ0g7SUFDSixDQWREOztJQWVBLElBQUlRLHVCQUF1QixHQUFHLFNBQTFCQSx1QkFBMEIsR0FBWTtNQUN0QzVCLGlCQUFpQixDQUFDMVIsS0FBbEIsR0FBMEIsQ0FBQzBSLGlCQUFpQixDQUFDMVIsS0FBN0M7SUFDSCxDQUZEOztJQUdBLElBQUk2UyxTQUFTLEdBQUcsU0FBWkEsU0FBWSxHQUFZO01BQUUsT0FBTzdPLFNBQVMsQ0FBQ21OLEtBQUQsRUFBUSxLQUFLLENBQWIsRUFBZ0IsS0FBSyxDQUFyQixFQUF3QixZQUFZO1FBQzlFLE9BQU9sTSxXQUFXLENBQUMsSUFBRCxFQUFPLFVBQVVyRSxFQUFWLEVBQWM7VUFDbkN3UixtQkFBbUIsQ0FBQyxFQUFELEVBQUssRUFBTCxDQUFuQjtVQUNBSixZQUFZLENBQUNoUyxLQUFiLENBQW1CLENBQW5CLElBQXdCLEVBQXhCO1VBQ0FnUyxZQUFZLENBQUNoUyxLQUFiLENBQW1CLENBQW5CLElBQXdCLEVBQXhCO1VBQ0E0UixLQUFLLENBQUM1UixLQUFOLEdBQWMsVUFBZDtVQUNBLE9BQU8sQ0FBQztVQUFFO1VBQUgsRUFBZTtZQUFFdUQsT0FBTyxFQUFFO1VBQVgsQ0FBZixDQUFQO1FBQ0gsQ0FOaUIsQ0FBbEI7TUFPSCxDQVI2QyxDQUFoQjtJQVF6QixDQVJMOztJQVNBLElBQUlnUSxZQUFZLEdBQUcsQ0FBQyxHQUFHcFQsS0FBSyxDQUFDc0QsUUFBVixFQUFvQixZQUFZO01BQUUsT0FBTyxDQUN4RDtRQUNJMEIsS0FBSyxFQUFFLE9BRFg7UUFFSXFPLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBR2hELFVBQVUsQ0FBQ2lELFVBQWYsRUFBMkIsSUFBSTNCLElBQUosRUFBM0IsQ0FBRCxFQUF5QyxDQUFDLEdBQUd0QixVQUFVLENBQUNrRCxRQUFmLEVBQXlCLElBQUk1QixJQUFKLEVBQXpCLENBQXpDO01BRlgsQ0FEd0QsRUFLeEQ7UUFDSTNNLEtBQUssRUFBRSxXQURYO1FBRUlxTyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUdoRCxVQUFVLENBQUNtRCxXQUFmLEVBQTRCLElBQUk3QixJQUFKLEVBQTVCLENBQUQsRUFBMEMsQ0FBQyxHQUFHdEIsVUFBVSxDQUFDa0QsUUFBZixFQUF5QixJQUFJNUIsSUFBSixFQUF6QixDQUExQztNQUZYLENBTHdELEVBU3hEO1FBQ0kzTSxLQUFLLEVBQUUsYUFEWDtRQUVJcU8sS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHaEQsVUFBVSxDQUFDb0QsT0FBZixFQUF3QixJQUFJOUIsSUFBSixFQUF4QixFQUFvQyxDQUFwQyxDQUFELEVBQXlDLENBQUMsR0FBR3RCLFVBQVUsQ0FBQ2tELFFBQWYsRUFBeUIsSUFBSTVCLElBQUosRUFBekIsQ0FBekM7TUFGWCxDQVR3RCxFQWF4RDtRQUNJM00sS0FBSyxFQUFFLFlBRFg7UUFFSXFPLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBR2hELFVBQVUsQ0FBQ3FELFlBQWYsRUFBNkIsSUFBSS9CLElBQUosRUFBN0IsQ0FBRCxFQUEyQyxDQUFDLEdBQUd0QixVQUFVLENBQUNzRCxVQUFmLEVBQTJCLElBQUloQyxJQUFKLEVBQTNCLENBQTNDO01BRlgsQ0Fid0QsRUFpQnhEO1FBQ0kzTSxLQUFLLEVBQUUsY0FEWDtRQUVJcU8sS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHaEQsVUFBVSxDQUFDcUQsWUFBZixFQUE2QixDQUFDLEdBQUdyRCxVQUFVLENBQUN1RCxTQUFmLEVBQTBCLElBQUlqQyxJQUFKLEVBQTFCLEVBQXNDLENBQXRDLENBQTdCLENBQUQsRUFBeUUsQ0FBQyxHQUFHdEIsVUFBVSxDQUFDc0QsVUFBZixFQUEyQixJQUFJaEMsSUFBSixFQUEzQixDQUF6RTtNQUZYLENBakJ3RCxFQXFCeEQ7UUFDSTNNLEtBQUssRUFBRSxXQURYO1FBRUlxTyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUdoRCxVQUFVLENBQUN3RCxXQUFmLEVBQTRCLElBQUlsQyxJQUFKLEVBQTVCLENBQUQsRUFBMEMsQ0FBQyxHQUFHdEIsVUFBVSxDQUFDa0QsUUFBZixFQUF5QixJQUFJNUIsSUFBSixFQUF6QixDQUExQztNQUZYLENBckJ3RCxFQXlCeEQ7UUFDSTNNLEtBQUssRUFBRSxnQkFEWDtRQUVJcU8sS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHaEQsVUFBVSxDQUFDcUQsWUFBZixFQUE2QixDQUFDLEdBQUdyRCxVQUFVLENBQUN1RCxTQUFmLEVBQTBCLElBQUlqQyxJQUFKLEVBQTFCLEVBQXNDLEVBQXRDLENBQTdCLENBQUQsRUFBMEUsQ0FBQyxHQUFHdEIsVUFBVSxDQUFDa0QsUUFBZixFQUF5QixJQUFJNUIsSUFBSixFQUF6QixDQUExRTtNQUZYLENBekJ3RCxFQTZCeEQ7UUFDSTNNLEtBQUssRUFBRSxVQURYO1FBRUlxTyxLQUFLLEVBQUUsQ0FBQyxJQUFJMUIsSUFBSixDQUFTSCxXQUFXLENBQUMzUixLQUFyQixDQUFELEVBQThCLENBQUMsR0FBR3dRLFVBQVUsQ0FBQ2tELFFBQWYsRUFBeUIsSUFBSTVCLElBQUosRUFBekIsQ0FBOUI7TUFGWCxDQTdCd0QsQ0FBUDtJQWlDakQsQ0FqQ2UsQ0FBbkI7O0lBa0NBLElBQUltQyxXQUFXLEdBQUcsU0FBZEEsV0FBYyxDQUFVQyxJQUFWLEVBQWdCO01BQzlCLElBQUlDLE9BQU8sR0FBRyxJQUFJckMsSUFBSixDQUFTb0MsSUFBVCxDQUFkO01BQ0EsSUFBSUUsSUFBSSxHQUFHRCxPQUFPLENBQUNFLFdBQVIsRUFBWDtNQUNBLElBQUlDLEtBQUssR0FBR2xFLE1BQU0sQ0FBQytELE9BQU8sQ0FBQ0ksUUFBUixLQUFxQixDQUF0QixDQUFOLENBQStCQyxRQUEvQixDQUF3QyxDQUF4QyxFQUEyQyxHQUEzQyxDQUFaO01BQ0EsSUFBSUMsR0FBRyxHQUFHckUsTUFBTSxDQUFDK0QsT0FBTyxDQUFDakMsT0FBUixFQUFELENBQU4sQ0FBMEJzQyxRQUExQixDQUFtQyxDQUFuQyxFQUFzQyxHQUF0QyxDQUFWO01BQ0EsT0FBTyxHQUFHNVMsTUFBSCxDQUFVd1MsSUFBVixFQUFnQixHQUFoQixFQUFxQnhTLE1BQXJCLENBQTRCMFMsS0FBNUIsRUFBbUMsR0FBbkMsRUFBd0MxUyxNQUF4QyxDQUErQzZTLEdBQS9DLENBQVA7SUFDSCxDQU5EOztJQU9BLElBQUlDLFlBQVksR0FBRyxTQUFmQSxZQUFlLEdBQVk7TUFDM0IsSUFBSXZDLFVBQVUsQ0FBQ25TLEtBQWYsRUFBc0I7UUFDbEJtUyxVQUFVLENBQUNuUyxLQUFYLENBQWlCMlUsUUFBakI7TUFDSDtJQUNKLENBSkQ7O0lBS0EsSUFBSUMsYUFBYSxHQUFHLFNBQWhCQSxhQUFnQixHQUFZO01BQzVCLElBQUl6QyxVQUFVLENBQUNuUyxLQUFmLEVBQXNCO1FBQ2xCbVQsc0JBQXNCO1FBQ3RCaEIsVUFBVSxDQUFDblMsS0FBWCxDQUFpQjZVLFNBQWpCO01BQ0g7SUFDSixDQUxEOztJQU1BLElBQUlDLFVBQVUsR0FBRyxTQUFiQSxVQUFhLEdBQVk7TUFDekIsSUFBSTNDLFVBQVUsQ0FBQ25TLEtBQWYsRUFBc0I7UUFDbEJtUyxVQUFVLENBQUNuUyxLQUFYLENBQWlCOFUsVUFBakI7TUFDSDtJQUNKLENBSkQ7O0lBS0EsSUFBSS9DLE1BQU0sR0FBRyxTQUFUQSxNQUFTLENBQVVnRCxLQUFWLEVBQWlCO01BQzFCLElBQUlDLFNBQVMsR0FBRyxFQUFoQjs7TUFDQSxLQUFLLElBQUkxRixDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHeUYsS0FBSyxDQUFDM08sTUFBMUIsRUFBa0NrSixDQUFDLEVBQW5DLEVBQXVDO1FBQ25DMEYsU0FBUyxDQUFDMUYsQ0FBRCxDQUFULEdBQWV5RixLQUFLLENBQUN6RixDQUFELENBQUwsQ0FBUzJGLGtCQUFULENBQTRCLE9BQTVCLEVBQXFDO1VBQ2hEWCxLQUFLLEVBQUUsT0FEeUM7VUFFaERHLEdBQUcsRUFBRSxTQUYyQztVQUdoREwsSUFBSSxFQUFFO1FBSDBDLENBQXJDLENBQWY7TUFLSDs7TUFDRCxPQUFPWSxTQUFTLENBQUM1SSxJQUFWLENBQWUsS0FBZixDQUFQO0lBQ0gsQ0FWRDs7SUFXQSxJQUFJOEksaUJBQWlCLEdBQUcsU0FBcEJBLGlCQUFvQixHQUFZO01BQ2hDeEQsaUJBQWlCLENBQUMxUixLQUFsQixHQUEwQixLQUExQjtJQUNILENBRkQ7O0lBR0EsQ0FBQyxHQUFHRyxLQUFLLENBQUM4SSxLQUFWLEVBQWlCLFlBQVk7TUFBRSxPQUFPeUksaUJBQWlCLENBQUMxUixLQUF6QjtJQUFpQyxDQUFoRSxFQUFrRSxVQUFVQSxLQUFWLEVBQWlCO01BQy9FLElBQUlZLEVBQUosRUFBUXlHLEVBQVI7O01BQ0EsSUFBSXJILEtBQUosRUFBVztRQUNQcUIsUUFBUSxDQUFDNFIsZ0JBQVQsQ0FBMEIsT0FBMUIsRUFBbUNpQyxpQkFBbkM7UUFDQSxDQUFDdFUsRUFBRSxHQUFHeVEsYUFBYSxDQUFDclIsS0FBcEIsTUFBK0IsSUFBL0IsSUFBdUNZLEVBQUUsS0FBSyxLQUFLLENBQW5ELEdBQXVELEtBQUssQ0FBNUQsR0FBZ0VBLEVBQUUsQ0FBQ3FTLGdCQUFILENBQW9CLE9BQXBCLEVBQTZCa0MsYUFBN0IsQ0FBaEU7TUFDSCxDQUhELE1BSUs7UUFDRDlULFFBQVEsQ0FBQ2dTLG1CQUFULENBQTZCLE9BQTdCLEVBQXNDNkIsaUJBQXRDO1FBQ0EsQ0FBQzdOLEVBQUUsR0FBR2dLLGFBQWEsQ0FBQ3JSLEtBQXBCLE1BQStCLElBQS9CLElBQXVDcUgsRUFBRSxLQUFLLEtBQUssQ0FBbkQsR0FBdUQsS0FBSyxDQUE1RCxHQUFnRUEsRUFBRSxDQUFDZ00sbUJBQUgsQ0FBdUIsT0FBdkIsRUFBZ0M4QixhQUFoQyxDQUFoRTtNQUNIO0lBQ0osQ0FWRDs7SUFXQSxJQUFJQSxhQUFhLEdBQUcsU0FBaEJBLGFBQWdCLENBQVVDLEtBQVYsRUFBaUI7TUFDakNBLEtBQUssQ0FBQ0MsZUFBTjtJQUNILENBRkQ7O0lBR0EsQ0FBQyxHQUFHbFYsS0FBSyxDQUFDOEksS0FBVixFQUFpQixZQUFZO01BQUUsT0FBTyxDQUFDK0ksWUFBRCxDQUFQO0lBQXdCLENBQXZELEVBQXlELFlBQVk7TUFDakUsSUFBSXNELFNBQVMsR0FBR3RELFlBQVksQ0FBQ2hTLEtBQWIsSUFBc0JnUyxZQUFZLENBQUNoUyxLQUFiLENBQW1CLENBQW5CLENBQXRCLEdBQ1ZpVSxXQUFXLENBQUNqQyxZQUFZLENBQUNoUyxLQUFiLENBQW1CLENBQW5CLENBQUQsQ0FERCxHQUVWLEtBRk47TUFHQSxJQUFJdVYsT0FBTyxHQUFHdkQsWUFBWSxDQUFDaFMsS0FBYixJQUFzQmdTLFlBQVksQ0FBQ2hTLEtBQWIsQ0FBbUIsQ0FBbkIsQ0FBdEIsR0FDUmlVLFdBQVcsQ0FBQ2pDLFlBQVksQ0FBQ2hTLEtBQWIsQ0FBbUIsQ0FBbkIsQ0FBRCxDQURILEdBRVIsS0FGTjs7TUFHQSxJQUFJc1YsU0FBUyxJQUFJQyxPQUFqQixFQUEwQjtRQUN0QkMseUJBQXlCO1FBQ3pCcEQsbUJBQW1CLENBQUNrRCxTQUFELEVBQVlDLE9BQVosRUFBcUIzRCxLQUFLLENBQUM1UixLQUEzQixDQUFuQjtNQUNIO0lBQ0osQ0FYRCxFQVdHO01BQUVrUSxJQUFJLEVBQUU7SUFBUixDQVhIO0lBWUEsQ0FBQyxHQUFHL1AsS0FBSyxDQUFDOEksS0FBVixFQUFpQixZQUFZO01BQUUsT0FBTyxDQUFDcUksUUFBRCxDQUFQO0lBQW9CLENBQW5ELEVBQXFELFlBQVk7TUFDN0RtRSxrQkFBa0IsQ0FBQ2hFLFdBQVcsQ0FBQ3pSLEtBQWIsQ0FBbEI7SUFDSCxDQUZELEVBRUc7TUFBRWtRLElBQUksRUFBRTtJQUFSLENBRkg7SUFHQSxDQUFDLEdBQUcvUCxLQUFLLENBQUM4SSxLQUFWLEVBQWlCLFlBQVk7TUFBRSxPQUFPLENBQUN0QyxLQUFLLENBQUNtSyxXQUFQLENBQVA7SUFBNkIsQ0FBNUQsRUFBOEQsWUFBWTtNQUN0RWtCLFlBQVksQ0FBQ2hTLEtBQWIsQ0FBbUIsQ0FBbkIsSUFBd0IsRUFBeEI7TUFDQWdTLFlBQVksQ0FBQ2hTLEtBQWIsQ0FBbUIsQ0FBbkIsSUFBd0IsRUFBeEI7TUFDQTRSLEtBQUssQ0FBQzVSLEtBQU4sR0FBYyxVQUFkO0lBQ0gsQ0FKRCxFQUlHO01BQUVrUSxJQUFJLEVBQUU7SUFBUixDQUpIOztJQUtBLElBQUlrQyxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQXNCLENBQVVrRCxTQUFWLEVBQXFCQyxPQUFyQixFQUE4QkcsZ0JBQTlCLEVBQWdEO01BQ3RFLElBQUlBLGdCQUFnQixLQUFLLEtBQUssQ0FBOUIsRUFBaUM7UUFBRUEsZ0JBQWdCLEdBQUcsRUFBbkI7TUFBd0I7O01BQzNEeEksSUFBSSxDQUFDLHFCQUFELEVBQXdCb0ksU0FBeEIsRUFBbUNDLE9BQW5DLEVBQTRDRyxnQkFBNUMsQ0FBSjtJQUNILENBSEQ7O0lBSUEsQ0FBQyxHQUFHdlYsS0FBSyxDQUFDOEksS0FBVixFQUFpQixZQUFZO01BQUUsT0FBT3RDLEtBQUssQ0FBQ3VLLFFBQWI7SUFBd0IsQ0FBdkQsRUFBeUQsVUFBVWxSLEtBQVYsRUFBaUI7TUFDdEV3UixZQUFZLENBQUN4UixLQUFiLEdBQXFCQSxLQUFyQjtJQUNILENBRkQ7SUFHQSxDQUFDLEdBQUdHLEtBQUssQ0FBQzhJLEtBQVYsRUFBaUIsWUFBWTtNQUFFLE9BQU8ySSxLQUFLLENBQUM1UixLQUFiO0lBQXFCLENBQXBELEVBQXNELFlBQVk7TUFDOUQsSUFBSXNWLFNBQVMsR0FBR3RELFlBQVksQ0FBQ2hTLEtBQWIsSUFBc0JnUyxZQUFZLENBQUNoUyxLQUFiLENBQW1CLENBQW5CLENBQXRCLEdBQ1ZpVSxXQUFXLENBQUNqQyxZQUFZLENBQUNoUyxLQUFiLENBQW1CLENBQW5CLENBQUQsQ0FERCxHQUVWLEtBRk47TUFHQSxJQUFJdVYsT0FBTyxHQUFHdkQsWUFBWSxDQUFDaFMsS0FBYixJQUFzQmdTLFlBQVksQ0FBQ2hTLEtBQWIsQ0FBbUIsQ0FBbkIsQ0FBdEIsR0FDUmlVLFdBQVcsQ0FBQ2pDLFlBQVksQ0FBQ2hTLEtBQWIsQ0FBbUIsQ0FBbkIsQ0FBRCxDQURILEdBRVIsS0FGTjs7TUFHQSxJQUFJc1YsU0FBUyxJQUFJQyxPQUFqQixFQUEwQjtRQUN0Qm5ELG1CQUFtQixDQUFDa0QsU0FBRCxFQUFZQyxPQUFaLEVBQXFCM0QsS0FBSyxDQUFDNVIsS0FBM0IsQ0FBbkI7TUFDSDtJQUNKLENBVkQ7O0lBV0EsSUFBSXlWLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBcUIsQ0FBVUUsU0FBVixFQUFxQjtNQUMxQ3pJLElBQUksQ0FBQyxvQkFBRCxFQUF1QnlJLFNBQXZCLENBQUo7SUFDSCxDQUZEOztJQUdBLElBQUlILHlCQUF5QixHQUFHLFNBQTVCQSx5QkFBNEIsR0FBWTtNQUN4QyxJQUFJNVUsRUFBSixFQUFReUcsRUFBUjs7TUFDQXVLLEtBQUssQ0FBQzVSLEtBQU4sR0FDSSxDQUFDcUgsRUFBRSxHQUFHLENBQUN6RyxFQUFFLEdBQUcyUyxZQUFZLENBQUN2VCxLQUFiLENBQW1Cb1Isb0JBQW9CLENBQUNwUixLQUF4QyxDQUFOLE1BQTBELElBQTFELElBQWtFWSxFQUFFLEtBQUssS0FBSyxDQUE5RSxHQUFrRixLQUFLLENBQXZGLEdBQTJGQSxFQUFFLENBQUN1RSxLQUFwRyxNQUErRyxJQUEvRyxJQUF1SGtDLEVBQUUsS0FBSyxLQUFLLENBQW5JLEdBQXVJQSxFQUF2SSxHQUE0SSxRQURoSixDQUZ3QyxDQUl4Qzs7TUFDQSxJQUFJbUssWUFBWSxDQUFDeFIsS0FBakIsRUFBd0I7UUFDcEI0UixLQUFLLENBQUM1UixLQUFOLEdBQWN3UixZQUFZLENBQUN4UixLQUEzQjtRQUNBd1IsWUFBWSxDQUFDeFIsS0FBYixHQUFxQixFQUFyQjtNQUNIO0lBQ0osQ0FURDs7SUFVQSxJQUFJNFYsY0FBYyxHQUFHLFNBQWpCQSxjQUFpQixHQUFZO01BQzdCLElBQUloVixFQUFKLEVBQVF5RyxFQUFSLEVBQVkrQixFQUFaLEVBQWdCeU0sRUFBaEIsRUFBb0JDLEVBQXBCOztNQUNBLElBQUlDLFlBQVksR0FBRyxDQUFuQjs7TUFDQSxJQUFJMUUsYUFBYSxDQUFDclIsS0FBbEIsRUFBeUI7UUFDckIrVixZQUFZLEdBQ1JuVCxNQUFNLENBQUNzSCxVQUFQLElBQXFCLENBQUM3QyxFQUFFLEdBQUcsQ0FBQ3pHLEVBQUUsR0FBR3lRLGFBQWEsQ0FBQ3JSLEtBQXBCLE1BQStCLElBQS9CLElBQXVDWSxFQUFFLEtBQUssS0FBSyxDQUFuRCxHQUF1RCxLQUFLLENBQTVELEdBQWdFQSxFQUFFLENBQUNvVixxQkFBSCxFQUF0RSxNQUFzRyxJQUF0RyxJQUE4RzNPLEVBQUUsS0FBSyxLQUFLLENBQTFILEdBQThILEtBQUssQ0FBbkksR0FBdUlBLEVBQUUsQ0FBQzRPLEtBQS9KLElBQ0ksR0FESixHQUVNN08sTUFBTSxDQUFDLENBQUNnQyxFQUFFLEdBQUdpSSxhQUFhLENBQUNyUixLQUFwQixNQUErQixJQUEvQixJQUF1Q29KLEVBQUUsS0FBSyxLQUFLLENBQW5ELEdBQXVELEtBQUssQ0FBNUQsR0FBZ0VBLEVBQUUsQ0FBQzRNLHFCQUFILEdBQTJCQyxLQUE1RixDQUFOLEdBQTJHLEdBRmpILEdBR003TyxNQUFNLENBQUMsQ0FBQ3lPLEVBQUUsR0FBR3hFLGFBQWEsQ0FBQ3JSLEtBQXBCLE1BQStCLElBQS9CLElBQXVDNlYsRUFBRSxLQUFLLEtBQUssQ0FBbkQsR0FBdUQsS0FBSyxDQUE1RCxHQUFnRUEsRUFBRSxDQUFDRyxxQkFBSCxHQUEyQkMsS0FBNUYsQ0FBTixHQUEyRyxHQUpySDtNQUtIOztNQUNELE9BQU87UUFDSEMsR0FBRyxFQUFFOU8sTUFBTSxDQUFDLENBQUMwTyxFQUFFLEdBQUd6RSxhQUFhLENBQUNyUixLQUFwQixNQUErQixJQUEvQixJQUF1QzhWLEVBQUUsS0FBSyxLQUFLLENBQW5ELEdBQXVELEtBQUssQ0FBNUQsR0FBZ0VBLEVBQUUsQ0FBQ0UscUJBQUgsR0FBMkJHLE1BQTVGLENBQU4sR0FBNEcsRUFEOUc7UUFFSEMsSUFBSSxFQUFFTDtNQUZILENBQVA7SUFJSCxDQWREOztJQWVBLElBQUlNLDBCQUEwQixHQUFHLFNBQTdCQSwwQkFBNkIsQ0FBVXJXLEtBQVYsRUFBaUI4SyxHQUFqQixFQUFzQjtNQUNuRDRHLGlCQUFpQixDQUFDMVIsS0FBbEIsR0FBMEIsS0FBMUI7TUFDQXNSLFFBQVEsQ0FBQ3RSLEtBQVQsR0FBaUJBLEtBQWpCO01BQ0F5UixXQUFXLENBQUN6UixLQUFaLEdBQW9COEssR0FBcEI7SUFDSCxDQUpEOztJQUtBLElBQUlsSCxZQUFZLEdBQUc7TUFBRStDLEtBQUssRUFBRUEsS0FBVDtNQUFnQnlLLG9CQUFvQixFQUFFQSxvQkFBdEM7TUFBNERDLGFBQWEsRUFBRUEsYUFBM0U7TUFBMEZDLFFBQVEsRUFBRUEsUUFBcEc7TUFBOEdDLFlBQVksRUFBRUEsWUFBNUg7TUFBMElDLFlBQVksRUFBRUEsWUFBeEo7TUFBc0tDLFdBQVcsRUFBRUEsV0FBbkw7TUFBZ01DLGlCQUFpQixFQUFFQSxpQkFBbk47TUFBc094RSxJQUFJLEVBQUVBLElBQTVPO01BQWtQeUUsV0FBVyxFQUFFQSxXQUEvUDtNQUE0UUMsS0FBSyxFQUFFQSxLQUFuUjtNQUEwUkMsU0FBUyxFQUFFQSxTQUFyUztNQUFnVEcsWUFBWSxFQUFFQSxZQUE5VDtNQUE0VUcsVUFBVSxFQUFFQSxVQUF4VjtNQUFvV0UsMkJBQTJCLEVBQUVBLDJCQUFqWTtNQUE4WlMsdUJBQXVCLEVBQUVBLHVCQUF2YjtNQUFnZEMsb0JBQW9CLEVBQUVBLG9CQUF0ZTtNQUE0Zkksc0JBQXNCLEVBQUVBLHNCQUFwaEI7TUFBNGlCRyx1QkFBdUIsRUFBRUEsdUJBQXJrQjtNQUE4bEJULFNBQVMsRUFBRUEsU0FBem1CO01BQW9uQlUsWUFBWSxFQUFFQSxZQUFsb0I7TUFBZ3BCVSxXQUFXLEVBQUVBLFdBQTdwQjtNQUEwcUJTLFlBQVksRUFBRUEsWUFBeHJCO01BQXNzQkUsYUFBYSxFQUFFQSxhQUFydEI7TUFBb3VCRSxVQUFVLEVBQUVBLFVBQWh2QjtNQUE0dkIvQyxNQUFNLEVBQUVBLE1BQXB3QjtNQUE0d0JtRCxpQkFBaUIsRUFBRUEsaUJBQS94QjtNQUFrekJDLGFBQWEsRUFBRUEsYUFBajBCO01BQWcxQi9DLG1CQUFtQixFQUFFQSxtQkFBcjJCO01BQTAzQnFELGtCQUFrQixFQUFFQSxrQkFBOTRCO01BQWs2QkQseUJBQXlCLEVBQUVBLHlCQUE3N0I7TUFBdzlCSSxjQUFjLEVBQUVBLGNBQXgrQjtNQUF3L0JTLDBCQUEwQixFQUFFQSwwQkFBcGhDO01BQWdqQ0MsYUFBYSxFQUFFN0YsZ0JBQWdCO0lBQS9rQyxDQUFuQjtJQUNBNVEsTUFBTSxDQUFDQyxjQUFQLENBQXNCOEQsWUFBdEIsRUFBb0MsaUJBQXBDLEVBQXVEO01BQUVHLFVBQVUsRUFBRSxLQUFkO01BQXFCL0QsS0FBSyxFQUFFO0lBQTVCLENBQXZEO0lBQ0EsT0FBTzRELFlBQVA7RUFDSDtBQTdTd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDL0NhOztBQUNiL0QsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q3FJLElBQUksRUFBRSxpQkFEbUM7RUFFekM2RCxVQUFVLEVBQUUsRUFGNkI7RUFHekMvRixLQUFLLEVBQUUsRUFIa0M7RUFJekNqRyxLQUFLLEVBQUUsaUJBQVk7SUFDZixJQUFJNkcsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLE9BQU87TUFBRUQsU0FBUyxFQUFFQTtJQUFiLENBQVA7RUFDSDtBQVB3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNKYTs7QUFDYixJQUFJdkQsU0FBUyxHQUFJLFFBQVEsS0FBS0EsU0FBZCxJQUE0QixVQUFVQyxPQUFWLEVBQW1CQyxVQUFuQixFQUErQkMsQ0FBL0IsRUFBa0NDLFNBQWxDLEVBQTZDO0VBQ3JGLFNBQVNDLEtBQVQsQ0FBZXJFLEtBQWYsRUFBc0I7SUFBRSxPQUFPQSxLQUFLLFlBQVltRSxDQUFqQixHQUFxQm5FLEtBQXJCLEdBQTZCLElBQUltRSxDQUFKLENBQU0sVUFBVUcsT0FBVixFQUFtQjtNQUFFQSxPQUFPLENBQUN0RSxLQUFELENBQVA7SUFBaUIsQ0FBNUMsQ0FBcEM7RUFBb0Y7O0VBQzVHLE9BQU8sS0FBS21FLENBQUMsS0FBS0EsQ0FBQyxHQUFHSSxPQUFULENBQU4sRUFBeUIsVUFBVUQsT0FBVixFQUFtQkUsTUFBbkIsRUFBMkI7SUFDdkQsU0FBU0MsU0FBVCxDQUFtQnpFLEtBQW5CLEVBQTBCO01BQUUsSUFBSTtRQUFFMEUsSUFBSSxDQUFDTixTQUFTLENBQUNPLElBQVYsQ0FBZTNFLEtBQWYsQ0FBRCxDQUFKO01BQThCLENBQXBDLENBQXFDLE9BQU80RSxDQUFQLEVBQVU7UUFBRUosTUFBTSxDQUFDSSxDQUFELENBQU47TUFBWTtJQUFFOztJQUMzRixTQUFTQyxRQUFULENBQWtCN0UsS0FBbEIsRUFBeUI7TUFBRSxJQUFJO1FBQUUwRSxJQUFJLENBQUNOLFNBQVMsQ0FBQyxPQUFELENBQVQsQ0FBbUJwRSxLQUFuQixDQUFELENBQUo7TUFBa0MsQ0FBeEMsQ0FBeUMsT0FBTzRFLENBQVAsRUFBVTtRQUFFSixNQUFNLENBQUNJLENBQUQsQ0FBTjtNQUFZO0lBQUU7O0lBQzlGLFNBQVNGLElBQVQsQ0FBY0ksTUFBZCxFQUFzQjtNQUFFQSxNQUFNLENBQUNDLElBQVAsR0FBY1QsT0FBTyxDQUFDUSxNQUFNLENBQUM5RSxLQUFSLENBQXJCLEdBQXNDcUUsS0FBSyxDQUFDUyxNQUFNLENBQUM5RSxLQUFSLENBQUwsQ0FBb0JrQyxJQUFwQixDQUF5QnVDLFNBQXpCLEVBQW9DSSxRQUFwQyxDQUF0QztJQUFzRjs7SUFDOUdILElBQUksQ0FBQyxDQUFDTixTQUFTLEdBQUdBLFNBQVMsQ0FBQ1ksS0FBVixDQUFnQmYsT0FBaEIsRUFBeUJDLFVBQVUsSUFBSSxFQUF2QyxDQUFiLEVBQXlEUyxJQUF6RCxFQUFELENBQUo7RUFDSCxDQUxNLENBQVA7QUFNSCxDQVJEOztBQVNBLElBQUlNLFdBQVcsR0FBSSxRQUFRLEtBQUtBLFdBQWQsSUFBOEIsVUFBVWhCLE9BQVYsRUFBbUJqQixJQUFuQixFQUF5QjtFQUNyRSxJQUFJa0MsQ0FBQyxHQUFHO0lBQUVDLEtBQUssRUFBRSxDQUFUO0lBQVlDLElBQUksRUFBRSxnQkFBVztNQUFFLElBQUlDLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBTyxDQUFYLEVBQWMsTUFBTUEsQ0FBQyxDQUFDLENBQUQsQ0FBUDtNQUFZLE9BQU9BLENBQUMsQ0FBQyxDQUFELENBQVI7SUFBYyxDQUF2RTtJQUF5RUMsSUFBSSxFQUFFLEVBQS9FO0lBQW1GQyxHQUFHLEVBQUU7RUFBeEYsQ0FBUjtFQUFBLElBQXNHQyxDQUF0RztFQUFBLElBQXlHQyxDQUF6RztFQUFBLElBQTRHSixDQUE1RztFQUFBLElBQStHSyxDQUEvRztFQUNBLE9BQU9BLENBQUMsR0FBRztJQUFFZixJQUFJLEVBQUVnQixJQUFJLENBQUMsQ0FBRCxDQUFaO0lBQWlCLFNBQVNBLElBQUksQ0FBQyxDQUFELENBQTlCO0lBQW1DLFVBQVVBLElBQUksQ0FBQyxDQUFEO0VBQWpELENBQUosRUFBNEQsT0FBT0MsTUFBUCxLQUFrQixVQUFsQixLQUFpQ0YsQ0FBQyxDQUFDRSxNQUFNLENBQUNDLFFBQVIsQ0FBRCxHQUFxQixZQUFXO0lBQUUsT0FBTyxJQUFQO0VBQWMsQ0FBakYsQ0FBNUQsRUFBZ0pILENBQXZKOztFQUNBLFNBQVNDLElBQVQsQ0FBY0csQ0FBZCxFQUFpQjtJQUFFLE9BQU8sVUFBVUMsQ0FBVixFQUFhO01BQUUsT0FBT3JCLElBQUksQ0FBQyxDQUFDb0IsQ0FBRCxFQUFJQyxDQUFKLENBQUQsQ0FBWDtJQUFzQixDQUE1QztFQUErQzs7RUFDbEUsU0FBU3JCLElBQVQsQ0FBY3NCLEVBQWQsRUFBa0I7SUFDZCxJQUFJUixDQUFKLEVBQU8sTUFBTSxJQUFJUyxTQUFKLENBQWMsaUNBQWQsQ0FBTjs7SUFDUCxPQUFPUCxDQUFDLEtBQUtBLENBQUMsR0FBRyxDQUFKLEVBQU9NLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVWQsQ0FBQyxHQUFHLENBQWQsQ0FBWixDQUFELEVBQWdDQSxDQUF2QztNQUEwQyxJQUFJO1FBQzFDLElBQUlNLENBQUMsR0FBRyxDQUFKLEVBQU9DLENBQUMsS0FBS0osQ0FBQyxHQUFHVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVEsQ0FBUixHQUFZUCxDQUFDLENBQUMsUUFBRCxDQUFiLEdBQTBCTyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFQLENBQUMsQ0FBQyxPQUFELENBQUQsS0FBZSxDQUFDSixDQUFDLEdBQUdJLENBQUMsQ0FBQyxRQUFELENBQU4sS0FBcUJKLENBQUMsQ0FBQ2EsSUFBRixDQUFPVCxDQUFQLENBQXJCLEVBQWdDLENBQS9DLENBQVIsR0FBNERBLENBQUMsQ0FBQ2QsSUFBakcsQ0FBRCxJQUEyRyxDQUFDLENBQUNVLENBQUMsR0FBR0EsQ0FBQyxDQUFDYSxJQUFGLENBQU9ULENBQVAsRUFBVU8sRUFBRSxDQUFDLENBQUQsQ0FBWixDQUFMLEVBQXVCakIsSUFBOUksRUFBb0osT0FBT00sQ0FBUDtRQUNwSixJQUFJSSxDQUFDLEdBQUcsQ0FBSixFQUFPSixDQUFYLEVBQWNXLEVBQUUsR0FBRyxDQUFDQSxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVEsQ0FBVCxFQUFZWCxDQUFDLENBQUNyRixLQUFkLENBQUw7O1FBQ2QsUUFBUWdHLEVBQUUsQ0FBQyxDQUFELENBQVY7VUFDSSxLQUFLLENBQUw7VUFBUSxLQUFLLENBQUw7WUFBUVgsQ0FBQyxHQUFHVyxFQUFKO1lBQVE7O1VBQ3hCLEtBQUssQ0FBTDtZQUFRZCxDQUFDLENBQUNDLEtBQUY7WUFBVyxPQUFPO2NBQUVuRixLQUFLLEVBQUVnRyxFQUFFLENBQUMsQ0FBRCxDQUFYO2NBQWdCakIsSUFBSSxFQUFFO1lBQXRCLENBQVA7O1VBQ25CLEtBQUssQ0FBTDtZQUFRRyxDQUFDLENBQUNDLEtBQUY7WUFBV00sQ0FBQyxHQUFHTyxFQUFFLENBQUMsQ0FBRCxDQUFOO1lBQVdBLEVBQUUsR0FBRyxDQUFDLENBQUQsQ0FBTDtZQUFVOztVQUN4QyxLQUFLLENBQUw7WUFBUUEsRUFBRSxHQUFHZCxDQUFDLENBQUNLLEdBQUYsQ0FBTVksR0FBTixFQUFMOztZQUFrQmpCLENBQUMsQ0FBQ0ksSUFBRixDQUFPYSxHQUFQOztZQUFjOztVQUN4QztZQUNJLElBQUksRUFBRWQsQ0FBQyxHQUFHSCxDQUFDLENBQUNJLElBQU4sRUFBWUQsQ0FBQyxHQUFHQSxDQUFDLENBQUNlLE1BQUYsR0FBVyxDQUFYLElBQWdCZixDQUFDLENBQUNBLENBQUMsQ0FBQ2UsTUFBRixHQUFXLENBQVosQ0FBbkMsTUFBdURKLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFWLElBQWVBLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFoRixDQUFKLEVBQXdGO2NBQUVkLENBQUMsR0FBRyxDQUFKO2NBQU87WUFBVzs7WUFDNUcsSUFBSWMsRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVLENBQVYsS0FBZ0IsQ0FBQ1gsQ0FBRCxJQUFPVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFYLENBQUMsQ0FBQyxDQUFELENBQVQsSUFBZ0JXLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUVgsQ0FBQyxDQUFDLENBQUQsQ0FBaEQsQ0FBSixFQUEyRDtjQUFFSCxDQUFDLENBQUNDLEtBQUYsR0FBVWEsRUFBRSxDQUFDLENBQUQsQ0FBWjtjQUFpQjtZQUFROztZQUN0RixJQUFJQSxFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVUsQ0FBVixJQUFlZCxDQUFDLENBQUNDLEtBQUYsR0FBVUUsQ0FBQyxDQUFDLENBQUQsQ0FBOUIsRUFBbUM7Y0FBRUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQVg7Y0FBZ0JBLENBQUMsR0FBR1csRUFBSjtjQUFRO1lBQVE7O1lBQ3JFLElBQUlYLENBQUMsSUFBSUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQXBCLEVBQXlCO2NBQUVILENBQUMsQ0FBQ0MsS0FBRixHQUFVRSxDQUFDLENBQUMsQ0FBRCxDQUFYOztjQUFnQkgsQ0FBQyxDQUFDSyxHQUFGLENBQU1jLElBQU4sQ0FBV0wsRUFBWDs7Y0FBZ0I7WUFBUTs7WUFDbkUsSUFBSVgsQ0FBQyxDQUFDLENBQUQsQ0FBTCxFQUFVSCxDQUFDLENBQUNLLEdBQUYsQ0FBTVksR0FBTjs7WUFDVmpCLENBQUMsQ0FBQ0ksSUFBRixDQUFPYSxHQUFQOztZQUFjO1FBWHRCOztRQWFBSCxFQUFFLEdBQUdoRCxJQUFJLENBQUNrRCxJQUFMLENBQVVqQyxPQUFWLEVBQW1CaUIsQ0FBbkIsQ0FBTDtNQUNILENBakJ5QyxDQWlCeEMsT0FBT04sQ0FBUCxFQUFVO1FBQUVvQixFQUFFLEdBQUcsQ0FBQyxDQUFELEVBQUlwQixDQUFKLENBQUw7UUFBYWEsQ0FBQyxHQUFHLENBQUo7TUFBUSxDQWpCTyxTQWlCRTtRQUFFRCxDQUFDLEdBQUdILENBQUMsR0FBRyxDQUFSO01BQVk7SUFqQjFEOztJQWtCQSxJQUFJVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVEsQ0FBWixFQUFlLE1BQU1BLEVBQUUsQ0FBQyxDQUFELENBQVI7SUFBYSxPQUFPO01BQUVoRyxLQUFLLEVBQUVnRyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFBLEVBQUUsQ0FBQyxDQUFELENBQVYsR0FBZ0IsS0FBSyxDQUE5QjtNQUFpQ2pCLElBQUksRUFBRTtJQUF2QyxDQUFQO0VBQy9CO0FBQ0osQ0ExQkQ7O0FBMkJBLElBQUlyRixlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJQyxLQUFLLEdBQUdELG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXFXLEtBQUssR0FBR3JXLG1CQUFPLENBQUMsc0VBQUQsQ0FBbkI7O0FBQ0EsSUFBSXNXLFlBQVksR0FBRzlXLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw2RUFBRCxDQUFSLENBQWxDOztBQUNBLElBQUlJLE9BQU8sR0FBR1osZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRDQUFELENBQVIsQ0FBN0I7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNDLE1BQU0sRUFBRSxjQURpQztFQUV6Q2tHLEtBQUssRUFBRTtJQUNIOFAsT0FBTyxFQUFFO01BQ0w1UCxJQUFJLEVBQUVLLE9BREQ7TUFFTEosUUFBUSxFQUFFLEtBRkw7TUFHTCxXQUFTO0lBSEo7RUFETixDQUZrQztFQVN6Q3BHLEtBQUssRUFBRSxlQUFVQyxPQUFWLEVBQW1CQyxFQUFuQixFQUF1QjtJQUMxQixJQUFJdVEsS0FBSyxHQUFHLElBQVo7O0lBQ0EsSUFBSXRRLE1BQU0sR0FBR0QsRUFBRSxDQUFDQyxNQUFoQjtJQUNBQSxNQUFNO0lBQ04sSUFBSTBHLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJa1AsSUFBSSxHQUFHLENBQUMsR0FBR3ZXLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBWDtJQUNBLElBQUkwVixTQUFTLEdBQUcsQ0FBQyxHQUFHeFcsS0FBSyxDQUFDYyxHQUFWLEVBQWUsS0FBZixDQUFoQjtJQUNBLElBQUkyVixVQUFVLEdBQUcsQ0FBQyxHQUFHelcsS0FBSyxDQUFDYyxHQUFWLEVBQWUsQ0FBZixDQUFqQjtJQUNBLElBQUk0VixTQUFTLEdBQUcsQ0FBQyxHQUFHMVcsS0FBSyxDQUFDd0QsTUFBVixFQUFrQixXQUFsQixDQUFoQjtJQUNBLElBQUltVCxTQUFTLEdBQUcsQ0FBQyxHQUFHM1csS0FBSyxDQUFDOEgsUUFBVixFQUFvQjtNQUNoQzhPLGdCQUFnQixFQUFFLEtBRGM7TUFFaENDLGdCQUFnQixFQUFFLEtBRmM7TUFHaENDLGVBQWUsRUFBRSxLQUhlO01BSWhDQyxpQkFBaUIsRUFBRSxLQUphO01BS2hDQyxZQUFZLEVBQUU7SUFMa0IsQ0FBcEIsQ0FBaEI7SUFPQSxJQUFJQyxlQUFlLEdBQUcsQ0FBQyxHQUFHalgsS0FBSyxDQUFDYyxHQUFWLEVBQWUsS0FBZixDQUF0QixDQWhCMEIsQ0FpQjFCO0lBQ0E7O0lBQ0EsU0FBU29XLHVCQUFULEdBQW1DO01BQy9CRCxlQUFlLENBQUNwWCxLQUFoQixHQUF3QixJQUF4QjtNQUNBTSxPQUFPLFdBQVAsQ0FDSytLLElBREwsQ0FDVSwwQkFEVixFQUVLbkosSUFGTCxDQUVVLFVBQVVDLEdBQVYsRUFBZTtRQUNyQjBVLFNBQVMsQ0FBQzFJLFVBQVYsR0FBdUIsSUFBdkI7UUFDQTBJLFNBQVMsQ0FBQ3BOLE9BQVYsR0FBb0J0SCxHQUFHLENBQUNLLElBQUosQ0FBU2lILE9BQTdCO1FBQ0FvTixTQUFTLENBQUNoUSxJQUFWLEdBQWlCMUUsR0FBRyxDQUFDSyxJQUFKLENBQVNlLE9BQTFCO1FBQ0E2VCxlQUFlLENBQUNwWCxLQUFoQixHQUF3QixLQUF4QjtNQUNILENBUEQsV0FRVyxVQUFVc08sS0FBVixFQUFpQjtRQUN4QnVJLFNBQVMsQ0FBQzFJLFVBQVYsR0FBdUIsSUFBdkI7UUFDQTBJLFNBQVMsQ0FBQ3BOLE9BQVYsR0FBb0I2RSxLQUFLLENBQUM5TCxJQUFOLENBQVdpSCxPQUEvQjtRQUNBb04sU0FBUyxDQUFDaFEsSUFBVixHQUFpQixLQUFqQjtRQUNBdVEsZUFBZSxDQUFDcFgsS0FBaEIsR0FBd0IsS0FBeEI7TUFDSCxDQWJEO0lBY0g7O0lBQ0QsQ0FBQyxHQUFHRyxLQUFLLENBQUNnQixTQUFWLEVBQXFCLFlBQVk7TUFBRSxPQUFPNkMsU0FBUyxDQUFDbU4sS0FBRCxFQUFRLEtBQUssQ0FBYixFQUFnQixLQUFLLENBQXJCLEVBQXdCLFlBQVk7UUFDbkYsT0FBT2xNLFdBQVcsQ0FBQyxJQUFELEVBQU8sVUFBVXJFLEVBQVYsRUFBYztVQUNuQ04sT0FBTyxXQUFQLENBQ0tnWCxHQURMLENBQ1MsQ0FDTGhYLE9BQU8sV0FBUCxDQUFnQitDLEdBQWhCLENBQW9CLGlCQUFwQixDQURLLEVBRUwvQyxPQUFPLFdBQVAsQ0FBZ0IrQyxHQUFoQixDQUFvQiwyQkFBcEIsQ0FGSyxFQUdML0MsT0FBTyxXQUFQLENBQWdCK0MsR0FBaEIsQ0FBb0Isc0JBQXBCLENBSEssQ0FEVCxFQU1LbkIsSUFOTCxDQU1VNUIsT0FBTyxXQUFQLENBQWdCaVgsTUFBaEIsQ0FBdUIsVUFBVUMsV0FBVixFQUF1QkMsUUFBdkIsRUFBaUNDLE9BQWpDLEVBQTBDO1lBQ3ZFLElBQUk5VyxFQUFKLEVBQVF5RyxFQUFSLEVBQVkrQixFQUFaOztZQUNBLElBQUl3RSxRQUFRLEdBQUc0SixXQUFXLENBQUNoVixJQUEzQjtZQUNBLElBQUltVixhQUFhLEdBQUdGLFFBQVEsQ0FBQ2pWLElBQTdCO1lBQ0EsSUFBSW9WLFlBQVksR0FBR0YsT0FBTyxDQUFDbFYsSUFBM0I7WUFDQXNVLFNBQVMsQ0FBQ0csZUFBVixHQUE0QixDQUFDclcsRUFBRSxHQUFHZ04sUUFBUSxLQUFLLElBQWIsSUFBcUJBLFFBQVEsS0FBSyxLQUFLLENBQXZDLEdBQTJDLEtBQUssQ0FBaEQsR0FBb0RBLFFBQVEsQ0FBQ3BMLElBQW5FLE1BQTZFLElBQTdFLElBQXFGNUIsRUFBRSxLQUFLLEtBQUssQ0FBakcsR0FBcUcsS0FBSyxDQUExRyxHQUE4R0EsRUFBRSxDQUFDaVgsY0FBN0k7WUFDQWYsU0FBUyxDQUFDSSxpQkFBVixHQUE4QixDQUFDN1AsRUFBRSxHQUFHdUcsUUFBUSxLQUFLLElBQWIsSUFBcUJBLFFBQVEsS0FBSyxLQUFLLENBQXZDLEdBQTJDLEtBQUssQ0FBaEQsR0FBb0RBLFFBQVEsQ0FBQ3BMLElBQW5FLE1BQTZFLElBQTdFLElBQXFGNkUsRUFBRSxLQUFLLEtBQUssQ0FBakcsR0FBcUcsS0FBSyxDQUExRyxHQUE4R0EsRUFBRSxDQUFDeVEsZ0JBQS9JO1lBQ0FoQixTQUFTLENBQUNLLFlBQVYsR0FBeUIsQ0FBQy9OLEVBQUUsR0FBR3dFLFFBQVEsS0FBSyxJQUFiLElBQXFCQSxRQUFRLEtBQUssS0FBSyxDQUF2QyxHQUEyQyxLQUFLLENBQWhELEdBQW9EQSxRQUFRLENBQUNwTCxJQUFuRSxNQUE2RSxJQUE3RSxJQUFxRjRHLEVBQUUsS0FBSyxLQUFLLENBQWpHLEdBQXFHLEtBQUssQ0FBMUcsR0FBOEdBLEVBQUUsQ0FBQytOLFlBQTFJO1lBQ0FMLFNBQVMsQ0FBQ0MsZ0JBQVYsR0FBNkJZLGFBQWEsQ0FBQ25WLElBQWQsQ0FBbUJ1VSxnQkFBaEQ7WUFDQUQsU0FBUyxDQUFDRSxnQkFBVixHQUE2QlksWUFBWSxDQUFDcFYsSUFBYixDQUFrQndVLGdCQUEvQztZQUNBLElBQUllLFlBQVksR0FBRyxDQUNmLGlCQURlLEVBRWYsbUJBRmUsRUFHZixjQUhlLENBQW5COztZQUtBLEtBQUssSUFBSXpKLEtBQVQsSUFBa0J3SSxTQUFsQixFQUE2QjtjQUN6QixJQUFJLENBQUNBLFNBQVMsQ0FBQ3hJLEtBQUQsQ0FBVixJQUFxQnlKLFlBQVksQ0FBQy9JLE9BQWIsQ0FBcUJWLEtBQXJCLE1BQWdDLENBQUMsQ0FBMUQsRUFBNkQ7Z0JBQ3pEc0ksVUFBVSxDQUFDNVcsS0FBWCxJQUFvQixDQUFwQjtjQUNIO1lBQ0o7O1lBQ0QsSUFBSSxFQUFFOFcsU0FBUyxDQUFDSSxpQkFBVixJQUNGSixTQUFTLENBQUNLLFlBRFIsSUFFRkwsU0FBUyxDQUFDRyxlQUZWLENBQUosRUFFZ0M7Y0FDNUJMLFVBQVUsQ0FBQzVXLEtBQVgsSUFBb0IsQ0FBcEI7WUFDSDs7WUFDRCxJQUFJSCxNQUFNLENBQUNrUCxNQUFQLENBQWMrSCxTQUFkLEVBQXlCOUgsT0FBekIsQ0FBaUMsS0FBakMsSUFBMEMsQ0FBQyxDQUEvQyxFQUFrRDtjQUM5QzJILFNBQVMsQ0FBQzNXLEtBQVYsR0FBa0IsSUFBbEI7WUFDSDtVQUNKLENBNUJTLENBTlY7VUFtQ0EsT0FBTyxDQUFDO1VBQUU7VUFBSCxDQUFQO1FBQ0gsQ0FyQ2lCLENBQWxCO01Bc0NILENBdkNrRCxDQUFoQjtJQXVDOUIsQ0F2Q0w7SUF3Q0EsSUFBSTRELFlBQVksR0FBRztNQUFFMkQsU0FBUyxFQUFFQSxTQUFiO01BQXdCbVAsSUFBSSxFQUFFQSxJQUE5QjtNQUFvQ0MsU0FBUyxFQUFFQSxTQUEvQztNQUEwREMsVUFBVSxFQUFFQSxVQUF0RTtNQUFrRkMsU0FBUyxFQUFFQSxTQUE3RjtNQUF3R0MsU0FBUyxFQUFFQSxTQUFuSDtNQUE4SE0sZUFBZSxFQUFFQSxlQUEvSTtNQUFnS0MsdUJBQXVCLEVBQUVBLHVCQUF6TDtNQUFrTlcsY0FBYyxFQUFFekIsS0FBSyxDQUFDeUIsY0FBeE87TUFBd1BDLE1BQU0sRUFBRXpCLFlBQVk7SUFBNVEsQ0FBbkI7SUFDQTNXLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQjhELFlBQXRCLEVBQW9DLGlCQUFwQyxFQUF1RDtNQUFFRyxVQUFVLEVBQUUsS0FBZDtNQUFxQi9ELEtBQUssRUFBRTtJQUE1QixDQUF2RDtJQUNBLE9BQU80RCxZQUFQO0VBQ0g7QUF4RndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQy9DYTs7QUFDYi9ELDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHRCxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsWUFEaUM7RUFFekNrRyxLQUFLLEVBQUU7SUFDSDhDLE9BQU8sRUFBRTtNQUNMM0MsUUFBUSxFQUFFLElBREw7TUFFTEQsSUFBSSxFQUFFcVIsS0FBSyxJQUFJOUg7SUFGVixDQUROO0lBS0grSCxLQUFLLEVBQUU7TUFBRXRSLElBQUksRUFBRXVKLE1BQVI7TUFBZ0J0SixRQUFRLEVBQUU7SUFBMUI7RUFMSixDQUZrQztFQVN6Q21HLEtBQUssRUFBRSxDQUFDLGFBQUQsQ0FUa0M7RUFVekN2TSxLQUFLLEVBQUUsZUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUI7SUFDMUIsSUFBSUMsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQUEsSUFBd0JxTSxJQUFJLEdBQUd0TSxFQUFFLENBQUNzTSxJQUFsQztJQUNBck0sTUFBTTtJQUNOLElBQUk4RixLQUFLLEdBQUdoRyxPQUFaO0lBQ0EsSUFBSTRHLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7O0lBQ0EsSUFBSTRRLEtBQUssR0FBRyxTQUFSQSxLQUFRLEdBQVk7TUFDcEJsTCxJQUFJLENBQUMsYUFBRCxFQUFnQixRQUFoQixDQUFKO0lBQ0gsQ0FGRDs7SUFHQSxDQUFDLEdBQUcvTSxLQUFLLENBQUNnQixTQUFWLEVBQXFCLFlBQVk7TUFDN0JFLFFBQVEsQ0FBQ2lKLGVBQVQsQ0FBeUIvSSxLQUF6QixDQUErQmdKLFFBQS9CLEdBQTBDLFFBQTFDO0lBQ0gsQ0FGRDtJQUdBLENBQUMsR0FBR3BLLEtBQUssQ0FBQ21NLFdBQVYsRUFBdUIsWUFBWTtNQUMvQmpMLFFBQVEsQ0FBQ2lKLGVBQVQsQ0FBeUIvSSxLQUF6QixDQUErQmdKLFFBQS9CLEdBQTBDLE1BQTFDO0lBQ0gsQ0FGRDtJQUdBLElBQUkzRyxZQUFZLEdBQUc7TUFBRTJELFNBQVMsRUFBRUEsU0FBYjtNQUF3QjJGLElBQUksRUFBRUEsSUFBOUI7TUFBb0N2RyxLQUFLLEVBQUVBLEtBQTNDO01BQWtEeVIsS0FBSyxFQUFFQTtJQUF6RCxDQUFuQjtJQUNBdlksTUFBTSxDQUFDQyxjQUFQLENBQXNCOEQsWUFBdEIsRUFBb0MsaUJBQXBDLEVBQXVEO01BQUVHLFVBQVUsRUFBRSxLQUFkO01BQXFCL0QsS0FBSyxFQUFFO0lBQTVCLENBQXZEO0lBQ0EsT0FBTzRELFlBQVA7RUFDSDtBQTNCd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDTGE7O0FBQ2IvRCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDbUcsS0FBSyxFQUFFO0lBQ0hrQyxJQUFJLEVBQUU7TUFDRmhDLElBQUksRUFBRXVKLE1BREo7TUFFRnRKLFFBQVEsRUFBRSxLQUZSO01BR0YsV0FBUztJQUhQLENBREg7SUFNSHVSLFNBQVMsRUFBRTtNQUNQeFIsSUFBSSxFQUFFdUosTUFEQztNQUVQdEosUUFBUSxFQUFFO0lBRkgsQ0FOUjtJQVVId1IsS0FBSyxFQUFFO01BQ0h6UixJQUFJLEVBQUV1SixNQURIO01BRUh0SixRQUFRLEVBQUUsS0FGUDtNQUdILFdBQVM7SUFITixDQVZKO0lBZUh5UixRQUFRLEVBQUU7TUFDTjFSLElBQUksRUFBRXVKLE1BREE7TUFFTnRKLFFBQVEsRUFBRSxLQUZKO01BR04sV0FBUztJQUhILENBZlA7SUFvQkhyRSxJQUFJLEVBQUU7TUFDRm9FLElBQUksRUFBRXVKLE1BREo7TUFFRnRKLFFBQVEsRUFBRSxLQUZSO01BR0YsV0FBUztJQUhQLENBcEJIO0lBeUJIMFIsUUFBUSxFQUFFO01BQ04zUixJQUFJLEVBQUV1SixNQURBO01BRU50SixRQUFRLEVBQUUsS0FGSjtNQUdOLFdBQVM7SUFISCxDQXpCUDtJQThCSDJSLGlCQUFpQixFQUFFO01BQ2Y1UixJQUFJLEVBQUVLLE9BRFM7TUFFZkosUUFBUSxFQUFFLEtBRks7TUFHZixXQUFTO0lBSE07RUE5QmhCLENBRGtDO0VBcUN6Q3BHLEtBQUssRUFBRSxpQkFBWTtJQUNmLElBQUk2RyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsT0FBTztNQUFFRCxTQUFTLEVBQUVBO0lBQWIsQ0FBUDtFQUNIO0FBeEN3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNKYTs7QUFDYjFILDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFO0FBRG1DLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ0hhOztBQUNiLElBQUluSixlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJQyxLQUFLLEdBQUdELG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXdZLHFCQUFxQixHQUFHaFosZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRGQUFELENBQVIsQ0FBM0M7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsdUJBRGlDO0VBRXpDa0csS0FBSyxFQUFFO0lBQ0hnUyxTQUFTLEVBQUU7TUFDUDlSLElBQUksRUFBRWhILE1BREM7TUFFUGlILFFBQVEsRUFBRTtJQUZILENBRFI7SUFLSDhSLE1BQU0sRUFBRTtNQUNKL1IsSUFBSSxFQUFFdUosTUFERjtNQUVKdEosUUFBUSxFQUFFO0lBRk47RUFMTCxDQUZrQztFQVl6Q21HLEtBQUssRUFBRSxDQUFDLHlCQUFELEVBQTRCLE9BQTVCLENBWmtDO0VBYXpDdk0sS0FBSyxFQUFFLGVBQVVDLE9BQVYsRUFBbUJDLEVBQW5CLEVBQXVCO0lBQzFCLElBQUlDLE1BQU0sR0FBR0QsRUFBRSxDQUFDQyxNQUFoQjtJQUFBLElBQXdCcU0sSUFBSSxHQUFHdE0sRUFBRSxDQUFDc00sSUFBbEM7SUFDQXJNLE1BQU07SUFDTixJQUFJOEYsS0FBSyxHQUFHaEcsT0FBWjtJQUNBLElBQUlrWSxhQUFhLEdBQUcsQ0FBQyxHQUFHMVksS0FBSyxDQUFDYyxHQUFWLEVBQWUsRUFBZixDQUFwQjtJQUNBLElBQUk2WCx3QkFBd0IsR0FBRyxDQUFDLEdBQUczWSxLQUFLLENBQUNjLEdBQVYsR0FBL0I7SUFDQSxJQUFJc08sSUFBSSxHQUFHMVAsTUFBTSxDQUFDMFAsSUFBUCxDQUFZNUksS0FBSyxDQUFDZ1MsU0FBbEIsQ0FBWDtJQUNBLElBQUlJLFdBQVcsR0FBRyxDQUFDLEdBQUc1WSxLQUFLLENBQUNjLEdBQVYsRUFBZSxFQUFmLENBQWxCO0lBQ0EsSUFBSStYLFlBQVksR0FBRyxDQUFDLEdBQUc3WSxLQUFLLENBQUNjLEdBQVYsRUFBZSxFQUFmLENBQW5COztJQUNBLElBQUlnWSx1QkFBdUIsR0FBRyxTQUExQkEsdUJBQTBCLENBQVVDLHFCQUFWLEVBQWlDO01BQzNEaE0sSUFBSSxDQUFDLHlCQUFELEVBQTRCZ00scUJBQTVCLENBQUo7SUFDSCxDQUZEOztJQUdBQyxtQkFBbUI7O0lBQ25CLFNBQVNBLG1CQUFULEdBQStCO01BQzNCLElBQUk1SixJQUFJLEdBQUcxUCxNQUFNLENBQUMwUCxJQUFQLENBQVk1SSxLQUFLLENBQUNnUyxTQUFsQixDQUFYOztNQUNBLEtBQUssSUFBSXJKLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdDLElBQUksQ0FBQ25KLE1BQXpCLEVBQWlDa0osQ0FBQyxFQUFsQyxFQUFzQztRQUNsQ3VKLGFBQWEsQ0FBQzdZLEtBQWQsQ0FBb0JxRyxJQUFwQixDQUF5QjtVQUNyQnlFLEdBQUcsRUFBRXlFLElBQUksQ0FBQ0QsQ0FBRCxDQURZO1VBRXJCbkssS0FBSyxFQUFFd0IsS0FBSyxDQUFDZ1MsU0FBTixDQUFnQnBKLElBQUksQ0FBQ0QsQ0FBRCxDQUFwQixDQUZjO1VBR3JCb0gsSUFBSSxFQUFFO1FBSGUsQ0FBekI7TUFLSDtJQUNKOztJQUNELENBQUMsR0FBR3ZXLEtBQUssQ0FBQ2dCLFNBQVYsRUFBcUIsWUFBWTtNQUM3QjJYLHdCQUF3QixDQUFDOVksS0FBekIsQ0FBK0JpVCxnQkFBL0IsQ0FBZ0QsT0FBaEQsRUFBeURtRyxzQkFBekQ7SUFDSCxDQUZEO0lBR0EsQ0FBQyxHQUFHalosS0FBSyxDQUFDa1osZUFBVixFQUEyQixZQUFZO01BQ25DUCx3QkFBd0IsQ0FBQzlZLEtBQXpCLENBQStCcVQsbUJBQS9CLENBQW1ELE9BQW5ELEVBQTREK0Ysc0JBQTVEO0lBQ0gsQ0FGRDtJQUdBLElBQUlFLG1CQUFtQixHQUFHLENBQUMsR0FBR25aLEtBQUssQ0FBQ3NELFFBQVYsRUFBb0IsWUFBWTtNQUN0RCxJQUFJNEwsS0FBSyxHQUFHLENBQVo7TUFDQXdKLGFBQWEsQ0FBQzdZLEtBQWQsQ0FBb0J1WixHQUFwQixDQUF3QixVQUFVQyxJQUFWLEVBQWdCO1FBQ3BDLElBQUlBLElBQUksQ0FBQzlDLElBQVQsRUFBZTtVQUNYckgsS0FBSztRQUNSO01BQ0osQ0FKRDtNQUtBLE9BQU8sQ0FBQ0EsS0FBUjtJQUNILENBUnlCLENBQTFCOztJQVNBLElBQUlvSyxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQXNCLEdBQVk7TUFDbEMsSUFBSUMsWUFBWSxHQUFHWCxXQUFXLENBQUMvWSxLQUFaLENBQWtCMlosV0FBbEIsRUFBbkI7O01BQ0EsS0FBSyxJQUFJckssQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0MsSUFBSSxDQUFDbkosTUFBekIsRUFBaUNrSixDQUFDLEVBQWxDLEVBQXNDO1FBQ2xDLElBQUlrSyxJQUFJLEdBQUdYLGFBQWEsQ0FBQzdZLEtBQWQsQ0FBb0JzUCxDQUFwQixDQUFYO1FBQ0F1SixhQUFhLENBQUM3WSxLQUFkLENBQW9Cc1AsQ0FBcEIsRUFBdUJvSCxJQUF2QixHQUE4QjhDLElBQUksQ0FBQ3JVLEtBQUwsQ0FDekJ3VSxXQUR5QixHQUV6QjVPLFFBRnlCLENBRWhCMk8sWUFGZ0IsQ0FBOUI7TUFHSDtJQUNKLENBUkQ7O0lBU0EsSUFBSU4sc0JBQXNCLEdBQUcsU0FBekJBLHNCQUF5QixDQUFVaEUsS0FBVixFQUFpQjtNQUMxQ0EsS0FBSyxDQUFDQyxlQUFOO0lBQ0gsQ0FGRDs7SUFHQSxJQUFJdUUsV0FBVyxHQUFHLFNBQWRBLFdBQWMsR0FBWTtNQUMxQjFNLElBQUksQ0FBQyxPQUFELENBQUo7TUFDQStMLHVCQUF1QixDQUFDRCxZQUFZLENBQUNoWixLQUFkLENBQXZCO0lBQ0gsQ0FIRDs7SUFJQSxJQUFJNEQsWUFBWSxHQUFHO01BQUUrQyxLQUFLLEVBQUVBLEtBQVQ7TUFBZ0JrUyxhQUFhLEVBQUVBLGFBQS9CO01BQThDQyx3QkFBd0IsRUFBRUEsd0JBQXhFO01BQWtHNUwsSUFBSSxFQUFFQSxJQUF4RztNQUE4R3FDLElBQUksRUFBRUEsSUFBcEg7TUFBMEh3SixXQUFXLEVBQUVBLFdBQXZJO01BQW9KQyxZQUFZLEVBQUVBLFlBQWxLO01BQWdMQyx1QkFBdUIsRUFBRUEsdUJBQXpNO01BQWtPRSxtQkFBbUIsRUFBRUEsbUJBQXZQO01BQTRRRyxtQkFBbUIsRUFBRUEsbUJBQWpTO01BQXNURyxtQkFBbUIsRUFBRUEsbUJBQTNVO01BQWdXTCxzQkFBc0IsRUFBRUEsc0JBQXhYO01BQWdaUSxXQUFXLEVBQUVBLFdBQTdaO01BQTBhQyxZQUFZLEVBQUVuQixxQkFBcUI7SUFBN2MsQ0FBbkI7SUFDQTdZLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQjhELFlBQXRCLEVBQW9DLGlCQUFwQyxFQUF1RDtNQUFFRyxVQUFVLEVBQUUsS0FBZDtNQUFxQi9ELEtBQUssRUFBRTtJQUE1QixDQUF2RDtJQUNBLE9BQU80RCxZQUFQO0VBQ0g7QUF0RXdDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ1JhOztBQUNiL0QsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNtRyxLQUFLLEVBQUU7SUFDSGtDLElBQUksRUFBRTtNQUNGaEMsSUFBSSxFQUFFdUosTUFESjtNQUVGdEosUUFBUSxFQUFFO0lBRlIsQ0FESDtJQUtIcUosSUFBSSxFQUFFO01BQ0Z0SixJQUFJLEVBQUV1SixNQURKO01BRUZ0SixRQUFRLEVBQUU7SUFGUixDQUxIO0lBU0hnVCxPQUFPLEVBQUU7TUFDTGpULElBQUksRUFBRXVKLE1BREQ7TUFFTHRKLFFBQVEsRUFBRTtJQUZMLENBVE47SUFhSGlULE9BQU8sRUFBRTtNQUNMbFQsSUFBSSxFQUFFdUosTUFERDtNQUVMdEosUUFBUSxFQUFFO0lBRkw7RUFiTixDQURrQztFQW1CekNwRyxLQUFLLEVBQUUsZUFBVWlHLEtBQVYsRUFBaUI7SUFDcEIsT0FBTztNQUNIQSxLQUFLLEVBQUVBO0lBREosQ0FBUDtFQUdIO0FBdkJ3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNIYTs7QUFDYjlHLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLFlBRG1DO0VBRXpDbEMsS0FBSyxFQUFFO0lBQ0hxVCxXQUFXLEVBQUU7TUFDVG5ULElBQUksRUFBRUssT0FERztNQUVUSixRQUFRLEVBQUU7SUFGRCxDQURWO0lBS0htVCxTQUFTLEVBQUU7TUFDUHBULElBQUksRUFBRUssT0FEQztNQUVQSixRQUFRLEVBQUUsS0FGSDtNQUdQLFdBQVM7SUFIRixDQUxSO0lBVUh3UixLQUFLLEVBQUU7TUFDSHpSLElBQUksRUFBRXVKLE1BREg7TUFFSHRKLFFBQVEsRUFBRSxLQUZQO01BR0gsV0FBUztJQUhOO0VBVkosQ0FGa0M7RUFrQnpDbUcsS0FBSyxFQUFFLENBQUMsT0FBRCxFQUFVLE9BQVYsQ0FsQmtDO0VBbUJ6Q3ZNLEtBQUssRUFBRSxlQUFVaUcsS0FBVixFQUFpQi9GLEVBQWpCLEVBQXFCO0lBQ3hCLElBQUlzTSxJQUFJLEdBQUd0TSxFQUFFLENBQUNzTSxJQUFkO0lBQ0EsQ0FBQyxHQUFHak4sS0FBSyxDQUFDZ0osS0FBVixFQUFpQixZQUFZO01BQUUsT0FBT3RDLEtBQUssQ0FBQ3FULFdBQWI7SUFBMkIsQ0FBMUQsRUFBNEQsVUFBVUEsV0FBVixFQUF1QjtNQUMvRSxJQUFJQSxXQUFKLEVBQWlCO1FBQ2IzWSxRQUFRLENBQUNpSixlQUFULENBQXlCL0ksS0FBekIsQ0FBK0JnSixRQUEvQixHQUEwQyxRQUExQztNQUNILENBRkQsTUFHSztRQUNEbEosUUFBUSxDQUFDaUosZUFBVCxDQUF5Qi9JLEtBQXpCLENBQStCZ0osUUFBL0IsR0FBMEMsTUFBMUM7TUFDSDtJQUNKLENBUEQ7O0lBUUEsSUFBSTZOLEtBQUssR0FBRyxTQUFSQSxLQUFRLEdBQVk7TUFDcEIvVyxRQUFRLENBQUNpSixlQUFULENBQXlCL0ksS0FBekIsQ0FBK0JnSixRQUEvQixHQUEwQyxNQUExQztNQUNBMkMsSUFBSSxDQUFDLE9BQUQsQ0FBSjtNQUNBQSxJQUFJLENBQUMsT0FBRCxDQUFKO0lBQ0gsQ0FKRDs7SUFLQSxPQUFPO01BQUVrTCxLQUFLLEVBQUVBO0lBQVQsQ0FBUDtFQUNIO0FBbkN3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNIYTs7QUFDYixJQUFJMVksZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSWdhLHNCQUFzQixHQUFHeGEsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLCtGQUFELENBQVIsQ0FBNUM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDa00sVUFBVSxFQUFFO0lBQ1J5TixpQkFBaUIsRUFBRUQsc0JBQXNCO0VBRGpDLENBRDZCO0VBSXpDdlQsS0FBSyxFQUFFO0lBQ0h5VCxPQUFPLEVBQUU7TUFDTHZULElBQUksRUFBRU8sTUFERDtNQUVMTixRQUFRLEVBQUUsS0FGTDtNQUdMLFdBQVM7SUFISjtFQUROLENBSmtDO0VBV3pDcEcsS0FBSyxFQUFFLGVBQVVpRyxLQUFWLEVBQWlCO0lBQ3BCLElBQUkwVCxnQkFBZ0IsR0FBRyxDQUFDLEdBQUdwYSxLQUFLLENBQUNnQixHQUFWLEVBQWUwRixLQUFLLENBQUN5VCxPQUFyQixDQUF2QjtJQUNBLElBQUlFLFlBQVksR0FBRyxDQUFDLEdBQUdyYSxLQUFLLENBQUNnQixHQUFWLEVBQWUsR0FBZixDQUFuQjtJQUNBLE9BQU87TUFDSG9aLGdCQUFnQixFQUFFQSxnQkFEZjtNQUVIQyxZQUFZLEVBQUVBO0lBRlgsQ0FBUDtFQUlIO0FBbEJ3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNQYTs7QUFDYixJQUFJNWEsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXFhLG9CQUFvQixHQUFHN2EsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGlGQUFELENBQVIsQ0FBMUM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsc0JBRGlDO0VBRXpDa0csS0FBSyxFQUFFO0lBQ0g2VCxRQUFRLEVBQUU7TUFBRTNULElBQUksRUFBRU8sTUFBUjtNQUFnQk4sUUFBUSxFQUFFO0lBQTFCLENBRFA7SUFFSDJULFFBQVEsRUFBRTtNQUFFNVQsSUFBSSxFQUFFTyxNQUFSO01BQWdCTixRQUFRLEVBQUUsS0FBMUI7TUFBaUMsV0FBUztJQUExQztFQUZQLENBRmtDO0VBTXpDcEcsS0FBSyxFQUFFLGVBQVVDLE9BQVYsRUFBbUJDLEVBQW5CLEVBQXVCO0lBQzFCLElBQUlDLE1BQU0sR0FBR0QsRUFBRSxDQUFDQyxNQUFoQjtJQUNBQSxNQUFNO0lBQ04sSUFBSStDLFlBQVksR0FBRztNQUFFOFcsY0FBYyxFQUFFSCxvQkFBb0I7SUFBdEMsQ0FBbkI7SUFDQTFhLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQjhELFlBQXRCLEVBQW9DLGlCQUFwQyxFQUF1RDtNQUFFRyxVQUFVLEVBQUUsS0FBZDtNQUFxQi9ELEtBQUssRUFBRTtJQUE1QixDQUF2RDtJQUNBLE9BQU80RCxZQUFQO0VBQ0g7QUFad0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDUGE7O0FBQ2IvRCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLHFCQURtQztFQUV6QzZELFVBQVUsRUFBRSxFQUY2QjtFQUd6Qy9GLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQ0ZxRSxJQUFJLEVBQUUsQ0FBQ2hILE1BQUQsQ0FESjtNQUVGaUgsUUFBUSxFQUFFO0lBRlIsQ0FESDtJQUtINlQsS0FBSyxFQUFFO01BQ0g5VCxJQUFJLEVBQUVLLE9BREg7TUFFSEosUUFBUSxFQUFFLEtBRlA7TUFHSCxXQUFTO0lBSE47RUFMSixDQUhrQztFQWN6Q21HLEtBQUssRUFBRSxDQUFDLGlCQUFELENBZGtDO0VBZXpDdk0sS0FBSyxFQUFFLGVBQVVpRyxLQUFWLEVBQWlCL0YsRUFBakIsRUFBcUI7SUFDeEIsSUFBSXNNLElBQUksR0FBR3RNLEVBQUUsQ0FBQ3NNLElBQWQ7SUFDQSxJQUFJM0YsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLElBQUlvVCxXQUFXLEdBQUcsQ0FBQyxHQUFHM2EsS0FBSyxDQUFDZ0IsR0FBVixFQUFlLENBQWYsQ0FBbEI7SUFDQSxJQUFJNFosYUFBYSxHQUFHLENBQUMsR0FBRzVhLEtBQUssQ0FBQ2dCLEdBQVYsR0FBcEI7SUFDQSxJQUFJNlosWUFBWSxHQUFHLENBQUMsR0FBRzdhLEtBQUssQ0FBQ2dCLEdBQVYsR0FBbkI7SUFDQSxDQUFDLEdBQUdoQixLQUFLLENBQUNnSixLQUFWLEVBQWlCLFlBQVk7TUFBRSxPQUFPdEMsS0FBSyxDQUFDZ1UsS0FBYjtJQUFxQixDQUFwRCxFQUFzRCxVQUFVM2EsS0FBVixFQUFpQjtNQUNuRSxJQUFJQSxLQUFKLEVBQVc7UUFDUDRhLFdBQVcsQ0FBQzVhLEtBQVosR0FBb0IsQ0FBcEI7TUFDSDtJQUNKLENBSkQ7SUFLQSxDQUFDLEdBQUdDLEtBQUssQ0FBQ2dKLEtBQVYsRUFBaUIyUixXQUFqQixFQUE4QixZQUFZO01BQ3RDMU4sSUFBSSxDQUFDLGlCQUFELEVBQW9CME4sV0FBVyxDQUFDNWEsS0FBaEMsQ0FBSjtJQUNILENBRkQ7SUFHQSxJQUFJK2EsU0FBUyxHQUFHLENBQUMsR0FBRzlhLEtBQUssQ0FBQ3dELFFBQVYsRUFBb0IsWUFBWTtNQUM1QyxPQUFPb1gsYUFBYSxDQUFDN2EsS0FBckI7SUFDSCxDQUZlLENBQWhCO0lBR0EsSUFBSWdiLFFBQVEsR0FBRyxDQUFDLEdBQUcvYSxLQUFLLENBQUN3RCxRQUFWLEVBQW9CLFlBQVk7TUFDM0MsT0FBT3FYLFlBQVksQ0FBQzlhLEtBQXBCO0lBQ0gsQ0FGYyxDQUFmOztJQUdBLFNBQVNpYixnQkFBVCxDQUEwQkMsSUFBMUIsRUFBZ0M7TUFDNUJOLFdBQVcsQ0FBQzVhLEtBQVosR0FBb0JrYixJQUFwQjtJQUNIOztJQUNELFNBQVNDLFVBQVQsQ0FBb0JDLE9BQXBCLEVBQTZCO01BQ3pCUixXQUFXLENBQUM1YSxLQUFaLEdBQW9Cb2IsT0FBcEI7SUFDSDs7SUFDRCxTQUFTQyxRQUFULEdBQW9CO01BQ2hCVCxXQUFXLENBQUM1YSxLQUFaLEdBQ0k0YSxXQUFXLENBQUM1YSxLQUFaLEtBQXNCMkcsS0FBSyxDQUFDbkUsSUFBTixDQUFXOFksU0FBakMsR0FBNkMsQ0FBN0MsR0FBaURWLFdBQVcsQ0FBQzVhLEtBQVosR0FBb0IsQ0FEekU7SUFFSDs7SUFDRCxDQUFDLEdBQUdDLEtBQUssQ0FBQ2dKLEtBQVYsRUFBaUIsWUFBWTtNQUFFLE9BQU8yUixXQUFXLENBQUM1YSxLQUFuQjtJQUEyQixDQUExRCxFQUE0RCxVQUFVdWIsV0FBVixFQUF1QjtNQUMvRVYsYUFBYSxDQUFDN2EsS0FBZCxHQUFzQmtZLEtBQUssQ0FBQ3NELElBQU4sQ0FBV3RELEtBQUssQ0FBQ3ZSLEtBQUssQ0FBQ25FLElBQU4sQ0FBVzhZLFNBQVosQ0FBaEIsRUFBd0MsVUFBVXBXLENBQVYsRUFBYW9OLEtBQWIsRUFBb0I7UUFBRSxPQUFPQSxLQUFLLEdBQUcsQ0FBZjtNQUFtQixDQUFqRixDQUF0QjtNQUNBdUksYUFBYSxDQUFDN2EsS0FBZCxHQUFzQjZhLGFBQWEsQ0FBQzdhLEtBQWQsQ0FBb0I4TyxNQUFwQixDQUEyQixVQUFVOU8sS0FBVixFQUFpQjtRQUM5RCxPQUFRQSxLQUFLLEdBQUcyRyxLQUFLLENBQUNuRSxJQUFOLENBQVc4WSxTQUFYLEdBQXVCLENBQS9CLElBQW9DM1UsS0FBSyxDQUFDbkUsSUFBTixDQUFXOFksU0FBWCxJQUF3QnRiLEtBQXBFO01BQ0gsQ0FGcUIsQ0FBdEI7TUFHQThhLFlBQVksQ0FBQzlhLEtBQWIsR0FBcUJrWSxLQUFLLENBQUNzRCxJQUFOLENBQVd0RCxLQUFLLENBQUNxRCxXQUFXLEdBQUcsQ0FBZixDQUFoQixFQUFtQyxVQUFVclcsQ0FBVixFQUFhb04sS0FBYixFQUFvQjtRQUFFLE9BQU9BLEtBQUssR0FBRyxDQUFmO01BQW1CLENBQTVFLENBQXJCO01BQ0F3SSxZQUFZLENBQUM5YSxLQUFiLEdBQXFCOGEsWUFBWSxDQUFDOWEsS0FBYixDQUFtQjhPLE1BQW5CLENBQTBCLFVBQVU5TyxLQUFWLEVBQWlCO1FBQzVELE9BQU9BLEtBQUssR0FBR3ViLFdBQVcsR0FBRyxDQUE3QjtNQUNILENBRm9CLENBQXJCO0lBR0gsQ0FURDs7SUFVQSxTQUFTRSxZQUFULEdBQXdCO01BQ3BCYixXQUFXLENBQUM1YSxLQUFaLEdBQ0k0YSxXQUFXLENBQUM1YSxLQUFaLEtBQXNCLENBQXRCLEdBQTBCMkcsS0FBSyxDQUFDbkUsSUFBTixDQUFXOFksU0FBckMsR0FBaURWLFdBQVcsQ0FBQzVhLEtBQVosR0FBb0IsQ0FEekU7SUFFSDs7SUFDRCxPQUFPO01BQ0gyRyxLQUFLLEVBQUVBLEtBREo7TUFFSGlVLFdBQVcsRUFBRUEsV0FGVjtNQUdISyxnQkFBZ0IsRUFBRUEsZ0JBSGY7TUFJSEksUUFBUSxFQUFFQSxRQUpQO01BS0hJLFlBQVksRUFBRUEsWUFMWDtNQU1ITixVQUFVLEVBQUVBLFVBTlQ7TUFPSEosU0FBUyxFQUFFQSxTQVBSO01BUUhDLFFBQVEsRUFBRUEsUUFSUDtNQVNIelQsU0FBUyxFQUFFQTtJQVRSLENBQVA7RUFXSDtBQXRFd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDSmE7O0FBQ2IxSCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlDLEtBQUssR0FBR0QsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNDLE1BQU0sRUFBRSxjQURpQztFQUV6Q2tHLEtBQUssRUFBRTtJQUNIOEMsT0FBTyxFQUFFO01BQUU1QyxJQUFJLEVBQUV1SixNQUFSO01BQWdCdEosUUFBUSxFQUFFO0lBQTFCLENBRE47SUFFSEQsSUFBSSxFQUFFO01BQUVBLElBQUksRUFBRUssT0FBUjtNQUFpQkosUUFBUSxFQUFFO0lBQTNCO0VBRkgsQ0FGa0M7RUFNekNwRyxLQUFLLEVBQUUsZUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUI7SUFDMUIsSUFBSUMsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQ0FBLE1BQU07SUFDTixJQUFJOEYsS0FBSyxHQUFHaEcsT0FBWjtJQUNBLElBQUkrYSxTQUFTLEdBQUcsQ0FBQyxHQUFHdmIsS0FBSyxDQUFDYyxHQUFWLEVBQWUsRUFBZixDQUFoQjtJQUNBeWEsU0FBUyxDQUFDMWIsS0FBVixHQUNJMkcsS0FBSyxDQUFDRSxJQUFOLEtBQWUsSUFBZixHQUNNLDBIQUROLEdBRU0saUlBSFY7SUFJQSxJQUFJakQsWUFBWSxHQUFHO01BQUUrQyxLQUFLLEVBQUVBLEtBQVQ7TUFBZ0IrVSxTQUFTLEVBQUVBO0lBQTNCLENBQW5CO0lBQ0E3YixNQUFNLENBQUNDLGNBQVAsQ0FBc0I4RCxZQUF0QixFQUFvQyxpQkFBcEMsRUFBdUQ7TUFBRUcsVUFBVSxFQUFFLEtBQWQ7TUFBcUIvRCxLQUFLLEVBQUU7SUFBNUIsQ0FBdkQ7SUFDQSxPQUFPNEQsWUFBUDtFQUNIO0FBbEJ3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNKYTs7QUFDYi9ELDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHRCxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLGNBRGlDO0VBRXpDa0csS0FBSyxFQUFFO0lBQ0g7SUFDQWdWLFVBQVUsRUFBRTtNQUNSOVUsSUFBSSxFQUFFaEgsTUFERTtNQUVSaUgsUUFBUSxFQUFFO0lBRkYsQ0FGVDtJQU1Id1IsS0FBSyxFQUFFO01BQUV6UixJQUFJLEVBQUVPLE1BQVI7TUFBZ0JOLFFBQVEsRUFBRSxLQUExQjtNQUFpQyxXQUFTO0lBQTFDLENBTko7SUFPSDhVLFFBQVEsRUFBRTtNQUNOL1UsSUFBSSxFQUFFaEgsTUFEQTtNQUVOaUgsUUFBUSxFQUFFO0lBRkosQ0FQUDtJQVdId0wsS0FBSyxFQUFFO01BQ0h6TCxJQUFJLEVBQUVPLE1BREg7TUFFSE4sUUFBUSxFQUFFO0lBRlAsQ0FYSjtJQWVId0UsTUFBTSxFQUFFO01BQ0p6RSxJQUFJLEVBQUV1SixNQURGO01BRUp0SixRQUFRLEVBQUU7SUFGTjtFQWZMLENBRmtDO0VBc0J6Q3BHLEtBQUssRUFBRSxlQUFVQyxPQUFWLEVBQW1CQyxFQUFuQixFQUF1QjtJQUMxQixJQUFJQyxNQUFNLEdBQUdELEVBQUUsQ0FBQ0MsTUFBaEI7SUFDQUEsTUFBTTtJQUNOLElBQUk4RixLQUFLLEdBQUdoRyxPQUFaO0lBQ0EsSUFBSWtiLFVBQVUsR0FBRyxDQUFDLEdBQUcxYixLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQWpCO0lBQ0EsSUFBSTZhLFlBQVksR0FBRyxDQUFDLEdBQUczYixLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQW5CO0lBQ0EsSUFBSThhLGNBQWMsR0FBRyxDQUFDLEdBQUc1YixLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQXJCO0lBQ0EsSUFBSSthLFNBQVMsR0FBRyxDQUFDLEdBQUc3YixLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQWhCO0lBQ0EsSUFBSWdiLFdBQVcsR0FBRyxDQUFDLEdBQUc5YixLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQWxCO0lBQ0EsSUFBSWliLGFBQWEsR0FBRyxDQUFDLEdBQUcvYixLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQXBCO0lBQ0EsSUFBSWtiLFdBQVcsR0FBRyxDQUFDLEdBQUdoYyxLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQWxCOztJQUNBLElBQUltYixXQUFXLEdBQUcsU0FBZEEsV0FBYyxDQUFVQyxZQUFWLEVBQXdCO01BQ3RDLElBQUl6YixFQUFKLEVBQVF5RyxFQUFSOztNQUNBLElBQUlnSSxLQUFLLEdBQUcsQ0FBWjtNQUNBLENBQUMsQ0FBQ3pPLEVBQUUsR0FBRytGLEtBQUssQ0FBQ2lWLFFBQVosTUFBMEIsSUFBMUIsSUFBa0NoYixFQUFFLEtBQUssS0FBSyxDQUE5QyxHQUFrRCxLQUFLLENBQXZELEdBQTJEQSxFQUFFLENBQUMwYixNQUFILENBQVVELFlBQVYsQ0FBNUQsTUFDSyxDQUFDaFYsRUFBRSxHQUFHeEgsTUFBTSxDQUFDa1AsTUFBUCxDQUFjcEksS0FBSyxDQUFDaVYsUUFBTixDQUFlLFFBQWYsRUFBeUJTLFlBQXpCLENBQWQsQ0FBTixNQUFpRSxJQUFqRSxJQUF5RWhWLEVBQUUsS0FBSyxLQUFLLENBQXJGLEdBQXlGLEtBQUssQ0FBOUYsR0FBa0dBLEVBQUUsQ0FBQ2tTLEdBQUgsQ0FBTyxVQUFVQyxJQUFWLEVBQWdCO1FBQ3RIbkssS0FBSyxJQUFJeFAsTUFBTSxDQUFDMFAsSUFBUCxDQUFZaUssSUFBWixFQUFrQnBULE1BQTNCO01BQ0gsQ0FGa0csQ0FEdkc7TUFJQSxPQUFPaUosS0FBUDtJQUNILENBUkQ7O0lBU0EsSUFBSThJLEtBQUssR0FBRyxDQUFDLEdBQUdoWSxLQUFLLENBQUNzRCxRQUFWLEVBQW9CLFlBQVk7TUFDeEMsSUFBSTdDLEVBQUosRUFBUXlHLEVBQVIsRUFBWStCLEVBQVo7O01BQ0EsUUFBUXpDLEtBQUssQ0FBQzJFLE1BQU4sQ0FBYSxVQUFiLENBQVI7UUFDSSxLQUFLLFVBQUw7VUFDSSxPQUFPM0UsS0FBSyxDQUFDaVYsUUFBTixDQUFlcFosSUFBZixDQUFvQjJWLEtBQXBCLEdBQ0QsQ0FBQ3ZYLEVBQUUsR0FBRytGLEtBQUssQ0FBQ2lWLFFBQU4sQ0FBZXBaLElBQWYsQ0FBb0IyVixLQUFwQixDQUEwQixDQUExQixFQUE2Qm9FLFNBQW5DLE1BQWtELElBQWxELElBQTBEM2IsRUFBRSxLQUFLLEtBQUssQ0FBdEUsR0FBMEVBLEVBQTFFLEdBQStFLFVBRDlFLEdBRUQsVUFGTjs7UUFHSixLQUFLLFFBQUw7VUFDSSxPQUFPK0YsS0FBSyxDQUFDaVYsUUFBTixDQUFlcFosSUFBZixDQUFvQjJWLEtBQXBCLEdBQ0QsQ0FBQzlRLEVBQUUsR0FBR1YsS0FBSyxDQUFDaVYsUUFBTixDQUFlcFosSUFBZixDQUFvQjJWLEtBQXBCLENBQTBCLENBQTFCLEVBQTZCb0UsU0FBN0IsQ0FBdUMsQ0FBdkMsRUFBMEMsV0FBMUMsQ0FBTixNQUFrRSxJQUFsRSxJQUEwRWxWLEVBQUUsS0FBSyxLQUFLLENBQXRGLEdBQTBGQSxFQUExRixHQUErRixVQUQ5RixHQUVELFVBRk47O1FBR0osS0FBSyxRQUFMO1VBQ0ksT0FBUSxDQUFDVixLQUFLLENBQUNpVixRQUFOLENBQWVwWixJQUFmLENBQW9CZ2EsWUFBcEIsSUFDTDdWLEtBQUssQ0FBQ2lWLFFBQU4sQ0FBZXBaLElBQWYsQ0FBb0JnYSxZQUFwQixDQUFpQyxDQUFqQyxFQUFvQ3RJLElBRGhDLElBRUosS0FGSSxJQUdIdk4sS0FBSyxDQUFDaVYsUUFBTixDQUFlcFosSUFBZixDQUFvQmlhLFVBQXBCLElBQ0c5VixLQUFLLENBQUNpVixRQUFOLENBQWVwWixJQUFmLENBQW9CaWEsVUFBcEIsQ0FBK0IsQ0FBL0IsRUFBa0N2SSxJQUpsQyxDQUFSOztRQUtKLEtBQUssV0FBTDtVQUNJLE9BQU92TixLQUFLLENBQUNpVixRQUFOLENBQWVwWixJQUFmLENBQW9CMlYsS0FBcEIsR0FDRCxDQUFDL08sRUFBRSxHQUFHekMsS0FBSyxDQUFDaVYsUUFBTixDQUFlcFosSUFBZixDQUFvQjJWLEtBQXBCLENBQTBCLENBQTFCLEVBQTZCb0UsU0FBN0IsQ0FBdUMsQ0FBdkMsRUFBMEMsV0FBMUMsQ0FBTixNQUFrRSxJQUFsRSxJQUEwRW5ULEVBQUUsS0FBSyxLQUFLLENBQXRGLEdBQTBGQSxFQUExRixHQUErRixVQUQ5RixHQUVELFVBRk47O1FBR0o7VUFDSSxPQUFPLFVBQVA7TUFwQlI7SUFzQkgsQ0F4QlcsQ0FBWjs7SUF5QkEsSUFBSXNULFdBQVcsR0FBRyxTQUFkQSxXQUFjLENBQVVDLGFBQVYsRUFBeUI7TUFDdkMsSUFBSXROLEtBQUssR0FBRyxDQUFaOztNQUNBLEtBQUssSUFBSXhJLElBQVQsSUFBaUJGLEtBQUssQ0FBQ2dWLFVBQU4sQ0FBaUJnQixhQUFqQixFQUFnQyxRQUFoQyxDQUFqQixFQUE0RDtRQUN4RCxLQUFLLElBQUlySyxLQUFULElBQWtCM0wsS0FBSyxDQUFDZ1YsVUFBTixDQUFpQmdCLGFBQWpCLEVBQWdDLFFBQWhDLEVBQTBDOVYsSUFBMUMsQ0FBbEIsRUFBbUU7VUFDL0R3SSxLQUFLLElBQ0QxSSxLQUFLLENBQUNnVixVQUFOLENBQWlCZ0IsYUFBakIsS0FDSTljLE1BQU0sQ0FBQzBQLElBQVAsQ0FBWTVJLEtBQUssQ0FBQ2dWLFVBQU4sQ0FBaUJnQixhQUFqQixFQUFnQyxRQUFoQyxFQUEwQzlWLElBQTFDLEVBQWdEeUwsS0FBaEQsQ0FBWixFQUNLbE0sTUFIYjtRQUlIO01BQ0o7O01BQ0QsT0FBT2lKLEtBQVA7SUFDSCxDQVhEOztJQVlBLElBQUl1Tix1QkFBdUIsR0FBRyxTQUExQkEsdUJBQTBCLENBQVVoWSxDQUFWLEVBQWE7TUFDdkMsSUFBSWhFLEVBQUo7O01BQ0FrYixZQUFZLENBQUM5YixLQUFiLEdBQXFCLENBQUM4YixZQUFZLENBQUM5YixLQUFuQztNQUNBLElBQUk2YyxhQUFhLEdBQUdqWSxDQUFDLENBQUNpWSxhQUF0QjtNQUNBLElBQUlDLE1BQU0sR0FBR0QsYUFBYSxDQUFDRSxhQUFkLENBQTRCemIsYUFBNUIsQ0FBMEMsOEJBQTFDLENBQWI7TUFDQSxJQUFJMGIsUUFBUSxHQUFHLENBQUNwYyxFQUFFLEdBQUdrYyxNQUFNLEtBQUssSUFBWCxJQUFtQkEsTUFBTSxLQUFLLEtBQUssQ0FBbkMsR0FBdUMsS0FBSyxDQUE1QyxHQUFnREEsTUFBTSxDQUFDeGIsYUFBUCxDQUFxQixvQkFBckIsQ0FBdEQsTUFBc0csSUFBdEcsSUFBOEdWLEVBQUUsS0FBSyxLQUFLLENBQTFILEdBQThILEtBQUssQ0FBbkksR0FBdUlBLEVBQUUsQ0FBQ3dKLFlBQXpKOztNQUNBLElBQUkyUixjQUFjLENBQUMvYixLQUFmLElBQXdCOGMsTUFBTSxJQUFJLElBQXRDLEVBQTRDO1FBQ3hDQSxNQUFNLENBQUN2YixLQUFQLENBQWEwYixPQUFiLEdBQXVCLFdBQVdyYixNQUFYLENBQWtCb2IsUUFBbEIsRUFBNEIsS0FBNUIsQ0FBdkI7UUFDQXRULFVBQVUsQ0FBQyxZQUFZO1VBQ25Cb1QsTUFBTSxDQUFDdmIsS0FBUCxDQUFhMGIsT0FBYixHQUF1QixFQUF2QjtRQUNILENBRlMsRUFFUCxHQUZPLENBQVY7UUFHQWxCLGNBQWMsQ0FBQy9iLEtBQWYsR0FBdUIsS0FBdkI7TUFDSCxDQU5ELE1BT0ssSUFBSThjLE1BQU0sSUFBSSxJQUFkLEVBQW9CO1FBQ3JCQSxNQUFNLENBQUN2YixLQUFQLENBQWEwYixPQUFiLEdBQXVCLFdBQVdyYixNQUFYLENBQWtCb2IsUUFBbEIsRUFBNEIsS0FBNUIsQ0FBdkI7UUFDQXRULFVBQVUsQ0FBQyxZQUFZO1VBQ25Cb1QsTUFBTSxDQUFDdmIsS0FBUCxDQUFhMGIsT0FBYixHQUF1QixlQUF2QjtRQUNILENBRlMsRUFFUCxHQUZPLENBQVY7UUFHQWxCLGNBQWMsQ0FBQy9iLEtBQWYsR0FBdUIsSUFBdkI7TUFDSDtJQUNKLENBcEJEOztJQXFCQSxJQUFJa2Qsc0JBQXNCLEdBQUcsU0FBekJBLHNCQUF5QixDQUFVdFksQ0FBVixFQUFhO01BQ3RDLElBQUloRSxFQUFKOztNQUNBdWIsV0FBVyxDQUFDbmMsS0FBWixHQUFvQixDQUFDbWMsV0FBVyxDQUFDbmMsS0FBakM7TUFDQSxJQUFJNmMsYUFBYSxHQUFHalksQ0FBQyxDQUFDaVksYUFBdEI7TUFDQSxJQUFJQyxNQUFNLEdBQUdELGFBQWEsQ0FBQ0UsYUFBZCxDQUE0QnpiLGFBQTVCLENBQTBDLDZCQUExQyxDQUFiO01BQ0EsSUFBSTBiLFFBQVEsR0FBRyxDQUFDcGMsRUFBRSxHQUFHa2MsTUFBTSxLQUFLLElBQVgsSUFBbUJBLE1BQU0sS0FBSyxLQUFLLENBQW5DLEdBQXVDLEtBQUssQ0FBNUMsR0FBZ0RBLE1BQU0sQ0FBQ3hiLGFBQVAsQ0FBcUIsbUJBQXJCLENBQXRELE1BQXFHLElBQXJHLElBQTZHVixFQUFFLEtBQUssS0FBSyxDQUF6SCxHQUE2SCxLQUFLLENBQWxJLEdBQXNJQSxFQUFFLENBQUN3SixZQUF4Sjs7TUFDQSxJQUFJOFIsYUFBYSxDQUFDbGMsS0FBZCxJQUF1QjhjLE1BQU0sSUFBSSxJQUFyQyxFQUEyQztRQUN2Q0EsTUFBTSxDQUFDdmIsS0FBUCxDQUFhMGIsT0FBYixHQUF1QixXQUFXcmIsTUFBWCxDQUFrQm9iLFFBQWxCLEVBQTRCLEtBQTVCLENBQXZCO1FBQ0F0VCxVQUFVLENBQUMsWUFBWTtVQUNuQm9ULE1BQU0sQ0FBQ3ZiLEtBQVAsQ0FBYTBiLE9BQWIsR0FBdUIsRUFBdkI7UUFDSCxDQUZTLEVBRVAsR0FGTyxDQUFWO1FBR0FmLGFBQWEsQ0FBQ2xjLEtBQWQsR0FBc0IsS0FBdEI7TUFDSCxDQU5ELE1BT0ssSUFBSThjLE1BQU0sSUFBSSxJQUFkLEVBQW9CO1FBQ3JCQSxNQUFNLENBQUN2YixLQUFQLENBQWEwYixPQUFiLEdBQXVCLFdBQVdyYixNQUFYLENBQWtCb2IsUUFBbEIsRUFBNEIsS0FBNUIsQ0FBdkI7UUFDQXRULFVBQVUsQ0FBQyxZQUFZO1VBQ25Cb1QsTUFBTSxDQUFDdmIsS0FBUCxDQUFhMGIsT0FBYixHQUF1QixlQUF2QjtRQUNILENBRlMsRUFFUCxHQUZPLENBQVY7UUFHQWYsYUFBYSxDQUFDbGMsS0FBZCxHQUFzQixJQUF0QjtNQUNIO0lBQ0osQ0FwQkQ7O0lBcUJBLElBQUltZCxvQkFBb0IsR0FBRyxTQUF2QkEsb0JBQXVCLENBQVV2WSxDQUFWLEVBQWE7TUFDcEMsSUFBSWhFLEVBQUo7O01BQ0FvYixTQUFTLENBQUNoYyxLQUFWLEdBQWtCLENBQUNnYyxTQUFTLENBQUNoYyxLQUE3QjtNQUNBLElBQUk2YyxhQUFhLEdBQUdqWSxDQUFDLENBQUNpWSxhQUF0QjtNQUNBLElBQUlDLE1BQU0sR0FBR0QsYUFBYSxDQUFDRSxhQUFkLENBQTRCemIsYUFBNUIsQ0FBMEMsMkJBQTFDLENBQWI7TUFDQSxJQUFJMGIsUUFBUSxHQUFHLENBQUNwYyxFQUFFLEdBQUdrYyxNQUFNLEtBQUssSUFBWCxJQUFtQkEsTUFBTSxLQUFLLEtBQUssQ0FBbkMsR0FBdUMsS0FBSyxDQUE1QyxHQUFnREEsTUFBTSxDQUFDeGIsYUFBUCxDQUFxQixpQkFBckIsQ0FBdEQsTUFBbUcsSUFBbkcsSUFBMkdWLEVBQUUsS0FBSyxLQUFLLENBQXZILEdBQTJILEtBQUssQ0FBaEksR0FBb0lBLEVBQUUsQ0FBQ3dKLFlBQXRKOztNQUNBLElBQUk2UixXQUFXLENBQUNqYyxLQUFaLElBQXFCOGMsTUFBTSxJQUFJLElBQW5DLEVBQXlDO1FBQ3JDQSxNQUFNLENBQUN2YixLQUFQLENBQWEwYixPQUFiLEdBQXVCLFdBQVdyYixNQUFYLENBQWtCb2IsUUFBbEIsRUFBNEIsS0FBNUIsQ0FBdkI7UUFDQXRULFVBQVUsQ0FBQyxZQUFZO1VBQ25Cb1QsTUFBTSxDQUFDdmIsS0FBUCxDQUFhMGIsT0FBYixHQUF1QixFQUF2QjtRQUNILENBRlMsRUFFUCxHQUZPLENBQVY7UUFHQWhCLFdBQVcsQ0FBQ2pjLEtBQVosR0FBb0IsS0FBcEI7TUFDSCxDQU5ELE1BT0ssSUFBSThjLE1BQU0sSUFBSSxJQUFkLEVBQW9CO1FBQ3JCQSxNQUFNLENBQUN2YixLQUFQLENBQWEwYixPQUFiLEdBQXVCLFdBQVdyYixNQUFYLENBQWtCb2IsUUFBbEIsRUFBNEIsS0FBNUIsQ0FBdkI7UUFDQXRULFVBQVUsQ0FBQyxZQUFZO1VBQ25Cb1QsTUFBTSxDQUFDdmIsS0FBUCxDQUFhMGIsT0FBYixHQUF1QixlQUF2QjtRQUNILENBRlMsRUFFUCxHQUZPLENBQVY7UUFHQWhCLFdBQVcsQ0FBQ2pjLEtBQVosR0FBb0IsSUFBcEI7TUFDSDtJQUNKLENBcEJEOztJQXFCQSxJQUFJNEQsWUFBWSxHQUFHO01BQUVpWSxVQUFVLEVBQUVBLFVBQWQ7TUFBMEJDLFlBQVksRUFBRUEsWUFBeEM7TUFBc0RDLGNBQWMsRUFBRUEsY0FBdEU7TUFBc0ZDLFNBQVMsRUFBRUEsU0FBakc7TUFBNEdDLFdBQVcsRUFBRUEsV0FBekg7TUFBc0lDLGFBQWEsRUFBRUEsYUFBcko7TUFBb0tDLFdBQVcsRUFBRUEsV0FBakw7TUFBOEx4VixLQUFLLEVBQUVBLEtBQXJNO01BQTRNeVYsV0FBVyxFQUFFQSxXQUF6TjtNQUFzT2pFLEtBQUssRUFBRUEsS0FBN087TUFBb1B1RSxXQUFXLEVBQUVBLFdBQWpRO01BQThRRSx1QkFBdUIsRUFBRUEsdUJBQXZTO01BQWdVTSxzQkFBc0IsRUFBRUEsc0JBQXhWO01BQWdYQyxvQkFBb0IsRUFBRUE7SUFBdFksQ0FBbkI7SUFDQXRkLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQjhELFlBQXRCLEVBQW9DLGlCQUFwQyxFQUF1RDtNQUFFRyxVQUFVLEVBQUUsS0FBZDtNQUFxQi9ELEtBQUssRUFBRTtJQUE1QixDQUF2RDtJQUNBLE9BQU80RCxZQUFQO0VBQ0g7QUFqSndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ0phOztBQUNiLElBQUlsRSxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJQyxLQUFLLEdBQUdELG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSUUsbUJBQW1CLEdBQUdWLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQywrRUFBRCxDQUFSLENBQXpDOztBQUNBLElBQUlJLE9BQU8sR0FBR1osZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRDQUFELENBQVIsQ0FBN0I7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsV0FEaUM7RUFFekNrRyxLQUFLLEVBQUU7SUFDSHlXLFlBQVksRUFBRTtNQUNWdlcsSUFBSSxFQUFFdUosTUFESTtNQUVWdEosUUFBUSxFQUFFO0lBRkEsQ0FEWDtJQUtIeUcsU0FBUyxFQUFFO01BQ1AxRyxJQUFJLEVBQUVLLE9BREM7TUFFUEosUUFBUSxFQUFFLEtBRkg7TUFHUCxXQUFTO0lBSEYsQ0FMUjtJQVVIdVcsVUFBVSxFQUFFO01BQ1J4VyxJQUFJLEVBQUVPLE1BQU0sSUFBSSxJQURSO01BRVIsV0FBUztJQUZELENBVlQ7SUFjSGtXLGNBQWMsRUFBRTtNQUNaelcsSUFBSSxFQUFFTyxNQURNO01BRVosV0FBUztJQUZHLENBZGI7SUFrQkhtVyxTQUFTLEVBQUU7TUFDUDFXLElBQUksRUFBRUssT0FEQztNQUVQLFdBQVM7SUFGRjtFQWxCUixDQUZrQztFQXlCekMrRixLQUFLLEVBQUUsQ0FBQyxPQUFELENBekJrQztFQTBCekN2TSxLQUFLLEVBQUUsZUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUI7SUFDMUIsSUFBSUMsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQ0FBLE1BQU07SUFDTixJQUFJOEYsS0FBSyxHQUFHaEcsT0FBWjtJQUNBLElBQUk2YyxlQUFlLEdBQUcsQ0FBQyxHQUFHcmQsS0FBSyxDQUFDYyxHQUFWLEVBQWUsSUFBZixDQUF0QjtJQUNBLElBQUl3YyxRQUFRLEdBQUcsQ0FBQyxHQUFHdGQsS0FBSyxDQUFDYyxHQUFWLEdBQWY7SUFDQSxJQUFJeWMsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHdmQsS0FBSyxDQUFDYyxHQUFWLEVBQWUsS0FBZixDQUF6Qjs7SUFDQSxJQUFJMGMsZUFBZSxHQUFHLFNBQWxCQSxlQUFrQixDQUFVOVUsSUFBVixFQUFnQjtNQUNsQyxRQUFRQSxJQUFSO1FBQ0ksS0FBSyxVQUFMO1VBQ0ksT0FBTyx5QkFBUDs7UUFDSixLQUFLLFFBQUw7VUFDSSxPQUFPLFFBQVA7O1FBQ0osS0FBSyxXQUFMO1VBQ0ksT0FBTywwQkFBUDs7UUFDSixLQUFLLFFBQUw7VUFDSSxPQUFPLHFDQUFQOztRQUNKO1VBQ0ksT0FBT0EsSUFBUDtNQVZSO0lBWUgsQ0FiRDs7SUFjQSxJQUFJK1UsS0FBSyxHQUFHLFNBQVJBLEtBQVEsR0FBWTtNQUNwQnRkLE9BQU8sV0FBUCxXQUF1QixhQUF2QjtNQUNBc0MsTUFBTSxDQUFDOEgsUUFBUCxDQUFnQi9ILElBQWhCLEdBQXVCLGFBQXZCO0lBQ0gsQ0FIRDs7SUFJQSxDQUFDLEdBQUd4QyxLQUFLLENBQUNnQixTQUFWLEVBQXFCLFlBQVk7TUFDN0I0SSxZQUFZLENBQUNvQixPQUFiLENBQXFCLFVBQXJCLE1BQXFDLE9BQXJDLEdBQ09zUyxRQUFRLENBQUN6ZCxLQUFULEdBQWlCLEtBRHhCLEdBRU95ZCxRQUFRLENBQUN6ZCxLQUFULEdBQWlCLElBRnhCO01BR0F3ZCxlQUFlLENBQUN4ZCxLQUFoQixHQUF3QjJkLGVBQWUsQ0FBQ2hYLEtBQUssQ0FBQ3lXLFlBQVAsQ0FBdkM7TUFDQSxJQUFJUyxrQkFBa0IsR0FBRzlQLFdBQVcsQ0FBQyxZQUFZO1FBQzdDLElBQUkzTSxhQUFhLEdBQUdDLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixXQUF2QixDQUFwQjs7UUFDQSxJQUFJRixhQUFhLEtBQUssSUFBdEIsRUFBNEI7VUFDeEJBLGFBQWEsQ0FBQ0csS0FBZCxDQUFvQkMsU0FBcEIsR0FBZ0MsbUJBQWhDO1VBQ0F5TSxhQUFhLENBQUM0UCxrQkFBRCxDQUFiO1FBQ0g7TUFDSixDQU5tQyxFQU1qQyxFQU5pQyxDQUFwQztJQU9ILENBWkQ7SUFhQSxDQUFDLEdBQUcxZCxLQUFLLENBQUM4SSxLQUFWLEVBQWlCLFlBQVk7TUFBRSxPQUFPd1UsUUFBUSxDQUFDemQsS0FBaEI7SUFBd0IsQ0FBdkQsRUFBeUQsVUFBVUEsS0FBVixFQUFpQjtNQUN0RSxJQUFJLENBQUNBLEtBQUwsRUFBWTtRQUNSMEosVUFBVSxDQUFDLFlBQVk7VUFBRSxPQUFRZ1Usa0JBQWtCLENBQUMxZCxLQUFuQixHQUEyQixJQUFuQztRQUEyQyxDQUExRCxFQUE0RCxHQUE1RCxDQUFWO01BQ0gsQ0FGRCxNQUdLO1FBQ0QwZCxrQkFBa0IsQ0FBQzFkLEtBQW5CLEdBQTJCLEtBQTNCO01BQ0g7O01BQ0QrSixZQUFZLENBQUM4RixPQUFiLENBQXFCLFVBQXJCLEVBQWlDN1AsS0FBSyxDQUFDOGQsUUFBTixFQUFqQztJQUNILENBUkQsRUFRRztNQUFFNU4sSUFBSSxFQUFFO0lBQVIsQ0FSSDtJQVNBLENBQUMsR0FBRy9QLEtBQUssQ0FBQ21NLFdBQVYsRUFBdUIsWUFBWTtNQUMvQnZDLFlBQVksQ0FBQzhGLE9BQWIsQ0FBcUIsVUFBckIsRUFBaUMsRUFBakM7TUFDQSxJQUFJek8sYUFBYSxHQUFHQyxRQUFRLENBQUNDLGFBQVQsQ0FBdUIsV0FBdkIsQ0FBcEI7O01BQ0EsSUFBSUYsYUFBYSxLQUFLLElBQXRCLEVBQTRCO1FBQ3hCQSxhQUFhLENBQUNHLEtBQWQsQ0FBb0JDLFNBQXBCLEdBQWdDLGlCQUFoQztNQUNIO0lBQ0osQ0FORDtJQU9BLElBQUlnQyxlQUFlLEdBQUcsQ0FBQyxHQUFHckQsS0FBSyxDQUFDc0QsUUFBVixFQUFvQixZQUFZO01BQ2xELElBQUlrRCxLQUFLLENBQUMwVyxVQUFOLEtBQXFCLENBQXJCLElBQTBCMVcsS0FBSyxDQUFDMFcsVUFBTixLQUFxQixJQUFuRCxFQUF5RDtRQUNyRCxPQUFRMVcsS0FBSyxDQUFDMlcsY0FBTixHQUF1QjNXLEtBQUssQ0FBQzBXLFVBQTlCLEdBQTRDLEdBQW5EO01BQ0gsQ0FGRCxNQUdLLElBQUkxVyxLQUFLLENBQUM0RyxTQUFWLEVBQXFCO1FBQ3RCLE9BQU8sR0FBUDtNQUNILENBRkksTUFHQTtRQUNELE9BQU8sQ0FBUDtNQUNIO0lBQ0osQ0FWcUIsQ0FBdEI7SUFXQSxJQUFJd1EsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHNWQsS0FBSyxDQUFDd0QsTUFBVixFQUFrQixrQkFBbEIsQ0FBdkI7SUFDQSxJQUFJcWEsVUFBVSxHQUFHLENBQUMsR0FBRzdkLEtBQUssQ0FBQ3dELE1BQVYsRUFBa0IsWUFBbEIsQ0FBakI7SUFDQSxJQUFJQyxZQUFZLEdBQUc7TUFBRTRaLGVBQWUsRUFBRUEsZUFBbkI7TUFBb0NDLFFBQVEsRUFBRUEsUUFBOUM7TUFBd0RDLGtCQUFrQixFQUFFQSxrQkFBNUU7TUFBZ0cvVyxLQUFLLEVBQUVBLEtBQXZHO01BQThHZ1gsZUFBZSxFQUFFQSxlQUEvSDtNQUFnSkMsS0FBSyxFQUFFQSxLQUF2SjtNQUE4SnBhLGVBQWUsRUFBRUEsZUFBL0s7TUFBZ011YSxnQkFBZ0IsRUFBRUEsZ0JBQWxOO01BQW9PQyxVQUFVLEVBQUVBLFVBQWhQO01BQTRQbmEsYUFBYSxFQUFFekQsbUJBQW1CO0lBQTlSLENBQW5CO0lBQ0FQLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQjhELFlBQXRCLEVBQW9DLGlCQUFwQyxFQUF1RDtNQUFFRyxVQUFVLEVBQUUsS0FBZDtNQUFxQi9ELEtBQUssRUFBRTtJQUE1QixDQUF2RDtJQUNBLE9BQU80RCxZQUFQO0VBQ0g7QUFoR3dDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ1RhOztBQUNiLElBQUlsRSxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJK2Qsc0JBQXNCLEdBQUd2ZSxlQUFlLENBQUNRLG1CQUFPLENBQUMscUZBQUQsQ0FBUixDQUE1Qzs7QUFDQSxJQUFJZ2UsZUFBZSxHQUFHeGUsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHVFQUFELENBQVIsQ0FBckM7O0FBQ0EsSUFBSWllLHdCQUF3QixHQUFHemUsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHlGQUFELENBQVIsQ0FBOUM7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHRCxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlJLE9BQU8sR0FBR1osZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRDQUFELENBQVIsQ0FBN0I7O0FBQ0EsSUFBSUssT0FBTyxHQUFHTCxtQkFBTyxDQUFDLCtFQUFELENBQXJCOztBQUNBLElBQUlxRyxNQUFNLEdBQUdyRyxtQkFBTyxDQUFDLDJEQUFELENBQXBCOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLG9CQURpQztFQUV6Q2tHLEtBQUssRUFBRTtJQUNIeVcsWUFBWSxFQUFFO01BQ1Z2VyxJQUFJLEVBQUV1SixNQURJO01BRVZ0SixRQUFRLEVBQUU7SUFGQSxDQURYO0lBS0h5RyxTQUFTLEVBQUU7TUFDUDFHLElBQUksRUFBRUssT0FEQztNQUVQSixRQUFRLEVBQUUsS0FGSDtNQUdQLFdBQVM7SUFIRixDQUxSO0lBVUh1VyxVQUFVLEVBQUU7TUFDUnhXLElBQUksRUFBRU8sTUFBTSxJQUFJLElBRFI7TUFFUixXQUFTO0lBRkQsQ0FWVDtJQWNIa1csY0FBYyxFQUFFO01BQ1p6VyxJQUFJLEVBQUVPLE1BRE07TUFFWixXQUFTO0lBRkcsQ0FkYjtJQWtCSG1XLFNBQVMsRUFBRTtNQUNQMVcsSUFBSSxFQUFFSyxPQURDO01BRVAsV0FBUztJQUZGLENBbEJSO0lBc0JIa1gsT0FBTyxFQUFFO01BQ0x2WCxJQUFJLEVBQUVLO0lBREQ7RUF0Qk4sQ0FGa0M7RUE0QnpDeEcsS0FBSyxFQUFFLGVBQVVDLE9BQVYsRUFBbUJDLEVBQW5CLEVBQXVCO0lBQzFCLElBQUl5RyxFQUFKOztJQUNBLElBQUl4RyxNQUFNLEdBQUdELEVBQUUsQ0FBQ0MsTUFBaEI7SUFDQUEsTUFBTTtJQUNOLElBQUk4RixLQUFLLEdBQUdoRyxPQUFaO0lBQ0EsSUFBSUcsS0FBSyxHQUFHLENBQUMsR0FBR1AsT0FBTyxDQUFDUSxRQUFaLEdBQVo7SUFDQSxJQUFJc2QsYUFBYSxHQUFHLENBQUMsR0FBR2xlLEtBQUssQ0FBQ2MsR0FBVixFQUFlLElBQWYsQ0FBcEI7SUFDQSxJQUFJcWQsaUJBQWlCLEdBQUcsQ0FBQyxHQUFHbmUsS0FBSyxDQUFDYyxHQUFWLEVBQWUsS0FBZixDQUF4QjtJQUNBLElBQUlzZCxpQkFBaUIsR0FBRyxDQUFDLEdBQUdwZSxLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQXhCO0lBQ0EsSUFBSXFDLGNBQWMsR0FBRyxDQUFDLEdBQUduRCxLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQXJCO0lBQ0EsSUFBSXVkLGVBQWUsR0FBRyxDQUFDLEdBQUdyZSxLQUFLLENBQUNjLEdBQVYsRUFBZSxJQUFmLENBQXRCO0lBQ0EsSUFBSWlLLG9CQUFvQixHQUFHLENBQUMsR0FBRy9LLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEVBQWYsQ0FBM0I7SUFDQSxJQUFJa00saUJBQWlCLEdBQUcsQ0FBQyxHQUFHaE4sS0FBSyxDQUFDYyxHQUFWLEVBQWUsQ0FBZixDQUF4QjtJQUNBLElBQUkrSixFQUFFLEdBQUcsQ0FBQyxHQUFHekUsTUFBTSxDQUFDMEUsVUFBWCxFQUF1Qix1QkFBdkIsRUFBZ0Q7TUFDckRDLG9CQUFvQixFQUFFLENBQUM3RCxFQUFFLEdBQUcwQyxZQUFZLENBQUNvQixPQUFiLENBQXFCLHNCQUFyQixDQUFOLE1BQXdELElBQXhELElBQWdFOUQsRUFBRSxLQUFLLEtBQUssQ0FBNUUsR0FBZ0ZBLEVBQWhGLEdBQXFGO0lBRHRELENBQWhELENBQVQ7SUFHQSxDQUFDLEdBQUdsSCxLQUFLLENBQUNnQixTQUFWLEVBQXFCLFlBQVk7TUFDN0IrSixvQkFBb0IsQ0FBQ2xMLEtBQXJCLEdBQ0lnTCxFQUFFLENBQUNoTCxLQUFILENBQVNrTCxvQkFBVCxJQUFpQ3JMLE1BQU0sQ0FBQzBQLElBQVAsQ0FBWXZFLEVBQUUsQ0FBQ2hMLEtBQUgsQ0FBU2tMLG9CQUFyQixDQURyQztNQUVBLElBQUkyUyxrQkFBa0IsR0FBRzlQLFdBQVcsQ0FBQyxZQUFZO1FBQzdDLElBQUkzTSxhQUFhLEdBQUdDLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixXQUF2QixDQUFwQjs7UUFDQSxJQUFJRixhQUFhLEtBQUssSUFBdEIsRUFBNEI7VUFDeEJBLGFBQWEsQ0FBQ0csS0FBZCxDQUFvQkMsU0FBcEIsR0FBZ0MsbUJBQWhDOztVQUNBLElBQUksRUFBRW1GLEtBQUssQ0FBQ3lYLE9BQU4sSUFBaUJDLGFBQW5CLEtBQ0EsRUFBRUksV0FBVyxJQUFJLENBQUNILGlCQUFpQixDQUFDdGUsS0FBbEMsSUFBMkMsQ0FBQ3NELGNBQWMsQ0FBQ3RELEtBQTdELENBREEsSUFFQXdlLGVBRkEsSUFHQXRULG9CQUFvQixDQUFDbEwsS0FIckIsSUFJQWtMLG9CQUFvQixDQUFDbEwsS0FBckIsQ0FBMkJvRyxNQUEzQixHQUFvQyxDQUp4QyxFQUkyQyxDQUN2QztVQUNIOztVQUNENkgsYUFBYSxDQUFDNFAsa0JBQUQsQ0FBYjtRQUNIO01BQ0osQ0FibUMsRUFhakMsRUFiaUMsQ0FBcEM7SUFjSCxDQWpCRDtJQWtCQSxDQUFDLEdBQUcxZCxLQUFLLENBQUM4SSxLQUFWLEVBQWlCLFlBQVk7TUFBRSxPQUFPLENBQUNuSSxLQUFLLENBQUNvSSxLQUFOLENBQVl3VixnQkFBYixFQUErQjVkLEtBQUssQ0FBQ29JLEtBQU4sQ0FBWW9FLHFCQUEzQyxDQUFQO0lBQTJFLENBQTFHLEVBQTRHLFVBQVV0TixLQUFWLEVBQWlCO01BQ3pILElBQUlBLEtBQUosRUFBVztRQUNQa0wsb0JBQW9CLENBQUNsTCxLQUFyQixHQUNJYyxLQUFLLENBQUNvSSxLQUFOLENBQVlvRSxxQkFBWixDQUFrQ3BDLG9CQUFsQyxJQUNJckwsTUFBTSxDQUFDMFAsSUFBUCxDQUFZek8sS0FBSyxDQUFDb0ksS0FBTixDQUFZb0UscUJBQVosQ0FBa0NwQyxvQkFBOUMsQ0FGUjtRQUdBQSxvQkFBb0IsQ0FBQ2xMLEtBQXJCLEdBQ0lnTCxFQUFFLENBQUNoTCxLQUFILENBQVNrTCxvQkFBVCxJQUNJckwsTUFBTSxDQUFDMFAsSUFBUCxDQUFZdkUsRUFBRSxDQUFDaEwsS0FBSCxDQUFTa0wsb0JBQXJCLENBRlI7UUFHQTtNQUNIO0lBQ0osQ0FWRCxFQVVHO01BQUVnRixJQUFJLEVBQUU7SUFBUixDQVZIO0lBV0EsQ0FBQyxHQUFHL1AsS0FBSyxDQUFDOEksS0FBVixFQUFpQixZQUFZO01BQUUsT0FBT25JLEtBQUssQ0FBQ29JLEtBQU4sQ0FBWXdWLGdCQUFuQjtJQUFzQyxDQUFyRSxFQUF1RSxZQUFZO01BQy9FRixlQUFlLENBQUN4ZSxLQUFoQixHQUF3QixJQUF4QjtJQUNILENBRkQsRUFFRztNQUFFa1EsSUFBSSxFQUFFO0lBQVIsQ0FGSDtJQUdBLENBQUMsR0FBRy9QLEtBQUssQ0FBQzhJLEtBQVYsRUFBaUIsWUFBWTtNQUFFLE9BQU90QyxLQUFLLENBQUN5WCxPQUFiO0lBQXVCLENBQXRELEVBQXdELFVBQVVwZSxLQUFWLEVBQWlCO01BQ3JFLElBQUlBLEtBQUosRUFBVztRQUNQcWUsYUFBYSxDQUFDcmUsS0FBZCxHQUFzQixJQUF0QjtNQUNIO0lBQ0osQ0FKRDtJQUtBLENBQUMsR0FBR0csS0FBSyxDQUFDOEksS0FBVixFQUFpQixZQUFZO01BQUUsT0FBTyxDQUNsQ3RDLEtBQUssQ0FBQ3lYLE9BRDRCLEVBRWxDQyxhQUFhLENBQUNyZSxLQUZvQixFQUdsQ3llLFdBSGtDLEVBSWxDSCxpQkFBaUIsQ0FBQ3RlLEtBSmdCLEVBS2xDc0QsY0FBYyxDQUFDdEQsS0FMbUIsRUFNbEN1ZSxpQkFBaUIsQ0FBQ3ZlLEtBTmdCLENBQVA7SUFPM0IsQ0FQSixFQU9NLFlBQVk7TUFDZCxJQUFJb0IsYUFBYSxHQUFHQyxRQUFRLENBQUNDLGFBQVQsQ0FBdUIsV0FBdkIsQ0FBcEI7O01BQ0EsSUFBSSxDQUFDcWQsWUFBWSxDQUFDM2UsS0FBZCxJQUNBLENBQUM0ZSxpQkFBaUIsQ0FBQzVlLEtBRG5CLElBRUE2ZSxvQkFGQSxJQUdBTixpQkFBaUIsQ0FBQ3ZlLEtBSHRCLEVBRzZCO1FBQ3pCMEosVUFBVSxDQUFDLFlBQVk7VUFDbkIsSUFBSXRJLGFBQWEsS0FBSyxJQUF0QixFQUE0QjtZQUN4QkEsYUFBYSxDQUFDRyxLQUFkLENBQW9CQyxTQUFwQixHQUFnQyx3QkFBaEM7VUFDSDtRQUNKLENBSlMsRUFJUCxHQUpPLENBQVY7TUFLSCxDQVRELE1BVUs7UUFDRCxJQUFJSixhQUFhLEtBQUssSUFBdEIsRUFBNEI7VUFDeEJBLGFBQWEsQ0FBQ0csS0FBZCxDQUFvQkMsU0FBcEIsR0FBZ0MsbUJBQWhDO1FBQ0g7TUFDSjtJQUNKLENBeEJEO0lBeUJBLElBQUlxZCxvQkFBb0IsR0FBRyxDQUFDLEdBQUcxZSxLQUFLLENBQUNzRCxRQUFWLEVBQW9CLFlBQVk7TUFDdkQsT0FBUSthLGVBQWUsQ0FBQ3hlLEtBQWhCLElBQ0p5TixVQUFVLENBQUN6TixLQURQLElBRUpILE1BQU0sQ0FBQzBQLElBQVAsQ0FBWTlCLFVBQVUsQ0FBQ3pOLEtBQXZCLEVBQThCb0csTUFBOUIsR0FBdUMsQ0FGM0M7SUFHSCxDQUowQixDQUEzQjtJQUtBLElBQUl3WSxpQkFBaUIsR0FBRyxDQUFDLEdBQUd6ZSxLQUFLLENBQUNzRCxRQUFWLEVBQW9CLFlBQVk7TUFDcEQsT0FBT2diLFdBQVcsQ0FBQ3plLEtBQVosSUFBcUIsQ0FBQ3NlLGlCQUFpQixDQUFDdGUsS0FBeEMsSUFBaUQsQ0FBQ3NELGNBQWMsQ0FBQ3RELEtBQXhFO0lBQ0gsQ0FGdUIsQ0FBeEI7SUFHQSxJQUFJMmUsWUFBWSxHQUFHLENBQUMsR0FBR3hlLEtBQUssQ0FBQ3NELFFBQVYsRUFBb0IsWUFBWTtNQUMvQyxPQUFPa0QsS0FBSyxDQUFDeVgsT0FBTixJQUFpQkMsYUFBYSxDQUFDcmUsS0FBdEM7SUFDSCxDQUZrQixDQUFuQjtJQUdBLENBQUMsR0FBR0csS0FBSyxDQUFDbU0sV0FBVixFQUF1QixZQUFZO01BQy9CLElBQUlsTCxhQUFhLEdBQUdDLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixXQUF2QixDQUFwQjs7TUFDQSxJQUFJRixhQUFhLEtBQUssSUFBdEIsRUFBNEI7UUFDeEIsSUFBSStMLGlCQUFpQixDQUFDbk4sS0FBbEIsR0FBMEIsQ0FBMUIsSUFDQUgsTUFBTSxDQUFDMFAsSUFBUCxDQUFZdkUsRUFBRSxDQUFDaEwsS0FBSCxDQUFTa0wsb0JBQXJCLEVBQTJDOUUsTUFBM0MsR0FBb0QsQ0FEeEQsRUFDMkQ7VUFDdkRoRixhQUFhLENBQUNHLEtBQWQsQ0FBb0JDLFNBQXBCLEdBQWdDLDBCQUFoQztRQUNILENBSEQsTUFJSztVQUNESixhQUFhLENBQUNHLEtBQWQsQ0FBb0JDLFNBQXBCLEdBQWdDLG1CQUFoQztRQUNIO01BQ0o7SUFDSixDQVhEOztJQVlBLElBQUlzZCxnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQW1CLEdBQVk7TUFDL0JOLGVBQWUsQ0FBQ3hlLEtBQWhCLEdBQXdCLEtBQXhCO01BQ0ErSixZQUFZLENBQUM4RixPQUFiLENBQXFCLHVCQUFyQixFQUE4Qyx5QkFBOUM7TUFDQS9PLEtBQUssQ0FBQ1ksUUFBTixDQUFlLDZCQUFmLEVBQThDLEVBQTlDO01BQ0FwQixPQUFPLFdBQVAsV0FBdUIsd0NBQXZCO0lBQ0gsQ0FMRDs7SUFNQSxJQUFJeWUsUUFBUSxHQUFHLFNBQVhBLFFBQVcsR0FBWTtNQUN2QlYsYUFBYSxDQUFDcmUsS0FBZCxHQUFzQixLQUF0QjtNQUNBTSxPQUFPLFdBQVAsV0FBdUIsYUFBdkIsRUFBc0M0QixJQUF0QyxDQUEyQyxZQUFZO1FBQ25EcEIsS0FBSyxDQUFDWSxRQUFOLENBQWUsb0JBQWYsRUFBcUMsSUFBckM7UUFDQVosS0FBSyxDQUFDWSxRQUFOLENBQWUscUJBQWYsRUFBc0MsSUFBdEM7UUFDQWdJLFVBQVUsQ0FBQyxZQUFZO1VBQUUsT0FBTzVJLEtBQUssQ0FBQ1ksUUFBTixDQUFlLHFCQUFmLEVBQXNDLEtBQXRDLENBQVA7UUFBc0QsQ0FBckUsRUFBdUUsSUFBdkUsQ0FBVjtNQUNILENBSkQ7SUFLSCxDQVBEOztJQVFBLENBQUMsR0FBR3ZCLEtBQUssQ0FBQzhJLEtBQVYsRUFBaUIsWUFBWTtNQUFFLE9BQU9uSSxLQUFLLENBQUNvSSxLQUFOLENBQVk4VixtQkFBbkI7SUFBeUMsQ0FBeEUsRUFBMEUsVUFBVWhmLEtBQVYsRUFBaUI7TUFDdkYsSUFBSUEsS0FBSixFQUFXO1FBQ1BzZSxpQkFBaUIsQ0FBQ3RlLEtBQWxCLEdBQTBCLElBQTFCO01BQ0g7O01BQ0RzZSxpQkFBaUIsQ0FBQ3RlLEtBQWxCLEdBQTBCLEtBQTFCO0lBQ0gsQ0FMRCxFQUtHO01BQUVrUSxJQUFJLEVBQUU7SUFBUixDQUxIO0lBTUEsQ0FBQyxHQUFHL1AsS0FBSyxDQUFDOEksS0FBVixFQUFpQixZQUFZO01BQUUsT0FBT25JLEtBQUssQ0FBQ29JLEtBQU4sQ0FBWWlFLGlCQUFuQjtJQUF1QyxDQUF0RSxFQUF3RSxVQUFVbk4sS0FBVixFQUFpQjtNQUNyRm1OLGlCQUFpQixDQUFDbk4sS0FBbEIsR0FBMEJBLEtBQTFCO0lBQ0gsQ0FGRCxFQUVHO01BQUVrUSxJQUFJLEVBQUU7SUFBUixDQUZIO0lBR0EsQ0FBQyxHQUFHL1AsS0FBSyxDQUFDOEksS0FBVixFQUFpQixZQUFZO01BQUUsT0FBT25JLEtBQUssQ0FBQ29JLEtBQU4sQ0FBWTVGLGNBQW5CO0lBQW9DLENBQW5FLEVBQXFFLFVBQVV0RCxLQUFWLEVBQWlCO01BQ2xGc0QsY0FBYyxDQUFDdEQsS0FBZixHQUF1QkEsS0FBdkI7SUFDSCxDQUZELEVBRUc7TUFBRWtRLElBQUksRUFBRTtJQUFSLENBRkg7SUFHQSxJQUFJdU8sV0FBVyxHQUFHLENBQUMsR0FBR3RlLEtBQUssQ0FBQ3dELE1BQVYsRUFBa0IsYUFBbEIsQ0FBbEI7SUFDQSxJQUFJOEosVUFBVSxHQUFHLENBQUMsR0FBR3ROLEtBQUssQ0FBQ3dELE1BQVYsRUFBa0IsWUFBbEIsQ0FBakI7SUFDQSxJQUFJQyxZQUFZLEdBQUc7TUFBRTlDLEtBQUssRUFBRUEsS0FBVDtNQUFnQnVkLGFBQWEsRUFBRUEsYUFBL0I7TUFBOENDLGlCQUFpQixFQUFFQSxpQkFBakU7TUFBb0ZDLGlCQUFpQixFQUFFQSxpQkFBdkc7TUFBMEhqYixjQUFjLEVBQUVBLGNBQTFJO01BQTBKa2IsZUFBZSxFQUFFQSxlQUEzSztNQUE0THRULG9CQUFvQixFQUFFQSxvQkFBbE47TUFBd09pQyxpQkFBaUIsRUFBRUEsaUJBQTNQO01BQThRbkMsRUFBRSxFQUFFQSxFQUFsUjtNQUFzUnJFLEtBQUssRUFBRUEsS0FBN1I7TUFBb1NrWSxvQkFBb0IsRUFBRUEsb0JBQTFUO01BQWdWRCxpQkFBaUIsRUFBRUEsaUJBQW5XO01BQXNYRCxZQUFZLEVBQUVBLFlBQXBZO01BQWtaRyxnQkFBZ0IsRUFBRUEsZ0JBQXBhO01BQXNiQyxRQUFRLEVBQUVBLFFBQWhjO01BQTBjTixXQUFXLEVBQUVBLFdBQXZkO01BQW9laFIsVUFBVSxFQUFFQSxVQUFoZjtNQUE0ZndSLGdCQUFnQixFQUFFaEIsc0JBQXNCLFdBQXBpQjtNQUE4aUJpQixTQUFTLEVBQUVoQixlQUFlLFdBQXhrQjtNQUFrbEJpQixrQkFBa0IsRUFBRWhCLHdCQUF3QjtJQUE5bkIsQ0FBbkI7SUFDQXRlLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQjhELFlBQXRCLEVBQW9DLGlCQUFwQyxFQUF1RDtNQUFFRyxVQUFVLEVBQUUsS0FBZDtNQUFxQi9ELEtBQUssRUFBRTtJQUE1QixDQUF2RDtJQUNBLE9BQU80RCxZQUFQO0VBQ0g7QUFoS3dDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ2JhOztBQUNiLElBQUlsRSxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJQyxLQUFLLEdBQUdELG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXFHLE1BQU0sR0FBR3JHLG1CQUFPLENBQUMsMkRBQUQsQ0FBcEI7O0FBQ0EsSUFBSUksT0FBTyxHQUFHWixlQUFlLENBQUNRLG1CQUFPLENBQUMsNENBQUQsQ0FBUixDQUE3QixFQUNBOzs7QUFDQSxJQUFJd1kscUJBQXFCLEdBQUdoWixlQUFlLENBQUNRLG1CQUFPLENBQUMsNEZBQUQsQ0FBUixDQUEzQzs7QUFDQSxJQUFJRyxnQkFBZ0IsR0FBR1gsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGtGQUFELENBQVIsQ0FBdEM7O0FBQ0EsSUFBSWtmLG9CQUFvQixHQUFHMWYsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRHQUFELENBQVIsQ0FBMUMsRUFDQTs7O0FBQ0EsSUFBSUssT0FBTyxHQUFHTCxtQkFBTyxDQUFDLCtFQUFELENBQXJCOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsY0FEaUM7RUFFekNDLEtBQUssRUFBRSxlQUFVQyxPQUFWLEVBQW1CQyxFQUFuQixFQUF1QjtJQUMxQixJQUFJQyxNQUFNLEdBQUdELEVBQUUsQ0FBQ0MsTUFBaEI7SUFDQUEsTUFBTTtJQUNOLElBQUkwRyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSTFHLEtBQUssR0FBRyxDQUFDLEdBQUdQLE9BQU8sQ0FBQ1EsUUFBWixHQUFaLENBSjBCLENBSzFCOztJQUNBLElBQUlzRyxFQUFFLEdBQUcsQ0FBQyxHQUFHZCxNQUFNLENBQUM4QyxTQUFYLEdBQVQ7SUFBQSxJQUFrQ2dXLFdBQVcsR0FBR2hZLEVBQUUsQ0FBQyxDQUFELENBQWxEO0lBQUEsSUFBdURpWSxZQUFZLEdBQUdqWSxFQUFFLENBQUMsQ0FBRCxDQUF4RSxDQU4wQixDQU8xQjs7O0lBQ0EsSUFBSWtZLE1BQU0sR0FBRyxDQUFDLEdBQUdwZixLQUFLLENBQUM4SCxRQUFWLEVBQW9CO01BQzdCakksS0FBSyxFQUFFLEtBRHNCO01BRTdCbVEsSUFBSSxFQUFFNUksU0FBUyxDQUFDd0IsVUFBVixDQUFxQixhQUFyQjtJQUZ1QixDQUFwQixDQUFiLENBUjBCLENBWTFCOztJQUNBLElBQUloQixZQUFZLEdBQUcsQ0FBQyxHQUFHNUgsS0FBSyxDQUFDd0QsTUFBVixFQUFrQixjQUFsQixDQUFuQjs7SUFDQSxJQUFJNmIsY0FBYyxHQUFHLFNBQWpCQSxjQUFpQixHQUFZO01BQzdCRCxNQUFNLENBQUN2ZixLQUFQLEdBQWUsSUFBZjtNQUNBdWYsTUFBTSxDQUFDcFAsSUFBUCxHQUFjLENBQUMsR0FBR2hRLEtBQUssQ0FBQ3NmLFVBQVYsRUFBc0JsWSxTQUFTLENBQUM2TixLQUFWLENBQWdCLFVBQWhCLENBQXRCLENBQWQ7TUFDQWlLLFdBQVcsQ0FBQ3JmLEtBQVosR0FBb0IsS0FBcEI7TUFDQSxJQUFJMGYsY0FBYyxHQUFHLGFBQWE5ZCxNQUFiLENBQW9CZCxLQUFLLENBQUNvSSxLQUFOLENBQVl5VyxrQkFBaEMsQ0FBckI7TUFDQXJmLE9BQU8sV0FBUCxXQUF1Qm9mLGNBQXZCLEVBQXVDeGQsSUFBdkMsQ0FBNEMsVUFBVUMsR0FBVixFQUFlO1FBQ3ZELElBQUl5TCxRQUFRLEdBQUd6TCxHQUFHLENBQUNLLElBQW5CO1FBQ0F1RixZQUFZLENBQUMwQixPQUFiLEdBQXVCbUUsUUFBUSxDQUFDbkUsT0FBaEM7UUFDQTFCLFlBQVksQ0FBQ2xCLElBQWIsR0FBb0IrRyxRQUFRLENBQUNySyxPQUE3Qjs7UUFDQSxJQUFJcUssUUFBUSxDQUFDckssT0FBYixFQUFzQjtVQUNsQlgsTUFBTSxDQUFDOEgsUUFBUCxDQUFnQnNCLE9BQWhCLENBQXdCLGFBQXhCO1FBQ0gsQ0FGRCxNQUdLO1VBQ0R0QyxVQUFVLENBQUMsWUFBWTtZQUNuQjZWLE1BQU0sQ0FBQ3ZmLEtBQVAsR0FBZSxLQUFmO1lBQ0EwSyxRQUFRLENBQUNrVixNQUFUO1VBQ0gsQ0FIUyxFQUdQLElBSE8sQ0FBVjtRQUlIO01BQ0osQ0FiRDtJQWNILENBbkJEOztJQW9CQSxJQUFJaGMsWUFBWSxHQUFHO01BQUUyRCxTQUFTLEVBQUVBLFNBQWI7TUFBd0J6RyxLQUFLLEVBQUVBLEtBQS9CO01BQXNDdWUsV0FBVyxFQUFFQSxXQUFuRDtNQUFnRUMsWUFBWSxFQUFFQSxZQUE5RTtNQUE0RkMsTUFBTSxFQUFFQSxNQUFwRztNQUE0R3hYLFlBQVksRUFBRUEsWUFBMUg7TUFBd0l5WCxjQUFjLEVBQUVBLGNBQXhKO01BQXdLQyxVQUFVLEVBQUV0ZixLQUFLLENBQUNzZixVQUExTDtNQUFzTTVGLFlBQVksRUFBRW5CLHFCQUFxQixXQUF6TztNQUFtUDVVLEtBQUssRUFBRXpELGdCQUFnQixXQUExUTtNQUFvUjRYLE1BQU0sRUFBRW1ILG9CQUFvQjtJQUFoVCxDQUFuQjtJQUNBdmYsTUFBTSxDQUFDQyxjQUFQLENBQXNCOEQsWUFBdEIsRUFBb0MsaUJBQXBDLEVBQXVEO01BQUVHLFVBQVUsRUFBRSxLQUFkO01BQXFCL0QsS0FBSyxFQUFFO0lBQTVCLENBQXZEO0lBQ0EsT0FBTzRELFlBQVA7RUFDSDtBQXZDd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDaEJhOztBQUNiL0QsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNxSSxJQUFJLEVBQUUsWUFEbUM7RUFFekM2RCxVQUFVLEVBQUUsRUFGNkI7RUFHekMvRixLQUFLLEVBQUU7SUFDSHdKLElBQUksRUFBRTtNQUNGdEosSUFBSSxFQUFFdUosTUFESjtNQUVGdEosUUFBUSxFQUFFO0lBRlIsQ0FESDtJQUtIckUsSUFBSSxFQUFFO01BQ0ZvRSxJQUFJLEVBQUV1SixNQURKO01BRUZ0SixRQUFRLEVBQUUsS0FGUjtNQUdGLFdBQVM7SUFIUCxDQUxIO0lBVUh1SixJQUFJLEVBQUU7TUFDRnhKLElBQUksRUFBRXVKLE1BREo7TUFFRnRKLFFBQVEsRUFBRSxLQUZSO01BR0YsV0FBUztJQUhQLENBVkg7SUFlSCtZLE1BQU0sRUFBRTtNQUNKaFosSUFBSSxFQUFFdUosTUFERjtNQUVKdEosUUFBUSxFQUFFLEtBRk47TUFHSixXQUFTO0lBSEw7RUFmTCxDQUhrQztFQXdCekNwRyxLQUFLLEVBQUUsZUFBVWlHLEtBQVYsRUFBaUI7SUFDcEIsSUFBSWtaLE1BQU0sR0FBRyxDQUFDLEdBQUc1ZixLQUFLLENBQUMwTSxNQUFWLEVBQWtCaEcsS0FBbEIsRUFBeUJrWixNQUF0QztJQUNBLElBQUlDLFNBQVMsR0FBR0QsTUFBTSxDQUFDN2YsS0FBdkI7SUFDQSxJQUFJK2YsT0FBTyxHQUFHLEVBQWQ7O0lBQ0EsUUFBUUQsU0FBUjtNQUNJLEtBQUssUUFBTDtRQUNJQyxPQUFPLEdBQUcsNkRBQVY7UUFDQTs7TUFDSjtRQUNJQSxPQUFPLEdBQ0gsZ0VBREo7SUFMUjs7SUFRQSxPQUFPO01BQUVBLE9BQU8sRUFBRUE7SUFBWCxDQUFQO0VBQ0g7QUFyQ3dDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ0hhOztBQUNiLElBQUlyZ0IsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHRCxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlxRyxNQUFNLEdBQUdyRyxtQkFBTyxDQUFDLDJEQUFELENBQXBCOztBQUNBLElBQUlJLE9BQU8sR0FBR1osZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRDQUFELENBQVIsQ0FBN0IsRUFDQTs7O0FBQ0EsSUFBSXdZLHFCQUFxQixHQUFHaFosZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRGQUFELENBQVIsQ0FBM0M7O0FBQ0EsSUFBSUcsZ0JBQWdCLEdBQUdYLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxrRkFBRCxDQUFSLENBQXRDOztBQUNBLElBQUlrZixvQkFBb0IsR0FBRzFmLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0R0FBRCxDQUFSLENBQTFDLEVBQ0E7OztBQUNBLElBQUlvRyxNQUFNLEdBQUdwRyxtQkFBTyxDQUFDLDZFQUFELENBQXBCOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsZUFEaUM7RUFFekNrRyxLQUFLLEVBQUU7SUFDSEUsSUFBSSxFQUFFO01BQUVBLElBQUksRUFBRXVKLE1BQVI7TUFBZ0IsV0FBUztJQUF6QixDQURIO0lBRUg0UCxZQUFZLEVBQUU7TUFBRW5aLElBQUksRUFBRUssT0FBUjtNQUFpQkosUUFBUSxFQUFFO0lBQTNCLENBRlg7SUFHSHdFLE1BQU0sRUFBRTtNQUFFekUsSUFBSSxFQUFFdUosTUFBUjtNQUFnQnRKLFFBQVEsRUFBRTtJQUExQixDQUhMO0lBSUhtWixhQUFhLEVBQUU7TUFBRXBaLElBQUksRUFBRUssT0FBUjtNQUFpQkosUUFBUSxFQUFFO0lBQTNCLENBSlo7SUFLSG9aLFVBQVUsRUFBRTtNQUFFclosSUFBSSxFQUFFTyxNQUFSO01BQWdCTixRQUFRLEVBQUU7SUFBMUI7RUFMVCxDQUZrQztFQVN6Q3BHLEtBQUssRUFBRSxlQUFVQyxPQUFWLEVBQW1CQyxFQUFuQixFQUF1QjtJQUMxQixJQUFJQyxNQUFNLEdBQUdELEVBQUUsQ0FBQ0MsTUFBaEI7SUFDQUEsTUFBTTtJQUNOLElBQUk4RixLQUFLLEdBQUdoRyxPQUFaO0lBQ0EsSUFBSTRHLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7O0lBQ0EsSUFBSUgsRUFBRSxHQUFHLENBQUMsR0FBR2xILEtBQUssQ0FBQ3dNLE1BQVYsRUFBa0JoRyxLQUFsQixDQUFUO0lBQUEsSUFBbUNxWixZQUFZLEdBQUczWSxFQUFFLENBQUMyWSxZQUFyRDtJQUFBLElBQW1FMVUsTUFBTSxHQUFHakUsRUFBRSxDQUFDaUUsTUFBL0U7SUFBQSxJQUF1RjJVLGFBQWEsR0FBRzVZLEVBQUUsQ0FBQzRZLGFBQTFHO0lBQUEsSUFBeUhDLFVBQVUsR0FBRzdZLEVBQUUsQ0FBQzZZLFVBQXpJOztJQUNBLENBQUMsR0FBRy9mLEtBQUssQ0FBQ2dnQixTQUFWLEVBQXFCLFlBQVk7TUFDN0IsSUFBSVosTUFBTSxDQUFDdmYsS0FBWCxFQUFrQjtRQUNkYyxLQUFLLENBQUNZLFFBQU4sQ0FBZSxpQkFBZixFQUFrQyxJQUFsQztNQUNILENBRkQsTUFHSztRQUNEWixLQUFLLENBQUNZLFFBQU4sQ0FBZSxpQkFBZixFQUFrQyxLQUFsQztNQUNIOztNQUNELElBQUk2ZCxNQUFNLENBQUN2ZixLQUFYLEVBQWtCO1FBQ2RvZ0IsWUFBWSxDQUFDcGdCLEtBQWIsR0FBcUIsS0FBckI7TUFDSDs7TUFDRCxJQUFJb2dCLFlBQVksQ0FBQ3BnQixLQUFqQixFQUF3QjtRQUNwQnVmLE1BQU0sQ0FBQ3ZmLEtBQVAsR0FBZSxLQUFmO01BQ0g7O01BQ0QsSUFBSXFnQixXQUFXLENBQUNyZ0IsS0FBWixLQUFzQixDQUExQixFQUE2QjtRQUN6Qm9nQixZQUFZLENBQUNwZ0IsS0FBYixHQUFxQixLQUFyQjtRQUNBMEosVUFBVSxDQUFDLFlBQVk7VUFDbkI2VixNQUFNLENBQUN2ZixLQUFQLEdBQWUsSUFBZjtRQUNILENBRlMsRUFFUCxHQUZPLENBQVY7TUFHSDs7TUFDRCxJQUFJcWdCLFdBQVcsQ0FBQ3JnQixLQUFaLEtBQXNCLENBQXRCLElBQ0FxZ0IsV0FBVyxDQUFDcmdCLEtBQVosS0FBc0IsQ0FEdEIsSUFFQXFnQixXQUFXLENBQUNyZ0IsS0FBWixLQUFzQixDQUYxQixFQUU2QjtRQUN6QnVmLE1BQU0sQ0FBQ3ZmLEtBQVAsR0FBZSxLQUFmO1FBQ0FvZ0IsWUFBWSxDQUFDcGdCLEtBQWIsR0FBcUIsSUFBckI7TUFDSDtJQUNKLENBekJEO0lBMEJBO0FBQ1I7QUFDQTs7SUFDUSxJQUFJYyxLQUFLLEdBQUcsQ0FBQyxHQUFHd0YsTUFBTSxDQUFDZ0IsV0FBWCxHQUFaLENBbkMwQixDQW9DMUI7O0lBQ0EsSUFBSW1CLEVBQUUsR0FBR3lYLFVBQVUsQ0FBQ2xnQixLQUFwQixDQXJDMEIsQ0FzQzFCOztJQUNBLElBQUlvSixFQUFFLEdBQUcsQ0FBQyxHQUFHN0MsTUFBTSxDQUFDOEMsU0FBWCxHQUFUO0lBQUEsSUFBa0MrVyxZQUFZLEdBQUdoWCxFQUFFLENBQUMsQ0FBRCxDQUFuRDtJQUFBLElBQXdEa1gsYUFBYSxHQUFHbFgsRUFBRSxDQUFDLENBQUQsQ0FBMUUsQ0F2QzBCLENBd0MxQjs7O0lBQ0EsSUFBSWlYLFdBQVcsR0FBRyxDQUFDLEdBQUdsZ0IsS0FBSyxDQUFDYyxHQUFWLEVBQWUsQ0FBZixDQUFsQixDQXpDMEIsQ0EwQzFCOztJQUNBLElBQUlzZSxNQUFNLEdBQUcsQ0FBQyxHQUFHcGYsS0FBSyxDQUFDYyxHQUFWLEVBQWUsS0FBZixDQUFiLENBM0MwQixDQTRDMUI7SUFDQTtJQUNBOztJQUNBLElBQUlzZixpQkFBaUIsR0FBR04sYUFBYSxDQUFDamdCLEtBQXRDLENBL0MwQixDQWdEMUI7O0lBQ0EsSUFBSXdnQixVQUFVLEdBQUcsQ0FBQyxHQUFHcmdCLEtBQUssQ0FBQ2MsR0FBVixFQUFlc0csU0FBUyxDQUFDd0IsVUFBVixDQUFxQixhQUFyQixDQUFmLENBQWpCLENBakQwQixDQWtEMUI7O0lBQ0EsSUFBSTBYLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBbUIsR0FBWTtNQUMvQkosV0FBVyxDQUFDcmdCLEtBQVosR0FBb0IsQ0FBcEI7TUFDQW9nQixZQUFZLENBQUNwZ0IsS0FBYixHQUFxQixLQUFyQjtJQUNILENBSEQsQ0FuRDBCLENBdUQxQjs7O0lBQ0EsSUFBSTBnQixrQkFBa0IsR0FBRyxDQUFDLEdBQUd2Z0IsS0FBSyxDQUFDc0QsUUFBVixFQUFvQixZQUFZO01BQ3JELElBQUlrZCxZQUFZLEdBQUcsQ0FBQyxHQUFHeGdCLEtBQUssQ0FBQzhILFFBQVYsRUFBb0I7UUFDbkNrUSxLQUFLLEVBQUUsRUFENEI7UUFFbkN5SSxXQUFXLEVBQUUsRUFGc0I7UUFHbkN2USxJQUFJLEVBQUUsRUFINkI7UUFJbkN3USxVQUFVLEVBQUU7TUFKdUIsQ0FBcEIsQ0FBbkI7TUFNQSxJQUFJMUksS0FBSyxHQUFHLEVBQVo7TUFBQSxJQUFnQnlJLFdBQVcsR0FBRyxFQUE5QjtNQUFBLElBQWtDdlEsSUFBSSxHQUFHLE1BQXpDLENBUHFELENBUXJEOztNQUNBLElBQUlrUSxpQkFBSixFQUF1QjtRQUNuQnBJLEtBQUssR0FBRzVRLFNBQVMsQ0FBQ3dCLFVBQVYsQ0FBcUIseUJBQXJCLENBQVI7UUFDQTZYLFdBQVcsR0FBR3JaLFNBQVMsQ0FBQ3dCLFVBQVYsQ0FBcUIsb0RBQXJCLENBQWQ7TUFDSCxDQUhELE1BSUs7UUFDRG9QLEtBQUssR0FBRzVRLFNBQVMsQ0FBQ3dCLFVBQVYsQ0FBcUIsNEJBQXJCLENBQVI7UUFDQTZYLFdBQVcsR0FBR3JaLFNBQVMsQ0FBQ3dCLFVBQVYsQ0FBcUIsb0RBQXJCLENBQWQ7UUFDQXNILElBQUksR0FBRyxjQUFQO01BQ0gsQ0FqQm9ELENBa0JyRDs7O01BQ0EsSUFBSXlRLENBQUMsR0FBR3ZaLFNBQVMsQ0FBQ3daLGVBQVYsQ0FBMEIsUUFBMUIsQ0FBUjs7TUFDQSxRQUFRVixXQUFXLENBQUNyZ0IsS0FBcEI7UUFDSTtRQUNBLEtBQUssQ0FBTDtVQUNJMmdCLFlBQVksQ0FBQ3hJLEtBQWIsR0FBcUJBLEtBQXJCO1VBQ0F3SSxZQUFZLENBQUNDLFdBQWIsR0FBMkJBLFdBQTNCO1VBQ0FELFlBQVksQ0FBQ3RRLElBQWIsR0FBb0JBLElBQXBCO1VBQ0FzUSxZQUFZLENBQUNFLFVBQWIsR0FBMEJOLGlCQUExQjtVQUNBO1FBQ0o7O1FBQ0EsS0FBSyxDQUFMO1VBQ0lJLFlBQVksQ0FBQ3hJLEtBQWIsR0FBcUI1USxTQUFTLENBQUN5WixVQUFWLENBQXFCLDhDQUFyQixDQUFyQjtVQUNBTCxZQUFZLENBQUNDLFdBQWIsR0FBMkJyWixTQUFTLENBQUN5WixVQUFWLENBQXFCLDJGQUFyQixDQUEzQjtVQUNBTCxZQUFZLENBQUN0USxJQUFiLEdBQW9CLFFBQXBCO1VBQ0FzUSxZQUFZLENBQUNFLFVBQWIsR0FBMEIsS0FBMUI7VUFDQTtRQUNKOztRQUNBLEtBQUssQ0FBTDtVQUNJRixZQUFZLENBQUN4SSxLQUFiLEdBQXFCNVEsU0FBUyxDQUFDeVosVUFBVixDQUFxQixpQkFBckIsQ0FBckI7VUFDQUwsWUFBWSxDQUFDQyxXQUFiLEdBQTJCclosU0FBUyxDQUFDeVosVUFBVixDQUFxQixzQ0FBckIsQ0FBM0I7VUFDQUwsWUFBWSxDQUFDdFEsSUFBYixHQUFvQixNQUFwQjtVQUNBc1EsWUFBWSxDQUFDRSxVQUFiLEdBQTBCLElBQTFCO1VBQ0E7UUFDSjs7UUFDQSxLQUFLLENBQUw7VUFDSUYsWUFBWSxDQUFDeEksS0FBYixHQUFxQjVRLFNBQVMsQ0FBQ3laLFVBQVYsQ0FBcUIsdUJBQXJCLENBQXJCO1VBQ0FMLFlBQVksQ0FBQ0MsV0FBYixHQUEyQixTQUFTaGYsTUFBVCxDQUFnQnFmLEdBQUcsQ0FBQ0MsY0FBcEIsRUFBb0MsR0FBcEMsRUFBeUN0ZixNQUF6QyxDQUFnRGtmLENBQUMsQ0FBQ0ssUUFBbEQsRUFBNEQsR0FBNUQsRUFBaUV2ZixNQUFqRSxDQUF3RWtmLENBQUMsQ0FBQ3hFLE1BQTFFLEVBQWtGLFdBQWxGLEVBQStGMWEsTUFBL0YsQ0FBc0dxZixHQUFHLENBQUNHLFdBQTFHLEVBQXVILEdBQXZILEVBQTRIeGYsTUFBNUgsQ0FBbUlrZixDQUFDLENBQUN4RSxNQUFySSxFQUE2SSxPQUE3SSxFQUFzSjFhLE1BQXRKLENBQTZKa2YsQ0FBQyxDQUFDTyxHQUEvSixFQUFvSyxNQUFwSyxFQUE0S3pmLE1BQTVLLENBQW1McWYsR0FBRyxDQUFDSyxhQUF2TCxFQUFzTSxHQUF0TSxFQUEyTTFmLE1BQTNNLENBQWtOa2YsQ0FBQyxDQUFDUyxRQUFwTixFQUE4TixPQUE5TixFQUF1TzNmLE1BQXZPLENBQThPa2YsQ0FBQyxDQUFDUyxRQUFoUCxFQUEwUCxJQUExUCxFQUFnUTNmLE1BQWhRLENBQXVRa2YsQ0FBQyxDQUFDSyxRQUF6USxFQUFtUixTQUFuUixFQUE4UnZmLE1BQTlSLENBQXFTa2YsQ0FBQyxDQUFDVSw4QkFBdlMsRUFBdVUsU0FBdlUsRUFBa1Y1ZixNQUFsVixDQUF5VmtmLENBQUMsQ0FBQ1csd0NBQTNWLEVBQXFZLE1BQXJZLENBQTNCO1VBQ0FkLFlBQVksQ0FBQ3RRLElBQWIsR0FBb0IsY0FBcEI7VUFDQXNRLFlBQVksQ0FBQ0UsVUFBYixHQUEwQixLQUExQjtVQUNBO1FBQ0o7O1FBQ0EsS0FBSyxDQUFMO1VBQ0lGLFlBQVksQ0FBQ3hJLEtBQWIsR0FBcUI1USxTQUFTLENBQUN5WixVQUFWLENBQXFCLHVCQUFyQixDQUFyQjtVQUNBTCxZQUFZLENBQUNDLFdBQWIsR0FBMkIsU0FBU2hmLE1BQVQsQ0FBZ0JxZixHQUFHLENBQUNHLFdBQXBCLEVBQWlDLElBQWpDLEVBQXVDeGYsTUFBdkMsQ0FBOENrZixDQUFDLENBQUN4RSxNQUFoRCxFQUF3RCxRQUF4RCxFQUFrRTFhLE1BQWxFLENBQXlFa2YsQ0FBQyxDQUFDTyxHQUEzRSxFQUFnRixNQUFoRixFQUF3RnpmLE1BQXhGLENBQStGcWYsR0FBRyxDQUFDSyxhQUFuRyxFQUFrSCxJQUFsSCxFQUF3SDFmLE1BQXhILENBQStIa2YsQ0FBQyxDQUFDUyxRQUFqSSxFQUEySSxRQUEzSSxFQUFxSjNmLE1BQXJKLENBQTRKa2YsQ0FBQyxDQUFDWSxVQUE5SixFQUEwSyxLQUExSyxFQUFpTDlmLE1BQWpMLENBQXdMa2YsQ0FBQyxDQUFDYSw0QkFBMUwsRUFBd04sU0FBeE4sRUFBbU8vZixNQUFuTyxDQUEwT2tmLENBQUMsQ0FBQ1csd0NBQTVPLEVBQXNSLE1BQXRSLENBQTNCO1VBQ0FkLFlBQVksQ0FBQ3RRLElBQWIsR0FBb0IsY0FBcEI7VUFDQXNRLFlBQVksQ0FBQ0UsVUFBYixHQUEwQixLQUExQjtVQUNBO01BbkNSOztNQXFDQSxPQUFPRixZQUFQO0lBQ0gsQ0ExRHdCLENBQXpCLENBeEQwQixDQW1IMUI7O0lBQ0EsSUFBSWlCLFdBQVcsR0FBRyxTQUFkQSxXQUFjLEdBQVk7TUFDMUIsSUFBSXZCLFdBQVcsQ0FBQ3JnQixLQUFaLElBQXFCLENBQXJCLElBQTBCcWdCLFdBQVcsQ0FBQ3JnQixLQUFaLEdBQW9CLENBQWxELEVBQXFEO1FBQ2pEcWdCLFdBQVcsQ0FBQ3JnQixLQUFaO01BQ0g7SUFDSixDQUpEOztJQUtBLElBQUk2aEIsWUFBWSxHQUFHLFNBQWZBLFlBQWUsR0FBWTtNQUMzQixJQUFJeEIsV0FBVyxDQUFDcmdCLEtBQVosR0FBb0IsQ0FBcEIsSUFBeUJxZ0IsV0FBVyxDQUFDcmdCLEtBQVosSUFBcUIsQ0FBbEQsRUFBcUQ7UUFDakRxZ0IsV0FBVyxDQUFDcmdCLEtBQVo7TUFDSDtJQUNKLENBSkQsQ0F6SDBCLENBOEgxQjs7O0lBQ0EsSUFBSWloQixHQUFHLEdBQUcsQ0FBQyxHQUFHOWdCLEtBQUssQ0FBQzhILFFBQVYsRUFBb0I7TUFDMUJpWixjQUFjLEVBQUUsQ0FEVTtNQUUxQkUsV0FBVyxFQUFFLENBRmE7TUFHMUJFLGFBQWEsRUFBRTtJQUhXLENBQXBCLENBQVYsQ0EvSDBCLENBb0kxQjs7SUFDQSxJQUFJUSxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQW9CLEdBQVk7TUFDaEMxQixZQUFZLENBQUNwZ0IsS0FBYixHQUFxQixLQUFyQjs7TUFDQSxJQUFJLENBQUNvZ0IsWUFBWSxDQUFDcGdCLEtBQWxCLEVBQXlCO1FBQ3JCMEosVUFBVSxDQUFDLFlBQVk7VUFDbkI2VixNQUFNLENBQUN2ZixLQUFQLEdBQWUsSUFBZjtRQUNILENBRlMsRUFFUCxHQUZPLENBQVY7TUFHSDs7TUFDRHdnQixVQUFVLENBQUN4Z0IsS0FBWCxHQUFtQixHQUFHNEIsTUFBSCxDQUFVMkYsU0FBUyxDQUFDd0IsVUFBVixDQUFxQixZQUFyQixDQUFWLEVBQThDLEdBQTlDLEVBQW1EbkgsTUFBbkQsQ0FBMEQyRixTQUFTLENBQUN3QixVQUFWLENBQXFCLFVBQXJCLENBQTFELENBQW5CO01BQ0F6SSxPQUFPLFdBQVAsQ0FBZ0IrSyxJQUFoQixDQUFxQixhQUFhekosTUFBYixDQUFvQjZHLEVBQXBCLEVBQXdCLG1CQUF4QixDQUFyQixFQUFtRXZHLElBQW5FLENBQXdFLFVBQVVDLEdBQVYsRUFBZTtRQUNuRixJQUFJeUwsUUFBUSxHQUFHekwsR0FBRyxDQUFDSyxJQUFuQjtRQUNBLElBQUk4WixNQUFNLEdBQUcxTyxRQUFRLENBQUMwTyxNQUF0Qjs7UUFDQSxJQUFJMU8sUUFBUSxDQUFDckssT0FBVCxLQUFxQixLQUF6QixFQUFnQztVQUM1Qm1ILFFBQVEsQ0FBQ2tWLE1BQVQ7UUFDSDs7UUFDRCxJQUFJdEQsTUFBTSxDQUFDbFcsTUFBUCxHQUFnQixDQUFwQixFQUF1QjtVQUNuQnRGLEtBQUssQ0FBQ1ksUUFBTixDQUFlLHFCQUFmLEVBQXNDNGEsTUFBdEMsRUFEbUIsQ0FFbkI7O1VBQ0EsSUFBSXlGLElBQUksR0FBR25VLFFBQVEsQ0FBQ29VLE9BQVQsQ0FBaUJiLFFBQTVCO1VBQ0NGLEdBQUcsQ0FBQ0MsY0FBSixHQUFxQmEsSUFBdEIsRUFDS2QsR0FBRyxDQUFDRyxXQUFKLEdBQWtCeFQsUUFBUSxDQUFDb1UsT0FBVCxDQUFpQjFULEtBRHhDLEVBRUsyUyxHQUFHLENBQUNLLGFBQUosR0FBb0IxVCxRQUFRLENBQUNvVSxPQUFULENBQWlCQyxPQUYxQzs7VUFHQSxJQUFJRixJQUFJLEdBQUcsQ0FBWCxFQUFjO1lBQ1YxQixXQUFXLENBQUNyZ0IsS0FBWixHQUFvQixDQUFwQjtVQUNILENBRkQsTUFHSztZQUNEcWdCLFdBQVcsQ0FBQ3JnQixLQUFaLEdBQW9CLENBQXBCO1VBQ0g7UUFDSixDQWJELE1BY0s7VUFDRHFnQixXQUFXLENBQUNyZ0IsS0FBWixHQUFvQixDQUFwQjtRQUNIOztRQUNEMEosVUFBVSxDQUFDLFlBQVk7VUFDbkI2VixNQUFNLENBQUN2ZixLQUFQLEdBQWUsS0FBZjtRQUNILENBRlMsRUFFUCxJQUZPLENBQVY7TUFHSCxDQTFCRDtJQTJCSCxDQW5DRCxDQXJJMEIsQ0F5SzFCOzs7SUFDQSxJQUFJOFcsU0FBUyxHQUFHLENBQUMsR0FBRzNXLEtBQUssQ0FBQ3dELE1BQVYsRUFBa0IsV0FBbEIsQ0FBaEI7SUFDQTtBQUNSO0FBQ0E7O0lBQ1EsSUFBSXVlLFlBQVksR0FBRyxTQUFmQSxZQUFlLEdBQVk7TUFDM0I1aEIsT0FBTyxXQUFQLENBQWdCK0MsR0FBaEIsQ0FBb0IseUNBQXBCLEVBQStEbkIsSUFBL0QsQ0FBb0UsVUFBVUMsR0FBVixFQUFlO1FBQy9FLElBQUl5TCxRQUFRLEdBQUd6TCxHQUFHLENBQUNLLElBQW5COztRQUNBLElBQUlvTCxRQUFRLENBQUNySyxPQUFULEtBQXFCLElBQXpCLEVBQStCO1VBQzNCNmMsWUFBWSxDQUFDcGdCLEtBQWIsR0FBcUIsSUFBckI7UUFDSCxDQUZELE1BR0s7VUFDRDhXLFNBQVMsQ0FBQ3JOLE9BQVYsR0FBb0JtRSxRQUFRLENBQUNuRSxPQUE3QjtVQUNBcU4sU0FBUyxDQUFDalEsSUFBVixHQUFpQitHLFFBQVEsQ0FBQ3JLLE9BQTFCO1VBQ0F1VCxTQUFTLENBQUMzSSxVQUFWLEdBQXVCLElBQXZCO1FBQ0g7TUFDSixDQVZEO0lBV0gsQ0FaRDs7SUFhQSxJQUFJZ1UsZUFBZSxHQUFHLFNBQWxCQSxlQUFrQixHQUFZO01BQzlCL0IsWUFBWSxDQUFDcGdCLEtBQWIsR0FBcUIsS0FBckI7TUFDQTBKLFVBQVUsQ0FBQyxZQUFZO1FBQ25CNlYsTUFBTSxDQUFDdmYsS0FBUCxHQUFlLElBQWY7TUFDSCxDQUZTLEVBRVAsR0FGTyxDQUFWO01BR0F3Z0IsVUFBVSxDQUFDeGdCLEtBQVgsR0FBbUIsR0FBRzRCLE1BQUgsQ0FBVTJGLFNBQVMsQ0FBQ3dCLFVBQVYsQ0FBcUIsWUFBckIsQ0FBVixFQUE4QyxHQUE5QyxFQUFtRG5ILE1BQW5ELENBQTBEMkYsU0FBUyxDQUFDd0IsVUFBVixDQUFxQixVQUFyQixDQUExRCxDQUFuQjtNQUNBMFgsZ0JBQWdCO01BQ2hCSixXQUFXLENBQUNyZ0IsS0FBWixHQUFvQixDQUFwQjtNQUNBTSxPQUFPLFdBQVAsQ0FBZ0IrSyxJQUFoQixDQUFxQixhQUFhekosTUFBYixDQUFvQjZHLEVBQXBCLEVBQXdCLFVBQXhCLENBQXJCLEVBQTBEdkcsSUFBMUQsQ0FBK0QsVUFBVUMsR0FBVixFQUFlO1FBQzFFLElBQUl5TCxRQUFRLEdBQUd6TCxHQUFHLENBQUNLLElBQW5CO1FBQ0ExQixLQUFLLENBQUNZLFFBQU4sQ0FBZSxtQkFBZixFQUFvQ2tNLFFBQVEsQ0FBQ3JLLE9BQTdDO1FBQ0F6QyxLQUFLLENBQUNZLFFBQU4sQ0FBZSxxQkFBZixFQUFzQyxDQUFDa00sUUFBUSxDQUFDckssT0FBaEQ7UUFDQW1HLFVBQVUsQ0FBQyxZQUFZO1VBQ25CZ0IsUUFBUSxDQUFDa1YsTUFBVDtRQUNILENBRlMsRUFFUCxJQUZPLENBQVY7TUFHSCxDQVBEO0lBUUgsQ0FoQkQsQ0EzTDBCLENBNE0xQjs7O0lBQ0EsSUFBSXdDLGFBQWEsR0FBRyxDQUFDLEdBQUdqaUIsS0FBSyxDQUFDOEgsUUFBVixFQUFvQjtNQUNwQ29hLGNBQWMsRUFBRXJDLFlBQVksQ0FBQ2hnQixLQURPO01BRXBDc0wsTUFBTSxFQUFFQSxNQUFNLENBQUN0TDtJQUZxQixDQUFwQixDQUFwQjtJQUlBLElBQUk4WixPQUFPLEdBQUcsQ0FBQyxHQUFHM1osS0FBSyxDQUFDc0QsUUFBVixFQUFvQixZQUFZO01BQzFDLElBQUkyZSxhQUFhLENBQUNDLGNBQWQsSUFBZ0NELGFBQWEsQ0FBQzlXLE1BQWQsS0FBeUIsT0FBN0QsRUFBc0U7UUFDbEUsT0FBTy9ELFNBQVMsQ0FBQythLE1BQVYsQ0FBaUIsV0FBakIsQ0FBUDtNQUNILENBRkQsTUFHSyxJQUFJLENBQUNGLGFBQWEsQ0FBQ0MsY0FBZixJQUNMRCxhQUFhLENBQUM5VyxNQUFkLEtBQXlCLE9BRHhCLEVBQ2lDO1FBQ2xDLE9BQU8vRCxTQUFTLENBQUMrYSxNQUFWLENBQWlCLFNBQWpCLENBQVA7TUFDSCxDQUhJLE1BSUE7UUFDRCxPQUFPLEVBQVA7TUFDSDtJQUNKLENBWGEsQ0FBZDtJQVlBLElBQUkxZSxZQUFZLEdBQUc7TUFBRTJELFNBQVMsRUFBRUEsU0FBYjtNQUF3QlosS0FBSyxFQUFFQSxLQUEvQjtNQUFzQ3FaLFlBQVksRUFBRUEsWUFBcEQ7TUFBa0UxVSxNQUFNLEVBQUVBLE1BQTFFO01BQWtGMlUsYUFBYSxFQUFFQSxhQUFqRztNQUFnSEMsVUFBVSxFQUFFQSxVQUE1SDtNQUF3SXBmLEtBQUssRUFBRUEsS0FBL0k7TUFBc0oySCxFQUFFLEVBQUVBLEVBQTFKO01BQThKMlgsWUFBWSxFQUFFQSxZQUE1SztNQUEwTEUsYUFBYSxFQUFFQSxhQUF6TTtNQUF3TkQsV0FBVyxFQUFFQSxXQUFyTztNQUFrUGQsTUFBTSxFQUFFQSxNQUExUDtNQUFrUWdCLGlCQUFpQixFQUFFQSxpQkFBclI7TUFBd1NDLFVBQVUsRUFBRUEsVUFBcFQ7TUFBZ1VDLGdCQUFnQixFQUFFQSxnQkFBbFY7TUFBb1dDLGtCQUFrQixFQUFFQSxrQkFBeFg7TUFBNFlrQixXQUFXLEVBQUVBLFdBQXpaO01BQXNhQyxZQUFZLEVBQUVBLFlBQXBiO01BQWtjWixHQUFHLEVBQUVBLEdBQXZjO01BQTRjYSxpQkFBaUIsRUFBRUEsaUJBQS9kO01BQWtmaEwsU0FBUyxFQUFFQSxTQUE3ZjtNQUF3Z0JvTCxZQUFZLEVBQUVBLFlBQXRoQjtNQUFvaUJDLGVBQWUsRUFBRUEsZUFBcmpCO01BQXNrQkMsYUFBYSxFQUFFQSxhQUFybEI7TUFBb21CdEksT0FBTyxFQUFFQSxPQUE3bUI7TUFBc25CRCxZQUFZLEVBQUVuQixxQkFBcUIsV0FBenBCO01BQW1xQjVVLEtBQUssRUFBRXpELGdCQUFnQixXQUExckI7TUFBb3NCNFgsTUFBTSxFQUFFbUgsb0JBQW9CO0lBQWh1QixDQUFuQjtJQUNBdmYsTUFBTSxDQUFDQyxjQUFQLENBQXNCOEQsWUFBdEIsRUFBb0MsaUJBQXBDLEVBQXVEO01BQUVHLFVBQVUsRUFBRSxLQUFkO01BQXFCL0QsS0FBSyxFQUFFO0lBQTVCLENBQXZEO0lBQ0EsT0FBTzRELFlBQVA7RUFDSDtBQXpPd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDaEJhOztBQUNiLElBQUlsRSxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJQyxLQUFLLEdBQUdELG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXFHLE1BQU0sR0FBR3JHLG1CQUFPLENBQUMsMkRBQUQsQ0FBcEI7O0FBQ0EsSUFBSUksT0FBTyxHQUFHWixlQUFlLENBQUNRLG1CQUFPLENBQUMsNENBQUQsQ0FBUixDQUE3QixFQUNBOzs7QUFDQSxJQUFJd1kscUJBQXFCLEdBQUdoWixlQUFlLENBQUNRLG1CQUFPLENBQUMsNEZBQUQsQ0FBUixDQUEzQzs7QUFDQSxJQUFJRyxnQkFBZ0IsR0FBR1gsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGtGQUFELENBQVIsQ0FBdEM7O0FBQ0EsSUFBSWtmLG9CQUFvQixHQUFHMWYsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRHQUFELENBQVIsQ0FBMUMsRUFDQTs7O0FBQ0EsSUFBSW9HLE1BQU0sR0FBR3BHLG1CQUFPLENBQUMsNkVBQUQsQ0FBcEI7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNDLE1BQU0sRUFBRSxpQkFEaUM7RUFFekNrRyxLQUFLLEVBQUU7SUFDSEUsSUFBSSxFQUFFO01BQUVBLElBQUksRUFBRXVKLE1BQVI7TUFBZ0IsV0FBUztJQUF6QixDQURIO0lBRUg4UCxVQUFVLEVBQUU7TUFBRXJaLElBQUksRUFBRU8sTUFBUjtNQUFnQk4sUUFBUSxFQUFFO0lBQTFCO0VBRlQsQ0FGa0M7RUFNekNwRyxLQUFLLEVBQUUsZUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUI7SUFDMUIsSUFBSUMsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQ0FBLE1BQU07SUFDTixJQUFJOEYsS0FBSyxHQUFHaEcsT0FBWjtJQUNBLElBQUk0RyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSTBZLFVBQVUsR0FBRyxDQUFDLEdBQUcvZixLQUFLLENBQUN3TSxNQUFWLEVBQWtCaEcsS0FBbEIsRUFBeUJ1WixVQUExQyxDQUwwQixDQU0xQjs7SUFDQSxJQUFJN1ksRUFBRSxHQUFHLENBQUMsR0FBR2QsTUFBTSxDQUFDOEMsU0FBWCxHQUFUO0lBQUEsSUFBa0NrWixjQUFjLEdBQUdsYixFQUFFLENBQUMsQ0FBRCxDQUFyRDtJQUFBLElBQTBEbWIsZUFBZSxHQUFHbmIsRUFBRSxDQUFDLENBQUQsQ0FBOUUsQ0FQMEIsQ0FRMUI7OztJQUNBLElBQUl2RyxLQUFLLEdBQUcsQ0FBQyxHQUFHd0YsTUFBTSxDQUFDZ0IsV0FBWCxHQUFaLENBVDBCLENBVTFCOztJQUNBLElBQUltQixFQUFFLEdBQUd5WCxVQUFVLENBQUNsZ0IsS0FBcEIsQ0FYMEIsQ0FZMUI7O0lBQ0EsSUFBSXVmLE1BQU0sR0FBRyxDQUFDLEdBQUdwZixLQUFLLENBQUM4SCxRQUFWLEVBQW9CO01BQzdCakksS0FBSyxFQUFFLEtBRHNCO01BRTdCbVEsSUFBSSxFQUFFNUksU0FBUyxDQUFDd0IsVUFBVixDQUFxQixhQUFyQjtJQUZ1QixDQUFwQixDQUFiLENBYjBCLENBaUIxQjs7SUFDQSxDQUFDLEdBQUc1SSxLQUFLLENBQUNnZ0IsU0FBVixFQUFxQixZQUFZO01BQzdCLElBQUlaLE1BQU0sQ0FBQ3ZmLEtBQVgsRUFBa0I7UUFDZGMsS0FBSyxDQUFDWSxRQUFOLENBQWUsaUJBQWYsRUFBa0MsSUFBbEM7TUFDSCxDQUZELE1BR0s7UUFDRFosS0FBSyxDQUFDWSxRQUFOLENBQWUsaUJBQWYsRUFBa0MsS0FBbEM7TUFDSDs7TUFDRCxJQUFJNmdCLGNBQWMsQ0FBQ3ZpQixLQUFuQixFQUEwQjtRQUN0QnVmLE1BQU0sQ0FBQ3ZmLEtBQVAsR0FBZSxLQUFmO01BQ0g7O01BQ0QsSUFBSXVmLE1BQU0sQ0FBQ3ZmLEtBQVgsRUFBa0I7UUFDZHVpQixjQUFjLENBQUN2aUIsS0FBZixHQUF1QixLQUF2QjtNQUNIO0lBQ0osQ0FiRDtJQWNBLElBQUkrSCxZQUFZLEdBQUcsQ0FBQyxHQUFHNUgsS0FBSyxDQUFDd0QsTUFBVixFQUFrQixjQUFsQixDQUFuQjs7SUFDQSxJQUFJOGUsaUJBQWlCLEdBQUcsU0FBcEJBLGlCQUFvQixHQUFZO01BQ2hDRixjQUFjLENBQUN2aUIsS0FBZixHQUF1QixLQUF2QjtNQUNBMEosVUFBVSxDQUFDLFlBQVk7UUFDbkI2VixNQUFNLENBQUN2ZixLQUFQLEdBQWUsSUFBZjtNQUNILENBRlMsRUFFUCxHQUZPLENBQVY7TUFHQXVmLE1BQU0sQ0FBQ3BQLElBQVAsR0FBYzVJLFNBQVMsQ0FBQzZOLEtBQVYsQ0FBZ0IsY0FBaEIsQ0FBZDtNQUNBOVUsT0FBTyxXQUFQLENBQWdCK0ssSUFBaEIsQ0FBcUIsYUFBYXpKLE1BQWIsQ0FBb0I2RyxFQUFwQixFQUF3QixZQUF4QixDQUFyQixFQUE0RHZHLElBQTVELENBQWlFLFVBQVVDLEdBQVYsRUFBZTtRQUM1RSxJQUFJeUwsUUFBUSxHQUFHekwsR0FBRyxDQUFDSyxJQUFuQjtRQUNBdUYsWUFBWSxDQUFDMEIsT0FBYixHQUF1Qm1FLFFBQVEsQ0FBQ25FLE9BQWhDO1FBQ0ExQixZQUFZLENBQUNsQixJQUFiLEdBQW9CK0csUUFBUSxDQUFDckssT0FBN0I7UUFDQWdmLGNBQWMsQ0FBQ3ZpQixLQUFmLEdBQXVCLEtBQXZCO1FBQ0EwSixVQUFVLENBQUMsWUFBWTtVQUNuQixJQUFJa0UsUUFBUSxDQUFDckssT0FBVCxLQUFxQixJQUF6QixFQUErQjtZQUMzQnpDLEtBQUssQ0FBQ1ksUUFBTixDQUFlLG1CQUFmLEVBQW9DLEtBQXBDO1lBQ0FaLEtBQUssQ0FBQ1ksUUFBTixDQUFlLHFCQUFmLEVBQXNDLElBQXRDO1lBQ0FaLEtBQUssQ0FBQ1ksUUFBTixDQUFlLHFCQUFmLEVBQXNDLEVBQXRDO1VBQ0g7O1VBQ0RnSixRQUFRLENBQUNrVixNQUFUO1FBQ0gsQ0FQUyxFQU9QLElBUE8sQ0FBVjtNQVFILENBYkQ7SUFjSCxDQXBCRDs7SUFxQkEsSUFBSWhjLFlBQVksR0FBRztNQUFFMkQsU0FBUyxFQUFFQSxTQUFiO01BQXdCWixLQUFLLEVBQUVBLEtBQS9CO01BQXNDdVosVUFBVSxFQUFFQSxVQUFsRDtNQUE4RHFDLGNBQWMsRUFBRUEsY0FBOUU7TUFBOEZDLGVBQWUsRUFBRUEsZUFBL0c7TUFBZ0kxaEIsS0FBSyxFQUFFQSxLQUF2STtNQUE4STJILEVBQUUsRUFBRUEsRUFBbEo7TUFBc0o4VyxNQUFNLEVBQUVBLE1BQTlKO01BQXNLeFgsWUFBWSxFQUFFQSxZQUFwTDtNQUFrTTBhLGlCQUFpQixFQUFFQSxpQkFBck47TUFBd081SSxZQUFZLEVBQUVuQixxQkFBcUIsV0FBM1E7TUFBcVI1VSxLQUFLLEVBQUV6RCxnQkFBZ0IsV0FBNVM7TUFBc1Q0WCxNQUFNLEVBQUVtSCxvQkFBb0I7SUFBbFYsQ0FBbkI7SUFDQXZmLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQjhELFlBQXRCLEVBQW9DLGlCQUFwQyxFQUF1RDtNQUFFRyxVQUFVLEVBQUUsS0FBZDtNQUFxQi9ELEtBQUssRUFBRTtJQUE1QixDQUF2RDtJQUNBLE9BQU80RCxZQUFQO0VBQ0g7QUEvRHdDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ2hCYTs7QUFDYixJQUFJbEUsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXFHLE1BQU0sR0FBR3JHLG1CQUFPLENBQUMsMkRBQUQsQ0FBcEI7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHRCxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlJLE9BQU8sR0FBR1osZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRDQUFELENBQVIsQ0FBN0IsRUFDQTs7O0FBQ0EsSUFBSXdZLHFCQUFxQixHQUFHaFosZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRGQUFELENBQVIsQ0FBM0M7O0FBQ0EsSUFBSUcsZ0JBQWdCLEdBQUdYLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxrRkFBRCxDQUFSLENBQXRDOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakMsRUFDQTs7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsY0FEaUM7RUFFekNrRyxLQUFLLEVBQUU7SUFDSCtiLE1BQU0sRUFBRTtNQUFFN2IsSUFBSSxFQUFFLENBQUNPLE1BQUQsRUFBU2dKLE1BQVQsQ0FBUjtNQUEwQnRKLFFBQVEsRUFBRTtJQUFwQyxDQURMO0lBRUg2YixRQUFRLEVBQUU7TUFBRTliLElBQUksRUFBRXVKLE1BQVI7TUFBZ0J0SixRQUFRLEVBQUU7SUFBMUI7RUFGUCxDQUZrQztFQU16Q3BHLEtBQUssRUFBRSxlQUFVQyxPQUFWLEVBQW1CQyxFQUFuQixFQUF1QjtJQUMxQixJQUFJQyxNQUFNLEdBQUdELEVBQUUsQ0FBQ0MsTUFBaEI7SUFDQUEsTUFBTTtJQUNOLElBQUk4RixLQUFLLEdBQUdoRyxPQUFaO0lBQ0EsSUFBSTRHLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEIsQ0FKMEIsQ0FLMUI7O0lBQ0EsSUFBSUgsRUFBRSxHQUFHLENBQUMsR0FBR2QsTUFBTSxDQUFDOEMsU0FBWCxHQUFUO0lBQUEsSUFBa0NnVyxXQUFXLEdBQUdoWSxFQUFFLENBQUMsQ0FBRCxDQUFsRDtJQUFBLElBQXVEaVksWUFBWSxHQUFHalksRUFBRSxDQUFDLENBQUQsQ0FBeEU7O0lBQ0EsSUFBSW1ZLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsR0FBWTtNQUM3QixJQUFJN1ksS0FBSyxDQUFDZ2MsUUFBTixLQUFtQixRQUFuQixJQUErQmhjLEtBQUssQ0FBQ2djLFFBQU4sS0FBbUIsYUFBdEQsRUFBcUU7UUFDakVyaUIsT0FBTyxXQUFQLFdBQXVCLEdBQUdzQixNQUFILENBQVUrRSxLQUFLLENBQUNnYyxRQUFoQixFQUEwQixHQUExQixFQUErQi9nQixNQUEvQixDQUFzQytFLEtBQUssQ0FBQytiLE1BQTVDLENBQXZCLEVBQTRFeGdCLElBQTVFLENBQWlGLFlBQVk7VUFDekZtZCxXQUFXLENBQUNyZixLQUFaLEdBQW9CLEtBQXBCO1VBQ0EwSyxRQUFRLENBQUNrVixNQUFUO1FBQ0gsQ0FIRDtNQUlIOztNQUNELElBQUlqWixLQUFLLENBQUNnYyxRQUFOLEtBQW1CLFdBQXZCLEVBQW9DO1FBQ2hDcmlCLE9BQU8sV0FBUCxXQUF1QixHQUFHc0IsTUFBSCxDQUFVK0UsS0FBSyxDQUFDZ2MsUUFBaEIsRUFBMEIsR0FBMUIsRUFBK0IvZ0IsTUFBL0IsQ0FBc0MrRSxLQUFLLENBQUMrYixNQUE1QyxDQUF2QixFQUE0RXhnQixJQUE1RSxDQUFpRixZQUFZO1VBQ3pGbWQsV0FBVyxDQUFDcmYsS0FBWixHQUFvQixLQUFwQjtVQUNBMEssUUFBUSxDQUFDa1YsTUFBVDtRQUNILENBSEQ7TUFJSDs7TUFDRCxJQUFJalosS0FBSyxDQUFDZ2MsUUFBTixLQUFtQixRQUF2QixFQUFpQztRQUM3QnJpQixPQUFPLFdBQVAsV0FBdUIsR0FBR3NCLE1BQUgsQ0FBVStFLEtBQUssQ0FBQ2djLFFBQWhCLEVBQTBCLEdBQTFCLEVBQStCL2dCLE1BQS9CLENBQXNDK0UsS0FBSyxDQUFDK2IsTUFBNUMsQ0FBdkIsRUFBNEV4Z0IsSUFBNUUsQ0FBaUYsWUFBWTtVQUN6Rm1kLFdBQVcsQ0FBQ3JmLEtBQVosR0FBb0IsS0FBcEI7VUFDQTBLLFFBQVEsQ0FBQ2tWLE1BQVQ7UUFDSCxDQUhEO01BSUg7SUFDSixDQW5CRDs7SUFvQkEsSUFBSWhjLFlBQVksR0FBRztNQUFFK0MsS0FBSyxFQUFFQSxLQUFUO01BQWdCWSxTQUFTLEVBQUVBLFNBQTNCO01BQXNDOFgsV0FBVyxFQUFFQSxXQUFuRDtNQUFnRUMsWUFBWSxFQUFFQSxZQUE5RTtNQUE0RkUsY0FBYyxFQUFFQSxjQUE1RztNQUE0SEMsVUFBVSxFQUFFdGYsS0FBSyxDQUFDc2YsVUFBOUk7TUFBMEo1RixZQUFZLEVBQUVuQixxQkFBcUIsV0FBN0w7TUFBdU01VSxLQUFLLEVBQUV6RCxnQkFBZ0I7SUFBOU4sQ0FBbkI7SUFDQVIsTUFBTSxDQUFDQyxjQUFQLENBQXNCOEQsWUFBdEIsRUFBb0MsaUJBQXBDLEVBQXVEO01BQUVHLFVBQVUsRUFBRSxLQUFkO01BQXFCL0QsS0FBSyxFQUFFO0lBQTVCLENBQXZEO0lBQ0EsT0FBTzRELFlBQVA7RUFDSDtBQXBDd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDZGE7O0FBQ2IvRCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlDLEtBQUssR0FBR0QsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDLEVBQ0E7OztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLFlBRGlDO0VBRXpDa0csS0FBSyxFQUFFO0lBQ0gyVixNQUFNLEVBQUU7TUFBRXpWLElBQUksRUFBRWhILE1BQVI7TUFBZ0JpSCxRQUFRLEVBQUU7SUFBMUIsQ0FETDtJQUVIRCxJQUFJLEVBQUU7TUFBRUEsSUFBSSxFQUFFdUosTUFBUjtNQUFnQixXQUFTO0lBQXpCO0VBRkgsQ0FGa0M7RUFNekMxUCxLQUFLLEVBQUUsZUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUI7SUFDMUIsSUFBSUMsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQ0FBLE1BQU07SUFDTixJQUFJOEYsS0FBSyxHQUFHaEcsT0FBWjtJQUNBLElBQUk0RyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCLENBSjBCLENBSzFCO0lBQ0E7O0lBQ0EsSUFBSUgsRUFBRSxHQUFHLENBQUMsR0FBR2xILEtBQUssQ0FBQ3dNLE1BQVYsRUFBa0JoRyxLQUFsQixDQUFUO0lBQUEsSUFBbUNFLElBQUksR0FBR1EsRUFBRSxDQUFDUixJQUE3QztJQUFBLElBQW1EeVYsTUFBTSxHQUFHalYsRUFBRSxDQUFDaVYsTUFBL0Q7O0lBQ0EsSUFBSXNHLFNBQVMsR0FBRyxDQUFDLEdBQUd6aUIsS0FBSyxDQUFDYyxHQUFWLEVBQWUsRUFBZixDQUFoQixDQVIwQixDQVMxQjs7SUFDQSxJQUFJNGhCLE9BQU8sR0FBRyxFQUFkO0lBQUEsSUFBa0JDLFNBQVMsR0FBRyxFQUE5Qjs7SUFDQSxRQUFRamMsSUFBSSxDQUFDN0csS0FBYjtNQUNJLEtBQUssVUFBTDtRQUNJNmlCLE9BQU8sR0FBRyxtQ0FBVjtRQUNBQyxTQUFTLEdBQUcsa0JBQVo7UUFDQTs7TUFDSixLQUFLLFVBQUw7UUFDSUQsT0FBTyxHQUFHLDZCQUFWO1FBQ0FDLFNBQVMsR0FBRyxlQUFaO1FBQ0E7O01BQ0o7UUFDSUQsT0FBTyxHQUFHLDJCQUFWO1FBQ0FDLFNBQVMsR0FBRyxpQkFBWjtRQUNBO0lBWlI7O0lBY0EsSUFBSUMsTUFBTSxHQUFHLENBQUMsR0FBRzVpQixLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQWI7O0lBQ0EsSUFBSStoQixlQUFlLEdBQUcsU0FBbEJBLGVBQWtCLENBQVVwZSxDQUFWLEVBQWE7TUFDL0IsSUFBSWhFLEVBQUo7O01BQ0EsSUFBSWljLGFBQWEsR0FBR2pZLENBQUMsQ0FBQ2lZLGFBQXRCO01BQ0EsSUFBSUMsTUFBTSxHQUFHRCxhQUFhLENBQUNFLGFBQWQsQ0FBNEJ6YixhQUE1QixDQUEwQyxlQUExQyxDQUFiO01BQ0EsSUFBSTBiLFFBQVEsR0FBRyxDQUFDcGMsRUFBRSxHQUFHa2MsTUFBTSxLQUFLLElBQVgsSUFBbUJBLE1BQU0sS0FBSyxLQUFLLENBQW5DLEdBQXVDLEtBQUssQ0FBNUMsR0FBZ0RBLE1BQU0sQ0FBQ3hiLGFBQVAsQ0FBcUIsSUFBckIsQ0FBdEQsTUFBc0YsSUFBdEYsSUFBOEZWLEVBQUUsS0FBSyxLQUFLLENBQTFHLEdBQThHLEtBQUssQ0FBbkgsR0FBdUhBLEVBQUUsQ0FBQ3dKLFlBQXpJOztNQUNBLElBQUkyWSxNQUFNLENBQUMvaUIsS0FBWCxFQUFrQjtRQUNkLElBQUk4YyxNQUFNLElBQUksSUFBZCxFQUFvQjtVQUNoQkEsTUFBTSxDQUFDdmIsS0FBUCxDQUFhMGIsT0FBYixHQUF1QixXQUFXcmIsTUFBWCxDQUFrQm9iLFFBQWxCLEVBQTRCLEtBQTVCLENBQXZCO1VBQ0F0VCxVQUFVLENBQUMsWUFBWTtZQUNuQm9ULE1BQU0sQ0FBQ3ZiLEtBQVAsQ0FBYTBiLE9BQWIsR0FBdUIsRUFBdkI7VUFDSCxDQUZTLEVBRVAsR0FGTyxDQUFWO1VBR0E4RixNQUFNLENBQUMvaUIsS0FBUCxHQUFlLEtBQWY7UUFDSDtNQUNKLENBUkQsTUFTSztRQUNELElBQUk4YyxNQUFNLElBQUksSUFBZCxFQUFvQjtVQUNoQkEsTUFBTSxDQUFDdmIsS0FBUCxDQUFhMGIsT0FBYixHQUF1QixXQUFXcmIsTUFBWCxDQUFrQm9iLFFBQWxCLEVBQTRCLEtBQTVCLENBQXZCO1VBQ0F0VCxVQUFVLENBQUMsWUFBWTtZQUNuQm9ULE1BQU0sQ0FBQ3ZiLEtBQVAsQ0FBYTBiLE9BQWIsR0FBdUIsZUFBdkI7VUFDSCxDQUZTLEVBRVAsR0FGTyxDQUFWO1VBR0E4RixNQUFNLENBQUMvaUIsS0FBUCxHQUFlLElBQWY7UUFDSDtNQUNKO0lBQ0osQ0F2QkQ7O0lBd0JBLElBQUlpakIsdUJBQXVCLEdBQUcsU0FBMUJBLHVCQUEwQixHQUFZO01BQ3RDLElBQUlDLGNBQWMsR0FBRzNiLFNBQVMsQ0FBQ3laLFVBQVYsQ0FBcUJuYSxJQUFJLEtBQUssSUFBVCxJQUFpQkEsSUFBSSxLQUFLLEtBQUssQ0FBL0IsR0FBbUMsS0FBSyxDQUF4QyxHQUE0Q0EsSUFBSSxDQUFDN0csS0FBdEUsRUFBNkUsUUFBN0UsQ0FBckI7TUFDQW1qQixPQUFPLENBQUNDLEdBQVIsQ0FBWSxhQUFaLEVBQTJCdmMsSUFBSSxLQUFLLElBQVQsSUFBaUJBLElBQUksS0FBSyxLQUFLLENBQS9CLEdBQW1DLEtBQUssQ0FBeEMsR0FBNENBLElBQUksQ0FBQzdHLEtBQTVFO01BQ0E0aUIsU0FBUyxDQUFDNWlCLEtBQVYsR0FBa0JzYyxNQUFNLENBQUN0YyxLQUFQLENBQWFvRyxNQUFiLEdBQXNCLEdBQXRCLEdBQTRCLENBQUMsR0FBR2pHLEtBQUssQ0FBQ3NmLFVBQVYsRUFBc0J5RCxjQUF0QixDQUE5QztJQUNILENBSkQ7O0lBS0FELHVCQUF1QjtJQUN2QixDQUFDLEdBQUc5aUIsS0FBSyxDQUFDOEksS0FBVixFQUFpQixZQUFZO01BQUUsT0FBT3FULE1BQU0sQ0FBQ3RjLEtBQWQ7SUFBc0IsQ0FBckQsRUFBdUQsWUFBWTtNQUMvRGlqQix1QkFBdUI7SUFDMUIsQ0FGRDtJQUdBLElBQUlyZixZQUFZLEdBQUc7TUFBRTJELFNBQVMsRUFBRUEsU0FBYjtNQUF3QlosS0FBSyxFQUFFQSxLQUEvQjtNQUFzQ0UsSUFBSSxFQUFFQSxJQUE1QztNQUFrRHlWLE1BQU0sRUFBRUEsTUFBMUQ7TUFBa0VzRyxTQUFTLEVBQUVBLFNBQTdFO01BQXdGQyxPQUFPLEVBQUVBLE9BQWpHO01BQTBHQyxTQUFTLEVBQUVBLFNBQXJIO01BQWdJQyxNQUFNLEVBQUVBLE1BQXhJO01BQWdKQyxlQUFlLEVBQUVBLGVBQWpLO01BQWtMQyx1QkFBdUIsRUFBRUE7SUFBM00sQ0FBbkI7SUFDQXBqQixNQUFNLENBQUNDLGNBQVAsQ0FBc0I4RCxZQUF0QixFQUFvQyxpQkFBcEMsRUFBdUQ7TUFBRUcsVUFBVSxFQUFFLEtBQWQ7TUFBcUIvRCxLQUFLLEVBQUU7SUFBNUIsQ0FBdkQ7SUFDQSxPQUFPNEQsWUFBUDtFQUNIO0FBcEV3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNOYTs7QUFDYixJQUFJbEUsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkIsRUFDQTs7O0FBQ0EsSUFBSW1qQixVQUFVLEdBQUczakIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHNGQUFELENBQVIsQ0FBaEM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLGlCQURtQztFQUV6QzZELFVBQVUsRUFBRTtJQUFFNFcsR0FBRyxFQUFFRCxVQUFVO0VBQWpCLENBRjZCO0VBR3pDMWMsS0FBSyxFQUFFO0lBQ0hsRSxJQUFJLEVBQUU7TUFDRm9FLElBQUksRUFBRXVKLE1BREo7TUFFRnRKLFFBQVEsRUFBRTtJQUZSLENBREg7SUFLSDhaLFdBQVcsRUFBRTtNQUNUL1osSUFBSSxFQUFFdUosTUFERztNQUVUdEosUUFBUSxFQUFFO0lBRkQsQ0FMVjtJQVNIZ1QsT0FBTyxFQUFFO01BQ0xqVCxJQUFJLEVBQUV1SixNQUREO01BRUx0SixRQUFRLEVBQUUsS0FGTDtNQUdMLFdBQVM7SUFISjtFQVROLENBSGtDO0VBa0J6Q3BHLEtBQUssRUFBRSxpQkFBWTtJQUNmLE9BQU8sRUFBUDtFQUNIO0FBcEJ3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNSYTs7QUFDYixJQUFJaEIsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHRCxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlxRyxNQUFNLEdBQUdyRyxtQkFBTyxDQUFDLDJEQUFELENBQXBCOztBQUNBLElBQUlJLE9BQU8sR0FBR1osZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRDQUFELENBQVIsQ0FBN0IsRUFDQTs7O0FBQ0EsSUFBSXdZLHFCQUFxQixHQUFHaFosZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRGQUFELENBQVIsQ0FBM0M7O0FBQ0EsSUFBSUcsZ0JBQWdCLEdBQUdYLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxrRkFBRCxDQUFSLENBQXRDOztBQUNBLElBQUlrZixvQkFBb0IsR0FBRzFmLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0R0FBRCxDQUFSLENBQTFDOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakMsRUFDQTs7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsb0NBRGlDO0VBRXpDQyxLQUFLLEVBQUUsZUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUI7SUFDMUIsSUFBSUMsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQ0FBLE1BQU07SUFDTixJQUFJMEcsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQixDQUgwQixDQUkxQjs7SUFDQSxJQUFJSCxFQUFFLEdBQUcsQ0FBQyxHQUFHZCxNQUFNLENBQUM4QyxTQUFYLEdBQVQ7SUFBQSxJQUFrQytXLFlBQVksR0FBRy9ZLEVBQUUsQ0FBQyxDQUFELENBQW5EO0lBQUEsSUFBd0RpWixhQUFhLEdBQUdqWixFQUFFLENBQUMsQ0FBRCxDQUExRTs7SUFDQSxJQUFJK0IsRUFBRSxHQUFHLENBQUMsR0FBRzdDLE1BQU0sQ0FBQzhDLFNBQVgsR0FBVDtJQUFBLElBQWtDa1osY0FBYyxHQUFHblosRUFBRSxDQUFDLENBQUQsQ0FBckQ7SUFBQSxJQUEwRG9aLGVBQWUsR0FBR3BaLEVBQUUsQ0FBQyxDQUFELENBQTlFLENBTjBCLENBTzFCOzs7SUFDQSxJQUFJbVcsTUFBTSxHQUFHLENBQUMsR0FBR3BmLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBYixDQVIwQixDQVMxQjtJQUNBO0lBQ0E7O0lBQ0EsSUFBSXNpQixzQkFBc0IsR0FBRyxDQUFDLEdBQUdwakIsS0FBSyxDQUFDd0QsTUFBVixFQUFrQixvQkFBbEIsQ0FBN0IsQ0FaMEIsQ0FhMUI7O0lBQ0EsSUFBSTZjLFVBQVUsR0FBRyxDQUFDLEdBQUdyZ0IsS0FBSyxDQUFDYyxHQUFWLEVBQWVzRyxTQUFTLENBQUN3QixVQUFWLENBQXFCLGFBQXJCLENBQWYsQ0FBakIsQ0FkMEIsQ0FlMUI7O0lBQ0EsSUFBSTJYLGtCQUFrQixHQUFHLENBQUMsR0FBR3ZnQixLQUFLLENBQUNzRCxRQUFWLEVBQW9CLFlBQVk7TUFDckQsSUFBSWtkLFlBQVksR0FBRyxDQUFDLEdBQUd4Z0IsS0FBSyxDQUFDOEgsUUFBVixFQUFvQjtRQUNuQ2tRLEtBQUssRUFBRSxFQUQ0QjtRQUVuQ3lJLFdBQVcsRUFBRSxFQUZzQjtRQUduQ3ZRLElBQUksRUFBRSxFQUg2QjtRQUluQ3dRLFVBQVUsRUFBRTBDO01BSnVCLENBQXBCLENBQW5CLENBRHFELENBT3JEOztNQUNBLElBQUlBLHNCQUFKLEVBQTRCO1FBQ3hCNUMsWUFBWSxDQUFDeEksS0FBYixHQUFxQjVRLFNBQVMsQ0FBQ3dCLFVBQVYsQ0FBcUIseUJBQXJCLENBQXJCO1FBQ0E0WCxZQUFZLENBQUNDLFdBQWIsR0FBMkJyWixTQUFTLENBQUN3QixVQUFWLENBQXFCLG9EQUFyQixDQUEzQjtRQUNBNFgsWUFBWSxDQUFDdFEsSUFBYixHQUFvQixNQUFwQjtNQUNILENBSkQsTUFLSztRQUNEc1EsWUFBWSxDQUFDeEksS0FBYixHQUFxQjVRLFNBQVMsQ0FBQ3dCLFVBQVYsQ0FBcUIseUJBQXJCLENBQXJCO1FBQ0E0WCxZQUFZLENBQUNDLFdBQWIsR0FBMkJyWixTQUFTLENBQUN3QixVQUFWLENBQXFCLG9EQUFyQixDQUEzQjtRQUNBNFgsWUFBWSxDQUFDdFEsSUFBYixHQUFvQixjQUFwQjtNQUNIOztNQUNELE9BQU9zUSxZQUFQO0lBQ0gsQ0FuQndCLENBQXpCLENBaEIwQixDQW9DMUI7O0lBQ0EsSUFBSTlKLFNBQVMsR0FBRyxDQUFDLEdBQUcxVyxLQUFLLENBQUN3RCxNQUFWLEVBQWtCLFdBQWxCLENBQWhCO0lBQ0EsSUFBSW1ULFNBQVMsR0FBRyxDQUFDLEdBQUczVyxLQUFLLENBQUN3RCxNQUFWLEVBQWtCLFdBQWxCLENBQWhCO0lBQ0E7QUFDUjtBQUNBOztJQUNRLElBQUl1ZSxZQUFZLEdBQUcsU0FBZkEsWUFBZSxHQUFZO01BQzNCNWhCLE9BQU8sV0FBUCxDQUFnQitDLEdBQWhCLENBQW9CLCtDQUFwQixFQUFxRW5CLElBQXJFLENBQTBFLFVBQVVDLEdBQVYsRUFBZTtRQUNyRixJQUFJeUwsUUFBUSxHQUFHekwsR0FBRyxDQUFDSyxJQUFuQjs7UUFDQSxJQUFJb0wsUUFBUSxDQUFDckssT0FBVCxLQUFxQixJQUF6QixFQUErQjtVQUMzQjZjLFlBQVksQ0FBQ3BnQixLQUFiLEdBQXFCLElBQXJCO1FBQ0gsQ0FGRCxNQUdLO1VBQ0Q4VyxTQUFTLENBQUNyTixPQUFWLEdBQW9CbUUsUUFBUSxDQUFDbkUsT0FBN0I7VUFDQXFOLFNBQVMsQ0FBQ2pRLElBQVYsR0FBaUIrRyxRQUFRLENBQUNySyxPQUExQjtVQUNBdVQsU0FBUyxDQUFDM0ksVUFBVixHQUF1QixJQUF2QjtRQUNIO01BQ0osQ0FWRDtJQVdILENBWkQ7O0lBYUEsSUFBSWdVLGVBQWUsR0FBRyxTQUFsQkEsZUFBa0IsR0FBWTtNQUM5QjVDLE1BQU0sQ0FBQ3ZmLEtBQVAsR0FBZSxJQUFmO01BQ0F3Z0IsVUFBVSxDQUFDeGdCLEtBQVgsR0FBbUJ1SCxTQUFTLENBQUN3QixVQUFWLENBQXFCLFlBQXJCLENBQW5CO01BQ0FxWCxZQUFZLENBQUNwZ0IsS0FBYixHQUFxQixLQUFyQjtNQUNBTSxPQUFPLFdBQVAsQ0FBZ0IrSyxJQUFoQixDQUFxQix1QkFBckIsRUFBOENuSixJQUE5QyxDQUFtRCxVQUFVQyxHQUFWLEVBQWU7UUFDOUQsSUFBSXlMLFFBQVEsR0FBR3pMLEdBQUcsQ0FBQ0ssSUFBbkI7UUFDQStjLE1BQU0sQ0FBQ3ZmLEtBQVAsR0FBZSxLQUFmO1FBQ0E2VyxTQUFTLENBQUNwTixPQUFWLEdBQW9CbUUsUUFBUSxDQUFDbkUsT0FBN0I7UUFDQW9OLFNBQVMsQ0FBQ2hRLElBQVYsR0FBaUIrRyxRQUFRLENBQUNySyxPQUExQjtRQUNBc1QsU0FBUyxDQUFDMUksVUFBVixHQUF1QixJQUF2QjtRQUNBekUsVUFBVSxDQUFDLFlBQVk7VUFDbkI2VixNQUFNLENBQUN2ZixLQUFQLEdBQWUsS0FBZjtRQUNILENBRlMsRUFFUCxJQUZPLENBQVY7O1FBR0EsSUFBSTROLFFBQVEsQ0FBQ3JLLE9BQWIsRUFBc0I7VUFDbEI2ZSxhQUFhLENBQUNvQixZQUFkLEdBQTZCLElBQTdCO1VBQ0FwQixhQUFhLENBQUM5VyxNQUFkLEdBQXVCL0QsU0FBUyxDQUFDNk4sS0FBVixDQUFnQixXQUFoQixDQUF2QjtRQUNIO01BQ0osQ0FiRDtJQWNILENBbEJEOztJQW1CQSxJQUFJcU4saUJBQWlCLEdBQUcsU0FBcEJBLGlCQUFvQixHQUFZO01BQ2hDRixjQUFjLENBQUN2aUIsS0FBZixHQUF1QixLQUF2QjtNQUNBdWYsTUFBTSxDQUFDdmYsS0FBUCxHQUFlLElBQWY7TUFDQXdnQixVQUFVLENBQUN4Z0IsS0FBWCxHQUFtQixDQUFDLEdBQUdHLEtBQUssQ0FBQ3NmLFVBQVYsRUFBc0JsWSxTQUFTLENBQUM2TixLQUFWLENBQWdCLGNBQWhCLENBQXRCLENBQW5CO01BQ0E5VSxPQUFPLFdBQVAsQ0FBZ0IrSyxJQUFoQixDQUFxQix5QkFBckIsRUFBZ0RuSixJQUFoRCxDQUFxRCxVQUFVQyxHQUFWLEVBQWU7UUFDaEUsSUFBSXlMLFFBQVEsR0FBR3pMLEdBQUcsQ0FBQ0ssSUFBbkI7UUFDQXFVLFNBQVMsQ0FBQ3BOLE9BQVYsR0FBb0JtRSxRQUFRLENBQUNuRSxPQUE3QjtRQUNBb04sU0FBUyxDQUFDaFEsSUFBVixHQUFpQitHLFFBQVEsQ0FBQ3JLLE9BQTFCO1FBQ0FzVCxTQUFTLENBQUMxSSxVQUFWLEdBQXVCLElBQXZCO1FBQ0F6RSxVQUFVLENBQUMsWUFBWTtVQUNuQjZWLE1BQU0sQ0FBQ3ZmLEtBQVAsR0FBZSxLQUFmO1FBQ0gsQ0FGUyxFQUVQLElBRk8sQ0FBVjs7UUFHQSxJQUFJNE4sUUFBUSxDQUFDckssT0FBYixFQUFzQjtVQUNsQjZlLGFBQWEsQ0FBQ29CLFlBQWQsR0FBNkIsS0FBN0I7UUFDSDtNQUNKLENBWEQ7SUFZSCxDQWhCRDs7SUFpQkEsSUFBSXBCLGFBQWEsR0FBRyxDQUFDLEdBQUdqaUIsS0FBSyxDQUFDd0QsTUFBVixFQUFrQixlQUFsQixDQUFwQjtJQUNBLElBQUltVyxPQUFPLEdBQUcsQ0FBQyxHQUFHM1osS0FBSyxDQUFDc0QsUUFBVixFQUFvQixZQUFZO01BQzFDLElBQUkyZSxhQUFhLENBQUNvQixZQUFkLElBQThCcEIsYUFBYSxDQUFDOVcsTUFBZCxLQUF5QixPQUEzRCxFQUFvRTtRQUNoRSxPQUFPL0QsU0FBUyxDQUFDK2EsTUFBVixDQUFpQixXQUFqQixDQUFQO01BQ0gsQ0FGRCxNQUdLO1FBQ0QsT0FBTy9hLFNBQVMsQ0FBQythLE1BQVYsQ0FBaUIsU0FBakIsQ0FBUDtNQUNIO0lBQ0osQ0FQYSxDQUFkO0lBUUEsSUFBSTFlLFlBQVksR0FBRztNQUFFMkQsU0FBUyxFQUFFQSxTQUFiO01BQXdCNlksWUFBWSxFQUFFQSxZQUF0QztNQUFvREUsYUFBYSxFQUFFQSxhQUFuRTtNQUFrRmlDLGNBQWMsRUFBRUEsY0FBbEc7TUFBa0hDLGVBQWUsRUFBRUEsZUFBbkk7TUFBb0pqRCxNQUFNLEVBQUVBLE1BQTVKO01BQW9LZ0Usc0JBQXNCLEVBQUVBLHNCQUE1TDtNQUFvTi9DLFVBQVUsRUFBRUEsVUFBaE87TUFBNE9FLGtCQUFrQixFQUFFQSxrQkFBaFE7TUFBb1I3SixTQUFTLEVBQUVBLFNBQS9SO01BQTBTQyxTQUFTLEVBQUVBLFNBQXJUO01BQWdVb0wsWUFBWSxFQUFFQSxZQUE5VTtNQUE0VkMsZUFBZSxFQUFFQSxlQUE3VztNQUE4WE0saUJBQWlCLEVBQUVBLGlCQUFqWjtNQUFvYUwsYUFBYSxFQUFFQSxhQUFuYjtNQUFrY3RJLE9BQU8sRUFBRUEsT0FBM2M7TUFBb2RELFlBQVksRUFBRW5CLHFCQUFxQixXQUF2ZjtNQUFpZ0I1VSxLQUFLLEVBQUV6RCxnQkFBZ0IsV0FBeGhCO01BQWtpQjRYLE1BQU0sRUFBRW1ILG9CQUFvQjtJQUE5akIsQ0FBbkI7SUFDQXZmLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQjhELFlBQXRCLEVBQW9DLGlCQUFwQyxFQUF1RDtNQUFFRyxVQUFVLEVBQUUsS0FBZDtNQUFxQi9ELEtBQUssRUFBRTtJQUE1QixDQUF2RDtJQUNBLE9BQU80RCxZQUFQO0VBQ0g7QUF6R3dDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ2ZhOztBQUNiLElBQUlsRSxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQixFQUNBOzs7QUFDQSxJQUFJdWpCLGdCQUFnQixHQUFHL2pCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxrRkFBRCxDQUFSLENBQXRDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q3FJLElBQUksRUFBRSxXQURtQztFQUV6QzZELFVBQVUsRUFBRTtJQUFFZ1gsVUFBVSxFQUFFRCxnQkFBZ0I7RUFBOUIsQ0FGNkI7RUFHekM5YyxLQUFLLEVBQUU7SUFDSGlHLGNBQWMsRUFBRTtNQUNaL0YsSUFBSSxFQUFFaEgsTUFETTtNQUVaaUgsUUFBUSxFQUFFO0lBRkUsQ0FEYjtJQUtIcVIsS0FBSyxFQUFFO01BQ0h0UixJQUFJLEVBQUV1SixNQURIO01BRUh0SixRQUFRLEVBQUU7SUFGUCxDQUxKO0lBU0g2YyxRQUFRLEVBQUU7TUFDTjljLElBQUksRUFBRXVKLE1BREE7TUFFTnRKLFFBQVEsRUFBRTtJQUZKO0VBVFAsQ0FIa0M7RUFpQnpDcEcsS0FBSyxFQUFFLGVBQVVpRyxLQUFWLEVBQWlCO0lBQ3BCd2MsT0FBTyxDQUFDQyxHQUFSLENBQVl6YyxLQUFLLENBQUN3UixLQUFsQixFQUF5QixPQUF6QjtJQUNBLE9BQU8sRUFBUDtFQUNIO0FBcEJ3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNSYTs7QUFDYnRZLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHRCxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsZ0JBRGlDO0VBRXpDa0csS0FBSyxFQUFFO0lBQ0h3SixJQUFJLEVBQUU7TUFDRnRKLElBQUksRUFBRXVKLE1BREo7TUFFRnRKLFFBQVEsRUFBRTtJQUZSLENBREg7SUFLSDhjLFVBQVUsRUFBRTtNQUNSL2MsSUFBSSxFQUFFSyxPQURFO01BRVJKLFFBQVEsRUFBRSxLQUZGO01BR1IsV0FBUztJQUhEO0VBTFQsQ0FGa0M7RUFhekNwRyxLQUFLLEVBQUUsZUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUI7SUFDMUIsSUFBSUMsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQ0FBLE1BQU07SUFDTixJQUFJMEcsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLENBQUMsR0FBR3JILEtBQUssQ0FBQ2dCLFNBQVYsRUFBcUIsWUFBWTtNQUM3QkUsUUFBUSxDQUFDMkIsSUFBVCxDQUFjeVAsU0FBZCxDQUF3QkMsR0FBeEIsQ0FBNEIsbUJBQTVCO01BQ0EsSUFBSXRSLGFBQWEsR0FBR0MsUUFBUSxDQUFDQyxhQUFULENBQXVCLFdBQXZCLENBQXBCOztNQUNBLElBQUlGLGFBQWEsS0FBSyxJQUF0QixFQUE0QjtRQUN4QkEsYUFBYSxDQUFDRyxLQUFkLENBQW9Cc2lCLE9BQXBCLEdBQThCLE1BQTlCO01BQ0g7SUFDSixDQU5EO0lBT0EsQ0FBQyxHQUFHMWpCLEtBQUssQ0FBQ21NLFdBQVYsRUFBdUIsWUFBWTtNQUMvQmpMLFFBQVEsQ0FBQzJCLElBQVQsQ0FBY3lQLFNBQWQsQ0FBd0JHLE1BQXhCLENBQStCLG1CQUEvQjtNQUNBLElBQUl4UixhQUFhLEdBQUdDLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixXQUF2QixDQUFwQjs7TUFDQSxJQUFJRixhQUFhLEtBQUssSUFBdEIsRUFBNEI7UUFDeEJBLGFBQWEsQ0FBQ0csS0FBZCxDQUFvQnNpQixPQUFwQixHQUE4QixPQUE5QjtNQUNIO0lBQ0osQ0FORDtJQU9BLElBQUlqZ0IsWUFBWSxHQUFHO01BQUUyRCxTQUFTLEVBQUVBO0lBQWIsQ0FBbkI7SUFDQTFILE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQjhELFlBQXRCLEVBQW9DLGlCQUFwQyxFQUF1RDtNQUFFRyxVQUFVLEVBQUUsS0FBZDtNQUFxQi9ELEtBQUssRUFBRTtJQUE1QixDQUF2RDtJQUNBLE9BQU80RCxZQUFQO0VBQ0g7QUFsQ3dDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ0xhOztBQUNiLElBQUlsRSxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJQyxLQUFLLEdBQUdELG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXFHLE1BQU0sR0FBR3JHLG1CQUFPLENBQUMsMkRBQUQsQ0FBcEIsRUFDQTs7O0FBQ0EsSUFBSTRqQixnQkFBZ0IsR0FBR3BrQixlQUFlLENBQUNRLG1CQUFPLENBQUMsb0dBQUQsQ0FBUixDQUF0Qzs7QUFDQSxJQUFJNmpCLG9CQUFvQixHQUFHcmtCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0R0FBRCxDQUFSLENBQTFDOztBQUNBLElBQUlJLE9BQU8sR0FBR1osZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRDQUFELENBQVIsQ0FBN0I7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNDLE1BQU0sRUFBRSxjQURpQztFQUV6Q2tHLEtBQUssRUFBRTtJQUNIbVEsU0FBUyxFQUFFO01BQUVqUSxJQUFJLEVBQUVxUixLQUFSO01BQWVwUixRQUFRLEVBQUU7SUFBekI7RUFEUixDQUZrQztFQUt6Q3BHLEtBQUssRUFBRSxlQUFVQyxPQUFWLEVBQW1CQyxFQUFuQixFQUF1QjtJQUMxQixJQUFJQyxNQUFNLEdBQUdELEVBQUUsQ0FBQ0MsTUFBaEI7SUFDQUEsTUFBTTtJQUNOLElBQUk4RixLQUFLLEdBQUdoRyxPQUFaO0lBQ0EsSUFBSTRHLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEIsQ0FKMEIsQ0FLMUI7O0lBQ0EsSUFBSUgsRUFBRSxHQUFHLENBQUMsR0FBR2QsTUFBTSxDQUFDOEMsU0FBWCxHQUFUO0lBQUEsSUFBa0MyYSxVQUFVLEdBQUczYyxFQUFFLENBQUMsQ0FBRCxDQUFqRDtJQUFBLElBQXNENFUsV0FBVyxHQUFHNVUsRUFBRSxDQUFDLENBQUQsQ0FBdEU7O0lBQ0EsSUFBSTRjLFlBQVksR0FBRyxDQUFDLEdBQUc5akIsS0FBSyxDQUFDd0QsTUFBVixFQUFrQixxQkFBbEIsQ0FBbkI7SUFDQSxJQUFJdWMsVUFBVSxHQUFHLENBQUMsR0FBRy9mLEtBQUssQ0FBQ3dELE1BQVYsRUFBa0IsWUFBbEIsQ0FBakI7SUFDQSxJQUFJdWdCLFNBQVMsR0FBRyxDQUFDLEdBQUcvakIsS0FBSyxDQUFDYyxHQUFWLEdBQWhCO0lBQ0E7QUFDUjtBQUNBOztJQUNRLElBQUk2VixTQUFTLEdBQUcsQ0FBQyxHQUFHM1csS0FBSyxDQUFDd00sTUFBVixFQUFrQmhHLEtBQWxCLEVBQXlCbVEsU0FBekM7SUFDQSxJQUFJcU4sZ0JBQWdCLEdBQUcsQ0FBQyxPQUFELEVBQVUsU0FBVixDQUF2QjtJQUNBLENBQUMsR0FBR2hrQixLQUFLLENBQUNnQixTQUFWLEVBQXFCLFlBQVk7TUFDN0IsSUFBSTJWLFNBQVMsQ0FBQzlXLEtBQVYsQ0FBZ0JvRyxNQUFwQixFQUE0QjtRQUN4QjhkLFNBQVMsQ0FBQ2xrQixLQUFWLEdBQWtCLFdBQWxCO1FBQ0E7TUFDSDs7TUFDRGtrQixTQUFTLENBQUNsa0IsS0FBVixHQUFrQixRQUFsQjtJQUNILENBTkQ7SUFPQSxJQUFJb2tCLFFBQVEsR0FBRyxDQUFDLEdBQUdqa0IsS0FBSyxDQUFDOEgsUUFBVixFQUFvQjtNQUMvQnFVLE1BQU0sRUFBRSxFQUR1QjtNQUUvQjZFLFFBQVEsRUFBRSxFQUZxQjtNQUcvQkksUUFBUSxFQUFFO0lBSHFCLENBQXBCLENBQWY7O0lBS0EsSUFBSThDLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBb0IsR0FBWTtNQUNoQyxJQUFJQyxjQUFjLEdBQUd4TixTQUFTLENBQUM5VyxLQUEvQjs7TUFDQSxLQUFLLElBQUl3QyxJQUFULElBQWlCNGhCLFFBQWpCLEVBQTJCO1FBQ3ZCQSxRQUFRLENBQUM1aEIsSUFBRCxDQUFSLEdBQWlCLEVBQWpCO01BQ0g7O01BQ0QsS0FBSyxJQUFJK2hCLEVBQUUsR0FBRyxDQUFULEVBQVlDLGdCQUFnQixHQUFHRixjQUFwQyxFQUFvREMsRUFBRSxHQUFHQyxnQkFBZ0IsQ0FBQ3BlLE1BQTFFLEVBQWtGbWUsRUFBRSxFQUFwRixFQUF3RjtRQUNwRixJQUFJL2hCLElBQUksR0FBR2dpQixnQkFBZ0IsQ0FBQ0QsRUFBRCxDQUEzQjtRQUNBLElBQUlFLFFBQVEsR0FBR2ppQixJQUFJLENBQUNpaUIsUUFBcEI7O1FBQ0EsUUFBUUEsUUFBUjtVQUNJLEtBQUssVUFBTDtZQUNJTCxRQUFRLENBQUNqRCxRQUFULENBQWtCOWEsSUFBbEIsQ0FBdUI3RCxJQUF2QjtZQUNBOztVQUNKLEtBQUssT0FBTDtZQUNJNGhCLFFBQVEsQ0FBQzlILE1BQVQsQ0FBZ0JqVyxJQUFoQixDQUFxQjdELElBQXJCO1lBQ0E7O1VBQ0osS0FBSyxTQUFMO1lBQ0k0aEIsUUFBUSxDQUFDN0MsUUFBVCxDQUFrQmxiLElBQWxCLENBQXVCN0QsSUFBdkI7WUFDQTtRQVRSO01BV0g7SUFDSixDQXBCRDs7SUFxQkE2aEIsaUJBQWlCO0lBQ2pCLElBQUlLLGlCQUFpQixHQUFHLENBQUMsR0FBR3ZrQixLQUFLLENBQUNzRCxRQUFWLEVBQW9CLFlBQVk7TUFDcEQsSUFBSTRMLEtBQUssR0FBRyxDQUFaOztNQUNBLEtBQUssSUFBSXhJLElBQVQsSUFBaUJvZCxZQUFqQixFQUErQjtRQUMzQixLQUFLLElBQUkzUixLQUFULElBQWtCMlIsWUFBWSxDQUFDcGQsSUFBRCxDQUE5QixFQUFzQztVQUNsQ3dJLEtBQUssSUFBSXhQLE1BQU0sQ0FBQzBQLElBQVAsQ0FBWTBVLFlBQVksQ0FBQ3BkLElBQUQsQ0FBWixDQUFtQnlMLEtBQW5CLENBQVosRUFBdUNsTSxNQUFoRDtRQUNIO01BQ0o7O01BQ0QsT0FBT2lKLEtBQVA7SUFDSCxDQVJ1QixDQUF4QjtJQVNBLENBQUMsR0FBR2xQLEtBQUssQ0FBQzhJLEtBQVYsRUFBaUIsWUFBWTtNQUFFLE9BQU82TixTQUFTLENBQUM5VyxLQUFqQjtJQUF5QixDQUF4RCxFQUEwRCxZQUFZO01BQ2xFcWtCLGlCQUFpQjtJQUNwQixDQUZEOztJQUdBLElBQUlNLFlBQVksR0FBRyxTQUFmQSxZQUFlLEdBQVk7TUFDM0Jya0IsT0FBTyxXQUFQLFdBQXVCLGtCQUFrQnNCLE1BQWxCLENBQXlCc2UsVUFBekIsQ0FBdkIsRUFBNkRoZSxJQUE3RCxDQUFrRSxVQUFVQyxHQUFWLEVBQWU7UUFDN0UsSUFBSUEsR0FBRyxDQUFDbUosTUFBUixFQUFnQjtVQUNac1osY0FBYyxDQUFDL1UsT0FBZixDQUF1QixTQUF2QixFQUFrQyxNQUFsQztVQUNBbkYsUUFBUSxDQUFDa1YsTUFBVDtRQUNIO01BQ0osQ0FMRDtJQU1ILENBUEQ7O0lBUUEsSUFBSWhjLFlBQVksR0FBRztNQUFFMkQsU0FBUyxFQUFFQSxTQUFiO01BQXdCWixLQUFLLEVBQUVBLEtBQS9CO01BQXNDcWQsVUFBVSxFQUFFQSxVQUFsRDtNQUE4RC9ILFdBQVcsRUFBRUEsV0FBM0U7TUFBd0ZnSSxZQUFZLEVBQUVBLFlBQXRHO01BQW9IL0QsVUFBVSxFQUFFQSxVQUFoSTtNQUE0SWdFLFNBQVMsRUFBRUEsU0FBdko7TUFBa0twTixTQUFTLEVBQUVBLFNBQTdLO01BQXdMcU4sZ0JBQWdCLEVBQUVBLGdCQUExTTtNQUE0TkMsUUFBUSxFQUFFQSxRQUF0TztNQUFnUEMsaUJBQWlCLEVBQUVBLGlCQUFuUTtNQUFzUkssaUJBQWlCLEVBQUVBLGlCQUF6UztNQUE0VEMsWUFBWSxFQUFFQSxZQUExVTtNQUF3VkUsVUFBVSxFQUFFZixnQkFBZ0IsV0FBcFg7TUFBOFhnQixjQUFjLEVBQUVmLG9CQUFvQjtJQUFsYSxDQUFuQjtJQUNBbGtCLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQjhELFlBQXRCLEVBQW9DLGlCQUFwQyxFQUF1RDtNQUFFRyxVQUFVLEVBQUUsS0FBZDtNQUFxQi9ELEtBQUssRUFBRTtJQUE1QixDQUF2RDtJQUNBLE9BQU80RCxZQUFQO0VBQ0g7QUE3RXdDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ2JhOztBQUNiL0QsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJQyxLQUFLLEdBQUdELG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsZ0JBRGlDO0VBRXpDa0csS0FBSyxFQUFFO0lBQ0g2UyxJQUFJLEVBQUU7TUFDRjNTLElBQUksRUFBRWhILE1BREo7TUFFRmlILFFBQVEsRUFBRTtJQUZSLENBREg7SUFLSHdMLEtBQUssRUFBRTtNQUNIekwsSUFBSSxFQUFFdUosTUFESDtNQUVIdEosUUFBUSxFQUFFO0lBRlA7RUFMSixDQUZrQztFQVl6Q3BHLEtBQUssRUFBRSxlQUFVQyxPQUFWLEVBQW1CQyxFQUFuQixFQUF1QjtJQUMxQixJQUFJQyxNQUFNLEdBQUdELEVBQUUsQ0FBQ0MsTUFBaEI7SUFDQUEsTUFBTTtJQUNOLElBQUk4RixLQUFLLEdBQUdoRyxPQUFaO0lBQ0EsSUFBSStILE1BQU0sR0FBRyxDQUFDLEdBQUd2SSxLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQWI7SUFDQSxJQUFJOGhCLE1BQU0sR0FBRyxDQUFDLEdBQUc1aUIsS0FBSyxDQUFDYyxHQUFWLEVBQWUsS0FBZixDQUFiOztJQUNBLElBQUltYixXQUFXLEdBQUcsU0FBZEEsV0FBYyxDQUFVQyxZQUFWLEVBQXdCO01BQ3RDLElBQUloTixLQUFLLEdBQUcsQ0FBWjs7TUFDQSxJQUFJMUksS0FBSyxDQUFDMkwsS0FBTixLQUFnQitKLFlBQXBCLEVBQWtDO1FBQzlCLEtBQUssSUFBSXhWLElBQVQsSUFBaUJGLEtBQUssQ0FBQzZTLElBQXZCLEVBQTZCO1VBQ3pCbkssS0FBSyxJQUFJeFAsTUFBTSxDQUFDMFAsSUFBUCxDQUFZNUksS0FBSyxDQUFDNlMsSUFBTixDQUFXM1MsSUFBWCxDQUFaLEVBQThCVCxNQUF2QztRQUNIO01BQ0o7O01BQ0QsT0FBT2lKLEtBQVA7SUFDSCxDQVJEOztJQVNBLElBQUkyVCxlQUFlLEdBQUcsU0FBbEJBLGVBQWtCLENBQVVwZSxDQUFWLEVBQWE7TUFDL0IsSUFBSWhFLEVBQUo7O01BQ0E4SCxNQUFNLENBQUMxSSxLQUFQLEdBQWUsQ0FBQzBJLE1BQU0sQ0FBQzFJLEtBQXZCO01BQ0EsSUFBSTZjLGFBQWEsR0FBR2pZLENBQUMsQ0FBQ2lZLGFBQXRCO01BQ0EsSUFBSUMsTUFBTSxHQUFHRCxhQUFhLENBQUNFLGFBQWQsQ0FBNEJ6YixhQUE1QixDQUEwQyxZQUExQyxDQUFiO01BQ0EsSUFBSTBiLFFBQVEsR0FBRyxDQUFDcGMsRUFBRSxHQUFHa2MsTUFBTSxLQUFLLElBQVgsSUFBbUJBLE1BQU0sS0FBSyxLQUFLLENBQW5DLEdBQXVDLEtBQUssQ0FBNUMsR0FBZ0RBLE1BQU0sQ0FBQ3hiLGFBQVAsQ0FBcUIsa0JBQXJCLENBQXRELE1BQW9HLElBQXBHLElBQTRHVixFQUFFLEtBQUssS0FBSyxDQUF4SCxHQUE0SCxLQUFLLENBQWpJLEdBQXFJQSxFQUFFLENBQUN3SixZQUF2Sjs7TUFDQSxJQUFJMlksTUFBTSxDQUFDL2lCLEtBQVgsRUFBa0I7UUFDZCxJQUFJOGMsTUFBTSxJQUFJLElBQWQsRUFBb0I7VUFDaEJBLE1BQU0sQ0FBQ3ZiLEtBQVAsQ0FBYTBiLE9BQWIsR0FBdUIsV0FBV3JiLE1BQVgsQ0FBa0JvYixRQUFsQixFQUE0QixLQUE1QixDQUF2QjtVQUNBdFQsVUFBVSxDQUFDLFlBQVk7WUFDbkJvVCxNQUFNLENBQUN2YixLQUFQLENBQWEwYixPQUFiLEdBQXVCLEVBQXZCO1VBQ0gsQ0FGUyxFQUVQLEdBRk8sQ0FBVjtVQUdBOEYsTUFBTSxDQUFDL2lCLEtBQVAsR0FBZSxLQUFmO1FBQ0g7TUFDSixDQVJELE1BU0s7UUFDRCxJQUFJOGMsTUFBTSxJQUFJLElBQWQsRUFBb0I7VUFDaEJBLE1BQU0sQ0FBQ3ZiLEtBQVAsQ0FBYTBiLE9BQWIsR0FBdUIsV0FBV3JiLE1BQVgsQ0FBa0JvYixRQUFsQixFQUE0QixLQUE1QixDQUF2QjtVQUNBdFQsVUFBVSxDQUFDLFlBQVk7WUFDbkJvVCxNQUFNLENBQUN2YixLQUFQLENBQWEwYixPQUFiLEdBQXVCLGVBQXZCO1VBQ0gsQ0FGUyxFQUVQLEdBRk8sQ0FBVjtVQUdBOEYsTUFBTSxDQUFDL2lCLEtBQVAsR0FBZSxJQUFmO1FBQ0g7TUFDSjtJQUNKLENBeEJEOztJQXlCQSxJQUFJNEQsWUFBWSxHQUFHO01BQUU4RSxNQUFNLEVBQUVBLE1BQVY7TUFBa0IvQixLQUFLLEVBQUVBLEtBQXpCO01BQWdDb2MsTUFBTSxFQUFFQSxNQUF4QztNQUFnRDNHLFdBQVcsRUFBRUEsV0FBN0Q7TUFBMEU0RyxlQUFlLEVBQUVBO0lBQTNGLENBQW5CO0lBQ0FuakIsTUFBTSxDQUFDQyxjQUFQLENBQXNCOEQsWUFBdEIsRUFBb0MsaUJBQXBDLEVBQXVEO01BQUVHLFVBQVUsRUFBRSxLQUFkO01BQXFCL0QsS0FBSyxFQUFFO0lBQTVCLENBQXZEO0lBQ0EsT0FBTzRELFlBQVA7RUFDSDtBQXZEd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDSmE7O0FBQ2IvRCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlDLEtBQUssR0FBR0QsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLGVBRGlDO0VBRXpDa0csS0FBSyxFQUFFO0lBQ0huRSxJQUFJLEVBQUU7TUFBRXFFLElBQUksRUFBRUssT0FBUjtNQUFpQkosUUFBUSxFQUFFO0lBQTNCO0VBREgsQ0FGa0M7RUFLekNwRyxLQUFLLEVBQUUsZUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUI7SUFDMUIsSUFBSUMsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQ0FBLE1BQU07SUFDTixJQUFJOEYsS0FBSyxHQUFHaEcsT0FBWjtJQUNBLElBQUk0RyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSWhGLElBQUksR0FBRyxDQUFDLEdBQUdyQyxLQUFLLENBQUN3TSxNQUFWLEVBQWtCaEcsS0FBbEIsRUFBeUJuRSxJQUFwQztJQUNBLElBQUl1aUIsS0FBSyxHQUFHdmlCLElBQUksQ0FBQ3hDLEtBQUwsR0FBYSxnQkFBYixHQUFnQyxpQkFBNUM7SUFBQSxJQUErRG1RLElBQUksR0FBRzNOLElBQUksQ0FBQ3hDLEtBQUwsR0FDaEV1SCxTQUFTLENBQUN3QixVQUFWLENBQXFCLFdBQXJCLENBRGdFLEdBRWhFeEIsU0FBUyxDQUFDd0IsVUFBVixDQUFxQixlQUFyQixDQUZOO0lBR0EsSUFBSW5GLFlBQVksR0FBRztNQUFFMkQsU0FBUyxFQUFFQSxTQUFiO01BQXdCWixLQUFLLEVBQUVBLEtBQS9CO01BQXNDbkUsSUFBSSxFQUFFQSxJQUE1QztNQUFrRHVpQixLQUFLLEVBQUVBLEtBQXpEO01BQWdFNVUsSUFBSSxFQUFFQTtJQUF0RSxDQUFuQjtJQUNBdFEsTUFBTSxDQUFDQyxjQUFQLENBQXNCOEQsWUFBdEIsRUFBb0MsaUJBQXBDLEVBQXVEO01BQUVHLFVBQVUsRUFBRSxLQUFkO01BQXFCL0QsS0FBSyxFQUFFO0lBQTVCLENBQXZEO0lBQ0EsT0FBTzRELFlBQVA7RUFDSDtBQWpCd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDTGE7O0FBQ2IvRCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLHFCQURpQztFQUV6Q2tHLEtBQUssRUFBRTtJQUNId0osSUFBSSxFQUFFO01BQ0Z0SixJQUFJLEVBQUV1SixNQURKO01BRUYsV0FBU3hOLE1BQU0sQ0FBQyxZQUFELENBQU4sQ0FBcUJvaUIsTUFBckIsQ0FBNEJDO0lBRm5DLENBREg7SUFLSDVVLElBQUksRUFBRTtNQUFFeEosSUFBSSxFQUFFdUosTUFBUjtNQUFnQixXQUFTO0lBQXpCO0VBTEgsQ0FGa0M7RUFTekMxUCxLQUFLLEVBQUUsZUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUI7SUFDMUIsSUFBSUMsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQ0FBLE1BQU07SUFDTixJQUFJK0MsWUFBWSxHQUFHLEVBQW5CO0lBQ0EvRCxNQUFNLENBQUNDLGNBQVAsQ0FBc0I4RCxZQUF0QixFQUFvQyxpQkFBcEMsRUFBdUQ7TUFBRUcsVUFBVSxFQUFFLEtBQWQ7TUFBcUIvRCxLQUFLLEVBQUU7SUFBNUIsQ0FBdkQ7SUFDQSxPQUFPNEQsWUFBUDtFQUNIO0FBZndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ0hhOztBQUNiLElBQUlzaEIsUUFBUSxHQUFJLFFBQVEsS0FBS0EsUUFBZCxJQUEyQixZQUFZO0VBQ2xEQSxRQUFRLEdBQUdybEIsTUFBTSxDQUFDb1EsTUFBUCxJQUFpQixVQUFTNUssQ0FBVCxFQUFZO0lBQ3BDLEtBQUssSUFBSXliLENBQUosRUFBT3hSLENBQUMsR0FBRyxDQUFYLEVBQWN4SixDQUFDLEdBQUdxZixTQUFTLENBQUMvZSxNQUFqQyxFQUF5Q2tKLENBQUMsR0FBR3hKLENBQTdDLEVBQWdEd0osQ0FBQyxFQUFqRCxFQUFxRDtNQUNqRHdSLENBQUMsR0FBR3FFLFNBQVMsQ0FBQzdWLENBQUQsQ0FBYjs7TUFDQSxLQUFLLElBQUk4VixDQUFULElBQWN0RSxDQUFkO1FBQWlCLElBQUlqaEIsTUFBTSxDQUFDd2xCLFNBQVAsQ0FBaUJDLGNBQWpCLENBQWdDcGYsSUFBaEMsQ0FBcUM0YSxDQUFyQyxFQUF3Q3NFLENBQXhDLENBQUosRUFDYi9mLENBQUMsQ0FBQytmLENBQUQsQ0FBRCxHQUFPdEUsQ0FBQyxDQUFDc0UsQ0FBRCxDQUFSO01BREo7SUFFSDs7SUFDRCxPQUFPL2YsQ0FBUDtFQUNILENBUEQ7O0VBUUEsT0FBTzZmLFFBQVEsQ0FBQ2xnQixLQUFULENBQWUsSUFBZixFQUFxQm1nQixTQUFyQixDQUFQO0FBQ0gsQ0FWRDs7QUFXQSxJQUFJbmhCLFNBQVMsR0FBSSxRQUFRLEtBQUtBLFNBQWQsSUFBNEIsVUFBVUMsT0FBVixFQUFtQkMsVUFBbkIsRUFBK0JDLENBQS9CLEVBQWtDQyxTQUFsQyxFQUE2QztFQUNyRixTQUFTQyxLQUFULENBQWVyRSxLQUFmLEVBQXNCO0lBQUUsT0FBT0EsS0FBSyxZQUFZbUUsQ0FBakIsR0FBcUJuRSxLQUFyQixHQUE2QixJQUFJbUUsQ0FBSixDQUFNLFVBQVVHLE9BQVYsRUFBbUI7TUFBRUEsT0FBTyxDQUFDdEUsS0FBRCxDQUFQO0lBQWlCLENBQTVDLENBQXBDO0VBQW9GOztFQUM1RyxPQUFPLEtBQUttRSxDQUFDLEtBQUtBLENBQUMsR0FBR0ksT0FBVCxDQUFOLEVBQXlCLFVBQVVELE9BQVYsRUFBbUJFLE1BQW5CLEVBQTJCO0lBQ3ZELFNBQVNDLFNBQVQsQ0FBbUJ6RSxLQUFuQixFQUEwQjtNQUFFLElBQUk7UUFBRTBFLElBQUksQ0FBQ04sU0FBUyxDQUFDTyxJQUFWLENBQWUzRSxLQUFmLENBQUQsQ0FBSjtNQUE4QixDQUFwQyxDQUFxQyxPQUFPNEUsQ0FBUCxFQUFVO1FBQUVKLE1BQU0sQ0FBQ0ksQ0FBRCxDQUFOO01BQVk7SUFBRTs7SUFDM0YsU0FBU0MsUUFBVCxDQUFrQjdFLEtBQWxCLEVBQXlCO01BQUUsSUFBSTtRQUFFMEUsSUFBSSxDQUFDTixTQUFTLENBQUMsT0FBRCxDQUFULENBQW1CcEUsS0FBbkIsQ0FBRCxDQUFKO01BQWtDLENBQXhDLENBQXlDLE9BQU80RSxDQUFQLEVBQVU7UUFBRUosTUFBTSxDQUFDSSxDQUFELENBQU47TUFBWTtJQUFFOztJQUM5RixTQUFTRixJQUFULENBQWNJLE1BQWQsRUFBc0I7TUFBRUEsTUFBTSxDQUFDQyxJQUFQLEdBQWNULE9BQU8sQ0FBQ1EsTUFBTSxDQUFDOUUsS0FBUixDQUFyQixHQUFzQ3FFLEtBQUssQ0FBQ1MsTUFBTSxDQUFDOUUsS0FBUixDQUFMLENBQW9Ca0MsSUFBcEIsQ0FBeUJ1QyxTQUF6QixFQUFvQ0ksUUFBcEMsQ0FBdEM7SUFBc0Y7O0lBQzlHSCxJQUFJLENBQUMsQ0FBQ04sU0FBUyxHQUFHQSxTQUFTLENBQUNZLEtBQVYsQ0FBZ0JmLE9BQWhCLEVBQXlCQyxVQUFVLElBQUksRUFBdkMsQ0FBYixFQUF5RFMsSUFBekQsRUFBRCxDQUFKO0VBQ0gsQ0FMTSxDQUFQO0FBTUgsQ0FSRDs7QUFTQSxJQUFJTSxXQUFXLEdBQUksUUFBUSxLQUFLQSxXQUFkLElBQThCLFVBQVVoQixPQUFWLEVBQW1CakIsSUFBbkIsRUFBeUI7RUFDckUsSUFBSWtDLENBQUMsR0FBRztJQUFFQyxLQUFLLEVBQUUsQ0FBVDtJQUFZQyxJQUFJLEVBQUUsZ0JBQVc7TUFBRSxJQUFJQyxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQU8sQ0FBWCxFQUFjLE1BQU1BLENBQUMsQ0FBQyxDQUFELENBQVA7TUFBWSxPQUFPQSxDQUFDLENBQUMsQ0FBRCxDQUFSO0lBQWMsQ0FBdkU7SUFBeUVDLElBQUksRUFBRSxFQUEvRTtJQUFtRkMsR0FBRyxFQUFFO0VBQXhGLENBQVI7RUFBQSxJQUFzR0MsQ0FBdEc7RUFBQSxJQUF5R0MsQ0FBekc7RUFBQSxJQUE0R0osQ0FBNUc7RUFBQSxJQUErR0ssQ0FBL0c7RUFDQSxPQUFPQSxDQUFDLEdBQUc7SUFBRWYsSUFBSSxFQUFFZ0IsSUFBSSxDQUFDLENBQUQsQ0FBWjtJQUFpQixTQUFTQSxJQUFJLENBQUMsQ0FBRCxDQUE5QjtJQUFtQyxVQUFVQSxJQUFJLENBQUMsQ0FBRDtFQUFqRCxDQUFKLEVBQTRELE9BQU9DLE1BQVAsS0FBa0IsVUFBbEIsS0FBaUNGLENBQUMsQ0FBQ0UsTUFBTSxDQUFDQyxRQUFSLENBQUQsR0FBcUIsWUFBVztJQUFFLE9BQU8sSUFBUDtFQUFjLENBQWpGLENBQTVELEVBQWdKSCxDQUF2Sjs7RUFDQSxTQUFTQyxJQUFULENBQWNHLENBQWQsRUFBaUI7SUFBRSxPQUFPLFVBQVVDLENBQVYsRUFBYTtNQUFFLE9BQU9yQixJQUFJLENBQUMsQ0FBQ29CLENBQUQsRUFBSUMsQ0FBSixDQUFELENBQVg7SUFBc0IsQ0FBNUM7RUFBK0M7O0VBQ2xFLFNBQVNyQixJQUFULENBQWNzQixFQUFkLEVBQWtCO0lBQ2QsSUFBSVIsQ0FBSixFQUFPLE1BQU0sSUFBSVMsU0FBSixDQUFjLGlDQUFkLENBQU47O0lBQ1AsT0FBT1AsQ0FBQyxLQUFLQSxDQUFDLEdBQUcsQ0FBSixFQUFPTSxFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVVkLENBQUMsR0FBRyxDQUFkLENBQVosQ0FBRCxFQUFnQ0EsQ0FBdkM7TUFBMEMsSUFBSTtRQUMxQyxJQUFJTSxDQUFDLEdBQUcsQ0FBSixFQUFPQyxDQUFDLEtBQUtKLENBQUMsR0FBR1csRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRLENBQVIsR0FBWVAsQ0FBQyxDQUFDLFFBQUQsQ0FBYixHQUEwQk8sRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRUCxDQUFDLENBQUMsT0FBRCxDQUFELEtBQWUsQ0FBQ0osQ0FBQyxHQUFHSSxDQUFDLENBQUMsUUFBRCxDQUFOLEtBQXFCSixDQUFDLENBQUNhLElBQUYsQ0FBT1QsQ0FBUCxDQUFyQixFQUFnQyxDQUEvQyxDQUFSLEdBQTREQSxDQUFDLENBQUNkLElBQWpHLENBQUQsSUFBMkcsQ0FBQyxDQUFDVSxDQUFDLEdBQUdBLENBQUMsQ0FBQ2EsSUFBRixDQUFPVCxDQUFQLEVBQVVPLEVBQUUsQ0FBQyxDQUFELENBQVosQ0FBTCxFQUF1QmpCLElBQTlJLEVBQW9KLE9BQU9NLENBQVA7UUFDcEosSUFBSUksQ0FBQyxHQUFHLENBQUosRUFBT0osQ0FBWCxFQUFjVyxFQUFFLEdBQUcsQ0FBQ0EsRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRLENBQVQsRUFBWVgsQ0FBQyxDQUFDckYsS0FBZCxDQUFMOztRQUNkLFFBQVFnRyxFQUFFLENBQUMsQ0FBRCxDQUFWO1VBQ0ksS0FBSyxDQUFMO1VBQVEsS0FBSyxDQUFMO1lBQVFYLENBQUMsR0FBR1csRUFBSjtZQUFROztVQUN4QixLQUFLLENBQUw7WUFBUWQsQ0FBQyxDQUFDQyxLQUFGO1lBQVcsT0FBTztjQUFFbkYsS0FBSyxFQUFFZ0csRUFBRSxDQUFDLENBQUQsQ0FBWDtjQUFnQmpCLElBQUksRUFBRTtZQUF0QixDQUFQOztVQUNuQixLQUFLLENBQUw7WUFBUUcsQ0FBQyxDQUFDQyxLQUFGO1lBQVdNLENBQUMsR0FBR08sRUFBRSxDQUFDLENBQUQsQ0FBTjtZQUFXQSxFQUFFLEdBQUcsQ0FBQyxDQUFELENBQUw7WUFBVTs7VUFDeEMsS0FBSyxDQUFMO1lBQVFBLEVBQUUsR0FBR2QsQ0FBQyxDQUFDSyxHQUFGLENBQU1ZLEdBQU4sRUFBTDs7WUFBa0JqQixDQUFDLENBQUNJLElBQUYsQ0FBT2EsR0FBUDs7WUFBYzs7VUFDeEM7WUFDSSxJQUFJLEVBQUVkLENBQUMsR0FBR0gsQ0FBQyxDQUFDSSxJQUFOLEVBQVlELENBQUMsR0FBR0EsQ0FBQyxDQUFDZSxNQUFGLEdBQVcsQ0FBWCxJQUFnQmYsQ0FBQyxDQUFDQSxDQUFDLENBQUNlLE1BQUYsR0FBVyxDQUFaLENBQW5DLE1BQXVESixFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVUsQ0FBVixJQUFlQSxFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVUsQ0FBaEYsQ0FBSixFQUF3RjtjQUFFZCxDQUFDLEdBQUcsQ0FBSjtjQUFPO1lBQVc7O1lBQzVHLElBQUljLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFWLEtBQWdCLENBQUNYLENBQUQsSUFBT1csRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRWCxDQUFDLENBQUMsQ0FBRCxDQUFULElBQWdCVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFYLENBQUMsQ0FBQyxDQUFELENBQWhELENBQUosRUFBMkQ7Y0FBRUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVhLEVBQUUsQ0FBQyxDQUFELENBQVo7Y0FBaUI7WUFBUTs7WUFDdEYsSUFBSUEsRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVLENBQVYsSUFBZWQsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQTlCLEVBQW1DO2NBQUVILENBQUMsQ0FBQ0MsS0FBRixHQUFVRSxDQUFDLENBQUMsQ0FBRCxDQUFYO2NBQWdCQSxDQUFDLEdBQUdXLEVBQUo7Y0FBUTtZQUFROztZQUNyRSxJQUFJWCxDQUFDLElBQUlILENBQUMsQ0FBQ0MsS0FBRixHQUFVRSxDQUFDLENBQUMsQ0FBRCxDQUFwQixFQUF5QjtjQUFFSCxDQUFDLENBQUNDLEtBQUYsR0FBVUUsQ0FBQyxDQUFDLENBQUQsQ0FBWDs7Y0FBZ0JILENBQUMsQ0FBQ0ssR0FBRixDQUFNYyxJQUFOLENBQVdMLEVBQVg7O2NBQWdCO1lBQVE7O1lBQ25FLElBQUlYLENBQUMsQ0FBQyxDQUFELENBQUwsRUFBVUgsQ0FBQyxDQUFDSyxHQUFGLENBQU1ZLEdBQU47O1lBQ1ZqQixDQUFDLENBQUNJLElBQUYsQ0FBT2EsR0FBUDs7WUFBYztRQVh0Qjs7UUFhQUgsRUFBRSxHQUFHaEQsSUFBSSxDQUFDa0QsSUFBTCxDQUFVakMsT0FBVixFQUFtQmlCLENBQW5CLENBQUw7TUFDSCxDQWpCeUMsQ0FpQnhDLE9BQU9OLENBQVAsRUFBVTtRQUFFb0IsRUFBRSxHQUFHLENBQUMsQ0FBRCxFQUFJcEIsQ0FBSixDQUFMO1FBQWFhLENBQUMsR0FBRyxDQUFKO01BQVEsQ0FqQk8sU0FpQkU7UUFBRUQsQ0FBQyxHQUFHSCxDQUFDLEdBQUcsQ0FBUjtNQUFZO0lBakIxRDs7SUFrQkEsSUFBSVcsRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRLENBQVosRUFBZSxNQUFNQSxFQUFFLENBQUMsQ0FBRCxDQUFSO0lBQWEsT0FBTztNQUFFaEcsS0FBSyxFQUFFZ0csRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRQSxFQUFFLENBQUMsQ0FBRCxDQUFWLEdBQWdCLEtBQUssQ0FBOUI7TUFBaUNqQixJQUFJLEVBQUU7SUFBdkMsQ0FBUDtFQUMvQjtBQUNKLENBMUJEOztBQTJCQSxJQUFJckYsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHRCxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlxbEIsYUFBYSxHQUFHN2xCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxxRkFBRCxDQUFSLENBQW5DOztBQUNBLElBQUlJLE9BQU8sR0FBR1osZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRDQUFELENBQVIsQ0FBN0I7O0FBQ0EsSUFBSXNXLFlBQVksR0FBRzlXLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQywwRUFBRCxDQUFSLENBQWxDOztBQUNBLElBQUl1RyxrQkFBa0IsR0FBRy9HLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxzRkFBRCxDQUFSLENBQXhDOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsc0JBRGlDO0VBRXpDa0csS0FBSyxFQUFFO0lBQ0g2ZSxVQUFVLEVBQUU7TUFDUjNlLElBQUksRUFBRSxDQUFDdUosTUFBRCxFQUFTdlEsTUFBVCxDQURFO01BRVJpSCxRQUFRLEVBQUU7SUFGRixDQURUO0lBS0h3QixTQUFTLEVBQUU7TUFDUHpCLElBQUksRUFBRSxDQUFDdUosTUFBRCxFQUFTdlEsTUFBVCxDQURDO01BRVBpSCxRQUFRLEVBQUU7SUFGSCxDQUxSO0lBU0hvWixVQUFVLEVBQUU7TUFBRXJaLElBQUksRUFBRU8sTUFBUjtNQUFnQk4sUUFBUSxFQUFFO0lBQTFCLENBVFQ7SUFVSDJlLGlCQUFpQixFQUFFO01BQ2Y1ZSxJQUFJLEVBQUUsQ0FBQ3VKLE1BQUQsRUFBU3ZRLE1BQVQsQ0FEUztNQUVmaUgsUUFBUSxFQUFFO0lBRkssQ0FWaEI7SUFjSDRlLFlBQVksRUFBRTtNQUNWN2UsSUFBSSxFQUFFLENBQUN1SixNQUFELEVBQVN2USxNQUFULENBREk7TUFFVmlILFFBQVEsRUFBRTtJQUZBO0VBZFgsQ0FGa0M7RUFxQnpDcEcsS0FBSyxFQUFFLGVBQVVDLE9BQVYsRUFBbUJDLEVBQW5CLEVBQXVCO0lBQzFCLElBQUl1USxLQUFLLEdBQUcsSUFBWjs7SUFDQSxJQUFJdFEsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQ0FBLE1BQU07SUFDTixJQUFJOEYsS0FBSyxHQUFHaEcsT0FBWjtJQUNBLElBQUk0RyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0E7QUFDUjtBQUNBOztJQUNRO0FBQ1I7QUFDQTs7SUFDUSxJQUFJbWUsYUFBYSxHQUFHLENBQUMsR0FBR3hsQixLQUFLLENBQUNjLEdBQVYsRUFBZTtNQUMvQjJrQixtQkFBbUIsRUFBRSxFQURVO01BRS9CQyxnQkFBZ0IsRUFBRSxFQUZhO01BRy9CQyxnQkFBZ0IsRUFBRSxFQUhhO01BSS9CQyxTQUFTLEVBQUUsRUFKb0I7TUFLL0JMLFlBQVksRUFBRTtJQUxpQixDQUFmLENBQXBCO0lBQUEsSUFNSU0sYUFBYSxHQUFHLENBQUMsR0FBRzdsQixLQUFLLENBQUNjLEdBQVYsRUFBZTtNQUMvQjJrQixtQkFBbUIsRUFBRSxFQURVO01BRS9CQyxnQkFBZ0IsRUFBRSxFQUZhO01BRy9CQyxnQkFBZ0IsRUFBRSxFQUhhO01BSS9CQyxTQUFTLEVBQUUsRUFKb0I7TUFLL0JMLFlBQVksRUFBRTtJQUxpQixDQUFmLENBTnBCO0lBYUEsSUFBSU8sVUFBVSxHQUFHRCxhQUFhLENBQUNobUIsS0FBL0I7SUFDQTtBQUNSO0FBQ0E7O0lBQ1EsQ0FBQyxHQUFHRyxLQUFLLENBQUNnQixTQUFWLEVBQXFCLFlBQVk7TUFBRSxPQUFPNkMsU0FBUyxDQUFDbU4sS0FBRCxFQUFRLEtBQUssQ0FBYixFQUFnQixLQUFLLENBQXJCLEVBQXdCLFlBQVk7UUFDbkYsSUFBSTNPLElBQUosRUFBVTBqQixXQUFWO1FBQ0EsT0FBT2poQixXQUFXLENBQUMsSUFBRCxFQUFPLFVBQVVyRSxFQUFWLEVBQWM7VUFDbkMsUUFBUUEsRUFBRSxDQUFDdUUsS0FBWDtZQUNJLEtBQUssQ0FBTDtjQUFRLE9BQU8sQ0FBQztjQUFFO2NBQUgsRUFBYzdFLE9BQU8sV0FBUCxDQUFnQitDLEdBQWhCLENBQW9CLGFBQWF6QixNQUFiLENBQW9CK0UsS0FBSyxDQUFDdVosVUFBMUIsRUFBc0Msc0JBQXRDLENBQXBCLENBQWQsQ0FBUDs7WUFDUixLQUFLLENBQUw7Y0FDSTFkLElBQUksR0FBSTVCLEVBQUUsQ0FBQ3dFLElBQUgsRUFBRCxDQUFZNUMsSUFBbkI7Y0FDQTBqQixXQUFXLEdBQUcxakIsSUFBSSxDQUFDQSxJQUFuQjs7Y0FDQSxJQUFJMGpCLFdBQUosRUFBaUI7Z0JBQ2JQLGFBQWEsQ0FBQzNsQixLQUFkLEdBQXNCa21CLFdBQXRCO2NBQ0g7O2NBQ0QsT0FBTyxDQUFDO2NBQUU7Y0FBSCxDQUFQO1VBUlI7UUFVSCxDQVhpQixDQUFsQjtNQVlILENBZGtELENBQWhCO0lBYzlCLENBZEw7SUFlQTtBQUNSO0FBQ0E7O0lBQ1EsSUFBSUMsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHaG1CLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBdkI7SUFBQSxJQUE4QzBHLGVBQWUsR0FBRyxDQUFDLEdBQUd4SCxLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQWhFO0lBQUEsSUFBdUY4RyxZQUFZLEdBQUcsQ0FBQyxHQUFHNUgsS0FBSyxDQUFDYyxHQUFWLEVBQWUsRUFBZixDQUF0RztJQUFBLElBQTBIK0csU0FBUyxHQUFHLENBQUMsR0FBRzdILEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBdEk7SUFDQTtBQUNSO0FBQ0E7QUFDQTs7SUFDUSxTQUFTbWxCLFVBQVQsR0FBc0I7TUFDbEJELGdCQUFnQixDQUFDbm1CLEtBQWpCLEdBQXlCLElBQXpCO01BQ0FnbUIsYUFBYSxDQUFDaG1CLEtBQWQsR0FBc0JpbUIsVUFBdEI7TUFDQTNsQixPQUFPLFdBQVAsQ0FDSytsQixHQURMLENBQ1MsYUFBYXprQixNQUFiLENBQW9CK0UsS0FBSyxDQUFDdVosVUFBMUIsRUFBc0MsaUJBQXRDLENBRFQsRUFDbUV5RixhQUFhLENBQUMzbEIsS0FEakYsRUFFS2tDLElBRkwsQ0FFVSxVQUFVQyxHQUFWLEVBQWU7UUFDckIsSUFBSXlMLFFBQVEsR0FBR3pMLEdBQUcsQ0FBQ0ssSUFBbkI7UUFDQTJqQixnQkFBZ0IsQ0FBQ25tQixLQUFqQixHQUF5QixLQUF6QjtRQUNBMkgsZUFBZSxDQUFDM0gsS0FBaEIsR0FBd0IsSUFBeEI7UUFDQTBKLFVBQVUsQ0FBQyxZQUFZO1VBQUUsT0FBUS9CLGVBQWUsQ0FBQzNILEtBQWhCLEdBQXdCLEtBQWhDO1FBQXlDLENBQXhELEVBQTBELElBQTFELENBQVY7UUFDQStILFlBQVksQ0FBQy9ILEtBQWIsR0FBcUI0TixRQUFRLEtBQUssSUFBYixJQUFxQkEsUUFBUSxLQUFLLEtBQUssQ0FBdkMsR0FBMkMsS0FBSyxDQUFoRCxHQUFvREEsUUFBUSxDQUFDbkUsT0FBbEY7UUFDQXpCLFNBQVMsQ0FBQ2hJLEtBQVYsR0FBa0I0TixRQUFRLEtBQUssSUFBYixJQUFxQkEsUUFBUSxLQUFLLEtBQUssQ0FBdkMsR0FBMkMsS0FBSyxDQUFoRCxHQUFvREEsUUFBUSxDQUFDckssT0FBL0U7UUFDQTRpQixnQkFBZ0IsQ0FBQ25tQixLQUFqQixHQUF5QixLQUF6QjtNQUNILENBVkQsV0FXVyxVQUFVc08sS0FBVixFQUFpQjtRQUN4QixJQUFJMU4sRUFBSixFQUFReUcsRUFBUjs7UUFDQTJlLGFBQWEsQ0FBQ2htQixLQUFkLEdBQXNCa2xCLFFBQVEsQ0FBQ0EsUUFBUSxDQUFDLEVBQUQsRUFBS2MsYUFBYSxDQUFDaG1CLEtBQW5CLENBQVQsRUFBb0MsQ0FBQ1ksRUFBRSxHQUFHME4sS0FBSyxDQUFDVixRQUFOLENBQWVwTCxJQUFyQixNQUErQixJQUEvQixJQUF1QzVCLEVBQUUsS0FBSyxLQUFLLENBQW5ELEdBQXVELEtBQUssQ0FBNUQsR0FBZ0VBLEVBQUUsQ0FBQzBiLE1BQXZHLENBQTlCO1FBQ0EzVSxlQUFlLENBQUMzSCxLQUFoQixHQUF3QixJQUF4QjtRQUNBK0gsWUFBWSxDQUFDL0gsS0FBYixHQUFxQixDQUFDcUgsRUFBRSxHQUFHaUgsS0FBSyxDQUFDVixRQUFOLENBQWVwTCxJQUFyQixNQUErQixJQUEvQixJQUF1QzZFLEVBQUUsS0FBSyxLQUFLLENBQW5ELEdBQXVELEtBQUssQ0FBNUQsR0FBZ0VBLEVBQUUsQ0FBQ29DLE9BQXhGO1FBQ0F6QixTQUFTLENBQUNoSSxLQUFWLEdBQWtCLEtBQWxCO1FBQ0FtbUIsZ0JBQWdCLENBQUNubUIsS0FBakIsR0FBeUIsS0FBekI7TUFDSCxDQWxCRDtJQW1CSDs7SUFDRCxJQUFJNEQsWUFBWSxHQUFHO01BQUUyRCxTQUFTLEVBQUVBLFNBQWI7TUFBd0JaLEtBQUssRUFBRUEsS0FBL0I7TUFBc0NnZixhQUFhLEVBQUVBLGFBQXJEO01BQW9FSyxhQUFhLEVBQUVBLGFBQW5GO01BQWtHQyxVQUFVLEVBQUVBLFVBQTlHO01BQTBIRSxnQkFBZ0IsRUFBRUEsZ0JBQTVJO01BQThKeGUsZUFBZSxFQUFFQSxlQUEvSztNQUFnTUksWUFBWSxFQUFFQSxZQUE5TTtNQUE0TkMsU0FBUyxFQUFFQSxTQUF2TztNQUFrUG9lLFVBQVUsRUFBRUEsVUFBOVA7TUFBMFFFLFdBQVcsRUFBRWYsYUFBYSxXQUFwUztNQUE4U3ROLE1BQU0sRUFBRXpCLFlBQVksV0FBbFU7TUFBNFVoSyxLQUFLLEVBQUUvRixrQkFBa0I7SUFBclcsQ0FBbkI7SUFDQTVHLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQjhELFlBQXRCLEVBQW9DLGlCQUFwQyxFQUF1RDtNQUFFRyxVQUFVLEVBQUUsS0FBZDtNQUFxQi9ELEtBQUssRUFBRTtJQUE1QixDQUF2RDtJQUNBLE9BQU80RCxZQUFQO0VBQ0g7QUFuR3dDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQzNEYTs7OztBQUNiLElBQUlsRSxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJcUcsTUFBTSxHQUFHckcsbUJBQU8sQ0FBQywyREFBRCxDQUFwQixFQUNBOzs7QUFDQSxJQUFJcW1CLE9BQU8sR0FBR3JtQixtQkFBTyxDQUFDLGdGQUFELENBQXJCOztBQUNBLElBQUlzbUIsZUFBZSxHQUFHOW1CLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxnRkFBRCxDQUFSLENBQXJDOztBQUNBLElBQUl1bUIsdUJBQXVCLEdBQUcvbUIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGdHQUFELENBQVIsQ0FBN0M7O0FBQ0EsSUFBSXdtQixtQkFBbUIsR0FBR2huQixlQUFlLENBQUNRLG1CQUFPLENBQUMsd0dBQUQsQ0FBUixDQUF6Qzs7QUFDQSxJQUFJeW1CLHFCQUFxQixHQUFHam5CLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0R0FBRCxDQUFSLENBQTNDOztBQUNBLElBQUkwbUIsa0JBQWtCLEdBQUdsbkIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHNHQUFELENBQVIsQ0FBeEM7O0FBQ0EsSUFBSTJtQixrQkFBa0IsR0FBR25uQixlQUFlLENBQUNRLG1CQUFPLENBQUMsd0dBQUQsQ0FBUixDQUF4Qzs7QUFDQSxJQUFJdUcsa0JBQWtCLEdBQUcvRyxlQUFlLENBQUNRLG1CQUFPLENBQUMsc0ZBQUQsQ0FBUixDQUF4Qzs7QUFDQSxJQUFJNG1CLGdCQUFnQixHQUFHcG5CLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxrRkFBRCxDQUFSLENBQXRDOztBQUNBLElBQUl1TSxPQUFPLEdBQUcvTSxlQUFlLENBQUNRLG1CQUFPLENBQUMsbUVBQUQsQ0FBUixDQUE3QixFQUNBOzs7QUFDQSxJQUFJNm1CLHdCQUF3QixHQUFHcm5CLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxzSEFBRCxDQUFSLENBQTlDOztBQUNBLElBQUk4bUIscUJBQXFCLEdBQUd0bkIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGdIQUFELENBQVIsQ0FBM0M7O0FBQ0EsSUFBSSttQix5QkFBeUIsR0FBR3ZuQixlQUFlLENBQUNRLG1CQUFPLENBQUMsa0hBQUQsQ0FBUixDQUEvQyxFQUNBOzs7QUFDQSxJQUFJb0csTUFBTSxHQUFHcEcsbUJBQU8sQ0FBQyw2RUFBRCxDQUFwQjs7QUFDQSxJQUFJSyxPQUFPLEdBQUdMLG1CQUFPLENBQUMsK0VBQUQsQ0FBckI7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNrTSxVQUFVLEVBQUU7SUFDUndhLFNBQVMsRUFBRVYsZUFBZSxXQURsQjtJQUVSVyxXQUFXLEVBQUVWLHVCQUF1QixXQUY1QjtJQUdSVyxRQUFRLEVBQUVMLHdCQUF3QixXQUgxQjtJQUlSTSxlQUFlLEVBQUVMLHFCQUFxQixXQUo5QjtJQUtSTSxNQUFNLEVBQUVmLE9BQU8sQ0FBQ2UsTUFMUjtJQU1SQyxPQUFPLEVBQUViLG1CQUFtQixXQU5wQjtJQU9SYyxNQUFNLEVBQUVYLGtCQUFrQixXQVBsQjtJQVFSWSxTQUFTLEVBQUVkLHFCQUFxQixXQVJ4QjtJQVNSZSxZQUFZLEVBQUVkLGtCQUFrQixXQVR4QjtJQVVSZSxtQkFBbUIsRUFBRVYseUJBQXlCLFdBVnRDO0lBV1JXLFVBQVUsRUFBRWQsZ0JBQWdCLFdBWHBCO0lBWVJ0YSxLQUFLLEVBQUUvRixrQkFBa0I7RUFaakIsQ0FENkI7RUFlekNFLEtBQUssRUFBRTtJQUNIa2hCLFFBQVEsRUFBRTtNQUNOaGhCLElBQUksRUFBRWhILE1BREE7TUFFTmlILFFBQVEsRUFBRTtJQUZKLENBRFA7SUFLSGdoQixNQUFNLEVBQUU7TUFDSmpoQixJQUFJLEVBQUVoSCxNQURGO01BRUppSCxRQUFRLEVBQUU7SUFGTixDQUxMO0lBU0g4VSxRQUFRLEVBQUU7TUFDTi9VLElBQUksRUFBRWhILE1BREE7TUFFTmlILFFBQVEsRUFBRTtJQUZKLENBVFA7SUFhSGloQixRQUFRLEVBQUU7TUFDTmxoQixJQUFJLEVBQUVPLE1BREE7TUFFTk4sUUFBUSxFQUFFO0lBRkosQ0FiUDtJQWlCSDBDLEtBQUssRUFBRTtNQUNIM0MsSUFBSSxFQUFFaEgsTUFESDtNQUVIaUgsUUFBUSxFQUFFO0lBRlAsQ0FqQko7SUFxQkhraEIsS0FBSyxFQUFFO01BQ0huaEIsSUFBSSxFQUFFaEgsTUFESDtNQUVIaUgsUUFBUSxFQUFFO0lBRlAsQ0FyQko7SUF5Qkh3RSxNQUFNLEVBQUU7TUFDSnpFLElBQUksRUFBRWhILE1BREY7TUFFSmlILFFBQVEsRUFBRTtJQUZOLENBekJMO0lBNkJIbWhCLE9BQU8sRUFBRTtNQUNMcGhCLElBQUksRUFBRXFSLEtBREQ7TUFFTHBSLFFBQVEsRUFBRTtJQUZMLENBN0JOO0lBaUNIb2hCLFlBQVksRUFBRTtNQUNWcmhCLElBQUksRUFBRXFSLEtBREk7TUFFVnBSLFFBQVEsRUFBRTtJQUZBLENBakNYO0lBcUNIbVosYUFBYSxFQUFFO01BQ1hwWixJQUFJLEVBQUVLLE9BREs7TUFFWEosUUFBUSxFQUFFO0lBRkMsQ0FyQ1o7SUF5Q0hxaEIscUJBQXFCLEVBQUU7TUFDbkJ0aEIsSUFBSSxFQUFFaEgsTUFEYTtNQUVuQmlILFFBQVEsRUFBRTtJQUZTLENBekNwQjtJQTZDSHNoQixtQkFBbUIsRUFBRTtNQUNqQnZoQixJQUFJLEVBQUVoSCxNQURXO01BRWpCaUgsUUFBUSxFQUFFO0lBRk87RUE3Q2xCLENBZmtDO0VBaUV6Q3BHLEtBQUssRUFBRSxlQUFVaUcsS0FBVixFQUFpQjtJQUNwQixJQUFJL0YsRUFBSjs7SUFDQSxJQUFJMkcsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjs7SUFDQSxJQUFJSCxFQUFFLEdBQUcsQ0FBQyxHQUFHcEgsS0FBSyxDQUFDME0sTUFBVixFQUFrQmhHLEtBQWxCLENBQVQ7SUFBQSxJQUFtQ3FoQixLQUFLLEdBQUczZ0IsRUFBRSxDQUFDMmdCLEtBQTlDO0lBQUEsSUFBcUQvSCxhQUFhLEdBQUc1WSxFQUFFLENBQUM0WSxhQUF4RTs7SUFDQSxJQUFJb0ksT0FBTyxHQUFHekQsY0FBYyxDQUFDelosT0FBZixDQUF1QixTQUF2QixDQUFkO0lBQ0EsSUFBSXJLLEtBQUssR0FBRyxDQUFDLEdBQUd3RixNQUFNLENBQUNnQixXQUFYLEdBQVo7SUFDQSxJQUFJZ2hCLFVBQVUsR0FBRyxDQUFDLEdBQUcvbkIsT0FBTyxDQUFDUSxRQUFaLEdBQWpCO0lBQ0EsSUFBSStHLFdBQVcsR0FBRyxDQUFDLEdBQUc3SCxLQUFLLENBQUNnQixHQUFWLEVBQWUsS0FBZixDQUFsQjtJQUNBLElBQUlzbkIsU0FBUyxHQUFHLENBQUMsR0FBR3RvQixLQUFLLENBQUNnQixHQUFWLEVBQWUsQ0FBZixDQUFoQjtJQUNBLElBQUl1bkIsV0FBVyxHQUFHLENBQUMsR0FBR3ZvQixLQUFLLENBQUNnQixHQUFWLEVBQWUsQ0FBZixDQUFsQjtJQUNBLElBQUk0VixTQUFTLEdBQUcsQ0FBQyxHQUFHNVcsS0FBSyxDQUFDZ0ksUUFBVixFQUFvQjtNQUNoQ2tHLFVBQVUsRUFBRSxLQURvQjtNQUVoQzFFLE9BQU8sRUFBRSxFQUZ1QjtNQUdoQzVDLElBQUksRUFBRTtJQUgwQixDQUFwQixDQUFoQjtJQUtBLElBQUlpUSxTQUFTLEdBQUcsQ0FBQyxHQUFHN1csS0FBSyxDQUFDZ0ksUUFBVixFQUFvQjtNQUNoQ2tHLFVBQVUsRUFBRSxLQURvQjtNQUVoQzFFLE9BQU8sRUFBRSxFQUZ1QjtNQUdoQzVDLElBQUksRUFBRTtJQUgwQixDQUFwQixDQUFoQjtJQUtBaUIsV0FBVztJQUNYO0FBQ1I7QUFDQTs7SUFDUSxJQUFJc0IsRUFBRSxHQUFHLENBQUMsR0FBRzdDLE1BQU0sQ0FBQzhDLFNBQVgsR0FBVDtJQUFBLElBQWtDZ1csV0FBVyxHQUFHalcsRUFBRSxDQUFDLENBQUQsQ0FBbEQ7SUFBQSxJQUF1RGtXLFlBQVksR0FBR2xXLEVBQUUsQ0FBQyxDQUFELENBQXhFOztJQUNBLElBQUl5TSxFQUFFLEdBQUcsQ0FBQyxHQUFHdFAsTUFBTSxDQUFDOEMsU0FBWCxHQUFUO0lBQUEsSUFBa0NvZixhQUFhLEdBQUc1UyxFQUFFLENBQUMsQ0FBRCxDQUFwRDtJQUFBLElBQXlENlMsY0FBYyxHQUFHN1MsRUFBRSxDQUFDLENBQUQsQ0FBNUU7O0lBQ0EsSUFBSThTLGFBQWEsR0FBRyxTQUFoQkEsYUFBZ0IsR0FBWTtNQUM1QjdnQixXQUFXLENBQUM5SCxLQUFaLEdBQW9CLENBQUM4SCxXQUFXLENBQUM5SCxLQUFqQztJQUNILENBRkQ7O0lBR0EsSUFBSTRvQixZQUFZLEdBQUcsU0FBZkEsWUFBZSxHQUFZO01BQzNCTCxTQUFTLENBQUN2b0IsS0FBVixHQUFrQjRDLE1BQU0sQ0FBQ2ltQixPQUF6QjtJQUNILENBRkQ7O0lBR0EsSUFBSUMsWUFBWSxHQUFHLENBQUMsR0FBRzdvQixLQUFLLENBQUN3RCxRQUFWLEVBQW9CLFlBQVk7TUFDL0MsT0FBTzhrQixTQUFTLENBQUN2b0IsS0FBVixLQUFvQixDQUEzQjtJQUNILENBRmtCLENBQW5CO0lBR0EsSUFBSXNZLEtBQUssR0FBRyxDQUFDLEdBQUdyWSxLQUFLLENBQUN3RCxRQUFWLEVBQW9CLFlBQVk7TUFDeEMsT0FBT2IsTUFBTSxDQUFDc0gsVUFBZDtJQUNILENBRlcsQ0FBWjtJQUdBLENBQUMsR0FBR2pLLEtBQUssQ0FBQ3FNLFdBQVYsRUFBdUIsWUFBWTtNQUMvQjFKLE1BQU0sQ0FBQ3lRLG1CQUFQLENBQTJCLFFBQTNCLEVBQXFDdVYsWUFBckM7TUFDQWhtQixNQUFNLENBQUN5USxtQkFBUCxDQUEyQixRQUEzQixFQUFxQzBWLFNBQXJDO0lBQ0gsQ0FIRDtJQUlBLENBQUMsR0FBRzlvQixLQUFLLENBQUNrQixTQUFWLEVBQXFCLFlBQVk7TUFDN0J5QixNQUFNLENBQUNvbUIsTUFBUCxHQUFnQixZQUFZO1FBQ3hCLElBQUlYLE9BQUosRUFBYTtVQUNUeFIsU0FBUyxDQUFDaFEsSUFBVixHQUFpQixJQUFqQjtVQUNBZ1EsU0FBUyxDQUFDMUksVUFBVixHQUF1QixJQUF2QjtVQUNBMEksU0FBUyxDQUFDcE4sT0FBVixHQUFvQixxQkFBcEI7VUFDQW1iLGNBQWMsQ0FBQ3FFLEtBQWY7UUFDSDtNQUNKLENBUEQ7O01BUUFULFdBQVcsQ0FBQ3hvQixLQUFaLEdBQW9CNEMsTUFBTSxDQUFDc0gsVUFBM0I7TUFDQXRILE1BQU0sQ0FBQ3FRLGdCQUFQLENBQXdCLFFBQXhCLEVBQWtDMlYsWUFBbEM7TUFDQWhtQixNQUFNLENBQUNxUSxnQkFBUCxDQUF3QixRQUF4QixFQUFrQzhWLFNBQWxDOztNQUNBLElBQUlwaUIsS0FBSyxDQUFDNkMsS0FBTixDQUFZQyxPQUFaLEtBQXdCLEVBQTVCLEVBQWdDO1FBQzVCb04sU0FBUyxDQUFDaFEsSUFBVixHQUFpQkYsS0FBSyxDQUFDNkMsS0FBTixDQUFZM0MsSUFBN0I7UUFDQWdRLFNBQVMsQ0FBQzFJLFVBQVYsR0FBdUIsSUFBdkI7UUFDQTBJLFNBQVMsQ0FBQ3BOLE9BQVYsR0FBb0I5QyxLQUFLLENBQUM2QyxLQUFOLENBQVlDLE9BQWhDO01BQ0g7SUFDSixDQWpCRDs7SUFrQkEsSUFBSXNmLFNBQVMsR0FBRyxTQUFaQSxTQUFZLENBQVUzVCxLQUFWLEVBQWlCO01BQzdCb1QsV0FBVyxDQUFDeG9CLEtBQVosR0FBb0JvVixLQUFLLENBQUMwSCxNQUFOLENBQWE1UyxVQUFqQzs7TUFDQSxJQUFJc2UsV0FBVyxDQUFDeG9CLEtBQVosR0FBb0IsSUFBeEIsRUFBOEI7UUFDMUJxQixRQUFRLENBQUNpSixlQUFULENBQXlCL0ksS0FBekIsQ0FBK0JnSixRQUEvQixHQUEwQyxNQUExQztNQUNILENBRkQsTUFHSztRQUNEekMsV0FBVyxDQUFDOUgsS0FBWixLQUNLcUIsUUFBUSxDQUFDaUosZUFBVCxDQUF5Qi9JLEtBQXpCLENBQStCZ0osUUFBL0IsR0FBMEMsUUFEL0M7TUFFSDtJQUNKLENBVEQ7O0lBVUEsQ0FBQyxHQUFHdEssS0FBSyxDQUFDZ0osS0FBVixFQUFpQixZQUFZO01BQUUsT0FBT25CLFdBQVcsQ0FBQzlILEtBQW5CO0lBQTJCLENBQTFELEVBQTRELFVBQVVxSyxPQUFWLEVBQW1CO01BQzNFLElBQUlBLE9BQUosRUFBYTtRQUNUaEosUUFBUSxDQUFDaUosZUFBVCxDQUF5Qi9JLEtBQXpCLENBQStCZ0osUUFBL0IsR0FBMEMsUUFBMUM7TUFDSCxDQUZELE1BSUlsSixRQUFRLENBQUNpSixlQUFULENBQXlCL0ksS0FBekIsQ0FBK0JnSixRQUEvQixHQUEwQyxNQUExQztJQUNQLENBTkQ7SUFPQSxDQUFDLEdBQUd0SyxLQUFLLENBQUNnSixLQUFWLEVBQWlCLFlBQVk7TUFBRSxPQUFPNE4sU0FBUyxDQUFDMUksVUFBakI7SUFBOEIsQ0FBN0QsRUFBK0QsWUFBWTtNQUN2RXpFLFVBQVUsQ0FBQyxZQUFZO1FBQ25CbU4sU0FBUyxDQUFDMUksVUFBVixHQUF1QixLQUF2QjtRQUNBK2EsaUJBQWlCO01BQ3BCLENBSFMsRUFHUCxLQUhPLENBQVY7SUFJSCxDQUxEO0lBTUE7QUFDUjtBQUNBO0FBQ0E7QUFDQTs7SUFDUSxJQUFJcFQsRUFBRSxHQUFHLENBQUMsR0FBRzdWLEtBQUssQ0FBQzBNLE1BQVYsRUFBa0JoRyxLQUFsQixDQUFUO0lBQUEsSUFBbUNtaEIsTUFBTSxHQUFHaFMsRUFBRSxDQUFDZ1MsTUFBL0M7SUFBQSxJQUF1RGxNLFFBQVEsR0FBRzlGLEVBQUUsQ0FBQzhGLFFBQXJFO0lBQUEsSUFBK0VpTSxRQUFRLEdBQUcvUixFQUFFLENBQUMrUixRQUE3RjtJQUFBLElBQXVHdmMsTUFBTSxHQUFHd0ssRUFBRSxDQUFDeEssTUFBbkg7SUFBQSxJQUEySDRjLFlBQVksR0FBR3BTLEVBQUUsQ0FBQ29TLFlBQTdJO0lBQUEsSUFBMkppQixXQUFXLEdBQUdyQixNQUFNLENBQUM5bkIsS0FBaEw7SUFBQSxJQUF1TG9wQixhQUFhLEdBQUd4TixRQUFRLENBQUM1YixLQUFoTjtJQUFBLElBQXVOeU4sVUFBVSxHQUFHcWEsTUFBTSxDQUFDOW5CLEtBQTNPO0lBQUEsSUFBa1BxcEIsWUFBWSxHQUFHeEIsUUFBUSxDQUFDN25CLEtBQTFRO0lBQUEsSUFBaVJzcEIsV0FBVyxHQUFHaGUsTUFBTSxDQUFDdEwsS0FBdFM7SUFBQSxJQUE2U3VwQixnQkFBZ0IsR0FBR3JCLFlBQVksQ0FBQ2xvQixLQUE3VTs7SUFDQSxJQUFJaW9CLE9BQU8sR0FBRyxDQUFDLEdBQUdob0IsS0FBSyxDQUFDME0sTUFBVixFQUFrQmhHLEtBQWxCLEVBQXlCc2hCLE9BQXZDO0lBQ0FtQixhQUFhLENBQUN0a0IsTUFBZCxHQUF1Qm1qQixPQUFPLENBQUNqb0IsS0FBL0I7SUFDQW9wQixhQUFhLENBQUNsQixZQUFkLEdBQTZCcUIsZ0JBQTdCLENBM0ZvQixDQTRGcEI7O0lBQ0ExcEIsTUFBTSxDQUFDMFAsSUFBUCxDQUFZOUIsVUFBWixFQUF3QjhMLEdBQXhCLENBQTRCLFVBQVV6TyxHQUFWLEVBQWU7TUFDdkMsSUFBSTBlLElBQUksR0FBRyxLQUFYO01BQ0EzcEIsTUFBTSxDQUFDMFAsSUFBUCxDQUFZOUIsVUFBVSxDQUFDM0MsR0FBRCxDQUFWLENBQWdCLFVBQWhCLENBQVosRUFBeUN5TyxHQUF6QyxDQUE2QyxVQUFVa1EsQ0FBVixFQUFhO1FBQ3RELElBQUk3b0IsRUFBSixFQUFReUcsRUFBUjs7UUFDQSxJQUFJLE9BQU8raEIsYUFBYSxDQUFDSyxDQUFELENBQXBCLEtBQTRCLFFBQTVCLElBQ0MsUUFBT0wsYUFBYSxDQUFDSyxDQUFELENBQXBCLE1BQTRCLFFBQTVCLElBQ0dMLGFBQWEsQ0FBQ0ssQ0FBRCxDQURoQixJQUVHNXBCLE1BQU0sQ0FBQzBQLElBQVAsQ0FBWTZaLGFBQWEsQ0FBQ0ssQ0FBRCxDQUF6QixFQUE4QnJqQixNQUh0QyxFQUcrQztVQUMzQ3FILFVBQVUsQ0FBQzNDLEdBQUQsQ0FBVixDQUFnQixVQUFoQixFQUE0QjJlLENBQTVCLEVBQStCLFNBQS9CLElBQTRDTCxhQUFhLENBQUNLLENBQUQsQ0FBekQ7VUFDQWhjLFVBQVUsQ0FBQzNDLEdBQUQsQ0FBVixDQUFnQixVQUFoQixFQUE0QjJlLENBQTVCLEVBQStCLFlBQS9CLElBQ0ksQ0FBQzdvQixFQUFFLEdBQUd5b0IsWUFBWSxDQUFDSSxDQUFELENBQVosQ0FBZ0IsWUFBaEIsQ0FBTixNQUF5QyxJQUF6QyxJQUFpRDdvQixFQUFFLEtBQUssS0FBSyxDQUE3RCxHQUFpRUEsRUFBakUsR0FBc0UsRUFEMUU7VUFFQTZNLFVBQVUsQ0FBQzNDLEdBQUQsQ0FBVixDQUFnQixVQUFoQixFQUE0QjJlLENBQTVCLEVBQStCLG1CQUEvQixJQUNJLENBQUNwaUIsRUFBRSxHQUFHZ2lCLFlBQVksQ0FBQ0ksQ0FBRCxDQUFaLENBQWdCLG1CQUFoQixDQUFOLE1BQWdELElBQWhELElBQXdEcGlCLEVBQUUsS0FBSyxLQUFLLENBQXBFLEdBQXdFQSxFQUF4RSxHQUE2RSxFQURqRjtVQUVBbWlCLElBQUksR0FBRyxJQUFQO1FBQ0gsQ0FWRCxNQVdLO1VBQ0QsT0FBTy9iLFVBQVUsQ0FBQzNDLEdBQUQsQ0FBVixDQUFnQjJlLENBQWhCLENBQVA7UUFDSDtNQUNKLENBaEJEOztNQWlCQSxJQUFJRCxJQUFJLEtBQUssS0FBYixFQUFvQjtRQUNoQixPQUFPL2IsVUFBVSxDQUFDM0MsR0FBRCxDQUFqQjtNQUNIO0lBQ0osQ0F0QkQsRUE3Rm9CLENBb0hwQjs7SUFDQWpMLE1BQU0sQ0FBQzBQLElBQVAsQ0FBWTRaLFdBQVosRUFBeUI1UCxHQUF6QixDQUE2QixVQUFVek8sR0FBVixFQUFlO01BQ3hDLElBQUlqTCxNQUFNLENBQUN3bEIsU0FBUCxDQUFpQkMsY0FBakIsQ0FBZ0NwZixJQUFoQyxDQUFxQ3VILFVBQXJDLEVBQWlEM0MsR0FBakQsQ0FBSixFQUEyRDtRQUN2RHFlLFdBQVcsQ0FBQ3JlLEdBQUQsQ0FBWCxDQUFpQixRQUFqQixJQUE2QixTQUE3QjtNQUNILENBRkQsTUFHSztRQUNEcWUsV0FBVyxDQUFDcmUsR0FBRCxDQUFYLENBQWlCLFFBQWpCLElBQTZCLFVBQTdCO01BQ0g7SUFDSixDQVBEO0lBUUE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0lBQ1FqTCxNQUFNLENBQUMwUCxJQUFQLENBQVk4WixZQUFaLEVBQTBCOVAsR0FBMUIsQ0FBOEIsVUFBVXpPLEdBQVYsRUFBZTtNQUN6QyxJQUFJbEssRUFBSixFQUFReUcsRUFBUjs7TUFDQWdpQixZQUFZLENBQUN2ZSxHQUFELENBQVosQ0FBa0IsV0FBbEIsSUFBaUMsQ0FBQ2xLLEVBQUUsR0FBRzBvQixXQUFXLENBQUN4ZSxHQUFELENBQWpCLE1BQTRCLElBQTVCLElBQW9DbEssRUFBRSxLQUFLLEtBQUssQ0FBaEQsR0FBb0RBLEVBQXBELEdBQXlELEtBQTFGO01BQ0F5b0IsWUFBWSxDQUFDdmUsR0FBRCxDQUFaLENBQWtCLGVBQWxCLElBQXFDLEVBQUUsQ0FBQ3pELEVBQUUsR0FBR2lpQixXQUFXLENBQUN4ZSxHQUFELENBQWpCLE1BQTRCLElBQTVCLElBQW9DekQsRUFBRSxLQUFLLEtBQUssQ0FBaEQsR0FBb0RBLEVBQXBELEdBQXlELEtBQTNELENBQXJDO01BQ0FnaUIsWUFBWSxDQUFDdmUsR0FBRCxDQUFaLENBQWtCLFVBQWxCLElBQWdDLENBQWhDOztNQUNBLElBQUlBLEdBQUcsSUFBSXNlLGFBQVgsRUFBMEI7UUFDdEIsSUFBSSxPQUFPQSxhQUFhLENBQUN0ZSxHQUFELENBQXBCLEtBQThCLFFBQTlCLElBQ0MsUUFBT3NlLGFBQWEsQ0FBQ3RlLEdBQUQsQ0FBcEIsTUFBOEIsUUFBOUIsSUFDR3NlLGFBQWEsQ0FBQ3RlLEdBQUQsQ0FEaEIsSUFFR2pMLE1BQU0sQ0FBQzBQLElBQVAsQ0FBWTZaLGFBQWEsQ0FBQ3RlLEdBQUQsQ0FBekIsRUFBZ0MxRSxNQUh4QyxFQUdpRDtVQUM3QyxJQUFJdkcsTUFBTSxDQUFDMFAsSUFBUCxDQUFZNlosYUFBYSxDQUFDdGUsR0FBRCxDQUF6QixFQUFnQzFFLE1BQWhDLEdBQXlDLENBQXpDLElBQ0FnakIsYUFBYSxDQUFDdGUsR0FBRCxDQUFiLENBQW1CZ1QsUUFBbkIsQ0FBNEIxWCxNQUE1QixHQUFxQyxDQUR6QyxFQUM0QztZQUN4Q2lqQixZQUFZLENBQUN2ZSxHQUFELENBQVosQ0FBa0IsVUFBbEIsSUFBZ0MsQ0FBaEM7VUFDSDtRQUNKO01BQ0o7SUFDSixDQWhCRDtJQWlCQTtBQUNSO0FBQ0E7O0lBQ1EsSUFBSTRlLFNBQVMsR0FBRyxDQUFDLEdBQUdqZCxPQUFPLFdBQVgsRUFBcUIyYyxhQUFhLENBQUNqUixLQUFuQyxFQUEwQyxDQUFDdlgsRUFBRSxHQUFHd29CLGFBQWEsQ0FBQ08sb0JBQXBCLE1BQThDLElBQTlDLElBQXNEL29CLEVBQUUsS0FBSyxLQUFLLENBQWxFLEdBQXNFLEtBQUssQ0FBM0UsR0FBK0VBLEVBQUUsQ0FBQ2tsQixnQkFBNUgsQ0FBaEI7O0lBQ0EsU0FBUzhELFdBQVQsQ0FBcUJ6UixLQUFyQixFQUE0QjtNQUN4QixJQUFJdlgsRUFBSjs7TUFDQSxJQUFJaXBCLGVBQWUsR0FBRyxDQUFDanBCLEVBQUUsR0FBRzJHLFNBQVMsQ0FBQ3VpQixXQUFWLENBQXNCLG1CQUFtQmxvQixNQUFuQixDQUEwQnVXLEtBQTFCLEVBQWlDLFFBQWpDLENBQXRCLENBQU4sTUFBNkUsSUFBN0UsSUFBcUZ2WCxFQUFFLEtBQUssS0FBSyxDQUFqRyxHQUFxR0EsRUFBckcsR0FBMEd1WCxLQUFLLENBQUNuTSxPQUFOLENBQWMsS0FBZCxFQUFxQixHQUFyQixDQUFoSTtNQUNBLE9BQU8sQ0FBQyxHQUFHL0wsS0FBSyxDQUFDd2YsVUFBVixFQUFzQm9LLGVBQXRCLENBQVA7SUFDSDs7SUFDRCxJQUFJOWhCLFlBQVksR0FBRyxDQUFDLEdBQUc5SCxLQUFLLENBQUNnSSxRQUFWLEVBQW9CO01BQ25Dd0IsT0FBTyxFQUFFLEVBRDBCO01BRW5DNUMsSUFBSSxFQUFFO0lBRjZCLENBQXBCLENBQW5CO0lBSUEsSUFBSWtqQixhQUFhLEdBQUcsQ0FBQyxHQUFHeGpCLE1BQU0sQ0FBQ3lqQixjQUFYLEVBQTJCblQsU0FBM0IsRUFBc0MsWUFBWTtNQUFFLE9BQU9vVCxTQUFQO0lBQW1CLENBQXZFLEVBQXlFO01BQ3pGQyxLQUFLLEVBQUU7SUFEa0YsQ0FBekUsRUFFakJILGFBRkg7O0lBR0EsSUFBSWIsaUJBQWlCLEdBQUcsU0FBcEJBLGlCQUFvQixHQUFZO01BQ2hDYSxhQUFhLENBQUMsWUFBWTtRQUN0QmxULFNBQVMsQ0FBQ3BOLE9BQVYsR0FBb0IsRUFBcEI7TUFDSCxDQUZZLENBQWI7SUFHSCxDQUpEOztJQUtBLElBQUkyWSxhQUFhLEdBQUcsQ0FBQyxHQUFHbmlCLEtBQUssQ0FBQ2dJLFFBQVYsRUFBb0I7TUFDcENvYSxjQUFjLEVBQUUrRyxhQUFhLENBQUMvRyxjQURNO01BRXBDL1csTUFBTSxFQUFFOGQsYUFBYSxDQUFDOWQ7SUFGYyxDQUFwQixDQUFwQixDQTFLb0IsQ0E4S3BCOztJQUNBLENBQUMsR0FBR3JMLEtBQUssQ0FBQ2txQixPQUFWLEVBQW1CLE9BQW5CLEVBQTRCbkMsS0FBSyxDQUFDaG9CLEtBQWxDO0lBQ0EsQ0FBQyxHQUFHQyxLQUFLLENBQUNrcUIsT0FBVixFQUFtQixlQUFuQixFQUFvQ2xLLGFBQWEsQ0FBQ2pnQixLQUFsRDtJQUNBLENBQUMsR0FBR0MsS0FBSyxDQUFDa3FCLE9BQVYsRUFBbUIsY0FBbkIsRUFBbUNwaUIsWUFBbkM7SUFDQSxDQUFDLEdBQUc5SCxLQUFLLENBQUNrcUIsT0FBVixFQUFtQixXQUFuQixFQUFnQ3RULFNBQWhDO0lBQ0EsQ0FBQyxHQUFHNVcsS0FBSyxDQUFDa3FCLE9BQVYsRUFBbUIsV0FBbkIsRUFBZ0NyVCxTQUFoQztJQUNBLENBQUMsR0FBRzdXLEtBQUssQ0FBQ2txQixPQUFWLEVBQW1CLHFCQUFuQixFQUEwQ3hqQixLQUFLLENBQUN5aEIsbUJBQWhEO0lBQ0EsQ0FBQyxHQUFHbm9CLEtBQUssQ0FBQ2txQixPQUFWLEVBQW1CLFlBQW5CLEVBQWlDeGpCLEtBQUssQ0FBQ2lWLFFBQU4sQ0FBZW5ULEVBQWhEO0lBQ0E2ZixVQUFVLENBQUM1bUIsUUFBWCxDQUFvQiwwQkFBcEIsRUFBZ0QsQ0FBQ2thLFFBQVEsQ0FBQzViLEtBQVQsQ0FBZXlJLEVBQWhCLENBQWhEO0lBQ0E7QUFDUjtBQUNBOztJQUNRLElBQUltRSxjQUFjLEdBQUcsQ0FDakI7TUFDSXVMLEtBQUssRUFBRTVRLFNBQVMsQ0FBQ3VpQixXQUFWLENBQXNCLDRCQUF0QixDQURYO01BRUlybkIsSUFBSSxFQUFFO0lBRlYsQ0FEaUIsRUFLakI7TUFDSTBWLEtBQUssRUFBRXVSLFNBRFg7TUFFSWpuQixJQUFJLEVBQUU7SUFGVixDQUxpQixDQUFyQjtJQVVBO0FBQ1I7QUFDQTs7SUFDUSxJQUFJMGxCLHFCQUFxQixHQUFHLENBQUMsR0FBR2xvQixLQUFLLENBQUMwTSxNQUFWLEVBQWtCaEcsS0FBbEIsRUFBeUJ3aEIscUJBQXJEO0lBQ0EsSUFBSWlDLGdCQUFnQixHQUFHakMscUJBQXFCLENBQUNub0IsS0FBN0M7O0lBQ0EsSUFBSW9xQixnQkFBZ0IsSUFBSUEsZ0JBQWdCLENBQUM5TixNQUFqQixDQUF3QmxXLE1BQXhCLEdBQWlDLENBQXpELEVBQTREO01BQ3hEdEYsS0FBSyxDQUFDWSxRQUFOLENBQWUscUJBQWYsRUFBc0Mwb0IsZ0JBQWdCLENBQUM5TixNQUF2RDtJQUNIOztJQUNELElBQUk4RixhQUFhLENBQUNDLGNBQWxCLEVBQWtDO01BQzlCdmhCLEtBQUssQ0FBQ1ksUUFBTixDQUFlLG1CQUFmLEVBQW9DLElBQXBDO0lBQ0gsQ0FGRCxNQUdLO01BQ0RaLEtBQUssQ0FBQ1ksUUFBTixDQUFlLG1CQUFmLEVBQW9DLEtBQXBDO0lBQ0g7O0lBQ0QsSUFBSSxFQUFFMGdCLGFBQWEsQ0FBQ0MsY0FBZCxJQUFnQ0QsYUFBYSxDQUFDOVcsTUFBZCxLQUF5QixXQUEzRCxDQUFKLEVBQTZFO01BQ3pFeEssS0FBSyxDQUFDWSxRQUFOLENBQWUscUJBQWYsRUFBc0MsSUFBdEM7SUFDSCxDQUZELE1BR0s7TUFDRFosS0FBSyxDQUFDWSxRQUFOLENBQWUscUJBQWYsRUFBc0MsS0FBdEM7SUFDSDs7SUFDRCxJQUFJMm9CLFdBQVcsR0FBRyxTQUFkQSxXQUFjLENBQVVDLFFBQVYsRUFBb0I7TUFDbEMsSUFBSUMsS0FBSyxHQUFHRCxRQUFRLENBQUN4b0IsS0FBVCxDQUFlLEdBQWYsQ0FBWjtNQUNBLE9BQU95b0IsS0FBSyxDQUFDaFIsR0FBTixDQUFVLFVBQVVpUixJQUFWLEVBQWdCO1FBQUUsT0FBT0EsSUFBSSxDQUFDN1EsV0FBTCxFQUFQO01BQTRCLENBQXhELEVBQTBEdk4sSUFBMUQsQ0FBK0QsR0FBL0QsQ0FBUDtJQUNILENBSEQ7O0lBSUEsT0FBTztNQUNIK2MsV0FBVyxFQUFFQSxXQURWO01BRUgxYixVQUFVLEVBQUVBLFVBRlQ7TUFHSDRSLFdBQVcsRUFBRUEsV0FIVjtNQUlIQyxZQUFZLEVBQUVBLFlBSlg7TUFLSG1KLGFBQWEsRUFBRUEsYUFMWjtNQU1IQyxjQUFjLEVBQUVBLGNBTmI7TUFPSDdSLFNBQVMsRUFBRUEsU0FQUjtNQVFId1MsWUFBWSxFQUFFQSxZQVJYO01BU0gxaUIsS0FBSyxFQUFFQSxLQVRKO01BVUhpakIsV0FBVyxFQUFFQSxXQVZWO01BV0hGLFNBQVMsRUFBRUEsU0FYUjtNQVlIM2hCLFlBQVksRUFBRUEsWUFaWDtNQWFIcWEsYUFBYSxFQUFFQSxhQWJaO01BY0h4VixjQUFjLEVBQUVBLGNBZGI7TUFlSDlMLEtBQUssRUFBRUEsS0FmSjtNQWdCSHNvQixhQUFhLEVBQUVBLGFBaEJaO01BaUJIdFMsU0FBUyxFQUFFQSxTQWpCUjtNQWtCSGhQLFdBQVcsRUFBRUEsV0FsQlY7TUFtQkg2Z0IsYUFBYSxFQUFFQSxhQW5CWjtNQW9CSEcsWUFBWSxFQUFFQSxZQXBCWDtNQXFCSE4sV0FBVyxFQUFFQSxXQXJCVjtNQXNCSGxRLEtBQUssRUFBRUEsS0F0Qko7TUF1QkgvUSxTQUFTLEVBQUVBLFNBdkJSO01Bd0JIOGlCLFdBQVcsRUFBRUE7SUF4QlYsQ0FBUDtFQTBCSDtBQXZUd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDMUJhOztBQUNiLElBQUlybUIsU0FBUyxHQUFJLFFBQVEsS0FBS0EsU0FBZCxJQUE0QixVQUFVQyxPQUFWLEVBQW1CQyxVQUFuQixFQUErQkMsQ0FBL0IsRUFBa0NDLFNBQWxDLEVBQTZDO0VBQ3JGLFNBQVNDLEtBQVQsQ0FBZXJFLEtBQWYsRUFBc0I7SUFBRSxPQUFPQSxLQUFLLFlBQVltRSxDQUFqQixHQUFxQm5FLEtBQXJCLEdBQTZCLElBQUltRSxDQUFKLENBQU0sVUFBVUcsT0FBVixFQUFtQjtNQUFFQSxPQUFPLENBQUN0RSxLQUFELENBQVA7SUFBaUIsQ0FBNUMsQ0FBcEM7RUFBb0Y7O0VBQzVHLE9BQU8sS0FBS21FLENBQUMsS0FBS0EsQ0FBQyxHQUFHSSxPQUFULENBQU4sRUFBeUIsVUFBVUQsT0FBVixFQUFtQkUsTUFBbkIsRUFBMkI7SUFDdkQsU0FBU0MsU0FBVCxDQUFtQnpFLEtBQW5CLEVBQTBCO01BQUUsSUFBSTtRQUFFMEUsSUFBSSxDQUFDTixTQUFTLENBQUNPLElBQVYsQ0FBZTNFLEtBQWYsQ0FBRCxDQUFKO01BQThCLENBQXBDLENBQXFDLE9BQU80RSxDQUFQLEVBQVU7UUFBRUosTUFBTSxDQUFDSSxDQUFELENBQU47TUFBWTtJQUFFOztJQUMzRixTQUFTQyxRQUFULENBQWtCN0UsS0FBbEIsRUFBeUI7TUFBRSxJQUFJO1FBQUUwRSxJQUFJLENBQUNOLFNBQVMsQ0FBQyxPQUFELENBQVQsQ0FBbUJwRSxLQUFuQixDQUFELENBQUo7TUFBa0MsQ0FBeEMsQ0FBeUMsT0FBTzRFLENBQVAsRUFBVTtRQUFFSixNQUFNLENBQUNJLENBQUQsQ0FBTjtNQUFZO0lBQUU7O0lBQzlGLFNBQVNGLElBQVQsQ0FBY0ksTUFBZCxFQUFzQjtNQUFFQSxNQUFNLENBQUNDLElBQVAsR0FBY1QsT0FBTyxDQUFDUSxNQUFNLENBQUM5RSxLQUFSLENBQXJCLEdBQXNDcUUsS0FBSyxDQUFDUyxNQUFNLENBQUM5RSxLQUFSLENBQUwsQ0FBb0JrQyxJQUFwQixDQUF5QnVDLFNBQXpCLEVBQW9DSSxRQUFwQyxDQUF0QztJQUFzRjs7SUFDOUdILElBQUksQ0FBQyxDQUFDTixTQUFTLEdBQUdBLFNBQVMsQ0FBQ1ksS0FBVixDQUFnQmYsT0FBaEIsRUFBeUJDLFVBQVUsSUFBSSxFQUF2QyxDQUFiLEVBQXlEUyxJQUF6RCxFQUFELENBQUo7RUFDSCxDQUxNLENBQVA7QUFNSCxDQVJEOztBQVNBLElBQUlNLFdBQVcsR0FBSSxRQUFRLEtBQUtBLFdBQWQsSUFBOEIsVUFBVWhCLE9BQVYsRUFBbUJqQixJQUFuQixFQUF5QjtFQUNyRSxJQUFJa0MsQ0FBQyxHQUFHO0lBQUVDLEtBQUssRUFBRSxDQUFUO0lBQVlDLElBQUksRUFBRSxnQkFBVztNQUFFLElBQUlDLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBTyxDQUFYLEVBQWMsTUFBTUEsQ0FBQyxDQUFDLENBQUQsQ0FBUDtNQUFZLE9BQU9BLENBQUMsQ0FBQyxDQUFELENBQVI7SUFBYyxDQUF2RTtJQUF5RUMsSUFBSSxFQUFFLEVBQS9FO0lBQW1GQyxHQUFHLEVBQUU7RUFBeEYsQ0FBUjtFQUFBLElBQXNHQyxDQUF0RztFQUFBLElBQXlHQyxDQUF6RztFQUFBLElBQTRHSixDQUE1RztFQUFBLElBQStHSyxDQUEvRztFQUNBLE9BQU9BLENBQUMsR0FBRztJQUFFZixJQUFJLEVBQUVnQixJQUFJLENBQUMsQ0FBRCxDQUFaO0lBQWlCLFNBQVNBLElBQUksQ0FBQyxDQUFELENBQTlCO0lBQW1DLFVBQVVBLElBQUksQ0FBQyxDQUFEO0VBQWpELENBQUosRUFBNEQsT0FBT0MsTUFBUCxLQUFrQixVQUFsQixLQUFpQ0YsQ0FBQyxDQUFDRSxNQUFNLENBQUNDLFFBQVIsQ0FBRCxHQUFxQixZQUFXO0lBQUUsT0FBTyxJQUFQO0VBQWMsQ0FBakYsQ0FBNUQsRUFBZ0pILENBQXZKOztFQUNBLFNBQVNDLElBQVQsQ0FBY0csQ0FBZCxFQUFpQjtJQUFFLE9BQU8sVUFBVUMsQ0FBVixFQUFhO01BQUUsT0FBT3JCLElBQUksQ0FBQyxDQUFDb0IsQ0FBRCxFQUFJQyxDQUFKLENBQUQsQ0FBWDtJQUFzQixDQUE1QztFQUErQzs7RUFDbEUsU0FBU3JCLElBQVQsQ0FBY3NCLEVBQWQsRUFBa0I7SUFDZCxJQUFJUixDQUFKLEVBQU8sTUFBTSxJQUFJUyxTQUFKLENBQWMsaUNBQWQsQ0FBTjs7SUFDUCxPQUFPUCxDQUFDLEtBQUtBLENBQUMsR0FBRyxDQUFKLEVBQU9NLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVWQsQ0FBQyxHQUFHLENBQWQsQ0FBWixDQUFELEVBQWdDQSxDQUF2QztNQUEwQyxJQUFJO1FBQzFDLElBQUlNLENBQUMsR0FBRyxDQUFKLEVBQU9DLENBQUMsS0FBS0osQ0FBQyxHQUFHVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVEsQ0FBUixHQUFZUCxDQUFDLENBQUMsUUFBRCxDQUFiLEdBQTBCTyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFQLENBQUMsQ0FBQyxPQUFELENBQUQsS0FBZSxDQUFDSixDQUFDLEdBQUdJLENBQUMsQ0FBQyxRQUFELENBQU4sS0FBcUJKLENBQUMsQ0FBQ2EsSUFBRixDQUFPVCxDQUFQLENBQXJCLEVBQWdDLENBQS9DLENBQVIsR0FBNERBLENBQUMsQ0FBQ2QsSUFBakcsQ0FBRCxJQUEyRyxDQUFDLENBQUNVLENBQUMsR0FBR0EsQ0FBQyxDQUFDYSxJQUFGLENBQU9ULENBQVAsRUFBVU8sRUFBRSxDQUFDLENBQUQsQ0FBWixDQUFMLEVBQXVCakIsSUFBOUksRUFBb0osT0FBT00sQ0FBUDtRQUNwSixJQUFJSSxDQUFDLEdBQUcsQ0FBSixFQUFPSixDQUFYLEVBQWNXLEVBQUUsR0FBRyxDQUFDQSxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVEsQ0FBVCxFQUFZWCxDQUFDLENBQUNyRixLQUFkLENBQUw7O1FBQ2QsUUFBUWdHLEVBQUUsQ0FBQyxDQUFELENBQVY7VUFDSSxLQUFLLENBQUw7VUFBUSxLQUFLLENBQUw7WUFBUVgsQ0FBQyxHQUFHVyxFQUFKO1lBQVE7O1VBQ3hCLEtBQUssQ0FBTDtZQUFRZCxDQUFDLENBQUNDLEtBQUY7WUFBVyxPQUFPO2NBQUVuRixLQUFLLEVBQUVnRyxFQUFFLENBQUMsQ0FBRCxDQUFYO2NBQWdCakIsSUFBSSxFQUFFO1lBQXRCLENBQVA7O1VBQ25CLEtBQUssQ0FBTDtZQUFRRyxDQUFDLENBQUNDLEtBQUY7WUFBV00sQ0FBQyxHQUFHTyxFQUFFLENBQUMsQ0FBRCxDQUFOO1lBQVdBLEVBQUUsR0FBRyxDQUFDLENBQUQsQ0FBTDtZQUFVOztVQUN4QyxLQUFLLENBQUw7WUFBUUEsRUFBRSxHQUFHZCxDQUFDLENBQUNLLEdBQUYsQ0FBTVksR0FBTixFQUFMOztZQUFrQmpCLENBQUMsQ0FBQ0ksSUFBRixDQUFPYSxHQUFQOztZQUFjOztVQUN4QztZQUNJLElBQUksRUFBRWQsQ0FBQyxHQUFHSCxDQUFDLENBQUNJLElBQU4sRUFBWUQsQ0FBQyxHQUFHQSxDQUFDLENBQUNlLE1BQUYsR0FBVyxDQUFYLElBQWdCZixDQUFDLENBQUNBLENBQUMsQ0FBQ2UsTUFBRixHQUFXLENBQVosQ0FBbkMsTUFBdURKLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFWLElBQWVBLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFoRixDQUFKLEVBQXdGO2NBQUVkLENBQUMsR0FBRyxDQUFKO2NBQU87WUFBVzs7WUFDNUcsSUFBSWMsRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVLENBQVYsS0FBZ0IsQ0FBQ1gsQ0FBRCxJQUFPVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFYLENBQUMsQ0FBQyxDQUFELENBQVQsSUFBZ0JXLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUVgsQ0FBQyxDQUFDLENBQUQsQ0FBaEQsQ0FBSixFQUEyRDtjQUFFSCxDQUFDLENBQUNDLEtBQUYsR0FBVWEsRUFBRSxDQUFDLENBQUQsQ0FBWjtjQUFpQjtZQUFROztZQUN0RixJQUFJQSxFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVUsQ0FBVixJQUFlZCxDQUFDLENBQUNDLEtBQUYsR0FBVUUsQ0FBQyxDQUFDLENBQUQsQ0FBOUIsRUFBbUM7Y0FBRUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQVg7Y0FBZ0JBLENBQUMsR0FBR1csRUFBSjtjQUFRO1lBQVE7O1lBQ3JFLElBQUlYLENBQUMsSUFBSUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQXBCLEVBQXlCO2NBQUVILENBQUMsQ0FBQ0MsS0FBRixHQUFVRSxDQUFDLENBQUMsQ0FBRCxDQUFYOztjQUFnQkgsQ0FBQyxDQUFDSyxHQUFGLENBQU1jLElBQU4sQ0FBV0wsRUFBWDs7Y0FBZ0I7WUFBUTs7WUFDbkUsSUFBSVgsQ0FBQyxDQUFDLENBQUQsQ0FBTCxFQUFVSCxDQUFDLENBQUNLLEdBQUYsQ0FBTVksR0FBTjs7WUFDVmpCLENBQUMsQ0FBQ0ksSUFBRixDQUFPYSxHQUFQOztZQUFjO1FBWHRCOztRQWFBSCxFQUFFLEdBQUdoRCxJQUFJLENBQUNrRCxJQUFMLENBQVVqQyxPQUFWLEVBQW1CaUIsQ0FBbkIsQ0FBTDtNQUNILENBakJ5QyxDQWlCeEMsT0FBT04sQ0FBUCxFQUFVO1FBQUVvQixFQUFFLEdBQUcsQ0FBQyxDQUFELEVBQUlwQixDQUFKLENBQUw7UUFBYWEsQ0FBQyxHQUFHLENBQUo7TUFBUSxDQWpCTyxTQWlCRTtRQUFFRCxDQUFDLEdBQUdILENBQUMsR0FBRyxDQUFSO01BQVk7SUFqQjFEOztJQWtCQSxJQUFJVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVEsQ0FBWixFQUFlLE1BQU1BLEVBQUUsQ0FBQyxDQUFELENBQVI7SUFBYSxPQUFPO01BQUVoRyxLQUFLLEVBQUVnRyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFBLEVBQUUsQ0FBQyxDQUFELENBQVYsR0FBZ0IsS0FBSyxDQUE5QjtNQUFpQ2pCLElBQUksRUFBRTtJQUF2QyxDQUFQO0VBQy9CO0FBQ0osQ0ExQkQ7O0FBMkJBLElBQUlyRixlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJcUcsTUFBTSxHQUFHckcsbUJBQU8sQ0FBQywyREFBRCxDQUFwQjs7QUFDQSxJQUFJSSxPQUFPLEdBQUdaLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0Q0FBRCxDQUFSLENBQTdCOztBQUNBLElBQUl1cUIsd0JBQXdCLEdBQUcvcUIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGtHQUFELENBQVIsQ0FBOUM7O0FBQ0EsSUFBSXdxQixtQkFBbUIsR0FBR2hyQixlQUFlLENBQUNRLG1CQUFPLENBQUMscUdBQUQsQ0FBUixDQUF6Qzs7QUFDQSxJQUFJeXFCLGlCQUFpQixHQUFHanJCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxpR0FBRCxDQUFSLENBQXZDOztBQUNBLElBQUkwcUIscUJBQXFCLEdBQUdsckIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRGQUFELENBQVIsQ0FBM0M7O0FBQ0EsSUFBSTJxQixlQUFlLEdBQUduckIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDZGQUFELENBQVIsQ0FBckM7O0FBQ0EsSUFBSXNXLFlBQVksR0FBRzlXLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQywwRUFBRCxDQUFSLENBQWxDOztBQUNBLElBQUk0cUIsa0JBQWtCLEdBQUdwckIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHNGQUFELENBQVIsQ0FBeEM7O0FBQ0EsSUFBSUssT0FBTyxHQUFHTCxtQkFBTyxDQUFDLCtFQUFELENBQXJCOztBQUNBLElBQUlvRyxNQUFNLEdBQUdwRyxtQkFBTyxDQUFDLDZFQUFELENBQXBCOztBQUNBLElBQUk2cUIsTUFBTSxHQUFHN3FCLG1CQUFPLENBQUMsMkRBQUQsQ0FBcEI7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQSxJQUFJWSxLQUFLLEdBQUcsQ0FBQyxHQUFHUCxPQUFPLENBQUNRLFFBQVosR0FBWjtBQUNBLElBQUlpcUIsYUFBYSxHQUFHLENBQUMsR0FBRzFrQixNQUFNLENBQUNnQixXQUFYLEdBQXBCO0FBQ0F2SCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q3FJLElBQUksRUFBRSxtQkFEbUM7RUFFekM2RCxVQUFVLEVBQUU7SUFDUnVlLGFBQWEsRUFBRVAsbUJBQW1CLFdBRDFCO0lBRVJRLFNBQVMsRUFBRUwsZUFBZSxXQUZsQjtJQUdSTSxVQUFVLEVBQUVQLHFCQUFxQixXQUh6QjtJQUlSUSxXQUFXLEVBQUVULGlCQUFpQixXQUp0QjtJQUtSMVMsTUFBTSxFQUFFekIsWUFBWSxXQUxaO0lBTVI2VSxZQUFZLEVBQUVQLGtCQUFrQixXQU54QjtJQU9SUSxrQkFBa0IsRUFBRWIsd0JBQXdCO0VBUHBDLENBRjZCO0VBV3pDOWpCLEtBQUssRUFBRTtJQUNINkMsS0FBSyxFQUFFO01BQ0gzQyxJQUFJLEVBQUVoSCxNQURIO01BRUhpSCxRQUFRLEVBQUU7SUFGUDtFQURKLENBWGtDO0VBaUJ6Q3BHLEtBQUssRUFBRSxlQUFVaUcsS0FBVixFQUFpQjtJQUNwQixJQUFJd0ssS0FBSyxHQUFHLElBQVo7O0lBQ0EsSUFBSXZRLEVBQUo7O0lBQ0EsSUFBSTZNLFVBQVUsR0FBRyxDQUFDLEdBQUd4TixLQUFLLENBQUNnSSxRQUFWLEVBQW9CLEVBQXBCLENBQWpCO0lBQ0EsSUFBSS9HLFNBQVMsR0FBRyxDQUFDLEdBQUdqQixLQUFLLENBQUNnQixHQUFWLEVBQWUsSUFBZixDQUFoQjtJQUNBLElBQUltYyxZQUFZLEdBQUcsQ0FBQyxHQUFHbmQsS0FBSyxDQUFDZ0IsR0FBVixFQUFlLEVBQWYsQ0FBbkI7SUFDQSxJQUFJeUMsU0FBUyxHQUFHLENBQUMsR0FBR3pELEtBQUssQ0FBQ2dCLEdBQVYsRUFBZSxDQUFmLENBQWhCO0lBQ0EsSUFBSXFkLGlCQUFpQixHQUFHLENBQUMsR0FBR3JlLEtBQUssQ0FBQ2dCLEdBQVYsRUFBZSxLQUFmLENBQXhCO0lBQ0EsSUFBSXNxQixVQUFVLEdBQUcsQ0FBQyxHQUFHdHJCLEtBQUssQ0FBQ2dCLEdBQVYsRUFBZSxLQUFmLENBQWpCO0lBQ0EsSUFBSW1DLGlCQUFpQixHQUFHLENBQUMsR0FBR25ELEtBQUssQ0FBQ2dCLEdBQVYsRUFBZSxFQUFmLENBQXhCO0lBQ0EsSUFBSW1kLE9BQU8sR0FBRyxDQUFDLEdBQUduZSxLQUFLLENBQUNnQixHQUFWLEVBQWUsS0FBZixDQUFkO0lBQ0EsSUFBSXdkLFdBQVcsR0FBRyxDQUFDLEdBQUd4ZSxLQUFLLENBQUNnQixHQUFWLEVBQWUsS0FBZixDQUFsQjtJQUNBLElBQUl5ZCxnQkFBZ0IsR0FBRyxDQUFDLEdBQUd6ZSxLQUFLLENBQUNnQixHQUFWLEVBQWUsS0FBZixDQUF2QjtJQUNBLElBQUlzYyxTQUFTLEdBQUcsQ0FBQyxHQUFHdGQsS0FBSyxDQUFDZ0IsR0FBVixFQUFlLEtBQWYsQ0FBaEI7SUFDQSxJQUFJOGMsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHOWQsS0FBSyxDQUFDZ0IsR0FBVixFQUFlLEVBQWYsQ0FBdkI7SUFDQSxJQUFJK2MsVUFBVSxHQUFHLENBQUMsR0FBRy9kLEtBQUssQ0FBQ2dCLEdBQVYsR0FBakI7SUFDQSxJQUFJaUssb0JBQW9CLEdBQUcsQ0FBQyxHQUFHakwsS0FBSyxDQUFDZ0IsR0FBVixHQUEzQjtJQUNBLElBQUl1cUIsY0FBYyxHQUFHLENBQUMsR0FBR3ZyQixLQUFLLENBQUNnQixHQUFWLEVBQWUsS0FBZixDQUFyQjtJQUNBLElBQUl3cUIsZUFBZSxHQUFHLENBQUMsR0FBR3hyQixLQUFLLENBQUNnQixHQUFWLEVBQWUsS0FBZixDQUF0QjtJQUNBLElBQUlvYyxVQUFVLEdBQUcsQ0FBQyxHQUFHcGQsS0FBSyxDQUFDZ0IsR0FBVixHQUFqQjtJQUNBLElBQUlxYyxjQUFjLEdBQUcsQ0FBQyxHQUFHcmQsS0FBSyxDQUFDZ0IsR0FBVixHQUFyQjtJQUNBLElBQUlvZCxhQUFhLEdBQUcsQ0FBQyxHQUFHcGUsS0FBSyxDQUFDZ0IsR0FBVixFQUFlLElBQWYsQ0FBcEI7SUFDQSxJQUFJeXFCLFdBQVcsR0FBRyxDQUFDLEdBQUd6ckIsS0FBSyxDQUFDZ0IsR0FBVixFQUFlLElBQWYsQ0FBbEI7SUFDQSxJQUFJWSxjQUFjLEdBQUcsQ0FBQyxHQUFHNUIsS0FBSyxDQUFDZ0IsR0FBVixFQUFlLEVBQWYsQ0FBckI7SUFDQSxJQUFJdUssVUFBVSxHQUFHNUksTUFBTSxDQUFDOEgsUUFBUCxDQUFnQi9ILElBQWpDO0lBQ0EsSUFBSTZMLFFBQVEsR0FBRyxFQUFmO0lBQ0EsSUFBSW1kLGlCQUFpQixHQUFHLEtBQXhCO0lBQ0EsSUFBSTNnQixFQUFFLEdBQUcsQ0FBQyxHQUFHK2YsTUFBTSxDQUFDOWYsVUFBWCxFQUF1Qix1QkFBdkIsRUFBZ0Q7TUFDckRDLG9CQUFvQixFQUFFLENBQUN0SyxFQUFFLEdBQUdtSixZQUFZLENBQUNvQixPQUFiLENBQXFCLHNCQUFyQixDQUFOLE1BQXdELElBQXhELElBQWdFdkssRUFBRSxLQUFLLEtBQUssQ0FBNUUsR0FBZ0ZBLEVBQWhGLEdBQXFGO0lBRHRELENBQWhELENBQVQ7O0lBR0EsSUFBSTRLLFVBQVUsQ0FBQ1QsUUFBWCxDQUFvQixHQUFwQixDQUFKLEVBQThCO01BQzFCLElBQUlVLFdBQVcsR0FBRzdJLE1BQU0sQ0FBQzhILFFBQVAsQ0FBZ0JnQixNQUFsQztNQUNBOEMsUUFBUSxHQUFHLG1CQUFtQjVNLE1BQW5CLENBQTBCNkosV0FBMUIsQ0FBWDtJQUNILENBSEQsTUFJSztNQUNEK0MsUUFBUSxHQUFHLGtCQUFYO01BQ0FtZCxpQkFBaUIsR0FBRyxJQUFwQjtJQUNIOztJQUNELElBQUlwa0IsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQixDQXRDb0IsQ0F1Q3BCOztJQUNBLElBQUlxUCxTQUFTLEdBQUcsQ0FBQyxHQUFHNVcsS0FBSyxDQUFDZ0ksUUFBVixFQUFvQjtNQUNoQ2tHLFVBQVUsRUFBRSxLQURvQjtNQUVoQzFFLE9BQU8sRUFBRSxFQUZ1QjtNQUdoQzVDLElBQUksRUFBRTtJQUgwQixDQUFwQixDQUFoQjtJQUtBLElBQUlpUSxTQUFTLEdBQUcsQ0FBQyxHQUFHN1csS0FBSyxDQUFDZ0ksUUFBVixFQUFvQjtNQUNoQ2tHLFVBQVUsRUFBRSxLQURvQjtNQUVoQzFFLE9BQU8sRUFBRSxFQUZ1QjtNQUdoQzVDLElBQUksRUFBRTtJQUgwQixDQUFwQixDQUFoQixDQTdDb0IsQ0FrRHBCOztJQUNBLElBQUlrQixZQUFZLEdBQUcsQ0FBQyxHQUFHOUgsS0FBSyxDQUFDZ0ksUUFBVixFQUFvQjtNQUNuQ2tHLFVBQVUsRUFBRSxLQUR1QjtNQUVuQzFFLE9BQU8sRUFBRSxFQUYwQjtNQUduQzVDLElBQUksRUFBRTtJQUg2QixDQUFwQixDQUFuQjs7SUFLQSxJQUFJK2tCLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBc0IsR0FBWTtNQUNsQyxJQUFJQyxXQUFXLEdBQUc5ZCxXQUFXLENBQUMsWUFBWTtRQUN0Q3pOLE9BQU8sV0FBUCxDQUFnQitDLEdBQWhCLENBQW9CLG9CQUFwQixFQUEwQ25CLElBQTFDLENBQStDLFVBQVVDLEdBQVYsRUFBZTtVQUMxRCxJQUFJdkIsRUFBSixFQUFReUcsRUFBUixFQUFZK0IsRUFBWixFQUFnQnlNLEVBQWhCLEVBQW9CQyxFQUFwQixFQUF3QmdXLEVBQXhCLEVBQTRCQyxFQUE1QixFQUFnQ0MsRUFBaEMsRUFBb0NDLEVBQXBDLEVBQXdDQyxFQUF4Qzs7VUFDQSxJQUFJLENBQUMsQ0FBQ3RyQixFQUFFLEdBQUd1QixHQUFHLENBQUNLLElBQUosQ0FBU0EsSUFBZixNQUF5QixJQUF6QixJQUFpQzVCLEVBQUUsS0FBSyxLQUFLLENBQTdDLEdBQWlELEtBQUssQ0FBdEQsR0FBMERBLEVBQUUsQ0FBQzZJLE9BQTlELE1BQTJFLFNBQS9FLEVBQTBGO1lBQ3RGO1lBQ0E0VCxVQUFVLENBQUNyZCxLQUFYLEdBQW1CLElBQW5CO1lBQ0FzZCxjQUFjLENBQUN0ZCxLQUFmLEdBQXVCLENBQXZCO1lBQ0F1ZCxTQUFTLENBQUN2ZCxLQUFWLEdBQWtCLEtBQWxCO1lBQ0ErZCxnQkFBZ0IsQ0FBQy9kLEtBQWpCLEdBQXlCLEVBQXpCO1VBQ0gsQ0FORCxNQU9LO1lBQ0RxZCxVQUFVLENBQUNyZCxLQUFYLEdBQW1CLENBQUNxSCxFQUFFLEdBQUdsRixHQUFHLENBQUNLLElBQUosQ0FBU0EsSUFBZixNQUF5QixJQUF6QixJQUFpQzZFLEVBQUUsS0FBSyxLQUFLLENBQTdDLEdBQWlELEtBQUssQ0FBdEQsR0FBMERBLEVBQUUsQ0FBQzhrQixXQUFoRjtZQUNBN08sY0FBYyxDQUFDdGQsS0FBZixHQUF1QixDQUFDb0osRUFBRSxHQUFHakgsR0FBRyxDQUFDSyxJQUFKLENBQVNBLElBQWYsTUFBeUIsSUFBekIsSUFBaUM0RyxFQUFFLEtBQUssS0FBSyxDQUE3QyxHQUFpRCxLQUFLLENBQXRELEdBQTBEQSxFQUFFLENBQUNnakIsZUFBcEY7WUFDQTdPLFNBQVMsQ0FBQ3ZkLEtBQVYsR0FBa0IsRUFBRSxDQUFDNlYsRUFBRSxHQUFHMVQsR0FBRyxDQUFDSyxJQUFKLENBQVNBLElBQWYsTUFBeUIsSUFBekIsSUFBaUNxVCxFQUFFLEtBQUssS0FBSyxDQUE3QyxHQUFpRCxLQUFLLENBQXRELEdBQTBEQSxFQUFFLENBQUN0UyxPQUEvRCxDQUFsQjtZQUNBd2EsZ0JBQWdCLENBQUMvZCxLQUFqQixHQUF5QixDQUFDOFYsRUFBRSxHQUFHM1QsR0FBRyxDQUFDSyxJQUFKLENBQVNBLElBQWYsTUFBeUIsSUFBekIsSUFBaUNzVCxFQUFFLEtBQUssS0FBSyxDQUE3QyxHQUFpRCxLQUFLLENBQXRELEdBQTBEQSxFQUFFLENBQUNyTSxPQUF0RjtVQUNIOztVQUNELElBQUksQ0FBQyxDQUFDcWlCLEVBQUUsR0FBRzNwQixHQUFHLENBQUNLLElBQUosQ0FBU0EsSUFBZixNQUF5QixJQUF6QixJQUFpQ3NwQixFQUFFLEtBQUssS0FBSyxDQUE3QyxHQUFpRCxLQUFLLENBQXRELEdBQTBEQSxFQUFFLENBQUNyaUIsT0FBOUQsTUFBMkUsWUFBL0UsRUFBNkY7WUFDekZ1VSxVQUFVLENBQUNoZSxLQUFYLEdBQW1CLElBQW5CO1VBQ0g7O1VBQ0QsSUFBSSxFQUFFLENBQUNnc0IsRUFBRSxHQUFHLENBQUNELEVBQUUsR0FBRzVwQixHQUFHLENBQUNLLElBQVYsTUFBb0IsSUFBcEIsSUFBNEJ1cEIsRUFBRSxLQUFLLEtBQUssQ0FBeEMsR0FBNEMsS0FBSyxDQUFqRCxHQUFxREEsRUFBRSxDQUFDdnBCLElBQTlELE1BQXdFLElBQXhFLElBQWdGd3BCLEVBQUUsS0FBSyxLQUFLLENBQTVGLEdBQWdHLEtBQUssQ0FBckcsR0FBeUdBLEVBQUUsQ0FBQ3pvQixPQUE5RyxLQUNBLENBQUMsQ0FBQzJvQixFQUFFLEdBQUcsQ0FBQ0QsRUFBRSxHQUFHOXBCLEdBQUcsQ0FBQ0ssSUFBVixNQUFvQixJQUFwQixJQUE0QnlwQixFQUFFLEtBQUssS0FBSyxDQUF4QyxHQUE0QyxLQUFLLENBQWpELEdBQXFEQSxFQUFFLENBQUN6cEIsSUFBOUQsTUFBd0UsSUFBeEUsSUFBZ0YwcEIsRUFBRSxLQUFLLEtBQUssQ0FBNUYsR0FBZ0csS0FBSyxDQUFyRyxHQUF5R0EsRUFBRSxDQUFDemlCLE9BQTdHLE1BQTBILFVBRDlILEVBQzBJO1lBQ3RJK2hCLGNBQWMsQ0FBQ3hyQixLQUFmLEdBQXVCLElBQXZCO1lBQ0FpTyxhQUFhLENBQUM0ZCxXQUFELENBQWI7VUFDSDtRQUNKLENBdkJEO01Bd0JILENBekI0QixFQXlCMUIsSUF6QjBCLENBQTdCO0lBMEJILENBM0JEOztJQTRCQSxDQUFDLEdBQUc1ckIsS0FBSyxDQUFDZ0osS0FBVixFQUFpQixZQUFZO01BQUUsT0FBT25JLEtBQUssQ0FBQ29JLEtBQU4sQ0FBWW1qQixnQkFBbkI7SUFBc0MsQ0FBckUsRUFBdUUsVUFBVXJzQixLQUFWLEVBQWlCO01BQ3BGbWpCLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLDJCQUFaOztNQUNBLElBQUlwakIsS0FBSixFQUFXO1FBQ1Bzc0IsbUJBQW1CO01BQ3RCO0lBQ0osQ0FMRCxFQUtHO01BQUVwYyxJQUFJLEVBQUU7SUFBUixDQUxIO0lBTUEsQ0FBQyxHQUFHalEsS0FBSyxDQUFDZ0osS0FBVixFQUFpQixZQUFZO01BQUUsT0FBTyxDQUFDbkksS0FBSyxDQUFDb0ksS0FBTixDQUFZd1YsZ0JBQWIsRUFBK0I1ZCxLQUFLLENBQUNvSSxLQUFOLENBQVlvRSxxQkFBM0MsQ0FBUDtJQUEyRSxDQUExRyxFQUE0RyxVQUFVdE4sS0FBVixFQUFpQjtNQUN6SCxJQUFJQSxLQUFKLEVBQVc7UUFDUDBlLGdCQUFnQixDQUFDMWUsS0FBakIsR0FBeUIsSUFBekI7UUFDQWtMLG9CQUFvQixDQUFDbEwsS0FBckIsR0FDSWMsS0FBSyxDQUFDb0ksS0FBTixDQUFZb0UscUJBQVosQ0FBa0NwQyxvQkFEdEM7UUFFQTtNQUNIOztNQUNEd1QsZ0JBQWdCLENBQUMxZSxLQUFqQixHQUF5QixLQUF6QjtJQUNILENBUkQsRUFRRztNQUFFa1EsSUFBSSxFQUFFO0lBQVIsQ0FSSDtJQVNBLENBQUMsR0FBR2pRLEtBQUssQ0FBQ2dKLEtBQVYsRUFBaUIsWUFBWTtNQUFFLE9BQU9uSSxLQUFLLENBQUNvSSxLQUFOLENBQVk4VixtQkFBbkI7SUFBeUMsQ0FBeEUsRUFBMEUsVUFBVWhmLEtBQVYsRUFBaUI7TUFDdkYsSUFBSUEsS0FBSixFQUFXO1FBQ1BzZSxpQkFBaUIsQ0FBQ3RlLEtBQWxCLEdBQTBCLElBQTFCO1FBQ0FjLEtBQUssQ0FBQ1ksUUFBTixDQUFlLHdCQUFmLEVBQXlDLEtBQXpDO01BQ0g7SUFDSixDQUxELEVBS0c7TUFBRXdPLElBQUksRUFBRTtJQUFSLENBTEg7SUFNQSxDQUFDLEdBQUdqUSxLQUFLLENBQUNnSixLQUFWLEVBQWlCLFlBQVk7TUFBRSxPQUFPbkksS0FBSyxDQUFDb0ksS0FBTixDQUFZcWpCLGFBQW5CO0lBQW1DLENBQWxFLEVBQW9FLFVBQVV2c0IsS0FBVixFQUFpQjtNQUNqRixJQUFJQSxLQUFKLEVBQVc7UUFDUHdzQixjQUFjO01BQ2pCO0lBQ0osQ0FKRDs7SUFLQSxJQUFJQSxjQUFjLEdBQUcsU0FBakJBLGNBQWlCLEdBQVk7TUFDN0Jsc0IsT0FBTyxXQUFQLENBQWdCK0MsR0FBaEIsQ0FBb0IsNkJBQXBCLEVBQW1EbkIsSUFBbkQsQ0FBd0QsVUFBVUMsR0FBVixFQUFlO1FBQ25FLElBQUl2QixFQUFKLEVBQVF5RyxFQUFSLEVBQVkrQixFQUFaLEVBQWdCeU0sRUFBaEIsRUFBb0JDLEVBQXBCLEVBQXdCZ1csRUFBeEIsRUFBNEJDLEVBQTVCLEVBQWdDQyxFQUFoQzs7UUFDQTVPLFlBQVksQ0FBQ3BkLEtBQWIsR0FBcUIsQ0FBQ3FILEVBQUUsR0FBRyxDQUFDekcsRUFBRSxHQUFHdUIsR0FBRyxLQUFLLElBQVIsSUFBZ0JBLEdBQUcsS0FBSyxLQUFLLENBQTdCLEdBQWlDLEtBQUssQ0FBdEMsR0FBMENBLEdBQUcsQ0FBQ0ssSUFBcEQsTUFBOEQsSUFBOUQsSUFBc0U1QixFQUFFLEtBQUssS0FBSyxDQUFsRixHQUFzRixLQUFLLENBQTNGLEdBQStGQSxFQUFFLENBQUMwSyxNQUF4RyxNQUFvSCxJQUFwSCxJQUE0SGpFLEVBQUUsS0FBSyxLQUFLLENBQXhJLEdBQTRJLEtBQUssQ0FBakosR0FBcUpBLEVBQUUsQ0FBQ29sQixRQUE3SztRQUNBck8sT0FBTyxDQUFDcGUsS0FBUixHQUFnQkgsTUFBTSxDQUFDMFAsSUFBUCxDQUFZcE4sR0FBRyxDQUFDSyxJQUFKLENBQVM4SSxNQUFyQixFQUE2QmxGLE1BQTdCLEdBQXNDLENBQXREOztRQUNBLElBQUksQ0FBQyxDQUFDeVAsRUFBRSxHQUFHLENBQUN6TSxFQUFFLEdBQUdqSCxHQUFHLEtBQUssSUFBUixJQUFnQkEsR0FBRyxLQUFLLEtBQUssQ0FBN0IsR0FBaUMsS0FBSyxDQUF0QyxHQUEwQ0EsR0FBRyxDQUFDSyxJQUFwRCxNQUE4RCxJQUE5RCxJQUFzRTRHLEVBQUUsS0FBSyxLQUFLLENBQWxGLEdBQXNGLEtBQUssQ0FBM0YsR0FBK0ZBLEVBQUUsQ0FBQ2tDLE1BQXhHLE1BQW9ILElBQXBILElBQTRIdUssRUFBRSxLQUFLLEtBQUssQ0FBeEksR0FBNEksS0FBSyxDQUFqSixHQUFxSkEsRUFBRSxDQUFDdkssTUFBekosTUFBcUssV0FBekssRUFBc0w7VUFDbExrZ0IsY0FBYyxDQUFDeHJCLEtBQWYsR0FBdUIsSUFBdkI7UUFDSCxDQUZELE1BR0ssSUFBSSxDQUFDLENBQUM4ckIsRUFBRSxHQUFHLENBQUNoVyxFQUFFLEdBQUczVCxHQUFHLEtBQUssSUFBUixJQUFnQkEsR0FBRyxLQUFLLEtBQUssQ0FBN0IsR0FBaUMsS0FBSyxDQUF0QyxHQUEwQ0EsR0FBRyxDQUFDSyxJQUFwRCxNQUE4RCxJQUE5RCxJQUFzRXNULEVBQUUsS0FBSyxLQUFLLENBQWxGLEdBQXNGLEtBQUssQ0FBM0YsR0FBK0ZBLEVBQUUsQ0FBQ3hLLE1BQXhHLE1BQW9ILElBQXBILElBQTRId2dCLEVBQUUsS0FBSyxLQUFLLENBQXhJLEdBQTRJLEtBQUssQ0FBakosR0FBcUpBLEVBQUUsQ0FBQ3hnQixNQUF6SixNQUFxSyxRQUF6SyxFQUFtTDtVQUNwTGlTLFNBQVMsQ0FBQ3ZkLEtBQVYsR0FBa0IsSUFBbEI7VUFDQStkLGdCQUFnQixDQUFDL2QsS0FBakIsR0FBeUIsQ0FBQ2dzQixFQUFFLEdBQUcsQ0FBQ0QsRUFBRSxHQUFHNXBCLEdBQUcsS0FBSyxJQUFSLElBQWdCQSxHQUFHLEtBQUssS0FBSyxDQUE3QixHQUFpQyxLQUFLLENBQXRDLEdBQTBDQSxHQUFHLENBQUNLLElBQXBELE1BQThELElBQTlELElBQXNFdXBCLEVBQUUsS0FBSyxLQUFLLENBQWxGLEdBQXNGLEtBQUssQ0FBM0YsR0FBK0ZBLEVBQUUsQ0FBQ3pnQixNQUF4RyxNQUFvSCxJQUFwSCxJQUE0SDBnQixFQUFFLEtBQUssS0FBSyxDQUF4SSxHQUE0SSxLQUFLLENBQWpKLEdBQXFKQSxFQUFFLENBQUN2aUIsT0FBakw7UUFDSCxDQUhJLE1BSUEsSUFBSTVKLE1BQU0sQ0FBQzBQLElBQVAsQ0FBWXBOLEdBQUcsQ0FBQ0ssSUFBSixDQUFTOEksTUFBckIsRUFBNkJsRixNQUE3QixHQUFzQyxDQUExQyxFQUE2QztVQUM5QztZQUNJO1lBQ0FpWCxVQUFVLENBQUNyZCxLQUFYLEdBQW1CLElBQW5CO1lBQ0FnZSxVQUFVLENBQUNoZSxLQUFYLEdBQW1CLEtBQW5CO1lBQ0FzZCxjQUFjLENBQUN0ZCxLQUFmLEdBQXVCLENBQXZCO1lBQ0F1ZCxTQUFTLENBQUN2ZCxLQUFWLEdBQWtCLEtBQWxCO1lBQ0ErZCxnQkFBZ0IsQ0FBQy9kLEtBQWpCLEdBQXlCLEVBQXpCO1lBQ0E0ckIsbUJBQW1CO1VBQ3RCO1FBQ0o7TUFDSixDQXRCRDtJQXVCSCxDQXhCRDs7SUF5QkEsSUFBSVUsbUJBQW1CLEdBQUcsU0FBdEJBLG1CQUFzQixHQUFZO01BQ2xDN04sV0FBVyxDQUFDemUsS0FBWixHQUFvQixLQUFwQjtNQUNBLElBQUkwc0IsYUFBYSxHQUFHM2UsV0FBVyxDQUFDLFlBQVk7UUFDeEN6TixPQUFPLFdBQVAsQ0FBZ0IrQyxHQUFoQixDQUFvQiwwQ0FBcEIsRUFBZ0VuQixJQUFoRSxDQUFxRSxVQUFVQyxHQUFWLEVBQWU7VUFDaEZ1QixTQUFTLENBQUMxRCxLQUFWLEdBQWtCbUMsR0FBRyxDQUFDSyxJQUFKLENBQVNtcUIsVUFBM0I7VUFDQXZwQixpQkFBaUIsQ0FBQ3BELEtBQWxCLEdBQTBCbUMsR0FBRyxDQUFDSyxJQUFKLENBQVM4SSxNQUFuQztVQUNBekosY0FBYyxDQUFDN0IsS0FBZixHQUF1Qm1DLEdBQUcsQ0FBQ0ssSUFBSixDQUFTUixHQUFoQztVQUNBeWMsV0FBVyxDQUFDemUsS0FBWixHQUFvQixDQUFDLENBQUNtQyxHQUFHLENBQUNLLElBQUosQ0FBUzhJLE1BQS9COztVQUNBLElBQUlsSSxpQkFBaUIsQ0FBQ3BELEtBQWxCLEtBQTRCLFdBQTVCLElBQ0FvRCxpQkFBaUIsQ0FBQ3BELEtBQWxCLEtBQTRCLFFBRDVCLElBRUEsQ0FBQ21DLEdBQUcsQ0FBQ0ssSUFBSixDQUFTOEksTUFGZCxFQUVzQjtZQUNsQjJDLGFBQWEsQ0FBQ3llLGFBQUQsQ0FBYjtVQUNIO1FBQ0osQ0FWRDtNQVdILENBWjhCLEVBWTVCLElBWjRCLENBQS9CO0lBYUgsQ0FmRDs7SUFnQkEsQ0FBQyxHQUFHenNCLEtBQUssQ0FBQ2dKLEtBQVYsRUFBaUIsWUFBWTtNQUFFLE9BQU9uSSxLQUFLLENBQUNvSSxLQUFOLENBQVlxakIsYUFBbkI7SUFBbUMsQ0FBbEUsRUFBb0UsWUFBWTtNQUM1RUQsbUJBQW1CO0lBQ3RCLENBRkQ7SUFHQSxDQUFDLEdBQUdyc0IsS0FBSyxDQUFDa0IsU0FBVixFQUFxQixZQUFZO01BQzdCLElBQUlQLEVBQUo7O01BQ0FzSyxvQkFBb0IsQ0FBQ2xMLEtBQXJCLEdBQTZCLENBQUNZLEVBQUUsR0FBR29LLEVBQUUsQ0FBQ2hMLEtBQVQsTUFBb0IsSUFBcEIsSUFBNEJZLEVBQUUsS0FBSyxLQUFLLENBQXhDLEdBQTRDLEtBQUssQ0FBakQsR0FBcURBLEVBQUUsQ0FBQ3NLLG9CQUFyRjtNQUNBc2hCLGNBQWM7TUFDZEYsbUJBQW1COztNQUNuQixJQUFJM2xCLEtBQUssQ0FBQzZDLEtBQU4sQ0FBWUMsT0FBWixLQUF3QixFQUE1QixFQUFnQztRQUM1Qm9OLFNBQVMsQ0FBQ2hRLElBQVYsR0FBaUJGLEtBQUssQ0FBQzZDLEtBQU4sQ0FBWTNDLElBQTdCO1FBQ0FnUSxTQUFTLENBQUMxSSxVQUFWLEdBQXVCLElBQXZCO1FBQ0EwSSxTQUFTLENBQUNwTixPQUFWLEdBQW9COUMsS0FBSyxDQUFDNkMsS0FBTixDQUFZQyxPQUFoQztNQUNIO0lBQ0osQ0FWRDtJQVdBLENBQUMsR0FBR3hKLEtBQUssQ0FBQ2tCLFNBQVYsRUFBcUIsWUFBWTtNQUFFLE9BQU82QyxTQUFTLENBQUNtTixLQUFELEVBQVEsS0FBSyxDQUFiLEVBQWdCLEtBQUssQ0FBckIsRUFBd0IsWUFBWTtRQUNuRixPQUFPbE0sV0FBVyxDQUFDLElBQUQsRUFBTyxVQUFVckUsRUFBVixFQUFjO1VBQ25DOHFCLFdBQVcsQ0FBQzFyQixLQUFaLEdBQW9CLElBQXBCO1VBQ0FNLE9BQU8sV0FBUCxDQUFnQitDLEdBQWhCLENBQW9CbUwsUUFBcEIsRUFBOEJ0TSxJQUE5QixDQUFtQyxVQUFVQyxHQUFWLEVBQWU7WUFDOUMsSUFBSXlMLFFBQVEsR0FBR3pMLEdBQUcsQ0FBQ0ssSUFBbkI7WUFDQTNDLE1BQU0sQ0FBQ29RLE1BQVAsQ0FBY3hDLFVBQWQsRUFBMEJHLFFBQVEsQ0FBQ3BMLElBQW5DO1lBQ0F0QixTQUFTLENBQUNsQixLQUFWLEdBQWtCLEtBQWxCO1lBQ0EwckIsV0FBVyxDQUFDMXJCLEtBQVosR0FBb0IsS0FBcEI7O1lBQ0EsSUFBSTJyQixpQkFBSixFQUF1QjtjQUNuQmxWLE9BQU8sQ0FBQ3pXLEtBQVIsR0FBZ0IsQ0FBQzROLFFBQVEsQ0FBQ3BMLElBQVQsQ0FBY0EsSUFBZCxDQUFtQjRELE1BQXBDO1lBQ0g7VUFDSixDQVJEO1VBU0EsT0FBTyxDQUFDO1VBQUU7VUFBSCxDQUFQO1FBQ0gsQ0FaaUIsQ0FBbEI7TUFhSCxDQWRrRCxDQUFoQjtJQWM5QixDQWRMO0lBZUEsQ0FBQyxHQUFHbkcsS0FBSyxDQUFDZ0osS0FBVixFQUFpQixZQUFZO01BQUUsT0FBTzROLFNBQVMsQ0FBQzFJLFVBQWpCO0lBQThCLENBQTdELEVBQStELFlBQVk7TUFDdkV6RSxVQUFVLENBQUMsWUFBWTtRQUNuQm1OLFNBQVMsQ0FBQzFJLFVBQVYsR0FBdUIsS0FBdkI7UUFDQSthLGlCQUFpQjtNQUNwQixDQUhTLEVBR1AsS0FITyxDQUFWO0lBSUgsQ0FMRDtJQU1BLElBQUloZ0IsS0FBSyxHQUFHLENBQUMsR0FBR2pKLEtBQUssQ0FBQ2dJLFFBQVYsRUFBb0I7TUFDNUIya0IsV0FBVyxFQUFFO0lBRGUsQ0FBcEIsQ0FBWjtJQUdBLElBQUluVyxPQUFPLEdBQUcsQ0FBQyxHQUFHeFcsS0FBSyxDQUFDZ0IsR0FBVixFQUFlLEtBQWYsQ0FBZDs7SUFDQSxJQUFJNHJCLFVBQVUsR0FBRyxTQUFiQSxVQUFhLENBQVVycUIsSUFBVixFQUFnQjtNQUM3QixJQUFJQSxJQUFJLEtBQUssS0FBSyxDQUFsQixFQUFxQjtRQUFFQSxJQUFJLEdBQUcwVixLQUFQO01BQWU7O01BQ3RDLElBQUkxVixJQUFJLENBQUM0RCxNQUFMLEdBQWMsQ0FBbEIsRUFBcUI7UUFDakI4QyxLQUFLLENBQUMwakIsV0FBTixHQUFvQixJQUFwQjtNQUNILENBRkQsTUFHSztRQUNEMWpCLEtBQUssQ0FBQzBqQixXQUFOLEdBQW9CLEtBQXBCO01BQ0g7SUFDSixDQVJEOztJQVNBLFNBQVNFLGVBQVQsQ0FBeUJsUyxXQUF6QixFQUFzQztNQUNsQzhRLFdBQVcsQ0FBQzFyQixLQUFaLEdBQW9CLElBQXBCO01BQ0EsSUFBSXlMLFdBQVcsR0FBRyxFQUFsQjs7TUFDQSxJQUFJRCxVQUFVLENBQUNULFFBQVgsQ0FBb0IsR0FBcEIsQ0FBSixFQUE4QjtRQUMxQlUsV0FBVyxHQUFHN0ksTUFBTSxDQUFDOEgsUUFBUCxDQUFnQmdCLE1BQTlCO01BQ0g7O01BQ0RwTCxPQUFPLFdBQVAsQ0FBZ0IrQyxHQUFoQixDQUFvQixzQkFBc0J1WCxXQUF0QixHQUFvQ25QLFdBQXhELEVBQXFFdkosSUFBckUsQ0FBMEUsVUFBVUMsR0FBVixFQUFlO1FBQ3JGLElBQUl5TCxRQUFRLEdBQUd6TCxHQUFHLENBQUNLLElBQW5CO1FBQ0EzQyxNQUFNLENBQUNvUSxNQUFQLENBQWN4QyxVQUFkLEVBQTBCRyxRQUFRLENBQUNwTCxJQUFuQztRQUNBaVUsT0FBTyxDQUFDelcsS0FBUixHQUFnQixDQUFDNE4sUUFBUSxDQUFDcEwsSUFBMUI7TUFDSCxDQUpEO01BS0FrcEIsV0FBVyxDQUFDMXJCLEtBQVosR0FBb0IsS0FBcEI7SUFDSDs7SUFDRCxJQUFJK3BCLGFBQWEsR0FBRyxDQUFDLEdBQUd4akIsTUFBTSxDQUFDeWpCLGNBQVgsRUFBMkJuVCxTQUEzQixFQUFzQyxZQUFZO01BQUUsT0FBT29ULFNBQVA7SUFBbUIsQ0FBdkUsRUFBeUU7TUFDekZDLEtBQUssRUFBRTtJQURrRixDQUF6RSxFQUVqQkgsYUFGSDs7SUFHQSxJQUFJYixpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQW9CLEdBQVk7TUFDaENhLGFBQWEsQ0FBQyxZQUFZO1FBQ3RCbFQsU0FBUyxDQUFDcE4sT0FBVixHQUFvQixFQUFwQjtNQUNILENBRlksQ0FBYjtJQUdILENBSkQsQ0F2Tm9CLENBNE5wQjtJQUNBOzs7SUFDQSxJQUFJK0QsZUFBZSxHQUFHLENBQUMsR0FBR3ZOLEtBQUssQ0FBQ2dJLFFBQVYsRUFBb0I7TUFDdENrRyxVQUFVLEVBQUUsS0FEMEI7TUFFdENDLGtCQUFrQixFQUFFLElBRmtCO01BR3RDQyxjQUFjLEVBQUU5RyxTQUFTLENBQUMrRyxLQUFWLENBQWdCLDBDQUFoQjtJQUhzQixDQUFwQixDQUF0QjtJQUtBO0FBQ1I7QUFDQTs7SUFDUSxDQUFDLEdBQUdyTyxLQUFLLENBQUNrcUIsT0FBVixFQUFtQixjQUFuQixFQUFtQ3BpQixZQUFuQztJQUNBLENBQUMsR0FBRzlILEtBQUssQ0FBQ2txQixPQUFWLEVBQW1CLFdBQW5CLEVBQWdDdFQsU0FBaEM7SUFDQSxDQUFDLEdBQUc1VyxLQUFLLENBQUNrcUIsT0FBVixFQUFtQixXQUFuQixFQUFnQ3JULFNBQWhDO0lBQ0EsQ0FBQyxHQUFHN1csS0FBSyxDQUFDa3FCLE9BQVYsRUFBbUIsaUJBQW5CLEVBQXNDM2MsZUFBdEM7SUFDQSxDQUFDLEdBQUd2TixLQUFLLENBQUNrcUIsT0FBVixFQUFtQixrQkFBbkIsRUFBdUNwTSxnQkFBdkM7SUFDQSxDQUFDLEdBQUc5ZCxLQUFLLENBQUNrcUIsT0FBVixFQUFtQixZQUFuQixFQUFpQ25NLFVBQWpDO0lBQ0EsQ0FBQyxHQUFHL2QsS0FBSyxDQUFDa3FCLE9BQVYsRUFBbUIsYUFBbkIsRUFBa0MxTCxXQUFsQztJQUNBLENBQUMsR0FBR3hlLEtBQUssQ0FBQ2txQixPQUFWLEVBQW1CLFdBQW5CLEVBQWdDem1CLFNBQWhDO0lBQ0EsQ0FBQyxHQUFHekQsS0FBSyxDQUFDa3FCLE9BQVYsRUFBbUIsbUJBQW5CLEVBQXdDL21CLGlCQUF4QztJQUNBLENBQUMsR0FBR25ELEtBQUssQ0FBQ2txQixPQUFWLEVBQW1CLGdCQUFuQixFQUFxQ3RvQixjQUFyQztJQUNBLENBQUMsR0FBRzVCLEtBQUssQ0FBQ2txQixPQUFWLEVBQW1CLFlBQW5CLEVBQWlDb0IsVUFBakM7SUFDQSxDQUFDLEdBQUd0ckIsS0FBSyxDQUFDa3FCLE9BQVYsRUFBbUIsWUFBbkIsRUFBaUNqZixvQkFBakM7SUFDQSxDQUFDLEdBQUdqTCxLQUFLLENBQUNrcUIsT0FBVixFQUFtQixXQUFuQixFQUFnQ3FCLGNBQWhDO0lBQ0EsT0FBTztNQUNIL2QsVUFBVSxFQUFFQSxVQURUO01BRUh2RSxLQUFLLEVBQUVBLEtBRko7TUFHSHVOLE9BQU8sRUFBRUEsT0FITjtNQUlIdlYsU0FBUyxFQUFFQSxTQUpSO01BS0gyckIsVUFBVSxFQUFFQSxVQUxUO01BTUhDLGVBQWUsRUFBRUEsZUFOZDtNQU9IalcsU0FBUyxFQUFFQSxTQVBSO01BUUg5TyxZQUFZLEVBQUVBLFlBUlg7TUFTSHlGLGVBQWUsRUFBRUEsZUFUZDtNQVVIc0osU0FBUyxFQUFFQSxTQVZSO01BV0g0VSxXQUFXLEVBQUVBLFdBWFY7TUFZSG5rQixTQUFTLEVBQUVBLFNBWlI7TUFhSDZXLE9BQU8sRUFBRUEsT0FiTjtNQWNIaEIsWUFBWSxFQUFFQSxZQWRYO01BZUhFLGNBQWMsRUFBRUEsY0FmYjtNQWdCSEQsVUFBVSxFQUFFQSxVQWhCVDtNQWlCSGdCLGFBQWEsRUFBRUEsYUFqQlo7TUFrQkhkLFNBQVMsRUFBRUEsU0FsQlI7TUFtQkhRLGdCQUFnQixFQUFFQSxnQkFuQmY7TUFvQkgwTixlQUFlLEVBQUVBLGVBcEJkO01BcUJIbk4saUJBQWlCLEVBQUVBLGlCQXJCaEI7TUFzQkhrTixjQUFjLEVBQUVBLGNBdEJiO01BdUJIL00sV0FBVyxFQUFFQSxXQXZCVjtNQXdCSEMsZ0JBQWdCLEVBQUVBLGdCQXhCZjtNQXlCSHhULG9CQUFvQixFQUFFQSxvQkF6Qm5CO01BMEJIOGYsYUFBYSxFQUFFQSxhQTFCWjtNQTJCSGhnQixFQUFFLEVBQUVBO0lBM0JELENBQVA7RUE2Qkg7QUFqU3dDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ3pEYTs7QUFDYixJQUFJaEgsU0FBUyxHQUFJLFFBQVEsS0FBS0EsU0FBZCxJQUE0QixVQUFVQyxPQUFWLEVBQW1CQyxVQUFuQixFQUErQkMsQ0FBL0IsRUFBa0NDLFNBQWxDLEVBQTZDO0VBQ3JGLFNBQVNDLEtBQVQsQ0FBZXJFLEtBQWYsRUFBc0I7SUFBRSxPQUFPQSxLQUFLLFlBQVltRSxDQUFqQixHQUFxQm5FLEtBQXJCLEdBQTZCLElBQUltRSxDQUFKLENBQU0sVUFBVUcsT0FBVixFQUFtQjtNQUFFQSxPQUFPLENBQUN0RSxLQUFELENBQVA7SUFBaUIsQ0FBNUMsQ0FBcEM7RUFBb0Y7O0VBQzVHLE9BQU8sS0FBS21FLENBQUMsS0FBS0EsQ0FBQyxHQUFHSSxPQUFULENBQU4sRUFBeUIsVUFBVUQsT0FBVixFQUFtQkUsTUFBbkIsRUFBMkI7SUFDdkQsU0FBU0MsU0FBVCxDQUFtQnpFLEtBQW5CLEVBQTBCO01BQUUsSUFBSTtRQUFFMEUsSUFBSSxDQUFDTixTQUFTLENBQUNPLElBQVYsQ0FBZTNFLEtBQWYsQ0FBRCxDQUFKO01BQThCLENBQXBDLENBQXFDLE9BQU80RSxDQUFQLEVBQVU7UUFBRUosTUFBTSxDQUFDSSxDQUFELENBQU47TUFBWTtJQUFFOztJQUMzRixTQUFTQyxRQUFULENBQWtCN0UsS0FBbEIsRUFBeUI7TUFBRSxJQUFJO1FBQUUwRSxJQUFJLENBQUNOLFNBQVMsQ0FBQyxPQUFELENBQVQsQ0FBbUJwRSxLQUFuQixDQUFELENBQUo7TUFBa0MsQ0FBeEMsQ0FBeUMsT0FBTzRFLENBQVAsRUFBVTtRQUFFSixNQUFNLENBQUNJLENBQUQsQ0FBTjtNQUFZO0lBQUU7O0lBQzlGLFNBQVNGLElBQVQsQ0FBY0ksTUFBZCxFQUFzQjtNQUFFQSxNQUFNLENBQUNDLElBQVAsR0FBY1QsT0FBTyxDQUFDUSxNQUFNLENBQUM5RSxLQUFSLENBQXJCLEdBQXNDcUUsS0FBSyxDQUFDUyxNQUFNLENBQUM5RSxLQUFSLENBQUwsQ0FBb0JrQyxJQUFwQixDQUF5QnVDLFNBQXpCLEVBQW9DSSxRQUFwQyxDQUF0QztJQUFzRjs7SUFDOUdILElBQUksQ0FBQyxDQUFDTixTQUFTLEdBQUdBLFNBQVMsQ0FBQ1ksS0FBVixDQUFnQmYsT0FBaEIsRUFBeUJDLFVBQVUsSUFBSSxFQUF2QyxDQUFiLEVBQXlEUyxJQUF6RCxFQUFELENBQUo7RUFDSCxDQUxNLENBQVA7QUFNSCxDQVJEOztBQVNBLElBQUlNLFdBQVcsR0FBSSxRQUFRLEtBQUtBLFdBQWQsSUFBOEIsVUFBVWhCLE9BQVYsRUFBbUJqQixJQUFuQixFQUF5QjtFQUNyRSxJQUFJa0MsQ0FBQyxHQUFHO0lBQUVDLEtBQUssRUFBRSxDQUFUO0lBQVlDLElBQUksRUFBRSxnQkFBVztNQUFFLElBQUlDLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBTyxDQUFYLEVBQWMsTUFBTUEsQ0FBQyxDQUFDLENBQUQsQ0FBUDtNQUFZLE9BQU9BLENBQUMsQ0FBQyxDQUFELENBQVI7SUFBYyxDQUF2RTtJQUF5RUMsSUFBSSxFQUFFLEVBQS9FO0lBQW1GQyxHQUFHLEVBQUU7RUFBeEYsQ0FBUjtFQUFBLElBQXNHQyxDQUF0RztFQUFBLElBQXlHQyxDQUF6RztFQUFBLElBQTRHSixDQUE1RztFQUFBLElBQStHSyxDQUEvRztFQUNBLE9BQU9BLENBQUMsR0FBRztJQUFFZixJQUFJLEVBQUVnQixJQUFJLENBQUMsQ0FBRCxDQUFaO0lBQWlCLFNBQVNBLElBQUksQ0FBQyxDQUFELENBQTlCO0lBQW1DLFVBQVVBLElBQUksQ0FBQyxDQUFEO0VBQWpELENBQUosRUFBNEQsT0FBT0MsTUFBUCxLQUFrQixVQUFsQixLQUFpQ0YsQ0FBQyxDQUFDRSxNQUFNLENBQUNDLFFBQVIsQ0FBRCxHQUFxQixZQUFXO0lBQUUsT0FBTyxJQUFQO0VBQWMsQ0FBakYsQ0FBNUQsRUFBZ0pILENBQXZKOztFQUNBLFNBQVNDLElBQVQsQ0FBY0csQ0FBZCxFQUFpQjtJQUFFLE9BQU8sVUFBVUMsQ0FBVixFQUFhO01BQUUsT0FBT3JCLElBQUksQ0FBQyxDQUFDb0IsQ0FBRCxFQUFJQyxDQUFKLENBQUQsQ0FBWDtJQUFzQixDQUE1QztFQUErQzs7RUFDbEUsU0FBU3JCLElBQVQsQ0FBY3NCLEVBQWQsRUFBa0I7SUFDZCxJQUFJUixDQUFKLEVBQU8sTUFBTSxJQUFJUyxTQUFKLENBQWMsaUNBQWQsQ0FBTjs7SUFDUCxPQUFPUCxDQUFDLEtBQUtBLENBQUMsR0FBRyxDQUFKLEVBQU9NLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVWQsQ0FBQyxHQUFHLENBQWQsQ0FBWixDQUFELEVBQWdDQSxDQUF2QztNQUEwQyxJQUFJO1FBQzFDLElBQUlNLENBQUMsR0FBRyxDQUFKLEVBQU9DLENBQUMsS0FBS0osQ0FBQyxHQUFHVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVEsQ0FBUixHQUFZUCxDQUFDLENBQUMsUUFBRCxDQUFiLEdBQTBCTyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFQLENBQUMsQ0FBQyxPQUFELENBQUQsS0FBZSxDQUFDSixDQUFDLEdBQUdJLENBQUMsQ0FBQyxRQUFELENBQU4sS0FBcUJKLENBQUMsQ0FBQ2EsSUFBRixDQUFPVCxDQUFQLENBQXJCLEVBQWdDLENBQS9DLENBQVIsR0FBNERBLENBQUMsQ0FBQ2QsSUFBakcsQ0FBRCxJQUEyRyxDQUFDLENBQUNVLENBQUMsR0FBR0EsQ0FBQyxDQUFDYSxJQUFGLENBQU9ULENBQVAsRUFBVU8sRUFBRSxDQUFDLENBQUQsQ0FBWixDQUFMLEVBQXVCakIsSUFBOUksRUFBb0osT0FBT00sQ0FBUDtRQUNwSixJQUFJSSxDQUFDLEdBQUcsQ0FBSixFQUFPSixDQUFYLEVBQWNXLEVBQUUsR0FBRyxDQUFDQSxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVEsQ0FBVCxFQUFZWCxDQUFDLENBQUNyRixLQUFkLENBQUw7O1FBQ2QsUUFBUWdHLEVBQUUsQ0FBQyxDQUFELENBQVY7VUFDSSxLQUFLLENBQUw7VUFBUSxLQUFLLENBQUw7WUFBUVgsQ0FBQyxHQUFHVyxFQUFKO1lBQVE7O1VBQ3hCLEtBQUssQ0FBTDtZQUFRZCxDQUFDLENBQUNDLEtBQUY7WUFBVyxPQUFPO2NBQUVuRixLQUFLLEVBQUVnRyxFQUFFLENBQUMsQ0FBRCxDQUFYO2NBQWdCakIsSUFBSSxFQUFFO1lBQXRCLENBQVA7O1VBQ25CLEtBQUssQ0FBTDtZQUFRRyxDQUFDLENBQUNDLEtBQUY7WUFBV00sQ0FBQyxHQUFHTyxFQUFFLENBQUMsQ0FBRCxDQUFOO1lBQVdBLEVBQUUsR0FBRyxDQUFDLENBQUQsQ0FBTDtZQUFVOztVQUN4QyxLQUFLLENBQUw7WUFBUUEsRUFBRSxHQUFHZCxDQUFDLENBQUNLLEdBQUYsQ0FBTVksR0FBTixFQUFMOztZQUFrQmpCLENBQUMsQ0FBQ0ksSUFBRixDQUFPYSxHQUFQOztZQUFjOztVQUN4QztZQUNJLElBQUksRUFBRWQsQ0FBQyxHQUFHSCxDQUFDLENBQUNJLElBQU4sRUFBWUQsQ0FBQyxHQUFHQSxDQUFDLENBQUNlLE1BQUYsR0FBVyxDQUFYLElBQWdCZixDQUFDLENBQUNBLENBQUMsQ0FBQ2UsTUFBRixHQUFXLENBQVosQ0FBbkMsTUFBdURKLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFWLElBQWVBLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFoRixDQUFKLEVBQXdGO2NBQUVkLENBQUMsR0FBRyxDQUFKO2NBQU87WUFBVzs7WUFDNUcsSUFBSWMsRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVLENBQVYsS0FBZ0IsQ0FBQ1gsQ0FBRCxJQUFPVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFYLENBQUMsQ0FBQyxDQUFELENBQVQsSUFBZ0JXLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUVgsQ0FBQyxDQUFDLENBQUQsQ0FBaEQsQ0FBSixFQUEyRDtjQUFFSCxDQUFDLENBQUNDLEtBQUYsR0FBVWEsRUFBRSxDQUFDLENBQUQsQ0FBWjtjQUFpQjtZQUFROztZQUN0RixJQUFJQSxFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVUsQ0FBVixJQUFlZCxDQUFDLENBQUNDLEtBQUYsR0FBVUUsQ0FBQyxDQUFDLENBQUQsQ0FBOUIsRUFBbUM7Y0FBRUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQVg7Y0FBZ0JBLENBQUMsR0FBR1csRUFBSjtjQUFRO1lBQVE7O1lBQ3JFLElBQUlYLENBQUMsSUFBSUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQXBCLEVBQXlCO2NBQUVILENBQUMsQ0FBQ0MsS0FBRixHQUFVRSxDQUFDLENBQUMsQ0FBRCxDQUFYOztjQUFnQkgsQ0FBQyxDQUFDSyxHQUFGLENBQU1jLElBQU4sQ0FBV0wsRUFBWDs7Y0FBZ0I7WUFBUTs7WUFDbkUsSUFBSVgsQ0FBQyxDQUFDLENBQUQsQ0FBTCxFQUFVSCxDQUFDLENBQUNLLEdBQUYsQ0FBTVksR0FBTjs7WUFDVmpCLENBQUMsQ0FBQ0ksSUFBRixDQUFPYSxHQUFQOztZQUFjO1FBWHRCOztRQWFBSCxFQUFFLEdBQUdoRCxJQUFJLENBQUNrRCxJQUFMLENBQVVqQyxPQUFWLEVBQW1CaUIsQ0FBbkIsQ0FBTDtNQUNILENBakJ5QyxDQWlCeEMsT0FBT04sQ0FBUCxFQUFVO1FBQUVvQixFQUFFLEdBQUcsQ0FBQyxDQUFELEVBQUlwQixDQUFKLENBQUw7UUFBYWEsQ0FBQyxHQUFHLENBQUo7TUFBUSxDQWpCTyxTQWlCRTtRQUFFRCxDQUFDLEdBQUdILENBQUMsR0FBRyxDQUFSO01BQVk7SUFqQjFEOztJQWtCQSxJQUFJVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVEsQ0FBWixFQUFlLE1BQU1BLEVBQUUsQ0FBQyxDQUFELENBQVI7SUFBYSxPQUFPO01BQUVoRyxLQUFLLEVBQUVnRyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFBLEVBQUUsQ0FBQyxDQUFELENBQVYsR0FBZ0IsS0FBSyxDQUE5QjtNQUFpQ2pCLElBQUksRUFBRTtJQUF2QyxDQUFQO0VBQy9CO0FBQ0osQ0ExQkQ7O0FBMkJBLElBQUlyRixlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJRyxnQkFBZ0IsR0FBR1gsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHdGQUFELENBQVIsQ0FBdEM7O0FBQ0EsSUFBSXdZLHFCQUFxQixHQUFHaFosZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGtHQUFELENBQVIsQ0FBM0M7O0FBQ0EsSUFBSXFsQixhQUFhLEdBQUc3bEIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHFGQUFELENBQVIsQ0FBbkM7O0FBQ0EsSUFBSXNtQixlQUFlLEdBQUc5bUIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHNGQUFELENBQVIsQ0FBckM7O0FBQ0EsSUFBSXNXLFlBQVksR0FBRzlXLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxnRkFBRCxDQUFSLENBQWxDOztBQUNBLElBQUlJLE9BQU8sR0FBR1osZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRDQUFELENBQVIsQ0FBN0I7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNrTSxVQUFVLEVBQUU7SUFDUjVJLEtBQUssRUFBRXpELGdCQUFnQixXQURmO0lBRVJ3WixZQUFZLEVBQUVuQixxQkFBcUIsV0FGM0I7SUFHUndPLFNBQVMsRUFBRVYsZUFBZSxXQUhsQjtJQUlSRixXQUFXLEVBQUVmLGFBQWEsV0FKbEI7SUFLUnROLE1BQU0sRUFBRXpCLFlBQVk7RUFMWixDQUQ2QjtFQVF6QzdQLEtBQUssRUFBRTtJQUNIMkMsVUFBVSxFQUFFO01BQ1J6QyxJQUFJLEVBQUVLLE9BREU7TUFFUkosUUFBUSxFQUFFO0lBRkY7RUFEVCxDQVJrQztFQWN6Q21HLEtBQUssRUFBRSxDQUFDLFlBQUQsRUFBZSxPQUFmLENBZGtDO0VBZXpDdk0sS0FBSyxFQUFFLGVBQVVpRyxLQUFWLEVBQWlCL0YsRUFBakIsRUFBcUI7SUFDeEIsSUFBSXVRLEtBQUssR0FBRyxJQUFaOztJQUNBLElBQUlqRSxJQUFJLEdBQUd0TSxFQUFFLENBQUNzTSxJQUFkO0lBQ0EsSUFBSTNGLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJdWxCLFFBQVEsR0FBRyxDQUFDLEdBQUc5c0IsS0FBSyxDQUFDZ0ksUUFBVixFQUFvQjtNQUMvQnNVLFNBQVMsRUFBRSxFQURvQjtNQUUvQmhVLFFBQVEsRUFBRSxFQUZxQjtNQUcvQnlrQixtQkFBbUIsRUFBRTtJQUhVLENBQXBCLENBQWY7SUFLQSxJQUFJbFcsU0FBUyxHQUFHLENBQUMsR0FBRzdXLEtBQUssQ0FBQ2dJLFFBQVYsRUFBb0I7TUFDaENzVSxTQUFTLEVBQUUsRUFEcUI7TUFFaENoVSxRQUFRLEVBQUUsRUFGc0I7TUFHaEN5a0IsbUJBQW1CLEVBQUU7SUFIVyxDQUFwQixDQUFoQjtJQUtBLElBQUk3RyxnQkFBZ0IsR0FBRyxDQUFDLEdBQUdsbUIsS0FBSyxDQUFDZ0IsR0FBVixFQUFlLEtBQWYsQ0FBdkI7SUFDQSxJQUFJcUgsU0FBUyxHQUFHLENBQUMsR0FBR3JJLEtBQUssQ0FBQ2dJLFFBQVYsRUFBb0IsRUFBcEIsQ0FBaEI7SUFDQSxJQUFJbEIsWUFBWSxHQUFHLENBQUMsR0FBRzlHLEtBQUssQ0FBQ2dJLFFBQVYsRUFBb0IsRUFBcEIsQ0FBbkI7SUFDQSxDQUFDLEdBQUdoSSxLQUFLLENBQUNrQixTQUFWLEVBQXFCLFlBQVk7TUFBRSxPQUFPNkMsU0FBUyxDQUFDbU4sS0FBRCxFQUFRLEtBQUssQ0FBYixFQUFnQixLQUFLLENBQXJCLEVBQXdCLFlBQVk7UUFDbkYsT0FBT2xNLFdBQVcsQ0FBQyxJQUFELEVBQU8sVUFBVXJFLEVBQVYsRUFBYztVQUNuQ04sT0FBTyxXQUFQLENBQWdCK0MsR0FBaEIsQ0FBb0IsdUJBQXBCLEVBQTZDbkIsSUFBN0MsQ0FBa0QsVUFBVUMsR0FBVixFQUFlO1lBQzdELElBQUl5TCxRQUFRLEdBQUd6TCxHQUFHLENBQUNLLElBQW5CO1lBQ0EzQyxNQUFNLENBQUNvUSxNQUFQLENBQWMzSCxTQUFkLEVBQXlCc0YsUUFBUSxDQUFDcEwsSUFBVCxDQUFjOEYsU0FBdkM7WUFDQXpJLE1BQU0sQ0FBQ29RLE1BQVAsQ0FBY2xKLFlBQWQsRUFBNEI2RyxRQUFRLENBQUNwTCxJQUFULENBQWN1RSxZQUExQztVQUNILENBSkQ7VUFLQSxPQUFPLENBQUM7VUFBRTtVQUFILENBQVA7UUFDSCxDQVBpQixDQUFsQjtNQVFILENBVGtELENBQWhCO0lBUzlCLENBVEw7O0lBVUEsU0FBU2ttQixVQUFULEdBQXNCO01BQ2xCL2YsSUFBSSxDQUFDLFlBQUQsQ0FBSjtJQUNIOztJQUNELFNBQVNnZ0IsYUFBVCxHQUF5QjtNQUNyQi9HLGdCQUFnQixDQUFDbm1CLEtBQWpCLEdBQXlCLElBQXpCO01BQ0FNLE9BQU8sV0FBUCxDQUNLK0ssSUFETCxDQUNVLFdBRFYsRUFDdUIwaEIsUUFEdkIsRUFFSzdxQixJQUZMLENBRVUsVUFBVUMsR0FBVixFQUFlO1FBQ3JCLElBQUl5TCxRQUFRLEdBQUd6TCxHQUFHLENBQUNLLElBQW5CO1FBQ0EyakIsZ0JBQWdCLENBQUNubUIsS0FBakIsR0FBeUIsS0FBekI7O1FBQ0EsSUFBSTROLFFBQVEsQ0FBQ3JLLE9BQWIsRUFBc0I7VUFDbEIySixJQUFJLENBQUMsWUFBRCxDQUFKO1VBQ0F0SyxNQUFNLENBQUM4SCxRQUFQLENBQWdCL0gsSUFBaEIsR0FBdUIsYUFBYWYsTUFBYixDQUFvQmdNLFFBQVEsQ0FBQ3BMLElBQVQsQ0FBY2lHLEVBQWxDLENBQXZCO1FBQ0g7TUFDSixDQVRELFdBVVcsVUFBVTZGLEtBQVYsRUFBaUI7UUFDeEIsSUFBSWdPLE1BQU0sR0FBR2hPLEtBQUssQ0FBQ1YsUUFBTixDQUFlcEwsSUFBZixDQUFvQjhaLE1BQWpDO1FBQ0F4RixTQUFTLENBQUN5RixTQUFWLEdBQXNCRCxNQUFNLENBQUNDLFNBQVAsR0FBbUJELE1BQU0sQ0FBQ0MsU0FBUCxDQUFpQixDQUFqQixDQUFuQixHQUF5QyxFQUEvRDtRQUNBekYsU0FBUyxDQUFDdk8sUUFBVixHQUFxQitULE1BQU0sQ0FBQy9ULFFBQVAsR0FBa0IrVCxNQUFNLENBQUMvVCxRQUFQLENBQWdCLENBQWhCLENBQWxCLEdBQXVDLEVBQTVEO1FBQ0F1TyxTQUFTLENBQUNrVyxtQkFBVixHQUFnQzFRLE1BQU0sQ0FBQzBRLG1CQUFQLEdBQzFCMVEsTUFBTSxDQUFDMFEsbUJBQVAsQ0FBMkIsQ0FBM0IsQ0FEMEIsR0FFMUIsRUFGTjtRQUdBN0csZ0JBQWdCLENBQUNubUIsS0FBakIsR0FBeUIsS0FBekI7TUFDSCxDQWxCRDtJQW1CSDs7SUFDRCxPQUFPO01BQ0gyRyxLQUFLLEVBQUVBLEtBREo7TUFFSG9tQixRQUFRLEVBQUVBLFFBRlA7TUFHSGpXLFNBQVMsRUFBRUEsU0FIUjtNQUlIcVAsZ0JBQWdCLEVBQUVBLGdCQUpmO01BS0g3ZCxTQUFTLEVBQUVBLFNBTFI7TUFNSHZCLFlBQVksRUFBRUEsWUFOWDtNQU9Ia21CLFVBQVUsRUFBRUEsVUFQVDtNQVFIQyxhQUFhLEVBQUVBLGFBUlo7TUFTSDNsQixTQUFTLEVBQUVBO0lBVFIsQ0FBUDtFQVdIO0FBOUV3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNqRGE7O0FBQ2IxSCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlDLEtBQUssR0FBR0QsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLFdBRGlDO0VBRXpDa0csS0FBSyxFQUFFO0lBQ0huRSxJQUFJLEVBQUU7TUFBRXFFLElBQUksRUFBRWhILE1BQVI7TUFBZ0JpSCxRQUFRLEVBQUU7SUFBMUIsQ0FESDtJQUVIMkMsT0FBTyxFQUFFO01BQUU1QyxJQUFJLEVBQUV1SixNQUFSO01BQWdCLFdBQVM7SUFBekI7RUFGTixDQUZrQztFQU16QzFQLEtBQUssRUFBRSxlQUFVQyxPQUFWLEVBQW1CQyxFQUFuQixFQUF1QjtJQUMxQixJQUFJQyxNQUFNLEdBQUdELEVBQUUsQ0FBQ0MsTUFBaEI7SUFDQUEsTUFBTTtJQUNOLElBQUkwRyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSW1ZLGtCQUFrQixHQUFHLENBQUMsR0FBR3hmLEtBQUssQ0FBQ3dELE1BQVYsRUFBa0Isb0JBQWxCLENBQXpCO0lBQ0EsSUFBSW9mLE1BQU0sR0FBRyxDQUFDLEdBQUc1aUIsS0FBSyxDQUFDYyxHQUFWLEVBQWUsS0FBZixDQUFiOztJQUNBLElBQUkraEIsZUFBZSxHQUFHLFNBQWxCQSxlQUFrQixDQUFVcGUsQ0FBVixFQUFhO01BQy9CLElBQUloRSxFQUFKOztNQUNBLElBQUlpYyxhQUFhLEdBQUdqWSxDQUFDLENBQUNpWSxhQUF0QjtNQUNBLElBQUlDLE1BQU0sR0FBR0QsYUFBYSxDQUFDc1EsT0FBZCxDQUFzQixZQUF0QixFQUFvQzdyQixhQUFwQyxDQUFrRCxvQkFBbEQsQ0FBYjtNQUNBLElBQUkwYixRQUFRLEdBQUcsQ0FBQ3BjLEVBQUUsR0FBR2tjLE1BQU0sS0FBSyxJQUFYLElBQW1CQSxNQUFNLEtBQUssS0FBSyxDQUFuQyxHQUF1QyxLQUFLLENBQTVDLEdBQWdEQSxNQUFNLENBQUN4YixhQUFQLENBQXFCLEtBQXJCLENBQXRELE1BQXVGLElBQXZGLElBQStGVixFQUFFLEtBQUssS0FBSyxDQUEzRyxHQUErRyxLQUFLLENBQXBILEdBQXdIQSxFQUFFLENBQUN3SixZQUExSTs7TUFDQSxJQUFJMlksTUFBTSxDQUFDL2lCLEtBQVgsRUFBa0I7UUFDZCxJQUFJOGMsTUFBTSxJQUFJLElBQWQsRUFBb0I7VUFDaEJBLE1BQU0sQ0FBQ3ZiLEtBQVAsQ0FBYTBiLE9BQWIsR0FBdUIsV0FBV3JiLE1BQVgsQ0FBa0JvYixRQUFsQixFQUE0QixLQUE1QixDQUF2QjtVQUNBdFQsVUFBVSxDQUFDLFlBQVk7WUFDbkJvVCxNQUFNLENBQUN2YixLQUFQLENBQWEwYixPQUFiLEdBQXVCLEVBQXZCO1VBQ0gsQ0FGUyxFQUVQLEdBRk8sQ0FBVjtVQUdBOEYsTUFBTSxDQUFDL2lCLEtBQVAsR0FBZSxLQUFmO1FBQ0g7TUFDSixDQVJELE1BU0s7UUFDRCxJQUFJOGMsTUFBTSxJQUFJLElBQWQsRUFBb0I7VUFDaEJBLE1BQU0sQ0FBQ3ZiLEtBQVAsQ0FBYTBiLE9BQWIsR0FBdUIsV0FBV3JiLE1BQVgsQ0FBa0JvYixRQUFsQixFQUE0QixLQUE1QixDQUF2QjtVQUNBdFQsVUFBVSxDQUFDLFlBQVk7WUFDbkJvVCxNQUFNLENBQUN2YixLQUFQLENBQWEwYixPQUFiLEdBQXVCLGVBQXZCO1VBQ0gsQ0FGUyxFQUVQLEdBRk8sQ0FBVjtVQUdBOEYsTUFBTSxDQUFDL2lCLEtBQVAsR0FBZSxJQUFmO1FBQ0g7TUFDSjtJQUNKLENBdkJEOztJQXdCQSxJQUFJNFcsVUFBVSxHQUFHLG9CQUFVMEYsTUFBVixFQUFrQjtNQUMvQixJQUFJMUYsVUFBVSxHQUFHLEVBQWpCO01BQ0EsSUFBSXdXLEVBQUUsR0FBRzdsQixTQUFTLENBQUN3WixlQUFWLENBQTBCLFFBQTFCLENBQVQ7O01BQ0EsSUFBSXpFLE1BQU0sS0FBSyxJQUFYLElBQW1CQSxNQUFNLEtBQUssS0FBSyxDQUFuQyxHQUF1QyxLQUFLLENBQTVDLEdBQWdEQSxNQUFNLENBQUMyRixPQUEzRCxFQUFvRTtRQUNoRXJMLFVBQVUsR0FBRyxHQUFHaFYsTUFBSCxDQUFVMGEsTUFBTSxLQUFLLElBQVgsSUFBbUJBLE1BQU0sS0FBSyxLQUFLLENBQW5DLEdBQXVDLEtBQUssQ0FBNUMsR0FBZ0RBLE1BQU0sQ0FBQ2hPLEtBQWpFLEVBQXdFLEdBQXhFLEVBQTZFMU0sTUFBN0UsQ0FBb0Z3ckIsRUFBRSxDQUFDOVEsTUFBdkYsRUFBK0YsR0FBL0YsRUFBb0cxYSxNQUFwRyxDQUEyR3dyQixFQUFFLENBQUMvTCxHQUE5RyxFQUFtSCxHQUFuSCxFQUF3SHpmLE1BQXhILENBQStIMGEsTUFBTSxLQUFLLElBQVgsSUFBbUJBLE1BQU0sS0FBSyxLQUFLLENBQW5DLEdBQXVDLEtBQUssQ0FBNUMsR0FBZ0RBLE1BQU0sQ0FBQzJGLE9BQXRMLEVBQStMLEdBQS9MLEVBQW9NcmdCLE1BQXBNLENBQTJNd3JCLEVBQUUsQ0FBQzdMLFFBQTlNLEVBQXdOLFNBQXhOLEVBQW1PM2YsTUFBbk8sQ0FBME93ckIsRUFBRSxDQUFDMUwsVUFBN08sRUFBeVAsR0FBelAsQ0FBYjtNQUNILENBRkQsTUFHSztRQUNEOUssVUFBVSxHQUFHLEdBQUdoVixNQUFILENBQVUwYSxNQUFNLEtBQUssSUFBWCxJQUFtQkEsTUFBTSxLQUFLLEtBQUssQ0FBbkMsR0FBdUMsS0FBSyxDQUE1QyxHQUFnREEsTUFBTSxDQUFDNkUsUUFBakUsRUFBMkUsR0FBM0UsRUFBZ0Z2ZixNQUFoRixDQUF1RndyQixFQUFFLENBQUNqTSxRQUExRixFQUFvRyxHQUFwRyxFQUF5R3ZmLE1BQXpHLENBQWdId3JCLEVBQUUsQ0FBQzlRLE1BQW5ILEVBQTJILEdBQTNILEVBQWdJMWEsTUFBaEksQ0FBdUl3ckIsRUFBRSxDQUFDMUwsVUFBMUksRUFBc0osR0FBdEosQ0FBYjtNQUNIOztNQUNELE9BQU85SyxVQUFQO0lBQ0gsQ0FWRDs7SUFXQSxJQUFJaFQsWUFBWSxHQUFHO01BQUUyRCxTQUFTLEVBQUVBLFNBQWI7TUFBd0JvWSxrQkFBa0IsRUFBRUEsa0JBQTVDO01BQWdFb0QsTUFBTSxFQUFFQSxNQUF4RTtNQUFnRkMsZUFBZSxFQUFFQSxlQUFqRztNQUFrSHBNLFVBQVUsRUFBRUE7SUFBOUgsQ0FBbkI7SUFDQS9XLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQjhELFlBQXRCLEVBQW9DLGlCQUFwQyxFQUF1RDtNQUFFRyxVQUFVLEVBQUUsS0FBZDtNQUFxQi9ELEtBQUssRUFBRTtJQUE1QixDQUF2RDtJQUNBLE9BQU80RCxZQUFQO0VBQ0g7QUFsRHdDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ0xhOztBQUNiLElBQUlsRSxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJQyxLQUFLLEdBQUdELG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXFHLE1BQU0sR0FBR3JHLG1CQUFPLENBQUMsMkRBQUQsQ0FBcEI7O0FBQ0EsSUFBSUksT0FBTyxHQUFHWixlQUFlLENBQUNRLG1CQUFPLENBQUMsNENBQUQsQ0FBUixDQUE3QixFQUNBOzs7QUFDQSxJQUFJd1kscUJBQXFCLEdBQUdoWixlQUFlLENBQUNRLG1CQUFPLENBQUMsNEZBQUQsQ0FBUixDQUEzQzs7QUFDQSxJQUFJRyxnQkFBZ0IsR0FBR1gsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGtGQUFELENBQVIsQ0FBdEM7O0FBQ0EsSUFBSWtmLG9CQUFvQixHQUFHMWYsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRHQUFELENBQVIsQ0FBMUM7O0FBQ0EsSUFBSW10QixzQkFBc0IsR0FBRzN0QixlQUFlLENBQUNRLG1CQUFPLENBQUMsc0dBQUQsQ0FBUixDQUE1Qzs7QUFDQSxJQUFJc1csWUFBWSxHQUFHOVcsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDBFQUFELENBQVIsQ0FBbEMsRUFDQTs7O0FBQ0EsSUFBSUssT0FBTyxHQUFHTCxtQkFBTyxDQUFDLCtFQUFELENBQXJCOztBQUNBLElBQUlvdEIsOEJBQThCLEdBQUc1dEIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDhHQUFELENBQVIsQ0FBcEQ7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNDLE1BQU0sRUFBRSxpQkFEaUM7RUFFekNrRyxLQUFLLEVBQUU7SUFDSEUsSUFBSSxFQUFFO01BQUVBLElBQUksRUFBRXVKLE1BQVI7TUFBZ0IsV0FBUztJQUF6QjtFQURILENBRmtDO0VBS3pDMVAsS0FBSyxFQUFFLGVBQVVDLE9BQVYsRUFBbUJDLEVBQW5CLEVBQXVCO0lBQzFCLElBQUl5RyxFQUFKOztJQUNBLElBQUl4RyxNQUFNLEdBQUdELEVBQUUsQ0FBQ0MsTUFBaEI7SUFDQUEsTUFBTTtJQUNOLElBQUkwRyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0E7QUFDUjtBQUNBOztJQUNRLElBQUkxRyxLQUFLLEdBQUcsQ0FBQyxHQUFHUCxPQUFPLENBQUNRLFFBQVosR0FBWixDQVIwQixDQVMxQjs7SUFDQSxJQUFJcUksRUFBRSxHQUFHLENBQUMsR0FBRzdDLE1BQU0sQ0FBQzhDLFNBQVgsR0FBVDtJQUFBLElBQWtDa2tCLGlCQUFpQixHQUFHbmtCLEVBQUUsQ0FBQyxDQUFELENBQXhEO0lBQUEsSUFBNkRva0Isa0JBQWtCLEdBQUdwa0IsRUFBRSxDQUFDLENBQUQsQ0FBcEYsQ0FWMEIsQ0FXMUI7OztJQUNBLElBQUlxa0IsZUFBZSxHQUFHLENBQUMsR0FBR3R0QixLQUFLLENBQUNjLEdBQVYsRUFBZSxDQUFmLENBQXRCO0lBQ0EsSUFBSTZMLGlCQUFpQixHQUFHLENBQUMsR0FBRzNNLEtBQUssQ0FBQzhILFFBQVYsRUFBb0IsRUFBcEIsQ0FBeEI7SUFDQSxJQUFJL0csU0FBUyxHQUFHLENBQUMsR0FBR2YsS0FBSyxDQUFDYyxHQUFWLEVBQWUsS0FBZixDQUFoQjtJQUNBLElBQUl5c0IsWUFBWSxHQUFHLENBQUMsR0FBR3Z0QixLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQW5CO0lBQ0EsSUFBSTBzQixTQUFTLEdBQUcsQ0FBQyxHQUFHeHRCLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBaEIsQ0FoQjBCLENBaUIxQjs7SUFDQSxJQUFJc2UsTUFBTSxHQUFHLENBQUMsR0FBR3BmLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBYixDQWxCMEIsQ0FtQjFCOztJQUNBLElBQUl1ZixVQUFVLEdBQUcsQ0FBQyxHQUFHcmdCLEtBQUssQ0FBQ2MsR0FBVixFQUFlc0csU0FBUyxDQUFDd0IsVUFBVixDQUFxQixhQUFyQixDQUFmLENBQWpCO0lBQ0E7O0lBQ0EsSUFBSTZrQiwyQkFBMkIsR0FBRyxDQUFDLEdBQUd6dEIsS0FBSyxDQUFDYyxHQUFWLEVBQWUsS0FBZixDQUFsQztJQUNBLElBQUk0c0Isa0JBQWtCLEdBQUcsQ0FBQyxHQUFHMXRCLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBekI7SUFDQSxJQUFJNnNCLHFCQUFxQixHQUFHLENBQUMsR0FBRzN0QixLQUFLLENBQUNjLEdBQVYsRUFBZSxnQ0FBZixDQUE1QixDQXhCMEIsQ0F5QjFCOztJQUNBLElBQUl3ZixnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQW1CLEdBQVk7TUFDL0JnTixlQUFlLENBQUN6dEIsS0FBaEIsR0FBd0IsQ0FBeEI7TUFDQXV0QixpQkFBaUIsQ0FBQ3Z0QixLQUFsQixHQUEwQixLQUExQjtNQUNBMmYsa0JBQWtCLENBQUMzZixLQUFuQixHQUEyQixFQUEzQjtJQUNILENBSkQ7O0lBS0EsSUFBSSt0QixnQkFBZ0IsR0FBRyxDQUFDLEdBQUc1dEIsS0FBSyxDQUFDc0QsUUFBVixFQUFvQixZQUFZO01BQ25ELElBQUk2VSxLQUFLLEdBQUcsQ0FBQyxHQUFHblksS0FBSyxDQUFDYyxHQUFWLEVBQWUsS0FBZixDQUFaOztNQUNBLFFBQVF3c0IsZUFBZSxDQUFDenRCLEtBQXhCO1FBQ0ksS0FBSyxDQUFMO1VBQ0lzWSxLQUFLLENBQUN0WSxLQUFOLEdBQWMsS0FBZDtVQUNBOztRQUNKLEtBQUssQ0FBTDtVQUNJc1ksS0FBSyxDQUFDdFksS0FBTixHQUFjLEtBQWQ7VUFDQTs7UUFDSjtNQVBKOztNQVNBLE9BQU9zWSxLQUFLLENBQUN0WSxLQUFiO0lBQ0gsQ0Fac0IsQ0FBdkIsQ0EvQjBCLENBNEMxQjs7SUFDQSxJQUFJOFcsU0FBUyxHQUFHLENBQUMsR0FBRzNXLEtBQUssQ0FBQ3dELE1BQVYsRUFBa0IsV0FBbEIsQ0FBaEI7O0lBQ0EsSUFBSXFxQixZQUFZLEdBQUcsU0FBZkEsWUFBZSxDQUFVdmtCLE9BQVYsRUFBbUI1QyxJQUFuQixFQUF5QjtNQUN4Q2lRLFNBQVMsQ0FBQ3JOLE9BQVYsR0FBb0JBLE9BQXBCO01BQ0FxTixTQUFTLENBQUNqUSxJQUFWLEdBQWlCQSxJQUFqQjtNQUNBaVEsU0FBUyxDQUFDM0ksVUFBVixHQUF1QixJQUF2QjtJQUNILENBSkQ7O0lBS0EsSUFBSTRCLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBeUIsR0FBWTtNQUNyQyxLQUFLLElBQUlDLFFBQVQsSUFBcUJsRCxpQkFBckIsRUFBd0M7UUFDcEMsT0FBT0EsaUJBQWlCLENBQUNrRCxRQUFELENBQXhCO01BQ0g7SUFDSixDQUpEO0lBS0E7QUFDUjtBQUNBOzs7SUFDUSxJQUFJa1MsWUFBWSxHQUFHLFNBQWZBLFlBQWUsR0FBWTtNQUMzQmhoQixTQUFTLENBQUNsQixLQUFWLEdBQWtCLElBQWxCO01BQ0FNLE9BQU8sV0FBUCxDQUNLK0MsR0FETCxDQUNTLDhDQURULEVBRUtuQixJQUZMLENBRVUsVUFBVUMsR0FBVixFQUFlO1FBQ3JCLElBQUl5TCxRQUFRLEdBQUd6TCxHQUFHLENBQUNLLElBQW5COztRQUNBLElBQUlvTCxRQUFRLENBQUNySyxPQUFULEtBQXFCLElBQXpCLEVBQStCO1VBQzNCZ3FCLGlCQUFpQixDQUFDdnRCLEtBQWxCLEdBQTBCLElBQTFCO1FBQ0gsQ0FGRCxNQUdLO1VBQ0QsSUFBSTROLFFBQVEsS0FBSyxJQUFiLElBQXFCQSxRQUFRLEtBQUssS0FBSyxDQUF2QyxHQUEyQyxLQUFLLENBQWhELEdBQW9EQSxRQUFRLENBQUNxZ0IsV0FBakUsRUFBOEU7WUFDMUVsZSxzQkFBc0I7WUFDdEJsUSxNQUFNLENBQUNvUSxNQUFQLENBQWNuRCxpQkFBZCxFQUFpQ2MsUUFBUSxDQUFDcEwsSUFBVCxDQUFjaUwsVUFBL0M7WUFDQXlnQiwyQkFBMkI7VUFDOUIsQ0FKRCxNQUtLO1lBQ0RGLFlBQVksQ0FBQ3BnQixRQUFRLENBQUNuRSxPQUFWLEVBQW1CbUUsUUFBUSxDQUFDckssT0FBNUIsQ0FBWjtVQUNIO1FBQ0o7TUFDSixDQWpCRCxhQWtCYSxZQUFZO1FBQUUsT0FBUXJDLFNBQVMsQ0FBQ2xCLEtBQVYsR0FBa0IsS0FBMUI7TUFBbUMsQ0FsQjlEO0lBbUJILENBckJEO0lBc0JBO0FBQ1I7QUFDQTs7O0lBQ1EsSUFBSW11Qix1QkFBdUIsR0FBRyxDQUFDLEdBQUdodUIsS0FBSyxDQUFDYyxHQUFWLEVBQWUsRUFBZixDQUE5QjtJQUFBLElBQWtEbXRCLHlCQUF5QixHQUFHLENBQUMsR0FBR2p1QixLQUFLLENBQUNjLEdBQVYsRUFBZSxFQUFmLENBQTlFO0lBQUEsSUFBa0d1SCxTQUFTLEdBQUcsWUFBOUc7O0lBQ0EsSUFBSTZsQixrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQXFCLEdBQVk7TUFDakM5TyxNQUFNLENBQUN2ZixLQUFQLEdBQWUsSUFBZjtNQUNBd2dCLFVBQVUsQ0FBQ3hnQixLQUFYLEdBQW1CdUgsU0FBUyxDQUFDd0IsVUFBVixDQUFxQix5QkFBckIsQ0FBbkI7TUFDQSxJQUFJMEUsVUFBVSxHQUFHM00sS0FBSyxDQUFDb0ksS0FBTixDQUFZeVcsa0JBQVosQ0FBK0J2VCxJQUEvQixDQUFvQyxJQUFwQyxDQUFqQjtNQUNBOUwsT0FBTyxXQUFQLENBQ0srQyxHQURMLENBQ1MsbURBQW1EekIsTUFBbkQsQ0FBMEQ2TCxVQUExRCxFQUFzRSxHQUF0RSxDQURULEVBRUt2TCxJQUZMLENBRVUsVUFBVUMsR0FBVixFQUFlO1FBQ3JCLElBQUl5TCxRQUFRLEdBQUd6TCxHQUFHLENBQUNLLElBQW5COztRQUNBLElBQUlvTCxRQUFRLENBQUNySyxPQUFiLEVBQXNCO1VBQ2xCNHFCLHVCQUF1QixDQUFDbnVCLEtBQXhCLEdBQWdDNE4sUUFBUSxDQUFDcEwsSUFBVCxDQUFjOHJCLFFBQTlDO1VBQ0FGLHlCQUF5QixDQUFDcHVCLEtBQTFCLEdBQWtDNE4sUUFBUSxDQUFDcEwsSUFBVCxDQUFjK3JCLFVBQWhEO1VBQ0FkLGVBQWUsQ0FBQ3p0QixLQUFoQixHQUF3QixDQUF4QjtRQUNILENBSkQsTUFLSztVQUNEdWYsTUFBTSxDQUFDdmYsS0FBUCxHQUFlLEtBQWY7VUFDQXlnQixnQkFBZ0I7O1VBQ2hCLElBQUk3UyxRQUFRLEtBQUssSUFBYixJQUFxQkEsUUFBUSxLQUFLLEtBQUssQ0FBdkMsR0FBMkMsS0FBSyxDQUFoRCxHQUFvREEsUUFBUSxDQUFDcWdCLFdBQWpFLEVBQThFO1lBQzFFbGUsc0JBQXNCO1lBQ3RCbFEsTUFBTSxDQUFDb1EsTUFBUCxDQUFjbkQsaUJBQWQsRUFBaUNjLFFBQVEsQ0FBQ3BMLElBQVQsQ0FBY2lMLFVBQS9DO1lBQ0F5Z0IsMkJBQTJCO1VBQzlCLENBSkQsTUFLSztZQUNERixZQUFZLENBQUNwZ0IsUUFBUSxDQUFDbkUsT0FBVixFQUFtQm1FLFFBQVEsQ0FBQ3JLLE9BQTVCLENBQVo7VUFDSDtRQUNKOztRQUNEbUcsVUFBVSxDQUFDLFlBQVk7VUFDbkI2VixNQUFNLENBQUN2ZixLQUFQLEdBQWUsS0FBZjtRQUNILENBRlMsRUFFUCxJQUZPLENBQVY7TUFHSCxDQXhCRDtJQXlCSCxDQTdCRDtJQThCQTtBQUNSO0FBQ0E7OztJQUNRLElBQUl3dUIsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHcnVCLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEVBQWYsQ0FBdkI7SUFDQSxDQUFDLEdBQUdkLEtBQUssQ0FBQ2dCLFNBQVYsRUFBcUIsWUFBWTtNQUM3QixJQUFJUCxFQUFKLEVBQVF5RyxFQUFSOztNQUNBL0csT0FBTyxXQUFQLENBQ0srQyxHQURMLENBQ1Msa0RBQWtEekIsTUFBbEQsQ0FBeUQsQ0FBQ2hCLEVBQUUsR0FBR29LLEVBQUUsQ0FBQ2hMLEtBQVQsTUFBb0IsSUFBcEIsSUFBNEJZLEVBQUUsS0FBSyxLQUFLLENBQXhDLEdBQTRDLEtBQUssQ0FBakQsR0FBcURBLEVBQUUsQ0FBQ3NLLG9CQUFILENBQXdCdWpCLGVBQXRJLEVBQXVKLFNBQXZKLEVBQWtLN3NCLE1BQWxLLENBQXlLLENBQUN5RixFQUFFLEdBQUcyRCxFQUFFLENBQUNoTCxLQUFULE1BQW9CLElBQXBCLElBQTRCcUgsRUFBRSxLQUFLLEtBQUssQ0FBeEMsR0FBNEMsS0FBSyxDQUFqRCxHQUFxREEsRUFBRSxDQUFDNkQsb0JBQUgsQ0FBd0J3akIsY0FBdFAsQ0FEVCxFQUVLeHNCLElBRkwsQ0FFVSxVQUFVQyxHQUFWLEVBQWU7UUFDckIsSUFBSXZCLEVBQUosRUFBUXlHLEVBQVI7O1FBQ0F4SCxNQUFNLENBQUNvUSxNQUFQLENBQWMsQ0FBQ3JQLEVBQUUsR0FBR29LLEVBQUUsQ0FBQ2hMLEtBQVQsTUFBb0IsSUFBcEIsSUFBNEJZLEVBQUUsS0FBSyxLQUFLLENBQXhDLEdBQTRDLEtBQUssQ0FBakQsR0FBcURBLEVBQUUsQ0FBQ3NLLG9CQUF0RSxFQUE0RixDQUFDN0QsRUFBRSxHQUFHbEYsR0FBRyxDQUFDSyxJQUFWLE1BQW9CLElBQXBCLElBQTRCNkUsRUFBRSxLQUFLLEtBQUssQ0FBeEMsR0FBNEMsS0FBSyxDQUFqRCxHQUFxREEsRUFBRSxDQUFDN0UsSUFBcEo7TUFDSCxDQUxEO0lBTUgsQ0FSRDs7SUFTQSxJQUFJbXNCLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBcUIsR0FBWTtNQUNqQ3BQLE1BQU0sQ0FBQ3ZmLEtBQVAsR0FBZSxJQUFmO01BQ0F3Z0IsVUFBVSxDQUFDeGdCLEtBQVgsR0FBbUJ1SCxTQUFTLENBQUN3QixVQUFWLENBQXFCLHVCQUFyQixDQUFuQjtNQUNBLElBQUkwRSxVQUFVLEdBQUczTSxLQUFLLENBQUNvSSxLQUFOLENBQVl5VyxrQkFBWixDQUErQnZULElBQS9CLENBQW9DLElBQXBDLENBQWpCO01BQ0E5TCxPQUFPLFdBQVAsQ0FDSytLLElBREwsQ0FDVSwrQ0FBK0N6SixNQUEvQyxDQUFzRDZMLFVBQXRELEVBQWtFLEdBQWxFLENBRFYsRUFFS3ZMLElBRkwsQ0FFVSxVQUFVQyxHQUFWLEVBQWU7UUFDckIsSUFBSXlMLFFBQVEsR0FBR3pMLEdBQUcsQ0FBQ0ssSUFBbkI7O1FBQ0EsSUFBSW9MLFFBQVEsQ0FBQ3JLLE9BQWIsRUFBc0I7VUFDbEJrcUIsZUFBZSxDQUFDenRCLEtBQWhCLEdBQXdCLENBQXhCO1VBQ0F3dUIsZ0JBQWdCLENBQUN4dUIsS0FBakIsR0FBeUI0TixRQUFRLENBQUNwTCxJQUFsQztRQUNILENBSEQsTUFJSztVQUNEaWUsZ0JBQWdCO1VBQ2hCdU4sWUFBWSxDQUFDcGdCLFFBQVEsQ0FBQ25FLE9BQVYsRUFBbUJtRSxRQUFRLENBQUNySyxPQUE1QixDQUFaO1FBQ0g7O1FBQ0RtRyxVQUFVLENBQUMsWUFBWTtVQUNuQjZWLE1BQU0sQ0FBQ3ZmLEtBQVAsR0FBZSxLQUFmO1FBQ0gsQ0FGUyxFQUVQLElBRk8sQ0FBVjtNQUdILENBZkQ7SUFnQkgsQ0FwQkQ7SUFxQkE7QUFDUjtBQUNBOzs7SUFDUSxJQUFJMmYsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHeGYsS0FBSyxDQUFDYyxHQUFWLEVBQWUsRUFBZixDQUF6QjtJQUNBLENBQUMsR0FBR2QsS0FBSyxDQUFDZ3FCLE9BQVYsRUFBbUIsb0JBQW5CLEVBQXlDeEssa0JBQXpDLEVBekowQixDQTBKMUI7O0lBQ0EsSUFBSTNVLEVBQUUsR0FBRyxDQUFDLEdBQUd6RSxNQUFNLENBQUMwRSxVQUFYLEVBQXVCLHVCQUF2QixFQUFnRDtNQUNyREMsb0JBQW9CLEVBQUUsQ0FBQzdELEVBQUUsR0FBRzBDLFlBQVksQ0FBQ29CLE9BQWIsQ0FBcUIsc0JBQXJCLENBQU4sTUFBd0QsSUFBeEQsSUFBZ0U5RCxFQUFFLEtBQUssS0FBSyxDQUE1RSxHQUFnRkEsRUFBaEYsR0FBcUY7SUFEdEQsQ0FBaEQsQ0FBVDs7SUFHQSxJQUFJcVgsZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFtQixHQUFZO01BQy9CNWQsS0FBSyxDQUFDWSxRQUFOLENBQWUsd0JBQWYsRUFBeUMsSUFBekM7TUFDQTZkLE1BQU0sQ0FBQ3ZmLEtBQVAsR0FBZSxJQUFmO01BQ0F3Z0IsVUFBVSxDQUFDeGdCLEtBQVgsR0FBbUJ1SCxTQUFTLENBQUN3QixVQUFWLENBQXFCLHFCQUFyQixDQUFuQjtNQUNBaUMsRUFBRSxDQUFDaEwsS0FBSCxDQUFTa0wsb0JBQVQsR0FBZ0MsRUFBaEM7TUFDQTVLLE9BQU8sV0FBUCxDQUNLK0MsR0FETCxDQUNTLDZDQUE2Q3pCLE1BQTdDLENBQW9EK2Qsa0JBQWtCLENBQUMzZixLQUF2RSxFQUE4RSxHQUE5RSxDQURULEVBRUtrQyxJQUZMLENBRVUsVUFBVUMsR0FBVixFQUFlO1FBQ3JCckIsS0FBSyxDQUFDWSxRQUFOLENBQWUsd0JBQWYsRUFBeUMsSUFBekM7UUFDQWdzQixZQUFZLENBQUMxdEIsS0FBYixHQUFxQixJQUFyQjtRQUNBLElBQUk0TixRQUFRLEdBQUd6TCxHQUFHLENBQUNLLElBQW5COztRQUNBLElBQUlvTCxRQUFRLENBQUNySyxPQUFiLEVBQXNCO1VBQ2xCa3FCLGVBQWUsQ0FBQ3p0QixLQUFoQixHQUF3QixDQUF4QjtVQUNBdXRCLGlCQUFpQixDQUFDdnRCLEtBQWxCLEdBQTBCLEtBQTFCO1VBQ0FnTCxFQUFFLENBQUNoTCxLQUFILENBQVNrTCxvQkFBVCxHQUFnQzBDLFFBQVEsQ0FBQ3BMLElBQXpDO1FBQ0gsQ0FKRCxNQUtLO1VBQ0QrYyxNQUFNLENBQUN2ZixLQUFQLEdBQWUsS0FBZjtVQUNBeWdCLGdCQUFnQjs7VUFDaEIsSUFBSTdTLFFBQVEsS0FBSyxJQUFiLElBQXFCQSxRQUFRLEtBQUssS0FBSyxDQUF2QyxHQUEyQyxLQUFLLENBQWhELEdBQW9EQSxRQUFRLENBQUNxZ0IsV0FBakUsRUFBOEU7WUFDMUVsZSxzQkFBc0I7WUFDdEJsUSxNQUFNLENBQUNvUSxNQUFQLENBQWNuRCxpQkFBZCxFQUFpQ2MsUUFBUSxDQUFDcEwsSUFBVCxDQUFjaUwsVUFBL0M7WUFDQTVOLE1BQU0sQ0FBQ29RLE1BQVAsQ0FBY2pGLEVBQUUsQ0FBQ2hMLEtBQUgsQ0FBU2tMLG9CQUF2QixFQUE2QzBDLFFBQVEsQ0FBQ3BMLElBQVQsQ0FBY2lMLFVBQTNEO1lBQ0EzTSxLQUFLLENBQUNZLFFBQU4sQ0FBZSw2QkFBZixFQUE4Q2tNLFFBQVEsQ0FBQ3BMLElBQVQsQ0FBY2lMLFVBQTVEO1lBQ0F5Z0IsMkJBQTJCO1VBQzlCLENBTkQsTUFPSztZQUNERixZQUFZLENBQUNwZ0IsUUFBUSxDQUFDbkUsT0FBVixFQUFtQm1FLFFBQVEsQ0FBQ3JLLE9BQTVCLENBQVo7VUFDSDtRQUNKOztRQUNEbUcsVUFBVSxDQUFDLFlBQVk7VUFDbkI2VixNQUFNLENBQUN2ZixLQUFQLEdBQWUsS0FBZjtVQUNBMnRCLFNBQVMsQ0FBQzN0QixLQUFWLEdBQWtCLElBQWxCO1FBQ0gsQ0FIUyxFQUdQLElBSE8sQ0FBVjtNQUlILENBN0JEO0lBOEJILENBbkNEOztJQW9DQSxDQUFDLEdBQUdHLEtBQUssQ0FBQzhJLEtBQVYsRUFBaUIsWUFBWTtNQUFFLE9BQU8rQixFQUFFLENBQUNoTCxLQUFWO0lBQWtCLENBQWpELEVBQW1ELFlBQVk7TUFDM0QsSUFBSVksRUFBSixFQUFReUcsRUFBUixFQUFZK0IsRUFBWixFQUFnQnlNLEVBQWhCOztNQUNBL1UsS0FBSyxDQUFDWSxRQUFOLENBQWUseUJBQWYsRUFBMEMsQ0FBQyxDQUFDMkYsRUFBRSxHQUFHLENBQUN6RyxFQUFFLEdBQUdvSyxFQUFFLEtBQUssSUFBUCxJQUFlQSxFQUFFLEtBQUssS0FBSyxDQUEzQixHQUErQixLQUFLLENBQXBDLEdBQXdDQSxFQUFFLENBQUNoTCxLQUFqRCxNQUE0RCxJQUE1RCxJQUFvRVksRUFBRSxLQUFLLEtBQUssQ0FBaEYsR0FBb0YsS0FBSyxDQUF6RixHQUE2RkEsRUFBRSxDQUFDc0ssb0JBQXRHLE1BQWdJLElBQWhJLElBQXdJN0QsRUFBRSxLQUFLLEtBQUssQ0FBcEosR0FBd0osS0FBSyxDQUE3SixHQUFpS0EsRUFBRSxDQUFDb0csVUFBckssS0FDdEM1TixNQUFNLENBQUMwUCxJQUFQLENBQVksQ0FBQ3NHLEVBQUUsR0FBRyxDQUFDek0sRUFBRSxHQUFHNEIsRUFBRSxLQUFLLElBQVAsSUFBZUEsRUFBRSxLQUFLLEtBQUssQ0FBM0IsR0FBK0IsS0FBSyxDQUFwQyxHQUF3Q0EsRUFBRSxDQUFDaEwsS0FBakQsTUFBNEQsSUFBNUQsSUFBb0VvSixFQUFFLEtBQUssS0FBSyxDQUFoRixHQUFvRixLQUFLLENBQXpGLEdBQTZGQSxFQUFFLENBQUM4QixvQkFBdEcsTUFBZ0ksSUFBaEksSUFBd0kySyxFQUFFLEtBQUssS0FBSyxDQUFwSixHQUF3SixLQUFLLENBQTdKLEdBQWlLQSxFQUFFLENBQUNwSSxVQUFoTCxFQUNLckgsTUFGVDtNQUdBdEYsS0FBSyxDQUFDWSxRQUFOLENBQWUsNkJBQWYsRUFBOENzSixFQUFFLEtBQUssSUFBUCxJQUFlQSxFQUFFLEtBQUssS0FBSyxDQUEzQixHQUErQixLQUFLLENBQXBDLEdBQXdDQSxFQUFFLENBQUNoTCxLQUF6RjtJQUNILENBTkQsRUFNRztNQUFFa1EsSUFBSSxFQUFFO0lBQVIsQ0FOSDtJQU9BOztJQUNBLElBQUkwZSxzQkFBc0IsR0FBRyxTQUF6QkEsc0JBQXlCLEdBQVk7TUFDckNwTyxVQUFVLENBQUN4Z0IsS0FBWCxHQUFtQix5QkFBbkI7TUFDQXVmLE1BQU0sQ0FBQ3ZmLEtBQVAsR0FBZSxJQUFmO01BQ0E2dUIsNEJBQTRCO01BQzVCdnVCLE9BQU8sV0FBUCxDQUFnQitDLEdBQWhCLENBQW9CLGdDQUFwQixFQUFzRG5CLElBQXRELENBQTJELFVBQVVDLEdBQVYsRUFBZTtRQUN0RSxJQUFJQSxHQUFHLENBQUNLLElBQUosQ0FBU2UsT0FBYixFQUFzQjtVQUNsQnVyQixzQkFBc0IsQ0FBQzNzQixHQUFHLENBQUNLLElBQUosQ0FBU2lILE9BQVYsQ0FBdEI7VUFDQXNsQix3QkFBd0I7UUFDM0I7O1FBQ0RybEIsVUFBVSxDQUFDLFlBQVk7VUFDbkI2VixNQUFNLENBQUN2ZixLQUFQLEdBQWUsS0FBZjtRQUNILENBRlMsRUFFUCxHQUZPLENBQVY7TUFHSCxDQVJEO0lBU0gsQ0FiRDtJQWNBOzs7SUFDQSxJQUFJK3VCLHdCQUF3QixHQUFHLFNBQTNCQSx3QkFBMkIsR0FBWTtNQUN2Q2pZLFNBQVMsQ0FBQzNJLFVBQVYsR0FBdUIsS0FBdkI7TUFDQTBmLGtCQUFrQixDQUFDN3RCLEtBQW5CLEdBQTJCLElBQTNCO0lBQ0gsQ0FIRDtJQUlBOzs7SUFDQSxJQUFJOHVCLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBeUIsQ0FBVUUsR0FBVixFQUFlO01BQ3hDbFksU0FBUyxDQUFDM0ksVUFBVixHQUF1QixLQUF2QjtNQUNBMmYscUJBQXFCLENBQUM5dEIsS0FBdEIsR0FBOEJndkIsR0FBOUI7SUFDSCxDQUhEO0lBSUE7OztJQUNBLElBQUlDLDBCQUEwQixHQUFHLFNBQTdCQSwwQkFBNkIsR0FBWTtNQUN6Q25ZLFNBQVMsQ0FBQzNJLFVBQVYsR0FBdUIsS0FBdkI7TUFDQTBmLGtCQUFrQixDQUFDN3RCLEtBQW5CLEdBQTJCLEtBQTNCO0lBQ0gsQ0FIRDtJQUlBOzs7SUFDQSxJQUFJa3VCLDJCQUEyQixHQUFHLFNBQTlCQSwyQkFBOEIsR0FBWTtNQUMxQ04sMkJBQTJCLENBQUM1dEIsS0FBNUIsR0FBb0MsSUFBcEM7SUFDSCxDQUZEO0lBR0E7OztJQUNBLElBQUk2dUIsNEJBQTRCLEdBQUcsU0FBL0JBLDRCQUErQixHQUFZO01BQzNDakIsMkJBQTJCLENBQUM1dEIsS0FBNUIsR0FBb0MsS0FBcEM7SUFDSCxDQUZEO0lBR0E7OztJQUNBLElBQUlrdkIsa0JBQWtCLEdBQUcsU0FBckJBLGtCQUFxQixHQUFZO01BQ2pDckIsa0JBQWtCLENBQUM3dEIsS0FBbkIsR0FBMkIsS0FBM0I7TUFDQWtpQixZQUFZO0lBQ2YsQ0FIRDs7SUFJQSxDQUFDLEdBQUcvaEIsS0FBSyxDQUFDZ3FCLE9BQVYsRUFBbUIsV0FBbkIsRUFBZ0NuZixFQUFoQztJQUNBLENBQUMsR0FBRzdLLEtBQUssQ0FBQ2dxQixPQUFWLEVBQW1CLG1CQUFuQixFQUF3Q3JkLGlCQUF4QztJQUNBLENBQUMsR0FBRzNNLEtBQUssQ0FBQ2dxQixPQUFWLEVBQW1CLGNBQW5CLEVBQW1DdUQsWUFBbkM7SUFDQSxJQUFJOXBCLFlBQVksR0FBRztNQUFFMkQsU0FBUyxFQUFFQSxTQUFiO01BQXdCekcsS0FBSyxFQUFFQSxLQUEvQjtNQUFzQ3lzQixpQkFBaUIsRUFBRUEsaUJBQXpEO01BQTRFQyxrQkFBa0IsRUFBRUEsa0JBQWhHO01BQW9IQyxlQUFlLEVBQUVBLGVBQXJJO01BQXNKM2dCLGlCQUFpQixFQUFFQSxpQkFBeks7TUFBNEw1TCxTQUFTLEVBQUVBLFNBQXZNO01BQWtOd3NCLFlBQVksRUFBRUEsWUFBaE87TUFBOE9DLFNBQVMsRUFBRUEsU0FBelA7TUFBb1FwTyxNQUFNLEVBQUVBLE1BQTVRO01BQW9SaUIsVUFBVSxFQUFFQSxVQUFoUztNQUE0U29OLDJCQUEyQixFQUFFQSwyQkFBelU7TUFBc1dDLGtCQUFrQixFQUFFQSxrQkFBMVg7TUFBOFlDLHFCQUFxQixFQUFFQSxxQkFBcmE7TUFBNGJyTixnQkFBZ0IsRUFBRUEsZ0JBQTljO01BQWdlc04sZ0JBQWdCLEVBQUVBLGdCQUFsZjtNQUFvZ0JqWCxTQUFTLEVBQUVBLFNBQS9nQjtNQUEwaEJrWCxZQUFZLEVBQUVBLFlBQXhpQjtNQUFzakJqZSxzQkFBc0IsRUFBRUEsc0JBQTlrQjtNQUFzbUJtUyxZQUFZLEVBQUVBLFlBQXBuQjtNQUFrb0JpTSx1QkFBdUIsRUFBRUEsdUJBQTNwQjtNQUFvckJDLHlCQUF5QixFQUFFQSx5QkFBL3NCO01BQTB1QjVsQixTQUFTLEVBQUVBLFNBQXJ2QjtNQUFnd0I2bEIsa0JBQWtCLEVBQUVBLGtCQUFweEI7TUFBd3lCRyxnQkFBZ0IsRUFBRUEsZ0JBQTF6QjtNQUE0MEJHLGtCQUFrQixFQUFFQSxrQkFBaDJCO01BQW8zQmhQLGtCQUFrQixFQUFFQSxrQkFBeDRCO01BQTQ1QjNVLEVBQUUsRUFBRUEsRUFBaDZCO01BQW82QjBULGdCQUFnQixFQUFFQSxnQkFBdDdCO01BQXc4QmtRLHNCQUFzQixFQUFFQSxzQkFBaCtCO01BQXcvQkcsd0JBQXdCLEVBQUVBLHdCQUFsaEM7TUFBNGlDRCxzQkFBc0IsRUFBRUEsc0JBQXBrQztNQUE0bENHLDBCQUEwQixFQUFFQSwwQkFBeG5DO01BQW9wQ2YsMkJBQTJCLEVBQUVBLDJCQUFqckM7TUFBOHNDVyw0QkFBNEIsRUFBRUEsNEJBQTV1QztNQUEwd0NLLGtCQUFrQixFQUFFQSxrQkFBOXhDO01BQWt6Q3JWLFlBQVksRUFBRW5CLHFCQUFxQixXQUFyMUM7TUFBKzFDNVUsS0FBSyxFQUFFekQsZ0JBQWdCLFdBQXQzQztNQUFnNEM0WCxNQUFNLEVBQUVtSCxvQkFBb0IsV0FBNTVDO01BQXM2QytQLGdCQUFnQixFQUFFOUIsc0JBQXNCLFdBQTk4QztNQUF3OUMrQixVQUFVLEVBQUU1WSxZQUFZLFdBQWgvQztNQUEwL0M2WSx3QkFBd0IsRUFBRS9CLDhCQUE4QjtJQUFsakQsQ0FBbkI7SUFDQXp0QixNQUFNLENBQUNDLGNBQVAsQ0FBc0I4RCxZQUF0QixFQUFvQyxpQkFBcEMsRUFBdUQ7TUFBRUcsVUFBVSxFQUFFLEtBQWQ7TUFBcUIvRCxLQUFLLEVBQUU7SUFBNUIsQ0FBdkQ7SUFDQSxPQUFPNEQsWUFBUDtFQUNIO0FBL1B3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNuQmE7O0FBQ2IvRCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlDLEtBQUssR0FBR0QsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLGNBRGlDO0VBRXpDa0csS0FBSyxFQUFFO0lBQ0g4QyxPQUFPLEVBQUU7TUFBRTVDLElBQUksRUFBRXVKLE1BQVI7TUFBZ0J0SixRQUFRLEVBQUU7SUFBMUIsQ0FETjtJQUVIRCxJQUFJLEVBQUU7TUFBRUEsSUFBSSxFQUFFSyxPQUFSO01BQWlCSixRQUFRLEVBQUU7SUFBM0I7RUFGSCxDQUZrQztFQU16Q3BHLEtBQUssRUFBRSxlQUFVQyxPQUFWLEVBQW1CQyxFQUFuQixFQUF1QjtJQUMxQixJQUFJQyxNQUFNLEdBQUdELEVBQUUsQ0FBQ0MsTUFBaEI7SUFDQUEsTUFBTTtJQUNOLElBQUk4RixLQUFLLEdBQUdoRyxPQUFaO0lBQ0EsSUFBSTRHLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJa1UsU0FBUyxHQUFHLENBQUMsR0FBR3ZiLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEVBQWYsQ0FBaEI7SUFDQXlhLFNBQVMsQ0FBQzFiLEtBQVYsR0FBa0IyRyxLQUFLLENBQUNFLElBQU4sR0FDWiwwQkFEWSxHQUVaLGlDQUZOO0lBR0EsSUFBSXlvQixVQUFVLEdBQUcsQ0FBQyxHQUFHbnZCLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEVBQWYsQ0FBakI7SUFDQXF1QixVQUFVLENBQUN0dkIsS0FBWCxHQUFtQjJHLEtBQUssQ0FBQ0UsSUFBTixHQUNiLHFDQURhLEdBRWIsdUNBRk47SUFHQSxJQUFJakQsWUFBWSxHQUFHO01BQUUyRCxTQUFTLEVBQUVBLFNBQWI7TUFBd0JaLEtBQUssRUFBRUEsS0FBL0I7TUFBc0MrVSxTQUFTLEVBQUVBLFNBQWpEO01BQTRENFQsVUFBVSxFQUFFQTtJQUF4RSxDQUFuQjtJQUNBenZCLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQjhELFlBQXRCLEVBQW9DLGlCQUFwQyxFQUF1RDtNQUFFRyxVQUFVLEVBQUUsS0FBZDtNQUFxQi9ELEtBQUssRUFBRTtJQUE1QixDQUF2RDtJQUNBLE9BQU80RCxZQUFQO0VBQ0g7QUF0QndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ0xhOztBQUNiLElBQUlsRSxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJcXZCLGVBQWUsR0FBRzd2QixlQUFlLENBQUNRLG1CQUFPLENBQUMsd0ZBQUQsQ0FBUixDQUFyQzs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLGtCQURpQztFQUV6Q2tHLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQUVxRSxJQUFJLEVBQUVoSCxNQUFSO01BQWdCaUgsUUFBUSxFQUFFO0lBQTFCO0VBREgsQ0FGa0M7RUFLekNwRyxLQUFLLEVBQUUsZUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUI7SUFDMUIsSUFBSUMsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQ0FBLE1BQU07SUFDTixJQUFJMEcsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLElBQUlnb0IsZUFBZSxHQUFHam9CLFNBQVMsQ0FBQ3dCLFVBQVYsQ0FBcUIsa0JBQXJCLENBQXRCO0lBQ0EsSUFBSTBtQixjQUFjLEdBQUdsb0IsU0FBUyxDQUFDd0IsVUFBVixDQUFxQixpQkFBckIsQ0FBckI7SUFDQSxJQUFJMm1CLGNBQWMsR0FBR25vQixTQUFTLENBQUN3QixVQUFWLENBQXFCLGtCQUFyQixDQUFyQjtJQUNBLElBQUluRixZQUFZLEdBQUc7TUFBRTJELFNBQVMsRUFBRUEsU0FBYjtNQUF3QmlvQixlQUFlLEVBQUVBLGVBQXpDO01BQTBEQyxjQUFjLEVBQUVBLGNBQTFFO01BQTBGQyxjQUFjLEVBQUVBLGNBQTFHO01BQTBIQyxTQUFTLEVBQUVKLGVBQWU7SUFBcEosQ0FBbkI7SUFDQTF2QixNQUFNLENBQUNDLGNBQVAsQ0FBc0I4RCxZQUF0QixFQUFvQyxpQkFBcEMsRUFBdUQ7TUFBRUcsVUFBVSxFQUFFLEtBQWQ7TUFBcUIvRCxLQUFLLEVBQUU7SUFBNUIsQ0FBdkQ7SUFDQSxPQUFPNEQsWUFBUDtFQUNIO0FBZndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ1JhOztBQUNiLElBQUlsRSxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJd1EsUUFBUSxHQUFHaFIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLCtDQUFELENBQVIsQ0FBOUI7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNxSSxJQUFJLEVBQUUsY0FEbUM7RUFFekM2RCxVQUFVLEVBQUUsRUFGNkI7RUFHekMvRixLQUFLLEVBQUU7SUFDSG5FLElBQUksRUFBRTtNQUNGcUUsSUFBSSxFQUFFaEgsTUFESjtNQUVGaUgsUUFBUSxFQUFFO0lBRlI7RUFESCxDQUhrQztFQVN6Q3BHLEtBQUssRUFBRSxpQkFBWTtJQUNmLElBQUk2RyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSXdnQixLQUFLLEdBQUcsQ0FBQyxHQUFHL25CLEtBQUssQ0FBQzBELE1BQVYsRUFBa0IsT0FBbEIsQ0FBWjs7SUFDQSxTQUFTaXNCLFVBQVQsQ0FBb0IxYixJQUFwQixFQUEwQjtNQUN0QixPQUFPLENBQUMsR0FBR3hELFFBQVEsV0FBWixFQUFzQndELElBQXRCLEVBQTRCbkMsTUFBNUIsQ0FBbUMsSUFBbkMsQ0FBUDtJQUNIOztJQUNELE9BQU87TUFBRWlXLEtBQUssRUFBRUEsS0FBVDtNQUFnQjRILFVBQVUsRUFBRUEsVUFBNUI7TUFBd0Nyb0IsU0FBUyxFQUFFQTtJQUFuRCxDQUFQO0VBQ0g7QUFoQndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ1JhOztBQUNiLElBQUk3SCxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJMnZCLFlBQVksR0FBR253QixlQUFlLENBQUNRLG1CQUFPLENBQUMsNkVBQUQsQ0FBUixDQUFsQzs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q3FJLElBQUksRUFBRSxvQkFEbUM7RUFFekNsQyxLQUFLLEVBQUU7SUFDSG5FLElBQUksRUFBRTtNQUNGcUUsSUFBSSxFQUFFaEgsTUFESjtNQUVGaUgsUUFBUSxFQUFFO0lBRlI7RUFESCxDQUZrQztFQVF6Q3BHLEtBQUssRUFBRSxpQkFBWTtJQUNmLElBQUk2RyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSXdnQixLQUFLLEdBQUcsQ0FBQyxHQUFHL25CLEtBQUssQ0FBQzBELE1BQVYsRUFBa0IsT0FBbEIsQ0FBWjtJQUNBLE9BQU87TUFBRXFrQixLQUFLLEVBQUVBLEtBQVQ7TUFBZ0I4SCxVQUFVLEVBQUVELFlBQVksV0FBeEM7TUFBa0R0b0IsU0FBUyxFQUFFQTtJQUE3RCxDQUFQO0VBQ0g7QUFad0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDUmE7O0FBQ2IxSCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLHFCQURtQztFQUV6QzZELFVBQVUsRUFBRSxFQUY2QjtFQUd6Qy9GLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQ0ZxRSxJQUFJLEVBQUVoSCxNQURKO01BRUZpSCxRQUFRLEVBQUU7SUFGUjtFQURILENBSGtDO0VBU3pDcEcsS0FBSyxFQUFFLGlCQUFZO0lBQ2YsSUFBSTZHLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJd2dCLEtBQUssR0FBRyxDQUFDLEdBQUcvbkIsS0FBSyxDQUFDMEQsTUFBVixFQUFrQixPQUFsQixDQUFaO0lBQ0EsT0FBTztNQUFFcWtCLEtBQUssRUFBRUEsS0FBVDtNQUFnQnpnQixTQUFTLEVBQUVBO0lBQTNCLENBQVA7RUFDSDtBQWJ3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNKYTs7QUFDYjFILDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNxSSxJQUFJLEVBQUUscUJBRG1DO0VBRXpDNkQsVUFBVSxFQUFFLEVBRjZCO0VBR3pDL0YsS0FBSyxFQUFFO0lBQ0huRSxJQUFJLEVBQUU7TUFDRnFFLElBQUksRUFBRWhILE1BREo7TUFFRmlILFFBQVEsRUFBRTtJQUZSO0VBREgsQ0FIa0M7RUFTekNwRyxLQUFLLEVBQUUsaUJBQVk7SUFDZixJQUFJNkcsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLElBQUl3Z0IsS0FBSyxHQUFHLENBQUMsR0FBRy9uQixLQUFLLENBQUMwRCxNQUFWLEVBQWtCLE9BQWxCLENBQVo7SUFDQSxPQUFPO01BQUVxa0IsS0FBSyxFQUFFQSxLQUFUO01BQWdCemdCLFNBQVMsRUFBRUE7SUFBM0IsQ0FBUDtFQUNIO0FBYndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ0phOztBQUNiMUgsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJQyxLQUFLLEdBQUdELG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNDLE1BQU0sRUFBRSxtQkFEaUM7RUFFekNrRyxLQUFLLEVBQUU7SUFDSG5FLElBQUksRUFBRTtNQUNGcUUsSUFBSSxFQUFFaEgsTUFESjtNQUVGaUgsUUFBUSxFQUFFO0lBRlI7RUFESCxDQUZrQztFQVF6Q3BHLEtBQUssRUFBRSxlQUFVQyxPQUFWLEVBQW1CQyxFQUFuQixFQUF1QjtJQUMxQixJQUFJQyxNQUFNLEdBQUdELEVBQUUsQ0FBQ0MsTUFBaEI7SUFDQUEsTUFBTTtJQUNOLElBQUkwRyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSXdnQixLQUFLLEdBQUcsQ0FBQyxHQUFHN25CLEtBQUssQ0FBQ3dELE1BQVYsRUFBa0IsT0FBbEIsQ0FBWjtJQUNBLElBQUlDLFlBQVksR0FBRztNQUFFMkQsU0FBUyxFQUFFQSxTQUFiO01BQXdCeWdCLEtBQUssRUFBRUE7SUFBL0IsQ0FBbkI7SUFDQW5vQixNQUFNLENBQUNDLGNBQVAsQ0FBc0I4RCxZQUF0QixFQUFvQyxpQkFBcEMsRUFBdUQ7TUFBRUcsVUFBVSxFQUFFLEtBQWQ7TUFBcUIvRCxLQUFLLEVBQUU7SUFBNUIsQ0FBdkQ7SUFDQSxPQUFPNEQsWUFBUDtFQUNIO0FBaEJ3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNMYTs7QUFDYi9ELDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLGdCQURtQztFQUV6Q2xDLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQ0ZxRSxJQUFJLEVBQUV1SixNQURKO01BRUZ0SixRQUFRLEVBQUU7SUFGUjtFQURILENBRmtDO0VBUXpDcEcsS0FBSyxFQUFFLGlCQUFZO0lBQ2YsT0FBTyxFQUFQO0VBQ0g7QUFWd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDSGE7O0FBQ2JiLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNxSSxJQUFJLEVBQUUsZ0JBRG1DO0VBRXpDbEMsS0FBSyxFQUFFO0lBQ0huRSxJQUFJLEVBQUU7TUFDRnFFLElBQUksRUFBRWhILE1BREo7TUFFRmlILFFBQVEsRUFBRTtJQUZSO0VBREgsQ0FGa0M7RUFRekNwRyxLQUFLLEVBQUUsaUJBQVk7SUFDZixJQUFJNkcsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLE9BQU87TUFBRUQsU0FBUyxFQUFFQTtJQUFiLENBQVA7RUFDSDtBQVh3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNKYTs7QUFDYjFILDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNxSSxJQUFJLEVBQUUsa0JBRG1DO0VBRXpDNkQsVUFBVSxFQUFFLEVBRjZCO0VBR3pDL0YsS0FBSyxFQUFFO0lBQ0huRSxJQUFJLEVBQUU7TUFDRnFFLElBQUksRUFBRWhILE1BREo7TUFFRmlILFFBQVEsRUFBRTtJQUZSO0VBREgsQ0FIa0M7RUFTekNwRyxLQUFLLEVBQUUsaUJBQVk7SUFDZixJQUFJNkcsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLElBQUl3Z0IsS0FBSyxHQUFHLENBQUMsR0FBRy9uQixLQUFLLENBQUMwRCxNQUFWLEVBQWtCLE9BQWxCLENBQVo7SUFDQSxPQUFPO01BQUVxa0IsS0FBSyxFQUFFQSxLQUFUO01BQWdCemdCLFNBQVMsRUFBRUE7SUFBM0IsQ0FBUDtFQUNIO0FBYndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ0phOztBQUNiMUgsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q3FJLElBQUksRUFBRSxpQkFEbUM7RUFFekNsQyxLQUFLLEVBQUU7SUFDSG5FLElBQUksRUFBRTtNQUNGcUUsSUFBSSxFQUFFaEgsTUFESjtNQUVGaUgsUUFBUSxFQUFFO0lBRlI7RUFESCxDQUZrQztFQVF6Q3BHLEtBQUssRUFBRSxpQkFBWTtJQUNmLElBQUlzbkIsS0FBSyxHQUFHLENBQUMsR0FBRy9uQixLQUFLLENBQUMwRCxNQUFWLEVBQWtCLE9BQWxCLENBQVo7SUFDQSxJQUFJNEQsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLE9BQU87TUFBRXdnQixLQUFLLEVBQUVBLEtBQVQ7TUFBZ0J6Z0IsU0FBUyxFQUFFQTtJQUEzQixDQUFQO0VBQ0g7QUFad0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDSmE7O0FBQ2IxSCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLDBCQURtQztFQUV6Q2xDLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQ0ZxRSxJQUFJLEVBQUVoSCxNQURKO01BRUZpSCxRQUFRLEVBQUU7SUFGUjtFQURILENBRmtDO0VBUXpDcEcsS0FBSyxFQUFFLGlCQUFZO0lBQ2YsSUFBSTZHLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJd2dCLEtBQUssR0FBRyxDQUFDLEdBQUcvbkIsS0FBSyxDQUFDMEQsTUFBVixFQUFrQixPQUFsQixDQUFaO0lBQ0EsT0FBTztNQUFFcWtCLEtBQUssRUFBRUEsS0FBVDtNQUFnQnpnQixTQUFTLEVBQUVBO0lBQTNCLENBQVA7RUFDSDtBQVp3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNKYTs7QUFDYixJQUFJN0gsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHRCxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3USxRQUFRLEdBQUdoUixlQUFlLENBQUNRLG1CQUFPLENBQUMsK0NBQUQsQ0FBUixDQUE5Qjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLHFCQURpQztFQUV6Q2tHLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQ0ZxRSxJQUFJLEVBQUVoSCxNQURKO01BRUZpSCxRQUFRLEVBQUU7SUFGUjtFQURILENBRmtDO0VBUXpDcEcsS0FBSyxFQUFFLGVBQVVDLE9BQVYsRUFBbUJDLEVBQW5CLEVBQXVCO0lBQzFCLElBQUlDLE1BQU0sR0FBR0QsRUFBRSxDQUFDQyxNQUFoQjtJQUNBQSxNQUFNOztJQUNOLFNBQVMrdUIsVUFBVCxDQUFvQjFiLElBQXBCLEVBQTBCO01BQ3RCLE9BQU8sQ0FBQyxHQUFHeEQsUUFBUSxXQUFaLEVBQXNCd0QsSUFBdEIsRUFBNEJuQyxNQUE1QixDQUFtQyxJQUFuQyxDQUFQO0lBQ0g7O0lBQ0QsSUFBSXhLLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJd2dCLEtBQUssR0FBRyxDQUFDLEdBQUc3bkIsS0FBSyxDQUFDd0QsTUFBVixFQUFrQixPQUFsQixDQUFaO0lBQ0EsSUFBSUMsWUFBWSxHQUFHO01BQUVnc0IsVUFBVSxFQUFFQSxVQUFkO01BQTBCcm9CLFNBQVMsRUFBRUEsU0FBckM7TUFBZ0R5Z0IsS0FBSyxFQUFFQTtJQUF2RCxDQUFuQjtJQUNBbm9CLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQjhELFlBQXRCLEVBQW9DLGlCQUFwQyxFQUF1RDtNQUFFRyxVQUFVLEVBQUUsS0FBZDtNQUFxQi9ELEtBQUssRUFBRTtJQUE1QixDQUF2RDtJQUNBLE9BQU80RCxZQUFQO0VBQ0g7QUFuQndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ1RhOztBQUNiLElBQUlsRSxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJMnZCLFlBQVksR0FBR253QixlQUFlLENBQUNRLG1CQUFPLENBQUMsNkVBQUQsQ0FBUixDQUFsQzs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q3FJLElBQUksRUFBRSxjQURtQztFQUV6Q2xDLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQ0ZxRSxJQUFJLEVBQUVoSCxNQURKO01BRUZpSCxRQUFRLEVBQUU7SUFGUjtFQURILENBRmtDO0VBUXpDcEcsS0FBSyxFQUFFLGlCQUFZO0lBQ2YsSUFBSTZHLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJd2dCLEtBQUssR0FBRyxDQUFDLEdBQUcvbkIsS0FBSyxDQUFDMEQsTUFBVixFQUFrQixPQUFsQixDQUFaO0lBQ0EsT0FBTztNQUFFcWtCLEtBQUssRUFBRUEsS0FBVDtNQUFnQjhILFVBQVUsRUFBRUQsWUFBWSxXQUF4QztNQUFrRHRvQixTQUFTLEVBQUVBO0lBQTdELENBQVA7RUFDSDtBQVp3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNSYTs7QUFDYjFILDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNxSSxJQUFJLEVBQUUsMEJBRG1DO0VBRXpDbEMsS0FBSyxFQUFFO0lBQ0huRSxJQUFJLEVBQUU7TUFDRnFFLElBQUksRUFBRWhILE1BREo7TUFFRmlILFFBQVEsRUFBRTtJQUZSO0VBREgsQ0FGa0M7RUFRekNwRyxLQUFLLEVBQUUsaUJBQVk7SUFDZixJQUFJNkcsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLElBQUl3Z0IsS0FBSyxHQUFHLENBQUMsR0FBRy9uQixLQUFLLENBQUMwRCxNQUFWLEVBQWtCLE9BQWxCLENBQVo7O0lBQ0EsU0FBU29zQixVQUFULENBQW9CQyxHQUFwQixFQUF5QjtNQUNyQixPQUFPQyxVQUFVLENBQUNELEdBQUQsQ0FBVixDQUFnQkUsT0FBaEIsQ0FBd0IsQ0FBeEIsQ0FBUDtJQUNIOztJQUNELE9BQU87TUFBRWxJLEtBQUssRUFBRUEsS0FBVDtNQUFnQitILFVBQVUsRUFBRUEsVUFBNUI7TUFBd0N4b0IsU0FBUyxFQUFFQTtJQUFuRCxDQUFQO0VBQ0g7QUFmd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDSmE7O0FBQ2IxSCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlDLEtBQUssR0FBR0QsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLGlCQURpQztFQUV6Q2tHLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQ0ZxRSxJQUFJLEVBQUVoSCxNQURKO01BRUZpSCxRQUFRLEVBQUU7SUFGUjtFQURILENBRmtDO0VBUXpDcEcsS0FBSyxFQUFFLGVBQVVDLE9BQVYsRUFBbUJDLEVBQW5CLEVBQXVCO0lBQzFCLElBQUlDLE1BQU0sR0FBR0QsRUFBRSxDQUFDQyxNQUFoQjtJQUNBQSxNQUFNO0lBQ04sSUFBSTBHLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJd2dCLEtBQUssR0FBRyxDQUFDLEdBQUc3bkIsS0FBSyxDQUFDd0QsTUFBVixFQUFrQixPQUFsQixDQUFaOztJQUNBLFNBQVNvc0IsVUFBVCxDQUFvQkMsR0FBcEIsRUFBeUI7TUFDckIsT0FBT0MsVUFBVSxDQUFDRCxHQUFELENBQVYsQ0FBZ0JFLE9BQWhCLENBQXdCLENBQXhCLENBQVA7SUFDSDs7SUFDRCxJQUFJdHNCLFlBQVksR0FBRztNQUFFMkQsU0FBUyxFQUFFQSxTQUFiO01BQXdCeWdCLEtBQUssRUFBRUEsS0FBL0I7TUFBc0MrSCxVQUFVLEVBQUVBO0lBQWxELENBQW5CO0lBQ0Fsd0IsTUFBTSxDQUFDQyxjQUFQLENBQXNCOEQsWUFBdEIsRUFBb0MsaUJBQXBDLEVBQXVEO01BQUVHLFVBQVUsRUFBRSxLQUFkO01BQXFCL0QsS0FBSyxFQUFFO0lBQTVCLENBQXZEO0lBQ0EsT0FBTzRELFlBQVA7RUFDSDtBQW5Cd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDTGE7O0FBQ2IsSUFBSWxFLGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUkydkIsWUFBWSxHQUFHbndCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw2RUFBRCxDQUFSLENBQWxDOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLGlCQURtQztFQUV6Q2xDLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQ0ZxRSxJQUFJLEVBQUVoSCxNQURKO01BRUZpSCxRQUFRLEVBQUU7SUFGUjtFQURILENBRmtDO0VBUXpDcEcsS0FBSyxFQUFFLGlCQUFZO0lBQ2YsSUFBSXNuQixLQUFLLEdBQUcsQ0FBQyxHQUFHL25CLEtBQUssQ0FBQzBELE1BQVYsRUFBa0IsT0FBbEIsQ0FBWjtJQUNBLElBQUk0RCxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsT0FBTztNQUFFd2dCLEtBQUssRUFBRUEsS0FBVDtNQUFnQjhILFVBQVUsRUFBRUQsWUFBWSxXQUF4QztNQUFrRHRvQixTQUFTLEVBQUVBO0lBQTdELENBQVA7RUFDSDtBQVp3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNSYTs7QUFDYjFILDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHRCxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsdUJBRGlDO0VBRXpDa0csS0FBSyxFQUFFO0lBQ0huRSxJQUFJLEVBQUU7TUFBRXFFLElBQUksRUFBRWhILE1BQVI7TUFBZ0JpSCxRQUFRLEVBQUU7SUFBMUI7RUFESCxDQUZrQztFQUt6Q3BHLEtBQUssRUFBRSxlQUFVQyxPQUFWLEVBQW1CQyxFQUFuQixFQUF1QjtJQUMxQixJQUFJQyxNQUFNLEdBQUdELEVBQUUsQ0FBQ0MsTUFBaEI7SUFDQUEsTUFBTTtJQUNOLElBQUkwRyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSXdnQixLQUFLLEdBQUcsQ0FBQyxHQUFHN25CLEtBQUssQ0FBQ3dELE1BQVYsRUFBa0IsT0FBbEIsQ0FBWjtJQUNBLElBQUlDLFlBQVksR0FBRztNQUFFMkQsU0FBUyxFQUFFQSxTQUFiO01BQXdCeWdCLEtBQUssRUFBRUE7SUFBL0IsQ0FBbkI7SUFDQW5vQixNQUFNLENBQUNDLGNBQVAsQ0FBc0I4RCxZQUF0QixFQUFvQyxpQkFBcEMsRUFBdUQ7TUFBRUcsVUFBVSxFQUFFLEtBQWQ7TUFBcUIvRCxLQUFLLEVBQUU7SUFBNUIsQ0FBdkQ7SUFDQSxPQUFPNEQsWUFBUDtFQUNIO0FBYndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ0xhOztBQUNiLElBQUlsRSxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJd1EsUUFBUSxHQUFHaFIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLCtDQUFELENBQVIsQ0FBOUIsRUFDQTs7O0FBQ0EsSUFBSW1qQixVQUFVLEdBQUczakIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHNGQUFELENBQVIsQ0FBaEM7O0FBQ0EsSUFBSWl3QixxQkFBcUIsR0FBR3p3QixlQUFlLENBQUNRLG1CQUFPLENBQUMsOEdBQUQsQ0FBUixDQUEzQyxFQUNBOzs7QUFDQSxJQUFJdU0sT0FBTyxHQUFHL00sZUFBZSxDQUFDUSxtQkFBTyxDQUFDLG1FQUFELENBQVIsQ0FBN0I7O0FBQ0EsSUFBSTJ2QixZQUFZLEdBQUdud0IsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDZFQUFELENBQVIsQ0FBbEM7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNxSSxJQUFJLEVBQUUsZ0JBRG1DO0VBRXpDNkQsVUFBVSxFQUFFO0lBQ1I0VyxHQUFHLEVBQUVELFVBQVUsV0FEUDtJQUVSK00sTUFBTSxFQUFFRCxxQkFBcUI7RUFGckIsQ0FGNkI7RUFNekN4cEIsS0FBSyxFQUFFO0lBQ0huRSxJQUFJLEVBQUU7TUFDRnFFLElBQUksRUFBRWhILE1BREo7TUFFRmlILFFBQVEsRUFBRTtJQUZSLENBREg7SUFLSG9aLFVBQVUsRUFBRTtNQUNSclosSUFBSSxFQUFFTyxNQURFO01BRVJOLFFBQVEsRUFBRTtJQUZGLENBTFQ7SUFTSHFSLEtBQUssRUFBRTtNQUNIdFIsSUFBSSxFQUFFdUosTUFESDtNQUVIdEosUUFBUSxFQUFFO0lBRlAsQ0FUSjtJQWFIdXBCLE9BQU8sRUFBRTtNQUNMeHBCLElBQUksRUFBRXVKLE1BREQ7TUFFTHRKLFFBQVEsRUFBRSxLQUZMO01BR0wsV0FBUztJQUhKLENBYk47SUFrQkh3cEIsZUFBZSxFQUFFO01BQ2J6cEIsSUFBSSxFQUFFdUosTUFETztNQUVidEosUUFBUSxFQUFFLEtBRkc7TUFHYixXQUFTO0lBSEksQ0FsQmQ7SUF1QkhraEIsS0FBSyxFQUFFO01BQ0huaEIsSUFBSSxFQUFFaEgsTUFESDtNQUVIaUgsUUFBUSxFQUFFO0lBRlAsQ0F2Qko7SUEyQkh5RyxTQUFTLEVBQUU7TUFDUDFHLElBQUksRUFBRUssT0FEQztNQUVQSixRQUFRLEVBQUU7SUFGSDtFQTNCUixDQU5rQztFQXNDekNwRyxLQUFLLEVBQUUsZUFBVWlHLEtBQVYsRUFBaUI7SUFDcEIsSUFBSVksU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLElBQUl1SyxNQUFNLEdBQUcsZUFBYjtJQUNBLElBQUl2UCxJQUFJLEdBQUcsQ0FBQyxHQUFHdkMsS0FBSyxDQUFDME0sTUFBVixFQUFrQmhHLEtBQWxCLEVBQXlCbkUsSUFBcEM7SUFDQSxJQUFJK3RCLFVBQVUsR0FBRy90QixJQUFJLENBQUN4QyxLQUFMLENBQVd3d0IsT0FBNUI7SUFDQSxJQUFJQyxlQUFlLEdBQUcsSUFBdEI7SUFDQSxPQUFPO01BQ0hDLE1BQU0sRUFBRWhnQixRQUFRLFdBRGI7TUFFSHFCLE1BQU0sRUFBRUEsTUFGTDtNQUdId2UsVUFBVSxFQUFFQSxVQUhUO01BSUgxakIsZ0JBQWdCLEVBQUVKLE9BQU8sV0FKdEI7TUFLSGdrQixlQUFlLEVBQUVBLGVBTGQ7TUFNSFgsVUFBVSxFQUFFRCxZQUFZLFdBTnJCO01BT0h0b0IsU0FBUyxFQUFFQTtJQVBSLENBQVA7RUFTSDtBQXJEd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDZGE7O0FBQ2IxSCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLGdCQURtQztFQUV6Q2xDLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQ0ZxRSxJQUFJLEVBQUVoSCxNQURKO01BRUZpSCxRQUFRLEVBQUU7SUFGUjtFQURILENBRmtDO0VBUXpDcEcsS0FBSyxFQUFFLGlCQUFZO0lBQ2YsSUFBSTZHLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJd2dCLEtBQUssR0FBRyxDQUFDLEdBQUcvbkIsS0FBSyxDQUFDMEQsTUFBVixFQUFrQixPQUFsQixDQUFaOztJQUNBLFNBQVNvc0IsVUFBVCxDQUFvQkMsR0FBcEIsRUFBeUI7TUFDckIsT0FBT0MsVUFBVSxDQUFDRCxHQUFELENBQVYsQ0FBZ0JFLE9BQWhCLENBQXdCLENBQXhCLENBQVA7SUFDSDs7SUFDRCxPQUFPO01BQUVsSSxLQUFLLEVBQUVBLEtBQVQ7TUFBZ0IrSCxVQUFVLEVBQUVBLFVBQTVCO01BQXdDeG9CLFNBQVMsRUFBRUE7SUFBbkQsQ0FBUDtFQUNIO0FBZndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ0phOztBQUNiLElBQUk3SCxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJMnZCLFlBQVksR0FBR253QixlQUFlLENBQUNRLG1CQUFPLENBQUMsNkVBQUQsQ0FBUixDQUFsQzs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q3FJLElBQUksRUFBRSxhQURtQztFQUV6Q2xDLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQ0ZxRSxJQUFJLEVBQUVoSCxNQURKO01BRUZpSCxRQUFRLEVBQUU7SUFGUjtFQURILENBRmtDO0VBUXpDcEcsS0FBSyxFQUFFLGlCQUFZO0lBQ2YsSUFBSTZHLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJd2dCLEtBQUssR0FBRyxDQUFDLEdBQUcvbkIsS0FBSyxDQUFDMEQsTUFBVixFQUFrQixPQUFsQixDQUFaO0lBQ0EsT0FBTztNQUFFcWtCLEtBQUssRUFBRUEsS0FBVDtNQUFnQjhILFVBQVUsRUFBRUQsWUFBWSxXQUF4QztNQUFrRHRvQixTQUFTLEVBQUVBO0lBQTdELENBQVA7RUFDSDtBQVp3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNSYTs7QUFDYjFILDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNxSSxJQUFJLEVBQUUsZUFEbUM7RUFFekM2RCxVQUFVLEVBQUUsRUFGNkI7RUFHekMvRixLQUFLLEVBQUU7SUFDSG5FLElBQUksRUFBRTtNQUNGcUUsSUFBSSxFQUFFaEgsTUFESjtNQUVGaUgsUUFBUSxFQUFFO0lBRlI7RUFESCxDQUhrQztFQVN6Q3BHLEtBQUssRUFBRSxpQkFBWTtJQUNmLElBQUk2RyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSXdnQixLQUFLLEdBQUcsQ0FBQyxHQUFHL25CLEtBQUssQ0FBQzBELE1BQVYsRUFBa0IsT0FBbEIsQ0FBWjtJQUNBLE9BQU87TUFBRXFrQixLQUFLLEVBQUVBLEtBQVQ7TUFBZ0J6Z0IsU0FBUyxFQUFFQTtJQUEzQixDQUFQO0VBQ0g7QUFid0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDSmE7O0FBQ2IsSUFBSTdILGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUkydkIsWUFBWSxHQUFHbndCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw2RUFBRCxDQUFSLENBQWxDOztBQUNBLElBQUltakIsVUFBVSxHQUFHM2pCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxzRkFBRCxDQUFSLENBQWhDOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLHNCQURtQztFQUV6QzZELFVBQVUsRUFBRTtJQUNSNFcsR0FBRyxFQUFFRCxVQUFVO0VBRFAsQ0FGNkI7RUFLekMxYyxLQUFLLEVBQUU7SUFDSG5FLElBQUksRUFBRTtNQUNGcUUsSUFBSSxFQUFFaEgsTUFESjtNQUVGaUgsUUFBUSxFQUFFO0lBRlI7RUFESCxDQUxrQztFQVd6Q3BHLEtBQUssRUFBRSxpQkFBWTtJQUNmLElBQUk2RyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSXdnQixLQUFLLEdBQUcsQ0FBQyxHQUFHL25CLEtBQUssQ0FBQzBELE1BQVYsRUFBa0IsT0FBbEIsQ0FBWjtJQUNBLE9BQU87TUFBRXFrQixLQUFLLEVBQUVBLEtBQVQ7TUFBZ0I4SCxVQUFVLEVBQUVELFlBQVksV0FBeEM7TUFBa0R0b0IsU0FBUyxFQUFFQTtJQUE3RCxDQUFQO0VBQ0g7QUFmd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDVGE7O0FBQ2IsSUFBSTdILGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5CLEVBQ0E7OztBQUNBLElBQUltakIsVUFBVSxHQUFHM2pCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxzRkFBRCxDQUFSLENBQWhDOztBQUNBLElBQUkycUIsZUFBZSxHQUFHbnJCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxrR0FBRCxDQUFSLENBQXJDOztBQUNBLElBQUl1RyxrQkFBa0IsR0FBRy9HLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxzRkFBRCxDQUFSLENBQXhDLEVBQ0E7OztBQUNBLElBQUk4TSxPQUFPLEdBQUc5TSxtQkFBTyxDQUFDLG1FQUFELENBQXJCOztBQUNBLElBQUlxbUIsT0FBTyxHQUFHcm1CLG1CQUFPLENBQUMsMkZBQUQsQ0FBckIsRUFDQTs7O0FBQ0EsSUFBSXVNLE9BQU8sR0FBRy9NLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxtRUFBRCxDQUFSLENBQTdCOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLGlCQURtQztFQUV6QzZELFVBQVUsRUFBRTtJQUNSaWtCLFlBQVksRUFBRXBLLE9BQU8sQ0FBQ29LLFlBRGQ7SUFFUkMsT0FBTyxFQUFFckssT0FBTyxDQUFDcUssT0FGVDtJQUdSQyxTQUFTLEVBQUV0SyxPQUFPLENBQUNzSyxTQUhYO0lBSVJDLGlCQUFpQixFQUFFdkssT0FBTyxDQUFDdUssaUJBSm5CO0lBS1JDLFdBQVcsRUFBRXhLLE9BQU8sQ0FBQ3dLLFdBTGI7SUFNUkMsU0FBUyxFQUFFekssT0FBTyxDQUFDeUssU0FOWDtJQU9SQyxRQUFRLEVBQUUxSyxPQUFPLENBQUMwSyxRQVBWO0lBUVJDLFlBQVksRUFBRTNLLE9BQU8sQ0FBQzJLLFlBUmQ7SUFTUkMsTUFBTSxFQUFFNUssT0FBTyxDQUFDNEssTUFUUjtJQVVSN04sR0FBRyxFQUFFRCxVQUFVLFdBVlA7SUFXUjZILFNBQVMsRUFBRUwsZUFBZSxXQVhsQjtJQVlScmUsS0FBSyxFQUFFL0Ysa0JBQWtCO0VBWmpCLENBRjZCO0VBZ0J6Q0UsS0FBSyxFQUFFO0lBQ0hpVixRQUFRLEVBQUU7TUFDTi9VLElBQUksRUFBRWhILE1BREE7TUFFTmlILFFBQVEsRUFBRTtJQUZKLENBRFA7SUFLSHNxQixXQUFXLEVBQUU7TUFDVHZxQixJQUFJLEVBQUVoSCxNQURHO01BRVRpSCxRQUFRLEVBQUU7SUFGRCxDQUxWO0lBU0h1cUIsU0FBUyxFQUFFO01BQ1B4cUIsSUFBSSxFQUFFaEgsTUFEQztNQUVQaUgsUUFBUSxFQUFFO0lBRkgsQ0FUUjtJQWFId3FCLE1BQU0sRUFBRTtNQUNKenFCLElBQUksRUFBRXFSLEtBREY7TUFFSnBSLFFBQVEsRUFBRTtJQUZOLENBYkw7SUFpQkhraEIsS0FBSyxFQUFFO01BQ0huaEIsSUFBSSxFQUFFaEgsTUFESDtNQUVIaUgsUUFBUSxFQUFFO0lBRlAsQ0FqQko7SUFxQkgwQyxLQUFLLEVBQUU7TUFDSDNDLElBQUksRUFBRWhILE1BREg7TUFFSGlILFFBQVEsRUFBRTtJQUZQLENBckJKO0lBeUJIeXFCLE9BQU8sRUFBRTtNQUNMMXFCLElBQUksRUFBRWhILE1BREQ7TUFFTGlILFFBQVEsRUFBRTtJQUZMO0VBekJOLENBaEJrQztFQThDekNwRyxLQUFLLEVBQUUsZUFBVWlHLEtBQVYsRUFBaUI7SUFDcEIsSUFBSS9GLEVBQUo7O0lBQ0EsSUFBSTJHLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJZ3FCLFdBQVcsR0FBRyw4R0FBbEI7SUFDQSxJQUFJM2EsU0FBUyxHQUFHLENBQUMsR0FBRzVXLEtBQUssQ0FBQ2dJLFFBQVYsRUFBb0I7TUFDaENrRyxVQUFVLEVBQUUsS0FEb0I7TUFFaEMxRSxPQUFPLEVBQUUsRUFGdUI7TUFHaEM1QyxJQUFJLEVBQUU7SUFIMEIsQ0FBcEIsQ0FBaEI7O0lBS0EsSUFBSVEsRUFBRSxHQUFHLENBQUMsR0FBR3BILEtBQUssQ0FBQzBNLE1BQVYsRUFBa0JoRyxLQUFsQixDQUFUO0lBQUEsSUFBbUMwcUIsU0FBUyxHQUFHaHFCLEVBQUUsQ0FBQ2dxQixTQUFsRDtJQUFBLElBQTZEelYsUUFBUSxHQUFHdlUsRUFBRSxDQUFDdVUsUUFBM0U7SUFBQSxJQUFxRjBWLE1BQU0sR0FBR2pxQixFQUFFLENBQUNpcUIsTUFBakc7SUFBQSxJQUF5R0YsV0FBVyxHQUFHL3BCLEVBQUUsQ0FBQytwQixXQUExSDs7SUFDQSxJQUFJdHBCLFdBQVcsR0FBRyxDQUFDLEdBQUc3SCxLQUFLLENBQUNnQixHQUFWLEVBQWUsS0FBZixDQUFsQjtJQUNBLElBQUlzbkIsU0FBUyxHQUFHLENBQUMsR0FBR3RvQixLQUFLLENBQUNnQixHQUFWLEVBQWUsQ0FBZixDQUFoQjtJQUNBLElBQUl1bkIsV0FBVyxHQUFHLENBQUMsR0FBR3ZvQixLQUFLLENBQUNnQixHQUFWLEVBQWUsQ0FBZixDQUFsQixDQVpvQixDQWFwQjs7SUFDQSxJQUFJd3dCLGFBQWEsR0FBR0osU0FBUyxDQUFDcnhCLEtBQVYsQ0FBZ0JxeEIsU0FBcEM7SUFDQSxJQUFJSyxVQUFVLEdBQUdKLE1BQU0sQ0FBQ3R4QixLQUF4QixDQWZvQixDQWdCcEI7O0lBQ0EsSUFBSTJ4QixVQUFVLEdBQUc7TUFDYi9WLFFBQVEsRUFBRUEsUUFBUSxDQUFDNWIsS0FBVCxDQUFleUksRUFEWjtNQUViM0QsTUFBTSxFQUFFdXNCLFNBQVMsQ0FBQ3J4QixLQUFWLENBQWdCNHhCLFNBRlg7TUFHYlAsU0FBUyxFQUFFQSxTQUFTLENBQUNyeEIsS0FBVixDQUFnQnlJO0lBSGQsQ0FBakI7SUFLQSxDQUFDLEdBQUd4SSxLQUFLLENBQUNrcUIsT0FBVixFQUFtQixZQUFuQixFQUFpQ3dILFVBQWpDO0lBQ0EsSUFBSXpSLFVBQVUsR0FBR3RFLFFBQVEsQ0FBQzViLEtBQVQsQ0FBZXlJLEVBQWhDO0lBQUEsSUFBb0NvcEIsWUFBWSxHQUFHLGFBQWFqd0IsTUFBYixDQUFvQnNlLFVBQXBCLENBQW5EO0lBQUEsSUFBb0Y0UixRQUFRLEdBQUdULFNBQVMsQ0FBQ3J4QixLQUFWLENBQWdCNHhCLFNBQS9HO0lBQUEsSUFBMEh0QixlQUFlLEdBQUcsQ0FBQzF2QixFQUFFLEdBQUdnYixRQUFRLENBQUM1YixLQUFULENBQWUycEIsb0JBQXJCLE1BQStDLElBQS9DLElBQXVEL29CLEVBQUUsS0FBSyxLQUFLLENBQW5FLEdBQXVFLEtBQUssQ0FBNUUsR0FBZ0ZBLEVBQUUsQ0FBQzJILFFBQS9OO0lBQUEsSUFBeU93cEIsYUFBYSxHQUFHLENBQUMsR0FBR3RsQixPQUFPLFdBQVgsRUFBcUJtUCxRQUFRLENBQUM1YixLQUFULENBQWVtWSxLQUFwQyxFQUEyQ21ZLGVBQTNDLENBQXpQO0lBQUEsSUFBc1QwQixZQUFZLEdBQUcsQ0FBQyxHQUFHdmxCLE9BQU8sV0FBWCxFQUFxQjJrQixXQUFXLENBQUNweEIsS0FBWixDQUFrQixDQUFsQixFQUFxQnVjLFNBQTFDLEVBQXFEK1QsZUFBckQsQ0FBclU7SUFBQSxJQUE0WTJCLFVBQVUsR0FBRyxHQUFHcndCLE1BQUgsQ0FBVWl3QixZQUFWLEVBQXdCLFVBQXhCLEVBQW9DandCLE1BQXBDLENBQTJDa3dCLFFBQTNDLENBQXpaO0lBQUEsSUFBK2NJLGFBQWEsR0FBRyxXQUFXdHdCLE1BQVgsQ0FBa0Jrd0IsUUFBbEIsRUFBNEIsWUFBNUIsQ0FBL2Q7SUFBQSxJQUEwZ0JLLGNBQWMsR0FBRyxDQUFDLEdBQUcxbEIsT0FBTyxXQUFYLEVBQXFCZ2xCLGFBQWEsQ0FBQ3RaLEtBQWQsQ0FBb0IsQ0FBcEIsRUFBdUJvRSxTQUE1QyxFQUF1RCtULGVBQXZELENBQTNoQjs7SUFDQSxJQUFJdkgsU0FBUyxHQUFHLFNBQVpBLFNBQVksQ0FBVTNULEtBQVYsRUFBaUI7TUFDN0JvVCxXQUFXLENBQUN4b0IsS0FBWixHQUFvQm9WLEtBQUssQ0FBQzBILE1BQU4sQ0FBYTVTLFVBQWpDOztNQUNBLElBQUlzZSxXQUFXLENBQUN4b0IsS0FBWixHQUFvQixJQUF4QixFQUE4QjtRQUMxQnFCLFFBQVEsQ0FBQ2lKLGVBQVQsQ0FBeUIvSSxLQUF6QixDQUErQmdKLFFBQS9CLEdBQTBDLE1BQTFDO01BQ0gsQ0FGRCxNQUdLO1FBQ0R6QyxXQUFXLENBQUM5SCxLQUFaLEtBQ0txQixRQUFRLENBQUNpSixlQUFULENBQXlCL0ksS0FBekIsQ0FBK0JnSixRQUEvQixHQUEwQyxRQUQvQztNQUVIO0lBQ0osQ0FURDtJQVVBO0FBQ1I7QUFDQTs7O0lBQ1EsSUFBSXFDLGNBQWMsR0FBRyxDQUNqQjtNQUNJdUwsS0FBSyxFQUFFNVEsU0FBUyxDQUFDdWlCLFdBQVYsQ0FBc0IsNEJBQXRCLENBRFg7TUFFSXJuQixJQUFJLEVBQUU7SUFGVixDQURpQixFQUtqQjtNQUNJMFYsS0FBSyxFQUFFNFosYUFEWDtNQUVJdHZCLElBQUksRUFBRW92QjtJQUZWLENBTGlCLEVBU2pCO01BQ0kxWixLQUFLLEVBQUU2WixZQURYO01BRUl2dkIsSUFBSSxFQUFFd3ZCO0lBRlYsQ0FUaUIsRUFhakI7TUFDSTlaLEtBQUssRUFBRWdhLGNBRFg7TUFFSTF2QixJQUFJLEVBQUU7SUFGVixDQWJpQixDQUFyQjs7SUFrQkEsSUFBSW1tQixZQUFZLEdBQUcsU0FBZkEsWUFBZSxHQUFZO01BQzNCTCxTQUFTLENBQUN2b0IsS0FBVixHQUFrQjRDLE1BQU0sQ0FBQ2ltQixPQUF6QjtJQUNILENBRkQ7O0lBR0EsQ0FBQyxHQUFHNW9CLEtBQUssQ0FBQ2tCLFNBQVYsRUFBcUIsWUFBWTtNQUM3QnlCLE1BQU0sQ0FBQ3FRLGdCQUFQLENBQXdCLFFBQXhCLEVBQWtDOFYsU0FBbEM7TUFDQW5tQixNQUFNLENBQUNxUSxnQkFBUCxDQUF3QixRQUF4QixFQUFrQzJWLFlBQWxDOztNQUNBLElBQUlqaUIsS0FBSyxDQUFDNkMsS0FBTixDQUFZQyxPQUFaLEtBQXdCLEVBQTVCLEVBQWdDO1FBQzVCb04sU0FBUyxDQUFDaFEsSUFBVixHQUFpQkYsS0FBSyxDQUFDNkMsS0FBTixDQUFZM0MsSUFBN0I7UUFDQWdRLFNBQVMsQ0FBQzFJLFVBQVYsR0FBdUIsSUFBdkI7UUFDQTBJLFNBQVMsQ0FBQ3BOLE9BQVYsR0FBb0I5QyxLQUFLLENBQUM2QyxLQUFOLENBQVlDLE9BQWhDO01BQ0g7O01BQ0RDLFVBQVUsQ0FBQyxZQUFZO1FBQ25CbU4sU0FBUyxDQUFDMUksVUFBVixHQUF1QixLQUF2QjtNQUNILENBRlMsRUFFUCxJQUZPLENBQVY7SUFHSCxDQVhEO0lBWUEsSUFBSTJhLFlBQVksR0FBRyxDQUFDLEdBQUc3b0IsS0FBSyxDQUFDd0QsUUFBVixFQUFvQixZQUFZO01BQy9DLE9BQU84a0IsU0FBUyxDQUFDdm9CLEtBQVYsS0FBb0IsQ0FBM0I7SUFDSCxDQUZrQixDQUFuQjtJQUdBLENBQUMsR0FBR0MsS0FBSyxDQUFDcU0sV0FBVixFQUF1QixZQUFZO01BQy9CMUosTUFBTSxDQUFDeVEsbUJBQVAsQ0FBMkIsUUFBM0IsRUFBcUN1VixZQUFyQztNQUNBaG1CLE1BQU0sQ0FBQ3lRLG1CQUFQLENBQTJCLFFBQTNCLEVBQXFDMFYsU0FBckM7SUFDSCxDQUhEO0lBSUEsQ0FBQyxHQUFHOW9CLEtBQUssQ0FBQ2dKLEtBQVYsRUFBaUIsWUFBWTtNQUFFLE9BQU9uQixXQUFXLENBQUM5SCxLQUFuQjtJQUEyQixDQUExRCxFQUE0RCxVQUFVcUssT0FBVixFQUFtQjtNQUMzRSxJQUFJQSxPQUFKLEVBQWE7UUFDVGhKLFFBQVEsQ0FBQ2lKLGVBQVQsQ0FBeUIvSSxLQUF6QixDQUErQmdKLFFBQS9CLEdBQTBDLFFBQTFDO01BQ0gsQ0FGRCxNQUlJbEosUUFBUSxDQUFDaUosZUFBVCxDQUF5Qi9JLEtBQXpCLENBQStCZ0osUUFBL0IsR0FBMEMsTUFBMUM7SUFDUCxDQU5EO0lBT0EsT0FBTztNQUNIaW5CLFdBQVcsRUFBRUEsV0FEVjtNQUVIVyxjQUFjLEVBQUVBLGNBRmI7TUFHSFYsYUFBYSxFQUFFQSxhQUhaO01BSUhJLFlBQVksRUFBRUEsWUFKWDtNQUtISSxVQUFVLEVBQUVBLFVBTFQ7TUFNSEMsYUFBYSxFQUFFQSxhQU5aO01BT0h0bEIsY0FBYyxFQUFFQSxjQVBiO01BUUhpSyxTQUFTLEVBQUVBLFNBUlI7TUFTSDZhLFVBQVUsRUFBRUEsVUFUVDtNQVVINXBCLFdBQVcsRUFBRUEsV0FWVjtNQVdIZ2hCLFlBQVksRUFBRUEsWUFYWDtNQVlIc0osaUJBQWlCLEVBQUVwbEIsT0FBTyxDQUFDb2xCLGlCQVp4QjtNQWFIN3FCLFNBQVMsRUFBRUE7SUFiUixDQUFQO0VBZUg7QUFqSndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ2hCYTs7QUFDYixJQUFJdkQsU0FBUyxHQUFJLFFBQVEsS0FBS0EsU0FBZCxJQUE0QixVQUFVQyxPQUFWLEVBQW1CQyxVQUFuQixFQUErQkMsQ0FBL0IsRUFBa0NDLFNBQWxDLEVBQTZDO0VBQ3JGLFNBQVNDLEtBQVQsQ0FBZXJFLEtBQWYsRUFBc0I7SUFBRSxPQUFPQSxLQUFLLFlBQVltRSxDQUFqQixHQUFxQm5FLEtBQXJCLEdBQTZCLElBQUltRSxDQUFKLENBQU0sVUFBVUcsT0FBVixFQUFtQjtNQUFFQSxPQUFPLENBQUN0RSxLQUFELENBQVA7SUFBaUIsQ0FBNUMsQ0FBcEM7RUFBb0Y7O0VBQzVHLE9BQU8sS0FBS21FLENBQUMsS0FBS0EsQ0FBQyxHQUFHSSxPQUFULENBQU4sRUFBeUIsVUFBVUQsT0FBVixFQUFtQkUsTUFBbkIsRUFBMkI7SUFDdkQsU0FBU0MsU0FBVCxDQUFtQnpFLEtBQW5CLEVBQTBCO01BQUUsSUFBSTtRQUFFMEUsSUFBSSxDQUFDTixTQUFTLENBQUNPLElBQVYsQ0FBZTNFLEtBQWYsQ0FBRCxDQUFKO01BQThCLENBQXBDLENBQXFDLE9BQU80RSxDQUFQLEVBQVU7UUFBRUosTUFBTSxDQUFDSSxDQUFELENBQU47TUFBWTtJQUFFOztJQUMzRixTQUFTQyxRQUFULENBQWtCN0UsS0FBbEIsRUFBeUI7TUFBRSxJQUFJO1FBQUUwRSxJQUFJLENBQUNOLFNBQVMsQ0FBQyxPQUFELENBQVQsQ0FBbUJwRSxLQUFuQixDQUFELENBQUo7TUFBa0MsQ0FBeEMsQ0FBeUMsT0FBTzRFLENBQVAsRUFBVTtRQUFFSixNQUFNLENBQUNJLENBQUQsQ0FBTjtNQUFZO0lBQUU7O0lBQzlGLFNBQVNGLElBQVQsQ0FBY0ksTUFBZCxFQUFzQjtNQUFFQSxNQUFNLENBQUNDLElBQVAsR0FBY1QsT0FBTyxDQUFDUSxNQUFNLENBQUM5RSxLQUFSLENBQXJCLEdBQXNDcUUsS0FBSyxDQUFDUyxNQUFNLENBQUM5RSxLQUFSLENBQUwsQ0FBb0JrQyxJQUFwQixDQUF5QnVDLFNBQXpCLEVBQW9DSSxRQUFwQyxDQUF0QztJQUFzRjs7SUFDOUdILElBQUksQ0FBQyxDQUFDTixTQUFTLEdBQUdBLFNBQVMsQ0FBQ1ksS0FBVixDQUFnQmYsT0FBaEIsRUFBeUJDLFVBQVUsSUFBSSxFQUF2QyxDQUFiLEVBQXlEUyxJQUF6RCxFQUFELENBQUo7RUFDSCxDQUxNLENBQVA7QUFNSCxDQVJEOztBQVNBLElBQUlNLFdBQVcsR0FBSSxRQUFRLEtBQUtBLFdBQWQsSUFBOEIsVUFBVWhCLE9BQVYsRUFBbUJqQixJQUFuQixFQUF5QjtFQUNyRSxJQUFJa0MsQ0FBQyxHQUFHO0lBQUVDLEtBQUssRUFBRSxDQUFUO0lBQVlDLElBQUksRUFBRSxnQkFBVztNQUFFLElBQUlDLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBTyxDQUFYLEVBQWMsTUFBTUEsQ0FBQyxDQUFDLENBQUQsQ0FBUDtNQUFZLE9BQU9BLENBQUMsQ0FBQyxDQUFELENBQVI7SUFBYyxDQUF2RTtJQUF5RUMsSUFBSSxFQUFFLEVBQS9FO0lBQW1GQyxHQUFHLEVBQUU7RUFBeEYsQ0FBUjtFQUFBLElBQXNHQyxDQUF0RztFQUFBLElBQXlHQyxDQUF6RztFQUFBLElBQTRHSixDQUE1RztFQUFBLElBQStHSyxDQUEvRztFQUNBLE9BQU9BLENBQUMsR0FBRztJQUFFZixJQUFJLEVBQUVnQixJQUFJLENBQUMsQ0FBRCxDQUFaO0lBQWlCLFNBQVNBLElBQUksQ0FBQyxDQUFELENBQTlCO0lBQW1DLFVBQVVBLElBQUksQ0FBQyxDQUFEO0VBQWpELENBQUosRUFBNEQsT0FBT0MsTUFBUCxLQUFrQixVQUFsQixLQUFpQ0YsQ0FBQyxDQUFDRSxNQUFNLENBQUNDLFFBQVIsQ0FBRCxHQUFxQixZQUFXO0lBQUUsT0FBTyxJQUFQO0VBQWMsQ0FBakYsQ0FBNUQsRUFBZ0pILENBQXZKOztFQUNBLFNBQVNDLElBQVQsQ0FBY0csQ0FBZCxFQUFpQjtJQUFFLE9BQU8sVUFBVUMsQ0FBVixFQUFhO01BQUUsT0FBT3JCLElBQUksQ0FBQyxDQUFDb0IsQ0FBRCxFQUFJQyxDQUFKLENBQUQsQ0FBWDtJQUFzQixDQUE1QztFQUErQzs7RUFDbEUsU0FBU3JCLElBQVQsQ0FBY3NCLEVBQWQsRUFBa0I7SUFDZCxJQUFJUixDQUFKLEVBQU8sTUFBTSxJQUFJUyxTQUFKLENBQWMsaUNBQWQsQ0FBTjs7SUFDUCxPQUFPUCxDQUFDLEtBQUtBLENBQUMsR0FBRyxDQUFKLEVBQU9NLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVWQsQ0FBQyxHQUFHLENBQWQsQ0FBWixDQUFELEVBQWdDQSxDQUF2QztNQUEwQyxJQUFJO1FBQzFDLElBQUlNLENBQUMsR0FBRyxDQUFKLEVBQU9DLENBQUMsS0FBS0osQ0FBQyxHQUFHVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVEsQ0FBUixHQUFZUCxDQUFDLENBQUMsUUFBRCxDQUFiLEdBQTBCTyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFQLENBQUMsQ0FBQyxPQUFELENBQUQsS0FBZSxDQUFDSixDQUFDLEdBQUdJLENBQUMsQ0FBQyxRQUFELENBQU4sS0FBcUJKLENBQUMsQ0FBQ2EsSUFBRixDQUFPVCxDQUFQLENBQXJCLEVBQWdDLENBQS9DLENBQVIsR0FBNERBLENBQUMsQ0FBQ2QsSUFBakcsQ0FBRCxJQUEyRyxDQUFDLENBQUNVLENBQUMsR0FBR0EsQ0FBQyxDQUFDYSxJQUFGLENBQU9ULENBQVAsRUFBVU8sRUFBRSxDQUFDLENBQUQsQ0FBWixDQUFMLEVBQXVCakIsSUFBOUksRUFBb0osT0FBT00sQ0FBUDtRQUNwSixJQUFJSSxDQUFDLEdBQUcsQ0FBSixFQUFPSixDQUFYLEVBQWNXLEVBQUUsR0FBRyxDQUFDQSxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVEsQ0FBVCxFQUFZWCxDQUFDLENBQUNyRixLQUFkLENBQUw7O1FBQ2QsUUFBUWdHLEVBQUUsQ0FBQyxDQUFELENBQVY7VUFDSSxLQUFLLENBQUw7VUFBUSxLQUFLLENBQUw7WUFBUVgsQ0FBQyxHQUFHVyxFQUFKO1lBQVE7O1VBQ3hCLEtBQUssQ0FBTDtZQUFRZCxDQUFDLENBQUNDLEtBQUY7WUFBVyxPQUFPO2NBQUVuRixLQUFLLEVBQUVnRyxFQUFFLENBQUMsQ0FBRCxDQUFYO2NBQWdCakIsSUFBSSxFQUFFO1lBQXRCLENBQVA7O1VBQ25CLEtBQUssQ0FBTDtZQUFRRyxDQUFDLENBQUNDLEtBQUY7WUFBV00sQ0FBQyxHQUFHTyxFQUFFLENBQUMsQ0FBRCxDQUFOO1lBQVdBLEVBQUUsR0FBRyxDQUFDLENBQUQsQ0FBTDtZQUFVOztVQUN4QyxLQUFLLENBQUw7WUFBUUEsRUFBRSxHQUFHZCxDQUFDLENBQUNLLEdBQUYsQ0FBTVksR0FBTixFQUFMOztZQUFrQmpCLENBQUMsQ0FBQ0ksSUFBRixDQUFPYSxHQUFQOztZQUFjOztVQUN4QztZQUNJLElBQUksRUFBRWQsQ0FBQyxHQUFHSCxDQUFDLENBQUNJLElBQU4sRUFBWUQsQ0FBQyxHQUFHQSxDQUFDLENBQUNlLE1BQUYsR0FBVyxDQUFYLElBQWdCZixDQUFDLENBQUNBLENBQUMsQ0FBQ2UsTUFBRixHQUFXLENBQVosQ0FBbkMsTUFBdURKLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFWLElBQWVBLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFoRixDQUFKLEVBQXdGO2NBQUVkLENBQUMsR0FBRyxDQUFKO2NBQU87WUFBVzs7WUFDNUcsSUFBSWMsRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVLENBQVYsS0FBZ0IsQ0FBQ1gsQ0FBRCxJQUFPVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFYLENBQUMsQ0FBQyxDQUFELENBQVQsSUFBZ0JXLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUVgsQ0FBQyxDQUFDLENBQUQsQ0FBaEQsQ0FBSixFQUEyRDtjQUFFSCxDQUFDLENBQUNDLEtBQUYsR0FBVWEsRUFBRSxDQUFDLENBQUQsQ0FBWjtjQUFpQjtZQUFROztZQUN0RixJQUFJQSxFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVUsQ0FBVixJQUFlZCxDQUFDLENBQUNDLEtBQUYsR0FBVUUsQ0FBQyxDQUFDLENBQUQsQ0FBOUIsRUFBbUM7Y0FBRUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQVg7Y0FBZ0JBLENBQUMsR0FBR1csRUFBSjtjQUFRO1lBQVE7O1lBQ3JFLElBQUlYLENBQUMsSUFBSUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQXBCLEVBQXlCO2NBQUVILENBQUMsQ0FBQ0MsS0FBRixHQUFVRSxDQUFDLENBQUMsQ0FBRCxDQUFYOztjQUFnQkgsQ0FBQyxDQUFDSyxHQUFGLENBQU1jLElBQU4sQ0FBV0wsRUFBWDs7Y0FBZ0I7WUFBUTs7WUFDbkUsSUFBSVgsQ0FBQyxDQUFDLENBQUQsQ0FBTCxFQUFVSCxDQUFDLENBQUNLLEdBQUYsQ0FBTVksR0FBTjs7WUFDVmpCLENBQUMsQ0FBQ0ksSUFBRixDQUFPYSxHQUFQOztZQUFjO1FBWHRCOztRQWFBSCxFQUFFLEdBQUdoRCxJQUFJLENBQUNrRCxJQUFMLENBQVVqQyxPQUFWLEVBQW1CaUIsQ0FBbkIsQ0FBTDtNQUNILENBakJ5QyxDQWlCeEMsT0FBT04sQ0FBUCxFQUFVO1FBQUVvQixFQUFFLEdBQUcsQ0FBQyxDQUFELEVBQUlwQixDQUFKLENBQUw7UUFBYWEsQ0FBQyxHQUFHLENBQUo7TUFBUSxDQWpCTyxTQWlCRTtRQUFFRCxDQUFDLEdBQUdILENBQUMsR0FBRyxDQUFSO01BQVk7SUFqQjFEOztJQWtCQSxJQUFJVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVEsQ0FBWixFQUFlLE1BQU1BLEVBQUUsQ0FBQyxDQUFELENBQVI7SUFBYSxPQUFPO01BQUVoRyxLQUFLLEVBQUVnRyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFBLEVBQUUsQ0FBQyxDQUFELENBQVYsR0FBZ0IsS0FBSyxDQUE5QjtNQUFpQ2pCLElBQUksRUFBRTtJQUF2QyxDQUFQO0VBQy9CO0FBQ0osQ0ExQkQ7O0FBMkJBLElBQUlyRixlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJSSxPQUFPLEdBQUdaLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0Q0FBRCxDQUFSLENBQTdCLEVBQ0E7OztBQUNBLElBQUl3WSxxQkFBcUIsR0FBR2haLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0RkFBRCxDQUFSLENBQTNDOztBQUNBLElBQUkwcUIscUJBQXFCLEdBQUdsckIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRGQUFELENBQVIsQ0FBM0M7O0FBQ0EsSUFBSTJxQixlQUFlLEdBQUduckIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGtHQUFELENBQVIsQ0FBckM7O0FBQ0EsSUFBSXVHLGtCQUFrQixHQUFHL0csZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHNGQUFELENBQVIsQ0FBeEM7O0FBQ0EsSUFBSW15QixrQkFBa0IsR0FBRzN5QixlQUFlLENBQUNRLG1CQUFPLENBQUMsd0dBQUQsQ0FBUixDQUF4QyxFQUNBOzs7QUFDQSxJQUFJMnZCLFlBQVksR0FBR253QixlQUFlLENBQUNRLG1CQUFPLENBQUMsNkVBQUQsQ0FBUixDQUFsQzs7QUFDQSxJQUFJdU0sT0FBTyxHQUFHL00sZUFBZSxDQUFDUSxtQkFBTyxDQUFDLG1FQUFELENBQVIsQ0FBN0I7O0FBQ0EsSUFBSThNLE9BQU8sR0FBRzlNLG1CQUFPLENBQUMsNEVBQUQsQ0FBckI7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNxSSxJQUFJLEVBQUUsZUFEbUM7RUFFekM2RCxVQUFVLEVBQUU7SUFDUjRXLEdBQUcsRUFBRTVLLHFCQUFxQixXQURsQjtJQUVSeVMsVUFBVSxFQUFFUCxxQkFBcUIsV0FGekI7SUFHUk0sU0FBUyxFQUFFTCxlQUFlLFdBSGxCO0lBSVJyZSxLQUFLLEVBQUUvRixrQkFBa0IsV0FKakI7SUFLUjZyQixZQUFZLEVBQUVELGtCQUFrQjtFQUx4QixDQUY2QjtFQVN6QzFyQixLQUFLLEVBQUU7SUFDSGlWLFFBQVEsRUFBRTtNQUNOL1UsSUFBSSxFQUFFaEgsTUFEQTtNQUVOaUgsUUFBUSxFQUFFO0lBRkosQ0FEUDtJQUtINnFCLFVBQVUsRUFBRTtNQUNSOXFCLElBQUksRUFBRWhILE1BREU7TUFFUmlILFFBQVEsRUFBRTtJQUZGLENBTFQ7SUFTSHlyQixVQUFVLEVBQUU7TUFDUjFyQixJQUFJLEVBQUVoSCxNQURFO01BRVJpSCxRQUFRLEVBQUU7SUFGRixDQVRUO0lBYUhraEIsS0FBSyxFQUFFO01BQ0huaEIsSUFBSSxFQUFFaEgsTUFESDtNQUVIaUgsUUFBUSxFQUFFO0lBRlAsQ0FiSjtJQWlCSDBDLEtBQUssRUFBRTtNQUNIM0MsSUFBSSxFQUFFaEgsTUFESDtNQUVIaUgsUUFBUSxFQUFFO0lBRlA7RUFqQkosQ0FUa0M7RUErQnpDcEcsS0FBSyxFQUFFLGVBQVVpRyxLQUFWLEVBQWlCO0lBQ3BCLElBQUl3SyxLQUFLLEdBQUcsSUFBWjs7SUFDQSxJQUFJNUosU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjs7SUFDQSxJQUFJNUcsRUFBRSxHQUFHLENBQUMsR0FBR1gsS0FBSyxDQUFDME0sTUFBVixFQUFrQmhHLEtBQWxCLENBQVQ7SUFBQSxJQUFtQ2lWLFFBQVEsR0FBR2hiLEVBQUUsQ0FBQ2diLFFBQWpEO0lBQUEsSUFBMkQrVixVQUFVLEdBQUcvd0IsRUFBRSxDQUFDK3dCLFVBQTNFOztJQUNBLElBQUl6UixVQUFVLEdBQUd0RSxRQUFRLENBQUM1YixLQUFULENBQWV5SSxFQUFoQztJQUFBLElBQW9Dc3BCLGFBQWEsR0FBR25XLFFBQVEsQ0FBQzViLEtBQVQsQ0FBZW1ZLEtBQW5FO0lBQUEsSUFBMEUwWixZQUFZLEdBQUcsYUFBYWp3QixNQUFiLENBQW9Cc2UsVUFBcEIsQ0FBekY7SUFBQSxJQUEwSDRSLFFBQVEsR0FBR0gsVUFBVSxDQUFDM3hCLEtBQVgsQ0FBaUI4RSxNQUFqQixDQUF3QjJELEVBQTdKO0lBQUEsSUFBaUsyb0IsV0FBVyxHQUFHLENBQUMsR0FBRzNrQixPQUFPLFdBQVgsRUFBcUJrbEIsVUFBVSxDQUFDM3hCLEtBQVgsQ0FBaUI4RSxNQUFqQixDQUF3QnFULEtBQTdDLEVBQW9ELElBQXBELENBQS9LO0lBQUEsSUFBME84WixVQUFVLEdBQUcsR0FBR3J3QixNQUFILENBQVVpd0IsWUFBVixFQUF3QixVQUF4QixFQUFvQ2p3QixNQUFwQyxDQUEyQ2t3QixRQUEzQyxDQUF2UDtJQUFBLElBQTZTSSxhQUFhLEdBQUcsV0FBV3R3QixNQUFYLENBQWtCa3dCLFFBQWxCLEVBQTRCLFlBQTVCLENBQTdUO0lBQ0EsSUFBSVUsY0FBYyxHQUFHLENBQUMsR0FBR3Z5QixLQUFLLENBQUNnSSxRQUFWLEVBQW9CLEVBQXBCLENBQXJCO0lBQ0EsSUFBSXdPLE9BQU8sR0FBRyxDQUFDLEdBQUd4VyxLQUFLLENBQUNnQixHQUFWLEVBQWUsS0FBZixDQUFkO0lBQ0EsSUFBSTRWLFNBQVMsR0FBRyxDQUFDLEdBQUc1VyxLQUFLLENBQUNnSSxRQUFWLEVBQW9CO01BQ2hDa0csVUFBVSxFQUFFLEtBRG9CO01BRWhDMUUsT0FBTyxFQUFFLEVBRnVCO01BR2hDNUMsSUFBSSxFQUFFO0lBSDBCLENBQXBCLENBQWhCO0lBS0E7QUFDUjtBQUNBOztJQUNRLElBQUkrRixjQUFjLEdBQUcsQ0FDakI7TUFDSXVMLEtBQUssRUFBRTVRLFNBQVMsQ0FBQ3VpQixXQUFWLENBQXNCLDRCQUF0QixDQURYO01BRUlybkIsSUFBSSxFQUFFO0lBRlYsQ0FEaUIsRUFLakI7TUFDSTBWLEtBQUssRUFBRSxDQUFDLEdBQUcxTCxPQUFPLFdBQVgsRUFBcUJzbEIsYUFBckIsRUFBb0MsSUFBcEMsQ0FEWDtNQUVJdHZCLElBQUksRUFBRSxhQUFhYixNQUFiLENBQW9Cc2UsVUFBcEI7SUFGVixDQUxpQixFQVNqQjtNQUNJL0gsS0FBSyxFQUFFaVosV0FEWDtNQUVJM3VCLElBQUksRUFBRSxhQUFhYixNQUFiLENBQW9Cc2UsVUFBcEIsRUFBZ0MsVUFBaEMsRUFBNEN0ZSxNQUE1QyxDQUFtRGt3QixRQUFuRDtJQUZWLENBVGlCLEVBYWpCO01BQ0kzWixLQUFLLEVBQUU1USxTQUFTLENBQUN3QixVQUFWLENBQXFCLGdCQUFyQixDQURYO01BRUl0RyxJQUFJLEVBQUU7SUFGVixDQWJpQixDQUFyQjtJQWtCQSxDQUFDLEdBQUd4QyxLQUFLLENBQUNrQixTQUFWLEVBQXFCLFlBQVk7TUFBRSxPQUFPNkMsU0FBUyxDQUFDbU4sS0FBRCxFQUFRLEtBQUssQ0FBYixFQUFnQixLQUFLLENBQXJCLEVBQXdCLFlBQVk7UUFDbkYsT0FBT2xNLFdBQVcsQ0FBQyxJQUFELEVBQU8sVUFBVXJFLEVBQVYsRUFBYztVQUNuQ04sT0FBTyxXQUFQLENBQWdCK0MsR0FBaEIsQ0FBb0IsV0FBV3pCLE1BQVgsQ0FBa0Jrd0IsUUFBbEIsRUFBNEIsb0JBQTVCLENBQXBCLEVBQXVFNXZCLElBQXZFLENBQTRFLFVBQVVDLEdBQVYsRUFBZTtZQUN2RixJQUFJeUwsUUFBUSxHQUFHekwsR0FBRyxDQUFDSyxJQUFuQjtZQUNBM0MsTUFBTSxDQUFDb1EsTUFBUCxDQUFjdWlCLGNBQWQsRUFBOEI1a0IsUUFBUSxDQUFDcEwsSUFBdkM7WUFDQWlVLE9BQU8sQ0FBQ3pXLEtBQVIsR0FBZ0I0TixRQUFRLENBQUNwTCxJQUFULENBQWNBLElBQWQsQ0FBbUI0RCxNQUFuQixHQUE0QixLQUE1QixHQUFvQyxJQUFwRDtVQUNILENBSkQ7O1VBS0EsSUFBSU8sS0FBSyxDQUFDNkMsS0FBTixDQUFZQyxPQUFaLEtBQXdCLEVBQTVCLEVBQWdDO1lBQzVCb04sU0FBUyxDQUFDaFEsSUFBVixHQUFpQkYsS0FBSyxDQUFDNkMsS0FBTixDQUFZM0MsSUFBN0I7WUFDQWdRLFNBQVMsQ0FBQzFJLFVBQVYsR0FBdUIsSUFBdkI7WUFDQTBJLFNBQVMsQ0FBQ3BOLE9BQVYsR0FBb0I5QyxLQUFLLENBQUM2QyxLQUFOLENBQVlDLE9BQWhDO1VBQ0g7O1VBQ0RDLFVBQVUsQ0FBQyxZQUFZO1lBQ25CbU4sU0FBUyxDQUFDMUksVUFBVixHQUF1QixLQUF2QjtVQUNILENBRlMsRUFFUCxJQUZPLENBQVY7VUFHQSxPQUFPLENBQUM7VUFBRTtVQUFILENBQVA7UUFDSCxDQWZpQixDQUFsQjtNQWdCSCxDQWpCa0QsQ0FBaEI7SUFpQjlCLENBakJMOztJQWtCQSxTQUFTc2tCLGNBQVQsQ0FBd0Job0IsSUFBeEIsRUFBOEI7TUFDMUI3SCxNQUFNLENBQUM4SCxRQUFQLENBQWdCL0gsSUFBaEIsR0FBdUI4SCxJQUF2QjtJQUNIOztJQUNELFNBQVNpb0IsYUFBVCxDQUF1QjlYLFdBQXZCLEVBQW9DO01BQ2hDdGEsT0FBTyxXQUFQLENBQ0srQyxHQURMLENBQ1MsV0FBV3pCLE1BQVgsQ0FBa0Jrd0IsUUFBbEIsRUFBNEIsbUJBQTVCLElBQW1EbFgsV0FENUQsRUFFSzFZLElBRkwsQ0FFVSxVQUFVQyxHQUFWLEVBQWU7UUFDckIsSUFBSXlMLFFBQVEsR0FBR3pMLEdBQUcsQ0FBQ0ssSUFBbkI7UUFDQTNDLE1BQU0sQ0FBQ29RLE1BQVAsQ0FBY3VpQixjQUFkLEVBQThCNWtCLFFBQVEsQ0FBQ3BMLElBQXZDO1FBQ0FpVSxPQUFPLENBQUN6VyxLQUFSLEdBQWdCNE4sUUFBUSxDQUFDcEwsSUFBVCxHQUFnQixLQUFoQixHQUF3QixJQUF4QztNQUNILENBTkQ7SUFPSCxDQTlEbUIsQ0ErRHBCOzs7SUFDQSxDQUFDLEdBQUd2QyxLQUFLLENBQUNrcUIsT0FBVixFQUFtQixjQUFuQixFQUFtQzJILFFBQW5DO0lBQ0EsT0FBTztNQUNINVIsVUFBVSxFQUFFQSxVQURUO01BRUg0UCxVQUFVLEVBQUVELFlBQVksV0FGckI7TUFHSDJDLGNBQWMsRUFBRUEsY0FIYjtNQUlIM2xCLGdCQUFnQixFQUFFSixPQUFPLFdBSnRCO01BS0hpbUIsYUFBYSxFQUFFQSxhQUxaO01BTUhULFVBQVUsRUFBRUEsVUFOVDtNQU9IQyxhQUFhLEVBQUVBLGFBUFo7TUFRSHRsQixjQUFjLEVBQUVBLGNBUmI7TUFTSGlLLFNBQVMsRUFBRUEsU0FUUjtNQVVIaWIsUUFBUSxFQUFFQSxRQVZQO01BV0hXLGNBQWMsRUFBRUEsY0FYYjtNQVlIbHJCLFNBQVMsRUFBRUE7SUFaUixDQUFQO0VBY0gsQ0E5R3dDO0VBK0d6Q29yQixPQUFPLEVBQUU7SUFBRUMsdUJBQXVCLEVBQUU1bEIsT0FBTyxDQUFDNGxCLHVCQUFuQztJQUE0REMseUJBQXlCLEVBQUU3bEIsT0FBTyxDQUFDNmxCO0VBQS9GO0FBL0dnQyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUN0RGE7O0FBQ2JoekIsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q3FJLElBQUksRUFBRSw0QkFEbUM7RUFFekM2RCxVQUFVLEVBQUUsRUFGNkI7RUFHekMvRixLQUFLLEVBQUU7SUFDSG5FLElBQUksRUFBRTtNQUNGcUUsSUFBSSxFQUFFdUosTUFESjtNQUVGdEosUUFBUSxFQUFFO0lBRlI7RUFESCxDQUhrQztFQVN6Q3BHLEtBQUssRUFBRSxlQUFVaUcsS0FBVixFQUFpQjtJQUNwQixJQUFJWSxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSWhGLElBQUksR0FBRyxDQUFDLEdBQUd2QyxLQUFLLENBQUMwTSxNQUFWLEVBQWtCaEcsS0FBbEIsRUFBeUJuRSxJQUFwQztJQUNBLElBQUlzd0IsVUFBVSxHQUFHdHdCLElBQUksQ0FBQ3hDLEtBQXRCO0lBQ0EsT0FBTztNQUFFOHlCLFVBQVUsRUFBRUEsVUFBZDtNQUEwQnZyQixTQUFTLEVBQUVBO0lBQXJDLENBQVA7RUFDSDtBQWR3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNKYTs7QUFDYjFILDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXFtQixPQUFPLEdBQUdybUIsbUJBQU8sQ0FBQyxrRkFBRCxDQUFyQjs7QUFDQSxJQUFJOE0sT0FBTyxHQUFHOU0sbUJBQU8sQ0FBQyxtRUFBRCxDQUFyQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q3FJLElBQUksRUFBRSxtQkFEbUM7RUFFekM2RCxVQUFVLEVBQUU7SUFBRXdrQixZQUFZLEVBQUUzSyxPQUFPLENBQUMySztFQUF4QixDQUY2QjtFQUd6Q3ZxQixLQUFLLEVBQUU7SUFDSG5FLElBQUksRUFBRTtNQUNGcUUsSUFBSSxFQUFFcVIsS0FESjtNQUVGcFIsUUFBUSxFQUFFO0lBRlIsQ0FESDtJQUtIaXNCLFFBQVEsRUFBRTtNQUNObHNCLElBQUksRUFBRWhILE1BREE7TUFFTmlILFFBQVEsRUFBRTtJQUZKO0VBTFAsQ0FIa0M7RUFhekNwRyxLQUFLLEVBQUUsZUFBVWlHLEtBQVYsRUFBaUI7SUFDcEIsSUFBSW5FLElBQUksR0FBRyxDQUFDLEdBQUd2QyxLQUFLLENBQUMwTSxNQUFWLEVBQWtCaEcsS0FBbEIsRUFBeUJuRSxJQUFwQztJQUNBLElBQUl3d0IsY0FBYyxHQUFHLE1BQXJCO0lBQ0EsSUFBSXpyQixTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSXlyQixRQUFRLEdBQUd6d0IsSUFBSSxDQUFDeEMsS0FBcEI7O0lBQ0EsSUFBSTBLLFFBQVEsR0FBRyxTQUFYQSxRQUFXLENBQVVsSSxJQUFWLEVBQWdCO01BQzNCLElBQUkwd0IsU0FBUyxHQUFHLEVBQWhCO01BQ0FBLFNBQVMsR0FBRzF3QixJQUFJLENBQUMrVyxHQUFMLENBQVMsVUFBVUMsSUFBVixFQUFnQjtRQUNqQyxPQUFPQSxJQUFJLENBQUMyWixTQUFaO01BQ0gsQ0FGVyxDQUFaO01BR0EsSUFBSUMsWUFBWSxHQUFHRixTQUFTLENBQUMvbUIsS0FBVixDQUFnQixDQUFDLENBQWpCLEVBQW9CLENBQXBCLENBQW5CO01BQ0ErbUIsU0FBUyxHQUFHQSxTQUFTLENBQUMvbUIsS0FBVixDQUFnQixDQUFoQixFQUFtQixDQUFDLENBQXBCLENBQVo7O01BQ0EsSUFBSSttQixTQUFTLENBQUM5c0IsTUFBVixHQUFtQixDQUF2QixFQUEwQjtRQUN0QixPQUFROHNCLFNBQVMsQ0FBQzltQixJQUFWLENBQWUsSUFBZixJQUNKLEdBREksR0FFSjdFLFNBQVMsQ0FBQ3laLFVBQVYsQ0FBcUIsS0FBckIsRUFBNEIsUUFBNUIsQ0FGSSxHQUdKLEdBSEksR0FJSm9TLFlBSko7TUFLSCxDQU5ELE1BT0s7UUFDRCxPQUFPQSxZQUFQO01BQ0g7SUFDSixDQWpCRDtJQWtCQTtBQUNSO0FBQ0E7QUFDQTs7O0lBQ1EsSUFBSUMsVUFBVSxHQUFHLG9CQUFVN3dCLElBQVYsRUFBZ0I7TUFDN0IsSUFBSTZ3QixVQUFVLEdBQUcsRUFBakI7TUFDQUEsVUFBVSxHQUFHN3dCLElBQUksQ0FBQytXLEdBQUwsQ0FBUyxVQUFVQyxJQUFWLEVBQWdCO1FBQ2xDLElBQUk1WSxFQUFKLEVBQVF5RyxFQUFSOztRQUNBLElBQUl3QixJQUFJLEdBQUcsQ0FBQ2pJLEVBQUUsR0FBRzRZLElBQUksQ0FBQzNRLElBQVgsTUFBcUIsSUFBckIsSUFBNkJqSSxFQUFFLEtBQUssS0FBSyxDQUF6QyxHQUE2Q0EsRUFBN0MsR0FBa0QyRyxTQUFTLENBQUMrckIsT0FBVixFQUE3RDtRQUFBLElBQWtGdHpCLEtBQUssR0FBRyxDQUFDcUgsRUFBRSxHQUFHbVMsSUFBSSxDQUFDeFosS0FBWCxNQUFzQixJQUF0QixJQUE4QnFILEVBQUUsS0FBSyxLQUFLLENBQTFDLEdBQThDQSxFQUE5QyxHQUFtREUsU0FBUyxDQUFDK3JCLE9BQVYsRUFBN0k7UUFDQSxPQUFPLEdBQUcxeEIsTUFBSCxDQUFVMkYsU0FBUyxDQUFDd0IsVUFBVixDQUFxQixNQUFyQixDQUFWLEVBQXdDLEtBQXhDLEVBQStDbkgsTUFBL0MsQ0FBc0RpSCxJQUF0RCxFQUE0RCxJQUE1RCxFQUFrRWpILE1BQWxFLENBQXlFMkYsU0FBUyxDQUFDd0IsVUFBVixDQUFxQixPQUFyQixDQUF6RSxFQUF3RyxNQUF4RyxFQUFnSG5ILE1BQWhILENBQXVINUIsS0FBdkgsRUFBOEgsR0FBOUgsQ0FBUDtNQUNILENBSlksQ0FBYjtNQUtBLE9BQU9xekIsVUFBVSxDQUFDam5CLElBQVgsQ0FBZ0IsSUFBaEIsQ0FBUDtJQUNILENBUkQ7O0lBU0EsT0FBTztNQUNINm1CLFFBQVEsRUFBRUEsUUFEUDtNQUVIdm9CLFFBQVEsRUFBRUEsUUFGUDtNQUdIMm9CLFVBQVUsRUFBRUEsVUFIVDtNQUlITCxjQUFjLEVBQUVBLGNBSmI7TUFLSFosaUJBQWlCLEVBQUVwbEIsT0FBTyxDQUFDb2xCLGlCQUx4QjtNQU1IN3FCLFNBQVMsRUFBRUE7SUFOUixDQUFQO0VBUUg7QUF6RHdDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ05hOztBQUNiMUgsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q3FJLElBQUksRUFBRSxzQkFEbUM7RUFFekM2RCxVQUFVLEVBQUUsRUFGNkI7RUFHekMvRixLQUFLLEVBQUU7SUFDSG5FLElBQUksRUFBRTtNQUNGcUUsSUFBSSxFQUFFaEgsTUFESjtNQUVGaUgsUUFBUSxFQUFFO0lBRlIsQ0FESDtJQUtIeXNCLFFBQVEsRUFBRTtNQUNOMXNCLElBQUksRUFBRWhILE1BREE7TUFFTmlILFFBQVEsRUFBRTtJQUZKO0VBTFAsQ0FIa0M7RUFhekNwRyxLQUFLLEVBQUUsZUFBVWlHLEtBQVYsRUFBaUI7SUFDcEIsSUFBSVksU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLElBQUloRixJQUFJLEdBQUcsQ0FBQyxHQUFHdkMsS0FBSyxDQUFDME0sTUFBVixFQUFrQmhHLEtBQWxCLEVBQXlCbkUsSUFBcEM7SUFDQSxJQUFJZ3hCLGVBQWUsR0FBR2h4QixJQUFJLENBQUN4QyxLQUEzQjtJQUNBLE9BQU87TUFBRXd6QixlQUFlLEVBQUVBLGVBQW5CO01BQW9DanNCLFNBQVMsRUFBRUE7SUFBL0MsQ0FBUDtFQUNIO0FBbEJ3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNKYTs7QUFDYixJQUFJN0gsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkIsRUFDQTs7O0FBQ0EsSUFBSXVNLE9BQU8sR0FBRy9NLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxtRUFBRCxDQUFSLENBQTdCOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLHVCQURtQztFQUV6QzZELFVBQVUsRUFBRSxFQUY2QjtFQUd6Qy9GLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQ0ZxRSxJQUFJLEVBQUVxUixLQURKO01BRUZwUixRQUFRLEVBQUU7SUFGUixDQURIO0lBS0hELElBQUksRUFBRTtNQUNGQSxJQUFJLEVBQUVoSCxNQURKO01BRUZpSCxRQUFRLEVBQUU7SUFGUixDQUxIO0lBU0gyc0IsU0FBUyxFQUFFO01BQ1A1c0IsSUFBSSxFQUFFdUosTUFEQztNQUVQdEosUUFBUSxFQUFFLEtBRkg7TUFHUCxXQUFTO0lBSEY7RUFUUixDQUhrQztFQWtCekNwRyxLQUFLLEVBQUUsZUFBVWlHLEtBQVYsRUFBaUI7SUFDcEIsSUFBSVksU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLElBQUloRixJQUFJLEdBQUcsQ0FBQyxHQUFHdkMsS0FBSyxDQUFDME0sTUFBVixFQUFrQmhHLEtBQWxCLEVBQXlCbkUsSUFBcEM7SUFDQSxJQUFJa3hCLE1BQU0sR0FBR2x4QixJQUFJLENBQUN4QyxLQUFsQjtJQUNBLE9BQU87TUFBRTB6QixNQUFNLEVBQUVBLE1BQVY7TUFBa0I3bUIsZ0JBQWdCLEVBQUVKLE9BQU8sV0FBM0M7TUFBcURsRixTQUFTLEVBQUVBO0lBQWhFLENBQVA7RUFDSDtBQXZCd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDVGE7O0FBQ2IxSCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLG9CQURtQztFQUV6QzZELFVBQVUsRUFBRSxFQUY2QjtFQUd6Qy9GLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQ0ZxRSxJQUFJLEVBQUV1SixNQURKO01BRUZ0SixRQUFRLEVBQUU7SUFGUjtFQURILENBSGtDO0VBU3pDcEcsS0FBSyxFQUFFLGlCQUFZO0lBQ2YsSUFBSTZHLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxPQUFPO01BQUVELFNBQVMsRUFBRUE7SUFBYixDQUFQO0VBQ0g7QUFad0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDSmE7O0FBQ2IxSCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLGtCQURtQztFQUV6QzZELFVBQVUsRUFBRSxFQUY2QjtFQUd6Qy9GLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQ0ZxRSxJQUFJLEVBQUV1SixNQURKO01BRUZ0SixRQUFRLEVBQUU7SUFGUixDQURIO0lBS0g2c0IsV0FBVyxFQUFFO01BQ1Q5c0IsSUFBSSxFQUFFaEgsTUFERztNQUVUaUgsUUFBUSxFQUFFO0lBRkQ7RUFMVixDQUhrQztFQWF6Q3BHLEtBQUssRUFBRSxlQUFVaUcsS0FBVixFQUFpQjtJQUNwQixJQUFJWSxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSWhGLElBQUksR0FBRyxDQUFDLEdBQUd2QyxLQUFLLENBQUMwTSxNQUFWLEVBQWtCaEcsS0FBbEIsRUFBeUJuRSxJQUFwQztJQUNBLElBQUlveEIsV0FBVyxHQUFHcHhCLElBQUksQ0FBQ3hDLEtBQXZCO0lBQ0EsT0FBTztNQUFFNHpCLFdBQVcsRUFBRUEsV0FBZjtNQUE0QnJzQixTQUFTLEVBQUVBO0lBQXZDLENBQVA7RUFDSDtBQWxCd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDSmE7O0FBQ2IsSUFBSTdILGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUkydkIsWUFBWSxHQUFHbndCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw2RUFBRCxDQUFSLENBQWxDOztBQUNBLElBQUltakIsVUFBVSxHQUFHM2pCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxzRkFBRCxDQUFSLENBQWhDOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLGlCQURtQztFQUV6QzZELFVBQVUsRUFBRTtJQUNSNFcsR0FBRyxFQUFFRCxVQUFVO0VBRFAsQ0FGNkI7RUFLekMxYyxLQUFLLEVBQUU7SUFDSG5FLElBQUksRUFBRTtNQUNGcUUsSUFBSSxFQUFFaEgsTUFESjtNQUVGaUgsUUFBUSxFQUFFO0lBRlI7RUFESCxDQUxrQztFQVd6Q3BHLEtBQUssRUFBRSxpQkFBWTtJQUNmLElBQUk2RyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSWlCLEVBQUUsR0FBRyxDQUFDLEdBQUd4SSxLQUFLLENBQUMwRCxNQUFWLEVBQWtCLFlBQWxCLENBQVQ7SUFDQSxPQUFPO01BQUU4RSxFQUFFLEVBQUVBLEVBQU47TUFBVXFuQixVQUFVLEVBQUVELFlBQVksV0FBbEM7TUFBNEN0b0IsU0FBUyxFQUFFQTtJQUF2RCxDQUFQO0VBQ0g7QUFmd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDVGE7O0FBQ2IxSCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLG9CQURtQztFQUV6QzZELFVBQVUsRUFBRSxFQUY2QjtFQUd6Qy9GLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQ0ZxRSxJQUFJLEVBQUVoSCxNQURKO01BRUZpSCxRQUFRLEVBQUU7SUFGUixDQURIO0lBS0grc0IsT0FBTyxFQUFFO01BQ0xodEIsSUFBSSxFQUFFaEgsTUFERDtNQUVMaUgsUUFBUSxFQUFFO0lBRkw7RUFMTixDQUhrQztFQWF6Q3BHLEtBQUssRUFBRSxlQUFVaUcsS0FBVixFQUFpQjtJQUNwQixJQUFJWSxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSWhGLElBQUksR0FBRyxDQUFDLEdBQUd2QyxLQUFLLENBQUMwTSxNQUFWLEVBQWtCaEcsS0FBbEIsRUFBeUJuRSxJQUFwQztJQUNBLElBQUlzeEIsT0FBTyxHQUFHdHhCLElBQUksQ0FBQ3hDLEtBQW5CO0lBQ0EsT0FBTztNQUFFOHpCLE9BQU8sRUFBRUEsT0FBWDtNQUFvQnZzQixTQUFTLEVBQUVBO0lBQS9CLENBQVA7RUFDSDtBQWxCd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDSmE7O0FBQ2IxSCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLGdCQURtQztFQUV6QzZELFVBQVUsRUFBRSxFQUY2QjtFQUd6Qy9GLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQ0ZxRSxJQUFJLEVBQUVoSCxNQURKO01BRUZpSCxRQUFRLEVBQUU7SUFGUixDQURIO0lBS0hpdEIsU0FBUyxFQUFFO01BQ1BsdEIsSUFBSSxFQUFFaEgsTUFEQztNQUVQaUgsUUFBUSxFQUFFO0lBRkg7RUFMUixDQUhrQztFQWF6Q3BHLEtBQUssRUFBRSxlQUFVaUcsS0FBVixFQUFpQjtJQUNwQixJQUFJWSxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSWhGLElBQUksR0FBRyxDQUFDLEdBQUd2QyxLQUFLLENBQUMwTSxNQUFWLEVBQWtCaEcsS0FBbEIsRUFBeUJuRSxJQUFwQztJQUNBLElBQUl3eEIsU0FBUyxHQUFHeHhCLElBQUksQ0FBQ3hDLEtBQXJCO0lBQ0EsT0FBTztNQUFFZzBCLFNBQVMsRUFBRUEsU0FBYjtNQUF3QnpzQixTQUFTLEVBQUVBO0lBQW5DLENBQVA7RUFDSDtBQWxCd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDSmE7O0FBQ2IxSCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlDLEtBQUssR0FBR0QsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJcUcsTUFBTSxHQUFHckcsbUJBQU8sQ0FBQywyREFBRCxDQUFwQjs7QUFDQSxJQUFJK3pCLGNBQWMsR0FBRy96QixtQkFBTyxDQUFDLGlGQUFELENBQTVCOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsb0JBRGlDO0VBRXpDa0csS0FBSyxFQUFFO0lBQ0huRSxJQUFJLEVBQUU7TUFDRnFFLElBQUksRUFBRWhILE1BREo7TUFFRmlILFFBQVEsRUFBRTtJQUZSLENBREg7SUFLSG9aLFVBQVUsRUFBRTtNQUNSclosSUFBSSxFQUFFTyxNQURFO01BRVJOLFFBQVEsRUFBRTtJQUZGO0VBTFQsQ0FGa0M7RUFZekNwRyxLQUFLLEVBQUUsZUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUI7SUFDMUIsSUFBSUMsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQ0FBLE1BQU07SUFDTixJQUFJOEYsS0FBSyxHQUFHaEcsT0FBWjtJQUNBLElBQUk0RyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSWhGLElBQUksR0FBRyxDQUFDLEdBQUdyQyxLQUFLLENBQUN3TSxNQUFWLEVBQWtCaEcsS0FBbEIsRUFBeUJuRSxJQUFwQztJQUNBLElBQUkweEIsUUFBUSxHQUFHLENBQUMsR0FBRy96QixLQUFLLENBQUNjLEdBQVYsR0FBZjtJQUNBLElBQUlrekIsV0FBVyxHQUFHLENBQUMsR0FBR2gwQixLQUFLLENBQUNjLEdBQVYsR0FBbEI7O0lBQ0EsSUFBSW9HLEVBQUUsR0FBRyxDQUFDLEdBQUdkLE1BQU0sQ0FBQzhDLFNBQVgsR0FBVDtJQUFBLElBQWtDK3FCLGNBQWMsR0FBRy9zQixFQUFFLENBQUMsQ0FBRCxDQUFyRDtJQUFBLElBQTBEZ3RCLGVBQWUsR0FBR2h0QixFQUFFLENBQUMsQ0FBRCxDQUE5RTtJQUNBO0FBQ1I7QUFDQTs7O0lBQ1EsSUFBSXdnQixRQUFRLEdBQUcsQ0FBQyxHQUFHMW5CLEtBQUssQ0FBQzhILFFBQVYsRUFBb0I7TUFDL0J5RCxNQUFNLEVBQUUsRUFEdUI7TUFFL0JKLE1BQU0sRUFBRTtJQUZ1QixDQUFwQixDQUFmO0lBSUEsSUFBSWdwQixZQUFZLEdBQUc7TUFDZi9tQixTQUFTLEVBQUUsYUFESTtNQUVmZ25CLGFBQWEsRUFBRSxXQUZBO01BR2ZDLElBQUksRUFBRTtJQUhTLENBQW5CO0lBS0EsSUFBSTdsQixXQUFXLEdBQUc5TyxNQUFNLENBQUMrTyxPQUFQLENBQWVwTSxJQUFJLENBQUN4QyxLQUFwQixDQUFsQjtJQUNBLElBQUl5MEIsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHdDBCLEtBQUssQ0FBQ3NELFFBQVYsRUFBb0IsWUFBWTtNQUNuRCxJQUFJb0wsUUFBUSxHQUFHRixXQUFXLENBQUNHLE1BQVosQ0FBbUIsVUFBVWxPLEVBQVYsRUFBYztRQUM1QyxJQUFJa0ssR0FBRyxHQUFHbEssRUFBRSxDQUFDLENBQUQsQ0FBWjtRQUFBLElBQWlCWixLQUFLLEdBQUdZLEVBQUUsQ0FBQyxDQUFELENBQTNCOztRQUNBLElBQUksQ0FBQ2luQixRQUFRLENBQUN2YyxNQUFkLEVBQXNCO1VBQ2xCLE9BQU8vRCxTQUFTLENBQ1hncUIsT0FERSxDQUNNem1CLEdBRE4sRUFFRjZPLFdBRkUsR0FHRjVPLFFBSEUsQ0FHTzhjLFFBQVEsQ0FBQ25jLE1BQVQsQ0FBZ0JpTyxXQUFoQixHQUE4QjNOLE9BQTlCLENBQXNDLEdBQXRDLEVBQTJDLEVBQTNDLEVBQStDQSxPQUEvQyxDQUF1RCxHQUF2RCxFQUE0RCxHQUE1RCxDQUhQLENBQVA7UUFJSCxDQUxELE1BTUs7VUFDRCxJQUFJaE0sS0FBSyxDQUFDNm5CLFFBQVEsQ0FBQ3ZjLE1BQVYsQ0FBVCxFQUE0QjtZQUN4QixPQUFPUixHQUFHLENBQ0w2TyxXQURFLEdBRUY1TyxRQUZFLENBRU84YyxRQUFRLENBQUNuYyxNQUFULENBQWdCaU8sV0FBaEIsR0FBOEIzTixPQUE5QixDQUFzQyxHQUF0QyxFQUEyQyxFQUEzQyxFQUErQ0EsT0FBL0MsQ0FBdUQsR0FBdkQsRUFBNEQsR0FBNUQsQ0FGUCxDQUFQO1VBR0g7UUFDSjtNQUNKLENBZmMsQ0FBZjtNQWdCQSxJQUFJMG9CLFdBQVcsR0FBRzcwQixNQUFNLENBQUNzUCxXQUFQLENBQW1CTixRQUFuQixDQUFsQjtNQUNBLE9BQU82bEIsV0FBUDtJQUNILENBbkJzQixDQUF2QjtJQW9CQTtBQUNSO0FBQ0E7O0lBQ1E3MEIsTUFBTSxDQUFDMFAsSUFBUCxDQUFZL00sSUFBSSxDQUFDeEMsS0FBakIsRUFBd0J1WixHQUF4QixDQUE0QixVQUFVek8sR0FBVixFQUFlO01BQ3ZDLElBQUksQ0FBQyxHQUFHbXBCLGNBQWMsQ0FBQ1Usb0JBQW5CLElBQTJDNXBCLFFBQTNDLENBQW9ERCxHQUFHLENBQUNnVCxRQUFKLEVBQXBELENBQUosRUFBeUU7UUFDckV0YixJQUFJLENBQUN4QyxLQUFMLENBQVc4SyxHQUFYLEVBQWdCLE1BQWhCLElBQTBCLElBQTFCO01BQ0g7SUFDSixDQUpEOztJQUtBLElBQUk4cEIsY0FBYyxHQUFHLFNBQWpCQSxjQUFpQixDQUFVOVQsQ0FBVixFQUFhO01BQzlCK0csUUFBUSxDQUFDdmMsTUFBVCxHQUFrQndWLENBQWxCO01BQ0F1VCxlQUFlO0lBQ2xCLENBSEQ7O0lBSUEsQ0FBQyxHQUFHbDBCLEtBQUssQ0FBQ2dCLFNBQVYsRUFBcUIsWUFBWTtNQUM3QnlCLE1BQU0sQ0FBQ3FRLGdCQUFQLENBQXdCLE9BQXhCLEVBQWlDLFVBQVVyTyxDQUFWLEVBQWE7UUFDMUMsSUFBSSxDQUFDdXZCLFdBQVcsQ0FBQ24wQixLQUFaLENBQWtCNjBCLFFBQWxCLENBQTJCandCLENBQUMsQ0FBQ2tZLE1BQTdCLENBQUQsSUFDQSxDQUFDb1gsUUFBUSxDQUFDbDBCLEtBQVQsQ0FBZTYwQixRQUFmLENBQXdCandCLENBQUMsQ0FBQ2tZLE1BQTFCLENBREQsSUFFQXNYLGNBQWMsQ0FBQ3AwQixLQUZuQixFQUUwQjtVQUN0QnEwQixlQUFlO1FBQ2xCO01BQ0osQ0FORDtJQU9ILENBUkQ7O0lBU0EsU0FBU1MsT0FBVCxDQUFpQkMsUUFBakIsRUFBMkJ6aUIsS0FBM0IsRUFBa0M7TUFDOUIsSUFBSXlpQixRQUFKLEVBQWM7UUFDVixPQUFPLElBQUluekIsTUFBSixDQUFXMFEsS0FBWCxDQUFQO01BQ0gsQ0FGRCxNQUdLLElBQUlBLEtBQUssSUFBSSxRQUFULElBQXFCQSxLQUFLLElBQUksY0FBbEMsRUFBa0Q7UUFDbkQsSUFBSWlmLE9BQU8sR0FBR2pmLEtBQUssSUFBSSxRQUFULEdBQW9CLFFBQXBCLEdBQStCLGFBQTdDO1FBQ0EsT0FBTyxhQUFhMVEsTUFBYixDQUFvQitFLEtBQUssQ0FBQ3VaLFVBQTFCLEVBQXNDLEdBQXRDLEVBQTJDdGUsTUFBM0MsQ0FBa0QydkIsT0FBbEQsRUFBMkQsU0FBM0QsQ0FBUDtNQUNIOztNQUNELE9BQU8sYUFBYTN2QixNQUFiLENBQW9CK0UsS0FBSyxDQUFDdVosVUFBMUIsRUFBc0MsR0FBdEMsRUFBMkN0ZSxNQUEzQyxDQUFrRDBRLEtBQWxELENBQVA7SUFDSDs7SUFDRCxJQUFJMU8sWUFBWSxHQUFHO01BQUUyRCxTQUFTLEVBQUVBLFNBQWI7TUFBd0JaLEtBQUssRUFBRUEsS0FBL0I7TUFBc0NuRSxJQUFJLEVBQUVBLElBQTVDO01BQWtEMHhCLFFBQVEsRUFBRUEsUUFBNUQ7TUFBc0VDLFdBQVcsRUFBRUEsV0FBbkY7TUFBZ0dDLGNBQWMsRUFBRUEsY0FBaEg7TUFBZ0lDLGVBQWUsRUFBRUEsZUFBako7TUFBa0t4TSxRQUFRLEVBQUVBLFFBQTVLO01BQXNMeU0sWUFBWSxFQUFFQSxZQUFwTTtNQUFrTjNsQixXQUFXLEVBQUVBLFdBQS9OO01BQTRPOGxCLGdCQUFnQixFQUFFQSxnQkFBOVA7TUFBZ1JHLGNBQWMsRUFBRUEsY0FBaFM7TUFBZ1RFLE9BQU8sRUFBRUEsT0FBelQ7TUFBa1VILG9CQUFvQixFQUFFVixjQUFjLENBQUNVO0lBQXZXLENBQW5CO0lBQ0E5MEIsTUFBTSxDQUFDQyxjQUFQLENBQXNCOEQsWUFBdEIsRUFBb0MsaUJBQXBDLEVBQXVEO01BQUVHLFVBQVUsRUFBRSxLQUFkO01BQXFCL0QsS0FBSyxFQUFFO0lBQTVCLENBQXZEO0lBQ0EsT0FBTzRELFlBQVA7RUFDSDtBQXhGd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDUGE7O0FBQ2IsSUFBSWxFLGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlDLEtBQUssR0FBR0QsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJcUcsTUFBTSxHQUFHckcsbUJBQU8sQ0FBQywyREFBRCxDQUFwQjs7QUFDQSxJQUFJd1EsUUFBUSxHQUFHaFIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLCtDQUFELENBQVIsQ0FBOUI7O0FBQ0EsSUFBSUksT0FBTyxHQUFHWixlQUFlLENBQUNRLG1CQUFPLENBQUMsNENBQUQsQ0FBUixDQUE3Qjs7QUFDQSxJQUFJcVcsS0FBSyxHQUFHclcsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJK3pCLGNBQWMsR0FBRy96QixtQkFBTyxDQUFDLGlGQUFELENBQTVCLEVBQ0E7OztBQUNBLElBQUlxbUIsT0FBTyxHQUFHcm1CLG1CQUFPLENBQUMsdUZBQUQsQ0FBckI7O0FBQ0EsSUFBSW1qQixVQUFVLEdBQUczakIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHNGQUFELENBQVIsQ0FBaEM7O0FBQ0EsSUFBSTgwQixtQkFBbUIsR0FBR3QxQixlQUFlLENBQUNRLG1CQUFPLENBQUMsc0dBQUQsQ0FBUixDQUF6Qzs7QUFDQSxJQUFJc21CLGVBQWUsR0FBRzltQixlQUFlLENBQUNRLG1CQUFPLENBQUMsZ0ZBQUQsQ0FBUixDQUFyQzs7QUFDQSxJQUFJRyxnQkFBZ0IsR0FBR1gsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGtGQUFELENBQVIsQ0FBdEM7O0FBQ0EsSUFBSXdZLHFCQUFxQixHQUFHaFosZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRGQUFELENBQVIsQ0FBM0M7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNDLE1BQU0sRUFBRSxpQkFEaUM7RUFFekNrRyxLQUFLLEVBQUU7SUFDSG5FLElBQUksRUFBRTtNQUNGcUUsSUFBSSxFQUFFaEgsTUFESjtNQUVGaUgsUUFBUSxFQUFFO0lBRlIsQ0FESDtJQUtIb1osVUFBVSxFQUFFO01BQ1JyWixJQUFJLEVBQUVPLE1BREU7TUFFUk4sUUFBUSxFQUFFO0lBRkYsQ0FMVDtJQVNIcVIsS0FBSyxFQUFFO01BQ0h0UixJQUFJLEVBQUV1SixNQURIO01BRUh0SixRQUFRLEVBQUU7SUFGUCxDQVRKO0lBYUh1cEIsT0FBTyxFQUFFO01BQ0x4cEIsSUFBSSxFQUFFdUosTUFERDtNQUVMdEosUUFBUSxFQUFFLEtBRkw7TUFHTCxXQUFTO0lBSEosQ0FiTjtJQWtCSHdSLEtBQUssRUFBRTtNQUNIelIsSUFBSSxFQUFFdUosTUFESDtNQUVIdEosUUFBUSxFQUFFLEtBRlA7TUFHSCxXQUFTO0lBSE4sQ0FsQko7SUF1QkhraEIsS0FBSyxFQUFFO01BQ0huaEIsSUFBSSxFQUFFaEgsTUFESDtNQUVIaUgsUUFBUSxFQUFFO0lBRlAsQ0F2Qko7SUEyQkh5RyxTQUFTLEVBQUU7TUFDUDFHLElBQUksRUFBRUssT0FEQztNQUVQSixRQUFRLEVBQUU7SUFGSCxDQTNCUjtJQStCSG11QixlQUFlLEVBQUU7TUFDYnB1QixJQUFJLEVBQUV1SixNQURPO01BRWJ0SixRQUFRLEVBQUUsS0FGRztNQUdiLFdBQVM7SUFISTtFQS9CZCxDQUZrQztFQXVDekNwRyxLQUFLLEVBQUUsZUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUI7SUFDMUIsSUFBSUMsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQ0FBLE1BQU07SUFDTixJQUFJOEYsS0FBSyxHQUFHaEcsT0FBWjs7SUFDQSxJQUFJMEcsRUFBRSxHQUFHLENBQUMsR0FBR2QsTUFBTSxDQUFDOEMsU0FBWCxHQUFUO0lBQUEsSUFBa0NnVyxXQUFXLEdBQUdoWSxFQUFFLENBQUMsQ0FBRCxDQUFsRDtJQUFBLElBQXVEaVksWUFBWSxHQUFHalksRUFBRSxDQUFDLENBQUQsQ0FBeEU7O0lBQ0EsSUFBSUUsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQixDQUwwQixDQU0xQjs7SUFDQSxJQUFJcVAsU0FBUyxHQUFHLENBQUMsR0FBRzFXLEtBQUssQ0FBQ3dELE1BQVYsRUFBa0IsV0FBbEIsQ0FBaEI7SUFDQSxJQUFJdXhCLE1BQU0sR0FBRywyQkFBYjs7SUFDQSxJQUFJdnVCLEtBQUssQ0FBQzJSLEtBQU4sS0FBZ0IsTUFBcEIsRUFBNEI7TUFDeEI0YyxNQUFNLEdBQUcsWUFBVDtJQUNIOztJQUNELFNBQVN0RixVQUFULENBQW9CMWIsSUFBcEIsRUFBMEI7TUFDdEIsT0FBTyxDQUFDLEdBQUd4RCxRQUFRLFdBQVosRUFBc0J3RCxJQUF0QixFQUE0Qm5DLE1BQTVCLENBQW1DLElBQW5DLENBQVA7SUFDSDs7SUFDRCxTQUFTZ2UsVUFBVCxDQUFvQkMsR0FBcEIsRUFBeUI7TUFDckIsT0FBT0MsVUFBVSxDQUFDRCxHQUFELENBQVYsQ0FBZ0JFLE9BQWhCLENBQXdCLENBQXhCLENBQVA7SUFDSDs7SUFDRCxJQUFJaUYscUJBQXFCLEdBQUcsU0FBeEJBLHFCQUF3QixHQUFZO01BQ3BDOVYsV0FBVyxDQUFDcmYsS0FBWixHQUFvQixJQUFwQjtJQUNILENBRkQ7O0lBR0EsU0FBU28xQixhQUFULENBQXVCM3NCLEVBQXZCLEVBQTJCOG9CLE9BQTNCLEVBQW9DO01BQ2hDbFMsV0FBVyxDQUFDcmYsS0FBWixHQUFvQixLQUFwQjtNQUNBNEMsTUFBTSxDQUFDeXlCLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsQ0FBbkI7TUFDQS8wQixPQUFPLFdBQVAsV0FDWSxpQkFBaUJzQixNQUFqQixDQUF3QjZHLEVBQXhCLEVBQTRCLEdBQTVCLEVBQWlDN0csTUFBakMsQ0FBd0MydkIsT0FBeEMsQ0FEWixFQUVLcnZCLElBRkwsQ0FFVSxVQUFVQyxHQUFWLEVBQWU7UUFDckIsSUFBSXlMLFFBQVEsR0FBR3pMLEdBQUcsQ0FBQ0ssSUFBbkI7O1FBQ0EsSUFBSW9MLFFBQVEsQ0FBQ3RDLE1BQWIsRUFBcUI7VUFDakI1QixVQUFVLENBQUMsWUFBWTtZQUNuQmdCLFFBQVEsQ0FBQ2tWLE1BQVQ7VUFDSCxDQUZTLEVBRVAsR0FGTyxDQUFWO1FBR0g7O1FBQ0QsSUFBSSxDQUFDaFMsUUFBUSxDQUFDdEMsTUFBZCxFQUFzQjtVQUNsQnVMLFNBQVMsQ0FBQ3BOLE9BQVYsR0FBb0JtRSxRQUFRLENBQUNuRSxPQUE3QjtVQUNBb04sU0FBUyxDQUFDaFEsSUFBVixHQUFpQitHLFFBQVEsQ0FBQ3RDLE1BQTFCO1VBQ0F1TCxTQUFTLENBQUMxSSxVQUFWLEdBQXVCLElBQXZCO1FBQ0g7TUFDSixDQWRELFdBZVcsWUFBWTtRQUNuQjBJLFNBQVMsQ0FBQ3BOLE9BQVYsR0FBb0JsQyxTQUFTLENBQUN3QixVQUFWLENBQXFCLDZCQUFyQixDQUFwQjtRQUNBOE4sU0FBUyxDQUFDaFEsSUFBVixHQUFpQixLQUFqQjtRQUNBZ1EsU0FBUyxDQUFDMUksVUFBVixHQUF1QixJQUF2QjtNQUNILENBbkJEO0lBb0JIOztJQUNELElBQUl2SyxZQUFZLEdBQUc7TUFBRXliLFdBQVcsRUFBRUEsV0FBZjtNQUE0QkMsWUFBWSxFQUFFQSxZQUExQztNQUF3RC9YLFNBQVMsRUFBRUEsU0FBbkU7TUFBOEVaLEtBQUssRUFBRUEsS0FBckY7TUFBNEZrUSxTQUFTLEVBQUVBLFNBQXZHO01BQWtIcWUsTUFBTSxFQUFFQSxNQUExSDtNQUFrSXRGLFVBQVUsRUFBRUEsVUFBOUk7TUFBMEpHLFVBQVUsRUFBRUEsVUFBdEs7TUFBa0xvRixxQkFBcUIsRUFBRUEscUJBQXpNO01BQWdPQyxhQUFhLEVBQUVBLGFBQS9PO01BQThQM1YsVUFBVSxFQUFFbEosS0FBSyxDQUFDa0osVUFBaFI7TUFBNFJrVixvQkFBb0IsRUFBRVYsY0FBYyxDQUFDVSxvQkFBalU7TUFBdVZXLFlBQVksRUFBRS9PLE9BQU8sQ0FBQytPLFlBQTdXO01BQTJYQyxVQUFVLEVBQUVoUCxPQUFPLENBQUNnUCxVQUEvWTtNQUEyWkMsV0FBVyxFQUFFalAsT0FBTyxDQUFDaVAsV0FBaGI7TUFBNmJ6RSxXQUFXLEVBQUV4SyxPQUFPLENBQUN3SyxXQUFsZDtNQUErZDBFLGlCQUFpQixFQUFFbFAsT0FBTyxDQUFDa1AsaUJBQTFmO01BQTZnQkMsY0FBYyxFQUFFblAsT0FBTyxDQUFDbVAsY0FBcmlCO01BQXFqQkMsVUFBVSxFQUFFcFAsT0FBTyxDQUFDb1AsVUFBemtCO01BQXFsQkMsUUFBUSxFQUFFclAsT0FBTyxDQUFDcVAsUUFBdm1CO01BQWluQkMsZUFBZSxFQUFFdFAsT0FBTyxDQUFDc1AsZUFBMW9CO01BQTJwQkMsZ0JBQWdCLEVBQUV2UCxPQUFPLENBQUN1UCxnQkFBcnJCO01BQXVzQkMsbUJBQW1CLEVBQUV4UCxPQUFPLENBQUN3UCxtQkFBcHVCO01BQXl2QkMsWUFBWSxFQUFFelAsT0FBTyxDQUFDeVAsWUFBL3dCO01BQTZ4QkMsZ0JBQWdCLEVBQUUxUCxPQUFPLENBQUMwUCxnQkFBdnpCO01BQXkwQkMsZUFBZSxFQUFFM1AsT0FBTyxDQUFDMlAsZUFBbDJCO01BQW0zQkMsZUFBZSxFQUFFNVAsT0FBTyxDQUFDNFAsZUFBNTRCO01BQTY1QkMscUJBQXFCLEVBQUU3UCxPQUFPLENBQUM2UCxxQkFBNTdCO01BQW05QkMsTUFBTSxFQUFFOVAsT0FBTyxDQUFDOFAsTUFBbitCO01BQTIrQkMsR0FBRyxFQUFFL1AsT0FBTyxDQUFDK1AsR0FBeC9CO01BQTYvQjNGLFlBQVksRUFBRXBLLE9BQU8sQ0FBQ29LLFlBQW5oQztNQUFpaUM0RixZQUFZLEVBQUVoUSxPQUFPLENBQUNnUSxZQUF2akM7TUFBcWtDalQsR0FBRyxFQUFFRCxVQUFVLFdBQXBsQztNQUE4bENtVCxNQUFNLEVBQUV4QixtQkFBbUIsV0FBem5DO01BQW1vQzlOLFNBQVMsRUFBRVYsZUFBZSxXQUE3cEM7TUFBdXFDMWlCLEtBQUssRUFBRXpELGdCQUFnQixXQUE5ckM7TUFBd3NDd1osWUFBWSxFQUFFbkIscUJBQXFCO0lBQTN1QyxDQUFuQjtJQUNBN1ksTUFBTSxDQUFDQyxjQUFQLENBQXNCOEQsWUFBdEIsRUFBb0MsaUJBQXBDLEVBQXVEO01BQUVHLFVBQVUsRUFBRSxLQUFkO01BQXFCL0QsS0FBSyxFQUFFO0lBQTVCLENBQXZEO0lBQ0EsT0FBTzRELFlBQVA7RUFDSDtBQXZGd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDcEJhOztBQUNiLElBQUlsRSxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJc0csaUJBQWlCLEdBQUc5RyxlQUFlLENBQUNRLG1CQUFPLENBQUMsZ0ZBQUQsQ0FBUixDQUF2Qzs7QUFDQSxJQUFJcUcsTUFBTSxHQUFHckcsbUJBQU8sQ0FBQywyREFBRCxDQUFwQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q3FJLElBQUksRUFBRSxtQkFEbUM7RUFFekM2RCxVQUFVLEVBQUU7SUFDUkgsV0FBVyxFQUFFL0YsaUJBQWlCO0VBRHRCLENBRjZCO0VBS3pDOUYsS0FBSyxFQUFFLGlCQUFZO0lBQ2YsSUFBSTZHLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJMEIsS0FBSyxHQUFHLENBQUMsR0FBR2pKLEtBQUssQ0FBQ2dJLFFBQVYsRUFBb0I7TUFDNUJ3dUIsU0FBUyxFQUFFO0lBRGlCLENBQXBCLENBQVo7O0lBR0EsSUFBSTcxQixFQUFFLEdBQUcsQ0FBQyxHQUFHMkYsTUFBTSxDQUFDOEMsU0FBWCxHQUFUO0lBQUEsSUFBa0NDLFVBQVUsR0FBRzFJLEVBQUUsQ0FBQyxDQUFELENBQWpEO0lBQUEsSUFBc0QySSxXQUFXLEdBQUczSSxFQUFFLENBQUMsQ0FBRCxDQUF0RTs7SUFDQSxJQUFJODFCLFlBQVksR0FBRyxDQUFDLEdBQUd6MkIsS0FBSyxDQUFDZ0IsR0FBVixFQUFlLEtBQWYsQ0FBbkI7O0lBQ0EsSUFBSTAxQixXQUFXLEdBQUcsU0FBZEEsV0FBYyxDQUFVMzJCLEtBQVYsRUFBaUI7TUFDL0IwMkIsWUFBWSxDQUFDMTJCLEtBQWIsR0FBcUJBLEtBQXJCO0lBQ0gsQ0FGRDs7SUFHQSxJQUFJbUosT0FBTyxHQUFHLHVGQUFkO0lBQ0EsSUFBSWdyQixXQUFXLEdBQUcsQ0FBQyxHQUFHbDBCLEtBQUssQ0FBQ2dCLEdBQVYsR0FBbEI7SUFDQSxDQUFDLEdBQUdoQixLQUFLLENBQUNrQixTQUFWLEVBQXFCLFlBQVk7TUFDN0J5QixNQUFNLENBQUNxUSxnQkFBUCxDQUF3QixPQUF4QixFQUFpQyxVQUFVck8sQ0FBVixFQUFhO1FBQzFDLElBQUksQ0FBQ3V2QixXQUFXLENBQUNuMEIsS0FBWixDQUFrQjYwQixRQUFsQixDQUEyQmp3QixDQUFDLENBQUNrWSxNQUE3QixDQUFMLEVBQTJDO1VBQ3ZDNVQsS0FBSyxDQUFDdXRCLFNBQU4sR0FBa0IsS0FBbEI7UUFDSDtNQUNKLENBSkQ7SUFLSCxDQU5EOztJQU9BLElBQUkxVCxNQUFNLEdBQUcsU0FBVEEsTUFBUyxHQUFZO01BQ3JCN1osS0FBSyxDQUFDdXRCLFNBQU4sR0FBa0IsQ0FBQ3Z0QixLQUFLLENBQUN1dEIsU0FBekI7SUFDSCxDQUZEOztJQUdBLE9BQU87TUFDSHZ0QixLQUFLLEVBQUVBLEtBREo7TUFFSEMsT0FBTyxFQUFFQSxPQUZOO01BR0h1dEIsWUFBWSxFQUFFQSxZQUhYO01BSUhwdEIsVUFBVSxFQUFFQSxVQUpUO01BS0h5WixNQUFNLEVBQUVBLE1BTEw7TUFNSHhaLFdBQVcsRUFBRUEsV0FOVjtNQU9Ib3RCLFdBQVcsRUFBRUEsV0FQVjtNQVFIeEMsV0FBVyxFQUFFQSxXQVJWO01BU0g1c0IsU0FBUyxFQUFFQTtJQVRSLENBQVA7RUFXSDtBQXRDd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDVGE7O0FBQ2IsSUFBSTdILGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSU8sT0FBTyxHQUFHTCxtQkFBTyxDQUFDLCtFQUFELENBQXJCOztBQUNBLElBQUlELEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJc0csaUJBQWlCLEdBQUc5RyxlQUFlLENBQUNRLG1CQUFPLENBQUMsZ0ZBQUQsQ0FBUixDQUF2Qzs7QUFDQSxJQUFJcUcsTUFBTSxHQUFHckcsbUJBQU8sQ0FBQywyREFBRCxDQUFwQjs7QUFDQSxJQUFJdUcsa0JBQWtCLEdBQUcvRyxlQUFlLENBQUNRLG1CQUFPLENBQUMsK0ZBQUQsQ0FBUixDQUF4Qzs7QUFDQSxJQUFJRyxnQkFBZ0IsR0FBR1gsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGtGQUFELENBQVIsQ0FBdEM7O0FBQ0EsSUFBSUksT0FBTyxHQUFHWixlQUFlLENBQUNRLG1CQUFPLENBQUMsNENBQUQsQ0FBUixDQUE3Qjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQSxJQUFJWSxLQUFLLEdBQUcsQ0FBQyxHQUFHUCxPQUFPLENBQUNRLFFBQVosR0FBWjtBQUNBaEIsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNxSSxJQUFJLEVBQUUsbUJBRG1DO0VBRXpDNkQsVUFBVSxFQUFFO0lBQ1JILFdBQVcsRUFBRS9GLGlCQUFpQixXQUR0QjtJQUVSZ0csS0FBSyxFQUFFL0Ysa0JBQWtCLFdBRmpCO0lBR1IzQyxLQUFLLEVBQUV6RCxnQkFBZ0I7RUFIZixDQUY2QjtFQU96Q0ssS0FBSyxFQUFFLGlCQUFZO0lBQ2YsSUFBSTZHLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJMEIsS0FBSyxHQUFHLENBQUMsR0FBR2pKLEtBQUssQ0FBQ2dJLFFBQVYsRUFBb0I7TUFDNUJ3dUIsU0FBUyxFQUFFO0lBRGlCLENBQXBCLENBQVo7O0lBR0EsSUFBSTcxQixFQUFFLEdBQUcsQ0FBQyxHQUFHMkYsTUFBTSxDQUFDOEMsU0FBWCxHQUFUO0lBQUEsSUFBa0NDLFVBQVUsR0FBRzFJLEVBQUUsQ0FBQyxDQUFELENBQWpEO0lBQUEsSUFBc0QySSxXQUFXLEdBQUczSSxFQUFFLENBQUMsQ0FBRCxDQUF0RTs7SUFDQSxJQUFJODFCLFlBQVksR0FBRyxDQUFDLEdBQUd6MkIsS0FBSyxDQUFDZ0IsR0FBVixFQUFlLEtBQWYsQ0FBbkI7SUFDQSxJQUFJMEcsZUFBZSxHQUFHLENBQUMsR0FBRzFILEtBQUssQ0FBQ2dCLEdBQVYsRUFBZSxLQUFmLENBQXRCO0lBQ0EsSUFBSThHLFlBQVksR0FBRyxDQUFDLEdBQUc5SCxLQUFLLENBQUNnQixHQUFWLEVBQWUsRUFBZixDQUFuQjtJQUNBLElBQUkyMUIsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHMzJCLEtBQUssQ0FBQ2dCLEdBQVYsRUFBZSxLQUFmLENBQXZCO0lBQ0EsSUFBSTQxQixjQUFjLEdBQUcsQ0FBQyxHQUFHNTJCLEtBQUssQ0FBQ2dCLEdBQVYsRUFBZSxLQUFmLENBQXJCO0lBQ0EsSUFBSXdJLE9BQU8sR0FBRyxDQUFDLEdBQUd4SixLQUFLLENBQUNnQixHQUFWLEVBQWUsRUFBZixDQUFkO0lBQ0EsSUFBSTYxQiw0QkFBNEIsR0FBRyxDQUFDLEdBQUc3MkIsS0FBSyxDQUFDZ0IsR0FBVixFQUFlLEtBQWYsQ0FBbkM7SUFDQSxJQUFJODFCLG9CQUFvQixHQUFHLENBQUMsR0FBRzkyQixLQUFLLENBQUNnQixHQUFWLEVBQWUsS0FBZixDQUEzQjtJQUNBLElBQUlDLFNBQVMsR0FBRyxDQUFDLEdBQUdqQixLQUFLLENBQUNnQixHQUFWLEVBQWUsS0FBZixDQUFoQjs7SUFDQSxJQUFJMDFCLFdBQVcsR0FBRyxTQUFkQSxXQUFjLENBQVUzMkIsS0FBVixFQUFpQjtNQUMvQjAyQixZQUFZLENBQUMxMkIsS0FBYixHQUFxQkEsS0FBckI7SUFDSCxDQUZEOztJQUdBLElBQUltSixPQUFPLEdBQUcsdUZBQWQ7SUFDQSxJQUFJZ3JCLFdBQVcsR0FBRyxDQUFDLEdBQUdsMEIsS0FBSyxDQUFDZ0IsR0FBVixHQUFsQjtJQUNBLENBQUMsR0FBR2hCLEtBQUssQ0FBQ2tCLFNBQVYsRUFBcUIsWUFBWTtNQUM3QnlCLE1BQU0sQ0FBQ3FRLGdCQUFQLENBQXdCLE9BQXhCLEVBQWlDLFVBQVVyTyxDQUFWLEVBQWE7UUFDMUMsSUFBSSxDQUFDdXZCLFdBQVcsQ0FBQ24wQixLQUFaLENBQWtCNjBCLFFBQWxCLENBQTJCandCLENBQUMsQ0FBQ2tZLE1BQTdCLENBQUwsRUFBMkM7VUFDdkM1VCxLQUFLLENBQUN1dEIsU0FBTixHQUFrQixLQUFsQjtRQUNIO01BQ0osQ0FKRDtJQUtILENBTkQ7O0lBT0EsU0FBU08sYUFBVCxDQUF1QkMsUUFBdkIsRUFBaUM5bUIsSUFBakMsRUFBdUM7TUFDbkMsSUFBSW9oQixPQUFPLEdBQUdsd0IsUUFBUSxDQUFDcUIsYUFBVCxDQUF1QixHQUF2QixDQUFkO01BQ0E2dUIsT0FBTyxDQUFDeHVCLFlBQVIsQ0FBcUIsTUFBckIsRUFBNkIsbUNBQW1DbTBCLGtCQUFrQixDQUFDL21CLElBQUQsQ0FBbEY7TUFDQW9oQixPQUFPLENBQUN4dUIsWUFBUixDQUFxQixVQUFyQixFQUFpQ2swQixRQUFqQztNQUNBMUYsT0FBTyxDQUFDaHdCLEtBQVIsQ0FBY3NpQixPQUFkLEdBQXdCLE1BQXhCO01BQ0F4aUIsUUFBUSxDQUFDMkIsSUFBVCxDQUFjQyxXQUFkLENBQTBCc3VCLE9BQTFCO01BQ0FBLE9BQU8sQ0FBQ3J1QixLQUFSO01BQ0E3QixRQUFRLENBQUMyQixJQUFULENBQWNtMEIsV0FBZCxDQUEwQjVGLE9BQTFCO0lBQ0g7O0lBQ0QsSUFBSXhPLE1BQU0sR0FBRyxTQUFUQSxNQUFTLEdBQVk7TUFDckI3WixLQUFLLENBQUN1dEIsU0FBTixHQUFrQixDQUFDdnRCLEtBQUssQ0FBQ3V0QixTQUF6QjtJQUNILENBRkQ7O0lBR0EsSUFBSS9KLGFBQWEsR0FBRyxTQUFoQkEsYUFBZ0IsR0FBWTtNQUM1QnhyQixTQUFTLENBQUNsQixLQUFWLEdBQWtCLElBQWxCO01BQ0FNLE9BQU8sV0FBUCxDQUFnQitDLEdBQWhCLENBQW9CLDBDQUFwQixFQUFnRW5CLElBQWhFLENBQXFFLFVBQVVDLEdBQVYsRUFBZTtRQUNoRixJQUFJQSxHQUFHLENBQUNLLElBQUosQ0FBUzhJLE1BQWIsRUFBcUI7VUFDakJwSyxTQUFTLENBQUNsQixLQUFWLEdBQWtCLEtBQWxCO1VBQ0ErMkIsb0JBQW9CLENBQUMvMkIsS0FBckIsR0FBNkIsSUFBN0I7UUFDSCxDQUhELE1BSUs7VUFDRGtCLFNBQVMsQ0FBQ2xCLEtBQVYsR0FBa0IsS0FBbEI7VUFDQTgyQiw0QkFBNEIsQ0FBQzkyQixLQUE3QixHQUFxQyxJQUFyQztRQUNIO01BQ0osQ0FURDtJQVVILENBWkQ7O0lBYUEsSUFBSW8zQixjQUFjLEdBQUcsU0FBakJBLGNBQWlCLEdBQVk7TUFDN0J0MkIsS0FBSyxDQUFDWSxRQUFOLENBQWUsc0JBQWYsRUFBdUMsSUFBdkM7TUFDQVIsU0FBUyxDQUFDbEIsS0FBVixHQUFrQixJQUFsQjtNQUNBKzJCLG9CQUFvQixDQUFDLzJCLEtBQXJCLEdBQTZCLEtBQTdCO01BQ0FjLEtBQUssQ0FBQ1ksUUFBTixDQUFlLHNCQUFmLEVBQXVDLElBQXZDO01BQ0FaLEtBQUssQ0FBQ1ksUUFBTixDQUFlLHdCQUFmLEVBQXlDLEtBQXpDO01BQ0FwQixPQUFPLFdBQVAsQ0FBZ0IrQyxHQUFoQixDQUFvQixpQ0FBcEIsRUFBdURuQixJQUF2RCxDQUE0RCxZQUFZO1FBQ3BFd3FCLGFBQWE7TUFDaEIsQ0FGRDtJQUdILENBVEQ7O0lBVUEsSUFBSTJLLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBbUIsQ0FBVUMsZUFBVixFQUEyQjtNQUM5Q1QsY0FBYyxDQUFDNzJCLEtBQWYsR0FBdUIsS0FBdkI7TUFDQSxJQUFJdTNCLGVBQWUsR0FBRzMwQixNQUFNLENBQUM4SCxRQUFQLENBQWdCL0gsSUFBaEIsQ0FBcUJiLEtBQXJCLENBQTJCLEdBQTNCLENBQXRCO01BQ0EsSUFBSTAxQixjQUFjLEdBQUcsRUFBckI7O01BQ0EsSUFBSUQsZUFBZSxDQUFDbnhCLE1BQWhCLEtBQTJCLENBQS9CLEVBQWtDO1FBQzlCb3hCLGNBQWMsR0FBRyxNQUFNRCxlQUFlLENBQUMsQ0FBRCxDQUF0QztNQUNIOztNQUNELElBQUk1MUIsTUFBTSxHQUFHLGlEQUFpRDYxQixjQUE5RDs7TUFDQSxJQUFJRixlQUFlLEdBQUcsQ0FBdEIsRUFBeUI7UUFDckIsSUFBSTdwQixVQUFVLEdBQUczTSxLQUFLLENBQUNvSSxLQUFOLENBQVl5VyxrQkFBWixDQUErQnZULElBQS9CLENBQW9DLEdBQXBDLENBQWpCO1FBQ0F6SyxNQUFNLEdBQUcsNkNBQTZDQyxNQUE3QyxDQUFvRDZMLFVBQXBELEVBQWdFLEdBQWhFLENBQVQ7TUFDSDs7TUFDRG5OLE9BQU8sV0FBUCxDQUFnQitDLEdBQWhCLENBQW9CMUIsTUFBcEIsRUFBNEJPLElBQTVCLENBQWlDLFVBQVVDLEdBQVYsRUFBZTtRQUM1QyxJQUFJdkIsRUFBSjs7UUFDQSxJQUFJdUIsR0FBRyxDQUFDSyxJQUFKLENBQVNlLE9BQVQsSUFBb0IsS0FBeEIsRUFBK0I7VUFDM0JvRSxlQUFlLENBQUMzSCxLQUFoQixHQUF3QixJQUF4QjtVQUNBK0gsWUFBWSxDQUFDL0gsS0FBYixHQUFxQm1DLEdBQUcsQ0FBQ0ssSUFBSixDQUFTaUgsT0FBOUI7VUFDQW10QixnQkFBZ0IsQ0FBQzUyQixLQUFqQixHQUF5Qm1DLEdBQUcsQ0FBQ0ssSUFBSixDQUFTZSxPQUFsQztVQUNBbUcsVUFBVSxDQUFDLFlBQVk7WUFBRSxPQUFRL0IsZUFBZSxDQUFDM0gsS0FBaEIsR0FBd0IsS0FBaEM7VUFBeUMsQ0FBeEQsRUFBMEQsS0FBMUQsQ0FBVjtRQUNILENBTEQsTUFNSztVQUNELElBQUk0TixRQUFRLEdBQUd6TCxHQUFHLENBQUNLLElBQW5CO1VBQ0EsSUFBSUYsSUFBSSxHQUFHLElBQUlDLElBQUosQ0FBUyxDQUFDcUwsUUFBRCxDQUFULEVBQXFCO1lBQzVCL0csSUFBSSxFQUFFO1VBRHNCLENBQXJCLENBQVg7VUFHQSxJQUFJcEUsSUFBSSxHQUFHcEIsUUFBUSxDQUFDcUIsYUFBVCxDQUF1QixHQUF2QixDQUFYO1VBQ0FELElBQUksQ0FBQ0UsSUFBTCxHQUFZQyxNQUFNLENBQUNDLEdBQVAsQ0FBV0MsZUFBWCxDQUEyQlIsSUFBM0IsQ0FBWjtVQUNBRyxJQUFJLENBQUNnMUIsUUFBTCxHQUFnQixDQUFDNzJCLEVBQUUsR0FBR3VCLEdBQUcsQ0FBQ0UsT0FBSixDQUFZLHFCQUFaLENBQU4sTUFBOEMsSUFBOUMsSUFBc0R6QixFQUFFLEtBQUssS0FBSyxDQUFsRSxHQUFzRSxLQUFLLENBQTNFLEdBQStFQSxFQUFFLENBQUNrQixLQUFILENBQVMsR0FBVCxFQUFjLENBQWQsQ0FBL0Y7VUFDQVcsSUFBSSxDQUFDUyxLQUFMO1FBQ0g7TUFDSixDQWxCRDtJQW1CSCxDQS9CRDs7SUFnQ0EsSUFBSXcwQixXQUFXLEdBQUcsU0FBZEEsV0FBYyxDQUFVSixlQUFWLEVBQTJCO01BQ3pDLElBQUkxMkIsRUFBSjs7TUFDQSxJQUFJMjJCLGVBQWUsR0FBRyxDQUFDMzJCLEVBQUUsR0FBR2dDLE1BQU0sQ0FBQzhILFFBQVAsQ0FBZ0IvSCxJQUF0QixNQUFnQyxJQUFoQyxJQUF3Qy9CLEVBQUUsS0FBSyxLQUFLLENBQXBELEdBQXdELEtBQUssQ0FBN0QsR0FBaUVBLEVBQUUsQ0FBQ2tCLEtBQUgsQ0FBUyxHQUFULENBQXZGO01BQ0EsSUFBSTAxQixjQUFjLEdBQUcsRUFBckI7O01BQ0EsSUFBSUQsZUFBZSxDQUFDbnhCLE1BQWhCLEtBQTJCLENBQS9CLEVBQWtDO1FBQzlCb3hCLGNBQWMsR0FBRyxNQUFNRCxlQUFlLENBQUMsQ0FBRCxDQUF0QztNQUNIOztNQUNELElBQUk1MUIsTUFBTSxHQUFHLDRDQUE0QzYxQixjQUF6RDs7TUFDQSxJQUFJRixlQUFlLEdBQUcsQ0FBdEIsRUFBeUI7UUFDckIsSUFBSTdwQixVQUFVLEdBQUczTSxLQUFLLENBQUNvSSxLQUFOLENBQVl5VyxrQkFBWixDQUErQnZULElBQS9CLENBQW9DLEdBQXBDLENBQWpCO1FBQ0F6SyxNQUFNLEdBQUcsd0NBQXdDQyxNQUF4QyxDQUErQzZMLFVBQS9DLEVBQTJELEdBQTNELENBQVQ7TUFDSDs7TUFDRG5OLE9BQU8sV0FBUCxDQUFnQitDLEdBQWhCLENBQW9CMUIsTUFBcEIsRUFBNEJPLElBQTVCLENBQWlDLFVBQVVDLEdBQVYsRUFBZTtRQUM1QyxJQUFJdkIsRUFBSjs7UUFDQSxJQUFJdUIsR0FBRyxDQUFDSyxJQUFKLENBQVNlLE9BQVQsSUFBb0IsS0FBeEIsRUFBK0I7VUFDM0IsSUFBSXBCLEdBQUcsQ0FBQ0ssSUFBSixDQUFTbTFCLFNBQVQsS0FBdUIsSUFBM0IsRUFBaUM7WUFDN0JkLGNBQWMsQ0FBQzcyQixLQUFmLEdBQXVCLElBQXZCO1lBQ0F5SixPQUFPLENBQUN6SixLQUFSLEdBQWdCbUMsR0FBRyxDQUFDSyxJQUFKLENBQVNpSCxPQUF6QjtVQUNILENBSEQsTUFJSztZQUNEOUIsZUFBZSxDQUFDM0gsS0FBaEIsR0FBd0IsSUFBeEI7WUFDQStILFlBQVksQ0FBQy9ILEtBQWIsR0FBcUJtQyxHQUFHLENBQUNLLElBQUosQ0FBU2lILE9BQTlCO1lBQ0FtdEIsZ0JBQWdCLENBQUM1MkIsS0FBakIsR0FBeUJtQyxHQUFHLENBQUNLLElBQUosQ0FBU2UsT0FBbEM7WUFDQW1HLFVBQVUsQ0FBQyxZQUFZO2NBQUUsT0FBUS9CLGVBQWUsQ0FBQzNILEtBQWhCLEdBQXdCLEtBQWhDO1lBQXlDLENBQXhELEVBQTBELEtBQTFELENBQVY7VUFDSDtRQUNKLENBWEQsTUFZSztVQUNELElBQUk0TixRQUFRLEdBQUd6TCxHQUFHLENBQUNLLElBQW5CO1VBQ0EsSUFBSUYsSUFBSSxHQUFHLElBQUlDLElBQUosQ0FBUyxDQUFDcUwsUUFBRCxDQUFULEVBQXFCO1lBQzVCL0csSUFBSSxFQUFFO1VBRHNCLENBQXJCLENBQVg7VUFHQSxJQUFJcEUsSUFBSSxHQUFHcEIsUUFBUSxDQUFDcUIsYUFBVCxDQUF1QixHQUF2QixDQUFYO1VBQ0FELElBQUksQ0FBQ0UsSUFBTCxHQUFZQyxNQUFNLENBQUNDLEdBQVAsQ0FBV0MsZUFBWCxDQUEyQlIsSUFBM0IsQ0FBWjtVQUNBRyxJQUFJLENBQUNnMUIsUUFBTCxHQUFnQixDQUFDNzJCLEVBQUUsR0FBR3VCLEdBQUcsQ0FBQ0UsT0FBSixDQUFZLHFCQUFaLENBQU4sTUFBOEMsSUFBOUMsSUFBc0R6QixFQUFFLEtBQUssS0FBSyxDQUFsRSxHQUFzRSxLQUFLLENBQTNFLEdBQStFQSxFQUFFLENBQUNrQixLQUFILENBQVMsR0FBVCxFQUFjLENBQWQsQ0FBL0Y7VUFDQVcsSUFBSSxDQUFDUyxLQUFMO1FBQ0g7TUFDSixDQXhCRDtJQXlCSCxDQXJDRDs7SUFzQ0EsSUFBSTAwQixXQUFXLEdBQUcsU0FBZEEsV0FBYyxDQUFVTixlQUFWLEVBQTJCO01BQ3pDLElBQUkxMkIsRUFBSjs7TUFDQU0sU0FBUyxDQUFDbEIsS0FBVixHQUFrQixJQUFsQjtNQUNBYyxLQUFLLENBQUNZLFFBQU4sQ0FBZSx3QkFBZixFQUF5QyxJQUF6QztNQUNBWixLQUFLLENBQUNZLFFBQU4sQ0FBZSxzQkFBZixFQUF1QyxLQUF2QztNQUNBbzFCLDRCQUE0QixDQUFDOTJCLEtBQTdCLEdBQXFDLEtBQXJDO01BQ0EsSUFBSXUzQixlQUFlLEdBQUcsQ0FBQzMyQixFQUFFLEdBQUdnQyxNQUFNLENBQUM4SCxRQUFQLENBQWdCL0gsSUFBdEIsTUFBZ0MsSUFBaEMsSUFBd0MvQixFQUFFLEtBQUssS0FBSyxDQUFwRCxHQUF3RCxLQUFLLENBQTdELEdBQWlFQSxFQUFFLENBQUNrQixLQUFILENBQVMsR0FBVCxDQUF2RjtNQUNBLElBQUkwMUIsY0FBYyxHQUFHLEVBQXJCOztNQUNBLElBQUlELGVBQWUsQ0FBQ254QixNQUFoQixLQUEyQixDQUEvQixFQUFrQztRQUM5Qm94QixjQUFjLEdBQUcsTUFBTUQsZUFBZSxDQUFDLENBQUQsQ0FBdEM7TUFDSDs7TUFDRCxJQUFJNTFCLE1BQU0sR0FBRywyQ0FBMkM2MUIsY0FBeEQ7O01BQ0EsSUFBSUYsZUFBZSxHQUFHLENBQXRCLEVBQXlCO1FBQ3JCLElBQUk3cEIsVUFBVSxHQUFHM00sS0FBSyxDQUFDb0ksS0FBTixDQUFZeVcsa0JBQVosQ0FBK0J2VCxJQUEvQixDQUFvQyxHQUFwQyxDQUFqQjtRQUNBekssTUFBTSxHQUFHLHVDQUF1Q0MsTUFBdkMsQ0FBOEM2TCxVQUE5QyxFQUEwRCxHQUExRCxDQUFUO01BQ0g7O01BQ0RuTixPQUFPLFdBQVAsQ0FBZ0IrQyxHQUFoQixDQUFvQjFCLE1BQXBCLGFBQW9DLFlBQVk7UUFBRSxPQUFRVCxTQUFTLENBQUNsQixLQUFWLEdBQWtCLEtBQTFCO01BQW1DLENBQXJGO0lBQ0gsQ0FqQkQ7O0lBa0JBLElBQUk2M0IsV0FBVyxHQUFHLFNBQWRBLFdBQWMsQ0FBVVAsZUFBVixFQUEyQjtNQUN6QyxJQUFJMTJCLEVBQUo7O01BQ0EsSUFBSTIyQixlQUFlLEdBQUcsQ0FBQzMyQixFQUFFLEdBQUdnQyxNQUFNLENBQUM4SCxRQUFQLENBQWdCL0gsSUFBdEIsTUFBZ0MsSUFBaEMsSUFBd0MvQixFQUFFLEtBQUssS0FBSyxDQUFwRCxHQUF3RCxLQUFLLENBQTdELEdBQWlFQSxFQUFFLENBQUNrQixLQUFILENBQVMsR0FBVCxDQUF2RjtNQUNBLElBQUkwMUIsY0FBYyxHQUFHLEVBQXJCOztNQUNBLElBQUlELGVBQWUsQ0FBQ254QixNQUFoQixLQUEyQixDQUEvQixFQUFrQztRQUM5Qm94QixjQUFjLEdBQUcsTUFBTUQsZUFBZSxDQUFDLENBQUQsQ0FBdEM7TUFDSDs7TUFDRCxJQUFJNTFCLE1BQU0sR0FBRyw0Q0FBNEM2MUIsY0FBekQ7O01BQ0EsSUFBSUYsZUFBZSxHQUFHLENBQXRCLEVBQXlCO1FBQ3JCLElBQUk3cEIsVUFBVSxHQUFHM00sS0FBSyxDQUFDb0ksS0FBTixDQUFZeVcsa0JBQVosQ0FBK0J2VCxJQUEvQixDQUFvQyxHQUFwQyxDQUFqQjtRQUNBekssTUFBTSxHQUFHLHdDQUF3Q0MsTUFBeEMsQ0FBK0M2TCxVQUEvQyxFQUEyRCxHQUEzRCxDQUFUO01BQ0g7O01BQ0RuTixPQUFPLFdBQVAsQ0FBZ0IrQyxHQUFoQixDQUFvQjFCLE1BQXBCLEVBQTRCTyxJQUE1QixDQUFpQyxVQUFVQyxHQUFWLEVBQWU7UUFDNUMsSUFBSXZCLEVBQUo7O1FBQ0EsSUFBSXVCLEdBQUcsQ0FBQ0ssSUFBSixDQUFTZSxPQUFULElBQW9CLEtBQXhCLEVBQStCO1VBQzNCb0UsZUFBZSxDQUFDM0gsS0FBaEIsR0FBd0IsSUFBeEI7VUFDQStILFlBQVksQ0FBQy9ILEtBQWIsR0FBcUJtQyxHQUFHLENBQUNLLElBQUosQ0FBU2lILE9BQTlCO1VBQ0FtdEIsZ0JBQWdCLENBQUM1MkIsS0FBakIsR0FBeUJtQyxHQUFHLENBQUNLLElBQUosQ0FBU2UsT0FBbEM7VUFDQW1HLFVBQVUsQ0FBQyxZQUFZO1lBQUUsT0FBUS9CLGVBQWUsQ0FBQzNILEtBQWhCLEdBQXdCLEtBQWhDO1VBQXlDLENBQXhELEVBQTBELEtBQTFELENBQVY7UUFDSCxDQUxELE1BTUs7VUFDRCxJQUFJNE4sUUFBUSxHQUFHekwsR0FBRyxDQUFDSyxJQUFuQjtVQUNBLElBQUlGLElBQUksR0FBRyxJQUFJQyxJQUFKLENBQVMsQ0FBQ3FMLFFBQUQsQ0FBVCxFQUFxQjtZQUM1Qi9HLElBQUksRUFBRTtVQURzQixDQUFyQixDQUFYO1VBR0EsSUFBSXBFLElBQUksR0FBR3BCLFFBQVEsQ0FBQ3FCLGFBQVQsQ0FBdUIsR0FBdkIsQ0FBWDtVQUNBRCxJQUFJLENBQUNFLElBQUwsR0FBWUMsTUFBTSxDQUFDQyxHQUFQLENBQVdDLGVBQVgsQ0FBMkJSLElBQTNCLENBQVo7VUFDQUcsSUFBSSxDQUFDZzFCLFFBQUwsR0FBZ0IsQ0FBQzcyQixFQUFFLEdBQUd1QixHQUFHLENBQUNFLE9BQUosQ0FBWSxxQkFBWixDQUFOLE1BQThDLElBQTlDLElBQXNEekIsRUFBRSxLQUFLLEtBQUssQ0FBbEUsR0FBc0UsS0FBSyxDQUEzRSxHQUErRUEsRUFBRSxDQUFDa0IsS0FBSCxDQUFTLEdBQVQsRUFBYyxDQUFkLENBQS9GO1VBQ0FXLElBQUksQ0FBQ1MsS0FBTDtRQUNIO01BQ0osQ0FsQkQ7SUFtQkgsQ0EvQkQ7O0lBZ0NBLE9BQU87TUFDSHBDLEtBQUssRUFBRUEsS0FESjtNQUVIb0ksS0FBSyxFQUFFQSxLQUZKO01BR0hDLE9BQU8sRUFBRUEsT0FITjtNQUlIdXRCLFlBQVksRUFBRUEsWUFKWDtNQUtIcHRCLFVBQVUsRUFBRUEsVUFMVDtNQU1IeVosTUFBTSxFQUFFQSxNQU5MO01BT0h4WixXQUFXLEVBQUVBLFdBUFY7TUFRSG90QixXQUFXLEVBQUVBLFdBUlY7TUFTSHhDLFdBQVcsRUFBRUEsV0FUVjtNQVVIMEQsV0FBVyxFQUFFQSxXQVZWO01BV0hsd0IsZUFBZSxFQUFFQSxlQVhkO01BWUhtdkIsNEJBQTRCLEVBQUVBLDRCQVozQjtNQWFIL3VCLFlBQVksRUFBRUEsWUFiWDtNQWNINnVCLGdCQUFnQixFQUFFQSxnQkFkZjtNQWVIYyxXQUFXLEVBQUVBLFdBZlY7TUFnQkg1ekIsS0FBSyxFQUFFekQsZ0JBQWdCLFdBaEJwQjtNQWlCSHcyQixjQUFjLEVBQUVBLGNBakJiO01Ba0JIbkssYUFBYSxFQUFFQSxhQWxCWjtNQW1CSDJLLGdCQUFnQixFQUFFQSxnQkFuQmY7TUFvQkg1dEIsT0FBTyxFQUFFQSxPQXBCTjtNQXFCSHV0QixhQUFhLEVBQUVBLGFBckJaO01Bc0JIWSxXQUFXLEVBQUVBLFdBdEJWO01BdUJIYixvQkFBb0IsRUFBRUEsb0JBdkJuQjtNQXdCSDcxQixTQUFTLEVBQUVBLFNBeEJSO01BeUJIazJCLGNBQWMsRUFBRUEsY0F6QmI7TUEwQkg3dkIsU0FBUyxFQUFFQTtJQTFCUixDQUFQO0VBNEJILENBek53QztFQTBOekNvckIsT0FBTyxFQUFFO0lBQUVsVCxVQUFVLEVBQUV4ZixLQUFLLENBQUN3ZjtFQUFwQjtBQTFOZ0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDakJhOztBQUNiLElBQUkvZixlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJc21CLGVBQWUsR0FBRzltQixlQUFlLENBQUNRLG1CQUFPLENBQUMseUZBQUQsQ0FBUixDQUFyQzs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q3FJLElBQUksRUFBRSxhQURtQztFQUV6QzZELFVBQVUsRUFBRTtJQUNSd2EsU0FBUyxFQUFFVixlQUFlO0VBRGxCLENBRjZCO0VBS3pDOWxCLEtBQUssRUFBRSxpQkFBWTtJQUNmLElBQUk2RyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsT0FBTztNQUFFRCxTQUFTLEVBQUVBO0lBQWIsQ0FBUDtFQUNIO0FBUndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ1JhOztBQUNiLElBQUk3SCxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJNDNCLHVCQUF1QixHQUFHcDRCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxvR0FBRCxDQUFSLENBQTdDOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLGVBRG1DO0VBRXpDNkQsVUFBVSxFQUFFO0lBQ1JxckIsY0FBYyxFQUFFRCx1QkFBdUI7RUFEL0IsQ0FGNkI7RUFLekNwM0IsS0FBSyxFQUFFLGlCQUFZO0lBQ2YsSUFBSTZHLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJMEIsS0FBSyxHQUFHLENBQUMsR0FBR2pKLEtBQUssQ0FBQ2dJLFFBQVYsRUFBb0I7TUFDNUIrdkIsT0FBTyxFQUFFO0lBRG1CLENBQXBCLENBQVo7SUFHQSxPQUFPO01BQUU5dUIsS0FBSyxFQUFFQSxLQUFUO01BQWdCM0IsU0FBUyxFQUFFQTtJQUEzQixDQUFQO0VBQ0g7QUFYd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDUmE7O0FBQ2IsSUFBSTdILGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlDLEtBQUssR0FBR0QsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJKzNCLDRCQUE0QixHQUFHdjRCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw4R0FBRCxDQUFSLENBQWxEOztBQUNBLElBQUk0M0IsdUJBQXVCLEdBQUdwNEIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLG9HQUFELENBQVIsQ0FBN0M7O0FBQ0EsSUFBSXVHLGtCQUFrQixHQUFHL0csZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHNGQUFELENBQVIsQ0FBeEM7O0FBQ0EsSUFBSWc0QixrQkFBa0IsR0FBR3g0QixlQUFlLENBQUNRLG1CQUFPLENBQUMsa0hBQUQsQ0FBUixDQUF4Qzs7QUFDQSxJQUFJaTRCLHFCQUFxQixHQUFHejRCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyx3SEFBRCxDQUFSLENBQTNDOztBQUNBLElBQUkwbUIsa0JBQWtCLEdBQUdsbkIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHNHQUFELENBQVIsQ0FBeEMsRUFDQTs7O0FBQ0EsSUFBSUssT0FBTyxHQUFHTCxtQkFBTyxDQUFDLCtFQUFELENBQXJCOztBQUNBLElBQUk0bUIsZ0JBQWdCLEdBQUdwbkIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGtGQUFELENBQVIsQ0FBdEM7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNDLE1BQU0sRUFBRSxXQURpQztFQUV6Q0MsS0FBSyxFQUFFLGVBQVVDLE9BQVYsRUFBbUJDLEVBQW5CLEVBQXVCO0lBQzFCLElBQUlDLE1BQU0sR0FBR0QsRUFBRSxDQUFDQyxNQUFoQjtJQUNBQSxNQUFNO0lBQ04sSUFBSTBHLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJZ0csZUFBZSxHQUFHLENBQUMsR0FBR3JOLEtBQUssQ0FBQ3dELE1BQVYsRUFBa0IsaUJBQWxCLENBQXRCO0lBQ0EsSUFBSW9FLFlBQVksR0FBRyxDQUFDLEdBQUc1SCxLQUFLLENBQUN3RCxNQUFWLEVBQWtCLFdBQWxCLENBQW5CO0lBQ0EsSUFBSW1ULFNBQVMsR0FBRyxDQUFDLEdBQUczVyxLQUFLLENBQUN3RCxNQUFWLEVBQWtCLFdBQWxCLENBQWhCO0lBQ0EsSUFBSTdDLEtBQUssR0FBRyxDQUFDLEdBQUdQLE9BQU8sQ0FBQ1EsUUFBWixHQUFaO0lBQ0EsSUFBSTZDLFlBQVksR0FBRztNQUFFMkQsU0FBUyxFQUFFQSxTQUFiO01BQXdCaUcsZUFBZSxFQUFFQSxlQUF6QztNQUEwRHpGLFlBQVksRUFBRUEsWUFBeEU7TUFBc0YrTyxTQUFTLEVBQUVBLFNBQWpHO01BQTRHaFcsS0FBSyxFQUFFQSxLQUFuSDtNQUEwSHMzQixzQkFBc0IsRUFBRUgsNEJBQTRCLFdBQTlLO01BQXdMSSxpQkFBaUIsRUFBRVAsdUJBQXVCLFdBQWxPO01BQTRPdHJCLEtBQUssRUFBRS9GLGtCQUFrQixXQUFyUTtNQUErUTZ4QixtQkFBbUIsRUFBRUosa0JBQWtCLFdBQXRUO01BQWdVSyxlQUFlLEVBQUVKLHFCQUFxQixXQUF0VztNQUFnWHpRLFlBQVksRUFBRWQsa0JBQWtCLFdBQWhaO01BQTBaZ0IsVUFBVSxFQUFFZCxnQkFBZ0I7SUFBdGIsQ0FBbkI7SUFDQWpuQixNQUFNLENBQUNDLGNBQVAsQ0FBc0I4RCxZQUF0QixFQUFvQyxpQkFBcEMsRUFBdUQ7TUFBRUcsVUFBVSxFQUFFLEtBQWQ7TUFBcUIvRCxLQUFLLEVBQUU7SUFBNUIsQ0FBdkQ7SUFDQSxPQUFPNEQsWUFBUDtFQUNIO0FBYndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ2pCYTs7QUFDYi9ELDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLGtCQURtQztFQUV6Q25JLEtBQUssRUFBRSxpQkFBWTtJQUNmLE9BQU8sRUFBUDtFQUNIO0FBSndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ0hhOztBQUNiLElBQUloQixlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJd1EsUUFBUSxHQUFHaFIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLCtDQUFELENBQVIsQ0FBOUI7O0FBQ0EsSUFBSXFHLE1BQU0sR0FBR3JHLG1CQUFPLENBQUMsMkRBQUQsQ0FBcEIsRUFDQTs7O0FBQ0EsSUFBSUssT0FBTyxHQUFHTCxtQkFBTyxDQUFDLCtFQUFELENBQXJCOztBQUNBLElBQUkrbUIseUJBQXlCLEdBQUd2bkIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGtIQUFELENBQVIsQ0FBL0M7O0FBQ0EsSUFBSXdtQixtQkFBbUIsR0FBR2huQixlQUFlLENBQUNRLG1CQUFPLENBQUMsd0dBQUQsQ0FBUixDQUF6Qzs7QUFDQSxJQUFJeW1CLHFCQUFxQixHQUFHam5CLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0R0FBRCxDQUFSLENBQTNDOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakMsRUFDQTs7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsYUFEaUM7RUFFekNrRyxLQUFLLEVBQUU7SUFDSG5FLElBQUksRUFBRTtNQUFFcUUsSUFBSSxFQUFFaEgsTUFBUjtNQUFnQmlILFFBQVEsRUFBRTtJQUExQixDQURIO0lBRUh5WSxNQUFNLEVBQUU7TUFBRTFZLElBQUksRUFBRUssT0FBUjtNQUFpQkosUUFBUSxFQUFFO0lBQTNCO0VBRkwsQ0FGa0M7RUFNekNwRyxLQUFLLEVBQUUsZUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUI7SUFDMUIsSUFBSUMsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQ0FBLE1BQU07SUFDTixJQUFJMEcsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjs7SUFDQSxJQUFJSCxFQUFFLEdBQUcsQ0FBQyxHQUFHZCxNQUFNLENBQUM4QyxTQUFYLEdBQVQ7SUFBQSxJQUFrQ212QixjQUFjLEdBQUdueEIsRUFBRSxDQUFDLENBQUQsQ0FBckQ7SUFBQSxJQUEwRG94QixlQUFlLEdBQUdweEIsRUFBRSxDQUFDLENBQUQsQ0FBOUU7O0lBQ0EsSUFBSXZHLEtBQUssR0FBRyxDQUFDLEdBQUdQLE9BQU8sQ0FBQ1EsUUFBWixHQUFaOztJQUNBLFNBQVM2dUIsVUFBVCxDQUFvQjFiLElBQXBCLEVBQTBCO01BQ3RCLE9BQU8sQ0FBQyxHQUFHeEQsUUFBUSxXQUFaLEVBQXNCd0QsSUFBdEIsRUFBNEJ3a0IsT0FBNUIsRUFBUDtJQUNIOztJQUNELFNBQVNDLGVBQVQsQ0FBeUJsckIsVUFBekIsRUFBcUMrcUIsY0FBckMsRUFBcUQ7TUFDakQsSUFBSSxDQUFDQSxjQUFMLEVBQXFCO1FBQ2pCLElBQUk3cUIsR0FBRyxHQUFHLEVBQVY7O1FBQ0EsS0FBSyxJQUFJaXJCLEtBQVQsSUFBa0JuckIsVUFBbEIsRUFBOEI7VUFDMUJFLEdBQUcsQ0FBQ3RILElBQUosQ0FBU29ILFVBQVUsQ0FBQ21yQixLQUFELENBQVYsQ0FBa0Jud0IsRUFBM0I7UUFDSDs7UUFDRDNILEtBQUssQ0FBQ1ksUUFBTixDQUFlLDBCQUFmLEVBQTJDaU0sR0FBM0M7TUFDSCxDQU5ELE1BT0s7UUFDRDdNLEtBQUssQ0FBQ1ksUUFBTixDQUFlLDBCQUFmLEVBQTJDLEVBQTNDO01BQ0g7O01BQ0QrMkIsZUFBZTtJQUNsQixDQXJCeUIsQ0FzQjFCOzs7SUFDQSxJQUFJanRCLFVBQVUsR0FBRzVJLE1BQU0sQ0FBQzhILFFBQVAsQ0FBZ0IvSCxJQUFqQztJQUNBLElBQUlrMkIsS0FBSyxHQUFHLEVBQVo7SUFBQSxJQUFnQkMsU0FBUyxHQUFHLEtBQTVCOztJQUNBLElBQUlDLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBbUIsR0FBWTtNQUMvQixPQUFPRCxTQUFTLEtBQUssS0FBZCxHQUFzQixZQUF0QixHQUFxQyxXQUE1QztJQUNILENBRkQ7O0lBR0EsSUFBSUUsd0JBQXdCLEdBQUcsU0FBM0JBLHdCQUEyQixHQUFZO01BQ3ZDLElBQUlwNEIsRUFBSjs7TUFDQSxJQUFJNEssVUFBVSxDQUFDVCxRQUFYLENBQW9CLEdBQXBCLENBQUosRUFBOEI7UUFDMUIsSUFBSVUsV0FBVyxHQUFHN0ksTUFBTSxDQUFDOEgsUUFBUCxDQUFnQmdCLE1BQWxDO1FBQUEsSUFBMENDLFNBQVMsR0FBRyxJQUFJQyxlQUFKLENBQW9CSCxXQUFwQixDQUF0RDtRQUNBb3RCLEtBQUssR0FBRyxDQUFDajRCLEVBQUUsR0FBRytLLFNBQVMsQ0FBQ3RJLEdBQVYsQ0FBYyxHQUFkLENBQU4sTUFBOEIsSUFBOUIsSUFBc0N6QyxFQUFFLEtBQUssS0FBSyxDQUFsRCxHQUFzREEsRUFBdEQsR0FBMkQsRUFBbkU7UUFDQWs0QixTQUFTLEdBQUdudEIsU0FBUyxDQUFDdEksR0FBVixDQUFjLFdBQWQsTUFBK0IsTUFBL0IsR0FBd0MsS0FBeEMsR0FBZ0QsTUFBNUQ7TUFDSDs7TUFDRCxPQUFPLE1BQU16QixNQUFOLENBQWFpM0IsS0FBYixFQUFvQix5Q0FBcEIsRUFBK0RqM0IsTUFBL0QsQ0FBc0VrM0IsU0FBdEUsQ0FBUDtJQUNILENBUkQ7O0lBU0EsSUFBSUcsYUFBYSxHQUFHLFNBQWhCQSxhQUFnQixHQUFZO01BQzVCLElBQUlyNEIsRUFBSjs7TUFDQSxJQUFJNEssVUFBVSxDQUFDVCxRQUFYLENBQW9CLEdBQXBCLENBQUosRUFBOEI7UUFDMUIsSUFBSVUsV0FBVyxHQUFHN0ksTUFBTSxDQUFDOEgsUUFBUCxDQUFnQmdCLE1BQWxDO1FBQUEsSUFBMENDLFNBQVMsR0FBRyxJQUFJQyxlQUFKLENBQW9CSCxXQUFwQixDQUF0RDtRQUNBb3RCLEtBQUssR0FBRyxDQUFDajRCLEVBQUUsR0FBRytLLFNBQVMsQ0FBQ3RJLEdBQVYsQ0FBYyxHQUFkLENBQU4sTUFBOEIsSUFBOUIsSUFBc0N6QyxFQUFFLEtBQUssS0FBSyxDQUFsRCxHQUFzREEsRUFBdEQsR0FBMkQsRUFBbkU7UUFDQWs0QixTQUFTLEdBQUdudEIsU0FBUyxDQUFDdEksR0FBVixDQUFjLFdBQWQsTUFBK0IsTUFBL0IsR0FBd0MsS0FBeEMsR0FBZ0QsTUFBNUQ7TUFDSDs7TUFDRCxPQUFPLE1BQU16QixNQUFOLENBQWFpM0IsS0FBYixFQUFvQixnQ0FBcEIsRUFBc0RqM0IsTUFBdEQsQ0FBNkRrM0IsU0FBN0QsQ0FBUDtJQUNILENBUkQ7O0lBU0EsSUFBSWwxQixZQUFZLEdBQUc7TUFBRTJELFNBQVMsRUFBRUEsU0FBYjtNQUF3Qml4QixjQUFjLEVBQUVBLGNBQXhDO01BQXdEQyxlQUFlLEVBQUVBLGVBQXpFO01BQTBGMzNCLEtBQUssRUFBRUEsS0FBakc7TUFBd0c4dUIsVUFBVSxFQUFFQSxVQUFwSDtNQUFnSStJLGVBQWUsRUFBRUEsZUFBako7TUFBa0tudEIsVUFBVSxFQUFFQSxVQUE5SztNQUEwTHF0QixLQUFLLEVBQUVBLEtBQWpNO01BQXdNQyxTQUFTLEVBQUVBLFNBQW5OO01BQThOQyxnQkFBZ0IsRUFBRUEsZ0JBQWhQO01BQWtRQyx3QkFBd0IsRUFBRUEsd0JBQTVSO01BQXNUQyxhQUFhLEVBQUVBLGFBQXJVO01BQW9WdFIsbUJBQW1CLEVBQUVWLHlCQUF5QixXQUFsWTtNQUE0WU0sT0FBTyxFQUFFYixtQkFBbUIsV0FBeGE7TUFBa2JlLFNBQVMsRUFBRWQscUJBQXFCO0lBQWxkLENBQW5CO0lBQ0E5bUIsTUFBTSxDQUFDQyxjQUFQLENBQXNCOEQsWUFBdEIsRUFBb0MsaUJBQXBDLEVBQXVEO01BQUVHLFVBQVUsRUFBRSxLQUFkO01BQXFCL0QsS0FBSyxFQUFFO0lBQTVCLENBQXZEO0lBQ0EsT0FBTzRELFlBQVA7RUFDSDtBQXZEd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDZmE7O0FBQ2IsSUFBSWxFLGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5CLEVBQ0E7OztBQUNBLElBQUltakIsVUFBVSxHQUFHM2pCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxzRkFBRCxDQUFSLENBQWhDOztBQUNBLElBQUkycUIsZUFBZSxHQUFHbnJCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxrR0FBRCxDQUFSLENBQXJDOztBQUNBLElBQUl1RyxrQkFBa0IsR0FBRy9HLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxzRkFBRCxDQUFSLENBQXhDOztBQUNBLElBQUlxbUIsT0FBTyxHQUFHcm1CLG1CQUFPLENBQUMsd0ZBQUQsQ0FBckIsRUFDQTs7O0FBQ0EsSUFBSTJ2QixZQUFZLEdBQUdud0IsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDZFQUFELENBQVIsQ0FBbEM7O0FBQ0EsSUFBSXVNLE9BQU8sR0FBRy9NLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxtRUFBRCxDQUFSLENBQTdCOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLGNBRG1DO0VBRXpDNkQsVUFBVSxFQUFFO0lBQ1J3c0IsV0FBVyxFQUFFM1MsT0FBTyxDQUFDMlMsV0FEYjtJQUVSQyxXQUFXLEVBQUU1UyxPQUFPLENBQUM0UyxXQUZiO0lBR1I3VixHQUFHLEVBQUVELFVBQVUsV0FIUDtJQUlSNkgsU0FBUyxFQUFFTCxlQUFlLFdBSmxCO0lBS1JyZSxLQUFLLEVBQUUvRixrQkFBa0I7RUFMakIsQ0FGNkI7RUFTekNFLEtBQUssRUFBRTtJQUNIaVYsUUFBUSxFQUFFO01BQ04vVSxJQUFJLEVBQUVoSCxNQURBO01BRU5pSCxRQUFRLEVBQUU7SUFGSixDQURQO0lBS0g2cUIsVUFBVSxFQUFFO01BQ1I5cUIsSUFBSSxFQUFFaEgsTUFERTtNQUVSaUgsUUFBUSxFQUFFO0lBRkYsQ0FMVDtJQVNId3FCLE1BQU0sRUFBRTtNQUNKenFCLElBQUksRUFBRWhILE1BREY7TUFFSmlILFFBQVEsRUFBRTtJQUZOLENBVEw7SUFhSGtoQixLQUFLLEVBQUU7TUFDSG5oQixJQUFJLEVBQUVoSCxNQURIO01BRUhpSCxRQUFRLEVBQUU7SUFGUCxDQWJKO0lBaUJIMEMsS0FBSyxFQUFFO01BQ0gzQyxJQUFJLEVBQUVoSCxNQURIO01BRUhpSCxRQUFRLEVBQUU7SUFGUCxDQWpCSjtJQXFCSHlxQixPQUFPLEVBQUU7TUFDTDFxQixJQUFJLEVBQUVoSCxNQUREO01BRUxpSCxRQUFRLEVBQUU7SUFGTDtFQXJCTixDQVRrQztFQW1DekNwRyxLQUFLLEVBQUUsZUFBVWlHLEtBQVYsRUFBaUI7SUFDcEIsSUFBSS9GLEVBQUo7O0lBQ0EsSUFBSTJuQixTQUFTLEdBQUcsQ0FBQyxHQUFHdG9CLEtBQUssQ0FBQ2dCLEdBQVYsRUFBZSxDQUFmLENBQWhCO0lBQ0EsSUFBSXVuQixXQUFXLEdBQUcsQ0FBQyxHQUFHdm9CLEtBQUssQ0FBQ2dCLEdBQVYsRUFBZSxDQUFmLENBQWxCO0lBQ0EsSUFBSXNHLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJZ3FCLFdBQVcsR0FBRyw4R0FBbEI7O0lBQ0EsSUFBSW5xQixFQUFFLEdBQUcsQ0FBQyxHQUFHcEgsS0FBSyxDQUFDME0sTUFBVixFQUFrQmhHLEtBQWxCLENBQVQ7SUFBQSxJQUFtQzJxQixNQUFNLEdBQUdqcUIsRUFBRSxDQUFDaXFCLE1BQS9DO0lBQUEsSUFBdUQxVixRQUFRLEdBQUd2VSxFQUFFLENBQUN1VSxRQUFyRTtJQUFBLElBQStFK1YsVUFBVSxHQUFHdHFCLEVBQUUsQ0FBQ3NxQixVQUEvRjtJQUFBLElBQTJHM0osS0FBSyxHQUFHM2dCLEVBQUUsQ0FBQzJnQixLQUF0SDs7SUFDQSxJQUFJWSxZQUFZLEdBQUcsU0FBZkEsWUFBZSxHQUFZO01BQzNCTCxTQUFTLENBQUN2b0IsS0FBVixHQUFrQjRDLE1BQU0sQ0FBQ2ltQixPQUF6QjtJQUNILENBRkQ7O0lBR0EsSUFBSUMsWUFBWSxHQUFHLENBQUMsR0FBRzdvQixLQUFLLENBQUN3RCxRQUFWLEVBQW9CLFlBQVk7TUFDL0MsT0FBTzhrQixTQUFTLENBQUN2b0IsS0FBVixLQUFvQixDQUEzQjtJQUNILENBRmtCLENBQW5CO0lBR0EsSUFBSTZXLFNBQVMsR0FBRyxDQUFDLEdBQUc1VyxLQUFLLENBQUNnSSxRQUFWLEVBQW9CO01BQ2hDa0csVUFBVSxFQUFFLEtBRG9CO01BRWhDMUUsT0FBTyxFQUFFLEVBRnVCO01BR2hDNUMsSUFBSSxFQUFFO0lBSDBCLENBQXBCLENBQWhCO0lBS0EsSUFBSWlCLFdBQVcsR0FBRyxDQUFDLEdBQUc3SCxLQUFLLENBQUNnQixHQUFWLEVBQWUsS0FBZixDQUFsQixDQWxCb0IsQ0FtQnBCOztJQUNBLENBQUMsR0FBR2hCLEtBQUssQ0FBQ2txQixPQUFWLEVBQW1CLE9BQW5CLEVBQTRCbkMsS0FBSyxDQUFDaG9CLEtBQWxDLEVBcEJvQixDQXFCcEI7O0lBQ0EsSUFBSTB4QixVQUFVLEdBQUdKLE1BQU0sQ0FBQ3R4QixLQUFQLENBQWFzeEIsTUFBOUIsQ0F0Qm9CLENBdUJwQjs7SUFDQSxJQUFJcFIsVUFBVSxHQUFHdEUsUUFBUSxDQUFDNWIsS0FBVCxDQUFleUksRUFBaEM7SUFBQSxJQUFvQzZuQixlQUFlLEdBQUcsQ0FBQzF2QixFQUFFLEdBQUdnYixRQUFRLENBQUM1YixLQUFULENBQWUycEIsb0JBQXJCLE1BQStDLElBQS9DLElBQXVEL29CLEVBQUUsS0FBSyxLQUFLLENBQW5FLEdBQXVFLEtBQUssQ0FBNUUsR0FBZ0ZBLEVBQUUsQ0FBQ2tsQixnQkFBekk7SUFBQSxJQUEySmlNLGFBQWEsR0FBRyxDQUFDLEdBQUd0bEIsT0FBTyxXQUFYLEVBQXFCbVAsUUFBUSxDQUFDNWIsS0FBVCxDQUFlbVksS0FBcEMsRUFBMkNtWSxlQUEzQyxDQUEzSztJQUFBLElBQXdPdUIsWUFBWSxHQUFHLGFBQWFqd0IsTUFBYixDQUFvQnNlLFVBQXBCLENBQXZQO0lBQUEsSUFBd1I0UixRQUFRLEdBQUdILFVBQVUsQ0FBQzN4QixLQUFYLENBQWlCOEUsTUFBakIsQ0FBd0IyRCxFQUEzVDtJQUFBLElBQStUMm9CLFdBQVcsR0FBRyxDQUFDLEdBQUcza0IsT0FBTyxXQUFYLEVBQXFCa2xCLFVBQVUsQ0FBQzN4QixLQUFYLENBQWlCOEUsTUFBakIsQ0FBd0JxVCxLQUE3QyxFQUFvRG1ZLGVBQXBELENBQTdVO0lBQUEsSUFBbVoyQixVQUFVLEdBQUcsR0FBR3J3QixNQUFILENBQVVpd0IsWUFBVixFQUF3QixVQUF4QixFQUFvQ2p3QixNQUFwQyxDQUEyQ2t3QixRQUEzQyxDQUFoYTtJQUFBLElBQXNkc0gsV0FBVyxHQUFHekgsVUFBVSxDQUFDM3hCLEtBQVgsQ0FBaUJxeEIsU0FBakIsQ0FBMkI1b0IsRUFBL2Y7SUFBQSxJQUFtZ0IwcEIsY0FBYyxHQUFHLENBQUMsR0FBRzFsQixPQUFPLFdBQVgsRUFBcUJrbEIsVUFBVSxDQUFDM3hCLEtBQVgsQ0FBaUJxeEIsU0FBakIsQ0FBMkJsWixLQUFoRCxFQUF1RG1ZLGVBQXZELENBQXBoQjtJQUFBLElBQTZsQjRCLGFBQWEsR0FBRyxXQUFXdHdCLE1BQVgsQ0FBa0Jrd0IsUUFBbEIsRUFBNEIsYUFBNUIsRUFBMkNsd0IsTUFBM0MsQ0FBa0R3M0IsV0FBbEQsQ0FBN21CO0lBQUEsSUFBNnFCQyxVQUFVLEdBQUcsY0FBY3ozQixNQUFkLENBQXFCdzNCLFdBQXJCLEVBQWtDLFNBQWxDLENBQTFyQjtJQUNBO0FBQ1I7QUFDQTs7SUFDUSxJQUFJeHNCLGNBQWMsR0FBRyxDQUNqQjtNQUNJdUwsS0FBSyxFQUFFNVEsU0FBUyxDQUFDdWlCLFdBQVYsQ0FBc0IsNEJBQXRCLENBRFg7TUFFSXJuQixJQUFJLEVBQUU7SUFGVixDQURpQixFQUtqQjtNQUNJMFYsS0FBSyxFQUFFNFosYUFEWDtNQUVJdHZCLElBQUksRUFBRW92QjtJQUZWLENBTGlCLEVBU2pCO01BQ0kxWixLQUFLLEVBQUVpWixXQURYO01BRUkzdUIsSUFBSSxFQUFFd3ZCO0lBRlYsQ0FUaUIsRUFhakI7TUFDSTlaLEtBQUssRUFBRWdhLGNBRFg7TUFFSTF2QixJQUFJLEVBQUV5dkI7SUFGVixDQWJpQixFQWlCakI7TUFDSS9aLEtBQUssRUFBRTVRLFNBQVMsQ0FBQ3dCLFVBQVYsQ0FBcUIsUUFBckIsQ0FEWDtNQUVJdEcsSUFBSSxFQUFFO0lBRlYsQ0FqQmlCLENBQXJCOztJQXNCQSxJQUFJc21CLFNBQVMsR0FBRyxTQUFaQSxTQUFZLENBQVUzVCxLQUFWLEVBQWlCO01BQzdCb1QsV0FBVyxDQUFDeG9CLEtBQVosR0FBb0JvVixLQUFLLENBQUMwSCxNQUFOLENBQWE1UyxVQUFqQzs7TUFDQSxJQUFJc2UsV0FBVyxDQUFDeG9CLEtBQVosR0FBb0IsSUFBeEIsRUFBOEI7UUFDMUJxQixRQUFRLENBQUNpSixlQUFULENBQXlCL0ksS0FBekIsQ0FBK0JnSixRQUEvQixHQUEwQyxNQUExQztNQUNILENBRkQsTUFHSztRQUNEekMsV0FBVyxDQUFDOUgsS0FBWixLQUNLcUIsUUFBUSxDQUFDaUosZUFBVCxDQUF5Qi9JLEtBQXpCLENBQStCZ0osUUFBL0IsR0FBMEMsUUFEL0M7TUFFSDtJQUNKLENBVEQ7O0lBVUEsQ0FBQyxHQUFHdEssS0FBSyxDQUFDZ0osS0FBVixFQUFpQixZQUFZO01BQUUsT0FBT25CLFdBQVcsQ0FBQzlILEtBQW5CO0lBQTJCLENBQTFELEVBQTRELFVBQVVxSyxPQUFWLEVBQW1CO01BQzNFLElBQUlBLE9BQUosRUFBYTtRQUNUaEosUUFBUSxDQUFDaUosZUFBVCxDQUF5Qi9JLEtBQXpCLENBQStCZ0osUUFBL0IsR0FBMEMsUUFBMUM7TUFDSCxDQUZELE1BSUlsSixRQUFRLENBQUNpSixlQUFULENBQXlCL0ksS0FBekIsQ0FBK0JnSixRQUEvQixHQUEwQyxNQUExQztJQUNQLENBTkQ7SUFPQSxDQUFDLEdBQUd0SyxLQUFLLENBQUNrQixTQUFWLEVBQXFCLFlBQVk7TUFDN0J5QixNQUFNLENBQUNxUSxnQkFBUCxDQUF3QixRQUF4QixFQUFrQzhWLFNBQWxDO01BQ0FubUIsTUFBTSxDQUFDcVEsZ0JBQVAsQ0FBd0IsUUFBeEIsRUFBa0MyVixZQUFsQzs7TUFDQSxJQUFJamlCLEtBQUssQ0FBQzZDLEtBQU4sQ0FBWUMsT0FBWixLQUF3QixFQUE1QixFQUFnQztRQUM1Qm9OLFNBQVMsQ0FBQ2hRLElBQVYsR0FBaUJGLEtBQUssQ0FBQzZDLEtBQU4sQ0FBWTNDLElBQTdCO1FBQ0FnUSxTQUFTLENBQUMxSSxVQUFWLEdBQXVCLElBQXZCO1FBQ0EwSSxTQUFTLENBQUNwTixPQUFWLEdBQW9COUMsS0FBSyxDQUFDNkMsS0FBTixDQUFZQyxPQUFoQztNQUNIOztNQUNEQyxVQUFVLENBQUMsWUFBWTtRQUNuQm1OLFNBQVMsQ0FBQzFJLFVBQVYsR0FBdUIsS0FBdkI7TUFDSCxDQUZTLEVBRVAsSUFGTyxDQUFWO0lBR0gsQ0FYRDtJQVlBLENBQUMsR0FBR2xPLEtBQUssQ0FBQ3FNLFdBQVYsRUFBdUIsWUFBWTtNQUMvQjFKLE1BQU0sQ0FBQ3lRLG1CQUFQLENBQTJCLFFBQTNCLEVBQXFDdVYsWUFBckM7TUFDQWhtQixNQUFNLENBQUN5USxtQkFBUCxDQUEyQixRQUEzQixFQUFxQzBWLFNBQXJDO0lBQ0gsQ0FIRDtJQUlBLE9BQU87TUFDSHlJLFdBQVcsRUFBRUEsV0FEVjtNQUVIRSxVQUFVLEVBQUVBLFVBRlQ7TUFHSDVCLFVBQVUsRUFBRUQsWUFBWSxXQUhyQjtNQUlIampCLGNBQWMsRUFBRUEsY0FKYjtNQUtIaWxCLFlBQVksRUFBRUEsWUFMWDtNQU1ISSxVQUFVLEVBQUVBLFVBTlQ7TUFPSEMsYUFBYSxFQUFFQSxhQVBaO01BUUhtSCxVQUFVLEVBQUVBLFVBUlQ7TUFTSHhpQixTQUFTLEVBQUVBLFNBVFI7TUFVSC9PLFdBQVcsRUFBRUEsV0FWVjtNQVdIUCxTQUFTLEVBQUVBLFNBWFI7TUFZSHVoQixZQUFZLEVBQUVBO0lBWlgsQ0FBUDtFQWNIO0FBcEl3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNmYTs7QUFDYixJQUFJOWtCLFNBQVMsR0FBSSxRQUFRLEtBQUtBLFNBQWQsSUFBNEIsVUFBVUMsT0FBVixFQUFtQkMsVUFBbkIsRUFBK0JDLENBQS9CLEVBQWtDQyxTQUFsQyxFQUE2QztFQUNyRixTQUFTQyxLQUFULENBQWVyRSxLQUFmLEVBQXNCO0lBQUUsT0FBT0EsS0FBSyxZQUFZbUUsQ0FBakIsR0FBcUJuRSxLQUFyQixHQUE2QixJQUFJbUUsQ0FBSixDQUFNLFVBQVVHLE9BQVYsRUFBbUI7TUFBRUEsT0FBTyxDQUFDdEUsS0FBRCxDQUFQO0lBQWlCLENBQTVDLENBQXBDO0VBQW9GOztFQUM1RyxPQUFPLEtBQUttRSxDQUFDLEtBQUtBLENBQUMsR0FBR0ksT0FBVCxDQUFOLEVBQXlCLFVBQVVELE9BQVYsRUFBbUJFLE1BQW5CLEVBQTJCO0lBQ3ZELFNBQVNDLFNBQVQsQ0FBbUJ6RSxLQUFuQixFQUEwQjtNQUFFLElBQUk7UUFBRTBFLElBQUksQ0FBQ04sU0FBUyxDQUFDTyxJQUFWLENBQWUzRSxLQUFmLENBQUQsQ0FBSjtNQUE4QixDQUFwQyxDQUFxQyxPQUFPNEUsQ0FBUCxFQUFVO1FBQUVKLE1BQU0sQ0FBQ0ksQ0FBRCxDQUFOO01BQVk7SUFBRTs7SUFDM0YsU0FBU0MsUUFBVCxDQUFrQjdFLEtBQWxCLEVBQXlCO01BQUUsSUFBSTtRQUFFMEUsSUFBSSxDQUFDTixTQUFTLENBQUMsT0FBRCxDQUFULENBQW1CcEUsS0FBbkIsQ0FBRCxDQUFKO01BQWtDLENBQXhDLENBQXlDLE9BQU80RSxDQUFQLEVBQVU7UUFBRUosTUFBTSxDQUFDSSxDQUFELENBQU47TUFBWTtJQUFFOztJQUM5RixTQUFTRixJQUFULENBQWNJLE1BQWQsRUFBc0I7TUFBRUEsTUFBTSxDQUFDQyxJQUFQLEdBQWNULE9BQU8sQ0FBQ1EsTUFBTSxDQUFDOUUsS0FBUixDQUFyQixHQUFzQ3FFLEtBQUssQ0FBQ1MsTUFBTSxDQUFDOUUsS0FBUixDQUFMLENBQW9Ca0MsSUFBcEIsQ0FBeUJ1QyxTQUF6QixFQUFvQ0ksUUFBcEMsQ0FBdEM7SUFBc0Y7O0lBQzlHSCxJQUFJLENBQUMsQ0FBQ04sU0FBUyxHQUFHQSxTQUFTLENBQUNZLEtBQVYsQ0FBZ0JmLE9BQWhCLEVBQXlCQyxVQUFVLElBQUksRUFBdkMsQ0FBYixFQUF5RFMsSUFBekQsRUFBRCxDQUFKO0VBQ0gsQ0FMTSxDQUFQO0FBTUgsQ0FSRDs7QUFTQSxJQUFJTSxXQUFXLEdBQUksUUFBUSxLQUFLQSxXQUFkLElBQThCLFVBQVVoQixPQUFWLEVBQW1CakIsSUFBbkIsRUFBeUI7RUFDckUsSUFBSWtDLENBQUMsR0FBRztJQUFFQyxLQUFLLEVBQUUsQ0FBVDtJQUFZQyxJQUFJLEVBQUUsZ0JBQVc7TUFBRSxJQUFJQyxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQU8sQ0FBWCxFQUFjLE1BQU1BLENBQUMsQ0FBQyxDQUFELENBQVA7TUFBWSxPQUFPQSxDQUFDLENBQUMsQ0FBRCxDQUFSO0lBQWMsQ0FBdkU7SUFBeUVDLElBQUksRUFBRSxFQUEvRTtJQUFtRkMsR0FBRyxFQUFFO0VBQXhGLENBQVI7RUFBQSxJQUFzR0MsQ0FBdEc7RUFBQSxJQUF5R0MsQ0FBekc7RUFBQSxJQUE0R0osQ0FBNUc7RUFBQSxJQUErR0ssQ0FBL0c7RUFDQSxPQUFPQSxDQUFDLEdBQUc7SUFBRWYsSUFBSSxFQUFFZ0IsSUFBSSxDQUFDLENBQUQsQ0FBWjtJQUFpQixTQUFTQSxJQUFJLENBQUMsQ0FBRCxDQUE5QjtJQUFtQyxVQUFVQSxJQUFJLENBQUMsQ0FBRDtFQUFqRCxDQUFKLEVBQTRELE9BQU9DLE1BQVAsS0FBa0IsVUFBbEIsS0FBaUNGLENBQUMsQ0FBQ0UsTUFBTSxDQUFDQyxRQUFSLENBQUQsR0FBcUIsWUFBVztJQUFFLE9BQU8sSUFBUDtFQUFjLENBQWpGLENBQTVELEVBQWdKSCxDQUF2Sjs7RUFDQSxTQUFTQyxJQUFULENBQWNHLENBQWQsRUFBaUI7SUFBRSxPQUFPLFVBQVVDLENBQVYsRUFBYTtNQUFFLE9BQU9yQixJQUFJLENBQUMsQ0FBQ29CLENBQUQsRUFBSUMsQ0FBSixDQUFELENBQVg7SUFBc0IsQ0FBNUM7RUFBK0M7O0VBQ2xFLFNBQVNyQixJQUFULENBQWNzQixFQUFkLEVBQWtCO0lBQ2QsSUFBSVIsQ0FBSixFQUFPLE1BQU0sSUFBSVMsU0FBSixDQUFjLGlDQUFkLENBQU47O0lBQ1AsT0FBT1AsQ0FBQyxLQUFLQSxDQUFDLEdBQUcsQ0FBSixFQUFPTSxFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVVkLENBQUMsR0FBRyxDQUFkLENBQVosQ0FBRCxFQUFnQ0EsQ0FBdkM7TUFBMEMsSUFBSTtRQUMxQyxJQUFJTSxDQUFDLEdBQUcsQ0FBSixFQUFPQyxDQUFDLEtBQUtKLENBQUMsR0FBR1csRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRLENBQVIsR0FBWVAsQ0FBQyxDQUFDLFFBQUQsQ0FBYixHQUEwQk8sRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRUCxDQUFDLENBQUMsT0FBRCxDQUFELEtBQWUsQ0FBQ0osQ0FBQyxHQUFHSSxDQUFDLENBQUMsUUFBRCxDQUFOLEtBQXFCSixDQUFDLENBQUNhLElBQUYsQ0FBT1QsQ0FBUCxDQUFyQixFQUFnQyxDQUEvQyxDQUFSLEdBQTREQSxDQUFDLENBQUNkLElBQWpHLENBQUQsSUFBMkcsQ0FBQyxDQUFDVSxDQUFDLEdBQUdBLENBQUMsQ0FBQ2EsSUFBRixDQUFPVCxDQUFQLEVBQVVPLEVBQUUsQ0FBQyxDQUFELENBQVosQ0FBTCxFQUF1QmpCLElBQTlJLEVBQW9KLE9BQU9NLENBQVA7UUFDcEosSUFBSUksQ0FBQyxHQUFHLENBQUosRUFBT0osQ0FBWCxFQUFjVyxFQUFFLEdBQUcsQ0FBQ0EsRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRLENBQVQsRUFBWVgsQ0FBQyxDQUFDckYsS0FBZCxDQUFMOztRQUNkLFFBQVFnRyxFQUFFLENBQUMsQ0FBRCxDQUFWO1VBQ0ksS0FBSyxDQUFMO1VBQVEsS0FBSyxDQUFMO1lBQVFYLENBQUMsR0FBR1csRUFBSjtZQUFROztVQUN4QixLQUFLLENBQUw7WUFBUWQsQ0FBQyxDQUFDQyxLQUFGO1lBQVcsT0FBTztjQUFFbkYsS0FBSyxFQUFFZ0csRUFBRSxDQUFDLENBQUQsQ0FBWDtjQUFnQmpCLElBQUksRUFBRTtZQUF0QixDQUFQOztVQUNuQixLQUFLLENBQUw7WUFBUUcsQ0FBQyxDQUFDQyxLQUFGO1lBQVdNLENBQUMsR0FBR08sRUFBRSxDQUFDLENBQUQsQ0FBTjtZQUFXQSxFQUFFLEdBQUcsQ0FBQyxDQUFELENBQUw7WUFBVTs7VUFDeEMsS0FBSyxDQUFMO1lBQVFBLEVBQUUsR0FBR2QsQ0FBQyxDQUFDSyxHQUFGLENBQU1ZLEdBQU4sRUFBTDs7WUFBa0JqQixDQUFDLENBQUNJLElBQUYsQ0FBT2EsR0FBUDs7WUFBYzs7VUFDeEM7WUFDSSxJQUFJLEVBQUVkLENBQUMsR0FBR0gsQ0FBQyxDQUFDSSxJQUFOLEVBQVlELENBQUMsR0FBR0EsQ0FBQyxDQUFDZSxNQUFGLEdBQVcsQ0FBWCxJQUFnQmYsQ0FBQyxDQUFDQSxDQUFDLENBQUNlLE1BQUYsR0FBVyxDQUFaLENBQW5DLE1BQXVESixFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVUsQ0FBVixJQUFlQSxFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVUsQ0FBaEYsQ0FBSixFQUF3RjtjQUFFZCxDQUFDLEdBQUcsQ0FBSjtjQUFPO1lBQVc7O1lBQzVHLElBQUljLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFWLEtBQWdCLENBQUNYLENBQUQsSUFBT1csRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRWCxDQUFDLENBQUMsQ0FBRCxDQUFULElBQWdCVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFYLENBQUMsQ0FBQyxDQUFELENBQWhELENBQUosRUFBMkQ7Y0FBRUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVhLEVBQUUsQ0FBQyxDQUFELENBQVo7Y0FBaUI7WUFBUTs7WUFDdEYsSUFBSUEsRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVLENBQVYsSUFBZWQsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQTlCLEVBQW1DO2NBQUVILENBQUMsQ0FBQ0MsS0FBRixHQUFVRSxDQUFDLENBQUMsQ0FBRCxDQUFYO2NBQWdCQSxDQUFDLEdBQUdXLEVBQUo7Y0FBUTtZQUFROztZQUNyRSxJQUFJWCxDQUFDLElBQUlILENBQUMsQ0FBQ0MsS0FBRixHQUFVRSxDQUFDLENBQUMsQ0FBRCxDQUFwQixFQUF5QjtjQUFFSCxDQUFDLENBQUNDLEtBQUYsR0FBVUUsQ0FBQyxDQUFDLENBQUQsQ0FBWDs7Y0FBZ0JILENBQUMsQ0FBQ0ssR0FBRixDQUFNYyxJQUFOLENBQVdMLEVBQVg7O2NBQWdCO1lBQVE7O1lBQ25FLElBQUlYLENBQUMsQ0FBQyxDQUFELENBQUwsRUFBVUgsQ0FBQyxDQUFDSyxHQUFGLENBQU1ZLEdBQU47O1lBQ1ZqQixDQUFDLENBQUNJLElBQUYsQ0FBT2EsR0FBUDs7WUFBYztRQVh0Qjs7UUFhQUgsRUFBRSxHQUFHaEQsSUFBSSxDQUFDa0QsSUFBTCxDQUFVakMsT0FBVixFQUFtQmlCLENBQW5CLENBQUw7TUFDSCxDQWpCeUMsQ0FpQnhDLE9BQU9OLENBQVAsRUFBVTtRQUFFb0IsRUFBRSxHQUFHLENBQUMsQ0FBRCxFQUFJcEIsQ0FBSixDQUFMO1FBQWFhLENBQUMsR0FBRyxDQUFKO01BQVEsQ0FqQk8sU0FpQkU7UUFBRUQsQ0FBQyxHQUFHSCxDQUFDLEdBQUcsQ0FBUjtNQUFZO0lBakIxRDs7SUFrQkEsSUFBSVcsRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRLENBQVosRUFBZSxNQUFNQSxFQUFFLENBQUMsQ0FBRCxDQUFSO0lBQWEsT0FBTztNQUFFaEcsS0FBSyxFQUFFZ0csRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRQSxFQUFFLENBQUMsQ0FBRCxDQUFWLEdBQWdCLEtBQUssQ0FBOUI7TUFBaUNqQixJQUFJLEVBQUU7SUFBdkMsQ0FBUDtFQUMvQjtBQUNKLENBMUJEOztBQTJCQSxJQUFJckYsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSUksT0FBTyxHQUFHWixlQUFlLENBQUNRLG1CQUFPLENBQUMsNENBQUQsQ0FBUixDQUE3QixFQUNBOzs7QUFDQSxJQUFJd1kscUJBQXFCLEdBQUdoWixlQUFlLENBQUNRLG1CQUFPLENBQUMsNEZBQUQsQ0FBUixDQUEzQzs7QUFDQSxJQUFJMHFCLHFCQUFxQixHQUFHbHJCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0RkFBRCxDQUFSLENBQTNDOztBQUNBLElBQUkycUIsZUFBZSxHQUFHbnJCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxrR0FBRCxDQUFSLENBQXJDOztBQUNBLElBQUl1RyxrQkFBa0IsR0FBRy9HLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxzRkFBRCxDQUFSLENBQXhDOztBQUNBLElBQUlteUIsa0JBQWtCLEdBQUczeUIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHdHQUFELENBQVIsQ0FBeEMsRUFDQTs7O0FBQ0EsSUFBSTJ2QixZQUFZLEdBQUdud0IsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDZFQUFELENBQVIsQ0FBbEM7O0FBQ0EsSUFBSXVNLE9BQU8sR0FBRy9NLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxtRUFBRCxDQUFSLENBQTdCOztBQUNBLElBQUk4TSxPQUFPLEdBQUc5TSxtQkFBTyxDQUFDLG1FQUFELENBQXJCOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLFlBRG1DO0VBRXpDNkQsVUFBVSxFQUFFO0lBQ1I0VyxHQUFHLEVBQUU1SyxxQkFBcUIsV0FEbEI7SUFFUnlTLFVBQVUsRUFBRVAscUJBQXFCLFdBRnpCO0lBR1JNLFNBQVMsRUFBRUwsZUFBZSxXQUhsQjtJQUlScmUsS0FBSyxFQUFFL0Ysa0JBQWtCLFdBSmpCO0lBS1I2ckIsWUFBWSxFQUFFRCxrQkFBa0I7RUFMeEIsQ0FGNkI7RUFTekMxckIsS0FBSyxFQUFFO0lBQ0hpVixRQUFRLEVBQUU7TUFDTi9VLElBQUksRUFBRWhILE1BREE7TUFFTmlILFFBQVEsRUFBRTtJQUZKLENBRFA7SUFLSDZxQixVQUFVLEVBQUU7TUFDUjlxQixJQUFJLEVBQUVoSCxNQURFO01BRVJpSCxRQUFRLEVBQUU7SUFGRixDQUxUO0lBU0h3cUIsTUFBTSxFQUFFO01BQ0p6cUIsSUFBSSxFQUFFcVIsS0FERjtNQUVKcFIsUUFBUSxFQUFFO0lBRk4sQ0FUTDtJQWFIMEMsS0FBSyxFQUFFO01BQ0gzQyxJQUFJLEVBQUVoSCxNQURIO01BRUhpSCxRQUFRLEVBQUU7SUFGUDtFQWJKLENBVGtDO0VBMkJ6Q3BHLEtBQUssRUFBRSxlQUFVaUcsS0FBVixFQUFpQjtJQUNwQixJQUFJd0ssS0FBSyxHQUFHLElBQVo7O0lBQ0EsSUFBSTVKLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7O0lBQ0EsSUFBSTVHLEVBQUUsR0FBRyxDQUFDLEdBQUdYLEtBQUssQ0FBQzBNLE1BQVYsRUFBa0JoRyxLQUFsQixDQUFUO0lBQUEsSUFBbUNpVixRQUFRLEdBQUdoYixFQUFFLENBQUNnYixRQUFqRDtJQUFBLElBQTJEK1YsVUFBVSxHQUFHL3dCLEVBQUUsQ0FBQyt3QixVQUEzRTs7SUFDQSxJQUFJelIsVUFBVSxHQUFHdEUsUUFBUSxDQUFDNWIsS0FBVCxDQUFleUksRUFBaEM7SUFBQSxJQUFvQ3NwQixhQUFhLEdBQUduVyxRQUFRLENBQUM1YixLQUFULENBQWVtWSxLQUFuRTtJQUFBLElBQTBFMFosWUFBWSxHQUFHLGFBQWFqd0IsTUFBYixDQUFvQnNlLFVBQXBCLENBQXpGO0lBQUEsSUFBMEhrUixXQUFXLEdBQUdPLFVBQVUsQ0FBQzN4QixLQUFYLENBQWlCOEUsTUFBakIsQ0FBd0JxVCxLQUFoSztJQUFBLElBQXVLMlosUUFBUSxHQUFHSCxVQUFVLENBQUMzeEIsS0FBWCxDQUFpQjhFLE1BQWpCLENBQXdCMkQsRUFBMU07SUFBQSxJQUE4TXdwQixVQUFVLEdBQUcsR0FBR3J3QixNQUFILENBQVVpd0IsWUFBVixFQUF3QixVQUF4QixFQUFvQ2p3QixNQUFwQyxDQUEyQ2t3QixRQUEzQyxDQUEzTjtJQUFBLElBQWlSSyxjQUFjLEdBQUdSLFVBQVUsQ0FBQzN4QixLQUFYLENBQWlCcXhCLFNBQWpCLENBQTJCbFosS0FBN1Q7SUFBQSxJQUFvVWloQixXQUFXLEdBQUd6SCxVQUFVLENBQUMzeEIsS0FBWCxDQUFpQnF4QixTQUFqQixDQUEyQjVvQixFQUE3VztJQUFBLElBQWlYeXBCLGFBQWEsR0FBRyxXQUFXdHdCLE1BQVgsQ0FBa0Jrd0IsUUFBbEIsRUFBNEIsYUFBNUIsRUFBMkNsd0IsTUFBM0MsQ0FBa0R3M0IsV0FBbEQsQ0FBalk7SUFBQSxJQUFpY0MsVUFBVSxHQUFHLGNBQWN6M0IsTUFBZCxDQUFxQnczQixXQUFyQixFQUFrQyxTQUFsQyxDQUE5YztJQUNBLElBQUlFLFdBQVcsR0FBRyxDQUFDLEdBQUdyNUIsS0FBSyxDQUFDZ0ksUUFBVixFQUFvQixFQUFwQixDQUFsQjtJQUNBLElBQUl3TyxPQUFPLEdBQUcsQ0FBQyxHQUFHeFcsS0FBSyxDQUFDZ0IsR0FBVixFQUFlLEtBQWYsQ0FBZDtJQUNBLElBQUk0VixTQUFTLEdBQUcsQ0FBQyxHQUFHNVcsS0FBSyxDQUFDZ0ksUUFBVixFQUFvQjtNQUNoQ2tHLFVBQVUsRUFBRSxLQURvQjtNQUVoQzFFLE9BQU8sRUFBRSxFQUZ1QjtNQUdoQzVDLElBQUksRUFBRTtJQUgwQixDQUFwQixDQUFoQjtJQUtBO0FBQ1I7QUFDQTs7SUFDUSxJQUFJK0YsY0FBYyxHQUFHLENBQ2pCO01BQ0l1TCxLQUFLLEVBQUU1USxTQUFTLENBQUN1aUIsV0FBVixDQUFzQiw0QkFBdEIsQ0FEWDtNQUVJcm5CLElBQUksRUFBRTtJQUZWLENBRGlCLEVBS2pCO01BQ0kwVixLQUFLLEVBQUUsQ0FBQyxHQUFHMUwsT0FBTyxXQUFYLEVBQXFCc2xCLGFBQXJCLEVBQW9DLElBQXBDLENBRFg7TUFFSXR2QixJQUFJLEVBQUVvdkI7SUFGVixDQUxpQixFQVNqQjtNQUNJMVosS0FBSyxFQUFFLENBQUMsR0FBRzFMLE9BQU8sV0FBWCxFQUFxQjJrQixXQUFyQixFQUFrQyxJQUFsQyxDQURYO01BRUkzdUIsSUFBSSxFQUFFd3ZCO0lBRlYsQ0FUaUIsRUFhakI7TUFDSTlaLEtBQUssRUFBRSxDQUFDLEdBQUcxTCxPQUFPLFdBQVgsRUFBcUIwbEIsY0FBckIsRUFBcUMsSUFBckMsQ0FEWDtNQUVJMXZCLElBQUksRUFBRXl2QjtJQUZWLENBYmlCLEVBaUJqQjtNQUNJL1osS0FBSyxFQUFFNVEsU0FBUyxDQUFDd0IsVUFBVixDQUFxQixjQUFyQixDQURYO01BRUl0RyxJQUFJLEVBQUU7SUFGVixDQWpCaUIsQ0FBckI7SUFzQkEsQ0FBQyxHQUFHeEMsS0FBSyxDQUFDa0IsU0FBVixFQUFxQixZQUFZO01BQUUsT0FBTzZDLFNBQVMsQ0FBQ21OLEtBQUQsRUFBUSxLQUFLLENBQWIsRUFBZ0IsS0FBSyxDQUFyQixFQUF3QixZQUFZO1FBQ25GLE9BQU9sTSxXQUFXLENBQUMsSUFBRCxFQUFPLFVBQVVyRSxFQUFWLEVBQWM7VUFDbkNOLE9BQU8sV0FBUCxDQUFnQitDLEdBQWhCLENBQW9CLGNBQWN6QixNQUFkLENBQXFCdzNCLFdBQXJCLEVBQWtDLGlCQUFsQyxDQUFwQixFQUEwRWwzQixJQUExRSxDQUErRSxVQUFVQyxHQUFWLEVBQWU7WUFDMUYsSUFBSXlMLFFBQVEsR0FBR3pMLEdBQUcsQ0FBQ0ssSUFBbkI7WUFDQTNDLE1BQU0sQ0FBQ29RLE1BQVAsQ0FBY3FwQixXQUFkLEVBQTJCMXJCLFFBQVEsQ0FBQ3BMLElBQXBDO1lBQ0FpVSxPQUFPLENBQUN6VyxLQUFSLEdBQWdCNE4sUUFBUSxDQUFDcEwsSUFBVCxDQUFjQSxJQUFkLENBQW1CNEQsTUFBbkIsR0FBNEIsS0FBNUIsR0FBb0MsSUFBcEQ7VUFDSCxDQUpEOztVQUtBLElBQUlPLEtBQUssQ0FBQzZDLEtBQU4sQ0FBWUMsT0FBWixLQUF3QixFQUE1QixFQUFnQztZQUM1Qm9OLFNBQVMsQ0FBQ2hRLElBQVYsR0FBaUJGLEtBQUssQ0FBQzZDLEtBQU4sQ0FBWTNDLElBQTdCO1lBQ0FnUSxTQUFTLENBQUMxSSxVQUFWLEdBQXVCLElBQXZCO1lBQ0EwSSxTQUFTLENBQUNwTixPQUFWLEdBQW9COUMsS0FBSyxDQUFDNkMsS0FBTixDQUFZQyxPQUFoQztVQUNIOztVQUNEQyxVQUFVLENBQUMsWUFBWTtZQUNuQm1OLFNBQVMsQ0FBQzFJLFVBQVYsR0FBdUIsS0FBdkI7VUFDSCxDQUZTLEVBRVAsSUFGTyxDQUFWO1VBR0EsT0FBTyxDQUFDO1VBQUU7VUFBSCxDQUFQO1FBQ0gsQ0FmaUIsQ0FBbEI7TUFnQkgsQ0FqQmtELENBQWhCO0lBaUI5QixDQWpCTDs7SUFrQkEsU0FBU3VrQixhQUFULENBQXVCOVgsV0FBdkIsRUFBb0M7TUFDaEN0YSxPQUFPLFdBQVAsQ0FDSytDLEdBREwsQ0FDUyxjQUFjekIsTUFBZCxDQUFxQnczQixXQUFyQixFQUFrQyxnQkFBbEMsSUFBc0R4ZSxXQUQvRCxFQUVLMVksSUFGTCxDQUVVLFVBQVVDLEdBQVYsRUFBZTtRQUNyQixJQUFJeUwsUUFBUSxHQUFHekwsR0FBRyxDQUFDSyxJQUFuQjtRQUNBM0MsTUFBTSxDQUFDb1EsTUFBUCxDQUFjcXBCLFdBQWQsRUFBMkIxckIsUUFBUSxDQUFDcEwsSUFBcEM7UUFDQWlVLE9BQU8sQ0FBQ3pXLEtBQVIsR0FBZ0I0TixRQUFRLENBQUNwTCxJQUFULEdBQWdCLEtBQWhCLEdBQXdCLElBQXhDO01BQ0gsQ0FORDtJQU9IOztJQUNELFNBQVNpd0IsY0FBVCxDQUF3QmhvQixJQUF4QixFQUE4QjtNQUMxQjdILE1BQU0sQ0FBQzhILFFBQVAsQ0FBZ0IvSCxJQUFoQixHQUF1QjhILElBQXZCO0lBQ0gsQ0FsRW1CLENBbUVwQjs7O0lBQ0EsQ0FBQyxHQUFHeEssS0FBSyxDQUFDa3FCLE9BQVYsRUFBbUIsY0FBbkIsRUFBbUNpUCxXQUFuQztJQUNBLE9BQU87TUFDSHhzQixjQUFjLEVBQUVBLGNBRGI7TUFFSHNsQixhQUFhLEVBQUVBLGFBRlo7TUFHSG1ILFVBQVUsRUFBRUEsVUFIVDtNQUlIdkosVUFBVSxFQUFFRCxZQUFZLFdBSnJCO01BS0h5SixXQUFXLEVBQUVBLFdBTFY7TUFNSHpzQixnQkFBZ0IsRUFBRUosT0FBTyxXQU50QjtNQU9IaW1CLGFBQWEsRUFBRUEsYUFQWjtNQVFIMEcsV0FBVyxFQUFFQSxXQVJWO01BU0h2aUIsU0FBUyxFQUFFQSxTQVRSO01BVUg0YixjQUFjLEVBQUVBLGNBVmI7TUFXSGxyQixTQUFTLEVBQUVBO0lBWFIsQ0FBUDtFQWFILENBN0d3QztFQThHekNvckIsT0FBTyxFQUFFO0lBQUVFLHlCQUF5QixFQUFFN2xCLE9BQU8sQ0FBQzZsQjtFQUFyQztBQTlHZ0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDdERhOztBQUNiaHpCLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkIsRUFDQTs7O0FBQ0EsSUFBSXFtQixPQUFPLEdBQUdybUIsbUJBQU8sQ0FBQyw2R0FBRCxDQUFyQixFQUNBOzs7QUFDQSxJQUFJOE0sT0FBTyxHQUFHOU0sbUJBQU8sQ0FBQyxtRUFBRCxDQUFyQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q3FJLElBQUksRUFBRSxhQURtQztFQUV6QzZELFVBQVUsRUFBRTtJQUFFd2tCLFlBQVksRUFBRTNLLE9BQU8sQ0FBQzJLO0VBQXhCLENBRjZCO0VBR3pDdnFCLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQ0ZxRSxJQUFJLEVBQUVoSCxNQURKO01BRUZpSCxRQUFRLEVBQUU7SUFGUjtFQURILENBSGtDO0VBU3pDcEcsS0FBSyxFQUFFLGVBQVVpRyxLQUFWLEVBQWlCO0lBQ3BCLElBQUlZLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJaEYsSUFBSSxHQUFHLENBQUMsR0FBR3ZDLEtBQUssQ0FBQzBNLE1BQVYsRUFBa0JoRyxLQUFsQixFQUF5Qm5FLElBQXBDLENBRm9CLENBR3BCOztJQUNBLElBQUkrMkIsTUFBTSxHQUFHLENBQUMsR0FBR3Q1QixLQUFLLENBQUMwRCxNQUFWLEVBQWtCLE9BQWxCLENBQWI7SUFDQSxJQUFJcXZCLGNBQWMsR0FBRyxNQUFyQjtJQUNBLElBQUl3RyxXQUFXLEdBQUdoM0IsSUFBSSxDQUFDeEMsS0FBdkI7SUFDQSxPQUFPO01BQ0h3NUIsV0FBVyxFQUFFQSxXQURWO01BRUh4RyxjQUFjLEVBQUVBLGNBRmI7TUFHSHRvQixRQUFRLEVBQUVBLFFBSFA7TUFJSCt1QixXQUFXLEVBQUV6c0IsT0FBTyxDQUFDeXNCLFdBSmxCO01BS0hGLE1BQU0sRUFBRUEsTUFMTDtNQU1IaHlCLFNBQVMsRUFBRUE7SUFOUixDQUFQO0VBUUg7QUF4QndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ1JhOztBQUNiMUgsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQixFQUNBOzs7QUFDQSxJQUFJcW1CLE9BQU8sR0FBR3JtQixtQkFBTyxDQUFDLDZHQUFELENBQXJCLEVBQ0E7OztBQUNBLElBQUk4TSxPQUFPLEdBQUc5TSxtQkFBTyxDQUFDLG1FQUFELENBQXJCOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLGFBRG1DO0VBRXpDNkQsVUFBVSxFQUFFO0lBQUV3a0IsWUFBWSxFQUFFM0ssT0FBTyxDQUFDMks7RUFBeEIsQ0FGNkI7RUFHekN2cUIsS0FBSyxFQUFFO0lBQ0huRSxJQUFJLEVBQUU7TUFDRnFFLElBQUksRUFBRWhILE1BREo7TUFFRmlILFFBQVEsRUFBRTtJQUZSO0VBREgsQ0FIa0M7RUFTekNwRyxLQUFLLEVBQUUsZUFBVWlHLEtBQVYsRUFBaUI7SUFDcEIsSUFBSVksU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLElBQUloRixJQUFJLEdBQUcsQ0FBQyxHQUFHdkMsS0FBSyxDQUFDME0sTUFBVixFQUFrQmhHLEtBQWxCLEVBQXlCbkUsSUFBcEMsQ0FGb0IsQ0FHcEI7SUFDQTs7SUFDQSxJQUFJKzJCLE1BQU0sR0FBRyxDQUFDLEdBQUd0NUIsS0FBSyxDQUFDMEQsTUFBVixFQUFrQixPQUFsQixDQUFiO0lBQ0EsSUFBSXF2QixjQUFjLEdBQUcsTUFBckI7SUFDQSxJQUFJMEcsV0FBVyxHQUFHbDNCLElBQUksQ0FBQ3hDLEtBQXZCO0lBQ0EsT0FBTztNQUNIMDVCLFdBQVcsRUFBRUEsV0FEVjtNQUVIMUcsY0FBYyxFQUFFQSxjQUZiO01BR0h0b0IsUUFBUSxFQUFFQSxRQUhQO01BSUgrdUIsV0FBVyxFQUFFenNCLE9BQU8sQ0FBQ3lzQixXQUpsQjtNQUtIO01BQ0FGLE1BQU0sRUFBRUEsTUFOTDtNQU9IaHlCLFNBQVMsRUFBRUE7SUFQUixDQUFQO0VBU0g7QUExQndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ1JhOztBQUNiLElBQUk3SCxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQixFQUNBOzs7QUFDQSxJQUFJeTVCLG1CQUFtQixHQUFHajZCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQywyRkFBRCxDQUFSLENBQXpDOztBQUNBLElBQUkwNUIsZUFBZSxHQUFHbDZCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxvSEFBRCxDQUFSLENBQXJDOztBQUNBLElBQUltakIsVUFBVSxHQUFHM2pCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxzRkFBRCxDQUFSLENBQWhDOztBQUNBLElBQUkycUIsZUFBZSxHQUFHbnJCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxrR0FBRCxDQUFSLENBQXJDOztBQUNBLElBQUl1RyxrQkFBa0IsR0FBRy9HLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxzRkFBRCxDQUFSLENBQXhDLEVBQ0E7OztBQUNBLElBQUkydkIsWUFBWSxHQUFHbndCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw2RUFBRCxDQUFSLENBQWxDOztBQUNBLElBQUl1TSxPQUFPLEdBQUcvTSxlQUFlLENBQUNRLG1CQUFPLENBQUMsbUVBQUQsQ0FBUixDQUE3Qjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q3FJLElBQUksRUFBRSxjQURtQztFQUV6QzZELFVBQVUsRUFBRTtJQUNSbXRCLGFBQWEsRUFBRUYsbUJBQW1CLFdBRDFCO0lBRVJHLFNBQVMsRUFBRUYsZUFBZSxXQUZsQjtJQUdSdFcsR0FBRyxFQUFFRCxVQUFVLFdBSFA7SUFJUjZILFNBQVMsRUFBRUwsZUFBZSxXQUpsQjtJQUtScmUsS0FBSyxFQUFFL0Ysa0JBQWtCO0VBTGpCLENBRjZCO0VBU3pDRSxLQUFLLEVBQUU7SUFDSGlWLFFBQVEsRUFBRTtNQUNOL1UsSUFBSSxFQUFFaEgsTUFEQTtNQUVOaUgsUUFBUSxFQUFFO0lBRkosQ0FEUDtJQUtIaEMsTUFBTSxFQUFFO01BQ0orQixJQUFJLEVBQUVoSCxNQURGO01BRUppSCxRQUFRLEVBQUU7SUFGTixDQUxMO0lBU0hraEIsS0FBSyxFQUFFO01BQ0huaEIsSUFBSSxFQUFFaEgsTUFESDtNQUVIaUgsUUFBUSxFQUFFO0lBRlAsQ0FUSjtJQWFIMEMsS0FBSyxFQUFFO01BQ0gzQyxJQUFJLEVBQUVoSCxNQURIO01BRUhpSCxRQUFRLEVBQUU7SUFGUCxDQWJKO0lBaUJIeXFCLE9BQU8sRUFBRTtNQUNMMXFCLElBQUksRUFBRWhILE1BREQ7TUFFTGlILFFBQVEsRUFBRTtJQUZMO0VBakJOLENBVGtDO0VBK0J6Q3BHLEtBQUssRUFBRSxlQUFVaUcsS0FBVixFQUFpQjtJQUNwQixJQUFJL0YsRUFBSjs7SUFDQSxJQUFJMkcsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLElBQUlncUIsV0FBVyxHQUFHLDhHQUFsQjtJQUNBLElBQUlqSixTQUFTLEdBQUcsQ0FBQyxHQUFHdG9CLEtBQUssQ0FBQ2dCLEdBQVYsRUFBZSxDQUFmLENBQWhCO0lBQ0EsSUFBSTZHLFdBQVcsR0FBRyxDQUFDLEdBQUc3SCxLQUFLLENBQUNnQixHQUFWLEVBQWUsS0FBZixDQUFsQjtJQUNBLElBQUl1bkIsV0FBVyxHQUFHLENBQUMsR0FBR3ZvQixLQUFLLENBQUNnQixHQUFWLEVBQWUsQ0FBZixDQUFsQjs7SUFDQSxJQUFJb0csRUFBRSxHQUFHLENBQUMsR0FBR3BILEtBQUssQ0FBQzBNLE1BQVYsRUFBa0JoRyxLQUFsQixDQUFUO0lBQUEsSUFBbUM3QixNQUFNLEdBQUd1QyxFQUFFLENBQUN2QyxNQUEvQztJQUFBLElBQXVEOFcsUUFBUSxHQUFHdlUsRUFBRSxDQUFDdVUsUUFBckU7O0lBQ0EsSUFBSW1lLGFBQWEsR0FBR2oxQixNQUFNLENBQUM5RSxLQUFQLENBQWF1eUIsVUFBYixDQUF3Qm5zQixNQUF4QixHQUFpQyxDQUFqQyxHQUFxQyxJQUFyQyxHQUE0QyxLQUFoRTtJQUNBLElBQUk0ekIsV0FBVyxHQUFHbDFCLE1BQU0sQ0FBQzlFLEtBQVAsQ0FBYThFLE1BQS9CO0lBQ0EsSUFBSW9iLFVBQVUsR0FBR3RFLFFBQVEsQ0FBQzViLEtBQVQsQ0FBZXlJLEVBQWhDO0lBQUEsSUFBb0NzcEIsYUFBYSxHQUFHblcsUUFBUSxDQUFDNWIsS0FBVCxDQUFlbVksS0FBbkU7SUFBQSxJQUEwRTBaLFlBQVksR0FBRyxhQUFhandCLE1BQWIsQ0FBb0JzZSxVQUFwQixDQUF6RjtJQUFBLElBQTBIa1IsV0FBVyxHQUFHLENBQUMsR0FBRzNrQixPQUFPLFdBQVgsRUFBcUJ1dEIsV0FBVyxDQUFDN2hCLEtBQVosQ0FBa0IsQ0FBbEIsRUFBcUJvRSxTQUExQyxFQUFxRCxJQUFyRCxDQUF4STtJQUFBLElBQW9NMFYsVUFBVSxHQUFHLEdBQUdyd0IsTUFBSCxDQUFVaXdCLFlBQVYsRUFBd0IsVUFBeEIsRUFBb0Nqd0IsTUFBcEMsQ0FBMkNrRCxNQUFNLENBQUM5RSxLQUFQLENBQWF5SSxFQUF4RCxDQUFqTjtJQUFBLElBQThRNm5CLGVBQWUsR0FBRyxDQUFDMXZCLEVBQUUsR0FBR2diLFFBQVEsQ0FBQzViLEtBQVQsQ0FBZTJwQixvQkFBckIsTUFBK0MsSUFBL0MsSUFBdUQvb0IsRUFBRSxLQUFLLEtBQUssQ0FBbkUsR0FBdUUsS0FBSyxDQUE1RSxHQUFnRkEsRUFBRSxDQUFDMkgsUUFBblg7O0lBQ0EsSUFBSXFnQixZQUFZLEdBQUcsU0FBZkEsWUFBZSxHQUFZO01BQzNCTCxTQUFTLENBQUN2b0IsS0FBVixHQUFrQjRDLE1BQU0sQ0FBQ2ltQixPQUF6QjtJQUNILENBRkQ7O0lBR0EsSUFBSWhTLFNBQVMsR0FBRyxDQUFDLEdBQUc1VyxLQUFLLENBQUNnSSxRQUFWLEVBQW9CO01BQ2hDa0csVUFBVSxFQUFFLEtBRG9CO01BRWhDMUUsT0FBTyxFQUFFLEVBRnVCO01BR2hDNUMsSUFBSSxFQUFFO0lBSDBCLENBQXBCLENBQWhCO0lBS0E7QUFDUjtBQUNBOztJQUNRLElBQUkrRixjQUFjLEdBQUcsQ0FDakI7TUFDSXVMLEtBQUssRUFBRTVRLFNBQVMsQ0FBQ3VpQixXQUFWLENBQXNCLDRCQUF0QixDQURYO01BRUlybkIsSUFBSSxFQUFFO0lBRlYsQ0FEaUIsRUFLakI7TUFDSTBWLEtBQUssRUFBRSxDQUFDLEdBQUcxTCxPQUFPLFdBQVgsRUFBcUJzbEIsYUFBckIsRUFBb0N6QixlQUFwQyxDQURYO01BRUk3dEIsSUFBSSxFQUFFb3ZCO0lBRlYsQ0FMaUIsRUFTakI7TUFDSTFaLEtBQUssRUFBRWlaLFdBRFg7TUFFSTN1QixJQUFJLEVBQUU7SUFGVixDQVRpQixDQUFyQjtJQWNBLElBQUlxbUIsWUFBWSxHQUFHLENBQUMsR0FBRzdvQixLQUFLLENBQUN3RCxRQUFWLEVBQW9CLFlBQVk7TUFDL0MsT0FBTzhrQixTQUFTLENBQUN2b0IsS0FBVixLQUFvQixDQUEzQjtJQUNILENBRmtCLENBQW5CO0lBR0EsQ0FBQyxHQUFHQyxLQUFLLENBQUNrQixTQUFWLEVBQXFCLFlBQVk7TUFDN0J5QixNQUFNLENBQUNxUSxnQkFBUCxDQUF3QixRQUF4QixFQUFrQzJWLFlBQWxDO01BQ0FobUIsTUFBTSxDQUFDcVEsZ0JBQVAsQ0FBd0IsUUFBeEIsRUFBa0M4VixTQUFsQzs7TUFDQSxJQUFJcGlCLEtBQUssQ0FBQzZDLEtBQU4sQ0FBWUMsT0FBWixLQUF3QixFQUE1QixFQUFnQztRQUM1Qm9OLFNBQVMsQ0FBQ2hRLElBQVYsR0FBaUJGLEtBQUssQ0FBQzZDLEtBQU4sQ0FBWTNDLElBQTdCO1FBQ0FnUSxTQUFTLENBQUMxSSxVQUFWLEdBQXVCLElBQXZCO1FBQ0EwSSxTQUFTLENBQUNwTixPQUFWLEdBQW9COUMsS0FBSyxDQUFDNkMsS0FBTixDQUFZQyxPQUFoQztNQUNIOztNQUNEQyxVQUFVLENBQUMsWUFBWTtRQUNuQm1OLFNBQVMsQ0FBQzFJLFVBQVYsR0FBdUIsS0FBdkI7TUFDSCxDQUZTLEVBRVAsSUFGTyxDQUFWO0lBR0gsQ0FYRDtJQVlBLENBQUMsR0FBR2xPLEtBQUssQ0FBQ3FNLFdBQVYsRUFBdUIsWUFBWTtNQUMvQjFKLE1BQU0sQ0FBQ3lRLG1CQUFQLENBQTJCLFFBQTNCLEVBQXFDdVYsWUFBckM7TUFDQWhtQixNQUFNLENBQUN5USxtQkFBUCxDQUEyQixRQUEzQixFQUFxQzBWLFNBQXJDO0lBQ0gsQ0FIRDs7SUFJQSxJQUFJQSxTQUFTLEdBQUcsU0FBWkEsU0FBWSxDQUFVM1QsS0FBVixFQUFpQjtNQUM3Qm9ULFdBQVcsQ0FBQ3hvQixLQUFaLEdBQW9Cb1YsS0FBSyxDQUFDMEgsTUFBTixDQUFhNVMsVUFBakM7O01BQ0EsSUFBSXNlLFdBQVcsQ0FBQ3hvQixLQUFaLEdBQW9CLElBQXhCLEVBQThCO1FBQzFCcUIsUUFBUSxDQUFDaUosZUFBVCxDQUF5Qi9JLEtBQXpCLENBQStCZ0osUUFBL0IsR0FBMEMsTUFBMUM7TUFDSCxDQUZELE1BR0s7UUFDRHpDLFdBQVcsQ0FBQzlILEtBQVosS0FDS3FCLFFBQVEsQ0FBQ2lKLGVBQVQsQ0FBeUIvSSxLQUF6QixDQUErQmdKLFFBQS9CLEdBQTBDLFFBRC9DO01BRUg7SUFDSixDQVREOztJQVVBLENBQUMsR0FBR3RLLEtBQUssQ0FBQ2dKLEtBQVYsRUFBaUIsWUFBWTtNQUFFLE9BQU9uQixXQUFXLENBQUM5SCxLQUFuQjtJQUEyQixDQUExRCxFQUE0RCxVQUFVcUssT0FBVixFQUFtQjtNQUMzRSxJQUFJQSxPQUFKLEVBQWE7UUFDVGhKLFFBQVEsQ0FBQ2lKLGVBQVQsQ0FBeUIvSSxLQUF6QixDQUErQmdKLFFBQS9CLEdBQTBDLFFBQTFDO01BQ0gsQ0FGRCxNQUlJbEosUUFBUSxDQUFDaUosZUFBVCxDQUF5Qi9JLEtBQXpCLENBQStCZ0osUUFBL0IsR0FBMEMsTUFBMUM7SUFDUCxDQU5EO0lBT0EsT0FBTztNQUNIc25CLFlBQVksRUFBRUEsWUFEWDtNQUVIVCxXQUFXLEVBQUVBLFdBRlY7TUFHSGEsVUFBVSxFQUFFQSxVQUhUO01BSUhULFdBQVcsRUFBRUEsV0FKVjtNQUtIMUIsVUFBVSxFQUFFRCxZQUFZLFdBTHJCO01BTUhrSyxhQUFhLEVBQUVBLGFBTlo7TUFPSEMsV0FBVyxFQUFFQSxXQVBWO01BUUhwdEIsY0FBYyxFQUFFQSxjQVJiO01BU0hpSyxTQUFTLEVBQUVBLFNBVFI7TUFVSC9PLFdBQVcsRUFBRUEsV0FWVjtNQVdIZ2hCLFlBQVksRUFBRUEsWUFYWDtNQVlIdmhCLFNBQVMsRUFBRUE7SUFaUixDQUFQO0VBY0g7QUFySHdDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ2hCYTs7QUFDYixJQUFJN0gsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXNtQixlQUFlLEdBQUc5bUIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGdGQUFELENBQVIsQ0FBckM7O0FBQ0EsSUFBSXFtQixPQUFPLEdBQUdybUIsbUJBQU8sQ0FBQyx3RkFBRCxDQUFyQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q3FJLElBQUksRUFBRSxpQkFEbUM7RUFFekM2RCxVQUFVLEVBQUU7SUFDUndhLFNBQVMsRUFBRVYsZUFBZSxXQURsQjtJQUVSeVQsZ0JBQWdCLEVBQUUxVCxPQUFPLENBQUMwVCxnQkFGbEI7SUFHUi9JLFlBQVksRUFBRTNLLE9BQU8sQ0FBQzJLLFlBSGQ7SUFJUkYsU0FBUyxFQUFFekssT0FBTyxDQUFDeUssU0FKWDtJQUtSa0osVUFBVSxFQUFFM1QsT0FBTyxDQUFDMlQ7RUFMWixDQUY2QjtFQVN6Q3Z6QixLQUFLLEVBQUU7SUFDSG5FLElBQUksRUFBRTtNQUNGcUUsSUFBSSxFQUFFLENBQUNoSCxNQUFELEVBQVN1USxNQUFULENBREo7TUFFRnRKLFFBQVEsRUFBRTtJQUZSLENBREg7SUFLSHF6QixXQUFXLEVBQUU7TUFDVHR6QixJQUFJLEVBQUV1SixNQURHO01BRVR0SixRQUFRLEVBQUU7SUFGRCxDQUxWO0lBU0hzekIsT0FBTyxFQUFFO01BQ0x2ekIsSUFBSSxFQUFFdUosTUFERDtNQUVMdEosUUFBUSxFQUFFO0lBRkwsQ0FUTjtJQWFId1IsS0FBSyxFQUFFO01BQ0h6UixJQUFJLEVBQUV1SixNQURIO01BRUh0SixRQUFRLEVBQUUsS0FGUDtNQUdILFdBQVM7SUFITixDQWJKO0lBa0JIa2hCLEtBQUssRUFBRTtNQUNIbmhCLElBQUksRUFBRWhILE1BREg7TUFFSGlILFFBQVEsRUFBRTtJQUZQLENBbEJKO0lBc0JIdVIsU0FBUyxFQUFFO01BQ1B4UixJQUFJLEVBQUV1SixNQURDO01BRVB0SixRQUFRLEVBQUUsS0FGSDtNQUdQLFdBQVM7SUFIRjtFQXRCUixDQVRrQztFQXFDekNwRyxLQUFLLEVBQUUsZUFBVWlHLEtBQVYsRUFBaUI7SUFDcEIsSUFBSS9GLEVBQUUsR0FBRyxDQUFDLEdBQUdYLEtBQUssQ0FBQzBNLE1BQVYsRUFBa0JoRyxLQUFsQixDQUFUO0lBQUEsSUFBbUNuRSxJQUFJLEdBQUc1QixFQUFFLENBQUM0QixJQUE3QztJQUFBLElBQW1Ed2xCLEtBQUssR0FBR3BuQixFQUFFLENBQUNvbkIsS0FBOUQ7SUFBQSxJQUFxRXFTLFdBQVcsR0FBRzczQixJQUFJLENBQUN4QyxLQUF4RjtJQUFBLElBQStGczZCLFVBQVUsR0FBR3RTLEtBQUssQ0FBQ2hvQixLQUFOLENBQVlzNkIsVUFBeEg7SUFBQSxJQUFvSUMsZ0JBQWdCLEdBQUd2UyxLQUFLLENBQUNob0IsS0FBTixDQUFZdTZCLGdCQUFuSztJQUFBLElBQXFMaHlCLFFBQVEsR0FBR3lmLEtBQUssQ0FBQ2hvQixLQUFOLENBQVl1SSxRQUE1TTs7SUFDQSxJQUFJaEIsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLE9BQU87TUFDSDZ5QixXQUFXLEVBQUVBLFdBRFY7TUFFSEMsVUFBVSxFQUFFQSxVQUZUO01BR0hDLGdCQUFnQixFQUFFQSxnQkFIZjtNQUlIaHlCLFFBQVEsRUFBRUEsUUFKUDtNQUtIaEIsU0FBUyxFQUFFQTtJQUxSLENBQVA7RUFPSDtBQS9Dd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDVGE7O0FBQ2IsSUFBSXZELFNBQVMsR0FBSSxRQUFRLEtBQUtBLFNBQWQsSUFBNEIsVUFBVUMsT0FBVixFQUFtQkMsVUFBbkIsRUFBK0JDLENBQS9CLEVBQWtDQyxTQUFsQyxFQUE2QztFQUNyRixTQUFTQyxLQUFULENBQWVyRSxLQUFmLEVBQXNCO0lBQUUsT0FBT0EsS0FBSyxZQUFZbUUsQ0FBakIsR0FBcUJuRSxLQUFyQixHQUE2QixJQUFJbUUsQ0FBSixDQUFNLFVBQVVHLE9BQVYsRUFBbUI7TUFBRUEsT0FBTyxDQUFDdEUsS0FBRCxDQUFQO0lBQWlCLENBQTVDLENBQXBDO0VBQW9GOztFQUM1RyxPQUFPLEtBQUttRSxDQUFDLEtBQUtBLENBQUMsR0FBR0ksT0FBVCxDQUFOLEVBQXlCLFVBQVVELE9BQVYsRUFBbUJFLE1BQW5CLEVBQTJCO0lBQ3ZELFNBQVNDLFNBQVQsQ0FBbUJ6RSxLQUFuQixFQUEwQjtNQUFFLElBQUk7UUFBRTBFLElBQUksQ0FBQ04sU0FBUyxDQUFDTyxJQUFWLENBQWUzRSxLQUFmLENBQUQsQ0FBSjtNQUE4QixDQUFwQyxDQUFxQyxPQUFPNEUsQ0FBUCxFQUFVO1FBQUVKLE1BQU0sQ0FBQ0ksQ0FBRCxDQUFOO01BQVk7SUFBRTs7SUFDM0YsU0FBU0MsUUFBVCxDQUFrQjdFLEtBQWxCLEVBQXlCO01BQUUsSUFBSTtRQUFFMEUsSUFBSSxDQUFDTixTQUFTLENBQUMsT0FBRCxDQUFULENBQW1CcEUsS0FBbkIsQ0FBRCxDQUFKO01BQWtDLENBQXhDLENBQXlDLE9BQU80RSxDQUFQLEVBQVU7UUFBRUosTUFBTSxDQUFDSSxDQUFELENBQU47TUFBWTtJQUFFOztJQUM5RixTQUFTRixJQUFULENBQWNJLE1BQWQsRUFBc0I7TUFBRUEsTUFBTSxDQUFDQyxJQUFQLEdBQWNULE9BQU8sQ0FBQ1EsTUFBTSxDQUFDOUUsS0FBUixDQUFyQixHQUFzQ3FFLEtBQUssQ0FBQ1MsTUFBTSxDQUFDOUUsS0FBUixDQUFMLENBQW9Ca0MsSUFBcEIsQ0FBeUJ1QyxTQUF6QixFQUFvQ0ksUUFBcEMsQ0FBdEM7SUFBc0Y7O0lBQzlHSCxJQUFJLENBQUMsQ0FBQ04sU0FBUyxHQUFHQSxTQUFTLENBQUNZLEtBQVYsQ0FBZ0JmLE9BQWhCLEVBQXlCQyxVQUFVLElBQUksRUFBdkMsQ0FBYixFQUF5RFMsSUFBekQsRUFBRCxDQUFKO0VBQ0gsQ0FMTSxDQUFQO0FBTUgsQ0FSRDs7QUFTQSxJQUFJTSxXQUFXLEdBQUksUUFBUSxLQUFLQSxXQUFkLElBQThCLFVBQVVoQixPQUFWLEVBQW1CakIsSUFBbkIsRUFBeUI7RUFDckUsSUFBSWtDLENBQUMsR0FBRztJQUFFQyxLQUFLLEVBQUUsQ0FBVDtJQUFZQyxJQUFJLEVBQUUsZ0JBQVc7TUFBRSxJQUFJQyxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQU8sQ0FBWCxFQUFjLE1BQU1BLENBQUMsQ0FBQyxDQUFELENBQVA7TUFBWSxPQUFPQSxDQUFDLENBQUMsQ0FBRCxDQUFSO0lBQWMsQ0FBdkU7SUFBeUVDLElBQUksRUFBRSxFQUEvRTtJQUFtRkMsR0FBRyxFQUFFO0VBQXhGLENBQVI7RUFBQSxJQUFzR0MsQ0FBdEc7RUFBQSxJQUF5R0MsQ0FBekc7RUFBQSxJQUE0R0osQ0FBNUc7RUFBQSxJQUErR0ssQ0FBL0c7RUFDQSxPQUFPQSxDQUFDLEdBQUc7SUFBRWYsSUFBSSxFQUFFZ0IsSUFBSSxDQUFDLENBQUQsQ0FBWjtJQUFpQixTQUFTQSxJQUFJLENBQUMsQ0FBRCxDQUE5QjtJQUFtQyxVQUFVQSxJQUFJLENBQUMsQ0FBRDtFQUFqRCxDQUFKLEVBQTRELE9BQU9DLE1BQVAsS0FBa0IsVUFBbEIsS0FBaUNGLENBQUMsQ0FBQ0UsTUFBTSxDQUFDQyxRQUFSLENBQUQsR0FBcUIsWUFBVztJQUFFLE9BQU8sSUFBUDtFQUFjLENBQWpGLENBQTVELEVBQWdKSCxDQUF2Sjs7RUFDQSxTQUFTQyxJQUFULENBQWNHLENBQWQsRUFBaUI7SUFBRSxPQUFPLFVBQVVDLENBQVYsRUFBYTtNQUFFLE9BQU9yQixJQUFJLENBQUMsQ0FBQ29CLENBQUQsRUFBSUMsQ0FBSixDQUFELENBQVg7SUFBc0IsQ0FBNUM7RUFBK0M7O0VBQ2xFLFNBQVNyQixJQUFULENBQWNzQixFQUFkLEVBQWtCO0lBQ2QsSUFBSVIsQ0FBSixFQUFPLE1BQU0sSUFBSVMsU0FBSixDQUFjLGlDQUFkLENBQU47O0lBQ1AsT0FBT1AsQ0FBQyxLQUFLQSxDQUFDLEdBQUcsQ0FBSixFQUFPTSxFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVVkLENBQUMsR0FBRyxDQUFkLENBQVosQ0FBRCxFQUFnQ0EsQ0FBdkM7TUFBMEMsSUFBSTtRQUMxQyxJQUFJTSxDQUFDLEdBQUcsQ0FBSixFQUFPQyxDQUFDLEtBQUtKLENBQUMsR0FBR1csRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRLENBQVIsR0FBWVAsQ0FBQyxDQUFDLFFBQUQsQ0FBYixHQUEwQk8sRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRUCxDQUFDLENBQUMsT0FBRCxDQUFELEtBQWUsQ0FBQ0osQ0FBQyxHQUFHSSxDQUFDLENBQUMsUUFBRCxDQUFOLEtBQXFCSixDQUFDLENBQUNhLElBQUYsQ0FBT1QsQ0FBUCxDQUFyQixFQUFnQyxDQUEvQyxDQUFSLEdBQTREQSxDQUFDLENBQUNkLElBQWpHLENBQUQsSUFBMkcsQ0FBQyxDQUFDVSxDQUFDLEdBQUdBLENBQUMsQ0FBQ2EsSUFBRixDQUFPVCxDQUFQLEVBQVVPLEVBQUUsQ0FBQyxDQUFELENBQVosQ0FBTCxFQUF1QmpCLElBQTlJLEVBQW9KLE9BQU9NLENBQVA7UUFDcEosSUFBSUksQ0FBQyxHQUFHLENBQUosRUFBT0osQ0FBWCxFQUFjVyxFQUFFLEdBQUcsQ0FBQ0EsRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRLENBQVQsRUFBWVgsQ0FBQyxDQUFDckYsS0FBZCxDQUFMOztRQUNkLFFBQVFnRyxFQUFFLENBQUMsQ0FBRCxDQUFWO1VBQ0ksS0FBSyxDQUFMO1VBQVEsS0FBSyxDQUFMO1lBQVFYLENBQUMsR0FBR1csRUFBSjtZQUFROztVQUN4QixLQUFLLENBQUw7WUFBUWQsQ0FBQyxDQUFDQyxLQUFGO1lBQVcsT0FBTztjQUFFbkYsS0FBSyxFQUFFZ0csRUFBRSxDQUFDLENBQUQsQ0FBWDtjQUFnQmpCLElBQUksRUFBRTtZQUF0QixDQUFQOztVQUNuQixLQUFLLENBQUw7WUFBUUcsQ0FBQyxDQUFDQyxLQUFGO1lBQVdNLENBQUMsR0FBR08sRUFBRSxDQUFDLENBQUQsQ0FBTjtZQUFXQSxFQUFFLEdBQUcsQ0FBQyxDQUFELENBQUw7WUFBVTs7VUFDeEMsS0FBSyxDQUFMO1lBQVFBLEVBQUUsR0FBR2QsQ0FBQyxDQUFDSyxHQUFGLENBQU1ZLEdBQU4sRUFBTDs7WUFBa0JqQixDQUFDLENBQUNJLElBQUYsQ0FBT2EsR0FBUDs7WUFBYzs7VUFDeEM7WUFDSSxJQUFJLEVBQUVkLENBQUMsR0FBR0gsQ0FBQyxDQUFDSSxJQUFOLEVBQVlELENBQUMsR0FBR0EsQ0FBQyxDQUFDZSxNQUFGLEdBQVcsQ0FBWCxJQUFnQmYsQ0FBQyxDQUFDQSxDQUFDLENBQUNlLE1BQUYsR0FBVyxDQUFaLENBQW5DLE1BQXVESixFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVUsQ0FBVixJQUFlQSxFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVUsQ0FBaEYsQ0FBSixFQUF3RjtjQUFFZCxDQUFDLEdBQUcsQ0FBSjtjQUFPO1lBQVc7O1lBQzVHLElBQUljLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFWLEtBQWdCLENBQUNYLENBQUQsSUFBT1csRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRWCxDQUFDLENBQUMsQ0FBRCxDQUFULElBQWdCVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFYLENBQUMsQ0FBQyxDQUFELENBQWhELENBQUosRUFBMkQ7Y0FBRUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVhLEVBQUUsQ0FBQyxDQUFELENBQVo7Y0FBaUI7WUFBUTs7WUFDdEYsSUFBSUEsRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVLENBQVYsSUFBZWQsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQTlCLEVBQW1DO2NBQUVILENBQUMsQ0FBQ0MsS0FBRixHQUFVRSxDQUFDLENBQUMsQ0FBRCxDQUFYO2NBQWdCQSxDQUFDLEdBQUdXLEVBQUo7Y0FBUTtZQUFROztZQUNyRSxJQUFJWCxDQUFDLElBQUlILENBQUMsQ0FBQ0MsS0FBRixHQUFVRSxDQUFDLENBQUMsQ0FBRCxDQUFwQixFQUF5QjtjQUFFSCxDQUFDLENBQUNDLEtBQUYsR0FBVUUsQ0FBQyxDQUFDLENBQUQsQ0FBWDs7Y0FBZ0JILENBQUMsQ0FBQ0ssR0FBRixDQUFNYyxJQUFOLENBQVdMLEVBQVg7O2NBQWdCO1lBQVE7O1lBQ25FLElBQUlYLENBQUMsQ0FBQyxDQUFELENBQUwsRUFBVUgsQ0FBQyxDQUFDSyxHQUFGLENBQU1ZLEdBQU47O1lBQ1ZqQixDQUFDLENBQUNJLElBQUYsQ0FBT2EsR0FBUDs7WUFBYztRQVh0Qjs7UUFhQUgsRUFBRSxHQUFHaEQsSUFBSSxDQUFDa0QsSUFBTCxDQUFVakMsT0FBVixFQUFtQmlCLENBQW5CLENBQUw7TUFDSCxDQWpCeUMsQ0FpQnhDLE9BQU9OLENBQVAsRUFBVTtRQUFFb0IsRUFBRSxHQUFHLENBQUMsQ0FBRCxFQUFJcEIsQ0FBSixDQUFMO1FBQWFhLENBQUMsR0FBRyxDQUFKO01BQVEsQ0FqQk8sU0FpQkU7UUFBRUQsQ0FBQyxHQUFHSCxDQUFDLEdBQUcsQ0FBUjtNQUFZO0lBakIxRDs7SUFrQkEsSUFBSVcsRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRLENBQVosRUFBZSxNQUFNQSxFQUFFLENBQUMsQ0FBRCxDQUFSO0lBQWEsT0FBTztNQUFFaEcsS0FBSyxFQUFFZ0csRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRQSxFQUFFLENBQUMsQ0FBRCxDQUFWLEdBQWdCLEtBQUssQ0FBOUI7TUFBaUNqQixJQUFJLEVBQUU7SUFBdkMsQ0FBUDtFQUMvQjtBQUNKLENBMUJEOztBQTJCQSxJQUFJckYsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSUksT0FBTyxHQUFHWixlQUFlLENBQUNRLG1CQUFPLENBQUMsNENBQUQsQ0FBUixDQUE3QixFQUNBOzs7QUFDQSxJQUFJd1kscUJBQXFCLEdBQUdoWixlQUFlLENBQUNRLG1CQUFPLENBQUMsNEZBQUQsQ0FBUixDQUEzQzs7QUFDQSxJQUFJMHFCLHFCQUFxQixHQUFHbHJCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0RkFBRCxDQUFSLENBQTNDOztBQUNBLElBQUkycUIsZUFBZSxHQUFHbnJCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxrR0FBRCxDQUFSLENBQXJDOztBQUNBLElBQUl1RyxrQkFBa0IsR0FBRy9HLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxzRkFBRCxDQUFSLENBQXhDOztBQUNBLElBQUlteUIsa0JBQWtCLEdBQUczeUIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHdHQUFELENBQVIsQ0FBeEMsRUFDQTs7O0FBQ0EsSUFBSTJ2QixZQUFZLEdBQUdud0IsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDZFQUFELENBQVIsQ0FBbEM7O0FBQ0EsSUFBSXVNLE9BQU8sR0FBRy9NLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxtRUFBRCxDQUFSLENBQTdCOztBQUNBLElBQUk4TSxPQUFPLEdBQUc5TSxtQkFBTyxDQUFDLDRFQUFELENBQXJCOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLGFBRG1DO0VBRXpDNkQsVUFBVSxFQUFFO0lBQ1I0VyxHQUFHLEVBQUU1SyxxQkFBcUIsV0FEbEI7SUFFUnlTLFVBQVUsRUFBRVAscUJBQXFCLFdBRnpCO0lBR1JNLFNBQVMsRUFBRUwsZUFBZSxXQUhsQjtJQUlScmUsS0FBSyxFQUFFL0Ysa0JBQWtCLFdBSmpCO0lBS1I2ckIsWUFBWSxFQUFFRCxrQkFBa0I7RUFMeEIsQ0FGNkI7RUFTekMxckIsS0FBSyxFQUFFO0lBQ0hpVixRQUFRLEVBQUU7TUFDTi9VLElBQUksRUFBRWhILE1BREE7TUFFTmlILFFBQVEsRUFBRTtJQUZKLENBRFA7SUFLSG1oQixPQUFPLEVBQUU7TUFDTHBoQixJQUFJLEVBQUVoSCxNQUREO01BRUxpSCxRQUFRLEVBQUU7SUFGTCxDQUxOO0lBU0hraEIsS0FBSyxFQUFFO01BQ0huaEIsSUFBSSxFQUFFaEgsTUFESDtNQUVIaUgsUUFBUSxFQUFFO0lBRlAsQ0FUSjtJQWFIMEMsS0FBSyxFQUFFO01BQ0gzQyxJQUFJLEVBQUVoSCxNQURIO01BRUhpSCxRQUFRLEVBQUU7SUFGUDtFQWJKLENBVGtDO0VBMkJ6Q3BHLEtBQUssRUFBRSxlQUFVaUcsS0FBVixFQUFpQjtJQUNwQixJQUFJd0ssS0FBSyxHQUFHLElBQVo7O0lBQ0EsSUFBSTVKLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJb1UsUUFBUSxHQUFHLENBQUMsR0FBRzNiLEtBQUssQ0FBQzBNLE1BQVYsRUFBa0JoRyxLQUFsQixFQUF5QmlWLFFBQXhDO0lBQ0EsSUFBSXNFLFVBQVUsR0FBR3RFLFFBQVEsQ0FBQzViLEtBQVQsQ0FBZXlJLEVBQWhDO0lBQUEsSUFBb0NzcEIsYUFBYSxHQUFHblcsUUFBUSxDQUFDNWIsS0FBVCxDQUFlbVksS0FBbkU7SUFBQSxJQUEwRTBaLFlBQVksR0FBRyxhQUFhandCLE1BQWIsQ0FBb0JzZSxVQUFwQixDQUF6RjtJQUNBLElBQUlySixTQUFTLEdBQUcsQ0FBQyxHQUFHNVcsS0FBSyxDQUFDZ0ksUUFBVixFQUFvQjtNQUNoQ2tHLFVBQVUsRUFBRSxLQURvQjtNQUVoQzFFLE9BQU8sRUFBRSxFQUZ1QjtNQUdoQzVDLElBQUksRUFBRTtJQUgwQixDQUFwQixDQUFoQjtJQUtBLElBQUltekIsV0FBVyxHQUFHLENBQUMsR0FBRy81QixLQUFLLENBQUNnSSxRQUFWLEVBQW9CLEVBQXBCLENBQWxCO0lBQ0EsSUFBSXdPLE9BQU8sR0FBRyxDQUFDLEdBQUd4VyxLQUFLLENBQUNnQixHQUFWLEVBQWUsS0FBZixDQUFkO0lBQ0E7QUFDUjtBQUNBOztJQUNRLElBQUkyTCxjQUFjLEdBQUcsQ0FDakI7TUFDSXVMLEtBQUssRUFBRTVRLFNBQVMsQ0FBQ3VpQixXQUFWLENBQXNCLDRCQUF0QixDQURYO01BRUlybkIsSUFBSSxFQUFFO0lBRlYsQ0FEaUIsRUFLakI7TUFDSTBWLEtBQUssRUFBRSxDQUFDLEdBQUcxTCxPQUFPLFdBQVgsRUFBcUJzbEIsYUFBckIsRUFBb0MsSUFBcEMsQ0FEWDtNQUVJdHZCLElBQUksRUFBRW92QjtJQUZWLENBTGlCLEVBU2pCO01BQ0kxWixLQUFLLEVBQUU1USxTQUFTLENBQUN3QixVQUFWLENBQXFCLGFBQXJCLENBRFg7TUFFSXRHLElBQUksRUFBRTtJQUZWLENBVGlCLENBQXJCOztJQWNBLFNBQVNnd0IsY0FBVCxDQUF3QmhvQixJQUF4QixFQUE4QjtNQUMxQjdILE1BQU0sQ0FBQzhILFFBQVAsQ0FBZ0IvSCxJQUFoQixHQUF1QjhILElBQXZCO0lBQ0g7O0lBQ0QsQ0FBQyxHQUFHeEssS0FBSyxDQUFDa0IsU0FBVixFQUFxQixZQUFZO01BQUUsT0FBTzZDLFNBQVMsQ0FBQ21OLEtBQUQsRUFBUSxLQUFLLENBQWIsRUFBZ0IsS0FBSyxDQUFyQixFQUF3QixZQUFZO1FBQ25GLE9BQU9sTSxXQUFXLENBQUMsSUFBRCxFQUFPLFVBQVVyRSxFQUFWLEVBQWM7VUFDbkNOLE9BQU8sV0FBUCxDQUFnQitDLEdBQWhCLENBQW9CLGFBQWF6QixNQUFiLENBQW9Cc2UsVUFBcEIsRUFBZ0MsaUJBQWhDLENBQXBCLEVBQXdFaGUsSUFBeEUsQ0FBNkUsVUFBVUMsR0FBVixFQUFlO1lBQ3hGLElBQUl5TCxRQUFRLEdBQUd6TCxHQUFHLENBQUNLLElBQW5CO1lBQ0EzQyxNQUFNLENBQUNvUSxNQUFQLENBQWMrcEIsV0FBZCxFQUEyQnBzQixRQUFRLENBQUNwTCxJQUFwQztZQUNBaVUsT0FBTyxDQUFDelcsS0FBUixHQUFnQjROLFFBQVEsQ0FBQ3BMLElBQVQsQ0FBY0EsSUFBZCxDQUFtQjRELE1BQW5CLEdBQTRCLEtBQTVCLEdBQW9DLElBQXBEO1VBQ0gsQ0FKRDs7VUFLQSxJQUFJTyxLQUFLLENBQUM2QyxLQUFOLENBQVlDLE9BQVosS0FBd0IsRUFBNUIsRUFBZ0M7WUFDNUJvTixTQUFTLENBQUNoUSxJQUFWLEdBQWlCRixLQUFLLENBQUM2QyxLQUFOLENBQVkzQyxJQUE3QjtZQUNBZ1EsU0FBUyxDQUFDMUksVUFBVixHQUF1QixJQUF2QjtZQUNBMEksU0FBUyxDQUFDcE4sT0FBVixHQUFvQjlDLEtBQUssQ0FBQzZDLEtBQU4sQ0FBWUMsT0FBaEM7VUFDSDs7VUFDREMsVUFBVSxDQUFDLFlBQVk7WUFDbkJtTixTQUFTLENBQUMxSSxVQUFWLEdBQXVCLEtBQXZCO1VBQ0gsQ0FGUyxFQUVQLElBRk8sQ0FBVjtVQUdBLE9BQU8sQ0FBQztVQUFFO1VBQUgsQ0FBUDtRQUNILENBZmlCLENBQWxCO01BZ0JILENBakJrRCxDQUFoQjtJQWlCOUIsQ0FqQkw7O0lBa0JBLFNBQVN1a0IsYUFBVCxDQUF1QjlYLFdBQXZCLEVBQW9DO01BQ2hDdGEsT0FBTyxXQUFQLENBQ0srQyxHQURMLENBQ1MsYUFBYXpCLE1BQWIsQ0FBb0JzZSxVQUFwQixFQUFnQyxnQkFBaEMsSUFBb0R0RixXQUQ3RCxFQUVLMVksSUFGTCxDQUVVLFVBQVVDLEdBQVYsRUFBZTtRQUNyQixJQUFJeUwsUUFBUSxHQUFHekwsR0FBRyxDQUFDSyxJQUFuQjtRQUNBM0MsTUFBTSxDQUFDb1EsTUFBUCxDQUFjK3BCLFdBQWQsRUFBMkJwc0IsUUFBUSxDQUFDcEwsSUFBcEM7UUFDQWlVLE9BQU8sQ0FBQ3pXLEtBQVIsR0FBZ0I0TixRQUFRLENBQUNwTCxJQUFULEdBQWdCLEtBQWhCLEdBQXdCLElBQXhDO01BQ0gsQ0FORDtJQU9ILENBMURtQixDQTJEcEI7OztJQUNBLENBQUMsR0FBR3ZDLEtBQUssQ0FBQ2txQixPQUFWLEVBQW1CLGNBQW5CLEVBQW1DakssVUFBbkM7SUFDQSxPQUFPO01BQ0h0VCxjQUFjLEVBQUVBLGNBRGI7TUFFSGlsQixZQUFZLEVBQUVBLFlBRlg7TUFHSGhiLFNBQVMsRUFBRUEsU0FIUjtNQUlIaVosVUFBVSxFQUFFRCxZQUFZLFdBSnJCO01BS0htSyxXQUFXLEVBQUVBLFdBTFY7TUFNSG50QixnQkFBZ0IsRUFBRUosT0FBTyxXQU50QjtNQU9IaW1CLGFBQWEsRUFBRUEsYUFQWjtNQVFIRCxjQUFjLEVBQUVBLGNBUmI7TUFTSGxyQixTQUFTLEVBQUVBO0lBVFIsQ0FBUDtFQVdILENBbkd3QztFQW9HekNvckIsT0FBTyxFQUFFO0lBQUVFLHlCQUF5QixFQUFFN2xCLE9BQU8sQ0FBQzZsQjtFQUFyQztBQXBHZ0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDdERhOztBQUNiaHpCLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNxSSxJQUFJLEVBQUUsb0JBRG1DO0VBRXpDNkQsVUFBVSxFQUFFLEVBRjZCO0VBR3pDL0YsS0FBSyxFQUFFO0lBQ0huRSxJQUFJLEVBQUU7TUFDRnFFLElBQUksRUFBRSxDQUFDaEgsTUFBRCxFQUFTdVEsTUFBVCxDQURKO01BRUZ0SixRQUFRLEVBQUU7SUFGUixDQURIO0lBS0hELElBQUksRUFBRTtNQUNGQSxJQUFJLEVBQUVoSCxNQURKO01BRUZpSCxRQUFRLEVBQUU7SUFGUjtFQUxILENBSGtDO0VBYXpDcEcsS0FBSyxFQUFFLGVBQVVpRyxLQUFWLEVBQWlCO0lBQ3BCLElBQUluRSxJQUFJLEdBQUcsQ0FBQyxHQUFHdkMsS0FBSyxDQUFDME0sTUFBVixFQUFrQmhHLEtBQWxCLEVBQXlCbkUsSUFBcEM7SUFDQSxJQUFJa3hCLE1BQU0sR0FBR2x4QixJQUFJLENBQUN4QyxLQUFsQjtJQUNBLElBQUl1SCxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsT0FBTztNQUFFa3NCLE1BQU0sRUFBRUEsTUFBVjtNQUFrQm5zQixTQUFTLEVBQUVBO0lBQTdCLENBQVA7RUFDSDtBQWxCd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDSmE7O0FBQ2IsSUFBSTdILGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5CLEVBQ0E7OztBQUNBLElBQUkydkIsWUFBWSxHQUFHbndCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw2RUFBRCxDQUFSLENBQWxDOztBQUNBLElBQUl1TSxPQUFPLEdBQUcvTSxlQUFlLENBQUNRLG1CQUFPLENBQUMsbUVBQUQsQ0FBUixDQUE3QixFQUNBOzs7QUFDQSxJQUFJaXdCLHFCQUFxQixHQUFHendCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw4R0FBRCxDQUFSLENBQTNDOztBQUNBLElBQUltakIsVUFBVSxHQUFHM2pCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxzRkFBRCxDQUFSLENBQWhDLEVBQ0E7OztBQUNBLElBQUk4TSxPQUFPLEdBQUc5TSxtQkFBTyxDQUFDLG1FQUFELENBQXJCOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLGlCQURtQztFQUV6QzZELFVBQVUsRUFBRTtJQUNSMGpCLE1BQU0sRUFBRUQscUJBQXFCLFdBRHJCO0lBRVI3TSxHQUFHLEVBQUVELFVBQVU7RUFGUCxDQUY2QjtFQU16QzFjLEtBQUssRUFBRTtJQUNIN0IsTUFBTSxFQUFFO01BQ0orQixJQUFJLEVBQUVoSCxNQURGO01BRUppSCxRQUFRLEVBQUU7SUFGTixDQURMO0lBS0hELElBQUksRUFBRTtNQUNGQSxJQUFJLEVBQUVoSCxNQURKO01BRUZpSCxRQUFRLEVBQUU7SUFGUixDQUxIO0lBU0gwekIsT0FBTyxFQUFFO01BQ0wzekIsSUFBSSxFQUFFdUosTUFERDtNQUVMdEosUUFBUSxFQUFFLEtBRkw7TUFHTCxXQUFTO0lBSEo7RUFUTixDQU5rQztFQXFCekNwRyxLQUFLLEVBQUUsZUFBVWlHLEtBQVYsRUFBaUI7SUFDcEIsSUFBSVksU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLElBQUkxQyxNQUFNLEdBQUcsQ0FBQyxHQUFHN0UsS0FBSyxDQUFDME0sTUFBVixFQUFrQmhHLEtBQWxCLEVBQXlCN0IsTUFBdEM7SUFDQSxJQUFJMnNCLGFBQWEsR0FBRzNzQixNQUFNLENBQUM5RSxLQUFQLENBQWF1eUIsVUFBYixDQUF3QmtJLE9BQXhCLEVBQXBCO0lBQ0EsT0FBTztNQUNIaEosYUFBYSxFQUFFQSxhQURaO01BRUgzQixVQUFVLEVBQUVELFlBQVksV0FGckI7TUFHSGhqQixnQkFBZ0IsRUFBRUosT0FBTyxXQUh0QjtNQUlIMmxCLGlCQUFpQixFQUFFcGxCLE9BQU8sQ0FBQ29sQixpQkFKeEI7TUFLSDdxQixTQUFTLEVBQUVBO0lBTFIsQ0FBUDtFQU9IO0FBaEN3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNmYTs7QUFDYjFILDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNxSSxJQUFJLEVBQUUsaUJBRG1DO0VBRXpDNkQsVUFBVSxFQUFFLEVBRjZCO0VBR3pDL0YsS0FBSyxFQUFFO0lBQ0huRSxJQUFJLEVBQUU7TUFDRnFFLElBQUksRUFBRSxDQUFDaEgsTUFBRCxFQUFTdVEsTUFBVCxDQURKO01BRUZ0SixRQUFRLEVBQUU7SUFGUixDQURIO0lBS0hELElBQUksRUFBRTtNQUNGQSxJQUFJLEVBQUVoSCxNQURKO01BRUZpSCxRQUFRLEVBQUU7SUFGUjtFQUxILENBSGtDO0VBYXpDcEcsS0FBSyxFQUFFLGVBQVVpRyxLQUFWLEVBQWlCO0lBQ3BCLElBQUlZLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJaEYsSUFBSSxHQUFHLENBQUMsR0FBR3ZDLEtBQUssQ0FBQzBNLE1BQVYsRUFBa0JoRyxLQUFsQixFQUF5Qm5FLElBQXBDO0lBQ0EsSUFBSWs0QixhQUFhLEdBQUdsNEIsSUFBSSxDQUFDeEMsS0FBekI7SUFDQSxPQUFPO01BQUUwNkIsYUFBYSxFQUFFQSxhQUFqQjtNQUFnQ256QixTQUFTLEVBQUVBO0lBQTNDLENBQVA7RUFDSDtBQWxCd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDSmE7O0FBQ2IxSCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLFlBRG1DO0VBRXpDbEMsS0FBSyxFQUFFO0lBQ0huRSxJQUFJLEVBQUU7TUFDRnFFLElBQUksRUFBRU8sTUFESjtNQUVGTixRQUFRLEVBQUU7SUFGUixDQURIO0lBS0hELElBQUksRUFBRTtNQUNGQSxJQUFJLEVBQUVoSCxNQURKO01BRUZpSCxRQUFRLEVBQUU7SUFGUjtFQUxILENBRmtDO0VBWXpDcEcsS0FBSyxFQUFFLGVBQVVpRyxLQUFWLEVBQWlCO0lBQ3BCLElBQUlZLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJaEYsSUFBSSxHQUFHLENBQUMsR0FBR3ZDLEtBQUssQ0FBQzBNLE1BQVYsRUFBa0JoRyxLQUFsQixFQUF5Qm5FLElBQXBDO0lBQ0EsSUFBSW00QixRQUFRLEdBQUduNEIsSUFBSSxDQUFDeEMsS0FBcEI7SUFDQSxPQUFPO01BQUUyNkIsUUFBUSxFQUFFQSxRQUFaO01BQXNCcHpCLFNBQVMsRUFBRUE7SUFBakMsQ0FBUDtFQUNIO0FBakJ3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNKYTs7QUFDYjFILDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNxSSxJQUFJLEVBQUUsVUFEbUM7RUFFekM2RCxVQUFVLEVBQUUsRUFGNkI7RUFHekMvRixLQUFLLEVBQUU7SUFDSG5FLElBQUksRUFBRTtNQUNGcUUsSUFBSSxFQUFFLENBQUNoSCxNQUFELEVBQVN1USxNQUFULENBREo7TUFFRnRKLFFBQVEsRUFBRTtJQUZSLENBREg7SUFLSEQsSUFBSSxFQUFFO01BQ0ZBLElBQUksRUFBRWhILE1BREo7TUFFRmlILFFBQVEsRUFBRTtJQUZSO0VBTEgsQ0FIa0M7RUFhekNwRyxLQUFLLEVBQUUsZUFBVWlHLEtBQVYsRUFBaUI7SUFDcEIsSUFBSW5FLElBQUksR0FBRyxDQUFDLEdBQUd2QyxLQUFLLENBQUMwTSxNQUFWLEVBQWtCaEcsS0FBbEIsRUFBeUJuRSxJQUFwQztJQUNBLElBQUlvNEIsTUFBTSxHQUFHcDRCLElBQUksQ0FBQ3hDLEtBQWxCO0lBQ0EsSUFBSXVILFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxPQUFPO01BQUVvekIsTUFBTSxFQUFFQSxNQUFWO01BQWtCcnpCLFNBQVMsRUFBRUE7SUFBN0IsQ0FBUDtFQUNIO0FBbEJ3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNKYTs7QUFDYixJQUFJN0gsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkIsRUFDQTs7O0FBQ0EsSUFBSW1qQixVQUFVLEdBQUczakIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHNGQUFELENBQVIsQ0FBaEM7O0FBQ0EsSUFBSTJxQixlQUFlLEdBQUduckIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGtHQUFELENBQVIsQ0FBckM7O0FBQ0EsSUFBSXVHLGtCQUFrQixHQUFHL0csZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHNGQUFELENBQVIsQ0FBeEMsRUFDQTs7O0FBQ0EsSUFBSTJ2QixZQUFZLEdBQUdud0IsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDZFQUFELENBQVIsQ0FBbEM7O0FBQ0EsSUFBSXVNLE9BQU8sR0FBRy9NLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxtRUFBRCxDQUFSLENBQTdCOztBQUNBLElBQUkyNkIsd0JBQXdCLEdBQUduN0IsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDBHQUFELENBQVIsQ0FBOUM7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNxSSxJQUFJLEVBQUUsbUJBRG1DO0VBRXpDNkQsVUFBVSxFQUFFO0lBQ1JvdUIsa0JBQWtCLEVBQUVELHdCQUF3QixXQURwQztJQUVSdlgsR0FBRyxFQUFFRCxVQUFVLFdBRlA7SUFHUjZILFNBQVMsRUFBRUwsZUFBZSxXQUhsQjtJQUlScmUsS0FBSyxFQUFFL0Ysa0JBQWtCO0VBSmpCLENBRjZCO0VBUXpDRSxLQUFLLEVBQUU7SUFDSGlWLFFBQVEsRUFBRTtNQUNOL1UsSUFBSSxFQUFFaEgsTUFEQTtNQUVOaUgsUUFBUSxFQUFFO0lBRkosQ0FEUDtJQUtIaTBCLFdBQVcsRUFBRTtNQUNUbDBCLElBQUksRUFBRWhILE1BREc7TUFFVGlILFFBQVEsRUFBRTtJQUZELENBTFY7SUFTSGtoQixLQUFLLEVBQUU7TUFDSG5oQixJQUFJLEVBQUVoSCxNQURIO01BRUhpSCxRQUFRLEVBQUU7SUFGUCxDQVRKO0lBYUgwQyxLQUFLLEVBQUU7TUFDSDNDLElBQUksRUFBRWhILE1BREg7TUFFSGlILFFBQVEsRUFBRTtJQUZQLENBYko7SUFpQkh5cUIsT0FBTyxFQUFFO01BQ0wxcUIsSUFBSSxFQUFFaEgsTUFERDtNQUVMaUgsUUFBUSxFQUFFO0lBRkw7RUFqQk4sQ0FSa0M7RUE4QnpDcEcsS0FBSyxFQUFFLGVBQVVpRyxLQUFWLEVBQWlCO0lBQ3BCLElBQUlZLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7O0lBQ0EsSUFBSTVHLEVBQUUsR0FBRyxDQUFDLEdBQUdYLEtBQUssQ0FBQzBNLE1BQVYsRUFBa0JoRyxLQUFsQixDQUFUO0lBQUEsSUFBbUNpVixRQUFRLEdBQUdoYixFQUFFLENBQUNnYixRQUFqRDtJQUFBLElBQTJEbWYsV0FBVyxHQUFHbjZCLEVBQUUsQ0FBQ202QixXQUE1RTs7SUFDQSxJQUFJdkosV0FBVyxHQUFHLCtHQUFsQjtJQUNBLElBQUkxcEIsV0FBVyxHQUFHLENBQUMsR0FBRzdILEtBQUssQ0FBQ2dCLEdBQVYsRUFBZSxLQUFmLENBQWxCO0lBQ0EsSUFBSXNuQixTQUFTLEdBQUcsQ0FBQyxHQUFHdG9CLEtBQUssQ0FBQ2dCLEdBQVYsRUFBZSxDQUFmLENBQWhCO0lBQ0EsSUFBSXVuQixXQUFXLEdBQUcsQ0FBQyxHQUFHdm9CLEtBQUssQ0FBQ2dCLEdBQVYsRUFBZSxDQUFmLENBQWxCO0lBQ0EsSUFBSTRWLFNBQVMsR0FBRyxDQUFDLEdBQUc1VyxLQUFLLENBQUNnSSxRQUFWLEVBQW9CO01BQ2hDa0csVUFBVSxFQUFFLEtBRG9CO01BRWhDMUUsT0FBTyxFQUFFLEVBRnVCO01BR2hDNUMsSUFBSSxFQUFFO0lBSDBCLENBQXBCLENBQWhCOztJQUtBLElBQUkraEIsWUFBWSxHQUFHLFNBQWZBLFlBQWUsR0FBWTtNQUMzQkwsU0FBUyxDQUFDdm9CLEtBQVYsR0FBa0I0QyxNQUFNLENBQUNpbUIsT0FBekI7SUFDSCxDQUZEOztJQUdBLElBQUlDLFlBQVksR0FBRyxDQUFDLEdBQUc3b0IsS0FBSyxDQUFDd0QsUUFBVixFQUFvQixZQUFZO01BQy9DLE9BQU84a0IsU0FBUyxDQUFDdm9CLEtBQVYsS0FBb0IsQ0FBM0I7SUFDSCxDQUZrQixDQUFuQixDQWZvQixDQWtCcEI7O0lBQ0EsSUFBSWc3QixlQUFlLEdBQUdELFdBQVcsQ0FBQy82QixLQUFaLENBQWtCKzZCLFdBQXhDOztJQUNBLElBQUloUyxTQUFTLEdBQUcsU0FBWkEsU0FBWSxDQUFVM1QsS0FBVixFQUFpQjtNQUM3Qm9ULFdBQVcsQ0FBQ3hvQixLQUFaLEdBQW9Cb1YsS0FBSyxDQUFDMEgsTUFBTixDQUFhNVMsVUFBakM7O01BQ0EsSUFBSXNlLFdBQVcsQ0FBQ3hvQixLQUFaLEdBQW9CLElBQXhCLEVBQThCO1FBQzFCcUIsUUFBUSxDQUFDaUosZUFBVCxDQUF5Qi9JLEtBQXpCLENBQStCZ0osUUFBL0IsR0FBMEMsTUFBMUM7TUFDSCxDQUZELE1BR0s7UUFDRHpDLFdBQVcsQ0FBQzlILEtBQVosS0FDS3FCLFFBQVEsQ0FBQ2lKLGVBQVQsQ0FBeUIvSSxLQUF6QixDQUErQmdKLFFBQS9CLEdBQTBDLFFBRC9DO01BRUg7SUFDSixDQVREOztJQVVBLElBQUkyVixVQUFVLEdBQUd0RSxRQUFRLENBQUM1YixLQUFULENBQWV5SSxFQUFoQztJQUFBLElBQW9Dc3BCLGFBQWEsR0FBRyxDQUFDLEdBQUd0bEIsT0FBTyxXQUFYLEVBQXFCbVAsUUFBUSxDQUFDNWIsS0FBVCxDQUFlbVksS0FBcEMsRUFBMkMsSUFBM0MsQ0FBcEQ7SUFBQSxJQUFzRzBaLFlBQVksR0FBRyxhQUFhandCLE1BQWIsQ0FBb0JzZSxVQUFwQixDQUFySDtJQUFBLElBQXNKK2EsZUFBZSxHQUFHLEdBQUdyNUIsTUFBSCxDQUFVaXdCLFlBQVYsRUFBd0IsZUFBeEIsRUFBeUNqd0IsTUFBekMsQ0FBZ0RtNUIsV0FBVyxDQUFDLzZCLEtBQVosQ0FBa0J5SSxFQUFsRSxDQUF4SztJQUNBLENBQUMsR0FBR3hJLEtBQUssQ0FBQ3FNLFdBQVYsRUFBdUIsWUFBWTtNQUMvQjFKLE1BQU0sQ0FBQ3lRLG1CQUFQLENBQTJCLFFBQTNCLEVBQXFDdVYsWUFBckM7TUFDQWhtQixNQUFNLENBQUN5USxtQkFBUCxDQUEyQixRQUEzQixFQUFxQzBWLFNBQXJDO0lBQ0gsQ0FIRDtJQUlBLENBQUMsR0FBRzlvQixLQUFLLENBQUNnSixLQUFWLEVBQWlCLFlBQVk7TUFBRSxPQUFPbkIsV0FBVyxDQUFDOUgsS0FBbkI7SUFBMkIsQ0FBMUQsRUFBNEQsVUFBVXFLLE9BQVYsRUFBbUI7TUFDM0UsSUFBSUEsT0FBSixFQUFhO1FBQ1RoSixRQUFRLENBQUNpSixlQUFULENBQXlCL0ksS0FBekIsQ0FBK0JnSixRQUEvQixHQUEwQyxRQUExQztNQUNILENBRkQsTUFHSztRQUNEbEosUUFBUSxDQUFDaUosZUFBVCxDQUF5Qi9JLEtBQXpCLENBQStCZ0osUUFBL0IsR0FBMEMsTUFBMUM7TUFDSDtJQUNKLENBUEQ7SUFRQTtBQUNSO0FBQ0E7O0lBQ1EsSUFBSXFDLGNBQWMsR0FBRyxDQUNqQjtNQUNJdUwsS0FBSyxFQUFFNVEsU0FBUyxDQUFDdWlCLFdBQVYsQ0FBc0IsNEJBQXRCLENBRFg7TUFFSXJuQixJQUFJLEVBQUU7SUFGVixDQURpQixFQUtqQjtNQUNJMFYsS0FBSyxFQUFFNFosYUFEWDtNQUVJdHZCLElBQUksRUFBRW92QjtJQUZWLENBTGlCLEVBU2pCO01BQ0kxWixLQUFLLEVBQUU1USxTQUFTLENBQUN3QixVQUFWLENBQXFCLGFBQXJCLENBRFg7TUFFSXRHLElBQUksRUFBRTtJQUZWLENBVGlCLENBQXJCO0lBY0EsQ0FBQyxHQUFHeEMsS0FBSyxDQUFDa0IsU0FBVixFQUFxQixZQUFZO01BQzdCeUIsTUFBTSxDQUFDcVEsZ0JBQVAsQ0FBd0IsUUFBeEIsRUFBa0MyVixZQUFsQztNQUNBaG1CLE1BQU0sQ0FBQ3FRLGdCQUFQLENBQXdCLFFBQXhCLEVBQWtDOFYsU0FBbEM7O01BQ0EsSUFBSXBpQixLQUFLLENBQUM2QyxLQUFOLENBQVlDLE9BQVosS0FBd0IsRUFBNUIsRUFBZ0M7UUFDNUJvTixTQUFTLENBQUNoUSxJQUFWLEdBQWlCRixLQUFLLENBQUM2QyxLQUFOLENBQVkzQyxJQUE3QjtRQUNBZ1EsU0FBUyxDQUFDMUksVUFBVixHQUF1QixJQUF2QjtRQUNBMEksU0FBUyxDQUFDcE4sT0FBVixHQUFvQjlDLEtBQUssQ0FBQzZDLEtBQU4sQ0FBWUMsT0FBaEM7TUFDSDs7TUFDREMsVUFBVSxDQUFDLFlBQVk7UUFDbkJtTixTQUFTLENBQUMxSSxVQUFWLEdBQXVCLEtBQXZCO01BQ0gsQ0FGUyxFQUVQLElBRk8sQ0FBVjtJQUdILENBWEQ7O0lBWUEsSUFBSStzQixlQUFlLEdBQUcsU0FBbEJBLGVBQWtCLENBQVVDLENBQVYsRUFBYTtNQUMvQixPQUFRQSxDQUFDLENBQUNyZCxRQUFGLE9BQWlCLE9BQWpCLElBQ0pxZCxDQUFDLENBQUNyZCxRQUFGLE9BQWlCLGtCQURiLElBRUpxZCxDQUFDLENBQUNyZCxRQUFGLE9BQWlCLGtCQUZyQjtJQUdILENBSkQ7O0lBS0EsT0FBTztNQUNIaVUsYUFBYSxFQUFFQSxhQURaO01BRUhqQyxVQUFVLEVBQUVELFlBQVksV0FGckI7TUFHSG1MLGVBQWUsRUFBRUEsZUFIZDtNQUlIeEosV0FBVyxFQUFFQSxXQUpWO01BS0g1a0IsY0FBYyxFQUFFQSxjQUxiO01BTUhpbEIsWUFBWSxFQUFFQSxZQU5YO01BT0hvSixlQUFlLEVBQUVBLGVBUGQ7TUFRSHBrQixTQUFTLEVBQUVBLFNBUlI7TUFTSHFrQixlQUFlLEVBQUVBLGVBVGQ7TUFVSHB6QixXQUFXLEVBQUVBLFdBVlY7TUFXSGdoQixZQUFZLEVBQUVBLFlBWFg7TUFZSHZoQixTQUFTLEVBQUVBO0lBWlIsQ0FBUDtFQWNIO0FBekh3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNmYTs7QUFDYixJQUFJN0gsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXNtQixlQUFlLEdBQUc5bUIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDJGQUFELENBQVIsQ0FBckM7O0FBQ0EsSUFBSTJ2QixZQUFZLEdBQUdud0IsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHdGQUFELENBQVIsQ0FBbEM7O0FBQ0EsSUFBSXFtQixPQUFPLEdBQUdybUIsbUJBQU8sQ0FBQyw2RkFBRCxDQUFyQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q3FJLElBQUksRUFBRSxpQkFEbUM7RUFFekM2RCxVQUFVLEVBQUU7SUFDUndhLFNBQVMsRUFBRVYsZUFBZSxXQURsQjtJQUVSdUssV0FBVyxFQUFFeEssT0FBTyxDQUFDd0ssV0FGYjtJQUdScUssT0FBTyxFQUFFN1UsT0FBTyxDQUFDNlUsT0FIVDtJQUlSQyxlQUFlLEVBQUU5VSxPQUFPLENBQUM4VSxlQUpqQjtJQUtSQyxlQUFlLEVBQUUvVSxPQUFPLENBQUMrVSxlQUxqQjtJQU1SQyxLQUFLLEVBQUVoVixPQUFPLENBQUNnVixLQU5QO0lBT1JDLG9CQUFvQixFQUFFalYsT0FBTyxDQUFDaVYsb0JBUHRCO0lBUVJDLG9CQUFvQixFQUFFbFYsT0FBTyxDQUFDa1Ysb0JBUnRCO0lBU1JDLG1CQUFtQixFQUFFblYsT0FBTyxDQUFDbVYsbUJBVHJCO0lBVVJyRixNQUFNLEVBQUU5UCxPQUFPLENBQUM4UCxNQVZSO0lBV1JKLGdCQUFnQixFQUFFMVAsT0FBTyxDQUFDMFAsZ0JBWGxCO0lBWVJDLGVBQWUsRUFBRTNQLE9BQU8sQ0FBQzJQLGVBWmpCO0lBYVJ5RixRQUFRLEVBQUVwVixPQUFPLENBQUNvVixRQWJWO0lBY1JDLFdBQVcsRUFBRXJWLE9BQU8sQ0FBQ3FWLFdBZGI7SUFlUkMsVUFBVSxFQUFFdFYsT0FBTyxDQUFDc1Y7RUFmWixDQUY2QjtFQW1CekNsMUIsS0FBSyxFQUFFO0lBQ0huRSxJQUFJLEVBQUU7TUFDRnFFLElBQUksRUFBRSxDQUFDaEgsTUFBRCxFQUFTdVEsTUFBVCxDQURKO01BRUZ0SixRQUFRLEVBQUU7SUFGUixDQURIO0lBS0hxekIsV0FBVyxFQUFFO01BQ1R0ekIsSUFBSSxFQUFFdUosTUFERztNQUVUdEosUUFBUSxFQUFFO0lBRkQsQ0FMVjtJQVNIc3pCLE9BQU8sRUFBRTtNQUNMdnpCLElBQUksRUFBRXVKLE1BREQ7TUFFTHRKLFFBQVEsRUFBRTtJQUZMLENBVE47SUFhSHdSLEtBQUssRUFBRTtNQUNIelIsSUFBSSxFQUFFdUosTUFESDtNQUVIdEosUUFBUSxFQUFFLEtBRlA7TUFHSCxXQUFTO0lBSE4sQ0FiSjtJQWtCSGtoQixLQUFLLEVBQUU7TUFDSG5oQixJQUFJLEVBQUVoSCxNQURIO01BRUhpSCxRQUFRLEVBQUU7SUFGUCxDQWxCSjtJQXNCSHVSLFNBQVMsRUFBRTtNQUNQeFIsSUFBSSxFQUFFdUosTUFEQztNQUVQdEosUUFBUSxFQUFFLEtBRkg7TUFHUCxXQUFTO0lBSEY7RUF0QlIsQ0FuQmtDO0VBK0N6Q3BHLEtBQUssRUFBRSxlQUFVaUcsS0FBVixFQUFpQjtJQUNwQixJQUFJWSxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCOztJQUNBLElBQUk1RyxFQUFFLEdBQUcsQ0FBQyxHQUFHWCxLQUFLLENBQUMwTSxNQUFWLEVBQWtCaEcsS0FBbEIsQ0FBVDtJQUFBLElBQW1DbkUsSUFBSSxHQUFHNUIsRUFBRSxDQUFDNEIsSUFBN0M7SUFBQSxJQUFtRHdsQixLQUFLLEdBQUdwbkIsRUFBRSxDQUFDb25CLEtBQTlEO0lBQUEsSUFBcUVxUyxXQUFXLEdBQUc3M0IsSUFBSSxDQUFDeEMsS0FBeEY7O0lBQ0EsQ0FBQyxHQUFHQyxLQUFLLENBQUNrcUIsT0FBVixFQUFtQixPQUFuQixFQUE0Qm5DLEtBQTVCOztJQUNBLFNBQVM4VCxZQUFULENBQXNCdnpCLFFBQXRCLEVBQWdDO01BQzVCLE9BQU9BLFFBQVEsQ0FBQ2dSLEdBQVQsQ0FBYSxVQUFVd2lCLEtBQVYsRUFBaUI7UUFBRSxPQUFPQSxLQUFLLENBQUN4ekIsUUFBYjtNQUF3QixDQUF4RCxFQUEwRDZELElBQTFELENBQStELElBQS9ELENBQVA7SUFDSDs7SUFDRCxPQUFPO01BQ0hpdUIsV0FBVyxFQUFFQSxXQURWO01BRUh5QixZQUFZLEVBQUVBLFlBRlg7TUFHSGhNLFVBQVUsRUFBRUQsWUFBWSxXQUhyQjtNQUlIdG9CLFNBQVMsRUFBRUE7SUFKUixDQUFQO0VBTUg7QUE1RHdDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ1ZhOztBQUNiLElBQUl2RCxTQUFTLEdBQUksUUFBUSxLQUFLQSxTQUFkLElBQTRCLFVBQVVDLE9BQVYsRUFBbUJDLFVBQW5CLEVBQStCQyxDQUEvQixFQUFrQ0MsU0FBbEMsRUFBNkM7RUFDckYsU0FBU0MsS0FBVCxDQUFlckUsS0FBZixFQUFzQjtJQUFFLE9BQU9BLEtBQUssWUFBWW1FLENBQWpCLEdBQXFCbkUsS0FBckIsR0FBNkIsSUFBSW1FLENBQUosQ0FBTSxVQUFVRyxPQUFWLEVBQW1CO01BQUVBLE9BQU8sQ0FBQ3RFLEtBQUQsQ0FBUDtJQUFpQixDQUE1QyxDQUFwQztFQUFvRjs7RUFDNUcsT0FBTyxLQUFLbUUsQ0FBQyxLQUFLQSxDQUFDLEdBQUdJLE9BQVQsQ0FBTixFQUF5QixVQUFVRCxPQUFWLEVBQW1CRSxNQUFuQixFQUEyQjtJQUN2RCxTQUFTQyxTQUFULENBQW1CekUsS0FBbkIsRUFBMEI7TUFBRSxJQUFJO1FBQUUwRSxJQUFJLENBQUNOLFNBQVMsQ0FBQ08sSUFBVixDQUFlM0UsS0FBZixDQUFELENBQUo7TUFBOEIsQ0FBcEMsQ0FBcUMsT0FBTzRFLENBQVAsRUFBVTtRQUFFSixNQUFNLENBQUNJLENBQUQsQ0FBTjtNQUFZO0lBQUU7O0lBQzNGLFNBQVNDLFFBQVQsQ0FBa0I3RSxLQUFsQixFQUF5QjtNQUFFLElBQUk7UUFBRTBFLElBQUksQ0FBQ04sU0FBUyxDQUFDLE9BQUQsQ0FBVCxDQUFtQnBFLEtBQW5CLENBQUQsQ0FBSjtNQUFrQyxDQUF4QyxDQUF5QyxPQUFPNEUsQ0FBUCxFQUFVO1FBQUVKLE1BQU0sQ0FBQ0ksQ0FBRCxDQUFOO01BQVk7SUFBRTs7SUFDOUYsU0FBU0YsSUFBVCxDQUFjSSxNQUFkLEVBQXNCO01BQUVBLE1BQU0sQ0FBQ0MsSUFBUCxHQUFjVCxPQUFPLENBQUNRLE1BQU0sQ0FBQzlFLEtBQVIsQ0FBckIsR0FBc0NxRSxLQUFLLENBQUNTLE1BQU0sQ0FBQzlFLEtBQVIsQ0FBTCxDQUFvQmtDLElBQXBCLENBQXlCdUMsU0FBekIsRUFBb0NJLFFBQXBDLENBQXRDO0lBQXNGOztJQUM5R0gsSUFBSSxDQUFDLENBQUNOLFNBQVMsR0FBR0EsU0FBUyxDQUFDWSxLQUFWLENBQWdCZixPQUFoQixFQUF5QkMsVUFBVSxJQUFJLEVBQXZDLENBQWIsRUFBeURTLElBQXpELEVBQUQsQ0FBSjtFQUNILENBTE0sQ0FBUDtBQU1ILENBUkQ7O0FBU0EsSUFBSU0sV0FBVyxHQUFJLFFBQVEsS0FBS0EsV0FBZCxJQUE4QixVQUFVaEIsT0FBVixFQUFtQmpCLElBQW5CLEVBQXlCO0VBQ3JFLElBQUlrQyxDQUFDLEdBQUc7SUFBRUMsS0FBSyxFQUFFLENBQVQ7SUFBWUMsSUFBSSxFQUFFLGdCQUFXO01BQUUsSUFBSUMsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFPLENBQVgsRUFBYyxNQUFNQSxDQUFDLENBQUMsQ0FBRCxDQUFQO01BQVksT0FBT0EsQ0FBQyxDQUFDLENBQUQsQ0FBUjtJQUFjLENBQXZFO0lBQXlFQyxJQUFJLEVBQUUsRUFBL0U7SUFBbUZDLEdBQUcsRUFBRTtFQUF4RixDQUFSO0VBQUEsSUFBc0dDLENBQXRHO0VBQUEsSUFBeUdDLENBQXpHO0VBQUEsSUFBNEdKLENBQTVHO0VBQUEsSUFBK0dLLENBQS9HO0VBQ0EsT0FBT0EsQ0FBQyxHQUFHO0lBQUVmLElBQUksRUFBRWdCLElBQUksQ0FBQyxDQUFELENBQVo7SUFBaUIsU0FBU0EsSUFBSSxDQUFDLENBQUQsQ0FBOUI7SUFBbUMsVUFBVUEsSUFBSSxDQUFDLENBQUQ7RUFBakQsQ0FBSixFQUE0RCxPQUFPQyxNQUFQLEtBQWtCLFVBQWxCLEtBQWlDRixDQUFDLENBQUNFLE1BQU0sQ0FBQ0MsUUFBUixDQUFELEdBQXFCLFlBQVc7SUFBRSxPQUFPLElBQVA7RUFBYyxDQUFqRixDQUE1RCxFQUFnSkgsQ0FBdko7O0VBQ0EsU0FBU0MsSUFBVCxDQUFjRyxDQUFkLEVBQWlCO0lBQUUsT0FBTyxVQUFVQyxDQUFWLEVBQWE7TUFBRSxPQUFPckIsSUFBSSxDQUFDLENBQUNvQixDQUFELEVBQUlDLENBQUosQ0FBRCxDQUFYO0lBQXNCLENBQTVDO0VBQStDOztFQUNsRSxTQUFTckIsSUFBVCxDQUFjc0IsRUFBZCxFQUFrQjtJQUNkLElBQUlSLENBQUosRUFBTyxNQUFNLElBQUlTLFNBQUosQ0FBYyxpQ0FBZCxDQUFOOztJQUNQLE9BQU9QLENBQUMsS0FBS0EsQ0FBQyxHQUFHLENBQUosRUFBT00sRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVZCxDQUFDLEdBQUcsQ0FBZCxDQUFaLENBQUQsRUFBZ0NBLENBQXZDO01BQTBDLElBQUk7UUFDMUMsSUFBSU0sQ0FBQyxHQUFHLENBQUosRUFBT0MsQ0FBQyxLQUFLSixDQUFDLEdBQUdXLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUSxDQUFSLEdBQVlQLENBQUMsQ0FBQyxRQUFELENBQWIsR0FBMEJPLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUVAsQ0FBQyxDQUFDLE9BQUQsQ0FBRCxLQUFlLENBQUNKLENBQUMsR0FBR0ksQ0FBQyxDQUFDLFFBQUQsQ0FBTixLQUFxQkosQ0FBQyxDQUFDYSxJQUFGLENBQU9ULENBQVAsQ0FBckIsRUFBZ0MsQ0FBL0MsQ0FBUixHQUE0REEsQ0FBQyxDQUFDZCxJQUFqRyxDQUFELElBQTJHLENBQUMsQ0FBQ1UsQ0FBQyxHQUFHQSxDQUFDLENBQUNhLElBQUYsQ0FBT1QsQ0FBUCxFQUFVTyxFQUFFLENBQUMsQ0FBRCxDQUFaLENBQUwsRUFBdUJqQixJQUE5SSxFQUFvSixPQUFPTSxDQUFQO1FBQ3BKLElBQUlJLENBQUMsR0FBRyxDQUFKLEVBQU9KLENBQVgsRUFBY1csRUFBRSxHQUFHLENBQUNBLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUSxDQUFULEVBQVlYLENBQUMsQ0FBQ3JGLEtBQWQsQ0FBTDs7UUFDZCxRQUFRZ0csRUFBRSxDQUFDLENBQUQsQ0FBVjtVQUNJLEtBQUssQ0FBTDtVQUFRLEtBQUssQ0FBTDtZQUFRWCxDQUFDLEdBQUdXLEVBQUo7WUFBUTs7VUFDeEIsS0FBSyxDQUFMO1lBQVFkLENBQUMsQ0FBQ0MsS0FBRjtZQUFXLE9BQU87Y0FBRW5GLEtBQUssRUFBRWdHLEVBQUUsQ0FBQyxDQUFELENBQVg7Y0FBZ0JqQixJQUFJLEVBQUU7WUFBdEIsQ0FBUDs7VUFDbkIsS0FBSyxDQUFMO1lBQVFHLENBQUMsQ0FBQ0MsS0FBRjtZQUFXTSxDQUFDLEdBQUdPLEVBQUUsQ0FBQyxDQUFELENBQU47WUFBV0EsRUFBRSxHQUFHLENBQUMsQ0FBRCxDQUFMO1lBQVU7O1VBQ3hDLEtBQUssQ0FBTDtZQUFRQSxFQUFFLEdBQUdkLENBQUMsQ0FBQ0ssR0FBRixDQUFNWSxHQUFOLEVBQUw7O1lBQWtCakIsQ0FBQyxDQUFDSSxJQUFGLENBQU9hLEdBQVA7O1lBQWM7O1VBQ3hDO1lBQ0ksSUFBSSxFQUFFZCxDQUFDLEdBQUdILENBQUMsQ0FBQ0ksSUFBTixFQUFZRCxDQUFDLEdBQUdBLENBQUMsQ0FBQ2UsTUFBRixHQUFXLENBQVgsSUFBZ0JmLENBQUMsQ0FBQ0EsQ0FBQyxDQUFDZSxNQUFGLEdBQVcsQ0FBWixDQUFuQyxNQUF1REosRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVLENBQVYsSUFBZUEsRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVLENBQWhGLENBQUosRUFBd0Y7Y0FBRWQsQ0FBQyxHQUFHLENBQUo7Y0FBTztZQUFXOztZQUM1RyxJQUFJYyxFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVUsQ0FBVixLQUFnQixDQUFDWCxDQUFELElBQU9XLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUVgsQ0FBQyxDQUFDLENBQUQsQ0FBVCxJQUFnQlcsRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRWCxDQUFDLENBQUMsQ0FBRCxDQUFoRCxDQUFKLEVBQTJEO2NBQUVILENBQUMsQ0FBQ0MsS0FBRixHQUFVYSxFQUFFLENBQUMsQ0FBRCxDQUFaO2NBQWlCO1lBQVE7O1lBQ3RGLElBQUlBLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFWLElBQWVkLENBQUMsQ0FBQ0MsS0FBRixHQUFVRSxDQUFDLENBQUMsQ0FBRCxDQUE5QixFQUFtQztjQUFFSCxDQUFDLENBQUNDLEtBQUYsR0FBVUUsQ0FBQyxDQUFDLENBQUQsQ0FBWDtjQUFnQkEsQ0FBQyxHQUFHVyxFQUFKO2NBQVE7WUFBUTs7WUFDckUsSUFBSVgsQ0FBQyxJQUFJSCxDQUFDLENBQUNDLEtBQUYsR0FBVUUsQ0FBQyxDQUFDLENBQUQsQ0FBcEIsRUFBeUI7Y0FBRUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQVg7O2NBQWdCSCxDQUFDLENBQUNLLEdBQUYsQ0FBTWMsSUFBTixDQUFXTCxFQUFYOztjQUFnQjtZQUFROztZQUNuRSxJQUFJWCxDQUFDLENBQUMsQ0FBRCxDQUFMLEVBQVVILENBQUMsQ0FBQ0ssR0FBRixDQUFNWSxHQUFOOztZQUNWakIsQ0FBQyxDQUFDSSxJQUFGLENBQU9hLEdBQVA7O1lBQWM7UUFYdEI7O1FBYUFILEVBQUUsR0FBR2hELElBQUksQ0FBQ2tELElBQUwsQ0FBVWpDLE9BQVYsRUFBbUJpQixDQUFuQixDQUFMO01BQ0gsQ0FqQnlDLENBaUJ4QyxPQUFPTixDQUFQLEVBQVU7UUFBRW9CLEVBQUUsR0FBRyxDQUFDLENBQUQsRUFBSXBCLENBQUosQ0FBTDtRQUFhYSxDQUFDLEdBQUcsQ0FBSjtNQUFRLENBakJPLFNBaUJFO1FBQUVELENBQUMsR0FBR0gsQ0FBQyxHQUFHLENBQVI7TUFBWTtJQWpCMUQ7O0lBa0JBLElBQUlXLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUSxDQUFaLEVBQWUsTUFBTUEsRUFBRSxDQUFDLENBQUQsQ0FBUjtJQUFhLE9BQU87TUFBRWhHLEtBQUssRUFBRWdHLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUUEsRUFBRSxDQUFDLENBQUQsQ0FBVixHQUFnQixLQUFLLENBQTlCO01BQWlDakIsSUFBSSxFQUFFO0lBQXZDLENBQVA7RUFDL0I7QUFDSixDQTFCRDs7QUEyQkEsSUFBSXJGLGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlJLE9BQU8sR0FBR1osZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRDQUFELENBQVIsQ0FBN0IsRUFDQTs7O0FBQ0EsSUFBSXdZLHFCQUFxQixHQUFHaFosZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRGQUFELENBQVIsQ0FBM0M7O0FBQ0EsSUFBSTBxQixxQkFBcUIsR0FBR2xyQixlQUFlLENBQUNRLG1CQUFPLENBQUMsNEZBQUQsQ0FBUixDQUEzQzs7QUFDQSxJQUFJMnFCLGVBQWUsR0FBR25yQixlQUFlLENBQUNRLG1CQUFPLENBQUMsa0dBQUQsQ0FBUixDQUFyQzs7QUFDQSxJQUFJdUcsa0JBQWtCLEdBQUcvRyxlQUFlLENBQUNRLG1CQUFPLENBQUMsc0ZBQUQsQ0FBUixDQUF4Qzs7QUFDQSxJQUFJbXlCLGtCQUFrQixHQUFHM3lCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyx3R0FBRCxDQUFSLENBQXhDLEVBQ0E7OztBQUNBLElBQUkydkIsWUFBWSxHQUFHbndCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw2RUFBRCxDQUFSLENBQWxDOztBQUNBLElBQUl1TSxPQUFPLEdBQUcvTSxlQUFlLENBQUNRLG1CQUFPLENBQUMsbUVBQUQsQ0FBUixDQUE3Qjs7QUFDQSxJQUFJcUcsTUFBTSxHQUFHckcsbUJBQU8sQ0FBQywyREFBRCxDQUFwQjs7QUFDQSxJQUFJOE0sT0FBTyxHQUFHOU0sbUJBQU8sQ0FBQyw0RUFBRCxDQUFyQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDLEVBQ0E7OztBQUNBLElBQUlVLEVBQUUsR0FBRyxDQUFDLEdBQUcyRixNQUFNLENBQUM4QyxTQUFYLEdBQVQ7QUFBQSxJQUFrQ2dXLFdBQVcsR0FBR3plLEVBQUUsQ0FBQyxDQUFELENBQWxEO0FBQUEsSUFBdUQwZSxZQUFZLEdBQUcxZSxFQUFFLENBQUMsQ0FBRCxDQUF4RTs7QUFDQWIsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNxSSxJQUFJLEVBQUUsaUJBRG1DO0VBRXpDNkQsVUFBVSxFQUFFO0lBQ1I0VyxHQUFHLEVBQUU1SyxxQkFBcUIsV0FEbEI7SUFFUnlTLFVBQVUsRUFBRVAscUJBQXFCLFdBRnpCO0lBR1JNLFNBQVMsRUFBRUwsZUFBZSxXQUhsQjtJQUlScmUsS0FBSyxFQUFFL0Ysa0JBQWtCLFdBSmpCO0lBS1I2ckIsWUFBWSxFQUFFRCxrQkFBa0I7RUFMeEIsQ0FGNkI7RUFTekMxckIsS0FBSyxFQUFFO0lBQ0hpVixRQUFRLEVBQUU7TUFDTi9VLElBQUksRUFBRWhILE1BREE7TUFFTmlILFFBQVEsRUFBRTtJQUZKLENBRFA7SUFLSG9oQixZQUFZLEVBQUU7TUFDVnJoQixJQUFJLEVBQUVoSCxNQURJO01BRVZpSCxRQUFRLEVBQUU7SUFGQSxDQUxYO0lBU0hraEIsS0FBSyxFQUFFO01BQ0huaEIsSUFBSSxFQUFFaEgsTUFESDtNQUVIaUgsUUFBUSxFQUFFO0lBRlAsQ0FUSjtJQWFIMEMsS0FBSyxFQUFFO01BQ0gzQyxJQUFJLEVBQUVoSCxNQURIO01BRUhpSCxRQUFRLEVBQUU7SUFGUDtFQWJKLENBVGtDO0VBMkJ6Q3BHLEtBQUssRUFBRSxlQUFVaUcsS0FBVixFQUFpQjtJQUNwQixJQUFJd0ssS0FBSyxHQUFHLElBQVo7O0lBQ0EsSUFBSTVKLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJb1UsUUFBUSxHQUFHLENBQUMsR0FBRzNiLEtBQUssQ0FBQzBNLE1BQVYsRUFBa0JoRyxLQUFsQixFQUF5QmlWLFFBQXhDO0lBQ0EsSUFBSXNFLFVBQVUsR0FBR3RFLFFBQVEsQ0FBQzViLEtBQVQsQ0FBZXlJLEVBQWhDO0lBQUEsSUFBb0NzcEIsYUFBYSxHQUFHLENBQUMsR0FBR3RsQixPQUFPLFdBQVgsRUFBcUJtUCxRQUFRLENBQUM1YixLQUFULENBQWVtWSxLQUFwQyxFQUEyQyxJQUEzQyxDQUFwRDtJQUFBLElBQXNHMFosWUFBWSxHQUFHLGFBQWFqd0IsTUFBYixDQUFvQnNlLFVBQXBCLENBQXJIO0lBQ0EsSUFBSXJKLFNBQVMsR0FBRyxDQUFDLEdBQUc1VyxLQUFLLENBQUNnSSxRQUFWLEVBQW9CO01BQ2hDa0csVUFBVSxFQUFFLEtBRG9CO01BRWhDMUUsT0FBTyxFQUFFLEVBRnVCO01BR2hDNUMsSUFBSSxFQUFFO0lBSDBCLENBQXBCLENBQWhCO0lBS0EsSUFBSW0xQixnQkFBZ0IsR0FBRyxDQUFDLEdBQUcvN0IsS0FBSyxDQUFDZ0ksUUFBVixFQUFvQixFQUFwQixDQUF2QjtJQUNBLENBQUMsR0FBR2hJLEtBQUssQ0FBQ2tCLFNBQVYsRUFBcUIsWUFBWTtNQUFFLE9BQU82QyxTQUFTLENBQUNtTixLQUFELEVBQVEsS0FBSyxDQUFiLEVBQWdCLEtBQUssQ0FBckIsRUFBd0IsWUFBWTtRQUNuRixPQUFPbE0sV0FBVyxDQUFDLElBQUQsRUFBTyxVQUFVckUsRUFBVixFQUFjO1VBQ25DTixPQUFPLFdBQVAsQ0FBZ0IrQyxHQUFoQixDQUFvQixhQUFhekIsTUFBYixDQUFvQnNlLFVBQXBCLEVBQWdDLHNCQUFoQyxDQUFwQixFQUE2RWhlLElBQTdFLENBQWtGLFVBQVVDLEdBQVYsRUFBZTtZQUM3RixJQUFJeUwsUUFBUSxHQUFHekwsR0FBRyxDQUFDSyxJQUFuQjtZQUNBM0MsTUFBTSxDQUFDb1EsTUFBUCxDQUFjK3JCLGdCQUFkLEVBQWdDcHVCLFFBQVEsQ0FBQ3BMLElBQXpDO1VBQ0gsQ0FIRDs7VUFJQSxJQUFJbUUsS0FBSyxDQUFDNkMsS0FBTixDQUFZQyxPQUFaLEtBQXdCLEVBQTVCLEVBQWdDO1lBQzVCb04sU0FBUyxDQUFDaFEsSUFBVixHQUFpQkYsS0FBSyxDQUFDNkMsS0FBTixDQUFZM0MsSUFBN0I7WUFDQWdRLFNBQVMsQ0FBQzFJLFVBQVYsR0FBdUIsSUFBdkI7WUFDQTBJLFNBQVMsQ0FBQ3BOLE9BQVYsR0FBb0I5QyxLQUFLLENBQUM2QyxLQUFOLENBQVlDLE9BQWhDO1VBQ0g7O1VBQ0RDLFVBQVUsQ0FBQyxZQUFZO1lBQ25CbU4sU0FBUyxDQUFDMUksVUFBVixHQUF1QixLQUF2QjtVQUNILENBRlMsRUFFUCxJQUZPLENBQVY7VUFHQSxPQUFPLENBQUM7VUFBRTtVQUFILENBQVA7UUFDSCxDQWRpQixDQUFsQjtNQWVILENBaEJrRCxDQUFoQjtJQWdCOUIsQ0FoQkw7O0lBaUJBLFNBQVNza0IsY0FBVCxDQUF3QmhvQixJQUF4QixFQUE4QjtNQUMxQjdILE1BQU0sQ0FBQzhILFFBQVAsQ0FBZ0IvSCxJQUFoQixHQUF1QjhILElBQXZCO0lBQ0g7O0lBQ0QsU0FBU2lvQixhQUFULENBQXVCOVgsV0FBdkIsRUFBb0M7TUFDaEN0YSxPQUFPLFdBQVAsQ0FDSytDLEdBREwsQ0FDUyxhQUFhekIsTUFBYixDQUFvQnNlLFVBQXBCLEVBQWdDLHFCQUFoQyxJQUF5RHRGLFdBRGxFLEVBRUsxWSxJQUZMLENBRVUsVUFBVUMsR0FBVixFQUFlO1FBQ3JCLElBQUl5TCxRQUFRLEdBQUd6TCxHQUFHLENBQUNLLElBQW5CO1FBQ0EzQyxNQUFNLENBQUNvUSxNQUFQLENBQWMrckIsZ0JBQWQsRUFBZ0NwdUIsUUFBUSxDQUFDcEwsSUFBekM7TUFDSCxDQUxEO0lBTUgsQ0F0Q21CLENBdUNwQjs7O0lBQ0EsQ0FBQyxHQUFHdkMsS0FBSyxDQUFDa3FCLE9BQVYsRUFBbUIsY0FBbkIsRUFBbUNqSyxVQUFuQztJQUNBO0FBQ1I7QUFDQTs7SUFDUSxJQUFJdFQsY0FBYyxHQUFHLENBQ2pCO01BQ0l1TCxLQUFLLEVBQUU1USxTQUFTLENBQUN1aUIsV0FBVixDQUFzQiw0QkFBdEIsQ0FEWDtNQUVJcm5CLElBQUksRUFBRTtJQUZWLENBRGlCLEVBS2pCO01BQ0kwVixLQUFLLEVBQUU0WixhQURYO01BRUl0dkIsSUFBSSxFQUFFb3ZCO0lBRlYsQ0FMaUIsRUFTakI7TUFDSTFaLEtBQUssRUFBRTVRLFNBQVMsQ0FBQ3dCLFVBQVYsQ0FBcUIsa0JBQXJCLENBRFg7TUFFSXRHLElBQUksRUFBRTtJQUZWLENBVGlCLENBQXJCO0lBY0EsT0FBTztNQUNIbUssY0FBYyxFQUFFQSxjQURiO01BRUhpbEIsWUFBWSxFQUFFQSxZQUZYO01BR0gvQixVQUFVLEVBQUVELFlBQVksV0FIckI7TUFJSG1NLGdCQUFnQixFQUFFQSxnQkFKZjtNQUtIbnZCLGdCQUFnQixFQUFFSixPQUFPLFdBTHRCO01BTUhpbUIsYUFBYSxFQUFFQSxhQU5aO01BT0g3YixTQUFTLEVBQUVBLFNBUFI7TUFRSHdJLFdBQVcsRUFBRUEsV0FSVjtNQVNIQyxZQUFZLEVBQUVBLFlBVFg7TUFVSG1ULGNBQWMsRUFBRUEsY0FWYjtNQVdIbHJCLFNBQVMsRUFBRUE7SUFYUixDQUFQO0VBYUgsQ0FsR3dDO0VBbUd6Q29yQixPQUFPLEVBQUU7SUFBRUUseUJBQXlCLEVBQUU3bEIsT0FBTyxDQUFDNmxCO0VBQXJDO0FBbkdnQyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUN6RGE7O0FBQ2JoekIsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q3FJLElBQUksRUFBRSxvQkFEbUM7RUFFekM2RCxVQUFVLEVBQUUsRUFGNkI7RUFHekMvRixLQUFLLEVBQUU7SUFDSG5FLElBQUksRUFBRTtNQUNGcUUsSUFBSSxFQUFFLENBQUNoSCxNQUFELEVBQVN1USxNQUFULENBREo7TUFFRnRKLFFBQVEsRUFBRTtJQUZSO0VBREgsQ0FIa0M7RUFTekNwRyxLQUFLLEVBQUUsZUFBVWlHLEtBQVYsRUFBaUI7SUFDcEIsSUFBSVksU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLElBQUloRixJQUFJLEdBQUcsQ0FBQyxHQUFHdkMsS0FBSyxDQUFDME0sTUFBVixFQUFrQmhHLEtBQWxCLEVBQXlCbkUsSUFBcEM7SUFDQSxJQUFJeTVCLE1BQU0sR0FBR3o1QixJQUFJLENBQUN4QyxLQUFsQjtJQUNBLElBQUk2RyxJQUFJLEdBQUcsQ0FBQyxHQUFHNUcsS0FBSyxDQUFDMEQsTUFBVixFQUFrQixPQUFsQixDQUFYO0lBQ0EsT0FBTztNQUNIczRCLE1BQU0sRUFBRUEsTUFETDtNQUVIcDFCLElBQUksRUFBRUEsSUFGSDtNQUdIVSxTQUFTLEVBQUVBO0lBSFIsQ0FBUDtFQUtIO0FBbkJ3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNKYTs7QUFDYjFILDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNxSSxJQUFJLEVBQUUsd0JBRG1DO0VBRXpDNkQsVUFBVSxFQUFFLEVBRjZCO0VBR3pDL0YsS0FBSyxFQUFFO0lBQ0huRSxJQUFJLEVBQUU7TUFDRnFFLElBQUksRUFBRSxDQUFDaEgsTUFBRCxFQUFTdVEsTUFBVCxDQURKO01BRUZ0SixRQUFRLEVBQUU7SUFGUjtFQURILENBSGtDO0VBU3pDcEcsS0FBSyxFQUFFLGVBQVVpRyxLQUFWLEVBQWlCO0lBQ3BCLElBQUlZLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJaEYsSUFBSSxHQUFHLENBQUMsR0FBR3ZDLEtBQUssQ0FBQzBNLE1BQVYsRUFBa0JoRyxLQUFsQixFQUF5Qm5FLElBQXBDO0lBQ0EsSUFBSW80QixNQUFNLEdBQUdwNEIsSUFBSSxDQUFDeEMsS0FBbEI7SUFDQSxJQUFJNkcsSUFBSSxHQUFHLENBQUMsR0FBRzVHLEtBQUssQ0FBQzBELE1BQVYsRUFBa0IsT0FBbEIsQ0FBWDtJQUNBLE9BQU87TUFBRWkzQixNQUFNLEVBQUVBLE1BQVY7TUFBa0IvekIsSUFBSSxFQUFFQSxJQUF4QjtNQUE4QlUsU0FBUyxFQUFFQTtJQUF6QyxDQUFQO0VBQ0g7QUFmd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDSmE7O0FBQ2IxSCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLGdDQURtQztFQUV6QzZELFVBQVUsRUFBRSxFQUY2QjtFQUd6Qy9GLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQ0ZxRSxJQUFJLEVBQUUsQ0FBQ2hILE1BQUQsRUFBU3VRLE1BQVQsQ0FESjtNQUVGdEosUUFBUSxFQUFFO0lBRlI7RUFESCxDQUhrQztFQVN6Q3BHLEtBQUssRUFBRSxlQUFVaUcsS0FBVixFQUFpQjtJQUNwQixJQUFJWSxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSWhGLElBQUksR0FBRyxDQUFDLEdBQUd2QyxLQUFLLENBQUMwTSxNQUFWLEVBQWtCaEcsS0FBbEIsRUFBeUJuRSxJQUFwQztJQUNBLElBQUkwNUIsSUFBSSxHQUFHMTVCLElBQUksQ0FBQ3hDLEtBQWhCO0lBQ0EsSUFBSTZHLElBQUksR0FBRyxDQUFDLEdBQUc1RyxLQUFLLENBQUMwRCxNQUFWLEVBQWtCLE9BQWxCLENBQVg7SUFDQSxPQUFPO01BQUV1NEIsSUFBSSxFQUFFQSxJQUFSO01BQWNyMUIsSUFBSSxFQUFFQSxJQUFwQjtNQUEwQlUsU0FBUyxFQUFFQTtJQUFyQyxDQUFQO0VBQ0g7QUFmd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDSmE7O0FBQ2IxSCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLHdCQURtQztFQUV6QzZELFVBQVUsRUFBRSxFQUY2QjtFQUd6Qy9GLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQ0ZxRSxJQUFJLEVBQUUsQ0FBQ2hILE1BQUQsRUFBU3VRLE1BQVQsQ0FESjtNQUVGdEosUUFBUSxFQUFFO0lBRlI7RUFESCxDQUhrQztFQVN6Q3BHLEtBQUssRUFBRSxlQUFVaUcsS0FBVixFQUFpQjtJQUNwQixJQUFJWSxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSWhGLElBQUksR0FBRyxDQUFDLEdBQUd2QyxLQUFLLENBQUMwTSxNQUFWLEVBQWtCaEcsS0FBbEIsRUFBeUJuRSxJQUFwQztJQUNBLElBQUkyNUIsV0FBVyxHQUFHMzVCLElBQUksQ0FBQ3hDLEtBQXZCO0lBQ0EsSUFBSTZHLElBQUksR0FBRyxDQUFDLEdBQUc1RyxLQUFLLENBQUMwRCxNQUFWLEVBQWtCLE9BQWxCLENBQVg7SUFDQSxPQUFPO01BQUV3NEIsV0FBVyxFQUFFQSxXQUFmO01BQTRCdDFCLElBQUksRUFBRUEsSUFBbEM7TUFBd0NVLFNBQVMsRUFBRUE7SUFBbkQsQ0FBUDtFQUNIO0FBZndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ0phOztBQUNiMUgsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q3FJLElBQUksRUFBRSxxQkFEbUM7RUFFekM2RCxVQUFVLEVBQUUsRUFGNkI7RUFHekMvRixLQUFLLEVBQUU7SUFDSG5FLElBQUksRUFBRTtNQUNGcUUsSUFBSSxFQUFFLENBQUNoSCxNQUFELEVBQVN1USxNQUFULENBREo7TUFFRnRKLFFBQVEsRUFBRTtJQUZSO0VBREgsQ0FIa0M7RUFTekNwRyxLQUFLLEVBQUUsZUFBVWlHLEtBQVYsRUFBaUI7SUFDcEIsSUFBSVksU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLElBQUloRixJQUFJLEdBQUcsQ0FBQyxHQUFHdkMsS0FBSyxDQUFDME0sTUFBVixFQUFrQmhHLEtBQWxCLEVBQXlCbkUsSUFBcEM7SUFDQSxJQUFJNDVCLFFBQVEsR0FBRzU1QixJQUFJLENBQUN4QyxLQUFwQjtJQUNBLElBQUk2RyxJQUFJLEdBQUcsQ0FBQyxHQUFHNUcsS0FBSyxDQUFDMEQsTUFBVixFQUFrQixPQUFsQixDQUFYO0lBQ0EsT0FBTztNQUFFeTRCLFFBQVEsRUFBRUEsUUFBWjtNQUFzQnYxQixJQUFJLEVBQUVBLElBQTVCO01BQWtDVSxTQUFTLEVBQUVBO0lBQTdDLENBQVA7RUFDSDtBQWZ3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNKYTs7QUFDYjFILDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNxSSxJQUFJLEVBQUUsaUNBRG1DO0VBRXpDNkQsVUFBVSxFQUFFLEVBRjZCO0VBR3pDL0YsS0FBSyxFQUFFO0lBQ0huRSxJQUFJLEVBQUU7TUFDRnFFLElBQUksRUFBRSxDQUFDaEgsTUFBRCxFQUFTdVEsTUFBVCxDQURKO01BRUZ0SixRQUFRLEVBQUU7SUFGUjtFQURILENBSGtDO0VBU3pDcEcsS0FBSyxFQUFFLGVBQVVpRyxLQUFWLEVBQWlCO0lBQ3BCLElBQUlZLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJaEYsSUFBSSxHQUFHLENBQUMsR0FBR3ZDLEtBQUssQ0FBQzBNLE1BQVYsRUFBa0JoRyxLQUFsQixFQUF5Qm5FLElBQXBDO0lBQ0EsSUFBSTY1QixNQUFNLEdBQUc3NUIsSUFBSSxDQUFDeEMsS0FBbEI7SUFDQSxJQUFJNkcsSUFBSSxHQUFHLENBQUMsR0FBRzVHLEtBQUssQ0FBQzBELE1BQVYsRUFBa0IsT0FBbEIsQ0FBWDtJQUNBLE9BQU87TUFBRTA0QixNQUFNLEVBQUVBLE1BQVY7TUFBa0J4MUIsSUFBSSxFQUFFQSxJQUF4QjtNQUE4QlUsU0FBUyxFQUFFQTtJQUF6QyxDQUFQO0VBQ0g7QUFmd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDSmE7O0FBQ2IxSCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLGlDQURtQztFQUV6QzZELFVBQVUsRUFBRSxFQUY2QjtFQUd6Qy9GLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQ0ZxRSxJQUFJLEVBQUUsQ0FBQ2hILE1BQUQsRUFBU3VRLE1BQVQsQ0FESjtNQUVGdEosUUFBUSxFQUFFO0lBRlI7RUFESCxDQUhrQztFQVN6Q3BHLEtBQUssRUFBRSxlQUFVaUcsS0FBVixFQUFpQjtJQUNwQixJQUFJWSxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSWhGLElBQUksR0FBRyxDQUFDLEdBQUd2QyxLQUFLLENBQUMwTSxNQUFWLEVBQWtCaEcsS0FBbEIsRUFBeUJuRSxJQUFwQztJQUNBLElBQUk2NUIsTUFBTSxHQUFHNzVCLElBQUksQ0FBQ3hDLEtBQWxCO0lBQ0EsSUFBSTZHLElBQUksR0FBRyxDQUFDLEdBQUc1RyxLQUFLLENBQUMwRCxNQUFWLEVBQWtCLE9BQWxCLENBQVg7SUFDQSxPQUFPO01BQUUwNEIsTUFBTSxFQUFFQSxNQUFWO01BQWtCeDFCLElBQUksRUFBRUEsSUFBeEI7TUFBOEJVLFNBQVMsRUFBRUE7SUFBekMsQ0FBUDtFQUNIO0FBZndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ0phOztBQUNiMUgsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q3FJLElBQUksRUFBRSw2QkFEbUM7RUFFekM2RCxVQUFVLEVBQUUsRUFGNkI7RUFHekMvRixLQUFLLEVBQUU7SUFDSG5FLElBQUksRUFBRTtNQUNGcUUsSUFBSSxFQUFFLENBQUNoSCxNQUFELEVBQVN1USxNQUFULENBREo7TUFFRnRKLFFBQVEsRUFBRTtJQUZSO0VBREgsQ0FIa0M7RUFTekNwRyxLQUFLLEVBQUUsZUFBVWlHLEtBQVYsRUFBaUI7SUFDcEIsSUFBSVksU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLElBQUloRixJQUFJLEdBQUcsQ0FBQyxHQUFHdkMsS0FBSyxDQUFDME0sTUFBVixFQUFrQmhHLEtBQWxCLEVBQXlCbkUsSUFBcEM7SUFDQSxJQUFJODVCLE9BQU8sR0FBRzk1QixJQUFJLENBQUN4QyxLQUFuQjtJQUNBLElBQUk2RyxJQUFJLEdBQUcsQ0FBQyxHQUFHNUcsS0FBSyxDQUFDMEQsTUFBVixFQUFrQixPQUFsQixDQUFYO0lBQ0EsT0FBTztNQUFFMjRCLE9BQU8sRUFBRUEsT0FBWDtNQUFvQnoxQixJQUFJLEVBQUVBLElBQTFCO01BQWdDVSxTQUFTLEVBQUVBO0lBQTNDLENBQVA7RUFDSDtBQWZ3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNKYTs7QUFDYjFILDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNxSSxJQUFJLEVBQUUsNEJBRG1DO0VBRXpDNkQsVUFBVSxFQUFFLEVBRjZCO0VBR3pDL0YsS0FBSyxFQUFFO0lBQ0huRSxJQUFJLEVBQUU7TUFDRnFFLElBQUksRUFBRSxDQUFDaEgsTUFBRCxFQUFTdVEsTUFBVCxDQURKO01BRUZ0SixRQUFRLEVBQUU7SUFGUjtFQURILENBSGtDO0VBU3pDcEcsS0FBSyxFQUFFLGVBQVVpRyxLQUFWLEVBQWlCO0lBQ3BCLElBQUlZLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJaEYsSUFBSSxHQUFHLENBQUMsR0FBR3ZDLEtBQUssQ0FBQzBNLE1BQVYsRUFBa0JoRyxLQUFsQixFQUF5Qm5FLElBQXBDO0lBQ0EsSUFBSTg1QixPQUFPLEdBQUc5NUIsSUFBSSxDQUFDeEMsS0FBbkI7SUFDQSxJQUFJNkcsSUFBSSxHQUFHLENBQUMsR0FBRzVHLEtBQUssQ0FBQzBELE1BQVYsRUFBa0IsT0FBbEIsQ0FBWDtJQUNBLE9BQU87TUFBRTI0QixPQUFPLEVBQUVBLE9BQVg7TUFBb0J6MUIsSUFBSSxFQUFFQSxJQUExQjtNQUFnQ1UsU0FBUyxFQUFFQTtJQUEzQyxDQUFQO0VBQ0g7QUFmd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDSmE7O0FBQ2IxSCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLG1CQURtQztFQUV6QzZELFVBQVUsRUFBRSxFQUY2QjtFQUd6Qy9GLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQ0ZxRSxJQUFJLEVBQUUsQ0FBQ2hILE1BQUQsRUFBU3VRLE1BQVQsQ0FESjtNQUVGdEosUUFBUSxFQUFFO0lBRlI7RUFESCxDQUhrQztFQVN6Q3BHLEtBQUssRUFBRSxlQUFVaUcsS0FBVixFQUFpQjtJQUNwQixJQUFJWSxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSWhGLElBQUksR0FBRyxDQUFDLEdBQUd2QyxLQUFLLENBQUMwTSxNQUFWLEVBQWtCaEcsS0FBbEIsRUFBeUJuRSxJQUFwQztJQUNBLElBQUlxRSxJQUFJLEdBQUcsQ0FBQyxHQUFHNUcsS0FBSyxDQUFDMEQsTUFBVixFQUFrQixPQUFsQixDQUFYO0lBQ0EsSUFBSTQ0QixNQUFNLEdBQUcvNUIsSUFBSSxDQUFDeEMsS0FBbEI7SUFDQSxPQUFPO01BQ0h1OEIsTUFBTSxFQUFFQSxNQURMO01BRUgxMUIsSUFBSSxFQUFFQSxJQUZIO01BR0hVLFNBQVMsRUFBRUE7SUFIUixDQUFQO0VBS0g7QUFuQndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ0phOztBQUNiMUgsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q3FJLElBQUksRUFBRSx1QkFEbUM7RUFFekM2RCxVQUFVLEVBQUUsRUFGNkI7RUFHekMvRixLQUFLLEVBQUU7SUFDSG5FLElBQUksRUFBRTtNQUNGcUUsSUFBSSxFQUFFLENBQUNoSCxNQUFELEVBQVN1USxNQUFULENBREo7TUFFRnRKLFFBQVEsRUFBRTtJQUZSO0VBREgsQ0FIa0M7RUFTekNwRyxLQUFLLEVBQUUsZUFBVWlHLEtBQVYsRUFBaUI7SUFDcEIsSUFBSVksU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLElBQUloRixJQUFJLEdBQUcsQ0FBQyxHQUFHdkMsS0FBSyxDQUFDME0sTUFBVixFQUFrQmhHLEtBQWxCLEVBQXlCbkUsSUFBcEM7SUFDQSxJQUFJZzZCLE1BQU0sR0FBR2g2QixJQUFJLENBQUN4QyxLQUFsQjtJQUNBLElBQUk2RyxJQUFJLEdBQUcsQ0FBQyxHQUFHNUcsS0FBSyxDQUFDMEQsTUFBVixFQUFrQixPQUFsQixDQUFYO0lBQ0EsT0FBTztNQUFFNjRCLE1BQU0sRUFBRUEsTUFBVjtNQUFrQjMxQixJQUFJLEVBQUVBLElBQXhCO01BQThCVSxTQUFTLEVBQUVBO0lBQXpDLENBQVA7RUFDSDtBQWZ3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNKYTs7QUFDYixJQUFJN0gsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTJ2QixZQUFZLEdBQUdud0IsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDJGQUFELENBQVIsQ0FBbEM7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNxSSxJQUFJLEVBQUUsaUJBRG1DO0VBRXpDNkQsVUFBVSxFQUFFLEVBRjZCO0VBR3pDL0YsS0FBSyxFQUFFO0lBQ0huRSxJQUFJLEVBQUU7TUFDRnFFLElBQUksRUFBRSxDQUFDaEgsTUFBRCxFQUFTdVEsTUFBVCxDQURKO01BRUZ0SixRQUFRLEVBQUU7SUFGUjtFQURILENBSGtDO0VBU3pDcEcsS0FBSyxFQUFFLGVBQVVpRyxLQUFWLEVBQWlCO0lBQ3BCLElBQUlZLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJaEYsSUFBSSxHQUFHLENBQUMsR0FBR3ZDLEtBQUssQ0FBQzBNLE1BQVYsRUFBa0JoRyxLQUFsQixFQUF5Qm5FLElBQXBDO0lBQ0EsSUFBSTBSLElBQUksR0FBRzFSLElBQUksQ0FBQ3hDLEtBQWhCO0lBQ0EsT0FBTztNQUFFa1UsSUFBSSxFQUFFQSxJQUFSO01BQWM0YixVQUFVLEVBQUVELFlBQVksV0FBdEM7TUFBZ0R0b0IsU0FBUyxFQUFFQTtJQUEzRCxDQUFQO0VBQ0g7QUFkd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDUmE7O0FBQ2IxSCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLGlCQURtQztFQUV6QzZELFVBQVUsRUFBRSxFQUY2QjtFQUd6Qy9GLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQ0ZxRSxJQUFJLEVBQUUsQ0FBQ2hILE1BQUQsRUFBU3VRLE1BQVQsQ0FESjtNQUVGdEosUUFBUSxFQUFFO0lBRlI7RUFESCxDQUhrQztFQVN6Q3BHLEtBQUssRUFBRSxlQUFVaUcsS0FBVixFQUFpQjtJQUNwQixJQUFJWSxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSWhGLElBQUksR0FBRyxDQUFDLEdBQUd2QyxLQUFLLENBQUMwTSxNQUFWLEVBQWtCaEcsS0FBbEIsRUFBeUJuRSxJQUFwQztJQUNBLElBQUkwNUIsSUFBSSxHQUFHMTVCLElBQUksQ0FBQ3hDLEtBQWhCO0lBQ0EsSUFBSTZHLElBQUksR0FBRyxDQUFDLEdBQUc1RyxLQUFLLENBQUMwRCxNQUFWLEVBQWtCLE9BQWxCLENBQVg7SUFDQSxPQUFPO01BQUV1NEIsSUFBSSxFQUFFQSxJQUFSO01BQWNyMUIsSUFBSSxFQUFFQSxJQUFwQjtNQUEwQlUsU0FBUyxFQUFFQTtJQUFyQyxDQUFQO0VBQ0g7QUFmd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDSmE7O0FBQ2IsSUFBSTdILGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUkydkIsWUFBWSxHQUFHbndCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQywyRkFBRCxDQUFSLENBQWxDOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLGtCQURtQztFQUV6QzZELFVBQVUsRUFBRSxFQUY2QjtFQUd6Qy9GLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQ0ZxRSxJQUFJLEVBQUUsQ0FBQ2hILE1BQUQsRUFBU3VRLE1BQVQsQ0FESjtNQUVGdEosUUFBUSxFQUFFO0lBRlI7RUFESCxDQUhrQztFQVN6Q3BHLEtBQUssRUFBRSxlQUFVaUcsS0FBVixFQUFpQjtJQUNwQixJQUFJWSxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSWhGLElBQUksR0FBRyxDQUFDLEdBQUd2QyxLQUFLLENBQUMwTSxNQUFWLEVBQWtCaEcsS0FBbEIsRUFBeUJuRSxJQUFwQztJQUNBLElBQUl4QyxLQUFLLEdBQUd3QyxJQUFJLENBQUN4QyxLQUFqQjtJQUNBLE9BQU87TUFBRUEsS0FBSyxFQUFFQSxLQUFUO01BQWdCOHZCLFVBQVUsRUFBRUQsWUFBWSxXQUF4QztNQUFrRHRvQixTQUFTLEVBQUVBO0lBQTdELENBQVA7RUFDSDtBQWR3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNSYTs7QUFDYixJQUFJdkQsU0FBUyxHQUFJLFFBQVEsS0FBS0EsU0FBZCxJQUE0QixVQUFVQyxPQUFWLEVBQW1CQyxVQUFuQixFQUErQkMsQ0FBL0IsRUFBa0NDLFNBQWxDLEVBQTZDO0VBQ3JGLFNBQVNDLEtBQVQsQ0FBZXJFLEtBQWYsRUFBc0I7SUFBRSxPQUFPQSxLQUFLLFlBQVltRSxDQUFqQixHQUFxQm5FLEtBQXJCLEdBQTZCLElBQUltRSxDQUFKLENBQU0sVUFBVUcsT0FBVixFQUFtQjtNQUFFQSxPQUFPLENBQUN0RSxLQUFELENBQVA7SUFBaUIsQ0FBNUMsQ0FBcEM7RUFBb0Y7O0VBQzVHLE9BQU8sS0FBS21FLENBQUMsS0FBS0EsQ0FBQyxHQUFHSSxPQUFULENBQU4sRUFBeUIsVUFBVUQsT0FBVixFQUFtQkUsTUFBbkIsRUFBMkI7SUFDdkQsU0FBU0MsU0FBVCxDQUFtQnpFLEtBQW5CLEVBQTBCO01BQUUsSUFBSTtRQUFFMEUsSUFBSSxDQUFDTixTQUFTLENBQUNPLElBQVYsQ0FBZTNFLEtBQWYsQ0FBRCxDQUFKO01BQThCLENBQXBDLENBQXFDLE9BQU80RSxDQUFQLEVBQVU7UUFBRUosTUFBTSxDQUFDSSxDQUFELENBQU47TUFBWTtJQUFFOztJQUMzRixTQUFTQyxRQUFULENBQWtCN0UsS0FBbEIsRUFBeUI7TUFBRSxJQUFJO1FBQUUwRSxJQUFJLENBQUNOLFNBQVMsQ0FBQyxPQUFELENBQVQsQ0FBbUJwRSxLQUFuQixDQUFELENBQUo7TUFBa0MsQ0FBeEMsQ0FBeUMsT0FBTzRFLENBQVAsRUFBVTtRQUFFSixNQUFNLENBQUNJLENBQUQsQ0FBTjtNQUFZO0lBQUU7O0lBQzlGLFNBQVNGLElBQVQsQ0FBY0ksTUFBZCxFQUFzQjtNQUFFQSxNQUFNLENBQUNDLElBQVAsR0FBY1QsT0FBTyxDQUFDUSxNQUFNLENBQUM5RSxLQUFSLENBQXJCLEdBQXNDcUUsS0FBSyxDQUFDUyxNQUFNLENBQUM5RSxLQUFSLENBQUwsQ0FBb0JrQyxJQUFwQixDQUF5QnVDLFNBQXpCLEVBQW9DSSxRQUFwQyxDQUF0QztJQUFzRjs7SUFDOUdILElBQUksQ0FBQyxDQUFDTixTQUFTLEdBQUdBLFNBQVMsQ0FBQ1ksS0FBVixDQUFnQmYsT0FBaEIsRUFBeUJDLFVBQVUsSUFBSSxFQUF2QyxDQUFiLEVBQXlEUyxJQUF6RCxFQUFELENBQUo7RUFDSCxDQUxNLENBQVA7QUFNSCxDQVJEOztBQVNBLElBQUlNLFdBQVcsR0FBSSxRQUFRLEtBQUtBLFdBQWQsSUFBOEIsVUFBVWhCLE9BQVYsRUFBbUJqQixJQUFuQixFQUF5QjtFQUNyRSxJQUFJa0MsQ0FBQyxHQUFHO0lBQUVDLEtBQUssRUFBRSxDQUFUO0lBQVlDLElBQUksRUFBRSxnQkFBVztNQUFFLElBQUlDLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBTyxDQUFYLEVBQWMsTUFBTUEsQ0FBQyxDQUFDLENBQUQsQ0FBUDtNQUFZLE9BQU9BLENBQUMsQ0FBQyxDQUFELENBQVI7SUFBYyxDQUF2RTtJQUF5RUMsSUFBSSxFQUFFLEVBQS9FO0lBQW1GQyxHQUFHLEVBQUU7RUFBeEYsQ0FBUjtFQUFBLElBQXNHQyxDQUF0RztFQUFBLElBQXlHQyxDQUF6RztFQUFBLElBQTRHSixDQUE1RztFQUFBLElBQStHSyxDQUEvRztFQUNBLE9BQU9BLENBQUMsR0FBRztJQUFFZixJQUFJLEVBQUVnQixJQUFJLENBQUMsQ0FBRCxDQUFaO0lBQWlCLFNBQVNBLElBQUksQ0FBQyxDQUFELENBQTlCO0lBQW1DLFVBQVVBLElBQUksQ0FBQyxDQUFEO0VBQWpELENBQUosRUFBNEQsT0FBT0MsTUFBUCxLQUFrQixVQUFsQixLQUFpQ0YsQ0FBQyxDQUFDRSxNQUFNLENBQUNDLFFBQVIsQ0FBRCxHQUFxQixZQUFXO0lBQUUsT0FBTyxJQUFQO0VBQWMsQ0FBakYsQ0FBNUQsRUFBZ0pILENBQXZKOztFQUNBLFNBQVNDLElBQVQsQ0FBY0csQ0FBZCxFQUFpQjtJQUFFLE9BQU8sVUFBVUMsQ0FBVixFQUFhO01BQUUsT0FBT3JCLElBQUksQ0FBQyxDQUFDb0IsQ0FBRCxFQUFJQyxDQUFKLENBQUQsQ0FBWDtJQUFzQixDQUE1QztFQUErQzs7RUFDbEUsU0FBU3JCLElBQVQsQ0FBY3NCLEVBQWQsRUFBa0I7SUFDZCxJQUFJUixDQUFKLEVBQU8sTUFBTSxJQUFJUyxTQUFKLENBQWMsaUNBQWQsQ0FBTjs7SUFDUCxPQUFPUCxDQUFDLEtBQUtBLENBQUMsR0FBRyxDQUFKLEVBQU9NLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVWQsQ0FBQyxHQUFHLENBQWQsQ0FBWixDQUFELEVBQWdDQSxDQUF2QztNQUEwQyxJQUFJO1FBQzFDLElBQUlNLENBQUMsR0FBRyxDQUFKLEVBQU9DLENBQUMsS0FBS0osQ0FBQyxHQUFHVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVEsQ0FBUixHQUFZUCxDQUFDLENBQUMsUUFBRCxDQUFiLEdBQTBCTyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFQLENBQUMsQ0FBQyxPQUFELENBQUQsS0FBZSxDQUFDSixDQUFDLEdBQUdJLENBQUMsQ0FBQyxRQUFELENBQU4sS0FBcUJKLENBQUMsQ0FBQ2EsSUFBRixDQUFPVCxDQUFQLENBQXJCLEVBQWdDLENBQS9DLENBQVIsR0FBNERBLENBQUMsQ0FBQ2QsSUFBakcsQ0FBRCxJQUEyRyxDQUFDLENBQUNVLENBQUMsR0FBR0EsQ0FBQyxDQUFDYSxJQUFGLENBQU9ULENBQVAsRUFBVU8sRUFBRSxDQUFDLENBQUQsQ0FBWixDQUFMLEVBQXVCakIsSUFBOUksRUFBb0osT0FBT00sQ0FBUDtRQUNwSixJQUFJSSxDQUFDLEdBQUcsQ0FBSixFQUFPSixDQUFYLEVBQWNXLEVBQUUsR0FBRyxDQUFDQSxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVEsQ0FBVCxFQUFZWCxDQUFDLENBQUNyRixLQUFkLENBQUw7O1FBQ2QsUUFBUWdHLEVBQUUsQ0FBQyxDQUFELENBQVY7VUFDSSxLQUFLLENBQUw7VUFBUSxLQUFLLENBQUw7WUFBUVgsQ0FBQyxHQUFHVyxFQUFKO1lBQVE7O1VBQ3hCLEtBQUssQ0FBTDtZQUFRZCxDQUFDLENBQUNDLEtBQUY7WUFBVyxPQUFPO2NBQUVuRixLQUFLLEVBQUVnRyxFQUFFLENBQUMsQ0FBRCxDQUFYO2NBQWdCakIsSUFBSSxFQUFFO1lBQXRCLENBQVA7O1VBQ25CLEtBQUssQ0FBTDtZQUFRRyxDQUFDLENBQUNDLEtBQUY7WUFBV00sQ0FBQyxHQUFHTyxFQUFFLENBQUMsQ0FBRCxDQUFOO1lBQVdBLEVBQUUsR0FBRyxDQUFDLENBQUQsQ0FBTDtZQUFVOztVQUN4QyxLQUFLLENBQUw7WUFBUUEsRUFBRSxHQUFHZCxDQUFDLENBQUNLLEdBQUYsQ0FBTVksR0FBTixFQUFMOztZQUFrQmpCLENBQUMsQ0FBQ0ksSUFBRixDQUFPYSxHQUFQOztZQUFjOztVQUN4QztZQUNJLElBQUksRUFBRWQsQ0FBQyxHQUFHSCxDQUFDLENBQUNJLElBQU4sRUFBWUQsQ0FBQyxHQUFHQSxDQUFDLENBQUNlLE1BQUYsR0FBVyxDQUFYLElBQWdCZixDQUFDLENBQUNBLENBQUMsQ0FBQ2UsTUFBRixHQUFXLENBQVosQ0FBbkMsTUFBdURKLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFWLElBQWVBLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFoRixDQUFKLEVBQXdGO2NBQUVkLENBQUMsR0FBRyxDQUFKO2NBQU87WUFBVzs7WUFDNUcsSUFBSWMsRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVLENBQVYsS0FBZ0IsQ0FBQ1gsQ0FBRCxJQUFPVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFYLENBQUMsQ0FBQyxDQUFELENBQVQsSUFBZ0JXLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUVgsQ0FBQyxDQUFDLENBQUQsQ0FBaEQsQ0FBSixFQUEyRDtjQUFFSCxDQUFDLENBQUNDLEtBQUYsR0FBVWEsRUFBRSxDQUFDLENBQUQsQ0FBWjtjQUFpQjtZQUFROztZQUN0RixJQUFJQSxFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVUsQ0FBVixJQUFlZCxDQUFDLENBQUNDLEtBQUYsR0FBVUUsQ0FBQyxDQUFDLENBQUQsQ0FBOUIsRUFBbUM7Y0FBRUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQVg7Y0FBZ0JBLENBQUMsR0FBR1csRUFBSjtjQUFRO1lBQVE7O1lBQ3JFLElBQUlYLENBQUMsSUFBSUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQXBCLEVBQXlCO2NBQUVILENBQUMsQ0FBQ0MsS0FBRixHQUFVRSxDQUFDLENBQUMsQ0FBRCxDQUFYOztjQUFnQkgsQ0FBQyxDQUFDSyxHQUFGLENBQU1jLElBQU4sQ0FBV0wsRUFBWDs7Y0FBZ0I7WUFBUTs7WUFDbkUsSUFBSVgsQ0FBQyxDQUFDLENBQUQsQ0FBTCxFQUFVSCxDQUFDLENBQUNLLEdBQUYsQ0FBTVksR0FBTjs7WUFDVmpCLENBQUMsQ0FBQ0ksSUFBRixDQUFPYSxHQUFQOztZQUFjO1FBWHRCOztRQWFBSCxFQUFFLEdBQUdoRCxJQUFJLENBQUNrRCxJQUFMLENBQVVqQyxPQUFWLEVBQW1CaUIsQ0FBbkIsQ0FBTDtNQUNILENBakJ5QyxDQWlCeEMsT0FBT04sQ0FBUCxFQUFVO1FBQUVvQixFQUFFLEdBQUcsQ0FBQyxDQUFELEVBQUlwQixDQUFKLENBQUw7UUFBYWEsQ0FBQyxHQUFHLENBQUo7TUFBUSxDQWpCTyxTQWlCRTtRQUFFRCxDQUFDLEdBQUdILENBQUMsR0FBRyxDQUFSO01BQVk7SUFqQjFEOztJQWtCQSxJQUFJVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVEsQ0FBWixFQUFlLE1BQU1BLEVBQUUsQ0FBQyxDQUFELENBQVI7SUFBYSxPQUFPO01BQUVoRyxLQUFLLEVBQUVnRyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFBLEVBQUUsQ0FBQyxDQUFELENBQVYsR0FBZ0IsS0FBSyxDQUE5QjtNQUFpQ2pCLElBQUksRUFBRTtJQUF2QyxDQUFQO0VBQy9CO0FBQ0osQ0ExQkQ7O0FBMkJBLElBQUlyRixlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJQyxLQUFLLEdBQUdELG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSUksT0FBTyxHQUFHWixlQUFlLENBQUNRLG1CQUFPLENBQUMsNENBQUQsQ0FBUixDQUE3Qjs7QUFDQSxJQUFJc1csWUFBWSxHQUFHOVcsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGdGQUFELENBQVIsQ0FBbEM7O0FBQ0EsSUFBSTJxQixlQUFlLEdBQUduckIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGtHQUFELENBQVIsQ0FBckM7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNDLE1BQU0sRUFBRSxjQURpQztFQUV6Q0MsS0FBSyxFQUFFLGVBQVVDLE9BQVYsRUFBbUJDLEVBQW5CLEVBQXVCO0lBQzFCLElBQUl1USxLQUFLLEdBQUcsSUFBWjs7SUFDQSxJQUFJdFEsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQ0FBLE1BQU07SUFDTixJQUFJMEcsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLElBQUlpMUIsU0FBUyxHQUFHLENBQUMsR0FBR3Q4QixLQUFLLENBQUM4SCxRQUFWLEVBQW9CLEVBQXBCLENBQWhCO0lBQ0EsSUFBSXdPLE9BQU8sR0FBRyxDQUFDLEdBQUd0VyxLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQWQ7SUFDQSxJQUFJbVcsZUFBZSxHQUFHLENBQUMsR0FBR2pYLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBdEI7SUFDQSxDQUFDLEdBQUdkLEtBQUssQ0FBQ2dCLFNBQVYsRUFBcUIsWUFBWTtNQUFFLE9BQU82QyxTQUFTLENBQUNtTixLQUFELEVBQVEsS0FBSyxDQUFiLEVBQWdCLEtBQUssQ0FBckIsRUFBd0IsWUFBWTtRQUNuRixPQUFPbE0sV0FBVyxDQUFDLElBQUQsRUFBTyxVQUFVckUsRUFBVixFQUFjO1VBQ25DODdCLGNBQWMsQ0FBQyxDQUFELENBQWQ7VUFDQSxPQUFPLENBQUM7VUFBRTtVQUFILENBQVA7UUFDSCxDQUhpQixDQUFsQjtNQUlILENBTGtELENBQWhCO0lBSzlCLENBTEw7O0lBTUEsU0FBU0EsY0FBVCxDQUF3QjloQixXQUF4QixFQUFxQy9MLFFBQXJDLEVBQStDO01BQzNDLElBQUlBLFFBQVEsS0FBSyxLQUFLLENBQXRCLEVBQXlCO1FBQUVBLFFBQVEsR0FBRyxLQUFYO01BQW1COztNQUM5QyxJQUFJOHRCLEtBQUssR0FBRyxlQUFlLzZCLE1BQWYsQ0FBc0JpTixRQUFRLEdBQUcsR0FBSCxHQUFTK0wsV0FBdkMsQ0FBWjtNQUNBLElBQUlnaUIsTUFBTSxHQUFHLElBQUloeEIsZUFBSixFQUFiO01BQ0F0TCxPQUFPLFdBQVAsQ0FBZ0IrQyxHQUFoQixDQUFvQnM1QixLQUFwQixFQUEyQjtRQUFFQyxNQUFNLEVBQUVBO01BQVYsQ0FBM0IsRUFBK0MxNkIsSUFBL0MsQ0FBb0QsVUFBVUMsR0FBVixFQUFlO1FBQy9ELElBQUl5TCxRQUFRLEdBQUd6TCxHQUFHLENBQUNLLElBQW5CO1FBQ0EzQyxNQUFNLENBQUNvUSxNQUFQLENBQWN3c0IsU0FBZCxFQUF5Qjd1QixRQUFRLENBQUNwTCxJQUFsQztRQUNBaVUsT0FBTyxDQUFDelcsS0FBUixHQUFnQjROLFFBQVEsQ0FBQ3BMLElBQVQsR0FBZ0IsS0FBaEIsR0FBd0IsSUFBeEM7TUFDSCxDQUpEO0lBS0g7O0lBQ0QsSUFBSW9CLFlBQVksR0FBRztNQUFFMkQsU0FBUyxFQUFFQSxTQUFiO01BQXdCazFCLFNBQVMsRUFBRUEsU0FBbkM7TUFBOENobUIsT0FBTyxFQUFFQSxPQUF2RDtNQUFnRVcsZUFBZSxFQUFFQSxlQUFqRjtNQUFrR3NsQixjQUFjLEVBQUVBLGNBQWxIO01BQWtJemtCLE1BQU0sRUFBRXpCLFlBQVksV0FBdEo7TUFBZ0swVSxTQUFTLEVBQUVMLGVBQWU7SUFBMUwsQ0FBbkI7SUFDQWhyQixNQUFNLENBQUNDLGNBQVAsQ0FBc0I4RCxZQUF0QixFQUFvQyxpQkFBcEMsRUFBdUQ7TUFBRUcsVUFBVSxFQUFFLEtBQWQ7TUFBcUIvRCxLQUFLLEVBQUU7SUFBNUIsQ0FBdkQ7SUFDQSxPQUFPNEQsWUFBUDtFQUNIO0FBN0J3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUMvQ2E7O0FBQ2IsSUFBSWxFLGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3USxRQUFRLEdBQUdoUixlQUFlLENBQUNRLG1CQUFPLENBQUMsK0NBQUQsQ0FBUixDQUE5Qjs7QUFDQSxJQUFJRSxtQkFBbUIsR0FBR1YsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHdGQUFELENBQVIsQ0FBekM7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHRCxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLGdCQURpQztFQUV6Q2tHLEtBQUssRUFBRTtJQUNIbUssV0FBVyxFQUFFO01BQ1RqSyxJQUFJLEVBQUV1SixNQURHO01BRVR0SixRQUFRLEVBQUU7SUFGRDtFQURWLENBRmtDO0VBUXpDcEcsS0FBSyxFQUFFLGVBQVVDLE9BQVYsRUFBbUJDLEVBQW5CLEVBQXVCO0lBQzFCLElBQUlDLE1BQU0sR0FBR0QsRUFBRSxDQUFDQyxNQUFoQjtJQUNBQSxNQUFNO0lBQ04sSUFBSThGLEtBQUssR0FBR2hHLE9BQVo7SUFDQSxJQUFJazhCLE1BQU0sR0FBRyxDQUFDLEdBQUcxOEIsS0FBSyxDQUFDYyxHQUFWLEVBQWUsRUFBZixDQUFiO0lBQ0EsSUFBSTY3QixhQUFhLEdBQUcsQ0FBQyxHQUFHMzhCLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEVBQWYsQ0FBcEI7SUFDQSxJQUFJODdCLGVBQWUsR0FBRyxDQUFDLEdBQUc1OEIsS0FBSyxDQUFDd0QsTUFBVixFQUFrQixpQkFBbEIsQ0FBdEI7SUFDQSxJQUFJcTVCLFdBQVcsR0FBRyxDQUFDLEdBQUc3OEIsS0FBSyxDQUFDd0QsTUFBVixFQUFrQixhQUFsQixDQUFsQjtJQUNBLElBQUlzNUIsVUFBVSxHQUFHLENBQUMsR0FBRzk4QixLQUFLLENBQUNjLEdBQVYsRUFBZSxFQUFmLENBQWpCO0lBQ0EsSUFBSWk4QixRQUFRLEdBQUcsQ0FBQyxHQUFHLzhCLEtBQUssQ0FBQ2MsR0FBVixFQUFlLENBQWYsQ0FBZjtJQUNBLElBQUlrOEIsS0FBSyxHQUFHLENBQUMsR0FBR2g5QixLQUFLLENBQUNjLEdBQVYsRUFBZSxFQUFmLENBQVo7SUFDQSxJQUFJbThCLFVBQVUsR0FBRyxTQUFqQjtJQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLEdBQUdsOUIsS0FBSyxDQUFDc0QsUUFBVixFQUFvQixZQUFZO01BQzlDLFFBQVFrRCxLQUFLLENBQUNtSyxXQUFkO1FBQ0ksS0FBSyxXQUFMO1VBQ0ksT0FBTyxxQ0FBUDs7UUFDSixLQUFLLFVBQUw7VUFDSSxPQUFPLCtCQUFQOztRQUNKO1VBQ0ksT0FBTyxzQkFBUDtNQU5SO0lBUUgsQ0FUaUIsQ0FBbEI7SUFVQSxJQUFJd3NCLFlBQVksR0FBRyxDQUFDLEdBQUduOUIsS0FBSyxDQUFDc0QsUUFBVixFQUFvQixZQUFZO01BQUUsT0FBUTtRQUN6RDA1QixLQUFLLEVBQUU7VUFDSEksTUFBTSxFQUFFLE1BREw7VUFFSDEyQixJQUFJLEVBQUUsTUFGSDtVQUdIMjJCLE9BQU8sRUFBRSxDQUhOO1VBSUhDLElBQUksRUFBRTtZQUNGQyxPQUFPLEVBQUU7VUFEUCxDQUpIO1VBT0hDLE9BQU8sRUFBRTtZQUNMQyxLQUFLLEVBQUU7Y0FDSGYsTUFBTSxFQUFFO2dCQUNKZ0IsT0FBTyxFQUFFO2tCQUNMem5CLElBQUksRUFBRSxFQURELENBQ0s7O2dCQURMO2NBREw7WUFETDtVQURGLENBUE47VUFnQkgwbkIsT0FBTyxFQUFFO1lBQ0xwbkIsSUFBSSxFQUFFO1VBREQ7UUFoQk4sQ0FEa0Q7UUFxQnpEcW5CLE9BQU8sRUFBRTtVQUNMQyxJQUFJLEVBQUVoQixXQUFXLENBQUNoOUIsS0FBWixDQUFrQm9HLE1BQWxCLEdBQTJCLENBQTNCLEdBQStCLENBQS9CLEdBQW1DLENBRHBDO1VBRUw2M0IsV0FBVyxFQUFFLENBRlI7VUFHTEMsTUFBTSxFQUFFLENBQUMsU0FBRCxDQUhIO1VBSUxDLEtBQUssRUFBRTtZQUNISCxJQUFJLEVBQUUsQ0FESCxDQUNNOztVQUROO1FBSkYsQ0FyQmdEO1FBNkJ6REksTUFBTSxFQUFFO1VBQ0pDLEtBQUssRUFBRSxVQURIO1VBRUovbEIsS0FBSyxFQUFFO1FBRkgsQ0E3QmlEO1FBaUN6RDRsQixNQUFNLEVBQUUsQ0FBQ2QsVUFBRCxDQWpDaUQ7UUFrQ3pEL00sT0FBTyxFQUFFO1VBQ0xpTyxNQUFNLEVBQUUsZ0JBQVUxOUIsRUFBVixFQUFjO1lBQ2xCLElBQUkyOUIsTUFBTSxHQUFHMzlCLEVBQUUsQ0FBQzI5QixNQUFoQjtZQUFBLElBQXdCQyxXQUFXLEdBQUc1OUIsRUFBRSxDQUFDNDlCLFdBQXpDO1lBQUEsSUFBc0RDLGNBQWMsR0FBRzc5QixFQUFFLENBQUM2OUIsY0FBMUU7WUFBQSxJQUEwRkMsQ0FBQyxHQUFHOTlCLEVBQUUsQ0FBQzg5QixDQUFqRzs7WUFDQSxJQUFJQyxNQUFNLEdBQUcsU0FBVEEsTUFBUyxDQUFVQyxhQUFWLEVBQXlCO2NBQ2xDLE9BQU8sQ0FBQyxHQUFHbHVCLFFBQVEsV0FBWixFQUFzQmt1QixhQUF0QixFQUFxQzdzQixNQUFyQyxDQUE0QyxpQkFBNUMsQ0FBUDtZQUNILENBRkQ7O1lBR0EsT0FBTyxrRUFBa0VuUSxNQUFsRSxDQUF5RSs4QixNQUFNLENBQUNELENBQUMsQ0FBQ0csT0FBRixDQUFVQyxjQUFWLENBQXlCTCxjQUF6QixDQUFELENBQS9FLEVBQTJILHVGQUEzSCxFQUFvTjc4QixNQUFwTixDQUEyTnk3QixXQUFXLENBQUNyOUIsS0FBdk8sRUFBOE8sbURBQTlPLEVBQW1TNEIsTUFBblMsQ0FBMFMyOEIsTUFBTSxDQUFDQyxXQUFELENBQU4sQ0FBb0JDLGNBQXBCLENBQTFTLEVBQStVLG9DQUEvVSxDQUFQO1VBQ0g7UUFQSSxDQWxDZ0Q7UUEyQ3pEYixLQUFLLEVBQUU7VUFDSG1CLFVBQVUsRUFBRSxDQURUO1VBRUhsQixPQUFPLEVBQUU7WUFDTHpuQixJQUFJLEVBQUUsR0FERDtZQUVMSCxLQUFLLEVBQUUsRUFGRixDQUVNOztVQUZOLENBRk47VUFNSDRtQixNQUFNLEVBQUU7WUFDSm1DLE1BQU0sRUFBRTtVQURKO1FBTkwsQ0EzQ2tEO1FBcUR6REMsS0FBSyxFQUFFO1VBQ0hDLEdBQUcsRUFBRSxDQURGO1VBRUhDLEdBQUcsRUFBRWpDLFFBQVEsQ0FBQ2w5QixLQUFULEdBQWlCLENBRm5CO1VBR0grK0IsVUFBVSxFQUFFN0IsUUFBUSxDQUFDbDlCLEtBQVQsR0FBaUIsQ0FBakIsR0FBcUIsQ0FBckIsR0FBeUJrOUIsUUFBUSxDQUFDbDlCLEtBQVQsR0FBaUIsQ0FIbkQ7VUFJSDtVQUNBdzlCLE9BQU8sRUFBRSxFQUxOO1VBTUhYLE1BQU0sRUFBRTtZQUNKVyxPQUFPLEVBQUUsRUFETDtZQUVKNEIsU0FBUyxFQUFFLG1CQUFVcC9CLEtBQVYsRUFBaUJzUyxLQUFqQixFQUF3QjtjQUMvQixJQUFJMVIsRUFBSixFQUFReUcsRUFBUjs7Y0FDQXcxQixNQUFNLENBQUM3OEIsS0FBUCxHQUNJbTlCLEtBQUssQ0FBQ245QixLQUFOLEtBQ0ssQ0FBQ3FILEVBQUUsR0FBRyxDQUFDekcsRUFBRSxHQUFHdThCLEtBQUssQ0FBQ245QixLQUFaLE1BQXVCLElBQXZCLElBQStCWSxFQUFFLEtBQUssS0FBSyxDQUEzQyxHQUErQyxLQUFLLENBQXBELEdBQXdEQSxFQUFFLENBQUN1OEIsS0FBakUsTUFBNEUsSUFBNUUsSUFBb0Y5MUIsRUFBRSxLQUFLLEtBQUssQ0FBaEcsR0FBb0csS0FBSyxDQUF6RyxHQUE2R0EsRUFBRSxDQUFDcTNCLENBQUgsQ0FBS0csT0FBTCxDQUFhUSxVQUFiLENBQXdCLENBQXhCLEVBQTJCdjZCLE1BRDdJLENBREo7Y0FHQWc0QixhQUFhLENBQUM5OEIsS0FBZCxHQUFzQixFQUF0Qjs7Y0FDQSxLQUFLLElBQUlxUCxLQUFLLEdBQUcsQ0FBakIsRUFBb0JBLEtBQUssR0FBR3d0QixNQUFNLENBQUM3OEIsS0FBUCxDQUFhb0csTUFBekMsRUFBaURpSixLQUFLLEVBQXRELEVBQTBEO2dCQUN0RCxJQUFJLENBQUN5dEIsYUFBYSxDQUFDOThCLEtBQWQsQ0FBb0IrSyxRQUFwQixDQUE2QnUwQixJQUFJLENBQUNDLEtBQUwsQ0FBVzFDLE1BQU0sQ0FBQzc4QixLQUFQLENBQWFxUCxLQUFiLENBQVgsQ0FBN0IsQ0FBTCxFQUFvRTtrQkFDaEV5dEIsYUFBYSxDQUFDOThCLEtBQWQsQ0FBb0JxRyxJQUFwQixDQUF5Qmk1QixJQUFJLENBQUNDLEtBQUwsQ0FBVzFDLE1BQU0sQ0FBQzc4QixLQUFQLENBQWFxUCxLQUFiLENBQVgsQ0FBekI7Z0JBQ0g7Y0FDSjs7Y0FDRCxPQUFPeXRCLGFBQWEsQ0FBQzk4QixLQUFkLENBQW9Cc1MsS0FBcEIsQ0FBUDtZQUNIO1VBZEc7UUFOTDtNQXJEa0QsQ0FBUjtJQTRFaEQsQ0E1RWMsQ0FBbkI7SUE2RUEsSUFBSWlzQixNQUFNLEdBQUcsQ0FBQyxHQUFHcCtCLEtBQUssQ0FBQzhILFFBQVYsRUFBb0IsQ0FDN0I7TUFDSVksSUFBSSxFQUFFLFVBRFY7TUFFSWhDLElBQUksRUFBRSxNQUZWO01BR0lyRSxJQUFJLEVBQUV3NkIsV0FBVyxDQUFDaDlCO0lBSHRCLENBRDZCLENBQXBCLENBQWI7SUFPQSxDQUFDLEdBQUdHLEtBQUssQ0FBQzhJLEtBQVYsRUFBaUIsWUFBWTtNQUFFLE9BQU8rekIsV0FBVyxDQUFDaDlCLEtBQW5CO0lBQTJCLENBQTFELEVBQTRELFlBQVk7TUFDcEVrOUIsUUFBUSxDQUFDbDlCLEtBQVQsR0FBaUIsQ0FBakI7TUFDQWk5QixVQUFVLENBQUNqOUIsS0FBWCxDQUFpQm9HLE1BQWpCLEdBQTBCLENBQTFCOztNQUNBLEtBQUssSUFBSWtKLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUcwdEIsV0FBVyxDQUFDaDlCLEtBQVosQ0FBa0JvRyxNQUF0QyxFQUE4Q2tKLENBQUMsRUFBL0MsRUFBbUQ7UUFDL0MsSUFBSTR0QixRQUFRLENBQUNsOUIsS0FBVCxHQUFpQmc5QixXQUFXLENBQUNoOUIsS0FBWixDQUFrQnNQLENBQWxCLEVBQXFCLEdBQXJCLENBQXJCLEVBQWdEO1VBQzVDNHRCLFFBQVEsQ0FBQ2w5QixLQUFULEdBQWlCZzlCLFdBQVcsQ0FBQ2g5QixLQUFaLENBQWtCc1AsQ0FBbEIsRUFBcUIsR0FBckIsQ0FBakI7UUFDSDtNQUNKOztNQUNEaXZCLE1BQU0sQ0FBQyxNQUFELENBQU4sR0FBaUJ2QixXQUFXLENBQUNoOUIsS0FBN0I7SUFDSCxDQVRELEVBU0c7TUFBRWtRLElBQUksRUFBRTtJQUFSLENBVEg7SUFVQSxJQUFJdE0sWUFBWSxHQUFHO01BQUVpNUIsTUFBTSxFQUFFQSxNQUFWO01BQWtCQyxhQUFhLEVBQUVBLGFBQWpDO01BQWdEQyxlQUFlLEVBQUVBLGVBQWpFO01BQWtGQyxXQUFXLEVBQUVBLFdBQS9GO01BQTRHQyxVQUFVLEVBQUVBLFVBQXhIO01BQW9JQyxRQUFRLEVBQUVBLFFBQTlJO01BQXdKQyxLQUFLLEVBQUVBLEtBQS9KO01BQXNLQyxVQUFVLEVBQUVBLFVBQWxMO01BQThMejJCLEtBQUssRUFBRUEsS0FBck07TUFBNE0wMkIsV0FBVyxFQUFFQSxXQUF6TjtNQUFzT0MsWUFBWSxFQUFFQSxZQUFwUDtNQUFrUWlCLE1BQU0sRUFBRUEsTUFBMVE7TUFBa1IxNkIsYUFBYSxFQUFFekQsbUJBQW1CO0lBQXBULENBQW5CO0lBQ0FQLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQjhELFlBQXRCLEVBQW9DLGlCQUFwQyxFQUF1RDtNQUFFRyxVQUFVLEVBQUUsS0FBZDtNQUFxQi9ELEtBQUssRUFBRTtJQUE1QixDQUF2RDtJQUNBLE9BQU80RCxZQUFQO0VBQ0g7QUEvSHdDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ1RhOztBQUNiLElBQUlsRSxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJQyxLQUFLLEdBQUdELG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTBxQixxQkFBcUIsR0FBR2xyQixlQUFlLENBQUNRLG1CQUFPLENBQUMsNEZBQUQsQ0FBUixDQUEzQzs7QUFDQSxJQUFJOE0sT0FBTyxHQUFHOU0sbUJBQU8sQ0FBQyxtRUFBRCxDQUFyQjs7QUFDQSxJQUFJcy9CLDBCQUEwQixHQUFHOS9CLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxzR0FBRCxDQUFSLENBQWhEOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLHNCQURpQztFQUV6Q2tHLEtBQUssRUFBRTtJQUNIbUssV0FBVyxFQUFFO01BQ1RqSyxJQUFJLEVBQUV1SixNQURHO01BRVR0SixRQUFRLEVBQUU7SUFGRCxDQURWO0lBS0gyNEIsU0FBUyxFQUFFO01BQ1A1NEIsSUFBSSxFQUFFLENBQUNoSCxNQUFELENBREM7TUFFUGlILFFBQVEsRUFBRTtJQUZILENBTFI7SUFTSDQ0QixXQUFXLEVBQUU7TUFDVDc0QixJQUFJLEVBQUV1SixNQURHO01BRVR0SixRQUFRLEVBQUU7SUFGRCxDQVRWO0lBYUh3TyxTQUFTLEVBQUU7TUFDUHpPLElBQUksRUFBRXVKLE1BREM7TUFFUHRKLFFBQVEsRUFBRTtJQUZILENBYlI7SUFpQkh5TyxPQUFPLEVBQUU7TUFDTDFPLElBQUksRUFBRXVKLE1BREQ7TUFFTHRKLFFBQVEsRUFBRTtJQUZMLENBakJOO0lBcUJId0ssUUFBUSxFQUFFO01BQ056SyxJQUFJLEVBQUV1SixNQURBO01BRU50SixRQUFRLEVBQUU7SUFGSjtFQXJCUCxDQUZrQztFQTRCekNtRyxLQUFLLEVBQUUsQ0FBQyxVQUFELENBNUJrQztFQTZCekN2TSxLQUFLLEVBQUUsZUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUI7SUFDMUIsSUFBSXlHLEVBQUosRUFBUStCLEVBQVI7O0lBQ0EsSUFBSXZJLE1BQU0sR0FBR0QsRUFBRSxDQUFDQyxNQUFoQjtJQUFBLElBQXdCcU0sSUFBSSxHQUFHdE0sRUFBRSxDQUFDc00sSUFBbEM7SUFDQXJNLE1BQU07SUFDTixJQUFJOEYsS0FBSyxHQUFHaEcsT0FBWjtJQUNBLElBQUlnL0IsZUFBZSxHQUFHLENBQ2xCO01BQUV4NkIsS0FBSyxFQUFFLGlCQUFUO01BQTRCeTZCLFNBQVMsRUFBRTtJQUF2QyxDQURrQixFQUVsQjtNQUFFejZCLEtBQUssRUFBRSxnQkFBVDtNQUEyQnk2QixTQUFTLEVBQUU7SUFBdEMsQ0FGa0IsRUFHbEI7TUFBRXo2QixLQUFLLEVBQUUscUJBQVQ7TUFBZ0N5NkIsU0FBUyxFQUFFO0lBQTNDLENBSGtCLENBQXRCO0lBS0EsSUFBSUMsZ0JBQWdCLEdBQUcsQ0FDbkI7TUFBRTE2QixLQUFLLEVBQUUsZ0JBQVQ7TUFBMkJ5NkIsU0FBUyxFQUFFO0lBQXRDLENBRG1CLEVBRW5CO01BQUV6NkIsS0FBSyxFQUFFLGNBQVQ7TUFBeUJ5NkIsU0FBUyxFQUFFO0lBQXBDLENBRm1CLEVBR25CO01BQUV6NkIsS0FBSyxFQUFFLFNBQVQ7TUFBb0J5NkIsU0FBUyxFQUFFO0lBQS9CLENBSG1CLEVBSW5CO01BQUV6NkIsS0FBSyxFQUFFLG1CQUFUO01BQThCeTZCLFNBQVMsRUFBRTtJQUF6QyxDQUptQixFQUtuQjtNQUFFejZCLEtBQUssRUFBRSxvQkFBVDtNQUErQnk2QixTQUFTLEVBQUU7SUFBMUMsQ0FMbUIsQ0FBdkI7SUFPQSxJQUFJRSxXQUFXLEdBQUcsQ0FBQyxHQUFHMy9CLEtBQUssQ0FBQ2MsR0FBVixFQUFlLENBQWYsQ0FBbEI7SUFDQSxJQUFJOCtCLGVBQWUsR0FBRyxDQUFDLEdBQUc1L0IsS0FBSyxDQUFDYyxHQUFWLEVBQWUsS0FBZixDQUF0QjtJQUNBLElBQUk2TixNQUFNLEdBQUcsQ0FBQyxHQUFHM08sS0FBSyxDQUFDYyxHQUFWLEVBQWU7TUFBRSsrQixPQUFPLEVBQUUsRUFBWDtNQUFlQyxJQUFJLEVBQUU7SUFBckIsQ0FBZixDQUFiO0lBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsR0FBRy8vQixLQUFLLENBQUNjLEdBQVYsRUFBZTtNQUFFa0UsS0FBSyxFQUFFLEVBQVQ7TUFBYXk2QixTQUFTLEVBQUU7SUFBeEIsQ0FBZixDQUFsQjtJQUNBLElBQUlPLFdBQVcsR0FBRyxDQUFDO01BQUVoN0IsS0FBSyxFQUFFLE1BQVQ7TUFBaUJ5NkIsU0FBUyxFQUFFO0lBQTVCLENBQUQsQ0FBbEI7SUFDQSxJQUFJUSxXQUFXLEdBQUcsQ0FBQyxHQUFHamdDLEtBQUssQ0FBQ2MsR0FBVixFQUFlO01BQzdCa0UsS0FBSyxFQUFFLGdCQURzQjtNQUU3Qnk2QixTQUFTLEVBQUU7SUFGa0IsQ0FBZixDQUFsQjtJQUlBLElBQUlTLGNBQWMsR0FBRyxDQUFDLEdBQUdsZ0MsS0FBSyxDQUFDYyxHQUFWLEVBQWU0K0IsZ0JBQWYsQ0FBckI7SUFDQSxJQUFJMW5CLEtBQUssR0FBRyxDQUFDLEdBQUdoWSxLQUFLLENBQUNjLEdBQVYsRUFBZSxDQUFDb0csRUFBRSxHQUFHZzVCLGNBQWMsQ0FBQ3JnQyxLQUFmLENBQXFCLENBQXJCLENBQU4sTUFBbUMsSUFBbkMsSUFBMkNxSCxFQUFFLEtBQUssS0FBSyxDQUF2RCxHQUEyRCxLQUFLLENBQWhFLEdBQW9FQSxFQUFFLENBQUNsQyxLQUF0RixDQUFaO0lBQ0EsQ0FBQyxHQUFHaEYsS0FBSyxDQUFDZ0IsU0FBVixFQUFxQixZQUFZO01BQzdCbS9CLGNBQWMsQ0FBQ0QsY0FBYyxDQUFDcmdDLEtBQWYsQ0FBcUIsQ0FBckIsQ0FBRCxDQUFkO0lBQ0gsQ0FGRDs7SUFHQSxJQUFJdWdDLFNBQVMsR0FBRyxTQUFaQSxTQUFZLEdBQVk7TUFDeEJELGNBQWMsQ0FBQ0YsV0FBVyxDQUFDcGdDLEtBQWIsRUFBb0IsS0FBcEIsQ0FBZDtJQUNILENBRkQ7O0lBR0EsSUFBSXdnQyxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQW9CLENBQVV0bEIsSUFBVixFQUFnQjtNQUNwQzRrQixXQUFXLENBQUM5L0IsS0FBWixHQUFvQmtiLElBQXBCO01BQ0E2a0IsZUFBZSxDQUFDLy9CLEtBQWhCLEdBQXdCLEtBQXhCO01BQ0FzZ0MsY0FBYyxDQUFDRixXQUFXLENBQUNwZ0MsS0FBYixFQUFvQixLQUFwQixDQUFkO0lBQ0gsQ0FKRDs7SUFLQSxDQUFDLEdBQUdHLEtBQUssQ0FBQzhJLEtBQVYsRUFBaUIsWUFBWTtNQUFFLE9BQU82RixNQUFNLENBQUM5TyxLQUFkO0lBQXNCLENBQXJELEVBQXVELFlBQVk7TUFDL0QrL0IsZUFBZSxDQUFDLy9CLEtBQWhCLEdBQXdCLElBQXhCO01BQ0E4L0IsV0FBVyxDQUFDOS9CLEtBQVosR0FBb0IsQ0FBcEI7SUFDSCxDQUhELEVBR0c7TUFBRWtRLElBQUksRUFBRTtJQUFSLENBSEg7SUFJQSxDQUFDLEdBQUcvUCxLQUFLLENBQUM4SSxLQUFWLEVBQWlCLFlBQVk7TUFBRSxPQUFPdEMsS0FBSyxDQUFDbUssV0FBYjtJQUEyQixDQUExRCxFQUE0RCxVQUFVOVEsS0FBVixFQUFpQjtNQUN6RSxJQUFJWSxFQUFKLEVBQVF5RyxFQUFSOztNQUNBeTRCLFdBQVcsQ0FBQzkvQixLQUFaLEdBQW9CLENBQXBCOztNQUNBLElBQUlBLEtBQUssS0FBSyxVQUFkLEVBQTBCO1FBQ3RCb2dDLFdBQVcsQ0FBQ3BnQyxLQUFaLEdBQW9CO1VBQUVtRixLQUFLLEVBQUUsaUJBQVQ7VUFBNEJ5NkIsU0FBUyxFQUFFO1FBQXZDLENBQXBCO1FBQ0FTLGNBQWMsQ0FBQ3JnQyxLQUFmLEdBQXVCMi9CLGVBQXZCO01BQ0gsQ0FIRCxNQUlLLElBQUkzL0IsS0FBSyxLQUFLLFdBQWQsRUFBMkI7UUFDNUJvZ0MsV0FBVyxDQUFDcGdDLEtBQVosR0FBb0I7VUFDaEJtRixLQUFLLEVBQUUsZ0JBRFM7VUFFaEJ5NkIsU0FBUyxFQUFFO1FBRkssQ0FBcEI7UUFJQVMsY0FBYyxDQUFDcmdDLEtBQWYsR0FBdUI2L0IsZ0JBQXZCO01BQ0gsQ0FOSSxNQU9BO1FBQ0RRLGNBQWMsQ0FBQ3JnQyxLQUFmLEdBQXVCbWdDLFdBQXZCO1FBQ0FDLFdBQVcsQ0FBQ3BnQyxLQUFaLEdBQW9CO1VBQ2hCbUYsS0FBSyxFQUFFLE1BRFM7VUFFaEJ5NkIsU0FBUyxFQUFFO1FBRkssQ0FBcEI7TUFJSDs7TUFDRFUsY0FBYyxDQUFDRCxjQUFjLENBQUNyZ0MsS0FBZixDQUFxQixDQUFyQixDQUFELENBQWQ7TUFDQXlnQyxXQUFXLENBQUN6Z0MsS0FBWixHQUFvQixDQUFDWSxFQUFFLEdBQUd5L0IsY0FBYyxDQUFDcmdDLEtBQWYsQ0FBcUIsQ0FBckIsQ0FBTixNQUFtQyxJQUFuQyxJQUEyQ1ksRUFBRSxLQUFLLEtBQUssQ0FBdkQsR0FBMkQsS0FBSyxDQUFoRSxHQUFvRUEsRUFBRSxDQUFDdUUsS0FBM0Y7TUFDQWdULEtBQUssQ0FBQ25ZLEtBQU4sR0FBYyxDQUFDcUgsRUFBRSxHQUFHZzVCLGNBQWMsQ0FBQ3JnQyxLQUFmLENBQXFCLENBQXJCLENBQU4sTUFBbUMsSUFBbkMsSUFBMkNxSCxFQUFFLEtBQUssS0FBSyxDQUF2RCxHQUEyRCxLQUFLLENBQWhFLEdBQW9FQSxFQUFFLENBQUNsQyxLQUFyRjtJQUNILENBeEJEO0lBeUJBLElBQUltVSxtQkFBbUIsR0FBRyxDQUFDLEdBQUduWixLQUFLLENBQUNzRCxRQUFWLEVBQW9CLFlBQVk7TUFDdEQsSUFBSTdDLEVBQUosRUFBUXlHLEVBQVI7O01BQ0EsT0FBUVYsS0FBSyxDQUFDODRCLFNBQU4sQ0FBZ0JyNUIsTUFBaEIsS0FBMkIsQ0FBM0IsSUFDSCxFQUFFK1IsS0FBSyxDQUFDblksS0FBTixLQUFnQixtQkFBaEIsSUFDQ21ZLEtBQUssQ0FBQ25ZLEtBQU4sS0FBZ0Isb0JBRG5CLEtBRUcsQ0FBQyxDQUFDcUgsRUFBRSxHQUFHLENBQUN6RyxFQUFFLEdBQUcrRixLQUFLLENBQUM4NEIsU0FBWixNQUEyQixJQUEzQixJQUFtQzcrQixFQUFFLEtBQUssS0FBSyxDQUEvQyxHQUFtRCxLQUFLLENBQXhELEdBQTREQSxFQUFFLENBQUM0QixJQUFyRSxNQUErRSxJQUEvRSxJQUF1RjZFLEVBQUUsS0FBSyxLQUFLLENBQW5HLEdBQXVHLEtBQUssQ0FBNUcsR0FBZ0hBLEVBQUUsQ0FBQ2pCLE1BQXBILE1BQWdJLENBSHhJO0lBSUgsQ0FOeUIsQ0FBMUI7SUFPQSxJQUFJcTZCLFdBQVcsR0FBRyxDQUFDLEdBQUd0Z0MsS0FBSyxDQUFDYyxHQUFWLEVBQWUsQ0FBQ21JLEVBQUUsR0FBR2kzQixjQUFjLENBQUNyZ0MsS0FBZixDQUFxQixDQUFyQixDQUFOLE1BQW1DLElBQW5DLElBQTJDb0osRUFBRSxLQUFLLEtBQUssQ0FBdkQsR0FBMkQsS0FBSyxDQUFoRSxHQUFvRUEsRUFBRSxDQUFDakUsS0FBdEYsQ0FBbEI7O0lBQ0EsSUFBSXU3QixrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQXFCLENBQVV4bEIsSUFBVixFQUFnQnBRLEdBQWhCLEVBQXFCOUssS0FBckIsRUFBNEI7TUFDakQsSUFBSSxDQUFDLENBQUMyRyxLQUFLLENBQUMyTyxTQUFSLElBQXFCLENBQUMsQ0FBQzNPLEtBQUssQ0FBQzRPLE9BQWpDLEVBQTBDO1FBQ3RDM1MsTUFBTSxDQUFDOEgsUUFBUCxDQUFnQi9ILElBQWhCLEdBQXVCLElBQUlmLE1BQUosQ0FBV3NaLElBQVgsRUFBaUIsR0FBakIsRUFBc0J0WixNQUF0QixDQUE2QmtKLEdBQTdCLEVBQWtDLEdBQWxDLEVBQXVDbEosTUFBdkMsQ0FBOEM1QixLQUE5QyxDQUF2QjtRQUNBO01BQ0g7O01BQ0Q0QyxNQUFNLENBQUM4SCxRQUFQLENBQWdCL0gsSUFBaEIsR0FBdUIsSUFBSWYsTUFBSixDQUFXc1osSUFBWCxFQUFpQixHQUFqQixFQUFzQnRaLE1BQXRCLENBQTZCa0osR0FBN0IsRUFBa0MsR0FBbEMsRUFBdUNsSixNQUF2QyxDQUE4QzVCLEtBQTlDLENBQXZCO0lBQ0gsQ0FORDs7SUFPQSxJQUFJc2dDLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsQ0FBVTltQixJQUFWLEVBQWdCbW5CLFNBQWhCLEVBQTJCO01BQzVDLElBQUlBLFNBQVMsS0FBSyxLQUFLLENBQXZCLEVBQTBCO1FBQUVBLFNBQVMsR0FBRyxJQUFaO01BQW1COztNQUMvQ0YsV0FBVyxDQUFDemdDLEtBQVosR0FBb0J3WixJQUFJLEtBQUssSUFBVCxJQUFpQkEsSUFBSSxLQUFLLEtBQUssQ0FBL0IsR0FBbUMsS0FBSyxDQUF4QyxHQUE0Q0EsSUFBSSxDQUFDclUsS0FBckU7TUFDQWdULEtBQUssQ0FBQ25ZLEtBQU4sR0FBY3daLElBQUksS0FBSyxJQUFULElBQWlCQSxJQUFJLEtBQUssS0FBSyxDQUEvQixHQUFtQyxLQUFLLENBQXhDLEdBQTRDQSxJQUFJLENBQUNyVSxLQUEvRDtNQUNBKzZCLFdBQVcsQ0FBQ2xnQyxLQUFaLEdBQW9Cd1osSUFBcEI7TUFDQXRNLElBQUksQ0FBQyxVQUFELEVBQWFzTSxJQUFiLEVBQW1CMUssTUFBbkIsRUFBMkJneEIsV0FBVyxDQUFDOS9CLEtBQXZDLEVBQThDMmdDLFNBQTlDLENBQUo7TUFDQVosZUFBZSxDQUFDLy9CLEtBQWhCLEdBQXdCLEtBQXhCO0lBQ0gsQ0FQRDs7SUFRQSxJQUFJNGdDLFVBQVUsR0FBRyxTQUFiQSxVQUFhLENBQVVDLEtBQVYsRUFBaUI7TUFDOUIveEIsTUFBTSxDQUFDOU8sS0FBUCxDQUFhaWdDLElBQWIsS0FBc0IsS0FBdEIsR0FDT254QixNQUFNLENBQUM5TyxLQUFQLENBQWFpZ0MsSUFBYixHQUFvQixNQUQzQixHQUVPbnhCLE1BQU0sQ0FBQzlPLEtBQVAsQ0FBYWlnQyxJQUFiLEdBQW9CLEtBRjNCO01BR0FueEIsTUFBTSxDQUFDOU8sS0FBUCxDQUFhZ2dDLE9BQWIsR0FBdUJhLEtBQXZCO01BQ0FOLFNBQVM7SUFDWixDQU5EOztJQU9BLElBQUlPLFlBQVksR0FBRyxDQUFDLEdBQUczZ0MsS0FBSyxDQUFDd0QsTUFBVixFQUFrQixjQUFsQixDQUFuQjtJQUNBLElBQUlvOUIsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHNWdDLEtBQUssQ0FBQ3dELE1BQVYsRUFBa0Isa0JBQWxCLENBQXZCO0lBQ0EsSUFBSXE5QixlQUFlLEdBQUcsQ0FBQyxHQUFHN2dDLEtBQUssQ0FBQ3dELE1BQVYsRUFBa0IsaUJBQWxCLENBQXRCO0lBQ0EsSUFBSUMsWUFBWSxHQUFHO01BQUUrQyxLQUFLLEVBQUVBLEtBQVQ7TUFBZ0J1RyxJQUFJLEVBQUVBLElBQXRCO01BQTRCeXlCLGVBQWUsRUFBRUEsZUFBN0M7TUFBOERFLGdCQUFnQixFQUFFQSxnQkFBaEY7TUFBa0dDLFdBQVcsRUFBRUEsV0FBL0c7TUFBNEhDLGVBQWUsRUFBRUEsZUFBN0k7TUFBOEpqeEIsTUFBTSxFQUFFQSxNQUF0SztNQUE4S294QixXQUFXLEVBQUVBLFdBQTNMO01BQXdNQyxXQUFXLEVBQUVBLFdBQXJOO01BQWtPQyxXQUFXLEVBQUVBLFdBQS9PO01BQTRQQyxjQUFjLEVBQUVBLGNBQTVRO01BQTRSbG9CLEtBQUssRUFBRUEsS0FBblM7TUFBMFNvb0IsU0FBUyxFQUFFQSxTQUFyVDtNQUFnVUMsaUJBQWlCLEVBQUVBLGlCQUFuVjtNQUFzV2xuQixtQkFBbUIsRUFBRUEsbUJBQTNYO01BQWdabW5CLFdBQVcsRUFBRUEsV0FBN1o7TUFBMGFDLGtCQUFrQixFQUFFQSxrQkFBOWI7TUFBa2RKLGNBQWMsRUFBRUEsY0FBbGU7TUFBa2ZNLFVBQVUsRUFBRUEsVUFBOWY7TUFBMGdCRSxZQUFZLEVBQUVBLFlBQXhoQjtNQUFzaUJDLGdCQUFnQixFQUFFQSxnQkFBeGpCO01BQTBrQkMsZUFBZSxFQUFFQSxlQUEzbEI7TUFBNG1CN1YsVUFBVSxFQUFFUCxxQkFBcUIsV0FBN29CO01BQXVwQnFXLFlBQVksRUFBRWowQixPQUFPLENBQUNpMEIsWUFBN3FCO01BQTJyQkMsb0JBQW9CLEVBQUUxQiwwQkFBMEI7SUFBM3VCLENBQW5CO0lBQ0EzL0IsTUFBTSxDQUFDQyxjQUFQLENBQXNCOEQsWUFBdEIsRUFBb0MsaUJBQXBDLEVBQXVEO01BQUVHLFVBQVUsRUFBRSxLQUFkO01BQXFCL0QsS0FBSyxFQUFFO0lBQTVCLENBQXZEO0lBQ0EsT0FBTzRELFlBQVA7RUFDSDtBQXJJd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDVmE7O0FBQ2IsSUFBSWxFLGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlpaEMsMkJBQTJCLEdBQUd6aEMsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLG9HQUFELENBQVIsQ0FBakQ7O0FBQ0EsSUFBSWtoQywwQkFBMEIsR0FBRzFoQyxlQUFlLENBQUNRLG1CQUFPLENBQUMsa0dBQUQsQ0FBUixDQUFoRDs7QUFDQSxJQUFJbWhDLHFCQUFxQixHQUFHM2hDLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0RkFBRCxDQUFSLENBQTNDOztBQUNBLElBQUlDLEtBQUssR0FBR0QsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJd1kscUJBQXFCLEdBQUdoWixlQUFlLENBQUNRLG1CQUFPLENBQUMsNEZBQUQsQ0FBUixDQUEzQzs7QUFDQSxJQUFJSSxPQUFPLEdBQUdaLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0Q0FBRCxDQUFSLENBQTdCOztBQUNBLElBQUl3USxRQUFRLEdBQUdoUixlQUFlLENBQUNRLG1CQUFPLENBQUMsK0NBQUQsQ0FBUixDQUE5Qjs7QUFDQSxJQUFJOE0sT0FBTyxHQUFHOU0sbUJBQU8sQ0FBQyxtRUFBRCxDQUFyQjs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNDLE1BQU0sRUFBRSxlQURpQztFQUV6Q2tHLEtBQUssRUFBRTtJQUNIMjZCLFdBQVcsRUFBRTtNQUNUejZCLElBQUksRUFBRWhILE1BREc7TUFFVGlILFFBQVEsRUFBRTtJQUZEO0VBRFYsQ0FGa0M7RUFRekNwRyxLQUFLLEVBQUUsZUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUI7SUFDMUIsSUFBSUMsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQ0FBLE1BQU07SUFDTixJQUFJOEYsS0FBSyxHQUFHaEcsT0FBWjtJQUNBLElBQUk0Z0MsVUFBVSxHQUFHLENBQUMsR0FBR3BoQyxLQUFLLENBQUNjLEdBQVYsRUFBZTtNQUM1QmtFLEtBQUssRUFBRSxnQkFEcUI7TUFFNUJ5NkIsU0FBUyxFQUFFO0lBRmlCLENBQWYsQ0FBakI7SUFJQSxJQUFJSCxTQUFTLEdBQUcsQ0FBQyxHQUFHdC9CLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEVBQWYsQ0FBaEI7SUFDQSxJQUFJdWdDLFNBQVMsR0FBRyxDQUFDLEdBQUdyaEMsS0FBSyxDQUFDYyxHQUFWLEVBQWUsa0JBQWYsQ0FBaEI7SUFDQSxJQUFJcVUsU0FBUyxHQUFHLENBQUMsR0FBR25WLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEVBQWYsQ0FBaEI7SUFDQSxJQUFJc1UsT0FBTyxHQUFHLENBQUMsR0FBR3BWLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEVBQWYsQ0FBZDtJQUNBLElBQUkrN0IsV0FBVyxHQUFHLENBQUMsR0FBRzc4QixLQUFLLENBQUNjLEdBQVYsRUFBZSxFQUFmLENBQWxCO0lBQ0EsSUFBSXdnQyxVQUFVLEdBQUcsQ0FBQyxHQUFHdGhDLEtBQUssQ0FBQ2MsR0FBVixFQUFlLENBQWYsQ0FBakI7SUFDQSxJQUFJKy9CLGVBQWUsR0FBRyxDQUFDLEdBQUc3Z0MsS0FBSyxDQUFDYyxHQUFWLEVBQWUsS0FBZixDQUF0QjtJQUNBLElBQUk4N0IsZUFBZSxHQUFHLENBQUMsR0FBRzU4QixLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQXRCO0lBQ0EsSUFBSXFRLFFBQVEsR0FBRyxDQUFDLEdBQUduUixLQUFLLENBQUNjLEdBQVYsRUFBZSxFQUFmLENBQWY7SUFDQSxJQUFJNFAsU0FBUyxHQUFHO01BQ1o2d0IsU0FBUyxFQUFFLGtCQURDO01BRVo5bEIsUUFBUSxFQUFFLG9CQUZFO01BR1poVixJQUFJLEVBQUU7SUFITSxDQUFoQjtJQUtBLElBQUlrSyxXQUFXLEdBQUcsQ0FBQyxHQUFHM1EsS0FBSyxDQUFDYyxHQUFWLEVBQWUsV0FBZixDQUFsQjtJQUNBLElBQUk2L0IsWUFBWSxHQUFHLENBQUMsR0FBRzNnQyxLQUFLLENBQUNjLEdBQVYsR0FBbkI7SUFDQSxJQUFJOC9CLGdCQUFnQixHQUFHLENBQUMsR0FBRzVnQyxLQUFLLENBQUNjLEdBQVYsR0FBdkI7O0lBQ0EsSUFBSTBnQyxvQkFBb0IsR0FBRyxTQUF2QkEsb0JBQXVCLENBQVVub0IsSUFBVixFQUFnQjFLLE1BQWhCLEVBQXdCb00sSUFBeEIsRUFBOEJ5bEIsU0FBOUIsRUFBeUM7TUFDaEUsSUFBSUEsU0FBUyxLQUFLLEtBQUssQ0FBdkIsRUFBMEI7UUFBRUEsU0FBUyxHQUFHLElBQVo7TUFBbUI7O01BQy9DLElBQUlBLFNBQUosRUFBZTtRQUNYN3hCLE1BQU0sQ0FBQzlPLEtBQVAsQ0FBYWdnQyxPQUFiLEdBQXVCLEVBQXZCO1FBQ0FseEIsTUFBTSxDQUFDOU8sS0FBUCxDQUFhaWdDLElBQWIsR0FBb0IsRUFBcEI7TUFDSDs7TUFDRHNCLFVBQVUsQ0FBQ3ZoQyxLQUFYLEdBQW1Cd1osSUFBbkI7TUFDQThtQixjQUFjLENBQUN4eEIsTUFBTSxDQUFDOU8sS0FBUixFQUFla2IsSUFBZixDQUFkO0lBQ0gsQ0FSRDs7SUFTQSxDQUFDLEdBQUcvYSxLQUFLLENBQUNnQixTQUFWLEVBQXFCLFlBQVk7TUFDN0J5Z0MsZ0JBQWdCLENBQUMsRUFBRCxFQUFLLEVBQUwsQ0FBaEI7TUFDQXRCLGNBQWM7TUFDZHVCLGNBQWM7SUFDakIsQ0FKRCxFQWxDMEIsQ0F1QzFCOztJQUNBLElBQUlDLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsR0FBWTtNQUM3QixJQUFJbEYsTUFBTSxHQUFHLElBQUloeEIsZUFBSixFQUFiOztNQUNBLElBQUkwSixTQUFTLENBQUN0VixLQUFWLElBQW1CdVYsT0FBTyxDQUFDdlYsS0FBL0IsRUFBc0M7UUFDbEM0OEIsTUFBTSxDQUFDbUYsTUFBUCxDQUFjLFlBQWQsRUFBNEJ6c0IsU0FBUyxDQUFDdFYsS0FBdEM7UUFDQTQ4QixNQUFNLENBQUNtRixNQUFQLENBQWMsVUFBZCxFQUEwQnhzQixPQUFPLENBQUN2VixLQUFsQztNQUNIOztNQUNETSxPQUFPLFdBQVAsQ0FDSytDLEdBREwsQ0FDUyxjQUFjekIsTUFBZCxDQUFxQmtQLFdBQVcsQ0FBQzlRLEtBQWpDLEVBQXdDLFdBQXhDLENBRFQsRUFDK0Q7UUFBRTQ4QixNQUFNLEVBQUVBO01BQVYsQ0FEL0QsRUFFSzE2QixJQUZMLENBRVUsVUFBVUMsR0FBVixFQUFlO1FBQ3JCLElBQUl5TCxRQUFRLEdBQUd6TCxHQUFHLENBQUNLLElBQW5CO1FBQ0EsSUFBSUYsSUFBSSxHQUFHLElBQUlDLElBQUosQ0FBUyxDQUFDcUwsUUFBRCxDQUFULEVBQXFCO1VBQzVCL0csSUFBSSxFQUFFO1FBRHNCLENBQXJCLENBQVg7UUFHQSxJQUFJcEUsSUFBSSxHQUFHcEIsUUFBUSxDQUFDcUIsYUFBVCxDQUF1QixHQUF2QixDQUFYO1FBQ0FELElBQUksQ0FBQ0UsSUFBTCxHQUFZQyxNQUFNLENBQUNDLEdBQVAsQ0FBV0MsZUFBWCxDQUEyQlIsSUFBM0IsQ0FBWjtRQUNBRyxJQUFJLENBQUNnMUIsUUFBTCxHQUFnQixHQUFHNzFCLE1BQUgsQ0FBVWtQLFdBQVcsQ0FBQzlRLEtBQXRCLEVBQTZCLGFBQTdCLENBQWhCO1FBQ0F5QyxJQUFJLENBQUNTLEtBQUw7TUFDSCxDQVhEO0lBWUgsQ0FsQkQ7O0lBbUJBLElBQUk4K0Isa0JBQWtCLEdBQUcsU0FBckJBLGtCQUFxQixDQUFVQyxTQUFWLEVBQXFCO01BQzFDLEtBQUssSUFBSS90QixJQUFULElBQWlCK3RCLFNBQWpCLEVBQTRCO1FBQ3hCLElBQUl6L0IsSUFBSSxHQUFHO1VBQ1AwL0IsQ0FBQyxFQUFFLENBQUMsR0FBR3h4QixRQUFRLFdBQVosRUFBc0J3RCxJQUF0QixFQUE0Qm5DLE1BQTVCLENBQW1DLGFBQW5DLENBREk7VUFFUHRNLENBQUMsRUFBRXc4QixTQUFTLENBQUMvdEIsSUFBRDtRQUZMLENBQVg7UUFJQThvQixXQUFXLENBQUNoOUIsS0FBWixDQUFrQnFHLElBQWxCLENBQXVCN0QsSUFBdkI7TUFDSDtJQUNKLENBUkQ7O0lBU0EsSUFBSXEvQixjQUFjLEdBQUcsU0FBakJBLGNBQWlCLEdBQVk7TUFDN0I5RSxlQUFlLENBQUMvOEIsS0FBaEIsR0FBd0IsSUFBeEI7TUFDQSxJQUFJNDhCLE1BQU0sR0FBRyxJQUFJaHhCLGVBQUosRUFBYjtNQUNBZ3hCLE1BQU0sQ0FBQ21GLE1BQVAsQ0FBYyxZQUFkLEVBQTRCenNCLFNBQVMsQ0FBQ3RWLEtBQXRDO01BQ0E0OEIsTUFBTSxDQUFDbUYsTUFBUCxDQUFjLFVBQWQsRUFBMEJ4c0IsT0FBTyxDQUFDdlYsS0FBbEM7TUFDQU0sT0FBTyxXQUFQLENBQ0srQyxHQURMLENBQ1MsY0FBY3pCLE1BQWQsQ0FBcUJrUCxXQUFXLENBQUM5USxLQUFqQyxFQUF3QyxTQUF4QyxDQURULEVBQzZEO1FBQUU0OEIsTUFBTSxFQUFFQTtNQUFWLENBRDdELEVBRUsxNkIsSUFGTCxDQUVVLFVBQVVDLEdBQVYsRUFBZTtRQUNyQjY2QixXQUFXLENBQUNoOUIsS0FBWixDQUFrQm9HLE1BQWxCLEdBQTJCLENBQTNCO1FBQ0FxN0IsVUFBVSxDQUFDemhDLEtBQVgsR0FBbUJtQyxHQUFHLENBQUNLLElBQUosQ0FBU0EsSUFBVCxDQUFjLE9BQWQsQ0FBbkI7UUFDQXcvQixrQkFBa0IsQ0FBQzcvQixHQUFHLENBQUNLLElBQUosQ0FBU0EsSUFBVCxDQUFjLE9BQWQsQ0FBRCxDQUFsQjtNQUNILENBTkQsYUFPYSxZQUFZO1FBQ3JCdTZCLGVBQWUsQ0FBQy84QixLQUFoQixHQUF3QixLQUF4QjtNQUNILENBVEQ7SUFVSCxDQWZEOztJQWdCQSxJQUFJNGhDLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBbUIsQ0FBVU8sS0FBVixFQUFpQkMsR0FBakIsRUFBc0J2N0IsSUFBdEIsRUFBNEI7TUFDL0MsSUFBSUEsSUFBSSxLQUFLLEtBQUssQ0FBbEIsRUFBcUI7UUFBRUEsSUFBSSxHQUFHLEVBQVA7TUFBWTs7TUFDbkN5TyxTQUFTLENBQUN0VixLQUFWLEdBQWtCLEVBQWxCO01BQ0FzUixRQUFRLENBQUN0UixLQUFULEdBQWlCNkcsSUFBakI7O01BQ0EsSUFBSXM3QixLQUFLLElBQUksWUFBYixFQUEyQjtRQUN2QjdzQixTQUFTLENBQUN0VixLQUFWLEdBQWtCbWlDLEtBQWxCO01BQ0g7O01BQ0Q1c0IsT0FBTyxDQUFDdlYsS0FBUixHQUFnQm9pQyxHQUFoQjs7TUFDQSxJQUFJdHhCLFdBQVcsQ0FBQzlRLEtBQVosS0FBc0IsTUFBMUIsRUFBa0M7UUFDOUJzZ0MsY0FBYztNQUNqQjs7TUFDRHVCLGNBQWM7SUFDakIsQ0FaRDs7SUFhQSxDQUFDLEdBQUcxaEMsS0FBSyxDQUFDOEksS0FBVixFQUFpQixZQUFZO01BQUUsT0FBTzZILFdBQVcsQ0FBQzlRLEtBQW5CO0lBQTJCLENBQTFELEVBQTRELFlBQVk7TUFDcEUsSUFBSVksRUFBSjs7TUFDQTRnQyxTQUFTLENBQUN4aEMsS0FBVixHQUFrQixDQUFDWSxFQUFFLEdBQUdpUSxTQUFTLENBQUNDLFdBQVcsQ0FBQzlRLEtBQWIsQ0FBZixNQUF3QyxJQUF4QyxJQUFnRFksRUFBRSxLQUFLLEtBQUssQ0FBNUQsR0FBZ0VBLEVBQWhFLEdBQXFFa1EsV0FBVyxDQUFDOVEsS0FBbkc7TUFDQXNWLFNBQVMsQ0FBQ3RWLEtBQVYsR0FBa0IsRUFBbEI7TUFDQXVWLE9BQU8sQ0FBQ3ZWLEtBQVIsR0FBZ0IsRUFBaEI7TUFDQTZoQyxjQUFjO0lBQ2pCLENBTkQ7O0lBT0EsSUFBSXZCLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsQ0FBVXh4QixNQUFWLEVBQWtCb00sSUFBbEIsRUFBd0I7TUFDekMsSUFBSXBNLE1BQU0sS0FBSyxLQUFLLENBQXBCLEVBQXVCO1FBQUVBLE1BQU0sR0FBRztVQUFFa3hCLE9BQU8sRUFBRSxFQUFYO1VBQWVDLElBQUksRUFBRTtRQUFyQixDQUFUO01BQXFDOztNQUM5RCxJQUFJL2tCLElBQUksS0FBSyxLQUFLLENBQWxCLEVBQXFCO1FBQUVBLElBQUksR0FBRyxHQUFQO01BQWE7O01BQ3BDOGxCLGVBQWUsQ0FBQ2hoQyxLQUFoQixHQUF3QixJQUF4QjtNQUNBLElBQUk0OEIsTUFBTSxHQUFHLElBQUloeEIsZUFBSixFQUFiO01BQ0EsSUFBSXkyQixTQUFTLEdBQUdkLFVBQVUsQ0FBQ3ZoQyxLQUFYLENBQWlCLFdBQWpCLENBQWhCOztNQUNBLElBQUk4TyxNQUFNLENBQUNreEIsT0FBWCxFQUFvQjtRQUNoQnBELE1BQU0sQ0FBQ21GLE1BQVAsQ0FBYyxTQUFkLEVBQXlCLENBQUMsR0FBRy8wQixPQUFPLENBQUNzMUIsb0JBQVosRUFBa0N4ekIsTUFBTSxDQUFDa3hCLE9BQXpDLENBQXpCO01BQ0g7O01BQ0RwRCxNQUFNLENBQUNtRixNQUFQLENBQWMsTUFBZCxFQUFzQjdtQixJQUF0Qjs7TUFDQSxJQUFJcE0sTUFBTSxDQUFDbXhCLElBQVgsRUFBaUI7UUFDYnJELE1BQU0sQ0FBQ21GLE1BQVAsQ0FBYyxXQUFkLEVBQTJCanpCLE1BQU0sQ0FBQ214QixJQUFsQztNQUNIOztNQUNELElBQUkzcUIsU0FBUyxDQUFDdFYsS0FBVixJQUFtQnVWLE9BQU8sQ0FBQ3ZWLEtBQTNCLElBQW9DdWhDLFVBQVUsQ0FBQ3ZoQyxLQUFYLENBQWlCbUYsS0FBakIsS0FBMkIsTUFBbkUsRUFBMkU7UUFDdkV5M0IsTUFBTSxDQUFDbUYsTUFBUCxDQUFjLFlBQWQsRUFBNEJ6c0IsU0FBUyxDQUFDdFYsS0FBdEM7UUFDQTQ4QixNQUFNLENBQUNtRixNQUFQLENBQWMsVUFBZCxFQUEwQnhzQixPQUFPLENBQUN2VixLQUFsQztNQUNIOztNQUNELElBQUkyQixNQUFNLEdBQUcsY0FBY0MsTUFBZCxDQUFxQmtQLFdBQVcsQ0FBQzlRLEtBQWpDLEVBQXdDLEdBQXhDLEVBQTZDNEIsTUFBN0MsQ0FBb0R5Z0MsU0FBcEQsQ0FBYjtNQUNBL2hDLE9BQU8sV0FBUCxDQUNLK0MsR0FETCxDQUNTMUIsTUFEVCxFQUNpQjtRQUFFaTdCLE1BQU0sRUFBRUE7TUFBVixDQURqQixFQUVLMTZCLElBRkwsQ0FFVSxVQUFVQyxHQUFWLEVBQWU7UUFDckIsSUFBSXZCLEVBQUosRUFBUXlHLEVBQVIsRUFBWStCLEVBQVosRUFBZ0J5TSxFQUFoQjs7UUFDQSxJQUFJakksUUFBUSxHQUFHekwsR0FBRyxDQUFDSyxJQUFuQjs7UUFDQSxJQUFJc08sV0FBVyxDQUFDOVEsS0FBWixLQUFzQixXQUExQixFQUF1QztVQUNuQyxJQUFJcWlDLFNBQVMsS0FBSyxPQUFkLElBQXlCQSxTQUFTLEtBQUssbUJBQTNDLEVBQWdFO1lBQzVENUMsU0FBUyxDQUFDei9CLEtBQVYsR0FBa0IsRUFBbEI7WUFDQSxJQUFJb2tCLFFBQVEsR0FBRyxFQUFmO1lBQ0EsSUFBSW1lLFFBQVEsR0FBRyxDQUFDM2hDLEVBQUUsR0FBR2dOLFFBQVEsQ0FBQ3BMLElBQWYsTUFBeUIsSUFBekIsSUFBaUM1QixFQUFFLEtBQUssS0FBSyxDQUE3QyxHQUFpRCxLQUFLLENBQXRELEdBQTBEQSxFQUFFLENBQUMyaEMsUUFBNUU7WUFDQSxJQUFJQyxZQUFZLEdBQUcsQ0FBQ3A1QixFQUFFLEdBQUcsQ0FBQy9CLEVBQUUsR0FBR3VHLFFBQVEsQ0FBQ3BMLElBQWYsTUFBeUIsSUFBekIsSUFBaUM2RSxFQUFFLEtBQUssS0FBSyxDQUE3QyxHQUFpRCxLQUFLLENBQXRELEdBQTBEQSxFQUFFLENBQUNvN0IsYUFBSCxDQUFpQmpnQyxJQUFqQixDQUFzQjRELE1BQXRGLE1BQWtHLElBQWxHLElBQTBHZ0QsRUFBRSxLQUFLLEtBQUssQ0FBdEgsR0FBMEhBLEVBQTFILEdBQStILENBQWxKOztZQUNBLEtBQUssSUFBSWtHLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdrekIsWUFBcEIsRUFBa0NsekIsQ0FBQyxFQUFuQyxFQUF1QztjQUNuQyxJQUFJb3pCLG1CQUFtQixHQUFHLENBQUM3c0IsRUFBRSxHQUFHakksUUFBUSxDQUFDcEwsSUFBZixNQUF5QixJQUF6QixJQUFpQ3FULEVBQUUsS0FBSyxLQUFLLENBQTdDLEdBQWlELEtBQUssQ0FBdEQsR0FBMERBLEVBQUUsQ0FBQzRzQixhQUFILENBQWlCamdDLElBQWpCLENBQXNCOE0sQ0FBdEIsQ0FBcEY7Y0FDQSxJQUFJcXpCLGdCQUFnQixHQUFHRCxtQkFBbUIsQ0FBQyxDQUFDLEdBQUcxMUIsT0FBTyxDQUFDczFCLG9CQUFaLEVBQWtDRCxTQUFsQyxDQUFELENBQTFDO2NBQ0FqZSxRQUFRLENBQUMvZCxJQUFULENBQWM7Z0JBQ1ZsQixLQUFLLEVBQUVvOUIsUUFBUSxDQUFDSSxnQkFBRCxDQURMO2dCQUVWbDZCLEVBQUUsRUFBRWs2QixnQkFGTTtnQkFHVkMsS0FBSyxFQUFFRixtQkFBbUIsQ0FBQ3J6QjtjQUhqQixDQUFkO1lBS0g7O1lBQ0Rvd0IsU0FBUyxDQUFDei9CLEtBQVYsR0FBa0I0TixRQUFRLENBQUNwTCxJQUEzQjtZQUNBaTlCLFNBQVMsQ0FBQ3ovQixLQUFWLENBQWdCd0MsSUFBaEIsR0FBdUI0aEIsUUFBdkI7VUFDSCxDQWhCRCxNQWlCSyxJQUFJaWUsU0FBUyxLQUFLLG1CQUFsQixFQUF1QztZQUN4Q3RCLGdCQUFnQixDQUFDL2dDLEtBQWpCLEdBQXlCNE4sUUFBUSxDQUFDcEwsSUFBVCxDQUFjQSxJQUF2QztVQUNILENBRkksTUFHQTtZQUNEcytCLFlBQVksQ0FBQzlnQyxLQUFiLEdBQXFCNE4sUUFBUSxDQUFDcEwsSUFBOUI7VUFDSDtRQUNKOztRQUNELElBQUlzTyxXQUFXLENBQUM5USxLQUFaLEtBQXNCLE1BQXRCLElBQWdDOFEsV0FBVyxDQUFDOVEsS0FBWixLQUFzQixVQUExRCxFQUFzRTtVQUNsRXkvQixTQUFTLENBQUN6L0IsS0FBVixHQUFrQjROLFFBQVEsQ0FBQ3BMLElBQTNCO1FBQ0g7TUFDSixDQWpDRCxhQWtDYSxZQUFZO1FBQ3JCdytCLGVBQWUsQ0FBQ2hoQyxLQUFoQixHQUF3QixLQUF4QjtNQUNILENBcENEO0lBcUNILENBdkREOztJQXdEQSxDQUFDLEdBQUdHLEtBQUssQ0FBQ2dxQixPQUFWLEVBQW1CLGNBQW5CLEVBQW1DMlcsWUFBbkM7SUFDQSxDQUFDLEdBQUczZ0MsS0FBSyxDQUFDZ3FCLE9BQVYsRUFBbUIsa0JBQW5CLEVBQXVDNFcsZ0JBQXZDO0lBQ0EsQ0FBQyxHQUFHNWdDLEtBQUssQ0FBQ2dxQixPQUFWLEVBQW1CLGFBQW5CLEVBQWtDNlMsV0FBbEM7SUFDQSxDQUFDLEdBQUc3OEIsS0FBSyxDQUFDZ3FCLE9BQVYsRUFBbUIsWUFBbkIsRUFBaUNzWCxVQUFqQztJQUNBLENBQUMsR0FBR3RoQyxLQUFLLENBQUNncUIsT0FBVixFQUFtQixpQkFBbkIsRUFBc0M2VyxlQUF0QztJQUNBLENBQUMsR0FBRzdnQyxLQUFLLENBQUNncUIsT0FBVixFQUFtQixpQkFBbkIsRUFBc0M0UyxlQUF0QztJQUNBLENBQUMsR0FBRzU4QixLQUFLLENBQUNncUIsT0FBVixFQUFtQixhQUFuQixFQUFrQ3JaLFdBQWxDO0lBQ0EsSUFBSWxOLFlBQVksR0FBRztNQUFFMjlCLFVBQVUsRUFBRUEsVUFBZDtNQUEwQjlCLFNBQVMsRUFBRUEsU0FBckM7TUFBZ0QrQixTQUFTLEVBQUVBLFNBQTNEO01BQXNFbHNCLFNBQVMsRUFBRUEsU0FBakY7TUFBNEZDLE9BQU8sRUFBRUEsT0FBckc7TUFBOEd5bkIsV0FBVyxFQUFFQSxXQUEzSDtNQUF3SXlFLFVBQVUsRUFBRUEsVUFBcEo7TUFBZ0tULGVBQWUsRUFBRUEsZUFBakw7TUFBa01qRSxlQUFlLEVBQUVBLGVBQW5OO01BQW9PenJCLFFBQVEsRUFBRUEsUUFBOU87TUFBd1BULFNBQVMsRUFBRUEsU0FBblE7TUFBOFFDLFdBQVcsRUFBRUEsV0FBM1I7TUFBd1Nnd0IsWUFBWSxFQUFFQSxZQUF0VDtNQUFvVUMsZ0JBQWdCLEVBQUVBLGdCQUF0VjtNQUF3V1ksb0JBQW9CLEVBQUVBLG9CQUE5WDtNQUFvWmg3QixLQUFLLEVBQUVBLEtBQTNaO01BQWthbTdCLGNBQWMsRUFBRUEsY0FBbGI7TUFBa2NFLGtCQUFrQixFQUFFQSxrQkFBdGQ7TUFBMGVILGNBQWMsRUFBRUEsY0FBMWY7TUFBMGdCRCxnQkFBZ0IsRUFBRUEsZ0JBQTVoQjtNQUE4aUJ0QixjQUFjLEVBQUVBLGNBQTlqQjtNQUE4a0J1QyxxQkFBcUIsRUFBRTFCLDJCQUEyQixXQUFob0I7TUFBMG9CMkIsb0JBQW9CLEVBQUUxQiwwQkFBMEIsV0FBMXJCO01BQW9zQjJCLGVBQWUsRUFBRTFCLHFCQUFxQixXQUExdUI7TUFBb3ZCMkIsZUFBZSxFQUFFdHFCLHFCQUFxQjtJQUExeEIsQ0FBbkI7SUFDQTdZLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQjhELFlBQXRCLEVBQW9DLGlCQUFwQyxFQUF1RDtNQUFFRyxVQUFVLEVBQUUsS0FBZDtNQUFxQi9ELEtBQUssRUFBRTtJQUE1QixDQUF2RDtJQUNBLE9BQU80RCxZQUFQO0VBQ0g7QUFsTHdDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ2RhOztBQUNiLElBQUlsRSxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJQyxLQUFLLEdBQUdELG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSStpQyxvQkFBb0IsR0FBR3ZqQyxlQUFlLENBQUNRLG1CQUFPLENBQUMsc0ZBQUQsQ0FBUixDQUExQzs7QUFDQSxJQUFJSSxPQUFPLEdBQUdaLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0Q0FBRCxDQUFSLENBQTdCOztBQUNBLElBQUl3USxRQUFRLEdBQUdoUixlQUFlLENBQUNRLG1CQUFPLENBQUMsK0NBQUQsQ0FBUixDQUE5Qjs7QUFDQSxJQUFJa2Ysb0JBQW9CLEdBQUcxZixlQUFlLENBQUNRLG1CQUFPLENBQUMsNEdBQUQsQ0FBUixDQUExQzs7QUFDQSxJQUFJOE0sT0FBTyxHQUFHOU0sbUJBQU8sQ0FBQyx5RUFBRCxDQUFyQjs7QUFDQSxJQUFJcWEsb0JBQW9CLEdBQUc3YSxlQUFlLENBQUNRLG1CQUFPLENBQUMsMEZBQUQsQ0FBUixDQUExQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNDLE1BQU0sRUFBRSx1QkFEaUM7RUFFekNrRyxLQUFLLEVBQUU7SUFDSG1LLFdBQVcsRUFBRTtNQUNUakssSUFBSSxFQUFFdUosTUFERztNQUVUdEosUUFBUSxFQUFFO0lBRkQ7RUFEVixDQUZrQztFQVF6Q3BHLEtBQUssRUFBRSxlQUFVQyxPQUFWLEVBQW1CQyxFQUFuQixFQUF1QjtJQUMxQixJQUFJQyxNQUFNLEdBQUdELEVBQUUsQ0FBQ0MsTUFBaEI7SUFDQUEsTUFBTTtJQUNOLElBQUk4RixLQUFLLEdBQUdoRyxPQUFaO0lBQ0EsSUFBSWlpQyxLQUFLLEdBQUcsQ0FBQyxHQUFHemlDLEtBQUssQ0FBQ2MsR0FBVixHQUFaO0lBQ0EsSUFBSWlpQyxpQkFBaUIsR0FBRyxDQUFDLEdBQUcvaUMsS0FBSyxDQUFDYyxHQUFWLEdBQXhCO0lBQ0EsSUFBSWtpQyx3QkFBd0IsR0FBRyxDQUFDLEdBQUdoakMsS0FBSyxDQUFDYyxHQUFWLEdBQS9CO0lBQ0EsSUFBSW1pQyxjQUFjLEdBQUcsQ0FBQyxHQUFHampDLEtBQUssQ0FBQ2MsR0FBVixHQUFyQjtJQUNBLElBQUlvaUMsb0JBQW9CLEdBQUcsQ0FBQyxHQUFHbGpDLEtBQUssQ0FBQ2MsR0FBVixHQUEzQjtJQUNBLElBQUlxaUMsbUJBQW1CLEdBQUcsQ0FBQyxHQUFHbmpDLEtBQUssQ0FBQ2MsR0FBVixHQUExQjtJQUNBLElBQUlzZSxNQUFNLEdBQUcsQ0FBQyxHQUFHcGYsS0FBSyxDQUFDYyxHQUFWLEVBQWU7TUFBRXFLLE1BQU0sRUFBRSxLQUFWO01BQWlCNkUsSUFBSSxFQUFFO0lBQXZCLENBQWYsQ0FBYjtJQUNBLElBQUlvekIsZUFBZSxHQUFHLENBQUMsR0FBR3BqQyxLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQXRCO0lBQ0EsSUFBSXdnQyxVQUFVLEdBQUcsQ0FBQyxHQUFHdGhDLEtBQUssQ0FBQ3dELE1BQVYsRUFBa0IsWUFBbEIsQ0FBakI7SUFDQSxJQUFJNi9CLGNBQWMsR0FBRyxDQUFDLEdBQUdyakMsS0FBSyxDQUFDYyxHQUFWLEVBQWUsRUFBZixDQUFyQjtJQUNBLElBQUl3aUMsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHdGpDLEtBQUssQ0FBQ2MsR0FBVixFQUFlLElBQWYsQ0FBekI7SUFDQSxJQUFJODdCLGVBQWUsR0FBRyxDQUFDLEdBQUc1OEIsS0FBSyxDQUFDd0QsTUFBVixFQUFrQixpQkFBbEIsQ0FBdEI7SUFDQSxJQUFJKy9CLE1BQU0sR0FBRyxDQUFDLEdBQUd2akMsS0FBSyxDQUFDYyxHQUFWLEdBQWI7SUFDQSxDQUFDLEdBQUdkLEtBQUssQ0FBQ2dCLFNBQVYsRUFBcUIsWUFBWTtNQUM3QndpQyxjQUFjO0lBQ2pCLENBRkQ7O0lBR0EsSUFBSS9ULFVBQVUsR0FBRyxTQUFiQSxVQUFhLENBQVUxYixJQUFWLEVBQWdCO01BQzdCLE9BQU8sQ0FBQyxHQUFHeEQsUUFBUSxXQUFaLEVBQXNCd0QsSUFBdEIsRUFBNEJuQyxNQUE1QixDQUFtQyxlQUFuQyxDQUFQO0lBQ0gsQ0FGRDs7SUFHQSxJQUFJNnhCLFNBQVMsR0FBRyxTQUFaQSxTQUFZLEdBQVk7TUFDeEJya0IsTUFBTSxDQUFDdmYsS0FBUCxDQUFhc0wsTUFBYixHQUFzQixJQUF0QjtNQUNBaVUsTUFBTSxDQUFDdmYsS0FBUCxDQUFhbVEsSUFBYixHQUFvQixhQUFwQjtNQUNBLElBQUkzQixRQUFRLEdBQUcsdUJBQXVCNU0sTUFBdkIsQ0FBOEI4aEMsTUFBTSxDQUFDMWpDLEtBQXJDLENBQWY7TUFDQU0sT0FBTyxXQUFQLENBQWdCK0MsR0FBaEIsQ0FBb0JtTCxRQUFwQixFQUE4QnRNLElBQTlCLENBQW1DLFVBQVVDLEdBQVYsRUFBZTtRQUM5QyxJQUFJeUwsUUFBUSxHQUFHekwsR0FBRyxDQUFDSyxJQUFuQjs7UUFDQSxJQUFJb0wsUUFBUSxDQUFDckssT0FBVCxLQUFxQixJQUF6QixFQUErQjtVQUMzQm1HLFVBQVUsQ0FBQyxZQUFZO1lBQ25COUcsTUFBTSxDQUFDOEgsUUFBUCxDQUFnQnNCLE9BQWhCLENBQXdCLGFBQXhCO1VBQ0gsQ0FGUyxFQUVQLElBRk8sQ0FBVjtRQUdILENBSkQsTUFLSztVQUNEdVQsTUFBTSxDQUFDdmYsS0FBUCxDQUFhc0wsTUFBYixHQUFzQixLQUF0QjtRQUNIO01BQ0osQ0FWRDtJQVdILENBZkQ7O0lBZ0JBLENBQUMsR0FBR25MLEtBQUssQ0FBQzhJLEtBQVYsRUFBaUIsWUFBWTtNQUFFLE9BQU90QyxLQUFLLENBQUNtSyxXQUFiO0lBQTJCLENBQTFELEVBQTRELFlBQVk7TUFDcEU2eUIsY0FBYztJQUNqQixDQUZEOztJQUdBLElBQUlBLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsR0FBWTtNQUM3QkosZUFBZSxDQUFDdmpDLEtBQWhCLEdBQXdCLElBQXhCO01BQ0FNLE9BQU8sV0FBUCxDQUNLK0MsR0FETCxDQUNTLGNBQWN6QixNQUFkLENBQXFCK0UsS0FBSyxDQUFDbUssV0FBM0IsRUFBd0MsUUFBeEMsQ0FEVCxFQUVLNU8sSUFGTCxDQUVVLFVBQVVDLEdBQVYsRUFBZTtRQUNyQixJQUFJeUwsUUFBUSxHQUFHekwsR0FBRyxDQUFDSyxJQUFuQjtRQUNBb2dDLEtBQUssQ0FBQzVpQyxLQUFOLEdBQWM0TixRQUFRLENBQUNwTCxJQUFULENBQWM2YSxVQUE1QjtRQUNBK2xCLGNBQWMsQ0FBQ3BqQyxLQUFmLEdBQXVCNE4sUUFBUSxDQUFDcEwsSUFBVCxDQUFjcWhDLHVCQUFyQztRQUNBUixvQkFBb0IsQ0FBQ3JqQyxLQUFyQixHQUE2QjROLFFBQVEsQ0FBQ3BMLElBQVQsQ0FBYzZnQyxvQkFBM0M7UUFDQUMsbUJBQW1CLENBQUN0akMsS0FBcEIsR0FBNEI0TixRQUFRLENBQUNwTCxJQUFULENBQWM4Z0MsbUJBQTFDOztRQUNBLElBQUkzOEIsS0FBSyxDQUFDbUssV0FBTixLQUFzQixXQUExQixFQUF1QztVQUNuQzR5QixNQUFNLENBQUMxakMsS0FBUCxHQUFlb2pDLGNBQWMsQ0FBQ3BqQyxLQUFmLENBQXFCOGpDLE9BQXBDO1VBQ0FaLGlCQUFpQixDQUFDbGpDLEtBQWxCLEdBQTBCNE4sUUFBUSxDQUFDcEwsSUFBVCxDQUFjdWhDLGlCQUF4QztRQUNIOztRQUNELElBQUlwOUIsS0FBSyxDQUFDbUssV0FBTixLQUFzQixVQUExQixFQUFzQztVQUNsQzR5QixNQUFNLENBQUMxakMsS0FBUCxHQUFlNE4sUUFBUSxDQUFDcEwsSUFBVCxDQUFja2hDLE1BQTdCO1VBQ0FQLHdCQUF3QixDQUFDbmpDLEtBQXpCLEdBQWlDNE4sUUFBUSxDQUFDcEwsSUFBVCxDQUFjMmdDLHdCQUEvQztRQUNIOztRQUNELElBQUl4OEIsS0FBSyxDQUFDbUssV0FBTixLQUFzQixNQUExQixFQUFrQztVQUM5QjJ5QixrQkFBa0IsQ0FBQ3pqQyxLQUFuQixHQUEyQixJQUEzQjtVQUNBd2pDLGNBQWMsQ0FBQ3hqQyxLQUFmLEdBQXVCNE4sUUFBUSxDQUFDcEwsSUFBaEM7UUFDSDtNQUNKLENBcEJELGFBcUJhLFlBQVk7UUFDckIrZ0MsZUFBZSxDQUFDdmpDLEtBQWhCLEdBQXdCLEtBQXhCO01BQ0gsQ0F2QkQ7SUF3QkgsQ0ExQkQ7O0lBMkJBLElBQUk0RCxZQUFZLEdBQUc7TUFBRStDLEtBQUssRUFBRUEsS0FBVDtNQUFnQmk4QixLQUFLLEVBQUVBLEtBQXZCO01BQThCTSxpQkFBaUIsRUFBRUEsaUJBQWpEO01BQW9FQyx3QkFBd0IsRUFBRUEsd0JBQTlGO01BQXdIQyxjQUFjLEVBQUVBLGNBQXhJO01BQXdKQyxvQkFBb0IsRUFBRUEsb0JBQTlLO01BQW9NQyxtQkFBbUIsRUFBRUEsbUJBQXpOO01BQThPL2pCLE1BQU0sRUFBRUEsTUFBdFA7TUFBOFBna0IsZUFBZSxFQUFFQSxlQUEvUTtNQUFnUzlCLFVBQVUsRUFBRUEsVUFBNVM7TUFBd1QrQixjQUFjLEVBQUVBLGNBQXhVO01BQXdWQyxrQkFBa0IsRUFBRUEsa0JBQTVXO01BQWdZMUcsZUFBZSxFQUFFQSxlQUFqWjtNQUFrYTJHLE1BQU0sRUFBRUEsTUFBMWE7TUFBa2I5VCxVQUFVLEVBQUVBLFVBQTliO01BQTBjZ1UsU0FBUyxFQUFFQSxTQUFyZDtNQUFnZUQsY0FBYyxFQUFFQSxjQUFoZjtNQUFnZ0JLLGNBQWMsRUFBRWYsb0JBQW9CLFdBQXBpQjtNQUE4aUJockIsTUFBTSxFQUFFbUgsb0JBQW9CLFdBQTFrQjtNQUFvbEI2aEIsWUFBWSxFQUFFajBCLE9BQU8sQ0FBQ2kwQixZQUExbUI7TUFBd25Cdm1CLGNBQWMsRUFBRUgsb0JBQW9CO0lBQTVwQixDQUFuQjtJQUNBMWEsTUFBTSxDQUFDQyxjQUFQLENBQXNCOEQsWUFBdEIsRUFBb0MsaUJBQXBDLEVBQXVEO01BQUVHLFVBQVUsRUFBRSxLQUFkO01BQXFCL0QsS0FBSyxFQUFFO0lBQTVCLENBQXZEO0lBQ0EsT0FBTzRELFlBQVA7RUFDSDtBQWhGd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDYmE7O0FBQ2IsSUFBSWxFLGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlDLEtBQUssR0FBR0QsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJd1kscUJBQXFCLEdBQUdoWixlQUFlLENBQUNRLG1CQUFPLENBQUMsNEZBQUQsQ0FBUixDQUEzQzs7QUFDQSxJQUFJc21CLGVBQWUsR0FBRzltQixlQUFlLENBQUNRLG1CQUFPLENBQUMsZ0ZBQUQsQ0FBUixDQUFyQzs7QUFDQSxJQUFJa2Ysb0JBQW9CLEdBQUcxZixlQUFlLENBQUNRLG1CQUFPLENBQUMsNEdBQUQsQ0FBUixDQUExQzs7QUFDQSxJQUFJSSxPQUFPLEdBQUdaLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0Q0FBRCxDQUFSLENBQTdCOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsZ0JBRGlDO0VBRXpDQyxLQUFLLEVBQUUsZUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUI7SUFDMUIsSUFBSUMsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQ0FBLE1BQU07SUFDTixJQUFJMEcsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLElBQUl5OEIsSUFBSSxHQUFHLENBQUMsR0FBRzlqQyxLQUFLLENBQUNjLEdBQVYsR0FBWDtJQUFBLElBQTZCcU4sS0FBSyxHQUFHLENBQUMsR0FBR25PLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEVBQWYsQ0FBckM7SUFBQSxJQUF5RHNlLE1BQU0sR0FBRyxDQUFDLEdBQUdwZixLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQWxFO0lBQUEsSUFBeUZ1ZixVQUFVLEdBQUcsQ0FBQyxHQUFHcmdCLEtBQUssQ0FBQ2MsR0FBVixFQUFlc0csU0FBUyxDQUFDd0IsVUFBVixDQUFxQixhQUFyQixDQUFmLENBQXRHOztJQUNBLFNBQVNtN0IsVUFBVCxHQUFzQjtNQUNsQjNrQixNQUFNLENBQUN2ZixLQUFQLEdBQWUsSUFBZjtNQUNBd2dCLFVBQVUsQ0FBQ3hnQixLQUFYLEdBQW1CdUgsU0FBUyxDQUFDd0IsVUFBVixDQUFxQix3QkFBckIsQ0FBbkI7TUFDQSxJQUFJNlMsUUFBUSxHQUFHcW9CLElBQUksQ0FBQ2prQyxLQUFMLENBQVdta0MsS0FBWCxDQUFpQi85QixNQUFqQixHQUEwQjY5QixJQUFJLENBQUNqa0MsS0FBTCxDQUFXbWtDLEtBQVgsQ0FBaUIsQ0FBakIsQ0FBMUIsR0FBZ0QsRUFBL0Q7TUFDQSxJQUFJQyxNQUFNLEdBQUc7UUFDVC9oQyxPQUFPLEVBQUU7VUFDTCxnQkFBZ0I7UUFEWDtNQURBLENBQWI7TUFLQSxJQUFJRyxJQUFJLEdBQUcsSUFBSTZoQyxRQUFKLEVBQVg7TUFDQTdoQyxJQUFJLENBQUN1L0IsTUFBTCxDQUFZLFVBQVosRUFBd0JubUIsUUFBeEI7TUFDQXROLEtBQUssQ0FBQ3RPLEtBQU4sR0FBYyxFQUFkO01BQ0FNLE9BQU8sV0FBUCxDQUNLK0ssSUFETCxDQUNVLFNBRFYsRUFDcUI3SSxJQURyQixFQUMyQjRoQyxNQUQzQixFQUVLbGlDLElBRkwsQ0FFVSxVQUFVQyxHQUFWLEVBQWU7UUFDckIsSUFBSXZCLEVBQUo7O1FBQ0EsSUFBSXFqQyxJQUFJLENBQUNqa0MsS0FBTCxDQUFXbWtDLEtBQVgsQ0FBaUIvOUIsTUFBakIsS0FBNEIsQ0FBQ3hGLEVBQUUsR0FBR3VCLEdBQUcsS0FBSyxJQUFSLElBQWdCQSxHQUFHLEtBQUssS0FBSyxDQUE3QixHQUFpQyxLQUFLLENBQXRDLEdBQTBDQSxHQUFHLENBQUNLLElBQXBELE1BQThELElBQTlELElBQXNFNUIsRUFBRSxLQUFLLEtBQUssQ0FBbEYsR0FBc0YsS0FBSyxDQUEzRixHQUErRkEsRUFBRSxDQUFDMkMsT0FBOUgsQ0FBSixFQUE0STtVQUN4SW1HLFVBQVUsQ0FBQyxZQUFZO1lBQ25COUcsTUFBTSxDQUFDOEgsUUFBUCxDQUFnQi9ILElBQWhCLEdBQXVCLGNBQXZCO1VBQ0gsQ0FGUyxFQUVQLElBRk8sQ0FBVjtRQUdILENBSkQsTUFLSztVQUNEMkwsS0FBSyxDQUFDdE8sS0FBTixHQUFjSCxNQUFNLENBQUNrUCxNQUFQLENBQWM1TSxHQUFHLENBQUNLLElBQUosQ0FBUzhaLE1BQXZCLEVBQStCbFEsSUFBL0IsQ0FBb0MsR0FBcEMsQ0FBZDtVQUNBbVQsTUFBTSxDQUFDdmYsS0FBUCxHQUFlLEtBQWY7UUFDSDtNQUNKLENBYkQsV0FjVyxZQUFZO1FBQ25Cc08sS0FBSyxDQUFDdE8sS0FBTixHQUFjdUgsU0FBUyxDQUFDd0IsVUFBVixDQUFxQix5Q0FBckIsQ0FBZDtRQUNBd1csTUFBTSxDQUFDdmYsS0FBUCxHQUFlLEtBQWY7TUFDSCxDQWpCRDtJQWtCSDs7SUFDRCxTQUFTc2tDLGFBQVQsR0FBeUI7TUFDckIsQ0FBQyxHQUFHaGtDLE9BQU8sV0FBWCxFQUFxQjtRQUNqQjBCLEdBQUcsRUFBRSxxQkFEWTtRQUVqQkQsTUFBTSxFQUFFLEtBRlM7UUFHakJFLFlBQVksRUFBRTtNQUhHLENBQXJCLEVBSUdDLElBSkgsQ0FJUSxVQUFVMEwsUUFBVixFQUFvQjtRQUN4QixJQUFJdEwsSUFBSSxHQUFHLElBQUlDLElBQUosQ0FBUyxDQUFDcUwsUUFBUSxDQUFDcEwsSUFBVixDQUFULEVBQTBCO1VBQ2pDcUUsSUFBSSxFQUFFO1FBRDJCLENBQTFCLENBQVg7UUFHQSxJQUFJcEUsSUFBSSxHQUFHcEIsUUFBUSxDQUFDcUIsYUFBVCxDQUF1QixHQUF2QixDQUFYO1FBQ0FELElBQUksQ0FBQ0UsSUFBTCxHQUFZQyxNQUFNLENBQUNDLEdBQVAsQ0FBV0MsZUFBWCxDQUEyQlIsSUFBM0IsQ0FBWjtRQUNBRyxJQUFJLENBQUNnMUIsUUFBTCxHQUFnQixrQ0FBaEI7UUFDQWgxQixJQUFJLENBQUNTLEtBQUw7TUFDSCxDQVpEO0lBYUg7O0lBQ0QsSUFBSVUsWUFBWSxHQUFHO01BQUUyRCxTQUFTLEVBQUVBLFNBQWI7TUFBd0IwOEIsSUFBSSxFQUFFQSxJQUE5QjtNQUFvQzMxQixLQUFLLEVBQUVBLEtBQTNDO01BQWtEaVIsTUFBTSxFQUFFQSxNQUExRDtNQUFrRWlCLFVBQVUsRUFBRUEsVUFBOUU7TUFBMEYwakIsVUFBVSxFQUFFQSxVQUF0RztNQUFrSEksYUFBYSxFQUFFQSxhQUFqSTtNQUFnSnpxQixZQUFZLEVBQUVuQixxQkFBcUIsV0FBbkw7TUFBNkx3TyxTQUFTLEVBQUVWLGVBQWUsV0FBdk47TUFBaU92TyxNQUFNLEVBQUVtSCxvQkFBb0I7SUFBN1AsQ0FBbkI7SUFDQXZmLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQjhELFlBQXRCLEVBQW9DLGlCQUFwQyxFQUF1RDtNQUFFRyxVQUFVLEVBQUUsS0FBZDtNQUFxQi9ELEtBQUssRUFBRTtJQUE1QixDQUF2RDtJQUNBLE9BQU80RCxZQUFQO0VBQ0g7QUF4RHdDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ1phOztBQUNiLElBQUlJLFNBQVMsR0FBSSxRQUFRLEtBQUtBLFNBQWQsSUFBNEIsVUFBVUMsT0FBVixFQUFtQkMsVUFBbkIsRUFBK0JDLENBQS9CLEVBQWtDQyxTQUFsQyxFQUE2QztFQUNyRixTQUFTQyxLQUFULENBQWVyRSxLQUFmLEVBQXNCO0lBQUUsT0FBT0EsS0FBSyxZQUFZbUUsQ0FBakIsR0FBcUJuRSxLQUFyQixHQUE2QixJQUFJbUUsQ0FBSixDQUFNLFVBQVVHLE9BQVYsRUFBbUI7TUFBRUEsT0FBTyxDQUFDdEUsS0FBRCxDQUFQO0lBQWlCLENBQTVDLENBQXBDO0VBQW9GOztFQUM1RyxPQUFPLEtBQUttRSxDQUFDLEtBQUtBLENBQUMsR0FBR0ksT0FBVCxDQUFOLEVBQXlCLFVBQVVELE9BQVYsRUFBbUJFLE1BQW5CLEVBQTJCO0lBQ3ZELFNBQVNDLFNBQVQsQ0FBbUJ6RSxLQUFuQixFQUEwQjtNQUFFLElBQUk7UUFBRTBFLElBQUksQ0FBQ04sU0FBUyxDQUFDTyxJQUFWLENBQWUzRSxLQUFmLENBQUQsQ0FBSjtNQUE4QixDQUFwQyxDQUFxQyxPQUFPNEUsQ0FBUCxFQUFVO1FBQUVKLE1BQU0sQ0FBQ0ksQ0FBRCxDQUFOO01BQVk7SUFBRTs7SUFDM0YsU0FBU0MsUUFBVCxDQUFrQjdFLEtBQWxCLEVBQXlCO01BQUUsSUFBSTtRQUFFMEUsSUFBSSxDQUFDTixTQUFTLENBQUMsT0FBRCxDQUFULENBQW1CcEUsS0FBbkIsQ0FBRCxDQUFKO01BQWtDLENBQXhDLENBQXlDLE9BQU80RSxDQUFQLEVBQVU7UUFBRUosTUFBTSxDQUFDSSxDQUFELENBQU47TUFBWTtJQUFFOztJQUM5RixTQUFTRixJQUFULENBQWNJLE1BQWQsRUFBc0I7TUFBRUEsTUFBTSxDQUFDQyxJQUFQLEdBQWNULE9BQU8sQ0FBQ1EsTUFBTSxDQUFDOUUsS0FBUixDQUFyQixHQUFzQ3FFLEtBQUssQ0FBQ1MsTUFBTSxDQUFDOUUsS0FBUixDQUFMLENBQW9Ca0MsSUFBcEIsQ0FBeUJ1QyxTQUF6QixFQUFvQ0ksUUFBcEMsQ0FBdEM7SUFBc0Y7O0lBQzlHSCxJQUFJLENBQUMsQ0FBQ04sU0FBUyxHQUFHQSxTQUFTLENBQUNZLEtBQVYsQ0FBZ0JmLE9BQWhCLEVBQXlCQyxVQUFVLElBQUksRUFBdkMsQ0FBYixFQUF5RFMsSUFBekQsRUFBRCxDQUFKO0VBQ0gsQ0FMTSxDQUFQO0FBTUgsQ0FSRDs7QUFTQSxJQUFJTSxXQUFXLEdBQUksUUFBUSxLQUFLQSxXQUFkLElBQThCLFVBQVVoQixPQUFWLEVBQW1CakIsSUFBbkIsRUFBeUI7RUFDckUsSUFBSWtDLENBQUMsR0FBRztJQUFFQyxLQUFLLEVBQUUsQ0FBVDtJQUFZQyxJQUFJLEVBQUUsZ0JBQVc7TUFBRSxJQUFJQyxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQU8sQ0FBWCxFQUFjLE1BQU1BLENBQUMsQ0FBQyxDQUFELENBQVA7TUFBWSxPQUFPQSxDQUFDLENBQUMsQ0FBRCxDQUFSO0lBQWMsQ0FBdkU7SUFBeUVDLElBQUksRUFBRSxFQUEvRTtJQUFtRkMsR0FBRyxFQUFFO0VBQXhGLENBQVI7RUFBQSxJQUFzR0MsQ0FBdEc7RUFBQSxJQUF5R0MsQ0FBekc7RUFBQSxJQUE0R0osQ0FBNUc7RUFBQSxJQUErR0ssQ0FBL0c7RUFDQSxPQUFPQSxDQUFDLEdBQUc7SUFBRWYsSUFBSSxFQUFFZ0IsSUFBSSxDQUFDLENBQUQsQ0FBWjtJQUFpQixTQUFTQSxJQUFJLENBQUMsQ0FBRCxDQUE5QjtJQUFtQyxVQUFVQSxJQUFJLENBQUMsQ0FBRDtFQUFqRCxDQUFKLEVBQTRELE9BQU9DLE1BQVAsS0FBa0IsVUFBbEIsS0FBaUNGLENBQUMsQ0FBQ0UsTUFBTSxDQUFDQyxRQUFSLENBQUQsR0FBcUIsWUFBVztJQUFFLE9BQU8sSUFBUDtFQUFjLENBQWpGLENBQTVELEVBQWdKSCxDQUF2Sjs7RUFDQSxTQUFTQyxJQUFULENBQWNHLENBQWQsRUFBaUI7SUFBRSxPQUFPLFVBQVVDLENBQVYsRUFBYTtNQUFFLE9BQU9yQixJQUFJLENBQUMsQ0FBQ29CLENBQUQsRUFBSUMsQ0FBSixDQUFELENBQVg7SUFBc0IsQ0FBNUM7RUFBK0M7O0VBQ2xFLFNBQVNyQixJQUFULENBQWNzQixFQUFkLEVBQWtCO0lBQ2QsSUFBSVIsQ0FBSixFQUFPLE1BQU0sSUFBSVMsU0FBSixDQUFjLGlDQUFkLENBQU47O0lBQ1AsT0FBT1AsQ0FBQyxLQUFLQSxDQUFDLEdBQUcsQ0FBSixFQUFPTSxFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVVkLENBQUMsR0FBRyxDQUFkLENBQVosQ0FBRCxFQUFnQ0EsQ0FBdkM7TUFBMEMsSUFBSTtRQUMxQyxJQUFJTSxDQUFDLEdBQUcsQ0FBSixFQUFPQyxDQUFDLEtBQUtKLENBQUMsR0FBR1csRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRLENBQVIsR0FBWVAsQ0FBQyxDQUFDLFFBQUQsQ0FBYixHQUEwQk8sRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRUCxDQUFDLENBQUMsT0FBRCxDQUFELEtBQWUsQ0FBQ0osQ0FBQyxHQUFHSSxDQUFDLENBQUMsUUFBRCxDQUFOLEtBQXFCSixDQUFDLENBQUNhLElBQUYsQ0FBT1QsQ0FBUCxDQUFyQixFQUFnQyxDQUEvQyxDQUFSLEdBQTREQSxDQUFDLENBQUNkLElBQWpHLENBQUQsSUFBMkcsQ0FBQyxDQUFDVSxDQUFDLEdBQUdBLENBQUMsQ0FBQ2EsSUFBRixDQUFPVCxDQUFQLEVBQVVPLEVBQUUsQ0FBQyxDQUFELENBQVosQ0FBTCxFQUF1QmpCLElBQTlJLEVBQW9KLE9BQU9NLENBQVA7UUFDcEosSUFBSUksQ0FBQyxHQUFHLENBQUosRUFBT0osQ0FBWCxFQUFjVyxFQUFFLEdBQUcsQ0FBQ0EsRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRLENBQVQsRUFBWVgsQ0FBQyxDQUFDckYsS0FBZCxDQUFMOztRQUNkLFFBQVFnRyxFQUFFLENBQUMsQ0FBRCxDQUFWO1VBQ0ksS0FBSyxDQUFMO1VBQVEsS0FBSyxDQUFMO1lBQVFYLENBQUMsR0FBR1csRUFBSjtZQUFROztVQUN4QixLQUFLLENBQUw7WUFBUWQsQ0FBQyxDQUFDQyxLQUFGO1lBQVcsT0FBTztjQUFFbkYsS0FBSyxFQUFFZ0csRUFBRSxDQUFDLENBQUQsQ0FBWDtjQUFnQmpCLElBQUksRUFBRTtZQUF0QixDQUFQOztVQUNuQixLQUFLLENBQUw7WUFBUUcsQ0FBQyxDQUFDQyxLQUFGO1lBQVdNLENBQUMsR0FBR08sRUFBRSxDQUFDLENBQUQsQ0FBTjtZQUFXQSxFQUFFLEdBQUcsQ0FBQyxDQUFELENBQUw7WUFBVTs7VUFDeEMsS0FBSyxDQUFMO1lBQVFBLEVBQUUsR0FBR2QsQ0FBQyxDQUFDSyxHQUFGLENBQU1ZLEdBQU4sRUFBTDs7WUFBa0JqQixDQUFDLENBQUNJLElBQUYsQ0FBT2EsR0FBUDs7WUFBYzs7VUFDeEM7WUFDSSxJQUFJLEVBQUVkLENBQUMsR0FBR0gsQ0FBQyxDQUFDSSxJQUFOLEVBQVlELENBQUMsR0FBR0EsQ0FBQyxDQUFDZSxNQUFGLEdBQVcsQ0FBWCxJQUFnQmYsQ0FBQyxDQUFDQSxDQUFDLENBQUNlLE1BQUYsR0FBVyxDQUFaLENBQW5DLE1BQXVESixFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVUsQ0FBVixJQUFlQSxFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVUsQ0FBaEYsQ0FBSixFQUF3RjtjQUFFZCxDQUFDLEdBQUcsQ0FBSjtjQUFPO1lBQVc7O1lBQzVHLElBQUljLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFWLEtBQWdCLENBQUNYLENBQUQsSUFBT1csRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRWCxDQUFDLENBQUMsQ0FBRCxDQUFULElBQWdCVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFYLENBQUMsQ0FBQyxDQUFELENBQWhELENBQUosRUFBMkQ7Y0FBRUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVhLEVBQUUsQ0FBQyxDQUFELENBQVo7Y0FBaUI7WUFBUTs7WUFDdEYsSUFBSUEsRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVLENBQVYsSUFBZWQsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQTlCLEVBQW1DO2NBQUVILENBQUMsQ0FBQ0MsS0FBRixHQUFVRSxDQUFDLENBQUMsQ0FBRCxDQUFYO2NBQWdCQSxDQUFDLEdBQUdXLEVBQUo7Y0FBUTtZQUFROztZQUNyRSxJQUFJWCxDQUFDLElBQUlILENBQUMsQ0FBQ0MsS0FBRixHQUFVRSxDQUFDLENBQUMsQ0FBRCxDQUFwQixFQUF5QjtjQUFFSCxDQUFDLENBQUNDLEtBQUYsR0FBVUUsQ0FBQyxDQUFDLENBQUQsQ0FBWDs7Y0FBZ0JILENBQUMsQ0FBQ0ssR0FBRixDQUFNYyxJQUFOLENBQVdMLEVBQVg7O2NBQWdCO1lBQVE7O1lBQ25FLElBQUlYLENBQUMsQ0FBQyxDQUFELENBQUwsRUFBVUgsQ0FBQyxDQUFDSyxHQUFGLENBQU1ZLEdBQU47O1lBQ1ZqQixDQUFDLENBQUNJLElBQUYsQ0FBT2EsR0FBUDs7WUFBYztRQVh0Qjs7UUFhQUgsRUFBRSxHQUFHaEQsSUFBSSxDQUFDa0QsSUFBTCxDQUFVakMsT0FBVixFQUFtQmlCLENBQW5CLENBQUw7TUFDSCxDQWpCeUMsQ0FpQnhDLE9BQU9OLENBQVAsRUFBVTtRQUFFb0IsRUFBRSxHQUFHLENBQUMsQ0FBRCxFQUFJcEIsQ0FBSixDQUFMO1FBQWFhLENBQUMsR0FBRyxDQUFKO01BQVEsQ0FqQk8sU0FpQkU7UUFBRUQsQ0FBQyxHQUFHSCxDQUFDLEdBQUcsQ0FBUjtNQUFZO0lBakIxRDs7SUFrQkEsSUFBSVcsRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRLENBQVosRUFBZSxNQUFNQSxFQUFFLENBQUMsQ0FBRCxDQUFSO0lBQWEsT0FBTztNQUFFaEcsS0FBSyxFQUFFZ0csRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRQSxFQUFFLENBQUMsQ0FBRCxDQUFWLEdBQWdCLEtBQUssQ0FBOUI7TUFBaUNqQixJQUFJLEVBQUU7SUFBdkMsQ0FBUDtFQUMvQjtBQUNKLENBMUJEOztBQTJCQSxJQUFJckYsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHRCxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3WSxxQkFBcUIsR0FBR2haLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0RkFBRCxDQUFSLENBQTNDOztBQUNBLElBQUlzbUIsZUFBZSxHQUFHOW1CLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxnRkFBRCxDQUFSLENBQXJDOztBQUNBLElBQUlrZixvQkFBb0IsR0FBRzFmLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0R0FBRCxDQUFSLENBQTFDOztBQUNBLElBQUlJLE9BQU8sR0FBR1osZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRDQUFELENBQVIsQ0FBN0I7O0FBQ0EsSUFBSXVxQix3QkFBd0IsR0FBRy9xQixlQUFlLENBQUNRLG1CQUFPLENBQUMsa0dBQUQsQ0FBUixDQUE5Qzs7QUFDQSxJQUFJRyxnQkFBZ0IsR0FBR1gsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGtGQUFELENBQVIsQ0FBdEM7O0FBQ0EsSUFBSXVHLGtCQUFrQixHQUFHL0csZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHNGQUFELENBQVIsQ0FBeEM7O0FBQ0EsSUFBSTJ2QixZQUFZLEdBQUdud0IsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDZFQUFELENBQVIsQ0FBbEM7O0FBQ0EsSUFBSTBxQixxQkFBcUIsR0FBR2xyQixlQUFlLENBQUNRLG1CQUFPLENBQUMsNEZBQUQsQ0FBUixDQUEzQzs7QUFDQSxJQUFJSyxPQUFPLEdBQUdMLG1CQUFPLENBQUMsK0VBQUQsQ0FBckI7O0FBQ0EsSUFBSXFHLE1BQU0sR0FBR3JHLG1CQUFPLENBQUMsMkRBQUQsQ0FBcEI7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsbUJBRGlDO0VBRXpDQyxLQUFLLEVBQUUsZUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUI7SUFDMUIsSUFBSXVRLEtBQUssR0FBRyxJQUFaOztJQUNBLElBQUk5SixFQUFKOztJQUNBLElBQUl4RyxNQUFNLEdBQUdELEVBQUUsQ0FBQ0MsTUFBaEI7SUFDQUEsTUFBTTtJQUNOLElBQUkwakMsbUJBQW1CLEdBQUcsQ0FBQyxHQUFHcGtDLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBMUI7SUFDQSxJQUFJOGMsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHNWQsS0FBSyxDQUFDYyxHQUFWLEVBQWUsRUFBZixDQUF2QjtJQUNBLElBQUl1akMsVUFBVSxHQUFHLENBQUMsR0FBR3JrQyxLQUFLLENBQUNjLEdBQVYsR0FBakI7SUFDQSxJQUFJd2pDLG9CQUFvQixHQUFHLENBQUMsR0FBR3RrQyxLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQTNCO0lBQ0EsSUFBSW1jLFlBQVksR0FBRyxDQUFDLEdBQUdqZCxLQUFLLENBQUNjLEdBQVYsRUFBZSxFQUFmLENBQW5CO0lBQ0EsSUFBSXlDLFNBQVMsR0FBRyxDQUFDLEdBQUd2RCxLQUFLLENBQUNjLEdBQVYsRUFBZSxDQUFmLENBQWhCO0lBQ0EsSUFBSW1DLGlCQUFpQixHQUFHLENBQUMsR0FBR2pELEtBQUssQ0FBQ2MsR0FBVixFQUFlLEVBQWYsQ0FBeEI7SUFDQSxJQUFJcWQsaUJBQWlCLEdBQUcsQ0FBQyxHQUFHbmUsS0FBSyxDQUFDYyxHQUFWLEVBQWUsS0FBZixDQUF4QjtJQUNBLElBQUlpSyxvQkFBb0IsR0FBRyxDQUFDLEdBQUcvSyxLQUFLLENBQUNjLEdBQVYsR0FBM0I7SUFDQSxJQUFJOEcsWUFBWSxHQUFHLENBQUMsR0FBRzVILEtBQUssQ0FBQ2MsR0FBVixFQUFlLEVBQWYsQ0FBbkI7SUFDQSxJQUFJK0csU0FBUyxHQUFHLENBQUMsR0FBRzdILEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBaEI7SUFDQSxJQUFJeWpDLGdCQUFnQixHQUFHLENBQUMsR0FBR3ZrQyxLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQXZCO0lBQ0EsSUFBSXdWLE9BQU8sR0FBRyxDQUFDLEdBQUd0VyxLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQWQ7SUFDQSxJQUFJc2MsU0FBUyxHQUFHLENBQUMsR0FBR3BkLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBaEI7SUFDQSxJQUFJdWMsZUFBZSxHQUFHLENBQUMsR0FBR3JkLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEVBQWYsQ0FBdEI7SUFDQSxJQUFJMEcsZUFBZSxHQUFHLENBQUMsR0FBR3hILEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBdEI7SUFDQSxJQUFJbWQsT0FBTyxHQUFHLENBQUMsR0FBR2plLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBZDtJQUNBLElBQUkwakMsZUFBZSxHQUFHLENBQUMsR0FBR3hrQyxLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQXRCO0lBQ0EsSUFBSXdNLFVBQVUsR0FBRyxDQUFDLEdBQUd0TixLQUFLLENBQUM4SCxRQUFWLEVBQW9CLEVBQXBCLENBQWpCO0lBQ0EsSUFBSXV3QixjQUFjLEdBQUcsQ0FBQyxHQUFHcjRCLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBckI7SUFDQSxJQUFJdXFCLGNBQWMsR0FBRyxDQUFDLEdBQUdyckIsS0FBSyxDQUFDYyxHQUFWLEVBQWUsS0FBZixDQUFyQjtJQUNBLElBQUlvYyxVQUFVLEdBQUcsQ0FBQyxHQUFHbGQsS0FBSyxDQUFDYyxHQUFWLEdBQWpCO0lBQ0EsSUFBSXFjLGNBQWMsR0FBRyxDQUFDLEdBQUduZCxLQUFLLENBQUNjLEdBQVYsRUFBZSxDQUFmLENBQXJCO0lBQ0EsSUFBSWdqQyxJQUFJLEdBQUcsQ0FBQyxHQUFHOWpDLEtBQUssQ0FBQ2MsR0FBVixHQUFYO0lBQ0EsSUFBSXFOLEtBQUssR0FBRyxDQUFDLEdBQUduTyxLQUFLLENBQUNjLEdBQVYsRUFBZSxFQUFmLENBQVo7SUFDQSxJQUFJc2UsTUFBTSxHQUFHLENBQUMsR0FBR3BmLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBYjtJQUNBLElBQUl1ZixVQUFVLEdBQUcsQ0FBQyxHQUFHcmdCLEtBQUssQ0FBQ2MsR0FBVixFQUFlLGFBQWYsQ0FBakI7SUFDQSxJQUFJSCxLQUFLLEdBQUcsQ0FBQyxHQUFHUCxPQUFPLENBQUNRLFFBQVosR0FBWjtJQUNBLElBQUl3SyxXQUFXLEdBQUcsQ0FBQyxHQUFHcEwsS0FBSyxDQUFDYyxHQUFWLEVBQWUsRUFBZixDQUFsQjtJQUNBLElBQUk2M0IsU0FBUyxHQUFHLENBQUMsR0FBRzM0QixLQUFLLENBQUNjLEdBQVYsRUFBZSxFQUFmLENBQWhCO0lBQ0EsSUFBSStjLFVBQVUsR0FBRyxDQUFDLEdBQUc3ZCxLQUFLLENBQUNjLEdBQVYsR0FBakI7O0lBQ0EsSUFBSTgzQixnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQW1CLEdBQVk7TUFDL0JELFNBQVMsQ0FBQzk0QixLQUFWLEtBQW9CLEtBQXBCLEdBQ084NEIsU0FBUyxDQUFDOTRCLEtBQVYsR0FBa0IsTUFEekIsR0FFTzg0QixTQUFTLENBQUM5NEIsS0FBVixHQUFrQixLQUZ6QjtNQUdBOHNCLGVBQWUsQ0FBQyxDQUFELEVBQUlnTSxTQUFTLENBQUM5NEIsS0FBZCxDQUFmO0lBQ0gsQ0FMRDs7SUFNQSxJQUFJNkIsY0FBYyxHQUFHLENBQUMsR0FBRzFCLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEVBQWYsQ0FBckI7SUFDQSxJQUFJd2QsV0FBVyxHQUFHLENBQUMsR0FBR3RlLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBbEI7SUFDQSxJQUFJK0osRUFBRSxHQUFHLENBQUMsR0FBR3pFLE1BQU0sQ0FBQzBFLFVBQVgsRUFBdUIsdUJBQXZCLEVBQWdEO01BQ3JEQyxvQkFBb0IsRUFBRSxDQUFDN0QsRUFBRSxHQUFHMEMsWUFBWSxDQUFDb0IsT0FBYixDQUFxQixzQkFBckIsQ0FBTixNQUF3RCxJQUF4RCxJQUFnRTlELEVBQUUsS0FBSyxLQUFLLENBQTVFLEdBQWdGQSxFQUFoRixHQUFxRjtJQUR0RCxDQUFoRCxDQUFUO0lBR0EsQ0FBQyxHQUFHbEgsS0FBSyxDQUFDOEksS0FBVixFQUFpQixZQUFZO01BQUUsT0FBT25JLEtBQUssQ0FBQ29JLEtBQU4sQ0FBWXlXLGtCQUFuQjtJQUF3QyxDQUF2RSxFQUF5RSxVQUFVM2YsS0FBVixFQUFpQjtNQUN0RixJQUFJQSxLQUFLLENBQUNvRyxNQUFOLEdBQWUsQ0FBbkIsRUFBc0I7UUFDbEJveUIsY0FBYyxDQUFDeDRCLEtBQWYsR0FBdUIsS0FBdkI7TUFDSDtJQUNKLENBSkQ7O0lBS0EsSUFBSTJkLGVBQWUsR0FBRyxTQUFsQkEsZUFBa0IsQ0FBVTlVLElBQVYsRUFBZ0I7TUFDbEMsUUFBUUEsSUFBUjtRQUNJLEtBQUssVUFBTDtVQUNJLE9BQU8seUJBQVA7O1FBQ0osS0FBSyxRQUFMO1VBQ0ksT0FBTyxRQUFQOztRQUNKLEtBQUssV0FBTDtVQUNJLE9BQU8sMEJBQVA7O1FBQ0osS0FBSyxRQUFMO1VBQ0ksT0FBTyxxQ0FBUDs7UUFDSjtVQUNJLE9BQU9BLElBQVA7TUFWUjtJQVlILENBYkQ7O0lBY0EsQ0FBQyxHQUFHMUksS0FBSyxDQUFDOEksS0FBVixFQUFpQixZQUFZO01BQUUsT0FBT25JLEtBQUssQ0FBQ29JLEtBQU4sQ0FBWXdWLGdCQUFuQjtJQUFzQyxDQUFyRSxFQUF1RSxVQUFVMWUsS0FBVixFQUFpQjtNQUNwRixJQUFJQSxLQUFKLEVBQVc7UUFDUGtMLG9CQUFvQixDQUFDbEwsS0FBckIsR0FDSWdMLEVBQUUsQ0FBQ2hMLEtBQUgsQ0FBU2tMLG9CQUFULElBQ0lyTCxNQUFNLENBQUMwUCxJQUFQLENBQVl2RSxFQUFFLENBQUNoTCxLQUFILENBQVNrTCxvQkFBckIsQ0FGUjtRQUdBO01BQ0g7SUFDSixDQVBELEVBT0c7TUFBRWdGLElBQUksRUFBRTtJQUFSLENBUEg7SUFRQSxJQUFJSSxjQUFjLEdBQUcsQ0FBQyxHQUFHblEsS0FBSyxDQUFDc0QsUUFBVixFQUFvQixZQUFZO01BQ2pELElBQUk3QyxFQUFKOztNQUNBLE9BQU8sRUFBRSxDQUFDQSxFQUFFLEdBQUc0akMsVUFBVSxLQUFLLElBQWYsSUFBdUJBLFVBQVUsS0FBSyxLQUFLLENBQTNDLEdBQStDLEtBQUssQ0FBcEQsR0FBd0RBLFVBQVUsQ0FBQ3hrQyxLQUF6RSxNQUFvRixJQUFwRixJQUE0RlksRUFBRSxLQUFLLEtBQUssQ0FBeEcsR0FBNEcsS0FBSyxDQUFqSCxHQUFxSEEsRUFBRSxDQUFDd0YsTUFBMUgsQ0FBUDtJQUNILENBSG9CLENBQXJCO0lBSUEsQ0FBQyxHQUFHakcsS0FBSyxDQUFDOEksS0FBVixFQUFpQixZQUFZO01BQUUsT0FBT25JLEtBQUssQ0FBQ29JLEtBQU4sQ0FBWW1qQixnQkFBbkI7SUFBc0MsQ0FBckUsRUFBdUUsVUFBVXJzQixLQUFWLEVBQWlCO01BQ3BGLElBQUlBLEtBQUosRUFBVztRQUNQc3NCLG1CQUFtQjtNQUN0QjtJQUNKLENBSkQsRUFJRztNQUFFcGMsSUFBSSxFQUFFO0lBQVIsQ0FKSDtJQUtBLENBQUMsR0FBRy9QLEtBQUssQ0FBQzhJLEtBQVYsRUFBaUIsWUFBWTtNQUFFLE9BQU9uSSxLQUFLLENBQUNvSSxLQUFOLENBQVlxakIsYUFBbkI7SUFBbUMsQ0FBbEUsRUFBb0UsWUFBWTtNQUM1RUQsbUJBQW1CO0lBQ3RCLENBRkQ7O0lBR0EsSUFBSUEsbUJBQW1CLEdBQUcsU0FBdEJBLG1CQUFzQixHQUFZO01BQ2xDN04sV0FBVyxDQUFDemUsS0FBWixHQUFvQixLQUFwQjtNQUNBLElBQUkwc0IsYUFBYSxHQUFHM2UsV0FBVyxDQUFDLFlBQVk7UUFDeEN6TixPQUFPLFdBQVAsQ0FBZ0IrQyxHQUFoQixDQUFvQiwwQ0FBcEIsRUFBZ0VuQixJQUFoRSxDQUFxRSxVQUFVQyxHQUFWLEVBQWU7VUFDaEZ1QixTQUFTLENBQUMxRCxLQUFWLEdBQWtCbUMsR0FBRyxDQUFDSyxJQUFKLENBQVNtcUIsVUFBM0I7VUFDQXZwQixpQkFBaUIsQ0FBQ3BELEtBQWxCLEdBQTBCbUMsR0FBRyxDQUFDSyxJQUFKLENBQVM4SSxNQUFuQztVQUNBekosY0FBYyxDQUFDN0IsS0FBZixHQUF1Qm1DLEdBQUcsQ0FBQ0ssSUFBSixDQUFTUixHQUFoQztVQUNBeWMsV0FBVyxDQUFDemUsS0FBWixHQUFvQixDQUFDLENBQUNtQyxHQUFHLENBQUNLLElBQUosQ0FBUzhJLE1BQS9COztVQUNBLElBQUlsSSxpQkFBaUIsQ0FBQ3BELEtBQWxCLEtBQTRCLFdBQTVCLElBQ0FvRCxpQkFBaUIsQ0FBQ3BELEtBQWxCLEtBQTRCLFFBRDVCLElBRUEsQ0FBQ21DLEdBQUcsQ0FBQ0ssSUFBSixDQUFTOEksTUFGZCxFQUVzQjtZQUNsQjJDLGFBQWEsQ0FBQ3llLGFBQUQsQ0FBYjtVQUNIO1FBQ0osQ0FWRDtNQVdILENBWjhCLEVBWTVCLElBWjRCLENBQS9CO0lBYUgsQ0FmRDs7SUFnQkEsSUFBSWtZLFlBQVksR0FBRyxTQUFmQSxZQUFlLEdBQVk7TUFBRSxPQUFPNWdDLFNBQVMsQ0FBQ21OLEtBQUQsRUFBUSxLQUFLLENBQWIsRUFBZ0IsS0FBSyxDQUFyQixFQUF3QixZQUFZO1FBQ2pGLElBQUl4UCxNQUFKLEVBQVlvTCxZQUFaLEVBQTBCODNCLEdBQTFCLEVBQStCdmlDLElBQS9CLEVBQXFDRyxJQUFyQztRQUNBLE9BQU93QyxXQUFXLENBQUMsSUFBRCxFQUFPLFVBQVVyRSxFQUFWLEVBQWM7VUFDbkMsUUFBUUEsRUFBRSxDQUFDdUUsS0FBWDtZQUNJLEtBQUssQ0FBTDtjQUNJeEQsTUFBTSxHQUFHLDRDQUFUOztjQUNBLElBQUliLEtBQUssQ0FBQ29JLEtBQU4sQ0FBWXlXLGtCQUFaLENBQStCdlosTUFBL0IsR0FBd0MsQ0FBNUMsRUFBK0M7Z0JBQzNDMkcsWUFBWSxHQUFHak0sS0FBSyxDQUFDb0ksS0FBTixDQUFZeVcsa0JBQVosQ0FBK0J2VCxJQUEvQixDQUFvQyxHQUFwQyxDQUFmO2dCQUNBekssTUFBTSxHQUFHLDJDQUEyQ0MsTUFBM0MsQ0FBa0RtTCxZQUFsRCxFQUFnRSxHQUFoRSxDQUFUO2NBQ0g7O2NBQ0QsT0FBTyxDQUFDO2NBQUU7Y0FBSCxFQUFjLENBQUMsR0FBR3pNLE9BQU8sV0FBWCxFQUFxQjtnQkFDbEN5QixNQUFNLEVBQUUsS0FEMEI7Z0JBRWxDQyxHQUFHLEVBQUVMLE1BRjZCO2dCQUdsQ00sWUFBWSxFQUFFO2NBSG9CLENBQXJCLENBQWQsQ0FBUDs7WUFLSixLQUFLLENBQUw7Y0FDSTRpQyxHQUFHLEdBQUdqa0MsRUFBRSxDQUFDd0UsSUFBSCxFQUFOO2NBQ0E5QyxJQUFJLEdBQUcsSUFBSUMsSUFBSixDQUFTLENBQUNzaUMsR0FBRyxDQUFDcmlDLElBQUwsQ0FBVCxFQUFxQjtnQkFDeEJxRSxJQUFJLEVBQUU7Y0FEa0IsQ0FBckIsQ0FBUDtjQUdBcEUsSUFBSSxHQUFHcEIsUUFBUSxDQUFDcUIsYUFBVCxDQUF1QixHQUF2QixDQUFQO2NBQ0FELElBQUksQ0FBQ0UsSUFBTCxHQUFZQyxNQUFNLENBQUNDLEdBQVAsQ0FBV0MsZUFBWCxDQUEyQlIsSUFBM0IsQ0FBWjtjQUNBRyxJQUFJLENBQUNnMUIsUUFBTCxHQUFnQixrQkFBaEI7Y0FDQWgxQixJQUFJLENBQUNTLEtBQUw7Y0FDQSxPQUFPLENBQUM7Y0FBRTtjQUFILENBQVA7VUFyQlI7UUF1QkgsQ0F4QmlCLENBQWxCO01BeUJILENBM0JnRCxDQUFoQjtJQTJCNUIsQ0EzQkw7O0lBNEJBLENBQUMsR0FBRy9DLEtBQUssQ0FBQzhJLEtBQVYsRUFBaUIsWUFBWTtNQUN6Qm5JLEtBQUssQ0FBQ29JLEtBQU4sQ0FBWTQ3QixZQUFaO0lBQ0gsQ0FGRCxFQUVHLFlBQVk7TUFDWEMsWUFBWTtJQUNmLENBSkQsRUFJRztNQUFFNzBCLElBQUksRUFBRTtJQUFSLENBSkg7O0lBS0EsSUFBSTgwQixZQUFZLEdBQUcsU0FBZkEsWUFBZSxHQUFZO01BQzNCMWtDLE9BQU8sV0FBUCxXQUF1QixhQUF2QixFQUFzQzRCLElBQXRDLENBQTJDLFVBQVVDLEdBQVYsRUFBZTtRQUN0RCxJQUFJeUwsUUFBUSxHQUFHekwsR0FBRyxDQUFDSyxJQUFuQjtRQUNBNGIsT0FBTyxDQUFDcGUsS0FBUixHQUFnQixLQUFoQjtRQUNBa2tDLFVBQVU7UUFDVk0sVUFBVSxDQUFDeGtDLEtBQVgsR0FBbUIsRUFBbkI7UUFDQTJrQyxlQUFlLENBQUMza0MsS0FBaEIsR0FBd0IsS0FBeEI7UUFDQTJILGVBQWUsQ0FBQzNILEtBQWhCLEdBQXdCLElBQXhCO1FBQ0EwSixVQUFVLENBQUMsWUFBWTtVQUFFLE9BQVEvQixlQUFlLENBQUMzSCxLQUFoQixHQUF3QixLQUFoQztRQUF5QyxDQUF4RCxFQUEwRCxLQUExRCxDQUFWO1FBQ0ErSCxZQUFZLENBQUMvSCxLQUFiLEdBQXFCNE4sUUFBUSxDQUFDbkUsT0FBOUI7UUFDQXpCLFNBQVMsQ0FBQ2hJLEtBQVYsR0FBa0I0TixRQUFRLENBQUNySyxPQUEzQjtNQUNILENBVkQ7SUFXSCxDQVpEOztJQWFBLElBQUkwaEMsU0FBUyxHQUFHLFNBQVpBLFNBQVksR0FBWTtNQUN4QixJQUFJLENBQUN6TSxjQUFjLENBQUN4NEIsS0FBcEIsRUFBMkI7UUFDdkIsSUFBSTJOLEdBQUcsR0FBRyxFQUFWOztRQUNBLEtBQUssSUFBSTJCLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUd6UCxNQUFNLENBQUNrUCxNQUFQLENBQWN0QixVQUFVLENBQUNqTCxJQUF6QixFQUErQjRELE1BQW5ELEVBQTJEa0osQ0FBQyxFQUE1RCxFQUFnRTtVQUM1RDNCLEdBQUcsQ0FBQ3RILElBQUosQ0FBU29ILFVBQVUsQ0FBQ2pMLElBQVgsQ0FBZ0I4TSxDQUFoQixFQUFtQixJQUFuQixDQUFUO1FBQ0g7O1FBQ0R4TyxLQUFLLENBQUNZLFFBQU4sQ0FBZSwwQkFBZixFQUEyQ2lNLEdBQTNDO1FBQ0E2cUIsY0FBYyxDQUFDeDRCLEtBQWYsR0FBdUIsSUFBdkI7TUFDSCxDQVBELE1BUUs7UUFDRGMsS0FBSyxDQUFDWSxRQUFOLENBQWUsMEJBQWYsRUFBMkMsRUFBM0M7UUFDQTgyQixjQUFjLENBQUN4NEIsS0FBZixHQUF1QixLQUF2QjtNQUNIO0lBQ0osQ0FiRDs7SUFjQSxTQUFTa2tDLFVBQVQsR0FBc0I7TUFDbEIsSUFBSSxDQUFDOWxCLE9BQU8sQ0FBQ3BlLEtBQWIsRUFBb0I7UUFDaEJ1ZixNQUFNLENBQUN2ZixLQUFQLEdBQWUsSUFBZjtRQUNBd2dCLFVBQVUsQ0FBQ3hnQixLQUFYLEdBQW1CLG9CQUFuQjtRQUNBLElBQUk0YixRQUFRLEdBQUdxb0IsSUFBSSxDQUFDamtDLEtBQUwsQ0FBV21rQyxLQUFYLENBQWlCLzlCLE1BQWpCLEdBQTBCNjlCLElBQUksQ0FBQ2prQyxLQUFMLENBQVdta0MsS0FBWCxDQUFpQixDQUFqQixDQUExQixHQUFnRCxFQUEvRDtRQUNBLElBQUllLE9BQU8sR0FBR1YsVUFBZDtRQUNBLElBQUlKLE1BQU0sR0FBRztVQUNUL2hDLE9BQU8sRUFBRTtZQUNMLGdCQUFnQjtVQURYO1FBREEsQ0FBYjtRQUtBLElBQUlHLElBQUksR0FBRyxJQUFJNmhDLFFBQUosRUFBWDtRQUNBN2hDLElBQUksQ0FBQ3UvQixNQUFMLENBQVksVUFBWixFQUF3Qm5tQixRQUF4QjtRQUNBcFosSUFBSSxDQUFDdS9CLE1BQUwsQ0FBWSxTQUFaLEVBQXVCbUQsT0FBTyxDQUFDbGxDLEtBQS9CO1FBQ0FzTyxLQUFLLENBQUN0TyxLQUFOLEdBQWMsRUFBZDtRQUNBTSxPQUFPLFdBQVAsQ0FDSytLLElBREwsQ0FDVSxhQURWLEVBQ3lCN0ksSUFEekIsRUFDK0I0aEMsTUFEL0IsRUFFS2xpQyxJQUZMLENBRVUsVUFBVUMsR0FBVixFQUFlO1VBQ3JCLElBQUl2QixFQUFKOztVQUNBLElBQUlxakMsSUFBSSxDQUFDamtDLEtBQUwsQ0FBV21rQyxLQUFYLENBQWlCLzlCLE1BQWpCLEtBQTRCLENBQUN4RixFQUFFLEdBQUd1QixHQUFHLEtBQUssSUFBUixJQUFnQkEsR0FBRyxLQUFLLEtBQUssQ0FBN0IsR0FBaUMsS0FBSyxDQUF0QyxHQUEwQ0EsR0FBRyxDQUFDSyxJQUFwRCxNQUE4RCxJQUE5RCxJQUFzRTVCLEVBQUUsS0FBSyxLQUFLLENBQWxGLEdBQXNGLEtBQUssQ0FBM0YsR0FBK0ZBLEVBQUUsQ0FBQzJDLE9BQTlILENBQUosRUFBNEk7WUFDeElpcEIsY0FBYztVQUNqQixDQUZELE1BR0s7WUFDRGxlLEtBQUssQ0FBQ3RPLEtBQU4sR0FDSW1DLEdBQUcsQ0FBQ0ssSUFBSixDQUFTOFosTUFBVCxJQUFtQnpjLE1BQU0sQ0FBQ2tQLE1BQVAsQ0FBYzVNLEdBQUcsQ0FBQ0ssSUFBSixDQUFTOFosTUFBdkIsRUFBK0JsUSxJQUEvQixDQUFvQyxHQUFwQyxDQUR2QjtVQUVIO1FBQ0osQ0FYRCxXQVlXLFlBQVk7VUFDbkJrQyxLQUFLLENBQUN0TyxLQUFOLEdBQWMseUNBQWQ7UUFDSCxDQWRELGFBZWEsWUFBWTtVQUNyQnVmLE1BQU0sQ0FBQ3ZmLEtBQVAsR0FBZSxLQUFmO1VBQ0F3a0MsVUFBVSxDQUFDeGtDLEtBQVgsR0FBbUIsRUFBbkI7VUFDQWlrQyxJQUFJLENBQUNqa0MsS0FBTCxDQUFXQSxLQUFYLEdBQW1CLElBQW5CO1FBQ0gsQ0FuQkQ7TUFvQkgsQ0FsQ0QsTUFtQ0s7UUFDRDJrQyxlQUFlLENBQUMza0MsS0FBaEIsR0FBd0IsSUFBeEI7TUFDSDtJQUNKOztJQUNELFNBQVM4c0IsZUFBVCxDQUF5QmxTLFdBQXpCLEVBQXNDa2UsU0FBdEMsRUFBaUQ7TUFDN0MsSUFBSUEsU0FBUyxLQUFLLEtBQUssQ0FBdkIsRUFBMEI7UUFBRUEsU0FBUyxHQUFHLEVBQVo7TUFBaUI7O01BQzdDLElBQUluM0IsTUFBTSxHQUFHLG9CQUFvQkMsTUFBcEIsQ0FBMkJnWixXQUEzQixDQUFiO01BQ0EsSUFBSWdpQixNQUFNLEdBQUcsSUFBSWh4QixlQUFKLEVBQWI7TUFDQWd4QixNQUFNLENBQUNtRixNQUFQLENBQWMsT0FBZCxFQUF1QixHQUF2Qjs7TUFDQSxJQUFJakosU0FBSixFQUFlO1FBQ1g4RCxNQUFNLENBQUNtRixNQUFQLENBQWMsU0FBZCxFQUF5QixZQUF6QjtRQUNBbkYsTUFBTSxDQUFDbUYsTUFBUCxDQUFjLFdBQWQsRUFBMkJqSixTQUEzQjtNQUNIOztNQUNELElBQUl2dEIsV0FBVyxDQUFDdkwsS0FBaEIsRUFBdUI7UUFDbkI0OEIsTUFBTSxDQUFDbUYsTUFBUCxDQUFjLEdBQWQsRUFBbUJ4MkIsV0FBVyxDQUFDdkwsS0FBL0I7TUFDSDs7TUFDRE0sT0FBTyxXQUFQLENBQWdCK0MsR0FBaEIsQ0FBb0IxQixNQUFwQixFQUE0QjtRQUFFaTdCLE1BQU0sRUFBRUE7TUFBVixDQUE1QixFQUFnRDE2QixJQUFoRCxDQUFxRCxVQUFVQyxHQUFWLEVBQWU7UUFDaEUsSUFBSXlMLFFBQVEsR0FBR3pMLEdBQUcsQ0FBQ0ssSUFBbkI7UUFDQTNDLE1BQU0sQ0FBQ29RLE1BQVAsQ0FBY3hDLFVBQWQsRUFBMEJHLFFBQVEsQ0FBQ3BMLElBQW5DO1FBQ0FpVSxPQUFPLENBQUN6VyxLQUFSLEdBQWdCLENBQUM0TixRQUFRLENBQUNwTCxJQUFULENBQWNBLElBQWQsQ0FBbUI0RCxNQUFwQztNQUNILENBSkQ7SUFLSDs7SUFDRCxJQUFJMitCLFlBQVksR0FBRyxTQUFmQSxZQUFlLEdBQVk7TUFDM0J6a0MsT0FBTyxXQUFQLFdBQXVCLGFBQXZCLEVBQXNDNEIsSUFBdEMsQ0FBMkMsVUFBVUMsR0FBVixFQUFlO1FBQ3REaWMsT0FBTyxDQUFDcGUsS0FBUixHQUFnQixLQUFoQjtRQUNBd2tDLFVBQVUsQ0FBQ3hrQyxLQUFYLEdBQW1CLEVBQW5CO1FBQ0Fpa0MsSUFBSSxDQUFDamtDLEtBQUwsQ0FBV0EsS0FBWCxHQUFtQixJQUFuQjtRQUNBMmtDLGVBQWUsQ0FBQzNrQyxLQUFoQixHQUF3QixLQUF4QjtRQUNBLElBQUk0TixRQUFRLEdBQUd6TCxHQUFHLENBQUNLLElBQW5CO1FBQ0FtRixlQUFlLENBQUMzSCxLQUFoQixHQUF3QixJQUF4QjtRQUNBMEosVUFBVSxDQUFDLFlBQVk7VUFBRSxPQUFRL0IsZUFBZSxDQUFDM0gsS0FBaEIsR0FBd0IsS0FBaEM7UUFBeUMsQ0FBeEQsRUFBMEQsS0FBMUQsQ0FBVjtRQUNBK0gsWUFBWSxDQUFDL0gsS0FBYixHQUFxQjROLFFBQVEsQ0FBQ25FLE9BQTlCO1FBQ0F6QixTQUFTLENBQUNoSSxLQUFWLEdBQWtCNE4sUUFBUSxDQUFDckssT0FBM0I7TUFDSCxDQVZEO0lBV0gsQ0FaRDs7SUFhQSxJQUFJcW9CLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBc0IsR0FBWTtNQUNsQyxJQUFJQyxXQUFXLEdBQUc5ZCxXQUFXLENBQUMsWUFBWTtRQUN0Q29WLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLFNBQVosRUFBdUJoRixPQUF2QjtRQUNBOWQsT0FBTyxXQUFQLENBQWdCK0MsR0FBaEIsQ0FBb0Isb0JBQXBCLEVBQTBDbkIsSUFBMUMsQ0FBK0MsVUFBVUMsR0FBVixFQUFlO1VBQzFELElBQUl2QixFQUFKLEVBQVF5RyxFQUFSLEVBQVkrQixFQUFaLEVBQWdCeU0sRUFBaEIsRUFBb0JDLEVBQXBCLEVBQXdCZ1csRUFBeEIsRUFBNEJDLEVBQTVCLEVBQWdDQyxFQUFoQyxFQUFvQ0MsRUFBcEMsRUFBd0NDLEVBQXhDLEVBQTRDaVosRUFBNUMsRUFBZ0RDLEVBQWhEOztVQUNBLElBQUksQ0FBQyxDQUFDeGtDLEVBQUUsR0FBR3VCLEdBQUcsQ0FBQ0ssSUFBSixDQUFTQSxJQUFmLE1BQXlCLElBQXpCLElBQWlDNUIsRUFBRSxLQUFLLEtBQUssQ0FBN0MsR0FBaUQsS0FBSyxDQUF0RCxHQUEwREEsRUFBRSxDQUFDNkksT0FBOUQsTUFBMkUsU0FBL0UsRUFBMEY7WUFDdEY7WUFDQTRULFVBQVUsQ0FBQ3JkLEtBQVgsR0FBbUIsSUFBbkI7WUFDQXNkLGNBQWMsQ0FBQ3RkLEtBQWYsR0FBdUIsQ0FBdkI7WUFDQXVkLFNBQVMsQ0FBQ3ZkLEtBQVYsR0FBa0IsS0FBbEI7WUFDQStkLGdCQUFnQixDQUFDL2QsS0FBakIsR0FBeUIsRUFBekI7VUFDSCxDQU5ELE1BT0s7WUFDRHFkLFVBQVUsQ0FBQ3JkLEtBQVgsR0FBbUIsQ0FBQ3FILEVBQUUsR0FBR2xGLEdBQUcsQ0FBQ0ssSUFBSixDQUFTQSxJQUFmLE1BQXlCLElBQXpCLElBQWlDNkUsRUFBRSxLQUFLLEtBQUssQ0FBN0MsR0FBaUQsS0FBSyxDQUF0RCxHQUEwREEsRUFBRSxDQUFDOGtCLFdBQWhGO1lBQ0E3TyxjQUFjLENBQUN0ZCxLQUFmLEdBQXVCLENBQUNvSixFQUFFLEdBQUdqSCxHQUFHLENBQUNLLElBQUosQ0FBU0EsSUFBZixNQUF5QixJQUF6QixJQUFpQzRHLEVBQUUsS0FBSyxLQUFLLENBQTdDLEdBQWlELEtBQUssQ0FBdEQsR0FBMERBLEVBQUUsQ0FBQ2dqQixlQUFwRjtZQUNBN08sU0FBUyxDQUFDdmQsS0FBVixHQUFrQixFQUFFLENBQUM2VixFQUFFLEdBQUcxVCxHQUFHLENBQUNLLElBQUosQ0FBU0EsSUFBZixNQUF5QixJQUF6QixJQUFpQ3FULEVBQUUsS0FBSyxLQUFLLENBQTdDLEdBQWlELEtBQUssQ0FBdEQsR0FBMERBLEVBQUUsQ0FBQ3RTLE9BQS9ELENBQWxCO1lBQ0F3YSxnQkFBZ0IsQ0FBQy9kLEtBQWpCLEdBQXlCLENBQUM4VixFQUFFLEdBQUczVCxHQUFHLENBQUNLLElBQUosQ0FBU0EsSUFBZixNQUF5QixJQUF6QixJQUFpQ3NULEVBQUUsS0FBSyxLQUFLLENBQTdDLEdBQWlELEtBQUssQ0FBdEQsR0FBMERBLEVBQUUsQ0FBQ3JNLE9BQXRGO1VBQ0g7O1VBQ0QsSUFBSSxDQUFDLENBQUNxaUIsRUFBRSxHQUFHM3BCLEdBQUcsQ0FBQ0ssSUFBSixDQUFTQSxJQUFmLE1BQXlCLElBQXpCLElBQWlDc3BCLEVBQUUsS0FBSyxLQUFLLENBQTdDLEdBQWlELEtBQUssQ0FBdEQsR0FBMERBLEVBQUUsQ0FBQ3JpQixPQUE5RCxNQUEyRSxZQUEvRSxFQUE2RjtZQUN6RnVVLFVBQVUsQ0FBQ2hlLEtBQVgsR0FBbUIsSUFBbkI7VUFDSDs7VUFDRCxJQUFJLEVBQUUsQ0FBQ2dzQixFQUFFLEdBQUcsQ0FBQ0QsRUFBRSxHQUFHNXBCLEdBQUcsQ0FBQ0ssSUFBVixNQUFvQixJQUFwQixJQUE0QnVwQixFQUFFLEtBQUssS0FBSyxDQUF4QyxHQUE0QyxLQUFLLENBQWpELEdBQXFEQSxFQUFFLENBQUN2cEIsSUFBOUQsTUFBd0UsSUFBeEUsSUFBZ0Z3cEIsRUFBRSxLQUFLLEtBQUssQ0FBNUYsR0FBZ0csS0FBSyxDQUFyRyxHQUF5R0EsRUFBRSxDQUFDem9CLE9BQTlHLEtBQTBILENBQUMsQ0FBQzJvQixFQUFFLEdBQUcsQ0FBQ0QsRUFBRSxHQUFHOXBCLEdBQUcsQ0FBQ0ssSUFBVixNQUFvQixJQUFwQixJQUE0QnlwQixFQUFFLEtBQUssS0FBSyxDQUF4QyxHQUE0QyxLQUFLLENBQWpELEdBQXFEQSxFQUFFLENBQUN6cEIsSUFBOUQsTUFBd0UsSUFBeEUsSUFBZ0YwcEIsRUFBRSxLQUFLLEtBQUssQ0FBNUYsR0FBZ0csS0FBSyxDQUFyRyxHQUF5R0EsRUFBRSxDQUFDemlCLE9BQTdHLE1BQTBILFVBQXhQLEVBQW9RO1lBQ2hRd0UsYUFBYSxDQUFDNGQsV0FBRCxDQUFiO1VBQ0g7O1VBQ0QsSUFBSSxDQUFDLENBQUN1WixFQUFFLEdBQUcsQ0FBQ0QsRUFBRSxHQUFHaGpDLEdBQUcsQ0FBQ0ssSUFBVixNQUFvQixJQUFwQixJQUE0QjJpQyxFQUFFLEtBQUssS0FBSyxDQUF4QyxHQUE0QyxLQUFLLENBQWpELEdBQXFEQSxFQUFFLENBQUMzaUMsSUFBOUQsTUFBd0UsSUFBeEUsSUFBZ0Y0aUMsRUFBRSxLQUFLLEtBQUssQ0FBNUYsR0FBZ0csS0FBSyxDQUFyRyxHQUF5R0EsRUFBRSxDQUFDMzdCLE9BQTdHLE1BQTBILFVBQTlILEVBQTBJO1lBQ3RJK2hCLGNBQWMsQ0FBQ3hyQixLQUFmLEdBQXVCLElBQXZCO1VBQ0g7UUFDSixDQXhCRDtNQXlCSCxDQTNCNEIsRUEyQjFCLElBM0IwQixDQUE3QjtJQTRCSCxDQTdCRDs7SUE4QkEsSUFBSXdzQixjQUFjLEdBQUcsU0FBakJBLGNBQWlCLEdBQVk7TUFDN0Jsc0IsT0FBTyxXQUFQLENBQWdCK0MsR0FBaEIsQ0FBb0IsNkJBQXBCLEVBQW1EbkIsSUFBbkQsQ0FBd0QsVUFBVUMsR0FBVixFQUFlO1FBQ25FLElBQUl2QixFQUFKLEVBQVF5RyxFQUFSLEVBQVkrQixFQUFaLEVBQWdCeU0sRUFBaEIsRUFBb0JDLEVBQXBCLEVBQXdCZ1csRUFBeEIsRUFBNEJDLEVBQTVCLEVBQWdDQyxFQUFoQzs7UUFDQVIsY0FBYyxDQUFDeHJCLEtBQWYsR0FBdUIsS0FBdkI7UUFDQW9kLFlBQVksQ0FBQ3BkLEtBQWIsR0FBcUIsQ0FBQ3FILEVBQUUsR0FBRyxDQUFDekcsRUFBRSxHQUFHdUIsR0FBRyxLQUFLLElBQVIsSUFBZ0JBLEdBQUcsS0FBSyxLQUFLLENBQTdCLEdBQWlDLEtBQUssQ0FBdEMsR0FBMENBLEdBQUcsQ0FBQ0ssSUFBcEQsTUFBOEQsSUFBOUQsSUFBc0U1QixFQUFFLEtBQUssS0FBSyxDQUFsRixHQUFzRixLQUFLLENBQTNGLEdBQStGQSxFQUFFLENBQUMwSyxNQUF4RyxNQUFvSCxJQUFwSCxJQUE0SGpFLEVBQUUsS0FBSyxLQUFLLENBQXhJLEdBQTRJLEtBQUssQ0FBakosR0FBcUpBLEVBQUUsQ0FBQ29sQixRQUE3SztRQUNBalAsZUFBZSxDQUFDeGQsS0FBaEIsR0FBd0IyZCxlQUFlLENBQUNQLFlBQVksQ0FBQ3BkLEtBQWQsQ0FBdkM7UUFDQW9lLE9BQU8sQ0FBQ3BlLEtBQVIsR0FBZ0JILE1BQU0sQ0FBQzBQLElBQVAsQ0FBWXBOLEdBQUcsQ0FBQ0ssSUFBSixDQUFTOEksTUFBckIsRUFBNkJsRixNQUE3QixHQUFzQyxDQUF0RDs7UUFDQSxJQUFJLENBQUMsQ0FBQ3lQLEVBQUUsR0FBRyxDQUFDek0sRUFBRSxHQUFHakgsR0FBRyxLQUFLLElBQVIsSUFBZ0JBLEdBQUcsS0FBSyxLQUFLLENBQTdCLEdBQWlDLEtBQUssQ0FBdEMsR0FBMENBLEdBQUcsQ0FBQ0ssSUFBcEQsTUFBOEQsSUFBOUQsSUFBc0U0RyxFQUFFLEtBQUssS0FBSyxDQUFsRixHQUFzRixLQUFLLENBQTNGLEdBQStGQSxFQUFFLENBQUNrQyxNQUF4RyxNQUFvSCxJQUFwSCxJQUE0SHVLLEVBQUUsS0FBSyxLQUFLLENBQXhJLEdBQTRJLEtBQUssQ0FBakosR0FBcUpBLEVBQUUsQ0FBQ3ZLLE1BQXpKLE1BQXFLLFdBQXpLLEVBQXNMO1VBQ2xMa2dCLGNBQWMsQ0FBQ3hyQixLQUFmLEdBQXVCLElBQXZCO1FBQ0gsQ0FGRCxNQUdLLElBQUksQ0FBQyxDQUFDOHJCLEVBQUUsR0FBRyxDQUFDaFcsRUFBRSxHQUFHM1QsR0FBRyxLQUFLLElBQVIsSUFBZ0JBLEdBQUcsS0FBSyxLQUFLLENBQTdCLEdBQWlDLEtBQUssQ0FBdEMsR0FBMENBLEdBQUcsQ0FBQ0ssSUFBcEQsTUFBOEQsSUFBOUQsSUFBc0VzVCxFQUFFLEtBQUssS0FBSyxDQUFsRixHQUFzRixLQUFLLENBQTNGLEdBQStGQSxFQUFFLENBQUN4SyxNQUF4RyxNQUFvSCxJQUFwSCxJQUE0SHdnQixFQUFFLEtBQUssS0FBSyxDQUF4SSxHQUE0SSxLQUFLLENBQWpKLEdBQXFKQSxFQUFFLENBQUN4Z0IsTUFBekosTUFBcUssUUFBekssRUFBbUw7VUFDcExpUyxTQUFTLENBQUN2ZCxLQUFWLEdBQWtCLElBQWxCO1VBQ0ErZCxnQkFBZ0IsQ0FBQy9kLEtBQWpCLEdBQXlCLENBQUNnc0IsRUFBRSxHQUFHLENBQUNELEVBQUUsR0FBRzVwQixHQUFHLEtBQUssSUFBUixJQUFnQkEsR0FBRyxLQUFLLEtBQUssQ0FBN0IsR0FBaUMsS0FBSyxDQUF0QyxHQUEwQ0EsR0FBRyxDQUFDSyxJQUFwRCxNQUE4RCxJQUE5RCxJQUFzRXVwQixFQUFFLEtBQUssS0FBSyxDQUFsRixHQUFzRixLQUFLLENBQTNGLEdBQStGQSxFQUFFLENBQUN6Z0IsTUFBeEcsTUFBb0gsSUFBcEgsSUFBNEgwZ0IsRUFBRSxLQUFLLEtBQUssQ0FBeEksR0FBNEksS0FBSyxDQUFqSixHQUFxSkEsRUFBRSxDQUFDdmlCLE9BQWpMO1FBQ0gsQ0FISSxNQUlBLElBQUk1SixNQUFNLENBQUMwUCxJQUFQLENBQVlwTixHQUFHLENBQUNLLElBQUosQ0FBUzhJLE1BQXJCLEVBQTZCbEYsTUFBN0IsR0FBc0MsQ0FBMUMsRUFBNkM7VUFDOUM7WUFDSTtZQUNBaVgsVUFBVSxDQUFDcmQsS0FBWCxHQUFtQixJQUFuQjtZQUNBZ2UsVUFBVSxDQUFDaGUsS0FBWCxHQUFtQixLQUFuQjtZQUNBc2QsY0FBYyxDQUFDdGQsS0FBZixHQUF1QixDQUF2QjtZQUNBdWQsU0FBUyxDQUFDdmQsS0FBVixHQUFrQixLQUFsQjtZQUNBK2QsZ0JBQWdCLENBQUMvZCxLQUFqQixHQUF5QixFQUF6QjtZQUNBNHJCLG1CQUFtQjtVQUN0QjtRQUNKO01BQ0osQ0F4QkQ7SUF5QkgsQ0ExQkQ7O0lBMkJBLENBQUMsR0FBR3pyQixLQUFLLENBQUNncUIsT0FBVixFQUFtQixrQkFBbkIsRUFBdUNwTSxnQkFBdkM7SUFDQSxDQUFDLEdBQUc1ZCxLQUFLLENBQUNncUIsT0FBVixFQUFtQixnQkFBbkIsRUFBcUM3WixjQUFyQztJQUNBLENBQUMsR0FBR25RLEtBQUssQ0FBQ2dxQixPQUFWLEVBQW1CLFdBQW5CLEVBQWdDcUIsY0FBaEM7SUFDQSxDQUFDLEdBQUdyckIsS0FBSyxDQUFDZ3FCLE9BQVYsRUFBbUIsWUFBbkIsRUFBaUNuTSxVQUFqQztJQUNBLENBQUMsR0FBRzdkLEtBQUssQ0FBQzhJLEtBQVYsRUFBaUIsWUFBWTtNQUFFLE9BQU9uSSxLQUFLLENBQUNvSSxLQUFOLENBQVk4VixtQkFBbkI7SUFBeUMsQ0FBeEUsRUFBMEUsVUFBVWhmLEtBQVYsRUFBaUI7TUFDdkYsSUFBSUEsS0FBSixFQUFXO1FBQ1BzZSxpQkFBaUIsQ0FBQ3RlLEtBQWxCLEdBQTBCLElBQTFCO1FBQ0FjLEtBQUssQ0FBQ1ksUUFBTixDQUFlLHdCQUFmLEVBQXlDLEtBQXpDO01BQ0g7SUFDSixDQUxELEVBS0c7TUFBRXdPLElBQUksRUFBRTtJQUFSLENBTEg7SUFNQSxDQUFDLEdBQUcvUCxLQUFLLENBQUNtTSxXQUFWLEVBQXVCLFlBQVk7TUFDL0JpNEIsbUJBQW1CLENBQUN2a0MsS0FBcEIsR0FBNEIsS0FBNUI7SUFDSCxDQUZEO0lBR0EsQ0FBQyxHQUFHRyxLQUFLLENBQUNnQixTQUFWLEVBQXFCLFlBQVk7TUFDN0IyckIsZUFBZSxDQUFDLENBQUQsQ0FBZjtNQUNBTixjQUFjO01BQ2RGLG1CQUFtQjtNQUNuQnBoQixvQkFBb0IsQ0FBQ2xMLEtBQXJCLEdBQ0lnTCxFQUFFLENBQUNoTCxLQUFILENBQVNrTCxvQkFBVCxJQUFpQ3JMLE1BQU0sQ0FBQzBQLElBQVAsQ0FBWXZFLEVBQUUsQ0FBQ2hMLEtBQUgsQ0FBU2tMLG9CQUFyQixDQURyQztNQUVBcTVCLG1CQUFtQixDQUFDdmtDLEtBQXBCLEdBQTRCLElBQTVCO0lBQ0gsQ0FQRDtJQVFBLENBQUMsR0FBR0csS0FBSyxDQUFDZ3FCLE9BQVYsRUFBbUIsa0JBQW5CLEVBQXVDcE0sZ0JBQXZDO0lBQ0EsQ0FBQyxHQUFHNWQsS0FBSyxDQUFDZ3FCLE9BQVYsRUFBbUIsZ0JBQW5CLEVBQXFDN1osY0FBckM7SUFDQSxDQUFDLEdBQUduUSxLQUFLLENBQUNncUIsT0FBVixFQUFtQixxQkFBbkIsRUFBMENvYSxtQkFBMUM7SUFDQSxDQUFDLEdBQUdwa0MsS0FBSyxDQUFDZ3FCLE9BQVYsRUFBbUIsYUFBbkIsRUFBa0MxTCxXQUFsQztJQUNBLENBQUMsR0FBR3RlLEtBQUssQ0FBQ2dxQixPQUFWLEVBQW1CLG1CQUFuQixFQUF3Qy9tQixpQkFBeEM7SUFDQSxDQUFDLEdBQUdqRCxLQUFLLENBQUNncUIsT0FBVixFQUFtQixnQkFBbkIsRUFBcUN0b0IsY0FBckM7SUFDQSxDQUFDLEdBQUcxQixLQUFLLENBQUNncUIsT0FBVixFQUFtQixZQUFuQixFQUFpQ2pmLG9CQUFqQztJQUNBLENBQUMsR0FBRy9LLEtBQUssQ0FBQ2dxQixPQUFWLEVBQW1CLFdBQW5CLEVBQWdDem1CLFNBQWhDO0lBQ0EsSUFBSUUsWUFBWSxHQUFHO01BQUUyZ0MsbUJBQW1CLEVBQUVBLG1CQUF2QjtNQUE0Q3htQixnQkFBZ0IsRUFBRUEsZ0JBQTlEO01BQWdGeW1CLFVBQVUsRUFBRUEsVUFBNUY7TUFBd0dDLG9CQUFvQixFQUFFQSxvQkFBOUg7TUFBb0pybkIsWUFBWSxFQUFFQSxZQUFsSztNQUFnTDFaLFNBQVMsRUFBRUEsU0FBM0w7TUFBc01OLGlCQUFpQixFQUFFQSxpQkFBek47TUFBNE9rYixpQkFBaUIsRUFBRUEsaUJBQS9QO01BQWtScFQsb0JBQW9CLEVBQUVBLG9CQUF4UztNQUE4VG5ELFlBQVksRUFBRUEsWUFBNVU7TUFBMFZDLFNBQVMsRUFBRUEsU0FBclc7TUFBZ1gwOEIsZ0JBQWdCLEVBQUVBLGdCQUFsWTtNQUFvWmp1QixPQUFPLEVBQUVBLE9BQTdaO01BQXNhOEcsU0FBUyxFQUFFQSxTQUFqYjtNQUE0YkMsZUFBZSxFQUFFQSxlQUE3YztNQUE4ZDdWLGVBQWUsRUFBRUEsZUFBL2U7TUFBZ2dCeVcsT0FBTyxFQUFFQSxPQUF6Z0I7TUFBa2hCdW1CLGVBQWUsRUFBRUEsZUFBbmlCO01BQW9qQmwzQixVQUFVLEVBQUVBLFVBQWhrQjtNQUE0a0IrcUIsY0FBYyxFQUFFQSxjQUE1bEI7TUFBNG1CaE4sY0FBYyxFQUFFQSxjQUE1bkI7TUFBNG9Cbk8sVUFBVSxFQUFFQSxVQUF4cEI7TUFBb3FCQyxjQUFjLEVBQUVBLGNBQXByQjtNQUFvc0IybUIsSUFBSSxFQUFFQSxJQUExc0I7TUFBZ3RCMzFCLEtBQUssRUFBRUEsS0FBdnRCO01BQTh0QmlSLE1BQU0sRUFBRUEsTUFBdHVCO01BQTh1QmlCLFVBQVUsRUFBRUEsVUFBMXZCO01BQXN3QjFmLEtBQUssRUFBRUEsS0FBN3dCO01BQW94QnlLLFdBQVcsRUFBRUEsV0FBanlCO01BQTh5QnV0QixTQUFTLEVBQUVBLFNBQXp6QjtNQUFvMEI5YSxVQUFVLEVBQUVBLFVBQWgxQjtNQUE0MUIrYSxnQkFBZ0IsRUFBRUEsZ0JBQTkyQjtNQUFnNEJsM0IsY0FBYyxFQUFFQSxjQUFoNUI7TUFBZzZCNGMsV0FBVyxFQUFFQSxXQUE3NkI7TUFBMDdCelQsRUFBRSxFQUFFQSxFQUE5N0I7TUFBazhCMlMsZUFBZSxFQUFFQSxlQUFuOUI7TUFBbytCck4sY0FBYyxFQUFFQSxjQUFwL0I7TUFBb2dDZ2MsbUJBQW1CLEVBQUVBLG1CQUF6aEM7TUFBOGlDc1ksWUFBWSxFQUFFQSxZQUE1akM7TUFBMGtDSSxZQUFZLEVBQUVBLFlBQXhsQztNQUFzbUNDLFNBQVMsRUFBRUEsU0FBam5DO01BQTRuQ2YsVUFBVSxFQUFFQSxVQUF4b0M7TUFBb3BDcFgsZUFBZSxFQUFFQSxlQUFycUM7TUFBc3JDaVksWUFBWSxFQUFFQSxZQUFwc0M7TUFBa3RDblosbUJBQW1CLEVBQUVBLG1CQUF2dUM7TUFBNHZDWSxjQUFjLEVBQUVBLGNBQTV3QztNQUE0eEMzUyxZQUFZLEVBQUVuQixxQkFBcUIsV0FBL3pDO01BQXkwQ3dPLFNBQVMsRUFBRVYsZUFBZSxXQUFuMkM7TUFBNjJDdk8sTUFBTSxFQUFFbUgsb0JBQW9CLFdBQXo0QztNQUFtNUNrTSxrQkFBa0IsRUFBRWIsd0JBQXdCLFdBQS83QztNQUF5OEMzbUIsS0FBSyxFQUFFekQsZ0JBQWdCLFdBQWgrQztNQUEwK0NtTSxLQUFLLEVBQUUvRixrQkFBa0IsV0FBbmdEO01BQTZnRHFwQixVQUFVLEVBQUVELFlBQVksV0FBcmlEO01BQStpRDFFLFVBQVUsRUFBRVAscUJBQXFCO0lBQWhsRCxDQUFuQjtJQUNBL3FCLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQjhELFlBQXRCLEVBQW9DLGlCQUFwQyxFQUF1RDtNQUFFRyxVQUFVLEVBQUUsS0FBZDtNQUFxQi9ELEtBQUssRUFBRTtJQUE1QixDQUF2RDtJQUNBLE9BQU80RCxZQUFQO0VBQ0g7QUFwVXdDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ3REYTs7QUFDYixJQUFJSSxTQUFTLEdBQUksUUFBUSxLQUFLQSxTQUFkLElBQTRCLFVBQVVDLE9BQVYsRUFBbUJDLFVBQW5CLEVBQStCQyxDQUEvQixFQUFrQ0MsU0FBbEMsRUFBNkM7RUFDckYsU0FBU0MsS0FBVCxDQUFlckUsS0FBZixFQUFzQjtJQUFFLE9BQU9BLEtBQUssWUFBWW1FLENBQWpCLEdBQXFCbkUsS0FBckIsR0FBNkIsSUFBSW1FLENBQUosQ0FBTSxVQUFVRyxPQUFWLEVBQW1CO01BQUVBLE9BQU8sQ0FBQ3RFLEtBQUQsQ0FBUDtJQUFpQixDQUE1QyxDQUFwQztFQUFvRjs7RUFDNUcsT0FBTyxLQUFLbUUsQ0FBQyxLQUFLQSxDQUFDLEdBQUdJLE9BQVQsQ0FBTixFQUF5QixVQUFVRCxPQUFWLEVBQW1CRSxNQUFuQixFQUEyQjtJQUN2RCxTQUFTQyxTQUFULENBQW1CekUsS0FBbkIsRUFBMEI7TUFBRSxJQUFJO1FBQUUwRSxJQUFJLENBQUNOLFNBQVMsQ0FBQ08sSUFBVixDQUFlM0UsS0FBZixDQUFELENBQUo7TUFBOEIsQ0FBcEMsQ0FBcUMsT0FBTzRFLENBQVAsRUFBVTtRQUFFSixNQUFNLENBQUNJLENBQUQsQ0FBTjtNQUFZO0lBQUU7O0lBQzNGLFNBQVNDLFFBQVQsQ0FBa0I3RSxLQUFsQixFQUF5QjtNQUFFLElBQUk7UUFBRTBFLElBQUksQ0FBQ04sU0FBUyxDQUFDLE9BQUQsQ0FBVCxDQUFtQnBFLEtBQW5CLENBQUQsQ0FBSjtNQUFrQyxDQUF4QyxDQUF5QyxPQUFPNEUsQ0FBUCxFQUFVO1FBQUVKLE1BQU0sQ0FBQ0ksQ0FBRCxDQUFOO01BQVk7SUFBRTs7SUFDOUYsU0FBU0YsSUFBVCxDQUFjSSxNQUFkLEVBQXNCO01BQUVBLE1BQU0sQ0FBQ0MsSUFBUCxHQUFjVCxPQUFPLENBQUNRLE1BQU0sQ0FBQzlFLEtBQVIsQ0FBckIsR0FBc0NxRSxLQUFLLENBQUNTLE1BQU0sQ0FBQzlFLEtBQVIsQ0FBTCxDQUFvQmtDLElBQXBCLENBQXlCdUMsU0FBekIsRUFBb0NJLFFBQXBDLENBQXRDO0lBQXNGOztJQUM5R0gsSUFBSSxDQUFDLENBQUNOLFNBQVMsR0FBR0EsU0FBUyxDQUFDWSxLQUFWLENBQWdCZixPQUFoQixFQUF5QkMsVUFBVSxJQUFJLEVBQXZDLENBQWIsRUFBeURTLElBQXpELEVBQUQsQ0FBSjtFQUNILENBTE0sQ0FBUDtBQU1ILENBUkQ7O0FBU0EsSUFBSU0sV0FBVyxHQUFJLFFBQVEsS0FBS0EsV0FBZCxJQUE4QixVQUFVaEIsT0FBVixFQUFtQmpCLElBQW5CLEVBQXlCO0VBQ3JFLElBQUlrQyxDQUFDLEdBQUc7SUFBRUMsS0FBSyxFQUFFLENBQVQ7SUFBWUMsSUFBSSxFQUFFLGdCQUFXO01BQUUsSUFBSUMsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFPLENBQVgsRUFBYyxNQUFNQSxDQUFDLENBQUMsQ0FBRCxDQUFQO01BQVksT0FBT0EsQ0FBQyxDQUFDLENBQUQsQ0FBUjtJQUFjLENBQXZFO0lBQXlFQyxJQUFJLEVBQUUsRUFBL0U7SUFBbUZDLEdBQUcsRUFBRTtFQUF4RixDQUFSO0VBQUEsSUFBc0dDLENBQXRHO0VBQUEsSUFBeUdDLENBQXpHO0VBQUEsSUFBNEdKLENBQTVHO0VBQUEsSUFBK0dLLENBQS9HO0VBQ0EsT0FBT0EsQ0FBQyxHQUFHO0lBQUVmLElBQUksRUFBRWdCLElBQUksQ0FBQyxDQUFELENBQVo7SUFBaUIsU0FBU0EsSUFBSSxDQUFDLENBQUQsQ0FBOUI7SUFBbUMsVUFBVUEsSUFBSSxDQUFDLENBQUQ7RUFBakQsQ0FBSixFQUE0RCxPQUFPQyxNQUFQLEtBQWtCLFVBQWxCLEtBQWlDRixDQUFDLENBQUNFLE1BQU0sQ0FBQ0MsUUFBUixDQUFELEdBQXFCLFlBQVc7SUFBRSxPQUFPLElBQVA7RUFBYyxDQUFqRixDQUE1RCxFQUFnSkgsQ0FBdko7O0VBQ0EsU0FBU0MsSUFBVCxDQUFjRyxDQUFkLEVBQWlCO0lBQUUsT0FBTyxVQUFVQyxDQUFWLEVBQWE7TUFBRSxPQUFPckIsSUFBSSxDQUFDLENBQUNvQixDQUFELEVBQUlDLENBQUosQ0FBRCxDQUFYO0lBQXNCLENBQTVDO0VBQStDOztFQUNsRSxTQUFTckIsSUFBVCxDQUFjc0IsRUFBZCxFQUFrQjtJQUNkLElBQUlSLENBQUosRUFBTyxNQUFNLElBQUlTLFNBQUosQ0FBYyxpQ0FBZCxDQUFOOztJQUNQLE9BQU9QLENBQUMsS0FBS0EsQ0FBQyxHQUFHLENBQUosRUFBT00sRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVZCxDQUFDLEdBQUcsQ0FBZCxDQUFaLENBQUQsRUFBZ0NBLENBQXZDO01BQTBDLElBQUk7UUFDMUMsSUFBSU0sQ0FBQyxHQUFHLENBQUosRUFBT0MsQ0FBQyxLQUFLSixDQUFDLEdBQUdXLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUSxDQUFSLEdBQVlQLENBQUMsQ0FBQyxRQUFELENBQWIsR0FBMEJPLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUVAsQ0FBQyxDQUFDLE9BQUQsQ0FBRCxLQUFlLENBQUNKLENBQUMsR0FBR0ksQ0FBQyxDQUFDLFFBQUQsQ0FBTixLQUFxQkosQ0FBQyxDQUFDYSxJQUFGLENBQU9ULENBQVAsQ0FBckIsRUFBZ0MsQ0FBL0MsQ0FBUixHQUE0REEsQ0FBQyxDQUFDZCxJQUFqRyxDQUFELElBQTJHLENBQUMsQ0FBQ1UsQ0FBQyxHQUFHQSxDQUFDLENBQUNhLElBQUYsQ0FBT1QsQ0FBUCxFQUFVTyxFQUFFLENBQUMsQ0FBRCxDQUFaLENBQUwsRUFBdUJqQixJQUE5SSxFQUFvSixPQUFPTSxDQUFQO1FBQ3BKLElBQUlJLENBQUMsR0FBRyxDQUFKLEVBQU9KLENBQVgsRUFBY1csRUFBRSxHQUFHLENBQUNBLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUSxDQUFULEVBQVlYLENBQUMsQ0FBQ3JGLEtBQWQsQ0FBTDs7UUFDZCxRQUFRZ0csRUFBRSxDQUFDLENBQUQsQ0FBVjtVQUNJLEtBQUssQ0FBTDtVQUFRLEtBQUssQ0FBTDtZQUFRWCxDQUFDLEdBQUdXLEVBQUo7WUFBUTs7VUFDeEIsS0FBSyxDQUFMO1lBQVFkLENBQUMsQ0FBQ0MsS0FBRjtZQUFXLE9BQU87Y0FBRW5GLEtBQUssRUFBRWdHLEVBQUUsQ0FBQyxDQUFELENBQVg7Y0FBZ0JqQixJQUFJLEVBQUU7WUFBdEIsQ0FBUDs7VUFDbkIsS0FBSyxDQUFMO1lBQVFHLENBQUMsQ0FBQ0MsS0FBRjtZQUFXTSxDQUFDLEdBQUdPLEVBQUUsQ0FBQyxDQUFELENBQU47WUFBV0EsRUFBRSxHQUFHLENBQUMsQ0FBRCxDQUFMO1lBQVU7O1VBQ3hDLEtBQUssQ0FBTDtZQUFRQSxFQUFFLEdBQUdkLENBQUMsQ0FBQ0ssR0FBRixDQUFNWSxHQUFOLEVBQUw7O1lBQWtCakIsQ0FBQyxDQUFDSSxJQUFGLENBQU9hLEdBQVA7O1lBQWM7O1VBQ3hDO1lBQ0ksSUFBSSxFQUFFZCxDQUFDLEdBQUdILENBQUMsQ0FBQ0ksSUFBTixFQUFZRCxDQUFDLEdBQUdBLENBQUMsQ0FBQ2UsTUFBRixHQUFXLENBQVgsSUFBZ0JmLENBQUMsQ0FBQ0EsQ0FBQyxDQUFDZSxNQUFGLEdBQVcsQ0FBWixDQUFuQyxNQUF1REosRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVLENBQVYsSUFBZUEsRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVLENBQWhGLENBQUosRUFBd0Y7Y0FBRWQsQ0FBQyxHQUFHLENBQUo7Y0FBTztZQUFXOztZQUM1RyxJQUFJYyxFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVUsQ0FBVixLQUFnQixDQUFDWCxDQUFELElBQU9XLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUVgsQ0FBQyxDQUFDLENBQUQsQ0FBVCxJQUFnQlcsRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRWCxDQUFDLENBQUMsQ0FBRCxDQUFoRCxDQUFKLEVBQTJEO2NBQUVILENBQUMsQ0FBQ0MsS0FBRixHQUFVYSxFQUFFLENBQUMsQ0FBRCxDQUFaO2NBQWlCO1lBQVE7O1lBQ3RGLElBQUlBLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFWLElBQWVkLENBQUMsQ0FBQ0MsS0FBRixHQUFVRSxDQUFDLENBQUMsQ0FBRCxDQUE5QixFQUFtQztjQUFFSCxDQUFDLENBQUNDLEtBQUYsR0FBVUUsQ0FBQyxDQUFDLENBQUQsQ0FBWDtjQUFnQkEsQ0FBQyxHQUFHVyxFQUFKO2NBQVE7WUFBUTs7WUFDckUsSUFBSVgsQ0FBQyxJQUFJSCxDQUFDLENBQUNDLEtBQUYsR0FBVUUsQ0FBQyxDQUFDLENBQUQsQ0FBcEIsRUFBeUI7Y0FBRUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQVg7O2NBQWdCSCxDQUFDLENBQUNLLEdBQUYsQ0FBTWMsSUFBTixDQUFXTCxFQUFYOztjQUFnQjtZQUFROztZQUNuRSxJQUFJWCxDQUFDLENBQUMsQ0FBRCxDQUFMLEVBQVVILENBQUMsQ0FBQ0ssR0FBRixDQUFNWSxHQUFOOztZQUNWakIsQ0FBQyxDQUFDSSxJQUFGLENBQU9hLEdBQVA7O1lBQWM7UUFYdEI7O1FBYUFILEVBQUUsR0FBR2hELElBQUksQ0FBQ2tELElBQUwsQ0FBVWpDLE9BQVYsRUFBbUJpQixDQUFuQixDQUFMO01BQ0gsQ0FqQnlDLENBaUJ4QyxPQUFPTixDQUFQLEVBQVU7UUFBRW9CLEVBQUUsR0FBRyxDQUFDLENBQUQsRUFBSXBCLENBQUosQ0FBTDtRQUFhYSxDQUFDLEdBQUcsQ0FBSjtNQUFRLENBakJPLFNBaUJFO1FBQUVELENBQUMsR0FBR0gsQ0FBQyxHQUFHLENBQVI7TUFBWTtJQWpCMUQ7O0lBa0JBLElBQUlXLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUSxDQUFaLEVBQWUsTUFBTUEsRUFBRSxDQUFDLENBQUQsQ0FBUjtJQUFhLE9BQU87TUFBRWhHLEtBQUssRUFBRWdHLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUUEsRUFBRSxDQUFDLENBQUQsQ0FBVixHQUFnQixLQUFLLENBQTlCO01BQWlDakIsSUFBSSxFQUFFO0lBQXZDLENBQVA7RUFDL0I7QUFDSixDQTFCRDs7QUEyQkEsSUFBSXJGLGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlDLEtBQUssR0FBR0QsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJd1kscUJBQXFCLEdBQUdoWixlQUFlLENBQUNRLG1CQUFPLENBQUMsNEZBQUQsQ0FBUixDQUEzQzs7QUFDQSxJQUFJa2Ysb0JBQW9CLEdBQUcxZixlQUFlLENBQUNRLG1CQUFPLENBQUMsNEdBQUQsQ0FBUixDQUExQzs7QUFDQSxJQUFJbWxDLHVCQUF1QixHQUFHM2xDLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyx5RkFBRCxDQUFSLENBQTdDOztBQUNBLElBQUlvbEMsaUJBQWlCLEdBQUc1bEMsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDZFQUFELENBQVIsQ0FBdkM7O0FBQ0EsSUFBSUksT0FBTyxHQUFHWixlQUFlLENBQUNRLG1CQUFPLENBQUMsNENBQUQsQ0FBUixDQUE3Qjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLFlBRGlDO0VBRXpDQyxLQUFLLEVBQUUsZUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUI7SUFDMUIsSUFBSXVRLEtBQUssR0FBRyxJQUFaOztJQUNBLElBQUl0USxNQUFNLEdBQUdELEVBQUUsQ0FBQ0MsTUFBaEI7SUFDQUEsTUFBTTtJQUNOLElBQUkwRyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSWlHLFVBQVUsR0FBRyxDQUFDLEdBQUd0TixLQUFLLENBQUM4SCxRQUFWLEVBQW9CLEVBQXBCLENBQWpCO0lBQ0EsSUFBSTBYLGtCQUFrQixHQUFHLENBQUMsR0FBR3hmLEtBQUssQ0FBQzhILFFBQVYsRUFBb0IsRUFBcEIsQ0FBekI7SUFDQSxJQUFJczlCLGFBQWEsR0FBRyxDQUFDLEdBQUdwbEMsS0FBSyxDQUFDYyxHQUFWLEVBQWUsQ0FBZixDQUFwQjtJQUNBLElBQUl1a0MsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHcmxDLEtBQUssQ0FBQ2MsR0FBVixFQUFlLENBQWYsQ0FBdkI7SUFDQSxJQUFJc2UsTUFBTSxHQUFHLENBQUMsR0FBR3BmLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBYjtJQUNBLElBQUlna0MsU0FBUyxHQUFHLENBQUMsR0FBRzlrQyxLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQWhCO0lBQ0EsSUFBSXVmLFVBQVUsR0FBRyxDQUFDLEdBQUdyZ0IsS0FBSyxDQUFDYyxHQUFWLEVBQWVzRyxTQUFTLENBQUN3QixVQUFWLENBQXFCLGFBQXJCLENBQWYsQ0FBakI7SUFDQSxJQUFJMDhCLFFBQVEsR0FBRyxDQUFDLEdBQUd0bEMsS0FBSyxDQUFDYyxHQUFWLEVBQWUsRUFBZixDQUFmO0lBQ0EsSUFBSXlrQyxVQUFVLEdBQUcsQ0FBQyxHQUFHdmxDLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEVBQWYsQ0FBakI7SUFDQSxJQUFJMGtDLEtBQUo7O0lBQ0EsSUFBSUMsYUFBYSxHQUFHLFNBQWhCQSxhQUFnQixHQUFZO01BQUUsT0FBTzVoQyxTQUFTLENBQUNtTixLQUFELEVBQVEsS0FBSyxDQUFiLEVBQWdCLEtBQUssQ0FBckIsRUFBd0IsWUFBWTtRQUNsRixPQUFPbE0sV0FBVyxDQUFDLElBQUQsRUFBTyxVQUFVckUsRUFBVixFQUFjO1VBQ25DLFFBQVFBLEVBQUUsQ0FBQ3VFLEtBQVg7WUFDSSxLQUFLLENBQUw7Y0FBUSxPQUFPLENBQUM7Y0FBRTtjQUFILEVBQWMsQ0FBQyxHQUFHaEYsS0FBSyxDQUFDMGxDLFFBQVYsR0FBZCxDQUFQOztZQUNSLEtBQUssQ0FBTDtjQUNJamxDLEVBQUUsQ0FBQ3dFLElBQUg7O2NBQ0FzZ0MsVUFBVSxDQUFDMWxDLEtBQVgsR0FBbUJ5bEMsUUFBUSxLQUFLLElBQWIsSUFBcUJBLFFBQVEsS0FBSyxLQUFLLENBQXZDLEdBQTJDLEtBQUssQ0FBaEQsR0FBb0RBLFFBQVEsQ0FBQ3psQyxLQUFULENBQWUsR0FBZixFQUFvQjhsQyxXQUEzRjtjQUNBLE9BQU8sQ0FBQztjQUFFO2NBQUgsQ0FBUDtVQUxSO1FBT0gsQ0FSaUIsQ0FBbEI7TUFTSCxDQVZpRCxDQUFoQjtJQVU3QixDQVZMOztJQVdBLENBQUMsR0FBRzNsQyxLQUFLLENBQUNtTSxXQUFWLEVBQXVCLFlBQVk7TUFDL0IxSixNQUFNLENBQUN5USxtQkFBUCxDQUEyQixRQUEzQixFQUFxQ3V5QixhQUFyQztJQUNILENBRkQ7SUFHQSxDQUFDLEdBQUd6bEMsS0FBSyxDQUFDZ0IsU0FBVixFQUFxQixZQUFZO01BQzdCeUIsTUFBTSxDQUFDcVEsZ0JBQVAsQ0FBd0IsUUFBeEIsRUFBa0MyeUIsYUFBbEM7TUFDQXJtQixNQUFNLENBQUN2ZixLQUFQLEdBQWUsSUFBZjtNQUNBd2dCLFVBQVUsQ0FBQ3hnQixLQUFYLEdBQW1CdUgsU0FBUyxDQUFDd0IsVUFBVixDQUFxQixhQUFyQixDQUFuQjtNQUNBLElBQUlzRyxLQUFLLEdBQUcsQ0FBWjtNQUNBczJCLEtBQUssR0FBRzUzQixXQUFXLENBQUMsWUFBWTtRQUM1QnpOLE9BQU8sV0FBUCxDQUNLK0MsR0FETCxDQUNTLHNCQURULEVBRUtuQixJQUZMLENBRVUsVUFBVUMsR0FBVixFQUFlO1VBQ3JCdEMsTUFBTSxDQUFDb1EsTUFBUCxDQUFjeEMsVUFBZCxFQUEwQnRMLEdBQUcsQ0FBQ0ssSUFBSixDQUFTQSxJQUFuQztVQUNBZ2pDLGdCQUFnQixDQUFDeGxDLEtBQWpCLEdBQXlCbUMsR0FBRyxDQUFDSyxJQUFKLENBQVNBLElBQVQsQ0FBYzRELE1BQXZDOztVQUNBLElBQUlqRSxHQUFHLENBQUNLLElBQUosQ0FBUzhJLE1BQWIsRUFBcUI7WUFDakIyQyxhQUFhLENBQUMwM0IsS0FBRCxDQUFiO1lBQ0FwbUIsTUFBTSxDQUFDdmYsS0FBUCxHQUFlLEtBQWY7VUFDSDs7VUFDRCxJQUFJbUMsR0FBRyxDQUFDSyxJQUFKLENBQVM4SSxNQUFULEtBQW9CLE9BQXBCLElBQWdDLENBQUNuSixHQUFHLENBQUNLLElBQUosQ0FBU0EsSUFBVixJQUFrQjZNLEtBQUssSUFBSSxFQUEvRCxFQUFvRTtZQUNoRXBCLGFBQWEsQ0FBQzAzQixLQUFELENBQWI7WUFDQS9pQyxNQUFNLENBQUM4SCxRQUFQLENBQWdCL0gsSUFBaEIsR0FBdUIsYUFBdkI7VUFDSDs7VUFDRDBNLEtBQUs7VUFDTDNGLFVBQVUsQ0FBQ2s4QixhQUFELEVBQWdCLEdBQWhCLENBQVY7UUFDSCxDQWZELFdBZ0JXLFlBQVk7VUFDbkJybUIsTUFBTSxDQUFDdmYsS0FBUCxHQUFlLEtBQWY7VUFDQTRDLE1BQU0sQ0FBQzhILFFBQVAsQ0FBZ0IvSCxJQUFoQixHQUF1QixhQUF2QjtRQUNILENBbkJEO01Bb0JILENBckJrQixFQXFCaEIsSUFyQmdCLENBQW5CO0lBc0JILENBM0JEOztJQTRCQSxTQUFTb2pDLHdCQUFULENBQWtDOTJCLFdBQWxDLEVBQStDO01BQzNDLElBQUlxRCxLQUFLLEdBQUdxTixrQkFBa0IsQ0FBQzNRLE9BQW5CLENBQTJCQyxXQUEzQixDQUFaOztNQUNBLElBQUlwUCxNQUFNLENBQUMwUCxJQUFQLENBQVk5QixVQUFVLENBQUN3QixXQUFELENBQVYsQ0FBd0IsUUFBeEIsQ0FBWixFQUErQ0QsT0FBL0MsQ0FBdUQsVUFBdkQsTUFBdUUsQ0FBQyxDQUE1RSxFQUErRTtRQUMzRSxJQUFJc0QsS0FBSyxJQUFJLENBQWIsRUFBZ0I7VUFDWnFOLGtCQUFrQixDQUFDcW1CLE1BQW5CLENBQTBCMXpCLEtBQTFCLEVBQWlDLENBQWpDO1VBQ0FpekIsYUFBYSxDQUFDdmxDLEtBQWQsR0FBc0J1bEMsYUFBYSxDQUFDdmxDLEtBQWQsR0FBc0IsQ0FBNUM7UUFDSCxDQUhELE1BSUs7VUFDRDJmLGtCQUFrQixDQUFDdFosSUFBbkIsQ0FBd0I0SSxXQUF4QjtVQUNBczJCLGFBQWEsQ0FBQ3ZsQyxLQUFkLEdBQXNCdWxDLGFBQWEsQ0FBQ3ZsQyxLQUFkLEdBQXNCLENBQTVDO1FBQ0g7TUFDSjtJQUNKOztJQUNELFNBQVNpbUMsbUJBQVQsR0FBK0I7TUFDM0JoQixTQUFTLENBQUNqbEMsS0FBVixHQUFrQixDQUFDaWxDLFNBQVMsQ0FBQ2psQyxLQUE3QjtNQUNBdWxDLGFBQWEsQ0FBQ3ZsQyxLQUFkLEdBQXNCLENBQXRCO01BQ0EyZixrQkFBa0IsQ0FBQ3ZaLE1BQW5CLEdBQTRCLENBQTVCO01BQ0F2RyxNQUFNLENBQUMwUCxJQUFQLENBQVk5QixVQUFaLEVBQXdCN0MsT0FBeEIsQ0FBZ0MsVUFBVXFFLFdBQVYsRUFBdUI7UUFDbkQsSUFBSXFELEtBQUssR0FBR3FOLGtCQUFrQixDQUFDM1EsT0FBbkIsQ0FBMkJDLFdBQTNCLENBQVo7O1FBQ0EsSUFBSXBQLE1BQU0sQ0FBQzBQLElBQVAsQ0FBWTlCLFVBQVUsQ0FBQ3dCLFdBQUQsQ0FBVixDQUF3QixRQUF4QixDQUFaLEVBQStDRCxPQUEvQyxDQUF1RCxVQUF2RCxNQUF1RSxDQUFDLENBQTVFLEVBQStFO1VBQzNFLElBQUlpMkIsU0FBUyxDQUFDamxDLEtBQWQsRUFBcUI7WUFDakIyZixrQkFBa0IsQ0FBQ3RaLElBQW5CLENBQXdCNEksV0FBeEI7WUFDQXMyQixhQUFhLENBQUN2bEMsS0FBZCxHQUFzQnVsQyxhQUFhLENBQUN2bEMsS0FBZCxHQUFzQixDQUE1QztVQUNILENBSEQsTUFJSztZQUNEMmYsa0JBQWtCLENBQUNxbUIsTUFBbkIsQ0FBMEIxekIsS0FBMUIsRUFBaUMsQ0FBakM7VUFDSDtRQUNKO01BQ0osQ0FYRDs7TUFZQSxJQUFJLENBQUMyeUIsU0FBUyxDQUFDamxDLEtBQWYsRUFBc0I7UUFDbEJ1bEMsYUFBYSxDQUFDdmxDLEtBQWQsR0FBc0IsQ0FBdEI7TUFDSDtJQUNKOztJQUNELFNBQVNrbUMsZ0JBQVQsR0FBNEI7TUFDeEIxbEIsVUFBVSxDQUFDeGdCLEtBQVgsR0FBbUJ1SCxTQUFTLENBQUN3QixVQUFWLENBQXFCLHdCQUFyQixDQUFuQjtNQUNBd1csTUFBTSxDQUFDdmYsS0FBUCxHQUFlLElBQWY7TUFDQU0sT0FBTyxXQUFQLENBQ0srSyxJQURMLENBQ1Usa0JBRFYsRUFDOEI7UUFDMUJvQyxVQUFVLEVBQUVrUyxrQkFEYztRQUUxQndtQixRQUFRLEVBQUU7TUFGZ0IsQ0FEOUIsRUFLS2prQyxJQUxMLENBS1UsWUFBWTtRQUNsQlUsTUFBTSxDQUFDOEgsUUFBUCxDQUFnQi9ILElBQWhCLEdBQXVCLGFBQXZCO01BQ0gsQ0FQRCxXQVFXLFlBQVk7UUFDbkJDLE1BQU0sQ0FBQzhILFFBQVAsQ0FBZ0IvSCxJQUFoQixHQUF1QixhQUF2QjtNQUNILENBVkQ7SUFXSDs7SUFDRCxJQUFJaUIsWUFBWSxHQUFHO01BQUUyRCxTQUFTLEVBQUVBLFNBQWI7TUFBd0JrRyxVQUFVLEVBQUVBLFVBQXBDO01BQWdEa1Msa0JBQWtCLEVBQUVBLGtCQUFwRTtNQUF3RjRsQixhQUFhLEVBQUVBLGFBQXZHO01BQXNIQyxnQkFBZ0IsRUFBRUEsZ0JBQXhJO01BQTBKam1CLE1BQU0sRUFBRUEsTUFBbEs7TUFBMEswbEIsU0FBUyxFQUFFQSxTQUFyTDtNQUFnTXprQixVQUFVLEVBQUVBLFVBQTVNO01BQXdOaWxCLFFBQVEsRUFBRUEsUUFBbE87TUFBNE9DLFVBQVUsRUFBRUEsVUFBeFA7TUFBb1FDLEtBQUssRUFBRUEsS0FBM1E7TUFBa1JDLGFBQWEsRUFBRUEsYUFBalM7TUFBZ1RHLHdCQUF3QixFQUFFQSx3QkFBMVU7TUFBb1dFLG1CQUFtQixFQUFFQSxtQkFBelg7TUFBOFlDLGdCQUFnQixFQUFFQSxnQkFBaGE7TUFBa2Jyc0IsWUFBWSxFQUFFbkIscUJBQXFCLFdBQXJkO01BQStkVCxNQUFNLEVBQUVtSCxvQkFBb0IsV0FBM2Y7TUFBcWdCZ25CLFdBQVcsRUFBRWYsdUJBQXVCLFdBQXppQjtNQUFtakJnQixXQUFXLEVBQUVmLGlCQUFpQjtJQUFqbEIsQ0FBbkI7SUFDQXpsQyxNQUFNLENBQUNDLGNBQVAsQ0FBc0I4RCxZQUF0QixFQUFvQyxpQkFBcEMsRUFBdUQ7TUFBRUcsVUFBVSxFQUFFLEtBQWQ7TUFBcUIvRCxLQUFLLEVBQUU7SUFBNUIsQ0FBdkQ7SUFDQSxPQUFPNEQsWUFBUDtFQUNIO0FBOUd3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNqRGE7O0FBQ2IsSUFBSWxFLGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlxYSxvQkFBb0IsR0FBRzdhLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQywwRkFBRCxDQUFSLENBQTFDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLG1CQURpQztFQUV6Q0MsS0FBSyxFQUFFLGVBQVVDLE9BQVYsRUFBbUJDLEVBQW5CLEVBQXVCO0lBQzFCLElBQUlDLE1BQU0sR0FBR0QsRUFBRSxDQUFDQyxNQUFoQjtJQUNBQSxNQUFNO0lBQ04sSUFBSStDLFlBQVksR0FBRztNQUFFMGlDLE9BQU8sRUFBRS9yQixvQkFBb0I7SUFBL0IsQ0FBbkI7SUFDQTFhLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQjhELFlBQXRCLEVBQW9DLGlCQUFwQyxFQUF1RDtNQUFFRyxVQUFVLEVBQUUsS0FBZDtNQUFxQi9ELEtBQUssRUFBRTtJQUE1QixDQUF2RDtJQUNBLE9BQU80RCxZQUFQO0VBQ0g7QUFSd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDUGE7O0FBQ2IvRCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlDLEtBQUssR0FBR0QsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLGFBRGlDO0VBRXpDa0csS0FBSyxFQUFFO0lBQ0hpVixRQUFRLEVBQUU7TUFDTi9VLElBQUksRUFBRWhILE1BREE7TUFFTmlILFFBQVEsRUFBRTtJQUZKLENBRFA7SUFLSHdMLEtBQUssRUFBRTtNQUNIekwsSUFBSSxFQUFFdUosTUFESDtNQUVIdEosUUFBUSxFQUFFO0lBRlAsQ0FMSjtJQVNId1IsS0FBSyxFQUFFO01BQUV6UixJQUFJLEVBQUVPLE1BQVI7TUFBZ0JOLFFBQVEsRUFBRSxLQUExQjtNQUFpQyxXQUFTO0lBQTFDLENBVEo7SUFVSDZZLGtCQUFrQixFQUFFO01BQ2hCOVksSUFBSSxFQUFFdUosTUFEVTtNQUVoQnRKLFFBQVEsRUFBRTtJQUZNO0VBVmpCLENBRmtDO0VBaUJ6Q21HLEtBQUssRUFBRSxDQUFDLGVBQUQsQ0FqQmtDO0VBa0J6Q3ZNLEtBQUssRUFBRSxlQUFVQyxPQUFWLEVBQW1CQyxFQUFuQixFQUF1QjtJQUMxQixJQUFJQyxNQUFNLEdBQUdELEVBQUUsQ0FBQ0MsTUFBaEI7SUFBQSxJQUF3QnFNLElBQUksR0FBR3RNLEVBQUUsQ0FBQ3NNLElBQWxDO0lBQ0FyTSxNQUFNO0lBQ04sSUFBSThGLEtBQUssR0FBR2hHLE9BQVo7SUFDQSxJQUFJNEcsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLElBQUlrQixNQUFNLEdBQUcsQ0FBQyxHQUFHdkksS0FBSyxDQUFDYyxHQUFWLEVBQWUsS0FBZixDQUFiO0lBQ0EsSUFBSTZhLFlBQVksR0FBRyxDQUFDLEdBQUczYixLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQW5CO0lBQ0EsSUFBSSthLFNBQVMsR0FBRyxDQUFDLEdBQUc3YixLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQWhCO0lBQ0EsSUFBSWtiLFdBQVcsR0FBRyxDQUFDLEdBQUdoYyxLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQWxCO0lBQ0EsSUFBSXdNLFVBQVUsR0FBRyxDQUFDLEdBQUd0TixLQUFLLENBQUM4SCxRQUFWLEVBQW9CLEVBQXBCLENBQWpCO0lBQ0EsSUFBSThULGNBQWMsR0FBRyxDQUFDLEdBQUc1YixLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQXJCO0lBQ0EsSUFBSWdiLFdBQVcsR0FBRyxDQUFDLEdBQUc5YixLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQWxCO0lBQ0EsSUFBSWliLGFBQWEsR0FBRyxDQUFDLEdBQUcvYixLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQXBCOztJQUNBLFNBQVNzbEMsV0FBVCxHQUF1QjtNQUNuQjc5QixNQUFNLENBQUMxSSxLQUFQLEdBQWUsQ0FBQzBJLE1BQU0sQ0FBQzFJLEtBQXZCO0lBQ0g7O0lBQ0QsSUFBSXdtQyxhQUFhLEdBQUcsU0FBaEJBLGFBQWdCLENBQVVsMEIsS0FBVixFQUFpQjtNQUNqQ3BGLElBQUksQ0FBQyxlQUFELEVBQWtCb0YsS0FBbEIsQ0FBSjtJQUNILENBRkQ7O0lBR0EsSUFBSW9LLFdBQVcsR0FBRyxTQUFkQSxXQUFjLEdBQVk7TUFDMUIsSUFBSXJOLEtBQUssR0FBRyxDQUFaOztNQUNBLEtBQUssSUFBSXhJLElBQVQsSUFBaUJGLEtBQUssQ0FBQ2lWLFFBQU4sQ0FBZSxRQUFmLENBQWpCLEVBQTJDO1FBQ3ZDLEtBQUssSUFBSXRKLEtBQVQsSUFBa0IzTCxLQUFLLENBQUNpVixRQUFOLENBQWUsUUFBZixFQUF5Qi9VLElBQXpCLENBQWxCLEVBQWtEO1VBQzlDd0ksS0FBSyxJQUFJeFAsTUFBTSxDQUFDMFAsSUFBUCxDQUFZNUksS0FBSyxDQUFDaVYsUUFBTixDQUFlLFFBQWYsRUFBeUIvVSxJQUF6QixFQUErQnlMLEtBQS9CLENBQVosRUFBbURsTSxNQUE1RDtRQUNIO01BQ0o7O01BQ0QsT0FBT2lKLEtBQVA7SUFDSCxDQVJEOztJQVNBLElBQUl1Tix1QkFBdUIsR0FBRyxTQUExQkEsdUJBQTBCLENBQVVoWSxDQUFWLEVBQWE7TUFDdkMsSUFBSWhFLEVBQUo7O01BQ0FrYixZQUFZLENBQUM5YixLQUFiLEdBQXFCLENBQUM4YixZQUFZLENBQUM5YixLQUFuQztNQUNBLElBQUk2YyxhQUFhLEdBQUdqWSxDQUFDLENBQUNpWSxhQUF0QjtNQUNBLElBQUlDLE1BQU0sR0FBR0QsYUFBYSxDQUFDRSxhQUFkLENBQTRCemIsYUFBNUIsQ0FBMEMsOEJBQTFDLENBQWI7TUFDQSxJQUFJMGIsUUFBUSxHQUFHLENBQUNwYyxFQUFFLEdBQUdrYyxNQUFNLEtBQUssSUFBWCxJQUFtQkEsTUFBTSxLQUFLLEtBQUssQ0FBbkMsR0FBdUMsS0FBSyxDQUE1QyxHQUFnREEsTUFBTSxDQUFDeGIsYUFBUCxDQUFxQixvQkFBckIsQ0FBdEQsTUFBc0csSUFBdEcsSUFBOEdWLEVBQUUsS0FBSyxLQUFLLENBQTFILEdBQThILEtBQUssQ0FBbkksR0FBdUlBLEVBQUUsQ0FBQ3dKLFlBQXpKOztNQUNBLElBQUkyUixjQUFjLENBQUMvYixLQUFuQixFQUEwQjtRQUN0QixJQUFJOGMsTUFBTSxJQUFJLElBQWQsRUFBb0I7VUFDaEJBLE1BQU0sQ0FBQ3ZiLEtBQVAsQ0FBYTBiLE9BQWIsR0FBdUIsV0FBV3JiLE1BQVgsQ0FBa0JvYixRQUFsQixFQUE0QixLQUE1QixDQUF2QjtVQUNBdFQsVUFBVSxDQUFDLFlBQVk7WUFDbkJvVCxNQUFNLENBQUN2YixLQUFQLENBQWEwYixPQUFiLEdBQXVCLEVBQXZCO1VBQ0gsQ0FGUyxFQUVQLEdBRk8sQ0FBVjtVQUdBbEIsY0FBYyxDQUFDL2IsS0FBZixHQUF1QixLQUF2QjtRQUNIO01BQ0osQ0FSRCxNQVNLO1FBQ0QsSUFBSThjLE1BQU0sSUFBSSxJQUFkLEVBQW9CO1VBQ2hCQSxNQUFNLENBQUN2YixLQUFQLENBQWEwYixPQUFiLEdBQXVCLFdBQVdyYixNQUFYLENBQWtCb2IsUUFBbEIsRUFBNEIsS0FBNUIsQ0FBdkI7VUFDQXRULFVBQVUsQ0FBQyxZQUFZO1lBQ25Cb1QsTUFBTSxDQUFDdmIsS0FBUCxDQUFhMGIsT0FBYixHQUF1QixlQUF2QjtVQUNILENBRlMsRUFFUCxHQUZPLENBQVY7VUFHQWxCLGNBQWMsQ0FBQy9iLEtBQWYsR0FBdUIsSUFBdkI7UUFDSDtNQUNKO0lBQ0osQ0F4QkQ7O0lBeUJBLElBQUltZCxvQkFBb0IsR0FBRyxTQUF2QkEsb0JBQXVCLENBQVV2WSxDQUFWLEVBQWE7TUFDcEMsSUFBSWhFLEVBQUo7O01BQ0FvYixTQUFTLENBQUNoYyxLQUFWLEdBQWtCLENBQUNnYyxTQUFTLENBQUNoYyxLQUE3QjtNQUNBLElBQUk2YyxhQUFhLEdBQUdqWSxDQUFDLENBQUNpWSxhQUF0QjtNQUNBLElBQUlDLE1BQU0sR0FBR0QsYUFBYSxDQUFDRSxhQUFkLENBQTRCemIsYUFBNUIsQ0FBMEMsMkJBQTFDLENBQWI7TUFDQSxJQUFJMGIsUUFBUSxHQUFHLENBQUNwYyxFQUFFLEdBQUdrYyxNQUFNLEtBQUssSUFBWCxJQUFtQkEsTUFBTSxLQUFLLEtBQUssQ0FBbkMsR0FBdUMsS0FBSyxDQUE1QyxHQUFnREEsTUFBTSxDQUFDeGIsYUFBUCxDQUFxQixpQkFBckIsQ0FBdEQsTUFBbUcsSUFBbkcsSUFBMkdWLEVBQUUsS0FBSyxLQUFLLENBQXZILEdBQTJILEtBQUssQ0FBaEksR0FBb0lBLEVBQUUsQ0FBQ3dKLFlBQXRKOztNQUNBLElBQUk2UixXQUFXLENBQUNqYyxLQUFoQixFQUF1QjtRQUNuQixJQUFJOGMsTUFBTSxJQUFJLElBQWQsRUFBb0I7VUFDaEJBLE1BQU0sQ0FBQ3ZiLEtBQVAsQ0FBYTBiLE9BQWIsR0FBdUIsV0FBV3JiLE1BQVgsQ0FBa0JvYixRQUFsQixFQUE0QixLQUE1QixDQUF2QjtVQUNBdFQsVUFBVSxDQUFDLFlBQVk7WUFDbkJvVCxNQUFNLENBQUN2YixLQUFQLENBQWEwYixPQUFiLEdBQXVCLEVBQXZCO1VBQ0gsQ0FGUyxFQUVQLEdBRk8sQ0FBVjtVQUdBaEIsV0FBVyxDQUFDamMsS0FBWixHQUFvQixLQUFwQjtRQUNIO01BQ0osQ0FSRCxNQVNLO1FBQ0QsSUFBSThjLE1BQU0sSUFBSSxJQUFkLEVBQW9CO1VBQ2hCQSxNQUFNLENBQUN2YixLQUFQLENBQWEwYixPQUFiLEdBQXVCLFdBQVdyYixNQUFYLENBQWtCb2IsUUFBbEIsRUFBNEIsS0FBNUIsQ0FBdkI7VUFDQXRULFVBQVUsQ0FBQyxZQUFZO1lBQ25Cb1QsTUFBTSxDQUFDdmIsS0FBUCxDQUFhMGIsT0FBYixHQUF1QixlQUF2QjtVQUNILENBRlMsRUFFUCxHQUZPLENBQVY7VUFHQWhCLFdBQVcsQ0FBQ2pjLEtBQVosR0FBb0IsSUFBcEI7UUFDSDtNQUNKO0lBQ0osQ0F4QkQ7O0lBeUJBLElBQUlvYyxXQUFXLEdBQUcsU0FBZEEsV0FBYyxDQUFVQyxZQUFWLEVBQXdCO01BQ3RDLElBQUloTixLQUFLLEdBQUcsQ0FBWixDQURzQyxDQUV0Qzs7TUFDQXhQLE1BQU0sQ0FBQ2tQLE1BQVAsQ0FBY3BJLEtBQUssQ0FBQ2lWLFFBQU4sQ0FBZSxRQUFmLEVBQXlCUyxZQUF6QixDQUFkLEVBQXNEOUMsR0FBdEQsQ0FBMEQsVUFBVUMsSUFBVixFQUFnQjtRQUN0RW5LLEtBQUssSUFBSXhQLE1BQU0sQ0FBQzBQLElBQVAsQ0FBWWlLLElBQVosRUFBa0JwVCxNQUEzQjtNQUNILENBRkQsRUFIc0MsQ0FNdEM7O01BQ0EsT0FBT2lKLEtBQVA7SUFDSCxDQVJEOztJQVNBLElBQUk2TixzQkFBc0IsR0FBRyxTQUF6QkEsc0JBQXlCLENBQVV0WSxDQUFWLEVBQWE7TUFDdEMsSUFBSWhFLEVBQUo7O01BQ0F1YixXQUFXLENBQUNuYyxLQUFaLEdBQW9CLENBQUNtYyxXQUFXLENBQUNuYyxLQUFqQztNQUNBLElBQUk2YyxhQUFhLEdBQUdqWSxDQUFDLENBQUNpWSxhQUF0QjtNQUNBLElBQUlDLE1BQU0sR0FBR0QsYUFBYSxDQUFDRSxhQUFkLENBQTRCemIsYUFBNUIsQ0FBMEMsNkJBQTFDLENBQWI7TUFDQSxJQUFJMGIsUUFBUSxHQUFHLENBQUNwYyxFQUFFLEdBQUdrYyxNQUFNLEtBQUssSUFBWCxJQUFtQkEsTUFBTSxLQUFLLEtBQUssQ0FBbkMsR0FBdUMsS0FBSyxDQUE1QyxHQUFnREEsTUFBTSxDQUFDeGIsYUFBUCxDQUFxQixtQkFBckIsQ0FBdEQsTUFBcUcsSUFBckcsSUFBNkdWLEVBQUUsS0FBSyxLQUFLLENBQXpILEdBQTZILEtBQUssQ0FBbEksR0FBc0lBLEVBQUUsQ0FBQ3dKLFlBQXhKOztNQUNBLElBQUk4UixhQUFhLENBQUNsYyxLQUFsQixFQUF5QjtRQUNyQixJQUFJOGMsTUFBTSxJQUFJLElBQWQsRUFBb0I7VUFDaEJBLE1BQU0sQ0FBQ3ZiLEtBQVAsQ0FBYTBiLE9BQWIsR0FBdUIsV0FBV3JiLE1BQVgsQ0FBa0JvYixRQUFsQixFQUE0QixLQUE1QixDQUF2QjtVQUNBdFQsVUFBVSxDQUFDLFlBQVk7WUFDbkJvVCxNQUFNLENBQUN2YixLQUFQLENBQWEwYixPQUFiLEdBQXVCLEVBQXZCO1VBQ0gsQ0FGUyxFQUVQLEdBRk8sQ0FBVjtVQUdBZixhQUFhLENBQUNsYyxLQUFkLEdBQXNCLEtBQXRCO1FBQ0g7TUFDSixDQVJELE1BU0s7UUFDRCxJQUFJOGMsTUFBTSxJQUFJLElBQWQsRUFBb0I7VUFDaEJBLE1BQU0sQ0FBQ3ZiLEtBQVAsQ0FBYTBiLE9BQWIsR0FBdUIsV0FBV3JiLE1BQVgsQ0FBa0JvYixRQUFsQixFQUE0QixLQUE1QixDQUF2QjtVQUNBdFQsVUFBVSxDQUFDLFlBQVk7WUFDbkJvVCxNQUFNLENBQUN2YixLQUFQLENBQWEwYixPQUFiLEdBQXVCLGVBQXZCO1VBQ0gsQ0FGUyxFQUVQLEdBRk8sQ0FBVjtVQUdBZixhQUFhLENBQUNsYyxLQUFkLEdBQXNCLElBQXRCO1FBQ0g7TUFDSjtJQUNKLENBeEJEOztJQXlCQSxDQUFDLEdBQUdHLEtBQUssQ0FBQzhJLEtBQVYsRUFBaUIsWUFBWTtNQUFFLE9BQU90QyxLQUFLLENBQUNnWixrQkFBYjtJQUFrQyxDQUFqRSxFQUFtRSxZQUFZO01BQzNFLElBQUk4bUIsWUFBWSxHQUFHOTJCLElBQUksQ0FBQ0MsS0FBTCxDQUFXakosS0FBSyxDQUFDZ1osa0JBQWpCLENBQW5COztNQUNBLElBQUk4bUIsWUFBWSxDQUFDcmdDLE1BQWpCLEVBQXlCO1FBQ3JCdkcsTUFBTSxDQUFDb1EsTUFBUCxDQUFjeEMsVUFBZCxFQUEwQmc1QixZQUExQjtNQUNILENBRkQsTUFHSztRQUNEaDVCLFVBQVUsQ0FBQ3JILE1BQVgsR0FBb0IsQ0FBcEI7TUFDSDtJQUNKLENBUkQ7SUFTQSxJQUFJeEMsWUFBWSxHQUFHO01BQUUyRCxTQUFTLEVBQUVBLFNBQWI7TUFBd0JaLEtBQUssRUFBRUEsS0FBL0I7TUFBc0N1RyxJQUFJLEVBQUVBLElBQTVDO01BQWtEeEUsTUFBTSxFQUFFQSxNQUExRDtNQUFrRW9ULFlBQVksRUFBRUEsWUFBaEY7TUFBOEZFLFNBQVMsRUFBRUEsU0FBekc7TUFBb0hHLFdBQVcsRUFBRUEsV0FBakk7TUFBOEkxTyxVQUFVLEVBQUVBLFVBQTFKO01BQXNLc08sY0FBYyxFQUFFQSxjQUF0TDtNQUFzTUUsV0FBVyxFQUFFQSxXQUFuTjtNQUFnT0MsYUFBYSxFQUFFQSxhQUEvTztNQUE4UHFxQixXQUFXLEVBQUVBLFdBQTNRO01BQXdSQyxhQUFhLEVBQUVBLGFBQXZTO01BQXNUOXBCLFdBQVcsRUFBRUEsV0FBblU7TUFBZ1ZFLHVCQUF1QixFQUFFQSx1QkFBelc7TUFBa1lPLG9CQUFvQixFQUFFQSxvQkFBeFo7TUFBOGFmLFdBQVcsRUFBRUEsV0FBM2I7TUFBd2NjLHNCQUFzQixFQUFFQTtJQUFoZSxDQUFuQjtJQUNBcmQsTUFBTSxDQUFDQyxjQUFQLENBQXNCOEQsWUFBdEIsRUFBb0MsaUJBQXBDLEVBQXVEO01BQUVHLFVBQVUsRUFBRSxLQUFkO01BQXFCL0QsS0FBSyxFQUFFO0lBQTVCLENBQXZEO0lBQ0EsT0FBTzRELFlBQVA7RUFDSDtBQTlJd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDTGE7Ozs7QUFDYixJQUFJSSxTQUFTLEdBQUksUUFBUSxLQUFLQSxTQUFkLElBQTRCLFVBQVVDLE9BQVYsRUFBbUJDLFVBQW5CLEVBQStCQyxDQUEvQixFQUFrQ0MsU0FBbEMsRUFBNkM7RUFDckYsU0FBU0MsS0FBVCxDQUFlckUsS0FBZixFQUFzQjtJQUFFLE9BQU9BLEtBQUssWUFBWW1FLENBQWpCLEdBQXFCbkUsS0FBckIsR0FBNkIsSUFBSW1FLENBQUosQ0FBTSxVQUFVRyxPQUFWLEVBQW1CO01BQUVBLE9BQU8sQ0FBQ3RFLEtBQUQsQ0FBUDtJQUFpQixDQUE1QyxDQUFwQztFQUFvRjs7RUFDNUcsT0FBTyxLQUFLbUUsQ0FBQyxLQUFLQSxDQUFDLEdBQUdJLE9BQVQsQ0FBTixFQUF5QixVQUFVRCxPQUFWLEVBQW1CRSxNQUFuQixFQUEyQjtJQUN2RCxTQUFTQyxTQUFULENBQW1CekUsS0FBbkIsRUFBMEI7TUFBRSxJQUFJO1FBQUUwRSxJQUFJLENBQUNOLFNBQVMsQ0FBQ08sSUFBVixDQUFlM0UsS0FBZixDQUFELENBQUo7TUFBOEIsQ0FBcEMsQ0FBcUMsT0FBTzRFLENBQVAsRUFBVTtRQUFFSixNQUFNLENBQUNJLENBQUQsQ0FBTjtNQUFZO0lBQUU7O0lBQzNGLFNBQVNDLFFBQVQsQ0FBa0I3RSxLQUFsQixFQUF5QjtNQUFFLElBQUk7UUFBRTBFLElBQUksQ0FBQ04sU0FBUyxDQUFDLE9BQUQsQ0FBVCxDQUFtQnBFLEtBQW5CLENBQUQsQ0FBSjtNQUFrQyxDQUF4QyxDQUF5QyxPQUFPNEUsQ0FBUCxFQUFVO1FBQUVKLE1BQU0sQ0FBQ0ksQ0FBRCxDQUFOO01BQVk7SUFBRTs7SUFDOUYsU0FBU0YsSUFBVCxDQUFjSSxNQUFkLEVBQXNCO01BQUVBLE1BQU0sQ0FBQ0MsSUFBUCxHQUFjVCxPQUFPLENBQUNRLE1BQU0sQ0FBQzlFLEtBQVIsQ0FBckIsR0FBc0NxRSxLQUFLLENBQUNTLE1BQU0sQ0FBQzlFLEtBQVIsQ0FBTCxDQUFvQmtDLElBQXBCLENBQXlCdUMsU0FBekIsRUFBb0NJLFFBQXBDLENBQXRDO0lBQXNGOztJQUM5R0gsSUFBSSxDQUFDLENBQUNOLFNBQVMsR0FBR0EsU0FBUyxDQUFDWSxLQUFWLENBQWdCZixPQUFoQixFQUF5QkMsVUFBVSxJQUFJLEVBQXZDLENBQWIsRUFBeURTLElBQXpELEVBQUQsQ0FBSjtFQUNILENBTE0sQ0FBUDtBQU1ILENBUkQ7O0FBU0EsSUFBSU0sV0FBVyxHQUFJLFFBQVEsS0FBS0EsV0FBZCxJQUE4QixVQUFVaEIsT0FBVixFQUFtQmpCLElBQW5CLEVBQXlCO0VBQ3JFLElBQUlrQyxDQUFDLEdBQUc7SUFBRUMsS0FBSyxFQUFFLENBQVQ7SUFBWUMsSUFBSSxFQUFFLGdCQUFXO01BQUUsSUFBSUMsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFPLENBQVgsRUFBYyxNQUFNQSxDQUFDLENBQUMsQ0FBRCxDQUFQO01BQVksT0FBT0EsQ0FBQyxDQUFDLENBQUQsQ0FBUjtJQUFjLENBQXZFO0lBQXlFQyxJQUFJLEVBQUUsRUFBL0U7SUFBbUZDLEdBQUcsRUFBRTtFQUF4RixDQUFSO0VBQUEsSUFBc0dDLENBQXRHO0VBQUEsSUFBeUdDLENBQXpHO0VBQUEsSUFBNEdKLENBQTVHO0VBQUEsSUFBK0dLLENBQS9HO0VBQ0EsT0FBT0EsQ0FBQyxHQUFHO0lBQUVmLElBQUksRUFBRWdCLElBQUksQ0FBQyxDQUFELENBQVo7SUFBaUIsU0FBU0EsSUFBSSxDQUFDLENBQUQsQ0FBOUI7SUFBbUMsVUFBVUEsSUFBSSxDQUFDLENBQUQ7RUFBakQsQ0FBSixFQUE0RCxPQUFPQyxNQUFQLEtBQWtCLFVBQWxCLEtBQWlDRixDQUFDLENBQUNFLE1BQU0sQ0FBQ0MsUUFBUixDQUFELEdBQXFCLFlBQVc7SUFBRSxPQUFPLElBQVA7RUFBYyxDQUFqRixDQUE1RCxFQUFnSkgsQ0FBdko7O0VBQ0EsU0FBU0MsSUFBVCxDQUFjRyxDQUFkLEVBQWlCO0lBQUUsT0FBTyxVQUFVQyxDQUFWLEVBQWE7TUFBRSxPQUFPckIsSUFBSSxDQUFDLENBQUNvQixDQUFELEVBQUlDLENBQUosQ0FBRCxDQUFYO0lBQXNCLENBQTVDO0VBQStDOztFQUNsRSxTQUFTckIsSUFBVCxDQUFjc0IsRUFBZCxFQUFrQjtJQUNkLElBQUlSLENBQUosRUFBTyxNQUFNLElBQUlTLFNBQUosQ0FBYyxpQ0FBZCxDQUFOOztJQUNQLE9BQU9QLENBQUMsS0FBS0EsQ0FBQyxHQUFHLENBQUosRUFBT00sRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVZCxDQUFDLEdBQUcsQ0FBZCxDQUFaLENBQUQsRUFBZ0NBLENBQXZDO01BQTBDLElBQUk7UUFDMUMsSUFBSU0sQ0FBQyxHQUFHLENBQUosRUFBT0MsQ0FBQyxLQUFLSixDQUFDLEdBQUdXLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUSxDQUFSLEdBQVlQLENBQUMsQ0FBQyxRQUFELENBQWIsR0FBMEJPLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUVAsQ0FBQyxDQUFDLE9BQUQsQ0FBRCxLQUFlLENBQUNKLENBQUMsR0FBR0ksQ0FBQyxDQUFDLFFBQUQsQ0FBTixLQUFxQkosQ0FBQyxDQUFDYSxJQUFGLENBQU9ULENBQVAsQ0FBckIsRUFBZ0MsQ0FBL0MsQ0FBUixHQUE0REEsQ0FBQyxDQUFDZCxJQUFqRyxDQUFELElBQTJHLENBQUMsQ0FBQ1UsQ0FBQyxHQUFHQSxDQUFDLENBQUNhLElBQUYsQ0FBT1QsQ0FBUCxFQUFVTyxFQUFFLENBQUMsQ0FBRCxDQUFaLENBQUwsRUFBdUJqQixJQUE5SSxFQUFvSixPQUFPTSxDQUFQO1FBQ3BKLElBQUlJLENBQUMsR0FBRyxDQUFKLEVBQU9KLENBQVgsRUFBY1csRUFBRSxHQUFHLENBQUNBLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUSxDQUFULEVBQVlYLENBQUMsQ0FBQ3JGLEtBQWQsQ0FBTDs7UUFDZCxRQUFRZ0csRUFBRSxDQUFDLENBQUQsQ0FBVjtVQUNJLEtBQUssQ0FBTDtVQUFRLEtBQUssQ0FBTDtZQUFRWCxDQUFDLEdBQUdXLEVBQUo7WUFBUTs7VUFDeEIsS0FBSyxDQUFMO1lBQVFkLENBQUMsQ0FBQ0MsS0FBRjtZQUFXLE9BQU87Y0FBRW5GLEtBQUssRUFBRWdHLEVBQUUsQ0FBQyxDQUFELENBQVg7Y0FBZ0JqQixJQUFJLEVBQUU7WUFBdEIsQ0FBUDs7VUFDbkIsS0FBSyxDQUFMO1lBQVFHLENBQUMsQ0FBQ0MsS0FBRjtZQUFXTSxDQUFDLEdBQUdPLEVBQUUsQ0FBQyxDQUFELENBQU47WUFBV0EsRUFBRSxHQUFHLENBQUMsQ0FBRCxDQUFMO1lBQVU7O1VBQ3hDLEtBQUssQ0FBTDtZQUFRQSxFQUFFLEdBQUdkLENBQUMsQ0FBQ0ssR0FBRixDQUFNWSxHQUFOLEVBQUw7O1lBQWtCakIsQ0FBQyxDQUFDSSxJQUFGLENBQU9hLEdBQVA7O1lBQWM7O1VBQ3hDO1lBQ0ksSUFBSSxFQUFFZCxDQUFDLEdBQUdILENBQUMsQ0FBQ0ksSUFBTixFQUFZRCxDQUFDLEdBQUdBLENBQUMsQ0FBQ2UsTUFBRixHQUFXLENBQVgsSUFBZ0JmLENBQUMsQ0FBQ0EsQ0FBQyxDQUFDZSxNQUFGLEdBQVcsQ0FBWixDQUFuQyxNQUF1REosRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVLENBQVYsSUFBZUEsRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVLENBQWhGLENBQUosRUFBd0Y7Y0FBRWQsQ0FBQyxHQUFHLENBQUo7Y0FBTztZQUFXOztZQUM1RyxJQUFJYyxFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVUsQ0FBVixLQUFnQixDQUFDWCxDQUFELElBQU9XLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUVgsQ0FBQyxDQUFDLENBQUQsQ0FBVCxJQUFnQlcsRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRWCxDQUFDLENBQUMsQ0FBRCxDQUFoRCxDQUFKLEVBQTJEO2NBQUVILENBQUMsQ0FBQ0MsS0FBRixHQUFVYSxFQUFFLENBQUMsQ0FBRCxDQUFaO2NBQWlCO1lBQVE7O1lBQ3RGLElBQUlBLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFWLElBQWVkLENBQUMsQ0FBQ0MsS0FBRixHQUFVRSxDQUFDLENBQUMsQ0FBRCxDQUE5QixFQUFtQztjQUFFSCxDQUFDLENBQUNDLEtBQUYsR0FBVUUsQ0FBQyxDQUFDLENBQUQsQ0FBWDtjQUFnQkEsQ0FBQyxHQUFHVyxFQUFKO2NBQVE7WUFBUTs7WUFDckUsSUFBSVgsQ0FBQyxJQUFJSCxDQUFDLENBQUNDLEtBQUYsR0FBVUUsQ0FBQyxDQUFDLENBQUQsQ0FBcEIsRUFBeUI7Y0FBRUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQVg7O2NBQWdCSCxDQUFDLENBQUNLLEdBQUYsQ0FBTWMsSUFBTixDQUFXTCxFQUFYOztjQUFnQjtZQUFROztZQUNuRSxJQUFJWCxDQUFDLENBQUMsQ0FBRCxDQUFMLEVBQVVILENBQUMsQ0FBQ0ssR0FBRixDQUFNWSxHQUFOOztZQUNWakIsQ0FBQyxDQUFDSSxJQUFGLENBQU9hLEdBQVA7O1lBQWM7UUFYdEI7O1FBYUFILEVBQUUsR0FBR2hELElBQUksQ0FBQ2tELElBQUwsQ0FBVWpDLE9BQVYsRUFBbUJpQixDQUFuQixDQUFMO01BQ0gsQ0FqQnlDLENBaUJ4QyxPQUFPTixDQUFQLEVBQVU7UUFBRW9CLEVBQUUsR0FBRyxDQUFDLENBQUQsRUFBSXBCLENBQUosQ0FBTDtRQUFhYSxDQUFDLEdBQUcsQ0FBSjtNQUFRLENBakJPLFNBaUJFO1FBQUVELENBQUMsR0FBR0gsQ0FBQyxHQUFHLENBQVI7TUFBWTtJQWpCMUQ7O0lBa0JBLElBQUlXLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUSxDQUFaLEVBQWUsTUFBTUEsRUFBRSxDQUFDLENBQUQsQ0FBUjtJQUFhLE9BQU87TUFBRWhHLEtBQUssRUFBRWdHLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUUEsRUFBRSxDQUFDLENBQUQsQ0FBVixHQUFnQixLQUFLLENBQTlCO01BQWlDakIsSUFBSSxFQUFFO0lBQXZDLENBQVA7RUFDL0I7QUFDSixDQTFCRDs7QUEyQkEsSUFBSXJGLGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3bUMsa0JBQWtCLEdBQUdobkMsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHNGQUFELENBQVIsQ0FBeEM7O0FBQ0EsSUFBSUcsZ0JBQWdCLEdBQUdYLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxrRkFBRCxDQUFSLENBQXRDOztBQUNBLElBQUlJLE9BQU8sR0FBR1osZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRDQUFELENBQVIsQ0FBN0I7O0FBQ0EsSUFBSXVHLGtCQUFrQixHQUFHL0csZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHNGQUFELENBQVIsQ0FBeEM7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHRCxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlrZixvQkFBb0IsR0FBRzFmLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0R0FBRCxDQUFSLENBQTFDOztBQUNBLElBQUl3WSxxQkFBcUIsR0FBR2haLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0RkFBRCxDQUFSLENBQTNDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLFNBRGlDO0VBRXpDa0csS0FBSyxFQUFFO0lBQ0gyRSxNQUFNLEVBQUU7TUFDSnpFLElBQUksRUFBRWhILE1BREY7TUFFSmlILFFBQVEsRUFBRTtJQUZOLENBREw7SUFLSDtJQUNBNlUsVUFBVSxFQUFFO01BQ1I5VSxJQUFJLEVBQUVoSCxNQURFO01BRVJpSCxRQUFRLEVBQUU7SUFGRixDQU5UO0lBVUg2L0IsV0FBVyxFQUFFO01BQ1Q5L0IsSUFBSSxFQUFFaEgsTUFERztNQUVUaUgsUUFBUSxFQUFFO0lBRkQsQ0FWVjtJQWNIOFAsVUFBVSxFQUFFO01BQ1IvUCxJQUFJLEVBQUVoSCxNQURFO01BRVJpSCxRQUFRLEVBQUU7SUFGRjtFQWRULENBRmtDO0VBcUJ6Q3BHLEtBQUssRUFBRSxlQUFVQyxPQUFWLEVBQW1CQyxFQUFuQixFQUF1QjtJQUMxQixJQUFJdVEsS0FBSyxHQUFHLElBQVo7O0lBQ0EsSUFBSXRRLE1BQU0sR0FBR0QsRUFBRSxDQUFDQyxNQUFoQjtJQUNBQSxNQUFNO0lBQ04sSUFBSThGLEtBQUssR0FBR2hHLE9BQVo7SUFDQSxJQUFJc2tDLFNBQVMsR0FBRyxDQUFDLEdBQUc5a0MsS0FBSyxDQUFDYyxHQUFWLEVBQWUsS0FBZixDQUFoQjtJQUNBLElBQUkybEMsU0FBUyxHQUFHLENBQUMsR0FBR3ptQyxLQUFLLENBQUNjLEdBQVYsRUFBZSxVQUFmLENBQWhCO0lBQ0EsSUFBSXdrQyxRQUFRLEdBQUcsQ0FBQyxHQUFHdGxDLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEVBQWYsQ0FBZjtJQUNBLElBQUk0bEMsc0JBQXNCLEdBQUcsQ0FBQyxHQUFHMW1DLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBN0I7SUFDQSxJQUFJNmxDLHdCQUF3QixHQUFHLENBQUMsR0FBRzNtQyxLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQS9CO0lBQ0EsSUFBSXNlLE1BQU0sR0FBRyxDQUFDLEdBQUdwZixLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQWI7SUFBQSxJQUFvQ3VmLFVBQVUsR0FBRyxDQUFDLEdBQUdyZ0IsS0FBSyxDQUFDYyxHQUFWLEVBQWUsbUJBQWYsQ0FBakQ7SUFDQSxJQUFJOGxDLHdCQUF3QixHQUFHLENBQUMsR0FBRzVtQyxLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQS9CO0lBQ0EsSUFBSStsQyxlQUFlLEdBQUcsQ0FBQyxHQUFHN21DLEtBQUssQ0FBQ2MsR0FBVixFQUFlLElBQWYsQ0FBdEI7SUFDQSxJQUFJc2tDLGFBQWEsR0FBRyxDQUFDLEdBQUdwbEMsS0FBSyxDQUFDYyxHQUFWLEVBQWUsQ0FBZixDQUFwQjtJQUNBLElBQUl1a0MsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHcmxDLEtBQUssQ0FBQ2MsR0FBVixFQUFlLENBQWYsQ0FBdkI7SUFDQSxJQUFJMGUsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHeGYsS0FBSyxDQUFDYyxHQUFWLEVBQWUsRUFBZixDQUF6QjtJQUNBLElBQUl5a0MsVUFBVSxHQUFHLENBQUMsR0FBR3ZsQyxLQUFLLENBQUNjLEdBQVYsRUFBZSxFQUFmLENBQWpCO0lBQ0EsSUFBSThHLFlBQVksR0FBRyxDQUFDLEdBQUc1SCxLQUFLLENBQUNjLEdBQVYsRUFBZSxFQUFmLENBQW5CO0lBQ0EsSUFBSStHLFNBQVMsR0FBRyxDQUFDLEdBQUc3SCxLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQWhCO0lBQ0EsSUFBSTBHLGVBQWUsR0FBRyxDQUFDLEdBQUd4SCxLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQXRCOztJQUNBLElBQUkya0MsYUFBYSxHQUFHLFNBQWhCQSxhQUFnQixHQUFZO01BQUUsT0FBTzVoQyxTQUFTLENBQUNtTixLQUFELEVBQVEsS0FBSyxDQUFiLEVBQWdCLEtBQUssQ0FBckIsRUFBd0IsWUFBWTtRQUNsRixJQUFJdlEsRUFBSjs7UUFDQSxPQUFPcUUsV0FBVyxDQUFDLElBQUQsRUFBTyxVQUFVb0MsRUFBVixFQUFjO1VBQ25DLFFBQVFBLEVBQUUsQ0FBQ2xDLEtBQVg7WUFDSSxLQUFLLENBQUw7Y0FBUSxPQUFPLENBQUM7Y0FBRTtjQUFILEVBQWMsQ0FBQyxHQUFHaEYsS0FBSyxDQUFDMGxDLFFBQVYsR0FBZCxDQUFQOztZQUNSLEtBQUssQ0FBTDtjQUNJeCtCLEVBQUUsQ0FBQ2pDLElBQUg7O2NBQ0FzZ0MsVUFBVSxDQUFDMWxDLEtBQVgsR0FBbUIsQ0FBQ1ksRUFBRSxHQUFHNmtDLFFBQVEsS0FBSyxJQUFiLElBQXFCQSxRQUFRLEtBQUssS0FBSyxDQUF2QyxHQUEyQyxLQUFLLENBQWhELEdBQW9EQSxRQUFRLENBQUN6bEMsS0FBVCxDQUFlLEdBQWYsQ0FBMUQsTUFBbUYsSUFBbkYsSUFBMkZZLEVBQUUsS0FBSyxLQUFLLENBQXZHLEdBQTJHLEtBQUssQ0FBaEgsR0FBb0hBLEVBQUUsQ0FBQ2tsQyxXQUExSTtjQUNBLE9BQU8sQ0FBQztjQUFFO2NBQUgsQ0FBUDtVQUxSO1FBT0gsQ0FSaUIsQ0FBbEI7TUFTSCxDQVhpRCxDQUFoQjtJQVc3QixDQVhMOztJQVlBLElBQUk3RixJQUFJLEdBQUcsU0FBUEEsSUFBTyxHQUFZO01BQ25CMkcsU0FBUyxDQUFDNW1DLEtBQVYsS0FBb0IsV0FBcEIsR0FDTzRtQyxTQUFTLENBQUM1bUMsS0FBVixHQUFrQixZQUR6QixHQUVPNG1DLFNBQVMsQ0FBQzVtQyxLQUFWLEdBQWtCLFdBRnpCO01BR0EsSUFBSWluQyxVQUFVLEdBQUd0Z0MsS0FBSyxDQUFDZ1YsVUFBdkI7O01BQ0EsUUFBUWhWLEtBQUssQ0FBQzJFLE1BQU4sQ0FBYSxVQUFiLENBQVI7UUFDSSxLQUFLLFVBQUw7VUFDSTI3QixVQUFVLENBQUNoSCxJQUFYLENBQWdCLFVBQVVpSCxDQUFWLEVBQWFDLENBQWIsRUFBZ0I7WUFDNUIsT0FBT0QsQ0FBQyxDQUFDMWtDLElBQUYsQ0FBTzJWLEtBQVAsSUFDSCt1QixDQUFDLENBQUMxa0MsSUFBRixDQUFPMlYsS0FBUCxDQUFhLENBQWIsRUFBZ0JvRSxTQUFoQixDQUEwQnVCLFFBQTFCLEdBQXFDbkUsV0FBckMsS0FBcUR3dEIsQ0FBQyxDQUFDM2tDLElBQUYsQ0FBTzJWLEtBRHpELElBRUhndkIsQ0FBQyxDQUFDM2tDLElBQUYsQ0FBTzJWLEtBQVAsQ0FBYSxDQUFiLEVBQWdCb0UsU0FBaEIsQ0FBMEJ1QixRQUExQixHQUFxQ25FLFdBQXJDLEVBRkcsR0FHRCxDQUhDLEdBSUQsQ0FBQyxDQUpQO1VBS0gsQ0FORDtVQU9BOztRQUNKLEtBQUssUUFBTDtVQUNJc3RCLFVBQVUsQ0FBQ2hILElBQVgsQ0FBZ0IsVUFBVWlILENBQVYsRUFBYUMsQ0FBYixFQUFnQjtZQUM1QixPQUFPRCxDQUFDLENBQUMxa0MsSUFBRixDQUFPMlYsS0FBUCxJQUNIK3VCLENBQUMsQ0FBQzFrQyxJQUFGLENBQU8yVixLQUFQLENBQWEsQ0FBYixFQUFnQm9FLFNBQWhCLENBQTBCLENBQTFCLEVBQTZCLFdBQTdCLEVBQTBDdUIsUUFBMUMsR0FBcURuRSxXQUFyRCxLQUNJd3RCLENBQUMsQ0FBQzNrQyxJQUFGLENBQU8yVixLQUZSLElBR0hndkIsQ0FBQyxDQUFDM2tDLElBQUYsQ0FBTzJWLEtBQVAsQ0FBYSxDQUFiLEVBQWdCb0UsU0FBaEIsQ0FBMEIsQ0FBMUIsRUFBNkIsV0FBN0IsRUFBMEN1QixRQUExQyxHQUFxRG5FLFdBQXJELEVBSEcsR0FJRCxDQUpDLEdBS0QsQ0FBQyxDQUxQO1VBTUgsQ0FQRDtVQVFBOztRQUNKLEtBQUssUUFBTDtVQUNJc3RCLFVBQVUsQ0FBQ2hILElBQVgsQ0FBZ0IsVUFBVWlILENBQVYsRUFBYUMsQ0FBYixFQUFnQjtZQUM1QixPQUFPRCxDQUFDLENBQUMxa0MsSUFBRixDQUFPMlYsS0FBUCxJQUNIK3VCLENBQUMsQ0FBQzFrQyxJQUFGLENBQU8yVixLQUFQLENBQWEsQ0FBYixFQUFnQm9FLFNBQWhCLENBQTBCLENBQTFCLEVBQTZCLFdBQTdCLEVBQTBDdUIsUUFBMUMsR0FBcURuRSxXQUFyRCxLQUNJd3RCLENBQUMsQ0FBQzNrQyxJQUFGLENBQU8yVixLQUZSLElBR0hndkIsQ0FBQyxDQUFDM2tDLElBQUYsQ0FBTzJWLEtBQVAsQ0FBYSxDQUFiLEVBQWdCb0UsU0FBaEIsQ0FBMEIsQ0FBMUIsRUFBNkIsV0FBN0IsRUFBMEN1QixRQUExQyxHQUFxRG5FLFdBQXJELEVBSEcsR0FJRCxDQUpDLEdBS0QsQ0FBQyxDQUxQO1VBTUgsQ0FQRDtVQVFBOztRQUNKLEtBQUssV0FBTDtVQUNJc3RCLFVBQVUsQ0FBQ2hILElBQVgsQ0FBZ0IsVUFBVWlILENBQVYsRUFBYUMsQ0FBYixFQUFnQjtZQUM1QixPQUFPRCxDQUFDLENBQUMxa0MsSUFBRixDQUFPMlYsS0FBUCxJQUNIK3VCLENBQUMsQ0FBQzFrQyxJQUFGLENBQU8yVixLQUFQLENBQWEsQ0FBYixFQUFnQm9FLFNBQWhCLENBQTBCLENBQTFCLEVBQTZCLFdBQTdCLEVBQTBDdUIsUUFBMUMsR0FBcURuRSxXQUFyRCxLQUNJd3RCLENBQUMsQ0FBQzNrQyxJQUFGLENBQU8yVixLQUZSLElBR0hndkIsQ0FBQyxDQUFDM2tDLElBQUYsQ0FBTzJWLEtBQVAsQ0FBYSxDQUFiLEVBQWdCb0UsU0FBaEIsQ0FBMEIsQ0FBMUIsRUFBNkIsV0FBN0IsRUFBMEN1QixRQUExQyxHQUFxRG5FLFdBQXJELEVBSEcsR0FJRCxDQUpDLEdBS0QsQ0FBQyxDQUxQO1VBTUgsQ0FQRDtVQVFBOztRQUNKO1VBQ0k7TUF6Q1I7SUEyQ0gsQ0FoREQ7O0lBaURBLENBQUMsR0FBR3haLEtBQUssQ0FBQ21NLFdBQVYsRUFBdUIsWUFBWTtNQUMvQjFKLE1BQU0sQ0FBQ3lRLG1CQUFQLENBQTJCLFFBQTNCLEVBQXFDdXlCLGFBQXJDO0lBQ0gsQ0FGRDtJQUdBLENBQUMsR0FBR3psQyxLQUFLLENBQUNnQixTQUFWLEVBQXFCLFlBQVk7TUFDN0J5a0MsYUFBYTtNQUNiaGpDLE1BQU0sQ0FBQ3FRLGdCQUFQLENBQXdCLFFBQXhCLEVBQWtDMnlCLGFBQWxDO01BQ0F3QixrQkFBa0I7O01BQ2xCLElBQUl6Z0MsS0FBSyxDQUFDZ2dDLFdBQVYsRUFBdUI7UUFDbkJHLHdCQUF3QixDQUFDOW1DLEtBQXpCLEdBQWlDLElBQWpDO01BQ0g7O01BQ0R3bEMsZ0JBQWdCLENBQUN4bEMsS0FBakIsR0FBeUIyRyxLQUFLLENBQUNnVixVQUFOLENBQWlCdlYsTUFBMUM7TUFDQW9hLFVBQVUsQ0FBQ3hnQixLQUFYLEdBQW1CLFVBQVU0QixNQUFWLENBQWlCK0UsS0FBSyxDQUFDMkUsTUFBTixDQUFhbWhCLFFBQTlCLENBQW5CO0lBQ0gsQ0FURDs7SUFVQSxJQUFJc1ksWUFBWSxHQUFHLFNBQWZBLFlBQWUsR0FBWTtNQUMzQjhCLHNCQUFzQixDQUFDN21DLEtBQXZCLEdBQStCLEtBQS9CO01BQ0FnbkMsZUFBZSxDQUFDaG5DLEtBQWhCLEdBQXdCLEtBQXhCO01BQ0FNLE9BQU8sV0FBUCxXQUF1QixhQUF2QixFQUFzQzRCLElBQXRDLENBQTJDLFVBQVVDLEdBQVYsRUFBZTtRQUN0RCxJQUFJeUwsUUFBUSxHQUFHekwsR0FBRyxDQUFDSyxJQUFuQjtRQUNBbUYsZUFBZSxDQUFDM0gsS0FBaEIsR0FBd0IsSUFBeEI7UUFDQTBKLFVBQVUsQ0FBQyxZQUFZO1VBQUUsT0FBUS9CLGVBQWUsQ0FBQzNILEtBQWhCLEdBQXdCLEtBQWhDO1FBQXlDLENBQXhELEVBQTBELEtBQTFELENBQVY7UUFDQStILFlBQVksQ0FBQy9ILEtBQWIsR0FBcUI0TixRQUFRLENBQUNuRSxPQUE5QjtRQUNBekIsU0FBUyxDQUFDaEksS0FBVixHQUFrQjROLFFBQVEsQ0FBQ3JLLE9BQTNCO1FBQ0FtRyxVQUFVLENBQUMsWUFBWTtVQUNuQjlHLE1BQU0sQ0FBQzhILFFBQVAsQ0FBZ0IvSCxJQUFoQixHQUF1QixhQUF2QjtRQUNILENBRlMsRUFFUCxJQUZPLENBQVY7TUFHSCxDQVREO0lBVUgsQ0FiRDs7SUFjQSxJQUFJMGtDLHVCQUF1QixHQUFHLFNBQTFCQSx1QkFBMEIsR0FBWTtNQUN0QyxJQUFJbDNCLElBQUo7O01BQ0EsSUFBSSxRQUFPeEosS0FBSyxDQUFDZ2dDLFdBQWIsTUFBNkIsUUFBakMsRUFBMkM7UUFDdkN4MkIsSUFBSSxHQUFHdFEsTUFBTSxDQUFDa1AsTUFBUCxDQUFjcEksS0FBSyxDQUFDZ2dDLFdBQXBCLEVBQWlDdjZCLElBQWpDLENBQXNDLElBQXRDLENBQVA7TUFDSDs7TUFDRCxJQUFJNjNCLElBQUksR0FBRyxJQUFJcUQsSUFBSixDQUFTLENBQUMsV0FBV24zQixJQUFaLENBQVQsRUFBNEIsdUJBQTVCLEVBQXFEO1FBQzVEdEosSUFBSSxFQUFFO01BRHNELENBQXJELENBQVg7TUFHQSxJQUFJN0UsR0FBRyxHQUFHWSxNQUFNLENBQUNDLEdBQVAsQ0FBV0MsZUFBWCxDQUEyQm1oQyxJQUEzQixDQUFWO01BQ0EsSUFBSXNELFNBQVMsR0FBR2xtQyxRQUFRLENBQUNxQixhQUFULENBQXVCLEdBQXZCLENBQWhCO01BQ0E2a0MsU0FBUyxDQUFDNWtDLElBQVYsR0FBaUJYLEdBQWpCO01BQ0F1bEMsU0FBUyxDQUFDOVAsUUFBVixHQUFxQndNLElBQUksQ0FBQ3A3QixJQUExQjtNQUNBMCtCLFNBQVMsQ0FBQ3JrQyxLQUFWO01BQ0FOLE1BQU0sQ0FBQ0MsR0FBUCxDQUFXMmtDLGVBQVgsQ0FBMkJ4bEMsR0FBM0I7SUFDSCxDQWREOztJQWVBLElBQUlvbEMsa0JBQWtCLEdBQUcsU0FBckJBLGtCQUFxQixHQUFZO01BQ2pDLElBQUl4bUMsRUFBSjs7TUFDQSxJQUFJNm1DLFlBQVksR0FBRzlnQyxLQUFLLENBQUNnVixVQUFOLElBQ2ZoVixLQUFLLENBQUNnVixVQUFOLENBQWlCcEMsR0FBakIsQ0FBcUIsVUFBVS9XLElBQVYsRUFBZ0I4UCxLQUFoQixFQUF1QjtRQUN4QyxPQUFPOEosV0FBVyxDQUFDLFVBQUQsRUFBYTlKLEtBQWIsQ0FBbEI7TUFDSCxDQUZELENBREo7TUFJQSxJQUFJbzFCLHVCQUF1QixHQUFHLENBQTlCOztNQUNBLEtBQUssSUFBSXA0QixDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHbTRCLFlBQVksQ0FBQ3JoQyxNQUFqQyxFQUF5Q2tKLENBQUMsRUFBMUMsRUFBOEM7UUFDMUNvNEIsdUJBQXVCLElBQUlELFlBQVksQ0FBQ240QixDQUFELENBQXZDO01BQ0g7O01BQ0QsSUFBSW80Qix1QkFBdUIsR0FBRyxDQUE5QixFQUFpQztRQUM3Qlgsd0JBQXdCLENBQUMvbUMsS0FBekIsR0FBaUMsSUFBakM7TUFDSDs7TUFDRCxJQUFJMG5DLHVCQUF1QixHQUFHLENBQTFCLElBQStCLENBQUMsQ0FBQzltQyxFQUFFLEdBQUcrRixLQUFLLENBQUNnZ0MsV0FBWixNQUE2QixJQUE3QixJQUFxQy9sQyxFQUFFLEtBQUssS0FBSyxDQUFqRCxHQUFxRCxLQUFLLENBQTFELEdBQThEQSxFQUFFLENBQUN3RixNQUFsRSxJQUE0RSxDQUEvRyxFQUFrSDtRQUM5R3lnQyxzQkFBc0IsQ0FBQzdtQyxLQUF2QixHQUErQixJQUEvQjtNQUNIO0lBQ0osQ0FoQkQ7O0lBaUJBLElBQUkwYyxXQUFXLEdBQUcsU0FBZEEsV0FBYyxDQUFVQyxhQUFWLEVBQXlCO01BQ3ZDLElBQUl0TixLQUFLLEdBQUcsQ0FBWjs7TUFDQSxLQUFLLElBQUl4SSxJQUFULElBQWlCRixLQUFLLENBQUNnVixVQUFOLENBQWlCZ0IsYUFBakIsRUFBZ0MsUUFBaEMsQ0FBakIsRUFBNEQ7UUFDeEQsS0FBSyxJQUFJckssS0FBVCxJQUFrQjNMLEtBQUssQ0FBQ2dWLFVBQU4sQ0FBaUJnQixhQUFqQixFQUFnQyxRQUFoQyxFQUEwQzlWLElBQTFDLENBQWxCLEVBQW1FO1VBQy9Ed0ksS0FBSyxJQUFJeFAsTUFBTSxDQUFDMFAsSUFBUCxDQUFZNUksS0FBSyxDQUFDZ1YsVUFBTixDQUFpQmdCLGFBQWpCLEVBQWdDLFFBQWhDLEVBQTBDOVYsSUFBMUMsRUFBZ0R5TCxLQUFoRCxDQUFaLEVBQW9FbE0sTUFBN0U7UUFDSDtNQUNKOztNQUNELE9BQU9pSixLQUFQO0lBQ0gsQ0FSRDs7SUFTQSxJQUFJczRCLGFBQWEsR0FBRyxTQUFoQkEsYUFBZ0IsR0FBWTtNQUM1QixJQUFJaG9CLGtCQUFrQixDQUFDM2YsS0FBbkIsQ0FBeUJvRyxNQUF6QixHQUFrQyxDQUF0QyxFQUF5QztRQUNyQ21aLE1BQU0sQ0FBQ3ZmLEtBQVAsR0FBZSxJQUFmO1FBQ0FNLE9BQU8sV0FBUCxDQUNLK0ssSUFETCxDQUNVLHNCQURWLEVBQ2tDO1VBQUVvQyxVQUFVLEVBQUVrUyxrQkFBa0IsQ0FBQzNmO1FBQWpDLENBRGxDLEVBRUtrQyxJQUZMLENBRVUsWUFBWTtVQUNsQlUsTUFBTSxDQUFDOEgsUUFBUCxDQUFnQi9ILElBQWhCLEdBQXVCLGFBQXZCO1FBQ0gsQ0FKRDtNQUtIO0lBQ0osQ0FURDs7SUFVQSxJQUFJeVosV0FBVyxHQUFHLFNBQWRBLFdBQWMsQ0FBVXdHLFNBQVYsRUFBcUJqRyxhQUFyQixFQUFvQztNQUNsRCxJQUFJdE4sS0FBSyxHQUFHLENBQVo7O01BQ0EsS0FBSyxJQUFJaUQsS0FBVCxJQUFrQjNMLEtBQUssQ0FBQ2dWLFVBQU4sQ0FBaUJnQixhQUFqQixFQUFnQyxRQUFoQyxFQUEwQ2lHLFNBQTFDLENBQWxCLEVBQXdFO1FBQ3BFdlQsS0FBSyxJQUFJeFAsTUFBTSxDQUFDMFAsSUFBUCxDQUFZNUksS0FBSyxDQUFDZ1YsVUFBTixDQUFpQmdCLGFBQWpCLEVBQWdDLFFBQWhDLEVBQTBDaUcsU0FBMUMsRUFBcUR0USxLQUFyRCxDQUFaLEVBQXlFbE0sTUFBbEY7TUFDSDs7TUFDRCxPQUFPaUosS0FBUDtJQUNILENBTkQ7O0lBT0EsU0FBUzQyQixtQkFBVCxHQUErQjtNQUMzQmhCLFNBQVMsQ0FBQ2psQyxLQUFWLEdBQWtCLENBQUNpbEMsU0FBUyxDQUFDamxDLEtBQTdCO01BQ0F1bEMsYUFBYSxDQUFDdmxDLEtBQWQsR0FBc0IsQ0FBdEI7TUFDQTJmLGtCQUFrQixDQUFDM2YsS0FBbkIsQ0FBeUJvRyxNQUF6QixHQUFrQyxDQUFsQztNQUNBdkcsTUFBTSxDQUFDMFAsSUFBUCxDQUFZNUksS0FBSyxDQUFDZ1YsVUFBbEIsRUFBOEIvUSxPQUE5QixDQUFzQyxVQUFVcUUsV0FBVixFQUF1QjtRQUN6RCxJQUFJcUQsS0FBSyxHQUFHcU4sa0JBQWtCLENBQUMzZixLQUFuQixDQUF5QmdQLE9BQXpCLENBQWlDQyxXQUFqQyxDQUFaOztRQUNBLElBQUlwUCxNQUFNLENBQUMwUCxJQUFQLENBQVk1SSxLQUFLLENBQUNnVixVQUFOLENBQWlCMU0sV0FBakIsRUFBOEIsUUFBOUIsQ0FBWixFQUFxREQsT0FBckQsQ0FBNkQsVUFBN0QsTUFBNkUsQ0FBQyxDQUFsRixFQUFxRjtVQUNqRixJQUFJaTJCLFNBQVMsQ0FBQ2psQyxLQUFkLEVBQXFCO1lBQ2pCMmYsa0JBQWtCLENBQUMzZixLQUFuQixDQUF5QnFHLElBQXpCLENBQThCNEksV0FBOUI7WUFDQXMyQixhQUFhLENBQUN2bEMsS0FBZCxHQUFzQnVsQyxhQUFhLENBQUN2bEMsS0FBZCxHQUFzQixDQUE1QztVQUNILENBSEQsTUFJSztZQUNEMmYsa0JBQWtCLENBQUMzZixLQUFuQixDQUF5QmdtQyxNQUF6QixDQUFnQzF6QixLQUFoQyxFQUF1QyxDQUF2QztVQUNIO1FBQ0o7TUFDSixDQVhEOztNQVlBLElBQUksQ0FBQzJ5QixTQUFTLENBQUNqbEMsS0FBZixFQUFzQjtRQUNsQnVsQyxhQUFhLENBQUN2bEMsS0FBZCxHQUFzQixDQUF0QjtNQUNIO0lBQ0o7O0lBQ0QsSUFBSTRELFlBQVksR0FBRztNQUFFcWhDLFNBQVMsRUFBRUEsU0FBYjtNQUF3QjJCLFNBQVMsRUFBRUEsU0FBbkM7TUFBOENuQixRQUFRLEVBQUVBLFFBQXhEO01BQWtFb0Isc0JBQXNCLEVBQUVBLHNCQUExRjtNQUFrSEMsd0JBQXdCLEVBQUVBLHdCQUE1STtNQUFzS3ZuQixNQUFNLEVBQUVBLE1BQTlLO01BQXNMaUIsVUFBVSxFQUFFQSxVQUFsTTtNQUE4TXVtQix3QkFBd0IsRUFBRUEsd0JBQXhPO01BQWtRQyxlQUFlLEVBQUVBLGVBQW5SO01BQW9TekIsYUFBYSxFQUFFQSxhQUFuVDtNQUFrVUMsZ0JBQWdCLEVBQUVBLGdCQUFwVjtNQUFzVzdsQixrQkFBa0IsRUFBRUEsa0JBQTFYO01BQThZK2xCLFVBQVUsRUFBRUEsVUFBMVo7TUFBc2EzOUIsWUFBWSxFQUFFQSxZQUFwYjtNQUFrY0MsU0FBUyxFQUFFQSxTQUE3YztNQUF3ZEwsZUFBZSxFQUFFQSxlQUF6ZTtNQUEwZmhCLEtBQUssRUFBRUEsS0FBamdCO01BQXdnQmkvQixhQUFhLEVBQUVBLGFBQXZoQjtNQUFzaUIzRixJQUFJLEVBQUVBLElBQTVpQjtNQUFrakI4RSxZQUFZLEVBQUVBLFlBQWhrQjtNQUE4a0JzQyx1QkFBdUIsRUFBRUEsdUJBQXZtQjtNQUFnb0JELGtCQUFrQixFQUFFQSxrQkFBcHBCO01BQXdxQjFxQixXQUFXLEVBQUVBLFdBQXJyQjtNQUFrc0JpckIsYUFBYSxFQUFFQSxhQUFqdEI7TUFBZ3VCdnJCLFdBQVcsRUFBRUEsV0FBN3VCO01BQTB2QjZwQixtQkFBbUIsRUFBRUEsbUJBQS93QjtNQUFveUIyQixZQUFZLEVBQUVsQixrQkFBa0IsV0FBcDBCO01BQTgwQjVpQyxLQUFLLEVBQUV6RCxnQkFBZ0IsV0FBcjJCO01BQSsyQm1NLEtBQUssRUFBRS9GLGtCQUFrQixXQUF4NEI7TUFBazVCd1IsTUFBTSxFQUFFbUgsb0JBQW9CLFdBQTk2QjtNQUF3N0J2RixZQUFZLEVBQUVuQixxQkFBcUI7SUFBMzlCLENBQW5CO0lBQ0E3WSxNQUFNLENBQUNDLGNBQVAsQ0FBc0I4RCxZQUF0QixFQUFvQyxpQkFBcEMsRUFBdUQ7TUFBRUcsVUFBVSxFQUFFLEtBQWQ7TUFBcUIvRCxLQUFLLEVBQUU7SUFBNUIsQ0FBdkQ7SUFDQSxPQUFPNEQsWUFBUDtFQUNIO0FBbE53QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNqRGE7O0FBQ2IsSUFBSWxFLGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlzbUIsZUFBZSxHQUFHOW1CLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxzRkFBRCxDQUFSLENBQXJDOztBQUNBLElBQUl1bUIsdUJBQXVCLEdBQUcvbUIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHNHQUFELENBQVIsQ0FBN0M7O0FBQ0EsSUFBSTJuQywwQkFBMEIsR0FBR25vQyxlQUFlLENBQUNRLG1CQUFPLENBQUMscUdBQUQsQ0FBUixDQUFoRDs7QUFDQSxJQUFJNG5DLGdDQUFnQyxHQUFHcG9DLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxpSEFBRCxDQUFSLENBQXREOztBQUNBLElBQUl1RyxrQkFBa0IsR0FBRy9HLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxzRkFBRCxDQUFSLENBQXhDOztBQUNBLElBQUk2bkMsd0NBQXdDLEdBQUdyb0MsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLG9KQUFELENBQVIsQ0FBOUQ7O0FBQ0EsSUFBSXFHLE1BQU0sR0FBR3JHLG1CQUFPLENBQUMsMkRBQUQsQ0FBcEI7O0FBQ0EsSUFBSTZxQixNQUFNLEdBQUc3cUIsbUJBQU8sQ0FBQywyREFBRCxDQUFwQjs7QUFDQSxJQUFJNG1CLGdCQUFnQixHQUFHcG5CLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxrRkFBRCxDQUFSLENBQXRDOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDcUksSUFBSSxFQUFFLGtCQURtQztFQUV6QzZELFVBQVUsRUFBRTtJQUNSd2EsU0FBUyxFQUFFVixlQUFlLFdBRGxCO0lBRVJyTSxpQkFBaUIsRUFBRXNNLHVCQUF1QixXQUZsQztJQUdSdWhCLG9CQUFvQixFQUFFSCwwQkFBMEIsV0FIeEM7SUFJUkksMEJBQTBCLEVBQUVILGdDQUFnQyxXQUpwRDtJQUtSdDdCLEtBQUssRUFBRS9GLGtCQUFrQixXQUxqQjtJQU1SeWhDLGdCQUFnQixFQUFFSCx3Q0FBd0MsV0FObEQ7SUFPUm5nQixVQUFVLEVBQUVkLGdCQUFnQjtFQVBwQixDQUY2QjtFQVd6Q25nQixLQUFLLEVBQUU7SUFDSGtoQixRQUFRLEVBQUU7TUFDTmhoQixJQUFJLEVBQUVoSCxNQURBO01BRU5pSCxRQUFRLEVBQUU7SUFGSixDQURQO0lBS0hnaEIsTUFBTSxFQUFFO01BQ0pqaEIsSUFBSSxFQUFFaEgsTUFERjtNQUVKaUgsUUFBUSxFQUFFO0lBRk4sQ0FMTDtJQVNIQyxZQUFZLEVBQUU7TUFDVkYsSUFBSSxFQUFFaEgsTUFESTtNQUVWaUgsUUFBUSxFQUFFO0lBRkEsQ0FUWDtJQWFIaWhCLFFBQVEsRUFBRTtNQUNObGhCLElBQUksRUFBRU8sTUFEQTtNQUVOTixRQUFRLEVBQUU7SUFGSixDQWJQO0lBaUJIMEMsS0FBSyxFQUFFO01BQ0gzQyxJQUFJLEVBQUVoSCxNQURIO01BRUhpSCxRQUFRLEVBQUU7SUFGUCxDQWpCSjtJQXFCSGtoQixLQUFLLEVBQUU7TUFDSG5oQixJQUFJLEVBQUVoSCxNQURIO01BRUhpSCxRQUFRLEVBQUU7SUFGUCxDQXJCSjtJQXlCSHFoQyxrQkFBa0IsRUFBRTtNQUNoQnRoQyxJQUFJLEVBQUVLLE9BRFU7TUFFaEJKLFFBQVEsRUFBRTtJQUZNLENBekJqQjtJQTZCSHdFLE1BQU0sRUFBRTtNQUNKekUsSUFBSSxFQUFFaEgsTUFERjtNQUVKaUgsUUFBUSxFQUFFO0lBRk4sQ0E3Qkw7SUFpQ0hzaEMsUUFBUSxFQUFFO01BQ052aEMsSUFBSSxFQUFFdUosTUFEQTtNQUVOdEosUUFBUSxFQUFFO0lBRko7RUFqQ1AsQ0FYa0M7RUFpRHpDcEcsS0FBSyxFQUFFLGVBQVVpRyxLQUFWLEVBQWlCO0lBQ3BCLElBQUlZLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJcVAsU0FBUyxHQUFHLENBQUMsR0FBRzVXLEtBQUssQ0FBQ2dJLFFBQVYsRUFBb0I7TUFDaENrRyxVQUFVLEVBQUUsS0FEb0I7TUFFaEMxRSxPQUFPLEVBQUUsRUFGdUI7TUFHaEM1QyxJQUFJLEVBQUU7SUFIMEIsQ0FBcEIsQ0FBaEI7SUFLQSxJQUFJaVEsU0FBUyxHQUFHLENBQUMsR0FBRzdXLEtBQUssQ0FBQ2dJLFFBQVYsRUFBb0I7TUFDaENrRyxVQUFVLEVBQUUsS0FEb0I7TUFFaEMxRSxPQUFPLEVBQUUsRUFGdUI7TUFHaEM1QyxJQUFJLEVBQUU7SUFIMEIsQ0FBcEIsQ0FBaEI7SUFLQSxJQUFJaUIsV0FBVyxHQUFHLENBQUMsR0FBRzdILEtBQUssQ0FBQ2dCLEdBQVYsRUFBZSxLQUFmLENBQWxCO0lBQ0EsSUFBSXVuQixXQUFXLEdBQUcsQ0FBQyxHQUFHdm9CLEtBQUssQ0FBQ2dCLEdBQVYsRUFBZSxDQUFmLENBQWxCOztJQUNBLElBQUlMLEVBQUUsR0FBRyxDQUFDLEdBQUcyRixNQUFNLENBQUM4QyxTQUFYLEdBQVQ7SUFBQSxJQUFrQytXLFlBQVksR0FBR3hmLEVBQUUsQ0FBQyxDQUFELENBQW5EO0lBQUEsSUFBd0QwZixhQUFhLEdBQUcxZixFQUFFLENBQUMsQ0FBRCxDQUExRTs7SUFDQSxJQUFJeUcsRUFBRSxHQUFHLENBQUMsR0FBR2QsTUFBTSxDQUFDOEMsU0FBWCxHQUFUO0lBQUEsSUFBa0NrWixjQUFjLEdBQUdsYixFQUFFLENBQUMsQ0FBRCxDQUFyRDtJQUFBLElBQTBEbWIsZUFBZSxHQUFHbmIsRUFBRSxDQUFDLENBQUQsQ0FBOUU7O0lBQ0EsSUFBSStCLEVBQUUsR0FBRyxDQUFDLEdBQUc3QyxNQUFNLENBQUM4QyxTQUFYLEdBQVQ7SUFBQSxJQUFrQ2dXLFdBQVcsR0FBR2pXLEVBQUUsQ0FBQyxDQUFELENBQWxEO0lBQUEsSUFBdURrVyxZQUFZLEdBQUdsVyxFQUFFLENBQUMsQ0FBRCxDQUF4RTs7SUFDQSxJQUFJeU0sRUFBRSxHQUFHLENBQUMsR0FBR3RQLE1BQU0sQ0FBQzhDLFNBQVgsR0FBVDtJQUFBLElBQWtDb2YsYUFBYSxHQUFHNVMsRUFBRSxDQUFDLENBQUQsQ0FBcEQ7SUFBQSxJQUF5RDZTLGNBQWMsR0FBRzdTLEVBQUUsQ0FBQyxDQUFELENBQTVFOztJQUNBLElBQUkwUyxTQUFTLEdBQUcsQ0FBQyxHQUFHdG9CLEtBQUssQ0FBQ2dCLEdBQVYsRUFBZSxDQUFmLENBQWhCOztJQUNBLElBQUkwbkIsYUFBYSxHQUFHLFNBQWhCQSxhQUFnQixHQUFZO01BQzVCN2dCLFdBQVcsQ0FBQzlILEtBQVosR0FBb0IsQ0FBQzhILFdBQVcsQ0FBQzlILEtBQWpDO0lBQ0gsQ0FGRDs7SUFHQSxDQUFDLEdBQUdDLEtBQUssQ0FBQ3FNLFdBQVYsRUFBdUIsWUFBWTtNQUMvQjFKLE1BQU0sQ0FBQ3lRLG1CQUFQLENBQTJCLFFBQTNCLEVBQXFDdVYsWUFBckM7TUFDQWhtQixNQUFNLENBQUN5USxtQkFBUCxDQUEyQixRQUEzQixFQUFxQzBWLFNBQXJDO0lBQ0gsQ0FIRDtJQUlBLENBQUMsR0FBRzlvQixLQUFLLENBQUNrQixTQUFWLEVBQXFCLFlBQVk7TUFDN0J5QixNQUFNLENBQUNxUSxnQkFBUCxDQUF3QixRQUF4QixFQUFrQzhWLFNBQWxDO01BQ0FubUIsTUFBTSxDQUFDcVEsZ0JBQVAsQ0FBd0IsUUFBeEIsRUFBa0MyVixZQUFsQzs7TUFDQSxJQUFJamlCLEtBQUssQ0FBQzZDLEtBQU4sQ0FBWUMsT0FBWixLQUF3QixFQUE1QixFQUFnQztRQUM1Qm9OLFNBQVMsQ0FBQ2hRLElBQVYsR0FBaUJGLEtBQUssQ0FBQzZDLEtBQU4sQ0FBWTNDLElBQVosS0FBcUIsU0FBckIsR0FBaUMsSUFBakMsR0FBd0MsS0FBekQ7UUFDQWdRLFNBQVMsQ0FBQzFJLFVBQVYsR0FBdUIsSUFBdkI7UUFDQTBJLFNBQVMsQ0FBQ3BOLE9BQVYsR0FBb0I5QyxLQUFLLENBQUM2QyxLQUFOLENBQVlDLE9BQWhDO01BQ0g7SUFDSixDQVJEOztJQVNBLElBQUlzZixTQUFTLEdBQUcsU0FBWkEsU0FBWSxDQUFVM1QsS0FBVixFQUFpQjtNQUM3Qm9ULFdBQVcsQ0FBQ3hvQixLQUFaLEdBQW9Cb1YsS0FBSyxDQUFDMEgsTUFBTixDQUFhNVMsVUFBakM7O01BQ0EsSUFBSXNlLFdBQVcsQ0FBQ3hvQixLQUFaLEdBQW9CLElBQXhCLEVBQThCO1FBQzFCcUIsUUFBUSxDQUFDaUosZUFBVCxDQUF5Qi9JLEtBQXpCLENBQStCZ0osUUFBL0IsR0FBMEMsTUFBMUM7TUFDSCxDQUZELE1BR0s7UUFDRHpDLFdBQVcsQ0FBQzlILEtBQVosS0FDS3FCLFFBQVEsQ0FBQ2lKLGVBQVQsQ0FBeUIvSSxLQUF6QixDQUErQmdKLFFBQS9CLEdBQTBDLFFBRC9DO01BRUg7SUFDSixDQVREOztJQVVBLElBQUlxZSxZQUFZLEdBQUcsU0FBZkEsWUFBZSxHQUFZO01BQzNCTCxTQUFTLENBQUN2b0IsS0FBVixHQUFrQjRDLE1BQU0sQ0FBQ2ltQixPQUF6QjtJQUNILENBRkQ7O0lBR0EsSUFBSUMsWUFBWSxHQUFHLENBQUMsR0FBRzdvQixLQUFLLENBQUN3RCxRQUFWLEVBQW9CLFlBQVk7TUFDL0MsT0FBTzhrQixTQUFTLENBQUN2b0IsS0FBVixLQUFvQixDQUEzQjtJQUNILENBRmtCLENBQW5CO0lBR0EsSUFBSStwQixhQUFhLEdBQUcsQ0FBQyxHQUFHZ0IsTUFBTSxDQUFDZixjQUFYLEVBQTJCblQsU0FBM0IsRUFBc0MsWUFBWTtNQUFFLE9BQU9vVCxTQUFQO0lBQW1CLENBQXZFLEVBQXlFO01BQ3pGQyxLQUFLLEVBQUU7SUFEa0YsQ0FBekUsRUFFakJILGFBRkg7SUFHQSxDQUFDLEdBQUc5cEIsS0FBSyxDQUFDZ0osS0FBVixFQUFpQixZQUFZO01BQUUsT0FBT25CLFdBQVcsQ0FBQzlILEtBQW5CO0lBQTJCLENBQTFELEVBQTRELFVBQVVxSyxPQUFWLEVBQW1CO01BQzNFLElBQUlBLE9BQUosRUFBYTtRQUNUaEosUUFBUSxDQUFDaUosZUFBVCxDQUF5Qi9JLEtBQXpCLENBQStCZ0osUUFBL0IsR0FBMEMsUUFBMUM7TUFDSCxDQUZELE1BSUlsSixRQUFRLENBQUNpSixlQUFULENBQXlCL0ksS0FBekIsQ0FBK0JnSixRQUEvQixHQUEwQyxNQUExQztJQUNQLENBTkQ7SUFPQSxDQUFDLEdBQUd0SyxLQUFLLENBQUNnSixLQUFWLEVBQWlCLFlBQVk7TUFBRSxPQUFPNE4sU0FBUyxDQUFDMUksVUFBakI7SUFBOEIsQ0FBN0QsRUFBK0QsWUFBWTtNQUN2RXpFLFVBQVUsQ0FBQyxZQUFZO1FBQ25CbU4sU0FBUyxDQUFDMUksVUFBVixHQUF1QixLQUF2QjtRQUNBK2EsaUJBQWlCO01BQ3BCLENBSFMsRUFHUCxLQUhPLENBQVY7SUFJSCxDQUxEOztJQU1BLElBQUlBLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBb0IsR0FBWTtNQUNoQ2EsYUFBYSxDQUFDLFlBQVk7UUFDdEJsVCxTQUFTLENBQUNwTixPQUFWLEdBQW9CLEVBQXBCO01BQ0gsQ0FGWSxDQUFiO0lBR0gsQ0FKRDtJQUtBO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7OztJQUNRLElBQUlxTSxFQUFFLEdBQUcsQ0FBQyxHQUFHN1YsS0FBSyxDQUFDME0sTUFBVixFQUFrQmhHLEtBQWxCLENBQVQ7SUFBQSxJQUFtQ21oQixNQUFNLEdBQUdoUyxFQUFFLENBQUNnUyxNQUEvQztJQUFBLElBQXVEL2dCLFlBQVksR0FBRytPLEVBQUUsQ0FBQy9PLFlBQXpFO0lBQUEsSUFBdUY4Z0IsUUFBUSxHQUFHL1IsRUFBRSxDQUFDK1IsUUFBckc7SUFBQSxJQUErR3NCLFdBQVcsR0FBR3JCLE1BQU0sQ0FBQzluQixLQUFwSTtJQUFBLElBQTJJcW9DLGlCQUFpQixHQUFHdGhDLFlBQVksQ0FBQy9HLEtBQTVLO0lBQUEsSUFBbUxzb0MsZ0JBQWdCLEdBQUd4Z0IsTUFBTSxDQUFDOW5CLEtBQTdNO0lBQUEsSUFBb05xcEIsWUFBWSxHQUFHeEIsUUFBUSxDQUFDN25CLEtBQTVPLENBN0VvQixDQThFcEI7OztJQUNBSCxNQUFNLENBQUMwUCxJQUFQLENBQVkrNEIsZ0JBQVosRUFBOEIvdUIsR0FBOUIsQ0FBa0MsVUFBVXpPLEdBQVYsRUFBZTtNQUM3QyxJQUFJMGUsSUFBSSxHQUFHLEtBQVg7TUFDQTNwQixNQUFNLENBQUMwUCxJQUFQLENBQVkrNEIsZ0JBQWdCLENBQUN4OUIsR0FBRCxDQUFoQixDQUFzQixVQUF0QixDQUFaLEVBQStDeU8sR0FBL0MsQ0FBbUQsVUFBVWtRLENBQVYsRUFBYTtRQUM1RCxJQUFJNGUsaUJBQWlCLENBQUM1ZSxDQUFELENBQWpCLElBQXdCLE9BQU80ZSxpQkFBaUIsQ0FBQzVlLENBQUQsQ0FBeEIsS0FBZ0MsUUFBNUQsRUFBc0U7VUFDbEU2ZSxnQkFBZ0IsQ0FBQ3g5QixHQUFELENBQWhCLENBQXNCLFVBQXRCLEVBQWtDMmUsQ0FBbEMsRUFBcUMsU0FBckMsSUFDSTRlLGlCQUFpQixDQUFDNWUsQ0FBRCxDQURyQjtVQUVBRCxJQUFJLEdBQUcsSUFBUDtVQUNBSCxZQUFZLENBQUNJLENBQUQsQ0FBWixDQUFnQixVQUFoQixJQUE4QixJQUE5QjtRQUNILENBTEQsTUFNSztVQUNELE9BQU82ZSxnQkFBZ0IsQ0FBQ3g5QixHQUFELENBQWhCLENBQXNCMmUsQ0FBdEIsQ0FBUDtVQUNBSixZQUFZLENBQUNJLENBQUQsQ0FBWixDQUFnQixVQUFoQixJQUE4QixLQUE5QjtRQUNIOztRQUNESixZQUFZLENBQUNJLENBQUQsQ0FBWixDQUFnQixNQUFoQixJQUNJNmUsZ0JBQWdCLENBQUN4OUIsR0FBRCxDQUFoQixDQUFzQixVQUF0QixFQUFrQzJlLENBQWxDLEVBQXFDLFdBQXJDLENBREo7UUFFQUosWUFBWSxDQUFDSSxDQUFELENBQVosQ0FBZ0IsV0FBaEIsSUFDSUEsQ0FBQyxLQUFLLHlCQUFOLEdBQ000ZSxpQkFBaUIsQ0FBQyxnQkFBRCxDQUFqQixDQUFvQyxZQUFwQyxDQUROLEdBRU1BLGlCQUFpQixDQUFDLGdCQUFELENBQWpCLENBQW9DNWUsQ0FBcEMsQ0FIVjtRQUlBSixZQUFZLENBQUNJLENBQUQsQ0FBWixDQUFnQixlQUFoQixJQUFtQyxDQUFDSixZQUFZLENBQUNJLENBQUQsQ0FBWixDQUFnQixXQUFoQixDQUFwQztNQUNILENBbEJEOztNQW1CQSxJQUFJRCxJQUFJLEtBQUssS0FBYixFQUFvQjtRQUNoQixPQUFPOGUsZ0JBQWdCLENBQUN4OUIsR0FBRCxDQUF2QjtNQUNIO0lBQ0osQ0F4QkQsRUEvRW9CLENBd0dwQjs7SUFDQWpMLE1BQU0sQ0FBQzBQLElBQVAsQ0FBWTRaLFdBQVosRUFBeUI1UCxHQUF6QixDQUE2QixVQUFVek8sR0FBVixFQUFlO01BQ3hDLElBQUlqTCxNQUFNLENBQUN3bEIsU0FBUCxDQUFpQkMsY0FBakIsQ0FBZ0NwZixJQUFoQyxDQUFxQ29pQyxnQkFBckMsRUFBdUR4OUIsR0FBdkQsQ0FBSixFQUFpRTtRQUM3RHFlLFdBQVcsQ0FBQ3JlLEdBQUQsQ0FBWCxDQUFpQixRQUFqQixJQUE2QixTQUE3QjtNQUNILENBRkQsTUFHSztRQUNEcWUsV0FBVyxDQUFDcmUsR0FBRCxDQUFYLENBQWlCLFFBQWpCLElBQTZCLFVBQTdCO01BQ0g7SUFDSixDQVBEO0lBUUEsSUFBSXk5QixjQUFjLEdBQUcsQ0FBQyxHQUFHdG9DLEtBQUssQ0FBQ2dJLFFBQVYsRUFBb0I7TUFDckN3QixPQUFPLEVBQUUsRUFENEI7TUFFckM1QyxJQUFJLEVBQUU7SUFGK0IsQ0FBcEIsQ0FBckI7SUFJQSxJQUFJdWIsYUFBYSxHQUFHLENBQUMsR0FBR25pQixLQUFLLENBQUNnSSxRQUFWLEVBQW9CO01BQ3BDdWIsWUFBWSxFQUFFNmtCLGlCQUFpQixDQUFDN2tCLFlBREk7TUFFcENsWSxNQUFNLEVBQUUrOEIsaUJBQWlCLENBQUMvOEI7SUFGVSxDQUFwQixDQUFwQjtJQUlBLENBQUMsR0FBR3JMLEtBQUssQ0FBQ2txQixPQUFWLEVBQW1CLGdCQUFuQixFQUFxQ29lLGNBQXJDO0lBQ0EsQ0FBQyxHQUFHdG9DLEtBQUssQ0FBQ2txQixPQUFWLEVBQW1CLG9CQUFuQixFQUF5Q3hqQixLQUFLLENBQUN3aEMsa0JBQS9DO0lBQ0EsQ0FBQyxHQUFHbG9DLEtBQUssQ0FBQ2txQixPQUFWLEVBQW1CLFdBQW5CLEVBQWdDdFQsU0FBaEM7SUFDQSxDQUFDLEdBQUc1VyxLQUFLLENBQUNrcUIsT0FBVixFQUFtQixlQUFuQixFQUFvQy9ILGFBQXBDO0lBQ0EsQ0FBQyxHQUFHbmlCLEtBQUssQ0FBQ2txQixPQUFWLEVBQW1CLFdBQW5CLEVBQWdDclQsU0FBaEM7SUFDQSxDQUFDLEdBQUc3VyxLQUFLLENBQUNrcUIsT0FBVixFQUFtQixVQUFuQixFQUErQnhqQixLQUFLLENBQUN5aEMsUUFBckM7SUFDQSxPQUFPO01BQ0hqZixXQUFXLEVBQUVBLFdBRFY7TUFFSG1mLGdCQUFnQixFQUFFQSxnQkFGZjtNQUdIbG9CLFlBQVksRUFBRUEsWUFIWDtNQUlIRSxhQUFhLEVBQUVBLGFBSlo7TUFLSGlDLGNBQWMsRUFBRUEsY0FMYjtNQU1IQyxlQUFlLEVBQUVBLGVBTmQ7TUFPSG5ELFdBQVcsRUFBRUEsV0FQVjtNQVFIQyxZQUFZLEVBQUVBLFlBUlg7TUFTSG1KLGFBQWEsRUFBRUEsYUFUWjtNQVVIQyxjQUFjLEVBQUVBLGNBVmI7TUFXSFcsWUFBWSxFQUFFQSxZQVhYO01BWUh4UyxTQUFTLEVBQUVBLFNBWlI7TUFhSHVMLGFBQWEsRUFBRUEsYUFiWjtNQWNIdEwsU0FBUyxFQUFFQSxTQWRSO01BZUg2UixhQUFhLEVBQUVBLGFBZlo7TUFnQkg3Z0IsV0FBVyxFQUFFQSxXQWhCVjtNQWlCSGdoQixZQUFZLEVBQUVBLFlBakJYO01Ba0JIdmhCLFNBQVMsRUFBRUE7SUFsQlIsQ0FBUDtFQW9CSDtBQXBNd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDaEJhOztBQUNiMUgsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJQyxLQUFLLEdBQUdELG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXFHLE1BQU0sR0FBR3JHLG1CQUFPLENBQUMsMkRBQUQsQ0FBcEI7O0FBQ0EsSUFBSSt6QixjQUFjLEdBQUcvekIsbUJBQU8sQ0FBQyxpRkFBRCxDQUE1Qjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLHNCQURpQztFQUV6Q2tHLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQ0ZxRSxJQUFJLEVBQUVoSCxNQURKO01BRUZpSCxRQUFRLEVBQUU7SUFGUixDQURIO0lBS0h3RSxNQUFNLEVBQUU7TUFDSnpFLElBQUksRUFBRWhILE1BREY7TUFFSmlILFFBQVEsRUFBRTtJQUZOLENBTEw7SUFTSHlHLFNBQVMsRUFBRTtNQUNQMUcsSUFBSSxFQUFFaEgsTUFEQztNQUVQaUgsUUFBUSxFQUFFO0lBRkgsQ0FUUjtJQWFIMGhDLFNBQVMsRUFBRTtNQUNQM2hDLElBQUksRUFBRWhILE1BREM7TUFFUGlILFFBQVEsRUFBRTtJQUZIO0VBYlIsQ0FGa0M7RUFvQnpDcEcsS0FBSyxFQUFFLGVBQVVDLE9BQVYsRUFBbUJDLEVBQW5CLEVBQXVCO0lBQzFCLElBQUlDLE1BQU0sR0FBR0QsRUFBRSxDQUFDQyxNQUFoQjtJQUNBQSxNQUFNO0lBQ04sSUFBSThGLEtBQUssR0FBR2hHLE9BQVo7SUFDQSxJQUFJNEcsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjs7SUFDQSxJQUFJSCxFQUFFLEdBQUcsQ0FBQyxHQUFHZCxNQUFNLENBQUM4QyxTQUFYLEdBQVQ7SUFBQSxJQUFrQytxQixjQUFjLEdBQUcvc0IsRUFBRSxDQUFDLENBQUQsQ0FBckQ7SUFBQSxJQUEwRGd0QixlQUFlLEdBQUdodEIsRUFBRSxDQUFDLENBQUQsQ0FBOUU7O0lBQ0EsSUFBSTZzQixRQUFRLEdBQUcsQ0FBQyxHQUFHL3pCLEtBQUssQ0FBQ2MsR0FBVixHQUFmO0lBQ0EsSUFBSWt6QixXQUFXLEdBQUcsQ0FBQyxHQUFHaDBCLEtBQUssQ0FBQ2MsR0FBVixHQUFsQjtJQUNBLElBQUltbkMsUUFBUSxHQUFHLENBQUMsR0FBR2pvQyxLQUFLLENBQUN3RCxNQUFWLEVBQWtCLFVBQWxCLENBQWY7SUFDQTtBQUNSO0FBQ0E7O0lBQ1EsSUFBSWtrQixRQUFRLEdBQUcsQ0FBQyxHQUFHMW5CLEtBQUssQ0FBQzhILFFBQVYsRUFBb0I7TUFDL0J5RCxNQUFNLEVBQUUsRUFEdUI7TUFFL0JKLE1BQU0sRUFBRTtJQUZ1QixDQUFwQixDQUFmO0lBSUEsSUFBSWdwQixZQUFZLEdBQUc7TUFDZi9tQixTQUFTLEVBQUUsYUFESTtNQUVmZ25CLGFBQWEsRUFBRSxXQUZBO01BR2ZDLElBQUksRUFBRTtJQUhTLENBQW5CO0lBS0EsSUFBSTdsQixXQUFXLEdBQUc5TyxNQUFNLENBQUMrTyxPQUFQLENBQWVqSSxLQUFLLENBQUNuRSxJQUFyQixDQUFsQjtJQUNBLElBQUlpeUIsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHdDBCLEtBQUssQ0FBQ3NELFFBQVYsRUFBb0IsWUFBWTtNQUNuRCxJQUFJb0wsUUFBUSxHQUFHRixXQUFXLENBQUNHLE1BQVosQ0FBbUIsVUFBVWxPLEVBQVYsRUFBYztRQUM1QyxJQUFJa0ssR0FBRyxHQUFHbEssRUFBRSxDQUFDLENBQUQsQ0FBWjtRQUFBLElBQWlCWixLQUFLLEdBQUdZLEVBQUUsQ0FBQyxDQUFELENBQTNCOztRQUNBLElBQUksQ0FBQ2luQixRQUFRLENBQUN2YyxNQUFkLEVBQXNCO1VBQ2xCLE9BQU8vRCxTQUFTLENBQ1hncUIsT0FERSxDQUNNem1CLEdBRE4sRUFFRjZPLFdBRkUsR0FHRjVPLFFBSEUsQ0FHTzhjLFFBQVEsQ0FBQ25jLE1BQVQsQ0FBZ0JpTyxXQUFoQixHQUE4QjNOLE9BQTlCLENBQXNDLElBQXRDLEVBQTRDLEdBQTVDLEVBQWlEQSxPQUFqRCxDQUF5RCxJQUF6RCxFQUErRCxHQUEvRCxDQUhQLENBQVA7UUFJSCxDQUxELE1BTUs7VUFDRCxJQUFJaE0sS0FBSyxDQUFDNm5CLFFBQVEsQ0FBQ3ZjLE1BQVYsQ0FBVCxFQUE0QjtZQUN4QixPQUFPUixHQUFHLENBQ0w2TyxXQURFLEdBRUY1TyxRQUZFLENBRU84YyxRQUFRLENBQUNuYyxNQUFULENBQWdCaU8sV0FBaEIsR0FBOEIzTixPQUE5QixDQUFzQyxJQUF0QyxFQUE0QyxHQUE1QyxFQUFpREEsT0FBakQsQ0FBeUQsSUFBekQsRUFBK0QsR0FBL0QsQ0FGUCxDQUFQO1VBR0g7UUFDSjtNQUNKLENBZmMsQ0FBZjtNQWdCQSxJQUFJMG9CLFdBQVcsR0FBRzcwQixNQUFNLENBQUNzUCxXQUFQLENBQW1CTixRQUFuQixDQUFsQjtNQUNBLE9BQU82bEIsV0FBUDtJQUNILENBbkJzQixDQUF2QjtJQW9CQSxDQUFDLEdBQUd2MEIsS0FBSyxDQUFDZ0IsU0FBVixFQUFxQixZQUFZO01BQzdCeUIsTUFBTSxDQUFDcVEsZ0JBQVAsQ0FBd0IsT0FBeEIsRUFBaUMsVUFBVXJPLENBQVYsRUFBYTtRQUMxQyxJQUFJLENBQUN1dkIsV0FBVyxDQUFDbjBCLEtBQVosQ0FBa0I2MEIsUUFBbEIsQ0FBMkJqd0IsQ0FBQyxDQUFDa1ksTUFBN0IsQ0FBRCxJQUNBLENBQUNvWCxRQUFRLENBQUNsMEIsS0FBVCxDQUFlNjBCLFFBQWYsQ0FBd0Jqd0IsQ0FBQyxDQUFDa1ksTUFBMUIsQ0FERCxJQUVBc1gsY0FBYyxDQUFDcDBCLEtBRm5CLEVBRTBCO1VBQ3RCcTBCLGVBQWU7UUFDbEI7TUFDSixDQU5EO0lBT0gsQ0FSRDs7SUFTQSxJQUFJTyxjQUFjLEdBQUcsU0FBakJBLGNBQWlCLENBQVU5VCxDQUFWLEVBQWE7TUFDOUIrRyxRQUFRLENBQUN2YyxNQUFULEdBQWtCd1YsQ0FBbEI7TUFDQXVULGVBQWU7SUFDbEIsQ0FIRDs7SUFJQSxJQUFJendCLFlBQVksR0FBRztNQUFFMkQsU0FBUyxFQUFFQSxTQUFiO01BQXdCWixLQUFLLEVBQUVBLEtBQS9CO01BQXNDeXRCLGNBQWMsRUFBRUEsY0FBdEQ7TUFBc0VDLGVBQWUsRUFBRUEsZUFBdkY7TUFBd0dILFFBQVEsRUFBRUEsUUFBbEg7TUFBNEhDLFdBQVcsRUFBRUEsV0FBekk7TUFBc0ppVSxRQUFRLEVBQUVBLFFBQWhLO01BQTBLdmdCLFFBQVEsRUFBRUEsUUFBcEw7TUFBOEx5TSxZQUFZLEVBQUVBLFlBQTVNO01BQTBOM2xCLFdBQVcsRUFBRUEsV0FBdk87TUFBb1A4bEIsZ0JBQWdCLEVBQUVBLGdCQUF0UTtNQUF3UkcsY0FBYyxFQUFFQSxjQUF4UztNQUF3VDZULG9CQUFvQixFQUFFeFUsY0FBYyxDQUFDd1U7SUFBN1YsQ0FBbkI7SUFDQTVvQyxNQUFNLENBQUNDLGNBQVAsQ0FBc0I4RCxZQUF0QixFQUFvQyxpQkFBcEMsRUFBdUQ7TUFBRUcsVUFBVSxFQUFFLEtBQWQ7TUFBcUIvRCxLQUFLLEVBQUU7SUFBNUIsQ0FBdkQ7SUFDQSxPQUFPNEQsWUFBUDtFQUNIO0FBOUV3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNQYTs7QUFDYixJQUFJbEUsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHRCxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlzbUIsZUFBZSxHQUFHOW1CLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxnRkFBRCxDQUFSLENBQXJDOztBQUNBLElBQUkrekIsY0FBYyxHQUFHL3pCLG1CQUFPLENBQUMsaUZBQUQsQ0FBNUI7O0FBQ0EsSUFBSXFtQixPQUFPLEdBQUdybUIsbUJBQU8sQ0FBQywrRkFBRCxDQUFyQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLDRCQURpQztFQUV6Q2tHLEtBQUssRUFBRTtJQUNIbkUsSUFBSSxFQUFFO01BQ0ZxRSxJQUFJLEVBQUVoSCxNQURKO01BRUZpSCxRQUFRLEVBQUU7SUFGUixDQURIO0lBS0hxUixLQUFLLEVBQUU7TUFDSHRSLElBQUksRUFBRXVKLE1BREg7TUFFSHRKLFFBQVEsRUFBRTtJQUZQLENBTEo7SUFTSHVwQixPQUFPLEVBQUU7TUFDTHhwQixJQUFJLEVBQUV1SixNQUREO01BRUx0SixRQUFRLEVBQUU7SUFGTCxDQVROO0lBYUgwcEIsT0FBTyxFQUFFO01BQ0wzcEIsSUFBSSxFQUFFaEgsTUFBTSxJQUFJcVksS0FEWDtNQUVMcFIsUUFBUSxFQUFFO0lBRkwsQ0FiTjtJQWlCSHlCLFFBQVEsRUFBRTtNQUNOMUIsSUFBSSxFQUFFdUosTUFEQTtNQUVOdEosUUFBUSxFQUFFLEtBRko7TUFHTixXQUFTO0lBSEgsQ0FqQlA7SUFzQkh3UixLQUFLLEVBQUU7TUFDSHpSLElBQUksRUFBRXVKLE1BREg7TUFFSHRKLFFBQVEsRUFBRSxLQUZQO01BR0gsV0FBUztJQUhOLENBdEJKO0lBMkJIa2hCLEtBQUssRUFBRTtNQUNIbmhCLElBQUksRUFBRWhILE1BREg7TUFFSGlILFFBQVEsRUFBRTtJQUZQLENBM0JKO0lBK0JId0UsTUFBTSxFQUFFO01BQ0p6RSxJQUFJLEVBQUVLLE9BREY7TUFFSkosUUFBUSxFQUFFO0lBRk47RUEvQkwsQ0FGa0M7RUFzQ3pDcEcsS0FBSyxFQUFFLGVBQVVDLE9BQVYsRUFBbUJDLEVBQW5CLEVBQXVCO0lBQzFCLElBQUlDLE1BQU0sR0FBR0QsRUFBRSxDQUFDQyxNQUFoQjtJQUNBQSxNQUFNO0lBQ04sSUFBSThGLEtBQUssR0FBR2hHLE9BQVo7SUFDQSxJQUFJNEcsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLElBQUk0Z0MsUUFBUSxHQUFHLENBQUMsR0FBR2pvQyxLQUFLLENBQUN3RCxNQUFWLEVBQWtCLFVBQWxCLENBQWY7SUFDQSxJQUFJdXhCLE1BQU0sR0FBRyxZQUFiOztJQUNBLElBQUl2dUIsS0FBSyxDQUFDMlIsS0FBTixLQUFnQixNQUFwQixFQUE0QjtNQUN4QjRjLE1BQU0sR0FBRyxZQUFUO0lBQ0g7O0lBQ0QsQ0FBQyxHQUFHLzBCLEtBQUssQ0FBQ2dxQixPQUFWLEVBQW1CLFVBQW5CLEVBQStCeGpCLEtBQUssQ0FBQ3FoQixLQUFyQzs7SUFDQSxJQUFJMGdCLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBb0IsQ0FBVUMsTUFBVixFQUFrQjtNQUN0QyxJQUFJQyxLQUFLLEdBQUcsSUFBWjtNQUNBLElBQUk5akMsTUFBTSxHQUFHNmpDLE1BQU0sQ0FBQzM4QixPQUFQLENBQWU0OEIsS0FBZixFQUFzQixHQUF0QixDQUFiO01BQ0EsT0FBTzlqQyxNQUFQO0lBQ0gsQ0FKRDs7SUFLQSxJQUFJbEIsWUFBWSxHQUFHO01BQUUyRCxTQUFTLEVBQUVBLFNBQWI7TUFBd0JaLEtBQUssRUFBRUEsS0FBL0I7TUFBc0N5aEMsUUFBUSxFQUFFQSxRQUFoRDtNQUEwRGxULE1BQU0sRUFBRUEsTUFBbEU7TUFBMEV3VCxpQkFBaUIsRUFBRUEsaUJBQTdGO01BQWdIeGhCLFNBQVMsRUFBRVYsZUFBZSxXQUExSTtNQUFvSmlpQixvQkFBb0IsRUFBRXhVLGNBQWMsQ0FBQ3dVLG9CQUF6TDtNQUErTUkscUJBQXFCLEVBQUV0aUIsT0FBTyxDQUFDc2lCLHFCQUE5TztNQUFxUUMsV0FBVyxFQUFFdmlCLE9BQU8sQ0FBQ3VpQixXQUExUjtNQUF1U0Msa0JBQWtCLEVBQUV4aUIsT0FBTyxDQUFDd2lCLGtCQUFuVTtNQUF1VkMscUJBQXFCLEVBQUV6aUIsT0FBTyxDQUFDeWlCLHFCQUF0WDtNQUE2WUMsc0JBQXNCLEVBQUUxaUIsT0FBTyxDQUFDMGlCLHNCQUE3YTtNQUFxY0MsZ0JBQWdCLEVBQUUzaUIsT0FBTyxDQUFDMmlCLGdCQUEvZDtNQUFpZmhZLFlBQVksRUFBRTNLLE9BQU8sQ0FBQzJLO0lBQXZnQixDQUFuQjtJQUNBcnhCLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQjhELFlBQXRCLEVBQW9DLGlCQUFwQyxFQUF1RDtNQUFFRyxVQUFVLEVBQUUsS0FBZDtNQUFxQi9ELEtBQUssRUFBRTtJQUE1QixDQUF2RDtJQUNBLE9BQU80RCxZQUFQO0VBQ0g7QUF6RHdDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ1hhOztBQUNiLElBQUlsRSxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJQyxLQUFLLEdBQUdELG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXdRLFFBQVEsR0FBR2hSLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQywrQ0FBRCxDQUFSLENBQTlCOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsY0FEaUM7RUFFekNrRyxLQUFLLEVBQUU7SUFDSDZwQixPQUFPLEVBQUU7TUFBRTNwQixJQUFJLEVBQUVoSCxNQUFSO01BQWdCaUgsUUFBUSxFQUFFO0lBQTFCO0VBRE4sQ0FGa0M7RUFLekNwRyxLQUFLLEVBQUUsZUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUI7SUFDMUIsSUFBSUMsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQ0FBLE1BQU07SUFDTixJQUFJMEcsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLElBQUl3Z0IsS0FBSyxHQUFHLENBQUMsR0FBRzduQixLQUFLLENBQUN3RCxNQUFWLEVBQWtCLFVBQWxCLENBQVo7O0lBQ0EsU0FBU2lzQixVQUFULENBQW9CMWIsSUFBcEIsRUFBMEI7TUFDdEIsT0FBT0EsSUFBSSxHQUFHLENBQUMsR0FBR3hELFFBQVEsV0FBWixFQUFzQndELElBQXRCLEVBQTRCbkMsTUFBNUIsQ0FBbUMsSUFBbkMsQ0FBSCxHQUE4Q3hLLFNBQVMsQ0FBQytyQixPQUFWLENBQWtCLE1BQWxCLENBQXpEO0lBQ0g7O0lBQ0QsSUFBSTF2QixZQUFZLEdBQUc7TUFBRTJELFNBQVMsRUFBRUEsU0FBYjtNQUF3QnlnQixLQUFLLEVBQUVBLEtBQS9CO01BQXNDNEgsVUFBVSxFQUFFQTtJQUFsRCxDQUFuQjtJQUNBL3ZCLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQjhELFlBQXRCLEVBQW9DLGlCQUFwQyxFQUF1RDtNQUFFRyxVQUFVLEVBQUUsS0FBZDtNQUFxQi9ELEtBQUssRUFBRTtJQUE1QixDQUF2RDtJQUNBLE9BQU80RCxZQUFQO0VBQ0g7QUFoQndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ1RhOztBQUNiLElBQUlsRSxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJQyxLQUFLLEdBQUdELG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXdRLFFBQVEsR0FBR2hSLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQywrQ0FBRCxDQUFSLENBQTlCOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsd0JBRGlDO0VBRXpDa0csS0FBSyxFQUFFO0lBQ0g2cEIsT0FBTyxFQUFFO01BQUUzcEIsSUFBSSxFQUFFaEgsTUFBUjtNQUFnQmlILFFBQVEsRUFBRTtJQUExQjtFQUROLENBRmtDO0VBS3pDcEcsS0FBSyxFQUFFLGVBQVVDLE9BQVYsRUFBbUJDLEVBQW5CLEVBQXVCO0lBQzFCLElBQUlDLE1BQU0sR0FBR0QsRUFBRSxDQUFDQyxNQUFoQjtJQUNBQSxNQUFNO0lBQ04sSUFBSTBHLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJd2dCLEtBQUssR0FBRyxDQUFDLEdBQUc3bkIsS0FBSyxDQUFDd0QsTUFBVixFQUFrQixVQUFsQixDQUFaOztJQUNBLFNBQVNpc0IsVUFBVCxDQUFvQjFiLElBQXBCLEVBQTBCO01BQ3RCLE9BQU9BLElBQUksR0FBRyxDQUFDLEdBQUd4RCxRQUFRLFdBQVosRUFBc0J3RCxJQUF0QixFQUE0Qm5DLE1BQTVCLENBQW1DLElBQW5DLENBQUgsR0FBOEN4SyxTQUFTLENBQUMrckIsT0FBVixDQUFrQixNQUFsQixDQUF6RDtJQUNIOztJQUNELElBQUkxdkIsWUFBWSxHQUFHO01BQUUyRCxTQUFTLEVBQUVBLFNBQWI7TUFBd0J5Z0IsS0FBSyxFQUFFQSxLQUEvQjtNQUFzQzRILFVBQVUsRUFBRUE7SUFBbEQsQ0FBbkI7SUFDQS92QixNQUFNLENBQUNDLGNBQVAsQ0FBc0I4RCxZQUF0QixFQUFvQyxpQkFBcEMsRUFBdUQ7TUFBRUcsVUFBVSxFQUFFLEtBQWQ7TUFBcUIvRCxLQUFLLEVBQUU7SUFBNUIsQ0FBdkQ7SUFDQSxPQUFPNEQsWUFBUDtFQUNIO0FBaEJ3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNUYTs7QUFDYixJQUFJbEUsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHRCxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3USxRQUFRLEdBQUdoUixlQUFlLENBQUNRLG1CQUFPLENBQUMsK0NBQUQsQ0FBUixDQUE5Qjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLG9CQURpQztFQUV6Q2tHLEtBQUssRUFBRTtJQUNINnBCLE9BQU8sRUFBRTtNQUFFM3BCLElBQUksRUFBRWhILE1BQVI7TUFBZ0JpSCxRQUFRLEVBQUU7SUFBMUI7RUFETixDQUZrQztFQUt6Q3BHLEtBQUssRUFBRSxlQUFVQyxPQUFWLEVBQW1CQyxFQUFuQixFQUF1QjtJQUMxQixJQUFJQyxNQUFNLEdBQUdELEVBQUUsQ0FBQ0MsTUFBaEI7SUFDQUEsTUFBTTtJQUNOLElBQUkwRyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSXdnQixLQUFLLEdBQUcsQ0FBQyxHQUFHN25CLEtBQUssQ0FBQ3dELE1BQVYsRUFBa0IsVUFBbEIsQ0FBWjs7SUFDQSxTQUFTaXNCLFVBQVQsQ0FBb0IxYixJQUFwQixFQUEwQjtNQUN0QixPQUFPQSxJQUFJLEdBQUcsQ0FBQyxHQUFHeEQsUUFBUSxXQUFaLEVBQXNCd0QsSUFBdEIsRUFBNEJuQyxNQUE1QixDQUFtQyxJQUFuQyxDQUFILEdBQThDeEssU0FBUyxDQUFDK3JCLE9BQVYsQ0FBa0IsTUFBbEIsQ0FBekQ7SUFDSDs7SUFDRCxJQUFJMXZCLFlBQVksR0FBRztNQUFFMkQsU0FBUyxFQUFFQSxTQUFiO01BQXdCeWdCLEtBQUssRUFBRUEsS0FBL0I7TUFBc0M0SCxVQUFVLEVBQUVBO0lBQWxELENBQW5CO0lBQ0EvdkIsTUFBTSxDQUFDQyxjQUFQLENBQXNCOEQsWUFBdEIsRUFBb0MsaUJBQXBDLEVBQXVEO01BQUVHLFVBQVUsRUFBRSxLQUFkO01BQXFCL0QsS0FBSyxFQUFFO0lBQTVCLENBQXZEO0lBQ0EsT0FBTzRELFlBQVA7RUFDSDtBQWhCd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDVGE7O0FBQ2IvRCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlDLEtBQUssR0FBR0QsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLHVCQURpQztFQUV6Q2tHLEtBQUssRUFBRTtJQUNINnBCLE9BQU8sRUFBRTtNQUFFM3BCLElBQUksRUFBRWhILE1BQVI7TUFBZ0JpSCxRQUFRLEVBQUU7SUFBMUI7RUFETixDQUZrQztFQUt6Q3BHLEtBQUssRUFBRSxlQUFVQyxPQUFWLEVBQW1CQyxFQUFuQixFQUF1QjtJQUMxQixJQUFJQyxNQUFNLEdBQUdELEVBQUUsQ0FBQ0MsTUFBaEI7SUFDQUEsTUFBTTtJQUNOLElBQUkwRyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSXdnQixLQUFLLEdBQUcsQ0FBQyxHQUFHN25CLEtBQUssQ0FBQ3dELE1BQVYsRUFBa0IsVUFBbEIsQ0FBWjtJQUNBLElBQUlDLFlBQVksR0FBRztNQUFFMkQsU0FBUyxFQUFFQSxTQUFiO01BQXdCeWdCLEtBQUssRUFBRUE7SUFBL0IsQ0FBbkI7SUFDQW5vQixNQUFNLENBQUNDLGNBQVAsQ0FBc0I4RCxZQUF0QixFQUFvQyxpQkFBcEMsRUFBdUQ7TUFBRUcsVUFBVSxFQUFFLEtBQWQ7TUFBcUIvRCxLQUFLLEVBQUU7SUFBNUIsQ0FBdkQ7SUFDQSxPQUFPNEQsWUFBUDtFQUNIO0FBYndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ0xhOztBQUNiLElBQUlsRSxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJQyxLQUFLLEdBQUdELG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXdRLFFBQVEsR0FBR2hSLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQywrQ0FBRCxDQUFSLENBQTlCOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsdUJBRGlDO0VBRXpDa0csS0FBSyxFQUFFO0lBQ0g2cEIsT0FBTyxFQUFFO01BQUUzcEIsSUFBSSxFQUFFaEgsTUFBUjtNQUFnQmlILFFBQVEsRUFBRTtJQUExQjtFQUROLENBRmtDO0VBS3pDcEcsS0FBSyxFQUFFLGVBQVVDLE9BQVYsRUFBbUJDLEVBQW5CLEVBQXVCO0lBQzFCLElBQUlDLE1BQU0sR0FBR0QsRUFBRSxDQUFDQyxNQUFoQjtJQUNBQSxNQUFNO0lBQ04sSUFBSTBHLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJd2dCLEtBQUssR0FBRyxDQUFDLEdBQUc3bkIsS0FBSyxDQUFDd0QsTUFBVixFQUFrQixVQUFsQixDQUFaOztJQUNBLFNBQVNpc0IsVUFBVCxDQUFvQjFiLElBQXBCLEVBQTBCO01BQ3RCLE9BQU9BLElBQUksR0FBRyxDQUFDLEdBQUd4RCxRQUFRLFdBQVosRUFBc0J3RCxJQUF0QixFQUE0Qm5DLE1BQTVCLENBQW1DLElBQW5DLENBQUgsR0FBOEN4SyxTQUFTLENBQUMrckIsT0FBVixDQUFrQixNQUFsQixDQUF6RDtJQUNIOztJQUNELElBQUkxdkIsWUFBWSxHQUFHO01BQUUyRCxTQUFTLEVBQUVBLFNBQWI7TUFBd0J5Z0IsS0FBSyxFQUFFQSxLQUEvQjtNQUFzQzRILFVBQVUsRUFBRUE7SUFBbEQsQ0FBbkI7SUFDQS92QixNQUFNLENBQUNDLGNBQVAsQ0FBc0I4RCxZQUF0QixFQUFvQyxpQkFBcEMsRUFBdUQ7TUFBRUcsVUFBVSxFQUFFLEtBQWQ7TUFBcUIvRCxLQUFLLEVBQUU7SUFBNUIsQ0FBdkQ7SUFDQSxPQUFPNEQsWUFBUDtFQUNIO0FBaEJ3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNUYTs7QUFDYixJQUFJbEUsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHRCxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3USxRQUFRLEdBQUdoUixlQUFlLENBQUNRLG1CQUFPLENBQUMsK0NBQUQsQ0FBUixDQUE5Qjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLGFBRGlDO0VBRXpDa0csS0FBSyxFQUFFO0lBQ0g2cEIsT0FBTyxFQUFFO01BQUUzcEIsSUFBSSxFQUFFaEgsTUFBUjtNQUFnQmlILFFBQVEsRUFBRTtJQUExQjtFQUROLENBRmtDO0VBS3pDcEcsS0FBSyxFQUFFLGVBQVVDLE9BQVYsRUFBbUJDLEVBQW5CLEVBQXVCO0lBQzFCLElBQUlDLE1BQU0sR0FBR0QsRUFBRSxDQUFDQyxNQUFoQjtJQUNBQSxNQUFNO0lBQ04sSUFBSTBHLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJd2dCLEtBQUssR0FBRyxDQUFDLEdBQUc3bkIsS0FBSyxDQUFDd0QsTUFBVixFQUFrQixVQUFsQixDQUFaOztJQUNBLFNBQVNpc0IsVUFBVCxDQUFvQjFiLElBQXBCLEVBQTBCO01BQ3RCLE9BQU9BLElBQUksR0FBRyxDQUFDLEdBQUd4RCxRQUFRLFdBQVosRUFBc0J3RCxJQUF0QixFQUE0Qm5DLE1BQTVCLENBQW1DLElBQW5DLENBQUgsR0FBOEN4SyxTQUFTLENBQUMrckIsT0FBVixDQUFrQixNQUFsQixDQUF6RDtJQUNIOztJQUNELElBQUkxdkIsWUFBWSxHQUFHO01BQUUyRCxTQUFTLEVBQUVBLFNBQWI7TUFBd0J5Z0IsS0FBSyxFQUFFQSxLQUEvQjtNQUFzQzRILFVBQVUsRUFBRUE7SUFBbEQsQ0FBbkI7SUFDQS92QixNQUFNLENBQUNDLGNBQVAsQ0FBc0I4RCxZQUF0QixFQUFvQyxpQkFBcEMsRUFBdUQ7TUFBRUcsVUFBVSxFQUFFLEtBQWQ7TUFBcUIvRCxLQUFLLEVBQUU7SUFBNUIsQ0FBdkQ7SUFDQSxPQUFPNEQsWUFBUDtFQUNIO0FBaEJ3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNUYTs7QUFDYixJQUFJbEUsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHRCxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3USxRQUFRLEdBQUdoUixlQUFlLENBQUNRLG1CQUFPLENBQUMsK0NBQUQsQ0FBUixDQUE5Qjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLGtCQURpQztFQUV6Q2tHLEtBQUssRUFBRTtJQUNINnBCLE9BQU8sRUFBRTtNQUFFM3BCLElBQUksRUFBRWhILE1BQVI7TUFBZ0JpSCxRQUFRLEVBQUU7SUFBMUI7RUFETixDQUZrQztFQUt6Q3BHLEtBQUssRUFBRSxlQUFVQyxPQUFWLEVBQW1CQyxFQUFuQixFQUF1QjtJQUMxQixJQUFJQyxNQUFNLEdBQUdELEVBQUUsQ0FBQ0MsTUFBaEI7SUFDQUEsTUFBTTtJQUNOLElBQUkwRyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSXdnQixLQUFLLEdBQUcsQ0FBQyxHQUFHN25CLEtBQUssQ0FBQ3dELE1BQVYsRUFBa0IsVUFBbEIsQ0FBWjs7SUFDQSxTQUFTaXNCLFVBQVQsQ0FBb0IxYixJQUFwQixFQUEwQjtNQUN0QixPQUFPQSxJQUFJLEdBQUcsQ0FBQyxHQUFHeEQsUUFBUSxXQUFaLEVBQXNCd0QsSUFBdEIsRUFBNEJuQyxNQUE1QixDQUFtQyxJQUFuQyxDQUFILEdBQThDeEssU0FBUyxDQUFDK3JCLE9BQVYsQ0FBa0IsTUFBbEIsQ0FBekQ7SUFDSDs7SUFDRCxJQUFJMXZCLFlBQVksR0FBRztNQUFFMkQsU0FBUyxFQUFFQSxTQUFiO01BQXdCeWdCLEtBQUssRUFBRUEsS0FBL0I7TUFBc0M0SCxVQUFVLEVBQUVBO0lBQWxELENBQW5CO0lBQ0EvdkIsTUFBTSxDQUFDQyxjQUFQLENBQXNCOEQsWUFBdEIsRUFBb0MsaUJBQXBDLEVBQXVEO01BQUVHLFVBQVUsRUFBRSxLQUFkO01BQXFCL0QsS0FBSyxFQUFFO0lBQTVCLENBQXZEO0lBQ0EsT0FBTzRELFlBQVA7RUFDSDtBQWhCd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDVGE7O0FBQ2IvRCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsa0JBRGlDO0VBRXpDQyxLQUFLLEVBQUUsZUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUI7SUFDMUIsSUFBSUMsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQ0FBLE1BQU07SUFDTixJQUFJMEcsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLElBQUk1RCxZQUFZLEdBQUc7TUFBRTJELFNBQVMsRUFBRUE7SUFBYixDQUFuQjtJQUNBMUgsTUFBTSxDQUFDQyxjQUFQLENBQXNCOEQsWUFBdEIsRUFBb0MsaUJBQXBDLEVBQXVEO01BQUVHLFVBQVUsRUFBRSxLQUFkO01BQXFCL0QsS0FBSyxFQUFFO0lBQTVCLENBQXZEO0lBQ0EsT0FBTzRELFlBQVA7RUFDSDtBQVR3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNKYTs7QUFDYixJQUFJbEUsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXNXLFlBQVksR0FBRzlXLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxnRkFBRCxDQUFSLENBQWxDOztBQUNBLElBQUlJLE9BQU8sR0FBR1osZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRDQUFELENBQVIsQ0FBN0I7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNrTSxVQUFVLEVBQUU7SUFDUnVMLE1BQU0sRUFBRXpCLFlBQVk7RUFEWixDQUQ2QjtFQUl6QzlWLEtBQUssRUFBRSxpQkFBWTtJQUNmLElBQUk2RyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSXVsQixRQUFRLEdBQUcsQ0FBQyxHQUFHOXNCLEtBQUssQ0FBQ2dJLFFBQVYsRUFBb0I7TUFDL0JraEMsS0FBSyxFQUFFO0lBRHdCLENBQXBCLENBQWY7SUFHQSxJQUFJQyxVQUFVLEdBQUcsQ0FBQyxHQUFHbnBDLEtBQUssQ0FBQ2dCLEdBQVYsRUFBZSxFQUFmLENBQWpCO0lBQ0EsSUFBSWtsQixnQkFBZ0IsR0FBRyxDQUFDLEdBQUdsbUIsS0FBSyxDQUFDZ0IsR0FBVixFQUFlLEtBQWYsQ0FBdkI7O0lBQ0EsU0FBUzBaLEtBQVQsR0FBaUI7TUFDYndMLGdCQUFnQixDQUFDbm1CLEtBQWpCLEdBQXlCLElBQXpCO01BQ0FNLE9BQU8sV0FBUCxDQUNLK0ssSUFETCxDQUNVLGlCQURWLEVBQzZCMGhCLFFBRDdCLEVBRUs3cUIsSUFGTCxDQUVVLFVBQVVDLEdBQVYsRUFBZTtRQUNyQixJQUFJQSxHQUFHLENBQUNrbkMsT0FBSixDQUFZQyxXQUFaLENBQXdCditCLFFBQXhCLENBQWlDLFlBQWpDLENBQUosRUFBb0Q7VUFDaERuSSxNQUFNLENBQUM4SCxRQUFQLENBQWdCL0gsSUFBaEIsR0FBdUIsYUFBdkI7UUFDSDs7UUFDRCxJQUFJaUwsUUFBUSxHQUFHekwsR0FBRyxDQUFDSyxJQUFuQjtRQUNBLElBQUk4WixNQUFNLEdBQUcsQ0FBQzFPLFFBQVEsQ0FBQ3JLLE9BQVYsSUFBcUIsWUFBWXFLLFFBQWpDLEdBQTRDQSxRQUFRLENBQUMwTyxNQUFyRCxHQUE4RCxFQUEzRTtRQUNBOHNCLFVBQVUsQ0FBQ3BwQyxLQUFYLEdBQW1Cc2MsTUFBTSxDQUFDNnNCLEtBQVAsR0FBZTdzQixNQUFNLENBQUM2c0IsS0FBUCxDQUFhLENBQWIsQ0FBZixHQUFpQyxFQUFwRDs7UUFDQSxJQUFJdjdCLFFBQVEsQ0FBQ3JLLE9BQWIsRUFBc0I7VUFDbEJYLE1BQU0sQ0FBQzhILFFBQVAsQ0FBZ0IvSCxJQUFoQixHQUF1QixtQkFBdkI7UUFDSDs7UUFDRHdqQixnQkFBZ0IsQ0FBQ25tQixLQUFqQixHQUF5QixLQUF6QjtNQUNILENBYkQsV0FjVyxVQUFVc08sS0FBVixFQUFpQjtRQUN4QixJQUFJZ08sTUFBTSxHQUFHaE8sS0FBSyxDQUFDVixRQUFOLENBQWVwTCxJQUFmLENBQW9COFosTUFBakM7UUFDQThzQixVQUFVLENBQUNwcEMsS0FBWCxHQUFtQnNjLE1BQU0sQ0FBQzZzQixLQUFQLEdBQWU3c0IsTUFBTSxDQUFDNnNCLEtBQVAsQ0FBYSxDQUFiLENBQWYsR0FBaUMsRUFBcEQ7UUFDQWhqQixnQkFBZ0IsQ0FBQ25tQixLQUFqQixHQUF5QixLQUF6QjtNQUNILENBbEJEO0lBbUJIOztJQUNELE9BQU87TUFDSCtzQixRQUFRLEVBQUVBLFFBRFA7TUFFSDVHLGdCQUFnQixFQUFFQSxnQkFGZjtNQUdIaWpCLFVBQVUsRUFBRUEsVUFIVDtNQUlIenVCLEtBQUssRUFBRUEsS0FKSjtNQUtIcFQsU0FBUyxFQUFFQTtJQUxSLENBQVA7RUFPSDtBQXhDd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDVGE7O0FBQ2IsSUFBSTdILGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlJLE9BQU8sR0FBR1osZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRDQUFELENBQVIsQ0FBN0I7O0FBQ0EsSUFBSXNXLFlBQVksR0FBRzlXLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQywwRUFBRCxDQUFSLENBQWxDOztBQUNBLElBQUlxcEMsWUFBWSxHQUFHN3BDLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw2RUFBRCxDQUFSLENBQWxDOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDa00sVUFBVSxFQUFFO0lBQ1J1TCxNQUFNLEVBQUV6QixZQUFZO0VBRFosQ0FENkI7RUFJekM3UCxLQUFLLEVBQUU7SUFDSHdpQyxLQUFLLEVBQUU7TUFDSHRpQyxJQUFJLEVBQUV1SixNQURIO01BRUh0SixRQUFRLEVBQUU7SUFGUCxDQURKO0lBS0gwaUMsS0FBSyxFQUFFO01BQ0gzaUMsSUFBSSxFQUFFdUosTUFESDtNQUVIdEosUUFBUSxFQUFFO0lBRlA7RUFMSixDQUprQztFQWN6Q3BHLEtBQUssRUFBRSxlQUFVaUcsS0FBVixFQUFpQjtJQUNwQixJQUFJWSxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSTJlLGdCQUFnQixHQUFHLENBQUMsR0FBR2xtQixLQUFLLENBQUNnQixHQUFWLEVBQWUsS0FBZixDQUF2QjtJQUNBLElBQUk4ckIsUUFBUSxHQUFHLENBQUMsR0FBRzlzQixLQUFLLENBQUNnSSxRQUFWLEVBQW9CO01BQy9Ca2hDLEtBQUssRUFBRXhpQyxLQUFLLENBQUN3aUMsS0FEa0I7TUFFL0JLLEtBQUssRUFBRTdpQyxLQUFLLENBQUM2aUMsS0FGa0I7TUFHL0JDLFFBQVEsRUFBRSxFQUhxQjtNQUkvQkMscUJBQXFCLEVBQUU7SUFKUSxDQUFwQixDQUFmO0lBTUEsSUFBSTV5QixTQUFTLEdBQUcsQ0FBQyxHQUFHN1csS0FBSyxDQUFDZ0ksUUFBVixFQUFvQjtNQUNoQ2toQyxLQUFLLEVBQUUsRUFEeUI7TUFFaENNLFFBQVEsRUFBRSxFQUZzQjtNQUdoQ0MscUJBQXFCLEVBQUU7SUFIUyxDQUFwQixDQUFoQjs7SUFLQSxTQUFTL3VCLEtBQVQsR0FBaUI7TUFDYixJQUFJL1osRUFBSixFQUFReUcsRUFBUjs7TUFDQThlLGdCQUFnQixDQUFDbm1CLEtBQWpCLEdBQXlCLElBQXpCO01BQ0EsSUFBSTJwQyxJQUFJLEdBQUc7UUFDUFIsS0FBSyxFQUFFcGMsUUFBUSxDQUFDb2MsS0FEVDtRQUVQSyxLQUFLLEVBQUU3aUMsS0FBSyxDQUFDNmlDLEtBRk47UUFHUEUscUJBQXFCLEVBQUUsQ0FBQyxHQUFHSCxZQUFZLFdBQWhCLEVBQTBCeGMsUUFBUSxDQUFDMmMscUJBQW5DLEVBQTBELENBQUM5b0MsRUFBRSxHQUFHZ3BDLE1BQU4sTUFBMEMsSUFBMUMsSUFBa0RocEMsRUFBRSxLQUFLLEtBQUssQ0FBOUQsR0FBa0VBLEVBQWxFLEdBQXVFLEVBQWpJLENBSGhCO1FBSVA2b0MsUUFBUSxFQUFFLENBQUMsR0FBR0YsWUFBWSxXQUFoQixFQUEwQnhjLFFBQVEsQ0FBQzBjLFFBQW5DLEVBQTZDLENBQUNwaUMsRUFBRSxHQUFHdWlDLE1BQU4sTUFBMEMsSUFBMUMsSUFBa0R2aUMsRUFBRSxLQUFLLEtBQUssQ0FBOUQsR0FBa0VBLEVBQWxFLEdBQXVFLEVBQXBIO01BSkgsQ0FBWDtNQU1BL0csT0FBTyxXQUFQLENBQ0srSyxJQURMLENBQ1UsUUFEVixFQUNvQnMrQixJQURwQixFQUVLem5DLElBRkwsQ0FFVSxVQUFVQyxHQUFWLEVBQWU7UUFDckIsSUFBSUEsR0FBRyxDQUFDa25DLE9BQUosQ0FBWUMsV0FBWixDQUF3QnYrQixRQUF4QixDQUFpQyxZQUFqQyxDQUFKLEVBQW9EO1VBQ2hEbkksTUFBTSxDQUFDOEgsUUFBUCxDQUFnQi9ILElBQWhCLEdBQXVCLGFBQXZCO1FBQ0g7O1FBQ0QsSUFBSWlMLFFBQVEsR0FBR3pMLEdBQUcsQ0FBQ0ssSUFBbkI7UUFDQSxJQUFJOFosTUFBTSxHQUFHLFlBQVkxTyxRQUFaLEdBQXVCQSxRQUFRLENBQUMwTyxNQUFoQyxHQUF5QyxFQUF0RDtRQUNBeEYsU0FBUyxDQUFDMnlCLFFBQVYsR0FBcUJudEIsTUFBTSxDQUFDbXRCLFFBQVAsR0FBa0JudEIsTUFBTSxDQUFDbXRCLFFBQVAsQ0FBZ0IsQ0FBaEIsQ0FBbEIsR0FBdUMsRUFBNUQ7UUFDQTN5QixTQUFTLENBQUNxeUIsS0FBVixHQUFrQjdzQixNQUFNLENBQUM2c0IsS0FBUCxHQUFlN3NCLE1BQU0sQ0FBQzZzQixLQUFQLENBQWEsQ0FBYixDQUFmLEdBQWlDLEVBQW5EO1FBQ0FyeUIsU0FBUyxDQUFDNHlCLHFCQUFWLEdBQWtDcHRCLE1BQU0sQ0FBQ290QixxQkFBUCxHQUM1QnB0QixNQUFNLENBQUNvdEIscUJBQVAsQ0FBNkIsQ0FBN0IsQ0FENEIsR0FFNUIsRUFGTjs7UUFHQSxJQUFJOTdCLFFBQVEsQ0FBQ3JLLE9BQWIsRUFBc0I7VUFDbEJYLE1BQU0sQ0FBQzhILFFBQVAsQ0FBZ0IvSCxJQUFoQixHQUF1QixhQUF2QjtRQUNIOztRQUNEd2pCLGdCQUFnQixDQUFDbm1CLEtBQWpCLEdBQXlCLEtBQXpCO01BQ0gsQ0FqQkQsV0FrQlcsVUFBVXNPLEtBQVYsRUFBaUI7UUFDeEIsSUFBSWdPLE1BQU0sR0FBR2hPLEtBQUssQ0FBQ1YsUUFBTixDQUFlcEwsSUFBZixDQUFvQjhaLE1BQWpDO1FBQ0F4RixTQUFTLENBQUMyeUIsUUFBVixHQUFxQm50QixNQUFNLENBQUNtdEIsUUFBUCxHQUFrQm50QixNQUFNLENBQUNtdEIsUUFBUCxDQUFnQixDQUFoQixDQUFsQixHQUF1QyxFQUE1RDtRQUNBM3lCLFNBQVMsQ0FBQ3F5QixLQUFWLEdBQWtCN3NCLE1BQU0sQ0FBQzZzQixLQUFQLEdBQWU3c0IsTUFBTSxDQUFDNnNCLEtBQVAsQ0FBYSxDQUFiLENBQWYsR0FBaUMsRUFBbkQ7UUFDQXJ5QixTQUFTLENBQUM0eUIscUJBQVYsR0FBa0NwdEIsTUFBTSxDQUFDb3RCLHFCQUFQLEdBQzVCcHRCLE1BQU0sQ0FBQ290QixxQkFBUCxDQUE2QixDQUE3QixDQUQ0QixHQUU1QixFQUZOO1FBR0F2akIsZ0JBQWdCLENBQUNubUIsS0FBakIsR0FBeUIsS0FBekI7TUFDSCxDQTFCRDtJQTJCSDs7SUFDRCxPQUFPO01BQ0gyRyxLQUFLLEVBQUVBLEtBREo7TUFFSHdmLGdCQUFnQixFQUFFQSxnQkFGZjtNQUdINEcsUUFBUSxFQUFFQSxRQUhQO01BSUhqVyxTQUFTLEVBQUVBLFNBSlI7TUFLSDZELEtBQUssRUFBRUEsS0FMSjtNQU1IcFQsU0FBUyxFQUFFQTtJQU5SLENBQVA7RUFRSDtBQXpFd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDVmE7O0FBQ2IsSUFBSTdILGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlxbEIsYUFBYSxHQUFHN2xCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxxRkFBRCxDQUFSLENBQW5DOztBQUNBLElBQUk2cEMsT0FBTyxHQUFHN3BDLG1CQUFPLENBQUMseURBQUQsQ0FBckI7O0FBQ0EsSUFBSThwQyxTQUFTLEdBQUc5cEMsbUJBQU8sQ0FBQyxtRkFBRCxDQUF2Qjs7QUFDQSxJQUFJc21CLGVBQWUsR0FBRzltQixlQUFlLENBQUNRLG1CQUFPLENBQUMsd0ZBQUQsQ0FBUixDQUFyQzs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q2tNLFVBQVUsRUFBRTtJQUNSNFosV0FBVyxFQUFFZixhQUFhLFdBRGxCO0lBRVIyQixTQUFTLEVBQUVWLGVBQWU7RUFGbEIsQ0FENkI7RUFLekM3ZixLQUFLLEVBQUU7SUFDSDZlLFVBQVUsRUFBRTtNQUNSM2UsSUFBSSxFQUFFLENBQUN1SixNQUFELEVBQVN2USxNQUFULENBREU7TUFFUmlILFFBQVEsRUFBRTtJQUZGLENBRFQ7SUFLSHdCLFNBQVMsRUFBRTtNQUNQekIsSUFBSSxFQUFFLENBQUN1SixNQUFELEVBQVN2USxNQUFULENBREM7TUFFUGlILFFBQVEsRUFBRTtJQUZILENBTFI7SUFTSDRlLFlBQVksRUFBRTtNQUNWN2UsSUFBSSxFQUFFLENBQUN1SixNQUFELEVBQVN2USxNQUFULENBREk7TUFFVmlILFFBQVEsRUFBRTtJQUZBLENBVFg7SUFhSDJlLGlCQUFpQixFQUFFO01BQ2Y1ZSxJQUFJLEVBQUUsQ0FBQ3VKLE1BQUQsRUFBU3ZRLE1BQVQsQ0FEUztNQUVmaUgsUUFBUSxFQUFFO0lBRkssQ0FiaEI7SUFpQkhtakMsd0JBQXdCLEVBQUU7TUFDdEJwakMsSUFBSSxFQUFFLENBQUN1SixNQUFELEVBQVN2USxNQUFULENBRGdCO01BRXRCaUgsUUFBUSxFQUFFO0lBRlksQ0FqQnZCO0lBcUJIb2pDLGVBQWUsRUFBRTtNQUNicmpDLElBQUksRUFBRSxDQUFDdUosTUFBRCxFQUFTdlEsTUFBVCxDQURPO01BRWJpSCxRQUFRLEVBQUU7SUFGRyxDQXJCZDtJQXlCSHFqQyxrQkFBa0IsRUFBRTtNQUNoQnRqQyxJQUFJLEVBQUUsQ0FBQ3VKLE1BQUQsRUFBU3ZRLE1BQVQsQ0FEVTtNQUVoQmlILFFBQVEsRUFBRTtJQUZNLENBekJqQjtJQTZCSHNqQyxjQUFjLEVBQUU7TUFDWnZqQyxJQUFJLEVBQUUsQ0FBQ3VKLE1BQUQsRUFBU3ZRLE1BQVQsQ0FETTtNQUVaaUgsUUFBUSxFQUFFO0lBRkUsQ0E3QmI7SUFpQ0h1akMsaUJBQWlCLEVBQUU7TUFDZnhqQyxJQUFJLEVBQUUsQ0FBQ3VKLE1BQUQsRUFBU3ZRLE1BQVQsQ0FEUztNQUVmaUgsUUFBUSxFQUFFO0lBRks7RUFqQ2hCLENBTGtDO0VBMkN6Q3BHLEtBQUssRUFBRSxlQUFVaUcsS0FBVixFQUFpQjtJQUNwQixJQUFJWSxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSTRnQyxRQUFRLEdBQUcsQ0FBQyxHQUFHbm9DLEtBQUssQ0FBQzBELE1BQVYsRUFBa0IsVUFBbEIsQ0FBZjtJQUNBLElBQUk3QyxLQUFLLEdBQUcsQ0FBQyxHQUFHaXBDLE9BQU8sQ0FBQ2hwQyxRQUFaLEdBQVo7SUFDQSxJQUFJdXBDLFdBQVcsR0FBRyxDQUFDLEdBQUdycUMsS0FBSyxDQUFDd0QsUUFBVixFQUFvQixZQUFZO01BQzlDLE9BQU8zQyxLQUFLLENBQUNvSSxLQUFOLENBQVlvaEMsV0FBbkI7SUFDSCxDQUZpQixDQUFsQjtJQUdBLElBQUlDLFlBQVksR0FBRyxDQUFDLEdBQUd0cUMsS0FBSyxDQUFDd0QsUUFBVixFQUFvQixZQUFZO01BQy9DLE9BQU8zQyxLQUFLLENBQUNvSSxLQUFOLENBQVlxaEMsWUFBbkI7SUFDSCxDQUZrQixDQUFuQjs7SUFHQSxTQUFTQyxXQUFULENBQXFCMS9CLEdBQXJCLEVBQTBCO01BQ3RCaEssS0FBSyxDQUFDWSxRQUFOLENBQWVzb0MsU0FBUyxDQUFDUyxXQUFWLENBQXNCQyxxQkFBckMsRUFBNEQ7UUFDeEQ1L0IsR0FBRyxFQUFFQSxHQURtRDtRQUV4RDlLLEtBQUssRUFBRXNxQyxXQUFXLENBQUN0cUMsS0FBWixDQUFrQjhLLEdBQWxCO01BRmlELENBQTVEO0lBSUg7O0lBQ0QsT0FBTztNQUNIbkUsS0FBSyxFQUFFQSxLQURKO01BRUh5aEMsUUFBUSxFQUFFQSxRQUZQO01BR0hrQyxXQUFXLEVBQUVBLFdBSFY7TUFJSEMsWUFBWSxFQUFFQSxZQUpYO01BS0hDLFdBQVcsRUFBRUEsV0FMVjtNQU1IampDLFNBQVMsRUFBRUE7SUFOUixDQUFQO0VBUUg7QUFuRXdDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ1hhOztBQUNiLElBQUkyZCxRQUFRLEdBQUksUUFBUSxLQUFLQSxRQUFkLElBQTJCLFlBQVk7RUFDbERBLFFBQVEsR0FBR3JsQixNQUFNLENBQUNvUSxNQUFQLElBQWlCLFVBQVM1SyxDQUFULEVBQVk7SUFDcEMsS0FBSyxJQUFJeWIsQ0FBSixFQUFPeFIsQ0FBQyxHQUFHLENBQVgsRUFBY3hKLENBQUMsR0FBR3FmLFNBQVMsQ0FBQy9lLE1BQWpDLEVBQXlDa0osQ0FBQyxHQUFHeEosQ0FBN0MsRUFBZ0R3SixDQUFDLEVBQWpELEVBQXFEO01BQ2pEd1IsQ0FBQyxHQUFHcUUsU0FBUyxDQUFDN1YsQ0FBRCxDQUFiOztNQUNBLEtBQUssSUFBSThWLENBQVQsSUFBY3RFLENBQWQ7UUFBaUIsSUFBSWpoQixNQUFNLENBQUN3bEIsU0FBUCxDQUFpQkMsY0FBakIsQ0FBZ0NwZixJQUFoQyxDQUFxQzRhLENBQXJDLEVBQXdDc0UsQ0FBeEMsQ0FBSixFQUNiL2YsQ0FBQyxDQUFDK2YsQ0FBRCxDQUFELEdBQU90RSxDQUFDLENBQUNzRSxDQUFELENBQVI7TUFESjtJQUVIOztJQUNELE9BQU8vZixDQUFQO0VBQ0gsQ0FQRDs7RUFRQSxPQUFPNmYsUUFBUSxDQUFDbGdCLEtBQVQsQ0FBZSxJQUFmLEVBQXFCbWdCLFNBQXJCLENBQVA7QUFDSCxDQVZEOztBQVdBLElBQUluaEIsU0FBUyxHQUFJLFFBQVEsS0FBS0EsU0FBZCxJQUE0QixVQUFVQyxPQUFWLEVBQW1CQyxVQUFuQixFQUErQkMsQ0FBL0IsRUFBa0NDLFNBQWxDLEVBQTZDO0VBQ3JGLFNBQVNDLEtBQVQsQ0FBZXJFLEtBQWYsRUFBc0I7SUFBRSxPQUFPQSxLQUFLLFlBQVltRSxDQUFqQixHQUFxQm5FLEtBQXJCLEdBQTZCLElBQUltRSxDQUFKLENBQU0sVUFBVUcsT0FBVixFQUFtQjtNQUFFQSxPQUFPLENBQUN0RSxLQUFELENBQVA7SUFBaUIsQ0FBNUMsQ0FBcEM7RUFBb0Y7O0VBQzVHLE9BQU8sS0FBS21FLENBQUMsS0FBS0EsQ0FBQyxHQUFHSSxPQUFULENBQU4sRUFBeUIsVUFBVUQsT0FBVixFQUFtQkUsTUFBbkIsRUFBMkI7SUFDdkQsU0FBU0MsU0FBVCxDQUFtQnpFLEtBQW5CLEVBQTBCO01BQUUsSUFBSTtRQUFFMEUsSUFBSSxDQUFDTixTQUFTLENBQUNPLElBQVYsQ0FBZTNFLEtBQWYsQ0FBRCxDQUFKO01BQThCLENBQXBDLENBQXFDLE9BQU80RSxDQUFQLEVBQVU7UUFBRUosTUFBTSxDQUFDSSxDQUFELENBQU47TUFBWTtJQUFFOztJQUMzRixTQUFTQyxRQUFULENBQWtCN0UsS0FBbEIsRUFBeUI7TUFBRSxJQUFJO1FBQUUwRSxJQUFJLENBQUNOLFNBQVMsQ0FBQyxPQUFELENBQVQsQ0FBbUJwRSxLQUFuQixDQUFELENBQUo7TUFBa0MsQ0FBeEMsQ0FBeUMsT0FBTzRFLENBQVAsRUFBVTtRQUFFSixNQUFNLENBQUNJLENBQUQsQ0FBTjtNQUFZO0lBQUU7O0lBQzlGLFNBQVNGLElBQVQsQ0FBY0ksTUFBZCxFQUFzQjtNQUFFQSxNQUFNLENBQUNDLElBQVAsR0FBY1QsT0FBTyxDQUFDUSxNQUFNLENBQUM5RSxLQUFSLENBQXJCLEdBQXNDcUUsS0FBSyxDQUFDUyxNQUFNLENBQUM5RSxLQUFSLENBQUwsQ0FBb0JrQyxJQUFwQixDQUF5QnVDLFNBQXpCLEVBQW9DSSxRQUFwQyxDQUF0QztJQUFzRjs7SUFDOUdILElBQUksQ0FBQyxDQUFDTixTQUFTLEdBQUdBLFNBQVMsQ0FBQ1ksS0FBVixDQUFnQmYsT0FBaEIsRUFBeUJDLFVBQVUsSUFBSSxFQUF2QyxDQUFiLEVBQXlEUyxJQUF6RCxFQUFELENBQUo7RUFDSCxDQUxNLENBQVA7QUFNSCxDQVJEOztBQVNBLElBQUlNLFdBQVcsR0FBSSxRQUFRLEtBQUtBLFdBQWQsSUFBOEIsVUFBVWhCLE9BQVYsRUFBbUJqQixJQUFuQixFQUF5QjtFQUNyRSxJQUFJa0MsQ0FBQyxHQUFHO0lBQUVDLEtBQUssRUFBRSxDQUFUO0lBQVlDLElBQUksRUFBRSxnQkFBVztNQUFFLElBQUlDLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBTyxDQUFYLEVBQWMsTUFBTUEsQ0FBQyxDQUFDLENBQUQsQ0FBUDtNQUFZLE9BQU9BLENBQUMsQ0FBQyxDQUFELENBQVI7SUFBYyxDQUF2RTtJQUF5RUMsSUFBSSxFQUFFLEVBQS9FO0lBQW1GQyxHQUFHLEVBQUU7RUFBeEYsQ0FBUjtFQUFBLElBQXNHQyxDQUF0RztFQUFBLElBQXlHQyxDQUF6RztFQUFBLElBQTRHSixDQUE1RztFQUFBLElBQStHSyxDQUEvRztFQUNBLE9BQU9BLENBQUMsR0FBRztJQUFFZixJQUFJLEVBQUVnQixJQUFJLENBQUMsQ0FBRCxDQUFaO0lBQWlCLFNBQVNBLElBQUksQ0FBQyxDQUFELENBQTlCO0lBQW1DLFVBQVVBLElBQUksQ0FBQyxDQUFEO0VBQWpELENBQUosRUFBNEQsT0FBT0MsTUFBUCxLQUFrQixVQUFsQixLQUFpQ0YsQ0FBQyxDQUFDRSxNQUFNLENBQUNDLFFBQVIsQ0FBRCxHQUFxQixZQUFXO0lBQUUsT0FBTyxJQUFQO0VBQWMsQ0FBakYsQ0FBNUQsRUFBZ0pILENBQXZKOztFQUNBLFNBQVNDLElBQVQsQ0FBY0csQ0FBZCxFQUFpQjtJQUFFLE9BQU8sVUFBVUMsQ0FBVixFQUFhO01BQUUsT0FBT3JCLElBQUksQ0FBQyxDQUFDb0IsQ0FBRCxFQUFJQyxDQUFKLENBQUQsQ0FBWDtJQUFzQixDQUE1QztFQUErQzs7RUFDbEUsU0FBU3JCLElBQVQsQ0FBY3NCLEVBQWQsRUFBa0I7SUFDZCxJQUFJUixDQUFKLEVBQU8sTUFBTSxJQUFJUyxTQUFKLENBQWMsaUNBQWQsQ0FBTjs7SUFDUCxPQUFPUCxDQUFDLEtBQUtBLENBQUMsR0FBRyxDQUFKLEVBQU9NLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVWQsQ0FBQyxHQUFHLENBQWQsQ0FBWixDQUFELEVBQWdDQSxDQUF2QztNQUEwQyxJQUFJO1FBQzFDLElBQUlNLENBQUMsR0FBRyxDQUFKLEVBQU9DLENBQUMsS0FBS0osQ0FBQyxHQUFHVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVEsQ0FBUixHQUFZUCxDQUFDLENBQUMsUUFBRCxDQUFiLEdBQTBCTyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFQLENBQUMsQ0FBQyxPQUFELENBQUQsS0FBZSxDQUFDSixDQUFDLEdBQUdJLENBQUMsQ0FBQyxRQUFELENBQU4sS0FBcUJKLENBQUMsQ0FBQ2EsSUFBRixDQUFPVCxDQUFQLENBQXJCLEVBQWdDLENBQS9DLENBQVIsR0FBNERBLENBQUMsQ0FBQ2QsSUFBakcsQ0FBRCxJQUEyRyxDQUFDLENBQUNVLENBQUMsR0FBR0EsQ0FBQyxDQUFDYSxJQUFGLENBQU9ULENBQVAsRUFBVU8sRUFBRSxDQUFDLENBQUQsQ0FBWixDQUFMLEVBQXVCakIsSUFBOUksRUFBb0osT0FBT00sQ0FBUDtRQUNwSixJQUFJSSxDQUFDLEdBQUcsQ0FBSixFQUFPSixDQUFYLEVBQWNXLEVBQUUsR0FBRyxDQUFDQSxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVEsQ0FBVCxFQUFZWCxDQUFDLENBQUNyRixLQUFkLENBQUw7O1FBQ2QsUUFBUWdHLEVBQUUsQ0FBQyxDQUFELENBQVY7VUFDSSxLQUFLLENBQUw7VUFBUSxLQUFLLENBQUw7WUFBUVgsQ0FBQyxHQUFHVyxFQUFKO1lBQVE7O1VBQ3hCLEtBQUssQ0FBTDtZQUFRZCxDQUFDLENBQUNDLEtBQUY7WUFBVyxPQUFPO2NBQUVuRixLQUFLLEVBQUVnRyxFQUFFLENBQUMsQ0FBRCxDQUFYO2NBQWdCakIsSUFBSSxFQUFFO1lBQXRCLENBQVA7O1VBQ25CLEtBQUssQ0FBTDtZQUFRRyxDQUFDLENBQUNDLEtBQUY7WUFBV00sQ0FBQyxHQUFHTyxFQUFFLENBQUMsQ0FBRCxDQUFOO1lBQVdBLEVBQUUsR0FBRyxDQUFDLENBQUQsQ0FBTDtZQUFVOztVQUN4QyxLQUFLLENBQUw7WUFBUUEsRUFBRSxHQUFHZCxDQUFDLENBQUNLLEdBQUYsQ0FBTVksR0FBTixFQUFMOztZQUFrQmpCLENBQUMsQ0FBQ0ksSUFBRixDQUFPYSxHQUFQOztZQUFjOztVQUN4QztZQUNJLElBQUksRUFBRWQsQ0FBQyxHQUFHSCxDQUFDLENBQUNJLElBQU4sRUFBWUQsQ0FBQyxHQUFHQSxDQUFDLENBQUNlLE1BQUYsR0FBVyxDQUFYLElBQWdCZixDQUFDLENBQUNBLENBQUMsQ0FBQ2UsTUFBRixHQUFXLENBQVosQ0FBbkMsTUFBdURKLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFWLElBQWVBLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFoRixDQUFKLEVBQXdGO2NBQUVkLENBQUMsR0FBRyxDQUFKO2NBQU87WUFBVzs7WUFDNUcsSUFBSWMsRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVLENBQVYsS0FBZ0IsQ0FBQ1gsQ0FBRCxJQUFPVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFYLENBQUMsQ0FBQyxDQUFELENBQVQsSUFBZ0JXLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUVgsQ0FBQyxDQUFDLENBQUQsQ0FBaEQsQ0FBSixFQUEyRDtjQUFFSCxDQUFDLENBQUNDLEtBQUYsR0FBVWEsRUFBRSxDQUFDLENBQUQsQ0FBWjtjQUFpQjtZQUFROztZQUN0RixJQUFJQSxFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVUsQ0FBVixJQUFlZCxDQUFDLENBQUNDLEtBQUYsR0FBVUUsQ0FBQyxDQUFDLENBQUQsQ0FBOUIsRUFBbUM7Y0FBRUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQVg7Y0FBZ0JBLENBQUMsR0FBR1csRUFBSjtjQUFRO1lBQVE7O1lBQ3JFLElBQUlYLENBQUMsSUFBSUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQXBCLEVBQXlCO2NBQUVILENBQUMsQ0FBQ0MsS0FBRixHQUFVRSxDQUFDLENBQUMsQ0FBRCxDQUFYOztjQUFnQkgsQ0FBQyxDQUFDSyxHQUFGLENBQU1jLElBQU4sQ0FBV0wsRUFBWDs7Y0FBZ0I7WUFBUTs7WUFDbkUsSUFBSVgsQ0FBQyxDQUFDLENBQUQsQ0FBTCxFQUFVSCxDQUFDLENBQUNLLEdBQUYsQ0FBTVksR0FBTjs7WUFDVmpCLENBQUMsQ0FBQ0ksSUFBRixDQUFPYSxHQUFQOztZQUFjO1FBWHRCOztRQWFBSCxFQUFFLEdBQUdoRCxJQUFJLENBQUNrRCxJQUFMLENBQVVqQyxPQUFWLEVBQW1CaUIsQ0FBbkIsQ0FBTDtNQUNILENBakJ5QyxDQWlCeEMsT0FBT04sQ0FBUCxFQUFVO1FBQUVvQixFQUFFLEdBQUcsQ0FBQyxDQUFELEVBQUlwQixDQUFKLENBQUw7UUFBYWEsQ0FBQyxHQUFHLENBQUo7TUFBUSxDQWpCTyxTQWlCRTtRQUFFRCxDQUFDLEdBQUdILENBQUMsR0FBRyxDQUFSO01BQVk7SUFqQjFEOztJQWtCQSxJQUFJVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVEsQ0FBWixFQUFlLE1BQU1BLEVBQUUsQ0FBQyxDQUFELENBQVI7SUFBYSxPQUFPO01BQUVoRyxLQUFLLEVBQUVnRyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFBLEVBQUUsQ0FBQyxDQUFELENBQVYsR0FBZ0IsS0FBSyxDQUE5QjtNQUFpQ2pCLElBQUksRUFBRTtJQUF2QyxDQUFQO0VBQy9CO0FBQ0osQ0ExQkQ7O0FBMkJBLElBQUlyRixlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJNnBDLE9BQU8sR0FBRzdwQyxtQkFBTyxDQUFDLHlEQUFELENBQXJCOztBQUNBLElBQUk4cEMsU0FBUyxHQUFHOXBDLG1CQUFPLENBQUMsbUZBQUQsQ0FBdkI7O0FBQ0EsSUFBSUksT0FBTyxHQUFHWixlQUFlLENBQUNRLG1CQUFPLENBQUMsNENBQUQsQ0FBUixDQUE3Qjs7QUFDQSxJQUFJeXFDLHdCQUF3QixHQUFHanJDLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0RkFBRCxDQUFSLENBQTlDOztBQUNBLElBQUkwcUMsMkJBQTJCLEdBQUdsckMsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGtHQUFELENBQVIsQ0FBakQ7O0FBQ0EsSUFBSXNXLFlBQVksR0FBRzlXLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxnRkFBRCxDQUFSLENBQWxDOztBQUNBLElBQUl1RyxrQkFBa0IsR0FBRy9HLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxzRkFBRCxDQUFSLENBQXhDOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDa00sVUFBVSxFQUFFO0lBQ1JtK0Isa0JBQWtCLEVBQUVGLHdCQUF3QixXQURwQztJQUVSRyxxQkFBcUIsRUFBRUYsMkJBQTJCLFdBRjFDO0lBR1IzeUIsTUFBTSxFQUFFekIsWUFBWSxXQUhaO0lBSVJoSyxLQUFLLEVBQUUvRixrQkFBa0I7RUFKakIsQ0FENkI7RUFPekNFLEtBQUssRUFBRTtJQUNINmUsVUFBVSxFQUFFO01BQ1IzZSxJQUFJLEVBQUUsQ0FBQ3VKLE1BQUQsRUFBU3ZRLE1BQVQsQ0FERTtNQUVSaUgsUUFBUSxFQUFFO0lBRkYsQ0FEVDtJQUtId0IsU0FBUyxFQUFFO01BQ1B6QixJQUFJLEVBQUUsQ0FBQ3VKLE1BQUQsRUFBU3ZRLE1BQVQsQ0FEQztNQUVQaUgsUUFBUSxFQUFFO0lBRkgsQ0FMUjtJQVNINGUsWUFBWSxFQUFFO01BQ1Y3ZSxJQUFJLEVBQUUsQ0FBQ3VKLE1BQUQsRUFBU3ZRLE1BQVQsQ0FESTtNQUVWaUgsUUFBUSxFQUFFO0lBRkEsQ0FUWDtJQWFIQyxZQUFZLEVBQUU7TUFDVkYsSUFBSSxFQUFFLENBQUN1SixNQUFELEVBQVN2USxNQUFULENBREk7TUFFVmlILFFBQVEsRUFBRTtJQUZBLENBYlg7SUFpQkgyZSxpQkFBaUIsRUFBRTtNQUNmNWUsSUFBSSxFQUFFaEgsTUFEUztNQUVmaUgsUUFBUSxFQUFFO0lBRkssQ0FqQmhCO0lBcUJIc2hDLFFBQVEsRUFBRTtNQUNOdmhDLElBQUksRUFBRXVKLE1BREE7TUFFTnRKLFFBQVEsRUFBRTtJQUZKLENBckJQO0lBeUJIbWpDLHdCQUF3QixFQUFFO01BQ3RCcGpDLElBQUksRUFBRSxDQUFDdUosTUFBRCxFQUFTdlEsTUFBVCxDQURnQjtNQUV0QmlILFFBQVEsRUFBRTtJQUZZLENBekJ2QjtJQTZCSG9qQyxlQUFlLEVBQUU7TUFDYnJqQyxJQUFJLEVBQUUsQ0FBQ3VKLE1BQUQsRUFBU3ZRLE1BQVQsQ0FETztNQUViaUgsUUFBUSxFQUFFO0lBRkcsQ0E3QmQ7SUFpQ0hxakMsa0JBQWtCLEVBQUU7TUFDaEJ0akMsSUFBSSxFQUFFLENBQUN1SixNQUFELEVBQVN2USxNQUFULENBRFU7TUFFaEJpSCxRQUFRLEVBQUU7SUFGTSxDQWpDakI7SUFxQ0hzakMsY0FBYyxFQUFFO01BQ1p2akMsSUFBSSxFQUFFLENBQUN1SixNQUFELEVBQVN2USxNQUFULENBRE07TUFFWmlILFFBQVEsRUFBRTtJQUZFLENBckNiO0lBeUNIdWpDLGlCQUFpQixFQUFFO01BQ2Z4akMsSUFBSSxFQUFFLENBQUN1SixNQUFELEVBQVN2USxNQUFULENBRFM7TUFFZmlILFFBQVEsRUFBRTtJQUZLO0VBekNoQixDQVBrQztFQXFEekNwRyxLQUFLLEVBQUUsZUFBVWlHLEtBQVYsRUFBaUI7SUFDcEIsSUFBSXdLLEtBQUssR0FBRyxJQUFaOztJQUNBLElBQUk1SixTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSXVqQyxHQUFHLEdBQUcsQ0FBQyxHQUFHOXFDLEtBQUssQ0FBQ2dCLEdBQVYsRUFBZSxTQUFmLENBQVY7SUFDQSxJQUFJSCxLQUFLLEdBQUcsQ0FBQyxHQUFHaXBDLE9BQU8sQ0FBQ2hwQyxRQUFaLEdBQVo7SUFDQSxJQUFJb2xCLGdCQUFnQixHQUFHLENBQUMsR0FBR2xtQixLQUFLLENBQUNnQixHQUFWLEVBQWUsS0FBZixDQUF2QjtJQUNBLElBQUkwRyxlQUFlLEdBQUcsQ0FBQyxHQUFHMUgsS0FBSyxDQUFDZ0IsR0FBVixFQUFlLEtBQWYsQ0FBdEI7SUFDQSxJQUFJOEcsWUFBWSxHQUFHLENBQUMsR0FBRzlILEtBQUssQ0FBQ2dCLEdBQVYsRUFBZSxFQUFmLENBQW5CO0lBQ0EsSUFBSStHLFNBQVMsR0FBRyxDQUFDLEdBQUcvSCxLQUFLLENBQUNnQixHQUFWLEVBQWUsS0FBZixDQUFoQjtJQUNBLElBQUkrcEMsY0FBYyxHQUFHLENBQUMsR0FBRy9xQyxLQUFLLENBQUN3RCxRQUFWLEVBQW9CLFlBQVk7TUFBRSxPQUFPM0MsS0FBSyxDQUFDb0ksS0FBTixDQUFZOGhDLGNBQW5CO0lBQW9DLENBQXRFLENBQXJCO0lBQ0EsSUFBSUMsY0FBYyxHQUFHLENBQUMsR0FBR2hyQyxLQUFLLENBQUN3RCxRQUFWLEVBQW9CLFlBQVk7TUFBRSxPQUFPM0MsS0FBSyxDQUFDb0ksS0FBTixDQUFZK2hDLGNBQW5CO0lBQW9DLENBQXRFLENBQXJCO0lBQ0EsSUFBSUMsZUFBZSxHQUFHLENBQUMsR0FBR2pyQyxLQUFLLENBQUN3RCxRQUFWLEVBQW9CLFlBQVk7TUFBRSxPQUFPM0MsS0FBSyxDQUFDb0ksS0FBTixDQUFZZ2lDLGVBQW5CO0lBQXFDLENBQXZFLENBQXRCO0lBQ0EsSUFBSVosV0FBVyxHQUFHLENBQUMsR0FBR3JxQyxLQUFLLENBQUN3RCxRQUFWLEVBQW9CLFlBQVk7TUFBRSxPQUFPM0MsS0FBSyxDQUFDb0ksS0FBTixDQUFZb2hDLFdBQW5CO0lBQWlDLENBQW5FLENBQWxCO0lBQ0EsSUFBSUMsWUFBWSxHQUFHLENBQUMsR0FBR3RxQyxLQUFLLENBQUN3RCxRQUFWLEVBQW9CLFlBQVk7TUFBRSxPQUFPM0MsS0FBSyxDQUFDb0ksS0FBTixDQUFZcWhDLFlBQW5CO0lBQWtDLENBQXBFLENBQW5COztJQUNBLFNBQVNDLFdBQVQsQ0FBcUIzaEMsSUFBckIsRUFBMkJpQyxHQUEzQixFQUFnQzlLLEtBQWhDLEVBQXVDO01BQ25DYyxLQUFLLENBQUNZLFFBQU4sQ0FBZXNvQyxTQUFTLENBQUNTLFdBQVYsQ0FBc0I1aEMsSUFBdEIsQ0FBZixFQUE0QztRQUN4Q2lDLEdBQUcsRUFBRUEsR0FEbUM7UUFFeEM5SyxLQUFLLEVBQUVBO01BRmlDLENBQTVDO0lBSUg7O0lBQ0QsQ0FBQyxHQUFHQyxLQUFLLENBQUNrQixTQUFWLEVBQXFCLFlBQVk7TUFBRSxPQUFPNkMsU0FBUyxDQUFDbU4sS0FBRCxFQUFRLEtBQUssQ0FBYixFQUFnQixLQUFLLENBQXJCLEVBQXdCLFlBQVk7UUFDbkYsSUFBSTNPLElBQUosRUFBVTJvQyxXQUFWLEVBQXVCeGxCLGFBQXZCLEVBQXNDeWxCLGFBQXRDLEVBQXFEQyxjQUFyRCxFQUFxRXZnQyxHQUFyRSxFQUEwRUEsR0FBMUUsRUFBK0VBLEdBQS9FO1FBQ0EsT0FBTzdGLFdBQVcsQ0FBQyxJQUFELEVBQU8sVUFBVXJFLEVBQVYsRUFBYztVQUNuQyxRQUFRQSxFQUFFLENBQUN1RSxLQUFYO1lBQ0ksS0FBSyxDQUFMO2NBQVEsT0FBTyxDQUFDO2NBQUU7Y0FBSCxFQUFjN0UsT0FBTyxXQUFQLENBQWdCK0MsR0FBaEIsQ0FBb0IsZUFBcEIsQ0FBZCxDQUFQOztZQUNSLEtBQUssQ0FBTDtjQUNJYixJQUFJLEdBQUk1QixFQUFFLENBQUN3RSxJQUFILEVBQUQsQ0FBWTVDLElBQW5CO2NBQ0Eyb0MsV0FBVyxHQUFHM29DLElBQUksQ0FBQ0EsSUFBbkI7O2NBQ0EsSUFBSTJvQyxXQUFKLEVBQWlCO2dCQUNieGxCLGFBQWEsR0FBR3dsQixXQUFXLENBQUNHLGNBQVosR0FDVkgsV0FBVyxDQUFDRyxjQURGLEdBRVYsRUFGTjtnQkFHQUYsYUFBYSxHQUFHRCxXQUFXLENBQUNJLGVBQVosR0FDVkosV0FBVyxDQUFDSSxlQURGLEdBRVYsRUFGTjtnQkFHQUYsY0FBYyxHQUFHRixXQUFXLENBQUNLLHVCQUFaLEdBQ1hMLFdBQVcsQ0FBQ0ssdUJBREQsR0FFWCxFQUZOOztnQkFHQSxJQUFJSixhQUFKLEVBQW1CO2tCQUNmLEtBQUt0Z0MsR0FBTCxJQUFZc2dDLGFBQVosRUFBMkI7b0JBQ3ZCWixXQUFXLENBQUMsT0FBT1ksYUFBYSxDQUFDdGdDLEdBQUQsQ0FBcEIsS0FBOEIsUUFBOUIsR0FDTix3QkFETSxHQUVOLHVCQUZLLEVBRW9CQSxHQUZwQixFQUV5QnNnQyxhQUFhLENBQUN0Z0MsR0FBRCxDQUZ0QyxDQUFYO2tCQUdIOztrQkFDRCxJQUFJc2dDLGFBQWEsQ0FBQ0ssU0FBbEIsRUFBNkI7b0JBQ3pCakIsV0FBVyxDQUFDLHVCQUFELEVBQTBCLHlCQUExQixFQUFxRCxJQUFyRCxDQUFYO2tCQUNIO2dCQUNKOztnQkFDRCxJQUFJN2tCLGFBQUosRUFBbUI7a0JBQ2YsS0FBSzdhLEdBQUwsSUFBWTZhLGFBQVosRUFBMkI7b0JBQ3ZCNmtCLFdBQVcsQ0FBQyx1QkFBRCxFQUEwQjEvQixHQUExQixFQUErQjZhLGFBQWEsQ0FBQzdhLEdBQUQsQ0FBNUMsQ0FBWDtrQkFDSDtnQkFDSjs7Z0JBQ0QsSUFBSXVnQyxjQUFKLEVBQW9CO2tCQUNoQixLQUFLdmdDLEdBQUwsSUFBWXVnQyxjQUFaLEVBQTRCO29CQUN4QmIsV0FBVyxDQUFDLHVCQUFELEVBQTBCMS9CLEdBQTFCLEVBQStCdWdDLGNBQWMsQ0FBQ3ZnQyxHQUFELENBQTdDLENBQVg7a0JBQ0g7Z0JBQ0o7Y0FDSjs7Y0FDRCxPQUFPLENBQUM7Y0FBRTtjQUFILENBQVA7VUFwQ1I7UUFzQ0gsQ0F2Q2lCLENBQWxCO01Bd0NILENBMUNrRCxDQUFoQjtJQTBDOUIsQ0ExQ0w7O0lBMkNBLFNBQVM0Z0MsU0FBVCxDQUFtQnh3QixJQUFuQixFQUF5QjtNQUNyQnZULGVBQWUsQ0FBQzNILEtBQWhCLEdBQXdCLEtBQXhCO01BQ0ErcUMsR0FBRyxDQUFDL3FDLEtBQUosR0FBWWtiLElBQVo7SUFDSDs7SUFDRCxTQUFTeXdCLGFBQVQsR0FBeUI7TUFDckIsS0FBSyxJQUFJbnBDLElBQVQsSUFBaUIrbkMsWUFBWSxDQUFDdnFDLEtBQTlCLEVBQXFDO1FBQ2pDd3FDLFdBQVcsQ0FBQyxzQkFBRCxFQUF5QmhvQyxJQUF6QixFQUErQixFQUEvQixDQUFYO01BQ0g7O01BQ0QyakIsZ0JBQWdCLENBQUNubUIsS0FBakIsR0FBeUIsSUFBekI7TUFDQU0sT0FBTyxXQUFQLENBQ0srSyxJQURMLENBQ1Usd0JBRFYsRUFDb0NpL0IsV0FBVyxDQUFDdHFDLEtBRGhELEVBRUtrQyxJQUZMLENBRVUsVUFBVUMsR0FBVixFQUFlO1FBQ3JCLElBQUl5TCxRQUFRLEdBQUd6TCxHQUFHLENBQUNLLElBQW5CO1FBQ0EyakIsZ0JBQWdCLENBQUNubUIsS0FBakIsR0FBeUIsS0FBekI7UUFDQTJILGVBQWUsQ0FBQzNILEtBQWhCLEdBQXdCLElBQXhCO1FBQ0EwSixVQUFVLENBQUMsWUFBWTtVQUFFLE9BQVEvQixlQUFlLENBQUMzSCxLQUFoQixHQUF3QixLQUFoQztRQUF5QyxDQUF4RCxFQUEwRCxJQUExRCxDQUFWO1FBQ0ErSCxZQUFZLENBQUMvSCxLQUFiLEdBQXFCNE4sUUFBUSxDQUFDbkUsT0FBOUI7UUFDQXpCLFNBQVMsQ0FBQ2hJLEtBQVYsR0FBa0I0TixRQUFRLENBQUNySyxPQUEzQjs7UUFDQSxJQUFJcUssUUFBUSxDQUFDckssT0FBYixFQUFzQjtVQUNsQmluQyxXQUFXLENBQUMsdUJBQUQsRUFBMEI1OEIsUUFBUSxDQUFDcEwsSUFBVCxDQUFjb3BDLFdBQXhDLEVBQXFELEVBQXJELENBQVg7UUFDSDs7UUFDRHpsQixnQkFBZ0IsQ0FBQ25tQixLQUFqQixHQUF5QixLQUF6QjtNQUNILENBYkQsV0FjVyxVQUFVc08sS0FBVixFQUFpQjtRQUN4QixJQUFJZ08sTUFBTSxHQUFHaE8sS0FBSyxDQUFDVixRQUFOLENBQWVwTCxJQUFmLENBQW9COFosTUFBakM7O1FBQ0EsS0FBSyxJQUFJMVgsQ0FBVCxJQUFjMFgsTUFBZCxFQUFzQjtVQUNsQmt1QixXQUFXLENBQUMsc0JBQUQsRUFBeUI1bEMsQ0FBekIsRUFBNEIwWCxNQUFNLENBQUMxWCxDQUFELENBQU4sQ0FBVSxDQUFWLENBQTVCLENBQVg7UUFDSDs7UUFDRHVoQixnQkFBZ0IsQ0FBQ25tQixLQUFqQixHQUF5QixLQUF6QjtNQUNILENBcEJEO0lBcUJIOztJQUNELFNBQVM2ckMsZ0JBQVQsQ0FBMEI3cEMsR0FBMUIsRUFBK0I7TUFDM0Jta0IsZ0JBQWdCLENBQUNubUIsS0FBakIsR0FBeUIsSUFBekI7O01BQ0EsS0FBSyxJQUFJd0MsSUFBVCxJQUFpQjBvQyxlQUFlLENBQUNsckMsS0FBakMsRUFBd0M7UUFDcEN3cUMsV0FBVyxDQUFDLHlCQUFELEVBQTRCaG9DLElBQTVCLEVBQWtDLEVBQWxDLENBQVg7TUFDSDs7TUFDRGxDLE9BQU8sV0FBUCxDQUNLK0ssSUFETCxDQUNVckosR0FEVixFQUNla2pCLFFBQVEsQ0FBQ0EsUUFBUSxDQUFDLEVBQUQsRUFBSytsQixjQUFjLENBQUNqckMsS0FBcEIsQ0FBVCxFQUFxQ2dyQyxjQUFjLENBQUNockMsS0FBcEQsQ0FEdkIsRUFFS2tDLElBRkwsQ0FFVSxVQUFVQyxHQUFWLEVBQWU7UUFDckIsSUFBSXlMLFFBQVEsR0FBR3pMLEdBQUcsQ0FBQ0ssSUFBbkI7UUFDQXdGLFNBQVMsQ0FBQ2hJLEtBQVYsR0FBa0I0TixRQUFRLENBQUNySyxPQUEzQjs7UUFDQSxJQUFJcUssUUFBUSxDQUFDckssT0FBYixFQUFzQjtVQUNsQmluQyxXQUFXLENBQUMsdUJBQUQsRUFBMEIsd0JBQTFCLEVBQW9ENThCLFFBQVEsQ0FBQ3BMLElBQVQsQ0FBY3NwQyxzQkFBbEUsQ0FBWDtVQUNBdEIsV0FBVyxDQUFDLHVCQUFELEVBQTBCLG9CQUExQixFQUFnRDU4QixRQUFRLENBQUNwTCxJQUFULENBQWN1cEMsa0JBQTlELENBQVg7VUFDQXZCLFdBQVcsQ0FBQyx1QkFBRCxFQUEwQix5QkFBMUIsRUFBcUQsSUFBckQsQ0FBWDtVQUNBeGlDLFNBQVMsQ0FBQ2hJLEtBQVYsR0FDSTROLFFBQVEsQ0FBQ3BMLElBQVQsQ0FBY3NwQyxzQkFBZCxJQUNJbCtCLFFBQVEsQ0FBQ3BMLElBQVQsQ0FBY3VwQyxrQkFGdEI7UUFHSDs7UUFDRDVsQixnQkFBZ0IsQ0FBQ25tQixLQUFqQixHQUF5QixLQUF6QjtRQUNBMkgsZUFBZSxDQUFDM0gsS0FBaEIsR0FBd0IsSUFBeEI7UUFDQTBKLFVBQVUsQ0FBQyxZQUFZO1VBQUUsT0FBUS9CLGVBQWUsQ0FBQzNILEtBQWhCLEdBQXdCLEtBQWhDO1FBQXlDLENBQXhELEVBQTBELElBQTFELENBQVY7UUFDQStILFlBQVksQ0FBQy9ILEtBQWIsR0FBcUI0TixRQUFRLENBQUNuRSxPQUE5QjtNQUNILENBakJELFdBa0JXLFVBQVU2RSxLQUFWLEVBQWlCO1FBQ3hCLElBQUlnTyxNQUFNLEdBQUdoTyxLQUFLLENBQUNWLFFBQU4sQ0FBZXBMLElBQWYsQ0FBb0I4WixNQUFqQzs7UUFDQSxLQUFLLElBQUkxWCxDQUFULElBQWMwWCxNQUFkLEVBQXNCO1VBQ2xCa3VCLFdBQVcsQ0FBQyx5QkFBRCxFQUE0QjVsQyxDQUE1QixFQUErQjBYLE1BQU0sQ0FBQzFYLENBQUQsQ0FBTixDQUFVLENBQVYsQ0FBL0IsQ0FBWDtRQUNIOztRQUNEdWhCLGdCQUFnQixDQUFDbm1CLEtBQWpCLEdBQXlCLEtBQXpCO01BQ0gsQ0F4QkQ7SUF5Qkg7O0lBQ0QsU0FBU29tQixVQUFULENBQW9CcGtCLEdBQXBCLEVBQXlCO01BQ3JCLElBQUlBLEdBQUcsS0FBSyxLQUFLLENBQWpCLEVBQW9CO1FBQUVBLEdBQUcsR0FBRyxnQkFBTjtNQUF5Qjs7TUFDL0MsSUFBSTJFLEtBQUssQ0FBQ3loQyxRQUFOLEtBQW1CLE9BQXZCLEVBQWdDO1FBQzVCLElBQUkyQyxHQUFHLENBQUMvcUMsS0FBSixLQUFjLFNBQWxCLEVBQ0k2ckMsZ0JBQWdCLENBQUM3cEMsR0FBRCxDQUFoQjtRQUNKLElBQUkrb0MsR0FBRyxDQUFDL3FDLEtBQUosS0FBYyxTQUFsQixFQUNJMnJDLGFBQWE7TUFDcEI7SUFDSjs7SUFDRCxDQUFDLEdBQUcxckMsS0FBSyxDQUFDa3FCLE9BQVYsRUFBbUIsVUFBbkIsRUFBK0J4akIsS0FBSyxDQUFDeWhDLFFBQXJDO0lBQ0EsT0FBTztNQUNIemhDLEtBQUssRUFBRUEsS0FESjtNQUVIb2tDLEdBQUcsRUFBRUEsR0FGRjtNQUdIUixZQUFZLEVBQUVBLFlBSFg7TUFJSFcsZUFBZSxFQUFFQSxlQUpkO01BS0hwcUMsS0FBSyxFQUFFQSxLQUxKO01BTUhxbEIsZ0JBQWdCLEVBQUVBLGdCQU5mO01BT0h4ZSxlQUFlLEVBQUVBLGVBUGQ7TUFRSEksWUFBWSxFQUFFQSxZQVJYO01BU0hDLFNBQVMsRUFBRUEsU0FUUjtNQVVIMGpDLFNBQVMsRUFBRUEsU0FWUjtNQVdIdGxCLFVBQVUsRUFBRUEsVUFYVDtNQVlIN2UsU0FBUyxFQUFFQTtJQVpSLENBQVA7RUFjSDtBQTFNd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDN0RhOztBQUNiLElBQUk3SCxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJNnBDLE9BQU8sR0FBRzdwQyxtQkFBTyxDQUFDLHlEQUFELENBQXJCOztBQUNBLElBQUk4cEMsU0FBUyxHQUFHOXBDLG1CQUFPLENBQUMsbUZBQUQsQ0FBdkI7O0FBQ0EsSUFBSXNtQixlQUFlLEdBQUc5bUIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHdGQUFELENBQVIsQ0FBckM7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNrTSxVQUFVLEVBQUU7SUFDUndhLFNBQVMsRUFBRVYsZUFBZTtFQURsQixDQUQ2QjtFQUl6QzdmLEtBQUssRUFBRTtJQUNISSxZQUFZLEVBQUU7TUFDVkYsSUFBSSxFQUFFaEgsTUFESTtNQUVWaUgsUUFBUSxFQUFFO0lBRkE7RUFEWCxDQUprQztFQVV6Q21HLEtBQUssRUFBRSxDQUFDLGtCQUFELENBVmtDO0VBV3pDdk0sS0FBSyxFQUFFLGVBQVVpRyxLQUFWLEVBQWlCL0YsRUFBakIsRUFBcUI7SUFDeEIsSUFBSXNNLElBQUksR0FBR3RNLEVBQUUsQ0FBQ3NNLElBQWQ7SUFDQSxJQUFJM0YsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLElBQUl1akMsR0FBRyxHQUFHLENBQUMsR0FBRzlxQyxLQUFLLENBQUNnQixHQUFWLEVBQWUsU0FBZixDQUFWO0lBQ0EsSUFBSUgsS0FBSyxHQUFHLENBQUMsR0FBR2lwQyxPQUFPLENBQUNocEMsUUFBWixHQUFaO0lBQ0EsSUFBSXFuQyxRQUFRLEdBQUcsQ0FBQyxHQUFHbm9DLEtBQUssQ0FBQzBELE1BQVYsRUFBa0IsVUFBbEIsQ0FBZjtJQUNBLElBQUlxbkMsY0FBYyxHQUFHLENBQUMsR0FBRy9xQyxLQUFLLENBQUN3RCxRQUFWLEVBQW9CLFlBQVk7TUFBRSxPQUFPM0MsS0FBSyxDQUFDb0ksS0FBTixDQUFZOGhDLGNBQW5CO0lBQW9DLENBQXRFLENBQXJCO0lBQ0EsSUFBSUMsY0FBYyxHQUFHLENBQUMsR0FBR2hyQyxLQUFLLENBQUN3RCxRQUFWLEVBQW9CLFlBQVk7TUFBRSxPQUFPM0MsS0FBSyxDQUFDb0ksS0FBTixDQUFZK2hDLGNBQW5CO0lBQW9DLENBQXRFLENBQXJCO0lBQ0EsSUFBSUMsZUFBZSxHQUFHLENBQUMsR0FBR2pyQyxLQUFLLENBQUN3RCxRQUFWLEVBQW9CLFlBQVk7TUFBRSxPQUFPM0MsS0FBSyxDQUFDb0ksS0FBTixDQUFZZ2lDLGVBQW5CO0lBQXFDLENBQXZFLENBQXRCOztJQUNBLFNBQVNXLGdCQUFULEdBQTRCO01BQ3hCLElBQUl6RCxRQUFRLEtBQUssT0FBakIsRUFBMEI7UUFDdEJsN0IsSUFBSSxDQUFDLGtCQUFELENBQUo7TUFDSDtJQUNKOztJQUNELFNBQVM4K0IsVUFBVCxHQUFzQjtNQUNsQjkrQixJQUFJLENBQUMsa0JBQUQsQ0FBSjtJQUNIOztJQUNELFNBQVNzOUIsV0FBVCxDQUFxQjEvQixHQUFyQixFQUEwQjtNQUN0QmhLLEtBQUssQ0FBQ1ksUUFBTixDQUFlc29DLFNBQVMsQ0FBQ1MsV0FBVixDQUFzQndCLHNCQUFyQyxFQUE2RDtRQUN6RG5oQyxHQUFHLEVBQUVBLEdBRG9EO1FBRXpEOUssS0FBSyxFQUFFZ3JDLGNBQWMsQ0FBQ2hyQyxLQUFmLENBQXFCOEssR0FBckI7TUFGa0QsQ0FBN0Q7SUFJSDs7SUFDRCxTQUFTNGdDLFNBQVQsR0FBcUI7TUFDakJYLEdBQUcsQ0FBQy9xQyxLQUFKLEdBQVkrcUMsR0FBRyxDQUFDL3FDLEtBQUosS0FBYyxTQUFkLEdBQTBCLFNBQTFCLEdBQXNDLFNBQWxEO0lBQ0g7O0lBQ0QsT0FBTztNQUNIK3FDLEdBQUcsRUFBRUEsR0FERjtNQUVIQyxjQUFjLEVBQUVBLGNBRmI7TUFHSEMsY0FBYyxFQUFFQSxjQUhiO01BSUhDLGVBQWUsRUFBRUEsZUFKZDtNQUtIcHFDLEtBQUssRUFBRUEsS0FMSjtNQU1INkYsS0FBSyxFQUFFQSxLQU5KO01BT0h5aEMsUUFBUSxFQUFFQSxRQVBQO01BUUh5RCxnQkFBZ0IsRUFBRUEsZ0JBUmY7TUFTSEgsU0FBUyxFQUFFQSxTQVRSO01BVUhsQixXQUFXLEVBQUVBLFdBVlY7TUFXSHdCLFVBQVUsRUFBRUEsVUFYVDtNQVlIemtDLFNBQVMsRUFBRUE7SUFaUixDQUFQO0VBY0g7QUFuRHdDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ1ZhOztBQUNiLElBQUk3SCxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJQyxLQUFLLEdBQUdELG1CQUFPLENBQUMsdURBQUQsQ0FBbkIsRUFDQTs7O0FBQ0EsSUFBSWtmLG9CQUFvQixHQUFHMWYsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRHQUFELENBQVIsQ0FBMUM7O0FBQ0EsSUFBSXVHLGtCQUFrQixHQUFHL0csZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHNGQUFELENBQVIsQ0FBeEM7O0FBQ0EsSUFBSWdzQyxlQUFlLEdBQUd4c0MsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLG1HQUFELENBQVIsQ0FBckM7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNDLE1BQU0sRUFBRSxrQkFEaUM7RUFFekNrRyxLQUFLLEVBQUU7SUFDSHdsQyxTQUFTLEVBQUU7TUFBRXRsQyxJQUFJLEVBQUVoSCxNQUFSO01BQWdCaUgsUUFBUSxFQUFFO0lBQTFCLENBRFI7SUFFSHNsQyxpQkFBaUIsRUFBRTtNQUFFdmxDLElBQUksRUFBRWhILE1BQVI7TUFBZ0JpSCxRQUFRLEVBQUU7SUFBMUIsQ0FGaEI7SUFHSHVsQyxpQkFBaUIsRUFBRTtNQUFFeGxDLElBQUksRUFBRWhILE1BQVI7TUFBZ0JpSCxRQUFRLEVBQUU7SUFBMUIsQ0FIaEI7SUFJSHdsQyxjQUFjLEVBQUU7TUFBRXpsQyxJQUFJLEVBQUVoSCxNQUFSO01BQWdCaUgsUUFBUSxFQUFFO0lBQTFCLENBSmI7SUFLSHlsQyxZQUFZLEVBQUU7TUFBRTFsQyxJQUFJLEVBQUVoSCxNQUFSO01BQWdCaUgsUUFBUSxFQUFFO0lBQTFCLENBTFg7SUFNSHc2QixXQUFXLEVBQUU7TUFDVHo2QixJQUFJLEVBQUV1SixNQURHO01BRVR0SixRQUFRLEVBQUU7SUFGRDtFQU5WLENBRmtDO0VBYXpDcEcsS0FBSyxFQUFFLGVBQVVDLE9BQVYsRUFBbUJDLEVBQW5CLEVBQXVCO0lBQzFCLElBQUlDLE1BQU0sR0FBR0QsRUFBRSxDQUFDQyxNQUFoQjtJQUNBQSxNQUFNO0lBQ04sSUFBSThGLEtBQUssR0FBR2hHLE9BQVo7SUFDQSxJQUFJNEcsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQixDQUowQixDQUsxQjs7SUFDQSxJQUFJK1gsTUFBTSxHQUFHLENBQUMsR0FBR3BmLEtBQUssQ0FBQzhILFFBQVYsRUFBb0I7TUFDN0JxRCxNQUFNLEVBQUUsS0FEcUI7TUFFN0I2RSxJQUFJLEVBQUU1SSxTQUFTLENBQUN3QixVQUFWLENBQXFCLGFBQXJCO0lBRnVCLENBQXBCLENBQWI7SUFJQSxJQUFJaEIsWUFBWSxHQUFHLENBQUMsR0FBRzVILEtBQUssQ0FBQzhILFFBQVYsRUFBb0I7TUFDbkNrRyxVQUFVLEVBQUUsS0FEdUI7TUFFbkMxRSxPQUFPLEVBQUUsRUFGMEI7TUFHbkM1QyxJQUFJLEVBQUU7SUFINkIsQ0FBcEIsQ0FBbkIsQ0FWMEIsQ0FlMUI7O0lBQ0EsQ0FBQyxHQUFHMUcsS0FBSyxDQUFDZ3FCLE9BQVYsRUFBbUIsUUFBbkIsRUFBNkI1SyxNQUE3QjtJQUNBLENBQUMsR0FBR3BmLEtBQUssQ0FBQ2dxQixPQUFWLEVBQW1CLFdBQW5CLEVBQWdDcGlCLFlBQWhDO0lBQ0EsSUFBSW5FLFlBQVksR0FBRztNQUFFMkQsU0FBUyxFQUFFQSxTQUFiO01BQXdCWixLQUFLLEVBQUVBLEtBQS9CO01BQXNDNFksTUFBTSxFQUFFQSxNQUE5QztNQUFzRHhYLFlBQVksRUFBRUEsWUFBcEU7TUFBa0ZrUSxNQUFNLEVBQUVtSCxvQkFBb0IsV0FBOUc7TUFBd0g1UyxLQUFLLEVBQUUvRixrQkFBa0IsV0FBako7TUFBMkorbEMsU0FBUyxFQUFFTixlQUFlO0lBQXJMLENBQW5CO0lBQ0Fyc0MsTUFBTSxDQUFDQyxjQUFQLENBQXNCOEQsWUFBdEIsRUFBb0MsaUJBQXBDLEVBQXVEO01BQUVHLFVBQVUsRUFBRSxLQUFkO01BQXFCL0QsS0FBSyxFQUFFO0lBQTVCLENBQXZEO0lBQ0EsT0FBTzRELFlBQVA7RUFDSDtBQWxDd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDWmE7O0FBQ2IvRCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl1c0MsTUFBTSxHQUFHdnNDLG1CQUFPLENBQUMsa0RBQUQsQ0FBcEI7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsZUFEaUM7RUFFekNrRyxLQUFLLEVBQUU7SUFDSCtsQyxlQUFlLEVBQUU7TUFBRTdsQyxJQUFJLEVBQUVoSCxNQUFSO01BQWdCaUgsUUFBUSxFQUFFO0lBQTFCLENBRGQ7SUFFSDZsQyxnQkFBZ0IsRUFBRTtNQUFFOWxDLElBQUksRUFBRWhILE1BQVI7TUFBZ0JpSCxRQUFRLEVBQUU7SUFBMUIsQ0FGZjtJQUdIOGxDLHFCQUFxQixFQUFFO01BQUUvbEMsSUFBSSxFQUFFaEgsTUFBUjtNQUFnQmlILFFBQVEsRUFBRTtJQUExQixDQUhwQjtJQUlIK2xDLG9CQUFvQixFQUFFO01BQUVobUMsSUFBSSxFQUFFaEgsTUFBUjtNQUFnQmlILFFBQVEsRUFBRTtJQUExQjtFQUpuQixDQUZrQztFQVF6Q3BHLEtBQUssRUFBRSxlQUFVQyxPQUFWLEVBQW1CQyxFQUFuQixFQUF1QjtJQUMxQixJQUFJQyxNQUFNLEdBQUdELEVBQUUsQ0FBQ0MsTUFBaEI7SUFDQUEsTUFBTTtJQUNOOztJQUNBLElBQUlpc0MsY0FBYyxHQUFHLFNBQWpCQSxjQUFpQixDQUFVQyxZQUFWLEVBQXdCO01BQ3pDLElBQUlBLFlBQVksSUFBSSxvQkFBcEIsRUFBMEM7UUFDdEMsT0FBTyxrSUFBUDtNQUNIOztNQUNELE9BQU8sa0lBQVA7SUFDSCxDQUxEO0lBTUE7OztJQUNBLElBQUlDLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBbUIsQ0FBVUQsWUFBVixFQUF3QjtNQUMzQyxJQUFJQSxZQUFZLElBQUksb0JBQXBCLEVBQTBDO1FBQ3RDLE9BQU8sYUFBUDtNQUNIOztNQUNELE9BQU8sa0JBQVA7SUFDSCxDQUxEO0lBTUE7OztJQUNBLElBQUlFLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBdUIsQ0FBVUosb0JBQVYsRUFBZ0MvaEMsR0FBaEMsRUFBcUM7TUFDNUQsSUFBSUEsR0FBRyxJQUFJK2hDLG9CQUFYLEVBQWlDO1FBQzdCLE9BQU9BLG9CQUFvQixDQUFDL2hDLEdBQUQsQ0FBM0I7TUFDSCxDQUZELE1BR0ssSUFBSUEsR0FBRyxJQUFJLFVBQVgsRUFBdUI7UUFDeEIsT0FBTyxPQUFQO01BQ0g7O01BQ0QsT0FBTyxJQUFQO0lBQ0gsQ0FSRDs7SUFTQSxJQUFJb2lDLFFBQVEsR0FBRyxTQUFYQSxRQUFXLENBQVU1NkIsS0FBVixFQUFpQjtNQUM1QixPQUFPNjZCLFFBQVEsQ0FBQzc2QixLQUFLLENBQUN3TCxRQUFOLEVBQUQsQ0FBUixHQUE2QixDQUFwQztJQUNILENBRkQ7O0lBR0EsSUFBSWxhLFlBQVksR0FBRztNQUFFa3BDLGNBQWMsRUFBRUEsY0FBbEI7TUFBa0NFLGdCQUFnQixFQUFFQSxnQkFBcEQ7TUFBc0VDLG9CQUFvQixFQUFFQSxvQkFBNUY7TUFBa0hDLFFBQVEsRUFBRUEsUUFBNUg7TUFBc0l6MkIsT0FBTyxFQUFFZzJCLE1BQU0sQ0FBQ2gyQjtJQUF0SixDQUFuQjtJQUNBNVcsTUFBTSxDQUFDQyxjQUFQLENBQXNCOEQsWUFBdEIsRUFBb0MsaUJBQXBDLEVBQXVEO01BQUVHLFVBQVUsRUFBRSxLQUFkO01BQXFCL0QsS0FBSyxFQUFFO0lBQTVCLENBQXZEO0lBQ0EsT0FBTzRELFlBQVA7RUFDSDtBQXpDd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDSmE7O0FBQ2IvRCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsVUFEaUM7RUFFekNrRyxLQUFLLEVBQUU7SUFDSGtDLElBQUksRUFBRTtNQUFFaEMsSUFBSSxFQUFFdUosTUFBUjtNQUFnQnRKLFFBQVEsRUFBRTtJQUExQixDQURIO0lBRUhzbUMsZ0JBQWdCLEVBQUU7TUFBRXZtQyxJQUFJLEVBQUV1SixNQUFSO01BQWdCdEosUUFBUSxFQUFFO0lBQTFCO0VBRmYsQ0FGa0M7RUFNekNwRyxLQUFLLEVBQUUsZUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUI7SUFDMUIsSUFBSUMsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQ0FBLE1BQU07SUFDTixJQUFJMEcsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBO0FBQ1I7QUFDQTs7SUFDUSxJQUFJNmxDLFVBQVUsR0FBRyxTQUFiQSxVQUFhLEdBQVk7TUFDekJ6cUMsTUFBTSxDQUFDOEgsUUFBUCxDQUFnQnNCLE9BQWhCLENBQXdCLHFCQUF4QjtJQUNILENBRkQ7O0lBR0EsSUFBSXBJLFlBQVksR0FBRztNQUFFMkQsU0FBUyxFQUFFQSxTQUFiO01BQXdCOGxDLFVBQVUsRUFBRUE7SUFBcEMsQ0FBbkI7SUFDQXh0QyxNQUFNLENBQUNDLGNBQVAsQ0FBc0I4RCxZQUF0QixFQUFvQyxpQkFBcEMsRUFBdUQ7TUFBRUcsVUFBVSxFQUFFLEtBQWQ7TUFBcUIvRCxLQUFLLEVBQUU7SUFBNUIsQ0FBdkQ7SUFDQSxPQUFPNEQsWUFBUDtFQUNIO0FBbkJ3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNKYTs7QUFDYixJQUFJSSxTQUFTLEdBQUksUUFBUSxLQUFLQSxTQUFkLElBQTRCLFVBQVVDLE9BQVYsRUFBbUJDLFVBQW5CLEVBQStCQyxDQUEvQixFQUFrQ0MsU0FBbEMsRUFBNkM7RUFDckYsU0FBU0MsS0FBVCxDQUFlckUsS0FBZixFQUFzQjtJQUFFLE9BQU9BLEtBQUssWUFBWW1FLENBQWpCLEdBQXFCbkUsS0FBckIsR0FBNkIsSUFBSW1FLENBQUosQ0FBTSxVQUFVRyxPQUFWLEVBQW1CO01BQUVBLE9BQU8sQ0FBQ3RFLEtBQUQsQ0FBUDtJQUFpQixDQUE1QyxDQUFwQztFQUFvRjs7RUFDNUcsT0FBTyxLQUFLbUUsQ0FBQyxLQUFLQSxDQUFDLEdBQUdJLE9BQVQsQ0FBTixFQUF5QixVQUFVRCxPQUFWLEVBQW1CRSxNQUFuQixFQUEyQjtJQUN2RCxTQUFTQyxTQUFULENBQW1CekUsS0FBbkIsRUFBMEI7TUFBRSxJQUFJO1FBQUUwRSxJQUFJLENBQUNOLFNBQVMsQ0FBQ08sSUFBVixDQUFlM0UsS0FBZixDQUFELENBQUo7TUFBOEIsQ0FBcEMsQ0FBcUMsT0FBTzRFLENBQVAsRUFBVTtRQUFFSixNQUFNLENBQUNJLENBQUQsQ0FBTjtNQUFZO0lBQUU7O0lBQzNGLFNBQVNDLFFBQVQsQ0FBa0I3RSxLQUFsQixFQUF5QjtNQUFFLElBQUk7UUFBRTBFLElBQUksQ0FBQ04sU0FBUyxDQUFDLE9BQUQsQ0FBVCxDQUFtQnBFLEtBQW5CLENBQUQsQ0FBSjtNQUFrQyxDQUF4QyxDQUF5QyxPQUFPNEUsQ0FBUCxFQUFVO1FBQUVKLE1BQU0sQ0FBQ0ksQ0FBRCxDQUFOO01BQVk7SUFBRTs7SUFDOUYsU0FBU0YsSUFBVCxDQUFjSSxNQUFkLEVBQXNCO01BQUVBLE1BQU0sQ0FBQ0MsSUFBUCxHQUFjVCxPQUFPLENBQUNRLE1BQU0sQ0FBQzlFLEtBQVIsQ0FBckIsR0FBc0NxRSxLQUFLLENBQUNTLE1BQU0sQ0FBQzlFLEtBQVIsQ0FBTCxDQUFvQmtDLElBQXBCLENBQXlCdUMsU0FBekIsRUFBb0NJLFFBQXBDLENBQXRDO0lBQXNGOztJQUM5R0gsSUFBSSxDQUFDLENBQUNOLFNBQVMsR0FBR0EsU0FBUyxDQUFDWSxLQUFWLENBQWdCZixPQUFoQixFQUF5QkMsVUFBVSxJQUFJLEVBQXZDLENBQWIsRUFBeURTLElBQXpELEVBQUQsQ0FBSjtFQUNILENBTE0sQ0FBUDtBQU1ILENBUkQ7O0FBU0EsSUFBSU0sV0FBVyxHQUFJLFFBQVEsS0FBS0EsV0FBZCxJQUE4QixVQUFVaEIsT0FBVixFQUFtQmpCLElBQW5CLEVBQXlCO0VBQ3JFLElBQUlrQyxDQUFDLEdBQUc7SUFBRUMsS0FBSyxFQUFFLENBQVQ7SUFBWUMsSUFBSSxFQUFFLGdCQUFXO01BQUUsSUFBSUMsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFPLENBQVgsRUFBYyxNQUFNQSxDQUFDLENBQUMsQ0FBRCxDQUFQO01BQVksT0FBT0EsQ0FBQyxDQUFDLENBQUQsQ0FBUjtJQUFjLENBQXZFO0lBQXlFQyxJQUFJLEVBQUUsRUFBL0U7SUFBbUZDLEdBQUcsRUFBRTtFQUF4RixDQUFSO0VBQUEsSUFBc0dDLENBQXRHO0VBQUEsSUFBeUdDLENBQXpHO0VBQUEsSUFBNEdKLENBQTVHO0VBQUEsSUFBK0dLLENBQS9HO0VBQ0EsT0FBT0EsQ0FBQyxHQUFHO0lBQUVmLElBQUksRUFBRWdCLElBQUksQ0FBQyxDQUFELENBQVo7SUFBaUIsU0FBU0EsSUFBSSxDQUFDLENBQUQsQ0FBOUI7SUFBbUMsVUFBVUEsSUFBSSxDQUFDLENBQUQ7RUFBakQsQ0FBSixFQUE0RCxPQUFPQyxNQUFQLEtBQWtCLFVBQWxCLEtBQWlDRixDQUFDLENBQUNFLE1BQU0sQ0FBQ0MsUUFBUixDQUFELEdBQXFCLFlBQVc7SUFBRSxPQUFPLElBQVA7RUFBYyxDQUFqRixDQUE1RCxFQUFnSkgsQ0FBdko7O0VBQ0EsU0FBU0MsSUFBVCxDQUFjRyxDQUFkLEVBQWlCO0lBQUUsT0FBTyxVQUFVQyxDQUFWLEVBQWE7TUFBRSxPQUFPckIsSUFBSSxDQUFDLENBQUNvQixDQUFELEVBQUlDLENBQUosQ0FBRCxDQUFYO0lBQXNCLENBQTVDO0VBQStDOztFQUNsRSxTQUFTckIsSUFBVCxDQUFjc0IsRUFBZCxFQUFrQjtJQUNkLElBQUlSLENBQUosRUFBTyxNQUFNLElBQUlTLFNBQUosQ0FBYyxpQ0FBZCxDQUFOOztJQUNQLE9BQU9QLENBQUMsS0FBS0EsQ0FBQyxHQUFHLENBQUosRUFBT00sRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVZCxDQUFDLEdBQUcsQ0FBZCxDQUFaLENBQUQsRUFBZ0NBLENBQXZDO01BQTBDLElBQUk7UUFDMUMsSUFBSU0sQ0FBQyxHQUFHLENBQUosRUFBT0MsQ0FBQyxLQUFLSixDQUFDLEdBQUdXLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUSxDQUFSLEdBQVlQLENBQUMsQ0FBQyxRQUFELENBQWIsR0FBMEJPLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUVAsQ0FBQyxDQUFDLE9BQUQsQ0FBRCxLQUFlLENBQUNKLENBQUMsR0FBR0ksQ0FBQyxDQUFDLFFBQUQsQ0FBTixLQUFxQkosQ0FBQyxDQUFDYSxJQUFGLENBQU9ULENBQVAsQ0FBckIsRUFBZ0MsQ0FBL0MsQ0FBUixHQUE0REEsQ0FBQyxDQUFDZCxJQUFqRyxDQUFELElBQTJHLENBQUMsQ0FBQ1UsQ0FBQyxHQUFHQSxDQUFDLENBQUNhLElBQUYsQ0FBT1QsQ0FBUCxFQUFVTyxFQUFFLENBQUMsQ0FBRCxDQUFaLENBQUwsRUFBdUJqQixJQUE5SSxFQUFvSixPQUFPTSxDQUFQO1FBQ3BKLElBQUlJLENBQUMsR0FBRyxDQUFKLEVBQU9KLENBQVgsRUFBY1csRUFBRSxHQUFHLENBQUNBLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUSxDQUFULEVBQVlYLENBQUMsQ0FBQ3JGLEtBQWQsQ0FBTDs7UUFDZCxRQUFRZ0csRUFBRSxDQUFDLENBQUQsQ0FBVjtVQUNJLEtBQUssQ0FBTDtVQUFRLEtBQUssQ0FBTDtZQUFRWCxDQUFDLEdBQUdXLEVBQUo7WUFBUTs7VUFDeEIsS0FBSyxDQUFMO1lBQVFkLENBQUMsQ0FBQ0MsS0FBRjtZQUFXLE9BQU87Y0FBRW5GLEtBQUssRUFBRWdHLEVBQUUsQ0FBQyxDQUFELENBQVg7Y0FBZ0JqQixJQUFJLEVBQUU7WUFBdEIsQ0FBUDs7VUFDbkIsS0FBSyxDQUFMO1lBQVFHLENBQUMsQ0FBQ0MsS0FBRjtZQUFXTSxDQUFDLEdBQUdPLEVBQUUsQ0FBQyxDQUFELENBQU47WUFBV0EsRUFBRSxHQUFHLENBQUMsQ0FBRCxDQUFMO1lBQVU7O1VBQ3hDLEtBQUssQ0FBTDtZQUFRQSxFQUFFLEdBQUdkLENBQUMsQ0FBQ0ssR0FBRixDQUFNWSxHQUFOLEVBQUw7O1lBQWtCakIsQ0FBQyxDQUFDSSxJQUFGLENBQU9hLEdBQVA7O1lBQWM7O1VBQ3hDO1lBQ0ksSUFBSSxFQUFFZCxDQUFDLEdBQUdILENBQUMsQ0FBQ0ksSUFBTixFQUFZRCxDQUFDLEdBQUdBLENBQUMsQ0FBQ2UsTUFBRixHQUFXLENBQVgsSUFBZ0JmLENBQUMsQ0FBQ0EsQ0FBQyxDQUFDZSxNQUFGLEdBQVcsQ0FBWixDQUFuQyxNQUF1REosRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVLENBQVYsSUFBZUEsRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVLENBQWhGLENBQUosRUFBd0Y7Y0FBRWQsQ0FBQyxHQUFHLENBQUo7Y0FBTztZQUFXOztZQUM1RyxJQUFJYyxFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVUsQ0FBVixLQUFnQixDQUFDWCxDQUFELElBQU9XLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUVgsQ0FBQyxDQUFDLENBQUQsQ0FBVCxJQUFnQlcsRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRWCxDQUFDLENBQUMsQ0FBRCxDQUFoRCxDQUFKLEVBQTJEO2NBQUVILENBQUMsQ0FBQ0MsS0FBRixHQUFVYSxFQUFFLENBQUMsQ0FBRCxDQUFaO2NBQWlCO1lBQVE7O1lBQ3RGLElBQUlBLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFWLElBQWVkLENBQUMsQ0FBQ0MsS0FBRixHQUFVRSxDQUFDLENBQUMsQ0FBRCxDQUE5QixFQUFtQztjQUFFSCxDQUFDLENBQUNDLEtBQUYsR0FBVUUsQ0FBQyxDQUFDLENBQUQsQ0FBWDtjQUFnQkEsQ0FBQyxHQUFHVyxFQUFKO2NBQVE7WUFBUTs7WUFDckUsSUFBSVgsQ0FBQyxJQUFJSCxDQUFDLENBQUNDLEtBQUYsR0FBVUUsQ0FBQyxDQUFDLENBQUQsQ0FBcEIsRUFBeUI7Y0FBRUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQVg7O2NBQWdCSCxDQUFDLENBQUNLLEdBQUYsQ0FBTWMsSUFBTixDQUFXTCxFQUFYOztjQUFnQjtZQUFROztZQUNuRSxJQUFJWCxDQUFDLENBQUMsQ0FBRCxDQUFMLEVBQVVILENBQUMsQ0FBQ0ssR0FBRixDQUFNWSxHQUFOOztZQUNWakIsQ0FBQyxDQUFDSSxJQUFGLENBQU9hLEdBQVA7O1lBQWM7UUFYdEI7O1FBYUFILEVBQUUsR0FBR2hELElBQUksQ0FBQ2tELElBQUwsQ0FBVWpDLE9BQVYsRUFBbUJpQixDQUFuQixDQUFMO01BQ0gsQ0FqQnlDLENBaUJ4QyxPQUFPTixDQUFQLEVBQVU7UUFBRW9CLEVBQUUsR0FBRyxDQUFDLENBQUQsRUFBSXBCLENBQUosQ0FBTDtRQUFhYSxDQUFDLEdBQUcsQ0FBSjtNQUFRLENBakJPLFNBaUJFO1FBQUVELENBQUMsR0FBR0gsQ0FBQyxHQUFHLENBQVI7TUFBWTtJQWpCMUQ7O0lBa0JBLElBQUlXLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUSxDQUFaLEVBQWUsTUFBTUEsRUFBRSxDQUFDLENBQUQsQ0FBUjtJQUFhLE9BQU87TUFBRWhHLEtBQUssRUFBRWdHLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUUEsRUFBRSxDQUFDLENBQUQsQ0FBVixHQUFnQixLQUFLLENBQTlCO01BQWlDakIsSUFBSSxFQUFFO0lBQXZDLENBQVA7RUFDL0I7QUFDSixDQTFCRDs7QUEyQkEsSUFBSXJGLGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlJLE9BQU8sR0FBR1osZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRDQUFELENBQVIsQ0FBN0I7O0FBQ0EsSUFBSW90QywyQkFBMkIsR0FBRzV0QyxlQUFlLENBQUNRLG1CQUFPLENBQUMsd0dBQUQsQ0FBUixDQUFqRDs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBLElBQUkydkIsWUFBWSxHQUFHbndCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw2RUFBRCxDQUFSLENBQWxDOztBQUNBLElBQUk4TSxPQUFPLEdBQUc5TSxtQkFBTyxDQUFDLG1FQUFELENBQXJCOztBQUNBLElBQUl3WSxxQkFBcUIsR0FBR2haLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0RkFBRCxDQUFSLENBQTNDOztBQUNBLElBQUkwcUIscUJBQXFCLEdBQUdsckIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRGQUFELENBQVIsQ0FBM0M7O0FBQ0EsSUFBSXFsQixhQUFhLEdBQUc3bEIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHFGQUFELENBQVIsQ0FBbkM7O0FBQ0EsSUFBSXFHLE1BQU0sR0FBR3JHLG1CQUFPLENBQUMsMkRBQUQsQ0FBcEI7O0FBQ0EsSUFBSW1oQyxxQkFBcUIsR0FBRzNoQyxlQUFlLENBQUNRLG1CQUFPLENBQUMsNEZBQUQsQ0FBUixDQUEzQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNxSSxJQUFJLEVBQUUsV0FEbUM7RUFFekM2RCxVQUFVLEVBQUU7SUFDUm1OLFlBQVksRUFBRW5CLHFCQUFxQixXQUQzQjtJQUVSeVMsVUFBVSxFQUFFUCxxQkFBcUIsV0FGekI7SUFHUnRFLFdBQVcsRUFBRWYsYUFBYSxXQUhsQjtJQUlSd2QsZUFBZSxFQUFFMUIscUJBQXFCO0VBSjlCLENBRjZCO0VBUXpDMTZCLEtBQUssRUFBRTtJQUNId2xDLFNBQVMsRUFBRTtNQUFFdGxDLElBQUksRUFBRWhILE1BQVI7TUFBZ0JpSCxRQUFRLEVBQUU7SUFBMUIsQ0FEUjtJQUVIc2xDLGlCQUFpQixFQUFFO01BQUV2bEMsSUFBSSxFQUFFaEgsTUFBUjtNQUFnQmlILFFBQVEsRUFBRTtJQUExQixDQUZoQjtJQUdIdWxDLGlCQUFpQixFQUFFO01BQUV4bEMsSUFBSSxFQUFFaEgsTUFBUjtNQUFnQmlILFFBQVEsRUFBRTtJQUExQixDQUhoQjtJQUlId2xDLGNBQWMsRUFBRTtNQUFFemxDLElBQUksRUFBRWhILE1BQVI7TUFBZ0JpSCxRQUFRLEVBQUU7SUFBMUIsQ0FKYjtJQUtIeWxDLFlBQVksRUFBRTtNQUFFMWxDLElBQUksRUFBRWhILE1BQVI7TUFBZ0JpSCxRQUFRLEVBQUU7SUFBMUIsQ0FMWDtJQU1IdzZCLFdBQVcsRUFBRTtNQUNUejZCLElBQUksRUFBRXVKLE1BREc7TUFFVHRKLFFBQVEsRUFBRTtJQUZEO0VBTlYsQ0FSa0M7RUFtQnpDcEcsS0FBSyxFQUFFLGVBQVVpRyxLQUFWLEVBQWlCO0lBQ3BCLElBQUl3SyxLQUFLLEdBQUcsSUFBWjs7SUFDQSxJQUFJdlEsRUFBSjs7SUFDQSxJQUFJbUgsWUFBWSxHQUFHLENBQUMsR0FBRzlILEtBQUssQ0FBQzBELE1BQVYsRUFBa0IsV0FBbEIsQ0FBbkI7SUFDQSxJQUFJNEQsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLElBQUkrWCxNQUFNLEdBQUcsQ0FBQyxHQUFHdGYsS0FBSyxDQUFDMEQsTUFBVixFQUFrQixRQUFsQixDQUFiO0lBQ0EsSUFBSTROLFlBQVksR0FBRyxDQUFDLEdBQUd0UixLQUFLLENBQUNnQixHQUFWLEdBQW5CO0lBQ0EsSUFBSThQLFNBQVMsR0FBRyxDQUFDLEdBQUc5USxLQUFLLENBQUNnQixHQUFWLEVBQWUsS0FBZixDQUFoQjtJQUNBLElBQUlxUSxRQUFRLEdBQUcsQ0FBQyxHQUFHclIsS0FBSyxDQUFDZ0IsR0FBVixFQUFlLFVBQWYsQ0FBZjs7SUFDQSxJQUFJc3NDLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBeUIsR0FBWTtNQUNyQyxJQUFJQyx1QkFBdUIsR0FBRyxFQUE5QjtNQUNBLElBQUlDLFlBQVksR0FBRzV0QyxNQUFNLENBQUMwUCxJQUFQLENBQVk1SSxLQUFLLENBQUN3bEMsU0FBbEIsQ0FBbkI7O01BQ0EsS0FBSyxJQUFJNzhCLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdtK0IsWUFBWSxDQUFDcm5DLE1BQWpDLEVBQXlDa0osQ0FBQyxFQUExQyxFQUE4QztRQUMxQ2srQix1QkFBdUIsQ0FBQ0MsWUFBWSxDQUFDbitCLENBQUQsQ0FBYixDQUF2QixHQUEyQyxHQUFHMU4sTUFBSCxDQUFVNnJDLFlBQVksQ0FBQ24rQixDQUFELENBQXRCLEVBQTJCLEtBQTNCLEVBQWtDMU4sTUFBbEMsQ0FBeUMrRSxLQUFLLENBQUN3bEMsU0FBTixDQUFnQnNCLFlBQVksQ0FBQ24rQixDQUFELENBQTVCLENBQXpDLENBQTNDO01BQ0g7O01BQ0QsT0FBT2srQix1QkFBUDtJQUNILENBUEQ7O0lBUUEsSUFBSUUsbUJBQW1CLEdBQUdILHNCQUFzQixFQUFoRCxDQWpCb0IsQ0FrQnBCOztJQUNBLElBQUlJLGdCQUFnQixHQUFHLENBQUMsR0FBRzF0QyxLQUFLLENBQUNnSSxRQUFWLEVBQW9CO01BQ3ZDekYsSUFBSSxFQUFFLEVBRGlDO01BRXZDOEksTUFBTSxFQUFFO0lBRitCLENBQXBCLENBQXZCO0lBSUEsSUFBSXNpQyxnQkFBZ0IsR0FBRyxDQUFDLEdBQUczdEMsS0FBSyxDQUFDZ0IsR0FBVixFQUFlLEVBQWYsQ0FBdkI7SUFDQSxJQUFJNk4sTUFBTSxHQUFHLENBQUMsR0FBRzdPLEtBQUssQ0FBQ2dJLFFBQVYsRUFBb0I7TUFDN0I0bEMsY0FBYyxFQUFFLEVBRGE7TUFFN0JDLFlBQVksRUFBRSxFQUZlO01BRzdCeFIsT0FBTyxFQUFFLEVBSG9CO01BSTdCeVIsWUFBWSxFQUFFLEVBSmU7TUFLN0JDLGlCQUFpQixFQUFFLEVBTFU7TUFNN0JDLFVBQVUsRUFBRSxFQU5pQjtNQU83QkMsUUFBUSxFQUFFLEVBUG1CO01BUTdCQyxTQUFTLEVBQUUsWUFSa0I7TUFTN0JDLG9CQUFvQixFQUFFO0lBVE8sQ0FBcEIsQ0FBYjtJQVdBLElBQUlDLGVBQWUsR0FBRyxDQUFDLEdBQUdwdUMsS0FBSyxDQUFDZ0IsR0FBVixFQUFlLEtBQWYsQ0FBdEI7SUFDQSxJQUFJcXRDLGlCQUFpQixHQUFHLENBQUMsR0FBR3J1QyxLQUFLLENBQUNnQixHQUFWLEVBQWUsQ0FBZixDQUF4QjtJQUNBLElBQUlzdEMsb0JBQW9CLEdBQUcsQ0FBQyxHQUFHdHVDLEtBQUssQ0FBQ2dJLFFBQVYsRUFBb0IsRUFBcEIsQ0FBM0I7SUFDQSxJQUFJdW1DLGtCQUFrQixHQUFHLENBQUMsR0FBR3Z1QyxLQUFLLENBQUNnSSxRQUFWLEVBQW9CLEVBQXBCLENBQXpCO0lBQ0EsSUFBSXdtQyx5QkFBeUIsR0FBRyxDQUFDLEdBQUd4dUMsS0FBSyxDQUFDZ0IsR0FBVixFQUFlLEtBQWYsQ0FBaEM7SUFDQSxJQUFJMFAsYUFBYSxHQUFHO01BQ2hCKzlCLFVBQVUsRUFBRSx1QkFESTtNQUVoQkMsY0FBYyxFQUFFO0lBRkEsQ0FBcEI7SUFJQSxJQUFJQyxVQUFVLEdBQUcsQ0FBQyxHQUFHM3VDLEtBQUssQ0FBQ2dCLEdBQVYsRUFBZTtNQUFFKytCLE9BQU8sRUFBRSxFQUFYO01BQWVsSCxTQUFTLEVBQUU7SUFBMUIsQ0FBZixDQUFqQjtJQUNBLElBQUkvTyxhQUFhLEdBQUcsQ0FBQyxHQUFHeGpCLE1BQU0sQ0FBQ3lqQixjQUFYLEVBQTJCbGIsTUFBM0IsRUFBbUMsWUFBWTtNQUFFLE9BQU9tYixTQUFQO0lBQW1CLENBQXBFLEVBQXNFRixhQUExRjtJQUNBLENBQUMsR0FBRzlwQixLQUFLLENBQUNnSixLQUFWLEVBQWlCLFlBQVk7TUFBRSxPQUFPd2xDLHlCQUF5QixDQUFDenVDLEtBQWpDO0lBQXlDLENBQXhFLEVBQTBFLFVBQVVBLEtBQVYsRUFBaUI7TUFDdkYsSUFBSUEsS0FBSixFQUFXO1FBQ1A2dUMsV0FBVyxDQUFDN3VDLEtBQVosR0FBb0IsWUFBcEI7TUFDSCxDQUZELE1BR0s7UUFDRDZ1QyxXQUFXLENBQUM3dUMsS0FBWixHQUFvQixVQUFwQjtNQUNIOztNQUNELElBQUlBLEtBQUosRUFBVztRQUNQcUIsUUFBUSxDQUFDNFIsZ0JBQVQsQ0FBMEIsT0FBMUIsRUFBbUM2N0IsbUJBQW5DO01BQ0gsQ0FGRCxNQUdLO1FBQ0R6dEMsUUFBUSxDQUFDZ1MsbUJBQVQsQ0FBNkIsT0FBN0IsRUFBc0N5N0IsbUJBQXRDO01BQ0g7SUFDSixDQWJEOztJQWNBLElBQUlDLGVBQWUsR0FBRyxTQUFsQkEsZUFBa0IsR0FBWTtNQUM5QmpnQyxNQUFNLENBQUNtL0IsVUFBUCxHQUFvQixFQUFwQjtNQUNBbi9CLE1BQU0sQ0FBQ28vQixRQUFQLEdBQWtCLEVBQWxCO01BQ0FwL0IsTUFBTSxDQUFDcy9CLG9CQUFQLEdBQThCLEVBQTlCO01BQ0FyOUIsU0FBUyxDQUFDL1EsS0FBVixHQUFrQixJQUFsQjtJQUNILENBTEQ7O0lBTUEsSUFBSTh1QyxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQXNCLEdBQVk7TUFDbENMLHlCQUF5QixDQUFDenVDLEtBQTFCLEdBQWtDLEtBQWxDO0lBQ0gsQ0FGRDs7SUFHQSxJQUFJZ3ZDLGFBQWEsR0FBRyxTQUFoQkEsYUFBZ0IsQ0FBVTdwQyxLQUFWLEVBQWlCO01BQ2pDLE9BQU87UUFBRSxXQUFXLElBQUl2RCxNQUFKLENBQVd1RCxLQUFYLEVBQWtCLEdBQWxCO01BQWIsQ0FBUDtJQUNILENBRkQsQ0FyRW9CLENBd0VwQjs7O0lBQ0EsQ0FBQyxHQUFHbEYsS0FBSyxDQUFDa0IsU0FBVixFQUFxQixZQUFZO01BQzdCLElBQUk4dEMsWUFBWSxHQUFHQywrQkFBK0IsRUFBbEQ7O01BQ0EsSUFBSUQsWUFBSixFQUFrQjtRQUNkLEtBQUssSUFBSTMvQixDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHMi9CLFlBQVksQ0FBQzdvQyxNQUFqQyxFQUF5Q2tKLENBQUMsRUFBMUMsRUFBOEM7VUFDMUMsSUFBSXhFLEdBQUcsR0FBRyxDQUFDLEdBQUdrQyxPQUFPLENBQUNzMUIsb0JBQVosRUFBa0MyTSxZQUFZLENBQUMzL0IsQ0FBRCxDQUFaLENBQWdCLENBQWhCLENBQWxDLENBQVY7VUFDQSxJQUFJdFAsS0FBSyxHQUFHaXZDLFlBQVksQ0FBQzMvQixDQUFELENBQVosQ0FBZ0IsQ0FBaEIsQ0FBWjs7VUFDQSxJQUFJLENBQUMsZ0JBQUQsRUFBbUIsY0FBbkIsRUFBbUMsU0FBbkMsRUFBOEN2RSxRQUE5QyxDQUF1REQsR0FBdkQsQ0FBSixFQUFpRTtZQUM3RGdFLE1BQU0sQ0FBQ2hFLEdBQUQsQ0FBTixDQUFZekUsSUFBWixDQUFpQnJHLEtBQWpCO1VBQ0gsQ0FGRCxNQUdLLElBQUk4SyxHQUFHLEtBQUssV0FBWixFQUF5QjtZQUMxQndHLFFBQVEsQ0FBQ3RSLEtBQVQsR0FBaUJBLEtBQUssQ0FBQzhCLEtBQU4sQ0FBWSxHQUFaLEVBQWlCc0ssSUFBakIsQ0FBc0IsR0FBdEIsQ0FBakI7VUFDSCxDQUZJLE1BR0E7WUFDRDBDLE1BQU0sQ0FBQ2hFLEdBQUQsQ0FBTixHQUFjOUssS0FBZDtVQUNIO1FBQ0o7TUFDSjs7TUFDRG12QyxpQkFBaUIsQ0FBQyxDQUFELENBQWpCO0lBQ0gsQ0FsQkQ7O0lBbUJBLElBQUlELCtCQUErQixHQUFHLFNBQWxDQSwrQkFBa0MsR0FBWTtNQUM5QyxJQUFJdHVDLEVBQUo7O01BQ0EsSUFBSTZLLFdBQVcsR0FBRyxDQUFDN0ssRUFBRSxHQUFHZ0MsTUFBTSxDQUFDOEgsUUFBUCxDQUFnQi9ILElBQXRCLE1BQWdDLElBQWhDLElBQXdDL0IsRUFBRSxLQUFLLEtBQUssQ0FBcEQsR0FBd0QsS0FBSyxDQUE3RCxHQUFpRUEsRUFBRSxDQUFDa2QsUUFBSCxFQUFuRjs7TUFDQSxJQUFJclMsV0FBSixFQUFpQjtRQUNiQSxXQUFXLEdBQUdBLFdBQVcsQ0FBQzNKLEtBQVosQ0FBa0IsR0FBbEIsRUFBdUIsQ0FBdkIsQ0FBZDtRQUNBLElBQUlzdEMsbUJBQW1CLEdBQUcsRUFBMUI7UUFDQSxJQUFJQyxXQUFXLEdBQUc1akMsV0FBVyxLQUFLLElBQWhCLElBQXdCQSxXQUFXLEtBQUssS0FBSyxDQUE3QyxHQUFpRCxLQUFLLENBQXRELEdBQTBEQSxXQUFXLENBQUMzSixLQUFaLENBQWtCLEdBQWxCLENBQTVFOztRQUNBLElBQUl1dEMsV0FBSixFQUFpQjtVQUNiLEtBQUssSUFBSS8vQixDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHKy9CLFdBQVcsQ0FBQ2pwQyxNQUFoQyxFQUF3Q2tKLENBQUMsRUFBekMsRUFBNkM7WUFDekMsSUFBSWpJLEVBQUUsR0FBR2dvQyxXQUFXLENBQUMvL0IsQ0FBRCxDQUFYLENBQWV4TixLQUFmLENBQXFCLEdBQXJCLENBQVQ7WUFBQSxJQUFvQ2dKLEdBQUcsR0FBR3pELEVBQUUsQ0FBQyxDQUFELENBQTVDO1lBQUEsSUFBaURySCxLQUFLLEdBQUdxSCxFQUFFLENBQUMsQ0FBRCxDQUEzRDs7WUFDQSxJQUFJeUQsR0FBSixFQUFTO2NBQ0xza0MsbUJBQW1CLENBQUMvb0MsSUFBcEIsQ0FBeUIsQ0FBQ3lFLEdBQUQsRUFBTTlLLEtBQUssS0FBSyxJQUFWLElBQWtCQSxLQUFLLEtBQUssS0FBSyxDQUFqQyxHQUFxQ0EsS0FBckMsR0FBNkMsRUFBbkQsQ0FBekI7WUFDSDtVQUNKO1FBQ0o7O1FBQ0QsT0FBT292QyxtQkFBUDtNQUNIOztNQUNELE9BQU8sS0FBUDtJQUNILENBbEJEO0lBbUJBO0FBQ1I7QUFDQTtBQUNBOzs7SUFDUSxJQUFJNWpDLFVBQVUsR0FBRzVJLE1BQU0sQ0FBQzhILFFBQVAsQ0FBZ0IvSCxJQUFqQzs7SUFDQSxJQUFJd3NDLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBb0IsQ0FBVXYwQixXQUFWLEVBQXVCO01BQzNDLElBQUlBLFdBQVcsS0FBSyxLQUFLLENBQXpCLEVBQTRCO1FBQUVBLFdBQVcsR0FBRyxDQUFkO01BQWtCOztNQUNoRCt5QixnQkFBZ0IsQ0FBQ3JpQyxNQUFqQixHQUEwQixVQUExQjtNQUNBLElBQUlHLFdBQVcsR0FBRyxFQUFsQjs7TUFDQSxJQUFJRCxVQUFVLENBQUNULFFBQVgsQ0FBb0IsR0FBcEIsQ0FBSixFQUE4QjtRQUMxQlUsV0FBVyxHQUFHN0ksTUFBTSxDQUFDOEgsUUFBUCxDQUFnQmdCLE1BQTlCO01BQ0g7O01BQ0RrUCxXQUFXLEdBQUdBLFdBQVcsS0FBSyxJQUFoQixJQUF3QkEsV0FBVyxLQUFLLEtBQUssQ0FBN0MsR0FBaURBLFdBQWpELEdBQStELENBQTdFO01BQ0EsSUFBSXBNLFFBQVEsR0FBRyw0QkFBNEI1TSxNQUE1QixDQUFtQ2daLFdBQW5DLEVBQWdEaFosTUFBaEQsQ0FBdUQ2SixXQUF2RCxDQUFmOztNQUNBLElBQUltakMsVUFBVSxDQUFDNXVDLEtBQVgsQ0FBaUJnZ0MsT0FBckIsRUFBOEI7UUFDMUJyMEIsU0FBUyxDQUFDbzJCLE1BQVYsQ0FBaUIsU0FBakIsRUFBNEI2TSxVQUFVLENBQUM1dUMsS0FBWCxDQUFpQmdnQyxPQUE3QztRQUNBcjBCLFNBQVMsQ0FBQ28yQixNQUFWLENBQWlCLFdBQWpCLEVBQThCNk0sVUFBVSxDQUFDNXVDLEtBQVgsQ0FBaUI4NEIsU0FBL0M7TUFDSDs7TUFDRCxJQUFJd1csZUFBZSxDQUFDdHZDLEtBQWhCLElBQ0FrSCxPQUFPLENBQUMwbkMsVUFBVSxDQUFDNXVDLEtBQVgsQ0FBaUJnZ0MsT0FBakIsSUFBNEI0TyxVQUFVLENBQUM1dUMsS0FBWCxDQUFpQjg0QixTQUE5QyxDQURYLEVBQ3FFO1FBQ2pFcnRCLFdBQVcsR0FBR0EsV0FBVyxLQUFLLElBQWhCLElBQXdCQSxXQUFXLEtBQUssS0FBSyxDQUE3QyxHQUFpREEsV0FBakQsR0FBK0QsS0FBN0U7UUFDQStDLFFBQVEsR0FBRy9DLFdBQVcsS0FBSyxFQUFoQixHQUFxQitDLFFBQXJCLEdBQWdDLEdBQUc1TSxNQUFILENBQVU0TSxRQUFWLENBQTNDOztRQUNBLEtBQUssSUFBSStnQyxTQUFULElBQXNCemdDLE1BQXRCLEVBQThCO1VBQzFCLElBQUlBLE1BQU0sQ0FBQ3lnQyxTQUFELENBQU4sSUFBcUJ6Z0MsTUFBTSxDQUFDeWdDLFNBQUQsQ0FBTixDQUFrQm5wQyxNQUFsQixHQUEyQixDQUFwRCxFQUF1RDtZQUNuRHVGLFNBQVMsQ0FBQ28yQixNQUFWLENBQWlCd04sU0FBakIsRUFBNEJ6Z0MsTUFBTSxDQUFDeWdDLFNBQUQsQ0FBbEM7VUFDSDtRQUNKO01BQ0o7O01BQ0RqdkMsT0FBTyxXQUFQLENBQ0srQyxHQURMLENBQ1NtTCxRQURULEVBQ21CO1FBQ2ZvdUIsTUFBTSxFQUFFMFMsZUFBZSxDQUFDdHZDLEtBQWhCLElBQ0prSCxPQUFPLENBQUMwbkMsVUFBVSxDQUFDNXVDLEtBQVgsQ0FBaUJnZ0MsT0FBakIsSUFBNEI0TyxVQUFVLENBQUM1dUMsS0FBWCxDQUFpQjg0QixTQUE5QyxDQURILEdBRUZudEIsU0FGRSxHQUdGO01BSlMsQ0FEbkIsRUFPS3pKLElBUEwsQ0FPVSxVQUFVQyxHQUFWLEVBQWU7UUFDckIsSUFBSXZCLEVBQUo7O1FBQ0EsSUFBSWdOLFFBQVEsR0FBR3pMLEdBQUcsQ0FBQ0ssSUFBbkI7UUFDQThyQyxpQkFBaUIsQ0FBQ3R1QyxLQUFsQixHQUEwQixDQUFDWSxFQUFFLEdBQUdnTixRQUFRLENBQUNwTCxJQUFmLE1BQXlCLElBQXpCLElBQWlDNUIsRUFBRSxLQUFLLEtBQUssQ0FBN0MsR0FBaUQsS0FBSyxDQUF0RCxHQUEwREEsRUFBRSxDQUFDZ2lDLEtBQXZGOztRQUNBLElBQUloMUIsUUFBUSxDQUFDckssT0FBYixFQUFzQjtVQUNsQixJQUFJcUssUUFBUSxDQUFDcEwsSUFBVCxDQUFjQSxJQUFkLENBQW1CNEQsTUFBbkIsS0FBOEIsQ0FBbEMsRUFBcUM7WUFDakN1bkMsZ0JBQWdCLENBQUNyaUMsTUFBakIsR0FBMEIsT0FBMUI7VUFDSCxDQUZELE1BR0s7WUFDRHFpQyxnQkFBZ0IsQ0FBQ3JpQyxNQUFqQixHQUEwQixTQUExQjtZQUNBcWlDLGdCQUFnQixDQUFDbnJDLElBQWpCLEdBQXdCb0wsUUFBUSxDQUFDcEwsSUFBakM7WUFDQWd0QyxtQkFBbUIsQ0FBQzdCLGdCQUFnQixDQUFDbnJDLElBQWxCLENBQW5CO1VBQ0g7UUFDSixDQVRELE1BVUs7VUFDRG1yQyxnQkFBZ0IsQ0FBQ3JpQyxNQUFqQixHQUEwQix5QkFBMUI7UUFDSDtNQUNKLENBeEJEO01BeUJBSyxTQUFTLEdBQUcsSUFBSUMsZUFBSixDQUFvQkgsV0FBcEIsQ0FBWjtJQUNILENBakREO0lBa0RBO0FBQ1I7QUFDQTtJQUNROzs7SUFDQSxJQUFJbTRCLFNBQVMsR0FBRyxTQUFaQSxTQUFZLENBQVVuN0IsRUFBVixFQUFjO01BQzFCOFcsTUFBTSxDQUFDalUsTUFBUCxHQUFnQixJQUFoQjtNQUNBaVUsTUFBTSxDQUFDcFAsSUFBUCxHQUFjNUksU0FBUyxDQUFDK2EsTUFBVixDQUFpQixhQUFqQixDQUFkO01BQ0EsSUFBSTlULFFBQVEsR0FBRyx1QkFBdUI1TSxNQUF2QixDQUE4QjZHLEVBQTlCLENBQWY7TUFDQW5JLE9BQU8sV0FBUCxDQUFnQitDLEdBQWhCLENBQW9CbUwsUUFBcEIsRUFBOEJ0TSxJQUE5QixDQUFtQyxVQUFVQyxHQUFWLEVBQWU7UUFDOUMsSUFBSXlMLFFBQVEsR0FBR3pMLEdBQUcsQ0FBQ0ssSUFBbkI7O1FBQ0EsSUFBSW9MLFFBQVEsQ0FBQ3JLLE9BQWIsRUFBc0I7VUFDbEJtRyxVQUFVLENBQUMsWUFBWTtZQUNuQjlHLE1BQU0sQ0FBQzhILFFBQVAsQ0FBZ0JzQixPQUFoQixDQUF3QixhQUF4QjtVQUNILENBRlMsRUFFUCxJQUZPLENBQVY7UUFHSCxDQUpELE1BS0s7VUFDRHVULE1BQU0sQ0FBQ2pVLE1BQVAsR0FBZ0IsS0FBaEI7VUFDQXZELFlBQVksQ0FBQzBCLE9BQWIsR0FBdUJtRSxRQUFRLENBQUNuRSxPQUFoQztVQUNBMUIsWUFBWSxDQUFDbEIsSUFBYixHQUFvQitHLFFBQVEsQ0FBQ3JLLE9BQTdCO1FBQ0g7TUFDSixDQVpEO0lBYUgsQ0FqQkQ7SUFrQkE7QUFDUjtBQUNBO0lBQ1E7OztJQUNBLElBQUlzMUIsS0FBSyxHQUFHLEVBQVo7SUFBQSxJQUFnQjRXLG9CQUFvQixHQUFHLFlBQXZDO0lBQUEsSUFDQTtJQUNBQyxhQUFhLEdBQUcsTUFGaEI7SUFHQSxJQUFJamtDLFdBQVcsR0FBRzdJLE1BQU0sQ0FBQzhILFFBQVAsQ0FBZ0JnQixNQUFsQztJQUNBLElBQUlDLFNBQVMsR0FBRyxJQUFJQyxlQUFKLENBQW9CSCxXQUFwQixDQUFoQjtJQUNBLElBQUlra0MsU0FBUyxHQUFHLENBQUMsR0FBRzF2QyxLQUFLLENBQUNnQixHQUFWLEVBQWUsRUFBZixDQUFoQjtJQUNBMHVDLFNBQVMsQ0FBQzN2QyxLQUFWLEdBQWtCLENBQUNZLEVBQUUsR0FBRytLLFNBQVMsQ0FBQ3RJLEdBQVYsQ0FBYyxTQUFkLENBQU4sTUFBb0MsSUFBcEMsSUFBNEN6QyxFQUFFLEtBQUssS0FBSyxDQUF4RCxHQUE0REEsRUFBNUQsR0FBaUUsRUFBbkYsQ0F0TW9CLENBdU1wQjs7SUFDQSxJQUFJNFMsS0FBSyxHQUFHLEVBQVo7O0lBQ0EsSUFBSXVsQixnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQW1CLEdBQVk7TUFDL0IsT0FBTzZWLFVBQVUsQ0FBQzV1QyxLQUFYLENBQWlCODRCLFNBQWpCLEtBQStCLEtBQS9CLEdBQXVDLFlBQXZDLEdBQXNELFdBQTdEO0lBQ0gsQ0FGRDs7SUFHQSxJQUFJOFcsTUFBTSxHQUFHLFNBQVRBLE1BQVMsQ0FBVS9PLEtBQVYsRUFBaUI7TUFBRSxPQUFPNzhCLFNBQVMsQ0FBQ21OLEtBQUQsRUFBUSxLQUFLLENBQWIsRUFBZ0IsS0FBSyxDQUFyQixFQUF3QixZQUFZO1FBQ2hGLElBQUltRSxTQUFKLEVBQWVDLE9BQWY7O1FBQ0EsSUFBSTNVLEVBQUosRUFBUXlHLEVBQVIsRUFBWStCLEVBQVo7O1FBQ0EsT0FBT25FLFdBQVcsQ0FBQyxJQUFELEVBQU8sVUFBVTRRLEVBQVYsRUFBYztVQUNuQyxRQUFRQSxFQUFFLENBQUMxUSxLQUFYO1lBQ0ksS0FBSyxDQUFMO2NBQ0lrcEMsZUFBZSxDQUFDcnVDLEtBQWhCLEdBQXdCLElBQXhCO2NBQ0E0dUMsVUFBVSxDQUFDNXVDLEtBQVgsQ0FBaUJnZ0MsT0FBakIsR0FBMkJhLEtBQTNCO2NBQ0ErTixVQUFVLENBQUM1dUMsS0FBWCxDQUFpQjg0QixTQUFqQixHQUNJOFYsVUFBVSxDQUFDNXVDLEtBQVgsQ0FBaUI4NEIsU0FBakIsS0FBK0IsTUFBL0IsR0FBd0MsS0FBeEMsR0FBZ0QsTUFEcEQ7O2NBRUEsSUFBSXR0QixVQUFVLENBQUNULFFBQVgsQ0FBb0IsR0FBcEIsQ0FBSixFQUE4QjtnQkFDMUI4dEIsS0FBSyxHQUFHLENBQUNqNEIsRUFBRSxHQUFHK0ssU0FBUyxDQUFDdEksR0FBVixDQUFjLEdBQWQsQ0FBTixNQUE4QixJQUE5QixJQUFzQ3pDLEVBQUUsS0FBSyxLQUFLLENBQWxELEdBQXNEQSxFQUF0RCxHQUEyRCxFQUFuRTtnQkFDQTh1QyxhQUFhLEdBQUcvakMsU0FBUyxDQUFDdEksR0FBVixDQUFjLFdBQWQsTUFBK0IsTUFBL0IsR0FBd0MsS0FBeEMsR0FBZ0QsTUFBaEU7Z0JBQ0FpUyxTQUFTLEdBQUcsQ0FBQ2pPLEVBQUUsR0FBR3NFLFNBQVMsQ0FBQ3RJLEdBQVYsQ0FBYyxZQUFkLENBQU4sTUFBdUMsSUFBdkMsSUFBK0NnRSxFQUFFLEtBQUssS0FBSyxDQUEzRCxHQUErREEsRUFBL0QsR0FBb0UsS0FBaEY7Z0JBQ0FrTyxPQUFPLEdBQUcsQ0FBQ25NLEVBQUUsR0FBR3VDLFNBQVMsQ0FBQ3RJLEdBQVYsQ0FBYyxVQUFkLENBQU4sTUFBcUMsSUFBckMsSUFBNkMrRixFQUFFLEtBQUssS0FBSyxDQUF6RCxHQUE2REEsRUFBN0QsR0FBa0UsS0FBNUU7O2dCQUNBLElBQUlrTSxTQUFTLElBQUlDLE9BQWpCLEVBQTBCO2tCQUN0Qi9CLEtBQUssR0FBRyxlQUFlNVIsTUFBZixDQUFzQjBULFNBQXRCLEVBQWlDLFlBQWpDLEVBQStDMVQsTUFBL0MsQ0FBc0QyVCxPQUF0RCxDQUFSO2dCQUNIO2NBQ0o7O2NBQ0QsT0FBTyxDQUFDO2NBQUU7Y0FBSCxFQUFjNDVCLGlCQUFpQixDQUFDLENBQUQsQ0FBL0IsQ0FBUDs7WUFDSixLQUFLLENBQUw7Y0FDSXQ1QixFQUFFLENBQUN6USxJQUFIOztjQUNBaXBDLGVBQWUsQ0FBQ3J1QyxLQUFoQixHQUF3QixLQUF4QjtjQUNBLE9BQU8sQ0FBQztjQUFFO2NBQUgsQ0FBUDtVQW5CUjtRQXFCSCxDQXRCaUIsQ0FBbEI7TUF1QkgsQ0ExQitDLENBQWhCO0lBMEIzQixDQTFCTDs7SUEyQkEsQ0FBQyxHQUFHQyxLQUFLLENBQUNnSixLQUFWLEVBQWlCLFlBQVk7TUFBRSxPQUFPLENBQ2xDNkYsTUFBTSxDQUFDd3RCLE9BRDJCLEVBRWxDeHRCLE1BQU0sQ0FBQ2kvQixZQUYyQixFQUdsQ2ovQixNQUFNLENBQUNrL0IsaUJBSDJCLEVBSWxDbC9CLE1BQU0sQ0FBQysrQixjQUoyQixFQUtsQy8rQixNQUFNLENBQUNnL0IsWUFMMkIsRUFNbENoL0IsTUFBTSxDQUFDbS9CLFVBTjJCLEVBT2xDbi9CLE1BQU0sQ0FBQ28vQixRQVAyQixFQVFsQ3AvQixNQUFNLENBQUNxL0IsU0FSMkIsQ0FBUDtJQVMzQixDQVRKLEVBU00sWUFBWTtNQUNkZ0IsaUJBQWlCO0lBQ3BCLENBWEQsRUFXRztNQUFFai9CLElBQUksRUFBRTtJQUFSLENBWEg7O0lBWUEsSUFBSTIvQixlQUFlLEdBQUcsU0FBbEJBLGVBQWtCLEdBQVk7TUFDOUI5bEIsYUFBYSxDQUFDLFlBQVk7UUFDdEJqYixNQUFNLENBQUN3dEIsT0FBUCxHQUFpQixFQUFqQjtRQUNBeHRCLE1BQU0sQ0FBQysrQixjQUFQLEdBQXdCLEVBQXhCO1FBQ0EvK0IsTUFBTSxDQUFDZy9CLFlBQVAsR0FBc0IsRUFBdEI7UUFDQWgvQixNQUFNLENBQUNpL0IsWUFBUCxHQUFzQixFQUF0QjtRQUNBai9CLE1BQU0sQ0FBQ2svQixpQkFBUCxHQUEyQixFQUEzQjtRQUNBbC9CLE1BQU0sQ0FBQ20vQixVQUFQLEdBQW9CLEVBQXBCO1FBQ0FuL0IsTUFBTSxDQUFDby9CLFFBQVAsR0FBa0IsRUFBbEI7UUFDQXAvQixNQUFNLENBQUNxL0IsU0FBUCxHQUFtQixZQUFuQjtRQUNBci9CLE1BQU0sQ0FBQ3MvQixvQkFBUCxHQUE4QixFQUE5QjtRQUNBcjlCLFNBQVMsQ0FBQy9RLEtBQVYsR0FBa0IsSUFBbEI7TUFDSCxDQVhZLENBQWI7SUFZSCxDQWJEOztJQWNBLElBQUlzdkMsZUFBZSxHQUFHLENBQUMsR0FBR3J2QyxLQUFLLENBQUN3RCxRQUFWLEVBQW9CLFlBQVk7TUFDbEQsT0FBUXFMLE1BQU0sQ0FBQ3d0QixPQUFQLENBQWVsMkIsTUFBZixHQUNKMEksTUFBTSxDQUFDKytCLGNBQVAsQ0FBc0J6bkMsTUFEbEIsR0FFSjBJLE1BQU0sQ0FBQ2cvQixZQUFQLENBQW9CMW5DLE1BRmhCLElBR0osQ0FISSxJQUlKMEksTUFBTSxDQUFDaS9CLFlBQVAsS0FBd0IsRUFKcEIsSUFLSmovQixNQUFNLENBQUNrL0IsaUJBQVAsS0FBNkIsRUFMekIsSUFNSGwvQixNQUFNLENBQUNtL0IsVUFBUCxLQUFzQixFQUF0QixJQUE0Qm4vQixNQUFNLENBQUNvL0IsUUFBUCxLQUFvQixFQU5yRDtJQU9ILENBUnFCLENBQXRCOztJQVNBLElBQUlzQixtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQXNCLENBQVVNLE9BQVYsRUFBbUI7TUFDekMsSUFBSWx2QyxFQUFKLEVBQVF5RyxFQUFSLEVBQVkrQixFQUFaOztNQUNBLEtBQUssSUFBSW1iLEVBQUUsR0FBRyxDQUFULEVBQVkxTyxFQUFFLEdBQUdpNkIsT0FBTyxDQUFDdHRDLElBQTlCLEVBQW9DK2hCLEVBQUUsR0FBRzFPLEVBQUUsQ0FBQ3pQLE1BQTVDLEVBQW9EbWUsRUFBRSxFQUF0RCxFQUEwRDtRQUN0RCxJQUFJd3JCLFFBQVEsR0FBR2w2QixFQUFFLENBQUMwTyxFQUFELENBQWpCO1FBQ0FncUIsb0JBQW9CLENBQUN3QixRQUFRLENBQUN0bkMsRUFBVixDQUFwQixHQUNJLENBQUNXLEVBQUUsR0FBRyxDQUFDL0IsRUFBRSxHQUFHLENBQUN6RyxFQUFFLEdBQUdtdkMsUUFBUSxLQUFLLElBQWIsSUFBcUJBLFFBQVEsS0FBSyxLQUFLLENBQXZDLEdBQTJDLEtBQUssQ0FBaEQsR0FBb0RBLFFBQVEsQ0FBQ0MsUUFBbkUsTUFBaUYsSUFBakYsSUFBeUZwdkMsRUFBRSxLQUFLLEtBQUssQ0FBckcsR0FBeUcsS0FBSyxDQUE5RyxHQUFrSEEsRUFBRSxDQUFDMnFDLGVBQTNILE1BQWdKLElBQWhKLElBQXdKbGtDLEVBQUUsS0FBSyxLQUFLLENBQXBLLEdBQXdLLEtBQUssQ0FBN0ssR0FBaUxBLEVBQUUsQ0FBQzBrQyxrQkFBMUwsTUFBa04sSUFBbE4sSUFBME4zaUMsRUFBRSxLQUFLLEtBQUssQ0FBdE8sR0FBME9BLEVBQTFPLEdBQStPLEtBRG5QO1FBRUFvbEMsa0JBQWtCLENBQUN1QixRQUFRLENBQUN0bkMsRUFBVixDQUFsQixHQUFrQ3duQyw0QkFBNEIsQ0FBQ0YsUUFBUSxHQUFHQSxRQUFRLENBQUNDLFFBQVosR0FBdUIsS0FBaEMsQ0FBOUQ7TUFDSDtJQUNKLENBUkQ7O0lBU0EsSUFBSUMsNEJBQTRCLEdBQUcsU0FBL0JBLDRCQUErQixDQUFVRCxRQUFWLEVBQW9CO01BQ25ELElBQUlwdkMsRUFBSixFQUFReUcsRUFBUixFQUFZK0IsRUFBWixFQUFnQnlNLEVBQWhCOztNQUNBLElBQUltNkIsUUFBSixFQUFjO1FBQ1YsSUFBSXJxQixhQUFhLEdBQUdxcUIsUUFBUSxDQUFDMUUsY0FBN0I7UUFDQSxJQUFJNEUscUJBQXFCLEdBQUdGLFFBQVEsQ0FBQ3hFLHVCQUFyQztRQUNBLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQzVxQyxFQUFFLEdBQUcra0IsYUFBYSxLQUFLLElBQWxCLElBQTBCQSxhQUFhLEtBQUssS0FBSyxDQUFqRCxHQUFxRCxLQUFLLENBQTFELEdBQThEQSxhQUFhLENBQUNFLGdCQUFsRixNQUF3RyxJQUF4RyxJQUFnSGpsQixFQUFFLEtBQUssS0FBSyxDQUE1SCxHQUFnSUEsRUFBaEksR0FBcUksS0FBdEksTUFDTCxDQUFDeUcsRUFBRSxHQUFHc2UsYUFBYSxLQUFLLElBQWxCLElBQTBCQSxhQUFhLEtBQUssS0FBSyxDQUFqRCxHQUFxRCxLQUFLLENBQTFELEdBQThEQSxhQUFhLENBQUNHLGdCQUFsRixNQUF3RyxJQUF4RyxJQUFnSHplLEVBQUUsS0FBSyxLQUFLLENBQTVILEdBQWdJQSxFQUFoSSxHQUFxSSxLQURoSSxNQUVMLENBQUMrQixFQUFFLEdBQUc4bUMscUJBQXFCLEtBQUssSUFBMUIsSUFBa0NBLHFCQUFxQixLQUFLLEtBQUssQ0FBakUsR0FBcUUsS0FBSyxDQUExRSxHQUE4RUEscUJBQXFCLENBQUNucUIsU0FBMUcsTUFBeUgsSUFBekgsSUFBaUkzYyxFQUFFLEtBQUssS0FBSyxDQUE3SSxHQUFpSkEsRUFBakosR0FBc0osS0FGakosTUFHTCxDQUFDeU0sRUFBRSxHQUFHcTZCLHFCQUFxQixLQUFLLElBQTFCLElBQWtDQSxxQkFBcUIsS0FBSyxLQUFLLENBQWpFLEdBQXFFLEtBQUssQ0FBMUUsR0FBOEVBLHFCQUFxQixDQUFDdHFCLG1CQUExRyxNQUFtSSxJQUFuSSxJQUEySS9QLEVBQUUsS0FBSyxLQUFLLENBQXZKLEdBQTJKQSxFQUEzSixHQUFnSyxLQUgzSixNQUlMLENBQUNxNkIscUJBQXFCLEtBQUssSUFBMUIsSUFBa0NBLHFCQUFxQixLQUFLLEtBQUssQ0FBakUsR0FBcUUsS0FBSyxDQUExRSxHQUE4RUEscUJBQXFCLENBQUN4cUIsWUFBckcsS0FBc0gsSUFBdEgsSUFDRyxDQUFDd3FCLHFCQUFxQixLQUFLLElBQTFCLElBQWtDQSxxQkFBcUIsS0FBSyxLQUFLLENBQWpFLEdBQXFFLEtBQUssQ0FBMUUsR0FBOEVBLHFCQUFxQixDQUFDeHFCLFlBQXJHLEtBQXNILEVBRHpILElBRUcsQ0FBQ3dxQixxQkFBcUIsS0FBSyxJQUExQixJQUFrQ0EscUJBQXFCLEtBQUssS0FBSyxDQUFqRSxHQUFxRSxLQUFLLENBQTFFLEdBQThFQSxxQkFBcUIsQ0FBQ3hxQixZQUFyRyxLQUFzSCxLQU5wSCxDQUFGLENBQVI7TUFPSDs7TUFDRCxPQUFPLEtBQVA7SUFDSCxDQWREOztJQWVBLElBQUlrYyxnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQW1CLENBQVV0c0IsU0FBVixFQUFxQkMsT0FBckIsRUFBOEI0NkIsa0JBQTlCLEVBQWtEO01BQ3JFLElBQUlBLGtCQUFrQixLQUFLLEtBQUssQ0FBaEMsRUFBbUM7UUFBRUEsa0JBQWtCLEdBQUcsRUFBckI7TUFBMEI7O01BQy9EcmhDLE1BQU0sQ0FBQ20vQixVQUFQLEdBQW9CMzRCLFNBQXBCO01BQ0F4RyxNQUFNLENBQUNvL0IsUUFBUCxHQUFrQjM0QixPQUFsQjtNQUNBekcsTUFBTSxDQUFDcy9CLG9CQUFQLEdBQThCK0Isa0JBQTlCO0lBQ0gsQ0FMRDs7SUFNQSxJQUFJQyxXQUFXLEdBQUcsU0FBZEEsV0FBYyxDQUFVOStCLFFBQVYsRUFBb0I7TUFDbEN4QyxNQUFNLENBQUNxL0IsU0FBUCxHQUFtQjc4QixRQUFuQjtJQUNILENBRkQ7O0lBR0EsSUFBSXU5QixXQUFXLEdBQUcsQ0FBQyxHQUFHNXVDLEtBQUssQ0FBQ2dCLEdBQVYsRUFBZSxFQUFmLENBQWxCOztJQUNBLElBQUlvdkMscUJBQXFCLEdBQUcsU0FBeEJBLHFCQUF3QixDQUFVajdCLEtBQVYsRUFBaUI7TUFDekNBLEtBQUssQ0FBQ0MsZUFBTjtNQUNBLElBQUlpN0IsSUFBSSxHQUFHbDdCLEtBQUssQ0FBQzBILE1BQU4sQ0FBYTlHLHFCQUFiLEVBQVg7TUFDQTQzQixnQkFBZ0IsQ0FBQzV0QyxLQUFqQixHQUF5QjtRQUNyQmtXLEdBQUcsRUFBRTlPLE1BQU0sQ0FBQ2twQyxJQUFJLENBQUNwNkIsR0FBTixDQUFOLEdBQW1CLEdBQW5CLEdBQXlCLE1BQU0sSUFBL0IsR0FBc0M5TyxNQUFNLENBQUNrcEMsSUFBSSxDQUFDcDZCLEdBQU4sQ0FBTixHQUFtQixFQUFuQixHQUF3QixJQUQ5QztRQUVyQkUsSUFBSSxFQUFFaFAsTUFBTSxDQUFDa3BDLElBQUksQ0FBQ2w2QixJQUFOLENBQU4sR0FBb0I7TUFGTCxDQUF6QjtNQUlBcTRCLHlCQUF5QixDQUFDenVDLEtBQTFCLEdBQWtDLENBQUN5dUMseUJBQXlCLENBQUN6dUMsS0FBN0Q7SUFDSCxDQVJEOztJQVNBLElBQUl1d0Msb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUF1QixDQUFVakUsY0FBVixFQUEwQjtNQUNqRHg5QixNQUFNLENBQUMrK0IsY0FBUCxHQUF3QnZCLGNBQXhCO0lBQ0gsQ0FGRDtJQUdBO0FBQ1I7QUFDQTs7O0lBQ1EsSUFBSWtFLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsQ0FBVTFsQyxHQUFWLEVBQWV0SSxJQUFmLEVBQXFCK1csR0FBckIsRUFBMEI7TUFDM0MsSUFBSS9XLElBQUosRUFBVTtRQUNOLElBQUlzSSxHQUFHLElBQUksY0FBWCxFQUEyQjtVQUN2QixJQUFJMmxDLE9BQU8sR0FBR2p1QyxJQUFJLENBQUNzSSxHQUFELENBQWxCO1VBQ0EybEMsT0FBTyxHQUFHQSxPQUFPLEtBQUssSUFBWixJQUFvQkEsT0FBTyxLQUFLLEtBQUssQ0FBckMsR0FBeUMsS0FBSyxDQUE5QyxHQUFrREEsT0FBTyxDQUFDQyxJQUFSLEVBQTVEO1VBQ0EsT0FBT0QsT0FBTyxHQUFHbDNCLEdBQUcsQ0FBQ2szQixPQUFELENBQU4sR0FBa0JscEMsU0FBUyxDQUFDK3JCLE9BQVYsQ0FBa0IsZUFBbEIsQ0FBaEM7UUFDSDs7UUFDRCxPQUFPOXdCLElBQUksQ0FBQ3NJLEdBQUQsQ0FBSixHQUFZeU8sR0FBRyxDQUFDL1csSUFBSSxDQUFDc0ksR0FBRCxDQUFMLENBQWYsR0FBNkJ2RCxTQUFTLENBQUMrckIsT0FBVixDQUFrQixlQUFsQixDQUFwQztNQUNIOztNQUNELE9BQU8vckIsU0FBUyxDQUFDK3JCLE9BQVYsQ0FBa0IsZUFBbEIsQ0FBUDtJQUNILENBVkQ7O0lBV0EsT0FBTztNQUNIelosWUFBWSxFQUFFbkIscUJBQXFCLFdBRGhDO01BRUg0TixXQUFXLEVBQUVmLGFBQWEsV0FGdkI7TUFHSHdkLGVBQWUsRUFBRTFCLHFCQUFxQixXQUhuQztNQUlIc1AscUJBQXFCLEVBQUVyRCwyQkFBMkIsV0FKL0M7TUFLSEssZ0JBQWdCLEVBQUVBLGdCQUxmO01BTUhoOUIsYUFBYSxFQUFFQSxhQU5aO01BT0g0L0Isb0JBQW9CLEVBQUVBLG9CQVBuQjtNQVFIRixxQkFBcUIsRUFBRUEscUJBUnBCO01BU0hELFdBQVcsRUFBRUEsV0FUVjtNQVVIeE8sZ0JBQWdCLEVBQUVBLGdCQVZmO01BV0hnTyxNQUFNLEVBQUVBLE1BWEw7TUFZSEMsZUFBZSxFQUFFQSxlQVpkO01BYUg5VyxnQkFBZ0IsRUFBRUEsZ0JBYmY7TUFjSDBXLG9CQUFvQixFQUFFQSxvQkFkbkI7TUFlSDdMLFNBQVMsRUFBRUEsU0FmUjtNQWdCSDlULFVBQVUsRUFBRUQsWUFBWSxXQWhCckI7TUFpQkhzZixpQkFBaUIsRUFBRUEsaUJBakJoQjtNQWtCSFgsa0JBQWtCLEVBQUVBLGtCQWxCakI7TUFtQkhELG9CQUFvQixFQUFFQSxvQkFuQm5CO01Bb0JIb0IsU0FBUyxFQUFFQSxTQXBCUjtNQXFCSDUrQixTQUFTLEVBQUVBLFNBckJSO01Bc0JIakMsTUFBTSxFQUFFQSxNQXRCTDtNQXVCSDhqQix1QkFBdUIsRUFBRTVsQixPQUFPLENBQUM0bEIsdUJBdkI5QjtNQXdCSDBjLGVBQWUsRUFBRUEsZUF4QmQ7TUF5Qkgzb0MsS0FBSyxFQUFFQSxLQXpCSjtNQTBCSDhuQyx5QkFBeUIsRUFBRUEseUJBMUJ4QjtNQTJCSG45QixRQUFRLEVBQUVBLFFBM0JQO01BNEJIdTlCLFdBQVcsRUFBRUEsV0E1QlY7TUE2QkhqQixnQkFBZ0IsRUFBRUEsZ0JBN0JmO01BOEJIbUIsZUFBZSxFQUFFQSxlQTlCZDtNQStCSHg5QixZQUFZLEVBQUVBLFlBL0JYO01BZ0NIcTlCLFVBQVUsRUFBRUEsVUFoQ1Q7TUFpQ0hQLGVBQWUsRUFBRUEsZUFqQ2Q7TUFrQ0htQyxjQUFjLEVBQUVBLGNBbENiO01BbUNIbEMsaUJBQWlCLEVBQUVBLGlCQW5DaEI7TUFvQ0haLG1CQUFtQixFQUFFQSxtQkFwQ2xCO01BcUNIc0IsYUFBYSxFQUFFQSxhQXJDWjtNQXNDSHpuQyxTQUFTLEVBQUVBO0lBdENSLENBQVA7RUF3Q0g7QUFqWXdDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ3BEYTs7QUFDYixJQUFJMmQsUUFBUSxHQUFJLFFBQVEsS0FBS0EsUUFBZCxJQUEyQixZQUFZO0VBQ2xEQSxRQUFRLEdBQUdybEIsTUFBTSxDQUFDb1EsTUFBUCxJQUFpQixVQUFTNUssQ0FBVCxFQUFZO0lBQ3BDLEtBQUssSUFBSXliLENBQUosRUFBT3hSLENBQUMsR0FBRyxDQUFYLEVBQWN4SixDQUFDLEdBQUdxZixTQUFTLENBQUMvZSxNQUFqQyxFQUF5Q2tKLENBQUMsR0FBR3hKLENBQTdDLEVBQWdEd0osQ0FBQyxFQUFqRCxFQUFxRDtNQUNqRHdSLENBQUMsR0FBR3FFLFNBQVMsQ0FBQzdWLENBQUQsQ0FBYjs7TUFDQSxLQUFLLElBQUk4VixDQUFULElBQWN0RSxDQUFkO1FBQWlCLElBQUlqaEIsTUFBTSxDQUFDd2xCLFNBQVAsQ0FBaUJDLGNBQWpCLENBQWdDcGYsSUFBaEMsQ0FBcUM0YSxDQUFyQyxFQUF3Q3NFLENBQXhDLENBQUosRUFDYi9mLENBQUMsQ0FBQytmLENBQUQsQ0FBRCxHQUFPdEUsQ0FBQyxDQUFDc0UsQ0FBRCxDQUFSO01BREo7SUFFSDs7SUFDRCxPQUFPL2YsQ0FBUDtFQUNILENBUEQ7O0VBUUEsT0FBTzZmLFFBQVEsQ0FBQ2xnQixLQUFULENBQWUsSUFBZixFQUFxQm1nQixTQUFyQixDQUFQO0FBQ0gsQ0FWRDs7QUFXQSxJQUFJbmhCLFNBQVMsR0FBSSxRQUFRLEtBQUtBLFNBQWQsSUFBNEIsVUFBVUMsT0FBVixFQUFtQkMsVUFBbkIsRUFBK0JDLENBQS9CLEVBQWtDQyxTQUFsQyxFQUE2QztFQUNyRixTQUFTQyxLQUFULENBQWVyRSxLQUFmLEVBQXNCO0lBQUUsT0FBT0EsS0FBSyxZQUFZbUUsQ0FBakIsR0FBcUJuRSxLQUFyQixHQUE2QixJQUFJbUUsQ0FBSixDQUFNLFVBQVVHLE9BQVYsRUFBbUI7TUFBRUEsT0FBTyxDQUFDdEUsS0FBRCxDQUFQO0lBQWlCLENBQTVDLENBQXBDO0VBQW9GOztFQUM1RyxPQUFPLEtBQUttRSxDQUFDLEtBQUtBLENBQUMsR0FBR0ksT0FBVCxDQUFOLEVBQXlCLFVBQVVELE9BQVYsRUFBbUJFLE1BQW5CLEVBQTJCO0lBQ3ZELFNBQVNDLFNBQVQsQ0FBbUJ6RSxLQUFuQixFQUEwQjtNQUFFLElBQUk7UUFBRTBFLElBQUksQ0FBQ04sU0FBUyxDQUFDTyxJQUFWLENBQWUzRSxLQUFmLENBQUQsQ0FBSjtNQUE4QixDQUFwQyxDQUFxQyxPQUFPNEUsQ0FBUCxFQUFVO1FBQUVKLE1BQU0sQ0FBQ0ksQ0FBRCxDQUFOO01BQVk7SUFBRTs7SUFDM0YsU0FBU0MsUUFBVCxDQUFrQjdFLEtBQWxCLEVBQXlCO01BQUUsSUFBSTtRQUFFMEUsSUFBSSxDQUFDTixTQUFTLENBQUMsT0FBRCxDQUFULENBQW1CcEUsS0FBbkIsQ0FBRCxDQUFKO01BQWtDLENBQXhDLENBQXlDLE9BQU80RSxDQUFQLEVBQVU7UUFBRUosTUFBTSxDQUFDSSxDQUFELENBQU47TUFBWTtJQUFFOztJQUM5RixTQUFTRixJQUFULENBQWNJLE1BQWQsRUFBc0I7TUFBRUEsTUFBTSxDQUFDQyxJQUFQLEdBQWNULE9BQU8sQ0FBQ1EsTUFBTSxDQUFDOUUsS0FBUixDQUFyQixHQUFzQ3FFLEtBQUssQ0FBQ1MsTUFBTSxDQUFDOUUsS0FBUixDQUFMLENBQW9Ca0MsSUFBcEIsQ0FBeUJ1QyxTQUF6QixFQUFvQ0ksUUFBcEMsQ0FBdEM7SUFBc0Y7O0lBQzlHSCxJQUFJLENBQUMsQ0FBQ04sU0FBUyxHQUFHQSxTQUFTLENBQUNZLEtBQVYsQ0FBZ0JmLE9BQWhCLEVBQXlCQyxVQUFVLElBQUksRUFBdkMsQ0FBYixFQUF5RFMsSUFBekQsRUFBRCxDQUFKO0VBQ0gsQ0FMTSxDQUFQO0FBTUgsQ0FSRDs7QUFTQSxJQUFJTSxXQUFXLEdBQUksUUFBUSxLQUFLQSxXQUFkLElBQThCLFVBQVVoQixPQUFWLEVBQW1CakIsSUFBbkIsRUFBeUI7RUFDckUsSUFBSWtDLENBQUMsR0FBRztJQUFFQyxLQUFLLEVBQUUsQ0FBVDtJQUFZQyxJQUFJLEVBQUUsZ0JBQVc7TUFBRSxJQUFJQyxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQU8sQ0FBWCxFQUFjLE1BQU1BLENBQUMsQ0FBQyxDQUFELENBQVA7TUFBWSxPQUFPQSxDQUFDLENBQUMsQ0FBRCxDQUFSO0lBQWMsQ0FBdkU7SUFBeUVDLElBQUksRUFBRSxFQUEvRTtJQUFtRkMsR0FBRyxFQUFFO0VBQXhGLENBQVI7RUFBQSxJQUFzR0MsQ0FBdEc7RUFBQSxJQUF5R0MsQ0FBekc7RUFBQSxJQUE0R0osQ0FBNUc7RUFBQSxJQUErR0ssQ0FBL0c7RUFDQSxPQUFPQSxDQUFDLEdBQUc7SUFBRWYsSUFBSSxFQUFFZ0IsSUFBSSxDQUFDLENBQUQsQ0FBWjtJQUFpQixTQUFTQSxJQUFJLENBQUMsQ0FBRCxDQUE5QjtJQUFtQyxVQUFVQSxJQUFJLENBQUMsQ0FBRDtFQUFqRCxDQUFKLEVBQTRELE9BQU9DLE1BQVAsS0FBa0IsVUFBbEIsS0FBaUNGLENBQUMsQ0FBQ0UsTUFBTSxDQUFDQyxRQUFSLENBQUQsR0FBcUIsWUFBVztJQUFFLE9BQU8sSUFBUDtFQUFjLENBQWpGLENBQTVELEVBQWdKSCxDQUF2Sjs7RUFDQSxTQUFTQyxJQUFULENBQWNHLENBQWQsRUFBaUI7SUFBRSxPQUFPLFVBQVVDLENBQVYsRUFBYTtNQUFFLE9BQU9yQixJQUFJLENBQUMsQ0FBQ29CLENBQUQsRUFBSUMsQ0FBSixDQUFELENBQVg7SUFBc0IsQ0FBNUM7RUFBK0M7O0VBQ2xFLFNBQVNyQixJQUFULENBQWNzQixFQUFkLEVBQWtCO0lBQ2QsSUFBSVIsQ0FBSixFQUFPLE1BQU0sSUFBSVMsU0FBSixDQUFjLGlDQUFkLENBQU47O0lBQ1AsT0FBT1AsQ0FBQyxLQUFLQSxDQUFDLEdBQUcsQ0FBSixFQUFPTSxFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVVkLENBQUMsR0FBRyxDQUFkLENBQVosQ0FBRCxFQUFnQ0EsQ0FBdkM7TUFBMEMsSUFBSTtRQUMxQyxJQUFJTSxDQUFDLEdBQUcsQ0FBSixFQUFPQyxDQUFDLEtBQUtKLENBQUMsR0FBR1csRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRLENBQVIsR0FBWVAsQ0FBQyxDQUFDLFFBQUQsQ0FBYixHQUEwQk8sRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRUCxDQUFDLENBQUMsT0FBRCxDQUFELEtBQWUsQ0FBQ0osQ0FBQyxHQUFHSSxDQUFDLENBQUMsUUFBRCxDQUFOLEtBQXFCSixDQUFDLENBQUNhLElBQUYsQ0FBT1QsQ0FBUCxDQUFyQixFQUFnQyxDQUEvQyxDQUFSLEdBQTREQSxDQUFDLENBQUNkLElBQWpHLENBQUQsSUFBMkcsQ0FBQyxDQUFDVSxDQUFDLEdBQUdBLENBQUMsQ0FBQ2EsSUFBRixDQUFPVCxDQUFQLEVBQVVPLEVBQUUsQ0FBQyxDQUFELENBQVosQ0FBTCxFQUF1QmpCLElBQTlJLEVBQW9KLE9BQU9NLENBQVA7UUFDcEosSUFBSUksQ0FBQyxHQUFHLENBQUosRUFBT0osQ0FBWCxFQUFjVyxFQUFFLEdBQUcsQ0FBQ0EsRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRLENBQVQsRUFBWVgsQ0FBQyxDQUFDckYsS0FBZCxDQUFMOztRQUNkLFFBQVFnRyxFQUFFLENBQUMsQ0FBRCxDQUFWO1VBQ0ksS0FBSyxDQUFMO1VBQVEsS0FBSyxDQUFMO1lBQVFYLENBQUMsR0FBR1csRUFBSjtZQUFROztVQUN4QixLQUFLLENBQUw7WUFBUWQsQ0FBQyxDQUFDQyxLQUFGO1lBQVcsT0FBTztjQUFFbkYsS0FBSyxFQUFFZ0csRUFBRSxDQUFDLENBQUQsQ0FBWDtjQUFnQmpCLElBQUksRUFBRTtZQUF0QixDQUFQOztVQUNuQixLQUFLLENBQUw7WUFBUUcsQ0FBQyxDQUFDQyxLQUFGO1lBQVdNLENBQUMsR0FBR08sRUFBRSxDQUFDLENBQUQsQ0FBTjtZQUFXQSxFQUFFLEdBQUcsQ0FBQyxDQUFELENBQUw7WUFBVTs7VUFDeEMsS0FBSyxDQUFMO1lBQVFBLEVBQUUsR0FBR2QsQ0FBQyxDQUFDSyxHQUFGLENBQU1ZLEdBQU4sRUFBTDs7WUFBa0JqQixDQUFDLENBQUNJLElBQUYsQ0FBT2EsR0FBUDs7WUFBYzs7VUFDeEM7WUFDSSxJQUFJLEVBQUVkLENBQUMsR0FBR0gsQ0FBQyxDQUFDSSxJQUFOLEVBQVlELENBQUMsR0FBR0EsQ0FBQyxDQUFDZSxNQUFGLEdBQVcsQ0FBWCxJQUFnQmYsQ0FBQyxDQUFDQSxDQUFDLENBQUNlLE1BQUYsR0FBVyxDQUFaLENBQW5DLE1BQXVESixFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVUsQ0FBVixJQUFlQSxFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVUsQ0FBaEYsQ0FBSixFQUF3RjtjQUFFZCxDQUFDLEdBQUcsQ0FBSjtjQUFPO1lBQVc7O1lBQzVHLElBQUljLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFWLEtBQWdCLENBQUNYLENBQUQsSUFBT1csRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRWCxDQUFDLENBQUMsQ0FBRCxDQUFULElBQWdCVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFYLENBQUMsQ0FBQyxDQUFELENBQWhELENBQUosRUFBMkQ7Y0FBRUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVhLEVBQUUsQ0FBQyxDQUFELENBQVo7Y0FBaUI7WUFBUTs7WUFDdEYsSUFBSUEsRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVLENBQVYsSUFBZWQsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQTlCLEVBQW1DO2NBQUVILENBQUMsQ0FBQ0MsS0FBRixHQUFVRSxDQUFDLENBQUMsQ0FBRCxDQUFYO2NBQWdCQSxDQUFDLEdBQUdXLEVBQUo7Y0FBUTtZQUFROztZQUNyRSxJQUFJWCxDQUFDLElBQUlILENBQUMsQ0FBQ0MsS0FBRixHQUFVRSxDQUFDLENBQUMsQ0FBRCxDQUFwQixFQUF5QjtjQUFFSCxDQUFDLENBQUNDLEtBQUYsR0FBVUUsQ0FBQyxDQUFDLENBQUQsQ0FBWDs7Y0FBZ0JILENBQUMsQ0FBQ0ssR0FBRixDQUFNYyxJQUFOLENBQVdMLEVBQVg7O2NBQWdCO1lBQVE7O1lBQ25FLElBQUlYLENBQUMsQ0FBQyxDQUFELENBQUwsRUFBVUgsQ0FBQyxDQUFDSyxHQUFGLENBQU1ZLEdBQU47O1lBQ1ZqQixDQUFDLENBQUNJLElBQUYsQ0FBT2EsR0FBUDs7WUFBYztRQVh0Qjs7UUFhQUgsRUFBRSxHQUFHaEQsSUFBSSxDQUFDa0QsSUFBTCxDQUFVakMsT0FBVixFQUFtQmlCLENBQW5CLENBQUw7TUFDSCxDQWpCeUMsQ0FpQnhDLE9BQU9OLENBQVAsRUFBVTtRQUFFb0IsRUFBRSxHQUFHLENBQUMsQ0FBRCxFQUFJcEIsQ0FBSixDQUFMO1FBQWFhLENBQUMsR0FBRyxDQUFKO01BQVEsQ0FqQk8sU0FpQkU7UUFBRUQsQ0FBQyxHQUFHSCxDQUFDLEdBQUcsQ0FBUjtNQUFZO0lBakIxRDs7SUFrQkEsSUFBSVcsRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRLENBQVosRUFBZSxNQUFNQSxFQUFFLENBQUMsQ0FBRCxDQUFSO0lBQWEsT0FBTztNQUFFaEcsS0FBSyxFQUFFZ0csRUFBRSxDQUFDLENBQUQsQ0FBRixHQUFRQSxFQUFFLENBQUMsQ0FBRCxDQUFWLEdBQWdCLEtBQUssQ0FBOUI7TUFBaUNqQixJQUFJLEVBQUU7SUFBdkMsQ0FBUDtFQUMvQjtBQUNKLENBMUJEOztBQTJCQSxJQUFJckYsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHRCxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlzVyxZQUFZLEdBQUc5VyxlQUFlLENBQUNRLG1CQUFPLENBQUMsZ0ZBQUQsQ0FBUixDQUFsQzs7QUFDQSxJQUFJdUcsa0JBQWtCLEdBQUcvRyxlQUFlLENBQUNRLG1CQUFPLENBQUMsc0ZBQUQsQ0FBUixDQUF4Qzs7QUFDQSxJQUFJSSxPQUFPLEdBQUdaLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0Q0FBRCxDQUFSLENBQTdCOztBQUNBLElBQUlHLGdCQUFnQixHQUFHWCxlQUFlLENBQUNRLG1CQUFPLENBQUMsa0ZBQUQsQ0FBUixDQUF0Qzs7QUFDQSxJQUFJcXBDLFlBQVksR0FBRzdwQyxlQUFlLENBQUNRLG1CQUFPLENBQUMsNkVBQUQsQ0FBUixDQUFsQzs7QUFDQSxJQUFJcWxCLGFBQWEsR0FBRzdsQixlQUFlLENBQUNRLG1CQUFPLENBQUMscUZBQUQsQ0FBUixDQUFuQzs7QUFDQSxJQUFJd1EsUUFBUSxHQUFHaFIsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLCtDQUFELENBQVIsQ0FBOUI7O0FBQ0EsSUFBSTBxQixxQkFBcUIsR0FBR2xyQixlQUFlLENBQUNRLG1CQUFPLENBQUMsNEZBQUQsQ0FBUixDQUEzQzs7QUFDQSxJQUFJcUcsTUFBTSxHQUFHckcsbUJBQU8sQ0FBQywyREFBRCxDQUFwQjs7QUFDQSxJQUFJbWhDLHFCQUFxQixHQUFHM2hDLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0RkFBRCxDQUFSLENBQTNDOztBQUNBLElBQUk4TSxPQUFPLEdBQUc5TSxtQkFBTyxDQUFDLG1FQUFELENBQXJCOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsYUFEaUM7RUFFekNrRyxLQUFLLEVBQUU7SUFDSGlxQyxhQUFhLEVBQUU7TUFBRS9wQyxJQUFJLEVBQUVoSCxNQUFSO01BQWdCaUgsUUFBUSxFQUFFO0lBQTFCLENBRFo7SUFFSHdFLE1BQU0sRUFBRTtNQUFFekUsSUFBSSxFQUFFaEgsTUFBUjtNQUFnQmlILFFBQVEsRUFBRTtJQUExQixDQUZMO0lBR0grcEMsS0FBSyxFQUFFO01BQUVocUMsSUFBSSxFQUFFaEgsTUFBUjtNQUFnQmlILFFBQVEsRUFBRTtJQUExQixDQUhKO0lBSUhzaEMsUUFBUSxFQUFFO01BQUV2aEMsSUFBSSxFQUFFdUosTUFBUjtNQUFnQnRKLFFBQVEsRUFBRTtJQUExQixDQUpQO0lBS0h3NkIsV0FBVyxFQUFFO01BQUV6NkIsSUFBSSxFQUFFdUosTUFBUjtNQUFnQnRKLFFBQVEsRUFBRTtJQUExQjtFQUxWLENBRmtDO0VBU3pDcEcsS0FBSyxFQUFFLGVBQVVDLE9BQVYsRUFBbUJDLEVBQW5CLEVBQXVCO0lBQzFCLElBQUl1USxLQUFLLEdBQUcsSUFBWjs7SUFDQSxJQUFJdFEsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQ0FBLE1BQU07SUFDTixJQUFJOEYsS0FBSyxHQUFHaEcsT0FBWjtJQUNBLElBQUk0RyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSXFQLFNBQVMsR0FBRyxDQUFDLEdBQUcxVyxLQUFLLENBQUM4SCxRQUFWLEVBQW9CO01BQ2hDa0csVUFBVSxFQUFFLEtBRG9CO01BRWhDMUUsT0FBTyxFQUFFLEVBRnVCO01BR2hDNUMsSUFBSSxFQUFFO0lBSDBCLENBQXBCLENBQWhCO0lBS0EsSUFBSWlJLE1BQU0sR0FBRyxDQUFDLEdBQUczTyxLQUFLLENBQUM4SCxRQUFWLEVBQW9CO01BQzdCbEIsWUFBWSxFQUFFLEVBRGU7TUFFN0I4cEMsS0FBSyxFQUFFLEVBRnNCO01BRzdCdmxDLE1BQU0sRUFBRSxFQUhxQjtNQUk3QjAwQixPQUFPLEVBQUUsRUFKb0I7TUFLN0JsSCxTQUFTLEVBQUUsRUFMa0I7TUFNN0JnWSxDQUFDLEVBQUUsRUFOMEI7TUFPN0I3QyxVQUFVLEVBQUUsRUFQaUI7TUFRN0JDLFFBQVEsRUFBRSxFQVJtQjtNQVM3QkMsU0FBUyxFQUFFLFlBVGtCO01BVTdCQyxvQkFBb0IsRUFBRTtJQVZPLENBQXBCLENBQWI7SUFZQSxJQUFJaDNCLGVBQWUsR0FBRyxDQUFDLEdBQUdqWCxLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQXRCO0lBQ0EsSUFBSTh2QyxXQUFXLEdBQUcsQ0FBQyxHQUFHNXdDLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBbEI7SUFDQSxJQUFJK3ZDLFlBQVksR0FBRyxDQUFDLEdBQUc3d0MsS0FBSyxDQUFDYyxHQUFWLEVBQWUsS0FBZixDQUFuQjtJQUNBLElBQUlnd0MsU0FBUyxHQUFHLENBQUMsR0FBRzl3QyxLQUFLLENBQUM4SCxRQUFWLEVBQW9CO01BQUV6RixJQUFJLEVBQUU7SUFBUixDQUFwQixDQUFoQjtJQUNBLElBQUlpVSxPQUFPLEdBQUcsQ0FBQyxHQUFHdFcsS0FBSyxDQUFDYyxHQUFWLEVBQWUsSUFBZixDQUFkO0lBQ0EsSUFBSWl3QyxXQUFXLEdBQUcsQ0FBQyxHQUFHL3dDLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEVBQWYsQ0FBbEI7SUFDQSxJQUFJa3dDLFdBQVcsR0FBRyxDQUFDLEdBQUdoeEMsS0FBSyxDQUFDYyxHQUFWLEVBQWUsS0FBZixDQUFsQjtJQUNBLElBQUltd0MsUUFBUSxHQUFHLENBQUMsR0FBR2p4QyxLQUFLLENBQUNjLEdBQVYsR0FBZjtJQUNBLElBQUlvd0MsU0FBUyxHQUFHLENBQUMsR0FBR2x4QyxLQUFLLENBQUNjLEdBQVYsRUFBZSxDQUFmLENBQWhCO0lBQ0EsSUFBSXF3QyxRQUFRLEdBQUcsQ0FBQyxHQUFHbnhDLEtBQUssQ0FBQ2MsR0FBVixHQUFmO0lBQ0EsSUFBSXN3QyxXQUFXLEdBQUcsQ0FBQyxHQUFHcHhDLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBbEI7SUFDQSxJQUFJdXdDLFdBQVcsR0FBRyxDQUFDLEdBQUdyeEMsS0FBSyxDQUFDYyxHQUFWLEdBQWxCO0lBQ0EsSUFBSXd3QyxjQUFjLEdBQUcsQ0FBQyxHQUFHdHhDLEtBQUssQ0FBQ2MsR0FBVixHQUFyQjtJQUNBLElBQUl5d0MsY0FBYyxHQUFHLENBQUMsR0FBR3Z4QyxLQUFLLENBQUNjLEdBQVYsR0FBckI7SUFDQSxJQUFJc2UsTUFBTSxHQUFHLENBQUMsR0FBR3BmLEtBQUssQ0FBQ2MsR0FBVixFQUFlLElBQWYsQ0FBYjtJQUNBLElBQUkwd0MsaUJBQWlCLEdBQUcsQ0FBQyxHQUFHeHhDLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBeEI7SUFDQSxJQUFJMndDLFdBQVcsR0FBRyxDQUFDLEdBQUd6eEMsS0FBSyxDQUFDYyxHQUFWLEVBQWUsRUFBZixDQUFsQjtJQUNBLElBQUk0d0MsU0FBUyxHQUFHLENBQUMsR0FBRzF4QyxLQUFLLENBQUNjLEdBQVYsRUFBZSxFQUFmLENBQWhCO0lBQ0EsSUFBSTZ3QyxlQUFlLEdBQUcsQ0FBQyxHQUFHM3hDLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEVBQWYsQ0FBdEI7SUFDQSxJQUFJOFAsU0FBUyxHQUFHLENBQUMsR0FBRzVRLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBaEI7SUFDQSxJQUFJOHdDLFVBQVUsR0FBRyxDQUFDLEdBQUc1eEMsS0FBSyxDQUFDYyxHQUFWLEVBQWUsRUFBZixDQUFqQjtJQUNBLElBQUlxUSxRQUFRLEdBQUcsQ0FBQyxHQUFHblIsS0FBSyxDQUFDYyxHQUFWLEVBQWUsVUFBZixDQUFmO0lBQ0EsSUFBSTBQLGFBQWEsR0FBRztNQUNoQis5QixVQUFVLEVBQUUsbUJBREk7TUFFaEJDLGNBQWMsRUFBRTtJQUZBLENBQXBCO0lBSUEsSUFBSTVoQixRQUFRLEdBQUcsQ0FBQyxHQUFHNXNCLEtBQUssQ0FBQzhILFFBQVYsRUFBb0I7TUFDL0IrcEMsUUFBUSxFQUFFLEVBRHFCO01BRS9CQyxTQUFTLEVBQUUsRUFGb0I7TUFHL0I5SSxLQUFLLEVBQUUsRUFId0I7TUFJL0I3OUIsTUFBTSxFQUFFLEdBSnVCO01BSy9CNG1DLE9BQU8sRUFBRSxFQUxzQjtNQU0vQnpJLFFBQVEsRUFBRSxFQU5xQjtNQU8vQkMscUJBQXFCLEVBQUU7SUFQUSxDQUFwQixDQUFmO0lBU0EsSUFBSXlJLFNBQVMsR0FBRyxDQUFDLEdBQUdoeUMsS0FBSyxDQUFDOEgsUUFBVixFQUFvQjtNQUNoQytwQyxRQUFRLEVBQUUsRUFEc0I7TUFFaENDLFNBQVMsRUFBRSxFQUZxQjtNQUdoQzlJLEtBQUssRUFBRSxFQUh5QjtNQUloQzc5QixNQUFNLEVBQUUsRUFKd0I7TUFLaEM0bUMsT0FBTyxFQUFFLEVBTHVCO01BTWhDekksUUFBUSxFQUFFLEVBTnNCO01BT2hDQyxxQkFBcUIsRUFBRTtJQVBTLENBQXBCLENBQWhCO0lBU0EsSUFBSTRGLGVBQWUsR0FBRyxDQUFDLEdBQUdudkMsS0FBSyxDQUFDc0QsUUFBVixFQUFvQixZQUFZO01BQ2xELE9BQVFxTCxNQUFNLENBQUMvSCxZQUFQLENBQW9CWCxNQUFwQixHQUE2QjBJLE1BQU0sQ0FBQytoQyxLQUFQLENBQWF6cUMsTUFBMUMsSUFBb0QsQ0FBcEQsSUFDSjBJLE1BQU0sQ0FBQ3hELE1BQVAsSUFBaUIsRUFEYixJQUVId0QsTUFBTSxDQUFDbS9CLFVBQVAsSUFBcUJuL0IsTUFBTSxDQUFDby9CLFFBRmpDO0lBR0gsQ0FKcUIsQ0FBdEI7SUFLQSxJQUFJbmtCLGFBQWEsR0FBRyxDQUFDLEdBQUd4akIsTUFBTSxDQUFDeWpCLGNBQVgsRUFBMkJuVCxTQUEzQixFQUFzQyxZQUFZO01BQUUsT0FBT29ULFNBQVA7SUFBbUIsQ0FBdkUsRUFBeUU7TUFDekZDLEtBQUssRUFBRTtJQURrRixDQUF6RSxFQUVqQkgsYUFGSDtJQUdBLENBQUMsR0FBRzVwQixLQUFLLENBQUM4SSxLQUFWLEVBQWlCLFlBQVk7TUFBRSxPQUFPNE4sU0FBUyxDQUFDMUksVUFBakI7SUFBOEIsQ0FBN0QsRUFBK0QsWUFBWTtNQUN2RXpFLFVBQVUsQ0FBQyxZQUFZO1FBQ25CbU4sU0FBUyxDQUFDMUksVUFBVixHQUF1QixLQUF2QjtRQUNBK2EsaUJBQWlCO01BQ3BCLENBSFMsRUFHUCxJQUhPLENBQVY7SUFJSCxDQUxEOztJQU1BLElBQUlBLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBb0IsR0FBWTtNQUNoQ2EsYUFBYSxDQUFDLFlBQVk7UUFDdEJsVCxTQUFTLENBQUNwTixPQUFWLEdBQW9CLEVBQXBCO01BQ0gsQ0FGWSxDQUFiO0lBR0gsQ0FKRDs7SUFLQSxJQUFJc2xDLGVBQWUsR0FBRyxTQUFsQkEsZUFBa0IsR0FBWTtNQUM5QmpnQyxNQUFNLENBQUNzL0Isb0JBQVAsR0FBOEIsRUFBOUI7TUFDQWdFLG9CQUFvQjtJQUN2QixDQUhEOztJQUlBLENBQUMsR0FBR2p5QyxLQUFLLENBQUNnQixTQUFWLEVBQXFCLFlBQVk7TUFDN0IsSUFBSTh0QyxZQUFZLEdBQUdDLCtCQUErQixFQUFsRDs7TUFDQSxJQUFJRCxZQUFKLEVBQWtCO1FBQ2QsS0FBSyxJQUFJMy9CLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUcyL0IsWUFBWSxDQUFDN29DLE1BQWpDLEVBQXlDa0osQ0FBQyxFQUExQyxFQUE4QztVQUMxQyxJQUFJeEUsR0FBRyxHQUFHLENBQUMsR0FBR2tDLE9BQU8sQ0FBQ3MxQixvQkFBWixFQUFrQzJNLFlBQVksQ0FBQzMvQixDQUFELENBQVosQ0FBZ0IsQ0FBaEIsQ0FBbEMsQ0FBVjtVQUNBLElBQUl0UCxLQUFLLEdBQUdpdkMsWUFBWSxDQUFDMy9CLENBQUQsQ0FBWixDQUFnQixDQUFoQixDQUFaOztVQUNBLElBQUksQ0FBQyxPQUFELEVBQVUsY0FBVixFQUEwQnZFLFFBQTFCLENBQW1DRCxHQUFuQyxDQUFKLEVBQTZDO1lBQ3pDZ0UsTUFBTSxDQUFDaEUsR0FBRCxDQUFOLENBQVl6RSxJQUFaLENBQWlCckcsS0FBakI7VUFDSCxDQUZELE1BR0ssSUFBSThLLEdBQUcsS0FBSyxXQUFaLEVBQXlCO1lBQzFCd0csUUFBUSxDQUFDdFIsS0FBVCxHQUFpQkEsS0FBSyxDQUFDOEIsS0FBTixDQUFZLEdBQVosRUFBaUJzSyxJQUFqQixDQUFzQixHQUF0QixDQUFqQjtVQUNILENBRkksTUFHQTtZQUNEMEMsTUFBTSxDQUFDaEUsR0FBRCxDQUFOLEdBQWM5SyxLQUFkO1VBQ0g7UUFDSjtNQUNKO0lBQ0osQ0FqQkQ7O0lBa0JBLElBQUlrdkMsK0JBQStCLEdBQUcsU0FBbENBLCtCQUFrQyxHQUFZO01BQzlDLElBQUl0dUMsRUFBSjs7TUFDQSxJQUFJNkssV0FBVyxHQUFHLENBQUM3SyxFQUFFLEdBQUdnQyxNQUFNLENBQUM4SCxRQUFQLENBQWdCL0gsSUFBdEIsTUFBZ0MsSUFBaEMsSUFBd0MvQixFQUFFLEtBQUssS0FBSyxDQUFwRCxHQUF3RCxLQUFLLENBQTdELEdBQWlFQSxFQUFFLENBQUNrZCxRQUFILEVBQW5GOztNQUNBLElBQUlyUyxXQUFKLEVBQWlCO1FBQ2JBLFdBQVcsR0FBR0EsV0FBVyxDQUFDM0osS0FBWixDQUFrQixHQUFsQixFQUF1QixDQUF2QixDQUFkO1FBQ0EsSUFBSXN0QyxtQkFBbUIsR0FBRyxFQUExQjtRQUNBLElBQUlDLFdBQVcsR0FBRzVqQyxXQUFXLEtBQUssSUFBaEIsSUFBd0JBLFdBQVcsS0FBSyxLQUFLLENBQTdDLEdBQWlELEtBQUssQ0FBdEQsR0FBMERBLFdBQVcsQ0FBQzNKLEtBQVosQ0FBa0IsR0FBbEIsQ0FBNUU7O1FBQ0EsSUFBSXV0QyxXQUFKLEVBQWlCO1VBQ2IsS0FBSyxJQUFJLy9CLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUcrL0IsV0FBVyxDQUFDanBDLE1BQWhDLEVBQXdDa0osQ0FBQyxFQUF6QyxFQUE2QztZQUN6QyxJQUFJakksRUFBRSxHQUFHZ29DLFdBQVcsQ0FBQy8vQixDQUFELENBQVgsQ0FBZXhOLEtBQWYsQ0FBcUIsR0FBckIsQ0FBVDtZQUFBLElBQW9DZ0osR0FBRyxHQUFHekQsRUFBRSxDQUFDLENBQUQsQ0FBNUM7WUFBQSxJQUFpRHJILEtBQUssR0FBR3FILEVBQUUsQ0FBQyxDQUFELENBQTNEOztZQUNBLElBQUl5RCxHQUFKLEVBQVM7Y0FDTHNrQyxtQkFBbUIsQ0FBQy9vQyxJQUFwQixDQUF5QixDQUFDeUUsR0FBRCxFQUFNOUssS0FBSyxLQUFLLElBQVYsSUFBa0JBLEtBQUssS0FBSyxLQUFLLENBQWpDLEdBQXFDQSxLQUFyQyxHQUE2QyxFQUFuRCxDQUF6QjtZQUNIO1VBQ0o7UUFDSjs7UUFDRCxPQUFPb3ZDLG1CQUFQO01BQ0g7O01BQ0QsT0FBTyxLQUFQO0lBQ0gsQ0FsQkQ7O0lBbUJBLENBQUMsR0FBR2p2QyxLQUFLLENBQUNnQixTQUFWLEVBQXFCLFlBQVk7TUFBRSxPQUFPNkMsU0FBUyxDQUFDbU4sS0FBRCxFQUFRLEtBQUssQ0FBYixFQUFnQixLQUFLLENBQXJCLEVBQXdCLFlBQVk7UUFDbkYsT0FBT2xNLFdBQVcsQ0FBQyxJQUFELEVBQU8sVUFBVXJFLEVBQVYsRUFBYztVQUNuQ04sT0FBTyxXQUFQLENBQWdCK0MsR0FBaEIsQ0FBb0IsZUFBcEIsRUFBcUNuQixJQUFyQyxDQUEwQyxVQUFVQyxHQUFWLEVBQWU7WUFDckQsSUFBSXlMLFFBQVEsR0FBR3pMLEdBQUcsQ0FBQ0ssSUFBbkI7O1lBQ0EsS0FBSyxJQUFJOE0sQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRzFCLFFBQVEsQ0FBQ3BMLElBQVQsQ0FBY0EsSUFBZCxDQUFtQjRELE1BQXZDLEVBQStDa0osQ0FBQyxFQUFoRCxFQUFvRDtjQUNoRDFCLFFBQVEsQ0FBQ3BMLElBQVQsQ0FBY0EsSUFBZCxDQUFtQjhNLENBQW5CLEVBQXNCK2lDLElBQXRCLEdBQTZCemtDLFFBQVEsQ0FBQ3BMLElBQVQsQ0FBY0EsSUFBZCxDQUFtQjhNLENBQW5CLEVBQXNCK2lDLElBQXRCLENBQ3hCdndDLEtBRHdCLENBQ2xCLEdBRGtCLEVBRXhCc0ssSUFGd0IsQ0FFbkIsR0FGbUIsQ0FBN0I7WUFHSDs7WUFDRHZNLE1BQU0sQ0FBQ29RLE1BQVAsQ0FBY2doQyxTQUFkLEVBQXlCcmpDLFFBQVEsQ0FBQ3BMLElBQWxDO1lBQ0FpVSxPQUFPLENBQUN6VyxLQUFSLEdBQWdCNE4sUUFBUSxDQUFDcEwsSUFBVCxDQUFjQSxJQUFkLENBQW1CNEQsTUFBbkIsR0FBNEIsS0FBNUIsR0FBb0MsSUFBcEQ7WUFDQW1aLE1BQU0sQ0FBQ3ZmLEtBQVAsR0FBZSxLQUFmO1VBQ0gsQ0FWRDtVQVdBMEosVUFBVSxDQUFDLFlBQVk7WUFDbkJtTixTQUFTLENBQUMxSSxVQUFWLEdBQXVCLEtBQXZCO1VBQ0gsQ0FGUyxFQUVQLElBRk8sQ0FBVjtVQUdBLE9BQU8sQ0FBQztVQUFFO1VBQUgsQ0FBUDtRQUNILENBaEJpQixDQUFsQjtNQWlCSCxDQWxCa0QsQ0FBaEI7SUFrQjlCLENBbEJMOztJQW1CQSxJQUFJbWtDLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsQ0FBVTdwQyxFQUFWLEVBQWM4cEMsS0FBZCxFQUFxQjtNQUN0QyxRQUFRQSxLQUFSO1FBQ0ksS0FBSyxLQUFMO1VBQ0ksT0FBTzVyQyxLQUFLLENBQUNpcUMsYUFBTixDQUFvQixDQUFDbm9DLEVBQXJCLENBQVA7O1FBQ0osS0FBSyxPQUFMO1VBQ0ksT0FBTzlCLEtBQUssQ0FBQ2txQyxLQUFOLENBQVksQ0FBQ3BvQyxFQUFiLENBQVA7O1FBQ0osS0FBSyxRQUFMO1VBQ0ksT0FBTzlCLEtBQUssQ0FBQzJFLE1BQU4sQ0FBYSxDQUFDN0MsRUFBZCxDQUFQOztRQUNKO1VBQ0ksT0FBTzhwQyxLQUFQO01BUlI7SUFVSCxDQVhEOztJQVlBLElBQUlDLFdBQVcsR0FBRyxTQUFkQSxXQUFjLEdBQVk7TUFDMUIxakMsTUFBTSxDQUFDL0gsWUFBUCxHQUFzQixFQUF0QjtNQUNBK0gsTUFBTSxDQUFDK2hDLEtBQVAsR0FBZSxFQUFmO01BQ0EvaEMsTUFBTSxDQUFDeEQsTUFBUCxHQUFnQixFQUFoQjtNQUNBd0QsTUFBTSxDQUFDZ3FCLFNBQVAsR0FBbUIsRUFBbkI7TUFDQWhxQixNQUFNLENBQUNreEIsT0FBUCxHQUFpQixFQUFqQjtNQUNBbHhCLE1BQU0sQ0FBQ2dpQyxDQUFQLEdBQVcsRUFBWDtNQUNBaGlDLE1BQU0sQ0FBQ3MvQixvQkFBUCxHQUE4QixFQUE5QjtNQUNBZ0Usb0JBQW9CO0lBQ3ZCLENBVEQ7O0lBVUEsSUFBSUEsb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUF1QixHQUFZO01BQ25DcmhDLFNBQVMsQ0FBQy9RLEtBQVYsR0FBa0IsSUFBbEI7SUFDSCxDQUZEOztJQUdBLElBQUk0aEMsZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFtQixDQUFVdHNCLFNBQVYsRUFBcUJDLE9BQXJCLEVBQThCdkQsWUFBOUIsRUFBNEM7TUFDL0RsRCxNQUFNLENBQUNtL0IsVUFBUCxHQUFvQjM0QixTQUFwQjtNQUNBeEcsTUFBTSxDQUFDby9CLFFBQVAsR0FBa0IzNEIsT0FBbEI7TUFDQXpHLE1BQU0sQ0FBQ3MvQixvQkFBUCxHQUE4QnA4QixZQUE5QjtJQUNILENBSkQ7O0lBS0EsSUFBSW8rQixXQUFXLEdBQUcsU0FBZEEsV0FBYyxDQUFVOStCLFFBQVYsRUFBb0I7TUFDbEN4QyxNQUFNLENBQUNxL0IsU0FBUCxHQUFtQjc4QixRQUFuQjtJQUNILENBRkQ7O0lBR0EsSUFBSW1oQyxVQUFVLEdBQUcsU0FBYkEsVUFBYSxHQUFZO01BQ3pCLElBQUk3eEMsRUFBSixFQUFReUcsRUFBUjs7TUFDQStQLGVBQWUsQ0FBQ3BYLEtBQWhCLEdBQXdCLElBQXhCO01BQ0EsSUFBSTB5QyxZQUFZLEdBQUc7UUFDZmpKLFFBQVEsRUFBRSxDQUFDLEdBQUdGLFlBQVksV0FBaEIsRUFBMEJ4YyxRQUFRLENBQUMwYyxRQUFuQyxFQUE2QyxDQUFDN29DLEVBQUUsR0FBR2dwQyxNQUFOLE1BQTBDLElBQTFDLElBQWtEaHBDLEVBQUUsS0FBSyxLQUFLLENBQTlELEdBQWtFQSxFQUFsRSxHQUF1RSxFQUFwSCxDQURLO1FBRWY4b0MscUJBQXFCLEVBQUUsQ0FBQyxHQUFHSCxZQUFZLFdBQWhCLEVBQTBCeGMsUUFBUSxDQUFDMmMscUJBQW5DLEVBQTBELENBQUNyaUMsRUFBRSxHQUFHdWlDLE1BQU4sTUFBMEMsSUFBMUMsSUFBa0R2aUMsRUFBRSxLQUFLLEtBQUssQ0FBOUQsR0FBa0VBLEVBQWxFLEdBQXVFLEVBQWpJO01BRlIsQ0FBbkI7TUFJQS9HLE9BQU8sV0FBUCxDQUNLK0ssSUFETCxDQUNVLE9BRFYsRUFDbUI2WixRQUFRLENBQUNBLFFBQVEsQ0FBQyxFQUFELEVBQUs2SCxRQUFMLENBQVQsRUFBeUIybEIsWUFBekIsQ0FEM0IsRUFFS3h3QyxJQUZMLENBRVUsVUFBVUMsR0FBVixFQUFlO1FBQ3JCMFUsU0FBUyxDQUFDMUksVUFBVixHQUF1QixJQUF2QjtRQUNBMEksU0FBUyxDQUFDcE4sT0FBVixHQUFvQnRILEdBQUcsQ0FBQ0ssSUFBSixDQUFTaUgsT0FBN0I7UUFDQW9OLFNBQVMsQ0FBQ2hRLElBQVYsR0FBaUIxRSxHQUFHLENBQUNLLElBQUosQ0FBU2UsT0FBMUI7UUFDQW92QyxZQUFZO1FBQ1pBLFlBQVksQ0FBQ3h3QyxHQUFHLENBQUNLLElBQUosQ0FBUzhaLE1BQVYsQ0FBWjs7UUFDQSxJQUFJbmEsR0FBRyxDQUFDSyxJQUFKLENBQVNlLE9BQWIsRUFBc0I7VUFDbEJpdkMsV0FBVztVQUNYSSxjQUFjLENBQUMzQixTQUFTLENBQUMsY0FBRCxDQUFWLEVBQTRCLElBQTVCLENBQWQ7VUFDQUYsV0FBVyxDQUFDL3dDLEtBQVosR0FBb0IsS0FBcEI7VUFDQTZ5QyxhQUFhO1VBQ2JGLFlBQVk7UUFDZjtNQUNKLENBZkQsV0FnQlcsVUFBVXJrQyxLQUFWLEVBQWlCO1FBQ3hCdUksU0FBUyxDQUFDMUksVUFBVixHQUF1QixJQUF2QjtRQUNBMEksU0FBUyxDQUFDcE4sT0FBVixHQUFvQjZFLEtBQUssQ0FBQzlMLElBQU4sQ0FBV2lILE9BQS9CO1FBQ0FvTixTQUFTLENBQUNoUSxJQUFWLEdBQWlCLEtBQWpCO1FBQ0FrcUMsV0FBVyxDQUFDL3dDLEtBQVosR0FBb0IsS0FBcEI7TUFDSCxDQXJCRCxhQXNCYSxZQUFZO1FBQ3JCb1gsZUFBZSxDQUFDcFgsS0FBaEIsR0FBd0IsS0FBeEI7TUFDSCxDQXhCRDtJQXlCSCxDQWhDRDs7SUFpQ0EsSUFBSTh5QyxRQUFRLEdBQUcsU0FBWEEsUUFBVyxDQUFVbHNDLElBQVYsRUFBZ0I7TUFDM0JtbUIsUUFBUSxDQUFDaWxCLFFBQVQsR0FBb0JwckMsSUFBSSxDQUFDb3JDLFFBQXpCO01BQ0FqbEIsUUFBUSxDQUFDa2xCLFNBQVQsR0FBcUJyckMsSUFBSSxDQUFDcXJDLFNBQTFCO01BQ0FsbEIsUUFBUSxDQUFDb2MsS0FBVCxHQUFpQnZpQyxJQUFJLENBQUN1aUMsS0FBdEI7TUFDQXBjLFFBQVEsQ0FBQ21sQixPQUFULEdBQW1CdHJDLElBQUksQ0FBQ3NyQyxPQUF4QjtNQUNBSCxVQUFVLENBQUMveEMsS0FBWCxHQUFtQjRHLElBQUksQ0FBQzZCLEVBQXhCO01BQ0F1b0MsWUFBWSxDQUFDaHhDLEtBQWIsR0FBcUIsSUFBckI7SUFDSCxDQVBEOztJQVFBLElBQUk2eUMsYUFBYSxHQUFHLFNBQWhCQSxhQUFnQixHQUFZO01BQzVCLEtBQUssSUFBSS9uQyxHQUFULElBQWdCaWlCLFFBQWhCLEVBQTBCO1FBQ3RCQSxRQUFRLENBQUNqaUIsR0FBRCxDQUFSLEdBQWdCQSxHQUFHLEtBQUssUUFBUixHQUFtQixDQUFuQixHQUF1QixFQUF2QztNQUNIO0lBQ0osQ0FKRDs7SUFLQSxJQUFJNm5DLFlBQVksR0FBRyxTQUFmQSxZQUFlLENBQVVyMkIsTUFBVixFQUFrQjtNQUNqQyxJQUFJQSxNQUFNLEtBQUssS0FBSyxDQUFwQixFQUF1QjtRQUFFQSxNQUFNLEdBQUcsRUFBVDtNQUFjOztNQUN2QyxJQUFJemMsTUFBTSxDQUFDMFAsSUFBUCxDQUFZK00sTUFBWixFQUFvQmxXLE1BQXhCLEVBQWdDO1FBQzVCLEtBQUssSUFBSTBFLEdBQVQsSUFBZ0J3UixNQUFoQixFQUF3QjtVQUNwQjYxQixTQUFTLENBQUNybkMsR0FBRCxDQUFULEdBQWlCd1IsTUFBTSxDQUFDeFIsR0FBRCxDQUF2QjtRQUNIO01BQ0osQ0FKRCxNQUtLO1FBQ0QsS0FBSyxJQUFJQSxHQUFULElBQWdCcW5DLFNBQWhCLEVBQTJCO1VBQ3ZCQSxTQUFTLENBQUNybkMsR0FBRCxDQUFULEdBQWlCLEVBQWpCO1FBQ0g7TUFDSjtJQUNKLENBWkQ7O0lBYUEsSUFBSWlvQyxlQUFlLEdBQUcsU0FBbEJBLGVBQWtCLENBQVVuc0MsSUFBVixFQUFnQjtNQUNsQzBxQyxRQUFRLENBQUN0eEMsS0FBVCxHQUFpQjRHLElBQUksQ0FBQzZCLEVBQXRCO01BQ0Erb0MsV0FBVyxDQUFDeHhDLEtBQVosR0FBb0I0RyxJQUFJLENBQUMwRSxNQUF6QjtNQUNBaW1DLFdBQVcsQ0FBQ3Z4QyxLQUFaLEdBQW9CLElBQXBCO01BQ0F5eEMsY0FBYyxDQUFDenhDLEtBQWYsR0FBdUI0RyxJQUFJLENBQUNvckMsUUFBNUI7SUFDSCxDQUxEOztJQU1BLElBQUlnQixVQUFVLEdBQUcsU0FBYkEsVUFBYSxHQUFZO01BQ3pCLElBQUlweUMsRUFBSixFQUFReUcsRUFBUjs7TUFDQStQLGVBQWUsQ0FBQ3BYLEtBQWhCLEdBQXdCLElBQXhCO01BQ0EsSUFBSTB5QyxZQUFZLEdBQUc7UUFDZmpKLFFBQVEsRUFBRSxDQUFDLEdBQUdGLFlBQVksV0FBaEIsRUFBMEJ4YyxRQUFRLENBQUMwYyxRQUFuQyxFQUE2QyxDQUFDN29DLEVBQUUsR0FBR2dwQyxNQUFOLE1BQTBDLElBQTFDLElBQWtEaHBDLEVBQUUsS0FBSyxLQUFLLENBQTlELEdBQWtFQSxFQUFsRSxHQUF1RSxFQUFwSCxDQURLO1FBRWY4b0MscUJBQXFCLEVBQUUsQ0FBQyxHQUFHSCxZQUFZLFdBQWhCLEVBQTBCeGMsUUFBUSxDQUFDMmMscUJBQW5DLEVBQTBELENBQUNyaUMsRUFBRSxHQUFHdWlDLE1BQU4sTUFBMEMsSUFBMUMsSUFBa0R2aUMsRUFBRSxLQUFLLEtBQUssQ0FBOUQsR0FBa0VBLEVBQWxFLEdBQXVFLEVBQWpJO01BRlIsQ0FBbkI7TUFJQS9HLE9BQU8sV0FBUCxDQUNLMnlDLEtBREwsQ0FDVyxTQUFTcnhDLE1BQVQsQ0FBZ0Jtd0MsVUFBVSxDQUFDL3hDLEtBQTNCLENBRFgsRUFDOENrbEIsUUFBUSxDQUFDQSxRQUFRLENBQUMsRUFBRCxFQUFLNkgsUUFBTCxDQUFULEVBQXlCMmxCLFlBQXpCLENBRHRELEVBRUt4d0MsSUFGTCxDQUVVLFVBQVVDLEdBQVYsRUFBZTtRQUNyQjBVLFNBQVMsQ0FBQzFJLFVBQVYsR0FBdUIsSUFBdkI7UUFDQTBJLFNBQVMsQ0FBQ3BOLE9BQVYsR0FBb0J0SCxHQUFHLENBQUNLLElBQUosQ0FBU2lILE9BQTdCO1FBQ0FvTixTQUFTLENBQUNoUSxJQUFWLEdBQWlCMUUsR0FBRyxDQUFDSyxJQUFKLENBQVNlLE9BQTFCO1FBQ0E2VCxlQUFlLENBQUNwWCxLQUFoQixHQUF3QixLQUF4QjtRQUNBMnlDLFlBQVk7UUFDWkEsWUFBWSxDQUFDeHdDLEdBQUcsQ0FBQ0ssSUFBSixDQUFTOFosTUFBVixDQUFaOztRQUNBLElBQUluYSxHQUFHLENBQUNLLElBQUosQ0FBU2UsT0FBYixFQUFzQjtVQUNsQnl0QyxZQUFZLENBQUNoeEMsS0FBYixHQUFxQixLQUFyQjtVQUNBNHlDLGNBQWMsQ0FBQzNCLFNBQVMsQ0FBQyxjQUFELENBQVYsQ0FBZDtVQUNBYyxVQUFVLENBQUMveEMsS0FBWCxHQUFtQixFQUFuQjtVQUNBNnlDLGFBQWE7VUFDYkYsWUFBWTtVQUNaL3ZDLE1BQU0sQ0FBQ3l5QixRQUFQLENBQWdCLENBQWhCLEVBQW1CLENBQW5CO1FBQ0g7TUFDSixDQWpCRCxXQWtCVyxVQUFVL21CLEtBQVYsRUFBaUI7UUFDeEJ5akMsVUFBVSxDQUFDL3hDLEtBQVgsR0FBbUIsRUFBbkI7UUFDQTZXLFNBQVMsQ0FBQzFJLFVBQVYsR0FBdUIsSUFBdkI7UUFDQTBJLFNBQVMsQ0FBQ3BOLE9BQVYsR0FBb0I2RSxLQUFLLENBQUM5TCxJQUFOLENBQVdpSCxPQUEvQjtRQUNBb04sU0FBUyxDQUFDaFEsSUFBVixHQUFpQixLQUFqQjtRQUNBdVEsZUFBZSxDQUFDcFgsS0FBaEIsR0FBd0IsS0FBeEI7TUFDSCxDQXhCRCxhQXlCYSxZQUFZO1FBQ3JCb1gsZUFBZSxDQUFDcFgsS0FBaEIsR0FBd0IsS0FBeEI7TUFDSCxDQTNCRDtJQTRCSCxDQW5DRDs7SUFvQ0EsQ0FBQyxHQUFHRyxLQUFLLENBQUM4SSxLQUFWLEVBQWlCLFlBQVk7TUFBRSxPQUFPLENBQ2xDNkYsTUFBTSxDQUFDL0gsWUFEMkIsRUFFbEMrSCxNQUFNLENBQUMraEMsS0FGMkIsRUFHbEMvaEMsTUFBTSxDQUFDZ2lDLENBSDJCLEVBSWxDaGlDLE1BQU0sQ0FBQ3hELE1BSjJCLEVBS2xDd0QsTUFBTSxDQUFDbS9CLFVBTDJCLEVBTWxDbi9CLE1BQU0sQ0FBQ28vQixRQU4yQixFQU9sQ3AvQixNQUFNLENBQUNxL0IsU0FQMkIsQ0FBUDtJQVEzQixDQVJKLEVBUU0sWUFBWTtNQUNkeUUsY0FBYyxDQUFDM0IsU0FBUyxDQUFDLGNBQUQsQ0FBVixFQUE0QixJQUE1QixDQUFkO0lBQ0gsQ0FWRCxFQVVHO01BQUUvZ0MsSUFBSSxFQUFFO0lBQVIsQ0FWSDs7SUFXQSxTQUFTMGlDLGNBQVQsQ0FBd0JoNEIsV0FBeEIsRUFBcUMvTCxRQUFyQyxFQUErQztNQUMzQyxJQUFJQSxRQUFRLEtBQUssS0FBSyxDQUF0QixFQUF5QjtRQUFFQSxRQUFRLEdBQUcsS0FBWDtNQUFtQjs7TUFDOUMsSUFBSTh0QixLQUFLLEdBQUcsZUFBZS82QixNQUFmLENBQXNCaU4sUUFBUSxHQUFHLEdBQUgsR0FBUytMLFdBQXZDLENBQVo7TUFDQSsyQixpQkFBaUIsQ0FBQzN4QyxLQUFsQixHQUEwQixJQUExQjtNQUNBLElBQUk0OEIsTUFBTSxHQUFHLElBQUloeEIsZUFBSixFQUFiOztNQUNBLEtBQUssSUFBSXNuQyxVQUFULElBQXVCcGtDLE1BQXZCLEVBQStCO1FBQzNCLElBQUlBLE1BQU0sQ0FBQ29rQyxVQUFELENBQVYsRUFBd0I7VUFDcEIsSUFBSXBrQyxNQUFNLENBQUNva0MsVUFBRCxDQUFOLENBQW1COXNDLE1BQW5CLEdBQTRCLENBQWhDLEVBQW1DO1lBQy9CdzJCLE1BQU0sQ0FBQ21GLE1BQVAsQ0FBY21SLFVBQWQsRUFBMEJwa0MsTUFBTSxDQUFDb2tDLFVBQUQsQ0FBaEM7VUFDSDtRQUNKO01BQ0o7O01BQ0Q1eUMsT0FBTyxXQUFQLENBQ0srQyxHQURMLENBQ1NzNUIsS0FEVCxFQUNnQjtRQUFFQyxNQUFNLEVBQUVBO01BQVYsQ0FEaEIsRUFFSzE2QixJQUZMLENBRVUsVUFBVUMsR0FBVixFQUFlO1FBQ3JCLElBQUl5TCxRQUFRLEdBQUd6TCxHQUFHLENBQUNLLElBQW5CO1FBQ0EzQyxNQUFNLENBQUNvUSxNQUFQLENBQWNnaEMsU0FBZCxFQUF5QnJqQyxRQUFRLENBQUNwTCxJQUFsQztRQUNBaVUsT0FBTyxDQUFDelcsS0FBUixHQUFnQjROLFFBQVEsQ0FBQ3BMLElBQVQsR0FBZ0IsS0FBaEIsR0FBd0IsSUFBeEM7UUFDQTZ1QyxTQUFTLENBQUNyeEMsS0FBVixHQUFrQjROLFFBQVEsQ0FBQ3BMLElBQVQsQ0FBY29nQyxLQUFoQztNQUNILENBUEQsYUFRYSxZQUFZO1FBQ3JCK08saUJBQWlCLENBQUMzeEMsS0FBbEIsR0FBMEIsS0FBMUI7TUFDSCxDQVZEO0lBV0g7O0lBQ0QsSUFBSW16QyxlQUFlLEdBQUcsU0FBbEJBLGVBQWtCLENBQVV2c0MsSUFBVixFQUFnQjtNQUNsQ3VxQyxXQUFXLENBQUNueEMsS0FBWixHQUFvQixJQUFwQjtNQUNBb3hDLFFBQVEsQ0FBQ3B4QyxLQUFULEdBQWlCNEcsSUFBSSxDQUFDNkIsRUFBdEI7TUFDQWlwQyxjQUFjLENBQUMxeEMsS0FBZixHQUF1QjRHLElBQUksQ0FBQ29yQyxRQUE1QjtJQUNILENBSkQ7O0lBS0EsU0FBU29CLFVBQVQsQ0FBb0IzcUMsRUFBcEIsRUFBd0I7TUFDcEIwb0MsV0FBVyxDQUFDbnhDLEtBQVosR0FBb0IsS0FBcEI7TUFDQTRDLE1BQU0sQ0FBQ3l5QixRQUFQLENBQWdCLENBQWhCLEVBQW1CLENBQW5CO01BQ0EvMEIsT0FBTyxXQUFQLFdBQXVCLFNBQVNzQixNQUFULENBQWdCNkcsRUFBaEIsQ0FBdkIsRUFBNEN2RyxJQUE1QyxDQUFpRCxVQUFVQyxHQUFWLEVBQWU7UUFDNUQsSUFBSUEsR0FBRyxDQUFDSyxJQUFKLENBQVNpSCxPQUFiLEVBQXNCO1VBQ2xCb04sU0FBUyxDQUFDMUksVUFBVixHQUF1QixJQUF2QjtVQUNBMEksU0FBUyxDQUFDcE4sT0FBVixHQUFvQnRILEdBQUcsQ0FBQ0ssSUFBSixDQUFTaUgsT0FBN0I7VUFDQW9OLFNBQVMsQ0FBQ2hRLElBQVYsR0FBaUIxRSxHQUFHLENBQUNLLElBQUosQ0FBU2UsT0FBMUI7UUFDSDs7UUFDRCxJQUFJcEIsR0FBRyxDQUFDSyxJQUFKLENBQVNlLE9BQWIsRUFBc0I7VUFDbEJxdkMsY0FBYyxDQUFDM0IsU0FBUyxDQUFDLGNBQUQsQ0FBVixDQUFkO1FBQ0g7TUFDSixDQVREO0lBVUg7O0lBQ0QsSUFBSWhSLElBQUksR0FBRyxTQUFQQSxJQUFPLENBQVVsMEIsS0FBVixFQUFpQjtNQUN4QitDLE1BQU0sQ0FBQ2dxQixTQUFQLEdBQ0locUIsTUFBTSxDQUFDZ3FCLFNBQVAsS0FBcUIsS0FBckIsSUFBOEJocUIsTUFBTSxDQUFDa3hCLE9BQVAsS0FBbUJqMEIsS0FBakQsR0FBeUQsTUFBekQsR0FBa0UsS0FEdEU7TUFFQStDLE1BQU0sQ0FBQ2t4QixPQUFQLEdBQWlCajBCLEtBQWpCO01BQ0E2bUMsY0FBYyxDQUFDLENBQUQsQ0FBZDtJQUNILENBTEQ7O0lBTUEsU0FBU1MsZ0JBQVQsQ0FBMEI1cUMsRUFBMUIsRUFBOEI7TUFDMUI3RixNQUFNLENBQUN5eUIsUUFBUCxDQUFnQixDQUFoQixFQUFtQixDQUFuQjtNQUNBamUsZUFBZSxDQUFDcFgsS0FBaEIsR0FBd0IsSUFBeEI7TUFDQXV4QyxXQUFXLENBQUN2eEMsS0FBWixHQUFvQixLQUFwQjtNQUNBTSxPQUFPLFdBQVAsQ0FDSzJ5QyxLQURMLENBQ1csZ0JBQWdCcnhDLE1BQWhCLENBQXVCNkcsRUFBdkIsQ0FEWCxFQUVLdkcsSUFGTCxDQUVVLFVBQVVDLEdBQVYsRUFBZTtRQUNyQixJQUFJQSxHQUFHLENBQUNtSixNQUFSLEVBQWdCO1VBQ1p1TCxTQUFTLENBQUMxSSxVQUFWLEdBQXVCLElBQXZCO1VBQ0EwSSxTQUFTLENBQUNwTixPQUFWLEdBQW9CdEgsR0FBRyxDQUFDSyxJQUFKLENBQVNpSCxPQUE3QjtVQUNBb04sU0FBUyxDQUFDaFEsSUFBVixHQUFpQjFFLEdBQUcsQ0FBQ0ssSUFBSixDQUFTZSxPQUExQjtVQUNBcXZDLGNBQWMsQ0FBQzNCLFNBQVMsQ0FBQyxjQUFELENBQVYsQ0FBZDtRQUNIO01BQ0osQ0FURCxhQVVhLFlBQVk7UUFDckI3NUIsZUFBZSxDQUFDcFgsS0FBaEIsR0FBd0IsS0FBeEI7TUFDSCxDQVpEO0lBYUg7O0lBQ0QsU0FBUzR2QixVQUFULENBQW9CMWIsSUFBcEIsRUFBMEI7TUFDdEIsT0FBTyxDQUFDLEdBQUd4RCxRQUFRLFdBQVosRUFBc0J3RCxJQUF0QixFQUE0Qm5DLE1BQTVCLENBQW1DLElBQW5DLENBQVA7SUFDSDs7SUFDRCxJQUFJdWhDLGVBQWUsR0FBRyxTQUFsQkEsZUFBa0IsR0FBWTtNQUM5QnhCLGVBQWUsQ0FBQzl4QyxLQUFoQixHQUF3Qml4QyxTQUFTLENBQUN6dUMsSUFBVixDQUFlK1csR0FBZixDQUFtQixVQUFVdlosS0FBVixFQUFpQjtRQUN4RCxPQUFPQSxLQUFLLENBQUMsSUFBRCxDQUFaO01BQ0gsQ0FGdUIsQ0FBeEI7O01BR0EsS0FBSyxJQUFJc1AsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRzJoQyxTQUFTLENBQUN6dUMsSUFBVixDQUFlNEQsTUFBbkMsRUFBMkNrSixDQUFDLEVBQTVDLEVBQWdEO1FBQzVDLElBQUksQ0FBQ3VpQyxTQUFTLENBQUM3eEMsS0FBVixDQUFnQitLLFFBQWhCLENBQXlCa21DLFNBQVMsQ0FBQ3p1QyxJQUFWLENBQWU4TSxDQUFmLEVBQWtCLElBQWxCLENBQXpCLENBQUwsRUFDSXVpQyxTQUFTLENBQUM3eEMsS0FBVixDQUFnQjZ4QyxTQUFTLENBQUM3eEMsS0FBVixDQUFnQm9HLE1BQWhCLEdBQXlCa0osQ0FBekMsSUFBOEMyaEMsU0FBUyxDQUFDenVDLElBQVYsQ0FBZThNLENBQWYsRUFBa0IsSUFBbEIsQ0FBOUM7TUFDUDs7TUFDRHNpQyxXQUFXLENBQUM1eEMsS0FBWixDQUFrQml4QyxTQUFTLENBQUMsY0FBRCxDQUEzQixJQUErQ1ksU0FBUyxDQUFDN3hDLEtBQXpEOztNQUNBLElBQUlreEMsV0FBVyxDQUFDbHhDLEtBQVosQ0FBa0JpeEMsU0FBUyxDQUFDLGNBQUQsQ0FBM0IsQ0FBSixFQUFrRDtRQUM5Q1ksU0FBUyxDQUFDN3hDLEtBQVYsR0FBa0I2eEMsU0FBUyxDQUFDN3hDLEtBQVYsQ0FBZ0I4TyxNQUFoQixDQUF1QixVQUFVaEosQ0FBVixFQUFhO1VBQUUsT0FBTyxDQUFDakcsTUFBTSxDQUFDa1AsTUFBUCxDQUFjK2lDLGVBQWUsQ0FBQzl4QyxLQUE5QixFQUFxQytLLFFBQXJDLENBQThDakYsQ0FBOUMsQ0FBUjtRQUEyRCxDQUFqRyxDQUFsQjtNQUNIOztNQUNEK3JDLFNBQVMsQ0FBQzd4QyxLQUFWLEdBQWtCNnhDLFNBQVMsQ0FBQzd4QyxLQUFWLENBQWdCOE8sTUFBaEIsQ0FBdUIsVUFBVXlrQyxFQUFWLEVBQWM7UUFDbkQsT0FBT0EsRUFBRSxJQUFJLElBQWI7TUFDSCxDQUZpQixDQUFsQjtNQUdBckMsV0FBVyxDQUFDbHhDLEtBQVosQ0FBa0JpeEMsU0FBUyxDQUFDLGNBQUQsQ0FBM0IsSUFDSSxDQUFDQyxXQUFXLENBQUNseEMsS0FBWixDQUFrQml4QyxTQUFTLENBQUMsY0FBRCxDQUEzQixDQURMO0lBRUgsQ0FqQkQ7O0lBa0JBLENBQUMsR0FBRzl3QyxLQUFLLENBQUM4SSxLQUFWLEVBQWlCLFlBQVk7TUFBRSxPQUFPNG9DLFNBQVMsQ0FBQzd4QyxLQUFqQjtJQUF5QixDQUF4RCxFQUEwRCxZQUFZO01BQ2xFNHhDLFdBQVcsQ0FBQzV4QyxLQUFaLENBQWtCaXhDLFNBQVMsQ0FBQyxjQUFELENBQTNCLElBQStDLEVBQS9DO01BQ0FhLGVBQWUsQ0FBQzl4QyxLQUFoQixHQUF3Qml4QyxTQUFTLENBQUN6dUMsSUFBVixDQUFlK1csR0FBZixDQUFtQixVQUFVdlosS0FBVixFQUFpQjtRQUN4RCxPQUFPQSxLQUFLLENBQUMsSUFBRCxDQUFaO01BQ0gsQ0FGdUIsQ0FBeEI7O01BR0EsS0FBSyxJQUFJc1AsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR3VpQyxTQUFTLENBQUM3eEMsS0FBVixDQUFnQm9HLE1BQXBDLEVBQTRDa0osQ0FBQyxFQUE3QyxFQUFpRDtRQUM3QyxJQUFJd2lDLGVBQWUsQ0FBQzl4QyxLQUFoQixDQUFzQitLLFFBQXRCLENBQStCOG1DLFNBQVMsQ0FBQzd4QyxLQUFWLENBQWdCc1AsQ0FBaEIsQ0FBL0IsQ0FBSixFQUF3RDtVQUNwRHNpQyxXQUFXLENBQUM1eEMsS0FBWixDQUFrQml4QyxTQUFTLENBQUMsY0FBRCxDQUEzQixFQUE2QzNoQyxDQUE3QyxJQUFrRHVpQyxTQUFTLENBQUM3eEMsS0FBVixDQUFnQnNQLENBQWhCLENBQWxEO1FBQ0g7TUFDSjs7TUFDRHNpQyxXQUFXLENBQUM1eEMsS0FBWixDQUFrQml4QyxTQUFTLENBQUMsY0FBRCxDQUEzQixJQUErQ1csV0FBVyxDQUFDNXhDLEtBQVosQ0FBa0JpeEMsU0FBUyxDQUFDLGNBQUQsQ0FBM0IsRUFBNkNuaUMsTUFBN0MsQ0FBb0QsVUFBVXlrQyxFQUFWLEVBQWM7UUFDN0csT0FBT0EsRUFBRSxJQUFJLElBQWI7TUFDSCxDQUY4QyxDQUEvQztJQUdILENBYkQ7O0lBY0EsSUFBSXZFLGFBQWEsR0FBRyxTQUFoQkEsYUFBZ0IsQ0FBVTdwQyxLQUFWLEVBQWlCO01BQ2pDLE9BQU87UUFBRSxXQUFXLElBQUl2RCxNQUFKLENBQVd1RCxLQUFYLEVBQWtCLEdBQWxCO01BQWIsQ0FBUDtJQUNILENBRkQ7O0lBR0EsSUFBSXF1QyxXQUFXLEdBQUcsU0FBZEEsV0FBYyxHQUFZO01BQzFCLElBQUk3VyxLQUFLLEdBQUcsa0JBQVo7TUFDQSxJQUFJQyxNQUFNLEdBQUcsSUFBSWh4QixlQUFKLEVBQWI7TUFDQSxJQUFJNm5DLGVBQUo7TUFDQUEsZUFBZSxHQUFHNXpDLE1BQU0sQ0FBQ2tQLE1BQVAsQ0FBYzZpQyxXQUFXLENBQUM1eEMsS0FBMUIsRUFBaUMwekMsSUFBakMsRUFBbEI7O01BQ0EsSUFBSTdCLFNBQVMsQ0FBQzd4QyxLQUFWLENBQWdCb0csTUFBaEIsSUFBMEIsQ0FBOUIsRUFBaUM7UUFDN0IsS0FBSyxJQUFJOHNDLFVBQVQsSUFBdUJwa0MsTUFBdkIsRUFBK0I7VUFDM0IsSUFBSUEsTUFBTSxDQUFDb2tDLFVBQUQsQ0FBTixDQUFtQjlzQyxNQUFuQixHQUE0QixDQUFoQyxFQUFtQztZQUMvQncyQixNQUFNLENBQUNtRixNQUFQLENBQWNtUixVQUFkLEVBQTBCcGtDLE1BQU0sQ0FBQ29rQyxVQUFELENBQWhDO1VBQ0g7UUFDSjtNQUNKLENBTkQsTUFPSztRQUNEdFcsTUFBTSxDQUFDbUYsTUFBUCxDQUFjLE9BQWQsRUFBdUIwUixlQUF2QjtNQUNIOztNQUNEbnpDLE9BQU8sV0FBUCxDQUFnQitDLEdBQWhCLENBQW9CczVCLEtBQXBCLEVBQTJCO1FBQUVDLE1BQU0sRUFBRUE7TUFBVixDQUEzQixFQUErQzE2QixJQUEvQyxDQUFvRCxVQUFVQyxHQUFWLEVBQWU7UUFDL0QsSUFBSXlMLFFBQVEsR0FBR3pMLEdBQUcsQ0FBQ0ssSUFBbkI7UUFDQSxJQUFJRixJQUFJLEdBQUcsSUFBSUMsSUFBSixDQUFTLENBQUNxTCxRQUFELENBQVQsRUFBcUI7VUFDNUIvRyxJQUFJLEVBQUU7UUFEc0IsQ0FBckIsQ0FBWDtRQUdBLElBQUlwRSxJQUFJLEdBQUdwQixRQUFRLENBQUNxQixhQUFULENBQXVCLEdBQXZCLENBQVg7UUFDQUQsSUFBSSxDQUFDRSxJQUFMLEdBQVlDLE1BQU0sQ0FBQ0MsR0FBUCxDQUFXQyxlQUFYLENBQTJCUixJQUEzQixDQUFaO1FBQ0FHLElBQUksQ0FBQ2cxQixRQUFMLEdBQWdCdDFCLEdBQUcsQ0FBQ0UsT0FBSixDQUFZLHFCQUFaLEVBQW1DUCxLQUFuQyxDQUF5QyxHQUF6QyxFQUE4QyxDQUE5QyxDQUFoQjtRQUNBVyxJQUFJLENBQUNTLEtBQUw7TUFDSCxDQVREO0lBVUgsQ0F6QkQ7O0lBMEJBLElBQUlVLFlBQVksR0FBRztNQUFFMkQsU0FBUyxFQUFFQSxTQUFiO01BQXdCWixLQUFLLEVBQUVBLEtBQS9CO01BQXNDa1EsU0FBUyxFQUFFQSxTQUFqRDtNQUE0RC9ILE1BQU0sRUFBRUEsTUFBcEU7TUFBNEVzSSxlQUFlLEVBQUVBLGVBQTdGO01BQThHMjVCLFdBQVcsRUFBRUEsV0FBM0g7TUFBd0lDLFlBQVksRUFBRUEsWUFBdEo7TUFBb0tDLFNBQVMsRUFBRUEsU0FBL0s7TUFBMEx4NkIsT0FBTyxFQUFFQSxPQUFuTTtNQUE0TXk2QixXQUFXLEVBQUVBLFdBQXpOO01BQXNPQyxXQUFXLEVBQUVBLFdBQW5QO01BQWdRQyxRQUFRLEVBQUVBLFFBQTFRO01BQW9SQyxTQUFTLEVBQUVBLFNBQS9SO01BQTBTQyxRQUFRLEVBQUVBLFFBQXBUO01BQThUQyxXQUFXLEVBQUVBLFdBQTNVO01BQXdWQyxXQUFXLEVBQUVBLFdBQXJXO01BQWtYQyxjQUFjLEVBQUVBLGNBQWxZO01BQWtaQyxjQUFjLEVBQUVBLGNBQWxhO01BQWtibnlCLE1BQU0sRUFBRUEsTUFBMWI7TUFBa2NveUIsaUJBQWlCLEVBQUVBLGlCQUFyZDtNQUF3ZUMsV0FBVyxFQUFFQSxXQUFyZjtNQUFrZ0JDLFNBQVMsRUFBRUEsU0FBN2dCO01BQXdoQkMsZUFBZSxFQUFFQSxlQUF6aUI7TUFBMGpCL2dDLFNBQVMsRUFBRUEsU0FBcmtCO01BQWdsQmdoQyxVQUFVLEVBQUVBLFVBQTVsQjtNQUF3bUJ6Z0MsUUFBUSxFQUFFQSxRQUFsbkI7TUFBNG5CWCxhQUFhLEVBQUVBLGFBQTNvQjtNQUEwcEJvYyxRQUFRLEVBQUVBLFFBQXBxQjtNQUE4cUJvbEIsU0FBUyxFQUFFQSxTQUF6ckI7TUFBb3NCN0MsZUFBZSxFQUFFQSxlQUFydEI7TUFBc3VCdmxCLGFBQWEsRUFBRUEsYUFBcnZCO01BQW93QmIsaUJBQWlCLEVBQUVBLGlCQUF2eEI7TUFBMHlCNmxCLGVBQWUsRUFBRUEsZUFBM3pCO01BQTQwQkcsK0JBQStCLEVBQUVBLCtCQUE3MkI7TUFBODRCb0QsY0FBYyxFQUFFQSxjQUE5NUI7TUFBODZCRSxXQUFXLEVBQUVBLFdBQTM3QjtNQUF3OEJKLG9CQUFvQixFQUFFQSxvQkFBOTlCO01BQW8vQnhRLGdCQUFnQixFQUFFQSxnQkFBdGdDO01BQXdoQ3dPLFdBQVcsRUFBRUEsV0FBcmlDO01BQWtqQ3FDLFVBQVUsRUFBRUEsVUFBOWpDO01BQTBrQ0ssUUFBUSxFQUFFQSxRQUFwbEM7TUFBOGxDRCxhQUFhLEVBQUVBLGFBQTdtQztNQUE0bkNGLFlBQVksRUFBRUEsWUFBMW9DO01BQXdwQ0ksZUFBZSxFQUFFQSxlQUF6cUM7TUFBMHJDQyxVQUFVLEVBQUVBLFVBQXRzQztNQUFrdENKLGNBQWMsRUFBRUEsY0FBbHVDO01BQWt2Q08sZUFBZSxFQUFFQSxlQUFud0M7TUFBb3hDQyxVQUFVLEVBQUVBLFVBQWh5QztNQUE0eUNuVCxJQUFJLEVBQUVBLElBQWx6QztNQUF3ekNvVCxnQkFBZ0IsRUFBRUEsZ0JBQTEwQztNQUE0MUN6akIsVUFBVSxFQUFFQSxVQUF4MkM7TUFBbzNDMGpCLGVBQWUsRUFBRUEsZUFBcjRDO01BQXM1Q3RFLGFBQWEsRUFBRUEsYUFBcjZDO01BQW83Q3dFLFdBQVcsRUFBRUEsV0FBajhDO01BQTg4Q3Y3QixNQUFNLEVBQUV6QixZQUFZLFdBQWwrQztNQUE0K0NoSyxLQUFLLEVBQUUvRixrQkFBa0IsV0FBcmdEO01BQStnRGt0QyxVQUFVLEVBQUV0ekMsZ0JBQWdCLFdBQTNpRDtNQUFxakRpbUIsV0FBVyxFQUFFZixhQUFhLFdBQS9rRDtNQUF5bEQ0RixVQUFVLEVBQUVQLHFCQUFxQixXQUExbkQ7TUFBb29EbVksZUFBZSxFQUFFMUIscUJBQXFCO0lBQTFxRCxDQUFuQjtJQUNBeGhDLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQjhELFlBQXRCLEVBQW9DLGlCQUFwQyxFQUF1RDtNQUFFRyxVQUFVLEVBQUUsS0FBZDtNQUFxQi9ELEtBQUssRUFBRTtJQUE1QixDQUF2RDtJQUNBLE9BQU80RCxZQUFQO0VBQ0g7QUFsYndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ2xFYTs7QUFDYixJQUFJbEUsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHRCxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlzVyxZQUFZLEdBQUc5VyxlQUFlLENBQUNRLG1CQUFPLENBQUMsZ0ZBQUQsQ0FBUixDQUFsQzs7QUFDQSxJQUFJdUcsa0JBQWtCLEdBQUcvRyxlQUFlLENBQUNRLG1CQUFPLENBQUMsc0ZBQUQsQ0FBUixDQUF4Qzs7QUFDQSxJQUFJSSxPQUFPLEdBQUdaLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0Q0FBRCxDQUFSLENBQTdCOztBQUNBLElBQUlHLGdCQUFnQixHQUFHWCxlQUFlLENBQUNRLG1CQUFPLENBQUMsa0ZBQUQsQ0FBUixDQUF0Qzs7QUFDQSxJQUFJcXBDLFlBQVksR0FBRzdwQyxlQUFlLENBQUNRLG1CQUFPLENBQUMsNkVBQUQsQ0FBUixDQUFsQzs7QUFDQSxJQUFJcWxCLGFBQWEsR0FBRzdsQixlQUFlLENBQUNRLG1CQUFPLENBQUMscUZBQUQsQ0FBUixDQUFuQzs7QUFDQSxJQUFJcUcsTUFBTSxHQUFHckcsbUJBQU8sQ0FBQywyREFBRCxDQUFwQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLGFBRGlDO0VBRXpDa0csS0FBSyxFQUFFO0lBQ0hDLElBQUksRUFBRTtNQUFFQyxJQUFJLEVBQUVoSCxNQUFSO01BQWdCaUgsUUFBUSxFQUFFO0lBQTFCLENBREg7SUFFSDhzQyxrQkFBa0IsRUFBRTtNQUFFL3NDLElBQUksRUFBRWhILE1BQVI7TUFBZ0JpSCxRQUFRLEVBQUU7SUFBMUI7RUFGakIsQ0FGa0M7RUFNekNwRyxLQUFLLEVBQUUsZUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUI7SUFDMUIsSUFBSUMsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQ0FBLE1BQU07SUFDTixJQUFJOEYsS0FBSyxHQUFHaEcsT0FBWjtJQUNBLElBQUk0RyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSXFQLFNBQVMsR0FBRyxDQUFDLEdBQUcxVyxLQUFLLENBQUM4SCxRQUFWLEVBQW9CO01BQ2hDa0csVUFBVSxFQUFFLEtBRG9CO01BRWhDMUUsT0FBTyxFQUFFLEVBRnVCO01BR2hDNUMsSUFBSSxFQUFFO0lBSDBCLENBQXBCLENBQWhCO0lBS0EsSUFBSXVRLGVBQWUsR0FBRyxDQUFDLEdBQUdqWCxLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQXRCO0lBQ0EsSUFBSTR5QyxlQUFlLEdBQUcsQ0FBQyxHQUFHMXpDLEtBQUssQ0FBQ2MsR0FBVixFQUFlLEtBQWYsQ0FBdEI7SUFDQSxJQUFJNnlDLGdCQUFnQixHQUFHLENBQUMsR0FBRzN6QyxLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQXZCO0lBQ0EsSUFBSTh5QyxtQkFBbUIsR0FBRyxDQUFDLEdBQUc1ekMsS0FBSyxDQUFDYyxHQUFWLEVBQWUsS0FBZixDQUExQjtJQUNBLElBQUkreUMsZUFBZSxHQUFHLENBQUMsR0FBRzd6QyxLQUFLLENBQUNjLEdBQVYsRUFBZSxLQUFmLENBQXRCO0lBQ0EsSUFBSWd6QyxtQkFBbUIsR0FBRyxDQUFDLEdBQUc5ekMsS0FBSyxDQUFDYyxHQUFWLEVBQWUsS0FBZixDQUExQjtJQUNBLElBQUlpekMsUUFBUSxHQUFHLENBQUMsR0FBRy96QyxLQUFLLENBQUM4SCxRQUFWLEVBQW9CO01BQUVrc0MsU0FBUyxFQUFFO0lBQWIsQ0FBcEIsQ0FBZjtJQUNBLENBQUMsR0FBR2gwQyxLQUFLLENBQUNnQixTQUFWLEVBQXFCLFlBQVk7TUFDN0J0QixNQUFNLENBQUNvUSxNQUFQLENBQWNpa0MsUUFBZCxFQUF3QnZ0QyxLQUFLLENBQUNDLElBQTlCO01BQ0FzdEMsUUFBUSxDQUFDQyxTQUFULEdBQXFCRCxRQUFRLENBQUNDLFNBQVQsQ0FBbUJ4NkIsV0FBbkIsRUFBckI7SUFDSCxDQUhEO0lBSUEsSUFBSW9ULFFBQVEsR0FBRyxDQUFDLEdBQUc1c0IsS0FBSyxDQUFDOEgsUUFBVixFQUFvQjtNQUMvQitwQyxRQUFRLEVBQUVyckMsS0FBSyxDQUFDQyxJQUFOLENBQVdvckMsUUFEVTtNQUUvQkMsU0FBUyxFQUFFdHJDLEtBQUssQ0FBQ0MsSUFBTixDQUFXcXJDLFNBRlM7TUFHL0I5SSxLQUFLLEVBQUV4aUMsS0FBSyxDQUFDQyxJQUFOLENBQVd1aUMsS0FIYTtNQUkvQmlMLG1CQUFtQixFQUFFenRDLEtBQUssQ0FBQ0MsSUFBTixDQUFXd3RDO0lBSkQsQ0FBcEIsQ0FBZjtJQU1BLElBQUlDLGFBQWEsR0FBRyxDQUFDLEdBQUdsMEMsS0FBSyxDQUFDOEgsUUFBVixFQUFvQjtNQUNwQytwQyxRQUFRLEVBQUUsRUFEMEI7TUFFcENDLFNBQVMsRUFBRSxFQUZ5QjtNQUdwQzlJLEtBQUssRUFBRSxFQUg2QjtNQUlwQ2lMLG1CQUFtQixFQUFFO0lBSmUsQ0FBcEIsQ0FBcEI7SUFNQSxJQUFJMUIsWUFBWSxHQUFHLENBQUMsR0FBR3Z5QyxLQUFLLENBQUM4SCxRQUFWLEVBQW9CO01BQ25DcXNDLGdCQUFnQixFQUFFLEVBRGlCO01BRW5DN0ssUUFBUSxFQUFFLEVBRnlCO01BR25DQyxxQkFBcUIsRUFBRTtJQUhZLENBQXBCLENBQW5CO0lBS0EsSUFBSTZLLGlCQUFpQixHQUFHLENBQUMsR0FBR3AwQyxLQUFLLENBQUM4SCxRQUFWLEVBQW9CO01BQ3hDcXNDLGdCQUFnQixFQUFFLEVBRHNCO01BRXhDN0ssUUFBUSxFQUFFLEVBRjhCO01BR3hDQyxxQkFBcUIsRUFBRTtJQUhpQixDQUFwQixDQUF4QjtJQUtBLElBQUkzZixhQUFhLEdBQUcsQ0FBQyxHQUFHeGpCLE1BQU0sQ0FBQ3lqQixjQUFYLEVBQTJCblQsU0FBM0IsRUFBc0MsWUFBWTtNQUFFLE9BQU9vVCxTQUFQO0lBQW1CLENBQXZFLEVBQXlFO01BQ3pGQyxLQUFLLEVBQUU7SUFEa0YsQ0FBekUsRUFFakJILGFBRkg7SUFHQSxDQUFDLEdBQUc1cEIsS0FBSyxDQUFDOEksS0FBVixFQUFpQixZQUFZO01BQUUsT0FBTzROLFNBQVMsQ0FBQzFJLFVBQWpCO0lBQThCLENBQTdELEVBQStELFlBQVk7TUFDdkV6RSxVQUFVLENBQUMsWUFBWTtRQUNuQm1OLFNBQVMsQ0FBQzFJLFVBQVYsR0FBdUIsS0FBdkI7UUFDQSthLGlCQUFpQjtNQUNwQixDQUhTLEVBR1AsS0FITyxDQUFWO0lBSUgsQ0FMRDs7SUFNQSxJQUFJQSxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQW9CLEdBQVk7TUFDaENhLGFBQWEsQ0FBQyxZQUFZO1FBQ3RCbFQsU0FBUyxDQUFDcE4sT0FBVixHQUFvQixFQUFwQjtNQUNILENBRlksQ0FBYjtJQUdILENBSkQ7O0lBS0EsSUFBSTROLHVCQUF1QixHQUFHLFNBQTFCQSx1QkFBMEIsR0FBWTtNQUN0Q0QsZUFBZSxDQUFDcFgsS0FBaEIsR0FBd0IsSUFBeEI7TUFDQU0sT0FBTyxXQUFQLENBQ0srSyxJQURMLENBQ1UsMEJBRFYsRUFFS25KLElBRkwsQ0FFVSxVQUFVQyxHQUFWLEVBQWU7UUFDckIsSUFBSXZCLEVBQUo7O1FBQ0FpVyxTQUFTLENBQUMxSSxVQUFWLEdBQXVCLElBQXZCO1FBQ0EwSSxTQUFTLENBQUNwTixPQUFWLEdBQW9CLENBQUM3SSxFQUFFLEdBQUd1QixHQUFHLENBQUNLLElBQUosQ0FBU2lILE9BQWYsTUFBNEIsSUFBNUIsSUFBb0M3SSxFQUFFLEtBQUssS0FBSyxDQUFoRCxHQUFvREEsRUFBcEQsR0FBeUQsRUFBN0U7UUFDQWlXLFNBQVMsQ0FBQ2hRLElBQVYsR0FBaUIxRSxHQUFHLENBQUNLLElBQUosQ0FBU2UsT0FBMUI7UUFDQTZULGVBQWUsQ0FBQ3BYLEtBQWhCLEdBQXdCLEtBQXhCO01BQ0gsQ0FSRCxXQVNXLFVBQVVzTyxLQUFWLEVBQWlCO1FBQ3hCLElBQUkxTixFQUFKOztRQUNBaVcsU0FBUyxDQUFDMUksVUFBVixHQUF1QixJQUF2QjtRQUNBMEksU0FBUyxDQUFDcE4sT0FBVixHQUFvQixDQUFDN0ksRUFBRSxHQUFHME4sS0FBSyxDQUFDOUwsSUFBTixDQUFXaUgsT0FBakIsTUFBOEIsSUFBOUIsSUFBc0M3SSxFQUFFLEtBQUssS0FBSyxDQUFsRCxHQUFzREEsRUFBdEQsR0FBMkQsRUFBL0U7UUFDQWlXLFNBQVMsQ0FBQ2hRLElBQVYsR0FBaUIsS0FBakI7UUFDQXVRLGVBQWUsQ0FBQ3BYLEtBQWhCLEdBQXdCLEtBQXhCO01BQ0gsQ0FmRDtJQWdCSCxDQWxCRDs7SUFtQkEsSUFBSXcwQyxjQUFjLEdBQUcsU0FBakJBLGNBQWlCLEdBQVk7TUFDN0IsSUFBSTV6QyxFQUFKLEVBQVF5RyxFQUFSLEVBQVkrQixFQUFaOztNQUNBZ08sZUFBZSxDQUFDcFgsS0FBaEIsR0FBd0IsSUFBeEI7TUFDQSxJQUFJeTBDLGdCQUFnQixHQUFHO1FBQ25CSCxnQkFBZ0IsRUFBRSxDQUFDLEdBQUcvSyxZQUFZLFdBQWhCLEVBQTBCbUosWUFBWSxDQUFDNEIsZ0JBQXZDLEVBQXlELENBQUMxekMsRUFBRSxHQUFHZ3BDLE1BQU4sTUFBMEMsSUFBMUMsSUFBa0RocEMsRUFBRSxLQUFLLEtBQUssQ0FBOUQsR0FBa0VBLEVBQWxFLEdBQXVFLEVBQWhJLENBREM7UUFFbkI2b0MsUUFBUSxFQUFFLENBQUMsR0FBR0YsWUFBWSxXQUFoQixFQUEwQm1KLFlBQVksQ0FBQ2pKLFFBQXZDLEVBQWlELENBQUNwaUMsRUFBRSxHQUFHdWlDLE1BQU4sTUFBMEMsSUFBMUMsSUFBa0R2aUMsRUFBRSxLQUFLLEtBQUssQ0FBOUQsR0FBa0VBLEVBQWxFLEdBQXVFLEVBQXhILENBRlM7UUFHbkJxaUMscUJBQXFCLEVBQUUsQ0FBQyxHQUFHSCxZQUFZLFdBQWhCLEVBQTBCbUosWUFBWSxDQUFDaEoscUJBQXZDLEVBQThELENBQUN0Z0MsRUFBRSxHQUFHd2dDLE1BQU4sTUFBMEMsSUFBMUMsSUFBa0R4Z0MsRUFBRSxLQUFLLEtBQUssQ0FBOUQsR0FBa0VBLEVBQWxFLEdBQXVFLEVBQXJJLENBSEo7UUFJbkJzckMsU0FBUyxFQUFFO01BSlEsQ0FBdkI7TUFNQXAwQyxPQUFPLFdBQVAsQ0FDSytLLElBREwsQ0FDVSxrQkFEVixFQUM4Qm9wQyxnQkFEOUIsRUFFS3Z5QyxJQUZMLENBRVUsVUFBVUMsR0FBVixFQUFlO1FBQ3JCMFUsU0FBUyxDQUFDMUksVUFBVixHQUF1QixJQUF2QjtRQUNBMEksU0FBUyxDQUFDcE4sT0FBVixHQUFvQnRILEdBQUcsQ0FBQ0ssSUFBSixDQUFTaUgsT0FBN0I7UUFDQW9OLFNBQVMsQ0FBQ2hRLElBQVYsR0FBaUIxRSxHQUFHLENBQUNLLElBQUosQ0FBU2UsT0FBMUI7UUFDQTZULGVBQWUsQ0FBQ3BYLEtBQWhCLEdBQXdCLEtBQXhCOztRQUNBLElBQUltQyxHQUFHLENBQUNLLElBQUosQ0FBU2UsT0FBYixFQUFzQjtVQUNsQnV3QyxnQkFBZ0IsQ0FBQzl6QyxLQUFqQixHQUF5QixLQUF6Qjs7VUFDQSxLQUFLLElBQUk4SyxHQUFULElBQWdCeXBDLGlCQUFoQixFQUFtQztZQUMvQkEsaUJBQWlCLENBQUN6cEMsR0FBRCxDQUFqQixHQUF5QixFQUF6QjtVQUNIO1FBQ0osQ0FMRCxNQU1LO1VBQ0QsS0FBSyxJQUFJQSxHQUFULElBQWdCM0ksR0FBRyxDQUFDSyxJQUFKLENBQVM4WixNQUF6QixFQUFpQztZQUM3Qmk0QixpQkFBaUIsQ0FBQ3pwQyxHQUFELENBQWpCLEdBQXlCM0ksR0FBRyxDQUFDSyxJQUFKLENBQVM4WixNQUFULENBQWdCeFIsR0FBaEIsRUFBcUIsQ0FBckIsQ0FBekI7VUFDSDtRQUNKO01BQ0osQ0FsQkQsV0FtQlcsVUFBVXdELEtBQVYsRUFBaUI7UUFDeEJ1SSxTQUFTLENBQUMxSSxVQUFWLEdBQXVCLElBQXZCO1FBQ0EwSSxTQUFTLENBQUNwTixPQUFWLEdBQW9CNkUsS0FBSyxDQUFDOUwsSUFBTixDQUFXaUgsT0FBL0I7UUFDQW9OLFNBQVMsQ0FBQ2hRLElBQVYsR0FBaUIsS0FBakI7UUFDQXVRLGVBQWUsQ0FBQ3BYLEtBQWhCLEdBQXdCLEtBQXhCO01BQ0gsQ0F4QkQsYUF5QmEsWUFBWTtRQUNyQm9YLGVBQWUsQ0FBQ3BYLEtBQWhCLEdBQXdCLEtBQXhCO01BQ0gsQ0EzQkQ7SUE0QkgsQ0FyQ0Q7O0lBc0NBLElBQUkyMEMsYUFBYSxHQUFHLFNBQWhCQSxhQUFnQixHQUFZO01BQzVCdjlCLGVBQWUsQ0FBQ3BYLEtBQWhCLEdBQXdCLElBQXhCO01BQ0FNLE9BQU8sV0FBUCxDQUNLK0ssSUFETCxDQUNVLGlCQURWLEVBQzZCMGhCLFFBRDdCLEVBRUs3cUIsSUFGTCxDQUVVLFVBQVVDLEdBQVYsRUFBZTtRQUNyQjBVLFNBQVMsQ0FBQzFJLFVBQVYsR0FBdUIsSUFBdkI7UUFDQTBJLFNBQVMsQ0FBQ3BOLE9BQVYsR0FBb0J0SCxHQUFHLENBQUNLLElBQUosQ0FBU2lILE9BQTdCO1FBQ0FvTixTQUFTLENBQUNoUSxJQUFWLEdBQWlCMUUsR0FBRyxDQUFDSyxJQUFKLENBQVNlLE9BQTFCO1FBQ0E2VCxlQUFlLENBQUNwWCxLQUFoQixHQUF3QixLQUF4Qjs7UUFDQSxJQUFJbUMsR0FBRyxDQUFDSyxJQUFKLENBQVNlLE9BQWIsRUFBc0I7VUFDbEJzd0MsZUFBZSxDQUFDN3pDLEtBQWhCLEdBQXdCLEtBQXhCOztVQUNBLEtBQUssSUFBSThLLEdBQVQsSUFBZ0J1cEMsYUFBaEIsRUFBK0I7WUFDM0JBLGFBQWEsQ0FBQ3ZwQyxHQUFELENBQWIsR0FBcUIsRUFBckI7VUFDSDs7VUFDRCxLQUFLLElBQUlBLEdBQVQsSUFBZ0JpaUIsUUFBaEIsRUFBMEI7WUFDdEJtbkIsUUFBUSxDQUFDcHBDLEdBQUQsQ0FBUixHQUFnQmlpQixRQUFRLENBQUNqaUIsR0FBRCxDQUF4QjtVQUNIO1FBQ0osQ0FSRCxNQVNLO1VBQ0QsS0FBSyxJQUFJQSxHQUFULElBQWdCM0ksR0FBRyxDQUFDSyxJQUFKLENBQVM4WixNQUF6QixFQUFpQztZQUM3QiszQixhQUFhLENBQUN2cEMsR0FBRCxDQUFiLEdBQXFCM0ksR0FBRyxDQUFDSyxJQUFKLENBQVM4WixNQUFULENBQWdCeFIsR0FBaEIsRUFBcUIsQ0FBckIsQ0FBckI7VUFDSDtRQUNKO01BQ0osQ0FyQkQsV0FzQlcsVUFBVXdELEtBQVYsRUFBaUI7UUFDeEJ1SSxTQUFTLENBQUMxSSxVQUFWLEdBQXVCLElBQXZCO1FBQ0EwSSxTQUFTLENBQUNwTixPQUFWLEdBQW9CNkUsS0FBSyxDQUFDOUwsSUFBTixDQUFXaUgsT0FBL0I7UUFDQW9OLFNBQVMsQ0FBQ2hRLElBQVYsR0FBaUIsS0FBakI7UUFDQXVRLGVBQWUsQ0FBQ3BYLEtBQWhCLEdBQXdCLEtBQXhCO01BQ0gsQ0EzQkQsYUE0QmEsWUFBWTtRQUNyQm9YLGVBQWUsQ0FBQ3BYLEtBQWhCLEdBQXdCLEtBQXhCO01BQ0gsQ0E5QkQ7SUErQkgsQ0FqQ0Q7O0lBa0NBLElBQUk0RCxZQUFZLEdBQUc7TUFBRTJELFNBQVMsRUFBRUEsU0FBYjtNQUF3QlosS0FBSyxFQUFFQSxLQUEvQjtNQUFzQ2tRLFNBQVMsRUFBRUEsU0FBakQ7TUFBNERPLGVBQWUsRUFBRUEsZUFBN0U7TUFBOEZ5OEIsZUFBZSxFQUFFQSxlQUEvRztNQUFnSUMsZ0JBQWdCLEVBQUVBLGdCQUFsSjtNQUFvS0MsbUJBQW1CLEVBQUVBLG1CQUF6TDtNQUE4TUMsZUFBZSxFQUFFQSxlQUEvTjtNQUFnUEMsbUJBQW1CLEVBQUVBLG1CQUFyUTtNQUEwUkMsUUFBUSxFQUFFQSxRQUFwUztNQUE4U25uQixRQUFRLEVBQUVBLFFBQXhUO01BQWtVc25CLGFBQWEsRUFBRUEsYUFBalY7TUFBZ1czQixZQUFZLEVBQUVBLFlBQTlXO01BQTRYNkIsaUJBQWlCLEVBQUVBLGlCQUEvWTtNQUFrYXhxQixhQUFhLEVBQUVBLGFBQWpiO01BQWdjYixpQkFBaUIsRUFBRUEsaUJBQW5kO01BQXNlN1IsdUJBQXVCLEVBQUVBLHVCQUEvZjtNQUF3aEJtOUIsY0FBYyxFQUFFQSxjQUF4aUI7TUFBd2pCRyxhQUFhLEVBQUVBLGFBQXZrQjtNQUFzbEJsMUIsVUFBVSxFQUFFdGYsS0FBSyxDQUFDc2YsVUFBeG1CO01BQW9uQnhILE1BQU0sRUFBRXpCLFlBQVksV0FBeG9CO01BQWtwQmhLLEtBQUssRUFBRS9GLGtCQUFrQixXQUEzcUI7TUFBcXJCa3RDLFVBQVUsRUFBRXR6QyxnQkFBZ0IsV0FBanRCO01BQTJ0QmltQixXQUFXLEVBQUVmLGFBQWE7SUFBcnZCLENBQW5CO0lBQ0ExbEIsTUFBTSxDQUFDQyxjQUFQLENBQXNCOEQsWUFBdEIsRUFBb0MsaUJBQXBDLEVBQXVEO01BQUVHLFVBQVUsRUFBRSxLQUFkO01BQXFCL0QsS0FBSyxFQUFFO0lBQTVCLENBQXZEO0lBQ0EsT0FBTzRELFlBQVA7RUFDSDtBQTdKd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDZmE7O0FBQ2IvRCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDRSxLQUFLLEVBQUUsaUJBQVk7SUFDZixJQUFJNkcsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLE9BQU87TUFBRUQsU0FBUyxFQUFFQTtJQUFiLENBQVA7RUFDSDtBQUp3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNKYTs7QUFDYjFILDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNtRyxLQUFLLEVBQUU7SUFDSHdpQyxLQUFLLEVBQUU7TUFBRXRpQyxJQUFJLEVBQUV1SixNQUFSO01BQWdCLFdBQVM7SUFBekI7RUFESixDQURrQztFQUl6QzFQLEtBQUssRUFBRSxlQUFVaUcsS0FBVixFQUFpQjtJQUNwQixJQUFJWSxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsT0FBTztNQUNIYixLQUFLLEVBQUVBLEtBREo7TUFFSFksU0FBUyxFQUFFQTtJQUZSLENBQVA7RUFJSDtBQVZ3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNKYTs7QUFDYixJQUFJMmQsUUFBUSxHQUFJLFFBQVEsS0FBS0EsUUFBZCxJQUEyQixZQUFZO0VBQ2xEQSxRQUFRLEdBQUdybEIsTUFBTSxDQUFDb1EsTUFBUCxJQUFpQixVQUFTNUssQ0FBVCxFQUFZO0lBQ3BDLEtBQUssSUFBSXliLENBQUosRUFBT3hSLENBQUMsR0FBRyxDQUFYLEVBQWN4SixDQUFDLEdBQUdxZixTQUFTLENBQUMvZSxNQUFqQyxFQUF5Q2tKLENBQUMsR0FBR3hKLENBQTdDLEVBQWdEd0osQ0FBQyxFQUFqRCxFQUFxRDtNQUNqRHdSLENBQUMsR0FBR3FFLFNBQVMsQ0FBQzdWLENBQUQsQ0FBYjs7TUFDQSxLQUFLLElBQUk4VixDQUFULElBQWN0RSxDQUFkO1FBQWlCLElBQUlqaEIsTUFBTSxDQUFDd2xCLFNBQVAsQ0FBaUJDLGNBQWpCLENBQWdDcGYsSUFBaEMsQ0FBcUM0YSxDQUFyQyxFQUF3Q3NFLENBQXhDLENBQUosRUFDYi9mLENBQUMsQ0FBQytmLENBQUQsQ0FBRCxHQUFPdEUsQ0FBQyxDQUFDc0UsQ0FBRCxDQUFSO01BREo7SUFFSDs7SUFDRCxPQUFPL2YsQ0FBUDtFQUNILENBUEQ7O0VBUUEsT0FBTzZmLFFBQVEsQ0FBQ2xnQixLQUFULENBQWUsSUFBZixFQUFxQm1nQixTQUFyQixDQUFQO0FBQ0gsQ0FWRDs7QUFXQSxJQUFJemxCLGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlJLE9BQU8sR0FBR1osZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRDQUFELENBQVIsQ0FBN0I7O0FBQ0EsSUFBSTAwQyx1QkFBdUIsR0FBR2wxQyxlQUFlLENBQUNRLG1CQUFPLENBQUMsc0ZBQUQsQ0FBUixDQUE3Qzs7QUFDQSxJQUFJc21CLGVBQWUsR0FBRzltQixlQUFlLENBQUNRLG1CQUFPLENBQUMsd0ZBQUQsQ0FBUixDQUFyQzs7QUFDQSxJQUFJcWxCLGFBQWEsR0FBRzdsQixlQUFlLENBQUNRLG1CQUFPLENBQUMscUZBQUQsQ0FBUixDQUFuQzs7QUFDQSxJQUFJc1csWUFBWSxHQUFHOVcsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGdGQUFELENBQVIsQ0FBbEM7O0FBQ0EsSUFBSXFwQyxZQUFZLEdBQUc3cEMsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDZFQUFELENBQVIsQ0FBbEM7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNrTSxVQUFVLEVBQUU7SUFDUm1vQyxpQkFBaUIsRUFBRUQsdUJBQXVCLFdBRGxDO0lBRVIxdEIsU0FBUyxFQUFFVixlQUFlLFdBRmxCO0lBR1JGLFdBQVcsRUFBRWYsYUFBYSxXQUhsQjtJQUlSdE4sTUFBTSxFQUFFekIsWUFBWTtFQUpaLENBRDZCO0VBT3pDN1AsS0FBSyxFQUFFO0lBQ0hxaEIsS0FBSyxFQUFFO01BQ0huaEIsSUFBSSxFQUFFaEgsTUFESDtNQUVIaUgsUUFBUSxFQUFFO0lBRlA7RUFESixDQVBrQztFQWF6Q3BHLEtBQUssRUFBRSxlQUFVaUcsS0FBVixFQUFpQjtJQUNwQixJQUFJWSxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSTlDLElBQUksR0FBRyxDQUFDLEdBQUd6RSxLQUFLLENBQUNnQixHQUFWLEVBQWUsQ0FBZixDQUFYO0lBQ0EsSUFBSTZ6QyxlQUFlLEdBQUcsQ0FBQyxHQUFHNzBDLEtBQUssQ0FBQ2dCLEdBQVYsRUFBZSxJQUFmLENBQXRCO0lBQ0EsSUFBSW1XLGVBQWUsR0FBRyxDQUFDLEdBQUduWCxLQUFLLENBQUNnQixHQUFWLEVBQWUsS0FBZixDQUF0QjtJQUNBLElBQUk4ekMsUUFBUSxHQUFHLENBQUMsR0FBRzkwQyxLQUFLLENBQUNnQixHQUFWLEVBQWUsSUFBZixDQUFmO0lBQ0EsSUFBSTZWLFNBQVMsR0FBRyxDQUFDLEdBQUc3VyxLQUFLLENBQUNnSSxRQUFWLEVBQW9CO01BQ2hDK3NDLGNBQWMsRUFBRSxFQURnQjtNQUVoQ0MsWUFBWSxFQUFFLEVBRmtCO01BR2hDM1ksT0FBTyxFQUFFLEVBSHVCO01BSWhDNFksbUJBQW1CLEVBQUUsRUFKVztNQUtoQ0MsbUJBQW1CLEVBQUUsRUFMVztNQU1oQ0MsVUFBVSxFQUFFLEVBTm9CO01BT2hDdkgsY0FBYyxFQUFFLEVBUGdCO01BUWhDd0gsVUFBVSxFQUFFLEVBUm9CO01BU2hDQyxTQUFTLEVBQUUsRUFUcUI7TUFVaEMxMEIsV0FBVyxFQUFFLEVBVm1CO01BV2hDMjBCLGFBQWEsRUFBRSxFQVhpQjtNQVloQ0MsT0FBTyxFQUFFLEVBWnVCO01BYWhDQyxPQUFPLEVBQUUsRUFidUI7TUFjaENDLE1BQU0sRUFBRSxFQWR3QjtNQWVoQ0MsaUJBQWlCLEVBQUUsRUFmYTtNQWdCaEMzRCxRQUFRLEVBQUUsRUFoQnNCO01BaUJoQ0MsU0FBUyxFQUFFLEVBakJxQjtNQWtCaEM5SSxLQUFLLEVBQUUsRUFsQnlCO01BbUJoQ00sUUFBUSxFQUFFLEVBbkJzQjtNQW9CaENDLHFCQUFxQixFQUFFO0lBcEJTLENBQXBCLENBQWhCO0lBc0JBLElBQUlrTSxTQUFTLEdBQUcsQ0FBQyxHQUFHMzFDLEtBQUssQ0FBQ2dJLFFBQVYsRUFBb0IsRUFBcEIsQ0FBaEI7SUFDQSxJQUFJOGtCLFFBQVEsR0FBRyxDQUFDLEdBQUc5c0IsS0FBSyxDQUFDZ0ksUUFBVixFQUFvQjtNQUMvQitzQyxjQUFjLEVBQUUsRUFEZTtNQUUvQkMsWUFBWSxFQUFFLEVBRmlCO01BRy9CM1ksT0FBTyxFQUFFLEVBSHNCO01BSS9CNFksbUJBQW1CLEVBQUUsRUFKVTtNQUsvQkMsbUJBQW1CLEVBQUUsRUFMVTtNQU0vQkMsVUFBVSxFQUFFLEVBTm1CO01BTy9CdkgsY0FBYyxFQUFFLEVBUGU7TUFRL0J3SCxVQUFVLEVBQUUsRUFSbUI7TUFTL0JDLFNBQVMsRUFBRSxFQVRvQjtNQVUvQjEwQixXQUFXLEVBQUUsRUFWa0I7TUFXL0IyMEIsYUFBYSxFQUFFLEVBWGdCO01BWS9CQyxPQUFPLEVBQUUsRUFac0I7TUFhL0JDLE9BQU8sRUFBRSxFQWJzQjtNQWMvQkMsTUFBTSxFQUFFLEVBZHVCO01BZS9CQyxpQkFBaUIsRUFBRSxFQWZZO01BZ0IvQjNELFFBQVEsRUFBRSxFQWhCcUI7TUFpQi9CQyxTQUFTLEVBQUUsRUFqQm9CO01Ba0IvQjlJLEtBQUssRUFBRSxFQWxCd0I7TUFtQi9CTSxRQUFRLEVBQUUsRUFuQnFCO01Bb0IvQkMscUJBQXFCLEVBQUUsRUFwQlE7TUFxQi9CaGxDLElBQUksRUFBRTtJQXJCeUIsQ0FBcEIsQ0FBZjtJQXVCQSxDQUFDLEdBQUd6RSxLQUFLLENBQUNnSixLQUFWLEVBQWlCLFlBQVk7TUFBRSxPQUFPOGpCLFFBQVEsQ0FBQ3VQLE9BQWhCO0lBQTBCLENBQXpELEVBQTJELFlBQVk7TUFDbkV2UCxRQUFRLENBQUNtb0IsbUJBQVQsR0FBK0IsRUFBL0I7SUFDSCxDQUZEOztJQUdBLFNBQVNXLE1BQVQsQ0FBZ0J6Z0MsS0FBaEIsRUFBdUI7TUFDbkJBLEtBQUssQ0FBQzBILE1BQU4sQ0FBYXZiLEtBQWIsQ0FBbUJnOEIsTUFBbkIsR0FBNEIsTUFBNUI7TUFDQW5vQixLQUFLLENBQUMwSCxNQUFOLENBQWF2YixLQUFiLENBQW1CZzhCLE1BQW5CLEdBQTRCLEdBQUczN0IsTUFBSCxDQUFVd1QsS0FBSyxDQUFDMEgsTUFBTixDQUFhZzVCLFlBQXZCLEVBQXFDLElBQXJDLENBQTVCO0lBQ0g7O0lBQ0QsQ0FBQyxHQUFHNzFDLEtBQUssQ0FBQ2dKLEtBQVYsRUFBaUIsWUFBWTtNQUFFLE9BQU8sQ0FBQzhqQixRQUFRLENBQUNtb0IsbUJBQVYsRUFBK0Jub0IsUUFBUSxDQUFDb29CLG1CQUF4QyxDQUFQO0lBQXNFLENBQXJHLEVBQXVHLFlBQVk7TUFDL0dwb0IsUUFBUSxDQUFDcW9CLFVBQVQsR0FBc0Jyb0IsUUFBUSxDQUFDbW9CLG1CQUFULEdBQ2hCbm9CLFFBQVEsQ0FBQ21vQixtQkFBVCxHQUErQixHQUEvQixHQUFxQ25vQixRQUFRLENBQUNvb0IsbUJBRDlCLEdBRWhCcG9CLFFBQVEsQ0FBQ29vQixtQkFGZjtJQUdILENBSkQsRUFJRztNQUFFamxDLElBQUksRUFBRTtJQUFSLENBSkg7SUFLQSxJQUFJZ2xDLG1CQUFtQixHQUFHLENBQUMsR0FBR2oxQyxLQUFLLENBQUN3RCxRQUFWLEVBQW9CLFlBQVk7TUFDdEQsSUFBSXN5QyxRQUFRLEdBQUdwdkMsS0FBSyxDQUFDcWhCLEtBQU4sQ0FBWWd1QixrQkFBM0I7O01BQ0EsSUFBSWpwQixRQUFRLENBQUN1UCxPQUFiLEVBQXNCO1FBQ2xCLElBQUkyWixlQUFlLEdBQUcsQ0FBQyxJQUFELEVBQU8sSUFBUCxDQUF0QjtRQUNBLE9BQU9wMkMsTUFBTSxDQUFDc1AsV0FBUCxDQUFtQnRQLE1BQU0sQ0FBQytPLE9BQVAsQ0FBZW1uQyxRQUFmLEVBQXlCam5DLE1BQXpCLENBQWdDLFVBQVVsTyxFQUFWLEVBQWM7VUFDcEUsSUFBSWtLLEdBQUcsR0FBR2xLLEVBQUUsQ0FBQyxDQUFELENBQVo7VUFDQSxPQUFPa0ssR0FBRyxDQUFDb3JDLFVBQUosQ0FBZW5wQixRQUFRLENBQUN1UCxPQUF4QixLQUNIMlosZUFBZSxDQUFDRSxJQUFoQixDQUFxQixVQUFVMXNCLENBQVYsRUFBYTtZQUFFLE9BQU8zZSxHQUFHLENBQUNvckMsVUFBSixDQUFlenNCLENBQWYsQ0FBUDtVQUEyQixDQUEvRCxDQURKO1FBRUgsQ0FKeUIsQ0FBbkIsQ0FBUDtNQUtILENBUEQsTUFRSztRQUNELE9BQU9zc0IsUUFBUDtNQUNIO0lBQ0osQ0FieUIsQ0FBMUI7SUFjQSxJQUFJSyxXQUFXLEdBQUcsQ0FBQyxHQUFHbjJDLEtBQUssQ0FBQ3dELFFBQVYsRUFBb0IsWUFBWTtNQUM5QyxPQUFPLFVBQVU0eUMsU0FBVixFQUFxQkMsU0FBckIsRUFBZ0M7UUFDbkMsT0FBUSxDQUFDRCxTQUFTLEtBQUssTUFBZCxJQUNMQSxTQUFTLEtBQUssVUFEVCxJQUVMQSxTQUFTLEtBQUssT0FGVixLQUdKQyxTQUFTLElBQUksWUFIakI7TUFJSCxDQUxEO0lBTUgsQ0FQaUIsQ0FBbEI7SUFRQSxJQUFJQyxTQUFTLEdBQUcsQ0FBQyxHQUFHdDJDLEtBQUssQ0FBQ3dELFFBQVYsRUFBb0IsWUFBWTtNQUM1QyxPQUFPLFVBQVUreUMsUUFBVixFQUFvQjtRQUN2QixPQUFPckosUUFBUSxDQUFDcUosUUFBUSxDQUFDMTRCLFFBQVQsRUFBRCxDQUFSLEtBQWtDcFosSUFBSSxDQUFDMUUsS0FBOUM7TUFDSCxDQUZEO0lBR0gsQ0FKZSxDQUFoQjtJQUtBO0FBQ1I7QUFDQTs7SUFDUSxJQUFJeTJDLFlBQVksR0FBRyxDQUFDLEdBQUd4MkMsS0FBSyxDQUFDZ0ksUUFBVixFQUFvQjtNQUNuQyxHQUFHO1FBQ0NrUSxLQUFLLEVBQUU1USxTQUFTLENBQUNtdkMsWUFBVixDQUF1Qiw2QkFBdkIsQ0FEUjtRQUVDQyxXQUFXLEVBQUUsS0FGZDtRQUdDLzFCLFdBQVcsRUFBRXJaLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLG1DQUF2QixDQUhkO1FBSUNFLFVBQVUsRUFBRXJ2QyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QixrQ0FBdkIsQ0FKYjtRQUtDRyxNQUFNLEVBQUU7VUFDSjdCLGNBQWMsRUFBRTtZQUNaN3ZDLEtBQUssRUFBRW9DLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLHNCQUF2QixDQURLO1lBRVo3dEMsSUFBSSxFQUFFLGdCQUZNO1lBR1ppdUMsV0FBVyxFQUFFdnZDLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLDRCQUF2QixDQUhEO1lBSVpqdUMsRUFBRSxFQUFFLGdCQUpRO1lBS1ozQixRQUFRLEVBQUUsSUFMRTtZQU1aOHZDLFVBQVUsRUFBRXJ2QyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QiwyQkFBdkIsQ0FOQTtZQU9aN3ZDLElBQUksRUFBRSxNQVBNO1lBUVosU0FBTyx5QkFSSztZQVNaa3dDLFNBQVMsRUFBRTtVQVRDLENBRFo7VUFZSjlCLFlBQVksRUFBRTtZQUNWOXZDLEtBQUssRUFBRW9DLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLG9CQUF2QixDQURHO1lBRVY3dEMsSUFBSSxFQUFFLGNBRkk7WUFHVml1QyxXQUFXLEVBQUV2dkMsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIsMEJBQXZCLENBSEg7WUFJVmp1QyxFQUFFLEVBQUUsY0FKTTtZQUtWM0IsUUFBUSxFQUFFLElBTEE7WUFNVjh2QyxVQUFVLEVBQUVydkMsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIseUJBQXZCLENBTkY7WUFPVjd2QyxJQUFJLEVBQUUsTUFQSTtZQVFWLFNBQU8sY0FSRztZQVNWa3dDLFNBQVMsRUFBRTtVQVRELENBWlY7VUF1Qkp6YSxPQUFPLEVBQUU7WUFDTG4zQixLQUFLLEVBQUVvQyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QixlQUF2QixDQURGO1lBRUw3dEMsSUFBSSxFQUFFLFNBRkQ7WUFHTGl1QyxXQUFXLEVBQUV2dkMsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIscUJBQXZCLENBSFI7WUFJTGp1QyxFQUFFLEVBQUUsZ0JBSkM7WUFLTDNCLFFBQVEsRUFBRSxLQUxMO1lBTUxELElBQUksRUFBRSxRQU5EO1lBT0wrdkMsVUFBVSxFQUFFcnZDLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLG9CQUF2QixDQVBQO1lBUUwvWSxPQUFPLEVBQUVoM0IsS0FBSyxDQUFDcWhCLEtBQU4sQ0FBWXNVLE9BUmhCO1lBU0wsU0FBTyx1QkFURjtZQVVMeWEsU0FBUyxFQUFFO1VBVk4sQ0F2Qkw7VUFtQ0o3QixtQkFBbUIsRUFBRTtZQUNqQi92QyxLQUFLLEVBQUVvQyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QiwrQkFBdkIsQ0FEVTtZQUVqQjd0QyxJQUFJLEVBQUUscUJBRlc7WUFHakJpdUMsV0FBVyxFQUFFdnZDLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLHFDQUF2QixDQUhJO1lBSWpCanVDLEVBQUUsRUFBRSxxQkFKYTtZQUtqQjNCLFFBQVEsRUFBRSxJQUxPO1lBTWpCOHZDLFVBQVUsRUFBRXJ2QyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QixvQ0FBdkIsQ0FOSztZQU9qQjd2QyxJQUFJLEVBQUUsUUFQVztZQVFqQjgyQixPQUFPLEVBQUV1WCxtQkFSUTtZQVNqQixTQUFPLHVCQVRVO1lBVWpCNkIsU0FBUyxFQUFFO1VBVk0sQ0FuQ2pCO1VBK0NKNUIsbUJBQW1CLEVBQUU7WUFDakJod0MsS0FBSyxFQUFFb0MsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIsMkJBQXZCLENBRFU7WUFFakI3dEMsSUFBSSxFQUFFLHFCQUZXO1lBR2pCaXVDLFdBQVcsRUFBRXZ2QyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QixpQ0FBdkIsQ0FISTtZQUlqQmp1QyxFQUFFLEVBQUUscUJBSmE7WUFLakIzQixRQUFRLEVBQUUsSUFMTztZQU1qQjh2QyxVQUFVLEVBQUVydkMsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIsZ0NBQXZCLENBTks7WUFPakI3dkMsSUFBSSxFQUFFLE1BUFc7WUFRakIsU0FBTyxjQVJVO1lBU2pCa3dDLFNBQVMsRUFBRSxHQUFHbjFDLE1BQUgsQ0FBVTJGLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLFFBQXZCLENBQVYsRUFBNEMsU0FBNUM7VUFUTSxDQS9DakI7VUEwREp0QixVQUFVLEVBQUU7WUFDUmp3QyxLQUFLLEVBQUVvQyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QiwyQkFBdkIsQ0FEQztZQUVSN3RDLElBQUksRUFBRSxZQUZFO1lBR1JpdUMsV0FBVyxFQUFFLEVBSEw7WUFJUnJ1QyxFQUFFLEVBQUUsWUFKSTtZQUtSM0IsUUFBUSxFQUFFLElBTEY7WUFNUjh2QyxVQUFVLEVBQUVydkMsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIsZ0NBQXZCLENBTko7WUFPUjd2QyxJQUFJLEVBQUUsTUFQRTtZQVFSLFNBQU8sY0FSQztZQVNSa3dDLFNBQVMsRUFBRXh2QyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QiwrQkFBdkI7VUFUSCxDQTFEUjtVQXFFSjdJLGNBQWMsRUFBRTtZQUNaMW9DLEtBQUssRUFBRW9DLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLHNCQUF2QixDQURLO1lBRVo3dEMsSUFBSSxFQUFFLGdCQUZNO1lBR1ppdUMsV0FBVyxFQUFFdnZDLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLDRCQUF2QixDQUhEO1lBSVpqdUMsRUFBRSxFQUFFLGdCQUpRO1lBS1ozQixRQUFRLEVBQUUsSUFMRTtZQU1aOHZDLFVBQVUsRUFBRXJ2QyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QiwyQkFBdkIsQ0FOQTtZQU9aN3ZDLElBQUksRUFBRSxRQVBNO1lBUVo4MkIsT0FBTyxFQUFFaDNCLEtBQUssQ0FBQ3FoQixLQUFOLENBQVlndkIsYUFSVDtZQVNaLFNBQU8sdUJBVEs7WUFVWkQsU0FBUyxFQUFFO1VBVkMsQ0FyRVo7VUFpRkoxQixVQUFVLEVBQUU7WUFDUmx3QyxLQUFLLEVBQUVvQyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QixvQkFBdkIsQ0FEQztZQUVSN3RDLElBQUksRUFBRSxZQUZFO1lBR1JpdUMsV0FBVyxFQUFFdnZDLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLDBCQUF2QixDQUhMO1lBSVJqdUMsRUFBRSxFQUFFLGNBSkk7WUFLUjNCLFFBQVEsRUFBRSxJQUxGO1lBTVI4dkMsVUFBVSxFQUFFcnZDLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLHlCQUF2QixDQU5KO1lBT1I3dkMsSUFBSSxFQUFFLFFBUEU7WUFRUjgyQixPQUFPLEVBQUVoM0IsS0FBSyxDQUFDcWhCLEtBQU4sQ0FBWWl2QixXQVJiO1lBU1IsU0FBTyx1QkFUQztZQVVSRixTQUFTLEVBQUU7VUFWSCxDQWpGUjtVQTZGSnpCLFNBQVMsRUFBRTtZQUNQbndDLEtBQUssRUFBRW9DLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLDBCQUF2QixDQURBO1lBRVA3dEMsSUFBSSxFQUFFLFdBRkM7WUFHUGl1QyxXQUFXLEVBQUUsR0FBR2wxQyxNQUFILENBQVUyRixTQUFTLENBQUNtdkMsWUFBVixDQUF1QixRQUF2QixDQUFWLEVBQTRDLHNCQUE1QyxDQUhOO1lBSVBqdUMsRUFBRSxFQUFFLG9CQUpHO1lBS1AzQixRQUFRLEVBQUUsS0FMSDtZQU1QOHZDLFVBQVUsRUFBRXJ2QyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QiwrQkFBdkIsQ0FOTDtZQU9QN3ZDLElBQUksRUFBRSxNQVBDO1lBUVAsU0FBTyx1QkFSQTtZQVNQa3dDLFNBQVMsRUFBRTtVQVRKLENBN0ZQO1VBd0dKbjJCLFdBQVcsRUFBRTtZQUNUemIsS0FBSyxFQUFFb0MsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIseUJBQXZCLENBREU7WUFFVDd0QyxJQUFJLEVBQUUsYUFGRztZQUdUaXVDLFdBQVcsRUFBRXZ2QyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QiwrQkFBdkIsQ0FISjtZQUlUanVDLEVBQUUsRUFBRSwwQkFKSztZQUtUM0IsUUFBUSxFQUFFLEtBTEQ7WUFNVDh2QyxVQUFVLEVBQUVydkMsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIsOEJBQXZCLENBTkg7WUFPVDd2QyxJQUFJLEVBQUUsVUFQRztZQVFULFNBQU8sa0NBUkU7WUFTVGt3QyxTQUFTLEVBQUU7VUFURjtRQXhHVDtNQUxULENBRGdDO01BMkhuQyxHQUFHO1FBQ0M1K0IsS0FBSyxFQUFFNVEsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIsb0JBQXZCLENBRFI7UUFFQ0MsV0FBVyxFQUFFLEtBRmQ7UUFHQy8xQixXQUFXLEVBQUVyWixTQUFTLENBQUNtdkMsWUFBVixDQUF1QixtQ0FBdkIsQ0FIZDtRQUlDRyxNQUFNLEVBQUU7VUFDSnRCLGFBQWEsRUFBRTtZQUNYcHdDLEtBQUssRUFBRW9DLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLGVBQXZCLENBREk7WUFFWDd0QyxJQUFJLEVBQUUsZUFGSztZQUdYaXVDLFdBQVcsRUFBRSxFQUhGO1lBSVhydUMsRUFBRSxFQUFFLGVBSk87WUFLWDNCLFFBQVEsRUFBRSxJQUxDO1lBTVg4dkMsVUFBVSxFQUFFcnZDLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLG9CQUF2QixDQU5EO1lBT1g3dkMsSUFBSSxFQUFFLE1BUEs7WUFRWCxTQUFPO1VBUkksQ0FEWDtVQVdKMnVDLE9BQU8sRUFBRTtZQUNMcndDLEtBQUssRUFBRW9DLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLGVBQXZCLENBREY7WUFFTDd0QyxJQUFJLEVBQUUsU0FGRDtZQUdMaXVDLFdBQVcsRUFBRSxHQUFHbDFDLE1BQUgsQ0FBVTJGLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLFFBQXZCLENBQVYsRUFBNEMsdUJBQTVDLENBSFI7WUFJTGp1QyxFQUFFLEVBQUUsU0FKQztZQUtMM0IsUUFBUSxFQUFFLEtBTEw7WUFNTDh2QyxVQUFVLEVBQUVydkMsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIsb0JBQXZCLENBTlA7WUFPTDd2QyxJQUFJLEVBQUUsTUFQRDtZQVFMLFNBQU87VUFSRixDQVhMO1VBcUJKNHVDLE9BQU8sRUFBRTtZQUNMdHdDLEtBQUssRUFBRW9DLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLGVBQXZCLENBREY7WUFFTDd0QyxJQUFJLEVBQUUsU0FGRDtZQUdMaXVDLFdBQVcsRUFBRXZ2QyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QixxQkFBdkIsQ0FIUjtZQUlManVDLEVBQUUsRUFBRSxTQUpDO1lBS0wzQixRQUFRLEVBQUUsS0FMTDtZQU1MOHZDLFVBQVUsRUFBRXJ2QyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QixvQkFBdkIsQ0FOUDtZQU9MN3ZDLElBQUksRUFBRSxVQVBEO1lBUUwsU0FBTztVQVJGO1FBckJMO01BSlQsQ0EzSGdDO01BZ0tuQyxHQUFHO1FBQ0NzUixLQUFLLEVBQUU1USxTQUFTLENBQUNtdkMsWUFBVixDQUF1QixrQ0FBdkIsQ0FEUjtRQUVDQyxXQUFXLEVBQUUsS0FGZDtRQUdDLzFCLFdBQVcsRUFBRXJaLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLHdDQUF2QixDQUhkO1FBSUNHLE1BQU0sRUFBRTtVQUNKbkIsTUFBTSxFQUFFO1lBQ0p2d0MsS0FBSyxFQUFFb0MsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIsY0FBdkIsQ0FESDtZQUVKN3RDLElBQUksRUFBRSxRQUZGO1lBR0ppdUMsV0FBVyxFQUFFdnZDLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLG9CQUF2QixDQUhUO1lBSUpqdUMsRUFBRSxFQUFFLGVBSkE7WUFLSjNCLFFBQVEsRUFBRSxJQUxOO1lBTUo4dkMsVUFBVSxFQUFFcnZDLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLG1CQUF2QixDQU5SO1lBT0o3dkMsSUFBSSxFQUFFLFFBUEY7WUFRSjgyQixPQUFPLEVBQUVoM0IsS0FBSyxDQUFDcWhCLEtBQU4sQ0FBWTB0QixNQVJqQjtZQVNKLFNBQU87VUFUSCxDQURKO1VBWUpDLGlCQUFpQixFQUFFO1lBQ2Z4d0MsS0FBSyxFQUFFb0MsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIseUJBQXZCLENBRFE7WUFFZjd0QyxJQUFJLEVBQUUsbUJBRlM7WUFHZml1QyxXQUFXLEVBQUV2dkMsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIsK0JBQXZCLENBSEU7WUFJZmp1QyxFQUFFLEVBQUUsbUJBSlc7WUFLZjNCLFFBQVEsRUFBRSxLQUxLO1lBTWY4dkMsVUFBVSxFQUFFcnZDLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLDhCQUF2QixDQU5HO1lBT2Y3dkMsSUFBSSxFQUFFLFVBUFM7WUFRZixTQUFPO1VBUlE7UUFaZjtNQUpULENBaEtnQztNQTRMbkMsR0FBRztRQUNDc1IsS0FBSyxFQUFFNVEsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIsaUNBQXZCLENBRFI7UUFFQ0MsV0FBVyxFQUFFLEtBRmQ7UUFHQy8xQixXQUFXLEVBQUVyWixTQUFTLENBQUNtdkMsWUFBVixDQUF1QixxREFBdkIsQ0FIZDtRQUlDRyxNQUFNLEVBQUU7VUFDSjdFLFFBQVEsRUFBRTtZQUNON3NDLEtBQUssRUFBRW9DLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLGdCQUF2QixDQUREO1lBRU43dEMsSUFBSSxFQUFFLFVBRkE7WUFHTml1QyxXQUFXLEVBQUV2dkMsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIsc0JBQXZCLENBSFA7WUFJTmp1QyxFQUFFLEVBQUUsVUFKRTtZQUtOM0IsUUFBUSxFQUFFLElBTEo7WUFNTjh2QyxVQUFVLEVBQUVydkMsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIscUJBQXZCLENBTk47WUFPTjd2QyxJQUFJLEVBQUUsTUFQQTtZQVFOLFNBQU8sY0FSRDtZQVNOa3dDLFNBQVMsRUFBRTtVQVRMLENBRE47VUFZSjlFLFNBQVMsRUFBRTtZQUNQOXNDLEtBQUssRUFBRW9DLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLGdCQUF2QixDQURBO1lBRVA3dEMsSUFBSSxFQUFFLFdBRkM7WUFHUGl1QyxXQUFXLEVBQUV2dkMsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIsc0JBQXZCLENBSE47WUFJUGp1QyxFQUFFLEVBQUUsV0FKRztZQUtQbXVDLFVBQVUsRUFBRSxFQUxMO1lBTVA5dkMsUUFBUSxFQUFFLElBTkg7WUFPUEQsSUFBSSxFQUFFLE1BUEM7WUFRUCxTQUFPO1VBUkEsQ0FaUDtVQXNCSnNpQyxLQUFLLEVBQUU7WUFDSGhrQyxLQUFLLEVBQUVvQyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QixxQkFBdkIsQ0FESjtZQUVIN3RDLElBQUksRUFBRSxPQUZIO1lBR0hpdUMsV0FBVyxFQUFFdnZDLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLDJCQUF2QixDQUhWO1lBSUhqdUMsRUFBRSxFQUFFLE9BSkQ7WUFLSDNCLFFBQVEsRUFBRSxJQUxQO1lBTUg4dkMsVUFBVSxFQUFFLEVBTlQ7WUFPSC92QyxJQUFJLEVBQUUsT0FQSDtZQVFILFNBQU87VUFSSixDQXRCSDtVQWdDSjRpQyxRQUFRLEVBQUU7WUFDTnRrQyxLQUFLLEVBQUVvQyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QixnQkFBdkIsQ0FERDtZQUVON3RDLElBQUksRUFBRSxVQUZBO1lBR05pdUMsV0FBVyxFQUFFdnZDLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLHNCQUF2QixDQUhQO1lBSU5qdUMsRUFBRSxFQUFFLFVBSkU7WUFLTjNCLFFBQVEsRUFBRSxJQUxKO1lBTU5pd0MsU0FBUyxFQUFFeHZDLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLG9CQUF2QixDQU5MO1lBT043dkMsSUFBSSxFQUFFLFVBUEE7WUFRTixTQUFPO1VBUkQsQ0FoQ047VUEwQ0o2aUMscUJBQXFCLEVBQUU7WUFDbkJ2a0MsS0FBSyxFQUFFb0MsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIsa0JBQXZCLENBRFk7WUFFbkI3dEMsSUFBSSxFQUFFLHVCQUZhO1lBR25CaXVDLFdBQVcsRUFBRXZ2QyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QixzQkFBdkIsQ0FITTtZQUluQmp1QyxFQUFFLEVBQUUsdUJBSmU7WUFLbkIzQixRQUFRLEVBQUUsSUFMUztZQU1uQml3QyxTQUFTLEVBQUV4dkMsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIsdUJBQXZCLENBTlE7WUFPbkI3dkMsSUFBSSxFQUFFLFVBUGE7WUFRbkIsU0FBTztVQVJZO1FBMUNuQjtNQUpULENBNUxnQztNQXNQbkMsR0FBRztRQUNDc1IsS0FBSyxFQUFFNVEsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIsMEJBQXZCLENBRFI7UUFFQ0MsV0FBVyxFQUFFLEtBRmQ7UUFHQy8xQixXQUFXLEVBQUVyWixTQUFTLENBQUNtdkMsWUFBVixDQUF1QixnQ0FBdkI7TUFIZDtJQXRQZ0MsQ0FBcEIsQ0FBbkI7SUE0UEE7QUFDUjtBQUNBOztJQUNRLFNBQVNRLHNCQUFULENBQWdDQyxhQUFoQyxFQUErQztNQUMzQ0MscUJBQXFCOztNQUNyQixLQUFLLElBQUk3RSxLQUFULElBQWtCejdCLFNBQWxCLEVBQTZCO1FBQ3pCQSxTQUFTLENBQUN5N0IsS0FBRCxDQUFULEdBQW1CNEUsYUFBYSxDQUFDNUUsS0FBRCxDQUFiLEdBQXVCNEUsYUFBYSxDQUFDNUUsS0FBRCxDQUFiLENBQXFCLENBQXJCLENBQXZCLEdBQWlELEVBQXBFO01BQ0g7SUFDSjtJQUNEO0FBQ1I7QUFDQTs7O0lBQ1EsU0FBUzZFLHFCQUFULEdBQWlDO01BQzdCLEtBQUssSUFBSTdFLEtBQVQsSUFBa0J6N0IsU0FBbEIsRUFBNkI7UUFDekJBLFNBQVMsQ0FBQ3k3QixLQUFELENBQVQsR0FBbUIsRUFBbkI7TUFDSDtJQUNKO0lBQ0Q7QUFDUjtBQUNBOzs7SUFDUSxTQUFTOEUsWUFBVCxDQUFzQkYsYUFBdEIsRUFBcUM7TUFDakMsSUFBSXQzQyxNQUFNLENBQUNrUCxNQUFQLENBQWMrSCxTQUFkLEVBQXlCd2dDLEtBQXpCLENBQStCLFVBQVV0M0MsS0FBVixFQUFpQjtRQUFFLE9BQU9BLEtBQUssS0FBSyxFQUFqQjtNQUFzQixDQUF4RSxLQUNBMEUsSUFBSSxDQUFDMUUsS0FBTCxLQUFlLENBRG5CLEVBQ3NCO1FBQ2xCSCxNQUFNLENBQUNvUSxNQUFQLENBQWMybEMsU0FBZCxFQUF5QixPQUFPdUIsYUFBUCxLQUF5QixRQUF6QixHQUNuQjtVQUFFN29DLEtBQUssRUFBRTZvQztRQUFULENBRG1CLEdBRW5CQSxhQUZOO1FBR0F6dEMsVUFBVSxDQUFDLFlBQVk7VUFDbkI2dEMsZUFBZTtRQUNsQixDQUZTLEVBRVAsS0FGTyxDQUFWO01BR0g7SUFDSjs7SUFDRCxTQUFTQSxlQUFULEdBQTJCO01BQ3ZCLEtBQUssSUFBSXQyQixHQUFULElBQWdCMjBCLFNBQWhCLEVBQTJCO1FBQ3ZCLE9BQU9BLFNBQVMsQ0FBQzMwQixHQUFELENBQWhCO01BQ0g7SUFDSjtJQUNEO0FBQ1I7QUFDQTs7O0lBQ1EsU0FBU3UyQixlQUFULEdBQTJCO01BQ3ZCLElBQUk1MkMsRUFBSixFQUFReUcsRUFBUjs7TUFDQStQLGVBQWUsQ0FBQ3BYLEtBQWhCLEdBQXdCLElBQXhCO01BQ0Erc0IsUUFBUSxDQUFDcW9CLFVBQVQsR0FBc0IsR0FBR3h6QyxNQUFILENBQVVtckIsUUFBUSxDQUFDbW9CLG1CQUFuQixFQUF3QyxHQUF4QyxFQUE2Q3R6QyxNQUE3QyxDQUFvRG1yQixRQUFRLENBQUNvb0IsbUJBQTdELENBQXRCO01BQ0Fwb0IsUUFBUSxDQUFDcm9CLElBQVQsR0FBZ0IsR0FBaEI7TUFDQSxJQUFJaWxDLElBQUksR0FBRztRQUNQRixRQUFRLEVBQUUsQ0FBQyxHQUFHRixZQUFZLFdBQWhCLEVBQTBCeGMsUUFBUSxDQUFDMGMsUUFBbkMsRUFBNkMsQ0FBQzdvQyxFQUFFLEdBQUdncEMsTUFBTixNQUEwQyxJQUExQyxJQUFrRGhwQyxFQUFFLEtBQUssS0FBSyxDQUE5RCxHQUFrRUEsRUFBbEUsR0FBdUUsRUFBcEgsQ0FESDtRQUVQOG9DLHFCQUFxQixFQUFFLENBQUMsR0FBR0gsWUFBWSxXQUFoQixFQUEwQnhjLFFBQVEsQ0FBQzJjLHFCQUFuQyxFQUEwRCxDQUFDcmlDLEVBQUUsR0FBR3VpQyxNQUFOLE1BQTBDLElBQTFDLElBQWtEdmlDLEVBQUUsS0FBSyxLQUFLLENBQTlELEdBQWtFQSxFQUFsRSxHQUF1RSxFQUFqSTtNQUZoQixDQUFYO01BSUEvRyxPQUFPLFdBQVAsQ0FDSytLLElBREwsQ0FDVSwwQkFEVixFQUNzQzZaLFFBQVEsQ0FBQ0EsUUFBUSxDQUFDLEVBQUQsRUFBSzZILFFBQUwsQ0FBVCxFQUF5QjRjLElBQXpCLENBRDlDLEVBRUt6bkMsSUFGTCxDQUVVLFVBQVVDLEdBQVYsRUFBZTtRQUNyQixJQUFJQSxHQUFHLENBQUNrbkMsT0FBSixDQUFZQyxXQUFaLENBQXdCditCLFFBQXhCLENBQWlDLFlBQWpDLENBQUosRUFBb0Q7VUFDaERuSSxNQUFNLENBQUM4SCxRQUFQLENBQWdCL0gsSUFBaEIsR0FBdUIsYUFBdkI7UUFDSDs7UUFDRCxJQUFJaUwsUUFBUSxHQUFHekwsR0FBRyxDQUFDSyxJQUFuQjtRQUNBc3lDLGVBQWUsQ0FBQzkwQyxLQUFoQixHQUF3QixJQUF4QjtRQUNBLElBQUlzYyxNQUFNLEdBQUcsQ0FBQzFPLFFBQVEsQ0FBQ3JLLE9BQVYsSUFBcUIsWUFBWXFLLFFBQWpDLEdBQTRDQSxRQUFRLENBQUMwTyxNQUFyRCxHQUE4RCxFQUEzRTtRQUNBbTZCLFlBQVksQ0FBQyxHQUFELENBQVosQ0FBa0JFLFdBQWxCLEdBQWdDLEtBQWhDOztRQUNBLElBQUkscUJBQXFCL29DLFFBQXpCLEVBQW1DO1VBQy9Ca25DLGVBQWUsQ0FBQzkwQyxLQUFoQixHQUF3QixLQUF4QjtRQUNIOztRQUNELElBQUk0TixRQUFRLENBQUNySyxPQUFiLEVBQXNCO1VBQ2xCNnpDLHFCQUFxQjtVQUNyQlgsWUFBWSxDQUFDLEdBQUQsQ0FBWixDQUFrQkUsV0FBbEIsR0FBZ0MsSUFBaEM7VUFDQWMsVUFBVSxDQUFDLENBQUQsQ0FBVjtRQUNILENBSkQsTUFLSztVQUNEUCxzQkFBc0IsQ0FBQzU2QixNQUFELENBQXRCO1VBQ0ErNkIsWUFBWSxDQUFDLzZCLE1BQUQsQ0FBWjtRQUNIOztRQUNEbEYsZUFBZSxDQUFDcFgsS0FBaEIsR0FBd0IsS0FBeEI7TUFDSCxDQXZCRCxXQXdCVyxVQUFVaWhCLEdBQVYsRUFBZTtRQUN0Qm8yQixZQUFZLENBQUNwMkIsR0FBRCxDQUFaO1FBQ0E3SixlQUFlLENBQUNwWCxLQUFoQixHQUF3QixLQUF4QjtNQUNILENBM0JEO0lBNEJIO0lBQ0Q7QUFDUjtBQUNBOzs7SUFDUSxTQUFTMDNDLHdCQUFULEdBQW9DO01BQ2hDLElBQUk5MkMsRUFBSixFQUFReUcsRUFBUjs7TUFDQStQLGVBQWUsQ0FBQ3BYLEtBQWhCLEdBQXdCLElBQXhCO01BQ0Erc0IsUUFBUSxDQUFDcm9CLElBQVQsR0FBZ0IsR0FBaEI7TUFDQSxJQUFJaWxDLElBQUksR0FBRztRQUNQRixRQUFRLEVBQUUsQ0FBQyxHQUFHRixZQUFZLFdBQWhCLEVBQTBCeGMsUUFBUSxDQUFDMGMsUUFBbkMsRUFBNkMsQ0FBQzdvQyxFQUFFLEdBQUdncEMsTUFBTixNQUEwQyxJQUExQyxJQUFrRGhwQyxFQUFFLEtBQUssS0FBSyxDQUE5RCxHQUFrRUEsRUFBbEUsR0FBdUUsRUFBcEgsQ0FESDtRQUVQOG9DLHFCQUFxQixFQUFFLENBQUMsR0FBR0gsWUFBWSxXQUFoQixFQUEwQnhjLFFBQVEsQ0FBQzJjLHFCQUFuQyxFQUEwRCxDQUFDcmlDLEVBQUUsR0FBR3VpQyxNQUFOLE1BQTBDLElBQTFDLElBQWtEdmlDLEVBQUUsS0FBSyxLQUFLLENBQTlELEdBQWtFQSxFQUFsRSxHQUF1RSxFQUFqSTtNQUZoQixDQUFYO01BSUEvRyxPQUFPLFdBQVAsQ0FDSytLLElBREwsQ0FDVSx3QkFEVixFQUNvQzZaLFFBQVEsQ0FBQ0EsUUFBUSxDQUFDLEVBQUQsRUFBSzZILFFBQUwsQ0FBVCxFQUF5QjRjLElBQXpCLENBRDVDLEVBRUt6bkMsSUFGTCxDQUVVLFVBQVVDLEdBQVYsRUFBZTtRQUNyQixJQUFJQSxHQUFHLENBQUNrbkMsT0FBSixDQUFZQyxXQUFaLENBQXdCditCLFFBQXhCLENBQWlDLFlBQWpDLENBQUosRUFBb0Q7VUFDaERuSSxNQUFNLENBQUM4SCxRQUFQLENBQWdCL0gsSUFBaEIsR0FBdUIsYUFBdkI7UUFDSDs7UUFDRCxJQUFJaUwsUUFBUSxHQUFHekwsR0FBRyxDQUFDSyxJQUFuQjtRQUNBLElBQUk4WixNQUFNLEdBQUcsQ0FBQzFPLFFBQVEsQ0FBQ3JLLE9BQVYsSUFBcUIsWUFBWXFLLFFBQWpDLEdBQTRDQSxRQUFRLENBQUMwTyxNQUFyRCxHQUE4RCxFQUEzRTtRQUNBNDZCLHNCQUFzQixDQUFDNTZCLE1BQUQsQ0FBdEI7UUFDQWxGLGVBQWUsQ0FBQ3BYLEtBQWhCLEdBQXdCLEtBQXhCO1FBQ0F5MkMsWUFBWSxDQUFDLEdBQUQsQ0FBWixDQUFrQkUsV0FBbEIsR0FBZ0MsS0FBaEM7O1FBQ0EsSUFBSS9vQyxRQUFRLENBQUNySyxPQUFiLEVBQXNCO1VBQ2xCNnpDLHFCQUFxQjtVQUNyQlgsWUFBWSxDQUFDLEdBQUQsQ0FBWixDQUFrQkUsV0FBbEIsR0FBZ0MsSUFBaEM7VUFDQWMsVUFBVSxDQUFDLENBQUQsQ0FBVjtRQUNILENBSkQsTUFLSztVQUNESixZQUFZLENBQUMvNkIsTUFBRCxDQUFaO1FBQ0g7TUFDSixDQW5CRCxXQW9CVyxVQUFVaE8sS0FBVixFQUFpQjtRQUN4QitvQyxZQUFZLENBQUMvb0MsS0FBRCxDQUFaO1FBQ0E4SSxlQUFlLENBQUNwWCxLQUFoQixHQUF3QixLQUF4QjtNQUNILENBdkJEO0lBd0JIO0lBQ0Q7QUFDUjtBQUNBOzs7SUFDUSxTQUFTMjNDLDJCQUFULEdBQXVDO01BQ25DLElBQUkvMkMsRUFBSixFQUFReUcsRUFBUjs7TUFDQStQLGVBQWUsQ0FBQ3BYLEtBQWhCLEdBQXdCLElBQXhCO01BQ0Erc0IsUUFBUSxDQUFDcm9CLElBQVQsR0FBZ0IsR0FBaEI7TUFDQSxJQUFJaWxDLElBQUksR0FBRztRQUNQRixRQUFRLEVBQUUsQ0FBQyxHQUFHRixZQUFZLFdBQWhCLEVBQTBCeGMsUUFBUSxDQUFDMGMsUUFBbkMsRUFBNkMsQ0FBQzdvQyxFQUFFLEdBQUdncEMsTUFBTixNQUEwQyxJQUExQyxJQUFrRGhwQyxFQUFFLEtBQUssS0FBSyxDQUE5RCxHQUFrRUEsRUFBbEUsR0FBdUUsRUFBcEgsQ0FESDtRQUVQOG9DLHFCQUFxQixFQUFFLENBQUMsR0FBR0gsWUFBWSxXQUFoQixFQUEwQnhjLFFBQVEsQ0FBQzJjLHFCQUFuQyxFQUEwRCxDQUFDcmlDLEVBQUUsR0FBR3VpQyxNQUFOLE1BQTBDLElBQTFDLElBQWtEdmlDLEVBQUUsS0FBSyxLQUFLLENBQTlELEdBQWtFQSxFQUFsRSxHQUF1RSxFQUFqSTtNQUZoQixDQUFYO01BSUEvRyxPQUFPLFdBQVAsQ0FDSytLLElBREwsQ0FDVSwyQkFEVixFQUN1QzZaLFFBQVEsQ0FBQ0EsUUFBUSxDQUFDLEVBQUQsRUFBSzZILFFBQUwsQ0FBVCxFQUF5QjRjLElBQXpCLENBRC9DLEVBRUt6bkMsSUFGTCxDQUVVLFVBQVVDLEdBQVYsRUFBZTtRQUNyQixJQUFJQSxHQUFHLENBQUNrbkMsT0FBSixDQUFZQyxXQUFaLENBQXdCditCLFFBQXhCLENBQWlDLFlBQWpDLENBQUosRUFBb0Q7VUFDaERuSSxNQUFNLENBQUM4SCxRQUFQLENBQWdCL0gsSUFBaEIsR0FBdUIsYUFBdkI7UUFDSDs7UUFDRCxJQUFJaUwsUUFBUSxHQUFHekwsR0FBRyxDQUFDSyxJQUFuQjtRQUNBLElBQUk4WixNQUFNLEdBQUcsQ0FBQzFPLFFBQVEsQ0FBQ3JLLE9BQVYsSUFBcUIsWUFBWXFLLFFBQWpDLEdBQTRDQSxRQUFRLENBQUMwTyxNQUFyRCxHQUE4RCxFQUEzRTtRQUNBNDZCLHNCQUFzQixDQUFDNTZCLE1BQUQsQ0FBdEI7UUFDQWxGLGVBQWUsQ0FBQ3BYLEtBQWhCLEdBQXdCLEtBQXhCO1FBQ0F5MkMsWUFBWSxDQUFDLEdBQUQsQ0FBWixDQUFrQkUsV0FBbEIsR0FBZ0MsS0FBaEM7O1FBQ0EsSUFBSS9vQyxRQUFRLENBQUNySyxPQUFiLEVBQXNCO1VBQ2xCNnpDLHFCQUFxQjtVQUNyQlgsWUFBWSxDQUFDLEdBQUQsQ0FBWixDQUFrQkUsV0FBbEIsR0FBZ0MsSUFBaEM7VUFDQWMsVUFBVSxDQUFDLENBQUQsQ0FBVjtRQUNILENBSkQsTUFLSztVQUNESixZQUFZLENBQUMvNkIsTUFBRCxDQUFaO1FBQ0g7TUFDSixDQW5CRCxXQW9CVyxVQUFVaE8sS0FBVixFQUFpQjtRQUN4QitvQyxZQUFZLENBQUMvb0MsS0FBRCxDQUFaO1FBQ0E4SSxlQUFlLENBQUNwWCxLQUFoQixHQUF3QixLQUF4QjtNQUNILENBdkJEO0lBd0JIO0lBQ0Q7QUFDUjtBQUNBOzs7SUFDUSxTQUFTb21CLFVBQVQsR0FBc0I7TUFDbEIsSUFBSXhsQixFQUFKLEVBQVF5RyxFQUFSOztNQUNBK1AsZUFBZSxDQUFDcFgsS0FBaEIsR0FBd0IsSUFBeEI7TUFDQStzQixRQUFRLENBQUNyb0IsSUFBVCxHQUFnQixHQUFoQjtNQUNBLElBQUlpbEMsSUFBSSxHQUFHO1FBQ1BGLFFBQVEsRUFBRSxDQUFDLEdBQUdGLFlBQVksV0FBaEIsRUFBMEJ4YyxRQUFRLENBQUMwYyxRQUFuQyxFQUE2QyxDQUFDN29DLEVBQUUsR0FBR2dwQyxNQUFOLE1BQTBDLElBQTFDLElBQWtEaHBDLEVBQUUsS0FBSyxLQUFLLENBQTlELEdBQWtFQSxFQUFsRSxHQUF1RSxFQUFwSCxDQURIO1FBRVA4b0MscUJBQXFCLEVBQUUsQ0FBQyxHQUFHSCxZQUFZLFdBQWhCLEVBQTBCeGMsUUFBUSxDQUFDMmMscUJBQW5DLEVBQTBELENBQUNyaUMsRUFBRSxHQUFHdWlDLE1BQU4sTUFBMEMsSUFBMUMsSUFBa0R2aUMsRUFBRSxLQUFLLEtBQUssQ0FBOUQsR0FBa0VBLEVBQWxFLEdBQXVFLEVBQWpJO01BRmhCLENBQVg7TUFJQS9HLE9BQU8sV0FBUCxDQUNLK0ssSUFETCxDQUNVLGdCQURWLEVBQzRCNlosUUFBUSxDQUFDQSxRQUFRLENBQUMsRUFBRCxFQUFLNkgsUUFBTCxDQUFULEVBQXlCNGMsSUFBekIsQ0FEcEMsRUFFS3puQyxJQUZMLENBRVUsVUFBVUMsR0FBVixFQUFlO1FBQ3JCLElBQUlBLEdBQUcsQ0FBQ2tuQyxPQUFKLENBQVlDLFdBQVosQ0FBd0J2K0IsUUFBeEIsQ0FBaUMsWUFBakMsQ0FBSixFQUFvRDtVQUNoRG5JLE1BQU0sQ0FBQzhILFFBQVAsQ0FBZ0IvSCxJQUFoQixHQUF1QixhQUF2QjtRQUNIOztRQUNELElBQUlpTCxRQUFRLEdBQUd6TCxHQUFHLENBQUNLLElBQW5CO1FBQ0EsSUFBSThaLE1BQU0sR0FBRyxDQUFDMU8sUUFBUSxDQUFDckssT0FBVixJQUFxQixZQUFZcUssUUFBakMsR0FBNENBLFFBQVEsQ0FBQzBPLE1BQXJELEdBQThELEVBQTNFO1FBQ0E0NkIsc0JBQXNCLENBQUM1NkIsTUFBRCxDQUF0QjtRQUNBaTdCLGVBQWU7UUFDZjEzQyxNQUFNLENBQUNvUSxNQUFQLENBQWMybEMsU0FBZCxFQUF5QnQ1QixNQUF6QjtRQUNBbEYsZUFBZSxDQUFDcFgsS0FBaEIsR0FBd0IsS0FBeEI7UUFDQXkyQyxZQUFZLENBQUMsR0FBRCxDQUFaLENBQWtCRSxXQUFsQixHQUFnQyxLQUFoQzs7UUFDQSxJQUFJL29DLFFBQVEsQ0FBQ3JLLE9BQWIsRUFBc0I7VUFDbEI2ekMscUJBQXFCO1VBQ3JCWCxZQUFZLENBQUMsR0FBRCxDQUFaLENBQWtCRSxXQUFsQixHQUFnQyxJQUFoQztVQUNBYyxVQUFVLENBQUMsQ0FBRCxDQUFWO1FBQ0g7TUFDSixDQWxCRCxXQW1CVyxVQUFVbnBDLEtBQVYsRUFBaUI7UUFDeEIrb0MsWUFBWSxDQUFDL29DLEtBQUQsQ0FBWjtRQUNBOEksZUFBZSxDQUFDcFgsS0FBaEIsR0FBd0IsS0FBeEI7TUFDSCxDQXRCRDtJQXVCSDs7SUFDRCxTQUFTNDNDLGNBQVQsR0FBMEI7TUFDdEIsT0FBT2x6QyxJQUFJLENBQUMxRSxLQUFMLENBQVc4ZCxRQUFYLEVBQVA7SUFDSDs7SUFDRCxTQUFTMjVCLFVBQVQsQ0FBb0JJLFlBQXBCLEVBQWtDO01BQzlCLElBQUlBLFlBQVksS0FBS256QyxJQUFJLENBQUMxRSxLQUExQixFQUFpQztRQUM3QjBFLElBQUksQ0FBQzFFLEtBQUwsSUFBYyxDQUFkO01BQ0g7SUFDSjtJQUNEO0FBQ1I7QUFDQTs7O0lBQ1EsU0FBUzgzQyxZQUFULEdBQXdCO01BQ3BCLFFBQVFwekMsSUFBSSxDQUFDMUUsS0FBYjtRQUNJLEtBQUssQ0FBTDtVQUNJdzNDLGVBQWU7VUFDZjs7UUFDSixLQUFLLENBQUw7VUFDSUUsd0JBQXdCO1VBQ3hCOztRQUNKLEtBQUssQ0FBTDtVQUNJQywyQkFBMkI7VUFDM0I7O1FBQ0osS0FBSyxDQUFMO1VBQ0l2eEIsVUFBVTtVQUNWO01BWlI7SUFjSDs7SUFDRCxTQUFTMnhCLGdCQUFULEdBQTRCO01BQ3hCUixlQUFlO01BQ2Y3eUMsSUFBSSxDQUFDMUUsS0FBTCxJQUFjLENBQWQ7SUFDSDs7SUFDRCxPQUFPO01BQ0h5MkMsWUFBWSxFQUFFQSxZQURYO01BRUgxcEIsUUFBUSxFQUFFQSxRQUZQO01BR0hqVyxTQUFTLEVBQUVBLFNBSFI7TUFJSGcrQixlQUFlLEVBQUVBLGVBSmQ7TUFLSDE5QixlQUFlLEVBQUVBLGVBTGQ7TUFNSDBnQyxZQUFZLEVBQUVBLFlBTlg7TUFPSEMsZ0JBQWdCLEVBQUVBLGdCQVBmO01BUUhILGNBQWMsRUFBRUEsY0FSYjtNQVNIckIsU0FBUyxFQUFFQSxTQVRSO01BVUhYLFNBQVMsRUFBRUEsU0FWUjtNQVdIUSxXQUFXLEVBQUVBLFdBWFY7TUFZSHp2QyxLQUFLLEVBQUVBLEtBWko7TUFhSGpDLElBQUksRUFBRUEsSUFiSDtNQWNIbXhDLE1BQU0sRUFBRUEsTUFkTDtNQWVIZCxRQUFRLEVBQUVBLFFBZlA7TUFnQkh4dEMsU0FBUyxFQUFFQTtJQWhCUixDQUFQO0VBa0JIO0FBaGxCd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDeEJhOztBQUNiLElBQUk3SCxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJSSxPQUFPLEdBQUdaLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0Q0FBRCxDQUFSLENBQTdCOztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDQyxNQUFNLEVBQUUsY0FEaUM7RUFFekNDLEtBQUssRUFBRSxlQUFVQyxPQUFWLEVBQW1CQyxFQUFuQixFQUF1QjtJQUMxQixJQUFJQyxNQUFNLEdBQUdELEVBQUUsQ0FBQ0MsTUFBaEI7SUFDQUEsTUFBTTtJQUNOLElBQUkwRyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCOztJQUNBLFNBQVN3d0MsY0FBVCxDQUF3Qm54QyxJQUF4QixFQUE4QjtNQUMxQixJQUFJekUsUUFBUSxHQUFHO1FBQ1h3WixRQUFRLEVBQUUsc0NBREM7UUFFWDdVLFlBQVksRUFBRTtNQUZILENBQWY7TUFJQSxJQUFJL0UsR0FBRyxHQUFHWSxNQUFNLENBQUM4SCxRQUFQLENBQWdCdXRDLE1BQWhCLEdBQXlCLGlCQUFpQnIyQyxNQUFqQixDQUF3QlEsUUFBUSxDQUFDeUUsSUFBRCxDQUFoQyxDQUFuQztNQUNBLENBQUMsR0FBR3ZHLE9BQU8sV0FBWCxFQUFxQjtRQUNqQjBCLEdBQUcsRUFBRUEsR0FEWTtRQUVqQkQsTUFBTSxFQUFFLEtBRlM7UUFHakJFLFlBQVksRUFBRTtNQUhHLENBQXJCLEVBSUdDLElBSkgsQ0FJUSxVQUFVMEwsUUFBVixFQUFvQjtRQUN4QixJQUFJdEwsSUFBSSxHQUFHLElBQUlDLElBQUosQ0FBUyxDQUFDcUwsUUFBUSxDQUFDcEwsSUFBVixDQUFULEVBQTBCO1VBQ2pDcUUsSUFBSSxFQUFFO1FBRDJCLENBQTFCLENBQVg7UUFHQSxJQUFJcEUsSUFBSSxHQUFHcEIsUUFBUSxDQUFDcUIsYUFBVCxDQUF1QixHQUF2QixDQUFYO1FBQ0FELElBQUksQ0FBQ0UsSUFBTCxHQUFZQyxNQUFNLENBQUNDLEdBQVAsQ0FBV0MsZUFBWCxDQUEyQlIsSUFBM0IsQ0FBWjtRQUNBRyxJQUFJLENBQUNnMUIsUUFBTCxHQUFnQnIxQixRQUFRLENBQUN5RSxJQUFELENBQXhCO1FBQ0FwRSxJQUFJLENBQUNTLEtBQUw7TUFDSCxDQVpEO0lBYUg7O0lBQ0QsSUFBSVUsWUFBWSxHQUFHO01BQUUyRCxTQUFTLEVBQUVBLFNBQWI7TUFBd0J5d0MsY0FBYyxFQUFFQTtJQUF4QyxDQUFuQjtJQUNBbjRDLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQjhELFlBQXRCLEVBQW9DLGlCQUFwQyxFQUF1RDtNQUFFRyxVQUFVLEVBQUUsS0FBZDtNQUFxQi9ELEtBQUssRUFBRTtJQUE1QixDQUF2RDtJQUNBLE9BQU80RCxZQUFQO0VBQ0g7QUE3QndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ1JhOztBQUNiL0QsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLHFCQURpQztFQUV6Q0MsS0FBSyxFQUFFLGVBQVVDLE9BQVYsRUFBbUJDLEVBQW5CLEVBQXVCO0lBQzFCLElBQUlDLE1BQU0sR0FBR0QsRUFBRSxDQUFDQyxNQUFoQjtJQUNBQSxNQUFNOztJQUNOLFNBQVNxM0MsWUFBVCxHQUF3QjtNQUNwQm51QyxZQUFZLENBQUM4RixPQUFiLENBQXFCLGNBQXJCLEVBQXFDLE1BQXJDO0lBQ0g7O0lBQ0QsSUFBSXRJLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxJQUFJNUQsWUFBWSxHQUFHO01BQUVzMEMsWUFBWSxFQUFFQSxZQUFoQjtNQUE4QjN3QyxTQUFTLEVBQUVBO0lBQXpDLENBQW5CO0lBQ0ExSCxNQUFNLENBQUNDLGNBQVAsQ0FBc0I4RCxZQUF0QixFQUFvQyxpQkFBcEMsRUFBdUQ7TUFBRUcsVUFBVSxFQUFFLEtBQWQ7TUFBcUIvRCxLQUFLLEVBQUU7SUFBNUIsQ0FBdkQ7SUFDQSxPQUFPNEQsWUFBUDtFQUNIO0FBWndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQ0phOztBQUNiLElBQUlzaEIsUUFBUSxHQUFJLFFBQVEsS0FBS0EsUUFBZCxJQUEyQixZQUFZO0VBQ2xEQSxRQUFRLEdBQUdybEIsTUFBTSxDQUFDb1EsTUFBUCxJQUFpQixVQUFTNUssQ0FBVCxFQUFZO0lBQ3BDLEtBQUssSUFBSXliLENBQUosRUFBT3hSLENBQUMsR0FBRyxDQUFYLEVBQWN4SixDQUFDLEdBQUdxZixTQUFTLENBQUMvZSxNQUFqQyxFQUF5Q2tKLENBQUMsR0FBR3hKLENBQTdDLEVBQWdEd0osQ0FBQyxFQUFqRCxFQUFxRDtNQUNqRHdSLENBQUMsR0FBR3FFLFNBQVMsQ0FBQzdWLENBQUQsQ0FBYjs7TUFDQSxLQUFLLElBQUk4VixDQUFULElBQWN0RSxDQUFkO1FBQWlCLElBQUlqaEIsTUFBTSxDQUFDd2xCLFNBQVAsQ0FBaUJDLGNBQWpCLENBQWdDcGYsSUFBaEMsQ0FBcUM0YSxDQUFyQyxFQUF3Q3NFLENBQXhDLENBQUosRUFDYi9mLENBQUMsQ0FBQytmLENBQUQsQ0FBRCxHQUFPdEUsQ0FBQyxDQUFDc0UsQ0FBRCxDQUFSO01BREo7SUFFSDs7SUFDRCxPQUFPL2YsQ0FBUDtFQUNILENBUEQ7O0VBUUEsT0FBTzZmLFFBQVEsQ0FBQ2xnQixLQUFULENBQWUsSUFBZixFQUFxQm1nQixTQUFyQixDQUFQO0FBQ0gsQ0FWRDs7QUFXQSxJQUFJemxCLGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlJLE9BQU8sR0FBR1osZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRDQUFELENBQVIsQ0FBN0I7O0FBQ0EsSUFBSTAwQyx1QkFBdUIsR0FBR2wxQyxlQUFlLENBQUNRLG1CQUFPLENBQUMsc0ZBQUQsQ0FBUixDQUE3Qzs7QUFDQSxJQUFJc21CLGVBQWUsR0FBRzltQixlQUFlLENBQUNRLG1CQUFPLENBQUMsd0ZBQUQsQ0FBUixDQUFyQzs7QUFDQSxJQUFJcWxCLGFBQWEsR0FBRzdsQixlQUFlLENBQUNRLG1CQUFPLENBQUMscUZBQUQsQ0FBUixDQUFuQzs7QUFDQSxJQUFJc1csWUFBWSxHQUFHOVcsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGdGQUFELENBQVIsQ0FBbEM7O0FBQ0EsSUFBSXFwQyxZQUFZLEdBQUc3cEMsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDZFQUFELENBQVIsQ0FBbEM7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNrTSxVQUFVLEVBQUU7SUFDUm1vQyxpQkFBaUIsRUFBRUQsdUJBQXVCLFdBRGxDO0lBRVIxdEIsU0FBUyxFQUFFVixlQUFlLFdBRmxCO0lBR1JGLFdBQVcsRUFBRWYsYUFBYSxXQUhsQjtJQUlSdE4sTUFBTSxFQUFFekIsWUFBWTtFQUpaLENBRDZCO0VBT3pDN1AsS0FBSyxFQUFFO0lBQ0gyMUIsT0FBTyxFQUFFO01BQ0x6MUIsSUFBSSxFQUFFLENBQUN1SixNQUFELEVBQVN2USxNQUFULENBREQ7TUFFTGlILFFBQVEsRUFBRTtJQUZMLENBRE47SUFLSHF4QyxNQUFNLEVBQUU7TUFDSnR4QyxJQUFJLEVBQUUsQ0FBQ3VKLE1BQUQsRUFBU3ZRLE1BQVQsQ0FERjtNQUVKaUgsUUFBUSxFQUFFO0lBRk47RUFMTCxDQVBrQztFQWlCekNwRyxLQUFLLEVBQUUsZUFBVWlHLEtBQVYsRUFBaUI7SUFDcEIsSUFBSVksU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLElBQUk5QyxJQUFJLEdBQUcsQ0FBQyxHQUFHekUsS0FBSyxDQUFDZ0IsR0FBVixFQUFlLENBQWYsQ0FBWDtJQUNBLElBQUk2ekMsZUFBZSxHQUFHLENBQUMsR0FBRzcwQyxLQUFLLENBQUNnQixHQUFWLEVBQWUsSUFBZixDQUF0QjtJQUNBLElBQUltVyxlQUFlLEdBQUcsQ0FBQyxHQUFHblgsS0FBSyxDQUFDZ0IsR0FBVixFQUFlLEtBQWYsQ0FBdEI7SUFDQSxJQUFJazNDLE1BQU0sR0FBRyxDQUFDLEdBQUdsNEMsS0FBSyxDQUFDME0sTUFBVixFQUFrQmhHLEtBQWxCLEVBQXlCd3hDLE1BQXRDO0lBQ0EsSUFBSXJoQyxTQUFTLEdBQUcsQ0FBQyxHQUFHN1csS0FBSyxDQUFDZ0ksUUFBVixFQUFvQjtNQUNoQytzQyxjQUFjLEVBQUUsRUFEZ0I7TUFFaENDLFlBQVksRUFBRSxFQUZrQjtNQUdoQzNZLE9BQU8sRUFBRSxFQUh1QjtNQUloQzRZLG1CQUFtQixFQUFFLEVBSlc7TUFLaENDLG1CQUFtQixFQUFFLEVBTFc7TUFNaENDLFVBQVUsRUFBRSxFQU5vQjtNQU9oQ3BELFFBQVEsRUFBRSxFQVBzQjtNQVFoQ0MsU0FBUyxFQUFFLEVBUnFCO01BU2hDOUksS0FBSyxFQUFFLEVBVHlCO01BVWhDTSxRQUFRLEVBQUUsRUFWc0I7TUFXaENDLHFCQUFxQixFQUFFO0lBWFMsQ0FBcEIsQ0FBaEI7SUFhQSxJQUFJM2MsUUFBUSxHQUFHLENBQUMsR0FBRzlzQixLQUFLLENBQUNnSSxRQUFWLEVBQW9CO01BQy9CK3NDLGNBQWMsRUFBRSxFQURlO01BRS9CQyxZQUFZLEVBQUUsRUFGaUI7TUFHL0IzWSxPQUFPLEVBQUUsRUFIc0I7TUFJL0I0WSxtQkFBbUIsRUFBRSxFQUpVO01BSy9CQyxtQkFBbUIsRUFBRSxFQUxVO01BTS9CQyxVQUFVLEVBQUUsRUFObUI7TUFPL0JwRCxRQUFRLEVBQUUsRUFQcUI7TUFRL0JDLFNBQVMsRUFBRSxFQVJvQjtNQVMvQjlJLEtBQUssRUFBRSxFQVR3QjtNQVUvQk0sUUFBUSxFQUFFLEVBVnFCO01BVy9CQyxxQkFBcUIsRUFBRTtJQVhRLENBQXBCLENBQWY7SUFhQSxDQUFDLEdBQUd6cEMsS0FBSyxDQUFDZ0osS0FBVixFQUFpQixZQUFZO01BQUUsT0FBTzhqQixRQUFRLENBQUN1UCxPQUFoQjtJQUEwQixDQUF6RCxFQUEyRCxZQUFZO01BQ25FdlAsUUFBUSxDQUFDbW9CLG1CQUFULEdBQStCLEVBQS9CO0lBQ0gsQ0FGRDtJQUdBLENBQUMsR0FBR2oxQyxLQUFLLENBQUNnSixLQUFWLEVBQWlCLFlBQVk7TUFBRSxPQUFPLENBQUM4akIsUUFBUSxDQUFDbW9CLG1CQUFWLEVBQStCbm9CLFFBQVEsQ0FBQ29vQixtQkFBeEMsQ0FBUDtJQUFzRSxDQUFyRyxFQUF1RyxZQUFZO01BQy9HcG9CLFFBQVEsQ0FBQ3FvQixVQUFULEdBQXNCcm9CLFFBQVEsQ0FBQ21vQixtQkFBVCxHQUNoQm5vQixRQUFRLENBQUNtb0IsbUJBQVQsR0FBK0IsR0FBL0IsR0FBcUNub0IsUUFBUSxDQUFDb29CLG1CQUQ5QixHQUVoQnBvQixRQUFRLENBQUNvb0IsbUJBRmY7SUFHSCxDQUpELEVBSUc7TUFBRWpsQyxJQUFJLEVBQUU7SUFBUixDQUpIO0lBS0EsSUFBSWdsQyxtQkFBbUIsR0FBRyxDQUFDLEdBQUdqMUMsS0FBSyxDQUFDd0QsUUFBVixFQUFvQixZQUFZO01BQ3RELElBQUlzeUMsUUFBUSxHQUFHb0MsTUFBTSxDQUFDbjRDLEtBQXRCOztNQUNBLElBQUkrc0IsUUFBUSxDQUFDdVAsT0FBYixFQUFzQjtRQUNsQixJQUFJMlosZUFBZSxHQUFHLENBQUMsSUFBRCxFQUFPLElBQVAsQ0FBdEI7UUFDQSxPQUFPcDJDLE1BQU0sQ0FBQ3NQLFdBQVAsQ0FBbUJ0UCxNQUFNLENBQUMrTyxPQUFQLENBQWVtbkMsUUFBZixFQUF5QmpuQyxNQUF6QixDQUFnQyxVQUFVbE8sRUFBVixFQUFjO1VBQ3BFLElBQUlrSyxHQUFHLEdBQUdsSyxFQUFFLENBQUMsQ0FBRCxDQUFaO1VBQ0EsT0FBT2tLLEdBQUcsQ0FBQ29yQyxVQUFKLENBQWVucEIsUUFBUSxDQUFDdVAsT0FBeEIsS0FDSDJaLGVBQWUsQ0FBQ0UsSUFBaEIsQ0FBcUIsVUFBVTFzQixDQUFWLEVBQWE7WUFBRSxPQUFPM2UsR0FBRyxDQUFDb3JDLFVBQUosQ0FBZXpzQixDQUFmLENBQVA7VUFBMkIsQ0FBL0QsQ0FESjtRQUVILENBSnlCLENBQW5CLENBQVA7TUFLSCxDQVBELE1BUUs7UUFDRCxPQUFPc3NCLFFBQVA7TUFDSDtJQUNKLENBYnlCLENBQTFCO0lBY0EsSUFBSUssV0FBVyxHQUFHLENBQUMsR0FBR24yQyxLQUFLLENBQUN3RCxRQUFWLEVBQW9CLFlBQVk7TUFDOUMsT0FBTyxVQUFVNHlDLFNBQVYsRUFBcUJDLFNBQXJCLEVBQWdDO1FBQ25DLE9BQVEsQ0FBQ0QsU0FBUyxLQUFLLE1BQWQsSUFDTEEsU0FBUyxLQUFLLFVBRFQsSUFFTEEsU0FBUyxLQUFLLE9BRlYsS0FHSkMsU0FBUyxJQUFJLFlBSGpCO01BSUgsQ0FMRDtJQU1ILENBUGlCLENBQWxCO0lBUUEsSUFBSUMsU0FBUyxHQUFHLENBQUMsR0FBR3QyQyxLQUFLLENBQUN3RCxRQUFWLEVBQW9CLFlBQVk7TUFDNUMsT0FBTyxVQUFVK3lDLFFBQVYsRUFBb0I7UUFDdkIsT0FBT3JKLFFBQVEsQ0FBQ3FKLFFBQVEsQ0FBQzE0QixRQUFULEVBQUQsQ0FBUixLQUFrQ3BaLElBQUksQ0FBQzFFLEtBQTlDO01BQ0gsQ0FGRDtJQUdILENBSmUsQ0FBaEI7SUFLQSxJQUFJeTJDLFlBQVksR0FBRyxDQUFDLEdBQUd4MkMsS0FBSyxDQUFDZ0ksUUFBVixFQUFvQjtNQUNuQyxHQUFHO1FBQ0NrUSxLQUFLLEVBQUU1USxTQUFTLENBQUNtdkMsWUFBVixDQUF1Qiw2QkFBdkIsQ0FEUjtRQUVDQyxXQUFXLEVBQUUsS0FGZDtRQUdDLzFCLFdBQVcsRUFBRXJaLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLG1DQUF2QixDQUhkO1FBSUNFLFVBQVUsRUFBRXJ2QyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QixrQ0FBdkIsQ0FKYjtRQUtDRyxNQUFNLEVBQUU7VUFDSjdCLGNBQWMsRUFBRTtZQUNaN3ZDLEtBQUssRUFBRW9DLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLHNCQUF2QixDQURLO1lBRVo3dEMsSUFBSSxFQUFFLGdCQUZNO1lBR1ppdUMsV0FBVyxFQUFFdnZDLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLDRCQUF2QixDQUhEO1lBSVpqdUMsRUFBRSxFQUFFLGdCQUpRO1lBS1ozQixRQUFRLEVBQUUsSUFMRTtZQU1aOHZDLFVBQVUsRUFBRXJ2QyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QiwyQkFBdkIsQ0FOQTtZQU9aN3ZDLElBQUksRUFBRSxNQVBNO1lBUVosU0FBTyx5QkFSSztZQVNaa3dDLFNBQVMsRUFBRTtVQVRDLENBRFo7VUFZSjlCLFlBQVksRUFBRTtZQUNWOXZDLEtBQUssRUFBRW9DLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLG9CQUF2QixDQURHO1lBRVY3dEMsSUFBSSxFQUFFLGNBRkk7WUFHVml1QyxXQUFXLEVBQUV2dkMsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIsMEJBQXZCLENBSEg7WUFJVmp1QyxFQUFFLEVBQUUsY0FKTTtZQUtWM0IsUUFBUSxFQUFFLElBTEE7WUFNVjh2QyxVQUFVLEVBQUVydkMsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIseUJBQXZCLENBTkY7WUFPVjd2QyxJQUFJLEVBQUUsTUFQSTtZQVFWLFNBQU8sY0FSRztZQVNWa3dDLFNBQVMsRUFBRTtVQVRELENBWlY7VUF1Qkp6YSxPQUFPLEVBQUU7WUFDTG4zQixLQUFLLEVBQUVvQyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QixlQUF2QixDQURGO1lBRUw3dEMsSUFBSSxFQUFFLFNBRkQ7WUFHTGl1QyxXQUFXLEVBQUV2dkMsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIscUJBQXZCLENBSFI7WUFJTGp1QyxFQUFFLEVBQUUsZ0JBSkM7WUFLTDNCLFFBQVEsRUFBRSxLQUxMO1lBTUxELElBQUksRUFBRSxRQU5EO1lBT0wrdkMsVUFBVSxFQUFFcnZDLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLG9CQUF2QixDQVBQO1lBUUwvWSxPQUFPLEVBQUVoM0IsS0FBSyxDQUFDMjFCLE9BUlY7WUFTTCxTQUFPLHVCQVRGO1lBVUx5YSxTQUFTLEVBQUU7VUFWTixDQXZCTDtVQW1DSnFCLGdDQUFnQyxFQUFFO1lBQzlCanpDLEtBQUssRUFBRW9DLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLCtCQUF2QixDQUR1QjtZQUU5Qjd0QyxJQUFJLEVBQUUscUJBRndCO1lBRzlCaXVDLFdBQVcsRUFBRXZ2QyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QixxQ0FBdkIsQ0FIaUI7WUFJOUJqdUMsRUFBRSxFQUFFLHFCQUowQjtZQUs5QjNCLFFBQVEsRUFBRSxJQUxvQjtZQU05Qjh2QyxVQUFVLEVBQUVydkMsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIsb0NBQXZCLENBTmtCO1lBTzlCN3ZDLElBQUksRUFBRSxRQVB3QjtZQVE5QjgyQixPQUFPLEVBQUV1WCxtQkFScUI7WUFTOUIsU0FBTyx1QkFUdUI7WUFVOUI2QixTQUFTLEVBQUU7VUFWbUIsQ0FuQzlCO1VBK0NKc0IsNEJBQTRCLEVBQUU7WUFDMUJsekMsS0FBSyxFQUFFb0MsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIsMkJBQXZCLENBRG1CO1lBRTFCN3RDLElBQUksRUFBRSxxQkFGb0I7WUFHMUJpdUMsV0FBVyxFQUFFdnZDLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLGlDQUF2QixDQUhhO1lBSTFCanVDLEVBQUUsRUFBRSxxQkFKc0I7WUFLMUIzQixRQUFRLEVBQUUsSUFMZ0I7WUFNMUI4dkMsVUFBVSxFQUFFcnZDLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLGdDQUF2QixDQU5jO1lBTzFCN3ZDLElBQUksRUFBRSxNQVBvQjtZQVExQixTQUFPLGNBUm1CO1lBUzFCa3dDLFNBQVMsRUFBRSxHQUFHbjFDLE1BQUgsQ0FBVTJGLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLFFBQXZCLENBQVYsRUFBNEMsU0FBNUM7VUFUZSxDQS9DMUI7VUEwREo0Qiw4QkFBOEIsRUFBRTtZQUM1Qm56QyxLQUFLLEVBQUVvQyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QiwyQkFBdkIsQ0FEcUI7WUFFNUI3dEMsSUFBSSxFQUFFLFlBRnNCO1lBRzVCaXVDLFdBQVcsRUFBRSxFQUhlO1lBSTVCcnVDLEVBQUUsRUFBRSxZQUp3QjtZQUs1QjNCLFFBQVEsRUFBRSxJQUxrQjtZQU01Qjh2QyxVQUFVLEVBQUVydkMsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIsZ0NBQXZCLENBTmdCO1lBTzVCN3ZDLElBQUksRUFBRSxNQVBzQjtZQVE1QixTQUFPLGNBUnFCO1lBUzVCa3dDLFNBQVMsRUFBRXh2QyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QiwrQkFBdkI7VUFUaUI7UUExRDVCO01BTFQsQ0FEZ0M7TUE2RW5DLEdBQUc7UUFDQ3YrQixLQUFLLEVBQUU1USxTQUFTLENBQUNtdkMsWUFBVixDQUF1QixpQ0FBdkIsQ0FEUjtRQUVDQyxXQUFXLEVBQUUsS0FGZDtRQUdDLzFCLFdBQVcsRUFBRXJaLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLGdEQUF2QixDQUhkO1FBSUNFLFVBQVUsRUFBRXJ2QyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QixzQ0FBdkIsQ0FKYjtRQUtDRyxNQUFNLEVBQUU7VUFDSjdFLFFBQVEsRUFBRTtZQUNON3NDLEtBQUssRUFBRW9DLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLGdCQUF2QixDQUREO1lBRU43dEMsSUFBSSxFQUFFLFVBRkE7WUFHTml1QyxXQUFXLEVBQUV2dkMsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIsc0JBQXZCLENBSFA7WUFJTmp1QyxFQUFFLEVBQUUsVUFKRTtZQUtOM0IsUUFBUSxFQUFFLElBTEo7WUFNTjh2QyxVQUFVLEVBQUVydkMsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIscUJBQXZCLENBTk47WUFPTjd2QyxJQUFJLEVBQUUsTUFQQTtZQVFOLFNBQU8sY0FSRDtZQVNOa3dDLFNBQVMsRUFBRTtVQVRMLENBRE47VUFZSjlFLFNBQVMsRUFBRTtZQUNQOXNDLEtBQUssRUFBRW9DLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLGdCQUF2QixDQURBO1lBRVA3dEMsSUFBSSxFQUFFLFdBRkM7WUFHUGl1QyxXQUFXLEVBQUV2dkMsU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIsc0JBQXZCLENBSE47WUFJUGp1QyxFQUFFLEVBQUUsV0FKRztZQUtQbXVDLFVBQVUsRUFBRSxFQUxMO1lBTVA5dkMsUUFBUSxFQUFFLElBTkg7WUFPUEQsSUFBSSxFQUFFLE1BUEM7WUFRUCxTQUFPO1VBUkEsQ0FaUDtVQXNCSnNpQyxLQUFLLEVBQUU7WUFDSGhrQyxLQUFLLEVBQUVvQyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QixxQkFBdkIsQ0FESjtZQUVIN3RDLElBQUksRUFBRSxPQUZIO1lBR0hpdUMsV0FBVyxFQUFFdnZDLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLDJCQUF2QixDQUhWO1lBSUhqdUMsRUFBRSxFQUFFLE9BSkQ7WUFLSDNCLFFBQVEsRUFBRSxJQUxQO1lBTUg4dkMsVUFBVSxFQUFFLEVBTlQ7WUFPSC92QyxJQUFJLEVBQUUsT0FQSDtZQVFILFNBQU87VUFSSixDQXRCSDtVQWdDSjRpQyxRQUFRLEVBQUU7WUFDTnRrQyxLQUFLLEVBQUVvQyxTQUFTLENBQUNtdkMsWUFBVixDQUF1QixnQkFBdkIsQ0FERDtZQUVON3RDLElBQUksRUFBRSxVQUZBO1lBR05pdUMsV0FBVyxFQUFFdnZDLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLHNCQUF2QixDQUhQO1lBSU5qdUMsRUFBRSxFQUFFLFVBSkU7WUFLTjNCLFFBQVEsRUFBRSxJQUxKO1lBTU44dkMsVUFBVSxFQUFFLEVBTk47WUFPTi92QyxJQUFJLEVBQUUsVUFQQTtZQVFOLFNBQU87VUFSRCxDQWhDTjtVQTBDSjB4QyxnQkFBZ0IsRUFBRTtZQUNkcHpDLEtBQUssRUFBRW9DLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLGtCQUF2QixDQURPO1lBRWQ3dEMsSUFBSSxFQUFFLHVCQUZRO1lBR2RpdUMsV0FBVyxFQUFFdnZDLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLHNCQUF2QixDQUhDO1lBSWRqdUMsRUFBRSxFQUFFLHVCQUpVO1lBS2QzQixRQUFRLEVBQUUsSUFMSTtZQU1kOHZDLFVBQVUsRUFBRSxFQU5FO1lBT2QvdkMsSUFBSSxFQUFFLFVBUFE7WUFRZCxTQUFPO1VBUk87UUExQ2Q7TUFMVCxDQTdFZ0M7TUF3SW5DLEdBQUc7UUFDQ3NSLEtBQUssRUFBRTVRLFNBQVMsQ0FBQ212QyxZQUFWLENBQXVCLDBCQUF2QixDQURSO1FBRUNDLFdBQVcsRUFBRSxLQUZkO1FBR0MvMUIsV0FBVyxFQUFFclosU0FBUyxDQUFDbXZDLFlBQVYsQ0FBdUIsZ0NBQXZCO01BSGQ7SUF4SWdDLENBQXBCLENBQW5COztJQThJQSxJQUFJOEIsZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFtQixDQUFVbDhCLE1BQVYsRUFBa0I7TUFDckMsSUFBSUEsTUFBTSxLQUFLLEtBQUssQ0FBcEIsRUFBdUI7UUFBRUEsTUFBTSxHQUFHLEVBQVQ7TUFBYzs7TUFDdkMsSUFBSUYsV0FBVyxHQUFHdmMsTUFBTSxDQUFDMFAsSUFBUCxDQUFZK00sTUFBWixFQUFvQmxXLE1BQXRDOztNQUNBLElBQUlnVyxXQUFXLEtBQUssQ0FBcEIsRUFBdUI7UUFDbkIsS0FBSyxJQUFJcThCLE1BQVQsSUFBbUIzaEMsU0FBbkIsRUFBOEI7VUFDMUJBLFNBQVMsQ0FBQzJoQyxNQUFELENBQVQsR0FBb0IsRUFBcEI7UUFDSDtNQUNKOztNQUNELElBQUlyOEIsV0FBVyxHQUFHLENBQWxCLEVBQXFCO1FBQ2pCLEtBQUssSUFBSXE4QixNQUFULElBQW1CM2hDLFNBQW5CLEVBQThCO1VBQzFCQSxTQUFTLENBQUMyaEMsTUFBRCxDQUFULEdBQW9CQSxNQUFNLElBQUluOEIsTUFBVixHQUFtQkEsTUFBTSxDQUFDbThCLE1BQUQsQ0FBTixDQUFlLENBQWYsQ0FBbkIsR0FBdUMsRUFBM0Q7UUFDSDtNQUNKO0lBQ0osQ0FiRDs7SUFjQSxTQUFTakIsZUFBVCxHQUEyQjtNQUN2QixJQUFJNTJDLEVBQUosRUFBUXlHLEVBQVI7O01BQ0ErUCxlQUFlLENBQUNwWCxLQUFoQixHQUF3QixJQUF4QjtNQUNBK3NCLFFBQVEsQ0FBQ3FvQixVQUFULEdBQXNCLEdBQUd4ekMsTUFBSCxDQUFVbXJCLFFBQVEsQ0FBQ21vQixtQkFBbkIsRUFBd0MsR0FBeEMsRUFBNkN0ekMsTUFBN0MsQ0FBb0RtckIsUUFBUSxDQUFDb29CLG1CQUE3RCxDQUF0QjtNQUNBLElBQUl4TCxJQUFJLEdBQUc7UUFDUEYsUUFBUSxFQUFFLENBQUMsR0FBR0YsWUFBWSxXQUFoQixFQUEwQnhjLFFBQVEsQ0FBQzBjLFFBQW5DLEVBQTZDLENBQUM3b0MsRUFBRSxHQUFHZ3BDLE1BQU4sTUFBMEMsSUFBMUMsSUFBa0RocEMsRUFBRSxLQUFLLEtBQUssQ0FBOUQsR0FBa0VBLEVBQWxFLEdBQXVFLEVBQXBILENBREg7UUFFUDhvQyxxQkFBcUIsRUFBRSxDQUFDLEdBQUdILFlBQVksV0FBaEIsRUFBMEJ4YyxRQUFRLENBQUMyYyxxQkFBbkMsRUFBMEQsQ0FBQ3JpQyxFQUFFLEdBQUd1aUMsTUFBTixNQUEwQyxJQUExQyxJQUFrRHZpQyxFQUFFLEtBQUssS0FBSyxDQUE5RCxHQUFrRUEsRUFBbEUsR0FBdUUsRUFBakk7TUFGaEIsQ0FBWDtNQUlBL0csT0FBTyxXQUFQLENBQ0srSyxJQURMLENBQ1Usa0JBRFYsRUFDOEI2WixRQUFRLENBQUNBLFFBQVEsQ0FBQyxFQUFELEVBQUs2SCxRQUFMLENBQVQsRUFBeUI0YyxJQUF6QixDQUR0QyxFQUVLem5DLElBRkwsQ0FFVSxVQUFVQyxHQUFWLEVBQWU7UUFDckIsSUFBSUEsR0FBRyxDQUFDa25DLE9BQUosQ0FBWUMsV0FBWixDQUF3QnYrQixRQUF4QixDQUFpQyxZQUFqQyxDQUFKLEVBQW9EO1VBQ2hEbkksTUFBTSxDQUFDOEgsUUFBUCxDQUFnQi9ILElBQWhCLEdBQXVCLGFBQXZCO1FBQ0g7O1FBQ0QsSUFBSWlMLFFBQVEsR0FBR3pMLEdBQUcsQ0FBQ0ssSUFBbkI7UUFDQXN5QyxlQUFlLENBQUM5MEMsS0FBaEIsR0FBd0IsSUFBeEI7UUFDQSxJQUFJc2MsTUFBTSxHQUFHLENBQUMxTyxRQUFRLENBQUNySyxPQUFWLElBQXFCLFlBQVlxSyxRQUFqQyxHQUE0Q0EsUUFBUSxDQUFDME8sTUFBckQsR0FBOEQsRUFBM0U7UUFDQWs4QixnQkFBZ0IsQ0FBQ2w4QixNQUFELENBQWhCOztRQUNBLElBQUkscUJBQXFCMU8sUUFBekIsRUFBbUM7VUFDL0JrbkMsZUFBZSxDQUFDOTBDLEtBQWhCLEdBQXdCLEtBQXhCO1FBQ0g7O1FBQ0QsSUFBSTROLFFBQVEsQ0FBQ3JLLE9BQWIsRUFBc0I7VUFDbEJrekMsWUFBWSxDQUFDLEdBQUQsQ0FBWixDQUFrQkUsV0FBbEIsR0FBZ0MsSUFBaEM7VUFDQWp5QyxJQUFJLENBQUMxRSxLQUFMLElBQWMsQ0FBZDtRQUNIOztRQUNEb1gsZUFBZSxDQUFDcFgsS0FBaEIsR0FBd0IsS0FBeEI7TUFDSCxDQWxCRCxXQW1CVyxZQUFZO1FBQ25Cb1gsZUFBZSxDQUFDcFgsS0FBaEIsR0FBd0IsS0FBeEI7TUFDSCxDQXJCRDtJQXNCSDs7SUFDRCxTQUFTb21CLFVBQVQsR0FBc0I7TUFDbEIsSUFBSXhsQixFQUFKLEVBQVF5RyxFQUFSOztNQUNBK1AsZUFBZSxDQUFDcFgsS0FBaEIsR0FBd0IsSUFBeEI7TUFDQSxJQUFJMnBDLElBQUksR0FBRztRQUNQRixRQUFRLEVBQUUsQ0FBQyxHQUFHRixZQUFZLFdBQWhCLEVBQTBCeGMsUUFBUSxDQUFDMGMsUUFBbkMsRUFBNkMsQ0FBQzdvQyxFQUFFLEdBQUdncEMsTUFBTixNQUEwQyxJQUExQyxJQUFrRGhwQyxFQUFFLEtBQUssS0FBSyxDQUE5RCxHQUFrRUEsRUFBbEUsR0FBdUUsRUFBcEgsQ0FESDtRQUVQOG9DLHFCQUFxQixFQUFFLENBQUMsR0FBR0gsWUFBWSxXQUFoQixFQUEwQnhjLFFBQVEsQ0FBQzJjLHFCQUFuQyxFQUEwRCxDQUFDcmlDLEVBQUUsR0FBR3VpQyxNQUFOLE1BQTBDLElBQTFDLElBQWtEdmlDLEVBQUUsS0FBSyxLQUFLLENBQTlELEdBQWtFQSxFQUFsRSxHQUF1RSxFQUFqSTtNQUZoQixDQUFYO01BSUEvRyxPQUFPLFdBQVAsQ0FDSytLLElBREwsQ0FDVSxXQURWLEVBQ3VCNlosUUFBUSxDQUFDQSxRQUFRLENBQUMsRUFBRCxFQUFLNkgsUUFBTCxDQUFULEVBQXlCNGMsSUFBekIsQ0FEL0IsRUFFS3puQyxJQUZMLENBRVUsVUFBVUMsR0FBVixFQUFlO1FBQ3JCLElBQUlBLEdBQUcsQ0FBQ2tuQyxPQUFKLENBQVlDLFdBQVosQ0FBd0J2K0IsUUFBeEIsQ0FBaUMsWUFBakMsQ0FBSixFQUFvRDtVQUNoRG5JLE1BQU0sQ0FBQzhILFFBQVAsQ0FBZ0IvSCxJQUFoQixHQUF1QixhQUF2QjtRQUNIOztRQUNELElBQUlpTCxRQUFRLEdBQUd6TCxHQUFHLENBQUNLLElBQW5CO1FBQ0EsSUFBSThaLE1BQU0sR0FBRyxDQUFDMU8sUUFBUSxDQUFDckssT0FBVixJQUFxQixZQUFZcUssUUFBakMsR0FBNENBLFFBQVEsQ0FBQzBPLE1BQXJELEdBQThELEVBQTNFO1FBQ0FrOEIsZ0JBQWdCLENBQUNsOEIsTUFBRCxDQUFoQjtRQUNBeEYsU0FBUyxDQUFDNHlCLHFCQUFWLEdBQWtDcHRCLE1BQU0sQ0FBQ290QixxQkFBUCxHQUM1QnB0QixNQUFNLENBQUNvdEIscUJBQVAsQ0FBNkIsQ0FBN0IsQ0FENEIsR0FFNUJwdEIsTUFBTSxDQUFDbXRCLFFBQVAsR0FDSW50QixNQUFNLENBQUNtdEIsUUFBUCxDQUFnQixDQUFoQixDQURKLEdBRUksRUFKVjtRQUtBcnlCLGVBQWUsQ0FBQ3BYLEtBQWhCLEdBQXdCLEtBQXhCOztRQUNBLElBQUk0TixRQUFRLENBQUNySyxPQUFiLEVBQXNCO1VBQ2xCa3pDLFlBQVksQ0FBQyxHQUFELENBQVosQ0FBa0JFLFdBQWxCLEdBQWdDLElBQWhDO1VBQ0FqeUMsSUFBSSxDQUFDMUUsS0FBTCxJQUFjLENBQWQ7UUFDSDtNQUNKLENBbkJELFdBb0JXLFVBQVVzTyxLQUFWLEVBQWlCO1FBQ3hCLElBQUlnTyxNQUFNLEdBQUdoTyxLQUFLLENBQUNWLFFBQU4sQ0FBZXBMLElBQWYsQ0FBb0I4WixNQUFqQztRQUNBbEYsZUFBZSxDQUFDcFgsS0FBaEIsR0FBd0IsS0FBeEI7UUFDQXc0QyxnQkFBZ0IsQ0FBQ2w4QixNQUFELENBQWhCO1FBQ0F4RixTQUFTLENBQUM0eUIscUJBQVYsR0FBa0NwdEIsTUFBTSxDQUFDb3RCLHFCQUFQLEdBQzVCcHRCLE1BQU0sQ0FBQ290QixxQkFBUCxDQUE2QixDQUE3QixDQUQ0QixHQUU1QnB0QixNQUFNLENBQUNtdEIsUUFBUCxHQUNJbnRCLE1BQU0sQ0FBQ210QixRQUFQLENBQWdCLENBQWhCLENBREosR0FFSSxFQUpWO01BS0gsQ0E3QkQ7SUE4Qkg7O0lBQ0QsU0FBU21PLGNBQVQsR0FBMEI7TUFDdEIsT0FBT2x6QyxJQUFJLENBQUMxRSxLQUFMLENBQVc4ZCxRQUFYLEVBQVA7SUFDSDs7SUFDRCxTQUFTZzZCLFlBQVQsR0FBd0I7TUFDcEIsSUFBSXB6QyxJQUFJLENBQUMxRSxLQUFMLEtBQWUsQ0FBbkIsRUFDSXczQyxlQUFlO01BQ25CLElBQUk5eUMsSUFBSSxDQUFDMUUsS0FBTCxLQUFlLENBQW5CLEVBQ0lvbUIsVUFBVTtJQUNqQjs7SUFDRCxTQUFTMnhCLGdCQUFULEdBQTRCO01BQ3hCcnpDLElBQUksQ0FBQzFFLEtBQUwsSUFBYyxDQUFkO0lBQ0g7O0lBQ0QsT0FBTztNQUNIeTJDLFlBQVksRUFBRUEsWUFEWDtNQUVIMXBCLFFBQVEsRUFBRUEsUUFGUDtNQUdIalcsU0FBUyxFQUFFQSxTQUhSO01BSUhnK0IsZUFBZSxFQUFFQSxlQUpkO01BS0gxOUIsZUFBZSxFQUFFQSxlQUxkO01BTUgwZ0MsWUFBWSxFQUFFQSxZQU5YO01BT0hDLGdCQUFnQixFQUFFQSxnQkFQZjtNQVFISCxjQUFjLEVBQUVBLGNBUmI7TUFTSHJCLFNBQVMsRUFBRUEsU0FUUjtNQVVISCxXQUFXLEVBQUVBLFdBVlY7TUFXSHp2QyxLQUFLLEVBQUVBLEtBWEo7TUFZSFksU0FBUyxFQUFFQTtJQVpSLENBQVA7RUFjSDtBQS9Vd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDeEJhOztBQUNiMUgsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLGFBRGlDO0VBRXpDQyxLQUFLLEVBQUUsZUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUI7SUFDMUIsSUFBSUMsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQ0FBLE1BQU07SUFDTixJQUFJMEcsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLElBQUk1RCxZQUFZLEdBQUc7TUFBRTJELFNBQVMsRUFBRUE7SUFBYixDQUFuQjtJQUNBMUgsTUFBTSxDQUFDQyxjQUFQLENBQXNCOEQsWUFBdEIsRUFBb0MsaUJBQXBDLEVBQXVEO01BQUVHLFVBQVUsRUFBRSxLQUFkO01BQXFCL0QsS0FBSyxFQUFFO0lBQTVCLENBQXZEO0lBQ0EsT0FBTzRELFlBQVA7RUFDSDtBQVR3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNKYTs7QUFDYixJQUFJbEUsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSUksT0FBTyxHQUFHWixlQUFlLENBQUNRLG1CQUFPLENBQUMsNENBQUQsQ0FBUixDQUE3Qjs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLGFBRGlDO0VBRXpDa0csS0FBSyxFQUFFO0lBQ0hNLFVBQVUsRUFBRTtNQUFFSixJQUFJLEVBQUVLLE9BQVI7TUFBaUJKLFFBQVEsRUFBRSxLQUEzQjtNQUFrQyxXQUFTO0lBQTNDO0VBRFQsQ0FGa0M7RUFLekNwRyxLQUFLLEVBQUUsZUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUI7SUFDMUIsSUFBSUMsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQ0FBLE1BQU07SUFDTixJQUFJMEcsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjs7SUFDQSxTQUFTd3dDLGNBQVQsQ0FBd0JueEMsSUFBeEIsRUFBOEI7TUFDMUIsSUFBSXpFLFFBQVEsR0FBRztRQUNYd0UsSUFBSSxFQUFFO01BREssQ0FBZjtNQUdBLElBQUk1RSxHQUFHLEdBQUdZLE1BQU0sQ0FBQzhILFFBQVAsQ0FBZ0J1dEMsTUFBaEIsR0FBeUIsaUJBQWlCcjJDLE1BQWpCLENBQXdCUSxRQUFRLENBQUN5RSxJQUFELENBQWhDLENBQW5DO01BQ0EsQ0FBQyxHQUFHdkcsT0FBTyxXQUFYLEVBQXFCO1FBQ2pCMEIsR0FBRyxFQUFFQSxHQURZO1FBRWpCRCxNQUFNLEVBQUUsS0FGUztRQUdqQkUsWUFBWSxFQUFFO01BSEcsQ0FBckIsRUFJR0MsSUFKSCxDQUlRLFVBQVUwTCxRQUFWLEVBQW9CO1FBQ3hCLElBQUl0TCxJQUFJLEdBQUcsSUFBSUMsSUFBSixDQUFTLENBQUNxTCxRQUFRLENBQUNwTCxJQUFWLENBQVQsRUFBMEI7VUFDakNxRSxJQUFJLEVBQUU7UUFEMkIsQ0FBMUIsQ0FBWDtRQUdBLElBQUlwRSxJQUFJLEdBQUdwQixRQUFRLENBQUNxQixhQUFULENBQXVCLEdBQXZCLENBQVg7UUFDQUQsSUFBSSxDQUFDRSxJQUFMLEdBQVlDLE1BQU0sQ0FBQ0MsR0FBUCxDQUFXQyxlQUFYLENBQTJCUixJQUEzQixDQUFaO1FBQ0FHLElBQUksQ0FBQ2cxQixRQUFMLEdBQWdCcjFCLFFBQVEsQ0FBQ3lFLElBQUQsQ0FBeEI7UUFDQXBFLElBQUksQ0FBQ1MsS0FBTDtNQUNILENBWkQ7SUFhSDs7SUFDRCxJQUFJVSxZQUFZLEdBQUc7TUFBRTJELFNBQVMsRUFBRUEsU0FBYjtNQUF3Qnl3QyxjQUFjLEVBQUVBO0lBQXhDLENBQW5CO0lBQ0FuNEMsTUFBTSxDQUFDQyxjQUFQLENBQXNCOEQsWUFBdEIsRUFBb0MsaUJBQXBDLEVBQXVEO01BQUVHLFVBQVUsRUFBRSxLQUFkO01BQXFCL0QsS0FBSyxFQUFFO0lBQTVCLENBQXZEO0lBQ0EsT0FBTzRELFlBQVA7RUFDSDtBQS9Cd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDUmE7O0FBQ2IvRCw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUl3RyxtQkFBbUIsR0FBR3hHLG1CQUFPLENBQUMsMkZBQUQsQ0FBakM7O0FBQ0FILGtCQUFBLEdBQWtCLENBQUMsR0FBR0UsS0FBSyxDQUFDTyxlQUFWLEVBQTJCO0VBQ3pDbUcsS0FBSyxFQUFFO0lBQ0g4QyxPQUFPLEVBQUU7TUFDTDVDLElBQUksRUFBRXVKLE1BREQ7TUFFTHRKLFFBQVEsRUFBRSxLQUZMO01BR0wsV0FBUztJQUhKO0VBRE4sQ0FEa0M7RUFRekNwRyxLQUFLLEVBQUUsaUJBQVk7SUFDZixJQUFJNkcsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjtJQUNBLE9BQU87TUFDSEQsU0FBUyxFQUFFQTtJQURSLENBQVA7RUFHSDtBQWJ3QyxDQUEzQixDQUFsQjs7Ozs7Ozs7Ozs7QUNKYTs7QUFDYixJQUFJdkQsU0FBUyxHQUFJLFFBQVEsS0FBS0EsU0FBZCxJQUE0QixVQUFVQyxPQUFWLEVBQW1CQyxVQUFuQixFQUErQkMsQ0FBL0IsRUFBa0NDLFNBQWxDLEVBQTZDO0VBQ3JGLFNBQVNDLEtBQVQsQ0FBZXJFLEtBQWYsRUFBc0I7SUFBRSxPQUFPQSxLQUFLLFlBQVltRSxDQUFqQixHQUFxQm5FLEtBQXJCLEdBQTZCLElBQUltRSxDQUFKLENBQU0sVUFBVUcsT0FBVixFQUFtQjtNQUFFQSxPQUFPLENBQUN0RSxLQUFELENBQVA7SUFBaUIsQ0FBNUMsQ0FBcEM7RUFBb0Y7O0VBQzVHLE9BQU8sS0FBS21FLENBQUMsS0FBS0EsQ0FBQyxHQUFHSSxPQUFULENBQU4sRUFBeUIsVUFBVUQsT0FBVixFQUFtQkUsTUFBbkIsRUFBMkI7SUFDdkQsU0FBU0MsU0FBVCxDQUFtQnpFLEtBQW5CLEVBQTBCO01BQUUsSUFBSTtRQUFFMEUsSUFBSSxDQUFDTixTQUFTLENBQUNPLElBQVYsQ0FBZTNFLEtBQWYsQ0FBRCxDQUFKO01BQThCLENBQXBDLENBQXFDLE9BQU80RSxDQUFQLEVBQVU7UUFBRUosTUFBTSxDQUFDSSxDQUFELENBQU47TUFBWTtJQUFFOztJQUMzRixTQUFTQyxRQUFULENBQWtCN0UsS0FBbEIsRUFBeUI7TUFBRSxJQUFJO1FBQUUwRSxJQUFJLENBQUNOLFNBQVMsQ0FBQyxPQUFELENBQVQsQ0FBbUJwRSxLQUFuQixDQUFELENBQUo7TUFBa0MsQ0FBeEMsQ0FBeUMsT0FBTzRFLENBQVAsRUFBVTtRQUFFSixNQUFNLENBQUNJLENBQUQsQ0FBTjtNQUFZO0lBQUU7O0lBQzlGLFNBQVNGLElBQVQsQ0FBY0ksTUFBZCxFQUFzQjtNQUFFQSxNQUFNLENBQUNDLElBQVAsR0FBY1QsT0FBTyxDQUFDUSxNQUFNLENBQUM5RSxLQUFSLENBQXJCLEdBQXNDcUUsS0FBSyxDQUFDUyxNQUFNLENBQUM5RSxLQUFSLENBQUwsQ0FBb0JrQyxJQUFwQixDQUF5QnVDLFNBQXpCLEVBQW9DSSxRQUFwQyxDQUF0QztJQUFzRjs7SUFDOUdILElBQUksQ0FBQyxDQUFDTixTQUFTLEdBQUdBLFNBQVMsQ0FBQ1ksS0FBVixDQUFnQmYsT0FBaEIsRUFBeUJDLFVBQVUsSUFBSSxFQUF2QyxDQUFiLEVBQXlEUyxJQUF6RCxFQUFELENBQUo7RUFDSCxDQUxNLENBQVA7QUFNSCxDQVJEOztBQVNBLElBQUlNLFdBQVcsR0FBSSxRQUFRLEtBQUtBLFdBQWQsSUFBOEIsVUFBVWhCLE9BQVYsRUFBbUJqQixJQUFuQixFQUF5QjtFQUNyRSxJQUFJa0MsQ0FBQyxHQUFHO0lBQUVDLEtBQUssRUFBRSxDQUFUO0lBQVlDLElBQUksRUFBRSxnQkFBVztNQUFFLElBQUlDLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBTyxDQUFYLEVBQWMsTUFBTUEsQ0FBQyxDQUFDLENBQUQsQ0FBUDtNQUFZLE9BQU9BLENBQUMsQ0FBQyxDQUFELENBQVI7SUFBYyxDQUF2RTtJQUF5RUMsSUFBSSxFQUFFLEVBQS9FO0lBQW1GQyxHQUFHLEVBQUU7RUFBeEYsQ0FBUjtFQUFBLElBQXNHQyxDQUF0RztFQUFBLElBQXlHQyxDQUF6RztFQUFBLElBQTRHSixDQUE1RztFQUFBLElBQStHSyxDQUEvRztFQUNBLE9BQU9BLENBQUMsR0FBRztJQUFFZixJQUFJLEVBQUVnQixJQUFJLENBQUMsQ0FBRCxDQUFaO0lBQWlCLFNBQVNBLElBQUksQ0FBQyxDQUFELENBQTlCO0lBQW1DLFVBQVVBLElBQUksQ0FBQyxDQUFEO0VBQWpELENBQUosRUFBNEQsT0FBT0MsTUFBUCxLQUFrQixVQUFsQixLQUFpQ0YsQ0FBQyxDQUFDRSxNQUFNLENBQUNDLFFBQVIsQ0FBRCxHQUFxQixZQUFXO0lBQUUsT0FBTyxJQUFQO0VBQWMsQ0FBakYsQ0FBNUQsRUFBZ0pILENBQXZKOztFQUNBLFNBQVNDLElBQVQsQ0FBY0csQ0FBZCxFQUFpQjtJQUFFLE9BQU8sVUFBVUMsQ0FBVixFQUFhO01BQUUsT0FBT3JCLElBQUksQ0FBQyxDQUFDb0IsQ0FBRCxFQUFJQyxDQUFKLENBQUQsQ0FBWDtJQUFzQixDQUE1QztFQUErQzs7RUFDbEUsU0FBU3JCLElBQVQsQ0FBY3NCLEVBQWQsRUFBa0I7SUFDZCxJQUFJUixDQUFKLEVBQU8sTUFBTSxJQUFJUyxTQUFKLENBQWMsaUNBQWQsQ0FBTjs7SUFDUCxPQUFPUCxDQUFDLEtBQUtBLENBQUMsR0FBRyxDQUFKLEVBQU9NLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVWQsQ0FBQyxHQUFHLENBQWQsQ0FBWixDQUFELEVBQWdDQSxDQUF2QztNQUEwQyxJQUFJO1FBQzFDLElBQUlNLENBQUMsR0FBRyxDQUFKLEVBQU9DLENBQUMsS0FBS0osQ0FBQyxHQUFHVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVEsQ0FBUixHQUFZUCxDQUFDLENBQUMsUUFBRCxDQUFiLEdBQTBCTyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFQLENBQUMsQ0FBQyxPQUFELENBQUQsS0FBZSxDQUFDSixDQUFDLEdBQUdJLENBQUMsQ0FBQyxRQUFELENBQU4sS0FBcUJKLENBQUMsQ0FBQ2EsSUFBRixDQUFPVCxDQUFQLENBQXJCLEVBQWdDLENBQS9DLENBQVIsR0FBNERBLENBQUMsQ0FBQ2QsSUFBakcsQ0FBRCxJQUEyRyxDQUFDLENBQUNVLENBQUMsR0FBR0EsQ0FBQyxDQUFDYSxJQUFGLENBQU9ULENBQVAsRUFBVU8sRUFBRSxDQUFDLENBQUQsQ0FBWixDQUFMLEVBQXVCakIsSUFBOUksRUFBb0osT0FBT00sQ0FBUDtRQUNwSixJQUFJSSxDQUFDLEdBQUcsQ0FBSixFQUFPSixDQUFYLEVBQWNXLEVBQUUsR0FBRyxDQUFDQSxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVEsQ0FBVCxFQUFZWCxDQUFDLENBQUNyRixLQUFkLENBQUw7O1FBQ2QsUUFBUWdHLEVBQUUsQ0FBQyxDQUFELENBQVY7VUFDSSxLQUFLLENBQUw7VUFBUSxLQUFLLENBQUw7WUFBUVgsQ0FBQyxHQUFHVyxFQUFKO1lBQVE7O1VBQ3hCLEtBQUssQ0FBTDtZQUFRZCxDQUFDLENBQUNDLEtBQUY7WUFBVyxPQUFPO2NBQUVuRixLQUFLLEVBQUVnRyxFQUFFLENBQUMsQ0FBRCxDQUFYO2NBQWdCakIsSUFBSSxFQUFFO1lBQXRCLENBQVA7O1VBQ25CLEtBQUssQ0FBTDtZQUFRRyxDQUFDLENBQUNDLEtBQUY7WUFBV00sQ0FBQyxHQUFHTyxFQUFFLENBQUMsQ0FBRCxDQUFOO1lBQVdBLEVBQUUsR0FBRyxDQUFDLENBQUQsQ0FBTDtZQUFVOztVQUN4QyxLQUFLLENBQUw7WUFBUUEsRUFBRSxHQUFHZCxDQUFDLENBQUNLLEdBQUYsQ0FBTVksR0FBTixFQUFMOztZQUFrQmpCLENBQUMsQ0FBQ0ksSUFBRixDQUFPYSxHQUFQOztZQUFjOztVQUN4QztZQUNJLElBQUksRUFBRWQsQ0FBQyxHQUFHSCxDQUFDLENBQUNJLElBQU4sRUFBWUQsQ0FBQyxHQUFHQSxDQUFDLENBQUNlLE1BQUYsR0FBVyxDQUFYLElBQWdCZixDQUFDLENBQUNBLENBQUMsQ0FBQ2UsTUFBRixHQUFXLENBQVosQ0FBbkMsTUFBdURKLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFWLElBQWVBLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVSxDQUFoRixDQUFKLEVBQXdGO2NBQUVkLENBQUMsR0FBRyxDQUFKO2NBQU87WUFBVzs7WUFDNUcsSUFBSWMsRUFBRSxDQUFDLENBQUQsQ0FBRixLQUFVLENBQVYsS0FBZ0IsQ0FBQ1gsQ0FBRCxJQUFPVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFYLENBQUMsQ0FBQyxDQUFELENBQVQsSUFBZ0JXLEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUVgsQ0FBQyxDQUFDLENBQUQsQ0FBaEQsQ0FBSixFQUEyRDtjQUFFSCxDQUFDLENBQUNDLEtBQUYsR0FBVWEsRUFBRSxDQUFDLENBQUQsQ0FBWjtjQUFpQjtZQUFROztZQUN0RixJQUFJQSxFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVUsQ0FBVixJQUFlZCxDQUFDLENBQUNDLEtBQUYsR0FBVUUsQ0FBQyxDQUFDLENBQUQsQ0FBOUIsRUFBbUM7Y0FBRUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQVg7Y0FBZ0JBLENBQUMsR0FBR1csRUFBSjtjQUFRO1lBQVE7O1lBQ3JFLElBQUlYLENBQUMsSUFBSUgsQ0FBQyxDQUFDQyxLQUFGLEdBQVVFLENBQUMsQ0FBQyxDQUFELENBQXBCLEVBQXlCO2NBQUVILENBQUMsQ0FBQ0MsS0FBRixHQUFVRSxDQUFDLENBQUMsQ0FBRCxDQUFYOztjQUFnQkgsQ0FBQyxDQUFDSyxHQUFGLENBQU1jLElBQU4sQ0FBV0wsRUFBWDs7Y0FBZ0I7WUFBUTs7WUFDbkUsSUFBSVgsQ0FBQyxDQUFDLENBQUQsQ0FBTCxFQUFVSCxDQUFDLENBQUNLLEdBQUYsQ0FBTVksR0FBTjs7WUFDVmpCLENBQUMsQ0FBQ0ksSUFBRixDQUFPYSxHQUFQOztZQUFjO1FBWHRCOztRQWFBSCxFQUFFLEdBQUdoRCxJQUFJLENBQUNrRCxJQUFMLENBQVVqQyxPQUFWLEVBQW1CaUIsQ0FBbkIsQ0FBTDtNQUNILENBakJ5QyxDQWlCeEMsT0FBT04sQ0FBUCxFQUFVO1FBQUVvQixFQUFFLEdBQUcsQ0FBQyxDQUFELEVBQUlwQixDQUFKLENBQUw7UUFBYWEsQ0FBQyxHQUFHLENBQUo7TUFBUSxDQWpCTyxTQWlCRTtRQUFFRCxDQUFDLEdBQUdILENBQUMsR0FBRyxDQUFSO01BQVk7SUFqQjFEOztJQWtCQSxJQUFJVyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVEsQ0FBWixFQUFlLE1BQU1BLEVBQUUsQ0FBQyxDQUFELENBQVI7SUFBYSxPQUFPO01BQUVoRyxLQUFLLEVBQUVnRyxFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFBLEVBQUUsQ0FBQyxDQUFELENBQVYsR0FBZ0IsS0FBSyxDQUE5QjtNQUFpQ2pCLElBQUksRUFBRTtJQUF2QyxDQUFQO0VBQy9CO0FBQ0osQ0ExQkQ7O0FBMkJBLElBQUlyRixlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLElBQUlDLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJSSxPQUFPLEdBQUdaLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0Q0FBRCxDQUFSLENBQTdCOztBQUNBLElBQUlzVyxZQUFZLEdBQUc5VyxlQUFlLENBQUNRLG1CQUFPLENBQUMsMEVBQUQsQ0FBUixDQUFsQzs7QUFDQSxJQUFJcXBDLFlBQVksR0FBRzdwQyxlQUFlLENBQUNRLG1CQUFPLENBQUMsNkVBQUQsQ0FBUixDQUFsQzs7QUFDQSxJQUFJd0csbUJBQW1CLEdBQUd4RyxtQkFBTyxDQUFDLDJGQUFELENBQWpDOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q2tNLFVBQVUsRUFBRTtJQUNSdUwsTUFBTSxFQUFFekIsWUFBWTtFQURaLENBRDZCO0VBSXpDN1AsS0FBSyxFQUFFO0lBQ0g4QyxPQUFPLEVBQUU7TUFDTDVDLElBQUksRUFBRXVKLE1BREQ7TUFFTHRKLFFBQVEsRUFBRSxLQUZMO01BR0wsV0FBUztJQUhKLENBRE47SUFNSDR4QyxNQUFNLEVBQUU7TUFDSjd4QyxJQUFJLEVBQUV1SixNQURGO01BRUp0SixRQUFRLEVBQUUsS0FGTjtNQUdKLFdBQVM7SUFITDtFQU5MLENBSmtDO0VBZ0J6Q3BHLEtBQUssRUFBRSxpQkFBWTtJQUNmLElBQUk2RyxTQUFTLEdBQUcsSUFBSWIsbUJBQW1CLENBQUNjLFNBQXhCLEVBQWhCO0lBQ0EsSUFBSXVsQixRQUFRLEdBQUcsQ0FBQyxHQUFHOXNCLEtBQUssQ0FBQ2dJLFFBQVYsRUFBb0I7TUFDL0IrcEMsUUFBUSxFQUFFLEVBRHFCO01BRS9CdkksUUFBUSxFQUFFO0lBRnFCLENBQXBCLENBQWY7SUFJQSxJQUFJM3lCLFNBQVMsR0FBRyxDQUFDLEdBQUc3VyxLQUFLLENBQUNnSSxRQUFWLEVBQW9CO01BQ2hDK3BDLFFBQVEsRUFBRSxFQURzQjtNQUVoQ3ZJLFFBQVEsRUFBRTtJQUZzQixDQUFwQixDQUFoQjtJQUlBLElBQUlyeUIsZUFBZSxHQUFHLENBQUMsR0FBR25YLEtBQUssQ0FBQ2dCLEdBQVYsRUFBZSxLQUFmLENBQXRCOztJQUNBLFNBQVMwM0MsS0FBVCxHQUFpQjtNQUNiLElBQUkvM0MsRUFBSjs7TUFDQSxPQUFPb0QsU0FBUyxDQUFDLElBQUQsRUFBTyxLQUFLLENBQVosRUFBZSxLQUFLLENBQXBCLEVBQXVCLFlBQVk7UUFDL0MsSUFBSTJsQyxJQUFKO1FBQ0EsT0FBTzFrQyxXQUFXLENBQUMsSUFBRCxFQUFPLFVBQVVvQyxFQUFWLEVBQWM7VUFDbkMrUCxlQUFlLENBQUNwWCxLQUFoQixHQUF3QixJQUF4QjtVQUNBMnBDLElBQUksR0FBRztZQUNIcUksUUFBUSxFQUFFamxCLFFBQVEsQ0FBQ2lsQixRQURoQjtZQUVIdkksUUFBUSxFQUFFLENBQUMsR0FBR0YsWUFBWSxXQUFoQixFQUEwQnhjLFFBQVEsQ0FBQzBjLFFBQW5DLEVBQTZDLENBQUM3b0MsRUFBRSxHQUFHZ3BDLE1BQU4sTUFBMEMsSUFBMUMsSUFBa0RocEMsRUFBRSxLQUFLLEtBQUssQ0FBOUQsR0FBa0VBLEVBQWxFLEdBQXVFLEVBQXBIO1VBRlAsQ0FBUDtVQUlBTixPQUFPLFdBQVAsQ0FDSytLLElBREwsQ0FDVSxRQURWLEVBQ29CcytCLElBRHBCLEVBRUt6bkMsSUFGTCxDQUVVLFVBQVUwTCxRQUFWLEVBQW9CO1lBQzFCa0osU0FBUyxDQUFDazdCLFFBQVYsR0FBcUIsRUFBckI7WUFDQWw3QixTQUFTLENBQUMyeUIsUUFBVixHQUFxQixFQUFyQjs7WUFDQSxJQUFJLEVBQUUsWUFBWTc3QixRQUFkLENBQUosRUFBNkI7Y0FDekJoTCxNQUFNLENBQUM4SCxRQUFQLENBQWdCa1YsTUFBaEI7WUFDSDtVQUNKLENBUkQsV0FTVyxVQUFVdFIsS0FBVixFQUFpQjtZQUN4QixJQUFJZ08sTUFBTSxHQUFHaE8sS0FBSyxDQUFDVixRQUFOLENBQWVwTCxJQUFmLENBQW9COFosTUFBakM7WUFDQXhGLFNBQVMsQ0FBQ2s3QixRQUFWLEdBQXFCMTFCLE1BQU0sQ0FBQzAxQixRQUFQLEdBQWtCMTFCLE1BQU0sQ0FBQzAxQixRQUFQLENBQWdCLENBQWhCLENBQWxCLEdBQXVDLEVBQTVEO1lBQ0FsN0IsU0FBUyxDQUFDMnlCLFFBQVYsR0FBcUJudEIsTUFBTSxDQUFDbXRCLFFBQVAsR0FBa0JudEIsTUFBTSxDQUFDbXRCLFFBQVAsQ0FBZ0IsQ0FBaEIsQ0FBbEIsR0FBdUMsRUFBNUQ7WUFDQXJ5QixlQUFlLENBQUNwWCxLQUFoQixHQUF3QixLQUF4QjtVQUNILENBZEQ7VUFlQSxPQUFPLENBQUM7VUFBRTtVQUFILENBQVA7UUFDSCxDQXRCaUIsQ0FBbEI7TUF1QkgsQ0F6QmUsQ0FBaEI7SUEwQkg7O0lBQ0QsT0FBTztNQUNIK3NCLFFBQVEsRUFBRUEsUUFEUDtNQUVIalcsU0FBUyxFQUFFQSxTQUZSO01BR0hNLGVBQWUsRUFBRUEsZUFIZDtNQUlIdWhDLEtBQUssRUFBRUEsS0FKSjtNQUtIcHhDLFNBQVMsRUFBRUE7SUFMUixDQUFQO0VBT0g7QUEvRHdDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBQzlDYTs7QUFDYixJQUFJN0gsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3Qzs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQSxJQUFJSSxPQUFPLEdBQUdaLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0Q0FBRCxDQUFSLENBQTdCOztBQUNBSCxrQkFBQSxHQUFrQixDQUFDLEdBQUdFLEtBQUssQ0FBQ08sZUFBVixFQUEyQjtFQUN6Q0MsTUFBTSxFQUFFLFdBRGlDO0VBRXpDQyxLQUFLLEVBQUUsZUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUI7SUFDMUIsSUFBSUMsTUFBTSxHQUFHRCxFQUFFLENBQUNDLE1BQWhCO0lBQ0FBLE1BQU07SUFDTixJQUFJMEcsU0FBUyxHQUFHLElBQUliLG1CQUFtQixDQUFDYyxTQUF4QixFQUFoQjs7SUFDQSxTQUFTd3dDLGNBQVQsQ0FBd0JueEMsSUFBeEIsRUFBOEI7TUFDMUIsSUFBSXpFLFFBQVEsR0FBRztRQUNYd0UsSUFBSSxFQUFFO01BREssQ0FBZjtNQUdBLElBQUk1RSxHQUFHLEdBQUdZLE1BQU0sQ0FBQzhILFFBQVAsQ0FBZ0J1dEMsTUFBaEIsR0FBeUIsaUJBQWlCcjJDLE1BQWpCLENBQXdCUSxRQUFRLENBQUN5RSxJQUFELENBQWhDLENBQW5DO01BQ0EsQ0FBQyxHQUFHdkcsT0FBTyxXQUFYLEVBQXFCO1FBQ2pCMEIsR0FBRyxFQUFFQSxHQURZO1FBRWpCRCxNQUFNLEVBQUUsS0FGUztRQUdqQkUsWUFBWSxFQUFFO01BSEcsQ0FBckIsRUFJR0MsSUFKSCxDQUlRLFVBQVUwTCxRQUFWLEVBQW9CO1FBQ3hCLElBQUl0TCxJQUFJLEdBQUcsSUFBSUMsSUFBSixDQUFTLENBQUNxTCxRQUFRLENBQUNwTCxJQUFWLENBQVQsRUFBMEI7VUFDakNxRSxJQUFJLEVBQUU7UUFEMkIsQ0FBMUIsQ0FBWDtRQUdBLElBQUlwRSxJQUFJLEdBQUdwQixRQUFRLENBQUNxQixhQUFULENBQXVCLEdBQXZCLENBQVg7UUFDQUQsSUFBSSxDQUFDRSxJQUFMLEdBQVlDLE1BQU0sQ0FBQ0MsR0FBUCxDQUFXQyxlQUFYLENBQTJCUixJQUEzQixDQUFaO1FBQ0FHLElBQUksQ0FBQ2cxQixRQUFMLEdBQWdCcjFCLFFBQVEsQ0FBQ3lFLElBQUQsQ0FBeEI7UUFDQXBFLElBQUksQ0FBQ1MsS0FBTDtNQUNILENBWkQ7SUFhSDs7SUFDRCxJQUFJVSxZQUFZLEdBQUc7TUFBRTJELFNBQVMsRUFBRUEsU0FBYjtNQUF3Qnl3QyxjQUFjLEVBQUVBO0lBQXhDLENBQW5CO0lBQ0FuNEMsTUFBTSxDQUFDQyxjQUFQLENBQXNCOEQsWUFBdEIsRUFBb0MsaUJBQXBDLEVBQXVEO01BQUVHLFVBQVUsRUFBRSxLQUFkO01BQXFCL0QsS0FBSyxFQUFFO0lBQTVCLENBQXZEO0lBQ0EsT0FBTzRELFlBQVA7RUFDSDtBQTVCd0MsQ0FBM0IsQ0FBbEI7Ozs7Ozs7Ozs7O0FDUmE7O0FBQ2IsSUFBSWxFLGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUkwNEMsaUJBQWlCLEdBQUdsNUMsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDZGQUFELENBQVIsQ0FBdkM7O0FBQ0EsSUFBSXdHLG1CQUFtQixHQUFHeEcsbUJBQU8sQ0FBQywyRkFBRCxDQUFqQzs7QUFDQUgsa0JBQUEsR0FBa0IsQ0FBQyxHQUFHRSxLQUFLLENBQUNPLGVBQVYsRUFBMkI7RUFDekNrTSxVQUFVLEVBQUU7SUFDUm1zQyxXQUFXLEVBQUVELGlCQUFpQjtFQUR0QixDQUQ2QjtFQUl6Q2p5QyxLQUFLLEVBQUU7SUFDSHdSLEtBQUssRUFBRTtNQUFFdFIsSUFBSSxFQUFFdUosTUFBUjtNQUFnQnRKLFFBQVEsRUFBRTtJQUExQixDQURKO0lBRUhneUMsSUFBSSxFQUFFO01BQUVqeUMsSUFBSSxFQUFFdUosTUFBUjtNQUFnQnRKLFFBQVEsRUFBRTtJQUExQixDQUZIO0lBR0hHLFVBQVUsRUFBRTtNQUFFSixJQUFJLEVBQUVLLE9BQVI7TUFBaUJKLFFBQVEsRUFBRSxLQUEzQjtNQUFrQyxXQUFTO0lBQTNDO0VBSFQsQ0FKa0M7RUFTekNwRyxLQUFLLEVBQUUsaUJBQVk7SUFDZixDQUFDLEdBQUdULEtBQUssQ0FBQ2tCLFNBQVYsRUFBcUIsWUFBWTtNQUM3QkUsUUFBUSxDQUFDMkIsSUFBVCxDQUFjeVAsU0FBZCxDQUF3QkMsR0FBeEIsQ0FBNEIsUUFBNUI7SUFDSCxDQUZEO0lBR0EsQ0FBQyxHQUFHelMsS0FBSyxDQUFDcU0sV0FBVixFQUF1QixZQUFZO01BQy9CakwsUUFBUSxDQUFDMkIsSUFBVCxDQUFjeVAsU0FBZCxDQUF3QkcsTUFBeEIsQ0FBK0IsUUFBL0I7SUFDSCxDQUZEO0lBR0EsSUFBSXJMLFNBQVMsR0FBRyxJQUFJYixtQkFBbUIsQ0FBQ2MsU0FBeEIsRUFBaEI7SUFDQSxPQUFPO01BQUVELFNBQVMsRUFBRUE7SUFBYixDQUFQO0VBQ0g7QUFsQndDLENBQTNCLENBQWxCOzs7Ozs7Ozs7OztBOUpSYTs7QUFDYjFILDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQ2JudUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJb3VDLFVBQVUsR0FBRztFQUNicHVDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCOztBQUlBLElBQUlxdUMsVUFBVSxHQUFHLGFBQWMsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztFQUFFLFNBQU87QUFBVCxDQUFyQyxFQUFrRSxDQUM3RixhQUFjLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M7RUFBRSxTQUFPO0FBQVQsQ0FBdEMsRUFBc0UsbUNBQXRFLENBRCtFLEVBRTdGLGFBQWMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztFQUFFLFNBQU87QUFBVCxDQUF0QyxFQUE2RSxRQUE3RSxDQUYrRSxDQUFsRSxFQUc1QixDQUFDO0FBQUU7QUFIeUIsQ0FBL0I7O0FBSUEsSUFBSUMsVUFBVSxHQUFHO0VBQ2J2dUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJd3VDLFVBQVUsR0FBRztFQUNieHVDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSXl1QyxVQUFVLEdBQUc7RUFDYnp1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUkwdUMsVUFBVSxHQUFHO0VBQ2IxdUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7O0FBSUEsSUFBSTJ1QyxVQUFVLEdBQUcsYUFBYyxDQUFDLEdBQUd4NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0VBQUUsU0FBTztBQUFULENBQW5DLEVBQTJFLGlDQUEzRSxFQUE4RyxDQUFDO0FBQUU7QUFBakgsQ0FBL0I7O0FBQ0EsSUFBSU0sV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLFNBQVNYLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSUMsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHaDZDLEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixTQUE1QixDQUF6Qjs7RUFDQSxPQUFRLENBQUMsR0FBR2o2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUNoRixDQUFDLEdBQUdwNkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSixVQUFyQyxFQUFpRCxDQUM1Q2MsTUFBTSxDQUFDMTJDLGlCQUFQLEtBQTZCLFdBQTlCLElBQ08sQ0FBQyxHQUFHbkQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztJQUMvRHR2QyxHQUFHLEVBQUUsQ0FEMEQ7SUFFL0QsU0FBTyx1RkFGd0Q7SUFHL0R3dkMsT0FBTyxFQUFFUixNQUFNLENBQUN4MkM7RUFIK0MsQ0FBeEMsRUFJeEIsQ0FDQyxDQUFDLEdBQUdyRCxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDLFNBQU8sU0FEZ0M7SUFFdkM1cEMsSUFBSSxFQUFFO0VBRmlDLENBQTNDLENBREQsQ0FKd0IsQ0FEL0IsSUFXTSxDQUFDLEdBQUdwUSxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FadUMsRUFhNUNWLE1BQU0sQ0FBQzEyQyxpQkFBUCxJQUE0QixRQUE3QixJQUNPLENBQUMsR0FBR25ELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNuQixVQUFyQyxFQUFpRCxDQUN4RSxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQ2pDNzNDLEtBQUssRUFBRSxDQUFDLEdBQUd0QixLQUFLLENBQUN3NkMsY0FBVixFQUEwQjtNQUFFbmlDLEtBQUssRUFBRXdoQyxNQUFNLENBQUN0MkMsZUFBUCxHQUF5QjtJQUFsQyxDQUExQixDQUQwQjtJQUVqQyxTQUFPO0VBRjBCLENBQXJDLEVBR0csSUFISCxFQUdTO0VBQUU7RUFIWCxDQUR3RSxDQUFqRCxDQUQvQixLQU9PLENBQUMsR0FBR3ZELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNsQixVQUFyQyxFQUFpRCxDQUN4RUMsVUFEd0UsRUFFeEUsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztJQUNwQyxTQUFPLGlFQUQ2QjtJQUVwQ2tCLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtNQUFFLE9BQVFaLE1BQU0sQ0FBQzk0QyxzQkFBUCxHQUFnQyxJQUF4QztJQUFnRCxDQUE5RjtFQUYyQixDQUF4QyxFQUdHLFNBSEgsQ0FGd0UsQ0FBakQsQ0FQL0IsQ0FiNkMsRUEyQjVDODRDLE1BQU0sQ0FBQzEyQyxpQkFBUCxJQUE0QixRQUE3QixJQUNPLENBQUMsR0FBR25ELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNmLFVBQXJDLEVBQWlELENBQ3ZFUyxNQUFNLENBQUMxMkMsaUJBQVAsSUFBNEIsV0FBNUIsSUFBMkMwMkMsTUFBTSxDQUFDMTJDLGlCQUFQLElBQTRCLFdBQXhFLElBQ08sQ0FBQyxHQUFHbkQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ2QsVUFBbkMsRUFBK0MsZ0JBQWdCLENBQUMsR0FBR3I1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDcDJDLFNBQVAsR0FBbUJvMkMsTUFBTSxDQUFDcDJDLFNBQTFCLEdBQXNDLENBQWpFLENBQWhCLEdBQXNGLHdCQUFySSxFQUErSjtFQUFFO0VBQWpLLENBRC9CLElBRU0sQ0FBQyxHQUFHekQsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBSGtFLEVBSXZFVixNQUFNLENBQUMxMkMsaUJBQVAsSUFBNEIsV0FBN0IsSUFDTyxDQUFDLEdBQUduRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DYixVQUFuQyxFQUErQyx3QkFBL0MsQ0FEL0IsSUFFTSxDQUFDLEdBQUd0NUMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBTmtFLEVBT3ZFVixNQUFNLENBQUMxMkMsaUJBQVAsSUFBNEIsV0FBN0IsSUFDTyxDQUFDLEdBQUduRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DWixVQUFuQyxFQUErQyxxQkFBL0MsQ0FEL0IsSUFFTSxDQUFDLEdBQUd2NUMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBVGtFLEVBVXZFVixNQUFNLENBQUMxMkMsaUJBQVAsSUFBNEIsV0FBN0IsSUFDTyxDQUFDLEdBQUduRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxlQUFELENBQTdCLEVBQWdEO0lBQUVodkMsR0FBRyxFQUFFO0VBQVAsQ0FBaEQsQ0FEL0IsSUFFTSxDQUFDLEdBQUc3SyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0Faa0UsRUFhdkVWLE1BQU0sQ0FBQzEyQyxpQkFBUCxJQUE0QixXQUE3QixJQUNPLENBQUMsR0FBR25ELEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0M7SUFDL0R0dkMsR0FBRyxFQUFFLENBRDBEO0lBRS9ELFNBQU8saUVBRndEO0lBRy9Ed3ZDLE9BQU8sRUFBRVIsTUFBTSxDQUFDcjRDO0VBSCtDLENBQXhDLEVBSXhCLFlBSndCLENBRC9CLElBTU0sQ0FBQyxHQUFHeEIsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBbkJrRSxDQUFqRCxDQUQvQixJQXNCTSxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBakR1QyxDQUFqRCxDQURnRixFQW9EaEYsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsT0FBRCxDQUE3QixFQUF3QztJQUNwQyxnQkFBZ0JBLE1BQU0sQ0FBQzk0QyxzQkFEYTtJQUVwQ3NYLEtBQUssRUFBRTtFQUY2QixDQUF4QyxFQUdHO0lBQ0MsV0FBUyxDQUFDLEdBQUdyWSxLQUFLLENBQUM0NkMsT0FBVixFQUFtQixZQUFZO01BQUUsT0FBTyxDQUM3Q3BCLFVBRDZDLEVBRTdDLENBQUMsR0FBR3g1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNNLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3o1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0M7UUFDcEMsU0FBTyxXQUQ2QjtRQUVwQ2tCLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtVQUFFLE9BQVFaLE1BQU0sQ0FBQzk0QyxzQkFBUCxHQUFnQyxLQUF4QztRQUFpRCxDQUEvRjtNQUYyQixDQUF4QyxFQUdHLFVBSEgsQ0FEOEMsRUFLOUMsQ0FBQyxHQUFHZixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0M7UUFDcEMsU0FBTyxhQUQ2QjtRQUVwQ2tCLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtVQUFFLE9BQVFaLE1BQU0sQ0FBQzMyQyxhQUFQLEVBQVI7UUFBa0MsQ0FBaEY7TUFGMkIsQ0FBeEMsRUFHRyxPQUhILENBTDhDLENBQWxELENBRjZDLENBQVA7SUFZdEMsQ0FaSyxDQURWO0lBY0MrQixDQUFDLEVBQUU7SUFBRTs7RUFkTixDQUhILEVBa0JHO0VBQUU7RUFsQkwsRUFrQmtCLENBQUMsY0FBRCxDQWxCbEIsQ0FwRGdGLENBQXBELEVBdUU3QjtFQUFHO0VBdkUwQixDQUFoQztBQXdFSDs7QUFDRG5GLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDOUdhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk0NkMsWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBVWgxQyxDQUFWLEVBQWE7RUFBRSxPQUFRLENBQUMsR0FBRzdGLEtBQUssQ0FBQzg2QyxXQUFWLEVBQXVCLGlCQUF2QixHQUEyQ2oxQyxDQUFDLEdBQUdBLENBQUMsRUFBaEQsRUFBb0QsQ0FBQyxHQUFHN0YsS0FBSyxDQUFDKzZDLFVBQVYsR0FBcEQsRUFBNkVsMUMsQ0FBckY7QUFBMEYsQ0FBNUg7O0FBQ0EsSUFBSWt6QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7O0FBQ0EsSUFBSUMsVUFBVSxHQUFHLGFBQWM2QixZQUFZLENBQUMsWUFBWTtFQUFFO0VBQWMsT0FBTyxDQUFDLEdBQUc3NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQ2hIM3dDLEVBQUUsRUFBRSxXQUQ0RztJQUVoSCxTQUFPO0VBRnlHLENBQXJDLEVBRzVFLENBQ0MsYUFBYyxDQUFDLEdBQUd4SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M7SUFBRSxTQUFPO0VBQVQsQ0FBdEMsQ0FEZixFQUVDLGFBQWMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztJQUFFLFNBQU87RUFBVCxDQUF0QyxDQUZmLEVBR0MsYUFBYyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDO0lBQUUsU0FBTztFQUFULENBQXRDLENBSGYsQ0FINEUsRUFPNUUsQ0FBQztFQUFFO0VBUHlFLENBQVA7QUFPakQsQ0FQb0IsQ0FBM0M7O0FBUUEsSUFBSUYsVUFBVSxHQUFHLENBQ2JELFVBRGEsQ0FBakI7QUFHQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUcsQ0FBQyxNQUFELENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQ2I3d0MsRUFBRSxFQUFFLFVBRFM7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJOHdDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRyxDQUFDLElBQUQsRUFBTyxNQUFQLENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsTUFBRCxDQUFsQjtBQUNBLElBQUl1QixXQUFXLEdBQUc7RUFDZG53QyxHQUFHLEVBQUUsQ0FEUztFQUVkdkosS0FBSyxFQUFFO0lBQUUsY0FBYztFQUFoQixDQUZPO0VBR2QsU0FBTztBQUhPLENBQWxCO0FBS0EsSUFBSTI1QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZDN5QyxFQUFFLEVBQUUsd0JBRFU7RUFFZCxTQUFPLDJCQUZPO0VBR2Q5RixJQUFJLEVBQUU7QUFIUSxDQUFsQjtBQUtBLElBQUkwNEMsV0FBVyxHQUFHO0VBQ2Q1eUMsRUFBRSxFQUFFLG1CQURVO0VBRWQsU0FBTywyQkFGTztFQUdkOUYsSUFBSSxFQUFFO0FBSFEsQ0FBbEI7QUFLQSxJQUFJMjRDLFdBQVcsR0FBRztFQUNkeHdDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSXl3QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZDN3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUk0d0MsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2Q3d0MsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJOHdDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLGFBQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxhQUFELENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2RueEMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJb3hDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkLFNBQU8sdUJBRE87RUFFZDM1QyxJQUFJLEVBQUU7QUFGUSxDQUFsQjtBQUlBLElBQUk0NUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2QsU0FBTyx1QkFETztFQUVkajZDLElBQUksRUFBRTtBQUZRLENBQWxCO0FBSUEsSUFBSWs2QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsU0FBUzlELE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSXA1QyxFQUFKLEVBQVF5RyxFQUFSOztFQUNBLElBQUk0eUMsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHaDZDLEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixTQUE1QixDQUF6Qjs7RUFDQSxPQUFRLENBQUMsR0FBR2o2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO0lBQ3BFLFNBQU8sQ0FBQyxHQUFHbjZDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUNoRCxNQUFNLENBQUM1NEMsU0FBUCxJQUFvQixRQUFyQixFQUErQiw0SUFBL0IsQ0FBMUI7RUFENkQsQ0FBeEMsRUFFN0IsQ0FDRTQ0QyxNQUFNLENBQUNueUMsZUFBUixJQUNPLENBQUMsR0FBRzFILEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QmQsTUFBTSxDQUFDLE9BQUQsQ0FBN0IsRUFBd0M7SUFDL0RodkMsR0FBRyxFQUFFLENBRDBEO0lBRS9ELFNBQU8sa0JBRndEO0lBRy9EckIsT0FBTyxFQUFFcXdDLE1BQU0sQ0FBQy94QyxZQUgrQztJQUkvRGxCLElBQUksRUFBRWl6QyxNQUFNLENBQUM5eEM7RUFKa0QsQ0FBeEMsRUFLeEIsSUFMd0IsRUFLbEI7RUFBRTtFQUxnQixFQUtILENBQUMsU0FBRCxFQUFZLE1BQVosQ0FMRyxDQUQvQixJQU9NLENBQUMsR0FBRy9ILEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQVJQLEVBU0MsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0osVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUNqQyxTQUFPLGdCQUQwQjtJQUVqQ2tCLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQ25CLFlBQVk7TUFDUkUsTUFBTSxDQUFDaHlDLFdBQVAsR0FBcUIsQ0FBQ2d5QyxNQUFNLENBQUNoeUMsV0FBN0I7SUFDSCxDQUhJO0VBRndCLENBQXJDLEVBTUdveEMsVUFOSCxDQUQ2QyxFQVE3QyxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDRCxVQUF4QyxFQUFvRCxDQUNoRCxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0lBQy9CejJDLElBQUksRUFBRWszQyxNQUFNLENBQUM1eUMsVUFBUCxHQUFvQixxQkFBcEIsR0FBNEM7RUFEbkIsQ0FBbkMsRUFFRyxDQUNDLENBQUMsR0FBR2hILEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkM1cEMsSUFBSSxFQUFFLE1BRGlDO0lBRXZDLFNBQU87RUFGZ0MsQ0FBM0MsQ0FERCxDQUZILEVBT0c7RUFBRTtFQVBMLEVBT2tCZ3BDLFVBUGxCLENBRGdELENBQXBELENBUjZDLEVBa0I3QyxDQUFDLEdBQUdwNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQ2pDM3dDLEVBQUUsRUFBRSx1QkFENkI7SUFFakM2eEMsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FDbkIsWUFBWTtNQUNSRSxNQUFNLENBQUNoeUMsV0FBUCxHQUFxQixDQUFDZ3lDLE1BQU0sQ0FBQ2h5QyxXQUE3QjtJQUNILENBSEk7RUFGd0IsQ0FBckMsQ0FsQjZDLENBQWpELENBVEQsRUFtQ0MsQ0FBQyxHQUFHN0gsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRSxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdyNUMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLHVFQUE5QixDQUQ2QyxFQUU3QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLHlEQUE5QixDQUY2QyxFQUc3QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NHLFVBQXBDLEVBQWdELEVBQzNDLENBQUMsR0FBR3Q1QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JqRCxNQUFNLENBQUN0M0MsSUFBUCxDQUFZOEYsU0FBbEMsRUFBNkMsVUFBVUMsUUFBVixFQUFvQitKLEtBQXBCLEVBQTJCO0lBQ3JKLE9BQVEsQ0FBQyxHQUFHclMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztNQUNoRXR2QyxHQUFHLEVBQUV3SCxLQUQyRDtNQUVoRSxTQUFPLENBQUMsR0FBR3JTLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCaEQsTUFBTSxDQUFDdDNDLElBQVAsQ0FBWTBGLG9CQUF0QztJQUZ5RCxDQUFwQyxFQUc3QixDQUNDLENBQUMsR0FBR2pJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztNQUMvQjN3QyxFQUFFLEVBQUVGLFFBQVEsQ0FBQ0UsRUFEa0I7TUFFL0IsU0FBTyxDQUFDLEdBQUd4SSxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUM3QjtRQUFFRSxZQUFZLEVBQUV6MEMsUUFBUSxDQUFDRztNQUF6QixDQUQ2QixFQUU3Qm94QyxNQUFNLENBQUN0M0MsSUFBUCxDQUFZMkYsd0JBRmlCLENBQTFCLENBRndCO01BTS9CeEYsSUFBSSxFQUFFNEYsUUFBUSxDQUFDQztJQU5nQixDQUFuQyxFQU9HLENBQ0MsQ0FBQyxHQUFHdkksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnB5QyxRQUFRLENBQUNBLFFBQXBDLENBQTVDLEVBQTJGO0lBQUU7SUFBN0YsQ0FERCxDQVBILEVBU0c7SUFBRztJQVROLEVBUzBCaXhDLFVBVDFCLENBREQsQ0FINkIsRUFjN0I7SUFBRTtJQWQyQixDQUFoQztFQWVILENBaEJnRixDQUFwRCxFQWdCekI7RUFBSTtFQWhCcUIsQ0FEZSxFQUFoRCxDQUR1QyxFQW9CdkMsQ0FBQyxHQUFHdjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ0ssVUFBcEMsRUFBZ0QsRUFDM0MsQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQmpELE1BQU0sQ0FBQ3QzQyxJQUFQLENBQVlxM0MsTUFBTSxDQUFDNXlDLFVBQVAsR0FBb0Isa0JBQXBCLEdBQXlDLFdBQXJELENBQXRCLEVBQXlGLFVBQVU0RCxJQUFWLEVBQWdCeUgsS0FBaEIsRUFBdUI7SUFDN0wsT0FBUSxDQUFDLEdBQUdyUyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DO01BQ2hFdHZDLEdBQUcsRUFBRXdILEtBRDJEO01BRWhFLFNBQU8sQ0FBQyxHQUFHclMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FDN0JoRCxNQUFNLENBQUN0M0MsSUFBUCxDQUFZNEYsZ0JBRGlCLEVBRTdCMHhDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCb0IsT0FBakIsQ0FBeUIsUUFBekIsTUFBdUMsSUFBdkMsR0FBOEMsTUFBOUMsR0FBdUQsTUFGMUIsQ0FBMUIsQ0FGeUQ7TUFNaEVwSCxLQUFLLEVBQUUsQ0FBQyxHQUFHdEIsS0FBSyxDQUFDdzZDLGNBQVYsRUFBMEJYLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCb0IsT0FBakIsQ0FBeUIsUUFBekIsTUFBdUMsSUFBdkMsR0FDM0I7UUFBRSxjQUFjO01BQWhCLENBRDJCLEdBRTNCLEVBRkM7SUFOeUQsQ0FBcEMsRUFTN0IsQ0FDRWtDLElBQUksQ0FBQ2hDLElBQUwsS0FBY2l4QyxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLHFCQUE1QixDQUFkLElBQ0c4QixJQUFJLENBQUNoQyxJQUFMLEtBQWNpeEMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIwMUMsT0FBakIsQ0FBeUIsU0FBekIsQ0FEbEIsSUFFTyxDQUFDLEdBQUdoOUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztNQUMxRHR2QyxHQUFHLEVBQUUsQ0FEcUQ7TUFFMUQsU0FBTyxDQUFDLEdBQUc3SyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUM3QjtRQUFFRSxZQUFZLEVBQUVueUMsSUFBSSxDQUFDbkM7TUFBckIsQ0FENkIsRUFFN0JveEMsTUFBTSxDQUFDdDNDLElBQVAsQ0FBWTZGLG9CQUZpQixDQUExQixDQUZtRDtNQU0xRDFGLElBQUksRUFBRWtJLElBQUksQ0FBQ3JDO0lBTitDLENBQW5DLEVBT3hCLENBQ0MsQ0FBQyxHQUFHdkksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQjl2QyxJQUFJLENBQUNoQyxJQUFoQyxDQUE1QyxFQUFtRjtJQUFFO0lBQXJGLENBREQsQ0FQd0IsRUFTeEI7SUFBRztJQVRxQixFQVNENndDLFdBVEMsQ0FGL0IsSUFZTSxDQUFDLEdBQUd6NUMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBYlAsRUFjRTN2QyxJQUFJLENBQUNoQyxJQUFMLEtBQWNpeEMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixxQkFBNUIsQ0FBZixJQUNPLENBQUMsR0FBRzlJLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7TUFDNUR0dkMsR0FBRyxFQUFFLENBRHVEO01BRTVELFNBQU8sQ0FBQyxHQUFHN0ssS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxDQUMxQjtRQUFFRSxZQUFZLEVBQUVueUMsSUFBSSxDQUFDbkM7TUFBckIsQ0FEMEIsRUFFMUJveEMsTUFBTSxDQUFDdDNDLElBQVAsQ0FBWTZGLG9CQUZjLENBQUQsRUFHMUIsNEJBSDBCLENBQTFCO0lBRnFELENBQXJDLEVBTXhCLENBQ0MsQ0FBQyxHQUFHcEksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pDLFNBQU8sK0NBRDBCO01BRWpDa0IsT0FBTyxFQUFFUixNQUFNLENBQUMzdkM7SUFGaUIsQ0FBckMsRUFHRyxDQUNDLENBQUMsR0FBR2xLLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkI5dkMsSUFBSSxDQUFDaEMsSUFBaEMsQ0FBNUMsRUFBbUY7SUFBRTtJQUFyRixDQURELEVBRUMsQ0FBQyxHQUFHNUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQ3hDLENBQUMsR0FBR241QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO01BQ3ZDLFNBQU8sQ0FBQyxHQUFHaDZDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUM7UUFBRSxjQUFjaEQsTUFBTSxDQUFDN3ZDO01BQXZCLENBQUQsRUFBOEMseUJBQTlDLENBQTFCLENBRGdDO01BRXZDb0csSUFBSSxFQUFFO0lBRmlDLENBQTNDLEVBR0csSUFISCxFQUdTO0lBQUU7SUFIWCxFQUd3QixDQUFDLE9BQUQsQ0FIeEIsQ0FEd0MsQ0FBNUMsQ0FGRCxFQVFFeEYsSUFBSSxDQUFDaEMsSUFBTCxLQUFjaXhDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIscUJBQTVCLENBQWYsSUFDTyxDQUFDLEdBQUc5SSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDYSxXQUFyQyxFQUFrRCxDQUN6RSxDQUFDLEdBQUdoN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DOEIsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHajdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO01BQy9CM3dDLEVBQUUsRUFBRSw4QkFEMkI7TUFFL0IsU0FBTyxDQUFDLEdBQUd4SSxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLGdCQUFELEVBQW1CaEQsTUFBTSxDQUFDM3dDLE9BQTFCLENBQTFCLENBRndCO01BRy9CbXhDLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtRQUFFLE9BQVFaLE1BQU0sQ0FBQ3h3QyxVQUFQLEdBQW9CLElBQTVCO01BQW9DLENBQWxGO0lBSHNCLENBQW5DLEVBSUcsQ0FBQyxHQUFHckosS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsdUJBQTVCLENBQTNCLENBSkgsRUFJcUY7SUFBRTtJQUp2RixDQURzQyxDQUExQyxDQUQ2QyxFQVE3QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztNQUMvQjN3QyxFQUFFLEVBQUUsd0JBRDJCO01BRS9COUYsSUFBSSxFQUFFLFNBRnlCO01BRy9CLFNBQU8sQ0FBQyxHQUFHMUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEJoRCxNQUFNLENBQUMzd0MsT0FBakM7SUFId0IsQ0FBbkMsRUFJRyxDQUFDLEdBQUdsSixLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0Qiw0QkFBNUIsQ0FBM0IsQ0FKSCxFQUkwRjtJQUFFO0lBSjVGLENBRHNDLENBQTFDLENBUjZDLEVBZTdDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO01BQy9CM3dDLEVBQUUsRUFBRSxtQkFEMkI7TUFFL0I5RixJQUFJLEVBQUUsYUFGeUI7TUFHL0IsU0FBTyxDQUFDLEdBQUcxQyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQmhELE1BQU0sQ0FBQzN3QyxPQUFqQztJQUh3QixDQUFuQyxFQUlHLENBQUMsR0FBR2xKLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLDRCQUE1QixDQUEzQixDQUpILEVBSTBGO0lBQUU7SUFKNUYsQ0FEc0MsQ0FBMUMsQ0FmNkMsQ0FBakQsQ0FEeUUsQ0FBbEQsQ0FEL0IsSUEwQk0sQ0FBQyxHQUFHOUksS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBbENQLENBSEgsQ0FERCxFQXdDQyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pDOEQsT0FBTyxFQUFFLElBRHdCO01BRWpDajhDLEdBQUcsRUFBRSxpQkFGNEI7TUFHakMsU0FBTyxDQUFDLEdBQUdoQixLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLENBQUNoRCxNQUFNLENBQUNweUMsb0JBQVAsR0FBOEIsU0FBOUIsR0FBMEMsV0FBM0MsQ0FBRCxFQUEwRCwrQ0FBMUQsQ0FBMUIsQ0FIMEI7TUFJakNuRyxLQUFLLEVBQUUsQ0FBQyxHQUFHdEIsS0FBSyxDQUFDdzZDLGNBQVYsRUFBMEI7UUFDN0JsZCxNQUFNLEVBQUUsR0FBRzM3QixNQUFILENBQVVrNEMsTUFBTSxDQUFDcHlDLG9CQUFQLEdBQThCb3lDLE1BQU0sQ0FBQ2p5QyxzQkFBckMsR0FBOEQsS0FBeEU7TUFEcUIsQ0FBMUI7SUFKMEIsQ0FBckMsRUFPRyxDQUNDLENBQUMsR0FBRzVILEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQytCLFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBR2w3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztNQUMvQjN3QyxFQUFFLEVBQUUsOEJBRDJCO01BRS9CLFNBQU8sMkJBRndCO01BRy9CNnhDLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtRQUFFLE9BQVFaLE1BQU0sQ0FBQ3h3QyxVQUFQLEdBQW9CLElBQTVCO01BQW9DLENBQWxGO0lBSHNCLENBQW5DLEVBSUcsQ0FBQyxHQUFHckosS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsdUJBQTVCLENBQTNCLENBSkgsRUFJcUY7SUFBRTtJQUp2RixDQURzQyxDQUExQyxDQUQ2QyxFQVE3QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ2dDLFdBQW5DLEVBQWdELENBQUMsR0FBR243QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0Qiw0QkFBNUIsQ0FBM0IsQ0FBaEQsRUFBdUk7SUFBRTtJQUF6SSxDQURzQyxDQUExQyxDQVI2QyxFQVc3QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ2lDLFdBQW5DLEVBQWdELENBQUMsR0FBR3A3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0Qiw0QkFBNUIsQ0FBM0IsQ0FBaEQsRUFBdUk7SUFBRTtJQUF6SSxDQURzQyxDQUExQyxDQVg2QyxDQUFqRCxDQURELENBUEgsRUF1Qkc7SUFBRTtJQXZCTCxDQXhDRCxDQU53QixFQXNFeEI7SUFBRTtJQXRFc0IsQ0FEL0IsSUF3RU0sQ0FBQyxHQUFHOUksS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBdEZQLEVBdUZFM3ZDLElBQUksQ0FBQ2hDLElBQUwsS0FBY2l4QyxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQjAxQyxPQUFqQixDQUF5QixTQUF6QixDQUFmLElBQ08sQ0FBQyxHQUFHaDlDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNrQixXQUFyQyxFQUFrRCxDQUN6RSxDQUFDLEdBQUdyN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DbUMsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHdDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO01BQy9CejJDLElBQUksRUFBRSxHQUR5QjtNQUUvQixTQUFPLENBQUMsR0FBRzFDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCaEQsTUFBTSxDQUFDM3dDLE9BQWpDO0lBRndCLENBQW5DLEVBR0csQ0FBQyxHQUFHbEosS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCMDFDLE9BQWpCLENBQXlCLE9BQXpCLENBQTNCLENBSEgsRUFHa0U7SUFBRTtJQUhwRSxDQURzQyxDQUExQyxDQUQ2QyxFQU83QyxDQUFDLEdBQUdoOUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7TUFDL0J6MkMsSUFBSSxFQUFFLEdBRHlCO01BRS9CLFNBQU8sQ0FBQyxHQUFHMUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEJoRCxNQUFNLENBQUMzd0MsT0FBakM7SUFGd0IsQ0FBbkMsRUFHRyxDQUFDLEdBQUdsSixLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIwMUMsT0FBakIsQ0FBeUIsS0FBekIsQ0FBM0IsQ0FISCxFQUdnRTtJQUFFO0lBSGxFLENBRHNDLENBQTFDLENBUDZDLEVBYTdDLENBQUMsR0FBR2g5QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztNQUMvQnoyQyxJQUFJLEVBQUUsYUFEeUI7TUFFL0IsU0FBTyxDQUFDLEdBQUcxQyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQmhELE1BQU0sQ0FBQzN3QyxPQUFqQztJQUZ3QixDQUFuQyxFQUdHLENBQUMsR0FBR2xKLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQjAxQyxPQUFqQixDQUF5QixPQUF6QixDQUEzQixDQUhILEVBR2tFO0lBQUU7SUFIcEUsQ0FEc0MsQ0FBMUMsQ0FiNkMsRUFtQjdDLENBQUMsR0FBR2g5QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztNQUMvQnoyQyxJQUFJLEVBQUUsU0FEeUI7TUFFL0IsU0FBTyxDQUFDLEdBQUcxQyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQmhELE1BQU0sQ0FBQzN3QyxPQUFqQztJQUZ3QixDQUFuQyxFQUdHLENBQUMsR0FBR2xKLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQjAxQyxPQUFqQixDQUF5QixRQUF6QixDQUEzQixDQUhILEVBR21FO0lBQUU7SUFIckUsQ0FEc0MsQ0FBMUMsQ0FuQjZDLENBQWpELENBRHlFLENBQWxELENBRC9CLElBNkJNLENBQUMsR0FBR2g5QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FwSFAsRUFxSEUzdkMsSUFBSSxDQUFDaEMsSUFBTCxLQUFjaXhDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCMDFDLE9BQWpCLENBQXlCLFNBQXpCLENBQWYsSUFDTyxDQUFDLEdBQUdoOUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztNQUM3RHR2QyxHQUFHLEVBQUUsQ0FEd0Q7TUFFN0QsU0FBTyxDQUFDLEdBQUc3SyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUM3QjtRQUFFRSxZQUFZLEVBQUVueUMsSUFBSSxDQUFDbkM7TUFBckIsQ0FENkIsRUFFN0JveEMsTUFBTSxDQUFDdDNDLElBQVAsQ0FBWTZGLG9CQUZpQixDQUExQjtJQUZzRCxDQUF0QyxFQU14QixDQUNDLENBQUMsR0FBR3BJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ29DLFdBQXRDLEVBQW1ELENBQy9DLENBQUMsR0FBR3Y3QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkI5dkMsSUFBSSxDQUFDaEMsSUFBaEMsSUFBd0MsR0FBbkUsRUFBd0U7SUFBRTtJQUExRSxDQUQrQyxFQUU5Q2dDLElBQUksQ0FBQ2hDLElBQUwsS0FBY2l4QyxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQjAxQyxPQUFqQixDQUF5QixTQUF6QixDQUFmLElBQ08sQ0FBQyxHQUFHaDlDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNxQixXQUFyQyxFQUFrRCxDQUN6RSxDQUFDLEdBQUd4N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9Dc0MsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHejdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO01BQy9CejJDLElBQUksRUFBRSxHQUR5QjtNQUUvQixTQUFPLENBQUMsR0FBRzFDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsZ0JBQUQsRUFBbUJoRCxNQUFNLENBQUMzd0MsT0FBMUIsQ0FBMUI7SUFGd0IsQ0FBbkMsRUFHRyxDQUFDLEdBQUdsSixLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIwMUMsT0FBakIsQ0FBeUIsT0FBekIsQ0FBM0IsQ0FISCxFQUdrRTtJQUFFO0lBSHBFLENBRHNDLENBQTFDLENBRDZDLEVBTzdDLENBQUMsR0FBR2g5QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztNQUMvQnoyQyxJQUFJLEVBQUUsR0FEeUI7TUFFL0IsU0FBTyxDQUFDLEdBQUcxQyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQmhELE1BQU0sQ0FBQzN3QyxPQUFqQztJQUZ3QixDQUFuQyxFQUdHLENBQUMsR0FBR2xKLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQjAxQyxPQUFqQixDQUF5QixLQUF6QixDQUEzQixDQUhILEVBR2dFO0lBQUU7SUFIbEUsQ0FEc0MsQ0FBMUMsQ0FQNkMsRUFhN0MsQ0FBQyxHQUFHaDlDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO01BQy9CejJDLElBQUksRUFBRSxhQUR5QjtNQUUvQixTQUFPLENBQUMsR0FBRzFDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCaEQsTUFBTSxDQUFDM3dDLE9BQWpDO0lBRndCLENBQW5DLEVBR0csQ0FBQyxHQUFHbEosS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCMDFDLE9BQWpCLENBQXlCLE9BQXpCLENBQTNCLENBSEgsRUFHa0U7SUFBRTtJQUhwRSxDQURzQyxDQUExQyxDQWI2QyxFQW1CN0MsQ0FBQyxHQUFHaDlDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO01BQy9CejJDLElBQUksRUFBRSxpQkFEeUI7TUFFL0IsU0FBTyxDQUFDLEdBQUcxQyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQmhELE1BQU0sQ0FBQzN3QyxPQUFqQztJQUZ3QixDQUFuQyxFQUdHLENBQUMsR0FBR2xKLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQjAxQyxPQUFqQixDQUF5QixRQUF6QixDQUEzQixDQUhILEVBR21FO0lBQUU7SUFIckUsQ0FEc0MsQ0FBMUMsQ0FuQjZDLENBQWpELENBRHlFLENBQWxELENBRC9CLElBNkJNLENBQUMsR0FBR2g5QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0EvQnlDLENBQW5ELENBREQsQ0FOd0IsRUF3Q3hCO0lBQUU7SUF4Q3NCLENBRC9CLElBMENNLENBQUMsR0FBR3Y2QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0EvSlAsRUFnS0UzdkMsSUFBSSxDQUFDaEMsSUFBTCxLQUFjaXhDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIscUJBQTVCLENBQWYsSUFDTyxDQUFDLEdBQUc5SSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDdUIsV0FBckMsRUFBa0QsQ0FDekUsQ0FBQyxHQUFHMTdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ3dDLFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBRzM3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztNQUMvQixTQUFPLENBQUMsR0FBR241QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQmhELE1BQU0sQ0FBQzN3QyxPQUFqQyxDQUR3QjtNQUUvQm14QyxPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7UUFBRSxPQUFRWixNQUFNLENBQUN4d0MsVUFBUCxHQUFvQixJQUE1QjtNQUFvQyxDQUFsRjtJQUZzQixDQUFuQyxFQUdHLENBQUMsR0FBR3JKLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLHVCQUE1QixDQUEzQixDQUhILEVBR3FGO0lBQUU7SUFIdkYsQ0FEc0MsQ0FBMUMsQ0FENkMsRUFPN0MsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7TUFDL0J6MkMsSUFBSSxFQUFFLFNBRHlCO01BRS9CLFNBQU8sQ0FBQyxHQUFHMUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEJoRCxNQUFNLENBQUMzd0MsT0FBakM7SUFGd0IsQ0FBbkMsRUFHRyxDQUFDLEdBQUdsSixLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0Qiw0QkFBNUIsQ0FBM0IsQ0FISCxFQUcwRjtJQUFFO0lBSDVGLENBRHNDLENBQTFDLENBUDZDLEVBYTdDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO01BQy9CM3dDLEVBQUUsRUFBRSxtQkFEMkI7TUFFL0I5RixJQUFJLEVBQUUsYUFGeUI7TUFHL0IsU0FBTyxDQUFDLEdBQUcxQyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQmhELE1BQU0sQ0FBQzN3QyxPQUFqQztJQUh3QixDQUFuQyxFQUlHLENBQUMsR0FBR2xKLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLDRCQUE1QixDQUEzQixDQUpILEVBSTBGO0lBQUU7SUFKNUYsQ0FEc0MsQ0FBMUMsQ0FiNkMsQ0FBakQsQ0FEeUUsQ0FBbEQsQ0FEL0IsSUF3Qk0sQ0FBQyxHQUFHOUksS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBeExQLENBVDZCLEVBa003QjtJQUFFO0lBbE0yQixDQUFoQztFQW1NSCxDQXBNZ0YsQ0FBcEQsRUFvTXpCO0VBQUk7RUFwTXFCLENBRGUsRUFBaEQsQ0FwQnVDLENBQTNDLENBSDZDLENBQWpELENBbkNELEVBbVFDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFDakMsU0FBTyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxVQUFELEVBQWE7TUFBRSxVQUFVLENBQUNqRCxNQUFNLENBQUM1eUMsVUFBcEI7TUFBZ0Msb0JBQW9CNHlDLE1BQU0sQ0FBQzV5QztJQUEzRCxDQUFiLENBQTFCO0VBRDBCLENBQXJDLEVBRUcsQ0FDQyxDQUFDLEdBQUdoSCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN5QyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUc1N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDMEMsV0FBckMsRUFBa0QsQ0FDN0MsQ0FBQ2pDLE1BQU0sQ0FBQzV5QyxVQUFULEdBQ00sQ0FBQyxHQUFHaEgsS0FBSyxDQUFDbTlDLGNBQVYsR0FBMkIsQ0FBQyxHQUFHbjlDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUM7SUFDeEZ0dkMsR0FBRyxFQUFFLENBRG1GO0lBRXhGLHVCQUF1Qjh1QyxNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBU1osTUFBTSxDQUFDdnVDLFdBQVIsR0FBdUJtdkMsTUFBL0I7SUFBeUMsQ0FBdkYsQ0FGaUU7SUFHeEYsU0FBTyxzQkFIaUY7SUFJeEY3ekMsSUFBSSxFQUFFLE1BSmtGO0lBS3hGaXdDLFdBQVcsRUFBRWdELE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCdUIsU0FBakIsQ0FBMkIsaUJBQTNCLENBTDJFO0lBTXhGdTBDLE9BQU8sRUFBRXpELE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLENBQUMsR0FBRzM1QyxLQUFLLENBQUNxOUMsUUFBVixFQUFvQixVQUFVNUMsTUFBVixFQUFrQjtNQUFFLE9BQVFaLE1BQU0sQ0FBQ2h1QyxjQUFQLENBQXNCLGFBQXRCLENBQVI7SUFBZ0QsQ0FBeEYsRUFBMEYsQ0FBQyxPQUFELENBQTFGLENBQTFCO0VBTitFLENBQXZDLEVBT2xELElBUGtELEVBTzVDO0VBQUc7RUFQeUMsRUFPWml3QyxXQVBZLENBQW5ELEdBT3NELENBQ3BELENBQUM5N0MsS0FBSyxDQUFDczlDLFVBQVAsRUFBbUJ6RCxNQUFNLENBQUN2dUMsV0FBMUIsQ0FEb0QsQ0FQdEQsQ0FETixHQVdNLENBQUMsR0FBR3RMLEtBQUssQ0FBQ205QyxjQUFWLEdBQTJCLENBQUMsR0FBR245QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDO0lBQ3hGdHZDLEdBQUcsRUFBRSxDQURtRjtJQUV4Rix1QkFBdUI4dUMsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtNQUFFLE9BQVNaLE1BQU0sQ0FBQ3Z1QyxXQUFSLEdBQXVCbXZDLE1BQS9CO0lBQXlDLENBQXZGLENBRmlFO0lBR3hGLFNBQU8sc0JBSGlGO0lBSXhGN3pDLElBQUksRUFBRSxNQUprRjtJQUt4Rml3QyxXQUFXLEVBQUVnRCxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnVCLFNBQWpCLENBQTJCLHFCQUEzQixDQUwyRTtJQU14RnUwQyxPQUFPLEVBQUV6RCxNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxDQUFDLEdBQUczNUMsS0FBSyxDQUFDcTlDLFFBQVYsRUFBb0IsVUFBVTVDLE1BQVYsRUFBa0I7TUFBRSxPQUFRWixNQUFNLENBQUNodUMsY0FBUCxDQUFzQixxQkFBdEIsQ0FBUjtJQUF3RCxDQUFoRyxFQUFrRyxDQUFDLE9BQUQsQ0FBbEcsQ0FBMUI7RUFOK0UsQ0FBdkMsRUFPbEQsSUFQa0QsRUFPNUM7RUFBRztFQVB5QyxFQU9aa3dDLFdBUFksQ0FBbkQsR0FPc0QsQ0FDcEQsQ0FBQy83QyxLQUFLLENBQUNzOUMsVUFBUCxFQUFtQnpELE1BQU0sQ0FBQ3Z1QyxXQUExQixDQURvRCxDQVB0RCxDQVp3QyxFQXNCOUMsQ0FBQyxHQUFHdEwsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUFFNXBDLElBQUksRUFBRTtFQUFSLENBQTNDLENBdEI4QyxFQXVCN0N5cEMsTUFBTSxDQUFDanVDLE9BQVIsSUFDTyxDQUFDLEdBQUc1TCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDNkIsV0FBdEMsQ0FEL0IsSUFFTSxDQUFDLEdBQUdoOEMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBekJ3QyxDQUFsRCxDQUQ4QyxFQTRCOUMsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztJQUNwQyxTQUFPLENBQUMsR0FBR241QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQmhELE1BQU0sQ0FBQ253QyxhQUFQLEdBQzNCLDZCQUQyQixHQUUzQixtQ0FGQyxDQUQ2QjtJQUlwQzJ3QyxPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7TUFBRSxPQUFRWixNQUFNLENBQUNyeUMsZ0JBQVAsR0FBMEIsQ0FBQ3F5QyxNQUFNLENBQUNyeUMsZ0JBQTFDO0lBQThELENBQTVHO0VBSjJCLENBQXhDLEVBS0csQ0FDQyxDQUFDLEdBQUd4SCxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQUU1cEMsSUFBSSxFQUFFO0VBQVIsQ0FBM0MsQ0FERCxFQUVDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxpQkFEZ0M7SUFFdkM1cEMsSUFBSSxFQUFFO0VBRmlDLENBQTNDLENBRkQsRUFNRSxDQUFDeXBDLE1BQU0sQ0FBQ253QyxhQUFULElBQ08sQ0FBQyxHQUFHMUosS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUM1RHR2QyxHQUFHLEVBQUUsQ0FEdUQ7SUFFNUQsU0FBTyxDQUFDLEdBQUc3SyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDO01BQUUsU0FBU2pELE1BQU0sQ0FBQzF5QyxXQUFQLElBQXNCO0lBQWpDLENBQUQsRUFBdUMsbUJBQXZDLENBQTFCO0VBRnFELENBQXJDLEVBR3hCLENBQ0MsQ0FBQyxHQUFHbEgsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M4QyxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdqOEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR241QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDLFNBQU8sY0FEZ0M7SUFFdkM1cEMsSUFBSSxFQUFFO0VBRmlDLENBQTNDLENBRHVDLENBQTNDLENBRDZDLEVBTzdDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQytDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR2w4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NnRCxXQUF0QyxFQUFtRCxDQUFDLEdBQUduOEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJkLE1BQU0sQ0FBQ2p6QyxJQUFQLENBQVlxckMsU0FBdkMsQ0FBbkQsRUFBc0c7RUFBRTtFQUF4RyxDQUQ4QyxFQUU5QyxDQUFDLEdBQUdoeUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDaUQsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHcDhDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCLENBQUMvNUMsRUFBRSxHQUFHaTVDLE1BQU0sQ0FBQzl5QyxZQUFiLE1BQStCLElBQS9CLElBQXVDbkcsRUFBRSxLQUFLLEtBQUssQ0FBbkQsR0FBdUQsS0FBSyxDQUE1RCxHQUFnRUEsRUFBRSxDQUFDbzBDLGNBQTlGLENBQW5ELEVBQWtLO0VBQUU7RUFBcEssQ0FGOEMsQ0FBbEQsQ0FQNkMsQ0FBakQsQ0FEc0MsRUFhdEMsQ0FBQyxHQUFHLzBDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztJQUNoQyxTQUFPLHVDQUR5QjtJQUVoQ2tCLE9BQU8sRUFBRVIsTUFBTSxDQUFDenRDO0VBRmdCLENBQXBDLEVBR0csQ0FDQyxDQUFDLEdBQUdwTSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNrRCxXQUFuQyxFQUFnRCxDQUM1QyxDQUFDLEdBQUdyOEMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QyxTQUFPLGdCQURnQztJQUV2QzVwQyxJQUFJLEVBQUU7RUFGaUMsQ0FBM0MsQ0FENEMsRUFLNUMsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ1QixTQUFqQixDQUEyQixjQUEzQixDQUEzQixDQUE1QyxFQUFvSDtFQUFFO0VBQXRILENBTDRDLENBQWhELENBREQsQ0FISCxDQWJzQyxFQXlCdEMsQ0FBQyxHQUFHN0ksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DO0lBQ2hDLFNBQU8scUJBRHlCO0lBRWhDa0IsT0FBTyxFQUFFUixNQUFNLENBQUMxdUM7RUFGZ0IsQ0FBcEMsRUFHRyxDQUNDLENBQUMsR0FBR25MLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxXQURnQztJQUV2QzVwQyxJQUFJLEVBQUU7RUFGaUMsQ0FBM0MsQ0FERCxFQUtDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3Q21ELFdBQXhDLEVBQXFELENBQUMsR0FBR3Q4QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ1QixTQUFqQixDQUEyQixRQUEzQixDQUEzQixDQUFyRCxFQUF1SDtFQUFFO0VBQXpILENBTEQsQ0FISCxDQXpCc0MsQ0FBMUMsQ0FERCxDQUh3QixFQXdDeEI7RUFBRTtFQXhDc0IsQ0FEL0IsS0EwQ08sQ0FBQyxHQUFHN0ksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUM1RHR2QyxHQUFHLEVBQUUsQ0FEdUQ7SUFFNUQsU0FBTyxDQUFDLEdBQUc3SyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUM3QixDQUFDaEQsTUFBTSxDQUFDcnlDLGdCQUFSLEdBQ00sb0NBRE4sR0FFTSxpQ0FIdUIsRUFJN0IsMEJBSjZCLENBQTFCO0VBRnFELENBQXJDLEVBUXhCLENBQ0MsQ0FBQyxHQUFHeEgsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NvRCxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd2OEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR241QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDLFNBQU8sY0FEZ0M7SUFFdkM1cEMsSUFBSSxFQUFFO0VBRmlDLENBQTNDLENBRHVDLENBQTNDLENBRDZDLEVBTzdDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3FELFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3g4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NzRCxXQUF0QyxFQUFtRCxDQUFDLEdBQUd6OEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJkLE1BQU0sQ0FBQ2p6QyxJQUFQLENBQVlxckMsU0FBdkMsQ0FBbkQsRUFBc0c7RUFBRTtFQUF4RyxDQUQ4QyxFQUU5QyxDQUFDLEdBQUdoeUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDdUQsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHMThDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCLENBQUN0ekMsRUFBRSxHQUFHd3lDLE1BQU0sQ0FBQzl5QyxZQUFiLE1BQStCLElBQS9CLElBQXVDTSxFQUFFLEtBQUssS0FBSyxDQUFuRCxHQUF1RCxLQUFLLENBQTVELEdBQWdFQSxFQUFFLENBQUMydEMsY0FBOUYsQ0FBbkQsRUFBa0s7RUFBRTtFQUFwSyxDQUY4QyxDQUFsRCxDQVA2QyxDQUFqRCxDQURzQyxFQWF0QyxDQUFDLEdBQUcvMEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DO0lBQ2hDLFNBQU8sdUNBRHlCO0lBRWhDa0IsT0FBTyxFQUFFUixNQUFNLENBQUN6dEM7RUFGZ0IsQ0FBcEMsRUFHRyxDQUNDLENBQUMsR0FBR3BNLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ3dELFdBQW5DLEVBQWdELENBQzVDLENBQUMsR0FBRzM4QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDLFNBQU8sZ0JBRGdDO0lBRXZDNXBDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxDQUQ0QyxFQUs1QyxDQUFDLEdBQUdwUSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnVCLFNBQWpCLENBQTJCLGNBQTNCLENBQTNCLENBQTVDLEVBQW9IO0VBQUU7RUFBdEgsQ0FMNEMsQ0FBaEQsQ0FERCxDQUhILENBYnNDLEVBeUJ0QyxDQUFDLEdBQUc3SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7SUFDaEMsU0FBTyxxQkFEeUI7SUFFaENrQixPQUFPLEVBQUVSLE1BQU0sQ0FBQzF1QztFQUZnQixDQUFwQyxFQUdHLENBQ0MsQ0FBQyxHQUFHbkwsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QyxTQUFPLFdBRGdDO0lBRXZDNXBDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxDQURELEVBS0MsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDeUQsV0FBeEMsRUFBcUQsQ0FBQyxHQUFHNThDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnVCLFNBQWpCLENBQTJCLFFBQTNCLENBQTNCLENBQXJELEVBQXVIO0VBQUU7RUFBekgsQ0FMRCxDQUhILENBekJzQyxDQUExQyxDQURELENBUndCLEVBNkN4QjtFQUFFO0VBN0NzQixDQTFDL0IsQ0FORCxDQUxILEVBbUdHO0VBQUU7RUFuR0wsQ0E1QjhDLENBQWxELENBREQsQ0FGSCxFQW9JRztFQUFFO0VBcElMLENBblFELEVBd1lFLENBQUMrd0MsTUFBTSxDQUFDNXlDLFVBQVQsSUFDTyxDQUFDLEdBQUdoSCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxhQUFELENBQTdCLEVBQThDO0lBQ3JFaHZDLEdBQUcsRUFBRSxDQURnRTtJQUVyRSxnQkFBZ0JndkMsTUFBTSxDQUFDeHdDLFVBRjhDO0lBR3JFazBDLE9BQU8sRUFBRTFELE1BQU0sQ0FBQ2h3QyxXQUhxRDtJQUlyRTJ6QyxZQUFZLEVBQUUzRCxNQUFNLENBQUNod0MsV0FKZ0Q7SUFLckU0ekMsT0FBTyxFQUFFNUQsTUFBTSxDQUFDdHdDO0VBTHFELENBQTlDLEVBTXhCLElBTndCLEVBTWxCO0VBQUU7RUFOZ0IsRUFNSCxDQUFDLGNBQUQsQ0FORyxDQUQvQixJQVFNLENBQUMsR0FBR3ZKLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWhaUCxDQUY2QixFQW1aN0I7RUFBRTtFQW5aMkIsQ0FBaEM7QUFvWkg7O0FBQ0R6NkMsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUM5ZWE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFDYixjQUFjLGFBREQ7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFDYnB1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU8sNkJBRk07RUFHYm5JLElBQUksRUFBRTtBQUhPLENBQWpCO0FBS0EsSUFBSXcyQyxVQUFVLEdBQUc7RUFDYnJ1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUl1dUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHLENBQUMsTUFBRCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFenVDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSTB1QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFDYjN1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjs7QUFJQSxTQUFTaXVDLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsT0FBUSxDQUFDLEdBQUcvNUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN2RSxDQUFDLEdBQUduNkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSixVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSCxVQUFyQyxFQUFpRCxFQUM1QyxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCcEQsSUFBSSxDQUFDL3NDLGNBQTNCLEVBQTJDLFVBQVUrd0MsRUFBVixFQUFjQyxDQUFkLEVBQWlCO0lBQ3pJLE9BQVEsQ0FBQyxHQUFHMzlDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO01BQUV2dkMsR0FBRyxFQUFFOHlDO0lBQVAsQ0FBOUMsRUFBMEQsQ0FDckZ4MkMsTUFBTSxDQUFDdzJDLENBQUQsQ0FBTixLQUFjLENBQWYsSUFDTyxDQUFDLEdBQUczOUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ2xCLFVBQW5DLEVBQStDLENBQUMsR0FBR2o1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmdELEVBQUUsQ0FBQ3hsQyxLQUE5QixDQUEvQyxFQUFxRjtJQUFFO0lBQXZGLENBRC9CLEtBRU8sQ0FBQyxHQUFHbFksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2pCLFVBQXJDLEVBQWlELENBQ3hFLENBQUMsR0FBR2w1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NDLFVBQXRDLEVBQWtELENBQzdDc0UsRUFBRSxDQUFDbDdDLElBQUosSUFDTyxDQUFDLEdBQUd4QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO01BQzFEdHZDLEdBQUcsRUFBRSxDQURxRDtNQUUxRG5JLElBQUksRUFBRWc3QyxFQUFFLENBQUNsN0M7SUFGaUQsQ0FBbkMsRUFHeEIsQ0FBQyxHQUFHeEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJnRCxFQUFFLENBQUN4bEMsS0FBOUIsQ0FId0IsRUFHYztJQUFFO0lBSGhCLEVBR21DbWhDLFVBSG5DLENBRC9CLEtBS08sQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NiLFVBQXRDLEVBQWtELENBQUMsR0FBR3Q1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmdELEVBQUUsQ0FBQ3hsQyxLQUE5QixDQUFsRCxFQUF3RjtJQUFFO0lBQTFGLENBTC9CLENBRDhDLENBQWxELENBRHdFLEVBU3hFLENBQUMsR0FBR2xZLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ0ksVUFBdEMsRUFBa0QsQ0FBQyxHQUFHdjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCZ0QsRUFBRSxDQUFDeGxDLEtBQTlCLENBQWxELEVBQXdGO0lBQUU7SUFBMUYsQ0FUd0UsQ0FBakQsQ0FGL0IsQ0FEc0YsRUFjckYvUSxNQUFNLENBQUN3MkMsQ0FBRCxDQUFOLEtBQWNqRSxJQUFJLENBQUMvc0MsY0FBTCxDQUFvQnhHLE1BQXBCLEdBQTZCLENBQTVDLElBQ08sQ0FBQyxHQUFHbkcsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ1gsVUFBdEMsRUFBa0QsS0FBbEQsQ0FEL0IsSUFFTSxDQUFDLEdBQUd4NUMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBaEJnRixDQUExRCxFQWlCN0I7SUFBRztJQWpCMEIsQ0FBaEM7RUFrQkgsQ0FuQmdGLENBQXBELEVBbUJ6QjtFQUFJO0VBbkJxQixDQURnQixFQUFqRCxDQUQ2QyxDQUFqRCxDQUR1RSxDQUEzQyxDQUFoQztBQTBCSDs7QUFDRHo2QyxjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ3REYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjs7QUFDQSxTQUFTSixNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELElBQUlDLGtCQUFrQixHQUFHLENBQUMsR0FBR2g2QyxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsU0FBNUIsQ0FBekI7O0VBQ0EsT0FBUSxDQUFDLEdBQUdqNkMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FDaEYsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ0osVUFBcEMsRUFBZ0QsQ0FDNUMsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkM1cEMsSUFBSSxFQUFFLE9BRGlDO0lBRXZDLFNBQU87RUFGZ0MsQ0FBM0MsQ0FENEMsRUFLNUMsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDSCxVQUF0QyxFQUFrRCxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsa0NBQTVCLENBQTNCLENBQWxELEVBQStJO0VBQUU7RUFBakosQ0FMNEMsQ0FBaEQsQ0FEZ0YsRUFRaEYsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRixVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLDRCQUE1QixDQUEzQixJQUF3RixHQUFuSCxFQUF3SDtFQUFFO0VBQTFILENBRDZDLEVBRTdDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ0QsVUFBcEMsRUFBZ0QsRUFDM0MsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQmpELE1BQU0sQ0FBQ2h0QyxpQkFBN0IsRUFBZ0QsVUFBVThPLFFBQVYsRUFBb0J0SixLQUFwQixFQUEyQjtJQUN4SixPQUFRLENBQUMsR0FBR3JTLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7TUFDaEV0dkMsR0FBRyxFQUFFd0gsS0FEMkQ7TUFFaEUsU0FBTztJQUZ5RCxDQUFwQyxFQUc3QixDQUNDLENBQUMsR0FBR3JTLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIvK0IsUUFBUSxDQUFDLGdCQUFELENBQW5DLENBQTVDLEVBQW9HO0lBQUU7SUFBdEcsQ0FERCxFQUVDLENBQUMsR0FBRzNiLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztNQUNsQyxTQUFPLENBQUMsR0FBR241QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUM3QjtRQUNJLGtCQUFrQmxoQyxRQUFRLENBQUMsUUFBRCxDQUFSLEtBQXVCLFlBRDdDO1FBRUksa0JBQWtCQSxRQUFRLENBQUMsUUFBRCxDQUFSLEtBQXVCLFNBRjdDO1FBR0ksa0JBQWtCQSxRQUFRLENBQUMsUUFBRCxDQUFSLEtBQXVCO01BSDdDLENBRDZCLEVBTTdCLGdCQU42QixDQUExQjtJQUQyQixDQUF0QyxFQVNHLENBQ0MsQ0FBQyxHQUFHM2IsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDLElBQXZDLEVBQTZDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQi8rQixRQUFRLENBQUMsUUFBRCxDQUFuQyxDQUE3QyxFQUE2RjtJQUFFO0lBQS9GLENBREQsQ0FUSCxFQVdHO0lBQUU7SUFYTCxDQUZELENBSDZCLENBQWhDO0VBa0JILENBbkJnRixDQUFwRCxFQW1CekI7RUFBSTtFQW5CcUIsQ0FEZSxFQUFoRCxDQUY2QyxFQXdCN0MsQ0FBQyxHQUFHM2IsS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsTUFBTSxDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsdURBQTVCLENBQTNCLENBQWpDLEVBQW1KO0VBQUU7RUFBckosQ0F4QjZDLENBQWpELENBUmdGLENBQXBELEVBa0M3QjtFQUFHO0VBbEMwQixDQUFoQztBQW1DSDs7QUFDRGhKLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDOUNhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk0NkMsWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBVWgxQyxDQUFWLEVBQWE7RUFBRSxPQUFRLENBQUMsR0FBRzdGLEtBQUssQ0FBQzg2QyxXQUFWLEVBQXVCLGlCQUF2QixHQUEyQ2oxQyxDQUFDLEdBQUdBLENBQUMsRUFBaEQsRUFBb0QsQ0FBQyxHQUFHN0YsS0FBSyxDQUFDKzZDLFVBQVYsR0FBcEQsRUFBNkVsMUMsQ0FBckY7QUFBMEYsQ0FBNUg7O0FBQ0EsSUFBSWt6QyxVQUFVLEdBQUc7RUFDYmx1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUltdUMsVUFBVSxHQUFHO0VBQ2JudUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJb3VDLFVBQVUsR0FBRztFQUNicHVDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSXF1QyxVQUFVLEdBQUc7RUFDYnJ1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUl1dUMsVUFBVSxHQUFHO0VBQ2J2dUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJd3VDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjs7QUFDQSxJQUFJQyxVQUFVLEdBQUcsYUFBY3VCLFlBQVksQ0FBQyxZQUFZO0VBQUU7RUFBYyxPQUFPLENBQUMsR0FBRzc2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M7SUFBRSxTQUFPO0VBQVQsQ0FBdEMsRUFBc0UsT0FBdEUsRUFBK0UsQ0FBQztFQUFFO0VBQWxGLENBQVA7QUFBMEcsQ0FBdkksQ0FBM0M7O0FBQ0EsSUFBSUksVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSXVCLFdBQVcsR0FBRztFQUNkbndDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCOztBQUlBLFNBQVNpdUMsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJcDVDLEVBQUosRUFBUXlHLEVBQVIsRUFBWStCLEVBQVosRUFBZ0J5TSxFQUFoQixFQUFvQkMsRUFBcEIsRUFBd0JnVyxFQUF4Qjs7RUFDQSxJQUFJbXVCLGtCQUFrQixHQUFHLENBQUMsR0FBR2g2QyxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsU0FBNUIsQ0FBekI7O0VBQ0EsT0FBUUosTUFBTSxDQUFDcnNDLFVBQVIsSUFDQSxDQUFDLEdBQUd4TixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQzVEdHZDLEdBQUcsRUFBRSxDQUR1RDtJQUU1RCxTQUFPLENBQUMsR0FBRzdLLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsQ0FBQ2hELE1BQU0sQ0FBQzFzQyxTQUFSLEdBQW9CLFVBQXBCLEdBQWlDLEVBQWxDLEVBQXNDLDBEQUF0QyxDQUExQjtFQUZxRCxDQUFyQyxFQUd4QixDQUNDLENBQUMsR0FBR25OLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztJQUNwQyxTQUFPLHVGQUQ2QjtJQUVwQ2tCLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQ25CLFlBQVk7TUFDUkQsSUFBSSxDQUFDa0UsS0FBTCxDQUFXLE9BQVg7SUFDSCxDQUhJO0VBRjJCLENBQXhDLEVBTUcsQ0FDQyxDQUFDLEdBQUc1OUMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QzVwQyxJQUFJLEVBQUUsWUFEaUM7SUFFdkMsU0FBTztFQUZnQyxDQUEzQyxDQURELENBTkgsQ0FERCxFQWFDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxDQUFDLEdBQUdoNkMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQztNQUFFLGNBQWMsQ0FBQ2hELE1BQU0sQ0FBQzFzQyxTQUF4QjtNQUFtQyxJQUFJMHNDLE1BQU0sQ0FBQzFzQztJQUE5QyxDQUFELEVBQTRELGdGQUE1RCxDQUExQixDQURnQztJQUV2Q2lELElBQUksRUFBRSxnQkFGaUM7SUFHdkNpcUMsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBUVosTUFBTSxDQUFDMXNDLFNBQVAsR0FBbUIsQ0FBQzBzQyxNQUFNLENBQUMxc0MsU0FBbkM7SUFBZ0QsQ0FBOUY7RUFIOEIsQ0FBM0MsRUFJRyxJQUpILEVBSVM7RUFBRTtFQUpYLEVBSXdCLENBQUMsT0FBRCxDQUp4QixDQWJELEVBa0JFLENBQUMwc0MsTUFBTSxDQUFDMXNDLFNBQVQsSUFDTyxDQUFDLEdBQUduTixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcEIsVUFBckMsRUFBaUQsQ0FDdkUsQ0FBQyxDQUFDM3hDLEVBQUUsR0FBRyxDQUFDekcsRUFBRSxHQUFHazVDLE1BQU0sQ0FBQ3BzQyxtQkFBYixNQUFzQyxJQUF0QyxJQUE4QzlNLEVBQUUsS0FBSyxLQUFLLENBQTFELEdBQThELEtBQUssQ0FBbkUsR0FBdUVBLEVBQUUsQ0FBQytNLEdBQWhGLE1BQXlGLElBQXpGLElBQWlHdEcsRUFBRSxLQUFLLEtBQUssQ0FBN0csR0FBaUgsS0FBSyxDQUF0SCxHQUEwSEEsRUFBRSxDQUFDakIsTUFBOUgsTUFBMEksQ0FBM0ksSUFDTyxDQUFDLEdBQUduRyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDbkIsVUFBckMsRUFBaUQsQ0FDeEUsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUNqQzczQyxLQUFLLEVBQUUsQ0FBQyxHQUFHdEIsS0FBSyxDQUFDdzZDLGNBQVYsRUFBMEI7TUFBRW5pQyxLQUFLLEVBQUV3aEMsTUFBTSxDQUFDdDJDLGVBQVAsR0FBeUI7SUFBbEMsQ0FBMUIsQ0FEMEI7SUFFakMsU0FBTztFQUYwQixDQUFyQyxFQUdHLElBSEgsRUFHUztFQUFFO0VBSFgsQ0FEd0UsQ0FBakQsQ0FEL0IsSUFPTSxDQUFDLEdBQUd2RCxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FSa0UsRUFTdkUsQ0FBQyxDQUFDM2tDLEVBQUUsR0FBRyxDQUFDek0sRUFBRSxHQUFHMHdDLE1BQU0sQ0FBQ3BzQyxtQkFBYixNQUFzQyxJQUF0QyxJQUE4Q3RFLEVBQUUsS0FBSyxLQUFLLENBQTFELEdBQThELEtBQUssQ0FBbkUsR0FBdUVBLEVBQUUsQ0FBQ3VFLEdBQWhGLE1BQXlGLElBQXpGLElBQWlHa0ksRUFBRSxLQUFLLEtBQUssQ0FBN0csR0FBaUgsS0FBSyxDQUF0SCxHQUEwSEEsRUFBRSxDQUFDelAsTUFBOUgsSUFBd0ksQ0FBekksSUFDTyxDQUFDLEdBQUduRyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDbEIsVUFBckMsRUFBaUQsQ0FBQyxHQUFHajVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQitHLEtBQWpCLENBQXVCLHdDQUF2QixDQUEzQixDQUFqRCxFQUErSTtFQUFFO0VBQWpKLENBRC9CLEtBRU8sQ0FBQyxHQUFHck8sS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2pCLFVBQXJDLEVBQWlELENBQ3hFLENBQUMsR0FBR2w1QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsWUFBNUIsQ0FBM0IsSUFBd0UsR0FBbkcsRUFBd0c7RUFBRTtFQUExRyxDQUR3RSxFQUV4RSxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUMxcUMsbUJBQWxDLElBQXlELEdBQXpELEdBQStELENBQUMsR0FBR25QLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCOTZDLE1BQU0sQ0FBQzBQLElBQVAsQ0FBWXVxQyxNQUFNLENBQUNyc0MsVUFBbkIsRUFBK0JySCxNQUExRCxDQUEzRyxFQUE4SztFQUFFO0VBQWhMLENBRndFLEVBR3hFLENBQUMsR0FBR25HLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLE1BQU0sQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQmdxQixPQUFqQixDQUF5QixZQUF6QixDQUEzQixDQUFOLEdBQTJFLEdBQTNFLEdBQWlGLENBQUMsR0FBR3R4QixLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixJQUE1QixDQUEzQixDQUFqRixHQUFpSixHQUFqSixHQUF1SixDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixlQUE1QixDQUEzQixDQUFsTCxFQUE0UDtFQUFFO0VBQTlQLENBSHdFLENBQWpELENBRi9CLENBVHdFLENBQWpELENBRC9CLEtBa0JPLENBQUMsR0FBRzlJLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNmLFVBQXJDLEVBQWlELENBQ3hFLENBQUMsR0FBR3A1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNFLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3I1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLFlBQTVCLENBQTNCLElBQXdFLEdBQXhFLEdBQThFLENBQUMsR0FBRzlJLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzc0MsaUJBQVAsSUFBNEIsQ0FBNUIsR0FBZ0Myc0MsTUFBTSxDQUFDM3NDLGlCQUF2QyxHQUEyRCxFQUF0RixDQUE5RSxHQUEwSyxHQUExSyxHQUFnTCxDQUFDLEdBQUdsTixLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJncUIsT0FBakIsQ0FBeUIsWUFBekIsQ0FBM0IsQ0FBMU4sRUFBOFI7RUFBRTtFQUFoUyxDQUQ2QyxFQUU1QyxDQUFDLENBQUN6RixFQUFFLEdBQUcsQ0FBQ2hXLEVBQUUsR0FBR2drQyxNQUFNLENBQUNwc0MsbUJBQWIsTUFBc0MsSUFBdEMsSUFBOENvSSxFQUFFLEtBQUssS0FBSyxDQUExRCxHQUE4RCxLQUFLLENBQW5FLEdBQXVFQSxFQUFFLENBQUNuSSxHQUFoRixNQUF5RixJQUF6RixJQUFpR21lLEVBQUUsS0FBSyxLQUFLLENBQTdHLEdBQWlILEtBQUssQ0FBdEgsR0FBMEhBLEVBQUUsQ0FBQzFsQixNQUE5SCxJQUF3SSxDQUF6SSxJQUNPLENBQUMsR0FBR25HLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFDNUR0dkMsR0FBRyxFQUFFLENBRHVEO0lBRTVELFNBQU8sNkRBRnFEO0lBRzVEd3ZDLE9BQU8sRUFBRVIsTUFBTSxDQUFDdnJDO0VBSDRDLENBQXJDLEVBSXhCLENBQ0MsQ0FBQyxHQUFHdE8sS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QyxTQUFPLE1BRGdDO0lBRXZDNXBDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxDQURELEVBS0NrcEMsVUFMRCxDQUp3QixDQUQvQixJQVlNLENBQUMsR0FBR3Q1QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FkdUMsQ0FBakQsQ0FEd0UsRUFpQnhFLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNJLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3Y1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsRUFDdEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQmpELE1BQU0sQ0FBQ3JzQyxVQUE3QixFQUF5QyxVQUFVek4sS0FBVixFQUFpQjZJLElBQWpCLEVBQXVCeUosS0FBdkIsRUFBOEI7SUFDcEosT0FBUSxDQUFDLEdBQUdyUyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pFdHZDLEdBQUcsRUFBRXdILEtBRDREO01BRWpFLFNBQU87SUFGMEQsQ0FBckMsRUFHN0IsQ0FDQyxDQUFDLEdBQUdyUyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNLLFVBQXJDLEVBQWlELENBQUMsR0FBR3g1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQjM2QyxLQUFLLENBQUMsZ0JBQUQsQ0FBaEMsQ0FBakQsRUFBc0c7SUFBRTtJQUF4RyxDQURELEVBRUMsQ0FBQyxHQUFHQyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNNLFdBQXJDLEVBQWtELENBQzdDMTVDLEtBQUssQ0FBQyxRQUFELENBQUwsS0FBb0IsV0FBckIsSUFDTyxDQUFDLEdBQUdDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1Qlgsa0JBQXZCLEVBQTJDO01BQ2xFbnZDLEdBQUcsRUFBRSxDQUQ2RDtNQUVsRSxTQUFPLGdCQUYyRDtNQUdsRXVGLElBQUksRUFBRTtJQUg0RCxDQUEzQyxDQUQvQixJQU1PclEsS0FBSyxDQUFDLFFBQUQsQ0FBTCxLQUFvQixRQUFyQixJQUNLLENBQUMsR0FBR0MsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCWCxrQkFBdkIsRUFBMkM7TUFDbEVudkMsR0FBRyxFQUFFLENBRDZEO01BRWxFLFNBQU8saUJBRjJEO01BR2xFdUYsSUFBSSxFQUFFO0lBSDRELENBQTNDLENBRDdCLEtBTUssQ0FBQyxHQUFHcFEsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2EsV0FBdEMsQ0FON0IsQ0FQd0MsQ0FBbEQsQ0FGRCxDQUg2QixDQUFoQztFQXFCSCxDQXRCZ0YsQ0FBcEQsRUFzQnpCO0VBQUk7RUF0QnFCLENBRFUsRUFBM0MsQ0FENkMsQ0FBakQsQ0FqQndFLENBQWpELENBbEIvQixDQWxCRCxDQUh3QixFQW9GeEI7RUFBRTtFQXBGc0IsQ0FEeEIsSUFzRkQsQ0FBQyxHQUFHaDdDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQXRGTjtBQXVGSDs7QUFDRHo2QyxjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQzdIYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRyxDQUFDLFVBQUQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFDYm51QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjs7QUFJQSxTQUFTaXVDLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSUMsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHaDZDLEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixTQUE1QixDQUF6Qjs7RUFDQSxPQUFRLENBQUMsR0FBR2o2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO0lBQ3BFMEQsUUFBUSxFQUFFbkUsSUFBSSxDQUFDcnBDLGNBRHFEO0lBRXBFLFNBQU8sQ0FBQyxHQUFHclEsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQywyQkFBRCxFQUE4QixDQUFDO01BQUUsdUJBQXVCbkQsSUFBSSxDQUFDcnBDO0lBQTlCLENBQUQsRUFBaURxcEMsSUFBSSxDQUFDcHBDLE9BQXRELENBQTlCLENBQTFCO0VBRjZELENBQXhDLEVBRzdCLENBQ0VvcEMsSUFBSSxDQUFDdHBDLElBQU4sSUFDTyxDQUFDLEdBQUdwUSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJYLGtCQUF2QixFQUEyQztJQUNsRW52QyxHQUFHLEVBQUUsQ0FENkQ7SUFFbEV1RixJQUFJLEVBQUVzcEMsSUFBSSxDQUFDdHBDO0VBRnVELENBQTNDLEVBR3hCLElBSHdCLEVBR2xCO0VBQUU7RUFIZ0IsRUFHSCxDQUFDLE1BQUQsQ0FIRyxDQUQvQixJQUtNLENBQUMsR0FBR3BRLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQU5QLEVBT0ViLElBQUksQ0FBQ3hwQyxJQUFOLElBQ08sQ0FBQyxHQUFHbFEsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ25CLFVBQXRDLEVBQWtELENBQUMsR0FBR2g1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3hwQyxJQUFoQyxDQUFsRCxFQUF5RjtFQUFFO0VBQTNGLENBRC9CLElBRU0sQ0FBQyxHQUFHbFEsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBVFAsQ0FINkIsRUFhN0I7RUFBRztFQWIwQixFQWFOeEIsVUFiTSxDQUFoQztBQWNIOztBQUNEajVDLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDMUJhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQ2J2d0MsRUFBRSxFQUFFLGlCQURTO0VBRWJ4SCxHQUFHLEVBQUUsZUFGUTtFQUdiLFNBQU87QUFITSxDQUFqQjtBQUtBLElBQUlnNEMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUzM0MsS0FBSyxFQUFFO0lBQUUsVUFBVSxhQUFaO0lBQTJCLGFBQWEsTUFBeEM7SUFBZ0QsY0FBYztFQUE5RDtBQUFULENBQWpCO0FBQ0EsSUFBSTQzQyxVQUFVLEdBQUc7RUFDYmw0QyxHQUFHLEVBQUUsY0FEUTtFQUViLFNBQU8sdUNBRk07RUFHYk0sS0FBSyxFQUFFO0lBQUUsT0FBTyxNQUFUO0lBQWlCLFNBQVM7RUFBMUI7QUFITSxDQUFqQjtBQUtBLElBQUk4M0MsVUFBVSxHQUFHLENBQUMsU0FBRCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUNienVDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSTB1QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUcsQ0FBQyxTQUFELENBQWpCOztBQUNBLFNBQVNWLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSUMsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHaDZDLEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixTQUE1QixDQUF6Qjs7RUFDQSxPQUFRLENBQUMsR0FBR2o2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcEIsVUFBckMsRUFBaUQsQ0FDN0UsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN2QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLGdCQUE5QixDQUQ2QyxFQUU1Q1gsTUFBTSxDQUFDbHBDLGFBQVAsSUFBd0I5USxNQUFNLENBQUMwUCxJQUFQLENBQVlzcUMsTUFBTSxDQUFDbHBDLGFBQW5CLEVBQWtDdkssTUFBM0QsSUFDTyxDQUFDLEdBQUduRyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQzVEdHZDLEdBQUcsRUFBRSxDQUR1RDtJQUU1RCxTQUFPLDJCQUZxRDtJQUc1RHd2QyxPQUFPLEVBQUVSLE1BQU0sQ0FBQ3htQztFQUg0QyxDQUFyQyxFQUl4QixDQUNDLENBQUMsR0FBR3JULEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3hvQyxRQUFsQyxDQUE1QyxFQUF5RjtFQUFFO0VBQTNGLENBREQsRUFFQyxDQUFDLEdBQUdyUixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NGLFVBQXRDLEVBQWtELENBQzlDLENBQUMsR0FBR2o1QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQUU1cEMsSUFBSSxFQUFFO0VBQVIsQ0FBM0MsQ0FEOEMsQ0FBbEQsQ0FGRCxDQUp3QixDQUQvQixJQVdNLENBQUMsR0FBR3BRLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWJ1QyxFQWM3QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTlDLGNBQVYsRUFBMEIsQ0FBQyxHQUFHbjlDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ0QsVUFBcEMsRUFBZ0QsRUFDckUsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQmxELE1BQU0sQ0FBQ2xwQyxhQUE3QixFQUE0QyxVQUFVM1EsS0FBVixFQUFpQjhLLEdBQWpCLEVBQXNCO0lBQy9JLE9BQVEsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztNQUNoRXR2QyxHQUFHLEVBQUVBLEdBRDJEO01BRWhFLFNBQU8sQ0FBQyxHQUFHN0ssS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxnQkFBRCxFQUFtQjk4QyxLQUFLLEtBQUs4NUMsTUFBTSxDQUFDeG9DLFFBQWpCLEdBQTRCLHVCQUE1QixHQUFzRCxFQUF6RSxDQUExQixDQUZ5RDtNQUdoRS9QLEtBQUssRUFBRTtRQUFFLGFBQWE7TUFBZixDQUh5RDtNQUloRSs0QyxPQUFPLEVBQUUsaUJBQVVJLE1BQVYsRUFBa0I7UUFBRSxPQUFRWixNQUFNLENBQUN6akMsMEJBQVAsQ0FBa0NyVyxLQUFsQyxFQUF5QzhLLEdBQXpDLENBQVI7TUFBeUQ7SUFKdEIsQ0FBcEMsRUFLN0IsQ0FBQyxHQUFHN0ssS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIzNkMsS0FBM0IsQ0FMNkIsRUFLTTtJQUFHO0lBTFQsRUFLbUNxNUMsVUFMbkMsQ0FBaEM7RUFNSCxDQVBnRixDQUFwRCxFQU96QjtFQUFJO0VBUHFCLENBRHlDLEVBQWhELEVBU3ZCO0VBQUk7RUFUbUIsQ0FBMUIsRUFTMEIsQ0FDdEIsQ0FBQ3A1QyxLQUFLLENBQUM4OUMsS0FBUCxFQUFjakUsTUFBTSxDQUFDcG9DLGlCQUFyQixDQURzQixDQVQxQixDQWQ2QyxDQUFqRCxDQUR1QyxDQUEzQyxDQUQ2RSxFQThCN0UsQ0FBQyxHQUFHelIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRSxVQUFyQyxFQUFpRCxDQUM1Q08sTUFBTSxDQUFDaHBDLFNBQVIsSUFDTyxDQUFDLEdBQUc1USxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDYixVQUF0QyxFQUFrRCxDQUFDLEdBQUd0NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJkLE1BQU0sQ0FBQ2hwQyxTQUFsQyxDQUFsRCxFQUFnRztFQUFFO0VBQWxHLENBRC9CLElBRU0sQ0FBQyxHQUFHNVEsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBSHVDLEVBSTdDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M7SUFDbEMzd0MsRUFBRSxFQUFFLGtCQUQ4QjtJQUVsQyxTQUFPLHlGQUYyQjtJQUdsQzZ4QyxPQUFPLEVBQUVSLE1BQU0sQ0FBQ3BsQztFQUhrQixDQUF0QyxFQUlHLENBQUMsR0FBR3pVLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUNsb0MsS0FBbEMsQ0FKSCxFQUk2QztFQUFFO0VBSi9DLENBSjZDLENBQWpELENBOUI2RSxFQXdDN0UsQ0FBQyxHQUFHM1IsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSSxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd2NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQ2pDLFNBQU8sQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUM7TUFBRWtCLEtBQUssRUFBRSxDQUFDbEUsTUFBTSxDQUFDOW5DLFlBQVAsQ0FBb0IsQ0FBcEIsQ0FBVjtNQUFrQyxZQUFZOG5DLE1BQU0sQ0FBQ2xvQyxLQUFQLEtBQWlCO0lBQS9ELENBQUQsRUFBK0UsZUFBL0UsQ0FBMUI7RUFEMEIsQ0FBckMsRUFFRyxDQUNDLENBQUMsR0FBRzNSLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsZUFBRCxDQUE3QixFQUFnRDtJQUM1Qzc0QyxHQUFHLEVBQUUsWUFEdUM7SUFFNUNnOUMsVUFBVSxFQUFFbkUsTUFBTSxDQUFDOW5DLFlBRnlCO0lBRzVDLHVCQUF1QjRuQyxNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBU1osTUFBTSxDQUFDOW5DLFlBQVIsR0FBd0Iwb0MsTUFBaEM7SUFBMEMsQ0FBeEYsQ0FIcUI7SUFJNUNsbkMsS0FBSyxFQUFFLEVBSnFDO0lBSzVDLHFCQUFxQixNQUx1QjtJQU01Q3NqQyxXQUFXLEVBQUUsYUFOK0I7SUFPNUMsZUFBZSxLQVA2QjtJQVE1Q29ILFNBQVMsRUFBRSxJQVJpQztJQVM1Q25zQyxNQUFNLEVBQUUrbkMsTUFBTSxDQUFDL25DLE1BVDZCO0lBVTVDLGlCQUFpQituQyxNQUFNLENBQUN2bUMsWUFWb0I7SUFXNUMsc0JBQXNCLEtBWHNCO0lBWTVDNHFDLFFBQVEsRUFBRSxJQVprQztJQWE1QyxnQkFBZ0JyRSxNQUFNLENBQUNsa0MsY0FicUI7SUFjNUN3b0MsTUFBTSxFQUFFdEUsTUFBTSxDQUFDL21DLG9CQWQ2QjtJQWU1Q3NyQyxTQUFTLEVBQUV2RSxNQUFNLENBQUNqbkM7RUFmMEIsQ0FBaEQsRUFnQkc7SUFDQ3lyQyxNQUFNLEVBQUUsQ0FBQyxHQUFHcitDLEtBQUssQ0FBQzQ2QyxPQUFWLEVBQW1CLFVBQVVqNkMsRUFBVixFQUFjO01BQ3JDLElBQUl1RSxLQUFLLEdBQUd2RSxFQUFFLENBQUN1RSxLQUFmO01BQUEsSUFBc0JxTyxLQUFLLEdBQUc1UyxFQUFFLENBQUM0UyxLQUFqQztNQUFBLElBQXdDK3FDLGVBQWUsR0FBRzM5QyxFQUFFLENBQUMyOUMsZUFBN0Q7TUFDQSxPQUFPLENBQ0gsQ0FBQyxHQUFHdCtDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztRQUNsQ2tCLE9BQU8sRUFBRSxpQkFBVUksTUFBVixFQUFrQjtVQUFFLE9BQVE2RCxlQUFlLENBQUMvcUMsS0FBRCxDQUF2QjtRQUFrQztNQUQ3QixDQUF0QyxFQUVHLENBQUMsR0FBR3ZULEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCeDFDLEtBQTNCLENBRkgsRUFFc0M7TUFBRTtNQUZ4QyxFQUUyRHMwQyxVQUYzRCxDQURHLENBQVA7SUFLSCxDQVBPLENBRFQ7SUFTQyxrQkFBa0IsQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQzQ2QyxPQUFWLEVBQW1CLFlBQVk7TUFBRSxPQUFPLENBQ3RELENBQUMsR0FBRzU2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFBRSxTQUFPO01BQVQsQ0FBckMsRUFBd0QsQ0FDcEQsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztRQUNwQyxTQUFPLGlEQUQ2QjtRQUVwQ2tCLE9BQU8sRUFBRVIsTUFBTSxDQUFDbGxDO01BRm9CLENBQXhDLEVBR0csVUFISCxDQURvRCxFQUtwRCxDQUFDLEdBQUczVSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0M7UUFDcEMsU0FBTyxnREFENkI7UUFFcENrQixPQUFPLEVBQUVSLE1BQU0sQ0FBQ2hsQztNQUZvQixDQUF4QyxFQUdHLFNBSEgsQ0FMb0QsQ0FBeEQsQ0FEc0QsQ0FBUDtJQVcvQyxDQVhjLENBVG5CO0lBcUJDNVAsQ0FBQyxFQUFFO0lBQUU7O0VBckJOLENBaEJILEVBc0NHO0VBQUU7RUF0Q0wsRUFzQ2tCLENBQUMsWUFBRCxFQUFlLGVBQWYsQ0F0Q2xCLENBREQsRUF3Q0MsQ0FBQyxHQUFHakYsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDO0lBQ2xDLFNBQU8sMERBRDJCO0lBRWxDNzNDLEtBQUssRUFBRTtNQUFFLFVBQVUsYUFBWjtNQUEyQixhQUFhLE1BQXhDO01BQWdELGNBQWM7SUFBOUQsQ0FGMkI7SUFHbEMrNEMsT0FBTyxFQUFFUixNQUFNLENBQUNwbEM7RUFIa0IsQ0FBdEMsRUFJRyxDQUNDLENBQUMsR0FBR3pVLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFBRTVwQyxJQUFJLEVBQUU7RUFBUixDQUEzQyxDQURELENBSkgsQ0F4Q0QsQ0FGSCxFQWlERztFQUFFO0VBakRMLENBRDZDLENBQWpELENBeEM2RSxDQUFqRCxFQTRGN0I7RUFBSTtFQTVGeUIsQ0FBaEM7QUE2Rkg7O0FBQ0R0USxjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ3hIYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUNiLGtCQUFrQixPQURMO0VBRWJ3RixNQUFNLEVBQUUsRUFGSztFQUdiLG1CQUFtQixzQkFITjtFQUliejhDLE1BQU0sRUFBRTtBQUpLLENBQWpCO0FBTUEsSUFBSWszQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxPQUFLO0FBQVAsQ0FBakI7O0FBQ0EsSUFBSUMsVUFBVSxHQUFHLGFBQWMsQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztFQUFFLFNBQU87QUFBVCxDQUF0QyxFQUFtRSxJQUFuRSxFQUF5RSxDQUFDO0FBQUU7QUFBNUUsQ0FBL0I7O0FBQ0EsSUFBSU0sV0FBVyxHQUFHO0VBQ2RqeEMsRUFBRSxFQUFFLEVBRFU7RUFFZCxlQUFlLE1BRkQ7RUFHZCxTQUFPLEVBSE87RUFJZDNCLFFBQVEsRUFBRSxFQUpJO0VBS2QyM0MsUUFBUSxFQUFFO0FBTEksQ0FBbEI7QUFPQSxJQUFJeEQsV0FBVyxHQUFHO0VBQUVqN0MsS0FBSyxFQUFFO0FBQVQsQ0FBbEI7QUFDQSxJQUFJazdDLFdBQVcsR0FBRztFQUNkLG1CQUFtQixxQkFETDtFQUVkbDdDLEtBQUssRUFBRTtBQUZPLENBQWxCO0FBSUEsSUFBSW03QyxXQUFXLEdBQUc7RUFBRW43QyxLQUFLLEVBQUU7QUFBVCxDQUFsQjtBQUNBLElBQUlvN0MsV0FBVyxHQUFHO0VBQUVwN0MsS0FBSyxFQUFFO0FBQVQsQ0FBbEI7QUFDQSxJQUFJcTdDLFdBQVcsR0FBRztFQUFFcjdDLEtBQUssRUFBRTtBQUFULENBQWxCO0FBQ0EsSUFBSXM3QyxXQUFXLEdBQUc7RUFDZCxTQUFPLG1JQURPO0VBRWRqckMsSUFBSSxFQUFFLEVBRlE7RUFHZHhKLElBQUksRUFBRTtBQUhRLENBQWxCO0FBS0EsSUFBSTAwQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxPQUFLO0FBQVAsQ0FBbEI7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHOTdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztFQUFFLFNBQU87QUFBVCxDQUF0QyxFQUFtRSxJQUFuRSxFQUF5RSxDQUFDO0FBQUU7QUFBNUUsQ0FBaEM7O0FBQ0EsSUFBSTRDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBRy83QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsVUFBOUIsRUFBMEM7RUFDdEUsU0FBTyxzQkFEK0Q7RUFFdEVzRixJQUFJLEVBQUUsSUFGZ0U7RUFHdEU3MUMsSUFBSSxFQUFFLEVBSGdFO0VBSXRFL0IsUUFBUSxFQUFFLEVBSjREO0VBS3RFNjNDLElBQUksRUFBRTtBQUxnRSxDQUExQyxFQU03Qix3RUFONkIsRUFNNkMsQ0FBQztBQUFFO0FBTmhELENBQWhDOztBQU9BLElBQUkxQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHajhDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztFQUFFLFNBQU87QUFBVCxDQUFyQyxFQUFvRSxDQUNoRyxhQUFjLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUM7RUFBRSxPQUFLO0FBQVAsQ0FBdkMsRUFBb0QsQ0FDOUQsYUFBYyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsV0FBM0IsQ0FEZ0QsRUFFOUQsYUFBYyxDQUFDLEdBQUdsOUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDO0VBQUUsU0FBTztBQUFULENBQXRDLEVBQW1FLElBQW5FLENBRmdELENBQXBELENBRGtGLENBQXBFLEVBSzdCLENBQUM7QUFBRTtBQUwwQixDQUFoQzs7QUFNQSxJQUFJK0MsV0FBVyxHQUFHO0VBQUVuOEMsS0FBSyxFQUFFO0FBQVQsQ0FBbEI7O0FBQ0EsSUFBSW84QyxXQUFXLEdBQUcsYUFBYyxDQUFDLEdBQUduOEMsS0FBSyxDQUFDMitDLGlCQUFWLEVBQTZCLHlMQUE3QixFQUF3TixDQUF4TixDQUFoQzs7QUFDQSxJQUFJbkMsV0FBVyxHQUFHO0VBQ2QsU0FBTywwSEFETztFQUVkcHNDLElBQUksRUFBRSxFQUZRO0VBR2R4SixJQUFJLEVBQUU7QUFIUSxDQUFsQjtBQUtBLElBQUk2MUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLFNBQVMzRCxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELElBQUlDLGtCQUFrQixHQUFHLENBQUMsR0FBR2g2QyxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsU0FBNUIsQ0FBekI7O0VBQ0EsT0FBUSxDQUFDLEdBQUdqNkMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ3BCLFVBQXRDLEVBQWtELENBQzlFLENBQUMsR0FBRy80QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2g1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUNGLFVBQXZDLEVBQW1ELENBQUMsR0FBR2o1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLGFBQTFCLENBQTNCLENBQW5ELEVBQXlIO0VBQUU7RUFBM0gsQ0FENkMsRUFFN0MsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDQyxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdwNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRSxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdyNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRyxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd0NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDSSxVQUF2QyxFQUFtRCxDQUMvQyxDQUFDLEdBQUd2NUMsS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsTUFBMUIsQ0FBM0IsQ0FBM0IsRUFBMEY7RUFBRTtFQUE1RixDQUQrQyxFQUUvQzB3QyxVQUYrQyxDQUFuRCxDQUQ2QyxDQUFqRCxDQUQ2QyxFQU83QyxDQUFDLEdBQUd4NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0NNLFdBQXhDLEVBQXFELENBQ2pELENBQUMsR0FBR3o1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0M2QixXQUF4QyxFQUFxRCxDQUFDLEdBQUdoN0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQiw0QkFBMUIsQ0FBM0IsQ0FBckQsRUFBMEk7RUFBRTtFQUE1SSxDQURpRCxFQUVqRCxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0M4QixXQUF4QyxFQUFxRCxVQUFVLENBQUMsR0FBR2o3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLFNBQTFCLENBQTNCLENBQS9ELEVBQWlJO0VBQUU7RUFBbkksQ0FGaUQsRUFHakQsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDK0IsV0FBeEMsRUFBcUQsVUFBVSxDQUFDLEdBQUdsN0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQixZQUExQixDQUEzQixDQUEvRCxFQUFvSTtFQUFFO0VBQXRJLENBSGlELEVBSWpELENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3Q2dDLFdBQXhDLEVBQXFELFVBQVUsQ0FBQyxHQUFHbjdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsZUFBMUIsQ0FBM0IsQ0FBL0QsRUFBdUk7RUFBRTtFQUF6SSxDQUppRCxFQUtqRCxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0NpQyxXQUF4QyxFQUFxRCxVQUFVLENBQUMsR0FBR3A3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLE9BQTFCLENBQTNCLENBQS9ELEVBQStIO0VBQUU7RUFBakksQ0FMaUQsQ0FBckQsQ0FEdUMsQ0FBM0MsQ0FQNkMsQ0FBakQsQ0FENkMsQ0FBakQsQ0FENkMsRUFvQjdDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3Q2tDLFdBQXhDLEVBQXFELENBQ2pELENBQUMsR0FBR3I3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NtQyxXQUF0QyxFQUFtRCxDQUMvQyxDQUFDLEdBQUd0N0MsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUFFNXBDLElBQUksRUFBRTtFQUFSLENBQTNDLENBRCtDLENBQW5ELENBRGlELEVBSWpELENBQUMsR0FBR3BRLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLE1BQU0sQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsNkJBQTFCLENBQTNCLENBQWpDLEVBQXVIO0VBQUU7RUFBekgsQ0FKaUQsQ0FBckQsQ0FwQjZDLEVBMEI3QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNvQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd2N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDcUMsV0FBdkMsRUFBb0QsQ0FBQyxHQUFHeDdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZXdCLFVBQWYsQ0FBMEIsV0FBMUIsQ0FBM0IsQ0FBcEQsRUFBd0g7RUFBRTtFQUExSCxDQUQ4QyxFQUU5QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNzQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd6N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDdUMsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHMTdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3dDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRzM3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN5QyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUc1N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDMEMsV0FBdkMsRUFBb0QsQ0FDaEQsQ0FBQyxHQUFHNzdDLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLE1BQTFCLENBQTNCLENBQTNCLEVBQTBGO0VBQUU7RUFBNUYsQ0FEZ0QsRUFFaERnekMsV0FGZ0QsQ0FBcEQsQ0FEOEMsQ0FBbEQsQ0FEOEMsRUFPOUNDLFdBUDhDLENBQWxELENBRDhDLEVBVTlDLENBQUMsR0FBRy83QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM2QyxXQUFyQyxFQUFrRCxDQUM5Q0MsV0FEOEMsRUFFOUMsQ0FBQyxHQUFHajhDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN2QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDLElBQXhDLEVBQThDLENBQzFDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0MrQyxXQUF4QyxFQUFxRCxDQUFDLEdBQUdsOEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFld0IsVUFBZixDQUEwQiw0QkFBMUIsQ0FBM0IsQ0FBckQsRUFBMEk7RUFBRTtFQUE1SSxDQUQwQyxFQUUxQ3F6QyxXQUYwQyxDQUE5QyxDQUR1QyxDQUEzQyxDQUY4QyxDQUFsRCxDQVY4QyxDQUFsRCxDQUQ4QyxDQUFsRCxDQUY4QyxDQUFsRCxDQTFCNkMsQ0FBakQsQ0FGNkMsQ0FBakQsQ0FEOEUsRUF3RDlFLENBQUMsR0FBR244QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0NxRCxXQUF4QyxFQUFxRCxDQUNqRCxDQUFDLEdBQUd4OEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDc0QsV0FBdEMsRUFBbUQsQ0FDL0MsQ0FBQyxHQUFHejhDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFBRTVwQyxJQUFJLEVBQUU7RUFBUixDQUEzQyxDQUQrQyxDQUFuRCxDQURpRCxFQUlqRCxDQUFDLEdBQUdwUSxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixNQUFNLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLDRCQUExQixDQUEzQixDQUFqQyxFQUFzSDtFQUFFO0VBQXhILENBSmlELENBQXJELENBeEQ4RSxDQUFsRCxDQUFoQztBQStESDs7QUFDRGhKLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDdklhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk0NkMsWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBVWgxQyxDQUFWLEVBQWE7RUFBRSxPQUFRLENBQUMsR0FBRzdGLEtBQUssQ0FBQzg2QyxXQUFWLEVBQXVCLGlCQUF2QixHQUEyQ2oxQyxDQUFDLEdBQUdBLENBQUMsRUFBaEQsRUFBb0QsQ0FBQyxHQUFHN0YsS0FBSyxDQUFDKzZDLFVBQVYsR0FBcEQsRUFBNkVsMUMsQ0FBckY7QUFBMEYsQ0FBNUg7O0FBQ0EsSUFBSWt6QyxVQUFVLEdBQUcsQ0FBQyxNQUFELENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHLENBQUMsTUFBRCxDQUFqQjtBQUNBLElBQUlFLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUNiM3VDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSTR1QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJdUIsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsV0FBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkdndDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSXd3QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxXQUFELENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2Q3d0MsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJOHdDLFdBQVcsR0FBRztFQUFFOXdDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSSt3QyxXQUFXLEdBQUc7RUFDZC93QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUlneEMsV0FBVyxHQUFHO0VBQ2RoeEMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJaXhDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxTQUFTbkQsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUdoNkMsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFNBQTVCLENBQXpCOztFQUNBLE9BQVFKLE1BQU0sQ0FBQ25qQyxTQUFSLElBQ0EsQ0FBQyxHQUFHMVcsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUM1RHR2QyxHQUFHLEVBQUUsQ0FEdUQ7SUFFNUQsU0FBTyxDQUFDLEdBQUc3SyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLGdDQUFELEVBQW1DO01BQzVELFFBQVEsQ0FBQ2pELE1BQU0sQ0FBQ3BqQyxPQUFSLElBQW1CLENBQUNxakMsTUFBTSxDQUFDcGpDLElBRHlCO01BRTVELFNBQVNvakMsTUFBTSxDQUFDcGpDO0lBRjRDLENBQW5DLENBQTFCO0VBRnFELENBQXJDLEVBTXhCLENBQ0VvakMsTUFBTSxDQUFDMWlDLGVBQVIsSUFDTyxDQUFDLEdBQUduWCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxRQUFELENBQTdCLEVBQXlDO0lBQUVodkMsR0FBRyxFQUFFO0VBQVAsQ0FBekMsQ0FEL0IsSUFFTSxDQUFDLEdBQUc3SyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FIUCxFQUlDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFDakMxaUMsSUFBSSxFQUFFLENBQUNvakMsTUFBTSxDQUFDcGpDLElBRG1CO0lBRWpDLFNBQU8sQ0FBQyxHQUFHelcsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEJoRCxNQUFNLENBQUNwakMsSUFBUCxHQUMzQiw2R0FEMkIsR0FFM0Isb0VBRkM7RUFGMEIsQ0FBckMsRUFLRyxDQUNDLENBQUMsR0FBR3pXLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0gsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0YsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHajVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUNqQzFpQyxJQUFJLEVBQUVvakMsTUFBTSxDQUFDcGpDLElBRG9CO0lBRWpDLFNBQU87RUFGMEIsQ0FBckMsRUFHRyxDQUNDLENBQUMsR0FBR3pXLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkM1cEMsSUFBSSxFQUFFLGtCQURpQztJQUV2QyxTQUFPO0VBRmdDLENBQTNDLENBREQsRUFLQyxDQUFDLEdBQUdwUSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NDLFVBQXRDLEVBQWtELENBQUMsR0FBR3A1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDbGpDLFVBQVAsR0FBb0IsR0FBcEIsR0FBMEJrakMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixRQUE1QixDQUFyRCxDQUFsRCxFQUErSTtFQUFFO0VBQWpKLENBTEQsQ0FISCxFQVNHO0VBQUU7RUFUTCxFQVNrQm93QyxVQVRsQixDQUQ2QyxFQVc1QyxDQUFDVyxNQUFNLENBQUNoakMsU0FBUCxDQUFpQkMsZ0JBQW5CLElBQ08sQ0FBQyxHQUFHOVcsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUM1RHR2QyxHQUFHLEVBQUUsQ0FEdUQ7SUFFNUQsU0FBTyxDQUFDLEdBQUc3SyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQmhELE1BQU0sQ0FBQ3BqQyxJQUFQLEdBQWMsV0FBZCxHQUE0QixXQUF0RDtFQUZxRCxDQUFyQyxFQUd4QixDQUNDLENBQUMsR0FBR3pXLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkM1cEMsSUFBSSxFQUFFLFNBRGlDO0lBRXZDLFNBQU87RUFGZ0MsQ0FBM0MsQ0FERCxFQUtDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ0UsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLHNCQUE1QixDQUEzQixDQUFsRCxFQUFtSTtFQUFFO0VBQXJJLENBTEQsQ0FId0IsRUFTeEI7RUFBRTtFQVRzQixDQUQvQixJQVdNLENBQUMsR0FBRzlJLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQXRCdUMsRUF1QjVDLENBQUNWLE1BQU0sQ0FBQ2hqQyxTQUFQLENBQWlCSSxpQkFBbEIsSUFBdUMsQ0FBQzRpQyxNQUFNLENBQUNoakMsU0FBUCxDQUFpQkcsZUFBMUQsSUFDTyxDQUFDLEdBQUdoWCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQzVEdHZDLEdBQUcsRUFBRSxDQUR1RDtJQUU1RCxTQUFPLENBQUMsR0FBRzdLLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCaEQsTUFBTSxDQUFDcGpDLElBQVAsS0FDNUIsQ0FBQ29qQyxNQUFNLENBQUNoakMsU0FBUCxDQUFpQkksaUJBQWxCLElBQXVDLENBQUM0aUMsTUFBTSxDQUFDaGpDLFNBQVAsQ0FBaUJHLGVBRDdCLElBRTNCLFdBRjJCLEdBRzNCLFdBSEM7RUFGcUQsQ0FBckMsRUFNeEIsQ0FDQyxDQUFDLEdBQUdoWCxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDNXBDLElBQUksRUFBRSxTQURpQztJQUV2QyxTQUFPO0VBRmdDLENBQTNDLENBREQsRUFLQyxDQUFDLEdBQUdwUSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NHLFVBQXRDLEVBQWtELENBQUMsR0FBR3Q1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixxQkFBNUIsQ0FBM0IsQ0FBbEQsRUFBa0k7RUFBRTtFQUFwSSxDQUxELENBTndCLEVBWXhCO0VBQUU7RUFac0IsQ0FEL0IsSUFjTSxDQUFDLEdBQUc5SSxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FyQ3VDLEVBc0M1QyxDQUFDVixNQUFNLENBQUNoakMsU0FBUCxDQUFpQkUsZ0JBQW5CLElBQ08sQ0FBQyxHQUFHL1csS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUM1RHR2QyxHQUFHLEVBQUUsQ0FEdUQ7SUFFNUQsU0FBTyxDQUFDLEdBQUc3SyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQmhELE1BQU0sQ0FBQ3BqQyxJQUFQLEdBQWMsV0FBZCxHQUE0QixXQUF0RDtFQUZxRCxDQUFyQyxFQUd4QixDQUNDLENBQUMsR0FBR3pXLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkM1cEMsSUFBSSxFQUFFLFNBRGlDO0lBRXZDLFNBQU87RUFGZ0MsQ0FBM0MsQ0FERCxFQUtDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ0ksVUFBdEMsRUFBa0QsQ0FBQyxHQUFHdjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLHVCQUE1QixDQUEzQixDQUFsRCxFQUFvSTtFQUFFO0VBQXRJLENBTEQsQ0FId0IsRUFTeEI7RUFBRTtFQVRzQixDQUQvQixJQVdNLENBQUMsR0FBRzlJLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWpEdUMsQ0FBakQsQ0FENkMsRUFvRDdDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsQ0FDdkMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztJQUNwQyxTQUFPLHdDQUQ2QjtJQUVwQ2tCLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtNQUFFLE9BQVFaLE1BQU0sQ0FBQ3BqQyxJQUFQLEdBQWMsQ0FBQ29qQyxNQUFNLENBQUNwakMsSUFBOUI7SUFBc0MsQ0FBcEY7RUFGMkIsQ0FBeEMsRUFHRyxDQUFDLEdBQUd6VyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDcGpDLElBQVAsR0FDeEJvakMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixXQUE1QixDQUR3QixHQUV4Qit3QyxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLFdBQTVCLENBRkgsQ0FISCxFQUtpRDtFQUFFO0VBTG5ELENBRHVDLENBQTNDLENBcEQ2QyxDQUFqRCxDQURELENBTEgsRUFtRUc7RUFBRztFQW5FTixFQW1FMEJpd0MsVUFuRTFCLENBSkQsRUF3RUMsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUNqQyxTQUFPLENBQUMsR0FBR241QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQmhELE1BQU0sQ0FBQ3BqQyxJQUFQLEdBQWMsMEJBQWQsR0FBMkMsMEJBQXJFO0VBRDBCLENBQXJDLEVBRUcsSUFGSCxFQUVTO0VBQUU7RUFGWCxDQXhFRCxFQTJFRSxDQUFDb2pDLE1BQU0sQ0FBQ2hqQyxTQUFQLENBQWlCQyxnQkFBbkIsSUFDTyxDQUFDLEdBQUc5VyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDWCxVQUFyQyxFQUFpRCxDQUN4RSxDQUFDLEdBQUd4NUMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJULE1BQU0sQ0FBQyxnQkFBRCxDQUE3QixFQUFpRDtJQUM3Q3BqQyxJQUFJLEVBQUVvakMsTUFBTSxDQUFDcGpDLElBRGdDO0lBRTdDbW9DLEVBQUUsRUFBRSxVQUZ5QztJQUc3Q0MsS0FBSyxFQUFFLHNDQUhzQztJQUk3QyxjQUFjLDJDQUorQjtJQUs3QyxZQUFZLDBDQUxpQztJQU03Q0MsS0FBSyxFQUFFLHNDQU5zQztJQU83QyxjQUFjLDBDQVArQjtJQVE3QyxZQUFZO0VBUmlDLENBQWpELEVBU0c7SUFDQyxXQUFTLENBQUMsR0FBRzkrQyxLQUFLLENBQUM0NkMsT0FBVixFQUFtQixZQUFZO01BQUUsT0FBTyxDQUM3QyxDQUFDLEdBQUc1NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDTSxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd6NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDNkIsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHaDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzhCLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR2o3QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO1FBQ3ZDNXBDLElBQUksRUFBRSxTQURpQztRQUV2QyxTQUFPO01BRmdDLENBQTNDLENBRDhDLEVBSzlDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsc0JBQTVCLENBQTNCLENBQTVDLEVBQTZIO01BQUU7TUFBL0gsQ0FMOEMsQ0FBbEQsQ0FEOEMsRUFROUMsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDK0IsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHbDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQyxJQUFuQyxFQUF5QyxDQUNyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLDhCQUE1QixDQUEzQixJQUEwRixHQUFySCxFQUEwSDtNQUFFO01BQTVILENBRHFDLEVBRXJDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUN4QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO1FBQy9CLFNBQU8sZ0dBRHdCO1FBRS9Ca0IsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO1VBQUUsT0FBUVosTUFBTSxDQUFDemlDLHVCQUFQLEVBQVI7UUFBNEMsQ0FBMUY7TUFGc0IsQ0FBbkMsRUFHRyxDQUFDLEdBQUdwWCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0Qiw4QkFBNUIsQ0FBM0IsQ0FISCxFQUc0RjtNQUFFO01BSDlGLENBRHdDLENBQTVDLENBRnFDLEVBUXJDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztRQUNsQzRGLFNBQVMsRUFBRWxGLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsOEJBQTVCO01BRHVCLENBQXRDLEVBRUcsSUFGSCxFQUVTO01BQUU7TUFGWCxFQUV3QnF5QyxXQUZ4QixDQVJxQyxDQUF6QyxDQUQ4QyxDQUFsRCxDQVI4QyxDQUFsRCxDQUQ4QyxDQUFsRCxDQUQ2QyxDQUFQO0lBMEJ0QyxDQTFCSyxDQURWO0lBNEJDbDJDLENBQUMsRUFBRTtJQUFFOztFQTVCTixDQVRILEVBc0NHO0VBQUU7RUF0Q0wsRUFzQ2tCLENBQUMsTUFBRCxDQXRDbEIsQ0FEd0UsQ0FBakQsQ0FEL0IsSUEwQ00sQ0FBQyxHQUFHakYsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBckhQLEVBc0hFLENBQUNWLE1BQU0sQ0FBQ2hqQyxTQUFQLENBQWlCSSxpQkFBbEIsSUFBdUMsQ0FBQzRpQyxNQUFNLENBQUNoakMsU0FBUCxDQUFpQkcsZUFBMUQsSUFDTyxDQUFDLEdBQUdoWCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDaUIsV0FBckMsRUFBa0QsQ0FDekUsQ0FBQyxHQUFHcDdDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsZ0JBQUQsQ0FBN0IsRUFBaUQ7SUFDN0NwakMsSUFBSSxFQUFFb2pDLE1BQU0sQ0FBQ3BqQyxJQURnQztJQUU3Q21vQyxFQUFFLEVBQUUsVUFGeUM7SUFHN0NDLEtBQUssRUFBRSxzQ0FIc0M7SUFJN0MsY0FBYywyQ0FKK0I7SUFLN0MsWUFBWSwwQ0FMaUM7SUFNN0NDLEtBQUssRUFBRSxzQ0FOc0M7SUFPN0MsY0FBYywwQ0FQK0I7SUFRN0MsWUFBWTtFQVJpQyxDQUFqRCxFQVNHO0lBQ0MsV0FBUyxDQUFDLEdBQUc5K0MsS0FBSyxDQUFDNDZDLE9BQVYsRUFBbUIsWUFBWTtNQUFFLE9BQU8sQ0FDN0MsQ0FBQyxHQUFHNTZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2tDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3I3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNtQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd0N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDb0MsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHdjdDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7UUFDdkM1cEMsSUFBSSxFQUFFLFNBRGlDO1FBRXZDLFNBQU87TUFGZ0MsQ0FBM0MsQ0FEOEMsRUFLOUMsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixxQkFBNUIsQ0FBM0IsQ0FBNUMsRUFBNEg7TUFBRTtNQUE5SCxDQUw4QyxDQUFsRCxDQUQ4QyxFQVE5QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNxQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd4N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO1FBQy9CNEYsU0FBUyxFQUFFbEYsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixpQ0FBNUI7TUFEb0IsQ0FBbkMsRUFFRyxJQUZILEVBRVM7TUFBRTtNQUZYLEVBRXdCMnlDLFdBRnhCLENBRDhDLEVBSTdDLENBQUM1QixNQUFNLENBQUNoakMsU0FBUCxDQUFpQkksaUJBQW5CLElBQ08sQ0FBQyxHQUFHalgsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3VCLFdBQXJDLEVBQWtELENBQ3pFLENBQUMsR0FBRzE3QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO1FBQ3ZDNXBDLElBQUksRUFBRSxXQURpQztRQUV2QyxTQUFPO01BRmdDLENBQTNDLENBRHlFLEVBS3pFLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQyxJQUFuQyxFQUF5QyxDQUNyQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLDZCQUE1QixDQUEzQixJQUF5RixLQUF6RixHQUFpRyxDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QiwwQkFBNUIsQ0FBM0IsQ0FBNUgsRUFBaU47TUFBRTtNQUFuTixDQURxQyxFQUVwQyxDQUFDK3dDLE1BQU0sQ0FBQ2hqQyxTQUFQLENBQWlCSyxZQUFuQixJQUNPLENBQUMsR0FBR2xYLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0N3QixXQUF0QyxFQUFtRCxPQUFPLENBQUMsR0FBRzM3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0Qix5QkFBNUIsQ0FBM0IsQ0FBUCxHQUE0RixHQUEvSSxFQUFvSjtNQUFFO01BQXRKLENBRC9CLElBRU0sQ0FBQyxHQUFHOUksS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBSitCLENBQXpDLENBTHlFLENBQWxELENBRC9CLElBYU0sQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWpCd0MsRUFrQjdDLENBQUNWLE1BQU0sQ0FBQ2hqQyxTQUFQLENBQWlCRyxlQUFuQixJQUNPLENBQUMsR0FBR2hYLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN5QixXQUFyQyxFQUFrRCxDQUN6RSxDQUFDLEdBQUc1N0MsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztRQUN2QzVwQyxJQUFJLEVBQUUsV0FEaUM7UUFFdkMsU0FBTztNQUZnQyxDQUEzQyxDQUR5RSxFQUt6RSxDQUFDLEdBQUdwUSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUMsSUFBbkMsRUFBeUMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLHVCQUE1QixDQUEzQixDQUF6QyxFQUEySDtNQUFFO01BQTdILENBTHlFLENBQWxELENBRC9CLElBUU0sQ0FBQyxHQUFHOUksS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBMUJ3QyxDQUFsRCxDQVI4QyxDQUFsRCxDQUQ4QyxDQUFsRCxDQUQ2QyxDQUFQO0lBd0N0QyxDQXhDSyxDQURWO0lBMENDdDFDLENBQUMsRUFBRTtJQUFFOztFQTFDTixDQVRILEVBb0RHO0VBQUU7RUFwREwsRUFvRGtCLENBQUMsTUFBRCxDQXBEbEIsQ0FEeUUsQ0FBbEQsQ0FEL0IsSUF3RE0sQ0FBQyxHQUFHakYsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBOUtQLEVBK0tFLENBQUNWLE1BQU0sQ0FBQ2hqQyxTQUFQLENBQWlCRSxnQkFBbkIsSUFDTyxDQUFDLEdBQUcvVyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDMEIsV0FBckMsRUFBa0QsQ0FDekUsQ0FBQyxHQUFHNzdDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsZ0JBQUQsQ0FBN0IsRUFBaUQ7SUFDN0NwakMsSUFBSSxFQUFFb2pDLE1BQU0sQ0FBQ3BqQyxJQURnQztJQUU3Q21vQyxFQUFFLEVBQUUsVUFGeUM7SUFHN0NDLEtBQUssRUFBRSxzQ0FIc0M7SUFJN0MsY0FBYywyQ0FKK0I7SUFLN0MsWUFBWSwwQ0FMaUM7SUFNN0NDLEtBQUssRUFBRSxzQ0FOc0M7SUFPN0MsY0FBYywwQ0FQK0I7SUFRN0MsWUFBWTtFQVJpQyxDQUFqRCxFQVNHO0lBQ0MsV0FBUyxDQUFDLEdBQUc5K0MsS0FBSyxDQUFDNDZDLE9BQVYsRUFBbUIsWUFBWTtNQUFFLE9BQU8sQ0FDN0MsQ0FBQyxHQUFHNTZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzJDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRzk3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM0QyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUcvN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDNkMsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHaDhDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7UUFDdkM1cEMsSUFBSSxFQUFFLFNBRGlDO1FBRXZDLFNBQU87TUFGZ0MsQ0FBM0MsQ0FEOEMsRUFLOUMsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0Qix1QkFBNUIsQ0FBM0IsQ0FBNUMsRUFBOEg7TUFBRTtNQUFoSSxDQUw4QyxDQUFsRCxDQUQ4QyxFQVE5QyxDQUFDLEdBQUc5SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM4QyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdqOEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DLElBQW5DLEVBQXlDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0Qix5QkFBNUIsQ0FBM0IsQ0FBekMsRUFBNkg7TUFBRTtNQUEvSCxDQUQ4QyxDQUFsRCxDQVI4QyxDQUFsRCxDQUQ4QyxDQUFsRCxDQUQ2QyxDQUFQO0lBZXRDLENBZkssQ0FEVjtJQWlCQzdELENBQUMsRUFBRTtJQUFFOztFQWpCTixDQVRILEVBMkJHO0VBQUU7RUEzQkwsRUEyQmtCLENBQUMsTUFBRCxDQTNCbEIsQ0FEeUUsQ0FBbEQsQ0FEL0IsSUErQk0sQ0FBQyxHQUFHakYsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBOU1QLENBTndCLEVBcU54QjtFQUFFO0VBck5zQixDQUR4QixJQXVORCxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBdk5OO0FBd05IOztBQUNEejZDLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDM1FhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHLGFBQWMsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztFQUFFLFNBQU87QUFBVCxDQUFyQyxFQUFrRixJQUFsRixFQUF3RixDQUFDO0FBQUU7QUFBM0YsQ0FBL0I7O0FBQ0EsSUFBSUgsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHO0VBQ2J2dUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJd3VDLFVBQVUsR0FBRztFQUNieHVDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSXl1QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7O0FBQ0EsU0FBU1IsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUdoNkMsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFNBQTVCLENBQXpCOztFQUNBLE9BQVEsQ0FBQyxHQUFHajZDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsQ0FDdkVwQixVQUR1RSxFQUV2RSxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DRixVQUFwQyxFQUFnRCxDQUM1QyxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QzVwQyxJQUFJLEVBQUUsT0FEaUM7SUFFdkMsU0FBTztFQUZnQyxDQUEzQyxDQUQ0QyxFQUs1QyxDQUFDLEdBQUdwUSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NELFVBQXRDLEVBQWtELENBQUMsR0FBR2w1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDbnpDLEtBQVAsQ0FBYXdSLEtBQXhDLENBQWxELEVBQWtHO0VBQUU7RUFBcEcsQ0FMNEMsQ0FBaEQsQ0FENkMsRUFRNUMsT0FBTzJoQyxNQUFNLENBQUNuekMsS0FBUCxDQUFhOEMsT0FBcEIsS0FBZ0MsUUFBakMsSUFDTyxDQUFDLEdBQUd4SixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DZixVQUFuQyxFQUErQyxDQUFDLEdBQUdwNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ256QyxLQUFQLENBQWE4QyxPQUF4QyxDQUEvQyxFQUFpRztFQUFFO0VBQW5HLENBRC9CLEtBRU8sQ0FBQyxHQUFHeEosS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ2QsVUFBcEMsRUFBZ0QsRUFDdEUsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQmpELE1BQU0sQ0FBQ256QyxLQUFQLENBQWE4QyxPQUFuQyxFQUE0QyxVQUFVK1AsSUFBVixFQUFnQmxILEtBQWhCLEVBQXVCO0lBQ2hKLE9BQVEsQ0FBQyxHQUFHclMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztNQUNoRXR2QyxHQUFHLEVBQUV3SCxLQUQyRDtNQUVoRSxTQUFPO0lBRnlELENBQXBDLEVBRzdCLENBQUMsR0FBR3JTLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCbmhDLElBQTNCLENBSDZCLEVBR0s7SUFBRTtJQUhQLENBQWhDO0VBSUgsQ0FMZ0YsQ0FBcEQsRUFLekI7RUFBSTtFQUxxQixDQUQwQyxFQUFoRCxDQUYvQixDQVI2QyxFQWtCN0MsQ0FBQyxHQUFHdlosS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRyxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd0NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO0lBQ3BDLFNBQU8sNEVBRDZCO0lBRXBDa0IsT0FBTyxFQUFFUixNQUFNLENBQUMxaEM7RUFGb0IsQ0FBeEMsRUFHRyxDQUFDLEdBQUduWSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrYSxNQUFqQixDQUF3QixPQUF4QixDQUEzQixDQUhILEVBR2lFO0VBQUU7RUFIbkUsQ0FENkMsQ0FBakQsQ0FsQjZDLENBQWpELENBRnVFLENBQTNDLENBQWhDO0FBNEJIOztBQUNEdmlCLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDaERhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQ2JudUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJb3VDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRyxDQUFDLFdBQUQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUcsQ0FBQyxNQUFELENBQWpCOztBQUNBLFNBQVNOLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSUMsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHaDZDLEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixTQUE1QixDQUF6Qjs7RUFDQSxPQUFRLENBQUMsR0FBR2o2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcEIsVUFBckMsRUFBaUQsQ0FDN0UsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QyxJQUF4QyxFQUE4QyxDQUMxQyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QyxTQUFPLENBQUMsR0FBR2g2QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLFdBQUQsRUFBYztNQUN2QyxhQUFhbkQsSUFBSSxDQUFDbmhDLFFBRHFCO01BRXZDQSxRQUFRLEVBQUUsQ0FBQ21oQyxJQUFJLENBQUNuaEM7SUFGdUIsQ0FBZCxDQUExQixDQURnQztJQUt2Q25JLElBQUksRUFBRTtFQUxpQyxDQUEzQyxFQU1HLElBTkgsRUFNUztFQUFFO0VBTlgsRUFNd0IsQ0FBQyxPQUFELENBTnhCLENBRDBDLENBQTlDLENBRDZFLEVBVTdFLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUNqQyxTQUFPLENBQUMsR0FBR241QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUM3Qm5ELElBQUksQ0FBQ3BoQyxRQUFMLEtBQWtCLE9BQWxCLEdBQ00sdUJBQXVCb2hDLElBQUksQ0FBQ3JoQyxLQURsQyxHQUVNLHdCQUF3QnFoQyxJQUFJLENBQUNyaEMsS0FITixDQUExQjtFQUQwQixDQUFyQyxFQU1HLENBQ0VxaEMsSUFBSSxDQUFDbGhDLGlCQUFOLElBQ08sQ0FBQyxHQUFHeFksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ25CLFVBQXJDLEVBQWlELENBQUMsR0FBR2g1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3B5QyxTQUFMLENBQWV3QixVQUFmLENBQTBCLHlCQUExQixDQUEzQixDQUFqRCxFQUFtSTtFQUFFO0VBQXJJLENBRC9CLElBRU0sQ0FBQyxHQUFHOUksS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBSFAsRUFJQyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDRixVQUF0QyxFQUFrRCxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUM5d0MsSUFBaEMsQ0FBbEQsRUFBeUY7RUFBRTtFQUEzRixDQUpELEVBS0MsQ0FBQyxHQUFHNUksS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLGdDQUE5QixDQUxELEVBTUMsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztJQUFFNEYsU0FBUyxFQUFFckYsSUFBSSxDQUFDdGhDO0VBQWxCLENBQW5DLEVBQWtFLElBQWxFLEVBQXdFO0VBQUU7RUFBMUUsRUFBdUY4Z0MsVUFBdkYsQ0FORCxFQU9DLENBQUMsR0FBR2w1QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsZUFBOUIsQ0FQRCxFQVFFYixJQUFJLENBQUNsM0MsSUFBTixJQUNPLENBQUMsR0FBR3hDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7SUFDMUR0dkMsR0FBRyxFQUFFLENBRHFEO0lBRTFEbkksSUFBSSxFQUFFZzNDLElBQUksQ0FBQ2wzQyxJQUYrQztJQUcxRCxTQUFPO0VBSG1ELENBQW5DLEVBSXhCLENBQUMsR0FBR3hDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZSthLE1BQWYsQ0FBc0IsWUFBdEIsQ0FBM0IsQ0FKd0IsRUFJeUM7RUFBRTtFQUozQyxFQUk4RCsyQixVQUo5RCxDQUQvQixJQU1NLENBQUMsR0FBR3A1QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FkUCxDQU5ILEVBcUJHO0VBQUU7RUFyQkwsQ0FWNkUsQ0FBakQsQ0FBaEM7QUFpQ0g7O0FBQ0R6NkMsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUNoRGE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7O0FBQ0EsSUFBSUMsVUFBVSxHQUFHLGFBQWMsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztFQUFFLFNBQU87QUFBVCxDQUFyQyxFQUFrRSxDQUM3RixhQUFjLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7RUFBRSxTQUFPO0FBQVQsQ0FBckMsRUFBb0UsQ0FDOUUsYUFBYyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDO0VBQUUsU0FBTztBQUFULENBQXRDLENBRGdFLENBQXBFLENBRCtFLENBQWxFLEVBSTVCLENBQUM7QUFBRTtBQUp5QixDQUEvQjs7QUFLQSxJQUFJRixVQUFVLEdBQUcsQ0FDYkQsVUFEYSxDQUFqQjs7QUFHQSxTQUFTRixNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELE9BQVEsQ0FBQyxHQUFHLzVDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNwQixVQUFyQyxFQUFpREUsVUFBakQsQ0FBaEM7QUFDSDs7QUFDRG41QyxjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ2hCYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLzNDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSWc0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFDYixTQUFPLFFBRE07RUFFYjUzQyxLQUFLLEVBQUU7SUFBRSxnQkFBZ0I7RUFBbEI7QUFGTSxDQUFqQjtBQUlBLElBQUk4M0MsVUFBVSxHQUFHLENBQUMsYUFBRCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUNienVDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSTB1QyxVQUFVLEdBQUc7RUFDYjF1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUkydUMsVUFBVSxHQUFHO0VBQ2IzdUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJNHVDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUl1QixXQUFXLEdBQUcsQ0FBQyxJQUFELEVBQU8sT0FBUCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLEtBQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZCxTQUFPLGVBRE87RUFFZDU1QyxLQUFLLEVBQUU7QUFGTyxDQUFsQjs7QUFJQSxTQUFTdzNDLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSUMsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHaDZDLEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixTQUE1QixDQUF6Qjs7RUFDQSxPQUFRLENBQUMsR0FBR2o2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcEIsVUFBckMsRUFBaUQsQ0FDN0UsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0gsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ0YsVUFBbkMsRUFBK0MsQ0FBQyxHQUFHajVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUNuekMsS0FBUCxDQUFhaVMsTUFBeEMsQ0FBL0MsRUFBZ0c7RUFBRTtFQUFsRyxDQUQ2QyxFQUU3QyxDQUFDLEdBQUczWSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNELFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2w1QyxLQUFLLENBQUNtOUMsY0FBVixFQUEwQixDQUFDLEdBQUduOUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDO0lBQzdELHVCQUF1QlEsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtNQUFFLE9BQVNaLE1BQU0sQ0FBQy9nQyxXQUFSLEdBQXVCMmhDLE1BQS9CO0lBQXlDLENBQXZGLENBRHNDO0lBRTdELFNBQU8sc0JBRnNEO0lBRzdEN3pDLElBQUksRUFBRSxNQUh1RDtJQUk3RGl3QyxXQUFXLEVBQUUsVUFBVWwxQyxNQUFWLENBQWlCazRDLE1BQU0sQ0FBQ256QyxLQUFQLENBQWFpUyxNQUE5QixFQUFzQyxLQUF0QyxDQUpnRDtJQUs3RHJYLEtBQUssRUFBRTtNQUFFLFNBQVMsTUFBWDtNQUFtQixVQUFVO0lBQTdCLENBTHNEO0lBTTdEMDlDLE9BQU8sRUFBRXJGLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7TUFBRSxPQUFRWixNQUFNLENBQUNyZ0MsbUJBQVAsRUFBUjtJQUF3QyxDQUF0RjtFQU5vRCxDQUF2QyxFQU92QixJQVB1QixFQU9qQjtFQUFHO0VBUGMsRUFPZTQvQixVQVBmLENBQTFCLEVBT3NELENBQ2xELENBQUNwNUMsS0FBSyxDQUFDczlDLFVBQVAsRUFBbUJ6RCxNQUFNLENBQUMvZ0MsV0FBMUIsQ0FEa0QsQ0FQdEQsQ0FENkMsRUFXN0MsQ0FBQyxHQUFHOVksS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUFFNXBDLElBQUksRUFBRTtFQUFSLENBQTNDLENBWDZDLENBQWpELENBRjZDLEVBZTdDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0UsVUFBckMsRUFBaUQsQ0FDNUNRLE1BQU0sQ0FBQ3hnQyxtQkFBUixJQUNPLENBQUMsR0FBR3JaLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNiLFVBQXJDLEVBQWlELGlCQUFqRCxDQUQvQixLQUVPLENBQUMsR0FBR3Q1QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DWixVQUFwQyxFQUFnRCxFQUN0RSxDQUFDLEdBQUd2NUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCakQsTUFBTSxDQUFDamhDLGFBQTdCLEVBQTRDLFVBQVVXLElBQVYsRUFBZ0I7SUFDekksT0FBUSxDQUFDLEdBQUd2WixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DO01BQ2hFdHZDLEdBQUcsRUFBRTBPLElBQUksQ0FBQzFPO0lBRHNELENBQXBDLEVBRTdCLENBQ0UwTyxJQUFJLENBQUM5QyxJQUFOLElBQ08sQ0FBQyxHQUFHelcsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ1gsVUFBckMsRUFBaUQsQ0FDeEUsQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ00sV0FBdEMsRUFBbUQsQ0FDL0MsQ0FBQyxHQUFHejVDLEtBQUssQ0FBQ205QyxjQUFWLEVBQTBCLENBQUMsR0FBR245QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUM7TUFDN0Qzd0MsRUFBRSxFQUFFK1EsSUFBSSxDQUFDMU8sR0FEb0Q7TUFFN0QsdUJBQXVCOHVDLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7UUFBRSxPQUFTWixNQUFNLENBQUM5Z0MsWUFBUixHQUF3QjBoQyxNQUFoQztNQUEwQyxDQUF4RixDQUZzQztNQUc3RDd6QyxJQUFJLEVBQUUsVUFIdUQ7TUFJN0Q3RyxLQUFLLEVBQUV3WixJQUFJLENBQUMxTztJQUppRCxDQUF2QyxFQUt2QixJQUx1QixFQUtqQjtJQUFFO0lBTGUsRUFLRm13QyxXQUxFLENBQTFCLEVBS3NDLENBQ2xDLENBQUNoN0MsS0FBSyxDQUFDaS9DLGNBQVAsRUFBdUJwRixNQUFNLENBQUM5Z0MsWUFBOUIsQ0FEa0MsQ0FMdEMsQ0FEK0MsQ0FBbkQsQ0FEd0UsRUFXeEUsQ0FBQyxHQUFHL1ksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDO01BQ25DLFNBQU8sb0JBRDRCO01BRW5DLE9BQUs1L0IsSUFBSSxDQUFDMU87SUFGeUIsQ0FBdkMsRUFHRyxDQUFDLEdBQUc3SyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQm5oQyxJQUFJLENBQUNyVSxLQUFoQyxDQUhILEVBRzJDO0lBQUU7SUFIN0MsRUFHZ0UrMUMsV0FIaEUsQ0FYd0UsQ0FBakQsQ0FEL0IsSUFpQk0sQ0FBQyxHQUFHajdDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWxCUCxDQUY2QixDQUFoQztFQXNCSCxDQXZCZ0YsQ0FBcEQsRUF1QnpCO0VBQUk7RUF2QnFCLENBRDBDLEVBQWhELENBRi9CLENBRDZDLENBQWpELENBZjZDLENBQWpELENBRDZFLEVBK0M3RSxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDK0IsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHbDdDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsY0FBRCxDQUE3QixFQUErQztJQUMzQyxTQUFPLE9BRG9DO0lBRTNDM3BDLElBQUksRUFBRSxPQUZxQztJQUczQ3RKLElBQUksRUFBRSxTQUhxQztJQUkzQ3l6QyxPQUFPLEVBQUVSLE1BQU0sQ0FBQ2xnQztFQUoyQixDQUEvQyxDQUQ4QyxDQUFsRCxDQS9DNkUsQ0FBakQsRUF1RDdCO0VBQUk7RUF2RHlCLENBQWhDO0FBd0RIOztBQUNEN1osY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUMzRmE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUcsQ0FBQyxNQUFELENBQWpCOztBQUNBLFNBQVNOLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsT0FBUSxDQUFDLEdBQUcvNUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN2RSxDQUFDLEdBQUduNkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSixVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDRixVQUF4QyxFQUFvRCxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNoekMsS0FBTCxDQUFXa0MsSUFBdEMsQ0FBcEQsRUFBaUc7RUFBRTtFQUFuRyxDQUQ2QyxFQUU3QyxDQUFDLEdBQUc1SSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNELFVBQW5DLEVBQStDLENBQUMsR0FBR2w1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ2h6QyxLQUFMLENBQVd3SixJQUF0QyxDQUEvQyxFQUE0RjtFQUFFO0VBQTlGLENBRjZDLEVBRzdDLENBQUMsR0FBR2xRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztJQUMvQixTQUFPLFlBRHdCO0lBRS9CejJDLElBQUksRUFBRSxHQUFHZixNQUFILENBQVUrM0MsSUFBSSxDQUFDaHpDLEtBQUwsQ0FBV29ULE9BQXJCO0VBRnlCLENBQW5DLEVBR0csQ0FBQyxHQUFHOVosS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNoekMsS0FBTCxDQUFXbVQsT0FBdEMsQ0FISCxFQUdtRDtFQUFFO0VBSHJELEVBR3dFdS9CLFVBSHhFLENBSDZDLENBQWpELENBRDZDLENBQWpELENBRHVFLENBQTNDLENBQWhDO0FBWUg7O0FBQ0R0NUMsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUN2QmE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTQ2QyxZQUFZLEdBQUcsU0FBZkEsWUFBZSxDQUFVaDFDLENBQVYsRUFBYTtFQUFFLE9BQVEsQ0FBQyxHQUFHN0YsS0FBSyxDQUFDODZDLFdBQVYsRUFBdUIsaUJBQXZCLEdBQTJDajFDLENBQUMsR0FBR0EsQ0FBQyxFQUFoRCxFQUFvRCxDQUFDLEdBQUc3RixLQUFLLENBQUMrNkMsVUFBVixHQUFwRCxFQUE2RWwxQyxDQUFyRjtBQUEwRixDQUE1SDs7QUFDQSxJQUFJa3pDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjs7QUFDQSxTQUFTRCxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELE9BQVEsQ0FBQyxHQUFHLzVDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QjM2QyxLQUFLLENBQUNrL0MsUUFBN0IsRUFBdUM7SUFBRUMsRUFBRSxFQUFFO0VBQU4sQ0FBdkMsRUFBdUQsQ0FDbkYsQ0FBQyxHQUFHbi9DLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCdDZDLEtBQUssQ0FBQ28vQyxVQUE3QixFQUF5QztJQUFFeDJDLElBQUksRUFBRTtFQUFSLENBQXpDLEVBQXNFO0lBQ2xFLFdBQVMsQ0FBQyxHQUFHNUksS0FBSyxDQUFDNDZDLE9BQVYsRUFBbUIsWUFBWTtNQUFFLE9BQU8sQ0FDNUNsQixJQUFJLENBQUMzL0IsV0FBTixJQUNPLENBQUMsR0FBRy9aLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFDNUR0dkMsR0FBRyxFQUFFLENBRHVEO1FBRTVELFNBQU8sQ0FBQyxHQUFHN0ssS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQztVQUFFLFFBQVFuRCxJQUFJLENBQUMxL0I7UUFBZixDQUFELEVBQTZCLGdHQUE3QixDQUExQjtNQUZxRCxDQUFyQyxFQUd4QixDQUNDLENBQUMsR0FBR2hhLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCdDZDLEtBQUssQ0FBQ28vQyxVQUE3QixFQUF5QztRQUFFeDJDLElBQUksRUFBRTtNQUFSLENBQXpDLEVBQTRFO1FBQ3hFLFdBQVMsQ0FBQyxHQUFHNUksS0FBSyxDQUFDNDZDLE9BQVYsRUFBbUIsWUFBWTtVQUFFLE9BQU8sQ0FDN0MsQ0FBQyxHQUFHNTZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0osVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztZQUNqQyxTQUFPLHVFQUQwQjtZQUVqQ2tCLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQ25CO1lBQ0EsWUFBWTtjQUNSLElBQUkwRixJQUFJLEdBQUcsRUFBWDs7Y0FDQSxLQUFLLElBQUkvNkIsRUFBRSxHQUFHLENBQWQsRUFBaUJBLEVBQUUsR0FBR1ksU0FBUyxDQUFDL2UsTUFBaEMsRUFBd0NtZSxFQUFFLEVBQTFDLEVBQThDO2dCQUMxQys2QixJQUFJLENBQUMvNkIsRUFBRCxDQUFKLEdBQVdZLFNBQVMsQ0FBQ1osRUFBRCxDQUFwQjtjQUNIOztjQUNELE9BQVFvMUIsSUFBSSxDQUFDdmhDLEtBQUwsSUFBY3VoQyxJQUFJLENBQUN2aEMsS0FBTCxDQUFXcFQsS0FBWCxDQUFpQjIwQyxJQUFqQixFQUF1QjJGLElBQXZCLENBQXRCO1lBQ0gsQ0FSSTtVQUZ3QixDQUFyQyxDQUQ2QyxFQWE1QzNGLElBQUksQ0FBQzMvQixXQUFOLElBQ08sQ0FBQyxHQUFHL1osS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztZQUM1RHR2QyxHQUFHLEVBQUUsQ0FEdUQ7WUFFNUR2SixLQUFLLEVBQUUsQ0FBQyxHQUFHdEIsS0FBSyxDQUFDdzZDLGNBQVYsRUFBMEIsYUFBYTc0QyxNQUFiLENBQW9CKzNDLElBQUksQ0FBQ3JoQyxLQUF6QixFQUFnQyxLQUFoQyxDQUExQixDQUZxRDtZQUc1RCxTQUFPLENBQUMsR0FBR3JZLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUM7Y0FBRSxRQUFRbkQsSUFBSSxDQUFDMS9CO1lBQWYsQ0FBRCxFQUE2Qix5RkFBN0IsQ0FBMUI7VUFIcUQsQ0FBckMsRUFJeEIsQ0FDQyxDQUFDLEdBQUdoYSxLQUFLLENBQUNzL0MsVUFBVixFQUFzQjVGLElBQUksQ0FBQzZGLE1BQTNCLEVBQW1DLFNBQW5DLEVBQThDLEVBQTlDLEVBQWtEdjFCLFNBQWxELEVBQTZELElBQTdELENBREQsQ0FKd0IsRUFNeEI7VUFBRTtVQU5zQixDQUQvQixJQVFNLENBQUMsR0FBR2hxQixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FyQnVDLENBQWpELENBRDZDLENBQVA7UUF3QnRDLENBeEJLLENBRCtEO1FBMEJ4RXQxQyxDQUFDLEVBQUU7UUFBRTs7TUExQm1FLENBQTVFLENBREQsQ0FId0IsRUFnQ3hCO01BQUU7TUFoQ3NCLENBRC9CLElBa0NNLENBQUMsR0FBR2pGLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQW5DdUMsQ0FBUDtJQW9DdEMsQ0FwQ0ssQ0FEeUQ7SUFzQ2xFdDFDLENBQUMsRUFBRTtJQUFFOztFQXRDNkQsQ0FBdEUsQ0FEbUYsQ0FBdkQsQ0FBaEM7QUEwQ0g7O0FBQ0RuRixjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ2xEYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjs7QUFDQSxTQUFTRixNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELElBQUl5Riw4QkFBOEIsR0FBRyxDQUFDLEdBQUd4L0MsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLHFCQUE1QixFQUFtRCxJQUFuRCxDQUFyQzs7RUFDQSxPQUFRLENBQUMsR0FBR2o2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcEIsVUFBckMsRUFBaUQsQ0FDN0UsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCa0YsOEJBQXZCLEVBQXVEO0lBQ25EQyxRQUFRLEVBQUUsRUFEeUM7SUFFbkQsbUJBQW1CL0YsSUFBSSxDQUFDdC9CLGdCQUYyQjtJQUduRCxlQUFlcy9CLElBQUksQ0FBQ3IvQixZQUgrQjtJQUluRCxnQkFBZ0IsS0FKbUM7SUFLbkQsc0JBQXNCLFdBTDZCO0lBTW5ELGVBQWUsU0FOb0M7SUFPbkQsY0FBYyxTQVBxQztJQVFuRCxnQkFBZ0IsQ0FSbUM7SUFTbkQsc0JBQXNCO0VBVDZCLENBQXZELEVBVUc7SUFDQyxXQUFTLENBQUMsR0FBR3JhLEtBQUssQ0FBQzQ2QyxPQUFWLEVBQW1CLFlBQVk7TUFBRSxPQUFPLENBQzdDLENBQUMsR0FBRzU2QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsMkJBQTlCLENBRDZDLEVBRTdDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNILFVBQW5DLEVBQStDLENBQUMsR0FBR2g1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3QvQixnQkFBaEMsSUFBb0QsSUFBbkcsRUFBeUc7TUFBRTtNQUEzRyxDQUY2QyxDQUFQO0lBR3RDLENBSEssQ0FEVjtJQUtDblYsQ0FBQyxFQUFFO0lBQUU7O0VBTE4sQ0FWSCxFQWdCRztFQUFFO0VBaEJMLEVBZ0JrQixDQUFDLGlCQUFELEVBQW9CLGFBQXBCLENBaEJsQixDQUQ2RSxDQUFqRCxDQUFoQztBQW1CSDs7QUFDRG5GLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDNUJhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLFNBQVM2NEMsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxPQUFRLENBQUMsR0FBRy81QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JsRCxNQUFNLENBQUNyL0IsUUFBN0IsRUFBdUMsVUFBVW1sQyxHQUFWLEVBQWU7SUFDMUksT0FBUSxDQUFDLEdBQUcxL0MsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztNQUFFdHZDLEdBQUcsRUFBRTYwQztJQUFQLENBQXBDLEVBQWtELEVBQzdFLENBQUMsR0FBRzEvQyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JsRCxNQUFNLENBQUNwL0IsUUFBN0IsRUFBdUMsVUFBVW1sQyxHQUFWLEVBQWU7TUFDbkksT0FBUSxDQUFDLEdBQUczL0MsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztRQUNoRXR2QyxHQUFHLEVBQUU4MEMsR0FEMkQ7UUFFaEUsU0FBTztNQUZ5RCxDQUFwQyxFQUc3QixDQUNDLENBQUMsR0FBRzMvQyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLGdCQUFELENBQTdCLEVBQWlEO1FBQUUsU0FBTztNQUFULENBQWpELENBREQsQ0FINkIsQ0FBaEM7SUFNSCxDQVBnRixDQUFwRCxFQU96QjtJQUFJO0lBUHFCLENBRGlELEVBQWxELENBQWhDO0VBVUgsQ0FYdUYsQ0FBcEQsRUFXaEM7RUFBSTtFQVg0QixDQUFwQztBQVlIOztBQUNELzVDLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDbEJhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQ2IsU0FBTyxZQURNO0VBRWIsY0FBYztBQUZELENBQWpCO0FBSUEsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQ2JwdUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJcXVDLFVBQVUsR0FBRyxDQUFDLFNBQUQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFDYnZ1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUl3dUMsVUFBVSxHQUFHO0VBQ2J4dUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJeXVDLFVBQVUsR0FBRyxDQUFDLFNBQUQsQ0FBakI7O0FBQ0EsSUFBSUMsVUFBVSxHQUFHLGFBQWMsQ0FBQyxHQUFHdjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztFQUFFLFNBQU87QUFBVCxDQUF0QyxFQUFvRSxLQUFwRSxFQUEyRSxDQUFDO0FBQUU7QUFBOUUsQ0FBL0I7O0FBQ0EsSUFBSUssVUFBVSxHQUFHO0VBQ2IzdUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7O0FBSUEsSUFBSTR1QyxXQUFXLEdBQUcsYUFBYyxDQUFDLEdBQUd6NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDO0VBQUUsU0FBTztBQUFULENBQXRDLEVBQW9FLEtBQXBFLEVBQTJFLENBQUM7QUFBRTtBQUE5RSxDQUFoQzs7QUFDQSxJQUFJNkIsV0FBVyxHQUFHLENBQUMsU0FBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkcHdDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCOztBQUlBLElBQUlxd0MsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHbDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztFQUFFLFNBQU87QUFBVCxDQUF0QyxFQUFvRSxLQUFwRSxFQUEyRSxDQUFDO0FBQUU7QUFBOUUsQ0FBaEM7O0FBQ0EsSUFBSWdDLFdBQVcsR0FBRyxDQUFDLFNBQUQsQ0FBbEI7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHcDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztFQUFFLFNBQU87QUFBVCxDQUF0QyxFQUFvRSxLQUFwRSxFQUEyRSxDQUFDO0FBQUU7QUFBOUUsQ0FBaEM7O0FBQ0EsSUFBSWtDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxTQUFTdkMsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUdoNkMsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFNBQTVCLENBQXpCOztFQUNBLE9BQVEsQ0FBQyxHQUFHajZDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNwQixVQUFyQyxFQUFpRCxDQUM3RSxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0lBQy9CLFNBQU8sQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsVUFBRCxFQUFhO01BQ3RDLHVCQUF1Qm5ELElBQUksQ0FBQ24zQyxJQUFMLENBQVU4WSxTQUFWLElBQXVCO0lBRFIsQ0FBYixDQUExQixDQUR3QjtJQUkvQixpQkFBaUIsTUFKYztJQUsvQmcvQixPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUNuQjtJQUNBLFlBQVk7TUFDUixJQUFJMEYsSUFBSSxHQUFHLEVBQVg7O01BQ0EsS0FBSyxJQUFJLzZCLEVBQUUsR0FBRyxDQUFkLEVBQWlCQSxFQUFFLEdBQUdZLFNBQVMsQ0FBQy9lLE1BQWhDLEVBQXdDbWUsRUFBRSxFQUExQyxFQUE4QztRQUMxQys2QixJQUFJLENBQUMvNkIsRUFBRCxDQUFKLEdBQVdZLFNBQVMsQ0FBQ1osRUFBRCxDQUFwQjtNQUNIOztNQUNELE9BQVFvMUIsSUFBSSxDQUFDbCtCLFlBQUwsSUFBcUJrK0IsSUFBSSxDQUFDbCtCLFlBQUwsQ0FBa0J6VyxLQUFsQixDQUF3QjIwQyxJQUF4QixFQUE4QjJGLElBQTlCLENBQTdCO0lBQ0gsQ0FSSTtFQUxzQixDQUFuQyxFQWNHLENBQ0MsQ0FBQyxHQUFHci9DLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFBRTVwQyxJQUFJLEVBQUU7RUFBUixDQUEzQyxDQURELEVBRUMsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDSCxVQUF0QyxFQUFrRCxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNweUMsU0FBTCxDQUFlK2EsTUFBZixDQUFzQixNQUF0QixDQUEzQixDQUFsRCxFQUE2RztFQUFFO0VBQS9HLENBRkQsQ0FkSCxFQWlCRztFQUFFO0VBakJMLENBRDZFLEVBbUI1RXEzQixJQUFJLENBQUNuM0MsSUFBTCxDQUFVOFksU0FBVixHQUFzQixDQUF2QixJQUNPLENBQUMsR0FBR3JiLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NsQixVQUF0QyxFQUFrRCxFQUN4RSxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCcEQsSUFBSSxDQUFDbjNDLElBQUwsQ0FBVThZLFNBQWhDLEVBQTJDLFVBQVVoSixLQUFWLEVBQWlCaEQsQ0FBakIsRUFBb0I7SUFDNUksT0FBUSxDQUFDLEdBQUdyUCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO01BQy9EdHZDLEdBQUcsRUFBRXdILEtBRDBEO01BRS9ELFNBQU8sQ0FBQyxHQUFHclMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEJuRCxJQUFJLENBQUMvK0IsV0FBTCxLQUFxQnRJLEtBQXJCLEdBQTZCLFNBQTdCLEdBQXlDLEVBQW5FLENBRndEO01BRy9EZ29DLE9BQU8sRUFBRSxpQkFBVUksTUFBVixFQUFrQjtRQUFFLE9BQVFmLElBQUksQ0FBQ3grQixVQUFMLENBQWdCN0wsQ0FBQyxHQUFHLENBQXBCLENBQVI7TUFBa0M7SUFIQSxDQUFuQyxFQUk3QixDQUFDLEdBQUdyUCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnJvQyxLQUEzQixDQUo2QixFQUlNO0lBQUc7SUFKVCxFQUltQzZtQyxVQUpuQyxDQUFoQztFQUtILENBTmdGLENBQXBELEVBTXpCO0VBQUk7RUFOcUIsQ0FENEMsRUFBbEQsQ0FEL0IsS0FVTyxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2YsVUFBdEMsRUFBa0QsQ0FDekUsQ0FBQyxHQUFHcDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztJQUMvQixTQUFPLENBQUMsR0FBR241QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQm5ELElBQUksQ0FBQy8rQixXQUFMLEtBQXFCLENBQXJCLEdBQXlCLFNBQXpCLEdBQXFDLEVBQS9ELENBRHdCO0lBRS9CMC9CLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtNQUFFLE9BQVFmLElBQUksQ0FBQ3grQixVQUFMLENBQWdCLENBQWhCLENBQVI7SUFBOEIsQ0FBNUU7RUFGc0IsQ0FBbkMsRUFHRyxLQUhILEVBR1U7RUFBRTtFQUhaLENBRHlFLEVBS3hFdytCLElBQUksQ0FBQy8rQixXQUFMLEdBQW1CLENBQXBCLElBQ08sQ0FBQyxHQUFHM2EsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2QsVUFBdEMsRUFBa0QsRUFDeEUsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQixDQUF0QixFQUF5QixVQUFVenFDLEtBQVYsRUFBaUJoRCxDQUFqQixFQUFvQjtJQUN0SCxPQUFPLENBQUMsR0FBR3JQLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztNQUN0Q3R1QyxHQUFHLEVBQUV3SCxLQURpQztNQUV0QyxTQUFPLENBQUMsR0FBR3JTLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCbkQsSUFBSSxDQUFDLytCLFdBQUwsS0FBcUJ0SSxLQUFLLEdBQUcsQ0FBN0IsR0FBaUMsU0FBakMsR0FBNkMsRUFBdkUsQ0FGK0I7TUFHdENnb0MsT0FBTyxFQUFFLGlCQUFVSSxNQUFWLEVBQWtCO1FBQUUsT0FBUWYsSUFBSSxDQUFDeCtCLFVBQUwsQ0FBZ0I3TCxDQUFDLEdBQUcsQ0FBcEIsQ0FBUjtNQUFrQztJQUh6QixDQUFuQyxFQUlKLENBQUMsR0FBR3JQLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCcm9DLEtBQUssR0FBRyxDQUFuQyxDQUpJLEVBSW1DO0lBQUc7SUFKdEMsRUFJZ0VpbkMsVUFKaEUsQ0FBUDtFQUtILENBTjRFLENBQXBELEVBTXJCO0VBQUc7RUFOa0IsQ0FEZ0QsR0FRekVDLFVBUnlFLENBQWxELENBRC9CLElBV09HLElBQUksQ0FBQy8rQixXQUFMLEdBQW1CKytCLElBQUksQ0FBQ24zQyxJQUFMLENBQVU4WSxTQUFWLEdBQXNCLENBQTFDLElBQ0ssQ0FBQyxHQUFHcmIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ1gsVUFBdEMsRUFBa0QsQ0FDekVDLFdBRHlFLEdBRXhFLENBQUMsR0FBR3o1QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JwRCxJQUFJLENBQUM1K0IsU0FBM0IsRUFBc0MsVUFBVXpJLEtBQVYsRUFBaUI7SUFDcEksT0FBUSxDQUFDLEdBQUdyUyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO01BQy9EdHZDLEdBQUcsRUFBRXdILEtBRDBEO01BRS9ELFNBQU8sQ0FBQyxHQUFHclMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEJuRCxJQUFJLENBQUMvK0IsV0FBTCxLQUFxQnRJLEtBQXJCLEdBQTZCLFNBQTdCLEdBQXlDLEVBQW5FLENBRndEO01BRy9EZ29DLE9BQU8sRUFBRSxpQkFBVUksTUFBVixFQUFrQjtRQUFFLE9BQVFmLElBQUksQ0FBQ3grQixVQUFMLENBQWdCLENBQUM3SSxLQUFqQixDQUFSO01BQW1DO0lBSEQsQ0FBbkMsRUFJN0IsQ0FBQyxHQUFHclMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJyb0MsS0FBM0IsQ0FKNkIsRUFJTTtJQUFHO0lBSlQsRUFJbUMyb0MsV0FKbkMsQ0FBaEM7RUFLSCxDQU5nRixDQUFwRCxFQU16QjtFQUFJO0VBTnFCLENBRjRDLEVBQWxELENBRDdCLEtBV0ssQ0FBQyxHQUFHaDdDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NjLFdBQXRDLEVBQW1ELENBQzFFQyxXQUQwRSxHQUV6RSxDQUFDLEdBQUdsN0MsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCcEQsSUFBSSxDQUFDMytCLFFBQTNCLEVBQXFDLFVBQVUxSSxLQUFWLEVBQWlCO0lBQ25JLE9BQVEsQ0FBQyxHQUFHclMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztNQUMvRHR2QyxHQUFHLEVBQUV3SCxLQUQwRDtNQUUvRCxTQUFPLENBQUMsR0FBR3JTLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCbkQsSUFBSSxDQUFDLytCLFdBQUwsS0FBcUJ0SSxLQUFyQixHQUE2QixTQUE3QixHQUF5QyxFQUFuRSxDQUZ3RDtNQUcvRGdvQyxPQUFPLEVBQUUsaUJBQVVJLE1BQVYsRUFBa0I7UUFBRSxPQUFRZixJQUFJLENBQUN4K0IsVUFBTCxDQUFnQixDQUFDN0ksS0FBakIsQ0FBUjtNQUFtQztJQUhELENBQW5DLEVBSTdCLENBQUMsR0FBR3JTLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCcm9DLEtBQTNCLENBSjZCLEVBSU07SUFBRztJQUpULEVBSW1DOG9DLFdBSm5DLENBQWhDO0VBS0gsQ0FOZ0YsQ0FBcEQsRUFNekI7RUFBSTtFQU5xQixDQUY2QyxHQVMxRUMsV0FUMEUsQ0FBbkQsQ0FYN0IsQ0FoQm1FLEVBc0N6RSxDQUFDLEdBQUdwN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0lBQy9CLFNBQU8sQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCbkQsSUFBSSxDQUFDLytCLFdBQUwsS0FBcUIrK0IsSUFBSSxDQUFDbjNDLElBQUwsQ0FBVThZLFNBQS9CLEdBQTJDLFNBQTNDLEdBQXVELEVBQWpGLENBRHdCO0lBRS9CZy9CLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtNQUFFLE9BQVFmLElBQUksQ0FBQ3grQixVQUFMLENBQWdCdytCLElBQUksQ0FBQ24zQyxJQUFMLENBQVU4WSxTQUExQixDQUFSO0lBQWdELENBQTlGO0VBRnNCLENBQW5DLEVBR0csQ0FBQyxHQUFHcmIsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNuM0MsSUFBTCxDQUFVOFksU0FBckMsQ0FISCxFQUdvRDtFQUFFO0VBSHRELENBdEN5RSxDQUFsRCxDQVYvQixDQW5CNkUsRUF3RTdFLENBQUMsR0FBR3JiLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztJQUMvQixTQUFPLENBQUMsR0FBR241QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLFVBQUQsRUFBYTtNQUN0Qyx1QkFBdUJuRCxJQUFJLENBQUNuM0MsSUFBTCxDQUFVOFksU0FBVixJQUF1QjtJQURSLENBQWIsQ0FBMUIsQ0FEd0I7SUFJL0JnL0IsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FDbkI7SUFDQSxZQUFZO01BQ1IsSUFBSTBGLElBQUksR0FBRyxFQUFYOztNQUNBLEtBQUssSUFBSS82QixFQUFFLEdBQUcsQ0FBZCxFQUFpQkEsRUFBRSxHQUFHWSxTQUFTLENBQUMvZSxNQUFoQyxFQUF3Q21lLEVBQUUsRUFBMUMsRUFBOEM7UUFDMUMrNkIsSUFBSSxDQUFDLzZCLEVBQUQsQ0FBSixHQUFXWSxTQUFTLENBQUNaLEVBQUQsQ0FBcEI7TUFDSDs7TUFDRCxPQUFRbzFCLElBQUksQ0FBQ3QrQixRQUFMLElBQWlCcytCLElBQUksQ0FBQ3QrQixRQUFMLENBQWNyVyxLQUFkLENBQW9CMjBDLElBQXBCLEVBQTBCMkYsSUFBMUIsQ0FBekI7SUFDSCxDQVJJO0VBSnNCLENBQW5DLEVBYUcsQ0FDQyxDQUFDLEdBQUdyL0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDa0MsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHcjdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcHlDLFNBQUwsQ0FBZSthLE1BQWYsQ0FBc0IsTUFBdEIsQ0FBM0IsQ0FBbkQsRUFBOEc7RUFBRTtFQUFoSCxDQURELEVBRUMsQ0FBQyxHQUFHcmlCLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFBRTVwQyxJQUFJLEVBQUU7RUFBUixDQUEzQyxDQUZELENBYkgsRUFnQkc7RUFBRTtFQWhCTCxDQXhFNkUsQ0FBakQsQ0FBaEM7QUEwRkg7O0FBQ0R0USxjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ25JYTs7OztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHLENBQUMsV0FBRCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFbnVDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSW91QyxVQUFVLEdBQUcsQ0FBQyxXQUFELENBQWpCOztBQUNBLFNBQVNILE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSUMsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHaDZDLEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixTQUE1QixDQUF6Qjs7RUFDQSxPQUFRLENBQUMsR0FBR2o2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQ2pFLFNBQU8sQ0FBQyxHQUFHbjZDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCaEQsTUFBTSxDQUFDcCtCLFNBQWpDO0VBRDBELENBQXJDLEVBRTdCLENBQ0MsQ0FBQyxHQUFHemIsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QzVwQyxJQUFJLEVBQUV5cEMsTUFBTSxDQUFDbnpDLEtBQVAsQ0FBYUUsSUFBYixHQUFvQixjQUFwQixHQUFxQztFQURKLENBQTNDLEVBRUcsSUFGSCxFQUVTO0VBQUU7RUFGWCxFQUV3QixDQUFDLE1BQUQsQ0FGeEIsQ0FERCxFQUlDLENBQUMsR0FBRzVHLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixnQ0FBOUIsQ0FKRCxFQUtFLE9BQU9YLE1BQU0sQ0FBQ3B3QyxPQUFkLEtBQTBCLFFBQTNCLElBQ08sQ0FBQyxHQUFHeEosS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztJQUM3RHR2QyxHQUFHLEVBQUUsQ0FEd0Q7SUFFN0QsU0FBTyxtQkFGc0Q7SUFHN0RrMEMsU0FBUyxFQUFFbkYsTUFBTSxDQUFDcHdDO0VBSDJDLENBQXRDLEVBSXhCLElBSndCLEVBSWxCO0VBQUU7RUFKZ0IsRUFJSHV2QyxVQUpHLENBRC9CLElBTU0sQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQVhQLEVBWUUsUUFBT1gsTUFBTSxDQUFDcHdDLE9BQWQsTUFBMEIsUUFBM0IsSUFDTyxDQUFDLEdBQUd4SixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDbkIsVUFBckMsRUFBaUQsQ0FDeEUsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixnQ0FBOUIsQ0FEd0UsR0FFdkUsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQmxELE1BQU0sQ0FBQ3B3QyxPQUE3QixFQUFzQyxVQUFVbzJDLENBQVYsRUFBYXAyQixDQUFiLEVBQWdCO0lBQ25JLE9BQVEsQ0FBQyxHQUFHeHBCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7TUFDL0R0dkMsR0FBRyxFQUFFMmUsQ0FEMEQ7TUFFL0R1MUIsU0FBUyxFQUFFYTtJQUZvRCxDQUFuQyxFQUc3QixJQUg2QixFQUd2QjtJQUFFO0lBSHFCLEVBR1IzRyxVQUhRLENBQWhDO0VBSUgsQ0FMZ0YsQ0FBcEQsRUFLekI7RUFBSTtFQUxxQixDQUYyQyxFQUFqRCxDQUQvQixJQVVNLENBQUMsR0FBR2o1QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0F0QlAsQ0FGNkIsRUF5QjdCO0VBQUU7RUF6QjJCLENBQWhDO0FBMEJIOztBQUNEejZDLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDcENhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk0NkMsWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBVWgxQyxDQUFWLEVBQWE7RUFBRSxPQUFRLENBQUMsR0FBRzdGLEtBQUssQ0FBQzg2QyxXQUFWLEVBQXVCLGlCQUF2QixHQUEyQ2oxQyxDQUFDLEdBQUdBLENBQUMsRUFBaEQsRUFBb0QsQ0FBQyxHQUFHN0YsS0FBSyxDQUFDKzZDLFVBQVYsR0FBcEQsRUFBNkVsMUMsQ0FBckY7QUFBMEYsQ0FBNUg7O0FBQ0EsSUFBSWt6QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFDYnh1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUl5dUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCOztBQUNBLElBQUlDLFVBQVUsR0FBRyxhQUFjcUIsWUFBWSxDQUFDLFlBQVk7RUFBRTtFQUFjLE9BQU8sQ0FBQyxHQUFHNzZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUFFLFNBQU87RUFBVCxDQUFyQyxFQUE4RCxzRkFBOUQsRUFBc0osQ0FBQztFQUFFO0VBQXpKLENBQVA7QUFBaUwsQ0FBOU0sQ0FBM0M7O0FBQ0EsSUFBSU0sV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSXVCLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxJQUFJQyxXQUFXLEdBQUcsYUFBY0wsWUFBWSxDQUFDLFlBQVk7RUFBRTtFQUFjLE9BQU8sQ0FBQyxHQUFHNzZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxJQUExQyxFQUFnRCxDQUFDO0VBQUU7RUFBbkQsQ0FBUDtBQUEyRSxDQUF4RyxDQUE1Qzs7QUFDQSxJQUFJZ0MsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLElBQUlDLFdBQVcsR0FBRyxhQUFjUixZQUFZLENBQUMsWUFBWTtFQUFFO0VBQWMsT0FBTyxDQUFDLEdBQUc3NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQUUsU0FBTztFQUFULENBQXJDLEVBQThELDBOQUE5RCxFQUEwUixDQUFDO0VBQUU7RUFBN1IsQ0FBUDtBQUFxVCxDQUFsVixDQUE1Qzs7QUFDQSxJQUFJbUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLElBQUlDLFdBQVcsR0FBRyxhQUFjWixZQUFZLENBQUMsWUFBWTtFQUFFO0VBQWMsT0FBTyxDQUFDLEdBQUc3NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLElBQTFDLEVBQWdELENBQUM7RUFBRTtFQUFuRCxDQUFQO0FBQTJFLENBQXhHLENBQTVDOztBQUNBLElBQUl1QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHLGFBQWNmLFlBQVksQ0FBQyxZQUFZO0VBQUU7RUFBYyxPQUFPLENBQUMsR0FBRzc2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFBRSxTQUFPO0VBQVQsQ0FBckMsRUFBMEUsMkxBQTFFLEVBQXVRLENBQUM7RUFBRTtFQUExUSxDQUFQO0FBQWtTLENBQS9ULENBQTVDOztBQUNBLElBQUkwQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHLGFBQWNuQixZQUFZLENBQUMsWUFBWTtFQUFFO0VBQWMsT0FBTyxDQUFDLEdBQUc3NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLElBQTFDLEVBQWdELENBQUM7RUFBRTtFQUFuRCxDQUFQO0FBQTJFLENBQXhHLENBQTVDOztBQUNBLFNBQVNMLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSUMsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHaDZDLEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixTQUE1QixDQUF6Qjs7RUFDQSxPQUFRLENBQUMsR0FBR2o2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZFLENBQUMsR0FBR242QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNKLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBRy80QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2g1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFDakMsU0FBTyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQztNQUFFLGFBQWFoRCxNQUFNLENBQUNwOUIsV0FBUCxDQUFtQm05QixNQUFNLENBQUN2bkMsS0FBMUI7SUFBZixDQUFELEVBQW9ELG1IQUFwRCxDQUExQjtFQUQwQixDQUFyQyxFQUVHLENBQUMsR0FBR3JTLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzaEMsS0FBbEMsQ0FGSCxFQUU2QztFQUFFO0VBRi9DLENBRDZDLEVBSTdDLENBQUMsR0FBR2xZLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0YsVUFBckMsRUFBaUQsQ0FBQyxHQUFHajVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzaEMsS0FBbEMsQ0FBakQsRUFBMkY7RUFBRTtFQUE3RixDQUo2QyxDQUFqRCxDQUQ2QyxFQU83QyxDQUFDLEdBQUdsWSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNELFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2w1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NDLFVBQXRDLEVBQWtELE9BQU8sQ0FBQyxHQUFHcDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCZCxNQUFNLENBQUN2dUMsTUFBUCxDQUFjLFVBQWQsQ0FBM0IsQ0FBUCxHQUErRCxjQUFqSCxFQUFpSTtFQUFFO0VBQW5JLENBRDZDLEVBRTdDLENBQUMsR0FBR3JMLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLFFBQVEsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCZCxNQUFNLENBQUNqK0IsUUFBUCxDQUFnQnc1QixVQUEzQyxDQUFSLEdBQWlFLElBQTVGLEVBQWtHO0VBQUU7RUFBcEcsQ0FGNkMsQ0FBakQsQ0FQNkMsRUFXNUMwRSxNQUFNLENBQUNwOUIsV0FBUCxDQUFtQm05QixNQUFNLENBQUN2bkMsS0FBMUIsSUFBbUMsQ0FBcEMsSUFDTyxDQUFDLEdBQUdyUyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDO0lBQzdEdHZDLEdBQUcsRUFBRSxDQUR3RDtJQUU3RCxTQUFPLHdFQUZzRDtJQUc3RHd2QyxPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUNuQixZQUFZO01BQ1JFLE1BQU0sQ0FBQ2orQixVQUFQLEdBQW9CLENBQUNpK0IsTUFBTSxDQUFDaitCLFVBQTVCO0lBQ0gsQ0FISTtFQUhvRCxDQUF0QyxFQU94QixDQUNDLENBQUMsR0FBRzViLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxVQUFVLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDcDlCLFdBQVAsQ0FBbUJtOUIsTUFBTSxDQUFDdm5DLEtBQTFCLENBQTNCLENBQVYsR0FBeUUsUUFBckgsRUFBK0g7RUFBRTtFQUFqSSxDQURELEVBRUMsQ0FBQyxHQUFHclMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QyxTQUFPLFlBRGdDO0lBRXZDNXBDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxDQUZELENBUHdCLENBRC9CLElBZU0sQ0FBQyxHQUFHcFEsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBMUJ1QyxDQUFqRCxDQUR1RSxFQTZCdEVWLE1BQU0sQ0FBQ2orQixVQUFSLElBQ08sQ0FBQyxHQUFHNWIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2QsVUFBckMsRUFBaUQsQ0FDdkV6NUMsTUFBTSxDQUFDMFAsSUFBUCxDQUFZc3FDLE1BQU0sQ0FBQ2orQixRQUFQLENBQWdCLFFBQWhCLENBQVosRUFBdUM1TSxPQUF2QyxDQUErQyxVQUEvQyxNQUErRCxDQUFDLENBQWpFLElBQ08sQ0FBQyxHQUFHL08sS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUM1RHR2QyxHQUFHLEVBQUUsQ0FEdUQ7SUFFNUR2SixLQUFLLEVBQUUsQ0FBQyxHQUFHdEIsS0FBSyxDQUFDdzZDLGNBQVYsRUFBMEIsVUFBVTc0QyxNQUFWLENBQWlCaTRDLE1BQU0sQ0FBQ3ZoQyxLQUFQLEdBQWUsRUFBaEMsRUFBb0MsS0FBcEMsQ0FBMUIsQ0FGcUQ7SUFHNUQsU0FBTyx3Q0FIcUQ7SUFJNURnaUMsT0FBTyxFQUFFUixNQUFNLENBQUNsOUI7RUFKNEMsQ0FBckMsRUFLeEIsQ0FDQyxDQUFDLEdBQUczYyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNHLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3Q1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NJLFVBQXRDLEVBQWtELENBQzlDLENBQUMsR0FBR3Y1QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDLFNBQU8saUJBRGdDO0lBRXZDNXBDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxDQUQ4QyxFQUs5QyxDQUFDLEdBQUdwUSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUMxOUIsV0FBUCxDQUFtQixVQUFuQixDQUEzQixJQUE2RCxrQkFBekcsRUFBNkg7RUFBRTtFQUEvSCxDQUw4QyxDQUFsRCxDQUQ2QyxFQVE3QyxDQUFDLEdBQUduYyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDNXBDLElBQUksRUFBRSxnQkFEaUM7SUFFdkMsU0FBTyxDQUFDLEdBQUdwUSxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLDZDQUFELEVBQWdEO01BQUUsY0FBY2hELE1BQU0sQ0FBQ2grQixZQUF2QjtNQUFxQyxJQUFJLENBQUNnK0IsTUFBTSxDQUFDaCtCO0lBQWpELENBQWhELENBQTFCO0VBRmdDLENBQTNDLEVBR0csSUFISCxFQUdTO0VBQUU7RUFIWCxFQUd3QixDQUFDLE9BQUQsQ0FIeEIsQ0FSNkMsQ0FBakQsQ0FERCxFQWNDMjlCLFVBZEQsRUFlQyxDQUFDLEdBQUd4NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDTSxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd6NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDNkIsV0FBckMsRUFBa0QsRUFDN0MsQ0FBQyxHQUFHaDdDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQmxELE1BQU0sQ0FBQ2orQixRQUFQLENBQWdCLFFBQWhCLEVBQTBCLFVBQTFCLENBQXRCLEVBQTZELFVBQVVra0MsT0FBVixFQUFtQnh3QyxDQUFuQixFQUFzQjtJQUNoSyxPQUFRLENBQUMsR0FBR3JQLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7TUFDakV0dkMsR0FBRyxFQUFFd0UsQ0FENEQ7TUFFakUsU0FBTztJQUYwRCxDQUFyQyxFQUc3QixDQUNDLENBQUMsR0FBR3JQLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQzhCLFdBQW5DLEVBQWdELENBQUMsR0FBR2o3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnJyQyxDQUEzQixDQUFoRCxFQUErRTtJQUFFO0lBQWpGLENBREQsR0FFRSxDQUFDLEdBQUdyUCxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JsOUMsTUFBTSxDQUFDMFAsSUFBUCxDQUFZdXdDLE9BQVosQ0FBdEIsRUFBNEMsVUFBVXRtQyxJQUFWLEVBQWdCO01BQ3pJLE9BQVEsQ0FBQyxHQUFHdlosS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztRQUMvRHR2QyxHQUFHLEVBQUUwTyxJQUQwRDtRQUUvRCxTQUFPO01BRndELENBQW5DLEVBRzdCLENBQ0MsQ0FBQyxHQUFHdlosS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCbmhDLElBQUksQ0FBQ3NFLFFBQUwsR0FBZ0I5UixPQUFoQixDQUF3QixJQUF4QixFQUE4QixHQUE5QixFQUFtQ0EsT0FBbkMsQ0FBMkMsS0FBM0MsRUFBa0QsS0FBbEQsQ0FBM0IsSUFBdUYsR0FBbEgsRUFBdUg7TUFBRTtNQUF6SCxDQURELEVBRUNtdkMsV0FGRCxFQUdDLENBQUMsR0FBR2w3QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixNQUFNLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQm1GLE9BQU8sQ0FBQ3RtQyxJQUFELENBQWxDLENBQWpDLEVBQTRFO01BQUU7TUFBOUUsQ0FIRCxDQUg2QixDQUFoQztJQVFILENBVGdGLENBQXBELEVBU3pCO0lBQUk7SUFUcUIsQ0FGOUIsRUFINkIsQ0FBaEM7RUFnQkgsQ0FqQmdGLENBQXBELEVBaUJ6QjtFQUFJO0VBakJxQixDQURpQixFQUFsRCxDQUQ4QyxDQUFsRCxDQWZELENBTHdCLEVBMEN4QjtFQUFFO0VBMUNzQixDQUQvQixJQTRDTSxDQUFDLEdBQUd2WixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0E3Q2tFLEVBOEN2RVgsTUFBTSxDQUFDaitCLFFBQVAsQ0FBZ0IsUUFBaEIsS0FDRy9iLE1BQU0sQ0FBQzBQLElBQVAsQ0FBWXNxQyxNQUFNLENBQUNqK0IsUUFBUCxDQUFnQixRQUFoQixDQUFaLEVBQXVDNU0sT0FBdkMsQ0FBK0MsT0FBL0MsTUFBNEQsQ0FBQyxDQURqRSxJQUVPLENBQUMsR0FBRy9PLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFDNUR0dkMsR0FBRyxFQUFFLENBRHVEO0lBRTVEdkosS0FBSyxFQUFFLENBQUMsR0FBR3RCLEtBQUssQ0FBQ3c2QyxjQUFWLEVBQTBCLFVBQVU3NEMsTUFBVixDQUFpQmk0QyxNQUFNLENBQUN2aEMsS0FBUCxHQUFlLEVBQWhDLEVBQW9DLEtBQXBDLENBQTFCLENBRnFEO0lBRzVELFNBQU8scUNBSHFEO0lBSTVEZ2lDLE9BQU8sRUFBRVIsTUFBTSxDQUFDMzhCO0VBSjRDLENBQXJDLEVBS3hCLENBQ0MsQ0FBQyxHQUFHbGQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDZ0MsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHbjdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2lDLFdBQXRDLEVBQW1ELENBQy9DLENBQUMsR0FBR3A3QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDLFNBQU8saUJBRGdDO0lBRXZDNXBDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxDQUQrQyxFQUsvQyxDQUFDLEdBQUdwUSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUMxOUIsV0FBUCxDQUFtQixPQUFuQixDQUEzQixJQUEwRCxTQUF0RyxFQUFpSDtFQUFFO0VBQW5ILENBTCtDLENBQW5ELENBRDhDLEVBUTlDLENBQUMsR0FBR25jLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkM1cEMsSUFBSSxFQUFFLGdCQURpQztJQUV2QyxTQUFPLENBQUMsR0FBR3BRLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsNkNBQUQsRUFBZ0Q7TUFBRSxjQUFjaEQsTUFBTSxDQUFDOTlCLFNBQXZCO01BQWtDLElBQUksQ0FBQzg5QixNQUFNLENBQUM5OUI7SUFBOUMsQ0FBaEQsQ0FBMUI7RUFGZ0MsQ0FBM0MsRUFHRyxJQUhILEVBR1M7RUFBRTtFQUhYLEVBR3dCLENBQUMsT0FBRCxDQUh4QixDQVI4QyxDQUFsRCxDQURELEVBY0NzL0IsV0FkRCxFQWVDLENBQUMsR0FBR3I3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNtQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd0N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDb0MsV0FBckMsRUFBa0QsRUFDN0MsQ0FBQyxHQUFHdjdDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQmxELE1BQU0sQ0FBQ2orQixRQUFQLENBQWdCLFFBQWhCLEVBQTBCLE9BQTFCLENBQXRCLEVBQTBELFVBQVVra0MsT0FBVixFQUFtQnh3QyxDQUFuQixFQUFzQjtJQUM3SixPQUFRLENBQUMsR0FBR3JQLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7TUFDakV0dkMsR0FBRyxFQUFFd0UsQ0FENEQ7TUFFakUsU0FBTztJQUYwRCxDQUFyQyxFQUc3QixDQUNDLENBQUMsR0FBR3JQLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ3FDLFdBQW5DLEVBQWdELENBQUMsR0FBR3g3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnJyQyxDQUEzQixDQUFoRCxFQUErRTtJQUFFO0lBQWpGLENBREQsR0FFRSxDQUFDLEdBQUdyUCxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JsOUMsTUFBTSxDQUFDMFAsSUFBUCxDQUFZdXdDLE9BQVosQ0FBdEIsRUFBNEMsVUFBVXRtQyxJQUFWLEVBQWdCO01BQ3pJLE9BQVEsQ0FBQyxHQUFHdlosS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztRQUMvRHR2QyxHQUFHLEVBQUUwTyxJQUQwRDtRQUUvRCxTQUFPO01BRndELENBQW5DLEVBRzdCLENBQ0MsQ0FBQyxHQUFHdlosS0FBSyxDQUFDazlDLGVBQVYsRUFBMkIsQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCbmhDLElBQUksQ0FBQ3NFLFFBQUwsR0FBZ0I5UixPQUFoQixDQUF3QixJQUF4QixFQUE4QixHQUE5QixFQUFtQ0EsT0FBbkMsQ0FBMkMsS0FBM0MsRUFBa0QsS0FBbEQsQ0FBM0IsSUFBdUYsR0FBbEgsRUFBdUg7TUFBRTtNQUF6SCxDQURELEVBRUMwdkMsV0FGRCxFQUdDLENBQUMsR0FBR3o3QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixNQUFNLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQm1GLE9BQU8sQ0FBQ3RtQyxJQUFELENBQWxDLENBQWpDLEVBQTRFO01BQUU7TUFBOUUsQ0FIRCxDQUg2QixDQUFoQztJQVFILENBVGdGLENBQXBELEVBU3pCO0lBQUk7SUFUcUIsQ0FGOUIsRUFINkIsQ0FBaEM7RUFnQkgsQ0FqQmdGLENBQXBELEVBaUJ6QjtFQUFJO0VBakJxQixDQURpQixFQUFsRCxDQUQ4QyxDQUFsRCxDQWZELENBTHdCLEVBMEN4QjtFQUFFO0VBMUNzQixDQUYvQixJQTZDTSxDQUFDLEdBQUd2WixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0EzRmtFLEVBNEZ2RVgsTUFBTSxDQUFDaitCLFFBQVAsQ0FBZ0IsUUFBaEIsS0FDRy9iLE1BQU0sQ0FBQzBQLElBQVAsQ0FBWXNxQyxNQUFNLENBQUNqK0IsUUFBUCxDQUFnQixRQUFoQixDQUFaLEVBQXVDNU0sT0FBdkMsQ0FBK0MsU0FBL0MsTUFBOEQsQ0FBQyxDQURuRSxJQUVPLENBQUMsR0FBRy9PLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFDNUR0dkMsR0FBRyxFQUFFLENBRHVEO0lBRTVEdkosS0FBSyxFQUFFLENBQUMsR0FBR3RCLEtBQUssQ0FBQ3c2QyxjQUFWLEVBQTBCLFVBQVU3NEMsTUFBVixDQUFpQmk0QyxNQUFNLENBQUN2aEMsS0FBUCxHQUFlLEVBQWhDLEVBQW9DLEtBQXBDLENBQTFCLENBRnFEO0lBRzVELFNBQU8sK0RBSHFEO0lBSTVEZ2lDLE9BQU8sRUFBRVIsTUFBTSxDQUFDNThCO0VBSjRDLENBQXJDLEVBS3hCLENBQ0MsQ0FBQyxHQUFHamQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDdUMsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHMTdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ3dDLFdBQXRDLEVBQW1ELENBQy9DLENBQUMsR0FBRzM3QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDNXBDLElBQUksRUFBRSxPQURpQztJQUV2QyxTQUFPO0VBRmdDLENBQTNDLENBRCtDLEVBSy9DLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzE5QixXQUFQLENBQW1CLFNBQW5CLENBQTNCLElBQTRELFdBQXhHLEVBQXFIO0VBQUU7RUFBdkgsQ0FMK0MsQ0FBbkQsQ0FEOEMsRUFROUMsQ0FBQyxHQUFHbmMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QzVwQyxJQUFJLEVBQUUsZ0JBRGlDO0lBRXZDLFNBQU8sQ0FBQyxHQUFHcFEsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyw2Q0FBRCxFQUFnRDtNQUFFLGNBQWNoRCxNQUFNLENBQUMzOUIsV0FBdkI7TUFBb0MsSUFBSSxDQUFDMjlCLE1BQU0sQ0FBQzM5QjtJQUFoRCxDQUFoRCxDQUExQjtFQUZnQyxDQUEzQyxFQUdHLElBSEgsRUFHUztFQUFFO0VBSFgsRUFHd0IsQ0FBQyxPQUFELENBSHhCLENBUjhDLENBQWxELENBREQsRUFjQzAvQixXQWRELEVBZUMsQ0FBQyxHQUFHNTdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzBDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRzc3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMyQyxXQUFyQyxFQUFrRCxFQUM3QyxDQUFDLEdBQUc5N0MsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCbEQsTUFBTSxDQUFDaitCLFFBQVAsQ0FBZ0IsUUFBaEIsRUFBMEIsU0FBMUIsQ0FBdEIsRUFBNEQsVUFBVWtrQyxPQUFWLEVBQW1CeHdDLENBQW5CLEVBQXNCO0lBQy9KLE9BQVEsQ0FBQyxHQUFHclAsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqRXR2QyxHQUFHLEVBQUV3RSxDQUQ0RDtNQUVqRSxTQUFPO0lBRjBELENBQXJDLEVBRzdCLENBQ0MsQ0FBQyxHQUFHclAsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DNEMsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHLzdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCcnJDLENBQTNCLENBQWhELEVBQStFO0lBQUU7SUFBakYsQ0FERCxHQUVFLENBQUMsR0FBR3JQLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQmw5QyxNQUFNLENBQUMwUCxJQUFQLENBQVl1d0MsT0FBWixDQUF0QixFQUE0QyxVQUFVdG1DLElBQVYsRUFBZ0I7TUFDekksT0FBUSxDQUFDLEdBQUd2WixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO1FBQy9EdHZDLEdBQUcsRUFBRTBPLElBRDBEO1FBRS9ELFNBQU87TUFGd0QsQ0FBbkMsRUFHN0IsQ0FDQyxDQUFDLEdBQUd2WixLQUFLLENBQUNrOUMsZUFBVixFQUEyQixDQUFDLEdBQUdsOUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJuaEMsSUFBSSxDQUFDc0UsUUFBTCxHQUFnQjlSLE9BQWhCLENBQXdCLElBQXhCLEVBQThCLEdBQTlCLEVBQW1DQSxPQUFuQyxDQUEyQyxLQUEzQyxFQUFrRCxLQUFsRCxDQUEzQixJQUF1RixHQUFsSCxFQUF1SDtNQUFFO01BQXpILENBREQsRUFFQ2l3QyxXQUZELEVBR0MsQ0FBQyxHQUFHaDhDLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLE1BQU0sQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCbUYsT0FBTyxDQUFDdG1DLElBQUQsQ0FBbEMsQ0FBakMsRUFBNEU7TUFBRTtNQUE5RSxDQUhELENBSDZCLENBQWhDO0lBUUgsQ0FUZ0YsQ0FBcEQsRUFTekI7SUFBSTtJQVRxQixDQUY5QixFQUg2QixDQUFoQztFQWdCSCxDQWpCZ0YsQ0FBcEQsRUFpQnpCO0VBQUk7RUFqQnFCLENBRGlCLEVBQWxELENBRDhDLENBQWxELENBZkQsQ0FMd0IsRUEwQ3hCO0VBQUU7RUExQ3NCLENBRi9CLElBNkNNLENBQUMsR0FBR3ZaLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQXpJa0UsQ0FBakQsQ0FEL0IsSUE0SU0sQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQXpLaUUsQ0FBM0MsQ0FBaEM7QUEyS0g7O0FBQ0R6NkMsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUNqTmE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFDYm51QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUlvdUMsVUFBVSxHQUFHO0VBQ2JwdUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJcXVDLFVBQVUsR0FBRztFQUNicnVDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSXV1QyxVQUFVLEdBQUc7RUFDYnZ1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUl3dUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQ2IxdUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJMnVDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkNXVDLEdBQUcsRUFBRSxDQURTO0VBRWRuSSxJQUFJLEVBQUUsa0JBRlE7RUFHZCxTQUFPO0FBSE8sQ0FBbEI7QUFLQSxJQUFJczRDLFdBQVcsR0FBRztFQUNkbndDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSW93QyxXQUFXLEdBQUc7RUFDZHB3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUlxd0MsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2R2d0MsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJd3dDLFdBQVcsR0FBRztFQUNkeHdDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSXl3QyxXQUFXLEdBQUc7RUFDZHp3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjs7QUFJQSxJQUFJMHdDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBR3Y3QyxLQUFLLENBQUNrOUMsZUFBVixFQUEyQixhQUEzQixDQUFoQzs7QUFDQSxJQUFJMUIsV0FBVyxHQUFHO0VBQUUzd0MsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJNHdDLFdBQVcsR0FBRztFQUNkNXdDLEdBQUcsRUFBRSxDQURTO0VBRWRuSSxJQUFJLEVBQUUsa0JBRlE7RUFHZCxTQUFPO0FBSE8sQ0FBbEI7QUFLQSxJQUFJZzVDLFdBQVcsR0FBRztFQUNkN3dDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCOztBQUlBLFNBQVNpdUMsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUdoNkMsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFNBQTVCLENBQXpCOztFQUNBLE9BQVEsQ0FBQyxHQUFHajZDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQ2hGLENBQUMsR0FBR3A2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFDakMsU0FBTyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FDN0JoRCxNQUFNLENBQUNyOEIsUUFBUCxHQUNNLDBEQUROLEdBRU0scUNBSHVCLEVBSTdCLGlEQUo2QixDQUExQjtFQUQwQixDQUFyQyxFQU9HLENBQ0MsQ0FBQyxHQUFHeGQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSixVQUFyQyxFQUFpRCxDQUM1Q2MsTUFBTSxDQUFDcjhCLFFBQVAsSUFBbUJvOEIsTUFBTSxDQUFDdDhCLFNBQTNCLElBQ08sQ0FBQyxHQUFHdGQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ25CLFVBQXBDLEVBQWdELGVBQWhELENBRC9CLElBRU0sQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQUh1QyxFQUk1Q1YsTUFBTSxDQUFDcjhCLFFBQVAsSUFBbUIsQ0FBQ284QixNQUFNLENBQUN0OEIsU0FBNUIsSUFDTyxDQUFDLEdBQUd0ZCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DbEIsVUFBcEMsRUFBZ0Qsc0JBQWhELENBRC9CLElBRU0sQ0FBQyxHQUFHajVDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQU51QyxFQU81Q1YsTUFBTSxDQUFDcjhCLFFBQVIsSUFDTyxDQUFDLEdBQUd4ZCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDakIsVUFBckMsRUFBaUQsQ0FDeEUsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztJQUNwQyxTQUFPLDRDQUQ2QjtJQUVwQ2tCLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtNQUFFLE9BQVFaLE1BQU0sQ0FBQ3I4QixRQUFQLEdBQWtCLENBQUNxOEIsTUFBTSxDQUFDcjhCLFFBQWxDO0lBQThDLENBQTVGO0VBRjJCLENBQXhDLEVBR0csQ0FDQyxDQUFDLEdBQUd4ZCxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDLFNBQU8sb0JBRGdDO0lBRXZDNXBDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxDQURELENBSEgsQ0FEd0UsRUFVeEUsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO0lBQ3BDa0IsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FDbkIsWUFBWTtNQUNSRCxJQUFJLENBQUNrRSxLQUFMLENBQVcsT0FBWDtJQUNILENBSEk7RUFEMkIsQ0FBeEMsRUFLRyxDQUNDLENBQUMsR0FBRzU5QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDLFNBQU8sb0JBRGdDO0lBRXZDNXBDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxDQURELENBTEgsQ0FWd0UsQ0FBakQsQ0FEL0IsSUF1Qk0sQ0FBQyxHQUFHcFEsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBOUJ1QyxDQUFqRCxDQURELEVBaUNDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFDakMsU0FBTyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQ2pELE1BQU0sQ0FBQ3Q4QixTQUFQLElBQW9CLDZCQUFyQixFQUFvRCxvRkFBcEQsQ0FBMUI7RUFEMEIsQ0FBckMsRUFFRyxDQUNDLENBQUMsR0FBR3RkLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztJQUMvQixTQUFPLENBQUMsR0FBR241QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLGtDQUFELEVBQXFDakQsTUFBTSxDQUFDdDhCLFNBQVAsSUFBb0Isa0JBQXpELENBQTFCO0VBRHdCLENBQW5DLEVBRUcsaUJBQWlCLENBQUMsR0FBR3RkLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN0OEIsZUFBbEMsQ0FBakIsR0FBc0UsU0FGekUsRUFFb0Y7RUFBRTtFQUZ0RixDQURELEVBSUUsQ0FBQ3E4QixNQUFNLENBQUN0OEIsU0FBVCxJQUNPLENBQUMsR0FBR3RkLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNmLFVBQXJDLEVBQWlELENBQ3hFLENBQUMsR0FBR3A1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNFLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3I1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFDakM3M0MsS0FBSyxFQUFFLENBQUMsR0FBR3RCLEtBQUssQ0FBQ3c2QyxjQUFWLEVBQTBCO01BQUVuaUMsS0FBSyxFQUFFd2hDLE1BQU0sQ0FBQ3QyQyxlQUFQLEdBQXlCO0lBQWxDLENBQTFCLENBRDBCO0lBRWpDLFNBQU87RUFGMEIsQ0FBckMsRUFHRyxJQUhILEVBR1M7RUFBRTtFQUhYLENBRDZDLENBQWpELENBRHdFLEVBT3hFLENBQUMsR0FBR3ZELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0csVUFBckMsRUFBaUQsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCcmIsSUFBSSxDQUFDeWdCLEtBQUwsQ0FBV2pHLE1BQU0sQ0FBQ3QyQyxlQUFsQixDQUEzQixJQUFpRSxHQUFsSCxFQUF1SDtFQUFFO0VBQXpILENBUHdFLENBQWpELENBRC9CLEtBVU8sQ0FBQyxHQUFHdkQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ1osVUFBckMsRUFBaUQsQ0FBQyxHQUFHdjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUMvN0IsZ0JBQWxDLENBQWpELEVBQXNHO0VBQUU7RUFBeEcsQ0FWL0IsQ0FKRCxDQUZILEVBaUJHO0VBQUU7RUFqQkwsQ0FqQ0QsRUFtREMsQ0FBQyxHQUFHOWQsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSyxVQUFyQyxFQUFpRCxDQUM1Q0ksTUFBTSxDQUFDdHNDLFNBQVIsSUFDTyxDQUFDLEdBQUd0TixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DVixXQUFuQyxFQUFnRCxXQUFoRCxDQUQvQixJQUVNLENBQUMsR0FBR3o1QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FIdUMsRUFJNUNYLE1BQU0sQ0FBQ3Q4QixTQUFSLElBQ08sQ0FBQyxHQUFHdGQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztJQUMvRHR2QyxHQUFHLEVBQUUsQ0FEMEQ7SUFFL0QsU0FBTyx3RkFGd0Q7SUFHL0R3dkMsT0FBTyxFQUFFUixNQUFNLENBQUNsOEI7RUFIK0MsQ0FBeEMsRUFJeEIsU0FKd0IsQ0FEL0IsSUFNTSxDQUFDLEdBQUczZCxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FWdUMsQ0FBakQsQ0FuREQsQ0FQSCxFQXNFRztFQUFFO0VBdEVMLENBRGdGLEVBd0UvRSxDQUFDVixNQUFNLENBQUNyOEIsUUFBVCxJQUNPLENBQUMsR0FBR3hkLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFDNUR0dkMsR0FBRyxFQUFFLENBRHVEO0lBRTVELFNBQU8sQ0FBQyxHQUFHN0ssS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQ2hELE1BQU0sQ0FBQ3A4QixrQkFBUCxHQUE0QixnQkFBNUIsR0FBK0MsbUJBQWhELEVBQXFFLDZEQUFyRSxDQUExQjtFQUZxRCxDQUFyQyxFQUd4QixDQUNDLENBQUMsR0FBR3pkLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxDQUFDLEdBQUdoNkMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxDQUFDaEQsTUFBTSxDQUFDcjhCLFFBQVIsR0FBbUIsWUFBbkIsR0FBa0MsRUFBbkMsRUFBdUMsZ0ZBQXZDLENBQTFCLENBRGdDO0lBRXZDcE4sSUFBSSxFQUFFLGdCQUZpQztJQUd2Q2lxQyxPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7TUFBRSxPQUFRWixNQUFNLENBQUNyOEIsUUFBUCxHQUFrQixDQUFDcThCLE1BQU0sQ0FBQ3I4QixRQUFsQztJQUE4QyxDQUE1RjtFQUg4QixDQUEzQyxFQUlHLElBSkgsRUFJUztFQUFFO0VBSlgsRUFJd0IsQ0FBQyxPQUFELENBSnhCLENBREQsRUFNRSxDQUFDbzhCLE1BQU0sQ0FBQ3Q4QixTQUFULElBQ08sQ0FBQyxHQUFHdGQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2EsV0FBckMsRUFBa0QsQ0FDekUsQ0FBQyxHQUFHaDdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUNqQzczQyxLQUFLLEVBQUUsQ0FBQyxHQUFHdEIsS0FBSyxDQUFDdzZDLGNBQVYsRUFBMEI7TUFBRW5pQyxLQUFLLEVBQUV3aEMsTUFBTSxDQUFDdDJDLGVBQVAsR0FBeUI7SUFBbEMsQ0FBMUIsQ0FEMEI7SUFFakMsU0FBTztFQUYwQixDQUFyQyxFQUdHLElBSEgsRUFHUztFQUFFO0VBSFgsQ0FEeUUsQ0FBbEQsQ0FEL0IsSUFPTSxDQUFDLEdBQUd2RCxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FiUCxFQWNFWCxNQUFNLENBQUN0OEIsU0FBUixJQUNPLENBQUMsR0FBR3RkLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNjLFdBQXJDLEVBQWtELENBQ3pFLENBQUMsR0FBR2o3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsQ0FDdkMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQytCLFdBQW5DLEVBQWdELENBQUMsR0FBR2w3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdDhCLGVBQWxDLElBQXFELGtCQUFyRyxFQUF5SDtFQUFFO0VBQTNILENBRHVDLEVBRXZDLENBQUMsR0FBR3ZkLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ2dDLFdBQW5DLEVBQWdELENBQUMsR0FBR243QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDLzdCLGdCQUFsQyxDQUFoRCxFQUFxRztFQUFFO0VBQXZHLENBRnVDLENBQTNDLENBRHlFLEVBS3pFLENBQUMsR0FBRzlkLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztJQUNwQyxTQUFPLGtFQUQ2QjtJQUVwQ2tCLE9BQU8sRUFBRVIsTUFBTSxDQUFDbDhCO0VBRm9CLENBQXhDLEVBR0csU0FISCxDQUx5RSxDQUFsRCxDQUQvQixLQVdPLENBQUMsR0FBRzNkLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNpQixXQUFyQyxFQUFrRCxDQUN4RXhCLE1BQU0sQ0FBQ3RzQyxTQUFSLElBQ08sQ0FBQyxHQUFHdE4sS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ2tCLFdBQW5DLEVBQWdELENBQUMsR0FBR3I3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdDhCLGVBQWxDLElBQXFELHdCQUFyRyxFQUErSDtFQUFFO0VBQWpJLENBRC9CLEtBRU8sQ0FBQyxHQUFHdmQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ21CLFdBQW5DLEVBQWdELENBQ3ZFQyxXQUR1RSxFQUV0RTNCLE1BQU0sQ0FBQ3g4QixVQUFQLElBQXFCeThCLE1BQU0sQ0FBQzk3QixVQUE3QixJQUNPLENBQUMsR0FBRy9kLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NxQixXQUF0QyxFQUFtRCxDQUFDLEdBQUd4N0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkIsR0FBRy80QyxNQUFILENBQVVpNEMsTUFBTSxDQUFDdjhCLGNBQWpCLEVBQWlDLEtBQWpDLEVBQXdDMWIsTUFBeEMsQ0FBK0NpNEMsTUFBTSxDQUFDeDhCLFVBQXRELENBQTNCLENBQW5ELEVBQWtKO0VBQUU7RUFBcEosQ0FEL0IsSUFFTSxDQUFDLEdBQUdwZCxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FKaUUsRUFLdkUsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLE9BQU8sQ0FBQyxHQUFHbDlDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN0OEIsZUFBbEMsQ0FBUCxHQUE0RCxJQUF2RixFQUE2RjtFQUFFO0VBQS9GLENBTHVFLENBQWhELENBRi9CLENBRHlFLEVBVXhFcThCLE1BQU0sQ0FBQ3RzQyxTQUFSLElBQ08sQ0FBQyxHQUFHdE4sS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ3NCLFdBQW5DLEVBQWdELFdBQWhELENBRC9CLEtBRU8sQ0FBQyxHQUFHejdDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QmQsTUFBTSxDQUFDLGVBQUQsQ0FBN0IsRUFBZ0Q7SUFBRWh2QyxHQUFHLEVBQUU7RUFBUCxDQUFoRCxDQUYvQixDQVZ5RSxDQUFsRCxDQVgvQixDQWRELENBSHdCLEVBMEN4QjtFQUFFO0VBMUNzQixDQUQvQixJQTRDTSxDQUFDLEdBQUc3SyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FwSDBFLEVBcUgvRSxDQUFDWCxNQUFNLENBQUN4OEIsVUFBUCxLQUFzQnc4QixNQUFNLENBQUN2OEIsY0FBN0IsSUFBK0N1OEIsTUFBTSxDQUFDdDhCLFNBQXZELEtBQXFFLENBQUN1OEIsTUFBTSxDQUFDcjhCLFFBQTlFLElBQ08sQ0FBQyxHQUFHeGQsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztJQUMvRHR2QyxHQUFHLEVBQUUsQ0FEMEQ7SUFFL0QsU0FBTywrRkFGd0Q7SUFHL0R3dkMsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBUWYsSUFBSSxDQUFDa0UsS0FBTCxDQUFXLE9BQVgsQ0FBUjtJQUErQixDQUE3RTtFQUhzRCxDQUF4QyxFQUl4QixDQUNDLENBQUMsR0FBRzU5QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDLFNBQU8sU0FEZ0M7SUFFdkM1cEMsSUFBSSxFQUFFO0VBRmlDLENBQTNDLENBREQsQ0FKd0IsQ0FEL0IsSUFXTSxDQUFDLEdBQUdwUSxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FoSTBFLEVBaUkvRSxDQUFDVixNQUFNLENBQUNwOEIsa0JBQVQsSUFDTyxDQUFDLEdBQUd6ZCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDdUIsV0FBckMsQ0FEL0IsSUFFTSxDQUFDLEdBQUcxN0MsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBbkkwRSxDQUFwRCxFQW9JN0I7RUFBRztFQXBJMEIsQ0FBaEM7QUFxSUg7O0FBQ0R6NkMsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUMxTWE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7O0FBQ0EsU0FBU0QsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxPQUFRLENBQUMsR0FBRy81QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcEIsVUFBckMsRUFBaUQsQ0FDNUVjLE1BQU0sQ0FBQ2o3QixvQkFBUixJQUNPLENBQUMsR0FBRzVlLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QmQsTUFBTSxDQUFDLG9CQUFELENBQTdCLEVBQXFEO0lBQzVFaHZDLEdBQUcsRUFBRSxDQUR1RTtJQUU1RWsxQyxRQUFRLEVBQUVwRyxNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FDcEIsVUFBVTl6QyxDQUFWLEVBQWE7TUFDVGcwQyxNQUFNLENBQUN2N0IsaUJBQVAsR0FBMkJ6WSxDQUEzQjtJQUNILENBSEssQ0FGa0U7SUFNNUUwM0MsT0FBTyxFQUFFMUQsTUFBTSxDQUFDaDdCO0VBTjRELENBQXJELENBRC9CLElBU00sQ0FBQyxHQUFHN2UsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBVnVFLEVBVzVFVixNQUFNLENBQUNsN0IsaUJBQVIsSUFDTyxDQUFDLEdBQUczZSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxrQkFBRCxDQUE3QixFQUFtRDtJQUFFaHZDLEdBQUcsRUFBRTtFQUFQLENBQW5ELENBRC9CLElBRU0sQ0FBQyxHQUFHN0ssS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBYnVFLEVBYzVFVixNQUFNLENBQUNuN0IsWUFBUixJQUNPLENBQUMsR0FBRzFlLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QmQsTUFBTSxDQUFDLFdBQUQsQ0FBN0IsRUFBNEM7SUFDbkVodkMsR0FBRyxFQUFFLENBRDhEO0lBRW5FLGVBQWUrdUMsTUFBTSxDQUFDeDhCLFVBRjZDO0lBR25FLG1CQUFtQnc4QixNQUFNLENBQUN2OEIsY0FIeUM7SUFJbkUsY0FBY3U4QixNQUFNLENBQUN0OEIsU0FKOEM7SUFLbkUsaUJBQWlCczhCLE1BQU0sQ0FBQ3o4QixZQUwyQztJQU1uRTdQLFNBQVMsRUFBRXNzQyxNQUFNLENBQUN0c0MsU0FOaUQ7SUFPbkVpd0MsT0FBTyxFQUFFMUQsTUFBTSxDQUFDLzZCO0VBUG1ELENBQTVDLEVBUXhCLElBUndCLEVBUWxCO0VBQUU7RUFSZ0IsRUFRSCxDQUFDLGFBQUQsRUFBZ0IsaUJBQWhCLEVBQW1DLFlBQW5DLEVBQWlELGVBQWpELEVBQWtFLFdBQWxFLENBUkcsQ0FEL0IsSUFVTSxDQUFDLEdBQUc5ZSxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0F4QnVFLENBQWpELENBQWhDO0FBMEJIOztBQUNEejZDLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDakNhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCOztBQUNBLFNBQVNOLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSUMsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHaDZDLEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixTQUE1QixDQUF6Qjs7RUFDQSxPQUFRLENBQUMsR0FBR2o2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUNoRixDQUFDLEdBQUdwNkMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJULE1BQU0sQ0FBQyxjQUFELENBQTdCLEVBQStDO0lBQzNDLFNBQU8sRUFEb0M7SUFFM0MzcEMsSUFBSSxFQUFFLEVBRnFDO0lBRzNDdEosSUFBSSxFQUFFLFdBSHFDO0lBSTNDd0osSUFBSSxFQUFFLFFBSnFDO0lBSzNDaXFDLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtNQUFFLE9BQVFaLE1BQU0sQ0FBQ3o2QixXQUFQLEdBQXFCLElBQTdCO0lBQXFDLENBQW5GO0VBTGtDLENBQS9DLENBRGdGLEVBUWhGLENBQUMsR0FBR3BmLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsT0FBRCxDQUE3QixFQUF3QztJQUNwQyxnQkFBZ0JBLE1BQU0sQ0FBQ3o2QixXQURhO0lBRXBDL0csS0FBSyxFQUFFLEtBRjZCO0lBR3BDa2xDLE9BQU8sRUFBRTFELE1BQU0sQ0FBQ3g2QjtFQUhvQixDQUF4QyxFQUlHO0lBQ0MsV0FBUyxDQUFDLEdBQUdyZixLQUFLLENBQUM0NkMsT0FBVixFQUFtQixZQUFZO01BQUUsT0FBTyxDQUM3QyxDQUFDLEdBQUc1NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSixVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztRQUN2QyxTQUFPLHFDQURnQztRQUV2QzVwQyxJQUFJLEVBQUU7TUFGaUMsQ0FBM0MsQ0FENkMsRUFLN0MsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DLElBQW5DLEVBQXlDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDcjZCLFVBQVAsQ0FBa0JxNkIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrYSxNQUFqQixDQUF3QixnQkFBeEIsRUFBMEMsaUJBQTFDLENBQWxCLENBQTNCLENBQXpDLEVBQXNKO01BQUU7TUFBeEosQ0FMNkMsQ0FBakQsQ0FENkMsRUFRN0MsQ0FBQyxHQUFHcmlCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0YsVUFBckMsRUFBaUQsQ0FBQyxHQUFHajVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUNyNkIsVUFBUCxDQUFrQnE2QixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQithLE1BQWpCLENBQXdCLHFCQUF4QixFQUErQyxpQkFBL0MsQ0FBbEIsQ0FBM0IsSUFBbUgsSUFBcEssRUFBMEs7TUFBRTtNQUE1SyxDQVI2QyxDQUFqRCxDQUQ2QyxFQVc3QyxDQUFDLEdBQUdyaUIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDQyxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdwNUMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJULE1BQU0sQ0FBQyxjQUFELENBQTdCLEVBQStDO1FBQzNDLFNBQU8seUJBRG9DO1FBRTNDM3BDLElBQUksRUFBRTJwQyxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQithLE1BQWpCLENBQXdCLFNBQXhCLENBRnFDO1FBRzNDemIsSUFBSSxFQUFFLEVBSHFDO1FBSTNDeXpDLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtVQUFFLE9BQVFaLE1BQU0sQ0FBQ3o2QixXQUFQLEdBQXFCLEtBQTdCO1FBQXNDLENBQXBGO01BSmtDLENBQS9DLEVBS0csSUFMSCxFQUtTO01BQUU7TUFMWCxFQUt3QixDQUFDLE1BQUQsQ0FMeEIsQ0FENkMsRUFPN0MsQ0FBQyxHQUFHcGYsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJULE1BQU0sQ0FBQyxjQUFELENBQTdCLEVBQStDO1FBQzNDLFNBQU8sT0FEb0M7UUFFM0MzcEMsSUFBSSxFQUFFMnBDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK2EsTUFBakIsQ0FBd0IsUUFBeEIsQ0FGcUM7UUFHM0N6YixJQUFJLEVBQUUsU0FIcUM7UUFJM0N5ekMsT0FBTyxFQUFFUixNQUFNLENBQUN0NkI7TUFKMkIsQ0FBL0MsRUFLRyxJQUxILEVBS1M7TUFBRTtNQUxYLEVBS3dCLENBQUMsTUFBRCxDQUx4QixDQVA2QyxDQUFqRCxDQUQ2QyxDQUFqRCxDQVg2QyxDQUFQO0lBMkJ0QyxDQTNCSyxDQURWO0lBNkJDdGEsQ0FBQyxFQUFFO0lBQUU7O0VBN0JOLENBSkgsRUFrQ0c7RUFBRTtFQWxDTCxFQWtDa0IsQ0FBQyxjQUFELEVBQWlCLFNBQWpCLENBbENsQixDQVJnRixFQTJDL0U0MEMsTUFBTSxDQUFDdjZCLE1BQVAsQ0FBY3ZmLEtBQWYsSUFDTyxDQUFDLEdBQUdDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QmQsTUFBTSxDQUFDLFFBQUQsQ0FBN0IsRUFBeUM7SUFDaEVodkMsR0FBRyxFQUFFLENBRDJEO0lBRWhFcUYsSUFBSSxFQUFFMnBDLE1BQU0sQ0FBQ3Y2QixNQUFQLENBQWNwUCxJQUY0QztJQUdoRSxTQUFPLENBQUMsR0FBR2xRLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCO01BQUUsa0JBQWtCaEQsTUFBTSxDQUFDdjZCO0lBQTNCLENBQTFCO0VBSHlELENBQXpDLEVBSXhCLElBSndCLEVBSWxCO0VBQUU7RUFKZ0IsRUFJSCxDQUFDLE1BQUQsRUFBUyxPQUFULENBSkcsQ0FEL0IsSUFNTSxDQUFDLEdBQUd0ZixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FqRDBFLENBQXBELEVBa0Q3QjtFQUFHO0VBbEQwQixDQUFoQztBQW1ESDs7QUFDRHo2QyxjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQy9EYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRyxDQUFDLE1BQUQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7O0FBQ0EsU0FBU0gsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUdoNkMsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFNBQTVCLENBQXpCOztFQUNBLE9BQVFQLElBQUksQ0FBQ2wzQyxJQUFOLElBQ0EsQ0FBQyxHQUFHeEMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztJQUMxRHR2QyxHQUFHLEVBQUUsQ0FEcUQ7SUFFMURuSSxJQUFJLEVBQUVnM0MsSUFBSSxDQUFDbDNDLElBRitDO0lBRzFELFNBQU8sQ0FBQyxHQUFHeEMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEJuRCxJQUFJLENBQUM1NUIsT0FBL0I7RUFIbUQsQ0FBbkMsRUFJeEIsQ0FDRTQ1QixJQUFJLENBQUN0cEMsSUFBTixJQUNPLENBQUMsR0FBR3BRLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1Qlgsa0JBQXZCLEVBQTJDO0lBQ2xFbnZDLEdBQUcsRUFBRSxDQUQ2RDtJQUVsRSxTQUFPLGtCQUYyRDtJQUdsRXVGLElBQUksRUFBRXNwQyxJQUFJLENBQUN0cEM7RUFIdUQsQ0FBM0MsRUFJeEIsSUFKd0IsRUFJbEI7RUFBRTtFQUpnQixFQUlILENBQUMsTUFBRCxDQUpHLENBRC9CLElBTU0sQ0FBQyxHQUFHcFEsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBUFAsRUFRQyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDSCxVQUF0QyxFQUFrRCxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN4cEMsSUFBaEMsQ0FBbEQsRUFBeUY7RUFBRTtFQUEzRixDQVJELENBSndCLEVBYXhCO0VBQUc7RUFicUIsRUFhRDZvQyxVQWJDLENBRHhCLEtBZUEsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M7SUFDN0R0dkMsR0FBRyxFQUFFLENBRHdEO0lBRTdELFNBQU8sQ0FBQyxHQUFHN0ssS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQ25ELElBQUksQ0FBQzU1QixPQUFOLEVBQWUsK0VBQWYsQ0FBMUI7RUFGc0QsQ0FBdEMsRUFHeEIsQ0FDRTQ1QixJQUFJLENBQUN0cEMsSUFBTixJQUNPLENBQUMsR0FBR3BRLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1Qlgsa0JBQXZCLEVBQTJDO0lBQ2xFbnZDLEdBQUcsRUFBRSxDQUQ2RDtJQUVsRSxTQUFPLGtCQUYyRDtJQUdsRXVGLElBQUksRUFBRXNwQyxJQUFJLENBQUN0cEM7RUFIdUQsQ0FBM0MsRUFJeEIsSUFKd0IsRUFJbEI7RUFBRTtFQUpnQixFQUlILENBQUMsTUFBRCxDQUpHLENBRC9CLElBTU0sQ0FBQyxHQUFHcFEsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBUFAsRUFRQyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDRixVQUF0QyxFQUFrRCxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN4cEMsSUFBaEMsQ0FBbEQsRUFBeUY7RUFBRTtFQUEzRixDQVJELENBSHdCLEVBWXhCO0VBQUU7RUFac0IsQ0FmeEIsQ0FBUDtBQTRCSDs7QUFDRHBRLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDdENhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHLENBQUMsV0FBRCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlFLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjs7QUFDQSxTQUFTTixNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELElBQUlDLGtCQUFrQixHQUFHLENBQUMsR0FBR2g2QyxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsU0FBNUIsQ0FBekI7O0VBQ0EsT0FBUSxDQUFDLEdBQUdqNkMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FDL0VQLE1BQU0sQ0FBQ2hnQyxPQUFSLElBQ08sQ0FBQyxHQUFHN1osS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCZCxNQUFNLENBQUMsY0FBRCxDQUE3QixFQUErQztJQUN0RWh2QyxHQUFHLEVBQUUsQ0FEaUU7SUFFdEVxRixJQUFJLEVBQUUycEMsTUFBTSxDQUFDaGdDLE9BRnlEO0lBR3RFalQsSUFBSSxFQUFFZ3pDLE1BQU0sQ0FBQ2h6QyxJQUh5RDtJQUl0RXdKLElBQUksRUFBRSxnQkFKZ0U7SUFLdEVpcUMsT0FBTyxFQUFFUixNQUFNLENBQUM1M0I7RUFMc0QsQ0FBL0MsRUFNeEIsSUFOd0IsRUFNbEI7RUFBRTtFQU5nQixFQU1ILENBQUMsTUFBRCxFQUFTLE1BQVQsQ0FORyxDQUQvQixJQVFNLENBQUMsR0FBR2ppQixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FUMEUsRUFVaEYsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsT0FBRCxDQUE3QixFQUF3QztJQUNwQyxnQkFBZ0JBLE1BQU0sQ0FBQzE1QixZQURhO0lBRXBDOUgsS0FBSyxFQUFFLEtBRjZCO0lBR3BDa2xDLE9BQU8sRUFBRTFELE1BQU0sQ0FBQ3g1QixhQUhvQjtJQUlwQzIvQixPQUFPLEVBQUVuRyxNQUFNLENBQUNyNUI7RUFKb0IsQ0FBeEMsRUFLRztJQUNDLFdBQVMsQ0FBQyxHQUFHeGdCLEtBQUssQ0FBQzQ2QyxPQUFWLEVBQW1CLFlBQVk7TUFBRSxPQUFPLENBQzdDLENBQUMsR0FBRzU2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNKLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBRy80QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2g1QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO1FBQ3ZDLFNBQU8sQ0FBQyxHQUFHaDZDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsY0FBRCxFQUFpQjtVQUMxQyxrQkFBa0JoRCxNQUFNLENBQUNwNUIsa0JBQVAsQ0FBMEJHLFVBREY7VUFFMUMsbUJBQW1CLENBQUNpNUIsTUFBTSxDQUFDcDVCLGtCQUFQLENBQTBCRztRQUZKLENBQWpCLENBQTFCLENBRGdDO1FBS3ZDeFEsSUFBSSxFQUFFeXBDLE1BQU0sQ0FBQ3A1QixrQkFBUCxDQUEwQnJRO01BTE8sQ0FBM0MsRUFNRyxJQU5ILEVBTVM7TUFBRTtNQU5YLEVBTXdCLENBQUMsT0FBRCxFQUFVLE1BQVYsQ0FOeEIsQ0FENkMsRUFRN0MsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DLElBQW5DLEVBQXlDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDcDVCLGtCQUFQLENBQTBCdkksS0FBckQsQ0FBekMsRUFBc0c7TUFBRTtNQUF4RyxDQVI2QyxDQUFqRCxDQUQ2QyxFQVc3QyxDQUFDLEdBQUdsWSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFDakMsU0FBTyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyx3QkFBRCxFQUEyQjtVQUNwRCxXQUFXaEQsTUFBTSxDQUFDcDVCLGtCQUFQLENBQTBCRyxVQURlO1VBRXBELGdCQUFnQixDQUFDaTVCLE1BQU0sQ0FBQ3A1QixrQkFBUCxDQUEwQkc7UUFGUyxDQUEzQixDQUExQjtNQUQwQixDQUFyQyxFQUtHLENBQ0MsQ0FBQyxHQUFHNWdCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztRQUNqQyxTQUFPLHdCQUQwQjtRQUVqQzRGLFNBQVMsRUFBRWxGLE1BQU0sQ0FBQ3A1QixrQkFBUCxDQUEwQkU7TUFGSixDQUFyQyxFQUdHLElBSEgsRUFHUztNQUFFO01BSFgsRUFHd0JzNEIsVUFIeEIsQ0FERCxDQUxILEVBVUc7TUFBRTtNQVZMLENBWDZDLENBQWpELENBRDZDLEVBd0I3QyxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDQyxVQUFyQyxFQUFpRCxDQUM1Q1MsTUFBTSxDQUFDdjVCLGlCQUFSLElBQ08sQ0FBQyxHQUFHdGdCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDO1FBQUV2dkMsR0FBRyxFQUFFO01BQVAsQ0FBOUMsRUFBMEQsQ0FDaEZndkMsTUFBTSxDQUFDejVCLFdBQVAsSUFBc0IsQ0FBdkIsSUFDTyxDQUFDLEdBQUdwZ0IsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCZCxNQUFNLENBQUMsY0FBRCxDQUE3QixFQUErQztRQUN0RWh2QyxHQUFHLEVBQUUsQ0FEaUU7UUFFdEUsU0FBTyx5QkFGK0Q7UUFHdEVxRixJQUFJLEVBQUUycEMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrYSxNQUFqQixDQUF3QixTQUF4QixDQUhnRTtRQUl0RXpiLElBQUksRUFBRSxFQUpnRTtRQUt0RXl6QyxPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7VUFBRSxPQUFRWixNQUFNLENBQUMxNUIsWUFBUCxHQUFzQixLQUE5QjtRQUF1QyxDQUFyRjtNQUw2RCxDQUEvQyxFQU14QixJQU53QixFQU1sQjtNQUFFO01BTmdCLEVBTUgsQ0FBQyxNQUFELENBTkcsQ0FEL0IsSUFRTSxDQUFDLEdBQUduZ0IsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBVDJFLEVBVWhGVixNQUFNLENBQUN6NUIsV0FBUCxJQUFzQixDQUF2QixJQUNPLENBQUMsR0FBR3BnQixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxjQUFELENBQTdCLEVBQStDO1FBQ3RFaHZDLEdBQUcsRUFBRSxDQURpRTtRQUV0RSxTQUFPLE9BRitEO1FBR3RFcUYsSUFBSSxFQUFFMnBDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK2EsTUFBakIsQ0FBd0IsVUFBeEIsQ0FIZ0U7UUFJdEV6YixJQUFJLEVBQUUsU0FKZ0U7UUFLdEV5ekMsT0FBTyxFQUFFUixNQUFNLENBQUNsNEI7TUFMc0QsQ0FBL0MsRUFNeEIsSUFOd0IsRUFNbEI7TUFBRTtNQU5nQixFQU1ILENBQUMsTUFBRCxDQU5HLENBRC9CLElBUU0sQ0FBQyxHQUFHM2hCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWxCMkUsQ0FBMUQsRUFtQnhCO01BQUc7TUFuQnFCLENBRC9CLEtBcUJPLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QztRQUFFdnZDLEdBQUcsRUFBRTtNQUFQLENBQTlDLEVBQTBELENBQ2hGZ3ZDLE1BQU0sQ0FBQ3o1QixXQUFQLElBQXNCLENBQXZCLElBQ08sQ0FBQyxHQUFHcGdCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QmQsTUFBTSxDQUFDLGNBQUQsQ0FBN0IsRUFBK0M7UUFDdEVodkMsR0FBRyxFQUFFLENBRGlFO1FBRXRFLFNBQU8seUJBRitEO1FBR3RFcUYsSUFBSSxFQUFFMnBDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK2EsTUFBakIsQ0FBd0IsaUJBQXhCLENBSGdFO1FBSXRFemIsSUFBSSxFQUFFLEVBSmdFO1FBS3RFeXpDLE9BQU8sRUFBRVIsTUFBTSxDQUFDbDRCO01BTHNELENBQS9DLEVBTXhCLElBTndCLEVBTWxCO01BQUU7TUFOZ0IsRUFNSCxDQUFDLE1BQUQsQ0FORyxDQUQvQixJQVFNLENBQUMsR0FBRzNoQixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FUMkUsRUFVaEZWLE1BQU0sQ0FBQ3o1QixXQUFQLElBQXNCLENBQXZCLElBQ08sQ0FBQyxHQUFHcGdCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QmQsTUFBTSxDQUFDLGNBQUQsQ0FBN0IsRUFBK0M7UUFDdEVodkMsR0FBRyxFQUFFLENBRGlFO1FBRXRFLFNBQU8sT0FGK0Q7UUFHdEVxRixJQUFJLEVBQUUycEMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrYSxNQUFqQixDQUF3QixhQUF4QixFQUF1QyxjQUF2QyxDQUhnRTtRQUl0RXpiLElBQUksRUFBRSxTQUpnRTtRQUt0RXl6QyxPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7VUFBRSxPQUFRWixNQUFNLENBQUMxNUIsWUFBUCxHQUFzQixLQUE5QjtRQUF1QyxDQUFyRjtNQUw2RCxDQUEvQyxFQU14QixJQU53QixFQU1sQjtNQUFFO01BTmdCLEVBTUgsQ0FBQyxNQUFELENBTkcsQ0FEL0IsSUFRTSxDQUFDLEdBQUduZ0IsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBbEIyRSxDQUExRCxFQW1CeEI7TUFBRztNQW5CcUIsQ0FyQi9CLENBRDZDLEVBMEM1Q1YsTUFBTSxDQUFDejVCLFdBQVAsS0FBdUIsQ0FBdkIsSUFBNEJ5NUIsTUFBTSxDQUFDejVCLFdBQVAsS0FBdUIsQ0FBcEQsSUFDTyxDQUFDLEdBQUdwZ0IsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCZCxNQUFNLENBQUMsY0FBRCxDQUE3QixFQUErQztRQUN0RWh2QyxHQUFHLEVBQUUsQ0FEaUU7UUFFdEUsU0FBTyx5QkFGK0Q7UUFHdEVxRixJQUFJLEVBQUUycEMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrYSxNQUFqQixDQUF3QixTQUF4QixDQUhnRTtRQUl0RXpiLElBQUksRUFBRSxFQUpnRTtRQUt0RXl6QyxPQUFPLEVBQUVSLE1BQU0sQ0FBQ2o0QjtNQUxzRCxDQUEvQyxFQU14QixJQU53QixFQU1sQjtNQUFFO01BTmdCLEVBTUgsQ0FBQyxNQUFELENBTkcsQ0FEL0IsSUFRTSxDQUFDLEdBQUc1aEIsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBbER1QyxFQW1EN0MsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4Qiw0Q0FBOUIsQ0FuRDZDLEVBb0Q1Q1YsTUFBTSxDQUFDejVCLFdBQVAsS0FBdUIsQ0FBeEIsSUFDTyxDQUFDLEdBQUdwZ0IsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCZCxNQUFNLENBQUMsY0FBRCxDQUE3QixFQUErQztRQUN0RWh2QyxHQUFHLEVBQUUsQ0FEaUU7UUFFdEUsU0FBTyxPQUYrRDtRQUd0RXFGLElBQUksRUFBRTJwQyxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQithLE1BQWpCLENBQXdCLFVBQXhCLENBSGdFO1FBSXRFemIsSUFBSSxFQUFFLFNBSmdFO1FBS3RFeXpDLE9BQU8sRUFBRVIsTUFBTSxDQUFDaDRCO01BTHNELENBQS9DLEVBTXhCLElBTndCLEVBTWxCO01BQUU7TUFOZ0IsRUFNSCxDQUFDLE1BQUQsQ0FORyxDQUQvQixJQVFNLENBQUMsR0FBRzdoQixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0E1RHVDLEVBNkQ3QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLDJDQUE5QixDQTdENkMsRUE4RDVDVixNQUFNLENBQUN6NUIsV0FBUCxLQUF1QixDQUF4QixJQUNPLENBQUMsR0FBR3BnQixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxjQUFELENBQTdCLEVBQStDO1FBQ3RFaHZDLEdBQUcsRUFBRSxDQURpRTtRQUV0RSxTQUFPLE9BRitEO1FBR3RFcUYsSUFBSSxFQUFFMnBDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK2EsTUFBakIsQ0FBd0IsU0FBeEIsQ0FIZ0U7UUFJdEV6YixJQUFJLEVBQUUsU0FKZ0U7UUFLdEV5ekMsT0FBTyxFQUFFUixNQUFNLENBQUMzM0I7TUFMc0QsQ0FBL0MsRUFNeEIsSUFOd0IsRUFNbEI7TUFBRTtNQU5nQixFQU1ILENBQUMsTUFBRCxDQU5HLENBRC9CLElBUU0sQ0FBQyxHQUFHbGlCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQXRFdUMsRUF1RTdDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsMkNBQTlCLENBdkU2QyxFQXdFNUNWLE1BQU0sQ0FBQ3o1QixXQUFQLEtBQXVCLENBQXZCLElBQTRCeTVCLE1BQU0sQ0FBQ3o1QixXQUFQLEtBQXVCLENBQXBELElBQ08sQ0FBQyxHQUFHcGdCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QmQsTUFBTSxDQUFDLGNBQUQsQ0FBN0IsRUFBK0M7UUFDdEVodkMsR0FBRyxFQUFFLENBRGlFO1FBRXRFLFNBQU8seUJBRitEO1FBR3RFcUYsSUFBSSxFQUFFMnBDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK2EsTUFBakIsQ0FBd0IsZ0JBQXhCLENBSGdFO1FBSXRFemIsSUFBSSxFQUFFLEVBSmdFO1FBS3RFeXpDLE9BQU8sRUFBRVIsTUFBTSxDQUFDMzNCO01BTHNELENBQS9DLEVBTXhCLElBTndCLEVBTWxCO01BQUU7TUFOZ0IsRUFNSCxDQUFDLE1BQUQsQ0FORyxDQUQvQixJQVFNLENBQUMsR0FBR2xpQixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FoRnVDLEVBaUY1Q1YsTUFBTSxDQUFDejVCLFdBQVAsS0FBdUIsQ0FBdkIsSUFBNEJ5NUIsTUFBTSxDQUFDejVCLFdBQVAsS0FBdUIsQ0FBcEQsSUFDTyxDQUFDLEdBQUdwZ0IsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCZCxNQUFNLENBQUMsY0FBRCxDQUE3QixFQUErQztRQUN0RWh2QyxHQUFHLEVBQUUsQ0FEaUU7UUFFdEUsU0FBTyxPQUYrRDtRQUd0RXFGLElBQUksRUFBRTJwQyxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQithLE1BQWpCLENBQXdCLFlBQXhCLENBSGdFO1FBSXRFemIsSUFBSSxFQUFFLFNBSmdFO1FBS3RFeXpDLE9BQU8sRUFBRVIsTUFBTSxDQUFDcjVCO01BTHNELENBQS9DLEVBTXhCLElBTndCLEVBTWxCO01BQUU7TUFOZ0IsRUFNSCxDQUFDLE1BQUQsQ0FORyxDQUQvQixJQVFNLENBQUMsR0FBR3hnQixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0F6RnVDLENBQWpELENBRDZDLENBQWpELENBeEI2QyxDQUFQO0lBcUh0QyxDQXJISyxDQURWO0lBdUhDdDFDLENBQUMsRUFBRTtJQUFFOztFQXZITixDQUxILEVBNkhHO0VBQUU7RUE3SEwsRUE2SGtCLENBQUMsY0FBRCxFQUFpQixTQUFqQixDQTdIbEIsQ0FWZ0YsRUF3SS9FNDBDLE1BQU0sQ0FBQ3Y2QixNQUFSLElBQ08sQ0FBQyxHQUFHdGYsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCZCxNQUFNLENBQUMsUUFBRCxDQUE3QixFQUF5QztJQUNoRWh2QyxHQUFHLEVBQUUsQ0FEMkQ7SUFFaEVxRixJQUFJLEVBQUUycEMsTUFBTSxDQUFDdDVCLFVBRm1EO0lBR2hFLFNBQU8sQ0FBQyxHQUFHdmdCLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCO01BQUUsa0JBQWtCaEQsTUFBTSxDQUFDdjZCO0lBQTNCLENBQTFCO0VBSHlELENBQXpDLEVBSXhCLElBSndCLEVBSWxCO0VBQUU7RUFKZ0IsRUFJSCxDQUFDLE1BQUQsRUFBUyxPQUFULENBSkcsQ0FEL0IsSUFNTSxDQUFDLEdBQUd0ZixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0E5STBFLENBQXBELEVBK0k3QjtFQUFHO0VBL0kwQixDQUFoQztBQWdKSDs7QUFDRHo2QyxjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQzVKYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlFLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjs7QUFDQSxTQUFTUCxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELElBQUlDLGtCQUFrQixHQUFHLENBQUMsR0FBR2g2QyxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsU0FBNUIsQ0FBekI7O0VBQ0EsT0FBUSxDQUFDLEdBQUdqNkMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FDaEYsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsY0FBRCxDQUE3QixFQUErQztJQUMzQyxTQUFPLEVBRG9DO0lBRTNDM3BDLElBQUksRUFBRTJwQyxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQithLE1BQWpCLENBQXdCLFdBQXhCLENBRnFDO0lBRzNDemIsSUFBSSxFQUFFZ3pDLE1BQU0sQ0FBQ2h6QyxJQUg4QjtJQUkzQ3dKLElBQUksRUFBRSxjQUpxQztJQUszQ2lxQyxPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7TUFBRSxPQUFRWixNQUFNLENBQUN2M0IsY0FBUCxHQUF3QixJQUFoQztJQUF3QyxDQUF0RjtFQUxrQyxDQUEvQyxFQU1HLElBTkgsRUFNUztFQUFFO0VBTlgsRUFNd0IsQ0FBQyxNQUFELEVBQVMsTUFBVCxDQU54QixDQURnRixFQVFoRixDQUFDLEdBQUd0aUIsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJULE1BQU0sQ0FBQyxPQUFELENBQTdCLEVBQXdDO0lBQ3BDLGdCQUFnQkEsTUFBTSxDQUFDdjNCLGNBRGE7SUFFcENqSyxLQUFLLEVBQUUsS0FGNkI7SUFHcENrbEMsT0FBTyxFQUFFMUQsTUFBTSxDQUFDdDNCO0VBSG9CLENBQXhDLEVBSUc7SUFDQyxXQUFTLENBQUMsR0FBR3ZpQixLQUFLLENBQUM0NkMsT0FBVixFQUFtQixZQUFZO01BQUUsT0FBTyxDQUM3QyxDQUFDLEdBQUc1NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSixVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztRQUN2QyxTQUFPLHFDQURnQztRQUV2QzVwQyxJQUFJLEVBQUU7TUFGaUMsQ0FBM0MsQ0FENkMsRUFLN0MsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DRixVQUFuQyxFQUErQyxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK2EsTUFBakIsQ0FBd0IsV0FBeEIsQ0FBM0IsSUFBbUUsR0FBbkUsR0FBeUUsQ0FBQyxHQUFHcmlCLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLFVBQTVCLENBQTNCLENBQXhILEVBQTZMO01BQUU7TUFBL0wsQ0FMNkMsQ0FBakQsQ0FENkMsRUFRN0MsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRCxVQUFyQyxFQUFpRCxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK2EsTUFBakIsQ0FBd0Isd0JBQXhCLEVBQWtELGlCQUFsRCxDQUEzQixJQUFtRyxJQUFwSixFQUEwSjtNQUFFO01BQTVKLENBUjZDLENBQWpELENBRDZDLEVBVzdDLENBQUMsR0FBR3JpQixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNDLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3A1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNFLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3I1QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLGNBQUQsQ0FBN0IsRUFBK0M7UUFDM0MsU0FBTyx5QkFEb0M7UUFFM0MzcEMsSUFBSSxFQUFFMnBDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK2EsTUFBakIsQ0FBd0IsU0FBeEIsQ0FGcUM7UUFHM0N6YixJQUFJLEVBQUUsRUFIcUM7UUFJM0N5ekMsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO1VBQUUsT0FBUVosTUFBTSxDQUFDdjNCLGNBQVAsR0FBd0IsS0FBaEM7UUFBeUMsQ0FBdkY7TUFKa0MsQ0FBL0MsRUFLRyxJQUxILEVBS1M7TUFBRTtNQUxYLEVBS3dCLENBQUMsTUFBRCxDQUx4QixDQUQ2QyxFQU83QyxDQUFDLEdBQUd0aUIsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJULE1BQU0sQ0FBQyxjQUFELENBQTdCLEVBQStDO1FBQzNDLFNBQU8sT0FEb0M7UUFFM0MzcEMsSUFBSSxFQUFFMnBDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK2EsTUFBakIsQ0FBd0IsV0FBeEIsQ0FGcUM7UUFHM0N6YixJQUFJLEVBQUUsU0FIcUM7UUFJM0N5ekMsT0FBTyxFQUFFUixNQUFNLENBQUNyM0I7TUFKMkIsQ0FBL0MsRUFLRyxJQUxILEVBS1M7TUFBRTtNQUxYLEVBS3dCLENBQUMsTUFBRCxDQUx4QixDQVA2QyxDQUFqRCxDQUQ2QyxDQUFqRCxDQVg2QyxDQUFQO0lBMkJ0QyxDQTNCSyxDQURWO0lBNkJDdmQsQ0FBQyxFQUFFO0lBQUU7O0VBN0JOLENBSkgsRUFrQ0c7RUFBRTtFQWxDTCxFQWtDa0IsQ0FBQyxjQUFELEVBQWlCLFNBQWpCLENBbENsQixDQVJnRixFQTJDL0U0MEMsTUFBTSxDQUFDdjZCLE1BQVAsQ0FBY3ZmLEtBQWYsSUFDTyxDQUFDLEdBQUdDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QmQsTUFBTSxDQUFDLFFBQUQsQ0FBN0IsRUFBeUM7SUFDaEVodkMsR0FBRyxFQUFFLENBRDJEO0lBRWhFcUYsSUFBSSxFQUFFMnBDLE1BQU0sQ0FBQ3Y2QixNQUFQLENBQWNwUCxJQUY0QztJQUdoRSxTQUFPLENBQUMsR0FBR2xRLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCO01BQUUsa0JBQWtCaEQsTUFBTSxDQUFDdjZCO0lBQTNCLENBQTFCO0VBSHlELENBQXpDLEVBSXhCLElBSndCLEVBSWxCO0VBQUU7RUFKZ0IsRUFJSCxDQUFDLE1BQUQsRUFBUyxPQUFULENBSkcsQ0FEL0IsSUFNTSxDQUFDLEdBQUd0ZixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FqRDBFLENBQXBELEVBa0Q3QjtFQUFHO0VBbEQwQixDQUFoQztBQW1ESDs7QUFDRHo2QyxjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ2hFYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFcHVDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSXF1QyxVQUFVLEdBQUc7RUFBRXJ1QyxHQUFHLEVBQUU7QUFBUCxDQUFqQjtBQUNBLElBQUl1dUMsVUFBVSxHQUFHO0VBQUV2dUMsR0FBRyxFQUFFO0FBQVAsQ0FBakI7QUFDQSxJQUFJd3VDLFVBQVUsR0FBRztFQUFFeHVDLEdBQUcsRUFBRTtBQUFQLENBQWpCO0FBQ0EsSUFBSXl1QyxVQUFVLEdBQUc7RUFBRXp1QyxHQUFHLEVBQUU7QUFBUCxDQUFqQjtBQUNBLElBQUkwdUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUzdUMsR0FBRyxFQUFFO0FBQVAsQ0FBakI7QUFDQSxJQUFJNHVDLFdBQVcsR0FBRztFQUFFNXVDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSW13QyxXQUFXLEdBQUc7RUFBRW53QyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUlvd0MsV0FBVyxHQUFHO0VBQUVwd0MsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJcXdDLFdBQVcsR0FBRztFQUFFcndDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSXN3QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsU0FBU3RDLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSUMsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHaDZDLEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixTQUE1QixDQUF6Qjs7RUFDQSxPQUFRLENBQUMsR0FBR2o2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUNoRixDQUFDLEdBQUdwNkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO0lBQ3BDLFNBQU8sZ0NBRDZCO0lBRXBDa0IsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FDbkIsVUFBVXhrQyxLQUFWLEVBQWlCO01BQ2Iwa0MsTUFBTSxDQUFDejZCLFdBQVAsR0FBcUIsSUFBckI7TUFDQWpLLEtBQUssQ0FBQ0MsZUFBTjtJQUNILENBSkk7RUFGMkIsQ0FBeEMsRUFPRyxDQUNDLENBQUMsR0FBR3BWLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkM1cEMsSUFBSSxFQUFFLFFBRGlDO0lBRXZDLFNBQU87RUFGZ0MsQ0FBM0MsQ0FERCxDQVBILENBRGdGLEVBY2hGLENBQUMsR0FBR3BRLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsT0FBRCxDQUE3QixFQUF3QztJQUNwQyxnQkFBZ0JBLE1BQU0sQ0FBQ3o2QixXQURhO0lBRXBDL0csS0FBSyxFQUFFLEtBRjZCO0lBR3BDa2xDLE9BQU8sRUFBRTFELE1BQU0sQ0FBQ3g2QjtFQUhvQixDQUF4QyxFQUlHO0lBQ0MsV0FBUyxDQUFDLEdBQUdyZixLQUFLLENBQUM0NkMsT0FBVixFQUFtQixZQUFZO01BQUUsT0FBTyxDQUM3QyxDQUFDLEdBQUc1NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSixVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdoNUMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztRQUN2QyxTQUFPLHFDQURnQztRQUV2QzVwQyxJQUFJLEVBQUU7TUFGaUMsQ0FBM0MsQ0FENkMsRUFLNUN5cEMsTUFBTSxDQUFDbnpDLEtBQVAsQ0FBYWdjLFFBQWIsS0FBMEIsUUFBM0IsSUFDTyxDQUFDLEdBQUcxaUIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ2xCLFVBQW5DLEVBQStDLENBQUMsR0FBR2o1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDcjZCLFVBQVAsQ0FBa0JxNkIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrYSxNQUFqQixDQUF3QixnQkFBeEIsRUFBMEMsZUFBMUMsQ0FBbEIsQ0FBM0IsQ0FBL0MsRUFBMEo7TUFBRTtNQUE1SixDQUQvQixJQUVPdzNCLE1BQU0sQ0FBQ256QyxLQUFQLENBQWFnYyxRQUFiLEtBQTBCLFdBQTNCLElBQ0ssQ0FBQyxHQUFHMWlCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNqQixVQUFuQyxFQUErQyxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3I2QixVQUFQLENBQWtCcTZCLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK2EsTUFBakIsQ0FBd0IsZ0JBQXhCLEVBQTBDLGtCQUExQyxDQUFsQixDQUEzQixDQUEvQyxFQUE2SjtNQUFFO01BQS9KLENBRDdCLElBRUt3M0IsTUFBTSxDQUFDbnpDLEtBQVAsQ0FBYWdjLFFBQWIsS0FBMEIsUUFBM0IsSUFDSyxDQUFDLEdBQUcxaUIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ2YsVUFBbkMsRUFBK0MsQ0FBQyxHQUFHcDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUNyNkIsVUFBUCxDQUFrQnE2QixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQithLE1BQWpCLENBQXdCLGdCQUF4QixFQUEwQyxlQUExQyxDQUFsQixDQUEzQixDQUEvQyxFQUEwSjtNQUFFO01BQTVKLENBRDdCLElBRUt3M0IsTUFBTSxDQUFDbnpDLEtBQVAsQ0FBYWdjLFFBQWIsS0FBMEIsYUFBM0IsSUFDSyxDQUFDLEdBQUcxaUIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ2QsVUFBbkMsRUFBK0MsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUNyNkIsVUFBUCxDQUFrQnE2QixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQithLE1BQWpCLENBQXdCLGdCQUF4QixFQUEwQyxvQkFBMUMsQ0FBbEIsQ0FBM0IsQ0FBL0MsRUFBK0o7TUFBRTtNQUFqSyxDQUQ3QixLQUVLLENBQUMsR0FBR3JpQixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DYixVQUFuQyxFQUErQyxDQUFDLEdBQUd0NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK2EsTUFBakIsQ0FBd0IsUUFBeEIsQ0FBM0IsQ0FBL0MsRUFBOEc7TUFBRTtNQUFoSCxDQUY3QixDQVgrQixDQUFqRCxDQUQ2QyxFQWdCN0MsQ0FBQyxHQUFHcmlCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0ksVUFBckMsRUFBaUQsQ0FDNUNNLE1BQU0sQ0FBQ256QyxLQUFQLENBQWFnYyxRQUFiLEtBQTBCLFFBQTNCLElBQ08sQ0FBQyxHQUFHMWlCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNYLFVBQW5DLEVBQStDLENBQUMsR0FBR3g1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0Qiw2QkFBNUIsQ0FBM0IsSUFBeUYsR0FBekYsR0FBK0YsQ0FBQyxHQUFHOUksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsUUFBNUIsQ0FBM0IsQ0FBL0YsR0FBbUssS0FBbkssR0FBMkssQ0FBQyxHQUFHOUksS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsa0NBQTVCLENBQTNCLENBQTFOLEVBQXVUO01BQUU7TUFBelQsQ0FEL0IsSUFFTyt3QyxNQUFNLENBQUNuekMsS0FBUCxDQUFhZ2MsUUFBYixLQUEwQixXQUEzQixJQUNLLENBQUMsR0FBRzFpQixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DVixXQUFuQyxFQUFnRCxDQUFDLEdBQUd6NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCd0IsVUFBakIsQ0FBNEIsNkJBQTVCLENBQTNCLElBQXlGLEdBQXpGLEdBQStGLENBQUMsR0FBRzlJLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLFdBQTVCLENBQTNCLENBQS9GLEdBQXNLLEtBQXRLLEdBQThLLENBQUMsR0FBRzlJLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLHdCQUE1QixDQUEzQixDQUE5TixFQUFpVDtNQUFFO01BQW5ULENBRDdCLElBRUsrd0MsTUFBTSxDQUFDbnpDLEtBQVAsQ0FBYWdjLFFBQWIsS0FBMEIsUUFBM0IsSUFDSyxDQUFDLEdBQUcxaUIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ2EsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHaDdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLDZCQUE1QixDQUEzQixJQUF5RixHQUF6RixHQUErRixDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixRQUE1QixDQUEzQixDQUEvRixHQUFtSyxLQUFuTixFQUEwTjtNQUFFO01BQTVOLENBRDdCLElBRUsrd0MsTUFBTSxDQUFDbnpDLEtBQVAsQ0FBYWdjLFFBQWIsS0FBMEIsYUFBM0IsSUFDSyxDQUFDLEdBQUcxaUIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ2MsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHajdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLDZCQUE1QixDQUEzQixJQUF5RixHQUF6RixHQUErRixDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixhQUE1QixDQUEzQixDQUEvRixHQUF3SyxLQUF4TixFQUErTjtNQUFFO01BQWpPLENBRDdCLEtBRUssQ0FBQyxHQUFHOUksS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ2UsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHbDdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLDZCQUE1QixDQUEzQixJQUF5RixHQUF6RixHQUErRixDQUFDLEdBQUc5SSxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixRQUE1QixDQUEzQixDQUEvRixHQUFtSyxLQUFuTixFQUEwTjtNQUFFO01BQTVOLENBRjdCLENBUCtCLENBQWpELENBaEI2QyxDQUFqRCxDQUQ2QyxFQTZCN0MsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDZ0MsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHbjdDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2lDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3A3QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLGNBQUQsQ0FBN0IsRUFBK0M7UUFDM0MsU0FBTyx5QkFEb0M7UUFFM0MzcEMsSUFBSSxFQUFFMnBDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK2EsTUFBakIsQ0FBd0IsU0FBeEIsQ0FGcUM7UUFHM0N6YixJQUFJLEVBQUUsRUFIcUM7UUFJM0N5ekMsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO1VBQUUsT0FBUVosTUFBTSxDQUFDejZCLFdBQVAsR0FBcUIsS0FBN0I7UUFBc0MsQ0FBcEY7TUFKa0MsQ0FBL0MsRUFLRyxJQUxILEVBS1M7TUFBRTtNQUxYLEVBS3dCLENBQUMsTUFBRCxDQUx4QixDQUQ4QyxFQU85QyxDQUFDLEdBQUdwZixLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLGNBQUQsQ0FBN0IsRUFBK0M7UUFDM0MsU0FBTyxPQURvQztRQUUzQzNwQyxJQUFJLEVBQUUycEMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrYSxNQUFqQixDQUF3QixRQUF4QixDQUZxQztRQUczQ3piLElBQUksRUFBRSxTQUhxQztRQUkzQ3l6QyxPQUFPLEVBQUVSLE1BQU0sQ0FBQ3Q2QjtNQUoyQixDQUEvQyxFQUtHLElBTEgsRUFLUztNQUFFO01BTFgsRUFLd0IsQ0FBQyxNQUFELENBTHhCLENBUDhDLENBQWxELENBRDhDLENBQWxELENBN0I2QyxDQUFQO0lBNkN0QyxDQTdDSyxDQURWO0lBK0NDdGEsQ0FBQyxFQUFFO0lBQUU7O0VBL0NOLENBSkgsRUFvREc7RUFBRTtFQXBETCxFQW9Ea0IsQ0FBQyxjQUFELEVBQWlCLFNBQWpCLENBcERsQixDQWRnRixDQUFwRCxFQW1FN0I7RUFBRztFQW5FMEIsQ0FBaEM7QUFvRUg7O0FBQ0RuRixjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQzFGYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJNDZDLFlBQVksR0FBRyxTQUFmQSxZQUFlLENBQVVoMUMsQ0FBVixFQUFhO0VBQUUsT0FBUSxDQUFDLEdBQUc3RixLQUFLLENBQUM4NkMsV0FBVixFQUF1QixpQkFBdkIsR0FBMkNqMUMsQ0FBQyxHQUFHQSxDQUFDLEVBQWhELEVBQW9ELENBQUMsR0FBRzdGLEtBQUssQ0FBQys2QyxVQUFWLEdBQXBELEVBQTZFbDFDLENBQXJGO0FBQTBGLENBQTVIOztBQUNBLElBQUlrekMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUVydUMsR0FBRyxFQUFFO0FBQVAsQ0FBakI7QUFDQSxJQUFJdXVDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRyxDQUFDLE1BQUQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRXp1QyxHQUFHLEVBQUU7QUFBUCxDQUFqQjtBQUNBLElBQUkwdUMsVUFBVSxHQUFHLENBQUMsTUFBRCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFM3VDLEdBQUcsRUFBRTtBQUFQLENBQWpCOztBQUNBLFNBQVNpdUMsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUdoNkMsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFNBQTVCLENBQXpCOztFQUNBLE9BQVEsQ0FBQyxHQUFHajZDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFDakUsU0FBTyxDQUFDLEdBQUduNkMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxRQUFELEVBQVdoRCxNQUFNLENBQUNqM0IsT0FBbEIsQ0FBMUI7RUFEMEQsQ0FBckMsRUFFN0IsQ0FDQyxDQUFDLEdBQUc1aUIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQ2pDLFNBQU8sNkJBRDBCO0lBRWpDa0IsT0FBTyxFQUFFUixNQUFNLENBQUM5MkI7RUFGaUIsQ0FBckMsRUFHRyxDQUNDLENBQUMsR0FBRy9pQixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNKLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBRy80QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDLFNBQU8sQ0FBQyxHQUFHaDZDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsZ0JBQUQsRUFBbUJoRCxNQUFNLENBQUNoM0IsU0FBMUIsQ0FBMUIsQ0FEZ0M7SUFFdkN6UyxJQUFJLEVBQUU7RUFGaUMsQ0FBM0MsRUFHRyxJQUhILEVBR1M7RUFBRTtFQUhYLEVBR3dCLENBQUMsT0FBRCxDQUh4QixDQUQ2QyxFQUs3QyxDQUFDLEdBQUdwUSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQUMsR0FBR2g1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDbDNCLFNBQWxDLENBQWpELEVBQStGO0VBQUU7RUFBakcsQ0FMNkMsQ0FBakQsQ0FERCxFQVFDLENBQUMsR0FBRzNpQixLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDLFNBQU8sQ0FBQyxHQUFHaDZDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsd0RBQUQsRUFBMkQ7TUFBRSxjQUFjaEQsTUFBTSxDQUFDLzJCLE1BQXZCO01BQStCLElBQUksQ0FBQysyQixNQUFNLENBQUMvMkI7SUFBM0MsQ0FBM0QsQ0FBMUIsQ0FEZ0M7SUFFdkMxUyxJQUFJLEVBQUU7RUFGaUMsQ0FBM0MsRUFHRyxJQUhILEVBR1M7RUFBRTtFQUhYLEVBR3dCLENBQUMsT0FBRCxDQUh4QixDQVJELENBSEgsQ0FERCxFQWlCQyxDQUFDLEdBQUdwUSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNGLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2o1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsRUFDckMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQmpELE1BQU0sQ0FBQ3g5QixNQUE3QixFQUFxQyxVQUFVaE8sS0FBVixFQUFpQjFKLENBQWpCLEVBQW9CO0lBQ3RJLE9BQVEsQ0FBQyxHQUFHM0UsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztNQUNoRXR2QyxHQUFHLEVBQUVsRyxDQUQyRDtNQUVoRSxTQUFPO0lBRnlELENBQXBDLEVBRzdCLENBQ0UwSixLQUFLLENBQUNWLFFBQU4sQ0FBZXhILE1BQWYsR0FBd0IsQ0FBekIsSUFDTyxDQUFDLEdBQUduRyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDakIsVUFBckMsRUFBaUQsQ0FDeEUsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQ2s5QyxlQUFWLEVBQTJCLENBQUMsR0FBR2w5QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnJzQyxLQUFLLENBQUM3RSxPQUFqQyxJQUE0QyxHQUF2RSxFQUE0RTtJQUFFO0lBQTlFLENBRHdFLEVBRXhFLENBQUMsR0FBR3hKLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ0MsVUFBcEMsRUFBZ0QsRUFDM0MsQ0FBQyxHQUFHcDVDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQnp1QyxLQUFLLENBQUNWLFFBQTVCLEVBQXNDLFVBQVUyakIsT0FBVixFQUFtQmpmLEtBQW5CLEVBQTBCO01BQzdJLE9BQVEsQ0FBQyxHQUFHclMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztRQUFFdHZDLEdBQUcsRUFBRXdIO01BQVAsQ0FBcEMsRUFBb0QsQ0FDaEYsQ0FBQyxHQUFHclMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO1FBQy9CejJDLElBQUksRUFBRTJMLEtBQUssQ0FBQ1YsUUFBTixDQUFlMEUsS0FBZixFQUFzQjR0QztNQURHLENBQW5DLEVBRUcsQ0FBQyxHQUFHamdELEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCcHBCLE9BQU8sQ0FBQzluQixPQUFuQyxDQUZILEVBRWdEO01BQUU7TUFGbEQsRUFFcUU2dkMsVUFGckUsQ0FEZ0YsQ0FBcEQsQ0FBaEM7SUFLSCxDQU5nRixDQUFwRCxFQU16QjtJQUFJO0lBTnFCLENBRGUsRUFBaEQsQ0FGd0UsQ0FBakQsQ0FEL0IsSUFhT2hyQyxLQUFLLENBQUNWLFFBQU4sQ0FBZXhILE1BQWYsS0FBMEIsQ0FBM0IsSUFDSyxDQUFDLEdBQUduRyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDYixVQUFyQyxFQUFpRCxDQUN4RSxDQUFDLEdBQUd0NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO01BQy9CejJDLElBQUksRUFBRTJMLEtBQUssQ0FBQ1YsUUFBTixDQUFlLEdBQWYsRUFBb0JzeUM7SUFESyxDQUFuQyxFQUVHLENBQUMsR0FBR2pnRCxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnJzQyxLQUFLLENBQUM3RSxPQUFqQyxDQUZILEVBRThDO0lBQUU7SUFGaEQsRUFFbUUrdkMsVUFGbkUsQ0FEd0UsQ0FBakQsQ0FEN0IsS0FNSyxDQUFDLEdBQUd2NUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ1gsVUFBckMsRUFBaUQsQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCcnNDLEtBQUssQ0FBQzdFLE9BQWpDLENBQWpELEVBQTRGO0lBQUU7SUFBOUYsQ0FON0IsQ0FkUCxDQUg2QixDQUFoQztFQXlCSCxDQTFCZ0YsQ0FBcEQsRUEwQnpCO0VBQUk7RUExQnFCLENBRFMsRUFBMUMsQ0FENkMsQ0FBakQsQ0FqQkQsQ0FGNkIsRUFrRDdCO0VBQUU7RUFsRDJCLENBQWhDO0FBbURIOztBQUNEMUosY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUNwRWE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUcsQ0FBQyxNQUFELENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCOztBQUNBLFNBQVNGLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSW1HLGNBQWMsR0FBRyxDQUFDLEdBQUdsZ0QsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLEtBQTVCLENBQXJCOztFQUNBLE9BQVEsQ0FBQyxHQUFHajZDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7SUFDL0R6M0MsSUFBSSxFQUFFZzNDLElBQUksQ0FBQ2wzQyxJQURvRDtJQUUvRCxTQUFPLENBQUMsR0FBR3hDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsNEdBQUQsRUFBK0c7TUFBRSxlQUFlbkQsSUFBSSxDQUFDNy9CLE9BQXRCO01BQStCLGVBQWUsQ0FBQzYvQixJQUFJLENBQUM3L0I7SUFBcEQsQ0FBL0csQ0FBMUI7RUFGd0QsQ0FBbkMsRUFHN0IsQ0FDQyxDQUFDLEdBQUc3WixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQUMsR0FBR2g1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmhCLElBQUksQ0FBQy80QixXQUFoQyxDQUFqRCxFQUErRjtFQUFFO0VBQWpHLENBREQsRUFFRSs0QixJQUFJLENBQUM3L0IsT0FBTixJQUNPLENBQUMsR0FBRzdaLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QnVGLGNBQXZCLEVBQXVDO0lBQzlEcjFDLEdBQUcsRUFBRSxDQUR5RDtJQUU5RHFGLElBQUksRUFBRXdwQyxJQUFJLENBQUM3L0IsT0FGbUQ7SUFHOUR6SixJQUFJLEVBQUU7RUFId0QsQ0FBdkMsRUFJeEIsSUFKd0IsRUFJbEI7RUFBRTtFQUpnQixFQUlILENBQUMsTUFBRCxDQUpHLENBRC9CLElBTU0sQ0FBQyxHQUFHcFEsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBUlAsQ0FINkIsRUFZN0I7RUFBRztFQVowQixFQVlOeEIsVUFaTSxDQUFoQztBQWFIOztBQUNEajVDLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDdEJhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHLENBQUMsV0FBRCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlFLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxTQUFTWCxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELElBQUlDLGtCQUFrQixHQUFHLENBQUMsR0FBR2g2QyxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsU0FBNUIsQ0FBekI7O0VBQ0EsT0FBUSxDQUFDLEdBQUdqNkMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FDL0UsQ0FBQ1AsTUFBTSxDQUFDMTNCLGFBQVAsQ0FBcUJvQixZQUF0QixJQUFzQ3MyQixNQUFNLENBQUMxM0IsYUFBUCxDQUFxQjlXLE1BQXJCLEtBQWdDLE9BQXZFLElBQ08sQ0FBQyxHQUFHckwsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCZCxNQUFNLENBQUMsY0FBRCxDQUE3QixFQUErQztJQUN0RWh2QyxHQUFHLEVBQUUsQ0FEaUU7SUFFdEUsU0FBTyxFQUYrRDtJQUd0RXFGLElBQUksRUFBRTJwQyxNQUFNLENBQUNoZ0MsT0FIeUQ7SUFJdEVqVCxJQUFJLEVBQUUsU0FKZ0U7SUFLdEV3SixJQUFJLEVBQUUsZ0JBTGdFO0lBTXRFaXFDLE9BQU8sRUFBRVIsTUFBTSxDQUFDNTNCO0VBTnNELENBQS9DLEVBT3hCLElBUHdCLEVBT2xCO0VBQUU7RUFQZ0IsRUFPSCxDQUFDLE1BQUQsQ0FQRyxDQUQvQixJQVNNLENBQUMsR0FBR2ppQixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FWMEUsRUFXaEYsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsT0FBRCxDQUE3QixFQUF3QztJQUNwQyxnQkFBZ0JBLE1BQU0sQ0FBQzE1QixZQURhO0lBRXBDOUgsS0FBSyxFQUFFLEtBRjZCO0lBR3BDa2xDLE9BQU8sRUFBRTFELE1BQU0sQ0FBQ3g1QjtFQUhvQixDQUF4QyxFQUlHO0lBQ0MsV0FBUyxDQUFDLEdBQUdyZ0IsS0FBSyxDQUFDNDZDLE9BQVYsRUFBbUIsWUFBWTtNQUFFLE9BQU8sQ0FDN0MsQ0FBQyxHQUFHNTZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0osVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0gsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7UUFDdkMsU0FBTyxDQUFDLEdBQUdoNkMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyxxQkFBRCxFQUF3QjtVQUNqRCxrQkFBa0JoRCxNQUFNLENBQUNwNUIsa0JBQVAsQ0FBMEJHLFVBREs7VUFFakQsbUJBQW1CLENBQUNpNUIsTUFBTSxDQUFDcDVCLGtCQUFQLENBQTBCRztRQUZHLENBQXhCLENBQTFCLENBRGdDO1FBS3ZDeFEsSUFBSSxFQUFFeXBDLE1BQU0sQ0FBQ3A1QixrQkFBUCxDQUEwQnJRO01BTE8sQ0FBM0MsRUFNRyxJQU5ILEVBTVM7TUFBRTtNQU5YLEVBTXdCLENBQUMsT0FBRCxFQUFVLE1BQVYsQ0FOeEIsQ0FENkMsRUFRN0MsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DLElBQW5DLEVBQXlDLENBQUMsR0FBR241QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDcDVCLGtCQUFQLENBQTBCdkksS0FBckQsQ0FBekMsRUFBc0c7TUFBRTtNQUF4RyxDQVI2QyxDQUFqRCxDQUQ2QyxFQVc3QyxDQUFDLEdBQUdsWSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFDakMsU0FBTyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyx3QkFBRCxFQUEyQjtVQUNwRCxXQUFXaEQsTUFBTSxDQUFDcDVCLGtCQUFQLENBQTBCRyxVQURlO1VBRXBELGdCQUFnQixDQUFDaTVCLE1BQU0sQ0FBQ3A1QixrQkFBUCxDQUEwQkc7UUFGUyxDQUEzQixDQUExQjtNQUQwQixDQUFyQyxFQUtHLENBQ0MsQ0FBQyxHQUFHNWdCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztRQUNqQyxTQUFPLHdCQUQwQjtRQUVqQzRGLFNBQVMsRUFBRWxGLE1BQU0sQ0FBQ3A1QixrQkFBUCxDQUEwQkU7TUFGSixDQUFyQyxFQUdHLElBSEgsRUFHUztNQUFFO01BSFgsRUFHd0JzNEIsVUFIeEIsQ0FERCxDQUxILEVBVUc7TUFBRTtNQVZMLENBWDZDLENBQWpELENBRDZDLEVBd0I3QyxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDQyxVQUFyQyxFQUFpRCxDQUM1QyxDQUFDUyxNQUFNLENBQUN2MkIsc0JBQVQsSUFDTyxDQUFDLEdBQUd0akIsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQzI2QyxXQUFWLEVBQXVCZCxNQUFNLENBQUMsY0FBRCxDQUE3QixFQUErQztRQUN0RWh2QyxHQUFHLEVBQUUsQ0FEaUU7UUFFdEUsU0FBTyx5QkFGK0Q7UUFHdEVxRixJQUFJLEVBQUUycEMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrYSxNQUFqQixDQUF3QixhQUF4QixFQUF1QyxjQUF2QyxDQUhnRTtRQUl0RXpiLElBQUksRUFBRSxFQUpnRTtRQUt0RXl6QyxPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7VUFBRSxPQUFRWixNQUFNLENBQUMxNUIsWUFBUCxHQUFzQixLQUE5QjtRQUF1QyxDQUFyRjtNQUw2RCxDQUEvQyxFQU14QixJQU53QixFQU1sQjtNQUFFO01BTmdCLEVBTUgsQ0FBQyxNQUFELENBTkcsQ0FEL0IsSUFRTSxDQUFDLEdBQUduZ0IsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBVHVDLEVBVTdDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLGNBQUQsQ0FBN0IsRUFBK0M7UUFDM0MsU0FBTyxPQURvQztRQUUzQzNwQyxJQUFJLEVBQUUycEMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrYSxNQUFqQixDQUF3QixVQUF4QixDQUZxQztRQUczQ3piLElBQUksRUFBRSxTQUhxQztRQUkzQ3l6QyxPQUFPLEVBQUVSLE1BQU0sQ0FBQzMzQjtNQUoyQixDQUEvQyxFQUtHLElBTEgsRUFLUztNQUFFO01BTFgsRUFLd0IsQ0FBQyxNQUFELENBTHhCLENBVjZDLENBQWpELENBRDZDLENBQWpELENBeEI2QyxDQUFQO0lBMkN0QyxDQTNDSyxDQURWO0lBNkNDamQsQ0FBQyxFQUFFO0lBQUU7O0VBN0NOLENBSkgsRUFrREc7RUFBRTtFQWxETCxFQWtEa0IsQ0FBQyxjQUFELEVBQWlCLFNBQWpCLENBbERsQixDQVhnRixFQThEL0U0MEMsTUFBTSxDQUFDMTNCLGFBQVAsQ0FBcUJvQixZQUF0QixJQUNPLENBQUMsR0FBR3ZqQixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxjQUFELENBQTdCLEVBQStDO0lBQ3RFaHZDLEdBQUcsRUFBRSxDQURpRTtJQUV0RSxTQUFPLE1BRitEO0lBR3RFcUYsSUFBSSxFQUFFMnBDLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK2EsTUFBakIsQ0FBd0IsV0FBeEIsQ0FIZ0U7SUFJdEV6YixJQUFJLEVBQUUsU0FKZ0U7SUFLdEV3SixJQUFJLEVBQUUsY0FMZ0U7SUFNdEVpcUMsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBUVosTUFBTSxDQUFDdjNCLGNBQVAsR0FBd0IsSUFBaEM7SUFBd0MsQ0FBdEY7RUFONkQsQ0FBL0MsRUFPeEIsSUFQd0IsRUFPbEI7RUFBRTtFQVBnQixFQU9ILENBQUMsTUFBRCxDQVBHLENBRC9CLElBU00sQ0FBQyxHQUFHdGlCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQXZFMEUsRUF3RWhGLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLE9BQUQsQ0FBN0IsRUFBd0M7SUFDcEMsZ0JBQWdCQSxNQUFNLENBQUN2M0IsY0FEYTtJQUVwQ2pLLEtBQUssRUFBRSxLQUY2QjtJQUdwQ2tsQyxPQUFPLEVBQUUxRCxNQUFNLENBQUN0M0I7RUFIb0IsQ0FBeEMsRUFJRztJQUNDLFdBQVMsQ0FBQyxHQUFHdmlCLEtBQUssQ0FBQzQ2QyxPQUFWLEVBQW1CLFlBQVk7TUFBRSxPQUFPLENBQzdDLENBQUMsR0FBRzU2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNFLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3I1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNHLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3Q1QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO1FBQ3ZDLFNBQU8scUNBRGdDO1FBRXZDNXBDLElBQUksRUFBRTtNQUZpQyxDQUEzQyxDQUQ2QyxFQUs3QyxDQUFDLEdBQUdwUSxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUMsSUFBbkMsRUFBeUMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQithLE1BQWpCLENBQXdCLFdBQXhCLENBQTNCLElBQW1FLEdBQW5FLEdBQXlFLENBQUMsR0FBR3JpQixLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixjQUE1QixDQUEzQixDQUFsSCxFQUEyTDtNQUFFO01BQTdMLENBTDZDLENBQWpELENBRDZDLEVBUTdDLENBQUMsR0FBRzlJLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0ksVUFBckMsRUFBaUQsQ0FBQyxHQUFHdjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQithLE1BQWpCLENBQXdCLHdCQUF4QixFQUFrRCxxQkFBbEQsQ0FBM0IsSUFBdUcsSUFBeEosRUFBOEo7TUFBRTtNQUFoSyxDQVI2QyxDQUFqRCxDQUQ2QyxFQVc3QyxDQUFDLEdBQUdyaUIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSyxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd4NUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDTSxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd6NUMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJULE1BQU0sQ0FBQyxjQUFELENBQTdCLEVBQStDO1FBQzNDLFNBQU8seUJBRG9DO1FBRTNDM3BDLElBQUksRUFBRTJwQyxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQithLE1BQWpCLENBQXdCLFNBQXhCLENBRnFDO1FBRzNDemIsSUFBSSxFQUFFLEVBSHFDO1FBSTNDeXpDLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtVQUFFLE9BQVFaLE1BQU0sQ0FBQ3YzQixjQUFQLEdBQXdCLEtBQWhDO1FBQXlDLENBQXZGO01BSmtDLENBQS9DLEVBS0csSUFMSCxFQUtTO01BQUU7TUFMWCxFQUt3QixDQUFDLE1BQUQsQ0FMeEIsQ0FEOEMsRUFPOUMsQ0FBQyxHQUFHdGlCLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsY0FBRCxDQUE3QixFQUErQztRQUMzQyxTQUFPLE9BRG9DO1FBRTNDM3BDLElBQUksRUFBRTJwQyxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQithLE1BQWpCLENBQXdCLFdBQXhCLENBRnFDO1FBRzNDemIsSUFBSSxFQUFFLFNBSHFDO1FBSTNDeXpDLE9BQU8sRUFBRVIsTUFBTSxDQUFDcjNCO01BSjJCLENBQS9DLEVBS0csSUFMSCxFQUtTO01BQUU7TUFMWCxFQUt3QixDQUFDLE1BQUQsQ0FMeEIsQ0FQOEMsQ0FBbEQsQ0FENkMsQ0FBakQsQ0FYNkMsQ0FBUDtJQTJCdEMsQ0EzQkssQ0FEVjtJQTZCQ3ZkLENBQUMsRUFBRTtJQUFFOztFQTdCTixDQUpILEVBa0NHO0VBQUU7RUFsQ0wsRUFrQ2tCLENBQUMsY0FBRCxFQUFpQixTQUFqQixDQWxDbEIsQ0F4RWdGLEVBMkcvRTQwQyxNQUFNLENBQUN2NkIsTUFBUixJQUNPLENBQUMsR0FBR3RmLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QmQsTUFBTSxDQUFDLFFBQUQsQ0FBN0IsRUFBeUM7SUFDaEVodkMsR0FBRyxFQUFFLENBRDJEO0lBRWhFcUYsSUFBSSxFQUFFMnBDLE1BQU0sQ0FBQ3Q1QixVQUZtRDtJQUdoRSxTQUFPLENBQUMsR0FBR3ZnQixLQUFLLENBQUM2OEMsY0FBVixFQUEwQjtNQUFFLGtCQUFrQmhELE1BQU0sQ0FBQ3Y2QjtJQUEzQixDQUExQjtFQUh5RCxDQUF6QyxFQUl4QixJQUp3QixFQUlsQjtFQUFFO0VBSmdCLEVBSUgsQ0FBQyxNQUFELEVBQVMsT0FBVCxDQUpHLENBRC9CLElBTU0sQ0FBQyxHQUFHdGYsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBakgwRSxDQUFwRCxFQWtIN0I7RUFBRztFQWxIMEIsQ0FBaEM7QUFtSEg7O0FBQ0R6NkMsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUNwSWE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFDYnh1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUl5dUMsVUFBVSxHQUFHLENBQUMsTUFBRCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUl1QixXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsU0FBU25DLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSW9HLHFCQUFxQixHQUFHLENBQUMsR0FBR25nRCxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsWUFBNUIsQ0FBNUI7O0VBQ0EsSUFBSUQsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHaDZDLEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixTQUE1QixDQUF6Qjs7RUFDQSxPQUFRLENBQUMsR0FBR2o2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcEIsVUFBckMsRUFBaUQsQ0FDN0UsQ0FBQyxHQUFHLzRDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0gsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCNkYscUJBQXZCLEVBQThDO0lBQUU1OUMsSUFBSSxFQUFFbTNDLElBQUksQ0FBQy9zQztFQUFiLENBQTlDLEVBQTZFLElBQTdFLEVBQW1GO0VBQUU7RUFBckYsRUFBa0csQ0FBQyxNQUFELENBQWxHLENBRDZDLENBQWpELENBRDZFLEVBSTdFLENBQUMsR0FBRzNNLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0YsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHajVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0QsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0MsVUFBckMsRUFBaUQsQ0FDNUNNLElBQUksQ0FBQ2gyQixRQUFOLElBQ08sQ0FBQyxHQUFHMWpCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNkLFVBQXJDLEVBQWlELENBQ3hFLENBQUMsR0FBR3I1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7SUFBRXoyQyxJQUFJLEVBQUVnM0MsSUFBSSxDQUFDaDJCO0VBQWIsQ0FBbkMsRUFBNEQsQ0FDeEQsQ0FBQyxHQUFHMWpCLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFBRTVwQyxJQUFJLEVBQUU7RUFBUixDQUEzQyxDQUR3RCxDQUE1RCxFQUVHO0VBQUU7RUFGTCxFQUVrQmtwQyxVQUZsQixDQUR3RSxDQUFqRCxDQUQvQixJQU1NLENBQUMsR0FBR3Q1QyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FQdUMsRUFRN0MsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0ksVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHdjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ0ssVUFBcEMsRUFBZ0QsQ0FDNUMsQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ00sV0FBdEMsRUFBbUQsQ0FBQyxHQUFHejVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDeGhDLEtBQWhDLENBQW5ELEVBQTJGO0VBQUU7RUFBN0YsQ0FENEMsRUFFNUMsQ0FBQyxHQUFHbFksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDNkIsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHaDdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDeGhDLEtBQWhDLENBQW5ELEVBQTJGO0VBQUU7RUFBN0YsQ0FGNEMsQ0FBaEQsQ0FENkMsQ0FBakQsQ0FSNkMsQ0FBakQsQ0FENkMsQ0FBakQsQ0FENkMsRUFrQjdDLENBQUMsR0FBR2xZLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzhCLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR2o3QyxLQUFLLENBQUNzL0MsVUFBVixFQUFzQjVGLElBQUksQ0FBQzZGLE1BQTNCLEVBQW1DLFNBQW5DLENBRDhDLENBQWxELENBbEI2QyxDQUFqRCxDQUo2RSxDQUFqRCxDQUFoQztBQTJCSDs7QUFDRHovQyxjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ2xEYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJNDZDLFlBQVksR0FBRyxTQUFmQSxZQUFlLENBQVVoMUMsQ0FBVixFQUFhO0VBQUUsT0FBUSxDQUFDLEdBQUc3RixLQUFLLENBQUM4NkMsV0FBVixFQUF1QixpQkFBdkIsR0FBMkNqMUMsQ0FBQyxHQUFHQSxDQUFDLEVBQWhELEVBQW9ELENBQUMsR0FBRzdGLEtBQUssQ0FBQys2QyxVQUFWLEdBQXBELEVBQTZFbDFDLENBQXJGO0FBQTBGLENBQTVIOztBQUNBLElBQUlrekMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCOztBQUNBLElBQUlDLFVBQVUsR0FBRyxhQUFjNEIsWUFBWSxDQUFDLFlBQVk7RUFBRTtFQUFjLE9BQU8sQ0FBQyxHQUFHNzZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUFFLFNBQU87RUFBVCxDQUFyQyxFQUF5RSxDQUNwSixhQUFjLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFBRSxTQUFPO0VBQVQsQ0FBckMsRUFBd0UsQ0FDbEYsYUFBYyxDQUFDLEdBQUduNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQUUsU0FBTztFQUFULENBQXJDLENBRG9FLENBQXhFLENBRHNJLENBQXpFLEVBSTVFLENBQUM7RUFBRTtFQUp5RSxDQUFQO0FBSWpELENBSm9CLENBQTNDOztBQUtBLElBQUlELFVBQVUsR0FBRyxDQUFDLFlBQUQsRUFBZSxVQUFmLENBQWpCOztBQUNBLFNBQVNKLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsT0FBUSxDQUFDLEdBQUcvNUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3BCLFVBQXJDLEVBQWlELENBQzdFLENBQUMsR0FBRy80QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQzdDQyxVQUQ2QyxFQUU3QyxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQ2pDLFNBQU8scUJBRDBCO0lBRWpDLGNBQWNTLE1BQU0sQ0FBQzFwQyxJQUZZO0lBR2pDLFlBQVkycEMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ3QixVQUFqQixDQUE0QixjQUE1QjtFQUhxQixDQUFyQyxFQUlHLElBSkgsRUFJUztFQUFFO0VBSlgsRUFJd0Jvd0MsVUFKeEIsQ0FGNkMsQ0FBakQsQ0FENkUsQ0FBakQsQ0FBaEM7QUFVSDs7QUFDRHA1QyxjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ3pCYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJNDZDLFlBQVksR0FBRyxTQUFmQSxZQUFlLENBQVVoMUMsQ0FBVixFQUFhO0VBQUUsT0FBUSxDQUFDLEdBQUc3RixLQUFLLENBQUM4NkMsV0FBVixFQUF1QixpQkFBdkIsR0FBMkNqMUMsQ0FBQyxHQUFHQSxDQUFDLEVBQWhELEVBQW9ELENBQUMsR0FBRzdGLEtBQUssQ0FBQys2QyxVQUFWLEdBQXBELEVBQTZFbDFDLENBQXJGO0FBQTBGLENBQTVIOztBQUNBLElBQUlrekMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUU1dUMsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJbXdDLFdBQVcsR0FBRztFQUFFbndDLEdBQUcsRUFBRTtBQUFQLENBQWxCOztBQUNBLFNBQVNpdUMsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUdoNkMsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFNBQTVCLENBQXpCOztFQUNBLE9BQVEsQ0FBQyxHQUFHajZDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNwQixVQUFyQyxFQUFpRCxDQUM3RSxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQ2pDLFNBQU8sQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsa0NBQUQsRUFBcUM7TUFDOUQsdUJBQXVCaEQsTUFBTSxDQUFDOTFCLFVBRGdDO01BRTlELHFCQUFxQixDQUFDODFCLE1BQU0sQ0FBQzkxQjtJQUZpQyxDQUFyQyxDQUExQjtFQUQwQixDQUFyQyxFQUtHLENBQ0MsQ0FBQyxHQUFHL2pCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0gsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0YsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHajVDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxnQ0FEZ0M7SUFFdkM1cEMsSUFBSSxFQUFFO0VBRmlDLENBQTNDLENBRDZDLEVBSzdDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0QsVUFBckMsRUFBaUQsQ0FBQyxHQUFHbDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUNoakMsU0FBUCxDQUFpQjFRLE1BQWpCLEdBQTBCMHpDLE1BQU0sQ0FBQ3AxQixpQkFBNUQsSUFBaUYsR0FBakYsR0FBdUYsQ0FBQyxHQUFHemtCLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLGNBQTVCLENBQTNCLENBQXhJLEVBQWlOO0VBQUU7RUFBbk4sQ0FMNkMsQ0FBakQsQ0FENkMsRUFRN0MsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO0lBQ3BDLFNBQU8sb0JBRDZCO0lBRXBDa0IsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBUVosTUFBTSxDQUFDNzlCLFdBQVAsRUFBUjtJQUFnQyxDQUE5RTtFQUYyQixDQUF4QyxFQUdHLENBQUMsR0FBR2hjLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQndCLFVBQWpCLENBQTRCLE1BQTVCLENBQTNCLENBSEgsRUFHb0U7RUFBRTtFQUh0RSxDQVI2QyxDQUFqRCxDQURELENBTEgsRUFtQkc7RUFBRTtFQW5CTCxDQUQ2RSxFQXFCN0UsQ0FBQyxHQUFHOUksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQ2pDLFNBQU8sQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMsK0JBQUQsRUFBa0M7TUFDM0QscUJBQXFCaEQsTUFBTSxDQUFDOTFCLFVBRCtCO01BRTNELHVCQUF1QixDQUFDODFCLE1BQU0sQ0FBQzkxQjtJQUY0QixDQUFsQyxDQUExQjtFQUQwQixDQUFyQyxFQUtHLENBQ0MsQ0FBQyxHQUFHL2pCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0MsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHcDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0UsVUFBckMsRUFBaUQsQ0FDNUNRLE1BQU0sQ0FBQ2hqQyxTQUFQLENBQWlCMVEsTUFBbEIsSUFDTyxDQUFDLEdBQUduRyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQzVEdHZDLEdBQUcsRUFBRSxDQUR1RDtJQUU1RCxTQUFPLENBQUMsR0FBRzdLLEtBQUssQ0FBQzY4QyxjQUFWLEVBQTBCLENBQUMseUJBQUQsRUFDN0JoRCxNQUFNLENBQUM1MUIsU0FBUCxLQUFxQixXQUFyQixHQUNNLG9DQUROLEdBRU0sNkJBSHVCLENBQTFCLENBRnFEO0lBTzVEbzJCLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtNQUFFLE9BQVFaLE1BQU0sQ0FBQzUxQixTQUFQLEdBQW1CLFdBQTNCO0lBQTBDLENBQXhGO0VBUG1ELENBQXJDLEVBUXhCLENBQUMsR0FBR2prQixLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUIrYSxNQUFqQixDQUF3Qix1QkFBeEIsQ0FBM0IsQ0FSd0IsRUFRc0Q7RUFBRTtFQVJ4RCxDQUQvQixJQVVNLENBQUMsR0FBR3JpQixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FYdUMsRUFZNUNWLE1BQU0sQ0FBQzcxQixZQUFSLElBQ08sQ0FBQyxHQUFHaGtCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFDNUR0dkMsR0FBRyxFQUFFLENBRHVEO0lBRTVELFNBQU8sQ0FBQyxHQUFHN0ssS0FBSyxDQUFDNjhDLGNBQVYsRUFBMEIsQ0FBQyx5QkFBRCxFQUM3QmhELE1BQU0sQ0FBQzUxQixTQUFQLEtBQXFCLFFBQXJCLEdBQ00sb0NBRE4sR0FFTSw2QkFIdUIsQ0FBMUIsQ0FGcUQ7SUFPNURvMkIsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBUVosTUFBTSxDQUFDNTFCLFNBQVAsR0FBbUIsUUFBM0I7SUFBdUMsQ0FBckY7RUFQbUQsQ0FBckMsRUFReEIsQ0FBQyxHQUFHamtCLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQithLE1BQWpCLENBQXdCLG9CQUF4QixDQUEzQixDQVJ3QixFQVFtRDtFQUFFO0VBUnJELENBRC9CLElBVU0sQ0FBQyxHQUFHcmlCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQXRCdUMsQ0FBakQsQ0FENkMsRUF5QjdDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNHLFVBQXJDLEVBQWlELENBQzVDTyxNQUFNLENBQUM1MUIsU0FBUCxJQUFvQixRQUFyQixJQUNPLENBQUMsR0FBR2prQixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO0lBQy9EdHZDLEdBQUcsRUFBRSxDQUQwRDtJQUUvRCxTQUFPLG1CQUZ3RDtJQUcvRHd2QyxPQUFPLEVBQUVSLE1BQU0sQ0FBQ24xQjtFQUgrQyxDQUF4QyxFQUl4QixDQUNDLENBQUMsR0FBRzFrQixLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDLFNBQU8sd0JBRGdDO0lBRXZDNXBDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxDQURELEVBS0MsQ0FBQyxHQUFHcFEsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDSSxVQUF0QyxFQUFrRCxDQUFDLEdBQUd2NUMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCK2EsTUFBakIsQ0FBd0IsUUFBeEIsQ0FBM0IsQ0FBbEQsRUFBaUg7RUFBRTtFQUFuSCxDQUxELENBSndCLENBRC9CLElBWU0sQ0FBQyxHQUFHcmlCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWJ1QyxFQWM3QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO0lBQ3BDLFNBQU8sbUNBRDZCO0lBRXBDa0IsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBUVosTUFBTSxDQUFDNzlCLFdBQVAsRUFBUjtJQUFnQyxDQUE5RTtFQUYyQixDQUF4QyxFQUdHLENBQ0MsQ0FBQyxHQUFHaGMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QyxTQUFPLHFCQURnQztJQUV2QzVwQyxJQUFJLEVBQUU7RUFGaUMsQ0FBM0MsQ0FERCxDQUhILENBZDZDLENBQWpELENBekI2QyxDQUFqRCxDQURELEVBbURDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0ssVUFBckMsRUFBaUQsQ0FDNUNLLE1BQU0sQ0FBQzUxQixTQUFQLEtBQXFCLFdBQXRCLElBQ08sQ0FBQyxHQUFHamtCLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNWLFdBQXJDLEVBQWtELEVBQ3hFLENBQUMsR0FBR3o1QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JqRCxNQUFNLENBQUMxMUIsUUFBN0IsRUFBdUMsVUFBVTlWLEtBQVYsRUFBaUIxSixDQUFqQixFQUFvQjtJQUN4SSxPQUFRLENBQUMsR0FBRzNFLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7TUFDakV0dkMsR0FBRyxFQUFFbEcsQ0FENEQ7TUFFakUsU0FBTyxDQUFDLEdBQUczRSxLQUFLLENBQUM2OEMsY0FBVixFQUEwQjtRQUFFLFFBQVExMUMsTUFBTSxDQUFDeEMsQ0FBRCxDQUFOLElBQWEvRSxNQUFNLENBQUMwUCxJQUFQLENBQVl1cUMsTUFBTSxDQUFDMTFCLFFBQW5CLEVBQTZCaGUsTUFBN0IsR0FBc0M7TUFBN0QsQ0FBMUI7SUFGMEQsQ0FBckMsRUFHN0IsQ0FDRWtJLEtBQUssQ0FBQ2xJLE1BQU4sR0FBZSxDQUFoQixJQUNPLENBQUMsR0FBR25HLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUMyNkMsV0FBVixFQUF1QmQsTUFBTSxDQUFDLFlBQUQsQ0FBN0IsRUFBNkM7TUFDcEVodkMsR0FBRyxFQUFFLENBRCtEO01BRXBFakUsSUFBSSxFQUFFakMsQ0FGOEQ7TUFHcEUwWCxNQUFNLEVBQUVoTztJQUg0RCxDQUE3QyxFQUl4QixJQUp3QixFQUlsQjtJQUFFO0lBSmdCLEVBSUgsQ0FBQyxNQUFELEVBQVMsUUFBVCxDQUpHLENBRC9CLElBTU0sQ0FBQyxHQUFHck8sS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBUFAsQ0FINkIsRUFXN0I7SUFBRTtJQVgyQixDQUFoQztFQVlILENBYmdGLENBQXBELEVBYXpCO0VBQUk7RUFicUIsQ0FENEMsRUFBbEQsQ0FEL0IsSUFpQk0sQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWxCdUMsRUFtQjVDVixNQUFNLENBQUM1MUIsU0FBUCxLQUFxQixRQUF0QixJQUNPLENBQUMsR0FBR2prQixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDYSxXQUFyQyxFQUFrRCxFQUN4RSxDQUFDLEdBQUdoN0MsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCakQsTUFBTSxDQUFDMzFCLGdCQUE3QixFQUErQyxVQUFVM0ssSUFBVixFQUFnQmxILEtBQWhCLEVBQXVCO0lBQy9JLE9BQU8sQ0FBQyxHQUFHclMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQUV0dUMsR0FBRyxFQUFFd0g7SUFBUCxDQUFyQyxFQUFxRCxDQUN2RHpTLE1BQU0sQ0FBQzBQLElBQVAsQ0FBWXVxQyxNQUFNLENBQUM3MUIsWUFBbkIsRUFBaUNqVixPQUFqQyxDQUF5Q3dLLElBQXpDLE1BQW1ELENBQUMsQ0FBckQsSUFDTyxDQUFDLEdBQUd2WixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxnQkFBRCxDQUE3QixFQUFpRDtNQUN4RWh2QyxHQUFHLEVBQUUsQ0FEbUU7TUFFeEUwTyxJQUFJLEVBQUVzZ0MsTUFBTSxDQUFDNzFCLFlBQVAsQ0FBb0J6SyxJQUFwQixDQUZrRTtNQUd4RWxILEtBQUssRUFBRWtIO0lBSGlFLENBQWpELEVBSXhCLElBSndCLEVBSWxCO0lBQUU7SUFKZ0IsRUFJSCxDQUFDLE1BQUQsRUFBUyxPQUFULENBSkcsQ0FEL0IsSUFNTSxDQUFDLEdBQUd2WixLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FQa0QsQ0FBckQsQ0FBUDtFQVNILENBVjRFLENBQXBELEVBVXJCO0VBQUc7RUFWa0IsQ0FEZ0QsRUFBbEQsQ0FEL0IsSUFjTSxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBakN1QyxDQUFqRCxDQW5ERCxDQUxILEVBMkZHO0VBQUU7RUEzRkwsQ0FyQjZFLENBQWpELENBQWhDO0FBa0hIOztBQUNEejZDLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDcklhOztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk0NkMsWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBVWgxQyxDQUFWLEVBQWE7RUFBRSxPQUFRLENBQUMsR0FBRzdGLEtBQUssQ0FBQzg2QyxXQUFWLEVBQXVCLGlCQUF2QixHQUEyQ2oxQyxDQUFDLEdBQUdBLENBQUMsRUFBaEQsRUFBb0QsQ0FBQyxHQUFHN0YsS0FBSyxDQUFDKzZDLFVBQVYsR0FBcEQsRUFBNkVsMUMsQ0FBckY7QUFBMEYsQ0FBNUg7O0FBQ0EsSUFBSWt6QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFDYnZ1QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUl3dUMsVUFBVSxHQUFHO0VBQ2J4dUMsR0FBRyxFQUFFLENBRFE7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJeXVDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjs7QUFDQSxTQUFTVixNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELElBQUlDLGtCQUFrQixHQUFHLENBQUMsR0FBR2g2QyxLQUFLLENBQUNpNkMsZ0JBQVYsRUFBNEIsU0FBNUIsQ0FBekI7O0VBQ0EsT0FBUSxDQUFDLEdBQUdqNkMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUNqRSxTQUFPLENBQUMsR0FBR242QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLG1CQUFELEVBQzdCakQsTUFBTSxDQUFDdm5DLEtBQVAsS0FBaUIsT0FBakIsR0FBMkIsc0JBQTNCLEdBQW9ELDRCQUR2QixDQUExQjtFQUQwRCxDQUFyQyxFQUk3QixDQUNDLENBQUMsR0FBR3JTLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUNqQyxTQUFPLGtEQUQwQjtJQUVqQ2tCLE9BQU8sRUFBRVIsTUFBTSxDQUFDOTJCO0VBRmlCLENBQXJDLEVBR0csQ0FDQyxDQUFDLEdBQUcvaUIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSixVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUcvNEMsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QyxTQUFPLENBQUMsR0FBR2g2QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQmpELE1BQU0sQ0FBQ3ZuQyxLQUFQLEtBQWlCLE9BQWpCLEdBQTJCLGlCQUEzQixHQUErQyxlQUF6RSxDQURnQztJQUV2Q2pDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxFQUdHLElBSEgsRUFHUztFQUFFO0VBSFgsRUFHd0IsQ0FBQyxPQUFELENBSHhCLENBRDZDLEVBSzdDLENBQUMsR0FBR3BRLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ0gsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUMxOUIsV0FBUCxDQUFtQnk5QixNQUFNLENBQUN2bkMsS0FBMUIsQ0FBM0IsSUFBK0QsR0FBL0QsR0FBcUUsQ0FBQyxHQUFHclMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJkLE1BQU0sQ0FBQ3ZuQyxLQUFsQyxDQUF2SCxFQUFpSztFQUFFO0VBQW5LLENBTDZDLENBQWpELENBREQsRUFRQyxDQUFDLEdBQUdyUyxLQUFLLENBQUNzNkMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDNXBDLElBQUksRUFBRSxnQkFEaUM7SUFFdkMsU0FBTyxDQUFDLEdBQUdwUSxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLHFDQUFELEVBQXdDO01BQUUsY0FBY2hELE1BQU0sQ0FBQ3B4QyxNQUF2QjtNQUErQixJQUFJLENBQUNveEMsTUFBTSxDQUFDcHhDO0lBQTNDLENBQXhDLENBQTFCO0VBRmdDLENBQTNDLEVBR0csSUFISCxFQUdTO0VBQUU7RUFIWCxFQUd3QixDQUFDLE9BQUQsQ0FIeEIsQ0FSRCxDQUhILENBREQsRUFpQkMsQ0FBQyxHQUFHekksS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRixVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdqNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRCxVQUFyQyxFQUFpRCxDQUM1Q1UsTUFBTSxDQUFDdm5DLEtBQVAsS0FBaUIsT0FBbEIsSUFDTyxDQUFDLEdBQUdyUyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDZixVQUFyQyxFQUFpRCw0SkFBakQsQ0FEL0IsS0FFTyxDQUFDLEdBQUdwNUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2QsVUFBckMsRUFBaUQsbU9BQWpELENBRi9CLENBRDZDLEdBSTVDLENBQUMsR0FBR3I1QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JsRCxNQUFNLENBQUNyZ0MsSUFBN0IsRUFBbUMsVUFBVWxMLEtBQVYsRUFBaUIreEMsVUFBakIsRUFBNkI7SUFDN0ksT0FBUSxDQUFDLEdBQUdwZ0QsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqRXR2QyxHQUFHLEVBQUV1MUMsVUFENEQ7TUFFakUsU0FBTztJQUYwRCxDQUFyQyxFQUc3QixDQUNDLENBQUMsR0FBR3BnRCxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNHLFVBQXJDLEVBQWlELENBQUMsR0FBR3Q1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQjBGLFVBQTNCLENBQWpELEVBQXlGO0lBQUU7SUFBM0YsQ0FERCxHQUVFLENBQUMsR0FBR3BnRCxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0J6dUMsS0FBdEIsRUFBNkIsVUFBVWd5QyxTQUFWLEVBQXFCQyxTQUFyQixFQUFnQztNQUMxSSxPQUFRLENBQUMsR0FBR3RnRCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1FBQUV0dkMsR0FBRyxFQUFFeTFDO01BQVAsQ0FBckMsRUFBeUQsQ0FDckYsQ0FBQyxHQUFHdGdELEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0ksVUFBckMsRUFBaUQsQ0FBQyxHQUFHdjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCNEYsU0FBUyxDQUFDemlDLFFBQVYsR0FBcUJoYyxLQUFyQixDQUEyQixHQUEzQixFQUFnQ3NLLElBQWhDLENBQXFDLEtBQXJDLEVBQTRDdEssS0FBNUMsQ0FBa0QsR0FBbEQsRUFBdURzSyxJQUF2RCxDQUE0RCxHQUE1RCxDQUEzQixDQUFqRCxFQUErSTtNQUFFO01BQWpKLENBRHFGLEVBRXJGLENBQUMsR0FBR25NLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0ssVUFBckMsRUFBaUQsQ0FBQyxHQUFHeDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCMkYsU0FBM0IsQ0FBakQsRUFBd0Y7TUFBRTtNQUExRixDQUZxRixDQUF6RCxDQUFoQztJQUlILENBTGdGLENBQXBELEVBS3pCO0lBQUk7SUFMcUIsQ0FGOUIsRUFINkIsQ0FBaEM7RUFZSCxDQWJnRixDQUFwRCxFQWF6QjtFQUFJO0VBYnFCLENBSmdCLEVBQWpELENBRDZDLENBQWpELENBakJELENBSjZCLEVBMEM3QjtFQUFFO0VBMUMyQixDQUFoQztBQTJDSDs7QUFDRHZnRCxjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQ2xFYTs7QUFDYmw1Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJODRDLFVBQVUsR0FBRyxhQUFjLENBQUMsR0FBRy80QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7RUFBRSxTQUFPO0FBQVQsQ0FBbkMsRUFBMEUsR0FBMUUsRUFBK0UsQ0FBQztBQUFFO0FBQWxGLENBQS9COztBQUNBLFNBQVNMLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsT0FBUSxDQUFDLEdBQUcvNUMsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztJQUNqRSxTQUFPLENBQUMsR0FBR242QyxLQUFLLENBQUM2OEMsY0FBVixFQUEwQixDQUFDLHNDQUFELEVBQXlDaEQsTUFBTSxDQUFDLzBCLEtBQWhELENBQTFCO0VBRDBELENBQXJDLEVBRTdCLENBQ0NpMEIsVUFERCxFQUVDLENBQUMsR0FBRy80QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzcEMsSUFBbEMsQ0FBNUMsRUFBcUY7RUFBRTtFQUF2RixDQUZELENBRjZCLEVBSzdCO0VBQUU7RUFMMkIsQ0FBaEM7QUFNSDs7QUFDRHBRLGNBQUEsR0FBaUJnNUMsTUFBakI7Ozs7Ozs7Ozs7O0FDYmE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7O0FBQ0EsU0FBU0QsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUdoNkMsS0FBSyxDQUFDaTZDLGdCQUFWLEVBQTRCLFNBQTVCLENBQXpCOztFQUNBLE9BQVEsQ0FBQyxHQUFHajZDLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNwQixVQUFyQyxFQUFpRCxDQUM1RWEsTUFBTSxDQUFDeHBDLElBQVIsSUFDTyxDQUFDLEdBQUdwUSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJYLGtCQUF2QixFQUEyQztJQUNsRW52QyxHQUFHLEVBQUUsQ0FENkQ7SUFFbEV1RixJQUFJLEVBQUV3cEMsTUFBTSxDQUFDeHBDLElBRnFEO0lBR2xFLFNBQU87RUFIMkQsQ0FBM0MsRUFJeEIsSUFKd0IsRUFJbEI7RUFBRTtFQUpnQixFQUlILENBQUMsTUFBRCxDQUpHLENBRC9CLElBTU0sQ0FBQyxHQUFHcFEsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBUHVFLEVBUTdFLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCZCxNQUFNLENBQUMxcEMsSUFBbEMsQ0FBNUMsRUFBcUY7RUFBRTtFQUF2RixDQVI2RSxDQUFqRCxDQUFoQztBQVVIOztBQUNEcFEsY0FBQSxHQUFpQmc1QyxNQUFqQjs7Ozs7Ozs7Ozs7QUNsQmE7O0FBQ2JsNUMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTg0QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUcsQ0FBQyxNQUFELENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSXVCLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLE9BQUs7QUFBUCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFdndDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSXd3QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZHp3QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUkwd0MsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsT0FBSztBQUFQLENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUU1d0MsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJNndDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkOXdDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSSt3QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxPQUFLO0FBQVAsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxhQUFELENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUVseEMsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJbXhDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkcHhDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSXF4QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxPQUFLO0FBQVAsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRXZ4QyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUl3eEMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsT0FBSztBQUFQLENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUzeEMsR0FBRyxFQUFFO0FBQVAsQ0FBbEI7QUFDQSxJQUFJNHhDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLE1BQUQsQ0FBbEI7O0FBQ0EsU0FBUzlELE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSXA1QyxFQUFKOztFQUNBLElBQUlxNUMsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHaDZDLEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixTQUE1QixDQUF6Qjs7RUFDQSxJQUFJc0csb0JBQW9CLEdBQUcsQ0FBQyxHQUFHdmdELEtBQUssQ0FBQ2k2QyxnQkFBVixFQUE0QixXQUE1QixDQUEzQjs7RUFDQSxPQUFRLENBQUMsR0FBR2o2QyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLFNBQTlCLEVBQXlDcEIsVUFBekMsRUFBcUQsQ0FDaEZjLE1BQU0sQ0FBQzN6QixnQkFBUixJQUNPLENBQUMsR0FBR2xtQixLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxRQUFELENBQTdCLEVBQXlDO0lBQUVodkMsR0FBRyxFQUFFO0VBQVAsQ0FBekMsQ0FEL0IsSUFFTSxDQUFDLEdBQUc3SyxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FIMkUsRUFJakYsQ0FBQyxHQUFHdjZDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0gsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHaDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ0YsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHajVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnVpQixXQUFqQixDQUE2QixnREFBN0IsQ0FBM0IsQ0FBbEQsRUFBOEo7RUFBRTtFQUFoSyxDQUQ2QyxFQUU3QyxDQUFDLEdBQUc3cEIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdsNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDQyxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdwNUMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0lBQy9CejJDLElBQUksRUFBRSxhQUFhZixNQUFiLENBQW9CaTRDLE1BQU0sQ0FBQzM1QixVQUEzQjtFQUR5QixDQUFuQyxFQUVHLENBQ0MsQ0FBQyxHQUFHamdCLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFBRTVwQyxJQUFJLEVBQUU7RUFBUixDQUEzQyxDQURELENBRkgsRUFJRztFQUFFO0VBSkwsRUFJa0JpcEMsVUFKbEIsQ0FENkMsRUFNN0MsQ0FBQyxHQUFHcjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ0csVUFBcEMsRUFBZ0QsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnVpQixXQUFqQixDQUE2QixnREFBN0IsQ0FBM0IsQ0FBaEQsRUFBNEo7RUFBRTtFQUE5SixDQU42QyxDQUFqRCxDQUQ2QyxFQVM3QyxDQUFDLEdBQUc3cEIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSSxVQUFyQyxFQUFpRCxDQUM1Q00sTUFBTSxDQUFDbnlDLGVBQVIsSUFDTyxDQUFDLEdBQUcxSCxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDMjZDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxPQUFELENBQTdCLEVBQXdDO0lBQy9EaHZDLEdBQUcsRUFBRSxDQUQwRDtJQUUvRHJCLE9BQU8sRUFBRXF3QyxNQUFNLENBQUMveEMsWUFGK0M7SUFHL0RsQixJQUFJLEVBQUVpekMsTUFBTSxDQUFDOXhDO0VBSGtELENBQXhDLEVBSXhCLElBSndCLEVBSWxCO0VBQUU7RUFKZ0IsRUFJSCxDQUFDLFNBQUQsRUFBWSxNQUFaLENBSkcsQ0FEL0IsSUFNTSxDQUFDLEdBQUcvSCxLQUFLLENBQUN1NkMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FQdUMsQ0FBakQsQ0FUNkMsQ0FBakQsQ0FGNkMsRUFxQjdDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNLLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3g1QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNNLFdBQXJDLEVBQWtELENBQUMsR0FBR3o1QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ1aUIsV0FBakIsQ0FBNkIsK0NBQTdCLENBQTNCLENBQWxELEVBQTZKO0VBQUU7RUFBL0osQ0FENkMsRUFFN0MsQ0FBQyxHQUFHN3BCLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzZCLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR2g3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM4QixXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdqN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMrQixXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdsN0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDZ0MsV0FBdkMsRUFBb0QsQ0FBQyxHQUFHbjdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnVpQixXQUFqQixDQUE2QixpQ0FBN0IsQ0FBM0IsQ0FBcEQsRUFBaUo7RUFBRTtFQUFuSixDQUQ4QyxFQUU5QyxDQUFDLEdBQUc3cEIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDLElBQXhDLEVBQThDLENBQzFDLENBQUMsR0FBR241QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QmlHLG9CQUF2QixFQUE2QztJQUN6QzMzQyxJQUFJLEVBQUVpeEMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ1aUIsV0FBakIsQ0FBNkIsd0NBQTdCLENBRG1DO0lBRXpDLGNBQWNnd0IsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ1aUIsV0FBakIsQ0FBNkIsc0NBQTdCLENBRjJCO0lBR3pDLHVCQUF1QjtFQUhrQixDQUE3QyxFQUlHLElBSkgsRUFJUztFQUFFO0VBSlgsRUFJd0IsQ0FBQyxNQUFELEVBQVMsWUFBVCxDQUp4QixDQUQwQyxDQUE5QyxDQUY4QyxDQUFsRCxDQUR1QyxFQVd2QyxDQUFDLEdBQUc3cEIsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJULE1BQU0sQ0FBQyxhQUFELENBQTdCLEVBQThDO0lBQzFDcnhDLEVBQUUsRUFBRSxrQkFEc0M7SUFFMUN3MUMsVUFBVSxFQUFFbkUsTUFBTSxDQUFDbjBCLGFBQVAsQ0FBcUJFLGdCQUZTO0lBRzFDLHVCQUF1Qit6QixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBU1osTUFBTSxDQUFDbjBCLGFBQVAsQ0FBcUJFLGdCQUF0QixHQUEwQzYwQixNQUFsRDtJQUE0RCxDQUExRyxDQUhtQjtJQUkxQyxTQUFPLGFBSm1DO0lBSzFDNUQsV0FBVyxFQUFFZ0QsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ1aUIsV0FBakIsQ0FBNkIsdUNBQTdCLENBTDZCO0lBTTFDNlQsT0FBTyxFQUFFa2MsTUFBTSxDQUFDcjBCLFVBTjBCO0lBTzFDaTdCLFVBQVUsRUFBRTtFQVA4QixDQUE5QyxFQVFHLElBUkgsRUFRUztFQUFFO0VBUlgsRUFRd0IsQ0FBQyxZQUFELEVBQWUsYUFBZixFQUE4QixTQUE5QixDQVJ4QixDQVh1QyxFQW9CdEMzRyxNQUFNLENBQUM5ekIsYUFBUCxDQUFxQkgsZ0JBQXJCLENBQXNDemYsTUFBdEMsR0FBK0MsQ0FBaEQsSUFDTyxDQUFDLEdBQUduRyxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDaUIsV0FBckMsRUFBa0QsRUFDeEUsQ0FBQyxHQUFHcDdDLEtBQUssQ0FBQ2s2QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEJuNkMsS0FBSyxDQUFDbzZDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR3A2QyxLQUFLLENBQUM4OEMsVUFBVixFQUFzQixDQUFDbjhDLEVBQUUsR0FBR2s1QyxNQUFNLENBQUM5ekIsYUFBYixNQUFnQyxJQUFoQyxJQUF3Q3BsQixFQUFFLEtBQUssS0FBSyxDQUFwRCxHQUF3RCxLQUFLLENBQTdELEdBQWlFQSxFQUFFLENBQUNpbEIsZ0JBQTFGLEVBQTRHLFVBQVV2WCxLQUFWLEVBQWlCMUosQ0FBakIsRUFBb0I7SUFDN00sT0FBUSxDQUFDLEdBQUczRSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pFdHZDLEdBQUcsRUFBRWxHLENBRDREO01BRWpFLFNBQU8sT0FGMEQ7TUFHakV5dEMsSUFBSSxFQUFFO0lBSDJELENBQXJDLEVBSTdCLENBQ0MsQ0FBQyxHQUFHcHlDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2tDLFdBQXRDLEVBQW1ELENBQUMsR0FBR3I3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnJzQyxLQUEzQixDQUFuRCxFQUFzRjtJQUFFO0lBQXhGLENBREQsQ0FKNkIsQ0FBaEM7RUFPSCxDQVJnRixDQUFwRCxFQVF6QjtFQUFJO0VBUnFCLENBRDRDLEVBQWxELENBRC9CLElBWU0sQ0FBQyxHQUFHck8sS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBaENpQyxFQWlDdENWLE1BQU0sQ0FBQzl6QixhQUFQLENBQXFCSCxnQkFBckIsQ0FBc0N6ZixNQUF0QyxLQUFpRCxDQUFsRCxJQUNPLENBQUMsR0FBR25HLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNtQixXQUFuQyxFQUFnRCxDQUFDLEdBQUd0N0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCdWlCLFdBQWpCLENBQTZCLHFDQUE3QixDQUEzQixDQUFoRCxFQUFpSjtFQUFFO0VBQW5KLENBRC9CLElBRU0sQ0FBQyxHQUFHN3BCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQW5DaUMsQ0FBM0MsQ0FEOEMsRUFzQzlDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsQ0FDdkMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ29DLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3Y3QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUNxQyxXQUF2QyxFQUFvRCxDQUFDLEdBQUd4N0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCdWlCLFdBQWpCLENBQTZCLGlDQUE3QixDQUEzQixDQUFwRCxFQUFpSjtFQUFFO0VBQW5KLENBRDhDLEVBRTlDLENBQUMsR0FBRzdwQixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0MsSUFBeEMsRUFBOEMsQ0FDMUMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCaUcsb0JBQXZCLEVBQTZDO0lBQ3pDMzNDLElBQUksRUFBRWl4QyxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnVpQixXQUFqQixDQUE2Qix3Q0FBN0IsQ0FEbUM7SUFFekMsY0FBY2d3QixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnVpQixXQUFqQixDQUE2QixzQ0FBN0IsQ0FGMkI7SUFHekMsdUJBQXVCO0VBSGtCLENBQTdDLEVBSUcsSUFKSCxFQUlTO0VBQUU7RUFKWCxFQUl3QixDQUFDLE1BQUQsRUFBUyxZQUFULENBSnhCLENBRDBDLENBQTlDLENBRjhDLENBQWxELENBRHVDLEVBV3ZDLENBQUMsR0FBRzdwQixLQUFLLENBQUNzNkMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLGFBQUQsQ0FBN0IsRUFBOEM7SUFDMUNyeEMsRUFBRSxFQUFFLGtCQURzQztJQUUxQ3cxQyxVQUFVLEVBQUVuRSxNQUFNLENBQUNuMEIsYUFBUCxDQUFxQkcsZ0JBRlM7SUFHMUMsdUJBQXVCOHpCLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7TUFBRSxPQUFTWixNQUFNLENBQUNuMEIsYUFBUCxDQUFxQkcsZ0JBQXRCLEdBQTBDNDBCLE1BQWxEO0lBQTRELENBQTFHLENBSG1CO0lBSTFDLFNBQU8sYUFKbUM7SUFLMUM1RCxXQUFXLEVBQUVnRCxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnVpQixXQUFqQixDQUE2Qix1Q0FBN0IsQ0FMNkI7SUFNMUMyMkIsVUFBVSxFQUFFLElBTjhCO0lBTzFDOWlCLE9BQU8sRUFBRW1jLE1BQU0sQ0FBQ256QyxLQUFQLENBQWEyQjtFQVBvQixDQUE5QyxFQVFHLElBUkgsRUFRUztFQUFFO0VBUlgsRUFRd0IsQ0FBQyxZQUFELEVBQWUsYUFBZixFQUE4QixTQUE5QixDQVJ4QixDQVh1QyxFQW9CdEN3eEMsTUFBTSxDQUFDOXpCLGFBQVAsQ0FBcUJGLGdCQUFyQixDQUFzQzFmLE1BQXRDLEdBQStDLENBQWhELElBQ08sQ0FBQyxHQUFHbkcsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3NCLFdBQXJDLEVBQWtELEVBQ3hFLENBQUMsR0FBR3o3QyxLQUFLLENBQUNrNkMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCbjZDLEtBQUssQ0FBQ282QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUdwNkMsS0FBSyxDQUFDODhDLFVBQVYsRUFBc0JqRCxNQUFNLENBQUM5ekIsYUFBUCxDQUFxQkYsZ0JBQTNDLEVBQTZELFVBQVV4WCxLQUFWLEVBQWlCMUosQ0FBakIsRUFBb0I7SUFDOUosT0FBUSxDQUFDLEdBQUczRSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pFdHZDLEdBQUcsRUFBRWxHLENBRDREO01BRWpFLFNBQU8sT0FGMEQ7TUFHakV5dEMsSUFBSSxFQUFFO0lBSDJELENBQXJDLEVBSTdCLENBQ0MsQ0FBQyxHQUFHcHlDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ3VDLFdBQXRDLEVBQW1ELENBQUMsR0FBRzE3QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnJzQyxLQUEzQixDQUFuRCxFQUFzRjtJQUFFO0lBQXhGLENBREQsQ0FKNkIsQ0FBaEM7RUFPSCxDQVJnRixDQUFwRCxFQVF6QjtFQUFJO0VBUnFCLENBRDRDLEVBQWxELENBRC9CLElBWU0sQ0FBQyxHQUFHck8sS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBaENpQyxFQWlDdENWLE1BQU0sQ0FBQzl6QixhQUFQLENBQXFCRixnQkFBckIsQ0FBc0MxZixNQUF0QyxLQUFpRCxDQUFsRCxJQUNPLENBQUMsR0FBR25HLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUN3QixXQUFuQyxFQUFnRCxDQUFDLEdBQUczN0MsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCdWlCLFdBQWpCLENBQTZCLHFDQUE3QixDQUEzQixDQUFoRCxFQUFpSjtFQUFFO0VBQW5KLENBRC9CLElBRU0sQ0FBQyxHQUFHN3BCLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQW5DaUMsQ0FBM0MsQ0F0QzhDLEVBMkU5QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN5QyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUc1N0MsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDMEMsV0FBdkMsRUFBb0QsQ0FBQyxHQUFHNzdDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnVpQixXQUFqQixDQUE2QixrQ0FBN0IsQ0FBM0IsQ0FBcEQsRUFBa0o7RUFBRTtFQUFwSixDQUQ4QyxFQUU5QyxDQUFDLEdBQUc3cEIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDLElBQXhDLEVBQThDLENBQzFDLENBQUMsR0FBR241QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QmlHLG9CQUF2QixFQUE2QztJQUN6Q2xvQyxLQUFLLEVBQUUsTUFEa0M7SUFFekN6UCxJQUFJLEVBQUVpeEMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ1aUIsV0FBakIsQ0FBNkIseUNBQTdCLENBRm1DO0lBR3pDLGNBQWNnd0IsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ1aUIsV0FBakIsQ0FBNkIsdUNBQTdCLENBSDJCO0lBSXpDLHVCQUF1QjtFQUprQixDQUE3QyxFQUtHLElBTEgsRUFLUztFQUFFO0VBTFgsRUFLd0IsQ0FBQyxNQUFELEVBQVMsWUFBVCxDQUx4QixDQUQwQyxDQUE5QyxDQUY4QyxDQUFsRCxDQUR1QyxFQVl2QyxDQUFDLEdBQUc3cEIsS0FBSyxDQUFDbTlDLGNBQVYsRUFBMEIsQ0FBQyxHQUFHbjlDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QztJQUM3RDN3QyxFQUFFLEVBQUUsbUJBRHlEO0lBRTdELHVCQUF1Qm14QyxNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBU1osTUFBTSxDQUFDbjBCLGFBQVAsQ0FBcUJJLFNBQXRCLEdBQW1DMjBCLE1BQTNDO0lBQXFELENBQW5HLENBRnNDO0lBRzdELFNBQU8sc0JBSHNEO0lBSTdEN3pDLElBQUksRUFBRSxNQUp1RDtJQUs3RGl3QyxXQUFXLEVBQUVnRCxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnVpQixXQUFqQixDQUE2Qix3Q0FBN0I7RUFMZ0QsQ0FBdkMsRUFNdkIsSUFOdUIsRUFNakI7RUFBRTtFQU5lLEVBTUZpeUIsV0FORSxDQUExQixFQU1zQyxDQUNsQyxDQUFDOTdDLEtBQUssQ0FBQ3M5QyxVQUFQLEVBQW1CekQsTUFBTSxDQUFDbjBCLGFBQVAsQ0FBcUJJLFNBQXhDLENBRGtDLENBTnRDLENBWnVDLEVBcUJ0Qyt6QixNQUFNLENBQUM5ekIsYUFBUCxDQUFxQkQsU0FBckIsQ0FBK0IzZixNQUEvQixHQUF3QyxDQUF6QyxJQUNPLENBQUMsR0FBR25HLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM0QixXQUFyQyxFQUFrRCxFQUN4RSxDQUFDLEdBQUcvN0MsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCakQsTUFBTSxDQUFDOXpCLGFBQVAsQ0FBcUJELFNBQTNDLEVBQXNELFVBQVV6WCxLQUFWLEVBQWlCMUosQ0FBakIsRUFBb0I7SUFDdkosT0FBUSxDQUFDLEdBQUczRSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pFdHZDLEdBQUcsRUFBRWxHLENBRDREO01BRWpFLFNBQU8sT0FGMEQ7TUFHakV5dEMsSUFBSSxFQUFFO0lBSDJELENBQXJDLEVBSTdCLENBQ0MsQ0FBQyxHQUFHcHlDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQzZDLFdBQXRDLEVBQW1ELENBQUMsR0FBR2g4QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnJzQyxLQUEzQixDQUFuRCxFQUFzRjtJQUFFO0lBQXhGLENBREQsQ0FKNkIsQ0FBaEM7RUFPSCxDQVJnRixDQUFwRCxFQVF6QjtFQUFJO0VBUnFCLENBRDRDLEVBQWxELENBRC9CLElBWU0sQ0FBQyxHQUFHck8sS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBakNpQyxFQWtDdENWLE1BQU0sQ0FBQzl6QixhQUFQLENBQXFCRCxTQUFyQixDQUErQjNmLE1BQS9CLEtBQTBDLENBQTNDLElBQ08sQ0FBQyxHQUFHbkcsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQzhCLFdBQW5DLEVBQWdELENBQUMsR0FBR2o4QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQmIsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ1aUIsV0FBakIsQ0FBNkIsc0NBQTdCLENBQTNCLENBQWhELEVBQWtKO0VBQUU7RUFBcEosQ0FEL0IsSUFFTSxDQUFDLEdBQUc3cEIsS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBcENpQyxDQUEzQyxDQTNFOEMsRUFpSDlDLENBQUMsR0FBR3Y2QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsQ0FDdkMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQytDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR2w4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUNnRCxXQUF2QyxFQUFvRCxDQUFDLEdBQUduOEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCdWlCLFdBQWpCLENBQTZCLDRDQUE3QixDQUEzQixDQUFwRCxFQUE0SjtFQUFFO0VBQTlKLENBRDhDLEVBRTlDLENBQUMsR0FBRzdwQixLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0MsSUFBeEMsRUFBOEMsQ0FDMUMsQ0FBQyxHQUFHbjVDLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCaUcsb0JBQXZCLEVBQTZDO0lBQ3pDbG9DLEtBQUssRUFBRSxNQURrQztJQUV6Q3pQLElBQUksRUFBRWl4QyxNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnVpQixXQUFqQixDQUE2QixtREFBN0IsQ0FGbUM7SUFHekMsY0FBY2d3QixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnVpQixXQUFqQixDQUE2QixpREFBN0I7RUFIMkIsQ0FBN0MsRUFJRyxJQUpILEVBSVM7RUFBRTtFQUpYLEVBSXdCLENBQUMsTUFBRCxFQUFTLFlBQVQsQ0FKeEIsQ0FEMEMsQ0FBOUMsQ0FGOEMsQ0FBbEQsQ0FEdUMsRUFXdkMsQ0FBQyxHQUFHN3BCLEtBQUssQ0FBQ3M2QyxXQUFWLEVBQXVCVCxNQUFNLENBQUMsYUFBRCxDQUE3QixFQUE4QztJQUMxQ3J4QyxFQUFFLEVBQUUscUJBRHNDO0lBRTFDdzFDLFVBQVUsRUFBRW5FLE1BQU0sQ0FBQ24wQixhQUFQLENBQXFCQyxtQkFGUztJQUcxQyx1QkFBdUJnMEIsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtNQUFFLE9BQVNaLE1BQU0sQ0FBQ24wQixhQUFQLENBQXFCQyxtQkFBdEIsR0FBNkM4MEIsTUFBckQ7SUFBK0QsQ0FBN0csQ0FIbUI7SUFJMUMsU0FBTyxhQUptQztJQUsxQzVELFdBQVcsRUFBRWdELE1BQU0sQ0FBQ3Z5QyxTQUFQLENBQWlCdWlCLFdBQWpCLENBQTZCLGtEQUE3QixDQUw2QjtJQU0xQzZULE9BQU8sRUFBRWtjLE1BQU0sQ0FBQ3AwQixpQkFOMEI7SUFPMUNnN0IsVUFBVSxFQUFFO0VBUDhCLENBQTlDLEVBUUcsSUFSSCxFQVFTO0VBQUU7RUFSWCxFQVF3QixDQUFDLFlBQUQsRUFBZSxhQUFmLEVBQThCLFNBQTlCLENBUnhCLENBWHVDLEVBb0J0QzNHLE1BQU0sQ0FBQzl6QixhQUFQLENBQXFCSixtQkFBckIsQ0FBeUN4ZixNQUF6QyxHQUFrRCxDQUFuRCxJQUNPLENBQUMsR0FBR25HLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNpQyxXQUFyQyxFQUFrRCxFQUN4RSxDQUFDLEdBQUdwOEMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCakQsTUFBTSxDQUFDOXpCLGFBQVAsQ0FBcUJKLG1CQUEzQyxFQUFnRSxVQUFVdFgsS0FBVixFQUFpQjFKLENBQWpCLEVBQW9CO0lBQ2pLLE9BQVEsQ0FBQyxHQUFHM0UsS0FBSyxDQUFDazZDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQztNQUNqRXR2QyxHQUFHLEVBQUVsRyxDQUQ0RDtNQUVqRSxTQUFPLE9BRjBEO01BR2pFeXRDLElBQUksRUFBRTtJQUgyRCxDQUFyQyxFQUk3QixDQUNDLENBQUMsR0FBR3B5QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NrRCxXQUF0QyxFQUFtRCxDQUFDLEdBQUdyOEMsS0FBSyxDQUFDMDZDLGVBQVYsRUFBMkJyc0MsS0FBM0IsQ0FBbkQsRUFBc0Y7SUFBRTtJQUF4RixDQURELENBSjZCLENBQWhDO0VBT0gsQ0FSZ0YsQ0FBcEQsRUFRekI7RUFBSTtFQVJxQixDQUQ0QyxFQUFsRCxDQUQvQixJQVlNLENBQUMsR0FBR3JPLEtBQUssQ0FBQ3U2QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWhDaUMsQ0FBM0MsQ0FqSDhDLEVBbUo5QyxDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR241QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNtRCxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd0OEMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDb0QsV0FBdkMsRUFBb0QsQ0FBQyxHQUFHdjhDLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnVpQixXQUFqQixDQUE2QixxQ0FBN0IsQ0FBM0IsQ0FBcEQsRUFBcUo7RUFBRTtFQUF2SixDQUQ4QyxFQUU5QyxDQUFDLEdBQUc3cEIsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDLElBQXhDLEVBQThDLENBQzFDLENBQUMsR0FBR241QyxLQUFLLENBQUNzNkMsV0FBVixFQUF1QmlHLG9CQUF2QixFQUE2QztJQUN6Q2xvQyxLQUFLLEVBQUUsTUFEa0M7SUFFekN6UCxJQUFJLEVBQUVpeEMsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ1aUIsV0FBakIsQ0FBNkIsNENBQTdCLENBRm1DO0lBR3pDLGNBQWNnd0IsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ1aUIsV0FBakIsQ0FBNkIsMENBQTdCLENBSDJCO0lBSXpDLHVCQUF1QjtFQUprQixDQUE3QyxFQUtHLElBTEgsRUFLUztFQUFFO0VBTFgsRUFLd0IsQ0FBQyxNQUFELEVBQVMsWUFBVCxDQUx4QixDQUQwQyxDQUE5QyxDQUY4QyxDQUFsRCxDQUR1QyxFQVl2QyxDQUFDLEdBQUc3cEIsS0FBSyxDQUFDczZDLFdBQVYsRUFBdUJULE1BQU0sQ0FBQyxhQUFELENBQTdCLEVBQThDO0lBQzFDcnhDLEVBQUUsRUFBRSxjQURzQztJQUUxQ3cxQyxVQUFVLEVBQUVuRSxNQUFNLENBQUNuMEIsYUFBUCxDQUFxQkQsWUFGUztJQUcxQyx1QkFBdUJrMEIsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtNQUFFLE9BQVNaLE1BQU0sQ0FBQ24wQixhQUFQLENBQXFCRCxZQUF0QixHQUFzQ2cxQixNQUE5QztJQUF3RCxDQUF0RyxDQUhtQjtJQUkxQyxTQUFPLGFBSm1DO0lBSzFDNUQsV0FBVyxFQUFFZ0QsTUFBTSxDQUFDdnlDLFNBQVAsQ0FBaUJ1aUIsV0FBakIsQ0FBNkIsMkNBQTdCLENBTDZCO0lBTTFDNlQsT0FBTyxFQUFFa2MsTUFBTSxDQUFDbjBCLFlBTjBCO0lBTzFDKzZCLFVBQVUsRUFBRTtFQVA4QixDQUE5QyxFQVFHLElBUkgsRUFRUztFQUFFO0VBUlgsRUFRd0IsQ0FBQyxZQUFELEVBQWUsYUFBZixFQUE4QixTQUE5QixDQVJ4QixDQVp1QyxFQXFCdEMzRyxNQUFNLENBQUM5ekIsYUFBUCxDQUFxQk4sWUFBckIsQ0FBa0N0ZixNQUFsQyxHQUEyQyxDQUE1QyxJQUNPLENBQUMsR0FBR25HLEtBQUssQ0FBQ2s2QyxTQUFWLEtBQXdCLENBQUMsR0FBR2w2QyxLQUFLLENBQUNtNkMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNxQyxXQUFyQyxFQUFrRCxFQUN4RSxDQUFDLEdBQUd4OEMsS0FBSyxDQUFDazZDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHbDZDLEtBQUssQ0FBQ202QyxrQkFBVixFQUE4Qm42QyxLQUFLLENBQUNvNkMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHcDZDLEtBQUssQ0FBQzg4QyxVQUFWLEVBQXNCakQsTUFBTSxDQUFDOXpCLGFBQVAsQ0FBcUJOLFlBQTNDLEVBQXlELFVBQVVwWCxLQUFWLEVBQWlCMUosQ0FBakIsRUFBb0I7SUFDMUosT0FBUSxDQUFDLEdBQUczRSxLQUFLLENBQUNrNkMsU0FBVixLQUF3QixDQUFDLEdBQUdsNkMsS0FBSyxDQUFDbTZDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO01BQ2pFdHZDLEdBQUcsRUFBRWxHLENBRDREO01BRWpFLFNBQU8sT0FGMEQ7TUFHakV5dEMsSUFBSSxFQUFFO0lBSDJELENBQXJDLEVBSTdCLENBQ0MsQ0FBQyxHQUFHcHlDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ3NELFdBQXRDLEVBQW1ELENBQUMsR0FBR3o4QyxLQUFLLENBQUMwNkMsZUFBVixFQUEyQnJzQyxLQUEzQixDQUFuRCxFQUFzRjtJQUFFO0lBQXhGLENBREQsQ0FKNkIsQ0FBaEM7RUFPSCxDQVJnRixDQUFwRCxFQVF6QjtFQUFJO0VBUnFCLENBRDRDLEVBQWxELENBRC9CLElBWU0sQ0FBQyxHQUFHck8sS0FBSyxDQUFDdTZDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBakNpQyxDQUEzQyxDQW5KOEMsQ0FBbEQsQ0FEOEMsQ0FBbEQsQ0FGNkMsQ0FBakQsQ0FyQjZDLENBQWpELENBSmlGLEVBc05qRixDQUFDLEdBQUd2NkMsS0FBSyxDQUFDbTVDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDdUQsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHMThDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3dELFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRzM4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7SUFDL0IsU0FBTyxnQkFEd0I7SUFFL0J6MkMsSUFBSSxFQUFFLGFBQWFmLE1BQWIsQ0FBb0JpNEMsTUFBTSxDQUFDMzVCLFVBQTNCO0VBRnlCLENBQW5DLEVBR0csQ0FBQyxHQUFHamdCLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnVpQixXQUFqQixDQUE2QiwrQkFBN0IsQ0FBM0IsQ0FISCxFQUc4RjtFQUFFO0VBSGhHLEVBR21IK3lCLFdBSG5ILENBRDhDLEVBSzlDLENBQUMsR0FBRzU4QyxLQUFLLENBQUNtNUMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0M7SUFDcEMsU0FBTyxzQkFENkI7SUFFcENrQixPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7TUFBRSxPQUFRWixNQUFNLENBQUMxekIsVUFBUCxFQUFSO0lBQStCLENBQTdFO0VBRjJCLENBQXhDLEVBR0csQ0FBQyxHQUFHbm1CLEtBQUssQ0FBQzA2QyxlQUFWLEVBQTJCYixNQUFNLENBQUN2eUMsU0FBUCxDQUFpQnVpQixXQUFqQixDQUE2Qiw0Q0FBN0IsQ0FBM0IsQ0FISCxFQUcyRztFQUFFO0VBSDdHLENBTDhDLENBQWxELENBRDhDLENBQWxELENBdE5pRixDQUFyRCxDQUFoQztBQW1PSDs7QUFDRC9wQixjQUFBLEdBQWlCZzVDLE1BQWpCOzs7Ozs7Ozs7OztBQzVSYTs7OztBQUNibDVDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk4NEMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQ2IsY0FBYyxhQUREO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSUUsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQ2IsU0FBTyxvREFETTtFQUViMzJDLElBQUksRUFBRTtBQUZPLENBQWpCOztBQUlBLElBQUk0MkMsVUFBVSxHQUFHLGFBQWMsQ0FBQyxHQUFHdDVDLEtBQUssQ0FBQ201QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztFQUFFLFNBQU87QUFBVCxDQUF0QyxFQUFtRSxLQUFuRSxFQUEwRSxDQUFDO0FBQUU7QUFBN0UsQ0FBL0I7O0FBQ0EsSUFBSUksVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSXVCLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFMTRDLElBQUksRUFBRTtBQUFSLENBQWxCO0FBQ0EsSUFBSTI0QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZGp4QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUlreEMsV0FBVyxHQUFHO0VBQ2R2ekMsRUFBRSxFQUFFLFVBRFU7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJd3pDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUk2RCxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZDcxQyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUk4MUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsTUFBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElB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U0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSTZELFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtB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LEtBQUssVUFBVSxVQUFVLEtBQUssS0FBSyxVQUFVLFVBQVUsV0FBVyxLQUFLLEtBQUssS0FBSyxXQUFXLFdBQVcsS0FBSyxLQUFLLEtBQUssV0FBVyxXQUFXLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxLQUFLLFVBQVUsS0FBSyxLQUFLLEtBQUssVUFBVSxXQUFXLEtBQUssS0FBSyxXQUFXLFVBQVUsVUFBVSxXQUFXLEtBQUssS0FBSyxXQUFXLFdBQVcsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsVUFBVSxXQUFXLFdBQVcsV0FBVyxXQUFXLEtBQUssS0FBSyxLQUFLLFVBQVUsS0FBSyxLQUFLLEtBQUssVUFBVSxVQUFVLFdBQVcsS0FBSyxLQUFLLEtBQUssVUFBVSxLQUFLLEtBQUssS0FBSyxVQUFVLFdBQVcsS0FBSyxLQUFLLFdBQVcsV0FBVyxXQUFXLEtBQUssS0FBSyxXQUFXLEtBQUssS0FBSyxLQUFLLFVBQVUsS0FBSyxLQUFLLEtBQUssV0FBVyxXQUFXLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxXQUFXLFdBQVcsS0FBSyxLQUFLLFdBQVcsV0FBVyxXQUFXLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFdBQVcsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxVQUFVLFVBQVUsV0FBVyxLQUFLLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxLQUFLLFVBQVUsV0FBVyxLQUFLLEtBQUssV0FBVyxXQUFXLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLEtBQUssVUFBVSxLQUFLLEtBQUssS0FBSyxXQUFXLFdBQVcsS0FBSyxLQUFLLFVBQVUsS0FBSyxLQUFLLFdBQVcsV0FBVyxLQUFLLEtBQUssV0FBVyxXQUFXLFdBQVcsV0FBVyxLQUFLLEtBQUssV0FBVyxLQUFLLE1BQU0sV0FBVyxVQUFVLFdBQVcsS0FBSyxNQUFNLFdBQVcsS0FBSyxNQUFNLFVBQVUsS0FBSyxNQUFN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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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Ozs7OztBQ0FIOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FOOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0E4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBcEM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FGOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FFOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FEOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU07Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUY7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWlCOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FkOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FKOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FGOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FPOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBWDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBaUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQTFCOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FIOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FGOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FhOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FUOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FNOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FEOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FHOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FKOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FUOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FWOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FPOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FUOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FGOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FTOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FSOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FIOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FIOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FSOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FIOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FJOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FROzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FSOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FIOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FZOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FKOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FEOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FUOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FLOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FWOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FQOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FROzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FQOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FQOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FPOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FOOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FGOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FMOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FKOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FWOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FLOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FUOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBYjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBbEI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QWdLQXZFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QW9DQTVOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7OztBQzNLQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BY3Rpdml0eURvd25sb2FkLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWRtaW5IZWFkZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CcmVhZENydW1iLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa1B1Ymxpc2hpbmdFcnJvclBvcHVwLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRGF0ZVJhbmdlV2lkZ2V0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRGVzY3JpcHRpb25Gb3JtLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRXJyb3JNZXNzYWdlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRXJyb3JQb3BVcC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0hvdmVyVGV4dC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0xvYWRlci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL05hdkRyb3Bkb3duLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUG9wdXBNb2RhbC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1JhZGlhbFByb2dyZXNzQmFyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvVGFibGVMb2FkZXJDb21wb25lbnQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNMaXN0RXJyb3IudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNMb2FkZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNVcGxvYWRJbmRpY2F0b3IudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9idXR0b25zL0RlbGV0ZUJ1dHRvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvTGluay52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvUHVibGlzaEJ1dHRvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvVW5QdWJsaXNoQnV0dG9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvRGVsZXRlQWN0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvRXJyb3JMaXN0cy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0hhdmVOb3RBZGRlZFlldC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL09yZ2FuaXphdGlvblB1Ymxpc2hVbnB1Ymxpc2hCdXR0b24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1N0aWNreUVycm9ycy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1VwbG9hZGVkRXJyb3JzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3RhdHVzL0VsZW1lbnRTdGF0dXMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zdGF0dXMvUHJldmlvdXNseVB1Ymxpc2hlZC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eURlZmF1bHRWYWx1ZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eURldGFpbC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eUluZGV4LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0NyZWF0ZU1vZGFsLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9FcnJvckl0ZW0udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL1B1Ymxpc2hTZWxlY3RlZC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvUmVmcmVzaFRvYXN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9WYWxpZGF0aW9uRXJyb3JzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0FjdGl2aXR5RGF0ZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Db25kaXRpb25zLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0NvbnRhY3RJbmZvLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0h1bWFuaXRhcmlhblNjb3BlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0lhdGlJZGVudGlmaWVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0xlZ2FjeURhdGEudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvTG9jYXRpb24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvT3RoZXJJZGVudGlmaWVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BhcnRpY2lwYXRpbmdPcmcudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUGxhbm5lZERpc2J1cnNlbWVudC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Qb2xpY3lNYXJrZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVjaXBpZW50Q291bnRyeS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZWNpcGllbnRSZWdpb24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVsYXRlZEFjdGl2aXR5LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlcG9ydGluZ09yZ2FuaXphdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZXN1bHQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvU2VjdG9yLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1RhZy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9UaXRsZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9UcmFuc2FjdGlvbnMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9JbmRpY2F0b3JEZXRhaWwudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9JbmRpY2F0b3JMaXN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvQWdncmVnYXRpb25TdGF0dXMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9CYXNlbGluZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvRG9jdW1lbnRMaW5rLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvSW5kaWNhdG9yQXNjZW5kaW5nLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvTWVhc3VyZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1BlcmlvZC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1JlZmVyZW5jZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1RpdGxlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXRpZXNFbGVtZW50cy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0eUVsZW1lbnQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWRkQWN0aXZpdHlCdXR0b24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9FbGVtZW50c05vdGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRW1wdHlBY3Rpdml0eS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9QYWdlVGl0bGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvU2lkZWJhckhlbHBCbG9jay52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9UYWJsZUxheW91dC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL1BlcmlvZHNEZXRhaWwudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9QZXJpb2RzTGlzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL2VsZW1lbnRzL0FjdHVhbFZhbHVlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvZWxlbWVudHMvVGFyZ2V0VmFsdWUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHREZXRhaWwudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHRFbGVtZW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0TGlzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL0RvY3VtZW50TGluay52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL0luZGljYXRvci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1JlZmVyZW5jZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1Jlc3VsdFR5cGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9UaXRsZURlc2NyaXB0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkRldGFpbC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25FbGVtZW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkxpc3QudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0FpZFR5cGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9EaXNidXJzZW1lbnRDaGFubmVsLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9GaW5hbmNlVHlwZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRmxvd1R5cGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1Byb3ZpZGVyT3JnYW5pemF0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNlaXZlck9yZ2FuaXphdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjaXBpZW50Q291bnRyeS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjaXBpZW50UmVnaW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9TZWN0b3IudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RpZWRTdGF0dXMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RyYW5zYWN0aW9uRGF0ZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVHJhbnNhY3Rpb25UeXBlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9WYWx1ZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hdWRpdC9BdWRpdExpc3RpbmcudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZEdyYXBoLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkUGFnZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9BY3Rpdml0eVVwbG9hZC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvQWN0aXZpdHlYbHNVcGxvYWQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydExpc3QudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydFBsYWNlaG9sZGVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9MaXN0RWxlbWVudC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvWGxzTGlzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRGF0YS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRWxlbWVudHMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Eb2N1bWVudExpbmsudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlY2lwaWVudENvdW50cnlCdWRnZXQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlcG9ydGluZ09yZ0J1ZGdldC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVwb3J0aW5nT3JnYW5pc2F0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZXBvcnRpbmdSZWdpb25CdWRnZXQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1RvdGFsQnVkZ2V0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Ub3RhbEV4cGVuZGl0dXJlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Bhc3N3b3JkUmVjb3ZlcnkudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYWdlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Jlc2V0UGFzc3dvcmQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc2V0dGluZy9TZXR0aW5nRGVmYXVsdEZvcm0udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc2V0dGluZy9TZXR0aW5nUGFnZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zZXR0aW5nL1NldHRpbmdQdWJsaXNoaW5nRm9ybS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL09yZ2FuaXNhdGlvbkxpc3QudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9TeXN0ZW1WZXJzaW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vY29tcG9uZW50cy9BZG1pbkJhci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL2NvbXBvbmVudHMvVGFibGVMaXN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlckxpc3RpbmcudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvdXNlci9Vc2VyUHJvZmlsZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvQWJvdXRQYWdlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9FbWFpbFZlcmlmaWNhdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVJlZ2lzdGVyUGFnZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVN0YW5kYXJkLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9QdWJsaXNoaW5nQ2hlY2tsaXN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9SZWdpc3RlclBhZ2UudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1N1cHBvcnRQYWdlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9BZG1pbkZvb3Rlci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvSm9pbk5vdy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvU2lnbkluLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJGb290ZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1dlYkhlYWRlci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9hcHAudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb3NhYmxlL2NvcmVFbGVtZW50cy50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvc2FibGUvZGF0ZUZvcm1hdC50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvc2FibGUvZW5jcnlwdGlvbi50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvc2FibGUvdGl0bGUudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyLnRzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9zYWJsZS91dGlscy50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3N0b3JlL2FjdGl2aXRpZXMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9zdG9yZS9hY3Rpdml0aWVzL3Nob3cudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9zdG9yZS9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3N0b3JlL3NldHRpbmcvYWN0aW9ucy50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3N0b3JlL3NldHRpbmcvbXV0YXRpb24udHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9zdG9yZS9zZXR0aW5nL3N0YXRlLnRzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvSW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0luZGV4LnRzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9lbGVtZW50cy9JbmRleC50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvSW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvSW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvSW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvV2VsY29tZVBhZ2UudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9TaGltbWVyTG9hZGluZy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NwaW5uZXJMb2FkZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlPzIyY2QiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xpc3RFcnJvci52dWU/OGYzYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3Bpbm5lckxvYWRlci52dWU/YzgwOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL1RhYmxlTGF5b3V0LnZ1ZT8yNGU5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0xpc3RFbGVtZW50LnZ1ZT85NzhhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L1hsc0xpc3QudnVlPzZlMDMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL2NvbXBvbmVudHMvVGFibGVMaXN0LnZ1ZT84YTdjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvdXNlci9Vc2VyTGlzdGluZy52dWU/NDg4ZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWRtaW5IZWFkZXIudnVlP2I5Y2UiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1bGtwdWJsaXNoV2l0aFhscy52dWU/ZDU5OCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRXJyb3JNZXNzYWdlLnZ1ZT83Y2U4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Ib3ZlclRleHQudnVlPzc4M2EiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0xvYWRlci52dWU/NTkzOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUG9wdXBNb2RhbC52dWU/MWYwOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvU2hpbW1lckxvYWRpbmcudnVlP2I3ZGEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0Vycm9yTGlzdHMudnVlPzYzMTEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZT85ZGU4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9TdGlja3lFcnJvcnMudnVlP2YzNWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1VwbG9hZGVkRXJyb3JzLnZ1ZT8xNjEzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlJbmRleC52dWU/NWRiNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0NyZWF0ZU1vZGFsLnZ1ZT84ZGY3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL0Vycm9ySXRlbS52dWU/NTdhZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/NDUxMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlPzdkN2UiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlP2I0Y2EiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvSW1wb3J0TGlzdC52dWU/MTkwNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25EYXRhLnZ1ZT81ZmE1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYWdlLnZ1ZT8yZGViIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0lhdGlSZWdpc3RlclBhZ2UudnVlPzhiMGEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvUmVnaXN0ZXJQYWdlLnZ1ZT8xMTQ3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1NpZ25Jbi52dWU/MjcwZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJIZWFkZXIudnVlPzI2NTAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2FwcC5zY3NzPzdhZGMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL3dlYnBvcnRhbC1hcHAuc2Nzcz9lMzdkIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlLyBzeW5jIF5cXC5cXC8uKiQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2FjdGl2aXR5X2RhdGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9hY3Rpdml0eV9zY29wZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2FjdGl2aXR5X3N0YXR1cy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2J1ZGdldC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2J1aWxkaW5nLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvY2FwaXRhbF9zcGVuZC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2NvbGxhYm9yYXRpb25fdHlwZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2NvbmRpdGlvbnMuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jb250YWN0X2luZm8uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jb3VudHJ5X2J1ZGdldF9pdGVtcy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2Nycy1hZGQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9kZWZhdWx0X2FpZF90eXBlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvZGVmYXVsdF9maW5hbmNlX3R5cGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9kZWZhdWx0X2Zsb3dfdHlwZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2Rlc2NyaXB0aW9uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvZG9jdW1lbnRfbGluay5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2h1bWFuaXRhcmlhbl9zY29wZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2lhdGlfaWRlbnRpZmllci5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2luZGljYXRvci5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2xlZ2FjeV9kYXRhLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvbG9jYXRpb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9vdGhlcl9pZGVudGlmaWVyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcGFydGljaXBhdGluZ19vcmcuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9wZXJpb2Quc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9wbGFubmVkX2Rpc2J1cnNlbWVudC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3BvbGljeV9tYXJrZXIuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9yZWNpcGllbnRfY291bnRyeS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3JlY2lwaWVudF9yZWdpb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9yZWxhdGVkX2FjdGl2aXR5LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcmVwb3J0aW5nX29yZy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3Jlc3VsdC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3Jlc3VsdHMuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9zZWN0b3Iuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy90YWcuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy90aXRsZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3RyYW5zYWN0aW9ucy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FkZC1tb3JlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWRkLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWxlcnQtb3V0bGluZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FsZXJ0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWxpZ24tY2VudGVyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWxpZ24tcmlnaHQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hcHByb3ZlZC1jbG91ZC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Fycm93LWRvd24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hcnJvdy1sZWZ0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYXJyb3ctcmlnaHQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hcnJvdy1zaG9ydC1sZWZ0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYXNjZW5kaW5nLWFycm93LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYmlsbC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2JveC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2J1ZGdldC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2J1aWxkaW5nLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2FuY2VsLWNsb3VkLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2FuY2VsLWNyb3NzLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2hlY2stY2lyY2xlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2hlY2tib3guc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jaGVja2VkLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2hldnJvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NpcmNsZS1yZWQtY3Jvc3Muc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jbG9zZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NvcHlyaWdodC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NvcmUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jcm9zcy1pY29uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY3Jvc3Muc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kZWZhdWx0LTEuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kZWZhdWx0LTIuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kZWxldGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kZXNjZW5kaW5nLWFycm93LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZG9jdW1lbnQtd3JpdGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kb3VibGUtdGljay5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Rvd25sb2FkLWNvZGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kb3dubG9hZC1maWxlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZG93bmxvYWQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kcm9wZG93bi1hcnJvdy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2VkaXQtYWN0aW9uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZWRpdC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2V4Y2xhbWF0aW9uLXdhcm5pbmcuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9leHBvcnQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9leHRlcm5hbC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2V5ZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2ZvbGRlci5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Zvb3Rlci1sb2dvLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZnVubmVsLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZ3JvdXAuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9oYW1idXJnZXItY3Jvc3Muc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9oZWFkZXItbG9nby5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2hlYWRwaG9uZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2hlbHAuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9oaWRlLXBhc3N3b3JkLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGlzdG9yeS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2ljLXZlcmlmaWNhdGlvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2luZGljYXRvci1pY29uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcva2V5LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbGVmdC1hcnJvdy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2xvZ28td2hpdGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9sb2dvLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbG9nb3V0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbWFnbmlmeWluZy1nbGFzcy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL21haWwuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9taW5pbWl6ZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL21vb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9ub3RlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL2J1aWxkaW5nLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL2Rlc2NyaXB0aW9uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL2RvY3VtZW50X2xpbmsuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvbmFtZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9vcmdfaWRlbnRpZmllci5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9vcmdhbmlzYXRpb25faWRlbnRpZmllci5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9vcmdhbml6YXRpb25faWRlbnRpZmllci5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZWNpcGllbnRfY291bnRyeV9idWRnZXQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvcmVjaXBpZW50X29yZ19idWRnZXQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvcmVjaXBpZW50X3JlZ2lvbl9idWRnZXQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvcmVwb3J0aW5nX29yZy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZXBvcnRpbmdfb3JnYW5pc2F0aW9uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3RpdGxlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3RvdGFsX2J1ZGdldC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy90b3RhbF9leHBlbmRpdHVyZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3BhbmVsLXNlYXJjaC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3BlcmlvZC1pY29uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcGx1cy1vdXRsaW5lZC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3BsdXMuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wdWJsaXNoLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcHctbG9jay5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3F1ZXN0aW9uLW1hcmsuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9yZWQtY3Jvc3Muc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9yZWQtZG90LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcmVkby5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3Jlc3VsdC1pY29uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcmlnaHQtYXJyb3cuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zZWFyY2guc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zZXR0aW5nLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc2hpZWxkLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc21pbGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zb3J0LWFzY2VuZGluZy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NvcnQtZGVzY2VuZGluZy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NvcnQtaWNvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3N0YXIuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy90aWNrLW91dGxpbmUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy90aWNrLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdGlja2VkLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdGltZXMtY2lyY2xlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdHdpdHRlci5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3VwLWFycm93LW91dGxpbmUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy91cGxvYWQtZmlsZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3VzZXItcHJvZmlsZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3VzZXIuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy93YXJuaW5nLWFjdGl2aXR5LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvd2FybmluZy1maWxsLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvd2FybmluZy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3lvdXR1YmUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlPzk3MDgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xpc3RFcnJvci52dWU/NWI5NyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3Bpbm5lckxvYWRlci52dWU/M2MzZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL1RhYmxlTGF5b3V0LnZ1ZT8wMmNlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0xpc3RFbGVtZW50LnZ1ZT9hYmNlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L1hsc0xpc3QudnVlPzViNDkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL2NvbXBvbmVudHMvVGFibGVMaXN0LnZ1ZT9mMjVkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvdXNlci9Vc2VyTGlzdGluZy52dWU/ZjU3NiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWRtaW5IZWFkZXIudnVlP2Y2ZTkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1bGtwdWJsaXNoV2l0aFhscy52dWU/NzkyNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRXJyb3JNZXNzYWdlLnZ1ZT84ODk4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Ib3ZlclRleHQudnVlP2I3N2YiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0xvYWRlci52dWU/Njg3NCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUG9wdXBNb2RhbC52dWU/ZmQ4NiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvU2hpbW1lckxvYWRpbmcudnVlP2I0YmMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0Vycm9yTGlzdHMudnVlP2NlOTgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZT82YTE3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9TdGlja3lFcnJvcnMudnVlPzVkMjEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1VwbG9hZGVkRXJyb3JzLnZ1ZT9iNjFmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlJbmRleC52dWU/ZTNlNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0NyZWF0ZU1vZGFsLnZ1ZT8yZThmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL0Vycm9ySXRlbS52dWU/ZDY3ZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/NzczNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlP2ZlYWQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlP2M0ZmEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvSW1wb3J0TGlzdC52dWU/NmNkNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25EYXRhLnZ1ZT84MWQ1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYWdlLnZ1ZT8wZWFiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0lhdGlSZWdpc3RlclBhZ2UudnVlP2Q2MGIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvUmVnaXN0ZXJQYWdlLnZ1ZT82OWIxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1NpZ25Jbi52dWU/ZDM4MCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJIZWFkZXIudnVlPzE5MGIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0FjdGl2aXR5RG93bmxvYWQudnVlPzRmNjkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0FkbWluSGVhZGVyLnZ1ZT8zYzJkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CcmVhZENydW1iLnZ1ZT9hYTFlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdWxrUHVibGlzaGluZ0Vycm9yUG9wdXAudnVlP2FkYjMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1bGtwdWJsaXNoV2l0aFhscy52dWU/N2E5OSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZT82ZjExIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9EYXRlUmFuZ2VXaWRnZXQudnVlP2M2OTkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0Rlc2NyaXB0aW9uRm9ybS52dWU/MTQxMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRXJyb3JNZXNzYWdlLnZ1ZT9lMWQwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9FcnJvclBvcFVwLnZ1ZT8zMmZhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Ib3ZlclRleHQudnVlP2EyZTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0xvYWRlci52dWU/NDJiNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZT9mNTU5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9OYXZEcm9wZG93bi52dWU/YWUwYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUG9wdXBNb2RhbC52dWU/ZWQzMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUmFkaWFsUHJvZ3Jlc3NCYXIudnVlPzc0YTciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1NoaW1tZXJMb2FkaW5nLnZ1ZT8yNjdiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9UYWJsZUxvYWRlckNvbXBvbmVudC52dWU/NWIxZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvVGFibGVQYWdpbmF0aW9uLnZ1ZT8yN2IyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlPzM5MWQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xpc3RFcnJvci52dWU/MDEyMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvWGxzTG9hZGVyLnZ1ZT82YTVjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNVcGxvYWRJbmRpY2F0b3IudnVlPzgyYmIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvRGVsZXRlQnV0dG9uLnZ1ZT82ZTQxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9idXR0b25zL0xpbmsudnVlPzI0N2MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvUHVibGlzaEJ1dHRvbi52dWU/YThkNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9VblB1Ymxpc2hCdXR0b24udnVlPzQxYTIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0RlbGV0ZUFjdGlvbi52dWU/OGM5MCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvRXJyb3JMaXN0cy52dWU/ODg4ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvSGF2ZU5vdEFkZGVkWWV0LnZ1ZT85MzYxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9Pcmdhbml6YXRpb25QdWJsaXNoVW5wdWJsaXNoQnV0dG9uLnZ1ZT85MTdiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlP2UyZjAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZT9mZGM3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9TdGlja3lFcnJvcnMudnVlP2FmY2MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1VwbG9hZGVkRXJyb3JzLnZ1ZT9mMjQ1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zcGlubmVyTG9hZGVyLnZ1ZT81MDZhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zdGF0dXMvRWxlbWVudFN0YXR1cy52dWU/ZGE1NCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3RhdHVzL1ByZXZpb3VzbHlQdWJsaXNoZWQudnVlP2Y4NzMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eURlZmF1bHRWYWx1ZS52dWU/ZDRhOSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5RGV0YWlsLnZ1ZT85NDY0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlJbmRleC52dWU/MDQ2ZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0NyZWF0ZU1vZGFsLnZ1ZT84ZTZkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL0Vycm9ySXRlbS52dWU/MDEzZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9QdWJsaXNoU2VsZWN0ZWQudnVlPzM5ZGEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvUmVmcmVzaFRvYXN0LnZ1ZT85MWJhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL1ZhbGlkYXRpb25FcnJvcnMudnVlPzJiZjAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9BY3Rpdml0eURhdGUudnVlPzJmMGIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Db25kaXRpb25zLnZ1ZT9jMThlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvQ29udGFjdEluZm8udnVlPzYwNzIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9EZXNjcmlwdGlvbi52dWU/NmI1YSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0h1bWFuaXRhcmlhblNjb3BlLnZ1ZT81OWJiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvSWF0aUlkZW50aWZpZXIudnVlPzJkNzYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9MZWdhY3lEYXRhLnZ1ZT9iOGRiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvTG9jYXRpb24udnVlPzJiYmMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9PdGhlcklkZW50aWZpZXIudnVlPzcyM2UiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9QYXJ0aWNpcGF0aW5nT3JnLnZ1ZT84OThiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUGxhbm5lZERpc2J1cnNlbWVudC52dWU/MGRjNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BvbGljeU1hcmtlci52dWU/OGViOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlY2lwaWVudENvdW50cnkudnVlPzgxMGYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZWNpcGllbnRSZWdpb24udnVlP2JiODgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZWxhdGVkQWN0aXZpdHkudnVlPzVlOTgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZXBvcnRpbmdPcmdhbml6YXRpb24udnVlPzNiZTkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZXN1bHQudnVlPzE4ZGUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9TZWN0b3IudnVlPzIyNzkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9UYWcudnVlPzhkMTciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9UaXRsZS52dWU/YzNlMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1RyYW5zYWN0aW9ucy52dWU/NTAyNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvSW5kaWNhdG9yRGV0YWlsLnZ1ZT80OTA2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9JbmRpY2F0b3JMaXN0LnZ1ZT8wOTU4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9BZ2dyZWdhdGlvblN0YXR1cy52dWU/NDFiNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvQmFzZWxpbmUudnVlPzgwNjAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZT85NzllIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9Eb2N1bWVudExpbmsudnVlPzRkODciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0luZGljYXRvckFzY2VuZGluZy52dWU/NDZkNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvTWVhc3VyZS52dWU/MWM2YiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvUGVyaW9kLnZ1ZT8yZTc5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9SZWZlcmVuY2UudnVlP2FiNzEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1RpdGxlLnZ1ZT8wMTMxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWN0aXZpdGllc0VsZW1lbnRzLnZ1ZT83NWUwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWN0aXZpdHlFbGVtZW50LnZ1ZT8yMTZhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWRkQWN0aXZpdHlCdXR0b24udnVlPzQ3NDMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZT8xMTJiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRWxlbWVudHNOb3RlLnZ1ZT80NmE2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRW1wdHlBY3Rpdml0eS52dWU/NTQxZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL1BhZ2VUaXRsZS52dWU/MjExYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL1NpZGViYXJIZWxwQmxvY2sudnVlPzM4ODYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9UYWJsZUxheW91dC52dWU/NzA0NiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvUGVyaW9kc0RldGFpbC52dWU/ZTY0YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvUGVyaW9kc0xpc3QudnVlP2MzMmMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL2VsZW1lbnRzL0FjdHVhbFZhbHVlLnZ1ZT80ZWE2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9lbGVtZW50cy9UYXJnZXRWYWx1ZS52dWU/MmM5OCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0RGV0YWlsLnZ1ZT80N2VlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHRFbGVtZW50LnZ1ZT8zZWYxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHRMaXN0LnZ1ZT84YjNjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9Eb2N1bWVudExpbmsudnVlPzdkMTUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL0luZGljYXRvci52dWU/ODVlNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvUmVmZXJlbmNlLnZ1ZT8yOTMwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9SZXN1bHRUeXBlLnZ1ZT9mM2Y0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9UaXRsZURlc2NyaXB0aW9uLnZ1ZT9lMDlhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL1RyYW5zYWN0aW9uRGV0YWlsLnZ1ZT81OGYyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL1RyYW5zYWN0aW9uRWxlbWVudC52dWU/ZGI1ZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkxpc3QudnVlPzE1MDgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvQWlkVHlwZS52dWU/MzJmOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9EZXNjcmlwdGlvbi52dWU/MTk1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9EaXNidXJzZW1lbnRDaGFubmVsLnZ1ZT84MWQxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0ZpbmFuY2VUeXBlLnZ1ZT80YTg0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0Zsb3dUeXBlLnZ1ZT83MTM0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1Byb3ZpZGVyT3JnYW5pemF0aW9uLnZ1ZT8zMTUxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1JlY2VpdmVyT3JnYW5pemF0aW9uLnZ1ZT82MmVjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1JlY2lwaWVudENvdW50cnkudnVlPzAxNTAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjaXBpZW50UmVnaW9uLnZ1ZT9kZjYzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1NlY3Rvci52dWU/YWIzZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9UaWVkU3RhdHVzLnZ1ZT83OGQyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RyYW5zYWN0aW9uRGF0ZS52dWU/ZTg5ZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9UcmFuc2FjdGlvblR5cGUudnVlPzgzY2EiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVmFsdWUudnVlPzExODciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hdWRpdC9BdWRpdExpc3RpbmcudnVlPzk2ZjIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkR3JhcGgudnVlPzZmZDQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlPzQwOWIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkUGFnZS52dWU/YmM2ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRTdGF0c1NlY3Rpb24udnVlPzY1MzQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvQWN0aXZpdHlVcGxvYWQudnVlP2Y4NzciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvQWN0aXZpdHlYbHNVcGxvYWQudnVlPzE1MzYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvSW1wb3J0TGlzdC52dWU/ZmY4ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9JbXBvcnRQbGFjZWhvbGRlci52dWU/MWE1MCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9MaXN0RWxlbWVudC52dWU/ZTYxNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9YbHNMaXN0LnZ1ZT9hYWViIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkRhdGEudnVlP2QyZTUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRWxlbWVudHMudnVlP2FhNGEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWwudnVlP2I4NzUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvRG9jdW1lbnRMaW5rLnZ1ZT8wMDQ0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlY2lwaWVudENvdW50cnlCdWRnZXQudnVlPzM3ZWQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVwb3J0aW5nT3JnQnVkZ2V0LnZ1ZT85ZWFiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlcG9ydGluZ09yZ2FuaXNhdGlvbi52dWU/OWVhNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZXBvcnRpbmdSZWdpb25CdWRnZXQudnVlP2IxMDgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvVG90YWxCdWRnZXQudnVlP2RkMmIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvVG90YWxFeHBlbmRpdHVyZS52dWU/N2IzNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Bhc3N3b3JkUmVjb3ZlcnkudnVlPzljYmQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9SZXNldFBhZ2UudnVlP2YxYWMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9SZXNldFBhc3N3b3JkLnZ1ZT80MzYzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc2V0dGluZy9TZXR0aW5nRGVmYXVsdEZvcm0udnVlPzkxNWIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zZXR0aW5nL1NldHRpbmdQYWdlLnZ1ZT8wMTAzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc2V0dGluZy9TZXR0aW5nUHVibGlzaGluZ0Zvcm0udnVlP2UyNDQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL09yZ2FuaXNhdGlvbkxpc3QudnVlP2U1MDciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL1N5c3RlbVZlcnNpb24udnVlPzgxOTIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL2NvbXBvbmVudHMvQWRtaW5CYXIudnVlPzY2NjAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL2NvbXBvbmVudHMvVGFibGVMaXN0LnZ1ZT8zMTE3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvdXNlci9Vc2VyTGlzdGluZy52dWU/MDhiMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlclByb2ZpbGUudnVlPzdiYmMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvQWJvdXRQYWdlLnZ1ZT83OGRjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZT9jMGE2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0lhdGlSZWdpc3RlclBhZ2UudnVlPzIzZTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVN0YW5kYXJkLnZ1ZT82NTJjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1B1Ymxpc2hpbmdDaGVja2xpc3QudnVlPzg2OWYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvUmVnaXN0ZXJQYWdlLnZ1ZT8xNWU1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1N1cHBvcnRQYWdlLnZ1ZT8wNThjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1dlbGNvbWVQYWdlLnZ1ZT8wZGViIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL0FkbWluRm9vdGVyLnZ1ZT80MjJiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL0pvaW5Ob3cudnVlPzVhNTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvU2lnbkluLnZ1ZT8wMzVkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1dlYkZvb3Rlci52dWU/YTdkMiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJIZWFkZXIudnVlP2FlYjMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0FjdGl2aXR5RG93bmxvYWQudnVlPzMyZmIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0FkbWluSGVhZGVyLnZ1ZT9kNDgwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CcmVhZENydW1iLnZ1ZT8xYjI2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdWxrUHVibGlzaGluZ0Vycm9yUG9wdXAudnVlPzRmZGQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1bGtwdWJsaXNoV2l0aFhscy52dWU/ZTIyZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZT81MTIxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9EYXRlUmFuZ2VXaWRnZXQudnVlP2ZlMmIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0Rlc2NyaXB0aW9uRm9ybS52dWU/ZGQxZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRXJyb3JNZXNzYWdlLnZ1ZT9kN2I3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9FcnJvclBvcFVwLnZ1ZT80MjgxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Ib3ZlclRleHQudnVlPzEyMGUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0xvYWRlci52dWU/ZWU4YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZT81NmJkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9OYXZEcm9wZG93bi52dWU/YmNkZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUG9wdXBNb2RhbC52dWU/Mzk0NyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUmFkaWFsUHJvZ3Jlc3NCYXIudnVlPzAxYjkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1RhYmxlTG9hZGVyQ29tcG9uZW50LnZ1ZT9iMTJmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlPzZkM2MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWU/MzVkNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvWGxzTGlzdEVycm9yLnZ1ZT9iY2FhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNMb2FkZXIudnVlPzE3NDIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc1VwbG9hZEluZGljYXRvci52dWU/ZmU1NSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9EZWxldGVCdXR0b24udnVlPzhiMmIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvTGluay52dWU/ZmE1ZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9QdWJsaXNoQnV0dG9uLnZ1ZT9hYmUwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9idXR0b25zL1VuUHVibGlzaEJ1dHRvbi52dWU/MGU4YiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvRGVsZXRlQWN0aW9uLnZ1ZT8xMzM1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9FcnJvckxpc3RzLnZ1ZT8wY2I3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9IYXZlTm90QWRkZWRZZXQudnVlPzg5NGYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL09yZ2FuaXphdGlvblB1Ymxpc2hVbnB1Ymxpc2hCdXR0b24udnVlP2NiMmQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWU/YjI2YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlP2Y3ODMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1N0aWNreUVycm9ycy52dWU/NmU5NiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvVXBsb2FkZWRFcnJvcnMudnVlPzBhMGUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3N0YXR1cy9FbGVtZW50U3RhdHVzLnZ1ZT9mNDNkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zdGF0dXMvUHJldmlvdXNseVB1Ymxpc2hlZC52dWU/MmFlYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5RGVmYXVsdFZhbHVlLnZ1ZT82NWMxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlEZXRhaWwudnVlP2IxZTMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eUluZGV4LnZ1ZT9jMjZkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQ3JlYXRlTW9kYWwudnVlP2Y1ODgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvRXJyb3JJdGVtLnZ1ZT81MDYyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL1B1Ymxpc2hTZWxlY3RlZC52dWU/Nzc0MiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9SZWZyZXNoVG9hc3QudnVlP2Y5NjQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvVmFsaWRhdGlvbkVycm9ycy52dWU/M2E5MiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0FjdGl2aXR5RGF0ZS52dWU/MzNiNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0NvbmRpdGlvbnMudnVlPzU5YTUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Db250YWN0SW5mby52dWU/OWRhNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZT80YmUyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvSHVtYW5pdGFyaWFuU2NvcGUudnVlP2MyNzMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9JYXRpSWRlbnRpZmllci52dWU/MjZlMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0xlZ2FjeURhdGEudnVlPzcxYTUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Mb2NhdGlvbi52dWU/MzQwYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL090aGVySWRlbnRpZmllci52dWU/YTJjNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BhcnRpY2lwYXRpbmdPcmcudnVlPzcwYzEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9QbGFubmVkRGlzYnVyc2VtZW50LnZ1ZT9mZjRkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUG9saWN5TWFya2VyLnZ1ZT9kZWIwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVjaXBpZW50Q291bnRyeS52dWU/ZDg1NyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlY2lwaWVudFJlZ2lvbi52dWU/ZDM4YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlbGF0ZWRBY3Rpdml0eS52dWU/M2RlNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlcG9ydGluZ09yZ2FuaXphdGlvbi52dWU/ZDVjZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1Jlc3VsdC52dWU/NzRmNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1NlY3Rvci52dWU/NDk2YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1RhZy52dWU/MDMxNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1RpdGxlLnZ1ZT84MTA4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvVHJhbnNhY3Rpb25zLnZ1ZT8wMWUwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9JbmRpY2F0b3JEZXRhaWwudnVlPzk3MTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL0luZGljYXRvckxpc3QudnVlPzJjYzciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0FnZ3JlZ2F0aW9uU3RhdHVzLnZ1ZT8wMThkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9CYXNlbGluZS52dWU/MGMyYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvRGVzY3JpcHRpb24udnVlP2ZmOGYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0RvY3VtZW50TGluay52dWU/NDQyNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvSW5kaWNhdG9yQXNjZW5kaW5nLnZ1ZT8xM2FhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9NZWFzdXJlLnZ1ZT9lYWU2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9QZXJpb2QudnVlPzM4ZjYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1JlZmVyZW5jZS52dWU/OTI0MiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvVGl0bGUudnVlPzlmZjAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0aWVzRWxlbWVudHMudnVlPzhjOTQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0eUVsZW1lbnQudnVlPzVjNTIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BZGRBY3Rpdml0eUJ1dHRvbi52dWU/YzIwZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlPzk0MjUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9FbGVtZW50c05vdGUudnVlPzA2MTUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9FbXB0eUFjdGl2aXR5LnZ1ZT8yODFlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvUGFnZVRpdGxlLnZ1ZT85ZDFmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvU2lkZWJhckhlbHBCbG9jay52dWU/MGRmNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL1RhYmxlTGF5b3V0LnZ1ZT82MzQwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9QZXJpb2RzRGV0YWlsLnZ1ZT83YTgzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9QZXJpb2RzTGlzdC52dWU/Njc0MyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvZWxlbWVudHMvQWN0dWFsVmFsdWUudnVlPzMzMGUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL2VsZW1lbnRzL1RhcmdldFZhbHVlLnZ1ZT8xNmIwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHREZXRhaWwudnVlPzBhOWMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL1Jlc3VsdEVsZW1lbnQudnVlPzg1MWEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL1Jlc3VsdExpc3QudnVlPzZhNzIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL0RvY3VtZW50TGluay52dWU/YWNjZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvSW5kaWNhdG9yLnZ1ZT8wYjcxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9SZWZlcmVuY2UudnVlPzYzYTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1Jlc3VsdFR5cGUudnVlPzE2MzEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1RpdGxlRGVzY3JpcHRpb24udnVlPzVlMzMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25EZXRhaWwudnVlPzJlNTAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25FbGVtZW50LnZ1ZT81M2IxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL1RyYW5zYWN0aW9uTGlzdC52dWU/OTIwNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9BaWRUeXBlLnZ1ZT8zNDc5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZT84M2YzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0Rpc2J1cnNlbWVudENoYW5uZWwudnVlPzFlNTIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRmluYW5jZVR5cGUudnVlPzVkYzMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRmxvd1R5cGUudnVlP2I1ZDUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUHJvdmlkZXJPcmdhbml6YXRpb24udnVlPzg4MGMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjZWl2ZXJPcmdhbml6YXRpb24udnVlPzljNDciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjaXBpZW50Q291bnRyeS52dWU/YzVhYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNpcGllbnRSZWdpb24udnVlPzRiYjUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvU2VjdG9yLnZ1ZT82ZjgwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RpZWRTdGF0dXMudnVlPzgyNzgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVHJhbnNhY3Rpb25EYXRlLnZ1ZT8wYjk5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RyYW5zYWN0aW9uVHlwZS52dWU/NDU0YiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9WYWx1ZS52dWU/OGJmNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2F1ZGl0L0F1ZGl0TGlzdGluZy52dWU/MjlkMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRHcmFwaC52dWU/MmRlYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWU/NjJkZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRQYWdlLnZ1ZT9kOTcxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZFN0YXRzU2VjdGlvbi52dWU/ZTk3NyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9BY3Rpdml0eVVwbG9hZC52dWU/Y2Y2NSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9BY3Rpdml0eVhsc1VwbG9hZC52dWU/NzUxZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9JbXBvcnRMaXN0LnZ1ZT84NTQwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydFBsYWNlaG9sZGVyLnZ1ZT8yYWIyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0xpc3RFbGVtZW50LnZ1ZT9jOTYxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L1hsc0xpc3QudnVlP2Q1YzkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRGF0YS52dWU/YjMyOSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25FbGVtZW50cy52dWU/ODc4YiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25FbGVtZW50c0RldGFpbC52dWU/YWM0ZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Eb2N1bWVudExpbmsudnVlPzUzOTEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVjaXBpZW50Q291bnRyeUJ1ZGdldC52dWU/N2EwMiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZXBvcnRpbmdPcmdCdWRnZXQudnVlPzZhZjMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVwb3J0aW5nT3JnYW5pc2F0aW9uLnZ1ZT8wOTgzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlcG9ydGluZ1JlZ2lvbkJ1ZGdldC52dWU/YTA3OSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Ub3RhbEJ1ZGdldC52dWU/NGJhZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Ub3RhbEV4cGVuZGl0dXJlLnZ1ZT81MWQyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUGFzc3dvcmRSZWNvdmVyeS52dWU/MjZlMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Jlc2V0UGFnZS52dWU/ZThiMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Jlc2V0UGFzc3dvcmQudnVlP2VlNDkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zZXR0aW5nL1NldHRpbmdEZWZhdWx0Rm9ybS52dWU/ODVlOSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ1BhZ2UudnVlP2YwZTMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zZXR0aW5nL1NldHRpbmdQdWJsaXNoaW5nRm9ybS52dWU/M2YzNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vT3JnYW5pc2F0aW9uTGlzdC52dWU/NDQwYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vU3lzdGVtVmVyc2lvbi52dWU/MTg2ZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vY29tcG9uZW50cy9BZG1pbkJhci52dWU/NDI0YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vY29tcG9uZW50cy9UYWJsZUxpc3QudnVlP2U1ZTkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy91c2VyL1VzZXJMaXN0aW5nLnZ1ZT8wYjYzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvdXNlci9Vc2VyUHJvZmlsZS52dWU/OTBkNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9BYm91dFBhZ2UudnVlPzc3MjUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvRW1haWxWZXJpZmljYXRpb24udnVlPzVhMTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVJlZ2lzdGVyUGFnZS52dWU/N2NiMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9JYXRpU3RhbmRhcmQudnVlPzA2YTQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvUHVibGlzaGluZ0NoZWNrbGlzdC52dWU/ZjYzZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9SZWdpc3RlclBhZ2UudnVlPzk4NjMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvU3VwcG9ydFBhZ2UudnVlP2NmZGMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvQWRtaW5Gb290ZXIudnVlP2I4N2IiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvSm9pbk5vdy52dWU/NjYwMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9TaWduSW4udnVlPzYzZDMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvV2ViRm9vdGVyLnZ1ZT82ZGViIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1dlYkhlYWRlci52dWU/MDJmNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWN0aXZpdHlEb3dubG9hZC52dWU/NjY1MCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWRtaW5IZWFkZXIudnVlP2YwZmMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0JyZWFkQ3J1bWIudnVlPzAxNmIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1bGtQdWJsaXNoaW5nRXJyb3JQb3B1cC52dWU/MmIxMiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZT81MzZmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlP2E5NTQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0RhdGVSYW5nZVdpZGdldC52dWU/Y2U4YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRGVzY3JpcHRpb25Gb3JtLnZ1ZT84NDIyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9FcnJvck1lc3NhZ2UudnVlP2ViNTMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0Vycm9yUG9wVXAudnVlP2QxZjUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0hvdmVyVGV4dC52dWU/NjJmNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZT84OGRmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlP2E4OWMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL05hdkRyb3Bkb3duLnZ1ZT8xOTQwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZT8zNDYwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9SYWRpYWxQcm9ncmVzc0Jhci52dWU/NTQyMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvVGFibGVMb2FkZXJDb21wb25lbnQudnVlP2Q3MGMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWU/YjQxMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZT8xMDE3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNMaXN0RXJyb3IudnVlP2VmZTEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xvYWRlci52dWU/ZDA3ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvWGxzVXBsb2FkSW5kaWNhdG9yLnZ1ZT80NGMxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9idXR0b25zL0RlbGV0ZUJ1dHRvbi52dWU/YjJiZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZT85ZjM2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9idXR0b25zL1B1Ymxpc2hCdXR0b24udnVlPzJmYjUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvVW5QdWJsaXNoQnV0dG9uLnZ1ZT85NWE0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9EZWxldGVBY3Rpb24udnVlP2IyZDUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0Vycm9yTGlzdHMudnVlPzcxYzYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0hhdmVOb3RBZGRlZFlldC52dWU/OWQ2OSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbi52dWU/NTNlNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvUGFnZVRpdGxlLnZ1ZT84ZDA5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWU/ZGJmYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvU3RpY2t5RXJyb3JzLnZ1ZT8xZWY4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9VcGxvYWRlZEVycm9ycy52dWU/NjRmYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3RhdHVzL0VsZW1lbnRTdGF0dXMudnVlPzdhMDMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3N0YXR1cy9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZT9iYjk1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlEZWZhdWx0VmFsdWUudnVlPzliNjIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eURldGFpbC52dWU/ODQzOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5SW5kZXgudnVlPzY0ZWYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9DcmVhdGVNb2RhbC52dWU/ZjE5NCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9FcnJvckl0ZW0udnVlPzcwYTEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvUHVibGlzaFNlbGVjdGVkLnZ1ZT8wY2Q3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL1JlZnJlc2hUb2FzdC52dWU/MmE2YiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9WYWxpZGF0aW9uRXJyb3JzLnZ1ZT85ZjY4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvQWN0aXZpdHlEYXRlLnZ1ZT9jYWNkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvQ29uZGl0aW9ucy52dWU/MjAzZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0NvbnRhY3RJbmZvLnZ1ZT80MzVhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvRGVzY3JpcHRpb24udnVlPzA4ZGYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9IdW1hbml0YXJpYW5TY29wZS52dWU/ZWE0MyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0lhdGlJZGVudGlmaWVyLnZ1ZT9hOWUxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvTGVnYWN5RGF0YS52dWU/ODFlYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0xvY2F0aW9uLnZ1ZT82YTJiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvT3RoZXJJZGVudGlmaWVyLnZ1ZT9iYTc1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUGFydGljaXBhdGluZ09yZy52dWU/ZjczMiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BsYW5uZWREaXNidXJzZW1lbnQudnVlPzU0MmUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Qb2xpY3lNYXJrZXIudnVlP2EyOGEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZWNpcGllbnRDb3VudHJ5LnZ1ZT8zOGE3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVjaXBpZW50UmVnaW9uLnZ1ZT9mY2IwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVsYXRlZEFjdGl2aXR5LnZ1ZT85YWQyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVwb3J0aW5nT3JnYW5pemF0aW9uLnZ1ZT9kMzNhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVzdWx0LnZ1ZT8xOTFmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvU2VjdG9yLnZ1ZT8zNTcwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvVGFnLnZ1ZT9kZDIxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvVGl0bGUudnVlP2IyNmYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9UcmFuc2FjdGlvbnMudnVlP2EyMTciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL0luZGljYXRvckRldGFpbC52dWU/ZmQ5NyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvSW5kaWNhdG9yTGlzdC52dWU/Zjg4YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvQWdncmVnYXRpb25TdGF0dXMudnVlPzVlMGEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0Jhc2VsaW5lLnZ1ZT9lMDdhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9EZXNjcmlwdGlvbi52dWU/MWQwNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvRG9jdW1lbnRMaW5rLnZ1ZT9lMGQ4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9JbmRpY2F0b3JBc2NlbmRpbmcudnVlPzFlYjUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL01lYXN1cmUudnVlPzRhMTgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1BlcmlvZC52dWU/Y2Q1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvUmVmZXJlbmNlLnZ1ZT9jODgyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9UaXRsZS52dWU/YzQ4MyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/YmNkNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXR5RWxlbWVudC52dWU/Yzg1YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FkZEFjdGl2aXR5QnV0dG9uLnZ1ZT8wN2U1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/YzRkMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0VsZW1lbnRzTm90ZS52dWU/NzE5NCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0VtcHR5QWN0aXZpdHkudnVlP2Y4OGEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9QYWdlVGl0bGUudnVlP2VhYmYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9TaWRlYmFySGVscEJsb2NrLnZ1ZT9hZDZmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvVGFibGVMYXlvdXQudnVlPzc0ODQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL1BlcmlvZHNEZXRhaWwudnVlP2Q2OGUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL1BlcmlvZHNMaXN0LnZ1ZT83Zjk2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9lbGVtZW50cy9BY3R1YWxWYWx1ZS52dWU/OGFkMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvZWxlbWVudHMvVGFyZ2V0VmFsdWUudnVlP2FkZjMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL1Jlc3VsdERldGFpbC52dWU/YjkxNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0RWxlbWVudC52dWU/NmI1NSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0TGlzdC52dWU/YmM4MSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvRG9jdW1lbnRMaW5rLnZ1ZT80ODE5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9JbmRpY2F0b3IudnVlP2Q2Y2YiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1JlZmVyZW5jZS52dWU/N2Y1MSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvUmVzdWx0VHlwZS52dWU/YTNlMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvVGl0bGVEZXNjcmlwdGlvbi52dWU/OTJiMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkRldGFpbC52dWU/YTQ3MCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkVsZW1lbnQudnVlPzY0MTQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25MaXN0LnZ1ZT8yOGUxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0FpZFR5cGUudnVlPzg0YjciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRGVzY3JpcHRpb24udnVlPzExMzIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRGlzYnVyc2VtZW50Q2hhbm5lbC52dWU/OTNhOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9GaW5hbmNlVHlwZS52dWU/YWQ3NyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9GbG93VHlwZS52dWU/ODE0YiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9Qcm92aWRlck9yZ2FuaXphdGlvbi52dWU/NDQwMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNlaXZlck9yZ2FuaXphdGlvbi52dWU/MTVjNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNpcGllbnRDb3VudHJ5LnZ1ZT9jOWQ1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1JlY2lwaWVudFJlZ2lvbi52dWU/ZDRhMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9TZWN0b3IudnVlPzU3MDciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVGllZFN0YXR1cy52dWU/MTg3YSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9UcmFuc2FjdGlvbkRhdGUudnVlPzIyMTMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVHJhbnNhY3Rpb25UeXBlLnZ1ZT9lOTc2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1ZhbHVlLnZ1ZT85Nzc4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYXVkaXQvQXVkaXRMaXN0aW5nLnZ1ZT8xMmIzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZEdyYXBoLnZ1ZT8wNmE5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT83YTUwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZFBhZ2UudnVlPzQ3ZjAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZT8yZmQxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0FjdGl2aXR5VXBsb2FkLnZ1ZT8yZDQ5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0FjdGl2aXR5WGxzVXBsb2FkLnZ1ZT9mODMyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydExpc3QudnVlP2Q3YWQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvSW1wb3J0UGxhY2Vob2xkZXIudnVlP2UxN2UiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvTGlzdEVsZW1lbnQudnVlP2UzZmYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvWGxzTGlzdC52dWU/ODkyMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25EYXRhLnZ1ZT8wOTc0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkVsZW1lbnRzLnZ1ZT9iMDU0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZT82Y2Y1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL0RvY3VtZW50TGluay52dWU/MjIyNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZWNpcGllbnRDb3VudHJ5QnVkZ2V0LnZ1ZT9kNDBmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlcG9ydGluZ09yZ0J1ZGdldC52dWU/NjgyYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZXBvcnRpbmdPcmdhbmlzYXRpb24udnVlP2I3MzQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVwb3J0aW5nUmVnaW9uQnVkZ2V0LnZ1ZT9hMzRmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1RvdGFsQnVkZ2V0LnZ1ZT80ZTk5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1RvdGFsRXhwZW5kaXR1cmUudnVlPzkyMjQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9QYXNzd29yZFJlY292ZXJ5LnZ1ZT85ODkyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYWdlLnZ1ZT84ZjA0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYXNzd29yZC52dWU/ZjQxNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ0RlZmF1bHRGb3JtLnZ1ZT80ZTE0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc2V0dGluZy9TZXR0aW5nUGFnZS52dWU/ZGI2YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ1B1Ymxpc2hpbmdGb3JtLnZ1ZT9hNmMwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9PcmdhbmlzYXRpb25MaXN0LnZ1ZT9hZmNhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9TeXN0ZW1WZXJzaW9uLnZ1ZT9lMTJjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL0FkbWluQmFyLnZ1ZT83ZTg1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL1RhYmxlTGlzdC52dWU/YmY5MSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlckxpc3RpbmcudnVlPzdhNDYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy91c2VyL1VzZXJQcm9maWxlLnZ1ZT9jMDg2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0Fib3V0UGFnZS52dWU/YjAyOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9FbWFpbFZlcmlmaWNhdGlvbi52dWU/MzA0MyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZT83MWFmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0lhdGlTdGFuZGFyZC52dWU/MTgzMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9QdWJsaXNoaW5nQ2hlY2tsaXN0LnZ1ZT9mNjFmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1JlZ2lzdGVyUGFnZS52dWU/OTc5NSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9TdXBwb3J0UGFnZS52dWU/NjdmNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9BZG1pbkZvb3Rlci52dWU/NDJjOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9Kb2luTm93LnZ1ZT9jNTM4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1NpZ25Jbi52dWU/YzJkZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJGb290ZXIudnVlPzUzYjAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvV2ViSGVhZGVyLnZ1ZT81Y2U0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1dlbGNvbWVQYWdlLnZ1ZT9jNjYyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9TaGltbWVyTG9hZGluZy52dWU/ZjNjNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3Bpbm5lckxvYWRlci52dWU/NjZkZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9XZWxjb21lUGFnZS52dWU/MDFmOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZT9kZmMzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNMaXN0RXJyb3IudnVlPzg2N2IiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NwaW5uZXJMb2FkZXIudnVlP2NkYTAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9UYWJsZUxheW91dC52dWU/ZDFmOSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9MaXN0RWxlbWVudC52dWU/YTJmYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9YbHNMaXN0LnZ1ZT84YWVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL1RhYmxlTGlzdC52dWU/YTMxNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlckxpc3RpbmcudnVlPzA1MTgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0FkbWluSGVhZGVyLnZ1ZT9mYTQwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdWxrcHVibGlzaFdpdGhYbHMudnVlPzg4OWMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0Vycm9yTWVzc2FnZS52dWU/MjZlNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZT84Yzg2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Mb2FkZXIudnVlPzhlZDYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1BvcHVwTW9kYWwudnVlPzg2YjEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1NoaW1tZXJMb2FkaW5nLnZ1ZT9jOGI5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9FcnJvckxpc3RzLnZ1ZT9iYzM0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWU/ZjM5NyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvU3RpY2t5RXJyb3JzLnZ1ZT9mNjBlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9VcGxvYWRlZEVycm9ycy52dWU/ZTdmOSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5SW5kZXgudnVlPzMzNWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9DcmVhdGVNb2RhbC52dWU/NTY3MCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9FcnJvckl0ZW0udnVlPzBkMWIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0aWVzRWxlbWVudHMudnVlP2NlZGIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZT9jNDhjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT9hYTk1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydExpc3QudnVlPzdhOTMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRGF0YS52dWU/Mjk5NCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Jlc2V0UGFnZS52dWU/NjgwZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZT85Nzg0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1JlZ2lzdGVyUGFnZS52dWU/M2EzOSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9TaWduSW4udnVlP2Q1MTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvV2ViSGVhZGVyLnZ1ZT84NDY1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy8gc3luYyBeXFwuXFwvLiokIiwid2VicGFjazovLy9pZ25vcmVkfC9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL2NyeXB0by1qc3xjcnlwdG8iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBzcGlubmVyTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3NwaW5uZXJMb2FkZXIudnVlXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgaW5kZXhfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL2luZGV4XCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0FjdGl2aXR5RG93bmxvYWQnLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgc2hvd1JldHJ5RG93bmxvYWRNb2RlbCA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBpc0xvYWRpbmcgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgc3VwcG9ydEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNsYXVuY2hlcicpO1xuICAgICAgICAgICAgaWYgKHN1cHBvcnRCdXR0b24gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBzdXBwb3J0QnV0dG9uLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGV5KC01MHB4KSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZG93bmxvYWRGaWxlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUNvbXBsZXRlWGxzRG93bmxvYWQnLCB0cnVlKTtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVDYW5jZWxEb3dubG9hZCcsIHRydWUpO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0WGxzRG93bmxvYWQnLCBmYWxzZSk7XG4gICAgICAgICAgICB2YXIgYXBpVXJsID0gXCJcIi5jb25jYXQoZG93bmxvYWRBcGlVcmwudmFsdWUuc3BsaXQoKVswXS5zcGxpdCgnLycpWzNdLCBcIi9cIikuY29uY2F0KGRvd25sb2FkQXBpVXJsLnZhbHVlLnNwbGl0KClbMF0uc3BsaXQoJy8nKVs0XSk7XG4gICAgICAgICAgICAoMCwgYXhpb3NfMS5kZWZhdWx0KSh7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnZ2V0JyxcbiAgICAgICAgICAgICAgICB1cmw6IGFwaVVybCxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJyxcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciBmaWxlTmFtZSA9IHJlcy5oZWFkZXJzWydjb250ZW50LWRpc3Bvc2l0aW9uJ10uc3BsaXQoJ2ZpbGVuYW1lPScpWzFdO1xuICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlcy5kYXRhXSwge30pO1xuICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIGZpbGVOYW1lKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcmV0cnlEb3dubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHhsc0Rvd25sb2FkU3RhdHVzLnZhbHVlID0gJyc7XG4gICAgICAgICAgICBpc0xvYWRpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0WGxzRG93bmxvYWQnLCB0cnVlKTtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVDYW5jZWxEb3dubG9hZCcsIGZhbHNlKTtcbiAgICAgICAgICAgIHNob3dSZXRyeURvd25sb2FkTW9kZWwudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHZhciBhcGlVcmwgPSAnYWN0aXZpdGllcy9yZXRyeS14bHMtZG93bmxvYWQnO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChhcGlVcmwpLmZpbmFsbHkoZnVuY3Rpb24gKCkgeyByZXR1cm4gKGlzTG9hZGluZy52YWx1ZSA9IGZhbHNlKTsgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjYW5jZWxEb3dubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHhsc0Rvd25sb2FkU3RhdHVzLnZhbHVlID0gJ2NhbmNlbGxlZCc7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvYWN0aXZpdGllcy9jYW5jZWwteGxzLWRvd25sb2FkJykudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUNhbmNlbERvd25sb2FkJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydFhsc0Rvd25sb2FkJywgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcGVyY2VudGFnZVdpZHRoID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gKGZpbGVDb3VudC52YWx1ZSAvIDQpICogMTAwO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGZpbGVDb3VudCA9ICgwLCB2dWVfMi5pbmplY3QpKCdmaWxlQ291bnQnKTtcbiAgICAgICAgdmFyIHhsc0Rvd25sb2FkU3RhdHVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3hsc0Rvd25sb2FkU3RhdHVzJyk7XG4gICAgICAgIHZhciBkb3dubG9hZEFwaVVybCA9ICgwLCB2dWVfMi5pbmplY3QpKCdkb3dubG9hZEFwaVVybCcpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBzdG9yZTogc3RvcmUsIHNob3dSZXRyeURvd25sb2FkTW9kZWw6IHNob3dSZXRyeURvd25sb2FkTW9kZWwsIGlzTG9hZGluZzogaXNMb2FkaW5nLCBkb3dubG9hZEZpbGU6IGRvd25sb2FkRmlsZSwgcmV0cnlEb3dubG9hZDogcmV0cnlEb3dubG9hZCwgY2FuY2VsRG93bmxvYWQ6IGNhbmNlbERvd25sb2FkLCBwZXJjZW50YWdlV2lkdGg6IHBlcmNlbnRhZ2VXaWR0aCwgZmlsZUNvdW50OiBmaWxlQ291bnQsIHhsc0Rvd25sb2FkU3RhdHVzOiB4bHNEb3dubG9hZFN0YXR1cywgZG93bmxvYWRBcGlVcmw6IGRvd25sb2FkQXBpVXJsLCBzcGlubmVyTG9hZGVyOiBzcGlubmVyTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBzaG93XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9zaG93XCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIENyZWF0ZU1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi92aWV3cy9hY3Rpdml0eS9DcmVhdGVNb2RhbC52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnQWRtaW5IZWFkZXInLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHVzZXI6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBvcmdhbml6YXRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIHYgPT09ICdvYmplY3QnIHx8IHR5cGVvZiB2ID09PSAnc3RyaW5nJyB8fCB2ID09PSBudWxsO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzdXBlckFkbWluOiB7IHR5cGU6IEJvb2xlYW4sIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGhhc0FkbWluQmFyOiB7IHR5cGU6IE51bWJlciB8fCBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX2I7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgc2hvd18xLmRldGFpbFN0b3JlKSgpO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBzaG93VXNlckRyb3Bkb3duID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0FjdGl2aXR5RHJvcGRvd24gPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2FzdFZpc2liaWxpdHkgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBpc0xvYWRpbmcgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBkcm9wRG93bkVsZW1lbnQgPSAoMCwgdnVlXzIucmVmKShudWxsKTtcbiAgICAgICAgdmFyIGFjdGl2aXR5RHJvcGRvd25IZWlnaHQgPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIHNob3dTaWRlYmFyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG9hc3RNZXNzYWdlID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgdG9hc3RUeXBlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgbGFuZ3VhZ2VOYXZMaUNsYXNzZXM6ICdmbGV4JyxcbiAgICAgICAgICAgIGxhbmd1YWdlTmF2QW5jaG9yQ2xhc3NlczogJ2ZsZXggdGV4dC13aGl0ZSBpdGVtcy1jZW50ZXIgdXBwZXJjYXNlIG5hdl9fcG9pbnRlci1ob3ZlciBweC0xJyxcbiAgICAgICAgICAgIG1lbnVOYXZMaUNsYXNzZXM6ICdmbGV4IHJlbGF0aXZlJyxcbiAgICAgICAgICAgIG1lbnVOYXZBbmNob3JDbGFzc2VzOiAnZmxleCB0ZXh0LXdoaXRlIGl0ZW1zLWNlbnRlciB1cHBlcmNhc2UgbmF2X19wb2ludGVyLWhvdmVyJyxcbiAgICAgICAgICAgIGxhbmd1YWdlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2U6ICdFTicsXG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluazogJy9sYW5nL2VuJyxcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdsYW5ndWFnZS1lbicsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogdHJhbnNsYXRlLndlYlRleHQoJ2FjdGl2ZScpID09PSAnZW4nLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZTogJ0ZSJyxcbiAgICAgICAgICAgICAgICAgICAgcGVybWFsaW5rOiAnL2xhbmcvZnInLFxuICAgICAgICAgICAgICAgICAgICBpZDogJ2xhbmd1YWdlLWZyJyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiB0cmFuc2xhdGUud2ViVGV4dCgnYWN0aXZlJykgPT09ICdmcicsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlOiAnRVMnLFxuICAgICAgICAgICAgICAgICAgICBwZXJtYWxpbms6ICcvbGFuZy9lcycsXG4gICAgICAgICAgICAgICAgICAgIGlkOiAnbGFuZ3VhZ2UtZXMnLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IHRyYW5zbGF0ZS53ZWJUZXh0KCdhY3RpdmUnKSA9PT0gJ2VzJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIG9yZ19tZW51czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogdHJhbnNsYXRlLmFkbWluVGV4dCgnYWN0aXZpdHlfZGF0YScpLFxuICAgICAgICAgICAgICAgICAgICBwZXJtYWxpbms6ICcvYWN0aXZpdGllcycsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogdHJhbnNsYXRlLmFkbWluVGV4dCgnb3JnYW5pc2F0aW9uX2RhdGEnKSxcbiAgICAgICAgICAgICAgICAgICAgcGVybWFsaW5rOiAnL29yZ2FuaXNhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHRyYW5zbGF0ZS5hZG1pblRleHQoJ3NldHRpbmdzJyksXG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluazogJy9zZXR0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogdHJhbnNsYXRlLmNvbW1vblRleHQoJ2FkZF9pbXBvcnRfYWN0aXZpdHknKSxcbiAgICAgICAgICAgICAgICAgICAgcGVybWFsaW5rOiAnIycsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHRyYW5zbGF0ZS5jb21tb25UZXh0KCd1c2VycycpLFxuICAgICAgICAgICAgICAgICAgICBwZXJtYWxpbms6ICcvdXNlcnMnLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgc3VwZXJhZG1pbl9tZW51czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0Rhc2hib2FyZCcsXG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluazogJy9kYXNoYm9hcmQnLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiB0cmFuc2xhdGUuY29tbW9uVGV4dCgnb3JnX2xpc3QnKSxcbiAgICAgICAgICAgICAgICAgICAgcGVybWFsaW5rOiAnL2xpc3Qtb3JnYW5pc2F0aW9ucycsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHRyYW5zbGF0ZS5jb21tb25UZXh0KCd1c2VycycpLFxuICAgICAgICAgICAgICAgICAgICBwZXJtYWxpbms6ICcvdXNlcnMnLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgLy8ge1xuICAgICAgICAgICAgICAgIC8vICAgbmFtZTogdHJhbnNhbHRpb24uY29tbW9uLmxvZ3MuZGVmYXVsdCxcbiAgICAgICAgICAgICAgICAvLyAgIHBlcm1hbGluazogJy9zeXN0ZW0tdmVyc2lvbicsXG4gICAgICAgICAgICAgICAgLy8gICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIC8vIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5pc0xvYWRpbmc7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaXNMb2FkaW5nLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgbGlDbGFzcyA9ICdibG9jayBwLTIuNSB0ZXh0LW4tNDAgdGV4dC10aW55IHVwcGVyY2FzZSBsZWFkaW5nLVsxLjVdIGZvbnQtYm9sZCBob3ZlcjohdGV4dC1uLTUwIGhvdmVyOmJnLW4tMTAnO1xuICAgICAgICB2YXIgX2MgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgbW9kYWxWYWx1ZSA9IF9jWzBdLCBtb2RhbFRvZ2dsZSA9IF9jWzFdO1xuICAgICAgICBmdW5jdGlvbiB0b2FzdChtZXNzYWdlLCB0eXBlKSB7XG4gICAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiAodG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2UpOyB9LCAxNTAwMCk7XG4gICAgICAgICAgICB0b2FzdE1lc3NhZ2UudmFsdWUgPSBtZXNzYWdlO1xuICAgICAgICAgICAgdG9hc3RUeXBlLnZhbHVlID0gdHlwZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaXNUb3VjaERldmljZSA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuICdvbnRvdWNoc3RhcnQnIGluIHdpbmRvdyB8fCBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMgPiAwO1xuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gVG9nZ2xlTW9kZWwoKSB7XG4gICAgICAgICAgICBtb2RhbFRvZ2dsZSgpO1xuICAgICAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdvcGVuQWRkTW9kZWwnKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcm90YXRlRHJvcGRvd25JY29uID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gc2hvd0FjdGl2aXR5RHJvcGRvd24udmFsdWUgJiYgd2luZG93LmlubmVyV2lkdGggPCAxNDIwO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHRvZ2dsZUFjdGl2aXR5RHJvcGRvd24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgc2hvd0FjdGl2aXR5RHJvcGRvd24udmFsdWUgPSAhc2hvd0FjdGl2aXR5RHJvcGRvd24udmFsdWU7XG4gICAgICAgICAgICBhY3Rpdml0eURyb3Bkb3duSGVpZ2h0LnZhbHVlID0gKF9iID0gKF9hID0gZHJvcERvd25FbGVtZW50LnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMF0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jbGllbnRIZWlnaHQ7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBhY3Rpdml0eURyb3Bkb3duSGVpZ2h0LnZhbHVlID0gJyc7XG4gICAgICAgICAgICB9LCAxMCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBhY3Rpdml0eURyb3Bkb3duSGVpZ2h0LnZhbHVlID0gJ2F1dG8nO1xuICAgICAgICAgICAgfSwgMjAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzaG93U2lkZWJhci52YWx1ZTsgfSwgZnVuY3Rpb24gKHNpZGViYXIpIHtcbiAgICAgICAgICAgIGlmIChzaWRlYmFyKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gY2hhbmdlQWN0aXZlTWVudSgpIHtcbiAgICAgICAgICAgIHZhciBwYXRoID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO1xuICAgICAgICAgICAgZGF0YS5vcmdfbWVudXMuZm9yRWFjaChmdW5jdGlvbiAobWVudSwga2V5KSB7XG4gICAgICAgICAgICAgICAgZGF0YS5vcmdfbWVudXNba2V5XVsnYWN0aXZlJ10gPSBtZW51LnBlcm1hbGluayA9PT0gcGF0aCA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHBhdGguaW5jbHVkZXMoJ2FjdGl2aXR5JykgfHxcbiAgICAgICAgICAgICAgICBwYXRoLmluY2x1ZGVzKCdyZXN1bHQnKSB8fFxuICAgICAgICAgICAgICAgIHBhdGguaW5jbHVkZXMoJ2luZGljYXRvcicpKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5vcmdfbWVudXNbMF1bJ2FjdGl2ZSddID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCdvcmdhbmlzYXRpb24nKSkge1xuICAgICAgICAgICAgICAgIGRhdGEub3JnX21lbnVzWzFdWydhY3RpdmUnXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGF0aC5pbmNsdWRlcygnaW1wb3J0JykpIHtcbiAgICAgICAgICAgICAgICBkYXRhLm9yZ19tZW51c1szXVsnYWN0aXZlJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhdGguaW5jbHVkZXMoJ2Rhc2hib2FyZCcpKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5zdXBlcmFkbWluX21lbnVzWzBdWydhY3RpdmUnXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGF0aC5pbmNsdWRlcygndXNlcnMnKSkge1xuICAgICAgICAgICAgICAgIGRhdGEub3JnX21lbnVzWzRdWydhY3RpdmUnXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgZGF0YS5zdXBlcmFkbWluX21lbnVzWzJdWydhY3RpdmUnXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGF0aC5pbmNsdWRlcygnbGlzdC1vcmdhbmlzYXRpb25zJykpIHtcbiAgICAgICAgICAgICAgICBkYXRhLnN1cGVyYWRtaW5fbWVudXNbMV1bJ2FjdGl2ZSddID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCdzeXN0ZW0tdmVyc2lvbicpIHx8XG4gICAgICAgICAgICAgICAgcGF0aC5pbmNsdWRlcygnbG9nLXZpZXdlcicpIHx8XG4gICAgICAgICAgICAgICAgcGF0aC5pbmNsdWRlcygnbGluazMnKSB8fFxuICAgICAgICAgICAgICAgIHBhdGguaW5jbHVkZXMoJ2xpbms0JykpIHtcbiAgICAgICAgICAgICAgICBkYXRhLnN1cGVyYWRtaW5fbWVudXNbMl1bJ2FjdGl2ZSddID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBsb2NhbCBzdG9yYWdlIGZvciBwdWJsaXNoaW5nXG4gICAgICAgIHZhciBwYSA9ICgwLCBjb3JlXzEudXNlU3RvcmFnZSkoJ3Z1ZS11c2UtbG9jYWwtc3RvcmFnZScsIHtcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiAoX2IgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncHVibGlzaGluZ0FjdGl2aXRpZXMnKSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDoge30sXG4gICAgICAgIH0pO1xuICAgICAgICBmdW5jdGlvbiBsb2dvdXQoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGEudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBheGlvc18xLmRlZmF1bHQucG9zdCgnL2xvZ291dCcpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSldO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZWFyY2ggZnVuY3Rpb25hbGl0eVxuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIHNlYXJjaFZhbHVlID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgY3VycmVudFVSTCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgICAgICBpZiAoY3VycmVudFVSTC5pbmNsdWRlcygnPycpKSB7XG4gICAgICAgICAgICB2YXIgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLCB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKSwgc2VhcmNoID0gdXJsUGFyYW1zLmdldCgncScpO1xuICAgICAgICAgICAgc2VhcmNoVmFsdWUudmFsdWUgPSBzZWFyY2g7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNwaW5uZXIgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzZWFyY2hGdW5jdGlvbiA9IGZ1bmN0aW9uICh1cmwpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHNwaW5uZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIHBhcmFtID0gKF9hID0gc2VhcmNoVmFsdWUudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZXBsYWNlKCcjJywgJycpO1xuICAgICAgICAgICAgdmFyIHNvcnRpbmdQYXJhbSA9ICcnO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRVUkwuaW5jbHVkZXMoJz8nKSAmJiBjdXJyZW50VVJMLmluY2x1ZGVzKCcmJykpIHtcbiAgICAgICAgICAgICAgICB2YXIgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoO1xuICAgICAgICAgICAgICAgIHZhciBxdWVyeVN0cmluZ0FyciA9IHF1ZXJ5U3RyaW5nLnNwbGl0KCcmJyk7XG4gICAgICAgICAgICAgICAgc29ydGluZ1BhcmFtID0gJyYnICsgcXVlcnlTdHJpbmdBcnIuc2xpY2UoMSkuam9pbignJicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGhyZWYgPSBwYXJhbVxuICAgICAgICAgICAgICAgID8gXCJcIi5jb25jYXQodXJsLCBcIj9xPVwiKS5jb25jYXQocGFyYW0pLmNvbmNhdChzb3J0aW5nUGFyYW0pXG4gICAgICAgICAgICAgICAgOiBwcm9wcy5zdXBlckFkbWluXG4gICAgICAgICAgICAgICAgICAgID8gJy9saXN0LW9yZ2FuaXNhdGlvbnMnXG4gICAgICAgICAgICAgICAgICAgIDogJy9hY3Rpdml0aWVzLyc7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGhyZWY7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNoYW5nZUFjdGl2ZU1lbnUoKTtcbiAgICAgICAgICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnb3BlbkFkZE1vZGVsJykgPT09ICd0cnVlJyAmJlxuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSA9PT0gJy9hY3Rpdml0aWVzJykge1xuICAgICAgICAgICAgICAgIG1vZGFsVmFsdWUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHJlZGlyZWN0UHJvZmlsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9wcm9maWxlJztcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnb3BlbkFkZE1vZGVsJyk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBzdG9yZTogc3RvcmUsIHByb3BzOiBwcm9wcywgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHNob3dVc2VyRHJvcGRvd246IHNob3dVc2VyRHJvcGRvd24sIHNob3dBY3Rpdml0eURyb3Bkb3duOiBzaG93QWN0aXZpdHlEcm9wZG93biwgdG9hc3RWaXNpYmlsaXR5OiB0b2FzdFZpc2liaWxpdHksIGlzTG9hZGluZzogaXNMb2FkaW5nLCBkcm9wRG93bkVsZW1lbnQ6IGRyb3BEb3duRWxlbWVudCwgYWN0aXZpdHlEcm9wZG93bkhlaWdodDogYWN0aXZpdHlEcm9wZG93bkhlaWdodCwgc2hvd1NpZGViYXI6IHNob3dTaWRlYmFyLCB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSwgdG9hc3RUeXBlOiB0b2FzdFR5cGUsIGRhdGE6IGRhdGEsIGxpQ2xhc3M6IGxpQ2xhc3MsIG1vZGFsVmFsdWU6IG1vZGFsVmFsdWUsIG1vZGFsVG9nZ2xlOiBtb2RhbFRvZ2dsZSwgdG9hc3Q6IHRvYXN0LCBpc1RvdWNoRGV2aWNlOiBpc1RvdWNoRGV2aWNlLCBUb2dnbGVNb2RlbDogVG9nZ2xlTW9kZWwsIHJvdGF0ZURyb3Bkb3duSWNvbjogcm90YXRlRHJvcGRvd25JY29uLCB0b2dnbGVBY3Rpdml0eURyb3Bkb3duOiB0b2dnbGVBY3Rpdml0eURyb3Bkb3duLCBjaGFuZ2VBY3RpdmVNZW51OiBjaGFuZ2VBY3RpdmVNZW51LCBwYTogcGEsIGxvZ291dDogbG9nb3V0LCBzZWFyY2hWYWx1ZTogc2VhcmNoVmFsdWUsIGN1cnJlbnRVUkw6IGN1cnJlbnRVUkwsIHNwaW5uZXI6IHNwaW5uZXIsIHNlYXJjaEZ1bmN0aW9uOiBzZWFyY2hGdW5jdGlvbiwgcmVkaXJlY3RQcm9maWxlOiByZWRpcmVjdFByb2ZpbGUsIENyZWF0ZU1vZGFsOiBDcmVhdGVNb2RhbF92dWVfMS5kZWZhdWx0LCBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdCcmVhZENydW1iJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGJyZWFkY3J1bWJEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgZ2V0QWN0aXZpdHlUaXRsZTogdGl0bGVfMS5kZWZhdWx0LCBicmVhZGNydW1iRGF0YTogYnJlYWRjcnVtYkRhdGEgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdCdWxrUHVibGlzaGluZ0Vycm9yUG9wdXAnLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBidWxrUHVibGlzaFN0YXR1cyA9ICgwLCB2dWVfMi5pbmplY3QpKCdidWxrUHVibGlzaFN0YXR1cycpO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBidWxrUHVibGlzaFN0YXR1czogYnVsa1B1Ymxpc2hTdGF0dXMsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBhY3Rpdml0aWVzXzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllc1wiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdCdWxrcHVibGlzaFdpdGhYbHMnLFxuICAgIGVtaXRzOiBbJ2Nsb3NlJywgJ3RvZ2dsZSddLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF9iO1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlLCBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBhY3Rpdml0aWVzXzEudXNlU3RvcmUpKCk7XG4gICAgICAgIHZhciBwYSA9ICgwLCBjb3JlXzEudXNlU3RvcmFnZSkoJ3Z1ZS11c2UtbG9jYWwtc3RvcmFnZScsIHtcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiAoX2IgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncHVibGlzaGluZ0FjdGl2aXRpZXMnKSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDoge30sXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBidWxrUHVibGlzaExlbmd0aCA9ICgwLCB2dWVfMi5yZWYpKDApO1xuICAgICAgICB2YXIgb3Blbk1vZGVsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcGFTdG9yYWdlID0gKDAsIHZ1ZV8yLnJlZikoc3RvcmUuc3RhdGUuYnVsa3B1Ymxpc2hBY3Rpdml0aWVzKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hpbmdBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKShwYVN0b3JhZ2UudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXNbJ2FjdGl2aXRpZXMnXSk7XG4gICAgICAgIHZhciBjb21wbGV0ZWQgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgcmVmcmVzaFRvYXN0TXNnID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3JlZnJlc2hUb2FzdE1zZycpO1xuICAgICAgICB2YXIgYWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBoYXNGYWlsZWRBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBkYXRhOiB7fSxcbiAgICAgICAgICAgIGlkczogW10sXG4gICAgICAgICAgICBzdGF0dXM6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgY29tcGxldGVkLnZhbHVlID0gKF9hID0gcGFTdG9yYWdlLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzLnN0YXR1cykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ3Byb2Nlc3NpbmcnO1xuICAgICAgICAgICAgYnVsa1B1Ymxpc2hTdGF0dXMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBidWxrUHVibGlzaFN0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvYWN0aXZpdGllcy9idWxrLXB1Ymxpc2gtc3RhdHVzXCIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGlmICgnZGF0YScgaW4gcmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllcy52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuYWN0aXZpdGllcztcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkLnZhbHVlID0gcmVzcG9uc2UuZGF0YS5zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIC8vIHNhdmluZyBpbiBsb2NhbCBzdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgIHBhU3RvcmFnZS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcy5hY3Rpdml0aWVzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEuYWN0aXZpdGllcztcbiAgICAgICAgICAgICAgICAgICAgcGFTdG9yYWdlLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzLnN0YXR1cyA9IHJlc3BvbnNlLmRhdGEuc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICBwYVN0b3JhZ2UudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMubWVzc2FnZSA9IHJlc3BvbnNlLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuc3RhdHVzICE9PSAnY29tcGxldGVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9sbGluZ0ZvckJ1bGtwdWJsaXNoRGF0YSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQudmFsdWUgPSAnY29tcGxldGVkJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciBwb2xsaW5nRm9yQnVsa3B1Ymxpc2hEYXRhID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBpbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL2FjdGl2aXRpZXMvYnVsay1wdWJsaXNoLXN0YXR1c1wiKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5wdWJsaXNoaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElEKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnZGF0YScgaW4gcmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0aWVzLnZhbHVlID0gcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZC52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNhdmluZyBpbiBsb2NhbCBzdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFTdG9yYWdlLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzLmFjdGl2aXRpZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5kYXRhLmFjdGl2aXRpZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFTdG9yYWdlLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzLnN0YXR1cyA9IHJlc3BvbnNlLmRhdGEuc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhU3RvcmFnZS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcy5tZXNzYWdlID0gcmVzcG9uc2UuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb21wbGV0ZWQudmFsdWUgPT09ICdjb21wbGV0ZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJRCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxlZEFjdGl2aXRpZXMocGFTdG9yYWdlLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzLmFjdGl2aXRpZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKChfYSA9IGhhc0ZhaWxlZEFjdGl2aXRpZXMgPT09IG51bGwgfHwgaGFzRmFpbGVkQWN0aXZpdGllcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogaGFzRmFpbGVkQWN0aXZpdGllcy5pZHMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRvYXN0TXNnLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRvYXN0TXNnLnJlZnJlc2hNZXNzYWdlVHlwZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRvYXN0TXNnLnJlZnJlc2hNZXNzYWdlID0gdHJhbnNsYXRlLmVycm9yKCdzb21lX2FjdGl2aXRpZXNfaGF2ZV9mYWlsZWRfdG9fcHVibGlzaF9yZWZyZXNoX3RvX3NlZV9jaGFuZ2VzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoVG9hc3RNc2cudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoVG9hc3RNc2cucmVmcmVzaE1lc3NhZ2UgPSB0cmFuc2xhdGUuZXJyb3IoJ2FjdGl2aXR5X2hhc19iZWVuX3B1Ymxpc2hlZF9zdWNjZXNzZnVsbHknKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZy52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQudmFsdWUgPSAnY29tcGxldGVkJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSwgMzAwMCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcmV0cnlQdWJsaXNoaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgLy9yZXNldCByZXF1aXJlZCBzdGF0ZXNcbiAgICAgICAgICAgIGNvbXBsZXRlZC52YWx1ZSA9ICdwcm9jZXNzaW5nJztcbiAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBoYXNGYWlsZWRBY3Rpdml0aWVzLmRhdGEpIHtcbiAgICAgICAgICAgICAgICBoYXNGYWlsZWRBY3Rpdml0aWVzLmRhdGFba2V5XS5zdGF0dXMgPSAncHJvY2Vzc2luZyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhY3Rpdml0aWVzLnZhbHVlID0gaGFzRmFpbGVkQWN0aXZpdGllcy5kYXRhO1xuICAgICAgICAgICAgLy8gYXBpIGVuZHBvaW50IGNhbGxcbiAgICAgICAgICAgIHZhciBlbmRwb2ludCA9IFwiL2FjdGl2aXRpZXMvc3RhcnQtYnVsay1wdWJsaXNoP2FjdGl2aXRpZXM9W1wiLmNvbmNhdChoYXNGYWlsZWRBY3Rpdml0aWVzLmlkcywgXCJdXCIpO1xuICAgICAgICAgICAgaGFzRmFpbGVkQWN0aXZpdGllcy5zdGF0dXMgPSBmYWxzZTtcbiAgICAgICAgICAgIGhhc0ZhaWxlZEFjdGl2aXRpZXMuaWRzID0gW107XG4gICAgICAgICAgICBoYXNGYWlsZWRBY3Rpdml0aWVzLmRhdGEgPSB7fTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoZW5kcG9pbnQpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhU3RvcmFnZS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIGJ1bGtQdWJsaXNoU3RhdHVzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBmYWlsZWRBY3Rpdml0aWVzID0gZnVuY3Rpb24gKG5lc3RlZE9iamVjdCkge1xuICAgICAgICAgICAgdmFyIGZhaWxlZEFjdGl2aXRpZXNJRCA9IFtdO1xuICAgICAgICAgICAgdmFyIGFzQXJyYXlEYXRhID0gbmVzdGVkT2JqZWN0ICYmIE9iamVjdC5lbnRyaWVzKG5lc3RlZE9iamVjdCk7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgICAgICB2YXIgZmlsdGVyZWQgPSBhc0FycmF5RGF0YSA9PT0gbnVsbCB8fCBhc0FycmF5RGF0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXNBcnJheURhdGEuZmlsdGVyKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBfYVswXSwgdmFsdWUgPSBfYVsxXTtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgJiYgT2JqZWN0LnZhbHVlcyh2YWx1ZSkuaW5kZXhPZignZmFpbGVkJykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICBmYWlsZWRBY3Rpdml0aWVzSUQucHVzaCh2YWx1ZS5hY3Rpdml0eV9pZCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YXIgZmFpbGVkQWN0aXZpdGllc0RhdGEgPSBmaWx0ZXJlZCAmJiBPYmplY3QuZnJvbUVudHJpZXMoZmlsdGVyZWQpO1xuICAgICAgICAgICAgaWYgKChmYWlsZWRBY3Rpdml0aWVzSUQgPT09IG51bGwgfHwgZmFpbGVkQWN0aXZpdGllc0lEID09PSB2b2lkIDAgPyB2b2lkIDAgOiBmYWlsZWRBY3Rpdml0aWVzSUQubGVuZ3RoKSA+IDApIHtcbiAgICAgICAgICAgICAgICBoYXNGYWlsZWRBY3Rpdml0aWVzLnN0YXR1cyA9IHRydWU7XG4gICAgICAgICAgICAgICAgaGFzRmFpbGVkQWN0aXZpdGllcy5pZHMgPSBmYWlsZWRBY3Rpdml0aWVzSUQ7XG4gICAgICAgICAgICAgICAgaGFzRmFpbGVkQWN0aXZpdGllcy5kYXRhID0gZmFpbGVkQWN0aXZpdGllc0RhdGE7XG4gICAgICAgICAgICAgICAgcmVmcmVzaFRvYXN0TXNnLnJlZnJlc2hNZXNzYWdlVHlwZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZy5yZWZyZXNoTWVzc2FnZSA9IHRyYW5zbGF0ZS5lcnJvcignc29tZV9hY3Rpdml0aWVzX2hhdmVfZmFpbGVkX3RvX3B1Ymxpc2hfcmVmcmVzaF90b19zZWVfY2hhbmdlcycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaGFzRmFpbGVkQWN0aXZpdGllcy5zdGF0dXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBoYXNGYWlsZWRBY3Rpdml0aWVzLmlkcyA9IFtdO1xuICAgICAgICAgICAgICAgIGhhc0ZhaWxlZEFjdGl2aXRpZXMuZGF0YSA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgY29tcGxldGVkQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8XG4gICAgICAgICAgICAgICAgKCgoX2EgPSBwYVN0b3JhZ2UudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5wdWJsaXNoaW5nQWN0aXZpdGllc1snYWN0aXZpdGllcyddKSAmJlxuICAgICAgICAgICAgICAgICAgICBPYmplY3QudmFsdWVzKChfYiA9IHBhU3RvcmFnZS52YWx1ZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnB1Ymxpc2hpbmdBY3Rpdml0aWVzWydhY3Rpdml0aWVzJ10pXG4gICAgICAgICAgICAgICAgICAgICAgICAubGVuZ3RoKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC52YWx1ZXMocGFTdG9yYWdlLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzWydhY3Rpdml0aWVzJ10pW2ldWydzdGF0dXMnXSA9PT0gJ2NvbXBsZXRlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcGVyY2VudGFnZVdpZHRoID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgcmV0dXJuICgoY29tcGxldGVkQWN0aXZpdGllcy52YWx1ZSAvXG4gICAgICAgICAgICAgICAgKCgoX2EgPSBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnB1Ymxpc2hpbmdBY3Rpdml0aWVzWydhY3Rpdml0aWVzJ10pICYmXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKChfYiA9IHBhLnZhbHVlKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucHVibGlzaGluZ0FjdGl2aXRpZXNbJ2FjdGl2aXRpZXMnXSkubGVuZ3RoKSkgKlxuICAgICAgICAgICAgICAgIDEwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLmJ1bGtwdWJsaXNoQWN0aXZpdGllczsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2V0RGF0YVRvTG9jYWxzdG9yYWdlKCk7XG4gICAgICAgICAgICBnZXREYXRhRnJvbUxvY2Fsc3RvcmFnZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBvcGVuTW9kZWwudmFsdWU7IH0sIGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gZW1pdCgndG9nZ2xlJywgdmFsdWUpOyB9KTtcbiAgICAgICAgdmFyIGdldERhdGFGcm9tTG9jYWxzdG9yYWdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYWN0aXZpdGllcy52YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidWxrUHVibGlzaEFjdGl2aXRpZXMnKTtcbiAgICAgICAgICAgIGFjdGl2aXRpZXMudmFsdWUgPSAoMCwgdXRpbHNfMS5pc0pzb24pKGFjdGl2aXRpZXMudmFsdWUpICYmIEpTT04ucGFyc2UoYWN0aXZpdGllcy52YWx1ZSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZXREYXRhVG9Mb2NhbHN0b3JhZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYnVsa1B1Ymxpc2hBY3Rpdml0aWVzJywgSlNPTi5zdHJpbmdpZnkocGFTdG9yYWdlLnZhbHVlKSk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0QnVsa1B1Ymxpc2gnLCBmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZW1wdHlidWxrUHVibGlzaFN0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZvciAodmFyIHN0YXR1c18xIGluIHB1Ymxpc2hpbmdBY3Rpdml0aWVzKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHB1Ymxpc2hpbmdBY3Rpdml0aWVzW3N0YXR1c18xXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5idWxrUHVibGlzaExlbmd0aDsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgYnVsa1B1Ymxpc2hMZW5ndGgudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIHBhID0gKDAsIGNvcmVfMS51c2VTdG9yYWdlKSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywge1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiAoX2EgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncHVibGlzaGluZ0FjdGl2aXRpZXMnKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDoge30sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGVtcHR5YnVsa1B1Ymxpc2hTdGF0dXMoKTtcbiAgICAgICAgICAgIGJ1bGtQdWJsaXNoU3RhdHVzKCk7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHB1Ymxpc2hpbmdBY3Rpdml0aWVzLCAoX2IgPSBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnB1Ymxpc2hpbmdBY3Rpdml0aWVzWydhY3Rpdml0aWVzJ10pO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHN0b3JlOiBzdG9yZSwgcGE6IHBhLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgYnVsa1B1Ymxpc2hMZW5ndGg6IGJ1bGtQdWJsaXNoTGVuZ3RoLCBvcGVuTW9kZWw6IG9wZW5Nb2RlbCwgcGFTdG9yYWdlOiBwYVN0b3JhZ2UsIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiBwdWJsaXNoaW5nQWN0aXZpdGllcywgY29tcGxldGVkOiBjb21wbGV0ZWQsIGVtaXQ6IGVtaXQsIHJlZnJlc2hUb2FzdE1zZzogcmVmcmVzaFRvYXN0TXNnLCBhY3Rpdml0aWVzOiBhY3Rpdml0aWVzLCBoYXNGYWlsZWRBY3Rpdml0aWVzOiBoYXNGYWlsZWRBY3Rpdml0aWVzLCBidWxrUHVibGlzaFN0YXR1czogYnVsa1B1Ymxpc2hTdGF0dXMsIHJldHJ5UHVibGlzaGluZzogcmV0cnlQdWJsaXNoaW5nLCBmYWlsZWRBY3Rpdml0aWVzOiBmYWlsZWRBY3Rpdml0aWVzLCBjb21wbGV0ZWRBY3Rpdml0aWVzOiBjb21wbGV0ZWRBY3Rpdml0aWVzLCBwZXJjZW50YWdlV2lkdGg6IHBlcmNlbnRhZ2VXaWR0aCwgZ2V0RGF0YUZyb21Mb2NhbHN0b3JhZ2U6IGdldERhdGFGcm9tTG9jYWxzdG9yYWdlLCBzZXREYXRhVG9Mb2NhbHN0b3JhZ2U6IHNldERhdGFUb0xvY2Fsc3RvcmFnZSwgZW1wdHlidWxrUHVibGlzaFN0YXR1czogZW1wdHlidWxrUHVibGlzaFN0YXR1cyB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0J1dHRvbkNvbXBvbmVudCcsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgdGV4dDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGljb246IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgbGluazoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGl2aXR5TGVuZ3RoOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBidG5UeXBlID0gJyc7XG4gICAgICAgIGlmIChwcm9wcy50eXBlID09PSAnc2Vjb25kYXJ5Jykge1xuICAgICAgICAgICAgYnRuVHlwZSA9ICdzZWNvbmRhcnktYnRuIGZvbnQtYm9sZCc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocHJvcHMudHlwZSA9PT0gJ291dGxpbmUnKSB7XG4gICAgICAgICAgICBidG5UeXBlID0gJ3ByaW1hcnktb3V0bGluZS1idG4nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHByb3BzLnR5cGUgPT09ICdwcmltYXJ5Jykge1xuICAgICAgICAgICAgYnRuVHlwZSA9ICdwcmltYXJ5LWJ0biBmb250LWJvbGQnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYnRuVHlwZSA9ICdmb250LWJvbGQnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGJ0blR5cGU6IGJ0blR5cGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGRhdGVfZm5zXzEgPSByZXF1aXJlKFwiZGF0ZS1mbnNcIik7XG52YXIgdnVlX2RhdGVwaWNrZXJfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQHZ1ZXBpYy92dWUtZGF0ZXBpY2tlclwiKSk7XG5yZXF1aXJlKFwiQHZ1ZXBpYy92dWUtZGF0ZXBpY2tlci9kaXN0L21haW4uY3NzXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0RhdGVSYW5nZVdpZGdldCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZHJvcGRvd25SYW5nZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHt9KTsgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZmlyc3REYXRlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF0ZUxhYmVsOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgY3VycmVudFZpZXc6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBjbGVhckRhdGU6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhcnRpbmdEYXRlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgZW5kaW5nRGF0ZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGVOYW1lOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbXG4gICAgICAgICd0cmlnZ2VyU2V0RGF0ZVJhbmdlJyxcbiAgICAgICAgJ3RyaWdnZXJTZXREYXRlVHlwZScsXG4gICAgICAgICdkYXRlQ2xlYXJlZCcsXG4gICAgXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2UsIGVtaXQgPSBfYS5lbWl0O1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHNlbGVjdGVkUHJlc2VudEluZGV4ID0gKDAsIHZ1ZV8yLnJlZikoOTkpO1xuICAgICAgICB2YXIgZGF0ZVJhbmdlTWFpbiA9ICgwLCB2dWVfMi5yZWYpKG51bGwpO1xuICAgICAgICB2YXIgZGF0ZVR5cGUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBkYXRlRHJvcGRvd24gPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgZGF0ZVR5cGVOYW1lID0gKDAsIHZ1ZV8yLnJlZikocHJvcHMuZGF0ZU5hbWUpO1xuICAgICAgICBkYXRlVHlwZS52YWx1ZSA9IHByb3BzLmRyb3Bkb3duUmFuZ2UgJiYgT2JqZWN0LnZhbHVlcyhwcm9wcy5kcm9wZG93blJhbmdlKVswXTtcbiAgICAgICAgdmFyIGRhdGVUeXBlS2V5ID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICBkYXRlVHlwZUtleS52YWx1ZSA9IHByb3BzLmRyb3Bkb3duUmFuZ2UgJiYgT2JqZWN0LmtleXMocHJvcHMuZHJvcGRvd25SYW5nZSlbMF07XG4gICAgICAgIHZhciBzaG93UmFuZ2VEcm9wZG93biA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGluaXRpYWxEYXRlID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBwcm9wcy5maXJzdERhdGU7IH0pO1xuICAgICAgICB2YXIgZml4ZWQgPSAoMCwgdnVlXzIucmVmKShwcm9wcy5kYXRlTmFtZSk7XG4gICAgICAgIHZhciB0b2RheURhdGUgPSAoMCwgbW9tZW50XzEuZGVmYXVsdCkobmV3IERhdGUoKSkuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG4gICAgICAgIHZhciBzZWxlY3RlZERhdGUgPSAoMCwgdnVlXzIucmVmKShbXG4gICAgICAgICAgICBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgbmV3IERhdGUobmV3IERhdGUoKS5zZXREYXRlKG5ldyBEYXRlKCkuZ2V0RGF0ZSgpICsgNykpLFxuICAgICAgICBdKTtcbiAgICAgICAgdmFyIGRhdGVwaWNrZXIgPSAoMCwgdnVlXzIucmVmKShudWxsKTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2VsZWN0ZWREYXRlLnZhbHVlWzBdID0gJyc7XG4gICAgICAgICAgICBzZWxlY3RlZERhdGUudmFsdWVbMV0gPSB0b2RheURhdGU7XG4gICAgICAgICAgICB0cmlnZ2VyU2V0RGF0ZVJhbmdlKCcnLCB0b2RheURhdGUsIGZpeGVkLnZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gW3Byb3BzLmVuZGluZ0RhdGUsIHByb3BzLnN0YXJ0aW5nRGF0ZV07IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChwcm9wcy5lbmRpbmdEYXRlICYmIHByb3BzLnN0YXJ0aW5nRGF0ZSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0ZS52YWx1ZVswXSA9IHByb3BzLnN0YXJ0aW5nRGF0ZTtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGUudmFsdWVbMV0gPSBwcm9wcy5lbmRpbmdEYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgIHZhciBoYW5kbGVQcmVzZW50UmFuZ2VJdGVtQ2xpY2sgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgICAgICAgIHZhciBwcmVzZW50UmFuZ2VJdGVtcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2RwX19wcmVzZXRfcmFuZ2UnKTtcbiAgICAgICAgICAgIHNlbGVjdGVkUHJlc2VudEluZGV4LnZhbHVlID0gaW5kZXg7XG4gICAgICAgICAgICBwcmVzZW50UmFuZ2VJdGVtc1tpbmRleF0uY2xhc3NMaXN0LmFkZCgncHJlc2V0LXJhbmdlLWl0ZW0tYWN0aXZlJyk7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHByZXNlbnRSYW5nZUl0ZW1zLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGogIT09IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHByZXNlbnRSYW5nZUl0ZW1zW2pdLmNsYXNzTGlzdC5yZW1vdmUoJ3ByZXNldC1yYW5nZS1pdGVtLWFjdGl2ZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBwcm9wcy5jbGVhckRhdGU7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJlc2V0RGF0ZSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGVtaXQoJ2RhdGVDbGVhcmVkJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgaGFuZGxlQ2FsZW5kYXJJdGVtQ2xpY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzZWxlY3RlZFByZXNlbnRJbmRleC52YWx1ZSA9IDk5O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgYWRkRXZlbnRzRm9yQ2FsZW5kYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaG93UmFuZ2VEcm9wZG93bi52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIHByZXNlbnRSYW5nZUl0ZW1zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZHBfX3ByZXNldF9yYW5nZScpO1xuICAgICAgICAgICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiAoaSkge1xuICAgICAgICAgICAgICAgIHByZXNlbnRSYW5nZUl0ZW1zW2ldLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVQcmVzZW50UmFuZ2VJdGVtQ2xpY2soaSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmVzZW50UmFuZ2VJdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIF9sb29wXzEoaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgY2FsZW5kYXJJdGVtcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2RwX19jYWxlbmRhcl9pdGVtJyk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhbGVuZGFySXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjYWxlbmRhckl0ZW1zW2ldLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2FsZW5kYXJJdGVtQ2xpY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgcmVtb3ZlRXZlbnRzT2ZDYWxlbmRhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBwcmVzZW50UmFuZ2VJdGVtcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2RwX19wcmVzZXRfcmFuZ2UnKTtcbiAgICAgICAgICAgIHZhciBfbG9vcF8yID0gZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgICAgICBwcmVzZW50UmFuZ2VJdGVtc1tpXS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlUHJlc2VudFJhbmdlSXRlbUNsaWNrKGkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJlc2VudFJhbmdlSXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBfbG9vcF8yKGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGNhbGVuZGFySXRlbXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdkcF9fY2FsZW5kYXJfaXRlbScpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxlbmRhckl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY2FsZW5kYXJJdGVtc1tpXS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNhbGVuZGFySXRlbUNsaWNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHRvZ2dsZVNob3dSYW5nZURyb3Bkb3duID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd1JhbmdlRHJvcGRvd24udmFsdWUgPSAhc2hvd1JhbmdlRHJvcGRvd24udmFsdWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciByZXNldERhdGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgdHJpZ2dlclNldERhdGVSYW5nZSgnJywgJycpO1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0ZS52YWx1ZVswXSA9ICcnO1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0ZS52YWx1ZVsxXSA9ICcnO1xuICAgICAgICAgICAgICAgIGZpeGVkLnZhbHVlID0gJ0FsbCB0aW1lJztcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgeyBzdWNjZXNzOiB0cnVlIH1dO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9O1xuICAgICAgICB2YXIgcHJlc2V0UmFuZ2VzID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdUb2RheScsXG4gICAgICAgICAgICAgICAgcmFuZ2U6IFsoMCwgZGF0ZV9mbnNfMS5zdGFydE9mRGF5KShuZXcgRGF0ZSgpKSwgKDAsIGRhdGVfZm5zXzEuZW5kT2ZEYXkpKG5ldyBEYXRlKCkpXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdUaGlzIHdlZWsnLFxuICAgICAgICAgICAgICAgIHJhbmdlOiBbKDAsIGRhdGVfZm5zXzEuc3RhcnRPZldlZWspKG5ldyBEYXRlKCkpLCAoMCwgZGF0ZV9mbnNfMS5lbmRPZkRheSkobmV3IERhdGUoKSldLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0xhc3QgNyBkYXlzJyxcbiAgICAgICAgICAgICAgICByYW5nZTogWygwLCBkYXRlX2Zuc18xLnN1YkRheXMpKG5ldyBEYXRlKCksIDYpLCAoMCwgZGF0ZV9mbnNfMS5lbmRPZkRheSkobmV3IERhdGUoKSldLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1RoaXMgbW9udGgnLFxuICAgICAgICAgICAgICAgIHJhbmdlOiBbKDAsIGRhdGVfZm5zXzEuc3RhcnRPZk1vbnRoKShuZXcgRGF0ZSgpKSwgKDAsIGRhdGVfZm5zXzEuZW5kT2ZNb250aCkobmV3IERhdGUoKSldLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0xhc3QgNiBtb250aCcsXG4gICAgICAgICAgICAgICAgcmFuZ2U6IFsoMCwgZGF0ZV9mbnNfMS5zdGFydE9mTW9udGgpKCgwLCBkYXRlX2Zuc18xLnN1Yk1vbnRocykobmV3IERhdGUoKSwgNikpLCAoMCwgZGF0ZV9mbnNfMS5lbmRPZk1vbnRoKShuZXcgRGF0ZSgpKV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnVGhpcyB5ZWFyJyxcbiAgICAgICAgICAgICAgICByYW5nZTogWygwLCBkYXRlX2Zuc18xLnN0YXJ0T2ZZZWFyKShuZXcgRGF0ZSgpKSwgKDAsIGRhdGVfZm5zXzEuZW5kT2ZEYXkpKG5ldyBEYXRlKCkpXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdMYXN0IDEyIG1vbnRocycsXG4gICAgICAgICAgICAgICAgcmFuZ2U6IFsoMCwgZGF0ZV9mbnNfMS5zdGFydE9mTW9udGgpKCgwLCBkYXRlX2Zuc18xLnN1Yk1vbnRocykobmV3IERhdGUoKSwgMTIpKSwgKDAsIGRhdGVfZm5zXzEuZW5kT2ZEYXkpKG5ldyBEYXRlKCkpXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdBbGwgdGltZScsXG4gICAgICAgICAgICAgICAgcmFuZ2U6IFtuZXcgRGF0ZShpbml0aWFsRGF0ZS52YWx1ZSksICgwLCBkYXRlX2Zuc18xLmVuZE9mRGF5KShuZXcgRGF0ZSgpKV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICBdOyB9KTtcbiAgICAgICAgdmFyIGNvbnZlcnREYXRlID0gZnVuY3Rpb24gKGRhdGUpIHtcbiAgICAgICAgICAgIHZhciBkYXRlT2JqID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgICAgICAgICB2YXIgeWVhciA9IGRhdGVPYmouZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgICAgIHZhciBtb250aCA9IFN0cmluZyhkYXRlT2JqLmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgICAgICAgdmFyIGRheSA9IFN0cmluZyhkYXRlT2JqLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgICAgICAgIHJldHVybiBcIlwiLmNvbmNhdCh5ZWFyLCBcIi1cIikuY29uY2F0KG1vbnRoLCBcIi1cIikuY29uY2F0KGRheSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBvcGVuQ2FsZW5kYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoZGF0ZXBpY2tlci52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGRhdGVwaWNrZXIudmFsdWUub3Blbk1lbnUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNsb3NlQ2FsZW5kYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoZGF0ZXBpY2tlci52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJlbW92ZUV2ZW50c09mQ2FsZW5kYXIoKTtcbiAgICAgICAgICAgICAgICBkYXRlcGlja2VyLnZhbHVlLmNsb3NlTWVudSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgc2VsZWN0RGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChkYXRlcGlja2VyLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgZGF0ZXBpY2tlci52YWx1ZS5zZWxlY3REYXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBmb3JtYXQgPSBmdW5jdGlvbiAoZGF0ZXMpIHtcbiAgICAgICAgICAgIHZhciB0ZW1wQXJyYXkgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0ZW1wQXJyYXlbaV0gPSBkYXRlc1tpXS50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLVVTJywge1xuICAgICAgICAgICAgICAgICAgICBtb250aDogJ3Nob3J0JyxcbiAgICAgICAgICAgICAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0ZW1wQXJyYXkuam9pbignIC0gJyk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjbG9zZURhdGVEcm9wZG93biA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dSYW5nZURyb3Bkb3duLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc2hvd1JhbmdlRHJvcGRvd24udmFsdWU7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2xvc2VEYXRlRHJvcGRvd24pO1xuICAgICAgICAgICAgICAgIChfYSA9IGRhdGVSYW5nZU1haW4udmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGtlZXBNb2RlbE9wZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZURhdGVEcm9wZG93bik7XG4gICAgICAgICAgICAgICAgKF9iID0gZGF0ZVJhbmdlTWFpbi52YWx1ZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywga2VlcE1vZGVsT3Blbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIga2VlcE1vZGVsT3BlbiA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gW3NlbGVjdGVkRGF0ZV07IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzdGFydERhdGUgPSBzZWxlY3RlZERhdGUudmFsdWUgJiYgc2VsZWN0ZWREYXRlLnZhbHVlWzBdXG4gICAgICAgICAgICAgICAgPyBjb252ZXJ0RGF0ZShzZWxlY3RlZERhdGUudmFsdWVbMF0pXG4gICAgICAgICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgICAgIHZhciBlbmREYXRlID0gc2VsZWN0ZWREYXRlLnZhbHVlICYmIHNlbGVjdGVkRGF0ZS52YWx1ZVsxXVxuICAgICAgICAgICAgICAgID8gY29udmVydERhdGUoc2VsZWN0ZWREYXRlLnZhbHVlWzFdKVxuICAgICAgICAgICAgICAgIDogZmFsc2U7XG4gICAgICAgICAgICBpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZFByZXNlbnREYXlUZXh0KCk7XG4gICAgICAgICAgICAgICAgdHJpZ2dlclNldERhdGVSYW5nZShzdGFydERhdGUsIGVuZERhdGUsIGZpeGVkLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtkYXRlVHlwZV07IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRyaWdnZXJTZXREYXRlVHlwZShkYXRlVHlwZUtleS52YWx1ZSk7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBbcHJvcHMuY3VycmVudFZpZXddOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzZWxlY3RlZERhdGUudmFsdWVbMF0gPSAnJztcbiAgICAgICAgICAgIHNlbGVjdGVkRGF0ZS52YWx1ZVsxXSA9ICcnO1xuICAgICAgICAgICAgZml4ZWQudmFsdWUgPSAnQWxsIHRpbWUnO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgIHZhciB0cmlnZ2VyU2V0RGF0ZVJhbmdlID0gZnVuY3Rpb24gKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgZmlsdGVyZWREYXRlVHlwZSkge1xuICAgICAgICAgICAgaWYgKGZpbHRlcmVkRGF0ZVR5cGUgPT09IHZvaWQgMCkgeyBmaWx0ZXJlZERhdGVUeXBlID0gJyc7IH1cbiAgICAgICAgICAgIGVtaXQoJ3RyaWdnZXJTZXREYXRlUmFuZ2UnLCBzdGFydERhdGUsIGVuZERhdGUsIGZpbHRlcmVkRGF0ZVR5cGUpO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHByb3BzLmRhdGVOYW1lOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGRhdGVUeXBlTmFtZS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBmaXhlZC52YWx1ZTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHN0YXJ0RGF0ZSA9IHNlbGVjdGVkRGF0ZS52YWx1ZSAmJiBzZWxlY3RlZERhdGUudmFsdWVbMF1cbiAgICAgICAgICAgICAgICA/IGNvbnZlcnREYXRlKHNlbGVjdGVkRGF0ZS52YWx1ZVswXSlcbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICAgICAgdmFyIGVuZERhdGUgPSBzZWxlY3RlZERhdGUudmFsdWUgJiYgc2VsZWN0ZWREYXRlLnZhbHVlWzFdXG4gICAgICAgICAgICAgICAgPyBjb252ZXJ0RGF0ZShzZWxlY3RlZERhdGUudmFsdWVbMV0pXG4gICAgICAgICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgICAgIGlmIChzdGFydERhdGUgJiYgZW5kRGF0ZSkge1xuICAgICAgICAgICAgICAgIHRyaWdnZXJTZXREYXRlUmFuZ2Uoc3RhcnREYXRlLCBlbmREYXRlLCBmaXhlZC52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdHJpZ2dlclNldERhdGVUeXBlID0gZnVuY3Rpb24gKGV2ZW50VHlwZSkge1xuICAgICAgICAgICAgZW1pdCgndHJpZ2dlclNldERhdGVUeXBlJywgZXZlbnRUeXBlKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNldFNlbGVjdGVkUHJlc2VudERheVRleHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgZml4ZWQudmFsdWUgPVxuICAgICAgICAgICAgICAgIChfYiA9IChfYSA9IHByZXNldFJhbmdlcy52YWx1ZVtzZWxlY3RlZFByZXNlbnRJbmRleC52YWx1ZV0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sYWJlbCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJ0N1c3RvbSc7XG4gICAgICAgICAgICAvLyBzZWxlY3RlZFByZXNlbnRJbmRleC52YWx1ZSA9IDk5O1xuICAgICAgICAgICAgaWYgKGRhdGVUeXBlTmFtZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGZpeGVkLnZhbHVlID0gZGF0ZVR5cGVOYW1lLnZhbHVlO1xuICAgICAgICAgICAgICAgIGRhdGVUeXBlTmFtZS52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgY3VzdG9tUG9zaXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lO1xuICAgICAgICAgICAgdmFyIGxlZnRQb3NpdGlvbiA9IDA7XG4gICAgICAgICAgICBpZiAoZGF0ZVJhbmdlTWFpbi52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGxlZnRQb3NpdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5pbm5lcldpZHRoIC0gKChfYiA9IChfYSA9IGRhdGVSYW5nZU1haW4udmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnJpZ2h0KSA+XG4gICAgICAgICAgICAgICAgICAgICAgICAxNTBcbiAgICAgICAgICAgICAgICAgICAgICAgID8gTnVtYmVyKChfYyA9IGRhdGVSYW5nZU1haW4udmFsdWUpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodCkgLSAzMDBcbiAgICAgICAgICAgICAgICAgICAgICAgIDogTnVtYmVyKChfZCA9IGRhdGVSYW5nZU1haW4udmFsdWUpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodCkgLSA0MjA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRvcDogTnVtYmVyKChfZSA9IGRhdGVSYW5nZU1haW4udmFsdWUpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20pICsgMjAsXG4gICAgICAgICAgICAgICAgbGVmdDogbGVmdFBvc2l0aW9uLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNldERhdGVSYW5nZVR5cGVJbkRyb3Bkb3duID0gZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgICAgICAgIHNob3dSYW5nZURyb3Bkb3duLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBkYXRlVHlwZS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgZGF0ZVR5cGVLZXkudmFsdWUgPSBrZXk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgc2VsZWN0ZWRQcmVzZW50SW5kZXg6IHNlbGVjdGVkUHJlc2VudEluZGV4LCBkYXRlUmFuZ2VNYWluOiBkYXRlUmFuZ2VNYWluLCBkYXRlVHlwZTogZGF0ZVR5cGUsIGRhdGVEcm9wZG93bjogZGF0ZURyb3Bkb3duLCBkYXRlVHlwZU5hbWU6IGRhdGVUeXBlTmFtZSwgZGF0ZVR5cGVLZXk6IGRhdGVUeXBlS2V5LCBzaG93UmFuZ2VEcm9wZG93bjogc2hvd1JhbmdlRHJvcGRvd24sIGVtaXQ6IGVtaXQsIGluaXRpYWxEYXRlOiBpbml0aWFsRGF0ZSwgZml4ZWQ6IGZpeGVkLCB0b2RheURhdGU6IHRvZGF5RGF0ZSwgc2VsZWN0ZWREYXRlOiBzZWxlY3RlZERhdGUsIGRhdGVwaWNrZXI6IGRhdGVwaWNrZXIsIGhhbmRsZVByZXNlbnRSYW5nZUl0ZW1DbGljazogaGFuZGxlUHJlc2VudFJhbmdlSXRlbUNsaWNrLCBoYW5kbGVDYWxlbmRhckl0ZW1DbGljazogaGFuZGxlQ2FsZW5kYXJJdGVtQ2xpY2ssIGFkZEV2ZW50c0ZvckNhbGVuZGFyOiBhZGRFdmVudHNGb3JDYWxlbmRhciwgcmVtb3ZlRXZlbnRzT2ZDYWxlbmRhcjogcmVtb3ZlRXZlbnRzT2ZDYWxlbmRhciwgdG9nZ2xlU2hvd1JhbmdlRHJvcGRvd246IHRvZ2dsZVNob3dSYW5nZURyb3Bkb3duLCByZXNldERhdGU6IHJlc2V0RGF0ZSwgcHJlc2V0UmFuZ2VzOiBwcmVzZXRSYW5nZXMsIGNvbnZlcnREYXRlOiBjb252ZXJ0RGF0ZSwgb3BlbkNhbGVuZGFyOiBvcGVuQ2FsZW5kYXIsIGNsb3NlQ2FsZW5kYXI6IGNsb3NlQ2FsZW5kYXIsIHNlbGVjdERhdGU6IHNlbGVjdERhdGUsIGZvcm1hdDogZm9ybWF0LCBjbG9zZURhdGVEcm9wZG93bjogY2xvc2VEYXRlRHJvcGRvd24sIGtlZXBNb2RlbE9wZW46IGtlZXBNb2RlbE9wZW4sIHRyaWdnZXJTZXREYXRlUmFuZ2U6IHRyaWdnZXJTZXREYXRlUmFuZ2UsIHRyaWdnZXJTZXREYXRlVHlwZTogdHJpZ2dlclNldERhdGVUeXBlLCBzZXRTZWxlY3RlZFByZXNlbnREYXlUZXh0OiBzZXRTZWxlY3RlZFByZXNlbnREYXlUZXh0LCBjdXN0b21Qb3NpdGlvbjogY3VzdG9tUG9zaXRpb24sIHNldERhdGVSYW5nZVR5cGVJbkRyb3Bkb3duOiBzZXREYXRlUmFuZ2VUeXBlSW5Ecm9wZG93biwgVnVlRGF0ZVBpY2tlcjogdnVlX2RhdGVwaWNrZXJfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0Rlc2NyaXB0aW9uRm9ybScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHt9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgcmV0dXJuIHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8zID0gcmVxdWlyZShcIkBoZWFkbGVzc3VpL3Z1ZVwiKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdFcnJvck1lc3NhZ2UnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGlzRW1wdHk6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgc2hvdyA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGhhc0Vycm9ycyA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVycm9yQ291bnQgPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMi5pbmplY3QpKCd0b2FzdERhdGEnKTtcbiAgICAgICAgdmFyIGVycm9yRGF0YSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgYWNjb3VudF92ZXJpZmllZDogZmFsc2UsXG4gICAgICAgICAgICBwdWJsaXNoZXJfYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHRfc2V0dGluZzogZmFsc2UsXG4gICAgICAgICAgICBwdWJsaXNoZXJfc2V0dGluZzogZmFsc2UsXG4gICAgICAgICAgICB0b2tlbl9zdGF0dXM6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlzTG9hZGVyVmlzaWJsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgZnVuY3Rpb24gcmVzZW5kVmVyaWZpY2F0aW9uRW1haWwoKSB7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy91c2VyL3ZlcmlmaWNhdGlvbi9lbWFpbCcpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gZXJyb3IuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIC5hbGwoW1xuICAgICAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvc2V0dGluZy9zdGF0dXMnKSxcbiAgICAgICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL3VzZXIvdmVyaWZpY2F0aW9uL3N0YXR1cycpLFxuICAgICAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvb3JnYW5pc2F0aW9uL3N0YXR1cycpLFxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGF4aW9zXzEuZGVmYXVsdC5zcHJlYWQoZnVuY3Rpb24gKHNldHRpbmdfcmVzLCB1c2VyX3Jlcywgb3JnX3Jlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gc2V0dGluZ19yZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHVzZXJfcmVzcG9uc2UgPSB1c2VyX3Jlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICB2YXIgb3JnX3Jlc3BvbnNlID0gb3JnX3Jlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEuZGVmYXVsdF9zZXR0aW5nID0gKF9hID0gcmVzcG9uc2UgPT09IG51bGwgfHwgcmVzcG9uc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3BvbnNlLmRhdGEpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kZWZhdWx0X3N0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLnB1Ymxpc2hlcl9zZXR0aW5nID0gKF9iID0gcmVzcG9uc2UgPT09IG51bGwgfHwgcmVzcG9uc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3BvbnNlLmRhdGEpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5wdWJsaXNoZXJfc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEudG9rZW5fc3RhdHVzID0gKF9jID0gcmVzcG9uc2UgPT09IG51bGwgfHwgcmVzcG9uc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3BvbnNlLmRhdGEpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy50b2tlbl9zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS5hY2NvdW50X3ZlcmlmaWVkID0gdXNlcl9yZXNwb25zZS5kYXRhLmFjY291bnRfdmVyaWZpZWQ7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wdWJsaXNoZXJfYWN0aXZlID0gb3JnX3Jlc3BvbnNlLmRhdGEucHVibGlzaGVyX2FjdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGdyb3VwZWRFcnJvciA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdkZWZhdWx0X3NldHRpbmcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3B1Ymxpc2hlcl9zZXR0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b2tlbl9zdGF0dXMnLFxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlcnJvciBpbiBlcnJvckRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXJyb3JEYXRhW2Vycm9yXSAmJiBncm91cGVkRXJyb3IuaW5kZXhPZihlcnJvcikgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JDb3VudC52YWx1ZSArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGVycm9yRGF0YS5wdWJsaXNoZXJfc2V0dGluZyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLnRva2VuX3N0YXR1cyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLmRlZmF1bHRfc2V0dGluZykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yQ291bnQudmFsdWUgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnZhbHVlcyhlcnJvckRhdGEpLmluZGV4T2YoZmFsc2UpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0Vycm9ycy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHNob3c6IHNob3csIGhhc0Vycm9yczogaGFzRXJyb3JzLCBlcnJvckNvdW50OiBlcnJvckNvdW50LCB0b2FzdERhdGE6IHRvYXN0RGF0YSwgZXJyb3JEYXRhOiBlcnJvckRhdGEsIGlzTG9hZGVyVmlzaWJsZTogaXNMb2FkZXJWaXNpYmxlLCByZXNlbmRWZXJpZmljYXRpb25FbWFpbDogcmVzZW5kVmVyaWZpY2F0aW9uRW1haWwsIFRyYW5zaXRpb25Sb290OiB2dWVfMy5UcmFuc2l0aW9uUm9vdCwgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdFcnJvclBvcFVwJyxcbiAgICBwcm9wczoge1xuICAgICAgICBtZXNzYWdlOiB7XG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIHR5cGU6IEFycmF5IHx8IFN0cmluZyxcbiAgICAgICAgfSxcbiAgICAgICAgdGl0bGU6IHsgdHlwZTogU3RyaW5nLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgZW1pdHM6IFsnY2xvc2UtcG9wdXAnXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2UsIGVtaXQgPSBfYS5lbWl0O1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBlbWl0KCdjbG9zZS1wb3B1cCcsICdjbG9zZWQnKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCBlbWl0OiBlbWl0LCBwcm9wczogcHJvcHMsIGNsb3NlOiBjbG9zZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIHByb3BzOiB7XG4gICAgICAgIG5hbWU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBob3ZlclRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJ3ctNjAnLFxuICAgICAgICB9LFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGxpbms6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBpY29uU2l6ZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIHNob3dJYXRpUmVmZXJlbmNlOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHJldHVybiB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdMb2FkZXJDbXAnLFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdNdWx0aVNlbGVjdFdpdGhTZWFyY2gnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGxpc3RJdGVtczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGhlYWRlcjoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBlbWl0czogWydjaGFuZ2VTZWxlY3RlZFB1Ymxpc2hlcicsICdjbG9zZSddLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZSwgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgdGVtcExpc3RJdGVtcyA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hlclR5cGVNdWx0aXNlbGVjdCA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMocHJvcHMubGlzdEl0ZW1zKTtcbiAgICAgICAgdmFyIHNlYXJjaElucHV0ID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgY2hlY2tlZEJveGVzID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgY2hhbmdlU2VsZWN0ZWRQdWJsaXNoZXIgPSBmdW5jdGlvbiAoc2VsZWN0ZWRQdWJsaXNoZXJUeXBlKSB7XG4gICAgICAgICAgICBlbWl0KCdjaGFuZ2VTZWxlY3RlZFB1Ymxpc2hlcicsIHNlbGVjdGVkUHVibGlzaGVyVHlwZSk7XG4gICAgICAgIH07XG4gICAgICAgIGZvcm1hdFB1Ymxpc2hlclR5cGUoKTtcbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0UHVibGlzaGVyVHlwZSgpIHtcbiAgICAgICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMocHJvcHMubGlzdEl0ZW1zKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHRlbXBMaXN0SXRlbXMudmFsdWUucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGtleToga2V5c1tpXSxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzLmxpc3RJdGVtc1trZXlzW2ldXSxcbiAgICAgICAgICAgICAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwdWJsaXNoZXJUeXBlTXVsdGlzZWxlY3QudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBrZWVwUHVibGlzaGVyTW9kZWxPcGVuKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vbkJlZm9yZVVubW91bnQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHB1Ymxpc2hlclR5cGVNdWx0aXNlbGVjdC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGtlZXBQdWJsaXNoZXJNb2RlbE9wZW4pO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHNob3dOb0RhdGFDb21wb25lbnQgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICB0ZW1wTGlzdEl0ZW1zLnZhbHVlLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLnNob3cpIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiAhY291bnQ7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdXBkYXRlQXJyYXlCeVNlYXJjaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzZWFyY2hTdHJpbmcgPSBzZWFyY2hJbnB1dC52YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSB0ZW1wTGlzdEl0ZW1zLnZhbHVlW2ldO1xuICAgICAgICAgICAgICAgIHRlbXBMaXN0SXRlbXMudmFsdWVbaV0uc2hvdyA9IGl0ZW0ubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKHNlYXJjaFN0cmluZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBrZWVwUHVibGlzaGVyTW9kZWxPcGVuID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGFwcGx5RmlsdGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZW1pdCgnY2xvc2UnKTtcbiAgICAgICAgICAgIGNoYW5nZVNlbGVjdGVkUHVibGlzaGVyKGNoZWNrZWRCb3hlcy52YWx1ZSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgdGVtcExpc3RJdGVtczogdGVtcExpc3RJdGVtcywgcHVibGlzaGVyVHlwZU11bHRpc2VsZWN0OiBwdWJsaXNoZXJUeXBlTXVsdGlzZWxlY3QsIGVtaXQ6IGVtaXQsIGtleXM6IGtleXMsIHNlYXJjaElucHV0OiBzZWFyY2hJbnB1dCwgY2hlY2tlZEJveGVzOiBjaGVja2VkQm94ZXMsIGNoYW5nZVNlbGVjdGVkUHVibGlzaGVyOiBjaGFuZ2VTZWxlY3RlZFB1Ymxpc2hlciwgZm9ybWF0UHVibGlzaGVyVHlwZTogZm9ybWF0UHVibGlzaGVyVHlwZSwgc2hvd05vRGF0YUNvbXBvbmVudDogc2hvd05vRGF0YUNvbXBvbmVudCwgdXBkYXRlQXJyYXlCeVNlYXJjaDogdXBkYXRlQXJyYXlCeVNlYXJjaCwga2VlcFB1Ymxpc2hlck1vZGVsT3Blbjoga2VlcFB1Ymxpc2hlck1vZGVsT3BlbiwgYXBwbHlGaWx0ZXI6IGFwcGx5RmlsdGVyLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBwcm9wczoge1xuICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdGV4dDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGJ0blRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBidG5MaW5rOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1BvcHVwTW9kYWwnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG1vZGFsQWN0aXZlOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG5vUGFkZGluZzoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJzgwOScsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBlbWl0czogWydjbG9zZScsICdyZXNldCddLFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBwcm9wcy5tb2RhbEFjdGl2ZTsgfSwgZnVuY3Rpb24gKG1vZGFsQWN0aXZlKSB7XG4gICAgICAgICAgICBpZiAobW9kYWxBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIGVtaXQoJ2Nsb3NlJyk7XG4gICAgICAgICAgICBlbWl0KCdyZXNldCcpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4geyBjbG9zZTogY2xvc2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlM19yYWRpYWxfcHJvZ3Jlc3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwidnVlMy1yYWRpYWwtcHJvZ3Jlc3NcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgUmFkaWFsUHJvZ3Jlc3NCYXI6IHZ1ZTNfcmFkaWFsX3Byb2dyZXNzXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIHBlcmNlbnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IDAsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBjb21wbGV0ZWRQZXJjZW50ID0gKDAsIHZ1ZV8xLnJlZikocHJvcHMucGVyY2VudCk7XG4gICAgICAgIHZhciB0b3RhbFBlcmNlbnQgPSAoMCwgdnVlXzEucmVmKSgxMDApO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29tcGxldGVkUGVyY2VudDogY29tcGxldGVkUGVyY2VudCxcbiAgICAgICAgICAgIHRvdGFsUGVyY2VudDogdG90YWxQZXJjZW50LFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBTaGltbWVyTG9hZGluZ192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9TaGltbWVyTG9hZGluZy52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1RhYmxlTG9hZGVyQ29tcG9uZW50JyxcbiAgICBwcm9wczoge1xuICAgICAgICByb3dDb3VudDogeyB0eXBlOiBOdW1iZXIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGNvbENvdW50OiB7IHR5cGU6IE51bWJlciwgcmVxdWlyZWQ6IGZhbHNlLCBkZWZhdWx0OiAxIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBTaGltbWVyTG9hZGluZzogU2hpbW1lckxvYWRpbmdfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdQYWdpbmF0aW9uQ29tcG9uZW50JyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZW1pdHM6IFsnZmV0Y2hBY3Rpdml0aWVzJ10sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGVtaXQgPSBfYS5lbWl0O1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBhY3RpdmVfcGFnZSA9ICgwLCB2dWVfMS5yZWYpKDEpO1xuICAgICAgICB2YXIgbGFzdF9wYWdlbGlzdCA9ICgwLCB2dWVfMS5yZWYpKCk7XG4gICAgICAgIHZhciBtaWRfcGFnZWxpc3QgPSAoMCwgdnVlXzEucmVmKSgpO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHByb3BzLnJlc2V0OyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGFjdGl2ZV9wYWdlLnZhbHVlID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoYWN0aXZlX3BhZ2UsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGVtaXQoJ2ZldGNoQWN0aXZpdGllcycsIGFjdGl2ZV9wYWdlLnZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBsYXN0cGFnZXMgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBsYXN0X3BhZ2VsaXN0LnZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIG1pZHBhZ2VzID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gbWlkX3BhZ2VsaXN0LnZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlQWN0aXZlUGFnZShwYWdlKSB7XG4gICAgICAgICAgICBhY3RpdmVfcGFnZS52YWx1ZSA9IHBhZ2U7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gY2hhbmdlUGFnZShwYWdlTnVtKSB7XG4gICAgICAgICAgICBhY3RpdmVfcGFnZS52YWx1ZSA9IHBhZ2VOdW07XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gbmV4dFBhZ2UoKSB7XG4gICAgICAgICAgICBhY3RpdmVfcGFnZS52YWx1ZSA9XG4gICAgICAgICAgICAgICAgYWN0aXZlX3BhZ2UudmFsdWUgPT09IHByb3BzLmRhdGEubGFzdF9wYWdlID8gMSA6IGFjdGl2ZV9wYWdlLnZhbHVlICsgMTtcbiAgICAgICAgfVxuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFjdGl2ZV9wYWdlLnZhbHVlOyB9LCBmdW5jdGlvbiAoY3VycmVudFBhZ2UpIHtcbiAgICAgICAgICAgIGxhc3RfcGFnZWxpc3QudmFsdWUgPSBBcnJheS5mcm9tKEFycmF5KHByb3BzLmRhdGEubGFzdF9wYWdlKSwgZnVuY3Rpb24gKF8sIGluZGV4KSB7IHJldHVybiBpbmRleCArIDE7IH0pO1xuICAgICAgICAgICAgbGFzdF9wYWdlbGlzdC52YWx1ZSA9IGxhc3RfcGFnZWxpc3QudmFsdWUuZmlsdGVyKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAodmFsdWUgPiBwcm9wcy5kYXRhLmxhc3RfcGFnZSAtIDUgJiYgcHJvcHMuZGF0YS5sYXN0X3BhZ2UgIT0gdmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBtaWRfcGFnZWxpc3QudmFsdWUgPSBBcnJheS5mcm9tKEFycmF5KGN1cnJlbnRQYWdlICsgMiksIGZ1bmN0aW9uIChfLCBpbmRleCkgeyByZXR1cm4gaW5kZXggKyAxOyB9KTtcbiAgICAgICAgICAgIG1pZF9wYWdlbGlzdC52YWx1ZSA9IG1pZF9wYWdlbGlzdC52YWx1ZS5maWx0ZXIoZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlID4gY3VycmVudFBhZ2UgLSAzO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBmdW5jdGlvbiBwcmV2aW91c1BhZ2UoKSB7XG4gICAgICAgICAgICBhY3RpdmVfcGFnZS52YWx1ZSA9XG4gICAgICAgICAgICAgICAgYWN0aXZlX3BhZ2UudmFsdWUgPT09IDEgPyBwcm9wcy5kYXRhLmxhc3RfcGFnZSA6IGFjdGl2ZV9wYWdlLnZhbHVlIC0gMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgYWN0aXZlX3BhZ2U6IGFjdGl2ZV9wYWdlLFxuICAgICAgICAgICAgdXBkYXRlQWN0aXZlUGFnZTogdXBkYXRlQWN0aXZlUGFnZSxcbiAgICAgICAgICAgIG5leHRQYWdlOiBuZXh0UGFnZSxcbiAgICAgICAgICAgIHByZXZpb3VzUGFnZTogcHJldmlvdXNQYWdlLFxuICAgICAgICAgICAgY2hhbmdlUGFnZTogY2hhbmdlUGFnZSxcbiAgICAgICAgICAgIGxhc3RwYWdlczogbGFzdHBhZ2VzLFxuICAgICAgICAgICAgbWlkcGFnZXM6IG1pZHBhZ2VzLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdUb2FzdE1lc3NhZ2UnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG1lc3NhZ2U6IHsgdHlwZTogU3RyaW5nLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICB0eXBlOiB7IHR5cGU6IEJvb2xlYW4sIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgY2xhc3NOYW1lID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICBjbGFzc05hbWUudmFsdWUgPVxuICAgICAgICAgICAgcHJvcHMudHlwZSA9PT0gdHJ1ZVxuICAgICAgICAgICAgICAgID8gJ3JvdW5kZWQtbGcgYmctbWludCBib3JkZXIgYm9yZGVyLXNwcmluZy01MCBweS0zIHB4LTUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSB0ZXh0LXNtIGxlYWRpbmctbm9ybWFsIHRleHQtbi01MCdcbiAgICAgICAgICAgICAgICA6ICdyb3VuZGVkLWxnIGJnLWNyaW1zb24tMTAgYm9yZGVyIGJvcmRlci1jcmltc29uLTIwIHB5LTMgcHgtNSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHRleHQtc20gbGVhZGluZy1ub3JtYWwgdGV4dC1uLTUwJztcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgcHJvcHM6IHByb3BzLCBjbGFzc05hbWU6IGNsYXNzTmFtZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1hsc0xpc3RFcnJvcicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgLy8gTnVtYmVyIHdpdGggYSBkZWZhdWx0IHZhbHVlXG4gICAgICAgIGltcG9ydERhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDogeyB0eXBlOiBOdW1iZXIsIHJlcXVpcmVkOiBmYWxzZSwgZGVmYXVsdDogMCB9LFxuICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGluZGV4OiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBzaG93RXJyb3JzID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0NyaXRpY2FsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgY3JpdGljYWxUb2dnbGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93RXJyb3IgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBlcnJvclRvZ2dsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHdhcm5pbmdUb2dnbGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93V2FybmluZyA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVycm9yTGVuZ3RoID0gZnVuY3Rpb24gKGN1cnJlbnRFcnJvcikge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICAoKF9hID0gcHJvcHMuYWN0aXZpdHkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5lcnJvcnNbY3VycmVudEVycm9yXSkgJiZcbiAgICAgICAgICAgICAgICAoKF9iID0gT2JqZWN0LnZhbHVlcyhwcm9wcy5hY3Rpdml0eVsnZXJyb3JzJ11bY3VycmVudEVycm9yXSkpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gT2JqZWN0LmtleXMoaXRlbSkubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHRpdGxlID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgICAgIHN3aXRjaCAocHJvcHMuc3RhdHVzWyd0ZW1wbGF0ZSddKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnYWN0aXZpdHknOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuYWN0aXZpdHkuZGF0YS50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAoX2EgPSBwcm9wcy5hY3Rpdml0eS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ1VudGl0bGVkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnVW50aXRsZWQnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3Jlc3VsdCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5hY3Rpdml0eS5kYXRhLnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IChfYiA9IHByb3BzLmFjdGl2aXR5LmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJ1VudGl0bGVkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnVW50aXRsZWQnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3BlcmlvZCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoKHByb3BzLmFjdGl2aXR5LmRhdGEucGVyaW9kX3N0YXJ0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5hY3Rpdml0eS5kYXRhLnBlcmlvZF9zdGFydFswXS5kYXRlKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAnIC0gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAocHJvcHMuYWN0aXZpdHkuZGF0YS5wZXJpb2RfZW5kICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuYWN0aXZpdHkuZGF0YS5wZXJpb2RfZW5kWzBdLmRhdGUpKTtcbiAgICAgICAgICAgICAgICBjYXNlICdpbmRpY2F0b3InOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuYWN0aXZpdHkuZGF0YS50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAoX2MgPSBwcm9wcy5hY3Rpdml0eS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10pICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6ICdVbnRpdGxlZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ1VudGl0bGVkJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1VudGl0bGVkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjb3VudEVycm9ycyA9IGZ1bmN0aW9uIChhY3Rpdml0eUluZGV4KSB7XG4gICAgICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICAgICAgZm9yICh2YXIgdHlwZSBpbiBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXSkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGluZGV4IGluIHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddW3R5cGVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ11bdHlwZV1baW5kZXhdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNyaXRpY2FsQWNjb3JkaW9uVG9nZ2xlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHNob3dDcml0aWNhbC52YWx1ZSA9ICFzaG93Q3JpdGljYWwudmFsdWU7XG4gICAgICAgICAgICB2YXIgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmNyaXRpY2FsLWRyb3Bkb3duLWNvbnRhaW5lcicpO1xuICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gKF9hID0gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJy5jcml0aWNhbC1kcm9wZG93bicpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgaWYgKGNyaXRpY2FsVG9nZ2xlLnZhbHVlICYmIHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgY3JpdGljYWxUb2dnbGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogYXV0bztcIjtcbiAgICAgICAgICAgICAgICB9LCA2MDApO1xuICAgICAgICAgICAgICAgIGNyaXRpY2FsVG9nZ2xlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHdhcm5pbmdBY2NvcmRpb25Ub2dnbGUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgc2hvd1dhcm5pbmcudmFsdWUgPSAhc2hvd1dhcm5pbmcudmFsdWU7XG4gICAgICAgICAgICB2YXIgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLndhcm5pbmctZHJvcGRvd24tY29udGFpbmVyJyk7XG4gICAgICAgICAgICB2YXIgZWxIZWlnaHQgPSAoX2EgPSB0YXJnZXQgPT09IG51bGwgfHwgdGFyZ2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YXJnZXQucXVlcnlTZWxlY3RvcignLndhcm5pbmctZHJvcGRvd24nKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIGlmICh3YXJuaW5nVG9nZ2xlLnZhbHVlICYmIHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgd2FybmluZ1RvZ2dsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBhdXRvO1wiO1xuICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgd2FybmluZ1RvZ2dsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBlcnJvckFjY29yZGlvblRvZ2dsZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBzaG93RXJyb3IudmFsdWUgPSAhc2hvd0Vycm9yLnZhbHVlO1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRUYXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5lcnJvci1kcm9wZG93bi1jb250YWluZXInKTtcbiAgICAgICAgICAgIHZhciBlbEhlaWdodCA9IChfYSA9IHRhcmdldCA9PT0gbnVsbCB8fCB0YXJnZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhcmdldC5xdWVyeVNlbGVjdG9yKCcuZXJyb3ItZHJvcGRvd24nKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIGlmIChlcnJvclRvZ2dsZS52YWx1ZSAmJiB0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJcIjtcbiAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgIGVycm9yVG9nZ2xlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IGF1dG87XCI7XG4gICAgICAgICAgICAgICAgfSwgNjAwKTtcbiAgICAgICAgICAgICAgICBlcnJvclRvZ2dsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHNob3dFcnJvcnM6IHNob3dFcnJvcnMsIHNob3dDcml0aWNhbDogc2hvd0NyaXRpY2FsLCBjcml0aWNhbFRvZ2dsZTogY3JpdGljYWxUb2dnbGUsIHNob3dFcnJvcjogc2hvd0Vycm9yLCBlcnJvclRvZ2dsZTogZXJyb3JUb2dnbGUsIHdhcm5pbmdUb2dnbGU6IHdhcm5pbmdUb2dnbGUsIHNob3dXYXJuaW5nOiBzaG93V2FybmluZywgcHJvcHM6IHByb3BzLCBlcnJvckxlbmd0aDogZXJyb3JMZW5ndGgsIHRpdGxlOiB0aXRsZSwgY291bnRFcnJvcnM6IGNvdW50RXJyb3JzLCBjcml0aWNhbEFjY29yZGlvblRvZ2dsZTogY3JpdGljYWxBY2NvcmRpb25Ub2dnbGUsIHdhcm5pbmdBY2NvcmRpb25Ub2dnbGU6IHdhcm5pbmdBY2NvcmRpb25Ub2dnbGUsIGVycm9yQWNjb3JkaW9uVG9nZ2xlOiBlcnJvckFjY29yZGlvblRvZ2dsZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHNwaW5uZXJMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vc3Bpbm5lckxvYWRlci52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdYbHNMb2FkZXInLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGFjdGl2aXR5TmFtZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlZDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICB0b3RhbENvdW50OiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIgfHwgbnVsbCxcbiAgICAgICAgICAgIGRlZmF1bHQ6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHByb2Nlc3NlZENvdW50OiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICBkZWZhdWx0OiAwLFxuICAgICAgICB9LFxuICAgICAgICB4bHNGYWlsZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ2Nsb3NlJ10sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGN1cnJlbnRBY3Rpdml0eSA9ICgwLCB2dWVfMi5yZWYpKG51bGwpO1xuICAgICAgICB2YXIgbWF4aW1pemUgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgc2hvd01pbmltaXplZE1vZGVsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgbWFwQWN0aXZpdHlOYW1lID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2FjdGl2aXR5JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdCYXNpYyBBY3Rpdml0eSBFbGVtZW50cyc7XG4gICAgICAgICAgICAgICAgY2FzZSAncGVyaW9kJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdQZXJpb2QnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2luZGljYXRvcic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnSW5kaWNhdG9ycyBleGNlcHQgUGVyaW9kJztcbiAgICAgICAgICAgICAgICBjYXNlICdyZXN1bHQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1Jlc3VsdCBleGNlcHQgSW5kaWNhdG9ycyBhbmQgUGVyaW9kJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHJldHJ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIi9pbXBvcnQveGxzXCIpO1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2ltcG9ydC94bHMnO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbWF4aW1pemUnKSA9PT0gJ2ZhbHNlJ1xuICAgICAgICAgICAgICAgID8gKG1heGltaXplLnZhbHVlID0gZmFsc2UpXG4gICAgICAgICAgICAgICAgOiAobWF4aW1pemUudmFsdWUgPSB0cnVlKTtcbiAgICAgICAgICAgIGN1cnJlbnRBY3Rpdml0eS52YWx1ZSA9IG1hcEFjdGl2aXR5TmFtZShwcm9wcy5hY3Rpdml0eU5hbWUpO1xuICAgICAgICAgICAgdmFyIGNoZWNrU3VwcG9ydEJ1dHRvbiA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgc3VwcG9ydEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNsYXVuY2hlcicpO1xuICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0QnV0dG9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1cHBvcnRCdXR0b24uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZXkoLTUwcHgpJztcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja1N1cHBvcnRCdXR0b24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIDEwKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gbWF4aW1pemUudmFsdWU7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHNob3dNaW5pbWl6ZWRNb2RlbC52YWx1ZSA9IHRydWUpOyB9LCAyNjApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2hvd01pbmltaXplZE1vZGVsLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbWF4aW1pemUnLCB2YWx1ZS50b1N0cmluZygpKTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdtYXhpbWl6ZScsICcnKTtcbiAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICBpZiAoc3VwcG9ydEJ1dHRvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHN1cHBvcnRCdXR0b24uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZXkoMHB4KSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcGVyY2VudGFnZVdpZHRoID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAocHJvcHMudG90YWxDb3VudCAhPT0gMCAmJiBwcm9wcy50b3RhbENvdW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChwcm9wcy5wcm9jZXNzZWRDb3VudCAvIHByb3BzLnRvdGFsQ291bnQpICogMTAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocHJvcHMuY29tcGxldGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDEwMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHhsc0ZhaWxlZE1lc3NhZ2UgPSAoMCwgdnVlXzIuaW5qZWN0KSgneGxzRmFpbGVkTWVzc2FnZScpO1xuICAgICAgICB2YXIgcHJvY2Vzc2luZyA9ICgwLCB2dWVfMi5pbmplY3QpKCdwcm9jZXNzaW5nJyk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGN1cnJlbnRBY3Rpdml0eTogY3VycmVudEFjdGl2aXR5LCBtYXhpbWl6ZTogbWF4aW1pemUsIHNob3dNaW5pbWl6ZWRNb2RlbDogc2hvd01pbmltaXplZE1vZGVsLCBwcm9wczogcHJvcHMsIG1hcEFjdGl2aXR5TmFtZTogbWFwQWN0aXZpdHlOYW1lLCByZXRyeTogcmV0cnksIHBlcmNlbnRhZ2VXaWR0aDogcGVyY2VudGFnZVdpZHRoLCB4bHNGYWlsZWRNZXNzYWdlOiB4bHNGYWlsZWRNZXNzYWdlLCBwcm9jZXNzaW5nOiBwcm9jZXNzaW5nLCBzcGlubmVyTG9hZGVyOiBzcGlubmVyTG9hZGVyX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEFjdGl2aXR5RG93bmxvYWRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vQWN0aXZpdHlEb3dubG9hZC52dWVcIikpO1xudmFyIFhsc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9YbHNMb2FkZXIudnVlXCIpKTtcbnZhciBCdWxrcHVibGlzaFdpdGhYbHNfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZVwiKSk7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdYbHNVcGxvYWRJbmRpY2F0b3InLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGFjdGl2aXR5TmFtZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlZDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICB0b3RhbENvdW50OiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIgfHwgbnVsbCxcbiAgICAgICAgICAgIGRlZmF1bHQ6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHByb2Nlc3NlZENvdW50OiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICBkZWZhdWx0OiAwLFxuICAgICAgICB9LFxuICAgICAgICB4bHNGYWlsZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgeGxzRGF0YToge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF9iO1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG4gICAgICAgIHZhciBzaG93WGxzU3RhdHVzID0gKDAsIHZ1ZV8yLnJlZikodHJ1ZSk7XG4gICAgICAgIHZhciBkb3dubG9hZENvbXBsZXRlZCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvZ2dsZUJ1bGtQdWJsaXNoID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgY2FuY2VsRG93bmxvYWQgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93QnVsa3B1Ymxpc2ggPSAoMCwgdnVlXzIucmVmKSh0cnVlKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hpbmdBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgYnVsa1B1Ymxpc2hMZW5ndGggPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIHBhID0gKDAsIGNvcmVfMS51c2VTdG9yYWdlKSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywge1xuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IChfYiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwdWJsaXNoaW5nQWN0aXZpdGllcycpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiB7fSxcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzLnZhbHVlID1cbiAgICAgICAgICAgICAgICBwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcyAmJiBPYmplY3Qua2V5cyhwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcyk7XG4gICAgICAgICAgICB2YXIgY2hlY2tTdXBwb3J0QnV0dG9uID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRCdXR0b24gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRleSgtNTBweCknO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIShwcm9wcy54bHNEYXRhICYmIHNob3dYbHNTdGF0dXMpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhKGRvd25sb2FkaW5nICYmICFkb3dubG9hZENvbXBsZXRlZC52YWx1ZSAmJiAhY2FuY2VsRG93bmxvYWQudmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93QnVsa3B1Ymxpc2ggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllcy52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzdXBwb3J0QnV0dG9uLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGUoLTM1MHB4ICwwcHgpJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrU3VwcG9ydEJ1dHRvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMTApO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBbc3RvcmUuc3RhdGUuc3RhcnRCdWxrUHVibGlzaCwgc3RvcmUuc3RhdGUuYnVsa3B1Ymxpc2hBY3Rpdml0aWVzXTsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllcy52YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtwdWJsaXNoQWN0aXZpdGllcy5wdWJsaXNoaW5nQWN0aXZpdGllcyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoc3RvcmUuc3RhdGUuYnVsa3B1Ymxpc2hBY3Rpdml0aWVzLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKTtcbiAgICAgICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllcy52YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgIHBhLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuc3RhcnRCdWxrUHVibGlzaDsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd0J1bGtwdWJsaXNoLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHByb3BzLnhsc0RhdGE7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc2hvd1hsc1N0YXR1cy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtcbiAgICAgICAgICAgIHByb3BzLnhsc0RhdGEsXG4gICAgICAgICAgICBzaG93WGxzU3RhdHVzLnZhbHVlLFxuICAgICAgICAgICAgZG93bmxvYWRpbmcsXG4gICAgICAgICAgICBkb3dubG9hZENvbXBsZXRlZC52YWx1ZSxcbiAgICAgICAgICAgIGNhbmNlbERvd25sb2FkLnZhbHVlLFxuICAgICAgICAgICAgdG9nZ2xlQnVsa1B1Ymxpc2gudmFsdWUsXG4gICAgICAgIF07IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICBpZiAoIXNob3dYbHNQb3B1cC52YWx1ZSAmJlxuICAgICAgICAgICAgICAgICFzaG93RG93bmxvYWRQb3B1cC52YWx1ZSAmJlxuICAgICAgICAgICAgICAgIHNob3dCdWxrUHVibGlzaFBvcHVwICYmXG4gICAgICAgICAgICAgICAgdG9nZ2xlQnVsa1B1Ymxpc2gudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRCdXR0b24gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRCdXR0b24uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZSgtMzUwcHggLDBweCknO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0QnV0dG9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1cHBvcnRCdXR0b24uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZXkoLTUwcHgpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgc2hvd0J1bGtQdWJsaXNoUG9wdXAgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiAoc2hvd0J1bGtwdWJsaXNoLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgYWN0aXZpdGllcy52YWx1ZSAmJlxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGFjdGl2aXRpZXMudmFsdWUpLmxlbmd0aCA+IDApO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHNob3dEb3dubG9hZFBvcHVwID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZG93bmxvYWRpbmcudmFsdWUgJiYgIWRvd25sb2FkQ29tcGxldGVkLnZhbHVlICYmICFjYW5jZWxEb3dubG9hZC52YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBzaG93WGxzUG9wdXAgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBwcm9wcy54bHNEYXRhICYmIHNob3dYbHNTdGF0dXMudmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICBpZiAoc3VwcG9ydEJ1dHRvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChidWxrUHVibGlzaExlbmd0aC52YWx1ZSA+IDAgfHxcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocGEudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlKC0zNTBweCAsLTIwcHgpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN1cHBvcnRCdXR0b24uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVkoLTY1cHgpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2xvc2VCdWxrcHVibGlzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dCdWxrcHVibGlzaC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Z1ZS11c2UtbG9jYWwtc3RvcmFnZScsICdwdWJsaXNoaW5nQWN0aXZpdGllczp7fScpO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUJ1bGtwdWJsaXNoQWN0aXZpdGllcycsIHt9KTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5kZWxldGUoXCIvYWN0aXZpdGllcy9kZWxldGUtYnVsay1wdWJsaXNoLXN0YXR1c1wiKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNsb3NlWGxzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd1hsc1N0YXR1cy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIi9pbXBvcnQveGxzXCIpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVDYW5jZWxVcGxvYWQnLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQ2xvc2VYbHNNb2RlbCcsIHRydWUpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUNsb3NlWGxzTW9kZWwnLCBmYWxzZSk7IH0sIDIwMDApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuY29tcGxldGVYbHNEb3dubG9hZDsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBkb3dubG9hZENvbXBsZXRlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkb3dubG9hZENvbXBsZXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuYnVsa1B1Ymxpc2hMZW5ndGg7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgYnVsa1B1Ymxpc2hMZW5ndGgudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLmNhbmNlbERvd25sb2FkOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGNhbmNlbERvd25sb2FkLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgdmFyIGRvd25sb2FkaW5nID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2Rvd25sb2FkaW5nJyk7XG4gICAgICAgIHZhciBhY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2FjdGl2aXRpZXMnKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgc3RvcmU6IHN0b3JlLCBzaG93WGxzU3RhdHVzOiBzaG93WGxzU3RhdHVzLCBkb3dubG9hZENvbXBsZXRlZDogZG93bmxvYWRDb21wbGV0ZWQsIHRvZ2dsZUJ1bGtQdWJsaXNoOiB0b2dnbGVCdWxrUHVibGlzaCwgY2FuY2VsRG93bmxvYWQ6IGNhbmNlbERvd25sb2FkLCBzaG93QnVsa3B1Ymxpc2g6IHNob3dCdWxrcHVibGlzaCwgcHVibGlzaGluZ0FjdGl2aXRpZXM6IHB1Ymxpc2hpbmdBY3Rpdml0aWVzLCBidWxrUHVibGlzaExlbmd0aDogYnVsa1B1Ymxpc2hMZW5ndGgsIHBhOiBwYSwgcHJvcHM6IHByb3BzLCBzaG93QnVsa1B1Ymxpc2hQb3B1cDogc2hvd0J1bGtQdWJsaXNoUG9wdXAsIHNob3dEb3dubG9hZFBvcHVwOiBzaG93RG93bmxvYWRQb3B1cCwgc2hvd1hsc1BvcHVwOiBzaG93WGxzUG9wdXAsIGNsb3NlQnVsa3B1Ymxpc2g6IGNsb3NlQnVsa3B1Ymxpc2gsIGNsb3NlWGxzOiBjbG9zZVhscywgZG93bmxvYWRpbmc6IGRvd25sb2FkaW5nLCBhY3Rpdml0aWVzOiBhY3Rpdml0aWVzLCBBY3Rpdml0eURvd25sb2FkOiBBY3Rpdml0eURvd25sb2FkX3Z1ZV8xLmRlZmF1bHQsIFhsc0xvYWRlcjogWGxzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIEJ1bGtwdWJsaXNoV2l0aFhsczogQnVsa3B1Ymxpc2hXaXRoWGxzX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbi8vY29tcG9uZW50XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIFByb2dyZXNzTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZVwiKSk7XG4vLyBWdWV4IFN0b3JlXG52YXIgaW5kZXhfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL2luZGV4XCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdEZWxldGVCdXR0b24nLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG4gICAgICAgIC8vIHRvZ2dsZSBzdGF0ZSBmb3IgbW9kYWwgcG9wdXBcbiAgICAgICAgdmFyIF9iID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIGRlbGV0ZVZhbHVlID0gX2JbMF0sIGRlbGV0ZVRvZ2dsZSA9IF9iWzFdO1xuICAgICAgICAvLyBkaXNwbGF5L2hpZGUgdmFsaWRhdG9yIGxvYWRlclxuICAgICAgICB2YXIgbG9hZGVyID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGUuY29tbW9uVGV4dCgncGxlYXNlX3dhaXQnKSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGNhbGwgYXBpIGZvciB1bnB1Ymxpc2hpbmdcbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMi5pbmplY3QpKCd0b2FzdE1lc3NhZ2UnKTtcbiAgICAgICAgdmFyIGRlbGV0ZUZ1bmN0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGxvYWRlci50ZXh0ID0gKDAsIHZ1ZV8yLmNhcGl0YWxpemUpKHRyYW5zbGF0ZS5ldmVudCgnZGVsZXRpbmcnKSk7XG4gICAgICAgICAgICBkZWxldGVWYWx1ZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIGRlbGV0ZUVuZFBvaW50ID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KHN0b3JlLnN0YXRlLnNlbGVjdGVkQWN0aXZpdGllcyk7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZGVsZXRlKGRlbGV0ZUVuZFBvaW50KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnR5cGUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKCcvYWN0aXZpdGllcycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHN0b3JlOiBzdG9yZSwgZGVsZXRlVmFsdWU6IGRlbGV0ZVZhbHVlLCBkZWxldGVUb2dnbGU6IGRlbGV0ZVRvZ2dsZSwgbG9hZGVyOiBsb2FkZXIsIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLCBkZWxldGVGdW5jdGlvbjogZGVsZXRlRnVuY3Rpb24sIGNhcGl0YWxpemU6IHZ1ZV8yLmNhcGl0YWxpemUsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsIExvYWRlcjogUHJvZ3Jlc3NMb2FkZXJfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0xpbmtCdXR0b24nLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIHRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBsaW5rOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgaWNvbjoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJ2VkaXQnLFxuICAgICAgICB9LFxuICAgICAgICBkZXNpZ246IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICdpY29uVGV4dCcsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkZXNpZ24gPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGVzaWduO1xuICAgICAgICB2YXIgc3R5bGVUeXBlID0gZGVzaWduLnZhbHVlO1xuICAgICAgICB2YXIgY2xhc3NlcyA9ICcnO1xuICAgICAgICBzd2l0Y2ggKHN0eWxlVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnYmdUZXh0JzpcbiAgICAgICAgICAgICAgICBjbGFzc2VzID0gJ2ZsZXggaXRlbXMtY2VudGVyIGJnLW4tMTAgcC0xIHRleHQtdGlueSBmb250LWJvbGQgdXBwZXJjYXNlJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY2xhc3NlcyA9XG4gICAgICAgICAgICAgICAgICAgICdmbGV4IGl0ZW1zLWNlbnRlciBmb250LWJvbGQgbGVhZGluZy1ub3JtYWwgdXBwZXJjYXNlIHRleHQtdGlueSc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgY2xhc3NlczogY2xhc3NlcyB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG4vL2NvbXBvbmVudFxudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBQcm9ncmVzc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIikpO1xuLy8gVnVleCBTdG9yZVxudmFyIHNob3dfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL3Nob3dcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1B1Ymxpc2hCdXR0b24nLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHR5cGU6IHsgdHlwZTogU3RyaW5nLCBkZWZhdWx0OiAncHJpbWFyeScgfSxcbiAgICAgICAgbGlua2VkVG9JYXRpOiB7IHR5cGU6IEJvb2xlYW4sIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHN0YXR1czogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGNvcmVDb21wbGV0ZWQ6IHsgdHlwZTogQm9vbGVhbiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgYWN0aXZpdHlJZDogeyB0eXBlOiBOdW1iZXIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBfYiA9ICgwLCB2dWVfMi50b1JlZnMpKHByb3BzKSwgbGlua2VkVG9JYXRpID0gX2IubGlua2VkVG9JYXRpLCBzdGF0dXMgPSBfYi5zdGF0dXMsIGNvcmVDb21wbGV0ZWQgPSBfYi5jb3JlQ29tcGxldGVkLCBhY3Rpdml0eUlkID0gX2IuYWN0aXZpdHlJZDtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uVXBkYXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGxvYWRlci52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVJc0xvYWRpbmcnLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVJc0xvYWRpbmcnLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobG9hZGVyLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcHVibGlzaFZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHVibGlzaFZhbHVlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHVibGlzaFN0ZXAudmFsdWUgPT09IDEpIHtcbiAgICAgICAgICAgICAgICBwdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHB1Ymxpc2hTdGVwLnZhbHVlID09PSAzIHx8XG4gICAgICAgICAgICAgICAgcHVibGlzaFN0ZXAudmFsdWUgPT09IDIgfHxcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RlcC52YWx1ZSA9PT0gNCkge1xuICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hWYWx1ZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogIEdsb2JhbCBTdGF0ZVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIHNob3dfMS5kZXRhaWxTdG9yZSkoKTtcbiAgICAgICAgLy9hY3Rpdml0eSBpZFxuICAgICAgICB2YXIgaWQgPSBhY3Rpdml0eUlkLnZhbHVlO1xuICAgICAgICAvLyB0b2dnbGUgc3RhdGUgZm9yIG1vZGFsIHBvcHVwXG4gICAgICAgIHZhciBfYyA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBwdWJsaXNoVmFsdWUgPSBfY1swXSwgcHVibGlzaFRvZ2dsZSA9IF9jWzFdO1xuICAgICAgICAvLyBzdGF0ZSBmb3Igc3RlcCBvZiB0aGUgZmxvd1xuICAgICAgICB2YXIgcHVibGlzaFN0ZXAgPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgLy8gZGlzcGxheS9oaWRlIHZhbGlkYXRvciBsb2FkZXJcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgLy8gc3RhdGUgZm9yIGZpcnN0IHN0ZXBcbiAgICAgICAgLy8gZGV0ZXJtaW5lIGlmIGNvcmUgZWxlbWVudCBjb21wbGV0ZWQgb3Igbm90XG4gICAgICAgIC8vIHRydWUgZm9yIGNvbXBsZXRlZCBhbmQgZmFsc2UgZm9yIG5vdCBjb21wbGV0ZWRcbiAgICAgICAgdmFyIGNvcmVFbGVtZW50U3RhdHVzID0gY29yZUNvbXBsZXRlZC52YWx1ZTtcbiAgICAgICAgLy8gRHluYW1pYyB0ZXh0IGZvciBsb2FkZXJcbiAgICAgICAgdmFyIGxvYWRlclRleHQgPSAoMCwgdnVlXzIucmVmKSh0cmFuc2xhdGUuY29tbW9uVGV4dCgncGxlYXNlX3dhaXQnKSk7XG4gICAgICAgIC8vIHJlc2V0IHN0ZXAgdG8gemVybyBhZnRlciBjbG9zaW5nIG1vZGFsXG4gICAgICAgIHZhciByZXNldFB1Ymxpc2hTdGVwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcHVibGlzaFN0ZXAudmFsdWUgPSAwO1xuICAgICAgICAgICAgcHVibGlzaFZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICAgIC8vIGNvbXB1dGVkIGZ1bmN0aW9uIHRvIGNoYW5nZSBjb250ZW50IG9mIG1vZGFsXG4gICAgICAgIHZhciBwdWJsaXNoU3RhdGVDaGFuZ2UgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBwdWJsaXNoU3RhdGUgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJycsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgICAgICAgICAgIGljb246ICcnLFxuICAgICAgICAgICAgICAgIGFsZXJ0U3RhdGU6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciB0aXRsZSA9ICcnLCBkZXNjcmlwdGlvbiA9ICcnLCBpY29uID0gJ3RpY2snO1xuICAgICAgICAgICAgLy8gZGlmZmVyZW50IGNvbnRlbnQgZm9yIHN0ZXAgMSBiYXNlZCBvbiBjb3JlRWxlbWVudCBzdGF0dXNcbiAgICAgICAgICAgIGlmIChjb3JlRWxlbWVudFN0YXR1cykge1xuICAgICAgICAgICAgICAgIHRpdGxlID0gdHJhbnNsYXRlLmNvbW1vblRleHQoJ2NvcmVfZWxlbWVudHNfY29tcGxldGVkJyk7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSB0cmFuc2xhdGUuY29tbW9uVGV4dCgnY29uZ3JhdHVsYXRpb25zX2FsbF90aGVfY29yZV9lbGVtZW50c19hcmVfY29tcGxldGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRpdGxlID0gdHJhbnNsYXRlLmNvbW1vblRleHQoJ2NvcmVfZWxlbWVudHNfbm90X2NvbXBsZXRlJyk7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSB0cmFuc2xhdGUuY29tbW9uVGV4dCgndGhlcmVfaXNfbWlzc2luZ19kYXRhX2luX3NvbWVfb2ZfdGhlX2NvcmVfZWxlbWVudHMnKTtcbiAgICAgICAgICAgICAgICBpY29uID0gJ3dhcm5pbmctZmlsbCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvL2NyZWF0aW5nIGEgc2hvcnRlciB2YXJpYWJsZSBzbyB0aGF0IGJ1aWxkaW5nIGVycm9yIGRlc2NyaXB0aW9uIGZvciBjYXNlIDMgYW5kIDQgYmVjb21lcyBlYXNpZXJcbiAgICAgICAgICAgIHZhciBzID0gdHJhbnNsYXRlLmdldFN0aWNreU9iamVjdCgnY29tbW9uJyk7XG4gICAgICAgICAgICBzd2l0Y2ggKHB1Ymxpc2hTdGVwLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgLy8gZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLnRpdGxlID0gdGl0bGU7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuaWNvbiA9IGljb247XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5hbGVydFN0YXRlID0gY29yZUVsZW1lbnRTdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIC8vc2Vjb25kIHN0ZXBcbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS50aXRsZSA9IHRyYW5zbGF0ZS5zdGlja3lUZXh0KCdhY3Rpdml0eV93aWxsX2JlX3ZhbGlkYXRlZF9iZWZvcmVfcHVibGlzaGluZycpO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuZGVzY3JpcHRpb24gPSB0cmFuc2xhdGUuc3RpY2t5VGV4dCgndGhpc19hY3Rpdml0eV93aWxsX2JlX2ZpcnN0X3ZhbGlkYXRlZF9iZWZvcmVfcHVibGlzaGluZ190aGVfYWN0aXZpdHlfdG9fdGhlX2lhdGlfcmVnaXN0cnknKTtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmljb24gPSBcInNoaWVsZFwiO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuYWxlcnRTdGF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAvLyBjYXNlIDIgaXMgZm9yIHN1Y2Nlc3MgdmFsaWRhdGlvblxuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLnRpdGxlID0gdHJhbnNsYXRlLnN0aWNreVRleHQoJ2lhdGlfdmFsaWRhdGlvbicpO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuZGVzY3JpcHRpb24gPSB0cmFuc2xhdGUuc3RpY2t5VGV4dCgnY29uZ3JhdHVsYXRpb25zX25vX2Vycm9yc193ZXJlX2ZvdW5kJyk7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5pY29uID0gXCJ0aWNrXCI7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5hbGVydFN0YXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgLy9jYXNlIDMgaXMgZm9yIHZhbGlkYXRpb24gd2l0aCBjcml0aWNhbCBlcnJvcnNcbiAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS50aXRsZSA9IHRyYW5zbGF0ZS5zdGlja3lUZXh0KCdpYXRpX3ZhbGlkYXRpb25faXNzdWUnKTtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmRlc2NyaXB0aW9uID0gXCI8cD48Yj5cIi5jb25jYXQoZXJyLmNyaXRpY2FsTnVtYmVyLCBcIiBcIikuY29uY2F0KHMuY3JpdGljYWwsIFwiIFwiKS5jb25jYXQocy5lcnJvcnMsIFwiPC9iPiwgPGI+XCIpLmNvbmNhdChlcnIuZXJyb3JOdW1iZXIsIFwiIFwiKS5jb25jYXQocy5lcnJvcnMsIFwiPC9iPiBcIikuY29uY2F0KHMuYW5kLCBcIiA8Yj5cIikuY29uY2F0KGVyci53YXJuaW5nTnVtYmVyLCBcIiBcIikuY29uY2F0KHMud2FybmluZ3MsIFwiPC9iPiBcIikuY29uY2F0KHMud2FybmluZ3MsIFwiLiBcIikuY29uY2F0KHMuY3JpdGljYWwsIFwiPC9wPjxwPlwiKS5jb25jYXQocy5oYXNfYXRsZWFzdF9vbmVfY3JpdGljYWxfZXJyb3IsIFwiPC9wPjxwPlwiKS5jb25jYXQocy53ZV9oaWdobHlfcmVjb21tZW5kX3lvdV9maXhfdGhlc2VfaXNzdWVzLCBcIjwvcD5cIik7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5pY29uID0gXCJ3YXJuaW5nLWZpbGxcIjtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmFsZXJ0U3RhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgLy8gY2FzZSA0IGlzIGZvciB2YWxpZGF0aW9uIHdpdGhvdXQgY3JpdGljYWwgZXJyb3JzXG4gICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUudGl0bGUgPSB0cmFuc2xhdGUuc3RpY2t5VGV4dCgnaWF0aV92YWxpZGF0aW9uX2lzc3VlJyk7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5kZXNjcmlwdGlvbiA9IFwiPHA+PGI+XCIuY29uY2F0KGVyci5lcnJvck51bWJlciwgXCIgIFwiKS5jb25jYXQocy5lcnJvcnMsIFwiPC9iPiAgXCIpLmNvbmNhdChzLmFuZCwgXCIgPGI+XCIpLmNvbmNhdChlcnIud2FybmluZ051bWJlciwgXCIgIFwiKS5jb25jYXQocy53YXJuaW5ncywgXCI8L2I+ICBcIikuY29uY2F0KHMud2VyZV9mb3VuZCwgXCIuICBcIikuY29uY2F0KHMudmlld19pbmZvcm1hdGlvbl9hYm91dF90aGVzZSwgXCI8L3A+PHA+XCIpLmNvbmNhdChzLndlX2hpZ2hseV9yZWNvbW1lbmRfeW91X2ZpeF90aGVzZV9pc3N1ZXMsIFwiPC9wPlwiKTtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmljb24gPSBcIndhcm5pbmctZmlsbFwiO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuYWxlcnRTdGF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwdWJsaXNoU3RhdGU7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBmdW5jdGlvblxuICAgICAgICB2YXIgc3RlcFBsdXNPbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAocHVibGlzaFN0ZXAudmFsdWUgPj0gMCAmJiBwdWJsaXNoU3RlcC52YWx1ZSA8IDQpIHtcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RlcC52YWx1ZSsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgc3RlcE1pbnVzT25lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHB1Ymxpc2hTdGVwLnZhbHVlID4gMCAmJiBwdWJsaXNoU3RlcC52YWx1ZSA8PSA0KSB7XG4gICAgICAgICAgICAgICAgcHVibGlzaFN0ZXAudmFsdWUtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLy8gcmVhY3RpdmUgdmFyaWFibGUgZm9yIGVycm9ycyBudW1iZXJcbiAgICAgICAgdmFyIGVyciA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgY3JpdGljYWxOdW1iZXI6IDAsXG4gICAgICAgICAgICBlcnJvck51bWJlcjogMCxcbiAgICAgICAgICAgIHdhcm5pbmdOdW1iZXI6IDAsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBjYWxsIGFwaSBmb3IgdmFsaWRhdGlvblxuICAgICAgICB2YXIgdmFsaWRhdG9yRnVuY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICghcHVibGlzaFZhbHVlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvYWRlclRleHQudmFsdWUgPSBcIlwiLmNvbmNhdCh0cmFuc2xhdGUuY29tbW9uVGV4dCgndmFsaWRhdGluZycpLCBcIiBcIikuY29uY2F0KHRyYW5zbGF0ZS5jb21tb25UZXh0KCdhY3Rpdml0eScpKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5wb3N0KFwiL2FjdGl2aXR5L1wiLmNvbmNhdChpZCwgXCIvdmFsaWRhdGVBY3Rpdml0eVwiKSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9IHJlc3BvbnNlLmVycm9ycztcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlUHVibGlzaEVycm9ycycsIGVycm9ycyk7XG4gICAgICAgICAgICAgICAgICAgIC8vaWRlbnRpZnkgZXJyb3IgdHlwZXNcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNyaXQgPSByZXNwb25zZS5zdW1tYXJ5LmNyaXRpY2FsO1xuICAgICAgICAgICAgICAgICAgICAoZXJyLmNyaXRpY2FsTnVtYmVyID0gY3JpdCksXG4gICAgICAgICAgICAgICAgICAgICAgICAoZXJyLmVycm9yTnVtYmVyID0gcmVzcG9uc2Uuc3VtbWFyeS5lcnJvciksXG4gICAgICAgICAgICAgICAgICAgICAgICAoZXJyLndhcm5pbmdOdW1iZXIgPSByZXNwb25zZS5zdW1tYXJ5Lndhcm5pbmcpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3JpdCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGVwLnZhbHVlID0gMztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGVwLnZhbHVlID0gNDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0ZXAudmFsdWUgPSAyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSwgMjAwMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gY2FsbCBhcGkgZm9yIHB1Ymxpc2hpbmdcbiAgICAgICAgdmFyIGVycm9yRGF0YSA9ICgwLCB2dWVfMi5pbmplY3QpKCdlcnJvckRhdGEnKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGNoZWNrIHB1Ymxpc2ggc3RhdHVzXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgY2hlY2tQdWJsaXNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChcIi9hY3Rpdml0aWVzL2NoZWNrcy1mb3ItYWN0aXZpdHktcHVibGlzaFwiKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoVmFsdWUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLm1lc3NhZ2UgPSByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEudHlwZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHB1Ymxpc2hGdW5jdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHB1Ymxpc2hWYWx1ZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgICAgICBsb2FkZXJUZXh0LnZhbHVlID0gXCJcIi5jb25jYXQodHJhbnNsYXRlLmNvbW1vblRleHQoJ3B1Ymxpc2hpbmcnKSwgXCIgXCIpLmNvbmNhdCh0cmFuc2xhdGUuY29tbW9uVGV4dCgnYWN0aXZpdHknKSk7XG4gICAgICAgICAgICByZXNldFB1Ymxpc2hTdGVwKCk7XG4gICAgICAgICAgICBwdWJsaXNoU3RlcC52YWx1ZSA9IDA7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQucG9zdChcIi9hY3Rpdml0eS9cIi5jb25jYXQoaWQsIFwiL3B1Ymxpc2hcIikpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVVblB1Ymxpc2hlZCcsIHJlc3BvbnNlLnN1Y2Nlc3MpO1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTaG93UHVibGlzaGVkJywgIXJlc3BvbnNlLnN1Y2Nlc3MpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAvLyBwdWJsaXNoLXJlcHVibGlzaFxuICAgICAgICB2YXIgcHVibGlzaFN0YXR1cyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgbGlua2VkX3RvX2lhdGk6IGxpbmtlZFRvSWF0aS52YWx1ZSxcbiAgICAgICAgICAgIHN0YXR1czogc3RhdHVzLnZhbHVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGJ0blRleHQgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChwdWJsaXNoU3RhdHVzLmxpbmtlZF90b19pYXRpICYmIHB1Ymxpc2hTdGF0dXMuc3RhdHVzID09PSAnZHJhZnQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZS5idXR0b24oJ3JlcHVibGlzaCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIXB1Ymxpc2hTdGF0dXMubGlua2VkX3RvX2lhdGkgJiZcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdHVzLnN0YXR1cyA9PT0gJ2RyYWZ0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdGUuYnV0dG9uKCdwdWJsaXNoJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgcHJvcHM6IHByb3BzLCBsaW5rZWRUb0lhdGk6IGxpbmtlZFRvSWF0aSwgc3RhdHVzOiBzdGF0dXMsIGNvcmVDb21wbGV0ZWQ6IGNvcmVDb21wbGV0ZWQsIGFjdGl2aXR5SWQ6IGFjdGl2aXR5SWQsIHN0b3JlOiBzdG9yZSwgaWQ6IGlkLCBwdWJsaXNoVmFsdWU6IHB1Ymxpc2hWYWx1ZSwgcHVibGlzaFRvZ2dsZTogcHVibGlzaFRvZ2dsZSwgcHVibGlzaFN0ZXA6IHB1Ymxpc2hTdGVwLCBsb2FkZXI6IGxvYWRlciwgY29yZUVsZW1lbnRTdGF0dXM6IGNvcmVFbGVtZW50U3RhdHVzLCBsb2FkZXJUZXh0OiBsb2FkZXJUZXh0LCByZXNldFB1Ymxpc2hTdGVwOiByZXNldFB1Ymxpc2hTdGVwLCBwdWJsaXNoU3RhdGVDaGFuZ2U6IHB1Ymxpc2hTdGF0ZUNoYW5nZSwgc3RlcFBsdXNPbmU6IHN0ZXBQbHVzT25lLCBzdGVwTWludXNPbmU6IHN0ZXBNaW51c09uZSwgZXJyOiBlcnIsIHZhbGlkYXRvckZ1bmN0aW9uOiB2YWxpZGF0b3JGdW5jdGlvbiwgZXJyb3JEYXRhOiBlcnJvckRhdGEsIGNoZWNrUHVibGlzaDogY2hlY2tQdWJsaXNoLCBwdWJsaXNoRnVuY3Rpb246IHB1Ymxpc2hGdW5jdGlvbiwgcHVibGlzaFN0YXR1czogcHVibGlzaFN0YXR1cywgYnRuVGV4dDogYnRuVGV4dCwgQnRuQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnRfdnVlXzEuZGVmYXVsdCwgTW9kYWw6IFBvcHVwTW9kYWxfdnVlXzEuZGVmYXVsdCwgTG9hZGVyOiBQcm9ncmVzc0xvYWRlcl92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG4vL2NvbXBvbmVudFxudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBQcm9ncmVzc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIikpO1xuLy8gVnVleCBTdG9yZVxudmFyIHNob3dfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL3Nob3dcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1VuUHVibGlzaEJ1dHRvbicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgdHlwZTogeyB0eXBlOiBTdHJpbmcsIGRlZmF1bHQ6ICdwcmltYXJ5JyB9LFxuICAgICAgICBhY3Rpdml0eUlkOiB7IHR5cGU6IE51bWJlciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGFjdGl2aXR5SWQgPSAoMCwgdnVlXzIudG9SZWZzKShwcm9wcykuYWN0aXZpdHlJZDtcbiAgICAgICAgLy8gdG9nZ2xlIHN0YXRlIGZvciBtb2RhbCBwb3B1cFxuICAgICAgICB2YXIgX2IgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgdW5wdWJsaXNoVmFsdWUgPSBfYlswXSwgdW5wdWJsaXNoVG9nZ2xlID0gX2JbMV07XG4gICAgICAgIC8vR2xvYmFsIFN0YXRlXG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBzaG93XzEuZGV0YWlsU3RvcmUpKCk7XG4gICAgICAgIC8vYWN0aXZpdHkgaWRcbiAgICAgICAgdmFyIGlkID0gYWN0aXZpdHlJZC52YWx1ZTtcbiAgICAgICAgLy8gZGlzcGxheS9oaWRlIHZhbGlkYXRvciBsb2FkZXJcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgICAgICAgdGV4dDogdHJhbnNsYXRlLmNvbW1vblRleHQoJ3BsZWFzZV93YWl0JyksXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBjYWxsIGFwaSBmb3IgdW5wdWJsaXNoaW5nXG4gICAgICAgICgwLCB2dWVfMi5vblVwZGF0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChsb2FkZXIudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlSXNMb2FkaW5nJywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlSXNMb2FkaW5nJywgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHVucHVibGlzaFZhbHVlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobG9hZGVyLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdW5wdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzIuaW5qZWN0KSgndG9hc3RNZXNzYWdlJyk7XG4gICAgICAgIHZhciB1blB1Ymxpc2hGdW5jdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHVucHVibGlzaFZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICAgIGxvYWRlci50ZXh0ID0gdHJhbnNsYXRlLmV2ZW50KCd1bnB1Ymxpc2hpbmcnKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5wb3N0KFwiL2FjdGl2aXR5L1wiLmNvbmNhdChpZCwgXCIvdW5wdWJsaXNoXCIpKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnR5cGUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIHVucHVibGlzaFZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlVW5QdWJsaXNoZWQnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU2hvd1B1Ymxpc2hlZCcsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVB1Ymxpc2hFcnJvcnMnLCBbXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHByb3BzOiBwcm9wcywgYWN0aXZpdHlJZDogYWN0aXZpdHlJZCwgdW5wdWJsaXNoVmFsdWU6IHVucHVibGlzaFZhbHVlLCB1bnB1Ymxpc2hUb2dnbGU6IHVucHVibGlzaFRvZ2dsZSwgc3RvcmU6IHN0b3JlLCBpZDogaWQsIGxvYWRlcjogbG9hZGVyLCB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSwgdW5QdWJsaXNoRnVuY3Rpb246IHVuUHVibGlzaEZ1bmN0aW9uLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbi8vY29tcG9uZW50XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbi8vIHByb3BzXG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRGVsZXRlQWN0aW9uJyxcbiAgICBwcm9wczoge1xuICAgICAgICBpdGVtSWQ6IHsgdHlwZTogW051bWJlciwgU3RyaW5nXSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgaXRlbVR5cGU6IHsgdHlwZTogU3RyaW5nLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICAvLyB0b2dnbGUgc3RhdGUgZm9yIG1vZGFsIHBvcHVwXG4gICAgICAgIHZhciBfYiA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBkZWxldGVWYWx1ZSA9IF9iWzBdLCBkZWxldGVUb2dnbGUgPSBfYlsxXTtcbiAgICAgICAgdmFyIGRlbGV0ZUZ1bmN0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHByb3BzLml0ZW1UeXBlID09PSAncmVzdWx0JyB8fCBwcm9wcy5pdGVtVHlwZSA9PT0gJ3RyYW5zYWN0aW9uJykge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5kZWxldGUoXCJcIi5jb25jYXQocHJvcHMuaXRlbVR5cGUsIFwiL1wiKS5jb25jYXQocHJvcHMuaXRlbUlkKSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZVZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByb3BzLml0ZW1UeXBlID09PSAnaW5kaWNhdG9yJykge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5kZWxldGUoXCJcIi5jb25jYXQocHJvcHMuaXRlbVR5cGUsIFwiL1wiKS5jb25jYXQocHJvcHMuaXRlbUlkKSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZVZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByb3BzLml0ZW1UeXBlID09PSAncGVyaW9kJykge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5kZWxldGUoXCJcIi5jb25jYXQocHJvcHMuaXRlbVR5cGUsIFwiL1wiKS5jb25jYXQocHJvcHMuaXRlbUlkKSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZVZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBwcm9wczogcHJvcHMsIHRyYW5zbGF0ZTogdHJhbnNsYXRlLCBkZWxldGVWYWx1ZTogZGVsZXRlVmFsdWUsIGRlbGV0ZVRvZ2dsZTogZGVsZXRlVG9nZ2xlLCBkZWxldGVGdW5jdGlvbjogZGVsZXRlRnVuY3Rpb24sIGNhcGl0YWxpemU6IHZ1ZV8yLmNhcGl0YWxpemUsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdFcnJvckxpc3RzJyxcbiAgICBwcm9wczoge1xuICAgICAgICBlcnJvcnM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICB0eXBlOiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJ2Vycm9yJyB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICAvL3Byb3BzXG4gICAgICAgIC8vcHJvcHMgZGVzdHJ1Y3R1cmluZ1xuICAgICAgICB2YXIgX2IgPSAoMCwgdnVlXzIudG9SZWZzKShwcm9wcyksIHR5cGUgPSBfYi50eXBlLCBlcnJvcnMgPSBfYi5lcnJvcnM7XG4gICAgICAgIHZhciBlcnJvclR5cGUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIC8vIGNvbG9ycyBiYXNlZCBvbiB0eXBlIHByb3BzIHZhbHVlXG4gICAgICAgIHZhciBiZ0NvbG9yID0gJycsIGljb25Db2xvciA9ICcnO1xuICAgICAgICBzd2l0Y2ggKHR5cGUudmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2NyaXRpY2FsJzpcbiAgICAgICAgICAgICAgICBiZ0NvbG9yID0gJ2JnLWxhdmVuZGVyLTYwIGJvcmRlci1sYXZlbmRlci01MCc7XG4gICAgICAgICAgICAgICAgaWNvbkNvbG9yID0gJ3RleHQtbGF2ZW5kZXItNTAnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnd2FybmluZ3MnOlxuICAgICAgICAgICAgICAgIGJnQ29sb3IgPSAnYmctZWdnc2hlbGwgYm9yZGVyLWNhbWVsLTUwJztcbiAgICAgICAgICAgICAgICBpY29uQ29sb3IgPSAndGV4dC1jYW1lbC01MCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJnQ29sb3IgPSAnYmctcm9zZSBib3JkZXItY3JpbXNvbi00MCc7XG4gICAgICAgICAgICAgICAgaWNvbkNvbG9yID0gJ3RleHQtY3JpbXNvbi00MCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvZ2dsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGFjY29yZGlvblRvZ2dsZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmVycm9yc19fbGlzdCcpO1xuICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gKF9hID0gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJ3VsJykpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbGllbnRIZWlnaHQ7XG4gICAgICAgICAgICBpZiAodG9nZ2xlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgICAgICB0b2dnbGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBhdXRvO1wiO1xuICAgICAgICAgICAgICAgICAgICB9LCA2MDApO1xuICAgICAgICAgICAgICAgICAgICB0b2dnbGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHVwZGF0ZUVycm9yQ291bnRNZXNzYWdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRyYW5zbGF0ZWRUeXBlID0gdHJhbnNsYXRlLnN0aWNreVRleHQodHlwZSA9PT0gbnVsbCB8fCB0eXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0eXBlLnZhbHVlLCAnY29tbW9uJyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygndHlwZT8udmFsdWUnLCB0eXBlID09PSBudWxsIHx8IHR5cGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHR5cGUudmFsdWUpO1xuICAgICAgICAgICAgZXJyb3JUeXBlLnZhbHVlID0gZXJyb3JzLnZhbHVlLmxlbmd0aCArICcgJyArICgwLCB2dWVfMi5jYXBpdGFsaXplKSh0cmFuc2xhdGVkVHlwZSk7XG4gICAgICAgIH07XG4gICAgICAgIHVwZGF0ZUVycm9yQ291bnRNZXNzYWdlKCk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gZXJyb3JzLnZhbHVlOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB1cGRhdGVFcnJvckNvdW50TWVzc2FnZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHByb3BzOiBwcm9wcywgdHlwZTogdHlwZSwgZXJyb3JzOiBlcnJvcnMsIGVycm9yVHlwZTogZXJyb3JUeXBlLCBiZ0NvbG9yOiBiZ0NvbG9yLCBpY29uQ29sb3I6IGljb25Db2xvciwgdG9nZ2xlOiB0b2dnbGUsIGFjY29yZGlvblRvZ2dsZTogYWNjb3JkaW9uVG9nZ2xlLCB1cGRhdGVFcnJvckNvdW50TWVzc2FnZTogdXBkYXRlRXJyb3JDb3VudE1lc3NhZ2UgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuLy8gY29tcG9uZW50c1xudmFyIExpbmtfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0hhdmVOb3RBZGRlZFlldCcsXG4gICAgY29tcG9uZW50czogeyBCdG46IExpbmtfdnVlXzEuZGVmYXVsdCB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGxpbms6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGJ0blRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG4vL2NvbXBvbmVudFxudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBQcm9ncmVzc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbi8vIHB1Ymxpc2gtcmVwdWJsaXNoXG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbicsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICAvLyB0b2dnbGUgc3RhdGUgZm9yIG1vZGFsIHBvcHVwXG4gICAgICAgIHZhciBfYiA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBwdWJsaXNoVmFsdWUgPSBfYlswXSwgcHVibGlzaFRvZ2dsZSA9IF9iWzFdO1xuICAgICAgICB2YXIgX2MgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgdW5wdWJsaXNoVmFsdWUgPSBfY1swXSwgdW5wdWJsaXNoVG9nZ2xlID0gX2NbMV07XG4gICAgICAgIC8vIGRpc3BsYXkvaGlkZSB2YWxpZGF0b3IgbG9hZGVyXG4gICAgICAgIHZhciBsb2FkZXIgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIC8vIHN0YXRlIGZvciBmaXJzdCBzdGVwXG4gICAgICAgIC8vIGRldGVybWluZSBpZiBjb3JlIGVsZW1lbnQgY29tcGxldGVkIG9yIG5vdFxuICAgICAgICAvLyB0cnVlIGZvciBjb21wbGV0ZWQgYW5kIGZhbHNlIGZvciBub3QgY29tcGxldGVkXG4gICAgICAgIHZhciBtYW5kYXRvcnlFbGVtZW50U3RhdHVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ21hbmRhdG9yeUNvbXBsZXRlZCcpO1xuICAgICAgICAvLyBEeW5hbWljIHRleHQgZm9yIGxvYWRlclxuICAgICAgICB2YXIgbG9hZGVyVGV4dCA9ICgwLCB2dWVfMi5yZWYpKHRyYW5zbGF0ZS5jb21tb25UZXh0KCdwbGVhc2Vfd2FpdCcpKTtcbiAgICAgICAgLy8gY29tcHV0ZWQgZnVuY3Rpb24gdG8gY2hhbmdlIGNvbnRlbnQgb2YgbW9kYWxcbiAgICAgICAgdmFyIHB1Ymxpc2hTdGF0ZUNoYW5nZSA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHB1Ymxpc2hTdGF0ZSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgICAgICAgaWNvbjogJycsXG4gICAgICAgICAgICAgICAgYWxlcnRTdGF0ZTogbWFuZGF0b3J5RWxlbWVudFN0YXR1cyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gZGlmZmVyZW50IGNvbnRlbnQgZm9yIHN0ZXAgMSBiYXNlZCBvbiBjb3JlRWxlbWVudCBzdGF0dXNcbiAgICAgICAgICAgIGlmIChtYW5kYXRvcnlFbGVtZW50U3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLnRpdGxlID0gdHJhbnNsYXRlLmNvbW1vblRleHQoJ2NvcmVfZWxlbWVudHNfY29tcGxldGVkJyk7XG4gICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmRlc2NyaXB0aW9uID0gdHJhbnNsYXRlLmNvbW1vblRleHQoJ2NvbmdyYXR1bGF0aW9uc19hbGxfdGhlX2NvcmVfZWxlbWVudHNfYXJlX2NvbXBsZXRlJyk7XG4gICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmljb24gPSAndGljayc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUudGl0bGUgPSB0cmFuc2xhdGUuY29tbW9uVGV4dCgnY29yZV9lbGVtZW50c19jb21wbGV0ZWQnKTtcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuZGVzY3JpcHRpb24gPSB0cmFuc2xhdGUuY29tbW9uVGV4dCgndGhlcmVfaXNfbWlzc2luZ19kYXRhX2luX3NvbWVfb2ZfdGhlX2NvcmVfZWxlbWVudHMnKTtcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuaWNvbiA9ICd3YXJuaW5nLWZpbGwnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHB1Ymxpc2hTdGF0ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGNhbGwgYXBpIGZvciBwdWJsaXNoaW5nXG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzIuaW5qZWN0KSgndG9hc3REYXRhJyk7XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzIuaW5qZWN0KSgnZXJyb3JEYXRhJyk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBjaGVjayBwdWJsaXNoIHN0YXR1c1xuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGNoZWNrUHVibGlzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvb3JnYW5pc2F0aW9uL2NoZWNrcy1mb3Itb3JnYW5pc2F0aW9uLXB1Ymxpc2hcIikudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFZhbHVlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLnR5cGUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwdWJsaXNoRnVuY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdwdWJsaXNoaW5nJyk7XG4gICAgICAgICAgICBwdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5wb3N0KFwiL29yZ2FuaXNhdGlvbi9wdWJsaXNoXCIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdHVzLmlzX3B1Ymxpc2hlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0dXMuc3RhdHVzID0gdHJhbnNsYXRlLmV2ZW50KCdwdWJsaXNoZWQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHVuUHVibGlzaEZ1bmN0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdW5wdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBsb2FkZXJUZXh0LnZhbHVlID0gKDAsIHZ1ZV8yLmNhcGl0YWxpemUpKHRyYW5zbGF0ZS5ldmVudCgndW5wdWJsaXNoaW5nJykpO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LnBvc3QoXCIvb3JnYW5pc2F0aW9uL3VucHVibGlzaFwiKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSwgMjAwMCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXR1cy5pc19wdWJsaXNoZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHB1Ymxpc2hTdGF0dXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgncHVibGlzaFN0YXR1cycpO1xuICAgICAgICB2YXIgYnRuVGV4dCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHB1Ymxpc2hTdGF0dXMuaXNfcHVibGlzaGVkICYmIHB1Ymxpc2hTdGF0dXMuc3RhdHVzID09PSAnZHJhZnQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZS5idXR0b24oJ3JlcHVibGlzaCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZS5idXR0b24oJ3B1Ymxpc2gnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCBwdWJsaXNoVmFsdWU6IHB1Ymxpc2hWYWx1ZSwgcHVibGlzaFRvZ2dsZTogcHVibGlzaFRvZ2dsZSwgdW5wdWJsaXNoVmFsdWU6IHVucHVibGlzaFZhbHVlLCB1bnB1Ymxpc2hUb2dnbGU6IHVucHVibGlzaFRvZ2dsZSwgbG9hZGVyOiBsb2FkZXIsIG1hbmRhdG9yeUVsZW1lbnRTdGF0dXM6IG1hbmRhdG9yeUVsZW1lbnRTdGF0dXMsIGxvYWRlclRleHQ6IGxvYWRlclRleHQsIHB1Ymxpc2hTdGF0ZUNoYW5nZTogcHVibGlzaFN0YXRlQ2hhbmdlLCB0b2FzdERhdGE6IHRvYXN0RGF0YSwgZXJyb3JEYXRhOiBlcnJvckRhdGEsIGNoZWNrUHVibGlzaDogY2hlY2tQdWJsaXNoLCBwdWJsaXNoRnVuY3Rpb246IHB1Ymxpc2hGdW5jdGlvbiwgdW5QdWJsaXNoRnVuY3Rpb246IHVuUHVibGlzaEZ1bmN0aW9uLCBwdWJsaXNoU3RhdHVzOiBwdWJsaXNoU3RhdHVzLCBidG5UZXh0OiBidG5UZXh0LCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuLy8gY29tcG9uZW50c1xudmFyIEJyZWFkQ3J1bWJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnJlYWRDcnVtYi52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdQYWdlVGl0bGUnLFxuICAgIGNvbXBvbmVudHM6IHsgQnJlYWRjcnVtYjogQnJlYWRDcnVtYl92dWVfMS5kZWZhdWx0IH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYnJlYWRjcnVtYkRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0aXRsZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGJhY2tMaW5rOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgY29uc29sZS5sb2cocHJvcHMudGl0bGUsICd0aXRsZScpO1xuICAgICAgICByZXR1cm4ge307XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUHJvZ3Jlc3NMb2FkZXInLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjaGFuZ2VUZXh0OiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdvdmVyZmxvdy15LWhpZGRlbicpO1xuICAgICAgICAgICAgdmFyIHN1cHBvcnRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbGF1bmNoZXInKTtcbiAgICAgICAgICAgIGlmIChzdXBwb3J0QnV0dG9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ292ZXJmbG93LXktaGlkZGVuJyk7XG4gICAgICAgICAgICB2YXIgc3VwcG9ydEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNsYXVuY2hlcicpO1xuICAgICAgICAgICAgaWYgKHN1cHBvcnRCdXR0b24gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBzdXBwb3J0QnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xuLy8gY29tcG9uZW50c1xudmFyIEVycm9yTGlzdHNfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvRXJyb3JMaXN0cy52dWVcIikpO1xudmFyIFVwbG9hZGVkRXJyb3JzX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1VwbG9hZGVkRXJyb3JzLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdTdGlja3lFcnJvcnMnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGVycm9yRGF0YTogeyB0eXBlOiBBcnJheSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgLy8gdG9nZ2xlIGlzc3Vlc1xuICAgICAgICB2YXIgX2IgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgZXJyb3JWYWx1ZSA9IF9iWzBdLCBlcnJvclRvZ2dsZSA9IF9iWzFdO1xuICAgICAgICB2YXIgaW1wb3J0RXJyb3JzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2ltcG9ydEFjdGl2aXR5RXJyb3InKTtcbiAgICAgICAgdmFyIGFjdGl2aXR5SWQgPSAoMCwgdnVlXzIuaW5qZWN0KSgnYWN0aXZpdHlJZCcpO1xuICAgICAgICB2YXIgaXNzdWVUeXBlID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGxpc3Qgb2YgZXJyb3JzXG4gICAgICAgICAqKi9cbiAgICAgICAgdmFyIGVycm9yRGF0YSA9ICgwLCB2dWVfMi50b1JlZnMpKHByb3BzKS5lcnJvckRhdGE7XG4gICAgICAgIHZhciBpbXBvcnRFcnJvclR5cGVzID0gWydlcnJvcicsICd3YXJuaW5nJ107XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChlcnJvckRhdGEudmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaXNzdWVUeXBlLnZhbHVlID0gJ3ZhbGlkYXRvcic7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXNzdWVUeXBlLnZhbHVlID0gJ3VwbG9hZCc7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdGVtcERhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGVycm9yczogW10sXG4gICAgICAgICAgICBjcml0aWNhbDogW10sXG4gICAgICAgICAgICB3YXJuaW5nczogW10sXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdXBkYXRlVGVtcE1lc3NhZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZXJyb3JEYXRhUHJvcHMgPSBlcnJvckRhdGEudmFsdWU7XG4gICAgICAgICAgICBmb3IgKHZhciBkYXRhIGluIHRlbXBEYXRhKSB7XG4gICAgICAgICAgICAgICAgdGVtcERhdGFbZGF0YV0gPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMCwgZXJyb3JEYXRhUHJvcHNfMSA9IGVycm9yRGF0YVByb3BzOyBfaSA8IGVycm9yRGF0YVByb3BzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBlcnJvckRhdGFQcm9wc18xW19pXTtcbiAgICAgICAgICAgICAgICB2YXIgc2V2ZXJpdHkgPSBkYXRhLnNldmVyaXR5O1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoc2V2ZXJpdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnY3JpdGljYWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcERhdGEuY3JpdGljYWwucHVzaChkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wRGF0YS5lcnJvcnMucHVzaChkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICd3YXJuaW5nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBEYXRhLndhcm5pbmdzLnB1c2goZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHVwZGF0ZVRlbXBNZXNzYWdlKCk7XG4gICAgICAgIHZhciBpbXBvcnRFcnJvcmxlbmd0aCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgIGZvciAodmFyIHR5cGUgaW4gaW1wb3J0RXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaW5kZXggaW4gaW1wb3J0RXJyb3JzW3R5cGVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IE9iamVjdC5rZXlzKGltcG9ydEVycm9yc1t0eXBlXVtpbmRleF0pLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGVycm9yRGF0YS52YWx1ZTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdXBkYXRlVGVtcE1lc3NhZ2UoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBkZWxldGVFcnJvcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZGVsZXRlKFwiL2ltcG9ydC9lcnJvcnMvXCIuY29uY2F0KGFjdGl2aXR5SWQpKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdyZW1vdmVkJywgJ3RydWUnKTtcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCBwcm9wczogcHJvcHMsIGVycm9yVmFsdWU6IGVycm9yVmFsdWUsIGVycm9yVG9nZ2xlOiBlcnJvclRvZ2dsZSwgaW1wb3J0RXJyb3JzOiBpbXBvcnRFcnJvcnMsIGFjdGl2aXR5SWQ6IGFjdGl2aXR5SWQsIGlzc3VlVHlwZTogaXNzdWVUeXBlLCBlcnJvckRhdGE6IGVycm9yRGF0YSwgaW1wb3J0RXJyb3JUeXBlczogaW1wb3J0RXJyb3JUeXBlcywgdGVtcERhdGE6IHRlbXBEYXRhLCB1cGRhdGVUZW1wTWVzc2FnZTogdXBkYXRlVGVtcE1lc3NhZ2UsIGltcG9ydEVycm9ybGVuZ3RoOiBpbXBvcnRFcnJvcmxlbmd0aCwgZGVsZXRlRXJyb3JzOiBkZWxldGVFcnJvcnMsIEVycm9yTGlzdHM6IEVycm9yTGlzdHNfdnVlXzEuZGVmYXVsdCwgVXBsb2FkZWRFcnJvcnM6IFVwbG9hZGVkRXJyb3JzX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdVcGxvYWRlZEVycm9ycycsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgaXRlbToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGluZGV4OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBhY3RpdmUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2dnbGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBlcnJvckxlbmd0aCA9IGZ1bmN0aW9uIChjdXJyZW50RXJyb3IpIHtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICBpZiAocHJvcHMuaW5kZXggPT09IGN1cnJlbnRFcnJvcikge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIHR5cGUgaW4gcHJvcHMuaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICBjb3VudCArPSBPYmplY3Qua2V5cyhwcm9wcy5pdGVtW3R5cGVdKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgYWNjb3JkaW9uVG9nZ2xlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGFjdGl2ZS52YWx1ZSA9ICFhY3RpdmUudmFsdWU7XG4gICAgICAgICAgICB2YXIgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmNvbnRhaW5lcicpO1xuICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gKF9hID0gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJy5lcnJvci1jb250YWluZXInKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIGlmICh0b2dnbGUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgICAgIHRvZ2dsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IGF1dG87XCI7XG4gICAgICAgICAgICAgICAgICAgIH0sIDYwMCk7XG4gICAgICAgICAgICAgICAgICAgIHRvZ2dsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBhY3RpdmU6IGFjdGl2ZSwgcHJvcHM6IHByb3BzLCB0b2dnbGU6IHRvZ2dsZSwgZXJyb3JMZW5ndGg6IGVycm9yTGVuZ3RoLCBhY2NvcmRpb25Ub2dnbGU6IGFjY29yZGlvblRvZ2dsZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdFbGVtZW50U3RhdHVzJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7IHR5cGU6IEJvb2xlYW4sIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8yLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBjb2xvciA9IGRhdGEudmFsdWUgPyAndGV4dC1zcHJpbmctNTAnIDogJ3RleHQtY3JpbXNvbi01MCcsIHRleHQgPSBkYXRhLnZhbHVlXG4gICAgICAgICAgICA/IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdjb21wbGV0ZWQnKVxuICAgICAgICAgICAgOiB0cmFuc2xhdGUuY29tbW9uVGV4dCgnbm90X2NvbXBsZXRlZCcpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgcHJvcHM6IHByb3BzLCBkYXRhOiBkYXRhLCBjb2xvcjogY29sb3IsIHRleHQ6IHRleHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1ByZXZpb3VzbHlQdWJsaXNoZWQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIGRlZmF1bHQ6IHdpbmRvd1snZ2xvYmFsTGFuZyddLmNvbW1vbi5wcmV2aW91c2x5X3B1Ymxpc2hlZF9vbl9pYXRpLFxuICAgICAgICB9LFxuICAgICAgICBpY29uOiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJ2FwcHJvdmVkLWNsb3VkJyB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHt9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBtdWx0aXNlbGVjdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJAdnVlZm9ybS9tdWx0aXNlbGVjdFwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0FjdGl2aXR5RGVmYXVsdFZhbHVlJyxcbiAgICBwcm9wczoge1xuICAgICAgICBjdXJyZW5jaWVzOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGxhbmd1YWdlczoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBhY3Rpdml0eUlkOiB7IHR5cGU6IE51bWJlciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgYnVkZ2V0Tm90UHJvdmlkZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaHVtYW5pdGFyaWFuOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQcm9wc1xuICAgICAgICAgKi9cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJlYWN0aXZlIHZhcmlhYmxlc1xuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGRlZmF1bHRWYWx1ZXMgPSAoMCwgdnVlXzIucmVmKSh7XG4gICAgICAgICAgICBidWRnZXRfbm90X3Byb3ZpZGVkOiAnJyxcbiAgICAgICAgICAgIGRlZmF1bHRfY3VycmVuY3k6ICcnLFxuICAgICAgICAgICAgZGVmYXVsdF9sYW5ndWFnZTogJycsXG4gICAgICAgICAgICBoaWVyYXJjaHk6ICcnLFxuICAgICAgICAgICAgaHVtYW5pdGFyaWFuOiAnJyxcbiAgICAgICAgfSksIGRlZmF1bHRFcnJvcnMgPSAoMCwgdnVlXzIucmVmKSh7XG4gICAgICAgICAgICBidWRnZXRfbm90X3Byb3ZpZGVkOiBbXSxcbiAgICAgICAgICAgIGRlZmF1bHRfY3VycmVuY3k6IFtdLFxuICAgICAgICAgICAgZGVmYXVsdF9sYW5ndWFnZTogW10sXG4gICAgICAgICAgICBoaWVyYXJjaHk6IFtdLFxuICAgICAgICAgICAgaHVtYW5pdGFyaWFuOiBbXSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlcnJvclJlc2V0ID0gZGVmYXVsdEVycm9ycy52YWx1ZTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE9uIE1vdW50ZWRcbiAgICAgICAgICovXG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBkYXRhLCBkZWZhdWx0RGF0YTtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NfMS5kZWZhdWx0LmdldChcIi9hY3Rpdml0eS9cIi5jb25jYXQocHJvcHMuYWN0aXZpdHlJZCwgXCIvZGVmYXVsdF92YWx1ZXMvZGF0YVwiKSldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gKF9hLnNlbnQoKSkuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHREYXRhID0gZGF0YS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlZmF1bHREYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlcy52YWx1ZSA9IGRlZmF1bHREYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZWZcbiAgICAgICAgICovXG4gICAgICAgIHZhciBsb2FkZXJWaXNpYmlsaXR5ID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpLCB0b2FzdFZpc2liaWxpdHkgPSAoMCwgdnVlXzIucmVmKShmYWxzZSksIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMi5yZWYpKCcnKSwgdG9hc3RUeXBlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICAvKipcbiAgICAgICAgICogU3VibWl0IGZvcm1cbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHN1Ym1pdEZvcm0oKSB7XG4gICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGRlZmF1bHRFcnJvcnMudmFsdWUgPSBlcnJvclJlc2V0O1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnB1dChcIi9hY3Rpdml0eS9cIi5jb25jYXQocHJvcHMuYWN0aXZpdHlJZCwgXCIvZGVmYXVsdF92YWx1ZXNcIiksIGRlZmF1bHRWYWx1ZXMudmFsdWUpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKTsgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gcmVzcG9uc2UgPT09IG51bGwgfHwgcmVzcG9uc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3RUeXBlLnZhbHVlID0gcmVzcG9uc2UgPT09IG51bGwgfHwgcmVzcG9uc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3BvbnNlLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICBkZWZhdWx0RXJyb3JzLnZhbHVlID0gX19hc3NpZ24oX19hc3NpZ24oe30sIGRlZmF1bHRFcnJvcnMudmFsdWUpLCAoX2EgPSBlcnJvci5yZXNwb25zZS5kYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZXJyb3JzKTtcbiAgICAgICAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IChfYiA9IGVycm9yLnJlc3BvbnNlLmRhdGEpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0VHlwZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCBwcm9wczogcHJvcHMsIGRlZmF1bHRWYWx1ZXM6IGRlZmF1bHRWYWx1ZXMsIGRlZmF1bHRFcnJvcnM6IGRlZmF1bHRFcnJvcnMsIGVycm9yUmVzZXQ6IGVycm9yUmVzZXQsIGxvYWRlclZpc2liaWxpdHk6IGxvYWRlclZpc2liaWxpdHksIHRvYXN0VmlzaWJpbGl0eTogdG9hc3RWaXNpYmlsaXR5LCB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSwgdG9hc3RUeXBlOiB0b2FzdFR5cGUsIHN1Ym1pdEZvcm06IHN1Ym1pdEZvcm0sIE11bHRpc2VsZWN0OiBtdWx0aXNlbGVjdF8xLmRlZmF1bHQsIExvYWRlcjogTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbi8vIGNvbXBvbmVudHNcbnZhciBJbmRleF8xID0gcmVxdWlyZShcIi4vZWxlbWVudHMvSW5kZXhcIik7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIFJhZGlhbFByb2dyZXNzQmFyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1JhZGlhbFByb2dyZXNzQmFyLnZ1ZVwiKSk7XG52YXIgUHVibGlzaEJ1dHRvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL1B1Ymxpc2hCdXR0b24udnVlXCIpKTtcbnZhciBVblB1Ymxpc2hCdXR0b25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9VblB1Ymxpc2hCdXR0b24udnVlXCIpKTtcbnZhciBEZWxldGVCdXR0b25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9EZWxldGVCdXR0b24udnVlXCIpKTtcbnZhciBTdGlja3lFcnJvcnNfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvU3RpY2t5RXJyb3JzLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIEVycm9yUG9wVXBfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvRXJyb3JQb3BVcC52dWVcIikpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xuLy8gQWN0aXZpdHkgQ29tcG9uZW50c1xudmFyIEFjdGl2aXRpZXNFbGVtZW50c192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQWN0aXZpdHkvcGFydGlhbHMvQWN0aXZpdGllc0VsZW1lbnRzLnZ1ZVwiKSk7XG52YXIgQWN0aXZpdHlFbGVtZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJBY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0eUVsZW1lbnQudnVlXCIpKTtcbnZhciBQcmV2aW91c2x5UHVibGlzaGVkX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3N0YXR1cy9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZVwiKSk7XG4vLyBWdWV4IFN0b3JlXG52YXIgc2hvd18xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvc2hvd1wiKTtcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgSG92ZXJUZXh0OiBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUHJvZ3Jlc3NCYXI6IFJhZGlhbFByb2dyZXNzQmFyX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEVsZW1lbnRzOiBBY3Rpdml0aWVzRWxlbWVudHNfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgQWN0aXZpdHlFbGVtZW50OiBBY3Rpdml0eUVsZW1lbnRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUmVzdWx0OiBJbmRleF8xLlJlc3VsdCxcbiAgICAgICAgUHVibGlzaDogUHVibGlzaEJ1dHRvbl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBFcnJvcnM6IFN0aWNreUVycm9yc192dWVfMS5kZWZhdWx0LFxuICAgICAgICBVblB1Ymxpc2g6IFVuUHVibGlzaEJ1dHRvbl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBEZWxldGVCdXR0b246IERlbGV0ZUJ1dHRvbl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQcmV2aW91c2x5UHVibGlzaGVkOiBQcmV2aW91c2x5UHVibGlzaGVkX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEVycm9yUG9wVXA6IEVycm9yUG9wVXBfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBncm91cHM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHByb2dyZXNzOiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9hc3Q6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXR1czoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHJlc3VsdHM6IHtcbiAgICAgICAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRyYW5zYWN0aW9uczoge1xuICAgICAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29yZUNvbXBsZXRlZDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBpYXRpVmFsaWRhdG9yUmVzcG9uc2U6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBpbXBvcnRBY3Rpdml0eUVycm9yOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBfYiA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKSwgdHlwZXMgPSBfYi50eXBlcywgY29yZUNvbXBsZXRlZCA9IF9iLmNvcmVDb21wbGV0ZWQ7XG4gICAgICAgIHZhciByZW1vdmVkID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgncmVtb3ZlZCcpO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgc2hvd18xLmRldGFpbFN0b3JlKSgpO1xuICAgICAgICB2YXIgaW5kZXhTdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgc2hvd1NpZGViYXIgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBwb3NpdGlvblkgPSAoMCwgdnVlXzEucmVmKSgwKTtcbiAgICAgICAgdmFyIHNjcmVlbldpZHRoID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGVycm9yRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICBzaG93U2lkZWJhcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvciBtb2RhbCBwb3B1cCBjb21wbGV0ZWRcbiAgICAgICAgICovXG4gICAgICAgIHZhciBfYyA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBkZWxldGVWYWx1ZSA9IF9jWzBdLCBkZWxldGVUb2dnbGUgPSBfY1sxXTtcbiAgICAgICAgdmFyIF9kID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIGRvd25sb2FkVmFsdWUgPSBfZFswXSwgZG93bmxvYWRUb2dnbGUgPSBfZFsxXTtcbiAgICAgICAgdmFyIHRvZ2dsZVNpZGViYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaG93U2lkZWJhci52YWx1ZSA9ICFzaG93U2lkZWJhci52YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGhhbmRsZVNjcm9sbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHBvc2l0aW9uWS52YWx1ZSA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgaXN0b3BWaXNpYmxlID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gcG9zaXRpb25ZLnZhbHVlID09PSAwO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHdpZHRoID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGNXaWR0aCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmIChyZW1vdmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9ICdSZW1vdmVkIHN1Y2Nlc2Z1bGx5JztcbiAgICAgICAgICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2UuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgc2NyZWVuV2lkdGgudmFsdWUgPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGNXaWR0aCk7XG4gICAgICAgICAgICBpZiAocHJvcHMudG9hc3QubWVzc2FnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHByb3BzLnRvYXN0LnR5cGU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcHJvcHMudG9hc3QubWVzc2FnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjYWxjV2lkdGggPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHNjcmVlbldpZHRoLnZhbHVlID0gZXZlbnQudGFyZ2V0LmlubmVyV2lkdGg7XG4gICAgICAgICAgICBpZiAoc2NyZWVuV2lkdGgudmFsdWUgPiAxMDI0KSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2hvd1NpZGViYXIudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzaG93U2lkZWJhci52YWx1ZTsgfSwgZnVuY3Rpb24gKHNpZGViYXIpIHtcbiAgICAgICAgICAgIGlmIChzaWRlYmFyKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiB0b2FzdERhdGEudmlzaWJpbGl0eTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZ25vcmVUb2FzdFVwZGF0ZSgpO1xuICAgICAgICAgICAgfSwgMTAwMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdyb3VwaW5nIGFsbCB0aGUgZGF0YSdzIGZvciBzY3JvbGwgZnVuY3Rpb25cbiAgICAgICAgICpcbiAgICAgICAgICogdGhpcyBkYXRhIGlzIGNyZWF0ZWQgdXNpbmcgcHJvcHMuZWxlbWVudF9ncm91cCBhbmQgcHJvcHMuYWN0aXZpdHlcbiAgICAgICAgICovXG4gICAgICAgIHZhciBfZSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKSwgZ3JvdXBzID0gX2UuZ3JvdXBzLCBhY3Rpdml0eSA9IF9lLmFjdGl2aXR5LCBlbGVtZW50cyA9IF9lLmVsZW1lbnRzLCBzdGF0dXMgPSBfZS5zdGF0dXMsIHRyYW5zYWN0aW9ucyA9IF9lLnRyYW5zYWN0aW9ucywgZ3JvdXBlZERhdGEgPSBncm91cHMudmFsdWUsIGFjdGl2aXR5UHJvcHMgPSBhY3Rpdml0eS52YWx1ZSwgYWN0aXZpdGllcyA9IGdyb3Vwcy52YWx1ZSwgZWxlbWVudFByb3BzID0gZWxlbWVudHMudmFsdWUsIHN0YXR1c1Byb3BzID0gc3RhdHVzLnZhbHVlLCB0cmFuc2FjdGlvblByb3BzID0gdHJhbnNhY3Rpb25zLnZhbHVlO1xuICAgICAgICB2YXIgcmVzdWx0cyA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5yZXN1bHRzO1xuICAgICAgICBhY3Rpdml0eVByb3BzLnJlc3VsdCA9IHJlc3VsdHMudmFsdWU7XG4gICAgICAgIGFjdGl2aXR5UHJvcHMudHJhbnNhY3Rpb25zID0gdHJhbnNhY3Rpb25Qcm9wcztcbiAgICAgICAgLy8gZ2VuZXJhdGluZyBhdmFpbGFibGUgZWxlbWVudHNcbiAgICAgICAgT2JqZWN0LmtleXMoYWN0aXZpdGllcykubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIHZhciBmbGFnID0gZmFsc2U7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhhY3Rpdml0aWVzW2tleV1bJ2VsZW1lbnRzJ10pLm1hcChmdW5jdGlvbiAoaykge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhY3Rpdml0eVByb3BzW2tdID09PSAnbnVtYmVyJyB8fFxuICAgICAgICAgICAgICAgICAgICAodHlwZW9mIGFjdGl2aXR5UHJvcHNba10gPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0eVByb3BzW2tdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhhY3Rpdml0eVByb3BzW2tdKS5sZW5ndGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2aXRpZXNba2V5XVsnZWxlbWVudHMnXVtrXVsnY29udGVudCddID0gYWN0aXZpdHlQcm9wc1trXTtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllc1trZXldWydlbGVtZW50cyddW2tdWydob3Zlcl90ZXh0J10gPVxuICAgICAgICAgICAgICAgICAgICAgICAgKF9hID0gZWxlbWVudFByb3BzW2tdWydob3Zlcl90ZXh0J10pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnO1xuICAgICAgICAgICAgICAgICAgICBhY3Rpdml0aWVzW2tleV1bJ2VsZW1lbnRzJ11ba11bJ3dhcm5pbmdfaW5mb190ZXh0J10gPVxuICAgICAgICAgICAgICAgICAgICAgICAgKF9iID0gZWxlbWVudFByb3BzW2tdWyd3YXJuaW5nX2luZm9fdGV4dCddKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgYWN0aXZpdGllc1trZXldW2tdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGZsYWcgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGFjdGl2aXRpZXNba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGdlbmVyYXRpbmcgYXZhaWxhYmxlIGNhdGVnb3JpZXMgb2YgZWxlbWVudHNcbiAgICAgICAgT2JqZWN0LmtleXMoZ3JvdXBlZERhdGEpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGFjdGl2aXRpZXMsIGtleSkpIHtcbiAgICAgICAgICAgICAgICBncm91cGVkRGF0YVtrZXldWydzdGF0dXMnXSA9ICdlbmFibGVkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGdyb3VwZWREYXRhW2tleV1bJ3N0YXR1cyddID0gJ2Rpc2FibGVkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHcm91cGluZyBhbGwgZWxlbWVudHMgYW5kIHRoZWlycyBjb21wbGV0ZWQgc3RhdHVzXG4gICAgICAgICAqXG4gICAgICAgICAqIGNvbWJpbmluZyBwcm9wcy5lbGVtZW50cyBhbmQgcHJvcHMuc3RhdHVzXG4gICAgICAgICAqXG4gICAgICAgICAqIEByZXR1cm5zIG9iamVjdFxuICAgICAgICAgKi9cbiAgICAgICAgT2JqZWN0LmtleXMoZWxlbWVudFByb3BzKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGVsZW1lbnRQcm9wc1trZXldWydjb21wbGV0ZWQnXSA9IChfYSA9IHN0YXR1c1Byb3BzW2tleV0pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGZhbHNlO1xuICAgICAgICAgICAgZWxlbWVudFByb3BzW2tleV1bJ25vdF9jb21wbGV0ZWQnXSA9ICEoKF9iID0gc3RhdHVzUHJvcHNba2V5XSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogZmFsc2UpO1xuICAgICAgICAgICAgZWxlbWVudFByb3BzW2tleV1bJ2hhc19kYXRhJ10gPSAwO1xuICAgICAgICAgICAgaWYgKGtleSBpbiBhY3Rpdml0eVByb3BzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhY3Rpdml0eVByb3BzW2tleV0gPT09ICdudW1iZXInIHx8XG4gICAgICAgICAgICAgICAgICAgICh0eXBlb2YgYWN0aXZpdHlQcm9wc1trZXldID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdHlQcm9wc1trZXldICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhhY3Rpdml0eVByb3BzW2tleV0pLmxlbmd0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGFjdGl2aXR5UHJvcHNba2V5XSkubGVuZ3RoID4gMCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdHlQcm9wc1trZXldLnRvU3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRQcm9wc1trZXldWydoYXNfZGF0YSddID0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGaW5kaW5nIGN1cnJlbnQgbGFuZ3VhZ2UgLSBhY3Rpdml0eSB0aXRsZVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIHBhZ2VUaXRsZSA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKGFjdGl2aXR5UHJvcHMudGl0bGUsIChfYSA9IGFjdGl2aXR5UHJvcHMuZGVmYXVsdF9maWVsZF92YWx1ZXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kZWZhdWx0X2xhbmd1YWdlKTtcbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0VGl0bGUodGl0bGUpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHZhciB0cmFuc2xhdGVkVGl0bGUgPSAoX2EgPSB0cmFuc2xhdGUudGV4dEZyb21LZXkoXCJhY3Rpdml0eV9kZXRhaWwuXCIuY29uY2F0KHRpdGxlLCBcIi5sYWJlbFwiKSkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHRpdGxlLnJlcGxhY2UoL18vZ2ksICcgJyk7XG4gICAgICAgICAgICByZXR1cm4gKDAsIHZ1ZV8xLmNhcGl0YWxpemUpKHRyYW5zbGF0ZWRUaXRsZSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpZ25vcmVVcGRhdGVzID0gKDAsIGNvcmVfMS53YXRjaElnbm9yYWJsZSkodG9hc3REYXRhLCBmdW5jdGlvbiAoKSB7IHJldHVybiB1bmRlZmluZWQ7IH0sIHtcbiAgICAgICAgICAgIGZsdXNoOiAnc3luYycsXG4gICAgICAgIH0pLmlnbm9yZVVwZGF0ZXM7XG4gICAgICAgIHZhciBpZ25vcmVUb2FzdFVwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlnbm9yZVVwZGF0ZXMoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gJyc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHB1Ymxpc2hTdGF0dXMgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGxpbmtlZF90b19pYXRpOiBhY3Rpdml0eVByb3BzLmxpbmtlZF90b19pYXRpLFxuICAgICAgICAgICAgc3RhdHVzOiBhY3Rpdml0eVByb3BzLnN0YXR1cyxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIHZ1ZSBwcm92aWRlc1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3R5cGVzJywgdHlwZXMudmFsdWUpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ2NvcmVDb21wbGV0ZWQnLCBjb3JlQ29tcGxldGVkLnZhbHVlKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCd0b2FzdE1lc3NhZ2UnLCB0b2FzdE1lc3NhZ2UpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3RvYXN0RGF0YScsIHRvYXN0RGF0YSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnZXJyb3JEYXRhJywgZXJyb3JEYXRhKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdpbXBvcnRBY3Rpdml0eUVycm9yJywgcHJvcHMuaW1wb3J0QWN0aXZpdHlFcnJvcik7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnYWN0aXZpdHlJZCcsIHByb3BzLmFjdGl2aXR5LmlkKTtcbiAgICAgICAgaW5kZXhTdG9yZS5kaXNwYXRjaCgndXBkYXRlU2VsZWN0ZWRBY3Rpdml0aWVzJywgW2FjdGl2aXR5LnZhbHVlLmlkXSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCcmVhZGNydW1iIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIHZhciBicmVhZGNydW1iRGF0YSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdHJhbnNsYXRlLnRleHRGcm9tS2V5KCdhY3Rpdml0aWVzLnlvdXJfYWN0aXZpdGllcycpLFxuICAgICAgICAgICAgICAgIGxpbms6ICcvYWN0aXZpdGllcycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwYWdlVGl0bGUsXG4gICAgICAgICAgICAgICAgbGluazogJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICAvKipcbiAgICAgICAgICogIEdsb2JhbCBTdGF0ZVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGlhdGlWYWxpZGF0b3JSZXNwb25zZSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5pYXRpVmFsaWRhdG9yUmVzcG9uc2U7XG4gICAgICAgIHZhciB2YWxpZGF0aW9uUmVzdWx0ID0gaWF0aVZhbGlkYXRvclJlc3BvbnNlLnZhbHVlO1xuICAgICAgICBpZiAodmFsaWRhdGlvblJlc3VsdCAmJiB2YWxpZGF0aW9uUmVzdWx0LmVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlUHVibGlzaEVycm9ycycsIHZhbGlkYXRpb25SZXN1bHQuZXJyb3JzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHVibGlzaFN0YXR1cy5saW5rZWRfdG9faWF0aSkge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVVuUHVibGlzaGVkJywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlVW5QdWJsaXNoZWQnLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEocHVibGlzaFN0YXR1cy5saW5rZWRfdG9faWF0aSAmJiBwdWJsaXNoU3RhdHVzLnN0YXR1cyA9PT0gJ3B1Ymxpc2hlZCcpKSB7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU2hvd1B1Ymxpc2hlZCcsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVNob3dQdWJsaXNoZWQnLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvU25ha2VDYXNlID0gZnVuY3Rpb24gKHNlbnRlbmNlKSB7XG4gICAgICAgICAgICB2YXIgd29yZHMgPSBzZW50ZW5jZS5zcGxpdCgnICcpO1xuICAgICAgICAgICAgcmV0dXJuIHdvcmRzLm1hcChmdW5jdGlvbiAod29yZCkgeyByZXR1cm4gd29yZC50b0xvd2VyQ2FzZSgpOyB9KS5qb2luKCdfJyk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBncm91cGVkRGF0YTogZ3JvdXBlZERhdGEsXG4gICAgICAgICAgICBhY3Rpdml0aWVzOiBhY3Rpdml0aWVzLFxuICAgICAgICAgICAgZGVsZXRlVmFsdWU6IGRlbGV0ZVZhbHVlLFxuICAgICAgICAgICAgZGVsZXRlVG9nZ2xlOiBkZWxldGVUb2dnbGUsXG4gICAgICAgICAgICBkb3dubG9hZFZhbHVlOiBkb3dubG9hZFZhbHVlLFxuICAgICAgICAgICAgZG93bmxvYWRUb2dnbGU6IGRvd25sb2FkVG9nZ2xlLFxuICAgICAgICAgICAgdG9hc3REYXRhOiB0b2FzdERhdGEsXG4gICAgICAgICAgICBlbGVtZW50UHJvcHM6IGVsZW1lbnRQcm9wcyxcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgICAgIGZvcm1hdFRpdGxlOiBmb3JtYXRUaXRsZSxcbiAgICAgICAgICAgIHBhZ2VUaXRsZTogcGFnZVRpdGxlLFxuICAgICAgICAgICAgdG9hc3RNZXNzYWdlOiB0b2FzdE1lc3NhZ2UsXG4gICAgICAgICAgICBwdWJsaXNoU3RhdHVzOiBwdWJsaXNoU3RhdHVzLFxuICAgICAgICAgICAgYnJlYWRjcnVtYkRhdGE6IGJyZWFkY3J1bWJEYXRhLFxuICAgICAgICAgICAgc3RvcmU6IHN0b3JlLFxuICAgICAgICAgICAgYWN0aXZpdHlQcm9wczogYWN0aXZpdHlQcm9wcyxcbiAgICAgICAgICAgIGVycm9yRGF0YTogZXJyb3JEYXRhLFxuICAgICAgICAgICAgc2hvd1NpZGViYXI6IHNob3dTaWRlYmFyLFxuICAgICAgICAgICAgdG9nZ2xlU2lkZWJhcjogdG9nZ2xlU2lkZWJhcixcbiAgICAgICAgICAgIGlzdG9wVmlzaWJsZTogaXN0b3BWaXNpYmxlLFxuICAgICAgICAgICAgc2NyZWVuV2lkdGg6IHNjcmVlbldpZHRoLFxuICAgICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB0b1NuYWtlQ2FzZTogdG9TbmFrZUNhc2UsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIFhsc1VwbG9hZEluZGljYXRvcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9YbHNVcGxvYWRJbmRpY2F0b3IudnVlXCIpKTtcbnZhciBFbXB0eUFjdGl2aXR5X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3BhcnRpYWxzL0VtcHR5QWN0aXZpdHkudnVlXCIpKTtcbnZhciBUYWJsZUxheW91dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9wYXJ0aWFscy9UYWJsZUxheW91dC52dWVcIikpO1xudmFyIFRhYmxlUGFnaW5hdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlXCIpKTtcbnZhciBQYWdlVGl0bGVfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vcGFydGlhbHMvUGFnZVRpdGxlLnZ1ZVwiKSk7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIEVycm9yTWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9FcnJvck1lc3NhZ2UudnVlXCIpKTtcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG52YXIgc2hvd18xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvc2hvd1wiKTtcbnZhciBjb3JlXzIgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbnZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xudmFyIGFjdGl2aXR5U3RvcmUgPSAoMCwgc2hvd18xLmRldGFpbFN0b3JlKSgpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eUNvbXBvbmVudCcsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBFbXB0eUFjdGl2aXR5OiBFbXB0eUFjdGl2aXR5X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2VUaXRsZTogUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2luYXRpb246IFRhYmxlUGFnaW5hdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUYWJsZUxheW91dDogVGFibGVMYXlvdXRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgRXJyb3JNZXNzYWdlOiBFcnJvck1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgWGxzVXBsb2FkSW5kaWNhdG9yOiBYbHNVcGxvYWRJbmRpY2F0b3JfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIHRvYXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgYWN0aXZpdGllcyA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgaXNMb2FkaW5nID0gKDAsIHZ1ZV8xLnJlZikodHJ1ZSk7XG4gICAgICAgIHZhciBhY3Rpdml0eU5hbWUgPSAoMCwgdnVlXzEucmVmKSgnJyk7XG4gICAgICAgIHZhciBmaWxlQ291bnQgPSAoMCwgdnVlXzEucmVmKSgwKTtcbiAgICAgICAgdmFyIGRvd25sb2FkQ29tcGxldGVkID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgY2xvc2VNb2RlbCA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHhsc0Rvd25sb2FkU3RhdHVzID0gKDAsIHZ1ZV8xLnJlZikoJycpO1xuICAgICAgICB2YXIgeGxzRGF0YSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGRvd25sb2FkaW5nID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc3RhcnRCdWxrUHVibGlzaCA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHhsc0ZhaWxlZCA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHhsc0ZhaWxlZE1lc3NhZ2UgPSAoMCwgdnVlXzEucmVmKSgnJyk7XG4gICAgICAgIHZhciBwcm9jZXNzaW5nID0gKDAsIHZ1ZV8xLnJlZikoKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hpbmdBY3Rpdml0aWVzID0gKDAsIHZ1ZV8xLnJlZikoKTtcbiAgICAgICAgdmFyIHVwbG9hZENvbXBsZXRlID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgaW1wb3J0Q29tcGxldGVkID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG90YWxDb3VudCA9ICgwLCB2dWVfMS5yZWYpKCk7XG4gICAgICAgIHZhciBwcm9jZXNzZWRDb3VudCA9ICgwLCB2dWVfMS5yZWYpKCk7XG4gICAgICAgIHZhciBzaG93WGxzU3RhdHVzID0gKDAsIHZ1ZV8xLnJlZikodHJ1ZSk7XG4gICAgICAgIHZhciB0YWJsZUxvYWRlciA9ICgwLCB2dWVfMS5yZWYpKHRydWUpO1xuICAgICAgICB2YXIgZG93bmxvYWRBcGlVcmwgPSAoMCwgdnVlXzEucmVmKSgnJyk7XG4gICAgICAgIHZhciBjdXJyZW50VVJMID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICAgIHZhciBlbmRwb2ludCA9ICcnO1xuICAgICAgICB2YXIgc2hvd0VtcHR5VGVtcGxhdGUgPSBmYWxzZTtcbiAgICAgICAgdmFyIHBhID0gKDAsIGNvcmVfMi51c2VTdG9yYWdlKSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywge1xuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IChfYSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwdWJsaXNoaW5nQWN0aXZpdGllcycpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB7fSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykpIHtcbiAgICAgICAgICAgIHZhciBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XG4gICAgICAgICAgICBlbmRwb2ludCA9IFwiL2FjdGl2aXRpZXMvcGFnZVwiLmNvbmNhdChxdWVyeVN0cmluZyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlbmRwb2ludCA9IFwiL2FjdGl2aXRpZXMvcGFnZVwiO1xuICAgICAgICAgICAgc2hvd0VtcHR5VGVtcGxhdGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgLy9mb3Igc2Vzc2lvbiBtZXNzYWdlXG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGVycm9yRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBmb3IgcHVibGlzaCBidXR0b25cbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHBvbGxpbmdGb3JYbHNTdGF0dXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgY2hlY2tTdGF0dXMgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL2ltcG9ydC94bHMvc3RhdHVzJykudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2gsIF9qLCBfaztcbiAgICAgICAgICAgICAgICAgICAgaWYgKCgoX2EgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubWVzc2FnZSkgPT09ICdTdGFydGVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXNldFxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxDb3VudC52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWRDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZE1lc3NhZ2UudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsQ291bnQudmFsdWUgPSAoX2IgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudG90YWxfY291bnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWRDb3VudC52YWx1ZSA9IChfYyA9IHJlcy5kYXRhLmRhdGEpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5wcm9jZXNzZWRfY291bnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWQudmFsdWUgPSAhKChfZCA9IHJlcy5kYXRhLmRhdGEpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5zdWNjZXNzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZE1lc3NhZ2UudmFsdWUgPSAoX2UgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoKChfZiA9IHJlcy5kYXRhLmRhdGEpID09PSBudWxsIHx8IF9mID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZi5tZXNzYWdlKSA9PT0gJ1Byb2Nlc3NpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzaW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoISgoX2ggPSAoX2cgPSByZXMuZGF0YSkgPT09IG51bGwgfHwgX2cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9nLmRhdGEpID09PSBudWxsIHx8IF9oID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfaC5zdWNjZXNzKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKChfayA9IChfaiA9IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfaiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2ouZGF0YSkgPT09IG51bGwgfHwgX2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9rLm1lc3NhZ2UpID09PSAnQ29tcGxldGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cGxvYWRDb21wbGV0ZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrU3RhdHVzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgMjUwMCk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuc3RhcnRYbHNEb3dubG9hZDsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygncG9sbGluZyB3YXRjaGVyIHRyaWdnZXJlZCcpO1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY2hlY2tEb3dubG9hZFN0YXR1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gW3N0b3JlLnN0YXRlLnN0YXJ0QnVsa1B1Ymxpc2gsIHN0b3JlLnN0YXRlLmJ1bGtwdWJsaXNoQWN0aXZpdGllc107IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRCdWxrUHVibGlzaC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXMudmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrcHVibGlzaEFjdGl2aXRpZXMucHVibGlzaGluZ0FjdGl2aXRpZXM7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhcnRCdWxrUHVibGlzaC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuY29tcGxldGVYbHNEb3dubG9hZDsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBkb3dubG9hZENvbXBsZXRlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0WGxzRG93bmxvYWQnLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5jbG9zZVhsc01vZGVsOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNoZWNrWGxzc3RhdHVzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2hlY2tYbHNzdGF0dXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvaW1wb3J0L3hscy9wcm9ncmVzc19zdGF0dXMnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oO1xuICAgICAgICAgICAgICAgIGFjdGl2aXR5TmFtZS52YWx1ZSA9IChfYiA9IChfYSA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3RhdHVzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgeGxzRGF0YS52YWx1ZSA9IE9iamVjdC5rZXlzKHJlcy5kYXRhLnN0YXR1cykubGVuZ3RoID4gMDtcbiAgICAgICAgICAgICAgICBpZiAoKChfZCA9IChfYyA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Muc3RhdHVzKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Quc3RhdHVzKSA9PT0gJ2NvbXBsZXRlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkQ29tcGxldGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICgoKF9mID0gKF9lID0gcmVzID09PSBudWxsIHx8IHJlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzLmRhdGEpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5zdGF0dXMpID09PSBudWxsIHx8IF9mID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZi5zdGF0dXMpID09PSAnZmFpbGVkJykge1xuICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWRNZXNzYWdlLnZhbHVlID0gKF9oID0gKF9nID0gcmVzID09PSBudWxsIHx8IHJlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzLmRhdGEpID09PSBudWxsIHx8IF9nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZy5zdGF0dXMpID09PSBudWxsIHx8IF9oID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfaC5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChPYmplY3Qua2V5cyhyZXMuZGF0YS5zdGF0dXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXNldFxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxDb3VudC52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWRDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZE1lc3NhZ2UudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvbGxpbmdGb3JYbHNTdGF0dXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2hlY2tEb3dubG9hZFN0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRvd25sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgY2hlY2tEb3dubG9hZCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvYWN0aXZpdGllcy9kb3dubG9hZC14bHMtcHJvZ3Jlc3Mtc3RhdHVzJykudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVDb3VudC52YWx1ZSA9IHJlcy5kYXRhLmZpbGVfY291bnQ7XG4gICAgICAgICAgICAgICAgICAgIHhsc0Rvd25sb2FkU3RhdHVzLnZhbHVlID0gcmVzLmRhdGEuc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICBkb3dubG9hZEFwaVVybC52YWx1ZSA9IHJlcy5kYXRhLnVybDtcbiAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRpbmcudmFsdWUgPSAhIXJlcy5kYXRhLnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhsc0Rvd25sb2FkU3RhdHVzLnZhbHVlID09PSAnY29tcGxldGVkJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRG93bmxvYWRTdGF0dXMudmFsdWUgPT09ICdmYWlsZWQnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAhcmVzLmRhdGEuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrRG93bmxvYWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCAzMDAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5jbG9zZVhsc01vZGVsOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjaGVja0Rvd25sb2FkU3RhdHVzKCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllcy52YWx1ZSA9IChfYSA9IHBhLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucHVibGlzaGluZ0FjdGl2aXRpZXM7XG4gICAgICAgICAgICBjaGVja1hsc3N0YXR1cygpO1xuICAgICAgICAgICAgY2hlY2tEb3dubG9hZFN0YXR1cygpO1xuICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgdGFibGVMb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoZW5kcG9pbnQpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihhY3Rpdml0aWVzLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRhYmxlTG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzaG93RW1wdHlUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9ICFyZXNwb25zZS5kYXRhLmRhdGEubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiB0b2FzdERhdGEudmlzaWJpbGl0eTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZ25vcmVUb2FzdFVwZGF0ZSgpO1xuICAgICAgICAgICAgfSwgMTAwMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHN0YXRlID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBzaG93QnV0dG9uczogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXNFbXB0eSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dPckhpZGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgaWYgKGRhdGEgPT09IHZvaWQgMCkgeyBkYXRhID0gQXJyYXk7IH1cbiAgICAgICAgICAgIGlmIChkYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5zaG93QnV0dG9ucyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5zaG93QnV0dG9ucyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBmdW5jdGlvbiBmZXRjaEFjdGl2aXRpZXMoYWN0aXZlX3BhZ2UpIHtcbiAgICAgICAgICAgIHRhYmxlTG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBxdWVyeVN0cmluZyA9ICcnO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRVUkwuaW5jbHVkZXMoJz8nKSkge1xuICAgICAgICAgICAgICAgIHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9hY3Rpdml0aWVzL3BhZ2UvJyArIGFjdGl2ZV9wYWdlICsgcXVlcnlTdHJpbmcpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYWN0aXZpdGllcywgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9ICFyZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0YWJsZUxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBpZ25vcmVVcGRhdGVzID0gKDAsIGNvcmVfMS53YXRjaElnbm9yYWJsZSkodG9hc3REYXRhLCBmdW5jdGlvbiAoKSB7IHJldHVybiB1bmRlZmluZWQ7IH0sIHtcbiAgICAgICAgICAgIGZsdXNoOiAnc3luYycsXG4gICAgICAgIH0pLmlnbm9yZVVwZGF0ZXM7XG4gICAgICAgIHZhciBpZ25vcmVUb2FzdFVwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlnbm9yZVVwZGF0ZXMoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gJyc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gZm9yIHJlZnJlc2ggdG9hc3QgbWVzc2FnZVxuICAgICAgICAvLyBsZXQgcmVmcmVzaFRvYXN0TXNnID0gcmVmKGZhbHNlKTtcbiAgICAgICAgdmFyIHJlZnJlc2hUb2FzdE1zZyA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICByZWZyZXNoTWVzc2FnZVR5cGU6IHRydWUsXG4gICAgICAgICAgICByZWZyZXNoTWVzc2FnZTogdHJhbnNsYXRlLmVycm9yKCdhY3Rpdml0eV9oYXNfYmVlbl9wdWJsaXNoZWRfc3VjY2Vzc2Z1bGx5JyksXG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogUHJvdmlkZVxuICAgICAgICAgKi9cbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCd0b2FzdE1lc3NhZ2UnLCB0b2FzdE1lc3NhZ2UpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3RvYXN0RGF0YScsIHRvYXN0RGF0YSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnZXJyb3JEYXRhJywgZXJyb3JEYXRhKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdyZWZyZXNoVG9hc3RNc2cnLCByZWZyZXNoVG9hc3RNc2cpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3hsc0ZhaWxlZE1lc3NhZ2UnLCB4bHNGYWlsZWRNZXNzYWdlKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdwcm9jZXNzaW5nJywgcHJvY2Vzc2luZyk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnZG93bmxvYWRpbmcnLCBkb3dubG9hZGluZyk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnZmlsZUNvdW50JywgZmlsZUNvdW50KTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCd4bHNEb3dubG9hZFN0YXR1cycsIHhsc0Rvd25sb2FkU3RhdHVzKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdkb3dubG9hZEFwaVVybCcsIGRvd25sb2FkQXBpVXJsKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdjbG9zZU1vZGVsJywgY2xvc2VNb2RlbCk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnYWN0aXZpdGllcycsIHB1Ymxpc2hpbmdBY3Rpdml0aWVzKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdjb21wbGV0ZWQnLCB1cGxvYWRDb21wbGV0ZSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhY3Rpdml0aWVzOiBhY3Rpdml0aWVzLFxuICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgaXNFbXB0eTogaXNFbXB0eSxcbiAgICAgICAgICAgIGlzTG9hZGluZzogaXNMb2FkaW5nLFxuICAgICAgICAgICAgc2hvd09ySGlkZTogc2hvd09ySGlkZSxcbiAgICAgICAgICAgIGZldGNoQWN0aXZpdGllczogZmV0Y2hBY3Rpdml0aWVzLFxuICAgICAgICAgICAgdG9hc3REYXRhOiB0b2FzdERhdGEsXG4gICAgICAgICAgICB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSxcbiAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZzogcmVmcmVzaFRvYXN0TXNnLFxuICAgICAgICAgICAgZXJyb3JEYXRhOiBlcnJvckRhdGEsXG4gICAgICAgICAgICB0YWJsZUxvYWRlcjogdGFibGVMb2FkZXIsXG4gICAgICAgICAgICB0cmFuc2xhdGU6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHhsc0RhdGE6IHhsc0RhdGEsXG4gICAgICAgICAgICBhY3Rpdml0eU5hbWU6IGFjdGl2aXR5TmFtZSxcbiAgICAgICAgICAgIHByb2Nlc3NlZENvdW50OiBwcm9jZXNzZWRDb3VudCxcbiAgICAgICAgICAgIHRvdGFsQ291bnQ6IHRvdGFsQ291bnQsXG4gICAgICAgICAgICBzaG93WGxzU3RhdHVzOiBzaG93WGxzU3RhdHVzLFxuICAgICAgICAgICAgeGxzRmFpbGVkOiB4bHNGYWlsZWQsXG4gICAgICAgICAgICB4bHNGYWlsZWRNZXNzYWdlOiB4bHNGYWlsZWRNZXNzYWdlLFxuICAgICAgICAgICAgaW1wb3J0Q29tcGxldGVkOiBpbXBvcnRDb21wbGV0ZWQsXG4gICAgICAgICAgICBkb3dubG9hZENvbXBsZXRlZDogZG93bmxvYWRDb21wbGV0ZWQsXG4gICAgICAgICAgICB1cGxvYWRDb21wbGV0ZTogdXBsb2FkQ29tcGxldGUsXG4gICAgICAgICAgICBkb3dubG9hZGluZzogZG93bmxvYWRpbmcsXG4gICAgICAgICAgICBzdGFydEJ1bGtQdWJsaXNoOiBzdGFydEJ1bGtQdWJsaXNoLFxuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IHB1Ymxpc2hpbmdBY3Rpdml0aWVzLFxuICAgICAgICAgICAgYWN0aXZpdHlTdG9yZTogYWN0aXZpdHlTdG9yZSxcbiAgICAgICAgICAgIHBhOiBwYSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vY29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIG11bHRpc2VsZWN0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkB2dWVmb3JtL211bHRpc2VsZWN0XCIpKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBNdWx0aXNlbGVjdDogbXVsdGlzZWxlY3RfMS5kZWZhdWx0LFxuICAgICAgICBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbW9kYWxWYWx1ZToge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ2Nsb3NlTW9kYWwnLCAndG9hc3QnXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzLCBfYSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGZvcm1EYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBuYXJyYXRpdmU6ICcnLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6ICcnLFxuICAgICAgICAgICAgYWN0aXZpdHlfaWRlbnRpZmllcjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBuYXJyYXRpdmU6ICcnLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6ICcnLFxuICAgICAgICAgICAgYWN0aXZpdHlfaWRlbnRpZmllcjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgbG9hZGVyVmlzaWJpbGl0eSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGxhbmd1YWdlcyA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgb3JnYW5pemF0aW9uID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7fSk7XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvYWN0aXZpdGllcy9jb2RlbGlzdHMnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24obGFuZ3VhZ2VzLCByZXNwb25zZS5kYXRhLmxhbmd1YWdlcyk7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ob3JnYW5pemF0aW9uLCByZXNwb25zZS5kYXRhLm9yZ2FuaXphdGlvbik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9KTtcbiAgICAgICAgZnVuY3Rpb24gY2xvc2VNb2RhbCgpIHtcbiAgICAgICAgICAgIGVtaXQoJ2Nsb3NlTW9kYWwnKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzdG9yZUFjdGl2aXR5KCkge1xuICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL2FjdGl2aXR5JywgZm9ybURhdGEpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBlbWl0KCdjbG9zZU1vZGFsJyk7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KHJlc3BvbnNlLmRhdGEuaWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHZhciBlcnJvcnMgPSBlcnJvci5yZXNwb25zZS5kYXRhLmVycm9ycztcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEubmFycmF0aXZlID0gZXJyb3JzLm5hcnJhdGl2ZSA/IGVycm9ycy5uYXJyYXRpdmVbMF0gOiAnJztcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEubGFuZ3VhZ2UgPSBlcnJvcnMubGFuZ3VhZ2UgPyBlcnJvcnMubGFuZ3VhZ2VbMF0gOiAnJztcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEuYWN0aXZpdHlfaWRlbnRpZmllciA9IGVycm9ycy5hY3Rpdml0eV9pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgID8gZXJyb3JzLmFjdGl2aXR5X2lkZW50aWZpZXJbMF1cbiAgICAgICAgICAgICAgICAgICAgOiAnJztcbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgZm9ybURhdGE6IGZvcm1EYXRhLFxuICAgICAgICAgICAgZXJyb3JEYXRhOiBlcnJvckRhdGEsXG4gICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5OiBsb2FkZXJWaXNpYmlsaXR5LFxuICAgICAgICAgICAgbGFuZ3VhZ2VzOiBsYW5ndWFnZXMsXG4gICAgICAgICAgICBvcmdhbml6YXRpb246IG9yZ2FuaXphdGlvbixcbiAgICAgICAgICAgIGNsb3NlTW9kYWw6IGNsb3NlTW9kYWwsXG4gICAgICAgICAgICBzdG9yZUFjdGl2aXR5OiBzdG9yZUFjdGl2aXR5LFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRXJyb3JJdGVtJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgbWVzc2FnZTogeyB0eXBlOiBTdHJpbmcsIGRlZmF1bHQ6ICcnIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBzZWxlY3RlZEFjdGl2aXRpZXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgnc2VsZWN0ZWRBY3Rpdml0aWVzJyk7XG4gICAgICAgIHZhciB0b2dnbGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBhY2NvcmRpb25Ub2dnbGUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRUYXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gY3VycmVudFRhcmdldC5jbG9zZXN0KCcuYWNjb3JkaW9uJykucXVlcnlTZWxlY3RvcignLmFjY29yZGlvbi1jb250ZW50Jyk7XG4gICAgICAgICAgICB2YXIgZWxIZWlnaHQgPSAoX2EgPSB0YXJnZXQgPT09IG51bGwgfHwgdGFyZ2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YXJnZXQucXVlcnlTZWxlY3RvcignZGl2JykpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbGllbnRIZWlnaHQ7XG4gICAgICAgICAgICBpZiAodG9nZ2xlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgICAgICB0b2dnbGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBhdXRvO1wiO1xuICAgICAgICAgICAgICAgICAgICB9LCA2MDApO1xuICAgICAgICAgICAgICAgICAgICB0b2dnbGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGVycm9yQ291bnQgPSBmdW5jdGlvbiAoZXJyb3JzKSB7XG4gICAgICAgICAgICB2YXIgZXJyb3JDb3VudCA9ICcnO1xuICAgICAgICAgICAgdmFyIHNjID0gdHJhbnNsYXRlLmdldFN0aWNreU9iamVjdCgnY29tbW9uJyk7XG4gICAgICAgICAgICBpZiAoZXJyb3JzID09PSBudWxsIHx8IGVycm9ycyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXJyb3JzLndhcm5pbmcpIHtcbiAgICAgICAgICAgICAgICBlcnJvckNvdW50ID0gXCJcIi5jb25jYXQoZXJyb3JzID09PSBudWxsIHx8IGVycm9ycyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXJyb3JzLmVycm9yLCBcIiBcIikuY29uY2F0KHNjLmVycm9ycywgXCIgXCIpLmNvbmNhdChzYy5hbmQsIFwiIFwiKS5jb25jYXQoZXJyb3JzID09PSBudWxsIHx8IGVycm9ycyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXJyb3JzLndhcm5pbmcsIFwiIFwiKS5jb25jYXQoc2Mud2FybmluZ3MsIFwiXFxuICAgICBcIikuY29uY2F0KHNjLndlcmVfZm91bmQsIFwiLlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGVycm9yQ291bnQgPSBcIlwiLmNvbmNhdChlcnJvcnMgPT09IG51bGwgfHwgZXJyb3JzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlcnJvcnMuY3JpdGljYWwsIFwiIFwiKS5jb25jYXQoc2MuY3JpdGljYWwsIFwiIFwiKS5jb25jYXQoc2MuZXJyb3JzLCBcIiBcIikuY29uY2F0KHNjLndlcmVfZm91bmQsIFwiLlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBlcnJvckNvdW50O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgc2VsZWN0ZWRBY3Rpdml0aWVzOiBzZWxlY3RlZEFjdGl2aXRpZXMsIHRvZ2dsZTogdG9nZ2xlLCBhY2NvcmRpb25Ub2dnbGU6IGFjY29yZGlvblRvZ2dsZSwgZXJyb3JDb3VudDogZXJyb3JDb3VudCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuLy9jb21wb25lbnRcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgUHJvZ3Jlc3NMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCIpKTtcbnZhciBWYWxpZGF0aW9uRXJyb3JzX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL1ZhbGlkYXRpb25FcnJvcnMudnVlXCIpKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG4vLyBWdWV4IFN0b3JlXG52YXIgaW5kZXhfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL2luZGV4XCIpO1xudmFyIEJ1bGtQdWJsaXNoaW5nRXJyb3JQb3B1cF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdWxrUHVibGlzaGluZ0Vycm9yUG9wdXAudnVlXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUHVibGlzaFNlbGVjdGVkJyxcbiAgICBwcm9wczoge1xuICAgICAgICB0eXBlOiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJ3ByaW1hcnknIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfYjtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqICBHbG9iYWwgU3RhdGVcbiAgICAgICAgICovXG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuICAgICAgICAvLyB0b2dnbGUgc3RhdGUgZm9yIG1vZGFsIHBvcHVwXG4gICAgICAgIHZhciBfYyA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBwdWJsaXNoQWxlcnRWYWx1ZSA9IF9jWzBdLCBwdWJsaXNoQWxlcnRUb2dnbGUgPSBfY1sxXTtcbiAgICAgICAgLy8gc3RhdGUgZm9yIHN0ZXAgb2YgdGhlIGZsb3dcbiAgICAgICAgdmFyIGJ1bGtQdWJsaXNoU3RlcCA9ICgwLCB2dWVfMi5yZWYpKDEpO1xuICAgICAgICB2YXIgYnVsa1B1Ymxpc2hTdGF0dXMgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHt9KTtcbiAgICAgICAgdmFyIGlzTG9hZGluZyA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHN0YXJ0UHVibGlzaCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hlZCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgLy8gZGlzcGxheS9oaWRlIHZhbGlkYXRvciBsb2FkZXJcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgLy8gRHluYW1pYyB0ZXh0IGZvciBsb2FkZXJcbiAgICAgICAgdmFyIGxvYWRlclRleHQgPSAoMCwgdnVlXzIucmVmKSh0cmFuc2xhdGUuY29tbW9uVGV4dCgncGxlYXNlX3dhaXQnKSk7XG4gICAgICAgIC8qU3RhdGVzIGZvciBCdWxrIHB1Ymxpc2ggY2FuY2VsbGF0aW9uIGZsb3cqL1xuICAgICAgICB2YXIgc2hvd0NhbmNlbENvbmZpcm1hdGlvblBvcHVwID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0NhbmNlbGxlZFBvcHVwID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgbWVzc2FnZU9uQ2FuY2VsbGF0aW9uID0gKDAsIHZ1ZV8yLnJlZikoJ05vIGJ1bGsgcHVibGlzaCB3ZXJlIGNhbmNlbGxlZCcpO1xuICAgICAgICAvLyByZXNldCBzdGVwIHRvIHplcm8gYWZ0ZXIgY2xvc2luZyBtb2RhbFxuICAgICAgICB2YXIgcmVzZXRQdWJsaXNoU3RlcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGJ1bGtQdWJsaXNoU3RlcC52YWx1ZSA9IDE7XG4gICAgICAgICAgICBwdWJsaXNoQWxlcnRWYWx1ZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgc2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlID0gW107XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwb3BVcFdpZHRoQ2hhbmdlID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgd2lkdGggPSAoMCwgdnVlXzIucmVmKSgnODI1Jyk7XG4gICAgICAgICAgICBzd2l0Y2ggKGJ1bGtQdWJsaXNoU3RlcC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgd2lkdGgudmFsdWUgPSAnNTgzJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICB3aWR0aC52YWx1ZSA9ICc4MDknO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHdpZHRoLnZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gdG9hc3QgdmlzaWJpbGl0eVxuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2Vycm9yRGF0YScpO1xuICAgICAgICB2YXIgZGlzcGxheVRvYXN0ID0gZnVuY3Rpb24gKG1lc3NhZ2UsIHR5cGUpIHtcbiAgICAgICAgICAgIGVycm9yRGF0YS5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgICAgIGVycm9yRGF0YS50eXBlID0gdHlwZTtcbiAgICAgICAgICAgIGVycm9yRGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGVtcHR5YnVsa1B1Ymxpc2hTdGF0dXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBzdGF0dXNfMSBpbiBidWxrUHVibGlzaFN0YXR1cykge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBidWxrUHVibGlzaFN0YXR1c1tzdGF0dXNfMV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBjaGVjayBwdWJsaXNoIHN0YXR1c1xuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGNoZWNrUHVibGlzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlzTG9hZGluZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KFwiL2FjdGl2aXRpZXMvY2hlY2tzLWZvci1hY3Rpdml0eS1idWxrLXB1Ymxpc2hcIilcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaEFsZXJ0VmFsdWUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlID09PSBudWxsIHx8IHJlc3BvbnNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNwb25zZS5pbl9wcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlidWxrUHVibGlzaFN0YXR1cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihidWxrUHVibGlzaFN0YXR1cywgcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDYW5jZWxDb25maXJtYXRpb25Nb2RhbCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheVRvYXN0KHJlc3BvbnNlLm1lc3NhZ2UsIHJlc3BvbnNlLnN1Y2Nlc3MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmluYWxseShmdW5jdGlvbiAoKSB7IHJldHVybiAoaXNMb2FkaW5nLnZhbHVlID0gZmFsc2UpOyB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFZlcmlmeSBjb3JlIGVsZW1lbnRzXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgY29yZUNvbXBsZXRlZEFjdGl2aXRpZXMgPSAoMCwgdnVlXzIucmVmKShbXSksIGNvcmVJbkNvbXBsZXRlZEFjdGl2aXRpZXMgPSAoMCwgdnVlXzIucmVmKShbXSksIHBlcm1hbGluayA9IFwiL2FjdGl2aXR5L1wiO1xuICAgICAgICB2YXIgdmVyaWZ5Q29yZUVsZW1lbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGxvYWRlclRleHQudmFsdWUgPSB0cmFuc2xhdGUuY29tbW9uVGV4dCgndmVyaWZ5aW5nX2NvcmVfZWxlbWVudHMnKTtcbiAgICAgICAgICAgIHZhciBhY3Rpdml0aWVzID0gc3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzLmpvaW4oJywgJyk7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KFwiL2FjdGl2aXRpZXMvY29yZS1lbGVtZW50cy1jb21wbGV0ZWQ/YWN0aXZpdGllcz1bXCIuY29uY2F0KGFjdGl2aXRpZXMsIFwiXVwiKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgY29yZUNvbXBsZXRlZEFjdGl2aXRpZXMudmFsdWUgPSByZXNwb25zZS5kYXRhLmNvbXBsZXRlO1xuICAgICAgICAgICAgICAgICAgICBjb3JlSW5Db21wbGV0ZWRBY3Rpdml0aWVzLnZhbHVlID0gcmVzcG9uc2UuZGF0YS5pbmNvbXBsZXRlO1xuICAgICAgICAgICAgICAgICAgICBidWxrUHVibGlzaFN0ZXAudmFsdWUgPSAyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJlc2V0UHVibGlzaFN0ZXAoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlID09PSBudWxsIHx8IHJlc3BvbnNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNwb25zZS5pbl9wcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlidWxrUHVibGlzaFN0YXR1cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihidWxrUHVibGlzaFN0YXR1cywgcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDYW5jZWxDb25maXJtYXRpb25Nb2RhbCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheVRvYXN0KHJlc3BvbnNlLm1lc3NhZ2UsIHJlc3BvbnNlLnN1Y2Nlc3MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogVmFsaWRhdGluZyBBY3Rpdml0aWVzXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgdmFsaWRhdGlvbkVycm9ycyA9ICgwLCB2dWVfMi5yZWYpKHt9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoXCJhY3Rpdml0aWVzL2J1bGstcHVibGlzaC1zdGF0dXM/b3JnYW5pemF0aW9uX2lkPVwiLmNvbmNhdCgoX2EgPSBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnB1Ymxpc2hpbmdBY3Rpdml0aWVzLm9yZ2FuaXphdGlvbl9pZCwgXCImJnV1aWQ9XCIpLmNvbmNhdCgoX2IgPSBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnB1Ymxpc2hpbmdBY3Rpdml0aWVzLmpvYl9iYXRjaF91dWlkKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKChfYSA9IHBhLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucHVibGlzaGluZ0FjdGl2aXRpZXMsIChfYiA9IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZGF0YSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB2YWxpZGF0ZUFjdGl2aXRpZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9IHRyYW5zbGF0ZS5jb21tb25UZXh0KCd2YWxpZGF0aW5nX2FjdGl2aXRpZXMnKTtcbiAgICAgICAgICAgIHZhciBhY3Rpdml0aWVzID0gc3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzLmpvaW4oJywgJyk7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdChcIi9hY3Rpdml0aWVzL3ZhbGlkYXRlLWFjdGl2aXRpZXM/YWN0aXZpdGllcz1bXCIuY29uY2F0KGFjdGl2aXRpZXMsIFwiXVwiKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVsa1B1Ymxpc2hTdGVwLnZhbHVlID0gMztcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbkVycm9ycy52YWx1ZSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXNldFB1Ymxpc2hTdGVwKCk7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlUb2FzdChyZXNwb25zZS5tZXNzYWdlLCByZXNwb25zZS5zdWNjZXNzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCdWxrIHB1Ymxpc2hpbmcgYWN0aXZpdGllc1xuICAgICAgICAgKi9cbiAgICAgICAgdmFyIHNlbGVjdGVkQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdzZWxlY3RlZEFjdGl2aXRpZXMnLCBzZWxlY3RlZEFjdGl2aXRpZXMpO1xuICAgICAgICAvLyBsb2NhbCBzdG9yYWdlIGZvciBwdWJsaXNoaW5nXG4gICAgICAgIHZhciBwYSA9ICgwLCBjb3JlXzEudXNlU3RvcmFnZSkoJ3Z1ZS11c2UtbG9jYWwtc3RvcmFnZScsIHtcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiAoX2IgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncHVibGlzaGluZ0FjdGl2aXRpZXMnKSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDoge30sXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgc3RhcnRCdWxrUHVibGlzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydEJ1bGtQdWJsaXNoJywgdHJ1ZSk7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdzdGFydGluZ190b19wdWJsaXNoJyk7XG4gICAgICAgICAgICBwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcyA9IHt9O1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChcImFjdGl2aXRpZXMvc3RhcnQtYnVsay1wdWJsaXNoP2FjdGl2aXRpZXM9W1wiLmNvbmNhdChzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUsIFwiXVwiKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0QnVsa1B1Ymxpc2gnLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBzdGFydFB1Ymxpc2gudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1bGtQdWJsaXNoU3RlcC52YWx1ZSA9IDE7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hBbGVydFZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHBhLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXNldFB1Ymxpc2hTdGVwKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZSA9PT0gbnVsbCB8fCByZXNwb25zZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzcG9uc2UuaW5fcHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5YnVsa1B1Ymxpc2hTdGF0dXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYnVsa1B1Ymxpc2hTdGF0dXMsIHJlc3BvbnNlLmRhdGEuYWN0aXZpdGllcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHBhLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzLCByZXNwb25zZS5kYXRhLmFjdGl2aXRpZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUJ1bGtwdWJsaXNoQWN0aXZpdGllcycsIHJlc3BvbnNlLmRhdGEuYWN0aXZpdGllcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2FuY2VsQ29uZmlybWF0aW9uTW9kYWwoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlUb2FzdChyZXNwb25zZS5tZXNzYWdlLCByZXNwb25zZS5zdWNjZXNzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBwYS52YWx1ZTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUJ1bGtQdWJsaXNoTGVuZ3RoJywgKChfYiA9IChfYSA9IHBhID09PSBudWxsIHx8IHBhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuYWN0aXZpdGllcykgJiZcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cygoX2QgPSAoX2MgPSBwYSA9PT0gbnVsbCB8fCBwYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGEudmFsdWUpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5wdWJsaXNoaW5nQWN0aXZpdGllcykgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLmFjdGl2aXRpZXMpXG4gICAgICAgICAgICAgICAgICAgIC5sZW5ndGgpO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUJ1bGtwdWJsaXNoQWN0aXZpdGllcycsIHBhID09PSBudWxsIHx8IHBhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYS52YWx1ZSk7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgLypDYW5jZWxzIG9uLWdvaW5nIGJ1bGsgcHVibGlzaCovXG4gICAgICAgIHZhciBjYW5jZWxPdGhlckJ1bGtQdWJsaXNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9ICdDYW5jZWxsaW5nIEJ1bGsgUHVibGlzaCc7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgY2xvc2VDYW5jZWxDb25maXJtYXRpb25Nb2RhbCgpO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnYWN0aXZpdGllcy9jYW5jZWwtYnVsay1wdWJsaXNoJykudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0Q2FuY2VsbGF0aW9uTWVzc2FnZShyZXMuZGF0YS5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgc2hvd0NhbmNlbGxlZERldGFpbFBvcHVwKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIC8qU2hvdyBtb2RhbCB0aGF0IHNob3dzIG51bWJlciBvZiBidWxrIHB1Ymxpc2ggY2FuY2VsbGVkICovXG4gICAgICAgIHZhciBzaG93Q2FuY2VsbGVkRGV0YWlsUG9wdXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBlcnJvckRhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgc2hvd0NhbmNlbGxlZFBvcHVwLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgLypTZXRzIG1lc3NhZ2UgaW4gbW9kYWwgdHJpZ2dlcmVkIGJ5IHNob3dDYW5jZWxsZWREZXRhaWxQb3B1cCgpICovXG4gICAgICAgIHZhciBzZXRDYW5jZWxsYXRpb25NZXNzYWdlID0gZnVuY3Rpb24gKG1zZykge1xuICAgICAgICAgICAgZXJyb3JEYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgIG1lc3NhZ2VPbkNhbmNlbGxhdGlvbi52YWx1ZSA9IG1zZztcbiAgICAgICAgfTtcbiAgICAgICAgLypDbG9zZXMgQ2FuY2VsIENvbmZpcm1hdGlvbiBQb3B1cCovXG4gICAgICAgIHZhciBjbG9zZUNhbmNlbGxlZERldGFpbHNQb3B1cCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGVycm9yRGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICBzaG93Q2FuY2VsbGVkUG9wdXAudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgLypPcGVucyBtb2RhbCB0aGF0IGFsbG93cyB0byBjYW5jZWwgZXhpc3RpbmcgYnVsayBwdWJsaXNoKi9cbiAgICAgICAgdmFyIHNob3dDYW5jZWxDb25maXJtYXRpb25Nb2RhbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dDYW5jZWxDb25maXJtYXRpb25Qb3B1cC52YWx1ZSA9IHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIC8qQ2xvc2VzIG1vZGFsIHRoYXQgYWxsb3dzIHRvIGNhbmNlbCBleGlzdGluZyBidWxrIHB1Ymxpc2gqL1xuICAgICAgICB2YXIgY2xvc2VDYW5jZWxDb25maXJtYXRpb25Nb2RhbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dDYW5jZWxDb25maXJtYXRpb25Qb3B1cC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICAvKiBUcmlnZ2VyIHRoZSBub3JtYWwgZmxvdyBvZiBidWxrIHB1Ymxpc2hpbmcgYWN0aXZpdGllcyovXG4gICAgICAgIHZhciBwdWJsaXNoQWZ0ZXJDYW5jZWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaG93Q2FuY2VsbGVkUG9wdXAudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGNoZWNrUHVibGlzaCgpO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ3BhU3RvcmFnZScsIHBhKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdidWxrUHVibGlzaFN0YXR1cycsIGJ1bGtQdWJsaXNoU3RhdHVzKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdzdGFydFB1Ymxpc2gnLCBzdGFydFB1Ymxpc2gpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgc3RvcmU6IHN0b3JlLCBwdWJsaXNoQWxlcnRWYWx1ZTogcHVibGlzaEFsZXJ0VmFsdWUsIHB1Ymxpc2hBbGVydFRvZ2dsZTogcHVibGlzaEFsZXJ0VG9nZ2xlLCBidWxrUHVibGlzaFN0ZXA6IGJ1bGtQdWJsaXNoU3RlcCwgYnVsa1B1Ymxpc2hTdGF0dXM6IGJ1bGtQdWJsaXNoU3RhdHVzLCBpc0xvYWRpbmc6IGlzTG9hZGluZywgc3RhcnRQdWJsaXNoOiBzdGFydFB1Ymxpc2gsIHB1Ymxpc2hlZDogcHVibGlzaGVkLCBsb2FkZXI6IGxvYWRlciwgbG9hZGVyVGV4dDogbG9hZGVyVGV4dCwgc2hvd0NhbmNlbENvbmZpcm1hdGlvblBvcHVwOiBzaG93Q2FuY2VsQ29uZmlybWF0aW9uUG9wdXAsIHNob3dDYW5jZWxsZWRQb3B1cDogc2hvd0NhbmNlbGxlZFBvcHVwLCBtZXNzYWdlT25DYW5jZWxsYXRpb246IG1lc3NhZ2VPbkNhbmNlbGxhdGlvbiwgcmVzZXRQdWJsaXNoU3RlcDogcmVzZXRQdWJsaXNoU3RlcCwgcG9wVXBXaWR0aENoYW5nZTogcG9wVXBXaWR0aENoYW5nZSwgZXJyb3JEYXRhOiBlcnJvckRhdGEsIGRpc3BsYXlUb2FzdDogZGlzcGxheVRvYXN0LCBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzOiBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzLCBjaGVja1B1Ymxpc2g6IGNoZWNrUHVibGlzaCwgY29yZUNvbXBsZXRlZEFjdGl2aXRpZXM6IGNvcmVDb21wbGV0ZWRBY3Rpdml0aWVzLCBjb3JlSW5Db21wbGV0ZWRBY3Rpdml0aWVzOiBjb3JlSW5Db21wbGV0ZWRBY3Rpdml0aWVzLCBwZXJtYWxpbms6IHBlcm1hbGluaywgdmVyaWZ5Q29yZUVsZW1lbnRzOiB2ZXJpZnlDb3JlRWxlbWVudHMsIHZhbGlkYXRpb25FcnJvcnM6IHZhbGlkYXRpb25FcnJvcnMsIHZhbGlkYXRlQWN0aXZpdGllczogdmFsaWRhdGVBY3Rpdml0aWVzLCBzZWxlY3RlZEFjdGl2aXRpZXM6IHNlbGVjdGVkQWN0aXZpdGllcywgcGE6IHBhLCBzdGFydEJ1bGtQdWJsaXNoOiBzdGFydEJ1bGtQdWJsaXNoLCBjYW5jZWxPdGhlckJ1bGtQdWJsaXNoOiBjYW5jZWxPdGhlckJ1bGtQdWJsaXNoLCBzaG93Q2FuY2VsbGVkRGV0YWlsUG9wdXA6IHNob3dDYW5jZWxsZWREZXRhaWxQb3B1cCwgc2V0Q2FuY2VsbGF0aW9uTWVzc2FnZTogc2V0Q2FuY2VsbGF0aW9uTWVzc2FnZSwgY2xvc2VDYW5jZWxsZWREZXRhaWxzUG9wdXA6IGNsb3NlQ2FuY2VsbGVkRGV0YWlsc1BvcHVwLCBzaG93Q2FuY2VsQ29uZmlybWF0aW9uTW9kYWw6IHNob3dDYW5jZWxDb25maXJtYXRpb25Nb2RhbCwgY2xvc2VDYW5jZWxDb25maXJtYXRpb25Nb2RhbDogY2xvc2VDYW5jZWxDb25maXJtYXRpb25Nb2RhbCwgcHVibGlzaEFmdGVyQ2FuY2VsOiBwdWJsaXNoQWZ0ZXJDYW5jZWwsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsIExvYWRlcjogUHJvZ3Jlc3NMb2FkZXJfdnVlXzEuZGVmYXVsdCwgVmFsaWRhdGlvbkVycm9yczogVmFsaWRhdGlvbkVycm9yc192dWVfMS5kZWZhdWx0LCBQYWdlTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCwgQnVsa1B1Ymxpc2hpbmdFcnJvclBvcHVwOiBCdWxrUHVibGlzaGluZ0Vycm9yUG9wdXBfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdSZWZyZXNoVG9hc3QnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG1lc3NhZ2U6IHsgdHlwZTogU3RyaW5nLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICB0eXBlOiB7IHR5cGU6IEJvb2xlYW4sIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBjbGFzc05hbWUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIGNsYXNzTmFtZS52YWx1ZSA9IHByb3BzLnR5cGVcbiAgICAgICAgICAgID8gJ2JnLW1pbnQgYm9yZGVyLXNwcmluZy0xMCdcbiAgICAgICAgICAgIDogJ2JnLWNyaW1zb24tMTAgYm9yZGVyLWNyaW1zb24tMjAnO1xuICAgICAgICB2YXIgY2xhc3NOYW1lMiA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgY2xhc3NOYW1lMi52YWx1ZSA9IHByb3BzLnR5cGVcbiAgICAgICAgICAgID8gJ3RleHQtc3ByaW5nLTUwIGhvdmVyOnRleHQtc3ByaW5nLTUwJ1xuICAgICAgICAgICAgOiAndGV4dC1jcmltc29uLTUwIGhvdmVyOnRleHQtY3JpbXNvbi01MCc7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCBwcm9wczogcHJvcHMsIGNsYXNzTmFtZTogY2xhc3NOYW1lLCBjbGFzc05hbWUyOiBjbGFzc05hbWUyIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBFcnJvckl0ZW1fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vRXJyb3JJdGVtLnZ1ZVwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1ZhbGlkYXRpb25FcnJvcnMnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgY3JpdGljYWxNZXNzYWdlID0gdHJhbnNsYXRlLmNvbW1vblRleHQoJ21lc3NhZ2UuY3JpdGljYWwnKTtcbiAgICAgICAgdmFyIHdhcm5pbmdNZXNzYWdlID0gdHJhbnNsYXRlLmNvbW1vblRleHQoJ21lc3NhZ2Uud2FybmluZycpO1xuICAgICAgICB2YXIgbm9FcnJvck1lc3NhZ2UgPSB0cmFuc2xhdGUuY29tbW9uVGV4dCgnbWVzc2FnZS5ub19lcnJvcicpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgY3JpdGljYWxNZXNzYWdlOiBjcml0aWNhbE1lc3NhZ2UsIHdhcm5pbmdNZXNzYWdlOiB3YXJuaW5nTWVzc2FnZSwgbm9FcnJvck1lc3NhZ2U6IG5vRXJyb3JNZXNzYWdlLCBFcnJvckl0ZW06IEVycm9ySXRlbV92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5RGF0ZScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICBmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZm9ybWF0KCdMTCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcywgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZSwgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlDb25kaXRpb25zJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcywgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlDb250YWN0SW5mbycsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlEZXNjcmlwdGlvbicsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnSHVtYW5pdGFyaWFuU2NvcGUnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHR5cGVzOiB0eXBlcyB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0lhdGlJZGVudGlmaWVyJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eVNlY3RvcicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHJldHVybiB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlMb2NhdGlvbicsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnT3RoZXJJZGVudGlmaWVyJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcywgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eVBhcnRpY2lwYXRpbmdPcmcnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHR5cGVzLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1BsYW5uZWREaXNidXJzZW1lbnQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTEwnKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMi5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBmb3JtYXREYXRlOiBmb3JtYXREYXRlLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgdHlwZXM6IHR5cGVzIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdQb2xpY3lNYXJrZXInLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHR5cGVzLCBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCwgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eVJlY2lwaWVudENvdW50cnknLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgZnVuY3Rpb24gcm91bmRGbG9hdChudW0pIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG51bSkudG9GaXhlZCgyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIHJvdW5kRmxvYXQ6IHJvdW5kRmxvYXQsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUmVjaXBpZW50UmVnaW9uJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIGZ1bmN0aW9uIHJvdW5kRmxvYXQobnVtKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChudW0pLnRvRml4ZWQoMik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHR5cGVzOiB0eXBlcywgcm91bmRGbG9hdDogcm91bmRGbG9hdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUmVsYXRlZEFjdGl2aXR5JyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcywgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUmVwb3J0aW5nT3JnYW5pemF0aW9uJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCB0eXBlczogdHlwZXMgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xuLy9jb21wb25lbnRzXG52YXIgTGlua192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL0xpbmsudnVlXCIpKTtcbnZhciBIYXZlTm90QWRkZWRZZXRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvSGF2ZU5vdEFkZGVkWWV0LnZ1ZVwiKSk7XG4vLyBjb21wb3NhYmxlXG52YXIgdGl0bGVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS90aXRsZVwiKSk7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlSZXN1bHQnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIE5vdFlldDogSGF2ZU5vdEFkZGVkWWV0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZpdHlJZDoge1xuICAgICAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRMYW5ndWFnZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGZvcm1hdCA9ICdNTU1NIERELCBZWVlZJztcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIHJlc3VsdERhdGEgPSBkYXRhLnZhbHVlLmNvbnRlbnQ7XG4gICAgICAgIHZhciBjdXJyZW50TGFuZ3VhZ2UgPSAnZW4nO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbW9tZW50OiBtb21lbnRfMS5kZWZhdWx0LFxuICAgICAgICAgICAgZm9ybWF0OiBmb3JtYXQsXG4gICAgICAgICAgICByZXN1bHREYXRhOiByZXN1bHREYXRhLFxuICAgICAgICAgICAgZ2V0QWN0aXZpdHlUaXRsZTogdGl0bGVfMS5kZWZhdWx0LFxuICAgICAgICAgICAgY3VycmVudExhbmd1YWdlOiBjdXJyZW50TGFuZ3VhZ2UsXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogdHJhbnNsYXRlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5U2VjdG9yJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIGZ1bmN0aW9uIHJvdW5kRmxvYXQobnVtKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChudW0pLnRvRml4ZWQoMik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHR5cGVzLCByb3VuZEZsb2F0OiByb3VuZEZsb2F0LCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eVRhZycsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5VGl0bGUnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHR5cGVzLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgTGlua192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL0xpbmsudnVlXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5VHJhbnNhY3Rpb25zJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEJ0bjogTGlua192dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbi8vY29tcG9uZW50XG52YXIgTGlua192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL0xpbmsudnVlXCIpKTtcbnZhciBQYWdlVGl0bGVfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUGFnZVRpdGxlLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xuLy9oZWxwZXJcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG52YXIgSW5kZXhfMSA9IHJlcXVpcmUoXCIuL2VsZW1lbnRzL0luZGV4XCIpO1xuLy9jb21wb3NhYmxlXG52YXIgdGl0bGVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS90aXRsZVwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdJbmRpY2F0b3JEZXRhaWwnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgVGl0bGVFbGVtZW50OiBJbmRleF8xLlRpdGxlRWxlbWVudCxcbiAgICAgICAgTWVhc3VyZTogSW5kZXhfMS5NZWFzdXJlLFxuICAgICAgICBBc2NlbmRpbmc6IEluZGV4XzEuQXNjZW5kaW5nLFxuICAgICAgICBBZ2dyZWdhdGlvblN0YXR1czogSW5kZXhfMS5BZ2dyZWdhdGlvblN0YXR1cyxcbiAgICAgICAgRGVzY3JpcHRpb246IEluZGV4XzEuRGVzY3JpcHRpb24sXG4gICAgICAgIFJlZmVyZW5jZTogSW5kZXhfMS5SZWZlcmVuY2UsXG4gICAgICAgIEJhc2VsaW5lOiBJbmRleF8xLkJhc2VsaW5lLFxuICAgICAgICBEb2N1bWVudExpbms6IEluZGV4XzEuRG9jdW1lbnRMaW5rLFxuICAgICAgICBQZXJpb2Q6IEluZGV4XzEuUGVyaW9kLFxuICAgICAgICBCdG46IExpbmtfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnZVRpdGxlOiBQYWdlVGl0bGVfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYWN0aXZpdHk6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICByZXN1bHRUaXRsZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGluZGljYXRvcjoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHBlcmlvZDoge1xuICAgICAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGVsZW1lbnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGxpbmtDbGFzc2VzID0gJ2ZsZXggaXRlbXMtY2VudGVyIHctZnVsbCBiZy13aGl0ZSByb3VuZGVkIHAtMiB0ZXh0LXNtIHRleHQtbi01MCBmb250LWJvbGQgbGVhZGluZy1ub3JtYWwgbWItMiBzaGFkb3ctZGVmYXVsdCc7XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9iID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLCBpbmRpY2F0b3IgPSBfYi5pbmRpY2F0b3IsIGFjdGl2aXR5ID0gX2IuYWN0aXZpdHksIHBlcmlvZCA9IF9iLnBlcmlvZCwgcmVzdWx0VGl0bGUgPSBfYi5yZXN1bHRUaXRsZTtcbiAgICAgICAgdmFyIHNob3dTaWRlYmFyID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcG9zaXRpb25ZID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciBzY3JlZW5XaWR0aCA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICAvL2luZGljYXRvclxuICAgICAgICB2YXIgaW5kaWNhdG9yRGF0YSA9IGluZGljYXRvci52YWx1ZS5pbmRpY2F0b3I7XG4gICAgICAgIHZhciBwZXJpb2REYXRhID0gcGVyaW9kLnZhbHVlO1xuICAgICAgICAvLyB2dWUgcHJvdmlkZXNcbiAgICAgICAgdmFyIHBhcmVudERhdGEgPSB7XG4gICAgICAgICAgICBhY3Rpdml0eTogYWN0aXZpdHkudmFsdWUuaWQsXG4gICAgICAgICAgICByZXN1bHQ6IGluZGljYXRvci52YWx1ZS5yZXN1bHRfaWQsXG4gICAgICAgICAgICBpbmRpY2F0b3I6IGluZGljYXRvci52YWx1ZS5pZCxcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdwYXJlbnREYXRhJywgcGFyZW50RGF0YSk7XG4gICAgICAgIHZhciBhY3Rpdml0eUlkID0gYWN0aXZpdHkudmFsdWUuaWQsIGFjdGl2aXR5TGluayA9IFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkKSwgcmVzdWx0SWQgPSBpbmRpY2F0b3IudmFsdWUucmVzdWx0X2lkLCBkZWZhdWx0TGFuZ3VhZ2UgPSAoX2EgPSBhY3Rpdml0eS52YWx1ZS5kZWZhdWx0X2ZpZWxkX3ZhbHVlcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxhbmd1YWdlLCBhY3Rpdml0eVRpdGxlID0gKDAsIHRpdGxlXzEuZGVmYXVsdCkoYWN0aXZpdHkudmFsdWUudGl0bGUsIGRlZmF1bHRMYW5ndWFnZSksIHJlc3VsdFRpdGxlZCA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKHJlc3VsdFRpdGxlLnZhbHVlWzBdLm5hcnJhdGl2ZSwgZGVmYXVsdExhbmd1YWdlKSwgcmVzdWx0TGluayA9IFwiXCIuY29uY2F0KGFjdGl2aXR5TGluaywgXCIvcmVzdWx0L1wiKS5jb25jYXQocmVzdWx0SWQpLCBpbmRpY2F0b3JMaW5rID0gXCIvcmVzdWx0L1wiLmNvbmNhdChyZXN1bHRJZCwgXCIvaW5kaWNhdG9yXCIpLCBpbmRpY2F0b3JUaXRsZSA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKGluZGljYXRvckRhdGEudGl0bGVbMF0ubmFycmF0aXZlLCBkZWZhdWx0TGFuZ3VhZ2UpO1xuICAgICAgICB2YXIgY2FsY1dpZHRoID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBzY3JlZW5XaWR0aC52YWx1ZSA9IGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xuICAgICAgICAgICAgaWYgKHNjcmVlbldpZHRoLnZhbHVlID4gMTAyNCkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNob3dTaWRlYmFyLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCcmVhZGNydW1iIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIHZhciBicmVhZGNydW1iRGF0YSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdHJhbnNsYXRlLnRleHRGcm9tS2V5KCdhY3Rpdml0aWVzLnlvdXJfYWN0aXZpdGllcycpLFxuICAgICAgICAgICAgICAgIGxpbms6ICcvYWN0aXZpdGllcycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBhY3Rpdml0eVRpdGxlLFxuICAgICAgICAgICAgICAgIGxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHJlc3VsdFRpdGxlZCxcbiAgICAgICAgICAgICAgICBsaW5rOiByZXN1bHRMaW5rLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaW5kaWNhdG9yVGl0bGUsXG4gICAgICAgICAgICAgICAgbGluazogJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICB2YXIgaGFuZGxlU2Nyb2xsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcG9zaXRpb25ZLnZhbHVlID0gd2luZG93LnNjcm9sbFk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgICAgICBpZiAocHJvcHMudG9hc3QubWVzc2FnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHByb3BzLnRvYXN0LnR5cGU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcHJvcHMudG9hc3QubWVzc2FnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpc3RvcFZpc2libGUgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBwb3NpdGlvblkudmFsdWUgPT09IDA7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGNXaWR0aCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNob3dTaWRlYmFyLnZhbHVlOyB9LCBmdW5jdGlvbiAoc2lkZWJhcikge1xuICAgICAgICAgICAgaWYgKHNpZGViYXIpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGlua0NsYXNzZXM6IGxpbmtDbGFzc2VzLFxuICAgICAgICAgICAgaW5kaWNhdG9yVGl0bGU6IGluZGljYXRvclRpdGxlLFxuICAgICAgICAgICAgaW5kaWNhdG9yRGF0YTogaW5kaWNhdG9yRGF0YSxcbiAgICAgICAgICAgIGFjdGl2aXR5TGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgcmVzdWx0TGluazogcmVzdWx0TGluayxcbiAgICAgICAgICAgIGluZGljYXRvckxpbms6IGluZGljYXRvckxpbmssXG4gICAgICAgICAgICBicmVhZGNydW1iRGF0YTogYnJlYWRjcnVtYkRhdGEsXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIHBlcmlvZERhdGE6IHBlcmlvZERhdGEsXG4gICAgICAgICAgICBzaG93U2lkZWJhcjogc2hvd1NpZGViYXIsXG4gICAgICAgICAgICBpc3RvcFZpc2libGU6IGlzdG9wVmlzaWJsZSxcbiAgICAgICAgICAgIGNvdW50RG9jdW1lbnRMaW5rOiB1dGlsc18xLmNvdW50RG9jdW1lbnRMaW5rLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbi8vIGNvbXBvbmVudHNcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgVGFibGVQYWdpbmF0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgRGVsZXRlQWN0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL0RlbGV0ZUFjdGlvbi52dWVcIikpO1xuLy8gY29tcG9zYWJsZVxudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbnZhciB0aXRsZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL3RpdGxlXCIpKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIi4uLy4uLy4uL2NvbXBvc2FibGUvdXRpbHNcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdJbmRpY2F0b3JMaXN0JyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEJ0bjogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2luYXRpb246IFRhYmxlUGFnaW5hdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdlVGl0bGU6IFBhZ2VUaXRsZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIERlbGV0ZUFjdGlvbjogRGVsZXRlQWN0aW9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHBhcmVudERhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBpbmRpY2F0b3JzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIF9hID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLCBhY3Rpdml0eSA9IF9hLmFjdGl2aXR5LCBwYXJlbnREYXRhID0gX2EucGFyZW50RGF0YTtcbiAgICAgICAgdmFyIGFjdGl2aXR5SWQgPSBhY3Rpdml0eS52YWx1ZS5pZCwgYWN0aXZpdHlUaXRsZSA9IGFjdGl2aXR5LnZhbHVlLnRpdGxlLCBhY3Rpdml0eUxpbmsgPSBcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCksIHJlc3VsdElkID0gcGFyZW50RGF0YS52YWx1ZS5yZXN1bHQuaWQsIHJlc3VsdFRpdGxlID0gKDAsIHRpdGxlXzEuZGVmYXVsdCkocGFyZW50RGF0YS52YWx1ZS5yZXN1bHQudGl0bGUsICdlbicpLCByZXN1bHRMaW5rID0gXCJcIi5jb25jYXQoYWN0aXZpdHlMaW5rLCBcIi9yZXN1bHQvXCIpLmNvbmNhdChyZXN1bHRJZCksIGluZGljYXRvckxpbmsgPSBcIi9yZXN1bHQvXCIuY29uY2F0KHJlc3VsdElkLCBcIi9pbmRpY2F0b3JcIik7XG4gICAgICAgIHZhciBpbmRpY2F0b3JzRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgaXNFbXB0eSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogQnJlYWRjcnVtYiBkYXRhXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgYnJlYWRjcnVtYkRhdGEgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRyYW5zbGF0ZS50ZXh0RnJvbUtleSgnYWN0aXZpdGllcy55b3VyX2FjdGl2aXRpZXMnKSxcbiAgICAgICAgICAgICAgICBsaW5rOiAnL2FjdGl2aXRpZXMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogKDAsIHRpdGxlXzEuZGVmYXVsdCkoYWN0aXZpdHlUaXRsZSwgJ2VuJyksXG4gICAgICAgICAgICAgICAgbGluazogXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcmVzdWx0VGl0bGUsXG4gICAgICAgICAgICAgICAgbGluazogXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQsIFwiL3Jlc3VsdC9cIikuY29uY2F0KHJlc3VsdElkKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdpbmRpY2F0b3JfbGlzdCcpLFxuICAgICAgICAgICAgICAgIGxpbms6ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvcmVzdWx0L1wiLmNvbmNhdChyZXN1bHRJZCwgXCIvaW5kaWNhdG9ycy9wYWdlLzFcIikpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihpbmRpY2F0b3JzRGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSByZXNwb25zZS5kYXRhLmRhdGEubGVuZ3RoID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChwcm9wcy50b2FzdC5tZXNzYWdlICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHByb3BzLnRvYXN0LnR5cGU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBwcm9wcy50b2FzdC5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICBmdW5jdGlvbiBoYW5kbGVOYXZpZ2F0ZShwYXRoKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZmV0Y2hMaXN0aW5ncyhhY3RpdmVfcGFnZSkge1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChcIi9yZXN1bHQvXCIuY29uY2F0KHJlc3VsdElkLCBcIi9pbmRpY2F0b3JzL3BhZ2UvXCIpICsgYWN0aXZlX3BhZ2UpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oaW5kaWNhdG9yc0RhdGEsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSByZXNwb25zZS5kYXRhID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcHJvdmlkZVxuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3BhcmVudEl0ZW1JZCcsIHJlc3VsdElkKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFjdGl2aXR5SWQ6IGFjdGl2aXR5SWQsXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGluZGljYXRvcnNEYXRhOiBpbmRpY2F0b3JzRGF0YSxcbiAgICAgICAgICAgIGdldEFjdGl2aXR5VGl0bGU6IHRpdGxlXzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGZldGNoTGlzdGluZ3M6IGZldGNoTGlzdGluZ3MsXG4gICAgICAgICAgICByZXN1bHRMaW5rOiByZXN1bHRMaW5rLFxuICAgICAgICAgICAgaW5kaWNhdG9yTGluazogaW5kaWNhdG9yTGluayxcbiAgICAgICAgICAgIGJyZWFkY3J1bWJEYXRhOiBicmVhZGNydW1iRGF0YSxcbiAgICAgICAgICAgIHRvYXN0RGF0YTogdG9hc3REYXRhLFxuICAgICAgICAgICAgcmVzdWx0SWQ6IHJlc3VsdElkLFxuICAgICAgICAgICAgaGFuZGxlTmF2aWdhdGU6IGhhbmRsZU5hdmlnYXRlLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBtZXRob2RzOiB7IHNuYWtlQ2FzZVRvU2VudGVuY2VDYXNlOiB1dGlsc18xLnNuYWtlQ2FzZVRvU2VudGVuY2VDYXNlLCBjcmVhdGVDYXBpdGFsaXplZFNlbnRlbmNlOiB1dGlsc18xLmNyZWF0ZUNhcGl0YWxpemVkU2VudGVuY2UgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yQWdncmVnYXRpb25TdGF0dXMnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBzdGF0dXNEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgc3RhdHVzRGF0YTogc3RhdHVzRGF0YSwgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgSW5kZXhfMSA9IHJlcXVpcmUoXCIuL0luZGV4XCIpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0luZGljYXRvckJhc2VsaW5lJyxcbiAgICBjb21wb25lbnRzOiB7IERvY3VtZW50TGluazogSW5kZXhfMS5Eb2N1bWVudExpbmsgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBBcnJheSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBiYXNlVHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBlbGVtZW50U3BhY2luZyA9ICdtYi0xJztcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgYmFzZWxpbmUgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgbG9jYXRpb24gPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgdmFyIGxvY2F0aW9ucyA9IFtdO1xuICAgICAgICAgICAgbG9jYXRpb25zID0gZGF0YS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5yZWZlcmVuY2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciBsYXN0TG9jYXRpb24gPSBsb2NhdGlvbnMuc2xpY2UoLTEpWzBdO1xuICAgICAgICAgICAgbG9jYXRpb25zID0gbG9jYXRpb25zLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgICAgIGlmIChsb2NhdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAobG9jYXRpb25zLmpvaW4oJywgJykgK1xuICAgICAgICAgICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGUuc3RpY2t5VGV4dCgnYW5kJywgJ2NvbW1vbicpICtcbiAgICAgICAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgICAgICAgbGFzdExvY2F0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBsYXN0TG9jYXRpb247XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGdW5jdGlvbiB0byByZXR1cm4gZGltZW5zaW9ucyBvZiBiYXNlbGluZVxuICAgICAgICAgKiBAcGFyYW0gZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGRpbWVuc2lvbnMgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgdmFyIGRpbWVuc2lvbnMgPSBbXTtcbiAgICAgICAgICAgIGRpbWVuc2lvbnMgPSBkYXRhLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgdmFyIG5hbWUgPSAoX2EgPSBpdGVtLm5hbWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHRyYW5zbGF0ZS5taXNzaW5nKCksIHZhbHVlID0gKF9iID0gaXRlbS52YWx1ZSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogdHJhbnNsYXRlLm1pc3NpbmcoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJcIi5jb25jYXQodHJhbnNsYXRlLmNvbW1vblRleHQoJ2NvZGUnKSwgXCIgLSBcIikuY29uY2F0KG5hbWUsIFwiLCBcIikuY29uY2F0KHRyYW5zbGF0ZS5jb21tb25UZXh0KCd2YWx1ZScpLCBcIiAtIChcIikuY29uY2F0KHZhbHVlLCBcIilcIik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBkaW1lbnNpb25zLmpvaW4oJzsgJyk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBiYXNlbGluZTogYmFzZWxpbmUsXG4gICAgICAgICAgICBsb2NhdGlvbjogbG9jYXRpb24sXG4gICAgICAgICAgICBkaW1lbnNpb25zOiBkaW1lbnNpb25zLFxuICAgICAgICAgICAgZWxlbWVudFNwYWNpbmc6IGVsZW1lbnRTcGFjaW5nLFxuICAgICAgICAgICAgY291bnREb2N1bWVudExpbms6IHV0aWxzXzEuY291bnREb2N1bWVudExpbmssXG4gICAgICAgICAgICB0cmFuc2xhdGU6IHRyYW5zbGF0ZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdJbmRpY2F0b3JEZXNjcmlwdGlvbicsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlc2NUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgZGVzY3JpcHRpb25EYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgZGVzY3JpcHRpb25EYXRhOiBkZXNjcmlwdGlvbkRhdGEsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuLy9jb21wb3NhYmxlXG52YXIgdGl0bGVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS90aXRsZVwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdJbmRpY2F0b3JEb2N1bWVudExpbmsnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBhbGlnbm1lbnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICdjZW50ZXInLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBkbERhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4geyBkbERhdGE6IGRsRGF0YSwgZ2V0QWN0aXZpdHlUaXRsZTogdGl0bGVfMS5kZWZhdWx0LCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0luZGljYXRvckFzY2VuZGluZycsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHJldHVybiB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yTWVhc3VyZScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG1lYXN1cmVUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgbWVhc3VyZURhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4geyBtZWFzdXJlRGF0YTogbWVhc3VyZURhdGEsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbnZhciBMaW5rX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvTGluay52dWVcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yUGVyaW9kJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEJ0bjogTGlua192dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBpZCA9ICgwLCB2dWVfMS5pbmplY3QpKCdwYXJlbnREYXRhJyk7XG4gICAgICAgIHJldHVybiB7IGlkOiBpZCwgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yUmVmZXJlbmNlJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVmVHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIHJlZkRhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4geyByZWZEYXRhOiByZWZEYXRhLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0luZGljYXRvclRpdGxlJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdGl0bGVUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgdGl0bGVEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgdGl0bGVEYXRhOiB0aXRsZURhdGEsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIGNvcmVFbGVtZW50c18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvY29yZUVsZW1lbnRzXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdBY3Rpdml0aWVzRWxlbWVudHMnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBhY3Rpdml0eUlkOiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzIudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGRyb3Bkb3duID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIGRyb3Bkb3duQnRuID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIF9iID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIHNlYXJjaEJ0blZhbHVlID0gX2JbMF0sIHNlYXJjaEJ0blRvZ2dsZSA9IF9iWzFdO1xuICAgICAgICAvKipcbiAgICAgICAgICogU2VhcmNoIGZ1bmN0aW9uYWxpdHlcbiAgICAgICAgICovXG4gICAgICAgIHZhciBlbGVtZW50cyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgc2VhcmNoOiAnJyxcbiAgICAgICAgICAgIHN0YXR1czogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZWxlbWVudEljb25zID0ge1xuICAgICAgICAgICAgY29tcGxldGVkOiAnZG91YmxlLXRpY2snLFxuICAgICAgICAgICAgbm90X2NvbXBsZXRlZDogJ3JlZC1jcm9zcycsXG4gICAgICAgICAgICBjb3JlOiAnY29yZScsXG4gICAgICAgIH07XG4gICAgICAgIHZhciBhc0FycmF5RGF0YSA9IE9iamVjdC5lbnRyaWVzKGRhdGEudmFsdWUpO1xuICAgICAgICB2YXIgZmlsdGVyZWRFbGVtZW50cyA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGZpbHRlcmVkID0gYXNBcnJheURhdGEuZmlsdGVyKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBfYVswXSwgdmFsdWUgPSBfYVsxXTtcbiAgICAgICAgICAgICAgICBpZiAoIWVsZW1lbnRzLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAuZWxlbWVudChrZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKGVsZW1lbnRzLnNlYXJjaC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoJ18nLCAnJykucmVwbGFjZSgnLScsICdfJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlW2VsZW1lbnRzLnN0YXR1c10pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhlbGVtZW50cy5zZWFyY2gudG9Mb3dlckNhc2UoKS5yZXBsYWNlKCdfJywgJycpLnJlcGxhY2UoJy0nLCAnXycpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIGp1c3RTdHJpbmdzID0gT2JqZWN0LmZyb21FbnRyaWVzKGZpbHRlcmVkKTtcbiAgICAgICAgICAgIHJldHVybiBqdXN0U3RyaW5ncztcbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBZGRpbmcgY29yZSBkYXRhXG4gICAgICAgICAqL1xuICAgICAgICBPYmplY3Qua2V5cyhkYXRhLnZhbHVlKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgaWYgKCgwLCBjb3JlRWxlbWVudHNfMS5hY3Rpdml0eUNvcmVFbGVtZW50cykoKS5pbmNsdWRlcyhrZXkudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICAgICAgICBkYXRhLnZhbHVlW2tleV1bJ2NvcmUnXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZHJvcGRvd25GaWx0ZXIgPSBmdW5jdGlvbiAocykge1xuICAgICAgICAgICAgZWxlbWVudHMuc3RhdHVzID0gcztcbiAgICAgICAgICAgIHNlYXJjaEJ0blRvZ2dsZSgpO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIGlmICghZHJvcGRvd25CdG4udmFsdWUuY29udGFpbnMoZS50YXJnZXQpICYmXG4gICAgICAgICAgICAgICAgICAgICFkcm9wZG93bi52YWx1ZS5jb250YWlucyhlLnRhcmdldCkgJiZcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoQnRuVmFsdWUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoQnRuVG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBmdW5jdGlvbiBnZXRMaW5rKGhhc19kYXRhLCBpbmRleCkge1xuICAgICAgICAgICAgaWYgKGhhc19kYXRhKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiI1wiLmNvbmNhdChpbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpbmRleCA9PSAncmVzdWx0JyB8fCBpbmRleCA9PSAndHJhbnNhY3Rpb25zJykge1xuICAgICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gaW5kZXggPT0gJ3Jlc3VsdCcgPyAncmVzdWx0JyA6ICd0cmFuc2FjdGlvbic7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiL2FjdGl2aXR5L1wiLmNvbmNhdChwcm9wcy5hY3Rpdml0eUlkLCBcIi9cIikuY29uY2F0KGVsZW1lbnQsIFwiL2NyZWF0ZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBcIi9hY3Rpdml0eS9cIi5jb25jYXQocHJvcHMuYWN0aXZpdHlJZCwgXCIvXCIpLmNvbmNhdChpbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHByb3BzOiBwcm9wcywgZGF0YTogZGF0YSwgZHJvcGRvd246IGRyb3Bkb3duLCBkcm9wZG93bkJ0bjogZHJvcGRvd25CdG4sIHNlYXJjaEJ0blZhbHVlOiBzZWFyY2hCdG5WYWx1ZSwgc2VhcmNoQnRuVG9nZ2xlOiBzZWFyY2hCdG5Ub2dnbGUsIGVsZW1lbnRzOiBlbGVtZW50cywgZWxlbWVudEljb25zOiBlbGVtZW50SWNvbnMsIGFzQXJyYXlEYXRhOiBhc0FycmF5RGF0YSwgZmlsdGVyZWRFbGVtZW50czogZmlsdGVyZWRFbGVtZW50cywgZHJvcGRvd25GaWx0ZXI6IGRyb3Bkb3duRmlsdGVyLCBnZXRMaW5rOiBnZXRMaW5rLCBhY3Rpdml0eUNvcmVFbGVtZW50czogY29yZUVsZW1lbnRzXzEuYWN0aXZpdHlDb3JlRWxlbWVudHMgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciB2dWVfMyA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZUVsZW1lbnRzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS9jb3JlRWxlbWVudHNcIik7XG4vL2NvbXBvbmVudHNcbnZhciBJbmRleF8xID0gcmVxdWlyZShcIkFjdGl2aXR5L2VsZW1lbnRzL0luZGV4XCIpO1xudmFyIExpbmtfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZVwiKSk7XG52YXIgRWxlbWVudFN0YXR1c192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zdGF0dXMvRWxlbWVudFN0YXR1cy52dWVcIikpO1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0FjdGl2aXR5RWxlbWVudCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGl2aXR5SWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0aXRsZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHdhcm5pbmdJbmZvVGV4dDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgX2IgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgZGVsZXRlVmFsdWUgPSBfYlswXSwgZGVsZXRlVG9nZ2xlID0gX2JbMV07XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgLy8gY2FsbCBhcGkgZm9yIHB1Ymxpc2hpbmdcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMi5pbmplY3QpKCd0b2FzdERhdGEnKTtcbiAgICAgICAgdmFyIGxheW91dCA9ICdiYXNpcy1mdWxsICBsZzpiYXNpcy02LzEyJztcbiAgICAgICAgaWYgKHByb3BzLndpZHRoID09PSAnZnVsbCcpIHtcbiAgICAgICAgICAgIGxheW91dCA9ICdiYXNpcy1mdWxsJztcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZm9ybWF0KCdMTCcpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHJvdW5kRmxvYXQobnVtKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChudW0pLnRvRml4ZWQoMik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRlbGV0ZUFjdGl2aXR5RWxlbWVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRlbGV0ZVZhbHVlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgZnVuY3Rpb24gZGVsZXRlRWxlbWVudChpZCwgZWxlbWVudCkge1xuICAgICAgICAgICAgZGVsZXRlVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5kZWxldGUoXCIvYXBpL2FjdGl2aXR5L1wiLmNvbmNhdChpZCwgXCIvXCIpLmNvbmNhdChlbGVtZW50KSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgICAgICB9LCAzMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcmVzcG9uc2Uuc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gdHJhbnNsYXRlLmNvbW1vblRleHQoJ2NvdWxkbnRfZGVsZXRlX3RoZV9hY3Rpdml0eScpO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgZGVsZXRlVmFsdWU6IGRlbGV0ZVZhbHVlLCBkZWxldGVUb2dnbGU6IGRlbGV0ZVRvZ2dsZSwgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHByb3BzOiBwcm9wcywgdG9hc3REYXRhOiB0b2FzdERhdGEsIGxheW91dDogbGF5b3V0LCBmb3JtYXREYXRlOiBmb3JtYXREYXRlLCByb3VuZEZsb2F0OiByb3VuZEZsb2F0LCBkZWxldGVBY3Rpdml0eUVsZW1lbnQ6IGRlbGV0ZUFjdGl2aXR5RWxlbWVudCwgZGVsZXRlRWxlbWVudDogZGVsZXRlRWxlbWVudCwgY2FwaXRhbGl6ZTogdnVlXzMuY2FwaXRhbGl6ZSwgYWN0aXZpdHlDb3JlRWxlbWVudHM6IGNvcmVFbGVtZW50c18xLmFjdGl2aXR5Q29yZUVsZW1lbnRzLCBBY3Rpdml0eURhdGU6IEluZGV4XzEuQWN0aXZpdHlEYXRlLCBDb25kaXRpb25zOiBJbmRleF8xLkNvbmRpdGlvbnMsIENvbnRhY3RJbmZvOiBJbmRleF8xLkNvbnRhY3RJbmZvLCBEZXNjcmlwdGlvbjogSW5kZXhfMS5EZXNjcmlwdGlvbiwgSHVtYW5pdGFyaWFuU2NvcGU6IEluZGV4XzEuSHVtYW5pdGFyaWFuU2NvcGUsIElhdGlJZGVudGlmaWVyOiBJbmRleF8xLklhdGlJZGVudGlmaWVyLCBMZWdhY3lEYXRhOiBJbmRleF8xLkxlZ2FjeURhdGEsIExvY2F0aW9uOiBJbmRleF8xLkxvY2F0aW9uLCBPdGhlcklkZW50aWZpZXI6IEluZGV4XzEuT3RoZXJJZGVudGlmaWVyLCBQYXJ0aWNpcGF0aW5nT3JnOiBJbmRleF8xLlBhcnRpY2lwYXRpbmdPcmcsIFBsYW5uZWREaXNidXJzZW1lbnQ6IEluZGV4XzEuUGxhbm5lZERpc2J1cnNlbWVudCwgUG9saWN5TWFya2VyOiBJbmRleF8xLlBvbGljeU1hcmtlciwgUmVjaXBpZW50Q291bnRyeTogSW5kZXhfMS5SZWNpcGllbnRDb3VudHJ5LCBSZWNpcGllbnRSZWdpb246IEluZGV4XzEuUmVjaXBpZW50UmVnaW9uLCBSZWxhdGVkQWN0aXZpdHk6IEluZGV4XzEuUmVsYXRlZEFjdGl2aXR5LCBSZXBvcnRpbmdPcmdhbml6YXRpb246IEluZGV4XzEuUmVwb3J0aW5nT3JnYW5pemF0aW9uLCBTZWN0b3I6IEluZGV4XzEuU2VjdG9yLCBUYWc6IEluZGV4XzEuVGFnLCBUaXRsZUVsZW1lbnQ6IEluZGV4XzEuVGl0bGVFbGVtZW50LCBUcmFuc2FjdGlvbnM6IEluZGV4XzEuVHJhbnNhY3Rpb25zLCBCdG46IExpbmtfdnVlXzEuZGVmYXVsdCwgU3RhdHVzOiBFbGVtZW50U3RhdHVzX3Z1ZV8xLmRlZmF1bHQsIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIENyZWF0ZU1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi9DcmVhdGVNb2RhbC52dWVcIikpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBZGRBY3Rpdml0eUJ1dHRvbicsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBDcmVhdGVNb2RhbDogQ3JlYXRlTW9kYWxfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHN0YXRlID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBpc1Zpc2libGU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9hID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIG1vZGFsVmFsdWUgPSBfYVswXSwgbW9kYWxUb2dnbGUgPSBfYVsxXTtcbiAgICAgICAgdmFyIG1vZGVsVmlzaWJsZSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvZ2dsZU1vZGVsID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBtb2RlbFZpc2libGUudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGxpQ2xhc3MgPSAnYmxvY2sgcC0yLjUgdGV4dC1uLTQwIHRleHQtdGlueSBsZWFkaW5nLVsxLjVdIGZvbnQtYm9sZCBob3Zlcjp0ZXh0LW4tNTAgaG92ZXI6Ymctbi0xMCc7XG4gICAgICAgIHZhciBkcm9wZG93bkJ0biA9ICgwLCB2dWVfMS5yZWYpKCk7XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFkcm9wZG93bkJ0bi52YWx1ZS5jb250YWlucyhlLnRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuaXNWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdG9nZ2xlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3RhdGUuaXNWaXNpYmxlID0gIXN0YXRlLmlzVmlzaWJsZTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgIGxpQ2xhc3M6IGxpQ2xhc3MsXG4gICAgICAgICAgICBtb2RlbFZpc2libGU6IG1vZGVsVmlzaWJsZSxcbiAgICAgICAgICAgIG1vZGFsVmFsdWU6IG1vZGFsVmFsdWUsXG4gICAgICAgICAgICB0b2dnbGU6IHRvZ2dsZSxcbiAgICAgICAgICAgIG1vZGFsVG9nZ2xlOiBtb2RhbFRvZ2dsZSxcbiAgICAgICAgICAgIHRvZ2dsZU1vZGVsOiB0b2dnbGVNb2RlbCxcbiAgICAgICAgICAgIGRyb3Bkb3duQnRuOiBkcm9wZG93bkJ0bixcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogdHJhbnNsYXRlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgQ3JlYXRlTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uL0NyZWF0ZU1vZGFsLnZ1ZVwiKSk7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uLy4uL2NvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbi8qKlxuICogIEdsb2JhbCBTdGF0ZVxuICovXG52YXIgc3RvcmUgPSAoMCwgaW5kZXhfMS51c2VTdG9yZSkoKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWRkQWN0aXZpdHlCdXR0b24nLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgQ3JlYXRlTW9kYWw6IENyZWF0ZU1vZGFsX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgTW9kYWw6IFBvcHVwTW9kYWxfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHN0YXRlID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBpc1Zpc2libGU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9hID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIG1vZGFsVmFsdWUgPSBfYVswXSwgbW9kYWxUb2dnbGUgPSBfYVsxXTtcbiAgICAgICAgdmFyIG1vZGVsVmlzaWJsZSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvYXN0VmlzaWJpbGl0eSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMS5yZWYpKCcnKTtcbiAgICAgICAgdmFyIHRvYXN0bWVzc2FnZVR5cGUgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93RXJyb3Jwb3B1cCA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIG1lc3NhZ2UgPSAoMCwgdnVlXzEucmVmKSgnJyk7XG4gICAgICAgIHZhciBkb3dubG9hZGluZ0JhY2tncm91bmRNZXNzYWdlID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZG93bmxvYWRpbmdJblByb2Nlc3MgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBpc0xvYWRpbmcgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2dnbGVNb2RlbCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgbW9kZWxWaXNpYmxlLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBsaUNsYXNzID0gJ2Jsb2NrIHAtMi41IHRleHQtbi00MCB0ZXh0LXRpbnkgbGVhZGluZy1bMS41XSBmb250LWJvbGQgaG92ZXI6dGV4dC1uLTUwIGhvdmVyOmJnLW4tMTAnO1xuICAgICAgICB2YXIgZHJvcGRvd25CdG4gPSAoMCwgdnVlXzEucmVmKSgpO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIGlmICghZHJvcGRvd25CdG4udmFsdWUuY29udGFpbnMoZS50YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gZG93bmxvYWRFcnJvcihmaWxlbmFtZSwgdGV4dCkge1xuICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnaHJlZicsICdkYXRhOnRleHQvcGxhaW47Y2hhcnNldD11dGYtOCwnICsgZW5jb2RlVVJJQ29tcG9uZW50KHRleHQpKTtcbiAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICBlbGVtZW50LmNsaWNrKCk7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0b2dnbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzdGF0ZS5pc1Zpc2libGUgPSAhc3RhdGUuaXNWaXNpYmxlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2hlY2tEb3dubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlzTG9hZGluZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvYWN0aXZpdGllcy9kb3dubG9hZC14bHMtcHJvZ3Jlc3Mtc3RhdHVzJykudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRpbmdJblByb2Nlc3MudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGRvd25sb2FkaW5nQmFja2dyb3VuZE1lc3NhZ2UudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZG93bmxvYWRBbnl3YXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQ2FuY2VsRG93bmxvYWQnLCB0cnVlKTtcbiAgICAgICAgICAgIGlzTG9hZGluZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBkb3dubG9hZGluZ0luUHJvY2Vzcy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUNhbmNlbERvd25sb2FkJywgdHJ1ZSk7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRYbHNEb3dubG9hZCcsIGZhbHNlKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9hY3Rpdml0aWVzL2NhbmNlbC14bHMtZG93bmxvYWQnKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBjaGVja0Rvd25sb2FkKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGRvd25sb2FkRXJyb3J4bWwgPSBmdW5jdGlvbiAoY291bnRBY3Rpdml0aWVzKSB7XG4gICAgICAgICAgICBzaG93RXJyb3Jwb3B1cC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIHF1ZXJ5UGFyYW1ldGVycyA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCc/Jyk7XG4gICAgICAgICAgICB2YXIgYWRkUXVlcnlQYXJhbXMgPSAnJztcbiAgICAgICAgICAgIGlmIChxdWVyeVBhcmFtZXRlcnMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgYWRkUXVlcnlQYXJhbXMgPSAnJicgKyBxdWVyeVBhcmFtZXRlcnNbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgYXBpVXJsID0gJy9hY3Rpdml0aWVzL2Rvd25sb2FkLXhtbC90cnVlP2FjdGl2aXRpZXM9YWxsJyArIGFkZFF1ZXJ5UGFyYW1zO1xuICAgICAgICAgICAgaWYgKGNvdW50QWN0aXZpdGllcyA+IDApIHtcbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZpdGllcyA9IHN0b3JlLnN0YXRlLnNlbGVjdGVkQWN0aXZpdGllcy5qb2luKCcsJyk7XG4gICAgICAgICAgICAgICAgYXBpVXJsID0gXCIvYWN0aXZpdGllcy9kb3dubG9hZC14bWwvdHJ1ZT9hY3Rpdml0aWVzPVtcIi5jb25jYXQoYWN0aXZpdGllcywgXCJdXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChhcGlVcmwpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3VjY2VzcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudmFsdWUgPSByZXMuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdG1lc3NhZ2VUeXBlLnZhbHVlID0gcmVzLmRhdGEuc3VjY2VzcztcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiAodG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2UpOyB9LCAxNTAwMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2VdLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24veG1sJyxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IChfYSA9IHJlcy5oZWFkZXJzWydjb250ZW50LWRpc3Bvc2l0aW9uJ10pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zcGxpdCgnPScpWzFdO1xuICAgICAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBkb3dubG9hZFhtbCA9IGZ1bmN0aW9uIChjb3VudEFjdGl2aXRpZXMpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHZhciBxdWVyeVBhcmFtZXRlcnMgPSAoX2EgPSB3aW5kb3cubG9jYXRpb24uaHJlZikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNwbGl0KCc/Jyk7XG4gICAgICAgICAgICB2YXIgYWRkUXVlcnlQYXJhbXMgPSAnJztcbiAgICAgICAgICAgIGlmIChxdWVyeVBhcmFtZXRlcnMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgYWRkUXVlcnlQYXJhbXMgPSAnJicgKyBxdWVyeVBhcmFtZXRlcnNbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgYXBpVXJsID0gJy9hY3Rpdml0aWVzL2Rvd25sb2FkLXhtbD9hY3Rpdml0aWVzPWFsbCcgKyBhZGRRdWVyeVBhcmFtcztcbiAgICAgICAgICAgIGlmIChjb3VudEFjdGl2aXRpZXMgPiAwKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFjdGl2aXRpZXMgPSBzdG9yZS5zdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXMuam9pbignLCcpO1xuICAgICAgICAgICAgICAgIGFwaVVybCA9IFwiL2FjdGl2aXRpZXMvZG93bmxvYWQteG1sP2FjdGl2aXRpZXM9W1wiLmNvbmNhdChhY3Rpdml0aWVzLCBcIl1cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KGFwaVVybCkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdWNjZXNzID09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS54bWxfZXJyb3IgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dFcnJvcnBvcHVwLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UudmFsdWUgPSByZXMuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2FzdG1lc3NhZ2VUeXBlLnZhbHVlID0gcmVzLmRhdGEuc3VjY2VzcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKTsgfSwgMTUwMDApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2VdLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24veG1sJyxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IChfYSA9IHJlcy5oZWFkZXJzWydjb250ZW50LWRpc3Bvc2l0aW9uJ10pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zcGxpdCgnPScpWzFdO1xuICAgICAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBkb3dubG9hZFhscyA9IGZ1bmN0aW9uIChjb3VudEFjdGl2aXRpZXMpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGlzTG9hZGluZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRYbHNEb3dubG9hZCcsIHRydWUpO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUNhbmNlbERvd25sb2FkJywgZmFsc2UpO1xuICAgICAgICAgICAgZG93bmxvYWRpbmdCYWNrZ3JvdW5kTWVzc2FnZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIHF1ZXJ5UGFyYW1ldGVycyA9IChfYSA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3BsaXQoJz8nKTtcbiAgICAgICAgICAgIHZhciBhZGRRdWVyeVBhcmFtcyA9ICcnO1xuICAgICAgICAgICAgaWYgKHF1ZXJ5UGFyYW1ldGVycy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICBhZGRRdWVyeVBhcmFtcyA9ICcmJyArIHF1ZXJ5UGFyYW1ldGVyc1sxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBhcGlVcmwgPSAnL2FjdGl2aXRpZXMvcHJlcGFyZS14bHM/YWN0aXZpdGllcz1hbGwnICsgYWRkUXVlcnlQYXJhbXM7XG4gICAgICAgICAgICBpZiAoY291bnRBY3Rpdml0aWVzID4gMCkge1xuICAgICAgICAgICAgICAgIHZhciBhY3Rpdml0aWVzID0gc3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzLmpvaW4oJywnKTtcbiAgICAgICAgICAgICAgICBhcGlVcmwgPSBcIi9hY3Rpdml0aWVzL3ByZXBhcmUteGxzP2FjdGl2aXRpZXM9W1wiLmNvbmNhdChhY3Rpdml0aWVzLCBcIl1cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KGFwaVVybCkuZmluYWxseShmdW5jdGlvbiAoKSB7IHJldHVybiAoaXNMb2FkaW5nLnZhbHVlID0gZmFsc2UpOyB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGRvd25sb2FkQ3N2ID0gZnVuY3Rpb24gKGNvdW50QWN0aXZpdGllcykge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdmFyIHF1ZXJ5UGFyYW1ldGVycyA9IChfYSA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3BsaXQoJz8nKTtcbiAgICAgICAgICAgIHZhciBhZGRRdWVyeVBhcmFtcyA9ICcnO1xuICAgICAgICAgICAgaWYgKHF1ZXJ5UGFyYW1ldGVycy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICBhZGRRdWVyeVBhcmFtcyA9ICcmJyArIHF1ZXJ5UGFyYW1ldGVyc1sxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBhcGlVcmwgPSAnL2FjdGl2aXRpZXMvZG93bmxvYWQtY3N2P2FjdGl2aXRpZXM9YWxsJyArIGFkZFF1ZXJ5UGFyYW1zO1xuICAgICAgICAgICAgaWYgKGNvdW50QWN0aXZpdGllcyA+IDApIHtcbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZpdGllcyA9IHN0b3JlLnN0YXRlLnNlbGVjdGVkQWN0aXZpdGllcy5qb2luKCcsJyk7XG4gICAgICAgICAgICAgICAgYXBpVXJsID0gXCIvYWN0aXZpdGllcy9kb3dubG9hZC1jc3Y/YWN0aXZpdGllcz1bXCIuY29uY2F0KGFjdGl2aXRpZXMsIFwiXVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoYXBpVXJsKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gcmVzLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3RtZXNzYWdlVHlwZS52YWx1ZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKTsgfSwgMTUwMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2NzdicsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSAoX2EgPSByZXMuaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3BsaXQoJz0nKVsxXTtcbiAgICAgICAgICAgICAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3RvcmU6IHN0b3JlLFxuICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgbGlDbGFzczogbGlDbGFzcyxcbiAgICAgICAgICAgIG1vZGVsVmlzaWJsZTogbW9kZWxWaXNpYmxlLFxuICAgICAgICAgICAgbW9kYWxWYWx1ZTogbW9kYWxWYWx1ZSxcbiAgICAgICAgICAgIHRvZ2dsZTogdG9nZ2xlLFxuICAgICAgICAgICAgbW9kYWxUb2dnbGU6IG1vZGFsVG9nZ2xlLFxuICAgICAgICAgICAgdG9nZ2xlTW9kZWw6IHRvZ2dsZU1vZGVsLFxuICAgICAgICAgICAgZHJvcGRvd25CdG46IGRyb3Bkb3duQnRuLFxuICAgICAgICAgICAgZG93bmxvYWRDc3Y6IGRvd25sb2FkQ3N2LFxuICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5OiB0b2FzdFZpc2liaWxpdHksXG4gICAgICAgICAgICBkb3dubG9hZGluZ0JhY2tncm91bmRNZXNzYWdlOiBkb3dubG9hZGluZ0JhY2tncm91bmRNZXNzYWdlLFxuICAgICAgICAgICAgdG9hc3RNZXNzYWdlOiB0b2FzdE1lc3NhZ2UsXG4gICAgICAgICAgICB0b2FzdG1lc3NhZ2VUeXBlOiB0b2FzdG1lc3NhZ2VUeXBlLFxuICAgICAgICAgICAgZG93bmxvYWRYbWw6IGRvd25sb2FkWG1sLFxuICAgICAgICAgICAgTW9kYWw6IFBvcHVwTW9kYWxfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgICAgIHNob3dFcnJvcnBvcHVwOiBzaG93RXJyb3Jwb3B1cCxcbiAgICAgICAgICAgIGNoZWNrRG93bmxvYWQ6IGNoZWNrRG93bmxvYWQsXG4gICAgICAgICAgICBkb3dubG9hZEVycm9yeG1sOiBkb3dubG9hZEVycm9yeG1sLFxuICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgICAgICAgIGRvd25sb2FkRXJyb3I6IGRvd25sb2FkRXJyb3IsXG4gICAgICAgICAgICBkb3dubG9hZFhsczogZG93bmxvYWRYbHMsXG4gICAgICAgICAgICBkb3dubG9hZGluZ0luUHJvY2VzczogZG93bmxvYWRpbmdJblByb2Nlc3MsXG4gICAgICAgICAgICBpc0xvYWRpbmc6IGlzTG9hZGluZyxcbiAgICAgICAgICAgIGRvd25sb2FkQW55d2F5OiBkb3dubG9hZEFueXdheSxcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogdHJhbnNsYXRlLFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgbWV0aG9kczogeyBjYXBpdGFsaXplOiB2dWVfMS5jYXBpdGFsaXplIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uLy4uL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdFbGVtZW50Tm90ZScsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICByZXR1cm4geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBBZGRBY3Rpdml0eUJ1dHRvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9BZGRBY3Rpdml0eUJ1dHRvbi52dWVcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnRW1wdHlBY3Rpdml0eScsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBBY3Rpdml0eUJ1dHRvbjogQWRkQWN0aXZpdHlCdXR0b25fdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHN0YXRlID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBkaXNtaXNzOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHsgc3RhdGU6IHN0YXRlLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgRG93bmxvYWRBY3Rpdml0eUJ1dHRvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZVwiKSk7XG52YXIgQWRkQWN0aXZpdHlCdXR0b25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vQWRkQWN0aXZpdHlCdXR0b24udnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgUmVmcmVzaFRvYXN0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJBY3Rpdml0eS9idWxrLXB1Ymxpc2gvUmVmcmVzaFRvYXN0LnZ1ZVwiKSk7XG52YXIgUHVibGlzaFNlbGVjdGVkX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJBY3Rpdml0eS9idWxrLXB1Ymxpc2gvUHVibGlzaFNlbGVjdGVkLnZ1ZVwiKSk7XG52YXIgRGVsZXRlQnV0dG9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvRGVsZXRlQnV0dG9uLnZ1ZVwiKSk7XG4vLyBWdWV4IFN0b3JlXG52YXIgaW5kZXhfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL2luZGV4XCIpO1xudmFyIEVycm9yUG9wVXBfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvRXJyb3JQb3BVcC52dWVcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdQYWdlVGl0bGUnLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHJlZnJlc2hUb2FzdE1zZyA9ICgwLCB2dWVfMi5pbmplY3QpKCdyZWZyZXNoVG9hc3RNc2cnKTtcbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMi5pbmplY3QpKCd0b2FzdERhdGEnKTtcbiAgICAgICAgdmFyIGVycm9yRGF0YSA9ICgwLCB2dWVfMi5pbmplY3QpKCdlcnJvckRhdGEnKTtcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCByZWZyZXNoVG9hc3RNc2c6IHJlZnJlc2hUb2FzdE1zZywgdG9hc3RNZXNzYWdlOiB0b2FzdE1lc3NhZ2UsIGVycm9yRGF0YTogZXJyb3JEYXRhLCBzdG9yZTogc3RvcmUsIERvd25sb2FkQWN0aXZpdHlCdXR0b246IERvd25sb2FkQWN0aXZpdHlCdXR0b25fdnVlXzEuZGVmYXVsdCwgQWRkQWN0aXZpdHlCdXR0b246IEFkZEFjdGl2aXR5QnV0dG9uX3Z1ZV8xLmRlZmF1bHQsIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCwgUmVmcmVzaFRvYXN0TWVzc2FnZTogUmVmcmVzaFRvYXN0X3Z1ZV8xLmRlZmF1bHQsIFB1Ymxpc2hTZWxlY3RlZDogUHVibGlzaFNlbGVjdGVkX3Z1ZV8xLmRlZmF1bHQsIERlbGV0ZUJ1dHRvbjogRGVsZXRlQnV0dG9uX3Z1ZV8xLmRlZmF1bHQsIEVycm9yUG9wVXA6IEVycm9yUG9wVXBfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1NpZGViYXJIZWxwQmxvY2snLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbi8vIFZ1ZXggU3RvcmVcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG52YXIgUHJldmlvdXNseVB1Ymxpc2hlZF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zdGF0dXMvUHJldmlvdXNseVB1Ymxpc2hlZC52dWVcIikpO1xudmFyIFB1Ymxpc2hCdXR0b25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9QdWJsaXNoQnV0dG9uLnZ1ZVwiKSk7XG52YXIgVW5QdWJsaXNoQnV0dG9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvVW5QdWJsaXNoQnV0dG9uLnZ1ZVwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuLy8gaW1wb3J0IFNoaW1tZXIgZnJvbSBcIkNvbXBvbmVudHMvU2hpbW1lckxvYWRpbmcudnVlXCI7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnVGFibGVMYXlvdXQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBsb2FkZXI6IHsgdHlwZTogQm9vbGVhbiwgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBfYiA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBzZWxlY3RBbGxWYWx1ZSA9IF9iWzBdLCBzZWxlY3RBbGxUb2dnbGUgPSBfYlsxXTtcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG4gICAgICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mcm9tTm93KCk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gdG9nZ2xlU2VsZWN0QWxsKGFjdGl2aXRpZXMsIHNlbGVjdEFsbFZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoIXNlbGVjdEFsbFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGlkcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGRhdHVtIGluIGFjdGl2aXRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWRzLnB1c2goYWN0aXZpdGllc1tkYXR1bV0uaWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU2VsZWN0ZWRBY3Rpdml0aWVzJywgaWRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTZWxlY3RlZEFjdGl2aXRpZXMnLCBbXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxlY3RBbGxUb2dnbGUoKTtcbiAgICAgICAgfVxuICAgICAgICAvL1NvcnRpbmcgYnkgdXBkYXRlX2F0XG4gICAgICAgIHZhciBjdXJyZW50VVJMID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICAgIHZhciBxdWVyeSA9ICcnLCBkaXJlY3Rpb24gPSAnYXNjJztcbiAgICAgICAgdmFyIHNvcnRpbmdEaXJlY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09PSAnYXNjJyA/ICdkZXNjZW5kaW5nJyA6ICdhc2NlbmRpbmcnO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgc29ydEJ5UHVibGlzaGluZ1Byb2dyZXNzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRVUkwuaW5jbHVkZXMoJz8nKSkge1xuICAgICAgICAgICAgICAgIHZhciBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gsIHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocXVlcnlTdHJpbmcpO1xuICAgICAgICAgICAgICAgIHF1ZXJ5ID0gKF9hID0gdXJsUGFyYW1zLmdldCgncScpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJztcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSB1cmxQYXJhbXMuZ2V0KCdkaXJlY3Rpb24nKSA9PT0gJ2Rlc2MnID8gJ2FzYycgOiAnZGVzYyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gXCI/cT1cIi5jb25jYXQocXVlcnksIFwiJm9yZGVyQnk9Y29tcGxldGVfcGVyY2VudGFnZSZkaXJlY3Rpb249XCIpLmNvbmNhdChkaXJlY3Rpb24pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgc29ydEJ5RGF0ZVVybCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykpIHtcbiAgICAgICAgICAgICAgICB2YXIgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLCB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKTtcbiAgICAgICAgICAgICAgICBxdWVyeSA9IChfYSA9IHVybFBhcmFtcy5nZXQoJ3EnKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gdXJsUGFyYW1zLmdldCgnZGlyZWN0aW9uJykgPT09ICdkZXNjJyA/ICdhc2MnIDogJ2Rlc2MnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFwiP3E9XCIuY29uY2F0KHF1ZXJ5LCBcIiZvcmRlckJ5PXVwZGF0ZWRfYXQmZGlyZWN0aW9uPVwiKS5jb25jYXQoZGlyZWN0aW9uKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHNlbGVjdEFsbFZhbHVlOiBzZWxlY3RBbGxWYWx1ZSwgc2VsZWN0QWxsVG9nZ2xlOiBzZWxlY3RBbGxUb2dnbGUsIHN0b3JlOiBzdG9yZSwgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZSwgdG9nZ2xlU2VsZWN0QWxsOiB0b2dnbGVTZWxlY3RBbGwsIGN1cnJlbnRVUkw6IGN1cnJlbnRVUkwsIHF1ZXJ5OiBxdWVyeSwgZGlyZWN0aW9uOiBkaXJlY3Rpb24sIHNvcnRpbmdEaXJlY3Rpb246IHNvcnRpbmdEaXJlY3Rpb24sIHNvcnRCeVB1Ymxpc2hpbmdQcm9ncmVzczogc29ydEJ5UHVibGlzaGluZ1Byb2dyZXNzLCBzb3J0QnlEYXRlVXJsOiBzb3J0QnlEYXRlVXJsLCBQcmV2aW91c2x5UHVibGlzaGVkOiBQcmV2aW91c2x5UHVibGlzaGVkX3Z1ZV8xLmRlZmF1bHQsIFB1Ymxpc2g6IFB1Ymxpc2hCdXR0b25fdnVlXzEuZGVmYXVsdCwgVW5QdWJsaXNoOiBVblB1Ymxpc2hCdXR0b25fdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG4vL2NvbXBvbmVudFxudmFyIExpbmtfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZVwiKSk7XG52YXIgUGFnZVRpdGxlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciBJbmRleF8xID0gcmVxdWlyZShcIi4vZWxlbWVudHMvSW5kZXhcIik7XG4vL2NvbXBvc2FibGVcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgdGl0bGVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS90aXRsZVwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdQZXJpb2REZXRhaWwnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgVGFyZ2V0VmFsdWU6IEluZGV4XzEuVGFyZ2V0VmFsdWUsXG4gICAgICAgIEFjdHVhbFZhbHVlOiBJbmRleF8xLkFjdHVhbFZhbHVlLFxuICAgICAgICBCdG46IExpbmtfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnZVRpdGxlOiBQYWdlVGl0bGVfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYWN0aXZpdHk6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwYXJlbnREYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcGVyaW9kOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGVsZW1lbnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBwb3NpdGlvblkgPSAoMCwgdnVlXzEucmVmKSgwKTtcbiAgICAgICAgdmFyIHNjcmVlbldpZHRoID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGxpbmtDbGFzc2VzID0gJ2ZsZXggaXRlbXMtY2VudGVyIHctZnVsbCBiZy13aGl0ZSByb3VuZGVkIHAtMiB0ZXh0LXNtIHRleHQtbi01MCBmb250LWJvbGQgbGVhZGluZy1ub3JtYWwgbWItMiBzaGFkb3ctZGVmYXVsdCc7XG4gICAgICAgIHZhciBfYiA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKSwgcGVyaW9kID0gX2IucGVyaW9kLCBhY3Rpdml0eSA9IF9iLmFjdGl2aXR5LCBwYXJlbnREYXRhID0gX2IucGFyZW50RGF0YSwgdHlwZXMgPSBfYi50eXBlcztcbiAgICAgICAgdmFyIGhhbmRsZVNjcm9sbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHBvc2l0aW9uWS52YWx1ZSA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgaXN0b3BWaXNpYmxlID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gcG9zaXRpb25ZLnZhbHVlID09PSAwO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgc2hvd1NpZGViYXIgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIC8vIHZ1ZSBwcm92aWRlXG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgndHlwZXMnLCB0eXBlcy52YWx1ZSk7XG4gICAgICAgIC8vaW5kaWNhdG9yXG4gICAgICAgIHZhciBwZXJpb2REYXRhID0gcGVyaW9kLnZhbHVlLnBlcmlvZDtcbiAgICAgICAgLy90aXRsZXNcbiAgICAgICAgdmFyIGFjdGl2aXR5SWQgPSBhY3Rpdml0eS52YWx1ZS5pZCwgZGVmYXVsdExhbmd1YWdlID0gKF9hID0gYWN0aXZpdHkudmFsdWUuZGVmYXVsdF9maWVsZF92YWx1ZXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kZWZhdWx0X2xhbmd1YWdlLCBhY3Rpdml0eVRpdGxlID0gKDAsIHRpdGxlXzEuZGVmYXVsdCkoYWN0aXZpdHkudmFsdWUudGl0bGUsIGRlZmF1bHRMYW5ndWFnZSksIGFjdGl2aXR5TGluayA9IFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkKSwgcmVzdWx0SWQgPSBwYXJlbnREYXRhLnZhbHVlLnJlc3VsdC5pZCwgcmVzdWx0VGl0bGUgPSAoMCwgdGl0bGVfMS5kZWZhdWx0KShwYXJlbnREYXRhLnZhbHVlLnJlc3VsdC50aXRsZSwgZGVmYXVsdExhbmd1YWdlKSwgcmVzdWx0TGluayA9IFwiXCIuY29uY2F0KGFjdGl2aXR5TGluaywgXCIvcmVzdWx0L1wiKS5jb25jYXQocmVzdWx0SWQpLCBpbmRpY2F0b3JJZCA9IHBhcmVudERhdGEudmFsdWUuaW5kaWNhdG9yLmlkLCBpbmRpY2F0b3JUaXRsZSA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKHBhcmVudERhdGEudmFsdWUuaW5kaWNhdG9yLnRpdGxlLCBkZWZhdWx0TGFuZ3VhZ2UpLCBpbmRpY2F0b3JMaW5rID0gXCIvcmVzdWx0L1wiLmNvbmNhdChyZXN1bHRJZCwgXCIvaW5kaWNhdG9yL1wiKS5jb25jYXQoaW5kaWNhdG9ySWQpLCBwZXJpb2RMaW5rID0gXCIvaW5kaWNhdG9yL1wiLmNvbmNhdChpbmRpY2F0b3JJZCwgXCIvcGVyaW9kXCIpO1xuICAgICAgICAvKipcbiAgICAgICAgICogQnJlYWRjcnVtYiBkYXRhXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgYnJlYWRjcnVtYkRhdGEgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRyYW5zbGF0ZS50ZXh0RnJvbUtleSgnYWN0aXZpdGllcy55b3VyX2FjdGl2aXRpZXMnKSxcbiAgICAgICAgICAgICAgICBsaW5rOiAnL2FjdGl2aXRpZXMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogYWN0aXZpdHlUaXRsZSxcbiAgICAgICAgICAgICAgICBsaW5rOiBhY3Rpdml0eUxpbmssXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiByZXN1bHRUaXRsZSxcbiAgICAgICAgICAgICAgICBsaW5rOiByZXN1bHRMaW5rLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaW5kaWNhdG9yVGl0bGUsXG4gICAgICAgICAgICAgICAgbGluazogaW5kaWNhdG9yTGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdwZXJpb2QnKSxcbiAgICAgICAgICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIHZhciBjYWxjV2lkdGggPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHNjcmVlbldpZHRoLnZhbHVlID0gZXZlbnQudGFyZ2V0LmlubmVyV2lkdGg7XG4gICAgICAgICAgICBpZiAoc2NyZWVuV2lkdGgudmFsdWUgPiAxMDI0KSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2hvd1NpZGViYXIudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzaG93U2lkZWJhci52YWx1ZTsgfSwgZnVuY3Rpb24gKHNpZGViYXIpIHtcbiAgICAgICAgICAgIGlmIChzaWRlYmFyKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGNXaWR0aCk7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIGlmIChwcm9wcy50b2FzdC5tZXNzYWdlICE9PSAnJykge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcHJvcHMudG9hc3QudHlwZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBwcm9wcy50b2FzdC5tZXNzYWdlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxpbmtDbGFzc2VzOiBsaW5rQ2xhc3NlcyxcbiAgICAgICAgICAgIHBlcmlvZERhdGE6IHBlcmlvZERhdGEsXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGJyZWFkY3J1bWJEYXRhOiBicmVhZGNydW1iRGF0YSxcbiAgICAgICAgICAgIGFjdGl2aXR5TGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgcmVzdWx0TGluazogcmVzdWx0TGluayxcbiAgICAgICAgICAgIGluZGljYXRvckxpbms6IGluZGljYXRvckxpbmssXG4gICAgICAgICAgICBwZXJpb2RMaW5rOiBwZXJpb2RMaW5rLFxuICAgICAgICAgICAgdG9hc3REYXRhOiB0b2FzdERhdGEsXG4gICAgICAgICAgICBzaG93U2lkZWJhcjogc2hvd1NpZGViYXIsXG4gICAgICAgICAgICB0cmFuc2xhdGU6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGlzdG9wVmlzaWJsZTogaXN0b3BWaXNpYmxlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG4vLyBjb21wb25lbnRzXG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIFRhYmxlUGFnaW5hdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlXCIpKTtcbnZhciBQYWdlVGl0bGVfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUGFnZVRpdGxlLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIERlbGV0ZUFjdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9EZWxldGVBY3Rpb24udnVlXCIpKTtcbi8vIGNvbXBvc2FibGVcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgdGl0bGVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS90aXRsZVwiKSk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUGVyaW9kTGlzdCcsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBCdG46IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdpbmF0aW9uOiBUYWJsZVBhZ2luYXRpb25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnZVRpdGxlOiBQYWdlVGl0bGVfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBEZWxldGVBY3Rpb246IERlbGV0ZUFjdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYWN0aXZpdHk6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwYXJlbnREYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcGVyaW9kOiB7XG4gICAgICAgICAgICB0eXBlOiBBcnJheSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIF9hID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLCBhY3Rpdml0eSA9IF9hLmFjdGl2aXR5LCBwYXJlbnREYXRhID0gX2EucGFyZW50RGF0YTtcbiAgICAgICAgdmFyIGFjdGl2aXR5SWQgPSBhY3Rpdml0eS52YWx1ZS5pZCwgYWN0aXZpdHlUaXRsZSA9IGFjdGl2aXR5LnZhbHVlLnRpdGxlLCBhY3Rpdml0eUxpbmsgPSBcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCksIHJlc3VsdFRpdGxlID0gcGFyZW50RGF0YS52YWx1ZS5yZXN1bHQudGl0bGUsIHJlc3VsdElkID0gcGFyZW50RGF0YS52YWx1ZS5yZXN1bHQuaWQsIHJlc3VsdExpbmsgPSBcIlwiLmNvbmNhdChhY3Rpdml0eUxpbmssIFwiL3Jlc3VsdC9cIikuY29uY2F0KHJlc3VsdElkKSwgaW5kaWNhdG9yVGl0bGUgPSBwYXJlbnREYXRhLnZhbHVlLmluZGljYXRvci50aXRsZSwgaW5kaWNhdG9ySWQgPSBwYXJlbnREYXRhLnZhbHVlLmluZGljYXRvci5pZCwgaW5kaWNhdG9yTGluayA9IFwiL3Jlc3VsdC9cIi5jb25jYXQocmVzdWx0SWQsIFwiL2luZGljYXRvci9cIikuY29uY2F0KGluZGljYXRvcklkKSwgcGVyaW9kTGluayA9IFwiL2luZGljYXRvci9cIi5jb25jYXQoaW5kaWNhdG9ySWQsIFwiL3BlcmlvZFwiKTtcbiAgICAgICAgdmFyIHBlcmlvZHNEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7fSk7XG4gICAgICAgIHZhciBpc0VtcHR5ID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCcmVhZGNydW1iIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIHZhciBicmVhZGNydW1iRGF0YSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdHJhbnNsYXRlLnRleHRGcm9tS2V5KCdhY3Rpdml0aWVzLnlvdXJfYWN0aXZpdGllcycpLFxuICAgICAgICAgICAgICAgIGxpbms6ICcvYWN0aXZpdHknLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogKDAsIHRpdGxlXzEuZGVmYXVsdCkoYWN0aXZpdHlUaXRsZSwgJ2VuJyksXG4gICAgICAgICAgICAgICAgbGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogKDAsIHRpdGxlXzEuZGVmYXVsdCkocmVzdWx0VGl0bGUsICdlbicpLFxuICAgICAgICAgICAgICAgIGxpbms6IHJlc3VsdExpbmssXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAoMCwgdGl0bGVfMS5kZWZhdWx0KShpbmRpY2F0b3JUaXRsZSwgJ2VuJyksXG4gICAgICAgICAgICAgICAgbGluazogaW5kaWNhdG9yTGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdwZXJpb2RzX2xpc3QnKSxcbiAgICAgICAgICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL2luZGljYXRvci9cIi5jb25jYXQoaW5kaWNhdG9ySWQsIFwiL3BlcmlvZHMvcGFnZS8xXCIpKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocGVyaW9kc0RhdGEsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICBpc0VtcHR5LnZhbHVlID0gcmVzcG9uc2UuZGF0YS5kYXRhLmxlbmd0aCA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHMudG9hc3QubWVzc2FnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcHJvcHMudG9hc3QubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9KTtcbiAgICAgICAgZnVuY3Rpb24gZmV0Y2hMaXN0aW5ncyhhY3RpdmVfcGFnZSkge1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChcIi9pbmRpY2F0b3IvXCIuY29uY2F0KGluZGljYXRvcklkLCBcIi9wZXJpb2RzL3BhZ2UvXCIpICsgYWN0aXZlX3BhZ2UpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocGVyaW9kc0RhdGEsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSByZXNwb25zZS5kYXRhID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gaGFuZGxlTmF2aWdhdGUocGF0aCkge1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBwYXRoO1xuICAgICAgICB9XG4gICAgICAgIC8vIHByb3ZpZGVcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdwYXJlbnRJdGVtSWQnLCBpbmRpY2F0b3JJZCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBicmVhZGNydW1iRGF0YTogYnJlYWRjcnVtYkRhdGEsXG4gICAgICAgICAgICBpbmRpY2F0b3JMaW5rOiBpbmRpY2F0b3JMaW5rLFxuICAgICAgICAgICAgcGVyaW9kTGluazogcGVyaW9kTGluayxcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LFxuICAgICAgICAgICAgcGVyaW9kc0RhdGE6IHBlcmlvZHNEYXRhLFxuICAgICAgICAgICAgZ2V0QWN0aXZpdHlUaXRsZTogdGl0bGVfMS5kZWZhdWx0LFxuICAgICAgICAgICAgZmV0Y2hMaXN0aW5nczogZmV0Y2hMaXN0aW5ncyxcbiAgICAgICAgICAgIGluZGljYXRvcklkOiBpbmRpY2F0b3JJZCxcbiAgICAgICAgICAgIHRvYXN0RGF0YTogdG9hc3REYXRhLFxuICAgICAgICAgICAgaGFuZGxlTmF2aWdhdGU6IGhhbmRsZU5hdmlnYXRlLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBtZXRob2RzOiB7IGNyZWF0ZUNhcGl0YWxpemVkU2VudGVuY2U6IHV0aWxzXzEuY3JlYXRlQ2FwaXRhbGl6ZWRTZW50ZW5jZSB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG4vLyBjb21wb25lbnRcbnZhciBJbmRleF8xID0gcmVxdWlyZShcIkFjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvSW5kZXhcIik7XG4vL2NvbXBvc2FibGVcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3R1YWxWYWx1ZScsXG4gICAgY29tcG9uZW50czogeyBEb2N1bWVudExpbms6IEluZGV4XzEuRG9jdW1lbnRMaW5rIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgLy8gdnVlIGluamVjdFxuICAgICAgICB2YXIgZGxUeXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHZhciBlbGVtZW50U3BhY2luZyA9ICdtYi0xJztcbiAgICAgICAgdmFyIGFjdHVhbFZhbHVlID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFjdHVhbFZhbHVlOiBhY3R1YWxWYWx1ZSxcbiAgICAgICAgICAgIGVsZW1lbnRTcGFjaW5nOiBlbGVtZW50U3BhY2luZyxcbiAgICAgICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvbixcbiAgICAgICAgICAgIGdldExvY2F0aW9uOiB1dGlsc18xLmdldExvY2F0aW9uLFxuICAgICAgICAgICAgZGxUeXBlOiBkbFR5cGUsXG4gICAgICAgICAgICB0cmFuc2xhdGU6IHRyYW5zbGF0ZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG4vLyBjb21wb25lbnRcbnZhciBJbmRleF8xID0gcmVxdWlyZShcIkFjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvSW5kZXhcIik7XG4vL2NvbXBvc2FibGVcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUYXJnZXRWYWx1ZScsXG4gICAgY29tcG9uZW50czogeyBEb2N1bWVudExpbms6IEluZGV4XzEuRG9jdW1lbnRMaW5rIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgLy8gdnVlIGluamVjdFxuICAgICAgICAvLyBjb25zdCBsYW5ndWFnZVR5cGUgPSBpbmplY3QoJ3R5cGVzJykubGFuZ3VhZ2U7XG4gICAgICAgIHZhciBkbFR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgdmFyIGVsZW1lbnRTcGFjaW5nID0gJ21iLTEnO1xuICAgICAgICB2YXIgdGFyZ2V0VmFsdWUgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGFyZ2V0VmFsdWU6IHRhcmdldFZhbHVlLFxuICAgICAgICAgICAgZWxlbWVudFNwYWNpbmc6IGVsZW1lbnRTcGFjaW5nLFxuICAgICAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uLFxuICAgICAgICAgICAgZ2V0TG9jYXRpb246IHV0aWxzXzEuZ2V0TG9jYXRpb24sXG4gICAgICAgICAgICAvLyBsYW5ndWFnZVR5cGUsXG4gICAgICAgICAgICBkbFR5cGU6IGRsVHlwZSxcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogdHJhbnNsYXRlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbi8vY29tcG9uZW50XG52YXIgUmVzdWx0RWxlbWVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9SZXN1bHRFbGVtZW50LnZ1ZVwiKSk7XG52YXIgSW5kaWNhdG9yX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJBY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL0luZGljYXRvci52dWVcIikpO1xudmFyIExpbmtfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZVwiKSk7XG52YXIgUGFnZVRpdGxlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbi8vY29tcG9zYWJsZVxudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbnZhciB0aXRsZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL3RpdGxlXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1Jlc3VsdERldGFpbCcsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBSZXN1bHRFbGVtZW50OiBSZXN1bHRFbGVtZW50X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEluZGljYXRvcjogSW5kaWNhdG9yX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEJ0bjogTGlua192dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdlVGl0bGU6IFBhZ2VUaXRsZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9hc3Q6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBlbGVtZW50OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBsaW5rQ2xhc3NlcyA9ICdmbGV4IGl0ZW1zLWNlbnRlciB3LWZ1bGwgYmctd2hpdGUgcm91bmRlZCBwLTIgdGV4dC1zbSB0ZXh0LW4tNTAgZm9udC1ib2xkIGxlYWRpbmctbm9ybWFsIG1iLTIgc2hhZG93LWRlZmF1bHQnO1xuICAgICAgICB2YXIgcG9zaXRpb25ZID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciBzaG93U2lkZWJhciA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNjcmVlbldpZHRoID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciBfYiA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKSwgcmVzdWx0ID0gX2IucmVzdWx0LCBhY3Rpdml0eSA9IF9iLmFjdGl2aXR5O1xuICAgICAgICB2YXIgaGFzSW5kaWNhdG9ycyA9IHJlc3VsdC52YWx1ZS5pbmRpY2F0b3JzLmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIHZhciByZXN1bHRzRGF0YSA9IHJlc3VsdC52YWx1ZS5yZXN1bHQ7XG4gICAgICAgIHZhciBhY3Rpdml0eUlkID0gYWN0aXZpdHkudmFsdWUuaWQsIGFjdGl2aXR5VGl0bGUgPSBhY3Rpdml0eS52YWx1ZS50aXRsZSwgYWN0aXZpdHlMaW5rID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQpLCByZXN1bHRUaXRsZSA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKHJlc3VsdHNEYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZSwgJ2VuJyksIHJlc3VsdExpbmsgPSBcIlwiLmNvbmNhdChhY3Rpdml0eUxpbmssIFwiL3Jlc3VsdC9cIikuY29uY2F0KHJlc3VsdC52YWx1ZS5pZCksIGRlZmF1bHRMYW5ndWFnZSA9IChfYSA9IGFjdGl2aXR5LnZhbHVlLmRlZmF1bHRfZmllbGRfdmFsdWVzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGFuZ3VhZ2U7XG4gICAgICAgIHZhciBoYW5kbGVTY3JvbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwb3NpdGlvblkudmFsdWUgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogQnJlYWRjcnVtYiBkYXRhXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgYnJlYWRjcnVtYkRhdGEgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRyYW5zbGF0ZS50ZXh0RnJvbUtleSgnYWN0aXZpdGllcy55b3VyX2FjdGl2aXRpZXMnKSxcbiAgICAgICAgICAgICAgICBsaW5rOiAnL2FjdGl2aXRpZXMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogKDAsIHRpdGxlXzEuZGVmYXVsdCkoYWN0aXZpdHlUaXRsZSwgZGVmYXVsdExhbmd1YWdlKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBhY3Rpdml0eUxpbmssXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiByZXN1bHRUaXRsZSxcbiAgICAgICAgICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIHZhciBpc3RvcFZpc2libGUgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBwb3NpdGlvblkudmFsdWUgPT09IDA7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGNXaWR0aCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2FsY1dpZHRoID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBzY3JlZW5XaWR0aC52YWx1ZSA9IGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xuICAgICAgICAgICAgaWYgKHNjcmVlbldpZHRoLnZhbHVlID4gMTAyNCkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNob3dTaWRlYmFyLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc2hvd1NpZGViYXIudmFsdWU7IH0sIGZ1bmN0aW9uIChzaWRlYmFyKSB7XG4gICAgICAgICAgICBpZiAoc2lkZWJhcikge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhY3Rpdml0eUxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIHJlc3VsdFRpdGxlOiByZXN1bHRUaXRsZSxcbiAgICAgICAgICAgIHJlc3VsdExpbms6IHJlc3VsdExpbmssXG4gICAgICAgICAgICBsaW5rQ2xhc3NlczogbGlua0NsYXNzZXMsXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGhhc0luZGljYXRvcnM6IGhhc0luZGljYXRvcnMsXG4gICAgICAgICAgICByZXN1bHRzRGF0YTogcmVzdWx0c0RhdGEsXG4gICAgICAgICAgICBicmVhZGNydW1iRGF0YTogYnJlYWRjcnVtYkRhdGEsXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIHNob3dTaWRlYmFyOiBzaG93U2lkZWJhcixcbiAgICAgICAgICAgIGlzdG9wVmlzaWJsZTogaXN0b3BWaXNpYmxlLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbnZhciBJbmRleF8xID0gcmVxdWlyZShcIi4vZWxlbWVudHMvSW5kZXhcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eUVsZW1lbnQnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgSG92ZXJUZXh0OiBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVGl0bGVEZXNjcmlwdGlvbjogSW5kZXhfMS5UaXRsZURlc2NyaXB0aW9uLFxuICAgICAgICBEb2N1bWVudExpbms6IEluZGV4XzEuRG9jdW1lbnRMaW5rLFxuICAgICAgICBSZWZlcmVuY2U6IEluZGV4XzEuUmVmZXJlbmNlLFxuICAgICAgICBSZXN1bHRUeXBlOiBJbmRleF8xLlJlc3VsdFR5cGUsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGVsZW1lbnROYW1lOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZWRpdFVybDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBob3ZlclRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgX2EgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIGRhdGEgPSBfYS5kYXRhLCB0eXBlcyA9IF9hLnR5cGVzLCBlbGVtZW50RGF0YSA9IGRhdGEudmFsdWUsIHJlc3VsdFR5cGUgPSB0eXBlcy52YWx1ZS5yZXN1bHRUeXBlLCByZXN1bHRWb2NhYnVsYXJ5ID0gdHlwZXMudmFsdWUucmVzdWx0Vm9jYWJ1bGFyeSwgbGFuZ3VhZ2UgPSB0eXBlcy52YWx1ZS5sYW5ndWFnZTtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZWxlbWVudERhdGE6IGVsZW1lbnREYXRhLFxuICAgICAgICAgICAgcmVzdWx0VHlwZTogcmVzdWx0VHlwZSxcbiAgICAgICAgICAgIHJlc3VsdFZvY2FidWxhcnk6IHJlc3VsdFZvY2FidWxhcnksXG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgICAgICAgICB0cmFuc2xhdGU6IHRyYW5zbGF0ZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuLy8gY29tcG9uZW50c1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBUYWJsZVBhZ2luYXRpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVGFibGVQYWdpbmF0aW9uLnZ1ZVwiKSk7XG52YXIgUGFnZVRpdGxlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciBEZWxldGVBY3Rpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvRGVsZXRlQWN0aW9uLnZ1ZVwiKSk7XG4vLyBjb21wb3NhYmxlXG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiLi4vLi4vLi4vY29tcG9zYWJsZS91dGlsc1wiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1Jlc3VsdHNMaXN0JyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEJ0bjogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2luYXRpb246IFRhYmxlUGFnaW5hdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdlVGl0bGU6IFBhZ2VUaXRsZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIERlbGV0ZUFjdGlvbjogRGVsZXRlQWN0aW9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHJlc3VsdHM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvYXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgYWN0aXZpdHkgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuYWN0aXZpdHk7XG4gICAgICAgIHZhciBhY3Rpdml0eUlkID0gYWN0aXZpdHkudmFsdWUuaWQsIGFjdGl2aXR5VGl0bGUgPSBhY3Rpdml0eS52YWx1ZS50aXRsZSwgYWN0aXZpdHlMaW5rID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQpO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciByZXN1bHRzRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgaXNFbXB0eSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJyZWFkY3J1bWIgZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGJyZWFkY3J1bWJEYXRhID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0cmFuc2xhdGUudGV4dEZyb21LZXkoJ2FjdGl2aXRpZXMueW91cl9hY3Rpdml0aWVzJyksXG4gICAgICAgICAgICAgICAgbGluazogJy9hY3Rpdml0aWVzJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICgwLCB0aXRsZV8xLmRlZmF1bHQpKGFjdGl2aXR5VGl0bGUsICdlbicpLFxuICAgICAgICAgICAgICAgIGxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdyZXN1bHRfbGlzdCcpLFxuICAgICAgICAgICAgICAgIGxpbms6ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgZnVuY3Rpb24gaGFuZGxlTmF2aWdhdGUocGF0aCkge1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBwYXRoO1xuICAgICAgICB9XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkLCBcIi9yZXN1bHRzL3BhZ2UvMVwiKSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHJlc3VsdHNEYXRhLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuZGF0YS5sZW5ndGggPyBmYWxzZSA6IHRydWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcHJvcHMudG9hc3QudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGZldGNoTGlzdGluZ3MoYWN0aXZlX3BhZ2UpIHtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQsIFwiL3Jlc3VsdHMvcGFnZS9cIikgKyBhY3RpdmVfcGFnZSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihyZXN1bHRzRGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEgPyBmYWxzZSA6IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBQcm92aWRlXG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgncGFyZW50SXRlbUlkJywgYWN0aXZpdHlJZCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBicmVhZGNydW1iRGF0YTogYnJlYWRjcnVtYkRhdGEsXG4gICAgICAgICAgICBhY3Rpdml0eUxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIHRvYXN0RGF0YTogdG9hc3REYXRhLFxuICAgICAgICAgICAgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsXG4gICAgICAgICAgICByZXN1bHRzRGF0YTogcmVzdWx0c0RhdGEsXG4gICAgICAgICAgICBnZXRBY3Rpdml0eVRpdGxlOiB0aXRsZV8xLmRlZmF1bHQsXG4gICAgICAgICAgICBmZXRjaExpc3RpbmdzOiBmZXRjaExpc3RpbmdzLFxuICAgICAgICAgICAgaGFuZGxlTmF2aWdhdGU6IGhhbmRsZU5hdmlnYXRlLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBtZXRob2RzOiB7IGNyZWF0ZUNhcGl0YWxpemVkU2VudGVuY2U6IHV0aWxzXzEuY3JlYXRlQ2FwaXRhbGl6ZWRTZW50ZW5jZSB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdSZXN1bHREb2N1bWVudExpbmsnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBkbERhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHJldHVybiB7IGRsRGF0YTogZGxEYXRhLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbi8vY29tcG9zYWJsZVxudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbnZhciB0aXRsZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL3RpdGxlXCIpKTtcbi8vY29tcG9uZW50c1xudmFyIEhhdmVOb3RBZGRlZFlldF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9IYXZlTm90QWRkZWRZZXQudnVlXCIpKTtcbnZhciBMaW5rX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvTGluay52dWVcIikpO1xuLy8gaGVscGVyIGZ1bmN0aW9uXG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUmVzdWx0SW5kaWNhdG9yJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIE5vdFlldDogSGF2ZU5vdEFkZGVkWWV0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEJ0bjogTGlua192dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvb2xUaXA6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciByZXN1bHQgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykucmVzdWx0O1xuICAgICAgICB2YXIgaW5kaWNhdG9yRGF0YSA9IHJlc3VsdC52YWx1ZS5pbmRpY2F0b3JzLnJldmVyc2UoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGluZGljYXRvckRhdGE6IGluZGljYXRvckRhdGEsXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGdldEFjdGl2aXR5VGl0bGU6IHRpdGxlXzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGNvdW50RG9jdW1lbnRMaW5rOiB1dGlsc18xLmNvdW50RG9jdW1lbnRMaW5rLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUmVzdWx0UmVmZXJlbmNlJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciByZWZlcmVuY2VEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgcmVmZXJlbmNlRGF0YTogcmVmZXJlbmNlRGF0YSwgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdSZXN1bHRUeXBlJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIHR5cGVEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZURhdGE6IHR5cGVEYXRhLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1Jlc3VsdFREJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgdGREYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICByZXR1cm4geyB0ZERhdGE6IHRkRGF0YSwgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG4vL2NvbXBvbmVudHNcbnZhciBMaW5rX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvTGluay52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG4vL2NvbXBvc2FibGVcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgdGl0bGVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS90aXRsZVwiKSk7XG52YXIgVHJhbnNhY3Rpb25FbGVtZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL1RyYW5zYWN0aW9uRWxlbWVudC52dWVcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25EZXRhaWwnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgVHJhbnNhY3Rpb25FbGVtZW50OiBUcmFuc2FjdGlvbkVsZW1lbnRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2VUaXRsZTogUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNhY3Rpb246IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvYXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZWxlbWVudDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIF9hID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLCBhY3Rpdml0eSA9IF9hLmFjdGl2aXR5LCB0cmFuc2FjdGlvbiA9IF9hLnRyYW5zYWN0aW9uO1xuICAgICAgICB2YXIgbGlua0NsYXNzZXMgPSAnZmxleCBpdGVtcy1jZW50ZXIgdy1mdWxsIGJnLXdoaXRlIHJvdW5kZWQgcC0yIHRleHQtc20gdGV4dC1uLTUwIGZvbnQtYm9sZCBsZWFkaW5nLXJlbGF4ZWQgbWItMiBzaGFkb3ctZGVmYXVsdCc7XG4gICAgICAgIHZhciBzaG93U2lkZWJhciA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHBvc2l0aW9uWSA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICB2YXIgc2NyZWVuV2lkdGggPSAoMCwgdnVlXzEucmVmKSgwKTtcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaGFuZGxlU2Nyb2xsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcG9zaXRpb25ZLnZhbHVlID0gd2luZG93LnNjcm9sbFk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBpc3RvcFZpc2libGUgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBwb3NpdGlvblkudmFsdWUgPT09IDA7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyB0aXRsZXNcbiAgICAgICAgdmFyIHRyYW5zYWN0aW9uRGF0YSA9IHRyYW5zYWN0aW9uLnZhbHVlLnRyYW5zYWN0aW9uO1xuICAgICAgICB2YXIgY2FsY1dpZHRoID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBzY3JlZW5XaWR0aC52YWx1ZSA9IGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xuICAgICAgICAgICAgaWYgKHNjcmVlbldpZHRoLnZhbHVlID4gMTAyNCkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNob3dTaWRlYmFyLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBhY3Rpdml0eUlkID0gYWN0aXZpdHkudmFsdWUuaWQsIGFjdGl2aXR5VGl0bGUgPSAoMCwgdGl0bGVfMS5kZWZhdWx0KShhY3Rpdml0eS52YWx1ZS50aXRsZSwgJ2VuJyksIGFjdGl2aXR5TGluayA9IFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkKSwgdHJhbnNhY3Rpb25MaW5rID0gXCJcIi5jb25jYXQoYWN0aXZpdHlMaW5rLCBcIi90cmFuc2FjdGlvbi9cIikuY29uY2F0KHRyYW5zYWN0aW9uLnZhbHVlLmlkKTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzaG93U2lkZWJhci52YWx1ZTsgfSwgZnVuY3Rpb24gKHNpZGViYXIpIHtcbiAgICAgICAgICAgIGlmIChzaWRlYmFyKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogQnJlYWRjcnVtYiBkYXRhXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgYnJlYWRjcnVtYkRhdGEgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRyYW5zbGF0ZS50ZXh0RnJvbUtleSgnYWN0aXZpdGllcy55b3VyX2FjdGl2aXRpZXMnKSxcbiAgICAgICAgICAgICAgICBsaW5rOiAnL2FjdGl2aXR5JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGFjdGl2aXR5VGl0bGUsXG4gICAgICAgICAgICAgICAgbGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdHJhbnNsYXRlLmNvbW1vblRleHQoJ3RyYW5zYWN0aW9uJyksXG4gICAgICAgICAgICAgICAgbGluazogJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXNNYW5kYXRvcnlJY29uID0gZnVuY3Rpb24gKHIpIHtcbiAgICAgICAgICAgIHJldHVybiAoci50b1N0cmluZygpID09PSAndmFsdWUnIHx8XG4gICAgICAgICAgICAgICAgci50b1N0cmluZygpID09PSAndHJhbnNhY3Rpb25fdHlwZScgfHxcbiAgICAgICAgICAgICAgICByLnRvU3RyaW5nKCkgPT09ICd0cmFuc2FjdGlvbl9kYXRlJyk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhY3Rpdml0eVRpdGxlOiBhY3Rpdml0eVRpdGxlLFxuICAgICAgICAgICAgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsXG4gICAgICAgICAgICB0cmFuc2FjdGlvbkRhdGE6IHRyYW5zYWN0aW9uRGF0YSxcbiAgICAgICAgICAgIGxpbmtDbGFzc2VzOiBsaW5rQ2xhc3NlcyxcbiAgICAgICAgICAgIGJyZWFkY3J1bWJEYXRhOiBicmVhZGNydW1iRGF0YSxcbiAgICAgICAgICAgIGFjdGl2aXR5TGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgdHJhbnNhY3Rpb25MaW5rOiB0cmFuc2FjdGlvbkxpbmssXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIGlzTWFuZGF0b3J5SWNvbjogaXNNYW5kYXRvcnlJY29uLFxuICAgICAgICAgICAgc2hvd1NpZGViYXI6IHNob3dTaWRlYmFyLFxuICAgICAgICAgICAgaXN0b3BWaXNpYmxlOiBpc3RvcFZpc2libGUsXG4gICAgICAgICAgICB0cmFuc2xhdGU6IHRyYW5zbGF0ZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLy4uLy4uLy4uL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLy4uLy4uLy4uL2NvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgSW5kZXhfMSA9IHJlcXVpcmUoXCIuL2VsZW1lbnRzL0luZGV4XCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlFbGVtZW50JyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIERlc2NyaXB0aW9uOiBJbmRleF8xLkRlc2NyaXB0aW9uLFxuICAgICAgICBBaWRUeXBlOiBJbmRleF8xLkFpZFR5cGUsXG4gICAgICAgIFRyYW5zYWN0aW9uVHlwZTogSW5kZXhfMS5UcmFuc2FjdGlvblR5cGUsXG4gICAgICAgIFRyYW5zYWN0aW9uRGF0ZTogSW5kZXhfMS5UcmFuc2FjdGlvbkRhdGUsXG4gICAgICAgIFZhbHVlOiBJbmRleF8xLlZhbHVlLFxuICAgICAgICBQcm92aWRlck9yZ2FuaXphdGlvbjogSW5kZXhfMS5Qcm92aWRlck9yZ2FuaXphdGlvbixcbiAgICAgICAgUmVjZWl2ZXJPcmdhbml6YXRpb246IEluZGV4XzEuUmVjZWl2ZXJPcmdhbml6YXRpb24sXG4gICAgICAgIERpc2J1cnNlbWVudENoYW5uZWw6IEluZGV4XzEuRGlzYnVyc2VtZW50Q2hhbm5lbCxcbiAgICAgICAgU2VjdG9yOiBJbmRleF8xLlNlY3RvcixcbiAgICAgICAgUmVjaXBpZW50Q291bnRyeTogSW5kZXhfMS5SZWNpcGllbnRDb3VudHJ5LFxuICAgICAgICBSZWNpcGllbnRSZWdpb246IEluZGV4XzEuUmVjaXBpZW50UmVnaW9uLFxuICAgICAgICBGbG93VHlwZTogSW5kZXhfMS5GbG93VHlwZSxcbiAgICAgICAgRmluYW5jZVR5cGU6IEluZGV4XzEuRmluYW5jZVR5cGUsXG4gICAgICAgIFRpZWRTdGF0dXM6IEluZGV4XzEuVGllZFN0YXR1cyxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZWxlbWVudE5hbWU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBlZGl0VXJsOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgd2lkdGg6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGhvdmVyVGV4dDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIF9hID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLCBkYXRhID0gX2EuZGF0YSwgdHlwZXMgPSBfYS50eXBlcywgZWxlbWVudERhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3R5cGVzJywgdHlwZXMpO1xuICAgICAgICBmdW5jdGlvbiBnZXRMYW5ndWFnZXMobGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiBsYW5ndWFnZS5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7IHJldHVybiBlbnRyeS5sYW5ndWFnZTsgfSkuam9pbignLCAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZWxlbWVudERhdGE6IGVsZW1lbnREYXRhLFxuICAgICAgICAgICAgZ2V0TGFuZ3VhZ2VzOiBnZXRMYW5ndWFnZXMsXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogdHJhbnNsYXRlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG4vL2NvbXBvbmVudHNcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgVGFibGVQYWdpbmF0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgRGVsZXRlQWN0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL0RlbGV0ZUFjdGlvbi52dWVcIikpO1xuLy9jb21wb3NhYmxlXG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jb21wb3NhYmxlL3V0aWxzXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbi8vIHRvZ2dsZSBzdGF0ZSBmb3IgbW9kYWwgcG9wdXBcbnZhciBfYSA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBkZWxldGVWYWx1ZSA9IF9hWzBdLCBkZWxldGVUb2dnbGUgPSBfYVsxXTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25MaXN0JyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEJ0bjogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2luYXRpb246IFRhYmxlUGFnaW5hdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdlVGl0bGU6IFBhZ2VUaXRsZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIERlbGV0ZUFjdGlvbjogRGVsZXRlQWN0aW9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRyYW5zYWN0aW9uczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9hc3Q6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBhY3Rpdml0eSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5hY3Rpdml0eTtcbiAgICAgICAgdmFyIGFjdGl2aXR5SWQgPSBhY3Rpdml0eS52YWx1ZS5pZCwgYWN0aXZpdHlUaXRsZSA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKGFjdGl2aXR5LnZhbHVlLnRpdGxlLCAnZW4nKSwgYWN0aXZpdHlMaW5rID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQpO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB0cmFuc2FjdGlvbnNEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7fSk7XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkLCBcIi90cmFuc2FjdGlvbnMvcGFnZS8xXCIpKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odHJhbnNhY3Rpb25zRGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcHJvcHMudG9hc3QudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGhhbmRsZU5hdmlnYXRlKHBhdGgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gcGF0aDtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBmZXRjaExpc3RpbmdzKGFjdGl2ZV9wYWdlKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkLCBcIi90cmFuc2FjdGlvbnMvcGFnZS9cIikgKyBhY3RpdmVfcGFnZSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0cmFuc2FjdGlvbnNEYXRhLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIFByb3ZpZGVcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdwYXJlbnRJdGVtSWQnLCBhY3Rpdml0eUlkKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJyZWFkY3J1bWIgZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGJyZWFkY3J1bWJEYXRhID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0cmFuc2xhdGUudGV4dEZyb21LZXkoJ2FjdGl2aXRpZXMueW91cl9hY3Rpdml0aWVzJyksXG4gICAgICAgICAgICAgICAgbGluazogJy9hY3Rpdml0aWVzJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGFjdGl2aXR5VGl0bGUsXG4gICAgICAgICAgICAgICAgbGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdHJhbnNsYXRlLmNvbW1vblRleHQoJ3RyYW5zYWN0aW9uX2xpc3QnKSxcbiAgICAgICAgICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBicmVhZGNydW1iRGF0YTogYnJlYWRjcnVtYkRhdGEsXG4gICAgICAgICAgICBhY3Rpdml0eUxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LFxuICAgICAgICAgICAgdHJhbnNhY3Rpb25zRGF0YTogdHJhbnNhY3Rpb25zRGF0YSxcbiAgICAgICAgICAgIGdldEFjdGl2aXR5VGl0bGU6IHRpdGxlXzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGZldGNoTGlzdGluZ3M6IGZldGNoTGlzdGluZ3MsXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIGRlbGV0ZVZhbHVlOiBkZWxldGVWYWx1ZSxcbiAgICAgICAgICAgIGRlbGV0ZVRvZ2dsZTogZGVsZXRlVG9nZ2xlLFxuICAgICAgICAgICAgaGFuZGxlTmF2aWdhdGU6IGhhbmRsZU5hdmlnYXRlLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBtZXRob2RzOiB7IGNyZWF0ZUNhcGl0YWxpemVkU2VudGVuY2U6IHV0aWxzXzEuY3JlYXRlQ2FwaXRhbGl6ZWRTZW50ZW5jZSB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvbkFpZFR5cGUnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgYXREYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGF0RGF0YTogYXREYXRhLFxuICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogdHJhbnNsYXRlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uRGVzY3JpcHRpb24nLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgdGREYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgdGREYXRhOiB0ZERhdGEsIHR5cGU6IHR5cGUsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25EaXNidXJzZW1lbnRDaGFubmVsJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGNvZGUgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgdHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyBjb2RlOiBjb2RlLCB0eXBlOiB0eXBlLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uRmluYW5jZVR5cGUnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgZmluYW5jZURhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgdHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyBmaW5hbmNlRGF0YTogZmluYW5jZURhdGEsIHR5cGU6IHR5cGUsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25GbG93VHlwZScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBmbG93RGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciB0eXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IGZsb3dEYXRhOiBmbG93RGF0YSwgdHlwZTogdHlwZSwgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvblByb3ZpZGVyT3JnYW5pc2F0aW9uJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIFBvRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciB0eXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IFBvRGF0YTogUG9EYXRhLCB0eXBlOiB0eXBlLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uUmVjZWl2ZXJPcmdhbmlzYXRpb24nLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgUG9EYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgUG9EYXRhOiBQb0RhdGEsIHR5cGU6IHR5cGUsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25SZWNpcGllbnRDb3VudHJ5JyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGNvdW50cnkgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgdHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyBjb3VudHJ5OiBjb3VudHJ5LCB0eXBlOiB0eXBlLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uUmVjaXBpZW50UmVnaW9uJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGNvdW50cnkgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgdHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyBjb3VudHJ5OiBjb3VudHJ5LCB0eXBlOiB0eXBlLCB0cmFuc2xhdGU6IHRyYW5zbGF0ZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uU2VjdG9yJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIHR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgdmFyIHNlY3RvciA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzZWN0b3I6IHNlY3RvcixcbiAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICB0cmFuc2xhdGU6IHRyYW5zbGF0ZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvblRpZWRTdGF0dXMnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgdHNEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgdHNEYXRhOiB0c0RhdGEsIHR5cGU6IHR5cGUsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi8uLi8uLi8uLi8uLi9jb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25EYXRlJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGRhdGUgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4geyBkYXRlOiBkYXRlLCBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCwgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvblR5cGUnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgY29kZSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciB0eXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IGNvZGU6IGNvZGUsIHR5cGU6IHR5cGUsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi8uLi8uLi8uLi8uLi9jb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25WYWx1ZScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciB2YWx1ZSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7IHZhbHVlOiB2YWx1ZSwgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsIHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnQXVkaXRMaXN0aW5nJyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBhdWRpdERhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHt9KTtcbiAgICAgICAgdmFyIGlzRW1wdHkgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBpc0xvYWRlclZpc2libGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBmZXRjaEF1ZGl0TGlzdCgxKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICBmdW5jdGlvbiBmZXRjaEF1ZGl0TGlzdChhY3RpdmVfcGFnZSwgZmlsdGVyZWQpIHtcbiAgICAgICAgICAgIGlmIChmaWx0ZXJlZCA9PT0gdm9pZCAwKSB7IGZpbHRlcmVkID0gZmFsc2U7IH1cbiAgICAgICAgICAgIHZhciByb3V0ZSA9IFwiL2F1ZGl0L3BhZ2UvXCIuY29uY2F0KGZpbHRlcmVkID8gJzEnIDogYWN0aXZlX3BhZ2UpO1xuICAgICAgICAgICAgdmFyIHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQocm91dGUsIHsgcGFyYW1zOiBwYXJhbXMgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihhdWRpdERhdGEsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSByZXNwb25zZS5kYXRhID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIGF1ZGl0RGF0YTogYXVkaXREYXRhLCBpc0VtcHR5OiBpc0VtcHR5LCBpc0xvYWRlclZpc2libGU6IGlzTG9hZGVyVmlzaWJsZSwgZmV0Y2hBdWRpdExpc3Q6IGZldGNoQXVkaXRMaXN0LCBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LCBQYWdlVGl0bGU6IFBhZ2VUaXRsZV92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbnZhciBzcGlubmVyTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NwaW5uZXJMb2FkZXIudnVlXCIpKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRGFzaGJvYXJkR3JhcGgnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGN1cnJlbnRWaWV3OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBsYWJlbHMgPSAoMCwgdnVlXzIucmVmKShbXSk7XG4gICAgICAgIHZhciByb3VuZGVkTGFiZWxzID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgc2hvd0dyYXBoTG9hZGVyID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3Nob3dHcmFwaExvYWRlcicpO1xuICAgICAgICB2YXIgZ3JhcGhBbW91bnQgPSAoMCwgdnVlXzIuaW5qZWN0KSgnZ3JhcGhBbW91bnQnKTtcbiAgICAgICAgdmFyIHlheGlzVGlja3MgPSAoMCwgdnVlXzIucmVmKShbXSk7XG4gICAgICAgIHZhciBtYXhWYWx1ZSA9ICgwLCB2dWVfMi5yZWYpKDApO1xuICAgICAgICB2YXIgY2hhcnQgPSAoMCwgdnVlXzIucmVmKSh7fSk7XG4gICAgICAgIHZhciBncmFwaENvbG9yID0gJyMxNzk5N0InO1xuICAgICAgICB2YXIgdG9vbHRpcFRleHQgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocHJvcHMuY3VycmVudFZpZXcpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdwdWJsaXNoZXInOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1RvdGFsIG5vLiBvZiBwdWJsaXNoZXIgcmVnaXN0cmF0aW9uJztcbiAgICAgICAgICAgICAgICBjYXNlICdhY3Rpdml0eSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnVG90YWwgbm8uIG9mIGFjdGl2aXRpZXMgYWRkZWQnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnVG90YWwgbnVtYmVyIG9mIHVzZXInO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNoYXJ0T3B0aW9ucyA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHtcbiAgICAgICAgICAgIGNoYXJ0OiB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICAgICAgICAgIG9mZnNldFk6IDUsXG4gICAgICAgICAgICAgICAgem9vbToge1xuICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgeGF4aXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogNTAsIC8vIEFkanVzdCB0aGUgbGVmdCBwYWRkaW5nIHZhbHVlIGFzIG5lZWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdG9vbGJhcjoge1xuICAgICAgICAgICAgICAgICAgICBzaG93OiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1hcmtlcnM6IHtcbiAgICAgICAgICAgICAgICBzaXplOiBncmFwaEFtb3VudC52YWx1ZS5sZW5ndGggPiAxID8gMCA6IDIsXG4gICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDAsXG4gICAgICAgICAgICAgICAgY29sb3JzOiBbJyMxNzk5N0InXSxcbiAgICAgICAgICAgICAgICBob3Zlcjoge1xuICAgICAgICAgICAgICAgICAgICBzaXplOiA2LCAvLyBDdXN0b21pemUgdGhlIG1hcmtlciBzaXplIG9uIGhvdmVyXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdHJva2U6IHtcbiAgICAgICAgICAgICAgICBjdXJ2ZTogJ3N0cmFpZ2h0JyxcbiAgICAgICAgICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb2xvcnM6IFtncmFwaENvbG9yXSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICBjdXN0b206IGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2VyaWVzID0gX2Euc2VyaWVzLCBzZXJpZXNJbmRleCA9IF9hLnNlcmllc0luZGV4LCBkYXRhUG9pbnRJbmRleCA9IF9hLmRhdGFQb2ludEluZGV4LCB3ID0gX2EudztcbiAgICAgICAgICAgICAgICAgICAgdmFyIGdldERheSA9IGZ1bmN0aW9uIChmb3JtYXR0ZWREYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGZvcm1hdHRlZERhdGUpLmZvcm1hdCgnZGRkIE1NTSBERCBZWVlZJyk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcIjxkaXYgY2xhc3M9XFxcInAtNFxcXCI+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInRleHQtbi00MFxcXCI+IFwiLmNvbmNhdChnZXREYXkody5nbG9iYWxzLmNhdGVnb3J5TGFiZWxzW2RhdGFQb2ludEluZGV4XSksIFwiPC9kaXY+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXggdGV4dC1uLTUwIHNwYWNlLXgtNCBqdXN0aWZ5LWJldHdlZW5cXFwiPjxkaXY+XCIpLmNvbmNhdCh0b29sdGlwVGV4dC52YWx1ZSwgXCI8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZm9udC1ib2xkXFxcIj5cIikuY29uY2F0KHNlcmllc1tzZXJpZXNJbmRleF1bZGF0YVBvaW50SW5kZXhdLCBcIjwvZGl2PjwvZGl2PlxcbiAgICAgICAgICAgICAgPC9kaXY+XCIpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeGF4aXM6IHtcbiAgICAgICAgICAgICAgICB0aWNrQW1vdW50OiAzLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogMTAwLFxuICAgICAgICAgICAgICAgICAgICByaWdodDogMjAsIC8vIEluY3JlYXNlIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBsYXN0IHRpY2sgYW5kIHRoZSByaWdodCBlZGdlIG9mIHRoZSBjaGFydFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgICAgIHJvdGF0ZTogMCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHlheGlzOiB7XG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogbWF4VmFsdWUudmFsdWUgKyAzLFxuICAgICAgICAgICAgICAgIHRpY2tBbW91bnQ6IG1heFZhbHVlLnZhbHVlID4gNCA/IDUgOiBtYXhWYWx1ZS52YWx1ZSArIDMsXG4gICAgICAgICAgICAgICAgLy8gQWRkaXRpb25hbCBzcGFjaW5nIG9wdGlvbnNcbiAgICAgICAgICAgICAgICBvZmZzZXRZOiAxMCxcbiAgICAgICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogMTAsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcjogZnVuY3Rpb24gKHZhbHVlLCBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscy52YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnQudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfYiA9IChfYSA9IGNoYXJ0LnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2hhcnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi53Lmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcm91bmRlZExhYmVscy52YWx1ZSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgY291bnQgPSAwOyBjb3VudCA8IGxhYmVscy52YWx1ZS5sZW5ndGg7IGNvdW50KyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJvdW5kZWRMYWJlbHMudmFsdWUuaW5jbHVkZXMoTWF0aC5yb3VuZChsYWJlbHMudmFsdWVbY291bnRdKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91bmRlZExhYmVscy52YWx1ZS5wdXNoKE1hdGgucm91bmQobGFiZWxzLnZhbHVlW2NvdW50XSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByb3VuZGVkTGFiZWxzLnZhbHVlW2luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICB2YXIgc2VyaWVzID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKShbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0Rlc2t0b3BzJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgICAgICAgICAgZGF0YTogZ3JhcGhBbW91bnQudmFsdWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdKTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBncmFwaEFtb3VudC52YWx1ZTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbWF4VmFsdWUudmFsdWUgPSAwO1xuICAgICAgICAgICAgeWF4aXNUaWNrcy52YWx1ZS5sZW5ndGggPSAwO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncmFwaEFtb3VudC52YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChtYXhWYWx1ZS52YWx1ZSA8IGdyYXBoQW1vdW50LnZhbHVlW2ldWyd5J10pIHtcbiAgICAgICAgICAgICAgICAgICAgbWF4VmFsdWUudmFsdWUgPSBncmFwaEFtb3VudC52YWx1ZVtpXVsneSddO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlcmllc1snZGF0YSddID0gZ3JhcGhBbW91bnQudmFsdWU7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgbGFiZWxzOiBsYWJlbHMsIHJvdW5kZWRMYWJlbHM6IHJvdW5kZWRMYWJlbHMsIHNob3dHcmFwaExvYWRlcjogc2hvd0dyYXBoTG9hZGVyLCBncmFwaEFtb3VudDogZ3JhcGhBbW91bnQsIHlheGlzVGlja3M6IHlheGlzVGlja3MsIG1heFZhbHVlOiBtYXhWYWx1ZSwgY2hhcnQ6IGNoYXJ0LCBncmFwaENvbG9yOiBncmFwaENvbG9yLCBwcm9wczogcHJvcHMsIHRvb2x0aXBUZXh0OiB0b29sdGlwVGV4dCwgY2hhcnRPcHRpb25zOiBjaGFydE9wdGlvbnMsIHNlcmllczogc2VyaWVzLCBzcGlubmVyTG9hZGVyOiBzcGlubmVyTG9hZGVyX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBUYWJsZVBhZ2luYXRpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVGFibGVQYWdpbmF0aW9uLnZ1ZVwiKSk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xudmFyIFRhYmxlTG9hZGVyQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RhYmxlTG9hZGVyQ29tcG9uZW50LnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRGFzaGJvYXJkTGlzdFNlY3Rpb24nLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGN1cnJlbnRWaWV3OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdGFibGVEYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0YWJsZUhlYWRlcjoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXJ0RGF0ZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGVuZERhdGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkYXRlVHlwZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBlbWl0czogWyd0YWJsZU5hdiddLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF9iLCBfYztcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZSwgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgYWN0aXZpdHlOYXZMaXN0ID0gW1xuICAgICAgICAgICAgeyBsYWJlbDogJ0FjdGl2aXR5IFN0YXR1cycsIGFwaVBhcmFtczogJ3N0YXR1cycgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6ICdBY3Rpdml0eSBBZGRlZCcsIGFwaVBhcmFtczogJ21ldGhvZCcgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6ICdBY3Rpdml0eSBDb21wbGV0aW9uJywgYXBpUGFyYW1zOiAnY29tcGxldGVuZXNzJyB9LFxuICAgICAgICBdO1xuICAgICAgICB2YXIgcHVibGlzaGVyTmF2TGlzdCA9IFtcbiAgICAgICAgICAgIHsgbGFiZWw6ICdQdWJsaXNoZXIgVHlwZScsIGFwaVBhcmFtczogJ3B1Ymxpc2hlci10eXBlJyB9LFxuICAgICAgICAgICAgeyBsYWJlbDogJ0RhdGEgTGljZW5jZScsIGFwaVBhcmFtczogJ2RhdGEtbGljZW5zZScgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6ICdDb3VudHJ5JywgYXBpUGFyYW1zOiAnY291bnRyeScgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6ICdSZWdpc3RyYXRpb24gVHlwZScsIGFwaVBhcmFtczogJ3JlZ2lzdHJhdGlvbi10eXBlJyB9LFxuICAgICAgICAgICAgeyBsYWJlbDogJ1NldHVwIENvbXBsZXRlbmVzcycsIGFwaVBhcmFtczogJ3NldHVwJyB9LFxuICAgICAgICBdO1xuICAgICAgICB2YXIgY3VycmVudHBhZ2UgPSAoMCwgdnVlXzIucmVmKSgxKTtcbiAgICAgICAgdmFyIHJlc2V0cGFnaW5hdGlvbiA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGZpbHRlciA9ICgwLCB2dWVfMi5yZWYpKHsgb3JkZXJCeTogJycsIHNvcnQ6ICcnIH0pO1xuICAgICAgICB2YXIgc29ydEVsZW1lbnQgPSAoMCwgdnVlXzIucmVmKSh7IGxhYmVsOiAnJywgYXBpUGFyYW1zOiAnJyB9KTtcbiAgICAgICAgdmFyIHVzZXJOYXZsaXN0ID0gW3sgbGFiZWw6ICd1c2VyJywgYXBpUGFyYW1zOiAnJyB9XTtcbiAgICAgICAgdmFyIGN1cnJlbnRJdGVtID0gKDAsIHZ1ZV8yLnJlZikoe1xuICAgICAgICAgICAgbGFiZWw6ICdQdWJsaXNoZXIgVHlwZScsXG4gICAgICAgICAgICBhcGlQYXJhbXM6ICdwdWJsaXNoZXItdHlwZScsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY3VycmVudE5hdkxpc3QgPSAoMCwgdnVlXzIucmVmKShwdWJsaXNoZXJOYXZMaXN0KTtcbiAgICAgICAgdmFyIHRpdGxlID0gKDAsIHZ1ZV8yLnJlZikoKF9iID0gY3VycmVudE5hdkxpc3QudmFsdWVbMF0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5sYWJlbCk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZldGNoVGFibGVEYXRhKGN1cnJlbnROYXZMaXN0LnZhbHVlWzBdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBzb3J0VGFibGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmZXRjaFRhYmxlRGF0YShjdXJyZW50SXRlbS52YWx1ZSwgZmFsc2UpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgdHJpZ2dlcnBhZ2luYXRpb24gPSBmdW5jdGlvbiAocGFnZSkge1xuICAgICAgICAgICAgY3VycmVudHBhZ2UudmFsdWUgPSBwYWdlO1xuICAgICAgICAgICAgcmVzZXRwYWdpbmF0aW9uLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBmZXRjaFRhYmxlRGF0YShjdXJyZW50SXRlbS52YWx1ZSwgZmFsc2UpO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZpbHRlci52YWx1ZTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmVzZXRwYWdpbmF0aW9uLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGN1cnJlbnRwYWdlLnZhbHVlID0gMTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHByb3BzLmN1cnJlbnRWaWV3OyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBjdXJyZW50cGFnZS52YWx1ZSA9IDE7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09ICdhY3Rpdml0eScpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50SXRlbS52YWx1ZSA9IHsgbGFiZWw6ICdBY3Rpdml0eSBTdGF0dXMnLCBhcGlQYXJhbXM6ICdzdGF0dXMnIH07XG4gICAgICAgICAgICAgICAgY3VycmVudE5hdkxpc3QudmFsdWUgPSBhY3Rpdml0eU5hdkxpc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gJ3B1Ymxpc2hlcicpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50SXRlbS52YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdQdWJsaXNoZXIgVHlwZScsXG4gICAgICAgICAgICAgICAgICAgIGFwaVBhcmFtczogJ3B1Ymxpc2hlci10eXBlJyxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGN1cnJlbnROYXZMaXN0LnZhbHVlID0gcHVibGlzaGVyTmF2TGlzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGN1cnJlbnROYXZMaXN0LnZhbHVlID0gdXNlck5hdmxpc3Q7XG4gICAgICAgICAgICAgICAgY3VycmVudEl0ZW0udmFsdWUgPSB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAndXNlcicsXG4gICAgICAgICAgICAgICAgICAgIGFwaVBhcmFtczogJycsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZldGNoVGFibGVEYXRhKGN1cnJlbnROYXZMaXN0LnZhbHVlWzBdKTtcbiAgICAgICAgICAgIGFjdGl2ZUNsYXNzLnZhbHVlID0gKF9hID0gY3VycmVudE5hdkxpc3QudmFsdWVbMF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sYWJlbDtcbiAgICAgICAgICAgIHRpdGxlLnZhbHVlID0gKF9iID0gY3VycmVudE5hdkxpc3QudmFsdWVbMF0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5sYWJlbDtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBzaG93Tm9EYXRhQ29tcG9uZW50ID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgcmV0dXJuIChwcm9wcy50YWJsZURhdGEubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgICAgICAgKCEodGl0bGUudmFsdWUgPT09ICdSZWdpc3RyYXRpb24gVHlwZScgfHxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUudmFsdWUgPT09ICdTZXR1cCBDb21wbGV0ZW5lc3MnKSAmJlxuICAgICAgICAgICAgICAgICAgICAoKF9iID0gKF9hID0gcHJvcHMudGFibGVEYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGF0YSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmxlbmd0aCkgPT09IDApKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBhY3RpdmVDbGFzcyA9ICgwLCB2dWVfMi5yZWYpKChfYyA9IGN1cnJlbnROYXZMaXN0LnZhbHVlWzBdKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MubGFiZWwpO1xuICAgICAgICB2YXIgTmF2aWdhdGVXaXRoRmlsdGVyID0gZnVuY3Rpb24gKHBhZ2UsIGtleSwgdmFsdWUpIHtcbiAgICAgICAgICAgIGlmICghIXByb3BzLnN0YXJ0RGF0ZSAmJiAhIXByb3BzLmVuZERhdGUpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IFwiL1wiLmNvbmNhdChwYWdlLCBcIj9cIikuY29uY2F0KGtleSwgXCI9XCIpLmNvbmNhdCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBcIi9cIi5jb25jYXQocGFnZSwgXCI/XCIpLmNvbmNhdChrZXksIFwiPVwiKS5jb25jYXQodmFsdWUpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZmV0Y2hUYWJsZURhdGEgPSBmdW5jdGlvbiAoaXRlbSwgdGFiQ2hhbmdlKSB7XG4gICAgICAgICAgICBpZiAodGFiQ2hhbmdlID09PSB2b2lkIDApIHsgdGFiQ2hhbmdlID0gdHJ1ZTsgfVxuICAgICAgICAgICAgYWN0aXZlQ2xhc3MudmFsdWUgPSBpdGVtID09PSBudWxsIHx8IGl0ZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGl0ZW0ubGFiZWw7XG4gICAgICAgICAgICB0aXRsZS52YWx1ZSA9IGl0ZW0gPT09IG51bGwgfHwgaXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogaXRlbS5sYWJlbDtcbiAgICAgICAgICAgIHNvcnRFbGVtZW50LnZhbHVlID0gaXRlbTtcbiAgICAgICAgICAgIGVtaXQoJ3RhYmxlTmF2JywgaXRlbSwgZmlsdGVyLCBjdXJyZW50cGFnZS52YWx1ZSwgdGFiQ2hhbmdlKTtcbiAgICAgICAgICAgIHJlc2V0cGFnaW5hdGlvbi52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgdG9nZ2xlU29ydCA9IGZ1bmN0aW9uIChvcmRlcikge1xuICAgICAgICAgICAgZmlsdGVyLnZhbHVlLnNvcnQgPT09ICdhc2MnXG4gICAgICAgICAgICAgICAgPyAoZmlsdGVyLnZhbHVlLnNvcnQgPSAnZGVzYycpXG4gICAgICAgICAgICAgICAgOiAoZmlsdGVyLnZhbHVlLnNvcnQgPSAnYXNjJyk7XG4gICAgICAgICAgICBmaWx0ZXIudmFsdWUub3JkZXJCeSA9IG9yZGVyO1xuICAgICAgICAgICAgc29ydFRhYmxlKCk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjb21wbGV0ZU5lc3MgPSAoMCwgdnVlXzIuaW5qZWN0KSgnY29tcGxldGVOZXNzJyk7XG4gICAgICAgIHZhciByZWdpc3RyYXRpb25UeXBlID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3JlZ2lzdHJhdGlvblR5cGUnKTtcbiAgICAgICAgdmFyIHNob3dUYWJsZUxvYWRlciA9ICgwLCB2dWVfMi5pbmplY3QpKCdzaG93VGFibGVMb2FkZXInKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgcHJvcHM6IHByb3BzLCBlbWl0OiBlbWl0LCBhY3Rpdml0eU5hdkxpc3Q6IGFjdGl2aXR5TmF2TGlzdCwgcHVibGlzaGVyTmF2TGlzdDogcHVibGlzaGVyTmF2TGlzdCwgY3VycmVudHBhZ2U6IGN1cnJlbnRwYWdlLCByZXNldHBhZ2luYXRpb246IHJlc2V0cGFnaW5hdGlvbiwgZmlsdGVyOiBmaWx0ZXIsIHNvcnRFbGVtZW50OiBzb3J0RWxlbWVudCwgdXNlck5hdmxpc3Q6IHVzZXJOYXZsaXN0LCBjdXJyZW50SXRlbTogY3VycmVudEl0ZW0sIGN1cnJlbnROYXZMaXN0OiBjdXJyZW50TmF2TGlzdCwgdGl0bGU6IHRpdGxlLCBzb3J0VGFibGU6IHNvcnRUYWJsZSwgdHJpZ2dlcnBhZ2luYXRpb246IHRyaWdnZXJwYWdpbmF0aW9uLCBzaG93Tm9EYXRhQ29tcG9uZW50OiBzaG93Tm9EYXRhQ29tcG9uZW50LCBhY3RpdmVDbGFzczogYWN0aXZlQ2xhc3MsIE5hdmlnYXRlV2l0aEZpbHRlcjogTmF2aWdhdGVXaXRoRmlsdGVyLCBmZXRjaFRhYmxlRGF0YTogZmV0Y2hUYWJsZURhdGEsIHRvZ2dsZVNvcnQ6IHRvZ2dsZVNvcnQsIGNvbXBsZXRlTmVzczogY29tcGxldGVOZXNzLCByZWdpc3RyYXRpb25UeXBlOiByZWdpc3RyYXRpb25UeXBlLCBzaG93VGFibGVMb2FkZXI6IHNob3dUYWJsZUxvYWRlciwgUGFnaW5hdGlvbjogVGFibGVQYWdpbmF0aW9uX3Z1ZV8xLmRlZmF1bHQsIHRydW5jYXRlVGV4dDogdXRpbHNfMS50cnVuY2F0ZVRleHQsIFRhYmxlTG9hZGVyQ29tcG9uZW50OiBUYWJsZUxvYWRlckNvbXBvbmVudF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBEYXNoYm9hcmRTdGF0c1NlY3Rpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZVwiKSk7XG52YXIgRGFzaGJvYXJkTGlzdFNlY3Rpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlXCIpKTtcbnZhciBEYXRlUmFuZ2VXaWRnZXRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvRGF0ZVJhbmdlV2lkZ2V0LnZ1ZVwiKSk7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0Rhc2hib2FyZFBhZ2UnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG9sZGVzdERhdGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBjdXJyZW50TmF2ID0gKDAsIHZ1ZV8yLnJlZikoe1xuICAgICAgICAgICAgbGFiZWw6ICdQdWJsaXNoZXIgVHlwZScsXG4gICAgICAgICAgICBhcGlQYXJhbXM6ICdwdWJsaXNoZXItdHlwZScsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdGFibGVEYXRhID0gKDAsIHZ1ZV8yLnJlZikoe30pO1xuICAgICAgICB2YXIgRGF0ZUxhYmVsID0gKDAsIHZ1ZV8yLnJlZikoJ1JlZ2lzdGVyZWQgZGF0ZTonKTtcbiAgICAgICAgdmFyIHN0YXJ0RGF0ZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGVuZERhdGUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBncmFwaEFtb3VudCA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIGdyYXBoVG90YWwgPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIHNob3dUYWJsZUxvYWRlciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dHcmFwaExvYWRlciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGRhdGVUeXBlID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgZGF0ZUxhYmVsID0ge1xuICAgICAgICAgICAgcHVibGlzaGVyOiAnUmVnaXN0ZXJlZCBkYXRlOicsXG4gICAgICAgICAgICBhY3Rpdml0eTogJ0FjdGl2aXR5IEFkZGVkIG9uOicsXG4gICAgICAgICAgICB1c2VyOiAnVXNlciBDcmVhdGVkIERhdGU6JyxcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGN1cnJlbnRWaWV3ID0gKDAsIHZ1ZV8yLnJlZikoJ3B1Ymxpc2hlcicpO1xuICAgICAgICB2YXIgY29tcGxldGVOZXNzID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIHJlZ2lzdHJhdGlvblR5cGUgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgaGFuZGxlQ2hhbmdlVGFibGVOYXYgPSBmdW5jdGlvbiAoaXRlbSwgZmlsdGVyLCBwYWdlLCB0YWJDaGFuZ2UpIHtcbiAgICAgICAgICAgIGlmICh0YWJDaGFuZ2UgPT09IHZvaWQgMCkgeyB0YWJDaGFuZ2UgPSB0cnVlOyB9XG4gICAgICAgICAgICBpZiAodGFiQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyLnZhbHVlLm9yZGVyQnkgPSAnJztcbiAgICAgICAgICAgICAgICBmaWx0ZXIudmFsdWUuc29ydCA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VycmVudE5hdi52YWx1ZSA9IGl0ZW07XG4gICAgICAgICAgICBmZXRjaFRhYmxlRGF0YShmaWx0ZXIudmFsdWUsIHBhZ2UpO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzZXREYXRlUmFuZ2VEYXRlKCcnLCAnJyk7XG4gICAgICAgICAgICBmZXRjaFRhYmxlRGF0YSgpO1xuICAgICAgICAgICAgZmV0Y2hHcmFwaERhdGEoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgdmFyIGRvd25sb2FkUmVwb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICAgICAgICAgIGlmIChzdGFydERhdGUudmFsdWUgJiYgZW5kRGF0ZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ3N0YXJ0X2RhdGUnLCBzdGFydERhdGUudmFsdWUpO1xuICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ2VuZF9kYXRlJywgZW5kRGF0ZS52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KFwiL2Rhc2hib2FyZC9cIi5jb25jYXQoY3VycmVudFZpZXcudmFsdWUsIFwiL2Rvd25sb2FkXCIpLCB7IHBhcmFtczogcGFyYW1zIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24vY3N2JyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgICAgICBsaW5rLmRvd25sb2FkID0gXCJcIi5jb25jYXQoY3VycmVudFZpZXcudmFsdWUsIFwiLXJlcG9ydC5jc3ZcIik7XG4gICAgICAgICAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBncmFwaERhdGFGb3JtYXR0ZXIgPSBmdW5jdGlvbiAoZ3JhcGhEYXRhKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBkYXRlIGluIGdyYXBoRGF0YSkge1xuICAgICAgICAgICAgICAgIHZhciBkYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICB4OiAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZm9ybWF0KCdNTU0gREQgWVlZWScpLFxuICAgICAgICAgICAgICAgICAgICB5OiBncmFwaERhdGFbZGF0ZV0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBncmFwaEFtb3VudC52YWx1ZS5wdXNoKGRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgZmV0Y2hHcmFwaERhdGEgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaG93R3JhcGhMb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ3N0YXJ0X2RhdGUnLCBzdGFydERhdGUudmFsdWUpO1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnZW5kX2RhdGUnLCBlbmREYXRlLnZhbHVlKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoXCIvZGFzaGJvYXJkL1wiLmNvbmNhdChjdXJyZW50Vmlldy52YWx1ZSwgXCIvY291bnQvXCIpLCB7IHBhcmFtczogcGFyYW1zIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGdyYXBoQW1vdW50LnZhbHVlLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICAgICAgZ3JhcGhUb3RhbC52YWx1ZSA9IHJlcy5kYXRhLmRhdGFbJ2NvdW50J107XG4gICAgICAgICAgICAgICAgZ3JhcGhEYXRhRm9ybWF0dGVyKHJlcy5kYXRhLmRhdGFbJ2dyYXBoJ10pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmluYWxseShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc2hvd0dyYXBoTG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNldERhdGVSYW5nZURhdGUgPSBmdW5jdGlvbiAoc3RhcnQsIGVuZCwgdHlwZSkge1xuICAgICAgICAgICAgaWYgKHR5cGUgPT09IHZvaWQgMCkgeyB0eXBlID0gJyc7IH1cbiAgICAgICAgICAgIHN0YXJ0RGF0ZS52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgZGF0ZVR5cGUudmFsdWUgPSB0eXBlO1xuICAgICAgICAgICAgaWYgKHN0YXJ0ICE9ICcxOTkwLTEyLTMxJykge1xuICAgICAgICAgICAgICAgIHN0YXJ0RGF0ZS52YWx1ZSA9IHN0YXJ0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZW5kRGF0ZS52YWx1ZSA9IGVuZDtcbiAgICAgICAgICAgIGlmIChjdXJyZW50Vmlldy52YWx1ZSAhPT0gJ3VzZXInKSB7XG4gICAgICAgICAgICAgICAgZmV0Y2hUYWJsZURhdGEoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZldGNoR3JhcGhEYXRhKCk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gY3VycmVudFZpZXcudmFsdWU7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIERhdGVMYWJlbC52YWx1ZSA9IChfYSA9IGRhdGVMYWJlbFtjdXJyZW50Vmlldy52YWx1ZV0pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGN1cnJlbnRWaWV3LnZhbHVlO1xuICAgICAgICAgICAgc3RhcnREYXRlLnZhbHVlID0gJyc7XG4gICAgICAgICAgICBlbmREYXRlLnZhbHVlID0gJyc7XG4gICAgICAgICAgICBmZXRjaEdyYXBoRGF0YSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGZldGNoVGFibGVEYXRhID0gZnVuY3Rpb24gKGZpbHRlciwgcGFnZSkge1xuICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gdm9pZCAwKSB7IGZpbHRlciA9IHsgb3JkZXJCeTogJycsIHNvcnQ6ICcnIH07IH1cbiAgICAgICAgICAgIGlmIChwYWdlID09PSB2b2lkIDApIHsgcGFnZSA9ICcxJzsgfVxuICAgICAgICAgICAgc2hvd1RhYmxlTG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgICAgICAgICB2YXIgYWN0aXZlVGFiID0gY3VycmVudE5hdi52YWx1ZVsnYXBpUGFyYW1zJ107XG4gICAgICAgICAgICBpZiAoZmlsdGVyLm9yZGVyQnkpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdvcmRlckJ5JywgKDAsIHV0aWxzXzEua2ViYWJDYXNlVG9TbmFrZWNhc2UpKGZpbHRlci5vcmRlckJ5KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdwYWdlJywgcGFnZSk7XG4gICAgICAgICAgICBpZiAoZmlsdGVyLnNvcnQpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdkaXJlY3Rpb24nLCBmaWx0ZXIuc29ydCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RhcnREYXRlLnZhbHVlICYmIGVuZERhdGUudmFsdWUgJiYgY3VycmVudE5hdi52YWx1ZS5sYWJlbCAhPT0gJ3VzZXInKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnc3RhcnRfZGF0ZScsIHN0YXJ0RGF0ZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnZW5kX2RhdGUnLCBlbmREYXRlLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBhcGlVcmwgPSBcIi9kYXNoYm9hcmQvXCIuY29uY2F0KGN1cnJlbnRWaWV3LnZhbHVlLCBcIi9cIikuY29uY2F0KGFjdGl2ZVRhYik7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KGFwaVVybCwgeyBwYXJhbXM6IHBhcmFtcyB9KVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRWaWV3LnZhbHVlID09PSAncHVibGlzaGVyJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlVGFiICE9PSAnc2V0dXAnICYmIGFjdGl2ZVRhYiAhPT0gJ3JlZ2lzdHJhdGlvbi10eXBlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVEYXRhLnZhbHVlID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGVtcERhdGEgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb2RlTGlzdCA9IChfYSA9IHJlc3BvbnNlLmRhdGEpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jb2RlTGlzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvYmplY3RMZW5ndGggPSAoX2MgPSAoX2IgPSByZXNwb25zZS5kYXRhKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucGFnaW5hdGVkRGF0YS5kYXRhLmxlbmd0aCkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2JqZWN0TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbUluUGFnaW5hdGVkRGF0YSA9IChfZCA9IHJlc3BvbnNlLmRhdGEpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5wYWdpbmF0ZWREYXRhLmRhdGFbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHB1Ymxpc2hlclR5cGVLZXkgPSBpdGVtSW5QYWdpbmF0ZWREYXRhWygwLCB1dGlsc18xLmtlYmFiQ2FzZVRvU25ha2VjYXNlKShhY3RpdmVUYWIpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wRGF0YS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGNvZGVMaXN0W3B1Ymxpc2hlclR5cGVLZXldLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogcHVibGlzaGVyVHlwZUtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWw6IGl0ZW1JblBhZ2luYXRlZERhdGEuY291bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJsZURhdGEudmFsdWUgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVEYXRhLnZhbHVlLmRhdGEgPSB0ZW1wRGF0YTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhY3RpdmVUYWIgPT09ICdyZWdpc3RyYXRpb24tdHlwZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJhdGlvblR5cGUudmFsdWUgPSByZXNwb25zZS5kYXRhLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZU5lc3MudmFsdWUgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Vmlldy52YWx1ZSA9PT0gJ3VzZXInIHx8IGN1cnJlbnRWaWV3LnZhbHVlID09PSAnYWN0aXZpdHknKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhYmxlRGF0YS52YWx1ZSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmluYWxseShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc2hvd1RhYmxlTG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdjb21wbGV0ZU5lc3MnLCBjb21wbGV0ZU5lc3MpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ3JlZ2lzdHJhdGlvblR5cGUnLCByZWdpc3RyYXRpb25UeXBlKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdncmFwaEFtb3VudCcsIGdyYXBoQW1vdW50KTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdncmFwaFRvdGFsJywgZ3JhcGhUb3RhbCk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnc2hvd1RhYmxlTG9hZGVyJywgc2hvd1RhYmxlTG9hZGVyKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdzaG93R3JhcGhMb2FkZXInLCBzaG93R3JhcGhMb2FkZXIpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ2N1cnJlbnRWaWV3JywgY3VycmVudFZpZXcpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBjdXJyZW50TmF2OiBjdXJyZW50TmF2LCB0YWJsZURhdGE6IHRhYmxlRGF0YSwgRGF0ZUxhYmVsOiBEYXRlTGFiZWwsIHN0YXJ0RGF0ZTogc3RhcnREYXRlLCBlbmREYXRlOiBlbmREYXRlLCBncmFwaEFtb3VudDogZ3JhcGhBbW91bnQsIGdyYXBoVG90YWw6IGdyYXBoVG90YWwsIHNob3dUYWJsZUxvYWRlcjogc2hvd1RhYmxlTG9hZGVyLCBzaG93R3JhcGhMb2FkZXI6IHNob3dHcmFwaExvYWRlciwgZGF0ZVR5cGU6IGRhdGVUeXBlLCBkYXRlTGFiZWw6IGRhdGVMYWJlbCwgY3VycmVudFZpZXc6IGN1cnJlbnRWaWV3LCBjb21wbGV0ZU5lc3M6IGNvbXBsZXRlTmVzcywgcmVnaXN0cmF0aW9uVHlwZTogcmVnaXN0cmF0aW9uVHlwZSwgaGFuZGxlQ2hhbmdlVGFibGVOYXY6IGhhbmRsZUNoYW5nZVRhYmxlTmF2LCBwcm9wczogcHJvcHMsIGRvd25sb2FkUmVwb3J0OiBkb3dubG9hZFJlcG9ydCwgZ3JhcGhEYXRhRm9ybWF0dGVyOiBncmFwaERhdGFGb3JtYXR0ZXIsIGZldGNoR3JhcGhEYXRhOiBmZXRjaEdyYXBoRGF0YSwgc2V0RGF0ZVJhbmdlRGF0ZTogc2V0RGF0ZVJhbmdlRGF0ZSwgZmV0Y2hUYWJsZURhdGE6IGZldGNoVGFibGVEYXRhLCBEYXNoYm9hcmRTdGF0c1NlY3Rpb246IERhc2hib2FyZFN0YXRzU2VjdGlvbl92dWVfMS5kZWZhdWx0LCBEYXNoYm9hcmRMaXN0U2VjdGlvbjogRGFzaGJvYXJkTGlzdFNlY3Rpb25fdnVlXzEuZGVmYXVsdCwgRGF0ZVJhbmdlV2lkZ2V0OiBEYXRlUmFuZ2VXaWRnZXRfdnVlXzEuZGVmYXVsdCwgQnV0dG9uQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnRfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIERhc2hib2FyZEdyYXBoX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL0Rhc2hib2FyZEdyYXBoLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xudmFyIFByb2dyZXNzTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZVwiKSk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCIuLi8uLi9jb21wb3NhYmxlL3V0aWxzXCIpO1xudmFyIFNoaW1tZXJMb2FkaW5nX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1NoaW1tZXJMb2FkaW5nLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRGFzaGJvYXJkU3RhdHNTZWN0aW9uJyxcbiAgICBwcm9wczoge1xuICAgICAgICBjdXJyZW50Vmlldzoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgdG90YWwgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgaW5hY3RpdmVQdWJsaXNoZXIgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgcHVibGlzaGVyV2l0aG91dEFjdGl2aXR5ID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIGxhc3RSZWdpc3RlcmVkID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIGxhc3RVcGRhdGVkUHVibGlzaGVyID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIGxhc3RVcGRhdGVkQWN0aXZpdHkgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgbG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoeyBzdGF0dXM6IGZhbHNlLCB0ZXh0OiAnJyB9KTtcbiAgICAgICAgdmFyIHNob3dTdGF0c0xvYWRlciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGdyYXBoVG90YWwgPSAoMCwgdnVlXzIuaW5qZWN0KSgnZ3JhcGhUb3RhbCcpO1xuICAgICAgICB2YXIgcHVibGlzaGVyU3RhdHMgPSAoMCwgdnVlXzIucmVmKShbXSk7XG4gICAgICAgIHZhciBzaG93UHVibGlzaGVyU3RhdHMgPSAoMCwgdnVlXzIucmVmKSh0cnVlKTtcbiAgICAgICAgdmFyIHNob3dHcmFwaExvYWRlciA9ICgwLCB2dWVfMi5pbmplY3QpKCdzaG93R3JhcGhMb2FkZXInKTtcbiAgICAgICAgdmFyIHVzZXJJZCA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZldGNoU3RhdHNEYXRhKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZm9ybWF0RGF0ZSA9IGZ1bmN0aW9uIChkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTU1NTSBERCwgWVlZWScpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcHJveHlVc2VyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbG9hZGVyLnZhbHVlLnN0YXR1cyA9IHRydWU7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUudGV4dCA9ICdQcm94eSBMb2dpbic7XG4gICAgICAgICAgICB2YXIgZW5kcG9pbnQgPSBcIi9wcm94eS1vcmdhbmlzYXRpb24vXCIuY29uY2F0KHVzZXJJZC52YWx1ZSk7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KGVuZHBvaW50KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKCcvYWN0aXZpdGllcycpO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZS5zdGF0dXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBwcm9wcy5jdXJyZW50VmlldzsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZmV0Y2hTdGF0c0RhdGEoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBmZXRjaFN0YXRzRGF0YSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dTdGF0c0xvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KFwiL2Rhc2hib2FyZC9cIi5jb25jYXQocHJvcHMuY3VycmVudFZpZXcsIFwiL3N0YXRzXCIpKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB0b3RhbC52YWx1ZSA9IHJlc3BvbnNlLmRhdGEudG90YWxDb3VudDtcbiAgICAgICAgICAgICAgICBsYXN0UmVnaXN0ZXJlZC52YWx1ZSA9IHJlc3BvbnNlLmRhdGEubGFzdFJlZ2lzdGVyZWRQdWJsaXNoZXI7XG4gICAgICAgICAgICAgICAgbGFzdFVwZGF0ZWRQdWJsaXNoZXIudmFsdWUgPSByZXNwb25zZS5kYXRhLmxhc3RVcGRhdGVkUHVibGlzaGVyO1xuICAgICAgICAgICAgICAgIGxhc3RVcGRhdGVkQWN0aXZpdHkudmFsdWUgPSByZXNwb25zZS5kYXRhLmxhc3RVcGRhdGVkQWN0aXZpdHk7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLmN1cnJlbnRWaWV3ID09PSAncHVibGlzaGVyJykge1xuICAgICAgICAgICAgICAgICAgICB1c2VySWQudmFsdWUgPSBsYXN0UmVnaXN0ZXJlZC52YWx1ZS51c2VyX2lkO1xuICAgICAgICAgICAgICAgICAgICBpbmFjdGl2ZVB1Ymxpc2hlci52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuaW5BY3RpdmVQdWJsaXNoZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5jdXJyZW50VmlldyA9PT0gJ2FjdGl2aXR5Jykge1xuICAgICAgICAgICAgICAgICAgICB1c2VySWQudmFsdWUgPSByZXNwb25zZS5kYXRhLnVzZXJJZDtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVyV2l0aG91dEFjdGl2aXR5LnZhbHVlID0gcmVzcG9uc2UuZGF0YS5wdWJsaXNoZXJXaXRob3V0QWN0aXZpdHk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5jdXJyZW50VmlldyA9PT0gJ3VzZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIHNob3dQdWJsaXNoZXJTdGF0cy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlclN0YXRzLnZhbHVlID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzaG93U3RhdHNMb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBwcm9wczogcHJvcHMsIHRvdGFsOiB0b3RhbCwgaW5hY3RpdmVQdWJsaXNoZXI6IGluYWN0aXZlUHVibGlzaGVyLCBwdWJsaXNoZXJXaXRob3V0QWN0aXZpdHk6IHB1Ymxpc2hlcldpdGhvdXRBY3Rpdml0eSwgbGFzdFJlZ2lzdGVyZWQ6IGxhc3RSZWdpc3RlcmVkLCBsYXN0VXBkYXRlZFB1Ymxpc2hlcjogbGFzdFVwZGF0ZWRQdWJsaXNoZXIsIGxhc3RVcGRhdGVkQWN0aXZpdHk6IGxhc3RVcGRhdGVkQWN0aXZpdHksIGxvYWRlcjogbG9hZGVyLCBzaG93U3RhdHNMb2FkZXI6IHNob3dTdGF0c0xvYWRlciwgZ3JhcGhUb3RhbDogZ3JhcGhUb3RhbCwgcHVibGlzaGVyU3RhdHM6IHB1Ymxpc2hlclN0YXRzLCBzaG93UHVibGlzaGVyU3RhdHM6IHNob3dQdWJsaXNoZXJTdGF0cywgc2hvd0dyYXBoTG9hZGVyOiBzaG93R3JhcGhMb2FkZXIsIHVzZXJJZDogdXNlcklkLCBmb3JtYXREYXRlOiBmb3JtYXREYXRlLCBwcm94eVVzZXI6IHByb3h5VXNlciwgZmV0Y2hTdGF0c0RhdGE6IGZldGNoU3RhdHNEYXRhLCBEYXNoYm9hcmRHcmFwaDogRGFzaGJvYXJkR3JhcGhfdnVlXzEuZGVmYXVsdCwgTG9hZGVyOiBQcm9ncmVzc0xvYWRlcl92dWVfMS5kZWZhdWx0LCB0cnVuY2F0ZVRleHQ6IHV0aWxzXzEudHJ1bmNhdGVUZXh0LCBTaGltbWVyTG9hZGluZzogU2hpbW1lckxvYWRpbmdfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgUHJvZ3Jlc3NMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0FjdGl2aXR5VXBsb2FkJyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBmaWxlID0gKDAsIHZ1ZV8yLnJlZikoKSwgZXJyb3IgPSAoMCwgdnVlXzIucmVmKSgnJyksIGxvYWRlciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKSwgbG9hZGVyVGV4dCA9ICgwLCB2dWVfMi5yZWYpKHRyYW5zbGF0ZS5jb21tb25UZXh0KCdwbGVhc2Vfd2FpdCcpKTtcbiAgICAgICAgZnVuY3Rpb24gdXBsb2FkRmlsZSgpIHtcbiAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBsb2FkZXJUZXh0LnZhbHVlID0gdHJhbnNsYXRlLmNvbW1vblRleHQoJ3VwbG9hZGluZ19jc3ZfeG1sX2ZpbGUnKTtcbiAgICAgICAgICAgIHZhciBhY3Rpdml0eSA9IGZpbGUudmFsdWUuZmlsZXMubGVuZ3RoID8gZmlsZS52YWx1ZS5maWxlc1swXSA6ICcnO1xuICAgICAgICAgICAgdmFyIGNvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB2YXIgZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICAgICAgZGF0YS5hcHBlbmQoJ2FjdGl2aXR5JywgYWN0aXZpdHkpO1xuICAgICAgICAgICAgZXJyb3IudmFsdWUgPSAnJztcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvaW1wb3J0JywgZGF0YSwgY29uZmlnKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgaWYgKGZpbGUudmFsdWUuZmlsZXMubGVuZ3RoICYmICgoX2EgPSByZXMgPT09IG51bGwgfHwgcmVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXMuZGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnN1Y2Nlc3MpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2ltcG9ydC9saXN0JztcbiAgICAgICAgICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlcnJvci52YWx1ZSA9IE9iamVjdC52YWx1ZXMocmVzLmRhdGEuZXJyb3JzKS5qb2luKCcgJyk7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBlcnJvci52YWx1ZSA9IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdlcnJvcl9oYXNfb2NjdXJyZWRfd2hpbGVfdXBsb2FkaW5nX2ZpbGUnKTtcbiAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGRvd25sb2FkRXhjZWwoKSB7XG4gICAgICAgICAgICAoMCwgYXhpb3NfMS5kZWZhdWx0KSh7XG4gICAgICAgICAgICAgICAgdXJsOiAnaW1wb3J0L2Rvd25sb2FkL2NzdicsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicsXG4gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlLmRhdGFdLCB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9jc3YnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSAnSW1wb3J0X0FjdGl2aXR5X0NTVl9UZW1wbGF0ZS5jc3YnO1xuICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCBmaWxlOiBmaWxlLCBlcnJvcjogZXJyb3IsIGxvYWRlcjogbG9hZGVyLCBsb2FkZXJUZXh0OiBsb2FkZXJUZXh0LCB1cGxvYWRGaWxlOiB1cGxvYWRGaWxlLCBkb3dubG9hZEV4Y2VsOiBkb3dubG9hZEV4Y2VsLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIFByb2dyZXNzTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIFhsc1VwbG9hZEluZGljYXRvcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9YbHNVcGxvYWRJbmRpY2F0b3IudnVlXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIFRhYmxlUGFnaW5hdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlXCIpKTtcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdBY3Rpdml0eVhsc1VwbG9hZCcsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgX2I7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgeGxzSW5kaWNhdG9yTW91bnRlZCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHhsc0ZhaWxlZE1lc3NhZ2UgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciB1cGxvYWRUeXBlID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIHNob3dEb3dubG9hZERyb3Bkb3duID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgYWN0aXZpdHlOYW1lID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgZmlsZUNvdW50ID0gKDAsIHZ1ZV8yLnJlZikoMCk7XG4gICAgICAgIHZhciB4bHNEb3dubG9hZFN0YXR1cyA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGRvd25sb2FkQ29tcGxldGVkID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcHVibGlzaGluZ0FjdGl2aXRpZXMgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgdG9hc3RNZXNzYWdlID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgdG9hc3RUeXBlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0Rvd25sb2FkQ29kZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGlzRW1wdHkgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB4bHNGYWlsZWQgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBjdXJyZW50QWN0aXZpdHkgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciB0b2FzdFZpc2liaWxpdHkgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB4bHNEYXRhID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0NhbmNlbE1vZGVsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgYWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgc2VsZWN0QWxsVmFsdWUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB1cGxvYWRDb21wbGV0ZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvdGFsQ291bnQgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgcHJvY2Vzc2VkQ291bnQgPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIGZpbGUgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgZXJyb3IgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBsb2FkZXIgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBsb2FkZXJUZXh0ID0gKDAsIHZ1ZV8yLnJlZikoJ1BsZWFzZSBXYWl0Jyk7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgc2VhcmNoVmFsdWUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBkaXJlY3Rpb24gPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBwcm9jZXNzaW5nID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIHNvcnRpbmdEaXJlY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkaXJlY3Rpb24udmFsdWUgPT09ICdhc2MnXG4gICAgICAgICAgICAgICAgPyAoZGlyZWN0aW9uLnZhbHVlID0gJ2Rlc2MnKVxuICAgICAgICAgICAgICAgIDogKGRpcmVjdGlvbi52YWx1ZSA9ICdhc2MnKTtcbiAgICAgICAgICAgIGZldGNoQWN0aXZpdGllcygxLCBkaXJlY3Rpb24udmFsdWUpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZG93bmxvYWRBcGlVcmwgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBkb3dubG9hZGluZyA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHBhID0gKDAsIGNvcmVfMS51c2VTdG9yYWdlKSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywge1xuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IChfYiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwdWJsaXNoaW5nQWN0aXZpdGllcycpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiB7fSxcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPCA2KSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0QWxsVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBtYXBBY3Rpdml0eU5hbWUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnYWN0aXZpdHknOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ0Jhc2ljIEFjdGl2aXR5IEVsZW1lbnRzJztcbiAgICAgICAgICAgICAgICBjYXNlICdwZXJpb2QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1BlcmlvZCc7XG4gICAgICAgICAgICAgICAgY2FzZSAnaW5kaWNhdG9yJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdJbmRpY2F0b3JzIGV4Y2VwdCBQZXJpb2QnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3Jlc3VsdCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnUmVzdWx0IGV4Y2VwdCBJbmRpY2F0b3JzIGFuZCBQZXJpb2QnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnN0YXJ0QnVsa1B1Ymxpc2g7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXMudmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICBwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocGEudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgYWN0aXZpdHlMZW5ndGggPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHJldHVybiAhKChfYSA9IHVwbG9hZFR5cGUgPT09IG51bGwgfHwgdXBsb2FkVHlwZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdXBsb2FkVHlwZS52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnN0YXJ0WGxzRG93bmxvYWQ7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY2hlY2tEb3dubG9hZFN0YXR1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuY2xvc2VYbHNNb2RlbDsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY2hlY2tEb3dubG9hZFN0YXR1cygpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNoZWNrRG93bmxvYWRTdGF0dXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkb3dubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIGNoZWNrRG93bmxvYWQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL2FjdGl2aXRpZXMvZG93bmxvYWQteGxzLXByb2dyZXNzLXN0YXR1cycpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICBmaWxlQ291bnQudmFsdWUgPSByZXMuZGF0YS5maWxlX2NvdW50O1xuICAgICAgICAgICAgICAgICAgICB4bHNEb3dubG9hZFN0YXR1cy52YWx1ZSA9IHJlcy5kYXRhLnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRBcGlVcmwudmFsdWUgPSByZXMuZGF0YS51cmw7XG4gICAgICAgICAgICAgICAgICAgIGRvd25sb2FkaW5nLnZhbHVlID0gISFyZXMuZGF0YS5zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIGlmICh4bHNEb3dubG9hZFN0YXR1cy52YWx1ZSA9PT0gJ2NvbXBsZXRlZCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0Rvd25sb2FkU3RhdHVzLnZhbHVlID09PSAnZmFpbGVkJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgIXJlcy5kYXRhLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0Rvd25sb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgMzAwMCk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBkb3dubG9hZENvZGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgYXBpVXJsLCBhY3Rpdml0aWVzXzEsIHJlcSwgYmxvYiwgbGluaztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwaVVybCA9ICcvYWN0aXZpdGllcy9kb3dubG9hZC1jb2Rlcy8/YWN0aXZpdGllcz1hbGwnO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0b3JlLnN0YXRlLnNlbGVjdGVkQWN0aXZpdGllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllc18xID0gc3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzLmpvaW4oJywnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGlVcmwgPSBcIi9hY3Rpdml0aWVzL2Rvd25sb2FkLWNvZGVzLz9hY3Rpdml0aWVzPVtcIi5jb25jYXQoYWN0aXZpdGllc18xLCBcIl1cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCAoMCwgYXhpb3NfMS5kZWZhdWx0KSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ2dldCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYXBpVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2IgPSBuZXcgQmxvYihbcmVxLmRhdGFdLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9ICdpZGVudGlmaWVycy54bHN4JztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3RvcmUuc3RhdGUuY2FuY2VsVXBsb2FkO1xuICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjYW5jZWxJbXBvcnQoKTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgaW1wb3J0QW55d2F5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIi9pbXBvcnQveGxzXCIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHhsc0RhdGEudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB1cGxvYWRGaWxlKCk7XG4gICAgICAgICAgICAgICAgdXBsb2FkVHlwZS52YWx1ZSA9IFtdO1xuICAgICAgICAgICAgICAgIHNob3dDYW5jZWxNb2RlbC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiAodG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2UpOyB9LCAxNTAwMCk7XG4gICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZWxlY3RBbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoIXNlbGVjdEFsbFZhbHVlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGlkcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgT2JqZWN0LnZhbHVlcyhhY3Rpdml0aWVzLmRhdGEpLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlkcy5wdXNoKGFjdGl2aXRpZXMuZGF0YVtpXVsnaWQnXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTZWxlY3RlZEFjdGl2aXRpZXMnLCBpZHMpO1xuICAgICAgICAgICAgICAgIHNlbGVjdEFsbFZhbHVlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTZWxlY3RlZEFjdGl2aXRpZXMnLCBbXSk7XG4gICAgICAgICAgICAgICAgc2VsZWN0QWxsVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgZnVuY3Rpb24gdXBsb2FkRmlsZSgpIHtcbiAgICAgICAgICAgIGlmICgheGxzRGF0YS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9ICdGZXRjaGluZyAueGxzIGZpbGUnO1xuICAgICAgICAgICAgICAgIHZhciBhY3Rpdml0eSA9IGZpbGUudmFsdWUuZmlsZXMubGVuZ3RoID8gZmlsZS52YWx1ZS5maWxlc1swXSA6ICcnO1xuICAgICAgICAgICAgICAgIHZhciB4bHNUeXBlID0gdXBsb2FkVHlwZTtcbiAgICAgICAgICAgICAgICB2YXIgY29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnY29udGVudC10eXBlJzogJ211bHRpcGFydC9mb3JtLWRhdGEnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCgnYWN0aXZpdHknLCBhY3Rpdml0eSk7XG4gICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoJ3hsc1R5cGUnLCB4bHNUeXBlLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBlcnJvci52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAucG9zdCgnL2ltcG9ydC94bHMnLCBkYXRhLCBjb25maWcpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZS52YWx1ZS5maWxlcy5sZW5ndGggJiYgKChfYSA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3VjY2VzcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrWGxzc3RhdHVzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvci52YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLmRhdGEuZXJyb3JzICYmIE9iamVjdC52YWx1ZXMocmVzLmRhdGEuZXJyb3JzKS5qb2luKCcgJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvci52YWx1ZSA9ICdFcnJvciBoYXMgb2NjdXJlZCB3aGlsZSB1cGxvYWRpbmcgZmlsZS4nO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZFR5cGUudmFsdWUgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgZmlsZS52YWx1ZS52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzaG93Q2FuY2VsTW9kZWwudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGZldGNoQWN0aXZpdGllcyhhY3RpdmVfcGFnZSwgZGlyZWN0aW9uKSB7XG4gICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09PSB2b2lkIDApIHsgZGlyZWN0aW9uID0gJyc7IH1cbiAgICAgICAgICAgIHZhciBhcGlVcmwgPSBcIi9hY3Rpdml0aWVzL3BhZ2UvXCIuY29uY2F0KGFjdGl2ZV9wYWdlKTtcbiAgICAgICAgICAgIHZhciBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdsaW1pdCcsICc2Jyk7XG4gICAgICAgICAgICBpZiAoZGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnb3JkZXJCeScsICd1cGRhdGVkX2F0Jyk7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnZGlyZWN0aW9uJywgZGlyZWN0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWFyY2hWYWx1ZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ3EnLCBzZWFyY2hWYWx1ZS52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KGFwaVVybCwgeyBwYXJhbXM6IHBhcmFtcyB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGFjdGl2aXRpZXMsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSAhcmVzcG9uc2UuZGF0YS5kYXRhLmxlbmd0aDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjYW5jZWxJbXBvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZGVsZXRlKFwiL2ltcG9ydC94bHNcIikudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgeGxzRGF0YS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHVwbG9hZFR5cGUudmFsdWUgPSBbXTtcbiAgICAgICAgICAgICAgICBmaWxlLnZhbHVlLnZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBzaG93Q2FuY2VsTW9kZWwudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKTsgfSwgMTUwMDApO1xuICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3RUeXBlLnZhbHVlID0gcmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcG9sbGluZ0Zvclhsc1N0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBjaGVja1N0YXR1cyA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygncG9sbGluZycsIHhsc0RhdGEpO1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9pbXBvcnQveGxzL3N0YXR1cycpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfaiwgX2ssIF9sLCBfbTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCgoX2EgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubWVzc2FnZSkgPT09ICdTdGFydGVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXNldFxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxDb3VudC52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWRDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZE1lc3NhZ2UudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsQ291bnQudmFsdWUgPSAoX2IgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudG90YWxfY291bnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWRDb3VudC52YWx1ZSA9IChfYyA9IHJlcy5kYXRhLmRhdGEpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5wcm9jZXNzZWRfY291bnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWQudmFsdWUgPSAhKChfZCA9IHJlcy5kYXRhLmRhdGEpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5zdWNjZXNzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZE1lc3NhZ2UudmFsdWUgPSAoX2UgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoKChfZiA9IHJlcy5kYXRhLmRhdGEpID09PSBudWxsIHx8IF9mID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZi5tZXNzYWdlKSA9PT0gJ1Byb2Nlc3NpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzaW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoISgoX2ggPSAoX2cgPSByZXMuZGF0YSkgPT09IG51bGwgfHwgX2cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9nLmRhdGEpID09PSBudWxsIHx8IF9oID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfaC5zdWNjZXNzKSB8fCAoKF9rID0gKF9qID0gcmVzLmRhdGEpID09PSBudWxsIHx8IF9qID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfai5kYXRhKSA9PT0gbnVsbCB8fCBfayA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2subWVzc2FnZSkgPT09ICdDb21wbGV0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tTdGF0dXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICgoKF9tID0gKF9sID0gcmVzLmRhdGEpID09PSBudWxsIHx8IF9sID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbC5kYXRhKSA9PT0gbnVsbCB8fCBfbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX20ubWVzc2FnZSkgPT09ICdDb21wbGV0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZENvbXBsZXRlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgMjUwMCk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjaGVja1hsc3N0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9pbXBvcnQveGxzL3Byb2dyZXNzX3N0YXR1cycpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2g7XG4gICAgICAgICAgICAgICAgdXBsb2FkQ29tcGxldGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBhY3Rpdml0eU5hbWUudmFsdWUgPSAoX2IgPSAoX2EgPSByZXMgPT09IG51bGwgfHwgcmVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXMuZGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnN0YXR1cykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRBY3Rpdml0eS52YWx1ZSA9IG1hcEFjdGl2aXR5TmFtZShhY3Rpdml0eU5hbWUudmFsdWUpO1xuICAgICAgICAgICAgICAgIHhsc0RhdGEudmFsdWUgPSBPYmplY3Qua2V5cyhyZXMuZGF0YS5zdGF0dXMpLmxlbmd0aCA+IDA7XG4gICAgICAgICAgICAgICAgaWYgKCgoX2QgPSAoX2MgPSByZXMgPT09IG51bGwgfHwgcmVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXMuZGF0YSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnN0YXR1cykgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLnN0YXR1cykgPT09ICdjb21wbGV0ZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZENvbXBsZXRlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKChfZiA9IChfZSA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Uuc3RhdHVzKSA9PT0gbnVsbCB8fCBfZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Yuc3RhdHVzKSA9PT0gJ2ZhaWxlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkTWVzc2FnZS52YWx1ZSA9IChfaCA9IChfZyA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2cuc3RhdHVzKSA9PT0gbnVsbCB8fCBfaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2gubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoT2JqZWN0LmtleXMocmVzLmRhdGEuc3RhdHVzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vcmVzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsQ291bnQudmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2luZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkQ291bnQudmFsdWUgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWRNZXNzYWdlLnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2xsaW5nRm9yWGxzU3RhdHVzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCd4bHNGYWlsZWRNZXNzYWdlJywgeGxzRmFpbGVkTWVzc2FnZSk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnYWN0aXZpdHlMZW5ndGgnLCBhY3Rpdml0eUxlbmd0aCk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnY29tcGxldGVkJywgdXBsb2FkQ29tcGxldGUpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ3Byb2Nlc3NpbmcnLCBwcm9jZXNzaW5nKTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5jb21wbGV0ZVhsc0Rvd25sb2FkOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGRvd25sb2FkQ29tcGxldGVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRYbHNEb3dubG9hZCcsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHhsc0luZGljYXRvck1vdW50ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZldGNoQWN0aXZpdGllcygxKTtcbiAgICAgICAgICAgIGNoZWNrWGxzc3RhdHVzKCk7XG4gICAgICAgICAgICBjaGVja0Rvd25sb2FkU3RhdHVzKCk7XG4gICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllcy52YWx1ZSA9XG4gICAgICAgICAgICAgICAgcGEudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMgJiYgT2JqZWN0LmtleXMocGEudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMpO1xuICAgICAgICAgICAgeGxzSW5kaWNhdG9yTW91bnRlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ3hsc0ZhaWxlZE1lc3NhZ2UnLCB4bHNGYWlsZWRNZXNzYWdlKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdhY3Rpdml0eUxlbmd0aCcsIGFjdGl2aXR5TGVuZ3RoKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCd4bHNJbmRpY2F0b3JNb3VudGVkJywgeGxzSW5kaWNhdG9yTW91bnRlZCk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnZG93bmxvYWRpbmcnLCBkb3dubG9hZGluZyk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgneGxzRG93bmxvYWRTdGF0dXMnLCB4bHNEb3dubG9hZFN0YXR1cyk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnZG93bmxvYWRBcGlVcmwnLCBkb3dubG9hZEFwaVVybCk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnYWN0aXZpdGllcycsIHB1Ymxpc2hpbmdBY3Rpdml0aWVzKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdmaWxlQ291bnQnLCBmaWxlQ291bnQpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB4bHNJbmRpY2F0b3JNb3VudGVkOiB4bHNJbmRpY2F0b3JNb3VudGVkLCB4bHNGYWlsZWRNZXNzYWdlOiB4bHNGYWlsZWRNZXNzYWdlLCB1cGxvYWRUeXBlOiB1cGxvYWRUeXBlLCBzaG93RG93bmxvYWREcm9wZG93bjogc2hvd0Rvd25sb2FkRHJvcGRvd24sIGFjdGl2aXR5TmFtZTogYWN0aXZpdHlOYW1lLCBmaWxlQ291bnQ6IGZpbGVDb3VudCwgeGxzRG93bmxvYWRTdGF0dXM6IHhsc0Rvd25sb2FkU3RhdHVzLCBkb3dubG9hZENvbXBsZXRlZDogZG93bmxvYWRDb21wbGV0ZWQsIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiBwdWJsaXNoaW5nQWN0aXZpdGllcywgdG9hc3RNZXNzYWdlOiB0b2FzdE1lc3NhZ2UsIHRvYXN0VHlwZTogdG9hc3RUeXBlLCBzaG93RG93bmxvYWRDb2RlOiBzaG93RG93bmxvYWRDb2RlLCBpc0VtcHR5OiBpc0VtcHR5LCB4bHNGYWlsZWQ6IHhsc0ZhaWxlZCwgY3VycmVudEFjdGl2aXR5OiBjdXJyZW50QWN0aXZpdHksIHRvYXN0VmlzaWJpbGl0eTogdG9hc3RWaXNpYmlsaXR5LCB4bHNEYXRhOiB4bHNEYXRhLCBzaG93Q2FuY2VsTW9kZWw6IHNob3dDYW5jZWxNb2RlbCwgYWN0aXZpdGllczogYWN0aXZpdGllcywgc2VsZWN0QWxsVmFsdWU6IHNlbGVjdEFsbFZhbHVlLCB1cGxvYWRDb21wbGV0ZTogdXBsb2FkQ29tcGxldGUsIHRvdGFsQ291bnQ6IHRvdGFsQ291bnQsIHByb2Nlc3NlZENvdW50OiBwcm9jZXNzZWRDb3VudCwgZmlsZTogZmlsZSwgZXJyb3I6IGVycm9yLCBsb2FkZXI6IGxvYWRlciwgbG9hZGVyVGV4dDogbG9hZGVyVGV4dCwgc3RvcmU6IHN0b3JlLCBzZWFyY2hWYWx1ZTogc2VhcmNoVmFsdWUsIGRpcmVjdGlvbjogZGlyZWN0aW9uLCBwcm9jZXNzaW5nOiBwcm9jZXNzaW5nLCBzb3J0aW5nRGlyZWN0aW9uOiBzb3J0aW5nRGlyZWN0aW9uLCBkb3dubG9hZEFwaVVybDogZG93bmxvYWRBcGlVcmwsIGRvd25sb2FkaW5nOiBkb3dubG9hZGluZywgcGE6IHBhLCBtYXBBY3Rpdml0eU5hbWU6IG1hcEFjdGl2aXR5TmFtZSwgYWN0aXZpdHlMZW5ndGg6IGFjdGl2aXR5TGVuZ3RoLCBjaGVja0Rvd25sb2FkU3RhdHVzOiBjaGVja0Rvd25sb2FkU3RhdHVzLCBkb3dubG9hZENvZGU6IGRvd25sb2FkQ29kZSwgaW1wb3J0QW55d2F5OiBpbXBvcnRBbnl3YXksIHNlbGVjdEFsbDogc2VsZWN0QWxsLCB1cGxvYWRGaWxlOiB1cGxvYWRGaWxlLCBmZXRjaEFjdGl2aXRpZXM6IGZldGNoQWN0aXZpdGllcywgY2FuY2VsSW1wb3J0OiBjYW5jZWxJbXBvcnQsIHBvbGxpbmdGb3JYbHNTdGF0dXM6IHBvbGxpbmdGb3JYbHNTdGF0dXMsIGNoZWNrWGxzc3RhdHVzOiBjaGVja1hsc3N0YXR1cywgQnRuQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnRfdnVlXzEuZGVmYXVsdCwgSG92ZXJUZXh0OiBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCwgTG9hZGVyOiBQcm9ncmVzc0xvYWRlcl92dWVfMS5kZWZhdWx0LCBYbHNVcGxvYWRJbmRpY2F0b3I6IFhsc1VwbG9hZEluZGljYXRvcl92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LCBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LCBQYWdpbmF0aW9uOiBUYWJsZVBhZ2luYXRpb25fdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBQcm9ncmVzc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIikpO1xudmFyIEltcG9ydFBsYWNlaG9sZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL0ltcG9ydFBsYWNlaG9sZGVyLnZ1ZVwiKSk7XG52YXIgTGlzdEVsZW1lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vTGlzdEVsZW1lbnQudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0ltcG9ydExpc3QnLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGFjdGl2aXRpZXMgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHt9KTtcbiAgICAgICAgdmFyIHNlbGVjdGVkQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoW10pO1xuICAgICAgICB2YXIgc2VsZWN0ZWRDb3VudCA9ICgwLCB2dWVfMi5yZWYpKDApO1xuICAgICAgICB2YXIgYWN0aXZpdGllc0xlbmd0aCA9ICgwLCB2dWVfMi5yZWYpKDApO1xuICAgICAgICB2YXIgbG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2VsZWN0QWxsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgbG9hZGVyVGV4dCA9ICgwLCB2dWVfMi5yZWYpKHRyYW5zbGF0ZS5jb21tb25UZXh0KCdwbGVhc2Vfd2FpdCcpKTtcbiAgICAgICAgdmFyIHRhYmxlUm93ID0gKDAsIHZ1ZV8yLnJlZikoe30pO1xuICAgICAgICB2YXIgdGFibGVXaWR0aCA9ICgwLCB2dWVfMi5yZWYpKHt9KTtcbiAgICAgICAgdmFyIHRpbWVyO1xuICAgICAgICB2YXIgZ2V0RGltZW5zaW9ucyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIFs0IC8qeWllbGQqLywgKDAsIHZ1ZV8yLm5leHRUaWNrKSgpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVXaWR0aC52YWx1ZSA9IHRhYmxlUm93ID09PSBudWxsIHx8IHRhYmxlUm93ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YWJsZVJvdy52YWx1ZVsnMCddLmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZ2V0RGltZW5zaW9ucyk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZ2V0RGltZW5zaW9ucyk7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdwbGVhc2Vfd2FpdCcpO1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgIHRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAuZ2V0KCcvaW1wb3J0L2NoZWNrX3N0YXR1cycpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihhY3Rpdml0aWVzLCByZXMuZGF0YS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllc0xlbmd0aC52YWx1ZSA9IHJlcy5kYXRhLmRhdGEubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdGF0dXMgPT09ICdlcnJvcicgfHwgKCFyZXMuZGF0YS5kYXRhICYmIGNvdW50ID49IDQwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChnZXREaW1lbnNpb25zLCAyMDApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCAzMDAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVNlbGVjdGVkQWN0aXZpdGllcyhhY3Rpdml0eV9pZCkge1xuICAgICAgICAgICAgdmFyIGluZGV4ID0gc2VsZWN0ZWRBY3Rpdml0aWVzLmluZGV4T2YoYWN0aXZpdHlfaWQpO1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGFjdGl2aXRpZXNbYWN0aXZpdHlfaWRdWydlcnJvcnMnXSkuaW5kZXhPZignY3JpdGljYWwnKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEFjdGl2aXRpZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudC52YWx1ZSA9IHNlbGVjdGVkQ291bnQudmFsdWUgLSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRBY3Rpdml0aWVzLnB1c2goYWN0aXZpdHlfaWQpO1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50LnZhbHVlID0gc2VsZWN0ZWRDb3VudC52YWx1ZSArIDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHNlbGVjdEFsbEFjdGl2aXRpZXMoKSB7XG4gICAgICAgICAgICBzZWxlY3RBbGwudmFsdWUgPSAhc2VsZWN0QWxsLnZhbHVlO1xuICAgICAgICAgICAgc2VsZWN0ZWRDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgICAgICBzZWxlY3RlZEFjdGl2aXRpZXMubGVuZ3RoID0gMDtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGFjdGl2aXRpZXMpLmZvckVhY2goZnVuY3Rpb24gKGFjdGl2aXR5X2lkKSB7XG4gICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gc2VsZWN0ZWRBY3Rpdml0aWVzLmluZGV4T2YoYWN0aXZpdHlfaWQpO1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhhY3Rpdml0aWVzW2FjdGl2aXR5X2lkXVsnZXJyb3JzJ10pLmluZGV4T2YoJ2NyaXRpY2FsJykgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RBbGwudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQWN0aXZpdGllcy5wdXNoKGFjdGl2aXR5X2lkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ291bnQudmFsdWUgPSBzZWxlY3RlZENvdW50LnZhbHVlICsgMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQWN0aXZpdGllcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoIXNlbGVjdEFsbC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ291bnQudmFsdWUgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGltcG9ydEFjdGl2aXRpZXMoKSB7XG4gICAgICAgICAgICBsb2FkZXJUZXh0LnZhbHVlID0gdHJhbnNsYXRlLmNvbW1vblRleHQoJ2ltcG9ydGluZ19jc3ZfeG1sX2ZpbGUnKTtcbiAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL2ltcG9ydC9hY3Rpdml0eScsIHtcbiAgICAgICAgICAgICAgICBhY3Rpdml0aWVzOiBzZWxlY3RlZEFjdGl2aXRpZXMsXG4gICAgICAgICAgICAgICAgZmlsZXR5cGU6ICdjc3YnLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCBhY3Rpdml0aWVzOiBhY3Rpdml0aWVzLCBzZWxlY3RlZEFjdGl2aXRpZXM6IHNlbGVjdGVkQWN0aXZpdGllcywgc2VsZWN0ZWRDb3VudDogc2VsZWN0ZWRDb3VudCwgYWN0aXZpdGllc0xlbmd0aDogYWN0aXZpdGllc0xlbmd0aCwgbG9hZGVyOiBsb2FkZXIsIHNlbGVjdEFsbDogc2VsZWN0QWxsLCBsb2FkZXJUZXh0OiBsb2FkZXJUZXh0LCB0YWJsZVJvdzogdGFibGVSb3csIHRhYmxlV2lkdGg6IHRhYmxlV2lkdGgsIHRpbWVyOiB0aW1lciwgZ2V0RGltZW5zaW9uczogZ2V0RGltZW5zaW9ucywgdXBkYXRlU2VsZWN0ZWRBY3Rpdml0aWVzOiB1cGRhdGVTZWxlY3RlZEFjdGl2aXRpZXMsIHNlbGVjdEFsbEFjdGl2aXRpZXM6IHNlbGVjdEFsbEFjdGl2aXRpZXMsIGltcG9ydEFjdGl2aXRpZXM6IGltcG9ydEFjdGl2aXRpZXMsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsIExvYWRlcjogUHJvZ3Jlc3NMb2FkZXJfdnVlXzEuZGVmYXVsdCwgUGxhY2Vob2xkZXI6IEltcG9ydFBsYWNlaG9sZGVyX3Z1ZV8xLmRlZmF1bHQsIExpc3RFbGVtZW50OiBMaXN0RWxlbWVudF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBTaGltbWVyTG9hZGluZ192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9TaGltbWVyTG9hZGluZy52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0ltcG9ydFBsYWNlaG9sZGVyJyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBTaGltbWVyOiBTaGltbWVyTG9hZGluZ192dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0xpc3RFbGVtZW50JyxcbiAgICBwcm9wczoge1xuICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGluZGV4OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgd2lkdGg6IHsgdHlwZTogTnVtYmVyLCByZXF1aXJlZDogZmFsc2UsIGRlZmF1bHQ6IDAgfSxcbiAgICAgICAgc2VsZWN0ZWRBY3Rpdml0aWVzOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ3NlbGVjdEVsZW1lbnQnXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2UsIGVtaXQgPSBfYS5lbWl0O1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgYWN0aXZlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0NyaXRpY2FsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0Vycm9yID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd1dhcm5pbmcgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBhY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKShbXSk7XG4gICAgICAgIHZhciBjcml0aWNhbFRvZ2dsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVycm9yVG9nZ2xlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgd2FybmluZ1RvZ2dsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgZnVuY3Rpb24gdG9nZ2xlRXJyb3IoKSB7XG4gICAgICAgICAgICBhY3RpdmUudmFsdWUgPSAhYWN0aXZlLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzZWxlY3RFbGVtZW50ID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICAgICAgICBlbWl0KCdzZWxlY3RFbGVtZW50JywgaW5kZXgpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY291bnRFcnJvcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICAgICAgZm9yICh2YXIgdHlwZSBpbiBwcm9wcy5hY3Rpdml0eVsnZXJyb3JzJ10pIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpbmRleCBpbiBwcm9wcy5hY3Rpdml0eVsnZXJyb3JzJ11bdHlwZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gT2JqZWN0LmtleXMocHJvcHMuYWN0aXZpdHlbJ2Vycm9ycyddW3R5cGVdW2luZGV4XSkubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNyaXRpY2FsQWNjb3JkaW9uVG9nZ2xlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHNob3dDcml0aWNhbC52YWx1ZSA9ICFzaG93Q3JpdGljYWwudmFsdWU7XG4gICAgICAgICAgICB2YXIgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmNyaXRpY2FsLWRyb3Bkb3duLWNvbnRhaW5lcicpO1xuICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gKF9hID0gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJy5jcml0aWNhbC1kcm9wZG93bicpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgaWYgKGNyaXRpY2FsVG9nZ2xlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgICAgICBjcml0aWNhbFRvZ2dsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IGF1dG87XCI7XG4gICAgICAgICAgICAgICAgICAgIH0sIDYwMCk7XG4gICAgICAgICAgICAgICAgICAgIGNyaXRpY2FsVG9nZ2xlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBlcnJvckFjY29yZGlvblRvZ2dsZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBzaG93RXJyb3IudmFsdWUgPSAhc2hvd0Vycm9yLnZhbHVlO1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRUYXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5lcnJvci1kcm9wZG93bi1jb250YWluZXInKTtcbiAgICAgICAgICAgIHZhciBlbEhlaWdodCA9IChfYSA9IHRhcmdldCA9PT0gbnVsbCB8fCB0YXJnZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhcmdldC5xdWVyeVNlbGVjdG9yKCcuZXJyb3ItZHJvcGRvd24nKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIGlmIChlcnJvclRvZ2dsZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JUb2dnbGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBhdXRvO1wiO1xuICAgICAgICAgICAgICAgICAgICB9LCA2MDApO1xuICAgICAgICAgICAgICAgICAgICBlcnJvclRvZ2dsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgZXJyb3JMZW5ndGggPSBmdW5jdGlvbiAoY3VycmVudEVycm9yKSB7XG4gICAgICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICAgICAgLy8gaWYgKE9iamVjdC5rZXlzKHByb3BzLmFjdGl2aXR5KS5pbmRleE9mKCdlcnJvcnMnKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIE9iamVjdC52YWx1ZXMocHJvcHMuYWN0aXZpdHlbJ2Vycm9ycyddW2N1cnJlbnRFcnJvcl0pLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICAgIGNvdW50ICs9IE9iamVjdC5rZXlzKGl0ZW0pLmxlbmd0aDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgd2FybmluZ0FjY29yZGlvblRvZ2dsZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBzaG93V2FybmluZy52YWx1ZSA9ICFzaG93V2FybmluZy52YWx1ZTtcbiAgICAgICAgICAgIHZhciBjdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgdmFyIHRhcmdldCA9IGN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKCcud2FybmluZy1kcm9wZG93bi1jb250YWluZXInKTtcbiAgICAgICAgICAgIHZhciBlbEhlaWdodCA9IChfYSA9IHRhcmdldCA9PT0gbnVsbCB8fCB0YXJnZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhcmdldC5xdWVyeVNlbGVjdG9yKCcud2FybmluZy1kcm9wZG93bicpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgaWYgKHdhcm5pbmdUb2dnbGUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgICAgIHdhcm5pbmdUb2dnbGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBhdXRvO1wiO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgICAgICB3YXJuaW5nVG9nZ2xlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gcHJvcHMuc2VsZWN0ZWRBY3Rpdml0aWVzOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgc2VsZWN0ZWREYXRhID0gSlNPTi5wYXJzZShwcm9wcy5zZWxlY3RlZEFjdGl2aXRpZXMpO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGFjdGl2aXRpZXMsIHNlbGVjdGVkRGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBhY3Rpdml0aWVzLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgcHJvcHM6IHByb3BzLCBlbWl0OiBlbWl0LCBhY3RpdmU6IGFjdGl2ZSwgc2hvd0NyaXRpY2FsOiBzaG93Q3JpdGljYWwsIHNob3dFcnJvcjogc2hvd0Vycm9yLCBzaG93V2FybmluZzogc2hvd1dhcm5pbmcsIGFjdGl2aXRpZXM6IGFjdGl2aXRpZXMsIGNyaXRpY2FsVG9nZ2xlOiBjcml0aWNhbFRvZ2dsZSwgZXJyb3JUb2dnbGU6IGVycm9yVG9nZ2xlLCB3YXJuaW5nVG9nZ2xlOiB3YXJuaW5nVG9nZ2xlLCB0b2dnbGVFcnJvcjogdG9nZ2xlRXJyb3IsIHNlbGVjdEVsZW1lbnQ6IHNlbGVjdEVsZW1lbnQsIGNvdW50RXJyb3JzOiBjb3VudEVycm9ycywgY3JpdGljYWxBY2NvcmRpb25Ub2dnbGU6IGNyaXRpY2FsQWNjb3JkaW9uVG9nZ2xlLCBlcnJvckFjY29yZGlvblRvZ2dsZTogZXJyb3JBY2NvcmRpb25Ub2dnbGUsIGVycm9yTGVuZ3RoOiBlcnJvckxlbmd0aCwgd2FybmluZ0FjY29yZGlvblRvZ2dsZTogd2FybmluZ0FjY29yZGlvblRvZ2dsZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgWGxzTGlzdEVycm9yX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1hsc0xpc3RFcnJvci52dWVcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIFByb2dyZXNzTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZVwiKSk7XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1hsc0xpc3QnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHN0YXR1czoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIC8vIE51bWJlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZVxuICAgICAgICBpbXBvcnREYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZ2xvYmFsRXJyb3I6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBlcnJvckNvdW50OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBzZWxlY3RBbGwgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzb3J0T3JkZXIgPSAoMCwgdnVlXzIucmVmKSgnYXNjZWRpbmcnKTtcbiAgICAgICAgdmFyIHRhYmxlUm93ID0gKDAsIHZ1ZV8yLnJlZikoe30pO1xuICAgICAgICB2YXIgc2hvd0NyaXRpY2FsRXJyb3JNb2RlbCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dJZGVudGlmaWVyRXJyb3JNb2RlbCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKSwgbG9hZGVyVGV4dCA9ICgwLCB2dWVfMi5yZWYpKCdBZGRpbmcgYWN0aXZpdGllcycpO1xuICAgICAgICB2YXIgc2hvd0NyaXRpY2FsRXJyb3JNZXNzYWdlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0dMb2JhbEVycm9yID0gKDAsIHZ1ZV8yLnJlZikodHJ1ZSk7XG4gICAgICAgIHZhciBzZWxlY3RlZENvdW50ID0gKDAsIHZ1ZV8yLnJlZikoMCk7XG4gICAgICAgIHZhciBhY3Rpdml0aWVzTGVuZ3RoID0gKDAsIHZ1ZV8yLnJlZikoMCk7XG4gICAgICAgIHZhciBzZWxlY3RlZEFjdGl2aXRpZXMgPSAoMCwgdnVlXzIucmVmKShbXSk7XG4gICAgICAgIHZhciB0YWJsZVdpZHRoID0gKDAsIHZ1ZV8yLnJlZikoe30pO1xuICAgICAgICB2YXIgdG9hc3RNZXNzYWdlID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgdG9hc3RUeXBlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG9hc3RWaXNpYmlsaXR5ID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZ2V0RGltZW5zaW9ucyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2IpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9iLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIFs0IC8qeWllbGQqLywgKDAsIHZ1ZV8yLm5leHRUaWNrKSgpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVXaWR0aC52YWx1ZSA9IChfYSA9IHRhYmxlUm93ID09PSBudWxsIHx8IHRhYmxlUm93ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YWJsZVJvdy52YWx1ZVsnMCddKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xpZW50V2lkdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9O1xuICAgICAgICB2YXIgc29ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNvcnRPcmRlci52YWx1ZSA9PT0gJ2FzY2VuZGluZydcbiAgICAgICAgICAgICAgICA/IChzb3J0T3JkZXIudmFsdWUgPSAnZGVzY2VuZGluZycpXG4gICAgICAgICAgICAgICAgOiAoc29ydE9yZGVyLnZhbHVlID0gJ2FzY2VuZGluZycpO1xuICAgICAgICAgICAgdmFyIHNvcnRlZERhdGEgPSBwcm9wcy5pbXBvcnREYXRhO1xuICAgICAgICAgICAgc3dpdGNoIChwcm9wcy5zdGF0dXNbJ3RlbXBsYXRlJ10pIHtcbiAgICAgICAgICAgICAgICBjYXNlICdhY3Rpdml0eSc6XG4gICAgICAgICAgICAgICAgICAgIHNvcnRlZERhdGEuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuZGF0YS50aXRsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuZGF0YS50aXRsZVswXS5uYXJyYXRpdmUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIDwgYi5kYXRhLnRpdGxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IC0xO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAncmVzdWx0JzpcbiAgICAgICAgICAgICAgICAgICAgc29ydGVkRGF0YS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5kYXRhLnRpdGxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIDxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5kYXRhLnRpdGxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAtMTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3BlcmlvZCc6XG4gICAgICAgICAgICAgICAgICAgIHNvcnRlZERhdGEuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuZGF0YS50aXRsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuZGF0YS50aXRsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogLTE7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdpbmRpY2F0b3InOlxuICAgICAgICAgICAgICAgICAgICBzb3J0ZWREYXRhLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmRhdGEudGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLmRhdGEudGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IC0xO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGdldERpbWVuc2lvbnMpO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZ2V0RGltZW5zaW9ucygpO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGdldERpbWVuc2lvbnMpO1xuICAgICAgICAgICAgY2hlY2tDcml0aWNhbEVycm9yKCk7XG4gICAgICAgICAgICBpZiAocHJvcHMuZ2xvYmFsRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBzaG93SWRlbnRpZmllckVycm9yTW9kZWwudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWN0aXZpdGllc0xlbmd0aC52YWx1ZSA9IHByb3BzLmltcG9ydERhdGEubGVuZ3RoO1xuICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9IFwiQWRkaW5nIFwiLmNvbmNhdChwcm9wcy5zdGF0dXMudGVtcGxhdGUpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNhbmNlbEltcG9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dDcml0aWNhbEVycm9yTW9kZWwudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHNob3dHTG9iYWxFcnJvci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIi9pbXBvcnQveGxzXCIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiAodG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2UpOyB9LCAxNTAwMCk7XG4gICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvaW1wb3J0L3hscyc7XG4gICAgICAgICAgICAgICAgfSwgMjAwMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGRvd25sb2FkSWRlbnRpZmllckVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRleHQ7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3BzLmdsb2JhbEVycm9yID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIHRleHQgPSBPYmplY3QudmFsdWVzKHByb3BzLmdsb2JhbEVycm9yKS5qb2luKCdcXG4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBmaWxlID0gbmV3IEZpbGUoWydcXHVmZWZmJyArIHRleHRdLCAnaWRlbnRpZmllci1lcnJvcnMudHh0Jywge1xuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0L3BsYWluOmNoYXJzZXQ9VVRGLTgnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YXIgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XG4gICAgICAgICAgICB2YXIgYW5jaG9yVGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgYW5jaG9yVGFnLmhyZWYgPSB1cmw7XG4gICAgICAgICAgICBhbmNob3JUYWcuZG93bmxvYWQgPSBmaWxlLm5hbWU7XG4gICAgICAgICAgICBhbmNob3JUYWcuY2xpY2soKTtcbiAgICAgICAgICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjaGVja0NyaXRpY2FsRXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgY3JpdGljYWxBcnJ5ID0gcHJvcHMuaW1wb3J0RGF0YSAmJlxuICAgICAgICAgICAgICAgIHByb3BzLmltcG9ydERhdGEubWFwKGZ1bmN0aW9uIChkYXRhLCBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JMZW5ndGgoJ2NyaXRpY2FsJywgaW5kZXgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIHRvdGFsQ3JpcmljYWxFcnJvckNvdW50ID0gMDtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY3JpdGljYWxBcnJ5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdG90YWxDcmlyaWNhbEVycm9yQ291bnQgKz0gY3JpdGljYWxBcnJ5W2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRvdGFsQ3JpcmljYWxFcnJvckNvdW50ID4gMCkge1xuICAgICAgICAgICAgICAgIHNob3dDcml0aWNhbEVycm9yTWVzc2FnZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodG90YWxDcmlyaWNhbEVycm9yQ291bnQgPiAwIHx8ICgoX2EgPSBwcm9wcy5nbG9iYWxFcnJvcikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgc2hvd0NyaXRpY2FsRXJyb3JNb2RlbC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjb3VudEVycm9ycyA9IGZ1bmN0aW9uIChhY3Rpdml0eUluZGV4KSB7XG4gICAgICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICAgICAgZm9yICh2YXIgdHlwZSBpbiBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXSkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGluZGV4IGluIHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddW3R5cGVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IE9iamVjdC5rZXlzKHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddW3R5cGVdW2luZGV4XSkubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGFkZEFjdGl2aXRpZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAucG9zdChcIi9pbXBvcnQveGxzL2FjdGl2aXR5XCIsIHsgYWN0aXZpdGllczogc2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlIH0pXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgZXJyb3JMZW5ndGggPSBmdW5jdGlvbiAoZXJyb3JUeXBlLCBhY3Rpdml0eUluZGV4KSB7XG4gICAgICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICAgICAgZm9yICh2YXIgaW5kZXggaW4gcHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ11bZXJyb3JUeXBlXSkge1xuICAgICAgICAgICAgICAgIGNvdW50ICs9IE9iamVjdC5rZXlzKHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddW2Vycm9yVHlwZV1baW5kZXhdKS5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgICAgIH07XG4gICAgICAgIGZ1bmN0aW9uIHNlbGVjdEFsbEFjdGl2aXRpZXMoKSB7XG4gICAgICAgICAgICBzZWxlY3RBbGwudmFsdWUgPSAhc2VsZWN0QWxsLnZhbHVlO1xuICAgICAgICAgICAgc2VsZWN0ZWRDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgICAgICBzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUubGVuZ3RoID0gMDtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHByb3BzLmltcG9ydERhdGEpLmZvckVhY2goZnVuY3Rpb24gKGFjdGl2aXR5X2lkKSB7XG4gICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gc2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlLmluZGV4T2YoYWN0aXZpdHlfaWQpO1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5X2lkXVsnZXJyb3JzJ10pLmluZGV4T2YoJ2NyaXRpY2FsJykgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RBbGwudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQWN0aXZpdGllcy52YWx1ZS5wdXNoKGFjdGl2aXR5X2lkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ291bnQudmFsdWUgPSBzZWxlY3RlZENvdW50LnZhbHVlICsgMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQWN0aXZpdGllcy52YWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoIXNlbGVjdEFsbC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ291bnQudmFsdWUgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHNlbGVjdEFsbDogc2VsZWN0QWxsLCBzb3J0T3JkZXI6IHNvcnRPcmRlciwgdGFibGVSb3c6IHRhYmxlUm93LCBzaG93Q3JpdGljYWxFcnJvck1vZGVsOiBzaG93Q3JpdGljYWxFcnJvck1vZGVsLCBzaG93SWRlbnRpZmllckVycm9yTW9kZWw6IHNob3dJZGVudGlmaWVyRXJyb3JNb2RlbCwgbG9hZGVyOiBsb2FkZXIsIGxvYWRlclRleHQ6IGxvYWRlclRleHQsIHNob3dDcml0aWNhbEVycm9yTWVzc2FnZTogc2hvd0NyaXRpY2FsRXJyb3JNZXNzYWdlLCBzaG93R0xvYmFsRXJyb3I6IHNob3dHTG9iYWxFcnJvciwgc2VsZWN0ZWRDb3VudDogc2VsZWN0ZWRDb3VudCwgYWN0aXZpdGllc0xlbmd0aDogYWN0aXZpdGllc0xlbmd0aCwgc2VsZWN0ZWRBY3Rpdml0aWVzOiBzZWxlY3RlZEFjdGl2aXRpZXMsIHRhYmxlV2lkdGg6IHRhYmxlV2lkdGgsIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLCB0b2FzdFR5cGU6IHRvYXN0VHlwZSwgdG9hc3RWaXNpYmlsaXR5OiB0b2FzdFZpc2liaWxpdHksIHByb3BzOiBwcm9wcywgZ2V0RGltZW5zaW9uczogZ2V0RGltZW5zaW9ucywgc29ydDogc29ydCwgY2FuY2VsSW1wb3J0OiBjYW5jZWxJbXBvcnQsIGRvd25sb2FkSWRlbnRpZmllckVycm9yOiBkb3dubG9hZElkZW50aWZpZXJFcnJvciwgY2hlY2tDcml0aWNhbEVycm9yOiBjaGVja0NyaXRpY2FsRXJyb3IsIGNvdW50RXJyb3JzOiBjb3VudEVycm9ycywgYWRkQWN0aXZpdGllczogYWRkQWN0aXZpdGllcywgZXJyb3JMZW5ndGg6IGVycm9yTGVuZ3RoLCBzZWxlY3RBbGxBY3Rpdml0aWVzOiBzZWxlY3RBbGxBY3Rpdml0aWVzLCBYbHNMaXN0RXJyb3I6IFhsc0xpc3RFcnJvcl92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LCBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsIExvYWRlcjogUHJvZ3Jlc3NMb2FkZXJfdnVlXzEuZGVmYXVsdCwgQnRuQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnRfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIFJhZGlhbFByb2dyZXNzQmFyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL1JhZGlhbFByb2dyZXNzQmFyLnZ1ZVwiKSk7XG52YXIgT3JnYW5pc2F0aW9uRWxlbWVudHNfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vT3JnYW5pc2F0aW9uRWxlbWVudHMudnVlXCIpKTtcbnZhciBPcmdhbmlzYXRpb25FbGVtZW50c0RldGFpbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9PcmdhbmlzYXRpb25FbGVtZW50c0RldGFpbC52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciBPcmdhbml6YXRpb25QdWJsaXNoVW5wdWJsaXNoQnV0dG9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL09yZ2FuaXphdGlvblB1Ymxpc2hVbnB1Ymxpc2hCdXR0b24udnVlXCIpKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIGNvcmVfMiA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgRXJyb3JQb3BVcF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9FcnJvclBvcFVwLnZ1ZVwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdPcmdhbmlzYXRpb25EYXRhJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFJhZGlhbFByb2dyZXNzQmFyOiBSYWRpYWxQcm9ncmVzc0Jhcl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBPcmdhbmlzYXRpb25FbGVtZW50czogT3JnYW5pc2F0aW9uRWxlbWVudHNfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWw6IE9yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUHVibGlzaFVucHVibGlzaDogT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBFcnJvclBvcFVwOiBFcnJvclBvcFVwX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBlbGVtZW50czoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGdyb3Vwczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG9yZ2FuaXphdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHByb2dyZXNzOiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9hc3Q6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG1hbmRhdG9yeUNvbXBsZXRlZDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0dXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB1c2VyUm9sZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBzaG93U2lkZWJhciA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNjcmVlbldpZHRoID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciBfYSA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBwdWJsaXNoVmFsdWUgPSBfYVswXSwgcHVibGlzaFRvZ2dsZSA9IF9hWzFdO1xuICAgICAgICB2YXIgX2IgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgdW5wdWJsaXNoVmFsdWUgPSBfYlswXSwgdW5wdWJsaXNoVG9nZ2xlID0gX2JbMV07XG4gICAgICAgIHZhciBfYyA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBkZWxldGVWYWx1ZSA9IF9jWzBdLCBkZWxldGVUb2dnbGUgPSBfY1sxXTtcbiAgICAgICAgdmFyIF9kID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIGRvd25sb2FkVmFsdWUgPSBfZFswXSwgZG93bmxvYWRUb2dnbGUgPSBfZFsxXTtcbiAgICAgICAgdmFyIHBvc2l0aW9uWSA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICB2YXIgdG9nZ2xlU2lkZWJhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dTaWRlYmFyLnZhbHVlID0gIXNob3dTaWRlYmFyLnZhbHVlO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzEub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGNXaWR0aCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2FsY1dpZHRoKTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlID09PSAnc3VjY2VzcycgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcHJvcHMudG9hc3QubWVzc2FnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjYWxjV2lkdGggPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHNjcmVlbldpZHRoLnZhbHVlID0gZXZlbnQudGFyZ2V0LmlubmVyV2lkdGg7XG4gICAgICAgICAgICBpZiAoc2NyZWVuV2lkdGgudmFsdWUgPiAxMDI0KSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2hvd1NpZGViYXIudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGhhbmRsZVNjcm9sbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHBvc2l0aW9uWS52YWx1ZSA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgaXN0b3BWaXNpYmxlID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gcG9zaXRpb25ZLnZhbHVlID09PSAwO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlnbm9yZVVwZGF0ZXMgPSAoMCwgY29yZV8yLndhdGNoSWdub3JhYmxlKSh0b2FzdERhdGEsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSwge1xuICAgICAgICAgICAgZmx1c2g6ICdzeW5jJyxcbiAgICAgICAgfSkuaWdub3JlVXBkYXRlcztcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzaG93U2lkZWJhci52YWx1ZTsgfSwgZnVuY3Rpb24gKHNpZGViYXIpIHtcbiAgICAgICAgICAgIGlmIChzaWRlYmFyKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiB0b2FzdERhdGEudmlzaWJpbGl0eTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZ25vcmVUb2FzdFVwZGF0ZSgpO1xuICAgICAgICAgICAgfSwgMTAwMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlnbm9yZVRvYXN0VXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWdub3JlVXBkYXRlcyhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSAnJztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogR3JvdXBpbmcgYWxsIHRoZSBkYXRhJ3MgZm9yIHNjcm9sbCBmdW5jdGlvblxuICAgICAgICAgKlxuICAgICAgICAgKiB0aGlzIGRhdGEgaXMgY3JlYXRlZCB1c2luZyBwcm9wcy5ncm91cHMgYW5kIHByb3BzLmFjdGl2aXR5XG4gICAgICAgICAqL1xuICAgICAgICB2YXIgX2UgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIGdyb3VwcyA9IF9lLmdyb3Vwcywgb3JnYW5pemF0aW9uID0gX2Uub3JnYW5pemF0aW9uLCBlbGVtZW50cyA9IF9lLmVsZW1lbnRzLCBncm91cGVkRGF0YSA9IGdyb3Vwcy52YWx1ZSwgb3JnYW5pemF0aW9uUHJvcHMgPSBvcmdhbml6YXRpb24udmFsdWUsIG9yZ2FuaXphdGlvbkRhdGEgPSBncm91cHMudmFsdWUsIGVsZW1lbnRQcm9wcyA9IGVsZW1lbnRzLnZhbHVlO1xuICAgICAgICAvLyBnZW5lcmF0aW5nIGF2YWlsYWJsZSBlbGVtZW50c1xuICAgICAgICBPYmplY3Qua2V5cyhvcmdhbml6YXRpb25EYXRhKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgdmFyIGZsYWcgPSBmYWxzZTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKG9yZ2FuaXphdGlvbkRhdGFba2V5XVsnZWxlbWVudHMnXSkubWFwKGZ1bmN0aW9uIChrKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9yZ2FuaXphdGlvblByb3BzW2tdIHx8IHR5cGVvZiBvcmdhbml6YXRpb25Qcm9wc1trXSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uRGF0YVtrZXldWydlbGVtZW50cyddW2tdWydjb250ZW50J10gPVxuICAgICAgICAgICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uUHJvcHNba107XG4gICAgICAgICAgICAgICAgICAgIGZsYWcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50UHJvcHNba11bJ2hhc19kYXRhJ10gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG9yZ2FuaXphdGlvbkRhdGFba2V5XVtrXTtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFByb3BzW2tdWydoYXNfZGF0YSddID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsZW1lbnRQcm9wc1trXVsnY29yZSddID1cbiAgICAgICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uRGF0YVtrZXldWydlbGVtZW50cyddW2tdWydtYW5kYXRvcnknXTtcbiAgICAgICAgICAgICAgICBlbGVtZW50UHJvcHNba11bJ2NvbXBsZXRlZCddID1cbiAgICAgICAgICAgICAgICAgICAgayA9PT0gJ29yZ2FuaXNhdGlvbl9pZGVudGlmaWVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBvcmdhbml6YXRpb25Qcm9wc1snZWxlbWVudF9zdGF0dXMnXVsnaWRlbnRpZmllciddXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG9yZ2FuaXphdGlvblByb3BzWydlbGVtZW50X3N0YXR1cyddW2tdO1xuICAgICAgICAgICAgICAgIGVsZW1lbnRQcm9wc1trXVsnbm90X2NvbXBsZXRlZCddID0gIWVsZW1lbnRQcm9wc1trXVsnY29tcGxldGVkJ107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChmbGFnID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBvcmdhbml6YXRpb25EYXRhW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBnZW5lcmF0aW5nIGF2YWlsYWJsZSBjYXRlZ29yaWVzIG9mIGVsZW1lbnRzXG4gICAgICAgIE9iamVjdC5rZXlzKGdyb3VwZWREYXRhKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcmdhbml6YXRpb25EYXRhLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBlZERhdGFba2V5XVsnc3RhdHVzJ10gPSAnZW5hYmxlZCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBncm91cGVkRGF0YVtrZXldWydzdGF0dXMnXSA9ICdkaXNhYmxlZCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcHVibGlzaE1lc3NhZ2UgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcHVibGlzaFN0YXR1cyA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgaXNfcHVibGlzaGVkOiBvcmdhbml6YXRpb25Qcm9wcy5pc19wdWJsaXNoZWQsXG4gICAgICAgICAgICBzdGF0dXM6IG9yZ2FuaXphdGlvblByb3BzLnN0YXR1cyxcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgncHVibGlzaE1lc3NhZ2UnLCBwdWJsaXNoTWVzc2FnZSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnbWFuZGF0b3J5Q29tcGxldGVkJywgcHJvcHMubWFuZGF0b3J5Q29tcGxldGVkKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCd0b2FzdERhdGEnLCB0b2FzdERhdGEpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3B1Ymxpc2hTdGF0dXMnLCBwdWJsaXNoU3RhdHVzKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdlcnJvckRhdGEnLCBlcnJvckRhdGEpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3VzZXJSb2xlJywgcHJvcHMudXNlclJvbGUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3JvdXBlZERhdGE6IGdyb3VwZWREYXRhLFxuICAgICAgICAgICAgb3JnYW5pemF0aW9uRGF0YTogb3JnYW5pemF0aW9uRGF0YSxcbiAgICAgICAgICAgIHB1Ymxpc2hWYWx1ZTogcHVibGlzaFZhbHVlLFxuICAgICAgICAgICAgcHVibGlzaFRvZ2dsZTogcHVibGlzaFRvZ2dsZSxcbiAgICAgICAgICAgIHVucHVibGlzaFZhbHVlOiB1bnB1Ymxpc2hWYWx1ZSxcbiAgICAgICAgICAgIHVucHVibGlzaFRvZ2dsZTogdW5wdWJsaXNoVG9nZ2xlLFxuICAgICAgICAgICAgZGVsZXRlVmFsdWU6IGRlbGV0ZVZhbHVlLFxuICAgICAgICAgICAgZGVsZXRlVG9nZ2xlOiBkZWxldGVUb2dnbGUsXG4gICAgICAgICAgICBkb3dubG9hZFZhbHVlOiBkb3dubG9hZFZhbHVlLFxuICAgICAgICAgICAgZG93bmxvYWRUb2dnbGU6IGRvd25sb2FkVG9nZ2xlLFxuICAgICAgICAgICAgZWxlbWVudFByb3BzOiBlbGVtZW50UHJvcHMsXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIHB1Ymxpc2hTdGF0dXM6IHB1Ymxpc2hTdGF0dXMsXG4gICAgICAgICAgICBlcnJvckRhdGE6IGVycm9yRGF0YSxcbiAgICAgICAgICAgIHRvZ2dsZVNpZGViYXI6IHRvZ2dsZVNpZGViYXIsXG4gICAgICAgICAgICBzaG93U2lkZWJhcjogc2hvd1NpZGViYXIsXG4gICAgICAgICAgICBpc3RvcFZpc2libGU6IGlzdG9wVmlzaWJsZSxcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogdHJhbnNsYXRlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBjb3JlRWxlbWVudHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL2NvcmVFbGVtZW50c1wiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnT3JnYW5pc2F0aW9uRWxlbWVudHMnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0dXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBtYW5kYXRvcnk6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgX2IgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgc2VhcmNoQnRuVmFsdWUgPSBfYlswXSwgc2VhcmNoQnRuVG9nZ2xlID0gX2JbMV07XG4gICAgICAgIHZhciBkcm9wZG93biA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBkcm9wZG93bkJ0biA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciB1c2VyUm9sZSA9ICgwLCB2dWVfMi5pbmplY3QpKCd1c2VyUm9sZScpO1xuICAgICAgICAvKipcbiAgICAgICAgICogU2VhcmNoIGZ1bmN0aW9uYWxpdHlcbiAgICAgICAgICovXG4gICAgICAgIHZhciBlbGVtZW50cyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgc2VhcmNoOiAnJyxcbiAgICAgICAgICAgIHN0YXR1czogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZWxlbWVudEljb25zID0ge1xuICAgICAgICAgICAgY29tcGxldGVkOiAnZG91YmxlLXRpY2snLFxuICAgICAgICAgICAgbm90X2NvbXBsZXRlZDogJ3JlZC1jcm9zcycsXG4gICAgICAgICAgICBjb3JlOiAnY29yZScsXG4gICAgICAgIH07XG4gICAgICAgIHZhciBhc0FycmF5RGF0YSA9IE9iamVjdC5lbnRyaWVzKHByb3BzLmRhdGEpO1xuICAgICAgICB2YXIgZmlsdGVyZWRFbGVtZW50cyA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGZpbHRlcmVkID0gYXNBcnJheURhdGEuZmlsdGVyKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBfYVswXSwgdmFsdWUgPSBfYVsxXTtcbiAgICAgICAgICAgICAgICBpZiAoIWVsZW1lbnRzLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAuZWxlbWVudChrZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKGVsZW1lbnRzLnNlYXJjaC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL18vZywgJyAnKS5yZXBsYWNlKC8tL2csICdfJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlW2VsZW1lbnRzLnN0YXR1c10pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhlbGVtZW50cy5zZWFyY2gudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9fL2csICcgJykucmVwbGFjZSgvLS9nLCAnXycpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIGp1c3RTdHJpbmdzID0gT2JqZWN0LmZyb21FbnRyaWVzKGZpbHRlcmVkKTtcbiAgICAgICAgICAgIHJldHVybiBqdXN0U3RyaW5ncztcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFkcm9wZG93bkJ0bi52YWx1ZS5jb250YWlucyhlLnRhcmdldCkgJiZcbiAgICAgICAgICAgICAgICAgICAgIWRyb3Bkb3duLnZhbHVlLmNvbnRhaW5zKGUudGFyZ2V0KSAmJlxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hCdG5WYWx1ZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hCdG5Ub2dnbGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBkcm9wZG93bkZpbHRlciA9IGZ1bmN0aW9uIChzKSB7XG4gICAgICAgICAgICBlbGVtZW50cy5zdGF0dXMgPSBzO1xuICAgICAgICAgICAgc2VhcmNoQnRuVG9nZ2xlKCk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCBwcm9wczogcHJvcHMsIHNlYXJjaEJ0blZhbHVlOiBzZWFyY2hCdG5WYWx1ZSwgc2VhcmNoQnRuVG9nZ2xlOiBzZWFyY2hCdG5Ub2dnbGUsIGRyb3Bkb3duOiBkcm9wZG93biwgZHJvcGRvd25CdG46IGRyb3Bkb3duQnRuLCB1c2VyUm9sZTogdXNlclJvbGUsIGVsZW1lbnRzOiBlbGVtZW50cywgZWxlbWVudEljb25zOiBlbGVtZW50SWNvbnMsIGFzQXJyYXlEYXRhOiBhc0FycmF5RGF0YSwgZmlsdGVyZWRFbGVtZW50czogZmlsdGVyZWRFbGVtZW50cywgZHJvcGRvd25GaWx0ZXI6IGRyb3Bkb3duRmlsdGVyLCBvcmdNYW5kYXRvcnlFbGVtZW50czogY29yZUVsZW1lbnRzXzEub3JnTWFuZGF0b3J5RWxlbWVudHMgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgY29yZUVsZW1lbnRzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS9jb3JlRWxlbWVudHNcIik7XG52YXIgSW5kZXhfMSA9IHJlcXVpcmUoXCJPcmdhbmlzYXRpb24vZWxlbWVudHMvSW5kZXhcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0IHx8IEFycmF5LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGxhbmd1YWdlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnZW4nLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciB1c2VyUm9sZSA9ICgwLCB2dWVfMi5pbmplY3QpKCd1c2VyUm9sZScpO1xuICAgICAgICB2YXIgbGF5b3V0ID0gJ2Jhc2lzLTYvMTInO1xuICAgICAgICBpZiAocHJvcHMud2lkdGggPT09ICdmdWxsJykge1xuICAgICAgICAgICAgbGF5b3V0ID0gJ2Jhc2lzLWZ1bGwnO1xuICAgICAgICB9XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnb3JnVHlwZXMnLCBwcm9wcy50eXBlcyk7XG4gICAgICAgIHZhciByZXBsYWNlVW5kZXJzY29yZSA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHZhciByZWdleCA9IC9fL2c7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gc3RyaW5nLnJlcGxhY2UocmVnZXgsICctJyk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgcHJvcHM6IHByb3BzLCB1c2VyUm9sZTogdXNlclJvbGUsIGxheW91dDogbGF5b3V0LCByZXBsYWNlVW5kZXJzY29yZTogcmVwbGFjZVVuZGVyc2NvcmUsIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsIG9yZ01hbmRhdG9yeUVsZW1lbnRzOiBjb3JlRWxlbWVudHNfMS5vcmdNYW5kYXRvcnlFbGVtZW50cywgUmVwb3J0aW5nT3JnYW5pc2F0aW9uOiBJbmRleF8xLlJlcG9ydGluZ09yZ2FuaXNhdGlvbiwgVG90YWxCdWRnZXQ6IEluZGV4XzEuVG90YWxCdWRnZXQsIFJlcG9ydGluZ09yZ0J1ZGdldDogSW5kZXhfMS5SZXBvcnRpbmdPcmdCdWRnZXQsIFJlcG9ydGluZ1JlZ2lvbkJ1ZGdldDogSW5kZXhfMS5SZXBvcnRpbmdSZWdpb25CdWRnZXQsIFJlY2lwaWVudENvdW50cnlCdWRnZXQ6IEluZGV4XzEuUmVjaXBpZW50Q291bnRyeUJ1ZGdldCwgVG90YWxFeHBlbmRpdHVyZTogSW5kZXhfMS5Ub3RhbEV4cGVuZGl0dXJlLCBEb2N1bWVudExpbms6IEluZGV4XzEuRG9jdW1lbnRMaW5rIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0RvY3VtZW50TGluaycsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY29udGVudDogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMi5pbmplY3QpKCdvcmdUeXBlcycpO1xuICAgICAgICBmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlID8gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTEwnKSA6IHRyYW5zbGF0ZS5taXNzaW5nKCdkYXRlJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHR5cGVzOiB0eXBlcywgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdSZWNpcGllbnRDb3VudHJ5QnVkZ2V0JyxcbiAgICBwcm9wczoge1xuICAgICAgICBjb250ZW50OiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ29yZ1R5cGVzJyk7XG4gICAgICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUgPyAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZm9ybWF0KCdMTCcpIDogdHJhbnNsYXRlLm1pc3NpbmcoJ2RhdGUnKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgdHlwZXM6IHR5cGVzLCBmb3JtYXREYXRlOiBmb3JtYXREYXRlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1JlcG9ydGluZ09yZ0J1ZGdldCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY29udGVudDogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMi5pbmplY3QpKCdvcmdUeXBlcycpO1xuICAgICAgICBmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlID8gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTEwnKSA6IHRyYW5zbGF0ZS5taXNzaW5nKCdkYXRlJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHR5cGVzOiB0eXBlcywgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdSZXBvcnRpbmdPcmdhbmlzYXRpb24nLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvbnRlbnQ6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgnb3JnVHlwZXMnKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHR5cGVzOiB0eXBlcyB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdSZXBvcnRpbmdSZWdpb25CdWRnZXQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvbnRlbnQ6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgnb3JnVHlwZXMnKTtcbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZSA/ICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mb3JtYXQoJ0xMJykgOiB0cmFuc2xhdGUubWlzc2luZygnZGF0ZScpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCB0eXBlczogdHlwZXMsIGZvcm1hdERhdGU6IGZvcm1hdERhdGUgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnVG90YWxCdWRnZXQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvbnRlbnQ6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgnb3JnVHlwZXMnKTtcbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZSA/ICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mb3JtYXQoJ0xMJykgOiB0cmFuc2xhdGUubWlzc2luZygnZGF0ZScpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCB0eXBlczogdHlwZXMsIGZvcm1hdERhdGU6IGZvcm1hdERhdGUgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnVG90YWxFeHBlbmRpdHVyZScsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY29udGVudDogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMi5pbmplY3QpKCdvcmdUeXBlcycpO1xuICAgICAgICBmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlID8gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTEwnKSA6IHRyYW5zbGF0ZS5taXNzaW5nKCdkYXRlJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHR5cGVzOiB0eXBlcywgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1Bhc3N3b3JkUmVjb3ZlcnknLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vY29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGZvcm1EYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBlbWFpbDogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZW1haWxFcnJvciA9ICgwLCB2dWVfMS5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGxvYWRlclZpc2liaWxpdHkgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL3Bhc3N3b3JkL2VtYWlsJywgZm9ybURhdGEpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGlmIChyZXMucmVxdWVzdC5yZXNwb25zZVVSTC5pbmNsdWRlcygnYWN0aXZpdGllcycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9ICFyZXNwb25zZS5zdWNjZXNzIHx8ICdlcnJvcnMnIGluIHJlc3BvbnNlID8gcmVzcG9uc2UuZXJyb3JzIDogW107XG4gICAgICAgICAgICAgICAgZW1haWxFcnJvci52YWx1ZSA9IGVycm9ycy5lbWFpbCA/IGVycm9ycy5lbWFpbFswXSA6ICcnO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9wYXNzd29yZC9jb25maXJtJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9IGVycm9yLnJlc3BvbnNlLmRhdGEuZXJyb3JzO1xuICAgICAgICAgICAgICAgIGVtYWlsRXJyb3IudmFsdWUgPSBlcnJvcnMuZW1haWwgPyBlcnJvcnMuZW1haWxbMF0gOiAnJztcbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZm9ybURhdGE6IGZvcm1EYXRhLFxuICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eTogbG9hZGVyVmlzaWJpbGl0eSxcbiAgICAgICAgICAgIGVtYWlsRXJyb3I6IGVtYWlsRXJyb3IsXG4gICAgICAgICAgICByZXNldDogcmVzZXQsXG4gICAgICAgICAgICB0cmFuc2xhdGU6IHRyYW5zbGF0ZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciBlbmNyeXB0aW9uXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZW5jcnlwdGlvblwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9rZW46IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBsb2FkZXJWaXNpYmlsaXR5ID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZm9ybURhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGVtYWlsOiBwcm9wcy5lbWFpbCxcbiAgICAgICAgICAgIHRva2VuOiBwcm9wcy50b2tlbixcbiAgICAgICAgICAgIHBhc3N3b3JkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBlbWFpbDogJycsXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gcmVzZXQoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB2YXIgZm9ybSA9IHtcbiAgICAgICAgICAgICAgICBlbWFpbDogZm9ybURhdGEuZW1haWwsXG4gICAgICAgICAgICAgICAgdG9rZW46IHByb3BzLnRva2VuLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sIChfYSA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkLCAoX2IgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL3Jlc2V0JywgZm9ybSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXF1ZXN0LnJlc3BvbnNlVVJMLmluY2x1ZGVzKCdhY3Rpdml0aWVzJykpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gJ2Vycm9ycycgaW4gcmVzcG9uc2UgPyByZXNwb25zZS5lcnJvcnMgOiBbXTtcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEucGFzc3dvcmQgPSBlcnJvcnMucGFzc3dvcmQgPyBlcnJvcnMucGFzc3dvcmRbMF0gOiAnJztcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEuZW1haWwgPSBlcnJvcnMuZW1haWwgPyBlcnJvcnMuZW1haWxbMF0gOiAnJztcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uID0gZXJyb3JzLnBhc3N3b3JkX2NvbmZpcm1hdGlvblxuICAgICAgICAgICAgICAgICAgICA/IGVycm9ycy5wYXNzd29yZF9jb25maXJtYXRpb25bMF1cbiAgICAgICAgICAgICAgICAgICAgOiAnJztcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHZhciBlcnJvcnMgPSBlcnJvci5yZXNwb25zZS5kYXRhLmVycm9ycztcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEucGFzc3dvcmQgPSBlcnJvcnMucGFzc3dvcmQgPyBlcnJvcnMucGFzc3dvcmRbMF0gOiAnJztcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEuZW1haWwgPSBlcnJvcnMuZW1haWwgPyBlcnJvcnMuZW1haWxbMF0gOiAnJztcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uID0gZXJyb3JzLnBhc3N3b3JkX2NvbmZpcm1hdGlvblxuICAgICAgICAgICAgICAgICAgICA/IGVycm9ycy5wYXNzd29yZF9jb25maXJtYXRpb25bMF1cbiAgICAgICAgICAgICAgICAgICAgOiAnJztcbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eTogbG9hZGVyVmlzaWJpbGl0eSxcbiAgICAgICAgICAgIGZvcm1EYXRhOiBmb3JtRGF0YSxcbiAgICAgICAgICAgIGVycm9yRGF0YTogZXJyb3JEYXRhLFxuICAgICAgICAgICAgcmVzZXQ6IHJlc2V0LFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG11bHRpc2VsZWN0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkB2dWVmb3JtL211bHRpc2VsZWN0XCIpKTtcbnZhciBzdG9yZV8xID0gcmVxdWlyZShcIi4uLy4uL3N0b3JlXCIpO1xudmFyIGFjdGlvbnNfMSA9IHJlcXVpcmUoXCIuLi8uLi9zdG9yZS9zZXR0aW5nL2FjdGlvbnNcIik7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLy4uLy4uL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgTXVsdGlzZWxlY3Q6IG11bHRpc2VsZWN0XzEuZGVmYXVsdCxcbiAgICAgICAgSG92ZXJUZXh0OiBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGN1cnJlbmNpZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbGFuZ3VhZ2VzOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGh1bWFuaXRhcmlhbjoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBidWRnZXROb3RQcm92aWRlZDoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0Q29sbGFib3JhdGlvblR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdEZsb3dUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRGaW5hbmNlVHlwZToge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0QWlkVHlwZToge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VGllZFN0YXR1czoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciB1c2VyUm9sZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd1c2VyUm9sZScpO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgc3RvcmVfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgdmFyIGRlZmF1bHRGb3JtID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuc3RhdGUuZGVmYXVsdEZvcm07XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZGVmYXVsdEVycm9yID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuc3RhdGUuZGVmYXVsdEVycm9yO1xuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlU3RvcmUoa2V5KSB7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaChhY3Rpb25zXzEuQWN0aW9uVHlwZXMuVVBEQVRFX0RFRkFVTFRfVkFMVUVTLCB7XG4gICAgICAgICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgICAgICAgdmFsdWU6IGRlZmF1bHRGb3JtLnZhbHVlW2tleV0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgdXNlclJvbGU6IHVzZXJSb2xlLFxuICAgICAgICAgICAgZGVmYXVsdEZvcm06IGRlZmF1bHRGb3JtLFxuICAgICAgICAgICAgZGVmYXVsdEVycm9yOiBkZWZhdWx0RXJyb3IsXG4gICAgICAgICAgICB1cGRhdGVTdG9yZTogdXBkYXRlU3RvcmUsXG4gICAgICAgICAgICB0cmFuc2xhdGU6IHRyYW5zbGF0ZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHN0b3JlXzEgPSByZXF1aXJlKFwiLi4vLi4vc3RvcmVcIik7XG52YXIgYWN0aW9uc18xID0gcmVxdWlyZShcIi4uLy4uL3N0b3JlL3NldHRpbmcvYWN0aW9uc1wiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgU2V0dGluZ0RlZmF1bHRGb3JtX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL1NldHRpbmdEZWZhdWx0Rm9ybS52dWVcIikpO1xudmFyIFNldHRpbmdQdWJsaXNoaW5nRm9ybV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9TZXR0aW5nUHVibGlzaGluZ0Zvcm0udnVlXCIpKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIFNldHRpbmdEZWZhdWx0Rm9ybTogU2V0dGluZ0RlZmF1bHRGb3JtX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFNldHRpbmdQdWJsaXNoaW5nRm9ybTogU2V0dGluZ1B1Ymxpc2hpbmdGb3JtX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIExvYWRlcjogTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGN1cnJlbmNpZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbGFuZ3VhZ2VzOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGh1bWFuaXRhcmlhbjoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBvcmdhbml6YXRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYnVkZ2V0Tm90UHJvdmlkZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB1c2VyUm9sZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRDb2xsYWJvcmF0aW9uVHlwZToge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0Rmxvd1R5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdEZpbmFuY2VUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRBaWRUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRUaWVkU3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHRhYiA9ICgwLCB2dWVfMS5yZWYpKCdwdWJsaXNoJyk7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBzdG9yZV8xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgbG9hZGVyVmlzaWJpbGl0eSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvYXN0VmlzaWJpbGl0eSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMS5yZWYpKCcnKTtcbiAgICAgICAgdmFyIHRvYXN0VHlwZSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hpbmdGb3JtID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5wdWJsaXNoaW5nRm9ybTsgfSk7XG4gICAgICAgIHZhciBwdWJsaXNoaW5nSW5mbyA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUucHVibGlzaGluZ0luZm87IH0pO1xuICAgICAgICB2YXIgcHVibGlzaGluZ0Vycm9yID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5wdWJsaXNoaW5nRXJyb3I7IH0pO1xuICAgICAgICB2YXIgZGVmYXVsdEZvcm0gPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLmRlZmF1bHRGb3JtOyB9KTtcbiAgICAgICAgdmFyIGRlZmF1bHRFcnJvciA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuZGVmYXVsdEVycm9yOyB9KTtcbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlU3RvcmUobmFtZSwga2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goYWN0aW9uc18xLkFjdGlvblR5cGVzW25hbWVdLCB7XG4gICAgICAgICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGRhdGEsIHNldHRpbmdEYXRhLCBkZWZhdWx0VmFsdWVzLCBwdWJsaXNoZXJJbmZvLCBhY3Rpdml0eVZhbHVlcywga2V5LCBrZXksIGtleTtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NfMS5kZWZhdWx0LmdldCgnL3NldHRpbmcvZGF0YScpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IChfYS5zZW50KCkpLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5nRGF0YSA9IGRhdGEuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5nRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBzZXR0aW5nRGF0YS5kZWZhdWx0X3ZhbHVlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNldHRpbmdEYXRhLmRlZmF1bHRfdmFsdWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVySW5mbyA9IHNldHRpbmdEYXRhLnB1Ymxpc2hpbmdfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNldHRpbmdEYXRhLnB1Ymxpc2hpbmdfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXR5VmFsdWVzID0gc2V0dGluZ0RhdGEuYWN0aXZpdHlfZGVmYXVsdF92YWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzZXR0aW5nRGF0YS5hY3Rpdml0eV9kZWZhdWx0X3ZhbHVlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwdWJsaXNoZXJJbmZvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoa2V5IGluIHB1Ymxpc2hlckluZm8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0b3JlKHR5cGVvZiBwdWJsaXNoZXJJbmZvW2tleV0gPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnVVBEQVRFX1BVQkxJU0hJTkdfRk9STSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdVUERBVEVfUFVCTElTSEVSX0lORk8nLCBrZXksIHB1Ymxpc2hlckluZm9ba2V5XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHB1Ymxpc2hlckluZm8uYXBpX3Rva2VuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX1BVQkxJU0hFUl9JTkZPJywgJ2lzVmVyaWZpY2F0aW9uUmVxdWVzdGVkJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlZmF1bHRWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChrZXkgaW4gZGVmYXVsdFZhbHVlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RvcmUoJ1VQREFURV9ERUZBVUxUX1ZBTFVFUycsIGtleSwgZGVmYXVsdFZhbHVlc1trZXldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZpdHlWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChrZXkgaW4gYWN0aXZpdHlWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0b3JlKCdVUERBVEVfREVGQVVMVF9WQUxVRVMnLCBrZXksIGFjdGl2aXR5VmFsdWVzW2tleV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSk7XG4gICAgICAgIGZ1bmN0aW9uIHRvZ2dsZVRhYihwYWdlKSB7XG4gICAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRhYi52YWx1ZSA9IHBhZ2U7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gc3VibWl0RGVmYXVsdCgpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGRhdGEgaW4gZGVmYXVsdEVycm9yLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlU3RvcmUoJ1VQREFURV9ERUZBVUxUX0VSUk9SJywgZGF0YSwgJycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL3NldHRpbmcvc3RvcmUvZGVmYXVsdCcsIGRlZmF1bHRGb3JtLnZhbHVlKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSk7IH0sIDUwMDApO1xuICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3RUeXBlLnZhbHVlID0gcmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX1BVQkxJU0hFUl9JTkZPJywgcmVzcG9uc2UuZGF0YS5oaWVyYXJjaGlhbCwgJycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gZXJyb3IucmVzcG9uc2UuZGF0YS5lcnJvcnM7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgZSBpbiBlcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RvcmUoJ1VQREFURV9ERUZBVUxUX0VSUk9SJywgZSwgZXJyb3JzW2VdWzBdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gc3VibWl0UHVibGlzaGluZyh1cmwpIHtcbiAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgZm9yICh2YXIgZGF0YSBpbiBwdWJsaXNoaW5nRXJyb3IudmFsdWUpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX1BVQkxJU0hJTkdfRVJST1InLCBkYXRhLCAnJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCh1cmwsIF9fYXNzaWduKF9fYXNzaWduKHt9LCBwdWJsaXNoaW5nSW5mby52YWx1ZSksIHB1Ymxpc2hpbmdGb3JtLnZhbHVlKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdG9hc3RUeXBlLnZhbHVlID0gcmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX1BVQkxJU0hFUl9JTkZPJywgJ3B1Ymxpc2hlcl92ZXJpZmljYXRpb24nLCByZXNwb25zZS5kYXRhLnB1Ymxpc2hlcl92ZXJpZmljYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX1BVQkxJU0hFUl9JTkZPJywgJ3Rva2VuX3ZlcmlmaWNhdGlvbicsIHJlc3BvbnNlLmRhdGEudG9rZW5fdmVyaWZpY2F0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RvcmUoJ1VQREFURV9QVUJMSVNIRVJfSU5GTycsICdpc1ZlcmlmaWNhdGlvblJlcXVlc3RlZCcsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS5wdWJsaXNoZXJfdmVyaWZpY2F0aW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS50b2tlbl92ZXJpZmljYXRpb247XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKTsgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHZhciBlcnJvcnMgPSBlcnJvci5yZXNwb25zZS5kYXRhLmVycm9ycztcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBlIGluIGVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX1BVQkxJU0hJTkdfRVJST1InLCBlLCBlcnJvcnNbZV1bMF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzdWJtaXRGb3JtKHVybCkge1xuICAgICAgICAgICAgaWYgKHVybCA9PT0gdm9pZCAwKSB7IHVybCA9ICdzZXR0aW5nL3ZlcmlmeSc7IH1cbiAgICAgICAgICAgIGlmIChwcm9wcy51c2VyUm9sZSA9PT0gJ2FkbWluJykge1xuICAgICAgICAgICAgICAgIGlmICh0YWIudmFsdWUgPT09ICdwdWJsaXNoJylcbiAgICAgICAgICAgICAgICAgICAgc3VibWl0UHVibGlzaGluZyh1cmwpO1xuICAgICAgICAgICAgICAgIGlmICh0YWIudmFsdWUgPT09ICdkZWZhdWx0JylcbiAgICAgICAgICAgICAgICAgICAgc3VibWl0RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgndXNlclJvbGUnLCBwcm9wcy51c2VyUm9sZSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgICAgICB0YWI6IHRhYixcbiAgICAgICAgICAgIGRlZmF1bHRFcnJvcjogZGVmYXVsdEVycm9yLFxuICAgICAgICAgICAgcHVibGlzaGluZ0Vycm9yOiBwdWJsaXNoaW5nRXJyb3IsXG4gICAgICAgICAgICBzdG9yZTogc3RvcmUsXG4gICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5OiBsb2FkZXJWaXNpYmlsaXR5LFxuICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5OiB0b2FzdFZpc2liaWxpdHksXG4gICAgICAgICAgICB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSxcbiAgICAgICAgICAgIHRvYXN0VHlwZTogdG9hc3RUeXBlLFxuICAgICAgICAgICAgdG9nZ2xlVGFiOiB0b2dnbGVUYWIsXG4gICAgICAgICAgICBzdWJtaXRGb3JtOiBzdWJtaXRGb3JtLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHN0b3JlXzEgPSByZXF1aXJlKFwiLi4vLi4vc3RvcmVcIik7XG52YXIgYWN0aW9uc18xID0gcmVxdWlyZShcIi4uLy4uL3N0b3JlL3NldHRpbmcvYWN0aW9uc1wiKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vLi4vLi4vY29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgb3JnYW5pemF0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ3N1Ym1pdFB1Ymxpc2hpbmcnXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzLCBfYSkge1xuICAgICAgICB2YXIgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHRhYiA9ICgwLCB2dWVfMS5yZWYpKCdwdWJsaXNoJyk7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBzdG9yZV8xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgdXNlclJvbGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndXNlclJvbGUnKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hpbmdGb3JtID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5wdWJsaXNoaW5nRm9ybTsgfSk7XG4gICAgICAgIHZhciBwdWJsaXNoaW5nSW5mbyA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUucHVibGlzaGluZ0luZm87IH0pO1xuICAgICAgICB2YXIgcHVibGlzaGluZ0Vycm9yID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5wdWJsaXNoaW5nRXJyb3I7IH0pO1xuICAgICAgICBmdW5jdGlvbiBzdWJtaXRQdWJsaXNoaW5nKCkge1xuICAgICAgICAgICAgaWYgKHVzZXJSb2xlID09PSAnYWRtaW4nKSB7XG4gICAgICAgICAgICAgICAgZW1pdCgnc3VibWl0UHVibGlzaGluZycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGF1dG9WZXJpZnkoKSB7XG4gICAgICAgICAgICBlbWl0KCdzdWJtaXRQdWJsaXNoaW5nJyk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlU3RvcmUoa2V5KSB7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaChhY3Rpb25zXzEuQWN0aW9uVHlwZXMuVVBEQVRFX1BVQkxJU0hJTkdfRk9STSwge1xuICAgICAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBwdWJsaXNoaW5nRm9ybS52YWx1ZVtrZXldLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gdG9nZ2xlVGFiKCkge1xuICAgICAgICAgICAgdGFiLnZhbHVlID0gdGFiLnZhbHVlID09PSAncHVibGlzaCcgPyAnZGVmYXVsdCcgOiAncHVibGlzaCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRhYjogdGFiLFxuICAgICAgICAgICAgcHVibGlzaGluZ0Zvcm06IHB1Ymxpc2hpbmdGb3JtLFxuICAgICAgICAgICAgcHVibGlzaGluZ0luZm86IHB1Ymxpc2hpbmdJbmZvLFxuICAgICAgICAgICAgcHVibGlzaGluZ0Vycm9yOiBwdWJsaXNoaW5nRXJyb3IsXG4gICAgICAgICAgICBzdG9yZTogc3RvcmUsXG4gICAgICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgICAgICB1c2VyUm9sZTogdXNlclJvbGUsXG4gICAgICAgICAgICBzdWJtaXRQdWJsaXNoaW5nOiBzdWJtaXRQdWJsaXNoaW5nLFxuICAgICAgICAgICAgdG9nZ2xlVGFiOiB0b2dnbGVUYWIsXG4gICAgICAgICAgICB1cGRhdGVTdG9yZTogdXBkYXRlU3RvcmUsXG4gICAgICAgICAgICBhdXRvVmVyaWZ5OiBhdXRvVmVyaWZ5LFxuICAgICAgICAgICAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbi8vIENvbXBvbmVudHNcbnZhciBQcm9ncmVzc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciBUYWJsZUxpc3RfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vY29tcG9uZW50cy9UYWJsZUxpc3QudnVlXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnT3JnYW5pc2F0aW9uTGlzdCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY291bnRyaWVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2V0dXBDb21wbGV0ZW5lc3M6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICByZWdpc3RyYXRpb25UeXBlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHB1Ymxpc2hlclR5cGVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgZGF0YUxpY2Vuc2VzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgb2xkZXN0RGF0ZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICAvLyByZWZcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgc3RhdHVzOiBmYWxzZSxcbiAgICAgICAgICAgIHRleHQ6IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdwbGVhc2Vfd2FpdCcpLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBwcm92aWRlXG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnbG9hZGVyJywgbG9hZGVyKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCd0b2FzdERhdGEnLCB0b2FzdE1lc3NhZ2UpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgcHJvcHM6IHByb3BzLCBsb2FkZXI6IGxvYWRlciwgdG9hc3RNZXNzYWdlOiB0b2FzdE1lc3NhZ2UsIExvYWRlcjogUHJvZ3Jlc3NMb2FkZXJfdnVlXzEuZGVmYXVsdCwgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LCBUYWJsZUxpc3Q6IFRhYmxlTGlzdF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBsYW5nXzEgPSByZXF1aXJlKFwibG9kYXNoL2xhbmdcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnU3lzdGVtVmVyc2lvbicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgcGhwRGVwZW5kZW5jaWVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgbm9kZURlcGVuZGVuY2llczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHBhY2thZ2VNYW5hZ2VyVmVyc2lvbjogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGxhdGVzdE1hbmFnZXJWZXJzaW9uOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIC8qIFNldHMgVXBkYXRlIHN0YXR1cyBjbGFzcyAqL1xuICAgICAgICB2YXIgZ2V0U3RhdHVzQ2xhc3MgPSBmdW5jdGlvbiAodXBkYXRlU3RhdHVzKSB7XG4gICAgICAgICAgICBpZiAodXBkYXRlU3RhdHVzID09ICdzZW12ZXItc2FmZS11cGRhdGUnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdyb3VuZGVkLWZ1bGwgYmctc3ByaW5nLTUwIGJvcmRlciBib3JkZXItc3ByaW5nLTUwIHB4LTUgcHktMSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHRleHQtc20gbGVhZGluZy1ub3JtYWwgdGV4dC13aGl0ZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJ3JvdW5kZWQtZnVsbCBiZy1zYWxtb24tNTAgYm9yZGVyIGJvcmRlci1zYWxtb24tNTAgcHgtNSBweS0xIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTEgdGV4dC1zbSBsZWFkaW5nLW5vcm1hbCB0ZXh0LXdoaXRlJztcbiAgICAgICAgfTtcbiAgICAgICAgLyogUmV0dXJucyBVcGRhdGUgc3RhdHVzICovXG4gICAgICAgIHZhciBnZXRTdGF0dXNNZXNzYWdlID0gZnVuY3Rpb24gKHVwZGF0ZVN0YXR1cykge1xuICAgICAgICAgICAgaWYgKHVwZGF0ZVN0YXR1cyA9PSAnc2VtdmVyLXNhZmUtdXBkYXRlJykge1xuICAgICAgICAgICAgICAgIHJldHVybiAnU2FmZSB1cGRhdGUnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICdNYXkgYnJlYWsgc3lzdGVtJztcbiAgICAgICAgfTtcbiAgICAgICAgLyogUmV0dXJucyBMYXRlc3QgdmVyc2lvbiBvZiBwYWNrYWdlIG1hbmFnZXIgKi9cbiAgICAgICAgdmFyIHJlc29sdmVMYXRlc3RWZXJzaW9uID0gZnVuY3Rpb24gKGxhdGVzdE1hbmFnZXJWZXJzaW9uLCBrZXkpIHtcbiAgICAgICAgICAgIGlmIChrZXkgaW4gbGF0ZXN0TWFuYWdlclZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGF0ZXN0TWFuYWdlclZlcnNpb25ba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGtleSA9PSAnY29tcG9zZXInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcyLjUuNCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJ05BJztcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGdldEluZGV4ID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoaW5kZXgudG9TdHJpbmcoKSkgKyAxO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBnZXRTdGF0dXNDbGFzczogZ2V0U3RhdHVzQ2xhc3MsIGdldFN0YXR1c01lc3NhZ2U6IGdldFN0YXR1c01lc3NhZ2UsIHJlc29sdmVMYXRlc3RWZXJzaW9uOiByZXNvbHZlTGF0ZXN0VmVyc2lvbiwgZ2V0SW5kZXg6IGdldEluZGV4LCBpc0VtcHR5OiBsYW5nXzEuaXNFbXB0eSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0FkbWluQmFyJyxcbiAgICBwcm9wczoge1xuICAgICAgICBuYW1lOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgb3JnYW5pemF0aW9uTmFtZTogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTd2l0Y2ggQmFja1xuICAgICAgICAgKi9cbiAgICAgICAgdmFyIHN3aXRjaEJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVwbGFjZSgnL2xpc3Qtb3JnYW5pc2F0aW9ucycpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgc3dpdGNoQmFjazogc3dpdGNoQmFjayB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIE11bHRpU2VsZWN0V2l0aFNlYXJjaF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgVGFibGVQYWdpbmF0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWVcIikpO1xudmFyIG11bHRpc2VsZWN0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkB2dWVmb3JtL211bHRpc2VsZWN0XCIpKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIERhdGVSYW5nZVdpZGdldF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9EYXRlUmFuZ2VXaWRnZXQudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVGFibGVMaXN0JyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2luYXRpb246IFRhYmxlUGFnaW5hdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBNdWx0aXNlbGVjdDogbXVsdGlzZWxlY3RfMS5kZWZhdWx0LFxuICAgICAgICBEYXRlUmFuZ2VXaWRnZXQ6IERhdGVSYW5nZVdpZGdldF92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY291bnRyaWVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2V0dXBDb21wbGV0ZW5lc3M6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICByZWdpc3RyYXRpb25UeXBlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHB1Ymxpc2hlclR5cGVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgZGF0YUxpY2Vuc2VzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgb2xkZXN0RGF0ZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzEuaW5qZWN0KSgndG9hc3REYXRhJyk7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMS5pbmplY3QpKCdsb2FkZXInKTtcbiAgICAgICAgdmFyIGRhdGVEcm9wZG93biA9ICgwLCB2dWVfMS5yZWYpKCk7XG4gICAgICAgIHZhciBjbGVhckRhdGUgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBkYXRlVHlwZSA9ICgwLCB2dWVfMS5yZWYpKCdBbGwgVGltZScpO1xuICAgICAgICB2YXIgZ2V0Q291bnRyaWVzV2l0aFByZWZpeCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciByZXR1cm5WYWx1ZUZvckNvdW50cmllcyA9IHt9O1xuICAgICAgICAgICAgdmFyIGNvdW50cnlDb2RlcyA9IE9iamVjdC5rZXlzKHByb3BzLmNvdW50cmllcyk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50cnlDb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHJldHVyblZhbHVlRm9yQ291bnRyaWVzW2NvdW50cnlDb2Rlc1tpXV0gPSBcIlwiLmNvbmNhdChjb3VudHJ5Q29kZXNbaV0sIFwiIC0gXCIpLmNvbmNhdChwcm9wcy5jb3VudHJpZXNbY291bnRyeUNvZGVzW2ldXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWVGb3JDb3VudHJpZXM7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjb3VudHJpZXNXaXRoUHJlZml4ID0gZ2V0Q291bnRyaWVzV2l0aFByZWZpeCgpO1xuICAgICAgICAvLyByZWFjdGl2aXR5XG4gICAgICAgIHZhciBvcmdhbmlzYXRpb25EYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBkYXRhOiB7fSxcbiAgICAgICAgICAgIHN0YXR1czogJ2ZldGNoaW5nJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBtdWx0aXNlbGVjdFN0eWxlID0gKDAsIHZ1ZV8xLnJlZikoe30pO1xuICAgICAgICB2YXIgZmlsdGVyID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBwdWJsaXNoZXJfdHlwZTogW10sXG4gICAgICAgICAgICBkYXRhX2xpY2Vuc2U6IFtdLFxuICAgICAgICAgICAgY291bnRyeTogW10sXG4gICAgICAgICAgICBjb21wbGV0ZW5lc3M6ICcnLFxuICAgICAgICAgICAgcmVnaXN0cmF0aW9uX3R5cGU6ICcnLFxuICAgICAgICAgICAgc3RhcnRfZGF0ZTogJycsXG4gICAgICAgICAgICBlbmRfZGF0ZTogJycsXG4gICAgICAgICAgICBkYXRlX3R5cGU6ICdjcmVhdGVkX2F0JyxcbiAgICAgICAgICAgIHNlbGVjdGVkX2RhdGVfZmlsdGVyOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciByZXNldFBhZ2luYXRpb24gPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b3RhbE9yZ2FuaXNhdGlvbiA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICB2YXIgcmVnaXN0cnlBcGlLZXlTdGF0dXMgPSAoMCwgdnVlXzEucmVhY3RpdmUpKFtdKTtcbiAgICAgICAgdmFyIGRlZmF1bHRWYWx1ZVN0YXR1cyA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoW10pO1xuICAgICAgICB2YXIgc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaCA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGRyb3Bkb3duUmFuZ2UgPSB7XG4gICAgICAgICAgICBjcmVhdGVkX2F0OiAnUmVnaXN0ZXJlZCBkYXRlIHJhbmdlJyxcbiAgICAgICAgICAgIGxhc3RfbG9nZ2VkX2luOiAnTGFzdCBsb2dpbiBkYXRlIHJhbmdlJyxcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNvcnRQYXJhbXMgPSAoMCwgdnVlXzEucmVmKSh7IG9yZGVyQnk6ICcnLCBkaXJlY3Rpb246ICcnIH0pO1xuICAgICAgICB2YXIgaWdub3JlVXBkYXRlcyA9ICgwLCBjb3JlXzEud2F0Y2hJZ25vcmFibGUpKGZpbHRlciwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9KS5pZ25vcmVVcGRhdGVzO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2gudmFsdWU7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcm90YXRlQ2xhc3MudmFsdWUgPSAncm90YXRlLTE4MCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByb3RhdGVDbGFzcy52YWx1ZSA9ICdyb3RhdGUtMCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNsb3NlUHVibGlzaGVyTW9kZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZVB1Ymxpc2hlck1vZGVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjbGVhckRhdGVGaWx0ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSA9ICcnO1xuICAgICAgICAgICAgZmlsdGVyLmVuZF9kYXRlID0gJyc7XG4gICAgICAgICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSAnJztcbiAgICAgICAgICAgIGNsZWFyRGF0ZS52YWx1ZSA9IHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjbG9zZVB1Ymxpc2hlck1vZGVsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZ2VuZXJhdGVMYWJlbCA9IGZ1bmN0aW9uIChsYWJlbCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgJy0tbGFiZWwnOiBcIidcIi5jb25jYXQobGFiZWwsIFwiJ1wiKSB9O1xuICAgICAgICB9O1xuICAgICAgICAvL2xpZmVjeWNsZVxuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZmlsdGVyUGFyYW1zID0gZ2V0RmlsdGVyUGFyYW1zRnJvbVByZXZpb3VzUGFnZSgpO1xuICAgICAgICAgICAgaWYgKGZpbHRlclBhcmFtcykge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsdGVyUGFyYW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBrZXkgPSAoMCwgdXRpbHNfMS5rZWJhYkNhc2VUb1NuYWtlY2FzZSkoZmlsdGVyUGFyYW1zW2ldWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gZmlsdGVyUGFyYW1zW2ldWzFdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoWydwdWJsaXNoZXJfdHlwZScsICdkYXRhX2xpY2Vuc2UnLCAnY291bnRyeSddLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcltrZXldLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtleSA9PT0gJ2RhdGVfdHlwZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVUeXBlLnZhbHVlID0gdmFsdWUuc3BsaXQoJy0nKS5qb2luKCcgJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmV0Y2hPcmdhbmlzYXRpb24oMSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZ2V0RmlsdGVyUGFyYW1zRnJvbVByZXZpb3VzUGFnZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHZhciBxdWVyeVN0cmluZyA9IChfYSA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIGlmIChxdWVyeVN0cmluZykge1xuICAgICAgICAgICAgICAgIHF1ZXJ5U3RyaW5nID0gcXVlcnlTdHJpbmcuc3BsaXQoJz8nKVsxXTtcbiAgICAgICAgICAgICAgICB2YXIgcXVlcnlQYXJhbXNJbktleVZhbCA9IFtdO1xuICAgICAgICAgICAgICAgIHZhciBxdWVyeVBhcmFtcyA9IHF1ZXJ5U3RyaW5nID09PSBudWxsIHx8IHF1ZXJ5U3RyaW5nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBxdWVyeVN0cmluZy5zcGxpdCgnJicpO1xuICAgICAgICAgICAgICAgIGlmIChxdWVyeVBhcmFtcykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXJ5UGFyYW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2IgPSBxdWVyeVBhcmFtc1tpXS5zcGxpdCgnPScpLCBrZXkgPSBfYlswXSwgdmFsdWUgPSBfYlsxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeVBhcmFtc0luS2V5VmFsLnB1c2goW2tleSwgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHZvaWQgMCA/IHZhbHVlIDogJyddKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcXVlcnlQYXJhbXNJbktleVZhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZldGNoaW5nIG9yZ2FuaXphdGlvbiBsaXN0XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgY3VycmVudFVSTCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgICAgICB2YXIgZmV0Y2hPcmdhbmlzYXRpb24gPSBmdW5jdGlvbiAoYWN0aXZlX3BhZ2UpIHtcbiAgICAgICAgICAgIGlmIChhY3RpdmVfcGFnZSA9PT0gdm9pZCAwKSB7IGFjdGl2ZV9wYWdlID0gMTsgfVxuICAgICAgICAgICAgb3JnYW5pc2F0aW9uRGF0YS5zdGF0dXMgPSAnZmV0Y2hpbmcnO1xuICAgICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gJyc7XG4gICAgICAgICAgICBpZiAoY3VycmVudFVSTC5pbmNsdWRlcygnPycpKSB7XG4gICAgICAgICAgICAgICAgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWN0aXZlX3BhZ2UgPSBhY3RpdmVfcGFnZSAhPT0gbnVsbCAmJiBhY3RpdmVfcGFnZSAhPT0gdm9pZCAwID8gYWN0aXZlX3BhZ2UgOiAxO1xuICAgICAgICAgICAgdmFyIGVuZHBvaW50ID0gXCIvbGlzdC1vcmdhbmlzYXRpb25zL3BhZ2UvXCIuY29uY2F0KGFjdGl2ZV9wYWdlKS5jb25jYXQocXVlcnlTdHJpbmcpO1xuICAgICAgICAgICAgaWYgKHNvcnRQYXJhbXMudmFsdWUub3JkZXJCeSkge1xuICAgICAgICAgICAgICAgIHVybFBhcmFtcy5hcHBlbmQoJ29yZGVyQnknLCBzb3J0UGFyYW1zLnZhbHVlLm9yZGVyQnkpO1xuICAgICAgICAgICAgICAgIHVybFBhcmFtcy5hcHBlbmQoJ2RpcmVjdGlvbicsIHNvcnRQYXJhbXMudmFsdWUuZGlyZWN0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0ZpbHRlckFwcGxpZWQudmFsdWUgfHxcbiAgICAgICAgICAgICAgICBCb29sZWFuKHNvcnRQYXJhbXMudmFsdWUub3JkZXJCeSAmJiBzb3J0UGFyYW1zLnZhbHVlLmRpcmVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICBxdWVyeVN0cmluZyA9IHF1ZXJ5U3RyaW5nICE9PSBudWxsICYmIHF1ZXJ5U3RyaW5nICE9PSB2b2lkIDAgPyBxdWVyeVN0cmluZyA6ICcmcT0nO1xuICAgICAgICAgICAgICAgIGVuZHBvaW50ID0gcXVlcnlTdHJpbmcgIT09ICcnID8gZW5kcG9pbnQgOiBcIlwiLmNvbmNhdChlbmRwb2ludCk7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgZmlsdGVyS2V5IGluIGZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyW2ZpbHRlcktleV0gJiYgZmlsdGVyW2ZpbHRlcktleV0ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXJsUGFyYW1zLmFwcGVuZChmaWx0ZXJLZXksIGZpbHRlcltmaWx0ZXJLZXldKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoZW5kcG9pbnQsIHtcbiAgICAgICAgICAgICAgICBwYXJhbXM6IGlzRmlsdGVyQXBwbGllZC52YWx1ZSB8fFxuICAgICAgICAgICAgICAgICAgICBCb29sZWFuKHNvcnRQYXJhbXMudmFsdWUub3JkZXJCeSAmJiBzb3J0UGFyYW1zLnZhbHVlLmRpcmVjdGlvbilcbiAgICAgICAgICAgICAgICAgICAgPyB1cmxQYXJhbXNcbiAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB0b3RhbE9yZ2FuaXNhdGlvbi52YWx1ZSA9IChfYSA9IHJlc3BvbnNlLmRhdGEpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50b3RhbDtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5kYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uRGF0YS5zdGF0dXMgPSAnZW1wdHknO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uRGF0YS5zdGF0dXMgPSAnc3VjY2Vzcyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcmdhbmlzYXRpb25EYXRhLmRhdGEgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFN0YXR1c0FycmF5cyhvcmdhbmlzYXRpb25EYXRhLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvcmdhbmlzYXRpb25EYXRhLnN0YXR1cyA9ICdmYWlsZWQgdG8gcmV0cmlldmUgZGF0YSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFByb3h5IFVzZXJcbiAgICAgICAgICovXG4gICAgICAgIC8vIGRpc3BsYXkvaGlkZSB2YWxpZGF0b3IgbG9hZGVyXG4gICAgICAgIHZhciBwcm94eVVzZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgICAgICAgIGxvYWRlci5zdGF0dXMgPSB0cnVlO1xuICAgICAgICAgICAgbG9hZGVyLnRleHQgPSB0cmFuc2xhdGUuYnV0dG9uKCdwcm94eV9sb2dpbicpO1xuICAgICAgICAgICAgdmFyIGVuZHBvaW50ID0gXCIvcHJveHktb3JnYW5pc2F0aW9uL1wiLmNvbmNhdChpZCk7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KGVuZHBvaW50KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKCcvYWN0aXZpdGllcycpO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci5zdGF0dXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLm1lc3NhZ2UgPSByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudHlwZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTb3J0aW5nIEJ5IHVwZGF0ZSBvblxuICAgICAgICAgKi9cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICB2YXIgcXVlcnkgPSAnJywgZGVmYXVsdFNvcnREaXJlY3Rpb24gPSAnZGVzY2VuZGluZycsIFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgIHNvcnREaXJlY3Rpb24gPSAnZGVzYyc7XG4gICAgICAgIHZhciBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XG4gICAgICAgIHZhciB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKTtcbiAgICAgICAgdmFyIG9yZGVyVHlwZSA9ICgwLCB2dWVfMS5yZWYpKCcnKTtcbiAgICAgICAgb3JkZXJUeXBlLnZhbHVlID0gKF9hID0gdXJsUGFyYW1zLmdldCgnb3JkZXJCeScpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJztcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICB2YXIgcmFuZ2UgPSAnJztcbiAgICAgICAgdmFyIHNvcnRpbmdEaXJlY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gc29ydFBhcmFtcy52YWx1ZS5kaXJlY3Rpb24gPT09ICdhc2MnID8gJ2Rlc2NlbmRpbmcnIDogJ2FzY2VuZGluZyc7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzb3J0QnkgPSBmdW5jdGlvbiAob3JkZXIpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzdGFydERhdGUsIGVuZERhdGU7XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2QpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9kLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0UGFnaW5hdGlvbi52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLnZhbHVlLm9yZGVyQnkgPSBvcmRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMudmFsdWUuZGlyZWN0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLnZhbHVlLmRpcmVjdGlvbiA9PT0gJ2Rlc2MnID8gJ2FzYycgOiAnZGVzYyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFVSTC5pbmNsdWRlcygnPycpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnkgPSAoX2EgPSB1cmxQYXJhbXMuZ2V0KCdxJykpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnREaXJlY3Rpb24gPSB1cmxQYXJhbXMuZ2V0KCdkaXJlY3Rpb24nKSA9PT0gJ2Rlc2MnID8gJ2FzYycgOiAnZGVzYyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnREYXRlID0gKF9iID0gdXJsUGFyYW1zLmdldCgnc3RhcnRfZGF0ZScpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmREYXRlID0gKF9jID0gdXJsUGFyYW1zLmdldCgnZW5kX2RhdGUnKSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0RGF0ZSAmJiBlbmREYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlID0gXCImc3RhcnRfZGF0ZT1cIi5jb25jYXQoc3RhcnREYXRlLCBcIiZlbmRfZGF0ZT1cIikuY29uY2F0KGVuZERhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGZldGNoT3JnYW5pc2F0aW9uKDEpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2Quc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRQYWdpbmF0aW9uLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9O1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtcbiAgICAgICAgICAgIGZpbHRlci5jb3VudHJ5LFxuICAgICAgICAgICAgZmlsdGVyLmNvbXBsZXRlbmVzcyxcbiAgICAgICAgICAgIGZpbHRlci5yZWdpc3RyYXRpb25fdHlwZSxcbiAgICAgICAgICAgIGZpbHRlci5wdWJsaXNoZXJfdHlwZSxcbiAgICAgICAgICAgIGZpbHRlci5kYXRhX2xpY2Vuc2UsXG4gICAgICAgICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSxcbiAgICAgICAgICAgIGZpbHRlci5lbmRfZGF0ZSxcbiAgICAgICAgICAgIGZpbHRlci5kYXRlX3R5cGUsXG4gICAgICAgIF07IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZldGNoT3JnYW5pc2F0aW9uKCk7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgdmFyIHJlc2V0QWxsRmlsdGVycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlnbm9yZVVwZGF0ZXMoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGZpbHRlci5jb3VudHJ5ID0gW107XG4gICAgICAgICAgICAgICAgZmlsdGVyLnB1Ymxpc2hlcl90eXBlID0gW107XG4gICAgICAgICAgICAgICAgZmlsdGVyLmRhdGFfbGljZW5zZSA9IFtdO1xuICAgICAgICAgICAgICAgIGZpbHRlci5jb21wbGV0ZW5lc3MgPSAnJztcbiAgICAgICAgICAgICAgICBmaWx0ZXIucmVnaXN0cmF0aW9uX3R5cGUgPSAnJztcbiAgICAgICAgICAgICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSA9ICcnO1xuICAgICAgICAgICAgICAgIGZpbHRlci5lbmRfZGF0ZSA9ICcnO1xuICAgICAgICAgICAgICAgIGZpbHRlci5kYXRlX3R5cGUgPSAnY3JlYXRlZF9hdCc7XG4gICAgICAgICAgICAgICAgZmlsdGVyLnNlbGVjdGVkX2RhdGVfZmlsdGVyID0gJyc7XG4gICAgICAgICAgICAgICAgY2xlYXJEYXRlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgaXNGaWx0ZXJBcHBsaWVkID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gKGZpbHRlci5jb3VudHJ5Lmxlbmd0aCArXG4gICAgICAgICAgICAgICAgZmlsdGVyLnB1Ymxpc2hlcl90eXBlLmxlbmd0aCArXG4gICAgICAgICAgICAgICAgZmlsdGVyLmRhdGFfbGljZW5zZS5sZW5ndGggIT1cbiAgICAgICAgICAgICAgICAwIHx8XG4gICAgICAgICAgICAgICAgZmlsdGVyLmNvbXBsZXRlbmVzcyAhPT0gJycgfHxcbiAgICAgICAgICAgICAgICBmaWx0ZXIucmVnaXN0cmF0aW9uX3R5cGUgIT09ICcnIHx8XG4gICAgICAgICAgICAgICAgKGZpbHRlci5zdGFydF9kYXRlICE9PSAnJyAmJiBmaWx0ZXIuZW5kX2RhdGUgIT09ICcnKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcmVmcmVzaFN0YXR1c0FycmF5cyA9IGZ1bmN0aW9uIChvcmdEYXRhKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMCwgX2QgPSBvcmdEYXRhLmRhdGE7IF9pIDwgX2QubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIG9yZ0RhdHVtID0gX2RbX2ldO1xuICAgICAgICAgICAgICAgIHJlZ2lzdHJ5QXBpS2V5U3RhdHVzW29yZ0RhdHVtLmlkXSA9XG4gICAgICAgICAgICAgICAgICAgIChfYyA9IChfYiA9IChfYSA9IG9yZ0RhdHVtID09PSBudWxsIHx8IG9yZ0RhdHVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcmdEYXR1bS5zZXR0aW5ncykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnB1Ymxpc2hpbmdfaW5mbykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnRva2VuX3ZlcmlmaWNhdGlvbikgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlU3RhdHVzW29yZ0RhdHVtLmlkXSA9IGNoZWNrSWZEZWZhdWx0VmFsdWVzQXJlVmFsaWQob3JnRGF0dW0gPyBvcmdEYXR1bS5zZXR0aW5ncyA6IGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNoZWNrSWZEZWZhdWx0VmFsdWVzQXJlVmFsaWQgPSBmdW5jdGlvbiAoc2V0dGluZ3MpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgICAgIGlmIChzZXR0aW5ncykge1xuICAgICAgICAgICAgICAgIHZhciBkZWZhdWx0VmFsdWVzID0gc2V0dGluZ3MuZGVmYXVsdF92YWx1ZXM7XG4gICAgICAgICAgICAgICAgdmFyIGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9IHNldHRpbmdzLmFjdGl2aXR5X2RlZmF1bHRfdmFsdWVzO1xuICAgICAgICAgICAgICAgIHJldHVybiAhISgoKF9hID0gZGVmYXVsdFZhbHVlcyA9PT0gbnVsbCB8fCBkZWZhdWx0VmFsdWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZWZhdWx0VmFsdWVzLmRlZmF1bHRfY3VycmVuY3kpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAoKF9iID0gZGVmYXVsdFZhbHVlcyA9PT0gbnVsbCB8fCBkZWZhdWx0VmFsdWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZWZhdWx0VmFsdWVzLmRlZmF1bHRfbGFuZ3VhZ2UpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAoKF9jID0gYWN0aXZpdHlEZWZhdWx0VmFsdWVzID09PSBudWxsIHx8IGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogYWN0aXZpdHlEZWZhdWx0VmFsdWVzLmhpZXJhcmNoeSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICgoX2QgPSBhY3Rpdml0eURlZmF1bHRWYWx1ZXMgPT09IG51bGwgfHwgYWN0aXZpdHlEZWZhdWx0VmFsdWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhY3Rpdml0eURlZmF1bHRWYWx1ZXMuYnVkZ2V0X25vdF9wcm92aWRlZCkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICgoYWN0aXZpdHlEZWZhdWx0VmFsdWVzID09PSBudWxsIHx8IGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogYWN0aXZpdHlEZWZhdWx0VmFsdWVzLmh1bWFuaXRhcmlhbikgIT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9PT0gbnVsbCB8fCBhY3Rpdml0eURlZmF1bHRWYWx1ZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFjdGl2aXR5RGVmYXVsdFZhbHVlcy5odW1hbml0YXJpYW4pICE9ICcnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAoYWN0aXZpdHlEZWZhdWx0VmFsdWVzID09PSBudWxsIHx8IGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogYWN0aXZpdHlEZWZhdWx0VmFsdWVzLmh1bWFuaXRhcmlhbikgIT0gZmFsc2UpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNldERhdGVSYW5nZURhdGUgPSBmdW5jdGlvbiAoc3RhcnREYXRlLCBlbmREYXRlLCBzZWxlY3RlZERhdGVGaWx0ZXIpIHtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZERhdGVGaWx0ZXIgPT09IHZvaWQgMCkgeyBzZWxlY3RlZERhdGVGaWx0ZXIgPSAnJzsgfVxuICAgICAgICAgICAgZmlsdGVyLnN0YXJ0X2RhdGUgPSBzdGFydERhdGU7XG4gICAgICAgICAgICBmaWx0ZXIuZW5kX2RhdGUgPSBlbmREYXRlO1xuICAgICAgICAgICAgZmlsdGVyLnNlbGVjdGVkX2RhdGVfZmlsdGVyID0gc2VsZWN0ZWREYXRlRmlsdGVyO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgc2V0RGF0ZVR5cGUgPSBmdW5jdGlvbiAoZGF0ZVR5cGUpIHtcbiAgICAgICAgICAgIGZpbHRlci5kYXRlX3R5cGUgPSBkYXRlVHlwZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHJvdGF0ZUNsYXNzID0gKDAsIHZ1ZV8xLnJlZikoJycpO1xuICAgICAgICB2YXIgdG9nZ2xlU2hvd011bHRpU2VsZWN0ID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIHZhciByZWN0ID0gZXZlbnQudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgbXVsdGlzZWxlY3RTdHlsZS52YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICB0b3A6IE51bWJlcihyZWN0LnRvcCkgPCAxMDAgPyAyMTAgKyAncHgnIDogTnVtYmVyKHJlY3QudG9wKSArIDUwICsgJ3B4JyxcbiAgICAgICAgICAgICAgICBsZWZ0OiBOdW1iZXIocmVjdC5sZWZ0KSArICdweCcsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaC52YWx1ZSA9ICFzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZhbHVlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgc2V0U2VsZWN0ZWRQdWJsaXNoZXIgPSBmdW5jdGlvbiAocHVibGlzaGVyVHlwZXMpIHtcbiAgICAgICAgICAgIGZpbHRlci5wdWJsaXNoZXJfdHlwZSA9IHB1Ymxpc2hlclR5cGVzO1xuICAgICAgICB9O1xuICAgICAgICAvKlxuICAgICAgICAgKiBGb3IgbWFwcGluZyBjb3VudHJ5LCBwdWJsaXNoZXJfdHlwZSBhbmQgZGF0YSBsaWNlbnNlXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgc2hvd01hcHBlZERhdGEgPSBmdW5jdGlvbiAoa2V5LCBkYXRhLCBtYXApIHtcbiAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgaWYgKGtleSA9PSAnZGF0YV9saWNlbnNlJykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGljZW5zZSA9IGRhdGFba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgbGljZW5zZSA9IGxpY2Vuc2UgPT09IG51bGwgfHwgbGljZW5zZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbGljZW5zZS50cmltKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBsaWNlbnNlID8gbWFwW2xpY2Vuc2VdIDogdHJhbnNsYXRlLm1pc3NpbmcoJ25vdF9hdmFpbGFibGUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFba2V5XSA/IG1hcFtkYXRhW2tleV1dIDogdHJhbnNsYXRlLm1pc3NpbmcoJ25vdF9hdmFpbGFibGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdGUubWlzc2luZygnbm90X2F2YWlsYWJsZScpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgQnRuQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgICAgIE11bHRpc2VsZWN0OiBtdWx0aXNlbGVjdF8xLmRlZmF1bHQsXG4gICAgICAgICAgICBEYXRlUmFuZ2VXaWRnZXQ6IERhdGVSYW5nZVdpZGdldF92dWVfMS5kZWZhdWx0LFxuICAgICAgICAgICAgTXVsdGlTZWxlY3RXaXRoU2VhcmNoOiBNdWx0aVNlbGVjdFdpdGhTZWFyY2hfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkRhdGE6IG9yZ2FuaXNhdGlvbkRhdGEsXG4gICAgICAgICAgICBkcm9wZG93blJhbmdlOiBkcm9wZG93blJhbmdlLFxuICAgICAgICAgICAgc2V0U2VsZWN0ZWRQdWJsaXNoZXI6IHNldFNlbGVjdGVkUHVibGlzaGVyLFxuICAgICAgICAgICAgdG9nZ2xlU2hvd011bHRpU2VsZWN0OiB0b2dnbGVTaG93TXVsdGlTZWxlY3QsXG4gICAgICAgICAgICBzZXREYXRlVHlwZTogc2V0RGF0ZVR5cGUsXG4gICAgICAgICAgICBzZXREYXRlUmFuZ2VEYXRlOiBzZXREYXRlUmFuZ2VEYXRlLFxuICAgICAgICAgICAgc29ydEJ5OiBzb3J0QnksXG4gICAgICAgICAgICByZXNldEFsbEZpbHRlcnM6IHJlc2V0QWxsRmlsdGVycyxcbiAgICAgICAgICAgIHNvcnRpbmdEaXJlY3Rpb246IHNvcnRpbmdEaXJlY3Rpb24sXG4gICAgICAgICAgICBkZWZhdWx0U29ydERpcmVjdGlvbjogZGVmYXVsdFNvcnREaXJlY3Rpb24sXG4gICAgICAgICAgICBwcm94eVVzZXI6IHByb3h5VXNlcixcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LFxuICAgICAgICAgICAgZmV0Y2hPcmdhbmlzYXRpb246IGZldGNoT3JnYW5pc2F0aW9uLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlU3RhdHVzOiBkZWZhdWx0VmFsdWVTdGF0dXMsXG4gICAgICAgICAgICByZWdpc3RyeUFwaUtleVN0YXR1czogcmVnaXN0cnlBcGlLZXlTdGF0dXMsXG4gICAgICAgICAgICBvcmRlclR5cGU6IG9yZGVyVHlwZSxcbiAgICAgICAgICAgIGNsZWFyRGF0ZTogY2xlYXJEYXRlLFxuICAgICAgICAgICAgZmlsdGVyOiBmaWx0ZXIsXG4gICAgICAgICAgICBzbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZTogdXRpbHNfMS5zbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZSxcbiAgICAgICAgICAgIGlzRmlsdGVyQXBwbGllZDogaXNGaWx0ZXJBcHBsaWVkLFxuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaDogc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaCxcbiAgICAgICAgICAgIGRhdGVUeXBlOiBkYXRlVHlwZSxcbiAgICAgICAgICAgIHJvdGF0ZUNsYXNzOiByb3RhdGVDbGFzcyxcbiAgICAgICAgICAgIG11bHRpc2VsZWN0U3R5bGU6IG11bHRpc2VsZWN0U3R5bGUsXG4gICAgICAgICAgICBjbGVhckRhdGVGaWx0ZXI6IGNsZWFyRGF0ZUZpbHRlcixcbiAgICAgICAgICAgIGRhdGVEcm9wZG93bjogZGF0ZURyb3Bkb3duLFxuICAgICAgICAgICAgc29ydFBhcmFtczogc29ydFBhcmFtcyxcbiAgICAgICAgICAgIHJlc2V0UGFnaW5hdGlvbjogcmVzZXRQYWdpbmF0aW9uLFxuICAgICAgICAgICAgc2hvd01hcHBlZERhdGE6IHNob3dNYXBwZWREYXRhLFxuICAgICAgICAgICAgdG90YWxPcmdhbmlzYXRpb246IHRvdGFsT3JnYW5pc2F0aW9uLFxuICAgICAgICAgICAgY291bnRyaWVzV2l0aFByZWZpeDogY291bnRyaWVzV2l0aFByZWZpeCxcbiAgICAgICAgICAgIGdlbmVyYXRlTGFiZWw6IGdlbmVyYXRlTGFiZWwsXG4gICAgICAgICAgICB0cmFuc2xhdGU6IHRyYW5zbGF0ZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBlbmNyeXB0aW9uXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZW5jcnlwdGlvblwiKSk7XG52YXIgbXVsdGlzZWxlY3RfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3RcIikpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xudmFyIFRhYmxlUGFnaW5hdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlXCIpKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIERhdGVSYW5nZVdpZGdldF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9EYXRlUmFuZ2VXaWRnZXQudnVlXCIpKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1VzZXJMaXN0aW5nJyxcbiAgICBwcm9wczoge1xuICAgICAgICBvcmdhbml6YXRpb25zOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc3RhdHVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcm9sZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICB1c2VyUm9sZTogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIG9sZGVzdERhdGVzOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGZpbHRlciA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgb3JnYW5pemF0aW9uOiBbXSxcbiAgICAgICAgICAgIHJvbGVzOiBbXSxcbiAgICAgICAgICAgIHN0YXR1czogJycsXG4gICAgICAgICAgICBvcmRlckJ5OiAnJyxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogJycsXG4gICAgICAgICAgICBxOiAnJyxcbiAgICAgICAgICAgIHN0YXJ0X2RhdGU6ICcnLFxuICAgICAgICAgICAgZW5kX2RhdGU6ICcnLFxuICAgICAgICAgICAgZGF0ZV90eXBlOiAnY3JlYXRlZF9hdCcsXG4gICAgICAgICAgICBzZWxlY3RlZF9kYXRlX2ZpbHRlcjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXNMb2FkZXJWaXNpYmxlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgYWRkVXNlckZvcm0gPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBlZGl0VXNlckZvcm0gPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB1c2Vyc0RhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHsgZGF0YTogW10gfSk7XG4gICAgICAgIHZhciBpc0VtcHR5ID0gKDAsIHZ1ZV8yLnJlZikodHJ1ZSk7XG4gICAgICAgIHZhciBhbGxTZWxlY3RlZCA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIGRlbGV0ZU1vZGFsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZGVsZXRlSWQgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgdG90YWxVc2VyID0gKDAsIHZ1ZV8yLnJlZikoMCk7XG4gICAgICAgIHZhciBzdGF0dXNJZCA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBzdGF0dXNNb2RhbCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHN0YXR1c1ZhbHVlID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIHN0YXR1c1VzZXJuYW1lID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIGRlbGV0ZVVzZXJuYW1lID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWYpKHRydWUpO1xuICAgICAgICB2YXIgZmV0Y2hpbmdUYWJsZURhdGEgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzZWxlY3RlZElkcyA9ICgwLCB2dWVfMi5yZWYpKHt9KTtcbiAgICAgICAgdmFyIGNoZWNrbGlzdCA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIGN1cnJlbnRwYWdlRGF0YSA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIGNsZWFyRGF0ZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVkaXRVc2VySWQgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBkYXRlVHlwZSA9ICgwLCB2dWVfMi5yZWYpKCdBbGwgVGltZScpO1xuICAgICAgICB2YXIgZHJvcGRvd25SYW5nZSA9IHtcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6ICdVc2VyIGNyZWF0ZWQgZGF0ZScsXG4gICAgICAgICAgICBsYXN0X2xvZ2dlZF9pbjogJ0xhc3QgbG9naW4gZGF0ZScsXG4gICAgICAgIH07XG4gICAgICAgIHZhciBmb3JtRGF0YSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdXNlcm5hbWU6ICcnLFxuICAgICAgICAgICAgZnVsbF9uYW1lOiAnJyxcbiAgICAgICAgICAgIGVtYWlsOiAnJyxcbiAgICAgICAgICAgIHN0YXR1czogJzEnLFxuICAgICAgICAgICAgcm9sZV9pZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGZvcm1FcnJvciA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdXNlcm5hbWU6ICcnLFxuICAgICAgICAgICAgZnVsbF9uYW1lOiAnJyxcbiAgICAgICAgICAgIGVtYWlsOiAnJyxcbiAgICAgICAgICAgIHN0YXR1czogJycsXG4gICAgICAgICAgICByb2xlX2lkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXNGaWx0ZXJBcHBsaWVkID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gKGZpbHRlci5vcmdhbml6YXRpb24ubGVuZ3RoICsgZmlsdGVyLnJvbGVzLmxlbmd0aCAhPSAwIHx8XG4gICAgICAgICAgICAgICAgZmlsdGVyLnN0YXR1cyAhPSAnJyB8fFxuICAgICAgICAgICAgICAgIChmaWx0ZXIuc3RhcnRfZGF0ZSAmJiBmaWx0ZXIuZW5kX2RhdGUpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpZ25vcmVVcGRhdGVzID0gKDAsIGNvcmVfMS53YXRjaElnbm9yYWJsZSkodG9hc3REYXRhLCBmdW5jdGlvbiAoKSB7IHJldHVybiB1bmRlZmluZWQ7IH0sIHtcbiAgICAgICAgICAgIGZsdXNoOiAnc3luYycsXG4gICAgICAgIH0pLmlnbm9yZVVwZGF0ZXM7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gdG9hc3REYXRhLnZpc2liaWxpdHk7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWdub3JlVG9hc3RVcGRhdGUoKTtcbiAgICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlnbm9yZVRvYXN0VXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWdub3JlVXBkYXRlcyhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSAnJztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2xlYXJEYXRlRmlsdGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZmlsdGVyLnNlbGVjdGVkX2RhdGVfZmlsdGVyID0gJyc7XG4gICAgICAgICAgICBjbGVhckRhdGVSYW5nZUZpbHRlcigpO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZmlsdGVyUGFyYW1zID0gZ2V0RmlsdGVyUGFyYW1zRnJvbVByZXZpb3VzUGFnZSgpO1xuICAgICAgICAgICAgaWYgKGZpbHRlclBhcmFtcykge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsdGVyUGFyYW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBrZXkgPSAoMCwgdXRpbHNfMS5rZWJhYkNhc2VUb1NuYWtlY2FzZSkoZmlsdGVyUGFyYW1zW2ldWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gZmlsdGVyUGFyYW1zW2ldWzFdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoWydyb2xlcycsICdvcmdhbml6YXRpb24nXS5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJba2V5XS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChrZXkgPT09ICdkYXRlX3R5cGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlVHlwZS52YWx1ZSA9IHZhbHVlLnNwbGl0KCctJykuam9pbignICcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBnZXRGaWx0ZXJQYXJhbXNGcm9tUHJldmlvdXNQYWdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gKF9hID0gd2luZG93LmxvY2F0aW9uLmhyZWYpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50b1N0cmluZygpO1xuICAgICAgICAgICAgaWYgKHF1ZXJ5U3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgcXVlcnlTdHJpbmcgPSBxdWVyeVN0cmluZy5zcGxpdCgnPycpWzFdO1xuICAgICAgICAgICAgICAgIHZhciBxdWVyeVBhcmFtc0luS2V5VmFsID0gW107XG4gICAgICAgICAgICAgICAgdmFyIHF1ZXJ5UGFyYW1zID0gcXVlcnlTdHJpbmcgPT09IG51bGwgfHwgcXVlcnlTdHJpbmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHF1ZXJ5U3RyaW5nLnNwbGl0KCcmJyk7XG4gICAgICAgICAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVlcnlQYXJhbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYiA9IHF1ZXJ5UGFyYW1zW2ldLnNwbGl0KCc9JyksIGtleSA9IF9iWzBdLCB2YWx1ZSA9IF9iWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zSW5LZXlWYWwucHVzaChba2V5LCB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdm9pZCAwID8gdmFsdWUgOiAnJ10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBxdWVyeVBhcmFtc0luS2V5VmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChcIi91c2Vycy9wYWdlLzFcIikudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3BvbnNlLmRhdGEuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS5kYXRhW2ldLnJvbGUgPSByZXNwb25zZS5kYXRhLmRhdGFbaV0ucm9sZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnXycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHVzZXJzRGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSByZXNwb25zZS5kYXRhLmRhdGEubGVuZ3RoID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICB2YXIgdGV4dEJ1YmJsZWRhdGEgPSBmdW5jdGlvbiAoaWQsIGZpZWxkKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnb3JnJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLm9yZ2FuaXphdGlvbnNbK2lkXTtcbiAgICAgICAgICAgICAgICBjYXNlICdyb2xlcyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5yb2xlc1sraWRdO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXR1cyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5zdGF0dXNbK2lkXTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjbGVhckZpbHRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZpbHRlci5vcmdhbml6YXRpb24gPSBbXTtcbiAgICAgICAgICAgIGZpbHRlci5yb2xlcyA9IFtdO1xuICAgICAgICAgICAgZmlsdGVyLnN0YXR1cyA9ICcnO1xuICAgICAgICAgICAgZmlsdGVyLmRpcmVjdGlvbiA9ICcnO1xuICAgICAgICAgICAgZmlsdGVyLm9yZGVyQnkgPSAnJztcbiAgICAgICAgICAgIGZpbHRlci5xID0gJyc7XG4gICAgICAgICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSAnJztcbiAgICAgICAgICAgIGNsZWFyRGF0ZVJhbmdlRmlsdGVyKCk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjbGVhckRhdGVSYW5nZUZpbHRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNsZWFyRGF0ZS52YWx1ZSA9IHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZXREYXRlUmFuZ2VEYXRlID0gZnVuY3Rpb24gKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSA9IHN0YXJ0RGF0ZTtcbiAgICAgICAgICAgIGZpbHRlci5lbmRfZGF0ZSA9IGVuZERhdGU7XG4gICAgICAgICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSBzZWxlY3RlZERhdGU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZXREYXRlVHlwZSA9IGZ1bmN0aW9uIChkYXRlVHlwZSkge1xuICAgICAgICAgICAgZmlsdGVyLmRhdGVfdHlwZSA9IGRhdGVUeXBlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY3JlYXRlVXNlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIHBhc3N3b3JkRGF0YSA9IHtcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZCwgKF9hID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbiwgKF9iID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJyksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy91c2VyJywgX19hc3NpZ24oX19hc3NpZ24oe30sIGZvcm1EYXRhKSwgcGFzc3dvcmREYXRhKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgc2V0Rm9ybUVycm9yKCk7XG4gICAgICAgICAgICAgICAgc2V0Rm9ybUVycm9yKHJlcy5kYXRhLmVycm9ycyk7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJGaWx0ZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hVc2Vyc0xpc3QodXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGFkZFVzZXJGb3JtLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGVtcHR5Rm9ybURhdGEoKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0Rm9ybUVycm9yKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gZXJyb3IuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYWRkVXNlckZvcm0udmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbmFsbHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBlZGl0VXNlciA9IGZ1bmN0aW9uICh1c2VyKSB7XG4gICAgICAgICAgICBmb3JtRGF0YS51c2VybmFtZSA9IHVzZXIudXNlcm5hbWU7XG4gICAgICAgICAgICBmb3JtRGF0YS5mdWxsX25hbWUgPSB1c2VyLmZ1bGxfbmFtZTtcbiAgICAgICAgICAgIGZvcm1EYXRhLmVtYWlsID0gdXNlci5lbWFpbDtcbiAgICAgICAgICAgIGZvcm1EYXRhLnJvbGVfaWQgPSB1c2VyLnJvbGVfaWQ7XG4gICAgICAgICAgICBlZGl0VXNlcklkLnZhbHVlID0gdXNlci5pZDtcbiAgICAgICAgICAgIGVkaXRVc2VyRm9ybS52YWx1ZSA9IHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBlbXB0eUZvcm1EYXRhID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGZvcm1EYXRhKSB7XG4gICAgICAgICAgICAgICAgZm9ybURhdGFba2V5XSA9IGtleSA9PT0gJ3N0YXR1cycgPyAxIDogJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZXRGb3JtRXJyb3IgPSBmdW5jdGlvbiAoZXJyb3JzKSB7XG4gICAgICAgICAgICBpZiAoZXJyb3JzID09PSB2b2lkIDApIHsgZXJyb3JzID0ge307IH1cbiAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBlcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUVycm9yW2tleV0gPSBlcnJvcnNba2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZm9ybUVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1FcnJvcltrZXldID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgb3BlblN0YXR1c01vZGVsID0gZnVuY3Rpb24gKHVzZXIpIHtcbiAgICAgICAgICAgIHN0YXR1c0lkLnZhbHVlID0gdXNlci5pZDtcbiAgICAgICAgICAgIHN0YXR1c1ZhbHVlLnZhbHVlID0gdXNlci5zdGF0dXM7XG4gICAgICAgICAgICBzdGF0dXNNb2RhbC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBzdGF0dXNVc2VybmFtZS52YWx1ZSA9IHVzZXIudXNlcm5hbWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciB1cGRhdGVVc2VyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB2YXIgcGFzc3dvcmREYXRhID0ge1xuICAgICAgICAgICAgICAgIHBhc3N3b3JkOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkLCAoX2EgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnKSxcbiAgICAgICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLCAoX2IgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucGF0Y2goXCIvdXNlci9cIi5jb25jYXQoZWRpdFVzZXJJZC52YWx1ZSksIF9fYXNzaWduKF9fYXNzaWduKHt9LCBmb3JtRGF0YSksIHBhc3N3b3JkRGF0YSkpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHNldEZvcm1FcnJvcigpO1xuICAgICAgICAgICAgICAgIHNldEZvcm1FcnJvcihyZXMuZGF0YS5lcnJvcnMpO1xuICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGVkaXRVc2VyRm9ybS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBmZXRjaFVzZXJzTGlzdCh1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddKTtcbiAgICAgICAgICAgICAgICAgICAgZWRpdFVzZXJJZC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBlbXB0eUZvcm1EYXRhKCk7XG4gICAgICAgICAgICAgICAgICAgIHNldEZvcm1FcnJvcigpO1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgZWRpdFVzZXJJZC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IGVycm9yLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmluYWxseShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBbXG4gICAgICAgICAgICBmaWx0ZXIub3JnYW5pemF0aW9uLFxuICAgICAgICAgICAgZmlsdGVyLnJvbGVzLFxuICAgICAgICAgICAgZmlsdGVyLnEsXG4gICAgICAgICAgICBmaWx0ZXIuc3RhdHVzLFxuICAgICAgICAgICAgZmlsdGVyLnN0YXJ0X2RhdGUsXG4gICAgICAgICAgICBmaWx0ZXIuZW5kX2RhdGUsXG4gICAgICAgICAgICBmaWx0ZXIuZGF0ZV90eXBlLFxuICAgICAgICBdOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmZXRjaFVzZXJzTGlzdCh1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddLCB0cnVlKTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICBmdW5jdGlvbiBmZXRjaFVzZXJzTGlzdChhY3RpdmVfcGFnZSwgZmlsdGVyZWQpIHtcbiAgICAgICAgICAgIGlmIChmaWx0ZXJlZCA9PT0gdm9pZCAwKSB7IGZpbHRlcmVkID0gZmFsc2U7IH1cbiAgICAgICAgICAgIHZhciByb3V0ZSA9IFwiL3VzZXJzL3BhZ2UvXCIuY29uY2F0KGZpbHRlcmVkID8gJzEnIDogYWN0aXZlX3BhZ2UpO1xuICAgICAgICAgICAgZmV0Y2hpbmdUYWJsZURhdGEudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICAgICAgICAgIGZvciAodmFyIGZpbHRlcl9rZXkgaW4gZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlcltmaWx0ZXJfa2V5XSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyW2ZpbHRlcl9rZXldLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoZmlsdGVyX2tleSwgZmlsdGVyW2ZpbHRlcl9rZXldKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQocm91dGUsIHsgcGFyYW1zOiBwYXJhbXMgfSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih1c2Vyc0RhdGEsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSByZXNwb25zZS5kYXRhID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgICAgIHRvdGFsVXNlci52YWx1ZSA9IHJlc3BvbnNlLmRhdGEudG90YWw7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBmZXRjaGluZ1RhYmxlRGF0YS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG9wZW5EZWxldGVtb2RlbCA9IGZ1bmN0aW9uICh1c2VyKSB7XG4gICAgICAgICAgICBkZWxldGVNb2RhbC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBkZWxldGVJZC52YWx1ZSA9IHVzZXIuaWQ7XG4gICAgICAgICAgICBkZWxldGVVc2VybmFtZS52YWx1ZSA9IHVzZXIudXNlcm5hbWU7XG4gICAgICAgIH07XG4gICAgICAgIGZ1bmN0aW9uIGRlbGV0ZVVzZXIoaWQpIHtcbiAgICAgICAgICAgIGRlbGV0ZU1vZGFsLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZGVsZXRlKFwiL3VzZXIvXCIuY29uY2F0KGlkKSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcmVzLmRhdGEuc3VjY2VzcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hVc2Vyc0xpc3QodXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNvcnQgPSBmdW5jdGlvbiAocGFyYW0pIHtcbiAgICAgICAgICAgIGZpbHRlci5kaXJlY3Rpb24gPVxuICAgICAgICAgICAgICAgIGZpbHRlci5kaXJlY3Rpb24gPT09ICdhc2MnICYmIGZpbHRlci5vcmRlckJ5ID09PSBwYXJhbSA/ICdkZXNjJyA6ICdhc2MnO1xuICAgICAgICAgICAgZmlsdGVyLm9yZGVyQnkgPSBwYXJhbTtcbiAgICAgICAgICAgIGZldGNoVXNlcnNMaXN0KDEpO1xuICAgICAgICB9O1xuICAgICAgICBmdW5jdGlvbiB0b2dnbGVVc2VyU3RhdHVzKGlkKSB7XG4gICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgc3RhdHVzTW9kYWwudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wYXRjaChcIi91c2VyL3N0YXR1cy9cIi5jb25jYXQoaWQpKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgICAgICBmZXRjaFVzZXJzTGlzdCh1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mb3JtYXQoJ0xMJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvZ2dsZVNlbGVjdGFsbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGN1cnJlbnRwYWdlRGF0YS52YWx1ZSA9IHVzZXJzRGF0YS5kYXRhLm1hcChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVbJ2lkJ107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdXNlcnNEYXRhLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoIWNoZWNrbGlzdC52YWx1ZS5pbmNsdWRlcyh1c2Vyc0RhdGEuZGF0YVtpXVsnaWQnXSkpXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrbGlzdC52YWx1ZVtjaGVja2xpc3QudmFsdWUubGVuZ3RoICsgaV0gPSB1c2Vyc0RhdGEuZGF0YVtpXVsnaWQnXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGVjdGVkSWRzLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dID0gY2hlY2tsaXN0LnZhbHVlO1xuICAgICAgICAgICAgaWYgKGFsbFNlbGVjdGVkLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dKSB7XG4gICAgICAgICAgICAgICAgY2hlY2tsaXN0LnZhbHVlID0gY2hlY2tsaXN0LnZhbHVlLmZpbHRlcihmdW5jdGlvbiAobikgeyByZXR1cm4gIU9iamVjdC52YWx1ZXMoY3VycmVudHBhZ2VEYXRhLnZhbHVlKS5pbmNsdWRlcyhuKTsgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjaGVja2xpc3QudmFsdWUgPSBjaGVja2xpc3QudmFsdWUuZmlsdGVyKGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbCAhPSBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhbGxTZWxlY3RlZC52YWx1ZVt1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddXSA9XG4gICAgICAgICAgICAgICAgIWFsbFNlbGVjdGVkLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNoZWNrbGlzdC52YWx1ZTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJZHMudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV0gPSBbXTtcbiAgICAgICAgICAgIGN1cnJlbnRwYWdlRGF0YS52YWx1ZSA9IHVzZXJzRGF0YS5kYXRhLm1hcChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVbJ2lkJ107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hlY2tsaXN0LnZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRwYWdlRGF0YS52YWx1ZS5pbmNsdWRlcyhjaGVja2xpc3QudmFsdWVbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSWRzLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dW2ldID0gY2hlY2tsaXN0LnZhbHVlW2ldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGVjdGVkSWRzLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dID0gc2VsZWN0ZWRJZHMudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV0uZmlsdGVyKGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbCAhPSBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZ2VuZXJhdGVMYWJlbCA9IGZ1bmN0aW9uIChsYWJlbCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgJy0tbGFiZWwnOiBcIidcIi5jb25jYXQobGFiZWwsIFwiJ1wiKSB9O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZG93bmxvYWRBbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcm91dGUgPSBcIi91c2Vycy9kb3dubG9hZC9cIjtcbiAgICAgICAgICAgIHZhciBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgICAgICAgICB2YXIgYWxsUGFnZVNlbGVjdGVkO1xuICAgICAgICAgICAgYWxsUGFnZVNlbGVjdGVkID0gT2JqZWN0LnZhbHVlcyhzZWxlY3RlZElkcy52YWx1ZSkuZmxhdCgpO1xuICAgICAgICAgICAgaWYgKGNoZWNrbGlzdC52YWx1ZS5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGZpbHRlcl9rZXkgaW4gZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJbZmlsdGVyX2tleV0ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZChmaWx0ZXJfa2V5LCBmaWx0ZXJbZmlsdGVyX2tleV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgndXNlcnMnLCBhbGxQYWdlU2VsZWN0ZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChyb3V0ZSwgeyBwYXJhbXM6IHBhcmFtcyB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtyZXNwb25zZV0sIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2NzdicsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IHJlcy5oZWFkZXJzWydjb250ZW50LWRpc3Bvc2l0aW9uJ10uc3BsaXQoJz0nKVsxXTtcbiAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRlOiB0cmFuc2xhdGUsIHByb3BzOiBwcm9wcywgdG9hc3REYXRhOiB0b2FzdERhdGEsIGZpbHRlcjogZmlsdGVyLCBpc0xvYWRlclZpc2libGU6IGlzTG9hZGVyVmlzaWJsZSwgYWRkVXNlckZvcm06IGFkZFVzZXJGb3JtLCBlZGl0VXNlckZvcm06IGVkaXRVc2VyRm9ybSwgdXNlcnNEYXRhOiB1c2Vyc0RhdGEsIGlzRW1wdHk6IGlzRW1wdHksIGFsbFNlbGVjdGVkOiBhbGxTZWxlY3RlZCwgZGVsZXRlTW9kYWw6IGRlbGV0ZU1vZGFsLCBkZWxldGVJZDogZGVsZXRlSWQsIHRvdGFsVXNlcjogdG90YWxVc2VyLCBzdGF0dXNJZDogc3RhdHVzSWQsIHN0YXR1c01vZGFsOiBzdGF0dXNNb2RhbCwgc3RhdHVzVmFsdWU6IHN0YXR1c1ZhbHVlLCBzdGF0dXNVc2VybmFtZTogc3RhdHVzVXNlcm5hbWUsIGRlbGV0ZVVzZXJuYW1lOiBkZWxldGVVc2VybmFtZSwgbG9hZGVyOiBsb2FkZXIsIGZldGNoaW5nVGFibGVEYXRhOiBmZXRjaGluZ1RhYmxlRGF0YSwgc2VsZWN0ZWRJZHM6IHNlbGVjdGVkSWRzLCBjaGVja2xpc3Q6IGNoZWNrbGlzdCwgY3VycmVudHBhZ2VEYXRhOiBjdXJyZW50cGFnZURhdGEsIGNsZWFyRGF0ZTogY2xlYXJEYXRlLCBlZGl0VXNlcklkOiBlZGl0VXNlcklkLCBkYXRlVHlwZTogZGF0ZVR5cGUsIGRyb3Bkb3duUmFuZ2U6IGRyb3Bkb3duUmFuZ2UsIGZvcm1EYXRhOiBmb3JtRGF0YSwgZm9ybUVycm9yOiBmb3JtRXJyb3IsIGlzRmlsdGVyQXBwbGllZDogaXNGaWx0ZXJBcHBsaWVkLCBpZ25vcmVVcGRhdGVzOiBpZ25vcmVVcGRhdGVzLCBpZ25vcmVUb2FzdFVwZGF0ZTogaWdub3JlVG9hc3RVcGRhdGUsIGNsZWFyRGF0ZUZpbHRlcjogY2xlYXJEYXRlRmlsdGVyLCBnZXRGaWx0ZXJQYXJhbXNGcm9tUHJldmlvdXNQYWdlOiBnZXRGaWx0ZXJQYXJhbXNGcm9tUHJldmlvdXNQYWdlLCB0ZXh0QnViYmxlZGF0YTogdGV4dEJ1YmJsZWRhdGEsIGNsZWFyRmlsdGVyOiBjbGVhckZpbHRlciwgY2xlYXJEYXRlUmFuZ2VGaWx0ZXI6IGNsZWFyRGF0ZVJhbmdlRmlsdGVyLCBzZXREYXRlUmFuZ2VEYXRlOiBzZXREYXRlUmFuZ2VEYXRlLCBzZXREYXRlVHlwZTogc2V0RGF0ZVR5cGUsIGNyZWF0ZVVzZXI6IGNyZWF0ZVVzZXIsIGVkaXRVc2VyOiBlZGl0VXNlciwgZW1wdHlGb3JtRGF0YTogZW1wdHlGb3JtRGF0YSwgc2V0Rm9ybUVycm9yOiBzZXRGb3JtRXJyb3IsIG9wZW5TdGF0dXNNb2RlbDogb3BlblN0YXR1c01vZGVsLCB1cGRhdGVVc2VyOiB1cGRhdGVVc2VyLCBmZXRjaFVzZXJzTGlzdDogZmV0Y2hVc2Vyc0xpc3QsIG9wZW5EZWxldGVtb2RlbDogb3BlbkRlbGV0ZW1vZGVsLCBkZWxldGVVc2VyOiBkZWxldGVVc2VyLCBzb3J0OiBzb3J0LCB0b2dnbGVVc2VyU3RhdHVzOiB0b2dnbGVVc2VyU3RhdHVzLCBmb3JtYXREYXRlOiBmb3JtYXREYXRlLCB0b2dnbGVTZWxlY3RhbGw6IHRvZ2dsZVNlbGVjdGFsbCwgZ2VuZXJhdGVMYWJlbDogZ2VuZXJhdGVMYWJlbCwgZG93bmxvYWRBbGw6IGRvd25sb2FkQWxsLCBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LCBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsIFBvcHVwTW9kYWw6IFBvcHVwTW9kYWxfdnVlXzEuZGVmYXVsdCwgTXVsdGlzZWxlY3Q6IG11bHRpc2VsZWN0XzEuZGVmYXVsdCwgUGFnaW5hdGlvbjogVGFibGVQYWdpbmF0aW9uX3Z1ZV8xLmRlZmF1bHQsIERhdGVSYW5nZVdpZGdldDogRGF0ZVJhbmdlV2lkZ2V0X3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBlbmNyeXB0aW9uXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZW5jcnlwdGlvblwiKSk7XG52YXIgbXVsdGlzZWxlY3RfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3RcIikpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1VzZXJQcm9maWxlJyxcbiAgICBwcm9wczoge1xuICAgICAgICB1c2VyOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgbGFuZ3VhZ2VQcmVmZXJlbmNlOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXNMb2FkZXJWaXNpYmxlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZWRpdFByb2ZpbGVGb3JtID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZWRpdFBhc3N3b3JkRm9ybSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dDdXJyZW50UGFzc3dvcmQgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93TmV3UGFzc3dvcmQgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93Q29uZmlybVBhc3N3b3JkID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdXNlckRhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHsgdXNlcl9yb2xlOiAnJyB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih1c2VyRGF0YSwgcHJvcHMudXNlcik7XG4gICAgICAgICAgICB1c2VyRGF0YS51c2VyX3JvbGUgPSB1c2VyRGF0YS51c2VyX3JvbGUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBmb3JtRGF0YSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdXNlcm5hbWU6IHByb3BzLnVzZXIudXNlcm5hbWUsXG4gICAgICAgICAgICBmdWxsX25hbWU6IHByb3BzLnVzZXIuZnVsbF9uYW1lLFxuICAgICAgICAgICAgZW1haWw6IHByb3BzLnVzZXIuZW1haWwsXG4gICAgICAgICAgICBsYW5ndWFnZV9wcmVmZXJlbmNlOiBwcm9wcy51c2VyLmxhbmd1YWdlX3ByZWZlcmVuY2UsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZXJyb3JGb3JtRGF0YSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdXNlcm5hbWU6ICcnLFxuICAgICAgICAgICAgZnVsbF9uYW1lOiAnJyxcbiAgICAgICAgICAgIGVtYWlsOiAnJyxcbiAgICAgICAgICAgIGxhbmd1YWdlX3ByZWZlcmVuY2U6ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHBhc3N3b3JkRGF0YSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgY3VycmVudF9wYXNzd29yZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGVycm9yUGFzc3dvcmREYXRhID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBjdXJyZW50X3Bhc3N3b3JkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaWdub3JlVXBkYXRlcyA9ICgwLCBjb3JlXzEud2F0Y2hJZ25vcmFibGUpKHRvYXN0RGF0YSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9LCB7XG4gICAgICAgICAgICBmbHVzaDogJ3N5bmMnLFxuICAgICAgICB9KS5pZ25vcmVVcGRhdGVzO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRvYXN0RGF0YS52aXNpYmlsaXR5OyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlnbm9yZVRvYXN0VXBkYXRlKCk7XG4gICAgICAgICAgICB9LCAxMDAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaWdub3JlVG9hc3RVcGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZ25vcmVVcGRhdGVzKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9ICcnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciByZXNlbmRWZXJpZmljYXRpb25FbWFpbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL3VzZXIvdmVyaWZpY2F0aW9uL2VtYWlsJylcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IChfYSA9IHJlcy5kYXRhLm1lc3NhZ2UpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcmVzLmRhdGEuc3VjY2VzcztcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSAoX2EgPSBlcnJvci5kYXRhLm1lc3NhZ2UpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHVwZGF0ZVBhc3N3b3JkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIHBhc3N3b3JkRm9ybURhdGEgPSB7XG4gICAgICAgICAgICAgICAgY3VycmVudF9wYXNzd29yZDogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShwYXNzd29yZERhdGEuY3VycmVudF9wYXNzd29yZCwgKF9hID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkocGFzc3dvcmREYXRhLnBhc3N3b3JkLCAoX2IgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnKSxcbiAgICAgICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkocGFzc3dvcmREYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbiwgKF9jID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAnJyksXG4gICAgICAgICAgICAgICAgZm9ybV90eXBlOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvdXBkYXRlL3Bhc3N3b3JkJywgcGFzc3dvcmRGb3JtRGF0YSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgZWRpdFBhc3N3b3JkRm9ybS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZXJyb3JQYXNzd29yZERhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yUGFzc3dvcmREYXRhW2tleV0gPSAnJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHJlcy5kYXRhLmVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JQYXNzd29yZERhdGFba2V5XSA9IHJlcy5kYXRhLmVycm9yc1trZXldWzBdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gZXJyb3IuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgdXBkYXRlUHJvZmlsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL3VwZGF0ZS9wcm9maWxlJywgZm9ybURhdGEpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGVkaXRQcm9maWxlRm9ybS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZXJyb3JGb3JtRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JGb3JtRGF0YVtrZXldID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGZvcm1EYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyRGF0YVtrZXldID0gZm9ybURhdGFba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHJlcy5kYXRhLmVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JGb3JtRGF0YVtrZXldID0gcmVzLmRhdGEuZXJyb3JzW2tleV1bMF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBlcnJvci5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbmFsbHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCBwcm9wczogcHJvcHMsIHRvYXN0RGF0YTogdG9hc3REYXRhLCBpc0xvYWRlclZpc2libGU6IGlzTG9hZGVyVmlzaWJsZSwgZWRpdFByb2ZpbGVGb3JtOiBlZGl0UHJvZmlsZUZvcm0sIGVkaXRQYXNzd29yZEZvcm06IGVkaXRQYXNzd29yZEZvcm0sIHNob3dDdXJyZW50UGFzc3dvcmQ6IHNob3dDdXJyZW50UGFzc3dvcmQsIHNob3dOZXdQYXNzd29yZDogc2hvd05ld1Bhc3N3b3JkLCBzaG93Q29uZmlybVBhc3N3b3JkOiBzaG93Q29uZmlybVBhc3N3b3JkLCB1c2VyRGF0YTogdXNlckRhdGEsIGZvcm1EYXRhOiBmb3JtRGF0YSwgZXJyb3JGb3JtRGF0YTogZXJyb3JGb3JtRGF0YSwgcGFzc3dvcmREYXRhOiBwYXNzd29yZERhdGEsIGVycm9yUGFzc3dvcmREYXRhOiBlcnJvclBhc3N3b3JkRGF0YSwgaWdub3JlVXBkYXRlczogaWdub3JlVXBkYXRlcywgaWdub3JlVG9hc3RVcGRhdGU6IGlnbm9yZVRvYXN0VXBkYXRlLCByZXNlbmRWZXJpZmljYXRpb25FbWFpbDogcmVzZW5kVmVyaWZpY2F0aW9uRW1haWwsIHVwZGF0ZVBhc3N3b3JkOiB1cGRhdGVQYXNzd29yZCwgdXBkYXRlUHJvZmlsZTogdXBkYXRlUHJvZmlsZSwgY2FwaXRhbGl6ZTogdnVlXzIuY2FwaXRhbGl6ZSwgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCwgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LCBQb3B1cE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsIE11bHRpc2VsZWN0OiBtdWx0aXNlbGVjdF8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHJldHVybiB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBwcm9wczoge1xuICAgICAgICBlbWFpbDogeyB0eXBlOiBTdHJpbmcsIGRlZmF1bHQ6ICcnIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogdHJhbnNsYXRlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIEVtYWlsVmVyaWZpY2F0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZVwiKSk7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLy4uLy4uL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgbXVsdGlzZWxlY3RfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3RcIikpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vY29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciBlbmNyeXB0aW9uXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZW5jcnlwdGlvblwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgRW1haWxWZXJpZmljYXRpb246IEVtYWlsVmVyaWZpY2F0aW9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIE11bHRpc2VsZWN0OiBtdWx0aXNlbGVjdF8xLmRlZmF1bHQsXG4gICAgICAgIExvYWRlcjogTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHN0ZXAgPSAoMCwgdnVlXzEucmVmKSgxKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hlckV4aXN0cyA9ICgwLCB2dWVfMS5yZWYpKHRydWUpO1xuICAgICAgICB2YXIgaXNMb2FkZXJWaXNpYmxlID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdGV4dGFyZWEgPSAoMCwgdnVlXzEucmVmKShudWxsKTtcbiAgICAgICAgdmFyIGVycm9yRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgcHVibGlzaGVyX25hbWU6ICcnLFxuICAgICAgICAgICAgcHVibGlzaGVyX2lkOiAnJyxcbiAgICAgICAgICAgIGNvdW50cnk6ICcnLFxuICAgICAgICAgICAgcmVnaXN0cmF0aW9uX2FnZW5jeTogJycsXG4gICAgICAgICAgICByZWdpc3RyYXRpb25fbnVtYmVyOiAnJyxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6ICcnLFxuICAgICAgICAgICAgcHVibGlzaGVyX3R5cGU6ICcnLFxuICAgICAgICAgICAgbGljZW5zZV9pZDogJycsXG4gICAgICAgICAgICBpbWFnZV91cmw6ICcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgICAgICAgY29udGFjdF9lbWFpbDogJycsXG4gICAgICAgICAgICB3ZWJzaXRlOiAnJyxcbiAgICAgICAgICAgIGFkZHJlc3M6ICcnLFxuICAgICAgICAgICAgc291cmNlOiAnJyxcbiAgICAgICAgICAgIHJlY29yZF9leGNsdXNpb25zOiAnJyxcbiAgICAgICAgICAgIHVzZXJuYW1lOiAnJyxcbiAgICAgICAgICAgIGZ1bGxfbmFtZTogJycsXG4gICAgICAgICAgICBlbWFpbDogJycsXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlhdGlFcnJvciA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgZm9ybURhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHB1Ymxpc2hlcl9uYW1lOiAnJyxcbiAgICAgICAgICAgIHB1Ymxpc2hlcl9pZDogJycsXG4gICAgICAgICAgICBjb3VudHJ5OiAnJyxcbiAgICAgICAgICAgIHJlZ2lzdHJhdGlvbl9hZ2VuY3k6ICcnLFxuICAgICAgICAgICAgcmVnaXN0cmF0aW9uX251bWJlcjogJycsXG4gICAgICAgICAgICBpZGVudGlmaWVyOiAnJyxcbiAgICAgICAgICAgIHB1Ymxpc2hlcl90eXBlOiAnJyxcbiAgICAgICAgICAgIGxpY2Vuc2VfaWQ6ICcnLFxuICAgICAgICAgICAgaW1hZ2VfdXJsOiAnJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgICAgIGNvbnRhY3RfZW1haWw6ICcnLFxuICAgICAgICAgICAgd2Vic2l0ZTogJycsXG4gICAgICAgICAgICBhZGRyZXNzOiAnJyxcbiAgICAgICAgICAgIHNvdXJjZTogJycsXG4gICAgICAgICAgICByZWNvcmRfZXhjbHVzaW9uczogJycsXG4gICAgICAgICAgICB1c2VybmFtZTogJycsXG4gICAgICAgICAgICBmdWxsX25hbWU6ICcnLFxuICAgICAgICAgICAgZW1haWw6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAnJyxcbiAgICAgICAgICAgIHN0ZXA6ICcxJyxcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9ybURhdGEuY291bnRyeTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZm9ybURhdGEucmVnaXN0cmF0aW9uX2FnZW5jeSA9ICcnO1xuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gcmVzaXplKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC50YXJnZXQuc3R5bGUuaGVpZ2h0ID0gJ2F1dG8nO1xuICAgICAgICAgICAgZXZlbnQudGFyZ2V0LnN0eWxlLmhlaWdodCA9IFwiXCIuY29uY2F0KGV2ZW50LnRhcmdldC5zY3JvbGxIZWlnaHQsIFwicHhcIik7XG4gICAgICAgIH1cbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBbZm9ybURhdGEucmVnaXN0cmF0aW9uX2FnZW5jeSwgZm9ybURhdGEucmVnaXN0cmF0aW9uX251bWJlcl07IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZvcm1EYXRhLmlkZW50aWZpZXIgPSBmb3JtRGF0YS5yZWdpc3RyYXRpb25fYWdlbmN5XG4gICAgICAgICAgICAgICAgPyBmb3JtRGF0YS5yZWdpc3RyYXRpb25fYWdlbmN5ICsgJy0nICsgZm9ybURhdGEucmVnaXN0cmF0aW9uX251bWJlclxuICAgICAgICAgICAgICAgIDogZm9ybURhdGEucmVnaXN0cmF0aW9uX251bWJlcjtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgcmVnaXN0cmF0aW9uX2FnZW5jeSA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGFnZW5jaWVzID0gcHJvcHMudHlwZXMucmVnaXN0cmF0aW9uQWdlbmN5O1xuICAgICAgICAgICAgaWYgKGZvcm1EYXRhLmNvdW50cnkpIHtcbiAgICAgICAgICAgICAgICB2YXIgdW5jYXRlZ29yaXplZF8xID0gWydYSScsICdYUiddO1xuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoYWdlbmNpZXMpLmZpbHRlcihmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGtleSA9IF9hWzBdO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5LnN0YXJ0c1dpdGgoZm9ybURhdGEuY291bnRyeSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuY2F0ZWdvcml6ZWRfMS5zb21lKGZ1bmN0aW9uIChrKSB7IHJldHVybiBrZXkuc3RhcnRzV2l0aChrKTsgfSk7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFnZW5jaWVzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlzVGV4dEZpZWxkID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGZpZWxkVHlwZSwgZmllbGROYW1lKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgoZmllbGRUeXBlID09PSAndGV4dCcgfHxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRUeXBlID09PSAncGFzc3dvcmQnIHx8XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkVHlwZSA9PT0gJ2VtYWlsJykgJiZcbiAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lICE9ICdpZGVudGlmaWVyJyk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNoZWNrU3RlcCA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChmb3JtU3RlcCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUludChmb3JtU3RlcC50b1N0cmluZygpKSA9PT0gc3RlcC52YWx1ZTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogb2JqZWN0IHdpdGggbXVsdGktc3RlcCBmb3JtIGluZm9ybWF0aW9uXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgcmVnaXN0ZXJGb3JtID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICAxOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3B1Ymxpc2hlcl9pbmZvcm1hdGlvbi5sYWJlbCcpLFxuICAgICAgICAgICAgICAgIGlzX2NvbXBsZXRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncHVibGlzaGVyX2luZm9ybWF0aW9uLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncHVibGlzaGVyX2luZm9ybWF0aW9uLmhvdmVyX3RleHQnKSxcbiAgICAgICAgICAgICAgICBmaWVsZHM6IHtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVyX25hbWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwdWJsaXNoZXJfbmFtZS5sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3B1Ymxpc2hlcl9uYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwdWJsaXNoZXJfbmFtZS5wbGFjZWhvbGRlcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdwdWJsaXNoZXItbmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3B1Ymxpc2hlcl9uYW1lLmhvdmVyX3RleHQnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnY29sLXNwYW4tMiBtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVyX2lkOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncHVibGlzaGVyX2lkLmxhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncHVibGlzaGVyX2lkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwdWJsaXNoZXJfaWQucGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncHVibGlzaGVyLWlkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncHVibGlzaGVyX2lkLmhvdmVyX3RleHQnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdjb3VudHJ5LmxhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY291bnRyeScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnY291bnRyeS5wbGFjZWhvbGRlcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdjb3VudHJ5X3NlbGVjdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2NvdW50cnkuaG92ZXJfdGV4dCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHMudHlwZXMuY291bnRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yIHJlbGF0aXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJhdGlvbl9hZ2VuY3k6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdvcmdfcmVnaXN0cmF0aW9uX2FnZW5jeS5sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3JlZ2lzdHJhdGlvbl9hZ2VuY3knLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ29yZ19yZWdpc3RyYXRpb25fYWdlbmN5LnBsYWNlaG9sZGVyJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3JlZ2lzdHJhdGlvbi1hZ2VuY3knLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdvcmdfcmVnaXN0cmF0aW9uX2FnZW5jeS5ob3Zlcl90ZXh0JyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHJlZ2lzdHJhdGlvbl9hZ2VuY3ksXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMiByZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICByZWdpc3RyYXRpb25fbnVtYmVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncmVnaXN0cmF0aW9uX251bWJlci5sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3JlZ2lzdHJhdGlvbl9udW1iZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3JlZ2lzdHJhdGlvbl9udW1iZXIucGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncmVnaXN0cmF0aW9uLW51bWJlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3JlZ2lzdHJhdGlvbl9udW1iZXIuaG92ZXJfdGV4dCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiBcIlwiLmNvbmNhdCh0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdmb3JfZWcnKSwgXCIgMTIzNDU2XCIpLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnaWF0aV9vcmdfaWRlbnRpZmllci5sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2lkZW50aWZpZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdpZGVudGlmaWVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnaWF0aV9vcmdfaWRlbnRpZmllci5ob3Zlcl90ZXh0JyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItNicsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2lhdGlfb3JnX2lkZW50aWZpZXIuaGVscF90ZXh0JyksXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlcl90eXBlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncHVibGlzaGVyX3R5cGUubGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwdWJsaXNoZXJfdHlwZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncHVibGlzaGVyX3R5cGUucGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncHVibGlzaGVyLXR5cGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwdWJsaXNoZXJfdHlwZS5ob3Zlcl90ZXh0JyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzLnR5cGVzLnB1Ymxpc2hlclR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMiByZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBsaWNlbnNlX2lkOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnZGF0YV9saWNlbnNlLmxhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbGljZW5zZV9pZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnZGF0YV9saWNlbnNlLnBsYWNlaG9sZGVyJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2RhdGEtbGljZW5zZScsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2RhdGFfbGljZW5zZS5ob3Zlcl90ZXh0JyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzLnR5cGVzLmRhdGFMaWNlbnNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTIgcmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VfdXJsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncHVibGlzaGVyX2xvZ29fdXJsLmxhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnaW1hZ2VfdXJsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBcIlwiLmNvbmNhdCh0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdmb3JfZWcnKSwgXCI6IGh0dHA6Ly9teWxvZ28uY29tIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncHVibGlzaGVyLWxvZ28tdXJsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3B1Ymxpc2hlcl9sb2dvX3VybC5ob3Zlcl90ZXh0JyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMiByZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ29yZ2FuaXNhdGlvbl9kZXNjLmxhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZGVzY3JpcHRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ29yZ2FuaXNhdGlvbl9kZXNjLnBsYWNlaG9sZGVyJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ29yZ2FuaXphdGlvbi1kZXNjcmlwdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdvcmdhbmlzYXRpb25fZGVzYy5ob3Zlcl90ZXh0JyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGNvbC1zcGFuLTIgbGc6bWItMiByZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgMjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdjb250YWN0X2luZm8udGl0bGUnKSxcbiAgICAgICAgICAgICAgICBpc19jb21wbGV0ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3B1Ymxpc2hlcl9pbmZvcm1hdGlvbi5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgICAgIGZpZWxkczoge1xuICAgICAgICAgICAgICAgICAgICBjb250YWN0X2VtYWlsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnY29udGFjdC5sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NvbnRhY3RfZW1haWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdjb250YWN0LWVtYWlsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnY29udGFjdC5ob3Zlcl90ZXh0JyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgIGxnOm1iLTYnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB3ZWJzaXRlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnd2Vic2l0ZS5sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3dlYnNpdGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IFwiXCIuY29uY2F0KHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2Zvcl9lZycpLCBcIiBodHRwOi8vbXl3ZWJzaXRlLmNvbVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnd2Vic2l0ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCd3ZWJzaXRlLmhvdmVyX3RleHQnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi02JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2FkZHJlc3MubGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhZGRyZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdhZGRyZXNzLnBsYWNlaG9sZGVyJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2FkZHJlc3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnYWRkcmVzcy5ob3Zlcl90ZXh0JyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGNvbC1zcGFuLTIgbGc6bWItNicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3B1Ymxpc2hpbmdfYWRkaXRpb25hbF9pbmZvLnRpdGxlJyksXG4gICAgICAgICAgICAgICAgaXNfY29tcGxldGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwdWJsaXNoaW5nX2FkZGl0aW9uYWxfaW5mby5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgICAgIGZpZWxkczoge1xuICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdzb3VyY2UubGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdzb3VyY2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3NvdXJjZS5wbGFjZWhvbGRlcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdjb250YWN0LWVtYWlsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnc291cmNlLmhvdmVyX3RleHQnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHMudHlwZXMuc291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTYnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICByZWNvcmRfZXhjbHVzaW9uczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3JlY29yZF9leGNsdXNpb25zLmxhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVjb3JkX2V4Y2x1c2lvbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3JlY29yZF9leGNsdXNpb25zLnBsYWNlaG9sZGVyJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3JlY29yZC1leGNsdXNpb25zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3JlY29yZF9leGNsdXNpb25zLmhvdmVyX3RleHQnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgIGNvbC1zcGFuLTIgbGc6bWItNicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICA0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2FkbWluaXN0cmF0b3JfaW5mb3JtYXRpb24ubGFiZWwnKSxcbiAgICAgICAgICAgICAgICBpc19jb21wbGV0ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2FkbWluaXN0cmF0b3JfaW5mb3JtYXRpb24uaWF0aV9yZWdpc3Rlcl9kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgICAgIGZpZWxkczoge1xuICAgICAgICAgICAgICAgICAgICB1c2VybmFtZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3VzZXJuYW1lLmxhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndXNlcm5hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3VzZXJuYW1lLnBsYWNlaG9sZGVyJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3VzZXJuYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgndXNlcm5hbWUuaG92ZXJfdGV4dCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZnVsbF9uYW1lOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnZnVsbG5hbWUubGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdmdWxsX25hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2Z1bGxuYW1lLnBsYWNlaG9sZGVyJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2Z1bGwtbmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdjb2wtc3RhcnQtMSBtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBlbWFpbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2VtYWlsX2FkZHJlc3MubGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnZW1haWxfYWRkcmVzcy5wbGFjZWhvbGRlcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwYXNzd29yZC5sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwYXNzd29yZC5wbGFjZWhvbGRlcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdwYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncGFzc3dvcmQuaGVscF90ZXh0JyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwYXNzd29yZC5jb25maXJtJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGFzc3dvcmRfY29uZmlybWF0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwYXNzd29yZC5wbGFjZWhvbGRlcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdwYXNzd29yZC1jb25maXJtYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3Bhc3N3b3JkLmNvbmZpcm1faGVscCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi02JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIDU6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnZW1haWxfdmVyaWZpY2F0aW9uLnRpdGxlJyksXG4gICAgICAgICAgICAgICAgaXNfY29tcGxldGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdlbWFpbF92ZXJpZmljYXRpb24uZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogVXBkYXRlIFZhbGlkYXRpb24gZXJyb3JzIGZyb20gYXBpIGludG8gZXJyb3JEYXRhIGFycmF5XG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiB1cGRhdGVWYWxpZGF0aW9uRXJyb3JzKGVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGNsZWFuVmFsaWRhdGlvbkVycm9ycygpO1xuICAgICAgICAgICAgZm9yICh2YXIgZmllbGQgaW4gZXJyb3JEYXRhKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JEYXRhW2ZpZWxkXSA9IGVycm9yUmVzcG9uc2VbZmllbGRdID8gZXJyb3JSZXNwb25zZVtmaWVsZF1bMF0gOiAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogVXBkYXRlIFZhbGlkYXRpb24gZXJyb3JzIGZyb20gYXBpIGludG8gZXJyb3JEYXRhIGFycmF5XG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBjbGVhblZhbGlkYXRpb25FcnJvcnMoKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBmaWVsZCBpbiBlcnJvckRhdGEpIHtcbiAgICAgICAgICAgICAgICBlcnJvckRhdGFbZmllbGRdID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFVwZGF0ZSBJQVRJIGFuZCBzeXN0ZW0gRXJyb3JcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUVycm9ycyhlcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnZhbHVlcyhlcnJvckRhdGEpLmV2ZXJ5KGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT09ICcnOyB9KSB8fFxuICAgICAgICAgICAgICAgIHN0ZXAudmFsdWUgPT09IDQpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGlhdGlFcnJvciwgdHlwZW9mIGVycm9yUmVzcG9uc2UgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8geyBlcnJvcjogZXJyb3JSZXNwb25zZSB9XG4gICAgICAgICAgICAgICAgICAgIDogZXJyb3JSZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFuSWF0aUVycm9ycygpO1xuICAgICAgICAgICAgICAgIH0sIDM1MDAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBjbGVhbklhdGlFcnJvcnMoKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBlcnIgaW4gaWF0aUVycm9yKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGlhdGlFcnJvcltlcnJdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBWZXJpZmllcyBwdWJsaXNoZXJcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHZlcmlmeVB1Ymxpc2hlcigpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgZm9ybURhdGEuaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9hZ2VuY3ksIFwiLVwiKS5jb25jYXQoZm9ybURhdGEucmVnaXN0cmF0aW9uX251bWJlcik7XG4gICAgICAgICAgICBmb3JtRGF0YS5zdGVwID0gJzEnO1xuICAgICAgICAgICAgdmFyIGZvcm0gPSB7XG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmQsIChfYSA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sIChfYiA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJycpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvaWF0aS9yZWdpc3Rlci9wdWJsaXNoZXInLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZm9ybURhdGEpLCBmb3JtKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXF1ZXN0LnJlc3BvbnNlVVJMLmluY2x1ZGVzKCdhY3Rpdml0aWVzJykpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBwdWJsaXNoZXJFeGlzdHMudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHZhciBlcnJvcnMgPSAhcmVzcG9uc2Uuc3VjY2VzcyB8fCAnZXJyb3JzJyBpbiByZXNwb25zZSA/IHJlc3BvbnNlLmVycm9ycyA6IFtdO1xuICAgICAgICAgICAgICAgIHJlZ2lzdGVyRm9ybVsnMSddLmlzX2NvbXBsZXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKCdwdWJsaXNoZXJfZXJyb3InIGluIHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlckV4aXN0cy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBjbGVhblZhbGlkYXRpb25FcnJvcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWycxJ10uaXNfY29tcGxldGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGVwKDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlVmFsaWRhdGlvbkVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVFcnJvcnMoZXJyb3JzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlRXJyb3JzKGVycik7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogU3VibWl0cyByZWdpc3RyYXRpb24gRm9ybVxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gdmVyaWZ5Q29udGFjdEluZm9ybWF0aW9uKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBmb3JtRGF0YS5zdGVwID0gJzInO1xuICAgICAgICAgICAgdmFyIGZvcm0gPSB7XG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmQsIChfYSA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sIChfYiA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJycpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvaWF0aS9yZWdpc3Rlci9jb250YWN0JywgX19hc3NpZ24oX19hc3NpZ24oe30sIGZvcm1EYXRhKSwgZm9ybSkpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGlmIChyZXMucmVxdWVzdC5yZXNwb25zZVVSTC5pbmNsdWRlcygnYWN0aXZpdGllcycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9ICFyZXNwb25zZS5zdWNjZXNzIHx8ICdlcnJvcnMnIGluIHJlc3BvbnNlID8gcmVzcG9uc2UuZXJyb3JzIDogW107XG4gICAgICAgICAgICAgICAgdXBkYXRlVmFsaWRhdGlvbkVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJlZ2lzdGVyRm9ybVsnMiddLmlzX2NvbXBsZXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYW5WYWxpZGF0aW9uRXJyb3JzKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyRm9ybVsnMiddLmlzX2NvbXBsZXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RlcCgyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHVwZGF0ZUVycm9ycyhlcnJvcik7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogU3VibWl0cyByZWdpc3RyYXRpb24gRm9ybVxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gdmVyaWZ5QWRkaXRpb25hbEluZm9ybWF0aW9uKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBmb3JtRGF0YS5zdGVwID0gJzMnO1xuICAgICAgICAgICAgdmFyIGZvcm0gPSB7XG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmQsIChfYSA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sIChfYiA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJycpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvaWF0aS9yZWdpc3Rlci9hZGRpdGlvbmFsJywgX19hc3NpZ24oX19hc3NpZ24oe30sIGZvcm1EYXRhKSwgZm9ybSkpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGlmIChyZXMucmVxdWVzdC5yZXNwb25zZVVSTC5pbmNsdWRlcygnYWN0aXZpdGllcycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9ICFyZXNwb25zZS5zdWNjZXNzIHx8ICdlcnJvcnMnIGluIHJlc3BvbnNlID8gcmVzcG9uc2UuZXJyb3JzIDogW107XG4gICAgICAgICAgICAgICAgdXBkYXRlVmFsaWRhdGlvbkVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJlZ2lzdGVyRm9ybVsnMyddLmlzX2NvbXBsZXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYW5WYWxpZGF0aW9uRXJyb3JzKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyRm9ybVsnMyddLmlzX2NvbXBsZXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RlcCgzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHVwZGF0ZUVycm9ycyhlcnJvcik7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogU3VibWl0cyByZWdpc3RyYXRpb24gRm9ybVxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gc3VibWl0Rm9ybSgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgZm9ybURhdGEuc3RlcCA9ICc0JztcbiAgICAgICAgICAgIHZhciBmb3JtID0ge1xuICAgICAgICAgICAgICAgIHBhc3N3b3JkOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkLCAoX2EgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnKSxcbiAgICAgICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLCAoX2IgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL2lhdGkvcmVnaXN0ZXInLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZm9ybURhdGEpLCBmb3JtKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXF1ZXN0LnJlc3BvbnNlVVJMLmluY2x1ZGVzKCdhY3Rpdml0aWVzJykpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gIXJlc3BvbnNlLnN1Y2Nlc3MgfHwgJ2Vycm9ycycgaW4gcmVzcG9uc2UgPyByZXNwb25zZS5lcnJvcnMgOiBbXTtcbiAgICAgICAgICAgICAgICB1cGRhdGVWYWxpZGF0aW9uRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgY2xlYW5JYXRpRXJyb3JzKCk7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihpYXRpRXJyb3IsIGVycm9ycyk7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWyc0J10uaXNfY29tcGxldGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBjbGVhblZhbGlkYXRpb25FcnJvcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWyc0J10uaXNfY29tcGxldGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGVwKDQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHVwZGF0ZUVycm9ycyhlcnJvcik7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBnZXRDdXJyZW50U3RlcCgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGVwLnZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlU3RlcChjdXJyZW50X3N0ZXApIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50X3N0ZXAgPT09IHN0ZXAudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBzdGVwLnZhbHVlICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIGNhbGxzIHN1Ym1pdCBmdW5jdGlvbiBiYXNlZCBvbiBjdXJyZW50IHN0ZXAgdmFsdWVcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGdvVG9OZXh0Rm9ybSgpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoc3RlcC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgdmVyaWZ5UHVibGlzaGVyKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgdmVyaWZ5Q29udGFjdEluZm9ybWF0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgdmVyaWZ5QWRkaXRpb25hbEluZm9ybWF0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgc3VibWl0Rm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBnb1RvUHJldmlvdXNGb3JtKCkge1xuICAgICAgICAgICAgY2xlYW5JYXRpRXJyb3JzKCk7XG4gICAgICAgICAgICBzdGVwLnZhbHVlIC09IDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlZ2lzdGVyRm9ybTogcmVnaXN0ZXJGb3JtLFxuICAgICAgICAgICAgZm9ybURhdGE6IGZvcm1EYXRhLFxuICAgICAgICAgICAgZXJyb3JEYXRhOiBlcnJvckRhdGEsXG4gICAgICAgICAgICBwdWJsaXNoZXJFeGlzdHM6IHB1Ymxpc2hlckV4aXN0cyxcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZTogaXNMb2FkZXJWaXNpYmxlLFxuICAgICAgICAgICAgZ29Ub05leHRGb3JtOiBnb1RvTmV4dEZvcm0sXG4gICAgICAgICAgICBnb1RvUHJldmlvdXNGb3JtOiBnb1RvUHJldmlvdXNGb3JtLFxuICAgICAgICAgICAgZ2V0Q3VycmVudFN0ZXA6IGdldEN1cnJlbnRTdGVwLFxuICAgICAgICAgICAgY2hlY2tTdGVwOiBjaGVja1N0ZXAsXG4gICAgICAgICAgICBpYXRpRXJyb3I6IGlhdGlFcnJvcixcbiAgICAgICAgICAgIGlzVGV4dEZpZWxkOiBpc1RleHRGaWVsZCxcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgICAgIHN0ZXA6IHN0ZXAsXG4gICAgICAgICAgICByZXNpemU6IHJlc2l6ZSxcbiAgICAgICAgICAgIHRleHRhcmVhOiB0ZXh0YXJlYSxcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogdHJhbnNsYXRlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0lhdGlTdGFuZGFyZCcsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICBmdW5jdGlvbiBkb3dubG9hZE1hbnVhbCh0eXBlKSB7XG4gICAgICAgICAgICB2YXIgZmlsZU5hbWUgPSB7XG4gICAgICAgICAgICAgICAgYWN0aXZpdHk6ICdJQVRJX1B1Ymxpc2hlcl9BY3Rpdml0eV9TdGFuZGFyZC5wZGYnLFxuICAgICAgICAgICAgICAgIG9yZ2FuaXphdGlvbjogJ0lBVElfUHVibGlzaGVyX09yZ2FuaXNhdGlvbl9TdGFuZGFyZC5wZGYnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHZhciB1cmwgPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgXCIvRGF0YS9NYW51YWxzL1wiLmNvbmNhdChmaWxlTmFtZVt0eXBlXSk7XG4gICAgICAgICAgICAoMCwgYXhpb3NfMS5kZWZhdWx0KSh7XG4gICAgICAgICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicsXG4gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlLmRhdGFdLCB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlTmFtZVt0eXBlXTtcbiAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGU6IHRyYW5zbGF0ZSwgZG93bmxvYWRNYW51YWw6IGRvd25sb2FkTWFudWFsIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUHVibGlzaGluZ0NoZWNrbGlzdCcsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgZnVuY3Rpb24gdHJpZ2dlck1vZGVsKCkge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ29wZW5BZGRNb2RlbCcsICd0cnVlJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IG5ldyB0cmFuc2xhdGlvbkhlbHBlcl8xLlRyYW5zbGF0ZSgpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmlnZ2VyTW9kZWw6IHRyaWdnZXJNb2RlbCwgdHJhbnNsYXRlOiB0cmFuc2xhdGUgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgRW1haWxWZXJpZmljYXRpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vRW1haWxWZXJpZmljYXRpb24udnVlXCIpKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vLi4vLi4vY29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbnZhciBtdWx0aXNlbGVjdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJAdnVlZm9ybS9tdWx0aXNlbGVjdFwiKSk7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIGVuY3J5cHRpb25fMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9lbmNyeXB0aW9uXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBFbWFpbFZlcmlmaWNhdGlvbjogRW1haWxWZXJpZmljYXRpb25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgSG92ZXJUZXh0OiBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgTXVsdGlzZWxlY3Q6IG11bHRpc2VsZWN0XzEuZGVmYXVsdCxcbiAgICAgICAgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvdW50cnk6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYWdlbmN5OiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgdmFyIHN0ZXAgPSAoMCwgdnVlXzEucmVmKSgxKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hlckV4aXN0cyA9ICgwLCB2dWVfMS5yZWYpKHRydWUpO1xuICAgICAgICB2YXIgaXNMb2FkZXJWaXNpYmxlID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgYWdlbmN5ID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmFnZW5jeTtcbiAgICAgICAgdmFyIGVycm9yRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgcHVibGlzaGVyX25hbWU6ICcnLFxuICAgICAgICAgICAgcHVibGlzaGVyX2lkOiAnJyxcbiAgICAgICAgICAgIGNvdW50cnk6ICcnLFxuICAgICAgICAgICAgcmVnaXN0cmF0aW9uX2FnZW5jeTogJycsXG4gICAgICAgICAgICByZWdpc3RyYXRpb25fbnVtYmVyOiAnJyxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6ICcnLFxuICAgICAgICAgICAgdXNlcm5hbWU6ICcnLFxuICAgICAgICAgICAgZnVsbF9uYW1lOiAnJyxcbiAgICAgICAgICAgIGVtYWlsOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZm9ybURhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHB1Ymxpc2hlcl9uYW1lOiAnJyxcbiAgICAgICAgICAgIHB1Ymxpc2hlcl9pZDogJycsXG4gICAgICAgICAgICBjb3VudHJ5OiAnJyxcbiAgICAgICAgICAgIHJlZ2lzdHJhdGlvbl9hZ2VuY3k6ICcnLFxuICAgICAgICAgICAgcmVnaXN0cmF0aW9uX251bWJlcjogJycsXG4gICAgICAgICAgICBpZGVudGlmaWVyOiAnJyxcbiAgICAgICAgICAgIHVzZXJuYW1lOiAnJyxcbiAgICAgICAgICAgIGZ1bGxfbmFtZTogJycsXG4gICAgICAgICAgICBlbWFpbDogJycsXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBmb3JtRGF0YS5jb3VudHJ5OyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmb3JtRGF0YS5yZWdpc3RyYXRpb25fYWdlbmN5ID0gJyc7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtmb3JtRGF0YS5yZWdpc3RyYXRpb25fYWdlbmN5LCBmb3JtRGF0YS5yZWdpc3RyYXRpb25fbnVtYmVyXTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZm9ybURhdGEuaWRlbnRpZmllciA9IGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9hZ2VuY3lcbiAgICAgICAgICAgICAgICA/IGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9hZ2VuY3kgKyAnLScgKyBmb3JtRGF0YS5yZWdpc3RyYXRpb25fbnVtYmVyXG4gICAgICAgICAgICAgICAgOiBmb3JtRGF0YS5yZWdpc3RyYXRpb25fbnVtYmVyO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgIHZhciByZWdpc3RyYXRpb25fYWdlbmN5ID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgYWdlbmNpZXMgPSBhZ2VuY3kudmFsdWU7XG4gICAgICAgICAgICBpZiAoZm9ybURhdGEuY291bnRyeSkge1xuICAgICAgICAgICAgICAgIHZhciB1bmNhdGVnb3JpemVkXzEgPSBbJ1hJJywgJ1hSJ107XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhhZ2VuY2llcykuZmlsdGVyKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIga2V5ID0gX2FbMF07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXkuc3RhcnRzV2l0aChmb3JtRGF0YS5jb3VudHJ5KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5jYXRlZ29yaXplZF8xLnNvbWUoZnVuY3Rpb24gKGspIHsgcmV0dXJuIGtleS5zdGFydHNXaXRoKGspOyB9KTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWdlbmNpZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXNUZXh0RmllbGQgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZmllbGRUeXBlLCBmaWVsZE5hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKChmaWVsZFR5cGUgPT09ICd0ZXh0JyB8fFxuICAgICAgICAgICAgICAgICAgICBmaWVsZFR5cGUgPT09ICdwYXNzd29yZCcgfHxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRUeXBlID09PSAnZW1haWwnKSAmJlxuICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWUgIT0gJ2lkZW50aWZpZXInKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2hlY2tTdGVwID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGZvcm1TdGVwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGZvcm1TdGVwLnRvU3RyaW5nKCkpID09PSBzdGVwLnZhbHVlO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciByZWdpc3RlckZvcm0gPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIDE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncHVibGlzaGVyX2luZm9ybWF0aW9uLmxhYmVsJyksXG4gICAgICAgICAgICAgICAgaXNfY29tcGxldGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwdWJsaXNoZXJfaW5mb3JtYXRpb24uZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwdWJsaXNoZXJfaW5mb3JtYXRpb24uaG92ZXJfdGV4dCcpLFxuICAgICAgICAgICAgICAgIGZpZWxkczoge1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoZXJfbmFtZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3B1Ymxpc2hlcl9uYW1lLmxhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncHVibGlzaGVyX25hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3B1Ymxpc2hlcl9uYW1lLnBsYWNlaG9sZGVyJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3B1Ymxpc2hlci1uYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncHVibGlzaGVyX25hbWUuaG92ZXJfdGV4dCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdjb2wtc3Bhbi0yIG1iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoZXJfaWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwdWJsaXNoZXJfaWQubGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwdWJsaXNoZXJfaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3B1Ymxpc2hlcl9pZC5wbGFjZWhvbGRlcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdwdWJsaXNoZXItaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwdWJsaXNoZXJfaWQuaG92ZXJfdGV4dCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY291bnRyeToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2NvdW50cnkubGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjb3VudHJ5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdjb3VudHJ5LnBsYWNlaG9sZGVyJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2NvdW50cnlfc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnY291bnRyeS5ob3Zlcl90ZXh0JyksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTIgcmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uX3JlZ2lzdHJhdGlvbl9hZ2VuY3k6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdvcmdfcmVnaXN0cmF0aW9uX2FnZW5jeS5sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3JlZ2lzdHJhdGlvbl9hZ2VuY3knLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ29yZ19yZWdpc3RyYXRpb25fYWdlbmN5LnBsYWNlaG9sZGVyJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3JlZ2lzdHJhdGlvbi1hZ2VuY3knLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdvcmdfcmVnaXN0cmF0aW9uX2FnZW5jeS5ob3Zlcl90ZXh0JyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHJlZ2lzdHJhdGlvbl9hZ2VuY3ksXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMiByZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25fcmVnaXN0cmF0aW9uX25vOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnb3JnX3JlZ2lzdHJhdGlvbl9uby5sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3JlZ2lzdHJhdGlvbl9udW1iZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ29yZ19yZWdpc3RyYXRpb25fbm8ucGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncmVnaXN0cmF0aW9uLW51bWJlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ29yZ19yZWdpc3RyYXRpb25fbm8uaG92ZXJfdGV4dCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiBcIlwiLmNvbmNhdCh0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdmb3JfZWcnKSwgXCIgMTIzNDU2XCIpLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBpYXRpX29yZ2FuaXphdGlvbmFsX2lkZW50aWZpZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdpYXRpX29yZ19pZGVudGlmaWVyLmxhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnaWRlbnRpZmllcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2lkZW50aWZpZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdpYXRpX29yZ19pZGVudGlmaWVyLmhvdmVyX3RleHQnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi02JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnaWF0aV9vcmdfaWRlbnRpZmllci5oZWxwX3RleHQnKSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIDI6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnYWRtaW5pc3RyYXRvcl9pbmZvcm1hdGlvbi5sYWJlbCcpLFxuICAgICAgICAgICAgICAgIGlzX2NvbXBsZXRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnYWRtaW5pc3RyYXRvcl9pbmZvcm1hdGlvbi5yZWdpc3Rlcl9kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2FkbWluaXN0cmF0b3JfaW5mb3JtYXRpb24uaG92ZXJfdGV4dCcpLFxuICAgICAgICAgICAgICAgIGZpZWxkczoge1xuICAgICAgICAgICAgICAgICAgICB1c2VybmFtZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3VzZXJuYW1lLmxhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndXNlcm5hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3VzZXJuYW1lLnBsYWNlaG9sZGVyJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3VzZXJuYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgndXNlcm5hbWUuaG92ZXJfdGV4dCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZnVsbF9uYW1lOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnZnVsbG5hbWUubGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdmdWxsX25hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2Z1bGxuYW1lLnBsYWNlaG9sZGVyJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2Z1bGwtbmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdjb2wtc3RhcnQtMSBtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBlbWFpbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2VtYWlsX2FkZHJlc3MubGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnZW1haWxfYWRkcmVzcy5wbGFjZWhvbGRlcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwYXNzd29yZC5sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwYXNzd29yZC5wbGFjZWhvbGRlcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdwYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlybV9wYXNzd29yZDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3Bhc3N3b3JkLmNvbmZpcm0nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwYXNzd29yZF9jb25maXJtYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ3Bhc3N3b3JkLnBsYWNlaG9sZGVyJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3Bhc3N3b3JkLWNvbmZpcm1hdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi02JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIDM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgnZW1haWxfdmVyaWZpY2F0aW9uLnRpdGxlJyksXG4gICAgICAgICAgICAgICAgaXNfY29tcGxldGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdlbWFpbF92ZXJpZmljYXRpb24uZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdXBkYXRlRm9ybUVycm9ycyA9IGZ1bmN0aW9uIChlcnJvcnMpIHtcbiAgICAgICAgICAgIGlmIChlcnJvcnMgPT09IHZvaWQgMCkgeyBlcnJvcnMgPSBbXTsgfVxuICAgICAgICAgICAgdmFyIGVycm9yTGVuZ3RoID0gT2JqZWN0LmtleXMoZXJyb3JzKS5sZW5ndGg7XG4gICAgICAgICAgICBpZiAoZXJyb3JMZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBlcnJLZXkgaW4gZXJyb3JEYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YVtlcnJLZXldID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVycm9yTGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGVycktleSBpbiBlcnJvckRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhW2VycktleV0gPSBlcnJLZXkgaW4gZXJyb3JzID8gZXJyb3JzW2VycktleV1bMF0gOiAnJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGZ1bmN0aW9uIHZlcmlmeVB1Ymxpc2hlcigpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgZm9ybURhdGEuaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9hZ2VuY3ksIFwiLVwiKS5jb25jYXQoZm9ybURhdGEucmVnaXN0cmF0aW9uX251bWJlcik7XG4gICAgICAgICAgICB2YXIgZm9ybSA9IHtcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZCwgKF9hID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbiwgKF9iID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJyksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy92ZXJpZnlQdWJsaXNoZXInLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZm9ybURhdGEpLCBmb3JtKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXF1ZXN0LnJlc3BvbnNlVVJMLmluY2x1ZGVzKCdhY3Rpdml0aWVzJykpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBwdWJsaXNoZXJFeGlzdHMudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHZhciBlcnJvcnMgPSAhcmVzcG9uc2Uuc3VjY2VzcyB8fCAnZXJyb3JzJyBpbiByZXNwb25zZSA/IHJlc3BvbnNlLmVycm9ycyA6IFtdO1xuICAgICAgICAgICAgICAgIHVwZGF0ZUZvcm1FcnJvcnMoZXJyb3JzKTtcbiAgICAgICAgICAgICAgICBpZiAoJ3B1Ymxpc2hlcl9lcnJvcicgaW4gcmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVyRXhpc3RzLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyRm9ybVsnMSddLmlzX2NvbXBsZXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC52YWx1ZSArPSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHN1Ym1pdEZvcm0oKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBmb3JtID0ge1xuICAgICAgICAgICAgICAgIHBhc3N3b3JkOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkLCAoX2EgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnKSxcbiAgICAgICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLCAoX2IgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL3JlZ2lzdGVyJywgX19hc3NpZ24oX19hc3NpZ24oe30sIGZvcm1EYXRhKSwgZm9ybSkpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGlmIChyZXMucmVxdWVzdC5yZXNwb25zZVVSTC5pbmNsdWRlcygnYWN0aXZpdGllcycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9ICFyZXNwb25zZS5zdWNjZXNzIHx8ICdlcnJvcnMnIGluIHJlc3BvbnNlID8gcmVzcG9uc2UuZXJyb3JzIDogW107XG4gICAgICAgICAgICAgICAgdXBkYXRlRm9ybUVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24gPSBlcnJvcnMucGFzc3dvcmRfY29uZmlybWF0aW9uXG4gICAgICAgICAgICAgICAgICAgID8gZXJyb3JzLnBhc3N3b3JkX2NvbmZpcm1hdGlvblswXVxuICAgICAgICAgICAgICAgICAgICA6IGVycm9ycy5wYXNzd29yZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBlcnJvcnMucGFzc3dvcmRbMF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogJyc7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWycyJ10uaXNfY29tcGxldGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnZhbHVlICs9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9IGVycm9yLnJlc3BvbnNlLmRhdGEuZXJyb3JzO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHVwZGF0ZUZvcm1FcnJvcnMoZXJyb3JzKTtcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uID0gZXJyb3JzLnBhc3N3b3JkX2NvbmZpcm1hdGlvblxuICAgICAgICAgICAgICAgICAgICA/IGVycm9ycy5wYXNzd29yZF9jb25maXJtYXRpb25bMF1cbiAgICAgICAgICAgICAgICAgICAgOiBlcnJvcnMucGFzc3dvcmRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZXJyb3JzLnBhc3N3b3JkWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICcnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZ2V0Q3VycmVudFN0ZXAoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RlcC52YWx1ZS50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGdvVG9OZXh0Rm9ybSgpIHtcbiAgICAgICAgICAgIGlmIChzdGVwLnZhbHVlID09PSAxKVxuICAgICAgICAgICAgICAgIHZlcmlmeVB1Ymxpc2hlcigpO1xuICAgICAgICAgICAgaWYgKHN0ZXAudmFsdWUgPT09IDIpXG4gICAgICAgICAgICAgICAgc3VibWl0Rm9ybSgpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGdvVG9QcmV2aW91c0Zvcm0oKSB7XG4gICAgICAgICAgICBzdGVwLnZhbHVlIC09IDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlZ2lzdGVyRm9ybTogcmVnaXN0ZXJGb3JtLFxuICAgICAgICAgICAgZm9ybURhdGE6IGZvcm1EYXRhLFxuICAgICAgICAgICAgZXJyb3JEYXRhOiBlcnJvckRhdGEsXG4gICAgICAgICAgICBwdWJsaXNoZXJFeGlzdHM6IHB1Ymxpc2hlckV4aXN0cyxcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZTogaXNMb2FkZXJWaXNpYmxlLFxuICAgICAgICAgICAgZ29Ub05leHRGb3JtOiBnb1RvTmV4dEZvcm0sXG4gICAgICAgICAgICBnb1RvUHJldmlvdXNGb3JtOiBnb1RvUHJldmlvdXNGb3JtLFxuICAgICAgICAgICAgZ2V0Q3VycmVudFN0ZXA6IGdldEN1cnJlbnRTdGVwLFxuICAgICAgICAgICAgY2hlY2tTdGVwOiBjaGVja1N0ZXAsXG4gICAgICAgICAgICBpc1RleHRGaWVsZDogaXNUZXh0RmllbGQsXG4gICAgICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgICAgICB0cmFuc2xhdGU6IHRyYW5zbGF0ZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1N1cHBvcnRQYWdlJyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0FkbWluRm9vdGVyJyxcbiAgICBwcm9wczoge1xuICAgICAgICBzdXBlckFkbWluOiB7IHR5cGU6IEJvb2xlYW4sIHJlcXVpcmVkOiBmYWxzZSwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgZnVuY3Rpb24gZG93bmxvYWRNYW51YWwodHlwZSkge1xuICAgICAgICAgICAgdmFyIGZpbGVOYW1lID0ge1xuICAgICAgICAgICAgICAgIHVzZXI6ICdJQVRJX1B1Ymxpc2hlci1Vc2VyX01hbnVhbF92MS4wLnBkZicsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIHVybCA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyBcIi9EYXRhL01hbnVhbHMvXCIuY29uY2F0KGZpbGVOYW1lW3R5cGVdKTtcbiAgICAgICAgICAgICgwLCBheGlvc18xLmRlZmF1bHQpKHtcbiAgICAgICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyxcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2UuZGF0YV0sIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lW3R5cGVdO1xuICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCBkb3dubG9hZE1hbnVhbDogZG93bmxvYWRNYW51YWwgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRyYW5zbGF0aW9uSGVscGVyXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS90cmFuc2xhdGlvbkhlbHBlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBwcm9wczoge1xuICAgICAgICBtZXNzYWdlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogdHJhbnNsYXRlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIGVuY3J5cHRpb25fMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9lbmNyeXB0aW9uXCIpKTtcbnZhciB0cmFuc2xhdGlvbkhlbHBlcl8xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGludGVudDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHZhciBmb3JtRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdXNlcm5hbWU6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGVycm9yRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdXNlcm5hbWU6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlzTG9hZGVyVmlzaWJsZSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgZnVuY3Rpb24gbG9naW4oKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZvcm07XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYikge1xuICAgICAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBmb3JtID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWU6IGZvcm1EYXRhLnVzZXJuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ6ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmQsIChfYSA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgIC5wb3N0KCcvbG9naW4nLCBmb3JtKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEudXNlcm5hbWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wYXNzd29yZCA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoJ2Vycm9ycycgaW4gcmVzcG9uc2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9IGVycm9yLnJlc3BvbnNlLmRhdGEuZXJyb3JzO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLnVzZXJuYW1lID0gZXJyb3JzLnVzZXJuYW1lID8gZXJyb3JzLnVzZXJuYW1lWzBdIDogJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEucGFzc3dvcmQgPSBlcnJvcnMucGFzc3dvcmQgPyBlcnJvcnMucGFzc3dvcmRbMF0gOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZvcm1EYXRhOiBmb3JtRGF0YSxcbiAgICAgICAgICAgIGVycm9yRGF0YTogZXJyb3JEYXRhLFxuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlOiBpc0xvYWRlclZpc2libGUsXG4gICAgICAgICAgICBsb2dpbjogbG9naW4sXG4gICAgICAgICAgICB0cmFuc2xhdGU6IHRyYW5zbGF0ZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdXZWJGb290ZXInLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBuZXcgdHJhbnNsYXRpb25IZWxwZXJfMS5UcmFuc2xhdGUoKTtcbiAgICAgICAgZnVuY3Rpb24gZG93bmxvYWRNYW51YWwodHlwZSkge1xuICAgICAgICAgICAgdmFyIGZpbGVOYW1lID0ge1xuICAgICAgICAgICAgICAgIHVzZXI6ICdJQVRJX1B1Ymxpc2hlci1Vc2VyX01hbnVhbF92MS4wLnBkZicsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIHVybCA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyBcIi9EYXRhL01hbnVhbHMvXCIuY29uY2F0KGZpbGVOYW1lW3R5cGVdKTtcbiAgICAgICAgICAgICgwLCBheGlvc18xLmRlZmF1bHQpKHtcbiAgICAgICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyxcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2UuZGF0YV0sIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lW3R5cGVdO1xuICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlLCBkb3dubG9hZE1hbnVhbDogZG93bmxvYWRNYW51YWwgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIE5hdkRyb3Bkb3duX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi8uLi9jb21wb25lbnRzL05hdkRyb3Bkb3duLnZ1ZVwiKSk7XG52YXIgdHJhbnNsYXRpb25IZWxwZXJfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgTmF2RHJvcGRvd246IE5hdkRyb3Bkb3duX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICB0aXRsZTogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGF1dGg6IHsgdHlwZTogU3RyaW5nLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBzdXBlckFkbWluOiB7IHR5cGU6IEJvb2xlYW4sIHJlcXVpcmVkOiBmYWxzZSwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnbm8tbmF2Jyk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnbm8tbmF2Jyk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gbmV3IHRyYW5zbGF0aW9uSGVscGVyXzEuVHJhbnNsYXRlKCk7XG4gICAgICAgIHJldHVybiB7IHRyYW5zbGF0ZTogdHJhbnNsYXRlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKipcbiAqIEZpcnN0IHdlIHdpbGwgbG9hZCBhbGwgb2YgdGhpcyBwcm9qZWN0J3MgSmF2YVNjcmlwdCBkZXBlbmRlbmNpZXMgd2hpY2hcbiAqIGluY2x1ZGVzIFZ1ZSBhbmQgb3RoZXIgbGlicmFyaWVzLiBJdCBpcyBhIGdyZWF0IHN0YXJ0aW5nIHBvaW50IHdoZW5cbiAqIGJ1aWxkaW5nIHJvYnVzdCwgcG93ZXJmdWwgd2ViIGFwcGxpY2F0aW9ucyB1c2luZyBWdWUgYW5kIExhcmF2ZWwuXG4gKi9cbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlM19zbW9vdGhfc2Nyb2xsXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcInZ1ZTMtc21vb3RoLXNjcm9sbFwiKSk7XG52YXIgc3ZnX3Z1ZTNfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwic3ZnLXZ1ZTNcIikpO1xudmFyIFdlYkhlYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy93ZWIvcGFydGlhbHMvV2ViSGVhZGVyLnZ1ZVwiKSk7XG52YXIgV2ViRm9vdGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJGb290ZXIudnVlXCIpKTtcbnZhciBBZG1pbkZvb3Rlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy93ZWIvcGFydGlhbHMvQWRtaW5Gb290ZXIudnVlXCIpKTtcbnZhciBXZWxjb21lUGFnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy93ZWIvV2VsY29tZVBhZ2UudnVlXCIpKTtcbnZhciBSZWdpc3RlclBhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvd2ViL1JlZ2lzdGVyUGFnZS52dWVcIikpO1xudmFyIEFib3V0UGFnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy93ZWIvQWJvdXRQYWdlLnZ1ZVwiKSk7XG52YXIgU3VwcG9ydFBhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvd2ViL1N1cHBvcnRQYWdlLnZ1ZVwiKSk7XG52YXIgSWF0aVN0YW5kYXJkX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3dlYi9JYXRpU3RhbmRhcmQudnVlXCIpKTtcbnZhciBQdWJsaXNoaW5nQ2hlY2tsaXN0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3dlYi9QdWJsaXNoaW5nQ2hlY2tsaXN0LnZ1ZVwiKSk7XG52YXIgSWF0aVJlZ2lzdGVyUGFnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy93ZWIvSWF0aVJlZ2lzdGVyUGFnZS52dWVcIikpO1xuLyoqXG4gKiBWdWUgY29tcG9uZW50cyBmb3IgQWN0aXZpdGllcyBMaXN0aW5nXG4gKi9cbnZhciBSZXN1bHREZXRhaWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHREZXRhaWwudnVlXCIpKTtcbnZhciBSZXN1bHRMaXN0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0TGlzdC52dWVcIikpO1xudmFyIEluZGljYXRvckRldGFpbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL0luZGljYXRvckRldGFpbC52dWVcIikpO1xudmFyIEluZGljYXRvckxpc3RfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9JbmRpY2F0b3JMaXN0LnZ1ZVwiKSk7XG52YXIgUGVyaW9kc0RldGFpbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL1BlcmlvZHNEZXRhaWwudnVlXCIpKTtcbnZhciBQZXJpb2RzTGlzdF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL1BlcmlvZHNMaXN0LnZ1ZVwiKSk7XG52YXIgVHJhbnNhY3Rpb25MaXN0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkxpc3QudnVlXCIpKTtcbnZhciBUcmFuc2FjdGlvbkRldGFpbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25EZXRhaWwudnVlXCIpKTtcbnZhciBEZXNjcmlwdGlvbkZvcm1fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vY29tcG9uZW50cy9EZXNjcmlwdGlvbkZvcm0udnVlXCIpKTtcbnZhciBFbGVtZW50c05vdGVfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRWxlbWVudHNOb3RlLnZ1ZVwiKSk7XG52YXIgQWN0aXZpdHlJbmRleF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eUluZGV4LnZ1ZVwiKSk7XG52YXIgQWRtaW5IZWFkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vY29tcG9uZW50cy9BZG1pbkhlYWRlci52dWVcIikpO1xudmFyIEFjdGl2aXR5RGV0YWlsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5RGV0YWlsLnZ1ZVwiKSk7XG52YXIgU2lkZWJhckhlbHBCbG9ja192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9TaWRlYmFySGVscEJsb2NrLnZ1ZVwiKSk7XG52YXIgQWN0aXZpdHlVcGxvYWRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvaW1wb3J0L0FjdGl2aXR5VXBsb2FkLnZ1ZVwiKSk7XG52YXIgQWN0aXZpdHlYbHNVcGxvYWRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvaW1wb3J0L0FjdGl2aXR5WGxzVXBsb2FkLnZ1ZVwiKSk7XG52YXIgRGFzaGJvYXJkUGFnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkUGFnZS52dWVcIikpO1xudmFyIEltcG9ydExpc3RfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvaW1wb3J0L0ltcG9ydExpc3QudnVlXCIpKTtcbnZhciBYbHNMaXN0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2ltcG9ydC9YbHNMaXN0LnZ1ZVwiKSk7XG4vKipcbiAqIFNldHRpbmcgcGFnZVxuICovXG52YXIgU2V0dGluZ1BhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvc2V0dGluZy9TZXR0aW5nUGFnZS52dWVcIikpO1xuLy9BY3Rpdml0eSBEZWZhdWx0IFZhbHVlc1xudmFyIEFjdGl2aXR5RGVmYXVsdFZhbHVlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5RGVmYXVsdFZhbHVlLnZ1ZVwiKSk7XG4vKipcbiAqIHZ1ZSBjb21wb25lbnQgZm9yIHBhc3N3b3JkIHJlc2V0XG4gKi9cbnZhciBSZXNldFBhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvcmVzZXQvUmVzZXRQYWdlLnZ1ZVwiKSk7XG52YXIgUGFzc3dvcmRSZWNvdmVyeV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9yZXNldC9QYXNzd29yZFJlY292ZXJ5LnZ1ZVwiKSk7XG52YXIgUmVzZXRQYXNzd29yZF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9yZXNldC9SZXNldFBhc3N3b3JkLnZ1ZVwiKSk7XG4vKipcbiAqIE9yZ2FuaXNhdGlvbiBkYXRhXG4gKi9cbnZhciBPcmdhbmlzYXRpb25EYXRhX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25EYXRhLnZ1ZVwiKSk7XG4vKipcbiAqIE9yZ2FuaXNhdGlvbiBMaXN0IC8gUHJveHlcbiAqL1xudmFyIE9yZ2FuaXNhdGlvbkxpc3RfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvc3VwZXJhZG1pbi9PcmdhbmlzYXRpb25MaXN0LnZ1ZVwiKSk7XG52YXIgQWRtaW5CYXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL0FkbWluQmFyLnZ1ZVwiKSk7XG4vKipcbiAqIFVzZXIgTW9kdWxlIGNvbXBvbmVudHNcbiAqL1xudmFyIFVzZXJQcm9maWxlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3VzZXIvVXNlclByb2ZpbGUudnVlXCIpKTtcbnZhciBVc2VyTGlzdGluZ192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy91c2VyL1VzZXJMaXN0aW5nLnZ1ZVwiKSk7XG4vKipcbiAqIEF1ZGl0IGNvbXBvbmVudFxuICovXG52YXIgQXVkaXRMaXN0aW5nX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2F1ZGl0L0F1ZGl0TGlzdGluZy52dWVcIikpO1xuLyoqXG4gKiBBZGRpdGlvbmFsIENvbXBvbmVudHNcbiAqL1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9jb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9jb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWVcIikpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9jb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIFN5c3RlbVZlcnNpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvc3VwZXJhZG1pbi9TeXN0ZW1WZXJzaW9uLnZ1ZVwiKSk7XG52YXIgdnVlM19hcGV4Y2hhcnRzXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcInZ1ZTMtYXBleGNoYXJ0c1wiKSk7XG52YXIgYXBwID0gKDAsIHZ1ZV8xLmNyZWF0ZUFwcCkoe30pO1xuYXBwLnVzZSh2dWUzX2FwZXhjaGFydHNfMS5kZWZhdWx0KTtcbi8qKlxuICogR2xvYmFsIENvbXBvbmVudHNcbiAqL1xuYXBwXG4gICAgLmNvbXBvbmVudCgnV2ViSGVhZGVyJywgV2ViSGVhZGVyX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnV2ViRm9vdGVyJywgV2ViRm9vdGVyX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnQWRtaW5Gb290ZXInLCBBZG1pbkZvb3Rlcl92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1dlbGNvbWVTaWduaW4nLCBXZWxjb21lUGFnZV92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1JlZ2lzdGVyRm9ybScsIFJlZ2lzdGVyUGFnZV92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ0lhdGlSZWdpc3RlckZvcm0nLCBJYXRpUmVnaXN0ZXJQYWdlX3Z1ZV8xLmRlZmF1bHQpO1xuLyoqXG4gKiByZWdpc3RlcmluZyB3ZWIgcG9ydGFsIHBhZ2VzXG4gKi9cbmFwcFxuICAgIC5jb21wb25lbnQoJ0Fib3V0UGFnZScsIEFib3V0UGFnZV92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1N1cHBvcnRQYWdlJywgU3VwcG9ydFBhZ2VfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdJYXRpU3RhbmRhcmQnLCBJYXRpU3RhbmRhcmRfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdQdWJsaXNoaW5nQ2hlY2tsaXN0JywgUHVibGlzaGluZ0NoZWNrbGlzdF92dWVfMS5kZWZhdWx0KTtcbi8qKlxuICogUmVnaXN0ZXJpbmcgdnVlIGNvbXBvbmVudCBmb3IgYWN0aXZpdHkgbGlzdGluZ1xuICovXG5hcHBcbiAgICAuY29tcG9uZW50KCdBY3Rpdml0eVRlbXBsYXRlJywgQWN0aXZpdHlJbmRleF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ0xvZ2dlZGluSGVhZGVyJywgQWRtaW5IZWFkZXJfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdBY3Rpdml0aWVzRGV0YWlsJywgQWN0aXZpdHlEZXRhaWxfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdEZXNjcmlwdGlvbkZvcm0nLCBEZXNjcmlwdGlvbkZvcm1fdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdFbGVtZW50c05vdGUnLCBFbGVtZW50c05vdGVfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdSZXN1bHREZXRhaWwnLCBSZXN1bHREZXRhaWxfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdSZXN1bHRMaXN0JywgUmVzdWx0TGlzdF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ0luZGljYXRvckRldGFpbCcsIEluZGljYXRvckRldGFpbF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ0luZGljYXRvckxpc3QnLCBJbmRpY2F0b3JMaXN0X3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnUGVyaW9kc0RldGFpbCcsIFBlcmlvZHNEZXRhaWxfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdQZXJpb2RzTGlzdCcsIFBlcmlvZHNMaXN0X3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnVHJhbnNhY3Rpb25MaXN0JywgVHJhbnNhY3Rpb25MaXN0X3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnVHJhbnNhY3Rpb25EZXRhaWwnLCBUcmFuc2FjdGlvbkRldGFpbF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1NpZGViYXJIZWxwQmxvY2snLCBTaWRlYmFySGVscEJsb2NrX3Z1ZV8xLmRlZmF1bHQpO1xuLypcbiAqIEltcG9ydCBwYWdlXG4gKi9cbmFwcFxuICAgIC5jb21wb25lbnQoJ0FjdGl2aXR5VXBsb2FkJywgQWN0aXZpdHlVcGxvYWRfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdBY3Rpdml0eVhsc1VwbG9hZCcsIEFjdGl2aXR5WGxzVXBsb2FkX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnSW1wb3J0TGlzdCcsIEltcG9ydExpc3RfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdYbHNMaXN0JywgWGxzTGlzdF92dWVfMS5kZWZhdWx0KTtcbi8vIGRhc2hib2FyZCBwYWdlXG5hcHAuY29tcG9uZW50KCdEYXNoYm9hcmRQYWdlJywgRGFzaGJvYXJkUGFnZV92dWVfMS5kZWZhdWx0KTtcbi8qXG4gKiBTZXR0aW5nIHBhZ2VcbiAqL1xuYXBwLmNvbXBvbmVudCgnU2V0dGluZ1BhZ2UnLCBTZXR0aW5nUGFnZV92dWVfMS5kZWZhdWx0KTtcbmFwcC5jb21wb25lbnQoJ1N5c3RlbVZlcnNpb24nLCBTeXN0ZW1WZXJzaW9uX3Z1ZV8xLmRlZmF1bHQpO1xuYXBwLmNvbXBvbmVudCgnQWN0aXZpdHlEZWZhdWx0VmFsdWVzJywgQWN0aXZpdHlEZWZhdWx0VmFsdWVfdnVlXzEuZGVmYXVsdCk7XG4vKlxuUmVnaXN0ZXJpbmcgdnVlIGNvbXBvbmVudCBmb3IgcGFzc3dvcmQgcmVzZXRcbiovXG5hcHBcbiAgICAuY29tcG9uZW50KCdSZXNldFBhZ2UnLCBSZXNldFBhZ2VfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdQYXNzd29yZFJlY292ZXJ5JywgUGFzc3dvcmRSZWNvdmVyeV92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1Jlc2V0UGFzc3dvcmQnLCBSZXNldFBhc3N3b3JkX3Z1ZV8xLmRlZmF1bHQpO1xuLyoqXG4gKiBSZWdpc3RlcmluZyB1c2VyIG1vZHVsZSByZWxhdGVkIHZ1ZSBjb21wb25lbnRzXG4gKi9cbmFwcC5jb21wb25lbnQoJ1VzZXJQcm9maWxlJywgVXNlclByb2ZpbGVfdnVlXzEuZGVmYXVsdCkuY29tcG9uZW50KCdVc2VyTGlzdGluZycsIFVzZXJMaXN0aW5nX3Z1ZV8xLmRlZmF1bHQpO1xuLyoqXG4gKiBSZWdpc3RlcmluZyBBZGRpdGlvbmFsIENvbXBvbmVudHNcbiAqL1xuYXBwLmNvbXBvbmVudCgnSG92ZXJUZXh0JywgSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQpO1xuYXBwLmNvbXBvbmVudCgnUGFnZVRpdGxlJywgUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQpO1xuYXBwLmNvbXBvbmVudCgnTG9hZGluZ1N0YXRlJywgTG9hZGVyX3Z1ZV8xLmRlZmF1bHQpO1xuLyoqXG4gKiBPcmdhbmlzYXRpb24gZGF0YVxuICovXG5hcHAuY29tcG9uZW50KCdPcmdhbmlzYXRpb25EYXRhJywgT3JnYW5pc2F0aW9uRGF0YV92dWVfMS5kZWZhdWx0KTtcbi8qKlxuICogUHJveHlcbiAqL1xuYXBwLmNvbXBvbmVudCgnT3JnYW5pc2F0aW9uTGlzdCcsIE9yZ2FuaXNhdGlvbkxpc3RfdnVlXzEuZGVmYXVsdCk7XG5hcHAuY29tcG9uZW50KCdBZG1pbkJhcicsIEFkbWluQmFyX3Z1ZV8xLmRlZmF1bHQpO1xuLyoqXG4gKiBBdWRpdFxuICovXG5hcHAuY29tcG9uZW50KCdBdWRpdExpc3RpbmcnLCBBdWRpdExpc3RpbmdfdnVlXzEuZGVmYXVsdCk7XG4vKipcbiAqIEV4dGVuc2lvbiB0byBpbmxpbmUgU1ZHIGZpbGVzIHdpdGggVnVlLmpzIGFuZCBvcHRpbWl6ZSB0aGVtIGF1dG9tYXRpY2FsbHkgd2l0aCBTVkdPXG4gKi9cbmFwcC51c2Uoc3ZnX3Z1ZTNfMS5kZWZhdWx0KTtcbmFwcC51c2UodnVlM19zbW9vdGhfc2Nyb2xsXzEuZGVmYXVsdCk7XG4vLyBkZXRlY3Qgc2Nyb2xsIHVwIG9yIGRvd25cbnZhciBsYXN0U2Nyb2xsVG9wID0gMCwgYWZmaXhUeXBlID0gJ3N0aWNreS1ub25lJztcbnZhciBzdGlja3lTaWRlYmFyID0gZnVuY3Rpb24gKGVsLCBwYXJlbnRXcmFwcGVyKSB7XG4gICAgLy9zdGlja3kgZWxlbWVudC9jaGlsZCBkYXRhXG4gICAgdmFyIHN0aWNreUVsZW1lbnQgPSBlbC5maXJzdENoaWxkLCBlbEhlaWdodCA9IHN0aWNreUVsZW1lbnQub2Zmc2V0SGVpZ2h0LCBzdGlja3lDdXJyZW50VG9wID0gc3RpY2t5RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AsIHN0aWNreUN1cnJlbnRCb3R0b20gPSBzdGlja3lFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbTtcbiAgICAvL3N0aWNreSBlbGVtZW50J3MgcGFyZW50L3dyYXBwZXIgZGF0YVxuICAgIHZhciBlbFdpZHRoID0gZWwub2Zmc2V0V2lkdGgsIGVsU2Nyb2xsTGVmdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQsIGVsU2Nyb2xsVG9wID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wLCBlbFNjcm9sbEJvdHRvbSA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSwgdmlld3BvcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgLy8gd2luZG93L2RvY3VtZW50IGRhdGFcbiAgICB2YXIgY3VycmVudFdpbmRvd3NTY3JvbGxQb3NpdGlvbiA9IHdpbmRvdy5wYWdlWU9mZnNldCwgdGFyZ2V0U2Nyb2xsUG9zaXRpb24gPSBlbFNjcm9sbEJvdHRvbSArIGN1cnJlbnRXaW5kb3dzU2Nyb2xsUG9zaXRpb24gLSB2aWV3cG9ydEhlaWdodDtcbiAgICAvLyBwYXJlbnQgd3JhcHBlciAvIHN0aWNreSBib3VuZGFyeVxuICAgIHZhciBlbFBhcmVudCA9IHN0aWNreUVsZW1lbnQuY2xvc2VzdChwYXJlbnRXcmFwcGVyKSwgZWxQYXJlbnRCb3R0b20gPSBlbFBhcmVudCA9PT0gbnVsbCB8fCBlbFBhcmVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogZWxQYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tO1xuICAgIC8vIHNjcm9sbCBiZWhhdmlvdXJcbiAgICB2YXIgaXNTY3JvbGxEb3duID0gY3VycmVudFdpbmRvd3NTY3JvbGxQb3NpdGlvbiA+IGxhc3RTY3JvbGxUb3AgPyB0cnVlIDogZmFsc2U7XG4gICAgdmFyIGlzU2Nyb2xsVXAgPSAhaXNTY3JvbGxEb3duO1xuICAgIGxhc3RTY3JvbGxUb3AgPVxuICAgICAgICBjdXJyZW50V2luZG93c1Njcm9sbFBvc2l0aW9uIDw9IDAgPyAwIDogY3VycmVudFdpbmRvd3NTY3JvbGxQb3NpdGlvbjtcbiAgICBmdW5jdGlvbiBzY3JvbGxEb3duU3RpY2t5Qm90dG9tKCkge1xuICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uIDogYWJzb2x1dGU7ICB3aWR0aDoyODBweDsgYm90dG9tOiAxNnB4XCI7XG4gICAgICAgIGFmZml4VHlwZSA9ICdzdGlja3ktYm91bmQnO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzY3JvbGxEb3duU3RpY2t5VG9wKCkge1xuICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiByZWxhdGl2ZTsgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCBcIi5jb25jYXQoc3RpY2t5Q3VycmVudFRvcCAtIGVsU2Nyb2xsVG9wLCBcInB4LCAwKTtcIik7XG4gICAgICAgIGFmZml4VHlwZSA9ICdzdGlja3ktdHJhbnNsYXRlJztcbiAgICB9XG4gICAgZnVuY3Rpb24gc2Nyb2xsRG93blN0aWNreVRyYW5zbGF0ZSgpIHtcbiAgICAgICAge1xuICAgICAgICAgICAgKHdpbmRvdy5zY3JvbGxZLFxuICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxZICtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCArXG4gICAgICAgICAgICAgICAgICAgIDQ3NiAtXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQgPlxuICAgICAgICAgICAgICAgICAgICAwKVxuICAgICAgICAgICAgICAgID8gd2luZG93LnNjcm9sbFkgK1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0ICtcbiAgICAgICAgICAgICAgICAgICAgNDc2IC1cbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodFxuICAgICAgICAgICAgICAgIDogMTY7XG4gICAgICAgIH1cbiAgICAgICAgc3RpY2t5RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjogZml4ZWQ7IHRvcDogYXV0bzsgbGVmdDogXCIuY29uY2F0KGVsU2Nyb2xsTGVmdCwgXCI7IGJvdHRvbTpcIikuY29uY2F0KCh3aW5kb3cuc2Nyb2xsWSxcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxZICtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0ICtcbiAgICAgICAgICAgICAgICA0NzYgLVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQgPlxuICAgICAgICAgICAgICAgIDE2KVxuICAgICAgICAgICAgPyB3aW5kb3cuc2Nyb2xsWSArXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCArXG4gICAgICAgICAgICAgICAgNDc2IC1cbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgICA6IDE2LCBcInB4OyB3aWR0aDogXCIpLmNvbmNhdChlbFdpZHRoLCBcInB4XCIpO1xuICAgICAgICBhZmZpeFR5cGUgPSAnc3RpY2t5LWJvdHRvbSc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcm9sbERvd25GaXhlZFRvcCgpIHtcbiAgICAgICAgZWwuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246IGZpeGVkOyB0b3A6MHB4XCI7XG4gICAgICAgIGFmZml4VHlwZSA9ICdzdGlja3ktdHJhbnNsYXRlJztcbiAgICB9XG4gICAgZnVuY3Rpb24gc2Nyb2xsRG93blN0aWNreU5vbmUoKSB7XG4gICAgICAgIGlmICh0YXJnZXRTY3JvbGxQb3NpdGlvbiA8PSBjdXJyZW50V2luZG93c1Njcm9sbFBvc2l0aW9uKSB7XG4gICAgICAgICAgICBpZiAodmlld3BvcnRIZWlnaHQgKyB3aW5kb3cuc2Nyb2xsWSArIDQ1MCA+PSBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCkge1xuICAgICAgICAgICAgICAgIGVsLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBzdGlja3k7IHRvcDowcHhcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0aWNreUVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246IGZpeGVkOyB0b3A6IGF1dG87IGxlZnQ6IFwiLmNvbmNhdChlbFNjcm9sbExlZnQsIFwiOyBib3R0b206IDA7IHdpZHRoOiBcIikuY29uY2F0KGVsV2lkdGgsIFwicHhcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhZmZpeFR5cGUgPSAnc3RpY2t5LWJvdHRvbSc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gc2Nyb2xsRG93blN0aWNreUJvdW5kKCkge1xuICAgICAgICBpZiAoZWxQYXJlbnRCb3R0b20gJiYgZWxQYXJlbnRCb3R0b20gPCBzdGlja3lDdXJyZW50Qm90dG9tKSB7XG4gICAgICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uIDogYWJzb2x1dGU7ICB3aWR0aDoyODBweDsgYm90dG9tOiAxNnB4XCI7XG4gICAgICAgICAgICBhZmZpeFR5cGUgPSAnc3RpY2t5LWJvdW5kJztcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVTY3JvbGxEb3duKCkge1xuICAgICAgICBzd2l0Y2ggKGFmZml4VHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnc3RpY2t5LXRvcCc6XG4gICAgICAgICAgICAgICAgc2Nyb2xsRG93blN0aWNreVRvcCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3RpY2t5LWJvdHRvbSc6XG4gICAgICAgICAgICAgICAgaWYgKGVsUGFyZW50Qm90dG9tICYmIGVsUGFyZW50Qm90dG9tIDwgc3RpY2t5Q3VycmVudEJvdHRvbSkge1xuICAgICAgICAgICAgICAgICAgICBzY3JvbGxEb3duU3RpY2t5Qm90dG9tKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3RpY2t5LXRyYW5zbGF0ZSc6XG4gICAgICAgICAgICAgICAgaWYgKHN0aWNreUN1cnJlbnRCb3R0b20gPD0gdmlld3BvcnRIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsRG93blN0aWNreVRyYW5zbGF0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2ZpeGVkLXRvcCc6XG4gICAgICAgICAgICAgICAgc2Nyb2xsRG93bkZpeGVkVG9wKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzdGlja3ktbm9uZSc6XG4gICAgICAgICAgICAgICAgc2Nyb2xsRG93blN0aWNreU5vbmUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N0aWNreS1ib3VuZCc6XG4gICAgICAgICAgICAgICAgc2Nyb2xsRG93blN0aWNreUJvdW5kKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gc2Nyb2xsVXBTdGlja3lUb3AoKSB7XG4gICAgICAgIGlmIChlbFNjcm9sbFRvcCA+PSAwKSB7XG4gICAgICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiByZWxhdGl2ZTsgIFwiO1xuICAgICAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS1ub25lJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHN0aWNreUVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246IGZpeGVkOyB0b3A6IGF1dG87IGJvdHRvbTpcIi5jb25jYXQoKHdpbmRvdy5zY3JvbGxZLFxuICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxZICtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCArXG4gICAgICAgICAgICAgICAgICAgIDQ3NiAtXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQgPlxuICAgICAgICAgICAgICAgICAgICAxNilcbiAgICAgICAgICAgICAgICA/IHdpbmRvdy5zY3JvbGxZICtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCArXG4gICAgICAgICAgICAgICAgICAgIDQ3NiAtXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHRcbiAgICAgICAgICAgICAgICA6IDE2LCBcInB4OyBsZWZ0OiBcIikuY29uY2F0KGVsU2Nyb2xsTGVmdCwgXCI7IHdpZHRoOiBcIikuY29uY2F0KGVsV2lkdGgsIFwicHggXCIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcm9sbFVwU3RpY2t5Qm90dG9tKCkge1xuICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBmaXhlZDsgdG9wOiAwcHg7IGxlZnQ6IFwiLmNvbmNhdChlbFNjcm9sbExlZnQsIFwiOyB3aWR0aDogXCIpLmNvbmNhdChlbFdpZHRoLCBcInB4IFwiKTtcbiAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS1ib3VuZCc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcm9sbFVwRml4ZWRUb3AoKSB7XG4gICAgICAgIGVsLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBmaXhlZDsgdG9wOjBweFwiO1xuICAgICAgICBhZmZpeFR5cGUgPSAnc3RpY2t5LXRyYW5zbGF0ZSc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcm9sbFVwU3RpY2t5VHJhbnNsYXRlKCkge1xuICAgICAgICBpZiAoc3RpY2t5Q3VycmVudFRvcCA+PSAwKSB7XG4gICAgICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBmaXhlZDsgdG9wOiAwcHg7IGxlZnQ6IFwiLmNvbmNhdChlbFNjcm9sbExlZnQsIFwiOyB3aWR0aDogXCIpLmNvbmNhdChlbFdpZHRoLCBcInB4XCIpO1xuICAgICAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS10b3AnO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcm9sbFVwU3RpY2t5Qm91bmQoKSB7XG4gICAgICAgIGlmIChzdGlja3lDdXJyZW50VG9wID49IDAgJiYgY3VycmVudFdpbmRvd3NTY3JvbGxQb3NpdGlvbiAhPSAwKSB7XG4gICAgICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOmZpeGVkOyB0b3A6IDA7IGxlZnQ6IFwiLmNvbmNhdChlbFNjcm9sbExlZnQsIFwiOyB3aWR0aDogXCIpLmNvbmNhdChlbFdpZHRoLCBcInB4XCIpO1xuICAgICAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS10b3AnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGlja3lDdXJyZW50VG9wID49IDAgJiYgY3VycmVudFdpbmRvd3NTY3JvbGxQb3NpdGlvbiA9PSAwKSB7XG4gICAgICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcIiB0b3A6IDA7IGxlZnQ6IFwiLmNvbmNhdChlbFNjcm9sbExlZnQsIFwiOyB3aWR0aDogXCIpLmNvbmNhdChlbFdpZHRoLCBcInB4XCIpO1xuICAgICAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS10b3AnO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZVNjcm9sbFVwKCkge1xuICAgICAgICBzd2l0Y2ggKGFmZml4VHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnc3RpY2t5LXRvcCc6XG4gICAgICAgICAgICAgICAgc2Nyb2xsVXBTdGlja3lUb3AoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N0aWNreS1ib3R0b20nOlxuICAgICAgICAgICAgICAgIHNjcm9sbFVwU3RpY2t5Qm90dG9tKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdmaXhlZC10b3AnOlxuICAgICAgICAgICAgICAgIHNjcm9sbFVwRml4ZWRUb3AoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N0aWNreS10cmFuc2xhdGUnOlxuICAgICAgICAgICAgICAgIHNjcm9sbFVwU3RpY2t5VHJhbnNsYXRlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzdGlja3ktbm9uZSc6XG4gICAgICAgICAgICAgICAgLy9ub3RoaW5nIHRvIGRvIGhlcmVcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N0aWNreS1ib3VuZCc6XG4gICAgICAgICAgICAgICAgc2Nyb2xsVXBTdGlja3lCb3VuZCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChlbEhlaWdodCA8IHZpZXdwb3J0SGVpZ2h0KSB7XG4gICAgICAgIGVsLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBzdGlja3k7IHRvcDowcHhcIjtcbiAgICAgICAgc3RpY2t5RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCJcIjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGVsLnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgaWYgKGlzU2Nyb2xsRG93biAmJiBjdXJyZW50V2luZG93c1Njcm9sbFBvc2l0aW9uICE9IDApIHtcbiAgICAgICAgICAgIGhhbmRsZVNjcm9sbERvd24oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc1Njcm9sbFVwICYmIGN1cnJlbnRXaW5kb3dzU2Nyb2xsUG9zaXRpb24gIT0gMCkge1xuICAgICAgICAgICAgaGFuZGxlU2Nyb2xsVXAoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVsLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBzdGlja3k7IHRvcDowcHhcIjtcbiAgICAgICAgICAgIHN0aWNreUVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IFwiXCI7XG4gICAgICAgIH1cbiAgICB9XG59O1xud2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAvL2NoZWNrIGNvbnN0YW50bHkgaW4gYSBpbnRlciBmb3Igd2hlbiBzdXBwb3J0IGJ1dHRvbiBlbnRlcnMgdGhlIGRvbVxuICAgIHZhciBjaGVja1N1cHBvcnRCdXR0b24gPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgIGlmIChzdXBwb3J0QnV0dG9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICBzdXBwb3J0QnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS5ib3JkZXIgPSAnMnB4IHNvbGlkIHJnYigyMSwgODMsIDEwMiknO1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja1N1cHBvcnRCdXR0b24pO1xuICAgICAgICB9XG4gICAgfSwgMTApO1xufTtcbi8vIGN1c3RvbSBkaXJlY3RpdmVcbmFwcC5kaXJlY3RpdmUoJ3N0aWNreS1jb21wb25lbnQnLCB7XG4gICAgbW91bnRlZDogZnVuY3Rpb24gKGVsLCBiaW5kaW5nKSB7XG4gICAgICAgIHZhciBib3VuZGFyeSA9IChiaW5kaW5nLnZhbHVlIHx8IHt9KS5ib3VuZGFyeTtcbiAgICAgICAgYm91bmRhcnkgPSBib3VuZGFyeSB8fCAnYm9keSc7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBmdW5jdGlvbiAoKSB7IHJldHVybiBzdGlja3lTaWRlYmFyKGVsLCBib3VuZGFyeSk7IH0pO1xuICAgIH0sXG4gICAgdW5tb3VudGVkOiBmdW5jdGlvbiAoZWwsIGJpbmRpbmcpIHtcbiAgICAgICAgdmFyIHBhcmVudCA9IGJpbmRpbmcudmFsdWUuYm91bmRhcnk7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBmdW5jdGlvbiAoKSB7IHJldHVybiBzdGlja3lTaWRlYmFyKGVsLCBwYXJlbnQpOyB9KTtcbiAgICB9LFxufSk7XG4vKipcbiAqIE5leHQsIHdlIHdpbGwgY3JlYXRlIGEgZnJlc2ggVnVlIGFwcGxpY2F0aW9uIGluc3RhbmNlIGFuZCBhdHRhY2ggaXQgdG9cbiAqIHRoZSBwYWdlLiBUaGVuLCB5b3UgbWF5IGJlZ2luIGFkZGluZyBjb21wb25lbnRzIHRvIHRoaXMgYXBwbGljYXRpb25cbiAqIG9yIGN1c3RvbWl6ZSB0aGUgSmF2YVNjcmlwdCBzY2FmZm9sZGluZyB0byBmaXQgeW91ciB1bmlxdWUgbmVlZHMuXG4gKi9cbmFwcC5tb3VudCgnI2FwcCcpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLm9yZ01hbmRhdG9yeUVsZW1lbnRzID0gZXhwb3J0cy5hY3Rpdml0eUNvcmVFbGVtZW50cyA9IHZvaWQgMDtcbmZ1bmN0aW9uIGFjdGl2aXR5Q29yZUVsZW1lbnRzKCkge1xuICAgIHZhciBlbGVtZW50cyA9IFtcbiAgICAgICAgJ3JlcG9ydGluZ19vcmcnLFxuICAgICAgICAnaWF0aV9pZGVudGlmaWVyJyxcbiAgICAgICAgJ3RpdGxlJyxcbiAgICAgICAgJ2Rlc2NyaXB0aW9uJyxcbiAgICAgICAgJ3BhcnRpY2lwYXRpbmdfb3JnJyxcbiAgICAgICAgJ2FjdGl2aXR5X3N0YXR1cycsXG4gICAgICAgICdhY3Rpdml0eV9kYXRlJyxcbiAgICAgICAgJ3JlY2lwaWVudF9jb3VudHJ5JyxcbiAgICAgICAgJ3JlY2lwaWVudF9yZWdpb24nLFxuICAgICAgICAnc2VjdG9yJyxcbiAgICAgICAgJ2NvbGxhYm9yYXRpb25fdHlwZScsXG4gICAgICAgICdkZWZhdWx0X2Zsb3dfdHlwZScsXG4gICAgICAgICdkZWZhdWx0X2ZpbmFuY2VfdHlwZScsXG4gICAgICAgICdkZWZhdWx0X2FpZF90eXBlJyxcbiAgICAgICAgJ2J1ZGdldCcsXG4gICAgICAgICd0cmFuc2FjdGlvbnMnLFxuICAgIF07XG4gICAgcmV0dXJuIGVsZW1lbnRzO1xufVxuZXhwb3J0cy5hY3Rpdml0eUNvcmVFbGVtZW50cyA9IGFjdGl2aXR5Q29yZUVsZW1lbnRzO1xuZnVuY3Rpb24gb3JnTWFuZGF0b3J5RWxlbWVudHMoKSB7XG4gICAgdmFyIGVsZW1lbnRzID0gWydyZXBvcnRpbmdfb3JnJywgJ25hbWUnXTtcbiAgICByZXR1cm4gZWxlbWVudHM7XG59XG5leHBvcnRzLm9yZ01hbmRhdG9yeUVsZW1lbnRzID0gb3JnTWFuZGF0b3J5RWxlbWVudHM7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbmZ1bmN0aW9uIGRhdGVGb3JtYXQoZGF0ZSwgZm9ybWF0KSB7XG4gICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9ICdNTU1NIERELCBZWVlZJzsgfVxuICAgIHZhciBmb3JtYXRfZGF0ZTtcbiAgICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgICAgICBjYXNlICdmcm9tTm93JzpcbiAgICAgICAgICAgIGZvcm1hdF9kYXRlID0gZGF0ZSA/ICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mcm9tTm93KCkgOiAnJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgZm9ybWF0X2RhdGUgPSBkYXRlID8gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdChmb3JtYXQpIDogJyc7XG4gICAgfVxuICAgIHJldHVybiBmb3JtYXRfZGF0ZTtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IGRhdGVGb3JtYXQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBjcnlwdG9fanNfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiY3J5cHRvLWpzXCIpKTtcbmZ1bmN0aW9uIGVuY3J5cHQoc3RyaW5nLCBrZXkpIHtcbiAgICB2YXIgaXYgPSBjcnlwdG9fanNfMS5kZWZhdWx0LmxpYi5Xb3JkQXJyYXkucmFuZG9tKDE2KTtcbiAgICB2YXIgc2FsdCA9IGNyeXB0b19qc18xLmRlZmF1bHQubGliLldvcmRBcnJheS5yYW5kb20oMjU2KTtcbiAgICB2YXIgaXRlcmF0aW9ucyA9IDk5OTtcbiAgICB2YXIgZW5jcnlwdE1ldGhvZExlbmd0aCA9IDI1NiAvIDQ7XG4gICAgdmFyIGhhc2hLZXkgPSBjcnlwdG9fanNfMS5kZWZhdWx0LlBCS0RGMihrZXksIHNhbHQsIHtcbiAgICAgICAgaGFzaGVyOiBjcnlwdG9fanNfMS5kZWZhdWx0LmFsZ28uU0hBNTEyLFxuICAgICAgICBrZXlTaXplOiBlbmNyeXB0TWV0aG9kTGVuZ3RoIC8gOCxcbiAgICAgICAgaXRlcmF0aW9uczogaXRlcmF0aW9ucyxcbiAgICB9KTtcbiAgICB2YXIgZW5jcnlwdGVkID0gY3J5cHRvX2pzXzEuZGVmYXVsdC5BRVMuZW5jcnlwdChzdHJpbmcsIGhhc2hLZXksIHtcbiAgICAgICAgbW9kZTogY3J5cHRvX2pzXzEuZGVmYXVsdC5tb2RlLkNCQyxcbiAgICAgICAgaXY6IGl2LFxuICAgIH0pO1xuICAgIHZhciBlbmNyeXB0ZWRTdHJpbmcgPSBjcnlwdG9fanNfMS5kZWZhdWx0LmVuYy5CYXNlNjQuc3RyaW5naWZ5KGVuY3J5cHRlZC5jaXBoZXJ0ZXh0KTtcbiAgICB2YXIgb3V0cHV0ID0ge1xuICAgICAgICBjaXBoZXJ0ZXh0OiBlbmNyeXB0ZWRTdHJpbmcsXG4gICAgICAgIGl2OiBjcnlwdG9fanNfMS5kZWZhdWx0LmVuYy5IZXguc3RyaW5naWZ5KGl2KSxcbiAgICAgICAgc2FsdDogY3J5cHRvX2pzXzEuZGVmYXVsdC5lbmMuSGV4LnN0cmluZ2lmeShzYWx0KSxcbiAgICAgICAgaXRlcmF0aW9uczogaXRlcmF0aW9ucyxcbiAgICB9O1xuICAgIHJldHVybiBjcnlwdG9fanNfMS5kZWZhdWx0LmVuYy5CYXNlNjQuc3RyaW5naWZ5KGNyeXB0b19qc18xLmRlZmF1bHQuZW5jLlV0ZjgucGFyc2UoSlNPTi5zdHJpbmdpZnkob3V0cHV0KSkpO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0gZW5jcnlwdDtcbiIsIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBHZXQgY3VycmVudCBhY3Rpdml0eSB0aXRsZVxuICpcbiAqIEByZXR1cm4gdGl0bGUgdGV4dFxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5mdW5jdGlvbiBnZXRBY3Rpdml0eVRpdGxlKGRhdGEsIGxhbmd1YWdlKSB7XG4gICAgdmFyIHRpdGxlID0gJ1VudGl0bGVkJztcbiAgICAvLyB0aXRsZSByZXR1cm4gaWYgbGFuZ3VhZ2UgZXhpc3QgaW4gZGF0YVxuICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGZvciAodmFyIF9pID0gMCwgZGF0YV8xID0gZGF0YTsgX2kgPCBkYXRhXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIgdCA9IGRhdGFfMVtfaV07XG4gICAgICAgICAgICBpZiAodC5sYW5ndWFnZSAmJiB0Lmxhbmd1YWdlID09PSBsYW5ndWFnZSkge1xuICAgICAgICAgICAgICAgIHRpdGxlID0gdC5uYXJyYXRpdmUgJiYgdC5uYXJyYXRpdmUgIT09ICcnID8gdC5uYXJyYXRpdmUgOiAnVW50aXRsZWQnO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aXRsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBkZWZhdWx0IHRpdGxlIHJldHVybiBpZiBsYW5ndWFnZSBkb2VzIG5vdCBleGlzdHMgaW4gZGF0YVxuICAgICAgICB0aXRsZSA9XG4gICAgICAgICAgICBkYXRhWycwJ10ubmFycmF0aXZlICYmIGRhdGFbJzAnXS5uYXJyYXRpdmUgIT09ICcnXG4gICAgICAgICAgICAgICAgPyBkYXRhWycwJ10ubmFycmF0aXZlXG4gICAgICAgICAgICAgICAgOiAnVW50aXRsZWQnO1xuICAgIH1cbiAgICByZXR1cm4gdGl0bGU7XG59XG5leHBvcnRzLmRlZmF1bHQgPSBnZXRBY3Rpdml0eVRpdGxlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlRyYW5zbGF0ZSA9IHZvaWQgMDtcbnZhciBUcmFuc2xhdGUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gVHJhbnNsYXRlKCkge1xuICAgICAgICB0aGlzLmxhbmd1YWdlU291cmNlcyA9IFtcbiAgICAgICAgICAgICdhYm91dCcsXG4gICAgICAgICAgICAnYWN0aXZpdGllcycsXG4gICAgICAgICAgICAnYWN0aXZpdHlfZGVmYXVsdCcsXG4gICAgICAgICAgICAnYWN0aXZpdHlfZGV0YWlsJyxcbiAgICAgICAgICAgICdhZG1pbicsXG4gICAgICAgICAgICAnYXV0aCcsXG4gICAgICAgICAgICAnYnV0dG9ucycsXG4gICAgICAgICAgICAnY29tbW9uJyxcbiAgICAgICAgICAgICdlbGVtZW50X2xhYmVscycsXG4gICAgICAgICAgICAnZWxlbWVudHMnLFxuICAgICAgICAgICAgJ2VsZW1lbnRzX2NvbW1vbicsXG4gICAgICAgICAgICAnZW1haWxfdmVyaWZpY2F0aW9uJyxcbiAgICAgICAgICAgICdldmVudHMnLFxuICAgICAgICAgICAgJ2hvbWUnLFxuICAgICAgICAgICAgJ2lhdGlfc3RhbmRhcmQnLFxuICAgICAgICAgICAgJ21pZGRsZXdhcmUnLFxuICAgICAgICAgICAgJ21pc3NpbmcnLFxuICAgICAgICAgICAgJ29yZ2FuaXNhdGlvbicsXG4gICAgICAgICAgICAncGFnaW5hdGlvbicsXG4gICAgICAgICAgICAncGFzc3dvcmRfcmVjb3ZlcnknLFxuICAgICAgICAgICAgJ3Bhc3N3b3JkcycsXG4gICAgICAgICAgICAncHVibGlzaGluZ19jaGVja2xpc3QnLFxuICAgICAgICAgICAgJ3JlZ2lzdGVyJyxcbiAgICAgICAgICAgICdyZXF1ZXN0cycsXG4gICAgICAgICAgICAncmVzcG9uc2VzJyxcbiAgICAgICAgICAgICdzZXR0aW5nJyxcbiAgICAgICAgICAgICdzZXR0aW5ncycsXG4gICAgICAgICAgICAnc3VwcG9ydCcsXG4gICAgICAgICAgICAndXNlcicsXG4gICAgICAgICAgICAndmFsaWRhdGlvbicsXG4gICAgICAgICAgICAnd2ViJyxcbiAgICAgICAgICAgICdzdGlja3knLFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLmxhbmcgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICB9XG4gICAgVHJhbnNsYXRlLnByb3RvdHlwZS5idXR0b24gPSBmdW5jdGlvbiAoYnV0dG9uS2V5LCBlbGVtZW50S2V5KSB7XG4gICAgICAgIGlmIChlbGVtZW50S2V5ID09PSB2b2lkIDApIHsgZWxlbWVudEtleSA9ICcnOyB9XG4gICAgICAgIHZhciBiYXNlTWVzc2FnZSA9IHRoaXMubGFuZy5idXR0b25zW2J1dHRvbktleV07XG4gICAgICAgIGlmICghZWxlbWVudEtleSkge1xuICAgICAgICAgICAgcmV0dXJuIGJhc2VNZXNzYWdlO1xuICAgICAgICB9XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudGV4dEZyb21LZXkoZWxlbWVudEtleSk7XG4gICAgICAgIHJldHVybiBiYXNlTWVzc2FnZS5yZXBsYWNlKCc6ZWxlbWVudCcsIHZhbHVlKTtcbiAgICB9O1xuICAgIFRyYW5zbGF0ZS5wcm90b3R5cGUuZXZlbnQgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIChfYSA9IHRoaXMubGFuZy5ldmVudHNba2V5XSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDoga2V5O1xuICAgIH07XG4gICAgVHJhbnNsYXRlLnByb3RvdHlwZS5lbGVtZW50ID0gZnVuY3Rpb24gKGtleSwgcGFyZW50S2V5KSB7XG4gICAgICAgIGlmIChwYXJlbnRLZXkgPT09IHZvaWQgMCkgeyBwYXJlbnRLZXkgPSAnZWxlbWVudHNfY29tbW9uJzsgfVxuICAgICAgICByZXR1cm4gdGhpcy5sYW5nW3BhcmVudEtleV1ba2V5XTtcbiAgICB9O1xuICAgIFRyYW5zbGF0ZS5wcm90b3R5cGUuZXJyb3IgPSBmdW5jdGlvbiAoZXJyb3JLZXksIGVsZW1lbnRLZXkpIHtcbiAgICAgICAgaWYgKGVsZW1lbnRLZXkgPT09IHZvaWQgMCkgeyBlbGVtZW50S2V5ID0gJyc7IH1cbiAgICAgICAgdmFyIGJhc2VNZXNzYWdlID0gdGhpcy5sYW5nLmNvbW1vbi5lcnJvcltlcnJvcktleV07XG4gICAgICAgIGlmICghZWxlbWVudEtleSkge1xuICAgICAgICAgICAgcmV0dXJuIGJhc2VNZXNzYWdlO1xuICAgICAgICB9XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudGV4dEZyb21LZXkoZWxlbWVudEtleSk7XG4gICAgICAgIHJldHVybiBiYXNlTWVzc2FnZS5yZXBsYWNlKCc6ZWxlbWVudCcsIHZhbHVlKTtcbiAgICB9O1xuICAgIFRyYW5zbGF0ZS5wcm90b3R5cGUuY29tbW9uVGV4dCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgdHJhbnNsYXRlZFN0cmluZyA9IHRoaXMubGFuZy5jb21tb247XG4gICAgICAgIHZhciBrZXlzID0gdGhpcy5leHBsb2RlKGtleSk7XG4gICAgICAgIGZvciAodmFyIF9pID0gMCwga2V5c18xID0ga2V5czsgX2kgPCBrZXlzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIgaW5uZXJLZXkgPSBrZXlzXzFbX2ldO1xuICAgICAgICAgICAgdHJhbnNsYXRlZFN0cmluZyA9IChfYSA9IHRyYW5zbGF0ZWRTdHJpbmdbaW5uZXJLZXldKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBrZXk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZWRTdHJpbmc7XG4gICAgfTtcbiAgICBUcmFuc2xhdGUucHJvdG90eXBlLmVsZW1lbnRMYWJlbCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgdHJhbnNsYXRlZFN0cmluZyA9IHRoaXMubGFuZy5lbGVtZW50X2xhYmVscztcbiAgICAgICAgdmFyIGtleXMgPSB0aGlzLmV4cGxvZGUoa2V5KTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBrZXlzXzIgPSBrZXlzOyBfaSA8IGtleXNfMi5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIHZhciBpbm5lcktleSA9IGtleXNfMltfaV07XG4gICAgICAgICAgICB0cmFuc2xhdGVkU3RyaW5nID0gKF9hID0gdHJhbnNsYXRlZFN0cmluZ1tpbm5lcktleV0pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGtleTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJhbnNsYXRlZFN0cmluZztcbiAgICB9O1xuICAgIFRyYW5zbGF0ZS5wcm90b3R5cGUuZWxlbWVudEZyb21FbGVtZW50TmFtZSA9IGZ1bmN0aW9uIChlbGVtZW50TmFtZSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiAoKF9hID0gdGhpcy5sYW5nLmVsZW1lbnRzX2NvbW1vbltlbGVtZW50TmFtZV0pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGVsZW1lbnROYW1lLnJlcGxhY2UoL18vZywgJy0nKSk7XG4gICAgfTtcbiAgICBUcmFuc2xhdGUucHJvdG90eXBlLm1pc3NpbmcgPSBmdW5jdGlvbiAoa2V5LCBlbGVtZW50KSB7XG4gICAgICAgIGlmIChrZXkgPT09IHZvaWQgMCkgeyBrZXkgPSAnJzsgfVxuICAgICAgICBpZiAoZWxlbWVudCA9PT0gdm9pZCAwKSB7IGVsZW1lbnQgPSAnJzsgfVxuICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICB2YXIgYmFzZU1lc3NhZ2UgPSB0aGlzLmxhbmcubWlzc2luZ1trZXldO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50ID0gdGhpcy50ZXh0RnJvbUtleShlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBiYXNlTWVzc2FnZSA9IGJhc2VNZXNzYWdlLnJlcGxhY2UoJzplbGVtZW50JywgZWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYmFzZU1lc3NhZ2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubGFuZy5taXNzaW5nLmRlZmF1bHQ7XG4gICAgfTtcbiAgICBUcmFuc2xhdGUucHJvdG90eXBlLnN0aWNreVRleHQgPSBmdW5jdGlvbiAoa2V5LCBvdXRlcktleSkge1xuICAgICAgICBpZiAob3V0ZXJLZXkgPT09IHZvaWQgMCkgeyBvdXRlcktleSA9ICcnOyB9XG4gICAgICAgIGlmIChvdXRlcktleSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubGFuZy5zdGlja3lbb3V0ZXJLZXldW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubGFuZy5zdGlja3lba2V5XTtcbiAgICB9O1xuICAgIFRyYW5zbGF0ZS5wcm90b3R5cGUubG9nVGV4dCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFuZy5jb21tb24ubG9nc1trZXldO1xuICAgIH07XG4gICAgVHJhbnNsYXRlLnByb3RvdHlwZS53ZWJUZXh0ID0gZnVuY3Rpb24gKGtleSkge1xuICAgICAgICByZXR1cm4gdGhpcy5sYW5nLndlYltrZXldO1xuICAgIH07XG4gICAgVHJhbnNsYXRlLnByb3RvdHlwZS5hZG1pblRleHQgPSBmdW5jdGlvbiAoa2V5LCBwYXJlbnRLZXkpIHtcbiAgICAgICAgaWYgKHBhcmVudEtleSA9PT0gdm9pZCAwKSB7IHBhcmVudEtleSA9ICdoZWFkZXInOyB9XG4gICAgICAgIHJldHVybiB0aGlzLmxhbmcuYWRtaW5bcGFyZW50S2V5XVtrZXldO1xuICAgIH07XG4gICAgVHJhbnNsYXRlLnByb3RvdHlwZS5yZWdpc3RlclRleHQgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZSh0aGlzLmxhbmcucmVnaXN0ZXIsIGtleSk7XG4gICAgfTtcbiAgICBUcmFuc2xhdGUucHJvdG90eXBlLmFib3V0VGV4dCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlKHRoaXMubGFuZy5hYm91dCwga2V5KTtcbiAgICB9O1xuICAgIFRyYW5zbGF0ZS5wcm90b3R5cGUuaWF0aVN0YW5kYXJkVGV4dCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlKHRoaXMubGFuZy5pYXRpX3N0YW5kYXJkLCBrZXkpO1xuICAgIH07XG4gICAgVHJhbnNsYXRlLnByb3RvdHlwZS5wdWJsaXNoaW5nQ2hlY2tsaXN0VGV4dCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlKHRoaXMubGFuZy5wdWJsaXNoaW5nX2NoZWNrbGlzdCwga2V5KTtcbiAgICB9O1xuICAgIFRyYW5zbGF0ZS5wcm90b3R5cGUuZ2V0U3RpY2t5T2JqZWN0ID0gZnVuY3Rpb24gKGlubmVyS2V5KSB7XG4gICAgICAgIGlmIChpbm5lcktleSA9PT0gdm9pZCAwKSB7IGlubmVyS2V5ID0gJyc7IH1cbiAgICAgICAgaWYgKGlubmVyS2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sYW5nLnN0aWNreVtpbm5lcktleV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubGFuZy5zdGlja3k7XG4gICAgfTtcbiAgICBUcmFuc2xhdGUucHJvdG90eXBlLnRleHRGcm9tS2V5ID0gZnVuY3Rpb24gKGVsZW1lbnRLZXkpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLmxhbmc7XG4gICAgICAgIHZhciBlbGVtZW50S2V5c0FycmF5ID0gdGhpcy5leHBsb2RlKGVsZW1lbnRLZXkpO1xuICAgICAgICBpZiAoZWxlbWVudEtleXNBcnJheS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB2YXIgbGVhZGluZ0tleSA9IGVsZW1lbnRLZXlzQXJyYXlbMF07XG4gICAgICAgICAgICBpZiAodGhpcy5sYW5ndWFnZVNvdXJjZXMuaW5jbHVkZXMobGVhZGluZ0tleSkpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMubGFuZ1tsZWFkaW5nS2V5XTtcbiAgICAgICAgICAgICAgICBlbGVtZW50S2V5c0FycmF5LnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBlbGVtZW50S2V5c0FycmF5XzEgPSBlbGVtZW50S2V5c0FycmF5OyBfaSA8IGVsZW1lbnRLZXlzQXJyYXlfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGVsZW1lbnRLZXlfMSA9IGVsZW1lbnRLZXlzQXJyYXlfMVtfaV07XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gKF9hID0gdmFsdWVbZWxlbWVudEtleV8xXSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogZWxlbWVudEtleV8xO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWVbZWxlbWVudEtleV07XG4gICAgfTtcbiAgICBUcmFuc2xhdGUucHJvdG90eXBlLnRyYW5zbGF0ZSA9IGZ1bmN0aW9uICh0cmFuc2xhdGlvblNvdXJjZSwga2V5KSB7XG4gICAgICAgIHZhciBrZXlzID0gdGhpcy5leHBsb2RlKGtleSk7XG4gICAgICAgIGZvciAodmFyIF9pID0gMCwga2V5c18zID0ga2V5czsgX2kgPCBrZXlzXzMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIgaW5uZXJLZXkgPSBrZXlzXzNbX2ldO1xuICAgICAgICAgICAgdHJhbnNsYXRpb25Tb3VyY2UgPSB0cmFuc2xhdGlvblNvdXJjZVtpbm5lcktleV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRyYW5zbGF0aW9uU291cmNlO1xuICAgIH07XG4gICAgVHJhbnNsYXRlLnByb3RvdHlwZS5leHBsb2RlID0gZnVuY3Rpb24gKGtleSkge1xuICAgICAgICByZXR1cm4ga2V5LnNwbGl0KCcuJyk7XG4gICAgfTtcbiAgICByZXR1cm4gVHJhbnNsYXRlO1xufSgpKTtcbmV4cG9ydHMuVHJhbnNsYXRlID0gVHJhbnNsYXRlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmNyZWF0ZUNhcGl0YWxpemVkU2VudGVuY2UgPSBleHBvcnRzLnRydW5jYXRlVGV4dCA9IGV4cG9ydHMua2ViYWJDYXNlVG9TbmFrZWNhc2UgPSBleHBvcnRzLnNuYWtlQ2FzZVRvU2VudGVuY2VDYXNlID0gZXhwb3J0cy5zZW50ZW5jZUNhc2VUb0tlYmFiQ2FzZSA9IGV4cG9ydHMuaXNKc29uID0gZXhwb3J0cy5yZWR1Y2VEb2N1bWVudExpbmsgPSBleHBvcnRzLmNvdW50RG9jdW1lbnRMaW5rID0gZXhwb3J0cy5nZXRMb2NhdGlvbiA9IHZvaWQgMDtcbmZ1bmN0aW9uIGdldExvY2F0aW9uKGRhdGEpIHtcbiAgICB2YXIgbG9jYXRpb25zID0gW107XG4gICAgbG9jYXRpb25zID0gZGF0YS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0ucmVmZXJlbmNlO1xuICAgIH0pO1xuICAgIHZhciBsYXN0TG9jYXRpb24gPSBsb2NhdGlvbnMuc2xpY2UoLTEpWzBdO1xuICAgIGxvY2F0aW9ucyA9IGxvY2F0aW9ucy5zbGljZSgwLCAtMSk7XG4gICAgaWYgKGxvY2F0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiBsb2NhdGlvbnMuam9pbignLCAnKSArICcgJyArICdhbmQnICsgJyAnICsgbGFzdExvY2F0aW9uO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGxhc3RMb2NhdGlvbjtcbiAgICB9XG59XG5leHBvcnRzLmdldExvY2F0aW9uID0gZ2V0TG9jYXRpb247XG5mdW5jdGlvbiBjb3VudERvY3VtZW50TGluayhkb2N1bWVudF9saW5rKSB7XG4gICAgdmFyIGRvY3VtZW50Q291bnQgPSAwO1xuICAgIGZvciAodmFyIGRvY3VtZW50XzEgaW4gZG9jdW1lbnRfbGluaykge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVkdWNlRG9jdW1lbnRMaW5rKGRvY3VtZW50X2xpbmtbZG9jdW1lbnRfMV0sIFtdKTtcbiAgICAgICAgaWYgKCFyZXN1bHQuZXZlcnkoZnVuY3Rpb24gKGl0ZW0pIHsgcmV0dXJuIGl0ZW0gPT09IG51bGw7IH0pKSB7XG4gICAgICAgICAgICBkb2N1bWVudENvdW50Kys7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRvY3VtZW50Q291bnQ7XG59XG5leHBvcnRzLmNvdW50RG9jdW1lbnRMaW5rID0gY291bnREb2N1bWVudExpbms7XG5mdW5jdGlvbiByZWR1Y2VEb2N1bWVudExpbmsoZG9jdW1lbnRfbGluaywgdmFsdWVzKSB7XG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudF9saW5rID09PSAnb2JqZWN0JyAmJiBkb2N1bWVudF9saW5rKSB7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBkb2N1bWVudF9saW5rKSB7XG4gICAgICAgICAgICB2YWx1ZXMuY29uY2F0KHJlZHVjZURvY3VtZW50TGluayhkb2N1bWVudF9saW5rW2tleV0sIHZhbHVlcykpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YWx1ZXMucHVzaChkb2N1bWVudF9saW5rKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlcztcbn1cbmV4cG9ydHMucmVkdWNlRG9jdW1lbnRMaW5rID0gcmVkdWNlRG9jdW1lbnRMaW5rO1xuZnVuY3Rpb24gaXNKc29uKHN0cikge1xuICAgIHRyeSB7XG4gICAgICAgIEpTT04ucGFyc2Uoc3RyKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmV4cG9ydHMuaXNKc29uID0gaXNKc29uO1xuZnVuY3Rpb24gc2VudGVuY2VDYXNlVG9LZWJhYkNhc2Uoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5zcGxpdCgnICcpLmpvaW4oJy0nKTtcbn1cbmV4cG9ydHMuc2VudGVuY2VDYXNlVG9LZWJhYkNhc2UgPSBzZW50ZW5jZUNhc2VUb0tlYmFiQ2FzZTtcbmZ1bmN0aW9uIHNuYWtlQ2FzZVRvU2VudGVuY2VDYXNlKHN0cikge1xuICAgIHZhciB3b3JkcyA9IHN0ci5zcGxpdCgnXycpO1xuICAgIHZhciBzZW50ZW5jZSA9IHdvcmRzWzBdLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgd29yZHNbMF0uc2xpY2UoMSkudG9Mb3dlckNhc2UoKTtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IHdvcmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHNlbnRlbmNlICs9ICcgJyArIHdvcmRzW2ldLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuICAgIHJldHVybiBzZW50ZW5jZTtcbn1cbmV4cG9ydHMuc25ha2VDYXNlVG9TZW50ZW5jZUNhc2UgPSBzbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZTtcbmZ1bmN0aW9uIGtlYmFiQ2FzZVRvU25ha2VjYXNlKHN0cikge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvLS9nLCAnXycpO1xufVxuZXhwb3J0cy5rZWJhYkNhc2VUb1NuYWtlY2FzZSA9IGtlYmFiQ2FzZVRvU25ha2VjYXNlO1xuZnVuY3Rpb24gdHJ1bmNhdGVUZXh0KHRleHQsIG1heExlbmd0aCkge1xuICAgIGlmICh0ZXh0Lmxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgICAgICByZXR1cm4gdGV4dC5zdWJzdHJpbmcoMCwgbWF4TGVuZ3RoKSArICcuLi4nO1xuICAgIH1cbiAgICByZXR1cm4gdGV4dDtcbn1cbmV4cG9ydHMudHJ1bmNhdGVUZXh0ID0gdHJ1bmNhdGVUZXh0O1xuZnVuY3Rpb24gY3JlYXRlQ2FwaXRhbGl6ZWRTZW50ZW5jZSgpIHtcbiAgICB2YXIgd29yZHMgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICB3b3Jkc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICB2YXIgY2FwaXRhbGl6ZWRGaXJzdFdvcmQgPSB3b3Jkc1swXS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHdvcmRzWzBdLnNsaWNlKDEpO1xuICAgIHZhciBjb25jYXRlbmF0ZWRXb3JkcyA9IHdvcmRzLnNsaWNlKDEpLmpvaW4oJyAnKTtcbiAgICByZXR1cm4gXCJcIi5jb25jYXQoY2FwaXRhbGl6ZWRGaXJzdFdvcmQsIFwiIFwiKS5jb25jYXQoY29uY2F0ZW5hdGVkV29yZHMpO1xufVxuZXhwb3J0cy5jcmVhdGVDYXBpdGFsaXplZFNlbnRlbmNlID0gY3JlYXRlQ2FwaXRhbGl6ZWRTZW50ZW5jZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy51c2VTdG9yZSA9IHZvaWQgMDtcbnZhciB2dWV4XzEgPSByZXF1aXJlKFwidnVleFwiKTtcbnZhciBzdGF0ZSA9IHtcbiAgICBzZWxlY3RlZEFjdGl2aXRpZXM6IFtdLFxuICAgIGJ1bGtQdWJsaXNoTGVuZ3RoOiAwLFxuICAgIGNhbmNlbFVwbG9hZDogZmFsc2UsXG4gICAgc3RhcnRCdWxrUHVibGlzaDogZmFsc2UsXG4gICAgbWF4aW1pemVYbHM6IHRydWUsXG4gICAgc3RhcnRYbHNEb3dubG9hZDogZmFsc2UsXG4gICAgY29tcGxldGVYbHNEb3dubG9hZDogZmFsc2UsXG4gICAgY2FuY2VsRG93bmxvYWQ6IGZhbHNlLFxuICAgIGNsb3NlWGxzTW9kZWw6IGZhbHNlLFxuICAgIGJ1bGtwdWJsaXNoQWN0aXZpdGllczoge1xuICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllczoge1xuICAgICAgICAgICAgYWN0aXZpdGllczogeyBhY3Rpdml0eV9pZDogMCwgYWN0aXZpdHlfdGl0bGU6ICcnLCBzdGF0dXM6ICcnIH0sXG4gICAgICAgICAgICBvcmdhbml6YXRpb25faWQ6IDAsXG4gICAgICAgICAgICBqb2JfYmF0Y2hfdXVpZDogJycsXG4gICAgICAgICAgICBzdGF0dXM6ICcnLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgIH0sXG4gICAgfSxcbn07XG52YXIgbXV0YXRpb25zID0ge1xuICAgIG11dGF0ZVNlbGVjdGVkQWN0aXZpdGllczogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLnNlbGVjdGVkQWN0aXZpdGllcyA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVDbG9zZVhsc01vZGVsOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuY2xvc2VYbHNNb2RlbCA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVCdWxrUHVibGlzaExlbmd0aDogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLmJ1bGtQdWJsaXNoTGVuZ3RoID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZUNhbmNlbFVwbG9hZDogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLmNhbmNlbFVwbG9hZCA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVNYXhpbWl6ZVhsczogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLm1heGltaXplWGxzID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZVN0YXJ0WGxzRG93bmxvYWQ6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5zdGFydFhsc0Rvd25sb2FkID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZUNvbXBsZXRlWGxzRG93bmxvYWQ6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5jb21wbGV0ZVhsc0Rvd25sb2FkID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZUNhbmNlbERvd25sb2FkOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuY2FuY2VsRG93bmxvYWQgPSBwYXlsb2FkO1xuICAgIH0sXG4gICAgbXV0YXRlQnVsa3B1Ymxpc2hBY3Rpdml0aWVzOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuYnVsa3B1Ymxpc2hBY3Rpdml0aWVzID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZVN0YXJ0QnVsa1B1Ymxpc2g6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5zdGFydEJ1bGtQdWJsaXNoID0gcGF5bG9hZDtcbiAgICB9LFxufTtcbnZhciBhY3Rpb25zID0ge1xuICAgIHVwZGF0ZVNlbGVjdGVkQWN0aXZpdGllczogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlU2VsZWN0ZWRBY3Rpdml0aWVzJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVDbG9zZVhsc01vZGVsOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVDbG9zZVhsc01vZGVsJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVCdWxrUHVibGlzaExlbmd0aDogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlQnVsa1B1Ymxpc2hMZW5ndGgnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZUNhbmNlbFVwbG9hZDogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlQ2FuY2VsVXBsb2FkJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVNYXhpbWl6ZVhsczogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlTWF4aW1pemVYbHMnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZVN0YXJ0WGxzRG93bmxvYWQ6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZVN0YXJ0WGxzRG93bmxvYWQnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZUNvbXBsZXRlWGxzRG93bmxvYWQ6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZUNvbXBsZXRlWGxzRG93bmxvYWQnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZUNhbmNlbERvd25sb2FkOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVDYW5jZWxEb3dubG9hZCcsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgdXBkYXRlQnVsa3B1Ymxpc2hBY3Rpdml0aWVzOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVCdWxrcHVibGlzaEFjdGl2aXRpZXMnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZVN0YXJ0QnVsa1B1Ymxpc2g6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZVN0YXJ0QnVsa1B1Ymxpc2gnLCBwYXlsb2FkKTtcbiAgICB9LFxufTtcbnZhciBhY3Rpdml0eUxpc3RTdG9yZSA9ICgwLCB2dWV4XzEuY3JlYXRlU3RvcmUpKHtcbiAgICBzdGF0ZTogc3RhdGUsXG4gICAgbXV0YXRpb25zOiBtdXRhdGlvbnMsXG4gICAgYWN0aW9uczogYWN0aW9ucyxcbn0pO1xuZnVuY3Rpb24gdXNlU3RvcmUoKSB7XG4gICAgcmV0dXJuIGFjdGl2aXR5TGlzdFN0b3JlO1xufVxuZXhwb3J0cy51c2VTdG9yZSA9IHVzZVN0b3JlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmRldGFpbFN0b3JlID0gdm9pZCAwO1xudmFyIHZ1ZXhfMSA9IHJlcXVpcmUoXCJ2dWV4XCIpO1xudmFyIHN0YXRlID0ge1xuICAgIHVuUHVibGlzaGVkOiBmYWxzZSxcbiAgICBzaG93UHVibGlzaGVkOiBmYWxzZSxcbiAgICBwdWJsaXNoRXJyb3JzOiBbXSxcbiAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgIGJ1bGtwdWJsaXNoTGVuZ3RoOiAwLFxufTtcbnZhciBtdXRhdGlvbnMgPSB7XG4gICAgbXV0YXRlVW5QdWJsaXNoZWQ6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS51blB1Ymxpc2hlZCA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVTaG93UHVibGlzaGVkOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuc2hvd1B1Ymxpc2hlZCA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVQdWJsaXNoRXJyb3JzOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUucHVibGlzaEVycm9ycyA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVJc0xvYWRpbmc6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5pc0xvYWRpbmcgPSBwYXlsb2FkO1xuICAgIH0sXG4gICAgbXV0YXRlQnVsa3B1Ymxpc2hMZW5ndGg6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5idWxrcHVibGlzaExlbmd0aCA9IHBheWxvYWQ7XG4gICAgfSxcbn07XG52YXIgYWN0aW9ucyA9IHtcbiAgICB1cGRhdGVVblB1Ymxpc2hlZDogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlVW5QdWJsaXNoZWQnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZVNob3dQdWJsaXNoZWQ6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZVNob3dQdWJsaXNoZWQnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZVB1Ymxpc2hFcnJvcnM6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZVB1Ymxpc2hFcnJvcnMnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZUlzTG9hZGluZzogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlSXNMb2FkaW5nJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVCdWxrcHVibGlzaExlbmd0aDogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlQnVsa3B1Ymxpc2hMZW5ndGgnLCBwYXlsb2FkKTtcbiAgICB9LFxufTtcbnZhciBhY3Rpdml0eURldGFpbFN0b3JlID0gKDAsIHZ1ZXhfMS5jcmVhdGVTdG9yZSkoe1xuICAgIHN0YXRlOiBzdGF0ZSxcbiAgICBtdXRhdGlvbnM6IG11dGF0aW9ucyxcbiAgICBhY3Rpb25zOiBhY3Rpb25zLFxufSk7XG5mdW5jdGlvbiBkZXRhaWxTdG9yZSgpIHtcbiAgICByZXR1cm4gYWN0aXZpdHlEZXRhaWxTdG9yZTtcbn1cbmV4cG9ydHMuZGV0YWlsU3RvcmUgPSBkZXRhaWxTdG9yZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy51c2VTdG9yZSA9IGV4cG9ydHMuc3RvcmUgPSB2b2lkIDA7XG52YXIgdnVleF8xID0gcmVxdWlyZShcInZ1ZXhcIik7XG52YXIgc3RhdGVfMSA9IHJlcXVpcmUoXCIuL3NldHRpbmcvc3RhdGVcIik7XG52YXIgbXV0YXRpb25fMSA9IHJlcXVpcmUoXCIuL3NldHRpbmcvbXV0YXRpb25cIik7XG52YXIgYWN0aW9uc18xID0gcmVxdWlyZShcIi4vc2V0dGluZy9hY3Rpb25zXCIpO1xuZXhwb3J0cy5zdG9yZSA9ICgwLCB2dWV4XzEuY3JlYXRlU3RvcmUpKHtcbiAgICBzdGF0ZTogc3RhdGVfMS5zdGF0ZSxcbiAgICBtdXRhdGlvbnM6IG11dGF0aW9uXzEubXV0YXRpb25zLFxuICAgIGFjdGlvbnM6IGFjdGlvbnNfMS5hY3Rpb25zLFxufSk7XG5mdW5jdGlvbiB1c2VTdG9yZSgpIHtcbiAgICByZXR1cm4gZXhwb3J0cy5zdG9yZTtcbn1cbmV4cG9ydHMudXNlU3RvcmUgPSB1c2VTdG9yZTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9hO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5hY3Rpb25zID0gZXhwb3J0cy5BY3Rpb25UeXBlcyA9IHZvaWQgMDtcbnZhciBtdXRhdGlvbl8xID0gcmVxdWlyZShcIi4vbXV0YXRpb25cIik7XG52YXIgQWN0aW9uVHlwZXM7XG4oZnVuY3Rpb24gKEFjdGlvblR5cGVzKSB7XG4gICAgQWN0aW9uVHlwZXNbXCJVUERBVEVfUFVCTElTSElOR19GT1JNXCJdID0gXCJVUERBVEVfUFVCTElTSElOR19GT1JNXCI7XG4gICAgQWN0aW9uVHlwZXNbXCJVUERBVEVfUFVCTElTSEVSX0lORk9cIl0gPSBcIlVQREFURV9QVUJMSVNIRVJfSU5GT1wiO1xuICAgIEFjdGlvblR5cGVzW1wiVVBEQVRFX1BVQkxJU0hJTkdfRVJST1JcIl0gPSBcIlVQREFURV9QVUJMSVNISU5HX0VSUk9SXCI7XG4gICAgQWN0aW9uVHlwZXNbXCJVUERBVEVfREVGQVVMVF9WQUxVRVNcIl0gPSBcIlVQREFURV9ERUZBVUxUX1ZBTFVFU1wiO1xuICAgIEFjdGlvblR5cGVzW1wiVVBEQVRFX0RFRkFVTFRfRVJST1JcIl0gPSBcIlVQREFURV9ERUZBVUxUX0VSUk9SXCI7XG4gICAgQWN0aW9uVHlwZXNbXCJVUERBVEVfSVNfTE9BRElOR1wiXSA9IFwiVVBEQVRFX0lTX0xPQURJTkdcIjtcbiAgICBBY3Rpb25UeXBlc1tcIlVQREFURV9CVUxLUFVCTElTSF9MRU5HVEhcIl0gPSBcIlVQREFURV9CVUxLUFVCTElTSF9MRU5HVEhcIjtcbn0pKEFjdGlvblR5cGVzID0gZXhwb3J0cy5BY3Rpb25UeXBlcyB8fCAoZXhwb3J0cy5BY3Rpb25UeXBlcyA9IHt9KSk7XG5leHBvcnRzLmFjdGlvbnMgPSAoX2EgPSB7fSxcbiAgICBfYVtBY3Rpb25UeXBlcy5VUERBVEVfUFVCTElTSElOR19GT1JNXSA9IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQobXV0YXRpb25fMS5NdXRhdGlvblR5cGVzLlVQREFURV9QVUJMSVNISU5HX0ZPUk0sIHBheWxvYWQpO1xuICAgIH0sXG4gICAgX2FbQWN0aW9uVHlwZXMuVVBEQVRFX1BVQkxJU0hFUl9JTkZPXSA9IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQobXV0YXRpb25fMS5NdXRhdGlvblR5cGVzLlVQREFURV9QVUJMSVNIRVJfSU5GTywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICBfYVtBY3Rpb25UeXBlcy5VUERBVEVfUFVCTElTSElOR19FUlJPUl0gPSBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KG11dGF0aW9uXzEuTXV0YXRpb25UeXBlcy5VUERBVEVfUFVCTElTSElOR19FUlJPUiwgcGF5bG9hZCk7XG4gICAgfSxcbiAgICBfYVtBY3Rpb25UeXBlcy5VUERBVEVfREVGQVVMVF9WQUxVRVNdID0gZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdChtdXRhdGlvbl8xLk11dGF0aW9uVHlwZXMuVVBEQVRFX0RFRkFVTFRfVkFMVUVTLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIF9hW0FjdGlvblR5cGVzLlVQREFURV9ERUZBVUxUX0VSUk9SXSA9IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQobXV0YXRpb25fMS5NdXRhdGlvblR5cGVzLlVQREFURV9ERUZBVUxUX0VSUk9SLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIF9hW0FjdGlvblR5cGVzLlVQREFURV9JU19MT0FESU5HXSA9IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQobXV0YXRpb25fMS5NdXRhdGlvblR5cGVzLklTX0xPQURJTkcsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgX2FbQWN0aW9uVHlwZXMuVVBEQVRFX0JVTEtQVUJMSVNIX0xFTkdUSF0gPSBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KG11dGF0aW9uXzEuTXV0YXRpb25UeXBlcy5CVUxLUFVCTElTSF9MRU5HVEgsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgX2EpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX2E7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLm11dGF0aW9ucyA9IGV4cG9ydHMuTXV0YXRpb25UeXBlcyA9IHZvaWQgMDtcbnZhciBNdXRhdGlvblR5cGVzO1xuKGZ1bmN0aW9uIChNdXRhdGlvblR5cGVzKSB7XG4gICAgTXV0YXRpb25UeXBlc1tcIlVQREFURV9QVUJMSVNISU5HX0ZPUk1cIl0gPSBcIlVQREFURV9QVUJMSVNISU5HX0ZPUk1cIjtcbiAgICBNdXRhdGlvblR5cGVzW1wiVVBEQVRFX1BVQkxJU0hFUl9JTkZPXCJdID0gXCJVUERBVEVfUFVCTElTSEVSX0lORk9cIjtcbiAgICBNdXRhdGlvblR5cGVzW1wiVVBEQVRFX1BVQkxJU0hJTkdfRVJST1JcIl0gPSBcIlVQREFURV9QVUJMSVNISU5HX0VSUk9SXCI7XG4gICAgTXV0YXRpb25UeXBlc1tcIlVQREFURV9ERUZBVUxUX1ZBTFVFU1wiXSA9IFwiVVBEQVRFX0RFRkFVTFRfVkFMVUVTXCI7XG4gICAgTXV0YXRpb25UeXBlc1tcIlVQREFURV9ERUZBVUxUX0VSUk9SXCJdID0gXCJVUERBVEVfREVGQVVMVF9FUlJPUlwiO1xuICAgIE11dGF0aW9uVHlwZXNbXCJJU19MT0FESU5HXCJdID0gXCJJU19MT0FESU5HXCI7XG4gICAgTXV0YXRpb25UeXBlc1tcIkJVTEtQVUJMSVNIX0xFTkdUSFwiXSA9IFwiQlVMS1BVQkxJU0hfTEVOR1RIXCI7XG59KShNdXRhdGlvblR5cGVzID0gZXhwb3J0cy5NdXRhdGlvblR5cGVzIHx8IChleHBvcnRzLk11dGF0aW9uVHlwZXMgPSB7fSkpO1xuZXhwb3J0cy5tdXRhdGlvbnMgPSAoX2EgPSB7fSxcbiAgICBfYVtNdXRhdGlvblR5cGVzLlVQREFURV9QVUJMSVNISU5HX0ZPUk1dID0gZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLnB1Ymxpc2hpbmdGb3JtW3BheWxvYWQua2V5XSA9IHBheWxvYWQudmFsdWU7XG4gICAgfSxcbiAgICBfYVtNdXRhdGlvblR5cGVzLlVQREFURV9QVUJMSVNIRVJfSU5GT10gPSBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUucHVibGlzaGluZ0luZm9bcGF5bG9hZC5rZXldID0gcGF5bG9hZC52YWx1ZTtcbiAgICB9LFxuICAgIF9hW011dGF0aW9uVHlwZXMuVVBEQVRFX0RFRkFVTFRfVkFMVUVTXSA9IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5kZWZhdWx0Rm9ybVtwYXlsb2FkLmtleV0gPSBwYXlsb2FkLnZhbHVlO1xuICAgIH0sXG4gICAgX2FbTXV0YXRpb25UeXBlcy5VUERBVEVfUFVCTElTSElOR19FUlJPUl0gPSBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUucHVibGlzaGluZ0Vycm9yW3BheWxvYWQua2V5XSA9IHBheWxvYWQudmFsdWU7XG4gICAgfSxcbiAgICBfYVtNdXRhdGlvblR5cGVzLlVQREFURV9ERUZBVUxUX0VSUk9SXSA9IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5kZWZhdWx0RXJyb3JbcGF5bG9hZC5rZXldID0gcGF5bG9hZC52YWx1ZTtcbiAgICB9LFxuICAgIF9hW011dGF0aW9uVHlwZXMuSVNfTE9BRElOR10gPSBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuZGVmYXVsdEVycm9yW3BheWxvYWQua2V5XSA9IHBheWxvYWQudmFsdWU7XG4gICAgfSxcbiAgICBfYVtNdXRhdGlvblR5cGVzLkJVTEtQVUJMSVNIX0xFTkdUSF0gPSBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuZGVmYXVsdEVycm9yW3BheWxvYWQua2V5XSA9IHBheWxvYWQudmFsdWU7XG4gICAgfSxcbiAgICBfYSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuc3RhdGUgPSB2b2lkIDA7XG5leHBvcnRzLnN0YXRlID0ge1xuICAgIHB1Ymxpc2hpbmdGb3JtOiB7XG4gICAgICAgIHB1Ymxpc2hlcl9pZDogJycsXG4gICAgICAgIGFwaV90b2tlbjogJycsXG4gICAgfSxcbiAgICBwdWJsaXNoaW5nSW5mbzoge1xuICAgICAgICBwdWJsaXNoZXJfdmVyaWZpY2F0aW9uOiBmYWxzZSxcbiAgICAgICAgdG9rZW5fdmVyaWZpY2F0aW9uOiBmYWxzZSxcbiAgICAgICAgaXNWZXJpZmljYXRpb25SZXF1ZXN0ZWQ6IGZhbHNlLFxuICAgIH0sXG4gICAgZGVmYXVsdEZvcm06IHtcbiAgICAgICAgZGVmYXVsdF9jdXJyZW5jeTogJycsXG4gICAgICAgIGRlZmF1bHRfbGFuZ3VhZ2U6ICcnLFxuICAgICAgICBoaWVyYXJjaHk6ICcnLFxuICAgICAgICBsaW5rZWRfZGF0YV91cmk6ICcnLFxuICAgICAgICBodW1hbml0YXJpYW46ICcnLFxuICAgICAgICBidWRnZXRfbm90X3Byb3ZpZGVkOiAnJyxcbiAgICAgICAgZGVmYXVsdF9jb2xsYWJvcmF0aW9uX3R5cGU6ICcnLFxuICAgICAgICBkZWZhdWx0X2Zsb3dfdHlwZTogJycsXG4gICAgICAgIGRlZmF1bHRfZmluYW5jZV90eXBlOiAnJyxcbiAgICAgICAgZGVmYXVsdF9haWRfdHlwZTogJycsXG4gICAgICAgIGRlZmF1bHRfdGllZF9zdGF0dXM6ICcnLFxuICAgIH0sXG4gICAgcHVibGlzaGluZ0Vycm9yOiB7XG4gICAgICAgIGFwaV90b2tlbjogJycsXG4gICAgfSxcbiAgICBkZWZhdWx0RXJyb3I6IHtcbiAgICAgICAgZGVmYXVsdF9jdXJyZW5jeTogJycsXG4gICAgICAgIGRlZmF1bHRfbGFuZ3VhZ2U6ICcnLFxuICAgICAgICBoaWVyYXJjaHk6ICcnLFxuICAgICAgICBsaW5rZWRfZGF0YV91cmk6ICcnLFxuICAgICAgICBodW1hbml0YXJpYW46ICcnLFxuICAgICAgICBidWRnZXRfbm90X3Byb3ZpZGVkOiAnJyxcbiAgICAgICAgZGVmYXVsdF9jb2xsYWJvcmF0aW9uX3R5cGU6ICcnLFxuICAgICAgICBkZWZhdWx0X2Zsb3dfdHlwZTogJycsXG4gICAgICAgIGRlZmF1bHRfZmluYW5jZV90eXBlOiAnJyxcbiAgICAgICAgZGVmYXVsdF9haWRfdHlwZTogJycsXG4gICAgICAgIGRlZmF1bHRfdGllZF9zdGF0dXM6ICcnLFxuICAgIH0sXG4gICAgaXNMb2FkaW5nOiB7fSxcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuUmVwb3J0aW5nT3JnYW5pemF0aW9uID0gZXhwb3J0cy5QbGFubmVkRGlzYnVyc2VtZW50ID0gZXhwb3J0cy5IdW1hbml0YXJpYW5TY29wZSA9IGV4cG9ydHMuVGFnID0gZXhwb3J0cy5Qb2xpY3lNYXJrZXIgPSBleHBvcnRzLlJlbGF0ZWRBY3Rpdml0eSA9IGV4cG9ydHMuQ29uZGl0aW9ucyA9IGV4cG9ydHMuTGVnYWN5RGF0YSA9IGV4cG9ydHMuU2VjdG9yID0gZXhwb3J0cy5Mb2NhdGlvbiA9IGV4cG9ydHMuVHJhbnNhY3Rpb25zID0gZXhwb3J0cy5SZWNpcGllbnRSZWdpb24gPSBleHBvcnRzLlJlY2lwaWVudENvdW50cnkgPSBleHBvcnRzLlBhcnRpY2lwYXRpbmdPcmcgPSBleHBvcnRzLkNvbnRhY3RJbmZvID0gZXhwb3J0cy5BY3Rpdml0eURhdGUgPSBleHBvcnRzLkRlc2NyaXB0aW9uID0gZXhwb3J0cy5UaXRsZUVsZW1lbnQgPSBleHBvcnRzLk90aGVySWRlbnRpZmllciA9IGV4cG9ydHMuSWF0aUlkZW50aWZpZXIgPSBleHBvcnRzLlJlc3VsdCA9IHZvaWQgMDtcbi8vIFByb3h5IGV4cG9ydCBhbGwgcmVsYXRlZCBjb21wb25lbnRzLlxudmFyIFJlc3VsdF92dWVfMSA9IHJlcXVpcmUoXCIuL1Jlc3VsdC52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZXN1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZXN1bHRfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgSWF0aUlkZW50aWZpZXJfdnVlXzEgPSByZXF1aXJlKFwiLi9JYXRpSWRlbnRpZmllci52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJJYXRpSWRlbnRpZmllclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KElhdGlJZGVudGlmaWVyX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIE90aGVySWRlbnRpZmllcl92dWVfMSA9IHJlcXVpcmUoXCIuL090aGVySWRlbnRpZmllci52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJPdGhlcklkZW50aWZpZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChPdGhlcklkZW50aWZpZXJfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgVGl0bGVfdnVlXzEgPSByZXF1aXJlKFwiLi9UaXRsZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUaXRsZUVsZW1lbnRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChUaXRsZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBEZXNjcmlwdGlvbl92dWVfMSA9IHJlcXVpcmUoXCIuL0Rlc2NyaXB0aW9uLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkRlc2NyaXB0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoRGVzY3JpcHRpb25fdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgQWN0aXZpdHlEYXRlX3Z1ZV8xID0gcmVxdWlyZShcIi4vQWN0aXZpdHlEYXRlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkFjdGl2aXR5RGF0ZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KEFjdGl2aXR5RGF0ZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBDb250YWN0SW5mb192dWVfMSA9IHJlcXVpcmUoXCIuL0NvbnRhY3RJbmZvLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkNvbnRhY3RJbmZvXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoQ29udGFjdEluZm9fdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUGFydGljaXBhdGluZ09yZ192dWVfMSA9IHJlcXVpcmUoXCIuL1BhcnRpY2lwYXRpbmdPcmcudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUGFydGljaXBhdGluZ09yZ1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFBhcnRpY2lwYXRpbmdPcmdfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVjaXBpZW50Q291bnRyeV92dWVfMSA9IHJlcXVpcmUoXCIuL1JlY2lwaWVudENvdW50cnkudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVjaXBpZW50Q291bnRyeVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlY2lwaWVudENvdW50cnlfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVjaXBpZW50UmVnaW9uX3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVjaXBpZW50UmVnaW9uLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlY2lwaWVudFJlZ2lvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlY2lwaWVudFJlZ2lvbl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBUcmFuc2FjdGlvbnNfdnVlXzEgPSByZXF1aXJlKFwiLi9UcmFuc2FjdGlvbnMudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVHJhbnNhY3Rpb25zXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVHJhbnNhY3Rpb25zX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIExvY2F0aW9uX3Z1ZV8xID0gcmVxdWlyZShcIi4vTG9jYXRpb24udnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTG9jYXRpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChMb2NhdGlvbl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBTZWN0b3JfdnVlXzEgPSByZXF1aXJlKFwiLi9TZWN0b3IudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiU2VjdG9yXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoU2VjdG9yX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIExlZ2FjeURhdGFfdnVlXzEgPSByZXF1aXJlKFwiLi9MZWdhY3lEYXRhLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkxlZ2FjeURhdGFcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChMZWdhY3lEYXRhX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIENvbmRpdGlvbnNfdnVlXzEgPSByZXF1aXJlKFwiLi9Db25kaXRpb25zLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkNvbmRpdGlvbnNcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChDb25kaXRpb25zX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlbGF0ZWRBY3Rpdml0eV92dWVfMSA9IHJlcXVpcmUoXCIuL1JlbGF0ZWRBY3Rpdml0eS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZWxhdGVkQWN0aXZpdHlcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZWxhdGVkQWN0aXZpdHlfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUG9saWN5TWFya2VyX3Z1ZV8xID0gcmVxdWlyZShcIi4vUG9saWN5TWFya2VyLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlBvbGljeU1hcmtlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFBvbGljeU1hcmtlcl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBUYWdfdnVlXzEgPSByZXF1aXJlKFwiLi9UYWcudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVGFnXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVGFnX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIEh1bWFuaXRhcmlhblNjb3BlX3Z1ZV8xID0gcmVxdWlyZShcIi4vSHVtYW5pdGFyaWFuU2NvcGUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiSHVtYW5pdGFyaWFuU2NvcGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChIdW1hbml0YXJpYW5TY29wZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBQbGFubmVkRGlzYnVyc2VtZW50X3Z1ZV8xID0gcmVxdWlyZShcIi4vUGxhbm5lZERpc2J1cnNlbWVudC52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJQbGFubmVkRGlzYnVyc2VtZW50XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUGxhbm5lZERpc2J1cnNlbWVudF92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBSZXBvcnRpbmdPcmdhbml6YXRpb25fdnVlXzEgPSByZXF1aXJlKFwiLi9SZXBvcnRpbmdPcmdhbml6YXRpb24udnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVwb3J0aW5nT3JnYW5pemF0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVwb3J0aW5nT3JnYW5pemF0aW9uX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlBlcmlvZCA9IGV4cG9ydHMuQmFzZWxpbmUgPSBleHBvcnRzLkRvY3VtZW50TGluayA9IGV4cG9ydHMuUmVmZXJlbmNlID0gZXhwb3J0cy5EZXNjcmlwdGlvbiA9IGV4cG9ydHMuQWdncmVnYXRpb25TdGF0dXMgPSBleHBvcnRzLkFzY2VuZGluZyA9IGV4cG9ydHMuTWVhc3VyZSA9IGV4cG9ydHMuVGl0bGVFbGVtZW50ID0gdm9pZCAwO1xuLy8gUHJveHkgZXhwb3J0IGFsbCByZWxhdGVkIGNvbXBvbmVudHMuXG52YXIgVGl0bGVfdnVlXzEgPSByZXF1aXJlKFwiLi9UaXRsZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUaXRsZUVsZW1lbnRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChUaXRsZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBNZWFzdXJlX3Z1ZV8xID0gcmVxdWlyZShcIi4vTWVhc3VyZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJNZWFzdXJlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoTWVhc3VyZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBJbmRpY2F0b3JBc2NlbmRpbmdfdnVlXzEgPSByZXF1aXJlKFwiLi9JbmRpY2F0b3JBc2NlbmRpbmcudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQXNjZW5kaW5nXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoSW5kaWNhdG9yQXNjZW5kaW5nX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIEFnZ3JlZ2F0aW9uU3RhdHVzX3Z1ZV8xID0gcmVxdWlyZShcIi4vQWdncmVnYXRpb25TdGF0dXMudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQWdncmVnYXRpb25TdGF0dXNcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChBZ2dyZWdhdGlvblN0YXR1c192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBEZXNjcmlwdGlvbl92dWVfMSA9IHJlcXVpcmUoXCIuL0Rlc2NyaXB0aW9uLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkRlc2NyaXB0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoRGVzY3JpcHRpb25fdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVmZXJlbmNlX3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVmZXJlbmNlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlZmVyZW5jZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlZmVyZW5jZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBEb2N1bWVudExpbmtfdnVlXzEgPSByZXF1aXJlKFwiLi9Eb2N1bWVudExpbmsudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRG9jdW1lbnRMaW5rXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoRG9jdW1lbnRMaW5rX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIEJhc2VsaW5lX3Z1ZV8xID0gcmVxdWlyZShcIi4vQmFzZWxpbmUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQmFzZWxpbmVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChCYXNlbGluZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBQZXJpb2RfdnVlXzEgPSByZXF1aXJlKFwiLi9QZXJpb2QudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUGVyaW9kXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUGVyaW9kX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkFjdHVhbFZhbHVlID0gZXhwb3J0cy5UYXJnZXRWYWx1ZSA9IHZvaWQgMDtcbnZhciBUYXJnZXRWYWx1ZV92dWVfMSA9IHJlcXVpcmUoXCIuL1RhcmdldFZhbHVlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRhcmdldFZhbHVlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVGFyZ2V0VmFsdWVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgQWN0dWFsVmFsdWVfdnVlXzEgPSByZXF1aXJlKFwiLi9BY3R1YWxWYWx1ZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJBY3R1YWxWYWx1ZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KEFjdHVhbFZhbHVlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkluZGljYXRvciA9IGV4cG9ydHMuUmVzdWx0VHlwZSA9IGV4cG9ydHMuUmVmZXJlbmNlID0gZXhwb3J0cy5Eb2N1bWVudExpbmsgPSBleHBvcnRzLlRpdGxlRGVzY3JpcHRpb24gPSB2b2lkIDA7XG4vLyBQcm94eSBleHBvcnQgYWxsIHJlbGF0ZWQgY29tcG9uZW50cy5cbnZhciBUaXRsZURlc2NyaXB0aW9uX3Z1ZV8xID0gcmVxdWlyZShcIi4vVGl0bGVEZXNjcmlwdGlvbi52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUaXRsZURlc2NyaXB0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVGl0bGVEZXNjcmlwdGlvbl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBEb2N1bWVudExpbmtfdnVlXzEgPSByZXF1aXJlKFwiLi9Eb2N1bWVudExpbmsudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRG9jdW1lbnRMaW5rXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoRG9jdW1lbnRMaW5rX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlZmVyZW5jZV92dWVfMSA9IHJlcXVpcmUoXCIuL1JlZmVyZW5jZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZWZlcmVuY2VcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZWZlcmVuY2VfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVzdWx0VHlwZV92dWVfMSA9IHJlcXVpcmUoXCIuL1Jlc3VsdFR5cGUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVzdWx0VHlwZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlc3VsdFR5cGVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgSW5kaWNhdG9yX3Z1ZV8xID0gcmVxdWlyZShcIi4vSW5kaWNhdG9yLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkluZGljYXRvclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KEluZGljYXRvcl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5UaWVkU3RhdHVzID0gZXhwb3J0cy5GaW5hbmNlVHlwZSA9IGV4cG9ydHMuRmxvd1R5cGUgPSBleHBvcnRzLlJlY2lwaWVudFJlZ2lvbiA9IGV4cG9ydHMuUmVjaXBpZW50Q291bnRyeSA9IGV4cG9ydHMuU2VjdG9yID0gZXhwb3J0cy5EaXNidXJzZW1lbnRDaGFubmVsID0gZXhwb3J0cy5SZWNlaXZlck9yZ2FuaXphdGlvbiA9IGV4cG9ydHMuUHJvdmlkZXJPcmdhbml6YXRpb24gPSBleHBvcnRzLlZhbHVlID0gZXhwb3J0cy5UcmFuc2FjdGlvbkRhdGUgPSBleHBvcnRzLlRyYW5zYWN0aW9uVHlwZSA9IGV4cG9ydHMuQWlkVHlwZSA9IGV4cG9ydHMuRGVzY3JpcHRpb24gPSB2b2lkIDA7XG4vLyBQcm94eSBleHBvcnQgYWxsIHJlbGF0ZWQgY29tcG9uZW50cy5cbnZhciBEZXNjcmlwdGlvbl92dWVfMSA9IHJlcXVpcmUoXCIuL0Rlc2NyaXB0aW9uLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkRlc2NyaXB0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoRGVzY3JpcHRpb25fdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgQWlkVHlwZV92dWVfMSA9IHJlcXVpcmUoXCIuL0FpZFR5cGUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQWlkVHlwZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KEFpZFR5cGVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgVHJhbnNhY3Rpb25UeXBlX3Z1ZV8xID0gcmVxdWlyZShcIi4vVHJhbnNhY3Rpb25UeXBlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRyYW5zYWN0aW9uVHlwZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFRyYW5zYWN0aW9uVHlwZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBUcmFuc2FjdGlvbkRhdGVfdnVlXzEgPSByZXF1aXJlKFwiLi9UcmFuc2FjdGlvbkRhdGUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVHJhbnNhY3Rpb25EYXRlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVHJhbnNhY3Rpb25EYXRlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFZhbHVlX3Z1ZV8xID0gcmVxdWlyZShcIi4vVmFsdWUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVmFsdWVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChWYWx1ZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBQcm92aWRlck9yZ2FuaXphdGlvbl92dWVfMSA9IHJlcXVpcmUoXCIuL1Byb3ZpZGVyT3JnYW5pemF0aW9uLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlByb3ZpZGVyT3JnYW5pemF0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUHJvdmlkZXJPcmdhbml6YXRpb25fdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVjZWl2ZXJPcmdhbml6YXRpb25fdnVlXzEgPSByZXF1aXJlKFwiLi9SZWNlaXZlck9yZ2FuaXphdGlvbi52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZWNlaXZlck9yZ2FuaXphdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlY2VpdmVyT3JnYW5pemF0aW9uX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIERpc2J1cnNlbWVudENoYW5uZWxfdnVlXzEgPSByZXF1aXJlKFwiLi9EaXNidXJzZW1lbnRDaGFubmVsLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkRpc2J1cnNlbWVudENoYW5uZWxcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChEaXNidXJzZW1lbnRDaGFubmVsX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFNlY3Rvcl92dWVfMSA9IHJlcXVpcmUoXCIuL1NlY3Rvci52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJTZWN0b3JcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChTZWN0b3JfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVjaXBpZW50Q291bnRyeV92dWVfMSA9IHJlcXVpcmUoXCIuL1JlY2lwaWVudENvdW50cnkudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVjaXBpZW50Q291bnRyeVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlY2lwaWVudENvdW50cnlfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVjaXBpZW50UmVnaW9uX3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVjaXBpZW50UmVnaW9uLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlY2lwaWVudFJlZ2lvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlY2lwaWVudFJlZ2lvbl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBGbG93VHlwZV92dWVfMSA9IHJlcXVpcmUoXCIuL0Zsb3dUeXBlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkZsb3dUeXBlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoRmxvd1R5cGVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgRmluYW5jZVR5cGVfdnVlXzEgPSByZXF1aXJlKFwiLi9GaW5hbmNlVHlwZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJGaW5hbmNlVHlwZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KEZpbmFuY2VUeXBlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFRpZWRTdGF0dXNfdnVlXzEgPSByZXF1aXJlKFwiLi9UaWVkU3RhdHVzLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRpZWRTdGF0dXNcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChUaWVkU3RhdHVzX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkRvY3VtZW50TGluayA9IGV4cG9ydHMuVG90YWxFeHBlbmRpdHVyZSA9IGV4cG9ydHMuUmVjaXBpZW50Q291bnRyeUJ1ZGdldCA9IGV4cG9ydHMuUmVwb3J0aW5nUmVnaW9uQnVkZ2V0ID0gZXhwb3J0cy5SZXBvcnRpbmdPcmdCdWRnZXQgPSBleHBvcnRzLlRvdGFsQnVkZ2V0ID0gZXhwb3J0cy5SZXBvcnRpbmdPcmdhbmlzYXRpb24gPSB2b2lkIDA7XG4vLyBQcm94eSBleHBvcnQgYWxsIHJlbGF0ZWQgY29tcG9uZW50cy5cbnZhciBSZXBvcnRpbmdPcmdhbmlzYXRpb25fdnVlXzEgPSByZXF1aXJlKFwiLi9SZXBvcnRpbmdPcmdhbmlzYXRpb24udnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVwb3J0aW5nT3JnYW5pc2F0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVwb3J0aW5nT3JnYW5pc2F0aW9uX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFRvdGFsQnVkZ2V0X3Z1ZV8xID0gcmVxdWlyZShcIi4vVG90YWxCdWRnZXQudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVG90YWxCdWRnZXRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChUb3RhbEJ1ZGdldF92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBSZXBvcnRpbmdPcmdCdWRnZXRfdnVlXzEgPSByZXF1aXJlKFwiLi9SZXBvcnRpbmdPcmdCdWRnZXQudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVwb3J0aW5nT3JnQnVkZ2V0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVwb3J0aW5nT3JnQnVkZ2V0X3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlcG9ydGluZ1JlZ2lvbkJ1ZGdldF92dWVfMSA9IHJlcXVpcmUoXCIuL1JlcG9ydGluZ1JlZ2lvbkJ1ZGdldC52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZXBvcnRpbmdSZWdpb25CdWRnZXRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZXBvcnRpbmdSZWdpb25CdWRnZXRfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVjaXBpZW50Q291bnRyeUJ1ZGdldF92dWVfMSA9IHJlcXVpcmUoXCIuL1JlY2lwaWVudENvdW50cnlCdWRnZXQudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVjaXBpZW50Q291bnRyeUJ1ZGdldFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlY2lwaWVudENvdW50cnlCdWRnZXRfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgVG90YWxFeHBlbmRpdHVyZV92dWVfMSA9IHJlcXVpcmUoXCIuL1RvdGFsRXhwZW5kaXR1cmUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVG90YWxFeHBlbmRpdHVyZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFRvdGFsRXhwZW5kaXR1cmVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgRG9jdW1lbnRMaW5rX3Z1ZV8xID0gcmVxdWlyZShcIi4vRG9jdW1lbnRMaW5rLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkRvY3VtZW50TGlua1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KERvY3VtZW50TGlua192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbiIsIjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb24gY2xhc3M9XCJtYWluIG10LTEwIHNtOm14LTEwIHhsOm14LTI0IHhsOnB4LTFcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm1haW5fX2NvbnRhaW5lciByb3VuZGVkLWxnIGJnLWJsdWVjb3JhbCBwYi04IHNtOm1iLTEwIG1kOm1iLTIwIG1kOmZsZXggbWQ6Ymctbm9uZSBtZDpwYi0wXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibGVmdCBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1ibHVlY29yYWwgcHgtMyBwdC01IHBiLTcyIHRleHQtd2hpdGUgc206cm91bmRlZC1yLWxnIHNtOnJvdW5kZWQtbC1sZyBzbTpweC01IHNtOnB0LTEwIG1kOmJhc2lzLTIvNCBtZDpyb3VuZGVkLXItbm9uZSBtZDpwYi0xNiBsZzpwdC00NCBsZzpwYi00NCB4bDpweC0yNFwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0X19jb250YWluZXIgcm91bmRlZC1sZyBwLTUgc206cC0xMFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGVmdF9fdGl0bGUgaG9tZS10cmFuc2xhdGVkLXRleHQgZm9udC1ib2xkXCI+e3tcbiAgICAgICAgICAgIHRyYW5zbGF0ZS50ZXh0RnJvbUtleSgnaG9tZS5pYXRpX3B1Ymxpc2hpbmdfdG9vbF9oZWFkZXInKVxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgIDxwIGNsYXNzPVwiaG9tZS10cmFuc2xhdGVkLXRleHQgcHQtMiBzbTpwdC02IHNtOnBiLThcIj5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgIHRyYW5zbGF0ZS50ZXh0RnJvbUtleShcbiAgICAgICAgICAgICAgICAnaG9tZS5pYXRpX3B1Ymxpc2hpbmdfdG9vbF9zZWN0aW9uLndlbGNvbWVfdGV4dCdcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJsb2NrXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhvbWUtdHJhbnNsYXRlZC10ZXh0IGZsZXggZmxleC13cmFwXCI+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgcGFnZUNvbnRlbnQgPT09IHRyYW5zbGF0ZS53ZWJUZXh0KCdqb2luX25vdycpXG4gICAgICAgICAgICAgICAgICA/IHRyYW5zbGF0ZS50ZXh0RnJvbUtleShcbiAgICAgICAgICAgICAgICAgICAgICAnaG9tZS5pYXRpX3B1Ymxpc2hpbmdfdG9vbF9zZWN0aW9uLmhhdmVudF9yZWdpc3RlcmVkX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICA6IHRyYW5zbGF0ZS50ZXh0RnJvbUtleShcbiAgICAgICAgICAgICAgICAgICAgICAnaG9tZS5pYXRpX3B1Ymxpc2hpbmdfdG9vbF9zZWN0aW9uLmFscmVhZHlfaGF2ZV9hY2NvdW50X2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1sLTEgYm9yZGVyLWItMiBib3JkZXItYi10cmFuc3BhcmVudCB0ZXh0LWJhc2UgdGV4dC10dXJxdW9pc2UgaG92ZXI6Ym9yZGVyLWItMiBob3Zlcjpib3JkZXItYi10dXJxdW9pc2VcIlxuICAgICAgICAgICAgICAgIEBjbGljaz1cInRvZ2dsZVBhZ2VcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgcGFnZUNvbnRlbnQgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxTaWduSW5cbiAgICAgICAgdi1pZj1cInBhZ2VDb250ZW50ID09PSB0cmFuc2xhdGUud2ViVGV4dCgnam9pbl9ub3cnKVwiXG4gICAgICAgIDptZXNzYWdlPVwibWVzc2FnZVwiXG4gICAgICAgIDppbnRlbnQ9XCJpbnRlbnRcIlxuICAgICAgLz5cbiAgICAgIDxKb2luTm93IHYtZWxzZSAvPlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50LCByZWYgfSBmcm9tICd2dWUnO1xuaW1wb3J0IFNpZ25JbiBmcm9tICcuL3BhcnRpYWxzL1NpZ25Jbi52dWUnO1xuaW1wb3J0IEpvaW5Ob3cgZnJvbSAnLi9wYXJ0aWFscy9Kb2luTm93LnZ1ZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGUgfSBmcm9tICdDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyJztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgY29tcG9uZW50czoge1xuICAgIEpvaW5Ob3csXG4gICAgU2lnbkluLFxuICB9LFxuICBwcm9wczoge1xuICAgIHBhZ2U6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6ICdzaWduaW4nLFxuICAgIH0sXG4gICAgbWVzc2FnZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSxcbiAgICBpbnRlbnQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0sXG4gIH0sXG4gIHNldHVwKHByb3BzKSB7XG4gICAgY29uc3QgdHJhbnNsYXRlID0gbmV3IFRyYW5zbGF0ZSgpO1xuICAgIGNvbnN0IHBhZ2VDb250ZW50ID0gcmVmKFxuICAgICAgcHJvcHMucGFnZSA9PT0gJ3NpZ25pbidcbiAgICAgICAgPyB0cmFuc2xhdGUud2ViVGV4dCgnam9pbl9ub3cnKVxuICAgICAgICA6IHRyYW5zbGF0ZS53ZWJUZXh0KCdzaWduX2luJylcbiAgICApO1xuICAgIGZ1bmN0aW9uIHRvZ2dsZVBhZ2UoKSB7XG4gICAgICBwYWdlQ29udGVudC52YWx1ZSA9XG4gICAgICAgIHBhZ2VDb250ZW50LnZhbHVlID09PSB0cmFuc2xhdGUud2ViVGV4dCgnam9pbl9ub3cnKVxuICAgICAgICAgID8gdHJhbnNsYXRlLndlYlRleHQoJ3NpZ25faW4nKVxuICAgICAgICAgIDogdHJhbnNsYXRlLndlYlRleHQoJ2pvaW5fbm93Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBhZ2VDb250ZW50LFxuICAgICAgdG9nZ2xlUGFnZSxcbiAgICAgIHRyYW5zbGF0ZSxcbiAgICB9O1xuICB9LFxufSk7XG48L3NjcmlwdD5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInNoaW1tZXJfX2Jsb2NrXCIgc3R5bGU9XCJtYXgtd2lkdGg6IDUxNXB4XCI+PC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBzY29wZWQ+XG4uc2hpbW1lcl9fYmxvY2sge1xuICBhbmltYXRpb24tZHVyYXRpb246IDJzO1xuICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcbiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gIGFuaW1hdGlvbi1uYW1lOiBwbGFjZUhvbGRlclNoaW1tZXI7XG4gIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWRlZGVkO1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgOTBkZWcsXG4gICAgI2VkZWRlZCAxNC4zNiUsXG4gICAgI2Q3ZDZkNiA1Ni4yOSUsXG4gICAgI2VkZWRlZCAxMDAlXG4gICk7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtc2l6ZTogMjQ0cHggMTA0cHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxOXB4O1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luOiAzcHggNnB4IDNweCAwcHg7XG59XG5cbkBrZXlmcmFtZXMgcGxhY2VIb2xkZXJTaGltbWVyIHtcbiAgMCUge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMCUgLSAzMDBweCkgMDtcbiAgfVxuXG4gIDIwJSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2FsYygwJSAtIDMwMHB4KSAwO1xuICB9XG5cbiAgODAlIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDEwMCUgKyAzMDBweCkgMDtcbiAgfVxuXG4gIDEwMCUge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMTAwJSArIDMwMHB4KSAwO1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8c3BhbiBjbGFzcz1cImxvYWRlclwiPjwvc3Bhbj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPjwvc2NyaXB0PlxuPHN0eWxlPlxuLmxvYWRlciB7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGJvcmRlcjogM3B4IHNvbGlkICNkNWRjZGU7XG4gIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYW5pbWF0aW9uOiByb3RhdGlvbiAxcyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgcm90YXRpb24ge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgfVxufVxuPC9zdHlsZT5cbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiXFxuLmJvcmRlci10aGlzIHtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJlZDtcXG59XFxuLm1hcmdpbi0yMCB7XFxuICBtYXJnaW46IDIwcHg7XFxufVxcbi5mb290ZXItcmliYm9uIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xcbiAgcGFkZGluZzogOHB4IDIwcHg7XFxuICBiYWNrZ3JvdW5kOiAjZmZmZGU3O1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiO0FBb0pBO0VBQ0UscUJBQXFCO0FBQ3ZCO0FBQ0E7RUFDRSxZQUFZO0FBQ2Q7QUFFQTtFQUNFLGFBQWE7RUFDYix5QkFBeUI7RUFDekIsaUJBQWlCO0VBQ2pCLG1CQUFtQjtBQUNyQlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCI8dGVtcGxhdGU+XFxuICA8ZGl2IHJlZj1cXFwicHVibGlzaGVyVHlwZU11bHRpc2VsZWN0XFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwibWFyZ2luLTIwXFxcIj5cXG4gICAgICA8cCBjbGFzcz1cXFwibS0yIHBiLTIgdGV4dC14cyBmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtbi01MFxcXCI+XFxuICAgICAgICB7eyBwcm9wcy5oZWFkZXIgfX1cXG4gICAgICA8L3A+XFxuXFxuICAgICAgPGRpdiBjbGFzcz1cXFwic2VhcmNoXFxcIiBzdHlsZT1cXFwibWFyZ2luLXJpZ2h0OiA0cHggIWltcG9ydGFudFxcXCI+XFxuICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgdi1tb2RlbD1cXFwic2VhcmNoSW5wdXRcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJzZWFyY2hfX2lucHV0IG1yLTMuNVxcXCJcXG4gICAgICAgICAgdHlwZT1cXFwidGV4dFxcXCJcXG4gICAgICAgICAgOnBsYWNlaG9sZGVyPVxcXCJgU2VhcmNoICR7cHJvcHMuaGVhZGVyfS4uLmBcXFwiXFxuICAgICAgICAgIHN0eWxlPVxcXCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA0MHB4XFxcIlxcbiAgICAgICAgICBAaW5wdXQ9XFxcInVwZGF0ZUFycmF5QnlTZWFyY2goKVxcXCJcXG4gICAgICAgIC8+XFxuICAgICAgICA8c3ZnLXZ1ZSBpY29uPVxcXCJzZWFyY2hcXFwiIC8+XFxuICAgICAgPC9kaXY+XFxuXFxuICAgICAgPGRpdiBjbGFzcz1cXFwibXktMVxcXCI+XFxuICAgICAgICA8ZGl2IHYtaWY9XFxcInNob3dOb0RhdGFDb21wb25lbnRcXFwiIGNsYXNzPVxcXCJwLTUgdGV4dC1jZW50ZXIgY2FwaXRhbGl6ZVxcXCI+XFxuICAgICAgICAgIG5vIGRhdGEgZm91bmRcXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPHVsIHYtZWxzZSBjbGFzcz1cXFwibWF4LWgtWzM1MHB4XSBvdmVyZmxvdy15LXNjcm9sbFxcXCI+XFxuICAgICAgICAgIDxsaSB2LWZvcj1cXFwiaXRlbSBpbiB0ZW1wTGlzdEl0ZW1zXFxcIiA6a2V5PVxcXCJpdGVtLmtleVxcXCI+XFxuICAgICAgICAgICAgPGRpdiB2LWlmPVxcXCJpdGVtLnNob3dcXFwiIGNsYXNzPVxcXCJtdC0yXFxcIj5cXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJtLTJcXFwiPlxcbiAgICAgICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgICAgICA6aWQ9XFxcIml0ZW0ua2V5XFxcIlxcbiAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XFxcImNoZWNrZWRCb3hlc1xcXCJcXG4gICAgICAgICAgICAgICAgICB0eXBlPVxcXCJjaGVja2JveFxcXCJcXG4gICAgICAgICAgICAgICAgICA6dmFsdWU9XFxcIml0ZW0ua2V5XFxcIlxcbiAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVxcXCJtLTIgcHgtMyB0ZXh0LW4tNDBcXFwiIDpmb3I9XFxcIml0ZW0ua2V5XFxcIj57e1xcbiAgICAgICAgICAgICAgICBpdGVtLmxhYmVsXFxuICAgICAgICAgICAgICB9fTwvbGFiZWw+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDwvbGk+XFxuICAgICAgICA8L3VsPlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG5cXG4gICAgPGRpdiBjbGFzcz1cXFwiZm9vdGVyLXJpYmJvblxcXCIgc3R5bGU9XFxcIlxcXCI+XFxuICAgICAgPEJ0bkNvbXBvbmVudFxcbiAgICAgICAgY2xhc3M9XFxcInNwYWNlXFxcIlxcbiAgICAgICAgdGV4dD1cXFwiQXBwbHlcXFwiXFxuICAgICAgICB0eXBlPVxcXCJwcmltYXJ5XFxcIlxcbiAgICAgICAgQGNsaWNrPVxcXCJhcHBseUZpbHRlclxcXCJcXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIDwvZGl2PlxcbjwvdGVtcGxhdGU+XFxuPHNjcmlwdCBsYW5nPVxcXCJ0c1xcXCIgc2V0dXA+XFxuaW1wb3J0IHtcXG4gIGRlZmluZUVtaXRzLFxcbiAgZGVmaW5lUHJvcHMsXFxuICByZWYsXFxuICBvbk1vdW50ZWQsXFxuICBvbkJlZm9yZVVubW91bnQsXFxuICBjb21wdXRlZCxcXG59IGZyb20gJ3Z1ZSc7XFxuaW1wb3J0IEJ0bkNvbXBvbmVudCBmcm9tICdDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWUnO1xcblxcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xcbiAgbGlzdEl0ZW1zOiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgaGVhZGVyOiB7XFxuICAgIHR5cGU6IFN0cmluZyxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbn0pO1xcbmludGVyZmFjZSBUZW1wSXRlbSB7XFxuICBrZXk6IHN0cmluZztcXG4gIGxhYmVsOiBzdHJpbmc7XFxuICBzaG93OiBib29sZWFuO1xcbn1cXG5cXG5sZXQgdGVtcExpc3RJdGVtcyA9IHJlZjxUZW1wSXRlbVtdPihbXSk7XFxuY29uc3QgcHVibGlzaGVyVHlwZU11bHRpc2VsZWN0ID0gcmVmKCk7XFxuXFxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlU2VsZWN0ZWRQdWJsaXNoZXInLCAnY2xvc2UnXSk7XFxubGV0IGtleXMgPSBPYmplY3Qua2V5cyhwcm9wcy5saXN0SXRlbXMpO1xcbmxldCBzZWFyY2hJbnB1dCA9IHJlZignJyk7XFxubGV0IGNoZWNrZWRCb3hlcyA9IHJlZihbXSk7XFxuXFxubGV0IGNoYW5nZVNlbGVjdGVkUHVibGlzaGVyID0gKHNlbGVjdGVkUHVibGlzaGVyVHlwZSkgPT4ge1xcbiAgZW1pdCgnY2hhbmdlU2VsZWN0ZWRQdWJsaXNoZXInLCBzZWxlY3RlZFB1Ymxpc2hlclR5cGUpO1xcbn07XFxuXFxuZm9ybWF0UHVibGlzaGVyVHlwZSgpO1xcblxcbmZ1bmN0aW9uIGZvcm1hdFB1Ymxpc2hlclR5cGUoKSB7XFxuICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKHByb3BzLmxpc3RJdGVtcyk7XFxuICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcXG4gICAgdGVtcExpc3RJdGVtcy52YWx1ZS5wdXNoKHtcXG4gICAgICBrZXk6IGtleXNbaV0sXFxuICAgICAgbGFiZWw6IHByb3BzLmxpc3RJdGVtc1trZXlzW2ldXSxcXG4gICAgICBzaG93OiB0cnVlLFxcbiAgICB9KTtcXG4gIH1cXG59XFxub25Nb3VudGVkKCgpID0+IHtcXG4gIHB1Ymxpc2hlclR5cGVNdWx0aXNlbGVjdC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKFxcbiAgICAnY2xpY2snLFxcbiAgICBrZWVwUHVibGlzaGVyTW9kZWxPcGVuXFxuICApO1xcbn0pO1xcblxcbm9uQmVmb3JlVW5tb3VudCgoKSA9PiB7XFxuICBwdWJsaXNoZXJUeXBlTXVsdGlzZWxlY3QudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcXG4gICAgJ2NsaWNrJyxcXG4gICAga2VlcFB1Ymxpc2hlck1vZGVsT3BlblxcbiAgKTtcXG59KTtcXG5cXG5jb25zdCBzaG93Tm9EYXRhQ29tcG9uZW50ID0gY29tcHV0ZWQoKCkgPT4ge1xcbiAgbGV0IGNvdW50ID0gMDtcXG4gIHRlbXBMaXN0SXRlbXMudmFsdWUubWFwKChpdGVtKSA9PiB7XFxuICAgIGlmIChpdGVtLnNob3cpIHtcXG4gICAgICBjb3VudCsrO1xcbiAgICB9XFxuICB9KTtcXG4gIHJldHVybiAhY291bnQ7XFxufSk7XFxuXFxuY29uc3QgdXBkYXRlQXJyYXlCeVNlYXJjaCA9ICgpID0+IHtcXG4gIGxldCBzZWFyY2hTdHJpbmcgPSBzZWFyY2hJbnB1dC52YWx1ZS50b0xvd2VyQ2FzZSgpO1xcblxcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XFxuICAgIGxldCBpdGVtID0gdGVtcExpc3RJdGVtcy52YWx1ZVtpXTtcXG4gICAgdGVtcExpc3RJdGVtcy52YWx1ZVtpXS5zaG93ID0gaXRlbS5sYWJlbFxcbiAgICAgIC50b0xvd2VyQ2FzZSgpXFxuICAgICAgLmluY2x1ZGVzKHNlYXJjaFN0cmluZyk7XFxuICB9XFxufTtcXG5jb25zdCBrZWVwUHVibGlzaGVyTW9kZWxPcGVuID0gKGV2ZW50KSA9PiB7XFxuICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcXG59O1xcbmNvbnN0IGFwcGx5RmlsdGVyID0gKCkgPT4ge1xcbiAgZW1pdCgnY2xvc2UnKTtcXG5cXG4gIGNoYW5nZVNlbGVjdGVkUHVibGlzaGVyKGNoZWNrZWRCb3hlcy52YWx1ZSk7XFxufTtcXG48L3NjcmlwdD5cXG48c3R5bGU+XFxuLmJvcmRlci10aGlzIHtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJlZDtcXG59XFxuLm1hcmdpbi0yMCB7XFxuICBtYXJnaW46IDIwcHg7XFxufVxcblxcbi5mb290ZXItcmliYm9uIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xcbiAgcGFkZGluZzogOHB4IDIwcHg7XFxuICBiYWNrZ3JvdW5kOiAjZmZmZGU3O1xcbn1cXG48L3N0eWxlPlxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIlxcbi5jcml0aWNhbC1jb250YWluZXJbZGF0YS12LTM3NjE3NzAyXSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjZmMGZmO1xcbiAgei1pbmRleDogMTtcXG59XFxuLmNyaXRpY2FsLWNvbnRhaW5lcltkYXRhLXYtMzc2MTc3MDJdOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjb250ZW50OiAnICc7XFxuICB6LWluZGV4OiAxMDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNhNjZlZTk7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuLmVycm9yLWRyb3Bkb3duLWNvbnRhaW5lcltkYXRhLXYtMzc2MTc3MDJdLCBcXG4ud2FybmluZy1kcm9wZG93bi1jb250YWluZXJbZGF0YS12LTM3NjE3NzAyXSwgXFxuLmNyaXRpY2FsLWRyb3Bkb3duLWNvbnRhaW5lcltkYXRhLXYtMzc2MTc3MDJdIHtcXG4gIGhlaWdodDogMHB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IGFsbDtcXG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNTAwbXM7XFxufVxcbi53YXJuaW5nLWNvbnRhaW5lcltkYXRhLXYtMzc2MTc3MDJdIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHotaW5kZXg6IDE7XFxufVxcbi5lcnJvci1jb250YWluZXJbZGF0YS12LTM3NjE3NzAyXTo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgY29udGVudDogJyAnO1xcbiAgei1pbmRleDogMTA7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWNyaW1zb24tNDApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuLmVycm9yLWNvbnRhaW5lcltkYXRhLXYtMzc2MTc3MDJdIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHotaW5kZXg6IDE7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXJvc2UpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxufVxcbi53YXJuaW5nLWNvbnRhaW5lcltkYXRhLXYtMzc2MTc3MDJdOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjb250ZW50OiAnICc7XFxuICB6LWluZGV4OiAxMDtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tY2FtZWwtNDApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuLmVycm9yLWhlbHBbZGF0YS12LTM3NjE3NzAyXSB7XFxuICBmb250LXNpemU6IDEycHg7XFxuICBwYWRkaW5nLWxlZnQ6IDMwcHg7XFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgbWFyZ2luLWJvdHRvbTogMThweDtcXG4gIGJhY2tncm91bmQtY29sb3I6IG5vbmU7XFxufVxcbi5lcnJvci1kcm9wZG93bi1jb250YWluZXIgcFtkYXRhLXYtMzc2MTc3MDJdIHtcXG4gIGNvbG9yOiBibGFjaztcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xpc3RFcnJvci52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIjtBQW9WQTtFQUNFLGtCQUFrQjtFQUNsQix5QkFBeUI7RUFDekIsVUFBVTtBQUNaO0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsWUFBWTtFQUNaLFdBQVc7RUFDWCx5QkFBeUI7RUFDekIsWUFBWTtFQUNaLFVBQVU7RUFDVixPQUFPO0VBQ1AsTUFBTTtBQUNSO0FBS0U7OztFQUFBLFdBQXNEO0VBQXRELGdCQUFzRDtFQUF0RCx3QkFBc0Q7RUFBdEQsd0RBQXNEO0VBQXRELDBCQUFBO0FBQXNEO0FBR3hEO0VBQ0Usa0JBQWtCO0VBQ2xCLFVBQVU7QUFDWjtBQUVBO0VBQ0Usa0JBQWtCO0VBQ2xCLFlBQVk7RUFDWixXQUFXO0VBQ1gsa0JBQW9CO0VBQXBCLCtEQUFvQjtFQUNwQixZQUFZO0VBQ1osVUFBVTtFQUNWLE9BQU87RUFDUCxNQUFNO0FBQ1I7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixVQUFVO0VBRVYsa0JBQWM7RUFBZCx5REFBYztBQUNoQjtBQUVBO0VBQ0Usa0JBQWtCO0VBQ2xCLFlBQVk7RUFDWixXQUFXO0VBQ1gsa0JBQWtCO0VBQWxCLDZEQUFrQjtFQUNsQixZQUFZO0VBQ1osVUFBVTtFQUNWLE9BQU87RUFDUCxNQUFNO0FBQ1I7QUFFQTtFQUNFLGVBQWU7RUFDZixrQkFBa0I7RUFDbEIsa0JBQWtCO0VBQ2xCLGdCQUFnQjtFQUNoQixtQkFBbUI7RUFDbkIsc0JBQXNCO0FBQ3hCO0FBRUE7RUFDRSxZQUFZO0FBQ2RcIixcInNvdXJjZXNDb250ZW50XCI6W1wiPHRlbXBsYXRlPlxcbiAgPGRpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwiZmxleFxcXCI+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiZ3JvdXAgcmVsYXRpdmVcXFwiPlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICA6Y2xhc3M9XFxcInsgJ2ZvbnQtYm9sZCc6IGNvdW50RXJyb3JzKGluZGV4KSB9XFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiZ3JvdXAgbWF4LXctWzMwMHB4XSBvdmVyZmxvdy1oaWRkZW4gb3ZlcmZsb3cteC1oaWRkZW4gdGV4dC1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcCB0ZXh0LXNtIHVwcGVyY2FzZSB0ZXh0LW4tNTBcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIHt7IHRpdGxlIH19XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDxkaXZcXG4gICAgICAgICAgY2xhc3M9XFxcImFic29sdXRlIGxlZnQtWzgwJV0gdG9wLTAgei1bMTEwXSBoaWRkZW4gbWF4LXctWzUwMHB4XSBvdmVyZmxvdy14LXNjcm9sbCB3aGl0ZXNwYWNlLW5vd3JhcCByb3VuZGVkIGJnLWVnZ3NoZWxsIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtbm9ybWFsIHNoYWRvdy1zbSBncm91cC1ob3ZlcjpibG9ja1xcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAge3sgdGl0bGUgfX1cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcInRlY3QteHMgbXgtMyBmb250LW5vcm1hbCB0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgPHNwYW4gY2xhc3M9XFxcImNhcGl0YWxpemVcXFwiPiAoe3sgc3RhdHVzWyd0ZW1wbGF0ZSddIH19IElkZW50aWZpZXIgPC9zcGFuPlxcbiAgICAgICAgOiB7eyBhY3Rpdml0eS5pZGVudGlmaWVyIH19KVxcbiAgICAgIDwvZGl2PlxcbiAgICAgIDxzcGFuXFxuICAgICAgICB2LWlmPVxcXCJjb3VudEVycm9ycyhpbmRleCkgPiAwXFxcIlxcbiAgICAgICAgY2xhc3M9XFxcIm1sLTQgaW5saW5lLWZsZXggY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIHNwYWNlLXgtMiB0ZXh0LWNyaW1zb24tNTBcXFwiXFxuICAgICAgICBAY2xpY2s9XFxcIlxcbiAgICAgICAgICAoKSA9PiB7XFxuICAgICAgICAgICAgc2hvd0Vycm9ycyA9ICFzaG93RXJyb3JzO1xcbiAgICAgICAgICB9XFxuICAgICAgICBcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPHNwYW4+c2hvdyB7eyBjb3VudEVycm9ycyhpbmRleCkgfX0gZXJyb3I8L3NwYW4+XFxuICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidGV4dC1bNnB4XVxcXCIgaWNvbj1cXFwiZHJvcGRvd24tYXJyb3dcXFwiIC8+XFxuICAgICAgPC9zcGFuPlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiB2LWlmPVxcXCJzaG93RXJyb3JzXFxcIiBjbGFzcz1cXFwibXQtNiBweS0yIHB4LTdcXFwiPlxcbiAgICAgIDxkaXZcXG4gICAgICAgIHYtaWY9XFxcIk9iamVjdC5rZXlzKGFjdGl2aXR5WydlcnJvcnMnXSkuaW5kZXhPZignY3JpdGljYWwnKSAhPT0gLTFcXFwiXFxuICAgICAgICA6c3R5bGU9XFxcImB3aWR0aDogJHt3aWR0aCAtIDcwfXB4O2BcXFwiXFxuICAgICAgICBjbGFzcz1cXFwiY3JpdGljYWwtY29udGFpbmVyIG10LTIgY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICBAY2xpY2s9XFxcImNyaXRpY2FsQWNjb3JkaW9uVG9nZ2xlXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxkaXZcXG4gICAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBib3JkZXIgYm9yZGVyLW5vbmUgcC0zIHBiLTAuNVxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlxcXCI+XFxuICAgICAgICAgICAgPHN2Zy12dWUgY2xhc3M9XFxcInRleHQtY3JpbXNvbi00MFxcXCIgaWNvbj1cXFwiYWxlcnRcXFwiIC8+XFxuICAgICAgICAgICAgPHNwYW4+IHt7IGVycm9yTGVuZ3RoKCdjcml0aWNhbCcpIH19IENyaXRpY2FsIGVycm9yczwvc3Bhbj5cXG4gICAgICAgICAgPC9zcGFuPlxcblxcbiAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgIGljb249XFxcImRyb3Bkb3duLWFycm93XFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJtbC0xIGN1cnNvci1wb2ludGVyIHRleHQtWzRweF0gZHVyYXRpb24tMjAwXFxcIlxcbiAgICAgICAgICAgIDpjbGFzcz1cXFwieyAncm90YXRlLTE4MCc6IHNob3dDcml0aWNhbCwgJyc6ICFzaG93Q3JpdGljYWwgfVxcXCJcXG4gICAgICAgICAgLz5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItaGVscFxcXCI+XFxuICAgICAgICAgIChUaGUgYWN0aXZpdHkgY29udGFpbnMgY3JpdGljYWwgZXJyb3JzIGFuZCB0aHVzIGNhbm5vdCBiZSB1cGxvYWRlZCB0b1xcbiAgICAgICAgICB0aGUgc3lzdGVtLilcXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiY3JpdGljYWwtZHJvcGRvd24tY29udGFpbmVyXFxcIj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY3JpdGljYWwtZHJvcGRvd25cXFwiPlxcbiAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgIHYtZm9yPVxcXCIoZWxlX2VyciwgaSkgaW4gYWN0aXZpdHlbJ2Vycm9ycyddWydjcml0aWNhbCddXFxcIlxcbiAgICAgICAgICAgICAgOmtleT1cXFwiaVxcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJwLTRcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XFxcIm1iLTIgZm9udC1zZW1pYm9sZCBjYXBpdGFsaXplXFxcIj5cXG4gICAgICAgICAgICAgICAge3sgaSB9fVxcbiAgICAgICAgICAgICAgPC9wPlxcblxcbiAgICAgICAgICAgICAgPHBcXG4gICAgICAgICAgICAgICAgdi1mb3I9XFxcIml0ZW0gaW4gT2JqZWN0LmtleXMoZWxlX2VycilcXFwiXFxuICAgICAgICAgICAgICAgIDprZXk9XFxcIihpdGVtIGFzIHN0cmluZylcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJlcnJvci1saXN0IG1iLTIgdGV4dC1zbSBmb250LW1lZGl1bVxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAge3sgaXRlbS50b1N0cmluZygpLnJlcGxhY2UoL18vZywgJyAnKS5yZXBsYWNlKC9cXFxcLi9nLCAnID4gJykgfX1cXG4gICAgICAgICAgICAgICAgPGJyIC8+XFxuICAgICAgICAgICAgICAgIHt7IGVsZV9lcnJbaXRlbV0gfX1cXG4gICAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgICA8ZGl2XFxuICAgICAgICB2LWlmPVxcXCJcXG4gICAgICAgICAgYWN0aXZpdHlbJ2Vycm9ycyddICYmXFxuICAgICAgICAgIE9iamVjdC5rZXlzKGFjdGl2aXR5WydlcnJvcnMnXSkuaW5kZXhPZignZXJyb3InKSAhPT0gLTFcXG4gICAgICAgIFxcXCJcXG4gICAgICAgIDpzdHlsZT1cXFwiYHdpZHRoOiAke3dpZHRoIC0gNzB9cHg7YFxcXCJcXG4gICAgICAgIGNsYXNzPVxcXCJlcnJvci1jb250YWluZXIgbXQtMiBjdXJzb3ItcG9pbnRlclxcXCJcXG4gICAgICAgIEBjbGljaz1cXFwiZXJyb3JBY2NvcmRpb25Ub2dnbGVcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGJvcmRlciBib3JkZXItbm9uZSBiZy1yb3NlIHAtMyBwYi0wLjVcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcXFwiPlxcbiAgICAgICAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJ0ZXh0LWNyaW1zb24tNDBcXFwiIGljb249XFxcImFsZXJ0XFxcIiAvPlxcbiAgICAgICAgICAgIDxzcGFuPnt7IGVycm9yTGVuZ3RoKCdlcnJvcicpIH19IEVycm9yczwvc3Bhbj5cXG4gICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgIGljb249XFxcImRyb3Bkb3duLWFycm93XFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJtbC0xIGN1cnNvci1wb2ludGVyIHRleHQtWzRweF0gZHVyYXRpb24tMjAwXFxcIlxcbiAgICAgICAgICAgIDpjbGFzcz1cXFwieyAncm90YXRlLTE4MCc6IHNob3dFcnJvciwgJyc6ICFzaG93RXJyb3IgfVxcXCJcXG4gICAgICAgICAgLz5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItaGVscFxcXCI+XFxuICAgICAgICAgIChUaGUgYWN0aXZpdHkgd2l0aCB0aGUgZXJyb3JzIHdpbGwgYmUgdXBsb2FkZWQgdG8gb3VyIHN5c3RlbSwgYnV0IHRoZVxcbiAgICAgICAgICBmaWVsZCBjb250YWluaW5nIHRoZSBlcnJvciB3aWxsIGJlIHJlbW92ZWQuIFlvdSB3aWxsIG5lZWQgdG8gcmVmaWxsXFxuICAgICAgICAgIHRoZXNlIGZpZWxkcyB3aXRoIGNvcnJlY3QgZGF0YSBvbmNlIHRoZSBhY3Rpdml0eSBpcyB1cGxvYWRlZCB0byBvdXJcXG4gICAgICAgICAgc3lzdGVtLilcXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItZHJvcGRvd24tY29udGFpbmVyXFxcIj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItZHJvcGRvd25cXFwiPlxcbiAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgIHYtZm9yPVxcXCIoZWxlX2VyciwgaSkgaW4gYWN0aXZpdHlbJ2Vycm9ycyddWydlcnJvciddXFxcIlxcbiAgICAgICAgICAgICAgOmtleT1cXFwiaVxcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJ0ZXh0LXByaW1hcnktYmxhY2sgYmctcm9zZSBwLTRcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XFxcIm1iLTIgZm9udC1zZW1pYm9sZCBjYXBpdGFsaXplXFxcIj5cXG4gICAgICAgICAgICAgICAge3sgaSB9fVxcbiAgICAgICAgICAgICAgPC9wPlxcblxcbiAgICAgICAgICAgICAgPHBcXG4gICAgICAgICAgICAgICAgdi1mb3I9XFxcIml0ZW0gaW4gT2JqZWN0LmtleXMoZWxlX2VycilcXFwiXFxuICAgICAgICAgICAgICAgIDprZXk9XFxcIihpdGVtIGFzIHN0cmluZylcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJlcnJvci1saXN0IG1iLTIgdGV4dC1zbSBmb250LW1lZGl1bVxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAge3sgaXRlbS50b1N0cmluZygpLnJlcGxhY2UoL18vZywgJyAnKS5yZXBsYWNlKC9cXFxcLi9nLCAnID4gJykgfX1cXG4gICAgICAgICAgICAgICAgPGJyIC8+XFxuICAgICAgICAgICAgICAgIHt7IGVsZV9lcnJbaXRlbV0gfX1cXG4gICAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgICA8ZGl2XFxuICAgICAgICB2LWlmPVxcXCJcXG4gICAgICAgICAgYWN0aXZpdHlbJ2Vycm9ycyddICYmXFxuICAgICAgICAgIE9iamVjdC5rZXlzKGFjdGl2aXR5WydlcnJvcnMnXSkuaW5kZXhPZignd2FybmluZycpICE9PSAtMVxcbiAgICAgICAgXFxcIlxcbiAgICAgICAgOnN0eWxlPVxcXCJgd2lkdGg6ICR7d2lkdGggLSA3MH1weDtgXFxcIlxcbiAgICAgICAgY2xhc3M9XFxcIndhcm5pbmctY29udGFpbmVyIG15LTIgY3Vyc29yLXBvaW50ZXIgYm9yZGVyLW5vbmUgYmctZWdnc2hlbGxcXFwiXFxuICAgICAgICBAY2xpY2s9XFxcIndhcm5pbmdBY2NvcmRpb25Ub2dnbGVcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGJnLWVnZ3NoZWxsIHAtMyBwYi0wLjVcXFwiPlxcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yXFxcIj5cXG4gICAgICAgICAgICA8c3ZnLXZ1ZSBpY29uPVxcXCJhbGVydFxcXCIgY2xhc3M9XFxcInRleHQtY2FtZWwtNDBcXFwiIC8+PHNwYW4+XFxuICAgICAgICAgICAgICB7eyBlcnJvckxlbmd0aCgnd2FybmluZycpIH19IFdhcm5pbmdzPC9zcGFuXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgaWNvbj1cXFwiZHJvcGRvd24tYXJyb3dcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcIm1sLTEgY3Vyc29yLXBvaW50ZXIgdGV4dC1bNHB4XSBkdXJhdGlvbi0yMDBcXFwiXFxuICAgICAgICAgICAgOmNsYXNzPVxcXCJ7ICdyb3RhdGUtMTgwJzogc2hvd1dhcm5pbmcsICcnOiAhc2hvd1dhcm5pbmcgfVxcXCJcXG4gICAgICAgICAgLz5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItaGVscCBiZy1lZ2dzaGVsbFxcXCI+XFxuICAgICAgICAgIChUaGUgZmllbGQgd2l0aCB3YXJuaW5ncyB3aWxsIGJlIHVwbG9hZGVkIHRvIG91ciBzeXN0ZW0uIFRoZXNlIGZpZWxkc1xcbiAgICAgICAgICBjb250YWluIGRhdGEgdGhhdCBhcmUgYWdhaW5zdCB0aGUgcnVsZXMgb2YgdGhlIElBVEkgVmFsaWRhdG9yIGFuZCB3aWxsXFxuICAgICAgICAgIGNhdXNlIHZhbGlkYXRpb24gZXJyb3JzIHdoaWxlIHB1Ymxpc2hpbmcuKVxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ3YXJuaW5nLWRyb3Bkb3duLWNvbnRhaW5lclxcXCI+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcIndhcm5pbmctZHJvcGRvd25cXFwiPlxcbiAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgIHYtZm9yPVxcXCIoZWxlX2VyciwgaSkgaW4gYWN0aXZpdHlbJ2Vycm9ycyddWyd3YXJuaW5nJ11cXFwiXFxuICAgICAgICAgICAgICA6a2V5PVxcXCJpXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImJnLWVnZ3NoZWxsIHAtNFxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8cCBjbGFzcz1cXFwibWItMiBmb250LXNlbWlib2xkIGNhcGl0YWxpemVcXFwiPlxcbiAgICAgICAgICAgICAgICB7eyBpIH19XFxuICAgICAgICAgICAgICA8L3A+XFxuXFxuICAgICAgICAgICAgICA8cFxcbiAgICAgICAgICAgICAgICB2LWZvcj1cXFwiaXRlbSBpbiBPYmplY3Qua2V5cyhlbGVfZXJyKVxcXCJcXG4gICAgICAgICAgICAgICAgOmtleT1cXFwiKGl0ZW0gYXMgc3RyaW5nKVxcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImVycm9yLWxpc3QgbWItMiB0ZXh0LXNtIGZvbnQtbWVkaXVtXFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICB7eyBpdGVtLnRvU3RyaW5nKCkucmVwbGFjZSgvXy9nLCAnICcpLnJlcGxhY2UoL1xcXFwuL2csICcgPiAnKSB9fVxcbiAgICAgICAgICAgICAgICA8YnIgLz5cXG4gICAgICAgICAgICAgICAge3sgZWxlX2VycltpdGVtXSB9fVxcbiAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gIDwvZGl2PlxcbjwvdGVtcGxhdGU+XFxuPHNjcmlwdCBzZXR1cCBsYW5nPVxcXCJ0c1xcXCI+XFxuaW1wb3J0IHsgZGVmaW5lUHJvcHMsIGNvbXB1dGVkLCByZWYgfSBmcm9tICd2dWUnO1xcbmNvbnN0IHNob3dFcnJvcnMgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHNob3dDcml0aWNhbCA9IHJlZihmYWxzZSk7XFxuY29uc3QgY3JpdGljYWxUb2dnbGUgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHNob3dFcnJvciA9IHJlZihmYWxzZSk7XFxuY29uc3QgZXJyb3JUb2dnbGUgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHdhcm5pbmdUb2dnbGUgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHNob3dXYXJuaW5nID0gcmVmKGZhbHNlKTtcXG5cXG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzKHtcXG4gIC8vIE51bWJlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZVxcbiAgaW1wb3J0RGF0YToge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIHdpZHRoOiB7IHR5cGU6IE51bWJlciwgcmVxdWlyZWQ6IGZhbHNlLCBkZWZhdWx0OiAwIH0sXFxuICBhY3Rpdml0eToge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIGluZGV4OiB7XFxuICAgIHR5cGU6IE51bWJlcixcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgc3RhdHVzOiB7XFxuICAgIHR5cGU6IFN0cmluZyxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbn0pO1xcblxcbmNvbnN0IGVycm9yTGVuZ3RoID0gKGN1cnJlbnRFcnJvcikgPT4ge1xcbiAgbGV0IGNvdW50ID0gMDtcXG5cXG4gIHByb3BzLmFjdGl2aXR5Py5lcnJvcnNbY3VycmVudEVycm9yXSAmJlxcbiAgICBPYmplY3QudmFsdWVzKHByb3BzLmFjdGl2aXR5WydlcnJvcnMnXVtjdXJyZW50RXJyb3JdKT8ubWFwKChpdGVtKSA9PiB7XFxuICAgICAgY291bnQgKz0gT2JqZWN0LmtleXMoaXRlbSBhcyBvYmplY3QpLmxlbmd0aDtcXG4gICAgfSk7XFxuXFxuICByZXR1cm4gY291bnQ7XFxufTtcXG5jb25zdCB0aXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcXG4gIHN3aXRjaCAocHJvcHMuc3RhdHVzWyd0ZW1wbGF0ZSddKSB7XFxuICAgIGNhc2UgJ2FjdGl2aXR5JzpcXG4gICAgICByZXR1cm4gcHJvcHMuYWN0aXZpdHkuZGF0YS50aXRsZVxcbiAgICAgICAgPyBwcm9wcy5hY3Rpdml0eS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZSA/PyAnVW50aXRsZWQnXFxuICAgICAgICA6ICdVbnRpdGxlZCc7XFxuXFxuICAgIGNhc2UgJ3Jlc3VsdCc6XFxuICAgICAgcmV0dXJuIHByb3BzLmFjdGl2aXR5LmRhdGEudGl0bGVcXG4gICAgICAgID8gcHJvcHMuYWN0aXZpdHkuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddID8/ICdVbnRpdGxlZCdcXG4gICAgICAgIDogJ1VudGl0bGVkJztcXG4gICAgY2FzZSAncGVyaW9kJzpcXG4gICAgICByZXR1cm4gKFxcbiAgICAgICAgKHByb3BzLmFjdGl2aXR5LmRhdGEucGVyaW9kX3N0YXJ0ICYmXFxuICAgICAgICAgIHByb3BzLmFjdGl2aXR5LmRhdGEucGVyaW9kX3N0YXJ0WzBdLmRhdGUpICtcXG4gICAgICAgICcgLSAnICtcXG4gICAgICAgIChwcm9wcy5hY3Rpdml0eS5kYXRhLnBlcmlvZF9lbmQgJiZcXG4gICAgICAgICAgcHJvcHMuYWN0aXZpdHkuZGF0YS5wZXJpb2RfZW5kWzBdLmRhdGUpXFxuICAgICAgKTtcXG4gICAgY2FzZSAnaW5kaWNhdG9yJzpcXG4gICAgICByZXR1cm4gcHJvcHMuYWN0aXZpdHkuZGF0YS50aXRsZVxcbiAgICAgICAgPyBwcm9wcy5hY3Rpdml0eS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10gPz8gJ1VudGl0bGVkJ1xcbiAgICAgICAgOiAnVW50aXRsZWQnO1xcbiAgICBkZWZhdWx0OlxcbiAgICAgIHJldHVybiAnVW50aXRsZWQnO1xcbiAgfVxcbn0pO1xcblxcbmNvbnN0IGNvdW50RXJyb3JzID0gKGFjdGl2aXR5SW5kZXgpID0+IHtcXG4gIGxldCBjb3VudCA9IDA7XFxuICBmb3IgKGNvbnN0IHR5cGUgaW4gcHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ10pIHtcXG4gICAgZm9yIChjb25zdCBpbmRleCBpbiBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXVt0eXBlXSkge1xcbiAgICAgIGNvdW50ICs9XFxuICAgICAgICBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdICYmXFxuICAgICAgICBPYmplY3Qua2V5cyhwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXVt0eXBlXVtpbmRleF0pXFxuICAgICAgICAgIC5sZW5ndGg7XFxuICAgIH1cXG4gIH1cXG5cXG4gIHJldHVybiBjb3VudDtcXG59O1xcbmNvbnN0IGNyaXRpY2FsQWNjb3JkaW9uVG9nZ2xlID0gKGU6IEV2ZW50KSA9PiB7XFxuICBzaG93Q3JpdGljYWwudmFsdWUgPSAhc2hvd0NyaXRpY2FsLnZhbHVlO1xcbiAgY29uc3QgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcXG4gIGNvbnN0IHRhcmdldCA9IChcXG4gICAgY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50IGFzIEhUTUxFbGVtZW50XFxuICApLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcuY3JpdGljYWwtZHJvcGRvd24tY29udGFpbmVyJyk7XFxuICBjb25zdCBlbEhlaWdodCA9IHRhcmdldD8ucXVlcnlTZWxlY3RvcignLmNyaXRpY2FsLWRyb3Bkb3duJyk/LmNsaWVudEhlaWdodDtcXG5cXG4gIGlmIChjcml0aWNhbFRvZ2dsZS52YWx1ZSAmJiB0YXJnZXQgIT0gbnVsbCkge1xcbiAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBoZWlnaHQ6ICR7ZWxIZWlnaHR9cHg7YDtcXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XFxuICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgYDtcXG4gICAgfSwgMTAwKTtcXG4gICAgY3JpdGljYWxUb2dnbGUudmFsdWUgPSBmYWxzZTtcXG4gIH0gZWxzZSBpZiAodGFyZ2V0ICE9IG51bGwpIHtcXG4gICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiAke2VsSGVpZ2h0fXB4O2A7XFxuXFxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xcbiAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogYXV0bztgO1xcbiAgICB9LCA2MDApO1xcblxcbiAgICBjcml0aWNhbFRvZ2dsZS52YWx1ZSA9IHRydWU7XFxuICB9XFxufTtcXG5jb25zdCB3YXJuaW5nQWNjb3JkaW9uVG9nZ2xlID0gKGU6IEV2ZW50KSA9PiB7XFxuICBzaG93V2FybmluZy52YWx1ZSA9ICFzaG93V2FybmluZy52YWx1ZTtcXG4gIGNvbnN0IGN1cnJlbnRUYXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XFxuICBjb25zdCB0YXJnZXQgPSAoXFxuICAgIGN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCBhcyBIVE1MRWxlbWVudFxcbiAgKS5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLndhcm5pbmctZHJvcGRvd24tY29udGFpbmVyJyk7XFxuICBjb25zdCBlbEhlaWdodCA9IHRhcmdldD8ucXVlcnlTZWxlY3RvcignLndhcm5pbmctZHJvcGRvd24nKT8uY2xpZW50SGVpZ2h0O1xcbiAgaWYgKHdhcm5pbmdUb2dnbGUudmFsdWUgJiYgdGFyZ2V0ICE9IG51bGwpIHtcXG4gICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiAke2VsSGVpZ2h0fXB4O2A7XFxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xcbiAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGA7XFxuICAgIH0sIDEwMCk7XFxuICAgIHdhcm5pbmdUb2dnbGUudmFsdWUgPSBmYWxzZTtcXG4gIH0gZWxzZSBpZiAodGFyZ2V0ICE9IG51bGwpIHtcXG4gICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiAke2VsSGVpZ2h0fXB4O2A7XFxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xcbiAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogYXV0bztgO1xcbiAgICB9LCAxMDApO1xcblxcbiAgICB3YXJuaW5nVG9nZ2xlLnZhbHVlID0gdHJ1ZTtcXG4gIH1cXG59O1xcbmNvbnN0IGVycm9yQWNjb3JkaW9uVG9nZ2xlID0gKGU6IEV2ZW50KSA9PiB7XFxuICBzaG93RXJyb3IudmFsdWUgPSAhc2hvd0Vycm9yLnZhbHVlO1xcbiAgY29uc3QgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcXG4gIGNvbnN0IHRhcmdldCA9IChcXG4gICAgY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50IGFzIEhUTUxFbGVtZW50XFxuICApLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcuZXJyb3ItZHJvcGRvd24tY29udGFpbmVyJyk7XFxuICBjb25zdCBlbEhlaWdodCA9IHRhcmdldD8ucXVlcnlTZWxlY3RvcignLmVycm9yLWRyb3Bkb3duJyk/LmNsaWVudEhlaWdodDtcXG4gIGlmIChlcnJvclRvZ2dsZS52YWx1ZSAmJiB0YXJnZXQgIT0gbnVsbCkge1xcbiAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBoZWlnaHQ6ICR7ZWxIZWlnaHR9cHg7YDtcXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XFxuICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgYDtcXG4gICAgfSwgMTAwKTtcXG4gICAgZXJyb3JUb2dnbGUudmFsdWUgPSBmYWxzZTtcXG4gIH0gZWxzZSBpZiAodGFyZ2V0ICE9IG51bGwpIHtcXG4gICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiAke2VsSGVpZ2h0fXB4O2A7XFxuXFxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xcbiAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogYXV0bztgO1xcbiAgICB9LCA2MDApO1xcblxcbiAgICBlcnJvclRvZ2dsZS52YWx1ZSA9IHRydWU7XFxuICB9XFxufTtcXG48L3NjcmlwdD5cXG48c3R5bGUgc2NvcGVkPlxcbi5jcml0aWNhbC1jb250YWluZXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y2ZjBmZjtcXG4gIHotaW5kZXg6IDE7XFxufVxcblxcbi5jcml0aWNhbC1jb250YWluZXI6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGNvbnRlbnQ6ICcgJztcXG4gIHotaW5kZXg6IDEwO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2E2NmVlOTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAycHg7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbn1cXG5cXG4uZXJyb3ItZHJvcGRvd24tY29udGFpbmVyLFxcbi53YXJuaW5nLWRyb3Bkb3duLWNvbnRhaW5lcixcXG4uY3JpdGljYWwtZHJvcGRvd24tY29udGFpbmVyIHtcXG4gIEBhcHBseSBoLTAgb3ZlcmZsb3ctaGlkZGVuIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMDtcXG59XFxuXFxuLndhcm5pbmctY29udGFpbmVyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHotaW5kZXg6IDE7XFxufVxcblxcbi5lcnJvci1jb250YWluZXI6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGNvbnRlbnQ6ICcgJztcXG4gIHotaW5kZXg6IDEwO1xcbiAgQGFwcGx5IGJnLWNyaW1zb24tNDA7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuXFxuLmVycm9yLWNvbnRhaW5lciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB6LWluZGV4OiAxO1xcblxcbiAgQGFwcGx5IGJnLXJvc2U7XFxufVxcblxcbi53YXJuaW5nLWNvbnRhaW5lcjo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgY29udGVudDogJyAnO1xcbiAgei1pbmRleDogMTA7XFxuICBAYXBwbHkgYmctY2FtZWwtNDA7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuXFxuLmVycm9yLWhlbHAge1xcbiAgZm9udC1zaXplOiAxMnB4O1xcbiAgcGFkZGluZy1sZWZ0OiAzMHB4O1xcbiAgZm9udC1zdHlsZTogaXRhbGljO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIG1hcmdpbi1ib3R0b206IDE4cHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiBub25lO1xcbn1cXG5cXG4uZXJyb3ItZHJvcGRvd24tY29udGFpbmVyIHAge1xcbiAgY29sb3I6IGJsYWNrO1xcbn1cXG48L3N0eWxlPlxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIlxcbi5sb2FkZXIge1xcbiAgd2lkdGg6IDIwcHg7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBib3JkZXI6IDNweCBzb2xpZCAjZDVkY2RlO1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgYW5pbWF0aW9uOiByb3RhdGlvbiAxcyBsaW5lYXIgaW5maW5pdGU7XFxufVxcbkBrZXlmcmFtZXMgcm90YXRpb24ge1xcbjAlIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxufVxcbjEwMCUge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbn1cXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NwaW5uZXJMb2FkZXIudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCI7QUFLQTtFQUNFLFdBQVc7RUFDWCxZQUFZO0VBQ1oseUJBQXlCO0VBQ3pCLGdDQUFnQztFQUNoQyxrQkFBa0I7RUFDbEIscUJBQXFCO0VBQ3JCLHNCQUFzQjtFQUN0QixzQ0FBc0M7QUFDeEM7QUFFQTtBQUNFO0lBQ0UsdUJBQXVCO0FBQ3pCO0FBQ0E7SUFDRSx5QkFBeUI7QUFDM0I7QUFDRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCI8dGVtcGxhdGU+XFxuICA8c3BhbiBjbGFzcz1cXFwibG9hZGVyXFxcIj48L3NwYW4+XFxuPC90ZW1wbGF0ZT5cXG48c2NyaXB0IHNldHVwIGxhbmc9XFxcInRzXFxcIj48L3NjcmlwdD5cXG48c3R5bGU+XFxuLmxvYWRlciB7XFxuICB3aWR0aDogMjBweDtcXG4gIGhlaWdodDogMjBweDtcXG4gIGJvcmRlcjogM3B4IHNvbGlkICNkNWRjZGU7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBhbmltYXRpb246IHJvdGF0aW9uIDFzIGxpbmVhciBpbmZpbml0ZTtcXG59XFxuXFxuQGtleWZyYW1lcyByb3RhdGlvbiB7XFxuICAwJSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgfVxcbiAgMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICB9XFxufVxcbjwvc3R5bGU+XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiXFxuQGtleWZyYW1lcyBzcGlubmVyLTVkODRhMWQ4IHtcXG4wJSB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCkgcm90YXRlKDBkZWcpO1xcbn1cXG4xMDAlIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKSByb3RhdGUoMzYwZGVnKTtcXG59XFxufVxcbi5zcGluW2RhdGEtdi01ZDg0YTFkOF06OmJlZm9yZSB7XFxuICBhbmltYXRpb246IDEuNXMgbGluZWFyIGluZmluaXRlIHNwaW5uZXItNWQ4NGExZDg7XFxuICBhbmltYXRpb24tcGxheS1zdGF0ZTogaW5oZXJpdDtcXG4gIGJvcmRlcjogc29saWQgM3B4ICNjZmQwZDE7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiBncmV5O1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgY29udGVudDogJyc7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDUwJTtcXG4gIGxlZnQ6IDUwJTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCk7XFxuICB3aWR0aDogMjBweDtcXG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XFxufVxcbi5zcGluW2RhdGEtdi01ZDg0YTFkOF0ge1xcbiAgaGVpZ2h0OiA0MHB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXJnaW46IGF1dG87XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvVGFibGVMYXlvdXQudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCI7QUE2UUE7QUFDRTtJQUNFLGtEQUFrRDtBQUNwRDtBQUNBO0lBQ0Usb0RBQW9EO0FBQ3REO0FBQ0Y7QUFFQTtFQUNFLGdEQUF1QztFQUN2Qyw2QkFBNkI7RUFDN0IseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6QixrQkFBa0I7RUFDbEIsV0FBVztFQUNYLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIsUUFBUTtFQUNSLFNBQVM7RUFDVCxxQ0FBcUM7RUFDckMsV0FBVztFQUNYLHNCQUFzQjtBQUN4QjtBQUNBO0VBQ0UsWUFBWTtFQUNaLGtCQUFrQjtFQUNsQixXQUFXO0VBQ1gsWUFBWTtBQUNkXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIjx0ZW1wbGF0ZT5cXG4gIDxkaXYgY2xhc3M9XFxcImlhdGktbGlzdC10YWJsZSBtYi0xMFxcXCI+XFxuICAgIDx0YWJsZT5cXG4gICAgICA8dGhlYWQ+XFxuICAgICAgICA8dHIgY2xhc3M9XFxcImJnLW4tMTBcXFwiPlxcbiAgICAgICAgICA8dGggaWQ9XFxcInRpdGxlXFxcIiBzY29wZT1cXFwiY29sXFxcIj5cXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiYWN0aXZpdHktdHJhbnNsYXRlLXRleHRcXFwiPnt7XFxuICAgICAgICAgICAgICB0cmFuc2xhdGUuY29tbW9uVGV4dCgnYWN0aXZpdHlfdGl0bGUnKVxcbiAgICAgICAgICAgIH19PC9zcGFuPlxcbiAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICA8dGggaWQ9XFxcInB1Ymxpc2hpbmctcHJvZ3Jlc3NcXFwiIHNjb3BlPVxcXCJjb2xcXFwiIGNsYXNzPVxcXCJwcm9ncmVzcy1iYXItaGVhZGVyXFxcIj5cXG4gICAgICAgICAgICA8YVxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImZsZXgganVzdGlmeS1lbmQgdGV4dC1uLTUwIHRyYW5zaXRpb24gZHVyYXRpb24tNTAwIGhvdmVyOnRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgOmhyZWY9XFxcInNvcnRCeVB1Ymxpc2hpbmdQcm9ncmVzcygpXFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJzb3J0aW5nLWluZGljYXRvclxcXCIgOmNsYXNzPVxcXCJzb3J0aW5nRGlyZWN0aW9uKClcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3ZnLXZ1ZSA6aWNvbj1cXFwiYCR7c29ydGluZ0RpcmVjdGlvbigpfS1hcnJvd2BcXFwiIC8+XFxuICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiYWN0aXZpdHktdHJhbnNsYXRlLXRleHRcXFwiPnt7XFxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZS5jb21tb25UZXh0KCdwdWJsaXNoaW5nX3Byb2dyZXNzJylcXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxcbiAgICAgICAgICAgIDwvYT5cXG4gICAgICAgICAgPC90aD5cXG4gICAgICAgICAgPHRoIGlkPVxcXCJkYXRlXFxcIiBzY29wZT1cXFwiY29sXFxcIj5cXG4gICAgICAgICAgICA8YVxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcInRleHQtbi01MCB0cmFuc2l0aW9uIGR1cmF0aW9uLTUwMCBob3Zlcjp0ZXh0LXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICAgIDpocmVmPVxcXCJzb3J0QnlEYXRlVXJsKClcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInNvcnRpbmctaW5kaWNhdG9yXFxcIiA6Y2xhc3M9XFxcInNvcnRpbmdEaXJlY3Rpb24oKVxcXCI+XFxuICAgICAgICAgICAgICAgIDxzdmctdnVlIDppY29uPVxcXCJgJHtzb3J0aW5nRGlyZWN0aW9uKCl9LWFycm93YFxcXCIgLz5cXG4gICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJhY3Rpdml0eS10cmFuc2xhdGUtdGV4dFxcXCI+e3tcXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlLmNvbW1vblRleHQoJ3VwZGF0ZWRfb24nKVxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgPC9hPlxcbiAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICA8dGggaWQ9XFxcInN0YXR1c1xcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImFjdGl2aXR5LXRyYW5zbGF0ZS10ZXh0IGhpZGRlblxcXCI+e3tcXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZS5jb21tb25UZXh0KCdzdGF0dXMnKVxcbiAgICAgICAgICAgIH19PC9zcGFuPlxcbiAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICA8dGggaWQ9XFxcInB1Ymxpc2hcXFwiIHNjb3BlPVxcXCJjb2xcXFwiPlxcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJhY3Rpdml0eS10cmFuc2xhdGUtdGV4dCBoaWRkZW5cXFwiPnt7XFxuICAgICAgICAgICAgICB0cmFuc2xhdGUuY29tbW9uVGV4dCgncHVibGlzaCcpXFxuICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgIDx0aCBpZD1cXFwiY2JcXFwiIHNjb3BlPVxcXCJjb2xcXFwiPlxcbiAgICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICAgICAgICBAY2xpY2s9XFxcInRvZ2dsZVNlbGVjdEFsbChkYXRhLmRhdGEsIHNlbGVjdEFsbFZhbHVlKVxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8c3ZnLXZ1ZSBpY29uPVxcXCJjaGVja2JveFxcXCIgLz5cXG4gICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgIDwvdGg+XFxuICAgICAgICA8L3RyPlxcbiAgICAgIDwvdGhlYWQ+XFxuICAgICAgPHRib2R5IHYtaWY9XFxcImRhdGEudG90YWwgPiAwXFxcIj5cXG4gICAgICAgIDx0clxcbiAgICAgICAgICB2LWZvcj1cXFwiZGF0dW0gaW4gZGF0YS5kYXRhXFxcIlxcbiAgICAgICAgICA6a2V5PVxcXCJkYXR1bVsnaWQnXVxcXCJcXG4gICAgICAgICAgOmNsYXNzPVxcXCJ7XFxuICAgICAgICAgICAgJ2FscmVhZHktcHVibGlzaGVkJzpcXG4gICAgICAgICAgICAgIGRhdHVtWydsaW5rZWRfdG9faWF0aSddICYmIGRhdHVtWydzdGF0dXMnXSA9PT0gJ2RyYWZ0JyxcXG4gICAgICAgICAgfVxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPHRkIGNsYXNzPVxcXCJ0aXRsZVxcXCI+XFxuICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtc3RhcnQgdHJhbnNpdGlvbiBkdXJhdGlvbi01MDAgaG92ZXI6dGV4dC1zcHJpbmctNTBcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPFByZXZpb3VzbHlQdWJsaXNoZWRcXG4gICAgICAgICAgICAgICAgdi1pZj1cXFwiZGF0dW1bJ2xpbmtlZF90b19pYXRpJ10gJiYgZGF0dW1bJ3N0YXR1cyddID09PSAnZHJhZnQnXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiYWJzb2x1dGUgdG9wLTAgbGVmdC0wXFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImVsbGlwc2lzIHJlbGF0aXZlIHctZnVsbFxcXCI+XFxuICAgICAgICAgICAgICAgIDxhXFxuICAgICAgICAgICAgICAgICAgOmhyZWY9XFxcIicvYWN0aXZpdHkvJyArIGRhdHVtWydpZCddXFxcIlxcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJlbGxpcHNpcyB0cmFuc2xhdGUtdGV4dC1saW5rIHctZnVsbCAhbWF4LXctZnVsbCBvdmVyZmxvdy1oaWRkZW4gdGV4dC1uLTUwXFxcIlxcbiAgICAgICAgICAgICAgICAgID57e1xcbiAgICAgICAgICAgICAgICAgICAgZGF0dW1bJ2RlZmF1bHRfdGl0bGVfbmFycmF0aXZlJ10gJiZcXG4gICAgICAgICAgICAgICAgICAgIGRhdHVtWydkZWZhdWx0X3RpdGxlX25hcnJhdGl2ZSddICE9PSAnJ1xcbiAgICAgICAgICAgICAgICAgICAgICA/IGRhdHVtWydkZWZhdWx0X3RpdGxlX25hcnJhdGl2ZSddXFxuICAgICAgICAgICAgICAgICAgICAgIDogdHJhbnNsYXRlLmNvbW1vblRleHQoJ3VudGl0bGVkJylcXG4gICAgICAgICAgICAgICAgICB9fTwvYVxcbiAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInctNTJcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJlbGxpcHNpc19fdGl0bGUtLWhvdmVyIHRyYW5zbGF0ZS10ZXh0LWhvdmVyXFxcIj57e1xcbiAgICAgICAgICAgICAgICAgICAgZGF0dW1bJ2RlZmF1bHRfdGl0bGVfbmFycmF0aXZlJ10gJiZcXG4gICAgICAgICAgICAgICAgICAgIGRhdHVtWydkZWZhdWx0X3RpdGxlX25hcnJhdGl2ZSddICE9PSAnJ1xcbiAgICAgICAgICAgICAgICAgICAgICA/IGRhdHVtWydkZWZhdWx0X3RpdGxlX25hcnJhdGl2ZSddXFxuICAgICAgICAgICAgICAgICAgICAgIDogdHJhbnNsYXRlLmNvbW1vblRleHQoJ3VudGl0bGVkJylcXG4gICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC90ZD5cXG5cXG4gICAgICAgICAgPHRkIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInByb2dyZXNzLWJhci1wYXJlbnRcXFwiPlxcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicHJvZ3Jlc3MtYmFyLXdyYXBwZXJcXFwiPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJwcm9ncmVzcy1iYXItY29udGFpbmVyIGJnLXNwcmluZy0xMFxcXCI+XFxuICAgICAgICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInByb2dyZXNzLWJhci1maWxsIGJnLXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICAgICAgICAgIDpzdHlsZT1cXFwieyB3aWR0aDogZGF0dW1bJ2NvbXBsZXRlX3BlcmNlbnRhZ2UnXSArICclJyB9XFxcIlxcbiAgICAgICAgICAgICAgICAgID48L2Rpdj5cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInByb2dyZXNzLWJhci1udW1iZXJcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgICAgID57eyBkYXR1bVsnY29tcGxldGVfcGVyY2VudGFnZSddIH19JTwvc3BhblxcbiAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC90ZD5cXG5cXG4gICAgICAgICAgPHRkIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgIHt7IGZvcm1hdERhdGUoZGF0dW0udXBkYXRlZF9hdCkgfX1cXG4gICAgICAgICAgPC90ZD5cXG5cXG4gICAgICAgICAgPHRkPlxcbiAgICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgdHJhbnNpdGlvbiBkdXJhdGlvbi01MDAgaG92ZXI6dGV4dC1zcHJpbmctNTBcXFwiXFxuICAgICAgICAgICAgICA6Y2xhc3M9XFxcIntcXG4gICAgICAgICAgICAgICAgJ3RleHQtbi00MCc6IGRhdHVtWydzdGF0dXMnXSA9PT0gJ2RyYWZ0JyxcXG4gICAgICAgICAgICAgICAgJ3RleHQtc3ByaW5nLTUwJzogZGF0dW1bJ3N0YXR1cyddID09PSAncHVibGlzaGVkJyxcXG4gICAgICAgICAgICAgIH1cXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcIm1yLTEgdGV4dC1iYXNlXFxcIj5cXG4gICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICA6aWNvbj1cXFwiXFxuICAgICAgICAgICAgICAgICAgICBkYXR1bVsnc3RhdHVzJ10gPT09ICdkcmFmdCcgPyAnZG9jdW1lbnQtd3JpdGUnIDogJ3RpY2snXFxuICAgICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImFjdGl2aXR5LXRyYW5zbGF0ZS10ZXh0IHRleHQtc20gbGVhZGluZy1yZWxheGVkXFxcIj5cXG4gICAgICAgICAgICAgICAge3tcXG4gICAgICAgICAgICAgICAgICB0cmFuc2xhdGUudGV4dEZyb21LZXkoXFxuICAgICAgICAgICAgICAgICAgICBgYWN0aXZpdGllcy5zdGF0dXNfbGFiZWxzLiR7ZGF0dW1bJ3N0YXR1cyddfWBcXG4gICAgICAgICAgICAgICAgICApXFxuICAgICAgICAgICAgICAgIH19PC9zcGFuXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgIDwvdGQ+XFxuXFxuICAgICAgICAgIDx0ZD5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGZsZXgtd3JhcCBnYXAtMlxcXCI+XFxuICAgICAgICAgICAgICA8VW5QdWJsaXNoXFxuICAgICAgICAgICAgICAgIHYtaWY9XFxcImRhdHVtLmxpbmtlZF90b19pYXRpXFxcIlxcbiAgICAgICAgICAgICAgICB0eXBlPVxcXCJvdXRsaW5lXFxcIlxcbiAgICAgICAgICAgICAgICA6YWN0aXZpdHktaWQ9XFxcImRhdHVtWydpZCddXFxcIlxcbiAgICAgICAgICAgICAgLz5cXG5cXG4gICAgICAgICAgICAgIDxQdWJsaXNoXFxuICAgICAgICAgICAgICAgIHYtaWY9XFxcImRhdHVtWydzdGF0dXMnXSAhPT0gJ3B1Ymxpc2hlZCdcXFwiXFxuICAgICAgICAgICAgICAgIDpsaW5rZWQtdG8taWF0aT1cXFwiZGF0dW0ubGlua2VkX3RvX2lhdGlcXFwiXFxuICAgICAgICAgICAgICAgIDpzdGF0dXM9XFxcImRhdHVtLnN0YXR1c1xcXCJcXG4gICAgICAgICAgICAgICAgOmNvcmUtY29tcGxldGVkPVxcXCJkYXR1bS5jb3JlQ29tcGxldGVkXFxcIlxcbiAgICAgICAgICAgICAgICB0eXBlPVxcXCJvdXRsaW5lXFxcIlxcbiAgICAgICAgICAgICAgICA6YWN0aXZpdHktaWQ9XFxcImRhdHVtWydpZCddXFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC90ZD5cXG5cXG4gICAgICAgICAgPHRoXFxuICAgICAgICAgICAgY2xhc3M9XFxcImNoZWNrLWNvbHVtblxcXCJcXG4gICAgICAgICAgICBAY2xpY2s9XFxcIihldmVudDogRXZlbnQpID0+IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVxcXCJ0cmFuc2xhdGUtdGV4dCBzci1vbmx5XFxcIiBmb3I9XFxcIlxcXCI+XFxuICAgICAgICAgICAgICB7eyB0cmFuc2xhdGUuY29tbW9uVGV4dCgnc2VsZWN0JykgfX0gXFxcInt7XFxuICAgICAgICAgICAgICAgIGRhdHVtWydkZWZhdWx0X3RpdGxlX25hcnJhdGl2ZSddXFxuICAgICAgICAgICAgICB9fVxcXCJcXG4gICAgICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cXFwiY2hlY2tib3hcXFwiPlxcbiAgICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICAgIHYtbW9kZWw9XFxcInN0b3JlLnN0YXRlLnNlbGVjdGVkQWN0aXZpdGllc1xcXCJcXG4gICAgICAgICAgICAgICAgOnZhbHVlPVxcXCJkYXR1bS5pZFxcXCJcXG4gICAgICAgICAgICAgICAgdHlwZT1cXFwiY2hlY2tib3hcXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImNoZWNrbWFya1xcXCIgLz5cXG4gICAgICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgICA8L3RoPlxcbiAgICAgICAgPC90cj5cXG4gICAgICA8L3Rib2R5PlxcbiAgICAgIDx0Ym9keSB2LWVsc2U+XFxuICAgICAgICA8dGQgdi1pZj1cXFwibG9hZGVyXFxcIiBjb2xzcGFuPVxcXCI1XFxcIiBjbGFzcz1cXFwidGV4dC1jZW50ZXJcXFwiPlxcbiAgICAgICAgICA8ZGl2IGNvbHNwYW49XFxcIjVcXFwiIGNsYXNzPVxcXCJzcGluXFxcIj48L2Rpdj5cXG4gICAgICAgIDwvdGQ+XFxuICAgICAgICA8dGQgdi1lbHNlIGNvbHNwYW49XFxcIjVcXFwiIGNsYXNzPVxcXCJ0cmFuc2xhdGUtdGV4dCB0ZXh0LWNlbnRlclxcXCI+XFxuICAgICAgICAgIHt7IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdhY3Rpdml0aWVzX25vdF9mb3VuZCcpIH19XFxuICAgICAgICA8L3RkPlxcbiAgICAgIDwvdGJvZHk+XFxuICAgIDwvdGFibGU+XFxuICA8L2Rpdj5cXG48L3RlbXBsYXRlPlxcblxcbjxzY3JpcHQgc2V0dXAgbGFuZz1cXFwidHNcXFwiPlxcbmltcG9ydCB7IGRlZmluZVByb3BzIH0gZnJvbSAndnVlJztcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XFxuaW1wb3J0IHsgdXNlVG9nZ2xlIH0gZnJvbSAnQHZ1ZXVzZS9jb3JlJztcXG5cXG4vLyBWdWV4IFN0b3JlXFxuaW1wb3J0IHsgdXNlU3RvcmUgfSBmcm9tICdTdG9yZS9hY3Rpdml0aWVzL2luZGV4JztcXG5cXG5pbXBvcnQgUHJldmlvdXNseVB1Ymxpc2hlZCBmcm9tICdDb21wb25lbnRzL3N0YXR1cy9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZSc7XFxuaW1wb3J0IFB1Ymxpc2ggZnJvbSAnQ29tcG9uZW50cy9idXR0b25zL1B1Ymxpc2hCdXR0b24udnVlJztcXG5pbXBvcnQgVW5QdWJsaXNoIGZyb20gJ0NvbXBvbmVudHMvYnV0dG9ucy9VblB1Ymxpc2hCdXR0b24udnVlJztcXG5pbXBvcnQgeyBUcmFuc2xhdGUgfSBmcm9tICdDb21wb3NhYmxlL3RyYW5zbGF0aW9uSGVscGVyJztcXG4vLyBpbXBvcnQgU2hpbW1lciBmcm9tIFxcXCJDb21wb25lbnRzL1NoaW1tZXJMb2FkaW5nLnZ1ZVxcXCI7XFxuY29uc3QgdHJhbnNsYXRlID0gbmV3IFRyYW5zbGF0ZSgpO1xcbmNvbnN0IFtzZWxlY3RBbGxWYWx1ZSwgc2VsZWN0QWxsVG9nZ2xlXSA9IHVzZVRvZ2dsZSgpO1xcblxcbmRlZmluZVByb3BzKHtcXG4gIGRhdGE6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxcbiAgbG9hZGVyOiB7IHR5cGU6IEJvb2xlYW4sIHJlcXVpcmVkOiBmYWxzZSB9LFxcbn0pO1xcblxcbmNvbnN0IHN0b3JlID0gdXNlU3RvcmUoKTtcXG5cXG5mdW5jdGlvbiBmb3JtYXREYXRlKGRhdGU6IERhdGUpIHtcXG4gIHJldHVybiBtb21lbnQoZGF0ZSkuZnJvbU5vdygpO1xcbn1cXG5cXG5mdW5jdGlvbiB0b2dnbGVTZWxlY3RBbGwoXFxuICBhY3Rpdml0aWVzOiB7IFt4OiBzdHJpbmddOiB7IGlkOiBudW1iZXIgfSB9LFxcbiAgc2VsZWN0QWxsVmFsdWU6IGJvb2xlYW5cXG4pIHtcXG4gIGlmICghc2VsZWN0QWxsVmFsdWUpIHtcXG4gICAgbGV0IGlkcyA9IFtdIGFzIG51bWJlcltdO1xcbiAgICBmb3IgKGNvbnN0IGRhdHVtIGluIGFjdGl2aXRpZXMpIHtcXG4gICAgICBpZHMucHVzaChhY3Rpdml0aWVzW2RhdHVtXS5pZCk7XFxuICAgIH1cXG4gICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVNlbGVjdGVkQWN0aXZpdGllcycsIGlkcyk7XFxuICB9IGVsc2Uge1xcbiAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU2VsZWN0ZWRBY3Rpdml0aWVzJywgW10pO1xcbiAgfVxcbiAgc2VsZWN0QWxsVG9nZ2xlKCk7XFxufVxcblxcbi8vU29ydGluZyBieSB1cGRhdGVfYXRcXG5jb25zdCBjdXJyZW50VVJMID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XFxubGV0IHF1ZXJ5ID0gJycsXFxuICBkaXJlY3Rpb24gPSAnYXNjJztcXG5cXG5jb25zdCBzb3J0aW5nRGlyZWN0aW9uID0gKCkgPT4ge1xcbiAgcmV0dXJuIGRpcmVjdGlvbiA9PT0gJ2FzYycgPyAnZGVzY2VuZGluZycgOiAnYXNjZW5kaW5nJztcXG59O1xcblxcbmNvbnN0IHNvcnRCeVB1Ymxpc2hpbmdQcm9ncmVzcyA9ICgpID0+IHtcXG4gIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykpIHtcXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLFxcbiAgICAgIHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocXVlcnlTdHJpbmcpO1xcbiAgICBxdWVyeSA9IHVybFBhcmFtcy5nZXQoJ3EnKSA/PyAnJztcXG4gICAgZGlyZWN0aW9uID0gdXJsUGFyYW1zLmdldCgnZGlyZWN0aW9uJykgPT09ICdkZXNjJyA/ICdhc2MnIDogJ2Rlc2MnO1xcbiAgfVxcblxcbiAgcmV0dXJuIGA/cT0ke3F1ZXJ5fSZvcmRlckJ5PWNvbXBsZXRlX3BlcmNlbnRhZ2UmZGlyZWN0aW9uPSR7ZGlyZWN0aW9ufWA7XFxufTtcXG5cXG5jb25zdCBzb3J0QnlEYXRlVXJsID0gKCkgPT4ge1xcbiAgaWYgKGN1cnJlbnRVUkwuaW5jbHVkZXMoJz8nKSkge1xcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gsXFxuICAgICAgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyk7XFxuICAgIHF1ZXJ5ID0gdXJsUGFyYW1zLmdldCgncScpID8/ICcnO1xcbiAgICBkaXJlY3Rpb24gPSB1cmxQYXJhbXMuZ2V0KCdkaXJlY3Rpb24nKSA9PT0gJ2Rlc2MnID8gJ2FzYycgOiAnZGVzYyc7XFxuICB9XFxuXFxuICByZXR1cm4gYD9xPSR7cXVlcnl9Jm9yZGVyQnk9dXBkYXRlZF9hdCZkaXJlY3Rpb249JHtkaXJlY3Rpb259YDtcXG59O1xcbjwvc2NyaXB0PlxcbjxzdHlsZSBzY29wZWQ+XFxuQGtleWZyYW1lcyBzcGlubmVyIHtcXG4gIDAlIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKSByb3RhdGUoMGRlZyk7XFxuICB9XFxuICAxMDAlIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKSByb3RhdGUoMzYwZGVnKTtcXG4gIH1cXG59XFxuXFxuLnNwaW46OmJlZm9yZSB7XFxuICBhbmltYXRpb246IDEuNXMgbGluZWFyIGluZmluaXRlIHNwaW5uZXI7XFxuICBhbmltYXRpb24tcGxheS1zdGF0ZTogaW5oZXJpdDtcXG4gIGJvcmRlcjogc29saWQgM3B4ICNjZmQwZDE7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiBncmV5O1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgY29udGVudDogJyc7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDUwJTtcXG4gIGxlZnQ6IDUwJTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCk7XFxuICB3aWR0aDogMjBweDtcXG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XFxufVxcbi5zcGluIHtcXG4gIGhlaWdodDogNDBweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgbWFyZ2luOiBhdXRvO1xcbn1cXG48L3N0eWxlPlxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIlxcbi5jcml0aWNhbC1jb250YWluZXJbZGF0YS12LTlhNjA4NDMyXSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjZmMGZmO1xcbiAgei1pbmRleDogMTtcXG59XFxuLmNyaXRpY2FsLWNvbnRhaW5lcltkYXRhLXYtOWE2MDg0MzJdOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjb250ZW50OiAnICc7XFxuICB6LWluZGV4OiAxMDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNhNjZlZTk7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuLmVycm9yLWRyb3Bkb3duLWNvbnRhaW5lcltkYXRhLXYtOWE2MDg0MzJdLCBcXG4ud2FybmluZy1kcm9wZG93bi1jb250YWluZXJbZGF0YS12LTlhNjA4NDMyXSwgXFxuLmNyaXRpY2FsLWRyb3Bkb3duLWNvbnRhaW5lcltkYXRhLXYtOWE2MDg0MzJdIHtcXG4gIGhlaWdodDogMHB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IGFsbDtcXG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNTAwbXM7XFxufVxcbi53YXJuaW5nLWNvbnRhaW5lcltkYXRhLXYtOWE2MDg0MzJdIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHotaW5kZXg6IDE7XFxufVxcbi5lcnJvci1jb250YWluZXJbZGF0YS12LTlhNjA4NDMyXTo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgY29udGVudDogJyAnO1xcbiAgei1pbmRleDogMTA7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWNyaW1zb24tNDApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuLmVycm9yLWNvbnRhaW5lcltkYXRhLXYtOWE2MDg0MzJdIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHotaW5kZXg6IDE7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXJvc2UpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxufVxcbi53YXJuaW5nLWNvbnRhaW5lcltkYXRhLXYtOWE2MDg0MzJdOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjb250ZW50OiAnICc7XFxuICB6LWluZGV4OiAxMDtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tY2FtZWwtNDApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuLmVycm9yLWhlbHBbZGF0YS12LTlhNjA4NDMyXSB7XFxuICBmb250LXNpemU6IDEycHg7XFxuICBwYWRkaW5nLWxlZnQ6IDMwcHg7XFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgbWFyZ2luLWJvdHRvbTogMThweDtcXG4gIGJhY2tncm91bmQtY29sb3I6IG5vbmU7XFxufVxcbi5lcnJvci1kcm9wZG93bi1jb250YWluZXIgcFtkYXRhLXYtOWE2MDg0MzJdIHtcXG4gIGNvbG9yOiBibGFjaztcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvTGlzdEVsZW1lbnQudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCI7QUF3WUE7RUFDRSxrQkFBa0I7RUFDbEIseUJBQXlCO0VBQ3pCLFVBQVU7QUFDWjtBQUVBO0VBQ0Usa0JBQWtCO0VBQ2xCLFlBQVk7RUFDWixXQUFXO0VBQ1gseUJBQXlCO0VBQ3pCLFlBQVk7RUFDWixVQUFVO0VBQ1YsT0FBTztFQUNQLE1BQU07QUFDUjtBQUtFOzs7RUFBQSxXQUFzRDtFQUF0RCxnQkFBc0Q7RUFBdEQsd0JBQXNEO0VBQXRELHdEQUFzRDtFQUF0RCwwQkFBQTtBQUFzRDtBQUd4RDtFQUNFLGtCQUFrQjtFQUNsQixVQUFVO0FBQ1o7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixZQUFZO0VBQ1osV0FBVztFQUNYLGtCQUFvQjtFQUFwQiwrREFBb0I7RUFDcEIsWUFBWTtFQUNaLFVBQVU7RUFDVixPQUFPO0VBQ1AsTUFBTTtBQUNSO0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsVUFBVTtFQUVWLGtCQUFjO0VBQWQseURBQWM7QUFDaEI7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixZQUFZO0VBQ1osV0FBVztFQUNYLGtCQUFrQjtFQUFsQiw2REFBa0I7RUFDbEIsWUFBWTtFQUNaLFVBQVU7RUFDVixPQUFPO0VBQ1AsTUFBTTtBQUNSO0FBRUE7RUFDRSxlQUFlO0VBQ2Ysa0JBQWtCO0VBQ2xCLGtCQUFrQjtFQUNsQixnQkFBZ0I7RUFDaEIsbUJBQW1CO0VBQ25CLHNCQUFzQjtBQUN4QjtBQUNBO0VBQ0UsWUFBWTtBQUNkXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIjx0ZW1wbGF0ZT5cXG4gIDx0ZCBjbGFzcz1cXFwidGl0bGVcXFwiPlxcbiAgICA8c3BhbiBjbGFzcz1cXFwiZmxleFxcXCI+XFxuICAgICAgPHNwYW5cXG4gICAgICAgIGNsYXNzPVxcXCJlbGxpcHNpcyAhaW5saW5lLWJsb2NrIHctWzQwMHB4XSBvdmVyZmxvdy14LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwIGZvbnQtbm9ybWFsXFxcIlxcbiAgICAgICAgPnt7XFxuICAgICAgICAgIGFjdGl2aXR5WydkYXRhJ11bJ3RpdGxlJ11bMF1bJ25hcnJhdGl2ZSddXFxuICAgICAgICAgICAgPyBhY3Rpdml0eVsnZGF0YSddWyd0aXRsZSddWzBdWyduYXJyYXRpdmUnXVxcbiAgICAgICAgICAgIDogdHJhbnNsYXRlLm1pc3NpbmcoKVxcbiAgICAgICAgfX08L3NwYW5cXG4gICAgICA+XFxuXFxuICAgICAgPHNwYW5cXG4gICAgICAgIHYtaWY9XFxcIk9iamVjdC5rZXlzKGFjdGl2aXR5WydlcnJvcnMnXSkubGVuZ3RoID4gMFxcXCJcXG4gICAgICAgIGNsYXNzPVxcXCJtYi00IG1sLTQgaW5saW5lLWZsZXggY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1jcmltc29uLTUwXFxcIlxcbiAgICAgICAgQGNsaWNrPVxcXCJ0b2dnbGVFcnJvclxcXCJcXG4gICAgICA+XFxuICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yXFxcIj5cXG4gICAgICAgICAgPHN2Zy12dWUgY2xhc3M9XFxcInRleHQtY3JpbXNvbi00MFxcXCIgaWNvbj1cXFwiYWxlcnRcXFwiIC8+XFxuICAgICAgICAgIDxzcGFuPlxcbiAgICAgICAgICAgIHt7IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdzaG93JykgfX0ge3sgY291bnRFcnJvcnMoKSB9fVxcbiAgICAgICAgICAgIHt7IHRyYW5zbGF0ZS5idXR0b24oJ2lzc3VlcycpIH19PC9zcGFuXFxuICAgICAgICAgID5cXG4gICAgICAgIDwvc3Bhbj5cXG5cXG4gICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgIGljb249XFxcImRyb3Bkb3duLWFycm93XFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwibWwtMSB0ZXh0LVs0cHhdIGR1cmF0aW9uLTIwMFxcXCJcXG4gICAgICAgICAgOmNsYXNzPVxcXCJ7ICdyb3RhdGUtMTgwJzogYWN0aXZlLCAnJzogIWFjdGl2ZSB9XFxcIlxcbiAgICAgICAgLz4gPC9zcGFuXFxuICAgID48L3NwYW4+XFxuXFxuICAgIDxkaXZcXG4gICAgICA6c3R5bGU9XFxcImB3aWR0aDogJHt3aWR0aCAtIDQwfXB4O2BcXFwiXFxuICAgICAgY2xhc3M9XFxcInVwbG9hZC1lcnJvci1jb250ZW50IGgtW2F1dG9dICFtYXgtaC1bYXV0b10gZHVyYXRpb24tMjAwXFxcIlxcbiAgICAgIDpjbGFzcz1cXFwieyBjbG9zZWQ6ICFhY3RpdmUgfVxcXCJcXG4gICAgPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcInB5LTRcXFwiPlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICB2LWlmPVxcXCJPYmplY3Qua2V5cyhhY3Rpdml0eVsnZXJyb3JzJ10pLmluZGV4T2YoJ2NyaXRpY2FsJykgIT09IC0xXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiY3JpdGljYWwtY29udGFpbmVyIG10LTIgY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICAgIDpzdHlsZT1cXFwiYHdpZHRoOiAke3dpZHRoIC0gNDB9cHg7YFxcXCJcXG4gICAgICAgICAgQGNsaWNrPVxcXCJjcml0aWNhbEFjY29yZGlvblRvZ2dsZVxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gYm9yZGVyIGJvcmRlci1ub25lIHAtMyBwYi0wLjVcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yXFxcIj5cXG4gICAgICAgICAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJ0ZXh0LWNyaW1zb24tNDBcXFwiIGljb249XFxcImFsZXJ0XFxcIiAvPlxcbiAgICAgICAgICAgICAgPHNwYW4+XFxuICAgICAgICAgICAgICAgIHt7IGVycm9yTGVuZ3RoKCdjcml0aWNhbCcpIH19XFxuICAgICAgICAgICAgICAgIHt7IHRyYW5zbGF0ZS5zdGlja3lUZXh0KCdjcml0aWNhbCcsICdjb21tb24nKSB9fVxcbiAgICAgICAgICAgICAgICB7eyB0cmFuc2xhdGUuc3RpY2t5VGV4dCgnZXJyb3JzJywgJ2NvbW1vbicpIH19PC9zcGFuXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgPC9zcGFuPlxcblxcbiAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICBpY29uPVxcXCJkcm9wZG93bi1hcnJvd1xcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJtbC0xIGN1cnNvci1wb2ludGVyIHRleHQtWzRweF0gZHVyYXRpb24tMjAwXFxcIlxcbiAgICAgICAgICAgICAgOmNsYXNzPVxcXCJ7ICdyb3RhdGUtMTgwJzogc2hvd0NyaXRpY2FsLCAnJzogIXNob3dDcml0aWNhbCB9XFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlcnJvci1oZWxwXFxcIj5cXG4gICAgICAgICAgICAoe3sgdHJhbnNsYXRlLmNvbW1vblRleHQoJ2FjdGl2aXR5X2NvbnRhaW5zX2NyaXRpY2FsX2Vycm9ycycpIH19KVxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY3JpdGljYWwtZHJvcGRvd24tY29udGFpbmVyXFxcIj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjcml0aWNhbC1kcm9wZG93blxcXCI+XFxuICAgICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICAgIHYtZm9yPVxcXCIoZWxlX2VyciwgaSkgaW4gYWN0aXZpdHlbJ2Vycm9ycyddWydjcml0aWNhbCddXFxcIlxcbiAgICAgICAgICAgICAgICA6a2V5PVxcXCJpXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwicC00XFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cXFwibWItMiBmb250LXNlbWlib2xkIGNhcGl0YWxpemVcXFwiPlxcbiAgICAgICAgICAgICAgICAgIHt7IGkgfX1cXG4gICAgICAgICAgICAgICAgPC9wPlxcblxcbiAgICAgICAgICAgICAgICA8cFxcbiAgICAgICAgICAgICAgICAgIHYtZm9yPVxcXCJpdGVtIGluIE9iamVjdC5rZXlzKGVsZV9lcnIpXFxcIlxcbiAgICAgICAgICAgICAgICAgIDprZXk9XFxcIihpdGVtIGFzIHN0cmluZylcXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImVycm9yLWxpc3QgbWItMiB0ZXh0LXNtIGZvbnQtbWVkaXVtXFxcIlxcbiAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAge3sgaXRlbS50b1N0cmluZygpLnJlcGxhY2UoL18vZywgJyAnKS5yZXBsYWNlKC9cXFxcLi9nLCAnID4gJykgfX1cXG4gICAgICAgICAgICAgICAgICA8YnIgLz5cXG4gICAgICAgICAgICAgICAgICB7eyBlbGVfZXJyW2l0ZW1dIH19XFxuICAgICAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICB2LWlmPVxcXCJPYmplY3Qua2V5cyhhY3Rpdml0eVsnZXJyb3JzJ10pLmluZGV4T2YoJ2Vycm9yJykgIT09IC0xXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiZXJyb3ItY29udGFpbmVyIG10LTIgY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICAgIDpzdHlsZT1cXFwiYHdpZHRoOiAke3dpZHRoIC0gNDB9cHg7YFxcXCJcXG4gICAgICAgICAgQGNsaWNrPVxcXCJlcnJvckFjY29yZGlvblRvZ2dsZVxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gYm9yZGVyIGJvcmRlci1ub25lIGJnLXJvc2UgcC0zIHBiLTAuNVxcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcXFwiPlxcbiAgICAgICAgICAgICAgPHN2Zy12dWUgY2xhc3M9XFxcInRleHQtY3JpbXNvbi00MFxcXCIgaWNvbj1cXFwiYWxlcnRcXFwiIC8+XFxuICAgICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgICA+e3sgZXJyb3JMZW5ndGgoJ2Vycm9yJykgfX1cXG4gICAgICAgICAgICAgICAge3sgdHJhbnNsYXRlLnN0aWNreVRleHQoJ2Vycm9ycycsICdjb21tb24nKSB9fTwvc3BhblxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgaWNvbj1cXFwiZHJvcGRvd24tYXJyb3dcXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibWwtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LVs0cHhdIGR1cmF0aW9uLTIwMFxcXCJcXG4gICAgICAgICAgICAgIDpjbGFzcz1cXFwieyAncm90YXRlLTE4MCc6IHNob3dFcnJvciwgJyc6ICFzaG93RXJyb3IgfVxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItaGVscFxcXCI+XFxuICAgICAgICAgICAgKHt7XFxuICAgICAgICAgICAgICB0cmFuc2xhdGUuY29tbW9uVGV4dCgnYWN0aXZpdGllc193aXRoX2Vycm9yX3dpbGxfYmVfdXBsb2FkZWQnKVxcbiAgICAgICAgICAgIH19KVxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItZHJvcGRvd24tY29udGFpbmVyXFxcIj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlcnJvci1kcm9wZG93blxcXCI+XFxuICAgICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICAgIHYtZm9yPVxcXCIoZWxlX2VyciwgaSkgaW4gYWN0aXZpdHlbJ2Vycm9ycyddWydlcnJvciddXFxcIlxcbiAgICAgICAgICAgICAgICA6a2V5PVxcXCJpXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwidGV4dC1wcmltYXJ5LWJsYWNrIGJnLXJvc2UgcC00XFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cXFwibWItMiBmb250LXNlbWlib2xkIGNhcGl0YWxpemVcXFwiPlxcbiAgICAgICAgICAgICAgICAgIHt7IGkgfX1cXG4gICAgICAgICAgICAgICAgPC9wPlxcblxcbiAgICAgICAgICAgICAgICA8cFxcbiAgICAgICAgICAgICAgICAgIHYtZm9yPVxcXCJpdGVtIGluIE9iamVjdC5rZXlzKGVsZV9lcnIpXFxcIlxcbiAgICAgICAgICAgICAgICAgIDprZXk9XFxcIihpdGVtIGFzIHN0cmluZylcXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImVycm9yLWxpc3QgbWItMiB0ZXh0LXNtIGZvbnQtbWVkaXVtXFxcIlxcbiAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAge3sgaXRlbS50b1N0cmluZygpLnJlcGxhY2UoL18vZywgJyAnKS5yZXBsYWNlKC9cXFxcLi9nLCAnID4gJykgfX1cXG4gICAgICAgICAgICAgICAgICA8YnIgLz5cXG4gICAgICAgICAgICAgICAgICB7eyBlbGVfZXJyW2l0ZW1dIH19XFxuICAgICAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICB2LWlmPVxcXCJPYmplY3Qua2V5cyhhY3Rpdml0eVsnZXJyb3JzJ10pLmluZGV4T2YoJ3dhcm5pbmcnKSAhPT0gLTFcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJ3YXJuaW5nLWNvbnRhaW5lciBteS0yIGN1cnNvci1wb2ludGVyIGJvcmRlci1ub25lIGJnLWVnZ3NoZWxsXFxcIlxcbiAgICAgICAgICA6c3R5bGU9XFxcImB3aWR0aDogJHt3aWR0aCAtIDQwfXB4O2BcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwid2FybmluZ0FjY29yZGlvblRvZ2dsZVxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGJnLWVnZ3NoZWxsIHAtMyBwYi0wLjVcXFwiPlxcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcXFwiPlxcbiAgICAgICAgICAgICAgPHN2Zy12dWUgaWNvbj1cXFwiYWxlcnRcXFwiIGNsYXNzPVxcXCJ0ZXh0LWNhbWVsLTQwXFxcIiAvPjxzcGFuPlxcbiAgICAgICAgICAgICAgICB7eyBlcnJvckxlbmd0aCgnd2FybmluZycpIH19XFxuICAgICAgICAgICAgICAgIHt7IHRyYW5zbGF0ZS5zdGlja3lUZXh0KCd3YXJuaW5ncycsICdjb21tb24nKSB9fTwvc3BhblxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgaWNvbj1cXFwiZHJvcGRvd24tYXJyb3dcXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibWwtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LVs0cHhdIGR1cmF0aW9uLTIwMFxcXCJcXG4gICAgICAgICAgICAgIDpjbGFzcz1cXFwieyAncm90YXRlLTE4MCc6IHNob3dXYXJuaW5nLCAnJzogIXNob3dXYXJuaW5nIH1cXFwiXFxuICAgICAgICAgICAgLz5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImVycm9yLWhlbHAgYmctZWdnc2hlbGxcXFwiPlxcbiAgICAgICAgICAgICh7eyB0cmFuc2xhdGUuY29tbW9uVGV4dCgnZmllbGRfd2l0aF93YXJuaW5nX3dpbGxfYmVfdXBsb2FkZWQnKSB9fSlcXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcIndhcm5pbmctZHJvcGRvd24tY29udGFpbmVyXFxcIj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ3YXJuaW5nLWRyb3Bkb3duXFxcIj5cXG4gICAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgICAgdi1mb3I9XFxcIihlbGVfZXJyLCBpKSBpbiBhY3Rpdml0eVsnZXJyb3JzJ11bJ3dhcm5pbmcnXVxcXCJcXG4gICAgICAgICAgICAgICAgOmtleT1cXFwiaVxcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImJnLWVnZ3NoZWxsIHAtNFxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XFxcIm1iLTIgZm9udC1zZW1pYm9sZCBjYXBpdGFsaXplXFxcIj5cXG4gICAgICAgICAgICAgICAgICB7eyBpIH19XFxuICAgICAgICAgICAgICAgIDwvcD5cXG5cXG4gICAgICAgICAgICAgICAgPHBcXG4gICAgICAgICAgICAgICAgICB2LWZvcj1cXFwiaXRlbSBpbiBPYmplY3Qua2V5cyhlbGVfZXJyKVxcXCJcXG4gICAgICAgICAgICAgICAgICA6a2V5PVxcXCIoaXRlbSBhcyBzdHJpbmcpXFxcIlxcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJlcnJvci1saXN0IG1iLTIgdGV4dC1zbSBmb250LW1lZGl1bVxcXCJcXG4gICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udG9TdHJpbmcoKS5yZXBsYWNlKC9fL2csICcgJykucmVwbGFjZSgvXFxcXC4vZywgJyA+ICcpIH19XFxuICAgICAgICAgICAgICAgICAgPGJyIC8+XFxuICAgICAgICAgICAgICAgICAge3sgZWxlX2VycltpdGVtXSB9fVxcbiAgICAgICAgICAgICAgICA8L3A+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgICA8IS0tIDxkaXYgdi1mb3I9XFxcIihlbGVfZXJyLCBpKSBpbiBhY3Rpdml0eVsnZXJyb3JzJ11cXFwiIDprZXk9XFxcImlcXFwiPlxcbiAgICAgICAgPHVsPlxcbiAgICAgICAgICA8bGkgdi1mb3I9XFxcIihlcnIsIGtleSwgaikgaW4gZWxlX2VyclxcXCIgOmtleT1cXFwialxcXCI+XFxuICAgICAgICAgICAgPHAgY2xhc3M9XFxcIm1iLTIgZm9udC1zZW1pYm9sZCBjYXBpdGFsaXplXFxcIj5cXG4gICAgICAgICAgICAgIHt7IGtleS50b1N0cmluZygpLnJlcGxhY2UoL18vZywgJyAnKS5yZXBsYWNlKC9cXFxcLi9nLCAnID4gJykgfX1cXG4gICAgICAgICAgICA8L3A+XFxuICAgICAgICAgICAgPHBcXG4gICAgICAgICAgICAgIHYtZm9yPVxcXCJpdGVtIGluIE9iamVjdC52YWx1ZXMoZXJyKVxcXCJcXG4gICAgICAgICAgICAgIDprZXk9XFxcIihpdGVtIGFzIHN0cmluZylcXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiZXJyb3ItbGlzdCBtYi0yXFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIHt7IGl0ZW0gfX1cXG4gICAgICAgICAgICA8L3A+XFxuICAgICAgICAgIDwvbGk+XFxuICAgICAgICA8L3VsPlxcbiAgICAgIDwvZGl2PiAtLT5cXG4gICAgPC9kaXY+XFxuICA8L3RkPlxcblxcbiAgPHRkPlxcbiAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1zbSBsZWFkaW5nLXJlbGF4ZWRcXFwiPnt7XFxuICAgICAgIWFjdGl2aXR5WydleGlzdGVuY2UnXVxcbiAgICAgICAgPyB0cmFuc2xhdGUuY29tbW9uVGV4dCgnbmV3JylcXG4gICAgICAgIDogdHJhbnNsYXRlLmNvbW1vblRleHQoJ2V4aXN0aW5nJylcXG4gICAgfX08L3NwYW4+XFxuICA8L3RkPlxcblxcbiAgPHRkIGNsYXNzPVxcXCJjaGVjay1jb2x1bW5cXFwiIEBjbGljaz1cXFwiKGV2ZW50OiBFdmVudCkgPT4gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcXFwiPlxcbiAgICA8bGFiZWwgY2xhc3M9XFxcInNyLW9ubHlcXFwiIGZvcj1cXFwiXFxcIj4ge3sgdHJhbnNsYXRlLmNvbW1vblRleHQoJ3NlbGVjdCcpIH19IDwvbGFiZWw+XFxuICAgIDxsYWJlbFxcbiAgICAgIHYtaWY9XFxcIk9iamVjdC5rZXlzKGFjdGl2aXR5WydlcnJvcnMnXSkuaW5kZXhPZignY3JpdGljYWwnKSA9PT0gLTFcXFwiXFxuICAgICAgY2xhc3M9XFxcImNoZWNrYm94XFxcIlxcbiAgICA+XFxuICAgICAgPGlucHV0XFxuICAgICAgICB2LW1vZGVsPVxcXCJhY3Rpdml0aWVzXFxcIlxcbiAgICAgICAgdHlwZT1cXFwiY2hlY2tib3hcXFwiXFxuICAgICAgICA6dmFsdWU9XFxcImluZGV4XFxcIlxcbiAgICAgICAgQGNsaWNrPVxcXCJzZWxlY3RFbGVtZW50KGluZGV4KVxcXCJcXG4gICAgICAvPlxcbiAgICAgIDxzcGFuIGNsYXNzPVxcXCJjaGVja21hcmtcXFwiIC8+XFxuICAgIDwvbGFiZWw+XFxuICAgIDxsYWJlbCB2LWVsc2UgY2xhc3M9XFxcImNoZWNrYm94XFxcIj5cXG4gICAgICA8c3BhbiBjbGFzcz1cXFwiY2hlY2ttYXJrXFxcIiAvPlxcbiAgICA8L2xhYmVsPlxcbiAgPC90ZD5cXG48L3RlbXBsYXRlPlxcblxcbjxzY3JpcHQgc2V0dXAgbGFuZz1cXFwidHNcXFwiPlxcbmltcG9ydCB7IGRlZmluZVByb3BzLCBkZWZpbmVFbWl0cywgcmVmLCB3YXRjaCwgcmVhY3RpdmUgfSBmcm9tICd2dWUnO1xcbmltcG9ydCB7IFRyYW5zbGF0ZSB9IGZyb20gJ0NvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXInO1xcblxcbmNvbnN0IHRyYW5zbGF0ZSA9IG5ldyBUcmFuc2xhdGUoKTtcXG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzKHtcXG4gIGFjdGl2aXR5OiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgaW5kZXg6IHtcXG4gICAgdHlwZTogU3RyaW5nLFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICB3aWR0aDogeyB0eXBlOiBOdW1iZXIsIHJlcXVpcmVkOiBmYWxzZSwgZGVmYXVsdDogMCB9LFxcbiAgc2VsZWN0ZWRBY3Rpdml0aWVzOiB7XFxuICAgIHR5cGU6IFN0cmluZyxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbn0pO1xcblxcbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ3NlbGVjdEVsZW1lbnQnXSk7XFxuXFxuY29uc3QgYWN0aXZlID0gcmVmKGZhbHNlKTtcXG5jb25zdCBzaG93Q3JpdGljYWwgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHNob3dFcnJvciA9IHJlZihmYWxzZSk7XFxuY29uc3Qgc2hvd1dhcm5pbmcgPSByZWYoZmFsc2UpO1xcbmxldCBhY3Rpdml0aWVzID0gcmVhY3RpdmUoW10pO1xcbmNvbnN0IGNyaXRpY2FsVG9nZ2xlID0gcmVmKGZhbHNlKTtcXG5jb25zdCBlcnJvclRvZ2dsZSA9IHJlZihmYWxzZSk7XFxuY29uc3Qgd2FybmluZ1RvZ2dsZSA9IHJlZihmYWxzZSk7XFxuXFxuZnVuY3Rpb24gdG9nZ2xlRXJyb3IoKSB7XFxuICBhY3RpdmUudmFsdWUgPSAhYWN0aXZlLnZhbHVlO1xcbn1cXG5cXG5jb25zdCBzZWxlY3RFbGVtZW50ID0gKGluZGV4KSA9PiB7XFxuICBlbWl0KCdzZWxlY3RFbGVtZW50JywgaW5kZXgpO1xcbn07XFxuXFxuY29uc3QgY291bnRFcnJvcnMgPSAoKSA9PiB7XFxuICBsZXQgY291bnQgPSAwO1xcblxcbiAgZm9yIChjb25zdCB0eXBlIGluIHByb3BzLmFjdGl2aXR5WydlcnJvcnMnXSkge1xcbiAgICBmb3IgKGNvbnN0IGluZGV4IGluIHByb3BzLmFjdGl2aXR5WydlcnJvcnMnXVt0eXBlXSkge1xcbiAgICAgIGNvdW50ICs9IE9iamVjdC5rZXlzKHByb3BzLmFjdGl2aXR5WydlcnJvcnMnXVt0eXBlXVtpbmRleF0pLmxlbmd0aDtcXG4gICAgfVxcbiAgfVxcblxcbiAgcmV0dXJuIGNvdW50O1xcbn07XFxuXFxuY29uc3QgY3JpdGljYWxBY2NvcmRpb25Ub2dnbGUgPSAoZTogRXZlbnQpID0+IHtcXG4gIHNob3dDcml0aWNhbC52YWx1ZSA9ICFzaG93Q3JpdGljYWwudmFsdWU7XFxuICBjb25zdCBjdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xcbiAgY29uc3QgdGFyZ2V0ID0gKFxcbiAgICBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnRcXG4gICkucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJy5jcml0aWNhbC1kcm9wZG93bi1jb250YWluZXInKTtcXG4gIGNvbnN0IGVsSGVpZ2h0ID0gdGFyZ2V0Py5xdWVyeVNlbGVjdG9yKCcuY3JpdGljYWwtZHJvcGRvd24nKT8uY2xpZW50SGVpZ2h0O1xcblxcbiAgaWYgKGNyaXRpY2FsVG9nZ2xlLnZhbHVlKSB7XFxuICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xcbiAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogJHtlbEhlaWdodH1weDtgO1xcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xcbiAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgYDtcXG4gICAgICB9LCAxMDApO1xcbiAgICAgIGNyaXRpY2FsVG9nZ2xlLnZhbHVlID0gZmFsc2U7XFxuICAgIH1cXG4gIH0gZWxzZSB7XFxuICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xcbiAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogJHtlbEhlaWdodH1weDtgO1xcblxcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xcbiAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiBhdXRvO2A7XFxuICAgICAgfSwgNjAwKTtcXG5cXG4gICAgICBjcml0aWNhbFRvZ2dsZS52YWx1ZSA9IHRydWU7XFxuICAgIH1cXG4gIH1cXG59O1xcbmNvbnN0IGVycm9yQWNjb3JkaW9uVG9nZ2xlID0gKGU6IEV2ZW50KSA9PiB7XFxuICBzaG93RXJyb3IudmFsdWUgPSAhc2hvd0Vycm9yLnZhbHVlO1xcbiAgY29uc3QgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcXG4gIGNvbnN0IHRhcmdldCA9IChcXG4gICAgY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50IGFzIEhUTUxFbGVtZW50XFxuICApLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcuZXJyb3ItZHJvcGRvd24tY29udGFpbmVyJyk7XFxuICBjb25zdCBlbEhlaWdodCA9IHRhcmdldD8ucXVlcnlTZWxlY3RvcignLmVycm9yLWRyb3Bkb3duJyk/LmNsaWVudEhlaWdodDtcXG4gIGlmIChlcnJvclRvZ2dsZS52YWx1ZSkge1xcbiAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcXG4gICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBoZWlnaHQ6ICR7ZWxIZWlnaHR9cHg7YDtcXG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcXG4gICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGA7XFxuICAgICAgfSwgMTAwKTtcXG4gICAgICBlcnJvclRvZ2dsZS52YWx1ZSA9IGZhbHNlO1xcbiAgICB9XFxuICB9IGVsc2Uge1xcbiAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcXG4gICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBoZWlnaHQ6ICR7ZWxIZWlnaHR9cHg7YDtcXG5cXG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcXG4gICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogYXV0bztgO1xcbiAgICAgIH0sIDYwMCk7XFxuXFxuICAgICAgZXJyb3JUb2dnbGUudmFsdWUgPSB0cnVlO1xcbiAgICB9XFxuICB9XFxufTtcXG5jb25zdCBlcnJvckxlbmd0aCA9IChjdXJyZW50RXJyb3IpID0+IHtcXG4gIGxldCBjb3VudCA9IDA7XFxuXFxuICAvLyBpZiAoT2JqZWN0LmtleXMocHJvcHMuYWN0aXZpdHkpLmluZGV4T2YoJ2Vycm9ycycpICE9PSAtMSkge1xcbiAgT2JqZWN0LnZhbHVlcyhwcm9wcy5hY3Rpdml0eVsnZXJyb3JzJ11bY3VycmVudEVycm9yXSkubWFwKChpdGVtKSA9PiB7XFxuICAgIGNvdW50ICs9IE9iamVjdC5rZXlzKGl0ZW0gYXMgb2JqZWN0KS5sZW5ndGg7XFxuICB9KTtcXG4gIC8vIH1cXG5cXG4gIHJldHVybiBjb3VudDtcXG59O1xcbmNvbnN0IHdhcm5pbmdBY2NvcmRpb25Ub2dnbGUgPSAoZTogRXZlbnQpID0+IHtcXG4gIHNob3dXYXJuaW5nLnZhbHVlID0gIXNob3dXYXJuaW5nLnZhbHVlO1xcbiAgY29uc3QgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcXG4gIGNvbnN0IHRhcmdldCA9IChcXG4gICAgY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50IGFzIEhUTUxFbGVtZW50XFxuICApLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcud2FybmluZy1kcm9wZG93bi1jb250YWluZXInKTtcXG4gIGNvbnN0IGVsSGVpZ2h0ID0gdGFyZ2V0Py5xdWVyeVNlbGVjdG9yKCcud2FybmluZy1kcm9wZG93bicpPy5jbGllbnRIZWlnaHQ7XFxuICBpZiAod2FybmluZ1RvZ2dsZS52YWx1ZSkge1xcbiAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcXG4gICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBoZWlnaHQ6ICR7ZWxIZWlnaHR9cHg7YDtcXG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcXG4gICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGA7XFxuICAgICAgfSwgMTAwKTtcXG4gICAgICB3YXJuaW5nVG9nZ2xlLnZhbHVlID0gZmFsc2U7XFxuICAgIH1cXG4gIH0gZWxzZSB7XFxuICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xcbiAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogJHtlbEhlaWdodH1weDtgO1xcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xcbiAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiBhdXRvO2A7XFxuICAgICAgfSwgMTAwKTtcXG5cXG4gICAgICB3YXJuaW5nVG9nZ2xlLnZhbHVlID0gdHJ1ZTtcXG4gICAgfVxcbiAgfVxcbn07XFxud2F0Y2goXFxuICAoKSA9PiBwcm9wcy5zZWxlY3RlZEFjdGl2aXRpZXMsXFxuICAoKSA9PiB7XFxuICAgIGxldCBzZWxlY3RlZERhdGEgPSBKU09OLnBhcnNlKHByb3BzLnNlbGVjdGVkQWN0aXZpdGllcyk7XFxuICAgIGlmIChzZWxlY3RlZERhdGEubGVuZ3RoKSB7XFxuICAgICAgT2JqZWN0LmFzc2lnbihhY3Rpdml0aWVzLCBzZWxlY3RlZERhdGEpO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgIGFjdGl2aXRpZXMubGVuZ3RoID0gMDtcXG4gICAgfVxcbiAgfVxcbik7XFxuPC9zY3JpcHQ+XFxuPHN0eWxlIHNjb3BlZD5cXG4uY3JpdGljYWwtY29udGFpbmVyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmNmYwZmY7XFxuICB6LWluZGV4OiAxO1xcbn1cXG5cXG4uY3JpdGljYWwtY29udGFpbmVyOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjb250ZW50OiAnICc7XFxuICB6LWluZGV4OiAxMDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNhNjZlZTk7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuXFxuLmVycm9yLWRyb3Bkb3duLWNvbnRhaW5lcixcXG4ud2FybmluZy1kcm9wZG93bi1jb250YWluZXIsXFxuLmNyaXRpY2FsLWRyb3Bkb3duLWNvbnRhaW5lciB7XFxuICBAYXBwbHkgaC0wIG92ZXJmbG93LWhpZGRlbiB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDA7XFxufVxcblxcbi53YXJuaW5nLWNvbnRhaW5lciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB6LWluZGV4OiAxO1xcbn1cXG5cXG4uZXJyb3ItY29udGFpbmVyOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjb250ZW50OiAnICc7XFxuICB6LWluZGV4OiAxMDtcXG4gIEBhcHBseSBiZy1jcmltc29uLTQwO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDJweDtcXG4gIGxlZnQ6IDA7XFxuICB0b3A6IDA7XFxufVxcblxcbi5lcnJvci1jb250YWluZXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgei1pbmRleDogMTtcXG5cXG4gIEBhcHBseSBiZy1yb3NlO1xcbn1cXG5cXG4ud2FybmluZy1jb250YWluZXI6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGNvbnRlbnQ6ICcgJztcXG4gIHotaW5kZXg6IDEwO1xcbiAgQGFwcGx5IGJnLWNhbWVsLTQwO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDJweDtcXG4gIGxlZnQ6IDA7XFxuICB0b3A6IDA7XFxufVxcblxcbi5lcnJvci1oZWxwIHtcXG4gIGZvbnQtc2l6ZTogMTJweDtcXG4gIHBhZGRpbmctbGVmdDogMzBweDtcXG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICBtYXJnaW4tYm90dG9tOiAxOHB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogbm9uZTtcXG59XFxuLmVycm9yLWRyb3Bkb3duLWNvbnRhaW5lciBwIHtcXG4gIGNvbG9yOiBibGFjaztcXG59XFxuPC9zdHlsZT5cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJcXG4ueGxzLWVycm9yW2RhdGEtdi01ZjUwMDhiNF0ge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCNmZmYxZjAgNjBweCwgI2ZmZmZmZiAwJSk7XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L1hsc0xpc3QudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCI7QUF5ZkE7RUFDRSwyREFBMkQ7QUFDN0RcIixcInNvdXJjZXNDb250ZW50XCI6W1wiPHRlbXBsYXRlPlxcbiAgPGRpdiBjbGFzcz1cXFwicHktOCBweC0xMFxcXCI+XFxuICAgIDxkaXYgY2xhc3M9XFxcImZsZXggZmxleC13cmFwIGp1c3RpZnktYmV0d2VlblxcXCI+XFxuICAgICAgPGg2IGNsYXNzPVxcXCJ0ZXh0LTN4bCBmb250LWJvbGQgdGV4dC1uLTUwXFxcIj5cXG4gICAgICAgIEFkZC9VcGRhdGUgQWxsIDxzcGFuIGNsYXNzPVxcXCJjYXBpdGFsaXplXFxcIj57eyBzdGF0dXMudGVtcGxhdGUgfX08L3NwYW4+XFxuICAgICAgPC9oNj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWVuZCBnYXAtM1xcXCI+XFxuICAgICAgICA8VG9hc3RcXG4gICAgICAgICAgdi1pZj1cXFwidG9hc3RWaXNpYmlsaXR5XFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwidG9hc3QgLWJvdHRvbS0yNFxcXCJcXG4gICAgICAgICAgOm1lc3NhZ2U9XFxcInRvYXN0TWVzc2FnZVxcXCJcXG4gICAgICAgICAgOnR5cGU9XFxcInRvYXN0VHlwZVxcXCJcXG4gICAgICAgIC8+XFxuICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgIGNsYXNzPVxcXCJyb3VuZGVkIGJnLW4tMCBweC00IHB5LTMgdGV4dC14cyBmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtYmx1ZWNvcmFsIHNoYWRvdy1tZFxcXCJcXG4gICAgICAgICAgQGNsaWNrPVxcXCJjYW5jZWxJbXBvcnRcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxzcGFuPjxzdmctdnVlIGNsYXNzPVxcXCJwdC0xLjUgdGV4dC0yeGxcXFwiIGljb249XFxcImNyb3NzXFxcIiAvPjwvc3Bhbj5cXG4gICAgICAgICAgPHNwYW4+Y2FuY2VsIHRoaXMgaW1wb3J0PC9zcGFuPlxcbiAgICAgICAgPC9idXR0b24+XFxuICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgIDpjbGFzcz1cXFwic2VsZWN0ZWRBY3Rpdml0aWVzLmxlbmd0aCA9PT0gMCAmJiAnIGN1cnNvci1ub3QtYWxsb3dlZCdcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJyb3VuZGVkIGJnLWJsdWVjb3JhbCBweC00IHB5LTMgdGV4dC14cyBmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtbi0wXFxcIlxcbiAgICAgICAgICBAY2xpY2s9XFxcImFkZEFjdGl2aXRpZXNcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJtci0yIHRleHQtc21cXFwiIGljb249XFxcInVwLWFycm93LW91dGxpbmVcXFwiIC8+XFxuICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJtci0yXFxcIj5hZGQgPC9zcGFuPiAoe3sgc2VsZWN0ZWRBY3Rpdml0aWVzLmxlbmd0aCB9fSAvXFxuICAgICAgICAgIHt7IGFjdGl2aXRpZXNMZW5ndGggPz8gMCB9fSlcXG4gICAgICAgIDwvYnV0dG9uPlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHNwYWNlLXgtNFxcXCI+XFxuICAgICAgPHAgY2xhc3M9XFxcIm10LTQgdGV4dC1zbSB0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgU2VsZWN0IGZyb20gdGhlIGxpc3QgYmVsb3cgdG8gYWRkIHt7IHN0YXR1cy50ZW1wbGF0ZSB9fSB0byB0aGVcXG4gICAgICAgIHB1Ymxpc2hlci4gTWFrZSB5b3VyIHNlbGVjdGlvbiBhbmQgZm9sbG93IHRoZSBvbi1zY3JlZW4gcHJvbXB0cyB0b1xcbiAgICAgICAgc3VjY2Vzc2Z1bGx5IGFkZC91cGRhdGUgeW91ciBzZWxlY3RlZCB7eyBzdGF0dXMudGVtcGxhdGUgfX1cXG4gICAgICAgIDxiPlxcbiAgICAgICAgICBQbGVhc2Ugbm90ZSB0aGF0IHlvdSBtdXN0IHJlLXVwbG9hZCBhbnkgdW5zZWxlY3RlZFxcbiAgICAgICAgICB7eyBzdGF0dXMudGVtcGxhdGUgfX0sIGFuZCBpZiB0aGUgaW1wb3J0IGlzIGNhbmNlbGVkLCB5b3Ugd2lsbCBuZWVkIHRvXFxuICAgICAgICAgIHVwbG9hZCB0aGVtIGFnYWluLjwvYlxcbiAgICAgICAgPlxcbiAgICAgIDwvcD5cXG4gICAgICA8IS0tIDxkaXYgdi1pZj1cXFwiZ2xvYmFsRXJyb3JcXFwiIGNsYXNzPVxcXCJyZWxhdGl2ZSBtdC00XFxcIj5cXG4gICAgICAgIDxkaXZcXG4gICAgICAgICAgdi1pZj1cXFwiIXNob3dHTG9iYWxFcnJvclxcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcImZsZXggdy1bMjUwcHhdIGp1c3RpZnktYmV0d2VlbiByb3VuZGVkLWwtbGcgYm9yZGVyIGJvcmRlci1jcmltc29uLTIwIGJnLWNyaW1zb24tMTAgcC00XFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4XFxcIj5cXG4gICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcIm1yLTEgLW10LTEuNSB0ZXh0LTJ4bCB0ZXh0LWNyaW1zb24tNTBcXFwiXFxuICAgICAgICAgICAgICBpY29uPVxcXCJ3YXJuaW5nLWZpbGxcXFwiXFxuICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1zbSBmb250LWJvbGRcXFwiPlxcbiAgICAgICAgICAgICAge3sgZ2xvYmFsRXJyb3IubGVuZ3RoIH19IGdsb2JhbCBlcnJvcnMgZm91bmRcXG4gICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgY2xhc3M9XFxcImN1cnNvci1wb2ludGVyIHRleHQteHMgdXBwZXJjYXNlIHRleHQtYmx1ZWNvcmFsXFxcIlxcbiAgICAgICAgICAgIEBjbGljaz1cXFwic2hvd0dMb2JhbEVycm9yID0gdHJ1ZVxcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIHNob3dcXG4gICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDxkaXZcXG4gICAgICAgICAgdi1lbHNlXFxuICAgICAgICAgIGNsYXNzPVxcXCJhYnNvbHV0ZSAtdG9wLTQgcmlnaHQtMCB6LVsxMDBdIHctWzQ1MHB4XSByb3VuZGVkLWwtbGcgYmctd2hpdGUgcC00XFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJtYi00IGZsZXgganVzdGlmeS1iZXR3ZWVuXFxcIj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4XFxcIj5cXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInRleHQtc20gZm9udC1ib2xkXFxcIj5cXG4gICAgICAgICAgICAgICAge3sgZ2xvYmFsRXJyb3IubGVuZ3RoIH19IGdsb2JhbCBlcnJvcnMgZm91bmRcXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJjdXJzb3ItcG9pbnRlciB0ZXh0LXhzIHVwcGVyY2FzZSB0ZXh0LWJsdWVjb3JhbFxcXCJcXG4gICAgICAgICAgICAgIEBjbGljaz1cXFwic2hvd0dMb2JhbEVycm9yID0gZmFsc2VcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgaGlkZVxcbiAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiYm9yZGVyLWwgYm9yZGVyLWNyaW1zb24tNDAgYmctcm9zZSBwLTRcXFwiPlxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcIm15LTIgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXFxcIj5cXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyXFxcIj5cXG4gICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cXFwibXItMSAtbXQtMS41IHRleHQtMnhsIHRleHQtY3JpbXNvbi01MFxcXCJcXG4gICAgICAgICAgICAgICAgICBpY29uPVxcXCJhbGVydFxcXCJcXG4gICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidGV4dC1zbSBmb250LWJvbGQgY2FwaXRhbGl6ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAge3sgZ2xvYmFsRXJyb3IubGVuZ3RoIH19IGdsb2JhbCBlcnJvcnNcXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJtci0xIC1tdC0xLjUgY3Vyc29yLXBvaW50ZXIgdGV4dC1bN3B4XSBkdXJhdGlvbi0yMDBcXFwiXFxuICAgICAgICAgICAgICAgIGljb249XFxcImRyb3Bkb3duLWFycm93XFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcInNob3dHbG9iYWxFcnJvckxpc3QgJiYgJyByb3RhdGUtMTgwJ1xcXCJcXG4gICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzaG93R2xvYmFsRXJyb3JMaXN0ID0gIXNob3dHbG9iYWxFcnJvckxpc3RcXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDx1bCB2LWlmPVxcXCJzaG93R2xvYmFsRXJyb3JMaXN0XFxcIj5cXG4gICAgICAgICAgICAgIDxsaVxcbiAgICAgICAgICAgICAgICB2LWZvcj1cXFwiZXJyb3IgaW4gZ2xvYmFsRXJyb3JcXFwiXFxuICAgICAgICAgICAgICAgIDprZXk9XFxcImVycm9yXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiYm9yZGVyLWIgYm9yZGVyLW4tMjAgcC00IHRleHQtc21cXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIHt7IGVycm9yIH19XFxuICAgICAgICAgICAgICA8L2xpPlxcbiAgICAgICAgICAgIDwvdWw+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+IC0tPlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwiaWF0aS1saXN0LXRhYmxlIHVwbG9hZC1saXN0LXRhYmxlIG10LTRcXFwiPlxcbiAgICAgIDx0YWJsZT5cXG4gICAgICAgIDx0aGVhZD5cXG4gICAgICAgICAgPHRyIGNsYXNzPVxcXCJiZy1uLTEwXFxcIj5cXG4gICAgICAgICAgICA8dGggaWQ9XFxcInRpdGxlXFxcIiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xXFxcIiBzY29wZT1cXFwiY29sXFxcIj5cXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJjdXJzb3ItcG9pbnRlclxcXCIgQGNsaWNrPVxcXCJzb3J0XFxcIj5cXG4gICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcInNvcnRPcmRlciA9PT0gJ2Rlc2NlbmRpbmcnID8gJyByb3RhdGUtMTgwJyA6ICcnXFxcIlxcbiAgICAgICAgICAgICAgICAgIGljb249XFxcInNvcnQtaWNvblxcXCJcXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cXFwicHQtMSB0ZXh0LVs1cHhdXFxcIlxcbiAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgPHNwYW4+e3sgc3RhdHVzLnRlbXBsYXRlIH19IFRpdGxlPC9zcGFuPlxcbiAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgPHRoIGlkPVxcXCJzdGF0dXNcXFwiIHNjb3BlPVxcXCJjb2xcXFwiPlxcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImJsb2NrIHRleHQtbGVmdFxcXCI+U3RhdHVzPC9zcGFuPlxcbiAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgPHRoIGlkPVxcXCJjYlxcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXJcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3ZnLXZ1ZSBpY29uPVxcXCJjaGVja2JveFxcXCIgQGNsaWNrPVxcXCJzZWxlY3RBbGxBY3Rpdml0aWVzKClcXFwiIC8+XFxuICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgPC90cj5cXG4gICAgICAgIDwvdGhlYWQ+XFxuICAgICAgICA8dGJvZHk+XFxuICAgICAgICAgIDx0ciB2LWlmPVxcXCIhaW1wb3J0RGF0YS5sZW5ndGhcXFwiPlxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInAtNCB0ZXh0LWNlbnRlclxcXCI+Tm8gZGF0YSBmb3VuZCBmb3IgaW1wb3J0PC9kaXY+XFxuICAgICAgICAgIDwvdHI+XFxuICAgICAgICAgIDx0clxcbiAgICAgICAgICAgIHYtZm9yPVxcXCIoYWN0aXZpdHksIGluZGV4KSBpbiBpbXBvcnREYXRhXFxcIlxcbiAgICAgICAgICAgIHYtZWxzZVxcbiAgICAgICAgICAgIHJlZj1cXFwidGFibGVSb3dcXFwiXFxuICAgICAgICAgICAgOmtleT1cXFwiaW5kZXhcXFwiXFxuICAgICAgICAgICAgOmNsYXNzPVxcXCJ7XFxuICAgICAgICAgICAgICAndXBsb2FkLWVycm9yJzpcXG4gICAgICAgICAgICAgICAgYWN0aXZpdHkgJiZcXG4gICAgICAgICAgICAgICAgYWN0aXZpdHlbJ2Vycm9ycyddICYmXFxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGFjdGl2aXR5WydlcnJvcnMnXSkubGVuZ3RoID4gMCxcXG4gICAgICAgICAgICB9XFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPHRkIGNsYXNzPVxcXCJ0aXRsZVxcXCIgOmNsYXNzPVxcXCJjb3VudEVycm9ycyhpbmRleCkgPiAwICYmICd4bHMtZXJyb3InXFxcIj5cXG4gICAgICAgICAgICAgIDxYbHNMaXN0RXJyb3JcXG4gICAgICAgICAgICAgICAgOndpZHRoPVxcXCJ0YWJsZVdpZHRoXFxcIlxcbiAgICAgICAgICAgICAgICA6YWN0aXZpdHk9XFxcImFjdGl2aXR5XFxcIlxcbiAgICAgICAgICAgICAgICA6aW5kZXg9XFxcImluZGV4XFxcIlxcbiAgICAgICAgICAgICAgICA6aW1wb3J0LWRhdGE9XFxcImltcG9ydERhdGFcXFwiXFxuICAgICAgICAgICAgICAgIDpzdGF0dXM9XFxcInN0YXR1c1xcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICA8dGQgOmNsYXNzPVxcXCJjb3VudEVycm9ycyhpbmRleCkgPiAwICYmICcgeGxzLWVycm9yJ1xcXCI+XFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1zbSB0ZXh0LW4tNDBcXFwiPnt7XFxuICAgICAgICAgICAgICAgIGFjdGl2aXR5LmV4aXN0aW5nID8gJ0V4aXN0aW5nJyA6ICdOZXcnXFxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgIDx0ZFxcbiAgICAgICAgICAgICAgOmNsYXNzPVxcXCJjb3VudEVycm9ycyhpbmRleCkgPiAwICYmICcgeGxzLWVycm9yJ1xcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJjaGVjay1jb2x1bW5cXFwiXFxuICAgICAgICAgICAgICBAY2xpY2s9XFxcIihldmVudDogRXZlbnQpID0+IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgICB2LWlmPVxcXCJlcnJvckxlbmd0aCgnY3JpdGljYWwnLCBpbmRleCkgPT09IDBcXFwiXFxuICAgICAgICAgICAgICAgIHYtbW9kZWw9XFxcInNlbGVjdGVkQWN0aXZpdGllc1xcXCJcXG4gICAgICAgICAgICAgICAgdHlwZT1cXFwiY2hlY2tib3hcXFwiXFxuICAgICAgICAgICAgICAgIDp2YWx1ZT1cXFwiaW5kZXhcXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgPCEtLSA8dGQ+e3sgYWN0aXZpdHlbaW5kZXhdLmRhdGEudGl0bGVbMF0gfX08L3RkPiAtLT5cXG4gICAgICAgICAgPC90cj5cXG4gICAgICAgIDwvdGJvZHk+XFxuICAgICAgPC90YWJsZT5cXG4gICAgPC9kaXY+XFxuICA8L2Rpdj5cXG4gIDxMb2FkZXJcXG4gICAgdi1pZj1cXFwibG9hZGVyXFxcIlxcbiAgICA6dGV4dD1cXFwibG9hZGVyVGV4dFxcXCJcXG4gICAgOmNsYXNzPVxcXCJ7ICdhbmltYXRlLWxvYWRlcic6IGxvYWRlciB9XFxcIlxcbiAgLz5cXG4gIDxNb2RhbFxcbiAgICA6bW9kYWwtYWN0aXZlPVxcXCJzaG93SWRlbnRpZmllckVycm9yTW9kZWwgJiYgc2hvd0dMb2JhbEVycm9yXFxcIlxcbiAgICB3aWR0aD1cXFwiNTgzXFxcIlxcbiAgPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJtYi01IGZsZXggc3BhY2UteC0yLjVcXFwiPlxcbiAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJ0ZXh0LTR4bCB0ZXh0LWNyaW1zb24tNDBcXFwiIGljb249XFxcIndhcm5pbmctZmlsbFxcXCIgLz5cXG4gICAgICA8ZGl2PlxcbiAgICAgICAgPGg2IGNsYXNzPVxcXCJ0ZXh0LWJhc2UgZm9udC1ib2xkXFxcIj5FcnJvcnMgRGV0ZWN0ZWQ8L2g2PlxcbiAgICAgICAgPHAgY2xhc3M9XFxcInRleHQtc20gdGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgV2UgZGV0ZWN0ZWQgc29tZSBlcnJvcnMgaW4gdGhlIHVwbG9hZGVkIGZpbGUuXFxuICAgICAgICA8L3A+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcblxcbiAgICA8ZGl2XFxuICAgICAgY2xhc3M9XFxcIm1iLTYgcm91bmRlZC1zbSBib3JkZXItY3JpbXNvbi0yMCBiZy1yb3NlIHAtNCB0ZXh0LXNtIHRleHQtbi01MFxcXCJcXG4gICAgPlxcbiAgICAgIDxoNiBjbGFzcz1cXFwibWItMiB0ZXh0LXNtIGZvbnQtYm9sZFxcXCI+SWRlbnRpZmllciBFcnJvcnM8L2g2PlxcbiAgICAgIDxwIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi00MFxcXCI+XFxuICAgICAgICBXZSBoYXZlIGZvdW5kIHNvbWUgaWRlbnRpZmllciBlcnJvcnMgaW4gdGhlIGltcG9ydGVkIGZpbGUuIFlvdSBjYW5ub3RcXG4gICAgICAgIGltcG9ydCBkYXRhIHVudGlsIGFsbCB0aGUgaWRlbnRpZmllciBlcnJvcnMgYXJlIHJlc29sdmVkLlxcbiAgICAgIDwvcD5cXG4gICAgICA8dWwgY2xhc3M9XFxcIm1heC1oLVsyNTBweF0gb3ZlcmZsb3cteS1zY3JvbGxcXFwiPlxcbiAgICAgICAgPGxpXFxuICAgICAgICAgIHYtZm9yPVxcXCJlcnJvciBpbiBwcm9wcy5nbG9iYWxFcnJvclxcXCJcXG4gICAgICAgICAgOmtleT1cXFwiZXJyb3JcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJib3JkZXItYiBib3JkZXItbi0yMCBwLTQgdGV4dC1zbVxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAge3sgZXJyb3IgfX1cXG4gICAgICAgIDwvbGk+XFxuICAgICAgPC91bD5cXG4gICAgPC9kaXY+XFxuICAgIDxwXFxuICAgICAgdi1pZj1cXFwiZXJyb3JDb3VudC5jcml0aWNhbCArIGVycm9yQ291bnQuZXJyb3IgKyBlcnJvckNvdW50Lndhcm5pbmcgPiAwXFxcIlxcbiAgICAgIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi00MFxcXCJcXG4gICAgPlxcbiAgICAgIEFkZGl0aW9uYWxseSwgdGhlcmUgYXJlIHt7IGVycm9yQ291bnQuY3JpdGljYWwgfX0gY3JpdGljYWwgZXJyb3IsXFxuICAgICAge3sgZXJyb3JDb3VudC5lcnJvciB9fSBlcnJvcnMgYW5kIHt7IGVycm9yQ291bnQud2FybmluZyB9fSB3YXJuaW5nIGluIHRoZVxcbiAgICAgIGZpbGVcXG4gICAgPC9wPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGp1c3RpZnktZW5kIHNwYWNlLXgtM1xcXCI+XFxuICAgICAgPGJ1dHRvbiBjbGFzcz1cXFwiZ2hvc3QtYnRuXFxcIiBAY2xpY2s9XFxcImNhbmNlbEltcG9ydFxcXCI+Q2FuY2VsIEltcG9ydDwvYnV0dG9uPlxcbiAgICAgIDxCdG5Db21wb25lbnRcXG4gICAgICAgIGNsYXNzPVxcXCJcXFwiXFxuICAgICAgICB0ZXh0PVxcXCJkb3dubG9hZCBpZGVudGlmaWVyIGVycm9yc1xcXCJcXG4gICAgICAgIHR5cGU9XFxcInByaW1hcnlcXFwiXFxuICAgICAgICBpY29uPVxcXCJkb3dubG9hZFxcXCJcXG4gICAgICAgIEBjbGljaz1cXFwiZG93bmxvYWRJZGVudGlmaWVyRXJyb3JcXFwiXFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICA8L01vZGFsPlxcbiAgPE1vZGFsXFxuICAgIDptb2RhbC1hY3RpdmU9XFxcInNob3dDcml0aWNhbEVycm9yTW9kZWwgJiYgIXNob3dJZGVudGlmaWVyRXJyb3JNb2RlbFxcXCJcXG4gICAgd2lkdGg9XFxcIjU4M1xcXCJcXG4gID5cXG4gICAgPGRpdiBjbGFzcz1cXFwibWItNSBmbGV4IHNwYWNlLXgtMi41XFxcIj5cXG4gICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidGV4dC00eGwgdGV4dC1jcmltc29uLTQwXFxcIiBpY29uPVxcXCJ3YXJuaW5nLWZpbGxcXFwiIC8+XFxuICAgICAgPGRpdj5cXG4gICAgICAgIDxoNiBjbGFzcz1cXFwidGV4dC1iYXNlIGZvbnQtYm9sZFxcXCI+RXJyb3JzIERldGVjdGVkPC9oNj5cXG4gICAgICAgIDxwIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi00MFxcXCI+XFxuICAgICAgICAgIFdlIGRldGVjdGVkIHNvbWUgZXJyb3JzIGluIHRoZSB1cGxvYWRlZCBmaWxlLlxcbiAgICAgICAgPC9wPlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdlxcbiAgICAgIGNsYXNzPVxcXCJtYi02IHJvdW5kZWQtc20gYm9yZGVyIGJvcmRlci1jcmltc29uLTIwIGJnLXJvc2UgcC00IHRleHQtc20gdGV4dC1uLTUwXFxcIlxcbiAgICA+XFxuICAgICAgPGRpdiB2LWlmPVxcXCJzaG93Q3JpdGljYWxFcnJvck1lc3NhZ2VcXFwiIGNsYXNzPVxcXCJtYi02XFxcIj5cXG4gICAgICAgIDxoNiBjbGFzcz1cXFwibWItMiB0ZXh0LXNtIGZvbnQtYm9sZFxcXCI+Q3JpdGljYWwgRXJyb3JzPC9oNj5cXG4gICAgICAgIDxwIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi00MFxcXCI+XFxuICAgICAgICAgIFNvbWUgb2YgdGhlIHt7IHN0YXR1cy50ZW1wbGF0ZSB9fSBjb250YWluIGNyaXRpY2FsIGVycm9ycyBhbmQgdGh1cyxcXG4gICAgICAgICAgY2Fubm90IGJlIHVwbG9hZGVkIHRvIElBVEkgUHVibGlzaGVyLiBQbGVhc2UgcmV2aWV3IHRoZSBlcnJvcnMgYW5kXFxuICAgICAgICAgIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIHByb3ZpZGVkIGluIHRoZSB1c2VyIG1hbnVhbC5cXG4gICAgICAgIDwvcD5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcImZsZXgganVzdGlmeS1lbmQgc3BhY2UteC0zXFxcIj5cXG4gICAgICA8YnV0dG9uIGNsYXNzPVxcXCJnaG9zdC1idG5cXFwiIEBjbGljaz1cXFwiY2FuY2VsSW1wb3J0XFxcIj5DYW5jZWwgSW1wb3J0PC9idXR0b24+XFxuICAgICAgPEJ0bkNvbXBvbmVudFxcbiAgICAgICAgdGV4dD1cXFwiUmV2aWV3IGVycm9yc1xcXCJcXG4gICAgICAgIHR5cGU9XFxcInByaW1hcnlcXFwiXFxuICAgICAgICBAY2xpY2s9XFxcInNob3dDcml0aWNhbEVycm9yTW9kZWwgPSBmYWxzZVxcXCJcXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIDwvTW9kYWw+XFxuPC90ZW1wbGF0ZT5cXG48c2NyaXB0IHNldHVwIGxhbmc9XFxcInRzXFxcIj5cXG5pbXBvcnQgWGxzTGlzdEVycm9yIGZyb20gJ0NvbXBvbmVudHMvWGxzTGlzdEVycm9yLnZ1ZSc7XFxuaW1wb3J0IE1vZGFsIGZyb20gJ0NvbXBvbmVudHMvUG9wdXBNb2RhbC52dWUnO1xcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XFxuaW1wb3J0IFRvYXN0IGZyb20gJ0NvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZSc7XFxuaW1wb3J0IHsgZGVmaW5lUHJvcHMsIG9uTW91bnRlZCwgcmVmLCBuZXh0VGljaywgb25Vbm1vdW50ZWQgfSBmcm9tICd2dWUnO1xcbmltcG9ydCBMb2FkZXIgZnJvbSAnQ29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWUnO1xcbmltcG9ydCBCdG5Db21wb25lbnQgZnJvbSAnQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlJztcXG5cXG5jb25zdCBzZWxlY3RBbGwgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHNvcnRPcmRlciA9IHJlZignYXNjZWRpbmcnKTtcXG5cXG5jb25zdCB0YWJsZVJvdyA9IHJlZih7fSk7XFxuY29uc3Qgc2hvd0NyaXRpY2FsRXJyb3JNb2RlbCA9IHJlZihmYWxzZSk7XFxuY29uc3Qgc2hvd0lkZW50aWZpZXJFcnJvck1vZGVsID0gcmVmKGZhbHNlKTtcXG5cXG5jb25zdCBsb2FkZXIgPSByZWYoZmFsc2UpLFxcbiAgbG9hZGVyVGV4dCA9IHJlZignQWRkaW5nIGFjdGl2aXRpZXMnKTtcXG5jb25zdCBzaG93Q3JpdGljYWxFcnJvck1lc3NhZ2UgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHNob3dHTG9iYWxFcnJvciA9IHJlZih0cnVlKTtcXG5jb25zdCBzZWxlY3RlZENvdW50ID0gcmVmKDApO1xcbmNvbnN0IGFjdGl2aXRpZXNMZW5ndGggPSByZWYoMCk7XFxuY29uc3Qgc2VsZWN0ZWRBY3Rpdml0aWVzID0gcmVmPHN0cmluZ1tdPihbXSk7XFxuY29uc3QgdGFibGVXaWR0aCA9IHJlZih7fSk7XFxuY29uc3QgdG9hc3RNZXNzYWdlID0gcmVmKCcnKTtcXG5jb25zdCB0b2FzdFR5cGUgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHRvYXN0VmlzaWJpbGl0eSA9IHJlZihmYWxzZSk7XFxuXFxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wcyh7XFxuICBzdGF0dXM6IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICAvLyBOdW1iZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWVcXG4gIGltcG9ydERhdGE6IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBnbG9iYWxFcnJvcjoge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIGVycm9yQ291bnQ6IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxufSk7XFxuY29uc3QgZ2V0RGltZW5zaW9ucyA9IGFzeW5jICgpID0+IHtcXG4gIGF3YWl0IG5leHRUaWNrKCk7XFxuICB0YWJsZVdpZHRoLnZhbHVlID0gdGFibGVSb3c/LnZhbHVlWycwJ10/LmNsaWVudFdpZHRoO1xcbn07XFxuXFxuY29uc3Qgc29ydCA9ICgpID0+IHtcXG4gIHNvcnRPcmRlci52YWx1ZSA9PT0gJ2FzY2VuZGluZydcXG4gICAgPyAoc29ydE9yZGVyLnZhbHVlID0gJ2Rlc2NlbmRpbmcnKVxcbiAgICA6IChzb3J0T3JkZXIudmFsdWUgPSAnYXNjZW5kaW5nJyk7XFxuXFxuICBsZXQgc29ydGVkRGF0YSA9IHByb3BzLmltcG9ydERhdGE7XFxuICBzd2l0Y2ggKHByb3BzLnN0YXR1c1sndGVtcGxhdGUnXSkge1xcbiAgICBjYXNlICdhY3Rpdml0eSc6XFxuICAgICAgc29ydGVkRGF0YS5zb3J0KChhLCBiKSA9PlxcbiAgICAgICAgYS5kYXRhLnRpdGxlICYmXFxuICAgICAgICBhLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA8IGIuZGF0YS50aXRsZSAmJlxcbiAgICAgICAgYi5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKClcXG4gICAgICAgICAgPyAxXFxuICAgICAgICAgIDogLTFcXG4gICAgICApO1xcbiAgICAgIGJyZWFrO1xcblxcbiAgICBjYXNlICdyZXN1bHQnOlxcbiAgICAgIHNvcnRlZERhdGEuc29ydCgoYSwgYikgPT5cXG4gICAgICAgIGEuZGF0YS50aXRsZSAmJlxcbiAgICAgICAgYS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIDxcXG4gICAgICAgICAgYi5kYXRhLnRpdGxlICYmXFxuICAgICAgICBiLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKClcXG4gICAgICAgICAgPyAxXFxuICAgICAgICAgIDogLTFcXG4gICAgICApO1xcblxcbiAgICAgIGJyZWFrO1xcbiAgICBjYXNlICdwZXJpb2QnOlxcbiAgICAgIHNvcnRlZERhdGEuc29ydCgoYSwgYikgPT5cXG4gICAgICAgIGEuZGF0YS50aXRsZSAmJlxcbiAgICAgICAgYS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIDxcXG4gICAgICAgICAgYi5kYXRhLnRpdGxlICYmXFxuICAgICAgICBiLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKClcXG4gICAgICAgICAgPyAxXFxuICAgICAgICAgIDogLTFcXG4gICAgICApO1xcblxcbiAgICAgIGJyZWFrO1xcbiAgICBjYXNlICdpbmRpY2F0b3InOlxcbiAgICAgIHNvcnRlZERhdGEuc29ydCgoYSwgYikgPT5cXG4gICAgICAgIGEuZGF0YS50aXRsZSAmJlxcbiAgICAgICAgYS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIDxcXG4gICAgICAgICAgYi5kYXRhLnRpdGxlICYmXFxuICAgICAgICBiLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKClcXG4gICAgICAgICAgPyAxXFxuICAgICAgICAgIDogLTFcXG4gICAgICApO1xcblxcbiAgICAgIGJyZWFrO1xcbiAgICBkZWZhdWx0OlxcbiAgICAgIGJyZWFrO1xcbiAgfVxcbn07XFxuXFxub25Vbm1vdW50ZWQoKCkgPT4ge1xcbiAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGdldERpbWVuc2lvbnMpO1xcbn0pO1xcblxcbm9uTW91bnRlZCgoKSA9PiB7XFxuICBnZXREaW1lbnNpb25zKCk7XFxuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZ2V0RGltZW5zaW9ucyk7XFxuICBjaGVja0NyaXRpY2FsRXJyb3IoKTtcXG5cXG4gIGlmIChwcm9wcy5nbG9iYWxFcnJvcikge1xcbiAgICBzaG93SWRlbnRpZmllckVycm9yTW9kZWwudmFsdWUgPSB0cnVlO1xcbiAgfVxcbiAgYWN0aXZpdGllc0xlbmd0aC52YWx1ZSA9IHByb3BzLmltcG9ydERhdGEubGVuZ3RoO1xcbiAgbG9hZGVyVGV4dC52YWx1ZSA9IGBBZGRpbmcgJHtwcm9wcy5zdGF0dXMudGVtcGxhdGV9YDtcXG59KTtcXG5cXG5jb25zdCBjYW5jZWxJbXBvcnQgPSAoKSA9PiB7XFxuICBzaG93Q3JpdGljYWxFcnJvck1vZGVsLnZhbHVlID0gZmFsc2U7XFxuICBzaG93R0xvYmFsRXJyb3IudmFsdWUgPSBmYWxzZTtcXG4gIGF4aW9zLmRlbGV0ZShgL2ltcG9ydC94bHNgKS50aGVuKChyZXMpID0+IHtcXG4gICAgY29uc3QgcmVzcG9uc2UgPSByZXMuZGF0YTtcXG4gICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcXG4gICAgc2V0VGltZW91dCgoKSA9PiAodG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2UpLCAxNTAwMCk7XFxuICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XFxuICAgIHRvYXN0VHlwZS52YWx1ZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XFxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9pbXBvcnQveGxzJztcXG4gICAgfSwgMjAwMCk7XFxuICB9KTtcXG59O1xcbmNvbnN0IGRvd25sb2FkSWRlbnRpZmllckVycm9yID0gKCkgPT4ge1xcbiAgbGV0IHRleHQ7XFxuICBpZiAodHlwZW9mIHByb3BzLmdsb2JhbEVycm9yID09PSAnb2JqZWN0Jykge1xcbiAgICB0ZXh0ID0gT2JqZWN0LnZhbHVlcyhwcm9wcy5nbG9iYWxFcnJvcikuam9pbignXFxcXG4nKTtcXG4gIH1cXG4gIGxldCBmaWxlID0gbmV3IEZpbGUoWydcXFxcdWZlZmYnICsgdGV4dF0sICdpZGVudGlmaWVyLWVycm9ycy50eHQnLCB7XFxuICAgIHR5cGU6ICd0ZXh0L3BsYWluOmNoYXJzZXQ9VVRGLTgnLFxcbiAgfSk7XFxuICBsZXQgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XFxuICBsZXQgYW5jaG9yVGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xcbiAgYW5jaG9yVGFnLmhyZWYgPSB1cmw7XFxuICBhbmNob3JUYWcuZG93bmxvYWQgPSBmaWxlLm5hbWU7XFxuICBhbmNob3JUYWcuY2xpY2soKTtcXG4gIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XFxufTtcXG5cXG5jb25zdCBjaGVja0NyaXRpY2FsRXJyb3IgPSAoKSA9PiB7XFxuICBjb25zdCBjcml0aWNhbEFycnkgPVxcbiAgICBwcm9wcy5pbXBvcnREYXRhICYmXFxuICAgIHByb3BzLmltcG9ydERhdGEubWFwKChkYXRhLCBpbmRleCkgPT4ge1xcbiAgICAgIHJldHVybiBlcnJvckxlbmd0aCgnY3JpdGljYWwnLCBpbmRleCk7XFxuICAgIH0pO1xcbiAgbGV0IHRvdGFsQ3JpcmljYWxFcnJvckNvdW50ID0gMDtcXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY3JpdGljYWxBcnJ5Lmxlbmd0aDsgaSsrKSB7XFxuICAgIHRvdGFsQ3JpcmljYWxFcnJvckNvdW50ICs9IGNyaXRpY2FsQXJyeVtpXTtcXG4gIH1cXG4gIGlmICh0b3RhbENyaXJpY2FsRXJyb3JDb3VudCA+IDApIHtcXG4gICAgc2hvd0NyaXRpY2FsRXJyb3JNZXNzYWdlLnZhbHVlID0gdHJ1ZTtcXG4gIH1cXG4gIGlmICh0b3RhbENyaXJpY2FsRXJyb3JDb3VudCA+IDAgfHwgcHJvcHMuZ2xvYmFsRXJyb3I/Lmxlbmd0aCA+IDApIHtcXG4gICAgc2hvd0NyaXRpY2FsRXJyb3JNb2RlbC52YWx1ZSA9IHRydWU7XFxuICB9XFxufTtcXG5jb25zdCBjb3VudEVycm9ycyA9IChhY3Rpdml0eUluZGV4KSA9PiB7XFxuICBsZXQgY291bnQgPSAwO1xcbiAgZm9yIChjb25zdCB0eXBlIGluIHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddKSB7XFxuICAgIGZvciAoY29uc3QgaW5kZXggaW4gcHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ11bdHlwZV0pIHtcXG4gICAgICBjb3VudCArPSBPYmplY3Qua2V5cyhcXG4gICAgICAgIHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddW3R5cGVdW2luZGV4XVxcbiAgICAgICkubGVuZ3RoO1xcbiAgICB9XFxuICB9XFxuXFxuICByZXR1cm4gY291bnQ7XFxufTtcXG5jb25zdCBhZGRBY3Rpdml0aWVzID0gKCkgPT4ge1xcbiAgaWYgKHNlbGVjdGVkQWN0aXZpdGllcy52YWx1ZS5sZW5ndGggPiAwKSB7XFxuICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XFxuXFxuICAgIGF4aW9zXFxuICAgICAgLnBvc3QoYC9pbXBvcnQveGxzL2FjdGl2aXR5YCwgeyBhY3Rpdml0aWVzOiBzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUgfSlcXG4gICAgICAudGhlbigoKSA9PiB7XFxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XFxuICAgICAgfSk7XFxuICB9XFxufTtcXG5jb25zdCBlcnJvckxlbmd0aCA9IChlcnJvclR5cGUsIGFjdGl2aXR5SW5kZXgpID0+IHtcXG4gIGxldCBjb3VudCA9IDA7XFxuXFxuICBmb3IgKGNvbnN0IGluZGV4IGluIHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddW2Vycm9yVHlwZV0pIHtcXG4gICAgY291bnQgKz0gT2JqZWN0LmtleXMoXFxuICAgICAgcHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ11bZXJyb3JUeXBlXVtpbmRleF1cXG4gICAgKS5sZW5ndGg7XFxuICB9XFxuXFxuICByZXR1cm4gY291bnQ7XFxufTtcXG5cXG5mdW5jdGlvbiBzZWxlY3RBbGxBY3Rpdml0aWVzKCkge1xcbiAgc2VsZWN0QWxsLnZhbHVlID0gIXNlbGVjdEFsbC52YWx1ZTtcXG4gIHNlbGVjdGVkQ291bnQudmFsdWUgPSAwO1xcbiAgc2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlLmxlbmd0aCA9IDA7XFxuICBPYmplY3Qua2V5cyhwcm9wcy5pbXBvcnREYXRhKS5mb3JFYWNoKChhY3Rpdml0eV9pZCkgPT4ge1xcbiAgICBsZXQgaW5kZXggPSBzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUuaW5kZXhPZihhY3Rpdml0eV9pZCk7XFxuICAgIGlmIChcXG4gICAgICBPYmplY3Qua2V5cyhwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5X2lkXVsnZXJyb3JzJ10pLmluZGV4T2YoXFxuICAgICAgICAnY3JpdGljYWwnXFxuICAgICAgKSA9PT0gLTFcXG4gICAgKSB7XFxuICAgICAgaWYgKHNlbGVjdEFsbC52YWx1ZSkge1xcbiAgICAgICAgc2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlLnB1c2goYWN0aXZpdHlfaWQpO1xcbiAgICAgICAgc2VsZWN0ZWRDb3VudC52YWx1ZSA9IHNlbGVjdGVkQ291bnQudmFsdWUgKyAxO1xcbiAgICAgIH0gZWxzZSB7XFxuICAgICAgICBzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUuc3BsaWNlKGluZGV4LCAxKTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH0pO1xcbiAgaWYgKCFzZWxlY3RBbGwudmFsdWUpIHtcXG4gICAgc2VsZWN0ZWRDb3VudC52YWx1ZSA9IDA7XFxuICB9XFxufVxcbjwvc2NyaXB0PlxcbjxzdHlsZSBzY29wZWQ+XFxuLnhscy1lcnJvciB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoI2ZmZjFmMCA2MHB4LCAjZmZmZmZmIDAlKTtcXG59XFxuPC9zdHlsZT5cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJcXG4ubXVsdGlzZWxlY3Qtd3JhcHBlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB6LWluZGV4OiA1O1xcbiAgd2lkdGg6IDQyNHB4O1xcbiAgaGVpZ2h0OiAtbW96LWZpdC1jb250ZW50O1xcbiAgaGVpZ2h0OiBmaXQtY29udGVudDtcXG4gIGJhY2tncm91bmQ6IHdoaXRlO1xcbiAgb3ZlcmZsb3cteTogYXV0bztcXG59XFxuLm11bHRpc2VsZWN0LWxvb2thbGlrZSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xcbiAgYm9yZGVyOiAxcHggc29saWQgI2QxZDVkYjtcXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gIHdpZHRoOiAxNjBweCAhaW1wb3J0YW50O1xcbiAgaGVpZ2h0OiA0MHB4O1xcbiAgcGFkZGluZzogMTJweDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL2NvbXBvbmVudHMvVGFibGVMaXN0LnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiO0FBNmxDQTtFQUNFLGtCQUFrQjtFQUNsQixVQUFVO0VBQ1YsWUFBWTtFQUNaLHdCQUFtQjtFQUFuQixtQkFBbUI7RUFDbkIsaUJBQWlCO0VBQ2pCLGdCQUFnQjtBQUNsQjtBQUNBO0VBQ0Usa0JBQWtCO0VBQ2xCLG1CQUFtQjtFQUNuQixpQ0FBaUM7RUFDakMseUJBQXlCO0VBQ3pCLGtCQUFrQjtFQUNsQix1QkFBdUI7RUFDdkIsWUFBWTtFQUNaLGFBQWE7RUFDYixlQUFlO0FBQ2pCXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIjx0ZW1wbGF0ZT5cXG4gIDxkaXYgY2xhc3M9XFxcImZpbHRlcnMgbWItNCBmbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWJldHdlZW4gZ2FwLTJcXFwiPlxcbiAgICA8IS0tRmlsdGVyIG9wdGlvbnMgc3RhcnQtLT5cXG4gICAgPGRpdiBjbGFzcz1cXFwic2VsZWN0IGZpbHRlcnMgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlxcXCI+XFxuICAgICAgPHN2Zy12dWUgY2xhc3M9XFxcInctMTAgdGV4dC1sZ1xcXCIgaWNvbj1cXFwiZnVubmVsXFxcIiAvPlxcbiAgICAgIDxzcGFuIGNsYXNzPVxcXCJtdWx0aXNlbGVjdC1sYWJlbC13cmFwcGVyXFxcIiA6c3R5bGU9XFxcImdlbmVyYXRlTGFiZWwoJ2NvdW50cnknKVxcXCI+XFxuICAgICAgICA8TXVsdGlzZWxlY3RcXG4gICAgICAgICAgaWQ9XFxcImNvdW50cnktZmlsdGVyXFxcIlxcbiAgICAgICAgICB2LW1vZGVsPVxcXCJmaWx0ZXIuY291bnRyeVxcXCJcXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIkNPVU5UUllcXFwiXFxuICAgICAgICAgIG1vZGU9XFxcIm11bHRpcGxlXFxcIlxcbiAgICAgICAgICA6c2VhcmNoYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgOm9wdGlvbnM9XFxcImNvdW50cmllc1dpdGhQcmVmaXhcXFwiXFxuICAgICAgICAgIDp0YWdnYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgOmNsb3NlLW9uLXNlbGVjdD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIDpjbGVhci1vbi1zZWxlY3Q9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICA6aGlkZS1zZWxlY3RlZD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIDpjYW4tY2xlYXI9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICBsYWJlbD1cXFwiY291bnRyeVxcXCJcXG4gICAgICAgIC8+XFxuICAgICAgPC9zcGFuPlxcbiAgICAgIDxzcGFuXFxuICAgICAgICBjbGFzcz1cXFwibXVsdGlzZWxlY3QtbGFiZWwtd3JhcHBlclxcXCJcXG4gICAgICAgIDpzdHlsZT1cXFwiZ2VuZXJhdGVMYWJlbCgnc2V0dXAgY29tcGxldGVuZXNzJylcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgIGlkPVxcXCJzZXR1cC1jb21wbGV0ZW5lc3NcXFwiXFxuICAgICAgICAgIHYtbW9kZWw9XFxcImZpbHRlci5jb21wbGV0ZW5lc3NcXFwiXFxuICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJTRVRVUCBDT01QTEVURU5FU1NcXFwiXFxuICAgICAgICAgIDpvcHRpb25zPVxcXCJzZXR1cENvbXBsZXRlbmVzc1xcXCJcXG4gICAgICAgICAgOnRhZ2dhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICA6Y2xvc2Utb24tc2VsZWN0PVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICA6Y2xlYXItb24tc2VsZWN0PVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgOmhpZGUtc2VsZWN0ZWQ9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICA6Y2FuLWNsZWFyPVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgbGFiZWw9XFxcInNldHVwQ29tcGxldGVuZXNzXFxcIlxcbiAgICAgICAgLz5cXG4gICAgICA8L3NwYW4+XFxuICAgICAgPHNwYW5cXG4gICAgICAgIGNsYXNzPVxcXCJtdWx0aXNlbGVjdC1sYWJlbC13cmFwcGVyIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgOnN0eWxlPVxcXCJnZW5lcmF0ZUxhYmVsKCdyZWdpc3RyYXRpb24gdHlwZScpXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxNdWx0aXNlbGVjdFxcbiAgICAgICAgICBpZD1cXFwicmVnaXN0cmF0aW9uLXR5cGVcXFwiXFxuICAgICAgICAgIHYtbW9kZWw9XFxcImZpbHRlci5yZWdpc3RyYXRpb25fdHlwZVxcXCJcXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIlJFR0lTVFJBVElPTiBUWVBFXFxcIlxcbiAgICAgICAgICA6b3B0aW9ucz1cXFwicmVnaXN0cmF0aW9uVHlwZXNcXFwiXFxuICAgICAgICAgIDp0YWdnYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgOmNsb3NlLW9uLXNlbGVjdD1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgOmNsZWFyLW9uLXNlbGVjdD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIDpoaWRlLXNlbGVjdGVkPVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgOmNhbi1jbGVhcj1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIGxhYmVsPVxcXCJyZWdpc3RyYXRpb25UeXBlXFxcIlxcbiAgICAgICAgLz5cXG4gICAgICA8L3NwYW4+XFxuXFxuICAgICAgPCEtLU11bHRpc2VsZWN0IHdpdGggc2VhcmNoIC0tPlxcbiAgICAgIDwhLS0gdG8gYmUgaW1wbGVtZW50ZWQgLS0+XFxuICAgICAgPCEtLSA8ZGl2XFxuICAgICAgICBjbGFzcz1cXFwib3JnYW5pemF0aW9uIG11bHRpc2VsZWN0LWxvb2thbGlrZVxcXCJcXG4gICAgICAgIEBjbGljaz1cXFwidG9nZ2xlU2hvd011bHRpU2VsZWN0KCRldmVudClcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICBjbGFzcz1cXFwiZmxleCBoLWZ1bGwgdy1mdWxsIGp1c3RpZnktYmV0d2VlbiBhbGlnbi1taWRkbGUgdGV4dC14cyBmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtYmx1ZWNvcmFsXFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8c3Bhbj5QdWJsaXNoZXIgVHlwZTwvc3Bhbj5cXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyXFxcIj5cXG4gICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgdi1pZj1cXFwiZmlsdGVyLnB1Ymxpc2hlcl90eXBlLmxlbmd0aFxcXCJcXG4gICAgICAgICAgICAgIEBjbGljaz1cXFwiXFxuICAgICAgICAgICAgICAgIChldmVudCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xcbiAgICAgICAgICAgICAgICAgIGZpbHRlci5wdWJsaXNoZXJfdHlwZS5sZW5ndGggPSAwO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgaWNvbj1cXFwiY3Jvc3NcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJtdC0yLjUgdHJhbnNsYXRlLXgtMSB0ZXh0LVsxNnB4XSB0ZXh0LW4tMzBcXFwiXFxuICAgICAgICAgICAgICA+PC9zdmctdnVlPlxcbiAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgOmNsYXNzPVxcXCJyb3RhdGVDbGFzc1xcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJkdXJhdGlvbi0yMDBcXFwiXFxuICAgICAgICAgICAgICBzdHlsZT1cXFwiaGVpZ2h0OiBmaXQtY29udGVudDsgZm9udC1zaXplOiAyMHB4OyBtYXJnaW4tdG9wOiAtMnB4XFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxzdmctdnVlIGljb249XFxcImFycm93LWRvd25cXFwiPjwvc3ZnLXZ1ZT4gPC9zcGFuXFxuICAgICAgICAgID48L3NwYW4+XFxuICAgICAgICA8L2Rpdj5cXG5cXG4gICAgICAgIDxUZWxlcG9ydCB0bz1cXFwiYm9keVxcXCI+XFxuICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICB2LWlmPVxcXCJzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoXFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJtdWx0aXNlbGVjdC13cmFwcGVyXFxcIlxcbiAgICAgICAgICAgIDpzdHlsZT1cXFwibXVsdGlzZWxlY3RTdHlsZVxcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIDxNdWx0aVNlbGVjdFdpdGhTZWFyY2hcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJyZWxhdGl2ZSAhei1bMTAwMF1cXFwiXFxuICAgICAgICAgICAgICBoZWFkZXI9XFxcIlB1Ymxpc2hlciBUeXBlXFxcIlxcbiAgICAgICAgICAgICAgOmxpc3QtaXRlbXM9XFxcInB1Ymxpc2hlclR5cGVzXFxcIlxcbiAgICAgICAgICAgICAgQGNoYW5nZS1zZWxlY3RlZC1wdWJsaXNoZXI9XFxcInNldFNlbGVjdGVkUHVibGlzaGVyXFxcIlxcbiAgICAgICAgICAgICAgQGNsb3NlPVxcXCJzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoID0gZmFsc2VcXFwiXFxuICAgICAgICAgICAgPjwvTXVsdGlTZWxlY3RXaXRoU2VhcmNoPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvVGVsZXBvcnQ+XFxuICAgICAgPC9kaXY+IC0tPlxcbiAgICAgIDxzcGFuXFxuICAgICAgICBjbGFzcz1cXFwibXVsdGlzZWxlY3QtbGFiZWwtd3JhcHBlclxcXCJcXG4gICAgICAgIDpzdHlsZT1cXFwiZ2VuZXJhdGVMYWJlbCgncHVibGlzaGVyIHR5cGUnKVxcXCJcXG4gICAgICA+XFxuICAgICAgICA8TXVsdGlzZWxlY3RcXG4gICAgICAgICAgaWQ9XFxcInB1Ymxpc2hlci10eXBlXFxcIlxcbiAgICAgICAgICB2LW1vZGVsPVxcXCJmaWx0ZXIucHVibGlzaGVyX3R5cGVcXFwiXFxuICAgICAgICAgIDpvcHRpb25zPVxcXCJwdWJsaXNoZXJUeXBlc1xcXCJcXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIlBVQkxJU0hFUiBUWVBFXFxcIlxcbiAgICAgICAgICBtb2RlPVxcXCJtdWx0aXBsZVxcXCJcXG4gICAgICAgICAgOnRhZ2dhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICA6Y2xvc2Utb24tc2VsZWN0PVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICA6Y2xlYXItb24tc2VsZWN0PVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgOmhpZGUtc2VsZWN0ZWQ9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICA6Y2FuLWNsZWFyPVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgbGFiZWw9XFxcInB1Ymxpc2hlclR5cGVcXFwiXFxuICAgICAgICAvPlxcbiAgICAgIDwvc3Bhbj5cXG4gICAgICA8c3BhblxcbiAgICAgICAgY2xhc3M9XFxcIm11bHRpc2VsZWN0LWxhYmVsLXdyYXBwZXJcXFwiXFxuICAgICAgICA6c3R5bGU9XFxcImdlbmVyYXRlTGFiZWwoJ2RhdGEgbGljZW5zZScpXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxNdWx0aXNlbGVjdFxcbiAgICAgICAgICBpZD1cXFwiZGF0YS1saWNlbnNlXFxcIlxcbiAgICAgICAgICB2LW1vZGVsPVxcXCJmaWx0ZXIuZGF0YV9saWNlbnNlXFxcIlxcbiAgICAgICAgICA6b3B0aW9ucz1cXFwiZGF0YUxpY2Vuc2VzXFxcIlxcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwiREFUQSBMSUNFTlNFXFxcIlxcbiAgICAgICAgICBtb2RlPVxcXCJtdWx0aXBsZVxcXCJcXG4gICAgICAgICAgOnRhZ2dhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICA6Y2xvc2Utb24tc2VsZWN0PVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICA6Y2xlYXItb24tc2VsZWN0PVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgOmhpZGUtc2VsZWN0ZWQ9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICA6Y2FuLWNsZWFyPVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgbGFiZWw9XFxcImRhdGFMaWNlbnNlXFxcIlxcbiAgICAgICAgLz5cXG4gICAgICA8L3NwYW4+XFxuICAgIDwvZGl2PlxcbiAgICA8IS0tRmlsdGVyIG9wdGlvbnMgZW5kLS0+XFxuXFxuICAgIDwhLS1EYXRlIHJhbmdlIHN0YXJ0LS0+XFxuICAgIDxkaXYgY2xhc3M9XFxcImZsZXggaC1bMzhweF0gdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCBweC00IDJ4bDp3LWF1dG9cXFwiPlxcbiAgICAgIDxEYXRlUmFuZ2VXaWRnZXRcXG4gICAgICAgIDpkcm9wZG93bi1yYW5nZT1cXFwiZHJvcGRvd25SYW5nZVxcXCJcXG4gICAgICAgIDpmaXJzdC1kYXRlPVxcXCJvbGRlc3REYXRlc1xcXCJcXG4gICAgICAgIDpjbGVhci1kYXRlPVxcXCJjbGVhckRhdGVcXFwiXFxuICAgICAgICA6c3RhcnRpbmctZGF0ZT1cXFwiZmlsdGVyLnN0YXJ0X2RhdGVcXFwiXFxuICAgICAgICA6ZW5kaW5nLWRhdGU9XFxcImZpbHRlci5lbmRfZGF0ZVxcXCJcXG4gICAgICAgIDpkYXRlLW5hbWU9XFxcImRhdGVUeXBlXFxcIlxcbiAgICAgICAgQHRyaWdnZXItc2V0LWRhdGUtcmFuZ2U9XFxcInNldERhdGVSYW5nZURhdGVcXFwiXFxuICAgICAgICBAdHJpZ2dlci1zZXQtZGF0ZS10eXBlPVxcXCJzZXREYXRlVHlwZVxcXCJcXG4gICAgICAgIEBkYXRlLWNsZWFyZWQ9XFxcImNsZWFyRGF0ZSA9IGZhbHNlXFxcIlxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgICA8IS0tRGF0ZSByYW5nZSBzdGFydC0tPlxcbiAgPC9kaXY+XFxuXFxuICA8IS0tRmlsdGVyIHRhZyBwaWxscyBzdGFydC0tPlxcbiAgPGRpdlxcbiAgICB2LWlmPVxcXCJpc0ZpbHRlckFwcGxpZWRcXFwiXFxuICAgIGNsYXNzPVxcXCJtYi00IGZsZXggbWF4LXctZnVsbCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIHNwYWNlLXgtMlxcXCJcXG4gID5cXG4gICAgPHNwYW4gY2xhc3M9XFxcInRleHQtc20gZm9udC1ib2xkIHVwcGVyY2FzZSB0ZXh0LW4tNDBcXFwiPkZpbHRlcmVkIGJ5OiA8L3NwYW4+XFxuXFxuICAgIDxzcGFuIHYtc2hvdz1cXFwiZmlsdGVyLmNvdW50cnlcXFwiIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgZ2FwLTJcXFwiPlxcbiAgICAgIDxzcGFuXFxuICAgICAgICB2LWZvcj1cXFwiKGl0ZW0sIGluZGV4KSBpbiBmaWx0ZXIuY291bnRyeVxcXCJcXG4gICAgICAgIDprZXk9XFxcImluZGV4XFxcIlxcbiAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1uLTMwIHB5LTEgcHgtMiB0ZXh0LXhzXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPkNvdW50cnk6PC9zcGFuPlxcbiAgICAgICAgPHNwYW5cXG4gICAgICAgICAgY2xhc3M9XFxcIm1heC13LVs1MDBweF0gb3ZlcmZsb3cteC1oaWRkZW4gdGV4dC1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcFxcXCJcXG4gICAgICAgICAgPnt7IGl0ZW0gfX08L3NwYW5cXG4gICAgICAgID5cXG4gICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgIGNsYXNzPVxcXCJteC0yIG10LTEgY3Vyc29yLXBvaW50ZXIgdGV4dC14c1xcXCJcXG4gICAgICAgICAgaWNvbj1cXFwiY3Jvc3NcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwiZmlsdGVyLmNvdW50cnkuc3BsaWNlKGluZGV4LCAxKVxcXCJcXG4gICAgICAgIC8+XFxuICAgICAgPC9zcGFuPlxcbiAgICA8L3NwYW4+XFxuXFxuICAgIDxzcGFuIHYtc2hvdz1cXFwiZmlsdGVyLmNvbXBsZXRlbmVzc1xcXCIgY2xhc3M9XFxcImlubGluZS1mbGV4IGZsZXgtd3JhcCBnYXAtMlxcXCI+XFxuICAgICAgPHNwYW5cXG4gICAgICAgIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTEgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItbi0zMCBweS0xIHB4LTIgdGV4dC14c1xcXCJcXG4gICAgICA+XFxuICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5TZXR1cCBDb21wbGV0ZW5lc3M6PC9zcGFuPlxcbiAgICAgICAgPHNwYW5cXG4gICAgICAgICAgY2xhc3M9XFxcIm1heC13LVs1MDBweF0gb3ZlcmZsb3cteC1oaWRkZW4gdGV4dC1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcFxcXCJcXG4gICAgICAgICAgPnt7IHNuYWtlQ2FzZVRvU2VudGVuY2VDYXNlKGZpbHRlci5jb21wbGV0ZW5lc3MpIH19PC9zcGFuXFxuICAgICAgICA+XFxuICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICBjbGFzcz1cXFwibXgtMiBtdC0xIGN1cnNvci1wb2ludGVyIHRleHQteHNcXFwiXFxuICAgICAgICAgIGljb249XFxcImNyb3NzXFxcIlxcbiAgICAgICAgICBAY2xpY2s9XFxcImZpbHRlci5jb21wbGV0ZW5lc3MgPSAnJ1xcXCJcXG4gICAgICAgIC8+XFxuICAgICAgPC9zcGFuPlxcbiAgICA8L3NwYW4+XFxuXFxuICAgIDxzcGFuIHYtc2hvdz1cXFwiZmlsdGVyLnJlZ2lzdHJhdGlvbl90eXBlXFxcIiBjbGFzcz1cXFwiaW5saW5lLWZsZXggZmxleC13cmFwIGdhcC0yXFxcIj5cXG4gICAgICA8c3BhblxcbiAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1uLTMwIHB5LTEgcHgtMiB0ZXh0LXhzXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPlJlZ2lzdHJhdGlvbiBUeXBlOjwvc3Bhbj5cXG4gICAgICAgIDxzcGFuXFxuICAgICAgICAgIGNsYXNzPVxcXCJtYXgtdy1bNTAwcHhdIG92ZXJmbG93LXgtaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXBcXFwiXFxuICAgICAgICAgID57eyBzbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZShmaWx0ZXIucmVnaXN0cmF0aW9uX3R5cGUpIH19PC9zcGFuXFxuICAgICAgICA+XFxuICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICBjbGFzcz1cXFwibXgtMiBtdC0xIGN1cnNvci1wb2ludGVyIHRleHQteHNcXFwiXFxuICAgICAgICAgIGljb249XFxcImNyb3NzXFxcIlxcbiAgICAgICAgICBAY2xpY2s9XFxcImZpbHRlci5yZWdpc3RyYXRpb25fdHlwZSA9ICcnXFxcIlxcbiAgICAgICAgLz5cXG4gICAgICA8L3NwYW4+XFxuICAgIDwvc3Bhbj5cXG5cXG4gICAgPHNwYW5cXG4gICAgICB2LXNob3c9XFxcImZpbHRlci5wdWJsaXNoZXJfdHlwZS5sZW5ndGhcXFwiXFxuICAgICAgY2xhc3M9XFxcImlubGluZS1mbGV4IGZsZXgtd3JhcCBnYXAtMlxcXCJcXG4gICAgPlxcbiAgICAgIDxzcGFuXFxuICAgICAgICB2LWZvcj1cXFwiKGl0ZW0sIGluZGV4KSBpbiBmaWx0ZXIucHVibGlzaGVyX3R5cGVcXFwiXFxuICAgICAgICA6a2V5PVxcXCJpbmRleFxcXCJcXG4gICAgICAgIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTEgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItbi0zMCBweS0xIHB4LTIgdGV4dC14c1xcXCJcXG4gICAgICA+XFxuICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5QdWJsaXNoZXIgdHlwZTo8L3NwYW4+XFxuICAgICAgICA8c3BhblxcbiAgICAgICAgICBjbGFzcz1cXFwibWF4LXctWzUwMHB4XSBvdmVyZmxvdy14LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgICA+e3sgcHVibGlzaGVyVHlwZXNbaXRlbV0gfX1cXG4gICAgICAgIDwvc3Bhbj5cXG4gICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgIGNsYXNzPVxcXCJteC0yIG10LTEgY3Vyc29yLXBvaW50ZXIgdGV4dC14c1xcXCJcXG4gICAgICAgICAgaWNvbj1cXFwiY3Jvc3NcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwiZmlsdGVyLnB1Ymxpc2hlcl90eXBlLnNwbGljZShpbmRleCwgMSlcXFwiXFxuICAgICAgICAvPlxcbiAgICAgIDwvc3Bhbj5cXG4gICAgPC9zcGFuPlxcblxcbiAgICA8c3BhblxcbiAgICAgIHYtc2hvdz1cXFwiZmlsdGVyLmRhdGFfbGljZW5zZS5sZW5ndGhcXFwiXFxuICAgICAgY2xhc3M9XFxcImlubGluZS1mbGV4IGZsZXgtd3JhcCBnYXAtMlxcXCJcXG4gICAgPlxcbiAgICAgIDxzcGFuXFxuICAgICAgICB2LWZvcj1cXFwiKGl0ZW0sIGluZGV4KSBpbiBmaWx0ZXIuZGF0YV9saWNlbnNlXFxcIlxcbiAgICAgICAgOmtleT1cXFwiaW5kZXhcXFwiXFxuICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLW4tMzAgcHktMSBweC0yIHRleHQteHNcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtbi00MFxcXCI+RGF0YSBMaWNlbnNlOjwvc3Bhbj5cXG4gICAgICAgIDxzcGFuXFxuICAgICAgICAgIGNsYXNzPVxcXCJtYXgtdy1bNTAwcHhdIG92ZXJmbG93LXgtaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXBcXFwiXFxuICAgICAgICAgID57eyBpdGVtIH19PC9zcGFuXFxuICAgICAgICA+XFxuICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICBjbGFzcz1cXFwibXgtMiBtdC0xIGN1cnNvci1wb2ludGVyIHRleHQteHNcXFwiXFxuICAgICAgICAgIGljb249XFxcImNyb3NzXFxcIlxcbiAgICAgICAgICBAY2xpY2s9XFxcImZpbHRlci5kYXRhX2xpY2Vuc2Uuc3BsaWNlKGluZGV4LCAxKVxcXCJcXG4gICAgICAgIC8+XFxuICAgICAgPC9zcGFuPlxcbiAgICA8L3NwYW4+XFxuICAgIDxzcGFuXFxuICAgICAgdi1zaG93PVxcXCJmaWx0ZXIuc3RhcnRfZGF0ZSAmJiBmaWx0ZXIuZW5kX2RhdGVcXFwiXFxuICAgICAgY2xhc3M9XFxcImlubGluZS1mbGV4IGZsZXgtd3JhcCBnYXAtMlxcXCJcXG4gICAgPlxcbiAgICAgIDxzcGFuXFxuICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLW4tMzAgcHktMSBweC0yIHRleHQteHNcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPHNwYW4+XFxuICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPiBEYXRlIHJhbmdlOiA8L3NwYW4+XFxuICAgICAgICAgIHt7IGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlciB9fVxcbiAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgY2xhc3M9XFxcIm14LTIgbXQtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgQGNsaWNrPVxcXCJcXG4gICAgICAgICAgICAoKSA9PiB7XFxuICAgICAgICAgICAgICBjbGVhckRhdGVGaWx0ZXIoKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIFxcXCJcXG4gICAgICAgIC8+XFxuICAgICAgPC9zcGFuPlxcbiAgICA8L3NwYW4+XFxuXFxuICAgIDxidXR0b24gY2xhc3M9XFxcImZvbnQtYm9sZCB1cHBlcmNhc2UgdGV4dC1ibHVlY29yYWxcXFwiIEBjbGljaz1cXFwicmVzZXRBbGxGaWx0ZXJzXFxcIj5cXG4gICAgICBDbGVhciBGaWx0ZXJcXG4gICAgPC9idXR0b24+XFxuICA8L2Rpdj5cXG4gIDwhLS1GaWx0ZXIgdGFnIHBpbGxzIGVuZC0tPlxcblxcbiAgPGRpdj5cXG4gICAgPHAgY2xhc3M9XFxcInB5LTFcXFwiPlRvdGFsIE51bWJlciBvZiBPcmdhbmlzYXRpb246IHt7IHRvdGFsT3JnYW5pc2F0aW9uIH19PC9wPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJpYXRpLWxpc3QtdGFibGVcXFwiPlxcbiAgICAgIDx0YWJsZT5cXG4gICAgICAgIDx0aGVhZD5cXG4gICAgICAgICAgPHRyIGNsYXNzPVxcXCJiZy1uLTEwXFxcIj5cXG4gICAgICAgICAgICA8dGggaWQ9XFxcIm9yZ2FuaXNhdGlvbl9uYW1lXFxcIiBzY29wZT1cXFwiY29sXFxcIj5cXG4gICAgICAgICAgICAgIDxhXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJjdXJzb3ItcG9pbnRlciB0ZXh0LW4tNTAgdHJhbnNpdGlvbiBkdXJhdGlvbi01MDAgaG92ZXI6dGV4dC1zcHJpbmctNTBcXFwiXFxuICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy5vcmRlckJ5ID09PSAnbmFtZSdcXG4gICAgICAgICAgICAgICAgICAgID8gc29ydGluZ0RpcmVjdGlvbigpXFxuICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRTb3J0RGlyZWN0aW9uXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0QnkoJ25hbWUnKVxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInNvcnRpbmctaW5kaWNhdG9yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgOmljb249XFxcImAke1xcbiAgICAgICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICduYW1lJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc29ydGluZ0RpcmVjdGlvbigpXFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0U29ydERpcmVjdGlvblxcbiAgICAgICAgICAgICAgICAgICAgfS1hcnJvd2BcXFwiXFxuICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICA8c3Bhbj5PcmdhbmlzYXRpb248L3NwYW4+XFxuICAgICAgICAgICAgICA8L2E+XFxuICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICA8dGggaWQ9XFxcImNvdW50cnlcXFwiIHNjb3BlPVxcXCJjb2xcXFwiIHN0eWxlPVxcXCJ3aWR0aDogMTczcHhcXFwiPlxcbiAgICAgICAgICAgICAgPGFcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImN1cnNvci1wb2ludGVyIHRleHQtbi01MCB0cmFuc2l0aW9uIGR1cmF0aW9uLTUwMCBob3Zlcjp0ZXh0LXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICdjb3VudHJ5J1xcbiAgICAgICAgICAgICAgICAgICAgPyBzb3J0aW5nRGlyZWN0aW9uKClcXG4gICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFNvcnREaXJlY3Rpb25cXG4gICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNvcnRCeSgnY291bnRyeScpXFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwic29ydGluZy1pbmRpY2F0b3JcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICA6aWNvbj1cXFwiYCR7XFxuICAgICAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMub3JkZXJCeSA9PT0gJ2NvdW50cnknXFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzb3J0aW5nRGlyZWN0aW9uKClcXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRTb3J0RGlyZWN0aW9uXFxuICAgICAgICAgICAgICAgICAgICB9LWFycm93YFxcXCJcXG4gICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDxzcGFuPkNvdW50cnk8L3NwYW4+XFxuICAgICAgICAgICAgICA8L2E+XFxuICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICA8dGggaWQ9XFxcInJlZ2lzdGVyZWRfb25cXFwiIHNjb3BlPVxcXCJjb2xcXFwiIHN0eWxlPVxcXCJ3aWR0aDogMTczcHhcXFwiPlxcbiAgICAgICAgICAgICAgPGFcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImN1cnNvci1wb2ludGVyIHRleHQtbi01MCB0cmFuc2l0aW9uIGR1cmF0aW9uLTUwMCBob3Zlcjp0ZXh0LXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICdyZWdpc3RlcmVkX29uJ1xcbiAgICAgICAgICAgICAgICAgICAgPyBzb3J0aW5nRGlyZWN0aW9uKClcXG4gICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFNvcnREaXJlY3Rpb25cXG4gICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNvcnRCeSgncmVnaXN0ZXJlZF9vbicpXFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwic29ydGluZy1pbmRpY2F0b3JcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICA6aWNvbj1cXFwiYCR7XFxuICAgICAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMub3JkZXJCeSA9PT0gJ3JlZ2lzdGVyZWRfb24nXFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzb3J0aW5nRGlyZWN0aW9uKClcXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRTb3J0RGlyZWN0aW9uXFxuICAgICAgICAgICAgICAgICAgICB9LWFycm93YFxcXCJcXG4gICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDxzcGFuPlJlZ2lzdGVyZWQgT248L3NwYW4+XFxuICAgICAgICAgICAgICA8L2E+XFxuICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICA8dGggaWQ9XFxcImxhc3RfbG9naW5cXFwiIHNjb3BlPVxcXCJjb2xcXFwiIHN0eWxlPVxcXCJ3aWR0aDogMTczcHhcXFwiPlxcbiAgICAgICAgICAgICAgPGFcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImN1cnNvci1wb2ludGVyIHRleHQtbi01MCB0cmFuc2l0aW9uIGR1cmF0aW9uLTUwMCBob3Zlcjp0ZXh0LXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICdsYXN0X2xvZ2dlZF9pbidcXG4gICAgICAgICAgICAgICAgICAgID8gc29ydGluZ0RpcmVjdGlvbigpXFxuICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRTb3J0RGlyZWN0aW9uXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0QnkoJ2xhc3RfbG9nZ2VkX2luJylcXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJzb3J0aW5nLWluZGljYXRvclxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgIDppY29uPVxcXCJgJHtcXG4gICAgICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy5vcmRlckJ5ID09PSAnbGFzdF9sb2dnZWRfaW4nXFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzb3J0aW5nRGlyZWN0aW9uKClcXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRTb3J0RGlyZWN0aW9uXFxuICAgICAgICAgICAgICAgICAgICB9LWFycm93YFxcXCJcXG4gICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDxzcGFuPkxhc3QgTG9naW48L3NwYW4+XFxuICAgICAgICAgICAgICA8L2E+XFxuICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICA8dGggaWQ9XFxcImFjdGl2aXRpZXNcXFwiIHNjb3BlPVxcXCJjb2xcXFwiIHN0eWxlPVxcXCJ3aWR0aDogMTczcHhcXFwiPlxcbiAgICAgICAgICAgICAgPGFcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImN1cnNvci1wb2ludGVyIHRleHQtbi01MCB0cmFuc2l0aW9uIGR1cmF0aW9uLTUwMCBob3Zlcjp0ZXh0LXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICdhbGxfYWN0aXZpdGllc19jb3VudCdcXG4gICAgICAgICAgICAgICAgICAgID8gc29ydGluZ0RpcmVjdGlvbigpXFxuICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRTb3J0RGlyZWN0aW9uXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0QnkoJ2FsbF9hY3Rpdml0aWVzX2NvdW50JylcXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJzb3J0aW5nLWluZGljYXRvclxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgIDppY29uPVxcXCJgJHtcXG4gICAgICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy5vcmRlckJ5ID09PSAnYWxsX2FjdGl2aXRpZXNfY291bnQnXFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzb3J0aW5nRGlyZWN0aW9uKClcXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRTb3J0RGlyZWN0aW9uXFxuICAgICAgICAgICAgICAgICAgICB9LWFycm93YFxcXCJcXG4gICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdhY3Rpdml0aWVzJykgfX08L3NwYW4+XFxuICAgICAgICAgICAgICA8L2E+XFxuICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICA8dGggaWQ9XFxcInB1Ymxpc2hlcl90eXBlXFxcIiBzY29wZT1cXFwiY29sXFxcIiBzdHlsZT1cXFwid2lkdGg6IDE3M3B4XFxcIj5cXG4gICAgICAgICAgICAgIDxhXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJjdXJzb3ItcG9pbnRlciB0ZXh0LW4tNTAgdHJhbnNpdGlvbiBkdXJhdGlvbi01MDAgaG92ZXI6dGV4dC1zcHJpbmctNTBcXFwiXFxuICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy5vcmRlckJ5ID09PSAncHVibGlzaGVyX3R5cGUnXFxuICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0U29ydERpcmVjdGlvblxcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIEBjbGljaz1cXFwic29ydEJ5KCdwdWJsaXNoZXJfdHlwZScpXFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwic29ydGluZy1pbmRpY2F0b3JcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICA6aWNvbj1cXFwiYCR7XFxuICAgICAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMub3JkZXJCeSA9PT0gJ3B1Ymxpc2hlcl90eXBlJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc29ydGluZ0RpcmVjdGlvbigpXFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0U29ydERpcmVjdGlvblxcbiAgICAgICAgICAgICAgICAgICAgfS1hcnJvd2BcXFwiXFxuICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICA8c3Bhbj5QdWJsaXNoZXIgVHlwZTwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvYT5cXG4gICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgIDx0aCBpZD1cXFwiZGF0YV9saWNlbmNlXFxcIiBzY29wZT1cXFwiY29sXFxcIiBzdHlsZT1cXFwid2lkdGg6IDE3M3B4XFxcIj5cXG4gICAgICAgICAgICAgIDxhXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJjdXJzb3ItcG9pbnRlciB0ZXh0LW4tNTAgdHJhbnNpdGlvbiBkdXJhdGlvbi01MDAgaG92ZXI6dGV4dC1zcHJpbmctNTBcXFwiXFxuICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy5vcmRlckJ5ID09PSAnZGF0YV9saWNlbnNlJ1xcbiAgICAgICAgICAgICAgICAgICAgPyBzb3J0aW5nRGlyZWN0aW9uKClcXG4gICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFNvcnREaXJlY3Rpb25cXG4gICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNvcnRCeSgnZGF0YV9saWNlbnNlJylcXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJzb3J0aW5nLWluZGljYXRvclxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgIDppY29uPVxcXCJgJHtcXG4gICAgICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy5vcmRlckJ5ID09PSAnZGF0YV9saWNlbnNlJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc29ydGluZ0RpcmVjdGlvbigpXFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0U29ydERpcmVjdGlvblxcbiAgICAgICAgICAgICAgICAgICAgfS1hcnJvd2BcXFwiXFxuICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICA8c3Bhbj5EYXRhIGxpY2VuY2UgPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC9hPlxcbiAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgPHRoIGlkPVxcXCJwcm94eVxcXCIgc2NvcGU9XFxcImNvbFxcXCIgc3R5bGU9XFxcIndpZHRoOiAxNThweFxcXCI+XFxuICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XFxuICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgPC90cj5cXG4gICAgICAgIDwvdGhlYWQ+XFxuICAgICAgICA8dGJvZHk+XFxuICAgICAgICAgIDx0ciB2LWlmPVxcXCJvcmdhbmlzYXRpb25EYXRhLnN0YXR1cyA9PT0gJ2ZldGNoaW5nJ1xcXCI+XFxuICAgICAgICAgICAgPHRkIGNvbHNwYW49XFxcIjRcXFwiPnt7IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdmZXRjaGluZ19kYXRhJykgfX08L3RkPlxcbiAgICAgICAgICA8L3RyPlxcbiAgICAgICAgICA8dHIgdi1lbHNlLWlmPVxcXCJvcmdhbmlzYXRpb25EYXRhLnN0YXR1cyA9PT0gJ2ZhaWxlZCB0byByZXRyaWV2ZSBkYXRhJ1xcXCI+XFxuICAgICAgICAgICAgPHRkIGNvbHNwYW49XFxcIjRcXFwiPkZhaWxlZCB0byByZXRyaWV2ZSBkYXRhLi4uPC90ZD5cXG4gICAgICAgICAgPC90cj5cXG4gICAgICAgICAgPHRyIHYtZWxzZS1pZj1cXFwib3JnYW5pc2F0aW9uRGF0YS5zdGF0dXMgPT09ICdlbXB0eSdcXFwiPlxcbiAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVxcXCI0XFxcIj5ObyBEYXRhIEF2YWlsYWJsZTwvdGQ+XFxuICAgICAgICAgIDwvdHI+XFxuICAgICAgICAgIDx0ciB2LWZvcj1cXFwiZGF0YSBpbiBvcmdhbmlzYXRpb25EYXRhLmRhdGEuZGF0YVxcXCIgdi1lbHNlIDprZXk9XFxcImRhdGEuaWRcXFwiPlxcbiAgICAgICAgICAgIDx0ZD5cXG4gICAgICAgICAgICAgIDxkaXY+XFxuICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cXFwiZGF0YS5uYW1lXFxcIiBjbGFzcz1cXFwiZWxsaXBzaXMgcmVsYXRpdmVcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJlbGxpcHNpcyBvdmVyZmxvdy1oaWRkZW5cXFwiPlxcbiAgICAgICAgICAgICAgICAgICAge3sgZGF0YT8ubmFtZVswXT8ubmFycmF0aXZlID8/IHRyYW5zbGF0ZS5taXNzaW5nKCduYW1lJykgfX1cXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgICAgICAgICA8ZGl2IHYtZWxzZT57eyB0cmFuc2xhdGUubWlzc2luZygnbmFtZScpIH19PC9kaXY+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImdyb3VwIHJlbGF0aXZlXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwidy1mdWxsIG92ZXJmbG93LXgtaGlkZGVuIHRleHQtZWxsaXBzaXMgdGV4dC1ibHVlLTQwXFxcIlxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICAgIHt7IGRhdGE/LnVzZXI/LmVtYWlsIH19XFxuICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImFic29sdXRlIHRvcC1mdWxsIGxlZnQtMCBoaWRkZW4gcm91bmRlZCBiZy1lZ2dzaGVsbCBwLTIgc2hhZG93LXNtIGdyb3VwLWhvdmVyOmJsb2NrXFxcIlxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICAgIHt7IGRhdGE/LnVzZXI/LmVtYWlsIH19XFxuICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4XFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggdy1maXRcXFwiXFxuICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICByZWdpc3RyeUFwaUtleVN0YXR1c1tkYXRhLmlkXVxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RleHQtc3ByaW5nLTUwJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RleHQtY3JpbXNvbi01MCdcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwidGV4dC1tZCBtdC0xIGN1cnNvci1wb2ludGVyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICA6aWNvbj1cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnlBcGlLZXlTdGF0dXNbZGF0YS5pZF1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RpY2snXFxuICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdjaXJjbGUtcmVkLWNyb3NzJ1xcbiAgICAgICAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgICAgICA+PC9zdmctdnVlPlxcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInB4LTFcXFwiPiBSZWdpc3RyeSBBUEkgS2V5IDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJteC0yIGZsZXggdy1maXRcXFwiXFxuICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVTdGF0dXNbZGF0YS5pZF1cXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICd0ZXh0LXNwcmluZy01MCdcXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICd0ZXh0LWNyaW1zb24tNTAnXFxuICAgICAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInRleHQtbWQgbXQtMSBjdXJzb3ItcG9pbnRlclxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgOmljb249XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZVN0YXR1c1tkYXRhLmlkXVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAndGljaydcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2NpcmNsZS1yZWQtY3Jvc3MnXFxuICAgICAgICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgICAgID48L3N2Zy12dWU+XFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwicHgtMVxcXCI+IERlZmF1bHQgVmFsdWVzIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICA8dGQgY2xhc3M9XFxcInRleHQtbi00MFxcXCI+XFxuICAgICAgICAgICAgICA8ZGl2PlxcbiAgICAgICAgICAgICAgICB7eyBjb3VudHJpZXNXaXRoUHJlZml4W2RhdGFbJ2NvdW50cnknXV0gfX1cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgPHRkIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgICAgPGRpdj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicGItMVxcXCI+XFxuICAgICAgICAgICAgICAgICAge3sgZGF0ZUZvcm1hdChkYXRhWydjcmVhdGVkX2F0J10sICdNTU1NLCBERCwgWVlZWScpIH19XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ0ZXh0LXhzXFxcIj5cXG4gICAgICAgICAgICAgICAgICBQcmV2aW91c2x5XFxuICAgICAgICAgICAgICAgICAge3tcXG4gICAgICAgICAgICAgICAgICAgIGRhdGFbJ3JlZ2lzdHJhdGlvbl90eXBlJ10gIT09ICdleGlzdGluZ19vcmcnID8gJ25vdCcgOiAnJ1xcbiAgICAgICAgICAgICAgICAgIH19XFxuICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZCBpbiBJQVRJIHBsYXRmb3JtXFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICA8dGQgY2xhc3M9XFxcInRleHQtbi00MFxcXCI+XFxuICAgICAgICAgICAgICA8ZGl2PlxcbiAgICAgICAgICAgICAgICB7e1xcbiAgICAgICAgICAgICAgICAgIGRhdGEubGFzdF9sb2dnZWRfaW5cXG4gICAgICAgICAgICAgICAgICAgID8gZGF0ZUZvcm1hdChkYXRhLmxhc3RfbG9nZ2VkX2luLCAnTU1NTSwgREQsWVlZWScpXFxuICAgICAgICAgICAgICAgICAgICA6IHRyYW5zbGF0ZS5taXNzaW5nKCdub3RfYXZhaWxhYmxlJylcXG4gICAgICAgICAgICAgICAgfX1cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgPHRkIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgICAgPGRpdj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicHgtMVxcXCI+XFxuICAgICAgICAgICAgICAgICAge3sgZGF0YS5hbGxfYWN0aXZpdGllc19jb3VudCB9fVxcbiAgICAgICAgICAgICAgICAgIHt7IHRyYW5zbGF0ZS5jb21tb25UZXh0KCdhY3Rpdml0aWVzX25vY2FzZScpIH19XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ0ZXh0LXhzXFxcIj5cXG4gICAgICAgICAgICAgICAgICB7e1xcbiAgICAgICAgICAgICAgICAgICAgZGF0YVsnbGF0ZXN0X3VwZGF0ZWRfYWN0aXZpdHknXVxcbiAgICAgICAgICAgICAgICAgICAgICA/ICdMYXN0IHVwZGF0ZWQgb246JyArXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdChcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbJ2xhdGVzdF91cGRhdGVkX2FjdGl2aXR5J10udXBkYXRlZF9hdCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdNTU1NLCBERCwgWVlZWSdcXG4gICAgICAgICAgICAgICAgICAgICAgICApXFxuICAgICAgICAgICAgICAgICAgICAgIDogdHJhbnNsYXRlLm1pc3NpbmcoJ25vdF9hdmFpbGFibGUnKVxcbiAgICAgICAgICAgICAgICAgIH19XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICA8dGQgY2xhc3M9XFxcInRleHQtbi00MFxcXCI+XFxuICAgICAgICAgICAgICA8ZGl2PlxcbiAgICAgICAgICAgICAgICB7eyBzaG93TWFwcGVkRGF0YSgncHVibGlzaGVyX3R5cGUnLCBkYXRhLCBwdWJsaXNoZXJUeXBlcykgfX1cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgPHRkIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgICAgPGRpdj5cXG4gICAgICAgICAgICAgICAge3sgc2hvd01hcHBlZERhdGEoJ2RhdGFfbGljZW5zZScsIGRhdGEsIGRhdGFMaWNlbnNlcykgfX1cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgPHRkPlxcbiAgICAgICAgICAgICAgPGRpdj5cXG4gICAgICAgICAgICAgICAgPEJ0bkNvbXBvbmVudFxcbiAgICAgICAgICAgICAgICAgIHRleHQ9XFxcInByb3h5XFxcIlxcbiAgICAgICAgICAgICAgICAgIHR5cGU9XFxcIm91dGxpbmVcXFwiXFxuICAgICAgICAgICAgICAgICAgaWNvbj1cXFwic21pbGVcXFwiXFxuICAgICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJwcm94eVVzZXIoPG51bWJlcj5kYXRhPy51c2VyPy5pZClcXFwiXFxuICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICA8L3RyPlxcbiAgICAgICAgPC90Ym9keT5cXG4gICAgICA8L3RhYmxlPlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwibXQtNlxcXCI+XFxuICAgICAgPFBhZ2luYXRpb25cXG4gICAgICAgIHYtaWY9XFxcIm9yZ2FuaXNhdGlvbkRhdGEuZGF0YSAmJiBvcmdhbmlzYXRpb25EYXRhLmRhdGEubGFzdF9wYWdlID4gMVxcXCJcXG4gICAgICAgIDpkYXRhPVxcXCJvcmdhbmlzYXRpb25EYXRhLmRhdGFcXFwiXFxuICAgICAgICA6cmVzZXQ9XFxcInJlc2V0UGFnaW5hdGlvblxcXCJcXG4gICAgICAgIEBmZXRjaC1hY3Rpdml0aWVzPVxcXCIobikgPT4gZmV0Y2hPcmdhbmlzYXRpb24obilcXFwiXFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXY+PC9kaXY+XFxuICA8L2Rpdj5cXG48L3RlbXBsYXRlPlxcbjxzY3JpcHQgbGFuZz1cXFwidHNcXFwiPlxcbmltcG9ydCB7XFxuICByZWFjdGl2ZSxcXG4gIG9uTW91bnRlZCxcXG4gIGluamVjdCxcXG4gIHJlZixcXG4gIHdhdGNoLFxcbiAgY29tcHV0ZWQsXFxuICBkZWZpbmVDb21wb25lbnQsXFxufSBmcm9tICd2dWUnO1xcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XFxuaW1wb3J0IE11bHRpU2VsZWN0V2l0aFNlYXJjaCBmcm9tICdDb21wb25lbnRzL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWUnO1xcbmltcG9ydCB7IFRyYW5zbGF0ZSB9IGZyb20gJ0NvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXInO1xcblxcbmltcG9ydCBkYXRlRm9ybWF0IGZyb20gJ0NvbXBvc2FibGUvZGF0ZUZvcm1hdCc7XFxuaW1wb3J0IHtcXG4gIGtlYmFiQ2FzZVRvU25ha2VjYXNlLFxcbiAgc25ha2VDYXNlVG9TZW50ZW5jZUNhc2UsXFxufSBmcm9tICdDb21wb3NhYmxlL3V0aWxzJztcXG5cXG5pbXBvcnQgQnRuQ29tcG9uZW50IGZyb20gJ0NvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZSc7XFxuaW1wb3J0IFBhZ2luYXRpb24gZnJvbSAnQ29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlJztcXG5pbXBvcnQgTXVsdGlzZWxlY3QgZnJvbSAnQHZ1ZWZvcm0vbXVsdGlzZWxlY3QnO1xcbmltcG9ydCB7IHdhdGNoSWdub3JhYmxlIH0gZnJvbSAnQHZ1ZXVzZS9jb3JlJztcXG5pbXBvcnQgRGF0ZVJhbmdlV2lkZ2V0IGZyb20gJ0NvbXBvbmVudHMvRGF0ZVJhbmdlV2lkZ2V0LnZ1ZSc7XFxuXFxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcXG4gIG5hbWU6ICdUYWJsZUxpc3QnLFxcbiAgY29tcG9uZW50czoge1xcbiAgICBCdG5Db21wb25lbnQ6IEJ0bkNvbXBvbmVudCxcXG4gICAgUGFnaW5hdGlvbjogUGFnaW5hdGlvbixcXG4gICAgTXVsdGlzZWxlY3Q6IE11bHRpc2VsZWN0LFxcbiAgICBEYXRlUmFuZ2VXaWRnZXQ6IERhdGVSYW5nZVdpZGdldCxcXG4gIH0sXFxuICBwcm9wczoge1xcbiAgICBjb3VudHJpZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxcbiAgICBzZXR1cENvbXBsZXRlbmVzczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXFxuICAgIHJlZ2lzdHJhdGlvblR5cGVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcXG4gICAgcHVibGlzaGVyVHlwZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxcbiAgICBkYXRhTGljZW5zZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxcbiAgICBvbGRlc3REYXRlczoge1xcbiAgICAgIHR5cGU6IFN0cmluZyxcXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcXG4gICAgfSxcXG4gIH0sXFxuXFxuICBzZXR1cChwcm9wcykge1xcbiAgICAvLyBpbmplY3RcXG4gICAgaW50ZXJmYWNlIFRvYXN0SW50ZXJmYWNlIHtcXG4gICAgICB2aXNpYmlsaXR5OiBib29sZWFuO1xcbiAgICAgIG1lc3NhZ2U6IHN0cmluZztcXG4gICAgICB0eXBlOiBib29sZWFuO1xcbiAgICB9XFxuICAgIGNvbnN0IHRvYXN0TWVzc2FnZSA9IGluamVjdCgndG9hc3REYXRhJykgYXMgVG9hc3RJbnRlcmZhY2U7XFxuXFxuICAgIGludGVyZmFjZSBMb2FkZXJJbnRlcmZhY2Uge1xcbiAgICAgIHN0YXR1czogYm9vbGVhbjtcXG4gICAgICB0ZXh0OiBzdHJpbmc7XFxuICAgIH1cXG5cXG4gICAgY29uc3QgdHJhbnNsYXRlID0gbmV3IFRyYW5zbGF0ZSgpO1xcbiAgICBjb25zdCBsb2FkZXIgPSBpbmplY3QoJ2xvYWRlcicpIGFzIExvYWRlckludGVyZmFjZTtcXG4gICAgY29uc3QgZGF0ZURyb3Bkb3duID0gcmVmKCk7XFxuICAgIGNvbnN0IGNsZWFyRGF0ZSA9IHJlZihmYWxzZSk7XFxuICAgIGNvbnN0IGRhdGVUeXBlID0gcmVmKCdBbGwgVGltZScpO1xcblxcbiAgICAvL3R5cGVmYWNlXFxuICAgIGludGVyZmFjZSBvcmdhbml6YXRpb25JbnRlcmZhY2Uge1xcbiAgICAgIGRhdGE6IG9EYXRhSW50ZXJmYWNlO1xcbiAgICAgIHN0YXR1czogc3RyaW5nO1xcbiAgICB9XFxuXFxuICAgIGludGVyZmFjZSBvRGF0YUludGVyZmFjZSB7XFxuICAgICAgZGF0YToge1xcbiAgICAgICAgdG90YWw6IG51bWJlcjtcXG5cXG4gICAgICAgIGlkOiBudW1iZXI7XFxuICAgICAgICBuYW1lOiB7XFxuICAgICAgICAgIG5hcnJhdGl2ZTogc3RyaW5nO1xcbiAgICAgICAgfVtdO1xcbiAgICAgICAgb3JnYW5pemF0aW9uX3VybDogc3RyaW5nO1xcbiAgICAgICAgdXNlcjoge1xcbiAgICAgICAgICBlbWFpbDogc3RyaW5nO1xcbiAgICAgICAgICBpZDogbnVtYmVyO1xcbiAgICAgICAgfTtcXG4gICAgICAgIHVwZGF0ZWRfYXQ6IERhdGU7XFxuICAgICAgICBjb3VudHJ5OiBzdHJpbmc7XFxuICAgICAgICBjcmVhdGVkX2F0OiBEYXRlO1xcbiAgICAgICAgbGFzdF9sb2dnZWRfaW46IERhdGU7XFxuICAgICAgICBhbGxfYWN0aXZpdGllc19jb3VudDogbnVtYmVyO1xcbiAgICAgICAgcHVibGlzaGVyX3R5cGU6IHN0cmluZyB8IG51bWJlcjtcXG4gICAgICAgIGRhdGFfbGljZW5zZTogc3RyaW5nO1xcbiAgICAgIH1bXTtcXG4gICAgICBsYXN0X3BhZ2U6IG51bWJlcjtcXG4gICAgICBjdXJyZW50X3BhZ2U6IG51bWJlcjtcXG4gICAgfVxcblxcbiAgICBjb25zdCBnZXRDb3VudHJpZXNXaXRoUHJlZml4ID0gKCkgPT4ge1xcbiAgICAgIGNvbnN0IHJldHVyblZhbHVlRm9yQ291bnRyaWVzID0ge307XFxuICAgICAgY29uc3QgY291bnRyeUNvZGVzID0gT2JqZWN0LmtleXMocHJvcHMuY291bnRyaWVzKTtcXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50cnlDb2Rlcy5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgcmV0dXJuVmFsdWVGb3JDb3VudHJpZXNbY291bnRyeUNvZGVzW2ldXSA9IGAke2NvdW50cnlDb2Rlc1tpXX0gLSAke1xcbiAgICAgICAgICBwcm9wcy5jb3VudHJpZXNbY291bnRyeUNvZGVzW2ldXVxcbiAgICAgICAgfWA7XFxuICAgICAgfVxcbiAgICAgIHJldHVybiByZXR1cm5WYWx1ZUZvckNvdW50cmllcztcXG4gICAgfTtcXG5cXG4gICAgY29uc3QgY291bnRyaWVzV2l0aFByZWZpeCA9IGdldENvdW50cmllc1dpdGhQcmVmaXgoKTtcXG5cXG4gICAgLy8gcmVhY3Rpdml0eVxcbiAgICBsZXQgb3JnYW5pc2F0aW9uRGF0YTogb3JnYW5pemF0aW9uSW50ZXJmYWNlID0gcmVhY3RpdmUoe1xcbiAgICAgIGRhdGE6IHt9IGFzIG9EYXRhSW50ZXJmYWNlLFxcbiAgICAgIHN0YXR1czogJ2ZldGNoaW5nJyxcXG4gICAgfSk7XFxuXFxuICAgIGxldCBtdWx0aXNlbGVjdFN0eWxlID0gcmVmKHt9KTtcXG5cXG4gICAgbGV0IGZpbHRlciA9IHJlYWN0aXZlKHtcXG4gICAgICBwdWJsaXNoZXJfdHlwZTogW10sXFxuICAgICAgZGF0YV9saWNlbnNlOiBbXSxcXG4gICAgICBjb3VudHJ5OiBbXSxcXG4gICAgICBjb21wbGV0ZW5lc3M6ICcnLFxcbiAgICAgIHJlZ2lzdHJhdGlvbl90eXBlOiAnJyxcXG4gICAgICBzdGFydF9kYXRlOiAnJyxcXG4gICAgICBlbmRfZGF0ZTogJycsXFxuICAgICAgZGF0ZV90eXBlOiAnY3JlYXRlZF9hdCcsXFxuICAgICAgc2VsZWN0ZWRfZGF0ZV9maWx0ZXI6ICcnLFxcbiAgICB9KTtcXG4gICAgY29uc3QgcmVzZXRQYWdpbmF0aW9uID0gcmVmKGZhbHNlKTtcXG4gICAgY29uc3QgdG90YWxPcmdhbmlzYXRpb24gPSByZWYoMCk7XFxuICAgIGxldCByZWdpc3RyeUFwaUtleVN0YXR1czogYm9vbGVhbltdID0gcmVhY3RpdmUoW10pO1xcbiAgICBsZXQgZGVmYXVsdFZhbHVlU3RhdHVzOiBib29sZWFuW10gPSByZWFjdGl2ZShbXSk7XFxuICAgIGNvbnN0IHNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2ggPSByZWYoZmFsc2UpO1xcbiAgICBsZXQgZHJvcGRvd25SYW5nZSA9IHtcXG4gICAgICBjcmVhdGVkX2F0OiAnUmVnaXN0ZXJlZCBkYXRlIHJhbmdlJyxcXG4gICAgICBsYXN0X2xvZ2dlZF9pbjogJ0xhc3QgbG9naW4gZGF0ZSByYW5nZScsXFxuICAgIH07XFxuICAgIGNvbnN0IHNvcnRQYXJhbXMgPSByZWYoeyBvcmRlckJ5OiAnJywgZGlyZWN0aW9uOiAnJyB9KTtcXG5cXG4gICAgY29uc3QgeyBpZ25vcmVVcGRhdGVzIH0gPSB3YXRjaElnbm9yYWJsZShmaWx0ZXIsICgpID0+IHVuZGVmaW5lZCk7XFxuICAgIHdhdGNoKFxcbiAgICAgICgpID0+IHNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2gudmFsdWUsXFxuICAgICAgKHZhbHVlKSA9PiB7XFxuICAgICAgICBpZiAodmFsdWUpIHtcXG4gICAgICAgICAgcm90YXRlQ2xhc3MudmFsdWUgPSAncm90YXRlLTE4MCc7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICByb3RhdGVDbGFzcy52YWx1ZSA9ICdyb3RhdGUtMCc7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAodmFsdWUpIHtcXG4gICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZVB1Ymxpc2hlck1vZGVsKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2xvc2VQdWJsaXNoZXJNb2RlbCk7XFxuICAgICAgICB9XFxuICAgICAgfVxcbiAgICApO1xcblxcbiAgICBjb25zdCBjbGVhckRhdGVGaWx0ZXIgPSAoKSA9PiB7XFxuICAgICAgZmlsdGVyLnN0YXJ0X2RhdGUgPSAnJztcXG4gICAgICBmaWx0ZXIuZW5kX2RhdGUgPSAnJztcXG4gICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSAnJztcXG4gICAgICBjbGVhckRhdGUudmFsdWUgPSB0cnVlO1xcbiAgICB9O1xcblxcbiAgICBjb25zdCBjbG9zZVB1Ymxpc2hlck1vZGVsID0gKCkgPT4ge1xcbiAgICAgIHNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2gudmFsdWUgPSBmYWxzZTtcXG4gICAgfTtcXG4gICAgY29uc3QgZ2VuZXJhdGVMYWJlbCA9IChsYWJlbCkgPT4ge1xcbiAgICAgIHJldHVybiB7ICctLWxhYmVsJzogYCcke2xhYmVsfSdgIH07XFxuICAgIH07XFxuXFxuICAgIC8vbGlmZWN5Y2xlXFxuICAgIG9uTW91bnRlZCgoKSA9PiB7XFxuICAgICAgbGV0IGZpbHRlclBhcmFtcyA9IGdldEZpbHRlclBhcmFtc0Zyb21QcmV2aW91c1BhZ2UoKTtcXG5cXG4gICAgICBpZiAoZmlsdGVyUGFyYW1zKSB7XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbHRlclBhcmFtcy5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICBsZXQga2V5ID0ga2ViYWJDYXNlVG9TbmFrZWNhc2UoZmlsdGVyUGFyYW1zW2ldWzBdKTtcXG4gICAgICAgICAgbGV0IHZhbHVlID0gZmlsdGVyUGFyYW1zW2ldWzFdO1xcblxcbiAgICAgICAgICBpZiAoWydwdWJsaXNoZXJfdHlwZScsICdkYXRhX2xpY2Vuc2UnLCAnY291bnRyeSddLmluY2x1ZGVzKGtleSkpIHtcXG4gICAgICAgICAgICBmaWx0ZXJba2V5XS5wdXNoKHZhbHVlKTtcXG4gICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdkYXRlX3R5cGUnKSB7XFxuICAgICAgICAgICAgZGF0ZVR5cGUudmFsdWUgPSB2YWx1ZS5zcGxpdCgnLScpLmpvaW4oJyAnKTtcXG4gICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBmaWx0ZXJba2V5XSA9IHZhbHVlO1xcbiAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgfVxcblxcbiAgICAgIGZldGNoT3JnYW5pc2F0aW9uKDEpO1xcbiAgICB9KTtcXG5cXG4gICAgY29uc3QgZ2V0RmlsdGVyUGFyYW1zRnJvbVByZXZpb3VzUGFnZSA9ICgpID0+IHtcXG4gICAgICBsZXQgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uaHJlZj8udG9TdHJpbmcoKTtcXG5cXG4gICAgICBpZiAocXVlcnlTdHJpbmcpIHtcXG4gICAgICAgIHF1ZXJ5U3RyaW5nID0gcXVlcnlTdHJpbmcuc3BsaXQoJz8nKVsxXTtcXG5cXG4gICAgICAgIGxldCBxdWVyeVBhcmFtc0luS2V5VmFsOiBvYmplY3RbXSA9IFtdO1xcbiAgICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBxdWVyeVN0cmluZz8uc3BsaXQoJyYnKTtcXG5cXG4gICAgICAgIGlmIChxdWVyeVBhcmFtcykge1xcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHF1ZXJ5UGFyYW1zLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgbGV0IFtrZXksIHZhbHVlXSA9IHF1ZXJ5UGFyYW1zW2ldLnNwbGl0KCc9Jyk7XFxuICAgICAgICAgICAgaWYgKGtleSkge1xcbiAgICAgICAgICAgICAgcXVlcnlQYXJhbXNJbktleVZhbC5wdXNoKFtrZXksIHZhbHVlID8/ICcnXSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9XFxuICAgICAgICB9XFxuXFxuICAgICAgICByZXR1cm4gcXVlcnlQYXJhbXNJbktleVZhbDtcXG4gICAgICB9XFxuXFxuICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICB9O1xcblxcbiAgICAvKipcXG4gICAgICogRmV0Y2hpbmcgb3JnYW5pemF0aW9uIGxpc3RcXG4gICAgICpcXG4gICAgICovXFxuICAgIGNvbnN0IGN1cnJlbnRVUkwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcXG4gICAgY29uc3QgZmV0Y2hPcmdhbmlzYXRpb24gPSAoYWN0aXZlX3BhZ2UgPSAxKSA9PiB7XFxuICAgICAgb3JnYW5pc2F0aW9uRGF0YS5zdGF0dXMgPSAnZmV0Y2hpbmcnO1xcbiAgICAgIGxldCBxdWVyeVN0cmluZyA9ICcnO1xcbiAgICAgIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykpIHtcXG4gICAgICAgIHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaDtcXG4gICAgICB9XFxuXFxuICAgICAgYWN0aXZlX3BhZ2UgPSBhY3RpdmVfcGFnZSA/PyAxO1xcbiAgICAgIGxldCBlbmRwb2ludCA9IGAvbGlzdC1vcmdhbmlzYXRpb25zL3BhZ2UvJHthY3RpdmVfcGFnZX0ke3F1ZXJ5U3RyaW5nfWA7XFxuXFxuICAgICAgaWYgKHNvcnRQYXJhbXMudmFsdWUub3JkZXJCeSkge1xcbiAgICAgICAgdXJsUGFyYW1zLmFwcGVuZCgnb3JkZXJCeScsIHNvcnRQYXJhbXMudmFsdWUub3JkZXJCeSk7XFxuICAgICAgICB1cmxQYXJhbXMuYXBwZW5kKCdkaXJlY3Rpb24nLCBzb3J0UGFyYW1zLnZhbHVlLmRpcmVjdGlvbik7XFxuICAgICAgfVxcblxcbiAgICAgIGlmIChcXG4gICAgICAgIGlzRmlsdGVyQXBwbGllZC52YWx1ZSB8fFxcbiAgICAgICAgQm9vbGVhbihzb3J0UGFyYW1zLnZhbHVlLm9yZGVyQnkgJiYgc29ydFBhcmFtcy52YWx1ZS5kaXJlY3Rpb24pXFxuICAgICAgKSB7XFxuICAgICAgICBxdWVyeVN0cmluZyA9IHF1ZXJ5U3RyaW5nID8/ICcmcT0nO1xcbiAgICAgICAgZW5kcG9pbnQgPSBxdWVyeVN0cmluZyAhPT0gJycgPyBlbmRwb2ludCA6IGAke2VuZHBvaW50fWA7XFxuICAgICAgICBmb3IgKGNvbnN0IGZpbHRlcktleSBpbiBmaWx0ZXIpIHtcXG4gICAgICAgICAgaWYgKGZpbHRlcltmaWx0ZXJLZXldICYmIGZpbHRlcltmaWx0ZXJLZXldLmxlbmd0aCA+IDApIHtcXG4gICAgICAgICAgICB1cmxQYXJhbXMuYXBwZW5kKGZpbHRlcktleSwgZmlsdGVyW2ZpbHRlcktleV0pO1xcbiAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgfVxcblxcbiAgICAgIGF4aW9zXFxuICAgICAgICAuZ2V0KGVuZHBvaW50LCB7XFxuICAgICAgICAgIHBhcmFtczpcXG4gICAgICAgICAgICBpc0ZpbHRlckFwcGxpZWQudmFsdWUgfHxcXG4gICAgICAgICAgICBCb29sZWFuKHNvcnRQYXJhbXMudmFsdWUub3JkZXJCeSAmJiBzb3J0UGFyYW1zLnZhbHVlLmRpcmVjdGlvbilcXG4gICAgICAgICAgICAgID8gdXJsUGFyYW1zXFxuICAgICAgICAgICAgICA6ICcnLFxcbiAgICAgICAgfSlcXG4gICAgICAgIC50aGVuKChyZXMpID0+IHtcXG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSByZXMuZGF0YTtcXG4gICAgICAgICAgdG90YWxPcmdhbmlzYXRpb24udmFsdWUgPSByZXNwb25zZS5kYXRhPy50b3RhbDtcXG5cXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5kYXRhLmxlbmd0aCA9PT0gMCkge1xcbiAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uRGF0YS5zdGF0dXMgPSAnZW1wdHknO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICBvcmdhbmlzYXRpb25EYXRhLnN0YXR1cyA9ICdzdWNjZXNzJztcXG4gICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkRhdGEuZGF0YSA9IHJlc3BvbnNlLmRhdGE7XFxuXFxuICAgICAgICAgICAgICByZWZyZXNoU3RhdHVzQXJyYXlzKG9yZ2FuaXNhdGlvbkRhdGEuZGF0YSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkRhdGEuc3RhdHVzID0gJ2ZhaWxlZCB0byByZXRyaWV2ZSBkYXRhJztcXG4gICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgICAgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyk7XFxuICAgIH07XFxuXFxuICAgIC8qKlxcbiAgICAgKiBQcm94eSBVc2VyXFxuICAgICAqL1xcbiAgICAvLyBkaXNwbGF5L2hpZGUgdmFsaWRhdG9yIGxvYWRlclxcbiAgICBjb25zdCBwcm94eVVzZXIgPSAoaWQ6IG51bWJlcikgPT4ge1xcbiAgICAgIGxvYWRlci5zdGF0dXMgPSB0cnVlO1xcbiAgICAgIGxvYWRlci50ZXh0ID0gdHJhbnNsYXRlLmJ1dHRvbigncHJveHlfbG9naW4nKTtcXG4gICAgICBjb25zdCBlbmRwb2ludCA9IGAvcHJveHktb3JnYW5pc2F0aW9uLyR7aWR9YDtcXG5cXG4gICAgICBheGlvcy5nZXQoZW5kcG9pbnQpLnRoZW4oKHJlcykgPT4ge1xcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSByZXMuZGF0YTtcXG5cXG4gICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XFxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKCcvYWN0aXZpdGllcycpO1xcbiAgICAgICAgICB9LCAxMDAwKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgIGxvYWRlci5zdGF0dXMgPSBmYWxzZTtcXG4gICAgICAgICAgdG9hc3RNZXNzYWdlLm1lc3NhZ2UgPSByZXNwb25zZS5tZXNzYWdlO1xcbiAgICAgICAgICB0b2FzdE1lc3NhZ2UudHlwZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XFxuICAgICAgICB9XFxuICAgICAgfSk7XFxuICAgIH07XFxuXFxuICAgIC8qKlxcbiAgICAgKiBTb3J0aW5nIEJ5IHVwZGF0ZSBvblxcbiAgICAgKi9cXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xcbiAgICBsZXQgcXVlcnkgPSAnJyxcXG4gICAgICBkZWZhdWx0U29ydERpcmVjdGlvbiA9ICdkZXNjZW5kaW5nJyxcXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXFxuICAgICAgc29ydERpcmVjdGlvbiA9ICdkZXNjJztcXG5cXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoO1xcblxcbiAgICBsZXQgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyk7XFxuICAgIGxldCBvcmRlclR5cGUgPSByZWYoJycpO1xcbiAgICBvcmRlclR5cGUudmFsdWUgPSB1cmxQYXJhbXMuZ2V0KCdvcmRlckJ5JykgPz8gJyc7XFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcXG4gICAgbGV0IHJhbmdlID0gJyc7XFxuXFxuICAgIGNvbnN0IHNvcnRpbmdEaXJlY3Rpb24gPSAoKSA9PiB7XFxuICAgICAgcmV0dXJuIHNvcnRQYXJhbXMudmFsdWUuZGlyZWN0aW9uID09PSAnYXNjJyA/ICdkZXNjZW5kaW5nJyA6ICdhc2NlbmRpbmcnO1xcbiAgICB9O1xcblxcbiAgICBjb25zdCBzb3J0QnkgPSBhc3luYyAob3JkZXIpID0+IHtcXG4gICAgICByZXNldFBhZ2luYXRpb24udmFsdWUgPSB0cnVlO1xcbiAgICAgIHNvcnRQYXJhbXMudmFsdWUub3JkZXJCeSA9IG9yZGVyO1xcbiAgICAgIHNvcnRQYXJhbXMudmFsdWUuZGlyZWN0aW9uID1cXG4gICAgICAgIHNvcnRQYXJhbXMudmFsdWUuZGlyZWN0aW9uID09PSAnZGVzYycgPyAnYXNjJyA6ICdkZXNjJztcXG5cXG4gICAgICBpZiAoY3VycmVudFVSTC5pbmNsdWRlcygnPycpKSB7XFxuICAgICAgICBxdWVyeSA9IHVybFBhcmFtcy5nZXQoJ3EnKSA/PyAnJztcXG4gICAgICAgIHNvcnREaXJlY3Rpb24gPSB1cmxQYXJhbXMuZ2V0KCdkaXJlY3Rpb24nKSA9PT0gJ2Rlc2MnID8gJ2FzYycgOiAnZGVzYyc7XFxuXFxuICAgICAgICBsZXQgc3RhcnREYXRlID0gdXJsUGFyYW1zLmdldCgnc3RhcnRfZGF0ZScpID8/IGZhbHNlO1xcbiAgICAgICAgbGV0IGVuZERhdGUgPSB1cmxQYXJhbXMuZ2V0KCdlbmRfZGF0ZScpID8/IGZhbHNlO1xcblxcbiAgICAgICAgaWYgKHN0YXJ0RGF0ZSAmJiBlbmREYXRlKSB7XFxuICAgICAgICAgIHJhbmdlID0gYCZzdGFydF9kYXRlPSR7c3RhcnREYXRlfSZlbmRfZGF0ZT0ke2VuZERhdGV9YDtcXG4gICAgICAgIH1cXG4gICAgICB9XFxuXFxuICAgICAgYXdhaXQgZmV0Y2hPcmdhbmlzYXRpb24oMSk7XFxuICAgICAgcmVzZXRQYWdpbmF0aW9uLnZhbHVlID0gZmFsc2U7XFxuICAgIH07XFxuXFxuICAgIHdhdGNoKFxcbiAgICAgICgpID0+IFtcXG4gICAgICAgIGZpbHRlci5jb3VudHJ5LFxcbiAgICAgICAgZmlsdGVyLmNvbXBsZXRlbmVzcyxcXG4gICAgICAgIGZpbHRlci5yZWdpc3RyYXRpb25fdHlwZSxcXG4gICAgICAgIGZpbHRlci5wdWJsaXNoZXJfdHlwZSxcXG4gICAgICAgIGZpbHRlci5kYXRhX2xpY2Vuc2UsXFxuICAgICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSxcXG4gICAgICAgIGZpbHRlci5lbmRfZGF0ZSxcXG4gICAgICAgIGZpbHRlci5kYXRlX3R5cGUsXFxuICAgICAgXSxcXG4gICAgICAoKSA9PiB7XFxuICAgICAgICBmZXRjaE9yZ2FuaXNhdGlvbigpO1xcbiAgICAgIH0sXFxuICAgICAgeyBkZWVwOiB0cnVlIH1cXG4gICAgKTtcXG5cXG4gICAgY29uc3QgcmVzZXRBbGxGaWx0ZXJzID0gKCkgPT4ge1xcbiAgICAgIGlnbm9yZVVwZGF0ZXMoKCkgPT4ge1xcbiAgICAgICAgZmlsdGVyLmNvdW50cnkgPSBbXTtcXG4gICAgICAgIGZpbHRlci5wdWJsaXNoZXJfdHlwZSA9IFtdO1xcbiAgICAgICAgZmlsdGVyLmRhdGFfbGljZW5zZSA9IFtdO1xcbiAgICAgICAgZmlsdGVyLmNvbXBsZXRlbmVzcyA9ICcnO1xcbiAgICAgICAgZmlsdGVyLnJlZ2lzdHJhdGlvbl90eXBlID0gJyc7XFxuICAgICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSA9ICcnO1xcbiAgICAgICAgZmlsdGVyLmVuZF9kYXRlID0gJyc7XFxuICAgICAgICBmaWx0ZXIuZGF0ZV90eXBlID0gJ2NyZWF0ZWRfYXQnO1xcbiAgICAgICAgZmlsdGVyLnNlbGVjdGVkX2RhdGVfZmlsdGVyID0gJyc7XFxuICAgICAgICBjbGVhckRhdGUudmFsdWUgPSB0cnVlO1xcbiAgICAgIH0pO1xcbiAgICB9O1xcblxcbiAgICBjb25zdCBpc0ZpbHRlckFwcGxpZWQgPSBjb21wdXRlZCgoKSA9PiB7XFxuICAgICAgcmV0dXJuIChcXG4gICAgICAgIGZpbHRlci5jb3VudHJ5Lmxlbmd0aCArXFxuICAgICAgICAgIGZpbHRlci5wdWJsaXNoZXJfdHlwZS5sZW5ndGggK1xcbiAgICAgICAgICBmaWx0ZXIuZGF0YV9saWNlbnNlLmxlbmd0aCAhPVxcbiAgICAgICAgICAwIHx8XFxuICAgICAgICBmaWx0ZXIuY29tcGxldGVuZXNzICE9PSAnJyB8fFxcbiAgICAgICAgZmlsdGVyLnJlZ2lzdHJhdGlvbl90eXBlICE9PSAnJyB8fFxcbiAgICAgICAgKGZpbHRlci5zdGFydF9kYXRlICE9PSAnJyAmJiBmaWx0ZXIuZW5kX2RhdGUgIT09ICcnKVxcbiAgICAgICk7XFxuICAgIH0pO1xcblxcbiAgICBjb25zdCByZWZyZXNoU3RhdHVzQXJyYXlzID0gKG9yZ0RhdGEpID0+IHtcXG4gICAgICBmb3IgKGxldCBvcmdEYXR1bSBvZiBvcmdEYXRhLmRhdGEpIHtcXG4gICAgICAgIHJlZ2lzdHJ5QXBpS2V5U3RhdHVzW29yZ0RhdHVtLmlkXSA9XFxuICAgICAgICAgIG9yZ0RhdHVtPy5zZXR0aW5ncz8ucHVibGlzaGluZ19pbmZvPy50b2tlbl92ZXJpZmljYXRpb24gPz8gZmFsc2U7XFxuICAgICAgICBkZWZhdWx0VmFsdWVTdGF0dXNbb3JnRGF0dW0uaWRdID0gY2hlY2tJZkRlZmF1bHRWYWx1ZXNBcmVWYWxpZChcXG4gICAgICAgICAgb3JnRGF0dW0gPyBvcmdEYXR1bS5zZXR0aW5ncyA6IGZhbHNlXFxuICAgICAgICApO1xcbiAgICAgIH1cXG4gICAgfTtcXG5cXG4gICAgY29uc3QgY2hlY2tJZkRlZmF1bHRWYWx1ZXNBcmVWYWxpZCA9IChzZXR0aW5ncykgPT4ge1xcbiAgICAgIGlmIChzZXR0aW5ncykge1xcbiAgICAgICAgbGV0IGRlZmF1bHRWYWx1ZXMgPSBzZXR0aW5ncy5kZWZhdWx0X3ZhbHVlcztcXG4gICAgICAgIGxldCBhY3Rpdml0eURlZmF1bHRWYWx1ZXMgPSBzZXR0aW5ncy5hY3Rpdml0eV9kZWZhdWx0X3ZhbHVlcztcXG4gICAgICAgIHJldHVybiAhIShcXG4gICAgICAgICAgKGRlZmF1bHRWYWx1ZXM/LmRlZmF1bHRfY3VycmVuY3kgPz8gZmFsc2UpICYmXFxuICAgICAgICAgIChkZWZhdWx0VmFsdWVzPy5kZWZhdWx0X2xhbmd1YWdlID8/IGZhbHNlKSAmJlxcbiAgICAgICAgICAoYWN0aXZpdHlEZWZhdWx0VmFsdWVzPy5oaWVyYXJjaHkgPz8gZmFsc2UpICYmXFxuICAgICAgICAgIChhY3Rpdml0eURlZmF1bHRWYWx1ZXM/LmJ1ZGdldF9ub3RfcHJvdmlkZWQgPz8gZmFsc2UpICYmXFxuICAgICAgICAgIChhY3Rpdml0eURlZmF1bHRWYWx1ZXM/Lmh1bWFuaXRhcmlhbiAhPSBudWxsIHx8XFxuICAgICAgICAgICAgYWN0aXZpdHlEZWZhdWx0VmFsdWVzPy5odW1hbml0YXJpYW4gIT0gJycgfHxcXG4gICAgICAgICAgICBhY3Rpdml0eURlZmF1bHRWYWx1ZXM/Lmh1bWFuaXRhcmlhbiAhPSBmYWxzZSlcXG4gICAgICAgICk7XFxuICAgICAgfVxcblxcbiAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgfTtcXG5cXG4gICAgY29uc3Qgc2V0RGF0ZVJhbmdlRGF0ZSA9IChzdGFydERhdGUsIGVuZERhdGUsIHNlbGVjdGVkRGF0ZUZpbHRlciA9ICcnKSA9PiB7XFxuICAgICAgZmlsdGVyLnN0YXJ0X2RhdGUgPSBzdGFydERhdGU7XFxuICAgICAgZmlsdGVyLmVuZF9kYXRlID0gZW5kRGF0ZTtcXG4gICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSBzZWxlY3RlZERhdGVGaWx0ZXI7XFxuICAgIH07XFxuXFxuICAgIGNvbnN0IHNldERhdGVUeXBlID0gKGRhdGVUeXBlKSA9PiB7XFxuICAgICAgZmlsdGVyLmRhdGVfdHlwZSA9IGRhdGVUeXBlO1xcbiAgICB9O1xcblxcbiAgICBjb25zdCByb3RhdGVDbGFzcyA9IHJlZignJyk7XFxuXFxuICAgIGNvbnN0IHRvZ2dsZVNob3dNdWx0aVNlbGVjdCA9IChldmVudCkgPT4ge1xcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xcbiAgICAgIGNvbnN0IHJlY3QgPSBldmVudC50YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XFxuICAgICAgbXVsdGlzZWxlY3RTdHlsZS52YWx1ZSA9IHtcXG4gICAgICAgIHRvcDogTnVtYmVyKHJlY3QudG9wKSA8IDEwMCA/IDIxMCArICdweCcgOiBOdW1iZXIocmVjdC50b3ApICsgNTAgKyAncHgnLFxcbiAgICAgICAgbGVmdDogTnVtYmVyKHJlY3QubGVmdCkgKyAncHgnLFxcbiAgICAgIH07XFxuICAgICAgc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaC52YWx1ZSA9ICFzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZhbHVlO1xcbiAgICB9O1xcblxcbiAgICBjb25zdCBzZXRTZWxlY3RlZFB1Ymxpc2hlciA9IChwdWJsaXNoZXJUeXBlcykgPT4ge1xcbiAgICAgIGZpbHRlci5wdWJsaXNoZXJfdHlwZSA9IHB1Ymxpc2hlclR5cGVzO1xcbiAgICB9O1xcblxcbiAgICAvKlxcbiAgICAgKiBGb3IgbWFwcGluZyBjb3VudHJ5LCBwdWJsaXNoZXJfdHlwZSBhbmQgZGF0YSBsaWNlbnNlXFxuICAgICAqL1xcbiAgICBjb25zdCBzaG93TWFwcGVkRGF0YSA9IChrZXksIGRhdGEsIG1hcCkgPT4ge1xcbiAgICAgIGlmIChkYXRhKSB7XFxuICAgICAgICBpZiAoa2V5ID09ICdkYXRhX2xpY2Vuc2UnKSB7XFxuICAgICAgICAgIGxldCBsaWNlbnNlID0gZGF0YVtrZXldO1xcbiAgICAgICAgICBsaWNlbnNlID0gbGljZW5zZT8udHJpbSgpO1xcbiAgICAgICAgICByZXR1cm4gbGljZW5zZSA/IG1hcFtsaWNlbnNlXSA6IHRyYW5zbGF0ZS5taXNzaW5nKCdub3RfYXZhaWxhYmxlJyk7XFxuICAgICAgICB9XFxuXFxuICAgICAgICByZXR1cm4gZGF0YVtrZXldID8gbWFwW2RhdGFba2V5XV0gOiB0cmFuc2xhdGUubWlzc2luZygnbm90X2F2YWlsYWJsZScpO1xcbiAgICAgIH1cXG4gICAgICByZXR1cm4gdHJhbnNsYXRlLm1pc3NpbmcoJ25vdF9hdmFpbGFibGUnKTtcXG4gICAgfTtcXG5cXG4gICAgcmV0dXJuIHtcXG4gICAgICBCdG5Db21wb25lbnQsXFxuICAgICAgTXVsdGlzZWxlY3QsXFxuICAgICAgRGF0ZVJhbmdlV2lkZ2V0LFxcbiAgICAgIE11bHRpU2VsZWN0V2l0aFNlYXJjaCxcXG4gICAgICBvcmdhbmlzYXRpb25EYXRhLFxcbiAgICAgIGRyb3Bkb3duUmFuZ2UsXFxuICAgICAgc2V0U2VsZWN0ZWRQdWJsaXNoZXIsXFxuICAgICAgdG9nZ2xlU2hvd011bHRpU2VsZWN0LFxcbiAgICAgIHNldERhdGVUeXBlLFxcbiAgICAgIHNldERhdGVSYW5nZURhdGUsXFxuICAgICAgc29ydEJ5LFxcbiAgICAgIHJlc2V0QWxsRmlsdGVycyxcXG4gICAgICBzb3J0aW5nRGlyZWN0aW9uLFxcbiAgICAgIGRlZmF1bHRTb3J0RGlyZWN0aW9uLFxcbiAgICAgIHByb3h5VXNlcixcXG4gICAgICBkYXRlRm9ybWF0LFxcbiAgICAgIGZldGNoT3JnYW5pc2F0aW9uLFxcbiAgICAgIGRlZmF1bHRWYWx1ZVN0YXR1cyxcXG4gICAgICByZWdpc3RyeUFwaUtleVN0YXR1cyxcXG4gICAgICBvcmRlclR5cGUsXFxuICAgICAgY2xlYXJEYXRlLFxcbiAgICAgIGZpbHRlcixcXG4gICAgICBzbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZSxcXG4gICAgICBpc0ZpbHRlckFwcGxpZWQsXFxuICAgICAgcHJvcHMsXFxuICAgICAgc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaCxcXG4gICAgICBkYXRlVHlwZSxcXG4gICAgICByb3RhdGVDbGFzcyxcXG4gICAgICBtdWx0aXNlbGVjdFN0eWxlLFxcbiAgICAgIGNsZWFyRGF0ZUZpbHRlcixcXG4gICAgICBkYXRlRHJvcGRvd24sXFxuICAgICAgc29ydFBhcmFtcyxcXG4gICAgICByZXNldFBhZ2luYXRpb24sXFxuICAgICAgc2hvd01hcHBlZERhdGEsXFxuICAgICAgdG90YWxPcmdhbmlzYXRpb24sXFxuICAgICAgY291bnRyaWVzV2l0aFByZWZpeCxcXG4gICAgICBnZW5lcmF0ZUxhYmVsLFxcbiAgICAgIHRyYW5zbGF0ZSxcXG4gICAgfTtcXG4gIH0sXFxufSk7XFxuPC9zY3JpcHQ+XFxuXFxuPHN0eWxlPlxcbi5tdWx0aXNlbGVjdC13cmFwcGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHotaW5kZXg6IDU7XFxuICB3aWR0aDogNDI0cHg7XFxuICBoZWlnaHQ6IGZpdC1jb250ZW50O1xcbiAgYmFja2dyb3VuZDogd2hpdGU7XFxuICBvdmVyZmxvdy15OiBhdXRvO1xcbn1cXG4ubXVsdGlzZWxlY3QtbG9va2FsaWtlIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjZDFkNWRiO1xcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgd2lkdGg6IDE2MHB4ICFpbXBvcnRhbnQ7XFxuICBoZWlnaHQ6IDQwcHg7XFxuICBwYWRkaW5nOiAxMnB4O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG48L3N0eWxlPlxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIlxcbkBrZXlmcmFtZXMgc3Bpbm5lci0wNjExZDlmMCB7XFxuMCUge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApIHJvdGF0ZSgwZGVnKTtcXG59XFxuMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCkgcm90YXRlKDM2MGRlZyk7XFxufVxcbn1cXG4uc3BpbltkYXRhLXYtMDYxMWQ5ZjBdOjpiZWZvcmUge1xcbiAgYW5pbWF0aW9uOiAxLjVzIGxpbmVhciBpbmZpbml0ZSBzcGlubmVyLTA2MTFkOWYwO1xcbiAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IGluaGVyaXQ7XFxuICBib3JkZXI6IHNvbGlkIDNweCAjY2ZkMGQxO1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogZ3JleTtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIGNvbnRlbnQ6ICcnO1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiA1MCU7XFxuICBsZWZ0OiA1MCU7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApO1xcbiAgd2lkdGg6IDIwcHg7XFxuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xcbn1cXG4uc3BpbltkYXRhLXYtMDYxMWQ5ZjBdIHtcXG4gIGhlaWdodDogNDBweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgbWFyZ2luOiBhdXRvO1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlckxpc3RpbmcudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCI7QUEydUNBO0FBQ0U7SUFDRSxrREFBa0Q7QUFDcEQ7QUFDQTtJQUNFLG9EQUFvRDtBQUN0RDtBQUNGO0FBRUE7RUFDRSxnREFBdUM7RUFDdkMsNkJBQTZCO0VBQzdCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIsa0JBQWtCO0VBQ2xCLFdBQVc7RUFDWCxZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLFFBQVE7RUFDUixTQUFTO0VBQ1QscUNBQXFDO0VBQ3JDLFdBQVc7RUFDWCxzQkFBc0I7QUFDeEI7QUFDQTtFQUNFLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIsV0FBVztFQUNYLFlBQVk7QUFDZFwiLFwic291cmNlc0NvbnRlbnRcIjpbXCI8dGVtcGxhdGU+XFxuICA8ZGl2IGNsYXNzPVxcXCJweC02IHB5LTQgbWQ6cHgtMTBcXFwiPlxcbiAgICA8TG9hZGVyIHYtaWY9XFxcImlzTG9hZGVyVmlzaWJsZVxcXCIgLz5cXG4gICAgPGRpdiBjbGFzcz1cXFwibXktNCBmbGV4IGp1c3RpZnktYmV0d2VlblxcXCI+XFxuICAgICAgPGg0IGNsYXNzPVxcXCJtci00IHRleHQtM3hsIGZvbnQtYm9sZCB4bDp0ZXh0LWhlYWRpbmctNFxcXCI+XFxuICAgICAgICB7eyB0cmFuc2xhdGUudGV4dEZyb21LZXkoJ3VzZXIudXNlcnMnKSB9fVxcbiAgICAgIDwvaDQ+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiaW5saW5lLWZsZXggZmxleC1jb2wgaXRlbXMtZW5kIGp1c3RpZnktZW5kIGdhcC0yIG1kOmZsZXgtcm93XFxcIj5cXG4gICAgICAgIDxUb2FzdFxcbiAgICAgICAgICB2LWlmPVxcXCJcXG4gICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSAmJlxcbiAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlICYmXFxuICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgIT09ICcnXFxuICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgOm1lc3NhZ2U9XFxcInRvYXN0RGF0YS5tZXNzYWdlXFxcIlxcbiAgICAgICAgICA6dHlwZT1cXFwidG9hc3REYXRhLnR5cGVcXFwiXFxuICAgICAgICAvPlxcbiAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICB2LWlmPVxcXCJ1c2Vyc0RhdGFbJ3RvdGFsJ10gPiAwXFxcIlxcbiAgICAgICAgICByZWY9XFxcImRyb3Bkb3duQnRuXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiYnV0dG9uIHNlY29uZGFyeS1idG4gd2hpdGVzcGFjZS1ub3dyYXAgZm9udC1ib2xkXFxcIlxcbiAgICAgICAgICBAY2xpY2s9XFxcImRvd25sb2FkQWxsXFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8c3ZnLXZ1ZSBpY29uPVxcXCJkb3dubG9hZC1maWxlXFxcIiAvPlxcbiAgICAgICAgICB7eyBjaGVja2xpc3QubGVuZ3RoID09PSAwID8gdHJhbnNsYXRlLmJ1dHRvbignZG93bmxvYWRfYWxsJykgOiAnJyB9fVxcbiAgICAgICAgPC9idXR0b24+XFxuICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgIHYtaWY9XFxcInVzZXJSb2xlICE9PSAnZ2VuZXJhbF91c2VyJ1xcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcInByaW1hcnktYnRuIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgICBAY2xpY2s9XFxcIlxcbiAgICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICAgIGVtcHR5Rm9ybURhdGEoKTtcXG4gICAgICAgICAgICAgIHNldEZvcm1FcnJvcigpO1xcbiAgICAgICAgICAgICAgYWRkVXNlckZvcm0gPSB0cnVlO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgXFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidGV4dC1iYXNlXFxcIiBpY29uPVxcXCJwbHVzLW91dGxpbmVkXFxcIiAvPnt7XFxuICAgICAgICAgICAgdHJhbnNsYXRlLmJ1dHRvbignYWRkX2FfbmV3JylcXG4gICAgICAgICAgfX1cXG4gICAgICAgICAge3tcXG4gICAgICAgICAgICB1c2VyUm9sZSA9PT0gJ2FkbWluJ1xcbiAgICAgICAgICAgICAgPyB0cmFuc2xhdGUudGV4dEZyb21LZXkoJ3VzZXIudXNlcnMnKVxcbiAgICAgICAgICAgICAgOiB0cmFuc2xhdGUudGV4dEZyb21LZXkoJ3VzZXIudXNlcl9yb2xlcy5pYXRpX2FkbWluJylcXG4gICAgICAgICAgfX1cXG4gICAgICAgIDwvYnV0dG9uPlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG5cXG4gICAgPGRpdj5cXG4gICAgICA8UG9wdXBNb2RhbFxcbiAgICAgICAgOm1vZGFsLWFjdGl2ZT1cXFwiYWRkVXNlckZvcm0gfHwgZWRpdFVzZXJGb3JtXFxcIlxcbiAgICAgICAgQGNsb3NlPVxcXCJcXG4gICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgIGFkZFVzZXJGb3JtID0gZmFsc2U7XFxuICAgICAgICAgICAgZWRpdFVzZXJGb3JtID0gZmFsc2U7XFxuICAgICAgICAgIH1cXG4gICAgICAgIFxcXCJcXG4gICAgICA+XFxuICAgICAgICA8ZGl2XFxuICAgICAgICAgIGNsYXNzPVxcXCJwb3B1cC1tb2RlbFxcXCJcXG4gICAgICAgICAgQGtleXVwLmVudGVyPVxcXCJhZGRVc2VyRm9ybSA/IGNyZWF0ZVVzZXIoKSA6IHVwZGF0ZVVzZXIoKVxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwibWItNSB0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1ibHVlY29yYWxcXFwiPlxcbiAgICAgICAgICAgIHt7XFxuICAgICAgICAgICAgICBhZGRVc2VyRm9ybVxcbiAgICAgICAgICAgICAgICA/IHRyYW5zbGF0ZS5idXR0b24oJ2FkZF9hX25ldycpXFxuICAgICAgICAgICAgICAgIDogdHJhbnNsYXRlLmJ1dHRvbignZWRpdCcpXFxuICAgICAgICAgICAgfX1cXG4gICAgICAgICAgICB7e1xcbiAgICAgICAgICAgICAgdXNlclJvbGUgPT09ICdhZG1pbidcXG4gICAgICAgICAgICAgICAgPyB0cmFuc2xhdGUudGV4dEZyb21LZXkoJ3VzZXIudXNlcnMnKVxcbiAgICAgICAgICAgICAgICA6IHRyYW5zbGF0ZS50ZXh0RnJvbUtleSgndXNlci51c2VyX3JvbGVzLmlhdGlfYWRtaW4nKVxcbiAgICAgICAgICAgIH19XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJncmlkIGdyaWQtY29scy0yIGdhcC02XFxcIj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtc3Bhbi0yIGZsZXggZmxleC1jb2wgaXRlbXMtc3RhcnQgZ2FwLTJcXFwiPlxcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi01MFxcXCI+XFxuICAgICAgICAgICAgICAgIHt7IHRyYW5zbGF0ZS5yZWdpc3RlclRleHQoJ2Z1bGxuYW1lLmxhYmVsJykgfX1cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtY3JpbXNvbi01MFxcXCI+ICogPC9zcGFuPjwvbGFiZWxcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgICBpZD1cXFwiZnVsbF9uYW1lXFxcIlxcbiAgICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJmb3JtRGF0YS5mdWxsX25hbWVcXFwiXFxuICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgZm9ybUVycm9yWydmdWxsX25hbWUnXSA/ICdib3JkZXItY3JpbXNvbi01MCcgOiAnYm9yZGVyLW4tMzAnXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcInctZnVsbCByb3VuZGVkIGJvcmRlciBwLTNcXFwiXFxuICAgICAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cXFwiZm9ybUVycm9yWydmdWxsX25hbWUnXVxcXCIgY2xhc3M9XFxcImVycm9yXFxcIj57e1xcbiAgICAgICAgICAgICAgICBmb3JtRXJyb3JbJ2Z1bGxfbmFtZSddWzBdXFxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGdhcC0yXFxcIj5cXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cXFwidGV4dC1zbSB0ZXh0LW4tNTBcXFwiXFxuICAgICAgICAgICAgICAgID57eyB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCd1c2VybmFtZS5sYWJlbCcpXFxuICAgICAgICAgICAgICAgIH19PHNwYW4gY2xhc3M9XFxcInRleHQtY3JpbXNvbi01MFxcXCI+ICo8L3NwYW4+PC9sYWJlbFxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICAgIGlkPVxcXCJ1c2VybmFtZVxcXCJcXG4gICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiZm9ybURhdGEudXNlcm5hbWVcXFwiXFxuICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgZm9ybUVycm9yWyd1c2VybmFtZSddID8gJ2JvcmRlci1jcmltc29uLTUwJyA6ICdib3JkZXItbi0zMCdcXG4gICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwidy1mdWxsIHJvdW5kZWQgYm9yZGVyIHAtM1xcXCJcXG4gICAgICAgICAgICAgICAgdHlwZT1cXFwidGV4dFxcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8c3BhbiB2LWlmPVxcXCJmb3JtRXJyb3JbJ3VzZXJuYW1lJ11cXFwiIGNsYXNzPVxcXCJlcnJvclxcXCI+e3tcXG4gICAgICAgICAgICAgICAgZm9ybUVycm9yWyd1c2VybmFtZSddWzBdXFxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGdhcC0yXFxcIj5cXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cXFwidGV4dC1zbSB0ZXh0LW4tNTBcXFwiXFxuICAgICAgICAgICAgICAgID57eyB0cmFuc2xhdGUudGV4dEZyb21LZXkoJ3VzZXIuZW1haWwnKVxcbiAgICAgICAgICAgICAgICB9fTxzcGFuIGNsYXNzPVxcXCJ0ZXh0LWNyaW1zb24tNTBcXFwiPiAqIDwvc3Bhbj48L2xhYmVsXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgICAgaWQ9XFxcImVtYWlsXFxcIlxcbiAgICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJmb3JtRGF0YS5lbWFpbFxcXCJcXG4gICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICBmb3JtRXJyb3JbJ2VtYWlsJ10gPyAnYm9yZGVyLWNyaW1zb24tNTAnIDogJ2JvcmRlci1uLTMwJ1xcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ3LWZ1bGwgcm91bmRlZCBib3JkZXIgcC0zXFxcIlxcbiAgICAgICAgICAgICAgICB0eXBlPVxcXCJlbWFpbFxcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8c3BhbiB2LWlmPVxcXCJmb3JtRXJyb3JbJ2VtYWlsJ11cXFwiIGNsYXNzPVxcXCJlcnJvclxcXCI+e3tcXG4gICAgICAgICAgICAgICAgZm9ybUVycm9yWydlbWFpbCddWzBdXFxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG5cXG4gICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICB2LWlmPVxcXCJhZGRVc2VyRm9ybVxcXCJcXG4gICAgICAgICAgICAgIDpjbGFzcz1cXFwiZm9ybUVycm9yWydzdGF0dXMnXSAmJiAnZXJyb3JfX211bHRpc2VsZWN0J1xcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGdhcC0yXFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cXFwidGV4dC1zbSB0ZXh0LW4tNTBcXFwiXFxuICAgICAgICAgICAgICAgID57eyB0cmFuc2xhdGUudGV4dEZyb21LZXkoJ3VzZXIuc3RhdHVzJylcXG4gICAgICAgICAgICAgICAgfX08c3BhbiBjbGFzcz1cXFwidGV4dC1jcmltc29uLTUwXFxcIj4gKiA8L3NwYW4+PC9sYWJlbFxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgICAgICAgIGlkPVxcXCJzdGF0dXNcXFwiXFxuICAgICAgICAgICAgICAgIHYtbW9kZWw9XFxcImZvcm1EYXRhLnN0YXR1c1xcXCJcXG4gICAgICAgICAgICAgICAgOm9wdGlvbnM9XFxcInN0YXR1c1xcXCJcXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIlNlbGVjdCBzdGF0dXNcXFwiXFxuICAgICAgICAgICAgICAgIDpzZWFyY2hhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDxzcGFuIHYtaWY9XFxcImZvcm1FcnJvclsnc3RhdHVzJ11cXFwiIGNsYXNzPVxcXCJlcnJvclxcXCI+e3tcXG4gICAgICAgICAgICAgICAgZm9ybUVycm9yWydzdGF0dXMnXVswXVxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgdi1pZj1cXFwidXNlclJvbGUgPT09ICdhZG1pbidcXFwiXFxuICAgICAgICAgICAgICA6Y2xhc3M9XFxcImZvcm1FcnJvclsncm9sZV9pZCddICYmICdlcnJvcl9fbXVsdGlzZWxlY3QnXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggZmxleC1jb2wgaXRlbXMtc3RhcnQgZ2FwLTJcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi01MFxcXCJcXG4gICAgICAgICAgICAgICAgPnt7IHRyYW5zbGF0ZS50ZXh0RnJvbUtleSgndXNlci5yb2xlJylcXG4gICAgICAgICAgICAgICAgfX08c3BhbiBjbGFzcz1cXFwidGV4dC1jcmltc29uLTUwXFxcIj4gKiA8L3NwYW4+PC9sYWJlbFxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgICAgICAgIGlkPVxcXCJyb2xlXFxcIlxcbiAgICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJmb3JtRGF0YS5yb2xlX2lkXFxcIlxcbiAgICAgICAgICAgICAgICA6b3B0aW9ucz1cXFwicm9sZXNcXFwiXFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJTZWxlY3QgdXNlciByb2xlXFxcIlxcbiAgICAgICAgICAgICAgICA6c2VhcmNoYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8c3BhbiB2LWlmPVxcXCJmb3JtRXJyb3JbJ3JvbGVfaWQnXVxcXCIgY2xhc3M9XFxcImVycm9yXFxcIj57e1xcbiAgICAgICAgICAgICAgICBmb3JtRXJyb3JbJ3JvbGVfaWQnXVswXVxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBmbGV4LWNvbCBpdGVtcy1zdGFydCBnYXAtMlxcXCI+XFxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XFxcInRleHQtc20gdGV4dC1uLTUwXFxcIlxcbiAgICAgICAgICAgICAgICA+e3sgdHJhbnNsYXRlLnJlZ2lzdGVyVGV4dCgncGFzc3dvcmQubmV3JylcXG4gICAgICAgICAgICAgICAgfX08c3BhbiB2LWlmPVxcXCIhZWRpdFVzZXJGb3JtXFxcIiBjbGFzcz1cXFwidGV4dC1jcmltc29uLTUwXFxcIj5cXG4gICAgICAgICAgICAgICAgICAqXFxuICAgICAgICAgICAgICAgIDwvc3Bhbj48L2xhYmVsXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgICAgaWQ9XFxcInBhc3N3b3JkXFxcIlxcbiAgICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJmb3JtRGF0YS5wYXNzd29yZFxcXCJcXG4gICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICBmb3JtRXJyb3JbJ3Bhc3N3b3JkJ10gPyAnYm9yZGVyLWNyaW1zb24tNTAnIDogJ2JvcmRlci1uLTMwJ1xcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ3LWZ1bGwgcm91bmRlZCBib3JkZXIgYm9yZGVyLW4tMzAgcC0zXFxcIlxcbiAgICAgICAgICAgICAgICB0eXBlPVxcXCJwYXNzd29yZFxcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8c3BhbiB2LWlmPVxcXCJmb3JtRXJyb3JbJ3Bhc3N3b3JkJ11cXFwiIGNsYXNzPVxcXCJlcnJvclxcXCI+e3tcXG4gICAgICAgICAgICAgICAgZm9ybUVycm9yWydwYXNzd29yZCddWzBdXFxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGdhcC0yXFxcIj5cXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cXFwidGV4dC1zbSB0ZXh0LW4tNTBcXFwiPlxcbiAgICAgICAgICAgICAgICB7eyB0cmFuc2xhdGUucmVnaXN0ZXJUZXh0KCdwYXNzd29yZC5jb25maXJtJykgfX1cXG4gICAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cXFwiIWVkaXRVc2VyRm9ybVxcXCIgY2xhc3M9XFxcInRleHQtY3JpbXNvbi01MFxcXCI+ICogPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC9sYWJlbD5cXG5cXG4gICAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgICBpZD1cXFwicGFzc3dvcmQtY29uZmlybWF0aW9uXFxcIlxcbiAgICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb25cXFwiXFxuICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgZm9ybUVycm9yWydwYXNzd29yZF9jb25maXJtYXRpb24nXVxcbiAgICAgICAgICAgICAgICAgICAgPyAnYm9yZGVyLWNyaW1zb24tNTAnXFxuICAgICAgICAgICAgICAgICAgICA6ICdib3JkZXItbi0zMCdcXG4gICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwidy1mdWxsIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTMwIHAtM1xcXCJcXG4gICAgICAgICAgICAgICAgdHlwZT1cXFwicGFzc3dvcmRcXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cXFwiZm9ybUVycm9yWydwYXNzd29yZF9jb25maXJtYXRpb24nXVxcXCIgY2xhc3M9XFxcImVycm9yXFxcIj57e1xcbiAgICAgICAgICAgICAgICBmb3JtRXJyb3JbJ3Bhc3N3b3JkX2NvbmZpcm1hdGlvbiddWzBdXFxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcIm10LTYgZmxleCBqdXN0aWZ5LWVuZCBzcGFjZS14LTJcXFwiPlxcbiAgICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJzZWNvbmRhcnktYnRuIGZvbnQtYm9sZFxcXCJcXG4gICAgICAgICAgICAgIEBjbGljaz1cXFwiXFxuICAgICAgICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICAgICAgICBhZGRVc2VyRm9ybSA9IGZhbHNlO1xcbiAgICAgICAgICAgICAgICAgIGVkaXRVc2VyRm9ybSA9IGZhbHNlO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAge3sgdHJhbnNsYXRlLmJ1dHRvbignY2FuY2VsJykgfX1cXG4gICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwicHJpbWFyeS1idG4gIXB4LTEwXFxcIlxcbiAgICAgICAgICAgICAgQGNsaWNrPVxcXCJhZGRVc2VyRm9ybSA/IGNyZWF0ZVVzZXIoKSA6IHVwZGF0ZVVzZXIoKVxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICB7eyB0cmFuc2xhdGUuYnV0dG9uKCdzYXZlJykgfX1cXG4gICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L1BvcHVwTW9kYWw+XFxuICAgICAgPFBvcHVwTW9kYWxcXG4gICAgICAgIDptb2RhbC1hY3RpdmU9XFxcImRlbGV0ZU1vZGFsXFxcIlxcbiAgICAgICAgQGNsb3NlPVxcXCJcXG4gICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgIGRlbGV0ZU1vZGFsID0gZmFsc2U7XFxuICAgICAgICAgIH1cXG4gICAgICAgIFxcXCJcXG4gICAgICA+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ0aXRsZSBtYi02IGZsZXhcXFwiPlxcbiAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwibXItMSBtdC0wLjUgdGV4dC1sZyB0ZXh0LWNyaW1zb24tNDBcXFwiIGljb249XFxcImRlbGV0ZVxcXCIgLz5cXG4gICAgICAgICAgPGIgY2xhc3M9XFxcInVwcGVyY2FzZVxcXCI+XFxuICAgICAgICAgICAge3sgdHJhbnNsYXRlLmJ1dHRvbignZGVsZXRlX2VsZW1lbnQnLCAndXNlci51c2VyJykgfX1cXG4gICAgICAgICAgPC9iPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgICA8cCBjbGFzcz1cXFwicm91bmRlZC1sZyBiZy1yb3NlIHAtNFxcXCI+XFxuICAgICAgICAgIHt7XFxuICAgICAgICAgICAgdHJhbnNsYXRlXFxuICAgICAgICAgICAgICAudGV4dEZyb21LZXkoJ3VzZXIuZGVsZXRlX2NvbmZpcm1hdGlvbicpXFxuICAgICAgICAgICAgICAucmVwbGFjZSgnOmVsZW1lbnQnLCAnOicpXFxuICAgICAgICAgIH19XFxuICAgICAgICAgIDxiPiB7eyBkZWxldGVVc2VybmFtZSB9fTwvYj4gP1xcbiAgICAgICAgPC9wPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwibXQtNiBmbGV4IGp1c3RpZnktZW5kIHNwYWNlLXgtMlxcXCI+XFxuICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICBjbGFzcz1cXFwic2Vjb25kYXJ5LWJ0biBmb250LWJvbGRcXFwiXFxuICAgICAgICAgICAgQGNsaWNrPVxcXCJcXG4gICAgICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICAgICAgZGVsZXRlTW9kYWwgPSBmYWxzZTtcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICB7eyB0cmFuc2xhdGUuYnV0dG9uKCdjYW5jZWwnKSB9fVxcbiAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cXFwicHJpbWFyeS1idG4gIXB4LTEwXFxcIiBAY2xpY2s9XFxcImRlbGV0ZVVzZXIoZGVsZXRlSWQpXFxcIj5cXG4gICAgICAgICAgICB7eyB0cmFuc2xhdGUuYnV0dG9uKCdkZWxldGUnKSB9fVxcbiAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvUG9wdXBNb2RhbD5cXG5cXG4gICAgICA8UG9wdXBNb2RhbFxcbiAgICAgICAgOm1vZGFsLWFjdGl2ZT1cXFwic3RhdHVzTW9kYWxcXFwiXFxuICAgICAgICBAY2xvc2U9XFxcIlxcbiAgICAgICAgICAoKSA9PiB7XFxuICAgICAgICAgICAgc3RhdHVzTW9kYWwgPSBmYWxzZTtcXG4gICAgICAgICAgfVxcbiAgICAgICAgXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcInRpdGxlIG1iLTYgZmxleFxcXCI+XFxuICAgICAgICAgIDxiIGNsYXNzPVxcXCJmaXJzdC1sZXR0ZXI6dXBwZXJjYXNlXFxcIj5cXG4gICAgICAgICAgICB7eyB0cmFuc2xhdGUuYnV0dG9uKCdtYWtlX2VsZW1lbnQnLCAndXNlci51c2VyJykudG9Mb3dlckNhc2UoKSB9fVxcbiAgICAgICAgICAgIHt7XFxuICAgICAgICAgICAgICBzdGF0dXNWYWx1ZVxcbiAgICAgICAgICAgICAgICA/IHRyYW5zbGF0ZS50ZXh0RnJvbUtleSgndXNlci5pbmFjdGl2ZScpXFxuICAgICAgICAgICAgICAgIDogdHJhbnNsYXRlLnRleHRGcm9tS2V5KCd1c2VyLmFjdGl2ZScpXFxuICAgICAgICAgICAgfX1cXG4gICAgICAgICAgPC9iPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgICA8cCBjbGFzcz1cXFwicm91bmRlZC1sZyBiZy1yb3NlIHAtNFxcXCI+XFxuICAgICAgICAgIHt7IHRyYW5zbGF0ZS5idXR0b24oJ21ha2VfY29uZmlybWF0aW9uJykucmVwbGFjZSgnOmVsZW1lbnQnLCAnICcpIH19XFxuICAgICAgICAgIDxiPiB7eyBzdGF0dXNVc2VybmFtZSB9fTwvYj5cXG4gICAgICAgICAge3tcXG4gICAgICAgICAgICBzdGF0dXNWYWx1ZVxcbiAgICAgICAgICAgICAgPyB0cmFuc2xhdGUudGV4dEZyb21LZXkoJ3VzZXIuaW5hY3RpdmUnKVxcbiAgICAgICAgICAgICAgOiB0cmFuc2xhdGUudGV4dEZyb21LZXkoJ3VzZXIuYWN0aXZlJylcXG4gICAgICAgICAgfX1cXG4gICAgICAgICAgP1xcbiAgICAgICAgPC9wPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwibXQtNiBmbGV4IGp1c3RpZnktZW5kIHNwYWNlLXgtMlxcXCI+XFxuICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICBjbGFzcz1cXFwic2Vjb25kYXJ5LWJ0biBmb250LWJvbGRcXFwiXFxuICAgICAgICAgICAgQGNsaWNrPVxcXCJcXG4gICAgICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICAgICAgc3RhdHVzTW9kYWwgPSBmYWxzZTtcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICB7eyB0cmFuc2xhdGUuYnV0dG9uKCdjYW5jZWwnKSB9fVxcbiAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJwcmltYXJ5LWJ0biAhcHgtMTBcXFwiXFxuICAgICAgICAgICAgQGNsaWNrPVxcXCJ0b2dnbGVVc2VyU3RhdHVzKHN0YXR1c0lkKVxcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIHt7IHRyYW5zbGF0ZS5jb21tb25UZXh0KCd5ZXMnKSB9fVxcbiAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvUG9wdXBNb2RhbD5cXG5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJmaWx0ZXJzIG1iLTQgZmxleCBmbGV4LXdyYXAganVzdGlmeS1iZXR3ZWVuIGdhcC0yXFxcIj5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcInNlbGVjdCBmaWx0ZXJzIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcXFwiPlxcbiAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidy0xMCB0ZXh0LWxnXFxcIiBpY29uPVxcXCJmdW5uZWxcXFwiIC8+XFxuICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgdi1pZj1cXFwidXNlclJvbGUgPT09ICdzdXBlcmFkbWluJyB8fCB1c2VyUm9sZSA9PT0gJ2lhdGlfYWRtaW4nXFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJtdWx0aXNlbGVjdC1sYWJlbC13cmFwcGVyXFxcIlxcbiAgICAgICAgICAgIDpzdHlsZT1cXFwiZ2VuZXJhdGVMYWJlbCgnb3JnYW5pc2F0aW9uJylcXFwiXFxuICAgICAgICAgICAgPjxNdWx0aXNlbGVjdFxcbiAgICAgICAgICAgICAgaWQ9XFxcIm9yZ2FuaXphdGlvbi1maWx0ZXJcXFwiXFxuICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJmaWx0ZXIub3JnYW5pemF0aW9uXFxcIlxcbiAgICAgICAgICAgICAgOm9wdGlvbnM9XFxcIm9yZ2FuaXphdGlvbnNcXFwiXFxuICAgICAgICAgICAgICA6cGxhY2Vob2xkZXI9XFxcInRyYW5zbGF0ZS5jb21tb25UZXh0KCdvcmdhbmlzYXRpb24nKVxcXCJcXG4gICAgICAgICAgICAgIDpzZWFyY2hhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgbW9kZT1cXFwibXVsdGlwbGVcXFwiXFxuICAgICAgICAgICAgICA6dGFnZ2FibGU9XFxcInRydWVcXFwiXFxuICAgICAgICAgICAgICA6Y2xvc2Utb24tc2VsZWN0PVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgICAgIDpjbGVhci1vbi1zZWxlY3Q9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICAgICAgOmhpZGUtc2VsZWN0ZWQ9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICAgICAgbGFiZWw9XFxcIm5hbWVcXFwiXFxuICAgICAgICAgICAgLz5cXG4gICAgICAgICAgPC9zcGFuPlxcblxcbiAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJtdWx0aXNlbGVjdC1sYWJlbC13cmFwcGVyXFxcIlxcbiAgICAgICAgICAgIDpzdHlsZT1cXFwiZ2VuZXJhdGVMYWJlbCgncm9sZScpXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgICAgICBpZD1cXFwicm9sZS1maWx0ZXJcXFwiXFxuICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJmaWx0ZXIucm9sZXNcXFwiXFxuICAgICAgICAgICAgICA6b3B0aW9ucz1cXFwicm9sZXNcXFwiXFxuICAgICAgICAgICAgICA6cGxhY2Vob2xkZXI9XFxcInRyYW5zbGF0ZS50ZXh0RnJvbUtleSgndXNlci5yb2xlJylcXFwiXFxuICAgICAgICAgICAgICA6c2VhcmNoYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgIG1vZGU9XFxcIm11bHRpcGxlXFxcIlxcbiAgICAgICAgICAgICAgOmNsb3NlLW9uLXNlbGVjdD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgICAgICA6Y2xlYXItb24tc2VsZWN0PVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgICAgIDpoaWRlLXNlbGVjdGVkPVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICAgIDxzcGFuIHYtaWY9XFxcImZpbHRlci5yb2xlcy5sZW5ndGggPiAwXFxcIiBjbGFzcz1cXFwic3RhdHVzXFxcIj5cXG4gICAgICAgICAgICAgIDwhLS0gcGxhY2Vob2xkZXIgLS0+XFxuICAgICAgICAgICAgICA8IS0tIHJvbGUgLS0+XFxuICAgICAgICAgICAgPC9zcGFuPjwvc3BhblxcbiAgICAgICAgICA+XFxuICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgY2xhc3M9XFxcIm11bHRpc2VsZWN0LWxhYmVsLXdyYXBwZXJcXFwiXFxuICAgICAgICAgICAgOnN0eWxlPVxcXCJnZW5lcmF0ZUxhYmVsKCdzdGF0dXMnKVxcXCJcXG4gICAgICAgICAgICA+PE11bHRpc2VsZWN0XFxuICAgICAgICAgICAgICBpZD1cXFwic3RhdHVzLWZpbHRlclxcXCJcXG4gICAgICAgICAgICAgIHYtbW9kZWw9XFxcImZpbHRlci5zdGF0dXNcXFwiXFxuICAgICAgICAgICAgICA6b3B0aW9ucz1cXFwic3RhdHVzXFxcIlxcbiAgICAgICAgICAgICAgOnBsYWNlaG9sZGVyPVxcXCJ0cmFuc2xhdGUudGV4dEZyb21LZXkoJ3VzZXIuc3RhdHVzJylcXFwiXFxuICAgICAgICAgICAgICA6c2VhcmNoYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICBjbGFzcz1cXFwiZmxleCBoLVszOHB4XSB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIGdhcC0zIHNwYWNlLXgtMiBweC00IDJ4bDp3LWF1dG9cXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxzcGFuPlxcbiAgICAgICAgICAgIDxEYXRlUmFuZ2VXaWRnZXRcXG4gICAgICAgICAgICAgIDpkcm9wZG93bi1yYW5nZT1cXFwiZHJvcGRvd25SYW5nZVxcXCJcXG4gICAgICAgICAgICAgIDpmaXJzdC1kYXRlPVxcXCJvbGRlc3REYXRlc1xcXCJcXG4gICAgICAgICAgICAgIDpjbGVhci1kYXRlPVxcXCJjbGVhckRhdGVcXFwiXFxuICAgICAgICAgICAgICA6c3RhcnRpbmctZGF0ZT1cXFwiZmlsdGVyLnN0YXJ0X2RhdGVcXFwiXFxuICAgICAgICAgICAgICA6ZGF0ZS1uYW1lPVxcXCJkYXRlVHlwZVxcXCJcXG4gICAgICAgICAgICAgIDplbmRpbmctZGF0ZT1cXFwiZmlsdGVyLmVuZF9kYXRlXFxcIlxcbiAgICAgICAgICAgICAgQHRyaWdnZXItc2V0LWRhdGUtcmFuZ2U9XFxcInNldERhdGVSYW5nZURhdGVcXFwiXFxuICAgICAgICAgICAgICBAdHJpZ2dlci1zZXQtZGF0ZS10eXBlPVxcXCJzZXREYXRlVHlwZVxcXCJcXG4gICAgICAgICAgICAgIEBkYXRlLWNsZWFyZWQ9XFxcImNsZWFyRGF0ZSA9IGZhbHNlXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwib3Blbi10ZXh0IGgtWzM4cHhdXFxcIj5cXG4gICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImFic29sdXRlIHRvcC0xLzIgbGVmdC0yIHctMTAgLXRyYW5zbGF0ZS15LTEvMiB0ZXh0LWJhc2VcXFwiXFxuICAgICAgICAgICAgICBpY29uPVxcXCJtYWduaWZ5aW5nLWdsYXNzXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJmaWx0ZXIucVxcXCJcXG4gICAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgICA6cGxhY2Vob2xkZXI9XFxcInRyYW5zbGF0ZS50ZXh0RnJvbUtleSgndXNlci5zZWFyY2hfZm9yX3VzZXJzJylcXFwiXFxuICAgICAgICAgICAgLz5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG5cXG4gICAgICA8ZGl2XFxuICAgICAgICB2LWlmPVxcXCJpc0ZpbHRlckFwcGxpZWRcXFwiXFxuICAgICAgICBjbGFzcz1cXFwibWItNCBmbGV4IG1heC13LWZ1bGwgZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMlxcXCJcXG4gICAgICA+XFxuICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1zbSBmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtbi00MFxcXCI+XFxuICAgICAgICAgIHt7IHRyYW5zbGF0ZS50ZXh0RnJvbUtleSgndXNlci5maWx0ZXJlZF9ieScpIH19OlxcbiAgICAgICAgPC9zcGFuPlxcblxcbiAgICAgICAgPHNwYW5cXG4gICAgICAgICAgdi1pZj1cXFwiZmlsdGVyLm9yZ2FuaXphdGlvbi5sZW5ndGhcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgZ2FwLTJcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgdi1mb3I9XFxcIihpdGVtLCBpbmRleCkgaW4gZmlsdGVyLm9yZ2FuaXphdGlvblxcXCJcXG4gICAgICAgICAgICA6a2V5PVxcXCJpbmRleFxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLW4tMzAgcHktMSBweC0yIHRleHQteHNcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj57eyB0cmFuc2xhdGUuY29tbW9uVGV4dCgnb3JnJykgfX06PC9zcGFuXFxuICAgICAgICAgICAgPjxzcGFuXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibWF4LXctWzUwMHB4XSBvdmVyZmxvdy14LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgICAgICAgPnt7IHRleHRCdWJibGVkYXRhKGl0ZW0sICdvcmcnKSB9fTwvc3BhblxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcIm14LTIgbXQtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICAgICAgaWNvbj1cXFwiY3Jvc3NcXFwiXFxuICAgICAgICAgICAgICBAY2xpY2s9XFxcImZpbHRlci5vcmdhbml6YXRpb24uc3BsaWNlKGluZGV4LCAxKVxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8c3BhbiB2LWlmPVxcXCJmaWx0ZXIucm9sZXMubGVuZ3RoXFxcIiBjbGFzcz1cXFwiaW5saW5lLWZsZXggZmxleC13cmFwIGdhcC0yXFxcIj5cXG4gICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICB2LWZvcj1cXFwiKGl0ZW0sIGluZGV4KSBpbiBmaWx0ZXIucm9sZXNcXFwiXFxuICAgICAgICAgICAgOmtleT1cXFwiaW5kZXhcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1uLTMwIHB4LTIgcHktMSB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtbi00MFxcXCJcXG4gICAgICAgICAgICAgID57eyB0cmFuc2xhdGUudGV4dEZyb21LZXkoJ3VzZXIucm9sZXMnKSB9fTo8L3NwYW5cXG4gICAgICAgICAgICA+PHNwYW4+e3sgdGV4dEJ1YmJsZWRhdGEoaXRlbSwgJ3JvbGVzJykgfX08L3NwYW4+XFxuICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJteC0yIG10LTEgY3Vyc29yLXBvaW50ZXIgdGV4dC14c1xcXCJcXG4gICAgICAgICAgICAgIGljb249XFxcImNyb3NzXFxcIlxcbiAgICAgICAgICAgICAgQGNsaWNrPVxcXCJmaWx0ZXIucm9sZXMuc3BsaWNlKGluZGV4LCAxKVxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8c3BhbiB2LWlmPVxcXCJmaWx0ZXIuc3RhdHVzLmxlbmd0aFxcXCIgY2xhc3M9XFxcImlubGluZS1mbGV4IGZsZXgtd3JhcCBnYXAtMlxcXCI+XFxuICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgdi1mb3I9XFxcIihpdGVtLCBpbmRleCkgaW4gZmlsdGVyLnN0YXR1c1xcXCJcXG4gICAgICAgICAgICA6a2V5PVxcXCJpbmRleFxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLW4tMzAgcHktMSBweC0yIHRleHQteHNcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIlxcbiAgICAgICAgICAgICAgPnt7IHRyYW5zbGF0ZS50ZXh0RnJvbUtleSgndXNlci5zdGF0dXMnKSB9fTo8L3NwYW5cXG4gICAgICAgICAgICA+PHNwYW4+e3sgdGV4dEJ1YmJsZWRhdGEoaXRlbSwgJ3N0YXR1cycpIH19PC9zcGFuPlxcbiAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBtdC0xIGN1cnNvci1wb2ludGVyIHRleHQteHNcXFwiXFxuICAgICAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgICAgIEBjbGljaz1cXFwiXFxuICAgICAgICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICAgICAgICBmaWx0ZXIuc3RhdHVzID0gJyc7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8c3BhblxcbiAgICAgICAgICB2LWlmPVxcXCJmaWx0ZXIuc3RhcnRfZGF0ZSAmJiBmaWx0ZXIuZW5kX2RhdGVcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgZ2FwLTJcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1uLTMwIHB5LTEgcHgtMiB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtbi00MFxcXCI+RGF0ZTo8L3NwYW5cXG4gICAgICAgICAgICA+PHNwYW4+e3tcXG4gICAgICAgICAgICAgIHRleHRCdWJibGVkYXRhKFxcbiAgICAgICAgICAgICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIsXFxuICAgICAgICAgICAgICAgIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlclxcbiAgICAgICAgICAgICAgKVxcbiAgICAgICAgICAgIH19PC9zcGFuPlxcbiAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBtdC0xIGN1cnNvci1wb2ludGVyIHRleHQteHNcXFwiXFxuICAgICAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgICAgIEBjbGljaz1cXFwiXFxuICAgICAgICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICAgICAgICBjbGVhckRhdGVGaWx0ZXIoKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgIDwvc3Bhbj5cXG4gICAgICAgIDxidXR0b25cXG4gICAgICAgICAgY2xhc3M9XFxcImZvbnQtYm9sZCB1cHBlcmNhc2UgdGV4dC1ibHVlY29yYWxcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwiXFxuICAgICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgICAgY2xlYXJGaWx0ZXIoKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIFxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAge3sgdHJhbnNsYXRlLnRleHRGcm9tS2V5KCd1c2VyLmNsZWFyX2ZpbHRlcicpIH19XFxuICAgICAgICA8L2J1dHRvbj5cXG4gICAgICA8L2Rpdj5cXG4gICAgICA8cCBjbGFzcz1cXFwicHktMVxcXCI+VG90YWwgTnVtYmVyIG9mIFVzZXJzOiB7eyB0b3RhbFVzZXIgfX08L3A+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiaWF0aS1saXN0LXRhYmxlIHVzZXItbGlzdC10YWJsZSB0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgPHRhYmxlPlxcbiAgICAgICAgICA8dGhlYWQ+XFxuICAgICAgICAgICAgPHRyIGNsYXNzPVxcXCJiZy1uLTEwXFxcIj5cXG4gICAgICAgICAgICAgIDx0aCBpZD1cXFwidGl0bGVcXFwiIHNjb3BlPVxcXCJjb2xcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgICAgICAgdi1pZj1cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci5kaXJlY3Rpb24gPT09ICdkZXNjJyAmJlxcbiAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIub3JkZXJCeSA9PT0gJ3VzZXJuYW1lJ1xcbiAgICAgICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJteC0yIGgtMyB3LTIgY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGljb249XFxcInNvcnQtZGVzY2VuZGluZ1xcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0KCd1c2VybmFtZScpXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgICAgPHNwYW4gdi1lbHNlPlxcbiAgICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcIm14LTIgaC0zIHctMiBjdXJzb3ItcG9pbnRlclxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj1cXFwic29ydC1hc2NlbmRpbmdcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz1cXFwic29ydCgndXNlcm5hbWUnKVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxcblxcbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHRyYW5zbGF0ZS50ZXh0RnJvbUtleSgndXNlci51c2VycycpIH19PC9zcGFuPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgICAgPHRoIGlkPVxcXCJtZWFzdXJlXFxcIiBzY29wZT1cXFwiY29sXFxcIiBzdHlsZT1cXFwid2lkdGg6IDIxMHB4XFxcIj5cXG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdHJhbnNsYXRlLnRleHRGcm9tS2V5KCd1c2VyLmVtYWlsJykgfX08L3NwYW4+XFxuICAgICAgICAgICAgICA8L3RoPlxcblxcbiAgICAgICAgICAgICAgPHRoIGlkPVxcXCJ0aXRsZVxcXCIgdi1pZj1cXFwidXNlclJvbGUgPT09ICdzdXBlcmFkbWluJ1xcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXJcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgICAgICAgICB2LWlmPVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLmRpcmVjdGlvbiA9PT0gJ2Rlc2MnICYmXFxuICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci5vcmRlckJ5ID09PSAncHVibGlzaGVyX25hbWUnXFxuICAgICAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcIm14LTIgaC0zIHctMiBjdXJzb3ItcG9pbnRlclxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj1cXFwic29ydC1kZXNjZW5kaW5nXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNvcnQoJ3B1Ymxpc2hlcl9uYW1lJylcXFwiXFxuICAgICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgICA8c3BhbiB2LWVsc2U+XFxuICAgICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBoLTMgdy0yIGN1cnNvci1wb2ludGVyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBpY29uPVxcXCJzb3J0LWFzY2VuZGluZ1xcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0KCdwdWJsaXNoZXJfbmFtZScpXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuXFxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgdHJhbnNsYXRlLmNvbW1vblRleHQoJ29yZ2FuaXNhdGlvbl9uYW1lJykgfX08L3NwYW4+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvdGg+XFxuXFxuICAgICAgICAgICAgICA8dGggaWQ9XFxcInRpdGxlXFxcIiBzY29wZT1cXFwiY29sXFxcIj5cXG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdHJhbnNsYXRlLnRleHRGcm9tS2V5KCd1c2VyLnVzZXJfcm9sZScpIH19PC9zcGFuPlxcbiAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICAgIDx0aD5cXG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdHJhbnNsYXRlLnRleHRGcm9tS2V5KCd1c2VyLnN0YXR1cycpIH19PC9zcGFuPlxcbiAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICAgIDx0aFxcbiAgICAgICAgICAgICAgICBpZD1cXFwiYWdncmVnYXRpb25fc3RhdHVzXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXJcXFwiXFxuICAgICAgICAgICAgICAgIHNjb3BlPVxcXCJjb2xcXFwiXFxuICAgICAgICAgICAgICAgIHdpZHRoPVxcXCIyMDhweFxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgICAgICB2LWlmPVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlci5kaXJlY3Rpb24gPT09ICdkZXNjJyAmJlxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyLm9yZGVyQnkgPT09ICdjcmVhdGVkX2F0J1xcbiAgICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyXFxcIlxcbiAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJteC0yIGgtMyB3LTIgY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICAgICAgICAgICAgICBpY29uPVxcXCJzb3J0LWRlc2NlbmRpbmdcXFwiXFxuICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNvcnQoJ2NyZWF0ZWRfYXQnKVxcXCJcXG4gICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDxzcGFuIHYtZWxzZT5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcIm14LTIgaC0zIHctMiBjdXJzb3ItcG9pbnRlclxcXCJcXG4gICAgICAgICAgICAgICAgICAgIGljb249XFxcInNvcnQtYXNjZW5kaW5nXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0KCdsYXN0X2xvZ2dlZF9pbicpXFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcIndoaXRlc3BhY2Utbm93cmFwXFxcIj5MYXN0IExvZ2luPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICAgIDx0aFxcbiAgICAgICAgICAgICAgICB2LWlmPVxcXCJ1c2VyUm9sZSAhPT0gJ2dlbmVyYWxfdXNlcidcXFwiXFxuICAgICAgICAgICAgICAgIGlkPVxcXCJhY3Rpb25cXFwiXFxuICAgICAgICAgICAgICAgIHNjb3BlPVxcXCJjb2xcXFwiXFxuICAgICAgICAgICAgICAgIHdpZHRoPVxcXCIxOTBweFxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdHJhbnNsYXRlLnRleHRGcm9tS2V5KCd1c2VyLmFjdGlvbicpIH19PC9zcGFuPlxcbiAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICAgIDx0aCBpZD1cXFwiY2JcXFwiIHNjb3BlPVxcXCJjb2xcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXJcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzdmctdnVlIGljb249XFxcImNoZWNrYm94XFxcIiBAY2xpY2s9XFxcInRvZ2dsZVNlbGVjdGFsbFxcXCIgLz5cXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICA8L3RyPlxcbiAgICAgICAgICA8L3RoZWFkPlxcbiAgICAgICAgICA8dGJvZHkgdi1pZj1cXFwidXNlcnNEYXRhPy5kYXRhLmxlbmd0aCA+IDAgfHwgZmV0Y2hpbmdUYWJsZURhdGFcXFwiPlxcbiAgICAgICAgICAgIDx0ciB2LWlmPVxcXCJmZXRjaGluZ1RhYmxlRGF0YVxcXCI+XFxuICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cXFwiNFxcXCI+RmV0Y2hpbmcgRGF0YS4uLjwvdGQ+XFxuICAgICAgICAgICAgPC90cj5cXG4gICAgICAgICAgICA8dHIgdi1mb3I9XFxcIih1c2VyLCBpbmRleCkgaW4gdXNlcnNEYXRhPy5kYXRhXFxcIiB2LWVsc2UgOmtleT1cXFwiaW5kZXhcXFwiPlxcbiAgICAgICAgICAgICAgPHRkPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlbGxpcHNpcyByZWxhdGl2ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHBcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ3LTMyIG92ZXJmbG93LXgtaGlkZGVuIG92ZXJmbG93LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwIHRleHQtc20gY2FwaXRhbGl6ZSB0ZXh0LW4tNTBcXFwiXFxuICAgICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgICAge3sgdXNlclsnZnVsbF9uYW1lJ10gfX1cXG4gICAgICAgICAgICAgICAgICA8L3A+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlbGxpcHNpcyByZWxhdGl2ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHBcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ3LTMyIG92ZXJmbG93LXgtaGlkZGVuIG92ZXJmbG93LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICAgIHt7IHVzZXJbJ3VzZXJuYW1lJ10gfX1cXG4gICAgICAgICAgICAgICAgICA8L3A+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cXFwiZmxleCBzcGFjZS14LTJcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwibXMtMVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJtdC0xIGN1cnNvci1wb2ludGVyIHRleHQtYmFzZVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIDppY29uPVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgdXNlclsnZW1haWxfdmVyaWZpZWRfYXQnXVxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RpY2stb3V0bGluZSdcXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdhbGVydC1vdXRsaW5lJ1xcbiAgICAgICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcIi4uLiB0cnVuY2F0ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAge3sgdXNlclsnZW1haWwnXSB9fVxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgICAgPHRkIHYtaWY9XFxcInVzZXJSb2xlID09PSAnc3VwZXJhZG1pbicgfHwgdXNlclJvbGUgPT09ICdpYXRpX2FkbWluJ1xcXCI+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImVsbGlwc2lzIHJlbGF0aXZlXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8cFxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInctMzIgb3ZlcmZsb3cteC1oaWRkZW4gb3ZlcmZsb3ctZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXBcXFwiXFxuICAgICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgICAge3sgdXNlclsnbmFtZSddIH19XFxuICAgICAgICAgICAgICAgICAgICB7e1xcbiAgICAgICAgICAgICAgICAgICAgICB1c2VyWydwdWJsaXNoZXJfbmFtZSddID8gdXNlclsncHVibGlzaGVyX25hbWUnXSA6ICctIC0nXFxuICAgICAgICAgICAgICAgICAgICB9fVxcbiAgICAgICAgICAgICAgICAgIDwvcD5cXG5cXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ3LTUyXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJlbGxpcHNpc19fdGl0bGUtLWhvdmVyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICA+e3tcXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyWydwdWJsaXNoZXJfbmFtZSddID8gdXNlclsncHVibGlzaGVyX25hbWUnXSA6ICctIC0nXFxuICAgICAgICAgICAgICAgICAgICAgIH19XFxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cXFwiY2FwaXRhbGl6ZVxcXCI+XFxuICAgICAgICAgICAgICAgIHt7IHJvbGVzW3VzZXJbJ3JvbGVfaWQnXV0gfX1cXG4gICAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgICA8dGQgOmNsYXNzPVxcXCJ1c2VyWydzdGF0dXMnXSA/ICd0ZXh0LXNwcmluZy01MCcgOiAndGV4dC1uLTQwJ1xcXCI+XFxuICAgICAgICAgICAgICAgIHt7XFxuICAgICAgICAgICAgICAgICAgdXNlclsnc3RhdHVzJ11cXG4gICAgICAgICAgICAgICAgICAgID8gdHJhbnNsYXRlLnRleHRGcm9tS2V5KCd1c2VyLmFjdGl2ZScpXFxuICAgICAgICAgICAgICAgICAgICA6IHRyYW5zbGF0ZS50ZXh0RnJvbUtleSgndXNlci5pbmFjdGl2ZScpXFxuICAgICAgICAgICAgICAgIH19XFxuICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgICAgPHRkPlxcbiAgICAgICAgICAgICAgICB7e1xcbiAgICAgICAgICAgICAgICAgIHVzZXJbJ2xhc3RfbG9nZ2VkX2luJ11cXG4gICAgICAgICAgICAgICAgICAgID8gZm9ybWF0RGF0ZSh1c2VyWydsYXN0X2xvZ2dlZF9pbiddKVxcbiAgICAgICAgICAgICAgICAgICAgOiB0cmFuc2xhdGUubWlzc2luZygnbm90X2F2YWlsYWJsZScpXFxuICAgICAgICAgICAgICAgIH19XFxuICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgICAgPHRkXFxuICAgICAgICAgICAgICAgIHYtaWY9XFxcInVzZXJSb2xlICE9PSAnZ2VuZXJhbF91c2VyJ1xcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggaC1mdWxsIGl0ZW1zLWNlbnRlciBzcGFjZS14LTZcXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxwIEBjbGljaz1cXFwiZWRpdFVzZXIodXNlcilcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXIgdGV4dC1iYXNlXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cXFwiZWRpdC1hY3Rpb25cXFwiXFxuICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgICAgICA8IS0tIDxwIEBjbGljaz1cXFwiZGVsZXRlVXNlcih1c2VyWydpZCddKVxcXCI+IC0tPlxcbiAgICAgICAgICAgICAgICA8cCBAY2xpY2s9XFxcIm9wZW5EZWxldGVtb2RlbCh1c2VyKVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWUgY2xhc3M9XFxcImN1cnNvci1wb2ludGVyIHRleHQtYmFzZVxcXCIgaWNvbj1cXFwiZGVsZXRlXFxcIiAvPlxcbiAgICAgICAgICAgICAgICA8L3A+XFxuXFxuICAgICAgICAgICAgICAgIDxwIEBjbGljaz1cXFwib3BlblN0YXR1c01vZGVsKHVzZXIpXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJ1c2VyWydzdGF0dXMnXSA/ICdiZy1zcHJpbmctNTAnIDogJ2JnLW4tNDAnXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInJlbGF0aXZlIGJsb2NrIGgtNCB3LTcgY3Vyc29yLXBvaW50ZXIgcm91bmRlZC1mdWxsXFxcIlxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlclsnc3RhdHVzJ10gPyAndHJhbnNsYXRlLXgtMCcgOiAndHJhbnNsYXRlLXgtZnVsbCdcXG4gICAgICAgICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiYWJzb2x1dGUgdG9wLTEvMiBsZWZ0LVsycHhdIGJsb2NrIGgtMyB3LTMgLXRyYW5zbGF0ZS15LTEvMiByb3VuZGVkLWZ1bGwgYmctd2hpdGUgZHVyYXRpb24tMjAwXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgICA8dGQ+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJyZWxhdGl2ZSBoLTUgdy01XFxcIlxcbiAgICAgICAgICAgICAgICAgID48aW5wdXRcXG4gICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XFxcImNoZWNrbGlzdFxcXCJcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ1c2VyLWNoZWNrbGlzdFxcXCJcXG4gICAgICAgICAgICAgICAgICAgIDp2YWx1ZT1cXFwidXNlclsnaWQnXVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XFxcImNoZWNrYm94XFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInBzZXVkby1jaGVja2JveFxcXCIgLz5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidGlja2VkLXN2ZyB0ZXh0LXNwcmluZy01MFxcXCIgaWNvbj1cXFwidGlja2VkXFxcIiAvPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgIDwvdHI+XFxuICAgICAgICAgIDwvdGJvZHk+XFxuICAgICAgICAgIDx0Ym9keSB2LWVsc2U+XFxuICAgICAgICAgICAgPHRkIHYtaWY9XFxcImxvYWRlclxcXCIgY29sc3Bhbj1cXFwiNVxcXCIgY2xhc3M9XFxcInRleHQtY2VudGVyXFxcIj5cXG4gICAgICAgICAgICAgIDxkaXYgY29sc3Bhbj1cXFwiNVxcXCIgY2xhc3M9XFxcInNwaW5cXFwiPjwvZGl2PlxcbiAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgPHRkIHYtZWxzZSBjb2xzcGFuPVxcXCI4XFxcIiBjbGFzcz1cXFwidGV4dC1jZW50ZXJcXFwiPlxcbiAgICAgICAgICAgICAge3sgdHJhbnNsYXRlLnRleHRGcm9tS2V5KCd1c2VyLnVzZXJfbm90X2ZvdW5kJykgfX1cXG4gICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICA8L3Rib2R5PlxcbiAgICAgICAgPC90YWJsZT5cXG4gICAgICA8L2Rpdj5cXG5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJtdC02XFxcIj5cXG4gICAgICAgIDxQYWdpbmF0aW9uXFxuICAgICAgICAgIHYtaWY9XFxcInVzZXJzRGF0YSAmJiB1c2Vyc0RhdGFbJ2xhc3RfcGFnZSddID4gMVxcXCJcXG4gICAgICAgICAgOmRhdGE9XFxcInVzZXJzRGF0YVxcXCJcXG4gICAgICAgICAgQGZldGNoLWFjdGl2aXRpZXM9XFxcImZldGNoVXNlcnNMaXN0XFxcIlxcbiAgICAgICAgLz5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICA8L2Rpdj5cXG48L3RlbXBsYXRlPlxcbjxzY3JpcHQgc2V0dXAgbGFuZz1cXFwidHNcXFwiPlxcbmltcG9ydCB7IGRlZmluZVByb3BzLCByZWFjdGl2ZSwgcmVmLCBjb21wdXRlZCwgd2F0Y2gsIG9uTW91bnRlZCB9IGZyb20gJ3Z1ZSc7XFxuaW1wb3J0IExvYWRlciBmcm9tICcuLi8uLi9jb21wb25lbnRzL0xvYWRlci52dWUnO1xcbmltcG9ydCBUb2FzdCBmcm9tICdDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWUnO1xcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XFxuaW1wb3J0IFBvcHVwTW9kYWwgZnJvbSAnQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZSc7XFxuaW1wb3J0IGVuY3J5cHQgZnJvbSAnQ29tcG9zYWJsZS9lbmNyeXB0aW9uJztcXG5pbXBvcnQgTXVsdGlzZWxlY3QgZnJvbSAnQHZ1ZWZvcm0vbXVsdGlzZWxlY3QnO1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcXG5pbXBvcnQgUGFnaW5hdGlvbiBmcm9tICdDb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWUnO1xcbmltcG9ydCB7IHdhdGNoSWdub3JhYmxlIH0gZnJvbSAnQHZ1ZXVzZS9jb3JlJztcXG5pbXBvcnQgRGF0ZVJhbmdlV2lkZ2V0IGZyb20gJ0NvbXBvbmVudHMvRGF0ZVJhbmdlV2lkZ2V0LnZ1ZSc7XFxuXFxuY29uc3QgdHJhbnNsYXRlID0gbmV3IFRyYW5zbGF0ZSgpO1xcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xcbiAgb3JnYW5pemF0aW9uczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXFxuICBzdGF0dXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxcbiAgcm9sZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxcbiAgdXNlclJvbGU6IHsgdHlwZTogU3RyaW5nLCByZXF1aXJlZDogdHJ1ZSB9LFxcbiAgb2xkZXN0RGF0ZXM6IHsgdHlwZTogU3RyaW5nLCByZXF1aXJlZDogdHJ1ZSB9LFxcbn0pO1xcblxcbmNvbnN0IHRvYXN0RGF0YSA9IHJlYWN0aXZlKHtcXG4gIHZpc2liaWxpdHk6IGZhbHNlLFxcbiAgbWVzc2FnZTogJycsXFxuICB0eXBlOiBmYWxzZSxcXG59KTtcXG5cXG5jb25zdCBmaWx0ZXIgPSByZWFjdGl2ZSh7XFxuICBvcmdhbml6YXRpb246IFtdLFxcbiAgcm9sZXM6IFtdLFxcbiAgc3RhdHVzOiAnJyxcXG4gIG9yZGVyQnk6ICcnLFxcbiAgZGlyZWN0aW9uOiAnJyxcXG4gIHE6ICcnLFxcbiAgc3RhcnRfZGF0ZTogJycsXFxuICBlbmRfZGF0ZTogJycsXFxuICBkYXRlX3R5cGU6ICdjcmVhdGVkX2F0JyxcXG4gIHNlbGVjdGVkX2RhdGVfZmlsdGVyOiAnJyxcXG59KTtcXG5cXG5jb25zdCBpc0xvYWRlclZpc2libGUgPSByZWYoZmFsc2UpO1xcbmNvbnN0IGFkZFVzZXJGb3JtID0gcmVmKGZhbHNlKTtcXG5jb25zdCBlZGl0VXNlckZvcm0gPSByZWYoZmFsc2UpO1xcbmNvbnN0IHVzZXJzRGF0YSA9IHJlYWN0aXZlKHsgZGF0YTogW10gfSk7XFxuY29uc3QgaXNFbXB0eSA9IHJlZih0cnVlKTtcXG5jb25zdCBhbGxTZWxlY3RlZCA9IHJlZjxib29sZWFuW10+KFtdKTtcXG5jb25zdCBkZWxldGVNb2RhbCA9IHJlZihmYWxzZSk7XFxuY29uc3QgZGVsZXRlSWQgPSByZWYoKTtcXG5jb25zdCB0b3RhbFVzZXIgPSByZWYoMCk7XFxuY29uc3Qgc3RhdHVzSWQgPSByZWYoKTtcXG5jb25zdCBzdGF0dXNNb2RhbCA9IHJlZihmYWxzZSk7XFxuY29uc3Qgc3RhdHVzVmFsdWUgPSByZWYoKTtcXG5jb25zdCBzdGF0dXNVc2VybmFtZSA9IHJlZigpO1xcbmNvbnN0IGRlbGV0ZVVzZXJuYW1lID0gcmVmKCk7XFxuY29uc3QgbG9hZGVyID0gcmVmKHRydWUpO1xcbmNvbnN0IGZldGNoaW5nVGFibGVEYXRhID0gcmVmKGZhbHNlKTtcXG5jb25zdCBzZWxlY3RlZElkcyA9IHJlZih7fSk7XFxuY29uc3QgY2hlY2tsaXN0ID0gcmVmKFtdKTtcXG5jb25zdCBjdXJyZW50cGFnZURhdGEgPSByZWYoW10pO1xcbmNvbnN0IGNsZWFyRGF0ZSA9IHJlZihmYWxzZSk7XFxuY29uc3QgZWRpdFVzZXJJZCA9IHJlZignJyk7XFxuY29uc3QgZGF0ZVR5cGUgPSByZWYoJ0FsbCBUaW1lJyk7XFxuXFxuY29uc3QgZHJvcGRvd25SYW5nZSA9IHtcXG4gIGNyZWF0ZWRfYXQ6ICdVc2VyIGNyZWF0ZWQgZGF0ZScsXFxuICBsYXN0X2xvZ2dlZF9pbjogJ0xhc3QgbG9naW4gZGF0ZScsXFxufTtcXG5cXG5jb25zdCBmb3JtRGF0YSA9IHJlYWN0aXZlKHtcXG4gIHVzZXJuYW1lOiAnJyxcXG4gIGZ1bGxfbmFtZTogJycsXFxuICBlbWFpbDogJycsXFxuICBzdGF0dXM6ICcxJyxcXG4gIHJvbGVfaWQ6ICcnLFxcbiAgcGFzc3dvcmQ6ICcnLFxcbiAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAnJyxcXG59KTtcXG5cXG5jb25zdCBmb3JtRXJyb3IgPSByZWFjdGl2ZSh7XFxuICB1c2VybmFtZTogJycsXFxuICBmdWxsX25hbWU6ICcnLFxcbiAgZW1haWw6ICcnLFxcbiAgc3RhdHVzOiAnJyxcXG4gIHJvbGVfaWQ6ICcnLFxcbiAgcGFzc3dvcmQ6ICcnLFxcbiAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAnJyxcXG59KTtcXG5pbXBvcnQgeyBrZWJhYkNhc2VUb1NuYWtlY2FzZSB9IGZyb20gJ0NvbXBvc2FibGUvdXRpbHMnO1xcbmltcG9ydCB7IFRyYW5zbGF0ZSB9IGZyb20gJ0NvbXBvc2FibGUvdHJhbnNsYXRpb25IZWxwZXInO1xcblxcbmNvbnN0IGlzRmlsdGVyQXBwbGllZCA9IGNvbXB1dGVkKCgpID0+IHtcXG4gIHJldHVybiAoXFxuICAgIGZpbHRlci5vcmdhbml6YXRpb24ubGVuZ3RoICsgZmlsdGVyLnJvbGVzLmxlbmd0aCAhPSAwIHx8XFxuICAgIGZpbHRlci5zdGF0dXMgIT0gJycgfHxcXG4gICAgKGZpbHRlci5zdGFydF9kYXRlICYmIGZpbHRlci5lbmRfZGF0ZSlcXG4gICk7XFxufSk7XFxuXFxuY29uc3QgeyBpZ25vcmVVcGRhdGVzIH0gPSB3YXRjaElnbm9yYWJsZSh0b2FzdERhdGEsICgpID0+IHVuZGVmaW5lZCwge1xcbiAgZmx1c2g6ICdzeW5jJyxcXG59KTtcXG5cXG53YXRjaChcXG4gICgpID0+IHRvYXN0RGF0YS52aXNpYmlsaXR5LFxcbiAgKCkgPT4ge1xcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xcbiAgICAgIGlnbm9yZVRvYXN0VXBkYXRlKCk7XFxuICAgIH0sIDIwMDApO1xcbiAgfVxcbik7XFxuXFxuY29uc3QgaWdub3JlVG9hc3RVcGRhdGUgPSAoKSA9PiB7XFxuICBpZ25vcmVVcGRhdGVzKCgpID0+IHtcXG4gICAgdG9hc3REYXRhLm1lc3NhZ2UgPSAnJztcXG4gIH0pO1xcbn07XFxuXFxuY29uc3QgY2xlYXJEYXRlRmlsdGVyID0gKCkgPT4ge1xcbiAgZmlsdGVyLnNlbGVjdGVkX2RhdGVfZmlsdGVyID0gJyc7XFxuICBjbGVhckRhdGVSYW5nZUZpbHRlcigpO1xcbn07XFxuXFxub25Nb3VudGVkKCgpID0+IHtcXG4gIGxldCBmaWx0ZXJQYXJhbXMgPSBnZXRGaWx0ZXJQYXJhbXNGcm9tUHJldmlvdXNQYWdlKCk7XFxuICBpZiAoZmlsdGVyUGFyYW1zKSB7XFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsdGVyUGFyYW1zLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgbGV0IGtleSA9IGtlYmFiQ2FzZVRvU25ha2VjYXNlKGZpbHRlclBhcmFtc1tpXVswXSk7XFxuICAgICAgbGV0IHZhbHVlID0gZmlsdGVyUGFyYW1zW2ldWzFdO1xcbiAgICAgIGlmIChbJ3JvbGVzJywgJ29yZ2FuaXphdGlvbiddLmluY2x1ZGVzKGtleSkpIHtcXG4gICAgICAgIGZpbHRlcltrZXldLnB1c2godmFsdWUpO1xcbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnZGF0ZV90eXBlJykge1xcbiAgICAgICAgZGF0ZVR5cGUudmFsdWUgPSB2YWx1ZS5zcGxpdCgnLScpLmpvaW4oJyAnKTtcXG4gICAgICB9IGVsc2Uge1xcbiAgICAgICAgZmlsdGVyW2tleV0gPSB2YWx1ZTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG59KTtcXG5jb25zdCBnZXRGaWx0ZXJQYXJhbXNGcm9tUHJldmlvdXNQYWdlID0gKCkgPT4ge1xcbiAgbGV0IHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLmhyZWY/LnRvU3RyaW5nKCk7XFxuXFxuICBpZiAocXVlcnlTdHJpbmcpIHtcXG4gICAgcXVlcnlTdHJpbmcgPSBxdWVyeVN0cmluZy5zcGxpdCgnPycpWzFdO1xcblxcbiAgICBsZXQgcXVlcnlQYXJhbXNJbktleVZhbDogb2JqZWN0W10gPSBbXTtcXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSBxdWVyeVN0cmluZz8uc3BsaXQoJyYnKTtcXG5cXG4gICAgaWYgKHF1ZXJ5UGFyYW1zKSB7XFxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBxdWVyeVBhcmFtcy5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgbGV0IFtrZXksIHZhbHVlXSA9IHF1ZXJ5UGFyYW1zW2ldLnNwbGl0KCc9Jyk7XFxuICAgICAgICBpZiAoa2V5KSB7XFxuICAgICAgICAgIHF1ZXJ5UGFyYW1zSW5LZXlWYWwucHVzaChba2V5LCB2YWx1ZSA/PyAnJ10pO1xcbiAgICAgICAgfVxcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICByZXR1cm4gcXVlcnlQYXJhbXNJbktleVZhbDtcXG4gIH1cXG5cXG4gIHJldHVybiBmYWxzZTtcXG59O1xcblxcbm9uTW91bnRlZChhc3luYyAoKSA9PiB7XFxuICBheGlvcy5nZXQoYC91c2Vycy9wYWdlLzFgKS50aGVuKChyZXMpID0+IHtcXG4gICAgY29uc3QgcmVzcG9uc2UgPSByZXMuZGF0YTtcXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNwb25zZS5kYXRhLmRhdGEubGVuZ3RoOyBpKyspIHtcXG4gICAgICByZXNwb25zZS5kYXRhLmRhdGFbaV0ucm9sZSA9IHJlc3BvbnNlLmRhdGEuZGF0YVtpXS5yb2xlXFxuICAgICAgICAuc3BsaXQoJ18nKVxcbiAgICAgICAgLmpvaW4oJyAnKTtcXG4gICAgfVxcbiAgICBPYmplY3QuYXNzaWduKHVzZXJzRGF0YSwgcmVzcG9uc2UuZGF0YSk7XFxuICAgIGlzRW1wdHkudmFsdWUgPSByZXNwb25zZS5kYXRhLmRhdGEubGVuZ3RoID8gZmFsc2UgOiB0cnVlO1xcbiAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcXG4gIH0pO1xcblxcbiAgc2V0VGltZW91dCgoKSA9PiB7XFxuICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XFxuICB9LCA1MDAwKTtcXG59KTtcXG5cXG5jb25zdCB0ZXh0QnViYmxlZGF0YSA9IChpZCwgZmllbGQpID0+IHtcXG4gIHN3aXRjaCAoZmllbGQpIHtcXG4gICAgY2FzZSAnb3JnJzpcXG4gICAgICByZXR1cm4gcHJvcHMub3JnYW5pemF0aW9uc1sraWRdO1xcbiAgICBjYXNlICdyb2xlcyc6XFxuICAgICAgcmV0dXJuIHByb3BzLnJvbGVzWytpZF07XFxuICAgIGNhc2UgJ3N0YXR1cyc6XFxuICAgICAgcmV0dXJuIHByb3BzLnN0YXR1c1sraWRdO1xcbiAgICBkZWZhdWx0OlxcbiAgICAgIHJldHVybiBmaWVsZDtcXG4gIH1cXG59O1xcblxcbmNvbnN0IGNsZWFyRmlsdGVyID0gKCkgPT4ge1xcbiAgZmlsdGVyLm9yZ2FuaXphdGlvbiA9IFtdO1xcbiAgZmlsdGVyLnJvbGVzID0gW107XFxuICBmaWx0ZXIuc3RhdHVzID0gJyc7XFxuICBmaWx0ZXIuZGlyZWN0aW9uID0gJyc7XFxuICBmaWx0ZXIub3JkZXJCeSA9ICcnO1xcbiAgZmlsdGVyLnEgPSAnJztcXG4gIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlciA9ICcnO1xcbiAgY2xlYXJEYXRlUmFuZ2VGaWx0ZXIoKTtcXG59O1xcblxcbmNvbnN0IGNsZWFyRGF0ZVJhbmdlRmlsdGVyID0gKCkgPT4ge1xcbiAgY2xlYXJEYXRlLnZhbHVlID0gdHJ1ZTtcXG59O1xcblxcbmNvbnN0IHNldERhdGVSYW5nZURhdGUgPSAoc3RhcnREYXRlLCBlbmREYXRlLCBzZWxlY3RlZERhdGUpID0+IHtcXG4gIGZpbHRlci5zdGFydF9kYXRlID0gc3RhcnREYXRlO1xcbiAgZmlsdGVyLmVuZF9kYXRlID0gZW5kRGF0ZTtcXG4gIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlciA9IHNlbGVjdGVkRGF0ZTtcXG59O1xcbmNvbnN0IHNldERhdGVUeXBlID0gKGRhdGVUeXBlKSA9PiB7XFxuICBmaWx0ZXIuZGF0ZV90eXBlID0gZGF0ZVR5cGU7XFxufTtcXG5cXG5jb25zdCBjcmVhdGVVc2VyID0gKCkgPT4ge1xcbiAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcXG4gIGxldCBwYXNzd29yZERhdGEgPSB7XFxuICAgIHBhc3N3b3JkOiBlbmNyeXB0KGZvcm1EYXRhLnBhc3N3b3JkLCBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkgPz8gJycpLFxcbiAgICBwYXNzd29yZF9jb25maXJtYXRpb246IGVuY3J5cHQoXFxuICAgICAgZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLFxcbiAgICAgIHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSA/PyAnJ1xcbiAgICApLFxcbiAgfTtcXG5cXG4gIGF4aW9zXFxuICAgIC5wb3N0KCcvdXNlcicsIHsgLi4uZm9ybURhdGEsIC4uLnBhc3N3b3JkRGF0YSB9KVxcbiAgICAudGhlbigocmVzKSA9PiB7XFxuICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xcbiAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzLmRhdGEubWVzc2FnZTtcXG4gICAgICB0b2FzdERhdGEudHlwZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XFxuICAgICAgc2V0Rm9ybUVycm9yKCk7XFxuICAgICAgc2V0Rm9ybUVycm9yKHJlcy5kYXRhLmVycm9ycyk7XFxuXFxuICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MpIHtcXG4gICAgICAgIGNsZWFyRmlsdGVyKCk7XFxuICAgICAgICBmZXRjaFVzZXJzTGlzdCh1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddLCB0cnVlKTtcXG4gICAgICAgIGFkZFVzZXJGb3JtLnZhbHVlID0gZmFsc2U7XFxuICAgICAgICBlbXB0eUZvcm1EYXRhKCk7XFxuICAgICAgICBzZXRGb3JtRXJyb3IoKTtcXG4gICAgICB9XFxuICAgIH0pXFxuICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcXG4gICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XFxuICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBlcnJvci5kYXRhLm1lc3NhZ2U7XFxuICAgICAgdG9hc3REYXRhLnR5cGUgPSBmYWxzZTtcXG4gICAgICBhZGRVc2VyRm9ybS52YWx1ZSA9IGZhbHNlO1xcbiAgICB9KVxcbiAgICAuZmluYWxseSgoKSA9PiB7XFxuICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XFxuICAgIH0pO1xcbn07XFxuXFxuY29uc3QgZWRpdFVzZXIgPSAodXNlcikgPT4ge1xcbiAgZm9ybURhdGEudXNlcm5hbWUgPSB1c2VyLnVzZXJuYW1lO1xcbiAgZm9ybURhdGEuZnVsbF9uYW1lID0gdXNlci5mdWxsX25hbWU7XFxuICBmb3JtRGF0YS5lbWFpbCA9IHVzZXIuZW1haWw7XFxuICBmb3JtRGF0YS5yb2xlX2lkID0gdXNlci5yb2xlX2lkO1xcbiAgZWRpdFVzZXJJZC52YWx1ZSA9IHVzZXIuaWQ7XFxuICBlZGl0VXNlckZvcm0udmFsdWUgPSB0cnVlO1xcbn07XFxuXFxuY29uc3QgZW1wdHlGb3JtRGF0YSA9ICgpID0+IHtcXG4gIGZvciAoY29uc3Qga2V5IGluIGZvcm1EYXRhKSB7XFxuICAgIGZvcm1EYXRhW2tleV0gPSBrZXkgPT09ICdzdGF0dXMnID8gMSA6ICcnO1xcbiAgfVxcbn07XFxuY29uc3Qgc2V0Rm9ybUVycm9yID0gKGVycm9ycyA9IHt9KSA9PiB7XFxuICBpZiAoT2JqZWN0LmtleXMoZXJyb3JzKS5sZW5ndGgpIHtcXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZXJyb3JzKSB7XFxuICAgICAgZm9ybUVycm9yW2tleV0gPSBlcnJvcnNba2V5XTtcXG4gICAgfVxcbiAgfSBlbHNlIHtcXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZm9ybUVycm9yKSB7XFxuICAgICAgZm9ybUVycm9yW2tleV0gPSAnJztcXG4gICAgfVxcbiAgfVxcbn07XFxuXFxuY29uc3Qgb3BlblN0YXR1c01vZGVsID0gKHVzZXIpID0+IHtcXG4gIHN0YXR1c0lkLnZhbHVlID0gdXNlci5pZDtcXG4gIHN0YXR1c1ZhbHVlLnZhbHVlID0gdXNlci5zdGF0dXM7XFxuICBzdGF0dXNNb2RhbC52YWx1ZSA9IHRydWU7XFxuICBzdGF0dXNVc2VybmFtZS52YWx1ZSA9IHVzZXIudXNlcm5hbWU7XFxufTtcXG5cXG5jb25zdCB1cGRhdGVVc2VyID0gKCkgPT4ge1xcbiAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcXG4gIGxldCBwYXNzd29yZERhdGEgPSB7XFxuICAgIHBhc3N3b3JkOiBlbmNyeXB0KGZvcm1EYXRhLnBhc3N3b3JkLCBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkgPz8gJycpLFxcbiAgICBwYXNzd29yZF9jb25maXJtYXRpb246IGVuY3J5cHQoXFxuICAgICAgZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLFxcbiAgICAgIHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSA/PyAnJ1xcbiAgICApLFxcbiAgfTtcXG5cXG4gIGF4aW9zXFxuICAgIC5wYXRjaChgL3VzZXIvJHtlZGl0VXNlcklkLnZhbHVlfWAsIHsgLi4uZm9ybURhdGEsIC4uLnBhc3N3b3JkRGF0YSB9KVxcbiAgICAudGhlbigocmVzKSA9PiB7XFxuICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xcbiAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzLmRhdGEubWVzc2FnZTtcXG4gICAgICB0b2FzdERhdGEudHlwZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XFxuICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XFxuICAgICAgc2V0Rm9ybUVycm9yKCk7XFxuICAgICAgc2V0Rm9ybUVycm9yKHJlcy5kYXRhLmVycm9ycyk7XFxuXFxuICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MpIHtcXG4gICAgICAgIGVkaXRVc2VyRm9ybS52YWx1ZSA9IGZhbHNlO1xcbiAgICAgICAgZmV0Y2hVc2Vyc0xpc3QodXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXSk7XFxuICAgICAgICBlZGl0VXNlcklkLnZhbHVlID0gJyc7XFxuICAgICAgICBlbXB0eUZvcm1EYXRhKCk7XFxuICAgICAgICBzZXRGb3JtRXJyb3IoKTtcXG4gICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcXG4gICAgICB9XFxuICAgIH0pXFxuICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcXG4gICAgICBlZGl0VXNlcklkLnZhbHVlID0gJyc7XFxuICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xcbiAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gZXJyb3IuZGF0YS5tZXNzYWdlO1xcbiAgICAgIHRvYXN0RGF0YS50eXBlID0gZmFsc2U7XFxuICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XFxuICAgIH0pXFxuICAgIC5maW5hbGx5KCgpID0+IHtcXG4gICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcXG4gICAgfSk7XFxufTtcXG5cXG53YXRjaChcXG4gICgpID0+IFtcXG4gICAgZmlsdGVyLm9yZ2FuaXphdGlvbixcXG4gICAgZmlsdGVyLnJvbGVzLFxcbiAgICBmaWx0ZXIucSxcXG4gICAgZmlsdGVyLnN0YXR1cyxcXG4gICAgZmlsdGVyLnN0YXJ0X2RhdGUsXFxuICAgIGZpbHRlci5lbmRfZGF0ZSxcXG4gICAgZmlsdGVyLmRhdGVfdHlwZSxcXG4gIF0sXFxuICAoKSA9PiB7XFxuICAgIGZldGNoVXNlcnNMaXN0KHVzZXJzRGF0YVsnY3VycmVudF9wYWdlJ10sIHRydWUpO1xcbiAgfSxcXG4gIHsgZGVlcDogdHJ1ZSB9XFxuKTtcXG5cXG5mdW5jdGlvbiBmZXRjaFVzZXJzTGlzdChhY3RpdmVfcGFnZTogbnVtYmVyLCBmaWx0ZXJlZCA9IGZhbHNlKSB7XFxuICBsZXQgcm91dGUgPSBgL3VzZXJzL3BhZ2UvJHtmaWx0ZXJlZCA/ICcxJyA6IGFjdGl2ZV9wYWdlfWA7XFxuICBmZXRjaGluZ1RhYmxlRGF0YS52YWx1ZSA9IHRydWU7XFxuICBsZXQgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xcblxcbiAgZm9yIChjb25zdCBmaWx0ZXJfa2V5IGluIGZpbHRlcikge1xcbiAgICBpZiAoZmlsdGVyW2ZpbHRlcl9rZXldKSB7XFxuICAgICAgaWYgKGZpbHRlcltmaWx0ZXJfa2V5XS5sZW5ndGggPiAwKSB7XFxuICAgICAgICBwYXJhbXMuYXBwZW5kKGZpbHRlcl9rZXksIGZpbHRlcltmaWx0ZXJfa2V5XSk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuXFxuICBheGlvc1xcbiAgICAuZ2V0KHJvdXRlLCB7IHBhcmFtczogcGFyYW1zIH0pXFxuICAgIC50aGVuKChyZXMpID0+IHtcXG4gICAgICBjb25zdCByZXNwb25zZSA9IHJlcy5kYXRhO1xcbiAgICAgIE9iamVjdC5hc3NpZ24odXNlcnNEYXRhLCByZXNwb25zZS5kYXRhKTtcXG4gICAgICBpc0VtcHR5LnZhbHVlID0gcmVzcG9uc2UuZGF0YSA/IGZhbHNlIDogdHJ1ZTtcXG4gICAgICB0b3RhbFVzZXIudmFsdWUgPSByZXNwb25zZS5kYXRhLnRvdGFsO1xcbiAgICB9KVxcbiAgICAuZmluYWxseSgoKSA9PiB7XFxuICAgICAgZmV0Y2hpbmdUYWJsZURhdGEudmFsdWUgPSBmYWxzZTtcXG4gICAgfSk7XFxufVxcblxcbmNvbnN0IG9wZW5EZWxldGVtb2RlbCA9ICh1c2VyKSA9PiB7XFxuICBkZWxldGVNb2RhbC52YWx1ZSA9IHRydWU7XFxuICBkZWxldGVJZC52YWx1ZSA9IHVzZXIuaWQ7XFxuICBkZWxldGVVc2VybmFtZS52YWx1ZSA9IHVzZXIudXNlcm5hbWU7XFxufTtcXG5cXG5mdW5jdGlvbiBkZWxldGVVc2VyKGlkOiBudW1iZXIpIHtcXG4gIGRlbGV0ZU1vZGFsLnZhbHVlID0gZmFsc2U7XFxuICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XFxuXFxuICBheGlvcy5kZWxldGUoYC91c2VyLyR7aWR9YCkudGhlbigocmVzKSA9PiB7XFxuICAgIGlmIChyZXMuZGF0YS5tZXNzYWdlKSB7XFxuICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xcbiAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzLmRhdGEubWVzc2FnZTtcXG4gICAgICB0b2FzdERhdGEudHlwZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XFxuICAgIH1cXG5cXG4gICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MpIHtcXG4gICAgICBmZXRjaFVzZXJzTGlzdCh1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddKTtcXG4gICAgfVxcbiAgfSk7XFxufVxcblxcbmNvbnN0IHNvcnQgPSAocGFyYW0pID0+IHtcXG4gIGZpbHRlci5kaXJlY3Rpb24gPVxcbiAgICBmaWx0ZXIuZGlyZWN0aW9uID09PSAnYXNjJyAmJiBmaWx0ZXIub3JkZXJCeSA9PT0gcGFyYW0gPyAnZGVzYycgOiAnYXNjJztcXG4gIGZpbHRlci5vcmRlckJ5ID0gcGFyYW07XFxuXFxuICBmZXRjaFVzZXJzTGlzdCgxKTtcXG59O1xcblxcbmZ1bmN0aW9uIHRvZ2dsZVVzZXJTdGF0dXMoaWQ6IG51bWJlcikge1xcbiAgd2luZG93LnNjcm9sbFRvKDAsIDApO1xcbiAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcXG4gIHN0YXR1c01vZGFsLnZhbHVlID0gZmFsc2U7XFxuXFxuICBheGlvc1xcbiAgICAucGF0Y2goYC91c2VyL3N0YXR1cy8ke2lkfWApXFxuICAgIC50aGVuKChyZXMpID0+IHtcXG4gICAgICBpZiAocmVzLnN0YXR1cykge1xcbiAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xcbiAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSByZXMuZGF0YS5tZXNzYWdlO1xcbiAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xcblxcbiAgICAgICAgZmV0Y2hVc2Vyc0xpc3QodXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXSk7XFxuICAgICAgfVxcbiAgICB9KVxcbiAgICAuZmluYWxseSgoKSA9PiB7XFxuICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XFxuICAgIH0pO1xcbn1cXG5cXG5mdW5jdGlvbiBmb3JtYXREYXRlKGRhdGU6IERhdGUpIHtcXG4gIHJldHVybiBtb21lbnQoZGF0ZSkuZm9ybWF0KCdMTCcpO1xcbn1cXG5cXG5jb25zdCB0b2dnbGVTZWxlY3RhbGwgPSAoKSA9PiB7XFxuICBjdXJyZW50cGFnZURhdGEudmFsdWUgPSB1c2Vyc0RhdGEuZGF0YS5tYXAoKHZhbHVlKSA9PiB7XFxuICAgIHJldHVybiB2YWx1ZVsnaWQnXTtcXG4gIH0pO1xcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB1c2Vyc0RhdGEuZGF0YS5sZW5ndGg7IGkrKykge1xcbiAgICBpZiAoIWNoZWNrbGlzdC52YWx1ZS5pbmNsdWRlcyh1c2Vyc0RhdGEuZGF0YVtpXVsnaWQnXSkpXFxuICAgICAgY2hlY2tsaXN0LnZhbHVlW2NoZWNrbGlzdC52YWx1ZS5sZW5ndGggKyBpXSA9IHVzZXJzRGF0YS5kYXRhW2ldWydpZCddO1xcbiAgfVxcbiAgc2VsZWN0ZWRJZHMudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV0gPSBjaGVja2xpc3QudmFsdWU7XFxuICBpZiAoYWxsU2VsZWN0ZWQudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV0pIHtcXG4gICAgY2hlY2tsaXN0LnZhbHVlID0gY2hlY2tsaXN0LnZhbHVlLmZpbHRlcihcXG4gICAgICAobikgPT4gIU9iamVjdC52YWx1ZXMoY3VycmVudHBhZ2VEYXRhLnZhbHVlKS5pbmNsdWRlcyhuKVxcbiAgICApO1xcbiAgfVxcbiAgY2hlY2tsaXN0LnZhbHVlID0gY2hlY2tsaXN0LnZhbHVlLmZpbHRlcihmdW5jdGlvbiAoZWwpIHtcXG4gICAgcmV0dXJuIGVsICE9IG51bGw7XFxuICB9KTtcXG4gIGFsbFNlbGVjdGVkLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dID1cXG4gICAgIWFsbFNlbGVjdGVkLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dO1xcbn07XFxud2F0Y2goXFxuICAoKSA9PiBjaGVja2xpc3QudmFsdWUsXFxuICAoKSA9PiB7XFxuICAgIHNlbGVjdGVkSWRzLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dID0gW107XFxuXFxuICAgIGN1cnJlbnRwYWdlRGF0YS52YWx1ZSA9IHVzZXJzRGF0YS5kYXRhLm1hcCgodmFsdWUpID0+IHtcXG4gICAgICByZXR1cm4gdmFsdWVbJ2lkJ107XFxuICAgIH0pO1xcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoZWNrbGlzdC52YWx1ZS5sZW5ndGg7IGkrKykge1xcbiAgICAgIGlmIChjdXJyZW50cGFnZURhdGEudmFsdWUuaW5jbHVkZXMoY2hlY2tsaXN0LnZhbHVlW2ldKSkge1xcbiAgICAgICAgc2VsZWN0ZWRJZHMudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV1baV0gPSBjaGVja2xpc3QudmFsdWVbaV07XFxuICAgICAgfVxcbiAgICB9XFxuICAgIHNlbGVjdGVkSWRzLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dID0gc2VsZWN0ZWRJZHMudmFsdWVbXFxuICAgICAgdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXVxcbiAgICBdLmZpbHRlcihmdW5jdGlvbiAoZWwpIHtcXG4gICAgICByZXR1cm4gZWwgIT0gbnVsbDtcXG4gICAgfSk7XFxuICB9XFxuKTtcXG5cXG5jb25zdCBnZW5lcmF0ZUxhYmVsID0gKGxhYmVsKSA9PiB7XFxuICByZXR1cm4geyAnLS1sYWJlbCc6IGAnJHtsYWJlbH0nYCB9O1xcbn07XFxuXFxuY29uc3QgZG93bmxvYWRBbGwgPSAoKSA9PiB7XFxuICBsZXQgcm91dGUgPSBgL3VzZXJzL2Rvd25sb2FkL2A7XFxuICBsZXQgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xcbiAgbGV0IGFsbFBhZ2VTZWxlY3RlZDtcXG4gIGFsbFBhZ2VTZWxlY3RlZCA9IE9iamVjdC52YWx1ZXMoc2VsZWN0ZWRJZHMudmFsdWUpLmZsYXQoKTtcXG5cXG4gIGlmIChjaGVja2xpc3QudmFsdWUubGVuZ3RoID09IDApIHtcXG4gICAgZm9yIChjb25zdCBmaWx0ZXJfa2V5IGluIGZpbHRlcikge1xcbiAgICAgIGlmIChmaWx0ZXJbZmlsdGVyX2tleV0ubGVuZ3RoID4gMCkge1xcbiAgICAgICAgcGFyYW1zLmFwcGVuZChmaWx0ZXJfa2V5LCBmaWx0ZXJbZmlsdGVyX2tleV0pO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfSBlbHNlIHtcXG4gICAgcGFyYW1zLmFwcGVuZCgndXNlcnMnLCBhbGxQYWdlU2VsZWN0ZWQpO1xcbiAgfVxcblxcbiAgYXhpb3MuZ2V0KHJvdXRlLCB7IHBhcmFtczogcGFyYW1zIH0pLnRoZW4oKHJlcykgPT4ge1xcbiAgICBjb25zdCByZXNwb25zZSA9IHJlcy5kYXRhO1xcbiAgICBsZXQgYmxvYiA9IG5ldyBCbG9iKFtyZXNwb25zZV0sIHtcXG4gICAgICB0eXBlOiAnYXBwbGljYXRpb24vY3N2JyxcXG4gICAgfSk7XFxuICAgIGxldCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xcbiAgICBsaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcXG4gICAgbGluay5kb3dubG9hZCA9IHJlcy5oZWFkZXJzWydjb250ZW50LWRpc3Bvc2l0aW9uJ10uc3BsaXQoJz0nKVsxXTtcXG4gICAgbGluay5jbGljaygpO1xcbiAgfSk7XFxufTtcXG48L3NjcmlwdD5cXG48c3R5bGUgc2NvcGVkPlxcbkBrZXlmcmFtZXMgc3Bpbm5lciB7XFxuICAwJSB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCkgcm90YXRlKDBkZWcpO1xcbiAgfVxcbiAgMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCkgcm90YXRlKDM2MGRlZyk7XFxuICB9XFxufVxcblxcbi5zcGluOjpiZWZvcmUge1xcbiAgYW5pbWF0aW9uOiAxLjVzIGxpbmVhciBpbmZpbml0ZSBzcGlubmVyO1xcbiAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IGluaGVyaXQ7XFxuICBib3JkZXI6IHNvbGlkIDNweCAjY2ZkMGQxO1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogZ3JleTtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIGNvbnRlbnQ6ICcnO1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiA1MCU7XFxuICBsZWZ0OiA1MCU7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApO1xcbiAgd2lkdGg6IDIwcHg7XFxuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xcbn1cXG4uc3BpbiB7XFxuICBoZWlnaHQ6IDQwcHg7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1hcmdpbjogYXV0bztcXG59XFxuPC9zdHlsZT5cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuYWRkLWltcG9ydC1zaWRlYmFyLWRyb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgb3ZlcmZsb3cteTogaGlkZGVuO1xcbiAgcGFkZGluZzogMTRweCA4cHg7XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiAxNDIwcHgpIHtcXG4uYWRkLWltcG9ydC1zaWRlYmFyLWRyb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbn1cXG59XFxuLmFjdGl2aXR5X19oZWFkZXJbZGF0YS12LTZmZTU5MDU1XSB7XFxuICB0b3A6IDBweDtcXG4gIHotaW5kZXg6IDEwMDtcXG59XFxuLmFjdGl2aXR5X19oZWFkZXIgbmF2W2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxNDIwcHgpIHtcXG4uYWN0aXZpdHlfX2hlYWRlciBuYXZbZGF0YS12LTZmZTU5MDU1XSB7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbn1cXG59XFxuLmFjdGl2aXR5X19oZWFkZXIgbmF2IGFbZGF0YS12LTZmZTU5MDU1XTpob3ZlciB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLXdoaXRlKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbi5hY3Rpdml0eV9faGVhZGVyIG5hdiB1bFtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM3NXB4KSB7XFxuLmFjdGl2aXR5X19oZWFkZXIgLmFkZC1idG5bZGF0YS12LTZmZTU5MDU1XSB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxufVxcbn1cXG4uYWN0aXZpdHlfX2hlYWRlciAudXNlci1uYXZbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuLnRvYXN0W2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogNTAlO1xcbiAgei1pbmRleDogNTA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcmlnaHQ6IDAuNzVyZW07XFxuICB6LWluZGV4OiAyMDtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG4gIG9wYWNpdHk6IDA7XFxuICAtLXR3LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG4gIC0tdHctc2hhZG93LWNvbG9yZWQ6IDBweCA0cHggNDBweCB2YXIoLS10dy1zaGFkb3ctY29sb3IpO1xcbiAgYm94LXNoYWRvdzogdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LCAwIDAgIzAwMDApLCB2YXIoLS10dy1yaW5nLXNoYWRvdywgMCAwICMwMDAwKSwgdmFyKC0tdHctc2hhZG93KTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDMwMG1zO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucHJvZmlsZV9fZHJvcGRvd25bZGF0YS12LTZmZTU5MDU1XSB7XFxuICAgIHJpZ2h0OiAyLjVyZW07XFxufVxcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd25bZGF0YS12LTZmZTU5MDU1XSB7XFxuICB0b3A6IDUwcHg7XFxuICB3aWR0aDogMjY1cHg7XFxuICBib3gtc2hhZG93OiA0cHggNHB4IDQwcHggcmdiYSgwLCA1MCwgNzYsIDAuMik7XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY0MHB4KSB7XFxuLnByb2ZpbGVfX2Ryb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgICB3aWR0aDogMjIwcHg7XFxufVxcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24gbGlbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duIGxpW2RhdGEtdi02ZmU1OTA1NV0gPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gIC0tdHctc3BhY2UteC1yZXZlcnNlOiAwO1xcbiAgbWFyZ2luLXJpZ2h0OiBjYWxjKDAuNzVyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTtcXG4gIG1hcmdpbi1sZWZ0OiBjYWxjKDAuNzVyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSk7XFxufVxcbi5wcm9maWxlX19kcm9wZG93biBsaVtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIHBhZGRpbmc6IDAuNzVyZW07XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xcbi5wcm9maWxlX19kcm9wZG93biBsaVtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gICAgcGFkZGluZzogMXJlbTtcXG59XFxufVxcbi5wcm9maWxlX19kcm9wZG93biBsaSBhW2RhdGEtdi02ZmU1OTA1NV06aG92ZXIge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duIGxpIC51c2VyLXByb2ZpbGVbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBmb250LXNpemU6IDI2cHg7XFxufVxcbi5wcm9maWxlX19kcm9wZG93biAuZHJvcGRvd25fX2xpc3RbZGF0YS12LTZmZTU5MDU1XSB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLW4tMTApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxufVxcbi5wcm9maWxlX19kcm9wZG93biAuZHJvcGRvd25fX2xpc3RbZGF0YS12LTZmZTU5MDU1XTpob3ZlciB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLW4tMjApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24gLmRyb3Bkb3duX19saXN0IGFbZGF0YS12LTZmZTU5MDU1XSB7XFxuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaFtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHJpZ2h0OiAyLjVyZW07XFxuICB6LWluZGV4OiAyMDtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG4gIC0tdHctc2hhZG93OiAwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xcbiAgLS10dy1zaGFkb3ctY29sb3JlZDogMHB4IDRweCA0MHB4IHZhcigtLXR3LXNoYWRvdy1jb2xvcik7XFxuICBib3gtc2hhZG93OiB2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3csIDAgMCAjMDAwMCksIHZhcigtLXR3LXJpbmctc2hhZG93LCAwIDAgIzAwMDApLCB2YXIoLS10dy1zaGFkb3cpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMzAwbXM7XFxuICB0b3A6IDUwcHg7XFxuICB3aWR0aDogMjY1cHg7XFxuICBib3gtc2hhZG93OiA0cHggNHB4IDQwcHggcmdiYSgwLCA1MCwgNzYsIDAuMik7XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY0MHB4KSB7XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaFtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gICAgd2lkdGg6IDIyMHB4O1xcbn1cXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaCBsaVtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoIGxpW2RhdGEtdi02ZmU1OTA1NV0gPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gIC0tdHctc3BhY2UteC1yZXZlcnNlOiAwO1xcbiAgbWFyZ2luLXJpZ2h0OiBjYWxjKDAuNzVyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTtcXG4gIG1hcmdpbi1sZWZ0OiBjYWxjKDAuNzVyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSk7XFxufVxcbi5wcm9maWxlX19kcm9wZG93bi0tdG91Y2ggbGlbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBwYWRkaW5nOiAwLjc1cmVtO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoIGxpW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgICBwYWRkaW5nOiAxcmVtO1xcbn1cXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaCBsaSBhW2RhdGEtdi02ZmU1OTA1NV06aG92ZXIge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaCBsaSAudXNlci1wcm9maWxlW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgZm9udC1zaXplOiAyNnB4O1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoIC5kcm9wZG93bl9fbGlzdFtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tbi0xMCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaCAuZHJvcGRvd25fX2xpc3RbZGF0YS12LTZmZTU5MDU1XTpob3ZlciB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLW4tMjApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoIC5kcm9wZG93bl9fbGlzdCBhW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XFxufVxcbi5kcm9wZG93bi1idG46aG92ZXIgLnByb2ZpbGVfX2Ryb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0sIFxcbi5kcm9wZG93bi1idG46YWN0aXZlIC5wcm9maWxlX19kcm9wZG93bltkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICBvcGFjaXR5OiAxO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwcHgpO1xcbn1cXG4uZHJvcGRvd24tYnRuOmhvdmVyIC5kcm9wZG93bl9fYXJyb3dbZGF0YS12LTZmZTU5MDU1XSxcXG4uZHJvcGRvd24tYnRuOmFjdGl2ZSAuZHJvcGRvd25fX2Fycm93W2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcXG59XFxuLmFkZC1pbXBvcnRbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcbi5hZGQtaW1wb3J0LWRyb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgb3BhY2l0eTogMDtcXG59XFxuLmRyb3Bkb3duLXRyaWdnZXItY29udGFpbmVyW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgZGlzcGxheTogYmxvY2s7XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiAxNDIwcHgpIHtcXG4uZHJvcGRvd24tdHJpZ2dlci1jb250YWluZXJbZGF0YS12LTZmZTU5MDU1XSB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxufVxcbi5hZGQtaW1wb3J0OmhvdmVyIC5hZGQtaW1wb3J0LWRyb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XFxuICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xcbn1cXG59XFxuLnNwaW5uZXJbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDAuNzVyZW07XFxuICByaWdodDogMS43NXJlbTtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG59XFxuQGtleWZyYW1lcyBzcGluLTZmZTU5MDU1IHtcXG50byB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxufVxcbn1cXG4uc3Bpbm5lcltkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIGFuaW1hdGlvbjogc3Bpbi02ZmU1OTA1NSAxcyBsaW5lYXIgaW5maW5pdGU7XFxuICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XFxuICBib3JkZXItd2lkdGg6IDJweDtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1uLTEwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDAuMDU7XFxuICB3aWR0aDogMTVweDtcXG4gIGhlaWdodDogMTVweDtcXG4gIGJvcmRlci10b3AtY29sb3I6IHdoaXRlO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWRtaW5IZWFkZXIudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNBO0VBQ0Usa0JBQUE7RUFDQSxpQkFBQTtBQUFGO0FBRUU7QUFKRjtJQUtJLGFBQUE7QUFDRjtBQUNGO0FBRUE7RUFDRSxRQUFBO0VBQ0EsWUFBQTtBQUNGO0FBQ0U7RUFDRSxhQUFBO0VBQ0EsV0FBQTtFQUNBLDhCQUFBO0FBQ0o7QUFDSTtBQUxGO0lBTUksc0JBQUE7SUFDQSx1QkFBQTtBQUVKO0FBQ0Y7QUFDTTtFQUFBLG9CQUFBO0VBQUEsaURBQUE7QUFBQTtBQUlBO0VBQUEsYUFBQTtBQUFBO0FBS0Y7QUFERjtJQUVJLGFBQUE7QUFESjtBQUNGO0FBS0k7RUFBQSxhQUFBO0VBQUEsbUJBQUE7QUFBQTtBQUtGO0VBQUEsa0JBQUE7RUFBQSxTQUFBO0VBQUEsV0FBQTtFQUNBLGdDQUFBO0FBREE7QUFLQTtFQUFBLGtCQUFBO0VBQUEsa0JBQUE7RUFBQSxjQUFBO0VBQUEsV0FBQTtFQUFBLGtCQUFBO0VBQUEsMERBQUE7RUFBQSxnQkFBQTtFQUFBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSxvQkFBQTtFQUFBLHFEQUFBO0VBQUEsVUFBQTtFQUFBLDRDQUFBO0VBQUEsd0RBQUE7RUFBQSx1R0FBQTtFQUFBLDBCQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEsYUFBQTtBQUFBO0FBQUE7QUFERjtFQUVFLFNBQUE7RUFDQSxZQUFBO0VBQ0EsNkNBQUE7QUFIRjtBQUtFO0FBTkY7SUFPSSxZQUFBO0FBRkY7QUFDRjtBQUtJO0VBQUEsYUFBQTtFQUFBLG1CQUFBO0FBQUE7QUFBQTtFQUFBLHVCQUFBO0VBQUEsdURBQUE7RUFBQSxnRUFBQTtBQUFBO0FBQUE7RUFBQSxnQkFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLGFBQUE7QUFBQTtBQUFBO0FBR0U7RUFBQSxvQkFBQTtFQUFBLHFEQUFBO0FBQUE7QUFHRjtFQUNFLGVBQUE7QUFITjtBQVFJO0VBQUEsa0JBQUE7RUFBQSx5REFBQTtBQUFBO0FBQUE7RUFBQSxrQkFBQTtFQUFBLHlEQUFBO0VBQUEsb0JBQUE7RUFBQSxxREFBQTtBQUFBO0FBR0U7RUFBQSwwQkFBQTtBQUFBO0FBTUo7RUFBQSxrQkFBQTtFQUFBLGFBQUE7RUFBQSxXQUFBO0VBQUEsa0JBQUE7RUFBQSwwREFBQTtFQUFBLGdCQUFBO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLG9CQUFBO0VBQUEscURBQUE7RUFBQSw0Q0FBQTtFQUFBLHdEQUFBO0VBQUEsdUdBQUE7RUFBQSwwQkFBQTtFQUNBLFNBQUE7RUFDQSxZQUFBO0VBQ0EsNkNBQUE7QUFIQTtBQUtBO0FBTkY7SUFPSSxZQUFBO0FBTkY7QUFDRjtBQVNJO0VBQUEsYUFBQTtFQUFBLG1CQUFBO0FBQUE7QUFBQTtFQUFBLHVCQUFBO0VBQUEsdURBQUE7RUFBQSxnRUFBQTtBQUFBO0FBQUE7RUFBQSxnQkFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLGFBQUE7QUFBQTtBQUFBO0FBR0U7RUFBQSxvQkFBQTtFQUFBLHFEQUFBO0FBQUE7QUFHRjtFQUNFLGVBQUE7QUFQTjtBQVlJO0VBQUEsa0JBQUE7RUFBQSx5REFBQTtBQUFBO0FBQUE7RUFBQSxrQkFBQTtFQUFBLHlEQUFBO0VBQUEsb0JBQUE7RUFBQSxxREFBQTtBQUFBO0FBR0U7RUFBQSwwQkFBQTtBQUFBO0FBUUY7O0VBQUEsbUJBQUE7RUFBQSxVQUFBO0VBQ0EsMkJBQUE7QUFEQTtBQUlGOztFQUNFLHlCQUFBO0FBWko7QUFnQkE7RUFDRSxlQUFBO0FBYkY7QUFnQkE7RUFDRSxrQkFBQTtFQUNBLFVBQUE7QUFiRjtBQWdCQTtFQUNFLGNBQUE7QUFiRjtBQWVFO0FBSEY7SUFJSSxhQUFBO0FBWkY7QUFnQkY7SUFFSSw4QkFBQTtJQUNBLHFCQUFBO0lBQ0Esd0JBQUE7QUFaRjtBQVBGO0FBd0JFO0VBQUEsa0JBQUE7RUFBQSxZQUFBO0VBQUEsY0FBQTtFQUFBLHFCQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEseUJBQUE7QUFBQTtBQUFBO0FBQUE7RUFBQSwyQ0FBQTtFQUFBLHFCQUFBO0VBQUEsaUJBQUE7RUFBQSx5REFBQTtFQUFBLHlCQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSx1QkFBQTtBQUhBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5hZGQtaW1wb3J0LXNpZGViYXItZHJvcGRvd24ge1xcbiAgb3ZlcmZsb3cteTogaGlkZGVuO1xcbiAgcGFkZGluZzogMTRweCA4cHg7XFxuXFxuICBAbWVkaWEgKG1pbi13aWR0aDogMTQyMHB4KSB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICB9XFxufVxcblxcbi5hY3Rpdml0eV9faGVhZGVyIHtcXG4gIHRvcDogMHB4O1xcbiAgei1pbmRleDogMTAwO1xcblxcbiAgbmF2IHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG5cXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTQyMHB4KSB7XFxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgfVxcblxcbiAgICBhOmhvdmVyIHtcXG4gICAgICBAYXBwbHkgdGV4dC13aGl0ZTtcXG4gICAgfVxcblxcbiAgICB1bCB7XFxuICAgICAgQGFwcGx5IGZsZXg7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5hZGQtYnRuIHtcXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzc1cHgpIHtcXG4gICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxuICB9XFxuXFxuICAudXNlci1uYXYge1xcbiAgICBAYXBwbHkgZmxleCBpdGVtcy1jZW50ZXI7XFxuICB9XFxufVxcblxcbi50b2FzdCB7XFxuICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0yLzQgei01MDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xcbn1cXG5cXG4ucHJvZmlsZV9fZHJvcGRvd24ge1xcbiAgQGFwcGx5IGludmlzaWJsZSBhYnNvbHV0ZSByaWdodC0zIHotMjAgYmctd2hpdGUgdGV4dC1sZWZ0IHRleHQtc20gdGV4dC1ibHVlY29yYWwgb3BhY2l0eS0wIHNoYWRvdy1kcm9wZG93biBkdXJhdGlvbi0zMDAgc206cmlnaHQtMTA7XFxuICB0b3A6IDUwcHg7XFxuICB3aWR0aDogMjY1cHg7XFxuICBib3gtc2hhZG93OiA0cHggNHB4IDQwcHggcmdiYSgwLCA1MCwgNzYsIDAuMik7XFxuXFxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2NDBweCkge1xcbiAgICB3aWR0aDogMjIwcHg7XFxuICB9XFxuXFxuICBsaSB7XFxuICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTMgcC0zIHNtOnAtNDtcXG5cXG4gICAgYTpob3ZlciB7XFxuICAgICAgQGFwcGx5IHRleHQtYmx1ZWNvcmFsO1xcbiAgICB9XFxuXFxuICAgIC51c2VyLXByb2ZpbGUge1xcbiAgICAgIGZvbnQtc2l6ZTogMjZweDtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmRyb3Bkb3duX19saXN0IHtcXG4gICAgQGFwcGx5IGJnLW4tMTAgaG92ZXI6Ymctbi0yMCBob3Zlcjp0ZXh0LWJsdWVjb3JhbDtcXG5cXG4gICAgYSB7XFxuICAgICAgQGFwcGx5IGNhcGl0YWxpemU7XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaCB7XFxuICBAYXBwbHkgYWJzb2x1dGUgcmlnaHQtMTAgei0yMCBiZy13aGl0ZSB0ZXh0LWxlZnQgdGV4dC1zbSB0ZXh0LWJsdWVjb3JhbCBzaGFkb3ctZHJvcGRvd24gZHVyYXRpb24tMzAwO1xcbiAgdG9wOiA1MHB4O1xcbiAgd2lkdGg6IDI2NXB4O1xcbiAgYm94LXNoYWRvdzogNHB4IDRweCA0MHB4IHJnYmEoMCwgNTAsIDc2LCAwLjIpO1xcblxcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjQwcHgpIHtcXG4gICAgd2lkdGg6IDIyMHB4O1xcbiAgfVxcblxcbiAgbGkge1xcbiAgICBAYXBwbHkgZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0zIHAtMyBzbTpwLTQ7XFxuXFxuICAgIGE6aG92ZXIge1xcbiAgICAgIEBhcHBseSB0ZXh0LWJsdWVjb3JhbDtcXG4gICAgfVxcblxcbiAgICAudXNlci1wcm9maWxlIHtcXG4gICAgICBmb250LXNpemU6IDI2cHg7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5kcm9wZG93bl9fbGlzdCB7XFxuICAgIEBhcHBseSBiZy1uLTEwIGhvdmVyOmJnLW4tMjAgaG92ZXI6dGV4dC1ibHVlY29yYWw7XFxuXFxuICAgIGEge1xcbiAgICAgIEBhcHBseSBjYXBpdGFsaXplO1xcbiAgICB9XFxuICB9XFxufVxcblxcbi5kcm9wZG93bi1idG46aG92ZXIsXFxuLmRyb3Bkb3duLWJ0bjphY3RpdmUge1xcbiAgLnByb2ZpbGVfX2Ryb3Bkb3duIHtcXG4gICAgQGFwcGx5IHZpc2libGUgb3BhY2l0eS0xMDA7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMHB4KTtcXG4gIH1cXG5cXG4gIC5kcm9wZG93bl9fYXJyb3cge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xcbiAgfVxcbn1cXG5cXG4uYWRkLWltcG9ydCB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi5hZGQtaW1wb3J0LWRyb3Bkb3duIHtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIG9wYWNpdHk6IDA7XFxufVxcblxcbi5kcm9wZG93bi10cmlnZ2VyLWNvbnRhaW5lciB7XFxuICBkaXNwbGF5OiBibG9jaztcXG5cXG4gIEBtZWRpYSAobWluLXdpZHRoOiAxNDIwcHgpIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gIH1cXG59XFxuXFxuLmFkZC1pbXBvcnQ6aG92ZXIgLmFkZC1pbXBvcnQtZHJvcGRvd24ge1xcbiAgQG1lZGlhIChtaW4td2lkdGg6IDE0MjBweCkge1xcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XFxuICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xcbiAgfVxcbn1cXG5cXG4uc3Bpbm5lciB7XFxuICBAYXBwbHkgYWJzb2x1dGUgdG9wLTMgcmlnaHQtNyBpbmxpbmUtYmxvY2sgYW5pbWF0ZS1zcGluIHJvdW5kZWQtZnVsbCBib3JkZXItMiBib3JkZXItbi0xMCBib3JkZXItb3BhY2l0eS01O1xcbiAgd2lkdGg6IDE1cHg7XFxuICBoZWlnaHQ6IDE1cHg7XFxuICBib3JkZXItdG9wLWNvbG9yOiB3aGl0ZTtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLm1pbnVzW2RhdGEtdi0yNDQzZGY1M10ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGhlaWdodDogMC43NXJlbTtcXG4gIHdpZHRoOiAwLjc1cmVtO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuLm1pbnVzW2RhdGEtdi0yNDQzZGY1M106YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBoZWlnaHQ6IDAuMTI1cmVtO1xcbiAgd2lkdGg6IDAuNzVyZW07XFxuICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwtNTApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxufVxcbiNwdWJsaXNoaW5nX2FjdGl2aXRpZXNbZGF0YS12LTI0NDNkZjUzXSB7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICBib3R0b206IDBweDtcXG4gIHJpZ2h0OiAwcHg7XFxuICBmaWx0ZXI6IGRyb3Atc2hhZG93KDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xcbn1cXG4ucm9sbGluZ1tkYXRhLXYtMjQ0M2RmNTNdIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG59XFxuQGtleWZyYW1lcyBzcGluLTI0NDNkZjUzIHtcXG50byB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxufVxcbn1cXG4ucm9sbGluZ1tkYXRhLXYtMjQ0M2RmNTNdIHtcXG4gIGFuaW1hdGlvbjogc3Bpbi0yNDQzZGY1MyAxcyBsaW5lYXIgaW5maW5pdGU7XFxuICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XFxuICBib3JkZXItd2lkdGg6IDJweDtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tbi0yMCksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XFxuICB3aWR0aDogMjBweDtcXG4gIGhlaWdodDogMjBweDtcXG4gIGJvcmRlci10b3AtY29sb3I6IHdoaXRlO1xcbn1cXG4uYWN0aXZpdHktdGl0bGVbZGF0YS12LTI0NDNkZjUzXSB7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtFQUFBLGFBQUE7RUFBQSxlQUFBO0VBQUEsY0FBQTtFQUFBLG1CQUFBO0FBQUE7QUFDQTtFQUNFLFdBQUE7RUFDQSxjQUFBO0VBQUEsZ0JBQUE7RUFBQSxjQUFBO0VBQUEsc0JBQUE7RUFBQSxrQkFBQTtFQUFBLGlFQUFBO0FBQ0o7QUFJRTtFQUFBLGVBQUE7RUFBQSxXQUFBO0VBQUEsVUFBQTtFQUNBLG9EQUFBO0FBREE7QUFLQTtFQUFBLHFCQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEseUJBQUE7QUFBQTtBQUFBO0FBQUE7RUFBQSwyQ0FBQTtFQUFBLHFCQUFBO0VBQUEsaUJBQUE7RUFBQSxzQkFBQTtFQUFBLHlEQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSx1QkFBQTtBQUhBO0FBTUY7RUFDRSxtQkFBQTtFQUNBLGdCQUFBO0VBQ0EsdUJBQUE7QUFBRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4ubWludXMge1xcbiAgQGFwcGx5IGZsZXggaC0zIHctMyBpdGVtcy1jZW50ZXI7XFxuICAmOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6ICcnO1xcbiAgICBAYXBwbHkgYmxvY2sgaC0wLjUgdy0zIHJvdW5kZWQteGwgYmctYmx1ZS01MDtcXG4gIH1cXG59XFxuXFxuI3B1Ymxpc2hpbmdfYWN0aXZpdGllcyB7XFxuICBAYXBwbHkgZml4ZWQgYm90dG9tLTAgcmlnaHQtMDtcXG4gIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKSk7XFxufVxcblxcbi5yb2xsaW5nIHtcXG4gIEBhcHBseSBpbmxpbmUtYmxvY2sgYW5pbWF0ZS1zcGluIHJvdW5kZWQtZnVsbCBib3JkZXItMiBib3JkZXItbi0yMDtcXG4gIHdpZHRoOiAyMHB4O1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGU7XFxufVxcblxcbi5hY3Rpdml0eS10aXRsZSB7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuYWxlcnRbZGF0YS12LWI3N2IxMWQ0XSB7XFxuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1jYW1lbC0xMCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHBhZGRpbmc6IDFyZW07XFxuICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XFxuICBsaW5lLWhlaWdodDogMS42MjU7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNTApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKVxcbn1cXG4uYWxlcnRfX2NvbnRhaW5lcltkYXRhLXYtYjc3YjExZDRdIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgbGluZS1oZWlnaHQ6IDEuNXJlbVxcbn1cXG4uYWxlcnRfX2NvbnRlbnRbZGF0YS12LWI3N2IxMWQ0XSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlclxcbn1cXG4uYWxlcnRfX2NvbnRlbnRbZGF0YS12LWI3N2IxMWQ0XSA+IDpub3QoW2hpZGRlbl0pIH4gOm5vdChbaGlkZGVuXSkge1xcbiAgLS10dy1zcGFjZS14LXJldmVyc2U6IDA7XFxuICBtYXJnaW4tcmlnaHQ6IGNhbGMoMXJlbSAqIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpO1xcbiAgbWFyZ2luLWxlZnQ6IGNhbGMoMXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpKVxcbn1cXG4uYWxlcnRfX2NvbnRlbnQgc3BhbltkYXRhLXYtYjc3YjExZDRdIHtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNTApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKVxcbn1cXG4uYWxlcnRfX21lc3NhZ2VbZGF0YS12LWI3N2IxMWQ0XSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlclxcbn1cXG4uYWxlcnRfX21lc3NhZ2VbZGF0YS12LWI3N2IxMWQ0XSA+IDpub3QoW2hpZGRlbl0pIH4gOm5vdChbaGlkZGVuXSkge1xcbiAgLS10dy1zcGFjZS14LXJldmVyc2U6IDA7XFxuICBtYXJnaW4tcmlnaHQ6IGNhbGMoMC4yNXJlbSAqIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpO1xcbiAgbWFyZ2luLWxlZnQ6IGNhbGMoMC4yNXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpKVxcbn1cXG4udGV4dC1zaG93W2RhdGEtdi1iNzdiMTFkNF0ge1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXJcXG59XFxuLnRleHQtc2hvd1tkYXRhLXYtYjc3YjExZDRdID4gOm5vdChbaGlkZGVuXSkgfiA6bm90KFtoaWRkZW5dKSB7XFxuICAtLXR3LXNwYWNlLXgtcmV2ZXJzZTogMDtcXG4gIG1hcmdpbi1yaWdodDogY2FsYygwLjVyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTtcXG4gIG1hcmdpbi1sZWZ0OiBjYWxjKDAuNXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpKVxcbn1cXG4udGV4dC1zaG93W2RhdGEtdi1iNzdiMTFkNF0ge1xcbiAgb3BhY2l0eTogMDtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDMwMG1zO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwcHgsIDMwcHgpXFxufVxcbi50ZXh0LWhpZGVbZGF0YS12LWI3N2IxMWQ0XSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLS10dy10cmFuc2xhdGUteTogLTBweDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKHZhcigtLXR3LXRyYW5zbGF0ZS14KSwgdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tld1godmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlclxcbn1cXG4udGV4dC1oaWRlW2RhdGEtdi1iNzdiMTFkNF0gPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gIC0tdHctc3BhY2UteC1yZXZlcnNlOiAwO1xcbiAgbWFyZ2luLXJpZ2h0OiBjYWxjKDAuNXJlbSAqIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpO1xcbiAgbWFyZ2luLWxlZnQ6IGNhbGMoMC41cmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSkpXFxufVxcbi50ZXh0LWhpZGVbZGF0YS12LWI3N2IxMWQ0XSB7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAzMDBtc1xcbn1cXG4uYm9yZGVyLWhpZGVbZGF0YS12LWI3N2IxMWQ0XTo6YmVmb3JlIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDBweDtcXG4gIHRvcDogMHB4O1xcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tc2FsbW9uLTUwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMzAwbXM7XFxuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XFxuICB3aWR0aDogMnB4O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpXFxufVxcbi5ib3JkZXItc2hvd1tkYXRhLXYtYjc3YjExZDRdOjpiZWZvcmUge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMHB4O1xcbiAgdG9wOiAwcHg7XFxuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1zYWxtb24tNTApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAzMDBtcztcXG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcXG4gIHdpZHRoOiAycHg7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSlcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0Vycm9yTWVzc2FnZS52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxzQkFBQTtFQUFBLGtCQUFBO0VBQUEsNkRBQUE7RUFBQSxhQUFBO0VBQUEscUJBQUE7RUFBQSxtQkFBQTtFQUFBLG9CQUFBO0VBQUEsa0JBQUE7RUFBQSxvQkFBQTtFQUFBO0FBQUE7QUFHRTtFQUFBLGFBQUE7RUFBQSxzQkFBQTtFQUFBO0FBQUE7QUFHQTtFQUFBLGFBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQSx1QkFBQTtFQUFBLG9EQUFBO0VBQUE7QUFBQTtBQUdFO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLGdCQUFBO0VBQUEsb0JBQUE7RUFBQTtBQUFBO0FBSUY7RUFBQSxhQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUEsdUJBQUE7RUFBQSx1REFBQTtFQUFBO0FBQUE7QUFJRjtFQUFBLGtCQUFBO0VBQUEsYUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBLHVCQUFBO0VBQUEsc0RBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQSxVQUFBO0VBQUEsMEJBQUE7RUFDQTtBQURBO0FBSUE7RUFBQSxhQUFBO0VBQUEsc0JBQUE7RUFBQSwrTEFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBLHVCQUFBO0VBQUEsc0RBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBR0E7RUFBQSxrQkFBQTtFQUFBLFNBQUE7RUFBQSxRQUFBO0VBQUEsc0JBQUE7RUFBQSxrQkFBQTtFQUFBLDhEQUFBO0VBQUEsMEJBQUE7RUFBQSxzREFBQTtFQUNBLFVBQUE7RUFDQSxZQUFBO0VBQ0EsV0FBQTtFQUNBO0FBSkE7QUFPQTtFQUFBLGtCQUFBO0VBQUEsU0FBQTtFQUFBLFFBQUE7RUFBQSxzQkFBQTtFQUFBLGtCQUFBO0VBQUEsOERBQUE7RUFBQSwwQkFBQTtFQUFBLHNEQUFBO0VBQ0EsVUFBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0VBQ0E7QUFKQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4uYWxlcnQge1xcbiAgQGFwcGx5IHJvdW5kZWQgYmctY2FtZWwtMTAgcC00IHByLTYgdGV4dC1zbSBsZWFkaW5nLXJlbGF4ZWQgdGV4dC1uLTUwO1xcblxcbiAgJl9fY29udGFpbmVyIHtcXG4gICAgQGFwcGx5IGZsZXggZmxleC1jb2wgbGVhZGluZy02O1xcbiAgfVxcbiAgJl9fY29udGVudCB7XFxuICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTQ7XFxuXFxuICAgIHNwYW4ge1xcbiAgICAgIEBhcHBseSB0ZXh0LXNtIGZvbnQtYm9sZCB0ZXh0LW4tNTA7XFxuICAgIH1cXG4gIH1cXG4gICZfX21lc3NhZ2Uge1xcbiAgICBAYXBwbHkgZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xO1xcbiAgfVxcbn1cXG4udGV4dC1zaG93IHtcXG4gIEBhcHBseSBpbnZpc2libGUgZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yIG9wYWNpdHktMCBkdXJhdGlvbi0zMDA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTBweCwgMzBweCk7XFxufVxcbi50ZXh0LWhpZGUge1xcbiAgQGFwcGx5IGZsZXggLXRyYW5zbGF0ZS15LTAgaXRlbXMtY2VudGVyIHNwYWNlLXgtMiBkdXJhdGlvbi0zMDA7XFxufVxcbi5ib3JkZXItaGlkZTo6YmVmb3JlIHtcXG4gIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgcm91bmRlZCBiZy1zYWxtb24tNTAgZHVyYXRpb24tMzAwIGVhc2Utb3V0O1xcbiAgd2lkdGg6IDJweDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIGNvbnRlbnQ6ICcnO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTtcXG59XFxuLmJvcmRlci1zaG93OjpiZWZvcmUge1xcbiAgQGFwcGx5IGFic29sdXRlIGxlZnQtMCB0b3AtMCByb3VuZGVkIGJnLXNhbG1vbi01MCBkdXJhdGlvbi0zMDAgZWFzZS1vdXQ7XFxuICB3aWR0aDogMnB4O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgY29udGVudDogJyc7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuaGVscCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5oZWxwX190ZXh0IHtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMXJlbTtcXG4gIHotaW5kZXg6IDIwO1xcbn1cXG4uaGVscF9fdGV4dCA+IDpub3QoW2hpZGRlbl0pIH4gOm5vdChbaGlkZGVuXSkge1xcbiAgLS10dy1zcGFjZS15LXJldmVyc2U6IDA7XFxuICBtYXJnaW4tdG9wOiBjYWxjKDAuMzc1cmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpO1xcbiAgbWFyZ2luLWJvdHRvbTogY2FsYygwLjM3NXJlbSAqIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpO1xcbn1cXG4uaGVscF9fdGV4dCB7XFxuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1lZ2dzaGVsbCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHBhZGRpbmc6IDFyZW07XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDFyZW07XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNDApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG4gIG9wYWNpdHk6IDA7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAyMDBtcztcXG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0O1xcbiAgYm94LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG59XFxuLmhlbHBfX3RleHQgcCBhIHtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxufVxcbi5oZWxwOmhvdmVyIC5oZWxwX190ZXh0IHtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKDUwJSwgNXB4KTtcXG4gIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICBvcGFjaXR5OiAxO1xcbn1cXG5AbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XFxuLmhlbHA6aG92ZXIgLmhlbHBfX3RleHQge1xcbiAgICB3aWR0aDogMjAwcHg7XFxufVxcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtFQUFBLGtCQUFBO0FBQUE7QUFHRTtFQUFBLGtCQUFBO0VBQUEsa0JBQUE7RUFBQSxTQUFBO0VBQUEsV0FBQTtBQUFBO0FBQUE7RUFBQSx1QkFBQTtFQUFBLGdFQUFBO0VBQUEseURBQUE7QUFBQTtBQUFBO0VBQUEsc0JBQUE7RUFBQSxrQkFBQTtFQUFBLDZEQUFBO0VBQUEsYUFBQTtFQUFBLGdCQUFBO0VBQUEsa0JBQUE7RUFBQSxpQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7RUFBQSxVQUFBO0VBQUEsMEJBQUE7RUFDQSw2QkFBQTtFQUNBLDJDQUFBO0FBRkE7QUFJQTtFQUNFLGdCQUFBO0FBQU47QUFNRTtFQUNFLDhCQUFBO0VBQ0EsbUJBQUE7RUFDQSxVQUFBO0FBSEo7QUFJSTtBQUpGO0lBS0ksWUFBQTtBQURKO0FBQ0ZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLmhlbHAge1xcbiAgQGFwcGx5IHJlbGF0aXZlO1xcblxcbiAgJl9fdGV4dCB7XFxuICAgIEBhcHBseSBpbnZpc2libGUgYWJzb2x1dGUgdG9wLTQgei0yMCBzcGFjZS15LTEuNSByb3VuZGVkIGJnLWVnZ3NoZWxsIHAtNCB0ZXh0LWxlZnQgdGV4dC14cyB0ZXh0LW4tNDAgb3BhY2l0eS0wIGR1cmF0aW9uLTIwMDtcXG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQ7XFxuICAgIGJveC1zaGFkb3c6IDBweCA0cHggNDBweCByZ2IoMCAwIDAgLyAxMCUpO1xcblxcbiAgICBwIGEge1xcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLmhlbHA6aG92ZXIge1xcbiAgLmhlbHBfX3RleHQge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg1MCUsIDVweCk7XFxuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICAgIG9wYWNpdHk6IDE7XFxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcXG4gICAgICB3aWR0aDogMjAwcHg7XFxuICAgIH1cXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLm92ZXJsYXkge1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgbGVmdDogMHB4O1xcbiAgdG9wOiAwcHg7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMTAwJTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tYmxhY2spLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBvcGFjaXR5OiAwLjc7XFxuICB6LWluZGV4OiAxMDAwXFxufVxcbi5vdmVybGF5X19pbm5lciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwcHg7XFxuICB0b3A6IDBweDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAxMDAlXFxufVxcbi5vdmVybGF5X19jb250ZW50IHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDUwJTtcXG4gIHRvcDogNTAlO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSlcXG59XFxuLm92ZXJsYXlfX2NvbnRlbnQgLnNwaW5uZXIge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrXFxufVxcbkBrZXlmcmFtZXMgc3BpbiB7XFxudG8ge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpXFxufVxcbn1cXG4ub3ZlcmxheV9fY29udGVudCAuc3Bpbm5lciB7XFxuICBhbmltYXRpb246IHNwaW4gMXMgbGluZWFyIGluZmluaXRlO1xcbiAgYm9yZGVyLXJhZGl1czogOTk5OXB4O1xcbiAgYm9yZGVyLXdpZHRoOiAycHg7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tbi0xMCksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAwLjA1O1xcbiAgd2lkdGg6IDc1cHg7XFxuICBoZWlnaHQ6IDc1cHg7XFxuICBib3JkZXItdG9wLWNvbG9yOiB3aGl0ZVxcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtFQUFBLGVBQUE7RUFBQSxTQUFBO0VBQUEsUUFBQTtFQUFBLFlBQUE7RUFBQSxXQUFBO0VBQUEsa0JBQUE7RUFBQSwwREFBQTtFQUNBLFlBQUE7RUFDQTtBQUZBO0FBS0U7RUFBQSxrQkFBQTtFQUFBLFNBQUE7RUFBQSxRQUFBO0VBQUEsWUFBQTtFQUFBO0FBQUE7QUFJQTtFQUFBLGtCQUFBO0VBQUEsU0FBQTtFQUFBLFFBQUE7RUFDQTtBQURBO0FBSUU7RUFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBO0FBQUE7QUFBQTtBQUFBO0VBQUEsa0NBQUE7RUFBQSxxQkFBQTtFQUFBLGlCQUFBO0VBQUEseURBQUE7RUFBQSx5QkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0E7QUFIQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4ub3ZlcmxheSB7XFxuICBAYXBwbHkgZml4ZWQgbGVmdC0wICB0b3AtMCAgaC1mdWxsIHctZnVsbCBiZy1ibGFjaztcXG4gIG9wYWNpdHk6IDAuNztcXG4gIHotaW5kZXg6IDEwMDA7XFxuXFxuICAmX19pbm5lciB7XFxuICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgaC1mdWxsIHctZnVsbDtcXG4gIH1cXG5cXG4gICZfX2NvbnRlbnQge1xcbiAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0yLzQgdG9wLTIvNDtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XFxuXFxuICAgIC5zcGlubmVyIHtcXG4gICAgICBAYXBwbHkgaW5saW5lLWJsb2NrIGFuaW1hdGUtc3BpbiByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLW4tMTAgYm9yZGVyLW9wYWNpdHktNTtcXG4gICAgICB3aWR0aDogNzVweDtcXG4gICAgICBoZWlnaHQ6IDc1cHg7XFxuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGU7XFxuICAgIH1cXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLm1vZGFsLWFuaW1hdGlvbi1lbnRlci1hY3RpdmVbZGF0YS12LTVhMmJkYTU4XSxcXG4ubW9kYWwtYW5pbWF0aW9uLWxlYXZlLWFjdGl2ZVtkYXRhLXYtNWEyYmRhNThdIHtcXG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC41cyBjdWJpYy1iZXppZXIoMC41MiwgMC4wMiwgMC4xOSwgMS4wMik7XFxufVxcbi5tb2RhbC1hbmltYXRpb24tZW50ZXItZnJvbVtkYXRhLXYtNWEyYmRhNThdLFxcbi5tb2RhbC1hbmltYXRpb24tbGVhdmUtdG9bZGF0YS12LTVhMmJkYTU4XSB7XFxuICBvcGFjaXR5OiAwO1xcbn1cXG4ubW9kYWwtYW5pbWF0aW9uLWlubmVyLWVudGVyLWFjdGl2ZVtkYXRhLXYtNWEyYmRhNThdIHtcXG4gIHRyYW5zaXRpb246IGFsbCAwLjVzIGN1YmljLWJlemllcigwLjUyLCAwLjAyLCAwLjE5LCAxLjAyKSAwLjE1cztcXG59XFxuLm1vZGFsLWFuaW1hdGlvbi1pbm5lci1sZWF2ZS1hY3RpdmVbZGF0YS12LTVhMmJkYTU4XSB7XFxuICB0cmFuc2l0aW9uOiBhbGwgMC4xcyBjdWJpYy1iZXppZXIoMC41MiwgMC4wMiwgMC4xOSwgMS4wMik7XFxufVxcbi5tb2RhbC1hbmltYXRpb24taW5uZXItZW50ZXItZnJvbVtkYXRhLXYtNWEyYmRhNThdIHtcXG4gIG9wYWNpdHk6IDA7XFxuICB0cmFuc2Zvcm06IHNjYWxlKDAuOCk7XFxufVxcbi5tb2RhbC1hbmltYXRpb24taW5uZXItbGVhdmUtdG9bZGF0YS12LTVhMmJkYTU4XSB7XFxuICB0cmFuc2Zvcm06IHNjYWxlKDAuOCk7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFDQTs7RUFFRSw2REFBQTtBQUFGO0FBR0E7O0VBRUUsVUFBQTtBQUFGO0FBR0E7RUFDRSwrREFBQTtBQUFGO0FBR0E7RUFDRSx5REFBQTtBQUFGO0FBR0E7RUFDRSxVQUFBO0VBQ0EscUJBQUE7QUFBRjtBQUdBO0VBQ0UscUJBQUE7QUFBRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4ubW9kYWwtYW5pbWF0aW9uLWVudGVyLWFjdGl2ZSxcXG4ubW9kYWwtYW5pbWF0aW9uLWxlYXZlLWFjdGl2ZSB7XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXMgY3ViaWMtYmV6aWVyKDAuNTIsIDAuMDIsIDAuMTksIDEuMDIpO1xcbn1cXG5cXG4ubW9kYWwtYW5pbWF0aW9uLWVudGVyLWZyb20sXFxuLm1vZGFsLWFuaW1hdGlvbi1sZWF2ZS10byB7XFxuICBvcGFjaXR5OiAwO1xcbn1cXG5cXG4ubW9kYWwtYW5pbWF0aW9uLWlubmVyLWVudGVyLWFjdGl2ZSB7XFxuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBjdWJpYy1iZXppZXIoMC41MiwgMC4wMiwgMC4xOSwgMS4wMikgMC4xNXM7XFxufVxcblxcbi5tb2RhbC1hbmltYXRpb24taW5uZXItbGVhdmUtYWN0aXZlIHtcXG4gIHRyYW5zaXRpb246IGFsbCAwLjFzIGN1YmljLWJlemllcigwLjUyLCAwLjAyLCAwLjE5LCAxLjAyKTtcXG59XFxuXFxuLm1vZGFsLWFuaW1hdGlvbi1pbm5lci1lbnRlci1mcm9tIHtcXG4gIG9wYWNpdHk6IDA7XFxuICB0cmFuc2Zvcm06IHNjYWxlKDAuOCk7XFxufVxcblxcbi5tb2RhbC1hbmltYXRpb24taW5uZXItbGVhdmUtdG8ge1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjgpO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuc2hpbW1lcl9fYmxvY2tbZGF0YS12LTc0MzU2MTcyXSB7XFxuICBhbmltYXRpb24tZHVyYXRpb246IDJzO1xcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XFxuICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcXG4gIGFuaW1hdGlvbi1uYW1lOiBwbGFjZUhvbGRlclNoaW1tZXItNzQzNTYxNzI7XFxuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XFxuICBhbmltYXRpb24tZGVsYXk6IDAuNXM7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWRlZGVkO1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDkwZGVnLCAjZWRlZGVkIDE0LjM2JSwgI2Q3ZDZkNiA1Ni4yOSUsICNlZGVkZWQgMTAwJSk7XFxuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcbiAgYmFja2dyb3VuZC1zaXplOiAyNDRweCAxMDRweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGhlaWdodDogMTlweDtcXG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1hcmdpbjogM3B4IDZweCAzcHggMHB4O1xcbn1cXG5Aa2V5ZnJhbWVzIHBsYWNlSG9sZGVyU2hpbW1lci03NDM1NjE3MiB7XFxuMCUge1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDAlIC0gMzAwcHgpIDA7XFxufVxcbjIwJSB7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMCUgLSAzMDBweCkgMDtcXG59XFxuODAlIHtcXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2FsYygxMDAlICsgMzAwcHgpIDA7XFxufVxcbjEwMCUge1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDEwMCUgKyAzMDBweCkgMDtcXG59XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9TaGltbWVyTG9hZGluZy52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQ0E7RUFDRSxzQkFBQTtFQUNBLDZCQUFBO0VBQ0EsbUNBQUE7RUFDQSwyQ0FBQTtFQUNBLGlDQUFBO0VBQ0EscUJBQUE7RUFDQSx5QkFBQTtFQUNBLHNGQUFBO0VBTUEsNEJBQUE7RUFDQSw0QkFBQTtFQUNBLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLG1CQUFBO0VBQ0EsV0FBQTtFQUNBLHVCQUFBO0FBTEY7QUFRQTtBQUNFO0lBQ0UsdUNBQUE7QUFMRjtBQVFBO0lBQ0UsdUNBQUE7QUFORjtBQVNBO0lBQ0UseUNBQUE7QUFQRjtBQVVBO0lBQ0UseUNBQUE7QUFSRjtBQUNGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5zaGltbWVyX19ibG9jayB7XFxuICBhbmltYXRpb24tZHVyYXRpb246IDJzO1xcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XFxuICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcXG4gIGFuaW1hdGlvbi1uYW1lOiBwbGFjZUhvbGRlclNoaW1tZXI7XFxuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XFxuICBhbmltYXRpb24tZGVsYXk6IDAuNXM7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWRlZGVkO1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KFxcbiAgICA5MGRlZyxcXG4gICAgI2VkZWRlZCAxNC4zNiUsXFxuICAgICNkN2Q2ZDYgNTYuMjklLFxcbiAgICAjZWRlZGVkIDEwMCVcXG4gICk7XFxuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcbiAgYmFja2dyb3VuZC1zaXplOiAyNDRweCAxMDRweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGhlaWdodDogMTlweDtcXG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1hcmdpbjogM3B4IDZweCAzcHggMHB4O1xcbn1cXG5cXG5Aa2V5ZnJhbWVzIHBsYWNlSG9sZGVyU2hpbW1lciB7XFxuICAwJSB7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMCUgLSAzMDBweCkgMDtcXG4gIH1cXG5cXG4gIDIwJSB7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMCUgLSAzMDBweCkgMDtcXG4gIH1cXG5cXG4gIDgwJSB7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMTAwJSArIDMwMHB4KSAwO1xcbiAgfVxcblxcbiAgMTAwJSB7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMTAwJSArIDMwMHB4KSAwO1xcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuZXJyb3JzW2RhdGEtdi1mNjdjN2U3Ml0ge1xcbiAgICBib3JkZXItbGVmdC13aWR0aDogMnB4XFxufVxcbi5lcnJvcnNfX2hlYWRbZGF0YS12LWY2N2M3ZTcyXSB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gICAgcGFkZGluZzogMXJlbVxcbn1cXG4uZXJyb3JzX19oZWFkLS10aXRsZVtkYXRhLXYtZjY3YzdlNzJdIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC1ncm93OiAxO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gICAgbGluZS1oZWlnaHQ6IDEuNjI1XFxufVxcbi5lcnJvcnNfX2xpc3RbZGF0YS12LWY2N2M3ZTcyXSB7XFxuICAgIGhlaWdodDogMHB4O1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICBwYWRkaW5nLWxlZnQ6IDFyZW07XFxuICAgIHBhZGRpbmctcmlnaHQ6IDFyZW07XFxuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGFsbDtcXG4gICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XFxuICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDUwMG1zXFxufVxcbi5lcnJvcnNfX2xpc3QgdWxbZGF0YS12LWY2N2M3ZTcyXSB7XFxuICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW1cXG59XFxuLmVycm9yc19faXRlbVtkYXRhLXYtZjY3YzdlNzJdIHtcXG4gICAgcGFkZGluZy10b3A6IDFyZW07XFxuICAgIHBhZGRpbmctYm90dG9tOiAxcmVtO1xcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gICAgbGluZS1oZWlnaHQ6IDEuNVxcbn1cXG4uZXJyb3JzX19pdGVtW2RhdGEtdi1mNjdjN2U3Ml06bm90KDpsYXN0LWNoaWxkKSB7XFxuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDFweDtcXG4gICAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLW4tMjApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpXFxufVxcbi5lcnJvcnNfX2VsZW1lbnRbZGF0YS12LWY2N2M3ZTcyXSB7XFxuICAgIGxpc3Qtc3R5bGUtdHlwZTogZGlzYztcXG4gICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xcbiAgICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gICAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsLTUwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSlcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0Vycm9yTGlzdHMudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0lBQUE7QUFBQTtBQUdFO0lBQUEsYUFBQTtJQUFBLDhCQUFBO0lBQUE7QUFBQTtBQUdFO0lBQUEsYUFBQTtJQUFBLFlBQUE7SUFBQSxtQkFBQTtJQUFBLG1CQUFBO0lBQUEsb0JBQUE7SUFBQTtBQUFBO0FBS0Y7SUFBQSxXQUFBO0lBQUEsZ0JBQUE7SUFBQSxrQkFBQTtJQUFBLG1CQUFBO0lBQUEsd0JBQUE7SUFBQSx3REFBQTtJQUFBO0FBQUE7QUFHRTtJQUFBLG9CQUFBO0lBQUE7QUFBQTtBQUtGO0lBQUEsaUJBQUE7SUFBQSxvQkFBQTtJQUFBLG1CQUFBO0lBQUEsb0JBQUE7SUFBQTtBQUFBO0FBSUE7SUFBQSx3QkFBQTtJQUFBLHNCQUFBO0lBQUE7QUFBQTtBQUlBO0lBQUEscUJBQUE7SUFBQSxrQkFBQTtJQUFBLG1CQUFBO0lBQUEsb0JBQUE7SUFBQTtBQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5lcnJvcnMge1xcbiAgQGFwcGx5IGJvcmRlci1sLTI7XFxuXFxuICAmX19oZWFkIHtcXG4gICAgQGFwcGx5IGZsZXgganVzdGlmeS1iZXR3ZWVuIHAtNDtcXG5cXG4gICAgJi0tdGl0bGUge1xcbiAgICAgIEBhcHBseSBmbGV4IGdyb3cgaXRlbXMtY2VudGVyIHRleHQtc20gbGVhZGluZy1yZWxheGVkO1xcbiAgICB9XFxuICB9XFxuXFxuICAmX19saXN0IHtcXG4gICAgQGFwcGx5IGgtMCBvdmVyZmxvdy1oaWRkZW4gcHgtNCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDA7XFxuXFxuICAgIHVsIHtcXG4gICAgICBAYXBwbHkgcHgtNjtcXG4gICAgfVxcbiAgfVxcblxcbiAgJl9faXRlbSB7XFxuICAgIEBhcHBseSBweS00IHRleHQtc20gbGVhZGluZy1ub3JtYWw7XFxuICB9XFxuXFxuICAmX19pdGVtOm5vdCg6bGFzdC1jaGlsZCkge1xcbiAgICBAYXBwbHkgYm9yZGVyLWIgYm9yZGVyLW4tMjA7XFxuICB9XFxuXFxuICAmX19lbGVtZW50IHtcXG4gICAgQGFwcGx5IGxpc3QtZGlzYyBweC00IHRleHQtYmx1ZS01MDtcXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnByb2dyZXNzX2JhcltkYXRhLXYtNWMzMmJmMGNdIHtcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXG4gIGxlZnQ6IDBweDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICB3aWR0aDogMTAwJTtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICB0b3A6IDAgIWltcG9ydGFudDtcXG4gIHotaW5kZXg6IDk5OTk5OTtcXG4gIGhlaWdodDogMTAwdmg7XFxufVxcbi5wcm9ncmVzc19iYXJfX3dyYXBwZXJbZGF0YS12LTVjMzJiZjBjXSB7XFxuICB3aWR0aDogMjUwcHg7XFxuICBib3JkZXItcmFkaXVzOiAxcmVtO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M0YzRjNDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxufVxcbi5wcm9ncmVzc19iYXJfX3ZpZXdlcltkYXRhLXYtNWMzMmJmMGNdIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tc3ByaW5nLTUwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgaGVpZ2h0OiA0cHg7XFxuICB0cmFuc2Zvcm06IHNjYWxlWCgwKTtcXG4gIHRyYW5zZm9ybS1vcmlnaW46IDAgMDtcXG59XFxuLnByb2dyZXNzX2Jhci5hbmltYXRlLWxvYWRlciAucHJvZ3Jlc3NfYmFyX192aWV3ZXJbZGF0YS12LTVjMzJiZjBjXSB7XFxuICBhbmltYXRpb246IEZpbGxBbmltYXRpb24tNWMzMmJmMGMgNnMgbGluZWFyIGZvcndhcmRzO1xcbn1cXG4ucHJvZ3Jlc3NfYmFyLmFuaW1hdGUtbG9hZGVyIC5wcm9ncmVzc19iYXJfX3N0YXRlW2RhdGEtdi01YzMyYmYwY106OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIGFuaW1hdGlvbjogVGV4dENoYW5nZS01YzMyYmYwYyA2cyBsaW5lYXIgZm9yd2FyZHM7XFxufVxcbi5wcm9ncmVzc19iYXJfX2NvbnRlbnRbZGF0YS12LTVjMzJiZjBjXSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG59XFxuLnByb2dyZXNzX2Jhcl9fc3RhdGVbZGF0YS12LTVjMzJiZjBjXSB7XFxuICBtYXJnaW4tdG9wOiAxLjVyZW07XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XFxuICBmb250LXdlaWdodDogNzAwO1xcbiAgbGluZS1oZWlnaHQ6IDEuNTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsLTUwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbkBrZXlmcmFtZXMgRmlsbEFuaW1hdGlvbi01YzMyYmYwYyB7XFxuMCUge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlWCgwKTtcXG59XFxuMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogc2NhbGVYKDEpO1xcbn1cXG59XFxuQGtleWZyYW1lcyBUZXh0Q2hhbmdlLTVjMzJiZjBjIHtcXG4wJSB7XFxuICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1zdGFydCk7XFxufVxcbjk1JSB7XFxuICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1zdGFydCk7XFxufVxcbjEwMCUge1xcbiAgICBjb250ZW50OiBhdHRyKGRhdGEtZW5kKTtcXG59XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxlQUFBO0VBQUEsU0FBQTtFQUFBLGFBQUE7RUFBQSxXQUFBO0VBQUEsbUJBQUE7RUFBQSx1QkFBQTtFQUFBLGtCQUFBO0VBQUEsMERBQUE7RUFDQSxpQkFBQTtFQUNBLGVBQUE7RUFDQSxhQUFBO0FBSEE7QUFNRTtFQUFBLFlBQUE7RUFBQSxtQkFBQTtFQUNBLHlCQUFBO0VBQ0EsZ0JBQUE7QUFGQTtBQU1BO0VBQUEsa0JBQUE7RUFBQSw4REFBQTtFQUNBLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLG9CQUFBO0VBQ0EscUJBQUE7QUFKQTtBQU9GO0VBQ0Usb0RBQUE7QUFGSjtBQUtFO0VBQ0UsV0FBQTtFQUNBLGlEQUFBO0FBSEo7QUFPSTtFQUFBLGFBQUE7RUFBQSxzQkFBQTtBQUFBO0FBSUE7RUFBQSxrQkFBQTtFQUFBLGtCQUFBO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLGdCQUFBO0VBQUEsZ0JBQUE7RUFBQSxvQkFBQTtFQUFBLHdEQUFBO0FBQUE7QUFJSjtBQUNFO0lBQ0Usb0JBQUE7QUFORjtBQVFBO0lBQ0Usb0JBQUE7QUFORjtBQUNGO0FBU0E7QUFDRTtJQUNFLHlCQUFBO0FBUEY7QUFVQTtJQUNFLHlCQUFBO0FBUkY7QUFXQTtJQUNFLHVCQUFBO0FBVEY7QUFDRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4ucHJvZ3Jlc3NfYmFyIHtcXG4gIEBhcHBseSBmaXhlZCAgbGVmdC0wIGZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy13aGl0ZTtcXG4gIHRvcDogMCAhaW1wb3J0YW50O1xcbiAgei1pbmRleDogOTk5OTk5O1xcbiAgaGVpZ2h0OiAxMDB2aDtcXG5cXG4gICZfX3dyYXBwZXIge1xcbiAgICBAYXBwbHkgdy1bMjUwcHhdIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLTJ4bDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2M0YzRjNDtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIH1cXG5cXG4gICZfX3ZpZXdlciB7XFxuICAgIEBhcHBseSBiZy1zcHJpbmctNTA7XFxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gICAgaGVpZ2h0OiA0cHg7XFxuICAgIHRyYW5zZm9ybTogc2NhbGVYKDApO1xcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7XFxuICB9XFxuXFxuICAmLmFuaW1hdGUtbG9hZGVyICZfX3ZpZXdlciB7XFxuICAgIGFuaW1hdGlvbjogRmlsbEFuaW1hdGlvbiA2cyBsaW5lYXIgZm9yd2FyZHM7XFxuICB9XFxuXFxuICAmLmFuaW1hdGUtbG9hZGVyICZfX3N0YXRlOjpiZWZvcmUge1xcbiAgICBjb250ZW50OiAnJztcXG4gICAgYW5pbWF0aW9uOiBUZXh0Q2hhbmdlIDZzIGxpbmVhciBmb3J3YXJkcztcXG4gIH1cXG5cXG4gICZfX2NvbnRlbnQge1xcbiAgICBAYXBwbHkgZmxleCBmbGV4LWNvbDtcXG4gIH1cXG5cXG4gICZfX3N0YXRlIHtcXG4gICAgQGFwcGx5IG10LTYgdGV4dC1jZW50ZXIgdGV4dC1zbSBmb250LWJvbGQgbGVhZGluZy1ub3JtYWwgdGV4dC1ibHVlLTUwO1xcbiAgfVxcbn1cXG5cXG5Aa2V5ZnJhbWVzIEZpbGxBbmltYXRpb24ge1xcbiAgMCUge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlWCgwKTtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKTtcXG4gIH1cXG59XFxuXFxuQGtleWZyYW1lcyBUZXh0Q2hhbmdlIHtcXG4gIDAlIHtcXG4gICAgY29udGVudDogYXR0cihkYXRhLXN0YXJ0KTtcXG4gIH1cXG5cXG4gIDk1JSB7XFxuICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1zdGFydCk7XFxuICB9XFxuXFxuICAxMDAlIHtcXG4gICAgY29udGVudDogYXR0cihkYXRhLWVuZCk7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi52YWxpZGF0aW9uW2RhdGEtdi0xZTM4ZDEwZV0ge1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC41cmVtO1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMC41cmVtO1xcbiAgYm9yZGVyLXdpZHRoOiAxcHg7XFxuICB0cmFuc2l0aW9uLXByb3BlcnR5OiBhbGw7XFxuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDUwMG1zO1xcbiAgYm94LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG59XFxuLnZhbGlkYXRpb25fX2Vycm9ySGVhZFtkYXRhLXYtMWUzOGQxMGVdIHtcXG4gIHdpZHRoOiAyMTJweDtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY3JpbXNvbi0yMCksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWNyaW1zb24tMTApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBib3gtc2hhZG93OiAwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xcbn1cXG4udmFsaWRhdGlvbl9fZXJyb3JzW2RhdGEtdi0xZTM4ZDEwZV0ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwcHg7XFxuICByaWdodDogMHB4O1xcbiAgei1pbmRleDogMTA7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgd2lkdGg6IDU5NXB4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXdoaXRlKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNjBweCk7XFxufVxcbi52YWxpZGF0aW9uX19oZWFkaW5nW2RhdGEtdi0xZTM4ZDEwZV0ge1xcbiAgcGFkZGluZy1sZWZ0OiAxcmVtO1xcbiAgcGFkZGluZy1yaWdodDogMXJlbTtcXG4gIHBhZGRpbmctdG9wOiAwLjc1cmVtO1xcbiAgcGFkZGluZy1ib3R0b206IDAuNzVyZW07XFxufVxcbi52YWxpZGF0aW9uX19lcnJvcnMtbGlzdFtkYXRhLXYtMWUzOGQxMGVdIHtcXG4gIGZsZXgtZ3JvdzogMTtcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxuICBwYWRkaW5nLWxlZnQ6IDFyZW07XFxuICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xcbiAgcGFkZGluZy10b3A6IDAuNzVyZW07XFxuICBwYWRkaW5nLWJvdHRvbTogMC43NXJlbTtcXG59XFxuLnZhbGlkYXRpb25fX3RvZ2dsZVtkYXRhLXYtMWUzOGQxMGVdIHtcXG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxcmVtO1xcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbC01MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4uYWN0aXZlW2RhdGEtdi0xZTM4ZDEwZV06OmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgaGVpZ2h0OiAycHg7XFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDZkYmU0O1xcbiAgd2lkdGg6IDEwMCU7XFxuICB0b3A6IGNhbGMoMTAwJSArIDNweCk7XFxuICBsZWZ0OiAwO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvU3RpY2t5RXJyb3JzLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtFQUFBLDhCQUFBO0VBQUEsaUNBQUE7RUFBQSxpQkFBQTtFQUFBLHdCQUFBO0VBQUEsd0RBQUE7RUFBQSwwQkFBQTtFQUNBLDJDQUFBO0FBREE7QUFJRTtFQUFBLFlBQUE7RUFBQSxzQkFBQTtFQUFBLCtEQUFBO0VBQUEsa0JBQUE7RUFBQSwrREFBQTtFQUNBLDJDQUFBO0FBREE7QUFLQTtFQUFBLGtCQUFBO0VBQUEsUUFBQTtFQUFBLFVBQUE7RUFBQSxXQUFBO0VBQUEsYUFBQTtFQUFBLFlBQUE7RUFBQSxzQkFBQTtFQUFBLGdCQUFBO0VBQUEsc0JBQUE7RUFBQSwwREFBQTtFQUFBLGtCQUFBO0VBQUEsMERBQUE7RUFDQSw4QkFBQTtBQURBO0FBS0E7RUFBQSxrQkFBQTtFQUFBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSx1QkFBQTtBQUFBO0FBSUE7RUFBQSxZQUFBO0VBQUEsZ0JBQUE7RUFBQSxrQkFBQTtFQUFBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSx1QkFBQTtBQUFBO0FBSUE7RUFBQSxrQkFBQTtFQUFBLGlCQUFBO0VBQUEseUJBQUE7RUFBQSxnQkFBQTtFQUFBLG9CQUFBO0VBQUEsd0RBQUE7QUFBQTtBQUlGO0VBQ0UsV0FBQTtFQUNBLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0EseUJBQUE7RUFDQSxXQUFBO0VBQ0EscUJBQUE7RUFDQSxPQUFBO0FBTEpcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLnZhbGlkYXRpb24ge1xcbiAgQGFwcGx5IHJvdW5kZWQtdGwtbGcgcm91bmRlZC1ibC1sZyBib3JkZXIgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwO1xcbiAgYm94LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG5cXG4gICZfX2Vycm9ySGVhZCB7XFxuICAgIEBhcHBseSB3LVsyMTJweF0gYm9yZGVyLWNyaW1zb24tMjAgYmctY3JpbXNvbi0xMDtcXG4gICAgYm94LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG4gIH1cXG5cXG4gICZfX2Vycm9ycyB7XFxuICAgIEBhcHBseSBhYnNvbHV0ZSB0b3AtMCByaWdodC0wIHotMTAgZmxleCB3LVs1OTVweF0gZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuIGJvcmRlci13aGl0ZSBiZy13aGl0ZTtcXG4gICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDYwcHgpO1xcbiAgfVxcblxcbiAgJl9faGVhZGluZyB7XFxuICAgIEBhcHBseSBweC00IHB5LTM7XFxuICB9XFxuXFxuICAmX19lcnJvcnMtbGlzdCB7XFxuICAgIEBhcHBseSBncm93IG92ZXJmbG93LXktYXV0byBweC00IHB5LTM7XFxuICB9XFxuXFxuICAmX190b2dnbGUge1xcbiAgICBAYXBwbHkgdGV4dC14cyB1cHBlcmNhc2UgbGVhZGluZy1ub3JtYWwgdGV4dC1ibHVlLTUwO1xcbiAgfVxcbn1cXG4uYWN0aXZlIHtcXG4gICY6OmFmdGVyIHtcXG4gICAgY29udGVudDogJyc7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgaGVpZ2h0OiAycHg7XFxuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzA2ZGJlNDtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIHRvcDogY2FsYygxMDAlICsgM3B4KTtcXG4gICAgbGVmdDogMDtcXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmVycm9yLWJvcmRlcltkYXRhLXYtNmYxN2VjNDVdOjphZnRlciB7XFxuICBjb250ZW50OiBcXFwiIFxcXCI7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDJweDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlMzRkNWI7XFxufVxcbi53YXJuaW5nLWJvcmRlcltkYXRhLXYtNmYxN2VjNDVdOjphZnRlciB7XFxuICBjb250ZW50OiBcXFwiIFxcXCI7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDJweDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmNGI3ODQ7XFxufVxcbi5lcnJvci1jb250YWluZXJbZGF0YS12LTZmMTdlYzQ1XSB7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuM3MgZWFzZS1vdXQ7XFxuICBoZWlnaHQ6IGF1dG87XFxufVxcbi5saXN0LWluZGV4W2RhdGEtdi02ZjE3ZWM0NV0ge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgcGFkZGluZy1sZWZ0OiAyNHB4O1xcbn1cXG4ubGlzdC1pbmRleFtkYXRhLXYtNmYxN2VjNDVdOmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCIgXFxcIjtcXG4gIHotaW5kZXg6IDEwO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgaGVpZ2h0OiA0cHg7XFxuICB3aWR0aDogNHB4O1xcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcXG4gIGxlZnQ6IDhweDtcXG4gIHRvcDogNTAlO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xcbiAgYmFja2dyb3VuZDogIzJhMmYzMDtcXG59XFxuLmNvbnRhaW5lcltkYXRhLXYtNmYxN2VjNDVdIHtcXG4gIGhlaWdodDogMHB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHBhZGRpbmctbGVmdDogMXJlbTtcXG4gIHBhZGRpbmctcmlnaHQ6IDFyZW07XFxuICB0cmFuc2l0aW9uLXByb3BlcnR5OiBhbGw7XFxuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDUwMG1zO1xcbn1cXG4uZXJyb3ItZWxlbWVudFtkYXRhLXYtNmYxN2VjNDVdOm5vdCg6bGFzdC1vZi10eXBlKSB7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Q1ZGNkZTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1VwbG9hZGVkRXJyb3JzLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtFQUNFLFlBQUE7RUFDQSxrQkFBQTtFQUNBLE9BQUE7RUFDQSxNQUFBO0VBQ0EsWUFBQTtFQUNBLFVBQUE7RUFDQSx5QkFBQTtBQURKO0FBS0U7RUFDRSxZQUFBO0VBQ0Esa0JBQUE7RUFDQSxPQUFBO0VBQ0EsTUFBQTtFQUNBLFlBQUE7RUFDQSxVQUFBO0VBQ0EseUJBQUE7QUFGSjtBQUtBO0VBQ0UsZ0JBQUE7RUFDQSxnQ0FBQTtFQUNBLFlBQUE7QUFGRjtBQUtBO0VBQ0Usa0JBQUE7RUFDQSxrQkFBQTtBQUZGO0FBSUU7RUFDRSxZQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLFVBQUE7RUFDQSxtQkFBQTtFQUNBLFNBQUE7RUFDQSxRQUFBO0VBQ0EsMkJBQUE7RUFDQSxtQkFBQTtBQUZKO0FBTUU7RUFBQSxXQUFBO0VBQUEsZ0JBQUE7RUFBQSxrQkFBQTtFQUFBLG1CQUFBO0VBQUEsd0JBQUE7RUFBQSx3REFBQTtFQUFBLDBCQUFBO0FBQUE7QUFFRjtFQUNFLGdDQUFBO0FBREZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLmVycm9yLWJvcmRlciB7XFxuICAmOjphZnRlciB7XFxuICAgIGNvbnRlbnQ6ICcgJztcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICBsZWZ0OiAwO1xcbiAgICB0b3A6IDA7XFxuICAgIGhlaWdodDogMTAwJTtcXG4gICAgd2lkdGg6IDJweDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2UzNGQ1YjtcXG4gIH1cXG59XFxuLndhcm5pbmctYm9yZGVyIHtcXG4gICY6OmFmdGVyIHtcXG4gICAgY29udGVudDogJyAnO1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGxlZnQ6IDA7XFxuICAgIHRvcDogMDtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICB3aWR0aDogMnB4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRiNzg0O1xcbiAgfVxcbn1cXG4uZXJyb3ItY29udGFpbmVyIHtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0cmFuc2l0aW9uOiBoZWlnaHQgMC4zcyBlYXNlLW91dDtcXG4gIGhlaWdodDogYXV0bztcXG59XFxuXFxuLmxpc3QtaW5kZXgge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgcGFkZGluZy1sZWZ0OiAyNHB4O1xcblxcbiAgJjphZnRlciB7XFxuICAgIGNvbnRlbnQ6ICcgJztcXG4gICAgei1pbmRleDogMTA7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgaGVpZ2h0OiA0cHg7XFxuICAgIHdpZHRoOiA0cHg7XFxuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XFxuICAgIGxlZnQ6IDhweDtcXG4gICAgdG9wOiA1MCU7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcXG4gICAgYmFja2dyb3VuZDogIzJhMmYzMDtcXG4gIH1cXG59XFxuLmNvbnRhaW5lciB7XFxuICBAYXBwbHkgaC0wIG92ZXJmbG93LWhpZGRlbiBweC00IHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMDtcXG59XFxuLmVycm9yLWVsZW1lbnQ6bm90KDpsYXN0LW9mLXR5cGUpIHtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZDVkY2RlO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIucGFnZS1oZWlnaHQge1xcbiAgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIDYwcHgpO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5SW5kZXgudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNBO0VBQ0UsOEJBQUE7QUFBRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4ucGFnZS1oZWlnaHQge1xcbiAgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIDYwcHgpO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuZm9ybS1ncm91cFtkYXRhLXYtYzdjYTI4YjhdIHtcXG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcXG4gIGJvcmRlci13aWR0aDogMXB4O1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1uLTIwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG4gIHBhZGRpbmc6IDEuMjVyZW07XFxufVxcbi5mb3JtLWdyb3VwW2RhdGEtdi1jN2NhMjhiOF06bGFzdC1jaGlsZCB7XFxuICBtYXJnaW4tYm90dG9tOiAwO1xcbn1cXG4uZm9ybS1ncm91cCAuZm9ybV9fY29udGVudFtkYXRhLXYtYzdjYTI4YjhdIHtcXG4gIG1hcmdpbi10b3A6IDA7XFxuICBnYXA6IDI1cHg7XFxufVxcbi5mb3JtLWdyb3VwIC5mb3JtX19jb250ZW50IC5sYWJlbC1maWVsZFtkYXRhLXYtYzdjYTI4YjhdIHtcXG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbn1cXG4uZm9ybS1ncm91cC10aXRsZS1jb250YWluZXJbZGF0YS12LWM3Y2EyOGI4XSB7XFxuICBtYXJnaW4tYm90dG9tOiAwLjM3NXJlbTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxufVxcbi5mb3JtLWdyb3VwLXRpdGxlLWNvbnRhaW5lcltkYXRhLXYtYzdjYTI4YjhdID4gOm5vdChbaGlkZGVuXSkgfiA6bm90KFtoaWRkZW5dKSB7XFxuICAtLXR3LXNwYWNlLXgtcmV2ZXJzZTogMDtcXG4gIG1hcmdpbi1yaWdodDogY2FsYygwLjI1cmVtICogdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSk7XFxuICBtYXJnaW4tbGVmdDogY2FsYygwLjI1cmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSkpO1xcbn1cXG4uZm9ybS1ncm91cC10aXRsZVtkYXRhLXYtYzdjYTI4YjhdIHtcXG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxcmVtO1xcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQ3JlYXRlTW9kYWwudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0VBQUEscUJBQUE7RUFBQSxpQkFBQTtFQUFBLHNCQUFBO0VBQUEseURBQUE7RUFBQSxnQkFBQTtBQUFBO0FBRUE7RUFDRSxnQkFBQTtBQUFKO0FBR0U7RUFDRSxhQUFBO0VBQ0EsU0FBQTtBQURKO0FBSU07RUFBQSxxQkFBQTtFQUFBLGFBQUE7RUFBQSxtQkFBQTtFQUFBLDhCQUFBO0FBQUE7QUFLSjtFQUFBLHVCQUFBO0VBQUEsYUFBQTtBQUFBO0FBQUE7RUFBQSx1QkFBQTtFQUFBLHVEQUFBO0VBQUEsZ0VBQUE7QUFBQTtBQUdBO0VBQUEsa0JBQUE7RUFBQSxpQkFBQTtFQUFBLGdCQUFBO0VBQUEsb0JBQUE7RUFBQSxxREFBQTtBQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5mb3JtLWdyb3VwIHtcXG4gIEBhcHBseSByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItbi0yMCBwLTU7XFxuXFxuICAmOmxhc3QtY2hpbGQge1xcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xcbiAgfVxcblxcbiAgLmZvcm1fX2NvbnRlbnQge1xcbiAgICBtYXJnaW4tdG9wOiAwO1xcbiAgICBnYXA6IDI1cHg7XFxuXFxuICAgIC5sYWJlbC1maWVsZCB7XFxuICAgICAgQGFwcGx5IG1iLTIgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuO1xcbiAgICB9XFxuICB9XFxufVxcbi5mb3JtLWdyb3VwLXRpdGxlLWNvbnRhaW5lciB7XFxuICBAYXBwbHkgbWItMS41IGZsZXggc3BhY2UteC0xO1xcbn1cXG4uZm9ybS1ncm91cC10aXRsZSB7XFxuICBAYXBwbHkgdGV4dC14cyBmb250LWJvbGQgdGV4dC1ibHVlY29yYWw7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5hY2NvcmRpb24tY29udGVudFtkYXRhLXYtMDYzY2JkODZdIHtcXG4gIGhlaWdodDogMHB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IGFsbDtcXG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNTAwbXM7XFxufVxcbi5hY2NvcmRpb24tY29udGVudCBkaXZbZGF0YS12LTA2M2NiZDg2XSB7XFxuICBtYXJnaW4tdG9wOiAxcmVtO1xcbiAgYm9yZGVyLXRvcC13aWR0aDogMXB4O1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1uLTIwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG4gIHBhZGRpbmctdG9wOiAwLjc1cmVtO1xcbiAgcGFkZGluZy1ib3R0b206IDAuNzVyZW07XFxufVxcbi5hY3Rpdml0eS10aXRsZVtkYXRhLXYtMDYzY2JkODZdIHtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL0Vycm9ySXRlbS52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxXQUFBO0VBQUEsZ0JBQUE7RUFBQSx3QkFBQTtFQUFBLHdEQUFBO0VBQUEsMEJBQUE7QUFBQTtBQUVFO0VBQUEsZ0JBQUE7RUFBQSxxQkFBQTtFQUFBLHNCQUFBO0VBQUEseURBQUE7RUFBQSxvQkFBQTtFQUFBLHVCQUFBO0FBQUE7QUFJSjtFQUNFLG1CQUFBO0VBQ0EsZ0JBQUE7RUFDQSx1QkFBQTtBQUFGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5hY2NvcmRpb24tY29udGVudCB7XFxuICBAYXBwbHkgaC0wIG92ZXJmbG93LWhpZGRlbiB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDA7XFxuICBkaXYge1xcbiAgICBAYXBwbHkgbXQtNCBib3JkZXItdCBib3JkZXItbi0yMCBweS0zO1xcbiAgfVxcbn1cXG5cXG4uYWN0aXZpdHktdGl0bGUge1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmFjdGl2aXRpZXMge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbn1cXG4uYWN0aXZpdGllcyAuZWxlbWVudHMge1xcbiAgYm9yZGVyLXJhZGl1czogMHB4IDhweCA4cHggMHB4O1xcbiAgd2lkdGg6IDEyNXB4O1xcbiAgbWluLWhlaWdodDogMTc0cHg7XFxufVxcbi5hY3Rpdml0aWVzIC5lbGVtZW50c19fcGFuZWwge1xcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xcbiAgcGFkZGluZzogMXJlbTtcXG4gIC0tdHctc2hhZG93OiAwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xcbiAgLS10dy1zaGFkb3ctY29sb3JlZDogMHB4IDRweCA0MHB4IHZhcigtLXR3LXNoYWRvdy1jb2xvcik7XFxuICBib3gtc2hhZG93OiB2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3csIDAgMCAjMDAwMCksIHZhcigtLXR3LXJpbmctc2hhZG93LCAwIDAgIzAwMDApLCB2YXIoLS10dy1zaGFkb3cpO1xcbn1cXG4uYWN0aXZpdGllcyAuZWxlbWVudHNfX3BhbmVsIC5wYW5lbF9faW5wdXQ6Zm9jdXMsIFxcbi5hY3Rpdml0aWVzIC5lbGVtZW50c19fcGFuZWwgLnBhbmVsX19zZWFyY2g6Zm9jdXMge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTQwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbi5hY3Rpdml0aWVzIC5ob3Zlcl9fdGV4dCB7XFxuICBtYXJnaW4tbGVmdDogMC4yNXJlbTtcXG59XFxuLmFjdGl2aXRpZXMgLmJ1dHRvbl9fZHJvcGRvd24ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcmlnaHQ6IDBweDtcXG4gIHRvcDogMTAwJTtcXG4gIHotaW5kZXg6IDEwO1xcbiAgdGV4dC1hbGlnbjogbGVmdDtcXG4gIC0tdHctc2hhZG93OiAwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xcbiAgLS10dy1zaGFkb3ctY29sb3JlZDogMHB4IDRweCA0MHB4IHZhcigtLXR3LXNoYWRvdy1jb2xvcik7XFxuICBib3gtc2hhZG93OiB2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3csIDAgMCAjMDAwMCksIHZhcigtLXR3LXJpbmctc2hhZG93LCAwIDAgIzAwMDApLCB2YXIoLS10dy1zaGFkb3cpO1xcbiAgbWluLXdpZHRoOiAxNTBweDtcXG59XFxuLmFjdGl2aXRpZXMgLmJ1dHRvbl9fZHJvcGRvd24gbGkge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIHBhZGRpbmctdG9wOiAwLjM3NXJlbTtcXG4gIHBhZGRpbmctYm90dG9tOiAwLjM3NXJlbTtcXG4gIHBhZGRpbmctbGVmdDogMC44NzVyZW07XFxuICBwYWRkaW5nLXJpZ2h0OiAwLjg3NXJlbTtcXG59XFxuLmFjdGl2aXRpZXMgLmJ1dHRvbl9fZHJvcGRvd24gbGk6aG92ZXIge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS13aGl0ZSksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG59XFxuLmFjdGl2aXRpZXMgLmJ1dHRvbl9fZHJvcGRvd24gbGkgc3ZnIHtcXG4gIG1hcmdpbi1yaWdodDogMC4yNXJlbTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0aWVzRWxlbWVudHMudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNBO0VBQ0Usa0JBQUE7QUFBRjtBQUNFO0VBQ0UsOEJBQUE7RUFDQSxZQUFBO0VBQ0EsaUJBQUE7QUFDSjtBQUdJO0VBQUEscUJBQUE7RUFBQSxhQUFBO0VBQUEsNENBQUE7RUFBQSx3REFBQTtFQUFBLHVHQUFBO0FBQUE7QUFJRTs7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0FBQUE7QUFLRjtFQUFBLG9CQUFBO0FBQUE7QUFHQTtFQUFBLGtCQUFBO0VBQUEsVUFBQTtFQUFBLFNBQUE7RUFBQSxXQUFBO0VBQUEsZ0JBQUE7RUFBQSw0Q0FBQTtFQUFBLHdEQUFBO0VBQUEsdUdBQUE7RUFDQSxnQkFBQTtBQURBO0FBSUU7RUFBQSxhQUFBO0VBQUEscUJBQUE7RUFBQSx3QkFBQTtFQUFBLHNCQUFBO0VBQUEsdUJBQUE7QUFBQTtBQUFBO0VBQUEsa0JBQUE7RUFBQSwwREFBQTtBQUFBO0FBR0U7RUFBQSxxQkFBQTtBQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5hY3Rpdml0aWVzIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIC5lbGVtZW50cyB7XFxuICAgIGJvcmRlci1yYWRpdXM6IDBweCA4cHggOHB4IDBweDtcXG4gICAgd2lkdGg6IDEyNXB4O1xcbiAgICBtaW4taGVpZ2h0OiAxNzRweDtcXG4gIH1cXG5cXG4gIC5lbGVtZW50c19fcGFuZWwge1xcbiAgICBAYXBwbHkgcm91bmRlZC1sZyBwLTQgc2hhZG93LWRyb3Bkb3duO1xcblxcbiAgICAucGFuZWxfX2lucHV0OmZvY3VzLFxcbiAgICAucGFuZWxfX3NlYXJjaDpmb2N1cyB7XFxuICAgICAgQGFwcGx5IHRleHQtbi00MDtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmhvdmVyX190ZXh0IHtcXG4gICAgQGFwcGx5IG1sLTE7XFxuICB9XFxuICAuYnV0dG9uX19kcm9wZG93biB7XFxuICAgIEBhcHBseSBhYnNvbHV0ZSByaWdodC0wIHRvcC1mdWxsIHotMTAgdGV4dC1sZWZ0IHNoYWRvdy1kcm9wZG93bjtcXG4gICAgbWluLXdpZHRoOiAxNTBweDtcXG5cXG4gICAgbGkge1xcbiAgICAgIEBhcHBseSBmbGV4IHB5LTEuNSBweC0zLjUgaG92ZXI6Ymctd2hpdGU7XFxuXFxuICAgICAgc3ZnIHtcXG4gICAgICAgIEBhcHBseSBtci0xO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuc3Bpbm5lcltkYXRhLXYtNjYxZTZmOGVdIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9ja1xcbn1cXG5Aa2V5ZnJhbWVzIHNwaW4tNjYxZTZmOGUge1xcbnRvIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKVxcbn1cXG59XFxuLnNwaW5uZXJbZGF0YS12LTY2MWU2ZjhlXSB7XFxuICBhbmltYXRpb246IHNwaW4tNjYxZTZmOGUgMXMgbGluZWFyIGluZmluaXRlO1xcbiAgYm9yZGVyLXJhZGl1czogOTk5OXB4O1xcbiAgYm9yZGVyLXdpZHRoOiAycHg7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tbi0xMCksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAwLjA1O1xcbiAgd2lkdGg6IDc1cHg7XFxuICBoZWlnaHQ6IDc1cHg7XFxuICBib3JkZXItdG9wLWNvbG9yOiB3aGl0ZVxcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0VBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQTtBQUFBO0FBQUE7QUFBQTtFQUFBLDJDQUFBO0VBQUEscUJBQUE7RUFBQSxpQkFBQTtFQUFBLHlEQUFBO0VBQUEseUJBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBO0FBSEFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLnNwaW5uZXIge1xcbiAgQGFwcGx5IGlubGluZS1ibG9jayAgYW5pbWF0ZS1zcGluIHJvdW5kZWQtZnVsbCBib3JkZXItMiBib3JkZXItbi0xMCBib3JkZXItb3BhY2l0eS01O1xcbiAgd2lkdGg6IDc1cHg7XFxuICBoZWlnaHQ6IDc1cHg7XFxuICBib3JkZXItdG9wLWNvbG9yOiB3aGl0ZTtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmFjdGl2ZU5hdiB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLXdoaXRlKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbi5uYXZsaXN0LXdpZHRoIHtcXG4gIHdpZHRoOiAxMDBweDtcXG59XFxuLnRleHQtc2VtaS1kYXJrIHtcXG4gIGNvbG9yOiAjMmEyZjMwICFpbXBvcnRhbnQ7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtFQUFBLGtCQUFBO0VBQUEsc0JBQUE7RUFBQSxrQkFBQTtFQUFBLDhEQUFBO0VBQUEsb0JBQUE7RUFBQSxpREFBQTtBQUFBO0FBR0Y7RUFDRSxZQUFBO0FBQUY7QUFHQTtFQUNFLHlCQUFBO0FBQUZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLmFjdGl2ZU5hdiB7XFxuICBAYXBwbHkgcmVsYXRpdmUgIHJvdW5kZWQgYmctYmx1ZWNvcmFsIHRleHQtd2hpdGU7XFxufVxcblxcbi5uYXZsaXN0LXdpZHRoIHtcXG4gIHdpZHRoOiAxMDBweDtcXG59XFxuXFxuLnRleHQtc2VtaS1kYXJrIHtcXG4gIGNvbG9yOiAjMmEyZjMwICFpbXBvcnRhbnQ7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi51cGxvYWQtZXJyb3JbZGF0YS12LTQwZDc4NzBhXSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcXG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMCkgIWltcG9ydGFudDtcXG4gIHotaW5kZXg6IDE7XFxufVxcbi51cGxvYWQtZXJyb3JbZGF0YS12LTQwZDc4NzBhXTo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBoZWlnaHQ6IDY4cHg7XFxuICB3aWR0aDogMTAwJTtcXG4gIGJvcmRlci1sZWZ0OiAycHggc29saWQgI2QxMDAxZTtcXG4gIGxlZnQ6IDA7XFxuICB0b3A6IDA7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmMWYwO1xcbiAgei1pbmRleDogLTE7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydExpc3QudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNBO0VBQ0UsNkJBQUE7RUFDQSx1Q0FBQTtFQUNBLFVBQUE7QUFBRjtBQUVFO0VBQ0Usa0JBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLFdBQUE7RUFDQSw4QkFBQTtFQUNBLE9BQUE7RUFDQSxNQUFBO0VBQ0EseUJBQUE7RUFDQSxXQUFBO0FBQUpcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLnVwbG9hZC1lcnJvciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcXG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMCkgIWltcG9ydGFudDtcXG4gIHotaW5kZXg6IDE7XFxuXFxuICAmOjphZnRlciB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgY29udGVudDogJyc7XFxuICAgIGhlaWdodDogNjhweDtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgI2QxMDAxZTtcXG4gICAgbGVmdDogMDtcXG4gICAgdG9wOiAwO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmMWYwO1xcbiAgICB6LWluZGV4OiAtMTtcXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLm1hbmRhdG9yeTo6YWZ0ZXIge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICB3aWR0aDogMC41cHg7XFxuICBoZWlnaHQ6IDE0MHB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwLjI1cmVtO1xcbiAgcmlnaHQ6IC0xLjVyZW07XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLW4tMjApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxufVxcbi5lbGVtZW50IHtcXG4gIG1hcmdpbi1ib3R0b206IDAuNzVyZW07XFxuICBtYXJnaW4tbGVmdDogMC41cmVtO1xcbn1cXG4uZWxlbWVudF9faW5uZXIge1xcbiAgZGlzcGxheTogZmxleDtcXG59XFxuLmVsZW1lbnRfX2lubmVyID4gOm5vdChbaGlkZGVuXSkgfiA6bm90KFtoaWRkZW5dKSB7XFxuICAtLXR3LXNwYWNlLXgtcmV2ZXJzZTogMDtcXG4gIG1hcmdpbi1yaWdodDogY2FsYygwLjYyNXJlbSAqIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpO1xcbiAgbWFyZ2luLWxlZnQ6IGNhbGMoMC42MjVyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSk7XFxufVxcbi5lbGVtZW50X19ub3RlcyB7XFxuICBoZWlnaHQ6IDFyZW07XFxuICB3aWR0aDogMnJlbTtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMTI1cmVtO1xcbiAgYm9yZGVyLXdpZHRoOiAxcHg7XFxufVxcbi5lbGVtZW50X19zZWFyY2gge1xcbiAgbWFyZ2luLXRvcDogMXJlbTtcXG4gIG1hcmdpbi1ib3R0b206IDFyZW07XFxuICBoZWlnaHQ6IDIuNXJlbTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcXG4gIGJvcmRlci13aWR0aDogMXB4O1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1uLTMwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBwYWRkaW5nLXRvcDogMC43NXJlbTtcXG4gIHBhZGRpbmctYm90dG9tOiAwLjc1cmVtO1xcbiAgcGFkZGluZy1yaWdodDogMC43NXJlbTtcXG4gIHBhZGRpbmctbGVmdDogMi41cmVtO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTQwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxuICBvdXRsaW5lOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICBvdXRsaW5lLW9mZnNldDogMnB4O1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMzAwbXM7XFxufVxcbi5lbGVtZW50X19zZWFyY2g6Oi1tb3otcGxhY2Vob2xkZXIge1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTMwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAzMDBtcztcXG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xcbn1cXG4uZWxlbWVudF9fc2VhcmNoOjpwbGFjZWhvbGRlciB7XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tMzApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDMwMG1zO1xcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XFxufVxcbi5lbGVtZW50X19zZWFyY2g6Zm9jdXM6Oi1tb3otcGxhY2Vob2xkZXIge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTQwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbi5lbGVtZW50X19zZWFyY2g6Zm9jdXM6OnBsYWNlaG9sZGVyIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi00MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4udGFiX19saW5rcyB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcXG4gIHBhZGRpbmctcmlnaHQ6IDAuNXJlbTtcXG4gIHBhZGRpbmctYm90dG9tOiAxLjVyZW07XFxufVxcbi50YWJfX2xpbmtzOjphZnRlciB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGJvdHRvbTogMHB4O1xcbiAgbGVmdDogMHB4O1xcbiAgaGVpZ2h0OiAwLjI1cmVtO1xcbiAgd2lkdGg6IDEwMCU7XFxuICAtLXR3LXNjYWxlLXg6IDA7XFxuICAtLXR3LXNjYWxlLXk6IDA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksIHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXdYKHZhcigtLXR3LXNrZXcteCkpIHNrZXdZKHZhcigtLXR3LXNrZXcteSkpIHNjYWxlWCh2YXIoLS10dy1zY2FsZS14KSkgc2NhbGVZKHZhcigtLXR3LXNjYWxlLXkpKTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMzAwbXM7XFxufVxcbi50YWJfX2xpbmtzOmhvdmVyOjphZnRlciB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICAtLXR3LXNjYWxlLXg6IDE7XFxuICAtLXR3LXNjYWxlLXk6IDE7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksIHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXdYKHZhcigtLXR3LXNrZXcteCkpIHNrZXdZKHZhcigtLXR3LXNrZXcteSkpIHNjYWxlWCh2YXIoLS10dy1zY2FsZS14KSkgc2NhbGVZKHZhcigtLXR3LXNjYWxlLXkpKTtcXG59XFxuLnRhYl9fbGlua3MtLWFjdGl2ZSB7XFxuICBmb250LXdlaWdodDogNzAwO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuLnRhYl9fbGlua3MtLWFjdGl2ZTo6YWZ0ZXIge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBib3R0b206IDBweDtcXG4gIGxlZnQ6IDBweDtcXG4gIGhlaWdodDogMC4yNXJlbTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAzMDBtcztcXG59XFxuLnNlcGFyYXRvciB7XFxuICBtYXJnaW4tbGVmdDogMXJlbTtcXG4gIG1hcmdpbi1yaWdodDogMXJlbTtcXG59XFxuLmxhc3Qge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTMwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkRhdGEudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNBO0VBQ0UsV0FBQTtFQUNBLFlBQUE7RUFDQSxhQUFBO0VBQ0Esa0JBQUE7RUFBQSxZQUFBO0VBQUEsY0FBQTtFQUFBLGtCQUFBO0VBQUEseURBQUE7QUFBRjtBQUlFO0VBQUEsc0JBQUE7RUFBQSxtQkFBQTtBQUFBO0FBR0U7RUFBQSxhQUFBO0FBQUE7QUFBQTtFQUFBLHVCQUFBO0VBQUEsd0RBQUE7RUFBQSxpRUFBQTtBQUFBO0FBSUE7RUFBQSxZQUFBO0VBQUEsV0FBQTtFQUFBLHVCQUFBO0VBQUEsaUJBQUE7QUFBQTtBQUtGO0VBQUEsZ0JBQUE7RUFBQSxtQkFBQTtFQUFBLGNBQUE7RUFBQSxXQUFBO0VBQUEsc0JBQUE7RUFBQSxpQkFBQTtFQUFBLHNCQUFBO0VBQUEseURBQUE7RUFBQSxrQkFBQTtFQUFBLDBEQUFBO0VBQUEsb0JBQUE7RUFBQSx1QkFBQTtFQUFBLHNCQUFBO0VBQUEsb0JBQUE7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0VBQUEsOEJBQUE7RUFBQSxtQkFBQTtFQUFBLDBCQUFBO0FBQUE7QUFHRTtFQUFBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0VBQUEsMEJBQUE7RUFDQSx1QkFBQTtBQURBO0FBQUE7RUFBQSxtQkFBQTtFQUFBLG9CQUFBO0VBQUEsb0JBQUE7RUFBQSxnREFBQTtFQUFBLDBCQUFBO0VBQ0EsdUJBQUE7QUFEQTtBQUtBO0VBQUEsb0JBQUE7RUFBQSxnREFBQTtBQUFBO0FBQUE7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0FBQUE7QUFLRjtFQUFBLGtCQUFBO0VBQUEsZUFBQTtFQUFBLG9CQUFBO0VBQUEscUJBQUE7RUFBQSxzQkFBQTtBQUFBO0FBRUE7RUFDRSxXQUFBO0VBQ0Esa0JBQUE7RUFBQSxXQUFBO0VBQUEsU0FBQTtFQUFBLGVBQUE7RUFBQSxXQUFBO0VBQUEsZUFBQTtFQUFBLGVBQUE7RUFBQSwrTEFBQTtFQUFBLGtCQUFBO0VBQUEsOERBQUE7RUFBQSwwQkFBQTtBQUpKO0FBT0U7RUFDRSxXQUFBO0VBQ0EsbUJBQUE7RUFBQSxlQUFBO0VBQUEsZUFBQTtFQUFBLCtMQUFBO0FBTEo7QUFTSTtFQUFBLGdCQUFBO0VBQUEsb0JBQUE7RUFBQSxxREFBQTtBQUFBO0FBSUo7RUFDRSxXQUFBO0VBQ0Esa0JBQUE7RUFBQSxXQUFBO0VBQUEsU0FBQTtFQUFBLGVBQUE7RUFBQSxXQUFBO0VBQUEsa0JBQUE7RUFBQSw4REFBQTtFQUFBLDBCQUFBO0FBUEY7QUFXRTtFQUFBLGlCQUFBO0VBQUEsa0JBQUE7QUFBQTtBQUlBO0VBQUEsb0JBQUE7RUFBQSxnREFBQTtBQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5tYW5kYXRvcnk6OmFmdGVyIHtcXG4gIGNvbnRlbnQ6ICcnO1xcbiAgd2lkdGg6IDAuNXB4O1xcbiAgaGVpZ2h0OiAxNDBweDtcXG4gIEBhcHBseSBhYnNvbHV0ZSB0b3AtMSAtcmlnaHQtNiBiZy1uLTIwO1xcbn1cXG5cXG4uZWxlbWVudCB7XFxuICBAYXBwbHkgbWItMyBtbC0yO1xcblxcbiAgJl9faW5uZXIge1xcbiAgICBAYXBwbHkgZmxleCBzcGFjZS14LTIuNTtcXG4gIH1cXG5cXG4gICZfX25vdGVzIHtcXG4gICAgQGFwcGx5IGgtNCB3LTggcm91bmRlZC1zbSBib3JkZXI7XFxuICB9XFxufVxcblxcbi5lbGVtZW50X19zZWFyY2gge1xcbiAgQGFwcGx5IG15LTQgaC0xMCB3LWZ1bGwgcm91bmRlZCBib3JkZXIgYm9yZGVyLW4tMzAgYmctd2hpdGUgcHktMyBwci0zIHBsLTEwIHRleHQtbi00MCBvdXRsaW5lLW5vbmUgZHVyYXRpb24tMzAwO1xcblxcbiAgJjo6cGxhY2Vob2xkZXIge1xcbiAgICBAYXBwbHkgdGV4dC1zbSB0ZXh0LW4tMzAgZHVyYXRpb24tMzAwO1xcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcXG4gIH1cXG5cXG4gICY6Zm9jdXM6OnBsYWNlaG9sZGVyIHtcXG4gICAgQGFwcGx5IHRleHQtbi00MDtcXG4gIH1cXG59XFxuXFxuLnRhYl9fbGlua3Mge1xcbiAgQGFwcGx5IHJlbGF0aXZlIGN1cnNvci1wb2ludGVyIHB4LTIgcGItNjtcXG5cXG4gICY6OmFmdGVyIHtcXG4gICAgY29udGVudDogJyc7XFxuICAgIEBhcHBseSBhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTAgaC0xIHctZnVsbCBzY2FsZS0wIGJnLWJsdWVjb3JhbCBkdXJhdGlvbi0zMDA7XFxuICB9XFxuXFxuICAmOmhvdmVyOjphZnRlciB7XFxuICAgIGNvbnRlbnQ6ICcnO1xcbiAgICBAYXBwbHkgdmlzaWJsZSBzY2FsZS0xMDA7XFxuICB9XFxuXFxuICAmLS1hY3RpdmUge1xcbiAgICBAYXBwbHkgZm9udC1ib2xkIHRleHQtYmx1ZWNvcmFsO1xcbiAgfVxcbn1cXG5cXG4udGFiX19saW5rcy0tYWN0aXZlOjphZnRlciB7XFxuICBjb250ZW50OiAnJztcXG4gIEBhcHBseSBhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTAgaC0xIHctZnVsbCBiZy1ibHVlY29yYWwgZHVyYXRpb24tMzAwO1xcbn1cXG5cXG4uc2VwYXJhdG9yIHtcXG4gIEBhcHBseSBteC00O1xcbn1cXG5cXG4ubGFzdCB7XFxuICBAYXBwbHkgdGV4dC1uLTMwO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIucmVzZXQge1xcbiAgYm94LXNoYWRvdzogMHB4IDIwcHggNDBweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XFxuICBtYXJnaW4tbGVmdDogMC43NXJlbTtcXG4gIG1hcmdpbi1yaWdodDogMC43NXJlbTtcXG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBwYWRkaW5nOiAxLjI1cmVtO1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0NDBweCkge1xcbi5yZXNldCB7XFxuICAgIHBhZGRpbmc6IDIuNXJlbTtcXG59XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuLnJlc2V0IHtcXG4gICAgd2lkdGg6IDU4M3B4O1xcbiAgICBtYXJnaW46IGF1dG87XFxuICAgIHBhZGRpbmc6IDZyZW07XFxufVxcbn1cXG4ucmVzZXRfX2NvbnRlbnQge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxufVxcbi5yZXNldF9fY29udGVudCAuaW5wdXQge1xcbiAgbWFyZ2luLXRvcDogMC41cmVtO1xcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xcbiAgcGFkZGluZy10b3A6IDEuMjVyZW07XFxuICBwYWRkaW5nLWJvdHRvbTogMS4yNXJlbTtcXG59XFxuLnJlc2V0X19jb250ZW50IC5sb2NrLWljb24ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMS41cmVtO1xcbiAgZm9udC1zaXplOiAxLjEyNXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjc1cmVtO1xcbiAgdG9wOiA0N3B4O1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbi5yZXNldF9fY29udGVudCAubG9jay1pY29uIHtcXG4gICAgdG9wOiA1MHB4O1xcbiAgICBmb250LXNpemU6IDIwcHg7XFxufVxcbn1cXG4ucmVzZXRfX2NvbnRlbnQgLm1haWwtaWNvbiB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAxLjVyZW07XFxuICB0b3A6IDQ3cHg7XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuLnJlc2V0X19jb250ZW50IC5tYWlsLWljb24ge1xcbiAgICB0b3A6IDUxcHg7XFxufVxcbn1cXG4ucmVzZXQgaDIge1xcbiAgZm9udC1zaXplOiAyNHB4O1xcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi01MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucmVzZXQgaDIge1xcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XFxufVxcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbi5yZXNldCBoMiB7XFxuICAgIGZvbnQtc2l6ZTogNDBweDtcXG4gICAgbGluZS1oZWlnaHQ6IDYwcHg7XFxufVxcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0NDBweCkge1xcbi5yZXNldCBoMiB7XFxuICAgIGZvbnQtc2l6ZTogMzJweDtcXG4gICAgbGluZS1oZWlnaHQ6IDUwcHg7XFxufVxcbn1cXG4ucmVzZXQgcCB7XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNDApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuLnJlc2V0IHAge1xcbiAgICBmb250LXNpemU6IDFyZW07XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjVyZW07XFxufVxcbn1cXG4ucmVzZXQgLnJlc2V0LWJ0biB7XFxuICBtYXJnaW4tdG9wOiAwLjc1cmVtO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBmb250LXNpemU6IDAuNzVyZW07XFxuICBsaW5lLWhlaWdodDogMXJlbTtcXG4gIHBhZGRpbmc6IDE0cHg7XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuLnJlc2V0IC5yZXNldC1idG4ge1xcbiAgICBwYWRkaW5nOiAxOHB4IDk0cHg7XFxuICAgIGZvbnQtc2l6ZTogMTRweDtcXG59XFxufVxcbi5yZXNldCAudmVyaWZpY2F0aW9uIHtcXG4gIGZvbnQtc2l6ZTogMTUwcHg7XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuLnJlc2V0IC52ZXJpZmljYXRpb24ge1xcbiAgICBmb250LXNpemU6IDE5MHB4O1xcbn1cXG59XFxuLnJlc2V0X19wYXNzd29yZCB7XFxuICBoZWlnaHQ6IDYxMHB4O1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Jlc2V0UGFnZS52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQ0E7RUFXRSxrREFBQTtFQUNBLG9CQUFBO0VBQUEscUJBQUE7RUFBQSxxQkFBQTtFQUFBLGtCQUFBO0VBQUEsMERBQUE7RUFBQSxnQkFBQTtBQVZGO0FBREU7QUFDRTtJQUFBLGVBQUE7QUFBQTtBQUtKO0FBRkU7QUFMRjtJQU1JLFlBQUE7SUFDQSxZQUFBO0lBRUEsYUFBQTtBQUlGO0FBQ0Y7QUFDSTtFQUFBLGtCQUFBO0VBQUEsYUFBQTtFQUFBLHNCQUFBO0FBQUE7QUFHRTtFQUFBLGtCQUFBO0VBQUEscUJBQUE7RUFBQSxvQkFBQTtFQUFBLHVCQUFBO0FBQUE7QUFJQTtFQUFBLGtCQUFBO0VBQUEsWUFBQTtFQUFBLG1CQUFBO0VBQUEsb0JBQUE7RUFDQSxTQUFBO0FBREE7QUFHQTtBQUpGO0lBS0ksU0FBQTtJQUNBLGVBQUE7QUFFTjtBQUNGO0FBRU07RUFBQSxrQkFBQTtFQUFBLFlBQUE7RUFDQSxTQUFBO0FBREE7QUFHQTtBQUpGO0lBS0ksU0FBQTtBQUVOO0FBQ0Y7QUFXSTtFQUFBLGVBQUE7RUFBQSxnQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQSxxQkFBQTtBQUFBO0FBQUE7QUFUQTtBQUNFO0lBQUEsZUFBQTtJQUNBLGlCQUFBO0FBREE7QUFNTjtBQUZJO0FBQ0U7SUFBQSxlQUFBO0lBQ0EsaUJBQUE7QUFEQTtBQU9OO0FBREk7RUFBQSxtQkFBQTtFQUFBLG9CQUFBO0VBQUEsb0JBQUE7RUFBQSxnREFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLGVBQUE7SUFBQSxtQkFBQTtBQUFBO0FBQUE7QUFHQTtFQUFBLG1CQUFBO0VBQUEsV0FBQTtFQUFBLGtCQUFBO0VBQUEsaUJBQUE7RUFDQSxhQUFBO0FBREE7QUFHQTtBQUpGO0lBS0ksa0JBQUE7SUFDQSxlQUFBO0FBS0o7QUFDRjtBQUhFO0VBQ0UsZ0JBQUE7QUFLSjtBQUhJO0FBSEY7SUFJSSxnQkFBQTtBQU1KO0FBQ0Y7QUFIQTtFQUNFLGFBQUE7QUFNRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4ucmVzZXQge1xcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDQwcHgpIHtcXG4gICAgQGFwcGx5IHAtMTA7XFxuICB9XFxuXFxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbiAgICB3aWR0aDogNTgzcHg7XFxuICAgIG1hcmdpbjogYXV0bztcXG5cXG4gICAgQGFwcGx5IHAtMjQ7XFxuICB9XFxuICBib3gtc2hhZG93OiAwcHggMjBweCA0MHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcXG4gIEBhcHBseSBteC0zIHJvdW5kZWQtbGcgYmctd2hpdGUgcC01O1xcblxcbiAgJl9fY29udGVudCB7XFxuICAgIEBhcHBseSByZWxhdGl2ZSBmbGV4IGZsZXgtY29sO1xcblxcbiAgICAuaW5wdXQge1xcbiAgICAgIEBhcHBseSBteS0yIHB5LTU7XFxuICAgIH1cXG5cXG4gICAgLmxvY2staWNvbiB7XFxuICAgICAgQGFwcGx5IGFic29sdXRlIGxlZnQtNiB0ZXh0LWxnO1xcbiAgICAgIHRvcDogNDdweDtcXG5cXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbiAgICAgICAgdG9wOiA1MHB4O1xcbiAgICAgICAgZm9udC1zaXplOiAyMHB4O1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAubWFpbC1pY29uIHtcXG4gICAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC02O1xcbiAgICAgIHRvcDogNDdweDtcXG5cXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbiAgICAgICAgdG9wOiA1MXB4O1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcbiAgaDIge1xcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbiAgICAgIEBhcHBseSB0ZXh0LWhlYWRpbmctMztcXG4gICAgICBsaW5lLWhlaWdodDogNjBweDtcXG4gICAgfVxcblxcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0NDBweCkge1xcbiAgICAgIEBhcHBseSB0ZXh0LWhlYWRpbmctNDtcXG4gICAgICBsaW5lLWhlaWdodDogNTBweDtcXG4gICAgfVxcbiAgICBAYXBwbHkgdGV4dC1oZWFkaW5nLTUgZm9udC1ib2xkIHRleHQtbi01MCBzbTptYi0yO1xcbiAgfVxcbiAgcCB7XFxuICAgIEBhcHBseSB0ZXh0LXNtIHRleHQtbi00MCBzbTp0ZXh0LWJhc2U7XFxuICB9XFxuICAucmVzZXQtYnRuIHtcXG4gICAgQGFwcGx5IG10LTMgdy1mdWxsIHRleHQteHM7XFxuICAgIHBhZGRpbmc6IDE0cHg7XFxuXFxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuICAgICAgcGFkZGluZzogMThweCA5NHB4O1xcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcXG4gICAgfVxcbiAgfVxcbiAgLnZlcmlmaWNhdGlvbiB7XFxuICAgIGZvbnQtc2l6ZTogMTUwcHg7XFxuXFxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuICAgICAgZm9udC1zaXplOiAxOTBweDtcXG4gICAgfVxcbiAgfVxcbn1cXG4ucmVzZXRfX3Bhc3N3b3JkIHtcXG4gIGhlaWdodDogNjEwcHg7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5sYWJlbCB7XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTUwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIge1xcbiAgbWF4LXdpZHRoOiA4NjVweDtcXG4gIG1hcmdpbjogYXV0bztcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTQxNXB4KSB7XFxuLnNlY3Rpb25fX2NvbnRhaW5lciB7XFxuICAgIG1heC13aWR0aDogMTIwNnB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5mZWVkYmFjayB7XFxuICAgIHdpZHRoOiA3MDJweDtcXG59XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLmZlZWRiYWNrIHAge1xcbiAgbGluZS1oZWlnaHQ6IDIycHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3dyYXBwZXIge1xcbiAgYm94LXNoYWRvdzogMHB4IDIwcHggNDBweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3dyYXBwZXIgLnZlcmlmaWNhdGlvbiB7XFxuICBmb250LXNpemU6IDE5MHB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX190aXRsZSB7XFxuICBtYXJnaW4tdG9wOiAxLjc1cmVtO1xcbiAgbWFyZ2luLWJvdHRvbTogMS43NXJlbTtcXG4gIG1hcmdpbi1sZWZ0OiAwLjc1cmVtO1xcbiAgbWFyZ2luLXJpZ2h0OiAwLjc1cmVtO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgbGluZS1oZWlnaHQ6IDEuNzVyZW07XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3RpdGxlIHtcXG4gICAgbGluZS1oZWlnaHQ6IDIuNXJlbTtcXG59XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX190aXRsZSB7XFxuICAgIG1hcmdpbi1ib3R0b206IDIuNXJlbTtcXG4gICAgbWFyZ2luLXRvcDogMy41cmVtO1xcbn1cXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDQwcHgpIHtcXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX190aXRsZSB7XFxuICAgIGxpbmUtaGVpZ2h0OiAyLjI1cmVtO1xcbn1cXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fdGl0bGUgcCB7XFxuICBmb250LXdlaWdodDogbm9ybWFsO1xcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTQwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3RpdGxlIHAge1xcbiAgICBmb250LXNpemU6IDFyZW07XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjVyZW07XFxufVxcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5yZWdpc3Rlcl9fc2lkZWJhciB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWVnZ3NoZWxsKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgcGFkZGluZzogOTZweCAzMnB4IDQwcHg7XFxuICB3aWR0aDogMzQ0cHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnJlZ2lzdGVyX19zaWRlYmFyIHVsIHtcXG4gIHdpZHRoOiAyNTNweDtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAucmVnaXN0ZXJfX3NpZGViYXIgdWw6OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHdpZHRoOiA0cHg7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLW4tMjApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwcHg7XFxuICB0b3A6IDBweDtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAucmVnaXN0ZXJfX3NpZGViYXIgLmRldGFpbCB7XFxuICBtYXJnaW4tbGVmdDogNDVweDtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAucmVnaXN0ZXJfX3NpZGViYXIgLmxpc3RfX2FjdGl2ZTo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogLTFweDtcXG4gIHdpZHRoOiA2cHg7XFxuICBoZWlnaHQ6IDg1cHg7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXR1cnF1b2lzZSksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgei1pbmRleDogNTtcXG59XFxuLmZvcm0ge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS13aGl0ZSksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHBhZGRpbmc6IDEuMjVyZW07XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xcbi5mb3JtIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAyLjVyZW07XFxuICAgIHBhZGRpbmctcmlnaHQ6IDIuNXJlbTtcXG4gICAgcGFkZGluZy10b3A6IDIuNXJlbTtcXG4gICAgcGFkZGluZy1ib3R0b206IDIuNXJlbTtcXG59XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcXG4uZm9ybSB7XFxuICAgIHBhZGRpbmctbGVmdDogNXJlbTtcXG4gICAgcGFkZGluZy1yaWdodDogNXJlbTtcXG59XFxufVxcbi5mb3JtIHtcXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDhweDtcXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDhweDtcXG4gIHdpZHRoOiA4NjJweDtcXG59XFxuLmZvcm1fX2NvbnRhaW5lciB7XFxuICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSh2YXIoLS1uLTEwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG4gIG1hcmdpbi1ib3R0b206IDI0cHg7XFxufVxcbi5mb3JtX19jb250YWluZXIgLmVycm9yX19pbnB1dCB7XFxuICBib3JkZXItd2lkdGg6IDFweDtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY3JpbXNvbi01MCksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XFxufVxcbi5mb3JtX19jb250ZW50IHtcXG4gIG1hcmdpbi10b3A6IDI0cHg7XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xcbi5mb3JtX19jb250ZW50IHtcXG4gICAgZGlzcGxheTogZ3JpZDtcXG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcXG4gICAgZ2FwOiAxNnB4O1xcbn1cXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVJlZ2lzdGVyUGFnZS52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxtQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0JBQUE7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0FBQUE7QUFJQTtFQUlFLGdCQUFBO0VBQ0EsWUFBQTtBQUpKO0FBQUk7QUFERjtJQUVJLGlCQUFBO0FBR0o7QUFFRTtJQUVJLFlBQUE7QUFDTjtBQUpGO0FBTU07RUFDRSxpQkFBQTtBQUNSO0FBR0k7RUFDRSxrREFBQTtBQUROO0FBR007RUFDRSxnQkFBQTtBQURSO0FBVU07RUFBQSxtQkFBQTtFQUFBLHNCQUFBO0VBQUEsb0JBQUE7RUFBQSxxQkFBQTtFQUFBLGtCQUFBO0VBQUEsb0JBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQSxtQkFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEscUJBQUE7SUFBQSxrQkFBQTtBQUFBO0FBQUE7QUFKQTtBQUNFO0lBQUEsb0JBQUE7QUFBQTtBQUNSO0FBSU07RUFDRSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7QUFGUjtBQUVRO0FBQUE7SUFBQSxlQUFBO0lBQUEsbUJBQUE7QUFBQTtBQUFBO0FBS0Y7RUFBQSxrQkFBQTtFQUFBLDZEQUFBO0VBQ0EsdUJBQUE7RUFDQSxZQUFBO0FBRkE7QUFJQTtFQUNFLFlBQUE7QUFKUjtBQU9NO0VBQ0UsV0FBQTtFQUNBLFVBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7RUFBQSx5REFBQTtFQUNBLGtCQUFBO0VBQ0Esa0JBQUE7RUFDQSxTQUFBO0VBQ0EsUUFBQTtBQUxSO0FBUU07RUFDRSxpQkFBQTtBQU5SO0FBU007RUFDRSxrQkFBQTtFQUNBLE1BQUE7RUFDQSxVQUFBO0VBQ0EsVUFBQTtFQUNBLFlBQUE7RUFDQSxrQkFBQTtFQUFBLDhEQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTtBQVBSO0FBY0U7RUFBQSxrQkFBQTtFQUFBLDBEQUFBO0VBQUEsZ0JBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQSxvQkFBQTtJQUFBLHFCQUFBO0lBQUEsbUJBQUE7SUFBQSxzQkFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEsa0JBQUE7SUFBQSxtQkFBQTtBQUFBO0FBQUE7QUFERjtFQUVFLDJCQUFBO0VBQ0EsOEJBQUE7RUFDQSxZQUFBO0FBVkY7QUFhSTtFQUFBLHdCQUFBO0VBQUEsc0JBQUE7RUFBQSxnRUFBQTtFQUNBLG1CQUFBO0FBREE7QUFJRTtFQUFBLGlCQUFBO0VBQUEsc0JBQUE7RUFBQSwrREFBQTtBQUFBO0FBSUo7RUFDRSxnQkFBQTtBQVpKO0FBZ0JBO0FBQ0U7SUFDRSxhQUFBO0lBQ0EscUNBQUE7SUFDQSxTQUFBO0FBYkY7QUFDRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4ubGFiZWwge1xcbiAgQGFwcGx5IHRleHQtc20gZm9udC1ub3JtYWwgdGV4dC1uLTUwO1xcbn1cXG5cXG4uc2VjdGlvbiB7XFxuICAmX19jb250YWluZXIge1xcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxNDE1cHgpIHtcXG4gICAgICBtYXgtd2lkdGg6IDEyMDZweDtcXG4gICAgfVxcbiAgICBtYXgtd2lkdGg6IDg2NXB4O1xcbiAgICBtYXJnaW46IGF1dG87XFxuXFxuICAgIC5mZWVkYmFjayB7XFxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTQxNXB4KSB7XFxuICAgICAgICB3aWR0aDogNzAycHg7XFxuICAgICAgfVxcblxcbiAgICAgIHAge1xcbiAgICAgICAgbGluZS1oZWlnaHQ6IDIycHg7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC5zZWN0aW9uX193cmFwcGVyIHtcXG4gICAgICBib3gtc2hhZG93OiAwcHggMjBweCA0MHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcXG5cXG4gICAgICAudmVyaWZpY2F0aW9uIHtcXG4gICAgICAgIGZvbnQtc2l6ZTogMTkwcHg7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC5zZWN0aW9uX190aXRsZSB7XFxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDQwcHgpIHtcXG4gICAgICAgIEBhcHBseSBsZWFkaW5nLTk7XFxuICAgICAgfVxcblxcbiAgICAgIEBhcHBseSBteS03IG14LTMgdGV4dC1jZW50ZXIgbGVhZGluZy03IHNtOmxlYWRpbmctMTAgbGc6bWItMTAgbGc6bXQtMTQ7XFxuXFxuICAgICAgcCB7XFxuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgICAgICAgQGFwcGx5IHRleHQtc20gdGV4dC1uLTQwIHNtOnRleHQtYmFzZTtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgLnJlZ2lzdGVyX19zaWRlYmFyIHtcXG4gICAgICBAYXBwbHkgYmctZWdnc2hlbGw7XFxuICAgICAgcGFkZGluZzogOTZweCAzMnB4IDQwcHg7XFxuICAgICAgd2lkdGg6IDM0NHB4O1xcblxcbiAgICAgIHVsIHtcXG4gICAgICAgIHdpZHRoOiAyNTNweDtcXG4gICAgICB9XFxuXFxuICAgICAgdWw6OmJlZm9yZSB7XFxuICAgICAgICBjb250ZW50OiAnJztcXG4gICAgICAgIHdpZHRoOiA0cHg7XFxuICAgICAgICBoZWlnaHQ6IDEwMCU7XFxuICAgICAgICBAYXBwbHkgYmctbi0yMDtcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgIGxlZnQ6IDBweDtcXG4gICAgICAgIHRvcDogMHB4O1xcbiAgICAgIH1cXG5cXG4gICAgICAuZGV0YWlsIHtcXG4gICAgICAgIG1hcmdpbi1sZWZ0OiA0NXB4O1xcbiAgICAgIH1cXG5cXG4gICAgICAubGlzdF9fYWN0aXZlOjphZnRlciB7XFxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICB0b3A6IDA7XFxuICAgICAgICBsZWZ0OiAtMXB4O1xcbiAgICAgICAgd2lkdGg6IDZweDtcXG4gICAgICAgIGhlaWdodDogODVweDtcXG4gICAgICAgIEBhcHBseSBiZy10dXJxdW9pc2U7XFxuICAgICAgICBjb250ZW50OiAnJztcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gICAgICAgIHotaW5kZXg6IDU7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxufVxcblxcbi5mb3JtIHtcXG4gIEBhcHBseSBiZy13aGl0ZSBwLTUgc206cHgtMTAgc206cHktMTAgbGc6cHgtMjA7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA4cHg7XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA4cHg7XFxuICB3aWR0aDogODYycHg7XFxuXFxuICAmX19jb250YWluZXIge1xcbiAgICBAYXBwbHkgYm9yZGVyLWItMiBib3JkZXItYi1uLTEwO1xcbiAgICBtYXJnaW4tYm90dG9tOiAyNHB4O1xcblxcbiAgICAuZXJyb3JfX2lucHV0IHtcXG4gICAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1jcmltc29uLTUwO1xcbiAgICB9XFxuICB9XFxuXFxuICAmX19jb250ZW50IHtcXG4gICAgbWFyZ2luLXRvcDogMjRweDtcXG4gIH1cXG59XFxuXFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSB7XFxuICAuZm9ybV9fY29udGVudCB7XFxuICAgIGRpc3BsYXk6IGdyaWQ7XFxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XFxuICAgIGdhcDogMTZweDtcXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmxhYmVsIHtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNTApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciB7XFxuICBtYXgtd2lkdGg6IDg2NXB4O1xcbiAgbWFyZ2luOiBhdXRvO1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxNDE1cHgpIHtcXG4uc2VjdGlvbl9fY29udGFpbmVyIHtcXG4gICAgbWF4LXdpZHRoOiAxMjA2cHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLmZlZWRiYWNrIHtcXG4gICAgd2lkdGg6IDcwMnB4O1xcbn1cXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuZmVlZGJhY2sgcCB7XFxuICBsaW5lLWhlaWdodDogMjJweDtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fd3JhcHBlciB7XFxuICBib3gtc2hhZG93OiAwcHggMjBweCA0MHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fd3JhcHBlciAudmVyaWZpY2F0aW9uIHtcXG4gIGZvbnQtc2l6ZTogMTkwcHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3RpdGxlIHtcXG4gIG1hcmdpbi10b3A6IDEuNzVyZW07XFxuICBtYXJnaW4tYm90dG9tOiAxLjc1cmVtO1xcbiAgbWFyZ2luLWxlZnQ6IDAuNzVyZW07XFxuICBtYXJnaW4tcmlnaHQ6IDAuNzVyZW07XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBsaW5lLWhlaWdodDogMS43NXJlbTtcXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fdGl0bGUge1xcbiAgICBsaW5lLWhlaWdodDogMi41cmVtO1xcbn1cXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3RpdGxlIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMi41cmVtO1xcbiAgICBtYXJnaW4tdG9wOiAzLjVyZW07XFxufVxcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0NDBweCkge1xcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3RpdGxlIHtcXG4gICAgbGluZS1oZWlnaHQ6IDIuMjVyZW07XFxufVxcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX190aXRsZSBwIHtcXG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNDApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fdGl0bGUgcCB7XFxuICAgIGZvbnQtc2l6ZTogMXJlbTtcXG4gICAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcXG59XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnJlZ2lzdGVyX19zaWRlYmFyIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tZWdnc2hlbGwpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBwYWRkaW5nOiA5NnB4IDMycHggNDBweDtcXG4gIHdpZHRoOiAzNDRweDtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAucmVnaXN0ZXJfX3NpZGViYXIgdWwge1xcbiAgd2lkdGg6IDI1M3B4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5yZWdpc3Rlcl9fc2lkZWJhciB1bDo6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgd2lkdGg6IDRweDtcXG4gIGhlaWdodDogMTc1cHg7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLW4tMjApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwcHg7XFxuICB0b3A6IDBweDtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAucmVnaXN0ZXJfX3NpZGViYXIgLmRldGFpbCB7XFxuICBtYXJnaW4tbGVmdDogNDVweDtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAucmVnaXN0ZXJfX3NpZGViYXIgLmxpc3RfX2FjdGl2ZTo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogLTFweDtcXG4gIHdpZHRoOiA2cHg7XFxuICBoZWlnaHQ6IDg1cHg7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXR1cnF1b2lzZSksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgei1pbmRleDogNTtcXG59XFxuLmZvcm0ge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS13aGl0ZSksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHBhZGRpbmc6IDEuMjVyZW07XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xcbi5mb3JtIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAyLjVyZW07XFxuICAgIHBhZGRpbmctcmlnaHQ6IDIuNXJlbTtcXG4gICAgcGFkZGluZy10b3A6IDIuNXJlbTtcXG4gICAgcGFkZGluZy1ib3R0b206IDIuNXJlbTtcXG59XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcXG4uZm9ybSB7XFxuICAgIHBhZGRpbmctbGVmdDogNXJlbTtcXG4gICAgcGFkZGluZy1yaWdodDogNXJlbTtcXG59XFxufVxcbi5mb3JtIHtcXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDhweDtcXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDhweDtcXG4gIHdpZHRoOiA4NjJweDtcXG59XFxuLmZvcm1fX2NvbnRhaW5lciB7XFxuICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSh2YXIoLS1uLTEwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG4gIG1hcmdpbi1ib3R0b206IDI0cHg7XFxufVxcbi5mb3JtX19jb250YWluZXIgLmVycm9yX19pbnB1dCB7XFxuICBib3JkZXItd2lkdGg6IDFweDtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY3JpbXNvbi01MCksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XFxufVxcbi5mb3JtX19jb250ZW50IHtcXG4gIG1hcmdpbi10b3A6IDI0cHg7XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xcbi5mb3JtX19jb250ZW50IHtcXG4gICAgZGlzcGxheTogZ3JpZDtcXG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcXG4gICAgZ2FwOiAxNnB4O1xcbn1cXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvUmVnaXN0ZXJQYWdlLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtFQUFBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSxnQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7QUFBQTtBQUlBO0VBSUUsZ0JBQUE7RUFDQSxZQUFBO0FBSko7QUFBSTtBQURGO0lBRUksaUJBQUE7QUFHSjtBQUVFO0lBRUksWUFBQTtBQUNOO0FBSkY7QUFNTTtFQUNFLGlCQUFBO0FBQ1I7QUFHSTtFQUNFLGtEQUFBO0FBRE47QUFHTTtFQUNFLGdCQUFBO0FBRFI7QUFVTTtFQUFBLG1CQUFBO0VBQUEsc0JBQUE7RUFBQSxvQkFBQTtFQUFBLHFCQUFBO0VBQUEsa0JBQUE7RUFBQSxvQkFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLG1CQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQSxxQkFBQTtJQUFBLGtCQUFBO0FBQUE7QUFBQTtBQUpBO0FBQ0U7SUFBQSxvQkFBQTtBQUFBO0FBQ1I7QUFJTTtFQUNFLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxtQkFBQTtFQUFBLG9CQUFBO0VBQUEsb0JBQUE7RUFBQSxnREFBQTtBQUZSO0FBRVE7QUFBQTtJQUFBLGVBQUE7SUFBQSxtQkFBQTtBQUFBO0FBQUE7QUFLRjtFQUFBLGtCQUFBO0VBQUEsNkRBQUE7RUFDQSx1QkFBQTtFQUNBLFlBQUE7QUFGQTtBQUlBO0VBQ0UsWUFBQTtBQUpSO0FBT007RUFDRSxXQUFBO0VBQ0EsVUFBQTtFQUNBLGFBQUE7RUFDQSxrQkFBQTtFQUFBLHlEQUFBO0VBQ0Esa0JBQUE7RUFDQSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxRQUFBO0FBTFI7QUFRTTtFQUNFLGlCQUFBO0FBTlI7QUFTTTtFQUNFLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLFVBQUE7RUFDQSxVQUFBO0VBQ0EsWUFBQTtFQUNBLGtCQUFBO0VBQUEsOERBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBO0FBUFI7QUFjRTtFQUFBLGtCQUFBO0VBQUEsMERBQUE7RUFBQSxnQkFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLG9CQUFBO0lBQUEscUJBQUE7SUFBQSxtQkFBQTtJQUFBLHNCQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQSxrQkFBQTtJQUFBLG1CQUFBO0FBQUE7QUFBQTtBQURGO0VBRUUsMkJBQUE7RUFDQSw4QkFBQTtFQUNBLFlBQUE7QUFWRjtBQWFJO0VBQUEsd0JBQUE7RUFBQSxzQkFBQTtFQUFBLGdFQUFBO0VBQ0EsbUJBQUE7QUFEQTtBQUlFO0VBQUEsaUJBQUE7RUFBQSxzQkFBQTtFQUFBLCtEQUFBO0FBQUE7QUFJSjtFQUNFLGdCQUFBO0FBWko7QUFnQkE7QUFDRTtJQUNFLGFBQUE7SUFDQSxxQ0FBQTtJQUNBLFNBQUE7QUFiRjtBQUNGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5sYWJlbCB7XFxuICBAYXBwbHkgdGV4dC1zbSBmb250LW5vcm1hbCB0ZXh0LW4tNTA7XFxufVxcblxcbi5zZWN0aW9uIHtcXG4gICZfX2NvbnRhaW5lciB7XFxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDE0MTVweCkge1xcbiAgICAgIG1heC13aWR0aDogMTIwNnB4O1xcbiAgICB9XFxuICAgIG1heC13aWR0aDogODY1cHg7XFxuICAgIG1hcmdpbjogYXV0bztcXG5cXG4gICAgLmZlZWRiYWNrIHtcXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxNDE1cHgpIHtcXG4gICAgICAgIHdpZHRoOiA3MDJweDtcXG4gICAgICB9XFxuXFxuICAgICAgcCB7XFxuICAgICAgICBsaW5lLWhlaWdodDogMjJweDtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgLnNlY3Rpb25fX3dyYXBwZXIge1xcbiAgICAgIGJveC1zaGFkb3c6IDBweCAyMHB4IDQwcHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xcblxcbiAgICAgIC52ZXJpZmljYXRpb24ge1xcbiAgICAgICAgZm9udC1zaXplOiAxOTBweDtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgLnNlY3Rpb25fX3RpdGxlIHtcXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0NDBweCkge1xcbiAgICAgICAgQGFwcGx5IGxlYWRpbmctOTtcXG4gICAgICB9XFxuXFxuICAgICAgQGFwcGx5IG15LTcgbXgtMyB0ZXh0LWNlbnRlciBsZWFkaW5nLTcgc206bGVhZGluZy0xMCBsZzptYi0xMCBsZzptdC0xNDtcXG5cXG4gICAgICBwIHtcXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XFxuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XFxuICAgICAgICBAYXBwbHkgdGV4dC1zbSB0ZXh0LW4tNDAgc206dGV4dC1iYXNlO1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAucmVnaXN0ZXJfX3NpZGViYXIge1xcbiAgICAgIEBhcHBseSBiZy1lZ2dzaGVsbDtcXG4gICAgICBwYWRkaW5nOiA5NnB4IDMycHggNDBweDtcXG4gICAgICB3aWR0aDogMzQ0cHg7XFxuXFxuICAgICAgdWwge1xcbiAgICAgICAgd2lkdGg6IDI1M3B4O1xcbiAgICAgIH1cXG5cXG4gICAgICB1bDo6YmVmb3JlIHtcXG4gICAgICAgIGNvbnRlbnQ6ICcnO1xcbiAgICAgICAgd2lkdGg6IDRweDtcXG4gICAgICAgIGhlaWdodDogMTc1cHg7XFxuICAgICAgICBAYXBwbHkgYmctbi0yMDtcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgIGxlZnQ6IDBweDtcXG4gICAgICAgIHRvcDogMHB4O1xcbiAgICAgIH1cXG5cXG4gICAgICAuZGV0YWlsIHtcXG4gICAgICAgIG1hcmdpbi1sZWZ0OiA0NXB4O1xcbiAgICAgIH1cXG5cXG4gICAgICAubGlzdF9fYWN0aXZlOjphZnRlciB7XFxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICB0b3A6IDA7XFxuICAgICAgICBsZWZ0OiAtMXB4O1xcbiAgICAgICAgd2lkdGg6IDZweDtcXG4gICAgICAgIGhlaWdodDogODVweDtcXG4gICAgICAgIEBhcHBseSBiZy10dXJxdW9pc2U7XFxuICAgICAgICBjb250ZW50OiAnJztcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gICAgICAgIHotaW5kZXg6IDU7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxufVxcblxcbi5mb3JtIHtcXG4gIEBhcHBseSBiZy13aGl0ZSBwLTUgc206cHgtMTAgc206cHktMTAgbGc6cHgtMjA7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA4cHg7XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA4cHg7XFxuICB3aWR0aDogODYycHg7XFxuXFxuICAmX19jb250YWluZXIge1xcbiAgICBAYXBwbHkgYm9yZGVyLWItMiBib3JkZXItYi1uLTEwO1xcbiAgICBtYXJnaW4tYm90dG9tOiAyNHB4O1xcblxcbiAgICAuZXJyb3JfX2lucHV0IHtcXG4gICAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1jcmltc29uLTUwO1xcbiAgICB9XFxuICB9XFxuXFxuICAmX19jb250ZW50IHtcXG4gICAgbWFyZ2luLXRvcDogMjRweDtcXG4gIH1cXG59XFxuXFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSB7XFxuICAuZm9ybV9fY29udGVudCB7XFxuICAgIGRpc3BsYXk6IGdyaWQ7XFxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XFxuICAgIGdhcDogMTZweDtcXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiI2J0bltkYXRhLXYtYTE4NjFmM2VdIHtcXG4gIHBhZGRpbmc6IDEzcHggMDtcXG59XFxuI2J0biBzdmdbZGF0YS12LWExODYxZjNlXSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICByaWdodDogMS43NXJlbTtcXG4gIGZvbnQtc2l6ZTogMS41cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDJyZW07XFxuICB0cmFuc2l0aW9uOiAwLjRzO1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbiNidG5bZGF0YS12LWExODYxZjNlXSB7XFxuICAgIHBhZGRpbmc6IDE4cHggMDtcXG59XFxufVxcbi51c2VybmFtZVtkYXRhLXYtYTE4NjFmM2VdIHtcXG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcXG59XFxuLnBhc3N3b3JkW2RhdGEtdi1hMTg2MWYzZV0ge1xcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xcbn1cXG5sYWJlbFtkYXRhLXYtYTE4NjFmM2VdIHtcXG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1NpZ25Jbi52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQ0E7RUFDRSxlQUFBO0FBQUY7QUFHSTtFQUFBLGtCQUFBO0VBQUEsY0FBQTtFQUFBLGlCQUFBO0VBQUEsaUJBQUE7RUFDQSxnQkFBQTtBQURBO0FBSUo7QUFDRTtJQUNFLGVBQUE7QUFBRjtBQUNGO0FBR0U7RUFBQSxxQkFBQTtBQUFBO0FBR0E7RUFBQSxxQkFBQTtBQUFBO0FBR0E7RUFBQSxxQkFBQTtFQUFBLGdCQUFBO0FBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuI2J0biB7XFxuICBwYWRkaW5nOiAxM3B4IDA7XFxuXFxuICBzdmcge1xcbiAgICBAYXBwbHkgYWJzb2x1dGUgcmlnaHQtNyB0ZXh0LTJ4bDtcXG4gICAgdHJhbnNpdGlvbjogMC40cztcXG4gIH1cXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4gICNidG4ge1xcbiAgICBwYWRkaW5nOiAxOHB4IDA7XFxuICB9XFxufVxcbi51c2VybmFtZSB7XFxuICBAYXBwbHkgbWItMjtcXG59XFxuLnBhc3N3b3JkIHtcXG4gIEBhcHBseSBtYi0yO1xcbn1cXG5sYWJlbCB7XFxuICBAYXBwbHkgbWItMiBmb250LWJvbGQ7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5ib3JkZXItYm90dG9tW2RhdGEtdi0xMGM5ZTBiMl0ge1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjQpO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJIZWFkZXIudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNBO0VBQ0UsdUNBQUE7QUFBRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4uYm9yZGVyLWJvdHRvbSB7XFxuICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNCk7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCB7fTsiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCB7fTsiLCJ2YXIgbWFwID0ge1xuXHRcIi4vYWZcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FmLmpzXCIsXG5cdFwiLi9hZi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYWYuanNcIixcblx0XCIuL2FyXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci5qc1wiLFxuXHRcIi4vYXItZHpcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWR6LmpzXCIsXG5cdFwiLi9hci1kei5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItZHouanNcIixcblx0XCIuL2FyLWt3XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1rdy5qc1wiLFxuXHRcIi4vYXIta3cuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWt3LmpzXCIsXG5cdFwiLi9hci1seVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItbHkuanNcIixcblx0XCIuL2FyLWx5LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1seS5qc1wiLFxuXHRcIi4vYXItbWFcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLW1hLmpzXCIsXG5cdFwiLi9hci1tYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItbWEuanNcIixcblx0XCIuL2FyLXNhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1zYS5qc1wiLFxuXHRcIi4vYXItc2EuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLXNhLmpzXCIsXG5cdFwiLi9hci10blwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItdG4uanNcIixcblx0XCIuL2FyLXRuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci10bi5qc1wiLFxuXHRcIi4vYXIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLmpzXCIsXG5cdFwiLi9helwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXouanNcIixcblx0XCIuL2F6LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hei5qc1wiLFxuXHRcIi4vYmVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JlLmpzXCIsXG5cdFwiLi9iZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYmUuanNcIixcblx0XCIuL2JnXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iZy5qc1wiLFxuXHRcIi4vYmcuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JnLmpzXCIsXG5cdFwiLi9ibVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm0uanNcIixcblx0XCIuL2JtLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibS5qc1wiLFxuXHRcIi4vYm5cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JuLmpzXCIsXG5cdFwiLi9ibi1iZFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm4tYmQuanNcIixcblx0XCIuL2JuLWJkLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibi1iZC5qc1wiLFxuXHRcIi4vYm4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JuLmpzXCIsXG5cdFwiLi9ib1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm8uanNcIixcblx0XCIuL2JvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iby5qc1wiLFxuXHRcIi4vYnJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JyLmpzXCIsXG5cdFwiLi9ici5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYnIuanNcIixcblx0XCIuL2JzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9icy5qc1wiLFxuXHRcIi4vYnMuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JzLmpzXCIsXG5cdFwiLi9jYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY2EuanNcIixcblx0XCIuL2NhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jYS5qc1wiLFxuXHRcIi4vY3NcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2NzLmpzXCIsXG5cdFwiLi9jcy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3MuanNcIixcblx0XCIuL2N2XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jdi5qc1wiLFxuXHRcIi4vY3YuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2N2LmpzXCIsXG5cdFwiLi9jeVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3kuanNcIixcblx0XCIuL2N5LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jeS5qc1wiLFxuXHRcIi4vZGFcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RhLmpzXCIsXG5cdFwiLi9kYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGEuanNcIixcblx0XCIuL2RlXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS5qc1wiLFxuXHRcIi4vZGUtYXRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLWF0LmpzXCIsXG5cdFwiLi9kZS1hdC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUtYXQuanNcIixcblx0XCIuL2RlLWNoXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS1jaC5qc1wiLFxuXHRcIi4vZGUtY2guanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLWNoLmpzXCIsXG5cdFwiLi9kZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUuanNcIixcblx0XCIuL2R2XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kdi5qc1wiLFxuXHRcIi4vZHYuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2R2LmpzXCIsXG5cdFwiLi9lbFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZWwuanNcIixcblx0XCIuL2VsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbC5qc1wiLFxuXHRcIi4vZW4tYXVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWF1LmpzXCIsXG5cdFwiLi9lbi1hdS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tYXUuanNcIixcblx0XCIuL2VuLWNhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1jYS5qc1wiLFxuXHRcIi4vZW4tY2EuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWNhLmpzXCIsXG5cdFwiLi9lbi1nYlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tZ2IuanNcIixcblx0XCIuL2VuLWdiLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1nYi5qc1wiLFxuXHRcIi4vZW4taWVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWllLmpzXCIsXG5cdFwiLi9lbi1pZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4taWUuanNcIixcblx0XCIuL2VuLWlsXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pbC5qc1wiLFxuXHRcIi4vZW4taWwuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWlsLmpzXCIsXG5cdFwiLi9lbi1pblwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4taW4uanNcIixcblx0XCIuL2VuLWluLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pbi5qc1wiLFxuXHRcIi4vZW4tbnpcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLW56LmpzXCIsXG5cdFwiLi9lbi1uei5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tbnouanNcIixcblx0XCIuL2VuLXNnXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1zZy5qc1wiLFxuXHRcIi4vZW4tc2cuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLXNnLmpzXCIsXG5cdFwiLi9lb1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW8uanNcIixcblx0XCIuL2VvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lby5qc1wiLFxuXHRcIi4vZXNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLmpzXCIsXG5cdFwiLi9lcy1kb1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMtZG8uanNcIixcblx0XCIuL2VzLWRvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy1kby5qc1wiLFxuXHRcIi4vZXMtbXhcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLW14LmpzXCIsXG5cdFwiLi9lcy1teC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMtbXguanNcIixcblx0XCIuL2VzLXVzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy11cy5qc1wiLFxuXHRcIi4vZXMtdXMuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLXVzLmpzXCIsXG5cdFwiLi9lcy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMuanNcIixcblx0XCIuL2V0XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ldC5qc1wiLFxuXHRcIi4vZXQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2V0LmpzXCIsXG5cdFwiLi9ldVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXUuanNcIixcblx0XCIuL2V1LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ldS5qc1wiLFxuXHRcIi4vZmFcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZhLmpzXCIsXG5cdFwiLi9mYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZmEuanNcIixcblx0XCIuL2ZpXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9maS5qc1wiLFxuXHRcIi4vZmkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZpLmpzXCIsXG5cdFwiLi9maWxcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZpbC5qc1wiLFxuXHRcIi4vZmlsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9maWwuanNcIixcblx0XCIuL2ZvXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mby5qc1wiLFxuXHRcIi4vZm8uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZvLmpzXCIsXG5cdFwiLi9mclwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnIuanNcIixcblx0XCIuL2ZyLWNhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci1jYS5qc1wiLFxuXHRcIi4vZnItY2EuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLWNhLmpzXCIsXG5cdFwiLi9mci1jaFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnItY2guanNcIixcblx0XCIuL2ZyLWNoLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci1jaC5qc1wiLFxuXHRcIi4vZnIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLmpzXCIsXG5cdFwiLi9meVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnkuanNcIixcblx0XCIuL2Z5LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9meS5qc1wiLFxuXHRcIi4vZ2FcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dhLmpzXCIsXG5cdFwiLi9nYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2EuanNcIixcblx0XCIuL2dkXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nZC5qc1wiLFxuXHRcIi4vZ2QuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dkLmpzXCIsXG5cdFwiLi9nbFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2wuanNcIixcblx0XCIuL2dsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nbC5qc1wiLFxuXHRcIi4vZ29tLWRldmFcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dvbS1kZXZhLmpzXCIsXG5cdFwiLi9nb20tZGV2YS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ29tLWRldmEuanNcIixcblx0XCIuL2dvbS1sYXRuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nb20tbGF0bi5qc1wiLFxuXHRcIi4vZ29tLWxhdG4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dvbS1sYXRuLmpzXCIsXG5cdFwiLi9ndVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ3UuanNcIixcblx0XCIuL2d1LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ndS5qc1wiLFxuXHRcIi4vaGVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hlLmpzXCIsXG5cdFwiLi9oZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaGUuanNcIixcblx0XCIuL2hpXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oaS5qc1wiLFxuXHRcIi4vaGkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hpLmpzXCIsXG5cdFwiLi9oclwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHIuanNcIixcblx0XCIuL2hyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oci5qc1wiLFxuXHRcIi4vaHVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2h1LmpzXCIsXG5cdFwiLi9odS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHUuanNcIixcblx0XCIuL2h5LWFtXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oeS1hbS5qc1wiLFxuXHRcIi4vaHktYW0uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2h5LWFtLmpzXCIsXG5cdFwiLi9pZFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaWQuanNcIixcblx0XCIuL2lkLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pZC5qc1wiLFxuXHRcIi4vaXNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2lzLmpzXCIsXG5cdFwiLi9pcy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXMuanNcIixcblx0XCIuL2l0XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pdC5qc1wiLFxuXHRcIi4vaXQtY2hcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2l0LWNoLmpzXCIsXG5cdFwiLi9pdC1jaC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXQtY2guanNcIixcblx0XCIuL2l0LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pdC5qc1wiLFxuXHRcIi4vamFcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2phLmpzXCIsXG5cdFwiLi9qYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvamEuanNcIixcblx0XCIuL2p2XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9qdi5qc1wiLFxuXHRcIi4vanYuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2p2LmpzXCIsXG5cdFwiLi9rYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva2EuanNcIixcblx0XCIuL2thLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rYS5qc1wiLFxuXHRcIi4va2tcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2trLmpzXCIsXG5cdFwiLi9ray5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva2suanNcIixcblx0XCIuL2ttXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rbS5qc1wiLFxuXHRcIi4va20uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ttLmpzXCIsXG5cdFwiLi9rblwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva24uanNcIixcblx0XCIuL2tuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rbi5qc1wiLFxuXHRcIi4va29cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2tvLmpzXCIsXG5cdFwiLi9rby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva28uanNcIixcblx0XCIuL2t1XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rdS5qc1wiLFxuXHRcIi4va3UuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2t1LmpzXCIsXG5cdFwiLi9reVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3kuanNcIixcblx0XCIuL2t5LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9reS5qc1wiLFxuXHRcIi4vbGJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2xiLmpzXCIsXG5cdFwiLi9sYi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbGIuanNcIixcblx0XCIuL2xvXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sby5qc1wiLFxuXHRcIi4vbG8uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2xvLmpzXCIsXG5cdFwiLi9sdFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbHQuanNcIixcblx0XCIuL2x0LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sdC5qc1wiLFxuXHRcIi4vbHZcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2x2LmpzXCIsXG5cdFwiLi9sdi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbHYuanNcIixcblx0XCIuL21lXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tZS5qc1wiLFxuXHRcIi4vbWUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21lLmpzXCIsXG5cdFwiLi9taVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWkuanNcIixcblx0XCIuL21pLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9taS5qc1wiLFxuXHRcIi4vbWtcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21rLmpzXCIsXG5cdFwiLi9tay5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWsuanNcIixcblx0XCIuL21sXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tbC5qc1wiLFxuXHRcIi4vbWwuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21sLmpzXCIsXG5cdFwiLi9tblwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbW4uanNcIixcblx0XCIuL21uLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tbi5qc1wiLFxuXHRcIi4vbXJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21yLmpzXCIsXG5cdFwiLi9tci5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXIuanNcIixcblx0XCIuL21zXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tcy5qc1wiLFxuXHRcIi4vbXMtbXlcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21zLW15LmpzXCIsXG5cdFwiLi9tcy1teS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXMtbXkuanNcIixcblx0XCIuL21zLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tcy5qc1wiLFxuXHRcIi4vbXRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL210LmpzXCIsXG5cdFwiLi9tdC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXQuanNcIixcblx0XCIuL215XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9teS5qc1wiLFxuXHRcIi4vbXkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL215LmpzXCIsXG5cdFwiLi9uYlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmIuanNcIixcblx0XCIuL25iLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9uYi5qc1wiLFxuXHRcIi4vbmVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25lLmpzXCIsXG5cdFwiLi9uZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmUuanNcIixcblx0XCIuL25sXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubC5qc1wiLFxuXHRcIi4vbmwtYmVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25sLWJlLmpzXCIsXG5cdFwiLi9ubC1iZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmwtYmUuanNcIixcblx0XCIuL25sLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubC5qc1wiLFxuXHRcIi4vbm5cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25uLmpzXCIsXG5cdFwiLi9ubi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbm4uanNcIixcblx0XCIuL29jLWxuY1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvb2MtbG5jLmpzXCIsXG5cdFwiLi9vYy1sbmMuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL29jLWxuYy5qc1wiLFxuXHRcIi4vcGEtaW5cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3BhLWluLmpzXCIsXG5cdFwiLi9wYS1pbi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcGEtaW4uanNcIixcblx0XCIuL3BsXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wbC5qc1wiLFxuXHRcIi4vcGwuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3BsLmpzXCIsXG5cdFwiLi9wdFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcHQuanNcIixcblx0XCIuL3B0LWJyXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wdC1ici5qc1wiLFxuXHRcIi4vcHQtYnIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3B0LWJyLmpzXCIsXG5cdFwiLi9wdC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcHQuanNcIixcblx0XCIuL3JvXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9yby5qc1wiLFxuXHRcIi4vcm8uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3JvLmpzXCIsXG5cdFwiLi9ydVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcnUuanNcIixcblx0XCIuL3J1LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ydS5qc1wiLFxuXHRcIi4vc2RcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NkLmpzXCIsXG5cdFwiLi9zZC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2QuanNcIixcblx0XCIuL3NlXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zZS5qc1wiLFxuXHRcIi4vc2UuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NlLmpzXCIsXG5cdFwiLi9zaVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2kuanNcIixcblx0XCIuL3NpLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zaS5qc1wiLFxuXHRcIi4vc2tcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NrLmpzXCIsXG5cdFwiLi9zay5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2suanNcIixcblx0XCIuL3NsXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zbC5qc1wiLFxuXHRcIi4vc2wuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NsLmpzXCIsXG5cdFwiLi9zcVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3EuanNcIixcblx0XCIuL3NxLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zcS5qc1wiLFxuXHRcIi4vc3JcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NyLmpzXCIsXG5cdFwiLi9zci1jeXJsXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zci1jeXJsLmpzXCIsXG5cdFwiLi9zci1jeXJsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zci1jeXJsLmpzXCIsXG5cdFwiLi9zci5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3IuanNcIixcblx0XCIuL3NzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zcy5qc1wiLFxuXHRcIi4vc3MuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NzLmpzXCIsXG5cdFwiLi9zdlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3YuanNcIixcblx0XCIuL3N2LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zdi5qc1wiLFxuXHRcIi4vc3dcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3N3LmpzXCIsXG5cdFwiLi9zdy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3cuanNcIixcblx0XCIuL3RhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90YS5qc1wiLFxuXHRcIi4vdGEuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RhLmpzXCIsXG5cdFwiLi90ZVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGUuanNcIixcblx0XCIuL3RlLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ZS5qc1wiLFxuXHRcIi4vdGV0XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ZXQuanNcIixcblx0XCIuL3RldC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGV0LmpzXCIsXG5cdFwiLi90Z1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGcuanNcIixcblx0XCIuL3RnLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90Zy5qc1wiLFxuXHRcIi4vdGhcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RoLmpzXCIsXG5cdFwiLi90aC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGguanNcIixcblx0XCIuL3RrXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ay5qc1wiLFxuXHRcIi4vdGsuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RrLmpzXCIsXG5cdFwiLi90bC1waFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGwtcGguanNcIixcblx0XCIuL3RsLXBoLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90bC1waC5qc1wiLFxuXHRcIi4vdGxoXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90bGguanNcIixcblx0XCIuL3RsaC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGxoLmpzXCIsXG5cdFwiLi90clwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHIuanNcIixcblx0XCIuL3RyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ci5qc1wiLFxuXHRcIi4vdHpsXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90emwuanNcIixcblx0XCIuL3R6bC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHpsLmpzXCIsXG5cdFwiLi90em1cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bS5qc1wiLFxuXHRcIi4vdHptLWxhdG5cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bS1sYXRuLmpzXCIsXG5cdFwiLi90em0tbGF0bi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHptLWxhdG4uanNcIixcblx0XCIuL3R6bS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHptLmpzXCIsXG5cdFwiLi91Zy1jblwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdWctY24uanNcIixcblx0XCIuL3VnLWNuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91Zy1jbi5qc1wiLFxuXHRcIi4vdWtcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VrLmpzXCIsXG5cdFwiLi91ay5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdWsuanNcIixcblx0XCIuL3VyXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ci5qc1wiLFxuXHRcIi4vdXIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VyLmpzXCIsXG5cdFwiLi91elwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXouanNcIixcblx0XCIuL3V6LWxhdG5cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3V6LWxhdG4uanNcIixcblx0XCIuL3V6LWxhdG4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3V6LWxhdG4uanNcIixcblx0XCIuL3V6LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ei5qc1wiLFxuXHRcIi4vdmlcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3ZpLmpzXCIsXG5cdFwiLi92aS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdmkuanNcIixcblx0XCIuL3gtcHNldWRvXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS94LXBzZXVkby5qc1wiLFxuXHRcIi4veC1wc2V1ZG8uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3gtcHNldWRvLmpzXCIsXG5cdFwiLi95b1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUveW8uanNcIixcblx0XCIuL3lvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS95by5qc1wiLFxuXHRcIi4vemgtY25cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLWNuLmpzXCIsXG5cdFwiLi96aC1jbi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtY24uanNcIixcblx0XCIuL3poLWhrXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1oay5qc1wiLFxuXHRcIi4vemgtaGsuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLWhrLmpzXCIsXG5cdFwiLi96aC1tb1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtbW8uanNcIixcblx0XCIuL3poLW1vLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1tby5qc1wiLFxuXHRcIi4vemgtdHdcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLXR3LmpzXCIsXG5cdFwiLi96aC10dy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtdHcuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZSBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qJFwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEyLjY2NyAyLjY2NmgtMS4zMzNWMkEuNjY2LjY2NiAwIDEgMCAxMCAydi42NjZINlYyYS42NjcuNjY3IDAgMCAwLTEuMzMzIDB2LjY2NkgzLjMzNGEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmg5LjMzM2EyIDIgMCAwIDAgMi0ydi04YTIgMiAwIDAgMC0yLTJabS42NjcgMTBhLjY2Ni42NjYgMCAwIDEtLjY2Ny42NjdIMy4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ni0uNjY3VjhoMTAuNjY2djQuNjY2Wm0wLTZIMi42Njd2LTJBLjY2Ny42NjcgMCAwIDEgMy4zMzQgNGgxLjMzM3YuNjY2YS42NjcuNjY3IDAgMCAwIDEuMzMzIDBWNGg0di42NjZhLjY2Ny42NjcgMCAxIDAgMS4zMzQgMFY0aDEuMzMzYS42NjcuNjY3IDAgMCAxIC42NjcuNjY2djJaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xNCAxMy4zMzNIMi42NjdWMTJoMmEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0aC0yVjkuMzMzaDQuNjY3YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNIMi42NjdWNi42NjZIMTBhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM0gyLjY2N1Y0aDEwYS42NjcuNjY3IDAgMSAwIDAtMS4zMzRoLTEwVjJhLjY2Ny42NjcgMCAwIDAtMS4zMzMgMHYxMmEuNjY3LjY2NyAwIDAgMCAuNjY2LjY2NmgxMmEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNOCA0YS42NjcuNjY3IDAgMCAwLS42NjcuNjY2djYuNjY3YS42NjcuNjY3IDAgMSAwIDEuMzM0IDBWNC42NjZBLjY2Ny42NjcgMCAwIDAgOCA0Wk00LjY2NyA4QS42NjcuNjY3IDAgMCAwIDQgOC42NjZ2Mi42NjdhLjY2Ny42NjcgMCAxIDAgMS4zMzMgMFY4LjY2NkEuNjY3LjY2NyAwIDAgMCA0LjY2NyA4Wm02LjY2Ny0xLjMzNGEuNjY3LjY2NyAwIDAgMC0uNjY3LjY2N3Y0YS42NjcuNjY3IDAgMCAwIDEuMzMzIDB2LTRhLjY2Ny42NjcgMCAwIDAtLjY2Ni0uNjY3Wm0xLjMzMy01LjMzM0gzLjMzM2EyIDIgMCAwIDAtMiAydjkuMzMzYTIgMiAwIDAgMCAyIDJoOS4zMzRhMiAyIDAgMCAwIDItMlYzLjMzM2EyIDIgMCAwIDAtMi0yWm0uNjY3IDExLjMzM2EuNjY2LjY2NiAwIDAgMS0uNjY3LjY2N0gzLjMzM2EuNjY2LjY2NiAwIDAgMS0uNjY2LS42NjdWMy4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny0uNjY3aDkuMzMzYS42NjcuNjY3IDAgMCAxIC42NjcuNjY3djkuMzMzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNS4zMzQgNy4zMzRoNS4zMzNhLjY2Ny42NjcgMCAwIDAgLjUxMy0uMjQ3LjY2Ni42NjYgMCAwIDAgLjE1NC0uNTUzTDEwLjY2NyAzLjJBLjY2Ny42NjcgMCAwIDAgMTAgMi42NjdINmEuNjY3LjY2NyAwIDAgMC0uNjY2LjUzM2wtLjY2NyAzLjMzNGEuNjY3LjY2NyAwIDAgMCAuMTQuNTUzLjY2Ny42NjcgMCAwIDAgLjUyNy4yNDdaTTYuNTQ3IDRoMi45MDdsLjQgMkg2LjE0N2wuNC0yWm04LjEyIDUuMkEuNjY3LjY2NyAwIDAgMCAxNCA4LjY2N2gtNGEuNjY3LjY2NyAwIDAgMC0uNjY2LjUzM2wtLjY2NyAzLjMzNGEuNjY3LjY2NyAwIDAgMCAuMTQuNTUzLjY2Ni42NjYgMCAwIDAgLjUyNy4yNDdoNS4zMzNhLjY2Ny42NjcgMCAwIDAgLjUxMy0uMjQ3LjY2Ni42NjYgMCAwIDAgLjE1NC0uNTUzTDE0LjY2NyA5LjJabS00LjUyIDIuOC40LTJoMi45MDZsLjQgMmgtMy43MDZaTTYgOC42NjhIMmEuNjY3LjY2NyAwIDAgMC0uNjY2LjUzM2wtLjY2NyAzLjMzNGEuNjY3LjY2NyAwIDAgMCAuMTQuNTUzLjY2Ni42NjYgMCAwIDAgLjUyNy4yNDdoNS4zMzNhLjY2Ny42NjcgMCAwIDAgLjUxMy0uMjQ3LjY2Ni42NjYgMCAwIDAgLjE1NC0uNTUzTDYuNjY3IDkuMkEuNjY3LjY2NyAwIDAgMCA2IDguNjY3Wm0tMy44NTMgMy4zMzQuNC0yaDIuOTA3bC40IDJIMi4xNDdaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk05LjMzNCA1LjMzM0gxMEEuNjY3LjY2NyAwIDAgMCAxMCA0aC0uNjY2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNabTAgMi42NjdIMTBhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNGgtLjY2NmEuNjY3LjY2NyAwIDAgMCAwIDEuMzM0Wk02IDUuMzMzaC42NjdhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM0g2YS42NjcuNjY3IDAgMSAwIDAgMS4zMzNaTTYgOGguNjY3YS42NjcuNjY3IDAgMSAwIDAtMS4zMzRINkEuNjY3LjY2NyAwIDAgMCA2IDhabTggNS4zMzNoLS42NjZWMmEuNjY2LjY2NiAwIDAgMC0uNjY3LS42NjdIMy4zMzNBLjY2Ny42NjcgMCAwIDAgMi42NjcgMnYxMS4zMzNIMmEuNjY2LjY2NiAwIDEgMCAwIDEuMzMzaDEyYS42NjcuNjY3IDAgMCAwIDAtMS4zMzNabS01LjMzMyAwSDcuMzM0di0yLjY2N2gxLjMzM3YyLjY2N1ptMy4zMzMgMGgtMlYxMGEuNjY3LjY2NyAwIDAgMC0uNjY2LS42NjdINi42NjdBLjY2Ny42NjcgMCAwIDAgNiAxMHYzLjMzM0g0VjIuNjY2aDh2MTAuNjY3WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNy4zMzQgNkgxMGEuNjY3LjY2NyAwIDEgMCAwLTEuMzMzSDguNjY3VjRhLjY2Ny42NjcgMCAxIDAtMS4zMzMgMHYuNjY3YTIgMiAwIDAgMCAwIDRoMS4zMzNhLjY2Ny42NjcgMCAwIDEgMCAxLjMzM0g2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRoMS4zMzRWMTJhLjY2Ny42NjcgMCAxIDAgMS4zMzMgMHYtLjY2NmEyIDIgMCAwIDAgMC00SDcuMzM0YS42NjcuNjY3IDAgMCAxIDAtMS4zMzRaTTggLjY2N2E3LjMzMyA3LjMzMyAwIDEgMCAwIDE0LjY2N0E3LjMzMyA3LjMzMyAwIDAgMCA4IC42NjdaTTggMTRBNiA2IDAgMSAxIDggMmE2IDYgMCAwIDEgMCAxMlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEzLjEyIDQuNTg3YTIuOTMzIDIuOTMzIDAgMCAwLTIuMjA2LS4yMTMgMi45MTMgMi45MTMgMCAwIDAtNS44MiAwIDIuOTg3IDIuOTg3IDAgMCAwLTIuMjA3LjE5M0EyLjkxMyAyLjkxMyAwIDAgMCAzLjI5NCA5LjlhMi45MzMgMi45MzMgMCAwIDAtLjUzNCAxLjY2N2MuMDAzLjE2OC4wMTkuMzM1LjA0Ny41YTIuODkzIDIuODkzIDAgMCAwIDIuODYgMi40MmMuMTQyLjAxLjI4NS4wMS40MjcgMEEyLjk0NyAyLjk0NyAwIDAgMCA4IDEzLjMzNGEyLjk0NyAyLjk0NyAwIDAgMCAxLjkwNyAxLjEyNmMuMTQyLjAxLjI4NS4wMS40MjcgMGEyLjkwNyAyLjkwNyAwIDAgMCAyLjM3My00LjU4IDIuOTA3IDIuOTA3IDAgMCAwIC40MTMtNS4zMzN2LjA0Wk02Ljg5NCAzLjI5NGExLjYgMS42IDAgMCAxIDIuMjEzIDAgMS42MiAxLjYyIDAgMCAxIC4zNDcgMS43NzNsLS4xNzQuMzkzLS40NC4zODdBMi43MTMgMi43MTMgMCAwIDAgOCA1LjdjLS4zNyAwLS43MzUuMDc4LTEuMDczLjIyN2wtLjM3My0uODZhMS41OTMgMS41OTMgMCAwIDEgLjM0LTEuNzczWm0tNC4wNjcgNC41NkExLjU4IDEuNTggMCAwIDEgNS4yOTQgNmwuMzI2LjI4Ny4yMzQuNTMzYTIuNjEzIDIuNjEzIDAgMCAwLS41MiAxLjU0NyAxLjkgMS45IDAgMCAwIDAgLjNoLS4zNjdsLS41Ni4wNTNhMS41OCAxLjU4IDAgMCAxLTEuNTgtLjg2NlptNC40IDQuMDUzYTEuNTg3IDEuNTg3IDAgMCAxLTMuMTA3LS4wNTMgMi4wNDcgMi4wNDcgMCAwIDEgMC0uMjggMS41NTMgMS41NTMgMCAwIDEgLjc4LTEuMzM0bC4zNC0uMjQuNjA3LS4wNjZjLjM4Mi41MzIuOTQ3LjkwNCAxLjU4NyAxLjA0NmwtLjIwNy45MjdaTTggOS43YTEuMzMzIDEuMzMzIDAgMSAxIDAtMi42NjZBMS4zMzMgMS4zMzMgMCAwIDEgOCA5LjdabTMuODggMi4xNDdhMS41NzMgMS41NzMgMCAwIDEtMS43ODYgMS4yOTMgMS41OTMgMS41OTMgMCAwIDEtMS4zMzQtMS4yMzNsLS4wOTMtLjQuMTQtLjYxM2EyLjY2NyAyLjY2NyAwIDAgMCAxLjQ2Ny0xLjE3NGwuMzMzLjJoLjA2bC40NC4yNmExLjU4NyAxLjU4NyAwIDAgMSAuNzczIDEuNjY3Wm0xLjI5NC00YTEuNTk0IDEuNTk0IDAgMCAxLTEuNDIuODg3aC0uMTZsLS40MjctLjA2Ny0uNS0uMjczYzAtLjY0OS0uMjM4LTEuMjc0LS42NjctMS43NmwuMjg3LS4yNDcuNDItLjM4N2ExLjU4IDEuNTggMCAwIDEgMi40NjcgMS44OHYtLjAzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEzLjMzNCA1Ljk2YS44OC44OCAwIDAgMC0uMDQtLjE4di0uMDZhLjcxNi43MTYgMCAwIDAtLjEyNy0uMTg3bC00LTRhLjcxMy43MTMgMCAwIDAtLjE4Ny0uMTI3aC0uMDZhLjU4Ny41ODcgMCAwIDAtLjIyLS4wNzNINC42NjdhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAyaDYuNjY3YTIgMiAwIDAgMCAyLTJWNS45NlptLTQtMi4zNTQgMS43MjYgMS43MjdIMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ni0uNjY3di0xLjA2Wk0xMiAxMi42NjZhLjY2Ny42NjcgMCAwIDEtLjY2Ni42NjdINC42NjdBLjY2Ni42NjYgMCAwIDEgNCAxMi42NjZWMy4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny0uNjY3SDh2MmEyIDIgMCAwIDAgMiAyaDJ2NlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEyLjk2IDguNjY2Yy0uMTQ3IDAtLjMtLjA0Ni0uNDQ3LS4wOGE2LjI5IDYuMjkgMCAwIDEtLjg3My0uMjYgMS4zMzMgMS4zMzMgMCAwIDAtMS42NTMuNjY3bC0uMTQ3LjNBOC4xMiA4LjEyIDAgMCAxIDguMDY3IDcuOTZhOC4xMiA4LjEyIDAgMCAxLTEuMzM0LTEuNzc0TDcuMDEzIDZhMS4zMzMgMS4zMzMgMCAwIDAgLjY2Ny0xLjY1NCA2Ljg4NyA2Ljg4NyAwIDAgMS0uMjYtLjg3M2MtLjAzMy0uMTQ3LS4wNi0uMy0uMDgtLjQ1M2EyIDIgMCAwIDAtMi0xLjY2aC0yYTIgMiAwIDAgMC0yIDIuMjczIDEyLjY2NyAxMi42NjcgMCAwIDAgMTEuMDEzIDEwLjk3M2guMjU0YTIgMiAwIDAgMCAxLjgyNy0xLjE4NSAyIDIgMCAwIDAgLjE3My0uODIxdi0yYTIgMiAwIDAgMC0xLjY0Ny0xLjkzNFptLjMzMyA0YS42NjYuNjY2IDAgMCAxLS40ODIuNjQxLjcwNy43MDcgMCAwIDEtLjI5LjAyNkExMS4zMzMgMTEuMzMzIDAgMCAxIDIuNzEyIDMuNDhhLjcyNy43MjcgMCAwIDEgLjE2Ny0uNTQ3LjY2Ny42NjcgMCAwIDEgLjUtLjIyN2gyYS42NjcuNjY3IDAgMCAxIC42NjcuNTI3IDcuNDE0IDcuNDE0IDAgMCAwIC40MDcgMS41NzNsLS45MzQuNDM0YS42NjcuNjY3IDAgMCAwLS4zMjcuODg2IDkuNjYgOS42NiAwIDAgMCA0LjY2NyA0LjY2Ny42NjYuNjY2IDAgMCAwIC41MDcgMCAuNjY1LjY2NSAwIDAgMCAuMzgtLjM0N2wuNDEzLS45MzNjLjM0NS4xMjMuNjk3LjIyNiAxLjA1My4zMDcuMTc4LjA0LjM1OC4wNzMuNTQuMWEuNjY3LjY2NyAwIDAgMSAuNTI3LjY2NmwuMDEzIDIuMDhaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xNC4xNDYgOGEyIDIgMCAwIDAgLjUyLTEuMzMzIDIgMiAwIDAgMC0yLTJIOS4yMTNBMiAyIDAgMCAwIDcuMzMzIDJoLTRhMiAyIDAgMCAwLTIgMiAyIDIgMCAwIDAgLjUyIDEuMzMzIDIgMiAwIDAgMCAwIDIuNjY3IDIgMiAwIDAgMCAwIDIuNjY3QTIgMiAwIDAgMCAxLjMzMyAxMmEyIDIgMCAwIDAgMiAyaDkuMzMzYTIgMiAwIDAgMCAxLjQ4LTMuMzMzIDIgMiAwIDAgMCAwLTIuNjY3Wm0tNi44MTMgNC42NjdoLTRhLjY2Ny42NjcgMCAwIDEgMC0xLjMzNGg0YS42NjcuNjY3IDAgMCAxIDAgMS4zMzRabTAtMi42NjdoLTRhLjY2Ny42NjcgMCAwIDEgMC0xLjMzM2g0YS42NjcuNjY3IDAgMCAxIDAgMS4zMzNabTAtMi42NjdoLTRhLjY2Ny42NjcgMCAxIDEgMC0xLjMzM2g0YS42NjcuNjY3IDAgMCAxIDAgMS4zMzNabTAtMi42NjZoLTRhLjY2Ny42NjcgMCAwIDEgMC0xLjMzNGg0YS42NjcuNjY3IDAgMSAxIDAgMS4zMzRabTUuNzkzIDcuODA2YS42Mi42MiAwIDAgMS0uNDYuMTk0SDkuMjEzYy4xNi0uNDMuMTYtLjkwNCAwLTEuMzM0aDMuNDUzYS42NjcuNjY3IDAgMCAxIC42NjcuNjY3LjY2Ni42NjYgMCAwIDEtLjIwNy40NzNabTAtMi42NjZhLjYyLjYyIDAgMCAxLS40Ni4xOTNIOS4yMTNjLjE2LS40My4xNi0uOTAzIDAtMS4zMzNoMy40NTNhLjY2Ni42NjYgMCAwIDEgLjY2Ny42NjYuNjY2LjY2NiAwIDAgMS0uMjA3LjQ3NFptMC0yLjY2N2EuNjIuNjIgMCAwIDEtLjQ2LjE5M0g5LjIxM2MuMTYtLjQzLjE2LS45MDMgMC0xLjMzM2gzLjQ1M2EuNjY2LjY2NiAwIDAgMSAuNjY3LjY2Ny42NjYuNjY2IDAgMCAxLS4yMDcuNDczWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNOS4zMzMgNS4zMzNIMTBBLjY2Ny42NjcgMCAxIDAgMTAgNGgtLjY2N2EuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWm0wIDIuNjY3SDEwYS42NjcuNjY3IDAgMSAwIDAtMS4zMzRoLS42NjdhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNFpNNiA1LjMzM2guNjY2YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNINmEuNjY3LjY2NyAwIDEgMCAwIDEuMzMzWk02IDhoLjY2NmEuNjY3LjY2NyAwIDEgMCAwLTEuMzM0SDZBLjY2Ny42NjcgMCAwIDAgNiA4Wm04IDUuMzMzaC0uNjY3VjJhLjY2Ni42NjYgMCAwIDAtLjY2Ny0uNjY3SDMuMzMzQS42NjcuNjY3IDAgMCAwIDIuNjY2IDJ2MTEuMzMzSDJhLjY2Ni42NjYgMCAxIDAgMCAxLjMzM2gxMmEuNjY3LjY2NyAwIDEgMCAwLTEuMzMzWm0tNS4zMzQgMEg3LjMzM3YtMi42NjdoMS4zMzN2Mi42NjdabTMuMzM0IDBoLTJWMTBhLjY2Ny42NjcgMCAwIDAtLjY2Ny0uNjY3SDYuNjY2QS42NjcuNjY3IDAgMCAwIDYgMTB2My4zMzNINFYyLjY2Nmg4djEwLjY2N1pcXFwiIGZpbGw9XFxcIiNBNkI1QkFcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMy4zMzQuNjY3SDIuNjY3YTIgMiAwIDAgMC0yIDJ2MTAuNjY3YTIgMiAwIDAgMCAyIDJoMTAuNjY3YTIgMiAwIDAgMCAyLTJWMi42NjdhMiAyIDAgMCAwLTItMlpNNS4zMzQgMTRIMi42NjdBLjY2Ny42NjcgMCAwIDEgMiAxMy4zMzR2LS43ODdhMiAyIDAgMCAwIC42NjcuMTJoMi42NjdWMTRabTAtMi42NjZIMi42NjdBLjY2Ny42NjcgMCAwIDEgMiAxMC42NjdWOS44OGEyIDIgMCAwIDAgLjY2Ny4xMmgyLjY2N3YxLjMzNFptMC0yLjY2N0gyLjY2N0EuNjY3LjY2NyAwIDAgMSAyIDhWMi42NjdBLjY2Ny42NjcgMCAwIDEgMi42NjcgMmgyLjY2N3Y2LjY2N1ptNCA1LjMzM0g2LjY2N3YtNGgyLjY2N3Y0Wm0wLTUuMzMzSDYuNjY3VjJoMi42Njd2Ni42NjdaTTE0IDEzLjMzNGEuNjY3LjY2NyAwIDAgMS0uNjY2LjY2NmgtMi42Njd2LTEuMzMzaDIuNjY3YTIgMiAwIDAgMCAuNjY2LS4xMnYuNzg3Wm0wLTIuNjY3YS42NjcuNjY3IDAgMCAxLS42NjYuNjY3aC0yLjY2N1YxMGgyLjY2N0EyIDIgMCAwIDAgMTQgOS44OHYuNzg3Wk0xNCA4YS42NjcuNjY3IDAgMCAxLS42NjYuNjY3aC0yLjY2N1YyaDIuNjY3YS42NjcuNjY3IDAgMCAxIC42NjYuNjY3VjhabS0yLTMuMzMzYS42NjcuNjY3IDAgMSAwIDAgMS4zMzQuNjY3LjY2NyAwIDAgMCAwLTEuMzM0Wk00IDZhLjY2Ny42NjcgMCAxIDAgMC0xLjMzM0EuNjY3LjY2NyAwIDAgMCA0IDZaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk00IDcuMzMzYS42NjcuNjY3IDAgMSAwIDAgMS4zMzMuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWm04IDBhLjY2Ny42NjcgMCAxIDAgMCAxLjMzNC42NjcuNjY3IDAgMCAwIDAtMS4zMzRabTEuMzM0LTRIMi42NjdhMiAyIDAgMCAwLTIgMnY1LjMzM2EyIDIgMCAwIDAgMiAyaDEwLjY2N2EyIDIgMCAwIDAgMi0yVjUuMzMzYTIgMiAwIDAgMC0yLTJaTTE0IDEwLjY2NmEuNjY3LjY2NyAwIDAgMS0uNjY2LjY2N0gyLjY2N0EuNjY2LjY2NiAwIDAgMSAyIDEwLjY2NlY1LjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LS42NjdoMTAuNjY3YS42NjcuNjY3IDAgMCAxIC42NjYuNjY3djUuMzMzWk04IDZhMiAyIDAgMSAwIDAgNCAyIDIgMCAwIDAgMC00Wm0wIDIuNjY2YS42NjcuNjY3IDAgMSAxIDAtMS4zMzMuNjY3LjY2NyAwIDAgMSAwIDEuMzMzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTEuMzMzIDRhLjY2Ny42NjcgMCAwIDAtLjY2Ny42NjZ2NS4wNkw1LjE0IDQuMTkzYS42Ny42NyAwIDAgMC0uOTQ3Ljk0N2w1LjUzMyA1LjUyNmgtNS4wNmEuNjY3LjY2NyAwIDEgMCAwIDEuMzM0aDYuNjY3YS42NjcuNjY3IDAgMCAwIC42NjctLjY2N1Y0LjY2NkEuNjY2LjY2NiAwIDAgMCAxMS4zMzMgNFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTYgNi42NjZoLjY2N2EuNjY3LjY2NyAwIDAgMCAwLTEuMzMzSDZhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1pNNiA4YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNoNEEuNjY3LjY2NyAwIDAgMCAxMCA4SDZabTcuMzMzLTIuMDRhLjg4Ljg4IDAgMCAwLS4wNC0uMTh2LS4wNmEuNzE0LjcxNCAwIDAgMC0uMTI3LS4xODdsLTQtNGEuNzEzLjcxMyAwIDAgMC0uMTg2LS4xMjcuMjEzLjIxMyAwIDAgMC0uMDYgMCAuNTg3LjU4NyAwIDAgMC0uMjItLjA3M0g0LjY2N2EyIDIgMCAwIDAtMiAydjkuMzMzYTIgMiAwIDAgMCAyIDJoNi42NjZhMiAyIDAgMCAwIDItMlY1Ljk2Wm0tNC0yLjM1NCAxLjcyNyAxLjcyN0gxMGEuNjY3LjY2NyAwIDAgMS0uNjY3LS42Njd2LTEuMDZaTTEyIDEyLjY2NmEuNjY3LjY2NyAwIDAgMS0uNjY3LjY2N0g0LjY2NkEuNjY2LjY2NiAwIDAgMSA0IDEyLjY2NlYzLjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LS42NjdIOHYyYTIgMiAwIDAgMCAyIDJoMnY2Wm0tMi0ySDZBLjY2Ny42NjcgMCAwIDAgNiAxMmg0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIm02LjY2NiAxMS43LTEuMTggMS4xNDdhMS42NSAxLjY1IDAgMCAxLTIuMzMzLTIuMzMzTDYuMTggNy40OGExLjY0IDEuNjQgMCAwIDEgMi4yNi0uMDZsLjA4LjA2N2EuNjY3LjY2NyAwIDAgMCAuOTMzLS45NTMgMS44MzYgMS44MzYgMCAwIDAtLjEyLS4xNCAyLjk3MyAyLjk3MyAwIDAgMC00LjA2LjE0NkwyLjIwNiA5LjU3NGEyLjk4NyAyLjk4NyAwIDAgMCA0LjIyIDQuMjJsMS4xNTQtMS4xMjdhLjY2Ny42NjcgMCAwIDAtLjkxNC0uOTY3Wm03LjEyNy05LjQ5M2EyLjk5MyAyLjk5MyAwIDAgMC00LjIyIDBMOC40MiAzLjMzNGEuNjY3LjY2NyAwIDAgMCAuOTEzLjk2NmwxLjE1My0xLjE0NmExLjY1IDEuNjUgMCAwIDEgMi4zMzQgMi4zMzNMOS43OTMgOC41MmExLjY0IDEuNjQgMCAwIDEtMi4yNi4wNmwtLjA4LS4wNjZhLjY2Ny42NjcgMCAwIDAtLjkzMy45NTMgMi45OCAyLjk4IDAgMCAwIDQuMjEzLS4wMDdsMy4wMzMtMy4wMzNhMi45OTMgMi45OTMgMCAwIDAgLjAyNy00LjIyWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNOS4zMzMgNy4zMzRoLS42NjZ2LS42NjdhLjY2Ny42NjcgMCAxIDAtMS4zMzQgMHYuNjY3aC0uNjY2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNoLjY2NnYuNjY3YS42NjcuNjY3IDAgMCAwIDEuMzM0IDB2LS42NjdoLjY2NmEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWm00LjEwNy00QTQuMTk0IDQuMTk0IDAgMCAwIDggMi45NGE0LjE4IDQuMTggMCAwIDAtNS40NCA2LjMybDQgNC4wMzRhMiAyIDAgMCAwIDIuODI3IDBsNC00LjAzNGE0LjE4IDQuMTggMCAwIDAgLjA1My01LjkyNlptLS45NCA0Ljk3My00IDRhLjY2Ni42NjYgMCAwIDEtLjk0NyAwbC00LTRhMi44NiAyLjg2IDAgMCAxIDAtNCAyLjg0NyAyLjg0NyAwIDAgMSA0IDAgLjY2Ny42NjcgMCAwIDAgLjk0NyAwIDIuODQ3IDIuODQ3IDAgMCAxIDQgMCAyLjg2IDIuODYgMCAwIDEgMCA0LjAxM3YtLjAxM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTMuMzMzIDUuMzMzaDkuMzM0YS42NjcuNjY3IDAgMSAwIDAtMS4zMzNIMy4zMzNhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptMTAuNjY3IDJIMmEuNjY3LjY2NyAwIDEgMCAwIDEuMzM0aDEyYS42NjcuNjY3IDAgMCAwIDAtMS4zMzRabS0xLjMzMyAzLjMzNEgzLjMzM2EuNjY3LjY2NyAwIDEgMCAwIDEuMzMzaDkuMzM0YS42NjYuNjY2IDAgMSAwIDAtMS4zMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMC42NjcgOS4zMzNINS4zMzNhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM2g1LjMzNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWm0wLTIuNjY3aC00YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0Wm0yLjY2Ni00aC0yVjJBLjY2Ny42NjcgMCAxIDAgMTAgMnYuNjY2SDguNjY3VjJhLjY2Ny42NjcgMCAxIDAtMS4zMzQgMHYuNjY2SDZWMmEuNjY3LjY2NyAwIDAgMC0xLjMzMyAwdi42NjZoLTJBLjY2Ny42NjcgMCAwIDAgMiAzLjMzM3Y5LjMzM2EyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYzLjMzM2EuNjY2LjY2NiAwIDAgMC0uNjY3LS42NjdabS0uNjY2IDEwYS42NjcuNjY3IDAgMCAxLS42NjcuNjY3SDRhLjY2Ni42NjYgMCAwIDEtLjY2Ny0uNjY3VjRoMS4zMzR2LjY2NmEuNjY3LjY2NyAwIDEgMCAxLjMzMyAwVjRoMS4zMzN2LjY2NmEuNjY3LjY2NyAwIDAgMCAxLjMzNCAwVjRIMTB2LjY2NmEuNjY2LjY2NiAwIDEgMCAxLjMzMyAwVjRoMS4zMzR2OC42NjZaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMy4wODcgMi40MzNhLjY2Ny42NjcgMCAwIDAtLjU2LS4xMzMgNS4zMzMgNS4zMzMgMCAwIDEtNC4xNDctLjg0Ny42NjcuNjY3IDAgMCAwLS43NiAwIDUuMzMzIDUuMzMzIDAgMCAxLTQuMTQ2Ljg0Ny42NjcuNjY3IDAgMCAwLS44MDcuNjUzVjcuOTJhNiA2IDAgMCAwIDIuNTEzIDQuODg2bDIuNDM0IDEuNzM0YS42NjcuNjY3IDAgMCAwIC43NzMgMGwyLjQzMy0xLjczNGE2IDYgMCAwIDAgMi41MTQtNC44ODZWMi45NTNhLjY2Ny42NjcgMCAwIDAtLjI0Ny0uNTJaTTEyIDcuOTJhNC42NjYgNC42NjYgMCAwIDEtMS45NTMgMy44TDggMTMuMThsLTIuMDQ2LTEuNDZBNC42NjcgNC42NjcgMCAwIDEgNCA3Ljkydi00LjJhNi42NjcgNi42NjcgMCAwIDAgNC0uOTI3IDYuNjY3IDYuNjY3IDAgMCAwIDQgLjkyN3Y0LjJaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk03LjMzMyA3LjkzM3YzLjRhLjY2Ny42NjcgMCAxIDAgMS4zMzQgMHYtMy40YTMuMzMzIDMuMzMzIDAgMSAwLTEuMzM0IDBaTTggMi42NjdhMiAyIDAgMSAxIDAgNCAyIDIgMCAwIDEgMC00Wm0yLjgwNyA2Ljk0NmEuNjgxLjY4MSAwIDAgMC0uMjggMS4zMzRjMS41MTMuMyAyLjE0Ljg0IDIuMTQgMS4wNTMgMCAuMzg3LTEuNjM0IDEuMzMzLTQuNjY3IDEuMzMzUzMuMzMzIDEyLjM4NyAzLjMzMyAxMmMwLS4yMTMuNjI3LS43NTMgMi4xNC0xLjA4YS42ODEuNjgxIDAgMCAwLS4yOC0xLjMzM0MzLjE2NyAxMC4wNTMgMiAxMC45MjcgMiAxMmMwIDEuNzUzIDMuMDIgMi42NjcgNiAyLjY2N3M2LS45MTQgNi0yLjY2N2MwLTEuMDczLTEuMTY3LTEuOTQ3LTMuMTkzLTIuMzg3WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMiAzLjMzM2gxMmMuNCAwIC42NjctLjI2Ni42NjctLjY2NlMxNC40IDIgMTQgMkgyYy0uNCAwLS42NjcuMjY3LS42NjcuNjY3cy4yNjcuNjY2LjY2Ny42NjZabTEyIDkuMzM0SDcuMzMzYy0uNCAwLS42NjYuMjY2LS42NjYuNjY2cy4yNjcuNjY3LjY2Ny42NjdIMTRjLjQgMCAuNjY3LS4yNjcuNjY3LS42NjdzLS4yNjctLjY2Ni0uNjY3LS42NjZabTAtNS4zMzRIMmMtLjQgMC0uNjY3LjI2Ny0uNjY3LjY2N3MuMjY3LjY2Ny42NjcuNjY3aDEyYy40IDAgLjY2Ny0uMjY3LjY2Ny0uNjY3UzE0LjQgNy4zMzMgMTQgNy4zMzNaTTE0IDEwSDJjLS40IDAtLjY2Ny4yNjctLjY2Ny42NjdzLjI2Ny42NjYuNjY3LjY2NmgxMmMuNCAwIC42NjctLjI2Ni42NjctLjY2NlMxNC40IDEwIDE0IDEwWm0wLTUuMzMzSDJjLS40IDAtLjY2Ny4yNjYtLjY2Ny42NjZTMS42IDYgMiA2aDEyYy40IDAgLjY2Ny0uMjY3LjY2Ny0uNjY3UzE0LjQgNC42NjcgMTQgNC42NjdaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIm0xMy4zMzMgNS4zMzMtNC0zLjUwNmEyIDIgMCAwIDAtMi42NjYgMGwtNCAzLjUwNkEyIDIgMCAwIDAgMiA2Ljg0djUuODI3YTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjYuODMzYTIgMiAwIDAgMC0uNjY3LTEuNVptLTQgOEg2LjY2N1YxMGEuNjY3LjY2NyAwIDAgMSAuNjY2LS42NjdoMS4zMzRhLjY2Ny42NjcgMCAwIDEgLjY2Ni42Njd2My4zMzNabTMuMzM0LS42NjZhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjZoLTEuMzMzVjEwYTIgMiAwIDAgMC0yLTJINy4zMzNhMiAyIDAgMCAwLTIgMnYzLjMzM0g0YS42NjcuNjY3IDAgMCAxLS42NjctLjY2NlY2LjgzM2EuNjY3LjY2NyAwIDAgMSAuMjI3LS41bDQtMy41YS42NjcuNjY3IDAgMCAxIC44OCAwbDQgMy41YS42NjcuNjY3IDAgMCAxIC4yMjcuNXY1LjgzNFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEwLjY2NyA5LjMzM0g1LjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaDUuMzM0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNabTAtMi42NjdoLTRhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNGg0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRabTIuNjY2LTRoLTJWMkEuNjY3LjY2NyAwIDEgMCAxMCAydi42NjZIOC42NjdWMmEuNjY3LjY2NyAwIDEgMC0xLjMzNCAwdi42NjZINlYyYS42NjcuNjY3IDAgMCAwLTEuMzMzIDB2LjY2NmgtMkEuNjY3LjY2NyAwIDAgMCAyIDMuMzMzdjkuMzMzYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjMuMzMzYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N1ptLS42NjYgMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjdINGEuNjY2LjY2NiAwIDAgMS0uNjY3LS42NjdWNGgxLjMzNHYuNjY2YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWNGgxLjMzM3YuNjY2YS42NjcuNjY3IDAgMCAwIDEuMzM0IDBWNEgxMHYuNjY2YS42NjYuNjY2IDAgMSAwIDEuMzMzIDBWNGgxLjMzNHY4LjY2NlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTggOC41YTIgMiAwIDEgMCAwIDQgMiAyIDAgMCAwIDAtNFptMCAyLjY2NmEuNjY3LjY2NyAwIDEgMSAwLTEuMzM0LjY2Ny42NjcgMCAwIDEgMCAxLjMzNFptLS40NzMtNC4xOTNjLjA2My4wNi4xMzguMTA4LjIyLjE0YS42MjcuNjI3IDAgMCAwIC41MDcgMCAuNjY3LjY2NyAwIDAgMCAuMjItLjE0TDEwIDUuNDczYS42ODguNjg4IDAgMSAwLS45NzMtLjk3M2wtLjM2LjM5M1YyLjVhLjY2Ny42NjcgMCAwIDAtMS4zMzMgMHYyLjM5M2wtLjM2LS4zOTNBLjY4OC42ODggMCAwIDAgNiA1LjQ3M2wxLjUyNyAxLjVabTUuMTQgMy41MjdhLjY2Ni42NjYgMCAxIDAtMS4zMzIgMCAuNjY2LjY2NiAwIDAgMCAxLjMzMiAwWm0uNjY3LTQuNjY3aC0yYS42NjYuNjY2IDAgMSAwIDAgMS4zMzNoMmEuNjY3LjY2NyAwIDAgMSAuNjY2LjY2N3Y1LjMzM2EuNjY3LjY2NyAwIDAgMS0uNjY2LjY2N0gyLjY2N0EuNjY2LjY2NiAwIDAgMSAyIDEzLjE2NlY3LjgzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LS42NjdoMmEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzaC0yYTIgMiAwIDAgMC0yIDJ2NS4zMzNhMiAyIDAgMCAwIDIgMmgxMC42NjdhMiAyIDAgMCAwIDItMlY3LjgzM2EyIDIgMCAwIDAtMi0yWm0tMTAgNC42NjdhLjY2Ny42NjcgMCAxIDAgMS4zMzQgMCAuNjY3LjY2NyAwIDAgMC0xLjMzNCAwWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNiA2LjY2NmguNjY3YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNINmEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWk0xMCA4SDZhLjY2Ny42NjcgMCAxIDAgMCAxLjMzM2g0QS42NjcuNjY3IDAgMSAwIDEwIDhabTAgMi42NjZINkEuNjY3LjY2NyAwIDAgMCA2IDEyaDRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFptMy4xNCAyLjg2YTEuMDg1IDEuMDg1IDAgMCAwLS4xLS4wOC41MDcuNTA3IDAgMCAwLS4xMi0uMDZsLS4xMi0uMDUzYS42NjcuNjY3IDAgMCAwLS4zODYuMDQuNTk5LjU5OSAwIDAgMC0uMzYuMzZBLjU2LjU2IDAgMCAwIDEyIDE0YS42NjguNjY4IDAgMSAwIDEuMjgtLjI1NC43NjYuNzY2IDAgMCAwLS4xNC0uMjJabS4xOTQtNy41NjZhLjg4Ljg4IDAgMCAwLS4wNC0uMTh2LS4wNmEuNzE2LjcxNiAwIDAgMC0uMTI3LS4xODdsLTQtNGEuNzEzLjcxMyAwIDAgMC0uMTg3LS4xMjcuMjEzLjIxMyAwIDAgMC0uMDYgMCAuNTg3LjU4NyAwIDAgMC0uMjItLjA3M0g0LjY2N2EyIDIgMCAwIDAtMiAydjkuMzMzYTIgMiAwIDAgMCAyIDJIMTBhLjY2Ny42NjcgMCAxIDAgMC0xLjMzM0g0LjY2N0EuNjY2LjY2NiAwIDAgMSA0IDEyLjY2NlYzLjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LS42NjdIOHYyYTIgMiAwIDAgMCAyIDJoMlY4YS42NjcuNjY3IDAgMCAwIDEuMzM0IDBWNS45NlpNMTAgNS4zMzNhLjY2Ny42NjcgMCAwIDEtLjY2Ni0uNjY3di0xLjA2bDEuNzI2IDEuNzI3SDEwWk0xMi42NjcgMTBhLjY2Ny42NjcgMCAwIDAtLjY2Ny42NjZWMTJhLjY2Ny42NjcgMCAwIDAgMS4zMzQgMHYtMS4zMzRhLjY2Ny42NjcgMCAwIDAtLjY2Ny0uNjY2WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJtMTQuMjEzIDMuMzY3LTQtMS4zMzNoLS4wNDZhLjQ2Ni40NjYgMCAwIDAtLjA5NCAwaC0uMjg2TDYgMy4zMzRsLTMuNzg3LTEuM2EuNjY3LjY2NyAwIDAgMC0uNi4wOTMuNjY3LjY2NyAwIDAgMC0uMjguNTRWMTJhLjY2Ni42NjYgMCAwIDAgLjQ1NC42MzNsNCAxLjMzNGEuNjY3LjY2NyAwIDAgMCAuNDEzIDBMMTAgMTIuN2wzLjc4NyAxLjNjLjA3LjAxLjE0Mi4wMS4yMTMgMGEuNjI2LjYyNiAwIDAgMCAuMzg3LS4xMjcuNjY2LjY2NiAwIDAgMCAuMjgtLjU0VjRhLjY2Ny42NjcgMCAwIDAtLjQ1NC0uNjMzWm0tOC44OCA5LjA0LTIuNjY2LS44ODdWMy41OTRsMi42NjcuODg2djcuOTI3Wm00LS44ODctMi42NjYuODg3VjQuNDhsMi42NjctLjg4NnY3LjkyNlptNCAuODg3LTIuNjY2LS44ODdWMy41OTRsMi42NjcuODg2djcuOTI3WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTMuNjQgNi40MmE1LjY2NiA1LjY2NiAwIDAgMC04Ljc3My00LjE4QTUuNzA3IDUuNzA3IDAgMCAwIDIuMzYgNi40MiA1LjY0IDUuNjQgMCAwIDAgNCAxMC45NzNsMy41MzMgMy41NGEuNjY2LjY2NiAwIDAgMCAuOTQ3IDBsMy41Mi0zLjU0YTUuNjM4IDUuNjM4IDAgMCAwIDEuNjQtNC41NTNabS0yLjU3MyAzLjYxM0w4IDEzLjFsLTMuMDY3LTMuMDY3YTQuMzI3IDQuMzI3IDAgMCAxLTEuMjQ2LTMuNDggNC4zOCA0LjM4IDAgMCAxIDEuOTI2LTMuMjJBNC4zMTMgNC4zMTMgMCAwIDEgMTEuNzEgNC43MmMuMzM0LjU1NS41NCAxLjE3Ni42MDQgMS44MmE0LjMyNiA0LjMyNiAwIDAgMS0xLjI0NiAzLjQ5M1pNOCA0YTMgMyAwIDEgMCAzIDMgMy4wMDcgMy4wMDcgMCAwIDAtMy0zWm0wIDQuNjY2YTEuNjY3IDEuNjY3IDAgMSAxIDAtMy4zMzMgMS42NjcgMS42NjcgMCAwIDEgMCAzLjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTQuNjY3IDEwLjY2NmExIDEgMCAwIDAgMS0xIC41MTQuNTE0IDAgMCAwIDAtLjFsMS44Ni0xLjg2aC4zMDZMOC45MDcgOC43OHYuMDUzYTEgMSAwIDEgMCAyIDBWOC43OGwyLjQyNi0yLjQ0N2ExIDEgMCAxIDAtMS0xIC41MjIuNTIyIDAgMCAwIDAgLjFMOS45MjcgNy44NEg5LjgyTDguNjY3IDYuNjY2YTEgMSAwIDAgMC0yIDBsLTIgMmExIDEgMCAwIDAgMCAyWm05IDIuNjY3SDIuMzMzVjJBLjY2Ny42NjcgMCAxIDAgMSAydjEyYS42NjcuNjY3IDAgMCAwIC42NjcuNjY2aDEyYS42NjcuNjY3IDAgMCAwIDAtMS4zMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTIgMTVcXFwiPjxwYXRoIGQ9XFxcIm02LjE0IDEwLjc0Mi4wMi4wNTguMDA3LjAxdi4wMzZhLjA2LjA2IDAgMCAxLS4wMDYuMDI3bC0uMDEuMDIyLS4wMDguMDIxYS4xLjEgMCAwIDEtLjA2LjA2bC0uMDIyLjAwOC0uMDIxLjAxYS4wNi4wNiAwIDAgMS0uMDI3LjAwNmgtLjAwNmEuMTY2LjE2NiAwIDAgMS0uMTA2LS4wNC4yNjYuMjY2IDAgMCAxLS4wNC0uMDY2bC0uMDA0LS4wMS0uMDA1LS4wMWEuMDYuMDYgMCAwIDEtLjAwNS0uMDI4di0uMDIzbC0uMDAxLS4wMjMtLjAwMS0uMDE4LjAwMy0uMDA3LjAxMi0uMDMzYS41NzYuNTc2IDAgMCAxIC4wMjMtLjAzLjE2Ni4xNjYgMCAwIDEgLjA0NC0uMDI2bC4wMTQtLjAwNWEuMTY3LjE2NyAwIDAgMSAuMDk2LS4wMWwuMDk0LS40OTEtLjA5NC40OWEuMTY2LjE2NiAwIDAgMSAuMDc3LjAzOGMuMDA5LjAxLjAxOC4wMjIuMDI2LjAzNFptLjY5My05LjMzNSAzLjk2MyAzLjk2My4wMjMuMDdhLjM3LjM3IDAgMCAxIC4wMTQuMDU0djYuNjczYTEuNSAxLjUgMCAwIDEtMS41IDEuNUgyLjY2N2ExLjUgMS41IDAgMCAxLTEuMDYxLS40NGwtLjM0OC4zNDguMzQ4LS4zNDhhMS41IDEuNSAwIDAgMS0uNDQtMS4wNlYyLjgzM2ExLjUgMS41IDAgMCAxIDEuNS0xLjVoMy45OWwuMDE1LjAwNy4xMTYuMDY3aC4wNDZabS44NTQgMS4zNDZMNi44MzMgMS45djIuMjY3QTEuMTY3IDEuMTY3IDAgMCAwIDggNS4zMzNoMi4yNjdsLS44NTMtLjg1My0xLjcyNy0xLjcyN1pNNi41IDIuMTY3di0uNUgyLjY2N0ExLjE2NyAxLjE2NyAwIDAgMCAxLjUgMi44MzN2OS4zMzRhMS4xNjcgMS4xNjcgMCAwIDAgMS4xNjcgMS4xNjZoNi42NjZhMS4xNjcgMS4xNjcgMCAwIDAgMS4xNjctMS4xNjZ2LTYuNUg4YTEuNSAxLjUgMCAwIDEtMS41LTEuNXYtMlptLS42MTggNS4yMTVhLjE2Ny4xNjcgMCAwIDEgLjI4NS4xMTh2MS4zMzNhLjE2Ny4xNjcgMCAwIDEtLjMzNCAwVjcuNWMwLS4wNDQuMDE4LS4wODcuMDUtLjExOFpcXFwiIGZpbGw9XFxcIkN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJDdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMy4wODcgMi40MzNhLjY2Ny42NjcgMCAwIDAtLjU2LS4xMzMgNS4zMzMgNS4zMzMgMCAwIDEtNC4xNDctLjg0Ny42NjcuNjY3IDAgMCAwLS43NiAwIDUuMzMzIDUuMzMzIDAgMCAxLTQuMTQ2Ljg0Ny42NjcuNjY3IDAgMCAwLS44MDcuNjUzVjcuOTJhNiA2IDAgMCAwIDIuNTEzIDQuODg2bDIuNDM0IDEuNzM0YS42NjcuNjY3IDAgMCAwIC43NzMgMGwyLjQzMy0xLjczNGE2IDYgMCAwIDAgMi41MTQtNC44ODZWMi45NTNhLjY2Ny42NjcgMCAwIDAtLjI0Ny0uNTJaTTEyIDcuOTJhNC42NjYgNC42NjYgMCAwIDEtMS45NTMgMy44TDggMTMuMThsLTIuMDQ2LTEuNDZBNC42NjcgNC42NjcgMCAwIDEgNCA3Ljkydi00LjJhNi42NjcgNi42NjcgMCAwIDAgNC0uOTI3IDYuNjY3IDYuNjY3IDAgMCAwIDQgLjkyN3Y0LjJaTTkuMDI3IDYuMzkzbC0xLjc5MyAxLjgtLjU5NC0uNmEuNjcuNjcgMCAwIDAtLjk0Ni45NDdMNi43NiA5LjYwNmEuNjY3LjY2NyAwIDAgMCAuOTQ3IDBMMTAgNy4zMzNhLjY3LjY3IDAgMSAwLS45NDYtLjk0N2wtLjAyNy4wMDdaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDIwIDIwXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0zLjYzNCAxNy45YS41LjUgMCAwIDEtLjUyNC4wNDdsLS4xNDkuMjk3LjE0OS0uMjk3YS41LjUgMCAwIDEtLjIwMi0uMTg0bC0uMjgzLjE3NC4yODMtLjE3NGEuNS41IDAgMCAxLS4wNzUtLjI2M3YtMTVhLjUuNSAwIDAgMSAuNS0uNWgxMy4zMzRhLjUuNSAwIDAgMSAuNS41djE0Ljk5OWEuNS41IDAgMCAxLS4yNzUuNDQ1aC0uMDAxYS41LjUgMCAwIDEtLjUyNS0uMDQ1bC0xLjcyNC0xLjI5LS4yLS4xNS0uMi4xNS0xLjcxNyAxLjI5MWEuNS41IDAgMCAxLS42IDBMMTAuMiAxNi42MDhsLS4yLS4xNS0uMi4xNUw4LjA3NSAxNy45YS41LjUgMCAwIDEtLjYgMGwtMS43MTYtMS4yOTEtLjItLjE1LS4yLjE1LTEuNzI1IDEuMjlabTEyLTEuOC41MzMuMzk5VjNIMy44MzN2MTMuNDk5bC41MzMtLjM5OS44OTItLjY2NmEuNS41IDAgMCAxIC42IDBsMS43MTcgMS4yOS4yLjE1MS4yLS4xNUw5LjcgMTUuNDMzYS41LjUgMCAwIDEgLjYgMGwxLjcyNSAxLjI5Mi4yLjE1LjItLjE1IDEuNzE3LTEuMjkyYS41LjUgMCAwIDEgLjYgMGwuODkyLjY2N1ptLTIuMy05Ljc2N2gtNWEuNS41IDAgMCAxIDAtMWg1YS41LjUgMCAwIDEgMCAxWm0wIDMuMzM0SDYuNjY2YS41LjUgMCAwIDEgMC0xaDYuNjY2YS41LjUgMCAwIDEgMCAxWm0wIDMuMzMzSDYuNjY2YS41LjUgMCAwIDEgMC0xaDYuNjY2YS41LjUgMCAxIDEgMCAxWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNOCA3LjJhMS4zMzMgMS4zMzMgMCAxIDAgMC0yLjY2N0ExLjMzMyAxLjMzMyAwIDAgMCA4IDcuMlptLS40NzMgNC42MDZhLjY2Ni42NjYgMCAwIDAgLjk0NiAwTDExLjIgOS4wNzNhNC41MjcgNC41MjcgMCAxIDAtNi40IDBsMi43MjcgMi43MzNaTTQuODIgNS41NmEzLjIwNyAzLjIwNyAwIDAgMSAxLjQyLTIuMzY3IDMuMjA3IDMuMjA3IDAgMCAxIDMuNTIgMCAzLjIxMyAzLjIxMyAwIDAgMSAuNSA0Ljk0TDggMTAuMzkzbC0yLjI2LTIuMjZhMy4xOCAzLjE4IDAgMCAxLS45Mi0yLjU3M1ptNy44NDYgNy43NzNIMy4zMzNhLjY2Ny42NjcgMCAxIDAgMCAxLjMzM2g5LjMzNGEuNjY2LjY2NiAwIDEgMCAwLTEuMzMzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNC42NjYgNGEuNjY3LjY2NyAwIDEgMCAwIDEuMzMzLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptOS44MDcgMy44NTMtNi4zMi02LjMwN2EuNjY3LjY2NyAwIDAgMC0uNDg3LS4yMTNoLTRhLjY2Ny42NjcgMCAwIDAtLjQ3My4xOTNsLTEuNjY3IDEuNjZhLjY2Ny42NjcgMCAwIDAtLjE5My40NzR2NGEuNy43IDAgMCAwIC4xOTMuNDczbDYuMzI3IDYuMzMzYS43LjcgMCAwIDAgLjQ3My4xOTQuNjY2LjY2NiAwIDAgMCAuNDc0LS4xOTRsNS42NzMtNS42NzNhLjY2Ny42NjcgMCAwIDAgMC0uOTRaTTguMzI2IDEzLjA2bC01LjY2LTUuNjY3di0zLjQ2bDEuMjY3LTEuMjY3aDMuNDUzbDUuNjY3IDUuNjYtNC43MjcgNC43MzRaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMC42NjcgOS4zMzNINS4zMzNhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM2g1LjMzNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWm0wLTIuNjY3aC00YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0Wm0yLjY2Ni00aC0yVjJBLjY2Ny42NjcgMCAxIDAgMTAgMnYuNjY2SDguNjY3VjJhLjY2Ny42NjcgMCAxIDAtMS4zMzQgMHYuNjY2SDZWMmEuNjY3LjY2NyAwIDAgMC0xLjMzMyAwdi42NjZoLTJBLjY2Ny42NjcgMCAwIDAgMiAzLjMzM3Y5LjMzM2EyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYzLjMzM2EuNjY2LjY2NiAwIDAgMC0uNjY3LS42NjdabS0uNjY2IDEwYS42NjcuNjY3IDAgMCAxLS42NjcuNjY3SDRhLjY2Ni42NjYgMCAwIDEtLjY2Ny0uNjY3VjRoMS4zMzR2LjY2NmEuNjY3LjY2NyAwIDEgMCAxLjMzMyAwVjRoMS4zMzN2LjY2NmEuNjY3LjY2NyAwIDAgMCAxLjMzNCAwVjRIMTB2LjY2NmEuNjY2LjY2NiAwIDEgMCAxLjMzMyAwVjRoMS4zMzR2OC42NjZaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk02LjY2NyA1LjMzM2g0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNoLTRhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1pNNS4zMzMgOGg1LjMzNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0SDUuMzMzYS42NjcuNjY3IDAgMCAwIDAgMS4zMzRabTAgMi42NjZoNS4zMzRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM0g1LjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWm04LTkuMzMzSDIuNjY3QS42NjcuNjY3IDAgMCAwIDIgMnYxMmEuNjY3LjY2NyAwIDAgMCAxLjA2Ny41MzNsMS4zOC0xLjAzMyAxLjM3MyAxLjAzM2EuNjY2LjY2NiAwIDAgMCAuOCAwTDggMTMuNWwxLjM4IDEuMDMzYS42NjYuNjY2IDAgMCAwIC44IDBsMS4zNzMtMS4wMzMgMS4zOCAxLjAzM0EuNjY3LjY2NyAwIDAgMCAxNCAxNFYyYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N1ptLS42NjYgMTEuMzMzLS43MTQtLjUzM2EuNjY3LjY2NyAwIDAgMC0uOCAwTDkuNzggMTMuMTY2IDguNCAxMi4xMzNhLjY2Ny42NjcgMCAwIDAtLjggMGwtMS4zOCAxLjAzMy0xLjM3My0xLjAzM2EuNjY3LjY2NyAwIDAgMC0uOCAwbC0uNzE0LjUzM3YtMTBoOS4zMzR2MTBaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE4IDE4XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxyZWN0IHdpZHRoPVxcXCIxOFxcXCIgaGVpZ2h0PVxcXCIxOFxcXCIgcng9XFxcIjlcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjxwYXRoIGQ9XFxcIk0yIDlhNyA3IDAgMSAxIDE0IDBBNyA3IDAgMSAxIDIgOVpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjxwYXRoIGQ9XFxcIk0xMy4wODMgOC40MTZoLTMuNXYtMy41YS41ODMuNTgzIDAgMCAwLTEuMTY3IDB2My41aC0zLjVhLjU4My41ODMgMCAwIDAgMCAxLjE2N2gzLjV2My41YS41ODMuNTgzIDAgMCAwIDEuMTY3IDB2LTMuNWgzLjVhLjU4My41ODMgMCAwIDAgMC0xLjE2N1pcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE3IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMi45MzUgNy4zMzNoLTR2LTRhLjY2Ny42NjcgMCAxIDAtMS4zMzMgMHY0aC00YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRoNHY0YS42NjcuNjY3IDAgMSAwIDEuMzM0IDB2LTRoNGEuNjY3LjY2NyAwIDEgMCAwLTEuMzM0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAyMCAyMFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTAgNWExIDEgMCAwIDAtMSAxdjRhMSAxIDAgMSAwIDIgMFY2YTEgMSAwIDAgMC0xLTFabS45MiA4LjYyYS43NTguNzU4IDAgMCAwLS4wOS0uMThsLS4xMi0uMTVhLjk5OS45OTkgMCAwIDAtMS4wOS0uMjEgMS4xNSAxLjE1IDAgMCAwLS4zMy4yMSAxIDEgMCAwIDAtLjIxIDEuMDkuOS45IDAgMCAwIC41NC41NC45NC45NCAwIDAgMCAuNzYgMCAuOS45IDAgMCAwIC41NC0uNTRjLjA1MS0uMTIuMDc4LS4yNS4wOC0uMzhhMS4zNjIgMS4zNjIgMCAwIDAgMC0uMi42MzkuNjM5IDAgMCAwLS4wOC0uMThaTTEwIDBhMTAgMTAgMCAxIDAgMCAyMCAxMCAxMCAwIDAgMCAwLTIwWm0wIDE4YTggOCAwIDEgMSAwLTE2IDggOCAwIDAgMSAwIDE2WlxcXCIgZmlsbD1cXFwiI0Y2QzM5OFxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMjEgMjBcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEwLjQ2NCAxLjY2N0M1Ljg4IDEuNjY3IDIuMTMgNS40MTcgMi4xMyAxMGMwIDQuNTg0IDMuNzUgOC4zMzQgOC4zMzMgOC4zMzRzOC4zMzMtMy43NSA4LjMzMy04LjMzNGMwLTQuNTgzLTMuNzUtOC4zMzMtOC4zMzMtOC4zMzNabTAgMTIuNWMtLjUgMC0uODMzLS4zMzMtLjgzMy0uODMzIDAtLjUuMzMzLS44MzQuODMzLS44MzQuNSAwIC44MzMuMzM0LjgzMy44MzQgMCAuNS0uMzMzLjgzMy0uODMzLjgzM1pNMTEuMjk3IDEwYzAgLjUtLjMzMy44MzQtLjgzMy44MzQtLjUgMC0uODMzLS4zMzQtLjgzMy0uODM0VjYuNjY3YzAtLjUuMzMzLS44MzMuODMzLS44MzMuNSAwIC44MzMuMzMzLjgzMy44MzNWMTBaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0zLjMzMyA1LjMzM2g5LjMzNGEuNjY3LjY2NyAwIDEgMCAwLTEuMzMzSDMuMzMzYS42NjcuNjY3IDAgMCAwIDAgMS4zMzNabTEwLjY2NyAySDJhLjY2Ny42NjcgMCAxIDAgMCAxLjMzNGgxMmEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0Wm0tMS4zMzMgMy4zMzRIMy4zMzNhLjY2Ny42NjcgMCAxIDAgMCAxLjMzM2g5LjMzNGEuNjY2LjY2NiAwIDEgMCAwLTEuMzMzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMiAzLjMzM2gxMmMuNCAwIC42NjctLjI2Ni42NjctLjY2NlMxNC40IDIgMTQgMkgyYy0uNCAwLS42NjcuMjY3LS42NjcuNjY3cy4yNjcuNjY2LjY2Ny42NjZabTEyIDkuMzM0SDcuMzMzYy0uNCAwLS42NjYuMjY2LS42NjYuNjY2cy4yNjcuNjY3LjY2Ny42NjdIMTRjLjQgMCAuNjY3LS4yNjcuNjY3LS42NjdzLS4yNjctLjY2Ni0uNjY3LS42NjZabTAtNS4zMzRIMmMtLjQgMC0uNjY3LjI2Ny0uNjY3LjY2N3MuMjY3LjY2Ny42NjcuNjY3aDEyYy40IDAgLjY2Ny0uMjY3LjY2Ny0uNjY3UzE0LjQgNy4zMzMgMTQgNy4zMzNaTTE0IDEwSDJjLS40IDAtLjY2Ny4yNjctLjY2Ny42NjdzLjI2Ny42NjYuNjY3LjY2NmgxMmMuNCAwIC42NjctLjI2Ni42NjctLjY2NlMxNC40IDEwIDE0IDEwWm0wLTUuMzMzSDJjLS40IDAtLjY2Ny4yNjYtLjY2Ny42NjZTMS42IDYgMiA2aDEyYy40IDAgLjY2Ny0uMjY3LjY2Ny0uNjY3UzE0LjQgNC42NjcgMTQgNC42NjdaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgZD1cXFwibTkuNTI3IDkuNDYtMi4xOTQgMi4xOTQtLjg2LS44NmEuNjY4LjY2OCAwIDEgMC0uOTQ2Ljk0bDEuMzMzIDEuMzMzYS42NjYuNjY2IDAgMCAwIC45NDcgMGwyLjY2Ni0yLjY2N2EuNjY3LjY2NyAwIDEgMC0uOTQ2LS45NFptMi43NTMtMy45MTNhNC42NjcgNC42NjcgMCAwIDAtOC45MDcgMS4yNjcgMi42NjcgMi42NjcgMCAwIDAtLjI1MyA1LjEuNjY4LjY2OCAwIDEgMCAuNDI3LTEuMjQ3IDEuMzMzIDEuMzMzIDAgMCAxLS44OC0xLjI2N0ExLjMzMyAxLjMzMyAwIDAgMSA0IDguMDY3YS42NjcuNjY3IDAgMCAwIC42NjctLjY2NyAzLjMzMyAzLjMzMyAwIDAgMSA2LjQ4Ni0xLjA2Ni42NjguNjY4IDAgMCAwIC41Mi40NCAyIDIgMCAwIDEgLjE2IDMuODkzQS42NzIuNjcyIDAgMSAwIDEyIDEyaC4xNjdhMy4zMzMgMy4zMzMgMCAwIDAgLjExMy02LjQxM3YtLjA0WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTE0LjE2NyA3LjY0YS44MzQuODM0IDAgMCAwLTEuMTc1IDBMMTAgMTAuNTkgNy4wNSA3LjY0YS44MzMuODMzIDAgMSAwLTEuMTc1IDEuMTg0bDMuNTM0IDMuNTMzYS44MzMuODMzIDAgMCAwIDEuMTgzIDBsMy41NzUtMy41MzNhLjgzMy44MzMgMCAwIDAgMC0xLjE4M1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgOCAxMlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNOCAxLjA1NCA2LjgwNSAwIDAgNmw2LjgwNSA2TDggMTAuOTQ3IDIuMzkgNiA4IDEuMDU0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCA4IDEyXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0wIDEuMDU0IDEuMTk1IDAgOCA2bC02LjgwNSA2TDAgMTAuOTQ3IDUuNjEgNiAwIDEuMDU0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE4XFxcIj48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiIGQ9XFxcIk00LjMxMSA3LjQzIDMuNzQgOGgxMC45MjZhMSAxIDAgMCAxIDAgMkgzLjc0bC41NzEuNTY5IDQuNCA0LjM4N2EuOTk5Ljk5OSAwIDAgMSAwIDEuNDJsLS4wMDEuMDAyYTEuMDAxIDEuMDAxIDAgMCAxLTEuNDIgMGgtLjAwMUwuNjI1IDkuNzEyYTEgMSAwIDAgMS0uMjA4LS4zMjdMLjQxNSA5LjM4YTEgMSAwIDAgMSAwLS43NmwuMDAyLS4wMDdhMSAxIDAgMCAxIC4yMDgtLjMyN2w2LjY2NC02LjY2NEExLjAwNSAxLjAwNSAwIDEgMSA4LjcxIDMuMDQ0TDQuMzEgNy40M1pcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTcgMTZcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgZD1cXFwiTTUuOTU1IDEwLjMzM2g0LjY3bC0yLjMzNiAyLjI1My0yLjMzNC0yLjI1M1ptMS44NDQgMy4xOTRjLjI3LjI2LjcwNC4yNi45NzQgMGwzLjE3LTMuMDZjLjQzNi0uNDE0LjEzMi0xLjEzNC0uNDgzLTEuMTM0SDUuMTI2Yy0uNjE1IDAtLjkyNi43Mi0uNDkgMS4xNGwzLjE2MyAzLjA1M1ptLTIuNjgtNi44Nmg2LjM0MWMuNjE1IDAgLjkyNi0uNzIuNDktMS4xNGwtMy4xNy0zLjA2YS43MDYuNzA2IDAgMCAwLS45NzQgMGwtMy4xNyAzLjA2Yy0uNDM2LjQyLS4xMzIgMS4xNC40ODMgMS4xNFpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDIwIDIwXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0zLjYzNCAxNy45YS41LjUgMCAwIDEtLjUyNC4wNDdsLS4xNDkuMjk3LjE0OS0uMjk3YS41LjUgMCAwIDEtLjIwMi0uMTg0bC0uMjgzLjE3NC4yODMtLjE3NGEuNS41IDAgMCAxLS4wNzUtLjI2M3YtMTVhLjUuNSAwIDAgMSAuNS0uNWgxMy4zMzRhLjUuNSAwIDAgMSAuNS41djE0Ljk5OWEuNS41IDAgMCAxLS4yNzUuNDQ1aC0uMDAxYS41LjUgMCAwIDEtLjUyNS0uMDQ1bC0xLjcyNC0xLjI5LS4yLS4xNS0uMi4xNS0xLjcxNyAxLjI5MWEuNS41IDAgMCAxLS42IDBMMTAuMiAxNi42MDhsLS4yLS4xNS0uMi4xNUw4LjA3NSAxNy45YS41LjUgMCAwIDEtLjYgMGwtMS43MTYtMS4yOTEtLjItLjE1LS4yLjE1LTEuNzI1IDEuMjlabTEyLTEuOC41MzMuMzk5VjNIMy44MzN2MTMuNDk5bC41MzMtLjM5OS44OTItLjY2NmEuNS41IDAgMCAxIC42IDBsMS43MTcgMS4yOS4yLjE1MS4yLS4xNUw5LjcgMTUuNDMzYS41LjUgMCAwIDEgLjYgMGwxLjcyNSAxLjI5Mi4yLjE1LjItLjE1IDEuNzE3LTEuMjkyYS41LjUgMCAwIDEgLjYgMGwuODkyLjY2N1ptLTIuMy05Ljc2N2gtNWEuNS41IDAgMCAxIDAtMWg1YS41LjUgMCAwIDEgMCAxWm0wIDMuMzM0SDYuNjY2YS41LjUgMCAwIDEgMC0xaDYuNjY2YS41LjUgMCAwIDEgMCAxWm0wIDMuMzMzSDYuNjY2YS41LjUgMCAwIDEgMC0xaDYuNjY2YS41LjUgMCAxIDEgMCAxWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTMuNjQ3IDQuOTEzVjQuODZsLS4wNC0uMWEuNDY2LjQ2NiAwIDAgMC0uMDQ3LS4wNi42MjMuNjIzIDAgMCAwLS4wNi0uMDhsLS4wNi0uMDQ3LS4xMDctLjA1My01LTMuMDg3YS42NjcuNjY3IDAgMCAwLS43MDYgMEwyLjY2NyA0LjUybC0uMDYuMDUzLS4wNi4wNDdhLjYyNy42MjcgMCAwIDAtLjA2LjA4LjQ3My40NzMgMCAwIDAtLjA0Ny4wNmwtLjA0LjF2LjA1M2EuNzY3Ljc2NyAwIDAgMCAwIC4xNzR2NS44MjZhLjY2Ny42NjcgMCAwIDAgLjMxMy41NjdsNSAzLjA4N2MuMDMxLjAxOS4wNjUuMDMyLjEuMDRoLjA1NGEuNTc0LjU3NCAwIDAgMCAuMzQ2IDBoLjA1NGEuMzE0LjMxNCAwIDAgMCAuMS0uMDRsNC45NjYtMy4wODdhLjY2OC42NjggMCAwIDAgLjMxNC0uNTY3VjUuMDg3YS43NjEuNzYxIDAgMCAwIDAtLjE3NFptLTYuMzE0IDcuODk0TDMuNjY3IDEwLjU0VjYuMjg3bDMuNjY2IDIuMjZ2NC4yNlpNOCA3LjM5MyA0LjI2NyA1LjA4NyA4IDIuNzg3bDMuNzMzIDIuM0w4IDcuMzkzWm00LjMzMyAzLjE0Ny0zLjY2NiAyLjI2N3YtNC4yNmwzLjY2Ni0yLjI2djQuMjUzWlxcXCIgZmlsbD1cXFwiI0E2NkVFOVxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTUuMzM0IDcuMzM0aDUuMzMzYS42NjcuNjY3IDAgMCAwIC41MTMtLjI0Ny42NjYuNjY2IDAgMCAwIC4xNTQtLjU1M0wxMC42NjcgMy4yQS42NjcuNjY3IDAgMCAwIDEwIDIuNjY3SDZhLjY2Ny42NjcgMCAwIDAtLjY2Ni41MzNsLS42NjcgMy4zMzRhLjY2Ny42NjcgMCAwIDAgLjE0LjU1My42NjcuNjY3IDAgMCAwIC41MjcuMjQ3Wk02LjU0NyA0aDIuOTA3bC40IDJINi4xNDdsLjQtMlptOC4xMiA1LjJBLjY2Ny42NjcgMCAwIDAgMTQgOC42NjdoLTRhLjY2Ny42NjcgMCAwIDAtLjY2Ni41MzNsLS42NjcgMy4zMzRhLjY2Ny42NjcgMCAwIDAgLjE0LjU1My42NjYuNjY2IDAgMCAwIC41MjcuMjQ3aDUuMzMzYS42NjcuNjY3IDAgMCAwIC41MTMtLjI0Ny42NjYuNjY2IDAgMCAwIC4xNTQtLjU1M0wxNC42NjcgOS4yWm0tNC41MiAyLjguNC0yaDIuOTA2bC40IDJoLTMuNzA2Wk02IDguNjY4SDJhLjY2Ny42NjcgMCAwIDAtLjY2Ni41MzNsLS42NjcgMy4zMzRhLjY2Ny42NjcgMCAwIDAgLjE0LjU1My42NjYuNjY2IDAgMCAwIC41MjcuMjQ3aDUuMzMzYS42NjcuNjY3IDAgMCAwIC41MTMtLjI0Ny42NjYuNjY2IDAgMCAwIC4xNTQtLjU1M0w2LjY2NyA5LjJBLjY2Ny42NjcgMCAwIDAgNiA4LjY2N1ptLTMuODUzIDMuMzM0LjQtMmgyLjkwN2wuNCAySDIuMTQ3WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNOS4zMzQgNS4zMzNIMTBBLjY2Ny42NjcgMCAwIDAgMTAgNGgtLjY2NmEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWm0wIDIuNjY3SDEwYS42NjcuNjY3IDAgMCAwIDAtMS4zMzRoLS42NjZhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNFpNNiA1LjMzM2guNjY3YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNINmEuNjY3LjY2NyAwIDEgMCAwIDEuMzMzWk02IDhoLjY2N2EuNjY3LjY2NyAwIDEgMCAwLTEuMzM0SDZBLjY2Ny42NjcgMCAwIDAgNiA4Wm04IDUuMzMzaC0uNjY2VjJhLjY2Ni42NjYgMCAwIDAtLjY2Ny0uNjY3SDMuMzMzQS42NjcuNjY3IDAgMCAwIDIuNjY3IDJ2MTEuMzMzSDJhLjY2Ni42NjYgMCAxIDAgMCAxLjMzM2gxMmEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWm0tNS4zMzMgMEg3LjMzNHYtMi42NjdoMS4zMzN2Mi42NjdabTMuMzMzIDBoLTJWMTBhLjY2Ny42NjcgMCAwIDAtLjY2Ni0uNjY3SDYuNjY3QS42NjcuNjY3IDAgMCAwIDYgMTB2My4zMzNINFYyLjY2Nmg4djEwLjY2N1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNyAxNlxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgZD1cXFwibTEyLjMyMiA1LjY4LjA5Mi4yMTIuMjIxLjA2N2EyLjgzNCAyLjgzNCAwIDAgMS0uMDk0IDUuNDUuMTY4LjE2OCAwIDAgMS0uMDgzLS4zMjVsLjAwOC0uMDAyYTIuNSAyLjUgMCAwIDAtLjItNC44NjZsLS4wMDgtLjAwMmEuMTY3LjE2NyAwIDAgMS0uMTMtLjExMmwtLjAwMi0uMDA0YTMuODM0IDMuODM0IDAgMCAwLTcuNDYgMS4yMzUuMTY3LjE2NyAwIDAgMS0uMTY2LjE2NyAxLjgzMyAxLjgzMyAwIDEgMCAwIDMuNjY3LjE2Ny4xNjcgMCAwIDEgMCAuMzMzaC0uMDAxYTIuMTY3IDIuMTY3IDAgMCAxLS41MS00LjI3M2wuMzM2LS4wOC4wNDQtLjM0MmE0LjE2NyA0LjE2NyAwIDAgMSA3Ljk1My0xLjEyNVptLTIuMzcgNC4xOTkuMDAyLjAwM2EuMTY3LjE2NyAwIDAgMSAwIC4yMzdsLS44NjYuODYtLjM1OC4zNTUuMzU4LjM1NC44NjYuODZhLjE2Ny4xNjcgMCAwIDEgMCAuMjM3bC0uMDAyLjAwM2EuMTY2LjE2NiAwIDAgMS0uMTgzLjAzNy4xNjYuMTY2IDAgMCAxLS4wNTQtLjAzN2wtLjg2LS44NjctLjM1NS0uMzU3LS4zNTUuMzU3LS44Ni44NjdhLjE2Ni4xNjYgMCAwIDEtLjE4My4wMzcuMTY2LjE2NiAwIDAgMS0uMDU0LS4wMzdsLS4wMDMtLjAwM2EuMTY3LjE2NyAwIDAgMSAwLS4yMzZsLjg2Ny0uODYuMzU4LS4zNTUtLjM1OC0uMzU1LS44NjUtLjg1OWEuMTcuMTcgMCAwIDEgLjI0LS4yNGwuODU4Ljg2Ni4zNTUuMzU3LjM1NS0uMzU3Ljg2LS44NjdhLjE2Ny4xNjcgMCAwIDEgLjIzNyAwWlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNCAxNFxcXCI+PHBhdGggZmlsbD1cXFwiIzJBMkYzMFxcXCIgZD1cXFwibTguNDEgNyA0LjMtNC4yOWExLjAwNCAxLjAwNCAwIDAgMC0xLjQyLTEuNDJMNyA1LjU5bC00LjI5LTQuM2ExLjAwNCAxLjAwNCAwIDEgMC0xLjQyIDEuNDJMNS41OSA3bC00LjMgNC4yOWEuOTk5Ljk5OSAwIDAgMCAwIDEuNDIgMSAxIDAgMCAwIDEuNDIgMEw3IDguNDFsNC4yOSA0LjNhMS4wMDEgMS4wMDEgMCAwIDAgMS42MzktLjMyNSAxIDEgMCAwIDAtLjIyLTEuMDk1TDguNDEgN1pcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTQgMTRcXFwiPjxwYXRoIGQ9XFxcIk03IC4zMzJjLTMuNjY3IDAtNi42NjcgMy02LjY2NyA2LjY2NyAwIDMuNjY2IDMgNi42NjYgNi42NjcgNi42NjYgMy42NjYgMCA2LjY2Ni0zIDYuNjY2LTYuNjY2IDAtMy42NjctMy02LjY2Ny02LjY2Ni02LjY2N1ptMi44IDUuNTMzLTMuMiAzLjJhLjY0NC42NDQgMCAwIDEtLjkzNCAwTDQuMiA3LjZhLjY0NC42NDQgMCAwIDEgMC0uOTM0LjY0NC42NDQgMCAwIDEgLjkzMyAwbDEgMSAyLjczMy0yLjczM2EuNjQ0LjY0NCAwIDAgMSAuOTM0IDAgLjY0NS42NDUgMCAwIDEgMCAuOTMzWlxcXCIgZmlsbD1cXFwiIzE3OTk3QlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAyMCAyMFxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgZD1cXFwiTTE3LjE2NyAzLjMzNHYtLjVoLTExdjExaDExdi0xMC41Wk04LjIwNCA4Ljc1bC40NjMtLjQ2NiAxLjM3IDEuMzc2LjM1NS4zNTcuMzU0LS4zNTcgMy45Mi0zLjk1LjQ2My40NjUtNC43MzcgNC43OEw4LjIwNCA4Ljc1Wm0tNS4zNyA3LjkxNnYuNUgxNC41di42NjdIMy4zMzNjLS42NCAwLTEuMTY2LS41MjYtMS4xNjYtMS4xNjdWNS41aC42NjZ2MTEuMTY3Wm0zLjgzMy0xNC41aDEwYy42NCAwIDEuMTY2LjUyNiAxLjE2NiAxLjE2N3YxMGMwIC42NC0uNTI2IDEuMTY2LTEuMTY2IDEuMTY2aC0xMGMtLjY0IDAtMS4xNjctLjUyNi0xLjE2Ny0xLjE2NnYtMTBjMC0uNjQuNTI2LTEuMTY3IDEuMTY3LTEuMTY3WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMiAxMFxcXCI+PHBhdGggZD1cXFwibS43NSA1LjI1IDMuNSAzLjUgNy03LjVcXFwiIHN0cm9rZT1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjVcXFwiIHN0cm9rZS1saW5lY2FwPVxcXCJyb3VuZFxcXCIgc3Ryb2tlLWxpbmVqb2luPVxcXCJyb3VuZFxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2UtbGluZWNhcD1cXFwicm91bmRcXFwiIHN0cm9rZS1saW5lam9pbj1cXFwicm91bmRcXFwiIHN0cm9rZS13aWR0aD1cXFwiMlxcXCIgY2xhc3M9XFxcImNoZXZyb25fc3ZnX19mZWF0aGVyIGNoZXZyb25fc3ZnX19mZWF0aGVyLWNoZXZyb25zLXJpZ2h0XFxcIiB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiPjxwYXRoIGQ9XFxcIm0xMyAxNyA1LTUtNS01TTYgMTdsNS01LTUtNVxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTAgMTFcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTUgLjVjLTIuNzUgMC01IDIuMjUtNSA1czIuMjUgNSA1IDUgNS0yLjI1IDUtNS0yLjI1LTUtNS01Wm0xLjg1IDYuMTVjLjIuMi4yLjUgMCAuNy0uMi4yLS41LjItLjcgMEw1IDYuMiAzLjg1IDcuMzVjLS4yLjItLjUuMi0uNyAwLS4yLS4yLS4yLS41IDAtLjdMNC4zIDUuNSAzLjE1IDQuMzVjLS4yLS4yLS4yLS41IDAtLjcuMi0uMi41LS4yLjcgMEw1IDQuOGwxLjE1LTEuMTVjLjItLjIuNS0uMi43IDAgLjIuMi4yLjUgMCAuN0w1LjcgNS41bDEuMTUgMS4xNVpcXFwiIGZpbGw9XFxcIiNFMzRENUJcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE4IDE5XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk05IDIuNDM0Yy00LjEyNSAwLTcuNSAzLjM3NS03LjUgNy41czMuMzc1IDcuNSA3LjUgNy41IDcuNS0zLjM3NSA3LjUtNy41LTMuMzc1LTcuNS03LjUtNy41Wm0yLjc3NSA5LjIyNWMuMy4zLjMuNzUgMCAxLjA1LS4zLjMtLjc1LjMtMS4wNSAwTDkgMTAuOTg0bC0xLjcyNSAxLjcyNWMtLjMuMy0uNzUuMy0xLjA1IDAtLjMtLjMtLjMtLjc1IDAtMS4wNUw3Ljk1IDkuOTM0IDYuMjI1IDguMjA5Yy0uMy0uMy0uMy0uNzUgMC0xLjA1LjMtLjMuNzUtLjMgMS4wNSAwTDkgOC44ODRsMS43MjUtMS43MjVjLjMtLjMuNzUtLjMgMS4wNSAwIC4zLjMuMy43NSAwIDEuMDVMMTAuMDUgOS45MzRsMS43MjUgMS43MjVaXFxcIiBmaWxsPVxcXCIjRTM0RDVCXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48cGF0aCBkPVxcXCJNOC43NSA1LjQ1N2gtMS41QTEuMDgzIDEuMDgzIDAgMCAwIDYuMTY3IDYuNTR2M2ExLjA4MyAxLjA4MyAwIDAgMCAxLjA4MyAxLjA4M2gxLjVBMS4wODQgMS4wODQgMCAwIDAgOS44MzMgOS41NGEuNDE3LjQxNyAwIDAgMSAuODM0IDAgMS45MTcgMS45MTcgMCAwIDEtMS45MTcgMS45MTdoLTEuNUExLjkxNiAxLjkxNiAwIDAgMSA1LjMzMyA5LjU0di0zQTEuOTE3IDEuOTE3IDAgMCAxIDcuMjUgNC42MjNoMS41YTEuOTE3IDEuOTE3IDAgMCAxIDEuOTE3IDEuOTE3LjQxNi40MTYgMCAxIDEtLjgzNCAwQTEuMDgzIDEuMDgzIDAgMCAwIDguNzUgNS40NTdaTTQuMDE4IDIuMDhBNy4xNjcgNy4xNjcgMCAxIDEgMTEuOTgyIDE0IDcuMTY3IDcuMTY3IDAgMCAxIDQuMDE4IDIuMDhabS40NjMgMTEuMjI1QTYuMzM0IDYuMzM0IDAgMSAwIDExLjUyIDIuNzc0YTYuMzM0IDYuMzM0IDAgMCAwLTcuMDQgMTAuNTMyWlxcXCIgZmlsbD1cXFwiI0E2QjVCQVxcXCIgc3Ryb2tlPVxcXCIjQTZCNUJBXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE0IDE0XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk05LjkxNyA0LjA4M2E0LjUxNSA0LjUxNSAwIDEgMC01LjgzNCA1LjgzNCA0LjUxNSA0LjUxNSAwIDEgMCA1LjgzNC01LjgzNFptLS45MzQuOTM0YTMuNDUzIDMuNDUzIDAgMCAxLS4wMyAxLjQ0N0w3LjUzMiA1LjA1MWMuMjU2LS4wNjEuNTE4LS4wOTMuNzgxLS4wOTQuMjI0IDAgLjQ0Ni4wMjIuNjY1LjA2NGwuMDA2LS4wMDVabS0uNTQ4IDIuNTY2YTMuNSAzLjUgMCAwIDEtLjg1Mi44NTJMNS41NjUgNi40MTdhMy41IDMuNSAwIDAgMSAuODUyLS44NTJsMi4wMTggMi4wMThabS00LjY2Ny44NTJhMy4zNTQgMy4zNTQgMCAxIDEgNC42NjctNC42NjdoLS4xNDZhNC41MjcgNC41MjcgMCAwIDAtNC40OTcgNC41NDRjMCAuMDQ3LjAwNS4xLjAwNS4xNDZsLS4wMjktLjAyM1ptMS4yMjUuNTE5YTMuNTcgMy41NyAwIDAgMS0uMDY0LS42NjVjLjAwMS0uMjYzLjAzMy0uNTI2LjA5My0uNzgyTDYuNDQgOC45MjVjLS4yNTYuMDYtLjUxOS4wOTItLjc4Mi4wOTNhMy41NyAzLjU3IDAgMCAxLS42MzYtLjA0bC0uMDI5LS4wMjRabTMuMzIgMi43MTJhMy4zNjUgMy4zNjUgMCAwIDEtMi43NzEtMS40NjRoLjE0NWE0LjUyNyA0LjUyNyAwIDAgMCA0LjUyMS00LjUxNXYtLjE0NWEzLjM1NCAzLjM1NCAwIDAgMS0xLjg5NiA2LjEyNFpcXFwiIGZpbGw9XFxcIiNGNEI3ODRcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiPjxwYXRoIGZpbGw9XFxcIiM2ODc5N0VcXFwiIGQ9XFxcIk0xMC43ODMgNS4yMThhLjc1Ljc1IDAgMCAwLTEuMDY1IDBMOCA2Ljk0MiA2LjI4MyA1LjIxOGEuNzUzLjc1MyAwIDEgMC0xLjA2NSAxLjA2NEw2Ljk0MyA4IDUuMjE4IDkuNzE3YS43NS43NSAwIDAgMCAwIDEuMDY2Ljc1Ljc1IDAgMCAwIDEuMDY1IDBMOCA5LjA1NmwxLjcxOCAxLjcyNmEuNzUuNzUgMCAwIDAgMS4yMjktLjI0NS43NS43NSAwIDAgMC0uMTY0LS44Mkw5LjA1OCA4bDEuNzI1LTEuNzE4YS43NDguNzQ4IDAgMCAwIDAtMS4wNjRabTIuNTItMi41MkE3LjUwMSA3LjUwMSAwIDEgMCAyLjY5OCAxMy4zMDEgNy41MDEgNy41MDEgMCAxIDAgMTMuMzAzIDIuNjk5Wm0tMS4wNTggOS41NDdBNiA2IDAgMSAxIDE0IDhhNS45NjUgNS45NjUgMCAwIDEtMS43NTUgNC4yNDVaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDEyIDE0XFxcIiBmaWxsPVxcXCJub25lXFxcIj48cGF0aCBmaWxsPVxcXCIjMkEyRjMwXFxcIiBkPVxcXCJNNC41ODggMy41IDcuMjEyLjg4YS40MTguNDE4IDAgMCAwLS41OTEtLjU5Mkw0IDIuOTEzIDEuMzguMjg4YS40MTguNDE4IDAgMSAwLS41OTMuNTkxTDMuNDEzIDMuNS43ODcgNi4xMmEuNDE3LjQxNyAwIDAgMCAuMTM2LjY4NC40MTcuNDE3IDAgMCAwIC40NTYtLjA5MUw0IDQuMDg4bDIuNjIgMi42MjVhLjQxNy40MTcgMCAwIDAgLjY4NC0uMTM2LjQxNy40MTcgMCAwIDAtLjA5Mi0uNDU2TDQuNTg4IDMuNVpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgNTIgNTJcXFwiPjxjaXJjbGUgY3g9XFxcIjI2XFxcIiBjeT1cXFwiMjZcXFwiIHI9XFxcIjI1LjI1XFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjVcXFwiLz48cGF0aCBkPVxcXCJNMzcuNCAzNy44MmMtLjA1MS0uNjA5LS4wNS01LjM4My0uMDM2LTguMzE4YS42LjYgMCAwIDAtLjU5OC0uNjA0aC0uMDAzYS42LjYgMCAwIDAtLjYuNTk4YzAgLjAyMi0uMDEgMi4xMi0uMDEgNC4yMDQuMDAyIDIuMTEyLjAwNCAzLjIyNC4wMjkgMy44MzRsLTkuODQ5IDIuOTYzYS41OTcuNTk3IDAgMCAwIC4wNTQtLjI0OHYtNy44OTdhLjYuNiAwIDEgMC0xLjIwMiAwdjcuODk3YzAgLjA1NS4wMDkuMTA4LjAyMi4xNTlsLTkuNTYtMi45MDgtLjAwOC03LjlhLjYuNiAwIDAgMC0uNi0uNjAxaC0uMDAxYS42LjYgMCAwIDAtLjYuNmwuMDA3IDguMzQ3YS42LjYgMCAwIDAgLjQyNS41NzRsMTAuODY4IDMuMzA0YS41OTIuNTkyIDAgMCAwIC4zNDggMGwxMC45MDMtMy4yOGEuNi42IDAgMCAwIC40MS0uNzI0Wm0tLjQ3Mi0uNDRaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiIzE4QUNCMlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuM1xcXCIvPjxwYXRoIGQ9XFxcIm00MC4wNCAyMy43NDYtMy4zNjUtMS45MDItLjAxMy0uMDA2YTEyLjAwNCAxMi4wMDQgMCAwIDAtMi4zMzEtMy4yNTkuNi42IDAgMSAwLS44NDcuODUyIDEwLjc3OCAxMC43NzggMCAwIDEgMi42MjQgNC4yMTdsLTEuNTgyLjQzM2MtMS4yNTgtMy42MzMtNC43MzMtNi4xMzItOC42MTMtNi4xMzJhOS4xMTUgOS4xMTUgMCAwIDAtNC41NzIgMS4yMjguNjAxLjYwMSAwIDAgMCAuNjAzIDEuMDM5IDcuOTA4IDcuOTA4IDAgMCAxIDMuOTY5LTEuMDY2IDcuOTUgNy45NSAwIDAgMSA3LjQ1IDUuMjVsLTEuNTgzLjQzM2E2LjMxMiA2LjMxMiAwIDAgMC01Ljg2Ny00LjA0NyA2LjI5NSA2LjI5NSAwIDAgMC01Ljg3OSA0LjA3NWwtMS41ODYtLjQyNWE3Ljk0IDcuOTQgMCAwIDEgMS44NzEtMi45Ny42LjYgMCAxIDAtLjg1LS44NDkgOS4xNDggOS4xNDggMCAwIDAtMi4xODQgMy41MDZsLTEuNTgzLS40MjVjLjEwMi0uMzEuMjE4LS42MTMuMzQ2LS45MDlhLjYwNy42MDcgMCAwIDAgLjE3Mi0uMzc2IDEwLjc3NiAxMC43NzYgMCAwIDEgOS42OTMtNi4xYzEuODkgMCAzLjc0OS40OTcgNS4zNzUgMS40MzlhLjYwMS42MDEgMCAwIDAgLjYwMi0xLjA0IDExLjk0OSAxMS45NDkgMCAwIDAtNS45NzctMS42IDExLjk4IDExLjk4IDAgMCAwLTEwLjgxNCA2Ljg2bC0zLjEzOSAxLjc3NGEuNi42IDAgMCAwIC4zNTggMS4xMmwxLjMyLS4xMzYtMS40NzMgMS44N2EuNTk5LjU5OSAwIDAgMCAuMzAxLjk0N2wxMS4zNjEgMy4zNzhhLjYwMS42MDEgMCAwIDAgLjY5MS0uMjc0bDEuNDA5LTIuNDE4IDEuMzEgMi4xNzdhLjYuNiAwIDAgMCAuNjczLjI3bDExLjQ0Ny0zLjEyOWEuNjAyLjYwMiAwIDAgMCAuMzEzLS45NTFsLTEuNDg3LTEuODg5IDEuNDk5LjE1NmEuNi42IDAgMCAwIC4zNTgtMS4xMlptLTE0LjEyNy0xLjc1OGE1LjEwNCA1LjEwNCAwIDAgMSA0LjcwMiAzLjE2NWwtNC43MDMgMS4yODgtNC43MS0xLjI2NWE1LjA5IDUuMDkgMCAwIDEgNC43MTEtMy4xODhabS0yLjE5NiA3LjY1Mi0xMC4wNjEtMi45OTIgMS40Ni0xLjg1NUwyNSAyNy40MzlsLTEuMjgyIDIuMjAxWm00LjMxNS0uMjQtMS4xODQtMS45NjQgOS44Ny0yLjY0MyAxLjQ0OCAxLjgzOC0xMC4xMzQgMi43N1ptLTYuNDQ3LTE1Ljk3YS42MDEuNjAxIDAgMCAwIDEuMTU1LS4zM2wtLjgtMi44MDNhLjYwMS42MDEgMCAwIDAtMS4xNTYuMzNsLjgwMSAyLjgwNFptNy43NTUuNDc5YS42MDEuNjAxIDAgMCAwIC43NDItLjQxMmwuOC0yLjgwNGEuNi42IDAgMSAwLTEuMTU1LS4zM2wtLjggMi44MDRhLjYuNiAwIDAgMCAuNDEyLjc0MlptNi41NyAzLjY3N2EuNjAxLjYwMSAwIDAgMCAuNDItLjE3bDIuMDUzLTIuMDAzYS42LjYgMCAxIDAtLjgzOS0uODZsLTIuMDUyIDIuMDAyYS42LjYgMCAwIDAgLjQxOSAxLjAzWm0tMjAuNTQtLjIyMWEuNjAyLjYwMiAwIDAgMCAuODQtLjg2bC0yLjAwMy0xLjk1MmEuNi42IDAgMSAwLS44MzguODZsMi4wMDEgMS45NTJaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiIzE4QUNCMlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuM1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCA1MiA1MlxcXCI+PGNpcmNsZSBjeD1cXFwiMjZcXFwiIGN5PVxcXCIyNlxcXCIgcj1cXFwiMjUuMjVcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuNVxcXCIvPjxwYXRoIGQ9XFxcIk0yMC44NzEgMTcuMjA4QTEwLjE2NyAxMC4xNjcgMCAwIDEgMjYgMTUuODIzYTEwLjExIDEwLjExIDAgMCAxIDcuMTk2IDIuOTguNTY2LjU2NiAwIDAgMCAuODA0IDBBLjU3LjU3IDAgMCAwIDM0IDE4YTExLjI0IDExLjI0IDAgMCAwLTgtMy4zMTNjLTIuMDA4IDAtMy45OC41MzItNS43MDMgMS41NGEuNTY4LjU2OCAwIDEgMCAuNTc0Ljk4MlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCIjMThBQ0IyXFxcIiBzdHJva2Utd2lkdGg9XFxcIi4zXFxcIi8+PHBhdGggZD1cXFwiTTI2IDEyYy0zLjc4IDAtNy4zMjEgMS40ODItOS45NzQgNC4xNzVhLjU3LjU3IDAgMCAwIC44MS43OThBMTIuNzcgMTIuNzcgMCAwIDEgMjYgMTMuMTM3YzcuMDkyIDAgMTIuODYzIDUuNzcgMTIuODYzIDEyLjg2MyAwIDIuMTg0LS41NDggNC4yNDQtMS41MTMgNi4wNDdsLTEuNzctMi43MDdhNC4zODEgNC4zODEgMCAwIDAgMS43MzQtMy40OSA0LjM5MiA0LjM5MiAwIDAgMC00LjM4OC00LjM4OCA0LjM0IDQuMzQgMCAwIDAtMi4zODkuNzA3IDUuOTMgNS45MyAwIDAgMC05LjEyMy4wNiA0LjM3NyA0LjM3NyAwIDAgMC0yLjQ3OS0uNzY3IDQuMzkyIDQuMzkyIDAgMCAwLTQuMzg3IDQuMzg3YzAgMS40MTUuNjc0IDIuNjc0IDEuNzE2IDMuNDc3bC0xLjYzNSAyLjY4MWExMi44NiAxMi44NiAwIDAgMSAuMjA0LTEyLjM5My41NjkuNTY5IDAgMSAwLS45ODctLjU2NUExNCAxNCAwIDAgMCAxMiAyNmMwIDUuMDk1IDIuNzM2IDkuNTY0IDYuODE3IDEyLjAxM2EuNTY2LjU2NiAwIDAgMCAuMzI1LjE4OUExMy45MTEgMTMuOTExIDAgMCAwIDI2IDQwYzcuNzE5IDAgMTQtNi4yOCAxNC0xNHMtNi4yODEtMTQtMTQtMTRabTYuOTI1IDEwLjU5OWEzLjI1MyAzLjI1MyAwIDAgMSAzLjI1IDMuMjUgMy4yNTMgMy4yNTMgMCAwIDEtMy4yNSAzLjI1Yy0uNTc2IDAtMS4xMjctLjE1LTEuNjE4LS40MzRBNS45MDYgNS45MDYgMCAwIDAgMzEuOTQgMjZhNS45MDMgNS45MDMgMCAwIDAtLjc1Ny0yLjg5NiAzLjIxNyAzLjIxNyAwIDAgMSAxLjc0LS41MDVaTTI2IDIxLjE5NkE0LjgxIDQuODEgMCAwIDEgMzAuODAzIDI2IDQuODEgNC44MSAwIDAgMSAyNiAzMC44MDQgNC44MSA0LjgxIDAgMCAxIDIxLjE5NSAyNiA0LjgxIDQuODEgMCAwIDEgMjYgMjEuMTk2Wm0tMTAuMzE2IDQuNjUzYTMuMjUzIDMuMjUzIDAgMCAxIDUuMDkyLTIuNjc4QTUuOTA1IDUuOTA1IDAgMCAwIDIwLjA1OCAyNmMwIC45MzMuMjE3IDEuODE2LjYwMSAyLjYwM2EzLjI1MyAzLjI1MyAwIDAgMS00Ljk3Ni0yLjc1NFptMy4zODEgMTAuOTgxYTEyLjk2MiAxMi45NjIgMCAwIDEtMy43NzktMy43MTlsMS45NTktMy4yMTNjLjUyLjIxOCAxLjA5LjMzOSAxLjY4OS4zMzkuODMyIDAgMS42MjctLjIzIDIuMzIxLS42NjVhNiA2IDAgMCAwIDEuMyAxLjI2NWwtMy40OSA1Ljk5M1pNMjYgMzguODY0Yy0yLjE0NiAwLTQuMTctLjUzLTUuOTUxLTEuNDYzbDMuNDktNS45OTVhNS45IDUuOSAwIDAgMCAyLjQ2LjUzNWMuODYxIDAgMS42OC0uMTg1IDIuNDE4LS41MTZsMy40OTUgNS45OTdBMTIuNzg0IDEyLjc4NCAwIDAgMSAyNiAzOC44NjRabTYuODk3LTIuMDEtMy40OS01Ljk5Yy40OS0uMzQ1LjkyNi0uNzYyIDEuMjkyLTEuMjM1YTQuMzQ5IDQuMzQ5IDAgMCAwIDIuMjI2LjYwN2MuNTkgMCAxLjE1Mi0uMTE4IDEuNjY2LS4zM2wyLjExIDMuMjI0YTEyLjk3MyAxMi45NzMgMCAwIDEtMy44MDQgMy43MjNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiIzE4QUNCMlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuM1xcXCIvPjxwYXRoIGQ9XFxcIk0yNiAyOS44MDNhMy44MjMgMy44MjMgMCAwIDAgMy4wNDgtMS41MjguNTY5LjU2OSAwIDAgMC0uOTEtLjY4IDIuNjY4IDIuNjY4IDAgMCAxLTQuMzM3LS4wODYuNTY5LjU2OSAwIDAgMC0uOTM4LjY0M0EzLjgwNCAzLjgwNCAwIDAgMCAyNiAyOS44MDNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiIzE4QUNCMlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuM1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMiAxNFxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgZD1cXFwiTTguMTY3IDN2LjVoMy4xNjZhLjE2Ny4xNjcgMCAwIDEgMCAuMzMzaC0xLjE2NnY3LjgzM2ExLjUgMS41IDAgMCAxLTEuNSAxLjVIMy4zMzNhMS41IDEuNSAwIDAgMS0xLjA2LS40MzlsLS4zNTQuMzU0LjM1NC0uMzU0YTEuNSAxLjUgMCAwIDEtLjQ0LTEuMDZWMy44MzJILjY2N2EuMTY3LjE2NyAwIDEgMSAwLS4zMzNoMy4xNjZWMi4zMzNhMS41IDEuNSAwIDAgMSAxLjUtMS41aDEuMzM0YTEuNSAxLjUgMCAwIDEgMS41IDEuNVYzWm0tLjgzNC41aC41VjIuMzMzYTEuMTY3IDEuMTY3IDAgMCAwLTEuMTY2LTEuMTY3SDUuMzMzYTEuMTY3IDEuMTY3IDAgMCAwLTEuMTY2IDEuMTY3VjMuNWgzLjE2NlptLTQuNjY2LjMzM2gtLjV2Ny44MzNhMS4xNjcgMS4xNjcgMCAwIDAgMS4xNjYgMS4xNjdoNS4zMzRhMS4xNjcgMS4xNjcgMCAwIDAgMS4xNjYtMS4xNjdWMy44MzNIMi42NjdabTIuMTE4IDYuNjE4YS4xNjcuMTY3IDAgMCAxLS4yODUtLjExOHYtNGEuMTY3LjE2NyAwIDEgMSAuMzMzIDB2NGEuMTY3LjE2NyAwIDAgMS0uMDQ4LjExOFptMi42NjYgMGEuMTY3LjE2NyAwIDAgMS0uMjg0LS4xMTh2LTRhLjE2Ny4xNjcgMCAwIDEgLjMzMyAwdjRhLjE2Ny4xNjcgMCAwIDEtLjA0OS4xMThaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE3IDE2XFxcIj48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIk0xMC42MjQgNS42NjdoLTQuNjdMOC4yOSAzLjQxNGwyLjMzNSAyLjI1M1pNOC43OCAyLjQ3NGEuNzA2LjcwNiAwIDAgMC0uOTc0IDBsLTMuMTcgMy4wNmMtLjQzNi40MTMtLjEzMiAxLjEzMy40ODMgMS4xMzNoNi4zMzRjLjYxNSAwIC45MjYtLjcyLjQ5LTEuMTRMOC43OCAyLjQ3NFptMi42OCA2Ljg2SDUuMTE5Yy0uNjE1IDAtLjkyNi43Mi0uNDkgMS4xNGwzLjE3IDMuMDZjLjI3LjI2LjcwNC4yNi45NzQgMGwzLjE3LTMuMDZjLjQzNi0uNDIuMTMyLTEuMTQtLjQ4My0xLjE0WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBkPVxcXCJtMTMuODA3IDExLjE0LTEuNjE0LTEuNjE0YS42NjYuNjY2IDAgMCAwLS45NDYgMEw4Ljg2IDExLjkxM2EuNjY3LjY2NyAwIDAgMC0uMTkzLjQ3M1YxNGEuNjY3LjY2NyAwIDAgMCAuNjY2LjY2NmgxLjYxNGEuNjY4LjY2OCAwIDAgMCAuNDczLS4xOTNsMi4zODctMi4zODdhLjY2Ny42NjcgMCAwIDAgMC0uOTQ2Wm0tMy4xNCAyLjE5M0gxMHYtLjY2N2wxLjcyLTEuNzIuNjY3LjY2Ny0xLjcyIDEuNzJabS00IDBINGEuNjY2LjY2NiAwIDAgMS0uNjY3LS42NjdWMy4zMzNBLjY2Ny42NjcgMCAwIDEgNCAyLjY2NmgzLjMzM3YyYTIgMiAwIDAgMCAyIDJoMnYuNjY3YS42NjcuNjY3IDAgMCAwIDEuMzM0IDBWNS45NmEuODguODggMCAwIDAtLjA0LS4xOHYtLjA2YS43MTQuNzE0IDAgMCAwLS4xMjctLjE4N2wtNC00YS43MTMuNzEzIDAgMCAwLS4xODctLjEyNy4yMTMuMjEzIDAgMCAwLS4wNiAwbC0uMjEzLS4wNzNINGEyIDIgMCAwIDAtMiAydjkuMzMzYTIgMiAwIDAgMCAyIDJoMi42NjdhLjY2Ny42NjcgMCAxIDAgMC0xLjMzM1ptMi05LjcyNyAxLjcyNiAxLjcyN2gtMS4wNmEuNjY3LjY2NyAwIDAgMS0uNjY2LS42Njd2LTEuMDZaTTUuMzMzIDkuMzMzaDRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM2gtNGEuNjY3LjY2NyAwIDEgMCAwIDEuMzMzWm0wLTIuNjY3SDZhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM2gtLjY2N2EuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWm0xLjMzNCA0SDUuMzMzYS42NjcuNjY3IDAgMCAwIDAgMS4zMzRoMS4zMzRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE0IDE0XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxnIGNsaXAtcGF0aD1cXFwidXJsKCNkb3VibGUtdGlja19zdmdfX2EpXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiPjxwYXRoIGQ9XFxcIk05Ljg0NSAzLjcwNmEuNjQ3LjY0NyAwIDAgMC0uOTQ3IDBsLTUuMDcgNS4xNEwxLjczMyA2LjcyYS42NDcuNjQ3IDAgMCAwLS45NDcgMCAuNjY5LjY2OSAwIDAgMCAwIC45NmwyLjU3IDIuNjA0YS42MS42MSAwIDAgMCAuNDcyLjIwNi42MS42MSAwIDAgMCAuNDc0LS4yMDZsNS41NDMtNS42MmEuNjY5LjY2OSAwIDAgMCAwLS45NlpcXFwiLz48cGF0aCBkPVxcXCJNMTMuNjMyIDMuMzZhMS4yMzQgMS4yMzQgMCAwIDAtMS43ODMgMEw3LjE5NyA4LjA3OGwtMS42NzctMS43YTEuMjM0IDEuMjM0IDAgMCAwLTEuNzgzIDAgMS4yNTYgMS4yNTYgMCAwIDAgMCAxLjc4NGwyLjU3IDIuNjA0Yy4xMDEuMTAzLjIyNy4yMDUuMzg3LjI3Ny4xNjQuMDc0LjMzMy4xMDQuNTAzLjEwNC4xNzEgMCAuMzQtLjAzLjUwNC0uMTA0LjE2LS4wNzIuMjg2LS4xNzQuMzg4LS4yNzdsNS41NDMtNS42MmExLjI1NiAxLjI1NiAwIDAgMCAwLTEuNzg0WlxcXCIgc3Ryb2tlPVxcXCIjZmZmXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuMTc1XFxcIi8+PC9nPjxkZWZzPjxjbGlwUGF0aCBpZD1cXFwiZG91YmxlLXRpY2tfc3ZnX19hXFxcIj48cGF0aCBmaWxsPVxcXCIjZmZmXFxcIiBkPVxcXCJNMCAwaDE0djE0SDB6XFxcIi8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgd2lkdGg9XFxcIjE2XFxcIiBmaWxsPVxcXCJub25lXFxcIj48cGF0aCBmaWxsPVxcXCIjMTU1MzY2XFxcIiBzdHJva2U9XFxcIiMxNTUzNjZcXFwiIGQ9XFxcIk04LjE2NyA5LjczM3YxLjIwOGwuODUzLS44NTQuODY3LS44NjdBLjE2LjE2IDAgMCAxIDEwIDkuMTY3Yy4wMyAwIC4wNy4wMS4xMTMuMDUzYS4xNi4xNiAwIDAgMSAuMDU0LjExNC4xNi4xNiAwIDAgMS0uMDU0LjExM2wtMiAyYy0uMDM3LjAzNy0uMDU0LjA0NS0uMDU4LjA0NkEuMTM2LjEzNiAwIDAgMSA4IDExLjVhLjEzNi4xMzYgMCAwIDEtLjA1NS0uMDA3LjIwNS4yMDUgMCAwIDEtLjA1OC0uMDQ2bC0yLTJhLjE2LjE2IDAgMCAxLS4wNTQtLjExMy4xNi4xNiAwIDAgMSAuMDU0LS4xMTRBLjE2LjE2IDAgMCAxIDYgOS4xNjdjLjAzIDAgLjA3LjAxLjExMy4wNTNsLjg2Ny44NjcuODUzLjg1NFYyYzAtLjA4Ni4wMjctLjEyLjAzNy0uMTMuMDEtLjAxLjA0NC0uMDM3LjEzLS4wMzcuMDg2IDAgLjEyLjAyNy4xMy4wMzcuMDEuMDEuMDM3LjA0NC4wMzcuMTN2Ny43MzNabTIuNS0zLjIzM0gxMmMuODU3IDAgMS41LjY0MyAxLjUgMS41djQuNjY3YzAgLjg1Ny0uNjQzIDEuNS0xLjUgMS41SDRjLS44NTcgMC0xLjUtLjY0My0xLjUtMS41VjhjMC0uODU3LjY0My0xLjUgMS41LTEuNWgxLjMzM2MuMDg3IDAgLjEyLjAyNy4xMy4wMzcuMDEuMDEuMDM3LjA0My4wMzcuMTMgMCAuMDg2LS4wMjcuMTItLjAzNy4xMy0uMDEuMDEtLjA0My4wMzctLjEzLjAzN0g0Yy0uMzE0IDAtLjYxNC4xMDYtLjgzNy4zMy0uMjIzLjIyMi0uMzMuNTIzLS4zMy44MzZ2NC42NjdjMCAuMzEzLjEwNy42MTQuMzMuODM3LjIyMy4yMjMuNTIzLjMzLjgzNy4zM2g4Yy4zMTQgMCAuNjE0LS4xMDcuODM3LS4zMy4yMjMtLjIyMy4zMy0uNTI0LjMzLS44MzdWOGMwLS4zMTMtLjEwNy0uNjE0LS4zMy0uODM3YTEuMTY2IDEuMTY2IDAgMCAwLS44MzctLjMzaC0xLjMzM2MtLjA4NyAwLS4xMi0uMDI2LS4xMy0uMDM2LS4wMS0uMDEtLjAzNy0uMDQ0LS4wMzctLjEzIDAtLjA4Ny4wMjctLjEyLjAzNy0uMTMuMDEtLjAxLjA0My0uMDM3LjEzLS4wMzdaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBkPVxcXCJtMTIuNzk2IDUuODcuMDIzLjA3YS4zMDUuMzA1IDAgMCAxIC4wMTQuMDU0djYuNjcyYTEuNSAxLjUgMCAwIDEtMS41IDEuNUg0LjY2N2ExLjUgMS41IDAgMCAxLTEuNS0xLjVWMy4zMzNhMS41IDEuNSAwIDAgMSAxLjUtMS41aDMuOTc4YS4yMzMuMjMzIDAgMCAxIC4wMzMuMDE0bC4xMS4wNmguMDQ1bDMuOTYzIDMuOTYyWm0tMy4xMS0yLjYxNy0uODUzLS44NTR2Mi4yNjdBMS4xNjcgMS4xNjcgMCAwIDAgMTAgNS44MzNoMi4yNjdsLS44NTMtLjg1NC0xLjcyNy0xLjcyNlpNOC41IDIuNjY2di0uNUg0LjY2N0ExLjE2NyAxLjE2NyAwIDAgMCAzLjUgMy4zMzN2OS4zMzNhMS4xNjcgMS4xNjcgMCAwIDAgMS4xNjcgMS4xNjdoNi42NjZhMS4xNjcgMS4xNjcgMCAwIDAgMS4xNjctMS4xNjd2LTYuNUgxMGExLjUgMS41IDAgMCAxLTEuNS0xLjV2LTJabS0uMzMzIDcuMDZ2MS4yMzdsLjg2LS44OS4xODktLjE5NWEuMTcuMTcgMCAwIDEgLjIzNy4yNDJsLTEuMzI4IDEuMzI4YS4xNjcuMTY3IDAgMCAxLS4wNTIuMDMybC0uMDExLjAwNC0uMDEuMDA1YS4xMjcuMTI3IDAgMCAxLS4xMDMgMGwtLjAxLS4wMDUtLjAxMi0uMDA0YS4xNjcuMTY3IDAgMCAxLS4wNTItLjAzMmwtMS4zMjgtMS4zMjlhLjE3LjE3IDAgMCAxIC4yMzctLjI0MWwuMTkuMTk2Ljg2Ljg4OVY4YS4xNjcuMTY3IDAgMCAxIC4zMzMgMHYxLjcyNlpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIm0yLjYyNiAxMy4zNzQuMjM2LS4yMzYtLjIzNi4yMzZhMSAxIDAgMCAwIC43MDcuMjkzaDkuMzM0YTEgMSAwIDAgMCAuNzA3LS4yOTNsLS4yMzYtLjIzNi4yMzYuMjM2YTEgMSAwIDAgMCAuMjkzLS43MDdWMTBhLjMzMy4zMzMgMCAwIDEgLjU2OS0uMjM2bC4yMzUtLjIzNS0uMjM1LjIzNWEuMzMzLjMzMyAwIDAgMSAuMDk3LjIzNnYyLjY2N2ExLjY2NyAxLjY2NyAwIDAgMS0xLjY2NiAxLjY2NkgzLjMzM2ExLjY2NyAxLjY2NyAwIDAgMS0xLjY2Ni0xLjY2NlYxMGMwLS4wODguMDM1LS4xNzMuMDk3LS4yMzZMMS41MyA5LjUzbC4yMzUuMjM1YS4zMzMuMzMzIDAgMCAxIC40NzIgMGwuMjM1LS4yMzUtLjIzNS4yMzVhLjMzMy4zMzMgMCAwIDEgLjA5Ny4yMzZ2Mi42NjdhMSAxIDAgMCAwIC4yOTMuNzA3Wm01LjI1NS0zLjA2Ni0uMDA3LS4wMDMtLjAwNy0uMDAyYS4zMzMuMzMzIDAgMCAxLS4xMDgtLjA2OEw1LjA5NiA3LjU3YS4zMzYuMzM2IDAgMCAxIC4zNjYtLjU0OGwuMTI4LS4zMDgtLjEyOC4zMDhjLjA0LjAxNy4wNzguMDQxLjEwOS4wNzJMNy4wOTcgOC42M2wuNTcuNTcyVjJhLjMzMy4zMzMgMCAxIDEgLjY2NiAwdjcuMjAxbC41Ny0uNTcyIDEuNTI2LTEuNTMzYS4zMzYuMzM2IDAgMCAxIC40NzUuNDc1bC0yLjY2MyAyLjY2NGEuMzMzLjMzMyAwIDAgMS0uMTA4LjA2OGwtLjAwNy4wMDItLjAwNy4wMDNhLjI5Mi4yOTIgMCAwIDEtLjIzOCAwWlxcXCIgZmlsbD1cXFwiY3VycmVudGNvbG9yXFxcIiBzdHJva2U9XFxcImN1cnJlbnRjb2xvclxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDEwIDZcXFwiPjxwYXRoIGQ9XFxcIk04LjkzMi44NzhhLjUuNSAwIDAgMSAwIC43MUw1LjM1NyA1LjEyMWwtLjAwMi4wMDNhLjUuNSAwIDAgMS0uNzEgMHYtLjAwMUwxLjExIDEuNTg5YS41LjUgMCAwIDEgMC0uNzFWLjg3N2EuNS41IDAgMCAxIC43MDUgMGwyLjk1IDIuOTUuMjMzLjIzMy4yMzYtLjIzMkw4LjIyNi44NzlWLjg3OGEuNS41IDAgMCAxIC43MDYgMFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTE3LjUgMTBhLjgzMy44MzMgMCAwIDAtLjgzMy44MzN2NWEuODMzLjgzMyAwIDAgMS0uODM0LjgzNEg0LjE2N2EuODMzLjgzMyAwIDAgMS0uODM0LS44MzRWNC4xNjdhLjgzMy44MzMgMCAwIDEgLjgzNC0uODM0aDVhLjgzMy44MzMgMCAxIDAgMC0xLjY2NmgtNWEyLjUgMi41IDAgMCAwLTIuNSAyLjV2MTEuNjY2YTIuNSAyLjUgMCAwIDAgMi41IDIuNWgxMS42NjZhMi41IDIuNSAwIDAgMCAyLjUtMi41di01QS44MzMuODMzIDAgMCAwIDE3LjUgMTBaTTUgMTAuNjMzdjMuNTM0YS44MzMuODMzIDAgMCAwIC44MzMuODMzaDMuNTM0YS44MzMuODMzIDAgMCAwIC41OTEtLjI0Mmw1Ljc2Ny01Ljc3NSAyLjM2Ny0yLjMxNmEuODMzLjgzMyAwIDAgMCAwLTEuMTg0bC0zLjUzNC0zLjU3NWEuODM0LjgzNCAwIDAgMC0xLjE4MyAwbC0yLjM1IDIuMzU5LTUuNzgzIDUuNzc1YS44MzQuODM0IDAgMCAwLS4yNDIuNTkxWm04Ljk2Ny02Ljk1OCAyLjM1OCAyLjM1OC0xLjE4MyAxLjE4NC0yLjM1OS0yLjM1OSAxLjE4NC0xLjE4M1ptLTcuMyA3LjMgNC45NDEtNC45NDIgMi4zNTkgMi4zNTktNC45NDIgNC45NDFINi42Njd2LTIuMzU4WlxcXCIgZmlsbD1cXFwiIzY4Nzk3RVxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTcgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTMuNzE4IDEyaDIuODI3YS42NjYuNjY2IDAgMCAwIC40NzMtLjE5NGw0LjYxNC00LjYyIDEuODkzLTEuODUzYS42NjguNjY4IDAgMCAwIDAtLjk0N2wtMi44MjctMi44NmEuNjY3LjY2NyAwIDAgMC0uOTQ2IDBsLTEuODggMS44ODctNC42MjcgNC42MmEuNjY3LjY2NyAwIDAgMC0uMTkzLjQ3M3YyLjgyN2EuNjY3LjY2NyAwIDAgMCAuNjY2LjY2N1ptNi41MDctOS4wNiAxLjg4NyAxLjg4Ni0uOTQ3Ljk0Ny0xLjg4Ny0xLjg4Ny45NDctLjk0NlptLTUuODQgNS44NCAzLjk1My0zLjk1NCAxLjg4NyAxLjg4Ny0zLjk1MyAzLjk1M0g0LjM4NVY4Ljc4Wm0xMCA0LjU1M2gtMTJhLjY2Ny42NjcgMCAxIDAgMCAxLjMzM2gxMmEuNjY2LjY2NiAwIDEgMCAwLTEuMzMzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGNsYXNzPVxcXCJleGNsYW1hdGlvbi13YXJuaW5nX3N2Z19fZWxlbWVudHMtc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTggMThcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTkgNC43OTVhLjgzMy44MzMgMCAwIDAtLjgzNC44MzR2My4zMzNhLjgzMy44MzMgMCAwIDAgMS42NjcgMFY1LjYyOWEuODMzLjgzMyAwIDAgMC0uODM0LS44MzRabS43NjYgNy4xODRhLjYzMi42MzIgMCAwIDAtLjA3NS0uMTVsLS4xLS4xMjVhLjgzMy44MzMgMCAwIDAtLjkwOC0uMTc1Ljk1OC45NTggMCAwIDAtLjI3NS4xNzUuODMzLjgzMyAwIDAgMC0uMTc1LjkwOC43NS43NSAwIDAgMCAuNDUuNDUuNzgzLjc4MyAwIDAgMCAuNjMzIDAgLjc1Ljc1IDAgMCAwIC40NS0uNDUuODM0LjgzNCAwIDAgMCAuMDY3LS4zMTcgMS4xMzMgMS4xMzMgMCAwIDAgMC0uMTY2LjUzMi41MzIgMCAwIDAtLjA2Ny0uMTVaTTguOTk5LjYyOWE4LjMzMyA4LjMzMyAwIDEgMCAwIDE2LjY2NkE4LjMzMyA4LjMzMyAwIDAgMCA5IC42M1ptMCAxNUE2LjY2NiA2LjY2NiAwIDEgMSA5IDIuMjk2IDYuNjY2IDYuNjY2IDAgMCAxIDkgMTUuNjNaXFxcIiBmaWxsPVxcXCIjRjRCNzg0XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDIxIDIwXFxcIj48bWFzayBpZD1cXFwiZXhwb3J0X3N2Z19fYVxcXCIgd2lkdGg9XFxcIjIxXFxcIiBoZWlnaHQ9XFxcIjIwXFxcIiB4PVxcXCIwXFxcIiB5PVxcXCIwXFxcIiBtYXNrVW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIiBzdHlsZT1cXFwibWFzay10eXBlOmFscGhhXFxcIj48cGF0aCBmaWxsPVxcXCIjRDlEOUQ5XFxcIiBkPVxcXCJNLjUgMGgyMHYyMEguNXpcXFwiLz48L21hc2s+PGcgbWFzaz1cXFwidXJsKCNleHBvcnRfc3ZnX19hKVxcXCI+PHBhdGggZmlsbD1cXFwiIzE1NTM2NlxcXCIgZD1cXFwiTTQuNjY3IDE3LjVjLS40NTkgMC0uODUxLS4xNjMtMS4xNzctLjQ5QTEuNjA1IDEuNjA1IDAgMCAxIDMgMTUuODMzVjQuMTY3YzAtLjQ1OS4xNjMtLjg1MS40OS0xLjE3Ny4zMjYtLjMyNy43MTgtLjQ5IDEuMTc3LS40OUgxMC41djEuNjY3SDQuNjY3djExLjY2NmgxMS42NjZWMTBIMTh2NS44MzNjMCAuNDU5LS4xNjMuODUxLS40OSAxLjE3Ny0uMzI2LjMyNy0uNzE4LjQ5LTEuMTc3LjQ5SDQuNjY3Wm0zLjkxNi00LjQxNy0xLjE2Ni0xLjE2NiA3Ljc1LTcuNzVoLTNWMi41SDE4djUuODMzaC0xLjY2N3YtM2wtNy43NSA3Ljc1WlxcXCIvPjwvZz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE3IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMi43NTEgNy4yMTNhLjczMi43MzIgMCAwIDAtLjUuMTk1LjY0Ny42NDcgMCAwIDAtLjIwOC40NzJ2NC43ODZhLjY0Ny42NDcgMCAwIDEtLjIwNy40NzIuNzMxLjczMSAwIDAgMS0uNTAxLjE5NUgzLjU0M2EuNzMxLjczMSAwIDAgMS0uNS0uMTk1LjY0Ny42NDcgMCAwIDEtLjIwOC0uNDcyVjUuMzMzYzAtLjE3Ny4wNzQtLjM0Ni4yMDctLjQ3MWEuNzMxLjczMSAwIDAgMSAuNTAxLS4xOTZoNS4wODZjLjE4OCAwIC4zNjgtLjA3LjUtLjE5NUEuNjQ3LjY0NyAwIDAgMCA5LjMzOCA0YS42NDcuNjQ3IDAgMCAwLS4yMDctLjQ3Mi43MzEuNzMxIDAgMCAwLS41MDEtLjE5NUgzLjU0M2MtLjU2NCAwLTEuMTA0LjIxLTEuNTAzLjU4NmExLjk0MiAxLjk0MiAwIDAgMC0uNjIyIDEuNDE0djcuMzMzYzAgLjUzLjIyNCAxLjA0LjYyMiAxLjQxNS4zOTkuMzc1Ljk0LjU4NSAxLjUwMy41ODVoNy43OTJjLjU2MyAwIDEuMTA0LS4yMSAxLjUwMi0uNTg1LjM5OS0uMzc1LjYyMy0uODg0LjYyMy0xLjQxNVY3Ljg4YS42NDcuNjQ3IDAgMCAwLS4yMDgtLjQ3Mi43MzIuNzMyIDAgMCAwLS41LS4xOTVabTIuNzc3LTUuNDY3YS42OS42OSAwIDAgMC0uMzgzLS4zNi43NDcuNzQ3IDAgMCAwLS4yNjktLjA1M2gtNC4yNWEuNzMyLjczMiAwIDAgMC0uNS4xOTUuNjQ3LjY0NyAwIDAgMC0uMjA4LjQ3MmMwIC4xNzYuMDc1LjM0Ni4yMDcuNDcxYS43MzIuNzMyIDAgMCAwIC41MDEuMTk1aDIuNTQzbC03LjI5NiA2Ljg2YS42NjYuNjY2IDAgMCAwLS4xNTUuMjE3LjYzMy42MzMgMCAwIDAgLjE1NS43My43NDYuNzQ2IDAgMCAwIDEuMDA2IDBsNy4yODktNi44NjdWNmMwIC4xNzYuMDc1LjM0Ni4yMDcuNDcxYS43MzIuNzMyIDAgMCAwIC41MDEuMTk1Yy4xODggMCAuMzY4LS4wNy41MDEtLjE5NUEuNjQ3LjY0NyAwIDAgMCAxNS41ODUgNlYyYS42MzMuNjMzIDAgMCAwLS4wNTctLjI1NFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTE0LjYxMyA3Ljk4QzEzLjI2NyA0Ljg1MyAxMC43MzMgMi45MTMgOCAyLjkxM2MtMi43MzMgMC01LjI2NyAxLjk0LTYuNjEzIDUuMDY3YS42NjcuNjY3IDAgMCAwIDAgLjUzM0MyLjczMyAxMS42NCA1LjI2NyAxMy41OCA4IDEzLjU4YzIuNzMzIDAgNS4yNjctMS45NCA2LjYxMy01LjA2N2EuNjY3LjY2NyAwIDAgMCAwLS41MzNaTTggMTIuMjQ2Yy0yLjExMyAwLTQuMTEzLTEuNTI2LTUuMjY3LTQgMS4xNTQtMi40NzMgMy4xNTQtNCA1LjI2Ny00IDIuMTEzIDAgNC4xMTMgMS41MjcgNS4yNjcgNC0xLjE1NCAyLjQ3NC0zLjE1NCA0LTUuMjY3IDRaTTggNS41OGEyLjY2NyAyLjY2NyAwIDEgMCAwIDUuMzMzQTIuNjY3IDIuNjY3IDAgMCAwIDggNS41OFptMCA0YTEuMzMzIDEuMzMzIDAgMSAxIDAtMi42NjdBMS4zMzMgMS4zMzMgMCAwIDEgOCA5LjU4WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNTAgMTUwXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxjaXJjbGUgY3g9XFxcIjc1XFxcIiBjeT1cXFwiNzVcXFwiIHI9XFxcIjc1XFxcIiBmaWxsPVxcXCJ1cmwoI2ZvbGRlcl9zdmdfX2EpXFxcIi8+PHBhdGggZD1cXFwiTTQ1LjU0OCA1NC4yMmMwLTIuMzggMC0zLjU3LjQ3LTQuNDc1YTQuMTc4IDQuMTc4IDAgMCAxIDEuNzgyLTEuNzgxYy45MDYtLjQ3IDIuMDk1LS40NyA0LjQ3NS0uNDdoMTcuNTU3YzEuMDEyIDAgMS41MTggMCAxLjk5NS4xMTMuNDA2LjA5Ni43OTUuMjUzIDEuMTU0LjQ2NS40MjMuMjUuNzg4LjYgMS41MTcgMS4zMDJsLjQzLjQxNmMuNzMuNzAyIDEuMDk0IDEuMDUzIDEuNTE3IDEuMzAyLjM2LjIxMi43NDguMzY5IDEuMTU0LjQ2NS40NzcuMTE0Ljk4My4xMTQgMS45OTYuMTE0aDE3LjcxOGMyLjM3OSAwIDMuNTY4IDAgNC40NzQuNDdhNC4xODIgNC4xODIgMCAwIDEgMS43ODIgMS43ODJjLjQ3LjkwNi40NyAyLjA5NS40NyA0LjQ3NHY0MC4wNDZjMCAxLjE5IDAgMS43ODQtLjIzNSAyLjIzN2EyLjA4MyAyLjA4MyAwIDAgMS0uODkxLjg5MWMtLjQ1My4yMzUtMS4wNDguMjM1LTIuMjM3LjIzNUg1MS42MDJjLTIuMTQxIDAtMy4yMTIgMC00LjAyNy0uNDIzYTMuNzYzIDMuNzYzIDAgMCAxLTEuNjA0LTEuNjA0Yy0uNDIzLS44MTUtLjQyMy0xLjg4NS0uNDIzLTQuMDI3VjU0LjIyWlxcXCIgZmlsbD1cXFwidXJsKCNmb2xkZXJfc3ZnX19iKVxcXCIvPjxwYXRoIGQ9XFxcIk02Ni42NTYgNjIuMzExaDM4LjUzMWMxLjY3MiAwIDIuOTA0IDAgMy44My4xMzMuOTIuMTMzIDEuNDk5LjM5IDEuODk0Ljg3Ny4zOTQuNDg2LjUyOCAxLjEwNi40NjcgMi4wMzQtLjA2MS45MzMtLjMxNCAyLjE0LS42NTggMy43NzVsLTUuODk0IDI3Ljk5MmMtLjIzNSAxLjExNy0uNDA4IDEuOTM4LS42MjEgMi41NjItLjIxMS42MTktLjQ1NSAxLjAyMy0uODE5IDEuMzE4LS4zNjMuMjk1LS44MDguNDUtMS40NTguNTI5LS42NTQuMDgtMS40OTMuMDgxLTIuNjM0LjA4MUg1MC4xNTdjLjkyLTEuMTAxIDEuNDIyLTIuMjQ1IDEuOTE3LTMuODYxLjIyNS0uNzM0LjQ1LTEuNTY4LjcxMi0yLjU0MmwuMTY4LS42MjJjLjMzNy0xLjI0OC43NDItMi43MTQgMS4yOC00LjQ3NCAxLjU1Mi01LjA2IDUuMTA1LTE3LjI0MyA2Ljk4OC0yMy43MjIuMjk3LTEuMDIxLjUxNS0xLjc3Ljc1NS0yLjMzOS4yMzgtLjU2My40OS0uOTMuODQyLTEuMTk0LjM1Mi0uMjY1Ljc3NC0uNDA0IDEuMzgyLS40NzUuNjEyLS4wNzIgMS4zOTItLjA3MiAyLjQ1NS0uMDcyWlxcXCIgZmlsbD1cXFwiI0I5RERGRlxcXCIgc3Ryb2tlPVxcXCJ1cmwoI2ZvbGRlcl9zdmdfX2MpXFxcIiBzdHJva2Utd2lkdGg9XFxcIi4zOVxcXCIvPjxwYXRoIGQ9XFxcIk02Ni42NTYgNjIuMzExaDM4LjUzMWMxLjY3MiAwIDIuOTA0IDAgMy44My4xMzMuOTIuMTMzIDEuNDk5LjM5IDEuODk0Ljg3Ny4zOTQuNDg2LjUyOCAxLjEwNi40NjcgMi4wMzQtLjA2MS45MzMtLjMxNCAyLjE0LS42NTggMy43NzVsLTUuODk0IDI3Ljk5MmMtLjIzNSAxLjExNy0uNDA4IDEuOTM4LS42MjEgMi41NjItLjIxMS42MTktLjQ1NSAxLjAyMy0uODE5IDEuMzE4LS4zNjMuMjk1LS44MDguNDUtMS40NTguNTI5LS42NTQuMDgtMS40OTMuMDgxLTIuNjM0LjA4MUg1MC4xNTdjLjkyLTEuMTAxIDEuNDIyLTIuMjQ1IDEuOTE3LTMuODYxLjIyNS0uNzM0LjQ1LTEuNTY4LjcxMi0yLjU0MmwuMTY4LS42MjJjLjMzNy0xLjI0OC43NDItMi43MTQgMS4yOC00LjQ3NCAxLjU1Mi01LjA2IDUuMTA1LTE3LjI0MyA2Ljk4OC0yMy43MjIuMjk3LTEuMDIxLjUxNS0xLjc3Ljc1NS0yLjMzOS4yMzgtLjU2My40OS0uOTMuODQyLTEuMTk0LjM1Mi0uMjY1Ljc3NC0uNDA0IDEuMzgyLS40NzUuNjEyLS4wNzIgMS4zOTItLjA3MiAyLjQ1NS0uMDcyWlxcXCIgZmlsbD1cXFwidXJsKCNmb2xkZXJfc3ZnX19kKVxcXCIgZmlsbC1vcGFjaXR5PVxcXCIuOFxcXCIgc3Ryb2tlPVxcXCJ1cmwoI2ZvbGRlcl9zdmdfX2UpXFxcIiBzdHJva2Utd2lkdGg9XFxcIi4zOVxcXCIvPjxwYXRoIGQ9XFxcIk01NS45OTMgNTEuODI4aDguMzU2YTEuOTMzIDEuOTMzIDAgMCAxIDAgMy44NjZoLTguMzU2YTEuOTMzIDEuOTMzIDAgMSAxIDAtMy44NjZaXFxcIiBmaWxsPVxcXCJ1cmwoI2ZvbGRlcl9zdmdfX2YpXFxcIiBmaWxsLW9wYWNpdHk9XFxcIi45XFxcIiBzdHJva2U9XFxcInVybCgjZm9sZGVyX3N2Z19fZylcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjMxMlxcXCIvPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiZm9sZGVyX3N2Z19fYVxcXCIgeDE9XFxcIjc1XFxcIiB5MT1cXFwiMFxcXCIgeDI9XFxcIjc1XFxcIiB5Mj1cXFwiMTUwXFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiI0UzRUNGQVxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiI0RBRTdGRlxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJmb2xkZXJfc3ZnX19iXFxcIiB4MT1cXFwiNjIuNDJcXFwiIHkxPVxcXCI1OS4zNzRcXFwiIHgyPVxcXCIxMDYuNTU0XFxcIiB5Mj1cXFwiNzUuNzE5XFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiIzdGQzBGQlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiIzQwODhGNFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJmb2xkZXJfc3ZnX19jXFxcIiB4MT1cXFwiNDYuNTkzXFxcIiB5MT1cXFwiNjQuOTUxXFxcIiB4Mj1cXFwiNjguNzQ2XFxcIiB5Mj1cXFwiMTE4LjM3MlxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIi43NjZcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJmb2xkZXJfc3ZnX19kXFxcIiB4MT1cXFwiMTA4LjVcXFwiIHkxPVxcXCI5OFxcXCIgeDI9XFxcIjQxXFxcIiB5Mj1cXFwiOTkuNVxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNCNEQ0RjdcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIi4xMjhcXFwiIHN0b3AtY29sb3I9XFxcIiM4QkJERkJcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIi4yNjJcXFwiIHN0b3AtY29sb3I9XFxcIiM5MUMyRkJcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIi43NTlcXFwiIHN0b3AtY29sb3I9XFxcIiM5RkNGRkRcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiM5RUNFRkRcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiZm9sZGVyX3N2Z19fZVxcXCIgeDE9XFxcIjQ2LjU5M1xcXCIgeTE9XFxcIjY0Ljk1MVxcXCIgeDI9XFxcIjY4Ljc0NlxcXCIgeTI9XFxcIjExOC4zNzJcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIuNzY2XFxcIiBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIiBzdG9wLW9wYWNpdHk9XFxcIjBcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiZm9sZGVyX3N2Z19fZlxcXCIgeDE9XFxcIjUyLjk1MlxcXCIgeTE9XFxcIjUxLjM5M1xcXCIgeDI9XFxcIjcwLjEwNlxcXCIgeTI9XFxcIjU2LjQ2MVxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJmb2xkZXJfc3ZnX19nXFxcIiB4MT1cXFwiNTEuNzgyXFxcIiB5MT1cXFwiNTIuNTYyXFxcIiB4Mj1cXFwiNjAuMTcxXFxcIiB5Mj1cXFwiNTUuODVcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIxXFxcIiBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIiBzdG9wLW9wYWNpdHk9XFxcIjBcXFwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjY2IDYzXFxcIj48cGF0aCBkPVxcXCJNLjgzIDU4LjkxVjI4LjdoOC43MjV2MzAuMjFILjgzWm0zNS4wMTctMi45M2MtMS45ODMgMi40MTYtNC44MzUgMy43NzctOC42MTUgMy43NzctNi4wNzYgMC0xMC45NzEtMy43NzgtMTAuOTcxLTkuNjAzIDAtNS43NjMgNC44OTgtOC42MSAxMS43NzctOC45ODUgNS4yNy0uMzEgNi45NDMtLjg2OCA2Ljk0My0yLjY2MyAwLTEuNzM2LTEuNjExLTIuOTEzLTQuNDYzLTIuOTEzLTMuNDcgMC00Ljk2IDEuNzM2LTUuMTQ1IDMuNTk0aC04LjQ5NGMuNDM0LTYuNjI4IDUuMzkyLTExLjIxNCAxMy43MDEtMTEuMjE0IDguMTIyIDAgMTMuMzMgNC4zOTggMTMuMzMgMTIuNjM3djE4LjQ2M2gtNy4yNTRsLS44MDktMy4wOTRabS0xMC43ODYtNi4xOTVjMCAxLjczNiAxLjU1IDIuNzg4IDQuMDMgMi43ODggMy4zNDggMCA2LjAxMi0xLjg1OCA2LjAxMi01LjYzOFY0NS44MnMtMS42MTEuNzQzLTQuOTYuOTNjLTMuNjU4LjE4NS01LjA4MiAxLjM2Mi01LjA4MiAzLjAzNVptMzguMzA3IDkuNDE2Yy02LjYzMiAwLTEwLjQ3Ny0zLjg0LTEwLjQ3Ny0xMC41MzNWMzYuODM2aC01LjA4M3YtOC4xMTdoNS4wODN2LTQuNDYxbDguODAyLTcuNDM0VjI4LjcyaDcuNjI2djguMTE3aC03LjYyNlY0Ny40M2MwIDIuOTEyIDEuOTIyIDMuNTkzIDMuNzIgMy41OTNhOS41MzkgOS41MzkgMCAwIDAgMy43MjEtLjgwNXY3Ljk5MmMwIC4wMDItMi4zNTUuOTkyLTUuNzY2Ljk5MlpNLjA4IDE5LjYzNGMwLTIuODUgMi4yMy01LjE0MiA1LjA4Mi01LjE0MmE1LjEzIDUuMTMgMCAwIDEgNS4xNDUgNS4xNDJjMCAyLjc4OC0yLjI5MyA1LjA4LTUuMTQ1IDUuMDhhNS4wNjMgNS4wNjMgMCAwIDEtNS4wODItNS4wOFpNNzUuODA5IDU4LjkxVjI4LjdoOC43MjZ2MzAuMjFoLTguNzI2Wm0yMC4xNTQtMzkuMjAyYzAtMS40LS4xOS0yLjc2LS41MzctNC4wNTNhMTUuNTEgMTUuNTEgMCAwIDAtMS41NjktMy43NzIgMTUuNjY1IDE1LjY2NSAwIDAgMC0yLjQ4OS0zLjI0MSAxNS43MzIgMTUuNzMyIDAgMCAwLTcuMDE4LTQuMDUgMTUuNjU4IDE1LjY1OCAwIDAgMC00LjA1Mi0uNTMzaC0uMDA2YTE1Ljc1IDE1Ljc1IDAgMCAwLTQuMDQ5LjUzYy0xLjM0LjM1Ny0yLjYwNS44ODgtMy43NzcgMS41NjVBMTUuNjcgMTUuNjcgMCAwIDAgNjkuMjIgOC42NGExNS43NyAxNS43NyAwIDAgMC0yLjQ5MiAzLjI0MiAxNS42NDggMTUuNjQ4IDAgMCAwLTEuNTcyIDMuNzc0bDIuMjQyLjYwMmExMy40MjcgMTMuNDI3IDAgMCAxIDMuNDYyLTUuOTc4IDEzLjQyNiAxMy40MjYgMCAwIDEgNS45ODQtMy40NSAxMy40MjYgMTMuNDI2IDAgMCAxIDMuNDQ4LS40NWguMDA2YzEuMTk1IDAgMi4zNS4xNTggMy40NTQuNDUzYTEzLjQxMiAxMy40MTIgMCAwIDEgNS45OCAzLjQ0OWMuODE5LjgyIDEuNTMxIDEuNzUgMi4xMTkgMi43NmExMy4zIDEzLjMgMCAwIDEgMS43OTMgNi42NjR2LjAxMmExMy4zOCAxMy4zOCAwIDAgMS0uNDUxIDMuNDQzIDEzLjIxNyAxMy4yMTcgMCAwIDEtMS4zMzQgMy4yMTlsMi4wMSAxLjE2YTE1LjUzOSAxNS41MzkgMCAwIDAgMS41NjYtMy43NzggMTUuNyAxNS43IDAgMCAwIC41My00LjA0MWwtLjAwMi0uMDEyWlxcXCIgZmlsbD1cXFwiI2ZmZlxcXCIvPjxwYXRoIGQ9XFxcIk0xMDAuMDIzIDE5LjcwOGExOS42NTUgMTkuNjU1IDAgMCAwLTIuNjQ0LTkuODU1IDE5LjgxIDE5LjgxIDAgMCAwLTcuMjItNy4yMTNBMTkuNjEyIDE5LjYxMiAwIDAgMCA4NS40MDMuNjcgMTkuODEgMTkuODEgMCAwIDAgODAuMjk4IDBoLS4wMDZjLTEuNzY1IDAtMy40NzMuMjMzLTUuMTAyLjY2NmExOS41MTMgMTkuNTEzIDAgMCAwLTQuNzU5IDEuOTY5IDE5LjgyNCAxOS44MjQgMCAwIDAtNC4wODYgMy4xMzRsMS4yMzEgMS4yM2ExOC4xMDYgMTguMTA2IDAgMCAxIDMuNzI2LTIuODU1IDE3LjgwMyAxNy44MDMgMCAwIDEgNC4zNC0xLjc5MyAxOC4wODQgMTguMDg0IDAgMCAxIDQuNjQ4LS42MDdoLjAwNWExNy45NSAxNy45NSAwIDAgMSAxMi43MTMgNS4yNjEgMTcuOTMzIDE3LjkzMyAwIDAgMSA1LjI3MyAxMi43MDN2LjAxMWExOC4wMyAxOC4wMyAwIDAgMS0uNjA3IDQuNjQzIDE3LjY3NSAxNy42NzUgMCAwIDEtMS43OTcgNC4zMzcgMTguMDIzIDE4LjAyMyAwIDAgMS0yLjg1NyAzLjcyM2wxLjIzMSAxLjIzMWExOS43NDMgMTkuNzQzIDAgMCAwIDMuMTM2LTQuMDg0IDE5LjYgMTkuNiAwIDAgMCAxLjk3LTQuNzU2Yy40MzQtMS42MjUuNjY2LTMuMzMyLjY2Ni01LjA5NHYtLjAxWlxcXCIgZmlsbD1cXFwiI2ZmZlxcXCIvPjxwYXRoIGQ9XFxcIk05MC45NDUgMTYuODU1YTEwLjk0OCAxMC45NDggMCAwIDAtMS4xMDQtMi42NTUgMTEuMTU1IDExLjE1NSAwIDAgMC0xLjc1LTIuMjggMTEuMDQ4IDExLjA0OCAwIDAgMC0yLjI4Mi0xLjc0N0ExMC45NjQgMTAuOTY0IDAgMCAwIDgwLjMgOC42OTVoLS4wMDZjLS45ODcgMC0xLjk0LjEzLTIuODQ5LjM3MmExMC45MSAxMC45MSAwIDAgMC0yLjY2IDEuMSAxMC45OTQgMTAuOTk0IDAgMCAwLTQuMDM3IDQuMDI3IDExIDExIDAgMCAwLTEuNDg0IDUuNTF2LjAxMmExMC45MjQgMTAuOTI0IDAgMCAwIDEuNDc2IDUuNTA1bDMuMDEzLTEuNzM4YTcuNTM1IDcuNTM1IDAgMCAxLTEuMDEtMy43N3YtLjAxYTcuNTUzIDcuNTUzIDAgMCAxIDcuNTQ4LTcuNTMzaC4wMDZhNy41MjQgNy41MjQgMCAwIDEgMy43NjkgMS4wMTIgNy41NSA3LjU1IDAgMCAxIDMuNTEzIDQuNTcyYy4xNjcuNjIuMjU4IDEuMjc2LjI1OCAxLjk1MWgzLjQ3OWMuMDAzLS45ODQtLjEyOC0xLjk0LS4zNzItMi44NVpcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48cGF0aCBkPVxcXCJNODcuNTg1IDE3Ljc2NWE3LjU0MiA3LjU0MiAwIDAgMC0xLjk1NS0zLjM4bC0xLjY0IDEuNjM5YTUuMjY0IDUuMjY0IDAgMCAxIDEuMzU0IDIuMzQzIDUuMTg0IDUuMTg0IDAgMCAxIDAgMi43MDUgNS4yMzkgNS4yMzkgMCAwIDEtMy42OTggMy42OTUgNS4xOTUgNS4xOTUgMCAwIDEtMi43MDcgMCA1LjI5NiA1LjI5NiAwIDAgMS0xLjI2LS41MjFsLTEuMTYgMi4wMDhhNy41MjggNy41MjggMCAwIDAgMy43NzQgMS4wMWMuNjc3IDAgMS4zMy0uMDkxIDEuOTU0LS4yNTZhNy41NTMgNy41NTMgMCAwIDAgNC41ODQtMy41MTcgNy41NDQgNy41NDQgMCAwIDAgMS4wMTMtMy43NzEgNy41IDcuNSAwIDAgMC0uMjU5LTEuOTU1WlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIvPjxwYXRoIGQ9XFxcIk05MS44NTMgMTMuMDQ2YTEzLjQzNSAxMy40MzUgMCAwIDAtMi4xMi0yLjc2NSAxMy4zNDMgMTMuMzQzIDAgMCAwLTIuNzY2LTIuMTE4IDEzLjI4NyAxMy4yODcgMCAwIDAtNi42NzUtMS43OWMtMS4xOTcgMC0yLjM1Mi4xNTktMy40NTYuNDU0LTEuMTQxLjMwMy0yLjIyLjc1Ny0zLjIxOCAxLjMzNmExMy40MzYgMTMuNDM2IDAgMCAwLTIuNzY3IDIuMTE4IDEzLjMzNCAxMy4zMzQgMCAwIDAtMi4xMiAyLjc2NSAxMy4yNzIgMTMuMjcyIDAgMCAwLTEuNzkgNi42N2gyLjMyYzAtLjk4Ni4xMzEtMS45NDIuMzc1LTIuODUyYTExLjA4OCAxMS4wODggMCAwIDEgMi44NTUtNC45NCAxMS4wMDIgMTEuMDAyIDAgMCAxIDIuMjg0LTEuNzUgMTEuMDMgMTEuMDMgMCAwIDEgMi42Ni0xLjEwNCAxMS4wMiAxMS4wMiAwIDAgMSAyLjg1NC0uMzc0Yy45ODggMCAxLjk0NC4xMyAyLjg1NS4zNzRhMTEuMDk5IDExLjA5OSAwIDAgMSA0Ljk0MyAyLjg1MyAxMC45OSAxMC45OSAwIDAgMSAxLjc1MSAyLjI4M2MuNDc3LjgyNi44NTIgMS43MTYgMS4xMDQgMi42NThsMi4yNDItLjYwMmExMy4xOTQgMTMuMTk0IDAgMCAwLTEuMzMtMy4yMTZaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIi8+PHBhdGggZD1cXFwiTTk3LjY3NCAxNS4wNjNhMTcuNzkxIDE3Ljc5MSAwIDAgMC0xLjgtNC4zMzYgMTguMDQzIDE4LjA0MyAwIDAgMC02LjU4Ni02LjU4MyAxNy45MyAxNy45MyAwIDAgMC04Ljk5Ni0yLjQwOGMtMS42MTIgMC0zLjE3Mi4yMTMtNC42NTcuNjFhMTcuODE3IDE3LjgxNyAwIDAgMC00LjMzOSAxLjc5OCAxOC4wMzIgMTguMDMyIDAgMCAwLTYuNTg2IDYuNTgzbDIuMDEyIDEuMTYzYTE1LjY3NiAxNS42NzYgMCAwIDEgMi40ODktMy4yNDVjLjk2NS0uOTY0IDIuMDU3LTEuOCAzLjI0Ni0yLjQ4N2ExNS43MDYgMTUuNzA2IDAgMCAxIDMuNzc3LTEuNTY5IDE1LjY4IDE1LjY4IDAgMCAxIDguMTEgMGMxLjM0LjM1OCAyLjYwNi44OTEgMy43NzggMS41NjlhMTUuNjg1IDE1LjY4NSAwIDAgMSAzLjI0NiAyLjQ4NyAxNS42NzYgMTUuNjc2IDAgMCAxIDIuNDg5IDMuMjQ1IDE1LjY4NCAxNS42ODQgMCAwIDEgMS41NjkgMy43NzQgMTUuNjU0IDE1LjY1NCAwIDAgMSAwIDguMTA2bDIuMjQ1LjYwMWMuMzk3LTEuNDgzLjYxLTMuMDQzLjYxLTQuNjU0YTE3Ljg3NSAxNy44NzUgMCAwIDAtLjYwOC00LjY1NFpcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiLz48cGF0aCBkPVxcXCJNODAuMjkzIDI0Ljk0NGMyLjg4OCAwIDUuMjMtMi4zNCA1LjIzLTUuMjI3YTUuMjI5IDUuMjI5IDAgMCAwLTUuMjMtNS4yMjcgNS4yMjggNS4yMjggMCAwIDAtNS4yMyA1LjIyNyA1LjIyOCA1LjIyOCAwIDAgMCA1LjIzIDUuMjI3Wm0yMC42MTUgMTUuNDM2VjI5LjU0M2gyLjMwNFY0MC4zOGgtMi4zMDRabTYuNjE4LTMuNzg3djMuNzg3aC0yLjE5NnYtNy41NzZoMi4xNjV2LjUyNWEyLjUzOSAyLjUzOSAwIDAgMSAxLjc5My0uNzEyYzEuODU2IDAgMy4wNzkgMS4yMDYgMy4wNzkgMy4zNTV2NC40MDVoLTIuMTk2di00LjIzNWMwLS44MDItLjM3Mi0xLjQ4My0xLjI1NC0xLjQ4My0xLjAzMy4wMDMtMS4zOTEuNzc0LTEuMzkxIDEuOTM0Wm05LjY2NiAzLjgxN2MtMS42NTUgMC0yLjYxNC0uOTU4LTIuNjE0LTIuNjI4di0yLjk1M2gtMS4yNjh2LTIuMDI1aDEuMjY4di0xLjExMWwyLjE5Ni0xLjg1NXYyLjk3aDEuOTAydjIuMDI0aC0xLjkwMnYyLjY0M2MwIC43MjcuNDguODk3LjkyOC44OTcuNTExIDAgLjkyOC0uMjAyLjkyOC0uMjAydjEuOTk0cy0uNTg3LjI0Ny0xLjQzOC4yNDdabTEwLjE5My0zLjIzaC01LjM1MmMuMTI1Ljc3NS43NTcgMS4zNjIgMS43IDEuMzYyLjYzNSAwIDEuMDA0LS4yNjQgMS4yMzctLjY1aDIuMzY3Yy0uNTExIDEuNjQtMS42ODYgMi42Ni0zLjU3MyAyLjY2LTIuMTk3IDAtMy45NTktMS41My0zLjk1OS0zLjkxIDAtMi4yODkgMS42MDktNC4wMTkgMy44MzctNC4wMTkgMi40ODkgMCAzLjc1NyAxLjk2MyAzLjc1NyAzLjk4OCAwIC4xOTgtLjAxNC41Ny0uMDE0LjU3Wm0tMy43MTUtMi42MjhjLS44MzQgMC0xLjM5My41MS0xLjUzMiAxLjE2aDIuOTRjLS4wNDYtLjY2NC0uNjE5LTEuMTYtMS40MDgtMS4xNlptMTAuMjM5LTEuMzE1djIuMTY0cy0uNTczLS41ODctMS40MzktLjU4N2MtLjY2NCAwLTEuNDA3LjM1NC0xLjQwNyAxLjQ2OXY0LjA5NWgtMi4xOTd2LTcuNTc1aDIuMTY1di42MzVjLS4wMTQgMCAuNDM1LS43NDMgMS41MTYtLjc0My45MjggMCAxLjM2Mi41NDIgMS4zNjIuNTQyWm0zLjQwMyAzLjM1NnYzLjc4N2gtMi4xOTd2LTcuNTc2aDIuMTY1di41MjVhMi41NDMgMi41NDMgMCAwIDEgMS43OTQtLjcxMmMxLjg1NiAwIDMuMDc5IDEuMjA2IDMuMDc5IDMuMzU1djQuNDA1aC0yLjE5N3YtNC4yMzVjMC0uODAyLS4zNzEtMS40ODMtMS4yNTQtMS40ODMtMS4wMzYuMDAzLTEuMzkuNzc0LTEuMzkgMS45MzRabTExLjE2NiAzLjAxNWMtLjQ5Ni42MDQtMS4yMDYuOTQ1LTIuMTUxLjk0NS0xLjUxNSAwLTIuNzM4LS45NDUtMi43MzgtMi4zOTcgMC0xLjQzOCAxLjIyLTIuMTUgMi45MzctMi4yNCAxLjMxNC0uMDc3IDEuNzM0LS4yMTYgMS43MzQtLjY2NCAwLS40MzQtLjQwMy0uNzI2LTEuMTEzLS43MjYtLjg2NSAwLTEuMjM3LjQzNC0xLjI4NS44OTZoLTIuMTJjLjEwOC0xLjY1MyAxLjM0NS0yLjc5OSAzLjQyLTIuNzk5IDIuMDI2IDAgMy4zMjYgMS4wOTggMy4zMjYgMy4xNTR2NC42MDZoLTEuODExbC0uMTk5LS43NzVabS0yLjY5My0xLjU0NWMwIC40MzQuMzg2LjY5NCAxLjAwNS42OTQuODM0IDAgMS41MDEtLjQ2MiAxLjUwMS0xLjQwNnYtLjI3OHMtLjQwMy4xODQtMS4yMzcuMjMyYy0uOTE0LjA0Ni0xLjI2OS4zNC0xLjI2OS43NThabTkuNTU4IDIuMzQ3Yy0xLjY1NSAwLTIuNjE0LS45NTgtMi42MTQtMi42Mjh2LTIuOTUzaC0xLjI2OXYtMi4wMjVoMS4yNjl2LTEuMTExbDIuMTk2LTEuODU1djIuOTdoMS45MDJ2Mi4wMjRoLTEuOTAydjIuNjQzYzAgLjcyNy40OC44OTcuOTI4Ljg5Ny41MTEgMCAuOTI4LS4yMDIuOTI4LS4yMDJ2MS45OTRzLS41OS4yNDctMS40MzguMjQ3Wm0yLjk1MS05Ljc1M2MwLS43MTIuNTU2LTEuMjgyIDEuMjY4LTEuMjgyLjcxMyAwIDEuMjg2LjU3MyAxLjI4NiAxLjI4MiAwIC42OTUtLjU3MyAxLjI2OC0xLjI4NiAxLjI2OGExLjI2NCAxLjI2NCAwIDAgMS0xLjI2OC0xLjI2OFptLjE3IDkuNzIydi03LjU3NWgyLjE5N3Y3LjU3NWgtMi4xOTdabTMuNzg5LTMuNzg2YzAtMi4yNzIgMS43NDgtMy45NzQgNC4wMzgtMy45NzRzNC4wMzUgMS43MDIgNC4wMzUgMy45NzRjMCAyLjI3MS0xLjc0OCAzLjk1Ni00LjAzNSAzLjk1Ni0yLjI5IDAtNC4wMzgtMS42ODUtNC4wMzgtMy45NTZabTIuMjQ1IDBjMCAxLjExMS43NTcgMS45MTcgMS43OTMgMS45MTdzMS43OTQtLjgwMyAxLjc5NC0xLjkxN2MwLTEuMTEyLS43NTgtMS45MTgtMS43OTQtMS45MThzLTEuNzkzLjgwMy0xLjc5MyAxLjkxOFptOS41NCAwdjMuNzg3aC0yLjE5NnYtNy41NzZoMi4xNjV2LjUyNWEyLjU0IDIuNTQgMCAwIDEgMS43OTMtLjcxMmMxLjg1NiAwIDMuMDc5IDEuMjA2IDMuMDc5IDMuMzU1djQuNDA1aC0yLjE5NnYtNC4yMzVjMC0uODAyLS4zNzItMS40ODMtMS4yNTQtMS40ODMtMS4wMzYuMDAzLTEuMzkxLjc3NC0xLjM5MSAxLjkzNFptMTEuMTY3IDMuMDE1Yy0uNDk3LjYwNC0xLjIwNi45NDUtMi4xNTEuOTQ1LTEuNTE2IDAtMi43MzktLjk0NS0yLjczOS0yLjM5NyAwLTEuNDM4IDEuMjIxLTIuMTUgMi45MzctMi4yNCAxLjMxNC0uMDc3IDEuNzM0LS4yMTYgMS43MzQtLjY2NCAwLS40MzQtLjQwMy0uNzI2LTEuMTEyLS43MjYtLjg2NiAwLTEuMjM3LjQzNC0xLjI4Ni44OTZoLTIuMTE5Yy4xMDctMS42NTMgMS4zNDUtMi43OTkgMy40MTktMi43OTkgMi4wMjYgMCAzLjMyNiAxLjA5OCAzLjMyNiAzLjE1NHY0LjYwNmgtMS44MWwtLjE5OS0uNzc1Wm0tMi42OTMtMS41NDVjMCAuNDM0LjM4Ni42OTQgMS4wMDQuNjk0LjgzNSAwIDEuNTAyLS40NjIgMS41MDItMS40MDZ2LS4yNzhzLS40MDMuMTg0LTEuMjM4LjIzMmMtLjkxMS4wNDYtMS4yNjguMzQtMS4yNjguNzU4Wm02LjUyNCAyLjMxN1YyOS41NDNoMi4xOTZWNDAuMzhoLTIuMTk2Wm0xNC4wODktMTAuODM3IDQuMjQgMTAuODM3aC0yLjM4MWwtLjg2Ni0yLjEzM2gtNC4xOTFsLS44NTEgMi4xMzNoLTIuMzgxbDQuMjM5LTEwLjgzN2gyLjE5MVptLTEuMDk4IDMuMTIzLTEuMzQ1IDMuNTM5aDIuNjlsLTEuMzQ1LTMuNTRabTYuMzg1LTIuMDA5YzAtLjcxMi41NTYtMS4yODIgMS4yNjktMS4yODIuNzEyIDAgMS4yODUuNTczIDEuMjg1IDEuMjgyIDAgLjY5NS0uNTczIDEuMjY4LTEuMjg1IDEuMjY4YTEuMjY0IDEuMjY0IDAgMCAxLTEuMjY5LTEuMjY4Wm0uMTcgOS43MjJ2LTcuNTc1aDIuMTk3djcuNTc1aC0yLjE5N1ptMy43ODktMy43ODZjMC0yLjM5NiAxLjcxNi0zLjk3MyAzLjgxOS0zLjk3My44NjYgMCAxLjU5Mi4zMjMgMS45ODEuNjY0di0zLjc0MWgyLjE5NlY0MC4zOGgtMi4xNjV2LS41NDJjLS40LjM4Ni0xLjE2LjcxMi0yLjAwOS43MTItMi4xMDYgMC0zLjgyMi0xLjUxNS0zLjgyMi0zLjk1NlptNS44MzEgMGMwLTEuMTc0LS43NzItMS45OC0xLjc5My0xLjk4LTEuMDIyIDAtMS43OTQuODAzLTEuNzk0IDEuOTggMCAxLjE3NS43NzIgMS45OCAxLjc5NCAxLjk4IDEuMDIxIDAgMS43OTMtLjgwNSAxLjc5My0xLjk4Wk0xMDAuMTk2IDQ4LjA5aDguNTIydjIuMTE4aC0zLjExdjguNzE5aC0yLjMwNHYtOC43MTloLTMuMTExVjQ4LjA5aC4wMDNabTEzLjg4OCAzLjY5MnYyLjE2NHMtLjU3My0uNTg3LTEuNDM5LS41ODdjLS42NjQgMC0xLjQwNy4zNTQtMS40MDcgMS40Njl2NC4wOTVoLTIuMTk2di03LjU3NWgyLjE2NXYuNjM1Yy0uMDE0IDAgLjQzNC0uNzQzIDEuNTE1LS43NDMuOTMxLjAwMyAxLjM2Mi41NDIgMS4zNjIuNTQyWm01Ljg5MSA2LjM3MWMtLjQ5Ni42MDQtMS4yMDYuOTQ1LTIuMTUxLjk0NS0xLjUxNSAwLTIuNzM4LS45NDUtMi43MzgtMi4zOTcgMC0xLjQzOCAxLjIyLTIuMTUgMi45MzctMi4yNCAxLjMxNC0uMDc3IDEuNzM0LS4yMTYgMS43MzQtLjY2NCAwLS40MzQtLjQwMy0uNzI2LTEuMTEyLS43MjYtLjg2NiAwLTEuMjM4LjQzNC0xLjI4Ni44OTZoLTIuMTJjLjEwOC0xLjY1MyAxLjM0NS0yLjc5OSAzLjQyLTIuNzk5IDIuMDI2IDAgMy4zMjYgMS4wOTggMy4zMjYgMy4xNTR2NC42MDVoLTEuODExbC0uMTk5LS43NzRabS0yLjY5LTEuNTQ1YzAgLjQzNC4zODYuNjk1IDEuMDA1LjY5NS44MzQgMCAxLjUwMS0uNDYzIDEuNTAxLTEuNDA3di0uMjc4cy0uNDAzLjE4NC0xLjIzNy4yMzJjLS45MTQuMDQ2LTEuMjY5LjM0LTEuMjY5Ljc1OFptOC43MjEtMS40N3YzLjc4N2gtMi4xOTd2LTcuNTc2aDIuMTY1di41MjVhMi41NCAyLjU0IDAgMCAxIDEuNzk0LS43MTJjMS44NTYgMCAzLjA3OSAxLjIwNSAzLjA3OSAzLjM1NXY0LjQwNWgtMi4xOTd2LTQuMjM1YzAtLjgwMi0uMzcxLTEuNDgzLTEuMjU0LTEuNDgzLTEuMDMzLjAwMy0xLjM5Ljc3NC0xLjM5IDEuOTM0Wm0xMC43OTUgMS42MDdjMC0uMjMyLS4xMzktLjQxNi0uNzQ0LS41NDFsLTEuMTQzLS4yMzNjLTEuNzE3LS4zNC0yLjQ0NC0xLjE2LTIuNDQ0LTIuMjg4IDAtMS4zMyAxLjAwNS0yLjUxOSAzLjA5NC0yLjUxOSAyLjEwMiAwIDMuMDQ3IDEuMTc0IDMuMjAxIDIuNDloLTIuMDg5Yy0uMTI1LS40MTctLjQ4LS42NjQtMS4xMjktLjY2NC0uNjE5IDAtLjk2LjIxNi0uOTYuNTI1IDAgLjIzMy4xODUuMzcyLjc1OC40OGwxLjE0NC4yMzJjMS42MjMuMzIzIDIuNDI5IDEuMDgzIDIuNDI5IDIuMzggMCAxLjQ2OS0xLjA2NyAyLjQ5LTMuMTg3IDIuNDktMi4xNjUgMC0zLjMyNi0xLjAyMS0zLjU0Mi0yLjU5OGgyLjIxNGMuMTI1LjUyNC41MTEuODAyIDEuMzI4LjgwMi43NDYgMCAxLjA3LS4yMTUgMS4wNy0uNTU2Wm0xMS41NTItMS42MDhjMCAyLjM5Ny0xLjcxNyAzLjk1Ny0zLjgxOSAzLjk1Ny0uODY2IDAtMS41OTItLjMxLTEuOTgxLS42NXYzLjQ3N2gtMi4xOTdWNTEuMzQ4aDIuMTY2di41NDJjLjQwMy0uMzg2IDEuMTYtLjcyNiAyLjAxMi0uNzI2IDIuMTAyIDAgMy44MTkgMS41MTcgMy44MTkgMy45NzNabS01LjgzMSAwYzAgMS4xNzUuNzc0IDEuOTggMS43OTMgMS45OCAxLjAyMiAwIDEuNzk0LS44MDMgMS43OTQtMS45OCAwLTEuMTc0LS43NzItMS45OC0xLjc5NC0xLjk4LTEuMDE5LjAwNC0xLjc5My44MDYtMS43OTMgMS45OFptMTEuODc5IDMuMDE2Yy0uNDk3LjYwNC0xLjIwNi45NDUtMi4xNTEuOTQ1LTEuNTE2IDAtMi43MzktLjk0NS0yLjczOS0yLjM5NyAwLTEuNDM4IDEuMjItMi4xNSAyLjkzNy0yLjI0IDEuMzE0LS4wNzcgMS43MzQtLjIxNiAxLjczNC0uNjY0IDAtLjQzNC0uNDAzLS43MjYtMS4xMTItLjcyNi0uODY2IDAtMS4yMzcuNDM0LTEuMjg2Ljg5NmgtMi4xMmMuMTA4LTEuNjUzIDEuMzQ2LTIuNzk5IDMuNDItMi43OTkgMi4wMjYgMCAzLjMyNiAxLjA5OCAzLjMyNiAzLjE1NHY0LjYwNWgtMS44MTFsLS4xOTgtLjc3NFptLTIuNjkzLTEuNTQ1YzAgLjQzNC4zODYuNjk1IDEuMDA0LjY5NS44MzUgMCAxLjUwMS0uNDYzIDEuNTAxLTEuNDA3di0uMjc4cy0uNDAzLjE4NC0xLjIzNy4yMzJjLS45MTEuMDQ2LTEuMjY4LjM0LTEuMjY4Ljc1OFptMTEuNTY2LTQuODI2djIuMTY0cy0uNTczLS41ODctMS40MzktLjU4N2MtLjY2NCAwLTEuNDA3LjM1NC0xLjQwNyAxLjQ2OXY0LjA5NWgtMi4xOTd2LTcuNTc1aDIuMTY2di42MzVjLS4wMTUgMCAuNDM0LS43NDMgMS41MTUtLjc0My45MjguMDAzIDEuMzYyLjU0MiAxLjM2Mi41NDJabTguNDI4IDMuOTQ0aC01LjM1MmMuMTI1Ljc3NC43NTggMS4zNiAxLjcwMyAxLjM2LjYzNiAwIDEuMDA1LS4yNjMgMS4yMzctLjY0OWgyLjM2N2MtLjUxMSAxLjY0LTEuNjg2IDIuNjYtMy41NzMgMi42Ni0yLjE5NiAwLTMuOTU5LTEuNTMtMy45NTktMy45MSAwLTIuMjg5IDEuNjEtNC4wMTkgMy44MzctNC4wMTkgMi40ODkgMCAzLjc1NyAxLjk2MyAzLjc1NyAzLjk4OCAwIC4yLS4wMTcuNTctLjAxNy41N1ptLTMuNzExLTIuNjI3Yy0uODM1IDAtMS4zOTQuNTEtMS41MzMgMS4xNmgyLjk0Yy0uMDQ1LS42NjYtLjYxOS0xLjE2LTEuNDA3LTEuMTZabTcuMzkyIDIuMDM5djMuNzg3aC0yLjE5NnYtNy41NzZoMi4xNjV2LjUyNWEyLjUzOCAyLjUzOCAwIDAgMSAxLjc5My0uNzEyYzEuODU2IDAgMy4wNzkgMS4yMDUgMy4wNzkgMy4zNTV2NC40MDVoLTIuMTk2di00LjIzNWMwLS44MDItLjM3Mi0xLjQ4My0xLjI1NC0xLjQ4My0xLjAzNi4wMDMtMS4zOTEuNzc0LTEuMzkxIDEuOTM0Wm0xMS41NjcuODM3aDIuNDEyYy0uMzU3IDEuODQtMS43NDggMy4xMjMtMy43OTEgMy4xMjMtMi4yOSAwLTMuOTktMS42ODUtMy45OS0zLjk1NyAwLTIuMjcxIDEuNzAzLTMuOTczIDMuOTktMy45NzMgMS45OTUgMCAzLjM4OCAxLjIzNiAzLjY2NiAzLjAyOWgtMi40MTVjLS4xNy0uNTczLS42NjQtLjk1OS0xLjMyOC0uOTU5LS45MjggMC0xLjY3MS43ODktMS42NzEgMS45IDAgMS4xMTIuNzQzIDEuOSAxLjcwMyAxLjkuNzEyLjAwNCAxLjI0LS40MTYgMS40MjQtMS4wNjNabTUuMTAyIDYuMDI3Yy0uOTkgMC0xLjQ4NC0uMjY0LTEuNDg0LS4yNjR2LTIuMDFzLjQ0OC4yMzIuOTI4LjIzMmMuNDk2IDAgMS4xNDMtLjE4NCAxLjI5OS0xLjAzNWwtMi45NTQtNy41NzVoMi40NDRsMS43MTcgNC42OTkgMS43NDgtNC43aDIuMzQ5bC0zLjA3OSA3LjdjLS44MDMgMi4wMjYtMS40NTMgMi45NTMtMi45NjggMi45NTNabTExLjU5OC0zLjA3NVY0OC4wOWgyLjMwNXYxMC44MzdoLTIuMzA1Wm02LjYxOC0zLjc4OXYzLjc4N2gtMi4xOTd2LTcuNTc2aDIuMTY2di41MjVhMi41MzggMi41MzggMCAwIDEgMS43OTMtLjcxMmMxLjg1NiAwIDMuMDc5IDEuMjA1IDMuMDc5IDMuMzU1djQuNDA1aC0yLjE5NnYtNC4yMzVjMC0uODAyLS4zNzItMS40ODMtMS4yNTUtMS40ODMtMS4wMzMuMDAzLTEuMzkuNzc0LTEuMzkgMS45MzRabTYuNTQxLTUuOTM2YzAtLjcxMi41NTYtMS4yODIgMS4yNjgtMS4yODJzMS4yODYuNTczIDEuMjg2IDEuMjgyYTEuMjggMS4yOCAwIDAgMS0xLjI4NiAxLjI2OCAxLjI2NCAxLjI2NCAwIDAgMS0xLjI2OC0xLjI2OFptLjE3IDkuNzI1di03LjU3NWgyLjE5NnY3LjU3NWgtMi4xOTZabTcuMjU0LjAyOWMtMS42NTUgMC0yLjYxNC0uOTU5LTIuNjE0LTIuNjN2LTIuOTUyaC0xLjI2OFY1MS4zNWgxLjI2OHYtMS4xMTFsMi4xOTYtMS44NTV2Mi45N2gxLjkwMnYyLjAyNGgtMS45MDJ2Mi42NDNjMCAuNzI2LjQ4Ljg5Ny45MjguODk3LjUxMSAwIC45MjgtLjIwMi45MjgtLjIwMnYxLjk5NHMtLjU4Ny4yNDctMS40MzguMjQ3Wm0yLjk1NC05Ljc1NGMwLS43MTIuNTU2LTEuMjgyIDEuMjY4LTEuMjgyczEuMjg2LjU3MyAxLjI4NiAxLjI4MmExLjI4IDEuMjggMCAwIDEtMS4yODYgMS4yNjggMS4yNjQgMS4yNjQgMCAwIDEtMS4yNjgtMS4yNjhabS4xNyA5LjcyNXYtNy41NzVoMi4xOTZ2Ny41NzVoLTIuMTk2Wm04Ljc1NC0uNzc0Yy0uNDk2LjYwNC0xLjIwNi45NDUtMi4xNTEuOTQ1LTEuNTE1IDAtMi43MzgtLjk0NS0yLjczOC0yLjM5NyAwLTEuNDM4IDEuMjItMi4xNSAyLjkzNy0yLjI0IDEuMzE0LS4wNzcgMS43MzQtLjIxNiAxLjczNC0uNjY0IDAtLjQzNC0uNDAzLS43MjYtMS4xMTMtLjcyNi0uODY1IDAtMS4yMzcuNDM0LTEuMjg1Ljg5NmgtMi4xMmMuMTA4LTEuNjUzIDEuMzQ1LTIuNzk5IDMuNDE5LTIuNzk5IDIuMDI3IDAgMy4zMjYgMS4wOTggMy4zMjYgMy4xNTR2NC42MDVoLTEuODFsLS4xOTktLjc3NFptLTIuNjkzLTEuNTQ1YzAgLjQzNC4zODYuNjk1IDEuMDA1LjY5NS44MzQgMCAxLjUwMS0uNDYzIDEuNTAxLTEuNDA3di0uMjc4cy0uNDAzLjE4NC0xLjIzNy4yMzJjLS45MTQuMDQ2LTEuMjY5LjM0LTEuMjY5Ljc1OFptOS41NTggMi4zNDhjLTEuNjU1IDAtMi42MTQtLjk1OS0yLjYxNC0yLjYzdi0yLjk1MmgtMS4yNjhWNTEuMzVoMS4yNjh2LTEuMTExbDIuMTk3LTEuODU1djIuOTdoMS45MDF2Mi4wMjRoLTEuOTAxdjIuNjQzYzAgLjcyNi40NzkuODk3LjkyOC44OTcuNTEgMCAuOTI4LS4yMDIuOTI4LS4yMDJ2MS45OTRzLS41ODguMjQ3LTEuNDM5LjI0N1ptMi45NTEtOS43NTRjMC0uNzEyLjU1Ni0xLjI4MiAxLjI2OS0xLjI4Mi43MTIgMCAxLjI4NS41NzMgMS4yODUgMS4yODIgMCAuNjk1LS41NzMgMS4yNjgtMS4yODUgMS4yNjhhMS4yNjQgMS4yNjQgMCAwIDEtMS4yNjktMS4yNjhabS4xNyA5LjcyNXYtNy41NzVoMi4xOTd2Ny41NzVoLTIuMTk3Wm0xMC45ODMtNy41NzUtMi42OTEgNy41NzVoLTIuMjU4bC0yLjY5MS03LjU3NWgyLjMzNmwxLjQ4NCA0LjY4NSAxLjQ4NC00LjY4NWgyLjMzNlptNy45OCA0LjM3NGgtNS4zNTJjLjEyNS43NzQuNzU3IDEuMzYgMS43MDIgMS4zNi42MzYgMCAxLjAwNS0uMjYzIDEuMjM4LS42NDloMi4zNjZjLS41MSAxLjY0LTEuNjg1IDIuNjYtMy41NzIgMi42Ni0yLjE5NyAwLTMuOTU5LTEuNTMtMy45NTktMy45MSAwLTIuMjg5IDEuNjA5LTQuMDE5IDMuODM3LTQuMDE5IDIuNDg4IDAgMy43NiAxLjk2MyAzLjc2IDMuOTg4LS4wMDYuMi0uMDIuNTctLjAyLjU3Wm0tMy43MTItMi42MjdjLS44MzQgMC0xLjM5My41MS0xLjUzMiAxLjE2aDIuOTRjLS4wNDktLjY2Ni0uNjE5LTEuMTYtMS40MDgtMS4xNlpcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiPjxwYXRoIGZpbGw9XFxcIiNmZmZcXFwiIHN0cm9rZT1cXFwiIzE1NTM2NlxcXCIgZD1cXFwibTcuMzMzIDEyLjM2MS0uMjIzLjExMi4yMjMuNDQ3aC41di0uMjVsLjgzNC0uNDE3LTEuMzM0LjEwOFptMCAwVjkuMzMzdjMuMDI4Wm0tNS41LTguMjQ4di0uNzhhMS41IDEuNSAwIDAgMSAxLjUtMS41aDkuMzM0YTEuNSAxLjUgMCAwIDEgMS41IDEuNXYuNzcyYTEuNDk5IDEuNDk5IDAgMCAxLS4xNDUuNTkzbC0uMDQ5LjEwMnYuMDRhMS4zNzEgMS4zNzEgMCAwIDEtLjI0Ni4zMzJ2LjAwMWwtNC4wOCA0LjA4TDkuNSA5LjR2My4yNjZjMCAuMDMtLjAwOS4wNi0uMDI1LjA4NmwuNDI1LjI2My0uNDI1LS4yNjNhLjE2Ny4xNjcgMCAwIDEtLjA2Ni4wNjFsLTIuNjY2IDEuMzMzLS4wMDQuMDAyYS4xNjcuMTY3IDAgMCAxLS4wNzUuMDE5LjE2Ny4xNjcgMCAwIDEtLjA4Ny0uMDI1LjE2Ni4xNjYgMCAwIDEtLjA3Ny0uMTQxVjkuMzk5bC0uMTQ4LS4xNDctNC4xMDYtNC4wOEExLjM3MyAxLjM3MyAwIDAgMSAyIDQuODR2LS4wM2wtLjA0Mi0uMDk3YTEuNSAxLjUgMCAwIDEtLjEyNS0uNlpNNiA5LjYwN1YxNGEuNjY2LjY2NiAwIDAgMCAuNjY3LjY2Ny42NjYuNjY2IDAgMCAwIC4zLS4wNzRMNiA5LjYwN1ptMy4xNjctLjI3NFY5LjMzYS4xNjcuMTY3IDAgMCAxIC4wNDgtLjExOGwzLjUzMS0zLjUyNS44NTYtLjg1NEgyLjM5N2wuODU2Ljg1NCAzLjUzMiAzLjUyNWEuMTY3LjE2NyAwIDAgMSAuMDQ4LjExOHY0LjM5OWwuNzI0LS4zNjJMOC44OSAxMi43bC4yNzctLjEzOFY5LjMzM1pNMTMuMzMzIDQuNWguNVYzLjMzM2ExLjE2NyAxLjE2NyAwIDAgMC0xLjE2Ni0xLjE2NkgzLjMzM2ExLjE2NyAxLjE2NyAwIDAgMC0xLjE2NiAxLjE2NlY0LjVoMTEuMTY2WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCA5NTAgMjkyXFxcIj48ZyBvcGFjaXR5PVxcXCIuM1xcXCI+PHBhdGggb3BhY2l0eT1cXFwiLjRcXFwiIGQ9XFxcIk0zOTMuMzgzIDUzNy41OTJhMjEzLjA1OCAyMTMuMDU4IDAgMCAxLTU1LjEzMy03LjI0OGMtMTguMTk2LTQuODYtMzUuNDE5LTEyLjA5LTUxLjM0Ny0yMS4zMTYtMTYuMTY2LTkuMzQ1LTMxLjAwMy0yMC43MDMtNDQuMTE3LTMzLjgxNy0xMy4xMTMtMTMuMTEzLTI0LjQ3MS0yNy45NjctMzMuODE2LTQ0LjExNmEyMTEuODI2IDIxMS44MjYgMCAwIDEtMjEuMzE3LTUxLjM0NyAyMTIuOTA2IDIxMi45MDYgMCAwIDEtNy4yNDctNTUuMTMzIDIxMy4wOSAyMTMuMDkgMCAwIDEgNy4yNDctNTUuMTMzYzQuODYxLTE4LjE5NiAxMi4wOTEtMzUuNDIgMjEuMzE3LTUxLjM0OGw1Ni42ODUgMzIuNzI1YTE0Ny4yMDMgMTQ3LjIwMyAwIDAgMC0xNC43NjggMzUuNTczIDE0Ny41MzEgMTQ3LjUzMSAwIDAgMC01LjAxNCAzOC4xODMgMTQ3LjUzIDE0Ny41MyAwIDAgMCA1LjAxNCAzOC4xODIgMTQ2LjUyNyAxNDYuNTI3IDAgMCAwIDE0Ljc2OCAzNS41NzNjNi40OCAxMS4xODcgMTQuMzQxIDIxLjQ3IDIzLjQzMSAzMC41NTkgOS4wODkgOS4wODkgMTkuMzcyIDE2Ljk1MSAzMC41NTkgMjMuNDMxYTE0Ny4yMDMgMTQ3LjIwMyAwIDAgMCAzNS41NzMgMTQuNzY4IDE0Ny42MjcgMTQ3LjYyNyAwIDAgMCAzOC4xODIgNS4wMTRjMTMuMiAwIDI2LjAwNi0xLjc1NyAzOC4xODItNS4wMTRhMTQ2LjQ5NCAxNDYuNDk0IDAgMCAwIDM1LjU3My0xNC43NjhjMTEuMTg3LTYuNDggMjEuNDctMTQuMzQyIDMwLjU2LTIzLjQzMWw0Ni4yODIgNDYuMjgyYy0xMy4xMTQgMTMuMTE0LTI3Ljk2NyAyNC40NzItNDQuMTE3IDMzLjgxN2EyMTEuNzUgMjExLjc1IDAgMCAxLTUxLjM0NyAyMS4zMTYgMjEzLjI4IDIxMy4yOCAwIDAgMS01NS4xNSA3LjI0OFpNNTgxLjY2OCA2NTAuNzRjMjguNTgxLTE2LjUyNCA1NC44MjYtMzYuNjEzIDc4LjAxOC01OS44MDUgMjMuMTkyLTIzLjE5MyA0My4yODEtNDkuNDU1IDU5LjgwNi03OC4wMTkgMTYuMzAzLTI4LjE3MiAyOS4wNzUtNTguNjI5IDM3LjY4Ny05MC44MDhhMzc2LjU5MiAzNzYuNTkyIDAgMCAwIDEyLjgwNy05Ny40NzYgMzc3LjIzIDM3Ny4yMyAwIDAgMC0xMi44MDctOTcuNDc3Yy04LjU5NS0zMi4xNzktMjEuMzg0LTYyLjYzNi0zNy42ODctOTAuODA4LTE2LjU0Mi0yOC41ODEtMzYuNjE0LTU0LjgyNi01OS44MDYtNzguMDE4LTIzLjE5Mi0yMy4xOTMtNDkuNDU0LTQzLjI4MS03OC4wMTgtNTkuODA2LTI4LjE3Mi0xNi4zMDMtNTguNjI5LTI5LjA5My05MC44MDktMzcuNjg3YTM3Ni41OTIgMzc2LjU5MiAwIDAgMC05Ny40NzYtMTIuODA3djY1LjQ1YzI3Ljg2NSAwIDU0Ljg0MyAzLjcxNyA4MC41NDMgMTAuNTkgMjYuNTg1IDcuMTExIDUxLjczOSAxNy42NjcgNzUuMDE3IDMxLjEzOSAyMy42MDEgMTMuNjYgNDUuMzEgMzAuMjUyIDY0LjQ2MSA0OS40MiAxOS4xNjcgMTkuMTY4IDM1Ljc2IDQwLjg2IDQ5LjQyIDY0LjQ2MSAxMy40NzIgMjMuMjc4IDI0LjAyOCA0OC40MzEgMzEuMTM5IDc1LjAxN2EzMTEuMjY2IDMxMS4yNjYgMCAwIDEgMTAuNTkgODAuNTQzYzAgMjcuODY1LTMuNzE3IDU0Ljg0My0xMC41OSA4MC41NDItNy4xMTEgMjYuNTg2LTE3LjY2NyA1MS43MzktMzEuMTM5IDc1LjAxNy0xMy42NiAyMy42MDItMzAuMjUzIDQ1LjMxLTQ5LjQyIDY0LjQ2MS0xOS4xNTEgMTkuMTUxLTQwLjg2IDM1Ljc2MS02NC40NjEgNDkuNDItMjMuMjc4IDEzLjQ3Mi00OC40MzIgMjQuMDI4LTc1LjAxNyAzMS4xMzlsMTYuOTMzIDYzLjIzNGMzMi4xOTctOC42NDYgNjIuNjM3LTIxLjQxOSA5MC44MDktMzcuNzIyWm0tNTYuOTA3IDE2NC4xODhhNTA0LjMxMiA1MDQuMzEyIDAgMCAwIDEyMi40MjUtNTAuNzMzIDUxMC40IDUxMC40IDAgMCAwIDEwNS4wODItODAuNzEzQTUwOS4yMjYgNTA5LjIyNiAwIDAgMCA4MzIuOTgxIDU3OC40YTUwNC43MyA1MDQuNzMgMCAwIDAgNTAuNzMzLTEyMi40MjVjMTEuMjA0LTQxLjkxNiAxNy4yMDctODUuOTQ4IDE3LjIwNy0xMzEuMzc3IDAtNDUuNDQ3LTYuMDAzLTg5LjQ3OS0xNy4yMDctMTMxLjM3OGE1MDQuMzQzIDUwNC4zNDMgMCAwIDAtNTAuNzMzLTEyMi40MjVDODEwLjcwOSAzMi4yODggNzgzLjUwOS0zLjAzIDc1Mi4yNjgtMzQuMjg3QTUwOS4yMTcgNTA5LjIxNyAwIDAgMCA2NDcuMTg2LTExNWwtMzIuNzkzIDU2Ljc4N2MzMy41NDMgMTkuNDA3IDY0LjM1OSA0Mi45OTEgOTEuNTkyIDcwLjIwOCAyNy4yMTcgMjcuMjE3IDUwLjgwMiA1OC4wNSA3MC4yMDkgOTEuNTc2IDE5LjEzMyAzMy4wNjYgMzQuMTQgNjguODEgNDQuMjM2IDEwNi41ODIgOS43NTQgMzYuNTExIDE1LjA0MSA3NC44NDcgMTUuMDQxIDExNC40MjggMCAzOS41OC01LjI3IDc3LjkxNi0xNS4wNDEgMTE0LjQyNi0xMC4wOTYgMzcuNzczLTI1LjEwMyA3My41MTctNDQuMjM2IDEwNi41ODMtMTkuNDA3IDMzLjU0NC00Mi45OTIgNjQuMzU5LTcwLjIwOSA5MS41NzYtMjcuMjE2IDI3LjIxNy01OC4wNDkgNTAuODAxLTkxLjU5MiA3MC4yMDgtMzMuMDY2IDE5LjEzNC02OC44MSAzNC4xNC0xMDYuNTgzIDQ0LjIzNi0zNi41MTEgOS43NTQtNzQuODQ2IDE1LjA0MS0xMTQuNDI3IDE1LjA0MS0zOS41OCAwLTc3LjkxNi01LjI4Ny0xMTQuNDI3LTE1LjA0MWwtMTYuOTUxIDYzLjI4NGM0MS45IDExLjIwNCA4NS45MzEgMTcuMjA3IDEzMS4zNzggMTcuMjA3IDQ1LjQ0Ny4wMzQgODkuNDc4LTUuOTY5IDEzMS4zNzgtMTcuMTczWlxcXCIgZmlsbD1cXFwidXJsKCNncm91cF9zdmdfX2EpXFxcIi8+PHBhdGggZD1cXFwiTTM5My4zODMgNzY2LjY4NmE0NDIuNDg5IDQ0Mi40ODkgMCAwIDEtMTE0LjEwMy0xNC45MzhjLTM3Ljc3My0xMC4wNjItNzMuNTE2LTI1LjA1Mi0xMDYuNTk5LTQ0LjE1MWwzMi43MjUtNTYuNjg1YzI4LjE4OSAxNi4yNjkgNTguNjQ2IDI5LjAyNCA5MC44MjUgMzcuNjAyYTM3Ny4xMjYgMzc3LjEyNiAwIDAgMCA5Ny4xNTIgMTIuNzIyaC4zMDdhMzc2Ljk1OCAzNzYuOTU4IDAgMCAwIDk3LjQyNS0xMi44NzVjMzIuMTQ2LTguNjEyIDYyLjU2OC0yMS40MDIgOTAuNzIzLTM3LjcwNSAyOC41NDctMTYuNTI0IDU0Ljc3NS0zNi42MTMgNzcuOTMzLTU5Ljc4OCAyMy4xNTktMjMuMTc2IDQzLjIzLTQ5LjQwNCA1OS43NTUtNzcuOTUxIDE2LjI4Ni0yOC4xNTQgMjkuMDU5LTU4LjU2IDM3LjY3LTkwLjcyM2EzNzYuNTc1IDM3Ni41NzUgMCAwIDAgMTIuODI0LTk3LjM5di0uMTg4YzAtMzMuNjI5LTQuNDY3LTY2LjIwMS0xMi43MzgtOTcuMjM3LTguNTc4LTMyLjE2My0yMS4zMzQtNjIuNjAzLTM3LjYwMy05MC43NzUtMTYuNTA3LTI4LjU4MS0zNi41NjItNTQuODQzLTU5LjcyLTc4LjAzNS0yMy4xNzUtMjMuMjEtNDkuNDAzLTQzLjMzMi03Ny45NS01OS44OTEtMjguMTcyLTE2LjMzNy01OC42MTItMjkuMTQ0LTkwLjc3NC0zNy43NzNsMTYuOTMzLTYzLjIzM2MzNy43NzMgMTAuMTMgNzMuNSAyNS4xNTMgMTA2LjU2NiA0NC4zMjEgMzMuNTI3IDE5LjQyNCA2NC4zMDggNDMuMDQyIDkxLjUwNyA3MC4yNzYgMjcuMTgzIDI3LjIzNCA1MC43NTEgNTguMDY3IDcwLjEyMyA5MS42MSAxOS4xIDMzLjA2NiAzNC4wNzIgNjguNzkzIDQ0LjE1MSAxMDYuNTY2YTQ0Mi4yOCA0NDIuMjggMCAwIDEgMTQuOTczIDExNC4xNzF2LjE4OGE0NDIuNzg0IDQ0Mi43ODQgMCAwIDEtMTUuMDU4IDExNC4zNDFjLTEwLjA5NiAzNy43MzktMjUuMDg2IDczLjQ0OC00NC4yMTkgMTA2LjQ5Ny0xOS4zOSAzMy41MS00Mi45NTcgNjQuMzA4LTcwLjE0IDkxLjUyNS0yNy4yIDI3LjItNTcuOTgxIDUwLjc4NC05MS40OTEgNzAuMTkxLTMzLjAzMiAxOS4xMzQtNjguNzU4IDM0LjE0MS0xMDYuNDk3IDQ0LjI1M2E0NDIuMDUyIDQ0Mi4wNTIgMCAwIDEtMTE0LjM1OSAxNS4wOTJjLS4xMzYtLjAxNy0uMjM4LS4wMTctLjM0MS0uMDE3Wm0uMzA3IDExNC41NDdjNDkuODEzLS4wMzUgOTguMDktNi42MzQgMTQ0LjAzMi0xOC45MjlhNTUzLjMxNiA1NTMuMzE2IDAgMCAwIDEzNC4xNzQtNTUuNjYyIDU1Ny44ODcgNTU3Ljg4NyAwIDAgMCAxMTUuMTQzLTg4LjUwNiA1NTguOTM4IDU1OC45MzggMCAwIDAgODguNDU1LTExNS4xNzggNTUyLjg2MyA1NTIuODYzIDAgMCAwIDU1LjYxMS0xMzQuMTc0Qzk0My40IDQyMi44NDIgOTQ5Ljk4MyAzNzQuNTgyIDk1MCAzMjQuNzg2di0uMTg3YzAtNDkuNzQ0LTYuNTY2LTk3Ljk1NC0xOC44MS0xNDMuODQ0YTU1My40NTQgNTUzLjQ1NCAwIDAgMC01NS41NDItMTM0LjI0M0M4NTEuMjQ1IDQuMjcyIDgyMS40NTMtMzQuNDU2IDc4Ny4yMS02OC43NWwtMzQuNzIgMzQuNzJhNTA4LjkwOCA1MDguOTA4IDAgMCAxIDgwLjYyNyAxMDUuMDk5IDUwNC40NjUgNTA0LjQ2NSAwIDAgMSA1MC42MzEgMTIyLjM5MWMxMS4xNTMgNDEuODMxIDE3LjEzOSA4NS43NzcgMTcuMTM5IDEzMS4xMzl2LjE4N2MtLjAxNyA0NS40MTMtNi4wMiA4OS40MS0xNy4yMjQgMTMxLjI5M2E1MDQuOTAyIDUwNC45MDIgMCAwIDEtNTAuNjk5IDEyMi4zMjMgNTA5LjcxNSA1MDkuNzE1IDAgMCAxLTgwLjY2MiAxMDUuMDEzIDUwOS4yNzggNTA5LjI3OCAwIDAgMS0xMDQuOTk2IDgwLjY5NiA1MDQuMzIgNTA0LjMyIDAgMCAxLTEyMi4zMjMgNTAuNzVjLTQxLjg4MyAxMS4yMjEtODUuODk3IDE3LjI0MS0xMzEuMzI3IDE3LjI3NWgtLjMwN2MtNDUuMzI3IDAtODkuMjM5LTUuOTY4LTEzMS4wNTQtMTcuMTIxYTUwNC44OTkgNTA0Ljg5OSAwIDAgMS0xMjIuNDQyLTUwLjYzMUE1MDkuMjg0IDUwOS4yODQgMCAwIDEgMzQuNzIgNjgzLjcyMkwwIDcxOC40NDNhNTU5LjIyMiA1NTkuMjIyIDAgMCAwIDExNS4yOTcgODguNDcyIDU1My41NjMgNTUzLjU2MyAwIDAgMCAxMzQuMjk0IDU1LjU0MmM0NS44NTYgMTIuMjI3IDk0LjAzMSAxOC43NzYgMTQzLjc1OCAxOC43NzZoLjM0MVptODAuNDc0LTI1Ni4xMDZhMzA5LjI4IDMwOS4yOCAwIDAgMCA3NC45MzItMzEuMTU2YzIzLjU2OC0xMy42NTkgNDUuMjQyLTMwLjI1MiA2NC4zNzYtNDkuMzg2IDE5LjEzNC0xOS4xNTEgMzUuNzA5LTQwLjgwOCA0OS4zNTItNjQuMzkzIDEzLjQ1NS0yMy4yNDMgMjQuMDExLTQ4LjM4IDMxLjEwNS03NC45MzFhMzExLjM5NiAzMTEuMzk2IDAgMCAwIDEwLjYwNy04MC40NTd2LS4xODhjMC0yNy43OC0zLjY4My01NC42NzMtMTAuNTA1LTgwLjI4Ny03LjA3Ny0yNi41NjgtMTcuNjE2LTUxLjcyMi0zMS4wNTQtNzUtMTMuNjI1LTIzLjYxOC0zMC4yMDEtNDUuMzEtNDkuMzM0LTY0LjQ3OC0xOS4xMzQtMTkuMTg1LTQwLjgwOS0zNS44MTEtNjQuMzkzLTQ5LjQ4OC0yMy4yNjEtMTMuNDktNDguNDE0LTI0LjA4LTc1LTMxLjIyNWEzMTEuNDUxIDMxMS40NTEgMCAwIDAtODAuNTYtMTAuNjc1aC0uMzA3YTMxMC45OTcgMzEwLjk5NyAwIDAgMC04MC4zMDMgMTAuNTIyYy0yNi42MiA3LjA5NC01MS44MDggMTcuNjUtNzUuMTIgMzEuMTIybDQ5LjA5NyA4NS4wMjdhMjExLjY3OCAyMTEuNjc4IDAgMCAxIDUxLjQzMi0yMS4yOTkgMjEzLjMxNCAyMTMuMzE0IDAgMCAxIDU0Ljg5NC03LjE4aC4zMDdhMjEzLjIgMjEzLjIgMCAwIDEgNTUuMTUgNy4zMzMgMjExLjI0NSAyMTEuMjQ1IDAgMCAxIDUxLjMzMSAyMS40MDJjMTYuMTMyIDkuMzc5IDMwLjk1MSAyMC43NzEgNDQuMDQ4IDMzLjkwMiAxMy4wOCAxMy4xMzEgMjQuNDIgMjcuOTg0IDMzLjc0OCA0NC4xMzRhMjExLjQwOCAyMTEuNDA4IDAgMCAxIDIxLjIzMSA1MS4zMyAyMTMuMjc2IDIxMy4yNzYgMCAwIDEgNy4xOCA1NC44Nzd2LjE4OGEyMTIuOTExIDIxMi45MTEgMCAwIDEtNy4yNjUgNTUuMDNjLTQuODYgMTguMTYyLTEyLjA5MSAzNS4zNTItMjEuMjgyIDUxLjI2Mi05LjMyOCAxNi4xMzMtMjAuNjY5IDMwLjk1Mi0zMy43NjYgNDQuMDQ5LTEzLjA3OSAxMy4wOTYtMjcuODk5IDI0LjQ1NC00NC4wMzEgMzMuNzk5LTE1LjkxMSA5LjIyNi0zMy4xIDE2LjQ1Ni01MS4yNjIgMjEuMzM0YTIxMi40OTUgMjEyLjQ5NSAwIDAgMS01NS4wNjUgNy4yOTh2OTguMTc2YTMxMi4wOSAzMTIuMDkgMCAwIDAgODAuNDU3LTEwLjY0MlptNjYuNzQ3LTMwMC41MTFjMC04MS40OC02Ni4wNDctMTQ3LjUyNy0xNDcuNTI4LTE0Ny41MjctODEuNDggMC0xNDcuNTI3IDY2LjA0Ny0xNDcuNTI3IDE0Ny41MjcgMCA4MS40OCA2Ni4wNDcgMTQ3LjUyNyAxNDcuNTI3IDE0Ny41MjcgODEuNDgxIDAgMTQ3LjUyOC02Ni4wNjQgMTQ3LjUyOC0xNDcuNTI3WlxcXCIgZmlsbD1cXFwidXJsKCNncm91cF9zdmdfX2IpXFxcIi8+PC9nPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiZ3JvdXBfc3ZnX19hXFxcIiB4MT1cXFwiMTI3Ljg5NVxcXCIgeTE9XFxcIjU4Mi42NDdcXFwiIHgyPVxcXCI4NzguMzQyXFxcIiB5Mj1cXFwiMTQ5LjM3N1xcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIG9mZnNldD1cXFwiLjZcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJncm91cF9zdmdfX2JcXFwiIHgxPVxcXCItMTEuMDcxXFxcIiB5MT1cXFwiNjk5LjE5M1xcXCIgeDI9XFxcIjkzNi41ODlcXFwiIHkyPVxcXCIxNTIuMDYxXFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agb2Zmc2V0PVxcXCIuNlxcXCIgc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCA0MCA0MFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJtMjIuMzUgMjAgNy4xNjctNy4xNWExLjY3NCAxLjY3NCAwIDAgMC0yLjM2Ny0yLjM2N0wyMCAxNy42NWwtNy4xNS03LjE2N2ExLjY3NCAxLjY3NCAwIDAgMC0yLjM2NyAyLjM2N0wxNy42NSAyMGwtNy4xNjcgNy4xNWExLjY2NSAxLjY2NSAwIDAgMCAwIDIuMzY3IDEuNjY1IDEuNjY1IDAgMCAwIDIuMzY3IDBMMjAgMjIuMzVsNy4xNSA3LjE2N2ExLjY2NiAxLjY2NiAwIDAgMCAyLjM2NyAwIDEuNjY2IDEuNjY2IDAgMCAwIDAtMi4zNjdMMjIuMzUgMjBaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDkzNCAyMjBcXFwiPjxnIGZpbGw9XFxcIm5vbmVcXFwiPjxwYXRoIGZpbGw9XFxcIiMxODU1NjhcXFwiIGQ9XFxcIk0yLjYgMjA4LjdWMTAyLjJoMzAuOHYxMDYuNXpNMTI2IDE5OC40Yy03IDguNS0xNyAxMy4zLTMwLjQgMTMuMy0yMS40IDAtMzguNy0xMy4zLTM4LjctMzMuOSAwLTIwLjMgMTcuMy0zMC40IDQxLjUtMzEuNyAxOC42LTEuMSAyNC41LTMuMSAyNC41LTkuNCAwLTYuMS01LjctMTAuMy0xNS43LTEwLjMtMTIuMiAwLTE3LjUgNi4xLTE4LjEgMTIuN0g1OS4yYzEuNS0yMy40IDE5LTM5LjUgNDguMy0zOS41IDI4LjYgMCA0NyAxNS41IDQ3IDQ0LjZ2NjUuMWgtMjUuNmwtMi45LTEwLjl6bS0zOC0yMS45YzAgNi4xIDUuNSA5LjggMTQuMiA5LjggMTEuOCAwIDIxLjItNi42IDIxLjItMTkuOXYtMy45cy01LjcgMi42LTE3LjUgMy4zYy0xMi44LjctMTcuOSA0LjgtMTcuOSAxMC43em0xMzUgMzMuMmMtMjMuNCAwLTM2LjktMTMuNS0zNi45LTM3LjF2LTQxLjdoLTE3Ljl2LTI4LjZoMTcuOVY4Ni41bDMxLTI2LjJ2NDEuOUgyNDR2MjguNmgtMjYuOXYzNy40YzAgMTAuMyA2LjggMTIuNyAxMy4xIDEyLjcgNy4yIDAgMTMuMS0yLjggMTMuMS0yLjh2MjguMnMtOC4zIDMuNC0yMC4zIDMuNHpNMCA3MC4yYzAtMTAgNy45LTE4LjEgMTcuOS0xOC4xIDEwIDAgMTguMSA4LjEgMTguMSAxOC4xIDAgOS44LTguMSAxNy45LTE4LjEgMTcuOS0xMCAwLTE3LjktOC0xNy45LTE3Ljl6bTI2Ni45IDEzOC41VjEwMi4yaDMwLjh2MTA2LjV6XFxcIi8+PGcgdHJhbnNmb3JtPVxcXCJ0cmFuc2xhdGUoMjI3KVxcXCI+PHBhdGggZmlsbD1cXFwiIzE4NTU2OFxcXCIgZD1cXFwiTTExMC45IDcwLjVjMC00LjktLjctOS43LTEuOS0xNC4zLTEuMy00LjctMy4xLTkuMi01LjUtMTMuMy0yLjQtNC4yLTUuNC04LTguOC0xMS40LTMuNC0zLjQtNy4yLTYuMy0xMS40LTguOC00LjEtMi40LTguNi00LjMtMTMuMy01LjUtNC42LTEuMi05LjMtMS45LTE0LjMtMS45LTQuOSAwLTkuNy43LTE0LjMgMS45LTQuNyAxLjMtOS4yIDMuMS0xMy4zIDUuNS00LjIgMi40LTggNS40LTExLjQgOC44LTMuNCAzLjQtNi40IDcuMi04LjggMTEuNC0yLjQgNC4xLTQuMyA4LjYtNS41IDEzLjNsNy45IDIuMWMxLjEtNCAyLjctNy44IDQuNy0xMS4zIDIuMS0zLjYgNC42LTYuOCA3LjUtOS43IDIuOS0yLjkgNi4yLTUuNCA5LjctNy41IDMuNS0yIDcuMy0zLjYgMTEuMy00LjcgMy45LTEgNy45LTEuNiAxMi4xLTEuNiA0LjIgMCA4LjMuNiAxMi4yIDEuNiA0IDEuMSA3LjggMi43IDExLjMgNC43IDMuNiAyLjEgNi44IDQuNiA5LjcgNy41IDIuOSAyLjkgNS40IDYuMiA3LjUgOS43IDIgMy41IDMuNiA3LjMgNC43IDExLjMgMSAzLjkgMS42IDggMS42IDEyLjIgMCA0LjItLjYgOC4zLTEuNiAxMi4xLTEuMSA0LTIuNyA3LjgtNC43IDExLjNsNy4xIDQuMWMyLjQtNC4xIDQuMy04LjYgNS41LTEzLjMgMS4zLTQuNSAyLTkuMiAyLTE0LjJaXFxcIi8+PHBhdGggZmlsbD1cXFwiIzE4NTU2OFxcXCIgZD1cXFwiTTEyNS4yIDcwLjVjMC02LjItLjgtMTIuMy0yLjQtMTgtMS42LTUuOS0zLjktMTEuNi03LTE2LjgtMy4xLTUuMy02LjgtMTAuMS0xMS4xLTE0LjQtNC4zLTQuMy05LjEtOC0xNC40LTExLjEtNS4yLTMtMTAuOC01LjQtMTYuOC02LjlDNjcuOCAxLjggNjEuNy45IDU1LjUuOWMtNi4yIDAtMTIuMi44LTE4IDIuMy01LjkgMS42LTExLjYgMy45LTE2LjggNi45LTUuMyAzLTEwLjEgNi44LTE0LjQgMTFsNC4zIDQuM2MzLjktMy45IDguMy03LjMgMTMuMS0xMC4xIDQuNy0yLjcgOS45LTQuOSAxNS4zLTYuMyA1LjItMS40IDEwLjctMi4xIDE2LjQtMi4xIDUuNyAwIDExLjIuOCAxNi40IDIuMiA1LjQgMS40IDEwLjUgMy42IDE1LjMgNi4zYTY0LjQ2NiA2NC40NjYgMCAwIDEgMjMuMiAyMy4yYzIuNyA0LjcgNC45IDkuOSA2LjMgMTUuMyAxLjQgNS4yIDIuMiAxMC43IDIuMiAxNi40IDAgNS43LS43IDExLjEtMi4xIDE2LjQtMS40IDUuNC0zLjYgMTAuNi02LjMgMTUuMy0yLjggNC44LTYuMiA5LjItMTAuMSAxMy4xbDQuMyA0LjNjNC4zLTQuMyA4LTkuMSAxMS4xLTE0LjQgMy01LjIgNS40LTEwLjggNi45LTE2LjggMS44LTUuNCAyLjYtMTEuNSAyLjYtMTcuN1pcXFwiLz48cGF0aCBmaWxsPVxcXCIjMTg1NTY4XFxcIiBkPVxcXCJNOTMuMiA2MC40Yy0uOS0zLjMtMi4yLTYuNS0zLjktOS40LTEuNy0yLjktMy44LTUuNy02LjItOC0yLjQtMi40LTUuMS00LjUtOC02LjItMi45LTEuNy02LTMtOS40LTMuOS0zLjItLjktNi42LTEuMy0xMC0xLjMtMy41IDAtNi44LjUtMTAgMS4zLTMuMy45LTYuNSAyLjItOS40IDMuOS0yLjkgMS43LTUuNyAzLjgtOC4xIDYuMi0yLjQgMi40LTQuNSA1LjEtNi4yIDgtMS43IDIuOS0zIDYtMy45IDkuNC0uOSAzLjItMS4zIDYuNi0xLjMgMTAuMXMuNSA2LjggMS4zIDEwYy45IDMuMyAyLjIgNi41IDMuOSA5LjRsMTAuNi02LjFjLTEuMi0yLTIuMS00LjEtMi43LTYuNC0uNi0yLjItLjktNC41LS45LTYuOSAwLTIuNC4zLTQuNy45LTYuOS42LTIuMyAxLjUtNC40IDIuNy02LjQgMS4yLTIgMi42LTMuOSA0LjItNS41czMuNS0zLjEgNS41LTQuMiA0LjEtMiA2LjQtMi43YzIuMi0uNiA0LjUtLjkgNi45LS45IDIuNCAwIDQuNy4zIDYuOS45IDIuMy42IDQuNCAxLjUgNi40IDIuNyAyIDEuMiAzLjkgMi42IDUuNSA0LjJzMy4xIDMuNSA0LjIgNS41YzEuMiAyIDIuMSA0LjEgMi43IDYuNC42IDIuMi45IDQuNS45IDYuOWgxMi4zYzAtMy41LS40LTYuOS0xLjMtMTAuMVpcXFwiLz48ZyBmaWxsPVxcXCIjQTdFQkVGXFxcIj48cGF0aCBkPVxcXCJNODEuNCA2My42Yy0uNi0yLjMtMS41LTQuNC0yLjctNi40LTEuMi0yLTIuNi0zLjktNC4yLTUuNWwtNS44IDUuOGMxLjEgMS4xIDIuMSAyLjQgMi45IDMuOC44IDEuNCAxLjQgMi45IDEuOCA0LjQuNCAxLjUuNiAzLjEuNiA0LjggMCAxLjctLjIgMy4yLS42IDQuOC0uNCAxLjYtMSAzLjEtMS44IDQuNC0uOCAxLjQtMS44IDIuNy0yLjkgMy44LTEuMSAxLjEtMi40IDIuMS0zLjggMi45LTEuNC44LTIuOSAxLjQtNC40IDEuOC0xLjUuNC0zLjEuNi00LjguNi0xLjcgMC0zLjItLjItNC44LS42LTEuNi0uNC0zLjEtMS00LjQtMS44bC00LjEgNy4xYzIgMS4yIDQuMSAyLjEgNi40IDIuNyAyLjIuNiA0LjUuOSA2LjkuOSAyLjQgMCA0LjctLjMgNi45LS45IDIuMy0uNiA0LjQtMS41IDYuNC0yLjcgMi0xLjIgMy45LTIuNiA1LjUtNC4yczMuMS0zLjUgNC4yLTUuNWMxLjItMiAyLjEtNC4xIDIuNy02LjQuNi0yLjIuOS00LjUuOS02LjkgMC0yLjQtLjMtNC43LS45LTYuOVpcXFwiLz48cGF0aCBkPVxcXCJNOTYuNCA0N2MtMi4xLTMuNi00LjYtNi44LTcuNS05LjctMi45LTIuOS02LjItNS40LTkuNy03LjUtMy41LTItNy4zLTMuNi0xMS4zLTQuNy0zLjktMS04LTEuNi0xMi4yLTEuNi00LjIgMC04LjMuNi0xMi4yIDEuNi00IDEuMS03LjggMi43LTExLjMgNC43LTMuNiAyLjEtNi44IDQuNi05LjcgNy41LTIuOSAyLjktNS40IDYuMi03LjUgOS43LTIgMy41LTMuNiA3LjMtNC43IDExLjMtMSAzLjktMS42IDgtMS42IDEyLjJoOC4yYzAtMy41LjUtNi45IDEuMy0xMC4xLjktMy4zIDIuMi02LjUgMy45LTkuNCAxLjctMi45IDMuOC01LjcgNi4yLTguMSAyLjQtMi40IDUuMS00LjUgOC4xLTYuMiAyLjktMS43IDYuMS0zIDkuNC0zLjkgMy4yLS45IDYuNi0xLjMgMTAuMS0xLjNzNi45LjUgMTAuMSAxLjNjMy4zLjkgNi41IDIuMiA5LjQgMy45IDIuOSAxLjcgNS43IDMuOCA4LjEgNi4yIDIuNCAyLjQgNC41IDUuMSA2LjIgOC4xIDEuNyAyLjkgMyA2LjEgMy45IDkuNGw3LjktMi4xYy0xLjUtNC0zLjEtNy44LTUuMS0xMS4zWlxcXCIvPjxwYXRoIGQ9XFxcIk0xMTYuOSA1NC4xYy0xLjQtNS40LTMuNi0xMC41LTYuMy0xNS4zYTY0LjQ2NiA2NC40NjYgMCAwIDAtMjMuMi0yMy4yYy00LjctMi43LTkuOS00LjktMTUuMy02LjMtNS4yLTEuNC0xMC43LTIuMS0xNi40LTIuMS01LjcgMC0xMS4yLjgtMTYuNCAyLjEtNS40IDEuNC0xMC41IDMuNi0xNS4zIDYuM0E2NC40NjYgNjQuNDY2IDAgMCAwIC44IDM4LjhsNy4xIDQuMWMyLjQtNC4yIDUuNC04IDguOC0xMS40IDMuNC0zLjQgNy4zLTYuMyAxMS40LTguOCA0LjEtMi40IDguNi00LjMgMTMuMy01LjUgNC42LTEuMiA5LjMtMS45IDE0LjMtMS45czkuNy43IDE0LjMgMS45YzQuNyAxLjMgOS4yIDMuMSAxMy4zIDUuNSA0LjIgMi40IDggNS40IDExLjQgOC44IDMuNCAzLjQgNi4zIDcuMyA4LjggMTEuNCAyLjQgNC4xIDQuMyA4LjYgNS41IDEzLjMgMS4yIDQuNiAxLjkgOS4zIDEuOSAxNC4zIDAgNC45LS43IDkuNy0xLjkgMTQuM2w3LjkgMi4xYzEuNC01LjIgMi4xLTEwLjcgMi4xLTE2LjQuMS01LjYtLjctMTEuMS0yLjEtMTYuNFpcXFwiLz48L2c+PGNpcmNsZSBjeD1cXFwiNTUuN1xcXCIgY3k9XFxcIjcwLjVcXFwiIHI9XFxcIjE4LjRcXFwiIGZpbGw9XFxcIiMxODU1NjhcXFwiLz48L2c+PHBhdGggZD1cXFwiTTM1NS4zIDE0My40di0zOC4yaDguMXYzOC4yem0yMy4zLTEzLjR2MTMuNGgtNy43di0yNi43aDcuNnYxLjljMS41LTEuNCAzLjYtMi41IDYuMy0yLjUgNi41IDAgMTAuOCA0LjMgMTAuOCAxMS44djE1LjVIMzg4di0xNC45YzAtMi44LTEuMy01LjItNC40LTUuMi0zLjctLjEtNSAyLjYtNSA2Ljd6bTM0LjEgMTMuNWMtNS44IDAtOS4yLTMuNC05LjItOS4zdi0xMC40SDM5OXYtNy4xaDQuNXYtMy45bDcuNy02LjV2MTAuNWg2Ljd2Ny4xaC02Ljd2OS4zYzAgMi42IDEuNyAzLjIgMy4zIDMuMiAxLjggMCAzLjMtLjcgMy4zLS43djdjMC0uMS0yLjEuOC01LjEuOHptMzUuOS0xMS40aC0xOC45Yy40IDIuNyAyLjcgNC44IDYgNC44IDIuMiAwIDMuNS0uOSA0LjQtMi4zaDguM2MtMS44IDUuOC01LjkgOS40LTEyLjYgOS40LTcuNyAwLTE0LTUuNC0xNC0xMy44IDAtOC4xIDUuNy0xNC4yIDEzLjUtMTQuMiA4LjggMCAxMy4yIDYuOSAxMy4yIDE0LjEuMi43LjEgMiAuMSAyem0tMTMuMS05LjNjLTIuOSAwLTQuOSAxLjgtNS40IDQuMWgxMC40Yy0uMi0yLjMtMi4yLTQuMS01LTQuMXptMzYuMS00LjZ2Ny42cy0yLTIuMS01LjEtMi4xYy0yLjMgMC01IDEuMy01IDUuMnYxNC40aC03Ljd2LTI2LjdoNy42djIuMmMtLjEgMCAxLjUtMi42IDUuMy0yLjYgMy40LjEgNC45IDIgNC45IDJ6bTEyIDExLjh2MTMuNGgtNy43di0yNi43aDcuNnYxLjljMS41LTEuNCAzLjYtMi41IDYuMy0yLjUgNi41IDAgMTAuOCA0LjMgMTAuOCAxMS44djE1LjVoLTcuN3YtMTQuOWMwLTIuOC0xLjMtNS4yLTQuNC01LjItMy43LS4xLTQuOSAyLjYtNC45IDYuN3ptMzkuMyAxMC43Yy0xLjcgMi4xLTQuMyAzLjMtNy42IDMuMy01LjMgMC05LjYtMy4zLTkuNi04LjQgMC01LjEgNC4zLTcuNiAxMC40LTcuOSA0LjYtLjMgNi4xLS44IDYuMS0yLjMgMC0xLjUtMS40LTIuNi0zLjktMi42LTMuMSAwLTQuNCAxLjUtNC41IDMuMmgtNy41Yy40LTUuOCA0LjctOS45IDEyLTkuOSA3LjEgMCAxMS43IDMuOSAxMS43IDExLjF2MTYuMmgtNi40bC0uNy0yLjd6bS05LjQtNS41YzAgMS41IDEuNCAyLjUgMy41IDIuNSAyLjkgMCA1LjMtMS42IDUuMy01di0xcy0xLjQuNy00LjQuOGMtMy4yLjItNC40IDEuMi00LjQgMi43em0zMy42IDguM2MtNS44IDAtOS4yLTMuNC05LjItOS4zdi0xMC40aC00LjV2LTcuMWg0LjV2LTMuOWw3LjctNi41djEwLjVoNi43djcuMWgtNi43djkuM2MwIDIuNiAxLjcgMy4yIDMuMyAzLjIgMS44IDAgMy4zLS43IDMuMy0uN3Y3YzAtLjEtMi4xLjgtNS4xLjh6bTEwLjQtMzQuNGMwLTIuNSAyLTQuNSA0LjUtNC41czQuNSAyIDQuNSA0LjUtMiA0LjUtNC41IDQuNS00LjUtMi4xLTQuNS00LjV6bS42IDM0LjN2LTI2LjdoNy43djI2LjdoLTcuN3ptMTMuNC0xMy40YzAtOCA2LjItMTQgMTQuMi0xNCA4LjEgMCAxNC4yIDYgMTQuMiAxNHMtNi4yIDE0LTE0LjIgMTRjLTguMSAwLTE0LjItNi0xNC4yLTE0em03LjkgMGMwIDMuOSAyLjcgNi44IDYuMyA2LjggMy43IDAgNi4zLTIuOCA2LjMtNi44IDAtMy45LTIuNy02LjgtNi4zLTYuOC0zLjYuMS02LjMgMi45LTYuMyA2Ljh6bTMzLjYgMHYxMy40aC03Ljd2LTI2LjdoNy42djEuOWMxLjUtMS40IDMuNi0yLjUgNi4zLTIuNSA2LjUgMCAxMC44IDQuMyAxMC44IDExLjh2MTUuNWgtNy43di0xNC45YzAtMi44LTEuMy01LjItNC40LTUuMi0zLjYtLjEtNC45IDIuNi00LjkgNi43em0zOS40IDEwLjdjLTEuNyAyLjEtNC4zIDMuMy03LjYgMy4zLTUuMyAwLTkuNi0zLjMtOS42LTguNCAwLTUuMSA0LjMtNy42IDEwLjQtNy45IDQuNi0uMyA2LjEtLjggNi4xLTIuMyAwLTEuNS0xLjQtMi42LTMuOS0yLjYtMy4xIDAtNC40IDEuNS00LjUgMy4yaC03LjVjLjQtNS44IDQuNy05LjkgMTItOS45IDcuMSAwIDExLjcgMy45IDExLjcgMTEuMXYxNi4yaC02LjRsLS43LTIuN3ptLTkuNS01LjVjMCAxLjUgMS40IDIuNSAzLjUgMi41IDIuOSAwIDUuMy0xLjYgNS4zLTV2LTFzLTEuNC43LTQuNC44Yy0zLjIuMi00LjQgMS4yLTQuNCAyLjd6bTIzIDguMnYtMzguMmg3Ljd2MzguMnptNDkuNi0zOC4yIDE0LjkgMzguMkg3MjJsLTMuMS03LjVoLTE0LjhsLTMgNy41aC04LjRsMTQuOS0zOC4yaDcuOXptLTMuOSAxMS00LjcgMTIuNWg5LjVsLTQuOC0xMi41em0yMi41LTcuMWMwLTIuNSAyLTQuNSA0LjUtNC41czQuNSAyIDQuNSA0LjUtMiA0LjUtNC41IDQuNS00LjUtMi4xLTQuNS00LjV6bS42IDM0LjN2LTI2LjdoNy43djI2LjdoLTcuN3ptMTMuNC0xMy40YzAtOC40IDYuMS0xNCAxMy41LTE0IDMuMSAwIDUuNiAxLjEgNyAyLjN2LTEzLjJoNy43djM4LjJoLTcuNnYtMS45Yy0xLjQgMS40LTQuMSAyLjUtNy4xIDIuNS03LjUuMS0xMy41LTUuMy0xMy41LTEzLjl6bTIwLjUgMGMwLTQuMS0yLjctNy02LjMtNy0zLjYgMC02LjMgMi44LTYuMyA3IDAgNC4xIDIuNyA3IDYuMyA3IDMuNiAwIDYuMy0yLjggNi4zLTd6bS00MTUuOCA0MC42aDMwdjcuNWgtMTF2MzAuN2gtOC4xVjE3OGgtMTF2LTcuNHptNDguOSAxM3Y3LjZzLTItMi4xLTUuMS0yLjFjLTIuMyAwLTUgMS4zLTUgNS4ydjE0LjRIMzg0VjE4Mmg3LjZ2Mi4yYy0uMSAwIDEuNS0yLjYgNS4zLTIuNiAzLjMuMSA0LjggMiA0LjggMnptMjAuOCAyMi40Yy0xLjcgMi4xLTQuMyAzLjMtNy42IDMuMy01LjMgMC05LjYtMy4zLTkuNi04LjQgMC01LjEgNC4zLTcuNiAxMC40LTcuOSA0LjYtLjMgNi4xLS44IDYuMS0yLjMgMC0xLjUtMS40LTIuNi0zLjktMi42LTMuMSAwLTQuNCAxLjUtNC41IDMuMmgtNy41Yy40LTUuOCA0LjctOS45IDEyLTkuOSA3LjEgMCAxMS43IDMuOSAxMS43IDExLjF2MTYuMmgtNi40bC0uNy0yLjd6bS05LjUtNS40YzAgMS41IDEuNCAyLjUgMy41IDIuNSAyLjkgMCA1LjMtMS42IDUuMy01di0xcy0xLjQuNy00LjQuOGMtMy4xLjItNC40IDEuMi00LjQgMi43em0zMC44LTUuMnYxMy40SDQzNnYtMjYuN2g3LjZ2MS45YzEuNS0xLjQgMy42LTIuNSA2LjMtMi41IDYuNSAwIDEwLjggNC4zIDEwLjggMTEuOHYxNS41SDQ1M3YtMTQuOWMwLTIuOC0xLjMtNS4yLTQuNC01LjItMy42LS4xLTQuOCAyLjYtNC44IDYuN3ptMzggNS43YzAtLjgtLjUtMS41LTIuNi0xLjlsLTQtLjhjLTYuMS0xLjItOC42LTQuMS04LjYtOC4xIDAtNC43IDMuNS04LjkgMTAuOS04LjlzMTAuNyA0LjEgMTEuMyA4LjhoLTcuNGMtLjQtMS41LTEuNy0yLjMtNC0yLjMtMi4yIDAtMy40LjgtMy40IDEuOSAwIC44LjcgMS4zIDIuNyAxLjdsNCAuOGM1LjcgMS4xIDguNiAzLjggOC42IDguNCAwIDUuMi0zLjggOC44LTExLjIgOC44LTcuNiAwLTExLjctMy42LTEyLjUtOS4yaDcuOGMuNCAxLjkgMS44IDIuOCA0LjcgMi44IDIuNS0uMSAzLjctLjggMy43LTJ6bTQwLjctNS43YzAgOC40LTYuMSAxNC0xMy41IDE0LTMuMSAwLTUuNi0xLjEtNy0yLjN2MTIuM2gtNy43di0zNy4zaDcuNnYxLjljMS40LTEuNCA0LjEtMi42IDcuMS0yLjYgNy41IDAgMTMuNSA1LjQgMTMuNSAxNHptLTIwLjUgMGMwIDQuMSAyLjcgNyA2LjMgNyAzLjYgMCA2LjMtMi44IDYuMy03IDAtNC4xLTIuNy03LTYuMy03LTMuNiAwLTYuMyAyLjktNi4zIDd6bTQxLjggMTAuNmMtMS43IDIuMS00LjMgMy4zLTcuNiAzLjMtNS4zIDAtOS42LTMuMy05LjYtOC40IDAtNS4xIDQuMy03LjYgMTAuNC03LjkgNC42LS4zIDYuMS0uOCA2LjEtMi4zIDAtMS41LTEuNC0yLjYtMy45LTIuNi0zLjEgMC00LjQgMS41LTQuNSAzLjJoLTcuNWMuNC01LjggNC43LTkuOSAxMi05LjkgNy4xIDAgMTEuNyAzLjkgMTEuNyAxMS4xdjE2LjJoLTYuNGwtLjctMi43em0tOS41LTUuNGMwIDEuNSAxLjQgMi41IDMuNSAyLjUgMi45IDAgNS4zLTEuNiA1LjMtNXYtMXMtMS40LjctNC40LjhjLTMuMS4yLTQuNCAxLjItNC40IDIuN3ptNDAuOC0xN3Y3LjZzLTItMi4xLTUuMS0yLjFjLTIuMyAwLTUgMS4zLTUgNS4ydjE0LjRoLTcuN1YxODJoNy42djIuMmMtLjEgMCAxLjUtMi42IDUuMy0yLjYgMy40LjEgNC45IDIgNC45IDJ6bTI5LjcgMTMuOWgtMTguOWMuNCAyLjcgMi43IDQuOCA2IDQuOCAyLjIgMCAzLjUtLjkgNC40LTIuM2g4LjNjLTEuOCA1LjgtNS45IDkuNC0xMi42IDkuNC03LjcgMC0xNC01LjQtMTQtMTMuOCAwLTguMSA1LjctMTQuMiAxMy41LTE0LjIgOC44IDAgMTMuMiA2LjkgMTMuMiAxNC4xLjEuNy4xIDIgLjEgMnptLTEzLjEtOS4zYy0yLjkgMC00LjkgMS44LTUuNCA0LjFoMTAuNGMtLjItMi4zLTIuMi00LjEtNS00LjF6bTI2LjEgNy4ydjEzLjRINjEwdi0yNi43aDcuNnYxLjljMS41LTEuNCAzLjYtMi41IDYuMy0yLjUgNi41IDAgMTAuOCA0LjMgMTAuOCAxMS44djE1LjVINjI3di0xNC45YzAtMi44LTEuMy01LjItNC40LTUuMi0zLjYtLjEtNC44IDIuNi00LjggNi43em00MC43IDNoOC41Yy0xLjMgNi41LTYuMiAxMS0xMy40IDExLTguMSAwLTE0LjEtNS45LTE0LjEtMTQgMC04IDYtMTQgMTQuMS0xNCA3IDAgMTEuOSA0LjQgMTIuOSAxMC43SDY1OGMtLjYtMi0yLjMtMy40LTQuNy0zLjQtMy4zIDAtNS45IDIuOC01LjkgNi43IDAgMy45IDIuNiA2LjcgNiA2LjcgMi42IDAgNC41LTEuNCA1LjEtMy43em0xOCAyMS4yYy0zLjUgMC01LjItLjktNS4yLS45di03LjFzMS42LjggMy4zLjhjMS43IDAgNC0uNyA0LjYtMy43TDY2OC44IDE4Mmg4LjZsNi4xIDE2LjYgNi4yLTE2LjZoOC4zbC0xMSAyNy4yYy0yLjkgNy4xLTUuMiAxMC40LTEwLjUgMTAuNHptNDAuOS0xMC44di0zOC4yaDguMXYzOC4yem0yMy4zLTEzLjR2MTMuNEg3MzN2LTI2LjdoNy42djEuOWMxLjUtMS40IDMuNi0yLjUgNi4zLTIuNSA2LjUgMCAxMC44IDQuMyAxMC44IDExLjh2MTUuNUg3NTB2LTE0LjljMC0yLjgtMS4zLTUuMi00LjQtNS4yLTMuNy0uMS00LjkgMi42LTQuOSA2Ljd6bTIzLTIwLjljMC0yLjUgMi00LjUgNC41LTQuNXM0LjUgMiA0LjUgNC41LTIgNC41LTQuNSA0LjUtNC41LTIuMS00LjUtNC41em0uNiAzNC4zdi0yNi43aDcuN3YyNi43aC03Ljd6bTI1LjYuMWMtNS44IDAtOS4yLTMuNC05LjItOS4zdi0xMC40aC00LjV2LTcuMWg0LjV2LTMuOWw3LjctNi41djEwLjVoNi43djcuMWgtNi43djkuM2MwIDIuNiAxLjcgMy4yIDMuMyAzLjIgMS44IDAgMy4zLS43IDMuMy0uN3Y3YzAtLjEtMi4xLjgtNS4xLjh6bTEwLjQtMzQuNGMwLTIuNSAyLTQuNSA0LjUtNC41czQuNSAyIDQuNSA0LjUtMiA0LjUtNC41IDQuNS00LjUtMi4xLTQuNS00LjV6bS42IDM0LjN2LTI2LjdoNy43djI2LjdoLTcuN3ptMzAuOC0yLjhjLTEuNyAyLjEtNC4zIDMuMy03LjYgMy4zLTUuMyAwLTkuNi0zLjMtOS42LTguNCAwLTUuMSA0LjMtNy42IDEwLjQtNy45IDQuNi0uMyA2LjEtLjggNi4xLTIuMyAwLTEuNS0xLjQtMi42LTMuOS0yLjYtMy4xIDAtNC40IDEuNS00LjUgMy4yaC03LjVjLjQtNS44IDQuNy05LjkgMTItOS45IDcuMSAwIDExLjcgMy45IDExLjcgMTEuMXYxNi4yaC02LjRsLS43LTIuN3ptLTkuNC01LjRjMCAxLjUgMS40IDIuNSAzLjUgMi41IDIuOSAwIDUuMy0xLjYgNS4zLTV2LTFzLTEuNC43LTQuNC44Yy0zLjIuMi00LjQgMS4yLTQuNCAyLjd6bTMzLjYgOC4zYy01LjggMC05LjItMy40LTkuMi05LjN2LTEwLjRoLTQuNXYtNy4xaDQuNXYtMy45bDcuNy02LjV2MTAuNWg2Ljd2Ny4xaC02Ljd2OS4zYzAgMi42IDEuNyAzLjIgMy4zIDMuMiAxLjggMCAzLjMtLjcgMy4zLS43djdjMC0uMS0yLjEuOC01LjEuOHptMTAuNC0zNC40YzAtMi41IDItNC41IDQuNS00LjVzNC41IDIgNC41IDQuNS0yIDQuNS00LjUgNC41LTQuNS0yLjEtNC41LTQuNXptLjYgMzQuM3YtMjYuN2g3Ljd2MjYuN2gtNy43em0zOC43LTI2LjctOS41IDI2LjdoLThsLTkuNS0yNi43aDguMmw1LjIgMTYuNSA1LjItMTYuNXptMjguMiAxNS40aC0xOC45Yy40IDIuNyAyLjcgNC44IDYgNC44IDIuMiAwIDMuNS0uOSA0LjQtMi4zaDguM2MtMS44IDUuOC01LjkgOS40LTEyLjYgOS40LTcuNyAwLTE0LTUuNC0xNC0xMy44IDAtOC4xIDUuNy0xNC4yIDEzLjUtMTQuMiA4LjggMCAxMy4yIDYuOSAxMy4yIDE0LjEuMS43LjEgMiAuMSAyWm0tMTMuMS05LjNjLTIuOSAwLTQuOSAxLjgtNS40IDQuMWgxMC40Yy0uMi0yLjMtMi4yLTQuMS01LTQuMVpcXFwiIGZpbGw9XFxcIiMxODU1NjhcXFwiLz48L2c+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI1IDI0XFxcIj48cGF0aCBkPVxcXCJNMjAuODM0IDExLjIzVjguOTU3YTguMzMzIDguMzMzIDAgMCAwLTE2LjY2NyAwdjIuMjcxYTMuMTI1IDMuMTI1IDAgMCAwLTIuMDgzIDIuOTM4djIuMDgzYTMuMTI1IDMuMTI1IDAgMCAwIDMuMTI0IDMuMTI1aDMuMTI2YTEuMDQxIDEuMDQxIDAgMCAwIDEuMDQxLTEuMDQydi02LjI1YTEuMDQyIDEuMDQyIDAgMCAwLTEuMDQxLTEuMDQxSDYuMjVWOC45NThhNi4yNSA2LjI1IDAgMSAxIDEyLjUgMHYyLjA4NGgtMi4wODNhMS4wNDEgMS4wNDEgMCAwIDAtMS4wNDIgMS4wNDF2Ni4yNWExLjA0MSAxLjA0MSAwIDAgMCAxLjA0MiAxLjA0MmgzLjEyNWEzLjEyNSAzLjEyNSAwIDAgMCAzLjEyNS0zLjEyNXYtMi4wODNhMy4xMjUgMy4xMjUgMCAwIDAtMi4wODQtMi45MzhaTTcuMjkyIDEzLjEyNHY0LjE2N0g1LjIwOWExLjA0MiAxLjA0MiAwIDAgMS0xLjA0Mi0xLjA0MnYtMi4wODNhMS4wNDIgMS4wNDIgMCAwIDEgMS4wNDItMS4wNDJoMi4wODNabTEzLjU0MiAzLjEyNWExLjA0MiAxLjA0MiAwIDAgMS0xLjA0MiAxLjA0MmgtMi4wODR2LTQuMTY3aDIuMDg0YTEuMDQyIDEuMDQyIDAgMCAxIDEuMDQxIDEuMDQydjIuMDgzWlxcXCIgZmlsbD1cXFwiI2ZmZlxcXCIvPjxwYXRoIGQ9XFxcIk0xOC4zODQgMjEuNjE2QTQuNjMgNC42MyAwIDAgMSAxNS4xMiAyM2wtLjAxLTEuMTU4YTMuNDcyIDMuNDcyIDAgMCAwIDMuNDQ1LTMuNWwxLjE1Ny0uMDA5YTQuNjMgNC42MyAwIDAgMS0xLjMzIDMuMjg0WlxcXCIgZmlsbD1cXFwiI2ZmZlxcXCIgc3Ryb2tlPVxcXCIjZmZmXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuMDQyXFxcIi8+PHJlY3QgeD1cXFwiMTEuMjVcXFwiIHk9XFxcIjIwLjQxNlxcXCIgd2lkdGg9XFxcIjQuNjg4XFxcIiBoZWlnaHQ9XFxcIjMuMTI1XFxcIiByeD1cXFwiMS41NjNcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTUgMTRcXFwiPjxwYXRoIGQ9XFxcIk03LjM4NSA0LjY2N2ExLjEgMS4xIDAgMCAwLS41MTguMTI4Yy0uMTYuMDg1LS4yOTUuMjA5LS4zOS4zNjJsLS4wMDQuMDA2LS4wMDMuMDA3YS4zNDYuMzQ2IDAgMCAxLS4wOTMuMTA1LjQzOC40MzggMCAwIDEtLjQ1NS4wMzMuMzcuMzcgMCAwIDEtLjExMy0uMDkzLjMxMy4zMTMgMCAwIDEtLjA2LS4xMTcuMjg3LjI4NyAwIDAgMS0uMDA1LS4xMjRsLS4zMjktLjA1OC4zMjkuMDU4YS4zMDUuMzA1IDAgMCAxIC4wNDktLjEybC4wMDQtLjAwNS4wMDQtLjAwNmExLjc1IDEuNzUgMCAwIDEgLjY2My0uNjE1IDEuOTIgMS45MiAwIDAgMSAyLjA5Mi4xNzZjLjMyNC4yNTYuNTM3LjYwNS42MDcuOTg1LjA3LjM3OC0uMDA1Ljc3LS4yMTUgMS4xMDUtLjIxMS4zMzctLjU0Ni42LS45NTIuNzM3bC0uMjI3LjA3NnYuMzZhLjMxLjMxIDAgMCAxLS4xMDQuMjI3LjQxNC40MTQgMCAwIDEtLjI4LjEwNmMtLjExIDAtLjIxLS4wNC0uMjgxLS4xMDZBLjMxLjMxIDAgMCAxIDcgNy42NjdWN2EuMzEuMzEgMCAwIDEgLjEwNC0uMjI3LjQxNC40MTQgMCAwIDEgLjI4LS4xMDZjLjI3MiAwIC41MzYtLjEuNzM1LS4yODVhLjk3Ny45NzcgMCAwIDAgLjMxNy0uNzE1Ljk3Ny45NzcgMCAwIDAtLjMxNy0uNzE2IDEuMDggMS4wOCAwIDAgMC0uNzM0LS4yODRabTAgMFY1di0uMzMzWm0tLjM2OSA0LjkwNi4wMTItLjAyMS4wMDktLjAyM2EuMTYuMTYgMCAwIDEgLjAyLS4wMzcuNzM2LjczNiAwIDAgMSAuMDUtLjA2LjM5MS4zOTEgMCAwIDEgLjEyMi0uMDc0LjQzMy40MzMgMCAwIDEgLjMxMSAwbC4xMi0uMzEtLjEyLjMxYS4zOS4zOSAwIDAgMSAuMTI3LjA3OWMuMDM0LjAzMi4wNi4wNy4wNzcuMTA4YS4zLjMgMCAwIDEgLjAyNS4xMnYuMDE1YS4yOS4yOSAwIDAgMS0uMDIuMTE4LjI2My4yNjMgMCAwIDEtLjA2Ny4wOThsLjIyNy4yNDQtLjIyNy0uMjQ0YS4zMjEuMzIxIDAgMCAxLS4xMTYuMDY4bC0uMDEuMDAzLS4wMS4wMDVhLjM4Ni4zODYgMCAwIDEtLjI5MyAwbC0uMDEtLjAwNS0uMDEtLjAwM2EuMzIxLjMyMSAwIDAgMS0uMTE3LS4wNjhsLS4yMjcuMjQ0LjIyNy0uMjQ0YS4yNjMuMjYzIDAgMCAxLS4wNjctLjA5N2wtLjAwNi0uMDE1LS4wMDctLjAxNWEuMTkzLjE5MyAwIDAgMS0uMDIyLS4wOTNWOS42NGEuNTEuNTEgMCAwIDEtLjAwMi0uMDU3LjA3OC4wNzggMCAwIDEgLjAwNC0uMDFaTTMuNTcyIDEuNzRBNy4yNDUgNy4yNDUgMCAwIDEgNy4zODUuNjY3Yy45MDIgMCAxLjc5NS4xNjUgMi42MjcuNDg1LjgzMy4zMiAxLjU4OC43ODkgMi4yMjIgMS4zNzhhNi4zMjMgNi4zMjMgMCAwIDEgMS40OCAyLjA1NWMuMzQxLjc2Ni41MTcgMS41ODcuNTE3IDIuNDE1YTYgNiAwIDAgMS0xLjE0NyAzLjUxIDYuNzYgNi43NiAwIDAgMS0zLjA3MiAyLjMzOCA3LjM2MiA3LjM2MiAwIDAgMS0zLjk2OC4zNjMgNy4wMzMgNy4wMzMgMCAwIDEtMy41MS0xLjc0MUE2LjIwMSA2LjIwMSAwIDAgMSAuNjcgOC4yM2E1Ljg5MiA1Ljg5MiAwIDAgMSAuMzg3LTMuNjQ1QTYuNDY3IDYuNDY3IDAgMCAxIDMuNTcyIDEuNzRabS40NDYgOS45NzhhNi4zOSA2LjM5IDAgMCAwIDMuMzY3Ljk0OWMxLjYwNCAwIDMuMTQ2LS41OTIgNC4yODgtMS42NTJDMTIuODE1IDkuOTU1IDEzLjQ2IDguNTExIDEzLjQ2IDdhNS40IDUuNCAwIDAgMC0xLjAzLTMuMTU4IDYuMDA3IDYuMDA3IDAgMCAwLTIuNzI5LTIuMDggNi40ODggNi40ODggMCAwIDAtMy40OTgtLjMyIDYuMjI2IDYuMjI2IDAgMCAwLTMuMTA4IDEuNTQyIDUuNTYgNS41NiAwIDAgMC0xLjY3IDIuOTA2IDUuMzE0IDUuMzE0IDAgMCAwIC4zNDggMy4yODcgNS43NzMgNS43NzMgMCAwIDAgMi4yNDQgMi41NFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAyMCAyMFxcXCI+PHBhdGggZmlsbD1cXFwiIzY4Nzk3RVxcXCIgc3Ryb2tlPVxcXCIjNjg3OTdFXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiIGQ9XFxcIm0xMi4zMyAxNC42MDItLjU5LjEzMmE4LjA3NSA4LjA3NSAwIDAgMS0xLjc0LjE4M2wyLjMzLS4zMTVabTAgMC0uNDI3LS40MjltLjQyNy40My0uNDI3LS40M20wIDAtMS45LTEuOTA4LS4wODMtLjA4NG0xLjk4MyAxLjk5Mkw5LjkyIDEyLjE4MW0wIDAtLjExOC0uMDEybS4xMTguMDEyLS4xMTgtLjAxMm0wIDBhMi4yMiAyLjIyIDAgMCAxLTEuOTctMS45NzFsLS4wMTMtLjExN20xLjk4MyAyLjA4OEw3LjgyIDEwLjA4bTAgMC0uMDgzLS4wODNtLjA4My4wODMtLjA4My0uMDgzbTAgMEw0LjkwMyA3LjE1NmwtLjIxOS0uMjE5bTMuMDUyIDMuMDYxLTMuMDUyLTMuMDZtMCAwLS4yMzQuMm0uMjM0LS4yLS4yMzQuMm0wIDBhOC41NDQgOC41NDQgMCAwIDAtMi4wNzYgMi42Ny40MzIuNDMyIDAgMCAwIDAgLjM4NSA4LjUxOCA4LjUxOCAwIDAgMCAzLjExOSAzLjQzNE00LjQ1IDcuMTM5bDEuMDQzIDYuNDg4TTE4LjgwOCAxMEMxNy4zODQgNi41MjkgMTMuOTc4IDQuMDgzIDEwIDQuMDgzYTkuNTQ1IDkuNTQ1IDAgMCAwLTMuMzIyLjU5NmwuNzgyLjc3N0E4Ljk3MyA4Ljk3MyAwIDAgMSAxMCA1LjA4M0wxOC44MDggMTBabTAgMGE5LjQ5MiA5LjQ5MiAwIDAgMS0yLjk0MyAzLjg4M2wtLjcwNC0uNzA5YTguNTUxIDguNTUxIDAgMCAwIDIuNDY2LTIuOTgxLjQzMi40MzIgMCAwIDAgMC0uMzg1QTguNTE3IDguNTE3IDAgMCAwIDEwIDUuMDgzTDE4LjgwOCAxMFpNNS40OTMgMTMuNjI3QTguNTE4IDguNTE4IDAgMCAwIDEwIDE0LjkxN2wtNC41MDctMS4yOVptNy43ODQgMS45MDQtLjE0NS0uMTQ1LS4xOTUuMDY0YTkuMzEyIDkuMzEyIDAgMCAxLTIuOTM3LjQ2N2MtMy45NzggMC03LjM4NC0yLjQ0Ni04LjgwNy01LjkxN2E5LjQ2NCA5LjQ2NCAwIDAgMSAyLjUxOS0zLjUzM2wuMjY3LS4yMzUtLjI1MS0uMjUxLTEuMjkyLTEuMjkyYS40MTguNDE4IDAgMSAxIC41OTEtLjU5bDEyLjg3NSAxMi44NzRhLjQxOC40MTggMCAwIDEtLjU5MS41OTFsLTIuMDM0LTIuMDMzWk0xMCA3LjgzM0EyLjE2NyAyLjE2NyAwIDAgMSAxMi4xNjcgMTBjMCAuMDU1LS4wMDIuMTEtLjAwNi4xNjRMOS44MzYgNy44NGMuMDU0LS4wMDQuMTA5LS4wMDYuMTY0LS4wMDZaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIk0xMS4zMzMgMi4yYy0yLjYtMS40NjctNS44LTEtNy45MzMgMVYyYzAtLjQtLjI2Ny0uNjY3LS42NjctLjY2N1MyLjA2NyAxLjYgMi4wNjcgMnYzYzAgLjQuMjY2LjY2Ni42NjYuNjY2aDNjLjQgMCAuNjY3LS4yNjYuNjY3LS42NjZzLS4yNjctLjY2Ny0uNjY3LS42NjdoLTEuNmMxLTEuMDY3IDIuNC0xLjY2NyAzLjg2Ny0xLjY2NyAyLjkzMyAwIDUuMzMzIDIuNCA1LjMzMyA1LjMzNCAwIDIuOTMzLTIuNCA1LjMzMy01LjMzMyA1LjMzMy0yLjkzMyAwLTUuMzMzLTIuNC01LjMzMy01LjMzMyAwLS40LS4yNjctLjY2Ny0uNjY3LS42NjdTMS4zMzMgNy42IDEuMzMzIDhjMCAzLjY2NiAzIDYuNjY2IDYuNjY3IDYuNjY2IDIuNCAwIDQuNi0xLjI2NiA1LjgtMy4zMzMgMS44LTMuMi43MzMtNy4yNjctMi40NjctOS4xMzNaTTggNS4zMzNjLS40IDAtLjY2Ny4yNjctLjY2Ny42Njd2MmMwIC40LjI2Ny42NjYuNjY3LjY2NmgxLjMzM2MuNCAwIC42NjctLjI2Ni42NjctLjY2NnMtLjI2Ny0uNjY3LS42NjctLjY2N2gtLjY2NlY2YzAtLjQtLjI2Ny0uNjY3LS42NjctLjY2N1pcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE5MCAxOTBcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGNpcmNsZSBjeD1cXFwiOTVcXFwiIGN5PVxcXCI5NVxcXCIgcj1cXFwiODVcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48Y2lyY2xlIGN4PVxcXCI5NVxcXCIgY3k9XFxcIjk1XFxcIiByPVxcXCI5NVxcXCIgZmlsbD1cXFwiI0NERjhGQVxcXCIvPjxwYXRoIGQ9XFxcIk01MS4xNzIgNzkuNjM2YzAtMS44NDggMC0yLjc3Mi4yNDItMy42MjJhNi4zMzEgNi4zMzEgMCAwIDEgLjk4MS0yLjAwN2MuNTIzLS43MTMgMS4yNTItMS4yOCAyLjcxLTIuNDE2bDM0LjExNi0yNi41MzdjLjkyOC0uNzIzIDEuMzkyLTEuMDg0IDEuOS0xLjM0OWE2LjMyOSA2LjMyOSAwIDAgMSAyLjA0Ny0uNjU1Yy41NjctLjA4IDEuMTU1LS4wNTYgMi4zMy0uMDA4IDEuMDI3LjA0MiAxLjU0LjA2MyAyLjAzMy4xNjMuNjIyLjEyNiAxLjIyLjM0NCAxLjc3Ny42NDguNDQyLjI0MS44NDguNTU1IDEuNjYxIDEuMTg0bDM0LjY4OCAyNi44MjRjMS40NjcgMS4xMzQgMi4yIDEuNzAyIDIuNzI2IDIuNDE2LjQ0Ni42MDYuNzggMS4yODguOTg3IDIuMDEyLjI0NC44NTIuMjQ0IDEuNzguMjQ0IDMuNjM0djUyLjEwMWMwIDEuODAyIDAgMi43MDQtLjM1NiAzLjM5YTMuMTY3IDMuMTY3IDAgMCAxLTEuMzUgMS4zNDljLS42ODYuMzU3LTEuNTg3LjM1Ny0zLjM5LjM1N0g2MC4zNDVjLTMuMjQ1IDAtNC44NjcgMC02LjEwMi0uNjQyYTUuNjk3IDUuNjk3IDAgMCAxLTIuNDMtMi40MjljLS42NDEtMS4yMzUtLjY0MS0yLjg1Ny0uNjQxLTYuMTAyVjc5LjYzNlpcXFwiIGZpbGw9XFxcInVybCgjaWMtdmVyaWZpY2F0aW9uX3N2Z19fYSlcXFwiLz48cGF0aCBkPVxcXCJNNTkuNzc1IDcxLjkyNGMxLjI4NiAwIDEuODkuMDAyIDIuNDYuMTE0Ljc0LjE0NiAxLjQ0Ni40MjkgMi4wODEuODM0LjQ5LjMxMy45MjguNzMgMS44NTggMS42MThsMjYuNzYgMjUuNTYyYTUuMzYgNS4zNiAwIDAgMSAuMDEyIDcuNzM4bC0yNi4xMzQgMjUuMTEzYy0xLjgzMiAxLjc2LTIuNjkzIDIuNTgxLTMuNzY2IDMuMDEzLTEuMDcyLjQzMS0yLjI2Mi40MzYtNC44MDIuNDM2aC0uNzQyYy0xLjUgMC0yLjU5NiAwLTMuNDM0LS4xMTMtLjgyOS0uMTExLTEuMzYxLS4zMjgtMS43Ni0uNzI3LS40LS40LS42MTYtLjkzMi0uNzI4LTEuNzYxLS4xMTItLjgzOC0uMTEzLTEuOTMzLS4xMTMtMy40MzRWODAuMjMyYzAtMS4zNTggMC0yLjM2Mi4wNTYtMy4xNi4wNTUtLjc5NC4xNjQtMS4zNjMuMzcyLTEuODUzYTUuNDAyIDUuNDAyIDAgMCAxIDIuODY3LTIuODY3Yy40OS0uMjA4IDEuMDU4LS4zMTcgMS44NTMtLjM3Mi43OTgtLjA1NiAxLjgwMi0uMDU2IDMuMTYtLjA1NlpcXFwiIGZpbGw9XFxcIiNCOURERkZcXFwiIGZpbGwtb3BhY2l0eT1cXFwiLjZcXFwiIHN0cm9rZT1cXFwidXJsKCNpYy12ZXJpZmljYXRpb25fc3ZnX19iKVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNTkxXFxcIi8+PHBhdGggZD1cXFwiTTEzMS43OCA3MS45MjRjLTEuMjg2IDAtMS44OS4wMDItMi40NjEuMTE0YTYuMDQxIDYuMDQxIDAgMCAwLTIuMDgxLjgzNGMtLjQ5LjMxMy0uOTI3LjczLTEuODU3IDEuNjE4bC0yNi43NiAyNS41NjJhNS4zNiA1LjM2IDAgMCAwLS4wMTIgNy43MzhsMjYuMTM0IDI1LjExM2MxLjgzMiAxLjc2IDIuNjkzIDIuNTgxIDMuNzY1IDMuMDEzIDEuMDczLjQzMSAyLjI2My40MzYgNC44MDMuNDM2aC43NDJjMS41IDAgMi41OTYgMCAzLjQzMy0uMTEzLjgzLS4xMTEgMS4zNjItLjMyOCAxLjc2MS0uNzI3LjQtLjQuNjE2LS45MzIuNzI3LTEuNzYxLjExMy0uODM4LjExNC0xLjkzMy4xMTQtMy40MzRWODAuMjMyYzAtMS4zNTggMC0yLjM2Mi0uMDU2LTMuMTYtLjA1NS0uNzk0LS4xNjUtMS4zNjMtLjM3Mi0xLjg1M2E1LjQwMiA1LjQwMiAwIDAgMC0yLjg2OC0yLjg2N2MtLjQ4OS0uMjA4LTEuMDU4LS4zMTctMS44NTMtLjM3Mi0uNzk3LS4wNTYtMS44MDEtLjA1Ni0zLjE1OS0uMDU2WlxcXCIgZmlsbD1cXFwiI0I5RERGRlxcXCIgZmlsbC1vcGFjaXR5PVxcXCIuNlxcXCIgc3Ryb2tlPVxcXCJ1cmwoI2ljLXZlcmlmaWNhdGlvbl9zdmdfX2MpXFxcIiBzdHJva2Utd2lkdGg9XFxcIi41OTFcXFwiLz48cGF0aCBkPVxcXCJNNTAuNzEgMTI5LjQ2NWMwLTEuMzEuMDAyLTEuOTI1LjExNS0yLjQ5N2E2LjAzNiA2LjAzNiAwIDAgMSAxLjM4Mi0yLjgwOGMuMzg0LS40MzkuODctLjgxNSAxLjkwOS0xLjYxNWwzNS4yNzMtMjcuMTY4Yy45NTYtLjczNiAxLjQwNC0xLjA4IDEuODkzLTEuMzNhNi4wMzQgNi4wMzQgMCAwIDEgMS44OTItLjYwMmMuNTQzLS4wNzcgMS4xMDktLjA1NSAyLjMxNC0uMDA2IDEuMDUuMDQzIDEuNTQ0LjA2NCAyLjAxNi4xNmE2LjAzNCA2LjAzNCAwIDAgMSAxLjY0LjU5NWMuNDI1LjIyNy44MTcuNTI3IDEuNjUzIDEuMTY2bDM0LjU1MyAyNi40NTFjMi4zNDkgMS43OTggMy40NDUgMi42NDUgNC4wNTggMy44MjQuMDM4LjA3My4wNzUuMTQ3LjExLjIyMi41NjMgMS4yMDMuNTcgMi41ODkuNTcgNS41NDcgMCAxLjQzMS0uMDAxIDIuNDc2LS4xMDQgMy4yNzgtLjEwMi43OTUtLjMgMS4zMDktLjY2NiAxLjcwMmEyLjczNSAyLjczNSAwIDAgMS0uMTQzLjE0MmMtLjM5My4zNjYtLjkwNy41NjUtMS43MDIuNjY3LS44MDIuMTAzLTEuODQ3LjEwNC0zLjI3OC4xMDRINTguNTQyYy0yLjI4NiAwLTMuMzU0LS4wMDQtNC4yMDUtLjNhNS40MDMgNS40MDMgMCAwIDEtMy4zMjYtMy4zMjdjLS4yOTYtLjg1LS4zLTEuOTE4LS4zLTQuMjA1WlxcXCIgZmlsbD1cXFwiI0I5RERGRlxcXCIgc3Ryb2tlPVxcXCJ1cmwoI2ljLXZlcmlmaWNhdGlvbl9zdmdfX2QpXFxcIiBzdHJva2Utd2lkdGg9XFxcIi41OTFcXFwiLz48cGF0aCBkPVxcXCJNNTAuNzEgMTI5LjQ2NWMwLTEuMzEuMDAyLTEuOTI1LjExNS0yLjQ5N2E2LjAzNiA2LjAzNiAwIDAgMSAxLjM4Mi0yLjgwOGMuMzg0LS40MzkuODctLjgxNSAxLjkwOS0xLjYxNWwzNS4yNzMtMjcuMTY4Yy45NTYtLjczNiAxLjQwNC0xLjA4IDEuODkzLTEuMzNhNi4wMzQgNi4wMzQgMCAwIDEgMS44OTItLjYwMmMuNTQzLS4wNzcgMS4xMDktLjA1NSAyLjMxNC0uMDA2IDEuMDUuMDQzIDEuNTQ0LjA2NCAyLjAxNi4xNmE2LjAzNCA2LjAzNCAwIDAgMSAxLjY0LjU5NWMuNDI1LjIyNy44MTcuNTI3IDEuNjUzIDEuMTY2bDM0LjU1MyAyNi40NTFjMi4zNDkgMS43OTggMy40NDUgMi42NDUgNC4wNTggMy44MjRsLjI2Mi0uMTM3LS4yNjIuMTM3Yy4wMzguMDczLjA3NS4xNDcuMTEuMjIybC4yNjctLjEyNS0uMjY3LjEyNWMuNTYzIDEuMjAzLjU3IDIuNTg5LjU3IDUuNTQ3IDAgMS40MzEtLjAwMSAyLjQ3Ni0uMTA0IDMuMjc4LS4xMDIuNzk1LS4zIDEuMzA5LS42NjYgMS43MDJhMy4yMTQgMy4yMTQgMCAwIDEtLjE0My4xNDNjLS4zOTMuMzY1LS45MDcuNTY0LTEuNzAyLjY2Ni0uODAyLjEwMy0xLjg0Ny4xMDQtMy4yNzguMTA0SDU4LjU0MmMtMi4yODYgMC0zLjM1NC0uMDA0LTQuMjA1LS4zYTUuNDAzIDUuNDAzIDAgMCAxLTMuMzI2LTMuMzI3Yy0uMjk2LS44NS0uMy0xLjkxOC0uMy00LjIwNVpcXFwiIGZpbGw9XFxcInVybCgjaWMtdmVyaWZpY2F0aW9uX3N2Z19fZSlcXFwiIHN0cm9rZT1cXFwidXJsKCNpYy12ZXJpZmljYXRpb25fc3ZnX19mKVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNTkxXFxcIi8+PGNpcmNsZSBjeD1cXFwiMTMzLjczM1xcXCIgY3k9XFxcIjEzMi4yMTNcXFwiIHI9XFxcIjIxLjIxM1xcXCIgZmlsbD1cXFwiI0YxRjdGOVxcXCIvPjxtYXNrIGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19pXFxcIiBmaWxsPVxcXCIjZmZmXFxcIj48cGF0aCBmaWxsLXJ1bGU9XFxcImV2ZW5vZGRcXFwiIGNsaXAtcnVsZT1cXFwiZXZlbm9kZFxcXCIgZD1cXFwiTTE0Ni41NDEgMTI3LjM2NGEzLjAwMSAzLjAwMSAwIDAgMC00LjI0My00LjI0M2wtMTIuMTMxIDEyLjEzMS00LjI4My00LjI4M2EzIDMgMCAxIDAtNC4yNDMgNC4yNDNsNi4zNjQgNi4zNjRhMy4wMDEgMy4wMDEgMCAwIDAgMy40Ni41NjRjLjMzOS0uMTQ2LjY1Ny0uMzU3LjkzNC0uNjM0bDE0LjE0Mi0xNC4xNDJaXFxcIi8+PC9tYXNrPjxwYXRoIGZpbGwtcnVsZT1cXFwiZXZlbm9kZFxcXCIgY2xpcC1ydWxlPVxcXCJldmVub2RkXFxcIiBkPVxcXCJNMTQ2LjU0MSAxMjcuMzY0YTMuMDAxIDMuMDAxIDAgMCAwLTQuMjQzLTQuMjQzbC0xMi4xMzEgMTIuMTMxLTQuMjgzLTQuMjgzYTMgMyAwIDEgMC00LjI0MyA0LjI0M2w2LjM2NCA2LjM2NGEzLjAwMSAzLjAwMSAwIDAgMCAzLjQ2LjU2NGMuMzM5LS4xNDYuNjU3LS4zNTcuOTM0LS42MzRsMTQuMTQyLTE0LjE0MlpcXFwiIGZpbGw9XFxcInVybCgjaWMtdmVyaWZpY2F0aW9uX3N2Z19fZylcXFwiIGZpbGwtb3BhY2l0eT1cXFwiLjlcXFwiLz48cGF0aCBkPVxcXCJtMTQ2LjU0MSAxMjMuMTIxLS4xNzMuMTczLjE3My0uMTczWm0wIDQuMjQzLS4xNzMtLjE3NC4xNzMuMTc0Wm0tNC4yNDMtNC4yNDMtLjE3My0uMTczLjE3My4xNzNabS0xMi4xMzEgMTIuMTMxLS4xNzMuMTczLjE3My4xNzQuMTczLS4xNzQtLjE3My0uMTczWm0tNC4yODMtNC4yODMuMTczLS4xNzMtLjE3My4xNzNabS00LjI0MyA0LjI0My4xNzQtLjE3NC0uMTc0LjE3NFptNi4zNjQgNi4zNjQtLjE3My4xNzMuMTczLS4xNzNabTMuNDYuNTY0LS4wOTctLjIyNS0uMDEyLjAwNi4xMDkuMjE5Wm0uOTM0LS42MzQtLjE3NC0uMTc0LjE3NC4xNzRabTEzLjk2OS0xOC4yMTJhMi43NTYgMi43NTYgMCAwIDEgMCAzLjg5NmwuMzQ2LjM0N2EzLjI0NSAzLjI0NSAwIDAgMCAwLTQuNTg5bC0uMzQ2LjM0NlptLTMuODk3IDBhMi43NTYgMi43NTYgMCAwIDEgMy44OTcgMGwuMzQ2LS4zNDZhMy4yNDMgMy4yNDMgMCAwIDAtNC41ODkgMGwuMzQ2LjM0NlptLTEyLjEzMSAxMi4xMzEgMTIuMTMxLTEyLjEzMS0uMzQ2LS4zNDYtMTIuMTMxIDEyLjEzMS4zNDYuMzQ2Wm0tNC42MjktNC4yODMgNC4yODMgNC4yODMuMzQ2LS4zNDYtNC4yODMtNC4yODMtLjM0Ni4zNDZabS0zLjg5NiAwYTIuNzU1IDIuNzU1IDAgMCAxIDMuODk2IDBsLjM0Ni0uMzQ2YTMuMjQzIDMuMjQzIDAgMCAwLTQuNTg5IDBsLjM0Ny4zNDZabTAgMy44OTZhMi43NTUgMi43NTUgMCAwIDEgMC0zLjg5NmwtLjM0Ny0uMzQ2YTMuMjQ1IDMuMjQ1IDAgMCAwIDAgNC41ODlsLjM0Ny0uMzQ3Wm02LjM2NCA2LjM2NC02LjM2NC02LjM2NC0uMzQ3LjM0NyA2LjM2NCA2LjM2NC4zNDctLjM0N1ptMy4xNzcuNTE5YTIuNzU1IDIuNzU1IDAgMCAxLTMuMTc3LS41MTlsLS4zNDcuMzQ3YTMuMjQ0IDMuMjQ0IDAgMCAwIDMuNzQyLjYxbC0uMjE4LS40MzhabS44NjktLjU4OWEyLjczNSAyLjczNSAwIDAgMS0uODU3LjU4M2wuMTk0LjQ1YTMuMjM3IDMuMjM3IDAgMCAwIDEuMDEtLjY4NmwtLjM0Ny0uMzQ3Wm0xNC4xNDMtMTQuMTQyLTE0LjE0MyAxNC4xNDIuMzQ3LjM0NyAxNC4xNDItMTQuMTQyLS4zNDYtLjM0N1pcXFwiIGZpbGw9XFxcInVybCgjaWMtdmVyaWZpY2F0aW9uX3N2Z19faClcXFwiIG1hc2s9XFxcInVybCgjaWMtdmVyaWZpY2F0aW9uX3N2Z19faSlcXFwiLz48bWFzayBpZD1cXFwiaWMtdmVyaWZpY2F0aW9uX3N2Z19fbFxcXCIgZmlsbD1cXFwiI2ZmZlxcXCI+PHBhdGggZmlsbC1ydWxlPVxcXCJldmVub2RkXFxcIiBjbGlwLXJ1bGU9XFxcImV2ZW5vZGRcXFwiIGQ9XFxcIk0xNDYuNTQxIDEyNy4zNjRhMy4wMDEgMy4wMDEgMCAwIDAtNC4yNDMtNC4yNDNsLTEyLjEzMSAxMi4xMzEtNC4yODMtNC4yODNhMyAzIDAgMSAwLTQuMjQzIDQuMjQzbDYuMzY0IDYuMzY0YTMuMDAxIDMuMDAxIDAgMCAwIDMuNDYuNTY0Yy4zMzktLjE0Ni42NTctLjM1Ny45MzQtLjYzNGwxNC4xNDItMTQuMTQyWlxcXCIvPjwvbWFzaz48cGF0aCBmaWxsLXJ1bGU9XFxcImV2ZW5vZGRcXFwiIGNsaXAtcnVsZT1cXFwiZXZlbm9kZFxcXCIgZD1cXFwiTTE0Ni41NDEgMTI3LjM2NGEzLjAwMSAzLjAwMSAwIDAgMC00LjI0My00LjI0M2wtMTIuMTMxIDEyLjEzMS00LjI4My00LjI4M2EzIDMgMCAxIDAtNC4yNDMgNC4yNDNsNi4zNjQgNi4zNjRhMy4wMDEgMy4wMDEgMCAwIDAgMy40Ni41NjRjLjMzOS0uMTQ2LjY1Ny0uMzU3LjkzNC0uNjM0bDE0LjE0Mi0xNC4xNDJaXFxcIiBmaWxsPVxcXCJ1cmwoI2ljLXZlcmlmaWNhdGlvbl9zdmdfX2opXFxcIiBmaWxsLW9wYWNpdHk9XFxcIi43NVxcXCIvPjxwYXRoIGQ9XFxcIm0xNDYuNTQxIDEyMy4xMjEtLjE3My4xNzMuMTczLS4xNzNabTAgNC4yNDMtLjE3My0uMTc0LjE3My4xNzRabS00LjI0My00LjI0My0uMTczLS4xNzMuMTczLjE3M1ptLTEyLjEzMSAxMi4xMzEtLjE3My4xNzMuMTczLjE3NC4xNzMtLjE3NC0uMTczLS4xNzNabS00LjI4My00LjI4My4xNzMtLjE3My0uMTczLjE3M1ptLTQuMjQzIDQuMjQzLjE3NC0uMTc0LS4xNzQuMTc0Wm02LjM2NCA2LjM2NC0uMTczLjE3My4xNzMtLjE3M1ptMy40Ni41NjQtLjA5Ny0uMjI1LS4wMTIuMDA2LjEwOS4yMTlabS45MzQtLjYzNC0uMTc0LS4xNzQuMTc0LjE3NFptMTMuOTY5LTE4LjIxMmEyLjc1NiAyLjc1NiAwIDAgMSAwIDMuODk2bC4zNDYuMzQ3YTMuMjQ1IDMuMjQ1IDAgMCAwIDAtNC41ODlsLS4zNDYuMzQ2Wm0tMy44OTcgMGEyLjc1NiAyLjc1NiAwIDAgMSAzLjg5NyAwbC4zNDYtLjM0NmEzLjI0MyAzLjI0MyAwIDAgMC00LjU4OSAwbC4zNDYuMzQ2Wm0tMTIuMTMxIDEyLjEzMSAxMi4xMzEtMTIuMTMxLS4zNDYtLjM0Ni0xMi4xMzEgMTIuMTMxLjM0Ni4zNDZabS00LjYyOS00LjI4MyA0LjI4MyA0LjI4My4zNDYtLjM0Ni00LjI4My00LjI4My0uMzQ2LjM0NlptLTMuODk2IDBhMi43NTUgMi43NTUgMCAwIDEgMy44OTYgMGwuMzQ2LS4zNDZhMy4yNDMgMy4yNDMgMCAwIDAtNC41ODkgMGwuMzQ3LjM0NlptMCAzLjg5NmEyLjc1NSAyLjc1NSAwIDAgMSAwLTMuODk2bC0uMzQ3LS4zNDZhMy4yNDUgMy4yNDUgMCAwIDAgMCA0LjU4OWwuMzQ3LS4zNDdabTYuMzY0IDYuMzY0LTYuMzY0LTYuMzY0LS4zNDcuMzQ3IDYuMzY0IDYuMzY0LjM0Ny0uMzQ3Wm0zLjE3Ny41MTlhMi43NTUgMi43NTUgMCAwIDEtMy4xNzctLjUxOWwtLjM0Ny4zNDdhMy4yNDQgMy4yNDQgMCAwIDAgMy43NDIuNjFsLS4yMTgtLjQzOFptLjg2OS0uNTg5YTIuNzM1IDIuNzM1IDAgMCAxLS44NTcuNTgzbC4xOTQuNDVhMy4yMzcgMy4yMzcgMCAwIDAgMS4wMS0uNjg2bC0uMzQ3LS4zNDdabTE0LjE0My0xNC4xNDItMTQuMTQzIDE0LjE0Mi4zNDcuMzQ3IDE0LjE0Mi0xNC4xNDItLjM0Ni0uMzQ3WlxcXCIgZmlsbD1cXFwidXJsKCNpYy12ZXJpZmljYXRpb25fc3ZnX19rKVxcXCIgZmlsbC1vcGFjaXR5PVxcXCIuMVxcXCIgbWFzaz1cXFwidXJsKCNpYy12ZXJpZmljYXRpb25fc3ZnX19sKVxcXCIvPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiaWMtdmVyaWZpY2F0aW9uX3N2Z19fYVxcXCIgeDE9XFxcIjc2LjY4NFxcXCIgeTE9XFxcIjg2LjU2OFxcXCIgeDI9XFxcIjE0My40MTdcXFwiIHkyPVxcXCIxMTEuMjgzXFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiIzdGQzBGQlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiIzQwODhGNFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19iXFxcIiB4MT1cXFwiOTEuODg5XFxcIiB5MT1cXFwiNjguMzc4XFxcIiB4Mj1cXFwiMzQuMDA4XFxcIiB5Mj1cXFwiOTMuOTM3XFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiLjc2NlxcXCIgc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2NcXFwiIHgxPVxcXCI5OS42NjVcXFwiIHkxPVxcXCI2OC4zNzhcXFwiIHgyPVxcXCIxNTcuNTQ3XFxcIiB5Mj1cXFwiOTMuOTM3XFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiLjc2NlxcXCIgc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2RcXFwiIHgxPVxcXCI0NS45MTdcXFwiIHkxPVxcXCI5Ni4xODVcXFwiIHgyPVxcXCI2Ni41NjlcXFwiIHkyPVxcXCIxNTkuODIyXFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiLjc2NlxcXCIgc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2VcXFwiIHgxPVxcXCI5NS40XFxcIiB5MT1cXFwiOTNcXFwiIHgyPVxcXCI5NS40XFxcIiB5Mj1cXFwiMTM3LjU5MlxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNBN0QyRkRcXFwiIHN0b3Atb3BhY2l0eT1cXFwiLjI1XFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIxXFxcIiBzdG9wLWNvbG9yPVxcXCIjOTdDOEZDXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2ZcXFwiIHgxPVxcXCI0NS45MTdcXFwiIHkxPVxcXCI5Ni4xODVcXFwiIHgyPVxcXCI2Ni41NjlcXFwiIHkyPVxcXCIxNTkuODIyXFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiLjc2NlxcXCIgc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2dcXFwiIHgxPVxcXCIxNTAuMzQzXFxcIiB5MT1cXFwiMTI0LjEyOFxcXCIgeDI9XFxcIjExNy4zMjJcXFwiIHkyPVxcXCIxMzcuMzk1XFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiIzE3OTk3QlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiIzE3OTk3QlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2hcXFwiIHgxPVxcXCIxNTAuODcxXFxcIiB5MT1cXFwiMTIxLjIyNVxcXCIgeDI9XFxcIjEzNC4wMzVcXFwiIHkyPVxcXCIxMjUuODlcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjMTc5OTdCXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIxXFxcIiBzdG9wLWNvbG9yPVxcXCIjMTc5OTdCXFxcIiBzdG9wLW9wYWNpdHk9XFxcIjBcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiaWMtdmVyaWZpY2F0aW9uX3N2Z19falxcXCIgeDE9XFxcIjE1MC4zNDNcXFwiIHkxPVxcXCIxMjQuMTI4XFxcIiB4Mj1cXFwiMTE3LjMyMlxcXCIgeTI9XFxcIjEzNy4zOTVcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjMTc5OTdCXFxcIiBzdG9wLW9wYWNpdHk9XFxcIjBcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiMxNzk5N0JcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiaWMtdmVyaWZpY2F0aW9uX3N2Z19fa1xcXCIgeDE9XFxcIjE1MC44NzFcXFwiIHkxPVxcXCIxMjEuMjI1XFxcIiB4Mj1cXFwiMTM0LjAzNVxcXCIgeTI9XFxcIjEyNS44OVxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiMxNzk5N0JcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiIzE3OTk3QlxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxOVxcXCI+PHBhdGggZmlsbD1cXFwiI2ZmZlxcXCIgc3Ryb2tlPVxcXCIjMTU1MzY2XFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiIGQ9XFxcIk0xMSA1LjY2N1Y2aDIuMzMzYS4zMzMuMzMzIDAgMCAxIC4zMzQuMzMzdjkuMzM0QTEuNjY3IDEuNjY3IDAgMCAxIDEyIDE3LjMzM0g0YTEuNjY3IDEuNjY3IDAgMCAxLTEuNjY3LTEuNjY2VjYuMzMzQS4zMzMuMzMzIDAgMCAxIDIuNjY3IDZINVY1YS4zMzMuMzMzIDAgMSAxIC42NjcgMHYxaDJWNWEuMzMzLjMzMyAwIDEgMSAuNjY2IDB2MWgyVjVjMC0uMDg4LjAzNS0uMTczLjA5OC0uMjM2bC0uMjM2LS4yMzUuMjM2LjIzNUEuMzMzLjMzMyAwIDAgMSAxMSA1di42NjdaTTMuMjkzIDE2LjM3NGwuMjM2LS4yMzYtLjIzNi4yMzZhMSAxIDAgMCAwIC43MDcuMjkzaDhhMSAxIDAgMCAwIDEtMXYtOWgtMnYxYS4zMzMuMzMzIDAgMSAxLS42NjcgMHYtMWgtMnYxYS4zMzMuMzMzIDAgMCAxLS42NjYgMHYtMWgtMnYxYS4zMzMuMzMzIDAgMCAxLS42NjcgMHYtMUgzdjlhMSAxIDAgMCAwIC4yOTMuNzA3Wm0yLjA0LTMuNzA3aDUuMzM0YS4zMzMuMzMzIDAgMSAxIDAgLjY2Nkg1LjMzM2EuMzMzLjMzMyAwIDAgMS0uMjM1LS4wOTdsLS4yMzYuMjM1LjIzNi0uMjM1YS4zMzMuMzMzIDAgMCAxIDAtLjQ3MmwtLjIzNi0uMjM2LjIzNi4yMzZhLjMzMy4zMzMgMCAwIDEgLjIzNS0uMDk3Wm0xLjA5OC0yLjU3QS4zMzMuMzMzIDAgMCAxIDYuNjY3IDEwaDRhLjMzMy4zMzMgMCAxIDEgMCAuNjY3aC00YS4zMzMuMzMzIDAgMCAxLS4yMzYtLjU3WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAyMCAyMFxcXCI+PHBhdGggZmlsbD1cXFwiIzE1NTM2NlxcXCIgZD1cXFwibTE3LjUgMy42NjcuNTgzLS41ODRhLjgwNi44MDYgMCAwIDAgMC0xLjE2Ni44MDYuODA2IDAgMCAwLTEuMTY2IDBsLTguNzUgOC43NUE0LjQ4IDQuNDggMCAwIDAgNS44MzIgMTBhNC4xMjYgNC4xMjYgMCAwIDAtNC4xNjcgNC4xNjcgNC4xMjYgNC4xMjYgMCAwIDAgNC4xNjcgNC4xNjZBNC4xMjYgNC4xMjYgMCAwIDAgMTAgMTQuMTY3YTQuNDggNC40OCAwIDAgMC0uNjY3LTIuMzM0TDE0IDcuMTY3bDEuNzUgMS43NWEuODA2LjgwNiAwIDAgMCAxLjE2NiAwIC44MDYuODA2IDAgMCAwIDAtMS4xNjdMMTUuMTY2IDZsMS4xNjctMS4xNjcuNTg0LjU4NGEuODA2LjgwNiAwIDAgMCAxLjE2NiAwIC44MDYuODA2IDAgMCAwIDAtMS4xNjdsLS41ODMtLjU4M1ptLTExLjY2NyAxM2MtMS40MTcgMC0yLjUtMS4wODQtMi41LTIuNSAwLTEuNDE3IDEuMDgzLTIuNSAyLjUtMi41czIuNSAxLjA4MyAyLjUgMi41YzAgMS40MTYtMS4wODMgMi41LTIuNSAyLjVaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE4XFxcIj48cGF0aCBkPVxcXCJNNC4zMTEgNy40MyAzLjc0IDhoMTAuOTI2YTEgMSAwIDEgMSAwIDJIMy43NGwuNTcxLjU3IDQuNCA0LjM4NmExIDEgMCAwIDEgMCAxLjQybC0uMDAxLjAwM2ExIDEgMCAwIDEtMS40MiAwbC0uMDAxLS4wMDFMLjYyNSA5LjcxNGExIDEgMCAwIDEtLjIwOC0uMzI4TC40MTUgOS4zOGExIDEgMCAwIDEgMC0uNzZsLjAwMi0uMDA2YTEgMSAwIDAgMSAuMjA4LS4zMjhsNi42NjQtNi42NjQtLjIzNi0uMjM1LjIzNi4yMzVBMS4wMDUgMS4wMDUgMCAxIDEgOC43MSAzLjA0NGwtNC40IDQuMzg3WlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlPVxcXCIjMTU1MzY2XFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjY2IDYzXFxcIj48cGF0aCBkPVxcXCJNLjgzIDU4LjkxVjI4LjdoOC43MjV2MzAuMjFILjgzWm0zNS4wMTctMi45M2MtMS45ODMgMi40MTYtNC44MzUgMy43NzctOC42MTUgMy43NzctNi4wNzYgMC0xMC45NzEtMy43NzgtMTAuOTcxLTkuNjAzIDAtNS43NjMgNC44OTgtOC42MSAxMS43NzctOC45ODUgNS4yNy0uMzEgNi45NDMtLjg2OCA2Ljk0My0yLjY2MyAwLTEuNzM2LTEuNjExLTIuOTEzLTQuNDYzLTIuOTEzLTMuNDcgMC00Ljk2IDEuNzM2LTUuMTQ1IDMuNTk0aC04LjQ5NGMuNDM0LTYuNjI4IDUuMzkyLTExLjIxNCAxMy43MDEtMTEuMjE0IDguMTIyIDAgMTMuMzMgNC4zOTggMTMuMzMgMTIuNjM3djE4LjQ2M2gtNy4yNTRsLS44MDktMy4wOTRabS0xMC43ODYtNi4xOTVjMCAxLjczNiAxLjU1IDIuNzg4IDQuMDMgMi43ODggMy4zNDggMCA2LjAxMi0xLjg1OCA2LjAxMi01LjYzOFY0NS44MnMtMS42MTEuNzQzLTQuOTYuOTNjLTMuNjU4LjE4NS01LjA4MiAxLjM2Mi01LjA4MiAzLjAzNVptMzguMzA3IDkuNDE2Yy02LjYzMiAwLTEwLjQ3Ny0zLjg0LTEwLjQ3Ny0xMC41MzNWMzYuODM2aC01LjA4M3YtOC4xMTdoNS4wODN2LTQuNDYxbDguODAyLTcuNDM0VjI4LjcyaDcuNjI2djguMTE3aC03LjYyNlY0Ny40M2MwIDIuOTEyIDEuOTIyIDMuNTkzIDMuNzIgMy41OTNhOS41MzkgOS41MzkgMCAwIDAgMy43MjEtLjgwNXY3Ljk5MmMwIC4wMDItMi4zNTUuOTkyLTUuNzY2Ljk5MlpNLjA4IDE5LjYzNGMwLTIuODUgMi4yMy01LjE0MiA1LjA4Mi01LjE0MmE1LjEzIDUuMTMgMCAwIDEgNS4xNDUgNS4xNDJjMCAyLjc4OC0yLjI5MyA1LjA4LTUuMTQ1IDUuMDhhNS4wNjMgNS4wNjMgMCAwIDEtNS4wODItNS4wOFpNNzUuODA5IDU4LjkxVjI4LjdoOC43MjZ2MzAuMjFoLTguNzI2Wm0yMC4xNTQtMzkuMjAyYzAtMS40LS4xOS0yLjc2LS41MzctNC4wNTNhMTUuNTEgMTUuNTEgMCAwIDAtMS41NjktMy43NzIgMTUuNjY1IDE1LjY2NSAwIDAgMC0yLjQ4OS0zLjI0MSAxNS43MzIgMTUuNzMyIDAgMCAwLTcuMDE4LTQuMDUgMTUuNjU4IDE1LjY1OCAwIDAgMC00LjA1Mi0uNTMzaC0uMDA2YTE1Ljc1IDE1Ljc1IDAgMCAwLTQuMDQ5LjUzYy0xLjM0LjM1Ny0yLjYwNS44ODgtMy43NzcgMS41NjVBMTUuNjcgMTUuNjcgMCAwIDAgNjkuMjIgOC42NGExNS43NyAxNS43NyAwIDAgMC0yLjQ5MiAzLjI0MiAxNS42NDggMTUuNjQ4IDAgMCAwLTEuNTcyIDMuNzc0bDIuMjQyLjYwMmExMy40MjcgMTMuNDI3IDAgMCAxIDMuNDYyLTUuOTc4IDEzLjQyNiAxMy40MjYgMCAwIDEgNS45ODQtMy40NSAxMy40MjYgMTMuNDI2IDAgMCAxIDMuNDQ4LS40NWguMDA2YzEuMTk1IDAgMi4zNS4xNTggMy40NTQuNDUzYTEzLjQxMiAxMy40MTIgMCAwIDEgNS45OCAzLjQ0OWMuODE5LjgyIDEuNTMxIDEuNzUgMi4xMTkgMi43NmExMy4zIDEzLjMgMCAwIDEgMS43OTMgNi42NjR2LjAxMmExMy4zOCAxMy4zOCAwIDAgMS0uNDUxIDMuNDQzIDEzLjIxNyAxMy4yMTcgMCAwIDEtMS4zMzQgMy4yMTlsMi4wMSAxLjE2YTE1LjUzOSAxNS41MzkgMCAwIDAgMS41NjYtMy43NzggMTUuNyAxNS43IDAgMCAwIC41My00LjA0MWwtLjAwMi0uMDEyWlxcXCIgZmlsbD1cXFwiI2ZmZlxcXCIvPjxwYXRoIGQ9XFxcIk0xMDAuMDIzIDE5LjcwOGExOS42NTUgMTkuNjU1IDAgMCAwLTIuNjQ0LTkuODU1IDE5LjgxIDE5LjgxIDAgMCAwLTcuMjItNy4yMTNBMTkuNjEyIDE5LjYxMiAwIDAgMCA4NS40MDMuNjcgMTkuODEgMTkuODEgMCAwIDAgODAuMjk4IDBoLS4wMDZjLTEuNzY1IDAtMy40NzMuMjMzLTUuMTAyLjY2NmExOS41MTMgMTkuNTEzIDAgMCAwLTQuNzU5IDEuOTY5IDE5LjgyNCAxOS44MjQgMCAwIDAtNC4wODYgMy4xMzRsMS4yMzEgMS4yM2ExOC4xMDYgMTguMTA2IDAgMCAxIDMuNzI2LTIuODU1IDE3LjgwMyAxNy44MDMgMCAwIDEgNC4zNC0xLjc5MyAxOC4wODQgMTguMDg0IDAgMCAxIDQuNjQ4LS42MDdoLjAwNWExNy45NSAxNy45NSAwIDAgMSAxMi43MTMgNS4yNjEgMTcuOTMzIDE3LjkzMyAwIDAgMSA1LjI3MyAxMi43MDN2LjAxMWExOC4wMyAxOC4wMyAwIDAgMS0uNjA3IDQuNjQzIDE3LjY3NSAxNy42NzUgMCAwIDEtMS43OTcgNC4zMzcgMTguMDIzIDE4LjAyMyAwIDAgMS0yLjg1NyAzLjcyM2wxLjIzMSAxLjIzMWExOS43NDMgMTkuNzQzIDAgMCAwIDMuMTM2LTQuMDg0IDE5LjYgMTkuNiAwIDAgMCAxLjk3LTQuNzU2Yy40MzQtMS42MjUuNjY2LTMuMzMyLjY2Ni01LjA5NHYtLjAxWlxcXCIgZmlsbD1cXFwiI2ZmZlxcXCIvPjxwYXRoIGQ9XFxcIk05MC45NDUgMTYuODU1YTEwLjk0OCAxMC45NDggMCAwIDAtMS4xMDQtMi42NTUgMTEuMTU1IDExLjE1NSAwIDAgMC0xLjc1LTIuMjggMTEuMDQ4IDExLjA0OCAwIDAgMC0yLjI4Mi0xLjc0N0ExMC45NjQgMTAuOTY0IDAgMCAwIDgwLjMgOC42OTVoLS4wMDZjLS45ODcgMC0xLjk0LjEzLTIuODQ5LjM3MmExMC45MSAxMC45MSAwIDAgMC0yLjY2IDEuMSAxMC45OTQgMTAuOTk0IDAgMCAwLTQuMDM3IDQuMDI3IDExIDExIDAgMCAwLTEuNDg0IDUuNTF2LjAxMmExMC45MjQgMTAuOTI0IDAgMCAwIDEuNDc2IDUuNTA1bDMuMDEzLTEuNzM4YTcuNTM1IDcuNTM1IDAgMCAxLTEuMDEtMy43N3YtLjAxYTcuNTUzIDcuNTUzIDAgMCAxIDcuNTQ4LTcuNTMzaC4wMDZhNy41MjQgNy41MjQgMCAwIDEgMy43NjkgMS4wMTIgNy41NSA3LjU1IDAgMCAxIDMuNTEzIDQuNTcyYy4xNjcuNjIuMjU4IDEuMjc2LjI1OCAxLjk1MWgzLjQ3OWMuMDAzLS45ODQtLjEyOC0xLjk0LS4zNzItMi44NVpcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48cGF0aCBkPVxcXCJNODcuNTg1IDE3Ljc2NWE3LjU0MiA3LjU0MiAwIDAgMC0xLjk1NS0zLjM4bC0xLjY0IDEuNjM5YTUuMjY0IDUuMjY0IDAgMCAxIDEuMzU0IDIuMzQzIDUuMTg0IDUuMTg0IDAgMCAxIDAgMi43MDUgNS4yMzkgNS4yMzkgMCAwIDEtMy42OTggMy42OTUgNS4xOTUgNS4xOTUgMCAwIDEtMi43MDcgMCA1LjI5NiA1LjI5NiAwIDAgMS0xLjI2LS41MjFsLTEuMTYgMi4wMDhhNy41MjggNy41MjggMCAwIDAgMy43NzQgMS4wMWMuNjc3IDAgMS4zMy0uMDkxIDEuOTU0LS4yNTZhNy41NTMgNy41NTMgMCAwIDAgNC41ODQtMy41MTcgNy41NDQgNy41NDQgMCAwIDAgMS4wMTMtMy43NzEgNy41IDcuNSAwIDAgMC0uMjU5LTEuOTU1WlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIvPjxwYXRoIGQ9XFxcIk05MS44NTMgMTMuMDQ2YTEzLjQzNSAxMy40MzUgMCAwIDAtMi4xMi0yLjc2NSAxMy4zNDMgMTMuMzQzIDAgMCAwLTIuNzY2LTIuMTE4IDEzLjI4NyAxMy4yODcgMCAwIDAtNi42NzUtMS43OWMtMS4xOTcgMC0yLjM1Mi4xNTktMy40NTYuNDU0LTEuMTQxLjMwMy0yLjIyLjc1Ny0zLjIxOCAxLjMzNmExMy40MzYgMTMuNDM2IDAgMCAwLTIuNzY3IDIuMTE4IDEzLjMzNCAxMy4zMzQgMCAwIDAtMi4xMiAyLjc2NSAxMy4yNzIgMTMuMjcyIDAgMCAwLTEuNzkgNi42N2gyLjMyYzAtLjk4Ni4xMzEtMS45NDIuMzc1LTIuODUyYTExLjA4OCAxMS4wODggMCAwIDEgMi44NTUtNC45NCAxMS4wMDIgMTEuMDAyIDAgMCAxIDIuMjg0LTEuNzUgMTEuMDMgMTEuMDMgMCAwIDEgMi42Ni0xLjEwNCAxMS4wMiAxMS4wMiAwIDAgMSAyLjg1NC0uMzc0Yy45ODggMCAxLjk0NC4xMyAyLjg1NS4zNzRhMTEuMDk5IDExLjA5OSAwIDAgMSA0Ljk0MyAyLjg1MyAxMC45OSAxMC45OSAwIDAgMSAxLjc1MSAyLjI4M2MuNDc3LjgyNi44NTIgMS43MTYgMS4xMDQgMi42NThsMi4yNDItLjYwMmExMy4xOTQgMTMuMTk0IDAgMCAwLTEuMzMtMy4yMTZaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIi8+PHBhdGggZD1cXFwiTTk3LjY3NCAxNS4wNjNhMTcuNzkxIDE3Ljc5MSAwIDAgMC0xLjgtNC4zMzYgMTguMDQzIDE4LjA0MyAwIDAgMC02LjU4Ni02LjU4MyAxNy45MyAxNy45MyAwIDAgMC04Ljk5Ni0yLjQwOGMtMS42MTIgMC0zLjE3Mi4yMTMtNC42NTcuNjFhMTcuODE3IDE3LjgxNyAwIDAgMC00LjMzOSAxLjc5OCAxOC4wMzIgMTguMDMyIDAgMCAwLTYuNTg2IDYuNTgzbDIuMDEyIDEuMTYzYTE1LjY3NiAxNS42NzYgMCAwIDEgMi40ODktMy4yNDVjLjk2NS0uOTY0IDIuMDU3LTEuOCAzLjI0Ni0yLjQ4N2ExNS43MDYgMTUuNzA2IDAgMCAxIDMuNzc3LTEuNTY5IDE1LjY4IDE1LjY4IDAgMCAxIDguMTEgMGMxLjM0LjM1OCAyLjYwNi44OTEgMy43NzggMS41NjlhMTUuNjg1IDE1LjY4NSAwIDAgMSAzLjI0NiAyLjQ4NyAxNS42NzYgMTUuNjc2IDAgMCAxIDIuNDg5IDMuMjQ1IDE1LjY4NCAxNS42ODQgMCAwIDEgMS41NjkgMy43NzQgMTUuNjU0IDE1LjY1NCAwIDAgMSAwIDguMTA2bDIuMjQ1LjYwMWMuMzk3LTEuNDgzLjYxLTMuMDQzLjYxLTQuNjU0YTE3Ljg3NSAxNy44NzUgMCAwIDAtLjYwOC00LjY1NFpcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiLz48cGF0aCBkPVxcXCJNODAuMjkzIDI0Ljk0NGMyLjg4OCAwIDUuMjMtMi4zNCA1LjIzLTUuMjI3YTUuMjI5IDUuMjI5IDAgMCAwLTUuMjMtNS4yMjcgNS4yMjggNS4yMjggMCAwIDAtNS4yMyA1LjIyNyA1LjIyOCA1LjIyOCAwIDAgMCA1LjIzIDUuMjI3Wm0yMC42MTUgMTUuNDM2VjI5LjU0M2gyLjMwNFY0MC4zOGgtMi4zMDRabTYuNjE4LTMuNzg3djMuNzg3aC0yLjE5NnYtNy41NzZoMi4xNjV2LjUyNWEyLjUzOSAyLjUzOSAwIDAgMSAxLjc5My0uNzEyYzEuODU2IDAgMy4wNzkgMS4yMDYgMy4wNzkgMy4zNTV2NC40MDVoLTIuMTk2di00LjIzNWMwLS44MDItLjM3Mi0xLjQ4My0xLjI1NC0xLjQ4My0xLjAzMy4wMDMtMS4zOTEuNzc0LTEuMzkxIDEuOTM0Wm05LjY2NiAzLjgxN2MtMS42NTUgMC0yLjYxNC0uOTU4LTIuNjE0LTIuNjI4di0yLjk1M2gtMS4yNjh2LTIuMDI1aDEuMjY4di0xLjExMWwyLjE5Ni0xLjg1NXYyLjk3aDEuOTAydjIuMDI0aC0xLjkwMnYyLjY0M2MwIC43MjcuNDguODk3LjkyOC44OTcuNTExIDAgLjkyOC0uMjAyLjkyOC0uMjAydjEuOTk0cy0uNTg3LjI0Ny0xLjQzOC4yNDdabTEwLjE5My0zLjIzaC01LjM1MmMuMTI1Ljc3NS43NTcgMS4zNjIgMS43IDEuMzYyLjYzNSAwIDEuMDA0LS4yNjQgMS4yMzctLjY1aDIuMzY3Yy0uNTExIDEuNjQtMS42ODYgMi42Ni0zLjU3MyAyLjY2LTIuMTk3IDAtMy45NTktMS41My0zLjk1OS0zLjkxIDAtMi4yODkgMS42MDktNC4wMTkgMy44MzctNC4wMTkgMi40ODkgMCAzLjc1NyAxLjk2MyAzLjc1NyAzLjk4OCAwIC4xOTgtLjAxNC41Ny0uMDE0LjU3Wm0tMy43MTUtMi42MjhjLS44MzQgMC0xLjM5My41MS0xLjUzMiAxLjE2aDIuOTRjLS4wNDYtLjY2NC0uNjE5LTEuMTYtMS40MDgtMS4xNlptMTAuMjM5LTEuMzE1djIuMTY0cy0uNTczLS41ODctMS40MzktLjU4N2MtLjY2NCAwLTEuNDA3LjM1NC0xLjQwNyAxLjQ2OXY0LjA5NWgtMi4xOTd2LTcuNTc1aDIuMTY1di42MzVjLS4wMTQgMCAuNDM1LS43NDMgMS41MTYtLjc0My45MjggMCAxLjM2Mi41NDIgMS4zNjIuNTQyWm0zLjQwMyAzLjM1NnYzLjc4N2gtMi4xOTd2LTcuNTc2aDIuMTY1di41MjVhMi41NDMgMi41NDMgMCAwIDEgMS43OTQtLjcxMmMxLjg1NiAwIDMuMDc5IDEuMjA2IDMuMDc5IDMuMzU1djQuNDA1aC0yLjE5N3YtNC4yMzVjMC0uODAyLS4zNzEtMS40ODMtMS4yNTQtMS40ODMtMS4wMzYuMDAzLTEuMzkuNzc0LTEuMzkgMS45MzRabTExLjE2NiAzLjAxNWMtLjQ5Ni42MDQtMS4yMDYuOTQ1LTIuMTUxLjk0NS0xLjUxNSAwLTIuNzM4LS45NDUtMi43MzgtMi4zOTcgMC0xLjQzOCAxLjIyLTIuMTUgMi45MzctMi4yNCAxLjMxNC0uMDc3IDEuNzM0LS4yMTYgMS43MzQtLjY2NCAwLS40MzQtLjQwMy0uNzI2LTEuMTEzLS43MjYtLjg2NSAwLTEuMjM3LjQzNC0xLjI4NS44OTZoLTIuMTJjLjEwOC0xLjY1MyAxLjM0NS0yLjc5OSAzLjQyLTIuNzk5IDIuMDI2IDAgMy4zMjYgMS4wOTggMy4zMjYgMy4xNTR2NC42MDZoLTEuODExbC0uMTk5LS43NzVabS0yLjY5My0xLjU0NWMwIC40MzQuMzg2LjY5NCAxLjAwNS42OTQuODM0IDAgMS41MDEtLjQ2MiAxLjUwMS0xLjQwNnYtLjI3OHMtLjQwMy4xODQtMS4yMzcuMjMyYy0uOTE0LjA0Ni0xLjI2OS4zNC0xLjI2OS43NThabTkuNTU4IDIuMzQ3Yy0xLjY1NSAwLTIuNjE0LS45NTgtMi42MTQtMi42Mjh2LTIuOTUzaC0xLjI2OXYtMi4wMjVoMS4yNjl2LTEuMTExbDIuMTk2LTEuODU1djIuOTdoMS45MDJ2Mi4wMjRoLTEuOTAydjIuNjQzYzAgLjcyNy40OC44OTcuOTI4Ljg5Ny41MTEgMCAuOTI4LS4yMDIuOTI4LS4yMDJ2MS45OTRzLS41OS4yNDctMS40MzguMjQ3Wm0yLjk1MS05Ljc1M2MwLS43MTIuNTU2LTEuMjgyIDEuMjY4LTEuMjgyLjcxMyAwIDEuMjg2LjU3MyAxLjI4NiAxLjI4MiAwIC42OTUtLjU3MyAxLjI2OC0xLjI4NiAxLjI2OGExLjI2NCAxLjI2NCAwIDAgMS0xLjI2OC0xLjI2OFptLjE3IDkuNzIydi03LjU3NWgyLjE5N3Y3LjU3NWgtMi4xOTdabTMuNzg5LTMuNzg2YzAtMi4yNzIgMS43NDgtMy45NzQgNC4wMzgtMy45NzRzNC4wMzUgMS43MDIgNC4wMzUgMy45NzRjMCAyLjI3MS0xLjc0OCAzLjk1Ni00LjAzNSAzLjk1Ni0yLjI5IDAtNC4wMzgtMS42ODUtNC4wMzgtMy45NTZabTIuMjQ1IDBjMCAxLjExMS43NTcgMS45MTcgMS43OTMgMS45MTdzMS43OTQtLjgwMyAxLjc5NC0xLjkxN2MwLTEuMTEyLS43NTgtMS45MTgtMS43OTQtMS45MThzLTEuNzkzLjgwMy0xLjc5MyAxLjkxOFptOS41NCAwdjMuNzg3aC0yLjE5NnYtNy41NzZoMi4xNjV2LjUyNWEyLjU0IDIuNTQgMCAwIDEgMS43OTMtLjcxMmMxLjg1NiAwIDMuMDc5IDEuMjA2IDMuMDc5IDMuMzU1djQuNDA1aC0yLjE5NnYtNC4yMzVjMC0uODAyLS4zNzItMS40ODMtMS4yNTQtMS40ODMtMS4wMzYuMDAzLTEuMzkxLjc3NC0xLjM5MSAxLjkzNFptMTEuMTY3IDMuMDE1Yy0uNDk3LjYwNC0xLjIwNi45NDUtMi4xNTEuOTQ1LTEuNTE2IDAtMi43MzktLjk0NS0yLjczOS0yLjM5NyAwLTEuNDM4IDEuMjIxLTIuMTUgMi45MzctMi4yNCAxLjMxNC0uMDc3IDEuNzM0LS4yMTYgMS43MzQtLjY2NCAwLS40MzQtLjQwMy0uNzI2LTEuMTEyLS43MjYtLjg2NiAwLTEuMjM3LjQzNC0xLjI4Ni44OTZoLTIuMTE5Yy4xMDctMS42NTMgMS4zNDUtMi43OTkgMy40MTktMi43OTkgMi4wMjYgMCAzLjMyNiAxLjA5OCAzLjMyNiAzLjE1NHY0LjYwNmgtMS44MWwtLjE5OS0uNzc1Wm0tMi42OTMtMS41NDVjMCAuNDM0LjM4Ni42OTQgMS4wMDQuNjk0LjgzNSAwIDEuNTAyLS40NjIgMS41MDItMS40MDZ2LS4yNzhzLS40MDMuMTg0LTEuMjM4LjIzMmMtLjkxMS4wNDYtMS4yNjguMzQtMS4yNjguNzU4Wm02LjUyNCAyLjMxN1YyOS41NDNoMi4xOTZWNDAuMzhoLTIuMTk2Wm0xNC4wODktMTAuODM3IDQuMjQgMTAuODM3aC0yLjM4MWwtLjg2Ni0yLjEzM2gtNC4xOTFsLS44NTEgMi4xMzNoLTIuMzgxbDQuMjM5LTEwLjgzN2gyLjE5MVptLTEuMDk4IDMuMTIzLTEuMzQ1IDMuNTM5aDIuNjlsLTEuMzQ1LTMuNTRabTYuMzg1LTIuMDA5YzAtLjcxMi41NTYtMS4yODIgMS4yNjktMS4yODIuNzEyIDAgMS4yODUuNTczIDEuMjg1IDEuMjgyIDAgLjY5NS0uNTczIDEuMjY4LTEuMjg1IDEuMjY4YTEuMjY0IDEuMjY0IDAgMCAxLTEuMjY5LTEuMjY4Wm0uMTcgOS43MjJ2LTcuNTc1aDIuMTk3djcuNTc1aC0yLjE5N1ptMy43ODktMy43ODZjMC0yLjM5NiAxLjcxNi0zLjk3MyAzLjgxOS0zLjk3My44NjYgMCAxLjU5Mi4zMjMgMS45ODEuNjY0di0zLjc0MWgyLjE5NlY0MC4zOGgtMi4xNjV2LS41NDJjLS40LjM4Ni0xLjE2LjcxMi0yLjAwOS43MTItMi4xMDYgMC0zLjgyMi0xLjUxNS0zLjgyMi0zLjk1NlptNS44MzEgMGMwLTEuMTc0LS43NzItMS45OC0xLjc5My0xLjk4LTEuMDIyIDAtMS43OTQuODAzLTEuNzk0IDEuOTggMCAxLjE3NS43NzIgMS45OCAxLjc5NCAxLjk4IDEuMDIxIDAgMS43OTMtLjgwNSAxLjc5My0xLjk4Wk0xMDAuMTk2IDQ4LjA5aDguNTIydjIuMTE4aC0zLjExdjguNzE5aC0yLjMwNHYtOC43MTloLTMuMTExVjQ4LjA5aC4wMDNabTEzLjg4OCAzLjY5MnYyLjE2NHMtLjU3My0uNTg3LTEuNDM5LS41ODdjLS42NjQgMC0xLjQwNy4zNTQtMS40MDcgMS40Njl2NC4wOTVoLTIuMTk2di03LjU3NWgyLjE2NXYuNjM1Yy0uMDE0IDAgLjQzNC0uNzQzIDEuNTE1LS43NDMuOTMxLjAwMyAxLjM2Mi41NDIgMS4zNjIuNTQyWm01Ljg5MSA2LjM3MWMtLjQ5Ni42MDQtMS4yMDYuOTQ1LTIuMTUxLjk0NS0xLjUxNSAwLTIuNzM4LS45NDUtMi43MzgtMi4zOTcgMC0xLjQzOCAxLjIyLTIuMTUgMi45MzctMi4yNCAxLjMxNC0uMDc3IDEuNzM0LS4yMTYgMS43MzQtLjY2NCAwLS40MzQtLjQwMy0uNzI2LTEuMTEyLS43MjYtLjg2NiAwLTEuMjM4LjQzNC0xLjI4Ni44OTZoLTIuMTJjLjEwOC0xLjY1MyAxLjM0NS0yLjc5OSAzLjQyLTIuNzk5IDIuMDI2IDAgMy4zMjYgMS4wOTggMy4zMjYgMy4xNTR2NC42MDVoLTEuODExbC0uMTk5LS43NzRabS0yLjY5LTEuNTQ1YzAgLjQzNC4zODYuNjk1IDEuMDA1LjY5NS44MzQgMCAxLjUwMS0uNDYzIDEuNTAxLTEuNDA3di0uMjc4cy0uNDAzLjE4NC0xLjIzNy4yMzJjLS45MTQuMDQ2LTEuMjY5LjM0LTEuMjY5Ljc1OFptOC43MjEtMS40N3YzLjc4N2gtMi4xOTd2LTcuNTc2aDIuMTY1di41MjVhMi41NCAyLjU0IDAgMCAxIDEuNzk0LS43MTJjMS44NTYgMCAzLjA3OSAxLjIwNSAzLjA3OSAzLjM1NXY0LjQwNWgtMi4xOTd2LTQuMjM1YzAtLjgwMi0uMzcxLTEuNDgzLTEuMjU0LTEuNDgzLTEuMDMzLjAwMy0xLjM5Ljc3NC0xLjM5IDEuOTM0Wm0xMC43OTUgMS42MDdjMC0uMjMyLS4xMzktLjQxNi0uNzQ0LS41NDFsLTEuMTQzLS4yMzNjLTEuNzE3LS4zNC0yLjQ0NC0xLjE2LTIuNDQ0LTIuMjg4IDAtMS4zMyAxLjAwNS0yLjUxOSAzLjA5NC0yLjUxOSAyLjEwMiAwIDMuMDQ3IDEuMTc0IDMuMjAxIDIuNDloLTIuMDg5Yy0uMTI1LS40MTctLjQ4LS42NjQtMS4xMjktLjY2NC0uNjE5IDAtLjk2LjIxNi0uOTYuNTI1IDAgLjIzMy4xODUuMzcyLjc1OC40OGwxLjE0NC4yMzJjMS42MjMuMzIzIDIuNDI5IDEuMDgzIDIuNDI5IDIuMzggMCAxLjQ2OS0xLjA2NyAyLjQ5LTMuMTg3IDIuNDktMi4xNjUgMC0zLjMyNi0xLjAyMS0zLjU0Mi0yLjU5OGgyLjIxNGMuMTI1LjUyNC41MTEuODAyIDEuMzI4LjgwMi43NDYgMCAxLjA3LS4yMTUgMS4wNy0uNTU2Wm0xMS41NTItMS42MDhjMCAyLjM5Ny0xLjcxNyAzLjk1Ny0zLjgxOSAzLjk1Ny0uODY2IDAtMS41OTItLjMxLTEuOTgxLS42NXYzLjQ3N2gtMi4xOTdWNTEuMzQ4aDIuMTY2di41NDJjLjQwMy0uMzg2IDEuMTYtLjcyNiAyLjAxMi0uNzI2IDIuMTAyIDAgMy44MTkgMS41MTcgMy44MTkgMy45NzNabS01LjgzMSAwYzAgMS4xNzUuNzc0IDEuOTggMS43OTMgMS45OCAxLjAyMiAwIDEuNzk0LS44MDMgMS43OTQtMS45OCAwLTEuMTc0LS43NzItMS45OC0xLjc5NC0xLjk4LTEuMDE5LjAwNC0xLjc5My44MDYtMS43OTMgMS45OFptMTEuODc5IDMuMDE2Yy0uNDk3LjYwNC0xLjIwNi45NDUtMi4xNTEuOTQ1LTEuNTE2IDAtMi43MzktLjk0NS0yLjczOS0yLjM5NyAwLTEuNDM4IDEuMjItMi4xNSAyLjkzNy0yLjI0IDEuMzE0LS4wNzcgMS43MzQtLjIxNiAxLjczNC0uNjY0IDAtLjQzNC0uNDAzLS43MjYtMS4xMTItLjcyNi0uODY2IDAtMS4yMzcuNDM0LTEuMjg2Ljg5NmgtMi4xMmMuMTA4LTEuNjUzIDEuMzQ2LTIuNzk5IDMuNDItMi43OTkgMi4wMjYgMCAzLjMyNiAxLjA5OCAzLjMyNiAzLjE1NHY0LjYwNWgtMS44MTFsLS4xOTgtLjc3NFptLTIuNjkzLTEuNTQ1YzAgLjQzNC4zODYuNjk1IDEuMDA0LjY5NS44MzUgMCAxLjUwMS0uNDYzIDEuNTAxLTEuNDA3di0uMjc4cy0uNDAzLjE4NC0xLjIzNy4yMzJjLS45MTEuMDQ2LTEuMjY4LjM0LTEuMjY4Ljc1OFptMTEuNTY2LTQuODI2djIuMTY0cy0uNTczLS41ODctMS40MzktLjU4N2MtLjY2NCAwLTEuNDA3LjM1NC0xLjQwNyAxLjQ2OXY0LjA5NWgtMi4xOTd2LTcuNTc1aDIuMTY2di42MzVjLS4wMTUgMCAuNDM0LS43NDMgMS41MTUtLjc0My45MjguMDAzIDEuMzYyLjU0MiAxLjM2Mi41NDJabTguNDI4IDMuOTQ0aC01LjM1MmMuMTI1Ljc3NC43NTggMS4zNiAxLjcwMyAxLjM2LjYzNiAwIDEuMDA1LS4yNjMgMS4yMzctLjY0OWgyLjM2N2MtLjUxMSAxLjY0LTEuNjg2IDIuNjYtMy41NzMgMi42Ni0yLjE5NiAwLTMuOTU5LTEuNTMtMy45NTktMy45MSAwLTIuMjg5IDEuNjEtNC4wMTkgMy44MzctNC4wMTkgMi40ODkgMCAzLjc1NyAxLjk2MyAzLjc1NyAzLjk4OCAwIC4yLS4wMTcuNTctLjAxNy41N1ptLTMuNzExLTIuNjI3Yy0uODM1IDAtMS4zOTQuNTEtMS41MzMgMS4xNmgyLjk0Yy0uMDQ1LS42NjYtLjYxOS0xLjE2LTEuNDA3LTEuMTZabTcuMzkyIDIuMDM5djMuNzg3aC0yLjE5NnYtNy41NzZoMi4xNjV2LjUyNWEyLjUzOCAyLjUzOCAwIDAgMSAxLjc5My0uNzEyYzEuODU2IDAgMy4wNzkgMS4yMDUgMy4wNzkgMy4zNTV2NC40MDVoLTIuMTk2di00LjIzNWMwLS44MDItLjM3Mi0xLjQ4My0xLjI1NC0xLjQ4My0xLjAzNi4wMDMtMS4zOTEuNzc0LTEuMzkxIDEuOTM0Wm0xMS41NjcuODM3aDIuNDEyYy0uMzU3IDEuODQtMS43NDggMy4xMjMtMy43OTEgMy4xMjMtMi4yOSAwLTMuOTktMS42ODUtMy45OS0zLjk1NyAwLTIuMjcxIDEuNzAzLTMuOTczIDMuOTktMy45NzMgMS45OTUgMCAzLjM4OCAxLjIzNiAzLjY2NiAzLjAyOWgtMi40MTVjLS4xNy0uNTczLS42NjQtLjk1OS0xLjMyOC0uOTU5LS45MjggMC0xLjY3MS43ODktMS42NzEgMS45IDAgMS4xMTIuNzQzIDEuOSAxLjcwMyAxLjkuNzEyLjAwNCAxLjI0LS40MTYgMS40MjQtMS4wNjNabTUuMTAyIDYuMDI3Yy0uOTkgMC0xLjQ4NC0uMjY0LTEuNDg0LS4yNjR2LTIuMDFzLjQ0OC4yMzIuOTI4LjIzMmMuNDk2IDAgMS4xNDMtLjE4NCAxLjI5OS0xLjAzNWwtMi45NTQtNy41NzVoMi40NDRsMS43MTcgNC42OTkgMS43NDgtNC43aDIuMzQ5bC0zLjA3OSA3LjdjLS44MDMgMi4wMjYtMS40NTMgMi45NTMtMi45NjggMi45NTNabTExLjU5OC0zLjA3NVY0OC4wOWgyLjMwNXYxMC44MzdoLTIuMzA1Wm02LjYxOC0zLjc4OXYzLjc4N2gtMi4xOTd2LTcuNTc2aDIuMTY2di41MjVhMi41MzggMi41MzggMCAwIDEgMS43OTMtLjcxMmMxLjg1NiAwIDMuMDc5IDEuMjA1IDMuMDc5IDMuMzU1djQuNDA1aC0yLjE5NnYtNC4yMzVjMC0uODAyLS4zNzItMS40ODMtMS4yNTUtMS40ODMtMS4wMzMuMDAzLTEuMzkuNzc0LTEuMzkgMS45MzRabTYuNTQxLTUuOTM2YzAtLjcxMi41NTYtMS4yODIgMS4yNjgtMS4yODJzMS4yODYuNTczIDEuMjg2IDEuMjgyYTEuMjggMS4yOCAwIDAgMS0xLjI4NiAxLjI2OCAxLjI2NCAxLjI2NCAwIDAgMS0xLjI2OC0xLjI2OFptLjE3IDkuNzI1di03LjU3NWgyLjE5NnY3LjU3NWgtMi4xOTZabTcuMjU0LjAyOWMtMS42NTUgMC0yLjYxNC0uOTU5LTIuNjE0LTIuNjN2LTIuOTUyaC0xLjI2OFY1MS4zNWgxLjI2OHYtMS4xMTFsMi4xOTYtMS44NTV2Mi45N2gxLjkwMnYyLjAyNGgtMS45MDJ2Mi42NDNjMCAuNzI2LjQ4Ljg5Ny45MjguODk3LjUxMSAwIC45MjgtLjIwMi45MjgtLjIwMnYxLjk5NHMtLjU4Ny4yNDctMS40MzguMjQ3Wm0yLjk1NC05Ljc1NGMwLS43MTIuNTU2LTEuMjgyIDEuMjY4LTEuMjgyczEuMjg2LjU3MyAxLjI4NiAxLjI4MmExLjI4IDEuMjggMCAwIDEtMS4yODYgMS4yNjggMS4yNjQgMS4yNjQgMCAwIDEtMS4yNjgtMS4yNjhabS4xNyA5LjcyNXYtNy41NzVoMi4xOTZ2Ny41NzVoLTIuMTk2Wm04Ljc1NC0uNzc0Yy0uNDk2LjYwNC0xLjIwNi45NDUtMi4xNTEuOTQ1LTEuNTE1IDAtMi43MzgtLjk0NS0yLjczOC0yLjM5NyAwLTEuNDM4IDEuMjItMi4xNSAyLjkzNy0yLjI0IDEuMzE0LS4wNzcgMS43MzQtLjIxNiAxLjczNC0uNjY0IDAtLjQzNC0uNDAzLS43MjYtMS4xMTMtLjcyNi0uODY1IDAtMS4yMzcuNDM0LTEuMjg1Ljg5NmgtMi4xMmMuMTA4LTEuNjUzIDEuMzQ1LTIuNzk5IDMuNDE5LTIuNzk5IDIuMDI3IDAgMy4zMjYgMS4wOTggMy4zMjYgMy4xNTR2NC42MDVoLTEuODFsLS4xOTktLjc3NFptLTIuNjkzLTEuNTQ1YzAgLjQzNC4zODYuNjk1IDEuMDA1LjY5NS44MzQgMCAxLjUwMS0uNDYzIDEuNTAxLTEuNDA3di0uMjc4cy0uNDAzLjE4NC0xLjIzNy4yMzJjLS45MTQuMDQ2LTEuMjY5LjM0LTEuMjY5Ljc1OFptOS41NTggMi4zNDhjLTEuNjU1IDAtMi42MTQtLjk1OS0yLjYxNC0yLjYzdi0yLjk1MmgtMS4yNjhWNTEuMzVoMS4yNjh2LTEuMTExbDIuMTk3LTEuODU1djIuOTdoMS45MDF2Mi4wMjRoLTEuOTAxdjIuNjQzYzAgLjcyNi40NzkuODk3LjkyOC44OTcuNTEgMCAuOTI4LS4yMDIuOTI4LS4yMDJ2MS45OTRzLS41ODguMjQ3LTEuNDM5LjI0N1ptMi45NTEtOS43NTRjMC0uNzEyLjU1Ni0xLjI4MiAxLjI2OS0xLjI4Mi43MTIgMCAxLjI4NS41NzMgMS4yODUgMS4yODIgMCAuNjk1LS41NzMgMS4yNjgtMS4yODUgMS4yNjhhMS4yNjQgMS4yNjQgMCAwIDEtMS4yNjktMS4yNjhabS4xNyA5LjcyNXYtNy41NzVoMi4xOTd2Ny41NzVoLTIuMTk3Wm0xMC45ODMtNy41NzUtMi42OTEgNy41NzVoLTIuMjU4bC0yLjY5MS03LjU3NWgyLjMzNmwxLjQ4NCA0LjY4NSAxLjQ4NC00LjY4NWgyLjMzNlptNy45OCA0LjM3NGgtNS4zNTJjLjEyNS43NzQuNzU3IDEuMzYgMS43MDIgMS4zNi42MzYgMCAxLjAwNS0uMjYzIDEuMjM4LS42NDloMi4zNjZjLS41MSAxLjY0LTEuNjg1IDIuNjYtMy41NzIgMi42Ni0yLjE5NyAwLTMuOTU5LTEuNTMtMy45NTktMy45MSAwLTIuMjg5IDEuNjA5LTQuMDE5IDMuODM3LTQuMDE5IDIuNDg4IDAgMy43NiAxLjk2MyAzLjc2IDMuOTg4LS4wMDYuMi0uMDIuNTctLjAyLjU3Wm0tMy43MTItMi42MjdjLS44MzQgMC0xLjM5My41MS0xLjUzMiAxLjE2aDIuOTRjLS4wNDktLjY2Ni0uNjE5LTEuMTYtMS40MDgtMS4xNlpcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDEyMiAzNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB4bWxuczp4bGluaz1cXFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1xcXCI+PHBhdGggZD1cXFwiTTQ0LjAxOSAyN1YxNi45NzloMy4yNDdjMS4yMyAwIDIuMDMyLjA1IDIuNDA2LjE1LjU3NC4xNSAxLjA1NS40NzggMS40NDIuOTg0LjM4OC41MDIuNTgxIDEuMTUxLjU4MSAxLjk0OCAwIC42MTYtLjExMSAxLjEzMy0uMzM1IDEuNTUyLS4yMjMuNDItLjUwOC43NS0uODU0Ljk5Mi0uMzQyLjIzNi0uNjkuMzk0LTEuMDQ2LjQ3MS0uNDgzLjA5Ni0xLjE4My4xNDQtMi4wOTkuMTQ0aC0xLjMxOVYyN2gtMi4wMjNabTIuMDIzLTguMzI2djIuODQ0aDEuMTA3Yy43OTggMCAxLjMzMS0uMDUzIDEuNi0uMTU4YTEuMzMzIDEuMzMzIDAgMCAwIC44NjEtMS4yNzFjMC0uMzY1LS4xMDctLjY2NS0uMzItLjkwMmExLjM5OSAxLjM5OSAwIDAgMC0uODE0LS40NDVjLS4yNDItLjA0NS0uNzI3LS4wNjgtMS40NTYtLjA2OGgtLjk3OFptNy4wMi0xLjY5NWgyLjAyNHY1LjQyN2MwIC44NjIuMDI1IDEuNDIuMDc1IDEuNjc1LjA4Ny40MS4yOTIuNzQuNjE2Ljk5MS4zMjguMjQ2Ljc3NC4zNyAxLjM0LjM3LjU3NCAwIDEuMDA3LS4xMTcgMS4yOTgtLjM1LjI5Mi0uMjM2LjQ2Ny0uNTI2LjUyNy0uODY3LjA1OS0uMzQyLjA4OS0uOTEuMDg5LTEuNzAzVjE2Ljk4aDIuMDIzdjUuMjYzYzAgMS4yMDMtLjA1NSAyLjA1My0uMTY0IDIuNTUtLjExLjQ5Ny0uMzEyLjkxNi0uNjA4IDEuMjU4LS4yOTIuMzQyLS42ODQuNjE1LTEuMTc2LjgyLS40OTIuMi0xLjEzNS4zLTEuOTI4LjMtLjk1NyAwLTEuNjg0LS4xMDktMi4xOC0uMzI3LS40OTMtLjIyNC0uODgzLS41MS0xLjE3LS44NjJhMi43ODggMi43ODggMCAwIDEtLjU2Ny0xLjExNGMtLjEzMi0uNTc0LS4xOTgtMS40MjItLjE5OC0yLjU0M3YtNS4zNDZabTkuODU4IDBoNC4wMDZjLjc5MyAwIDEuMzgzLjAzNCAxLjc3LjEwMi4zOTMuMDY0Ljc0MS4yIDEuMDQ3LjQxLjMxLjIxLjU2Ny40OS43NzIuODQxLjIwNS4zNDYuMzA4LjczNi4zMDggMS4xNjkgMCAuNDctLjEyOC45LS4zODMgMS4yOTJhMi4zMyAyLjMzIDAgMCAxLTEuMDI1Ljg4MmMuNjEuMTc3IDEuMDguNDggMS40MDguOTA5LjMyOC40MjguNDkyLjkzMi40OTIgMS41MSAwIC40NTYtLjEwNy45LS4zMjEgMS4zMzQtLjIxLjQyOC0uNS43NzItLjg2OCAxLjAzMi0uMzY1LjI1NS0uODE2LjQxMi0xLjM1NC40NzItLjMzNy4wMzYtMS4xNS4wNTktMi40NC4wNjhINjIuOTJWMTYuOTc5Wm0yLjAyNCAxLjY2OHYyLjMxN2gxLjMyNmMuNzg4IDAgMS4yNzgtLjAxMSAxLjQ3LS4wMzQuMzQ2LS4wNDEuNjE3LS4xNi44MTMtLjM1Ni4yLS4yLjMwMS0uNDYyLjMwMS0uNzg2IDAtLjMxLS4wODctLjU2LS4yNi0uNzUyLS4xNjgtLjE5Ni0uNDIxLS4zMTQtLjc1OC0uMzU1LS4yMDEtLjAyMy0uNzc4LS4wMzUtMS43My0uMDM1aC0xLjE2MlptMCAzLjk4NXYyLjY4aDEuODczYy43MyAwIDEuMTkyLS4wMjEgMS4zODgtLjA2Mi4zLS4wNTUuNTQ0LS4xODcuNzMxLS4zOTYuMTkxLS4yMTUuMjg3LS41LjI4Ny0uODU1IDAtLjMtLjA3My0uNTU2LS4yMTktLjc2NmExLjIzNyAxLjIzNyAwIDAgMC0uNjM1LS40NThjLS4yNzQtLjA5NS0uODctLjE0My0xLjc5MS0uMTQzaC0xLjYzNFpNNzIuODA1IDI3di05Ljk0aDIuMDI0djguMjUyaDUuMDMxVjI3aC03LjA1NVptOC4xNjMgMFYxNi45NzloMi4wMjNWMjdoLTIuMDIzWm0zLjE2NS0zLjI2IDEuOTY5LS4xOTJjLjExOC42Ni4zNTggMS4xNDYuNzE4IDEuNDU2LjM2NC4zMS44NTQuNDY1IDEuNDcuNDY1LjY1MSAwIDEuMTQxLS4xMzcgMS40Ny0uNDEuMzMyLS4yNzguNDk4LS42MDIuNDk4LS45NzFhLjg5Ljg5IDAgMCAwLS4yMTItLjYwMmMtLjEzNi0uMTY4LS4zNzgtLjMxNC0uNzI0LS40MzctLjIzNy0uMDgyLS43NzctLjIyOC0xLjYyLS40MzgtMS4wODUtLjI2OS0xLjg0Ni0uNTk5LTIuMjg0LS45OS0uNjE1LS41NTItLjkyMi0xLjIyNC0uOTIyLTIuMDE3IDAtLjUxLjE0My0uOTg3LjQzLTEuNDMuMjkyLS40NDYuNzA5LS43ODUgMS4yNTEtMS4wMTguNTQ3LS4yMzIgMS4yMDYtLjM0OCAxLjk3Ni0uMzQ4IDEuMjU3IDAgMi4yMDMuMjc1IDIuODM3LjgyNy42MzguNTUxLjk3MyAxLjI4NyAxLjAwNSAyLjIwOGwtMi4wMjQuMDg5Yy0uMDg3LS41MTUtLjI3My0uODg0LS41Ni0xLjEwOC0uMjgzLS4yMjgtLjcxLS4zNDItMS4yNzktLjM0Mi0uNTg4IDAtMS4wNDguMTIxLTEuMzguMzYzYS43My43MyAwIDAgMC0uMzIyLjYyMmMwIC4yMzcuMS40NC4zLjYwOC4yNTYuMjE0Ljg3Ni40MzggMS44Ni42Ny45ODUuMjMyIDEuNzEyLjQ3NCAyLjE4LjcyNS40NzUuMjQ2Ljg0NC41ODUgMS4xMDggMS4wMTguMjcuNDI5LjQwNC45Ni40MDQgMS41OTMgMCAuNTc0LS4xNiAxLjExMi0uNDc5IDEuNjEzLS4zMTkuNTAyLS43Ny44NzUtMS4zNTMgMS4xMjEtLjU4NC4yNDItMS4zMS4zNjMtMi4xODEuMzYzLTEuMjY3IDAtMi4yNC0uMjkyLTIuOTE5LS44NzUtLjY3OS0uNTg4LTEuMDg1LTEuNDQzLTEuMjE3LTIuNTY0Wk05My43MTEgMjdWMTYuOTc5aDIuMDIzdjMuOTQ0SDk5Ljd2LTMuOTQ0aDIuMDIzVjI3aC0yLjAyM3YtNC4zODJoLTMuOTY1VjI3aC0yLjAyM1ptOS44MyAwVjE2Ljk3OWg3LjQzMXYxLjY5NWgtNS40MDh2Mi4yMjFoNS4wMzJ2MS42ODloLTUuMDMydjIuNzI3aDUuNTk5VjI3aC03LjYyMlptOS4wNjUgMFYxNi45NzloNC4yNThjMS4wNzEgMCAxLjg0OC4wOSAyLjMzMi4yNzNhMi4yOCAyLjI4IDAgMCAxIDEuMTY4Ljk1N2MuMjkyLjQ2LjQzOC45ODcuNDM4IDEuNTggMCAuNzUxLS4yMjEgMS4zNzMtLjY2MyAxLjg2NS0uNDQyLjQ4OC0xLjEwMy43OTYtMS45ODMuOTIzLjQzOC4yNTUuNzk4LjUzNiAxLjA4MS44NDEuMjg3LjMwNS42NzIuODQ4IDEuMTU1IDEuNjI3TDEyMS42MTUgMjdoLTIuNDE5bC0xLjQ2My0yLjE4Yy0uNTItLjc4LS44NzUtMS4yNy0xLjA2Ny0xLjQ3YTEuNTAzIDEuNTAzIDAgMCAwLS42MDgtLjQxN2MtLjIxNC0uMDc4LS41NTQtLjExNy0xLjAxOS0uMTE3aC0uNDFWMjdoLTIuMDIzWm0yLjAyMy01Ljc4M2gxLjQ5N2MuOTcxIDAgMS41NzctLjA0MSAxLjgxOS0uMTIzLjI0MS0uMDgyLjQzLS4yMjQuNTY3LS40MjQuMTM3LS4yLjIwNS0uNDUxLjIwNS0uNzUyIDAtLjMzNy0uMDkxLS42MDgtLjI3My0uODEzLS4xNzgtLjIxLS40MzEtLjM0Mi0uNzU5LS4zOTctLjE2NC0uMDIzLS42NTYtLjAzNC0xLjQ3Ny0uMDM0aC0xLjU3OXYyLjU0M1pcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48cGF0aCBmaWxsPVxcXCJ1cmwoI2xvZ29fc3ZnX19hKVxcXCIgZD1cXFwiTTAgMGg0MXYzNkgwelxcXCIvPjxkZWZzPjxwYXR0ZXJuIGlkPVxcXCJsb2dvX3N2Z19fYVxcXCIgcGF0dGVybkNvbnRlbnRVbml0cz1cXFwib2JqZWN0Qm91bmRpbmdCb3hcXFwiIHdpZHRoPVxcXCIxXFxcIiBoZWlnaHQ9XFxcIjFcXFwiPjx1c2UgeGxpbms6aHJlZj1cXFwiI2xvZ29fc3ZnX19iXFxcIiB0cmFuc2Zvcm09XFxcIm1hdHJpeCguMDAwOTMgMCAwIC4wMDEwNiAtLjEyMiAtLjAwNylcXFwiLz48L3BhdHRlcm4+PGltYWdlIGlkPVxcXCJsb2dvX3N2Z19fYlxcXCIgd2lkdGg9XFxcIjIyMzVcXFwiIGhlaWdodD1cXFwiOTU5XFxcIiB4bGluazpocmVmPVxcXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQ0xzQUFBTy9DQVlBQUFBdEtsYWtBQUFBQ1hCSVdYTUFBQ0UzQUFBaE53RXpXSjk2QUFBZ0FFbEVRVlI0MnV6ZFBZaGQ2WjBtOE9jZE9qRHNEV3BoWUNvd2JEV3VvSU9CdmczT1hHQXBzcExGM2JTU2lWUmljYVRBclVoUjAyb2NLZXFlUUpHRExrV1RxTEhNSnRXUk5TRERCQXR6R3lhWW9JeHJZWUphR0pnYXFJVUpCdDROM2x1cnN0d2YrcmozUGVmYysvdEJjVXRxKzU2djkxU3BkQjQ5L3dRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURvb0RnRkFBQUFNRTYxMXAwazh6LzdZYjZVcDg0T0FBQUFBTnRLMkFVQUFBQldyTmE2bDJSditjdDVrcDNsNS8vdHl1OW4rZnZ6TmV6QzB4ZCt2VWp5Nzh2UFQ1Y2ZTYklvcFp5N1lnQUFBQUJNaWJBTEFBQUF2S0phNjJXQTVkcnl0MzY2ZkwwYWJKbVMwK1hIZVpLdmw2K0xKS2VsbEZOWEhBQUFBSUF4RVhZQkFBQ0FiM0JsaE5BOHJaRmxudGJLc3JlRnAyT1JGb0Q1K3l5RE1VWXBBUUFBQURBVVlSY0FBQUMyM3JLcFpTOHQwUExUVExlaHBiZlR0Q0RNMTJtamt6VEJBQUFBQUxCMndpNEFBQUJzbFdWank3VUl0cXpMZVZydzVUSUFzeWlsbkRzdEFBQUFBS3lLc0FzQUFBQWJiZG5hY2hsc3VaYnRIRU0wdEVXdUJHQzB2d0FBQUFEd0pvUmRBQUFBMkNpMTFyMjBVTXZQbDY5YVc4Ym5OQzM4OHR1MDhJdm1Gd0FBQUFCZW1yQUxBQUFBazNabExORmx1R1hQV1ptY3krYVgzNVpTbmpvZEFBQUFBSHdYWVJjQUFBQW1aOW5lOG42ZUIxellIT2Q1M3ZyeVJPc0xBQUFBQUM4U2RnRUFBR0FTYXEzekpMZlNRaTU3enNqV1dDUjVsQlo4T1hVNkFBQUFBQkIyQVFBQVlMUUVYSGlCNEFzQUFBQUF3aTRBQUFDTWk0QUxMMG53QlFBQUFHQkxDYnNBQUFBd3VGcnJYbHE0NVpjUmNPSFZQYzN6NE11NTB3RUFBQUN3MllSZEFBQUFHRXl0OVRESno5T0NMckFLUjBrZWxWS2VPaFVBQUFBQW0wbllCUUFBZ0s2V0xTNi9USEtZWk1jWllVMU8wOXBlam93NUFnQUFBTmdzd2k0QUFBQjBzV3h4dVpYa21yTkJaMGZSOWdJQUFBQ3dNWVJkQUFBQVdKdGxpOHRoV3BPTEZoZUdkcHJrMHlSUFNpbm5UZ2NBQUFEQU5BbTdBQUFBc0hLMTFtdHBMUzZIemdZamRKN1c5dkszUmh3QkFBQUFUSSt3Q3dBQUFDdFRhMzAvcmNYbG1yUHhVaGJmOEhzblNmN3ZLN3pIajVMTVh2aTlXWko5cC9lbEhNV0lJd0FBQUlCSkVYWUJBQURnamRWYUQ1TjhrbVJ2eTAvRlJWcFlKVW0rWHI2ZUxUK3kvRzhYQSt6WDd2SWphU0dZV1pML2t1ZUJtTGxWbktkSlBoVjZBUUFBQUJnL1lSY0FBQUJlMjVhR1hDN0RLNWNOTEl2OGFjaGx5dVo1M2dyelYya0JtY3R3ekxaNG10YjBjdVFPQndBQUFCZ25ZUmNBQUFCZVNhMTFKOGxIYWVPS2RqYjRVQzhETENkSi9wQVdjRmxzNldXL0RNRHNwNDFOMnMzbXQ4R2Nwalc5SExuckFRQUFBTVpGMkFVQUFJQ1hWbXU5bjgwTnVTelNSZzlkQmx6T1hQSHZkVFVBTTgvenNVaWI1RFJDTHdBQUFBQ2pJdXdDQUFEQTk5ckFjVVdYTFMxL1dMNmV1TW9yTTE5K1hBWmdObVVFMGlMSjNWTEtVNWNZQUFBQVlGakNMZ0FBQUh5ckRRcTVYQ1I1bHRiY3NvaldscDcyMDBJdjcyWXp3aTlQMDVwZW5ycTBBQUFBQU1NUWRnRUFBT0RQMUZxdnBZVmNyazM0TUJaSmZoL05MV056MmZ6eWsweDc3TkdUdEthWFU1Y1VBQUFBb0M5aEZ3QUFBUDYvV3V0ZWtpOHl6WkRMNVdpaXk0RExoU3M2ZXJNa0IybkJsNm0ydm55ZTF2Unk3bklDQUFBQTlDSHNBZ0FBUUdxdE8ybE5MaDlOYk5mUDBzWVRmUlh0TFp2Z012aHlrR2tGWDg3VEFpK2Z1NFFBQUFBQTZ5ZnNBZ0FBc09WcXJSK2xCVjEySnJMTEFpN2JZWXJCbDlNa3Qwc3BUMTArQUFBQWdQVVJkZ0VBQU5oU3RkWnJTVDVMR3g4emRoZEpqaVBnc3EybUZueDVrdVJ1S2VYVXBRTUFBQUJZUFdFWEFBQ0FMYk1jV2ZSWmtzTUo3TzV4a3Qrbk5ibkFMQzN3OHJPTVA2UjFudVJ2U3luM1hUWUFBQUNBMVJKMkFRQUEyQ0sxMXNPMG9NdVlSeGFkcERXNEhLYzF1c0EzMlUxeUl5MzRzanZpL1Z5a3RidzhkY2tBQUFBQVZrUFlCUUFBWUF2VVd2ZVNmSkhrMm9oMzh6akpsekdtaUZkMzJmWnlNT0o5L0R6SnA2V1VjNWNMQUFBQTRNMEl1d0FBQUd5NFd1dEhTVDdKT050Y3p0SUNMbHBjV0lYZEpCK21OYjdNUnJoLzUwbHVsMUtldUZRQUFBQUFyMC9ZQlFBQVlFUFZXdWRwYlM3ekVlN2VJaTNrOHN5VllnMW1hUzB2dHpMT0VVZFAwa0l2V2w0QUFBQUFYb093Q3dBQXdBYXF0ZDVQYTNNWkc2T0s2TzBncmUxbGJLRXZMUzhBQUFBQXIwbllCUUFBWUlQVVd2ZlMybHl1ald6WGpwTThTaHRiQkVPWXA0VmVEa2EyWDFwZUFBQUFBRjZSc0FzQUFNQ0dxTFYrbE5ibXNqT1NYYnBJYTNGNXZQd2N4bUEzYmJ6UmpSSHQwMmxhNE9XcHl3TUFBQUR3L1lSZEFBQUFKcTdXdXBQVzV2TCtTSFpKeUlVcEdHUG81Zk5TeWwyWEJnQUFBT0M3Q2JzQUFBQk1XSzMxV3BMZlpCeHRMa0l1VE5IWVFpK0xKQitVVWs1ZEdnQUFBSUJ2SnV3Q0FBQXdVYlhXKzJsamk4YmdPTW5EQ0xrd1hidEo3aVdaajJCZnpwUGNMYVVjdVN3QUFBQUFmMDdZQlFBQVlHSnFyWHRwYlM1amVDaC9uT1JSa2pOWGhnMHhUMnQ2R2NQOWRaUVdlamwzV1FBQUFBQ2VFM1lCQUFDWWtCR05MVnFraFZ3V3JzcmF6SkxzZjg4MVlIME9rdHhKYTN3WitsNjdYVXB4dlFFQUFBQ1doRjBBQUFBbVlpUmppODdTeGhVOWMwVmV5dFhBeXRXbWtIZXZmTDZiMVFZcVR2S240NlMrWHI1ZUxQOWJJaWp6S2c2VGZMaThsa001VHd1OFBIRTVBQUFBQUlSZEFBQUFScS9XdXBQVzVuSnR3TjI0U1BKbDJsZ1YvdFIrV2hCaW51Uy9MSCs5NmdETHVsd0dZNzdPOHpETVdZeWxldEVzcmVYbHhzRDc4WGtwNWE3TEFRQUFBR3c3WVJjQUFJQVJxN1hPMDRJdWV3UHV4ck8wTnBkdEQwQmNCbGptU1g2MC9IeC9nNDkzc2J6bWYwZ0x3YnpZR0xPTjVtbWhseUd2KzlNa0g1UlN6bjJGQkFBQUFMYVZzQXNBQU1CSTFWb1BrM3lXWkdlZ1hUaEw4aURiT2ZMbWN2elFaYkJsbm1ISDJJekZXVnJvNWV2bDY3YU9RN3FaNU5hQWErSTBMZkJpSEJVQUFBQ3dsWVJkQUFBQVJxaldlai9KSndQdXdxTnMxOGlpeXpGRTd5NWY5NjNDbDdaSUM3OHNzbDN0TDdNazk1SWNETFQ5OHlSM1N5bEhsaUFBQUFDd2JZUmRBQUFBUnFUV3VwUFc1bkk0MEM0czBrWVduV3o0cVJadVdlOGF1Z3kvYkVQenlEd3Q5TEk3MFBZL0xhWGN0K3dBQUFDQWJTTHNBZ0FBTUJMTG9NdnYwaDZlOTNhUjF1YnllSU5QOFc1YUM4ZFBCanJIMitnaUxmRHkreVRQc3JtdEw3TzBzVVkzQjlyK1VTbmx0dVVHQUFBQWJBdGhGd0FBZ0JHb3RjN1RnaTQ3QTJ4K2tlUkJrck1OUExYN1NYNldGbkxadGRJR2Q1TGtxN1RneXlhdXR5RmJYaFpKcnBkU3ppMHpBQUFBWU5NSnV3QUFBQXlzMW5vdHlXL1NQK2l5cVcwdUFpN1RzS25CbHlGYlhoWkpicGRTRnBZWEFBQUFzTW1FWFFBQUFBWlVhejFNOHNVQW16NUo4bkUySjJTd20rVERDTGhNMVdYdzVUaWJNK3BvbnVSWGFlR1huczdUR2w0RVhnQUFBSUNOSmV3Q0FBQXdrRnJyUjBrK0cyRFRqNUljYmNBcG5LV0ZXejVNYTNOaE16eEw4dnUwNE1zbXJORjd5M1hhMDNsYXc4c1R5d2tBQUFEWVJNSXVBQUFBQTZpMWZwSGtzUE5tejVJOFNCdDFNbVh6dERGRk42eWtqWGFSRm5qNU10TnZJTHFSNUU3NnQ3emNMcVVjV1VvQUFBREFwaEYyQVFBQTZHeWdvTXV6dEtETFZFZkVYTGE0M0lveFJkdG9rZWRqanFacVA2M2xwWGNMa2NBTEFBQUFzSEdFWFFBQUFEcXB0ZTZralMwNjdMenBoMGtlVC9TMDdhYU5LYnFSL3EwWWpNOVpXdWpsY2FZWjNKcWxOYnowYmlYNnRKUnkzL0lCQUFBQU5vV3dDd0FBUUFmTG9NdnYwa2J3OUhLVzVPTWtKeE04WmZPMGtNdUIxY00zdUVockszcVVhWTQ0R21LczBWRXA1YmFsQXdBQUFHd0NZUmNBQUlBMUd5am9NdFd4UlFkcElaZTVsY05MT2s1cmUxbE1iTCtIR0dzazhBSUFBQUJzQkdFWEFBQ0FOUm9vNlBJb3lkSEVUdFdOSkxmU3hoYkI2MWdzMS82VVFpK3p0TUJMendZamdSY0FBQUJnOG9SZEFBQUExbVNBb010Rldwdkxzd21kSmlFWFZtMktvWmZENVgzUWk4QUxBQUFBTUduQ0xnQUFBR3ZTT2V4eWtoWjBPWm5JNlRsSWNpZENMcXpQMUVJdkIya3RMN05PMnhONEFRQUFBQ1pMMkFVQUFHQ05PZ1ZlRmtrK1RtdDJHYnQ1V29QRjNPcWdrK08wME12WkJQWjFQOG12MGk4RUp2QUNBQUFBVEpLd0N3QUF3SnF0T2ZCeW5OYm9NbmE3YWEwVlFpNE01WEZhNkdYc29iQlprcy9TZ2k4OUNMd0FBQUFBa3lQc0FnQUEwTUdhQWk4UDB4N2dqOWtzcmNubHBsWEFDRndrK1RMSjBRVDI5VjZTRzUyMkpmQUNBQUFBVElxd0N3QUFRQ2NyREx4Y3BBVmRqa2QreURmVGdpNHpWNStST1Z2ZVE4OUd2cCtIeTN1b2g4OUxLWGN0RFFBQUFHQUtoRjBBQUFBNldrSGc1U0xKM1NRbkl6N01lWkk3NlRlR0JWN1hJbTBNMk5tSTkvRkdXc3RMRDdkTEtVZVdCUUFBQURCMndpNEFBQUNkdlVIZzVTekp4eGx2MEdXV0ZuSzU0U3EvbHBPME1OUHIybzhXbmRmMUtPTWViWFNRRm5qcGNYMEZYZ0FBQUlEUkUzWUJBQUFZd0dzRVhrN1NHbDB1Um5wSU45S0NMc0lXZitvaXowTXNmMWorM3VLRi83WXVsMnRybHVjdE8rKys4Tjk0N2l5dDVXVXgwdjNiVC9KWkJGNEFBQUFBaEYwQUFBQ0c4Z3FCbHpFSFhYYlRHaWUyUFR4eHR2ejQrc3JuaTVIdjgyVUlaai9KWDEzNWZOc0RTNC9UbWw3R2VMLzFDcnljSjdsZVNsa0VBQUFBWUlTRVhRQUFBQWIwRW9HWE1RZGRiaWE1bGUwTFIxd0dXZjZ3dkQ2YkZnaTRETUhNay94byticU4xM2lzTFMvN2FRR3ovVFZ2UitBRkFBQUFHQzFoRndBQWdJRjlSK0RsT01uRGpDL29zbTF0THBlQmxxK1hyeGRidUV4M2w5ZjczZVhyN3BZYzkxaGJYbVpwRFMvckRyeWNKbm12bEhMdUt6VUFBQUF3SnNJdUFBQUFJL0FOZ1pmanRHYUpzZG1HTmhmaGx1KzNUZUdYc2JhODlBcThMTklhWGdSZUFBQUFnTkVRZGdFQUFCaUpLNEdYeTRmcll6SkxhM001Mk5EVC95d3QzUEpzZWY1NU5aZGpqMzZXOVljdmh2STRyV2xwYlBkbGo4RExVU25sdG1VT0FBQUFqSVd3Q3dBQXdFalVXdC9LT01Nazh5Uy95bWExdVZ6a1R3TXUybHRXNTdMMTVTZlp2SERVU1pLUE02NUFWSy9BeStlbGxMdVdOd0FBQURBR3dpNEFBQUFqc0F5NnpETytRTWxoMnRpaVRmRXN5VmZMVjladmxoWjQrVENiMC9oeWtkYndjanl5ODl3ajhISzdsSEprV1FNQUFBQkRFM1lCQUFBWTJFaURMcjBlbnZkd2t1VExhSEFaMm02U0cybWpqblkzNEhpTzAwSXZGMXQwejU0bnVWNUtXVmpPQUFBQXdKQ0VYUUFBQUFaV2EvM3JKSDg1b2wzYWhMRkZGMmxoaEM4enJwRXpQRjlqUDBzTHYweloyTVlhOVFxOHZGMUtPYmVNQVFBQWdLRUl1d0FBQUF5bzF2cE94dFZ5Y1RQSm5RbWYwc3NXbDJPcmF4Sm1hWUdYRHpQZHRwZUxKQTh5bnRGWSsybUJsM1dHMVJhbGxQY3NYd0FBQUdBb3dpNEFBQUFER1ZuUVpaYmtYcEtEaVo3TzR5UmZKVEZlWmJvTzBrSXY4NG51LzZNa1J5UFpseDZCbDZOU3ltM0xGZ0FBQUJpQ3NBc0FBTUFBYXEzN1NYNDRrdDNaVFJ0YnREK3gwMmhVMFdiYVR3dTlUSEhFMGJPMGxwZUxrWnpIZFFkZWJwZFNqaXhaQUFBQW9EZGhGd0FBZ001cXJidEozaG5KN3ZSNElMNXFGMmtCbDhjWlI2aUE5ZGhOY2l2VEM3MmNKUGs0NHdoZ3paZjM5N3FjSjdsZVN0R29CQUFBQUhRbDdBSUFBTkRSeUlJdU45SkdGMDJGa010Mm1tTG81U0xKM2JUZ3k2YmY1NmRKM2l1bG5GdXFBQUFBUUMvQ0xnQUFBSjNVV21kSmZqeVMzVGxNQ3hCTWdaQUx5ZlJDTHhkSkhxYU4yaHJhelNSMzF2aitUMG9wSDFpaUFBQUFRQy9DTGdBQUFCMHNneTd6SkcrTllIZnVaVHFCZ2NkSkhrWEloZWQyMDRJYkJ4UFozd2NaUitCbDNmZjkzVkxLNTVZbkFBQUEwSU93Q3dBQXdKclZXdDlLQzdyTUJ0NlZXWkpmTGZkbDdJN1RRaTVuVmhEZllwN1c5REtWOWZ4Z0JQdngyUnJQMTNtUzY2V1VoYVVKQUFBQXJKdXdDd0FBd0pyVlduK2NjUVJkUGt1eVAvTFRkWkkyK3NVRGMxN1dqYlRReSs3STkzTU1nWmQxZngxWXBBVmV6aTFMQUFBQVlKMkVYUUFBQU5hbzF2cE9objhJUDRXZ3kwVmF5T1hZcXVFMTEvak50TkRMbUIwdjEvbVFZN24ybDE4UDFoWEErN3lVY3RlU0JBQUFBTlpKMkFVQUFHQk5hcTI3U2Q0WmVEZjIwMFlYamJuMTRuSGF5S0lMcTRZM3RKdmtYc1k5MnVna3lkMkIxL3M4TGZDeUxoK1VVcDVZamdBQUFNQzZDTHNBQUFDc1FhMTFKOE0vY0Y5M2c4T2JNcktJZGJtUjVNN0kxLzdRZ1plYnkzTzBEdWRKM2piT0NBQUFBRmlYdjNBS0FBQUFWcXZXK29Na2Z6M3dib3c5NlBJb3lTOGk2TUo2SENmNW15VFBScnAvWTdnL0gyZDlZOE4ya254aEdRSUFBQURyb3RrRkFBQmd4V3F0UDg2d0Q3SEhISFE1U2ZKZytRbzlIS1NOTmhyci9UQmt3OHRzK2JWaWYwM3ZmN3VVY21RSkFnQUFBS3NtN0FJQUFMQkN0ZFoza3V3T3VBdGpEcm84U25LMDVVdGtkL2t4eS9PQXdZK3VYSytydi84cXJqYmtuQ1g1UHkvOC9rbUdIWmt6dEZsYTRPVmdoUHMyZE9CbE44bXYxL1ExNHp6SmU2V1VVOThkQUFBQWdGVVNkZ0VBQUZpUld1dHVrbmNHM0lXeEJsM09rbnljN1dwem1lZDVzT1hkdkg2SVpkVVdhYUdLUHl5dng5bVdYWmV4dHJ3TUhYZzVTUEtyTmIzMzAxTEtkZDhoQUFBQWdGVVNkZ0VBQUZpQld1c3NMZUR3MWtDN3NNNTJoamR4bk9SaE5ydFZaSC81OGU2Vno2ZG1rUmE0K01QeTg3TU52bDY3YVlHWCtjajJhK2pBeTUwa045ZjAzc1laQVFBQUFDc2w3QUlBQVBDR2FxMXZwVDA0SHlwb01rdHJkQmxUeU9JaUxlUnl2SUdYZkg5NXZkOGQrTHF2MDFsYTZPWHJiRzc0NVRESnJaSHQwN08wRnFTaC9IcE5YMGZPazd4ZFNqbjNIUU1BQUFCWUJXRVhBQUNBTjFScjNVL3l3NEUyUDhhZ3kwbVNCOW1jOFRpenRERXY3eTVmWjF1NHpDL0RMNzlQQzJSc2lubmErSjR4WGRQajVmMHpoSFUyUkQwcHBYemdPd1lBQUFDd0NzSXVBQUFBYjZEVytwZEovbnFnelk4eDZMSXBZNHQyMDRJdFA4czB4eEt0MjdNOEQ3NU0vVnFQOVQ0YUt2QnlrQllBV29jUFNpbFAzRDRBQUFEQW14SjJBUUFBZUUyMTFoOGsrWEdTdHdiYWhYdEpib3pvbER6SXRNY1d6WmJuVThEbDFXeEs4R1ZzOTlQREpJODM3RnljSm5uUE9DTUFBQURnVFFtN0FBQUF2S1phNnp6SnprQ2JIOU9EK1lza2R6UGRzVVUza3Z3a3JkR0NOMXNIejVKOGxUYnlhS3ByNGQ2STltZW9BTmtzYlp6UjdocmUrOU5TeW4yM0N3QUFBUEFtaEYwQUFBQmVRNjMxaHhtdS9XTk1EK1JQa255YzVHeGlsM0EzeVlmTGN6bXpvbGZ1TE1tWGFVR05xYlc5N0tlTk5Sckx1dmhGaGdtUzdhY0ZYdGJodlZMS3dtMENBQUFBdkM1aEZ3QUFnRmRVYTUwbG1XZVk4VVVIU1g0MWtsUHhMSzE1WWtwaGhubGF5RVdMU3ovSFNSNWxXb0dvM2VWOU5vWnhWa00ySngwbXViV0c5MzFhU3JudTFnQUFBQUJlbDdBTEFBREFLNnExL2pqRHRENk1xWEhpT0Mzb01oVTMwaDdhNzFyQmcxbWtoVjZtMHVneFc5NXZZd2k4bktRRlhvWUlsdjE2VGVmZ2Rpbmx5RzBCQUFBQXZBNWhGd0FBZ0ZkUWE5MUxzamZBcG1kcEQ1M0hFTlo0bU9UeEJDN1hMSzNCUmNobFhCWkp2a29MVEUzQnZiU3cxTkNlcFkwTTYyMWQ0NHhPMDhZWm5ic2xBQUFBZ0ZjbDdBSUFBUENTbHVPTGZqelE1ajlMRzhFenRBZVpSa2poTUcxYzBjektIYTJ6dEthWEtheW5zUVJlSHFlRnpZYTRuOVl4enVqVFVzcDl0d0lBQUFEd3FvUmRBQUFBWGxLdGRaNWtaNEJOMzBseWMrRER2MGg3eUQ3MllJSnhSZE16bGZGR041ZjM0dENHQ3B5dGE1elIyNldVVTdjQkFBQUE4Q3FFWFFBQUFGNUNyZldIV2MrRDN1OXpJNjFWWWtnWFNlNG1PUm54SlRwSUN5SUl1VXpYSWkxUU5lWjF0czMzNHp5dFlXclZqa29wdHkxL0FBQUE0RlVJdXdBQUFIeVBXdXNQMHNZWHZkVjUwL3RwRDVlSEhNVXo5cURMZmxySVpXNmxib3pqdE5ETHhVajNid3lCbDVQbGZkbjdISzJyWmVwNktlV3BwUThBQUFDOExHRVhBQUNBNzFGci9lc2tmOWw1czdPMG9NditnSWMrNXFETExHMWMwVTByZENOZHBJMDJlanpTL1J0RDRPVlprbzhIdU85K25kVTNLRDB0cFZ5MzdBRUFBSUNYOVJkT0FRQUF3TGVydGU2a2Y5QWxhUTBLZ2k3ZjdDREozMFhRWlpQTmx2ZkFyelBPMXA3akpBOUdjQi9jSE9EcndzTTF2TysxV3V2N2xqMEFBQUR3c2pTN0FBQUFmSXRhNjF0cDQ0dCswSG5UUTdkR2pEWG9zcnM4TDBZV2JaL0hhVTB2WXh0dE5JYUdsMThNY0s5K3RvYjc4TFNVOHJhbERnQUFBTHdNelM0QUFBRGY3b2ZwSDNUWlRXdTBHTXBZZ3k0M005NldEN2IzK28raDRlVmVXaE5PVCtzNDVyMWE2NkdsRGdBQUFMd016UzRBQUFEZm9OYjZnN1JXbDdjNmIvclhHWFo4MGQwa2l4RmRDbTB1dkdpTUxTOURON3c4em5yR0MzMlh3eVMzVnZ5ZTJsMEFBQUNBbDZMWkJRQUE0SnY5TVAyRExvY1pOdWp5SU9NS3VoeEVtd3QvN3JMbFpYOUUrM1M4L0JqeW5CeDAzdWJqSkdjcmZrL3RMZ0FBQU1CTDBld0NBQUR3TFdxdHUya1AxSHVFWHVaSlBodndjQjlrMklmMVY4M1NSam5kc0FyNUhvK1NISTFvZis0TnVHNHZrdnhOK2piZXJLUFJScnNMQUFBQThMMDB1d0FBQUh5TFVzcFprbjlJY3JybVRjMHkvQWlVc1FSZDl0TkNQNEl1dkl4YnkvVXlHOG4rRE5tT05NVFhrZU0xSEs5MkZ3QUFBT0I3Q2JzQUFBQjhoMUxLZjVaU1R0TkNMLys2cHMzY1NySTcwQ0VlSjNrNGt0TjlJeTI0c0cvbDhRcm1TZjV1Uk92bTR5UW5BMjM3SVAzSEdUMWF3M3QrWWxrREFBQUEzMFhZQlFBQTRDV1VVdjZqbFBKUGFTMEcvN0hDdDU0bnVUblFZWjFrUEVHWGU4dVBtZFhHYTVnbCtYWEcwUWgwa1JaNHVSandYdXA1SHkyU1BGdnhlMnAzQVFBQUFMNVRjUW9BQUFCZVhhMzFoMG4ya3J6MUJtOXorWUIraUZhWHN5Uy95SEFQNUsrZUEyMHVyTkp4MmppaG9lMHY3KzhoUEVzTDNQU3ltOWF1czBxbnBaUzNMV2NBQUFEZ20yaDJBUUFBZUEybGxIOUpHMjMwTDIvd05qY3pUTkJsNk9hSlM1ZGhBRUVYVnVuR2NsME4zUkowa3VGQ043M0hHWjJsaFl4V1Nic0xBQUFBOEsyRVhRQUFBRjVUS2VVL1N5a25TZjVYa3ZOWC9ML3ZKN2sxMEs0L1RIc1FQNlI1V3FQTHJwWEVHdXhuSEkxQngwa2VEN1R0TytrYitIbTBodmY4eEZJR0FBQUF2b213Q3dBQXdCc3FwVnlVVWhaSi9pbkpmN3prLyszT1FMdjdPS3R2WUhoVk45S0NDRE9yaHpVYVMrRGxZWkxGQU52ZFRkOUEzVmxXSDNqWnE3VytieWtEQUFBQUx4SjJBUUFBV0pGU3lyK1dVdjRoeVdtUy8veU8vK25OdEdhVDNoWnBEOTZIZERQSlBhdUZUbVpwZ1plRGdmZGpxTEZoTjlNMzdQTjREY2Y1UzhzWUFBQUFlSkd3Q3dBQXdJcVZVazZUL0VOYTA4R0xaaGxtZk5GRjJnUDNJZDNMY0kwMmJLOVprbCtsTlFvTjVTTEozWUcyZmFmemNYNjU0dmU4Vm11OVpoa0RBQUFBVndtN0FBQUFyRUVwNVQ5TEtmK2MxcVp5ZnVVLzNja3c0M3VHYXBhNGRDL0RoZzFnNkRWNGttR2FsZWFkajNzZDdTNjNMRjhBQUFEZ0ttRVhBQUNBTlNxbG5KZFNGa24rT1dTRzlzQUFBQ0FBU1VSQlZNa1BNOHpEOWtkcG9adWhDTG93RmtPdnhjY0QzWXM5UTNicmFIYzVyTFh1V2I0QUFBREFKV0VYQUFDQURrb3BaMG4reHdDYlhpUTVHdkRRQlYwWW02SFg1QkF0UzdNa056dHU3L0VhM3ZQUTBnVUFBQUF1Q2JzQUFBQjBVR3M5VEhLdDgyWXZrandZOExBRlhSaXJJZGZtVVBmbHJTUzdIWS94ZU1YditVdkxGZ0FBQUxnazdBSUFBTkRISndOczgyR1NzNEdPVjlDRnNSdHlqVDdMZXRwUHZzK2RqdHQ2dE9MMzIxbUdCZ0VBQUFEeWxsTUFBQUN3WHJYVyswbjJPbS8yV1ZiZnJQQ3lEaVBvOHJLZUpqbFA4dldWWDE4Nkw2VXN2bU5kWGJ2eXk1MGs4K1huUDMzaDEzeTdlOHZYSWU2VlIwa08wcTl0SmN2dHpkUEdtNjNiMmZLOHJ2SnJ3Uzh6N0ZnMkFBQUFZQ1NLVXdBQUFMQSt0ZGFkSkg5TUN4LzBjcEhrYjVhdnZkM0k4d0FCejUybUJReStUZ3UwTEVvcDV4M1czMTVhdUdHZTVOMjBVVm83THNlZjNTOTNrNXdNc08xNWtzODZiM094UE40ZTlwUDhlc1h2K2Q1M2hjQUFBQUNBN1NEc0FnQUFzRWJMVnBmZUk0dytUbXQyNlUzUTVibEZXcWpsNzVNODdSRnNlWVUxdVpjV2V2bnA4blhQNVJvMDhISW55YzNPMjd5YlB1MHVTUXZ6ckxKbDZLaVVjdHVTQlFBQWdPMG03QUlBQUxBbUE3VzZQRXNMdS9TMm4vWlFlN2JGbC94Smt0K21oVnRPSjdSTzUybWhsMXZaN3RGSFowbCtrZjZOU0xPMDlwT2U0NHhPbHNmYXcwR1NYNjN3L2M2VHZEMm1BQmtBQUFEUTMxODRCUUFBQUd2elVmcVBMM280d0hIdVpudURMaytTM0U3eVgwc3BINVJTanFZVWRFbVNVc3FpbFBKNUtlVzlKRytuYit2SG1GeXU0OTR1a2p6b3ZNMzl0Q2FtSHA2bEJZbFdaU2ZKKzc2OUFBQUF3SFlUZGdFQUFGaURaYXZMTHp0djlsRlcrMUQ1WmN6U1dodTJLZWh5bXVUVHRIYUp5NERMUnJSTWxGSk9yd1JmM2t2eWVWcVR4cmJZenpDanVCYnBQM3JzVnNkdGZUbmhmUWNBQUFCR1NOZ0ZBQUJnUFhxM3Vwd2tlVHpBY2Q1SkN3aHNnNmRKUGlpbHZGMUt1VCsxQnBkWHRXeDh1WnZXOW5JN0xlU3pEVzRrdVRuQWRoK203d2lsM2ZScmR6bGU4YkZkcTdYdStUWURBQUFBMjB2WUJRQUFZTVVHYW5VWlluelJ6ZlI3V0Q2a283UVdsK3VsbENmYnRwNUxLZWZMOXBxM2sxeFBDLzFzdWp0SjVwMjNlWmJXenRSVHI0YVVpNnkrdWViUWR4c0FBQURZWHNJdUFBQUFxOWU3MWVVNGJReEtUL08wUU1BbU8wb0x1ZHplOUJhWGwxVktlVnBLdVo3dENMME1NWjdyY2ZxT0l0dE52MUNQVVVZQUFBREF5Z2k3QUFBQXJOQUFyUzRYNmQvcU1rc0xBbXlxb3dpNWZLY3RDYjBNdGM0ZmRONWVyOURJeWZKalZmWnFyWE4zSXdBQUFHd25ZUmNBQUlEVjZ0M3E4bVZhNEtXbklSb3ZlbmlhNUxxUXk4dTdFbnE1bldRVHo5azgvY2ZsTE5LM3FXbWU2YmE3L05KZENBQUFBTnRKMkFVQUFHQzFlbzdXT0V0ckllbnBNUDBlalBkeW51UjJLZVY2S2VXcEpmenFTaWxIU2Q1TDh1bUczdE85MTN6dmRwY1BPMjNuV1ZZYnpudmYzUWNBQUFEYlNkZ0ZBQUJnUldxdGgwbjJPbTd5VWVkRDNFL2ZNRThQUjJramk0NnM0RGRUU2prdnBkeFA4blkyYjdUUnZmUnRNenBMY3R4eGV3ZEpkanRzNXlJdDhMSXFPN1ZXZ1JjQUFBRFlRc0l1QUFBQXE5TnpwRWJ2aCtHenRBZittK0kwejBjV25WdTZxMU5LT1YyT05ycWIxcHF6Q1hZSFdQOFAwM2RFV2E4ZzIxY3JmcitmdStzQUFBQmcrd2k3QUFBQXJFQ3Q5VnI2ampycFBlYmtWbHF6eXlZNFN2S2VrVVhyVlVyNVBHMjAwYWFjNTRQbFJ5OFhTYjdzZkh3OTJtc1dhV0c5VmRIc0FnQUFBRnRJMkFVQUFHQTFlbzczV1N3L2Vwa251YmtCMStnOHlRZmFYUHE1MHZMeTZZWWNVdTl4Um8vVHI5MWxsdVJHcDIwWlpRUUFBQUM4RVdFWEFBQ0FOMVJyM1V0eTJIR1Rqem9mNGlhTUwxcWt0Yms4c1dMN0s2WGNUM0k5MHg5cjFIdWNWKzkybHc4N2JXZlZ4MlNVRVFBQUFHd1pZUmNBQUlBM2Q5aHhXNzFiWFE2VDdFNzgraHdsdVY1S09iVlVoN01jRy9WMjUvVzdEZ2ZwTzdLc1o3dkxicWRqTzB0eXNzTDN1K1lPQXdBQWdPMGk3QUlBQVBEbWVvNHc2dG5xc3R2NTJOYmhyckZGNDFGS09TK2x2SmNXUUpxeW51T01lcmU3L0t6VGRyNWE0WHZ0MVZybjdqQUFBQURZSHNJdUFBQUFiNkRXK242U3ZVNmI2OTNxTXVYeFJlZEpQaWlsZkc2VmprOHA1WGFTdXhNK2hOMGtOenR1cjJlN3k0MzBDZkk4Vy9INzNYSm5BUUFBd1BZUWRnRUFBSGd6UFIrd2Z0VnhXNzFIdGF6U2VkcllvaWVXNTNndGcwaTNKMzd2OXhyeGRaSGt1T094M2Vpd0RhT01BQUFBZ05jbTdBSUFBUENhYXEwN1NkN3Z0TG16OUh2WVBVdHlaNktYNVRMb3NyQkN4NitVY3BUa2crVjFtNktlN1VjOVJ4bDkyR2s3cXd6d3pXdXRlKzRxQUFBQTJBN0NMZ0FBQUsvdnNPTzJIblhjMXMzMGE2eFlwVVdTdHdWZHBtWFp3SE05MHd5OHpOT3ZBYWxuNEcwM3lYNkg3YXg2bE5FMWR4UUFBQUJzQjJFWEFBQ0ExOWRyaE5GRlZ2OVErTnZNMHEvVllaVVdhWTB1NTVibDlDd0RTcmVYYTMxcWVyWWc5V3gzK1ZtSGJad3RQMWJsNSs0bUFBQUEyQTV2T1FYd2FwYTF5RmMvTHIyYlpPZktyeGRKL3YzS3I1OG1TU25scWJNSUFMQXhmeTdzMWVod25INGhnRHRwZ1pjcDJZaWd5NVdmTlhaZVdGc3YvcXh4bXVSL3YzRDg1MGtXVXowSHRkWjNsc2R3TjhsbkUxdUQrMGx1cEUvcnlzbnlldmY0Mm5NanljTU8yM21XMWlhMUN0ZDhkd0lBQUlEdFVKd0MrSGExMW5uYVg1YTltOVhXVTUrbi9RWGwzeTlmbi9vWHFBQUFrL3V6NHYwa24zVGEzTjlrdGUwSDMyWTN5ZDlON0ZLY3B3VmRGaE5iUDFkLzF0akw2aDdTWC82c3NVank5ZkpuamRPUm40dDM4cWRqcytacGdaY3BPVnZlcHozY1NIS3YwN1krenZwYnBWWjl2ZDh6eWd3QUFBQTJuN0FMWEZGcjNVbnlmbHIxOGJYODZiK2VYTGRGV3Z2TGI3Vy9BQUJNNHMrT2Y4eWZOdjJ0eTdPMEI4NDkzRXQ3a0Q0Vmt3bTZEUHl6eHVtVm56V2VqT3k4dkJoMHVkUXowTEVxRDlLbjNTVkovbWY2dE44Y0w0OXJTc2Z6YVNubHZ1OVNBQUFBc05tRVhkaDZML3lsOC9zajJhM3pKRStTL0sxL2tRWUFNTW8vUTg2VC9HT256ZlZvVmtpbTJlb3k2Z2FIa2Y2c2tlWFBHbytHRHI1OFI5RGwwczIwc1ZwVDBiUGQ1VTVXTi9ybnUxd2srZThkdHJQS29OM1RVc3AxMzZrQUFBQmdzLzJGVThDMnFyWE9hNjFmSlBsamtpOHlycjk4M2tseW1PUWZhNjEvckxWK3RQeUxjZ0FBeHFIWG54M1AwaWZva2lTM0puWU5ibzgxNkhMbFo0MS9HK0hQR3Bmcjl6ZTExbitydFg1V2E5MGI0Qng5WDlBbFNSNm5YMVBLS3V5bVh6UFNsNTIyTTB0eTBHRTdYNi93dmE3NUZnVUFBQUNiVDlpRnJWTnJ2VlpyL1YzYXY4UTlUTi82OE5leGx6YS8vSSsxMXZ0RC9FVTBBQUIvNXVlZHR0TXI2Tkx6SWYwcWZGNUtPUnJoenhydnYvQ3p4dGp0SlBsbytiUEdGN1hXYTUzTzA4c0VYUzQ5U0J2NU9oVzlRbU5uSGMvTFR6cHNZN0hpTlhZdEFBQUF3RVlUZG1GclhBbTUvQzdUL0pkZU8waytTZnVMNk04MHZRQUFEUGJueXIwazgwNmI2OVhlTUtWV2w2ZWxsTHNqL0ZuamowbCtrK20yU2h3bStWMnQ5WGZMTVYzck9sZXZFblM1OUhGYXVHTUtlZ2JIdnVxMG5SN05MbWRKVGxiNGZsTzlEd0VBQUlDWEpPekN4cXUxN3RWYWY1UHBobHkreWVXL3ZyenZDZ01BZE5kckpNMUoranpnbjJVNnJTN25TVDRZMGM4YVZ3UDFleHV5dnErbGpWUDlZdFd0a3E4WmRFbVNpN1RBeTFUMENvODlXNTZiSGw4ajlqdHNaNVh0TGovMXJRb0FBQUEybTdBTEcyMFpCdm5IOUhzZzBkTk9razlxclg5VTBRd0EvNCs5dXdlUjVNelRSZis4ZzR5Qkk5Z2NXRGd5RmlhYmxYRThsZUI2WjBIWjFvNm5hczQ2MTFLMmNhMXJxTnRhYStsdWpyVld0NHkxcTlxNjE5aERsK0FhYzZ6T0JpMk1zZEFsR0dPTVhwUURZL1FCd2VaQ0g1QWhlSzhSVWVwU1RYOVVWVVpFUm1iK2Z0RDBqS1RLeVBoSHZGSHg4Y1QvaFVFTk5ZWFJVRjFkL202TGFuK3JsTElhd1hYR3BOWjZsTjBLMUY4MFR4TjZ1ZDlSemE0YmREbnpJc2svYlVudFBzb3czWjllWmJpcHp2NTJnR1Y4MitGbnVVWUdBQUNBSFNmc3drNnF0UjdVV3Arbm1mWm4xNmY3bWFacE4yNXFJd0NBL3M4ekp4bnVJZXBRRDdILzI1YVUvMEVwWlRHQ2ZlQXd5WGRwd2lDNzdpeGcvM3lkcVkwNkNMcWMrZWQwMi8yalQwTjFkL21YZ1pZelJIam50T094ZWhBQUFBQmdad203c0hOcXJYZlNkSFBadHh0YmQ5SzhlVG16RndBQTlHYW9jNjJocGlmNVRab3BTc2J1dEpSeWY4UFhHWk4yZXRRbjJmMUEvVVVIdVdhWGx3NkRMbWYrWWFDeDBVWE5QdHFoWThYSEE2elBxelFkZkxidGVBMEFBQUJzZ0xBTE8rUGN6ZWVIZTF5R2Fab3VML2Z0RVFBQXZSaHFDcU9odWpWc1ExZVhWWkpiRzc3V09NanVUbzk2RmZkcXJVOHYyMUd5aDZCTDBnUWkvbkZMNmpYVStCcXFDOVMyZFhmNXhLOHNBQUFBMkYzQ0x1eUU5dWJ6MDdqNWZPWmVyZldKYVkwQUFEbzNHMmc1UXp5OC9yajlNM1pmbFZLV0c3eldtS2NKdWt6dC9qK05nZS9lTjBWTVQwR1g4K1BqbXkybzFXOEdXczVRNGJnaHdpUGZidUh4R2dBQUFOZ0FZUmUyM3JtZ2kvbTRmKzR3VFpjWGdSY0FnSTZVVW00a3VabmtVYnJ0UUhEZVVOT1NiRU5YbDQxT1gxUnJmWmpreUo3L1p5WnBwaldhdjZWdWZRWmR6dnhUeGorZDBZY1pKdkF5MURIamI0WVk4eDErMXRUMU1BQUFBT3d1WVJlMjJybTNMTjNBZXJPRFhPS3RTd0FBTHErVXNpaWwzQzJsZkpya1YybW0yRGxPc3V4b0VkOE90Q3Avc3dYbHZydkJhNDJqSkhmczhlOTBWR3U5YzZGdVF3UmRrdVJsa3NkYlVLTy9IV2c1UTNTNitURDlkNE42MVc3YkxxK0pBUUFBZ0IwazdNTFdhb011M3JKOHYwbWFEaTl1OGdFQWRLeVVzaXFsbkpSU2JyZGRYMjRrdVoza0pNbnFtaDg3eEVQcjM2UjVjRDFteDZXVXhRYXVNeWExMXVkSjV2YndTM25ZQm9PR0RMcWMrZWNrTDBaZW40T0Jhdkx0Z092VHR5Njd1OHdNVVFBQUFOaE53aTVzSlVHWEt4TjRBUUFZUUNsbFdVbzVMcVhjS3FYOEtzbW5TUjRrV1Z6eUkxNmsyNjRHYi9OZlIxN0tWVGJRMWFXZDhzUVVxVmMzcjdVK3liQkJselAvdEFYMUdhS0wwamNEcmNzbkF5emozN2JzK3dJQUFBQWJJT3pDMWhGMHVUYUJGd0NBZ1pWU1Rrc3A5MHNwTjBzcEpjMlVSNC95OXM0RnB3TjhyUTh6L2ltTXZpcWxySVpjb0tETDJnNlQvUDBHbG5zNjBMaFp4MzhiWUJtdkJxckRFT09qeTI0OVUwTVRBQUFBZHBPd0MxdWxEV284Vklsck93dThUSlVDQUdCNDdaUkhkMHNwbnliNVZab3BqNDZUTE52LzVGOEcrQnBqRDdvczB3U0NobllVUVpkMS9TYWJtZjdwSDBkZWw0K1NmRHpBY29hWXl1akQ5Ti9CcDh2UWpqRU5BQUFBTzByWWhhM1JCalNlcGdsc2NIMlRKRS9hTjFjQkFOaVFVc3FxbmZMb2RpbmxScG9wajRib3pERDJLWXdlYktDcnkxR2F6aVNzNzRzMG9aY2h2VXp5MjVIWDVXOTcvdnhWa3Y5M29IWFpxdTR1dGRhWllRa0FBQUM3UjlpRnJkQUdNNTVFMEtVckIyMDlBUUFZajFjRExHUHNVeGd0U3luSEExOXIzTWxtdXBIc3NyL1A4QjAxSG0vQk5Walh4NHMvSmZsOWttL2FLZE4rbXliMDByZS9IbUFacGpJQ0FBQUEza25ZaFczeE1Ob1BkMjFXYTcydkRBQUFvekZFc0h2c1V4ZzlHSEpoYmNjSDA2VDI0NytuLytsdXpodDdkNWVQMTZ6SGorMDYvaUhKNzBvcC8xcEtlVkZLK2I2VTh1TzUvMjR4d0xvTWNXMyt2enI4cktuaENBQUFBTHRIMklYUnE3WE80MDNMdnR6VDBoa0FZQlRudkIrazZiclN0ekZQWWJRYXNxdExPMDJxYm9mOStUQk40R1ZJWSsvdWN0V3cyZmRwT3B6OGF5bmxtMUxLSDBvcEwwc3BQN3pqWjU0TnNCNGZEN0NNTHFkMCs4eHdCQUFBZ04wajdNS290VGVndlduWnJ5ZnRORkVBQUd6T1VPZGpZKzZXK05YQXl6dUthVkw3OW5HUy8zdkE1YjFNdHlHSnJuM3lubi8vS3NreXlXa3BaVkZLK1gwcDVVK2xsS3RNY2JiWWtXT0phWXdBQUFDQWR4SjJZZXpjZ083ZnBLMHpBQUNiUFNmcjIwR0c2UjV6WFkrR1dsQTduZWZNYmplSXY4dXdJYXN4ZDNlNTJObmxoeVIvU3ZMN0pOKzBVeE10U3ltcjZ5NmdsREpVMktmdjdpNnYyajlkbUJxR0FBQUFzSHVFWFJpdGR2cWltVW9NNHJEV2VxZ01BTUNJemdVUGFxMzdOTVhNRUNHVU1YZDFPVjduQWY4Vjk2MXBrbnRHMmFEK1BzTUZyVTdUZEhnWnE0TWtmMGp5dTFMSzcwb3BMMG9wMzVkU2Z1eHdHWXNCMXVNL0Q3Q01GeDJPK3dQREVBQUFBSGFMc0F1ajFFNnJZL3FpWVQwMG5SRUFNSkp6d1htU3A5bXZEbjlEck9zbkkxNy9JYnR4NkdvNHZJL1NkSGdaeXY4WWNTMStYVXA1V1VyNW9jZGxQQnRnUFQ0ZVlCbGRUbVhrV2hjQUFBQjJqTEFMWTNVdmJrWU5iWnJrampJQUFKdFVhNzJUUFp2S3N0WTZWTWVMc1hZMldKWlNGZ1BWZWg3ZEl6ZmxpelNobHlIOGRzUjFHR0wvRzJJcW95R09KLzk3eStvT0FBQUFERWpZaGRGcDI0b0xYV3pHdmJiK0FBQ2JPQTg4eW41Mjk5djNLWXkrR21qLzBqMXk4LzUrb09XOFN2TE5TR3R3TUVCSHpkT0IxdVdqTFZxUHZ6RDhBQUFBWUxjSXV6Qkc5NVJBL1FHQS9WRnJuZFJhbnllWjcya0o5ajNzY2pMUWN1NUU5OGhOT3hod1gveWZJNjlEYjBvcHl5U3JBZGFqNzdETHF6MDVCZ0lBQUFEWElPekNxTFJkUmVZcXNWRnozVjBBZ0FIUC93NlNQTTErUDRnY0l1enl5VWpYL2JSOU1OLzNmalpKOHFVUk53cGZETFNjYjlKdFdLSkxzeUhHMWdETDZQdTQvY0p3QVFBQUFONUcySVd4MFZYRWRnQUE5a1N0ZFJaQmwyU1liaU1majNUZEh3KzBIRjFkeG1QSTdpNWpuY3Jvc3dHV01VVFk1VDhOc0l5WEhYM096TkFEQUFDQTNTTHN3bWpvNmpJcXVyc0FBSDJmKzgzVEJGMG1lMTZIWHc2d21JOHpUUGVZNnpnWm9NYTZ1b3pQVU4xZHZoM3ArZzhSOXZualFNZVd2cjAwWEFBQUFJQTNFWFpoVE9aS1lIc0FBTHV2MXZvd3laRktKRW1HQ0x0OE5OSjFIMlFLby9hOFZsZVhjUm1xdTh0WU83dE1Cbmk1WUlqT0xrTWNXenFiaXFydEpnWUFBQURzQ0dFWHh1UUxKUmdWYjc4Q0FKMnF0VTVxclUvU1RDbERZNStuTUZvNHI5MXJmenZBTWw1bG1OREhkZlFkOXRtVnNNdS9HU29BQUFEQW13aTdNQXExMXNNa1U1VVlsVWs3dlFBQVFCZm5lNU0wMHhZZHFzYlBmRERBTWo0WjZicC83VHBqci8wbXcweXZ0WmRUR1pWU1ZrbFdBNnpIUjF1MHp6a1dBQUFBd0E0UmRtRXNQbGNDMndVQTJFMjExb01rMzJXWWFVdTJ6UkFQKzBmNU1McVVzbkErdS9kK004QXl4dHJaNVpNZFdmZVB0bWdkcG9ZY0FBQUE3QTVoRjhiQ0c3NGozUzd0VzlnQUFOZlNkb3A3bW1HbTY5bEdRM1IyR1dQWVpUSEF2amRKTXJlTGpkb1FVeG1OTmV3eUhXQVpPcnNBQUFBQU8wdlloWTFyVzR0NytERmVna2dBd0hYUDgrNGtPWEt1OTA1OWQzWVphemVkWjg1alNmSnhoZ2xMakRId01zVFlIR0lLcDc2MzM4c09QK3NUUXc0QUFBQjJoN0FMWS9DWkV0ZytBTUJ1cWJVZUpYbW9FdStzMFJCZFhUNGM2ZW9QRVQ0d2hkRjIrSnNCbHZIdFNJOEIwNTRYc2RxQi9hUExzSXZnSlFBQUFPd1FZUmZHd0J1WHRnOEFzQ05xclpOYTYvT1lQdVl5aGdpaWZEelNkUjhpN0RLemkyMkYvenJBTWw2TWROMm5PekRPZEVzQkFBQUFOa0xZaFkxcTMyU2Jxc1NvVFdxdEI4b0FBRnppM080Z3lmT01kK3FjZmZTZlJ2aWRWcVdVWmMvNzRpeTZPR3lMSVk0WEwwZTY3cTZGaDkxK2pna0FBQUN3UTRSZDJEUVBRcmJEVEFrQWdIZHB3d1ZQNCtIdFZReng0SFdNblYxMGRXSG82OEs5N094U1NsbnN5UDd4Y2t2Mk13QUFBR0JBd2k1czJtZEtZRHNCQU51dDFqcFBFM1R4MWp5WE1VVFl4Zm5yZGpuWWtmM3VxdjdDdGdNQUFBQzRuZytVZ0Exelk4eDJBZ0MyV0szMUtNbGNKWnpIWGNGL09IL2xnazhHV01ZcjR4TUFBQUJnZCtqc3dxYTV1YmNkcGtvQUFKeFhhNTNVV3A5RTBHVWQrOW9KWjlIenZqbU5Ma1BiWm9qcHR2N05lTnRhTHd3UkFBQUE0Q0poRnphbTFqcUptOURidEwxbXFnQUF0T2NGMHpUVEZoMnF4cWg5dUtmckxWQy9uZnRxMy91cnppN2JlNno1M3gzKy9uSjhBQUFBZ0IwaDdNSW11Y20wWFFTVEFJQ3pCNFhQbmN0dGhZL0grS1ZLS1F2WEdXeGdmeDFqZDVDSmJhZm1BQUFBd1BVSXU3Qkpiakp0Rnc4TkFHRFAxVnJuYVRxNk9JOWp6SDZ0QkZ2cFl5WG94VW9KQUFBQWdGMGs3TUltQ1U4QUFHeUpXdXY5SkVjUmRPblNQdFp5T2NBeXBuYXRyZFQzVkRndjlyU3UzOXExQUFBQWdGMGs3QUpjMWlkS0FBRDdxZFo2bE9TZVN0Q0I1UURMRU1qYVR2KzU1ODkvTmRManE1ZEFBQUFBQUs3aEF5VUFMc2xEQXdEWU03WFdTWnBwaXp5TTNVNEgxcHN0OHBIckxON2lsUklBQUFBQUYrbnN3aWJwRkFJQU1GSnR0NEhuRVJ3QVlMTmVLQUVBQUFCd2tiQUxtK1FOTmdDQUVhcTF6dEowZEptcUJyQkRYaW9CQUFBQXdHNFFkZ0VBQUg1U2E1Mm5DYm9JSnRPSGxSS3dRY0l1QUFBQUFEdmlBeVVBQUFDU3BOWjZsR1N1RXZUb1d5VmdnMzZmOFFXdUJNQUFBQUFBcmtIWUJRQUE5bHl0ZFpMa1NaS1phZ3lubExMb2VidmFudkJ6LzFCS1dTb0RBQUFBd1BZempSR2I1QTAyQUlBTnE3Vk8wMHhiTkZNTkJ2Q0pFZ0FBQUFBQTZ4SjJZWk8wTUFjQTJLQmE2MEdTNTBrT1ZJT0JUSlNBRGZwQkNRQUFBQUIyZzdBTGNGbExKUUNBM1ZGcm5hY0p1Z2dmQVB0QzJBVUFBQUJnUndpN0FKZjFSeVVBZ04xUWE3MmY1RWdsZHQ3S2VnTTdRUGN4QUFBQTRNOEl1N0JKQ3lVQUFCaE9yWFZTYXoxS2NrODE5c0twOVdhTG1PWVdBQUFBZ0V2N1FBbllJRzljYnBlRkVnREE5cXExVHBJOGpUZmsyU3o3SDV2MG94SUFBQUFBN0FhZFhkaVlVb28zTHJlTGNCSUFiS2xhNjBHUzV4RTBZUE1tQXl6am1USnZwUmNEWElPKzJzTzZmbWJYQWdBQUFIYVJzQXVidGxTQzdTQ2NCQURicWRaNm1LYWp5MVExR01rKzJYZmdSVWg3TzcxU0F0c09BQUFBNExLRVhkZzBBWXJ0c0ZBQ0FOZyt0ZFo1a2ljWnBwc0dJMU5LR2VzNVhOOGRobHhqdURaOEU0R00vcnpZb3UrNnRMa0FBQUJnTndpN3NHbmZLc0ZXOE1BQUFMWk1yZlVveVpGS01FSjloNitjdTI2Zmx3TXM0MGZqYld2OWRWY2ZWRXBaR200QUFBQ3dHNFJkMkxTRkVteUZaMG9BQU51aDFqcXB0VDVOTWxjTk1zNHBmWHJ0N0ZKS1dVWDNobTB6UkVCcFh6dTdIT3pBT254b2lBQUFBQUFYQ2J1d1VTTnVyYzdQMlU0QXNBVnFyZE1rVDVQTVZJUFdHTHVjL05yNUt4Zjgyd0RMK0VHWmUyRjZLQUFBQUdBamhGMFlnNFVTak5wcCszWXNBREJpdGRhREpNK3pHMi94czl1RzJFZE5sN3BsMXh3RExHUHZRaGx0QUxKdkwreStBQUFBd0NZSXV6QUdYeXZCcUMyVUFBREdyZFk2VHhOMG1hZ0dGNHh4T3NvaHdpNG5OdjNXZUpWaEFoUDcySUZrdWlQcjhiRnJXd0FBQU9BaVlSZkd3STNvY1h1c0JBQXdYclhXaDBtT1ZJSXQyMjk3RGJ5VVVwWkpsaXE5RmI0WllCay9sRkorVk9wZXZCeGdHUjhxTXdBQUFIQ1JzQXNiMTk2SVBsV0pVVnFXVW13YkFCaWhXdXVrMW5xVTVJNXE4QTZMa1g0djNWMDRNOFNVVTYvMnRMYXpBWmJ4dit6Q0FBQUF3Q1lJdXpBV3VvZllMZ0RBSmRWYUowbWVKcG1yQnUreEd1bjMrc3k1TEswaE9ydThVdWF0OVhHSG4rVkZEZ0FBQU5naHdpNk1oYmN1eCtsWUNRQmdYTnJwWDc3TE1KMHgySElqN3RJM0cyamRsL2FDVWZ0dGhnbWlyUGEwdmtPRXl2byt4blE1aGRGL0dISUFBQUN3TzRSZEdJVjJLaU9CbDNGWnROc0ZBQmlKV3V0aG1vNHVFOVhnQ3NZWWVKbldXcWNETE1jMXhyajl5MERYbS9zYWR0bUYzeFVmR2lZQUFBREFtd2k3TUNaZktZSHRBUUM4V2EzMVRwSW5FWFRoNnBZai9WNHo1N1I3N1dXR21jSm90Y2MxSHFJRDJJdWVQNy9MYVl3V2hoMEFBQURzRG1FWFJxT1Vzb2cyNDJPeExLVjRDeFlBUnFMV2VwVGtvVXB3VGQrTzlIdjFQc1ZLMjZsd1lSY1lwZjg1MEhLKzM5UGZHOU9CRnZYS3Jnd0FBQUJzZ3JBTFkvTkFDV3dIQUtCUmE1M1VXcDhtbWFzR2ExaU05SHNkT3JmZGEvODgwSEwydGJQTGRJQmx2QmhnR1o5MCtGbEx3dzRBQUFCMmg3QUxvMUpLT1k0YlVKdTJiTGNEQUxCQnRkYURKRTh6ekZRdjdMYlRrWDZ2U2J1ZjkzMk5zWENOTVRxL3pUQWRRWDRvcGV4cjU1RWhmbmRzVlczYlRrOEFBQURBamhCMllZeThlYmxaZDVVQUFEYnJYTkRsUURWWVZ5bGxsZkdHUGI1d2piR1hIZyswbk8vM3VNYS9IbUFaUTB5UjF0WHZ3WlZoQndBQUFMdEYySVhSYWJ1S0xGUmlJeGFsbEJObEFJRE5xYlhPa3p4UE1sRU51anpQRytuM0dtUXFJeDBrUitXM1NWNE90S3lYZTF6bkEvWDltVk5ERHdBQUFIYUxzQXRqNWMzTHpkRFZCUUEycU5iNk1NbVJTdENEYjBmNnZhWkRUR1hVdW0wMzJMaFhHYTZyeXo1UFlaVHNSdGlseTNYUTJRVUFBQUIyakxBTG8xUktXU1E1Vm9sQlBTcWxlTnNOQURhZzFqcXB0UjRsdWFNYTlHUXg0dS8yNVlEWEdBdTd3a2I5and6WERXUnZwekNxdGM0R1d0U0xuai8vd3c0LzYxdkREd0FBQUhhTHNBdGpkamZldmhyS01ycnBBTUJHMUZvblNaNG1tYXNHZldsRHpXTTl0ejVzeDhGUTF4aHN4c3NrL3p6Zzh2NjB4N1VlcXF0TDM1MXpQdTd3czl4YkFBQUFnQjBqN01Kb2xWSlcwV3A4S0xmYmVnTUFBMnFuYi9rdXd6eVloTVZJdjlja3llRkExeGluRWZMZWxIOUsvK0dJTTZ0U3lnOTdYT3RQQmxqR0VCMTYvcnJEejlMRkZBQUFBSGFNc0F1alZrbzVpZW1NK3ZhZ2Jla09BQXlvMWpwUDA5RmxvaG9NNU5tSXY5dVhBeTdyVVpyT2hnem5tL2JQVUY3dWViMkhDRkFPTVMzUVJ4MStsakVQQUFBQU8wYlloVzF3Tjk3QzZzdWlsSEpmR1FCZ1dMWFdPMG1PSXVqQ3NFNUcvTjBPYXEyeklSYlVkalM4WlhjWXpLc2svempnOG40b3BleHQyS1dkRW15SXNNdUxBWmJ4Y1lmamZta29BZ0FBd0c0UmRtSDB6azFuWkpxZGJybkpEd0FiVUdzOVN2SlFKZGpBZWZVeTQrNXU4TVdBdFRDZDBYRCtJY05OWDVUbzZqSWJhRGw5aDEwKzd2Q3pGb1loQUFBQTdCNWhGN1pDZXpQNnRrcDBacFhrWmhza0FnQUdVR3VkMUZxZko1bXJCaHMwNXU0dTgxcnJkTUJyalB2eEVMeHZqek5zbDg0ZmsveHB6MnYrMlFETGVKWCtRMFdtTUFJQUFBRGVTZGlGclZGS09ZbkFTMWR1dHdFaUFHQUF0ZGFESkU4enpOUVM4QzVmai96NzNSdDRlYmZpUVhoZlRwTWNEN3pNUDVWU2Z0enp1czhHV01aV1RXR1U1SStHSXdBQUFPd2VZUmUyU2lubE9NUGZNTjAxdDl2Z0VBQXdnRnJyTElJdWpPZDhlcEZ4VHc4NmRIZVhzNms5ZFR6czFvczAweGNOYWUrN3V0UmFKd1A5cnZsMmdHVjgwdUZuZWRFREFBQUFkcEN3QzF1bmxISTdBaS9YZGJzTkRBRUFBNmkxenRNRVhTYXF3WWlNUGZnOGFIY1hVNloyN2xXU2Yyei9IcEt1THNOMGRVbUc2ZXpTNVRSR3dpNEFBQUN3ZzRSZDJFb0NMOWNpNkFJQUE2cTFQa3h5cEJLTTBOaW5NaHEwdTB0N2ZXSEsxRzY4U25JM3c0UWh6dHY3cmk2dHp3WmFUdC9oa1EvVFlkaWxsTEswYXdBQUFNRHVFWFpoYXdtOFhJbWdDd0FNcE5ZNnFiVStTWEpITlJqcGVmUkorc3hidmdBQUlBQkpSRUZVeGo5dHo4TU4xT1U0QWkvcjJGVFFKZEhWNWN6aEFNdDRrZjY3OW5RNUZkUENiZ0VBQUFDN1NkaUZyZFlHWHU2cXhGdXRrdHdVZEFHQVlkUmFKMm1tTFRwVURVWnU3T2VIaDdYV2c2RVhLdkJ5YlpzTXV2d1FYVjNTZGtPYURyQ29JYVlFK25qTHZpOEFBQUN3QWNJdWJMMVN5cU0wTjZSWHF2RXp5elJCbDRWU0FFRC8yZ2Z6MzZYYk45S2hMNCszNER4Mkl3K3BCVjZ1YkpOQmx5UjVvYXRMa3VGQ2x0OE9zSXhQdHV6N0FnQUFBQnNnN01KT2FHOUkzMHh6WTV6a0pNbW5tM3BBQUFEN3B0WTZUOVBSWmFJYWJNbjU4K2tJejUxWFNlNldVbTVzT3JCOUx2QWlVUDl1bXc2NnJFb3AzOXNNU1pJdkJscU96aTRBQUFEQUtBaTdzRFBhRy9hZnBnbDY3TE83cFpSYnBSUTM1Z0ZnQUxYV08wbU9JdWpDOXZscVJOL2xVWkliYmRmR3NWeGZIS2NKMUR1dmZyTVhTZjdQYkM3b2tpUi9zQmwrbWtMdllLQnQvcXJuWlh5YzVNT083eE1BQUFBQU8walloWjFTU2xtVlVtNWxQOS9DUEUzVHplV1JQUUVBaGxGclBVcnlVQ1hZVXNjaitBNkw5aHoyN2hqRDJ1MkQ4aHZSSGVLaTM2YnA2UEpxZzk5aFdVcjV3YVpJTXR3VVJ2OWZrdCtsQ1JsOW42U1A2YU82RE8wczdCb0FBQUN3dTRSZDJFbnRXNWo3MHVWbGxlUkJLY1cwUlFBd2tGcnJwTmI2UE1sY05kamljK1pWTmhkNFdTYTVWVXE1T2ZaejJEWlEvMm1hN2pQNzdsV1NmMnovYkRMbzhxcVVzclE1ZnZMNVFNdDVWa3I1b1pUeXNwVHkrMUxLTjBuK3RSM1BYWVhWL3JyRDcrdjZHQUFBQUhaWVVRSjJYYTMxTU0wYjE5TWRYTDJUTk5NV0xXMXBBQmpzM09JZ3laTWRQYmNZbTBVcDVhWXk5TDQvUHg5d2thc2tYNVZTN205cHZXWnBwaTNieC9IL0lzay9KSGs1Z3UveXI2V1VWMGJ3VDFNWS9mc1F5eXFsbEV0OG43OU1NNjNmSk5lYmp1ai9TZkpSUjEvNVZpbmx4RjRDQUFBQXUwbG5GM1plS2VXa2xISWpUWnZ0WFpuYWFKSGtaaW5sbHFBTEFBeW5mZEQ5TklJdTdNNjU4bW1HbStyak9NMlVSZmUzdUY2TE5CMGs5Nm5MeTZza2o1UDhYeGxIME9XRm9NdlBERFdGMGNrbHg4ajNwWlFYcFpSL1RmSk5taW1QWGlhNXpKUlRINlc3b0V1aXN3c0FBQURzTkdFWDlrWXA1VkdTRzBrZVpIdERMNHMwSVplYjdZMTJBR0FndGRaNW1xRExSRFhZTVk4SE9vZTl2UXRCN1haYW83dEpibWIzSDZaL2t5YmtjanlTNy9OOUtlVlBodXpQZkRuUWNyNit4bGo1c1ozeTZBK2xsTjhsK1YyYURrSGZKL254RFQ5eTBPSDNYWG94QkFBQUFIYWJhWXpZVyswRHF5L1Q3UTIxdmh5bmFmZnV6VFFBMk55NXc5TWtNNVVZbEdtTWh0dS92MHYzSFl1V1NSNlVVbzUzdEdZZkpQay8wblRXK0NMZGRxVFl0QmRKL2luakN2UDhrR2I2b2grTjJKLzJ3V21TN3daYTNJMnV3eVB0RkV6bi8vejNKSC9UMVRWMEtlVzJ2UVFBQUFCMjF3ZEt3TDVxYjdvZjExb1Awb1JlRGpPdU43VlBrM3lWNUtTVXNyTEZBQURvMFlNa1J4MS8zcU1kUDQvOXF5Uy9UUExiTkIxUS9pN0ozMmE3UXk4djAzVDYrZTBJdjl2dkJWMyt6SHlvYTlNK3VxUzB4NGRWOGxONHJNc1hVWjdaUFFBQUFHQzM2ZXdDNTlSYUQ1TjhsaWI0TXQzQVYxaWthUTk5b3VVeUFJenVQRUZubHcyY0crbnNNdGorUFVuVElXTGQ4UGRKa3J1N2ZpNWJhLzFsbXE0dWIzcUI1RGZadms0dnAybENMbVB0SlBtSFVzcExJL1hQOXNNK09qSzl5ZDEyV3VBKzErVWd5Zk1PUC9KVG5WRUJBQUJndCtuc0F1ZVVVazdTM3FCdlcwTFAwb1JmRHRMOWRFZXJORGVUbjZWNWtMT3dCUUFBMk5CNThLclcrbFdTZTlmOGlOTTBEOFQzNVp4MitvN3I2ZCsyZnc3U2RIcjV6VWpYNFZYN1BmOUhtbzR1WS9VblFaYy8xNzZvTVIxb2NTY0RMR1BXNWJXMm9Bc0FBQURzUHAxZDRBcmF0ODBtZVgwajdwTmM3dTNYMHlUL2tXVFovamsxTlJFQWJOMTVnTTR1dzlQWlpkaDkvRHJkWFZacFFpN0hlMWFucXdUaFAwenlOMG4rYS92M0pyMUtNK1hTdjdSL2o5M0xVc29mak00MzdvZFAwblFrN2R0cEtlWFRMZnNkZTF4S3VXMHZBUUFBZ04ybXN3dGN3Ym0zd3hhcUFRREFqcDNyWHJXN3k2TWtEL1l3eFAzeEZmLzdzdzRxdjIzLy85K2tDYzBmWE9PenJ1TTB5YmRwd2kwdnRxak9yN2JzK3c2bTdVSjZPTkRpSGcrd1B1ZGZLT25DTTNzSkFBQUE3RDVoRndBQUFKSWtwWlQ3dGRZdjh1N3BVUlpKYnBkU2x2dFduMXJyUjJrNnRhemptL3k4cThwWjZPVS90MzkvMVA2NXFoZHBBaUxmcHBtVzZFVzJOeXp5S2sxSGtSK055amVhRDdpc0lhWXc2anE0czdDTEFBQUF3TzRUZGdFQUFPQzhCMG1PM3ZEUGwybENMb3Q5TEVxdDlZUDAwNG5sdFAzekp1K2JMbWtYdTU4SXVyemZsd010NTNTZ1VOdG5IWDdXY2grRGVBQUFBTENQaEYwQUFBRDRTU25sdU5aNkw2Kzd1NnlTZkZWS3ViL25wZm1yRFZ4RG4rNVpqUVZkM3FQV09rOHlHV2h4andkYVRwZWRYVTdzSlFBQUFMQWZmcUVFQUFBQVhIQzcvZnM0eVkxOUQ3clVXbitaZDAvdHhQb0VYUzdueXdHWGRUekEyRHBNdCtHZFozWVJBQUFBMkE4NnV3QUFBUEF6cFpSRnJmV0c2VUIrOHJFUzlFclE1UkpxcmJPOGYycXJycHlVVWxZRExPZnpqbzlkT3JzQUFBREFuaEIyQVFBQTRNOEl1alJxclpNa2Y2a1N2VmtsK2IyZ3k2WGNHM0JacGpBQ0FBQUFSazNZQlFBQUFON3V2eWhCYjE2V1V2NmdETy9YZG5XWkRiUzQ1UkFkVW5xWXd1aHJld29BQUFEc0QyRVhBQUFBZUlOYTYxOGwrYVZLOU9KRktlVlB5bkJwWHc2NHJLRzZ1bnplOGVjdDdDWUFBQUN3UDRSZEFBQUE0SUphNndkSnBpclJ1Ui9UVEZ1MFVvcEw3NHZUZER2ZHovc2NEN1NjTHRmcDFOUnJBQUFBc0YrRVhRQUFBT0RQVFYwemQrNVZtcURMRDBweEpROEhYTmJKRUtHUkhxWXdlbXczQVFBQWdQM2l4aDBBQUFDY1UydjlaWksvVW9sTy9hbVU4a0lacnJ3dnpqSnNWNWV2QmxwTzExTVluZGhiQUFBQVlMOEl1d0FBQU1EUC9SY2w2TXdQU2Y1ZzJxSnJ1emZnc3BhbGxFWGZDNm0xVHBMTU8veElVeGdCQUFEQUhoSjJBUUFBZ0ZhdDlTL1Q3ZlFxKyt4bGtoZWxsQitWNGxyNzRpekpiTUJGUGhob09WMTNxakdGRVFBQUFPd2hZUmNBQUFCNDdXTWxXSnR1THQwWXNxdkxLc05OQmZSbHg1OW5DaU1BQUFEWVE4SXVBQUFBa0tUV09rM3lTNVZZeXpMSm4zUnpXWHRmbkdmWXJpNWZEUkZPYXNmWVFZY2ZhUW9qQUFBQTJGUENMZ0FBQU5CWXRYOU1ZM1IxMzZlWnN1Z0hwVmhQclhXU1lidTZKTW1qZ1piVGRWY1hVeGdCQUFEQW5oSjJBUUFBZ0NSdFo0dlRXdXRIU2FiUjVlVXlWa21XcGl6cTFOQmhxK01CdDkrODQ4OHpoUkVBQUFEc3FWOG9BUUFBQUx4V1NubFpTdmxka2o4azBhbmt6VlpwcHBBNUZYVHBmUDliSnZrMHlZTzJ6bjE3TU1SNnRWTXpkUm5rV1pqQ0NBQUFBUGFYc0FzQUFBQzh3WVhReXlzVlNTTGtNdFMrdHlxbDNFOFRldW16ZThueGdJR1JMenIrUEZNWUFRQUF3QjRyU2dBQUFPOVhhMzJhWktZU2cxcVVVbTRxQXlNNkRreVNmTlQrMlNjL0p2ayt6WFJGT3Qxc1p0K2JKWG1ZNUtEamo3NHhSTmlsMWpwTjhsMkhIN2xxdjd2QUZRQUFBT3lwRDVRQUFBQUEzcTk5c0w2cXRTN3pPdlR5eXgxZTVWZEovcFRrKzFMS2ovYUFqZTU3aXlTZnRsTUJQVXczMHdFTjJkWGxYc2VmZHlMb0FnQUFBUHROWnhjQUFMZ0VuVjAyUW1jWHR1SFk4R0dhME10ZlpqZUNMejhrZVpua3BTNHVvOTNuSmtudVpQMEF5VkJkWFNacHVycE1PdnpZbTIwQUNBQUFBTmhUT3JzQUFBREFOWlZTWGlWNWtlVEZ1ZURMSk1tSFc3UWFxelRURkgwdjRMSVYrOXdxeWYxYTYzR1NvMXd2aURsa1Y1Yzc2VGJvc2hSMEFRQUFBSVJkQUFBQW9BUG5naStwdGY0eXpRUCtzK0RMbU1JdnF6UlRGSzJTckV4UnRMWDcyekxKelZyckxFM29aWHFGSDM4dzRGZjlvdVBQKzhyV0J3QUFBSVJkQUFBQW9HTnRoNVNYN1ovVVdqOUlFM2lacEpudTZDd00wN2RWbXFtSlhpVjUxWFlGWWJmMnRVV1NHN1hXczZtTjNyZGZQUmlxcTB1dGRaNnJoWEF1NDloV0J3QUFBSW9TQUFEQSs5VmFuK1o2VTBWd2ZZdFN5azFsWU1lUExXZkJsN013VFBJNkRITlpyNUtjZFdjNUM3TzgwckZsTC9lblNaS0hTZVp2K1U5V1NXNE1GWHFxdFg2WGJzTXV4NldVMjdZMEFBQUFvTE1MQUFBQWJFamJBZWFIOXY5K3J5S3N1VCt0a3R5dXRYNlZKdlF5dS9DZmZEVmcwR1dXN3J1NlBMYVZBUUFBZ0NUNWhSSUFBQUFBN0k1U3ltbmJHZXRXa21YN2o1ZWxsUHNEZm8xN0hYL2VhVHRsRXdBQUFJRE9MZ0FBQUFDN3FKUnlrdVNrMW5vL3llbFF5MjI3dXN3Ni90aXZiRkVBQUFEZ2pMQUxBQUFBd0E0YnVLTkwwbjFYbDFVcDVkaVdCQUFBQU02WXhnZ0FBQUNBVHVqcUFnQUFBQXhCMkFVQUFBQ0FydHpyNFRNZktTc0FBQUJ3bnJBTEFBQUFBR3ZycWF2TGNTbGxwYm9BQUFEQWVSOG9BUUJjWFhzai84eEJrc21GLytTempoZTVUUExIQy85c2NmN2ZsMUtXdGd3QUFCdlVSMWVYQjhvS0FBQUFYQ1RzQWdEbjFGcW5TYzcvK1lzMFlaYWsrN2RVMTNYdnduYy8rNStuU1ZidG4yL2J2MCtUckVvcHA3WXlBQUE5bkVmUDBrOVhsNlhxQWdBQUFCY0p1d0N3ZDJxdGt6UUJsb01rdjI3L25yWi9kc0hCdWY5OWVHSGRrOWZobDJXYWJqR0w2QXdEQU1CNit1anE4bGhaQVFBQWdEY1JkZ0ZncDlWYXowSXRuK1Ixd0dXeTUyV1o1T2R2M2Q1cmE1VzB3WmMwSFdGT1N5a0xleEVBQU84NTU1Nm4rNjR1QytlaUFBQUF3TnNJdXdDd005b3BpR1o1SFd5WnFjcVZ6UzdVTkdtNndKd21lWlltQUdNcUpBQUF6dXVqcThzRFpRVUFBQURlUnRnRmdLM1ZkbTJaSmZtcy9YdWlLcjA0NjRnemIrdStTdE1CNWxtYU4yNkZYd0FBOXZlYy9INjZudzVVVnhjQUFBRGduWVJkQU5nYTV6cTNmQjdobGsyYUpEbHMvNXlGWDA3eU92eXlWQ0lBZ0wwNFA1OGsrYktIajliVkJZQk4vNDZicGdsenp0Sk05N3dVeEFRQUdCZGhGOFo4UVhFUUQ3S0h0TktkZ1pFZUMyWnB3aTJINmY2TlVib3hTZFAxWmQ1dXM5TTBuVjhlTzY0QU1MTHppa21hYm1VTVp5a0l1OVB1OVhEZHZyR3VMaDBjSTA1TEtTdTdCY0JXbnk4ZXRyL2ZEdDd3Nzg1ZTlybnJlTThlajVIWmRYOVdZQXlBcmhVbFlNUW5UVS9USk9jWnhxS1VjbE1aR01uNFA4enJnSXZRMjNaYnB1MzZVa281VVk2OUdjUDMwOXdjQkRidlFTbmx2akw4ZEh5YUpYbXFFdlpCT2hsUEIwbWU5L0RSTnpjWWRsbjNHSEhUUXh5QXJmMjlOa2x5bExhTDdYdXNrdHgybjRNOUhTdjF1ajliU3ZGTUVvQk8vVUlKQUJqSmhkSmhyZlZKZThIMEpFMlhFRUdYN1RkTmNpZkprMXJydjlkYUg3WVBSZ0FBMkc0UGUvak1oYkFJbDdoMm5Lb0NHUGM5ZUpMTEJWMlM1bjdWay9abExRQUFOa1RZQllDTnFiWE9hcTFIdGRaL3o5VnVLckNkSm1tQ0w4OXJyZC9WV3UrN1VRMEFzSlhuOFlmcHB4UHJYZFhsUGZ2ZS9UU2RGNEQ5K3AzenZPZGwzTC9tNzdVajl6VUFBRFpIMkFXQVFkVmFwMjNJNGJzMExjTG4wY0ZsSDAzVFRIUHpYYTMxYWExMXJpUUFBRnR4UGo5SlAxMWRqa3NwcHlyTTIvYTdXdXRSVEpVSit6YjI3NlI1T1dyUzR6SW1TYjY4NW85UEhKY0FBRFpIMkFXQVFaeE5VNVRrdS9aR3dGUlZhTTNTdkEzMTc3cTlBQUNNWGwvbjhnK1VscmRjUzA3eStrVUpZSC9HL2xINkNWZGVOTTk2WVJwZGlnRUFOa1RZQllEZXRHL2ZuWFZ4TVUwUjczUDJSdFIzN2ZSV015VUJBQmpWK2YxQm1ta3B1L2FvbExKVVlkNnl6ejFQY3FBYXNEZmpmbEpySFRMZzl0bWFQejl4L3dJQVlET0VYUURvWER0VjBWRjBjZUg2NWttZXRsTWNDVWtCQUl6RFVRK2Z1WXF1THJ6NXV2SXdUVWNYMTVPd1ArUCtvQjMzc3dFWDI4VVVTUUo1QUFBYklPd0NRR2RxcmJOeklaZDVlcHhUbWIweFMvS2sxdnBkclhXdUhBQUFHenZYdjVOK0h1WjlWVXBacVRCdjJOK2V1S2FFdlJyM3N6UkJsMjBNampoV0FRQnNnTEFMQUd0clF5NVBZeDUxK2pOTmNpVDBBZ0N3a2ZQOWFacU9qVjFibGxMdXF6QVg5cmVqSkE5VkF2WnEzTS9UM0ZQYTF0RElxYTBJQURBOFlSY0FydTFDeUdXbUlneGdtdGVoRi9zY0FNQXdqdExQQThpN1NzdTU2OHRKZTMwNVZ3M1lxN0gvTVAxTWszZFpweVA1REFBQXJrallCWUFycTdWT2hWellzR21TcDdYV3AwSXZBQUM5bnZ2ZjZlbWNmMUZLT1ZGaDJ2M3N3UFVsN04yNG45UmFueVM1cytHdjh2V2FQMzlhU2xuYW9nQUF3eE4yQWVEUzJwRExVWkx2NGlZazR6QkxFM281YXR2ckF3RFE0ZmwvK3BtK0tFbHVxekR0Zm5ZV2REbFFEZGliY1Q5cHgvM2hwcjlMS1dXUlpMSEdSenl3UlFFQU5rUFlCWUQzYXQrMnVaL2tlYlNVWnB6bVNaNjMreWtBQU4zb2EvcWlCOTZDcDczV25MZlhtUlBWZ0wwWjl3ZHBYcUlhVThEdGJwTFZOWDd1V0pjeUFJRE5FWFlCNEoxcXJZZHBiajdlaXh1UWpOc2t5YjFhNjNlbU5nSUFXUHM2NEg3NjZlYTRUUEpJaGFtMVBrd1RxQUwyWjl6UDAzUjBHZFg5cFZMS2FhNGVlRm0wUHdNQXdJWUl1d0R3UnUyVVJVK1RQRWt5VlJHMnlEU3ZwellTMEFJQXVQcTF3RUg2bTc3b2JpbGxwY3A3djQvTmt0eFJDZGc3ZlhVTVcxc3A1VGpKemJ4L1NxTlZtZzVsTi8wK0F3RFlyQStVQUlDTDJyYzR2NHhPTG15M2VaTERXdXR0YllVQkFDNTlMVEJKZjkwMlRweVhBVEJXYlllWG0yMGc3L1A4ZktxbFZaSm5hYVl1RW5JQkFCZ0JZUmNBZnRLK3dYbVVjYzJiRE91WUpIbFNhejFKY3RzTktRQ0E5M3JZMC9YQUtxWjdBR0FMbEZJV2VYK0hGd0FBTnN3MFJnQWsrYW1ieS9NSXVyQ2JEcE04YjkvT0FnRGd6ZGNFaDJtNjQvWGhRU2xscWNvQUFBQkFGNFJkQVBaY3JmV2cxdm84eVQzVllNZE5renh0ZzEwQUFQejh1bUNhL3FZdldwUlNIcWt5QUFBQTBCVmhGNEE5Vm11ZEoza2EzVnpZTC9kcXJjL2JCem9BQURTZXBKa0NzZyttTHdJQUFBQTY5WUVTQU95Zld1c2t6VnViaDZyQm5qcElNNjNSclhZdWJnQ0FmYjQrT0VwL0FmZ0hwWlJUVmQ3SU5kK3MzYTZmNU0rRFRNc2tmMHh5bXVUVUZGT2QxdjZncmZzMHlhL2J2eTg2VGZJZnUxYi9kcjg3Znl4WmpXMzh0OXRuMW02Yk54MzNuaVZadGR0bHNRVTFuN2JyY1pEa0w5NXhMRCsvenkwZGwzZnFlSE8yRDd6dGVITjJ2RisyKy9YcGp0VmdkbTVNWDF6L1ZaSnZ0Mm5kTC93T2VkZVlmdGIrdldqSHROL2pBT3dsWVJlQS9id1FmdktXQzJEWUo1TTAweHJkMVZZZkFOamo2NE41a25sUEgzOWFTcm12eXBmYUJ0ZTVQbHVXVW80dmZOWmhraTl5eFJjYmFxM0xKQ2RKdnVyaWdka2wxdW5YYTN6ODlCcFRreDczK1NDd3Jmdm5iZDB2MHlGcDlvYjZMNUk4SGlKZ3NjYlVybS9iNTk2NjdyWFd0T3YyZGJzZFZwZjhqdE0xamswLzI5N25QdXVMUzR5MTJZWHZmcExrNjR2clBZSmp4bWRYMk4vZXRNK3R6bTJYazh0dWwvZDhyOW5GNVd4NHYxMWNkanl0Y1J6dS9maHk0WHRPMnUzK2VWdnJ5VFUrby9OdDMvZitjZkZjb3IyMytlVWx4OERoaFhVL0dlcFllNDF0ZXBYZjNXZTF2SGZoOThqWHBaUVRaMWNBN0l1aUJJeFZyZlZwbnhkSXZQRUM4S1l5N1B5NG1pZDVtUDdhazhPMk9rNXlkNmliUEh0d3JMbWY5b1lMc0hFUFBHaisyZkZwbG1ZS1IreUQ1S2VIUlU5N3VqNVlKZmwwbTk0MDd1QVljZk02RDgvV3VQL3gwM1Y4KzkyUDBzMUxEWXQyN0M3V3FPWFk3dW5jN1ByQlp2dUE4azZhQjY1ZGpxRmxrcTl5aFdESU5iNTd2ZTYrc2VZK3Qyclg3ZEg3MW0zTjhYaXpsTEpvdDlHOWRqdDFjVXk3MUhmdmFadE4yMzF0M3NNeGU5VmVFNjhWZGh2aGRlQ2x6MEhXUEdiZDdEczRjUzdjTWUvaDQ4K0NqbjJ2dzdYM2oxSktPVGNPSHFhYlR0WExkaDg1M3VBNXh4YzliZE5sa3NkOUhhL1crQjN5MDdZRWdLNzhRZ2tBOWtPdDlXR2FHMUdDTHZEbjVtbTZ2QmdmQU1DK1hCOU0wblI4N092ODU0R1crc05zeC9aYTcybTY2OTQ1YTgrTkh6by9mbXZON3lmNUxzMkQyNjVyTkUzek1QZDUrOExLV084dlhHZWZPd3VmUEcwZjN2ZjVIV2RKbnFlYm9NdjU3LzY4L2V5aHgvaDM3YnIwTVNiUGdsdmZyZEgxaDM2Mi83UU40anhQZjEzWUR0c3grWFRJZmZzYXRaaTNkZWhxU3ZacGtxTjJ2YWNEYjlNbjdURzByMjA2Ylk5WDM0MzE5d2dBZEVYWUJXRDNMNHduN1lYeEhkV0FkenBJYytQeVFDa0FnRDNRNTlTbUM5TkVEbUtTNW1GWlg5ZDZkekpBS0dITHJxOW5hUjYyOWhGeXVXaWExdzlpSnlPcXdWRUgrOXhaVjZtK2ZKRnVBMkFYdDh2VElVSWhQUVIyTHVOZXJkVjE4ZWJIMmZtUTAyeWd4YzdhZmZ0b2JFSEg5cmpUMXd0OHN3d1VMcXkxM2ttM2daM0xuQ2NjMVZxZkNLOENzS3VFWFFCMisrTDQ3QWJTVERYZ1VxWnhReDhBMlAzcmhJYzlYaU9za3R4UzVVRWN0SC82WG9iejQvdzBCVWRmQVlwM21hVjVPMzhNMjJDVzdqb1I5UG5nZFQ1QUxlNjFEK0Q3MnQvbUc5cmZqUHZOSDJ2Tzd1VnQ2cVcxZVh2TW1ZMm9MSDJQNmJOUXlMekg3WHFVelUwdGY5YTlaMnFFQWJCcmhGMEFkdi9pMk0wSnVKcEpleE5ncmhRQXdBNWVKOHpUN3dPMDI2V1VsVXJ2NVBueHdSNlBtNk0wM1Z3MnVRMmV1MFlablhrZmdaZDJPeCtOWU56cjhMS1ozOUZqdUplM3IvZEZlZ204dE1lSlRkZnlySnV4RGk4QTdCUmhGNERkdmpoMkFRUFgwL3RiUFFBQUc3aE9tS1hmQjZpUFNpa25LcjJ6NThkN09RM0NTQjVTbm5HTk1qN3pMcmZKU0lJdTUrbndNdHl4NW16YmorazRlOVJuQjZPUk91cHlueC9aNzVDekVKUDd4UURzREdFWEFCZkh3TnU1bVF3QTdNcDF3a0dTSnowdTRqVEpBNVhlYWRNMFV6RHMwN2daMDBQSzg5Y293Z2ZqOHJDTDZVSGE3VHEyWU1Ga2hOOXBGNDgxOHhIWGViNkhnWmRPd3AyMTFqc2ovQjF5a00xMktnT0FUZ203QUxnNEJ0NU40QVVBMlBicmhMT0hsWDBGNGxjeGZkRyttTGNkZ3ZaaDNOelArQjVTbnZGbS9yaDBGUWg1TXRMMU8yakhBLzBjYXc0ei9udDU4ejI3THpMTm1sTSt0Z0c0c1FaRTcrekw3M0lBZHArd0M4RHVYQnpQSStnQ2ZSRjRBUUMyOVRwaGttYUswejQ3UWR3dHBaeXE5dDY0dHdmalpqYnk5Wnhrdk1HSWZUVmI1K0Z4R3lhWmpuajl2aFN3NnVWWU04WnVQbTl6dEdjQmlYWDMrYkZ2VjkxZEFOZ0p3aTRBdTNGeC9EQ0NMdEEzZ1JjQVlCczlUTDlCbCtOU3lyRXk3NVhaTGovd2JCOXVQdG1TN2VENlpGenVyYkhQZlRueWRadGt6VTRYdk5HMlRVUCtaSTlDVDlmZTU5dmZrV1AvUFRuVDNRV0FYU0RzQXJEbDJwdGJiampBTUk3YUZzTUFBTnR3clhDVWZxZGhPVTF5VjZYMzBoYzd2Rzczc2owUG54L3F0akVxczNicWtxczYzSko5N2d1YnVOUGYwZmZUYnhpMUQ1T01kMnFlTWUzejJ6Sld2alFTQWRoMkh5Z0J3RlpmR00ram93c003YWpXdXRTcUh3QVkrYlhDdy9RYmRGa2x1VlZLV2FuMlhqcE1jbnNIeDgwMDNiNU1jcHJrNi9aL0w5Tk1VL01YYWQ3NDcrSWg5MW5uZ2Z0MnlWR05qVWRYL0prdUhqaXZrcHdrZWRidWErY2RKUGtrNjRkcXByWFdXU2xsWVROM2NxeloxcURCdk5iNmVFLzJneXZ2ODIwQXNZdnpyK1c1TVgzeFhHdDJia3l2ZGJ5cXRVNmN5d0d3ellSZEFMYjN3bmdlUVJmWWhFbVNwN1hXbXdJdkFNQ0lyeFg2N3Y1NHU1U3lWTzFST2szeXVQMTdXVXBadGxNVlROTzhiVDdyNHB5NDFucFlTam5ac2RyZDYraHpIcVNaNG12NWpuRTZiWmMzWDNOWlgwYlk1VExPd2lCZkoxbVZVaGJ0TnBnbStiemREbDEwVi9raVZ3aTd0QS9HRHpyWTN4Njk0NEgxb2wzVzNUUmRPZGJaNXo0Lyt6eldQdFowMmMxbjJXNlhpMkduYVY2SElxWWRmLzlON3dmTEMyUDZ0Tlo2Y0dGTWQrR3ErL3k2djJOWFNlNitaNHJJeGJuZkkwL1dQSWJNMmpvQ3dGWVNkZ0hZUW9JdXNIR1ROSE5WZitvTkdBQmdENjhWSHV4Z3lHRVhuSFhiV1Z6OEYrZisyWEViZkRuSytnOCtQOHZiSDVEZHpic2Y1QjdrK2xOaFhHZjZyTk5MakoxcDFuODRlcG9tQ1BiZTViVkJtTnUxMXNkcEhsWmU5OEgzcE5ZNmY4K0QwYjZkRDFnbHI3dllUTnY5WkpadUg3UmYxWEdhaDhlck4yeURaWkpGcmZWQm1nZjQ2d1lGRDY3WUtXRzI1dkkrdmV4TEdPMTN1bDFyelJyNytzRjc2cng0ejg4L1hXTmRiMTd4djErTzlQZDBGOGVhOCt2NDRCTGovMjU3N0wrWGJnS1BzdzEzK2JsYlNubjBobjM4dEQwT25iUmorcWlEOWIzcXozKzI1dmE4ZWRrd2NSdG12ZG1PcStzR1h0NzF1eHdBUmsvWUJXREx0RzhwQ0xyQTVrM1QzRkQ0VkNrQWdKRmNLOHdIdUZZNEthWGNWKzNSV1NXNWNaa0g3RzFIaTArVFBNOTZBWVNEZHl6ajlEMzc2bHJyMnRNRDFuV25nemhOODVEeVNtSDRkbnVjUGF5OGJ1RGw4elJCZzZHZHBubm8vS2J0c1d6L1BtNjMrV0dhTGpTemdiL2pHeCtLdjJFN3JOSUVBdjZZNndleHpvK054YnJqNkpMcmRwMXVvM2R6L2JERjdCMDFYT1k5QVpOMXh2NE9UWnN6NytoekhwVlM3bDZ4Zm90YTY1ME85dkdrNldLMGlXMXk2ektCMjNaL3ZGbHJmYkxtOGYyZzUvLys0cm90cnpndVZtM1hwcWNEclI4QWpNb3ZsQUJnZTdSQmw2Y3FBYU54VUdzVlBnTUF4bkN0TUUvL1FaZlRKTGRWZTVTdUZMSTQ2L0N3NWpKbk8xYkRMOWY0MlZXdUVYUTV0ejJ1MDYzbXZNTjJPcHdoSFpkU1ByMXNBS0dVY2xKS3VkbXU1MURkTVU4dUUzUzU4RDBmWmYwSCtGZDVlSHpkTGhDcnE2N2JoZkYvN1hWc081TndmVjkwOEJtM3J4SjBlY00rM3NYdjh2a0dqanZYNlN4M08ydDIrV203NHZReC9pOGVyMDZ2dVUzWE9XWVp6d0JzTldFWGdDM1JYa0N1MDlvWTZNZThmVE1LQUdCVDF3cno5QjkwT1pzaXh4U080M044blFkazdjT3hZK1g3NmVIOWRJMlB1THZ1MkdpbklWbXU4UkdIQTVac1VVcTVmYzMxZkpTbU8rYnBBTi96dWdHaWRZTUFROXkzT2RuZ2Q1dzZhbHo3V0hQUVFmMGVyRHR0V2Z2elhRUmVoanp1TEsvVFdhNDlOajhZY0x4Y2QydzkyOUJ1YVR3RHNOVk1Zd1N3UFo2NkFJSFJlbGhyWFZ6M0xSd0FnRFY5T2NBeWJsNjF0VDZEK1dxTm4vMDZhMHlwVVd1ZDdjalVJdXM4c0YydCsrRDVuTWRKN2wzelp6L0xjT0dsdFI2U3Q4ZVN2cWVEUGI3dU1hdVVzcXkxbnViNkhScXUwcTNsYnE3M2NIeTV4cmc5aUtsTHR2RllreVNuWFUwbFdFbzVyclYrdnVaM0d2SzRzODd2dXBNMFV6ZGRONGh5a01zSHpHNWVkOXV1TWFhOWdBWEEzaEoyQWRnQzdUUXBia1RBdUQydHRkN3d0ak1Bc0FFMzA0VGorN3BtdUMzVU8xckxkYlpOS2VXazFxcUsxNTlLSmtsT3J6akZ4YnVzY3kweEc2aFd4MXNTZlB1Nmc1L3YvVDdNa01mV3RtUHdQTmNQVkxIWlkwMnkzblJuYi91OGRjSXVzd0ZyZDdMR09GdlZXaGNab0JQTmtBSFF0aXVaTVEzQVhoTjJBUmk1dGlYNVhDVmc5TTZtR3J1cEZBREFrTnFIT0gwRlhoNTAyTFdDN3AxMDhCbUxEUHZBY296V0dUZXprZFJ2T3RCeXZ0NlNiYnJvNE9lMzlnRnlHMnc1YUs5VEQ5S0VMUFo5bkkvQk90dGcwWFdRb3UxaWRKenIzM2VjMWxxbkF3VGdUanRZeHJjWmR0cWxyc2YwdEQzT24vM3BiRXp2VUpjMkFQYVFzQXZBdUM5a0RwSWNxUVJzalZtdDlYNVhiWVVCQUM2cnA4RExzZk9hMGZ1Mmc4OVlLdU51VEJsWXlJU1FBQUFnQUVsRVFWUTgwQVBMYmVqeXRPeWc0K1pxeE52NWJCcWlhWkpmbjl0L0o5RVZPQ1BmYnV0NDNOTlhXMnM2dTNiLzYvdjN5SElrbjlIYnNUdXZ3Mm1mNVBWMFM5T1kwaDRBM2tuWUJXQzhGenBuWFNLQTdYS3YxbnFpMVQ4QU1MU09BeStMVXNwdFZSMjlaUWVmOGNjOXYvWVdEcmphY1dhNUQrT2lsSEk2bGltKzJvNE9oMGsrais0czIyeXk3dS9sbnNiMHV0UFpIZlQxM2M3WnFXQm4rM3ZuaTNZOCt4MEVBR3Y0aFJJQWpOWlJwUGRoV3oxcEEyc0FBSU5xdXhuY3pIcmRGMDZUM0ZMTnJiQlNnclh0MG5uN3pPYmNuWEZSYTUzWFdwOG0rUzdKUTl0MzYwM1gyYWQ3RHBvdEhFTjdIOCtUV3V1ZFd1dDNTWjRudVJOQkZ3QlltN0FMd0RndmdPNWtpK2VSQlRMTkZzL3ZEZ0JzdHpVREw2ZEpibll3QlFqRGJHdmRCT0hQZmJ2Tlg3N1dPbXNmaUI5RndHWFg3aE5jMTc0ZjZ4ZGJQcWJuZVIxYW14b0tBTkFkWVJlQThWMEFIYlFYUDhCMnU5UE91d3dBTUxockJsNVdTVzRKdWdCc1JxMzFZWnFwNkthcXdZQUVKL3NaejVPMk85TlJkTUFCZ0Y0SXV3Q016NUVTd082TVo5TVpBUUNiY3NYQXl5cE5SNWVseWdFTXEzMG9mamExQ1F6TmZZdnV4L1JCbW00dU05VUFnUDRJdXdDTTYwTG9mc3pYQ3J0a0dqY3JBWUFOdW1UZzVTem80czF1Z00xNEd2ZURlTHUrd3loVEplNU9yWFhham1raElnRG9tYkFMd0hndWhBNlMzRk1KMkRuMzJ2RU5BTEFSN3dtOENMb0FiRkE3ZFpGcnh0MjN6dS9adnZlUHFjM1RxU2NSZEFHQVFRaTdBSXlINll0Z2R6MVVBZ0Jnazk0U2VCRjBBZGlnV3Vzc3czWURYU1k1VG5LaStvTmJyYm12SFBTMEQwNnlYdGhsYWRQK3JKNzNNMng0N1RUSm82d1hwZ0tBcmZXQkVnRHM1WVVRTUt4WnJYVmVTamxXQ2dCZ1Uwb3BxMXJyemJ5ZUx1T3VvQXZHUlZuVVdxLzc0OHRTeWcxVlpBMWRkL2hkNW5YNFlKWGsyL1ovTDVLY3RzSEhzL3RRaDhvL3FIVi8zMzZSZmdJTmh4M3NjN3oyWlEvN3plcGNyZi9ZL3YvVEMyUDZxZElEc0krRVhRQTJySjNIOVV1VmdKMTNyOVo2Y25ZakFnQmdFODRGWG1hbEZHLzJRMk9WNjAwNU1hMjFIZ2lOY1IzdC9hQlpCL3Z1Y1pLdlN5a0xWUjM5NzkvckhtdVNKcFJ5dDRldjlzV2E2MlcvZXoybTUxbC8rcUpsbXM1TGovMXVBWUQzTTQwUndPWTlqSGxjWVI5TU0yeDdhZ0NBTnlxbHJBUmQ0R2ZXZWFEbzVSV3VhOTJPR2lkSmJwUlM3bDRqY1BDSjhtL0VZbzJmbmJaaGlzNjAwMmpOTm5UczNFV2ZyZm56RDBvcFoyUDZxcldkS2o4QSswallCV0NEMm90S2JXTmhmM3paem9jTkFBQmN6N1NIejN5MnhzL08ydzRkY0ZYckJFNFdwWlJiYTNRTzNicDlka2ZHMmJNMWYvNWhWL2NVMnM4NVd2TmpGb2J4ejh6VytOa0hwWlQ3YTJ4THY0Y0EyRXVtTVFMWXJDTWxnTDB5U2RQTjZiWlNBQURBdFV4cnJiT09wODQ0U1hKdmpaOS9rdVRUZGI1QSs3QnlyVTZRMTMxUXl1YjI1VFYrOXU0YSs5bzB5Y0VXMW11ZVpOdjM4WlAybnNCMVRaSThYZmQ0MDNxWTlRTVN6d3pqenNiMG96Visxb3VVQU93dFlSZUFEYW0xM29uVVBleWplYTMxUVNsbHFSUUFBT3lwMVpvL2Z5OGRkaFFvcFp6V1dwZHJYS01mMUZxUFNpbnJoTnFQc3Q0RHk5TnNmeENBSyt5emE0NmZiZlJscmZYUkd0MXN4ckRkbHJYVzA2d1hOanFvdFI0bHVYdmRXclEvUDE5emRaYW1ST3pNWXMzOStwNFNBckN2VEdNRXNBSHRHMXN1UkdCL0dmOEFBT3l0TlIvVUo4bXMxdnJrZmRPYTFGb1AyNGU2bC9GNHplODByN1UrdmM1VUsrMTNYUGZOL01mMnJQMXgzU2w5MnVtMDV4djg2b3MxZm5hUzVHbTdEdTlheDROYTY4TmE2MWk3MTN6VndXZk0yMW9jWEhXL3FiVSs3V2dmY016cHpzRWF4d0l2VXdLdzEzUjJBZGlNTysxRk9yQ2ZkSGNCQUlEMUhDWTVyTFV1OHVkVGFYeVc1dUhoMlhYM1pUcXVIR2Y5VVBvc3lmTmE2MWRKM3R1Qm9uMW8vekRkVENsemJKZllyMnZLWExHVFR4dU1lTExsNjMyUUp1UnhtaVk0OHgvbi90MG43YitmdHYvLzY1R3V3OWxVUnBNT2F2RzgxbnFjNUt0M2hRamJiZjlsdWcwNk9lWjBaM0tkNmZscXJmT3NOeTBXQUd3OVlSZUFnYlZkWGI1VUNkaDc5M0s1bSs0QUFMQ0xGbW5DSWV1YWRmRTU3ZlFpeDFuL1lmQlpKOWQ3NTRJNHkvWlAwanlnL25XYXNNNjBvMW9lYi9QVUxsenZlckxXdWl5bEhGL21QMjY3UDl6TDVsKzhldGJSdUQ5SU55R3h3WlZTVm0wZ3JxdU9yL00wTDlRczAweG45dTI1ZjNjeEFOU1ZZeS92ZE81SnJmWG1aVHFmbmVzWWZrZlpBTmgzd2k0QXd4dkR6UVZnODNSM0FRQmduNTJtbTRmZVhYcVFianNmekFaYXh3ZDJwNjIwYnZEanFOYjZSWnF1SGljWC8yWGJ6V09XNW9XcjZZakcvZDRycGR4dnQxMlgyMlhhL2pucytldXZrdHkxRmQ5b3NjYVludVIxcDU3SGIrcnkwbllEKzd6OVBlWGVNZ0FrK1lVU0FBeW5uVk5aNmg0NGMwOEpBQURZVTgvRzlvWGFJUHEyQlVkMFdOaGVYUVEvWm1rNlF0UmE2Ny9YV3ArMmY5Y2t6OU5NY1RJZDBUb3ZiUGFmYkd1bjF3YzZTZlU2cHVkcHB1cDYwNWgrbXVhK3NxQUxBTFNFWFFDR05WY0M0SnpEdHYwc0FBRHNsYllUeFJnZm1EN0s5blNmMEdGaHV5MDYvcnhKbXZETFpNVGpmcFhreEtaUDJzNGRqN1p0bnkybFBMTDEzdXJ4dm8xcEFOZzBZUmVBZ2JRUHRMOVVDZUNjU1hSN0FnQmdmeDJQN1F1MUQrTnZaNXhCbkl0dTY3Q3d2ZHB0ZDd5SHEvN1kxdi9KZzJ4WHVPNldUZmJPTVgyYVpLa1NBREFjWVJlQTRXZ3pDYnpKRjBvQUFNQ2UraW9qREpXMER5ekgzakhsdU8yT3czWjdzRzhyM082M3B6YjlUNEdubXhsL3VHNlY1S1p3blRFTkFHTWo3QUl3SEYxZGdEZVoxbHJueWdBQXdMNHBwU3pUQkY3RytOMk8wM1I0R2FOdENPTncrVEd3ajlQQzJIOWY3d05qRDd5Y0JWMEVsQzcvdTBPdEFHQWd3aTRBQTJnZlpPdnFBcnlON2k0QUFPeWxVc3I5alBUQjRFZ0RMNmZSWVdIWGJOTlVObDJOclVYMk0rVHp0bnFjcGdtOExFZjIxUVJkcm1kYnBzSURnSzBuN0FJd2pIdEtBTHpEck5ZNlZRWUFBUGJVell3NzhISXI0M2h3S2VpeWc5cnR1WW1INDRzTnIvZmRKTWYyZ0ovcWNacmsweEVkQzgrT040SXUxOXVXbStoZXRGQjlBUGFOc0F0QXoycXRzeVJUbFFEZXcxUm5BQURzcFhQVGVJdzE4SEtTelQrRVBvbWd5eTZQZ2JQT0hrTnQzK05TeXNhbnppbWwzSTdBeTgrT2hhV1VUOU4wKzlta1J4RjBXWGRiSG1mWXptQzNNOTZwOXdDZ044SXVBUDB6UFFsd0dYTWxBQUJnWDUwTHZEd2E2ZmRidGcraDcyYllnTUFxeWQxU3lpMUJsNTBmQTZkSmJxVC9VTldETm1TU05DR3FUYS8zN1EyTXE3SHZDL2ZUQk93V0F5OTZtU2JrY3RmeHBwUHRlTnh1eDJYUHZ5TnVsMUtPU3luTGpHOHFMQURvbGJBTFFJOXFyWk40Z0ExY3pxVFdlcWdNQUFEc3E3YXJ3ZDAwRHdlN2VnaS82dmc3UGtvVFNIaVEvaC9PSHllNTBTNlQvUmtEbi9hMGZ5M1RCQm51bi90bnowYXkzbWZqNnJqRDlWNXQrYjV3Mm5iZnVaWCtBMURMTklHSkc2V1VoWkhZN1hac2Y2ZjFjUnhmSlBtMERkV2MvMmNBc0RlRVhRRDZOVmNDNEFvK1Z3SUFBUFpkKzVEM1ZwcUgzM2R6OVlkM3Aya2VMTjRxcGZ5cWgrKzNhZ01EWjkrdnl3ZlJ5elJCaHh1bGxOdTZLK3p0R0RqYnY3b0l2U3pUZEhONVU1QmhNYUoxWHJWZFhtNmttWTdsNUlycnZrd1Rscm1kNUZlN01nVlBLZVdrRFVEZFRMZGhvTFExdnRYdUc4ZEdYcS83OXQyOERuU3Q2elJOT09sbTI4M2x2R2NxRHNCZS9aNVZBc2FxMXZvMHlVd2xCck5vM3hhZzIvMzR1eVJUbFFDdTRGZmJma083MW5vL3lUMmJFa2Jod1lXM2QvZjkzR3lXNUtsSzJBZmhMY2VJU1pLRE5UN2k5RHJuY2JYV2d5U1Q2eXl3aXpmd2E2M1ROYTViVDRjOGR6MVhxNHZmK1RUTkErRFZwaDV3dDNXY0pmbXMvZnV5TlYyMTMvOVprcE1odm4vNyt6Q2IydWNHR0kvTE56d0FIckpPbmUrSGJSZlF6OXVhWEtZdXArMmZyMHNwSngydjU5RGovbXk4WDl3bmx1MmZ0ZmZMZFk3RFE5ZmozUDd3V1Z1UHEyeS94Ym5qeldKRDIzRWpOUjdETWVYQ2R6bTg0dStMMDNiN1BYN1g4ZVdhNjNtbCttN0Q3eEFBOW9ld0M2TWw3REk0WVpmdTkrR0RKTTlWWXErYzNXQTlUZklmNTI0a3ZQY2k4aTBYaW1mLzdDL2FDOVYxYjc2ekhXNXYreHRWd2k0d0tvSUdmLzc3VnRqRlBnZ3c1SDJCZHoxQVA5VzVoVFhPYWQ3SXcrUzkzQi9lZDcrbzA3QUdnMjYvMWE1MEtRS0FQbnlnQkFDOStVSUpkdFl5VGFEbDJ6UmhsclZ2R3J6bFp0VGlMUmZCMHpSdmZjeVMvRHBYZTJ1UThmczgzYlMxQlFBQU5zZ0RTbnJjdHhhcXdMbjlZWlVSVFVtRjdRY0FReEYyQWVqUG9STHNqTE5Xb1lPM2VYM0xSZkF5VGVEbXB3dmg5aTJRV1pvV3FJY1JmdG5xWTBldGRlSU5Ud0FBQUFBQWdEY1RkZ0hvUVR0MzdsUWx0dHBKWHMrWnZoejdsMjJERVNmdG43dHQ5NWZETkIyR1RIMjBmUTZqdXdzQUFBQUFBTUFiL1VJSkFIcnh1UkpzcFdXU3UwbHVsRkp1bFZJZWJldWN4cVdVWmZ2OVAwMXlJOG1qSkRxRk9JWUFBQUFBQUFCc1BXRVhnSDdNbEdDckhDZTVXVXE1c2MwQmw3ZHBneTkzU3ltL1NuSTdUYWdIeHhBQUFBQUFBSUN0Sk93QzBMRmE2MEZNWWJRdGp0TjBjYmxkU2xuc3d3cVhVbzVMS1RjaTlESjJrMXJyVEJrQUFBQUFBQUQrbkxBTFFQZStVSUxSTzhucmtNdHlId3R3THZSeU42WTNHaXRUR1FFQUFBQUFBTHlCc0F0QTkyWktNRnFuYWFZcnVyV3ZJWmVMU2ltUGtueWFKZ0NFWXdrQUFBQUFBTURvQ2JzQWRLaldPazF5b0JLajlLQ1U4dW0rVEZkMEZhV1VaU25sVnBvdUw0ekhRWHRNQVFBQUFBQUE0QnhoRjRCdXpaUmdkSlpKUGkybDNGZUtkenZYNWNXMFJvNHBBQUFBQUFBQW95WHNBdEN0ejVSZ1ZFN1NCRjFPbGVKeTJscmRTRFBsRTQ0cEFBQUFBQUFBb3lQc0F0Q3RReVVZalFlbGxGdWxGRjFLcnFpdDJjMEl2SXpCVEFrQUFBQUFBQUIrN2dNbEFPaEdyZlVneVVRbFJ1RjJLZVZZR2E2dmxMS3F0ZDVNOGpUSmdZcHN6TFRXT2kybExMZnNleDhuV2V6ZzluaG9QQXp1Tk1sZFpWakxVZ2tBQUFBQWdGMGo3QUxRblprU2pJS2dTMGZhd012dE5JRVhRYTdOT2NpV1BheHV3em5MWGRzUXRWYWRvb2EzS3FVc2xBRUFBQUFBZ1BOTVl3VFFuVStVWU9NRVhUcFdTamxOY2xzbE51b3pKUUFBQUFBQUFIaE4yQVdnT3pNbDJLaTdnaTc5S0tXY0pIbWtFaHRqMmh3QUFBQUFBSUJ6aEYwQU9sQnJuU1NacXNUR0hKZnkvN04zcjFkT0pNa0NnQ1AzN1AvVldyQWFDNmF4QUdFQmpRV29MWUMyZ01ZQ0dBdGFXRUJqQVJvTFJtTUJXZ3RXMTRLNFA1UmFOQ3pRa3JJa2xhVHZPNmNQVHowcU1pdnJrVkdSUlRMR2ZyMk5DRXU0SE1kSUNBQUFBQUFBQUw2UzdBTFFqWkVRSE0yc2xHS1puVDBycFN3aTRsWWtqaU16VlhjQkFBQUFBQUNvSkxzQWRNTkU5SEVzSXVLRk1CeEdYU1pxTGhMR0dBQUFBQUFBZ0dPUzdBTFFqVitGNENqZWxsTG13bkRZbUF1Qk1RWUFBQUFBQU9DWUpMc0FkRVBWaGNPYmxsTGVDOFBCUGNTeW9nN0dHQUFBQUFBQWdLT1E3QUxRS0RNSEVURVVpWU83RllMREs2VXNZcG53d21GSmRnRUFBQUFBQUtna3V3QzBNd2w5ZUpOU3lrd1lqdWFURUJ6Y29DYldBUUFBQUFBQVhEekpMZ0R0SkxzYzNsc2hPS3FwRUJockFBQUFBQUFBamtXeUMwQTcxUllPYTFKS21RdkQ4ZFNsakZUV09UekpMZ0FBQUFBQUFDSFpCYUFMVDRYZ29INFRnbDZZQzhIQlNhd0RBQUFBQUFBSXlTNEFYVEFCZlRpelVvcUtJdjN3cHhBY25NUTZBQUFBQUFDQWtPd0MwQVZMaXh5T3FpNWNNb2wxQUFBQUFBQUFJZGtGb0VsbW1udytyQWNoNkEwVmRnNVBZaDBBQUFBQUFFQklkZ0ZvWmZMNWNLYWxsSVV3OUlhMk9BSUpkZ0FBQUFBQUFKSmRBRnFaZUQ2Y1QwSUFFdXdBQUFBQUFBQWt1d0MwTWZGOE9GTWg2SldoRUFBQUFBQUFBSEFNa2wwQU9BbWxsSmtvOU1wUUNJNWlKQVFBQUFBQUFNQ2xrK3dDME9aZlFuQVFVeUhvblg4SUFRQUFBQUFBQU1jZzJRV2d6VkFJRGtKVmwvNnhoTmR4U0xBREFBQUFBQUF1bm1RWEFFN0Ivd2xCNzR5RTRDaUdRZ0FBQUFBQUFGdzZ5UzRBYllaQ2NCQlRJZWlQekx3V0JRQUFBQUFBQUk3bDcwSUEwT1JHQ0E3Q01rYjk4bHdJam1Zb0JBQUFBQUFBd0tXVDdBTFFvSlF5RlFVdVNXWU9JbUlzRWtjekZBSUFBQUFBQU9EU1djWUlBTmpHYXlFQUFBQUFBQURnbUNTN0FBQWJ5Y3lyaUhnakVnQUFBQUFBQUJ5VFpCY0E0RkYxK2FKN2tlaEZXd3hGQVFBQUFBQUF1R1NTWFFDQVRieUxpQ3RoNklXaEVBQUFBQUFBQUpkTXNnc0E4Rk9aZVI4Ulk1RUFBQUFBQUFDZ0R5UzdBQURmbFprRGlTNEFBQUFBQUFEMHpkK0ZBQUQ0Vm1aZVJjUjlXTG9JQUFBQUFBQ0FubEhaQlFENGk4eThpNGcvUXFJTEFBQUFBQUFBUGFTeUN3QVFFUkdaT1k2SU54RXhGQTBBQUFBQUFBRDZTcklMQUZ3NFNTNG5SenNCQU5DWGE0bGhSRnhIeEs5cjU2bXppUGd6SWg1S0tRdFJBZ0FBWUI4a3V3REFCY3JNcTRoNEdSSGppQmlJeUVrWkNnRUF3RW1kZTQ4Ynp1R21wWlJwRDdkcEVNdUUrZGZmK2VkUi9mVmRadjVXU3JuVGxoRVJNU21sek05c20wNUZMMk1QQUFDMGtld0NBQmVpSnJpTVlwbmtjaVVpQUFDdzkzUHdRVVM4aTkwVHpKOUd4TFNIMi9SNWcydUtRVVM4eWN5bkVmSGlUS3E4dkl5dnlUemJta2JFL015MjZWVDBOZllBQUVBRHlTNEFjS2JxVGVoUkxHK1FYNGVLSUFBQWNHalgwVlpKY1pTWnc3NVVwZGdpMGVVdjJ4QVJIeVBpbWU0QUFBQkFWeVM3QU1DWnlNeGhMRzhrLzFwL1ZiMEZBQUNPNjJVSDcvRXFJbTU3c2oydmQ3ek9HR1htdUpReTBTVUFBQURvZ21RWEFEaEJtVG1LWmFXV1lTd3J0MXhGMnhPakFBQkF0K2ZzdytobWVaaHg5Q0RacFZaMWVkWHdGbThpWXFKbkFBQUEwQVhKTGdEUVUvWG0rREMrSnJJOGphOEpMZ0FBUUwrOTZ1aDlCcGw1WFVwNU9QTDJ0QzdKTk16TVVTbGxxbXNBQUFEUVNySUxBQnhKcmM0UzhUV0I1VjlydngrS0VBQUFuTFJ4aCsvMU1pS09uZXpTeFRYS0tDS211Z1lBQUFDdEpMc0FRSWN5YzMwNW9mWGZQNjIvRG1LM05lNEJBSURUdVM0WVI3ZkxqRjVuNXJDVU1qL2laajNWc2dBQUFQU0ZaQmNBK01iYThrRXIzLzc1WDkvOGVTUnFBQURBbXVkN2VNOXhSTndKTFFBQUFFaDJBZURNZlpPNE1scjdwL1duRXRmL0R3QUFRT3MxeVBVZTN2cGxIRGZaNWZlUTZBOEFBRUJQU0hZQjRLUmw1aWordWpUUUtvbGxKRG9BQU1BUmpQZjB2c1BNdkM2bFBCeHB1Mllkdk1lRDdnRUFBRUFYSkxzQTBIdVplUlhMeWl0WDhYVUpvYXRZSnJrQUFBRDB5Y3M5dnZmek9GTENTQ25sSVRNWERkZGg4MUxLVFBjQUFBQ2dDNUpkQU9pTnpGeFZhQm5GTXFubEtyNVdiQUVBQU9qN05jMTE3SGVKMUhGbTNwWlNGa2ZheExjUjhXN0gxOTdxSVFBQUFIUkZzZ3NBUi9GTllzdXY5ZmREa1FFQUFFN1l5d044eGpnaTNoOWo0MG9wN3pQemFVUmNiL25TeVJHWFh3SUFBT0FNU1hZQjRDQXljeGpMeEphbm9XSUxBQUJ3ZnRjOGc5ZytDV1FYcitKSXlTN1ZUZjExMDIxOVgwcFIxYVcvdWw1YWF0QjR2VCt2UDExYWFHWUFBRGcva2wwQTJJdHZrbHRHb1dvTEFBQnczc1lIK3B4aFpsNlZVbWJIMk1pNmhOS0x6QnhIeEp1ZlhPdE5JK0p0S1dXcWEvUlgxNGxJbVRtS2lNOE5iL0dobEhLblpRQUFnTWRJZGdHZ00zVjkrbFZKNjZHSUFBQUFGK1RWZ1QvcjVwZ2JXMHFaUk1Ra00xZkwwdzdxUHkwaVlucXNaQndBQUFBdWcyUVhBSFpXcTdlc0o3Z0FBQUJjNHJYUktBNmI4SCtkbWJlMXlzcFIxYVFXaVMwQUFBQWNsR1FYQUxheWx1RHlNdHJXNFFZQUFEZ1hMdy84ZVlONlhUWVJlZ0FBQUM2UlpCY0FIaVhCQlFBQTRJZlhTNnZFazBON0ZaSmRBQUFBdUZDU1hRRDRyclVidGk5anVmNDZBQUFBLytzNmxwVldEdTBxTTYvcU1rSUFBQUJ3VVNTN0FQQVhkYTM1bHhFeEZnMEFBSUJIdldwNDdTTGFFbVZlUm9Sa2w1OWYzNDRpNHRlSUdNYVBLNVhPNjgvdkVURXRwVXhGankzNjJOVjM5dU5aUk14S0tmTURmcGVyNy9UM240MHZzem9HL1Y1L1B5MmxMRTYwSGE0ajRtbmQ1dEVHKy9tc2xQTFE4ekZyRUk4L2ZEYXQyL1JuYmIvWkNiYmRWU3lUUm4rdDdUZmNvTCtleERoZEh5UmNqUkZQYTV0ZVBYSk9NRHYxTmwzYjloL3RqOU82RHk0Ty9KMkdhL3ZYMVNOajVHcThtSzMxdVpNY0g5ZjJzNWVQYkhmdng4Z045ckhoVDhhUVZkOWJIMGVjUThNWmtPd0N3T3JFY0J6TG03UkRFUUVBQU5qb1dtbzFhYkNyaDFqZXBOLzFPbXdjRWJjSDNONXhMQ2RMZG5GN2lFbUZPdW45UExhcnVET3NQNk9JZUpPWmk5bzJ2NWtJT2F2OTlmT09MNTJWVW03WDNtY1lFVzgyNldPWk9hdjlhTExITWVqVmp1UElhdXdhcmIzZk5DSStSTVREdmlaMnV4cEg2cjJzMS9XOWhsdnU1OUdYL1h6dG9iTmRxb1NOdm5tdjFUWjk2RG9acFBhMWR6dSsvTVA2UGxEM29mRVdiZmR0ZjMyVG1hdGo2S2Q5N1Y4N3htbXd0bTNibmg4TXZ0T204N1YrT3UvaCtQaHQyNDdxbVBTejVSM2ZySTgzKzJ5L2h2WllIeTllcjQvbit4d2ZlelpHUml5WHkvelFwK1N5eG4xc3RYOWQ3MlBNclAzL1RlUGI3T1Y4dVhFTS81OXpJUUEyUE1GS0R1bXpYbmVSKzlrd00rOHo4ejkyQVRnWmQwWXY1eWJPVDJEM20wOTJLOGN0NkhoY3VXL2NSMGFaK2JyeFBjWUgzTjY3bG0zZDgzY2JaK2FYZlp5UDFBbUMxdlBCMFlYc0U2TytIamRhejBremM1Q1o3M1o4ank5ZDlvRWE1MzFlbi95bjd1K0RQbzRqZFgvL1Q4ZjcrZkFJKzhvKzIvRHpIdnBjMDM1ZDk2SDdVK3F2Tzl4anpWTnAwNDdHeC9XMi9kaDZuRDJSOXRocmYrdG9qTHpld3hoNWRlVHppMzN2WTE5YXo2bnJmdEFhOS9zOXhlOWQ0L2NhQi9UVTM0UUE0Q0p2eUk0eTgyTkVmSWxsSnZSQVZBQUFBTFoyM2ZEYWVYMkt0TFZNL010TGJvQjZmZnNsSXU1alA1VktSeEh4aCtTOXkxWW5OVDlIZmNKL0I4T0krTnpCUk5xd0p0OThqc2VYdUdreGlPWFQ2VjlxdGFTK0dOVDdXZmZSN2Iyc1VkM1d1MFAwcGJvTisyN0RVZTF6SDQrWkJMSzIzZGZ4OVQ3a1B2dnIrQWpiZHJmSGJmdGVtNzdyUTV1dWJmOVYzZjdyeHUyNjZtai8ybmQ3clBlMzE5RXZnNW9zOFhFUFkrUlJ6b1ZXU1hJSDJNZUdFWEdmbVgvc21sUldLLzYwbnRmdjY1amJFcnN1dGd2MlJySUx3QVZaUFRWU0w2aXZSUVFBQUdEbjY2dHh0RTBrL0JZUlVaY2xhTG1CUERwMFJZS2V4SCtRbWUvcTllMGh0djlON0hkaW12NWFKYnAwOFZUN2ZVT2ZIMGZFSHdmdWg0T0krTGl2SjgxM2pOOCs3MmU5MldkeVNBZEpBYnU0anVXay9ER3JNcnlNN2lmZmY5UmY3MnNWaXIwbmc5VGtzeitpZmRtU2JiMk9aZUxCVlEvMnlYL1Y4WEhRUWR1OTYyRC9PbVI3RENMaTNhSDYyeFpqNUhqUFkrVEJ0bmZQU1hJL2NoWEw1S3U3bHZQN2xuN1ZkWkpwZmIrV050dnIwbDNRU3JJTHdBWDRKc2xsSkNJQUFBRE5XaXVxckNlNGZHcDhyMWNYZG8xN0ZXMVZObUFiVjlGTm9rdExuNytQN3F1WmJHTmNuM1kvOW9UdUlUNy9PcFlUbllPTzIzQTFiZzJPRkxkakxrTXlQUERualdMUENUNXJpUlhIak9ubkhpUzhqS01IRmNQWGtnR0hSL2o0dmZlM25vMlJvMzJNa2QrMDU3NHExR3hqcDhTZVVzb3NJdVpIdnNibyt2MStDK2d4eVM0QVoweVNDd0FBd0Y2dXRZYU4xMWdQdGFKTFJFU1VVaWF4TEJHK3Erc0xpdjFxd3ZoS1QrUkMrdnkrbjlUZjFGVXNKeDR2d1ZVMFZPSDV5YmgxektTQVl5ZThIR043LzlqSHNrWTlhYzlMYk5NZnRjZTdMdmRYYmJIeEdQbDVUKzI1cXFiV2grUGVLSFpMN0dsTkRybnVLcG1vdmsvTGRjS3NKdkJBYjBsMkFUalBrL3dyU1M0QUFBQjcwMXBKNVh1VlhDWU43emZzdXVSNVg2OTFveDhUakhDb1B2ODYrakhodHpLcUU4dVg0THBoR1l2MU5oekVjYXNUckZzdFMzVkpZK2g5bHdrdk5kbTFUOGVoVlpMRlJSNFhhekxnNjU2MXhjVWt2SFI5UEZoTGRPbFRESzkyMk1jbUhYeHVWK2YxcmVPZnFpNzBubVFYZ1BNNndWK1YrRHYwR3M0QUFBQ1haTnp3MmtXdDVQS3RENDNmNmVVNUI3eUhFNHl3N3o0L2lvZytKcGE4cnQvdEVyenBZT0w2VFJ4bmFaVWZHY2J4cTJBYzJuMkhDUWg5U1Z4YU43akFObDB0WFRUdVlWdGNVdkpSWjhlRG5pYTZyR3hWeWFhVXNvajJoSmV1bGlodHVUNVl4RitYWFlWZWt1d0NjRDRuK0hjUjhhV0hKL2tBQUFEbmRPMTFIVzBUWGQrOWFWeExoTGVVQ2IrdUNTSG5HUE0rVlVhQVE3bjMzWHBoNTRTak9pYS83dUUyWFY5UXd0Sktjd0pDdmZmYTE2b2QxNWRRNFcydExVWTlIb2RXNXl6R3lPMlBLMzJ1aXJOdEpadFBIWHplc0hFL3VXcU02VU5OM0lGZWsrd0NjQVluOTVuNVJ5eWZGSEhqRHdBQVlMOWFLNmo4ckJ4NGEzV1g4Wm5HL0UzMGV3SUVPbFVyRmd4Ny9CV0hYUzROMDNPamhzU1FOejBmVnk5SlV3SkNUWlI1MWZOdHZJZ2x4dFlTWVBzK2J0eGR5TDUxMVhvOHFMRTZoV1N0alN2WmxGSWVJbUorNVBQNmZWNnpRRzlJZGdFNDRSUDdtazNjMS9KK0FBQUE1M1lkTm95Mm0vR3pXc0hsUnlhTlgvSGxHY1o4RlAyc2pBRDc5TVozN0pWZGt4ejZQSGs3T3RkcVlJOXM4M2pIMTc2Ty9qOWtPTHlRaWozdjRqUWUrSHgxUWZ2WXp1ZWZ0ZnJJbXhQcmY1czY5aEtsKzd4bWdkNlE3QUp3Z3VxRnl4L2hoaDhBQU1BaGpSdGYvOU9iM3JWVStLVGgvYzl4b3V0ZXQrT1MxS1ZJaGgyLzdTd2lwaEhSNVhJRXd3dGFDbWZyWmVKcWJBWWR0TnZiaUxpTmlHZjE1MjA5VHN3NzJLNVhGN2lMdmR0eE9hT3VrMGtYZForY2QveStMOCs1OGVwK05UNlJyenVJeTBrS2JFbWVPN1dLUk50VXNwazBmdGJPeDlrT3ppVlVkZUZrL0YwSUFFN3FoSDUxa2l6SkJRQUE0UEJhSjVFbUcveWZUOUUya2ZNeWxoTm81M0FOUEk3dUovMVhFNHgvcnYzZFB5SmlGS3FtY2g3alROUSsvaUVpcHFXVStYZjJyZXVJZUI3dGs4YlBlemJlckgrWFVjZnZmUjBSNzdmNC95MmZQNHVJRjk5cnUvVnRyR05rUzVXTFVZL2FibFovL3IzMmQ3L1c3OWhsRlk5QkxPK3IzbTF4TEJwMWNDeGFKYk4rK0Y2MWhGcmRZaFRMQktTV3p4cEh4TTBaajQ5ZEpZOHNJdUtobm5QTlYyMVMyMkZZeDdickR2cmVPRFBmL21CZnZ2UXhjaldHalU2MEh6NTZUbDlLbVdmbVE3UlZXTm4xdlA1NUIvc0huQVNWWFFCT1JEM1pWczBGQUFEZ09OZGtyVTlJUHRUS0xUOVZTbm1JdGllOXh6cyt0ZDVIWFQ0UlBZMklaNldVZjVaU1hwUlM3dForYmtzcFR5TGlsMWhXVFZqbzhlelF2NmJSVFpXR1VjTnJGN0ZNa25oV1NwbjhhSUsxbFBKUVNybUppQ2V4VEREWVZSK1c2WmxFeEpPeTlHenRwMFRFaStndUdlZnBsdi8vMXgwL1oxN0hxa2Y3VWlsbFVzZXRYY2VzcXlNZkx4WjF6UDJsbFBLa2xITHp6ZGo4b3BUeXoxaFd0SmwyK0xuYlZyUjUza0VmL2FVZWEyWS9hTXRaS2VWOUtlV1hhS3dHMGJPS1M0dTE4WEhSd1haMXNXMnJQbmRUeDhMWk4rMndHaDlYNXdSOU9wZlp4eGpaVlZMRDh5UEhaaDdMWkp0blpVMXR4NXVPeDVCdEtxNThhdnlzNngzMmxVRzBKYk51ZE0wQ2ZTSFpCZmZmMVJnQUFDQUFTVVJCVk9BRVpPYnJXQ2E2REVVREFBRGdLRm9udXo1czhYOWJKeDdHWjNBZFBPcm9HbmdSeTRtUFo2V1U2Yy8rWXlsbFhrcTVpK1hFaUNkYStabDVMSmVXK2VXYkNjUmY2dVRhczFoT3VpMjI3UGRYc1hzbGdWVmYzN2p2MWtuZWxpb1F3eU1tUzh4ak9ZRjc4NU1FZ29kU3lyUG9wdExGYU12L3YydGN0cHBrclAvM1JjTjJIYXVpMVVQZGYrNGVTK3dwcFV4ck96NkxicElSQjFzc1E5SWFvMG50bzl1MGFldkUvQ2lPYTE3M3VWOXFndWxxZlB4blJQeXo5dGZKRHUvYnV1eldvbzRaZHhzbUh5L3FPVUZydnp0V0V2THFtUERZR1BtaXRsZnJ2clZWdit0d3liNUZSTnpXNCsvdHQrZDY5ZHh1c2phR3pEdUs3OHNOOStkSlkyeTNIYThpMmhOUkxXSEVTWkhzQXRCam1Ubkl6STl4ZW10WEFnQUFuTlcxV2JRbGtDeTJtWUNPOXB2TXI4NGc3RjBzNVRLTDVXVGJkSnNYMVFtdUY3Rk1ab0J2dmEyVGF1OS9VamxsV2txNWplMnJCYlZNcXYvMm93bk5SL3I3TE5xU3U0NlJMTEdheEoxdHVJMlRhRTk0R1dUbThBRGJOdHFoRGFlMURhYzcvQXlPdEErOTJMWnlRTjNPWDZLdEd0SEs4MzIyU1RXdmlTczc3YzhOMi9ackhNZDYwc0YzSzB2VjQrdXFjc28vWThQS0tmVTg3UHBRWThaMytsM3IrSEY5aExaNHR1bjVUeDBqbTg5NXRxd3ExTVY1M3J4dTUvc3QydkpKUjJQSU5tMDZPZUI0MVhvZE1OdGxQNEZqa3V3QzBGUDFhWjdQMFkrU3NBQUFBSmRzM1BqNnlUYi91VTRRdGR4b0h0WnJ5bFBXZWkyOG11alorV25hT25ueVh2ZG56VTE5MG4vVFByVFlzbHJRc09HN3RmVFZQMXZHbXlPMXczekwvWGtTN1JXYkRyR3RWNW41Y2R2RW1wbzg4bXlIbjBOWHNYcS96VDcwdlgwcXVxbndjcjFKdFkzR2lod3RDU3ZUaHRjZXM0ckkrMjNhc3ZhRlRaSVB4aDJNR2JPR2Z2Y1FiUWtMencvY0hyZmJibThkSXllTm43dlJ1TlZCOHRLcXp6M1pZVHRYWThpODhmTUhXeVQzdENheFgyODZGdFZqUjFQaXJGTTlUczNmaFFDZ2YrcUowc2NqWFp3QUFBRHdWNjJWVW43YjhUWDNqZC81NWhTRFhhK0pXNitIWDdRa3VxeVVVbTVyNHRESWJuRHgzdGZKd0YzNjBTSWlYbVRtWTVWNzU3SGJKUGU4c2IvL3ErRzF3d08zdzdRaFFlTnR0RTJ3anFJdENXRlQxN0djM0h5SVpTTFNOSlpQMnk5T2ZCOWFWVHhxSFpjWG1ma2lsZzhKUm1ON1BtelF2M2R0ODJuamQ5dlZNWkpkMys2YVRGSkttV1htczBmMnphZEhHak8rUFM4Yk4relRoekxmOVZoVng4aHh3MmNQRHhpUG5ST2E2eGh5Rzh2NWw5WXhaTHJCNTgwemM5cTRYNDlqczZUV2xtdVdSVmpHa3hNazJRV2daK29halBjaUFRQUEwSXRydEt0b204eWRiVnVCb0hxSTVaSzJ1eVo5WEdmbTdZbE9qbzRhWHovWmR1bWlSOXhFeEJkN3cwVmJ4SWJMYmZ6TVl4UDlIVDFadiswWU40cjJxZ21IOUtFaC9yUE1uTVZoa2dGbUhZeGwxL1huVFcycldYM2ZQK3V4WlhwaSsxRm5TOE9WVXFhWk9XbnN1MC9qa1luZG1zRHg3TUQ3NUdEVjVqczY5TU9UODIwcXV2d2d6b3RIeHI3clk0d1ozeGsvNXJ1ZUUyYm02RUQ3N0c4TjJ6aHZIQ1Avc2NXKzErSnQ2MUk3cFpTSGx2YXNmdDJ5SDdZY0UxN0dac2t1TGZ2S3d4a2tWWEtCSkxzQTlFaDl3dWUxU0FBQUFQVEdNYXE2cko0NmZZamRKL0pXSmVJbkp4ano1a21RTHI5TW5meVp4R2tsQk5DdHM1c0Fxa2t1TDArd1g3YytkVDZOd3lTNy9MbUg5N3hhLys2WkdiRk1mbGtsd0V4Yko0RDNhTEtINzlaYWhlS3FaL3Zrc0I2M1g4VnhsZ2ZyeFRIM0IyTlZpMTh6ODY0SGNSckZZU3BEdFk2Um54cjJqYXN0WXJHclJYUzN4T1N6eG4xdHNXVzd0Q1N4WDJYbThHY0o5SFZmYWRrZVN4aHhraVM3QVBUbmd1WSszRGdEQUFEbzAzWGFLbUdrUmN1a3c0Zkc2OFJYY1pySkxpMFRrQTg3VnRKNXpDZlg3QmZ0MHdtT1hWZmY3Rk9EV0M1WE5JelRYWmFyaTZWOC90M3cybTJXZTVvZWNMeGNUNENaMTgvKzBMUEtMNTN2UXpVUjhhSGhPRDA2OEg2NTJnK2ovbm9WeTBvWXF3cHl3eFBkTC9mZHoxcmowcGNIUy85MWdNOVlkSEFPZElpRXVaWTI3U3o1dE1acWZvakc3eUNKZlhWZS83TUtXUzhiajY5OVRaYUVuNUxzQXRDUG14QVNYUUFBQVBybk90cVdBNWkwM0pDdnl6VE1ZL2RKZ1VlZkF1MnBscGovdm84dlZNdmRMK0x3eTBQUUQ5TStmcW42RlBjb2xrc3BET0owazFnMjFjVlkxaktadC9GWVhCTXhwa2RvazJFczd6R082L0hqdDlaalVWZGo2SjdlK3Zkb1QwcnRjcDljSlIvOUdxZWZ4TEp4WHo5QW56NEhoOWlPTHBJVkZudmVSMXJIeEU4bjNBZCtpN1k1b092NFFiSkxCd242cXJwd3NpUzdBQnovSWtpaUN3QUFRRCsxTG1IMDd3NXU2cytpYllMa3NhZEErM2FOZk5WQnZQWmxGdWVmVE1CMzlHVUpvN1hKck9mUm93bitBL3J6eEw3djJ5T1BHY05ZTHB2eEpqTnZTeW1USTMyUGFWL2ZPek5IclJWdzZuSHJWVzNyNFlYdGs5TURmTWJUTTRuVklmckcyVmZtMkdQaTNDRysreXd6WjdGN0JjUGhUOGFzbGdUOVJiUXZmd1ZISTlrRjRJZ2t1Z0FBQVBUMmV1MHZTMFBzNkUzOU9hWnhuRkN5U3pSV1R0bnpzaDJTWFRqV2VEU0k1VkljcjBKMW9aTlJxM08xTExQVDViaDZuNWt2SStMRkVaSzNabnVNOFN3emo3VmZqdXN4ZnFpM3M0RkQ5SlAvTzRFNHRKeEh6YytnSDN4b3ZMNTRHZDlQTW10Wnd1aWhMMG05c0l1L0NRSEFjVWgwQVFBQTZMV1haN0lkZ3pvaFI3di9Fd0lPTFROZlI4U1hXRTZxUzNRNVBUZlJuMm9MbzRqNDBrRUZyWXNlT3pQektqUC9pSWo3a09nQ2h6US9nMjJZTkw3KytqdGowakRha29nc1ljUkprK3dDY0p5TElva3VBQUFBL1haTzEyd3ZOU2VjbHN3Y1pPYm5XQzVESThubFJOV241WjlGZnhKZUJoSHgrUWdKTCtleVg0NGo0bzlvci93R1hPNHhZZEl5aG44bmliM2xtbVZXU3BscEdVNlpaQmVBdzE4VXZRdUpMZ0FBQUgyK2JodkhlVTB1aitwVG44QnBqRUdEaVBnY2xzMDZDejFOZUxtdi9Zek45OHY3V0ZaekFXanhvZkgxejcvNWMwdFN1Nm91bkR6SkxnQ0h2U2dheDNLTlpRQUFBUHJySEN1aGpEVXI5Tjlhb292S0VXZWtsTElvcFR5SmlMYzkrVXBYY2JoN2xQODRnLzF5N0RnS1J6YzhrK1BCTk5xV1pMcGVKYkhYS2wyN3htVVJFUSs2RmFkT3NndkE0UzZLUmlIN0h3QUFvTy9YYnNNNHoyb0tMeStrL2ZhWklQRFVIc0lCdkFtSkxtZXJsSElYRWI5RTJ6SVdYWGwxb09vdWUrdlBoMWlPcVg2R2U3clFqV25EYTRkbkZJZlc2aTdYcTNHODRUMGVhdVV4T0dsL0Z3S0EvYXMzU3orS0JBQUFRTys5T3RQdEdtYm1kU21sMTA5d2xsS21tZG55RnFQWTMxSWhFaERZcTNyLzZGRFZObWIxNS9kWVB0M3R2dFhoeHJsNVJOeGs1dHRZVmd0NUdjZVp4QjNVejMrLzU4KzU2dXQ3MXdvTGozbDNvUGFZcisyVDA0ajR3OTd5Mzdqc2FoSVIveGJDc3pwTzl2NWNkb3UrK2FiaDlTL3IySDNkOEI2V01PSXNTSFlCMlA4SjJLRGVNTEFPTGdBQVFQOWRuL0cydll6VEtGZSthTGlHZmhwN21Mak56R3ZYOVJ6QW13N2ZheHJMaWZQL1cvdHpSTVM4Smx1czkrK1IwQjllYlllN2lMaXIxVU91NnhoMnlQWjRHZnRQZGhuc2NZTDZlZU94NXJHeC82ckQ5cGpYZmZMUCt1Zlo2anQ4TCttbU1mSHpuTFFrcXl4cU5TWDZZOWJCUG4veXlTNmxsSGxtUGpSY2QxeGw1cnVHYzlOWktXV21PM0lPSkxzQTdOKzc4UFFYQUFCQTc5V0VodUVaYitKMVpnNi9uZWp1b1Zuc1BybTRyMjE4YmcvaEVQdG9CL3ZPYjZXVXlaYXZrOGgxWkhYU2NiWjJQQnJGOG43aXIvWFhmZDFidk1yTXdRR1dzdWg4Z3JwV1FycHUzRjhlMDFydGJSSEw2Z21URXpqMjl2bWNvR1ZNdlJYQ1hvMTFpOHljTjV4dlgyZm1iVmRqVm1aK2FUejNmOXVRVVBXaGNReHJxUVNucWd0bjQyOUNBTEEvOVVicFdDUUFBQUJPd3NzTDJNWlRxRnpUK3FScGw5VXhWaE9xcnUzWnE1cmMwSkowTWltbFBOa2gwU1hDUTFxOVUwcVpsbExlbDFKdWFydVdpSGdXeTRuN1NYUzdYTnNoMm45Y3g5SXV0WTcxbThSdzFQaitUMG9wZDlzbXV0Uks0YlNmRXd4VnJ1cWxhY05yQjlIUmNuKzFid3lQMVQ5cnRhdkZFZUsvaURPb2pnTXJrbDBBOXFSZXdOMkxCQUFBd01sY3cxMWZ3S2ErT29IditIdmo2OGQxNlltdXVMYm5FRVlOcjUyV1VtNGFYdityOFBmZnR3a3dFZkZMUk56RWNubWNGb2RLck9oc0xLMWovUGdBeDVwaHcvdmZORlJ6R2VueC8rMzM4OFkrL2s0VXorNDg3MDFINTNsZEpFZFBHMTgvT1VMOEh3NVF6UXNPeGpKR0FQdTlnSk9GRHdBQWNCckdGN0tkdzh3Y2xWS21QZjZPWFh5M2o1bjVwUFZtZm1iZWhVbEgrdTlEUXg4ZnhHVWsraDFFcmZLODZ5VHNkSnV4dVNZQlRDSmlrcG4zRGNleHF6ak1VLzZqekx4cldQSmp2YzkrYlAweXRhckN6ejZuWmV5ZjFxV3BkbVhwdkw5NmlOMnJlVnhsNW4xalFtQms1c2ZHc2ZKdGE5OC9zL1pzVFg1ck9zL3I2UHh1MWtIU3lHL1JVYVdhTFQ4VHpvWmtGNEQ5WE5pK0RqZkRBQUFBVHNuTEM5dldhVisvWENsbGtaa1AwVGFwTkl5SXo1bjVyR0VpWkJ3ZEw0a0VQL0d2aHRmT0cxNnJqM2ZycWlHbS8yb1ltMi9qTkpJMjMyVG1mTWZsdGxhSkxwK2pmZW1SM2k3aFllbTg3L29RYlFrQjQ4eU1YUk5lNnIzKzYzUHRjeWQrbm5lemJXSlpoK2QzSHpxSXhUd3pwM0c0dWFSWll5SWU5STVrRjREOVhKQzRVY0FsbUxqNEJnRGdUSzdqUnRFK2NUWTk0RmNleE82VkF5S1drejYzUFM5aC9pbmFKNWF1SXVLUE9oRXkzYUkvREdLNTdJSHJIVTdGMVM1alVCMzdYZ3RmcDFvbUVjZVorWGFYcFcvcTVQR3B4T2crTTU5R3hGYkhvZHBmN3pzNFhrZDBNRW45aUoyK1kxZFZhODVOS1dXV21mUEd0aC9YKy9aYkxTOVZLNEMwM3V1ZlN6RDQ3ajdZeFhuZTV6cHV2dDl3LzNyVDRYRnYwbUVzUmdlS3U2b3VuQjNKTGdEZGV4ZVdMK0o4emVvSitLVGVTQmtMQ1FBQVo2QzFxc3VrdFR6K051ck4raStOMTU3amlIamYxd1lwcFV3eTgwMjBUMm9PWXprUk1vbUkzMzQyMlZUak9vN2xSSWpyZWc3dDN3MnZmWldaa3gwU0IweXFkMi9hK1BxUHUxU2thbDF5NXdoeEdrZkVkV2ErcmNmUXhVKzI3U29pWGtWM0NZanp4NVl3cWxvU1FvZVorWHFUQ2ZodmprR2ZveTJaOVp5OWpmYWxiMFlSOGFXZUUzejRXU0xzV3ZXUFlRZmZYWUxCLzU3blBYU1F3QlQxZk8xZFpyNktaZldjVDkrMmF4MGZuOWN4cEt2enUwbFhTZVAxblBjUWMwcUxVR0dJTXlUWkJhQkQ5Y1RKT3NlY20xV0N5OE11VHhjQkFFRFByK05XQ1E0dFBoenlPNitWZjIvNTNpK2p4OGt1YTNIdHFuTHFPSlpQZGM5ak9iSDdiV0xCMDdBY01hZHJHTXVrcmhlUFhiZXZWU1FlQzl2ZXh1ZFo3SjZ3c0hWRnFnNFNsNDVWNVd0VlJldGRYY2JqOTIvKy9WOTFYQjUyL0xsdk4yekxXV08xbkhkMTZaeE5LazZNd3dPVWozbm9NRWFyYzRLSXI4bGU4N1crMXVYNXdDSzZxd0J5YnJwSVlGby9EcjZPaU5jSHFuTDFkZy85ZTkvSDVZZWVWM1dFblVoMkFlald2UkJ3QmhiMVF1OVRSRXdsdUFBQWNPYkdqYStmYjdORVRvZCthL3p1VjVsNTFmT3krdTlqbVpRejdQQTloMkdTbjM2YVJsdHkxMVVzS3hZOHhESnA0TnQ5ZXhRUnY0YUh0QTdoUTdSVjV4akdNbmxwSHNzSjBEOWpPUkcvYnJXYzNmUEd6NHFlSEFkR2NaaUV3M2twWmJMTi8yODhCcTBxVG55SS82MmdNNHhsb3VWMVNITFpwSjh1TXZNMnVyLy92dTkrOTVzRWd4KzI2YVR1SDZkV3pXaXloL3ZscmVmMW0zNEduQjNKTGdBZHljelgwZjJUQm5BbzAxamVESHV3aGl3QUFCZm1WZVByajNManVENXhQbzIyU1pwWEVYSFQxNFpabTlpeTFBcG5yNVF5N2VocDlPdVEwSEpzaytobU9iUmhMQ3NWN05PbExXbXg3VEZ2R3UwVDBNUGFIOTdZTlpySHlVbG12b3pUcWNRMmovNVgwZXZEUHZuSENYM2ZSWFJmMVdWMVh0OVNGZXd4TS9mOE9WZC9Fd0tBZHJYc3RRc1dUc1U4bGpjemJpUGlTVmw2VmtxNWM5SUxBTUNGWGN0ZFJmdERDNU1qYmtMcjhrblg5WHEydDBvcEQzRjVrN0ZjTG4zOUROUXFEcE1UK2JxZkxxaHAzdTlRaWUyREh0MDd0M0c4cGJlMi9xNnF1anc2WHM1aUQ4a2plL1IyajFYUTk1bEFyNm9MWjB1eUMwQTNYb2R5ay9UVFBKWTN5OTVHeExPSStHY3A1WmRTeW90U3ludkpMUUFBWExqV3FpNlRZMDVpMUtVWVdqNS9FS2RSQWVJbVRtZGlDMXFZakRvZmIwOWczRnBzdWFUUEtkdHBRcjBteDh4MTUvNm85ekp2VCtDclB0U0VYUjV2MDdzNGpXVFBoMUxLUGl2MTdDc0dpNUJNeXhtVDdBTFFxRDRGOTBva09MSjVMRXVydnE4WGZNOXF4WlpWWXN0ZEtXWHFhUUlBQVBqTHRWeHJva2Nmbm9pZk5MNytaZC9icWw3SFBBc0pMNXk1T3JFK0ZZbXphTXRGOUhpWnVPcnRoVFRISWlKdUd1Nkp2ZFdqZTdkL1RhTGZ5d1BOVG1ELzc1dWJHcmVMYmRNOVZnVjdNQ2ZBT1pQc0F0Qk9WUmNPZVZJOXJSZHpxMG90VDlhU1dwNlZVbTVyeFphcGNBRUF3RTlkTjE3THpYdnl4RzVySlloUlpnNzczbGoxU1c0VFIxeUNXeUU0RC9VWU1lbnAxNXZ0dVVKQlh5eGkrVURZcktFZEp5RUpyWS83MTIxUDk2L1c1S3BMYmM5Vll2T3NwMjM2NGtCdHVvK2wwMVNONDZ6OVhRZ0FtcW5xUXV2SjhtenQ5My9XMzgvclQwaGNBUUNBWGw3TGZlakRScFJTNXBrNWpZaFJZeXg2UDhGZVNubkl6R2NSOFRFOGRNS1pLcVhNTXZNbUl1NUY0eXphOHlZekl5TEdQZnBhaTRoNGNRSGhiMDUwV2ZNaUlyNDQ5dlJ5LzFyRThtSFVjK3R6bDlpZWkzcWU5emtpcm5yeXRlYXhUSFNaSHlnRzA4eWNSOFN3bzdlYzZZK2NPOGt1QUEweWMrd2loN1dMbWRuYVNmQy92L1AzL3oxcEZTNEFBRGpxdGR3dzJtK2lUM3EwU1IraUxkbGxIQ2RTVGFKT0Fxd1NYb1o2TStlb2xETEp6S2R4MkFTSjk3R3NlR1cvNnI0OSs1VHdzcHFNbjU5NTJHZlI0UVQxTjVQd2d3TnV3NmVJZUdNdittbmIzR2JtbnhIeExvNTduMTZpUzBmN1drUTh5Y3o3SG95WnM5cW1oNjdTODF2dHoxMjlGNXcxeVM0QWJWeHNYSlpaTEJOWi9veXZsVmZtRjNDREFBQUF6azFyVlplSFBsMEgxSW54bGttZVFXYU82MUlOdlZjclh6eUpaZVdMNndOKzlDSTg4TUxoK3ZsTlp2NDdEblB2NlgyZE1CNUV2eXFRYU05dXpXSzV2TXE1VDhhL2o0aTNYVTlRMTJQUG9SSmVackZjMG1VWTdqOXZlaDQwaTJXQ3dPZ0lYMkVhaDF2bTVwTEd6RS8xWE84WTUxNXZTeWwzUjlyOGgrZ20yV1ZSM3d2TzJ0K0VBR0EzbVRrS1Q3dWNzMmxFdkkzbG12QlB5dEtUVXNxTFVzcGRLV1ZTU3BsS2RBRUFnSk0wYm56OWh4NXUwNlR4OWM5UHFRRkxLWXRTeW90WUxpMng3K3V5UmIwMjlIUXNoKzduZDdXUEwvYlp0MHNwcThwT3Y0djYzdHZ6U1N6dk9SM2EremhlMVlscC9meDltOWR0dk4xWDBrR04zeTk3YnNPSHVoMkwrbmtTS0Rac20xTEtzM3E4UGxUTUZoRnhXMHA1SnRGbEwyMzZVUGUzOXdmODJHa3M1d0x1anJqZDgrZ21TZVZCditRU1NIWUIyTjFMSVRnYnF5em4yL2lhMlBKc0xhbEYrVWtBQURnVEhTeEhPNjgzMy91bU5SSGp1aTd2ZEZKS0tRK2xsRjlpT2JrMTM4TkhUQ0xpbDFPcGVzUDUyZU5rM3pTVzkwRFcrN1lud1BmZm5xc0orV2R4bUtTWDFSaDJlOHhKejVwUXRhOUVuM2tzazdaK09jVFM0VFVKNWRrZWpqdnpXRllIK2JaQ3lOU2VzMVg3VE9xWWVSdjdTNFpkeFBJaHlWOUtLZTlGZmUvNzIyMXQwMG5zTDVGcFZmbXFMMHRSZFpGWUwwbWJpeURaQldBSHlycWVoVmtzYnhROUthWDhzMTVJdnBmWUFnQUFaNisxZ2trZnE3cDA5UlRvOWFrMmFuMVE0WmRZVnNHWVJOdGt5RHkrVG1MZGVDcVdIdlR2OWNtK3Q5RTJnVHVKWmRXSVo5OVdxNjE5M1gyUnc3VHB0Q1pNUElubC9ha3U0ejZMNVVUL2FneWI5MlNiWjJ2YjNEcE9MOWI2OGxFU0V0ZU9PemZSbHBBeWk2K1ZwYjkzSEZkeGFiY3g4MzJINXdVcjA5cFd2OVNISkowZkhQQTh0NVJ5VTQrRE45Rk5jdVk4dnM0UFBPbFRZbk1kQzFyRzdwbDVEaTVtZkJBQytpb3pQOGR4MWxlOFZLc0xMRGJybitOWXJoZkphWm5IOHNiMHhQSkRuZTBMS1FvSGQ4dzFZNTJiT0RkeGZzS3A3OGVqaVBnc0VvNWJ3RVdOKzZPSStEV1cxWHl1NHZ0VmZhYXhuQVQ3dlo1L21CemdGUHIzVmUzZlQydS8vdDYxeWlwNVpiYld2MDNPOXJkTmgzV2N1dHBnM0ZwdjMwVkUvRmwvdjVjMmJqeVAvdUYxM1RmajlHcjdmN1NkODdxZHZSeW42OE9SMTNWYnJoeHplajF1cnZyYjZpZCswRTVSMjJsdit4Yk4rOXpWTitkNm94Lzg5M245bVVYRXYwOWgzOHZNLzhUdTFTaHZWQ1hrVXZ4ZENBQjJZZ21qMHpLSmlBK0hLR1Y2Z1JlSUFBQUF2VlN2QVYwSGNxNzllNVhFWWdtTjgyblRlU3duWXg4dWFKdlBacHl1aVJBVFBma2t4azNPWjU4N3kzTzl6THlPM1JOZEZtRlpRaTZJWkJlQTdVODBodUhKL2xPd2lPVzZsS3E0N005QUNBQUFBQUFBb0RPdkdsNzdvQW9SbDBTeUM4RDJyb1dnMTFaSkx1K2QxQUVBQUFBQUFLY2dNOGZSOXJEMWI2TElKWkhzQXJDOXAwTFFXNU9JZUt1U3k4RU1oUUFBQUFBQUFOclVSSmY3aHJlWTF1VzY0R0w4VFFnQXRqclpHSVRLTG4wMGo0aG5wWlFiaVM0SE5SUUNBQUFBQUFENHE4eTh5OHo3ekx4NjVQOE5NL00rMmhKZElpSStpRHFYUm1VWGdPMk1oS0IzSmhGeGE4bWlvL2lIRUFBQUFBQUF3SGVOSTJLY21ZdUltRWJFbjJ2LzlvOVl6amxkZGZBNTgxTEtSTGk1TkpKZEFMWmpDYU4rdVhFQ2QxUlhRZ0FZWndBQUFBRGdwMWFyQnV4cjVZQzNRc3dsa3V3Q3NKMlJFUFRDSWlKZWxGS21RbkZVUXlFQURuQWpBQUFBQUFENFBsVmR1RmgvRXdLQXpXVG1JRHhoM2dlTGlIZ20wYVVYaGtJQUhPajRDd0FBQUFEOEwxVmR1RmlTWFFBMk54S0NYbmhXU3BrSnczRmxwdjBCT0JTSnBnQUFBQUR3djFSMTRhSkpkZ0hZbk1tMjQ3dVI2TkliUXlFQWpEY0FBQUFBY0RRM1FzQWxrK3dDc0xtblFuQlU3MlVvMngrQWkvU3JFQUFBQUFEQVh6eVVVcWJDd0NXVDdBS3dPWlZkam1jZTFwMjBQd0RHR3dBQUFBQmdIcXE2Z0dRWGdFMWs1aUFpQmlKeE5EZWxsSVV3OUdwL01Qa01ITXBJQ0FBQUFBRGd2MTZZTXdISkxnQ2JNckYvUEZPbCtIcG5KQVRBSVdXbWNRY0FBQUFBbGc4SHo0UUJKTHNBYkVxeXkvRll2cWgvbmdzQmNHQWpJUUFBQUFEZ3d0MlVVaWJDQUV1U1hRQTJZd21qNDVpcDZ0SkxJeUVBRGt5U0hRQUFBQUNYYWhFUnp5UzZ3RjlKZGdIWXpGTWhPSXJmaEtCZk12TXFJb1lpQVJ6WVZXWWFld0FBQUFBNEZmT08zdWQ5UlB6aXdXRDRYNUpkQU9pekJ5SG9uWmRDQUJ6SldBZ0FBQUFBT0FXMUNzc3ZFWEVieTdtTytSWXZuOVhYL1ZKS3VTMmxMRVFVL3RmZmhRQmdJMWRDY0hBekozQzlOQllDNEVoZVJzU2RNQUFBQUJ4V3JTWlFSQUpnNi9GekhzdktMTzlYZjVlWm83WC9zdnI5SXBZSkxxR0NDMnhPc2d2QVpnWkNjSEJPNkhvbU02L3RDMXc0Q1hqSE5jek1zYldKQVFBQUFEaFYzeVN6VEVVRWRtY1pJNEJIWktiSi9lUDRVd2g2eHhKR0dKY3dEZ0VBQUFBQWNIU1NYUUFlWndtajQ1Z0xRWDlrNWpBaXJrVUNPTEpSWm82RkFRQUFBQURnc2tsMkFhQ3Zaa0xRSzIrRUFEQWVBUUFBQUFEUUI1SmRBT2lsVXNwQ0ZQcWhMdVUxRmdtZ0o0YVplU2NNQUFBQUFBQ1hTN0lMQVBDWTEwSUFFUkVoQ2E4LzNtU21aUVlCQUFBQUFDNlVaQmVBeDQyRWdFdVZtY093WkFpc1dGNnRYejdXeWxNQUFBQUFBRndZeVM0QXdNOUlkQUg2YWhnUkg0VUJBQUFBQU9EeVNIWUJBTDRyTTBjUk1SWUpvTWRHbVhrdkRBQUFBQUFBbDBXeUN3QzlsSmxYb25CMDc0UUF2aXFsVEVXaGw4WVNYZ0FBQUFBQUxvdGtGd0Q2YWlBRXg1T1pkeEVoNFFnNEZlUE12TTlNeDQ3bEdEN0l6S0ZJQUFBQUFBRG5TcklMQUgwMUVvTGpxRlYxM29nRWZOZENDSHBySEJHZkx6bkpJek9IdGNyTmw3QU1IUUFBQUFCd3hpUzdBTkJYdndyQjRkV3FDSllEZ1IrYkNVR3ZYVVhFSDVsNWZVbmpkbWFPTS9OemZFMXlVZUVHQUFBQUFEaHJmeGNDQUhwcUpBUkg4UzRzWHdTY3RrRkVmTXpNaDRpNExhWE16M0VqYTBMUDg0aTREc2t0QUFBQUFNQ0ZVZGtGNEhGeklUaUtRVjFPaHdQSnpOZGgyUXQ0ek85Q2NES3VJK0pMWnQ3VnFsV25Qa1lQTXZNNk0rOHo4ejhSOFRGVWNRRUFBQUFBTHBSa0Y0REh6WVhnYUY0SndXSFVDZ0h2UkFJNFEyOWltZlJ5bjVuREV4dWJyekx6ZFYyaVNJSUxBQUFBQUVBbDJRV0FQcnMraDZmeCs2NVcwTGtYQ2RqSVZBaE8waUNXU1NKZk12Tnpabzc3ZUh4WlMyNzVXS3UzL0JITFJNU1JKZ1FBQUFBQStPcnZRZ0JBancwaTRuVkUzQW5GZnRSRWw4K2hTZ0JzYWlFRUoyOVVmKzR6Y3hZUm55SmlXa3FaSG5qOEhVWEVNQ0orallpcmtOQUNBQUFBQUxBeHlTNEFqek94ZVZ5dk12TjlLVVU3ZEV5aUMyeXZsRExMVElFNEgxZjE1MDF0MTFuOStYZjlkUkVSczEyT1FYV01IZFNmcTRqNFIvMTFXSDhBQUFBQUFOaVJaQmVBUjVqWVBEclZYZlpBb2dzMG1ZZGtoWE8xU243NWRzeGNiL3Y1RDE0NzFDOEFBQUFBQUE1RHNnc0FwK0JOWmo2VVVtWkMwUzR6cnlQaVBpUzZ3SzdtSWFuaFVnMjFQUUFBQUFEQThmMU5DQUEyTWhlQ283dlBUTWtaalRKekhCRWZRNklMdFBoZENBQUFBQUFBNEhna3V3QnNaaTRFUjNjVkVlK0VZVGVaT2NqTSsxaFdkQUVjRXdBQUFBQUE0R1JaeGdoZ00zTWg2SVZ4WmtZcDVVWW9OcGVaVjdGTWNya1NEZWlFSmRVQUFBQUFBT0NJVkhZQjJNeS9oYUEzeHBuNVdoZzJVMlAxT1NTNlFHZEtLWkpkQUFBQUFBRGdpQ1M3QUd4bUxnUzk4cTR1eWNNUFpPWlZabjZPNWRKUEF4R0J6azJGQUFBQUFBQUFqa095QzhCbTVrTFFPK1BNL0ppWkVqbldaT1lnTSs4aTRvK0lHSWtJN0kzcUxnQUFBQUFBY0NTU1hRQTJVRXFaaWtJdlhVZkVINWs1RW9xSXpCeEh4SmVJZUNNYXNIZC9DZ0VBQUFBQUFCeUhaQmVBemMyRm9KZUdFZkU1TTk5ZGFwV1h6QnhuNXBlSXVBOUxGc0doVElVQUFBQUFBQUNPUTdJTHdPWXNXZEZ2cnlQaVM2MXVjdlpXeXhXdEpia01kUUU0bkZMS1BDSVdJZ0VBMEhSZHMxcWVkdDEvNnQrTkx6UW1vN3I5Ly9rbUxwOXJ2RHpnY0w3N3diZHRmckg3QVFBQWJFS3lDOERtTEZuUmY0T0l1TS9NczAxNnFUYys3eVBpUDdGY3JtaW8yZUZvcGtJQUFHZDNydDFpSklvYngvb3FNLytJWmVMKzlYZXU2NjdydGQwZm1YbDFJVEVaWk9ibmlQaGN0Ly9icEpaUmpaZWxmTTkzUC9pMnpWZjd3WmRMMlE4QUFHQWJrbDBBTmpjVmdwTXhqSzgzaE80eWMzaktHMU52Z0wyclZWdytSOFJZRTBNdi9DNEVBQURiWDkvVTY1cE5KdSt2WXJsczdkVUZ4T1JMTEJOYU5ybmUvYXppeDBYdEI4TllKamxkaXh3QUFId2wyUVZnYzVZeE9qM0RXRlkvK2JJcS8zc3FKWi9yVTZXckJKYy9ZcmxNMDFDVFFxOU1oUUFBWUt2cm5FRXNKL2kzdVM0YnhESzVZM2lrNy96NkFKVlU3cmVNU2NUeUFRL1ZQdmJUNXUvMjJlWjFQL2k0WTV1N0x3QUFBSlZrRjRBTmxWSVdJZUhsbEYzSDhnYmlmMm9wN0x1K2xINnU1YXBIOVR0OXpzeU01UTFnQ1M3UTcrUENMQ0xtSWdFQXNMRjNzZjBFZjlUWHZEbkN0ZHA5L2M3Ny9JeTcyS3k2eC9mY2tuSGIyUUFBSGtwSlJFRlU2MUtkWDV0L3JOZmkrN1Rya3NRRGJRNEFBRi85WFFnQXRqS0wzVzlDMFI5WDllZk5NcThrWnZYbnovcnJ2SlF5MzhjSDF3U2JRZjM4WCt1dlEwMENKMnNhbGhZREFOamtXbWpRZU40MHpzeTMrN3BXKzg1MzNYU0ptVll2VzY1dE0zTlVTcG5xWWFmUjVoM3NCNlBNdktxSjl3QUFjTkVrdXdCczUvY3dxWG1PVnNrdi8xV1RZT2J4dFdyRExDTCtiOHYzZlZwL0hZUWtLVGhYbnh3WEFBQTJjdDNSZTd6ZjU1ZXNTd1BkSCtJYXJuN1dzUEZ0bm9mbE5idG9oMjJYMTlyVnFJUFB1UTZWaHdFQVFMSUx3SlllUXNuWVN6S01yemNlUjhJQmZNZFVDQUFBTnI2K2F2V3ZmWDdCV29uell4d202U0dpbTRRYUQxYTB0Zms0ZGw5ZTYxanQ5YXVXQXdDQWlMOEpBY0RtU2ltTDhQUU1BSDg5TGp5SUJBREFRZXd0c2FNbVBSeXF1c2ZLVUpNZVQyYStqdVVEVFlNVCsrb0RyUWNBQUpKZEFIWXhGUUlBMW53U0FnQ0FnNWp2NDAwejgxMGNwNHJyUXBNZVIyYmV4N0tpQ3dBQWNLSWt1d0JzNzRNUUFMQm1LZ1FBQUkvcUlySGozMTErb2N3Y1pPYkhpSGg5cEpoMFVUbDJybXR0M2VaL1JNVDRTRitoaS9iNlhVc0NBSUJrRjRDdGxWSm00ZWtyQUw0ZUYrWWg0UVVBNERFUFBYbVBpRmdtUGNSeTJhTHJJNTVIVHFQOS9vTEVoODNiL0txMitkV0o3d2V1UFFBQUlDUzdBT3pxUVFnQVdLUHFGd0RBVDNTUUlEeXRENTgwcTBrUFgrSzRTUThyTGZjWDVxV1VpZDYxVVp1UDR2aUpMbEZLV1VURXBMSE5wMW9VQUFBa3V3RHM2cE1RQUxCR0VpUUF3T051ai9UYS84ck1jU3lUSGdZOWlzbmltREU1ZHoxczg3Y05iWDZqUlFFQVlFbXlDOEFPU2lrUFlTa2pBTDRlRnhZaDRRVUE0TEZ6cGxuc05sbC8wMFZWbDh4OEhSSDMwWitraDlWNTVMUFkvaDdEKzNwdmdwKzMrYnZhNW4zYUQrWU4rOEZVcXdJQXdKSmtGNERkVFlRQWdEV1dNZ0lBZUVSZGR1ZEZiSmJjc1lpSUYxMHMxVk1UWGQ3MU5DYXpXQ2E4ekRlTXlVMHBSVldYeDl2OFhVUzg3bW1iUDhUbVNVNnJOcDlvVlFBQStFcXlDOER1VEdvQzhGLzFodlZjSkFBQU5qcHYraVdXeTdsODcveHBYdi90bHc2cmx3eDZIcE5aUkR5SjVkSkVzeC9FNUgxRVBKSDBzTEdybnJmNWRJdjlRSnNEQU1BMy9pNEVBTHNwcGN3eWN4WTl2M2tDd0VGOWlJZzN3Z0FBOE9nMTlTSWk3aUxpTGpNSGE5ZldzL3B2bHhxVDl4SHgvcHVZek92U045Z1BBQUNBU3JJTFFKdmZvbWRyUHdOd1ZKT1E3QUlBc0pVNnFUOFZDVEhSNXRvY0FBQTJaUmtqZ0RZUHNkbjZ5Z0JjZ1ByRTdVUWtBQUFBQUFCZ2Z5UzdBRFNvVDkxTVJBS0FOUitFQUFBQUFBQUE5c2N5UmdEdGZvdUkxOElBUUVSRUtXV2FtZE9JR0lrR0FIQk1tWGtWRVlPSUdOYWZpSWhaTEN1VUxrb3BNMUZpaDM0MWlJaXIrc2YxMzBlc0xjTlRTcG1LRmozdXg2dnJ0Zlh4Y1ZISHlJaUllYTNjQ1FCQVQwbDJBV2hVU3BsbjVpUWl4cUlCUVBVMkpMc0FBQnRZUzBqWjFuZVRWVEp6SEJIUDY3bkk0SkhQamxnbUovd2VFUS83VG43SnpHRjhuVlRlMWs4bm50Y21ybi9rWHcxZi9hckdhcHQ3QmRNTlkvSnRza2huTWVtNGoxNUh4TlA2WFgvV3I5NTgwNy9tc1V3ZStCUVIweTYvN3dadFB1aHBtKzlsUDJqc1N6OGNVNDR3dG0wVnp5MzJzMVVmSG0wYS84eGNKYjhjWkl3RUFHQTdrbDBBdXZFaEpMc0FVTlhxTHZQWS9TWTJBSEE1M3NWdVNiTFRpSGdXOGQrSjNOY1I4U3EybjF3ZTFaODNtVG1MaU45S0taTTliZXM0MXBJaHR2UTJJdTUrOHUrZjk5eEdXNThTYnZqL3JocSsrMk14MlZsTnlCaEh4TXZHYzlwaC9ibXU3enVOaUE4ZDliRlRiZk85N0FlbGxFVm1mb3pkRTB6bUVmRkxoekg4bytHMW5YeVhtaEQxTW5hL1p6ZjRab3ljeDdMQzg2UXViUTRBd0JIOVRRZ0EydFduVGFZaUFjQ2F0MElBQU94Ym5jejlJNWFUNTRQR3Q3dUtpUHZNL0xKQjFRek9zejhOTXZNK0lyN1VQalhzK0NOR2EzM3NXc1E3OTlEdzJtR3R4dEpGUDdvKzRuWkVabzR5ODNNc0U2TEdIY1ozR010RXFDK1plVmNURFFFQU9CTEpMZ0RkTWFrSndIL1ZwMVdWdVFZQTlpWXpYOGR5TW5mWThWc1BJK0p6WnI0VDVZdnFUK05ZSnJtTUQvQnh3NGo0bUptZkpReDA2bFBqNjE5MjlEMmVONzcrdHgzNzhLQld0L2tjKzExV2RoRExaTEEvSkFZQ0FCeVBaQmVBanFqdUFzQjMzQW9CQUxBbm85aHRxWlZ0dkphTWNQN1dxcm5jUjN0MW9GMzY4WmV1S29wY3VsTEtRMFMwTEsvVFZiV2RsdmVabFZMbU8vVGo2MWdtYXgyeVl0QXdKQVlDQUJ5TlpCZUFidDBJQVFBckVpRUJnRE13aXVWa3JvU1hNMVRidGV1bFhyWTFxSDFNd2tzM0pnMnZIV2Jtc0xGUFhVZGIwdFNISFQ3emRVUjhqTU1uYTYyOHpzeVB4a2tBZ01PUzdBTFFvZnJreVVRa0FGaGptVHNBNE5SZHhmNnJ5SEJnYTRrdWZVZ3lrZkRTblErTnIyK3RqTks2aE5IRGx2MzR2aWZqMDNWSURBUUFPQ2pKTGdEZGV4dHRKV01CT0NPMXVzdEVKQUNBRXpldTFSTTRIKytpSDRrdUs0T0lVQjJqL2ZwakZoSHpocmQ0MmZnVlJnMnZmZGhtQ2FPYTZETHVVZml2WXJrY0dBQUFCeURaQmFCajlhTDhONUVBWU0xdFNJUUVBRTdmRzRrSTU2RXVOVFB1NFZjYlJzUWJMZFNzcGJyTDFhNUxHZFhLUE1PR3ovNjB4V2VOZTlxSHJ6TlRKU3dBZ0FPUTdBS3dCNldVdTJoN2lnYUE4em91TE1KeVJnREE2UnVFNVl4T1hrMVk2blAxaWRlN0psdndYNVBHMSsrNmxGRnJWWmlIRGZ2dzFRbjA0V3ZkRUFCZ3Z5UzdBT3pQalJBQXNGSktlUjhSTTVFQUFFN2NXQ0xDeVhzZHk4U2xQbFBkcGUzYVk5NTQ3ZkYweDllMUpIZzgxSWNFZnFvbWEzMDhnV2E0VndrTEFHQy9KTHNBN0VrcFpSb2JQcEVDd01XUUNBa0FuSU94RUp5MFY2ZlF4eVJWTld0Wnl1aDYyMFNORHBZdzJ2VDd2bW44bkVNWmhLUXRBSUM5a3V3Q3NGODNFYkVRQmdBaUlrb3BzN0NjRVFCdytsNEt3V25LekhGMFY5VmxGc3ZsY3Q2dS9VeWp1L3NnbG9GcE16bHcvRWNObjdVb3BUeHMwSCtIc2F4TTFLVjU3YmZUanZ0dmhDVzVBQUQyNnU5Q0FMQS9wWlJGWnQ3RWFaUlhCZUF3eDRhN3pId2VFVmVpQVFEc3lTeVdrN2IvdC9aM1Q2TnRNbnJkTURPdmFpSXZwK1Y1NCtzWEVmRmJSTHovMlpJem1UbUtaVldMVWVOM2ZhL0pkcjd1V0dUbVEreWVOUFE4dGt1WWFVbUMyN1F5Y2xlVlVxYXhyQ1R6M2FXVGFwV2FsN0dzWXRXYUhQWW1WUGdFQU5nTHlTNEFlMVpLZVdpOHVRREErYm1KaUQrRUFRRG8yQ1FpM3BaUzV0Lzd4N29zeVp2b3BqTENLSlpKTlgzeFdQVzhsbVNmU1VUOCswejZ5S2podGJPSWVQYXpKSmVWdXJUek5EUHZZL2RscjBhTmJmNHlkbC91NWx6YS9GUHNmajlxNDlmVjZpVXR5ZndmTnZ5TWNXTThGaEZ4ODFnVm1acklOOHZNdHhGeEgyMzM5TWFaZWJ2SmZnTUF3SFlrdXdBY3hrMjk2QjhLQlFDbGxGbG0za2JFTzlFQUFMcTY3aXlsVEI0NUIxbEV4RzFtL2huTENkd1dUNk5IVlRkS0tYYy8rL2ZNdkl2ZEV6MCsxT1NOazFhclZleGFwV0lSR3lhNmZOTXVON1hLeTNESDd6ejZVZXczYVBPbnNmdDltTE5vODFoV1RMbHY2RFBYbXl3dkZHM0pJUE1OWS8ycU1SYXJQanpib3Y4dUl1SkZZOUpXMU5lcVVnUUEwTEcvQ1FIQS90V0xZeVZMQVZnL05yeVB6Y3QxQXdEOHpPMWppUzdmbklkTUl1SzI4VE10eVhoNmhvMTliTmZLRkIrTzlKMWRjeXpiYk5Md0Zwc3VlM1dJSll4YUVtcTJUblQ1Sm80MzBWYko2cVhlQ0FEUVBja3VBQWRTbjFKNUt4SUFyTG1KaUxrd0FBQU5waldKZHR0cjFQZU41eUZEb1Q4NUxRbEt4MHJTMXMvYWZXcDQ3YU1KSm5WNXRIMHZZZFJhTGZudHJva3VhMW9TQks5cW5BQUE2SkJsakFBT3FKUnlsNW0vUnR2VEtBQ2N6M0Zoa1prdkl1Sno3RjVTSGdDNGJMODF2UFp0dEMxeGN0WEJCREtITTkzeGRZdUdxaTRSeXlXdk9ONDF4ME5tTG5hODNoaHNzSlJSNnhKR200d2hMeHMvNDMwSGNaeG01aXgyVCt5NWpyWXFPd0FBZkVPeUM4RGgzY1R5YVJRbG53R0lVc29zTTIrallhSUpBTGhZaTBjbW9SL3owSGdPSWxuM3RNNDdwN0Y3d3N0T012TXVJa1lOYnlGUnBoc1BFVEhlOGJYUDQrZVZmWjQzZks5TmsvWDZVcFhvVThOMytWVTNCQURvbG1RWGdBT3JUL0hmaEtmNEFmaDZiSmpVeWwrdlJRTUEyTUswZyt2VGxrb0Y4QmQxcVpaUkxKTlVyc015UkgzeFcreWU3REo2cEwxYktyczh0SDZIVFY2Ym1aODdpbU5MZnpiT0FnQjBUTElMd0JIVXAvaHZJdUtqYUhER0pySDd6VFM0eEdQRGJiMVpiTDhCQURiMVp3ZnZzUkJHSHBPWncxaE85QS9pcjVQMi80cXZDUUFqa2VydHRjWXNNK2V4VzdMRzhDZExsclVrdXN4S0tmTU4rbDVya2toZmtrenNId0FBSFpQc0FuQWtkYzNrbTdCc0JlZHBGaEczc2J5Uk5oSU8yTmh0TEcvR2V1b1BBTmpFdElQMytOMDVPK3UrcWM1eXBYK2NqWWZZdlpMa3kzcWQvNjJXWmFZMlhjSm9jRTc3VmlsRmdpRUFRRWYrSmdRQXgxTkttVVRFZTVIZ3pNd2o0bG05Z2ZOSk9HQ3I0OElpSXA3RjkyOGtBd0RBM21UbWRXWitqSWoveExJUzdldVE2SEpPUGpTODluckx2OS9FSVpZdzZoc1BOUUFBZEVpeUM4Q1JsVkp1WTduY0M1eURSVVM4V0h0U2FTb2tzUFZ4UWNJTEFMQXA1d3MwcTBrdVgyS1o0SEl0SW1kN25URnJHRE9HM3k0bmxKblhzWHZWbFFjVlRnQUFhQ1haQmFBSFNpazNJZUdGMDdlSVpVV1gyVnJmbnRXL0I3WTdMa2g0QVFBMlBXZUFuV1RtSURNL3h6TEpaU2dpRjZHbHVzdm9tejgvYjNndlZXQUJBR2dtMlFXZ0oyckN5NE5JY01KZXJDZTZySmtLRGV4MFhKRHdBZ0RBWHRRcUhWL0NNa1dYcHVXKzA4dHYvcnhyRmFCRnVQOEZBRUFISkxzQTlNdE5tTlRrUlB0dUtXWDZnMy83WFhoZ054SmVBQURvV2sxMCtSeTdMMEhENlY1ZnpHUDNCMUt1TW5PNDFvY3NZUVFBd0ZGSmRnSG9rYlZKellsb2NFSnVTaWsvNjdOVElZSk9qZzBTWGdBQWFKS1pnNURvY3VsYWxqSmFWWE41MmZBZWxqQUNBS0FUa2wwQWVxYVVzcWhMR2sxRWd4UHdXS0pMMUtXTlBMVUZqY2VHV0NhOFRFVURBSUFHOTNINFJCZEoyLzNTeFZKR095OWhWRXF4aEJFQUFKMzR1eEFBOUZNcDVTWXpJeUxHb2tGUFBacm9zdVpCWDRibTQ4SWlJcDVsNXIzOUNRQ0FiV1htS0haUFV0alVOSllQTy93Wnl5U1hhVVNzbGsyaUo5Y1ZtZm13WTErNHF2MW91T1BIVDNic1UyOGErdVBiSG9WZjRoY0FRSWNrdXdEMFdFMTRXVVRFYTlHZ1J4YXhUSFRaNW1tczM4UGtQSFI1YlBnekl0NkpCZ0FBVzNqVjBmczh4REtaWlJyTFNoMC9uY0N2RC9MUUw1OWk5OFNuKzRiUDNXVUpwWlpLc2NOU3lsUnpBd0NjSjhzWUFmUmNLZVUySW01RWdwNVlSTVN6SGNvT1Q0VU9PajAydkkvbHNrYVdDQU1BMkwvQm1XeEhhMVdYdHhIeHoxTEtpMUxLWFNsbCtsaWlDNzI5bnBnMFhFc01kM3pkZkpmKzB0akhoclVTRFFBQVowaXlDOEFKcURjaFRHcHliS3RFbDExdVRzMGpZaTZFME9teFlSb1JUMElwYkFDQWZiczY5UTNvWU1ML3BpYTQ3SEpmWW5TQ0lSdGVRTDkrT1BEbmZXaDQ3YlRodFc4Q0FJQ3paQmtqZ0JOUlNwbG01ck5ZbG91OUVoRU9iQmJMUkplV2hLdHBXTW9JdWo0MnpDUGlTV2ErQzB2ZUFRRHN5Njluc0EwdDl4RW05U0djUzRyZjA0aVluSG0vL25UZ2EvU1dlUDRldXlkTmpUSnozTmlISXpNSGpmdFJXRklKQUtCYmtsMEFUa2dwWmJhVzhISXRJaHpJUXl5ZjRtdXRMUFI3U0hhQmZSMGZialB6OTNwOEdJZ0lBRUNucmpQejZzU1g3R2s1Ui94OTF4ZG01akNPZC8raUpVRmluSmx2YTNMNXVWNURQR1RtUEE1VHhXYldHTXVIYUt2UThpNHpaNDM3Y091OXVJZXd4RE1BUUtjc1l3UndZa29waTFMS2k0aTRGUTBPNEcxZGo3MkxKYlFlaEJQMmVueDRpSWhmN0dzQUFIdnhPVE1mcmVxUW1ZUE05SERLVis5TytMdC9yTWs2bTdUNXFWYmdQZFMxUThzU1JsR1RWT1lOYnpHbysvQm9seGRuNWwyMEoyMTlNaHdBQUhSTHNndkFpU3FsdkkrSUo0MFgrL0FqaTRoNFVVcTU2N0RQTG1LNUhCS3d2MlBES2lIeVJkMlBBUUJZYXIwV0dVVEVINWw1bjVuWHF5U0l6QnhtNWlnelgyZm14NGo0VDBTOE9yUFlQZDNsUlprNWp0T3VTbnRWMi94ZGJlTlZtMS9WUDk5bDV1ZmE1cWU2blI4TzlEbGRKTlg4MXNFKy9MbnV3OE1OKy9BZ00rK2pyYXBNMUdzekR5VUFBSFJNc2d2QUNhdFB0anh4d1V6SFpoSHhyRmFKNk5wVWVPRWd4NGRWbFplSmFBQUFSRVIzaWNEamlQZ1lFVjh5TXlQaVMwUjhqbVVGazNPdDZES3VpU3NieTh4M3NWejI1Wmk2dVA0Y1JNVHIyc2FyTnYrai92bE43TDVNVWwrdUcxb3JwbXppb2FQbG9DWWQ3Y2ZqMnBiM21UbitOdkdsSnJpTWFoLytFdDBzeC96UVVjVmNBQURXU0hZQk9IR2U0cWRqazFnbXV1eXJBc3Z2UWd3SFBUN2NSTVN6VUZVSkFIQnVOTDN3RUxSdS8zMnRaREw0MFgrb1NRTGp6UHdTeXdTUlkzTU92Smw5VjNmNTFORSt2SWoyNmk3cnhyRk15UHFTYTJKWnFlZHo3Y09Eamo3cnJXNEdBTkE5eVM0QVo2SSt4ZjhrVk01Z042dGxpMjcyL0xTUi9nbUhQejVNU3lsUEl1STJKRVVDQUpmdGtxOUg1aDI4eDV1SStFOW1mcTVMKzl6Vm4zZHJ5L25jUjhTd0orZkJpN0QwOHlZbWUzNy9McXZHdmovQk5wMTBWTmtHQUlCdlNIWUJPQ09sbEhrcDVWbW84c0oycGhIeHk1NldMZnEyank3QzAzVndyR1BFKzFndWJmVFdNUUlBdUZDZkxuWEQ2MlI3VjlkaW8xaFd2WGhUZjE1SGY1ZnpzZXp6WWZ2R3R5WmRQbEJUMyt2MmhNSjdhdDhYQU9Da1NIWUJPRU0xYWVHWDJQL1RPWnkyUlVUY2xsS2VIWGp0NktuUXc5R09ENHRTeWwwOVJyd1hFUURnd2x6Nk5mS0hDOXptMzNUN28vYU56aFBNNmoydlU3bVdlWHZnK3kwQUFCZEZzZ3ZBbWFvVG1qY1I4U3hVMHVCL1BjU3ltc3N4YmhCOUVuN294VEhpTmxSNkFRQXU3QndvTGp2aFpYSnA1MzIxYXNsVTc5K29iM1J0c2E4S3N2VmFwdS8zdWg2T2RNOEZBT0JpU0hZQk9IT2xsR2twNVVsRTNJVEpUSlpyVzc4b3BidzQxdE5GcFpTcFpvRGVIQ1BtYTVWZTN0WXhndE5ueVRnQStMR0xUZlN0MTRDWFdPbmtScmZmcUc5MG5aaXk3eVdrK3Z4dzExeS9Bd0RZUDhrdUFCZWlsRElKVC9CZnNrVnQreWY3ZXJKcVMxTk5BcjA2Uml4S0tYZWxsRjlpZVZOV29zUnBtc1F5b2ZHZlBSbnJBYUNQNXozemlMaTk0TzIvdTdSenZkcm1iL1grUjNWZGhmWERudHQxRWYxTWVGblVjM0wzM2dBQTlreXlDOEFGV1UxbXhqTHBSU25WeXpHSlpaTExYWTl1dHZ5dVdhQzN4NHBKclFqMkpDNncxUDBKZW9obGd0SS9TeWsza2x3QVlMUHpuYmpzNVl4ZUhPa2NiM0hFTnIrNzhEYmY5THl5cXphYUg2S3FhdzhUWGhZUjhheVU0dUVCQUlBRGtPd0M4UC90M2RGeEdrY0FCdUQvWnZJZXA0TElGVml1UUZJRmppcHdxQ0JEQjNZRmNRbW9BNldEY3dmbkRsQUZ3UlZjSG5iUE1MRmtHWUhnVG56ZkRBTWpqUkRzTHR6ZTNyKzdKNmlHWHVZcG9aZUZFbm14MnBTUXk2ek9aQnZiYXdQR2Zhem82dmZIYnlsaENpR0tjVmpWWS9kMVNzRGx1Z2FVaEpJQVlMdSt6dXhVejRmcitlRlZEaHMrbVkzZ1BIQ3VUL3ZEZHJIUHJZeHVEL202YTFqLzJKTzZ1cFF4R0VFWEFJQURFWFlCT0dGTjB5enJBSi90alY2V05tVW0wV2huRTlVWlh0b2JUT2Q0c1dpYTVqcUo0TXZ4dnRlSHJlaStyZUFpNEFJQU8vZHhaam5SN1czcXVlSlZrdVV6LzZ0aFM1ZEZqcnpDWncxRlhNZEt0eit5cjYyTWJvNVF2L01EdGVuN2ZFb1poMWxxUWdBQWh5UHNBc0FRZXZtUWRlakZ5ZmswdFZtSFhOcUp2RjVnV3NlTDFUM0JsMFdFMS9hdFN4a3dIMVp2dWFwYjBaa2xDZ0Q3Nzk5OFNObStzVDNCOTk3VjkvNWM0WSt1bnFQZWp1a2NjQ01VNFp6MCs3TFp4MVpHM2JINnJYVXM1RzBPTjZGcldkdjRYQkFkQU9Ed2hGMEEyQndVV05XTGFhOHpqaVdHK1RtTEpLOG5GSElaZkZaMU1QbGp4bUpqcTZOaFVObXhZenVyckZkdXVVb0p0N3l0QStaV2J3R0F3L1JydXFacHJtcC9acEduWHlSZnBnUkg1aFByMCswNy9MRktNcTk5bW02em5ET1NrSFRUTkcydDg2c2Q2M3dJS1M5ZTBFZGkxMVVjYjBiUXBqK2tUT2lhNTNrbWRIVkpaazNUdko3WU9Bd0F3SXZ5aXlJQTRJSEJnVVdTUmQvMzUwbitTdkpIa2xkS1pqU1dLUU5JbnlaOEliUlZqZkNpamh0ZHlxQnZrcVR2Kzhza2wwa3VrcHc3aGlRcEYxR0djdnFTSTg1NkJlREJQdmJISGYvK0tXNXkzQ0I0ZThEMzNCN3BkVzdUbjVrbG1kVno0Y3ZhaDdsNDRFKzZKRi9yYSt1ZWVHNjJTN3RyOS9qZTJ5UnQzL2RuRzJNQVoxcyt6VzJTZitwNHdrUG1Xejd2OHBucnZLM2xPS3Y5MS9OSDZ2enpSdGsvdGM1SC9UbW83ZkZ1aDc4ZnhaYW50VzQrSmZsVVA4L3Y2MmY2L0lsUDJhVnM4M1NyRHc4QU1BNk5JZ0RnWi9WOS8yZVNkeW1EWGh6SGJaS2JqV1dncDk2bS9vMEw0TnY2V0dlcHdkUSs3MmNwQTh2bktSY1B6ckw5QlpRcGFWTXV6dHdOajV1bVdXb0pBTUJFKzIrLzV2dVF3TGZnaDlVdG1GamJ2c3c2MlBUN1BlY2xRejkrbFJKcTByNEJBRVpJMkFXQXB3d0tuS1VFWHQ3bjZUTmkrSGxkeW16UDI1ZDJvYlR2KzcrMW9hM2RQREpURXFiMlBYQ1pkZkRsVGNxQTh4UldnbGx1M080MkhuZTJIZ0lBQUFBQWVGN0NMZ0RzWkNQNDhpNWxPVmoyWTVuMUtpNld4d1ZPOVJnemhGNkdBRXh5LzZ6aVhZOC93L1pDbTRadENZYnY1T1h3YzJFV0FBQUFBSURqRW5ZQllHLzZ2bitWRW55NXFQZTJwOWxPbS9YK3owdkZBUUFBQUFBQUFOOFRkZ0hnMmRRWitaZXg2c3REbGxrSFhGb3JCUUFBQUFBQUFNRGpoRjBBT0ppTjhNdEZ5aFlVWnlkV0JGMUt1T1ZMU3JobHFWVUFBQUFBQUFEQWRvUmRBRGlhdXUzUkVJQjVreEorT1g4aGI2OU5XYm5sUzVLdWFacFdqUU1BQUFBQUFNRHVoRjBBR0oyNkFzeFpTdkRsOS9wNHVJMUpsMlJWNzcrbUJseXMyQUlBQUFBQUFBRFBSOWdGZ0VuWldBMG05ZjVWZlR5RVlqWnQvdjR4eTNyNy84L3U3dmw5MXpUTlNtMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWNIcitBM0xCZDRhdzhVeUxBQUFBQUVsRlRrU3VRbUNDXFxcIi8+PC9kZWZzPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMiAxNFxcXCI+PHBhdGggZD1cXFwiTS42NjcgN2EuNjY3LjY2NyAwIDAgMCAuNjY2LjY2Nmg1LjA2TDQuODYgOS4xOTNhLjY2Ny42NjcgMCAwIDAgLjIxNyAxLjA5My42NjguNjY4IDAgMCAwIC43My0uMTQ2bDIuNjY2LTIuNjY3YS42NjcuNjY3IDAgMCAwIC4xNC0uMjIuNjY3LjY2NyAwIDAgMCAwLS41MDcuNjY3LjY2NyAwIDAgMC0uMTQtLjIyTDUuODA3IDMuODZhLjY3LjY3IDAgMCAwLS45NDcuOTQ2bDEuNTMzIDEuNTI3aC01LjA2QS42NjcuNjY3IDAgMCAwIC42NjcgN1pNOS4zMzMuMzMzSDIuNjY3YTIgMiAwIDAgMC0yIDJ2MmEuNjY3LjY2NyAwIDEgMCAxLjMzMyAwdi0yYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N2g2LjY2NmEuNjY3LjY2NyAwIDAgMSAuNjY3LjY2N3Y5LjMzM2EuNjY2LjY2NiAwIDAgMS0uNjY3LjY2N0gyLjY2N0EuNjY2LjY2NiAwIDAgMSAyIDExLjY2NnYtMmEuNjY3LjY2NyAwIDAgMC0xLjMzMyAwdjJhMiAyIDAgMCAwIDIgMmg2LjY2NmEyIDIgMCAwIDAgMi0yVjIuMzMzYTIgMiAwIDAgMC0yLTJaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIj48ZyBjbGlwLXBhdGg9XFxcInVybCgjbWFnbmlmeWluZy1nbGFzc19zdmdfX2EpXFxcIj48cGF0aCBmaWxsPVxcXCIjQTZCNUJBXFxcIiBkPVxcXCJNMTIuOTE3IDExLjY2N2gtLjY1OWwtLjIzMy0uMjI1YTUuNDE3IDUuNDE3IDAgMCAwIDEuMjMzLTQuNDVjLS4zOTEtMi4zMTctMi4zMjUtNC4xNjctNC42NTgtNC40NUE1LjQyIDUuNDIgMCAwIDAgMi41NDIgOC42Yy4yODMgMi4zMzMgMi4xMzMgNC4yNjcgNC40NSA0LjY1OGE1LjQxNyA1LjQxNyAwIDAgMCA0LjQ1LTEuMjMzbC4yMjUuMjMzdi42NTlsMy41NDEgMy41NDFhLjg4Ljg4IDAgMCAwIDEuMjQyIDAgLjg4Ljg4IDAgMCAwIDAtMS4yNDFsLTMuNTMzLTMuNTVabS01IDBhMy43NDUgMy43NDUgMCAwIDEtMy43NS0zLjc1IDMuNzQ1IDMuNzQ1IDAgMCAxIDMuNzUtMy43NSAzLjc0NSAzLjc0NSAwIDAgMSAzLjc1IDMuNzUgMy43NDUgMy43NDUgMCAwIDEtMy43NSAzLjc1WlxcXCIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9XFxcIm1hZ25pZnlpbmctZ2xhc3Nfc3ZnX19hXFxcIj48cGF0aCBmaWxsPVxcXCIjZmZmXFxcIiBkPVxcXCJNMCAwaDIwdjIwSDB6XFxcIi8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDIwIDE2XFxcIj48cGF0aCBkPVxcXCJNMTcgMEgzYTMgMyAwIDAgMC0zIDN2MTBhMyAzIDAgMCAwIDMgM2gxNGEzIDMgMCAwIDAgMy0zVjNhMyAzIDAgMCAwLTMtM1ptLS40MSAyLTUuODggNS44OGExIDEgMCAwIDEtMS40MiAwTDMuNDEgMmgxMy4xOFpNMTggMTNhMSAxIDAgMCAxLTEgMUgzYTEgMSAwIDAgMS0xLTFWMy40MWw1Ljg4IDUuODhhMyAzIDAgMCAwIDQuMjQgMEwxOCAzLjQxVjEzWlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTMuOTU4IDBIMS45OTlDMS4yNCAwIC42NjYuMjQuNjY2IDFzLjU3NCAxIDEuMzMzIDFoMTJjLjc2IDAgMS4zMzQtLjI0IDEuMzM0LTFzLS42MTYtMS0xLjM3NS0xWlxcXCIgZmlsbD1cXFwiIzJBMkYzMFxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTUgMTRcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEyLjg0NiA3LjU4M2EuNTgzLjU4MyAwIDAgMC0uNjEyLS4wODIgNC42OTYgNC42OTYgMCAwIDEtMS45NjYuNDI2QTQuNzU0IDQuNzU0IDAgMCAxIDUuNTIgMy4yMDJhNS4wMSA1LjAxIDAgMCAxIC4xNDUtMS4xNjYuNTgzLjU4MyAwIDAgMC0uNzc1LS42NiA1LjkxNSA1LjkxNSAwIDEgMCA4LjE2NiA2LjgyLjU4My41ODMgMCAwIDAtLjIxLS42MTNabS01LjU0MSAzLjkwM2E0Ljc0OCA0Ljc0OCAwIDAgMS0yLjk1Mi04LjQ0MXYuMTU3YTUuOTIgNS45MiAwIDAgMCA3LjE0IDUuNzg3IDQuNzMxIDQuNzMxIDAgMCAxLTQuMTg4IDIuNTJ2LS4wMjNaXFxcIiBmaWxsPVxcXCIjQTY2RUU5XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTAuNjY3IDkuMzMzSDUuMzMzYS42NjcuNjY3IDAgMCAwIDAgMS4zMzNoNS4zMzRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptMC0yLjY2N2gtNGEuNjY3LjY2NyAwIDAgMCAwIDEuMzM0aDRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFptMi42NjYtNGgtMlYyQS42NjcuNjY3IDAgMSAwIDEwIDJ2LjY2Nkg4LjY2N1YyYS42NjcuNjY3IDAgMSAwLTEuMzM0IDB2LjY2Nkg2VjJhLjY2Ny42NjcgMCAwIDAtMS4zMzMgMHYuNjY2aC0yQS42NjcuNjY3IDAgMCAwIDIgMy4zMzN2OS4zMzNhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMy4zMzNhLjY2Ni42NjYgMCAwIDAtLjY2Ny0uNjY3Wm0tLjY2NiAxMGEuNjY3LjY2NyAwIDAgMS0uNjY3LjY2N0g0YS42NjYuNjY2IDAgMCAxLS42NjctLjY2N1Y0aDEuMzM0di42NjZhLjY2Ny42NjcgMCAxIDAgMS4zMzMgMFY0aDEuMzMzdi42NjZhLjY2Ny42NjcgMCAwIDAgMS4zMzQgMFY0SDEwdi42NjZhLjY2Ni42NjYgMCAxIDAgMS4zMzMgMFY0aDEuMzM0djguNjY2WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNOS4zMzQgNS4zMzNIMTBBLjY2Ny42NjcgMCAwIDAgMTAgNGgtLjY2NmEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWm0wIDIuNjY3SDEwYS42NjcuNjY3IDAgMCAwIDAtMS4zMzRoLS42NjZhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNFpNNiA1LjMzM2guNjY3YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNINmEuNjY3LjY2NyAwIDEgMCAwIDEuMzMzWk02IDhoLjY2N2EuNjY3LjY2NyAwIDEgMCAwLTEuMzM0SDZBLjY2Ny42NjcgMCAwIDAgNiA4Wm04IDUuMzMzaC0uNjY2VjJhLjY2Ni42NjYgMCAwIDAtLjY2Ny0uNjY3SDMuMzMzQS42NjcuNjY3IDAgMCAwIDIuNjY3IDJ2MTEuMzMzSDJhLjY2Ni42NjYgMCAxIDAgMCAxLjMzM2gxMmEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWm0tNS4zMzMgMEg3LjMzNHYtMi42NjdoMS4zMzN2Mi42NjdabTMuMzMzIDBoLTJWMTBhLjY2Ny42NjcgMCAwIDAtLjY2Ni0uNjY3SDYuNjY3QS42NjcuNjY3IDAgMCAwIDYgMTB2My4zMzNINFYyLjY2Nmg4djEwLjY2N1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTYgNi42NjZoLjY2N2EuNjY3LjY2NyAwIDAgMCAwLTEuMzMzSDZhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1pNNiA4YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNoNEEuNjY3LjY2NyAwIDAgMCAxMCA4SDZabTcuMzMzLTIuMDRhLjg4Ljg4IDAgMCAwLS4wNC0uMTh2LS4wNmEuNzE0LjcxNCAwIDAgMC0uMTI3LS4xODdsLTQtNGEuNzEzLjcxMyAwIDAgMC0uMTg2LS4xMjcuMjEzLjIxMyAwIDAgMC0uMDYgMCAuNTg3LjU4NyAwIDAgMC0uMjItLjA3M0g0LjY2N2EyIDIgMCAwIDAtMiAydjkuMzMzYTIgMiAwIDAgMCAyIDJoNi42NjZhMiAyIDAgMCAwIDItMlY1Ljk2Wm0tNC0yLjM1NCAxLjcyNyAxLjcyN0gxMGEuNjY3LjY2NyAwIDAgMS0uNjY3LS42Njd2LTEuMDZaTTEyIDEyLjY2NmEuNjY3LjY2NyAwIDAgMS0uNjY3LjY2N0g0LjY2NkEuNjY2LjY2NiAwIDAgMSA0IDEyLjY2NlYzLjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LS42NjdIOHYyYTIgMiAwIDAgMCAyIDJoMnY2Wm0tMi0ySDZBLjY2Ny42NjcgMCAwIDAgNiAxMmg0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTQgMTVcXFwiPjxwYXRoIGQ9XFxcIm0xMS43OSA2Ljg5Ni4wNTYuNDM3SDEzYS4xNjYuMTY2IDAgMCAxIC4xMTguMjg1bC4zNTMuMzUzLS4zNTMtLjM1M2EuMTY2LjE2NiAwIDAgMS0uMTE4LjA0OWgtMS4xNTRsLS4wNTUuNDM3YTQuODMzIDQuODMzIDAgMCAxLTQuMTg3IDQuMTg3bC0uNDM3LjA1NVYxMy41YS4xNjcuMTY3IDAgMCAxLS4wNS4xMThsLjM1NC4zNTMtLjM1My0uMzUzYS4xNjcuMTY3IDAgMCAxLS4yODUtLjExOHYtMS4xNTNsLS40MzctLjA1NkE0LjgzMyA0LjgzMyAwIDAgMSAyLjIxIDguMTA0bC0uMDU1LS40MzdIMWEuMTY3LjE2NyAwIDEgMSAwLS4zMzRoMS4xNTNsLjA1Ni0uNDM3QTQuODMzIDQuODMzIDAgMCAxIDYuMzk2IDIuNzFsLjQzNy0uMDU1VjEuNWEuMTY3LjE2NyAwIDAgMSAuMzM0IDB2MS4xNTNsLjQzNy4wNTZhNC44MzQgNC44MzQgMCAwIDEgNC4xODcgNC4xODdabS0uMzU3IDEuMzU0LjEtLjU4M2gtMS4yYS4xNjYuMTY2IDAgMSAxIDAtLjMzNGgxLjE5OWwtLjEtLjU4M0E0LjUgNC41IDAgMCAwIDcuNzUgMy4wNjdsLS41ODMtLjF2MS4yYS4xNjcuMTY3IDAgMCAxLS4wNS4xMThsLjMwNC4zMDMtLjMwMy0uMzAzYS4xNjcuMTY3IDAgMCAxLS4yODUtLjExOFYyLjk2OGwtLjU4My4xQTQuNSA0LjUgMCAwIDAgMi41NjcgNi43NWwtLjEuNTgzaDEuMmEuMTY3LjE2NyAwIDAgMSAuMTE4LjI4NWwuMzAzLjMwMy0uMzA0LS4zMDNhLjE2Ny4xNjcgMCAwIDEtLjExNy4wNDlIMi40NjhsLjEuNTgzYTQuNSA0LjUgMCAwIDAgMy42ODIgMy42ODNsLjU4My4xdi0xLjJhLjE2Ni4xNjYgMCAxIDEgLjMzNCAwdjEuMTk5bC41ODMtLjFhNC41IDQuNSAwIDAgMCAzLjY4My0zLjY4MlptLTQuNTI2LS44ODlhLjE2Ny4xNjcgMCAxIDEgLjE4Ni4yNzguMTY3LjE2NyAwIDAgMS0uMTg2LS4yNzhaXFxcIiBmaWxsPVxcXCJDdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiQ3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTAuNjY3IDkuMzMzSDUuMzMzYS42NjcuNjY3IDAgMCAwIDAgMS4zMzNoNS4zMzRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptMC0yLjY2N2gtNGEuNjY3LjY2NyAwIDAgMCAwIDEuMzM0aDRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFptMi42NjYtNGgtMlYyQS42NjcuNjY3IDAgMSAwIDEwIDJ2LjY2Nkg4LjY2N1YyYS42NjcuNjY3IDAgMSAwLTEuMzM0IDB2LjY2Nkg2VjJhLjY2Ny42NjcgMCAwIDAtMS4zMzMgMHYuNjY2aC0yQS42NjcuNjY3IDAgMCAwIDIgMy4zMzN2OS4zMzNhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMy4zMzNhLjY2Ni42NjYgMCAwIDAtLjY2Ny0uNjY3Wm0tLjY2NiAxMGEuNjY3LjY2NyAwIDAgMS0uNjY3LjY2N0g0YS42NjYuNjY2IDAgMCAxLS42NjctLjY2N1Y0aDEuMzM0di42NjZhLjY2Ny42NjcgMCAxIDAgMS4zMzMgMFY0aDEuMzMzdi42NjZhLjY2Ny42NjcgMCAwIDAgMS4zMzQgMFY0SDEwdi42NjZhLjY2Ni42NjYgMCAxIDAgMS4zMzMgMFY0aDEuMzM0djguNjY2WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNOCA0YS42NjcuNjY3IDAgMCAwLS42NjcuNjY2djYuNjY3YS42NjcuNjY3IDAgMSAwIDEuMzM0IDBWNC42NjZBLjY2Ny42NjcgMCAwIDAgOCA0Wk00LjY2NyA4QS42NjcuNjY3IDAgMCAwIDQgOC42NjZ2Mi42NjdhLjY2Ny42NjcgMCAxIDAgMS4zMzMgMFY4LjY2NkEuNjY3LjY2NyAwIDAgMCA0LjY2NyA4Wm02LjY2Ny0xLjMzNGEuNjY3LjY2NyAwIDAgMC0uNjY3LjY2N3Y0YS42NjcuNjY3IDAgMCAwIDEuMzMzIDB2LTRhLjY2Ny42NjcgMCAwIDAtLjY2Ni0uNjY3Wm0xLjMzMy01LjMzM0gzLjMzM2EyIDIgMCAwIDAtMiAydjkuMzMzYTIgMiAwIDAgMCAyIDJoOS4zMzRhMiAyIDAgMCAwIDItMlYzLjMzM2EyIDIgMCAwIDAtMi0yWm0uNjY3IDExLjMzM2EuNjY2LjY2NiAwIDAgMS0uNjY3LjY2N0gzLjMzM2EuNjY2LjY2NiAwIDAgMS0uNjY2LS42NjdWMy4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny0uNjY3aDkuMzMzYS42NjcuNjY3IDAgMCAxIC42NjcuNjY3djkuMzMzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNOCA0YS42NjcuNjY3IDAgMCAwLS42NjcuNjY2djYuNjY3YS42NjcuNjY3IDAgMSAwIDEuMzM0IDBWNC42NjZBLjY2Ny42NjcgMCAwIDAgOCA0Wk00LjY2NyA4QS42NjcuNjY3IDAgMCAwIDQgOC42NjZ2Mi42NjdhLjY2Ny42NjcgMCAxIDAgMS4zMzMgMFY4LjY2NkEuNjY3LjY2NyAwIDAgMCA0LjY2NyA4Wm02LjY2Ny0xLjMzNGEuNjY3LjY2NyAwIDAgMC0uNjY3LjY2N3Y0YS42NjcuNjY3IDAgMCAwIDEuMzMzIDB2LTRhLjY2Ny42NjcgMCAwIDAtLjY2Ni0uNjY3Wm0xLjMzMy01LjMzM0gzLjMzM2EyIDIgMCAwIDAtMiAydjkuMzMzYTIgMiAwIDAgMCAyIDJoOS4zMzRhMiAyIDAgMCAwIDItMlYzLjMzM2EyIDIgMCAwIDAtMi0yWm0uNjY3IDExLjMzM2EuNjY2LjY2NiAwIDAgMS0uNjY3LjY2N0gzLjMzM2EuNjY2LjY2NiAwIDAgMS0uNjY2LS42NjdWMy4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny0uNjY3aDkuMzMzYS42NjcuNjY3IDAgMCAxIC42NjcuNjY3djkuMzMzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNOCA0YS42NjcuNjY3IDAgMCAwLS42NjcuNjY2djYuNjY3YS42NjcuNjY3IDAgMSAwIDEuMzM0IDBWNC42NjZBLjY2Ny42NjcgMCAwIDAgOCA0Wk00LjY2NyA4QS42NjcuNjY3IDAgMCAwIDQgOC42NjZ2Mi42NjdhLjY2Ny42NjcgMCAxIDAgMS4zMzMgMFY4LjY2NkEuNjY3LjY2NyAwIDAgMCA0LjY2NyA4Wm02LjY2Ny0xLjMzNGEuNjY3LjY2NyAwIDAgMC0uNjY3LjY2N3Y0YS42NjcuNjY3IDAgMCAwIDEuMzMzIDB2LTRhLjY2Ny42NjcgMCAwIDAtLjY2Ni0uNjY3Wm0xLjMzMy01LjMzM0gzLjMzM2EyIDIgMCAwIDAtMiAydjkuMzMzYTIgMiAwIDAgMCAyIDJoOS4zMzRhMiAyIDAgMCAwIDItMlYzLjMzM2EyIDIgMCAwIDAtMi0yWm0uNjY3IDExLjMzM2EuNjY2LjY2NiAwIDAgMS0uNjY3LjY2N0gzLjMzM2EuNjY2LjY2NiAwIDAgMS0uNjY2LS42NjdWMy4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny0uNjY3aDkuMzMzYS42NjcuNjY3IDAgMCAxIC42NjcuNjY3djkuMzMzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNC42NjcgMTAuNjY2YTEgMSAwIDAgMCAxLTEgLjUxNC41MTQgMCAwIDAgMC0uMWwxLjg2LTEuODZoLjMwNkw4LjkwNyA4Ljc4di4wNTNhMSAxIDAgMSAwIDIgMFY4Ljc4bDIuNDI2LTIuNDQ3YTEgMSAwIDEgMC0xLTEgLjUyMi41MjIgMCAwIDAgMCAuMUw5LjkyNyA3Ljg0SDkuODJMOC42NjcgNi42NjZhMSAxIDAgMCAwLTIgMGwtMiAyYTEgMSAwIDAgMCAwIDJabTkgMi42NjdIMi4zMzNWMkEuNjY3LjY2NyAwIDEgMCAxIDJ2MTJhLjY2Ny42NjcgMCAwIDAgLjY2Ny42NjZoMTJhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTYgNi42NjZoLjY2N2EuNjY3LjY2NyAwIDAgMCAwLTEuMzMzSDZhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1pNNiA4YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNoNEEuNjY3LjY2NyAwIDAgMCAxMCA4SDZabTcuMzMzLTIuMDRhLjg4Ljg4IDAgMCAwLS4wNC0uMTh2LS4wNmEuNzE0LjcxNCAwIDAgMC0uMTI3LS4xODdsLTQtNGEuNzEzLjcxMyAwIDAgMC0uMTg2LS4xMjcuMjEzLjIxMyAwIDAgMC0uMDYgMCAuNTg3LjU4NyAwIDAgMC0uMjItLjA3M0g0LjY2N2EyIDIgMCAwIDAtMiAydjkuMzMzYTIgMiAwIDAgMCAyIDJoNi42NjZhMiAyIDAgMCAwIDItMlY1Ljk2Wm0tNC0yLjM1NCAxLjcyNyAxLjcyN0gxMGEuNjY3LjY2NyAwIDAgMS0uNjY3LS42Njd2LTEuMDZaTTEyIDEyLjY2NmEuNjY3LjY2NyAwIDAgMS0uNjY3LjY2N0g0LjY2NkEuNjY2LjY2NiAwIDAgMSA0IDEyLjY2NlYzLjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LS42NjdIOHYyYTIgMiAwIDAgMCAyIDJoMnY2Wm0tMi0ySDZBLjY2Ny42NjcgMCAwIDAgNiAxMmg0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiPjxwYXRoIGQ9XFxcIk0xMiAxNGExIDEgMCAxIDAtMS0xIDEgMSAwIDAgMCAxIDFabTUgMGExIDEgMCAxIDAtMS0xIDEgMSAwIDAgMCAxIDFabS01IDRhMSAxIDAgMSAwLTEtMSAxIDEgMCAwIDAgMSAxWm01IDBhMSAxIDAgMSAwLTEtMSAxIDEgMCAwIDAgMSAxWk03IDE0YTEgMSAwIDEgMC0xLTEgMSAxIDAgMCAwIDEgMVpNMTkgNGgtMVYzYTEgMSAwIDAgMC0yIDB2MUg4VjNhMSAxIDAgMCAwLTIgMHYxSDVhMyAzIDAgMCAwLTMgM3YxMmEzIDMgMCAwIDAgMyAzaDE0YTMgMyAwIDAgMCAzLTNWN2EzIDMgMCAwIDAtMy0zWm0xIDE1YTEgMSAwIDAgMS0xIDFINWExIDEgMCAwIDEtMS0xdi05aDE2Wm0wLTExSDRWN2ExIDEgMCAwIDEgMS0xaDE0YTEgMSAwIDAgMSAxIDFaTTcgMThhMSAxIDAgMSAwLTEtMSAxIDEgMCAwIDAgMSAxWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDEyIDE1XFxcIj48cGF0aCBkPVxcXCJtNi4xNCAxMC43NDIuMDIuMDU4LjAwNy4wMXYuMDM2YS4wNi4wNiAwIDAgMS0uMDA2LjAyN2wtLjAxLjAyMi0uMDA4LjAyMWEuMS4xIDAgMCAxLS4wNi4wNmwtLjAyMi4wMDgtLjAyMS4wMWEuMDYuMDYgMCAwIDEtLjAyNy4wMDZoLS4wMDZhLjE2Ni4xNjYgMCAwIDEtLjEwNi0uMDQuMjY2LjI2NiAwIDAgMS0uMDQtLjA2NmwtLjAwNC0uMDEtLjAwNS0uMDFhLjA2LjA2IDAgMCAxLS4wMDUtLjAyOHYtLjAyM2wtLjAwMS0uMDIzLS4wMDEtLjAxOC4wMDMtLjAwNy4wMTItLjAzM2EuNTc2LjU3NiAwIDAgMSAuMDIzLS4wMy4xNjYuMTY2IDAgMCAxIC4wNDQtLjAyNmwuMDE0LS4wMDVhLjE2Ny4xNjcgMCAwIDEgLjA5Ni0uMDFsLjA5NC0uNDkxLS4wOTQuNDlhLjE2Ni4xNjYgMCAwIDEgLjA3Ny4wMzhjLjAwOS4wMS4wMTguMDIyLjAyNi4wMzRabS42OTMtOS4zMzUgMy45NjMgMy45NjMuMDIzLjA3YS4zNy4zNyAwIDAgMSAuMDE0LjA1NHY2LjY3M2ExLjUgMS41IDAgMCAxLTEuNSAxLjVIMi42NjdhMS41IDEuNSAwIDAgMS0xLjA2MS0uNDRsLS4zNDguMzQ4LjM0OC0uMzQ4YTEuNSAxLjUgMCAwIDEtLjQ0LTEuMDZWMi44MzNhMS41IDEuNSAwIDAgMSAxLjUtMS41aDMuOTlsLjAxNS4wMDcuMTE2LjA2N2guMDQ2Wm0uODU0IDEuMzQ2TDYuODMzIDEuOXYyLjI2N0ExLjE2NyAxLjE2NyAwIDAgMCA4IDUuMzMzaDIuMjY3bC0uODUzLS44NTMtMS43MjctMS43MjdaTTYuNSAyLjE2N3YtLjVIMi42NjdBMS4xNjcgMS4xNjcgMCAwIDAgMS41IDIuODMzdjkuMzM0YTEuMTY3IDEuMTY3IDAgMCAwIDEuMTY3IDEuMTY2aDYuNjY2YTEuMTY3IDEuMTY3IDAgMCAwIDEuMTY3LTEuMTY2di02LjVIOGExLjUgMS41IDAgMCAxLTEuNS0xLjV2LTJabS0uNjE4IDUuMjE1YS4xNjcuMTY3IDAgMCAxIC4yODUuMTE4djEuMzMzYS4xNjcuMTY3IDAgMCAxLS4zMzQgMFY3LjVjMC0uMDQ0LjAxOC0uMDg3LjA1LS4xMThaXFxcIiBmaWxsPVxcXCJDdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiQ3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDEyIDE1XFxcIj48cGF0aCBkPVxcXCJtNi4xNCAxMC43NDIuMDIuMDU4LjAwNy4wMXYuMDM2YS4wNi4wNiAwIDAgMS0uMDA2LjAyN2wtLjAxLjAyMi0uMDA4LjAyMWEuMS4xIDAgMCAxLS4wNi4wNmwtLjAyMi4wMDgtLjAyMS4wMWEuMDYuMDYgMCAwIDEtLjAyNy4wMDZoLS4wMDZhLjE2Ni4xNjYgMCAwIDEtLjEwNi0uMDQuMjY2LjI2NiAwIDAgMS0uMDQtLjA2NmwtLjAwNC0uMDEtLjAwNS0uMDFhLjA2LjA2IDAgMCAxLS4wMDUtLjAyOHYtLjAyM2wtLjAwMS0uMDIzLS4wMDEtLjAxOC4wMDMtLjAwNy4wMTItLjAzM2EuNTc2LjU3NiAwIDAgMSAuMDIzLS4wMy4xNjYuMTY2IDAgMCAxIC4wNDQtLjAyNmwuMDE0LS4wMDVhLjE2Ny4xNjcgMCAwIDEgLjA5Ni0uMDFsLjA5NC0uNDkxLS4wOTQuNDlhLjE2Ni4xNjYgMCAwIDEgLjA3Ny4wMzhjLjAwOS4wMS4wMTguMDIyLjAyNi4wMzRabS42OTMtOS4zMzUgMy45NjMgMy45NjMuMDIzLjA3YS4zNy4zNyAwIDAgMSAuMDE0LjA1NHY2LjY3M2ExLjUgMS41IDAgMCAxLTEuNSAxLjVIMi42NjdhMS41IDEuNSAwIDAgMS0xLjA2MS0uNDRsLS4zNDguMzQ4LjM0OC0uMzQ4YTEuNSAxLjUgMCAwIDEtLjQ0LTEuMDZWMi44MzNhMS41IDEuNSAwIDAgMSAxLjUtMS41aDMuOTlsLjAxNS4wMDcuMTE2LjA2N2guMDQ2Wm0uODU0IDEuMzQ2TDYuODMzIDEuOXYyLjI2N0ExLjE2NyAxLjE2NyAwIDAgMCA4IDUuMzMzaDIuMjY3bC0uODUzLS44NTMtMS43MjctMS43MjdaTTYuNSAyLjE2N3YtLjVIMi42NjdBMS4xNjcgMS4xNjcgMCAwIDAgMS41IDIuODMzdjkuMzM0YTEuMTY3IDEuMTY3IDAgMCAwIDEuMTY3IDEuMTY2aDYuNjY2YTEuMTY3IDEuMTY3IDAgMCAwIDEuMTY3LTEuMTY2di02LjVIOGExLjUgMS41IDAgMCAxLTEuNS0xLjV2LTJabS0uNjE4IDUuMjE1YS4xNjcuMTY3IDAgMCAxIC4yODUuMTE4djEuMzMzYS4xNjcuMTY3IDAgMCAxLS4zMzQgMFY3LjVjMC0uMDQ0LjAxOC0uMDg3LjA1LS4xMThaXFxcIiBmaWxsPVxcXCJDdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiQ3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTAuNjY3IDkuMzMzSDUuMzMzYS42NjcuNjY3IDAgMCAwIDAgMS4zMzNoNS4zMzRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptMC0yLjY2N2gtNGEuNjY3LjY2NyAwIDAgMCAwIDEuMzM0aDRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFptMi42NjYtNGgtMlYyQS42NjcuNjY3IDAgMSAwIDEwIDJ2LjY2Nkg4LjY2N1YyYS42NjcuNjY3IDAgMSAwLTEuMzM0IDB2LjY2Nkg2VjJhLjY2Ny42NjcgMCAwIDAtMS4zMzMgMHYuNjY2aC0yQS42NjcuNjY3IDAgMCAwIDIgMy4zMzN2OS4zMzNhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMy4zMzNhLjY2Ni42NjYgMCAwIDAtLjY2Ny0uNjY3Wm0tLjY2NiAxMGEuNjY3LjY2NyAwIDAgMS0uNjY3LjY2N0g0YS42NjYuNjY2IDAgMCAxLS42NjctLjY2N1Y0aDEuMzM0di42NjZhLjY2Ny42NjcgMCAxIDAgMS4zMzMgMFY0aDEuMzMzdi42NjZhLjY2Ny42NjcgMCAwIDAgMS4zMzQgMFY0SDEwdi42NjZhLjY2Ni42NjYgMCAxIDAgMS4zMzMgMFY0aDEuMzM0djguNjY2WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTAuNjY3IDkuMzMzSDUuMzMzYS42NjcuNjY3IDAgMCAwIDAgMS4zMzNoNS4zMzRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptMC0yLjY2N2gtNGEuNjY3LjY2NyAwIDAgMCAwIDEuMzM0aDRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFptMi42NjYtNGgtMlYyQS42NjcuNjY3IDAgMSAwIDEwIDJ2LjY2Nkg4LjY2N1YyYS42NjcuNjY3IDAgMSAwLTEuMzM0IDB2LjY2Nkg2VjJhLjY2Ny42NjcgMCAwIDAtMS4zMzMgMHYuNjY2aC0yQS42NjcuNjY3IDAgMCAwIDIgMy4zMzN2OS4zMzNhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMy4zMzNhLjY2Ni42NjYgMCAwIDAtLjY2Ny0uNjY3Wm0tLjY2NiAxMGEuNjY3LjY2NyAwIDAgMS0uNjY3LjY2N0g0YS42NjYuNjY2IDAgMCAxLS42NjctLjY2N1Y0aDEuMzM0di42NjZhLjY2Ny42NjcgMCAxIDAgMS4zMzMgMFY0aDEuMzMzdi42NjZhLjY2Ny42NjcgMCAwIDAgMS4zMzQgMFY0SDEwdi42NjZhLjY2Ni42NjYgMCAxIDAgMS4zMzMgMFY0aDEuMzM0djguNjY2WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTIuOTYgOC42NjZjLS4xNDcgMC0uMy0uMDQ2LS40NDctLjA4YTYuMjkgNi4yOSAwIDAgMS0uODczLS4yNiAxLjMzMyAxLjMzMyAwIDAgMC0xLjY1My42NjdsLS4xNDcuM0E4LjEyIDguMTIgMCAwIDEgOC4wNjcgNy45NmE4LjEyIDguMTIgMCAwIDEtMS4zMzQtMS43NzRMNy4wMTMgNmExLjMzMyAxLjMzMyAwIDAgMCAuNjY3LTEuNjU0IDYuODg3IDYuODg3IDAgMCAxLS4yNi0uODczYy0uMDMzLS4xNDctLjA2LS4zLS4wOC0uNDUzYTIgMiAwIDAgMC0yLTEuNjZoLTJhMiAyIDAgMCAwLTIgMi4yNzMgMTIuNjY3IDEyLjY2NyAwIDAgMCAxMS4wMTMgMTAuOTczaC4yNTRhMiAyIDAgMCAwIDEuODI3LTEuMTg1IDIgMiAwIDAgMCAuMTczLS44MjF2LTJhMiAyIDAgMCAwLTEuNjQ3LTEuOTM0Wm0uMzMzIDRhLjY2Ni42NjYgMCAwIDEtLjQ4Mi42NDEuNzA3LjcwNyAwIDAgMS0uMjkuMDI2QTExLjMzMyAxMS4zMzMgMCAwIDEgMi43MTIgMy40OGEuNzI3LjcyNyAwIDAgMSAuMTY3LS41NDcuNjY3LjY2NyAwIDAgMSAuNS0uMjI3aDJhLjY2Ny42NjcgMCAwIDEgLjY2Ny41MjcgNy40MTQgNy40MTQgMCAwIDAgLjQwNyAxLjU3M2wtLjkzNC40MzRhLjY2Ny42NjcgMCAwIDAtLjMyNy44ODYgOS42NiA5LjY2IDAgMCAwIDQuNjY3IDQuNjY3LjY2Ni42NjYgMCAwIDAgLjUwNyAwIC42NjUuNjY1IDAgMCAwIC4zOC0uMzQ3bC40MTMtLjkzM2MuMzQ1LjEyMy42OTcuMjI2IDEuMDUzLjMwNy4xNzguMDQuMzU4LjA3My41NC4xYS42NjcuNjY3IDAgMCAxIC41MjcuNjY2bC4wMTMgMi4wOFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNSAxNVxcXCI+PHBhdGggZD1cXFwiTTEwLjkxNyA5LjY2NmgtLjY1OWwtLjIzMy0uMjI1YTUuNDE3IDUuNDE3IDAgMCAwIDEuMjMzLTQuNDVDMTAuODY3IDIuNjc1IDguOTMzLjgyNSA2LjYuNTQxQTUuNDIgNS40MiAwIDAgMCAuNTQyIDYuNmMuMjgzIDIuMzMzIDIuMTMzIDQuMjY2IDQuNDUgNC42NThhNS40MTcgNS40MTcgMCAwIDAgNC40NS0xLjIzM2wuMjI1LjIzM3YuNjU4bDMuNTQxIDMuNTQyYS44OC44OCAwIDAgMCAxLjI0MiAwIC44OC44OCAwIDAgMCAwLTEuMjQybC0zLjUzMy0zLjU1Wm0tNSAwYTMuNzQ1IDMuNzQ1IDAgMCAxLTMuNzUtMy43NSAzLjc0NSAzLjc0NSAwIDAgMSAzLjc1LTMuNzUgMy43NDUgMy43NDUgMCAwIDEgMy43NSAzLjc1IDMuNzQ1IDMuNzQ1IDAgMCAxLTMuNzUgMy43NVpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PG1hc2sgaWQ9XFxcInBlcmlvZC1pY29uX3N2Z19fYVxcXCIgZmlsbD1cXFwiI2ZmZlxcXCI+PHBhdGggZD1cXFwiTTggOS4zMzNBLjY2Ny42NjcgMCAxIDAgOCA4YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNabTMuMzMzIDBhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNC42NjcuNjY3IDAgMCAwIDAgMS4zMzRaTTggMTJhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNEEuNjY3LjY2NyAwIDAgMCA4IDEyWm0zLjMzMyAwYS42NjcuNjY3IDAgMSAwIDAtMS4zMzUuNjY3LjY2NyAwIDAgMCAwIDEuMzM1Wk00LjY2NyA5LjMzM2EuNjY3LjY2NyAwIDEgMCAwLTEuMzMzLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptOC02LjY2NkgxMlYyYS42NjcuNjY3IDAgMSAwLTEuMzMzIDB2LjY2N0g1LjMzM1YyQS42NjcuNjY3IDAgMSAwIDQgMnYuNjY3aC0uNjY3YTIgMiAwIDAgMC0yIDJ2OGEyIDIgMCAwIDAgMiAyaDkuMzM0YTIgMiAwIDAgMCAyLTJ2LThhMiAyIDAgMCAwLTItMlptLjY2NiAxMGEuNjY3LjY2NyAwIDAgMS0uNjY2LjY2NkgzLjMzM2EuNjY3LjY2NyAwIDAgMS0uNjY2LS42NjZ2LTZoMTAuNjY2djZabTAtNy4zMzRIMi42Njd2LS42NjZBLjY2Ny42NjcgMCAwIDEgMy4zMzMgNGg5LjMzNGEuNjY3LjY2NyAwIDAgMSAuNjY2LjY2N3YuNjY2Wk00LjY2NyAxMmEuNjY3LjY2NyAwIDEgMCAwLTEuMzM0LjY2Ny42NjcgMCAwIDAgMCAxLjMzNFpcXFwiLz48L21hc2s+PHBhdGggZmlsbD1cXFwiI2ZmZlxcXCIgc3Ryb2tlPVxcXCIjMTU1MzY2XFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuMzMzXFxcIiBkPVxcXCJNOCA5LjMzM0EuNjY3LjY2NyAwIDEgMCA4IDhhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptMy4zMzMgMGEuNjY3LjY2NyAwIDEgMCAwLTEuMzM0LjY2Ny42NjcgMCAwIDAgMCAxLjMzNFpNOCAxMmEuNjY3LjY2NyAwIDEgMCAwLTEuMzM0QS42NjcuNjY3IDAgMCAwIDggMTJabTMuMzMzIDBhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNS42NjcuNjY3IDAgMCAwIDAgMS4zMzVaTTQuNjY3IDkuMzMzYS42NjcuNjY3IDAgMSAwIDAtMS4zMzMuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWm04LTYuNjY2SDEyVjJhLjY2Ny42NjcgMCAxIDAtMS4zMzMgMHYuNjY3SDUuMzMzVjJBLjY2Ny42NjcgMCAxIDAgNCAydi42NjdoLS42NjdhMiAyIDAgMCAwLTIgMnY4YTIgMiAwIDAgMCAyIDJoOS4zMzRhMiAyIDAgMCAwIDItMnYtOGEyIDIgMCAwIDAtMi0yWm0uNjY2IDEwYS42NjcuNjY3IDAgMCAxLS42NjYuNjY2SDMuMzMzYS42NjcuNjY3IDAgMCAxLS42NjYtLjY2NnYtNmgxMC42NjZ2NlptMC03LjMzNEgyLjY2N3YtLjY2NkEuNjY3LjY2NyAwIDAgMSAzLjMzMyA0aDkuMzM0YS42NjcuNjY3IDAgMCAxIC42NjYuNjY3di42NjZaTTQuNjY3IDEyYS42NjcuNjY3IDAgMSAwIDAtMS4zMzQuNjY3LjY2NyAwIDAgMCAwIDEuMzM0WlxcXCIgbWFzaz1cXFwidXJsKCNwZXJpb2QtaWNvbl9zdmdfX2EpXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48cGF0aCBmaWxsPVxcXCIjZmZmXFxcIiBzdHJva2U9XFxcIiNmZmZcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIgZD1cXFwiTTguMzMzIDcuMzMzdi4zMzRoMi4zMzRhLjMzMy4zMzMgMCAxIDEgMCAuNjY2SDguMzMzdjIuMzM0YS4zMzMuMzMzIDAgMSAxLS42NjYgMFY4LjMzM0g1LjMzM2EuMzMzLjMzMyAwIDAgMSAwLS42NjZoMi4zMzRWNS4zMzNhLjMzMy4zMzMgMCAwIDEgLjY2NiAwdjJaTTQuNDgxIDIuNzM0YTYuMzMzIDYuMzMzIDAgMSAxIDcuMDM4IDEwLjUzMkE2LjMzMyA2LjMzMyAwIDAgMSA0LjQ4IDIuNzM0Wm0uMzcgOS45NzhhNS42NjYgNS42NjYgMCAxIDAgNi4yOTctOS40MjMgNS42NjYgNS42NjYgMCAwIDAtNi4yOTYgOS40MjNaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48cGF0aCBmaWxsPVxcXCIjZmZmXFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgZD1cXFwiTTguMTY3IDcuMzM0di41aDQuNWEuMTY3LjE2NyAwIDEgMSAwIC4zMzNoLTQuNXY0LjVhLjE2Ni4xNjYgMCAxIDEtLjMzNCAwdi00LjVoLTQuNWEuMTY3LjE2NyAwIDAgMSAwLS4zMzNoNC41di00LjVhLjE2Ny4xNjcgMCAxIDEgLjMzNCAwdjRaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE3IDE2XFxcIj48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiIGQ9XFxcIk04LjE2NyAzLjZ2LS44MDVsLS41Ny41NjktLjg2Ni44NjdhLjMxMi4zMTIgMCAwIDEtLjQ2MiAwIC4zMTIuMzEyIDAgMCAxIDAtLjQ2MmwyLTItLjIzNC0uMjM1LjIzNC4yMzVhLjMxMi4zMTIgMCAwIDEgLjQ2MiAwbC4yMzMtLjIzNC0uMjMzLjIzNCAyIDJhLjMxMi4zMTIgMCAwIDEgMCAuNDYyLjM2OC4zNjggMCAwIDEtLjEwOC4wOC4yOTIuMjkyIDAgMCAxLS4xMjMuMDIyLjI5Mi4yOTIgMCAwIDEtLjEyMy0uMDIxLjM2OC4zNjggMCAwIDEtLjEwOC0uMDgxbC0uODY3LS44NjctLjU2OS0uNTd2OC41MzljMCAuMTI0LS4wNC4yMDItLjA4NS4yNDgtLjA0Ni4wNDUtLjEyNC4wODUtLjI0OC4wODVzLS4yMDItLjA0LS4yNDgtLjA4NWMtLjA0NS0uMDQ2LS4wODUtLjEyNC0uMDg1LS4yNDhWMy42Wm0zIDIuNzMzSDEyLjVjLjk1IDAgMS42NjcuNzE3IDEuNjY3IDEuNjY3djQuNjY2YzAgLjk1LS43MTggMS42NjctMS42NjcgMS42NjdoLThjLS45NSAwLTEuNjY3LS43MTctMS42NjctMS42NjdWOGMwLS45NS43MTgtMS42NjcgMS42NjctMS42NjdoMS4zMzNjLjEyNSAwIC4yMDIuMDQuMjQ4LjA4Ni4wNDYuMDQ1LjA4Ni4xMjMuMDg2LjI0NyAwIC4xMjUtLjA0LjIwMi0uMDg2LjI0OC0uMDQ2LjA0Ni0uMTIzLjA4Ni0uMjQ4LjA4Nkg0LjVhMSAxIDAgMCAwLS43MTkuMjhBMSAxIDAgMCAwIDMuNSA4djQuNjY2YTEgMSAwIDAgMCAuMjgxLjcyIDEgMSAwIDAgMCAuNzE5LjI4aDhhMSAxIDAgMCAwIC43MTktLjI4IDEgMSAwIDAgMCAuMjgxLS43MlY4YTEgMSAwIDAgMC0uMjgxLS43MkExIDEgMCAwIDAgMTIuNSA3aC0xLjMzM2MtLjEyNSAwLS4yMDItLjA0LS4yNDgtLjA4Ni0uMDQ2LS4wNDYtLjA4Ni0uMTIzLS4wODYtLjI0OCAwLS4xMjQuMDQtLjIwMi4wODYtLjI0Ny4wNDYtLjA0Ni4xMjMtLjA4Ni4yNDgtLjA4NlpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMjBcXFwiPjxwYXRoIGQ9XFxcIk0xMi42NjcgN3YuMzMzSDEzQTIuNjY3IDIuNjY3IDAgMCAxIDE1LjY2NyAxMHY3QTIuNjY3IDIuNjY3IDAgMCAxIDEzIDE5LjY2N0gzQTIuNjY3IDIuNjY3IDAgMCAxIC4zMzMgMTd2LTdBMi42NjcgMi42NjcgMCAwIDEgMyA3LjMzM2guMzMzVjVhNC42NjcgNC42NjcgMCAwIDEgOS4zMzQgMHYyWk0xMSA3LjMzM2guMzMzVjVhMy4zMzMgMy4zMzMgMCAwIDAtNi42NjYgMHYyLjMzM0gxMVptMi45NDMgMTAuNjFjLjI1LS4yNS4zOS0uNTkuMzktLjk0M3YtN0ExLjMzMyAxLjMzMyAwIDAgMCAxMyA4LjY2N0gzQTEuMzMzIDEuMzMzIDAgMCAwIDEuNjY3IDEwdjdBMS4zMzMgMS4zMzMgMCAwIDAgMyAxOC4zMzNoMTBjLjM1NCAwIC42OTMtLjE0Ljk0My0uMzlaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIiBzdHJva2U9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNSAxNFxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIiBkPVxcXCJNNy41IDQuNjY2YTEgMSAwIDAgMC0uODY5LjVsLS4wMDYuMDEyYS4zMzMuMzMzIDAgMCAxLS4yMDMuMTY2bC4wOTMuMzItLjA5My0uMzJhLjMzMy4zMzMgMCAwIDEtLjM2LS4xMmwtLjI2Ni4yLjI2Ny0uMmEuMzMzLjMzMyAwIDAgMS0uMDE1LS4zNzlsLjAwNC0uMDA2LjAwMy0uMDA2QTEuNjY3IDEuNjY3IDAgMCAxIDcuNSA0YTEuNjY3IDEuNjY3IDAgMCAxIC41NTQgMy4yMzNsLS4yMi4wOHYuMzUzYS4zMzMuMzMzIDAgMSAxLS42NjYgMFY3YS4zMzMuMzMzIDAgMCAxIC4zMzMtLjMzNCAxIDEgMCAwIDAgMC0yWm0wIDBWNWwuMDAxLS4zMzRabS0uMzE2IDQuODk4LjAxLS4wMi4wMDgtLjAyM2EuMTczLjE3MyAwIDAgMSAuMDItLjAzOSAxLjIgMS4yIDAgMCAxIC4wNDYtLjA2LjMzMy4zMzMgMCAwIDEgLjEwNC0uMDY3bC0uMTI4LS4zMDguMTI4LjMwOGEuMzMzLjMzMyAwIDAgMSAuMzY1LjA3My4zMzMuMzMzIDAgMCAxIC4wOTYuMjM2di4wMTVhLjMzMy4zMzMgMCAwIDEtLjAyLjEyNnYuMDAxYS4yNjcuMjY3IDAgMCAxLS4wNjIuMDk4bC4yMzYuMjM2LS4yMzYtLjIzNmEuMjY3LjI2NyAwIDAgMS0uMDk4LjA2MmwtLjAxLjAwNC0uMDExLjAwNWEuMjkzLjI5MyAwIDAgMS0uMjM3IDBsLS4wMS0uMDA1LS4wMTItLjAwNGEuMjY3LjI2NyAwIDAgMS0uMDk3LS4wNjJsLS4yMzYuMjM2LjIzNi0uMjM2YS4yNjcuMjY3IDAgMCAxLS4wNjMtLjA5OGwtLjAwNS0uMDE0LS4wMDctLjAxNWEuMjI3LjIyNyAwIDAgMS0uMDIxLS4xMDJ2LS4wMzNhLjU3My41NzMgMCAwIDEtLjAwMi0uMDY0LjA5NC4wOTQgMCAwIDEgLjAwNi0uMDE0Wk0zLjk4IDEuNzM0YTYuMzMzIDYuMzMzIDAgMSAxIDcuMDM4IDEwLjUzMkE2LjMzMyA2LjMzMyAwIDAgMSAzLjk4IDEuNzM0Wm0uMzcgOS45NzdhNS42NjYgNS42NjYgMCAxIDAgNi4yOTctOS40MjIgNS42NjYgNS42NjYgMCAwIDAtNi4yOTYgOS40MjJaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE0IDE0XFxcIj48cGF0aCBmaWxsPVxcXCJyZWRcXFwiIGQ9XFxcIm04LjQxIDcgNC4zLTQuMjlhMS4wMDQgMS4wMDQgMCAwIDAtMS40Mi0xLjQyTDcgNS41OWwtNC4yOS00LjNhMS4wMDQgMS4wMDQgMCAxIDAtMS40MiAxLjQyTDUuNTkgN2wtNC4zIDQuMjlhLjk5OS45OTkgMCAwIDAgMCAxLjQyIDEgMSAwIDAgMCAxLjQyIDBMNyA4LjQxbDQuMjkgNC4zYTEuMDAxIDEuMDAxIDAgMCAwIDEuNjM5LS4zMjUgMSAxIDAgMCAwLS4yMi0xLjA5NUw4LjQxIDdaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDYgNlxcXCI+PGNpcmNsZSBjeD1cXFwiM1xcXCIgY3k9XFxcIjNcXFwiIHI9XFxcIjNcXFwiIGZpbGw9XFxcIiNGRjcyNjRcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMy45OTkgNy4zMzNjLS40IDAtLjY2Ny4yNjctLjY2Ny42NjcgMCAxLjkzMy0xIDMuNjY2LTIuNjY3IDQuNi0yLjUzMyAxLjQ2Ni01LjguNi03LjI2Ni0xLjkzNC0xLjQ2Ny0yLjUzMy0uNi01LjggMS45MzMtNy4yNjZhNS4zMzggNS4zMzggMCAwIDEgNi41MzMuOTMzaC0xLjZjLS40IDAtLjY2Ni4yNjctLjY2Ni42NjdzLjI2Ni42NjYuNjY2LjY2NmgzYy40IDAgLjY2Ny0uMjY2LjY2Ny0uNjY2VjJjMC0uNC0uMjY3LS42NjctLjY2Ny0uNjY3UzEyLjYgMS42IDEyLjYgMnYxLjJjLTEuMjY3LTEuMi0yLjg2Ny0xLjg2Ny00LjYtMS44NjctMy42NjcgMC02LjY2NyAzLTYuNjY3IDYuNjY3IDAgMy42NjYgMyA2LjY2NiA2LjY2NyA2LjY2NiAzLjY2NiAwIDYuNjY2LTMgNi42NjYtNi42NjYgMC0uNC0uMjY2LS42NjctLjY2Ni0uNjY3WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE5XFxcIj48cGF0aCBmaWxsPVxcXCIjZmZmXFxcIiBzdHJva2U9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIgZD1cXFwibTEzIDE2LjMzMi0uNTMzLS4zOTgtLjcxMy0uNTM0YS4zMzMuMzMzIDAgMCAwLS40IDBsMS42NDYuOTMyWm0wIDBWNS4zMzNIM3YxMC45OTlsLjUzMy0uMzk4LjcxMy0uNTM0YS4zMzMuMzMzIDAgMCAxIC40IDBsMS4zNzQgMS4wMzMuMi4xNS4yLS4xNUw3LjggMTUuNGEuMzMzLjMzMyAwIDAgMSAuNCAwbDEuMzggMS4wMzMuMi4xNS4yLS4xNSAxLjM3My0xLjAzMyAxLjY0Ny45MzJabS0xMC4xMzMuOTM0YS4zMzQuMzM0IDAgMCAxLS40ODQtLjA5bC0uMjgzLjE3NC4yODMtLjE3NWEuMzM0LjMzNCAwIDAgMS0uMDUtLjE3NVY1YS4zMzMuMzMzIDAgMCAxIC4zMzQtLjMzM2gxMC42NjZhLjMzMy4zMzMgMCAwIDEgLjMzNC4zMzN2MTEuOTk5YS4zMzQuMzM0IDAgMCAxLS4wNS4xNzRsLjI4My4xNzUtLjI4My0uMTc1YS4zMzMuMzMzIDAgMCAxLS4zMTQuMTU4bC0uMDI4LjMzMi4wMjgtLjMzMmEuMzM0LjMzNCAwIDAgMS0uMTctLjA2NWwtMS4zOC0xLjAzMy0uMi0uMTUtLjIuMTUtMS4zNzMgMS4wMzRhLjMzMy4zMzMgMCAwIDEtLjQgMEw4LjIgMTYuMjMybC0uMi0uMTUtLjIuMTUtMS4zOCAxLjAzM2EuMzMzLjMzMyAwIDAgMS0uNCAwbC0xLjM3My0xLjAzMi0uMi0uMTUtLjIuMTUtMS4zOCAxLjAzMlptMi4yMy00LjAzLS4yMzUuMjM1LjIzNi0uMjM1YS4zMzMuMzMzIDAgMCAxIDAtLjQ3MmwtLjIzNi0uMjM2LjIzNi4yMzZhLjMzMy4zMzMgMCAwIDEgLjIzNS0uMDk3aDUuMzM0YS4zMzMuMzMzIDAgMSAxIDAgLjY2Nkg1LjMzM2EuMzMzLjMzMyAwIDAgMS0uMjM1LS4wOTdaTTEwLjY2OCA4aC00YS4zMzMuMzMzIDAgMCAxIDAtLjY2N2g0YS4zMzMuMzMzIDAgMSAxIDAgLjY2N1ptMCAyLjY2N0g1LjMzM2EuMzMzLjMzMyAwIDEgMSAwLS42NjdoNS4zMzRhLjMzMy4zMzMgMCAxIDEgMCAuNjY3WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTMgMTJoMThtLTUtNSA1IDUtNSA1XFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIyXFxcIiBzdHJva2UtbGluZWNhcD1cXFwicm91bmRcXFwiIHN0cm9rZS1saW5lam9pbj1cXFwicm91bmRcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiPjxwYXRoIGQ9XFxcIm0xMC4xNjUgOS42NjIuMTYzLjE2NC4yMS0uMDk2YTEuNzIgMS43MiAwIDAgMSAxLjg5NS4zMTRsMS4zNzYgMS40MDkuMjM4LS4yMzMtLjIzMy4yMzhhMS42NjUgMS42NjUgMCAwIDEgMCAyLjM4NGwtLjAwMy4wMDJhMS42NjcgMS42NjcgMCAwIDEtMi4zNTUgMGwtMS40MTItMS40MTJhMS42NjcgMS42NjcgMCAwIDEtLjI5My0xLjkybC4xMS0uMjE2LS4xNzItLjE3Mi0uNTkzLS41OTMtLjIwNC0uMjA0LS4yMzEuMTczYTQuMzMzIDQuMzMzIDAgMSAxIC44NzItLjg3M2wtLjE3My4yMzEuMjA1LjIwNC42LjZabTIuODUzIDMuODk4YTEgMSAwIDAgMCAuNTQzLS41NDIuOTk5Ljk5OSAwIDAgMC0uMjE5LTEuMDk0bC0xLjQxMi0xLjQxMmExIDEgMCAwIDAtMS42MzcuMzIzIDEgMSAwIDAgMCAuMjE5IDEuMDk1bDEuNDEyIDEuNDExdi4wMDFhLjk5OS45OTkgMCAwIDAgMS4wOTQuMjE4Wk02Ljc1MiA5LjYzYTMuNjY3IDMuNjY3IDAgMSAwLTEuNDI0LTcuMTk0QTMuNjY3IDMuNjY3IDAgMCAwIDYuNzUyIDkuNjNaXFxcIiBmaWxsPVxcXCIjQTZCNUJBXFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJtMTQuMjEyIDYuMzY2LTEuMjYtLjQyLjU5My0xLjE4NkEuNjY3LjY2NyAwIDAgMCAxMy40MiA0bC0xLjQyLTEuNDJhLjY2Ny42NjcgMCAwIDAtLjc2Ny0uMTI3bC0xLjE4Ny41OTMtLjQyLTEuMjZBLjY2Ny42NjcgMCAwIDAgOSAxLjMzM2gtMmEuNjY3LjY2NyAwIDAgMC0uNjM0LjQ1M2wtLjQyIDEuMjYtMS4xODYtLjU5M2EuNjY3LjY2NyAwIDAgMC0uNzYuMTI3TDIuNTc5IDRhLjY2Ny42NjcgMCAwIDAtLjEyNy43NjZsLjU5MyAxLjE4Ny0xLjI2LjQyQS42NjcuNjY3IDAgMCAwIDEuMzMyIDd2MmEuNjY3LjY2NyAwIDAgMCAuNDUzLjYzM2wxLjI2LjQyLS41OTMgMS4xODdhLjY2Ny42NjcgMCAwIDAgLjEyNy43NmwxLjQyIDEuNDJhLjY2Ny42NjcgMCAwIDAgLjc2Ni4xMjZsMS4xODctLjU5My40MiAxLjI2YS42NjcuNjY3IDAgMCAwIC42MzMuNDUzaDJhLjY2Ny42NjcgMCAwIDAgLjYzNC0uNDUzbC40Mi0xLjI2IDEuMTg2LjU5M0EuNjY2LjY2NiAwIDAgMCAxMiAxMy40MmwxLjQyLTEuNDJhLjY2Ny42NjcgMCAwIDAgLjEyNi0uNzY3bC0uNTkzLTEuMTg3IDEuMjYtLjQyQS42NjcuNjY3IDAgMCAwIDE0LjY2NSA5VjdhLjY2Ny42NjcgMCAwIDAtLjQ1My0uNjM0Wm0tLjg4IDIuMTU0LS44LjI2NmExLjMzNCAxLjMzNCAwIDAgMC0uNzczIDEuODhsLjM4Ljc2LS43MzQuNzM0LS43NC0uNGExLjMzNSAxLjMzNSAwIDAgMC0xLjg2Ljc3M2wtLjI2Ni44aC0xLjA2bC0uMjY3LS44YTEuMzMzIDEuMzMzIDAgMCAwLTEuODgtLjc3M2wtLjc2LjM4LS43MzMtLjczNC40LS43NGExLjMzMyAxLjMzMyAwIDAgMC0uNzc0LTEuODhsLS44LS4yNjZWNy40OGwuOC0uMjY3YTEuMzMzIDEuMzMzIDAgMCAwIC43NzQtMS44OGwtLjM4LS43NC43MzMtLjczMy43NC4zOGExLjMzMyAxLjMzMyAwIDAgMCAxLjg4LS43NzRsLjI2Ny0uOGgxLjA0bC4yNjYuOGExLjMzMyAxLjMzMyAwIDAgMCAxLjg4Ljc3NGwuNzYtLjM4LjczNC43MzMtLjQuNzRhMS4zMzMgMS4zMzMgMCAwIDAgLjc3MyAxLjg2bC44LjI2N3YxLjA2Wk03Ljk5OSA1LjMzM2EyLjY2NyAyLjY2NyAwIDEgMCAwIDUuMzMzIDIuNjY3IDIuNjY3IDAgMCAwIDAtNS4zMzNabTAgNGExLjMzMyAxLjMzMyAwIDEgMSAwLTIuNjY3IDEuMzMzIDEuMzMzIDAgMCAxIDAgMi42NjdaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE4IDE4XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xNC43MjMgMi43MzhhLjc1Ljc1IDAgMCAwLS42My0uMTUgNiA2IDAgMCAxLTQuNjY1LS45NTMuNzUuNzUgMCAwIDAtLjg1NiAwIDYgNiAwIDAgMS00LjY2NC45NTMuNzUuNzUgMCAwIDAtLjkwOC43MzVWOC45MWE2Ljc1IDYuNzUgMCAwIDAgMi44MjcgNS40OThsMi43MzggMS45NWEuNzUuNzUgMCAwIDAgLjg3IDBsMi43MzctMS45NUE2Ljc1IDYuNzUgMCAwIDAgMTUgOC45MVYzLjMyM2EuNzQ5Ljc0OSAwIDAgMC0uMjc3LS41ODVaTTEzLjUgOC45MWE1LjI0OSA1LjI0OSAwIDAgMS0yLjE5NyA0LjI3NUw5IDE0LjgyOGwtMi4zMDMtMS42NDNBNS4yNSA1LjI1IDAgMCAxIDQuNSA4LjkxVjQuMTg1QTcuNSA3LjUgMCAwIDAgOSAzLjE0M2E3LjUgNy41IDAgMCAwIDQuNSAxLjA0MlY4LjkxWm0tMy4zNDUtMS43MTdMOC4xMzcgOS4yMThsLS42NjctLjY3NWEuNzUzLjc1MyAwIDEgMC0xLjA2NSAxLjA2NWwxLjIgMS4yYS43NS43NSAwIDAgMCAxLjA2NSAwbDIuNTgtMi41NThhLjc1My43NTMgMCAwIDAtMS4wNjUtMS4wNjVsLS4wMy4wMDhaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xNC4yNzMgNS43Njd2LS4wNGE2LjY2NyA2LjY2NyAwIDAgMC0xMi41Mi0uMDQuNTY3LjU2NyAwIDAgMC0uMDUzLjE2IDYuNjY3IDYuNjY3IDAgMSAwIDEyLjU3My0uMDhaTTggMi42NjdhNS4zMzMgNS4zMzMgMCAwIDEgNC42MTMgMi42NjZoLS44YTIgMiAwIDAgMC0zLjA4LjE0N0EyLjExMyAyLjExMyAwIDAgMCA4IDUuMzMzYy0uMjUxLjAwNS0uNS4wNTUtLjczMy4xNDdhMiAyIDAgMCAwLTMuMDgtLjE0N2gtLjhBNS4zMzMgNS4zMzMgMCAwIDEgOCAyLjY2N1ptMyA0YS42NjcuNjY3IDAgMSAxLTEuMzM0IDAgLjY2Ny42NjcgMCAwIDEgMS4zMzQgMFptLTQuNjY3IDBhLjY2Ny42NjcgMCAxIDEtMS4zMzMgMCAuNjY3LjY2NyAwIDAgMSAxLjMzMyAwWk04IDEzLjMzM0E1LjMzMyA1LjMzMyAwIDAgMSAyLjY2NyA4Yy4wMDMtLjQ1LjA2LS44OTguMTczLTEuMzMzaC44MjdhMiAyIDAgMCAwIDQgLjEyLjY2Ny42NjcgMCAwIDEgLjY2NiAwIDIgMiAwIDEgMCA0LS4xMmguODI3Yy4xMTIuNDM1LjE3Ljg4My4xNzMgMS4zMzNBNS4zMzQgNS4zMzQgMCAwIDEgOCAxMy4zMzNabTEuNTczLTMuODQ2YTIuNTA3IDIuNTA3IDAgMCAxLTMuMTQ2IDAgLjY2Ny42NjcgMCAwIDAtLjg1NCAxLjAyNiAzLjc4NyAzLjc4NyAwIDAgMCA0Ljg1NCAwIC42NjguNjY4IDAgMCAwLS44NTQtMS4wMjZaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDkgMTJcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEuOTU1IDguMzMzaDQuNjdsLTIuMzM2IDIuMjU0LTIuMzM0LTIuMjU0Wm0xLjg0NCAzLjE5NGMuMjcuMjYuNzA0LjI2Ljk3NCAwbDMuMTctMy4wNmMuNDM2LS40MTQuMTMyLTEuMTM0LS40ODMtMS4xMzRIMS4xMjZjLS42MTUgMC0uOTI2LjcyLS40OSAxLjE0bDMuMTYzIDMuMDU0Wm0tMi42OC02Ljg2SDcuNDZjLjYxNSAwIC45MjYtLjcyLjQ5LTEuMTRMNC43OC40NjdhLjcwNi43MDYgMCAwIDAtLjk3NCAwbC0zLjE3IDMuMDZjLS40MzYuNDItLjEzMiAxLjE0LjQ4MyAxLjE0WlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCA5IDEyXFxcIj48cGF0aCBmaWxsPVxcXCIjMTU1MzY2XFxcIiBkPVxcXCJNNi42MjQgMy42NjdoLTQuNjdMNC4yOSAxLjQxM2wyLjMzNSAyLjI1NFpNNC43OC40NzNhLjcwNi43MDYgMCAwIDAtLjk3NCAwbC0zLjE3IDMuMDZjLS40MzYuNDE0LS4xMzIgMS4xMzQuNDgzIDEuMTM0aDYuMzM0Yy42MTUgMCAuOTI2LS43Mi40OS0xLjE0TDQuNzguNDczWm0yLjY4IDYuODZIMS4xMTljLS42MTUgMC0uOTI2LjcyLS40OSAxLjE0bDMuMTcgMy4wNmMuMjcuMjYuNzA0LjI2Ljk3NCAwbDMuMTctMy4wNmMuNDM2LS40Mi4xMzItMS4xNC0uNDgzLTEuMTRaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgd2lkdGg9XFxcIjlcXFwiIGZpbGw9XFxcIm5vbmVcXFwiPjxwYXRoIGZpbGw9XFxcIiMxNTUzNjZcXFwiIGQ9XFxcIk02LjYyNSAzLjY2N2gtNC42N0w0LjI5IDEuNDE0bDIuMzM1IDIuMjUzWk00Ljc4LjQ3NGEuNzA2LjcwNiAwIDAgMC0uOTc0IDBsLTMuMTcgMy4wNmMtLjQzNS40MTMtLjEzMSAxLjEzMy40ODMgMS4xMzNoNi4zMzVjLjYxNSAwIC45MjUtLjcyLjQ5LTEuMTRMNC43OC40NzRabTIuNjggNi44NkgxLjEyYy0uNjE1IDAtLjkyNi43Mi0uNDkxIDEuMTRsMy4xNyAzLjA2Yy4yNy4yNi43MDUuMjYuOTc1IDBsMy4xNy0zLjA2Yy40MzUtLjQyLjEzMS0xLjE0LS40ODMtMS4xNFpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE3IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xNC44OSA2LjQ0N0EuNjY2LjY2NiAwIDAgMCAxNC4zMTYgNmwtMy43OTMtLjU1M0w4LjgyMyAyYS42NjcuNjY3IDAgMCAwLTEuMiAwbC0xLjcgMy40NEwyLjEzIDZhLjY2Ny42NjcgMCAwIDAtLjU0LjQ1My42NjcuNjY3IDAgMCAwIC4xNjYuNjY3TDQuNTEgOS43ODdsLS42NjcgMy43ODZhLjY2Ny42NjcgMCAwIDAgLjk2Ny43MTRsMy40MTMtMS43OCAzLjQgMS43ODZjLjA5NC4wNTMuMi4wOC4zMDcuMDhhLjY2Ny42NjcgMCAwIDAgLjYyNC0uNDIuNjY2LjY2NiAwIDAgMCAuMDM2LS4zNzNsLS42NjctMy43ODcgMi43NTMtMi42NjZhLjY2Ny42NjcgMCAwIDAgLjIxNC0uNjhabS00LjEgMi42NjZhLjY2Ni42NjYgMCAwIDAtLjE5NC41OTRsLjQ4IDIuNzkzLTIuNTA2LTEuMzMzYS42NjYuNjY2IDAgMCAwLS42MjcgMEw1LjQzNiAxMi41bC40OC0yLjc5M2EuNjY3LjY2NyAwIDAgMC0uMTkzLS41OTRsLTItMiAyLjgwNy0uNDA2YS42NjcuNjY3IDAgMCAwIC41MDYtLjM2N0w4LjIyMyAzLjhsMS4yNTMgMi41NDdhLjY2Ny42NjcgMCAwIDAgLjUwNy4zNjZsMi44MDcuNDA3LTIgMS45OTNaXFxcIiBmaWxsPVxcXCIjMDZEQkU0XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE0IDE0XFxcIj48cGF0aCBmaWxsPVxcXCIjMTc5OTdCXFxcIiBzdHJva2U9XFxcIiMxNzk5N0JcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIgZD1cXFwibTUuNzE4IDcuOTYyLjIzNi4yMzYuMjM1LS4yMzYgMi44Ni0yLjg2NmEuMzMzLjMzMyAwIDAgMSAuNDcgMCAuMzMzLjMzMyAwIDAgMSAwIC40NzRsLS4wMDEuMDAxLTMuMzMzIDMuMzMyYS4zMzMuMzMzIDAgMCAxLS40NyAwTDQuMTQ5IDcuMzMxbC0uMDA5LS4wMDktLjAxLS4wMDlhLjMzMy4zMzMgMCAxIDEgLjQ3LS40N2wuMDA4LjAxLjAxLjAxIDEuMSAxLjFaTTMuNDggMS43MzRhNi4zMzMgNi4zMzMgMCAxIDEgNy4wMzggMTAuNTMyQTYuMzMzIDYuMzMzIDAgMCAxIDMuNDggMS43MzRabS4zNyA5Ljk3OGE1LjY2NyA1LjY2NyAwIDEgMCA2LjI5Ny05LjQyNSA1LjY2NyA1LjY2NyAwIDAgMC02LjI5NiA5LjQyNVpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiPjxwYXRoIGZpbGw9XFxcIiNmZmZcXFwiIGQ9XFxcIk02Ljg3NSAxMC43MjlhLjY2NS42NjUgMCAwIDEtLjQ3MS0uMTk2TDQuNTI5IDguNjU4YS42NjcuNjY3IDAgMCAxIC45NDItLjk0MmwxLjQwNCAxLjQwMyAzLjY1NC0zLjY1M2EuNjY3LjY2NyAwIDAgMSAuOTQyLjk0MmwtNC4xMjUgNC4xMjVhLjY2NC42NjQgMCAwIDEtLjQ3MS4xOTZaXFxcIiBvcGFjaXR5PVxcXCIuOTlcXFwiLz48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIk04IDEuMzMzQTYuNjY3IDYuNjY3IDAgMSAwIDE0LjY2NyA4IDYuNjc0IDYuNjc0IDAgMCAwIDggMS4zMzNabTMuNDcxIDUuMDc2LTQuMTI1IDQuMTI1YS42NjcuNjY3IDAgMCAxLS45NDIgMEw0LjUyOSA4LjY1OWEuNjY3LjY2NyAwIDAgMSAuOTQyLS45NDNsMS40MDQgMS40MDMgMy42NTQtMy42NTNhLjY2Ny42NjcgMCAwIDEgLjk0Mi45NDNaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBzdHJva2U9XFxcIiMxNzk5N0JcXFwiIGZpbGw9XFxcIiMxNzk5N0JcXFwiIGQ9XFxcIk0yMC4yODUgMiA5IDEzLjU2NyAzLjcxNCA4LjU1NiAwIDEyLjI3MiA5IDIxIDI0IDUuNzE1elxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNCAxNFxcXCI+PHBhdGggZD1cXFwiTTcgLjMzMmMtMy42NjcgMC02LjY2NyAzLTYuNjY3IDYuNjY3IDAgMy42NjYgMyA2LjY2NiA2LjY2NyA2LjY2NiAzLjY2NiAwIDYuNjY2LTMgNi42NjYtNi42NjYgMC0zLjY2Ny0zLTYuNjY3LTYuNjY2LTYuNjY3Wm0yLjQ2NiA4LjJhLjY0NC42NDQgMCAwIDEgMCAuOTMzLjY0NC42NDQgMCAwIDEtLjkzMyAwTDcgNy45MzIgNS40NjYgOS40NjVhLjY0NC42NDQgMCAwIDEtLjkzMyAwIC42NDQuNjQ0IDAgMCAxIDAtLjkzM2wxLjUzMy0xLjUzMy0xLjUzMy0xLjUzNGEuNjQ0LjY0NCAwIDAgMSAwLS45MzMuNjQ0LjY0NCAwIDAgMSAuOTMzIDBMNyA2LjA2NWwxLjUzMy0xLjUzM2EuNjQ0LjY0NCAwIDAgMSAuOTMzIDAgLjY0NC42NDQgMCAwIDEgMCAuOTMzTDcuOTMzIDdsMS41MzMgMS41MzNaXFxcIiBmaWxsPVxcXCIjRDEwMDFFXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDMyIDMyXFxcIj48Y2lyY2xlIGN4PVxcXCIxNlxcXCIgY3k9XFxcIjE2XFxcIiByPVxcXCIxNlxcXCIgZmlsbD1cXFwiI0YxRjdGOVxcXCIvPjxwYXRoIGQ9XFxcIk0xMC43MDIgMTcuNjlhMi43NDkgMi43NDkgMCAwIDAgMi4zNSAxLjQxMWwuOTMzLjAxOC0uNzM0LjU3OGE2LjQ5OCA2LjQ5OCAwIDAgMS0zLjQwMSAxLjM2MiA4LjM0MiA4LjM0MiAwIDAgMCAzLjM2Ny43MDVoLjAwNGE4LjM1OCA4LjM1OCAwIDAgMCA4LjQ0Ni04LjQyNHYtLjU2OGwuMTM0LS4xYy4yNjMtLjE5Ni41MS0uNDE0LjczNy0uNjVMMTAuNzAyIDE3LjY5Wm0wIDBoLjA1MmMuMzExLS4wMDMuNjItLjA1LjkxOC0uMTQxbC0uMDMyLS42NDZhMi43NDEgMi43NDEgMCAwIDEtMi4xNTgtMi4xNzdjLjMyMi4xMS42Ni4xNzIgMS4wMDQuMTgybDEuMTU2LjAzMS0uOTYyLS42NDJhMi43MzQgMi43MzQgMCAwIDEtMS4yMTctMi4yOGMwLS4zMjMuMDU2LS42NDIuMTY0LS45NDNhOS4wNjQgOS4wNjQgMCAwIDAgNi4yMzYgMi45NDFsLjQ0NS4wMjMtLjEwNC0uNDM0YTIuNzQyIDIuNzQyIDAgMCAxIDQuNjgtMi41bC4xMjguMTM2LjE4My0uMDM2Yy4zODQtLjA3Ni43Ni0uMTg2IDEuMTIyLS4zMjlhMi43NjMgMi43NjMgMCAwIDEtLjc1OC42NjhMMTAuNzAyIDE3LjY5WlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlPVxcXCIjMTU1MzY2XFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiPjxwYXRoIGZpbGw9XFxcIiNmZmZcXFwiIHN0cm9rZT1cXFwiI2ZmZlxcXCIgZD1cXFwibTguMDYzIDUuODUuMDEuMDAzYS4xNjYuMTY2IDAgMCAxIC4wNTIuMDMyTDEwLjEyIDcuODh2LjAwMmEuMTY4LjE2OCAwIDAgMSAuMDM3LjE4MmwuNDYyLjE5Mi0uNDYyLS4xOTJhLjE2OC4xNjggMCAwIDEtLjAzNi4wNTRsLS4wMDMuMDAzYS4xNjcuMTY3IDAgMCAxLS4xODIuMDM3bC0uMTkzLjQ2MS4xOTMtLjQ2MWEuMTY3LjE2NyAwIDAgMS0uMDU1LS4wMzdsLS44Ni0uODY3LS44NTUtLjg2MVYxMGEuMTY3LjE2NyAwIDAgMS0uMzMzIDBWNi4zOTNsLS44NTUuODYxLS44NTkuODY2YS4xNy4xNyAwIDAgMS0uMjQtLjI0bDEuOTk2LTEuOTk1YS4xNjYuMTY2IDAgMCAxIC4wNTItLjAzMmwuMDEtLjAwNGEuMTY3LjE2NyAwIDAgMSAuMTI2IDBabS0zLjQ5LTIuOTc3YTYuMTY3IDYuMTY3IDAgMSAxIDYuODUzIDEwLjI1NEE2LjE2NyA2LjE2NyAwIDAgMSA0LjU3NCAyLjg3M1ptLjE4NiA5Ljk3N2E1LjgzNCA1LjgzNCAwIDEgMCA2LjQ4MS05LjcgNS44MzQgNS44MzQgMCAwIDAtNi40ODIgOS43MDFaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNOS4yNyA5LjQ5MWEuMTY3LjE2NyAwIDAgMS0uMDU0LS4wMzVsLS4xOS0uMTk3LS44Ni0uODg5djIuOTYzYS4xNjcuMTY3IDAgMCAxLS4zMzMgMFY4LjM3bC0uODYuODktLjE4OS4xOTVhLjE3LjE3IDAgMCAxLS4yMzctLjI0MWwxLjMyOC0xLjMyOWEuMTY2LjE2NiAwIDAgMSAuMDUyLS4wMzJsLjAxLS4wMDRhLjE2Ny4xNjcgMCAwIDEgLjEyNiAwbC4wMS4wMDRhLjE1Ni4xNTYgMCAwIDEgLjA1Mi4wMzJsMS4zMjggMS4zMjkuMDAyLjAwMWEuMTY3LjE2NyAwIDAgMSAuMDM2LjE4MmwuNDYyLjE5My0uNDYyLS4xOTNhLjE2Ny4xNjcgMCAwIDEtLjAzNi4wNTVsLS4wMDMuMDAzYS4xNjcuMTY3IDAgMCAxLS4xODMuMDM2Wm0tLjQzNy03LjU4NCAzLjk2MyAzLjk2My4wMjMuMDdhLjMzLjMzIDAgMCAxIC4wMTQuMDU0djYuNjczYTEuNSAxLjUgMCAwIDEtMS41IDEuNUg0LjY2N2ExLjUgMS41IDAgMCAxLTEuMDYxLS40NGwtLjM0OC4zNDguMzQ4LS4zNDhhMS41IDEuNSAwIDAgMS0uNDQtMS4wNlYzLjMzM2ExLjUgMS41IDAgMCAxIDEuNS0xLjVoMy45OGEuMjMzLjIzMyAwIDAgMSAuMDMyLjAxNWwuMTEuMDU5aC4wNDVabS44NTQgMS4zNDZMOC44MzMgMi40djIuMjY3QTEuMTY3IDEuMTY3IDAgMCAwIDEwIDUuODMzaDIuMjY3bC0uODUzLS44NTMtMS43MjctMS43MjdaTTguNSAyLjY2N3YtLjVINC42NjdBMS4xNjcgMS4xNjcgMCAwIDAgMy41IDMuMzMzdjkuMzM0YTEuMTY3IDEuMTY3IDAgMCAwIDEuMTY3IDEuMTY2aDYuNjY2YTEuMTY3IDEuMTY3IDAgMCAwIDEuMTY3LTEuMTY2di02LjVIMTBhMS41IDEuNSAwIDAgMS0xLjUtMS41di0yWlxcXCIgZmlsbD1cXFwiY3VycmVudGNvbG9yXFxcIiBzdHJva2U9XFxcImN1cnJlbnRjb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwibTMuODM3IDExLjY0My0uMTI4LjMxNC4yNDMuMjM1QTUuODMzIDUuODMzIDAgMCAwIDggMTMuODMzaC4wMDJhNS44MzMgNS44MzMgMCAwIDAgNC4wNDctMS42NGwuMjQzLS4yMzYtLjEyOS0uMzE0YTQuNSA0LjUgMCAwIDAtOC4zMjUgMFptOC4zMzgtLjcyNC40My43MzYuNDMzLS43MzZBNS43OCA1Ljc4IDAgMCAwIDEzLjgzMyA4IDUuODMzIDUuODMzIDAgMCAwIDIuMTY3IDhhNS43OCA1Ljc4IDAgMCAwIC43OTUgMi45MmwuNDMyLjczNi40My0uNzM3YTQuODMzIDQuODMzIDAgMCAxIDIuMzYzLTIuMDQybC42NTUtLjI2NS0uNDY3LS41M2EyLjE2NyAyLjE2NyAwIDEgMSAzLjI1IDBsLS40NjcuNTMuNjU1LjI2NWE0LjgzMyA0LjgzMyAwIDAgMSAyLjM2MiAyLjA0MlpNNC42MzUgMi44NGMxLS42NTUgMi4xNy0xLjAwNSAzLjM2NS0xLjAwN2E2LjE2NiA2LjE2NiAwIDAgMSA0LjUzMiAxMC4zMzUgNi4xNjcgNi4xNjcgMCAwIDEtOS4wNjQgMEE2LjE2NyA2LjE2NyAwIDAgMSA0LjYzNSAyLjg0Wm0xLjg0IDIuODA4YTEuODMzIDEuODMzIDAgMSAwIDMuMDUgMi4wMzcgMS44MzMgMS44MzMgMCAwIDAtMy4wNS0yLjAzN1pcXFwiIGZpbGw9XFxcInRyYW5zcGFyZW50XFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyMCAyMlxcXCI+PHBhdGggZD1cXFwibTEzLjUwNCAxMS40NDgtLjQ1NS4zNTguNTM4LjIxNGE5LjY2NyA5LjY2NyAwIDAgMSA2LjA0MiA3LjkxNi42NjcuNjY3IDAgMCAxLS41Ny43M2gtLjA5MWEuNjY3LjY2NyAwIDAgMS0uNjY3LS41OTMgOC4zMzMgOC4zMzMgMCAwIDAtMTYuNTYyIDBBLjY3My42NzMgMCAwIDEgLjQgMTkuOTI2YTkuNjY3IDkuNjY3IDAgMCAxIDYuMDEzLTcuOTA3bC41MzYtLjIxNC0uNDU0LS4zNTdhNS42NjcgNS42NjcgMCAxIDEgNy4wMDggMFptLTUuOTExLS44NDVhNC4zMzQgNC4zMzQgMCAxIDAgNC44MTUtNy4yMDcgNC4zMzQgNC4zMzQgMCAwIDAtNC44MTUgNy4yMDdaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIiBzdHJva2U9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyMCAxOFxcXCI+PHBhdGggZD1cXFwibTE4LjkxNyAxMy41ODMtNi43NS0xMS42NjZDMTEuNS43NSA5LjkxNy4zMzMgOC43NSAxYy0uNDE3LjI1LS43NS41ODMtLjkxNy45MTdsLTYuNzUgMTEuNjY2Qy40MTcgMTQuNzUuODMzIDE2LjMzMyAyIDE3Yy40MTcuMjUuODMzLjMzMyAxLjI1LjMzM2gxMy40MTdjMS40MTYgMCAyLjUtMS4xNjYgMi41LTIuNS4wODMtLjUtLjA4NC0uOTE2LS4yNS0xLjI1Wk0xMCAxNGMtLjUgMC0uODMzLS4zMzMtLjgzMy0uODMzIDAtLjUuMzMzLS44MzQuODMzLS44MzQuNSAwIC44MzMuMzM0LjgzMy44MzQgMCAuNS0uMzMzLjgzMy0uODMzLjgzM1ptLjgzMy00LjE2N2MwIC41LS4zMzMuODM0LS44MzMuODM0LS41IDAtLjgzMy0uMzM0LS44MzMtLjgzNFY2LjVjMC0uNS4zMzMtLjgzMy44MzMtLjgzMy41IDAgLjgzMy4zMzMuODMzLjgzM3YzLjMzM1pcXFwiIGZpbGw9XFxcIiNGRjcyNjRcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTggMTlcXFwiPjxnIGNsaXAtcGF0aD1cXFwidXJsKCN3YXJuaW5nLWZpbGxfc3ZnX19hKVxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBkPVxcXCJtMTcuMDIgMTMuOTkyLTYuMDczLTEwLjVjLS42LTEuMDUtMi4wMjUtMS40MjUtMy4wNzQtLjgyNS0uMzc1LjIyNS0uNjc1LjUyNS0uODI1LjgyNWwtNi4wNzMgMTAuNWMtLjYgMS4wNS0uMjI1IDIuNDc1LjgyNCAzLjA3NS4zNzUuMjI1Ljc1LjMgMS4xMjUuM2gxMi4wNzFjMS4yNzUgMCAyLjI1LTEuMDUgMi4yNS0yLjI1LjA3NS0uNDUtLjA3NS0uODI1LS4yMjUtMS4xMjVabS04LjAyMy4zNzVjLS40NSAwLS43NS0uMy0uNzUtLjc1cy4zLS43NS43NS0uNzUuNzUuMy43NS43NS0uMy43NS0uNzUuNzVabS43NS0zLjc1YzAgLjQ1LS4zLjc1LS43NS43NXMtLjc1LS4zLS43NS0uNzV2LTNjMC0uNDUuMy0uNzUuNzUtLjc1cy43NS4zLjc1Ljc1djNaXFxcIi8+PC9nPjxkZWZzPjxjbGlwUGF0aCBpZD1cXFwid2FybmluZy1maWxsX3N2Z19fYVxcXCI+PHBhdGggZmlsbD1cXFwiI2ZmZlxcXCIgZD1cXFwiTTAgMGgxNy45OTV2MThIMHpcXFwiIHRyYW5zZm9ybT1cXFwidHJhbnNsYXRlKDAgLjg2NylcXFwiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjMgMjFcXFwiPjxwYXRoIGQ9XFxcIk0xMS44ODcgMTVhMSAxIDAgMSAwIDAgMiAxIDEgMCAwIDAgMC0yWm0xMC42NyAxLjQ3LTguMDUtMTRhMyAzIDAgMCAwLTUuMjQgMGwtOCAxNEEzIDMgMCAwIDAgMy44MjcgMjFoMTYuMTJhMyAzIDAgMCAwIDIuNjEtNC41M1ptLTEuNzMgMmExIDEgMCAwIDEtLjg4LjUxSDMuODI3YTEgMSAwIDAgMS0uODgtLjUxIDEgMSAwIDAgMSAwLTFsOC0xNGExIDEgMCAwIDEgMS43OCAwbDguMDUgMTRhMSAxIDAgMCAxIC4wNSAxLjAydi0uMDJaTTExLjg4NyA3YTEgMSAwIDAgMC0xIDF2NGExIDEgMCAwIDAgMiAwVjhhMSAxIDAgMCAwLTEtMVpcXFwiIGZpbGw9XFxcIiNEMTAwMUVcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMzIgMzJcXFwiPjxjaXJjbGUgY3g9XFxcIjE2XFxcIiBjeT1cXFwiMTZcXFwiIHI9XFxcIjE2XFxcIiBmaWxsPVxcXCIjRjFGN0Y5XFxcIi8+PHBhdGggZD1cXFwiTTIzLjkxNyAxNC4yN3YuMDEyYzAgLjQ2MiAwIDIuOTc3LS4wMyAzLjM4MXYuMDI4YTcuNiA3LjYgMCAwIDEtLjM3NCAyLjQ0M3YuMDAxYTEuNTM1IDEuNTM1IDAgMCAxLS4zNzUuNjE1IDEuODI3IDEuODI3IDAgMCAxLS45NTUuNDkxYy0yLjcwMi4yMDgtNC45OS4yNDUtNy42MDMuMjA4aC0uMDEyYTMzLjU2MiAzMy41NjIgMCAwIDEtNC44MTctLjI0NCAxLjgxMSAxLjgxMSAwIDAgMS0uOTI3LS40ODUgMi4wMjIgMi4wMjIgMCAwIDEtLjQ1LS44NjhsLS4wMDEtLjAwNmE2LjgyOCA2LjgyOCAwIDAgMS0uMjE1LTEuNDN2LS4wMDlhMzUuODg3IDM1Ljg4NyAwIDAgMSAuMDAzLTQuODU3Yy4wMzctLjQ0Mi4wNzQtLjg4OC4xNzUtMS4yOTguMTA0LS40MjQuMjctLjc3NS41NC0xLjAyNWwuMDAzLS4wMDNjLjI1My0uMjQuNTctLjQwMS45MTEtLjQ2NmE1OC41MjcgNTguNTI3IDAgMCAxIDYuMjA0LS4yMjNoLjAxMmE1OC40MjYgNTguNDI2IDAgMCAxIDYuMjI2LjIzYy40MS4wNzguNzgyLjI5IDEuMDU2LjYwNS40NDcuOS42NjQgMS44OTYuNjI5IDIuOVptLTkuOTQ1IDMuODY3di41NmwuNDkyLS4yNjdhOTguOTcgOTguOTcgMCAwIDEgMi4yNjQtMS4xNzVsLjA2My0uMDMyYTcwLjQ1IDcwLjQ1IDAgMCAwIDIuMTE2LTEuMTA0bC41NC0uMy0uNTQ3LS4yODctNC40NC0yLjMzMi0uNDg4LS4yNTd2NS4xOTRaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIiBzdHJva2U9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPWRjNzA1ZjQ4Jmxhbmc9Y3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9YbHNMaXN0RXJyb3IudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9Mzc2MTc3MDImc2NvcGVkPXRydWUmbGFuZz1jc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL3NwaW5uZXJMb2FkZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MDA4OTJkZjYmbGFuZz1jc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhYmxlTGF5b3V0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTVkODRhMWQ4JnNjb3BlZD10cnVlJmxhbmc9Y3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9MaXN0RWxlbWVudC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD05YTYwODQzMiZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vWGxzTGlzdC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01ZjUwMDhiNCZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGFibGVMaXN0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTA1YjI2MzRiJmxhbmc9Y3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Vc2VyTGlzdGluZy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wNjExZDlmMCZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BZG1pbkhlYWRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MSZpZD02ZmU1OTA1NSZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTI0NDNkZjUzJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FcnJvck1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9Yjc3YjExZDQmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0hvdmVyVGV4dC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01NTM4ZDdlMiZsYW5nPXNjc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTG9hZGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPThlMzZmOGVjJmxhbmc9c2Nzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Qb3B1cE1vZGFsLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTVhMmJkYTU4Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TaGltbWVyTG9hZGluZy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD03NDM1NjE3MiZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRXJyb3JMaXN0cy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1mNjdjN2U3MiZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHJvZ3Jlc3NMb2FkZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NWMzMmJmMGMmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1N0aWNreUVycm9ycy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0xZTM4ZDEwZSZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVXBsb2FkZWRFcnJvcnMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NmYxN2VjNDUmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5SW5kZXgudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MGE1NzFmZDYmbGFuZz1zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0NyZWF0ZU1vZGFsLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPWM3Y2EyOGI4Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FcnJvckl0ZW0udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MDYzY2JkODYmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01YTQwZmNmNCZsYW5nPXNjc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD02NjFlNmY4ZSZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NGYyMjVkM2UmbGFuZz1zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0ltcG9ydExpc3QudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NDBkNzg3MGEmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09yZ2FuaXNhdGlvbkRhdGEudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NGFkYTVmMzYmbGFuZz1zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc2V0UGFnZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0zNmI3NjRiYiZsYW5nPXNjc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSWF0aVJlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MSZpZD0xN2U2MzJhNiZsYW5nPXNjc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0xJmlkPTUyMjY2MjAwJmxhbmc9c2Nzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TaWduSW4udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9YTE4NjFmM2UmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1dlYkhlYWRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0xMGM5ZTBiMiZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BY3Rpdml0eURvd25sb2FkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zMjZhZDc2ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWN0aXZpdHlEb3dubG9hZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BY3Rpdml0eURvd25sb2FkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0FjdGl2aXR5RG93bmxvYWQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjMyNmFkNzZlXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMzI2YWQ3NmUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCczMjZhZDc2ZScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWN0aXZpdHlEb3dubG9hZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzI2YWQ3NmUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCczMjZhZDc2ZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQWRtaW5IZWFkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZmZTU5MDU1JnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BZG1pbkhlYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BZG1pbkhlYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBcIkB2dWVmb3JtL211bHRpc2VsZWN0L3RoZW1lcy9kZWZhdWx0LmNzcz92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9Y3NzXCJcbmltcG9ydCBcIi4vQWRtaW5IZWFkZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTEmaWQ9NmZlNTkwNTUmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LTZmZTU5MDU1XCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BZG1pbkhlYWRlci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNmZlNTkwNTVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc2ZmU1OTA1NScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzZmZTU5MDU1JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BZG1pbkhlYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmZlNTkwNTUmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc2ZmU1OTA1NScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQnJlYWRDcnVtYi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjVkMGUzZGEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0JyZWFkQ3J1bWIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0JyZWFkQ3J1bWIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0JyZWFkQ3J1bWIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjY1ZDBlM2RhXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNjVkMGUzZGEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc2NWQwZTNkYScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQnJlYWRDcnVtYi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjVkMGUzZGEmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc2NWQwZTNkYScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQnVsa1B1Ymxpc2hpbmdFcnJvclBvcHVwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xNjJjYmY0MCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQnVsa1B1Ymxpc2hpbmdFcnJvclBvcHVwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcbmV4cG9ydCAqIGZyb20gXCIuL0J1bGtQdWJsaXNoaW5nRXJyb3JQb3B1cC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdWxrUHVibGlzaGluZ0Vycm9yUG9wdXAudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjE2MmNiZjQwXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMTYyY2JmNDAnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxNjJjYmY0MCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQnVsa1B1Ymxpc2hpbmdFcnJvclBvcHVwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xNjJjYmY0MCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzE2MmNiZjQwJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9CdWxrcHVibGlzaFdpdGhYbHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI0NDNkZjUzJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9CdWxrcHVibGlzaFdpdGhYbHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9CdWxrcHVibGlzaFdpdGhYbHMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MjQ0M2RmNTMmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LTI0NDNkZjUzXCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdWxrcHVibGlzaFdpdGhYbHMudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjI0NDNkZjUzXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMjQ0M2RmNTMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcyNDQzZGY1MycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNDQzZGY1MyZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzI0NDNkZjUzJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9CdXR0b25Db21wb25lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTlmZjVhOGY4JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9CdXR0b25Db21wb25lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0J1dHRvbkNvbXBvbmVudC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI5ZmY1YThmOFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzlmZjVhOGY4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnOWZmNWE4ZjgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0J1dHRvbkNvbXBvbmVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OWZmNWE4ZjgmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc5ZmY1YThmOCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRGF0ZVJhbmdlV2lkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNDc3YzZlYyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRGF0ZVJhbmdlV2lkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcbmV4cG9ydCAqIGZyb20gXCIuL0RhdGVSYW5nZVdpZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9EYXRlUmFuZ2VXaWRnZXQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjM0NzdjNmVjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMzQ3N2M2ZWMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCczNDc3YzZlYycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGF0ZVJhbmdlV2lkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNDc3YzZlYyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzM0NzdjNmVjJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9EZXNjcmlwdGlvbkZvcm0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZlYmY0MWY5JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9EZXNjcmlwdGlvbkZvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Rlc2NyaXB0aW9uRm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRGVzY3JpcHRpb25Gb3JtLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI2ZWJmNDFmOVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzZlYmY0MWY5JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNmViZjQxZjknLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Rlc2NyaXB0aW9uRm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmViZjQxZjkmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc2ZWJmNDFmOScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRXJyb3JNZXNzYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iNzdiMTFkNCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRXJyb3JNZXNzYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Vycm9yTWVzc2FnZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vRXJyb3JNZXNzYWdlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPWI3N2IxMWQ0Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi1iNzdiMTFkNFwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRXJyb3JNZXNzYWdlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJiNzdiMTFkNFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2I3N2IxMWQ0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnYjc3YjExZDQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Vycm9yTWVzc2FnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Yjc3YjExZDQmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdiNzdiMTFkNCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRXJyb3JQb3BVcC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGYxZDhiMWImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0Vycm9yUG9wVXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRXJyb3JQb3BVcC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9FcnJvclBvcFVwLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwZjFkOGIxYlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzBmMWQ4YjFiJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMGYxZDhiMWInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Vycm9yUG9wVXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBmMWQ4YjFiJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMGYxZDhiMWInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0hvdmVyVGV4dC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTUzOGQ3ZTImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0hvdmVyVGV4dC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vSG92ZXJUZXh0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vSG92ZXJUZXh0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTU1MzhkN2UyJmxhbmc9c2Nzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjU1MzhkN2UyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNTUzOGQ3ZTInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1NTM4ZDdlMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vSG92ZXJUZXh0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NTM4ZDdlMiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzU1MzhkN2UyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Mb2FkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPThlMzZmOGVjJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Mb2FkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0xvYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL0xvYWRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD04ZTM2ZjhlYyZsYW5nPXNjc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI4ZTM2ZjhlY1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzhlMzZmOGVjJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnOGUzNmY4ZWMnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0xvYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OGUzNmY4ZWMmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc4ZTM2ZjhlYycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kYzcwNWY0OCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcbmV4cG9ydCAqIGZyb20gXCIuL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5cbmltcG9ydCBcIi4vTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPWRjNzA1ZjQ4Jmxhbmc9Y3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZGM3MDVmNDhcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdkYzcwNWY0OCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2RjNzA1ZjQ4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWRjNzA1ZjQ4JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZGM3MDVmNDgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL05hdkRyb3Bkb3duLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNjE5YTdlZCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTmF2RHJvcGRvd24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL05hdkRyb3Bkb3duLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9OYXZEcm9wZG93bi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMjYxOWE3ZWRcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyNjE5YTdlZCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzI2MTlhN2VkJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9OYXZEcm9wZG93bi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjYxOWE3ZWQmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcyNjE5YTdlZCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUG9wdXBNb2RhbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWEyYmRhNTgmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1BvcHVwTW9kYWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1BvcHVwTW9kYWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9Qb3B1cE1vZGFsLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTVhMmJkYTU4Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi01YTJiZGE1OFwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNWEyYmRhNThcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1YTJiZGE1OCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzVhMmJkYTU4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Qb3B1cE1vZGFsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01YTJiZGE1OCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzVhMmJkYTU4JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SYWRpYWxQcm9ncmVzc0Jhci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTU3MzhlNjAmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1JhZGlhbFByb2dyZXNzQmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SYWRpYWxQcm9ncmVzc0Jhci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUmFkaWFsUHJvZ3Jlc3NCYXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjE1NzM4ZTYwXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMTU3MzhlNjAnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxNTczOGU2MCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmFkaWFsUHJvZ3Jlc3NCYXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE1NzM4ZTYwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMTU3MzhlNjAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1NoaW1tZXJMb2FkaW5nLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03NDM1NjE3MiZzY29wZWQ9dHJ1ZVwiXG5jb25zdCBzY3JpcHQgPSB7fVxuXG5pbXBvcnQgXCIuL1NoaW1tZXJMb2FkaW5nLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTc0MzU2MTcyJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi03NDM1NjE3MlwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvU2hpbW1lckxvYWRpbmcudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjc0MzU2MTcyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNzQzNTYxNzInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3NDM1NjE3MicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vU2hpbW1lckxvYWRpbmcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc0MzU2MTcyJnNjb3BlZD10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzc0MzU2MTcyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UYWJsZUxvYWRlckNvbXBvbmVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2Q1MjA1OWEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RhYmxlTG9hZGVyQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RhYmxlTG9hZGVyQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1RhYmxlTG9hZGVyQ29tcG9uZW50LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3ZDUyMDU5YVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzdkNTIwNTlhJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnN2Q1MjA1OWEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RhYmxlTG9hZGVyQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZDUyMDU5YSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzdkNTIwNTlhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UYWJsZVBhZ2luYXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPThjOTdhNWJlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UYWJsZVBhZ2luYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RhYmxlUGFnaW5hdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvVGFibGVQYWdpbmF0aW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI4Yzk3YTViZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzhjOTdhNWJlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnOGM5N2E1YmUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RhYmxlUGFnaW5hdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OGM5N2E1YmUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc4Yzk3YTViZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVG9hc3RNZXNzYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kMDFkOGNkMiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVG9hc3RNZXNzYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RvYXN0TWVzc2FnZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImQwMWQ4Y2QyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZDAxZDhjZDInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdkMDFkOGNkMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVG9hc3RNZXNzYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kMDFkOGNkMiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2QwMWQ4Y2QyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9YbHNMaXN0RXJyb3IudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM3NjE3NzAyJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9YbHNMaXN0RXJyb3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vWGxzTGlzdEVycm9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9YbHNMaXN0RXJyb3IudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9Mzc2MTc3MDImc2NvcGVkPXRydWUmbGFuZz1jc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtMzc2MTc3MDJcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xpc3RFcnJvci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMzc2MTc3MDJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCczNzYxNzcwMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzM3NjE3NzAyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9YbHNMaXN0RXJyb3IudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM3NjE3NzAyJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMzc2MTc3MDInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1hsc0xvYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2VhNGIwNmEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1hsc0xvYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9YbHNMb2FkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvWGxzTG9hZGVyLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3ZWE0YjA2YVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzdlYTRiMDZhJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnN2VhNGIwNmEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1hsc0xvYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2VhNGIwNmEmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc3ZWE0YjA2YScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vWGxzVXBsb2FkSW5kaWNhdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wMmFjMmJmNCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vWGxzVXBsb2FkSW5kaWNhdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1hsc1VwbG9hZEluZGljYXRvci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNVcGxvYWRJbmRpY2F0b3IudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjAyYWMyYmY0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMDJhYzJiZjQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwMmFjMmJmNCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vWGxzVXBsb2FkSW5kaWNhdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wMmFjMmJmNCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzAyYWMyYmY0JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9EZWxldGVCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWE5M2Q4NDdjJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9EZWxldGVCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRGVsZXRlQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvRGVsZXRlQnV0dG9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJhOTNkODQ3Y1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2E5M2Q4NDdjJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnYTkzZDg0N2MnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0RlbGV0ZUJ1dHRvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YTkzZDg0N2MmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdhOTNkODQ3YycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vTGluay52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YmZlNjUxMDImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0xpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0xpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvTGluay52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiYmZlNjUxMDJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdiZmU2NTEwMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2JmZTY1MTAyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9MaW5rLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iZmU2NTEwMiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2JmZTY1MTAyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9QdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lY2M1MDgyOCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9QdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvUHVibGlzaEJ1dHRvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZWNjNTA4MjhcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdlY2M1MDgyOCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2VjYzUwODI4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9QdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lY2M1MDgyOCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2VjYzUwODI4JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9VblB1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ1OWMzMTkzJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9VblB1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVW5QdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvVW5QdWJsaXNoQnV0dG9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0NTljMzE5M1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzQ1OWMzMTkzJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNDU5YzMxOTMnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1VuUHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDU5YzMxOTMmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0NTljMzE5MycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRGVsZXRlQWN0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NmJjZThjYSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRGVsZXRlQWN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0RlbGV0ZUFjdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9EZWxldGVBY3Rpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjU2YmNlOGNhXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNTZiY2U4Y2EnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1NmJjZThjYScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGVsZXRlQWN0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NmJjZThjYSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzU2YmNlOGNhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9FcnJvckxpc3RzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mNjdjN2U3MiZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRXJyb3JMaXN0cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9FcnJvckxpc3RzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9FcnJvckxpc3RzLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPWY2N2M3ZTcyJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi1mNjdjN2U3MlwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvRXJyb3JMaXN0cy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZjY3YzdlNzJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdmNjdjN2U3MicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2Y2N2M3ZTcyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9FcnJvckxpc3RzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mNjdjN2U3MiZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2Y2N2M3ZTcyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9IYXZlTm90QWRkZWRZZXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM5MjVlZjQ5JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9IYXZlTm90QWRkZWRZZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0hhdmVOb3RBZGRlZFlldC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvSGF2ZU5vdEFkZGVkWWV0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzOTI1ZWY0OVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzM5MjVlZjQ5JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMzkyNWVmNDknLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0hhdmVOb3RBZGRlZFlldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzkyNWVmNDkmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCczOTI1ZWY0OScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmZiOGY0MDYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL09yZ2FuaXphdGlvblB1Ymxpc2hVbnB1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9Pcmdhbml6YXRpb25QdWJsaXNoVW5wdWJsaXNoQnV0dG9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyZmI4ZjQwNlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzJmYjhmNDA2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMmZiOGY0MDYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL09yZ2FuaXphdGlvblB1Ymxpc2hVbnB1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJmYjhmNDA2JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMmZiOGY0MDYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1BhZ2VUaXRsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWI1NGUwOWYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1BhZ2VUaXRsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUGFnZVRpdGxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjFiNTRlMDlmXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMWI1NGUwOWYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxYjU0ZTA5ZicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUGFnZVRpdGxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xYjU0ZTA5ZiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzFiNTRlMDlmJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Qcm9ncmVzc0xvYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWMzMmJmMGMmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1Byb2dyZXNzTG9hZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1Byb2dyZXNzTG9hZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9Qcm9ncmVzc0xvYWRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01YzMyYmYwYyZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtNWMzMmJmMGNcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1YzMyYmYwY1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzVjMzJiZjBjJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNWMzMmJmMGMnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1Byb2dyZXNzTG9hZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01YzMyYmYwYyZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzVjMzJiZjBjJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9TdGlja3lFcnJvcnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFlMzhkMTBlJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9TdGlja3lFcnJvcnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vU3RpY2t5RXJyb3JzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9TdGlja3lFcnJvcnMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MWUzOGQxMGUmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LTFlMzhkMTBlXCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9TdGlja3lFcnJvcnMudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjFlMzhkMTBlXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMWUzOGQxMGUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxZTM4ZDEwZScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vU3RpY2t5RXJyb3JzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xZTM4ZDEwZSZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzFlMzhkMTBlJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9VcGxvYWRlZEVycm9ycy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmYxN2VjNDUmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1VwbG9hZGVkRXJyb3JzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1VwbG9hZGVkRXJyb3JzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9VcGxvYWRlZEVycm9ycy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD02ZjE3ZWM0NSZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtNmYxN2VjNDVcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1VwbG9hZGVkRXJyb3JzLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI2ZjE3ZWM0NVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzZmMTdlYzQ1JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNmYxN2VjNDUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1VwbG9hZGVkRXJyb3JzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02ZjE3ZWM0NSZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzZmMTdlYzQ1JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9zcGlubmVyTG9hZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wMDg5MmRmNlwiXG5jb25zdCBzY3JpcHQgPSB7fVxuXG5pbXBvcnQgXCIuL3NwaW5uZXJMb2FkZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MDA4OTJkZjYmbGFuZz1jc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3Bpbm5lckxvYWRlci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMDA4OTJkZjZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwMDg5MmRmNicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzAwODkyZGY2JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9zcGlubmVyTG9hZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wMDg5MmRmNlwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwMDg5MmRmNicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRWxlbWVudFN0YXR1cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWViOGRlYjAmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0VsZW1lbnRTdGF0dXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRWxlbWVudFN0YXR1cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zdGF0dXMvRWxlbWVudFN0YXR1cy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMWViOGRlYjBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcxZWI4ZGViMCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzFlYjhkZWIwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9FbGVtZW50U3RhdHVzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xZWI4ZGViMCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzFlYjhkZWIwJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xZjJmOWFiOCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUHJldmlvdXNseVB1Ymxpc2hlZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3N0YXR1cy9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIxZjJmOWFiOFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzFmMmY5YWI4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMWYyZjlhYjgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1ByZXZpb3VzbHlQdWJsaXNoZWQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFmMmY5YWI4JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMWYyZjlhYjgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXR5RGVmYXVsdFZhbHVlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yM2VlMzc1YyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWN0aXZpdHlEZWZhdWx0VmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQWN0aXZpdHlEZWZhdWx0VmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5RGVmYXVsdFZhbHVlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyM2VlMzc1Y1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzIzZWUzNzVjJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjNlZTM3NWMnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FjdGl2aXR5RGVmYXVsdFZhbHVlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yM2VlMzc1YyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzIzZWUzNzVjJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BY3Rpdml0eURldGFpbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGU0MDJiMDYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FjdGl2aXR5RGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BY3Rpdml0eURldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5RGV0YWlsLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0ZTQwMmIwNlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzRlNDAyYjA2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNGU0MDJiMDYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FjdGl2aXR5RGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZTQwMmIwNiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzRlNDAyYjA2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BY3Rpdml0eUluZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wYTU3MWZkNiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWN0aXZpdHlJbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQWN0aXZpdHlJbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL0FjdGl2aXR5SW5kZXgudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MGE1NzFmZDYmbGFuZz1zY3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eUluZGV4LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwYTU3MWZkNlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzBhNTcxZmQ2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMGE1NzFmZDYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FjdGl2aXR5SW5kZXgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBhNTcxZmQ2JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMGE1NzFmZDYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0NyZWF0ZU1vZGFsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jN2NhMjhiOCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQ3JlYXRlTW9kYWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0NyZWF0ZU1vZGFsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vQ3JlYXRlTW9kYWwudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9YzdjYTI4YjgmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LWM3Y2EyOGI4XCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQ3JlYXRlTW9kYWwudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImM3Y2EyOGI4XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnYzdjYTI4YjgnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdjN2NhMjhiOCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQ3JlYXRlTW9kYWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWM3Y2EyOGI4JnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignYzdjYTI4YjgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Vycm9ySXRlbS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDYzY2JkODYmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0Vycm9ySXRlbS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9FcnJvckl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL0Vycm9ySXRlbS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wNjNjYmQ4NiZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtMDYzY2JkODZcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvRXJyb3JJdGVtLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwNjNjYmQ4NlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzA2M2NiZDg2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMDYzY2JkODYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Vycm9ySXRlbS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDYzY2JkODYmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwNjNjYmQ4NicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUHVibGlzaFNlbGVjdGVkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zZmIxZTFjYyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUHVibGlzaFNlbGVjdGVkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1B1Ymxpc2hTZWxlY3RlZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL1B1Ymxpc2hTZWxlY3RlZC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiM2ZiMWUxY2NcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCczZmIxZTFjYycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzNmYjFlMWNjJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9QdWJsaXNoU2VsZWN0ZWQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNmYjFlMWNjJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignM2ZiMWUxY2MnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlZnJlc2hUb2FzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDAxMTg5N2EmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1JlZnJlc2hUb2FzdC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZWZyZXNoVG9hc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9SZWZyZXNoVG9hc3QudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjQwMTE4OTdhXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNDAxMTg5N2EnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0MDExODk3YScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVmcmVzaFRvYXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00MDExODk3YSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzQwMTE4OTdhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9WYWxpZGF0aW9uRXJyb3JzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNTc1ZDNiMiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVmFsaWRhdGlvbkVycm9ycy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9WYWxpZGF0aW9uRXJyb3JzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvVmFsaWRhdGlvbkVycm9ycy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMjU3NWQzYjJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyNTc1ZDNiMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzI1NzVkM2IyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9WYWxpZGF0aW9uRXJyb3JzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNTc1ZDNiMiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzI1NzVkM2IyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BY3Rpdml0eURhdGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAxMzhlYTg4JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BY3Rpdml0eURhdGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FjdGl2aXR5RGF0ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0FjdGl2aXR5RGF0ZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMDEzOGVhODhcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwMTM4ZWE4OCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzAxMzhlYTg4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BY3Rpdml0eURhdGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAxMzhlYTg4JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMDEzOGVhODgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0NvbmRpdGlvbnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWJhZmIyNWJhJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Db25kaXRpb25zLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Db25kaXRpb25zLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvQ29uZGl0aW9ucy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiYmFmYjI1YmFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdiYWZiMjViYScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2JhZmIyNWJhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Db25kaXRpb25zLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iYWZiMjViYSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2JhZmIyNWJhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Db250YWN0SW5mby52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjlhN2QzMTMmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0NvbnRhY3RJbmZvLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Db250YWN0SW5mby52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0NvbnRhY3RJbmZvLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyOWE3ZDMxM1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzI5YTdkMzEzJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjlhN2QzMTMnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0NvbnRhY3RJbmZvLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yOWE3ZDMxMyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzI5YTdkMzEzJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YzdkNzk5YmUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJjN2Q3OTliZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2M3ZDc5OWJlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnYzdkNzk5YmUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jN2Q3OTliZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2M3ZDc5OWJlJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9IdW1hbml0YXJpYW5TY29wZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Y2RmYjc0NjgmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0h1bWFuaXRhcmlhblNjb3BlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0h1bWFuaXRhcmlhblNjb3BlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9IdW1hbml0YXJpYW5TY29wZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiY2RmYjc0NjhcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdjZGZiNzQ2OCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2NkZmI3NDY4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9IdW1hbml0YXJpYW5TY29wZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Y2RmYjc0NjgmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdjZGZiNzQ2OCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vSWF0aUlkZW50aWZpZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTUyNjFhZmZlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9JYXRpSWRlbnRpZmllci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vSWF0aUlkZW50aWZpZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9JYXRpSWRlbnRpZmllci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNTI2MWFmZmVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1MjYxYWZmZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzUyNjFhZmZlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9JYXRpSWRlbnRpZmllci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTI2MWFmZmUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc1MjYxYWZmZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vTGVnYWN5RGF0YS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Y2IzZTQ4MDQmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0xlZ2FjeURhdGEudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0xlZ2FjeURhdGEudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9MZWdhY3lEYXRhLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJjYjNlNDgwNFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2NiM2U0ODA0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnY2IzZTQ4MDQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0xlZ2FjeURhdGEudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWNiM2U0ODA0JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignY2IzZTQ4MDQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0xvY2F0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xMmMyZTg2MCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTG9jYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0xvY2F0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvTG9jYXRpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjEyYzJlODYwXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMTJjMmU4NjAnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxMmMyZTg2MCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vTG9jYXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTEyYzJlODYwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMTJjMmU4NjAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL090aGVySWRlbnRpZmllci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzhiNjQ0MDQmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL090aGVySWRlbnRpZmllci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vT3RoZXJJZGVudGlmaWVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvT3RoZXJJZGVudGlmaWVyLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3OGI2NDQwNFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzc4YjY0NDA0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNzhiNjQ0MDQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL090aGVySWRlbnRpZmllci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzhiNjQ0MDQmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc3OGI2NDQwNCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUGFydGljaXBhdGluZ09yZy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2Q0ZGFiNzQmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1BhcnRpY2lwYXRpbmdPcmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1BhcnRpY2lwYXRpbmdPcmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9QYXJ0aWNpcGF0aW5nT3JnLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3ZDRkYWI3NFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzdkNGRhYjc0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnN2Q0ZGFiNzQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1BhcnRpY2lwYXRpbmdPcmcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdkNGRhYjc0JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignN2Q0ZGFiNzQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1BsYW5uZWREaXNidXJzZW1lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAxNzJjMmFjJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9QbGFubmVkRGlzYnVyc2VtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1BsYW5uZWREaXNidXJzZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BsYW5uZWREaXNidXJzZW1lbnQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjAxNzJjMmFjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMDE3MmMyYWMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwMTcyYzJhYycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUGxhbm5lZERpc2J1cnNlbWVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDE3MmMyYWMmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwMTcyYzJhYycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUG9saWN5TWFya2VyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iZDk4ODg5MiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUG9saWN5TWFya2VyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Qb2xpY3lNYXJrZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Qb2xpY3lNYXJrZXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImJkOTg4ODkyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnYmQ5ODg4OTInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdiZDk4ODg5MicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUG9saWN5TWFya2VyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iZDk4ODg5MiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2JkOTg4ODkyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZjE4YmUzMCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVjaXBpZW50Q291bnRyeS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVjaXBpZW50Q291bnRyeS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlY2lwaWVudENvdW50cnkudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjdmMThiZTMwXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnN2YxOGJlMzAnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3ZjE4YmUzMCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVjaXBpZW50Q291bnRyeS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2YxOGJlMzAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc3ZjE4YmUzMCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVjaXBpZW50UmVnaW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lYmQ2NjJkYyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVjaXBpZW50UmVnaW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JlY2lwaWVudFJlZ2lvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVjaXBpZW50UmVnaW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJlYmQ2NjJkY1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2ViZDY2MmRjJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZWJkNjYyZGMnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlY2lwaWVudFJlZ2lvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZWJkNjYyZGMmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdlYmQ2NjJkYycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVsYXRlZEFjdGl2aXR5LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yY2EwNGMwMiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVsYXRlZEFjdGl2aXR5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZWxhdGVkQWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZWxhdGVkQWN0aXZpdHkudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjJjYTA0YzAyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMmNhMDRjMDInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcyY2EwNGMwMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVsYXRlZEFjdGl2aXR5LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yY2EwNGMwMiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzJjYTA0YzAyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZXBvcnRpbmdPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQzOGIwYWU2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZXBvcnRpbmdPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVwb3J0aW5nT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZXBvcnRpbmdPcmdhbml6YXRpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjQzOGIwYWU2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNDM4YjBhZTYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0MzhiMGFlNicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVwb3J0aW5nT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00MzhiMGFlNiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzQzOGIwYWU2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZXN1bHQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI3N2NiNGYwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZXN1bHQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1Jlc3VsdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1Jlc3VsdC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMjc3Y2I0ZjBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyNzdjYjRmMCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzI3N2NiNGYwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZXN1bHQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI3N2NiNGYwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjc3Y2I0ZjAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1NlY3Rvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzI5NDY4NTEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1NlY3Rvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vU2VjdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvU2VjdG9yLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzMjk0Njg1MVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzMyOTQ2ODUxJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMzI5NDY4NTEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1NlY3Rvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzI5NDY4NTEmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCczMjk0Njg1MScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVGFnLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wMTE5NjY4MiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVGFnLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9UYWcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9UYWcudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjAxMTk2NjgyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMDExOTY2ODInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwMTE5NjY4MicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVGFnLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wMTE5NjY4MiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzAxMTk2NjgyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UaXRsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDc0YTcxM2QmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RpdGxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9UaXRsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1RpdGxlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0NzRhNzEzZFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzQ3NGE3MTNkJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNDc0YTcxM2QnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RpdGxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NzRhNzEzZCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzQ3NGE3MTNkJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UcmFuc2FjdGlvbnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJiOGFmZjAwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UcmFuc2FjdGlvbnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RyYW5zYWN0aW9ucy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1RyYW5zYWN0aW9ucy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMmI4YWZmMDBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyYjhhZmYwMCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzJiOGFmZjAwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9UcmFuc2FjdGlvbnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJiOGFmZjAwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMmI4YWZmMDAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0luZGljYXRvckRldGFpbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWZmMTc3NzImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0luZGljYXRvckRldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vSW5kaWNhdG9yRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9JbmRpY2F0b3JEZXRhaWwudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjVmZjE3NzcyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNWZmMTc3NzInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1ZmYxNzc3MicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vSW5kaWNhdG9yRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01ZmYxNzc3MiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzVmZjE3NzcyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9JbmRpY2F0b3JMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02Zjc4Y2Y3ZiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vSW5kaWNhdG9yTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vSW5kaWNhdG9yTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvSW5kaWNhdG9yTGlzdC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNmY3OGNmN2ZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc2Zjc4Y2Y3ZicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzZmNzhjZjdmJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9JbmRpY2F0b3JMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02Zjc4Y2Y3ZiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzZmNzhjZjdmJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BZ2dyZWdhdGlvblN0YXR1cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZGQ3NjNlNGMmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FnZ3JlZ2F0aW9uU3RhdHVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BZ2dyZWdhdGlvblN0YXR1cy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvQWdncmVnYXRpb25TdGF0dXMudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImRkNzYzZTRjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZGQ3NjNlNGMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdkZDc2M2U0YycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWdncmVnYXRpb25TdGF0dXMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWRkNzYzZTRjJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZGQ3NjNlNGMnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Jhc2VsaW5lLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02YWE2ZDA2MiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQmFzZWxpbmUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Jhc2VsaW5lLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9CYXNlbGluZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNmFhNmQwNjJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc2YWE2ZDA2MicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzZhYTZkMDYyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9CYXNlbGluZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmFhNmQwNjImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc2YWE2ZDA2MicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc3NWI2MWUyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3NzViNjFlMlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzc3NWI2MWUyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNzc1YjYxZTInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03NzViNjFlMiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzc3NWI2MWUyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNjYjI2MDNmJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvRG9jdW1lbnRMaW5rLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzY2IyNjAzZlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzNjYjI2MDNmJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnM2NiMjYwM2YnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2NiMjYwM2YmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCczY2IyNjAzZicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vSW5kaWNhdG9yQXNjZW5kaW5nLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mN2VkNmFkYSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vSW5kaWNhdG9yQXNjZW5kaW5nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9JbmRpY2F0b3JBc2NlbmRpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0luZGljYXRvckFzY2VuZGluZy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZjdlZDZhZGFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdmN2VkNmFkYScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2Y3ZWQ2YWRhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9JbmRpY2F0b3JBc2NlbmRpbmcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWY3ZWQ2YWRhJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZjdlZDZhZGEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL01lYXN1cmUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdhNjRkOTQ0JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9NZWFzdXJlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9NZWFzdXJlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9NZWFzdXJlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3YTY0ZDk0NFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzdhNjRkOTQ0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnN2E2NGQ5NDQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL01lYXN1cmUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdhNjRkOTQ0JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignN2E2NGQ5NDQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1BlcmlvZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTgxNjg0NmEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1BlcmlvZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUGVyaW9kLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9QZXJpb2QudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjU4MTY4NDZhXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNTgxNjg0NmEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1ODE2ODQ2YScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUGVyaW9kLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01ODE2ODQ2YSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzU4MTY4NDZhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZWZlcmVuY2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ4NWE0ZDllJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZWZlcmVuY2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JlZmVyZW5jZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvUmVmZXJlbmNlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0ODVhNGQ5ZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzQ4NWE0ZDllJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNDg1YTRkOWUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlZmVyZW5jZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDg1YTRkOWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0ODVhNGQ5ZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVGl0bGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPThmNmZmNjg0JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UaXRsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1RpdGxlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI4ZjZmZjY4NFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzhmNmZmNjg0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnOGY2ZmY2ODQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RpdGxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04ZjZmZjY4NCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzhmNmZmNjg0JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BY3Rpdml0aWVzRWxlbWVudHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVhNDBmY2Y0JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BY3Rpdml0aWVzRWxlbWVudHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQWN0aXZpdGllc0VsZW1lbnRzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9BY3Rpdml0aWVzRWxlbWVudHMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NWE0MGZjZjQmbGFuZz1zY3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0aWVzRWxlbWVudHMudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjVhNDBmY2Y0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNWE0MGZjZjQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1YTQwZmNmNCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWN0aXZpdGllc0VsZW1lbnRzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01YTQwZmNmNCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzVhNDBmY2Y0JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BY3Rpdml0eUVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdmNWQ2MGE2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BY3Rpdml0eUVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQWN0aXZpdHlFbGVtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0eUVsZW1lbnQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjdmNWQ2MGE2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnN2Y1ZDYwYTYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3ZjVkNjBhNicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWN0aXZpdHlFbGVtZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZjVkNjBhNiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzdmNWQ2MGE2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BZGRBY3Rpdml0eUJ1dHRvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDUwZTE3M2MmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FkZEFjdGl2aXR5QnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BZGRBY3Rpdml0eUJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FkZEFjdGl2aXR5QnV0dG9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwNTBlMTczY1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzA1MGUxNzNjJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMDUwZTE3M2MnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FkZEFjdGl2aXR5QnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wNTBlMTczYyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzA1MGUxNzNjJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02NjFlNmY4ZSZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NjYxZTZmOGUmc2NvcGVkPXRydWUmbGFuZz1zY3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LTY2MWU2ZjhlXCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNjYxZTZmOGVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc2NjFlNmY4ZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzY2MWU2ZjhlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02NjFlNmY4ZSZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzY2MWU2ZjhlJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9FbGVtZW50c05vdGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTViYzA0MWY5JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9FbGVtZW50c05vdGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0VsZW1lbnRzTm90ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0VsZW1lbnRzTm90ZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNWJjMDQxZjlcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1YmMwNDFmOScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzViYzA0MWY5JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9FbGVtZW50c05vdGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTViYzA0MWY5JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNWJjMDQxZjknLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0VtcHR5QWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTlhZWY5Njg4JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9FbXB0eUFjdGl2aXR5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9FbXB0eUFjdGl2aXR5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRW1wdHlBY3Rpdml0eS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiOWFlZjk2ODhcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc5YWVmOTY4OCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzlhZWY5Njg4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9FbXB0eUFjdGl2aXR5LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD05YWVmOTY4OCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzlhZWY5Njg4JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9QYWdlVGl0bGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc1ODllODZlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9QYWdlVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUGFnZVRpdGxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9QYWdlVGl0bGUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjc1ODllODZlXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNzU4OWU4NmUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3NTg5ZTg2ZScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUGFnZVRpdGxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03NTg5ZTg2ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzc1ODllODZlJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9TaWRlYmFySGVscEJsb2NrLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mZWYyNmE4MCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vU2lkZWJhckhlbHBCbG9jay52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vU2lkZWJhckhlbHBCbG9jay52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL1NpZGViYXJIZWxwQmxvY2sudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImZlZjI2YTgwXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZmVmMjZhODAnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdmZWYyNmE4MCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vU2lkZWJhckhlbHBCbG9jay52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZmVmMjZhODAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdmZWYyNmE4MCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVGFibGVMYXlvdXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVkODRhMWQ4JnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UYWJsZUxheW91dC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9UYWJsZUxheW91dC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vVGFibGVMYXlvdXQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NWQ4NGExZDgmc2NvcGVkPXRydWUmbGFuZz1jc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtNWQ4NGExZDhcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9UYWJsZUxheW91dC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNWQ4NGExZDhcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1ZDg0YTFkOCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzVkODRhMWQ4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9UYWJsZUxheW91dC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWQ4NGExZDgmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc1ZDg0YTFkOCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUGVyaW9kc0RldGFpbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzJlM2I1OTkmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1BlcmlvZHNEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1BlcmlvZHNEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL1BlcmlvZHNEZXRhaWwudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjcyZTNiNTk5XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNzJlM2I1OTknLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3MmUzYjU5OScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUGVyaW9kc0RldGFpbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzJlM2I1OTkmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc3MmUzYjU5OScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUGVyaW9kc0xpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQzM2IyOTM0JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9QZXJpb2RzTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUGVyaW9kc0xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL1BlcmlvZHNMaXN0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJkMzNiMjkzNFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2QzM2IyOTM0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZDMzYjI5MzQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1BlcmlvZHNMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kMzNiMjkzNCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2QzM2IyOTM0JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BY3R1YWxWYWx1ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzlhODhmYzUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FjdHVhbFZhbHVlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BY3R1YWxWYWx1ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvZWxlbWVudHMvQWN0dWFsVmFsdWUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjc5YTg4ZmM1XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNzlhODhmYzUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3OWE4OGZjNScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWN0dWFsVmFsdWUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc5YTg4ZmM1JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNzlhODhmYzUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RhcmdldFZhbHVlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZTU3MWIyMiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVGFyZ2V0VmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RhcmdldFZhbHVlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9lbGVtZW50cy9UYXJnZXRWYWx1ZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMGU1NzFiMjJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwZTU3MWIyMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzBlNTcxYjIyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9UYXJnZXRWYWx1ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGU1NzFiMjImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwZTU3MWIyMicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVzdWx0RGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02YzIwZjE3OCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVzdWx0RGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZXN1bHREZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL1Jlc3VsdERldGFpbC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNmMyMGYxNzhcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc2YzIwZjE3OCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzZjMjBmMTc4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZXN1bHREZXRhaWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZjMjBmMTc4JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNmMyMGYxNzgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1Jlc3VsdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE4ZmU0MjE5JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZXN1bHRFbGVtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZXN1bHRFbGVtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHRFbGVtZW50LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIxOGZlNDIxOVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzE4ZmU0MjE5JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMThmZTQyMTknLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1Jlc3VsdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE4ZmU0MjE5JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMThmZTQyMTknLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1Jlc3VsdExpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWFhMDZhODVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZXN1bHRMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZXN1bHRMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHRMaXN0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJhYTA2YTg1ZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2FhMDZhODVlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnYWEwNmE4NWUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1Jlc3VsdExpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWFhMDZhODVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignYWEwNmE4NWUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGUyZTgzMDcmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9Eb2N1bWVudExpbmsudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjBlMmU4MzA3XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMGUyZTgzMDcnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwZTJlODMwNycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZTJlODMwNyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzBlMmU4MzA3JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9JbmRpY2F0b3IudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRjMmU2ODJkJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9JbmRpY2F0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0luZGljYXRvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvSW5kaWNhdG9yLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0YzJlNjgyZFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzRjMmU2ODJkJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNGMyZTY4MmQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0luZGljYXRvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGMyZTY4MmQmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0YzJlNjgyZCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVmZXJlbmNlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04MWMyMjkyZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVmZXJlbmNlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZWZlcmVuY2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1JlZmVyZW5jZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiODFjMjI5MmVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc4MWMyMjkyZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzgxYzIyOTJlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZWZlcmVuY2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTgxYzIyOTJlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignODFjMjI5MmUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1Jlc3VsdFR5cGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNjMjFjNDZlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZXN1bHRUeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZXN1bHRUeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9SZXN1bHRUeXBlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzYzIxYzQ2ZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzNjMjFjNDZlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnM2MyMWM0NmUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1Jlc3VsdFR5cGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNjMjFjNDZlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignM2MyMWM0NmUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RpdGxlRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQxMmZlZDU0JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UaXRsZURlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9UaXRsZURlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9UaXRsZURlc2NyaXB0aW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJkMTJmZWQ1NFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2QxMmZlZDU0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZDEyZmVkNTQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RpdGxlRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQxMmZlZDU0JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZDEyZmVkNTQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RyYW5zYWN0aW9uRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wN2MwNmMxMiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVHJhbnNhY3Rpb25EZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RyYW5zYWN0aW9uRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL1RyYW5zYWN0aW9uRGV0YWlsLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwN2MwNmMxMlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzA3YzA2YzEyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMDdjMDZjMTInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RyYW5zYWN0aW9uRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wN2MwNmMxMiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzA3YzA2YzEyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UcmFuc2FjdGlvbkVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQ1NmMxMWVhJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UcmFuc2FjdGlvbkVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RyYW5zYWN0aW9uRWxlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkVsZW1lbnQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImQ1NmMxMWVhXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZDU2YzExZWEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdkNTZjMTFlYScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVHJhbnNhY3Rpb25FbGVtZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kNTZjMTFlYSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2Q1NmMxMWVhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UcmFuc2FjdGlvbkxpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWNjODcyN2MyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UcmFuc2FjdGlvbkxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RyYW5zYWN0aW9uTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkxpc3QudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImNjODcyN2MyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnY2M4NzI3YzInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdjYzg3MjdjMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVHJhbnNhY3Rpb25MaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jYzg3MjdjMiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2NjODcyN2MyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BaWRUeXBlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kZjk2Yzk2YSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWlkVHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQWlkVHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9BaWRUeXBlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJkZjk2Yzk2YVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2RmOTZjOTZhJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZGY5NmM5NmEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FpZFR5cGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWRmOTZjOTZhJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZGY5NmM5NmEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yMmE4YTczMSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyMmE4YTczMVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzIyYThhNzMxJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjJhOGE3MzEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yMmE4YTczMSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzIyYThhNzMxJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9EaXNidXJzZW1lbnRDaGFubmVsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jNzg1MzA1MiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRGlzYnVyc2VtZW50Q2hhbm5lbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRGlzYnVyc2VtZW50Q2hhbm5lbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9EaXNidXJzZW1lbnRDaGFubmVsLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJjNzg1MzA1MlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2M3ODUzMDUyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnYzc4NTMwNTInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Rpc2J1cnNlbWVudENoYW5uZWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWM3ODUzMDUyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignYzc4NTMwNTInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0ZpbmFuY2VUeXBlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNWM3YzUyZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRmluYW5jZVR5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0ZpbmFuY2VUeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0ZpbmFuY2VUeXBlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJlNWM3YzUyZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2U1YzdjNTJlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZTVjN2M1MmUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0ZpbmFuY2VUeXBlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNWM3YzUyZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2U1YzdjNTJlJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9GbG93VHlwZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGU0MDZhYTMmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0Zsb3dUeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9GbG93VHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9GbG93VHlwZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMGU0MDZhYTNcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwZTQwNmFhMycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzBlNDA2YWEzJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9GbG93VHlwZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGU0MDZhYTMmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwZTQwNmFhMycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUHJvdmlkZXJPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM1ZWY2ODVmJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Qcm92aWRlck9yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUHJvdmlkZXJPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUHJvdmlkZXJPcmdhbml6YXRpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjM1ZWY2ODVmXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMzVlZjY4NWYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCczNWVmNjg1ZicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUHJvdmlkZXJPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM1ZWY2ODVmJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMzVlZjY4NWYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlY2VpdmVyT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04YTA4ZGY0NiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVjZWl2ZXJPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JlY2VpdmVyT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1JlY2VpdmVyT3JnYW5pemF0aW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI4YTA4ZGY0NlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzhhMDhkZjQ2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnOGEwOGRmNDYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlY2VpdmVyT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04YTA4ZGY0NiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzhhMDhkZjQ2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00M2Q1MzZkOCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVjaXBpZW50Q291bnRyeS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVjaXBpZW50Q291bnRyeS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNpcGllbnRDb3VudHJ5LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0M2Q1MzZkOFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzQzZDUzNmQ4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNDNkNTM2ZDgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlY2lwaWVudENvdW50cnkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQzZDUzNmQ4JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNDNkNTM2ZDgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlY2lwaWVudFJlZ2lvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGEzMGJhYTImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1JlY2lwaWVudFJlZ2lvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVjaXBpZW50UmVnaW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1JlY2lwaWVudFJlZ2lvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMGEzMGJhYTJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwYTMwYmFhMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzBhMzBiYWEyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZWNpcGllbnRSZWdpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBhMzBiYWEyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMGEzMGJhYTInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1NlY3Rvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGVlYmFhNDEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1NlY3Rvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vU2VjdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1NlY3Rvci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNGVlYmFhNDFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc0ZWViYWE0MScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzRlZWJhYTQxJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9TZWN0b3IudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRlZWJhYTQxJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNGVlYmFhNDEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RpZWRTdGF0dXMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU3MDg5ODQxJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UaWVkU3RhdHVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9UaWVkU3RhdHVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RpZWRTdGF0dXMudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjU3MDg5ODQxXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNTcwODk4NDEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1NzA4OTg0MScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVGllZFN0YXR1cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTcwODk4NDEmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc1NzA4OTg0MScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVHJhbnNhY3Rpb25EYXRlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02MTJmY2M2MSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVHJhbnNhY3Rpb25EYXRlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9UcmFuc2FjdGlvbkRhdGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVHJhbnNhY3Rpb25EYXRlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI2MTJmY2M2MVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzYxMmZjYzYxJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNjEyZmNjNjEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RyYW5zYWN0aW9uRGF0ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjEyZmNjNjEmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc2MTJmY2M2MScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVHJhbnNhY3Rpb25UeXBlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02M2Y2NzQyNiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVHJhbnNhY3Rpb25UeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9UcmFuc2FjdGlvblR5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVHJhbnNhY3Rpb25UeXBlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI2M2Y2NzQyNlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzYzZjY3NDI2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNjNmNjc0MjYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RyYW5zYWN0aW9uVHlwZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjNmNjc0MjYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc2M2Y2NzQyNicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVmFsdWUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE2OTcyODM0JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9WYWx1ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVmFsdWUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjE2OTcyODM0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMTY5NzI4MzQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxNjk3MjgzNCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVmFsdWUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE2OTcyODM0JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMTY5NzI4MzQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0F1ZGl0TGlzdGluZy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZmI2MTlmMjAmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0F1ZGl0TGlzdGluZy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BdWRpdExpc3RpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2F1ZGl0L0F1ZGl0TGlzdGluZy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZmI2MTlmMjBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdmYjYxOWYyMCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2ZiNjE5ZjIwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BdWRpdExpc3RpbmcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWZiNjE5ZjIwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZmI2MTlmMjAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Rhc2hib2FyZEdyYXBoLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zMjI1N2Y3MCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRGFzaGJvYXJkR3JhcGgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRGFzaGJvYXJkR3JhcGgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRHcmFwaC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMzIyNTdmNzBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCczMjI1N2Y3MCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzMyMjU3ZjcwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9EYXNoYm9hcmRHcmFwaC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzIyNTdmNzAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCczMjI1N2Y3MCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRmMjI1ZDNlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5leHBvcnQgKiBmcm9tIFwiLi9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5cbmltcG9ydCBcIi4vRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NGYyMjVkM2UmbGFuZz1zY3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjRmMjI1ZDNlXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNGYyMjVkM2UnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0ZjIyNWQzZScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRmMjI1ZDNlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNGYyMjVkM2UnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Rhc2hib2FyZFBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWUxMTljM2Y2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9EYXNoYm9hcmRQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Rhc2hib2FyZFBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRQYWdlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJlMTE5YzNmNlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2UxMTljM2Y2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZTExOWMzZjYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Rhc2hib2FyZFBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWUxMTljM2Y2JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZTExOWMzZjYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Rhc2hib2FyZFN0YXRzU2VjdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjdjNmZiM2MmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0Rhc2hib2FyZFN0YXRzU2VjdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5leHBvcnQgKiBmcm9tIFwiLi9EYXNoYm9hcmRTdGF0c1NlY3Rpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRTdGF0c1NlY3Rpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjI3YzZmYjNjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMjdjNmZiM2MnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcyN2M2ZmIzYycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yN2M2ZmIzYyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzI3YzZmYjNjJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BY3Rpdml0eVVwbG9hZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGVkNWZkZDImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FjdGl2aXR5VXBsb2FkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FjdGl2aXR5VXBsb2FkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvQWN0aXZpdHlVcGxvYWQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjBlZDVmZGQyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMGVkNWZkZDInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwZWQ1ZmRkMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWN0aXZpdHlVcGxvYWQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBlZDVmZGQyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMGVkNWZkZDInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXR5WGxzVXBsb2FkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yODA3YzA4YyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWN0aXZpdHlYbHNVcGxvYWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQWN0aXZpdHlYbHNVcGxvYWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9BY3Rpdml0eVhsc1VwbG9hZC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMjgwN2MwOGNcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyODA3YzA4YycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzI4MDdjMDhjJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BY3Rpdml0eVhsc1VwbG9hZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjgwN2MwOGMmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcyODA3YzA4YycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vSW1wb3J0TGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDBkNzg3MGEmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0ltcG9ydExpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vSW1wb3J0TGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vSW1wb3J0TGlzdC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD00MGQ3ODcwYSZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtNDBkNzg3MGFcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvSW1wb3J0TGlzdC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNDBkNzg3MGFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc0MGQ3ODcwYScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzQwZDc4NzBhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9JbXBvcnRMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00MGQ3ODcwYSZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzQwZDc4NzBhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9JbXBvcnRQbGFjZWhvbGRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWQxNDhkMzcmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0ltcG9ydFBsYWNlaG9sZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0ltcG9ydFBsYWNlaG9sZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvSW1wb3J0UGxhY2Vob2xkZXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjVkMTQ4ZDM3XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNWQxNDhkMzcnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1ZDE0OGQzNycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vSW1wb3J0UGxhY2Vob2xkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVkMTQ4ZDM3JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNWQxNDhkMzcnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0xpc3RFbGVtZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD05YTYwODQzMiZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTGlzdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vTGlzdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL0xpc3RFbGVtZW50LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTlhNjA4NDMyJnNjb3BlZD10cnVlJmxhbmc9Y3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LTlhNjA4NDMyXCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0xpc3RFbGVtZW50LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI5YTYwODQzMlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzlhNjA4NDMyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnOWE2MDg0MzInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0xpc3RFbGVtZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD05YTYwODQzMiZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzlhNjA4NDMyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9YbHNMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01ZjUwMDhiNCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vWGxzTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9YbHNMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9YbHNMaXN0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTVmNTAwOGI0JnNjb3BlZD10cnVlJmxhbmc9Y3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LTVmNTAwOGI0XCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L1hsc0xpc3QudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjVmNTAwOGI0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNWY1MDA4YjQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1ZjUwMDhiNCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vWGxzTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWY1MDA4YjQmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc1ZjUwMDhiNCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vT3JnYW5pc2F0aW9uRGF0YS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGFkYTVmMzYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL09yZ2FuaXNhdGlvbkRhdGEudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL09yZ2FuaXNhdGlvbkRhdGEudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9PcmdhbmlzYXRpb25EYXRhLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTRhZGE1ZjM2Jmxhbmc9c2Nzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkRhdGEudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjRhZGE1ZjM2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNGFkYTVmMzYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0YWRhNWYzNicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vT3JnYW5pc2F0aW9uRGF0YS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGFkYTVmMzYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0YWRhNWYzNicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vT3JnYW5pc2F0aW9uRWxlbWVudHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ1NGVhODAzJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9PcmdhbmlzYXRpb25FbGVtZW50cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9PcmdhbmlzYXRpb25FbGVtZW50cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkVsZW1lbnRzLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0NTRlYTgwM1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzQ1NGVhODAzJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNDU0ZWE4MDMnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL09yZ2FuaXNhdGlvbkVsZW1lbnRzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NTRlYTgwMyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzQ1NGVhODAzJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9PcmdhbmlzYXRpb25FbGVtZW50c0RldGFpbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjgzOWUwOTgmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWwudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjI4MzllMDk4XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMjgzOWUwOTgnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcyODM5ZTA5OCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI4MzllMDk4JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjgzOWUwOTgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZWY2ZDMxMmEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Eb2N1bWVudExpbmsudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImVmNmQzMTJhXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZWY2ZDMxMmEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdlZjZkMzEyYScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lZjZkMzEyYSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2VmNmQzMTJhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZWNpcGllbnRDb3VudHJ5QnVkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jYmU4NzZkMCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVjaXBpZW50Q291bnRyeUJ1ZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZWNpcGllbnRDb3VudHJ5QnVkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVjaXBpZW50Q291bnRyeUJ1ZGdldC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiY2JlODc2ZDBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdjYmU4NzZkMCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2NiZTg3NmQwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZWNpcGllbnRDb3VudHJ5QnVkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jYmU4NzZkMCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2NiZTg3NmQwJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZXBvcnRpbmdPcmdCdWRnZXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI0NjdkMmYxJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZXBvcnRpbmdPcmdCdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVwb3J0aW5nT3JnQnVkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVwb3J0aW5nT3JnQnVkZ2V0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyNDY3ZDJmMVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzI0NjdkMmYxJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjQ2N2QyZjEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlcG9ydGluZ09yZ0J1ZGdldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjQ2N2QyZjEmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcyNDY3ZDJmMScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVwb3J0aW5nT3JnYW5pc2F0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02OTk5YWVlMiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVwb3J0aW5nT3JnYW5pc2F0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JlcG9ydGluZ09yZ2FuaXNhdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlcG9ydGluZ09yZ2FuaXNhdGlvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNjk5OWFlZTJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc2OTk5YWVlMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzY5OTlhZWUyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZXBvcnRpbmdPcmdhbmlzYXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTY5OTlhZWUyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNjk5OWFlZTInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlcG9ydGluZ1JlZ2lvbkJ1ZGdldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ODVjOWRjM2UmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1JlcG9ydGluZ1JlZ2lvbkJ1ZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZXBvcnRpbmdSZWdpb25CdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZXBvcnRpbmdSZWdpb25CdWRnZXQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjg1YzlkYzNlXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnODVjOWRjM2UnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc4NWM5ZGMzZScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVwb3J0aW5nUmVnaW9uQnVkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04NWM5ZGMzZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzg1YzlkYzNlJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Ub3RhbEJ1ZGdldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZDNjMGQzM2EmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RvdGFsQnVkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RvdGFsQnVkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvVG90YWxCdWRnZXQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImQzYzBkMzNhXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZDNjMGQzM2EnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdkM2MwZDMzYScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVG90YWxCdWRnZXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQzYzBkMzNhJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZDNjMGQzM2EnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RvdGFsRXhwZW5kaXR1cmUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ2NTVmOTUxJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Ub3RhbEV4cGVuZGl0dXJlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RvdGFsRXhwZW5kaXR1cmUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Ub3RhbEV4cGVuZGl0dXJlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0NjU1Zjk1MVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzQ2NTVmOTUxJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNDY1NWY5NTEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RvdGFsRXhwZW5kaXR1cmUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ2NTVmOTUxJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNDY1NWY5NTEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1Bhc3N3b3JkUmVjb3ZlcnkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTcwMzg1ZGEzJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9QYXNzd29yZFJlY292ZXJ5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1Bhc3N3b3JkUmVjb3ZlcnkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Bhc3N3b3JkUmVjb3ZlcnkudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjcwMzg1ZGEzXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNzAzODVkYTMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3MDM4NWRhMycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUGFzc3dvcmRSZWNvdmVyeS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzAzODVkYTMmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc3MDM4NWRhMycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVzZXRQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNmI3NjRiYiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVzZXRQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZXNldFBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9SZXNldFBhZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MzZiNzY0YmImbGFuZz1zY3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9SZXNldFBhZ2UudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjM2Yjc2NGJiXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMzZiNzY0YmInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCczNmI3NjRiYicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVzZXRQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNmI3NjRiYiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzM2Yjc2NGJiJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZXNldFBhc3N3b3JkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NWI0MmNjNyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVzZXRQYXNzd29yZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVzZXRQYXNzd29yZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Jlc2V0UGFzc3dvcmQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjQ1YjQyY2M3XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNDViNDJjYzcnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0NWI0MmNjNycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVzZXRQYXNzd29yZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDViNDJjYzcmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0NWI0MmNjNycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vU2V0dGluZ0RlZmF1bHRGb3JtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZDg2NDY2NyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vU2V0dGluZ0RlZmF1bHRGb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9TZXR0aW5nRGVmYXVsdEZvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zZXR0aW5nL1NldHRpbmdEZWZhdWx0Rm9ybS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNGQ4NjQ2NjdcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc0ZDg2NDY2NycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzRkODY0NjY3JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9TZXR0aW5nRGVmYXVsdEZvcm0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRkODY0NjY3JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNGQ4NjQ2NjcnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1NldHRpbmdQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04MWE3ZmQ4NiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vU2V0dGluZ1BhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1NldHRpbmdQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc2V0dGluZy9TZXR0aW5nUGFnZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiODFhN2ZkODZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc4MWE3ZmQ4NicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzgxYTdmZDg2JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9TZXR0aW5nUGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ODFhN2ZkODYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc4MWE3ZmQ4NicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vU2V0dGluZ1B1Ymxpc2hpbmdGb3JtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02MzA3NzMwNSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vU2V0dGluZ1B1Ymxpc2hpbmdGb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9TZXR0aW5nUHVibGlzaGluZ0Zvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zZXR0aW5nL1NldHRpbmdQdWJsaXNoaW5nRm9ybS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNjMwNzczMDVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc2MzA3NzMwNScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzYzMDc3MzA1JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9TZXR0aW5nUHVibGlzaGluZ0Zvcm0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTYzMDc3MzA1JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNjMwNzczMDUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL09yZ2FuaXNhdGlvbkxpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc1Yjk5MDYwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9PcmdhbmlzYXRpb25MaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL09yZ2FuaXNhdGlvbkxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vT3JnYW5pc2F0aW9uTGlzdC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNzViOTkwNjBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc3NWI5OTA2MCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzc1Yjk5MDYwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9PcmdhbmlzYXRpb25MaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03NWI5OTA2MCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzc1Yjk5MDYwJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9TeXN0ZW1WZXJzaW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zZTRmNTEyMSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vU3lzdGVtVmVyc2lvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9TeXN0ZW1WZXJzaW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL1N5c3RlbVZlcnNpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjNlNGY1MTIxXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnM2U0ZjUxMjEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCczZTRmNTEyMScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vU3lzdGVtVmVyc2lvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2U0ZjUxMjEmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCczZTRmNTEyMScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQWRtaW5CYXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ1OTRhY2Q1JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BZG1pbkJhci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BZG1pbkJhci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL0FkbWluQmFyLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0NTk0YWNkNVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzQ1OTRhY2Q1JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNDU5NGFjZDUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FkbWluQmFyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NTk0YWNkNSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzQ1OTRhY2Q1JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UYWJsZUxpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA1YjI2MzRiJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UYWJsZUxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RhYmxlTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL1RhYmxlTGlzdC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wNWIyNjM0YiZsYW5nPWNzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL1RhYmxlTGlzdC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMDViMjYzNGJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwNWIyNjM0YicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzA1YjI2MzRiJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9UYWJsZUxpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA1YjI2MzRiJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMDViMjYzNGInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1VzZXJMaXN0aW5nLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wNjExZDlmMCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVXNlckxpc3RpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVXNlckxpc3RpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL1VzZXJMaXN0aW5nLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTA2MTFkOWYwJnNjb3BlZD10cnVlJmxhbmc9Y3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LTA2MTFkOWYwXCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvdXNlci9Vc2VyTGlzdGluZy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMDYxMWQ5ZjBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwNjExZDlmMCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzA2MTFkOWYwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Vc2VyTGlzdGluZy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDYxMWQ5ZjAmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwNjExZDlmMCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVXNlclByb2ZpbGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM3OTI3MGE2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Vc2VyUHJvZmlsZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Vc2VyUHJvZmlsZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvdXNlci9Vc2VyUHJvZmlsZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMzc5MjcwYTZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCczNzkyNzBhNicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzM3OTI3MGE2JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Vc2VyUHJvZmlsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Mzc5MjcwYTYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCczNzkyNzBhNicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQWJvdXRQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZDlmYTkwNCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWJvdXRQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BYm91dFBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvQWJvdXRQYWdlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3ZDlmYTkwNFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzdkOWZhOTA0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnN2Q5ZmE5MDQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Fib3V0UGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2Q5ZmE5MDQmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc3ZDlmYTkwNCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRW1haWxWZXJpZmljYXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdjZGE1YzE5JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9FbWFpbFZlcmlmaWNhdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRW1haWxWZXJpZmljYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvRW1haWxWZXJpZmljYXRpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjdjZGE1YzE5XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnN2NkYTVjMTknLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3Y2RhNWMxOScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRW1haWxWZXJpZmljYXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdjZGE1YzE5JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignN2NkYTVjMTknLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0lhdGlSZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE3ZTYzMmE2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBcIkB2dWVmb3JtL211bHRpc2VsZWN0L3RoZW1lcy9kZWZhdWx0LmNzcz92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9Y3NzXCJcbmltcG9ydCBcIi4vSWF0aVJlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MSZpZD0xN2U2MzJhNiZsYW5nPXNjc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIxN2U2MzJhNlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzE3ZTYzMmE2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMTdlNjMyYTYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0lhdGlSZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE3ZTYzMmE2JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMTdlNjMyYTYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0lhdGlTdGFuZGFyZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZTY4NDk0ZDAmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0lhdGlTdGFuZGFyZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5leHBvcnQgKiBmcm9tIFwiLi9JYXRpU3RhbmRhcmQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9JYXRpU3RhbmRhcmQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImU2ODQ5NGQwXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZTY4NDk0ZDAnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdlNjg0OTRkMCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vSWF0aVN0YW5kYXJkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNjg0OTRkMCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2U2ODQ5NGQwJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9QdWJsaXNoaW5nQ2hlY2tsaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kY2E2OTM5NiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUHVibGlzaGluZ0NoZWNrbGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5leHBvcnQgKiBmcm9tIFwiLi9QdWJsaXNoaW5nQ2hlY2tsaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvUHVibGlzaGluZ0NoZWNrbGlzdC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZGNhNjkzOTZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdkY2E2OTM5NicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2RjYTY5Mzk2JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9QdWJsaXNoaW5nQ2hlY2tsaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kY2E2OTM5NiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2RjYTY5Mzk2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTUyMjY2MjAwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgXCJAdnVlZm9ybS9tdWx0aXNlbGVjdC90aGVtZXMvZGVmYXVsdC5jc3M/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPWNzc1wiXG5pbXBvcnQgXCIuL1JlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MSZpZD01MjI2NjIwMCZsYW5nPXNjc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9SZWdpc3RlclBhZ2UudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjUyMjY2MjAwXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNTIyNjYyMDAnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1MjI2NjIwMCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01MjI2NjIwMCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzUyMjY2MjAwJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9TdXBwb3J0UGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTZmZmY5ODAmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1N1cHBvcnRQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcbmV4cG9ydCAqIGZyb20gXCIuL1N1cHBvcnRQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvU3VwcG9ydFBhZ2UudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjU2ZmZmOTgwXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNTZmZmY5ODAnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1NmZmZjk4MCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vU3VwcG9ydFBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU2ZmZmOTgwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNTZmZmY5ODAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1dlbGNvbWVQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lYWU0NDg1YVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1dlbGNvbWVQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiXG5leHBvcnQgKiBmcm9tIFwiLi9XZWxjb21lUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9XZWxjb21lUGFnZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZWFlNDQ4NWFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdlYWU0NDg1YScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2VhZTQ0ODVhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9XZWxjb21lUGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZWFlNDQ4NWFcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZWFlNDQ4NWEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FkbWluRm9vdGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NWY5YjRiYiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWRtaW5Gb290ZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQWRtaW5Gb290ZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9BZG1pbkZvb3Rlci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNTVmOWI0YmJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1NWY5YjRiYicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzU1ZjliNGJiJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BZG1pbkZvb3Rlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTVmOWI0YmImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc1NWY5YjRiYicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vSm9pbk5vdy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjY5ZjUwODYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0pvaW5Ob3cudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0pvaW5Ob3cudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvSm9pbk5vdy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMjY5ZjUwODZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyNjlmNTA4NicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzI2OWY1MDg2JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Kb2luTm93LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNjlmNTA4NiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzI2OWY1MDg2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9TaWduSW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWExODYxZjNlJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9TaWduSW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1NpZ25Jbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL1NpZ25Jbi52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1hMTg2MWYzZSZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtYTE4NjFmM2VcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvU2lnbkluLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJhMTg2MWYzZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2ExODYxZjNlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnYTE4NjFmM2UnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1NpZ25Jbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YTE4NjFmM2Umc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdhMTg2MWYzZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vV2ViRm9vdGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yMGQxMDY4MCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vV2ViRm9vdGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcbmV4cG9ydCAqIGZyb20gXCIuL1dlYkZvb3Rlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1dlYkZvb3Rlci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMjBkMTA2ODBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyMGQxMDY4MCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzIwZDEwNjgwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9XZWJGb290ZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIwZDEwNjgwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjBkMTA2ODAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1dlYkhlYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTBjOWUwYjImc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1dlYkhlYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vV2ViSGVhZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vV2ViSGVhZGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTEwYzllMGIyJnNjb3BlZD10cnVlJmxhbmc9c2Nzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi0xMGM5ZTBiMlwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJIZWFkZXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjEwYzllMGIyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMTBjOWUwYjInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxMGM5ZTBiMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vV2ViSGVhZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xMGM5ZTBiMiZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzEwYzllMGIyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlEb3dubG9hZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eURvd25sb2FkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWRtaW5IZWFkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWRtaW5IZWFkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9CcmVhZENydW1iLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9CcmVhZENydW1iLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0J1bGtQdWJsaXNoaW5nRXJyb3JQb3B1cC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9CdWxrUHVibGlzaGluZ0Vycm9yUG9wdXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9CdWxrcHVibGlzaFdpdGhYbHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQnV0dG9uQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9CdXR0b25Db21wb25lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGF0ZVJhbmdlV2lkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0RhdGVSYW5nZVdpZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rlc2NyaXB0aW9uRm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGVzY3JpcHRpb25Gb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Vycm9yTWVzc2FnZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FcnJvck1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FcnJvclBvcFVwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Vycm9yUG9wVXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Ib3ZlclRleHQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0hvdmVyVGV4dC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Mb2FkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0xvYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTmF2RHJvcGRvd24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL05hdkRyb3Bkb3duLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BvcHVwTW9kYWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BvcHVwTW9kYWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmFkaWFsUHJvZ3Jlc3NCYXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JhZGlhbFByb2dyZXNzQmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhYmxlTG9hZGVyQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhYmxlTG9hZGVyQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGFibGVQYWdpbmF0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWJsZVBhZ2luYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVG9hc3RNZXNzYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RvYXN0TWVzc2FnZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1hsc0xpc3RFcnJvci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9YbHNMaXN0RXJyb3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9YbHNMb2FkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vWGxzTG9hZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vWGxzVXBsb2FkSW5kaWNhdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1hsc1VwbG9hZEluZGljYXRvci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0RlbGV0ZUJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EZWxldGVCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9MaW5rLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9MaW5rLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1B1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1VuUHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9VblB1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EZWxldGVBY3Rpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGVsZXRlQWN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRXJyb3JMaXN0cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FcnJvckxpc3RzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSGF2ZU5vdEFkZGVkWWV0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9IYXZlTm90QWRkZWRZZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Pcmdhbml6YXRpb25QdWJsaXNoVW5wdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUGFnZVRpdGxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QYWdlVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHJvZ3Jlc3NMb2FkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHJvZ3Jlc3NMb2FkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TdGlja3lFcnJvcnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU3RpY2t5RXJyb3JzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVXBsb2FkZWRFcnJvcnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVXBsb2FkZWRFcnJvcnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FbGVtZW50U3RhdHVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0VsZW1lbnRTdGF0dXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1ByZXZpb3VzbHlQdWJsaXNoZWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eURlZmF1bHRWYWx1ZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eURlZmF1bHRWYWx1ZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5RGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eURldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eUluZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eUluZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0NyZWF0ZU1vZGFsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9DcmVhdGVNb2RhbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FcnJvckl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRXJyb3JJdGVtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHVibGlzaFNlbGVjdGVkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1B1Ymxpc2hTZWxlY3RlZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlZnJlc2hUb2FzdC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWZyZXNoVG9hc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9WYWxpZGF0aW9uRXJyb3JzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1ZhbGlkYXRpb25FcnJvcnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eURhdGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5RGF0ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Db25kaXRpb25zLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Db25kaXRpb25zLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0NvbnRhY3RJbmZvLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Db250YWN0SW5mby52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSHVtYW5pdGFyaWFuU2NvcGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSHVtYW5pdGFyaWFuU2NvcGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JYXRpSWRlbnRpZmllci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSWF0aUlkZW50aWZpZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTGVnYWN5RGF0YS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTGVnYWN5RGF0YS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Mb2NhdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTG9jYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vT3RoZXJJZGVudGlmaWVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PdGhlcklkZW50aWZpZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUGFydGljaXBhdGluZ09yZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUGFydGljaXBhdGluZ09yZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QbGFubmVkRGlzYnVyc2VtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BsYW5uZWREaXNidXJzZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Qb2xpY3lNYXJrZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BvbGljeU1hcmtlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlY2lwaWVudFJlZ2lvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWNpcGllbnRSZWdpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWxhdGVkQWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlbGF0ZWRBY3Rpdml0eS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXBvcnRpbmdPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVwb3J0aW5nT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzdWx0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXN1bHQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2VjdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TZWN0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGFnLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RpdGxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RyYW5zYWN0aW9ucy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVHJhbnNhY3Rpb25zLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0luZGljYXRvckRldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSW5kaWNhdG9yRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0luZGljYXRvckxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0luZGljYXRvckxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWdncmVnYXRpb25TdGF0dXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FnZ3JlZ2F0aW9uU3RhdHVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Jhc2VsaW5lLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9CYXNlbGluZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSW5kaWNhdG9yQXNjZW5kaW5nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JbmRpY2F0b3JBc2NlbmRpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTWVhc3VyZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTWVhc3VyZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QZXJpb2QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BlcmlvZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWZlcmVuY2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlZmVyZW5jZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UaXRsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdGllc0VsZW1lbnRzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5RWxlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eUVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BZGRBY3Rpdml0eUJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWRkQWN0aXZpdHlCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FbGVtZW50c05vdGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0VsZW1lbnRzTm90ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FbXB0eUFjdGl2aXR5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FbXB0eUFjdGl2aXR5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BhZ2VUaXRsZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QYWdlVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TaWRlYmFySGVscEJsb2NrLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TaWRlYmFySGVscEJsb2NrLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhYmxlTGF5b3V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhYmxlTGF5b3V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUGVyaW9kc0RldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUGVyaW9kc0RldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QZXJpb2RzTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUGVyaW9kc0xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0dWFsVmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdHVhbFZhbHVlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhcmdldFZhbHVlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYXJnZXRWYWx1ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXN1bHREZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc3VsdERldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXN1bHRFbGVtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXN1bHRFbGVtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc3VsdExpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc3VsdExpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSW5kaWNhdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JbmRpY2F0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVmZXJlbmNlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWZlcmVuY2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzdWx0VHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzdWx0VHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UaXRsZURlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UaXRsZURlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RyYW5zYWN0aW9uRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UcmFuc2FjdGlvbkRldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UcmFuc2FjdGlvbkVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RyYW5zYWN0aW9uRWxlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UcmFuc2FjdGlvbkxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RyYW5zYWN0aW9uTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BaWRUeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BaWRUeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EaXNidXJzZW1lbnRDaGFubmVsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EaXNidXJzZW1lbnRDaGFubmVsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0ZpbmFuY2VUeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9GaW5hbmNlVHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9GbG93VHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRmxvd1R5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHJvdmlkZXJPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Byb3ZpZGVyT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlY2VpdmVyT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWNlaXZlck9yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlY2lwaWVudFJlZ2lvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVjaXBpZW50UmVnaW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NlY3Rvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2VjdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RpZWRTdGF0dXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RpZWRTdGF0dXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVHJhbnNhY3Rpb25EYXRlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UcmFuc2FjdGlvbkRhdGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVHJhbnNhY3Rpb25UeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UcmFuc2FjdGlvblR5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1ZhbHVlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0F1ZGl0TGlzdGluZy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BdWRpdExpc3RpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EYXNoYm9hcmRHcmFwaC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EYXNoYm9hcmRHcmFwaC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGFzaGJvYXJkUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EYXNoYm9hcmRQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rhc2hib2FyZFN0YXRzU2VjdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5VXBsb2FkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5VXBsb2FkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlYbHNVcGxvYWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlYbHNVcGxvYWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JbXBvcnRMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0ltcG9ydExpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JbXBvcnRQbGFjZWhvbGRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JbXBvcnRQbGFjZWhvbGRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0xpc3RFbGVtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0xpc3RFbGVtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vWGxzTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9YbHNMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vT3JnYW5pc2F0aW9uRGF0YS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vT3JnYW5pc2F0aW9uRGF0YS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PcmdhbmlzYXRpb25FbGVtZW50cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PcmdhbmlzYXRpb25FbGVtZW50cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlY2lwaWVudENvdW50cnlCdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVjaXBpZW50Q291bnRyeUJ1ZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlcG9ydGluZ09yZ0J1ZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXBvcnRpbmdPcmdCdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXBvcnRpbmdPcmdhbmlzYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVwb3J0aW5nT3JnYW5pc2F0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVwb3J0aW5nUmVnaW9uQnVkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlcG9ydGluZ1JlZ2lvbkJ1ZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RvdGFsQnVkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RvdGFsQnVkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVG90YWxFeHBlbmRpdHVyZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Ub3RhbEV4cGVuZGl0dXJlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUGFzc3dvcmRSZWNvdmVyeS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QYXNzd29yZFJlY292ZXJ5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzZXRQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXNldFBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzZXRQYXNzd29yZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzZXRQYXNzd29yZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TZXR0aW5nRGVmYXVsdEZvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NldHRpbmdEZWZhdWx0Rm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TZXR0aW5nUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2V0dGluZ1BhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2V0dGluZ1B1Ymxpc2hpbmdGb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TZXR0aW5nUHVibGlzaGluZ0Zvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vT3JnYW5pc2F0aW9uTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PcmdhbmlzYXRpb25MaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU3lzdGVtVmVyc2lvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TeXN0ZW1WZXJzaW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWRtaW5CYXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWRtaW5CYXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWJsZUxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhYmxlTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Vc2VyTGlzdGluZy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Vc2VyTGlzdGluZy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1VzZXJQcm9maWxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1VzZXJQcm9maWxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWJvdXRQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BYm91dFBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRW1haWxWZXJpZmljYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0lhdGlSZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0lhdGlSZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSWF0aVN0YW5kYXJkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0lhdGlTdGFuZGFyZC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1B1Ymxpc2hpbmdDaGVja2xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUHVibGlzaGluZ0NoZWNrbGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1N1cHBvcnRQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1N1cHBvcnRQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWRtaW5Gb290ZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWRtaW5Gb290ZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Kb2luTm93LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Kb2luTm93LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NpZ25Jbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2lnbkluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiIiwiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1dlYkZvb3Rlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9XZWJGb290ZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9XZWJIZWFkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCI7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1dlYkhlYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWN0aXZpdHlEb3dubG9hZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzI2YWQ3NmUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BZG1pbkhlYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmZlNTkwNTUmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9CcmVhZENydW1iLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02NWQwZTNkYSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0J1bGtQdWJsaXNoaW5nRXJyb3JQb3B1cC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTYyY2JmNDAmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9CdWxrcHVibGlzaFdpdGhYbHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI0NDNkZjUzJnNjb3BlZD10cnVlJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQnV0dG9uQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD05ZmY1YThmOCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0RhdGVSYW5nZVdpZGdldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzQ3N2M2ZWMmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EZXNjcmlwdGlvbkZvcm0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZlYmY0MWY5JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRXJyb3JNZXNzYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iNzdiMTFkNCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Vycm9yUG9wVXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBmMWQ4YjFiJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSG92ZXJUZXh0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NTM4ZDdlMiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0xvYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OGUzNmY4ZWMmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWRjNzA1ZjQ4JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTmF2RHJvcGRvd24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI2MTlhN2VkJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUG9wdXBNb2RhbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWEyYmRhNTgmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SYWRpYWxQcm9ncmVzc0Jhci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTU3MzhlNjAmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWJsZUxvYWRlckNvbXBvbmVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2Q1MjA1OWEmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWJsZVBhZ2luYXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPThjOTdhNWJlJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVG9hc3RNZXNzYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kMDFkOGNkMiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1hsc0xpc3RFcnJvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Mzc2MTc3MDImc2NvcGVkPXRydWUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9YbHNMb2FkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdlYTRiMDZhJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vWGxzVXBsb2FkSW5kaWNhdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wMmFjMmJmNCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0RlbGV0ZUJ1dHRvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YTkzZDg0N2MmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9MaW5rLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iZmU2NTEwMiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1B1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWVjYzUwODI4JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVW5QdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NTljMzE5MyZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0RlbGV0ZUFjdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTZiY2U4Y2EmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FcnJvckxpc3RzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mNjdjN2U3MiZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0hhdmVOb3RBZGRlZFlldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzkyNWVmNDkmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Pcmdhbml6YXRpb25QdWJsaXNoVW5wdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yZmI4ZjQwNiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BhZ2VUaXRsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWI1NGUwOWYmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Qcm9ncmVzc0xvYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWMzMmJmMGMmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TdGlja3lFcnJvcnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFlMzhkMTBlJnNjb3BlZD10cnVlJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVXBsb2FkZWRFcnJvcnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZmMTdlYzQ1JnNjb3BlZD10cnVlJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRWxlbWVudFN0YXR1cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWViOGRlYjAmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xZjJmOWFiOCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5RGVmYXVsdFZhbHVlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yM2VlMzc1YyZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5RGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZTQwMmIwNiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5SW5kZXgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBhNTcxZmQ2JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQ3JlYXRlTW9kYWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWM3Y2EyOGI4JnNjb3BlZD10cnVlJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRXJyb3JJdGVtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wNjNjYmQ4NiZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1B1Ymxpc2hTZWxlY3RlZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2ZiMWUxY2MmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWZyZXNoVG9hc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQwMTE4OTdhJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVmFsaWRhdGlvbkVycm9ycy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjU3NWQzYjImdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eURhdGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAxMzhlYTg4JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQ29uZGl0aW9ucy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YmFmYjI1YmEmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Db250YWN0SW5mby52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjlhN2QzMTMmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YzdkNzk5YmUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9IdW1hbml0YXJpYW5TY29wZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Y2RmYjc0NjgmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JYXRpSWRlbnRpZmllci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTI2MWFmZmUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9MZWdhY3lEYXRhLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jYjNlNDgwNCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0xvY2F0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xMmMyZTg2MCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL090aGVySWRlbnRpZmllci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzhiNjQ0MDQmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QYXJ0aWNpcGF0aW5nT3JnLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZDRkYWI3NCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BsYW5uZWREaXNidXJzZW1lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAxNzJjMmFjJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUG9saWN5TWFya2VyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iZDk4ODg5MiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlY2lwaWVudENvdW50cnkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdmMThiZTMwJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVjaXBpZW50UmVnaW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lYmQ2NjJkYyZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlbGF0ZWRBY3Rpdml0eS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmNhMDRjMDImdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXBvcnRpbmdPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQzOGIwYWU2JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzdWx0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNzdjYjRmMCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NlY3Rvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzI5NDY4NTEmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAxMTk2NjgyJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGl0bGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ3NGE3MTNkJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVHJhbnNhY3Rpb25zLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yYjhhZmYwMCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0luZGljYXRvckRldGFpbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWZmMTc3NzImdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JbmRpY2F0b3JMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02Zjc4Y2Y3ZiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FnZ3JlZ2F0aW9uU3RhdHVzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kZDc2M2U0YyZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Jhc2VsaW5lLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02YWE2ZDA2MiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03NzViNjFlMiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2NiMjYwM2YmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JbmRpY2F0b3JBc2NlbmRpbmcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWY3ZWQ2YWRhJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTWVhc3VyZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2E2NGQ5NDQmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QZXJpb2QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU4MTY4NDZhJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVmZXJlbmNlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ODVhNGQ5ZSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RpdGxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04ZjZmZjY4NCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWE0MGZjZjQmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eUVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdmNWQ2MGE2JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWRkQWN0aXZpdHlCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA1MGUxNzNjJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjYxZTZmOGUmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FbGVtZW50c05vdGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTViYzA0MWY5JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRW1wdHlBY3Rpdml0eS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OWFlZjk2ODgmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QYWdlVGl0bGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc1ODllODZlJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2lkZWJhckhlbHBCbG9jay52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZmVmMjZhODAmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWJsZUxheW91dC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWQ4NGExZDgmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9QZXJpb2RzRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03MmUzYjU5OSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1BlcmlvZHNMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kMzNiMjkzNCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdHVhbFZhbHVlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03OWE4OGZjNSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhcmdldFZhbHVlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZTU3MWIyMiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc3VsdERldGFpbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmMyMGYxNzgmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXN1bHRFbGVtZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xOGZlNDIxOSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc3VsdExpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWFhMDZhODVlJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZTJlODMwNyZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0luZGljYXRvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGMyZTY4MmQmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWZlcmVuY2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTgxYzIyOTJlJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzdWx0VHlwZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2MyMWM0NmUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UaXRsZURlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kMTJmZWQ1NCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RyYW5zYWN0aW9uRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wN2MwNmMxMiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RyYW5zYWN0aW9uRWxlbWVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZDU2YzExZWEmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UcmFuc2FjdGlvbkxpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWNjODcyN2MyJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWlkVHlwZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZGY5NmM5NmEmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjJhOGE3MzEmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9EaXNidXJzZW1lbnRDaGFubmVsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jNzg1MzA1MiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0ZpbmFuY2VUeXBlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNWM3YzUyZSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Zsb3dUeXBlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZTQwNmFhMyZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Byb3ZpZGVyT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNWVmNjg1ZiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlY2VpdmVyT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04YTA4ZGY0NiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlY2lwaWVudENvdW50cnkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQzZDUzNmQ4JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVjaXBpZW50UmVnaW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wYTMwYmFhMiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NlY3Rvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGVlYmFhNDEmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UaWVkU3RhdHVzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NzA4OTg0MSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RyYW5zYWN0aW9uRGF0ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjEyZmNjNjEmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UcmFuc2FjdGlvblR5cGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTYzZjY3NDI2JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVmFsdWUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE2OTcyODM0JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQXVkaXRMaXN0aW5nLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mYjYxOWYyMCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rhc2hib2FyZEdyYXBoLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zMjI1N2Y3MCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZjIyNWQzZSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rhc2hib2FyZFBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWUxMTljM2Y2JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yN2M2ZmIzYyZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5VXBsb2FkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZWQ1ZmRkMiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FjdGl2aXR5WGxzVXBsb2FkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yODA3YzA4YyZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0ltcG9ydExpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQwZDc4NzBhJnNjb3BlZD10cnVlJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSW1wb3J0UGxhY2Vob2xkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVkMTQ4ZDM3JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTGlzdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTlhNjA4NDMyJnNjb3BlZD10cnVlJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vWGxzTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWY1MDA4YjQmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PcmdhbmlzYXRpb25EYXRhLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00YWRhNWYzNiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09yZ2FuaXNhdGlvbkVsZW1lbnRzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NTRlYTgwMyZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yODM5ZTA5OCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZWY2ZDMxMmEmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWNpcGllbnRDb3VudHJ5QnVkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jYmU4NzZkMCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlcG9ydGluZ09yZ0J1ZGdldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjQ2N2QyZjEmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXBvcnRpbmdPcmdhbmlzYXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTY5OTlhZWUyJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVwb3J0aW5nUmVnaW9uQnVkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04NWM5ZGMzZSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RvdGFsQnVkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kM2MwZDMzYSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RvdGFsRXhwZW5kaXR1cmUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ2NTVmOTUxJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUGFzc3dvcmRSZWNvdmVyeS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzAzODVkYTMmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXNldFBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM2Yjc2NGJiJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVzZXRQYXNzd29yZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDViNDJjYzcmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TZXR0aW5nRGVmYXVsdEZvcm0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRkODY0NjY3JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2V0dGluZ1BhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTgxYTdmZDg2JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2V0dGluZ1B1Ymxpc2hpbmdGb3JtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02MzA3NzMwNSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL09yZ2FuaXNhdGlvbkxpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc1Yjk5MDYwJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU3lzdGVtVmVyc2lvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2U0ZjUxMjEmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BZG1pbkJhci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDU5NGFjZDUmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWJsZUxpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA1YjI2MzRiJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVXNlckxpc3RpbmcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA2MTFkOWYwJnNjb3BlZD10cnVlJnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVXNlclByb2ZpbGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM3OTI3MGE2JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWJvdXRQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZDlmYTkwNCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03Y2RhNWMxOSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0lhdGlSZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE3ZTYzMmE2JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSWF0aVN0YW5kYXJkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNjg0OTRkMCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1B1Ymxpc2hpbmdDaGVja2xpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWRjYTY5Mzk2JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01MjI2NjIwMCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1N1cHBvcnRQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NmZmZjk4MCZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FkbWluRm9vdGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NWY5YjRiYiZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0pvaW5Ob3cudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI2OWY1MDg2JnRzPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTUudXNlWzBdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2lnbkluLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hMTg2MWYzZSZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtbG9hZGVyL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTYhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1dlYkZvb3Rlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjBkMTA2ODAmdHM9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC02IS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvdGVtcGxhdGVMb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9XZWJIZWFkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTEwYzllMGIyJnNjb3BlZD10cnVlJnRzPXRydWVcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1dlbGNvbWVQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1dlbGNvbWVQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NoaW1tZXJMb2FkaW5nLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03NDM1NjE3MiZzY29wZWQ9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC90ZW1wbGF0ZUxvYWRlci5qcz8/cnVsZVNldFsxXS5ydWxlc1szXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL3NwaW5uZXJMb2FkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAwODkyZGY2XCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3RlbXBsYXRlTG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vV2VsY29tZVBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWVhZTQ0ODVhXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPWRjNzA1ZjQ4Jmxhbmc9Y3NzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vWGxzTGlzdEVycm9yLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTM3NjE3NzAyJnNjb3BlZD10cnVlJmxhbmc9Y3NzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vc3Bpbm5lckxvYWRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wMDg5MmRmNiZsYW5nPWNzc1wiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhYmxlTGF5b3V0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTVkODRhMWQ4JnNjb3BlZD10cnVlJmxhbmc9Y3NzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTGlzdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9OWE2MDg0MzImc2NvcGVkPXRydWUmbGFuZz1jc3NcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9YbHNMaXN0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTVmNTAwOGI0JnNjb3BlZD10cnVlJmxhbmc9Y3NzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVGFibGVMaXN0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTA1YjI2MzRiJmxhbmc9Y3NzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVXNlckxpc3RpbmcudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MDYxMWQ5ZjAmc2NvcGVkPXRydWUmbGFuZz1jc3NcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0FkbWluSGVhZGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0xJmlkPTZmZTU5MDU1Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTI0NDNkZjUzJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRXJyb3JNZXNzYWdlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPWI3N2IxMWQ0Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vSG92ZXJUZXh0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTU1MzhkN2UyJmxhbmc9c2Nzc1wiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTG9hZGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPThlMzZmOGVjJmxhbmc9c2Nzc1wiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUG9wdXBNb2RhbC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01YTJiZGE1OCZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1NoaW1tZXJMb2FkaW5nLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTc0MzU2MTcyJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRXJyb3JMaXN0cy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1mNjdjN2U3MiZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Byb2dyZXNzTG9hZGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTVjMzJiZjBjJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU3RpY2t5RXJyb3JzLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTFlMzhkMTBlJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVXBsb2FkZWRFcnJvcnMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NmYxN2VjNDUmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eUluZGV4LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTBhNTcxZmQ2Jmxhbmc9c2Nzc1wiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQ3JlYXRlTW9kYWwudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9YzdjYTI4YjgmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9FcnJvckl0ZW0udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MDYzY2JkODYmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0aWVzRWxlbWVudHMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NWE0MGZjZjQmbGFuZz1zY3NzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTY2MWU2ZjhlJnNjb3BlZD10cnVlJmxhbmc9c2Nzc1wiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NGYyMjVkM2UmbGFuZz1zY3NzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JbXBvcnRMaXN0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTQwZDc4NzBhJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vT3JnYW5pc2F0aW9uRGF0YS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD00YWRhNWYzNiZsYW5nPXNjc3NcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Jlc2V0UGFnZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0zNmI3NjRiYiZsYW5nPXNjc3NcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0lhdGlSZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTEmaWQ9MTdlNjMyYTYmbGFuZz1zY3NzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTEmaWQ9NTIyNjYyMDAmbGFuZz1zY3NzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TaWduSW4udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9YTE4NjFmM2UmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9XZWJIZWFkZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MTBjOWUwYjImc2NvcGVkPXRydWUmbGFuZz1zY3NzXCIiLCJ2YXIgbWFwID0ge1xuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvYWN0aXZpdHlfZGF0ZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9hY3Rpdml0eV9kYXRlLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvYWN0aXZpdHlfc2NvcGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvYWN0aXZpdHlfc2NvcGUuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9hY3Rpdml0eV9zdGF0dXMuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvYWN0aXZpdHlfc3RhdHVzLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvYnVkZ2V0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2J1ZGdldC5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2J1aWxkaW5nLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2J1aWxkaW5nLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvY2FwaXRhbF9zcGVuZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jYXBpdGFsX3NwZW5kLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvY29sbGFib3JhdGlvbl90eXBlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2NvbGxhYm9yYXRpb25fdHlwZS5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2NvbmRpdGlvbnMuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvY29uZGl0aW9ucy5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2NvbnRhY3RfaW5mby5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jb250YWN0X2luZm8uc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9jb3VudHJ5X2J1ZGdldF9pdGVtcy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jb3VudHJ5X2J1ZGdldF9pdGVtcy5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2Nycy1hZGQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvY3JzLWFkZC5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2RlZmF1bHRfYWlkX3R5cGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvZGVmYXVsdF9haWRfdHlwZS5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2RlZmF1bHRfZmluYW5jZV90eXBlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2RlZmF1bHRfZmluYW5jZV90eXBlLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvZGVmYXVsdF9mbG93X3R5cGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvZGVmYXVsdF9mbG93X3R5cGUuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9kZXNjcmlwdGlvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9kZXNjcmlwdGlvbi5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2RvY3VtZW50X2xpbmsuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvZG9jdW1lbnRfbGluay5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2h1bWFuaXRhcmlhbl9zY29wZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9odW1hbml0YXJpYW5fc2NvcGUuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9pYXRpX2lkZW50aWZpZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvaWF0aV9pZGVudGlmaWVyLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvaW5kaWNhdG9yLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2luZGljYXRvci5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2xlZ2FjeV9kYXRhLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2xlZ2FjeV9kYXRhLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvbG9jYXRpb24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvbG9jYXRpb24uc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9vdGhlcl9pZGVudGlmaWVyLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL290aGVyX2lkZW50aWZpZXIuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9wYXJ0aWNpcGF0aW5nX29yZy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9wYXJ0aWNpcGF0aW5nX29yZy5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3BlcmlvZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9wZXJpb2Quc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9wbGFubmVkX2Rpc2J1cnNlbWVudC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9wbGFubmVkX2Rpc2J1cnNlbWVudC5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3BvbGljeV9tYXJrZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcG9saWN5X21hcmtlci5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3JlY2lwaWVudF9jb3VudHJ5LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3JlY2lwaWVudF9jb3VudHJ5LnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvcmVjaXBpZW50X3JlZ2lvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9yZWNpcGllbnRfcmVnaW9uLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvcmVsYXRlZF9hY3Rpdml0eS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9yZWxhdGVkX2FjdGl2aXR5LnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvcmVwb3J0aW5nX29yZy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9yZXBvcnRpbmdfb3JnLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvcmVzdWx0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3Jlc3VsdC5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3Jlc3VsdHMuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcmVzdWx0cy5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3NlY3Rvci5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9zZWN0b3Iuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy90YWcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvdGFnLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvdGl0bGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvdGl0bGUuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy90cmFuc2FjdGlvbnMuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvdHJhbnNhY3Rpb25zLnN2Z1wiLFxuXHRcIi4vYWRkLW1vcmUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWRkLW1vcmUuc3ZnXCIsXG5cdFwiLi9hZGQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWRkLnN2Z1wiLFxuXHRcIi4vYWxlcnQtb3V0bGluZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hbGVydC1vdXRsaW5lLnN2Z1wiLFxuXHRcIi4vYWxlcnQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWxlcnQuc3ZnXCIsXG5cdFwiLi9hbGlnbi1jZW50ZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWxpZ24tY2VudGVyLnN2Z1wiLFxuXHRcIi4vYWxpZ24tcmlnaHQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWxpZ24tcmlnaHQuc3ZnXCIsXG5cdFwiLi9hcHByb3ZlZC1jbG91ZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hcHByb3ZlZC1jbG91ZC5zdmdcIixcblx0XCIuL2Fycm93LWRvd24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYXJyb3ctZG93bi5zdmdcIixcblx0XCIuL2Fycm93LWxlZnQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYXJyb3ctbGVmdC5zdmdcIixcblx0XCIuL2Fycm93LXJpZ2h0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Fycm93LXJpZ2h0LnN2Z1wiLFxuXHRcIi4vYXJyb3ctc2hvcnQtbGVmdC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hcnJvdy1zaG9ydC1sZWZ0LnN2Z1wiLFxuXHRcIi4vYXNjZW5kaW5nLWFycm93LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FzY2VuZGluZy1hcnJvdy5zdmdcIixcblx0XCIuL2JpbGwuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYmlsbC5zdmdcIixcblx0XCIuL2JveC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9ib3guc3ZnXCIsXG5cdFwiLi9idWRnZXQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYnVkZ2V0LnN2Z1wiLFxuXHRcIi4vYnVpbGRpbmcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYnVpbGRpbmcuc3ZnXCIsXG5cdFwiLi9jYW5jZWwtY2xvdWQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2FuY2VsLWNsb3VkLnN2Z1wiLFxuXHRcIi4vY2FuY2VsLWNyb3NzLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NhbmNlbC1jcm9zcy5zdmdcIixcblx0XCIuL2NoZWNrLWNpcmNsZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jaGVjay1jaXJjbGUuc3ZnXCIsXG5cdFwiLi9jaGVja2JveC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jaGVja2JveC5zdmdcIixcblx0XCIuL2NoZWNrZWQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2hlY2tlZC5zdmdcIixcblx0XCIuL2NoZXZyb24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2hldnJvbi5zdmdcIixcblx0XCIuL2NpcmNsZS1yZWQtY3Jvc3Muc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2lyY2xlLXJlZC1jcm9zcy5zdmdcIixcblx0XCIuL2Nsb3NlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Nsb3NlLnN2Z1wiLFxuXHRcIi4vY29weXJpZ2h0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NvcHlyaWdodC5zdmdcIixcblx0XCIuL2NvcmUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY29yZS5zdmdcIixcblx0XCIuL2Nyb3NzLWljb24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY3Jvc3MtaWNvbi5zdmdcIixcblx0XCIuL2Nyb3NzLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Nyb3NzLnN2Z1wiLFxuXHRcIi4vZGVmYXVsdC0xLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2RlZmF1bHQtMS5zdmdcIixcblx0XCIuL2RlZmF1bHQtMi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kZWZhdWx0LTIuc3ZnXCIsXG5cdFwiLi9kZWxldGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZGVsZXRlLnN2Z1wiLFxuXHRcIi4vZGVzY2VuZGluZy1hcnJvdy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kZXNjZW5kaW5nLWFycm93LnN2Z1wiLFxuXHRcIi4vZG9jdW1lbnQtd3JpdGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZG9jdW1lbnQtd3JpdGUuc3ZnXCIsXG5cdFwiLi9kb3VibGUtdGljay5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kb3VibGUtdGljay5zdmdcIixcblx0XCIuL2Rvd25sb2FkLWNvZGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZG93bmxvYWQtY29kZS5zdmdcIixcblx0XCIuL2Rvd25sb2FkLWZpbGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZG93bmxvYWQtZmlsZS5zdmdcIixcblx0XCIuL2Rvd25sb2FkLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Rvd25sb2FkLnN2Z1wiLFxuXHRcIi4vZHJvcGRvd24tYXJyb3cuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZHJvcGRvd24tYXJyb3cuc3ZnXCIsXG5cdFwiLi9lZGl0LWFjdGlvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9lZGl0LWFjdGlvbi5zdmdcIixcblx0XCIuL2VkaXQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZWRpdC5zdmdcIixcblx0XCIuL2V4Y2xhbWF0aW9uLXdhcm5pbmcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZXhjbGFtYXRpb24td2FybmluZy5zdmdcIixcblx0XCIuL2V4cG9ydC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9leHBvcnQuc3ZnXCIsXG5cdFwiLi9leHRlcm5hbC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9leHRlcm5hbC5zdmdcIixcblx0XCIuL2V5ZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9leWUuc3ZnXCIsXG5cdFwiLi9mb2xkZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZm9sZGVyLnN2Z1wiLFxuXHRcIi4vZm9vdGVyLWxvZ28uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZm9vdGVyLWxvZ28uc3ZnXCIsXG5cdFwiLi9mdW5uZWwuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZnVubmVsLnN2Z1wiLFxuXHRcIi4vZ3JvdXAuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZ3JvdXAuc3ZnXCIsXG5cdFwiLi9oYW1idXJnZXItY3Jvc3Muc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGFtYnVyZ2VyLWNyb3NzLnN2Z1wiLFxuXHRcIi4vaGVhZGVyLWxvZ28uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGVhZGVyLWxvZ28uc3ZnXCIsXG5cdFwiLi9oZWFkcGhvbmUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGVhZHBob25lLnN2Z1wiLFxuXHRcIi4vaGVscC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9oZWxwLnN2Z1wiLFxuXHRcIi4vaGlkZS1wYXNzd29yZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9oaWRlLXBhc3N3b3JkLnN2Z1wiLFxuXHRcIi4vaGlzdG9yeS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9oaXN0b3J5LnN2Z1wiLFxuXHRcIi4vaWMtdmVyaWZpY2F0aW9uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2ljLXZlcmlmaWNhdGlvbi5zdmdcIixcblx0XCIuL2luZGljYXRvci1pY29uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2luZGljYXRvci1pY29uLnN2Z1wiLFxuXHRcIi4va2V5LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2tleS5zdmdcIixcblx0XCIuL2xlZnQtYXJyb3cuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbGVmdC1hcnJvdy5zdmdcIixcblx0XCIuL2xvZ28td2hpdGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbG9nby13aGl0ZS5zdmdcIixcblx0XCIuL2xvZ28uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbG9nby5zdmdcIixcblx0XCIuL2xvZ291dC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9sb2dvdXQuc3ZnXCIsXG5cdFwiLi9tYWduaWZ5aW5nLWdsYXNzLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL21hZ25pZnlpbmctZ2xhc3Muc3ZnXCIsXG5cdFwiLi9tYWlsLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL21haWwuc3ZnXCIsXG5cdFwiLi9taW5pbWl6ZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9taW5pbWl6ZS5zdmdcIixcblx0XCIuL21vb24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbW9vbi5zdmdcIixcblx0XCIuL25vdGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbm90ZS5zdmdcIixcblx0XCIuL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9idWlsZGluZy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvYnVpbGRpbmcuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvZGVzY3JpcHRpb24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL2Rlc2NyaXB0aW9uLnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL2RvY3VtZW50X2xpbmsuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL2RvY3VtZW50X2xpbmsuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvbmFtZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvbmFtZS5zdmdcIixcblx0XCIuL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9vcmdfaWRlbnRpZmllci5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvb3JnX2lkZW50aWZpZXIuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvb3JnYW5pc2F0aW9uX2lkZW50aWZpZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL29yZ2FuaXNhdGlvbl9pZGVudGlmaWVyLnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL29yZ2FuaXphdGlvbl9pZGVudGlmaWVyLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9vcmdhbml6YXRpb25faWRlbnRpZmllci5zdmdcIixcblx0XCIuL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZWNpcGllbnRfY291bnRyeV9idWRnZXQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlY2lwaWVudF9jb3VudHJ5X2J1ZGdldC5zdmdcIixcblx0XCIuL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZWNpcGllbnRfb3JnX2J1ZGdldC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvcmVjaXBpZW50X29yZ19idWRnZXQuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvcmVjaXBpZW50X3JlZ2lvbl9idWRnZXQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlY2lwaWVudF9yZWdpb25fYnVkZ2V0LnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlcG9ydGluZ19vcmcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlcG9ydGluZ19vcmcuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvcmVwb3J0aW5nX29yZ2FuaXNhdGlvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvcmVwb3J0aW5nX29yZ2FuaXNhdGlvbi5zdmdcIixcblx0XCIuL29yZ2FuaXNhdGlvbi1lbGVtZW50cy90aXRsZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvdGl0bGUuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvdG90YWxfYnVkZ2V0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy90b3RhbF9idWRnZXQuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvdG90YWxfZXhwZW5kaXR1cmUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3RvdGFsX2V4cGVuZGl0dXJlLnN2Z1wiLFxuXHRcIi4vcGFuZWwtc2VhcmNoLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3BhbmVsLXNlYXJjaC5zdmdcIixcblx0XCIuL3BlcmlvZC1pY29uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3BlcmlvZC1pY29uLnN2Z1wiLFxuXHRcIi4vcGx1cy1vdXRsaW5lZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wbHVzLW91dGxpbmVkLnN2Z1wiLFxuXHRcIi4vcGx1cy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wbHVzLnN2Z1wiLFxuXHRcIi4vcHVibGlzaC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wdWJsaXNoLnN2Z1wiLFxuXHRcIi4vcHctbG9jay5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wdy1sb2NrLnN2Z1wiLFxuXHRcIi4vcXVlc3Rpb24tbWFyay5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9xdWVzdGlvbi1tYXJrLnN2Z1wiLFxuXHRcIi4vcmVkLWNyb3NzLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3JlZC1jcm9zcy5zdmdcIixcblx0XCIuL3JlZC1kb3Quc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcmVkLWRvdC5zdmdcIixcblx0XCIuL3JlZG8uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcmVkby5zdmdcIixcblx0XCIuL3Jlc3VsdC1pY29uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3Jlc3VsdC1pY29uLnN2Z1wiLFxuXHRcIi4vcmlnaHQtYXJyb3cuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcmlnaHQtYXJyb3cuc3ZnXCIsXG5cdFwiLi9zZWFyY2guc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc2VhcmNoLnN2Z1wiLFxuXHRcIi4vc2V0dGluZy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zZXR0aW5nLnN2Z1wiLFxuXHRcIi4vc2hpZWxkLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NoaWVsZC5zdmdcIixcblx0XCIuL3NtaWxlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NtaWxlLnN2Z1wiLFxuXHRcIi4vc29ydC1hc2NlbmRpbmcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc29ydC1hc2NlbmRpbmcuc3ZnXCIsXG5cdFwiLi9zb3J0LWRlc2NlbmRpbmcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc29ydC1kZXNjZW5kaW5nLnN2Z1wiLFxuXHRcIi4vc29ydC1pY29uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NvcnQtaWNvbi5zdmdcIixcblx0XCIuL3N0YXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc3Rhci5zdmdcIixcblx0XCIuL3RpY2stb3V0bGluZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy90aWNrLW91dGxpbmUuc3ZnXCIsXG5cdFwiLi90aWNrLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3RpY2suc3ZnXCIsXG5cdFwiLi90aWNrZWQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdGlja2VkLnN2Z1wiLFxuXHRcIi4vdGltZXMtY2lyY2xlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3RpbWVzLWNpcmNsZS5zdmdcIixcblx0XCIuL3R3aXR0ZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdHdpdHRlci5zdmdcIixcblx0XCIuL3VwLWFycm93LW91dGxpbmUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdXAtYXJyb3ctb3V0bGluZS5zdmdcIixcblx0XCIuL3VwbG9hZC1maWxlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3VwbG9hZC1maWxlLnN2Z1wiLFxuXHRcIi4vdXNlci1wcm9maWxlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3VzZXItcHJvZmlsZS5zdmdcIixcblx0XCIuL3VzZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdXNlci5zdmdcIixcblx0XCIuL3dhcm5pbmctYWN0aXZpdHkuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvd2FybmluZy1hY3Rpdml0eS5zdmdcIixcblx0XCIuL3dhcm5pbmctZmlsbC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy93YXJuaW5nLWZpbGwuc3ZnXCIsXG5cdFwiLi93YXJuaW5nLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3dhcm5pbmcuc3ZnXCIsXG5cdFwiLi95b3V0dWJlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3lvdXR1YmUuc3ZnXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLiokXCI7IiwiLyogKGlnbm9yZWQpICovIl0sIm5hbWVzIjpbIl9faW1wb3J0RGVmYXVsdCIsIm1vZCIsIl9fZXNNb2R1bGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsInZ1ZV8xIiwicmVxdWlyZSIsInZ1ZV8yIiwic3Bpbm5lckxvYWRlcl92dWVfMSIsIlBvcHVwTW9kYWxfdnVlXzEiLCJheGlvc18xIiwiaW5kZXhfMSIsImRlZmluZUNvbXBvbmVudCIsIl9fbmFtZSIsInNldHVwIiwiX19wcm9wcyIsIl9hIiwiZXhwb3NlIiwic3RvcmUiLCJ1c2VTdG9yZSIsInNob3dSZXRyeURvd25sb2FkTW9kZWwiLCJyZWYiLCJpc0xvYWRpbmciLCJvbk1vdW50ZWQiLCJzdXBwb3J0QnV0dG9uIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwic3R5bGUiLCJ0cmFuc2Zvcm0iLCJkb3dubG9hZEZpbGUiLCJkaXNwYXRjaCIsImFwaVVybCIsImNvbmNhdCIsImRvd25sb2FkQXBpVXJsIiwic3BsaXQiLCJtZXRob2QiLCJ1cmwiLCJyZXNwb25zZVR5cGUiLCJ0aGVuIiwicmVzIiwiZmlsZU5hbWUiLCJoZWFkZXJzIiwiYmxvYiIsIkJsb2IiLCJkYXRhIiwibGluayIsImNyZWF0ZUVsZW1lbnQiLCJocmVmIiwid2luZG93IiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwic2V0QXR0cmlidXRlIiwiYm9keSIsImFwcGVuZENoaWxkIiwiY2xpY2siLCJyZXRyeURvd25sb2FkIiwieGxzRG93bmxvYWRTdGF0dXMiLCJnZXQiLCJjYW5jZWxEb3dubG9hZCIsInN1Y2Nlc3MiLCJwZXJjZW50YWdlV2lkdGgiLCJjb21wdXRlZCIsImZpbGVDb3VudCIsImluamVjdCIsIl9fcmV0dXJuZWRfXyIsInNwaW5uZXJMb2FkZXIiLCJNb2RhbCIsImVudW1lcmFibGUiLCJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsIm5leHQiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwiYXBwbHkiLCJfX2dlbmVyYXRvciIsIl8iLCJsYWJlbCIsInNlbnQiLCJ0IiwidHJ5cyIsIm9wcyIsImYiLCJ5IiwiZyIsInZlcmIiLCJTeW1ib2wiLCJpdGVyYXRvciIsIm4iLCJ2Iiwib3AiLCJUeXBlRXJyb3IiLCJjYWxsIiwicG9wIiwibGVuZ3RoIiwicHVzaCIsInNob3dfMSIsImNvcmVfMSIsIkNyZWF0ZU1vZGFsX3Z1ZV8xIiwiVG9hc3RNZXNzYWdlX3Z1ZV8xIiwidHJhbnNsYXRpb25IZWxwZXJfMSIsInByb3BzIiwidXNlciIsInR5cGUiLCJyZXF1aXJlZCIsIm9yZ2FuaXphdGlvbiIsInZhbGlkYXRvciIsInN1cGVyQWRtaW4iLCJCb29sZWFuIiwiaGFzQWRtaW5CYXIiLCJOdW1iZXIiLCJfYiIsImRldGFpbFN0b3JlIiwidHJhbnNsYXRlIiwiVHJhbnNsYXRlIiwic2hvd1VzZXJEcm9wZG93biIsInNob3dBY3Rpdml0eURyb3Bkb3duIiwidG9hc3RWaXNpYmlsaXR5IiwiZHJvcERvd25FbGVtZW50IiwiYWN0aXZpdHlEcm9wZG93bkhlaWdodCIsInNob3dTaWRlYmFyIiwidG9hc3RNZXNzYWdlIiwidG9hc3RUeXBlIiwicmVhY3RpdmUiLCJsYW5ndWFnZU5hdkxpQ2xhc3NlcyIsImxhbmd1YWdlTmF2QW5jaG9yQ2xhc3NlcyIsIm1lbnVOYXZMaUNsYXNzZXMiLCJtZW51TmF2QW5jaG9yQ2xhc3NlcyIsImxhbmd1YWdlcyIsImxhbmd1YWdlIiwicGVybWFsaW5rIiwiaWQiLCJhY3RpdmUiLCJ3ZWJUZXh0Iiwib3JnX21lbnVzIiwibmFtZSIsImFkbWluVGV4dCIsImNvbW1vblRleHQiLCJzdXBlcmFkbWluX21lbnVzIiwid2F0Y2giLCJzdGF0ZSIsImxpQ2xhc3MiLCJfYyIsInVzZVRvZ2dsZSIsIm1vZGFsVmFsdWUiLCJtb2RhbFRvZ2dsZSIsInRvYXN0IiwibWVzc2FnZSIsInNldFRpbWVvdXQiLCJpc1RvdWNoRGV2aWNlIiwibmF2aWdhdG9yIiwibWF4VG91Y2hQb2ludHMiLCJUb2dnbGVNb2RlbCIsImxvY2FsU3RvcmFnZSIsInJlbW92ZUl0ZW0iLCJyb3RhdGVEcm9wZG93bkljb24iLCJpbm5lcldpZHRoIiwidG9nZ2xlQWN0aXZpdHlEcm9wZG93biIsImNsaWVudEhlaWdodCIsInNpZGViYXIiLCJkb2N1bWVudEVsZW1lbnQiLCJvdmVyZmxvdyIsImNoYW5nZUFjdGl2ZU1lbnUiLCJwYXRoIiwibG9jYXRpb24iLCJwYXRobmFtZSIsImZvckVhY2giLCJtZW51Iiwia2V5IiwiaW5jbHVkZXMiLCJwYSIsInVzZVN0b3JhZ2UiLCJwdWJsaXNoaW5nQWN0aXZpdGllcyIsImdldEl0ZW0iLCJsb2dvdXQiLCJwb3N0Iiwic3RhdHVzIiwic2VhcmNoVmFsdWUiLCJjdXJyZW50VVJMIiwicXVlcnlTdHJpbmciLCJzZWFyY2giLCJ1cmxQYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJzcGlubmVyIiwic2VhcmNoRnVuY3Rpb24iLCJwYXJhbSIsInJlcGxhY2UiLCJzb3J0aW5nUGFyYW0iLCJxdWVyeVN0cmluZ0FyciIsInNsaWNlIiwiam9pbiIsInJlZGlyZWN0UHJvZmlsZSIsIm9uVW5tb3VudGVkIiwiQ3JlYXRlTW9kYWwiLCJUb2FzdCIsInRpdGxlXzEiLCJjb21wb25lbnRzIiwidG9SZWZzIiwiYnJlYWRjcnVtYkRhdGEiLCJnZXRBY3Rpdml0eVRpdGxlIiwiYnVsa1B1Ymxpc2hTdGF0dXMiLCJhY3Rpdml0aWVzXzEiLCJ1dGlsc18xIiwiZW1pdHMiLCJlbWl0IiwiYnVsa1B1Ymxpc2hMZW5ndGgiLCJvcGVuTW9kZWwiLCJwYVN0b3JhZ2UiLCJidWxrcHVibGlzaEFjdGl2aXRpZXMiLCJjb21wbGV0ZWQiLCJyZWZyZXNoVG9hc3RNc2ciLCJhY3Rpdml0aWVzIiwiaGFzRmFpbGVkQWN0aXZpdGllcyIsImlkcyIsInJlc3BvbnNlIiwicG9sbGluZ0ZvckJ1bGtwdWJsaXNoRGF0YSIsImludGVydmFsSUQiLCJzZXRJbnRlcnZhbCIsInB1Ymxpc2hpbmciLCJjbGVhckludGVydmFsIiwiZmFpbGVkQWN0aXZpdGllcyIsInZpc2liaWxpdHkiLCJyZWZyZXNoTWVzc2FnZVR5cGUiLCJyZWZyZXNoTWVzc2FnZSIsImVycm9yIiwicmV0cnlQdWJsaXNoaW5nIiwiZW5kcG9pbnQiLCJuZXN0ZWRPYmplY3QiLCJmYWlsZWRBY3Rpdml0aWVzSUQiLCJhc0FycmF5RGF0YSIsImVudHJpZXMiLCJmaWx0ZXJlZCIsImZpbHRlciIsInZhbHVlcyIsImluZGV4T2YiLCJhY3Rpdml0eV9pZCIsImZhaWxlZEFjdGl2aXRpZXNEYXRhIiwiZnJvbUVudHJpZXMiLCJjb21wbGV0ZWRBY3Rpdml0aWVzIiwiY291bnQiLCJpIiwia2V5cyIsInNldERhdGFUb0xvY2Fsc3RvcmFnZSIsImdldERhdGFGcm9tTG9jYWxzdG9yYWdlIiwiaXNKc29uIiwiSlNPTiIsInBhcnNlIiwic2V0SXRlbSIsInN0cmluZ2lmeSIsImVtcHR5YnVsa1B1Ymxpc2hTdGF0dXMiLCJzdGF0dXNfMSIsImFzc2lnbiIsImRlZXAiLCJ0ZXh0IiwiU3RyaW5nIiwiaWNvbiIsImFjdGl2aXR5TGVuZ3RoIiwiYnRuVHlwZSIsImRhdGVfZm5zXzEiLCJ2dWVfZGF0ZXBpY2tlcl8xIiwibW9tZW50XzEiLCJkcm9wZG93blJhbmdlIiwiZmlyc3REYXRlIiwiZGF0ZUxhYmVsIiwiY3VycmVudFZpZXciLCJjbGVhckRhdGUiLCJzdGFydGluZ0RhdGUiLCJlbmRpbmdEYXRlIiwiZGF0ZU5hbWUiLCJfdGhpcyIsInNlbGVjdGVkUHJlc2VudEluZGV4IiwiZGF0ZVJhbmdlTWFpbiIsImRhdGVUeXBlIiwiZGF0ZURyb3Bkb3duIiwiZGF0ZVR5cGVOYW1lIiwiZGF0ZVR5cGVLZXkiLCJzaG93UmFuZ2VEcm9wZG93biIsImluaXRpYWxEYXRlIiwiZml4ZWQiLCJ0b2RheURhdGUiLCJEYXRlIiwiZm9ybWF0Iiwic2VsZWN0ZWREYXRlIiwic2V0RGF0ZSIsImdldERhdGUiLCJkYXRlcGlja2VyIiwidHJpZ2dlclNldERhdGVSYW5nZSIsImhhbmRsZVByZXNlbnRSYW5nZUl0ZW1DbGljayIsImluZGV4IiwicHJlc2VudFJhbmdlSXRlbXMiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiY2xhc3NMaXN0IiwiYWRkIiwiaiIsInJlbW92ZSIsInJlc2V0RGF0ZSIsImhhbmRsZUNhbGVuZGFySXRlbUNsaWNrIiwiYWRkRXZlbnRzRm9yQ2FsZW5kYXIiLCJfbG9vcF8xIiwiYWRkRXZlbnRMaXN0ZW5lciIsImNhbGVuZGFySXRlbXMiLCJyZW1vdmVFdmVudHNPZkNhbGVuZGFyIiwiX2xvb3BfMiIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ0b2dnbGVTaG93UmFuZ2VEcm9wZG93biIsInByZXNldFJhbmdlcyIsInJhbmdlIiwic3RhcnRPZkRheSIsImVuZE9mRGF5Iiwic3RhcnRPZldlZWsiLCJzdWJEYXlzIiwic3RhcnRPZk1vbnRoIiwiZW5kT2ZNb250aCIsInN1Yk1vbnRocyIsInN0YXJ0T2ZZZWFyIiwiY29udmVydERhdGUiLCJkYXRlIiwiZGF0ZU9iaiIsInllYXIiLCJnZXRGdWxsWWVhciIsIm1vbnRoIiwiZ2V0TW9udGgiLCJwYWRTdGFydCIsImRheSIsIm9wZW5DYWxlbmRhciIsIm9wZW5NZW51IiwiY2xvc2VDYWxlbmRhciIsImNsb3NlTWVudSIsInNlbGVjdERhdGUiLCJkYXRlcyIsInRlbXBBcnJheSIsInRvTG9jYWxlRGF0ZVN0cmluZyIsImNsb3NlRGF0ZURyb3Bkb3duIiwia2VlcE1vZGVsT3BlbiIsImV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsInNldFNlbGVjdGVkUHJlc2VudERheVRleHQiLCJ0cmlnZ2VyU2V0RGF0ZVR5cGUiLCJmaWx0ZXJlZERhdGVUeXBlIiwiZXZlbnRUeXBlIiwiY3VzdG9tUG9zaXRpb24iLCJfZCIsIl9lIiwibGVmdFBvc2l0aW9uIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwicmlnaHQiLCJ0b3AiLCJib3R0b20iLCJsZWZ0Iiwic2V0RGF0ZVJhbmdlVHlwZUluRHJvcGRvd24iLCJWdWVEYXRlUGlja2VyIiwidnVlXzMiLCJMb2FkZXJfdnVlXzEiLCJpc0VtcHR5Iiwic2hvdyIsImhhc0Vycm9ycyIsImVycm9yQ291bnQiLCJ0b2FzdERhdGEiLCJlcnJvckRhdGEiLCJhY2NvdW50X3ZlcmlmaWVkIiwicHVibGlzaGVyX2FjdGl2ZSIsImRlZmF1bHRfc2V0dGluZyIsInB1Ymxpc2hlcl9zZXR0aW5nIiwidG9rZW5fc3RhdHVzIiwiaXNMb2FkZXJWaXNpYmxlIiwicmVzZW5kVmVyaWZpY2F0aW9uRW1haWwiLCJhbGwiLCJzcHJlYWQiLCJzZXR0aW5nX3JlcyIsInVzZXJfcmVzIiwib3JnX3JlcyIsInVzZXJfcmVzcG9uc2UiLCJvcmdfcmVzcG9uc2UiLCJkZWZhdWx0X3N0YXR1cyIsInB1Ymxpc2hlcl9zdGF0dXMiLCJncm91cGVkRXJyb3IiLCJUcmFuc2l0aW9uUm9vdCIsIkxvYWRlciIsIkFycmF5IiwidGl0bGUiLCJjbG9zZSIsImhvdmVyVGV4dCIsIndpZHRoIiwicG9zaXRpb24iLCJpY29uU2l6ZSIsInNob3dJYXRpUmVmZXJlbmNlIiwiQnV0dG9uQ29tcG9uZW50X3Z1ZV8xIiwibGlzdEl0ZW1zIiwiaGVhZGVyIiwidGVtcExpc3RJdGVtcyIsInB1Ymxpc2hlclR5cGVNdWx0aXNlbGVjdCIsInNlYXJjaElucHV0IiwiY2hlY2tlZEJveGVzIiwiY2hhbmdlU2VsZWN0ZWRQdWJsaXNoZXIiLCJzZWxlY3RlZFB1Ymxpc2hlclR5cGUiLCJmb3JtYXRQdWJsaXNoZXJUeXBlIiwia2VlcFB1Ymxpc2hlck1vZGVsT3BlbiIsIm9uQmVmb3JlVW5tb3VudCIsInNob3dOb0RhdGFDb21wb25lbnQiLCJtYXAiLCJpdGVtIiwidXBkYXRlQXJyYXlCeVNlYXJjaCIsInNlYXJjaFN0cmluZyIsInRvTG93ZXJDYXNlIiwiYXBwbHlGaWx0ZXIiLCJCdG5Db21wb25lbnQiLCJidG5UZXh0IiwiYnRuTGluayIsIm1vZGFsQWN0aXZlIiwibm9QYWRkaW5nIiwidnVlM19yYWRpYWxfcHJvZ3Jlc3NfMSIsIlJhZGlhbFByb2dyZXNzQmFyIiwicGVyY2VudCIsImNvbXBsZXRlZFBlcmNlbnQiLCJ0b3RhbFBlcmNlbnQiLCJTaGltbWVyTG9hZGluZ192dWVfMSIsInJvd0NvdW50IiwiY29sQ291bnQiLCJTaGltbWVyTG9hZGluZyIsInJlc2V0IiwiYWN0aXZlX3BhZ2UiLCJsYXN0X3BhZ2VsaXN0IiwibWlkX3BhZ2VsaXN0IiwibGFzdHBhZ2VzIiwibWlkcGFnZXMiLCJ1cGRhdGVBY3RpdmVQYWdlIiwicGFnZSIsImNoYW5nZVBhZ2UiLCJwYWdlTnVtIiwibmV4dFBhZ2UiLCJsYXN0X3BhZ2UiLCJjdXJyZW50UGFnZSIsImZyb20iLCJwcmV2aW91c1BhZ2UiLCJjbGFzc05hbWUiLCJpbXBvcnREYXRhIiwiYWN0aXZpdHkiLCJzaG93RXJyb3JzIiwic2hvd0NyaXRpY2FsIiwiY3JpdGljYWxUb2dnbGUiLCJzaG93RXJyb3IiLCJlcnJvclRvZ2dsZSIsIndhcm5pbmdUb2dnbGUiLCJzaG93V2FybmluZyIsImVycm9yTGVuZ3RoIiwiY3VycmVudEVycm9yIiwiZXJyb3JzIiwibmFycmF0aXZlIiwicGVyaW9kX3N0YXJ0IiwicGVyaW9kX2VuZCIsImNvdW50RXJyb3JzIiwiYWN0aXZpdHlJbmRleCIsImNyaXRpY2FsQWNjb3JkaW9uVG9nZ2xlIiwiY3VycmVudFRhcmdldCIsInRhcmdldCIsInBhcmVudEVsZW1lbnQiLCJlbEhlaWdodCIsImNzc1RleHQiLCJ3YXJuaW5nQWNjb3JkaW9uVG9nZ2xlIiwiZXJyb3JBY2NvcmRpb25Ub2dnbGUiLCJhY3Rpdml0eU5hbWUiLCJ0b3RhbENvdW50IiwicHJvY2Vzc2VkQ291bnQiLCJ4bHNGYWlsZWQiLCJjdXJyZW50QWN0aXZpdHkiLCJtYXhpbWl6ZSIsInNob3dNaW5pbWl6ZWRNb2RlbCIsIm1hcEFjdGl2aXR5TmFtZSIsInJldHJ5IiwiY2hlY2tTdXBwb3J0QnV0dG9uIiwidG9TdHJpbmciLCJ4bHNGYWlsZWRNZXNzYWdlIiwicHJvY2Vzc2luZyIsIkFjdGl2aXR5RG93bmxvYWRfdnVlXzEiLCJYbHNMb2FkZXJfdnVlXzEiLCJCdWxrcHVibGlzaFdpdGhYbHNfdnVlXzEiLCJ4bHNEYXRhIiwic2hvd1hsc1N0YXR1cyIsImRvd25sb2FkQ29tcGxldGVkIiwidG9nZ2xlQnVsa1B1Ymxpc2giLCJzaG93QnVsa3B1Ymxpc2giLCJkb3dubG9hZGluZyIsInN0YXJ0QnVsa1B1Ymxpc2giLCJzaG93WGxzUG9wdXAiLCJzaG93RG93bmxvYWRQb3B1cCIsInNob3dCdWxrUHVibGlzaFBvcHVwIiwiY2xvc2VCdWxrcHVibGlzaCIsImNsb3NlWGxzIiwiY29tcGxldGVYbHNEb3dubG9hZCIsIkFjdGl2aXR5RG93bmxvYWQiLCJYbHNMb2FkZXIiLCJCdWxrcHVibGlzaFdpdGhYbHMiLCJQcm9ncmVzc0xvYWRlcl92dWVfMSIsImRlbGV0ZVZhbHVlIiwiZGVsZXRlVG9nZ2xlIiwibG9hZGVyIiwiZGVsZXRlRnVuY3Rpb24iLCJjYXBpdGFsaXplIiwiZGVsZXRlRW5kUG9pbnQiLCJzZWxlY3RlZEFjdGl2aXRpZXMiLCJyZWxvYWQiLCJkZXNpZ24iLCJzdHlsZVR5cGUiLCJjbGFzc2VzIiwibGlua2VkVG9JYXRpIiwiY29yZUNvbXBsZXRlZCIsImFjdGl2aXR5SWQiLCJvblVwZGF0ZWQiLCJwdWJsaXNoVmFsdWUiLCJwdWJsaXNoU3RlcCIsInB1Ymxpc2hUb2dnbGUiLCJjb3JlRWxlbWVudFN0YXR1cyIsImxvYWRlclRleHQiLCJyZXNldFB1Ymxpc2hTdGVwIiwicHVibGlzaFN0YXRlQ2hhbmdlIiwicHVibGlzaFN0YXRlIiwiZGVzY3JpcHRpb24iLCJhbGVydFN0YXRlIiwicyIsImdldFN0aWNreU9iamVjdCIsInN0aWNreVRleHQiLCJlcnIiLCJjcml0aWNhbE51bWJlciIsImNyaXRpY2FsIiwiZXJyb3JOdW1iZXIiLCJhbmQiLCJ3YXJuaW5nTnVtYmVyIiwid2FybmluZ3MiLCJoYXNfYXRsZWFzdF9vbmVfY3JpdGljYWxfZXJyb3IiLCJ3ZV9oaWdobHlfcmVjb21tZW5kX3lvdV9maXhfdGhlc2VfaXNzdWVzIiwid2VyZV9mb3VuZCIsInZpZXdfaW5mb3JtYXRpb25fYWJvdXRfdGhlc2UiLCJzdGVwUGx1c09uZSIsInN0ZXBNaW51c09uZSIsInZhbGlkYXRvckZ1bmN0aW9uIiwiY3JpdCIsInN1bW1hcnkiLCJ3YXJuaW5nIiwiY2hlY2tQdWJsaXNoIiwicHVibGlzaEZ1bmN0aW9uIiwicHVibGlzaFN0YXR1cyIsImxpbmtlZF90b19pYXRpIiwiYnV0dG9uIiwidW5wdWJsaXNoVmFsdWUiLCJ1bnB1Ymxpc2hUb2dnbGUiLCJ1blB1Ymxpc2hGdW5jdGlvbiIsIml0ZW1JZCIsIml0ZW1UeXBlIiwiZXJyb3JUeXBlIiwiYmdDb2xvciIsImljb25Db2xvciIsInRvZ2dsZSIsImFjY29yZGlvblRvZ2dsZSIsInVwZGF0ZUVycm9yQ291bnRNZXNzYWdlIiwidHJhbnNsYXRlZFR5cGUiLCJjb25zb2xlIiwibG9nIiwiTGlua192dWVfMSIsIkJ0biIsIm1hbmRhdG9yeUVsZW1lbnRTdGF0dXMiLCJpc19wdWJsaXNoZWQiLCJCcmVhZENydW1iX3Z1ZV8xIiwiQnJlYWRjcnVtYiIsImJhY2tMaW5rIiwiY2hhbmdlVGV4dCIsImRpc3BsYXkiLCJFcnJvckxpc3RzX3Z1ZV8xIiwiVXBsb2FkZWRFcnJvcnNfdnVlXzEiLCJlcnJvclZhbHVlIiwiaW1wb3J0RXJyb3JzIiwiaXNzdWVUeXBlIiwiaW1wb3J0RXJyb3JUeXBlcyIsInRlbXBEYXRhIiwidXBkYXRlVGVtcE1lc3NhZ2UiLCJlcnJvckRhdGFQcm9wcyIsIl9pIiwiZXJyb3JEYXRhUHJvcHNfMSIsInNldmVyaXR5IiwiaW1wb3J0RXJyb3JsZW5ndGgiLCJkZWxldGVFcnJvcnMiLCJzZXNzaW9uU3RvcmFnZSIsIkVycm9yTGlzdHMiLCJVcGxvYWRlZEVycm9ycyIsImNvbG9yIiwiY29tbW9uIiwicHJldmlvdXNseV9wdWJsaXNoZWRfb25faWF0aSIsIl9fYXNzaWduIiwiYXJndW1lbnRzIiwicCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibXVsdGlzZWxlY3RfMSIsImN1cnJlbmNpZXMiLCJidWRnZXROb3RQcm92aWRlZCIsImh1bWFuaXRhcmlhbiIsImRlZmF1bHRWYWx1ZXMiLCJidWRnZXRfbm90X3Byb3ZpZGVkIiwiZGVmYXVsdF9jdXJyZW5jeSIsImRlZmF1bHRfbGFuZ3VhZ2UiLCJoaWVyYXJjaHkiLCJkZWZhdWx0RXJyb3JzIiwiZXJyb3JSZXNldCIsImRlZmF1bHREYXRhIiwibG9hZGVyVmlzaWJpbGl0eSIsInN1Ym1pdEZvcm0iLCJwdXQiLCJNdWx0aXNlbGVjdCIsIkluZGV4XzEiLCJIb3ZlclRleHRfdnVlXzEiLCJSYWRpYWxQcm9ncmVzc0Jhcl92dWVfMSIsIlB1Ymxpc2hCdXR0b25fdnVlXzEiLCJVblB1Ymxpc2hCdXR0b25fdnVlXzEiLCJEZWxldGVCdXR0b25fdnVlXzEiLCJTdGlja3lFcnJvcnNfdnVlXzEiLCJFcnJvclBvcFVwX3Z1ZV8xIiwiQWN0aXZpdGllc0VsZW1lbnRzX3Z1ZV8xIiwiQWN0aXZpdHlFbGVtZW50X3Z1ZV8xIiwiUHJldmlvdXNseVB1Ymxpc2hlZF92dWVfMSIsIkhvdmVyVGV4dCIsIlByb2dyZXNzQmFyIiwiRWxlbWVudHMiLCJBY3Rpdml0eUVsZW1lbnQiLCJSZXN1bHQiLCJQdWJsaXNoIiwiRXJyb3JzIiwiVW5QdWJsaXNoIiwiRGVsZXRlQnV0dG9uIiwiUHJldmlvdXNseVB1Ymxpc2hlZCIsIkVycm9yUG9wVXAiLCJlbGVtZW50cyIsImdyb3VwcyIsInByb2dyZXNzIiwidHlwZXMiLCJyZXN1bHRzIiwidHJhbnNhY3Rpb25zIiwiaWF0aVZhbGlkYXRvclJlc3BvbnNlIiwiaW1wb3J0QWN0aXZpdHlFcnJvciIsInJlbW92ZWQiLCJpbmRleFN0b3JlIiwicG9zaXRpb25ZIiwic2NyZWVuV2lkdGgiLCJkb3dubG9hZFZhbHVlIiwiZG93bmxvYWRUb2dnbGUiLCJ0b2dnbGVTaWRlYmFyIiwiaGFuZGxlU2Nyb2xsIiwic2Nyb2xsWSIsImlzdG9wVmlzaWJsZSIsImNhbGNXaWR0aCIsIm9ubG9hZCIsImNsZWFyIiwiaWdub3JlVG9hc3RVcGRhdGUiLCJncm91cGVkRGF0YSIsImFjdGl2aXR5UHJvcHMiLCJlbGVtZW50UHJvcHMiLCJzdGF0dXNQcm9wcyIsInRyYW5zYWN0aW9uUHJvcHMiLCJmbGFnIiwiayIsInBhZ2VUaXRsZSIsImRlZmF1bHRfZmllbGRfdmFsdWVzIiwiZm9ybWF0VGl0bGUiLCJ0cmFuc2xhdGVkVGl0bGUiLCJ0ZXh0RnJvbUtleSIsImlnbm9yZVVwZGF0ZXMiLCJ3YXRjaElnbm9yYWJsZSIsInVuZGVmaW5lZCIsImZsdXNoIiwicHJvdmlkZSIsInZhbGlkYXRpb25SZXN1bHQiLCJ0b1NuYWtlQ2FzZSIsInNlbnRlbmNlIiwid29yZHMiLCJ3b3JkIiwiWGxzVXBsb2FkSW5kaWNhdG9yX3Z1ZV8xIiwiRW1wdHlBY3Rpdml0eV92dWVfMSIsIlRhYmxlTGF5b3V0X3Z1ZV8xIiwiVGFibGVQYWdpbmF0aW9uX3Z1ZV8xIiwiUGFnZVRpdGxlX3Z1ZV8xIiwiRXJyb3JNZXNzYWdlX3Z1ZV8xIiwiY29yZV8yIiwiYWN0aXZpdHlTdG9yZSIsIkVtcHR5QWN0aXZpdHkiLCJQYWdlVGl0bGUiLCJQYWdpbmF0aW9uIiwiVGFibGVMYXlvdXQiLCJFcnJvck1lc3NhZ2UiLCJYbHNVcGxvYWRJbmRpY2F0b3IiLCJjbG9zZU1vZGVsIiwidXBsb2FkQ29tcGxldGUiLCJpbXBvcnRDb21wbGV0ZWQiLCJ0YWJsZUxvYWRlciIsInNob3dFbXB0eVRlbXBsYXRlIiwicG9sbGluZ0Zvclhsc1N0YXR1cyIsImNoZWNrU3RhdHVzIiwiX2YiLCJfZyIsIl9oIiwiX2oiLCJfayIsInRvdGFsX2NvdW50IiwicHJvY2Vzc2VkX2NvdW50Iiwic3RhcnRYbHNEb3dubG9hZCIsImNoZWNrRG93bmxvYWRTdGF0dXMiLCJjbG9zZVhsc01vZGVsIiwiY2hlY2tYbHNzdGF0dXMiLCJ0ZW1wbGF0ZSIsImNoZWNrRG93bmxvYWQiLCJmaWxlX2NvdW50Iiwic2hvd0J1dHRvbnMiLCJzaG93T3JIaWRlIiwiZmV0Y2hBY3Rpdml0aWVzIiwiZm9ybURhdGEiLCJhY3Rpdml0eV9pZGVudGlmaWVyIiwiY2xvc2VNb2RhbCIsInN0b3JlQWN0aXZpdHkiLCJjbG9zZXN0Iiwic2MiLCJWYWxpZGF0aW9uRXJyb3JzX3Z1ZV8xIiwiQnVsa1B1Ymxpc2hpbmdFcnJvclBvcHVwX3Z1ZV8xIiwicHVibGlzaEFsZXJ0VmFsdWUiLCJwdWJsaXNoQWxlcnRUb2dnbGUiLCJidWxrUHVibGlzaFN0ZXAiLCJzdGFydFB1Ymxpc2giLCJwdWJsaXNoZWQiLCJzaG93Q2FuY2VsQ29uZmlybWF0aW9uUG9wdXAiLCJzaG93Q2FuY2VsbGVkUG9wdXAiLCJtZXNzYWdlT25DYW5jZWxsYXRpb24iLCJwb3BVcFdpZHRoQ2hhbmdlIiwiZGlzcGxheVRvYXN0IiwiaW5fcHJvZ3Jlc3MiLCJzaG93Q2FuY2VsQ29uZmlybWF0aW9uTW9kYWwiLCJjb3JlQ29tcGxldGVkQWN0aXZpdGllcyIsImNvcmVJbkNvbXBsZXRlZEFjdGl2aXRpZXMiLCJ2ZXJpZnlDb3JlRWxlbWVudHMiLCJjb21wbGV0ZSIsImluY29tcGxldGUiLCJ2YWxpZGF0aW9uRXJyb3JzIiwib3JnYW5pemF0aW9uX2lkIiwiam9iX2JhdGNoX3V1aWQiLCJ2YWxpZGF0ZUFjdGl2aXRpZXMiLCJjYW5jZWxPdGhlckJ1bGtQdWJsaXNoIiwiY2xvc2VDYW5jZWxDb25maXJtYXRpb25Nb2RhbCIsInNldENhbmNlbGxhdGlvbk1lc3NhZ2UiLCJzaG93Q2FuY2VsbGVkRGV0YWlsUG9wdXAiLCJtc2ciLCJjbG9zZUNhbmNlbGxlZERldGFpbHNQb3B1cCIsInB1Ymxpc2hBZnRlckNhbmNlbCIsIlZhbGlkYXRpb25FcnJvcnMiLCJQYWdlTG9hZGVyIiwiQnVsa1B1Ymxpc2hpbmdFcnJvclBvcHVwIiwiY2xhc3NOYW1lMiIsIkVycm9ySXRlbV92dWVfMSIsImNyaXRpY2FsTWVzc2FnZSIsIndhcm5pbmdNZXNzYWdlIiwibm9FcnJvck1lc3NhZ2UiLCJFcnJvckl0ZW0iLCJmb3JtYXREYXRlIiwiZGF0ZUZvcm1hdF8xIiwiZGF0ZUZvcm1hdCIsInJvdW5kRmxvYXQiLCJudW0iLCJwYXJzZUZsb2F0IiwidG9GaXhlZCIsIkhhdmVOb3RBZGRlZFlldF92dWVfMSIsIk5vdFlldCIsInRvb2x0aXAiLCJkZWZhdWx0TGFuZ3VhZ2UiLCJyZXN1bHREYXRhIiwiY29udGVudCIsImN1cnJlbnRMYW5ndWFnZSIsIm1vbWVudCIsIlRpdGxlRWxlbWVudCIsIk1lYXN1cmUiLCJBc2NlbmRpbmciLCJBZ2dyZWdhdGlvblN0YXR1cyIsIkRlc2NyaXB0aW9uIiwiUmVmZXJlbmNlIiwiQmFzZWxpbmUiLCJEb2N1bWVudExpbmsiLCJQZXJpb2QiLCJyZXN1bHRUaXRsZSIsImluZGljYXRvciIsInBlcmlvZCIsImVsZW1lbnQiLCJsaW5rQ2xhc3NlcyIsImluZGljYXRvckRhdGEiLCJwZXJpb2REYXRhIiwicGFyZW50RGF0YSIsInJlc3VsdF9pZCIsImFjdGl2aXR5TGluayIsInJlc3VsdElkIiwiYWN0aXZpdHlUaXRsZSIsInJlc3VsdFRpdGxlZCIsInJlc3VsdExpbmsiLCJpbmRpY2F0b3JMaW5rIiwiaW5kaWNhdG9yVGl0bGUiLCJjb3VudERvY3VtZW50TGluayIsIkRlbGV0ZUFjdGlvbl92dWVfMSIsIkRlbGV0ZUFjdGlvbiIsImluZGljYXRvcnMiLCJpbmRpY2F0b3JzRGF0YSIsImhhbmRsZU5hdmlnYXRlIiwiZmV0Y2hMaXN0aW5ncyIsIm1ldGhvZHMiLCJzbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZSIsImNyZWF0ZUNhcGl0YWxpemVkU2VudGVuY2UiLCJzdGF0dXNEYXRhIiwiYmFzZVR5cGUiLCJlbGVtZW50U3BhY2luZyIsImJhc2VsaW5lIiwibG9jYXRpb25zIiwicmVmZXJlbmNlIiwibGFzdExvY2F0aW9uIiwiZGltZW5zaW9ucyIsIm1pc3NpbmciLCJkZXNjVHlwZSIsImRlc2NyaXB0aW9uRGF0YSIsImFsaWdubWVudCIsImRsRGF0YSIsIm1lYXN1cmVUeXBlIiwibWVhc3VyZURhdGEiLCJyZWZUeXBlIiwicmVmRGF0YSIsInRpdGxlVHlwZSIsInRpdGxlRGF0YSIsImNvcmVFbGVtZW50c18xIiwiZHJvcGRvd24iLCJkcm9wZG93bkJ0biIsInNlYXJjaEJ0blZhbHVlIiwic2VhcmNoQnRuVG9nZ2xlIiwiZWxlbWVudEljb25zIiwibm90X2NvbXBsZXRlZCIsImNvcmUiLCJmaWx0ZXJlZEVsZW1lbnRzIiwianVzdFN0cmluZ3MiLCJhY3Rpdml0eUNvcmVFbGVtZW50cyIsImRyb3Bkb3duRmlsdGVyIiwiY29udGFpbnMiLCJnZXRMaW5rIiwiaGFzX2RhdGEiLCJFbGVtZW50U3RhdHVzX3Z1ZV8xIiwid2FybmluZ0luZm9UZXh0IiwibGF5b3V0IiwiZGVsZXRlQWN0aXZpdHlFbGVtZW50IiwiZGVsZXRlRWxlbWVudCIsInNjcm9sbFRvIiwiQWN0aXZpdHlEYXRlIiwiQ29uZGl0aW9ucyIsIkNvbnRhY3RJbmZvIiwiSHVtYW5pdGFyaWFuU2NvcGUiLCJJYXRpSWRlbnRpZmllciIsIkxlZ2FjeURhdGEiLCJMb2NhdGlvbiIsIk90aGVySWRlbnRpZmllciIsIlBhcnRpY2lwYXRpbmdPcmciLCJQbGFubmVkRGlzYnVyc2VtZW50IiwiUG9saWN5TWFya2VyIiwiUmVjaXBpZW50Q291bnRyeSIsIlJlY2lwaWVudFJlZ2lvbiIsIlJlbGF0ZWRBY3Rpdml0eSIsIlJlcG9ydGluZ09yZ2FuaXphdGlvbiIsIlNlY3RvciIsIlRhZyIsIlRyYW5zYWN0aW9ucyIsIlN0YXR1cyIsImlzVmlzaWJsZSIsIm1vZGVsVmlzaWJsZSIsInRvZ2dsZU1vZGVsIiwidG9hc3RtZXNzYWdlVHlwZSIsInNob3dFcnJvcnBvcHVwIiwiZG93bmxvYWRpbmdCYWNrZ3JvdW5kTWVzc2FnZSIsImRvd25sb2FkaW5nSW5Qcm9jZXNzIiwiZG93bmxvYWRFcnJvciIsImZpbGVuYW1lIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwicmVtb3ZlQ2hpbGQiLCJkb3dubG9hZEFueXdheSIsImRvd25sb2FkRXJyb3J4bWwiLCJjb3VudEFjdGl2aXRpZXMiLCJxdWVyeVBhcmFtZXRlcnMiLCJhZGRRdWVyeVBhcmFtcyIsImRvd25sb2FkIiwiZG93bmxvYWRYbWwiLCJ4bWxfZXJyb3IiLCJkb3dubG9hZFhscyIsImRvd25sb2FkQ3N2IiwiQWRkQWN0aXZpdHlCdXR0b25fdnVlXzEiLCJBY3Rpdml0eUJ1dHRvbiIsImRpc21pc3MiLCJEb3dubG9hZEFjdGl2aXR5QnV0dG9uX3Z1ZV8xIiwiUmVmcmVzaFRvYXN0X3Z1ZV8xIiwiUHVibGlzaFNlbGVjdGVkX3Z1ZV8xIiwiRG93bmxvYWRBY3Rpdml0eUJ1dHRvbiIsIkFkZEFjdGl2aXR5QnV0dG9uIiwiUmVmcmVzaFRvYXN0TWVzc2FnZSIsIlB1Ymxpc2hTZWxlY3RlZCIsInNlbGVjdEFsbFZhbHVlIiwic2VsZWN0QWxsVG9nZ2xlIiwiZnJvbU5vdyIsInRvZ2dsZVNlbGVjdEFsbCIsImRhdHVtIiwicXVlcnkiLCJkaXJlY3Rpb24iLCJzb3J0aW5nRGlyZWN0aW9uIiwic29ydEJ5UHVibGlzaGluZ1Byb2dyZXNzIiwic29ydEJ5RGF0ZVVybCIsIlRhcmdldFZhbHVlIiwiQWN0dWFsVmFsdWUiLCJpbmRpY2F0b3JJZCIsInBlcmlvZExpbmsiLCJwZXJpb2RzRGF0YSIsImRsVHlwZSIsImFjdHVhbFZhbHVlIiwiZ2V0TG9jYXRpb24iLCJ0YXJnZXRWYWx1ZSIsIlJlc3VsdEVsZW1lbnRfdnVlXzEiLCJJbmRpY2F0b3JfdnVlXzEiLCJSZXN1bHRFbGVtZW50IiwiSW5kaWNhdG9yIiwiaGFzSW5kaWNhdG9ycyIsInJlc3VsdHNEYXRhIiwiVGl0bGVEZXNjcmlwdGlvbiIsIlJlc3VsdFR5cGUiLCJlbGVtZW50TmFtZSIsImVkaXRVcmwiLCJlbGVtZW50RGF0YSIsInJlc3VsdFR5cGUiLCJyZXN1bHRWb2NhYnVsYXJ5IiwidG9vbFRpcCIsInJldmVyc2UiLCJyZWZlcmVuY2VEYXRhIiwidHlwZURhdGEiLCJ0ZERhdGEiLCJUcmFuc2FjdGlvbkVsZW1lbnRfdnVlXzEiLCJUcmFuc2FjdGlvbkVsZW1lbnQiLCJ0cmFuc2FjdGlvbiIsInRyYW5zYWN0aW9uRGF0YSIsInRyYW5zYWN0aW9uTGluayIsImlzTWFuZGF0b3J5SWNvbiIsInIiLCJBaWRUeXBlIiwiVHJhbnNhY3Rpb25UeXBlIiwiVHJhbnNhY3Rpb25EYXRlIiwiVmFsdWUiLCJQcm92aWRlck9yZ2FuaXphdGlvbiIsIlJlY2VpdmVyT3JnYW5pemF0aW9uIiwiRGlzYnVyc2VtZW50Q2hhbm5lbCIsIkZsb3dUeXBlIiwiRmluYW5jZVR5cGUiLCJUaWVkU3RhdHVzIiwiZ2V0TGFuZ3VhZ2VzIiwiZW50cnkiLCJ0cmFuc2FjdGlvbnNEYXRhIiwiYXREYXRhIiwiY29kZSIsImZpbmFuY2VEYXRhIiwiZmxvd0RhdGEiLCJQb0RhdGEiLCJjb3VudHJ5Iiwic2VjdG9yIiwidHNEYXRhIiwiYXVkaXREYXRhIiwiZmV0Y2hBdWRpdExpc3QiLCJyb3V0ZSIsInBhcmFtcyIsImxhYmVscyIsInJvdW5kZWRMYWJlbHMiLCJzaG93R3JhcGhMb2FkZXIiLCJncmFwaEFtb3VudCIsInlheGlzVGlja3MiLCJtYXhWYWx1ZSIsImNoYXJ0IiwiZ3JhcGhDb2xvciIsInRvb2x0aXBUZXh0IiwiY2hhcnRPcHRpb25zIiwiaGVpZ2h0Iiwib2Zmc2V0WSIsInpvb20iLCJlbmFibGVkIiwib3B0aW9ucyIsInhheGlzIiwicGFkZGluZyIsInRvb2xiYXIiLCJtYXJrZXJzIiwic2l6ZSIsInN0cm9rZVdpZHRoIiwiY29sb3JzIiwiaG92ZXIiLCJzdHJva2UiLCJjdXJ2ZSIsImN1c3RvbSIsInNlcmllcyIsInNlcmllc0luZGV4IiwiZGF0YVBvaW50SW5kZXgiLCJ3IiwiZ2V0RGF5IiwiZm9ybWF0dGVkRGF0ZSIsImdsb2JhbHMiLCJjYXRlZ29yeUxhYmVscyIsInRpY2tBbW91bnQiLCJyb3RhdGUiLCJ5YXhpcyIsIm1pbiIsIm1heCIsImZvcm1hdHRlciIsInlBeGlzU2NhbGUiLCJNYXRoIiwicm91bmQiLCJUYWJsZUxvYWRlckNvbXBvbmVudF92dWVfMSIsInRhYmxlRGF0YSIsInRhYmxlSGVhZGVyIiwiYWN0aXZpdHlOYXZMaXN0IiwiYXBpUGFyYW1zIiwicHVibGlzaGVyTmF2TGlzdCIsImN1cnJlbnRwYWdlIiwicmVzZXRwYWdpbmF0aW9uIiwib3JkZXJCeSIsInNvcnQiLCJzb3J0RWxlbWVudCIsInVzZXJOYXZsaXN0IiwiY3VycmVudEl0ZW0iLCJjdXJyZW50TmF2TGlzdCIsImZldGNoVGFibGVEYXRhIiwic29ydFRhYmxlIiwidHJpZ2dlcnBhZ2luYXRpb24iLCJhY3RpdmVDbGFzcyIsIk5hdmlnYXRlV2l0aEZpbHRlciIsInRhYkNoYW5nZSIsInRvZ2dsZVNvcnQiLCJvcmRlciIsImNvbXBsZXRlTmVzcyIsInJlZ2lzdHJhdGlvblR5cGUiLCJzaG93VGFibGVMb2FkZXIiLCJ0cnVuY2F0ZVRleHQiLCJUYWJsZUxvYWRlckNvbXBvbmVudCIsIkRhc2hib2FyZFN0YXRzU2VjdGlvbl92dWVfMSIsIkRhc2hib2FyZExpc3RTZWN0aW9uX3Z1ZV8xIiwiRGF0ZVJhbmdlV2lkZ2V0X3Z1ZV8xIiwib2xkZXN0RGF0ZXMiLCJjdXJyZW50TmF2IiwiRGF0ZUxhYmVsIiwiZ3JhcGhUb3RhbCIsInB1Ymxpc2hlciIsImhhbmRsZUNoYW5nZVRhYmxlTmF2Iiwic2V0RGF0ZVJhbmdlRGF0ZSIsImZldGNoR3JhcGhEYXRhIiwiZG93bmxvYWRSZXBvcnQiLCJhcHBlbmQiLCJncmFwaERhdGFGb3JtYXR0ZXIiLCJncmFwaERhdGEiLCJ4Iiwic3RhcnQiLCJlbmQiLCJhY3RpdmVUYWIiLCJrZWJhYkNhc2VUb1NuYWtlY2FzZSIsImNvZGVMaXN0Iiwib2JqZWN0TGVuZ3RoIiwicGFnaW5hdGVkRGF0YSIsIml0ZW1JblBhZ2luYXRlZERhdGEiLCJwdWJsaXNoZXJUeXBlS2V5IiwidG90YWwiLCJEYXNoYm9hcmRTdGF0c1NlY3Rpb24iLCJEYXNoYm9hcmRMaXN0U2VjdGlvbiIsIkRhdGVSYW5nZVdpZGdldCIsIkJ1dHRvbkNvbXBvbmVudCIsIkRhc2hib2FyZEdyYXBoX3Z1ZV8xIiwiaW5hY3RpdmVQdWJsaXNoZXIiLCJwdWJsaXNoZXJXaXRob3V0QWN0aXZpdHkiLCJsYXN0UmVnaXN0ZXJlZCIsImxhc3RVcGRhdGVkUHVibGlzaGVyIiwibGFzdFVwZGF0ZWRBY3Rpdml0eSIsInNob3dTdGF0c0xvYWRlciIsInB1Ymxpc2hlclN0YXRzIiwic2hvd1B1Ymxpc2hlclN0YXRzIiwidXNlcklkIiwiZmV0Y2hTdGF0c0RhdGEiLCJwcm94eVVzZXIiLCJsYXN0UmVnaXN0ZXJlZFB1Ymxpc2hlciIsInVzZXJfaWQiLCJpbkFjdGl2ZVB1Ymxpc2hlciIsIkRhc2hib2FyZEdyYXBoIiwiZmlsZSIsInVwbG9hZEZpbGUiLCJmaWxlcyIsImNvbmZpZyIsIkZvcm1EYXRhIiwiZG93bmxvYWRFeGNlbCIsInhsc0luZGljYXRvck1vdW50ZWQiLCJ1cGxvYWRUeXBlIiwic2hvd0Rvd25sb2FkRHJvcGRvd24iLCJzaG93RG93bmxvYWRDb2RlIiwic2hvd0NhbmNlbE1vZGVsIiwiZG93bmxvYWRDb2RlIiwicmVxIiwiY2FuY2VsVXBsb2FkIiwiY2FuY2VsSW1wb3J0IiwiaW1wb3J0QW55d2F5Iiwic2VsZWN0QWxsIiwieGxzVHlwZSIsIl9sIiwiX20iLCJJbXBvcnRQbGFjZWhvbGRlcl92dWVfMSIsIkxpc3RFbGVtZW50X3Z1ZV8xIiwic2VsZWN0ZWRDb3VudCIsImFjdGl2aXRpZXNMZW5ndGgiLCJ0YWJsZVJvdyIsInRhYmxlV2lkdGgiLCJ0aW1lciIsImdldERpbWVuc2lvbnMiLCJuZXh0VGljayIsImNsaWVudFdpZHRoIiwidXBkYXRlU2VsZWN0ZWRBY3Rpdml0aWVzIiwic3BsaWNlIiwic2VsZWN0QWxsQWN0aXZpdGllcyIsImltcG9ydEFjdGl2aXRpZXMiLCJmaWxldHlwZSIsIlBsYWNlaG9sZGVyIiwiTGlzdEVsZW1lbnQiLCJTaGltbWVyIiwidG9nZ2xlRXJyb3IiLCJzZWxlY3RFbGVtZW50Iiwic2VsZWN0ZWREYXRhIiwiWGxzTGlzdEVycm9yX3Z1ZV8xIiwiZ2xvYmFsRXJyb3IiLCJzb3J0T3JkZXIiLCJzaG93Q3JpdGljYWxFcnJvck1vZGVsIiwic2hvd0lkZW50aWZpZXJFcnJvck1vZGVsIiwic2hvd0NyaXRpY2FsRXJyb3JNZXNzYWdlIiwic2hvd0dMb2JhbEVycm9yIiwic29ydGVkRGF0YSIsImEiLCJiIiwiY2hlY2tDcml0aWNhbEVycm9yIiwiZG93bmxvYWRJZGVudGlmaWVyRXJyb3IiLCJGaWxlIiwiYW5jaG9yVGFnIiwicmV2b2tlT2JqZWN0VVJMIiwiY3JpdGljYWxBcnJ5IiwidG90YWxDcmlyaWNhbEVycm9yQ291bnQiLCJhZGRBY3Rpdml0aWVzIiwiWGxzTGlzdEVycm9yIiwiT3JnYW5pc2F0aW9uRWxlbWVudHNfdnVlXzEiLCJPcmdhbmlzYXRpb25FbGVtZW50c0RldGFpbF92dWVfMSIsIk9yZ2FuaXphdGlvblB1Ymxpc2hVbnB1Ymxpc2hCdXR0b25fdnVlXzEiLCJPcmdhbmlzYXRpb25FbGVtZW50cyIsIk9yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsIiwiUHVibGlzaFVucHVibGlzaCIsIm1hbmRhdG9yeUNvbXBsZXRlZCIsInVzZXJSb2xlIiwib3JnYW5pemF0aW9uUHJvcHMiLCJvcmdhbml6YXRpb25EYXRhIiwicHVibGlzaE1lc3NhZ2UiLCJtYW5kYXRvcnkiLCJvcmdNYW5kYXRvcnlFbGVtZW50cyIsInJlcGxhY2VVbmRlcnNjb3JlIiwic3RyaW5nIiwicmVnZXgiLCJSZXBvcnRpbmdPcmdhbmlzYXRpb24iLCJUb3RhbEJ1ZGdldCIsIlJlcG9ydGluZ09yZ0J1ZGdldCIsIlJlcG9ydGluZ1JlZ2lvbkJ1ZGdldCIsIlJlY2lwaWVudENvdW50cnlCdWRnZXQiLCJUb3RhbEV4cGVuZGl0dXJlIiwiZW1haWwiLCJlbWFpbEVycm9yIiwicmVxdWVzdCIsInJlc3BvbnNlVVJMIiwiZW5jcnlwdGlvbl8xIiwidG9rZW4iLCJwYXNzd29yZCIsInBhc3N3b3JkX2NvbmZpcm1hdGlvbiIsImZvcm0iLCJwcm9jZXNzIiwiZW52IiwiTUlYX0VOQ1JZUFRJT05fS0VZIiwic3RvcmVfMSIsImFjdGlvbnNfMSIsImRlZmF1bHRDb2xsYWJvcmF0aW9uVHlwZSIsImRlZmF1bHRGbG93VHlwZSIsImRlZmF1bHRGaW5hbmNlVHlwZSIsImRlZmF1bHRBaWRUeXBlIiwiZGVmYXVsdFRpZWRTdGF0dXMiLCJkZWZhdWx0Rm9ybSIsImRlZmF1bHRFcnJvciIsInVwZGF0ZVN0b3JlIiwiQWN0aW9uVHlwZXMiLCJVUERBVEVfREVGQVVMVF9WQUxVRVMiLCJTZXR0aW5nRGVmYXVsdEZvcm1fdnVlXzEiLCJTZXR0aW5nUHVibGlzaGluZ0Zvcm1fdnVlXzEiLCJTZXR0aW5nRGVmYXVsdEZvcm0iLCJTZXR0aW5nUHVibGlzaGluZ0Zvcm0iLCJ0YWIiLCJwdWJsaXNoaW5nRm9ybSIsInB1Ymxpc2hpbmdJbmZvIiwicHVibGlzaGluZ0Vycm9yIiwic2V0dGluZ0RhdGEiLCJwdWJsaXNoZXJJbmZvIiwiYWN0aXZpdHlWYWx1ZXMiLCJkZWZhdWx0X3ZhbHVlcyIsInB1Ymxpc2hpbmdfaW5mbyIsImFjdGl2aXR5X2RlZmF1bHRfdmFsdWVzIiwiYXBpX3Rva2VuIiwidG9nZ2xlVGFiIiwic3VibWl0RGVmYXVsdCIsImhpZXJhcmNoaWFsIiwic3VibWl0UHVibGlzaGluZyIsInB1Ymxpc2hlcl92ZXJpZmljYXRpb24iLCJ0b2tlbl92ZXJpZmljYXRpb24iLCJhdXRvVmVyaWZ5IiwiVVBEQVRFX1BVQkxJU0hJTkdfRk9STSIsIlRhYmxlTGlzdF92dWVfMSIsImNvdW50cmllcyIsInNldHVwQ29tcGxldGVuZXNzIiwicmVnaXN0cmF0aW9uVHlwZXMiLCJwdWJsaXNoZXJUeXBlcyIsImRhdGFMaWNlbnNlcyIsIlRhYmxlTGlzdCIsImxhbmdfMSIsInBocERlcGVuZGVuY2llcyIsIm5vZGVEZXBlbmRlbmNpZXMiLCJwYWNrYWdlTWFuYWdlclZlcnNpb24iLCJsYXRlc3RNYW5hZ2VyVmVyc2lvbiIsImdldFN0YXR1c0NsYXNzIiwidXBkYXRlU3RhdHVzIiwiZ2V0U3RhdHVzTWVzc2FnZSIsInJlc29sdmVMYXRlc3RWZXJzaW9uIiwiZ2V0SW5kZXgiLCJwYXJzZUludCIsIm9yZ2FuaXphdGlvbk5hbWUiLCJzd2l0Y2hCYWNrIiwiTXVsdGlTZWxlY3RXaXRoU2VhcmNoX3Z1ZV8xIiwiZ2V0Q291bnRyaWVzV2l0aFByZWZpeCIsInJldHVyblZhbHVlRm9yQ291bnRyaWVzIiwiY291bnRyeUNvZGVzIiwiY291bnRyaWVzV2l0aFByZWZpeCIsIm9yZ2FuaXNhdGlvbkRhdGEiLCJtdWx0aXNlbGVjdFN0eWxlIiwicHVibGlzaGVyX3R5cGUiLCJkYXRhX2xpY2Vuc2UiLCJjb21wbGV0ZW5lc3MiLCJyZWdpc3RyYXRpb25fdHlwZSIsInN0YXJ0X2RhdGUiLCJlbmRfZGF0ZSIsImRhdGVfdHlwZSIsInNlbGVjdGVkX2RhdGVfZmlsdGVyIiwicmVzZXRQYWdpbmF0aW9uIiwidG90YWxPcmdhbmlzYXRpb24iLCJyZWdpc3RyeUFwaUtleVN0YXR1cyIsImRlZmF1bHRWYWx1ZVN0YXR1cyIsInNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2giLCJjcmVhdGVkX2F0IiwibGFzdF9sb2dnZWRfaW4iLCJzb3J0UGFyYW1zIiwicm90YXRlQ2xhc3MiLCJjbG9zZVB1Ymxpc2hlck1vZGVsIiwiY2xlYXJEYXRlRmlsdGVyIiwiZ2VuZXJhdGVMYWJlbCIsImZpbHRlclBhcmFtcyIsImdldEZpbHRlclBhcmFtc0Zyb21QcmV2aW91c1BhZ2UiLCJmZXRjaE9yZ2FuaXNhdGlvbiIsInF1ZXJ5UGFyYW1zSW5LZXlWYWwiLCJxdWVyeVBhcmFtcyIsImlzRmlsdGVyQXBwbGllZCIsImZpbHRlcktleSIsInJlZnJlc2hTdGF0dXNBcnJheXMiLCJkZWZhdWx0U29ydERpcmVjdGlvbiIsInNvcnREaXJlY3Rpb24iLCJvcmRlclR5cGUiLCJzb3J0QnkiLCJyZXNldEFsbEZpbHRlcnMiLCJvcmdEYXRhIiwib3JnRGF0dW0iLCJzZXR0aW5ncyIsImNoZWNrSWZEZWZhdWx0VmFsdWVzQXJlVmFsaWQiLCJhY3Rpdml0eURlZmF1bHRWYWx1ZXMiLCJzZWxlY3RlZERhdGVGaWx0ZXIiLCJzZXREYXRlVHlwZSIsInRvZ2dsZVNob3dNdWx0aVNlbGVjdCIsInJlY3QiLCJzZXRTZWxlY3RlZFB1Ymxpc2hlciIsInNob3dNYXBwZWREYXRhIiwibGljZW5zZSIsInRyaW0iLCJNdWx0aVNlbGVjdFdpdGhTZWFyY2giLCJvcmdhbml6YXRpb25zIiwicm9sZXMiLCJxIiwiYWRkVXNlckZvcm0iLCJlZGl0VXNlckZvcm0iLCJ1c2Vyc0RhdGEiLCJhbGxTZWxlY3RlZCIsImRlbGV0ZU1vZGFsIiwiZGVsZXRlSWQiLCJ0b3RhbFVzZXIiLCJzdGF0dXNJZCIsInN0YXR1c01vZGFsIiwic3RhdHVzVmFsdWUiLCJzdGF0dXNVc2VybmFtZSIsImRlbGV0ZVVzZXJuYW1lIiwiZmV0Y2hpbmdUYWJsZURhdGEiLCJzZWxlY3RlZElkcyIsImNoZWNrbGlzdCIsImN1cnJlbnRwYWdlRGF0YSIsImVkaXRVc2VySWQiLCJ1c2VybmFtZSIsImZ1bGxfbmFtZSIsInJvbGVfaWQiLCJmb3JtRXJyb3IiLCJjbGVhckRhdGVSYW5nZUZpbHRlciIsInJvbGUiLCJ0ZXh0QnViYmxlZGF0YSIsImZpZWxkIiwiY2xlYXJGaWx0ZXIiLCJjcmVhdGVVc2VyIiwicGFzc3dvcmREYXRhIiwic2V0Rm9ybUVycm9yIiwiZmV0Y2hVc2Vyc0xpc3QiLCJlbXB0eUZvcm1EYXRhIiwiZWRpdFVzZXIiLCJvcGVuU3RhdHVzTW9kZWwiLCJ1cGRhdGVVc2VyIiwicGF0Y2giLCJmaWx0ZXJfa2V5Iiwib3BlbkRlbGV0ZW1vZGVsIiwiZGVsZXRlVXNlciIsInRvZ2dsZVVzZXJTdGF0dXMiLCJ0b2dnbGVTZWxlY3RhbGwiLCJlbCIsImRvd25sb2FkQWxsIiwiYWxsUGFnZVNlbGVjdGVkIiwiZmxhdCIsIlBvcHVwTW9kYWwiLCJsYW5ndWFnZVByZWZlcmVuY2UiLCJlZGl0UHJvZmlsZUZvcm0iLCJlZGl0UGFzc3dvcmRGb3JtIiwic2hvd0N1cnJlbnRQYXNzd29yZCIsInNob3dOZXdQYXNzd29yZCIsInNob3dDb25maXJtUGFzc3dvcmQiLCJ1c2VyRGF0YSIsInVzZXJfcm9sZSIsImxhbmd1YWdlX3ByZWZlcmVuY2UiLCJlcnJvckZvcm1EYXRhIiwiY3VycmVudF9wYXNzd29yZCIsImVycm9yUGFzc3dvcmREYXRhIiwidXBkYXRlUGFzc3dvcmQiLCJwYXNzd29yZEZvcm1EYXRhIiwiZm9ybV90eXBlIiwidXBkYXRlUHJvZmlsZSIsIkVtYWlsVmVyaWZpY2F0aW9uX3Z1ZV8xIiwiRW1haWxWZXJpZmljYXRpb24iLCJwdWJsaXNoZXJFeGlzdHMiLCJ0ZXh0YXJlYSIsInB1Ymxpc2hlcl9uYW1lIiwicHVibGlzaGVyX2lkIiwicmVnaXN0cmF0aW9uX2FnZW5jeSIsInJlZ2lzdHJhdGlvbl9udW1iZXIiLCJpZGVudGlmaWVyIiwibGljZW5zZV9pZCIsImltYWdlX3VybCIsImNvbnRhY3RfZW1haWwiLCJ3ZWJzaXRlIiwiYWRkcmVzcyIsInNvdXJjZSIsInJlY29yZF9leGNsdXNpb25zIiwiaWF0aUVycm9yIiwicmVzaXplIiwic2Nyb2xsSGVpZ2h0IiwiYWdlbmNpZXMiLCJyZWdpc3RyYXRpb25BZ2VuY3kiLCJ1bmNhdGVnb3JpemVkXzEiLCJzdGFydHNXaXRoIiwic29tZSIsImlzVGV4dEZpZWxkIiwiZmllbGRUeXBlIiwiZmllbGROYW1lIiwiY2hlY2tTdGVwIiwiZm9ybVN0ZXAiLCJyZWdpc3RlckZvcm0iLCJyZWdpc3RlclRleHQiLCJpc19jb21wbGV0ZSIsImhvdmVyX3RleHQiLCJmaWVsZHMiLCJwbGFjZWhvbGRlciIsImhlbHBfdGV4dCIsInB1Ymxpc2hlclR5cGUiLCJkYXRhTGljZW5zZSIsInVwZGF0ZVZhbGlkYXRpb25FcnJvcnMiLCJlcnJvclJlc3BvbnNlIiwiY2xlYW5WYWxpZGF0aW9uRXJyb3JzIiwidXBkYXRlRXJyb3JzIiwiZXZlcnkiLCJjbGVhbklhdGlFcnJvcnMiLCJ2ZXJpZnlQdWJsaXNoZXIiLCJ1cGRhdGVTdGVwIiwidmVyaWZ5Q29udGFjdEluZm9ybWF0aW9uIiwidmVyaWZ5QWRkaXRpb25hbEluZm9ybWF0aW9uIiwiZ2V0Q3VycmVudFN0ZXAiLCJjdXJyZW50X3N0ZXAiLCJnb1RvTmV4dEZvcm0iLCJnb1RvUHJldmlvdXNGb3JtIiwiZG93bmxvYWRNYW51YWwiLCJvcmlnaW4iLCJ0cmlnZ2VyTW9kZWwiLCJhZ2VuY3kiLCJvcmdhbml6YXRpb25fcmVnaXN0cmF0aW9uX2FnZW5jeSIsIm9yZ2FuaXphdGlvbl9yZWdpc3RyYXRpb25fbm8iLCJpYXRpX29yZ2FuaXphdGlvbmFsX2lkZW50aWZpZXIiLCJjb25maXJtX3Bhc3N3b3JkIiwidXBkYXRlRm9ybUVycm9ycyIsImVycktleSIsImludGVudCIsImxvZ2luIiwiTmF2RHJvcGRvd25fdnVlXzEiLCJOYXZEcm9wZG93biIsImF1dGgiLCJyZW5kZXIiLCJfaG9pc3RlZF8xIiwiX2hvaXN0ZWRfMiIsIl9ob2lzdGVkXzMiLCJfaG9pc3RlZF80IiwiY3JlYXRlRWxlbWVudFZOb2RlIiwiX2hvaXN0ZWRfNSIsIl9ob2lzdGVkXzYiLCJfaG9pc3RlZF83IiwiX2hvaXN0ZWRfOCIsIl9ob2lzdGVkXzkiLCJfaG9pc3RlZF8xMCIsIl9jdHgiLCJfY2FjaGUiLCIkcHJvcHMiLCIkc2V0dXAiLCIkZGF0YSIsIiRvcHRpb25zIiwiX2NvbXBvbmVudF9zdmdfdnVlIiwicmVzb2x2ZUNvbXBvbmVudCIsIm9wZW5CbG9jayIsImNyZWF0ZUVsZW1lbnRCbG9jayIsIkZyYWdtZW50Iiwib25DbGljayIsImNyZWF0ZVZOb2RlIiwiY3JlYXRlQ29tbWVudFZOb2RlIiwibm9ybWFsaXplU3R5bGUiLCIkZXZlbnQiLCJ0b0Rpc3BsYXlTdHJpbmciLCJjcmVhdGVCbG9jayIsIndpdGhDdHgiLCJfd2l0aFNjb3BlSWQiLCJwdXNoU2NvcGVJZCIsInBvcFNjb3BlSWQiLCJfaG9pc3RlZF8xMSIsIl9ob2lzdGVkXzEyIiwiX2hvaXN0ZWRfMTMiLCJfaG9pc3RlZF8xNCIsIl9ob2lzdGVkXzE1IiwiX2hvaXN0ZWRfMTYiLCJfaG9pc3RlZF8xNyIsIl9ob2lzdGVkXzE4IiwiX2hvaXN0ZWRfMTkiLCJfaG9pc3RlZF8yMCIsIl9ob2lzdGVkXzIxIiwiX2hvaXN0ZWRfMjIiLCJfaG9pc3RlZF8yMyIsIl9ob2lzdGVkXzI0IiwiX2hvaXN0ZWRfMjUiLCJfaG9pc3RlZF8yNiIsIl9ob2lzdGVkXzI3IiwiX2hvaXN0ZWRfMjgiLCJfaG9pc3RlZF8yOSIsIl9ob2lzdGVkXzMwIiwiX2hvaXN0ZWRfMzEiLCJfaG9pc3RlZF8zMiIsIl9ob2lzdGVkXzMzIiwiX2hvaXN0ZWRfMzQiLCJfaG9pc3RlZF8zNSIsIl9ob2lzdGVkXzM2IiwiX2hvaXN0ZWRfMzciLCJfaG9pc3RlZF8zOCIsIl9ob2lzdGVkXzM5Iiwibm9ybWFsaXplQ2xhc3MiLCJyZW5kZXJMaXN0IiwibmF2X19wb2ludGVyIiwibG9nVGV4dCIsInJlZl9mb3IiLCJjcmVhdGVUZXh0Vk5vZGUiLCJ3aXRoRGlyZWN0aXZlcyIsIm9uS2V5dXAiLCJ3aXRoS2V5cyIsInZNb2RlbFRleHQiLCJvbkNsb3NlIiwib25DbG9zZU1vZGFsIiwib25Ub2FzdCIsImJjIiwiZCIsIiRlbWl0IiwiZGlzYWJsZWQiLCJ2U2hvdyIsImVtcHR5IiwibW9kZWxWYWx1ZSIsImNsZWFyYWJsZSIsInRlbGVwb3J0Iiwib25PcGVuIiwib25DbGVhcmVkIiwieWVhcmx5IiwicHJlc2V0RGF0ZVJhbmdlIiwiYWN0aW9uIiwidGFiaW5kZXgiLCJjb2xzIiwicm93cyIsImNyZWF0ZVN0YXRpY1ZOb2RlIiwiYXMiLCJlbnRlciIsImxlYXZlIiwiaW5uZXJIVE1MIiwib25JbnB1dCIsInZNb2RlbENoZWNrYm94IiwiVGVsZXBvcnQiLCJ0byIsIlRyYW5zaXRpb24iLCJhcmdzIiwicmVuZGVyU2xvdCIsIiRzbG90cyIsIl9jb21wb25lbnRfcmFkaWFsX3Byb2dyZXNzX2JhciIsImRpYW1ldGVyIiwicm93IiwiY29sIiwibSIsImVsZV9lcnIiLCJ0cnVuYyIsIm9uVG9nZ2xlIiwib25SZXNldCIsImlhdGlfcGF0aCIsIl9jb21wb25lbnRfQnRuIiwiX2NvbXBvbmVudF9CcmVhZGNydW1iIiwiZXJyb3JJbmRleCIsImVycm9yTGlzdCIsImxpc3RJbmRleCIsIl9jb21wb25lbnRfSG92ZXJUZXh0Iiwic2VhcmNoYWJsZSIsIl9ob2lzdGVkXzQwIiwiX2hvaXN0ZWRfNDEiLCJfaG9pc3RlZF80MiIsIl9ob2lzdGVkXzQzIiwiX2hvaXN0ZWRfNDQiLCJfaG9pc3RlZF80NSIsIl9ob2lzdGVkXzQ2IiwiX2hvaXN0ZWRfNDciLCJfaG9pc3RlZF80OCIsIl9ob2lzdGVkXzQ5IiwiX2hvaXN0ZWRfNTAiLCJfaG9pc3RlZF81MSIsIl9ob2lzdGVkXzUyIiwiX2hvaXN0ZWRfNTMiLCJfaG9pc3RlZF81NCIsIl9ob2lzdGVkXzU1IiwiX2hvaXN0ZWRfNTYiLCJfaG9pc3RlZF81NyIsIl9ob2lzdGVkXzU4IiwiX2hvaXN0ZWRfNTkiLCJfaG9pc3RlZF82MCIsIl9ob2lzdGVkXzYxIiwiX2hvaXN0ZWRfNjIiLCJfaG9pc3RlZF82MyIsIl9ob2lzdGVkXzY0IiwiX2hvaXN0ZWRfNjUiLCJfaG9pc3RlZF82NiIsIl9ob2lzdGVkXzY3IiwiX2NvbXBvbmVudF9Ub2FzdCIsIl9jb21wb25lbnRfRXJyb3JQb3BVcCIsIl9jb21wb25lbnRfRGVsZXRlQnV0dG9uIiwiX2NvbXBvbmVudF9VblB1Ymxpc2giLCJfY29tcG9uZW50X1B1Ymxpc2giLCJfY29tcG9uZW50X0Vycm9ycyIsIl9jb21wb25lbnRfUHJldmlvdXNseVB1Ymxpc2hlZCIsIl9jb21wb25lbnRfUHJvZ3Jlc3NCYXIiLCJfY29tcG9uZW50X0VsZW1lbnRzIiwiX2NvbXBvbmVudF9BY3Rpdml0eUVsZW1lbnQiLCJfY29tcG9uZW50X1Jlc3VsdCIsIl9kaXJlY3RpdmVfc3RpY2t5X2NvbXBvbmVudCIsInJlc29sdmVEaXJlY3RpdmUiLCJfZGlyZWN0aXZlX3Ntb290aF9zY3JvbGwiLCJvbkNsb3NlUG9wdXAiLCJ1blB1Ymxpc2hlZCIsInNob3dQdWJsaXNoZWQiLCJwdWJsaXNoRXJyb3JzIiwiYm91bmRhcnkiLCJpY29uX3NpemUiLCJ3YXJuaW5nX2luZm9fdGV4dCIsIl9jb21wb25lbnRfTG9hZGVyIiwiX2NvbXBvbmVudF9QYWdlVGl0bGUiLCJfY29tcG9uZW50X0Vycm9yTWVzc2FnZSIsIl9jb21wb25lbnRfRW1wdHlBY3Rpdml0eSIsIl9jb21wb25lbnRfVGFibGVMYXlvdXQiLCJfY29tcG9uZW50X1BhZ2luYXRpb24iLCJfY29tcG9uZW50X1hsc1VwbG9hZEluZGljYXRvciIsIm9uU2hvd09ySGlkZSIsIm9uRmV0Y2hBY3Rpdml0aWVzIiwiX2NvbXBvbmVudF9NdWx0aXNlbGVjdCIsIl9jb21wb25lbnRfQnRuQ29tcG9uZW50IiwiX2NvbXBvbmVudF9Nb2RhbCIsImVycm9yX19pbnB1dCIsImlhdGlfaWRlbnRpZmllcl90ZXh0IiwiYyIsImFjdCIsIm5vX2Vycm9ycyIsImFjdGl2aXR5RGF0ZSIsImNvbmRpdGlvbl9hdHRhY2hlZCIsImNvbmRpdGlvbiIsImNvbmRpdGlvbl90eXBlIiwiY29uZGl0aW9uVHlwZSIsImNvbnRhY3RUeXBlIiwib3JnYW5pc2F0aW9uIiwicGVyc29uX25hbWUiLCJkZXBhcnRtZW50Iiwiam9iX3RpdGxlIiwiZW1haWxfdmFsdWUiLCJ0ZWxlcGhvbmUiLCJ0ZWwiLCJtYWlsaW5nX2FkZHJlc3MiLCJhZGRyZXNzX2luZGV4IiwiZGVzY3JpcHRpb25UeXBlIiwiaHVtYW5pdGFyaWFuU2NvcGVUeXBlIiwiaHVtYW5pdGFyaWFuU2NvcGVWb2NhYnVsYXJ5Iiwidm9jYWJ1bGFyeSIsInZvY2FidWxhcnlfdXJpIiwibGVnYWN5X25hbWUiLCJpYXRpX2VxdWl2YWxlbnQiLCJsb2NhdGlvbl9yZWFjaCIsImdlb2dyYXBoaWNMb2NhdGlvblJlYWNoIiwibG9jYXRpb25faWQiLCJnZW9ncmFwaGljVm9jYWJ1bGFyeSIsImFjdGl2aXR5X2Rlc2NyaXB0aW9uIiwiYWRtaW5pc3RyYXRpdmUiLCJsZXZlbCIsInBvaW50Iiwic3JzX25hbWUiLCJwb3MiLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsImV4YWN0bmVzcyIsImdlb2dyYXBoaWNFeGFjdG5lc3MiLCJsb2NhdGlvbl9jbGFzcyIsImdlb2dyYXBoaWNMb2NhdGlvbkNsYXNzIiwiZmVhdHVyZV9kZXNpZ25hdGlvbiIsInByb3Blcl9jbGFzcyIsImxvY2F0aW9uVHlwZSIsInJlZmVyZW5jZV90eXBlIiwib3RoZXJJZGVudGlmaWVyVHlwZSIsIm93bmVyX29yZyIsInBhcnRpY2lwYXRpbmdfb3JnIiwib3JnYW5pemF0aW9uX3JvbGUiLCJvcmdhbmlzYXRpb25Sb2xlIiwib3JnYW5pemF0aW9uVHlwZSIsImNyc19jaGFubmVsX2NvZGUiLCJjcnNDaGFubmVsQ29kZSIsImJ1ZGdldFR5cGUiLCJwbGFubmVkX2Rpc2J1cnNlbWVudF90eXBlIiwiYW1vdW50IiwidG9Mb2NhbGVTdHJpbmciLCJjdXJyZW5jeSIsInZhbHVlX2RhdGUiLCJwcm92aWRlcl9vcmciLCJlbGVtZW50TGFiZWwiLCJwcm92aWRlcl9hY3Rpdml0eV9pZCIsInJlY2VpdmVyX29yZyIsInJlY2VpdmVyX2FjdGl2aXR5X2lkIiwicG9saWN5X21hcmtlcl92b2NhYnVsYXJ5IiwicG9saWN5TWFya2VyVm9jYWJ1bGFyeSIsInBvbGljeV9tYXJrZXIiLCJwb2xpY3lNYXJrZXIiLCJwb2xpY3lfbWFya2VyX3RleHQiLCJzaWduaWZpY2FuY2UiLCJwb2xpY3lTaWduaWZpY2FuY2UiLCJjb3VudHJ5X2NvZGUiLCJwZXJjZW50YWdlIiwicmVnaW9uX3ZvY2FidWxhcnkiLCJyZWdpb25Wb2NhYnVsYXJ5IiwicmVnaW9uX2NvZGUiLCJyZWdpb24iLCJjdXN0b21fY29kZSIsInJlbGF0aW9uc2hpcF90eXBlIiwicmVsYXRlZEFjdGl2aXR5VHlwZSIsInJlcG9ydGluZ19vcmciLCJzZWNvbmRhcnlfcmVwb3J0ZXIiLCJfY29tcG9uZW50X05vdFlldCIsImVsZW1lbnRGcm9tRWxlbWVudE5hbWUiLCJwZXJpb2RzIiwic2VjdG9yX3ZvY2FidWxhcnkiLCJzZWN0b3JWb2NhYnVsYXJ5Iiwic2VjdG9yQ29kZSIsImNhdGVnb3J5X2NvZGUiLCJzZWN0b3JDYXRlZ29yeSIsInNkZ19nb2FsIiwic2RnR29hbHMiLCJzZGdfdGFyZ2V0Iiwic2RnVGFyZ2V0IiwidGFnX3ZvY2FidWxhcnkiLCJ0YWdWb2NhYnVsYXJ5IiwidGFnX3RleHQiLCJnb2Fsc190YWdfY29kZSIsInRhcmdldHNfdGFnX2NvZGUiLCJ0cmFucyIsInRyYW5zYWN0aW9uVHlwZSIsInRyYW5zYWN0aW9uX3R5cGUiLCJ0cmFuc2FjdGlvbl90eXBlX2NvZGUiLCJ2YWwiLCJfY29tcG9uZW50X1RpdGxlRWxlbWVudCIsIl9jb21wb25lbnRfQXNjZW5kaW5nIiwiX2NvbXBvbmVudF9NZWFzdXJlIiwiX2NvbXBvbmVudF9BZ2dyZWdhdGlvblN0YXR1cyIsIl9jb21wb25lbnRfRGVzY3JpcHRpb24iLCJfY29tcG9uZW50X1JlZmVyZW5jZSIsIl9jb21wb25lbnRfQmFzZWxpbmUiLCJfY29tcG9uZW50X1BlcmlvZCIsIl9jb21wb25lbnRfRG9jdW1lbnRMaW5rIiwiaW5kaWNhdG9yX2NvZGUiLCJyRGF0YSIsInJpIiwiZG9jdW1lbnRfbGluayIsImFzY2VuZGluZyIsIm1lYXN1cmUiLCJpbmRpY2F0b3JNZWFzdXJlIiwiYWdncmVnYXRpb25fc3RhdHVzIiwic2NvcGUiLCJjb2xzcGFuIiwiX2NvbXBvbmVudF9EZWxldGVBY3Rpb24iLCJiYXNlIiwiZGltZW5zaW9uIiwiY29tbWVudCIsImNvbSIsIm5hIiwiY2F0ZWdvcnkiLCJjYXQiLCJkb2N1bWVudENhdGVnb3J5IiwiZG9jdW1lbnRfZGF0ZSIsImluZGljYXRvclZvY2FidWxhcnkiLCJpbmRpY2F0b3JfdXJpIiwidmlld0JveCIsImZpbGwiLCJ4bWxucyIsIl9ob2lzdGVkXzY4IiwiX2hvaXN0ZWRfNjkiLCJfaG9pc3RlZF83MCIsIl9ob2lzdGVkXzcxIiwiX2hvaXN0ZWRfNzIiLCJfaG9pc3RlZF83MyIsIl9ob2lzdGVkXzc0IiwiX2hvaXN0ZWRfNzUiLCJfaG9pc3RlZF83NiIsIl9ob2lzdGVkXzc3IiwiX2hvaXN0ZWRfNzgiLCJfaG9pc3RlZF83OSIsIl9ob2lzdGVkXzgwIiwiX2hvaXN0ZWRfODEiLCJfaG9pc3RlZF84MiIsIl9ob2lzdGVkXzgzIiwiX2hvaXN0ZWRfODQiLCJfaG9pc3RlZF84NSIsIl9ob2lzdGVkXzg2IiwiX2hvaXN0ZWRfODciLCJfaG9pc3RlZF84OCIsIl9ob2lzdGVkXzg5IiwiX2hvaXN0ZWRfOTAiLCJfaG9pc3RlZF85MSIsIl9ob2lzdGVkXzkyIiwiX2hvaXN0ZWRfOTMiLCJfaG9pc3RlZF85NCIsIl9ob2lzdGVkXzk1IiwiX2hvaXN0ZWRfOTYiLCJfaG9pc3RlZF85NyIsIl9ob2lzdGVkXzk4IiwiX2hvaXN0ZWRfOTkiLCJfaG9pc3RlZF8xMDAiLCJfaG9pc3RlZF8xMDEiLCJfaG9pc3RlZF8xMDIiLCJfaG9pc3RlZF8xMDMiLCJfaG9pc3RlZF8xMDQiLCJfaG9pc3RlZF8xMDUiLCJfaG9pc3RlZF8xMDYiLCJkZWZhdWx0X2FpZF90eXBlX3ZvY2FidWxhcnkiLCJhaWRUeXBlVm9jYWJ1bGFyeSIsImVhcm1hcmtpbmdfY2F0ZWdvcnkiLCJlYXJtYXJraW5nQ2F0ZWdvcnkiLCJlYXJtYXJraW5nX21vZGFsaXR5IiwiZWFybWFya2luZ01vZGFsaXR5IiwiY2FzaF9hbmRfdm91Y2hlcl9tb2RhbGl0aWVzIiwiY2FzaGFuZFZvdWNoZXJNb2RhbGl0aWVzIiwiZGVmYXVsdF9haWRfdHlwZSIsImFpZFR5cGUiLCJjb3VudHJ5X2J1ZGdldF92b2NhYnVsYXJ5IiwiYnVkZ2V0SWRlbnRpZmllclZvY2FidWxhcnkiLCJidWRnZXRfaXRlbSIsImJ1ZGdldElkZW50aWZpZXIiLCJidWRnZXRfdHlwZSIsImJ1ZGdldF92YWx1ZSIsImJ1ZGdldF9zdGF0dXMiLCJidWRnZXRTdGF0dXMiLCJhY3Rpdml0eVN0YXR1cyIsImFjdGl2aXR5U2NvcGUiLCJjb2xsYWJvcmF0aW9uVHlwZSIsImZsb3dUeXBlIiwidGllZFN0YXR1cyIsImZpbmFuY2VUeXBlIiwiX2NvbXBvbmVudF9DcmVhdGVNb2RhbCIsIl9jb21wb25lbnRfQWN0aXZpdHlCdXR0b24iLCJ1cGRhdGVkX2F0IiwiX2NvbXBvbmVudF9UYXJnZXRWYWx1ZSIsIl9jb21wb25lbnRfQWN0dWFsVmFsdWUiLCJwZXJpb2RfY29kZSIsImFjdHVhbCIsInBlIiwidFZhbHVlIiwiZGltIiwiX2NvbXBvbmVudF9SZXN1bHRFbGVtZW50IiwiX2NvbXBvbmVudF9JbmRpY2F0b3IiLCJyZXN1bHRfY29kZSIsIl9jb21wb25lbnRfVGl0bGVEZXNjcmlwdGlvbiIsIl9jb21wb25lbnRfUmVzdWx0VHlwZSIsImxvYyIsImwiLCJ0YXIiLCJfY29tcG9uZW50X1RyYW5zYWN0aW9uRWxlbWVudCIsIl9jb21wb25lbnRfQWlkVHlwZSIsIl9jb21wb25lbnRfVHJhbnNhY3Rpb25UeXBlIiwiX2NvbXBvbmVudF9UcmFuc2FjdGlvbkRhdGUiLCJfY29tcG9uZW50X1ZhbHVlIiwiX2NvbXBvbmVudF9Qcm92aWRlck9yZ2FuaXphdGlvbiIsIl9jb21wb25lbnRfUmVjZWl2ZXJPcmdhbml6YXRpb24iLCJfY29tcG9uZW50X0Rpc2J1cnNlbWVudENoYW5uZWwiLCJfY29tcG9uZW50X1NlY3RvciIsIl9jb21wb25lbnRfUmVjaXBpZW50Q291bnRyeSIsIl9jb21wb25lbnRfUmVjaXBpZW50UmVnaW9uIiwiX2NvbXBvbmVudF9GbG93VHlwZSIsIl9jb21wb25lbnRfRmluYW5jZVR5cGUiLCJfY29tcG9uZW50X1RpZWRTdGF0dXMiLCJ0cmFuc2FjdGlvbl9kYXRlIiwiYXQiLCJhaWRfdHlwZV92b2NhYnVsYXJ5IiwiYWlkX3R5cGVfY29kZSIsImNhc2hBbmRWb3VjaGVyTW9kYWxpdGllcyIsImVhck1hcmtpbmdDYXRlZ29yeSIsImVhck1hcmtpbmdNb2RhbGl0eSIsImRpc2J1cnNlbWVudF9jaGFubmVsX2NvZGUiLCJkaXNidXJzZW1lbnRDaGFubmVsIiwiZmluYW5jZV90eXBlIiwiZmxvd190eXBlIiwib3JnYW5pemF0aW9uX2lkZW50aWZpZXJfY29kZSIsInBvIiwiY291IiwiY291bnRyeUNvZGUiLCJzZCIsInJlZ2lvbkNvZGUiLCJzZWMiLCJ1bnNkZ0dvYWxzIiwidW5zZGdUYXJnZXRzIiwidGllZF9zdGF0dXNfY29kZSIsInRpZWRTdGF0dXNUeXBlIiwiX2NvbXBvbmVudF9hcGV4Y2hhcnQiLCJfaG9pc3RlZF8xMDciLCJfaG9pc3RlZF8xMDgiLCJfaG9pc3RlZF8xMDkiLCJfaG9pc3RlZF8xMTAiLCJfaG9pc3RlZF8xMTEiLCJfbyIsIl9wIiwiYWRtaW5fdXNlcl9jb3VudCIsImdlbmVyYWxfdXNlcl9jb3VudCIsImFjdGl2ZV91c2VyX2NvdW50IiwiZGVhY3RpdmF0ZWRfdXNlcl9jb3VudCIsInRvdGFsX3VzZXJfY291bnQiLCJjb21wbGV0ZVNldHVwIiwiaW5jb21wbGV0ZVNldHVwIiwiZGVmYXVsdFZhbHVlIiwiYm90aCIsImRyYWZ0Iiwib25UcmlnZ2VyU2V0RGF0ZVJhbmdlIiwib25UYWJsZU5hdiIsInJvbGVJZCIsInZNb2RlbFJhZGlvIiwib25TZWxlY3RFbGVtZW50IiwiY2xvc2VkIiwiZXhpc3RpbmciLCJfY29tcG9uZW50X1B1Ymxpc2hVbnB1Ymxpc2giLCJfY29tcG9uZW50X1JhZGlhbFByb2dyZXNzQmFyIiwiX2NvbXBvbmVudF9PcmdhbmlzYXRpb25FbGVtZW50cyIsIl9jb21wb25lbnRfT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWwiLCJyZWNpcGllbnRfY291bnRyeSIsInJlY2lwaWVudF9jb3VudHJ5X2J1ZGdldCIsImJ1ZGdldF9saW5lIiwicmVjaXBpZW50X29yZ19idWRnZXQiLCJyZWNpcGllbnRfb3JnIiwicmVjaXBpZW50X29yZ19pbmRleCIsIm5hcnJhdGl2ZV9pbmRleCIsInJlY2lwaWVudF9yZWdpb25fYnVkZ2V0IiwicmVjaXBpZW50X3JlZ2lvbiIsInRvdGFsX2J1ZGdldCIsInRvdGFsX2J1ZGdldF9zdGF0dXMiLCJ0b3RhbF9leHBlbmRpdHVyZSIsImV4cGVuc2VfbGluZSIsImxpbmtlZF9kYXRhX3VyaSIsImRlZmF1bHRfY29sbGFib3JhdGlvbl90eXBlIiwiZGVmYXVsdF9mbG93X3R5cGUiLCJkZWZhdWx0X2ZpbmFuY2VfdHlwZSIsImRlZmF1bHRfdGllZF9zdGF0dXMiLCJfY29tcG9uZW50X1NldHRpbmdQdWJsaXNoaW5nRm9ybSIsIl9jb21wb25lbnRfU2V0dGluZ0RlZmF1bHRGb3JtIiwiYWN0aXZlX190YWIiLCJvblN1Ym1pdFB1Ymxpc2hpbmciLCJpc1ZlcmlmaWNhdGlvblJlcXVlc3RlZCIsInRhZ19fY29ycmVjdCIsInRhZ19faW5jb3JyZWN0IiwicGtnIiwidmVyc2lvbiIsImxhdGVzdCIsIl9jb21wb25lbnRfRGF0ZVJhbmdlV2lkZ2V0IiwibW9kZSIsInRhZ2dhYmxlIiwib25UcmlnZ2VyU2V0RGF0ZVR5cGUiLCJvbkRhdGVDbGVhcmVkIiwiYWxsX2FjdGl2aXRpZXNfY291bnQiLCJ2TW9kZWxEeW5hbWljIiwiYWJvdXRUZXh0IiwiX2NvbXBvbmVudF9FbWFpbFZlcmlmaWNhdGlvbiIsImVycm9yX2tleSIsImZvcm1fX2lucHV0Iiwib25Gb2N1cyIsIndpdGhNb2RpZmllcnMiLCJ2dWVfX3NlbGVjdCIsInJlbCIsImlhdGlTdGFuZGFyZFRleHQiLCJwdWJsaXNoaW5nQ2hlY2tsaXN0VGV4dCIsImVycm9yX2lucHV0IiwiX2NvbXBvbmVudF9OYXZEcm9wZG93biIsInZ1ZTNfc21vb3RoX3Njcm9sbF8xIiwic3ZnX3Z1ZTNfMSIsIldlYkhlYWRlcl92dWVfMSIsIldlYkZvb3Rlcl92dWVfMSIsIkFkbWluRm9vdGVyX3Z1ZV8xIiwiV2VsY29tZVBhZ2VfdnVlXzEiLCJSZWdpc3RlclBhZ2VfdnVlXzEiLCJBYm91dFBhZ2VfdnVlXzEiLCJTdXBwb3J0UGFnZV92dWVfMSIsIklhdGlTdGFuZGFyZF92dWVfMSIsIlB1Ymxpc2hpbmdDaGVja2xpc3RfdnVlXzEiLCJJYXRpUmVnaXN0ZXJQYWdlX3Z1ZV8xIiwiUmVzdWx0RGV0YWlsX3Z1ZV8xIiwiUmVzdWx0TGlzdF92dWVfMSIsIkluZGljYXRvckRldGFpbF92dWVfMSIsIkluZGljYXRvckxpc3RfdnVlXzEiLCJQZXJpb2RzRGV0YWlsX3Z1ZV8xIiwiUGVyaW9kc0xpc3RfdnVlXzEiLCJUcmFuc2FjdGlvbkxpc3RfdnVlXzEiLCJUcmFuc2FjdGlvbkRldGFpbF92dWVfMSIsIkRlc2NyaXB0aW9uRm9ybV92dWVfMSIsIkVsZW1lbnRzTm90ZV92dWVfMSIsIkFjdGl2aXR5SW5kZXhfdnVlXzEiLCJBZG1pbkhlYWRlcl92dWVfMSIsIkFjdGl2aXR5RGV0YWlsX3Z1ZV8xIiwiU2lkZWJhckhlbHBCbG9ja192dWVfMSIsIkFjdGl2aXR5VXBsb2FkX3Z1ZV8xIiwiQWN0aXZpdHlYbHNVcGxvYWRfdnVlXzEiLCJEYXNoYm9hcmRQYWdlX3Z1ZV8xIiwiSW1wb3J0TGlzdF92dWVfMSIsIlhsc0xpc3RfdnVlXzEiLCJTZXR0aW5nUGFnZV92dWVfMSIsIkFjdGl2aXR5RGVmYXVsdFZhbHVlX3Z1ZV8xIiwiUmVzZXRQYWdlX3Z1ZV8xIiwiUGFzc3dvcmRSZWNvdmVyeV92dWVfMSIsIlJlc2V0UGFzc3dvcmRfdnVlXzEiLCJPcmdhbmlzYXRpb25EYXRhX3Z1ZV8xIiwiT3JnYW5pc2F0aW9uTGlzdF92dWVfMSIsIkFkbWluQmFyX3Z1ZV8xIiwiVXNlclByb2ZpbGVfdnVlXzEiLCJVc2VyTGlzdGluZ192dWVfMSIsIkF1ZGl0TGlzdGluZ192dWVfMSIsIlN5c3RlbVZlcnNpb25fdnVlXzEiLCJ2dWUzX2FwZXhjaGFydHNfMSIsImFwcCIsImNyZWF0ZUFwcCIsInVzZSIsImNvbXBvbmVudCIsImxhc3RTY3JvbGxUb3AiLCJhZmZpeFR5cGUiLCJzdGlja3lTaWRlYmFyIiwicGFyZW50V3JhcHBlciIsInN0aWNreUVsZW1lbnQiLCJmaXJzdENoaWxkIiwib2Zmc2V0SGVpZ2h0Iiwic3RpY2t5Q3VycmVudFRvcCIsInN0aWNreUN1cnJlbnRCb3R0b20iLCJlbFdpZHRoIiwib2Zmc2V0V2lkdGgiLCJlbFNjcm9sbExlZnQiLCJlbFNjcm9sbFRvcCIsImVsU2Nyb2xsQm90dG9tIiwidmlld3BvcnRIZWlnaHQiLCJpbm5lckhlaWdodCIsImN1cnJlbnRXaW5kb3dzU2Nyb2xsUG9zaXRpb24iLCJwYWdlWU9mZnNldCIsInRhcmdldFNjcm9sbFBvc2l0aW9uIiwiZWxQYXJlbnQiLCJlbFBhcmVudEJvdHRvbSIsImlzU2Nyb2xsRG93biIsImlzU2Nyb2xsVXAiLCJzY3JvbGxEb3duU3RpY2t5Qm90dG9tIiwic2Nyb2xsRG93blN0aWNreVRvcCIsInNjcm9sbERvd25TdGlja3lUcmFuc2xhdGUiLCJzY3JvbGxEb3duRml4ZWRUb3AiLCJzY3JvbGxEb3duU3RpY2t5Tm9uZSIsInNjcm9sbERvd25TdGlja3lCb3VuZCIsImhhbmRsZVNjcm9sbERvd24iLCJzY3JvbGxVcFN0aWNreVRvcCIsInNjcm9sbFVwU3RpY2t5Qm90dG9tIiwic2Nyb2xsVXBGaXhlZFRvcCIsInNjcm9sbFVwU3RpY2t5VHJhbnNsYXRlIiwic2Nyb2xsVXBTdGlja3lCb3VuZCIsImhhbmRsZVNjcm9sbFVwIiwiYm9yZGVyIiwiZGlyZWN0aXZlIiwibW91bnRlZCIsImJpbmRpbmciLCJ1bm1vdW50ZWQiLCJwYXJlbnQiLCJtb3VudCIsImZvcm1hdF9kYXRlIiwiY3J5cHRvX2pzXzEiLCJlbmNyeXB0IiwiaXYiLCJsaWIiLCJXb3JkQXJyYXkiLCJyYW5kb20iLCJzYWx0IiwiaXRlcmF0aW9ucyIsImVuY3J5cHRNZXRob2RMZW5ndGgiLCJoYXNoS2V5IiwiUEJLREYyIiwiaGFzaGVyIiwiYWxnbyIsIlNIQTUxMiIsImtleVNpemUiLCJlbmNyeXB0ZWQiLCJBRVMiLCJDQkMiLCJlbmNyeXB0ZWRTdHJpbmciLCJlbmMiLCJCYXNlNjQiLCJjaXBoZXJ0ZXh0Iiwib3V0cHV0IiwiSGV4IiwiVXRmOCIsImRhdGFfMSIsImxhbmd1YWdlU291cmNlcyIsImxhbmciLCJidXR0b25LZXkiLCJlbGVtZW50S2V5IiwiYmFzZU1lc3NhZ2UiLCJidXR0b25zIiwiZXZlbnRzIiwicGFyZW50S2V5IiwiZXJyb3JLZXkiLCJ0cmFuc2xhdGVkU3RyaW5nIiwiZXhwbG9kZSIsImtleXNfMSIsImlubmVyS2V5IiwiZWxlbWVudF9sYWJlbHMiLCJrZXlzXzIiLCJlbGVtZW50c19jb21tb24iLCJvdXRlcktleSIsInN0aWNreSIsImxvZ3MiLCJ3ZWIiLCJhZG1pbiIsInJlZ2lzdGVyIiwiYWJvdXQiLCJpYXRpX3N0YW5kYXJkIiwicHVibGlzaGluZ19jaGVja2xpc3QiLCJlbGVtZW50S2V5c0FycmF5IiwibGVhZGluZ0tleSIsInNoaWZ0IiwiZWxlbWVudEtleXNBcnJheV8xIiwiZWxlbWVudEtleV8xIiwidHJhbnNsYXRpb25Tb3VyY2UiLCJrZXlzXzMiLCJzZW50ZW5jZUNhc2VUb0tlYmFiQ2FzZSIsInJlZHVjZURvY3VtZW50TGluayIsImRvY3VtZW50Q291bnQiLCJkb2N1bWVudF8xIiwic3RyIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJtYXhMZW5ndGgiLCJzdWJzdHJpbmciLCJjYXBpdGFsaXplZEZpcnN0V29yZCIsImNvbmNhdGVuYXRlZFdvcmRzIiwidnVleF8xIiwibWF4aW1pemVYbHMiLCJhY3Rpdml0eV90aXRsZSIsIm11dGF0aW9ucyIsIm11dGF0ZVNlbGVjdGVkQWN0aXZpdGllcyIsInBheWxvYWQiLCJtdXRhdGVDbG9zZVhsc01vZGVsIiwibXV0YXRlQnVsa1B1Ymxpc2hMZW5ndGgiLCJtdXRhdGVDYW5jZWxVcGxvYWQiLCJtdXRhdGVNYXhpbWl6ZVhscyIsIm11dGF0ZVN0YXJ0WGxzRG93bmxvYWQiLCJtdXRhdGVDb21wbGV0ZVhsc0Rvd25sb2FkIiwibXV0YXRlQ2FuY2VsRG93bmxvYWQiLCJtdXRhdGVCdWxrcHVibGlzaEFjdGl2aXRpZXMiLCJtdXRhdGVTdGFydEJ1bGtQdWJsaXNoIiwiYWN0aW9ucyIsImNvbW1pdCIsInVwZGF0ZUNsb3NlWGxzTW9kZWwiLCJ1cGRhdGVCdWxrUHVibGlzaExlbmd0aCIsInVwZGF0ZUNhbmNlbFVwbG9hZCIsInVwZGF0ZU1heGltaXplWGxzIiwidXBkYXRlU3RhcnRYbHNEb3dubG9hZCIsInVwZGF0ZUNvbXBsZXRlWGxzRG93bmxvYWQiLCJ1cGRhdGVDYW5jZWxEb3dubG9hZCIsInVwZGF0ZUJ1bGtwdWJsaXNoQWN0aXZpdGllcyIsInVwZGF0ZVN0YXJ0QnVsa1B1Ymxpc2giLCJhY3Rpdml0eUxpc3RTdG9yZSIsImNyZWF0ZVN0b3JlIiwiYnVsa3B1Ymxpc2hMZW5ndGgiLCJtdXRhdGVVblB1Ymxpc2hlZCIsIm11dGF0ZVNob3dQdWJsaXNoZWQiLCJtdXRhdGVQdWJsaXNoRXJyb3JzIiwibXV0YXRlSXNMb2FkaW5nIiwibXV0YXRlQnVsa3B1Ymxpc2hMZW5ndGgiLCJ1cGRhdGVVblB1Ymxpc2hlZCIsInVwZGF0ZVNob3dQdWJsaXNoZWQiLCJ1cGRhdGVQdWJsaXNoRXJyb3JzIiwidXBkYXRlSXNMb2FkaW5nIiwidXBkYXRlQnVsa3B1Ymxpc2hMZW5ndGgiLCJhY3Rpdml0eURldGFpbFN0b3JlIiwic3RhdGVfMSIsIm11dGF0aW9uXzEiLCJNdXRhdGlvblR5cGVzIiwiVVBEQVRFX1BVQkxJU0hFUl9JTkZPIiwiVVBEQVRFX1BVQkxJU0hJTkdfRVJST1IiLCJVUERBVEVfREVGQVVMVF9FUlJPUiIsIlVQREFURV9JU19MT0FESU5HIiwiSVNfTE9BRElORyIsIlVQREFURV9CVUxLUFVCTElTSF9MRU5HVEgiLCJCVUxLUFVCTElTSF9MRU5HVEgiLCJSZXN1bHRfdnVlXzEiLCJJYXRpSWRlbnRpZmllcl92dWVfMSIsIk90aGVySWRlbnRpZmllcl92dWVfMSIsIlRpdGxlX3Z1ZV8xIiwiRGVzY3JpcHRpb25fdnVlXzEiLCJBY3Rpdml0eURhdGVfdnVlXzEiLCJDb250YWN0SW5mb192dWVfMSIsIlBhcnRpY2lwYXRpbmdPcmdfdnVlXzEiLCJSZWNpcGllbnRDb3VudHJ5X3Z1ZV8xIiwiUmVjaXBpZW50UmVnaW9uX3Z1ZV8xIiwiVHJhbnNhY3Rpb25zX3Z1ZV8xIiwiTG9jYXRpb25fdnVlXzEiLCJTZWN0b3JfdnVlXzEiLCJMZWdhY3lEYXRhX3Z1ZV8xIiwiQ29uZGl0aW9uc192dWVfMSIsIlJlbGF0ZWRBY3Rpdml0eV92dWVfMSIsIlBvbGljeU1hcmtlcl92dWVfMSIsIlRhZ192dWVfMSIsIkh1bWFuaXRhcmlhblNjb3BlX3Z1ZV8xIiwiUGxhbm5lZERpc2J1cnNlbWVudF92dWVfMSIsIlJlcG9ydGluZ09yZ2FuaXphdGlvbl92dWVfMSIsIk1lYXN1cmVfdnVlXzEiLCJJbmRpY2F0b3JBc2NlbmRpbmdfdnVlXzEiLCJBZ2dyZWdhdGlvblN0YXR1c192dWVfMSIsIlJlZmVyZW5jZV92dWVfMSIsIkRvY3VtZW50TGlua192dWVfMSIsIkJhc2VsaW5lX3Z1ZV8xIiwiUGVyaW9kX3Z1ZV8xIiwiVGFyZ2V0VmFsdWVfdnVlXzEiLCJBY3R1YWxWYWx1ZV92dWVfMSIsIlRpdGxlRGVzY3JpcHRpb25fdnVlXzEiLCJSZXN1bHRUeXBlX3Z1ZV8xIiwiQWlkVHlwZV92dWVfMSIsIlRyYW5zYWN0aW9uVHlwZV92dWVfMSIsIlRyYW5zYWN0aW9uRGF0ZV92dWVfMSIsIlZhbHVlX3Z1ZV8xIiwiUHJvdmlkZXJPcmdhbml6YXRpb25fdnVlXzEiLCJSZWNlaXZlck9yZ2FuaXphdGlvbl92dWVfMSIsIkRpc2J1cnNlbWVudENoYW5uZWxfdnVlXzEiLCJGbG93VHlwZV92dWVfMSIsIkZpbmFuY2VUeXBlX3Z1ZV8xIiwiVGllZFN0YXR1c192dWVfMSIsIlJlcG9ydGluZ09yZ2FuaXNhdGlvbl92dWVfMSIsIlRvdGFsQnVkZ2V0X3Z1ZV8xIiwiUmVwb3J0aW5nT3JnQnVkZ2V0X3Z1ZV8xIiwiUmVwb3J0aW5nUmVnaW9uQnVkZ2V0X3Z1ZV8xIiwiUmVjaXBpZW50Q291bnRyeUJ1ZGdldF92dWVfMSIsIlRvdGFsRXhwZW5kaXR1cmVfdnVlXzEiLCJTaWduSW4iLCJKb2luTm93IiwicGFnZUNvbnRlbnQiLCJ0b2dnbGVQYWdlIiwiX2NyZWF0ZUVsZW1lbnRCbG9jayIsIl9jcmVhdGVFbGVtZW50Vk5vZGUiLCJfdG9EaXNwbGF5U3RyaW5nIiwiX2NyZWF0ZUJsb2NrIiwiX2NvbXBvbmVudF9TaWduSW4iLCJfY29tcG9uZW50X0pvaW5Ob3ciXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/public/js/vendor.js b/public/js/vendor.js index 9032325bed..23235bd16f 100644 --- a/public/js/vendor.js +++ b/public/js/vendor.js @@ -17744,7 +17744,7 @@ function useData (props, context, dep) // =============== METHODS ============== - const update = (val) => { + const update = (val, triggerInput = true) => { // Setting object(s) as internal value iv.value = makeInternal(val); @@ -17753,8 +17753,11 @@ function useData (props, context, dep) const externalVal = makeExternal(val); context.emit('change', externalVal, $this); - context.emit('input', externalVal); - context.emit('update:modelValue', externalVal); + + if (triggerInput) { + context.emit('input', externalVal); + context.emit('update:modelValue', externalVal); + } }; // no export @@ -17823,7 +17826,8 @@ function useValue (props, context) } function useSearch (props, context, dep) -{ const { regex } = (0,vue__WEBPACK_IMPORTED_MODULE_0__.toRefs)(props); +{ + const { regex } = (0,vue__WEBPACK_IMPORTED_MODULE_0__.toRefs)(props); const $this = (0,vue__WEBPACK_IMPORTED_MODULE_0__.getCurrentInstance)().proxy; @@ -17937,7 +17941,13 @@ function usePointer$1 (props, context, dep) function normalize (str, strict = true) { return strict ? String(str).toLowerCase().trim() - : String(str).normalize('NFD').replace(/\p{Diacritic}/gu, '').toLowerCase().trim() + : String(str).toLowerCase() + .normalize('NFD') + .trim() + .replace(new RegExp(/æ/g), 'ae') + .replace(new RegExp(/œ/g), 'oe') + .replace(new RegExp(/ø/g), 'o') + .replace(/\p{Diacritic}/gu, '') } function isObject (variable) { @@ -17957,9 +17967,9 @@ function useOptions (props, context, dep) const { options, mode, trackBy: trackBy_, limit, hideSelected, createTag, createOption: createOption_, label, appendNewTag, appendNewOption: appendNewOption_, multipleLabel, object, loading, delay, resolveOnLoad, - minChars, filterResults, clearOnSearch, clearOnSelect, valueProp, - canDeselect, max, strict, closeOnSelect, groups: groupped, reverse, infinite, - groupOptions, groupHideEmpty, groupSelect, onCreate, disabledProp, searchStart, + minChars, filterResults, clearOnSearch, clearOnSelect, valueProp, allowAbsent, groupLabel, + canDeselect, max, strict, closeOnSelect, closeOnDeselect, groups: groupped, reverse, infinite, + groupOptions, groupHideEmpty, groupSelect, onCreate, disabledProp, searchStart, searchFilter, } = (0,vue__WEBPACK_IMPORTED_MODULE_0__.toRefs)(props); const $this = (0,vue__WEBPACK_IMPORTED_MODULE_0__.getCurrentInstance)().proxy; @@ -17976,6 +17986,7 @@ function useOptions (props, context, dep) const focus = dep.focus; const deactivate = dep.deactivate; const close = dep.close; + const localize = dep.localize; // ================ DATA ================ @@ -18016,7 +18027,7 @@ function useOptions (props, context, dep) // extendedOptions const eo = (0,vue__WEBPACK_IMPORTED_MODULE_0__.computed)(() => { if (groupped.value) { - let groups = ro.value || /* istanbul ignore next */ []; + let groups = eg.value || /* istanbul ignore next */ []; let eo = []; @@ -18038,24 +18049,6 @@ function useOptions (props, context, dep) } }); - const fg = (0,vue__WEBPACK_IMPORTED_MODULE_0__.computed)(() => { - if (!groupped.value) { - return [] - } - - return filterGroups((ro.value || /* istanbul ignore next */ []).map((group) => { - const arrayOptions = optionsToArray(group[groupOptions.value]); - - return { - ...group, - group: true, - [groupOptions.value]: filterOptions(arrayOptions, false).map(o => Object.assign({}, o, group[disabledProp.value] ? { [disabledProp.value]: true } : {})), - __VISIBLE__: filterOptions(arrayOptions).map(o => Object.assign({}, o, group[disabledProp.value] ? { [disabledProp.value]: true } : {})), - } - // Difference between __VISIBLE__ and {groupOptions}: visible does not contain selected options when hideSelected=true - })) - }); - // preFilteredOptions const pfo = (0,vue__WEBPACK_IMPORTED_MODULE_0__.computed)(() => { let options = eo.value; @@ -18082,6 +18075,68 @@ function useOptions (props, context, dep) return options }); + // no export + // extendedGroups + const eg = (0,vue__WEBPACK_IMPORTED_MODULE_0__.computed)(() => { + if (!groupped.value) { + return [] + } + + let eg = []; + let groups = ro.value || /* istanbul ignore next */ []; + + if (ap.value.length) { + eg.push({ + [groupLabel.value]: ' ', + [groupOptions.value]: [...ap.value], + __CREATE__: true + }); + } + + return eg.concat(groups) + }); + + // preFilteredGroups + const pfg = (0,vue__WEBPACK_IMPORTED_MODULE_0__.computed)(() => { + let groups = [...eg.value].map(g => ({...g})); + + if (createdOption.value.length) { + if (groups[0] && groups[0].__CREATE__) { + groups[0][groupOptions.value] = [...createdOption.value, ...groups[0][groupOptions.value]]; + } else { + groups = [{ + [groupLabel.value]: ' ', + [groupOptions.value]: [...createdOption.value], + __CREATE__: true + }].concat(groups); + } + } + + return groups + }); + + // filteredGroups + const fg = (0,vue__WEBPACK_IMPORTED_MODULE_0__.computed)(() => { + if (!groupped.value) { + return [] + } + + let options = pfg.value; + + return filterGroups((options || /* istanbul ignore next */ []).map((group, index) => { + const arrayOptions = optionsToArray(group[groupOptions.value]); + + return { + ...group, + index, + group: true, + [groupOptions.value]: filterOptions(arrayOptions, false).map(o => Object.assign({}, o, group[disabledProp.value] ? { [disabledProp.value]: true } : {})), + __VISIBLE__: filterOptions(arrayOptions).map(o => Object.assign({}, o, group[disabledProp.value] ? { [disabledProp.value]: true } : {})), + } + // Difference between __VISIBLE__ and {groupOptions}: visible does not contain selected options when hideSelected=true + })) + }); + const hasSelected = (0,vue__WEBPACK_IMPORTED_MODULE_0__.computed)(() => { switch (mode.value) { case 'single': @@ -18114,10 +18169,14 @@ function useOptions (props, context, dep) return [] } - return getOptionByTrackBy(search.value) !== -1 ? [] : [{ + if (getOptionByTrackBy(search.value) !== -1) { + return [] + } + + return [{ [valueProp.value]: search.value, - [label.value]: search.value, [trackBy.value]: search.value, + [label.value]: search.value, __CREATE__: true, }] }); @@ -18274,6 +18333,11 @@ function useOptions (props, context, dep) if (canDeselect.value) { deselect(option); } + + if (closeOnDeselect.value) { + clearPointer(); + close(); + } return } @@ -18299,10 +18363,16 @@ function useOptions (props, context, dep) case 'multiple': if (option && isSelected(option)) { deselect(option); + + if (closeOnDeselect.value) { + clearPointer(); + close(); + } return } if (isMax()) { + context.emit('max', $this); return } @@ -18327,10 +18397,16 @@ function useOptions (props, context, dep) case 'tags': if (option && isSelected(option)) { deselect(option); + + if (closeOnDeselect.value) { + clearPointer(); + close(); + } return } if (isMax()) { + context.emit('max', $this); return } @@ -18390,6 +18466,7 @@ function useOptions (props, context, dep) if (getOption(option[valueProp.value]) === undefined && createOption.value) { context.emit('tag', option[valueProp.value], $this); context.emit('option', option[valueProp.value], $this); + context.emit('create', option[valueProp.value], $this); if (appendNewOption.value) { appendOption(option); @@ -18404,7 +18481,7 @@ function useOptions (props, context, dep) return } - select(fo.value); + select(fo.value.filter(o => !o.disabled && !isSelected(o))); }; // no export @@ -18441,7 +18518,7 @@ function useOptions (props, context, dep) // no export const filterGroups = (groups) => { // If the search has value we need to filter among - // he ones that are visible to the user to avoid + // the ones that are visible to the user to avoid // displaying groups which technically have options // based on search but that option is already selected. return groupHideEmpty.value @@ -18457,11 +18534,19 @@ function useOptions (props, context, dep) let fo = options; if (search.value && filterResults.value) { - fo = fo.filter((option) => { - return searchStart.value - ? normalize(option[trackBy.value], strict.value).startsWith(normalize(search.value, strict.value)) - : normalize(option[trackBy.value], strict.value).indexOf(normalize(search.value, strict.value)) !== -1 - }); + let filter = searchFilter.value; + + if (!filter) { + filter = (option, $this) => { + let target = normalize(localize(option[trackBy.value]), strict.value); + + return searchStart.value + ? target.startsWith(normalize(search.value, strict.value)) + : target.indexOf(normalize(search.value, strict.value)) !== -1 + }; + } + + fo = fo.filter(filter); } if (hideSelected.value && excludeHideSelected) { @@ -18574,9 +18659,16 @@ function useOptions (props, context, dep) return val } - // If external should be plain transform - // value object to plain values - return mode.value === 'single' ? getOption(val) || {} : val.filter(v => !! getOption(v)).map(v => getOption(v)) + // If external should be plain transform value object to plain values + return mode.value === 'single' ? getOption(val) || (allowAbsent.value ? { + [label.value]: val, + [valueProp.value]: val, + [trackBy.value]: val, + } : {}) : val.filter(v => !!getOption(v) || allowAbsent.value).map(v => getOption(v) || { + [label.value]: v, + [valueProp.value]: v, + [trackBy.value]: v, + }) }; // no export @@ -18648,21 +18740,21 @@ function useOptions (props, context, dep) (0,vue__WEBPACK_IMPORTED_MODULE_0__.watch)(ev, (newValue) => { if (isNullish(newValue)) { - iv.value = makeInternal(newValue); + update(makeInternal(newValue), false); return } switch (mode.value) { case 'single': if (object.value ? newValue[valueProp.value] != iv.value[valueProp.value] : newValue != iv.value[valueProp.value]) { - iv.value = makeInternal(newValue); + update(makeInternal(newValue), false); } break case 'multiple': case 'tags': if (!arraysEqual(object.value ? newValue.map(o => o[valueProp.value]) : newValue, iv.value.map(o => o[valueProp.value]))) { - iv.value = makeInternal(newValue); + update(makeInternal(newValue), false); } break } @@ -18670,7 +18762,7 @@ function useOptions (props, context, dep) (0,vue__WEBPACK_IMPORTED_MODULE_0__.watch)(options, (n, o) => { if (typeof props.options === 'function') { - if (resolveOnLoad.value) { + if (resolveOnLoad.value && (!o || (n && n.toString() !== o.toString()))) { resolveOptions(); } } else { @@ -18694,6 +18786,8 @@ function useOptions (props, context, dep) multipleLabelText, eo, extendedOptions: eo, + eg, + extendedGroups: eg, fg, filteredGroups: fg, noOptions, @@ -18724,6 +18818,7 @@ function usePointer (props, context, dep) const { valueProp, showOptions, searchable, groupLabel, groups: groupped, mode, groupSelect, disabledProp, + groupOptions, } = (0,vue__WEBPACK_IMPORTED_MODULE_0__.toRefs)(props); // ============ DEPENDENCIES ============ @@ -18747,7 +18842,7 @@ function usePointer (props, context, dep) }); const groups = (0,vue__WEBPACK_IMPORTED_MODULE_0__.computed)(() => { - return fg.value.filter(o => !o[disabledProp.value]) + return fg.value.filter(g => !g[disabledProp.value]) }); const canPointGroups = (0,vue__WEBPACK_IMPORTED_MODULE_0__.computed)(() => { @@ -18816,8 +18911,8 @@ function usePointer (props, context, dep) const isPointed = (option) => { return (!!pointer.value && ( - (!option.group && pointer.value[valueProp.value] == option[valueProp.value]) || - (option.group !== undefined && pointer.value[groupLabel.value] == option[groupLabel.value]) + (!option.group && pointer.value[valueProp.value] === option[valueProp.value]) || + (option.group !== undefined && pointer.value[groupLabel.value] === option[groupLabel.value]) )) ? true : undefined }; @@ -18839,13 +18934,17 @@ function usePointer (props, context, dep) const forwardPointer = () => { if (pointer.value === null) { - setPointer((groupped.value && canPointGroups.value ? groups.value[0] : options.value[0]) || null); + setPointer((groupped.value && canPointGroups.value ? (!groups.value[0].__CREATE__ ? groups.value[0] : options.value[0]) : options.value[0]) || null); } else if (groupped.value && canPointGroups.value) { let nextPointer = isPointerGroup.value ? currentGroupFirstEnabledOption.value : currentGroupNextEnabledOption.value; if (nextPointer === undefined) { nextPointer = nextGroup.value; + + if (nextPointer.__CREATE__) { + nextPointer = nextPointer[groupOptions.value][0]; + } } setPointer(nextPointer || /* istanbul ignore next */ null); @@ -18883,6 +18982,14 @@ function usePointer (props, context, dep) if (prevPointer === undefined) { prevPointer = isPointerGroup.value ? prevGroup.value : currentGroup.value; + + if (prevPointer.__CREATE__) { + prevPointer = prevGroupLastEnabledOption.value; + + if (prevPointer === undefined) { + prevPointer = prevGroup.value; + } + } } setPointer(prevPointer || /* istanbul ignore next */ null); @@ -19016,7 +19123,7 @@ function useDropdown (props, context, dep) function useMultiselect (props, context, dep) { - const { searchable, disabled } = (0,vue__WEBPACK_IMPORTED_MODULE_0__.toRefs)(props); + const { searchable, disabled, clearOnBlur } = (0,vue__WEBPACK_IMPORTED_MODULE_0__.toRefs)(props); // ============ DEPENDENCIES ============ @@ -19029,10 +19136,15 @@ function useMultiselect (props, context, dep) // ================ DATA ================ const multiselect = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(null); + + const wrapper = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(null); + const tags = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(null); const isActive = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(false); + const mouseClicked = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(false); + // ============== COMPUTED ============== const tabindex = (0,vue__WEBPACK_IMPORTED_MODULE_0__.computed)(() => { @@ -19046,7 +19158,7 @@ function useMultiselect (props, context, dep) input.value.blur(); } - multiselect.value.blur(); + wrapper.value.blur(); }; const focus = () => { @@ -19055,18 +19167,16 @@ function useMultiselect (props, context, dep) } }; - const handleFocus = () => { - focus(); - }; - - const activate = () => { + const activate = (shouldOpen = true) => { if (disabled.value) { return } isActive.value = true; - open(); + if (shouldOpen) { + open(); + } }; const deactivate = () => { @@ -19075,11 +19185,26 @@ function useMultiselect (props, context, dep) setTimeout(() => { if (!isActive.value) { close(); - clearSearch(); + + if (clearOnBlur.value) { + clearSearch(); + } } }, 1); }; + const handleFocusIn = (e) => { + if ((e.target.closest('[data-tags]') && e.target.nodeName !== 'INPUT') || e.target.closest('[data-clear]')) { + return + } + + activate(mouseClicked.value); + }; + + const handleFocusOut = () => { + deactivate(); + }; + const handleCaretClick = () => { deactivate(); blur(); @@ -19087,25 +19212,34 @@ function useMultiselect (props, context, dep) /* istanbul ignore next */ const handleMousedown = (e) => { - if (isOpen.value && (e.target.isEqualNode(multiselect.value) || e.target.isEqualNode(tags.value))) { + mouseClicked.value = true; + + if (isOpen.value && (e.target.isEqualNode(wrapper.value) || e.target.isEqualNode(tags.value))) { setTimeout(() => { deactivate(); }, 0); - } else if (document.activeElement.isEqualNode(multiselect.value) && !isOpen.value) { + } else if (document.activeElement.isEqualNode(wrapper.value) && !isOpen.value) { activate(); } + + setTimeout(() => { + mouseClicked.value = false; + }, 0); }; return { multiselect, + wrapper, tags, tabindex, isActive, + mouseClicked, blur, focus, - handleFocus, activate, deactivate, + handleFocusIn, + handleFocusOut, handleCaretClick, handleMousedown, } @@ -19131,6 +19265,9 @@ function useKeyboard (props, context, dep) const selectPointer = dep.selectPointer; const backwardPointer = dep.backwardPointer; const forwardPointer = dep.forwardPointer; + const multiselect = dep.multiselect; + const wrapper = dep.wrapper; + const tags = dep.tags; const isOpen = dep.isOpen; const open = dep.open; const blur = dep.blur; @@ -19169,9 +19306,34 @@ function useKeyboard (props, context, dep) } }; + const removeLastRemovable = (arr) => { + // Find the index of the last object in the array that doesn't have a "remove" property set to false + let indexToRemove = arr.length - 1; + while (indexToRemove >= 0 && (arr[indexToRemove].remove === false || arr[indexToRemove].disabled)) { + indexToRemove--; + } + + // If all objects have a "remove" property set to false, don't remove anything and return the original array + if (indexToRemove < 0) { + return arr + } + + // Remove the object at the found index and return the updated array + arr.splice(indexToRemove, 1); + return arr + }; + const handleKeydown = (e) => { context.emit('keydown', e, $this); + let tagList; + let activeIndex; + + if (['ArrowLeft', 'ArrowRight', 'Enter'].indexOf(e.key) !== -1 && mode.value === 'tags') { + tagList = [...(multiselect.value.querySelectorAll(`[data-tags] > *`))].filter(e => e !== tags.value); + activeIndex = tagList.findIndex(e => e === document.activeElement); + } + switch (e.key) { case 'Backspace': if (mode.value === 'single') { @@ -19185,13 +19347,33 @@ function useKeyboard (props, context, dep) if (iv.value.length === 0) { return } - - update([...iv.value].slice(0,-1)); + + update(removeLastRemovable([...iv.value])); break case 'Enter': e.preventDefault(); + if (e.keyCode === 229) { + // ignore IME confirmation + return + } + + if (activeIndex !== -1 && activeIndex !== undefined) { + update([...iv.value].filter((v, k) => k !== activeIndex)); + + if (activeIndex === tagList.length - 1) { + if (tagList.length - 1) { + tagList[tagList.length - 2].focus(); + } else if (searchable.value) { + tags.value.querySelector('input').focus(); + } else { + wrapper.value.focus(); + } + } + return + } + if (addOptionOn.value.indexOf('enter') === -1 && createOption.value) { return } @@ -19268,6 +19450,44 @@ function useKeyboard (props, context, dep) forwardPointer(); break + + case 'ArrowLeft': + if ( + (searchable.value && tags.value && tags.value.querySelector('input').selectionStart) + || e.shiftKey || mode.value !== 'tags' || !iv.value || !iv.value.length + ) { + return + } + + e.preventDefault(); + + if (activeIndex === -1) { + tagList[tagList.length-1].focus(); + } + else if (activeIndex > 0) { + tagList[activeIndex-1].focus(); + } + break + + case 'ArrowRight': + if (activeIndex === -1 || e.shiftKey || mode.value !== 'tags' || !iv.value || !iv.value.length) { + return + } + + e.preventDefault(); + + /* istanbul ignore else */ + if (tagList.length > activeIndex + 1) { + tagList[activeIndex+1].focus(); + } + else if (searchable.value) { + tags.value.querySelector('input').focus(); + } + else if (!searchable.value) { + wrapper.value.focus(); + } + + break } }; @@ -19304,6 +19524,7 @@ function useClasses (props, context, dependencies) containerOpen: 'is-open', containerOpenTop: 'is-open-top', containerActive: 'is-active', + wrapper: 'multiselect-wrapper', singleLabel: 'multiselect-single-label', singleLabelText: 'multiselect-single-label-text', multipleLabel: 'multiselect-multiple-label', @@ -19347,6 +19568,7 @@ function useClasses (props, context, dependencies) noOptions: 'multiselect-no-options', noResults: 'multiselect-no-results', fakeInput: 'multiselect-fake-input', + assist: 'multiselect-assistive-text', spacer: 'multiselect-spacer', ...classes_.value, })); @@ -19366,6 +19588,7 @@ function useClasses (props, context, dependencies) .concat(showDropdown.value && openDirection.value === 'top' ? c.containerOpenTop : []) .concat(showDropdown.value && openDirection.value !== 'top' ? c.containerOpen : []) .concat(isActive.value ? c.containerActive : []), + wrapper: c.wrapper, spacer: c.spacer, singleLabel: c.singleLabel, singleLabelText: c.singleLabelText, @@ -19374,6 +19597,7 @@ function useClasses (props, context, dependencies) tags: c.tags, tag: [c.tag] .concat(disabled.value ? c.tagDisabled : []), + tagDisabled: c.tagDisabled, tagRemove: c.tagRemove, tagRemoveIcon: c.tagRemoveIcon, tagsSearchWrapper: c.tagsSearchWrapper, @@ -19426,6 +19650,7 @@ function useClasses (props, context, dependencies) }, noOptions: c.noOptions, noResults: c.noResults, + assist: c.assist, fakeInput: c.fakeInput, } }); @@ -19436,7 +19661,7 @@ function useClasses (props, context, dependencies) } } -function useScroll$1 (props, context, dep) +function useScroll (props, context, dep) { const { limit, infinite, @@ -19534,15 +19759,16 @@ function useScroll$1 (props, context, dep) } } -function useScroll (props, context, dep) +function useA11y (props, context, dep) { - const { placeholder, id, valueProp, label: labelProp, mode, groupLabel } = (0,vue__WEBPACK_IMPORTED_MODULE_0__.toRefs)(props); + const { + placeholder, id, valueProp, label: labelProp, mode, groupLabel, aria, searchable , + } = (0,vue__WEBPACK_IMPORTED_MODULE_0__.toRefs)(props); // ============ DEPENDENCIES ============ const pointer = dep.pointer; const iv = dep.iv; - const isSelected = dep.isSelected; const hasSelected = dep.hasSelected; const multipleLabelText = dep.multipleLabelText; @@ -19552,7 +19778,19 @@ function useScroll (props, context, dep) // ============== COMPUTED ============== - const ariaOwns = (0,vue__WEBPACK_IMPORTED_MODULE_0__.computed)(() => { + const ariaAssist = (0,vue__WEBPACK_IMPORTED_MODULE_0__.computed)(() => { + let texts = []; + + if (id && id.value) { + texts.push(id.value); + } + + texts.push('assist'); + + return texts.join('-') + }); + + const ariaControls = (0,vue__WEBPACK_IMPORTED_MODULE_0__.computed)(() => { let texts = []; if (id && id.value) { @@ -19571,44 +19809,59 @@ function useScroll (props, context, dep) texts.push(id.value); } - texts.push('multiselect-option'); + if (pointer.value) { + texts.push(pointer.value.group ? 'multiselect-group' : 'multiselect-option'); - if (pointer.value && pointer.value[valueProp.value] !== undefined) { - texts.push(pointer.value[valueProp.value]); + texts.push(pointer.value.group ? pointer.value.index : pointer.value[valueProp.value]); return texts.join('-') } }); - const ariaLabel = (0,vue__WEBPACK_IMPORTED_MODULE_0__.computed)(() => { - let texts = []; - /* istanbul ignore next */ - if (label.value) { - texts.push(label.value); - } - if (placeholder.value && !hasSelected.value) { - texts.push(placeholder.value); - } + const ariaPlaceholder = (0,vue__WEBPACK_IMPORTED_MODULE_0__.computed)(() => { + return placeholder.value + }); - if (mode.value === 'single' && iv.value && iv.value[labelProp.value] !== undefined) { - texts.push(iv.value[labelProp.value]); + const ariaMultiselectable = (0,vue__WEBPACK_IMPORTED_MODULE_0__.computed)(() => { + return mode.value !== 'single' + }); + + const ariaLabel = (0,vue__WEBPACK_IMPORTED_MODULE_0__.computed)(() => { + let ariaLabel = ''; + + if (mode.value === 'single' && hasSelected.value) { + ariaLabel += iv.value[labelProp.value]; } if (mode.value === 'multiple' && hasSelected.value) { - texts.push(multipleLabelText.value); + ariaLabel += multipleLabelText.value; } if (mode.value === 'tags' && hasSelected.value) { - texts.push(...iv.value.map(v => v[labelProp.value])); + ariaLabel += iv.value.map(v => v[labelProp.value]).join(', '); } - return texts.join(', ') + return ariaLabel }); - const ariaPlaceholder = (0,vue__WEBPACK_IMPORTED_MODULE_0__.computed)(() => { - return ariaLabel.value + const arias = (0,vue__WEBPACK_IMPORTED_MODULE_0__.computed)(() => { + let arias = { ...aria.value }; + + // Need to add manually because focusing + // the input won't read the selected value + if (searchable.value) { + arias['aria-labelledby'] = arias['aria-labelledby'] + ? `${ariaAssist.value} ${arias['aria-labelledby']}` + : ariaAssist.value; + + if (ariaLabel.value && arias['aria-label']) { + arias['aria-label'] = `${ariaLabel.value}, ${arias['aria-label']}`; + } + } + + return arias }); // =============== METHODS ============== @@ -19627,26 +19880,40 @@ function useScroll (props, context, dep) return texts.join('-') }; - const ariaOptionLabel = (option) => { + const ariaGroupId = (option) => { let texts = []; - if (isSelected(option)) { - texts.push('✓'); + if (id && id.value) { + texts.push(id.value); } - texts.push(option[labelProp.value]); + texts.push('multiselect-group'); + + texts.push(option.index); + + return texts.join('-') + }; + + const ariaOptionLabel = (label) => { + let texts = []; + + texts.push(label); return texts.join(' ') }; - const ariaGroupLabel = (group) => { + const ariaGroupLabel = (label) => { let texts = []; - texts.push(group[groupLabel.value]); + texts.push(label); return texts.join(' ') }; + const ariaTagLabel = (label) => { + return `${label} ❎` + }; + // =============== HOOKS ================ (0,vue__WEBPACK_IMPORTED_MODULE_0__.onMounted)(() => { @@ -19658,13 +19925,51 @@ function useScroll (props, context, dep) }); return { - ariaOwns, + arias, ariaLabel, + ariaAssist, + ariaControls, ariaPlaceholder, + ariaMultiselectable, ariaActiveDescendant, ariaOptionId, ariaOptionLabel, + ariaGroupId, ariaGroupLabel, + ariaTagLabel, + } +} + +function useI18n (props, context, dep) +{ + const { + locale, fallbackLocale, + } = (0,vue__WEBPACK_IMPORTED_MODULE_0__.toRefs)(props); + + // =============== METHODS ============== + + const localize = (target) => { + if (!target || typeof target !== 'object') { + return target + } + + if (target && target[locale.value]) { + return target[locale.value] + } else if (target && locale.value && target[locale.value.toUpperCase()]) { + return target[locale.value.toUpperCase()] + } else if (target && target[fallbackLocale.value]) { + return target[fallbackLocale.value] + } else if (target && fallbackLocale.value && target[fallbackLocale.value.toUpperCase()]) { + return target[fallbackLocale.value.toUpperCase()] + } else if (target && Object.keys(target)[0]) { + return target[Object.keys(target)[0]] + } else { + return '' + } + }; + + return { + localize, } } @@ -19688,7 +19993,7 @@ var script = { emits: [ 'paste', 'open', 'close', 'select', 'deselect', 'input', 'search-change', 'tag', 'option', 'update:modelValue', - 'change', 'clear', 'keydown', 'keyup', + 'change', 'clear', 'keydown', 'keyup', 'max', 'create', ], props: { value: { @@ -19797,12 +20102,12 @@ var script = { default: false, }, noOptionsText: { - type: String, + type: [String, Object], required: false, default: 'The list is empty', }, noResultsText: { - type: String, + type: [String, Object], required: false, default: 'No results found', }, @@ -19895,6 +20200,11 @@ var script = { required: false, default: true, }, + closeOnDeselect: { + type: Boolean, + required: false, + default: false, + }, autocomplete: { type: String, required: false, @@ -19968,10 +20278,41 @@ var script = { required: false, default: false, }, + aria: { + required: false, + type: Object, + default: () => ({}), + }, + clearOnBlur: { + required: false, + type: Boolean, + default: true, + }, + locale: { + required: false, + type: String, + default: null, + }, + fallbackLocale: { + required: false, + type: String, + default: 'en', + }, + searchFilter: { + required: false, + type: Function, + default: null, + }, + allowAbsent: { + required: false, + type: Boolean, + default: false, + }, }, setup(props, context) { return resolveDeps(props, context, [ + useI18n, useValue, usePointer$1, useDropdown, @@ -19979,212 +20320,236 @@ var script = { useData, useMultiselect, useOptions, - useScroll$1, + useScroll, usePointer, useKeyboard, useClasses, - useScroll, + useA11y, ]) } }; -const _hoisted_1 = ["tabindex", "id", "dir", "aria-owns", "aria-expanded", "aria-label", "aria-placeholder", "aria-activedescendant"]; -const _hoisted_2 = ["type", "modelValue", "value", "autocomplete", "id", "aria-owns", "aria-expanded", "aria-label", "aria-placeholder", "aria-activedescendant"]; -const _hoisted_3 = ["onClick"]; -const _hoisted_4 = ["type", "modelValue", "value", "id", "autocomplete", "aria-owns", "aria-expanded", "aria-label", "aria-placeholder", "aria-activedescendant"]; -const _hoisted_5 = ["innerHTML"]; -const _hoisted_6 = ["innerHTML"]; -const _hoisted_7 = ["id"]; -const _hoisted_8 = ["data-pointed", "onMouseenter", "onClick"]; -const _hoisted_9 = ["innerHTML"]; -const _hoisted_10 = ["aria-label"]; -const _hoisted_11 = ["data-pointed", "data-selected", "id", "aria-label", "onMouseenter", "onClick"]; -const _hoisted_12 = ["innerHTML"]; -const _hoisted_13 = ["id", "aria-label", "data-pointed", "data-selected", "onMouseenter", "onClick"]; -const _hoisted_14 = ["innerHTML"]; +const _hoisted_1 = ["id", "dir"]; +const _hoisted_2 = ["tabindex", "aria-controls", "aria-placeholder", "aria-expanded", "aria-activedescendant", "aria-multiselectable", "role"]; +const _hoisted_3 = ["type", "modelValue", "value", "autocomplete", "id", "aria-controls", "aria-placeholder", "aria-expanded", "aria-activedescendant", "aria-multiselectable"]; +const _hoisted_4 = ["onKeyup", "aria-label"]; +const _hoisted_5 = ["onClick"]; +const _hoisted_6 = ["type", "modelValue", "value", "id", "autocomplete", "aria-controls", "aria-placeholder", "aria-expanded", "aria-activedescendant", "aria-multiselectable"]; +const _hoisted_7 = ["innerHTML"]; +const _hoisted_8 = ["id"]; +const _hoisted_9 = ["id", "aria-label", "aria-selected"]; +const _hoisted_10 = ["data-pointed", "onMouseenter", "onClick"]; +const _hoisted_11 = ["innerHTML"]; +const _hoisted_12 = ["aria-label"]; +const _hoisted_13 = ["data-pointed", "data-selected", "onMouseenter", "onClick", "id", "aria-selected", "aria-label"]; +const _hoisted_14 = ["data-pointed", "data-selected", "onMouseenter", "onClick", "id", "aria-selected", "aria-label"]; const _hoisted_15 = ["innerHTML"]; const _hoisted_16 = ["innerHTML"]; const _hoisted_17 = ["value"]; const _hoisted_18 = ["name", "value"]; const _hoisted_19 = ["name", "value"]; +const _hoisted_20 = ["id"]; function render(_ctx, _cache, $props, $setup, $data, $options) { return ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("div", { ref: "multiselect", - tabindex: _ctx.tabindex, class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.container), id: $props.searchable ? undefined : $props.id, dir: $props.rtl ? 'rtl' : undefined, - "aria-owns": _ctx.ariaOwns, - "aria-expanded": _ctx.isOpen, - "aria-label": _ctx.ariaLabel, - "aria-placeholder": _ctx.ariaPlaceholder, - "aria-activedescendant": _ctx.ariaActiveDescendant, - onFocusin: _cache[8] || (_cache[8] = (...args) => (_ctx.activate && _ctx.activate(...args))), - onFocusout: _cache[9] || (_cache[9] = (...args) => (_ctx.deactivate && _ctx.deactivate(...args))), - onKeydown: _cache[10] || (_cache[10] = (...args) => (_ctx.handleKeydown && _ctx.handleKeydown(...args))), - onKeyup: _cache[11] || (_cache[11] = (...args) => (_ctx.handleKeyup && _ctx.handleKeyup(...args))), - onFocus: _cache[12] || (_cache[12] = (...args) => (_ctx.handleFocus && _ctx.handleFocus(...args))), - onMousedown: _cache[13] || (_cache[13] = (...args) => (_ctx.handleMousedown && _ctx.handleMousedown(...args))), - role: "combobox" + onFocusin: _cache[10] || (_cache[10] = (...args) => (_ctx.handleFocusIn && _ctx.handleFocusIn(...args))), + onFocusout: _cache[11] || (_cache[11] = (...args) => (_ctx.handleFocusOut && _ctx.handleFocusOut(...args))), + onKeyup: _cache[12] || (_cache[12] = (...args) => (_ctx.handleKeyup && _ctx.handleKeyup(...args))), + onKeydown: _cache[13] || (_cache[13] = (...args) => (_ctx.handleKeydown && _ctx.handleKeydown(...args))) }, [ - (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Search "), - ($props.mode !== 'tags' && $props.searchable && !$props.disabled) - ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("input", (0,vue__WEBPACK_IMPORTED_MODULE_0__.mergeProps)({ - key: 0, - type: $props.inputType, - modelValue: _ctx.search, - value: _ctx.search, - class: _ctx.classList.search, - autocomplete: $props.autocomplete, - id: $props.searchable ? $props.id : undefined - }, $props.attrs, { - "aria-owns": _ctx.ariaOwns, - "aria-expanded": _ctx.isOpen, - "aria-label": _ctx.ariaLabel, - "aria-placeholder": _ctx.ariaPlaceholder, - "aria-activedescendant": _ctx.ariaActiveDescendant, - onInput: _cache[0] || (_cache[0] = (...args) => (_ctx.handleSearchInput && _ctx.handleSearchInput(...args))), - onKeypress: _cache[1] || (_cache[1] = (...args) => (_ctx.handleKeypress && _ctx.handleKeypress(...args))), - onPaste: _cache[2] || (_cache[2] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)((...args) => (_ctx.handlePaste && _ctx.handlePaste(...args)), ["stop"])), - ref: "input", - role: "combobox" - }), null, 16 /* FULL_PROPS */, _hoisted_2)) - : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true), - (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Tags (with search) "), - ($props.mode == 'tags') - ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("div", { - key: 1, - class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.tags) - }, [ - ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)(_ctx.iv, (option, i, key) => { - return (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, "tag", { - option: option, - handleTagRemove: _ctx.handleTagRemove, - disabled: $props.disabled - }, () => [ - ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("span", { - class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.tag), - key: key - }, [ - (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(option[$props.label]) + " ", 1 /* TEXT */), - (!$props.disabled) - ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("span", { - key: 0, - class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.tagRemove), - onClick: $event => (_ctx.handleTagRemove(option, $event)) - }, [ - (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", { - class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.tagRemoveIcon) - }, null, 2 /* CLASS */) - ], 10 /* CLASS, PROPS */, _hoisted_3)) - : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true) - ], 2 /* CLASS */)) - ]) - }), 256 /* UNKEYED_FRAGMENT */)), - (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { - class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.tagsSearchWrapper), - ref: "tags" + (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", (0,vue__WEBPACK_IMPORTED_MODULE_0__.mergeProps)({ + class: _ctx.classList.wrapper, + onMousedown: _cache[9] || (_cache[9] = (...args) => (_ctx.handleMousedown && _ctx.handleMousedown(...args))), + ref: "wrapper", + tabindex: _ctx.tabindex, + "aria-controls": !$props.searchable ? _ctx.ariaControls : undefined, + "aria-placeholder": !$props.searchable ? _ctx.ariaPlaceholder : undefined, + "aria-expanded": !$props.searchable ? _ctx.isOpen : undefined, + "aria-activedescendant": !$props.searchable ? _ctx.ariaActiveDescendant : undefined, + "aria-multiselectable": !$props.searchable ? _ctx.ariaMultiselectable : undefined, + role: !$props.searchable ? 'combobox' : undefined + }, !$props.searchable ? _ctx.arias : {}), [ + (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Search "), + ($props.mode !== 'tags' && $props.searchable && !$props.disabled) + ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("input", (0,vue__WEBPACK_IMPORTED_MODULE_0__.mergeProps)({ + key: 0, + type: $props.inputType, + modelValue: _ctx.search, + value: _ctx.search, + class: _ctx.classList.search, + autocomplete: $props.autocomplete, + id: $props.searchable ? $props.id : undefined, + onInput: _cache[0] || (_cache[0] = (...args) => (_ctx.handleSearchInput && _ctx.handleSearchInput(...args))), + onKeypress: _cache[1] || (_cache[1] = (...args) => (_ctx.handleKeypress && _ctx.handleKeypress(...args))), + onPaste: _cache[2] || (_cache[2] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)((...args) => (_ctx.handlePaste && _ctx.handlePaste(...args)), ["stop"])), + ref: "input", + "aria-controls": _ctx.ariaControls, + "aria-placeholder": _ctx.ariaPlaceholder, + "aria-expanded": _ctx.isOpen, + "aria-activedescendant": _ctx.ariaActiveDescendant, + "aria-multiselectable": _ctx.ariaMultiselectable, + role: "combobox" + }, { + ...$props.attrs, + ..._ctx.arias, + }), null, 16 /* FULL_PROPS */, _hoisted_3)) + : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true), + (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Tags (with search) "), + ($props.mode == 'tags') + ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("div", { + key: 1, + class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.tags), + "data-tags": "" }, [ - (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Used for measuring search width "), + ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)(_ctx.iv, (option, i, key) => { + return (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, "tag", { + option: option, + handleTagRemove: _ctx.handleTagRemove, + disabled: $props.disabled + }, () => [ + ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("span", { + class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([ + _ctx.classList.tag, + option.disabled ? _ctx.classList.tagDisabled : null, + ]), + tabindex: "-1", + onKeyup: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withKeys)($event => (_ctx.handleTagRemove(option, $event)), ["enter"]), + key: key, + "aria-label": _ctx.ariaTagLabel(_ctx.localize(option[$props.label])) + }, [ + (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.localize(option[$props.label])) + " ", 1 /* TEXT */), + (!$props.disabled && !option.disabled) + ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("span", { + key: 0, + class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.tagRemove), + onClick: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => (_ctx.handleTagRemove(option, $event)), ["stop"]) + }, [ + (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", { + class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.tagRemoveIcon) + }, null, 2 /* CLASS */) + ], 10 /* CLASS, PROPS */, _hoisted_5)) + : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true) + ], 42 /* CLASS, PROPS, HYDRATE_EVENTS */, _hoisted_4)) + ]) + }), 256 /* UNKEYED_FRAGMENT */)), + (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { + class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.tagsSearchWrapper), + ref: "tags" + }, [ + (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Used for measuring search width "), + (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", { + class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.tagsSearchCopy) + }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.search), 3 /* TEXT, CLASS */), + (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Actual search input "), + ($props.searchable && !$props.disabled) + ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("input", (0,vue__WEBPACK_IMPORTED_MODULE_0__.mergeProps)({ + key: 0, + type: $props.inputType, + modelValue: _ctx.search, + value: _ctx.search, + class: _ctx.classList.tagsSearch, + id: $props.searchable ? $props.id : undefined, + autocomplete: $props.autocomplete, + onInput: _cache[3] || (_cache[3] = (...args) => (_ctx.handleSearchInput && _ctx.handleSearchInput(...args))), + onKeypress: _cache[4] || (_cache[4] = (...args) => (_ctx.handleKeypress && _ctx.handleKeypress(...args))), + onPaste: _cache[5] || (_cache[5] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)((...args) => (_ctx.handlePaste && _ctx.handlePaste(...args)), ["stop"])), + ref: "input", + "aria-controls": _ctx.ariaControls, + "aria-placeholder": _ctx.ariaPlaceholder, + "aria-expanded": _ctx.isOpen, + "aria-activedescendant": _ctx.ariaActiveDescendant, + "aria-multiselectable": _ctx.ariaMultiselectable, + role: "combobox" + }, { + ...$props.attrs, + ..._ctx.arias, + }), null, 16 /* FULL_PROPS */, _hoisted_6)) + : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true) + ], 2 /* CLASS */) + ], 2 /* CLASS */)) + : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true), + (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Single label "), + ($props.mode == 'single' && _ctx.hasSelected && !_ctx.search && _ctx.iv) + ? (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, "singlelabel", { + key: 2, + value: _ctx.iv + }, () => [ + (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { + class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.singleLabel) + }, [ + (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", { + class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.singleLabelText) + }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.localize(_ctx.iv[$props.label])), 3 /* TEXT, CLASS */) + ], 2 /* CLASS */) + ]) + : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true), + (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Multiple label "), + ($props.mode == 'multiple' && _ctx.hasSelected && !_ctx.search) + ? (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, "multiplelabel", { + key: 3, + values: _ctx.iv + }, () => [ + (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { + class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.multipleLabel), + innerHTML: _ctx.multipleLabelText + }, null, 10 /* CLASS, PROPS */, _hoisted_7) + ]) + : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true), + (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Placeholder "), + ($props.placeholder && !_ctx.hasSelected && !_ctx.search) + ? (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, "placeholder", { key: 4 }, () => [ + (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { + class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.placeholder), + "aria-hidden": "true" + }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($props.placeholder), 3 /* TEXT, CLASS */) + ]) + : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true), + (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Spinner "), + ($props.loading || _ctx.resolving) + ? (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, "spinner", { key: 5 }, () => [ (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", { - class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.tagsSearchCopy) - }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.search), 3 /* TEXT, CLASS */), - (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Actual search input "), - ($props.searchable && !$props.disabled) - ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("input", (0,vue__WEBPACK_IMPORTED_MODULE_0__.mergeProps)({ - key: 0, - type: $props.inputType, - modelValue: _ctx.search, - value: _ctx.search, - class: _ctx.classList.tagsSearch, - id: $props.searchable ? $props.id : undefined, - autocomplete: $props.autocomplete - }, $props.attrs, { - "aria-owns": _ctx.ariaOwns, - "aria-expanded": _ctx.isOpen, - "aria-label": _ctx.ariaLabel, - "aria-placeholder": _ctx.ariaPlaceholder, - "aria-activedescendant": _ctx.ariaActiveDescendant, - onInput: _cache[3] || (_cache[3] = (...args) => (_ctx.handleSearchInput && _ctx.handleSearchInput(...args))), - onKeypress: _cache[4] || (_cache[4] = (...args) => (_ctx.handleKeypress && _ctx.handleKeypress(...args))), - onPaste: _cache[5] || (_cache[5] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)((...args) => (_ctx.handlePaste && _ctx.handlePaste(...args)), ["stop"])), - ref: "input", - role: "combobox" - }), null, 16 /* FULL_PROPS */, _hoisted_4)) - : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true) - ], 2 /* CLASS */) - ], 2 /* CLASS */)) - : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true), - (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Single label "), - ($props.mode == 'single' && _ctx.hasSelected && !_ctx.search && _ctx.iv) - ? (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, "singlelabel", { - key: 2, - value: _ctx.iv - }, () => [ - (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { - class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.singleLabel) - }, [ + class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.spinner), + "aria-hidden": "true" + }, null, 2 /* CLASS */) + ]) + : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true), + (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Clear "), + (_ctx.hasSelected && !$props.disabled && $props.canClear && !_ctx.busy) + ? (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, "clear", { + key: 6, + clear: _ctx.clear + }, () => [ (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", { - class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.singleLabelText), - innerHTML: _ctx.iv[$props.label] - }, null, 10 /* CLASS, PROPS */, _hoisted_5) - ], 2 /* CLASS */) - ]) - : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true), - (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Multiple label "), - ($props.mode == 'multiple' && _ctx.hasSelected && !_ctx.search) - ? (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, "multiplelabel", { - key: 3, - values: _ctx.iv - }, () => [ - (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { - class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.multipleLabel), - innerHTML: _ctx.multipleLabelText - }, null, 10 /* CLASS, PROPS */, _hoisted_6) - ]) - : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true), - (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Placeholder "), - ($props.placeholder && !_ctx.hasSelected && !_ctx.search) - ? (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, "placeholder", { key: 4 }, () => [ - (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { - class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.placeholder) - }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($props.placeholder), 3 /* TEXT, CLASS */) - ]) - : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true), - (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Spinner "), - ($props.loading || _ctx.resolving) - ? (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, "spinner", { key: 5 }, () => [ - (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", { - class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.spinner) - }, null, 2 /* CLASS */) - ]) - : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true), - (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Clear "), - (_ctx.hasSelected && !$props.disabled && $props.canClear && !_ctx.busy) - ? (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, "clear", { - key: 6, - clear: _ctx.clear - }, () => [ - (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", { - class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.clear), - onClick: _cache[6] || (_cache[6] = (...args) => (_ctx.clear && _ctx.clear(...args))) - }, [ + "aria-hidden": "true", + tabindex: "0", + role: "button", + "data-clear": "", + "aria-roledescription": "❎", + class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.clear), + onClick: _cache[6] || (_cache[6] = (...args) => (_ctx.clear && _ctx.clear(...args))), + onKeyup: _cache[7] || (_cache[7] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withKeys)((...args) => (_ctx.clear && _ctx.clear(...args)), ["enter"])) + }, [ + (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", { + class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.clearIcon) + }, null, 2 /* CLASS */) + ], 34 /* CLASS, HYDRATE_EVENTS */) + ]) + : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true), + (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Caret "), + ($props.caret && $props.showOptions) + ? (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, "caret", { key: 7 }, () => [ (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", { - class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.clearIcon) + class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.caret), + onClick: _cache[8] || (_cache[8] = (...args) => (_ctx.handleCaretClick && _ctx.handleCaretClick(...args))), + "aria-hidden": "true" }, null, 2 /* CLASS */) - ], 2 /* CLASS */) - ]) - : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true), - (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Caret "), - ($props.caret && $props.showOptions) - ? (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, "caret", { key: 7 }, () => [ - (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", { - class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.caret), - onClick: _cache[7] || (_cache[7] = (...args) => (_ctx.handleCaretClick && _ctx.handleCaretClick(...args))) - }, null, 2 /* CLASS */) - ]) - : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true), + ]) + : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true) + ], 16 /* FULL_PROPS */, _hoisted_2), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Options "), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.dropdown), @@ -20193,47 +20558,54 @@ function render(_ctx, _cache, $props, $setup, $data, $options) { (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, "beforelist", { options: _ctx.fo }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("ul", { class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.options), - id: _ctx.ariaOwns, + id: _ctx.ariaControls, role: "listbox" }, [ ($props.groups) ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, { key: 0 }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)(_ctx.fg, (group, i, key) => { return ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("li", { class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.group), - key: key + key: key, + id: _ctx.ariaGroupId(group), + "aria-label": _ctx.ariaGroupLabel(_ctx.localize(group[$props.groupLabel])), + "aria-selected": _ctx.isSelected(group), + role: "option" }, [ - (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { - class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.groupLabel(group)), - "data-pointed": _ctx.isPointed(group), - onMouseenter: $event => (_ctx.setPointer(group)), - onClick: $event => (_ctx.handleGroupClick(group)), - role: "none" - }, [ - (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, "grouplabel", { - group: group, - isSelected: _ctx.isSelected, - isPointed: _ctx.isPointed - }, () => [ - (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", { - innerHTML: group[$props.groupLabel] - }, null, 8 /* PROPS */, _hoisted_9) - ]) - ], 42 /* CLASS, PROPS, HYDRATE_EVENTS */, _hoisted_8), + (!group.__CREATE__) + ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("div", { + key: 0, + class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.groupLabel(group)), + "data-pointed": _ctx.isPointed(group), + onMouseenter: $event => (_ctx.setPointer(group, i)), + onClick: $event => (_ctx.handleGroupClick(group)) + }, [ + (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, "grouplabel", { + group: group, + isSelected: _ctx.isSelected, + isPointed: _ctx.isPointed + }, () => [ + (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", { + innerHTML: _ctx.localize(group[$props.groupLabel]) + }, null, 8 /* PROPS */, _hoisted_11) + ]) + ], 42 /* CLASS, PROPS, HYDRATE_EVENTS */, _hoisted_10)) + : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("ul", { class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.groupOptions), - "aria-label": _ctx.ariaGroupLabel(group), + "aria-label": _ctx.ariaGroupLabel(_ctx.localize(group[$props.groupLabel])), role: "group" }, [ ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)(group.__VISIBLE__, (option, i, key) => { return ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("li", { class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.option(option, group)), - key: key, "data-pointed": _ctx.isPointed(option), "data-selected": _ctx.isSelected(option) || undefined, - id: _ctx.ariaOptionId(option), - "aria-label": _ctx.ariaOptionLabel(option), + key: key, onMouseenter: $event => (_ctx.setPointer(option)), onClick: $event => (_ctx.handleOptionClick(option)), + id: _ctx.ariaOptionId(option), + "aria-selected": _ctx.isSelected(option), + "aria-label": _ctx.ariaOptionLabel(_ctx.localize(option[$props.label])), role: "option" }, [ (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, "option", { @@ -20242,25 +20614,24 @@ function render(_ctx, _cache, $props, $setup, $data, $options) { isPointed: _ctx.isPointed, search: _ctx.search }, () => [ - (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", { - innerHTML: option[$props.label] - }, null, 8 /* PROPS */, _hoisted_12) + (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.localize(option[$props.label])), 1 /* TEXT */) ]) - ], 42 /* CLASS, PROPS, HYDRATE_EVENTS */, _hoisted_11)) + ], 42 /* CLASS, PROPS, HYDRATE_EVENTS */, _hoisted_13)) }), 128 /* KEYED_FRAGMENT */)) - ], 10 /* CLASS, PROPS */, _hoisted_10) - ], 2 /* CLASS */)) + ], 10 /* CLASS, PROPS */, _hoisted_12) + ], 10 /* CLASS, PROPS */, _hoisted_9)) }), 128 /* KEYED_FRAGMENT */)) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, { key: 1 }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)(_ctx.fo, (option, i, key) => { return ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("li", { - id: _ctx.ariaOptionId(option), - "aria-label": _ctx.ariaOptionLabel(option), class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.option(option)), - key: key, "data-pointed": _ctx.isPointed(option), "data-selected": _ctx.isSelected(option) || undefined, + key: key, onMouseenter: $event => (_ctx.setPointer(option)), onClick: $event => (_ctx.handleOptionClick(option)), + id: _ctx.ariaOptionId(option), + "aria-selected": _ctx.isSelected(option), + "aria-label": _ctx.ariaOptionLabel(_ctx.localize(option[$props.label])), role: "option" }, [ (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, "option", { @@ -20269,18 +20640,16 @@ function render(_ctx, _cache, $props, $setup, $data, $options) { isPointed: _ctx.isPointed, search: _ctx.search }, () => [ - (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", { - innerHTML: option[$props.label] - }, null, 8 /* PROPS */, _hoisted_14) + (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.localize(option[$props.label])), 1 /* TEXT */) ]) - ], 42 /* CLASS, PROPS, HYDRATE_EVENTS */, _hoisted_13)) + ], 42 /* CLASS, PROPS, HYDRATE_EVENTS */, _hoisted_14)) }), 128 /* KEYED_FRAGMENT */)) - ], 10 /* CLASS, PROPS */, _hoisted_7), + ], 10 /* CLASS, PROPS */, _hoisted_8), (_ctx.noOptions) ? (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, "nooptions", { key: 0 }, () => [ (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.noOptions), - innerHTML: $props.noOptionsText + innerHTML: _ctx.localize($props.noOptionsText) }, null, 10 /* CLASS, PROPS */, _hoisted_15) ]) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true), @@ -20288,7 +20657,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) { ? (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, "noresults", { key: 1 }, () => [ (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.noResults), - innerHTML: $props.noResultsText + innerHTML: _ctx.localize($props.noResultsText) }, null, 10 /* CLASS, PROPS */, _hoisted_16) ]) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true), @@ -20310,7 +20679,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) { (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Hacky input element to show HTML5 required warning "), ($props.required) ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("input", { - key: 8, + key: 0, class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.fakeInput), tabindex: "-1", value: _ctx.textValue, @@ -20319,7 +20688,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) { : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Native input support "), ($props.nativeSupport) - ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, { key: 9 }, [ + ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, { key: 1 }, [ ($props.mode == 'single') ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("input", { key: 0, @@ -20337,6 +20706,15 @@ function render(_ctx, _cache, $props, $setup, $data, $options) { }), 128 /* KEYED_FRAGMENT */)) ], 64 /* STABLE_FRAGMENT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true), + (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Screen reader assistive text "), + ($props.searchable && _ctx.hasSelected) + ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("div", { + key: 2, + class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.assist), + id: _ctx.ariaAssist, + "aria-hidden": "true" + }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.ariaLabel), 11 /* TEXT, CLASS, PROPS */, _hoisted_20)) + : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("v-if", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Create height for empty input "), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(_ctx.classList.spacer) @@ -29449,7 +29827,7 @@ __webpack_require__.r(__webpack_exports__); var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module -___CSS_LOADER_EXPORT___.push([module.id, ".multiselect{align-items:center;background:var(--ms-bg,#fff);border:var(--ms-border-width,1px) solid var(--ms-border-color,#d1d5db);border-radius:var(--ms-radius,4px);box-sizing:border-box;cursor:pointer;display:flex;font-size:var(--ms-font-size,1rem);justify-content:flex-end;margin:0 auto;min-height:calc(var(--ms-border-width, 1px)*2 + var(--ms-font-size, 1rem)*var(--ms-line-height, 1.375) + var(--ms-py, .5rem)*2);outline:none;position:relative;width:100%}.multiselect.is-open{border-radius:var(--ms-radius,4px) var(--ms-radius,4px) 0 0}.multiselect.is-open-top{border-radius:0 0 var(--ms-radius,4px) var(--ms-radius,4px)}.multiselect.is-disabled{background:var(--ms-bg-disabled,#f3f4f6);cursor:default}.multiselect.is-active{box-shadow:0 0 0 var(--ms-ring-width,3px) var(--ms-ring-color,rgba(16,185,129,.188))}.multiselect-multiple-label,.multiselect-placeholder,.multiselect-single-label{align-items:center;background:transparent;box-sizing:border-box;display:flex;height:100%;left:0;line-height:var(--ms-line-height,1.375);max-width:100%;padding-left:var(--ms-px,.875rem);padding-right:calc(1.25rem + var(--ms-px, .875rem)*3);pointer-events:none;position:absolute;top:0}.multiselect-placeholder{color:var(--ms-placeholder-color,#9ca3af)}.multiselect-single-label-text{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.multiselect-search{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--ms-bg,#fff);border:0;border-radius:var(--ms-radius,4px);bottom:0;box-sizing:border-box;font-family:inherit;font-size:inherit;height:100%;left:0;outline:none;padding-left:var(--ms-px,.875rem);position:absolute;right:0;top:0;width:100%}.multiselect-search::-webkit-search-cancel-button,.multiselect-search::-webkit-search-decoration,.multiselect-search::-webkit-search-results-button,.multiselect-search::-webkit-search-results-decoration{-webkit-appearance:none}.multiselect-tags{align-items:center;display:flex;flex-grow:1;flex-shrink:1;flex-wrap:wrap;margin:var(--ms-tag-my,.25rem) 0 0;padding-left:var(--ms-py,.5rem)}.multiselect-tag{align-items:center;background:var(--ms-tag-bg,#10b981);border-radius:var(--ms-tag-radius,4px);color:var(--ms-tag-color,#fff);display:flex;font-size:var(--ms-tag-font-size,.875rem);font-weight:var(--ms-tag-font-weight,600);line-height:var(--ms-tag-line-height,1.25rem);margin-bottom:var(--ms-tag-my,.25rem);margin-right:var(--ms-tag-mx,.25rem);padding:var(--ms-tag-py,.125rem) 0 var(--ms-tag-py,.125rem) var(--ms-tag-px,.5rem);white-space:nowrap}.multiselect-tag.is-disabled{background:var(--ms-tag-bg-disabled,#9ca3af);color:var(--ms-tag-color-disabled,#fff);padding-right:var(--ms-tag-px,.5rem)}.multiselect-tag-remove{align-items:center;border-radius:var(--ms-tag-remove-radius,4px);display:flex;justify-content:center;margin:var(--ms-tag-remove-my,0) var(--ms-tag-remove-mx,.125rem);padding:var(--ms-tag-remove-py,.25rem) var(--ms-tag-remove-px,.25rem)}.multiselect-tag-remove:hover{background:rgba(0,0,0,.063)}.multiselect-tag-remove-icon{background-color:currentColor;display:inline-block;height:.75rem;-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 320 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m207.6 256 107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 320 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m207.6 256 107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z'/%3E%3C/svg%3E\");-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;opacity:.8;width:.75rem}.multiselect-tags-search-wrapper{display:inline-block;flex-grow:1;flex-shrink:1;height:100%;margin:0 var(--ms-tag-mx,4px) var(--ms-tag-my,4px);position:relative}.multiselect-tags-search-copy{display:inline-block;height:1px;visibility:hidden;white-space:pre-wrap;width:100%}.multiselect-tags-search{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;bottom:0;box-sizing:border-box;font-family:inherit;font-size:inherit;left:0;outline:none;padding:0;position:absolute;right:0;top:0;width:100%}.multiselect-tags-search::-webkit-search-cancel-button,.multiselect-tags-search::-webkit-search-decoration,.multiselect-tags-search::-webkit-search-results-button,.multiselect-tags-search::-webkit-search-results-decoration{-webkit-appearance:none}.multiselect-inifite{align-items:center;display:flex;justify-content:center;min-height:calc(var(--ms-border-width, 1px)*2 + var(--ms-font-size, 1rem)*var(--ms-line-height, 1.375) + var(--ms-py, .5rem)*2);width:100%}.multiselect-inifite-spinner,.multiselect-spinner{-webkit-animation:multiselect-spin 1s linear infinite;animation:multiselect-spin 1s linear infinite;background-color:var(--ms-spinner-color,#10b981);flex-grow:0;flex-shrink:0;height:1rem;-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 512 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m456.433 371.72-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 512 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m456.433 371.72-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z'/%3E%3C/svg%3E\");-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1rem;z-index:10}.multiselect-spinner{margin:0 var(--ms-px,.875rem) 0 0}.multiselect-clear{display:flex;flex-grow:0;flex-shrink:0;opacity:1;padding:0 var(--ms-px,.875rem) 0 0;position:relative;transition:.3s;z-index:10}.multiselect-clear:hover .multiselect-clear-icon{background-color:var(--ms-clear-color-hover,#000)}.multiselect-clear-icon{background-color:var(--ms-clear-color,#999);display:inline-block;-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 320 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m207.6 256 107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 320 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m207.6 256 107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z'/%3E%3C/svg%3E\");transition:.3s}.multiselect-caret,.multiselect-clear-icon{height:1.125rem;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.625rem}.multiselect-caret{background-color:var(--ms-caret-color,#999);flex-grow:0;flex-shrink:0;margin:0 var(--ms-px,.875rem) 0 0;-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 320 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 320 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z'/%3E%3C/svg%3E\");pointer-events:none;position:relative;transform:rotate(0deg);transition:transform .3s;z-index:10}.multiselect-caret.is-open{pointer-events:auto;transform:rotate(180deg)}.multiselect-dropdown{-webkit-overflow-scrolling:touch;background:var(--ms-dropdown-bg,#fff);border:var(--ms-dropdown-border-width,1px) solid var(--ms-dropdown-border-color,#d1d5db);border-radius:0 0 var(--ms-dropdown-radius,4px) var(--ms-dropdown-radius,4px);bottom:0;display:flex;flex-direction:column;left:calc(var(--ms-border-width, 1px)*-1);margin-top:calc(var(--ms-border-width, 1px)*-1);max-height:15rem;max-height:var(--ms-max-height,10rem);outline:none;overflow-y:scroll;position:absolute;right:calc(var(--ms-border-width, 1px)*-1);transform:translateY(100%);z-index:100}.multiselect-dropdown.is-top{border-radius:var(--ms-dropdown-radius,4px) var(--ms-dropdown-radius,4px) 0 0;bottom:auto;top:var(--ms-border-width,1px);transform:translateY(-100%)}.multiselect-dropdown.is-hidden{display:none}.multiselect-options{display:flex;flex-direction:column;list-style:none;margin:0;padding:0}.multiselect-group{margin:0;padding:0}.multiselect-group-label{align-items:center;background:var(--ms-group-label-bg,#e5e7eb);box-sizing:border-box;color:var(--ms-group-label-color,#374151);cursor:default;display:flex;font-size:.875rem;font-weight:600;justify-content:flex-start;line-height:var(--ms-group-label-line-height,1.375);padding:var(--ms-group-label-py,.3rem) var(--ms-group-label-px,.75rem);text-align:left;text-decoration:none}.multiselect-group-label.is-pointable{cursor:pointer}.multiselect-group-label.is-pointed{background:var(--ms-group-label-bg-pointed,#d1d5db);color:var(--ms-group-label-color-pointed,#374151)}.multiselect-group-label.is-selected{background:var(--ms-group-label-bg-selected,#059669);color:var(--ms-group-label-color-selected,#fff)}.multiselect-group-label.is-disabled{background:var(--ms-group-label-bg-disabled,#f3f4f6);color:var(--ms-group-label-color-disabled,#d1d5db);cursor:not-allowed}.multiselect-group-label.is-selected.is-pointed{background:var(--ms-group-label-bg-selected-pointed,#0c9e70);color:var(--ms-group-label-color-selected-pointed,#fff)}.multiselect-group-label.is-selected.is-disabled{background:var(--ms-group-label-bg-selected-disabled,#75cfb1);color:var(--ms-group-label-color-selected-disabled,#d1fae5)}.multiselect-group-options{margin:0;padding:0}.multiselect-option{align-items:center;box-sizing:border-box;cursor:pointer;display:flex;font-size:var(--ms-option-font-size,1rem);justify-content:flex-start;line-height:var(--ms-option-line-height,1.375);padding:var(--ms-option-py,.5rem) var(--ms-option-px,.75rem);text-align:left;text-decoration:none}.multiselect-option.is-pointed{background:var(--ms-option-bg-pointed,#f3f4f6);color:var(--ms-option-color-pointed,#1f2937)}.multiselect-option.is-selected{background:var(--ms-option-bg-selected,#10b981);color:var(--ms-option-color-selected,#fff)}.multiselect-option.is-disabled{background:var(--ms-option-bg-disabled,#fff);color:var(--ms-option-color-disabled,#d1d5db);cursor:not-allowed}.multiselect-option.is-selected.is-pointed{background:var(--ms-option-bg-selected-pointed,#26c08e);color:var(--ms-option-color-selected-pointed,#fff)}.multiselect-option.is-selected.is-disabled{background:var(--ms-option-bg-selected-disabled,#87dcc0);color:var(--ms-option-color-selected-disabled,#d1fae5)}.multiselect-no-options,.multiselect-no-results{color:var(--ms-empty-color,#4b5563);padding:var(--ms-option-py,.5rem) var(--ms-option-px,.75rem)}.multiselect-fake-input{background:transparent;border:0;bottom:-1px;font-size:0;height:1px;left:0;outline:none;padding:0;position:absolute;right:0;width:100%}.multiselect-fake-input:active,.multiselect-fake-input:focus{outline:none}.multiselect-spacer{display:none}[dir=rtl] .multiselect-multiple-label,[dir=rtl] .multiselect-placeholder,[dir=rtl] .multiselect-single-label{left:auto;padding-left:calc(1.25rem + var(--ms-px, .875rem)*3);padding-right:var(--ms-px,.875rem);right:0}[dir=rtl] .multiselect-search{padding-left:0;padding-right:var(--ms-px,.875rem)}[dir=rtl] .multiselect-tags{padding-left:0;padding-right:var(--ms-py,.5rem)}[dir=rtl] .multiselect-tag{margin-left:var(--ms-tag-mx,.25rem);margin-right:0;padding:var(--ms-tag-py,.125rem) var(--ms-tag-px,.5rem) var(--ms-tag-py,.125rem) 0}[dir=rtl] .multiselect-tag.is-disabled{padding-left:var(--ms-tag-px,.5rem)}[dir=rtl] .multiselect-caret,[dir=rtl] .multiselect-spinner{margin:0 0 0 var(--ms-px,.875rem)}[dir=rtl] .multiselect-clear{padding:0 0 0 var(--ms-px,.875rem)}@-webkit-keyframes multiselect-spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes multiselect-spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}", "",{"version":3,"sources":["webpack://./node_modules/@vueform/multiselect/themes/default.css"],"names":[],"mappings":"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","sourcesContent":[".multiselect{align-items:center;background:var(--ms-bg,#fff);border:var(--ms-border-width,1px) solid var(--ms-border-color,#d1d5db);border-radius:var(--ms-radius,4px);box-sizing:border-box;cursor:pointer;display:flex;font-size:var(--ms-font-size,1rem);justify-content:flex-end;margin:0 auto;min-height:calc(var(--ms-border-width, 1px)*2 + var(--ms-font-size, 1rem)*var(--ms-line-height, 1.375) + var(--ms-py, .5rem)*2);outline:none;position:relative;width:100%}.multiselect.is-open{border-radius:var(--ms-radius,4px) var(--ms-radius,4px) 0 0}.multiselect.is-open-top{border-radius:0 0 var(--ms-radius,4px) var(--ms-radius,4px)}.multiselect.is-disabled{background:var(--ms-bg-disabled,#f3f4f6);cursor:default}.multiselect.is-active{box-shadow:0 0 0 var(--ms-ring-width,3px) var(--ms-ring-color,rgba(16,185,129,.188))}.multiselect-multiple-label,.multiselect-placeholder,.multiselect-single-label{align-items:center;background:transparent;box-sizing:border-box;display:flex;height:100%;left:0;line-height:var(--ms-line-height,1.375);max-width:100%;padding-left:var(--ms-px,.875rem);padding-right:calc(1.25rem + var(--ms-px, .875rem)*3);pointer-events:none;position:absolute;top:0}.multiselect-placeholder{color:var(--ms-placeholder-color,#9ca3af)}.multiselect-single-label-text{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.multiselect-search{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--ms-bg,#fff);border:0;border-radius:var(--ms-radius,4px);bottom:0;box-sizing:border-box;font-family:inherit;font-size:inherit;height:100%;left:0;outline:none;padding-left:var(--ms-px,.875rem);position:absolute;right:0;top:0;width:100%}.multiselect-search::-webkit-search-cancel-button,.multiselect-search::-webkit-search-decoration,.multiselect-search::-webkit-search-results-button,.multiselect-search::-webkit-search-results-decoration{-webkit-appearance:none}.multiselect-tags{align-items:center;display:flex;flex-grow:1;flex-shrink:1;flex-wrap:wrap;margin:var(--ms-tag-my,.25rem) 0 0;padding-left:var(--ms-py,.5rem)}.multiselect-tag{align-items:center;background:var(--ms-tag-bg,#10b981);border-radius:var(--ms-tag-radius,4px);color:var(--ms-tag-color,#fff);display:flex;font-size:var(--ms-tag-font-size,.875rem);font-weight:var(--ms-tag-font-weight,600);line-height:var(--ms-tag-line-height,1.25rem);margin-bottom:var(--ms-tag-my,.25rem);margin-right:var(--ms-tag-mx,.25rem);padding:var(--ms-tag-py,.125rem) 0 var(--ms-tag-py,.125rem) var(--ms-tag-px,.5rem);white-space:nowrap}.multiselect-tag.is-disabled{background:var(--ms-tag-bg-disabled,#9ca3af);color:var(--ms-tag-color-disabled,#fff);padding-right:var(--ms-tag-px,.5rem)}.multiselect-tag-remove{align-items:center;border-radius:var(--ms-tag-remove-radius,4px);display:flex;justify-content:center;margin:var(--ms-tag-remove-my,0) var(--ms-tag-remove-mx,.125rem);padding:var(--ms-tag-remove-py,.25rem) var(--ms-tag-remove-px,.25rem)}.multiselect-tag-remove:hover{background:rgba(0,0,0,.063)}.multiselect-tag-remove-icon{background-color:currentColor;display:inline-block;height:.75rem;-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 320 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m207.6 256 107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 320 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m207.6 256 107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z'/%3E%3C/svg%3E\");-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;opacity:.8;width:.75rem}.multiselect-tags-search-wrapper{display:inline-block;flex-grow:1;flex-shrink:1;height:100%;margin:0 var(--ms-tag-mx,4px) var(--ms-tag-my,4px);position:relative}.multiselect-tags-search-copy{display:inline-block;height:1px;visibility:hidden;white-space:pre-wrap;width:100%}.multiselect-tags-search{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;bottom:0;box-sizing:border-box;font-family:inherit;font-size:inherit;left:0;outline:none;padding:0;position:absolute;right:0;top:0;width:100%}.multiselect-tags-search::-webkit-search-cancel-button,.multiselect-tags-search::-webkit-search-decoration,.multiselect-tags-search::-webkit-search-results-button,.multiselect-tags-search::-webkit-search-results-decoration{-webkit-appearance:none}.multiselect-inifite{align-items:center;display:flex;justify-content:center;min-height:calc(var(--ms-border-width, 1px)*2 + var(--ms-font-size, 1rem)*var(--ms-line-height, 1.375) + var(--ms-py, .5rem)*2);width:100%}.multiselect-inifite-spinner,.multiselect-spinner{-webkit-animation:multiselect-spin 1s linear infinite;animation:multiselect-spin 1s linear infinite;background-color:var(--ms-spinner-color,#10b981);flex-grow:0;flex-shrink:0;height:1rem;-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 512 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m456.433 371.72-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 512 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m456.433 371.72-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z'/%3E%3C/svg%3E\");-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1rem;z-index:10}.multiselect-spinner{margin:0 var(--ms-px,.875rem) 0 0}.multiselect-clear{display:flex;flex-grow:0;flex-shrink:0;opacity:1;padding:0 var(--ms-px,.875rem) 0 0;position:relative;transition:.3s;z-index:10}.multiselect-clear:hover .multiselect-clear-icon{background-color:var(--ms-clear-color-hover,#000)}.multiselect-clear-icon{background-color:var(--ms-clear-color,#999);display:inline-block;-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 320 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m207.6 256 107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 320 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m207.6 256 107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z'/%3E%3C/svg%3E\");transition:.3s}.multiselect-caret,.multiselect-clear-icon{height:1.125rem;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.625rem}.multiselect-caret{background-color:var(--ms-caret-color,#999);flex-grow:0;flex-shrink:0;margin:0 var(--ms-px,.875rem) 0 0;-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 320 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 320 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z'/%3E%3C/svg%3E\");pointer-events:none;position:relative;transform:rotate(0deg);transition:transform .3s;z-index:10}.multiselect-caret.is-open{pointer-events:auto;transform:rotate(180deg)}.multiselect-dropdown{-webkit-overflow-scrolling:touch;background:var(--ms-dropdown-bg,#fff);border:var(--ms-dropdown-border-width,1px) solid var(--ms-dropdown-border-color,#d1d5db);border-radius:0 0 var(--ms-dropdown-radius,4px) var(--ms-dropdown-radius,4px);bottom:0;display:flex;flex-direction:column;left:calc(var(--ms-border-width, 1px)*-1);margin-top:calc(var(--ms-border-width, 1px)*-1);max-height:15rem;max-height:var(--ms-max-height,10rem);outline:none;overflow-y:scroll;position:absolute;right:calc(var(--ms-border-width, 1px)*-1);transform:translateY(100%);z-index:100}.multiselect-dropdown.is-top{border-radius:var(--ms-dropdown-radius,4px) var(--ms-dropdown-radius,4px) 0 0;bottom:auto;top:var(--ms-border-width,1px);transform:translateY(-100%)}.multiselect-dropdown.is-hidden{display:none}.multiselect-options{display:flex;flex-direction:column;list-style:none;margin:0;padding:0}.multiselect-group{margin:0;padding:0}.multiselect-group-label{align-items:center;background:var(--ms-group-label-bg,#e5e7eb);box-sizing:border-box;color:var(--ms-group-label-color,#374151);cursor:default;display:flex;font-size:.875rem;font-weight:600;justify-content:flex-start;line-height:var(--ms-group-label-line-height,1.375);padding:var(--ms-group-label-py,.3rem) var(--ms-group-label-px,.75rem);text-align:left;text-decoration:none}.multiselect-group-label.is-pointable{cursor:pointer}.multiselect-group-label.is-pointed{background:var(--ms-group-label-bg-pointed,#d1d5db);color:var(--ms-group-label-color-pointed,#374151)}.multiselect-group-label.is-selected{background:var(--ms-group-label-bg-selected,#059669);color:var(--ms-group-label-color-selected,#fff)}.multiselect-group-label.is-disabled{background:var(--ms-group-label-bg-disabled,#f3f4f6);color:var(--ms-group-label-color-disabled,#d1d5db);cursor:not-allowed}.multiselect-group-label.is-selected.is-pointed{background:var(--ms-group-label-bg-selected-pointed,#0c9e70);color:var(--ms-group-label-color-selected-pointed,#fff)}.multiselect-group-label.is-selected.is-disabled{background:var(--ms-group-label-bg-selected-disabled,#75cfb1);color:var(--ms-group-label-color-selected-disabled,#d1fae5)}.multiselect-group-options{margin:0;padding:0}.multiselect-option{align-items:center;box-sizing:border-box;cursor:pointer;display:flex;font-size:var(--ms-option-font-size,1rem);justify-content:flex-start;line-height:var(--ms-option-line-height,1.375);padding:var(--ms-option-py,.5rem) var(--ms-option-px,.75rem);text-align:left;text-decoration:none}.multiselect-option.is-pointed{background:var(--ms-option-bg-pointed,#f3f4f6);color:var(--ms-option-color-pointed,#1f2937)}.multiselect-option.is-selected{background:var(--ms-option-bg-selected,#10b981);color:var(--ms-option-color-selected,#fff)}.multiselect-option.is-disabled{background:var(--ms-option-bg-disabled,#fff);color:var(--ms-option-color-disabled,#d1d5db);cursor:not-allowed}.multiselect-option.is-selected.is-pointed{background:var(--ms-option-bg-selected-pointed,#26c08e);color:var(--ms-option-color-selected-pointed,#fff)}.multiselect-option.is-selected.is-disabled{background:var(--ms-option-bg-selected-disabled,#87dcc0);color:var(--ms-option-color-selected-disabled,#d1fae5)}.multiselect-no-options,.multiselect-no-results{color:var(--ms-empty-color,#4b5563);padding:var(--ms-option-py,.5rem) var(--ms-option-px,.75rem)}.multiselect-fake-input{background:transparent;border:0;bottom:-1px;font-size:0;height:1px;left:0;outline:none;padding:0;position:absolute;right:0;width:100%}.multiselect-fake-input:active,.multiselect-fake-input:focus{outline:none}.multiselect-spacer{display:none}[dir=rtl] .multiselect-multiple-label,[dir=rtl] .multiselect-placeholder,[dir=rtl] .multiselect-single-label{left:auto;padding-left:calc(1.25rem + var(--ms-px, .875rem)*3);padding-right:var(--ms-px,.875rem);right:0}[dir=rtl] .multiselect-search{padding-left:0;padding-right:var(--ms-px,.875rem)}[dir=rtl] .multiselect-tags{padding-left:0;padding-right:var(--ms-py,.5rem)}[dir=rtl] .multiselect-tag{margin-left:var(--ms-tag-mx,.25rem);margin-right:0;padding:var(--ms-tag-py,.125rem) var(--ms-tag-px,.5rem) var(--ms-tag-py,.125rem) 0}[dir=rtl] .multiselect-tag.is-disabled{padding-left:var(--ms-tag-px,.5rem)}[dir=rtl] .multiselect-caret,[dir=rtl] .multiselect-spinner{margin:0 0 0 var(--ms-px,.875rem)}[dir=rtl] .multiselect-clear{padding:0 0 0 var(--ms-px,.875rem)}@-webkit-keyframes multiselect-spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes multiselect-spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}"],"sourceRoot":""}]); +___CSS_LOADER_EXPORT___.push([module.id, ".multiselect{align-items:center;background:var(--ms-bg,#fff);border:var(--ms-border-width,1px) solid var(--ms-border-color,#d1d5db);border-radius:var(--ms-radius,4px);box-sizing:border-box;cursor:pointer;display:flex;font-size:var(--ms-font-size,1rem);justify-content:flex-end;margin:0 auto;min-height:calc(var(--ms-border-width, 1px)*2 + var(--ms-font-size, 1rem)*var(--ms-line-height, 1.375) + var(--ms-py, .5rem)*2);outline:none;position:relative;width:100%}.multiselect.is-open{border-radius:var(--ms-radius,4px) var(--ms-radius,4px) 0 0}.multiselect.is-open-top{border-radius:0 0 var(--ms-radius,4px) var(--ms-radius,4px)}.multiselect.is-disabled{background:var(--ms-bg-disabled,#f3f4f6);cursor:default}.multiselect.is-active{border:var(--ms-border-width-active,var(--ms-border-width,1px)) solid var(--ms-border-color-active,var(--ms-border-color,#d1d5db));box-shadow:0 0 0 var(--ms-ring-width,3px) var(--ms-ring-color,rgba(16,185,129,.188))}.multiselect-wrapper{align-items:center;box-sizing:border-box;cursor:pointer;display:flex;justify-content:flex-end;margin:0 auto;min-height:calc(var(--ms-border-width, 1px)*2 + var(--ms-font-size, 1rem)*var(--ms-line-height, 1.375) + var(--ms-py, .5rem)*2);outline:none;position:relative;width:100%}.multiselect-multiple-label,.multiselect-placeholder,.multiselect-single-label{align-items:center;background:transparent;box-sizing:border-box;display:flex;height:100%;left:0;line-height:var(--ms-line-height,1.375);max-width:100%;padding-left:var(--ms-px,.875rem);padding-right:calc(1.25rem + var(--ms-px, .875rem)*3);pointer-events:none;position:absolute;top:0}.multiselect-placeholder{color:var(--ms-placeholder-color,#9ca3af)}.multiselect-single-label-text{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.multiselect-search{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--ms-bg,#fff);border:0;border-radius:var(--ms-radius,4px);bottom:0;box-sizing:border-box;font-family:inherit;font-size:inherit;height:100%;left:0;outline:none;padding-left:var(--ms-px,.875rem);position:absolute;right:0;top:0;width:100%}.multiselect-search::-webkit-search-cancel-button,.multiselect-search::-webkit-search-decoration,.multiselect-search::-webkit-search-results-button,.multiselect-search::-webkit-search-results-decoration{-webkit-appearance:none}.multiselect-tags{align-items:center;display:flex;flex-grow:1;flex-shrink:1;flex-wrap:wrap;margin:var(--ms-tag-my,.25rem) 0 0;padding-left:var(--ms-py,.5rem)}.multiselect-tag{align-items:center;background:var(--ms-tag-bg,#10b981);border-radius:var(--ms-tag-radius,4px);color:var(--ms-tag-color,#fff);display:flex;font-size:var(--ms-tag-font-size,.875rem);font-weight:var(--ms-tag-font-weight,600);line-height:var(--ms-tag-line-height,1.25rem);margin-bottom:var(--ms-tag-my,.25rem);margin-right:var(--ms-tag-mx,.25rem);padding:var(--ms-tag-py,.125rem) 0 var(--ms-tag-py,.125rem) var(--ms-tag-px,.5rem);white-space:nowrap}.multiselect-tag.is-disabled{background:var(--ms-tag-bg-disabled,#9ca3af);color:var(--ms-tag-color-disabled,#fff);padding-right:var(--ms-tag-px,.5rem)}.multiselect-tag-remove{align-items:center;border-radius:var(--ms-tag-remove-radius,4px);display:flex;justify-content:center;margin:var(--ms-tag-remove-my,0) var(--ms-tag-remove-mx,.125rem);padding:var(--ms-tag-remove-py,.25rem) var(--ms-tag-remove-px,.25rem)}.multiselect-tag-remove:hover{background:rgba(0,0,0,.063)}.multiselect-tag-remove-icon{background-color:currentColor;display:inline-block;height:.75rem;-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 320 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m207.6 256 107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 320 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m207.6 256 107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z'/%3E%3C/svg%3E\");-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;opacity:.8;width:.75rem}.multiselect-tags-search-wrapper{display:inline-block;flex-grow:1;flex-shrink:1;height:100%;margin:0 var(--ms-tag-mx,4px) var(--ms-tag-my,4px);position:relative}.multiselect-tags-search-copy{display:inline-block;height:1px;visibility:hidden;white-space:pre-wrap;width:100%}.multiselect-tags-search{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;bottom:0;box-sizing:border-box;font-family:inherit;font-size:inherit;left:0;outline:none;padding:0;position:absolute;right:0;top:0;width:100%}.multiselect-tags-search::-webkit-search-cancel-button,.multiselect-tags-search::-webkit-search-decoration,.multiselect-tags-search::-webkit-search-results-button,.multiselect-tags-search::-webkit-search-results-decoration{-webkit-appearance:none}.multiselect-inifite{align-items:center;display:flex;justify-content:center;min-height:calc(var(--ms-border-width, 1px)*2 + var(--ms-font-size, 1rem)*var(--ms-line-height, 1.375) + var(--ms-py, .5rem)*2);width:100%}.multiselect-inifite-spinner,.multiselect-spinner{animation:multiselect-spin 1s linear infinite;background-color:var(--ms-spinner-color,#10b981);flex-grow:0;flex-shrink:0;height:1rem;-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 512 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m456.433 371.72-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 512 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m456.433 371.72-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z'/%3E%3C/svg%3E\");-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1rem;z-index:10}.multiselect-spinner{margin:0 var(--ms-px,.875rem) 0 0}.multiselect-clear{display:flex;flex-grow:0;flex-shrink:0;opacity:1;padding:0 var(--ms-px,.875rem) 0 0;position:relative;transition:.3s;z-index:10}.multiselect-clear:hover .multiselect-clear-icon{background-color:var(--ms-clear-color-hover,#000)}.multiselect-clear-icon{background-color:var(--ms-clear-color,#999);display:inline-block;-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 320 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m207.6 256 107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 320 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m207.6 256 107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z'/%3E%3C/svg%3E\");transition:.3s}.multiselect-caret,.multiselect-clear-icon{height:1.125rem;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.625rem}.multiselect-caret{background-color:var(--ms-caret-color,#999);flex-grow:0;flex-shrink:0;margin:0 var(--ms-px,.875rem) 0 0;-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 320 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 320 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z'/%3E%3C/svg%3E\");pointer-events:none;position:relative;transform:rotate(0deg);transition:transform .3s;z-index:10}.multiselect-caret.is-open{pointer-events:auto;transform:rotate(180deg)}.multiselect-dropdown{-webkit-overflow-scrolling:touch;background:var(--ms-dropdown-bg,#fff);border:var(--ms-dropdown-border-width,1px) solid var(--ms-dropdown-border-color,#d1d5db);border-radius:0 0 var(--ms-dropdown-radius,4px) var(--ms-dropdown-radius,4px);bottom:0;display:flex;flex-direction:column;left:calc(var(--ms-border-width, 1px)*-1);margin-top:calc(var(--ms-border-width, 1px)*-1);max-height:var(--ms-max-height,10rem);outline:none;overflow-y:scroll;position:absolute;right:calc(var(--ms-border-width, 1px)*-1);transform:translateY(100%);z-index:100}.multiselect-dropdown.is-top{border-radius:var(--ms-dropdown-radius,4px) var(--ms-dropdown-radius,4px) 0 0;bottom:auto;top:var(--ms-border-width,1px);transform:translateY(-100%)}.multiselect-dropdown.is-hidden{display:none}.multiselect-options{display:flex;flex-direction:column;list-style:none;margin:0;padding:0}.multiselect-group{margin:0;padding:0}.multiselect-group-label{align-items:center;background:var(--ms-group-label-bg,#e5e7eb);box-sizing:border-box;color:var(--ms-group-label-color,#374151);cursor:default;display:flex;font-size:.875rem;font-weight:600;justify-content:flex-start;line-height:var(--ms-group-label-line-height,1.375);padding:var(--ms-group-label-py,.3rem) var(--ms-group-label-px,.75rem);text-align:left;text-decoration:none}.multiselect-group-label.is-pointable{cursor:pointer}.multiselect-group-label.is-pointed{background:var(--ms-group-label-bg-pointed,#d1d5db);color:var(--ms-group-label-color-pointed,#374151)}.multiselect-group-label.is-selected{background:var(--ms-group-label-bg-selected,#059669);color:var(--ms-group-label-color-selected,#fff)}.multiselect-group-label.is-disabled{background:var(--ms-group-label-bg-disabled,#f3f4f6);color:var(--ms-group-label-color-disabled,#d1d5db);cursor:not-allowed}.multiselect-group-label.is-selected.is-pointed{background:var(--ms-group-label-bg-selected-pointed,#0c9e70);color:var(--ms-group-label-color-selected-pointed,#fff)}.multiselect-group-label.is-selected.is-disabled{background:var(--ms-group-label-bg-selected-disabled,#75cfb1);color:var(--ms-group-label-color-selected-disabled,#d1fae5)}.multiselect-group-options{margin:0;padding:0}.multiselect-option{align-items:center;box-sizing:border-box;cursor:pointer;display:flex;font-size:var(--ms-option-font-size,1rem);justify-content:flex-start;line-height:var(--ms-option-line-height,1.375);padding:var(--ms-option-py,.5rem) var(--ms-option-px,.75rem);text-align:left;text-decoration:none}.multiselect-option.is-pointed{background:var(--ms-option-bg-pointed,#f3f4f6);color:var(--ms-option-color-pointed,#1f2937)}.multiselect-option.is-selected{background:var(--ms-option-bg-selected,#10b981);color:var(--ms-option-color-selected,#fff)}.multiselect-option.is-disabled{background:var(--ms-option-bg-disabled,#fff);color:var(--ms-option-color-disabled,#d1d5db);cursor:not-allowed}.multiselect-option.is-selected.is-pointed{background:var(--ms-option-bg-selected-pointed,#26c08e);color:var(--ms-option-color-selected-pointed,#fff)}.multiselect-option.is-selected.is-disabled{background:var(--ms-option-bg-selected-disabled,#87dcc0);color:var(--ms-option-color-selected-disabled,#d1fae5)}.multiselect-no-options,.multiselect-no-results{color:var(--ms-empty-color,#4b5563);padding:var(--ms-option-py,.5rem) var(--ms-option-px,.75rem)}.multiselect-fake-input{background:transparent;border:0;bottom:-1px;font-size:0;height:1px;left:0;outline:none;padding:0;position:absolute;right:0;width:100%}.multiselect-fake-input:active,.multiselect-fake-input:focus{outline:none}.multiselect-assistive-text{clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;position:absolute;width:1px}.multiselect-spacer{display:none}[dir=rtl] .multiselect-multiple-label,[dir=rtl] .multiselect-placeholder,[dir=rtl] .multiselect-single-label{left:auto;padding-left:calc(1.25rem + var(--ms-px, .875rem)*3);padding-right:var(--ms-px,.875rem);right:0}[dir=rtl] .multiselect-search{padding-left:0;padding-right:var(--ms-px,.875rem)}[dir=rtl] .multiselect-tags{padding-left:0;padding-right:var(--ms-py,.5rem)}[dir=rtl] .multiselect-tag{margin-left:var(--ms-tag-mx,.25rem);margin-right:0;padding:var(--ms-tag-py,.125rem) var(--ms-tag-px,.5rem) var(--ms-tag-py,.125rem) 0}[dir=rtl] .multiselect-tag.is-disabled{padding-left:var(--ms-tag-px,.5rem)}[dir=rtl] .multiselect-caret,[dir=rtl] .multiselect-spinner{margin:0 0 0 var(--ms-px,.875rem)}[dir=rtl] .multiselect-clear{padding:0 0 0 var(--ms-px,.875rem)}@keyframes multiselect-spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}", "",{"version":3,"sources":["webpack://./node_modules/@vueform/multiselect/themes/default.css"],"names":[],"mappings":"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","sourcesContent":[".multiselect{align-items:center;background:var(--ms-bg,#fff);border:var(--ms-border-width,1px) solid var(--ms-border-color,#d1d5db);border-radius:var(--ms-radius,4px);box-sizing:border-box;cursor:pointer;display:flex;font-size:var(--ms-font-size,1rem);justify-content:flex-end;margin:0 auto;min-height:calc(var(--ms-border-width, 1px)*2 + var(--ms-font-size, 1rem)*var(--ms-line-height, 1.375) + var(--ms-py, .5rem)*2);outline:none;position:relative;width:100%}.multiselect.is-open{border-radius:var(--ms-radius,4px) var(--ms-radius,4px) 0 0}.multiselect.is-open-top{border-radius:0 0 var(--ms-radius,4px) var(--ms-radius,4px)}.multiselect.is-disabled{background:var(--ms-bg-disabled,#f3f4f6);cursor:default}.multiselect.is-active{border:var(--ms-border-width-active,var(--ms-border-width,1px)) solid var(--ms-border-color-active,var(--ms-border-color,#d1d5db));box-shadow:0 0 0 var(--ms-ring-width,3px) var(--ms-ring-color,rgba(16,185,129,.188))}.multiselect-wrapper{align-items:center;box-sizing:border-box;cursor:pointer;display:flex;justify-content:flex-end;margin:0 auto;min-height:calc(var(--ms-border-width, 1px)*2 + var(--ms-font-size, 1rem)*var(--ms-line-height, 1.375) + var(--ms-py, .5rem)*2);outline:none;position:relative;width:100%}.multiselect-multiple-label,.multiselect-placeholder,.multiselect-single-label{align-items:center;background:transparent;box-sizing:border-box;display:flex;height:100%;left:0;line-height:var(--ms-line-height,1.375);max-width:100%;padding-left:var(--ms-px,.875rem);padding-right:calc(1.25rem + var(--ms-px, .875rem)*3);pointer-events:none;position:absolute;top:0}.multiselect-placeholder{color:var(--ms-placeholder-color,#9ca3af)}.multiselect-single-label-text{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.multiselect-search{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--ms-bg,#fff);border:0;border-radius:var(--ms-radius,4px);bottom:0;box-sizing:border-box;font-family:inherit;font-size:inherit;height:100%;left:0;outline:none;padding-left:var(--ms-px,.875rem);position:absolute;right:0;top:0;width:100%}.multiselect-search::-webkit-search-cancel-button,.multiselect-search::-webkit-search-decoration,.multiselect-search::-webkit-search-results-button,.multiselect-search::-webkit-search-results-decoration{-webkit-appearance:none}.multiselect-tags{align-items:center;display:flex;flex-grow:1;flex-shrink:1;flex-wrap:wrap;margin:var(--ms-tag-my,.25rem) 0 0;padding-left:var(--ms-py,.5rem)}.multiselect-tag{align-items:center;background:var(--ms-tag-bg,#10b981);border-radius:var(--ms-tag-radius,4px);color:var(--ms-tag-color,#fff);display:flex;font-size:var(--ms-tag-font-size,.875rem);font-weight:var(--ms-tag-font-weight,600);line-height:var(--ms-tag-line-height,1.25rem);margin-bottom:var(--ms-tag-my,.25rem);margin-right:var(--ms-tag-mx,.25rem);padding:var(--ms-tag-py,.125rem) 0 var(--ms-tag-py,.125rem) var(--ms-tag-px,.5rem);white-space:nowrap}.multiselect-tag.is-disabled{background:var(--ms-tag-bg-disabled,#9ca3af);color:var(--ms-tag-color-disabled,#fff);padding-right:var(--ms-tag-px,.5rem)}.multiselect-tag-remove{align-items:center;border-radius:var(--ms-tag-remove-radius,4px);display:flex;justify-content:center;margin:var(--ms-tag-remove-my,0) var(--ms-tag-remove-mx,.125rem);padding:var(--ms-tag-remove-py,.25rem) var(--ms-tag-remove-px,.25rem)}.multiselect-tag-remove:hover{background:rgba(0,0,0,.063)}.multiselect-tag-remove-icon{background-color:currentColor;display:inline-block;height:.75rem;-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 320 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m207.6 256 107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 320 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m207.6 256 107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z'/%3E%3C/svg%3E\");-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;opacity:.8;width:.75rem}.multiselect-tags-search-wrapper{display:inline-block;flex-grow:1;flex-shrink:1;height:100%;margin:0 var(--ms-tag-mx,4px) var(--ms-tag-my,4px);position:relative}.multiselect-tags-search-copy{display:inline-block;height:1px;visibility:hidden;white-space:pre-wrap;width:100%}.multiselect-tags-search{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;bottom:0;box-sizing:border-box;font-family:inherit;font-size:inherit;left:0;outline:none;padding:0;position:absolute;right:0;top:0;width:100%}.multiselect-tags-search::-webkit-search-cancel-button,.multiselect-tags-search::-webkit-search-decoration,.multiselect-tags-search::-webkit-search-results-button,.multiselect-tags-search::-webkit-search-results-decoration{-webkit-appearance:none}.multiselect-inifite{align-items:center;display:flex;justify-content:center;min-height:calc(var(--ms-border-width, 1px)*2 + var(--ms-font-size, 1rem)*var(--ms-line-height, 1.375) + var(--ms-py, .5rem)*2);width:100%}.multiselect-inifite-spinner,.multiselect-spinner{animation:multiselect-spin 1s linear infinite;background-color:var(--ms-spinner-color,#10b981);flex-grow:0;flex-shrink:0;height:1rem;-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 512 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m456.433 371.72-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 512 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m456.433 371.72-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z'/%3E%3C/svg%3E\");-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1rem;z-index:10}.multiselect-spinner{margin:0 var(--ms-px,.875rem) 0 0}.multiselect-clear{display:flex;flex-grow:0;flex-shrink:0;opacity:1;padding:0 var(--ms-px,.875rem) 0 0;position:relative;transition:.3s;z-index:10}.multiselect-clear:hover .multiselect-clear-icon{background-color:var(--ms-clear-color-hover,#000)}.multiselect-clear-icon{background-color:var(--ms-clear-color,#999);display:inline-block;-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 320 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m207.6 256 107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 320 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m207.6 256 107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z'/%3E%3C/svg%3E\");transition:.3s}.multiselect-caret,.multiselect-clear-icon{height:1.125rem;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.625rem}.multiselect-caret{background-color:var(--ms-caret-color,#999);flex-grow:0;flex-shrink:0;margin:0 var(--ms-px,.875rem) 0 0;-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 320 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 320 512' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z'/%3E%3C/svg%3E\");pointer-events:none;position:relative;transform:rotate(0deg);transition:transform .3s;z-index:10}.multiselect-caret.is-open{pointer-events:auto;transform:rotate(180deg)}.multiselect-dropdown{-webkit-overflow-scrolling:touch;background:var(--ms-dropdown-bg,#fff);border:var(--ms-dropdown-border-width,1px) solid var(--ms-dropdown-border-color,#d1d5db);border-radius:0 0 var(--ms-dropdown-radius,4px) var(--ms-dropdown-radius,4px);bottom:0;display:flex;flex-direction:column;left:calc(var(--ms-border-width, 1px)*-1);margin-top:calc(var(--ms-border-width, 1px)*-1);max-height:var(--ms-max-height,10rem);outline:none;overflow-y:scroll;position:absolute;right:calc(var(--ms-border-width, 1px)*-1);transform:translateY(100%);z-index:100}.multiselect-dropdown.is-top{border-radius:var(--ms-dropdown-radius,4px) var(--ms-dropdown-radius,4px) 0 0;bottom:auto;top:var(--ms-border-width,1px);transform:translateY(-100%)}.multiselect-dropdown.is-hidden{display:none}.multiselect-options{display:flex;flex-direction:column;list-style:none;margin:0;padding:0}.multiselect-group{margin:0;padding:0}.multiselect-group-label{align-items:center;background:var(--ms-group-label-bg,#e5e7eb);box-sizing:border-box;color:var(--ms-group-label-color,#374151);cursor:default;display:flex;font-size:.875rem;font-weight:600;justify-content:flex-start;line-height:var(--ms-group-label-line-height,1.375);padding:var(--ms-group-label-py,.3rem) var(--ms-group-label-px,.75rem);text-align:left;text-decoration:none}.multiselect-group-label.is-pointable{cursor:pointer}.multiselect-group-label.is-pointed{background:var(--ms-group-label-bg-pointed,#d1d5db);color:var(--ms-group-label-color-pointed,#374151)}.multiselect-group-label.is-selected{background:var(--ms-group-label-bg-selected,#059669);color:var(--ms-group-label-color-selected,#fff)}.multiselect-group-label.is-disabled{background:var(--ms-group-label-bg-disabled,#f3f4f6);color:var(--ms-group-label-color-disabled,#d1d5db);cursor:not-allowed}.multiselect-group-label.is-selected.is-pointed{background:var(--ms-group-label-bg-selected-pointed,#0c9e70);color:var(--ms-group-label-color-selected-pointed,#fff)}.multiselect-group-label.is-selected.is-disabled{background:var(--ms-group-label-bg-selected-disabled,#75cfb1);color:var(--ms-group-label-color-selected-disabled,#d1fae5)}.multiselect-group-options{margin:0;padding:0}.multiselect-option{align-items:center;box-sizing:border-box;cursor:pointer;display:flex;font-size:var(--ms-option-font-size,1rem);justify-content:flex-start;line-height:var(--ms-option-line-height,1.375);padding:var(--ms-option-py,.5rem) var(--ms-option-px,.75rem);text-align:left;text-decoration:none}.multiselect-option.is-pointed{background:var(--ms-option-bg-pointed,#f3f4f6);color:var(--ms-option-color-pointed,#1f2937)}.multiselect-option.is-selected{background:var(--ms-option-bg-selected,#10b981);color:var(--ms-option-color-selected,#fff)}.multiselect-option.is-disabled{background:var(--ms-option-bg-disabled,#fff);color:var(--ms-option-color-disabled,#d1d5db);cursor:not-allowed}.multiselect-option.is-selected.is-pointed{background:var(--ms-option-bg-selected-pointed,#26c08e);color:var(--ms-option-color-selected-pointed,#fff)}.multiselect-option.is-selected.is-disabled{background:var(--ms-option-bg-selected-disabled,#87dcc0);color:var(--ms-option-color-selected-disabled,#d1fae5)}.multiselect-no-options,.multiselect-no-results{color:var(--ms-empty-color,#4b5563);padding:var(--ms-option-py,.5rem) var(--ms-option-px,.75rem)}.multiselect-fake-input{background:transparent;border:0;bottom:-1px;font-size:0;height:1px;left:0;outline:none;padding:0;position:absolute;right:0;width:100%}.multiselect-fake-input:active,.multiselect-fake-input:focus{outline:none}.multiselect-assistive-text{clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;position:absolute;width:1px}.multiselect-spacer{display:none}[dir=rtl] .multiselect-multiple-label,[dir=rtl] .multiselect-placeholder,[dir=rtl] .multiselect-single-label{left:auto;padding-left:calc(1.25rem + var(--ms-px, .875rem)*3);padding-right:var(--ms-px,.875rem);right:0}[dir=rtl] .multiselect-search{padding-left:0;padding-right:var(--ms-px,.875rem)}[dir=rtl] .multiselect-tags{padding-left:0;padding-right:var(--ms-py,.5rem)}[dir=rtl] .multiselect-tag{margin-left:var(--ms-tag-mx,.25rem);margin-right:0;padding:var(--ms-tag-py,.125rem) var(--ms-tag-px,.5rem) var(--ms-tag-py,.125rem) 0}[dir=rtl] .multiselect-tag.is-disabled{padding-left:var(--ms-tag-px,.5rem)}[dir=rtl] .multiselect-caret,[dir=rtl] .multiselect-spinner{margin:0 0 0 var(--ms-px,.875rem)}[dir=rtl] .multiselect-clear{padding:0 0 0 var(--ms-px,.875rem)}@keyframes multiselect-spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}"],"sourceRoot":""}]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); @@ -112559,4 +112937,4 @@ function _unsupportedIterableToArray(o, minLen) { /***/ }) }]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxRUFBcUUsc0RBQVM7QUFDOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGlCQUFpQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQiw2Q0FBSTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixLQUFxQztBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksb0RBQU87QUFDbkIsNEJBQTRCLGlCQUFpQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGtCQUFrQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQsb0RBQU87QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsbURBQU07QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0JBQWtCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGtCQUFrQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHNCQUFzQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksdUJBQXVCO0FBQ25DLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksU0FBUztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyx1Q0FBdUM7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsdUJBQXVCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCxpREFBSTtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksTUFBTTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyxPQUFPO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7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QUFDQTtBQUNBLEtBQUssSUFBcUM7QUFDMUMsSUFBSSwwREFBYTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLG1EQUFNO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsYUFBYTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixhQUFhO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxnQkFBZ0I7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDhNQUE4TTtBQUMxTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLG9EQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IscUJBQXFCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdURBQXVELEtBQUs7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZ0JBQWdCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsdURBQVUsY0FBYyxxQ0FBcUM7QUFDeEU7O0FBRUE7QUFDQTtBQUNBLFFBQVEsdURBQVU7QUFDbEIsbUJBQW1CO0FBQ25CO0FBQ0EsWUFBWTtBQUNaLCtDQUErQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLEtBQXFDO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsS0FBcUMsY0FBYyxxREFBUSxXQUFXLHVEQUFVO0FBQ3pHLGdGQUFnRixLQUFLO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLDJCQUEyQixvREFBRztBQUM5QiwwQkFBMEIsb0RBQUc7QUFDN0IsNEJBQTRCLG9EQUFHO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlGQUFpRixRQUFRO0FBQ3pGO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLGlDQUFpQyxTQUFTLGlDQUFpQyxVQUFVO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxtQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLElBQWdFO0FBQzVFO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixZQUFZLHNDQUFzQyxvQkFBb0I7QUFDdEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDJEQUFjO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsZ0JBQWdCLElBQWdFO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiwyREFBYztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsZ0JBQWdCLElBQWdFO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxVQUFVLDJCQUEyQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isb0JBQW9CO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix3QkFBd0I7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLG9EQUFPO0FBQ2Y7QUFDQTtBQUNBLGFBQWEscURBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLG1EQUFNO0FBQ2QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsOERBQWE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDhEQUFhO0FBQzdCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLElBQXFDO0FBQ25ELHdCQUF3Qix5REFBWTtBQUNwQyxnQkFBZ0IsU0FBUztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsK0RBQWtCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix1QkFBdUI7QUFDM0MsMENBQTBDLGtEQUFTO0FBQ25ELFlBQVksdURBQVU7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixxQkFBcUI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksOERBQWE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSw4REFBYTtBQUN6QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHFEQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMscURBQVE7QUFDekMsaUNBQWlDLHVEQUFVLENBQUMscURBQVE7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLGtCQUFrQixJQUFJLEtBQUssRUFBRSxNQUFNO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBLGNBQWMsSUFBcUM7QUFDbkQsdUJBQXVCLHVEQUFVLHFCQUFxQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIscURBQVE7QUFDN0IscUJBQXFCLHVEQUFVLENBQUMscURBQVE7QUFDeEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxvREFBTyxZQUFZLHFEQUFRO0FBQ25DO0FBQ0EsMkNBQTJDLE9BQU87QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xELG9FQUFvRSxPQUFPO0FBQzNFO0FBQ0E7QUFDQSx3QkFBd0IsWUFBWTtBQUNwQztBQUNBO0FBQ0E7QUFDQSxhQUFhLHFEQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QyxPQUFPO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IseUJBQXlCO0FBQzdDO0FBQ0E7QUFDQSxZQUFZLG9EQUFPO0FBQ25CLDRCQUE0QixpQkFBaUI7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRUFBaUUsTUFBTTtBQUN2RTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixLQUFLO0FBQ3JCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEtBQXFDLE1BQU0scURBQVE7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixJQUFJO0FBQ3hCLGNBQWMseURBQVk7QUFDMUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsbURBQU07QUFDcEI7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEtBQXFDLElBQUksZ0VBQWUsWUFBWSxDQUFPO0FBQzlGLG1CQUFtQixLQUFxQyxJQUFJLGdFQUFlLFlBQVksQ0FBTztBQUM5RixtQkFBbUIsS0FBcUMsSUFBSSxnRUFBZSxZQUFZLENBQU87QUFDOUYsa0JBQWtCLEtBQXFDLElBQUksZ0VBQWUsV0FBVyxDQUFNO0FBQzNGO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixLQUFtQiw2QkFBNkIsQ0FBTTtBQUMxRTtBQUNBO0FBQ0Esa0JBQWtCLEtBQW1CLDJCQUEyQixDQUFJO0FBQ3BFLENBQUM7QUFDRDtBQUNBO0FBQ0EsVUFBVSxhQUFhO0FBQ3ZCLGdCQUFnQiw4REFBOEQ7QUFDOUU7QUFDQSxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQsMkJBQTJCLGtEQUFTO0FBQ3BDO0FBQ0EsWUFBWSxtREFBTTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0Msa0RBQVMsSUFBSSxtREFBTTtBQUN2RDtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsa0RBQVMsSUFBSSxtREFBTTtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixtREFBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsa0RBQVMsSUFBSSxtREFBTTtBQUNoRDtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsTUFBb0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixzREFBSztBQUNyQixpQkFBaUIsS0FBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLGtEQUFTLElBQUksbURBQU07QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLG1EQUFNO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLEtBQXFDO0FBQ3ZEO0FBQ0EsY0FBYyxxREFBUTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsa0RBQVMsZ0NBQWdDLG1EQUFNO0FBQ3hFLGlDQUFpQyxxQkFBcUI7QUFDdEQ7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLHFCQUFxQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsVUFBVSxhQUFhO0FBQ3ZCLGdCQUFnQix3QkFBd0I7QUFDeEMsMkJBQTJCLGtEQUFTLElBQUksbURBQU07QUFDOUM7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGtEQUFTLElBQUksbURBQU07QUFDN0M7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG1EQUFNO0FBQ3ZCLGFBQWEsS0FBcUM7QUFDbEQsbURBQW1ELElBQUk7QUFDdkQ7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFxQztBQUNsRCw4REFBOEQsSUFBSTtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixLQUFxQztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsVUFBVSxLQUFLLGdFQUFnRTtBQUMvRTtBQUNBO0FBQ0Esc0JBQXNCLGtEQUFTLElBQUksbURBQU07QUFDekMsNEJBQTRCLGtEQUFTLElBQUksbURBQU07QUFDL0Msb0RBQW9ELG1EQUFNO0FBQzFELFlBQVksbURBQU07QUFDbEIsWUFBWSxtREFBTTtBQUNsQixZQUFZLG1EQUFNO0FBQ2xCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG1EQUFNO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQWlEO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRSxtREFBTSxHQUFHO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLHVDQUF1QyxrRUFBcUI7QUFDNUQsYUFBYSxLQUFxQztBQUNsRCw2QkFBNkIscUJBQXFCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsNkNBQUk7QUFDckIsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksb0NBQW9DO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw2Q0FBSTtBQUN6QixhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxrQkFBa0I7QUFDOUIsZ0JBQWdCLHNEQUFLO0FBQ3JCO0FBQ0E7QUFDQSxnREFBZ0QscUJBQXFCO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDZDQUFJO0FBQ3pCLGFBQWE7QUFDYjtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixNQUFNLFlBQVksSUFBSSwwQkFBMEIsV0FBVztBQUMvRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDLHNDQUFzQyxLQUFxQywrQkFBK0IsQ0FBSTtBQUM5RyxTQUFTLElBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsdURBQVU7QUFDMUI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQSxxQkFBcUIsRUFFSjtBQUNqQixxQkFBcUIsSUFBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLElBQXFDO0FBQzNELGdDQUFnQyxJQUFJLGNBQWMscUJBQXFCO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDLE1BQU0sdURBQVU7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDLEtBQUssc0RBQVM7QUFDaEUsMkVBQTJFO0FBQzNFO0FBQ0E7QUFDQTtBQUNBLGFBQWEscURBQVE7QUFDckIsYUFBYSxLQUFxQztBQUNsRDtBQUNBO0FBQ0EsNEJBQTRCLHlEQUFRO0FBQ3BDLGlCQUFpQixJQUFxQztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLDZDQUFJO0FBQ3JDLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix1REFBVTtBQUNsQztBQUNBLGtCQUFrQix1REFBVTtBQUM1QjtBQUNBLHNCQUFzQiw2Q0FBSTtBQUMxQixpQkFBaUIsS0FBcUMsYUFBYSw2Q0FBSTtBQUN2RSwyQ0FBMkMsSUFBSTtBQUMvQztBQUNBLHlCQUF5Qix1REFBVSxTQUFTLHVEQUFVO0FBQ3REO0FBQ0EsbUJBQW1CLEtBQXFDO0FBQ3hEO0FBQ0EsMkVBQTJFLElBQUk7QUFDL0U7QUFDQSxzQkFBc0IsQ0FBSTtBQUMxQjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixpQkFBaUIsSUFBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsdURBQVU7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksb0RBQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxvREFBTztBQUNmO0FBQ0Esc0VBQXNFO0FBQ3RFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyw2Q0FBSTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEVBQTBFLDZDQUFJO0FBQzlFLFFBQVEsb0RBQU87QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxxREFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksc0RBQUs7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLHFCQUFxQixJQUFxQztBQUMxRCwrQ0FBK0MsSUFBSTtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxJQUFxQztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLG9EQUFPO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxxREFBUTtBQUNoQjtBQUNBLFlBQVksdURBQVU7QUFDdEI7QUFDQTtBQUNBLGtCQUFrQixJQUFxQztBQUN2RCw0REFBNEQsSUFBSTtBQUNoRTtBQUNBO0FBQ0EsYUFBYSx1REFBVTtBQUN2QjtBQUNBO0FBQ0EsYUFBYSxxREFBUTtBQUNyQixZQUFZLG9EQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qix1REFBVTtBQUN0QztBQUNBO0FBQ0EsZ0JBQWdCLHVEQUFVO0FBQzFCO0FBQ0E7QUFDQSxzQkFBc0IsSUFBcUM7QUFDM0QsZ0VBQWdFLFlBQVk7QUFDNUU7QUFDQTtBQUNBO0FBQ0EsY0FBYyxJQUFxQztBQUNuRCx1Q0FBdUMsSUFBSTtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGtDQUFrQztBQUM5QyxZQUFZLHFEQUFxRCwwQkFBMEI7QUFDM0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEscURBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksa0NBQWtDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG1EQUFNLEVBQUUsdURBQVUsaUNBQWlDLHVEQUFVO0FBQzdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsb0RBQU87QUFDZjtBQUNBLHdCQUF3QixnQkFBZ0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsbURBQU0sQ0FBQyxtREFBTTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsbURBQU07QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksZ0RBQUc7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLElBQXFDO0FBQzlDLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsZ0VBQWU7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx1QkFBdUIsY0FBYztBQUNqRCw0QkFBNEIsc0RBQUs7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxLQUFxQztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsMEJBQTBCO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLG1EQUFNO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QyxxREFBUTtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLG1EQUFNO0FBQ3hCO0FBQ0E7QUFDQSxpQ0FBaUMsc0RBQVMsbUJBQW1CLG1EQUFNO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLG1EQUFNO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsd0RBQU87QUFDZjtBQUNBLFNBQVMsSUFBcUM7QUFDOUMsb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwyREFBYztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsbURBQU0sc0JBQXNCLHFEQUFRO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlEO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0Msc0RBQUs7QUFDckMsNENBQTRDLGtEQUFTO0FBQ3JELHdCQUF3Qix5QkFBeUI7QUFDakQ7QUFDQSxxR0FBcUcsbURBQU07QUFDM0c7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsbURBQU07QUFDakM7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLHVEQUFVO0FBQ25ELHdCQUF3QixnQkFBZ0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsc0RBQVM7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsS0FBbUIsS0FBSyx1REFBVTtBQUMxQztBQUNBO0FBQ0E7QUFDQSxZQUFZLG1EQUFNO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHFEQUFRO0FBQ3BCLDRCQUE0QixrREFBUztBQUNyQztBQUNBLGVBQWUsa0RBQVM7QUFDeEI7QUFDQSxRQUFRLG9EQUFPO0FBQ2Ysd0JBQXdCLGdCQUFnQjtBQUN4QyxpQkFBaUIsS0FBcUMsTUFBTSxxREFBUTtBQUNwRTtBQUNBO0FBQ0Esa0NBQWtDLHFEQUFRO0FBQzFDO0FBQ0EsNENBQTRDLGtEQUFTO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFxQyxNQUFNLHFEQUFRO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxxREFBUTtBQUMxQztBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0RBQU8sU0FBUyx1REFBVSxVQUFVLFlBQVk7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsbURBQU07QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHFEQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLElBQXFDO0FBQ25ELG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxvREFBTztBQUNmO0FBQ0E7QUFDQSxhQUFhLHVEQUFVO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsc0RBQUs7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCxtREFBTSxvQkFBb0IsbURBQU0sV0FBVyxzREFBUztBQUN6RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDRCQUE0QjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isb0RBQU87QUFDN0I7QUFDQTtBQUNBLHdCQUF3Qiw4QkFBOEI7QUFDdEQsb0JBQW9CLHNCQUFzQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxvREFBTztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IscURBQVE7QUFDeEI7QUFDQTtBQUNBLGdCQUFnQixvREFBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtEQUErRCxLQUFLO0FBQ3BFLHFCQUFxQixrQkFBa0IsbURBQVUsY0FBYztBQUMvRDtBQUNBLHlCQUF5QixzREFBUztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsY0FBYztBQUNoRDtBQUNBLHdCQUF3QixjQUFjO0FBQ3RDO0FBQ0E7QUFDQSxpQ0FBaUMsY0FBYztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE1BQU07QUFDekI7QUFDQTtBQUNBLGtCQUFrQixjQUFjO0FBQ2hDO0FBQ0E7QUFDQSxrQkFBa0IsTUFBTTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzQ0FBc0Msb0RBQU87QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQsMEJBQTBCLElBQUk7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx1REFBVTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsSUFDUztBQUN6QixpRUFBaUUsSUFBSTtBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLHNEQUFLO0FBQ2xDO0FBQ0EsWUFBWSxnREFBRztBQUNmO0FBQ0E7QUFDQSwrREFBK0Q7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksZ0RBQUc7QUFDUDtBQUNBO0FBQ0EsWUFBWSxlQUFlO0FBQzNCO0FBQ0EsbUNBQW1DLGtEQUFTO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQSxnQkFBZ0IsbURBQU07QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG1EQUFNO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QiwyQ0FBRTtBQUMzQjtBQUNBLGdDQUFnQztBQUNoQyxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0Esc0JBQXNCO0FBQ3RCLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHVEQUFVO0FBQ3ZCLDRDQUE0QztBQUM1QztBQUNBLGtDQUFrQyxxREFBUTtBQUMxQyxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLHFCQUFxQixJQUFxQztBQUMxRDtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxxQkFBcUIsS0FBcUM7QUFDMUQ7QUFDQSxtQ0FBbUMsdURBQVU7QUFDN0M7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLHVEQUFVO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixJQUFxQztBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLG9CQUFvQixJQUFtQjtBQUN2QztBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsSUFBcUM7QUFDbkU7QUFDQSwrQ0FBK0MsV0FBVztBQUMxRDtBQUNBO0FBQ0EscUJBQXFCLEVBRUo7QUFDakI7QUFDQSxhQUFhO0FBQ2I7QUFDQSxxQkFBcUIsSUFBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixLQUFxQztBQUMxRCx1Q0FBdUMsS0FBSztBQUM1QztBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxxQkFBcUIsSUFBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixLQUFxQztBQUMxRCx1Q0FBdUMsS0FBSztBQUM1QztBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLEtBQXFDO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixJQUFxQztBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixJQUFnRTtBQUN4RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLElBQXFDO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLElBQWdFO0FBQ3hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsSUFBcUM7QUFDL0Q7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLHFCQUFxQixLQUFxQztBQUMxRCxvRUFBb0UsWUFBWTtBQUNoRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsb0RBQU87QUFDZix5REFBeUQsb0RBQU87QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksbUJBQW1CO0FBQy9CLFNBQVMsS0FBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxrREFBUyxtQkFBbUI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0EsWUFBWSxxREFBUTtBQUNwQjtBQUNBLGdCQUFnQixtREFBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQUs7QUFDdEI7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBVTtBQUNsQjtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIscURBQVE7QUFDbEMsdUJBQXVCLHNEQUFLO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isb0RBQU8sY0FBYyxtREFBTTtBQUNuRDtBQUNBO0FBQ0EsNkJBQTZCLG9EQUFPO0FBQ3BDO0FBQ0E7QUFDQSxvQ0FBb0MsbURBQU07QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsbURBQU07QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixJQUFxQztBQUMvRCxnRUFBZ0UsV0FBVztBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixJQUFxQztBQUN2RCx3REFBd0QsV0FBVztBQUNuRTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxtQ0FBbUMsa0ZBQWtGO0FBQ2pJO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGtDQUFrQztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLEtBQXFDO0FBQzlEO0FBQ0EsK0NBQStDLDBCQUEwQjtBQUN6RSwrQ0FBK0MsK0JBQStCO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsdUJBQXVCO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLElBQXFDO0FBQy9ELDhEQUE4RCxZQUFZO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwwQ0FBMEM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksSUFBOEU7QUFDMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsaURBQUksVUFBVSwyREFBYztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsS0FBcUM7QUFDOUQsZ0VBQWdFLFdBQVc7QUFDM0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLEtBQXFDO0FBQzFELG9FQUFvRSxXQUFXO0FBQy9FLHlDQUF5QyxlQUFlO0FBQ3hELHlDQUF5QyxlQUFlO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsT0FBTztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLEtBQXFDO0FBQzFELDREQUE0RCxnQ0FBZ0M7QUFDNUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IscUNBQXFDO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixLQUFLLEdBQUcsYUFBYTtBQUM5QztBQUNBLFFBQVEsSUFBZ0U7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxLQUFLLEdBQUcsYUFBYTtBQUNyRDtBQUNBO0FBQ0EseUJBQXlCLDZDQUE2QyxJQUFJLEtBQUs7QUFDL0U7QUFDQTtBQUNBO0FBQ0EsUUFBUSxJQUFnRTtBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLEtBQXdDLEVBQUUsRUFHN0M7QUFDTCxRQUFRLEtBQTBDLEVBQUUsRUFHL0M7QUFDTCxTQUFTLEtBQXFDO0FBQzlDO0FBQ0Esb0NBQW9DLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLHNCQUFzQjtBQUNyRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsb0JBQW9CO0FBQy9CO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiwwREFBYTtBQUNoQztBQUNBLFFBQVEsSUFBZ0U7QUFDeEU7QUFDQTtBQUNBLFlBQVksbVRBQW1ULDZDQUFJLDJFQUEyRTtBQUM5WSwyRUFBMkU7QUFDM0U7QUFDQSxxSkFBcUosS0FBcUM7QUFDMUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsdUJBQXVCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsSUFBcUM7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsSUFBcUM7QUFDL0QsMERBQTBELFlBQVk7QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsWUFBWTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLFlBQVk7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixzREFBc0Q7QUFDdEUsWUFBWSxLQUdnQiwyQkFBMkIsRUFNOUM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QywyREFBYztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksSUFBZ0U7QUFDNUU7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHlCQUF5QjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixxQkFBcUI7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsbUNBQW1DO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxrREFBUztBQUM5QyxxQ0FBcUMsa0RBQVM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsS0FBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQywwQkFBMEI7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix3QkFBd0I7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiwyREFBYztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLGtEQUFTO0FBQ3RDO0FBQ0EseUJBQXlCLDJEQUFjO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsaUVBQWlFO0FBQy9FLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsS0FBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQSxhQUFhLElBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixJQUFxQztBQUN0RDtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsSUFBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLElBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsSUFBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixZQUFZO0FBQ3BDLHdCQUF3QixnQkFBZ0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsMkRBQWM7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsSUFBcUM7QUFDbEU7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLElBQXFDO0FBQ2xFO0FBQ0E7QUFDQSw2QkFBNkIsSUFBcUM7QUFDbEU7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLElBQXFDO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLElBQXFDO0FBQzlEO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixJQUFxQztBQUM5RDtBQUNBO0FBQ0EseUJBQXlCLElBQXFDO0FBQzlEO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixJQUFxQztBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsSUFBZ0U7QUFDcEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLDZCQUE2QjtBQUNuRDtBQUNBO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDJEQUFjO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixJQUFxQztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixJQUFxQztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixJQUFxQztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLElBQWdFO0FBQ3BGO0FBQ0E7QUFDQSxxQkFBcUIsSUFBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QywyREFBYztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLElBQXFDO0FBQ2xEO0FBQ0EsdUJBQXVCLDJEQUFjO0FBQ3JDO0FBQ0E7QUFDQSx1QkFBdUIsMkRBQWM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4REFBYTtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhEQUFhO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsdUJBQXVCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsa0RBQVM7QUFDNUIsbUJBQW1CLGtEQUFTO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGtCQUFrQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEMseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0EseUJBQXlCLFNBQVM7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsS0FBcUM7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsaUJBQWlCO0FBQ3pDO0FBQ0EseUJBQXlCLFNBQVM7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLFNBQVM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixrREFBUztBQUMzQjtBQUNBO0FBQ0Esc0NBQXNDLFFBQVE7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsNENBQTRDO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIscUJBQXFCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZ0NBQWdDO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwwRUFBMEU7QUFDMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsK0JBQStCO0FBQy9DO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0JBQW9CO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBLGdCQUFnQixrQ0FBa0M7QUFDbEQ7QUFDQTtBQUNBLFlBQVksMkRBQWM7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksSUFBZ0U7QUFDNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIscUJBQXFCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixnQkFBZ0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLG9EQUFPLFNBQVMsb0RBQU87QUFDL0Isd0JBQXdCLGdCQUFnQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsU0FBUztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHFEQUFRO0FBQ2hCO0FBQ0EsYUFBYSxLQUFxQztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixLQUFxQztBQUN0RCw0RUFBNEUsZUFBZTtBQUMzRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFxQztBQUNsRCw2Q0FBNkMsZUFBZTtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixvRUFBb0UscURBQXFEO0FBQ3pJO0FBQ0EsY0FBYyx1Q0FBdUM7QUFDckQ7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxLQUFxQztBQUMvRTtBQUNBLGtCQUFrQixDQUFjO0FBQ2hDLDZDQUE2QyxLQUFxQztBQUNsRjtBQUNBLGtCQUFrQixDQUFjO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixLQUFxQztBQUMzRCxzRUFBc0UsY0FBYztBQUNwRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLElBQXFDO0FBQ25FLCtFQUErRSxjQUFjO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxnRUFBZ0Usa0JBQWtCLHNCQUFzQjtBQUN4RyxnQkFBZ0IsMkRBQTJEO0FBQzNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLHFCQUFxQjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCxLQUFLLFFBQVEsV0FBVztBQUNoRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkseUNBQXlDO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIscUJBQXFCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtHQUFrRyxLQUFLLDBDQUEwQztBQUNqSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlCQUF5QixLQUFxQyxpQkFBaUIsQ0FBUztBQUN4RixxQkFBcUIsS0FBcUMsYUFBYSxDQUFTO0FBQ2hGLHdCQUF3QixLQUFxQyxnQkFBZ0IsQ0FBUztBQUN0Rix1QkFBdUIsS0FBcUMsZUFBZSxDQUFTO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRCxrREFBUztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLEtBQUs7QUFDN0Isd0JBQXdCLHVCQUF1QjtBQUMvQztBQUNBLFVBQVUscURBQVEsU0FBUyxzREFBSyxTQUFTLHVEQUFVO0FBQ25ELGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHFEQUFRO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLEtBQXFDLG1DQUFtQyxDQUFZO0FBQzFHO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xELDREQUE0RCxLQUFLO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsc0JBQXNCO0FBQ3BDLHNCQUFzQixxREFBUTtBQUM5QiwwQkFBMEIsMkRBQWM7QUFDeEM7QUFDQSxZQUFZLHFEQUFRO0FBQ3BCO0FBQ0E7QUFDQSxnQkFBZ0Isd0RBQU8sWUFBWSxvREFBTztBQUMxQyx3QkFBd0IsbURBQU0sR0FBRztBQUNqQztBQUNBLDBCQUEwQiwyREFBYztBQUN4QztBQUNBO0FBQ0E7QUFDQSxzQkFBc0IscURBQVE7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixxREFBUTtBQUMxQjtBQUNBLHNCQUFzQix1REFBVTtBQUNoQztBQUNBO0FBQ0EsU0FBUyxLQUFxQywwREFBMEQsd0RBQU87QUFDL0csZUFBZSxzREFBSztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsd0RBQU87QUFDbEIsVUFBVSxtREFBTSxHQUFHO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGtDQUFrQztBQUM5QywyREFBMkQ7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixvREFBTztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsS0FBcUMsa0RBQWtELG9EQUFPO0FBQ2pIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsb0RBQU87QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLG9EQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksWUFBWTtBQUN4QjtBQUNBO0FBQ0E7QUFDQSxhQUFhLG9EQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsdURBQVU7QUFDdkIscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixpQkFBaUI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsMkRBQWM7QUFDOUM7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLDJEQUFjO0FBQzFDO0FBQ0EscUJBQXFCLGlEQUFJO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLG9EQUFPO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHdEQUFXO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixrREFBUztBQUNoQztBQUNBO0FBQ0E7QUFDQSxhQUFhLGtEQUFTO0FBQ3RCLGNBQWMsa0RBQVM7QUFDdkIsZUFBZSxrREFBUztBQUN4QixlQUFlLGtEQUFTO0FBQ3hCLGVBQWUsa0RBQVM7QUFDeEIsY0FBYyxrREFBUztBQUN2QixvQkFBb0Isa0RBQVM7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBLFNBQVMsRUFFSjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxvREFBTztBQUMxQztBQUNBLGlEQUFpRCwyQ0FBRTtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksa0JBQWtCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixrQkFBa0I7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixrQkFBa0I7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsd0RBQU87QUFDNUIsU0FBUyxJQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQSxZQUFZLFFBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhEQUFhO0FBQ3JCLHdHQUF3RyxLQUFxQyxJQUFJLGdFQUFlLG1CQUFtQixDQUFjO0FBQ2pNLFFBQVEsOERBQWE7QUFDckI7QUFDQSxZQUFZLHNEQUFTO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsS0FBcUM7QUFDMUQ7QUFDQSx1Q0FBdUMsS0FBSztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFVO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxxREFBUTtBQUNyQixhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLElBQWdFO0FBQzVFO0FBQ0E7QUFDQSw4QkFBOEIsMERBQVM7QUFDdkMsYUFBYSxJQUFxQztBQUNsRDtBQUNBO0FBQ0E7QUFDQSxjQUFjLEtBQXFDO0FBQ25ELDJEQUEyRCxtREFBbUQ7QUFDOUc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixJQUFxQztBQUMxRDtBQUNBO0FBQ0Esd0JBQXdCLG1DQUFtQztBQUMzRCx3QkFBd0Isd0RBQXdEO0FBQ2hGLDZDQUE2QyxtREFBTSxDQUFDLG1EQUFNO0FBQzFEO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxxQkFBcUIsSUFBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsNkNBQUk7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsSUFBZ0M7QUFDeEM7QUFDQSxRQUFRLDhEQUFhO0FBQ3JCO0FBQ0EsUUFBUSw4REFBYTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBcUMsOENBQThDLDZDQUFJO0FBQ2hHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLEtBQXFDO0FBQzNFO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixzREFBSztBQUNyQjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsQ0FLRDtBQUNUO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLHVCQUF1QixnRUFBZTtBQUN0QyxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVMsRUFTSjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLDBEQUFTLENBQUMsd0RBQU87QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyx1REFBVTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsdURBQVU7QUFDckI7O0FBRUE7QUFDQTtBQUNBLFdBQVcseURBQVU7QUFDckIsQ0FBQzs7QUFFRDtBQUNBLDZDQUE2QyxPQUFPO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxJQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLElBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLElBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixvREFBTztBQUN6Qiw0REFBNEQsa0JBQWtCO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG9EQUFPLFNBQVMsdURBQVU7QUFDMUMsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBLGtCQUFrQixJQUFxQztBQUN2RCx1Q0FBdUMsSUFBSTtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEtBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHNEQUFTO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHFEQUFRLHNCQUFzQixvREFBTztBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw4QkFBOEIsS0FBcUMsbUJBQW1CLENBQUU7QUFDeEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRLE1BQXdDO0FBQ2hEO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkIsMEJBQTBCO0FBQzFCLDBCQUEwQjtBQUMxQiwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixxREFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHNEQUFLO0FBQzFCO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDJEQUFVO0FBQy9CO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLDJEQUFVLDJCQUEyQjtBQUM3RDtBQUNBO0FBQ0EscUJBQXFCLDJEQUFVO0FBQy9CO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFELHNEQUFLO0FBQzFEO0FBQ0Esb0NBQW9DLGtEQUFTO0FBQzdDO0FBQ0E7QUFDQSw4QkFBOEIsa0RBQVM7QUFDdkMsb0RBQW9ELHNEQUFLO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xELGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EseUJBQXlCLGtCQUFrQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixtREFBTSxHQUFHO0FBQzFCO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBLGNBQWMsMkJBQTJCLHNCQUFzQjtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixxREFBUTtBQUN6QixnQ0FBZ0MsZ0JBQWdCLHNEQUFLLFNBQVM7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHVEQUFVO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsb0RBQU87QUFDcEIsYUFBYSxxREFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsaUJBQWlCO0FBQ3JDLFlBQVksdURBQVU7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWcyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbnNQbitCO0FBQzNWO0FBQ3VQOztBQUV6UjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsS0FBSztBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwREFBMEQsUUFBUTtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx3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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0JBQWtCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsY0FBYyxHQUFHLE9BQU87QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0JBQWtCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsc0JBQXNCO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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Q0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUI7QUFDakIsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQSwrQ0FBK0M7QUFDL0MsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMENBQTBDO0FBQzFDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMERBQTBEO0FBQzFEOztBQUVBO0FBQ0E7QUFDQSwwQkFBMEIsMENBQUs7QUFDL0I7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQLEtBQUssSUFBSSxlQUFlO0FBQ3hCOztBQUVBOztBQUVBO0FBQ0EsNERBQTRELFdBQVc7QUFDdkU7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLEVBQUUsMENBQUs7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVILEVBQUUsMENBQUs7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLElBQUksWUFBWTs7QUFFbkIsRUFBRSwwQ0FBSztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSCxFQUFFLDBDQUFLOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksRUFBRSwyQ0FBTTs7QUFFWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLGtCQUFrQiw2Q0FBUTtBQUMxQjtBQUNBLEdBQUc7O0FBRUgsaUJBQWlCLDZDQUFRO0FBQ3pCO0FBQ0EsR0FBRzs7QUFFSCx5QkFBeUIsNkNBQVE7QUFDakM7QUFDQSxHQUFHOztBQUVILHlCQUF5Qiw2Q0FBUTtBQUNqQztBQUNBLEdBQUc7O0FBRUgsdUJBQXVCLDZDQUFRO0FBQy9CO0FBQ0EsR0FBRzs7QUFFSCxvQkFBb0IsNkNBQVE7QUFDNUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBLG9CQUFvQiw2Q0FBUTtBQUM1QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSCxvQkFBb0IsNkNBQVE7QUFDNUI7QUFDQSxHQUFHO0FBQ0g7QUFDQSx5Q0FBeUMsNkNBQVE7QUFDakQ7QUFDQSxHQUFHOztBQUVILHdDQUF3Qyw2Q0FBUTtBQUNoRDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0Esd0NBQXdDLDZDQUFRO0FBQ2hEO0FBQ0E7QUFDQSxHQUFHOztBQUVILHFDQUFxQyw2Q0FBUTtBQUM3QztBQUNBLEdBQUc7O0FBRUgscUNBQXFDLDZDQUFRO0FBQzdDO0FBQ0EsR0FBRzs7QUFFSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNO0FBQ047O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsSUFBSSw2Q0FBUTtBQUNaO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU07QUFDTjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxJQUFJLDZDQUFRO0FBQ1o7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsRUFBRSwwQ0FBSztBQUNQO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVILEVBQUUsMENBQUs7QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTSw2Q0FBUTtBQUNkO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRzs7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QUNBOztBQUVBLHlEQUF5RDtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQixPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQixPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNB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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTs7QUFFVjs7QUFFQTtBQUNBLDZCQUE2QixRQUFRO0FBQ3JDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixRQUFRO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBLG1CQUFtQixNQUFNO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBLG1CQUFtQixNQUFNO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7O0FBRVY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDZCQUE2QixPQUFPO0FBQ3BDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVU7O0FBRVY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNOzs7QUFHTjtBQUNBOztBQUVBOztBQUVBO0FB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixRQUFRO0FBQ2pDO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVOztBQUVWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw2QkFBNkIsUUFBUTtBQUNyQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7O0FBRVY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTs7QUFFVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVOztBQUVWO0FBQ0EsTUFBTTs7QUFFTjtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isa0JBQWtCO0FBQ2xDO0FBQ0EsaUJBQWlCLFdBQVc7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixrQkFBa0I7QUFDbEMsZ0JBQWdCLGtCQUFrQjtBQUNsQztBQUNBLGlCQUFpQixXQUFXO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOzs7QUFHRjs7QUFFQSxDQUFDOzs7Ozs7Ozs7O0FDclVELENBQUM7QUFDRCxLQUFLLElBQTJCO0FBQ2hDO0FBQ0EscUNBQXFDLG1CQUFPLENBQUMsZ0RBQVEsR0FBRyxtQkFBTyxDQUFDLDREQUFjLEdBQUcsbUJBQU8sQ0FBQyw4Q0FBTyxHQUFHLG1CQUFPLENBQUMsb0RBQVUsR0FBRyxtQkFBTyxDQUFDLDhEQUFlO0FBQy9JO0FBQ0EsTUFBTSxFQU9KO0FBQ0YsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFF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O0FBQ0EsT0FBTztBQUNQO0FBQ0EsV0FBVyxxRUFBZTtBQUMxQixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLFdBQVcsbUVBQWlCO0FBQzVCLEdBQUc7QUFDSDtBQUNBO0FBQ0Esb0JBQW9CLHlFQUFlO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLFdBQVcscUVBQWU7QUFDMUIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUscUVBQWU7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUscUVBQWU7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUscUVBQWU7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxXQUFXLG1F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Q0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRCxXQUFXO0FBQzVEO0FBQ0EsaURBQWlELFdBQVc7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvRUFBb0U7QUFDcEUsd0JBQXdCLDRDQUE0QztBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2QkE7QUFDZ0Q7QUFDd0I7QUFDaEI7QUFDRTtBQUNjO0FBQ0E7QUFDVjtBQUNGO0FBQ0k7QUFDRjtBQUNKO0FBQ0E7QUFDOEI7QUFDcEM7QUFDa0I7QUFDVjtBQUNFO0FBQ0U7QUFDQTtBQUMwQjtBQUNBO0FBQ2dCO0FBQ1I7QUFDSjtBQUNJO0FBQ047QUFDQTtBQUNsQjtBQUNFO0FBQ2M7QUFDQTtBQUNWO0FBQ0Y7QUFDSTtBQUNGO0FBQ0o7QUFDQTtBQUNBO0FBQ0U7QUFDSTtBQUNGO0FBQ0k7QUFDTjtBQUNNO0FBQ047QUFDRjtBQUNFO0FBQ3BCO0FBQ007QUFDSjtBQUNNO0FBQ1E7QUFDVjtBQUNGO0FBQ0k7QUFDRjtBQUNGO0FBQ007QUFDUjtBQUNBO0FBQ1U7QUFDaEI7QUFDZ0I7QUFDWTtBQUNGO0FBQ1k7QUFDdEI7QUFDVjtBQUNRO0FBQ1E7QUFDUjtBQUNBO0FBQ0U7QUFDSjtBQUNWO0FBQ0Y7QUFDWTtBQUNJO0FBQ0Y7QUFDUjtBQUNnQjtBQUNsQjtBQUNFO0FBQ0U7QUFDUTtBQUNNO0FBQ0o7QUFDVjtBQUNKO0FBQzBDO0FBQ3RDO0FBQ0E7QUFDTjtBQUNRO0FBQ1I7QUFDYztBQUNOO0FBQ1E7QUFDaEI7QUFDd0I7QUFDVjtBQUNBO0FBQ1E7QUFDaEI7QUFDZ0I7QUFDdEI7QUFDRTtBQUNKO0FBQ0U7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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRCxXQUFXO0FBQzVEO0FBQ0EsaURBQWlELFdBQVc7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0VBQW9FO0FBQ3BFLHdCQUF3Qiw0Q0FBNEM7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUSxpRUFBaUU7QUFDcEYsV0FBVyxlQUFlO0FBQzFCLFdBQVcsZUFBZTtBQUMxQixXQUFXLFNBQVM7QUFDcEI7QUFDQSxXQUFXLFNBQVM7QUFDcEI7QUFDQSxhQUFhO0FBQ2IsWUFBWSxXQUFXO0FBQ3ZCLFlBQVksWUFBWTtBQUN4QixZQUFZLFlBQVk7QUFDeEIsWUFBWSxZQUFZO0FBQ3hCLFlBQVksWUFBWSxtREFBbUQ7QUFDM0UsWUFBWSxZQUFZLCtDQUErQztBQUN2RSxZQUFZLFlBQVkseURBQXlEO0FBQ2pGLFlBQVksWUFBWSwyREFBMkQ7QUFDbkYsWUFBWSxZQUFZO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLFNBQVMsNkRBQU8sQ0FBQywyREFBSztBQUN0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxU3dDO0FBQ2lCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxTQUFTO0FBQ3RCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxTQUFTLDREQUFNO0FBQ2Y7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdEJ3QztBQUNpQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxTQUFTO0FBQ3RCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxTQUFTLDREQUFNO0FBQ2Y7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMUJnRDtBQUNTO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsU0FBUztBQUN0QixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCwyQkFBMkIsZ0VBQVU7QUFDckMsNEJBQTRCLGdFQUFVO0FBQ3RDO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkNrRDtBQUNPO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsU0FBUztBQUN0QixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLDRCQUE0QixpRUFBVztBQUN2Qyw2QkFBNkIsaUVBQVc7QUFDeEM7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM5QmdEO0FBQ1M7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsU0FBUztBQUN0QixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLFNBQVMsZ0VBQVU7QUFDbkI7QUFDQSxHQUFHO0FBQ0g7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDaENnRTtBQUNQO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLFNBQVM7QUFDdEIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLDRCQUE0Qix3RUFBa0I7QUFDOUMsNkJBQTZCLHdFQUFrQjtBQUMvQztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQzNCc0Q7QUFDRztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLFNBQVM7QUFDdEIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCw4QkFBOEIsbUVBQWE7QUFDM0MsK0JBQStCLG1FQUFhO0FBQzVDO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcEN3QztBQUNpQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLFNBQVM7QUFDdEIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxpQkFBaUIsNERBQU07QUFDdkIsa0JBQWtCLDREQUFNO0FBQ3hCO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDOUJ3RDtBQUNDO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsU0FBUztBQUN0QixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLCtCQUErQixvRUFBYztBQUM3QyxnQ0FBZ0Msb0VBQWM7QUFDOUM7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM5QnNEO0FBQ0c7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxTQUFTO0FBQ3RCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLDhCQUE4QixtRUFBYTtBQUMzQywrQkFBK0IsbUVBQWE7QUFDNUM7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM1Q2tEO0FBQ087QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUSxpRUFBaUU7QUFDcEYsV0FBVyxlQUFlO0FBQzFCLGFBQWEsU0FBUztBQUN0QixZQUFZLFdBQVc7QUFDdkIsWUFBWSxZQUFZO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCw0QkFBNEIsaUVBQVc7QUFDdkMsNkJBQTZCLGlFQUFXO0FBQ3hDO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMUN3QztBQUNpQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLFNBQVM7QUFDdEIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLGlCQUFpQiw0REFBTTtBQUN2QixrQkFBa0IsNERBQU07QUFDeEI7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN6QndDO0FBQ2lCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxTQUFTO0FBQ3RCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxTQUFTLDREQUFNO0FBQ2Y7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdEJ3QztBQUNpQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsU0FBUztBQUN0QixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsU0FBUyw0REFBTTtBQUNmOzs7Ozs7Ozs7Ozs7Ozs7OztBQ3RCZ0Q7QUFDUztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxTQUFTO0FBQ3RCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLFNBQVMsZ0VBQVU7QUFDbkI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDM0JzRDtBQUNHO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxTQUFTO0FBQ3RCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxTQUFTLG1FQUFhO0FBQ3RCOzs7Ozs7Ozs7Ozs7Ozs7OztBQzVCb0Q7QUFDSztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxTQUFTO0FBQ3RCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLFNBQVMsa0VBQVk7QUFDckI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDM0JrRDtBQUNPO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLFNBQVM7QUFDdEIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLFNBQVMsaUVBQVc7QUFDcEI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMUJzRDtBQUNHO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLFNBQVM7QUFDdEIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLFNBQVMsbUVBQWE7QUFDdEI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMUJvRDtBQUNLO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLFNBQVM7QUFDdEIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsU0FBUyxrRUFBWTtBQUNyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMzQmdEO0FBQ1M7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVEsaUVBQWlFO0FBQ3BGLFdBQVcsZUFBZTtBQUMxQixhQUFhLFNBQVM7QUFDdEIsWUFBWSxXQUFXO0FBQ3ZCLFlBQVksWUFBWTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0QsaUJBQWlCO0FBQ3ZFO0FBQ0E7O0FBRWU7QUFDZixFQUFFLHNFQUFZO0FBQ2QsU0FBUyxnRUFBVTtBQUNuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyQ2dEO0FBQ1M7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsU0FBUztBQUN0QixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsU0FBUyxnRUFBVTtBQUNuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxQndDO0FBQ2lCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxTQUFTO0FBQ3RCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxTQUFTLDREQUFNO0FBQ2Y7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdEI4QztBQUNXO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLFNBQVM7QUFDdEIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLFNBQVMsK0RBQVM7QUFDbEI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzFCMEM7QUFDSTtBQUNXO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLFNBQVM7QUFDdEIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLFNBQVMsK0RBQVMsWUFBWSw2REFBTztBQUNyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMzQndDO0FBQ2lCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxTQUFTO0FBQ3RCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxTQUFTLDREQUFNO0FBQ2Y7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3RCd0M7QUFDQTtBQUNpQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RDtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxPQUFPLDREQUFNO0FBQ2I7QUFDQTtBQUNBLGFBQWEsNERBQU07QUFDbkI7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN6Q3dDO0FBQ2lCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxTQUFTO0FBQ3RCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxTQUFTLDREQUFNO0FBQ2Y7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdEJ3QztBQUNpQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsU0FBUztBQUN0QixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsYUFBYSw0REFBTTtBQUNuQjtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDeEJ3QztBQUNpQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsVUFBVTtBQUNyQixhQUFhLFNBQVM7QUFDdEIsWUFBWSxXQUFXO0FBQ3ZCLFlBQVksWUFBWTtBQUN4QixZQUFZLFlBQVk7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLGtCQUFrQjtBQUM5QztBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsa0JBQWtCO0FBQzlDO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsYUFBYSw0REFBTTtBQUNuQixrQkFBa0IsNERBQU07QUFDeEIsZ0JBQWdCLDREQUFNOztBQUV0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BEOEM7QUFDSjtBQUNlO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLFNBQVM7QUFDdEIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLFNBQVMsK0RBQVMsWUFBWSw2REFBTztBQUNyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMzQndDO0FBQ2lCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxNQUFNO0FBQ25CLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxhQUFhLDREQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMzQnNEO0FBQ0c7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLE1BQU07QUFDbkIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLFNBQVMsbUVBQWE7QUFDdEI7QUFDQSxHQUFHO0FBQ0g7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzNCd0Q7QUFDQTtBQUNDO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLE1BQU07QUFDbkIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLGFBQWEsb0VBQWM7QUFDM0I7QUFDQTtBQUNBO0FBQ0EsYUFBYSxvRUFBYztBQUMzQjtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDakN3QztBQUNpQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxNQUFNO0FBQ25CLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxhQUFhLDREQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDM0J3QztBQUNpQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsT0FBTyxnRUFBZ0U7QUFDbEYsYUFBYSxNQUFNO0FBQ25CLFlBQVksV0FBVztBQUN2QixZQUFZLFlBQVk7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsYUFBYSw0REFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMvQndDO0FBQ1c7QUFDTTtBQUNXO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRLGlFQUFpRTtBQUNwRixXQUFXLGVBQWU7QUFDMUIsYUFBYSxNQUFNO0FBQ25CLFlBQVksV0FBVztBQUN2QixZQUFZLFlBQVk7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1FQUFtRSxpQkFBaUI7QUFDcEY7QUFDQTtBQUNlO0FBQ2Y7QUFDQSxFQUFFLHNFQUFZO0FBQ2QsdUJBQXVCLCtFQUFpQjtBQUN4QyxxQkFBcUIsbUVBQVM7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSw0REFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDL0N3QztBQUNpQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxNQUFNO0FBQ25CLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxhQUFhLDREQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzNCd0M7QUFDeUI7QUFDOEI7QUFDckQ7QUFDZ0I7QUFDRCxDQUFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxRQUFRO0FBQ25CLGFBQWEsUUFBUTtBQUNyQixZQUFZLFdBQVc7QUFDdkIsWUFBWSxZQUFZO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWU7QUFDZixFQUFFLHNFQUFZO0FBQ2QscUJBQXFCLDREQUFNO0FBQzNCLE9BQU8sNkRBQU87QUFDZDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qix5RkFBK0I7QUFDdEQsZ0JBQWdCLHFFQUFlO0FBQy9COztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsNEVBQVU7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7QUNySGU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7QUNSZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7O0FDakJlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9CQUFvQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7OztBQ3pDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7QUNoQkE7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLFFBQVE7QUFDaEMsR0FBRztBQUNIO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixRQUFRO0FBQ2hDLEdBQUc7QUFDSDtBQUNBO0FBQ0EsY0FBYyxRQUFRO0FBQ3RCLEdBQUc7QUFDSDtBQUNBO0FBQ0Esb0JBQW9CLFFBQVE7QUFDNUIsR0FBRztBQUNIO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEIsR0FBRztBQUNIO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEIsR0FBRztBQUNIO0FBQ0E7QUFDQSxvQkFBb0IsUUFBUTtBQUM1QixHQUFHO0FBQ0g7QUFDQTtBQUNBLGNBQWMsUUFBUTtBQUN0QixHQUFHO0FBQ0g7QUFDQTtBQUNBLG9CQUFvQixRQUFRO0FBQzVCLEdBQUc7QUFDSDtBQUNBO0FBQ0EsY0FBYyxRQUFRO0FBQ3RCLEdBQUc7QUFDSDtBQUNBO0FBQ0Esb0JBQW9CLFFBQVE7QUFDNUIsR0FBRztBQUNIO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEIsR0FBRztBQUNIO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixHQUFHO0FBQ0g7QUFDQTtBQUNBLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsSUFBSTtBQUNKLHlDQUF5QyxPQUFPO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRUFBZSxjQUFjOzs7Ozs7Ozs7Ozs7Ozs7O0FDbEY0QztBQUN6RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTyxPQUFPLE1BQU07QUFDL0IsV0FBVyxPQUFPLE9BQU8sTUFBTTtBQUMvQixhQUFhLE1BQU0sSUFBSSxNQUFNO0FBQzdCLFlBQVksTUFBTSxJQUFJLE1BQU07QUFDNUI7QUFDQTtBQUNBLFFBQVEsMkVBQWlCO0FBQ3pCO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsUUFBUSwyRUFBaUI7QUFDekI7QUFDQTtBQUNBLEdBQUc7QUFDSCxZQUFZLDJFQUFpQjtBQUM3QjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsaUVBQWUsVUFBVTs7Ozs7Ozs7Ozs7Ozs7O0FDakN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUVBQWUsY0FBYzs7Ozs7Ozs7Ozs7Ozs7OztBQ1h3QztBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyx5RUFBZTtBQUN0QjtBQUNBO0FBQ0EsR0FBRztBQUNILFdBQVcseUVBQWU7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxTQUFTLHlFQUFlO0FBQ3hCO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsT0FBTyx5RUFBZTtBQUN0QjtBQUNBO0FBQ0EsR0FBRztBQUNILGFBQWEseUVBQWU7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxpRUFBZSxRQUFROzs7Ozs7Ozs7Ozs7Ozs7OztBQzlJd0M7QUFDYztBQUM3RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsNkVBQW1CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsT0FBTyxzRUFBWTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxXQUFXLHNFQUFZO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILFNBQVMsc0VBQVk7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsT0FBTyxzRUFBWTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxhQUFhLHNFQUFZO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsaUVBQWUsS0FBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqR3dDO0FBQ1I7QUFDUTtBQUNaO0FBQ047QUFDMUM7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEMsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixvRUFBYztBQUNoQyxjQUFjLGdFQUFVO0FBQ3hCLGtCQUFrQixvRUFBYztBQUNoQyxZQUFZLDhEQUFRO0FBQ3BCLFNBQVMsMkRBQUs7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUVBQWUsTUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMUJtQztBQUNoQjtBQUNpQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxpQkFBaUI7QUFDNUIsYUFBYSxNQUFNO0FBQ25CLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLFNBQVMsNkVBQU87QUFDcEI7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiw0REFBTTtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7Ozs7Ozs7Ozs7Ozs7OztBQy9DeUQ7QUFDekQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsUUFBUTtBQUNyQixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLFVBQVU7QUFDNUI7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLFdBQVc7QUFDN0I7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHNFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyRHlEO0FBQ0U7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWEsUUFBUTtBQUNyQixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLDZCQUE2QixtRUFBa0I7QUFDL0M7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3QnlEO0FBQ0k7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWEsUUFBUTtBQUNyQixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLCtCQUErQixxRUFBb0I7QUFDbkQ7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3QnlEO0FBQ0k7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWEsUUFBUTtBQUNyQixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLCtCQUErQixxRUFBb0I7QUFDbkQ7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDN0J3RDtBQUNoQjtBQUNpQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxpQkFBaUI7QUFDNUIsYUFBYSxNQUFNO0FBQ25CLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyw2RUFBTztBQUNwQjtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLDREQUFNO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQzlDeUQ7QUFDSDtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2Qsd0JBQXdCLDhEQUFhO0FBQ3JDO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDN0J5RDtBQUNJO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQSxhQUFhLFFBQVE7QUFDckIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLDhCQUE4QixxRUFBb0I7QUFDbEQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdkJ5RDtBQUNEO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFNBQVM7QUFDckI7QUFDQSxhQUFhLFFBQVE7QUFDckIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLDhCQUE4QixnRUFBZTtBQUM3Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2QnlEO0FBQ0Q7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWEsUUFBUTtBQUNyQixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLDBCQUEwQixnRUFBZTtBQUN6QztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQzdCeUQ7QUFDSjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLHVCQUF1Qiw2REFBWTtBQUNuQztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM1QjBDO0FBQ0Y7QUFDaUI7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsZUFBZTtBQUMxQixXQUFXLEtBQUs7QUFDaEIsYUFBYSxNQUFNO0FBQ25CLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2Qsb0JBQW9CLDREQUFNO0FBQzFCO0FBQ0EsU0FBUyw2REFBTztBQUNoQjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMvQjBDO0FBQ2U7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsZUFBZTtBQUMxQixhQUFhLE1BQU07QUFDbkIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLFNBQVMsNkRBQU87QUFDaEI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdEIwQztBQUNlO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGVBQWU7QUFDMUIsYUFBYSxNQUFNO0FBQ25CLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxTQUFTLDZEQUFPO0FBQ2hCOzs7Ozs7Ozs7Ozs7Ozs7OztBQ3RCMEM7QUFDZTtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxlQUFlO0FBQzFCLGFBQWEsTUFBTTtBQUNuQixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsU0FBUyw2REFBTztBQUNoQjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0QjBDO0FBQ2U7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsZUFBZTtBQUMxQixhQUFhLE1BQU07QUFDbkIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLFNBQVMsNkRBQU87QUFDaEI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdEIwQztBQUNlO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGVBQWU7QUFDMUIsYUFBYSxNQUFNO0FBQ25CLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxTQUFTLDZEQUFPO0FBQ2hCOzs7Ozs7Ozs7Ozs7Ozs7OztBQ3RCMEM7QUFDZTtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxlQUFlO0FBQzFCLGFBQWEsTUFBTTtBQUNuQixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsU0FBUyw2REFBTztBQUNoQjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0QjBDO0FBQ2U7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsZUFBZTtBQUMxQixhQUFhLE1BQU07QUFDbkIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLFNBQVMsNkRBQU87QUFDaEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0QndFO0FBQ047QUFDTTtBQUM5QjtBQUNuQztBQUNQO0FBQ0EsSUFBSSxxRkFBZTtBQUNuQixJQUFJLHFGQUFlO0FBQ25CLElBQUkscUZBQWU7QUFDbkIsSUFBSSxxRkFBZTtBQUNuQjtBQUNBLEVBQUUsa0ZBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixtREFBVztBQUMvQjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzlCcUY7QUFDMUI7QUFDTTtBQUNNO0FBQ047QUFDTTtBQUN4RTtBQUNPO0FBQ1A7QUFDQSxJQUFJLHFGQUFlO0FBQ25CLElBQUkscUZBQWU7QUFDbkIsSUFBSSxxRkFBZTtBQUNuQjtBQUNBLEVBQUUsa0ZBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUM7QUFDTTtBQUNQLEVBQUUsK0VBQVM7QUFDWCxlQUFlLGtGQUFZO0FBQzNCO0FBQ0E7QUFDQSxJQUFJLHFGQUFlO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQztBQUNNO0FBQ1AsRUFBRSwrRUFBUztBQUNYLGdCQUFnQixrRkFBWTtBQUM1QjtBQUNBO0FBQ0EsSUFBSSxxRkFBZTtBQUNuQix3RUFBd0UsYUFBYTtBQUNyRjtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUM7QUFDQTtBQUNBLEVBQUUsa0ZBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3RU07QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrQkFBa0IsSUFBSTtBQUN0QjtBQUNBLG9CQUFvQixJQUFJO0FBQ3hCO0FBQ0EsbUJBQW1CLElBQUk7QUFDdkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLElBQUk7QUFDOUI7QUFDQSw0QkFBNEIsSUFBSTtBQUNoQztBQUNBLDJCQUEyQixJQUFJO0FBQy9COztBQUVPO0FBQ1Asb0NBQW9DLEVBQUUsS0FBSyxFQUFFO0FBQzdDLHFCQUFxQixFQUFFLEtBQUssRUFBRTtBQUM5QixvQ0FBb0MsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0FBQ3JELHdCQUF3QixFQUFFLE1BQU0sRUFBRTtBQUNsQyx1Q0FBdUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFO0FBQzFEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQy9Dd0U7QUFDTjtBQUNvQjtBQUMxQjtBQUNNO0FBQ007QUFDbEM7QUFDYTtBQUM1QztBQUNQLEVBQUUsK0VBQVM7QUFDWCxlQUFlLGtGQUFZO0FBQzNCO0FBQ0E7QUFDQSxJQUFJLHFGQUFlO0FBQ25CLHdFQUF3RSxhQUFhO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUMsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQztBQUNBO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHVCQUF1QiwrREFBb0I7QUFDM0M7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQyw4Q0FBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMvRGdFO0FBQ047QUFDb0I7QUFDMUI7QUFDTTtBQUNNO0FBQ2xDO0FBQ2E7QUFDNUM7QUFDUCxFQUFFLCtFQUFTO0FBQ1gsZUFBZSxrRkFBWTtBQUMzQjtBQUNBO0FBQ0EsSUFBSSxxRkFBZTtBQUNuQix3RUFBd0UsYUFBYTtBQUNyRjtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUM7QUFDQTtBQUNBLEVBQUUsa0ZBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx1QkFBdUIsK0RBQW9CO0FBQzNDO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDLENBQUMsOENBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQy9EZ0U7QUFDTjtBQUNvQjtBQUMxQjtBQUNNO0FBQ007QUFDUztBQUMzQztBQUNZO0FBQ2xEO0FBQ0E7O0FBRUE7QUFDTztBQUNQLEVBQUUsK0VBQVM7QUFDWCxlQUFlLGtGQUFZO0FBQzNCO0FBQ0E7QUFDQSxJQUFJLHFGQUFlO0FBQ25CLHdFQUF3RSxhQUFhO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUMsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQyxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDO0FBQ0E7QUFDQSxFQUFFLGtGQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsOERBQW1CLENBQUMsK0RBQW9CO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLGlCQUFpQix1REFBWTtBQUM3QjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QiwwREFBZTtBQUN0QztBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQyw4Q0FBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDL0RnRTtBQUNOO0FBQ29CO0FBQzFCO0FBQ007QUFDTTtBQUNsQztBQUNZO0FBQytCO0FBQzFFO0FBQ1AsRUFBRSwrRUFBUztBQUNYLGVBQWUsa0ZBQVk7QUFDM0I7QUFDQTtBQUNBLElBQUkscUZBQWU7QUFDbkIsd0VBQXdFLGFBQWE7QUFDckY7QUFDQTtBQUNBO0FBQ0EsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQyxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUM7QUFDQTtBQUNBLEVBQUUsa0ZBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDhEQUFtQixDQUFDLG9FQUF5QjtBQUM5RDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxpQkFBaUIsdURBQVk7QUFDN0I7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsMERBQWU7QUFDdEM7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDLDhDQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzNEZ0U7QUFDTjtBQUNvQjtBQUMxQjtBQUNNO0FBQ007QUFDbEM7QUFDbUIsQ0FBQztBQUNuRDtBQUNQLEVBQUUsK0VBQVM7QUFDWCxlQUFlLGtGQUFZO0FBQzNCO0FBQ0E7QUFDQSxJQUFJLHFGQUFlO0FBQ25CLHdFQUF3RSxhQUFhO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUMsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQztBQUNBO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsYUFBYSxtRUFBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDLENBQUMsOENBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdkZnRTtBQUNOO0FBQ29CO0FBQzFCO0FBQ007QUFDTTtBQUNsQztBQUNhLENBQUM7QUFDN0M7QUFDUCxFQUFFLCtFQUFTO0FBQ1gsZUFBZSxrRkFBWTtBQUMzQjtBQUNBO0FBQ0EsSUFBSSxxRkFBZTtBQUNuQix3RUFBd0UsYUFBYTtBQUNyRjtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUM7QUFDQTtBQUNBLEVBQUUsa0ZBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx1QkFBdUIsK0RBQW9CO0FBQzNDO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDLENBQUMsOENBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMvRGdFO0FBQ047QUFDb0I7QUFDMUI7QUFDTTtBQUNNO0FBQ2xDO0FBQy9CO0FBQ1AsRUFBRSwrRUFBUztBQUNYLGVBQWUsa0ZBQVk7QUFDM0I7QUFDQTtBQUNBLElBQUkscUZBQWU7QUFDbkIsd0VBQXdFLGFBQWE7QUFDckY7QUFDQTtBQUNBO0FBQ0EsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQyxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDO0FBQ0E7QUFDQSxFQUFFLGtGQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxXQUFXO0FBQ1g7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQyw4Q0FBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3RGdFO0FBQ047QUFDb0I7QUFDMUI7QUFDTTtBQUNNO0FBQ2xDO0FBQ1c7QUFDMUM7QUFDUCxFQUFFLCtFQUFTO0FBQ1gsZUFBZSxrRkFBWTtBQUMzQjtBQUNBO0FBQ0EsSUFBSSxxRkFBZTtBQUNuQix3RUFBd0UsYUFBYTtBQUNyRjtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUM7QUFDQTtBQUNBLEVBQUUsa0ZBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQSxlQUFlLDZEQUFrQjtBQUNqQztBQUNBLGFBQWEsNkRBQWtCO0FBQy9CO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQyw4Q0FBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2Q2dFO0FBQ047QUFDb0I7QUFDMUI7QUFDTTtBQUNNO0FBQ2xDO0FBQ2U7QUFDOUM7QUFDUCxFQUFFLCtFQUFTO0FBQ1gsZUFBZSxrRkFBWTtBQUMzQjtBQUNBO0FBQ0EsSUFBSSxxRkFBZTtBQUNuQix3RUFBd0UsYUFBYTtBQUNyRjtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUM7QUFDQTtBQUNBLEVBQUUsa0ZBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtREFBUSxDQUFDLHVEQUFZO0FBQ2xDO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDLENBQUMsOENBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3RDZ0U7QUFDTjtBQUNvQjtBQUMxQjtBQUNNO0FBQ007QUFDbEM7QUFDWTtBQUNjO0FBQ3pEO0FBQ1AsRUFBRSwrRUFBUztBQUNYLGVBQWUsa0ZBQVk7QUFDM0I7QUFDQTtBQUNBLElBQUkscUZBQWU7QUFDbkIsd0VBQXdFLGFBQWE7QUFDckY7QUFDQTtBQUNBO0FBQ0EsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQyxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDO0FBQ0E7QUFDQSxFQUFFLGtGQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsOERBQW1CLENBQUMsa0VBQXVCO0FBQzVEO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLGlCQUFpQix1REFBWTtBQUM3QjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDLENBQUMsOENBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZEZ0U7QUFDTjtBQUNvQjtBQUMxQjtBQUNNO0FBQ007QUFDbEM7QUFDWTtBQUNjO0FBQ3pEO0FBQ1AsRUFBRSwrRUFBUztBQUNYLGVBQWUsa0ZBQVk7QUFDM0I7QUFDQTtBQUNBLElBQUkscUZBQWU7QUFDbkIsd0VBQXdFLGFBQWE7QUFDckY7QUFDQTtBQUNBO0FBQ0EsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQyxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDO0FBQ0E7QUFDQSxFQUFFLGtGQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsOERBQW1CLENBQUMsa0VBQXVCO0FBQzVEO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLGlCQUFpQix1REFBWTtBQUM3QjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDLENBQUMsOENBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2xEZ0U7QUFDTjtBQUNvQjtBQUMxQjtBQUNNO0FBQ007QUFDbEM7QUFDWTtBQUNjO0FBQ3pEO0FBQ1AsRUFBRSwrRUFBUztBQUNYLGVBQWUsa0ZBQVk7QUFDM0I7QUFDQTtBQUNBLElBQUkscUZBQWU7QUFDbkIsd0VBQXdFLGFBQWE7QUFDckY7QUFDQTtBQUNBO0FBQ0EsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQyxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDO0FBQ0E7QUFDQSxFQUFFLGtGQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsOERBQW1CLENBQUMsa0VBQXVCO0FBQzVEO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLGlCQUFpQix1REFBWTtBQUM3QjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQyw4Q0FBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkRnRTtBQUNOO0FBQ29CO0FBQzFCO0FBQ007QUFDTTtBQUNsQztBQUNZO0FBQ2M7QUFDekQ7QUFDUCxFQUFFLCtFQUFTO0FBQ1gsZUFBZSxrRkFBWTtBQUMzQjtBQUNBO0FBQ0EsSUFBSSxxRkFBZTtBQUNuQix3RUFBd0UsYUFBYTtBQUNyRjtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUM7QUFDQTtBQUNBLEVBQUUsa0ZBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw4REFBbUIsQ0FBQyxrRUFBdUI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsaUJBQWlCLHVEQUFZO0FBQzdCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQyw4Q0FBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDekRnRTtBQUNOO0FBQ29CO0FBQzFCO0FBQ007QUFDTTtBQUNsQztBQUNlO0FBQ1UsQ0FBQztBQUN6RDtBQUNQLEVBQUUsK0VBQVM7QUFDWCxlQUFlLGtGQUFZO0FBQzNCO0FBQ0E7QUFDQSxJQUFJLHFGQUFlO0FBQ25CLHdFQUF3RSxhQUFhO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUMsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQztBQUNBO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHVEQUFZO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxpQkFBaUIsbURBQVE7QUFDekI7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLGlCQUFpQixtREFBUTtBQUN6QjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxpQkFBaUIsbURBQVE7QUFDekI7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixtREFBUTtBQUN6QjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGFBQWEsc0VBQVk7QUFDekI7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDLDhDQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0R2dFO0FBQ047QUFDb0I7QUFDMUI7QUFDTTtBQUNNO0FBQ2xDO0FBQ2E7QUFDQSxDQUFDO0FBQzdDO0FBQ1AsRUFBRSwrRUFBUztBQUNYLGVBQWUsa0ZBQVk7QUFDM0I7QUFDQTtBQUNBLElBQUkscUZBQWU7QUFDbkIsd0VBQXdFLGFBQWE7QUFDckY7QUFDQTtBQUNBO0FBQ0EsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQyxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDO0FBQ0E7QUFDQSxFQUFFLGtGQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsK0RBQW9CLENBQUMsZ0ZBQXFDO0FBQzNFO0FBQ0EsaUJBQWlCLCtEQUFvQixDQUFDLGlFQUFzQjtBQUM1RDtBQUNBLGlCQUFpQiwrREFBb0IsQ0FBQyxnRkFBcUM7QUFDM0U7QUFDQSxpQkFBaUIsK0RBQW9CLENBQUMsbUZBQXdDO0FBQzlFO0FBQ0E7QUFDQSxpQkFBaUIsK0RBQW9CLENBQUMsb0VBQXlCO0FBQy9EO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDLENBQUMsOENBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2xEZ0U7QUFDTjtBQUNvQjtBQUMxQjtBQUNNO0FBQ007QUFDbEM7QUFDYTtBQUNBLENBQUM7QUFDN0M7QUFDUCxFQUFFLCtFQUFTO0FBQ1gsZUFBZSxrRkFBWTtBQUMzQjtBQUNBO0FBQ0EsSUFBSSxxRkFBZTtBQUNuQix3RUFBd0UsYUFBYTtBQUNyRjtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUM7QUFDQTtBQUNBLEVBQUUsa0ZBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiwrREFBb0IsQ0FBQyxnRkFBcUM7QUFDM0U7QUFDQSxpQkFBaUIsK0RBQW9CLENBQUMsaUVBQXNCO0FBQzVEO0FBQ0EsaUJBQWlCLCtEQUFvQixDQUFDLGdGQUFxQztBQUMzRTtBQUNBLGlCQUFpQiwrREFBb0IsQ0FBQyxtRkFBd0M7QUFDOUU7QUFDQTtBQUNBLGlCQUFpQiwrREFBb0IsQ0FBQyxvRUFBeUI7QUFDL0Q7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQyw4Q0FBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsRGdFO0FBQ047QUFDb0I7QUFDMUI7QUFDTTtBQUNNO0FBQ2xDO0FBQ1k7QUFDYztBQUNDO0FBQ1EsQ0FBQztBQUNuRTtBQUNQLEVBQUUsK0VBQVM7QUFDWCxlQUFlLGtGQUFZO0FBQzNCO0FBQ0E7QUFDQSxJQUFJLHFGQUFlO0FBQ25CLHdFQUF3RSxhQUFhO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUMsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQztBQUNBO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDhEQUFtQixDQUFDLCtEQUFvQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxpQkFBaUIsdURBQVk7QUFDN0I7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsYUFBYSwyRUFBaUIsQ0FBQyx1RUFBYTtBQUM1QztBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQywrQ0FBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkRnRTtBQUNOO0FBQ29CO0FBQzFCO0FBQ007QUFDTTtBQUNsQztBQUNXO0FBQ3dCLENBQUM7QUFDbkU7QUFDUCxFQUFFLCtFQUFTO0FBQ1gsZUFBZSxrRkFBWTtBQUMzQjtBQUNBO0FBQ0EsSUFBSSxxRkFBZTtBQUNuQix3RUFBd0UsYUFBYTtBQUNyRjtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUM7QUFDQTtBQUNBLEVBQUUsa0ZBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQSxlQUFlLDZEQUFrQjtBQUNqQztBQUNBLGFBQWEsNkRBQWtCO0FBQy9CO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDJFQUFpQjtBQUM5QjtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQyw4Q0FBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDekNnRTtBQUNOO0FBQ29CO0FBQzFCO0FBQ007QUFDTTtBQUNsQztBQUNlO0FBQ0ksQ0FBQztBQUNuRDtBQUNQLEVBQUUsK0VBQVM7QUFDWCxlQUFlLGtGQUFZO0FBQzNCO0FBQ0E7QUFDQSxJQUFJLHFGQUFlO0FBQ25CLHdFQUF3RSxhQUFhO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUMsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQztBQUNBO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsbURBQVEsQ0FBQyx1REFBWTtBQUN0QztBQUNBO0FBQ0EsaUJBQWlCLG1EQUFRO0FBQ3pCO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxhQUFhLG1FQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQyw4Q0FBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwR2dFO0FBQ047QUFDb0I7QUFDMUI7QUFDTTtBQUNNO0FBQ2xDO0FBQ1k7QUFDYztBQUNMO0FBQ1EsQ0FBQztBQUM3RDtBQUNQLEVBQUUsK0VBQVM7QUFDWCxlQUFlLGtGQUFZO0FBQzNCO0FBQ0E7QUFDQSxJQUFJLHFGQUFlO0FBQ25CLHdFQUF3RSxhQUFhO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUMsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQztBQUNBO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDhEQUFtQixDQUFDLCtEQUFvQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxpQkFBaUIsdURBQVk7QUFDN0I7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsYUFBYSx3RUFBYyxDQUFDLG9FQUFVO0FBQ3RDO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDLCtDQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkRnRTtBQUNOO0FBQ29CO0FBQzFCO0FBQ007QUFDTTtBQUNsQztBQUNzQztBQUNUO0FBQ0E7QUFDbkU7QUFDTztBQUNQLEVBQUUsK0VBQVM7QUFDWCxlQUFlLGtGQUFZO0FBQzNCO0FBQ0E7QUFDQSxJQUFJLHFGQUFlO0FBQ25CLHdFQUF3RSxhQUFhO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUMsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQztBQUNBO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG1EQUFRLENBQUMsdURBQVk7QUFDdEM7QUFDQSxpQkFBaUIsbURBQVE7QUFDekI7QUFDQSxXQUFXO0FBQ1g7QUFDQSxpQkFBaUIsbURBQVEsQ0FBQyx1REFBWTtBQUN0QztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx3QkFBd0Isd0VBQWM7QUFDdEM7QUFDQSxxQ0FBcUMsZ0VBQXFCO0FBQzFEO0FBQ0E7QUFDQSxlQUFlLHdFQUFjO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSx3RUFBYztBQUMzQjtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQyw4Q0FBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkVnRTtBQUNOO0FBQ29CO0FBQzFCO0FBQ007QUFDTTtBQUNsQztBQUNZO0FBQ2M7QUFDekQ7QUFDUCxFQUFFLCtFQUFTO0FBQ1gsZUFBZSxrRkFBWTtBQUMzQjtBQUNBO0FBQ0EsSUFBSSxxRkFBZTtBQUNuQix3RUFBd0UsYUFBYTtBQUNyRjtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUM7QUFDQTtBQUNBLEVBQUUsa0ZBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw4REFBbUIsQ0FBQyxpRUFBc0I7QUFDM0Q7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsaUJBQWlCLHVEQUFZO0FBQzdCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQyw4Q0FBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbERnRTtBQUNOO0FBQ29CO0FBQzFCO0FBQ007QUFDTTtBQUNFO0FBQ3BDO0FBQ1k7QUFDM0M7QUFDUCxFQUFFLCtFQUFTO0FBQ1gsZUFBZSxrRkFBWTtBQUMzQjtBQUNBO0FBQ0EsSUFBSSxxRkFBZTtBQUNuQix3RUFBd0UsYUFBYTtBQUNyRjtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUM7QUFDQTtBQUNBLEVBQUUsa0ZBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG1EQUFRLENBQUMsOERBQW1CLENBQUMsZ0VBQXFCO0FBQ25FO0FBQ0E7QUFDQSxpQkFBaUIsbURBQVEsQ0FBQyx1REFBWTtBQUN0QztBQUNBO0FBQ0EsaUJBQWlCLG1EQUFRO0FBQ3pCO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDLENBQUMsOENBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDckZnRTtBQUNOO0FBQ29CO0FBQzFCO0FBQ007QUFDTTtBQUNsQztBQUNLO0FBQ3BDO0FBQ1AsRUFBRSwrRUFBUztBQUNYLGVBQWUsa0ZBQVk7QUFDM0I7QUFDQTtBQUNBLElBQUkscUZBQWU7QUFDbkIsd0VBQXdFLGFBQWE7QUFDckY7QUFDQTtBQUNBO0FBQ0EsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQyxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDO0FBQ0E7QUFDQSxFQUFFLGtGQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsdURBQVk7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYLHVDQUF1QztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDLDhDQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNoRmdFO0FBQ047QUFDb0I7QUFDMUI7QUFDTTtBQUNNO0FBQ2xDO0FBQ1k7QUFDYztBQUN6RDtBQUNQLEVBQUUsK0VBQVM7QUFDWCxlQUFlLGtGQUFZO0FBQzNCO0FBQ0E7QUFDQSxJQUFJLHFGQUFlO0FBQ25CLHdFQUF3RSxhQUFhO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUMsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQztBQUNBO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDhEQUFtQixDQUFDLGlFQUFzQjtBQUMzRDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxpQkFBaUIsdURBQVk7QUFDN0I7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDLDhDQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsRGdFO0FBQ047QUFDb0I7QUFDMUI7QUFDTTtBQUNNO0FBQ2xDO0FBQ2U7QUFDSSxDQUFDO0FBQ25EO0FBQ1AsRUFBRSwrRUFBUztBQUNYLGVBQWUsa0ZBQVk7QUFDM0I7QUFDQTtBQUNBLElBQUkscUZBQWU7QUFDbkIsd0VBQXdFLGFBQWE7QUFDckY7QUFDQTtBQUNBO0FBQ0EsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQyxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDO0FBQ0E7QUFDQSxFQUFFLGtGQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixtREFBUSxDQUFDLHVEQUFZO0FBQ3RDO0FBQ0E7QUFDQSxpQkFBaUIsbURBQVE7QUFDekI7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGFBQWEsbUVBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDLDhDQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwR2dFO0FBQ047QUFDb0I7QUFDMUI7QUFDTTtBQUNNO0FBQ2xDO0FBQ1k7QUFDd0I7QUFDbkU7QUFDUCxFQUFFLCtFQUFTO0FBQ1gsZUFBZSxrRkFBWTtBQUMzQjtBQUNBO0FBQ0EsSUFBSSxxRkFBZTtBQUNuQix3RUFBd0UsYUFBYTtBQUNyRjtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUM7QUFDQTtBQUNBLEVBQUUsa0ZBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG1EQUFRLENBQUMsOERBQW1CLENBQUMsZ0VBQXFCO0FBQ25FO0FBQ0E7QUFDQSxpQkFBaUIsbURBQVEsQ0FBQyx1REFBWTtBQUN0QztBQUNBO0FBQ0EsaUJBQWlCLG1EQUFRO0FBQ3pCO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDLENBQUMsOENBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDckZnRTtBQUNOO0FBQ29CO0FBQzFCO0FBQ007QUFDTTtBQUNsQztBQUNLO0FBQ3BDO0FBQ1AsRUFBRSwrRUFBUztBQUNYLGVBQWUsa0ZBQVk7QUFDM0I7QUFDQTtBQUNBLElBQUkscUZBQWU7QUFDbkIsd0VBQXdFLGFBQWE7QUFDckY7QUFDQTtBQUNBO0FBQ0EsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQyxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDO0FBQ0E7QUFDQSxFQUFFLGtGQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsdURBQVk7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYLHVDQUF1QztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDLDhDQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2hGZ0U7QUFDTjtBQUNvQjtBQUMxQjtBQUNNO0FBQ007QUFDbEM7QUFDYTtBQUM1QztBQUNQLEVBQUUsK0VBQVM7QUFDWCxlQUFlLGtGQUFZO0FBQzNCO0FBQ0E7QUFDQSxJQUFJLHFGQUFlO0FBQ25CLHdFQUF3RSxhQUFhO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUMsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQztBQUNBO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQSxhQUFhLCtEQUFvQjtBQUNqQztBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQyw4Q0FBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwQ2dFO0FBQ047QUFDb0I7QUFDMUI7QUFDTTtBQUNNO0FBQ2xDO0FBQ2E7QUFDNUM7QUFDUCxFQUFFLCtFQUFTO0FBQ1gsZUFBZSxrRkFBWTtBQUMzQjtBQUNBO0FBQ0EsSUFBSSxxRkFBZTtBQUNuQix3RUFBd0UsYUFBYTtBQUNyRjtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUM7QUFDQTtBQUNBLEVBQUUsa0ZBQVk7QUFDZDtBQUNBO0FBQ0EsYUFBYSwrREFBb0I7QUFDakM7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDLENBQUMsOENBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcENnRTtBQUNOO0FBQ29CO0FBQzFCO0FBQ007QUFDTTtBQUNsQztBQUNzQztBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxFQUFFLCtFQUFTO0FBQ1gsZUFBZSxrRkFBWTtBQUMzQjtBQUNBO0FBQ0EsSUFBSSxxRkFBZTtBQUNuQix3RUFBd0UsYUFBYTtBQUNyRjtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUM7QUFDQTtBQUNBLEVBQUUsa0ZBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixtREFBUSxDQUFDLHVEQUFZO0FBQ3RDO0FBQ0EsaUJBQWlCLG1EQUFRO0FBQ3pCO0FBQ0EsV0FBVztBQUNYO0FBQ0EsaUJBQWlCLG1EQUFRLENBQUMsdURBQVk7QUFDdEM7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxnRUFBcUI7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDLDhDQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDeEVtQztBQUNFO0FBQ2tCO0FBQ0o7QUFDRTtBQUNWO0FBQ29CO0FBQ3hCO0FBQ29CO0FBQ1o7QUFDSjtBQUNOO0FBQ1U7QUFDWjtBQUNVO0FBQ29CO0FBQ3hCO0FBQ0o7QUFDZ0I7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ047QUFDQTtBQUNvQjtBQUNBO0FBQ1Y7QUFDVTtBQUNVO0FBQy9FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxTQUFTLG9EQUFTO0FBQ2xCLFNBQVMsc0RBQVU7QUFDbkIsU0FBUyx3RUFBbUI7QUFDNUIsU0FBUyxvRUFBaUI7QUFDMUIsU0FBUyxzRUFBa0I7QUFDM0IsU0FBUyw0REFBYTtBQUN0QixTQUFTLGdGQUF1QjtBQUNoQyxTQUFTLHdEQUFXO0FBQ3BCLFNBQVMsNEVBQXFCO0FBQzlCLFNBQVMsZ0VBQWU7QUFDeEIsU0FBUyw2REFBYTtBQUN0QixTQUFTLHVEQUFVO0FBQ25CLFNBQVMsaUVBQWU7QUFDeEIsU0FBUyxxREFBUztBQUNsQixTQUFTLCtEQUFjO0FBQ3ZCLFNBQVMsbUZBQXdCO0FBQ2pDLFNBQVMsMkRBQVk7QUFDckIsU0FBUyx1REFBVTtBQUNuQixTQUFTLHVFQUFrQjtBQUMzQixTQUFTLGlFQUFlO0FBQ3hCLFNBQVMsaUVBQWU7QUFDeEIsU0FBUyxpRUFBZTtBQUN4QixTQUFTLGlFQUFlO0FBQ3hCLFNBQVMsaUVBQWU7QUFDeEIsU0FBUywyREFBWTtBQUNyQixTQUFTLDJEQUFZO0FBQ3JCLFNBQVMsK0VBQXNCO0FBQy9CLFNBQVMsK0VBQXNCO0FBQy9CLFNBQVMscUVBQWlCO0FBQzFCLFNBQVMsK0VBQXNCO0FBQy9CLFNBQVMseUZBQTJCO0FBQ3BDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMUcwRztBQUN6RDtBQUMxQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLG1FQUFrQixhQUFhLHFFQUFvQixhQUFhLHFFQUFvQjtBQUMvRztBQUNBO0FBQ0E7QUFDTztBQUNQLDZCQUE2QiwwRUFBK0I7QUFDNUQ7QUFDTztBQUNQO0FBQ0E7QUFDQSxpQ0FBaUMsc0VBQTJCO0FBQzVEO0FBQ0EsaUNBQWlDLG9FQUF5QjtBQUMxRDtBQUNBLGlDQUFpQyxzRUFBMkI7QUFDNUQ7QUFDQSxpQ0FBaUMscUVBQTBCO0FBQzNEO0FBQ0Esa0RBQWtELFlBQVk7QUFDOUQ7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBLGlDQUFpQyw0RUFBaUM7QUFDbEU7QUFDQSxpQ0FBaUMsMEVBQStCO0FBQ2hFO0FBQ0EsaUNBQWlDLDRFQUFpQztBQUNsRTtBQUNBLGlDQUFpQywyRUFBZ0M7QUFDakU7QUFDQSxvREFBb0QsWUFBWTtBQUNoRTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQy9Hd0Q7QUFDc0M7QUFDbkM7QUFDRDtBQUNsQjtBQUNLO0FBQ3VCO0FBQzJCO0FBQzZCO0FBQ3pFO0FBQ007QUFDSztBQUNaO0FBQ2tCLENBQUM7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsNEJBQTRCLCtEQUFjO0FBQzFDOzs7Ozs7Ozs7O0FDdkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsTUFBTSxLQUEwQjs7QUFFaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBOzs7QUFHQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOzs7QUFHQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUlBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVMsWUFBWTs7QUFFckI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOztBQUVGLG9CQUFvQjs7QUFFcEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUYsOENBQThDO0FBQzlDO0FBQ0E7QUFDQSxtQkFBbUIsaUNBQWlDO0FBQ3BELEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxZQUFZO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxVQUFVLFNBQVM7QUFDbkI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVLFlBQVk7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFlBQVk7QUFDdkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxTQUFTO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGtDQUFrQyxJQUFJO0FBQ3RDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLDJCQUEyQjtBQUMzQjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0IsSUFBSTs7QUFFcEI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsMENBQTBDLElBQUk7QUFDOUM7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0YsVUFBVTs7QUFFVjtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBLE1BQU07QUFDTjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsYUFBYSwwQkFBMEI7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLFVBQVU7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsVUFBVTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLFNBQVMsNkJBQTZCO0FBQ2pEO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxpQkFBaUI7QUFDNUIsYUFBYSx3QkFBd0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxnQkFBZ0I7QUFDM0IsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsZ0JBQWdCO0FBQzNCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxXQUFXO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxlQUFlO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0EsaUNBQWlDLE1BQU07QUFDdkM7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBLGVBQWU7O0FBRWYsU0FBUzs7QUFFVDtBQUNBLFNBQVMsZ0NBQWdDO0FBQ3pDLFNBQVMsbUJBQW1CO0FBQzVCLFNBQVMscUNBQXFDO0FBQzlDLFNBQVM7QUFDVCxFQUFFOztBQUVGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ04sR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLDhEQUE4RDs7QUFFOUQ7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDOztBQUUzQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxRQUFROztBQUVSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLCtEQUErRDs7QUFFL0Q7QUFDQTtBQUNBO0FBQ0EsNENBQTRDOztBQUU1QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQzs7QUFFbkM7QUFDQTtBQUNBO0FBQ0EsK0NBQStDOztBQUUvQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7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QUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsNkRBQTZEOztBQUU3RDtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEM7O0FBRTFDO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7O0FBRUE7QUFDQTtBQUNBLFFBQVE7O0FBRVI7QUFDQTs7QUFFQSxvQ0FBb0M7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLFNBQVM7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVMsU0FBUztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSixTQUFTLFNBQVM7QUFDbEI7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZLFNBQVM7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGlEQUFpRDtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrREFBa0Q7QUFDbEQsV0FBVyw0Q0FBNEM7QUFDdkQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGlCQUFpQjtBQUM1QjtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBOztBQUVBLEVBQUU7Ozs7QUFJRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSxTQUFTLEdBQUc7QUFDWjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTs7OztBQUlBOztBQUVBOztBQUVBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUIsU0FBUztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTs7QUFFQSxlQUFlLFNBQVM7QUFDeEI7QUFDQTs7QUFFQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOzs7QUFHRjs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsTUFBTTtBQUNOOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQiwyQkFBMkIsd0JBQXdCOztBQUVuRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQSwyQ0FBMkM7QUFDM0MsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjs7QUFFbkI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1IsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEseUNBQXlDLHFDQUFxQztBQUM5RSxxQ0FBcUMsc0NBQXNDO0FBQzNFLHFDQUFxQyxxQ0FBcUM7QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxRQUFRO0FBQ1I7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFlBQVk7O0FBRVo7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVzs7QUFFWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7O0FBRVo7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFDQUFxQztBQUNyQyxzQ0FBc0M7QUFDdEMscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7Ozs7O0FBS0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQ0FBZ0M7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx3QkFBd0IsYUFBYTtBQUNyQyxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixTQUFTO0FBQzdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNILEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxJQUFJO0FBQ0o7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGOztBQUVBOzs7QUFHQTs7QUFFQTs7OztBQUlBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsZUFBZTs7QUFFZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUyxnQkFBZ0I7QUFDekI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCLGdCQUFnQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsRUFBRTtBQUNGOztBQUVBOztBQUVBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOzs7QUFHRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsR0FBRztBQUNIOztBQUVBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLE9BQU87QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBLHNCQUFzQjs7QUFFdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVMsT0FBTztBQUNoQjs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxXQUFXOztBQUVYOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGVBQWUsc0JBQXNCO0FBQ3JDO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGdFQUFnRTtBQUNoRTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFdBQVcsY0FBYzs7QUFFekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixtQkFBbUI7QUFDckM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQix1Q0FBdUM7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHVEQUF1RDtBQUMvRTs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLCtDQUErQztBQUNyRDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQsZUFBZSxvQ0FBb0M7QUFDbkQ7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGOztBQUVBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLEVBQUU7OztBQUdGOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSw0Q0FBNEMsT0FBTztBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4Qjs7QUFFOUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCOztBQUVB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QTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsOERBQThEO0FBQzNFO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVMsT0FBTzs7QUFFaEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQSxhQUFhOztBQUViO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBLElBQUk7O0FBRUo7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztB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QUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGtEQUFrRCwwQkFBMEI7QUFDNUU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxXQUFXLGdCQUFnQjtBQUMzQjtBQUNBOztB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QUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7Ozs7QUFLRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7Ozs7O0FBS0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0IsdUJBQXVCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0IsdUJBQXVCO0FBQ3pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxpQkFBaUIsdUJBQXVCO0FBQ3hDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOzs7OztBQUtGOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUEsa0NBQWtDO0FBQ2xDO0FBQ0E7O0FBRUEsS0FBSztBQUNMOztBQUVBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsTUFBTTtBQUNOOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBLFlBQVksU0FBUztBQUNyQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7Ozs7QUFLRjs7O0FBR0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHVDQUF1QztBQUN2QztBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsK0NBQStDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNENBQTRDO0FBQzVDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLEVBQUU7O0FBRUY7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isb0NBQW9DOztBQUVwRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUEsY0FBYzs7QUFFZDs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUosR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGNBQWM7QUFDZCxNQUFNO0FBQ047O0FBRUEsWUFBWTtBQUNaLElBQUk7QUFDSjtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCOztBQUVoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCOztBQUVoQixxREFBcUQ7QUFDckQ7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsbUJBQW1CO0FBQ25COztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHlEQUF5RDtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsVUFBVTtBQUNWOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUI7QUFDakIsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRDs7QUFFbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSwyQkFBMkI7O0FBRTNCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQ0FBa0M7O0FBRWxDO0FBQ0Esc0JBQXNCO0FBQ3RCLDJCQUEyQjs7QUFFM0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTs7QUFFUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1REFBdUQ7QUFDdkQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU07QUFDTjs7QUFFQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWOztBQUVBLG9EQUFvRDtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksdUJBQXVCO0FBQ25DLFlBQVksd0JBQXdCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOzs7OztBQUtGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDLGNBQWMsdUNBQXVDO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7Ozs7O0FBS0Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQSxFQUFFOzs7OztBQUtGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUk7QUFDSjs7QUFFQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLHFEQUFxRDtBQUNyRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxvQkFBb0I7O0FBRXBCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJO0FBQ0o7QUFDQSxFQUFFOztBQUVGO0FBQ0EsZUFBZSxxREFBcUQ7QUFDcEU7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQSxlQUFlLGtDQUFrQztBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLEdBQUc7QUFDSCxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7Ozs7QUFLRjs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxLQUFLLElBQTBDO0FBQy9DLENBQUMsaUNBQWtCLEVBQUUsbUNBQUU7QUFDdkI7QUFDQSxFQUFF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O0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDdEtEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDakVEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUNyTEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ2xFRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUNuSEQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUNqRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUN2TUQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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O0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDdElEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ2xMRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ2hLRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQzlHRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNEO0FBQ3REO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0Q7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUM5TEQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDekVEO0FBQ0E7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQyxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUM1R0Q7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUMvREQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUN6RkQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUN0RkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDeEZEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3BHRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLGdDQUFnQztBQUNoQywrQkFBK0I7QUFDL0IsK0JBQStCO0FBQy9CLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQSx5REFBeUQ7QUFDekQ7QUFDQSwwREFBMEQ7QUFDMUQ7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3BIRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDOUVEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQzFFRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDOUVEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUM5RUQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDMUVEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUM5RUQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQzlFRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDOUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDOUVEO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUN0SEQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUN4SEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUN4SEQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUN4SEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDeEZEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDM0VEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDM0hEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDdElEO0FBQ0E7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDcEVEO0FBQ0E7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUNuRUQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUNoRkQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDcEZEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3RIRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3JGRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3hJRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Ozs7Ozs7QUM5R0Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3JORDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDdEZEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDckZEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUNsSEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FB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QTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDdEZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3pIRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUNqTEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDNUZEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ2hFRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUM3REQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFD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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7Ozs7QUM3R0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsSUFBSSxLQUE0RDtBQUNoRSxJQUFJLENBQ3lCO0FBQzdCLENBQUMsc0JBQXNCOztBQUV2Qjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVB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QTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLFFBQVE7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFFBQVE7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixRQUFRO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixRQUFRO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixRQUFRO0FBQzVCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsd0JBQXdCLE9BQU87QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixPQUFPO0FBQzNCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixPQUFPO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CO0FBQ3BCLDJCQUEyQjtBQUMzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsVUFBVTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx5Q0FBeUMsT0FBTztBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDLE9BQU87QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiwrQkFBK0I7QUFDbkQ7QUFDQTs7QUFFQTtBQUNBLGVBQWUsT0FBTztBQUN0QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGNBQWM7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLGdCQUFnQjtBQUNwQztBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsbUNBQW1DLGlCQUFpQjtBQUNwRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBLFVBQVU7QUFDVjtBQUNBLFVBQVU7QUFDVjtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9CQUFvQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixjQUFjO0FBQ2xDO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsU0FBUztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtCQUFrQjtBQUNsQjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSw0R0FBNEc7QUFDNUc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLGlCQUFpQjtBQUNyQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLHVCQUF1QjtBQUMzQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0Msc0JBQXNCO0FBQzFEO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLHNCQUFzQjtBQUMxRDtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHdCQUF3QjtBQUN4Qjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLE9BQU87QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQ0FBcUMsT0FBTztBQUM1QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLE9BQU87QUFDNUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsT0FBTztBQUM1QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxPQUFPO0FBQzVDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsT0FBTztBQUM1Qzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUNBQXFDLE9BQU87QUFDNUM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EseUJBQXlCLG1CQUFtQjtBQUM1QztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0IsbUJBQW1CO0FBQ3pDO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esb0JBQW9CLFFBQVE7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLE9BQU87QUFDM0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUNwakxEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFD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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0Esb0NBQW9DO0FBQ3BDLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsb0JBQW9CLHlCQUF5QjtBQUM3Qzs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUEsc0JBQXNCLDBCQUEwQjtBQUNoRDs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxnQ0FBZ0M7QUFDaEMsUUFBUTtBQUNSO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCxVQUFVO0FBQ1Ysa0NBQWtDO0FBQ2xDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxNQUFNO0FBQ3BCLGNBQWMsT0FBTztBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE1BQU07QUFDcEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBLG9CQUFvQixpQkFBaUI7QUFDckM7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixpQkFBaUI7QUFDckM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsNkJBQTZCO0FBQzdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJCQUEyQjtBQUMzQjs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsd0JBQXdCLGlCQUFpQjtBQUN6Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQLE1BQU07QUFDTjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxzQkFBc0Isd0JBQXdCO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxzQkFBc0Isc0JBQXNCO0FBQzVDOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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O0FBQ1A7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQSxPQUFPOztBQUVQOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsa0NBQWtDLFFBQVE7QUFDMUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLDRCQUE0QixHQUFHLFFBQVE7O0FBRXZDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsaUJBQWlCO0FBQ3JDOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLCtCQUErQjs7QUFFL0I7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLG9CQUFvQiw2QkFBNkI7QUFDakQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDOztBQUVyQztBQUNBLCtDQUErQyxRQUFRO0FBQ3ZEOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTs7QUFFQSxvQkFBb0Isc0JBQXNCO0FBQzFDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsb0JBQW9CLHNCQUFzQjtBQUMxQzs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCLGdDQUFnQztBQUN2RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7O0FBRUE7QUFDQSxnQ0FBZ0M7O0FBRWhDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxnQ0FBZ0M7O0FBRWhDLHdDQUF3QyxPQUFPO0FBQy9DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWLDJDQUEyQzs7QUFFM0M7QUFDQSxVQUFVO0FBQ1YsMkNBQTJDOztBQUUzQztBQUNBLFVBQVU7QUFDViw2Q0FBNkM7O0FBRTdDO0FBQ0EsVUFBVTtBQUNWLHlDQUF5Qzs7QUFFekM7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0NBQWdDO0FBQ2hDLE1BQU07QUFDTiwrQkFBK0I7QUFDL0I7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0Esc0JBQXNCLGlDQUFpQztBQUN2RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDRCQUE0QjtBQUM1Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0QkFBNEIscUJBQXFCO0FBQ2pEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxNQUFNO0FBQ3BCLGNBQWMsT0FBTztBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE1BQU07QUFDcEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDRCQUE0QjtBQUM1Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpREFBaUQ7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WjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDBEQUEwRDtBQUMxRDtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsUUFBUTtBQUNSOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FB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QSxvQ0FBb0MsTUFBTTtBQUMxQztBQUNBLHdIQUF3SCxLQUFLO0FBQzdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsS0FBSztBQUN0QztBQUNBO0FBQ0Esb0VBQW9FO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQixtQkFBTyxDQUFDLHVEQUFL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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw4Q0FBOEM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBaUU7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsTUFBTTtBQUNsQyxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLElBQUksaUJBQWlCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ04sWUFBWSxnQkFBZ0IsK0RBQStELGtCQUFrQjtBQUM3RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNEQUFzRDtBQUN0RDtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsSUFBSTtB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O0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixNQUFNO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLElBQUk7QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsZUFBZTtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQ0FBa0Msb0NBQW9DLElBQUk7QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQLE1BQU07QUFDTix3Q0FBd0MsbUJBQW1CO0FBQzNEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0ZBQWtGLDZEQUE2RDtBQUMvSTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwrQ0FBK0M7QUFDL0M7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLFlBQVksOEJBQThCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSxpREFBaUQ7QUFDakQ7QUFDQTs7QUFFQSxtREFBbUQ7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUEsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsSUFBSSxrQkFBa0I7QUFDekI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwQ0FBMEM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QWdCO0FBQ3RHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvY29tcGlsZXItY29yZS9kaXN0L2NvbXBpbGVyLWNvcmUuZXNtLWJ1bmRsZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvY29tcGlsZXItZG9tL2Rpc3QvY29tcGlsZXItZG9tLmVzbS1idW5kbGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2RldnRvb2xzLWFwaS9saWIvZXNtL2NvbnN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2RldnRvb2xzLWFwaS9saWIvZXNtL2Vudi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9kZXZ0b29scy1hcGkvbGliL2VzbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9kZXZ0b29scy1hcGkvbGliL2VzbS9wcm94eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9kZXZ0b29scy1hcGkvbGliL2VzbS90aW1lLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL3JlYWN0aXZpdHkvZGlzdC9yZWFjdGl2aXR5LmVzbS1idW5kbGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL3J1bnRpbWUtY29yZS9kaXN0L3J1bnRpbWUtY29yZS5lc20tYnVuZGxlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9ydW50aW1lLWRvbS9kaXN0L3J1bnRpbWUtZG9tLmVzbS1idW5kbGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL3NoYXJlZC9kaXN0L3NoYXJlZC5lc20tYnVuZGxlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZWZvcm0vbXVsdGlzZWxlY3QvZGlzdC9tdWx0aXNlbGVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXBleGNoYXJ0cy9kaXN0L2FwZXhjaGFydHMuY29tbW9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2FkYXB0ZXJzL3hoci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2F4aW9zLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL0NhbmNlbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9DYW5jZWxUb2tlbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9pc0NhbmNlbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvQXhpb3MuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL0ludGVyY2VwdG9yTWFuYWdlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvYnVpbGRGdWxsUGF0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvY3JlYXRlRXJyb3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL2Rpc3BhdGNoUmVxdWVzdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvZW5oYW5jZUVycm9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9tZXJnZUNvbmZpZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvc2V0dGxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS90cmFuc2Zvcm1EYXRhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvZGVmYXVsdHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9lbnYvZGF0YS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvYmluZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvYnVpbGRVUkwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2NvbWJpbmVVUkxzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb29raWVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc0Fic29sdXRlVVJMLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc0F4aW9zRXJyb3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2lzVVJMU2FtZU9yaWdpbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvbm9ybWFsaXplSGVhZGVyTmFtZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvcGFyc2VIZWFkZXJzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9zcHJlYWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3ZhbGlkYXRvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL3V0aWxzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvYWVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvY2lwaGVyLWNvcmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9jb3JlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvZW5jLWJhc2U2NC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL2VuYy1iYXNlNjR1cmwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9lbmMtdXRmMTYuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9ldnBrZGYuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9mb3JtYXQtaGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvaG1hYy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvbGliLXR5cGVkYXJyYXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvbWQ1LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvbW9kZS1jZmIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9tb2RlLWN0ci1nbGFkbWFuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvbW9kZS1jdHIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9tb2RlLWVjYi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL21vZGUtb2ZiLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvcGFkLWFuc2l4OTIzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvcGFkLWlzbzEwMTI2LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvcGFkLWlzbzk3OTcxLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvcGFkLW5vcGFkZGluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL3BhZC16ZXJvcGFkZGluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL3Bia2RmMi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL3JhYmJpdC1sZWdhY3kuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9yYWJiaXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9yYzQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9yaXBlbWQxNjAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9zaGExLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvc2hhMjI0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvc2hhMjU2LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvc2hhMy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL3NoYTM4NC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL3NoYTUxMi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL3RyaXBsZWRlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL3g2NC1jb3JlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlcGljL3Z1ZS1kYXRlcGlja2VyL2Rpc3QvbWFpbi5jc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWVmb3JtL211bHRpc2VsZWN0L3RoZW1lcy9kZWZhdWx0LmNzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9hZGRMZWFkaW5nWmVyb3MvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL2Fzc2lnbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvY2xvbmVPYmplY3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL2RlZmF1bHRMb2NhbGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9mb3JtYXQvZm9ybWF0dGVycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvZm9ybWF0L2xpZ2h0Rm9ybWF0dGVycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvZm9ybWF0L2xvbmdGb3JtYXR0ZXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9nZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9nZXRVVENEYXlPZlllYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL2dldFVUQ0lTT1dlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL2dldFVUQ0lTT1dlZWtZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9nZXRVVENXZWVrL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9nZXRVVENXZWVrWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvcHJvdGVjdGVkVG9rZW5zL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL3JvdW5kaW5nTWV0aG9kcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvc2V0VVRDRGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9zZXRVVENJU09EYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL3NldFVUQ0lTT1dlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL3NldFVUQ1dlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL3N0YXJ0T2ZVVENJU09XZWVrL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9zdGFydE9mVVRDSVNPV2Vla1llYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL3N0YXJ0T2ZVVENXZWVrL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9zdGFydE9mVVRDV2Vla1llYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL3RvSW50ZWdlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2FkZC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2FkZEJ1c2luZXNzRGF5cy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2FkZERheXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9hZGRIb3Vycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2FkZElTT1dlZWtZZWFycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2FkZE1pbGxpc2Vjb25kcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2FkZE1pbnV0ZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9hZGRNb250aHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9hZGRRdWFydGVycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2FkZFNlY29uZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9hZGRXZWVrcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2FkZFllYXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYXJlSW50ZXJ2YWxzT3ZlcmxhcHBpbmcvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9jbGFtcC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2Nsb3Nlc3RJbmRleFRvL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vY2xvc2VzdFRvL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vY29tcGFyZUFzYy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2NvbXBhcmVEZXNjL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vY29uc3RhbnRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGF5c1RvV2Vla3MvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9kaWZmZXJlbmNlSW5CdXNpbmVzc0RheXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9kaWZmZXJlbmNlSW5DYWxlbmRhckRheXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9kaWZmZXJlbmNlSW5DYWxlbmRhcklTT1dlZWtZZWFycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJbkNhbGVuZGFySVNPV2Vla3MvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9kaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJbkNhbGVuZGFyUXVhcnRlcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9kaWZmZXJlbmNlSW5DYWxlbmRhcldlZWtzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluQ2FsZW5kYXJZZWFycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJbkRheXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9kaWZmZXJlbmNlSW5Ib3Vycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJbklTT1dlZWtZZWFycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJbk1pbnV0ZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9kaWZmZXJlbmNlSW5Nb250aHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9kaWZmZXJlbmNlSW5RdWFydGVycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJblNlY29uZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9kaWZmZXJlbmNlSW5XZWVrcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJblllYXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZWFjaERheU9mSW50ZXJ2YWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lYWNoSG91ck9mSW50ZXJ2YWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lYWNoTWludXRlT2ZJbnRlcnZhbC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VhY2hNb250aE9mSW50ZXJ2YWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lYWNoUXVhcnRlck9mSW50ZXJ2YWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lYWNoV2Vla09mSW50ZXJ2YWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lYWNoV2Vla2VuZE9mSW50ZXJ2YWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lYWNoV2Vla2VuZE9mTW9udGgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lYWNoV2Vla2VuZE9mWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VhY2hZZWFyT2ZJbnRlcnZhbC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VuZE9mRGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZW5kT2ZEZWNhZGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lbmRPZkhvdXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lbmRPZklTT1dlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lbmRPZklTT1dlZWtZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZW5kT2ZNaW51dGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lbmRPZk1vbnRoL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZW5kT2ZRdWFydGVyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZW5kT2ZTZWNvbmQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lbmRPZlRvZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZW5kT2ZUb21vcnJvdy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VuZE9mV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VuZE9mWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VuZE9mWWVzdGVyZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZm9ybWF0L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZm9ybWF0RGlzdGFuY2UvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9mb3JtYXREaXN0YW5jZVN0cmljdC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2Zvcm1hdERpc3RhbmNlVG9Ob3cvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9mb3JtYXREaXN0YW5jZVRvTm93U3RyaWN0L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZm9ybWF0RHVyYXRpb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9mb3JtYXRJU08vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9mb3JtYXRJU085MDc1L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZm9ybWF0SVNPRHVyYXRpb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9mb3JtYXRSRkMzMzM5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZm9ybWF0UkZDNzIzMS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2Zvcm1hdFJlbGF0aXZlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZnJvbVVuaXhUaW1lL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0RGF0ZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldERheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldERheU9mWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldERheXNJbk1vbnRoL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0RGF5c0luWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldERlY2FkZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldERlZmF1bHRPcHRpb25zL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0SG91cnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXRJU09EYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXRJU09XZWVrL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0SVNPV2Vla1llYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXRJU09XZWVrc0luWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldE1pbGxpc2Vjb25kcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldE1pbnV0ZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXRNb250aC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldE92ZXJsYXBwaW5nRGF5c0luSW50ZXJ2YWxzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0UXVhcnRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldFNlY29uZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXRUaW1lL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0VW5peFRpbWUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXRXZWVrL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0V2Vla09mTW9udGgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXRXZWVrWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldFdlZWtzSW5Nb250aC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldFllYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9ob3Vyc1RvTWlsbGlzZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaG91cnNUb01pbnV0ZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9ob3Vyc1RvU2Vjb25kcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaW50ZXJ2YWxUb0R1cmF0aW9uL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaW50bEZvcm1hdC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2ludGxGb3JtYXREaXN0YW5jZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzQWZ0ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc0JlZm9yZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzRGF0ZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzRXF1YWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc0V4aXN0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzRmlyc3REYXlPZk1vbnRoL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNGcmlkYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc0Z1dHVyZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzTGFzdERheU9mTW9udGgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc0xlYXBZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNNYXRjaC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzTW9uZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNQYXN0L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNTYW1lRGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNTYW1lSG91ci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzU2FtZUlTT1dlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1NhbWVJU09XZWVrWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzU2FtZU1pbnV0ZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzU2FtZU1vbnRoL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNTYW1lUXVhcnRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzU2FtZVNlY29uZC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzU2FtZVdlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1NhbWVZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNTYXR1cmRheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzU3VuZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNUaGlzSG91ci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzVGhpc0lTT1dlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1RoaXNNaW51dGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1RoaXNNb250aC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzVGhpc1F1YXJ0ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1RoaXNTZWNvbmQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1RoaXNXZWVrL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNUaGlzWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzVGh1cnNkYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1RvZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNUb21vcnJvdy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzVHVlc2RheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzVmFsaWQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1dlZG5lc2RheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzV2Vla2VuZC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzV2l0aGluSW50ZXJ2YWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1llc3RlcmRheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xhc3REYXlPZkRlY2FkZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xhc3REYXlPZklTT1dlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9sYXN0RGF5T2ZJU09XZWVrWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xhc3REYXlPZk1vbnRoL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbGFzdERheU9mUXVhcnRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xhc3REYXlPZldlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9sYXN0RGF5T2ZZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbGlnaHRGb3JtYXQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9sb2NhbGUvX2xpYi9idWlsZEZvcm1hdExvbmdGbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xvY2FsZS9fbGliL2J1aWxkTG9jYWxpemVGbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xvY2FsZS9fbGliL2J1aWxkTWF0Y2hGbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xvY2FsZS9fbGliL2J1aWxkTWF0Y2hQYXR0ZXJuRm4vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9sb2NhbGUvZW4tVVMvX2xpYi9mb3JtYXREaXN0YW5jZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xvY2FsZS9lbi1VUy9fbGliL2Zvcm1hdExvbmcvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9sb2NhbGUvZW4tVVMvX2xpYi9mb3JtYXRSZWxhdGl2ZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xvY2FsZS9lbi1VUy9fbGliL2xvY2FsaXplL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbG9jYWxlL2VuLVVTL19saWIvbWF0Y2gvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9sb2NhbGUvZW4tVVMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9tYXgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9taWxsaXNlY29uZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9taWxsaXNlY29uZHNUb0hvdXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbWlsbGlzZWNvbmRzVG9NaW51dGVzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbWlsbGlzZWNvbmRzVG9TZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbWluL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbWludXRlc1RvSG91cnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9taW51dGVzVG9NaWxsaXNlY29uZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9taW51dGVzVG9TZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbW9udGhzVG9RdWFydGVycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL21vbnRoc1RvWWVhcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9uZXh0RGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbmV4dEZyaWRheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL25leHRNb25kYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9uZXh0U2F0dXJkYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9uZXh0U3VuZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbmV4dFRodXJzZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbmV4dFR1ZXNkYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9uZXh0V2VkbmVzZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9QYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL1NldHRlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvY29uc3RhbnRzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0FNUE1NaWRuaWdodFBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9BTVBNUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0RhdGVQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvRGF5T2ZZZWFyUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0RheVBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9EYXlQZXJpb2RQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvRXJhUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0V4dGVuZGVkWWVhclBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9GcmFjdGlvbk9mU2Vjb25kUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0hvdXIwVG8xMVBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9Ib3VyMHRvMjNQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvSG91cjFUbzI0UGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0hvdXIxdG8xMlBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9JU09EYXlQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvSVNPVGltZXpvbmVQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvSVNPVGltZXpvbmVXaXRoWlBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9JU09XZWVrUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0lTT1dlZWtZZWFyUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0xvY2FsRGF5UGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0xvY2FsV2Vla1BhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9Mb2NhbFdlZWtZZWFyUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL01pbnV0ZVBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9Nb250aFBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9RdWFydGVyUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL1NlY29uZFBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9TdGFuZEFsb25lTG9jYWxEYXlQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvU3RhbmRBbG9uZU1vbnRoUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL1N0YW5kQWxvbmVRdWFydGVyUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL1RpbWVzdGFtcE1pbGxpc2Vjb25kc1BhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9UaW1lc3RhbXBTZWNvbmRzUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL1llYXJQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3V0aWxzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZUlTTy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlSlNPTi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3ByZXZpb3VzRGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcHJldmlvdXNGcmlkYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wcmV2aW91c01vbmRheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3ByZXZpb3VzU2F0dXJkYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wcmV2aW91c1N1bmRheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3ByZXZpb3VzVGh1cnNkYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wcmV2aW91c1R1ZXNkYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wcmV2aW91c1dlZG5lc2RheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3F1YXJ0ZXJzVG9Nb250aHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9xdWFydGVyc1RvWWVhcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9yb3VuZFRvTmVhcmVzdE1pbnV0ZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zZWNvbmRzVG9Ib3Vycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NlY29uZHNUb01pbGxpc2Vjb25kcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NlY29uZHNUb01pbnV0ZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zZXQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zZXREYXRlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2V0RGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2V0RGF5T2ZZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2V0RGVmYXVsdE9wdGlvbnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zZXRIb3Vycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NldElTT0RheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NldElTT1dlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zZXRJU09XZWVrWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NldE1pbGxpc2Vjb25kcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NldE1pbnV0ZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zZXRNb250aC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NldFF1YXJ0ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zZXRTZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2V0V2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NldFdlZWtZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2V0WWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N0YXJ0T2ZEYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdGFydE9mRGVjYWRlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3RhcnRPZkhvdXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdGFydE9mSVNPV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N0YXJ0T2ZJU09XZWVrWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N0YXJ0T2ZNaW51dGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdGFydE9mTW9udGgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdGFydE9mUXVhcnRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N0YXJ0T2ZTZWNvbmQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdGFydE9mVG9kYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdGFydE9mVG9tb3Jyb3cvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdGFydE9mV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N0YXJ0T2ZXZWVrWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N0YXJ0T2ZZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3RhcnRPZlllc3RlcmRheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N1Yi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N1YkJ1c2luZXNzRGF5cy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N1YkRheXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdWJIb3Vycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N1YklTT1dlZWtZZWFycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N1Yk1pbGxpc2Vjb25kcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N1Yk1pbnV0ZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdWJNb250aHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdWJRdWFydGVycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N1YlNlY29uZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdWJXZWVrcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N1YlllYXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vdG9EYXRlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vd2Vla3NUb0RheXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS95ZWFyc1RvTW9udGhzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20veWVhcnNUb1F1YXJ0ZXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9qcXVlcnkvZGlzdC9qcXVlcnkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fRGF0YVZpZXcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fSGFzaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19MaXN0Q2FjaGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fTWFwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX01hcENhY2hlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1Byb21pc2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fU2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1NldENhY2hlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1N0YWNrLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1N5bWJvbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19VaW50OEFycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1dlYWtNYXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlFYWNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5RmlsdGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5TGlrZUtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlNYXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlQdXNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5U29tZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc2NpaVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXNzaWduVmFsdWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXNzb2NJbmRleE9mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VBc3NpZ24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUFzc2lnbkluLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VBc3NpZ25WYWx1ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQ2xhbXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUNsb25lLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VDb25mb3Jtc1RvLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VDcmVhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUdldEFsbEtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUdldFRhZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzQXJndW1lbnRzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc0FycmF5QnVmZmVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc0RhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzRXF1YWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzRXF1YWxEZWVwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc01hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNNYXRjaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNOYXRpdmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzUmVnRXhwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc1NldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNUeXBlZEFycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VLZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VLZXlzSW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUx0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VUaW1lcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVRyaW0uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVVuYXJ5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VWYWx1ZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2FjaGVIYXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVBcnJheUJ1ZmZlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZUJ1ZmZlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZURhdGFWaWV3LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lUmVnRXhwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lU3ltYm9sLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lVHlwZWRBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5QXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weU9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5U3ltYm9scy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5U3ltYm9sc0luLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcmVKc0RhdGEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19kZWZpbmVQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbEFycmF5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbEJ5VGFnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2VxdWFsT2JqZWN0cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19mcmVlR2xvYmFsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldEFsbEtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0QWxsS2V5c0luLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldE1hcERhdGEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0TWF0Y2hEYXRhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldE5hdGl2ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRQcm90b3R5cGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0UmF3VGFnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFN5bWJvbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0U3ltYm9sc0luLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFRhZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRWYWx1ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNVbmljb2RlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hDbGVhci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoRGVsZXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hHZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaEhhcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoU2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2luaXRDbG9uZUFycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2luaXRDbG9uZUJ5VGFnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2luaXRDbG9uZU9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzS2V5YWJsZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc01hc2thYmxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzTWFza2VkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzUHJvdG90eXBlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzU3RyaWN0Q29tcGFyYWJsZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pdGVyYXRvclRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlQ2xlYXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlRGVsZXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2xpc3RDYWNoZUdldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVIYXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlU2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlQ2xlYXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVEZWxldGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVHZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVIYXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVTZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwVG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVDcmVhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlS2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVLZXlzSW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbm9kZVV0aWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fb2JqZWN0VG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fb3ZlckFyZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19yb290LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldENhY2hlQWRkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldENhY2hlSGFzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldFRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tDbGVhci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0RlbGV0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0dldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0hhcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja1NldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdHJpbmdUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3RvU291cmNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3RyaW1tZWRFbmRJbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL191bmljb2RlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2Nhc3RBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2Nsb25lLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvY2xvbmVEZWVwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvY2xvbmVEZWVwV2l0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2Nsb25lV2l0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2NvbmZvcm1zVG8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9lcS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2d0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZ3RlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcmd1bWVudHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheUJ1ZmZlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXlMaWtlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheUxpa2VPYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0Jvb2xlYW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0J1ZmZlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRGF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRWxlbWVudC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRW1wdHkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0VxdWFsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNFcXVhbFdpdGguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0Vycm9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNGaW5pdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0Z1bmN0aW9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNJbnRlZ2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNMZW5ndGguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc01hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzTWF0Y2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc01hdGNoV2l0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzTmFOLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNOYXRpdmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc05pbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzTnVsbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzTnVtYmVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNPYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc09iamVjdExpa2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1BsYWluT2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNSZWdFeHAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1NhZmVJbnRlZ2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNTZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1N0cmluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU3ltYm9sLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNUeXBlZEFycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNVbmRlZmluZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1dlYWtNYXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1dlYWtTZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9rZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gva2V5c0luLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbGFuZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2x0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbHRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvc3R1YkFycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvc3R1YkZhbHNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvRmluaXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9JbnRlZ2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9MZW5ndGguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b051bWJlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvUGxhaW5PYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b1NhZmVJbnRlZ2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC92YWx1ZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYWYuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItZHouanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXIta3cuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItbHkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItbWEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItc2EuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItdG4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXouanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm0uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm4tYmQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYnIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYnMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY2EuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3MuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3YuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3kuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUtYXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUtY2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZHYuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tYXUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tY2EuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tZ2IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4taWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4taWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4taW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tbnouanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tc2cuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMtZG8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMtbXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMtdXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZmEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZmkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZmlsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZvLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLWNhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLWNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2Z5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dvbS1kZXZhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dvbS1sYXRuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2d1LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hpLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2h1LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2h5LWFtLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2lkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2lzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2l0LWNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2l0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2phLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2p2LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2thLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2trLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ttLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2tuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2tvLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2t1LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2t5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2xiLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2xvLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2x0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2x2LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21lLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21pLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21rLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21sLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21zLW15LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21zLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL210LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL215LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25iLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25lLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25sLWJlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25sLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL29jLWxuYy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wYS1pbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wdC1ici5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9yby5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ydS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zaS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zay5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zcS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zci1jeXJsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3N2LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3N3LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90Zy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ay5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90bC1waC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90bGguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHpsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bS1sYXRuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91Zy1jbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ay5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ei1sYXRuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3V6LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3ZpLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3gtcHNldWRvLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3lvLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLWNuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLWhrLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLW1vLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLXR3LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbW9tZW50LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9wcm9jZXNzL2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3NlbGVjdDIvZGlzdC9qcy9zZWxlY3QyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlcGljL3Z1ZS1kYXRlcGlja2VyL2Rpc3QvbWFpbi5jc3M/M2JlYyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZWZvcm0vbXVsdGlzZWxlY3QvdGhlbWVzL2RlZmF1bHQuY3NzP2Q3YmUiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zdmctdnVlMy9kaXN0L3N2Zy12dWUuZXNtLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUvZGlzdC92dWUuZXNtLWJ1bmRsZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZTMtYXBleGNoYXJ0cy9kaXN0L3Z1ZTMtYXBleGNoYXJ0cy5jb21tb24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZTMtcmFkaWFsLXByb2dyZXNzL2Rpc3QvUmFkaWFsUHJvZ3Jlc3NCYXIuZXNtLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUzLXNtb290aC1zY3JvbGwvZGlzdC92dWUtc21vb3RoLXNjcm9sbC5taW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZXgvZGlzdC92dWV4LmVzbS1idW5kbGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AaGVhZGxlc3N1aS92dWUvZGlzdC9oZWFkbGVzc3VpLmRldi5janMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BoZWFkbGVzc3VpL3Z1ZS9kaXN0L2luZGV4LmNqcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZXBpYy92dWUtZGF0ZXBpY2tlci9kaXN0L3Z1ZS1kYXRlcGlja2VyLnVtZC5janMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWV1c2UvY29yZS9pbmRleC5janMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWV1c2UvY29yZS9ub2RlX21vZHVsZXMvQHZ1ZXVzZS9zaGFyZWQvaW5kZXguY2pzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVldXNlL2NvcmUvbm9kZV9tb2R1bGVzL3Z1ZS1kZW1pL2xpYi9pbmRleC5janMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FycmF5TGlrZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2suanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2dldFByb3RvdHlwZU9mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9QcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvUHJvcGVydHlLZXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNTdHJpbmcsIGh5cGhlbmF0ZSwgTk9PUCwgZXh0ZW5kLCBpc09iamVjdCwgTk8sIGlzQXJyYXksIG1ha2VNYXAsIGlzU3ltYm9sLCBFTVBUWV9PQkosIGNhcGl0YWxpemUsIGNhbWVsaXplIGFzIGNhbWVsaXplJDEsIFBhdGNoRmxhZ05hbWVzLCBzbG90RmxhZ3NUZXh0LCBpc09uLCBpc0J1aWx0SW5EaXJlY3RpdmUsIGlzUmVzZXJ2ZWRQcm9wLCB0b0hhbmRsZXJLZXkgfSBmcm9tICdAdnVlL3NoYXJlZCc7XG5leHBvcnQgeyBnZW5lcmF0ZUNvZGVGcmFtZSB9IGZyb20gJ0B2dWUvc2hhcmVkJztcblxuZnVuY3Rpb24gZGVmYXVsdE9uRXJyb3IoZXJyb3IpIHtcclxuICAgIHRocm93IGVycm9yO1xyXG59XHJcbmZ1bmN0aW9uIGRlZmF1bHRPbldhcm4obXNnKSB7XHJcbiAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgY29uc29sZS53YXJuKGBbVnVlIHdhcm5dICR7bXNnLm1lc3NhZ2V9YCk7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlQ29tcGlsZXJFcnJvcihjb2RlLCBsb2MsIG1lc3NhZ2VzLCBhZGRpdGlvbmFsTWVzc2FnZSkge1xyXG4gICAgY29uc3QgbXNnID0gKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8ICF0cnVlXHJcbiAgICAgICAgPyAobWVzc2FnZXMgfHwgZXJyb3JNZXNzYWdlcylbY29kZV0gKyAoYWRkaXRpb25hbE1lc3NhZ2UgfHwgYGApXHJcbiAgICAgICAgOiBjb2RlO1xyXG4gICAgY29uc3QgZXJyb3IgPSBuZXcgU3ludGF4RXJyb3IoU3RyaW5nKG1zZykpO1xyXG4gICAgZXJyb3IuY29kZSA9IGNvZGU7XHJcbiAgICBlcnJvci5sb2MgPSBsb2M7XHJcbiAgICByZXR1cm4gZXJyb3I7XHJcbn1cclxuY29uc3QgZXJyb3JNZXNzYWdlcyA9IHtcclxuICAgIC8vIHBhcnNlIGVycm9yc1xyXG4gICAgWzAgLyogRXJyb3JDb2Rlcy5BQlJVUFRfQ0xPU0lOR19PRl9FTVBUWV9DT01NRU5UICovXTogJ0lsbGVnYWwgY29tbWVudC4nLFxyXG4gICAgWzEgLyogRXJyb3JDb2Rlcy5DREFUQV9JTl9IVE1MX0NPTlRFTlQgKi9dOiAnQ0RBVEEgc2VjdGlvbiBpcyBhbGxvd2VkIG9ubHkgaW4gWE1MIGNvbnRleHQuJyxcclxuICAgIFsyIC8qIEVycm9yQ29kZXMuRFVQTElDQVRFX0FUVFJJQlVURSAqL106ICdEdXBsaWNhdGUgYXR0cmlidXRlLicsXHJcbiAgICBbMyAvKiBFcnJvckNvZGVzLkVORF9UQUdfV0lUSF9BVFRSSUJVVEVTICovXTogJ0VuZCB0YWcgY2Fubm90IGhhdmUgYXR0cmlidXRlcy4nLFxyXG4gICAgWzQgLyogRXJyb3JDb2Rlcy5FTkRfVEFHX1dJVEhfVFJBSUxJTkdfU09MSURVUyAqL106IFwiSWxsZWdhbCAnLycgaW4gdGFncy5cIixcclxuICAgIFs1IC8qIEVycm9yQ29kZXMuRU9GX0JFRk9SRV9UQUdfTkFNRSAqL106ICdVbmV4cGVjdGVkIEVPRiBpbiB0YWcuJyxcclxuICAgIFs2IC8qIEVycm9yQ29kZXMuRU9GX0lOX0NEQVRBICovXTogJ1VuZXhwZWN0ZWQgRU9GIGluIENEQVRBIHNlY3Rpb24uJyxcclxuICAgIFs3IC8qIEVycm9yQ29kZXMuRU9GX0lOX0NPTU1FTlQgKi9dOiAnVW5leHBlY3RlZCBFT0YgaW4gY29tbWVudC4nLFxyXG4gICAgWzggLyogRXJyb3JDb2Rlcy5FT0ZfSU5fU0NSSVBUX0hUTUxfQ09NTUVOVF9MSUtFX1RFWFQgKi9dOiAnVW5leHBlY3RlZCBFT0YgaW4gc2NyaXB0LicsXHJcbiAgICBbOSAvKiBFcnJvckNvZGVzLkVPRl9JTl9UQUcgKi9dOiAnVW5leHBlY3RlZCBFT0YgaW4gdGFnLicsXHJcbiAgICBbMTAgLyogRXJyb3JDb2Rlcy5JTkNPUlJFQ1RMWV9DTE9TRURfQ09NTUVOVCAqL106ICdJbmNvcnJlY3RseSBjbG9zZWQgY29tbWVudC4nLFxyXG4gICAgWzExIC8qIEVycm9yQ29kZXMuSU5DT1JSRUNUTFlfT1BFTkVEX0NPTU1FTlQgKi9dOiAnSW5jb3JyZWN0bHkgb3BlbmVkIGNvbW1lbnQuJyxcclxuICAgIFsxMiAvKiBFcnJvckNvZGVzLklOVkFMSURfRklSU1RfQ0hBUkFDVEVSX09GX1RBR19OQU1FICovXTogXCJJbGxlZ2FsIHRhZyBuYW1lLiBVc2UgJyZsdDsnIHRvIHByaW50ICc8Jy5cIixcclxuICAgIFsxMyAvKiBFcnJvckNvZGVzLk1JU1NJTkdfQVRUUklCVVRFX1ZBTFVFICovXTogJ0F0dHJpYnV0ZSB2YWx1ZSB3YXMgZXhwZWN0ZWQuJyxcclxuICAgIFsxNCAvKiBFcnJvckNvZGVzLk1JU1NJTkdfRU5EX1RBR19OQU1FICovXTogJ0VuZCB0YWcgbmFtZSB3YXMgZXhwZWN0ZWQuJyxcclxuICAgIFsxNSAvKiBFcnJvckNvZGVzLk1JU1NJTkdfV0hJVEVTUEFDRV9CRVRXRUVOX0FUVFJJQlVURVMgKi9dOiAnV2hpdGVzcGFjZSB3YXMgZXhwZWN0ZWQuJyxcclxuICAgIFsxNiAvKiBFcnJvckNvZGVzLk5FU1RFRF9DT01NRU5UICovXTogXCJVbmV4cGVjdGVkICc8IS0tJyBpbiBjb21tZW50LlwiLFxyXG4gICAgWzE3IC8qIEVycm9yQ29kZXMuVU5FWFBFQ1RFRF9DSEFSQUNURVJfSU5fQVRUUklCVVRFX05BTUUgKi9dOiAnQXR0cmlidXRlIG5hbWUgY2Fubm90IGNvbnRhaW4gVSswMDIyIChcIiksIFUrMDAyNyAoXFwnKSwgYW5kIFUrMDAzQyAoPCkuJyxcclxuICAgIFsxOCAvKiBFcnJvckNvZGVzLlVORVhQRUNURURfQ0hBUkFDVEVSX0lOX1VOUVVPVEVEX0FUVFJJQlVURV9WQUxVRSAqL106ICdVbnF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUgY2Fubm90IGNvbnRhaW4gVSswMDIyIChcIiksIFUrMDAyNyAoXFwnKSwgVSswMDNDICg8KSwgVSswMDNEICg9KSwgYW5kIFUrMDA2MCAoYCkuJyxcclxuICAgIFsxOSAvKiBFcnJvckNvZGVzLlVORVhQRUNURURfRVFVQUxTX1NJR05fQkVGT1JFX0FUVFJJQlVURV9OQU1FICovXTogXCJBdHRyaWJ1dGUgbmFtZSBjYW5ub3Qgc3RhcnQgd2l0aCAnPScuXCIsXHJcbiAgICBbMjEgLyogRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX1FVRVNUSU9OX01BUktfSU5TVEVBRF9PRl9UQUdfTkFNRSAqL106IFwiJzw/JyBpcyBhbGxvd2VkIG9ubHkgaW4gWE1MIGNvbnRleHQuXCIsXHJcbiAgICBbMjAgLyogRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX05VTExfQ0hBUkFDVEVSICovXTogYFVuZXhwZWN0ZWQgbnVsbCBjaGFyYWN0ZXIuYCxcclxuICAgIFsyMiAvKiBFcnJvckNvZGVzLlVORVhQRUNURURfU09MSURVU19JTl9UQUcgKi9dOiBcIklsbGVnYWwgJy8nIGluIHRhZ3MuXCIsXHJcbiAgICAvLyBWdWUtc3BlY2lmaWMgcGFyc2UgZXJyb3JzXHJcbiAgICBbMjMgLyogRXJyb3JDb2Rlcy5YX0lOVkFMSURfRU5EX1RBRyAqL106ICdJbnZhbGlkIGVuZCB0YWcuJyxcclxuICAgIFsyNCAvKiBFcnJvckNvZGVzLlhfTUlTU0lOR19FTkRfVEFHICovXTogJ0VsZW1lbnQgaXMgbWlzc2luZyBlbmQgdGFnLicsXHJcbiAgICBbMjUgLyogRXJyb3JDb2Rlcy5YX01JU1NJTkdfSU5URVJQT0xBVElPTl9FTkQgKi9dOiAnSW50ZXJwb2xhdGlvbiBlbmQgc2lnbiB3YXMgbm90IGZvdW5kLicsXHJcbiAgICBbMjcgLyogRXJyb3JDb2Rlcy5YX01JU1NJTkdfRFlOQU1JQ19ESVJFQ1RJVkVfQVJHVU1FTlRfRU5EICovXTogJ0VuZCBicmFja2V0IGZvciBkeW5hbWljIGRpcmVjdGl2ZSBhcmd1bWVudCB3YXMgbm90IGZvdW5kLiAnICtcclxuICAgICAgICAnTm90ZSB0aGF0IGR5bmFtaWMgZGlyZWN0aXZlIGFyZ3VtZW50IGNhbm5vdCBjb250YWluIHNwYWNlcy4nLFxyXG4gICAgWzI2IC8qIEVycm9yQ29kZXMuWF9NSVNTSU5HX0RJUkVDVElWRV9OQU1FICovXTogJ0xlZ2FsIGRpcmVjdGl2ZSBuYW1lIHdhcyBleHBlY3RlZC4nLFxyXG4gICAgLy8gdHJhbnNmb3JtIGVycm9yc1xyXG4gICAgWzI4IC8qIEVycm9yQ29kZXMuWF9WX0lGX05PX0VYUFJFU1NJT04gKi9dOiBgdi1pZi92LWVsc2UtaWYgaXMgbWlzc2luZyBleHByZXNzaW9uLmAsXHJcbiAgICBbMjkgLyogRXJyb3JDb2Rlcy5YX1ZfSUZfU0FNRV9LRVkgKi9dOiBgdi1pZi9lbHNlIGJyYW5jaGVzIG11c3QgdXNlIHVuaXF1ZSBrZXlzLmAsXHJcbiAgICBbMzAgLyogRXJyb3JDb2Rlcy5YX1ZfRUxTRV9OT19BREpBQ0VOVF9JRiAqL106IGB2LWVsc2Uvdi1lbHNlLWlmIGhhcyBubyBhZGphY2VudCB2LWlmIG9yIHYtZWxzZS1pZi5gLFxyXG4gICAgWzMxIC8qIEVycm9yQ29kZXMuWF9WX0ZPUl9OT19FWFBSRVNTSU9OICovXTogYHYtZm9yIGlzIG1pc3NpbmcgZXhwcmVzc2lvbi5gLFxyXG4gICAgWzMyIC8qIEVycm9yQ29kZXMuWF9WX0ZPUl9NQUxGT1JNRURfRVhQUkVTU0lPTiAqL106IGB2LWZvciBoYXMgaW52YWxpZCBleHByZXNzaW9uLmAsXHJcbiAgICBbMzMgLyogRXJyb3JDb2Rlcy5YX1ZfRk9SX1RFTVBMQVRFX0tFWV9QTEFDRU1FTlQgKi9dOiBgPHRlbXBsYXRlIHYtZm9yPiBrZXkgc2hvdWxkIGJlIHBsYWNlZCBvbiB0aGUgPHRlbXBsYXRlPiB0YWcuYCxcclxuICAgIFszNCAvKiBFcnJvckNvZGVzLlhfVl9CSU5EX05PX0VYUFJFU1NJT04gKi9dOiBgdi1iaW5kIGlzIG1pc3NpbmcgZXhwcmVzc2lvbi5gLFxyXG4gICAgWzM1IC8qIEVycm9yQ29kZXMuWF9WX09OX05PX0VYUFJFU1NJT04gKi9dOiBgdi1vbiBpcyBtaXNzaW5nIGV4cHJlc3Npb24uYCxcclxuICAgIFszNiAvKiBFcnJvckNvZGVzLlhfVl9TTE9UX1VORVhQRUNURURfRElSRUNUSVZFX09OX1NMT1RfT1VUTEVUICovXTogYFVuZXhwZWN0ZWQgY3VzdG9tIGRpcmVjdGl2ZSBvbiA8c2xvdD4gb3V0bGV0LmAsXHJcbiAgICBbMzcgLyogRXJyb3JDb2Rlcy5YX1ZfU0xPVF9NSVhFRF9TTE9UX1VTQUdFICovXTogYE1peGVkIHYtc2xvdCB1c2FnZSBvbiBib3RoIHRoZSBjb21wb25lbnQgYW5kIG5lc3RlZCA8dGVtcGxhdGU+LmAgK1xyXG4gICAgICAgIGBXaGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBuYW1lZCBzbG90cywgYWxsIHNsb3RzIHNob3VsZCB1c2UgPHRlbXBsYXRlPiBgICtcclxuICAgICAgICBgc3ludGF4IHRvIGF2b2lkIHNjb3BlIGFtYmlndWl0eS5gLFxyXG4gICAgWzM4IC8qIEVycm9yQ29kZXMuWF9WX1NMT1RfRFVQTElDQVRFX1NMT1RfTkFNRVMgKi9dOiBgRHVwbGljYXRlIHNsb3QgbmFtZXMgZm91bmQuIGAsXHJcbiAgICBbMzkgLyogRXJyb3JDb2Rlcy5YX1ZfU0xPVF9FWFRSQU5FT1VTX0RFRkFVTFRfU0xPVF9DSElMRFJFTiAqL106IGBFeHRyYW5lb3VzIGNoaWxkcmVuIGZvdW5kIHdoZW4gY29tcG9uZW50IGFscmVhZHkgaGFzIGV4cGxpY2l0bHkgbmFtZWQgYCArXHJcbiAgICAgICAgYGRlZmF1bHQgc2xvdC4gVGhlc2UgY2hpbGRyZW4gd2lsbCBiZSBpZ25vcmVkLmAsXHJcbiAgICBbNDAgLyogRXJyb3JDb2Rlcy5YX1ZfU0xPVF9NSVNQTEFDRUQgKi9dOiBgdi1zbG90IGNhbiBvbmx5IGJlIHVzZWQgb24gY29tcG9uZW50cyBvciA8dGVtcGxhdGU+IHRhZ3MuYCxcclxuICAgIFs0MSAvKiBFcnJvckNvZGVzLlhfVl9NT0RFTF9OT19FWFBSRVNTSU9OICovXTogYHYtbW9kZWwgaXMgbWlzc2luZyBleHByZXNzaW9uLmAsXHJcbiAgICBbNDIgLyogRXJyb3JDb2Rlcy5YX1ZfTU9ERUxfTUFMRk9STUVEX0VYUFJFU1NJT04gKi9dOiBgdi1tb2RlbCB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSmF2YVNjcmlwdCBtZW1iZXIgZXhwcmVzc2lvbi5gLFxyXG4gICAgWzQzIC8qIEVycm9yQ29kZXMuWF9WX01PREVMX09OX1NDT1BFX1ZBUklBQkxFICovXTogYHYtbW9kZWwgY2Fubm90IGJlIHVzZWQgb24gdi1mb3Igb3Igdi1zbG90IHNjb3BlIHZhcmlhYmxlcyBiZWNhdXNlIHRoZXkgYXJlIG5vdCB3cml0YWJsZS5gLFxyXG4gICAgWzQ0IC8qIEVycm9yQ29kZXMuWF9JTlZBTElEX0VYUFJFU1NJT04gKi9dOiBgRXJyb3IgcGFyc2luZyBKYXZhU2NyaXB0IGV4cHJlc3Npb246IGAsXHJcbiAgICBbNDUgLyogRXJyb3JDb2Rlcy5YX0tFRVBfQUxJVkVfSU5WQUxJRF9DSElMRFJFTiAqL106IGA8S2VlcEFsaXZlPiBleHBlY3RzIGV4YWN0bHkgb25lIGNoaWxkIGNvbXBvbmVudC5gLFxyXG4gICAgLy8gZ2VuZXJpYyBlcnJvcnNcclxuICAgIFs0NiAvKiBFcnJvckNvZGVzLlhfUFJFRklYX0lEX05PVF9TVVBQT1JURUQgKi9dOiBgXCJwcmVmaXhJZGVudGlmaWVyc1wiIG9wdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnVpbGQgb2YgY29tcGlsZXIuYCxcclxuICAgIFs0NyAvKiBFcnJvckNvZGVzLlhfTU9EVUxFX01PREVfTk9UX1NVUFBPUlRFRCAqL106IGBFUyBtb2R1bGUgbW9kZSBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnVpbGQgb2YgY29tcGlsZXIuYCxcclxuICAgIFs0OCAvKiBFcnJvckNvZGVzLlhfQ0FDSEVfSEFORExFUl9OT1RfU1VQUE9SVEVEICovXTogYFwiY2FjaGVIYW5kbGVyc1wiIG9wdGlvbiBpcyBvbmx5IHN1cHBvcnRlZCB3aGVuIHRoZSBcInByZWZpeElkZW50aWZpZXJzXCIgb3B0aW9uIGlzIGVuYWJsZWQuYCxcclxuICAgIFs0OSAvKiBFcnJvckNvZGVzLlhfU0NPUEVfSURfTk9UX1NVUFBPUlRFRCAqL106IGBcInNjb3BlSWRcIiBvcHRpb24gaXMgb25seSBzdXBwb3J0ZWQgaW4gbW9kdWxlIG1vZGUuYCxcclxuICAgIC8vIGp1c3QgdG8gZnVsZmlsbCB0eXBlc1xyXG4gICAgWzUwIC8qIEVycm9yQ29kZXMuX19FWFRFTkRfUE9JTlRfXyAqL106IGBgXHJcbn07XG5cbmNvbnN0IEZSQUdNRU5UID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBGcmFnbWVudGAgOiBgYCk7XHJcbmNvbnN0IFRFTEVQT1JUID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBUZWxlcG9ydGAgOiBgYCk7XHJcbmNvbnN0IFNVU1BFTlNFID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBTdXNwZW5zZWAgOiBgYCk7XHJcbmNvbnN0IEtFRVBfQUxJVkUgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYEtlZXBBbGl2ZWAgOiBgYCk7XHJcbmNvbnN0IEJBU0VfVFJBTlNJVElPTiA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgQmFzZVRyYW5zaXRpb25gIDogYGApO1xyXG5jb25zdCBPUEVOX0JMT0NLID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBvcGVuQmxvY2tgIDogYGApO1xyXG5jb25zdCBDUkVBVEVfQkxPQ0sgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGNyZWF0ZUJsb2NrYCA6IGBgKTtcclxuY29uc3QgQ1JFQVRFX0VMRU1FTlRfQkxPQ0sgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGNyZWF0ZUVsZW1lbnRCbG9ja2AgOiBgYCk7XHJcbmNvbnN0IENSRUFURV9WTk9ERSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgY3JlYXRlVk5vZGVgIDogYGApO1xyXG5jb25zdCBDUkVBVEVfRUxFTUVOVF9WTk9ERSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgY3JlYXRlRWxlbWVudFZOb2RlYCA6IGBgKTtcclxuY29uc3QgQ1JFQVRFX0NPTU1FTlQgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGNyZWF0ZUNvbW1lbnRWTm9kZWAgOiBgYCk7XHJcbmNvbnN0IENSRUFURV9URVhUID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBjcmVhdGVUZXh0Vk5vZGVgIDogYGApO1xyXG5jb25zdCBDUkVBVEVfU1RBVElDID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBjcmVhdGVTdGF0aWNWTm9kZWAgOiBgYCk7XHJcbmNvbnN0IFJFU09MVkVfQ09NUE9ORU5UID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGByZXNvbHZlQ29tcG9uZW50YCA6IGBgKTtcclxuY29uc3QgUkVTT0xWRV9EWU5BTUlDX0NPTVBPTkVOVCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgcmVzb2x2ZUR5bmFtaWNDb21wb25lbnRgIDogYGApO1xyXG5jb25zdCBSRVNPTFZFX0RJUkVDVElWRSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgcmVzb2x2ZURpcmVjdGl2ZWAgOiBgYCk7XHJcbmNvbnN0IFJFU09MVkVfRklMVEVSID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGByZXNvbHZlRmlsdGVyYCA6IGBgKTtcclxuY29uc3QgV0lUSF9ESVJFQ1RJVkVTID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB3aXRoRGlyZWN0aXZlc2AgOiBgYCk7XHJcbmNvbnN0IFJFTkRFUl9MSVNUID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGByZW5kZXJMaXN0YCA6IGBgKTtcclxuY29uc3QgUkVOREVSX1NMT1QgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHJlbmRlclNsb3RgIDogYGApO1xyXG5jb25zdCBDUkVBVEVfU0xPVFMgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGNyZWF0ZVNsb3RzYCA6IGBgKTtcclxuY29uc3QgVE9fRElTUExBWV9TVFJJTkcgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHRvRGlzcGxheVN0cmluZ2AgOiBgYCk7XHJcbmNvbnN0IE1FUkdFX1BST1BTID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBtZXJnZVByb3BzYCA6IGBgKTtcclxuY29uc3QgTk9STUFMSVpFX0NMQVNTID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBub3JtYWxpemVDbGFzc2AgOiBgYCk7XHJcbmNvbnN0IE5PUk1BTElaRV9TVFlMRSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgbm9ybWFsaXplU3R5bGVgIDogYGApO1xyXG5jb25zdCBOT1JNQUxJWkVfUFJPUFMgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYG5vcm1hbGl6ZVByb3BzYCA6IGBgKTtcclxuY29uc3QgR1VBUkRfUkVBQ1RJVkVfUFJPUFMgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGd1YXJkUmVhY3RpdmVQcm9wc2AgOiBgYCk7XHJcbmNvbnN0IFRPX0hBTkRMRVJTID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB0b0hhbmRsZXJzYCA6IGBgKTtcclxuY29uc3QgQ0FNRUxJWkUgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGNhbWVsaXplYCA6IGBgKTtcclxuY29uc3QgQ0FQSVRBTElaRSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgY2FwaXRhbGl6ZWAgOiBgYCk7XHJcbmNvbnN0IFRPX0hBTkRMRVJfS0VZID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB0b0hhbmRsZXJLZXlgIDogYGApO1xyXG5jb25zdCBTRVRfQkxPQ0tfVFJBQ0tJTkcgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHNldEJsb2NrVHJhY2tpbmdgIDogYGApO1xyXG5jb25zdCBQVVNIX1NDT1BFX0lEID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBwdXNoU2NvcGVJZGAgOiBgYCk7XHJcbmNvbnN0IFBPUF9TQ09QRV9JRCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgcG9wU2NvcGVJZGAgOiBgYCk7XHJcbmNvbnN0IFdJVEhfQ1RYID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB3aXRoQ3R4YCA6IGBgKTtcclxuY29uc3QgVU5SRUYgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHVucmVmYCA6IGBgKTtcclxuY29uc3QgSVNfUkVGID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBpc1JlZmAgOiBgYCk7XHJcbmNvbnN0IFdJVEhfTUVNTyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgd2l0aE1lbW9gIDogYGApO1xyXG5jb25zdCBJU19NRU1PX1NBTUUgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGlzTWVtb1NhbWVgIDogYGApO1xyXG4vLyBOYW1lIG1hcHBpbmcgZm9yIHJ1bnRpbWUgaGVscGVycyB0aGF0IG5lZWQgdG8gYmUgaW1wb3J0ZWQgZnJvbSAndnVlJyBpblxyXG4vLyBnZW5lcmF0ZWQgY29kZS4gTWFrZSBzdXJlIHRoZXNlIGFyZSBjb3JyZWN0bHkgZXhwb3J0ZWQgaW4gdGhlIHJ1bnRpbWUhXHJcbi8vIFVzaW5nIGBhbnlgIGhlcmUgYmVjYXVzZSBUUyBkb2Vzbid0IGFsbG93IHN5bWJvbHMgYXMgaW5kZXggdHlwZS5cclxuY29uc3QgaGVscGVyTmFtZU1hcCA9IHtcclxuICAgIFtGUkFHTUVOVF06IGBGcmFnbWVudGAsXHJcbiAgICBbVEVMRVBPUlRdOiBgVGVsZXBvcnRgLFxyXG4gICAgW1NVU1BFTlNFXTogYFN1c3BlbnNlYCxcclxuICAgIFtLRUVQX0FMSVZFXTogYEtlZXBBbGl2ZWAsXHJcbiAgICBbQkFTRV9UUkFOU0lUSU9OXTogYEJhc2VUcmFuc2l0aW9uYCxcclxuICAgIFtPUEVOX0JMT0NLXTogYG9wZW5CbG9ja2AsXHJcbiAgICBbQ1JFQVRFX0JMT0NLXTogYGNyZWF0ZUJsb2NrYCxcclxuICAgIFtDUkVBVEVfRUxFTUVOVF9CTE9DS106IGBjcmVhdGVFbGVtZW50QmxvY2tgLFxyXG4gICAgW0NSRUFURV9WTk9ERV06IGBjcmVhdGVWTm9kZWAsXHJcbiAgICBbQ1JFQVRFX0VMRU1FTlRfVk5PREVdOiBgY3JlYXRlRWxlbWVudFZOb2RlYCxcclxuICAgIFtDUkVBVEVfQ09NTUVOVF06IGBjcmVhdGVDb21tZW50Vk5vZGVgLFxyXG4gICAgW0NSRUFURV9URVhUXTogYGNyZWF0ZVRleHRWTm9kZWAsXHJcbiAgICBbQ1JFQVRFX1NUQVRJQ106IGBjcmVhdGVTdGF0aWNWTm9kZWAsXHJcbiAgICBbUkVTT0xWRV9DT01QT05FTlRdOiBgcmVzb2x2ZUNvbXBvbmVudGAsXHJcbiAgICBbUkVTT0xWRV9EWU5BTUlDX0NPTVBPTkVOVF06IGByZXNvbHZlRHluYW1pY0NvbXBvbmVudGAsXHJcbiAgICBbUkVTT0xWRV9ESVJFQ1RJVkVdOiBgcmVzb2x2ZURpcmVjdGl2ZWAsXHJcbiAgICBbUkVTT0xWRV9GSUxURVJdOiBgcmVzb2x2ZUZpbHRlcmAsXHJcbiAgICBbV0lUSF9ESVJFQ1RJVkVTXTogYHdpdGhEaXJlY3RpdmVzYCxcclxuICAgIFtSRU5ERVJfTElTVF06IGByZW5kZXJMaXN0YCxcclxuICAgIFtSRU5ERVJfU0xPVF06IGByZW5kZXJTbG90YCxcclxuICAgIFtDUkVBVEVfU0xPVFNdOiBgY3JlYXRlU2xvdHNgLFxyXG4gICAgW1RPX0RJU1BMQVlfU1RSSU5HXTogYHRvRGlzcGxheVN0cmluZ2AsXHJcbiAgICBbTUVSR0VfUFJPUFNdOiBgbWVyZ2VQcm9wc2AsXHJcbiAgICBbTk9STUFMSVpFX0NMQVNTXTogYG5vcm1hbGl6ZUNsYXNzYCxcclxuICAgIFtOT1JNQUxJWkVfU1RZTEVdOiBgbm9ybWFsaXplU3R5bGVgLFxyXG4gICAgW05PUk1BTElaRV9QUk9QU106IGBub3JtYWxpemVQcm9wc2AsXHJcbiAgICBbR1VBUkRfUkVBQ1RJVkVfUFJPUFNdOiBgZ3VhcmRSZWFjdGl2ZVByb3BzYCxcclxuICAgIFtUT19IQU5ETEVSU106IGB0b0hhbmRsZXJzYCxcclxuICAgIFtDQU1FTElaRV06IGBjYW1lbGl6ZWAsXHJcbiAgICBbQ0FQSVRBTElaRV06IGBjYXBpdGFsaXplYCxcclxuICAgIFtUT19IQU5ETEVSX0tFWV06IGB0b0hhbmRsZXJLZXlgLFxyXG4gICAgW1NFVF9CTE9DS19UUkFDS0lOR106IGBzZXRCbG9ja1RyYWNraW5nYCxcclxuICAgIFtQVVNIX1NDT1BFX0lEXTogYHB1c2hTY29wZUlkYCxcclxuICAgIFtQT1BfU0NPUEVfSURdOiBgcG9wU2NvcGVJZGAsXHJcbiAgICBbV0lUSF9DVFhdOiBgd2l0aEN0eGAsXHJcbiAgICBbVU5SRUZdOiBgdW5yZWZgLFxyXG4gICAgW0lTX1JFRl06IGBpc1JlZmAsXHJcbiAgICBbV0lUSF9NRU1PXTogYHdpdGhNZW1vYCxcclxuICAgIFtJU19NRU1PX1NBTUVdOiBgaXNNZW1vU2FtZWBcclxufTtcclxuZnVuY3Rpb24gcmVnaXN0ZXJSdW50aW1lSGVscGVycyhoZWxwZXJzKSB7XHJcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGhlbHBlcnMpLmZvckVhY2gocyA9PiB7XHJcbiAgICAgICAgaGVscGVyTmFtZU1hcFtzXSA9IGhlbHBlcnNbc107XHJcbiAgICB9KTtcclxufVxuXG4vLyBBU1QgVXRpbGl0aWVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4vLyBTb21lIGV4cHJlc3Npb25zLCBlLmcuIHNlcXVlbmNlIGFuZCBjb25kaXRpb25hbCBleHByZXNzaW9ucywgYXJlIG5ldmVyXHJcbi8vIGFzc29jaWF0ZWQgd2l0aCB0ZW1wbGF0ZSBub2Rlcywgc28gdGhlaXIgc291cmNlIGxvY2F0aW9ucyBhcmUganVzdCBhIHN0dWIuXHJcbi8vIENvbnRhaW5lciB0eXBlcyBsaWtlIENvbXBvdW5kRXhwcmVzc2lvbiBhbHNvIGRvbid0IG5lZWQgYSByZWFsIGxvY2F0aW9uLlxyXG5jb25zdCBsb2NTdHViID0ge1xyXG4gICAgc291cmNlOiAnJyxcclxuICAgIHN0YXJ0OiB7IGxpbmU6IDEsIGNvbHVtbjogMSwgb2Zmc2V0OiAwIH0sXHJcbiAgICBlbmQ6IHsgbGluZTogMSwgY29sdW1uOiAxLCBvZmZzZXQ6IDAgfVxyXG59O1xyXG5mdW5jdGlvbiBjcmVhdGVSb290KGNoaWxkcmVuLCBsb2MgPSBsb2NTdHViKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDAgLyogTm9kZVR5cGVzLlJPT1QgKi8sXHJcbiAgICAgICAgY2hpbGRyZW4sXHJcbiAgICAgICAgaGVscGVyczogW10sXHJcbiAgICAgICAgY29tcG9uZW50czogW10sXHJcbiAgICAgICAgZGlyZWN0aXZlczogW10sXHJcbiAgICAgICAgaG9pc3RzOiBbXSxcclxuICAgICAgICBpbXBvcnRzOiBbXSxcclxuICAgICAgICBjYWNoZWQ6IDAsXHJcbiAgICAgICAgdGVtcHM6IDAsXHJcbiAgICAgICAgY29kZWdlbk5vZGU6IHVuZGVmaW5lZCxcclxuICAgICAgICBsb2NcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlVk5vZGVDYWxsKGNvbnRleHQsIHRhZywgcHJvcHMsIGNoaWxkcmVuLCBwYXRjaEZsYWcsIGR5bmFtaWNQcm9wcywgZGlyZWN0aXZlcywgaXNCbG9jayA9IGZhbHNlLCBkaXNhYmxlVHJhY2tpbmcgPSBmYWxzZSwgaXNDb21wb25lbnQgPSBmYWxzZSwgbG9jID0gbG9jU3R1Yikge1xyXG4gICAgaWYgKGNvbnRleHQpIHtcclxuICAgICAgICBpZiAoaXNCbG9jaykge1xyXG4gICAgICAgICAgICBjb250ZXh0LmhlbHBlcihPUEVOX0JMT0NLKTtcclxuICAgICAgICAgICAgY29udGV4dC5oZWxwZXIoZ2V0Vk5vZGVCbG9ja0hlbHBlcihjb250ZXh0LmluU1NSLCBpc0NvbXBvbmVudCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29udGV4dC5oZWxwZXIoZ2V0Vk5vZGVIZWxwZXIoY29udGV4dC5pblNTUiwgaXNDb21wb25lbnQpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRpcmVjdGl2ZXMpIHtcclxuICAgICAgICAgICAgY29udGV4dC5oZWxwZXIoV0lUSF9ESVJFQ1RJVkVTKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDEzIC8qIE5vZGVUeXBlcy5WTk9ERV9DQUxMICovLFxyXG4gICAgICAgIHRhZyxcclxuICAgICAgICBwcm9wcyxcclxuICAgICAgICBjaGlsZHJlbixcclxuICAgICAgICBwYXRjaEZsYWcsXHJcbiAgICAgICAgZHluYW1pY1Byb3BzLFxyXG4gICAgICAgIGRpcmVjdGl2ZXMsXHJcbiAgICAgICAgaXNCbG9jayxcclxuICAgICAgICBkaXNhYmxlVHJhY2tpbmcsXHJcbiAgICAgICAgaXNDb21wb25lbnQsXHJcbiAgICAgICAgbG9jXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUFycmF5RXhwcmVzc2lvbihlbGVtZW50cywgbG9jID0gbG9jU3R1Yikge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAxNyAvKiBOb2RlVHlwZXMuSlNfQVJSQVlfRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICBsb2MsXHJcbiAgICAgICAgZWxlbWVudHNcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihwcm9wZXJ0aWVzLCBsb2MgPSBsb2NTdHViKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDE1IC8qIE5vZGVUeXBlcy5KU19PQkpFQ1RfRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICBsb2MsXHJcbiAgICAgICAgcHJvcGVydGllc1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVPYmplY3RQcm9wZXJ0eShrZXksIHZhbHVlKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDE2IC8qIE5vZGVUeXBlcy5KU19QUk9QRVJUWSAqLyxcclxuICAgICAgICBsb2M6IGxvY1N0dWIsXHJcbiAgICAgICAga2V5OiBpc1N0cmluZyhrZXkpID8gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihrZXksIHRydWUpIDoga2V5LFxyXG4gICAgICAgIHZhbHVlXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oY29udGVudCwgaXNTdGF0aWMgPSBmYWxzZSwgbG9jID0gbG9jU3R1YiwgY29uc3RUeXBlID0gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLykge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICBsb2MsXHJcbiAgICAgICAgY29udGVudCxcclxuICAgICAgICBpc1N0YXRpYyxcclxuICAgICAgICBjb25zdFR5cGU6IGlzU3RhdGljID8gMyAvKiBDb25zdGFudFR5cGVzLkNBTl9TVFJJTkdJRlkgKi8gOiBjb25zdFR5cGVcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlSW50ZXJwb2xhdGlvbihjb250ZW50LCBsb2MpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogNSAvKiBOb2RlVHlwZXMuSU5URVJQT0xBVElPTiAqLyxcclxuICAgICAgICBsb2MsXHJcbiAgICAgICAgY29udGVudDogaXNTdHJpbmcoY29udGVudClcclxuICAgICAgICAgICAgPyBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGNvbnRlbnQsIGZhbHNlLCBsb2MpXHJcbiAgICAgICAgICAgIDogY29udGVudFxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oY2hpbGRyZW4sIGxvYyA9IGxvY1N0dWIpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogOCAvKiBOb2RlVHlwZXMuQ09NUE9VTkRfRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICBsb2MsXHJcbiAgICAgICAgY2hpbGRyZW5cclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY2FsbGVlLCBhcmdzID0gW10sIGxvYyA9IGxvY1N0dWIpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMTQgLyogTm9kZVR5cGVzLkpTX0NBTExfRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICBsb2MsXHJcbiAgICAgICAgY2FsbGVlLFxyXG4gICAgICAgIGFyZ3VtZW50czogYXJnc1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24ocGFyYW1zLCByZXR1cm5zID0gdW5kZWZpbmVkLCBuZXdsaW5lID0gZmFsc2UsIGlzU2xvdCA9IGZhbHNlLCBsb2MgPSBsb2NTdHViKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDE4IC8qIE5vZGVUeXBlcy5KU19GVU5DVElPTl9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgIHBhcmFtcyxcclxuICAgICAgICByZXR1cm5zLFxyXG4gICAgICAgIG5ld2xpbmUsXHJcbiAgICAgICAgaXNTbG90LFxyXG4gICAgICAgIGxvY1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb24odGVzdCwgY29uc2VxdWVudCwgYWx0ZXJuYXRlLCBuZXdsaW5lID0gdHJ1ZSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAxOSAvKiBOb2RlVHlwZXMuSlNfQ09ORElUSU9OQUxfRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICB0ZXN0LFxyXG4gICAgICAgIGNvbnNlcXVlbnQsXHJcbiAgICAgICAgYWx0ZXJuYXRlLFxyXG4gICAgICAgIG5ld2xpbmUsXHJcbiAgICAgICAgbG9jOiBsb2NTdHViXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUNhY2hlRXhwcmVzc2lvbihpbmRleCwgdmFsdWUsIGlzVk5vZGUgPSBmYWxzZSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAyMCAvKiBOb2RlVHlwZXMuSlNfQ0FDSEVfRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB2YWx1ZSxcclxuICAgICAgICBpc1ZOb2RlLFxyXG4gICAgICAgIGxvYzogbG9jU3R1YlxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVCbG9ja1N0YXRlbWVudChib2R5KSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDIxIC8qIE5vZGVUeXBlcy5KU19CTE9DS19TVEFURU1FTlQgKi8sXHJcbiAgICAgICAgYm9keSxcclxuICAgICAgICBsb2M6IGxvY1N0dWJcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlVGVtcGxhdGVMaXRlcmFsKGVsZW1lbnRzKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDIyIC8qIE5vZGVUeXBlcy5KU19URU1QTEFURV9MSVRFUkFMICovLFxyXG4gICAgICAgIGVsZW1lbnRzLFxyXG4gICAgICAgIGxvYzogbG9jU3R1YlxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVJZlN0YXRlbWVudCh0ZXN0LCBjb25zZXF1ZW50LCBhbHRlcm5hdGUpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMjMgLyogTm9kZVR5cGVzLkpTX0lGX1NUQVRFTUVOVCAqLyxcclxuICAgICAgICB0ZXN0LFxyXG4gICAgICAgIGNvbnNlcXVlbnQsXHJcbiAgICAgICAgYWx0ZXJuYXRlLFxyXG4gICAgICAgIGxvYzogbG9jU3R1YlxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVBc3NpZ25tZW50RXhwcmVzc2lvbihsZWZ0LCByaWdodCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAyNCAvKiBOb2RlVHlwZXMuSlNfQVNTSUdOTUVOVF9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgIGxlZnQsXHJcbiAgICAgICAgcmlnaHQsXHJcbiAgICAgICAgbG9jOiBsb2NTdHViXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVNlcXVlbmNlRXhwcmVzc2lvbihleHByZXNzaW9ucykge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAyNSAvKiBOb2RlVHlwZXMuSlNfU0VRVUVOQ0VfRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICBleHByZXNzaW9ucyxcclxuICAgICAgICBsb2M6IGxvY1N0dWJcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlUmV0dXJuU3RhdGVtZW50KHJldHVybnMpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMjYgLyogTm9kZVR5cGVzLkpTX1JFVFVSTl9TVEFURU1FTlQgKi8sXHJcbiAgICAgICAgcmV0dXJucyxcclxuICAgICAgICBsb2M6IGxvY1N0dWJcclxuICAgIH07XHJcbn1cblxuY29uc3QgaXNTdGF0aWNFeHAgPSAocCkgPT4gcC50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyAmJiBwLmlzU3RhdGljO1xyXG5jb25zdCBpc0J1aWx0SW5UeXBlID0gKHRhZywgZXhwZWN0ZWQpID0+IHRhZyA9PT0gZXhwZWN0ZWQgfHwgdGFnID09PSBoeXBoZW5hdGUoZXhwZWN0ZWQpO1xyXG5mdW5jdGlvbiBpc0NvcmVDb21wb25lbnQodGFnKSB7XHJcbiAgICBpZiAoaXNCdWlsdEluVHlwZSh0YWcsICdUZWxlcG9ydCcpKSB7XHJcbiAgICAgICAgcmV0dXJuIFRFTEVQT1JUO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNCdWlsdEluVHlwZSh0YWcsICdTdXNwZW5zZScpKSB7XHJcbiAgICAgICAgcmV0dXJuIFNVU1BFTlNFO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNCdWlsdEluVHlwZSh0YWcsICdLZWVwQWxpdmUnKSkge1xyXG4gICAgICAgIHJldHVybiBLRUVQX0FMSVZFO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNCdWlsdEluVHlwZSh0YWcsICdCYXNlVHJhbnNpdGlvbicpKSB7XHJcbiAgICAgICAgcmV0dXJuIEJBU0VfVFJBTlNJVElPTjtcclxuICAgIH1cclxufVxyXG5jb25zdCBub25JZGVudGlmaWVyUkUgPSAvXlxcZHxbXlxcJFxcd10vO1xyXG5jb25zdCBpc1NpbXBsZUlkZW50aWZpZXIgPSAobmFtZSkgPT4gIW5vbklkZW50aWZpZXJSRS50ZXN0KG5hbWUpO1xyXG5jb25zdCB2YWxpZEZpcnN0SWRlbnRDaGFyUkUgPSAvW0EtWmEtel8kXFx4QTAtXFx1RkZGRl0vO1xyXG5jb25zdCB2YWxpZElkZW50Q2hhclJFID0gL1tcXC5cXD9cXHckXFx4QTAtXFx1RkZGRl0vO1xyXG5jb25zdCB3aGl0ZXNwYWNlUkUgPSAvXFxzK1suW11cXHMqfFxccypbLltdXFxzKy9nO1xyXG4vKipcclxuICogU2ltcGxlIGxleGVyIHRvIGNoZWNrIGlmIGFuIGV4cHJlc3Npb24gaXMgYSBtZW1iZXIgZXhwcmVzc2lvbi4gVGhpcyBpc1xyXG4gKiBsYXggYW5kIG9ubHkgY2hlY2tzIHZhbGlkaXR5IGF0IHRoZSByb290IGxldmVsIChpLmUuIGRvZXMgbm90IHZhbGlkYXRlIGV4cHNcclxuICogaW5zaWRlIHNxdWFyZSBicmFja2V0cyksIGJ1dCBpdCdzIG9rIHNpbmNlIHRoZXNlIGFyZSBvbmx5IHVzZWQgb24gdGVtcGxhdGVcclxuICogZXhwcmVzc2lvbnMgYW5kIGZhbHNlIHBvc2l0aXZlcyBhcmUgaW52YWxpZCBleHByZXNzaW9ucyBpbiB0aGUgZmlyc3QgcGxhY2UuXHJcbiAqL1xyXG5jb25zdCBpc01lbWJlckV4cHJlc3Npb25Ccm93c2VyID0gKHBhdGgpID0+IHtcclxuICAgIC8vIHJlbW92ZSB3aGl0ZXNwYWNlcyBhcm91bmQgLiBvciBbIGZpcnN0XHJcbiAgICBwYXRoID0gcGF0aC50cmltKCkucmVwbGFjZSh3aGl0ZXNwYWNlUkUsIHMgPT4gcy50cmltKCkpO1xyXG4gICAgbGV0IHN0YXRlID0gMCAvKiBNZW1iZXJFeHBMZXhTdGF0ZS5pbk1lbWJlckV4cCAqLztcclxuICAgIGxldCBzdGF0ZVN0YWNrID0gW107XHJcbiAgICBsZXQgY3VycmVudE9wZW5CcmFja2V0Q291bnQgPSAwO1xyXG4gICAgbGV0IGN1cnJlbnRPcGVuUGFyZW5zQ291bnQgPSAwO1xyXG4gICAgbGV0IGN1cnJlbnRTdHJpbmdUeXBlID0gbnVsbDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGNoYXIgPSBwYXRoLmNoYXJBdChpKTtcclxuICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgMCAvKiBNZW1iZXJFeHBMZXhTdGF0ZS5pbk1lbWJlckV4cCAqLzpcclxuICAgICAgICAgICAgICAgIGlmIChjaGFyID09PSAnWycpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZVN0YWNrLnB1c2goc3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gMSAvKiBNZW1iZXJFeHBMZXhTdGF0ZS5pbkJyYWNrZXRzICovO1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRPcGVuQnJhY2tldENvdW50Kys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGFyID09PSAnKCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZVN0YWNrLnB1c2goc3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gMiAvKiBNZW1iZXJFeHBMZXhTdGF0ZS5pblBhcmVucyAqLztcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50T3BlblBhcmVuc0NvdW50Kys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICghKGkgPT09IDAgPyB2YWxpZEZpcnN0SWRlbnRDaGFyUkUgOiB2YWxpZElkZW50Q2hhclJFKS50ZXN0KGNoYXIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMSAvKiBNZW1iZXJFeHBMZXhTdGF0ZS5pbkJyYWNrZXRzICovOlxyXG4gICAgICAgICAgICAgICAgaWYgKGNoYXIgPT09IGAnYCB8fCBjaGFyID09PSBgXCJgIHx8IGNoYXIgPT09ICdgJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlU3RhY2sucHVzaChzdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAzIC8qIE1lbWJlckV4cExleFN0YXRlLmluU3RyaW5nICovO1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdUeXBlID0gY2hhcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoYXIgPT09IGBbYCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRPcGVuQnJhY2tldENvdW50Kys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGFyID09PSBgXWApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIS0tY3VycmVudE9wZW5CcmFja2V0Q291bnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZVN0YWNrLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDIgLyogTWVtYmVyRXhwTGV4U3RhdGUuaW5QYXJlbnMgKi86XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hhciA9PT0gYCdgIHx8IGNoYXIgPT09IGBcImAgfHwgY2hhciA9PT0gJ2AnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGVTdGFjay5wdXNoKHN0YXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDMgLyogTWVtYmVyRXhwTGV4U3RhdGUuaW5TdHJpbmcgKi87XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0cmluZ1R5cGUgPSBjaGFyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hhciA9PT0gYChgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudE9wZW5QYXJlbnNDb3VudCsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hhciA9PT0gYClgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGV4cCBlbmRzIGFzIGEgY2FsbCB0aGVuIGl0IHNob3VsZCBub3QgYmUgY29uc2lkZXJlZCB2YWxpZFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSBwYXRoLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoIS0tY3VycmVudE9wZW5QYXJlbnNDb3VudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IHN0YXRlU3RhY2sucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMyAvKiBNZW1iZXJFeHBMZXhTdGF0ZS5pblN0cmluZyAqLzpcclxuICAgICAgICAgICAgICAgIGlmIChjaGFyID09PSBjdXJyZW50U3RyaW5nVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gc3RhdGVTdGFjay5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RyaW5nVHlwZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gIWN1cnJlbnRPcGVuQnJhY2tldENvdW50ICYmICFjdXJyZW50T3BlblBhcmVuc0NvdW50O1xyXG59O1xyXG5jb25zdCBpc01lbWJlckV4cHJlc3Npb25Ob2RlID0gTk9PUFxyXG4gICAgO1xyXG5jb25zdCBpc01lbWJlckV4cHJlc3Npb24gPSBpc01lbWJlckV4cHJlc3Npb25Ccm93c2VyXHJcbiAgICA7XHJcbmZ1bmN0aW9uIGdldElubmVyUmFuZ2UobG9jLCBvZmZzZXQsIGxlbmd0aCkge1xyXG4gICAgY29uc3Qgc291cmNlID0gbG9jLnNvdXJjZS5zbGljZShvZmZzZXQsIG9mZnNldCArIGxlbmd0aCk7XHJcbiAgICBjb25zdCBuZXdMb2MgPSB7XHJcbiAgICAgICAgc291cmNlLFxyXG4gICAgICAgIHN0YXJ0OiBhZHZhbmNlUG9zaXRpb25XaXRoQ2xvbmUobG9jLnN0YXJ0LCBsb2Muc291cmNlLCBvZmZzZXQpLFxyXG4gICAgICAgIGVuZDogbG9jLmVuZFxyXG4gICAgfTtcclxuICAgIGlmIChsZW5ndGggIT0gbnVsbCkge1xyXG4gICAgICAgIG5ld0xvYy5lbmQgPSBhZHZhbmNlUG9zaXRpb25XaXRoQ2xvbmUobG9jLnN0YXJ0LCBsb2Muc291cmNlLCBvZmZzZXQgKyBsZW5ndGgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld0xvYztcclxufVxyXG5mdW5jdGlvbiBhZHZhbmNlUG9zaXRpb25XaXRoQ2xvbmUocG9zLCBzb3VyY2UsIG51bWJlck9mQ2hhcmFjdGVycyA9IHNvdXJjZS5sZW5ndGgpIHtcclxuICAgIHJldHVybiBhZHZhbmNlUG9zaXRpb25XaXRoTXV0YXRpb24oZXh0ZW5kKHt9LCBwb3MpLCBzb3VyY2UsIG51bWJlck9mQ2hhcmFjdGVycyk7XHJcbn1cclxuLy8gYWR2YW5jZSBieSBtdXRhdGlvbiB3aXRob3V0IGNsb25pbmcgKGZvciBwZXJmb3JtYW5jZSByZWFzb25zKSwgc2luY2UgdGhpc1xyXG4vLyBnZXRzIGNhbGxlZCBhIGxvdCBpbiB0aGUgcGFyc2VyXHJcbmZ1bmN0aW9uIGFkdmFuY2VQb3NpdGlvbldpdGhNdXRhdGlvbihwb3MsIHNvdXJjZSwgbnVtYmVyT2ZDaGFyYWN0ZXJzID0gc291cmNlLmxlbmd0aCkge1xyXG4gICAgbGV0IGxpbmVzQ291bnQgPSAwO1xyXG4gICAgbGV0IGxhc3ROZXdMaW5lUG9zID0gLTE7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bWJlck9mQ2hhcmFjdGVyczsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHNvdXJjZS5jaGFyQ29kZUF0KGkpID09PSAxMCAvKiBuZXdsaW5lIGNoYXIgY29kZSAqLykge1xyXG4gICAgICAgICAgICBsaW5lc0NvdW50Kys7XHJcbiAgICAgICAgICAgIGxhc3ROZXdMaW5lUG9zID0gaTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwb3Mub2Zmc2V0ICs9IG51bWJlck9mQ2hhcmFjdGVycztcclxuICAgIHBvcy5saW5lICs9IGxpbmVzQ291bnQ7XHJcbiAgICBwb3MuY29sdW1uID1cclxuICAgICAgICBsYXN0TmV3TGluZVBvcyA9PT0gLTFcclxuICAgICAgICAgICAgPyBwb3MuY29sdW1uICsgbnVtYmVyT2ZDaGFyYWN0ZXJzXHJcbiAgICAgICAgICAgIDogbnVtYmVyT2ZDaGFyYWN0ZXJzIC0gbGFzdE5ld0xpbmVQb3M7XHJcbiAgICByZXR1cm4gcG9zO1xyXG59XHJcbmZ1bmN0aW9uIGFzc2VydChjb25kaXRpb24sIG1zZykge1xyXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXHJcbiAgICBpZiAoIWNvbmRpdGlvbikge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cgfHwgYHVuZXhwZWN0ZWQgY29tcGlsZXIgY29uZGl0aW9uYCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZmluZERpcihub2RlLCBuYW1lLCBhbGxvd0VtcHR5ID0gZmFsc2UpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5wcm9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHAgPSBub2RlLnByb3BzW2ldO1xyXG4gICAgICAgIGlmIChwLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyAmJlxyXG4gICAgICAgICAgICAoYWxsb3dFbXB0eSB8fCBwLmV4cCkgJiZcclxuICAgICAgICAgICAgKGlzU3RyaW5nKG5hbWUpID8gcC5uYW1lID09PSBuYW1lIDogbmFtZS50ZXN0KHAubmFtZSkpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBmaW5kUHJvcChub2RlLCBuYW1lLCBkeW5hbWljT25seSA9IGZhbHNlLCBhbGxvd0VtcHR5ID0gZmFsc2UpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5wcm9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHAgPSBub2RlLnByb3BzW2ldO1xyXG4gICAgICAgIGlmIChwLnR5cGUgPT09IDYgLyogTm9kZVR5cGVzLkFUVFJJQlVURSAqLykge1xyXG4gICAgICAgICAgICBpZiAoZHluYW1pY09ubHkpXHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgaWYgKHAubmFtZSA9PT0gbmFtZSAmJiAocC52YWx1ZSB8fCBhbGxvd0VtcHR5KSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocC5uYW1lID09PSAnYmluZCcgJiZcclxuICAgICAgICAgICAgKHAuZXhwIHx8IGFsbG93RW1wdHkpICYmXHJcbiAgICAgICAgICAgIGlzU3RhdGljQXJnT2YocC5hcmcsIG5hbWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBpc1N0YXRpY0FyZ09mKGFyZywgbmFtZSkge1xyXG4gICAgcmV0dXJuICEhKGFyZyAmJiBpc1N0YXRpY0V4cChhcmcpICYmIGFyZy5jb250ZW50ID09PSBuYW1lKTtcclxufVxyXG5mdW5jdGlvbiBoYXNEeW5hbWljS2V5VkJpbmQobm9kZSkge1xyXG4gICAgcmV0dXJuIG5vZGUucHJvcHMuc29tZShwID0+IHAudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovICYmXHJcbiAgICAgICAgcC5uYW1lID09PSAnYmluZCcgJiZcclxuICAgICAgICAoIXAuYXJnIHx8IC8vIHYtYmluZD1cIm9ialwiXHJcbiAgICAgICAgICAgIHAuYXJnLnR5cGUgIT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovIHx8IC8vIHYtYmluZDpbX2N0eC5mb29dXHJcbiAgICAgICAgICAgICFwLmFyZy5pc1N0YXRpYykgLy8gdi1iaW5kOltmb29dXHJcbiAgICApO1xyXG59XHJcbmZ1bmN0aW9uIGlzVGV4dChub2RlKSB7XHJcbiAgICByZXR1cm4gbm9kZS50eXBlID09PSA1IC8qIE5vZGVUeXBlcy5JTlRFUlBPTEFUSU9OICovIHx8IG5vZGUudHlwZSA9PT0gMiAvKiBOb2RlVHlwZXMuVEVYVCAqLztcclxufVxyXG5mdW5jdGlvbiBpc1ZTbG90KHApIHtcclxuICAgIHJldHVybiBwLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyAmJiBwLm5hbWUgPT09ICdzbG90JztcclxufVxyXG5mdW5jdGlvbiBpc1RlbXBsYXRlTm9kZShub2RlKSB7XHJcbiAgICByZXR1cm4gKG5vZGUudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyAmJiBub2RlLnRhZ1R5cGUgPT09IDMgLyogRWxlbWVudFR5cGVzLlRFTVBMQVRFICovKTtcclxufVxyXG5mdW5jdGlvbiBpc1Nsb3RPdXRsZXQobm9kZSkge1xyXG4gICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyAmJiBub2RlLnRhZ1R5cGUgPT09IDIgLyogRWxlbWVudFR5cGVzLlNMT1QgKi87XHJcbn1cclxuZnVuY3Rpb24gZ2V0Vk5vZGVIZWxwZXIoc3NyLCBpc0NvbXBvbmVudCkge1xyXG4gICAgcmV0dXJuIHNzciB8fCBpc0NvbXBvbmVudCA/IENSRUFURV9WTk9ERSA6IENSRUFURV9FTEVNRU5UX1ZOT0RFO1xyXG59XHJcbmZ1bmN0aW9uIGdldFZOb2RlQmxvY2tIZWxwZXIoc3NyLCBpc0NvbXBvbmVudCkge1xyXG4gICAgcmV0dXJuIHNzciB8fCBpc0NvbXBvbmVudCA/IENSRUFURV9CTE9DSyA6IENSRUFURV9FTEVNRU5UX0JMT0NLO1xyXG59XHJcbmNvbnN0IHByb3BzSGVscGVyU2V0ID0gbmV3IFNldChbTk9STUFMSVpFX1BST1BTLCBHVUFSRF9SRUFDVElWRV9QUk9QU10pO1xyXG5mdW5jdGlvbiBnZXRVbm5vcm1hbGl6ZWRQcm9wcyhwcm9wcywgY2FsbFBhdGggPSBbXSkge1xyXG4gICAgaWYgKHByb3BzICYmXHJcbiAgICAgICAgIWlzU3RyaW5nKHByb3BzKSAmJlxyXG4gICAgICAgIHByb3BzLnR5cGUgPT09IDE0IC8qIE5vZGVUeXBlcy5KU19DQUxMX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICBjb25zdCBjYWxsZWUgPSBwcm9wcy5jYWxsZWU7XHJcbiAgICAgICAgaWYgKCFpc1N0cmluZyhjYWxsZWUpICYmIHByb3BzSGVscGVyU2V0LmhhcyhjYWxsZWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBnZXRVbm5vcm1hbGl6ZWRQcm9wcyhwcm9wcy5hcmd1bWVudHNbMF0sIGNhbGxQYXRoLmNvbmNhdChwcm9wcykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBbcHJvcHMsIGNhbGxQYXRoXTtcclxufVxyXG5mdW5jdGlvbiBpbmplY3RQcm9wKG5vZGUsIHByb3AsIGNvbnRleHQpIHtcclxuICAgIGxldCBwcm9wc1dpdGhJbmplY3Rpb247XHJcbiAgICAvKipcclxuICAgICAqIDEuIG1lcmdlUHJvcHMoLi4uKVxyXG4gICAgICogMi4gdG9IYW5kbGVycyguLi4pXHJcbiAgICAgKiAzLiBub3JtYWxpemVQcm9wcyguLi4pXHJcbiAgICAgKiA0LiBub3JtYWxpemVQcm9wcyhndWFyZFJlYWN0aXZlUHJvcHMoLi4uKSlcclxuICAgICAqXHJcbiAgICAgKiB3ZSBuZWVkIHRvIGdldCB0aGUgcmVhbCBwcm9wcyBiZWZvcmUgbm9ybWFsaXphdGlvblxyXG4gICAgICovXHJcbiAgICBsZXQgcHJvcHMgPSBub2RlLnR5cGUgPT09IDEzIC8qIE5vZGVUeXBlcy5WTk9ERV9DQUxMICovID8gbm9kZS5wcm9wcyA6IG5vZGUuYXJndW1lbnRzWzJdO1xyXG4gICAgbGV0IGNhbGxQYXRoID0gW107XHJcbiAgICBsZXQgcGFyZW50Q2FsbDtcclxuICAgIGlmIChwcm9wcyAmJlxyXG4gICAgICAgICFpc1N0cmluZyhwcm9wcykgJiZcclxuICAgICAgICBwcm9wcy50eXBlID09PSAxNCAvKiBOb2RlVHlwZXMuSlNfQ0FMTF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgY29uc3QgcmV0ID0gZ2V0VW5ub3JtYWxpemVkUHJvcHMocHJvcHMpO1xyXG4gICAgICAgIHByb3BzID0gcmV0WzBdO1xyXG4gICAgICAgIGNhbGxQYXRoID0gcmV0WzFdO1xyXG4gICAgICAgIHBhcmVudENhbGwgPSBjYWxsUGF0aFtjYWxsUGF0aC5sZW5ndGggLSAxXTtcclxuICAgIH1cclxuICAgIGlmIChwcm9wcyA9PSBudWxsIHx8IGlzU3RyaW5nKHByb3BzKSkge1xyXG4gICAgICAgIHByb3BzV2l0aEluamVjdGlvbiA9IGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oW3Byb3BdKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHByb3BzLnR5cGUgPT09IDE0IC8qIE5vZGVUeXBlcy5KU19DQUxMX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAvLyBtZXJnZWQgcHJvcHMuLi4gYWRkIG91cnNcclxuICAgICAgICAvLyBvbmx5IGluamVjdCBrZXkgdG8gb2JqZWN0IGxpdGVyYWwgaWYgaXQncyB0aGUgZmlyc3QgYXJndW1lbnQgc28gdGhhdFxyXG4gICAgICAgIC8vIGlmIGRvZXNuJ3Qgb3ZlcnJpZGUgdXNlciBwcm92aWRlZCBrZXlzXHJcbiAgICAgICAgY29uc3QgZmlyc3QgPSBwcm9wcy5hcmd1bWVudHNbMF07XHJcbiAgICAgICAgaWYgKCFpc1N0cmluZyhmaXJzdCkgJiYgZmlyc3QudHlwZSA9PT0gMTUgLyogTm9kZVR5cGVzLkpTX09CSkVDVF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgIGZpcnN0LnByb3BlcnRpZXMudW5zaGlmdChwcm9wKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChwcm9wcy5jYWxsZWUgPT09IFRPX0hBTkRMRVJTKSB7XHJcbiAgICAgICAgICAgICAgICAvLyAjMjM2NlxyXG4gICAgICAgICAgICAgICAgcHJvcHNXaXRoSW5qZWN0aW9uID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoTUVSR0VfUFJPUFMpLCBbXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihbcHJvcF0pLFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3BzXHJcbiAgICAgICAgICAgICAgICBdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHByb3BzLmFyZ3VtZW50cy51bnNoaWZ0KGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oW3Byb3BdKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgIXByb3BzV2l0aEluamVjdGlvbiAmJiAocHJvcHNXaXRoSW5qZWN0aW9uID0gcHJvcHMpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocHJvcHMudHlwZSA9PT0gMTUgLyogTm9kZVR5cGVzLkpTX09CSkVDVF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgbGV0IGFscmVhZHlFeGlzdHMgPSBmYWxzZTtcclxuICAgICAgICAvLyBjaGVjayBleGlzdGluZyBrZXkgdG8gYXZvaWQgb3ZlcnJpZGluZyB1c2VyIHByb3ZpZGVkIGtleXNcclxuICAgICAgICBpZiAocHJvcC5rZXkudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgY29uc3QgcHJvcEtleU5hbWUgPSBwcm9wLmtleS5jb250ZW50O1xyXG4gICAgICAgICAgICBhbHJlYWR5RXhpc3RzID0gcHJvcHMucHJvcGVydGllcy5zb21lKHAgPT4gcC5rZXkudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8gJiZcclxuICAgICAgICAgICAgICAgIHAua2V5LmNvbnRlbnQgPT09IHByb3BLZXlOYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFhbHJlYWR5RXhpc3RzKSB7XHJcbiAgICAgICAgICAgIHByb3BzLnByb3BlcnRpZXMudW5zaGlmdChwcm9wKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcHJvcHNXaXRoSW5qZWN0aW9uID0gcHJvcHM7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBzaW5nbGUgdi1iaW5kIHdpdGggZXhwcmVzc2lvbiwgcmV0dXJuIGEgbWVyZ2VkIHJlcGxhY2VtZW50XHJcbiAgICAgICAgcHJvcHNXaXRoSW5qZWN0aW9uID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoTUVSR0VfUFJPUFMpLCBbXHJcbiAgICAgICAgICAgIGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oW3Byb3BdKSxcclxuICAgICAgICAgICAgcHJvcHNcclxuICAgICAgICBdKTtcclxuICAgICAgICAvLyBpbiB0aGUgY2FzZSBvZiBuZXN0ZWQgaGVscGVyIGNhbGwsIGUuZy4gYG5vcm1hbGl6ZVByb3BzKGd1YXJkUmVhY3RpdmVQcm9wcyhwcm9wcykpYCxcclxuICAgICAgICAvLyBpdCB3aWxsIGJlIHJld3JpdHRlbiBhcyBgbm9ybWFsaXplUHJvcHMobWVyZ2VQcm9wcyh7IGtleTogMCB9LCBwcm9wcykpYCxcclxuICAgICAgICAvLyB0aGUgYGd1YXJkUmVhY3RpdmVQcm9wc2Agd2lsbCBubyBsb25nZXIgYmUgbmVlZGVkXHJcbiAgICAgICAgaWYgKHBhcmVudENhbGwgJiYgcGFyZW50Q2FsbC5jYWxsZWUgPT09IEdVQVJEX1JFQUNUSVZFX1BST1BTKSB7XHJcbiAgICAgICAgICAgIHBhcmVudENhbGwgPSBjYWxsUGF0aFtjYWxsUGF0aC5sZW5ndGggLSAyXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAobm9kZS50eXBlID09PSAxMyAvKiBOb2RlVHlwZXMuVk5PREVfQ0FMTCAqLykge1xyXG4gICAgICAgIGlmIChwYXJlbnRDYWxsKSB7XHJcbiAgICAgICAgICAgIHBhcmVudENhbGwuYXJndW1lbnRzWzBdID0gcHJvcHNXaXRoSW5qZWN0aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbm9kZS5wcm9wcyA9IHByb3BzV2l0aEluamVjdGlvbjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBpZiAocGFyZW50Q2FsbCkge1xyXG4gICAgICAgICAgICBwYXJlbnRDYWxsLmFyZ3VtZW50c1swXSA9IHByb3BzV2l0aEluamVjdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG5vZGUuYXJndW1lbnRzWzJdID0gcHJvcHNXaXRoSW5qZWN0aW9uO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB0b1ZhbGlkQXNzZXRJZChuYW1lLCB0eXBlKSB7XHJcbiAgICAvLyBzZWUgaXNzdWUjNDQyMiwgd2UgbmVlZCBhZGRpbmcgaWRlbnRpZmllciBvbiB2YWxpZEFzc2V0SWQgaWYgdmFyaWFibGUgYG5hbWVgIGhhcyBzcGVjaWZpYyBjaGFyYWN0ZXJcclxuICAgIHJldHVybiBgXyR7dHlwZX1fJHtuYW1lLnJlcGxhY2UoL1teXFx3XS9nLCAoc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBzZWFyY2hWYWx1ZSA9PT0gJy0nID8gJ18nIDogbmFtZS5jaGFyQ29kZUF0KHJlcGxhY2VWYWx1ZSkudG9TdHJpbmcoKTtcclxuICAgIH0pfWA7XHJcbn1cclxuLy8gQ2hlY2sgaWYgYSBub2RlIGNvbnRhaW5zIGV4cHJlc3Npb25zIHRoYXQgcmVmZXJlbmNlIGN1cnJlbnQgY29udGV4dCBzY29wZSBpZHNcclxuZnVuY3Rpb24gaGFzU2NvcGVSZWYobm9kZSwgaWRzKSB7XHJcbiAgICBpZiAoIW5vZGUgfHwgT2JqZWN0LmtleXMoaWRzKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xyXG4gICAgICAgIGNhc2UgMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLzpcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnByb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwID0gbm9kZS5wcm9wc1tpXTtcclxuICAgICAgICAgICAgICAgIGlmIChwLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChoYXNTY29wZVJlZihwLmFyZywgaWRzKSB8fCBoYXNTY29wZVJlZihwLmV4cCwgaWRzKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbm9kZS5jaGlsZHJlbi5zb21lKGMgPT4gaGFzU2NvcGVSZWYoYywgaWRzKSk7XHJcbiAgICAgICAgY2FzZSAxMSAvKiBOb2RlVHlwZXMuRk9SICovOlxyXG4gICAgICAgICAgICBpZiAoaGFzU2NvcGVSZWYobm9kZS5zb3VyY2UsIGlkcykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBub2RlLmNoaWxkcmVuLnNvbWUoYyA9PiBoYXNTY29wZVJlZihjLCBpZHMpKTtcclxuICAgICAgICBjYXNlIDkgLyogTm9kZVR5cGVzLklGICovOlxyXG4gICAgICAgICAgICByZXR1cm4gbm9kZS5icmFuY2hlcy5zb21lKGIgPT4gaGFzU2NvcGVSZWYoYiwgaWRzKSk7XHJcbiAgICAgICAgY2FzZSAxMCAvKiBOb2RlVHlwZXMuSUZfQlJBTkNIICovOlxyXG4gICAgICAgICAgICBpZiAoaGFzU2NvcGVSZWYobm9kZS5jb25kaXRpb24sIGlkcykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBub2RlLmNoaWxkcmVuLnNvbWUoYyA9PiBoYXNTY29wZVJlZihjLCBpZHMpKTtcclxuICAgICAgICBjYXNlIDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICByZXR1cm4gKCFub2RlLmlzU3RhdGljICYmXHJcbiAgICAgICAgICAgICAgICBpc1NpbXBsZUlkZW50aWZpZXIobm9kZS5jb250ZW50KSAmJlxyXG4gICAgICAgICAgICAgICAgISFpZHNbbm9kZS5jb250ZW50XSk7XHJcbiAgICAgICAgY2FzZSA4IC8qIE5vZGVUeXBlcy5DT01QT1VORF9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICByZXR1cm4gbm9kZS5jaGlsZHJlbi5zb21lKGMgPT4gaXNPYmplY3QoYykgJiYgaGFzU2NvcGVSZWYoYywgaWRzKSk7XHJcbiAgICAgICAgY2FzZSA1IC8qIE5vZGVUeXBlcy5JTlRFUlBPTEFUSU9OICovOlxyXG4gICAgICAgIGNhc2UgMTIgLyogTm9kZVR5cGVzLlRFWFRfQ0FMTCAqLzpcclxuICAgICAgICAgICAgcmV0dXJuIGhhc1Njb3BlUmVmKG5vZGUuY29udGVudCwgaWRzKTtcclxuICAgICAgICBjYXNlIDIgLyogTm9kZVR5cGVzLlRFWFQgKi86XHJcbiAgICAgICAgY2FzZSAzIC8qIE5vZGVUeXBlcy5DT01NRU5UICovOlxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkgO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2V0TWVtb2VkVk5vZGVDYWxsKG5vZGUpIHtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IDE0IC8qIE5vZGVUeXBlcy5KU19DQUxMX0VYUFJFU1NJT04gKi8gJiYgbm9kZS5jYWxsZWUgPT09IFdJVEhfTUVNTykge1xyXG4gICAgICAgIHJldHVybiBub2RlLmFyZ3VtZW50c1sxXS5yZXR1cm5zO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gbWFrZUJsb2NrKG5vZGUsIHsgaGVscGVyLCByZW1vdmVIZWxwZXIsIGluU1NSIH0pIHtcclxuICAgIGlmICghbm9kZS5pc0Jsb2NrKSB7XHJcbiAgICAgICAgbm9kZS5pc0Jsb2NrID0gdHJ1ZTtcclxuICAgICAgICByZW1vdmVIZWxwZXIoZ2V0Vk5vZGVIZWxwZXIoaW5TU1IsIG5vZGUuaXNDb21wb25lbnQpKTtcclxuICAgICAgICBoZWxwZXIoT1BFTl9CTE9DSyk7XHJcbiAgICAgICAgaGVscGVyKGdldFZOb2RlQmxvY2tIZWxwZXIoaW5TU1IsIG5vZGUuaXNDb21wb25lbnQpKTtcclxuICAgIH1cclxufVxuXG5jb25zdCBkZXByZWNhdGlvbkRhdGEgPSB7XHJcbiAgICBbXCJDT01QSUxFUl9JU19PTl9FTEVNRU5UXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX0lTX09OX0VMRU1FTlQgKi9dOiB7XHJcbiAgICAgICAgbWVzc2FnZTogYFBsYXRmb3JtLW5hdGl2ZSBlbGVtZW50cyB3aXRoIFwiaXNcIiBwcm9wIHdpbGwgbm8gbG9uZ2VyIGJlIGAgK1xyXG4gICAgICAgICAgICBgdHJlYXRlZCBhcyBjb21wb25lbnRzIGluIFZ1ZSAzIHVubGVzcyB0aGUgXCJpc1wiIHZhbHVlIGlzIGV4cGxpY2l0bHkgYCArXHJcbiAgICAgICAgICAgIGBwcmVmaXhlZCB3aXRoIFwidnVlOlwiLmAsXHJcbiAgICAgICAgbGluazogYGh0dHBzOi8vdjMtbWlncmF0aW9uLnZ1ZWpzLm9yZy9icmVha2luZy1jaGFuZ2VzL2N1c3RvbS1lbGVtZW50cy1pbnRlcm9wLmh0bWxgXHJcbiAgICB9LFxyXG4gICAgW1wiQ09NUElMRVJfVl9CSU5EX1NZTkNcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfVl9CSU5EX1NZTkMgKi9dOiB7XHJcbiAgICAgICAgbWVzc2FnZToga2V5ID0+IGAuc3luYyBtb2RpZmllciBmb3Igdi1iaW5kIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB2LW1vZGVsIHdpdGggYCArXHJcbiAgICAgICAgICAgIGBhcmd1bWVudCBpbnN0ZWFkLiBcXGB2LWJpbmQ6JHtrZXl9LnN5bmNcXGAgc2hvdWxkIGJlIGNoYW5nZWQgdG8gYCArXHJcbiAgICAgICAgICAgIGBcXGB2LW1vZGVsOiR7a2V5fVxcYC5gLFxyXG4gICAgICAgIGxpbms6IGBodHRwczovL3YzLW1pZ3JhdGlvbi52dWVqcy5vcmcvYnJlYWtpbmctY2hhbmdlcy92LW1vZGVsLmh0bWxgXHJcbiAgICB9LFxyXG4gICAgW1wiQ09NUElMRVJfVl9CSU5EX1BST1BcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfVl9CSU5EX1BST1AgKi9dOiB7XHJcbiAgICAgICAgbWVzc2FnZTogYC5wcm9wIG1vZGlmaWVyIGZvciB2LWJpbmQgaGFzIGJlZW4gcmVtb3ZlZCBhbmQgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4gYCArXHJcbiAgICAgICAgICAgIGBWdWUgMyB3aWxsIGF1dG9tYXRpY2FsbHkgc2V0IGEgYmluZGluZyBhcyBET00gcHJvcGVydHkgd2hlbiBhcHByb3ByaWF0ZS5gXHJcbiAgICB9LFxyXG4gICAgW1wiQ09NUElMRVJfVl9CSU5EX09CSkVDVF9PUkRFUlwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9WX0JJTkRfT0JKRUNUX09SREVSICovXToge1xyXG4gICAgICAgIG1lc3NhZ2U6IGB2LWJpbmQ9XCJvYmpcIiB1c2FnZSBpcyBub3cgb3JkZXIgc2Vuc2l0aXZlIGFuZCBiZWhhdmVzIGxpa2UgSmF2YVNjcmlwdCBgICtcclxuICAgICAgICAgICAgYG9iamVjdCBzcHJlYWQ6IGl0IHdpbGwgbm93IG92ZXJ3cml0ZSBhbiBleGlzdGluZyBub24tbWVyZ2VhYmxlIGF0dHJpYnV0ZSBgICtcclxuICAgICAgICAgICAgYHRoYXQgYXBwZWFycyBiZWZvcmUgdi1iaW5kIGluIHRoZSBjYXNlIG9mIGNvbmZsaWN0LiBgICtcclxuICAgICAgICAgICAgYFRvIHJldGFpbiAyLnggYmVoYXZpb3IsIG1vdmUgdi1iaW5kIHRvIG1ha2UgaXQgdGhlIGZpcnN0IGF0dHJpYnV0ZS4gYCArXHJcbiAgICAgICAgICAgIGBZb3UgY2FuIGFsc28gc3VwcHJlc3MgdGhpcyB3YXJuaW5nIGlmIHRoZSB1c2FnZSBpcyBpbnRlbmRlZC5gLFxyXG4gICAgICAgIGxpbms6IGBodHRwczovL3YzLW1pZ3JhdGlvbi52dWVqcy5vcmcvYnJlYWtpbmctY2hhbmdlcy92LWJpbmQuaHRtbGBcclxuICAgIH0sXHJcbiAgICBbXCJDT01QSUxFUl9WX09OX05BVElWRVwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9WX09OX05BVElWRSAqL106IHtcclxuICAgICAgICBtZXNzYWdlOiBgLm5hdGl2ZSBtb2RpZmllciBmb3Igdi1vbiBoYXMgYmVlbiByZW1vdmVkIGFzIGlzIG5vIGxvbmdlciBuZWNlc3NhcnkuYCxcclxuICAgICAgICBsaW5rOiBgaHR0cHM6Ly92My1taWdyYXRpb24udnVlanMub3JnL2JyZWFraW5nLWNoYW5nZXMvdi1vbi1uYXRpdmUtbW9kaWZpZXItcmVtb3ZlZC5odG1sYFxyXG4gICAgfSxcclxuICAgIFtcIkNPTVBJTEVSX1ZfSUZfVl9GT1JfUFJFQ0VERU5DRVwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9WX0lGX1ZfRk9SX1BSRUNFREVOQ0UgKi9dOiB7XHJcbiAgICAgICAgbWVzc2FnZTogYHYtaWYgLyB2LWZvciBwcmVjZWRlbmNlIHdoZW4gdXNlZCBvbiB0aGUgc2FtZSBlbGVtZW50IGhhcyBjaGFuZ2VkIGAgK1xyXG4gICAgICAgICAgICBgaW4gVnVlIDM6IHYtaWYgbm93IHRha2VzIGhpZ2hlciBwcmVjZWRlbmNlIGFuZCB3aWxsIG5vIGxvbmdlciBoYXZlIGAgK1xyXG4gICAgICAgICAgICBgYWNjZXNzIHRvIHYtZm9yIHNjb3BlIHZhcmlhYmxlcy4gSXQgaXMgYmVzdCB0byBhdm9pZCB0aGUgYW1iaWd1aXR5IGAgK1xyXG4gICAgICAgICAgICBgd2l0aCA8dGVtcGxhdGU+IHRhZ3Mgb3IgdXNlIGEgY29tcHV0ZWQgcHJvcGVydHkgdGhhdCBmaWx0ZXJzIHYtZm9yIGAgK1xyXG4gICAgICAgICAgICBgZGF0YSBzb3VyY2UuYCxcclxuICAgICAgICBsaW5rOiBgaHR0cHM6Ly92My1taWdyYXRpb24udnVlanMub3JnL2JyZWFraW5nLWNoYW5nZXMvdi1pZi12LWZvci5odG1sYFxyXG4gICAgfSxcclxuICAgIFtcIkNPTVBJTEVSX05BVElWRV9URU1QTEFURVwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9OQVRJVkVfVEVNUExBVEUgKi9dOiB7XHJcbiAgICAgICAgbWVzc2FnZTogYDx0ZW1wbGF0ZT4gd2l0aCBubyBzcGVjaWFsIGRpcmVjdGl2ZXMgd2lsbCByZW5kZXIgYXMgYSBuYXRpdmUgdGVtcGxhdGUgYCArXHJcbiAgICAgICAgICAgIGBlbGVtZW50IGluc3RlYWQgb2YgaXRzIGlubmVyIGNvbnRlbnQgaW4gVnVlIDMuYFxyXG4gICAgfSxcclxuICAgIFtcIkNPTVBJTEVSX0lOTElORV9URU1QTEFURVwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9JTkxJTkVfVEVNUExBVEUgKi9dOiB7XHJcbiAgICAgICAgbWVzc2FnZTogYFwiaW5saW5lLXRlbXBsYXRlXCIgaGFzIGJlZW4gcmVtb3ZlZCBpbiBWdWUgMy5gLFxyXG4gICAgICAgIGxpbms6IGBodHRwczovL3YzLW1pZ3JhdGlvbi52dWVqcy5vcmcvYnJlYWtpbmctY2hhbmdlcy9pbmxpbmUtdGVtcGxhdGUtYXR0cmlidXRlLmh0bWxgXHJcbiAgICB9LFxyXG4gICAgW1wiQ09NUElMRVJfRklMVEVSXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX0ZJTFRFUlMgKi9dOiB7XHJcbiAgICAgICAgbWVzc2FnZTogYGZpbHRlcnMgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gVnVlIDMuIGAgK1xyXG4gICAgICAgICAgICBgVGhlIFwifFwiIHN5bWJvbCB3aWxsIGJlIHRyZWF0ZWQgYXMgbmF0aXZlIEphdmFTY3JpcHQgYml0d2lzZSBPUiBvcGVyYXRvci4gYCArXHJcbiAgICAgICAgICAgIGBVc2UgbWV0aG9kIGNhbGxzIG9yIGNvbXB1dGVkIHByb3BlcnRpZXMgaW5zdGVhZC5gLFxyXG4gICAgICAgIGxpbms6IGBodHRwczovL3YzLW1pZ3JhdGlvbi52dWVqcy5vcmcvYnJlYWtpbmctY2hhbmdlcy9maWx0ZXJzLmh0bWxgXHJcbiAgICB9XHJcbn07XHJcbmZ1bmN0aW9uIGdldENvbXBhdFZhbHVlKGtleSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgY29uZmlnID0gY29udGV4dC5vcHRpb25zXHJcbiAgICAgICAgPyBjb250ZXh0Lm9wdGlvbnMuY29tcGF0Q29uZmlnXHJcbiAgICAgICAgOiBjb250ZXh0LmNvbXBhdENvbmZpZztcclxuICAgIGNvbnN0IHZhbHVlID0gY29uZmlnICYmIGNvbmZpZ1trZXldO1xyXG4gICAgaWYgKGtleSA9PT0gJ01PREUnKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlIHx8IDM7IC8vIGNvbXBpbGVyIGRlZmF1bHRzIHRvIHYzIGJlaGF2aW9yXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaXNDb21wYXRFbmFibGVkKGtleSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgbW9kZSA9IGdldENvbXBhdFZhbHVlKCdNT0RFJywgY29udGV4dCk7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGdldENvbXBhdFZhbHVlKGtleSwgY29udGV4dCk7XHJcbiAgICAvLyBpbiB2MyBtb2RlLCBvbmx5IGVuYWJsZSBpZiBleHBsaWNpdGx5IHNldCB0byB0cnVlXHJcbiAgICAvLyBvdGhlcndpc2UgZW5hYmxlIGZvciBhbnkgbm9uLWZhbHNlIHZhbHVlXHJcbiAgICByZXR1cm4gbW9kZSA9PT0gMyA/IHZhbHVlID09PSB0cnVlIDogdmFsdWUgIT09IGZhbHNlO1xyXG59XHJcbmZ1bmN0aW9uIGNoZWNrQ29tcGF0RW5hYmxlZChrZXksIGNvbnRleHQsIGxvYywgLi4uYXJncykge1xyXG4gICAgY29uc3QgZW5hYmxlZCA9IGlzQ29tcGF0RW5hYmxlZChrZXksIGNvbnRleHQpO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBlbmFibGVkKSB7XHJcbiAgICAgICAgd2FybkRlcHJlY2F0aW9uKGtleSwgY29udGV4dCwgbG9jLCAuLi5hcmdzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBlbmFibGVkO1xyXG59XHJcbmZ1bmN0aW9uIHdhcm5EZXByZWNhdGlvbihrZXksIGNvbnRleHQsIGxvYywgLi4uYXJncykge1xyXG4gICAgY29uc3QgdmFsID0gZ2V0Q29tcGF0VmFsdWUoa2V5LCBjb250ZXh0KTtcclxuICAgIGlmICh2YWwgPT09ICdzdXBwcmVzcy13YXJuaW5nJykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgbWVzc2FnZSwgbGluayB9ID0gZGVwcmVjYXRpb25EYXRhW2tleV07XHJcbiAgICBjb25zdCBtc2cgPSBgKGRlcHJlY2F0aW9uICR7a2V5fSkgJHt0eXBlb2YgbWVzc2FnZSA9PT0gJ2Z1bmN0aW9uJyA/IG1lc3NhZ2UoLi4uYXJncykgOiBtZXNzYWdlfSR7bGluayA/IGBcXG4gIERldGFpbHM6ICR7bGlua31gIDogYGB9YDtcclxuICAgIGNvbnN0IGVyciA9IG5ldyBTeW50YXhFcnJvcihtc2cpO1xyXG4gICAgZXJyLmNvZGUgPSBrZXk7XHJcbiAgICBpZiAobG9jKVxyXG4gICAgICAgIGVyci5sb2MgPSBsb2M7XHJcbiAgICBjb250ZXh0Lm9uV2FybihlcnIpO1xyXG59XG5cbi8vIFRoZSBkZWZhdWx0IGRlY29kZXIgb25seSBwcm92aWRlcyBlc2NhcGVzIGZvciBjaGFyYWN0ZXJzIHJlc2VydmVkIGFzIHBhcnQgb2ZcclxuLy8gdGhlIHRlbXBsYXRlIHN5bnRheCwgYW5kIGlzIG9ubHkgdXNlZCBpZiB0aGUgY3VzdG9tIHJlbmRlcmVyIGRpZCBub3QgcHJvdmlkZVxyXG4vLyBhIHBsYXRmb3JtLXNwZWNpZmljIGRlY29kZXIuXHJcbmNvbnN0IGRlY29kZVJFID0gLyYoZ3R8bHR8YW1wfGFwb3N8cXVvdCk7L2c7XHJcbmNvbnN0IGRlY29kZU1hcCA9IHtcclxuICAgIGd0OiAnPicsXHJcbiAgICBsdDogJzwnLFxyXG4gICAgYW1wOiAnJicsXHJcbiAgICBhcG9zOiBcIidcIixcclxuICAgIHF1b3Q6ICdcIidcclxufTtcclxuY29uc3QgZGVmYXVsdFBhcnNlck9wdGlvbnMgPSB7XHJcbiAgICBkZWxpbWl0ZXJzOiBbYHt7YCwgYH19YF0sXHJcbiAgICBnZXROYW1lc3BhY2U6ICgpID0+IDAgLyogTmFtZXNwYWNlcy5IVE1MICovLFxyXG4gICAgZ2V0VGV4dE1vZGU6ICgpID0+IDAgLyogVGV4dE1vZGVzLkRBVEEgKi8sXHJcbiAgICBpc1ZvaWRUYWc6IE5PLFxyXG4gICAgaXNQcmVUYWc6IE5PLFxyXG4gICAgaXNDdXN0b21FbGVtZW50OiBOTyxcclxuICAgIGRlY29kZUVudGl0aWVzOiAocmF3VGV4dCkgPT4gcmF3VGV4dC5yZXBsYWNlKGRlY29kZVJFLCAoXywgcDEpID0+IGRlY29kZU1hcFtwMV0pLFxyXG4gICAgb25FcnJvcjogZGVmYXVsdE9uRXJyb3IsXHJcbiAgICBvbldhcm46IGRlZmF1bHRPbldhcm4sXHJcbiAgICBjb21tZW50czogKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbn07XHJcbmZ1bmN0aW9uIGJhc2VQYXJzZShjb250ZW50LCBvcHRpb25zID0ge30pIHtcclxuICAgIGNvbnN0IGNvbnRleHQgPSBjcmVhdGVQYXJzZXJDb250ZXh0KGNvbnRlbnQsIG9wdGlvbnMpO1xyXG4gICAgY29uc3Qgc3RhcnQgPSBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICByZXR1cm4gY3JlYXRlUm9vdChwYXJzZUNoaWxkcmVuKGNvbnRleHQsIDAgLyogVGV4dE1vZGVzLkRBVEEgKi8sIFtdKSwgZ2V0U2VsZWN0aW9uKGNvbnRleHQsIHN0YXJ0KSk7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlUGFyc2VyQ29udGV4dChjb250ZW50LCByYXdPcHRpb25zKSB7XHJcbiAgICBjb25zdCBvcHRpb25zID0gZXh0ZW5kKHt9LCBkZWZhdWx0UGFyc2VyT3B0aW9ucyk7XHJcbiAgICBsZXQga2V5O1xyXG4gICAgZm9yIChrZXkgaW4gcmF3T3B0aW9ucykge1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBvcHRpb25zW2tleV0gPVxyXG4gICAgICAgICAgICByYXdPcHRpb25zW2tleV0gPT09IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgPyBkZWZhdWx0UGFyc2VyT3B0aW9uc1trZXldXHJcbiAgICAgICAgICAgICAgICA6IHJhd09wdGlvbnNba2V5XTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgb3B0aW9ucyxcclxuICAgICAgICBjb2x1bW46IDEsXHJcbiAgICAgICAgbGluZTogMSxcclxuICAgICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgICAgb3JpZ2luYWxTb3VyY2U6IGNvbnRlbnQsXHJcbiAgICAgICAgc291cmNlOiBjb250ZW50LFxyXG4gICAgICAgIGluUHJlOiBmYWxzZSxcclxuICAgICAgICBpblZQcmU6IGZhbHNlLFxyXG4gICAgICAgIG9uV2Fybjogb3B0aW9ucy5vbldhcm5cclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VDaGlsZHJlbihjb250ZXh0LCBtb2RlLCBhbmNlc3RvcnMpIHtcclxuICAgIGNvbnN0IHBhcmVudCA9IGxhc3QoYW5jZXN0b3JzKTtcclxuICAgIGNvbnN0IG5zID0gcGFyZW50ID8gcGFyZW50Lm5zIDogMCAvKiBOYW1lc3BhY2VzLkhUTUwgKi87XHJcbiAgICBjb25zdCBub2RlcyA9IFtdO1xyXG4gICAgd2hpbGUgKCFpc0VuZChjb250ZXh0LCBtb2RlLCBhbmNlc3RvcnMpKSB7XHJcbiAgICAgICAgY29uc3QgcyA9IGNvbnRleHQuc291cmNlO1xyXG4gICAgICAgIGxldCBub2RlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmIChtb2RlID09PSAwIC8qIFRleHRNb2Rlcy5EQVRBICovIHx8IG1vZGUgPT09IDEgLyogVGV4dE1vZGVzLlJDREFUQSAqLykge1xyXG4gICAgICAgICAgICBpZiAoIWNvbnRleHQuaW5WUHJlICYmIHN0YXJ0c1dpdGgocywgY29udGV4dC5vcHRpb25zLmRlbGltaXRlcnNbMF0pKSB7XHJcbiAgICAgICAgICAgICAgICAvLyAne3snXHJcbiAgICAgICAgICAgICAgICBub2RlID0gcGFyc2VJbnRlcnBvbGF0aW9uKGNvbnRleHQsIG1vZGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKG1vZGUgPT09IDAgLyogVGV4dE1vZGVzLkRBVEEgKi8gJiYgc1swXSA9PT0gJzwnKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9wYXJzaW5nLmh0bWwjdGFnLW9wZW4tc3RhdGVcclxuICAgICAgICAgICAgICAgIGlmIChzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCA1IC8qIEVycm9yQ29kZXMuRU9GX0JFRk9SRV9UQUdfTkFNRSAqLywgMSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzWzFdID09PSAnIScpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9wYXJzaW5nLmh0bWwjbWFya3VwLWRlY2xhcmF0aW9uLW9wZW4tc3RhdGVcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRzV2l0aChzLCAnPCEtLScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBwYXJzZUNvbW1lbnQoY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXJ0c1dpdGgocywgJzwhRE9DVFlQRScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZSBET0NUWVBFIGJ5IGEgbGltaXRhdGlvbi5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHBhcnNlQm9ndXNDb21tZW50KGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzdGFydHNXaXRoKHMsICc8IVtDREFUQVsnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobnMgIT09IDAgLyogTmFtZXNwYWNlcy5IVE1MICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gcGFyc2VDREFUQShjb250ZXh0LCBhbmNlc3RvcnMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDEgLyogRXJyb3JDb2Rlcy5DREFUQV9JTl9IVE1MX0NPTlRFTlQgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHBhcnNlQm9ndXNDb21tZW50KGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMTEgLyogRXJyb3JDb2Rlcy5JTkNPUlJFQ1RMWV9PUEVORURfQ09NTUVOVCAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBwYXJzZUJvZ3VzQ29tbWVudChjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzWzFdID09PSAnLycpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9wYXJzaW5nLmh0bWwjZW5kLXRhZy1vcGVuLXN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHMubGVuZ3RoID09PSAyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCA1IC8qIEVycm9yQ29kZXMuRU9GX0JFRk9SRV9UQUdfTkFNRSAqLywgMik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNbMl0gPT09ICc+Jykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMTQgLyogRXJyb3JDb2Rlcy5NSVNTSU5HX0VORF9UQUdfTkFNRSAqLywgMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCAzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKC9bYS16XS9pLnRlc3Qoc1syXSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDIzIC8qIEVycm9yQ29kZXMuWF9JTlZBTElEX0VORF9UQUcgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZVRhZyhjb250ZXh0LCAxIC8qIFRhZ1R5cGUuRW5kICovLCBwYXJlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAxMiAvKiBFcnJvckNvZGVzLklOVkFMSURfRklSU1RfQ0hBUkFDVEVSX09GX1RBR19OQU1FICovLCAyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHBhcnNlQm9ndXNDb21tZW50KGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKC9bYS16XS9pLnRlc3Qoc1sxXSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBub2RlID0gcGFyc2VFbGVtZW50KGNvbnRleHQsIGFuY2VzdG9ycyk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gMi54IDx0ZW1wbGF0ZT4gd2l0aCBubyBkaXJlY3RpdmUgY29tcGF0XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX05BVElWRV9URU1QTEFURVwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9OQVRJVkVfVEVNUExBVEUgKi8sIGNvbnRleHQpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS50YWcgPT09ICd0ZW1wbGF0ZScgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgIW5vZGUucHJvcHMuc29tZShwID0+IHAudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NwZWNpYWxUZW1wbGF0ZURpcmVjdGl2ZShwLm5hbWUpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5EZXByZWNhdGlvbihcIkNPTVBJTEVSX05BVElWRV9URU1QTEFURVwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9OQVRJVkVfVEVNUExBVEUgKi8sIGNvbnRleHQsIG5vZGUubG9jKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUuY2hpbGRyZW47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc1sxXSA9PT0gJz8nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDIxIC8qIEVycm9yQ29kZXMuVU5FWFBFQ1RFRF9RVUVTVElPTl9NQVJLX0lOU1RFQURfT0ZfVEFHX05BTUUgKi8sIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIG5vZGUgPSBwYXJzZUJvZ3VzQ29tbWVudChjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAxMiAvKiBFcnJvckNvZGVzLklOVkFMSURfRklSU1RfQ0hBUkFDVEVSX09GX1RBR19OQU1FICovLCAxKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIW5vZGUpIHtcclxuICAgICAgICAgICAgbm9kZSA9IHBhcnNlVGV4dChjb250ZXh0LCBtb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzQXJyYXkobm9kZSkpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBwdXNoTm9kZShub2Rlcywgbm9kZVtpXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHB1c2hOb2RlKG5vZGVzLCBub2RlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBXaGl0ZXNwYWNlIGhhbmRsaW5nIHN0cmF0ZWd5IGxpa2UgdjJcclxuICAgIGxldCByZW1vdmVkV2hpdGVzcGFjZSA9IGZhbHNlO1xyXG4gICAgaWYgKG1vZGUgIT09IDIgLyogVGV4dE1vZGVzLlJBV1RFWFQgKi8gJiYgbW9kZSAhPT0gMSAvKiBUZXh0TW9kZXMuUkNEQVRBICovKSB7XHJcbiAgICAgICAgY29uc3Qgc2hvdWxkQ29uZGVuc2UgPSBjb250ZXh0Lm9wdGlvbnMud2hpdGVzcGFjZSAhPT0gJ3ByZXNlcnZlJztcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tpXTtcclxuICAgICAgICAgICAgaWYgKCFjb250ZXh0LmluUHJlICYmIG5vZGUudHlwZSA9PT0gMiAvKiBOb2RlVHlwZXMuVEVYVCAqLykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCEvW15cXHRcXHJcXG5cXGYgXS8udGVzdChub2RlLmNvbnRlbnQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldiA9IG5vZGVzW2kgLSAxXTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gbm9kZXNbaSArIDFdO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBpZjpcclxuICAgICAgICAgICAgICAgICAgICAvLyAtIHRoZSB3aGl0ZXNwYWNlIGlzIHRoZSBmaXJzdCBvciBsYXN0IG5vZGUsIG9yOlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIC0gKGNvbmRlbnNlIG1vZGUpIHRoZSB3aGl0ZXNwYWNlIGlzIGFkamFjZW50IHRvIGEgY29tbWVudCwgb3I6XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gLSAoY29uZGVuc2UgbW9kZSkgdGhlIHdoaXRlc3BhY2UgaXMgYmV0d2VlbiB0d28gZWxlbWVudHMgQU5EIGNvbnRhaW5zIG5ld2xpbmVcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXByZXYgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgIW5leHQgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHNob3VsZENvbmRlbnNlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJldi50eXBlID09PSAzIC8qIE5vZGVUeXBlcy5DT01NRU5UICovIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC50eXBlID09PSAzIC8qIE5vZGVUeXBlcy5DT01NRU5UICovIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZXYudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL1tcXHJcXG5dLy50ZXN0KG5vZGUuY29udGVudCkpKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZFdoaXRlc3BhY2UgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2Rlc1tpXSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIHRoZSB3aGl0ZXNwYWNlIGlzIGNvbmRlbnNlZCBpbnRvIGEgc2luZ2xlIHNwYWNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuY29udGVudCA9ICcgJztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzaG91bGRDb25kZW5zZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGluIGNvbmRlbnNlIG1vZGUsIGNvbnNlY3V0aXZlIHdoaXRlc3BhY2VzIGluIHRleHQgYXJlIGNvbmRlbnNlZFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGRvd24gdG8gYSBzaW5nbGUgc3BhY2UuXHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5jb250ZW50ID0gbm9kZS5jb250ZW50LnJlcGxhY2UoL1tcXHRcXHJcXG5cXGYgXSsvZywgJyAnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBSZW1vdmUgY29tbWVudCBub2RlcyBpZiBkZXNpcmVkIGJ5IGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLyAmJiAhY29udGV4dC5vcHRpb25zLmNvbW1lbnRzKSB7XHJcbiAgICAgICAgICAgICAgICByZW1vdmVkV2hpdGVzcGFjZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBub2Rlc1tpXSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbnRleHQuaW5QcmUgJiYgcGFyZW50ICYmIGNvbnRleHQub3B0aW9ucy5pc1ByZVRhZyhwYXJlbnQudGFnKSkge1xyXG4gICAgICAgICAgICAvLyByZW1vdmUgbGVhZGluZyBuZXdsaW5lIHBlciBodG1sIHNwZWNcclxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZ3JvdXBpbmctY29udGVudC5odG1sI3RoZS1wcmUtZWxlbWVudFxyXG4gICAgICAgICAgICBjb25zdCBmaXJzdCA9IG5vZGVzWzBdO1xyXG4gICAgICAgICAgICBpZiAoZmlyc3QgJiYgZmlyc3QudHlwZSA9PT0gMiAvKiBOb2RlVHlwZXMuVEVYVCAqLykge1xyXG4gICAgICAgICAgICAgICAgZmlyc3QuY29udGVudCA9IGZpcnN0LmNvbnRlbnQucmVwbGFjZSgvXlxccj9cXG4vLCAnJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVtb3ZlZFdoaXRlc3BhY2UgPyBub2Rlcy5maWx0ZXIoQm9vbGVhbikgOiBub2RlcztcclxufVxyXG5mdW5jdGlvbiBwdXNoTm9kZShub2Rlcywgbm9kZSkge1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gMiAvKiBOb2RlVHlwZXMuVEVYVCAqLykge1xyXG4gICAgICAgIGNvbnN0IHByZXYgPSBsYXN0KG5vZGVzKTtcclxuICAgICAgICAvLyBNZXJnZSBpZiBib3RoIHRoaXMgYW5kIHRoZSBwcmV2aW91cyBub2RlIGFyZSB0ZXh0IGFuZCB0aG9zZSBhcmVcclxuICAgICAgICAvLyBjb25zZWN1dGl2ZS4gVGhpcyBoYXBwZW5zIGZvciBjYXNlcyBsaWtlIFwiYSA8IGJcIi5cclxuICAgICAgICBpZiAocHJldiAmJlxyXG4gICAgICAgICAgICBwcmV2LnR5cGUgPT09IDIgLyogTm9kZVR5cGVzLlRFWFQgKi8gJiZcclxuICAgICAgICAgICAgcHJldi5sb2MuZW5kLm9mZnNldCA9PT0gbm9kZS5sb2Muc3RhcnQub2Zmc2V0KSB7XHJcbiAgICAgICAgICAgIHByZXYuY29udGVudCArPSBub2RlLmNvbnRlbnQ7XHJcbiAgICAgICAgICAgIHByZXYubG9jLmVuZCA9IG5vZGUubG9jLmVuZDtcclxuICAgICAgICAgICAgcHJldi5sb2Muc291cmNlICs9IG5vZGUubG9jLnNvdXJjZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG5vZGVzLnB1c2gobm9kZSk7XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VDREFUQShjb250ZXh0LCBhbmNlc3RvcnMpIHtcclxuICAgIGFkdmFuY2VCeShjb250ZXh0LCA5KTtcclxuICAgIGNvbnN0IG5vZGVzID0gcGFyc2VDaGlsZHJlbihjb250ZXh0LCAzIC8qIFRleHRNb2Rlcy5DREFUQSAqLywgYW5jZXN0b3JzKTtcclxuICAgIGlmIChjb250ZXh0LnNvdXJjZS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgNiAvKiBFcnJvckNvZGVzLkVPRl9JTl9DREFUQSAqLyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgMyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbm9kZXM7XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VDb21tZW50KGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Q3Vyc29yKGNvbnRleHQpO1xyXG4gICAgbGV0IGNvbnRlbnQ7XHJcbiAgICAvLyBSZWd1bGFyIGNvbW1lbnQuXHJcbiAgICBjb25zdCBtYXRjaCA9IC8tLShcXCEpPz4vLmV4ZWMoY29udGV4dC5zb3VyY2UpO1xyXG4gICAgaWYgKCFtYXRjaCkge1xyXG4gICAgICAgIGNvbnRlbnQgPSBjb250ZXh0LnNvdXJjZS5zbGljZSg0KTtcclxuICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgY29udGV4dC5zb3VyY2UubGVuZ3RoKTtcclxuICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgNyAvKiBFcnJvckNvZGVzLkVPRl9JTl9DT01NRU5UICovKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChtYXRjaC5pbmRleCA8PSAzKSB7XHJcbiAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAwIC8qIEVycm9yQ29kZXMuQUJSVVBUX0NMT1NJTkdfT0ZfRU1QVFlfQ09NTUVOVCAqLyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChtYXRjaFsxXSkge1xyXG4gICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMTAgLyogRXJyb3JDb2Rlcy5JTkNPUlJFQ1RMWV9DTE9TRURfQ09NTUVOVCAqLyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRlbnQgPSBjb250ZXh0LnNvdXJjZS5zbGljZSg0LCBtYXRjaC5pbmRleCk7XHJcbiAgICAgICAgLy8gQWR2YW5jaW5nIHdpdGggcmVwb3J0aW5nIG5lc3RlZCBjb21tZW50cy5cclxuICAgICAgICBjb25zdCBzID0gY29udGV4dC5zb3VyY2Uuc2xpY2UoMCwgbWF0Y2guaW5kZXgpO1xyXG4gICAgICAgIGxldCBwcmV2SW5kZXggPSAxLCBuZXN0ZWRJbmRleCA9IDA7XHJcbiAgICAgICAgd2hpbGUgKChuZXN0ZWRJbmRleCA9IHMuaW5kZXhPZignPCEtLScsIHByZXZJbmRleCkpICE9PSAtMSkge1xyXG4gICAgICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgbmVzdGVkSW5kZXggLSBwcmV2SW5kZXggKyAxKTtcclxuICAgICAgICAgICAgaWYgKG5lc3RlZEluZGV4ICsgNCA8IHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMTYgLyogRXJyb3JDb2Rlcy5ORVNURURfQ09NTUVOVCAqLyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcHJldkluZGV4ID0gbmVzdGVkSW5kZXggKyAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGggLSBwcmV2SW5kZXggKyAxKTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLyxcclxuICAgICAgICBjb250ZW50LFxyXG4gICAgICAgIGxvYzogZ2V0U2VsZWN0aW9uKGNvbnRleHQsIHN0YXJ0KVxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBwYXJzZUJvZ3VzQ29tbWVudChjb250ZXh0KSB7XHJcbiAgICBjb25zdCBzdGFydCA9IGdldEN1cnNvcihjb250ZXh0KTtcclxuICAgIGNvbnN0IGNvbnRlbnRTdGFydCA9IGNvbnRleHQuc291cmNlWzFdID09PSAnPycgPyAxIDogMjtcclxuICAgIGxldCBjb250ZW50O1xyXG4gICAgY29uc3QgY2xvc2VJbmRleCA9IGNvbnRleHQuc291cmNlLmluZGV4T2YoJz4nKTtcclxuICAgIGlmIChjbG9zZUluZGV4ID09PSAtMSkge1xyXG4gICAgICAgIGNvbnRlbnQgPSBjb250ZXh0LnNvdXJjZS5zbGljZShjb250ZW50U3RhcnQpO1xyXG4gICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCBjb250ZXh0LnNvdXJjZS5sZW5ndGgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29udGVudCA9IGNvbnRleHQuc291cmNlLnNsaWNlKGNvbnRlbnRTdGFydCwgY2xvc2VJbmRleCk7XHJcbiAgICAgICAgYWR2YW5jZUJ5KGNvbnRleHQsIGNsb3NlSW5kZXggKyAxKTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLyxcclxuICAgICAgICBjb250ZW50LFxyXG4gICAgICAgIGxvYzogZ2V0U2VsZWN0aW9uKGNvbnRleHQsIHN0YXJ0KVxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBwYXJzZUVsZW1lbnQoY29udGV4dCwgYW5jZXN0b3JzKSB7XHJcbiAgICAvLyBTdGFydCB0YWcuXHJcbiAgICBjb25zdCB3YXNJblByZSA9IGNvbnRleHQuaW5QcmU7XHJcbiAgICBjb25zdCB3YXNJblZQcmUgPSBjb250ZXh0LmluVlByZTtcclxuICAgIGNvbnN0IHBhcmVudCA9IGxhc3QoYW5jZXN0b3JzKTtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSBwYXJzZVRhZyhjb250ZXh0LCAwIC8qIFRhZ1R5cGUuU3RhcnQgKi8sIHBhcmVudCk7XHJcbiAgICBjb25zdCBpc1ByZUJvdW5kYXJ5ID0gY29udGV4dC5pblByZSAmJiAhd2FzSW5QcmU7XHJcbiAgICBjb25zdCBpc1ZQcmVCb3VuZGFyeSA9IGNvbnRleHQuaW5WUHJlICYmICF3YXNJblZQcmU7XHJcbiAgICBpZiAoZWxlbWVudC5pc1NlbGZDbG9zaW5nIHx8IGNvbnRleHQub3B0aW9ucy5pc1ZvaWRUYWcoZWxlbWVudC50YWcpKSB7XHJcbiAgICAgICAgLy8gIzQwMzAgc2VsZi1jbG9zaW5nIDxwcmU+IHRhZ1xyXG4gICAgICAgIGlmIChpc1ByZUJvdW5kYXJ5KSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuaW5QcmUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzVlByZUJvdW5kYXJ5KSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuaW5WUHJlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBlbGVtZW50O1xyXG4gICAgfVxyXG4gICAgLy8gQ2hpbGRyZW4uXHJcbiAgICBhbmNlc3RvcnMucHVzaChlbGVtZW50KTtcclxuICAgIGNvbnN0IG1vZGUgPSBjb250ZXh0Lm9wdGlvbnMuZ2V0VGV4dE1vZGUoZWxlbWVudCwgcGFyZW50KTtcclxuICAgIGNvbnN0IGNoaWxkcmVuID0gcGFyc2VDaGlsZHJlbihjb250ZXh0LCBtb2RlLCBhbmNlc3RvcnMpO1xyXG4gICAgYW5jZXN0b3JzLnBvcCgpO1xyXG4gICAgLy8gMi54IGlubGluZS10ZW1wbGF0ZSBjb21wYXRcclxuICAgIHtcclxuICAgICAgICBjb25zdCBpbmxpbmVUZW1wbGF0ZVByb3AgPSBlbGVtZW50LnByb3BzLmZpbmQocCA9PiBwLnR5cGUgPT09IDYgLyogTm9kZVR5cGVzLkFUVFJJQlVURSAqLyAmJiBwLm5hbWUgPT09ICdpbmxpbmUtdGVtcGxhdGUnKTtcclxuICAgICAgICBpZiAoaW5saW5lVGVtcGxhdGVQcm9wICYmXHJcbiAgICAgICAgICAgIGNoZWNrQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX0lOTElORV9URU1QTEFURVwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9JTkxJTkVfVEVNUExBVEUgKi8sIGNvbnRleHQsIGlubGluZVRlbXBsYXRlUHJvcC5sb2MpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxvYyA9IGdldFNlbGVjdGlvbihjb250ZXh0LCBlbGVtZW50LmxvYy5lbmQpO1xyXG4gICAgICAgICAgICBpbmxpbmVUZW1wbGF0ZVByb3AudmFsdWUgPSB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiAyIC8qIE5vZGVUeXBlcy5URVhUICovLFxyXG4gICAgICAgICAgICAgICAgY29udGVudDogbG9jLnNvdXJjZSxcclxuICAgICAgICAgICAgICAgIGxvY1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsZW1lbnQuY2hpbGRyZW4gPSBjaGlsZHJlbjtcclxuICAgIC8vIEVuZCB0YWcuXHJcbiAgICBpZiAoc3RhcnRzV2l0aEVuZFRhZ09wZW4oY29udGV4dC5zb3VyY2UsIGVsZW1lbnQudGFnKSkge1xyXG4gICAgICAgIHBhcnNlVGFnKGNvbnRleHQsIDEgLyogVGFnVHlwZS5FbmQgKi8sIHBhcmVudCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMjQgLyogRXJyb3JDb2Rlcy5YX01JU1NJTkdfRU5EX1RBRyAqLywgMCwgZWxlbWVudC5sb2Muc3RhcnQpO1xyXG4gICAgICAgIGlmIChjb250ZXh0LnNvdXJjZS5sZW5ndGggPT09IDAgJiYgZWxlbWVudC50YWcudG9Mb3dlckNhc2UoKSA9PT0gJ3NjcmlwdCcpIHtcclxuICAgICAgICAgICAgY29uc3QgZmlyc3QgPSBjaGlsZHJlblswXTtcclxuICAgICAgICAgICAgaWYgKGZpcnN0ICYmIHN0YXJ0c1dpdGgoZmlyc3QubG9jLnNvdXJjZSwgJzwhLS0nKSkge1xyXG4gICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDggLyogRXJyb3JDb2Rlcy5FT0ZfSU5fU0NSSVBUX0hUTUxfQ09NTUVOVF9MSUtFX1RFWFQgKi8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxlbWVudC5sb2MgPSBnZXRTZWxlY3Rpb24oY29udGV4dCwgZWxlbWVudC5sb2Muc3RhcnQpO1xyXG4gICAgaWYgKGlzUHJlQm91bmRhcnkpIHtcclxuICAgICAgICBjb250ZXh0LmluUHJlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWUHJlQm91bmRhcnkpIHtcclxuICAgICAgICBjb250ZXh0LmluVlByZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGVsZW1lbnQ7XHJcbn1cclxuY29uc3QgaXNTcGVjaWFsVGVtcGxhdGVEaXJlY3RpdmUgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoYGlmLGVsc2UsZWxzZS1pZixmb3Isc2xvdGApO1xyXG5mdW5jdGlvbiBwYXJzZVRhZyhjb250ZXh0LCB0eXBlLCBwYXJlbnQpIHtcclxuICAgIC8vIFRhZyBvcGVuLlxyXG4gICAgY29uc3Qgc3RhcnQgPSBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICBjb25zdCBtYXRjaCA9IC9ePFxcLz8oW2Etel1bXlxcdFxcclxcblxcZiAvPl0qKS9pLmV4ZWMoY29udGV4dC5zb3VyY2UpO1xyXG4gICAgY29uc3QgdGFnID0gbWF0Y2hbMV07XHJcbiAgICBjb25zdCBucyA9IGNvbnRleHQub3B0aW9ucy5nZXROYW1lc3BhY2UodGFnLCBwYXJlbnQpO1xyXG4gICAgYWR2YW5jZUJ5KGNvbnRleHQsIG1hdGNoWzBdLmxlbmd0aCk7XHJcbiAgICBhZHZhbmNlU3BhY2VzKGNvbnRleHQpO1xyXG4gICAgLy8gc2F2ZSBjdXJyZW50IHN0YXRlIGluIGNhc2Ugd2UgbmVlZCB0byByZS1wYXJzZSBhdHRyaWJ1dGVzIHdpdGggdi1wcmVcclxuICAgIGNvbnN0IGN1cnNvciA9IGdldEN1cnNvcihjb250ZXh0KTtcclxuICAgIGNvbnN0IGN1cnJlbnRTb3VyY2UgPSBjb250ZXh0LnNvdXJjZTtcclxuICAgIC8vIGNoZWNrIDxwcmU+IHRhZ1xyXG4gICAgaWYgKGNvbnRleHQub3B0aW9ucy5pc1ByZVRhZyh0YWcpKSB7XHJcbiAgICAgICAgY29udGV4dC5pblByZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICAvLyBBdHRyaWJ1dGVzLlxyXG4gICAgbGV0IHByb3BzID0gcGFyc2VBdHRyaWJ1dGVzKGNvbnRleHQsIHR5cGUpO1xyXG4gICAgLy8gY2hlY2sgdi1wcmVcclxuICAgIGlmICh0eXBlID09PSAwIC8qIFRhZ1R5cGUuU3RhcnQgKi8gJiZcclxuICAgICAgICAhY29udGV4dC5pblZQcmUgJiZcclxuICAgICAgICBwcm9wcy5zb21lKHAgPT4gcC50eXBlID09PSA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8gJiYgcC5uYW1lID09PSAncHJlJykpIHtcclxuICAgICAgICBjb250ZXh0LmluVlByZSA9IHRydWU7XHJcbiAgICAgICAgLy8gcmVzZXQgY29udGV4dFxyXG4gICAgICAgIGV4dGVuZChjb250ZXh0LCBjdXJzb3IpO1xyXG4gICAgICAgIGNvbnRleHQuc291cmNlID0gY3VycmVudFNvdXJjZTtcclxuICAgICAgICAvLyByZS1wYXJzZSBhdHRycyBhbmQgZmlsdGVyIG91dCB2LXByZSBpdHNlbGZcclxuICAgICAgICBwcm9wcyA9IHBhcnNlQXR0cmlidXRlcyhjb250ZXh0LCB0eXBlKS5maWx0ZXIocCA9PiBwLm5hbWUgIT09ICd2LXByZScpO1xyXG4gICAgfVxyXG4gICAgLy8gVGFnIGNsb3NlLlxyXG4gICAgbGV0IGlzU2VsZkNsb3NpbmcgPSBmYWxzZTtcclxuICAgIGlmIChjb250ZXh0LnNvdXJjZS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgOSAvKiBFcnJvckNvZGVzLkVPRl9JTl9UQUcgKi8pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaXNTZWxmQ2xvc2luZyA9IHN0YXJ0c1dpdGgoY29udGV4dC5zb3VyY2UsICcvPicpO1xyXG4gICAgICAgIGlmICh0eXBlID09PSAxIC8qIFRhZ1R5cGUuRW5kICovICYmIGlzU2VsZkNsb3NpbmcpIHtcclxuICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDQgLyogRXJyb3JDb2Rlcy5FTkRfVEFHX1dJVEhfVFJBSUxJTkdfU09MSURVUyAqLyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCBpc1NlbGZDbG9zaW5nID8gMiA6IDEpO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGUgPT09IDEgLyogVGFnVHlwZS5FbmQgKi8pIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyAyLnggZGVwcmVjYXRpb24gY2hlY2tzXHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgaXNDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfVl9JRl9WX0ZPUl9QUkVDRURFTkNFXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX1ZfSUZfVl9GT1JfUFJFQ0VERU5DRSAqLywgY29udGV4dCkpIHtcclxuICAgICAgICBsZXQgaGFzSWYgPSBmYWxzZTtcclxuICAgICAgICBsZXQgaGFzRm9yID0gZmFsc2U7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBwID0gcHJvcHNbaV07XHJcbiAgICAgICAgICAgIGlmIChwLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHAubmFtZSA9PT0gJ2lmJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc0lmID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHAubmFtZSA9PT0gJ2ZvcicpIHtcclxuICAgICAgICAgICAgICAgICAgICBoYXNGb3IgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChoYXNJZiAmJiBoYXNGb3IpIHtcclxuICAgICAgICAgICAgICAgIHdhcm5EZXByZWNhdGlvbihcIkNPTVBJTEVSX1ZfSUZfVl9GT1JfUFJFQ0VERU5DRVwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9WX0lGX1ZfRk9SX1BSRUNFREVOQ0UgKi8sIGNvbnRleHQsIGdldFNlbGVjdGlvbihjb250ZXh0LCBzdGFydCkpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgdGFnVHlwZSA9IDAgLyogRWxlbWVudFR5cGVzLkVMRU1FTlQgKi87XHJcbiAgICBpZiAoIWNvbnRleHQuaW5WUHJlKSB7XHJcbiAgICAgICAgaWYgKHRhZyA9PT0gJ3Nsb3QnKSB7XHJcbiAgICAgICAgICAgIHRhZ1R5cGUgPSAyIC8qIEVsZW1lbnRUeXBlcy5TTE9UICovO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0YWcgPT09ICd0ZW1wbGF0ZScpIHtcclxuICAgICAgICAgICAgaWYgKHByb3BzLnNvbWUocCA9PiBwLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyAmJiBpc1NwZWNpYWxUZW1wbGF0ZURpcmVjdGl2ZShwLm5hbWUpKSkge1xyXG4gICAgICAgICAgICAgICAgdGFnVHlwZSA9IDMgLyogRWxlbWVudFR5cGVzLlRFTVBMQVRFICovO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlzQ29tcG9uZW50KHRhZywgcHJvcHMsIGNvbnRleHQpKSB7XHJcbiAgICAgICAgICAgIHRhZ1R5cGUgPSAxIC8qIEVsZW1lbnRUeXBlcy5DT01QT05FTlQgKi87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovLFxyXG4gICAgICAgIG5zLFxyXG4gICAgICAgIHRhZyxcclxuICAgICAgICB0YWdUeXBlLFxyXG4gICAgICAgIHByb3BzLFxyXG4gICAgICAgIGlzU2VsZkNsb3NpbmcsXHJcbiAgICAgICAgY2hpbGRyZW46IFtdLFxyXG4gICAgICAgIGxvYzogZ2V0U2VsZWN0aW9uKGNvbnRleHQsIHN0YXJ0KSxcclxuICAgICAgICBjb2RlZ2VuTm9kZTogdW5kZWZpbmVkIC8vIHRvIGJlIGNyZWF0ZWQgZHVyaW5nIHRyYW5zZm9ybSBwaGFzZVxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBpc0NvbXBvbmVudCh0YWcsIHByb3BzLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCBvcHRpb25zID0gY29udGV4dC5vcHRpb25zO1xyXG4gICAgaWYgKG9wdGlvbnMuaXNDdXN0b21FbGVtZW50KHRhZykpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAodGFnID09PSAnY29tcG9uZW50JyB8fFxyXG4gICAgICAgIC9eW0EtWl0vLnRlc3QodGFnKSB8fFxyXG4gICAgICAgIGlzQ29yZUNvbXBvbmVudCh0YWcpIHx8XHJcbiAgICAgICAgKG9wdGlvbnMuaXNCdWlsdEluQ29tcG9uZW50ICYmIG9wdGlvbnMuaXNCdWlsdEluQ29tcG9uZW50KHRhZykpIHx8XHJcbiAgICAgICAgKG9wdGlvbnMuaXNOYXRpdmVUYWcgJiYgIW9wdGlvbnMuaXNOYXRpdmVUYWcodGFnKSkpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIC8vIGF0IHRoaXMgcG9pbnQgdGhlIHRhZyBzaG91bGQgYmUgYSBuYXRpdmUgdGFnLCBidXQgY2hlY2sgZm9yIHBvdGVudGlhbCBcImlzXCJcclxuICAgIC8vIGNhc3RpbmdcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBwID0gcHJvcHNbaV07XHJcbiAgICAgICAgaWYgKHAudHlwZSA9PT0gNiAvKiBOb2RlVHlwZXMuQVRUUklCVVRFICovKSB7XHJcbiAgICAgICAgICAgIGlmIChwLm5hbWUgPT09ICdpcycgJiYgcC52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHAudmFsdWUuY29udGVudC5zdGFydHNXaXRoKCd2dWU6JykpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX0lTX09OX0VMRU1FTlRcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfSVNfT05fRUxFTUVOVCAqLywgY29udGV4dCwgcC5sb2MpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGRpcmVjdGl2ZVxyXG4gICAgICAgICAgICAvLyB2LWlzIChUT0RPIERlcHJlY2F0ZSlcclxuICAgICAgICAgICAgaWYgKHAubmFtZSA9PT0gJ2lzJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoXHJcbiAgICAgICAgICAgIC8vIDppcyBvbiBwbGFpbiBlbGVtZW50IC0gb25seSB0cmVhdCBhcyBjb21wb25lbnQgaW4gY29tcGF0IG1vZGVcclxuICAgICAgICAgICAgcC5uYW1lID09PSAnYmluZCcgJiZcclxuICAgICAgICAgICAgICAgIGlzU3RhdGljQXJnT2YocC5hcmcsICdpcycpICYmXHJcbiAgICAgICAgICAgICAgICB0cnVlICYmXHJcbiAgICAgICAgICAgICAgICBjaGVja0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9JU19PTl9FTEVNRU5UXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX0lTX09OX0VMRU1FTlQgKi8sIGNvbnRleHQsIHAubG9jKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VBdHRyaWJ1dGVzKGNvbnRleHQsIHR5cGUpIHtcclxuICAgIGNvbnN0IHByb3BzID0gW107XHJcbiAgICBjb25zdCBhdHRyaWJ1dGVOYW1lcyA9IG5ldyBTZXQoKTtcclxuICAgIHdoaWxlIChjb250ZXh0LnNvdXJjZS5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgIXN0YXJ0c1dpdGgoY29udGV4dC5zb3VyY2UsICc+JykgJiZcclxuICAgICAgICAhc3RhcnRzV2l0aChjb250ZXh0LnNvdXJjZSwgJy8+JykpIHtcclxuICAgICAgICBpZiAoc3RhcnRzV2l0aChjb250ZXh0LnNvdXJjZSwgJy8nKSkge1xyXG4gICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMjIgLyogRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX1NPTElEVVNfSU5fVEFHICovKTtcclxuICAgICAgICAgICAgYWR2YW5jZUJ5KGNvbnRleHQsIDEpO1xyXG4gICAgICAgICAgICBhZHZhbmNlU3BhY2VzKGNvbnRleHQpO1xyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGUgPT09IDEgLyogVGFnVHlwZS5FbmQgKi8pIHtcclxuICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDMgLyogRXJyb3JDb2Rlcy5FTkRfVEFHX1dJVEhfQVRUUklCVVRFUyAqLyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGF0dHIgPSBwYXJzZUF0dHJpYnV0ZShjb250ZXh0LCBhdHRyaWJ1dGVOYW1lcyk7XHJcbiAgICAgICAgLy8gVHJpbSB3aGl0ZXNwYWNlIGJldHdlZW4gY2xhc3NcclxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdnVlanMvY29yZS9pc3N1ZXMvNDI1MVxyXG4gICAgICAgIGlmIChhdHRyLnR5cGUgPT09IDYgLyogTm9kZVR5cGVzLkFUVFJJQlVURSAqLyAmJlxyXG4gICAgICAgICAgICBhdHRyLnZhbHVlICYmXHJcbiAgICAgICAgICAgIGF0dHIubmFtZSA9PT0gJ2NsYXNzJykge1xyXG4gICAgICAgICAgICBhdHRyLnZhbHVlLmNvbnRlbnQgPSBhdHRyLnZhbHVlLmNvbnRlbnQucmVwbGFjZSgvXFxzKy9nLCAnICcpLnRyaW0oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGUgPT09IDAgLyogVGFnVHlwZS5TdGFydCAqLykge1xyXG4gICAgICAgICAgICBwcm9wcy5wdXNoKGF0dHIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoL15bXlxcdFxcclxcblxcZiAvPl0vLnRlc3QoY29udGV4dC5zb3VyY2UpKSB7XHJcbiAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAxNSAvKiBFcnJvckNvZGVzLk1JU1NJTkdfV0hJVEVTUEFDRV9CRVRXRUVOX0FUVFJJQlVURVMgKi8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhZHZhbmNlU3BhY2VzKGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHByb3BzO1xyXG59XHJcbmZ1bmN0aW9uIHBhcnNlQXR0cmlidXRlKGNvbnRleHQsIG5hbWVTZXQpIHtcclxuICAgIC8vIE5hbWUuXHJcbiAgICBjb25zdCBzdGFydCA9IGdldEN1cnNvcihjb250ZXh0KTtcclxuICAgIGNvbnN0IG1hdGNoID0gL15bXlxcdFxcclxcblxcZiAvPl1bXlxcdFxcclxcblxcZiAvPj1dKi8uZXhlYyhjb250ZXh0LnNvdXJjZSk7XHJcbiAgICBjb25zdCBuYW1lID0gbWF0Y2hbMF07XHJcbiAgICBpZiAobmFtZVNldC5oYXMobmFtZSkpIHtcclxuICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMiAvKiBFcnJvckNvZGVzLkRVUExJQ0FURV9BVFRSSUJVVEUgKi8pO1xyXG4gICAgfVxyXG4gICAgbmFtZVNldC5hZGQobmFtZSk7XHJcbiAgICBpZiAobmFtZVswXSA9PT0gJz0nKSB7XHJcbiAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDE5IC8qIEVycm9yQ29kZXMuVU5FWFBFQ1RFRF9FUVVBTFNfU0lHTl9CRUZPUkVfQVRUUklCVVRFX05BTUUgKi8pO1xyXG4gICAgfVxyXG4gICAge1xyXG4gICAgICAgIGNvbnN0IHBhdHRlcm4gPSAvW1wiJzxdL2c7XHJcbiAgICAgICAgbGV0IG07XHJcbiAgICAgICAgd2hpbGUgKChtID0gcGF0dGVybi5leGVjKG5hbWUpKSkge1xyXG4gICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMTcgLyogRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX0NIQVJBQ1RFUl9JTl9BVFRSSUJVVEVfTkFNRSAqLywgbS5pbmRleCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgYWR2YW5jZUJ5KGNvbnRleHQsIG5hbWUubGVuZ3RoKTtcclxuICAgIC8vIFZhbHVlXHJcbiAgICBsZXQgdmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICBpZiAoL15bXFx0XFxyXFxuXFxmIF0qPS8udGVzdChjb250ZXh0LnNvdXJjZSkpIHtcclxuICAgICAgICBhZHZhbmNlU3BhY2VzKGNvbnRleHQpO1xyXG4gICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCAxKTtcclxuICAgICAgICBhZHZhbmNlU3BhY2VzKGNvbnRleHQpO1xyXG4gICAgICAgIHZhbHVlID0gcGFyc2VBdHRyaWJ1dGVWYWx1ZShjb250ZXh0KTtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAxMyAvKiBFcnJvckNvZGVzLk1JU1NJTkdfQVRUUklCVVRFX1ZBTFVFICovKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBsb2MgPSBnZXRTZWxlY3Rpb24oY29udGV4dCwgc3RhcnQpO1xyXG4gICAgaWYgKCFjb250ZXh0LmluVlByZSAmJiAvXih2LVtBLVphLXowLTktXXw6fFxcLnxAfCMpLy50ZXN0KG5hbWUpKSB7XHJcbiAgICAgICAgY29uc3QgbWF0Y2ggPSAvKD86XnYtKFthLXowLTktXSspKT8oPzooPzo6fF5cXC58XkB8XiMpKFxcW1teXFxdXStcXF18W15cXC5dKykpPyguKyk/JC9pLmV4ZWMobmFtZSk7XHJcbiAgICAgICAgbGV0IGlzUHJvcFNob3J0aGFuZCA9IHN0YXJ0c1dpdGgobmFtZSwgJy4nKTtcclxuICAgICAgICBsZXQgZGlyTmFtZSA9IG1hdGNoWzFdIHx8XHJcbiAgICAgICAgICAgIChpc1Byb3BTaG9ydGhhbmQgfHwgc3RhcnRzV2l0aChuYW1lLCAnOicpXHJcbiAgICAgICAgICAgICAgICA/ICdiaW5kJ1xyXG4gICAgICAgICAgICAgICAgOiBzdGFydHNXaXRoKG5hbWUsICdAJylcclxuICAgICAgICAgICAgICAgICAgICA/ICdvbidcclxuICAgICAgICAgICAgICAgICAgICA6ICdzbG90Jyk7XHJcbiAgICAgICAgbGV0IGFyZztcclxuICAgICAgICBpZiAobWF0Y2hbMl0pIHtcclxuICAgICAgICAgICAgY29uc3QgaXNTbG90ID0gZGlyTmFtZSA9PT0gJ3Nsb3QnO1xyXG4gICAgICAgICAgICBjb25zdCBzdGFydE9mZnNldCA9IG5hbWUubGFzdEluZGV4T2YobWF0Y2hbMl0pO1xyXG4gICAgICAgICAgICBjb25zdCBsb2MgPSBnZXRTZWxlY3Rpb24oY29udGV4dCwgZ2V0TmV3UG9zaXRpb24oY29udGV4dCwgc3RhcnQsIHN0YXJ0T2Zmc2V0KSwgZ2V0TmV3UG9zaXRpb24oY29udGV4dCwgc3RhcnQsIHN0YXJ0T2Zmc2V0ICsgbWF0Y2hbMl0ubGVuZ3RoICsgKChpc1Nsb3QgJiYgbWF0Y2hbM10pIHx8ICcnKS5sZW5ndGgpKTtcclxuICAgICAgICAgICAgbGV0IGNvbnRlbnQgPSBtYXRjaFsyXTtcclxuICAgICAgICAgICAgbGV0IGlzU3RhdGljID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYgKGNvbnRlbnQuc3RhcnRzV2l0aCgnWycpKSB7XHJcbiAgICAgICAgICAgICAgICBpc1N0YXRpYyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFjb250ZW50LmVuZHNXaXRoKCddJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMjcgLyogRXJyb3JDb2Rlcy5YX01JU1NJTkdfRFlOQU1JQ19ESVJFQ1RJVkVfQVJHVU1FTlRfRU5EICovKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5zbGljZSgxKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnNsaWNlKDEsIGNvbnRlbnQubGVuZ3RoIC0gMSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaXNTbG90KSB7XHJcbiAgICAgICAgICAgICAgICAvLyAjMTI0MSBzcGVjaWFsIGNhc2UgZm9yIHYtc2xvdDogdnVldGlmeSByZWxpZXMgZXh0ZW5zaXZlbHkgb24gc2xvdFxyXG4gICAgICAgICAgICAgICAgLy8gbmFtZXMgY29udGFpbmluZyBkb3RzLiB2LXNsb3QgZG9lc24ndCBoYXZlIGFueSBtb2RpZmllcnMgYW5kIFZ1ZSAyLnhcclxuICAgICAgICAgICAgICAgIC8vIHN1cHBvcnRzIHN1Y2ggdXNhZ2Ugc28gd2UgYXJlIGtlZXBpbmcgaXQgY29uc2lzdGVudCB3aXRoIDIueC5cclxuICAgICAgICAgICAgICAgIGNvbnRlbnQgKz0gbWF0Y2hbM10gfHwgJyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYXJnID0ge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgICAgICAgICBjb250ZW50LFxyXG4gICAgICAgICAgICAgICAgaXNTdGF0aWMsXHJcbiAgICAgICAgICAgICAgICBjb25zdFR5cGU6IGlzU3RhdGljXHJcbiAgICAgICAgICAgICAgICAgICAgPyAzIC8qIENvbnN0YW50VHlwZXMuQ0FOX1NUUklOR0lGWSAqL1xyXG4gICAgICAgICAgICAgICAgICAgIDogMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLyxcclxuICAgICAgICAgICAgICAgIGxvY1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaXNRdW90ZWQpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWVMb2MgPSB2YWx1ZS5sb2M7XHJcbiAgICAgICAgICAgIHZhbHVlTG9jLnN0YXJ0Lm9mZnNldCsrO1xyXG4gICAgICAgICAgICB2YWx1ZUxvYy5zdGFydC5jb2x1bW4rKztcclxuICAgICAgICAgICAgdmFsdWVMb2MuZW5kID0gYWR2YW5jZVBvc2l0aW9uV2l0aENsb25lKHZhbHVlTG9jLnN0YXJ0LCB2YWx1ZS5jb250ZW50KTtcclxuICAgICAgICAgICAgdmFsdWVMb2Muc291cmNlID0gdmFsdWVMb2Muc291cmNlLnNsaWNlKDEsIC0xKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbW9kaWZpZXJzID0gbWF0Y2hbM10gPyBtYXRjaFszXS5zbGljZSgxKS5zcGxpdCgnLicpIDogW107XHJcbiAgICAgICAgaWYgKGlzUHJvcFNob3J0aGFuZClcclxuICAgICAgICAgICAgbW9kaWZpZXJzLnB1c2goJ3Byb3AnKTtcclxuICAgICAgICAvLyAyLnggY29tcGF0IHYtYmluZDpmb28uc3luYyAtPiB2LW1vZGVsOmZvb1xyXG4gICAgICAgIGlmIChkaXJOYW1lID09PSAnYmluZCcgJiYgYXJnKSB7XHJcbiAgICAgICAgICAgIGlmIChtb2RpZmllcnMuaW5jbHVkZXMoJ3N5bmMnKSAmJlxyXG4gICAgICAgICAgICAgICAgY2hlY2tDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfVl9CSU5EX1NZTkNcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfVl9CSU5EX1NZTkMgKi8sIGNvbnRleHQsIGxvYywgYXJnLmxvYy5zb3VyY2UpKSB7XHJcbiAgICAgICAgICAgICAgICBkaXJOYW1lID0gJ21vZGVsJztcclxuICAgICAgICAgICAgICAgIG1vZGlmaWVycy5zcGxpY2UobW9kaWZpZXJzLmluZGV4T2YoJ3N5bmMnKSwgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBtb2RpZmllcnMuaW5jbHVkZXMoJ3Byb3AnKSkge1xyXG4gICAgICAgICAgICAgICAgY2hlY2tDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfVl9CSU5EX1BST1BcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfVl9CSU5EX1BST1AgKi8sIGNvbnRleHQsIGxvYyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdHlwZTogNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovLFxyXG4gICAgICAgICAgICBuYW1lOiBkaXJOYW1lLFxyXG4gICAgICAgICAgICBleHA6IHZhbHVlICYmIHtcclxuICAgICAgICAgICAgICAgIHR5cGU6IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgICAgICAgICAgY29udGVudDogdmFsdWUuY29udGVudCxcclxuICAgICAgICAgICAgICAgIGlzU3RhdGljOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIC8vIFRyZWF0IGFzIG5vbi1jb25zdGFudCBieSBkZWZhdWx0LiBUaGlzIGNhbiBiZSBwb3RlbnRpYWxseSBzZXQgdG9cclxuICAgICAgICAgICAgICAgIC8vIG90aGVyIHZhbHVlcyBieSBgdHJhbnNmb3JtRXhwcmVzc2lvbmAgdG8gbWFrZSBpdCBlbGlnaWJsZSBmb3IgaG9pc3RpbmcuXHJcbiAgICAgICAgICAgICAgICBjb25zdFR5cGU6IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8sXHJcbiAgICAgICAgICAgICAgICBsb2M6IHZhbHVlLmxvY1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBhcmcsXHJcbiAgICAgICAgICAgIG1vZGlmaWVycyxcclxuICAgICAgICAgICAgbG9jXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIC8vIG1pc3NpbmcgZGlyZWN0aXZlIG5hbWUgb3IgaWxsZWdhbCBkaXJlY3RpdmUgbmFtZVxyXG4gICAgaWYgKCFjb250ZXh0LmluVlByZSAmJiBzdGFydHNXaXRoKG5hbWUsICd2LScpKSB7XHJcbiAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDI2IC8qIEVycm9yQ29kZXMuWF9NSVNTSU5HX0RJUkVDVElWRV9OQU1FICovKTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogNiAvKiBOb2RlVHlwZXMuQVRUUklCVVRFICovLFxyXG4gICAgICAgIG5hbWUsXHJcbiAgICAgICAgdmFsdWU6IHZhbHVlICYmIHtcclxuICAgICAgICAgICAgdHlwZTogMiAvKiBOb2RlVHlwZXMuVEVYVCAqLyxcclxuICAgICAgICAgICAgY29udGVudDogdmFsdWUuY29udGVudCxcclxuICAgICAgICAgICAgbG9jOiB2YWx1ZS5sb2NcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxvY1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBwYXJzZUF0dHJpYnV0ZVZhbHVlKGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Q3Vyc29yKGNvbnRleHQpO1xyXG4gICAgbGV0IGNvbnRlbnQ7XHJcbiAgICBjb25zdCBxdW90ZSA9IGNvbnRleHQuc291cmNlWzBdO1xyXG4gICAgY29uc3QgaXNRdW90ZWQgPSBxdW90ZSA9PT0gYFwiYCB8fCBxdW90ZSA9PT0gYCdgO1xyXG4gICAgaWYgKGlzUXVvdGVkKSB7XHJcbiAgICAgICAgLy8gUXVvdGVkIHZhbHVlLlxyXG4gICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCAxKTtcclxuICAgICAgICBjb25zdCBlbmRJbmRleCA9IGNvbnRleHQuc291cmNlLmluZGV4T2YocXVvdGUpO1xyXG4gICAgICAgIGlmIChlbmRJbmRleCA9PT0gLTEpIHtcclxuICAgICAgICAgICAgY29udGVudCA9IHBhcnNlVGV4dERhdGEoY29udGV4dCwgY29udGV4dC5zb3VyY2UubGVuZ3RoLCA0IC8qIFRleHRNb2Rlcy5BVFRSSUJVVEVfVkFMVUUgKi8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29udGVudCA9IHBhcnNlVGV4dERhdGEoY29udGV4dCwgZW5kSW5kZXgsIDQgLyogVGV4dE1vZGVzLkFUVFJJQlVURV9WQUxVRSAqLyk7XHJcbiAgICAgICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCAxKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBVbnF1b3RlZFxyXG4gICAgICAgIGNvbnN0IG1hdGNoID0gL15bXlxcdFxcclxcblxcZiA+XSsvLmV4ZWMoY29udGV4dC5zb3VyY2UpO1xyXG4gICAgICAgIGlmICghbWF0Y2gpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdW5leHBlY3RlZENoYXJzID0gL1tcIic8PWBdL2c7XHJcbiAgICAgICAgbGV0IG07XHJcbiAgICAgICAgd2hpbGUgKChtID0gdW5leHBlY3RlZENoYXJzLmV4ZWMobWF0Y2hbMF0pKSkge1xyXG4gICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMTggLyogRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX0NIQVJBQ1RFUl9JTl9VTlFVT1RFRF9BVFRSSUJVVEVfVkFMVUUgKi8sIG0uaW5kZXgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZW50ID0gcGFyc2VUZXh0RGF0YShjb250ZXh0LCBtYXRjaFswXS5sZW5ndGgsIDQgLyogVGV4dE1vZGVzLkFUVFJJQlVURV9WQUxVRSAqLyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBjb250ZW50LCBpc1F1b3RlZCwgbG9jOiBnZXRTZWxlY3Rpb24oY29udGV4dCwgc3RhcnQpIH07XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VJbnRlcnBvbGF0aW9uKGNvbnRleHQsIG1vZGUpIHtcclxuICAgIGNvbnN0IFtvcGVuLCBjbG9zZV0gPSBjb250ZXh0Lm9wdGlvbnMuZGVsaW1pdGVycztcclxuICAgIGNvbnN0IGNsb3NlSW5kZXggPSBjb250ZXh0LnNvdXJjZS5pbmRleE9mKGNsb3NlLCBvcGVuLmxlbmd0aCk7XHJcbiAgICBpZiAoY2xvc2VJbmRleCA9PT0gLTEpIHtcclxuICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMjUgLyogRXJyb3JDb2Rlcy5YX01JU1NJTkdfSU5URVJQT0xBVElPTl9FTkQgKi8pO1xyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzdGFydCA9IGdldEN1cnNvcihjb250ZXh0KTtcclxuICAgIGFkdmFuY2VCeShjb250ZXh0LCBvcGVuLmxlbmd0aCk7XHJcbiAgICBjb25zdCBpbm5lclN0YXJ0ID0gZ2V0Q3Vyc29yKGNvbnRleHQpO1xyXG4gICAgY29uc3QgaW5uZXJFbmQgPSBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICBjb25zdCByYXdDb250ZW50TGVuZ3RoID0gY2xvc2VJbmRleCAtIG9wZW4ubGVuZ3RoO1xyXG4gICAgY29uc3QgcmF3Q29udGVudCA9IGNvbnRleHQuc291cmNlLnNsaWNlKDAsIHJhd0NvbnRlbnRMZW5ndGgpO1xyXG4gICAgY29uc3QgcHJlVHJpbUNvbnRlbnQgPSBwYXJzZVRleHREYXRhKGNvbnRleHQsIHJhd0NvbnRlbnRMZW5ndGgsIG1vZGUpO1xyXG4gICAgY29uc3QgY29udGVudCA9IHByZVRyaW1Db250ZW50LnRyaW0oKTtcclxuICAgIGNvbnN0IHN0YXJ0T2Zmc2V0ID0gcHJlVHJpbUNvbnRlbnQuaW5kZXhPZihjb250ZW50KTtcclxuICAgIGlmIChzdGFydE9mZnNldCA+IDApIHtcclxuICAgICAgICBhZHZhbmNlUG9zaXRpb25XaXRoTXV0YXRpb24oaW5uZXJTdGFydCwgcmF3Q29udGVudCwgc3RhcnRPZmZzZXQpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZW5kT2Zmc2V0ID0gcmF3Q29udGVudExlbmd0aCAtIChwcmVUcmltQ29udGVudC5sZW5ndGggLSBjb250ZW50Lmxlbmd0aCAtIHN0YXJ0T2Zmc2V0KTtcclxuICAgIGFkdmFuY2VQb3NpdGlvbldpdGhNdXRhdGlvbihpbm5lckVuZCwgcmF3Q29udGVudCwgZW5kT2Zmc2V0KTtcclxuICAgIGFkdmFuY2VCeShjb250ZXh0LCBjbG9zZS5sZW5ndGgpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiA1IC8qIE5vZGVUeXBlcy5JTlRFUlBPTEFUSU9OICovLFxyXG4gICAgICAgIGNvbnRlbnQ6IHtcclxuICAgICAgICAgICAgdHlwZTogNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgICAgIGlzU3RhdGljOiBmYWxzZSxcclxuICAgICAgICAgICAgLy8gU2V0IGBpc0NvbnN0YW50YCB0byBmYWxzZSBieSBkZWZhdWx0IGFuZCB3aWxsIGRlY2lkZSBpbiB0cmFuc2Zvcm1FeHByZXNzaW9uXHJcbiAgICAgICAgICAgIGNvbnN0VHlwZTogMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLyxcclxuICAgICAgICAgICAgY29udGVudCxcclxuICAgICAgICAgICAgbG9jOiBnZXRTZWxlY3Rpb24oY29udGV4dCwgaW5uZXJTdGFydCwgaW5uZXJFbmQpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBsb2M6IGdldFNlbGVjdGlvbihjb250ZXh0LCBzdGFydClcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VUZXh0KGNvbnRleHQsIG1vZGUpIHtcclxuICAgIGNvbnN0IGVuZFRva2VucyA9IG1vZGUgPT09IDMgLyogVGV4dE1vZGVzLkNEQVRBICovID8gWyddXT4nXSA6IFsnPCcsIGNvbnRleHQub3B0aW9ucy5kZWxpbWl0ZXJzWzBdXTtcclxuICAgIGxldCBlbmRJbmRleCA9IGNvbnRleHQuc291cmNlLmxlbmd0aDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZW5kVG9rZW5zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSBjb250ZXh0LnNvdXJjZS5pbmRleE9mKGVuZFRva2Vuc1tpXSwgMSk7XHJcbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSAmJiBlbmRJbmRleCA+IGluZGV4KSB7XHJcbiAgICAgICAgICAgIGVuZEluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3Qgc3RhcnQgPSBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICBjb25zdCBjb250ZW50ID0gcGFyc2VUZXh0RGF0YShjb250ZXh0LCBlbmRJbmRleCwgbW9kZSk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDIgLyogTm9kZVR5cGVzLlRFWFQgKi8sXHJcbiAgICAgICAgY29udGVudCxcclxuICAgICAgICBsb2M6IGdldFNlbGVjdGlvbihjb250ZXh0LCBzdGFydClcclxuICAgIH07XHJcbn1cclxuLyoqXHJcbiAqIEdldCB0ZXh0IGRhdGEgd2l0aCBhIGdpdmVuIGxlbmd0aCBmcm9tIHRoZSBjdXJyZW50IGxvY2F0aW9uLlxyXG4gKiBUaGlzIHRyYW5zbGF0ZXMgSFRNTCBlbnRpdGllcyBpbiB0aGUgdGV4dCBkYXRhLlxyXG4gKi9cclxuZnVuY3Rpb24gcGFyc2VUZXh0RGF0YShjb250ZXh0LCBsZW5ndGgsIG1vZGUpIHtcclxuICAgIGNvbnN0IHJhd1RleHQgPSBjb250ZXh0LnNvdXJjZS5zbGljZSgwLCBsZW5ndGgpO1xyXG4gICAgYWR2YW5jZUJ5KGNvbnRleHQsIGxlbmd0aCk7XHJcbiAgICBpZiAobW9kZSA9PT0gMiAvKiBUZXh0TW9kZXMuUkFXVEVYVCAqLyB8fFxyXG4gICAgICAgIG1vZGUgPT09IDMgLyogVGV4dE1vZGVzLkNEQVRBICovIHx8XHJcbiAgICAgICAgIXJhd1RleHQuaW5jbHVkZXMoJyYnKSkge1xyXG4gICAgICAgIHJldHVybiByYXdUZXh0O1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gREFUQSBvciBSQ0RBVEEgY29udGFpbmluZyBcIiZcIlwiLiBFbnRpdHkgZGVjb2RpbmcgcmVxdWlyZWQuXHJcbiAgICAgICAgcmV0dXJuIGNvbnRleHQub3B0aW9ucy5kZWNvZGVFbnRpdGllcyhyYXdUZXh0LCBtb2RlID09PSA0IC8qIFRleHRNb2Rlcy5BVFRSSUJVVEVfVkFMVUUgKi8pO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdldEN1cnNvcihjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IGNvbHVtbiwgbGluZSwgb2Zmc2V0IH0gPSBjb250ZXh0O1xyXG4gICAgcmV0dXJuIHsgY29sdW1uLCBsaW5lLCBvZmZzZXQgfTtcclxufVxyXG5mdW5jdGlvbiBnZXRTZWxlY3Rpb24oY29udGV4dCwgc3RhcnQsIGVuZCkge1xyXG4gICAgZW5kID0gZW5kIHx8IGdldEN1cnNvcihjb250ZXh0KTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgc3RhcnQsXHJcbiAgICAgICAgZW5kLFxyXG4gICAgICAgIHNvdXJjZTogY29udGV4dC5vcmlnaW5hbFNvdXJjZS5zbGljZShzdGFydC5vZmZzZXQsIGVuZC5vZmZzZXQpXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGxhc3QoeHMpIHtcclxuICAgIHJldHVybiB4c1t4cy5sZW5ndGggLSAxXTtcclxufVxyXG5mdW5jdGlvbiBzdGFydHNXaXRoKHNvdXJjZSwgc2VhcmNoU3RyaW5nKSB7XHJcbiAgICByZXR1cm4gc291cmNlLnN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nKTtcclxufVxyXG5mdW5jdGlvbiBhZHZhbmNlQnkoY29udGV4dCwgbnVtYmVyT2ZDaGFyYWN0ZXJzKSB7XHJcbiAgICBjb25zdCB7IHNvdXJjZSB9ID0gY29udGV4dDtcclxuICAgIGFkdmFuY2VQb3NpdGlvbldpdGhNdXRhdGlvbihjb250ZXh0LCBzb3VyY2UsIG51bWJlck9mQ2hhcmFjdGVycyk7XHJcbiAgICBjb250ZXh0LnNvdXJjZSA9IHNvdXJjZS5zbGljZShudW1iZXJPZkNoYXJhY3RlcnMpO1xyXG59XHJcbmZ1bmN0aW9uIGFkdmFuY2VTcGFjZXMoY29udGV4dCkge1xyXG4gICAgY29uc3QgbWF0Y2ggPSAvXltcXHRcXHJcXG5cXGYgXSsvLmV4ZWMoY29udGV4dC5zb3VyY2UpO1xyXG4gICAgaWYgKG1hdGNoKSB7XHJcbiAgICAgICAgYWR2YW5jZUJ5KGNvbnRleHQsIG1hdGNoWzBdLmxlbmd0aCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2V0TmV3UG9zaXRpb24oY29udGV4dCwgc3RhcnQsIG51bWJlck9mQ2hhcmFjdGVycykge1xyXG4gICAgcmV0dXJuIGFkdmFuY2VQb3NpdGlvbldpdGhDbG9uZShzdGFydCwgY29udGV4dC5vcmlnaW5hbFNvdXJjZS5zbGljZShzdGFydC5vZmZzZXQsIG51bWJlck9mQ2hhcmFjdGVycyksIG51bWJlck9mQ2hhcmFjdGVycyk7XHJcbn1cclxuZnVuY3Rpb24gZW1pdEVycm9yKGNvbnRleHQsIGNvZGUsIG9mZnNldCwgbG9jID0gZ2V0Q3Vyc29yKGNvbnRleHQpKSB7XHJcbiAgICBpZiAob2Zmc2V0KSB7XHJcbiAgICAgICAgbG9jLm9mZnNldCArPSBvZmZzZXQ7XHJcbiAgICAgICAgbG9jLmNvbHVtbiArPSBvZmZzZXQ7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0Lm9wdGlvbnMub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKGNvZGUsIHtcclxuICAgICAgICBzdGFydDogbG9jLFxyXG4gICAgICAgIGVuZDogbG9jLFxyXG4gICAgICAgIHNvdXJjZTogJydcclxuICAgIH0pKTtcclxufVxyXG5mdW5jdGlvbiBpc0VuZChjb250ZXh0LCBtb2RlLCBhbmNlc3RvcnMpIHtcclxuICAgIGNvbnN0IHMgPSBjb250ZXh0LnNvdXJjZTtcclxuICAgIHN3aXRjaCAobW9kZSkge1xyXG4gICAgICAgIGNhc2UgMCAvKiBUZXh0TW9kZXMuREFUQSAqLzpcclxuICAgICAgICAgICAgaWYgKHN0YXJ0c1dpdGgocywgJzwvJykpIHtcclxuICAgICAgICAgICAgICAgIC8vIFRPRE86IHByb2JhYmx5IGJhZCBwZXJmb3JtYW5jZVxyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IGFuY2VzdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGFydHNXaXRoRW5kVGFnT3BlbihzLCBhbmNlc3RvcnNbaV0udGFnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAxIC8qIFRleHRNb2Rlcy5SQ0RBVEEgKi86XHJcbiAgICAgICAgY2FzZSAyIC8qIFRleHRNb2Rlcy5SQVdURVhUICovOiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGxhc3QoYW5jZXN0b3JzKTtcclxuICAgICAgICAgICAgaWYgKHBhcmVudCAmJiBzdGFydHNXaXRoRW5kVGFnT3BlbihzLCBwYXJlbnQudGFnKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgMyAvKiBUZXh0TW9kZXMuQ0RBVEEgKi86XHJcbiAgICAgICAgICAgIGlmIChzdGFydHNXaXRoKHMsICddXT4nKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gIXM7XHJcbn1cclxuZnVuY3Rpb24gc3RhcnRzV2l0aEVuZFRhZ09wZW4oc291cmNlLCB0YWcpIHtcclxuICAgIHJldHVybiAoc3RhcnRzV2l0aChzb3VyY2UsICc8LycpICYmXHJcbiAgICAgICAgc291cmNlLnNsaWNlKDIsIDIgKyB0YWcubGVuZ3RoKS50b0xvd2VyQ2FzZSgpID09PSB0YWcudG9Mb3dlckNhc2UoKSAmJlxyXG4gICAgICAgIC9bXFx0XFxyXFxuXFxmIC8+XS8udGVzdChzb3VyY2VbMiArIHRhZy5sZW5ndGhdIHx8ICc+JykpO1xyXG59XG5cbmZ1bmN0aW9uIGhvaXN0U3RhdGljKHJvb3QsIGNvbnRleHQpIHtcclxuICAgIHdhbGsocm9vdCwgY29udGV4dCwgXHJcbiAgICAvLyBSb290IG5vZGUgaXMgdW5mb3J0dW5hdGVseSBub24taG9pc3RhYmxlIGR1ZSB0byBwb3RlbnRpYWwgcGFyZW50XHJcbiAgICAvLyBmYWxsdGhyb3VnaCBhdHRyaWJ1dGVzLlxyXG4gICAgaXNTaW5nbGVFbGVtZW50Um9vdChyb290LCByb290LmNoaWxkcmVuWzBdKSk7XHJcbn1cclxuZnVuY3Rpb24gaXNTaW5nbGVFbGVtZW50Um9vdChyb290LCBjaGlsZCkge1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gcm9vdDtcclxuICAgIHJldHVybiAoY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmXHJcbiAgICAgICAgY2hpbGQudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgICFpc1Nsb3RPdXRsZXQoY2hpbGQpKTtcclxufVxyXG5mdW5jdGlvbiB3YWxrKG5vZGUsIGNvbnRleHQsIGRvTm90SG9pc3ROb2RlID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IG5vZGU7XHJcbiAgICBjb25zdCBvcmlnaW5hbENvdW50ID0gY2hpbGRyZW4ubGVuZ3RoO1xyXG4gICAgbGV0IGhvaXN0ZWRDb3VudCA9IDA7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlbltpXTtcclxuICAgICAgICAvLyBvbmx5IHBsYWluIGVsZW1lbnRzICYgdGV4dCBjYWxscyBhcmUgZWxpZ2libGUgZm9yIGhvaXN0aW5nLlxyXG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgICAgIGNoaWxkLnRhZ1R5cGUgPT09IDAgLyogRWxlbWVudFR5cGVzLkVMRU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgY29uc3QgY29uc3RhbnRUeXBlID0gZG9Ob3RIb2lzdE5vZGVcclxuICAgICAgICAgICAgICAgID8gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqL1xyXG4gICAgICAgICAgICAgICAgOiBnZXRDb25zdGFudFR5cGUoY2hpbGQsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBpZiAoY29uc3RhbnRUeXBlID4gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnN0YW50VHlwZSA+PSAyIC8qIENvbnN0YW50VHlwZXMuQ0FOX0hPSVNUICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQuY29kZWdlbk5vZGUucGF0Y2hGbGFnID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLTEgLyogUGF0Y2hGbGFncy5IT0lTVEVEICovICsgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGAgLyogSE9JU1RFRCAqL2AgOiBgYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQuY29kZWdlbk5vZGUgPSBjb250ZXh0LmhvaXN0KGNoaWxkLmNvZGVnZW5Ob2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBob2lzdGVkQ291bnQrKztcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIG5vZGUgbWF5IGNvbnRhaW4gZHluYW1pYyBjaGlsZHJlbiwgYnV0IGl0cyBwcm9wcyBtYXkgYmUgZWxpZ2libGUgZm9yXHJcbiAgICAgICAgICAgICAgICAvLyBob2lzdGluZy5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvZGVnZW5Ob2RlID0gY2hpbGQuY29kZWdlbk5vZGU7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29kZWdlbk5vZGUudHlwZSA9PT0gMTMgLyogTm9kZVR5cGVzLlZOT0RFX0NBTEwgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmbGFnID0gZ2V0UGF0Y2hGbGFnKGNvZGVnZW5Ob2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKCFmbGFnIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWcgPT09IDUxMiAvKiBQYXRjaEZsYWdzLk5FRURfUEFUQ0ggKi8gfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmxhZyA9PT0gMSAvKiBQYXRjaEZsYWdzLlRFWFQgKi8pICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldEdlbmVyYXRlZFByb3BzQ29uc3RhbnRUeXBlKGNoaWxkLCBjb250ZXh0KSA+PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAvKiBDb25zdGFudFR5cGVzLkNBTl9IT0lTVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9wcyA9IGdldE5vZGVQcm9wcyhjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWdlbk5vZGUucHJvcHMgPSBjb250ZXh0LmhvaXN0KHByb3BzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29kZWdlbk5vZGUuZHluYW1pY1Byb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVnZW5Ob2RlLmR5bmFtaWNQcm9wcyA9IGNvbnRleHQuaG9pc3QoY29kZWdlbk5vZGUuZHluYW1pY1Byb3BzKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoY2hpbGQudHlwZSA9PT0gMTIgLyogTm9kZVR5cGVzLlRFWFRfQ0FMTCAqLyAmJlxyXG4gICAgICAgICAgICBnZXRDb25zdGFudFR5cGUoY2hpbGQuY29udGVudCwgY29udGV4dCkgPj0gMiAvKiBDb25zdGFudFR5cGVzLkNBTl9IT0lTVCAqLykge1xyXG4gICAgICAgICAgICBjaGlsZC5jb2RlZ2VuTm9kZSA9IGNvbnRleHQuaG9pc3QoY2hpbGQuY29kZWdlbk5vZGUpO1xyXG4gICAgICAgICAgICBob2lzdGVkQ291bnQrKztcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gd2FsayBmdXJ0aGVyXHJcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgY29uc3QgaXNDb21wb25lbnQgPSBjaGlsZC50YWdUeXBlID09PSAxIC8qIEVsZW1lbnRUeXBlcy5DT01QT05FTlQgKi87XHJcbiAgICAgICAgICAgIGlmIChpc0NvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zY29wZXMudlNsb3QrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB3YWxrKGNoaWxkLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgaWYgKGlzQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNjb3Blcy52U2xvdC0tO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGNoaWxkLnR5cGUgPT09IDExIC8qIE5vZGVUeXBlcy5GT1IgKi8pIHtcclxuICAgICAgICAgICAgLy8gRG8gbm90IGhvaXN0IHYtZm9yIHNpbmdsZSBjaGlsZCBiZWNhdXNlIGl0IGhhcyB0byBiZSBhIGJsb2NrXHJcbiAgICAgICAgICAgIHdhbGsoY2hpbGQsIGNvbnRleHQsIGNoaWxkLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGNoaWxkLnR5cGUgPT09IDkgLyogTm9kZVR5cGVzLklGICovKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGQuYnJhbmNoZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIC8vIERvIG5vdCBob2lzdCB2LWlmIHNpbmdsZSBjaGlsZCBiZWNhdXNlIGl0IGhhcyB0byBiZSBhIGJsb2NrXHJcbiAgICAgICAgICAgICAgICB3YWxrKGNoaWxkLmJyYW5jaGVzW2ldLCBjb250ZXh0LCBjaGlsZC5icmFuY2hlc1tpXS5jaGlsZHJlbi5sZW5ndGggPT09IDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGhvaXN0ZWRDb3VudCAmJiBjb250ZXh0LnRyYW5zZm9ybUhvaXN0KSB7XHJcbiAgICAgICAgY29udGV4dC50cmFuc2Zvcm1Ib2lzdChjaGlsZHJlbiwgY29udGV4dCwgbm9kZSk7XHJcbiAgICB9XHJcbiAgICAvLyBhbGwgY2hpbGRyZW4gd2VyZSBob2lzdGVkIC0gdGhlIGVudGlyZSBjaGlsZHJlbiBhcnJheSBpcyBob2lzdGFibGUuXHJcbiAgICBpZiAoaG9pc3RlZENvdW50ICYmXHJcbiAgICAgICAgaG9pc3RlZENvdW50ID09PSBvcmlnaW5hbENvdW50ICYmXHJcbiAgICAgICAgbm9kZS50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgbm9kZS50YWdUeXBlID09PSAwIC8qIEVsZW1lbnRUeXBlcy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgbm9kZS5jb2RlZ2VuTm9kZSAmJlxyXG4gICAgICAgIG5vZGUuY29kZWdlbk5vZGUudHlwZSA9PT0gMTMgLyogTm9kZVR5cGVzLlZOT0RFX0NBTEwgKi8gJiZcclxuICAgICAgICBpc0FycmF5KG5vZGUuY29kZWdlbk5vZGUuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgbm9kZS5jb2RlZ2VuTm9kZS5jaGlsZHJlbiA9IGNvbnRleHQuaG9pc3QoY3JlYXRlQXJyYXlFeHByZXNzaW9uKG5vZGUuY29kZWdlbk5vZGUuY2hpbGRyZW4pKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZXRDb25zdGFudFR5cGUobm9kZSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBjb25zdGFudENhY2hlIH0gPSBjb250ZXh0O1xyXG4gICAgc3dpdGNoIChub2RlLnR5cGUpIHtcclxuICAgICAgICBjYXNlIDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi86XHJcbiAgICAgICAgICAgIGlmIChub2RlLnRhZ1R5cGUgIT09IDAgLyogRWxlbWVudFR5cGVzLkVMRU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlZCA9IGNvbnN0YW50Q2FjaGUuZ2V0KG5vZGUpO1xyXG4gICAgICAgICAgICBpZiAoY2FjaGVkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgY29kZWdlbk5vZGUgPSBub2RlLmNvZGVnZW5Ob2RlO1xyXG4gICAgICAgICAgICBpZiAoY29kZWdlbk5vZGUudHlwZSAhPT0gMTMgLyogTm9kZVR5cGVzLlZOT0RFX0NBTEwgKi8pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjb2RlZ2VuTm9kZS5pc0Jsb2NrICYmXHJcbiAgICAgICAgICAgICAgICBub2RlLnRhZyAhPT0gJ3N2ZycgJiZcclxuICAgICAgICAgICAgICAgIG5vZGUudGFnICE9PSAnZm9yZWlnbk9iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGZsYWcgPSBnZXRQYXRjaEZsYWcoY29kZWdlbk5vZGUpO1xyXG4gICAgICAgICAgICBpZiAoIWZsYWcpIHtcclxuICAgICAgICAgICAgICAgIGxldCByZXR1cm5UeXBlID0gMyAvKiBDb25zdGFudFR5cGVzLkNBTl9TVFJJTkdJRlkgKi87XHJcbiAgICAgICAgICAgICAgICAvLyBFbGVtZW50IGl0c2VsZiBoYXMgbm8gcGF0Y2ggZmxhZy4gSG93ZXZlciB3ZSBzdGlsbCBuZWVkIHRvIGNoZWNrOlxyXG4gICAgICAgICAgICAgICAgLy8gMS4gRXZlbiBmb3IgYSBub2RlIHdpdGggbm8gcGF0Y2ggZmxhZywgaXQgaXMgcG9zc2libGUgZm9yIGl0IHRvIGNvbnRhaW5cclxuICAgICAgICAgICAgICAgIC8vIG5vbi1ob2lzdGFibGUgZXhwcmVzc2lvbnMgdGhhdCByZWZlcnMgdG8gc2NvcGUgdmFyaWFibGVzLCBlLmcuIGNvbXBpbGVyXHJcbiAgICAgICAgICAgICAgICAvLyBpbmplY3RlZCBrZXlzIG9yIGNhY2hlZCBldmVudCBoYW5kbGVycy4gVGhlcmVmb3JlIHdlIG5lZWQgdG8gYWx3YXlzXHJcbiAgICAgICAgICAgICAgICAvLyBjaGVjayB0aGUgY29kZWdlbk5vZGUncyBwcm9wcyB0byBiZSBzdXJlLlxyXG4gICAgICAgICAgICAgICAgY29uc3QgZ2VuZXJhdGVkUHJvcHNUeXBlID0gZ2V0R2VuZXJhdGVkUHJvcHNDb25zdGFudFR5cGUobm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkUHJvcHNUeXBlID09PSAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3RhbnRDYWNoZS5zZXQobm9kZSwgMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkUHJvcHNUeXBlIDwgcmV0dXJuVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblR5cGUgPSBnZW5lcmF0ZWRQcm9wc1R5cGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyAyLiBpdHMgY2hpbGRyZW4uXHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZFR5cGUgPSBnZXRDb25zdGFudFR5cGUobm9kZS5jaGlsZHJlbltpXSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkVHlwZSA9PT0gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdGFudENhY2hlLnNldChub2RlLCAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi87XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZFR5cGUgPCByZXR1cm5UeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblR5cGUgPSBjaGlsZFR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gMy4gaWYgdGhlIHR5cGUgaXMgbm90IGFscmVhZHkgQ0FOX1NLSVBfUEFUQ0ggd2hpY2ggaXMgdGhlIGxvd2VzdCBub24tMFxyXG4gICAgICAgICAgICAgICAgLy8gdHlwZSwgY2hlY2sgaWYgYW55IG9mIHRoZSBwcm9wcyBjYW4gY2F1c2UgdGhlIHR5cGUgdG8gYmUgbG93ZXJlZFxyXG4gICAgICAgICAgICAgICAgLy8gd2UgY2FuIHNraXAgY2FuX3BhdGNoIGJlY2F1c2UgaXQncyBndWFyYW50ZWVkIGJ5IHRoZSBhYnNlbmNlIG9mIGFcclxuICAgICAgICAgICAgICAgIC8vIHBhdGNoRmxhZy5cclxuICAgICAgICAgICAgICAgIGlmIChyZXR1cm5UeXBlID4gMSAvKiBDb25zdGFudFR5cGVzLkNBTl9TS0lQX1BBVENIICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnByb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHAgPSBub2RlLnByb3BzW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocC50eXBlID09PSA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8gJiYgcC5uYW1lID09PSAnYmluZCcgJiYgcC5leHApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cFR5cGUgPSBnZXRDb25zdGFudFR5cGUocC5leHAsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cFR5cGUgPT09IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdGFudENhY2hlLnNldChub2RlLCAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBUeXBlIDwgcmV0dXJuVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblR5cGUgPSBleHBUeXBlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gb25seSBzdmcvZm9yZWlnbk9iamVjdCBjb3VsZCBiZSBibG9jayBoZXJlLCBob3dldmVyIGlmIHRoZXkgYXJlXHJcbiAgICAgICAgICAgICAgICAvLyBzdGF0aWMgdGhlbiB0aGV5IGRvbid0IG5lZWQgdG8gYmUgYmxvY2tzIHNpbmNlIHRoZXJlIHdpbGwgYmUgbm9cclxuICAgICAgICAgICAgICAgIC8vIG5lc3RlZCB1cGRhdGVzLlxyXG4gICAgICAgICAgICAgICAgaWYgKGNvZGVnZW5Ob2RlLmlzQmxvY2spIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBleGNlcHQgc2V0IGN1c3RvbSBkaXJlY3RpdmVzLlxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5wcm9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwID0gbm9kZS5wcm9wc1tpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdGFudENhY2hlLnNldChub2RlLCAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQucmVtb3ZlSGVscGVyKE9QRU5fQkxPQ0spO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQucmVtb3ZlSGVscGVyKGdldFZOb2RlQmxvY2tIZWxwZXIoY29udGV4dC5pblNTUiwgY29kZWdlbk5vZGUuaXNDb21wb25lbnQpKTtcclxuICAgICAgICAgICAgICAgICAgICBjb2RlZ2VuTm9kZS5pc0Jsb2NrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5oZWxwZXIoZ2V0Vk5vZGVIZWxwZXIoY29udGV4dC5pblNTUiwgY29kZWdlbk5vZGUuaXNDb21wb25lbnQpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0YW50Q2FjaGUuc2V0KG5vZGUsIHJldHVyblR5cGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJldHVyblR5cGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdGFudENhY2hlLnNldChub2RlLCAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAyIC8qIE5vZGVUeXBlcy5URVhUICovOlxyXG4gICAgICAgIGNhc2UgMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLzpcclxuICAgICAgICAgICAgcmV0dXJuIDMgLyogQ29uc3RhbnRUeXBlcy5DQU5fU1RSSU5HSUZZICovO1xyXG4gICAgICAgIGNhc2UgOSAvKiBOb2RlVHlwZXMuSUYgKi86XHJcbiAgICAgICAgY2FzZSAxMSAvKiBOb2RlVHlwZXMuRk9SICovOlxyXG4gICAgICAgIGNhc2UgMTAgLyogTm9kZVR5cGVzLklGX0JSQU5DSCAqLzpcclxuICAgICAgICAgICAgcmV0dXJuIDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi87XHJcbiAgICAgICAgY2FzZSA1IC8qIE5vZGVUeXBlcy5JTlRFUlBPTEFUSU9OICovOlxyXG4gICAgICAgIGNhc2UgMTIgLyogTm9kZVR5cGVzLlRFWFRfQ0FMTCAqLzpcclxuICAgICAgICAgICAgcmV0dXJuIGdldENvbnN0YW50VHlwZShub2RlLmNvbnRlbnQsIGNvbnRleHQpO1xyXG4gICAgICAgIGNhc2UgNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIHJldHVybiBub2RlLmNvbnN0VHlwZTtcclxuICAgICAgICBjYXNlIDggLyogTm9kZVR5cGVzLkNPTVBPVU5EX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIGxldCByZXR1cm5UeXBlID0gMyAvKiBDb25zdGFudFR5cGVzLkNBTl9TVFJJTkdJRlkgKi87XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBub2RlLmNoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzU3RyaW5nKGNoaWxkKSB8fCBpc1N5bWJvbChjaGlsZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkVHlwZSA9IGdldENvbnN0YW50VHlwZShjaGlsZCwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRUeXBlID09PSAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGlsZFR5cGUgPCByZXR1cm5UeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuVHlwZSA9IGNoaWxkVHlwZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcmV0dXJuVHlwZTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSA7XHJcbiAgICAgICAgICAgIHJldHVybiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovO1xyXG4gICAgfVxyXG59XHJcbmNvbnN0IGFsbG93SG9pc3RlZEhlbHBlclNldCA9IG5ldyBTZXQoW1xyXG4gICAgTk9STUFMSVpFX0NMQVNTLFxyXG4gICAgTk9STUFMSVpFX1NUWUxFLFxyXG4gICAgTk9STUFMSVpFX1BST1BTLFxyXG4gICAgR1VBUkRfUkVBQ1RJVkVfUFJPUFNcclxuXSk7XHJcbmZ1bmN0aW9uIGdldENvbnN0YW50VHlwZU9mSGVscGVyQ2FsbCh2YWx1ZSwgY29udGV4dCkge1xyXG4gICAgaWYgKHZhbHVlLnR5cGUgPT09IDE0IC8qIE5vZGVUeXBlcy5KU19DQUxMX0VYUFJFU1NJT04gKi8gJiZcclxuICAgICAgICAhaXNTdHJpbmcodmFsdWUuY2FsbGVlKSAmJlxyXG4gICAgICAgIGFsbG93SG9pc3RlZEhlbHBlclNldC5oYXModmFsdWUuY2FsbGVlKSkge1xyXG4gICAgICAgIGNvbnN0IGFyZyA9IHZhbHVlLmFyZ3VtZW50c1swXTtcclxuICAgICAgICBpZiAoYXJnLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBnZXRDb25zdGFudFR5cGUoYXJnLCBjb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoYXJnLnR5cGUgPT09IDE0IC8qIE5vZGVUeXBlcy5KU19DQUxMX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgLy8gaW4gdGhlIGNhc2Ugb2YgbmVzdGVkIGhlbHBlciBjYWxsLCBlLmcuIGBub3JtYWxpemVQcm9wcyhndWFyZFJlYWN0aXZlUHJvcHMoZXhwKSlgXHJcbiAgICAgICAgICAgIHJldHVybiBnZXRDb25zdGFudFR5cGVPZkhlbHBlckNhbGwoYXJnLCBjb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLztcclxufVxyXG5mdW5jdGlvbiBnZXRHZW5lcmF0ZWRQcm9wc0NvbnN0YW50VHlwZShub2RlLCBjb250ZXh0KSB7XHJcbiAgICBsZXQgcmV0dXJuVHlwZSA9IDMgLyogQ29uc3RhbnRUeXBlcy5DQU5fU1RSSU5HSUZZICovO1xyXG4gICAgY29uc3QgcHJvcHMgPSBnZXROb2RlUHJvcHMobm9kZSk7XHJcbiAgICBpZiAocHJvcHMgJiYgcHJvcHMudHlwZSA9PT0gMTUgLyogTm9kZVR5cGVzLkpTX09CSkVDVF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgY29uc3QgeyBwcm9wZXJ0aWVzIH0gPSBwcm9wcztcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgeyBrZXksIHZhbHVlIH0gPSBwcm9wZXJ0aWVzW2ldO1xyXG4gICAgICAgICAgICBjb25zdCBrZXlUeXBlID0gZ2V0Q29uc3RhbnRUeXBlKGtleSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGlmIChrZXlUeXBlID09PSAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ga2V5VHlwZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoa2V5VHlwZSA8IHJldHVyblR5cGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVyblR5cGUgPSBrZXlUeXBlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCB2YWx1ZVR5cGU7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZS50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICAgICAgdmFsdWVUeXBlID0gZ2V0Q29uc3RhbnRUeXBlKHZhbHVlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZS50eXBlID09PSAxNCAvKiBOb2RlVHlwZXMuSlNfQ0FMTF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBzb21lIGhlbHBlciBjYWxscyBjYW4gYmUgaG9pc3RlZCxcclxuICAgICAgICAgICAgICAgIC8vIHN1Y2ggYXMgdGhlIGBub3JtYWxpemVQcm9wc2AgZ2VuZXJhdGVkIGJ5IHRoZSBjb21waWxlciBmb3IgcHJlLW5vcm1hbGl6ZSBjbGFzcyxcclxuICAgICAgICAgICAgICAgIC8vIGluIHRoaXMgY2FzZSB3ZSBuZWVkIHRvIHJlc3BlY3QgdGhlIENvbnN0YW50VHlwZSBvZiB0aGUgaGVscGVyJ3MgYXJndW1lbnRzXHJcbiAgICAgICAgICAgICAgICB2YWx1ZVR5cGUgPSBnZXRDb25zdGFudFR5cGVPZkhlbHBlckNhbGwodmFsdWUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFsdWVUeXBlID0gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFsdWVUeXBlID09PSAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVUeXBlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZVR5cGUgPCByZXR1cm5UeXBlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5UeXBlID0gdmFsdWVUeXBlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldHVyblR5cGU7XHJcbn1cclxuZnVuY3Rpb24gZ2V0Tm9kZVByb3BzKG5vZGUpIHtcclxuICAgIGNvbnN0IGNvZGVnZW5Ob2RlID0gbm9kZS5jb2RlZ2VuTm9kZTtcclxuICAgIGlmIChjb2RlZ2VuTm9kZS50eXBlID09PSAxMyAvKiBOb2RlVHlwZXMuVk5PREVfQ0FMTCAqLykge1xyXG4gICAgICAgIHJldHVybiBjb2RlZ2VuTm9kZS5wcm9wcztcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZXRQYXRjaEZsYWcobm9kZSkge1xyXG4gICAgY29uc3QgZmxhZyA9IG5vZGUucGF0Y2hGbGFnO1xyXG4gICAgcmV0dXJuIGZsYWcgPyBwYXJzZUludChmbGFnLCAxMCkgOiB1bmRlZmluZWQ7XHJcbn1cblxuZnVuY3Rpb24gY3JlYXRlVHJhbnNmb3JtQ29udGV4dChyb290LCB7IGZpbGVuYW1lID0gJycsIHByZWZpeElkZW50aWZpZXJzID0gZmFsc2UsIGhvaXN0U3RhdGljID0gZmFsc2UsIGNhY2hlSGFuZGxlcnMgPSBmYWxzZSwgbm9kZVRyYW5zZm9ybXMgPSBbXSwgZGlyZWN0aXZlVHJhbnNmb3JtcyA9IHt9LCB0cmFuc2Zvcm1Ib2lzdCA9IG51bGwsIGlzQnVpbHRJbkNvbXBvbmVudCA9IE5PT1AsIGlzQ3VzdG9tRWxlbWVudCA9IE5PT1AsIGV4cHJlc3Npb25QbHVnaW5zID0gW10sIHNjb3BlSWQgPSBudWxsLCBzbG90dGVkID0gdHJ1ZSwgc3NyID0gZmFsc2UsIGluU1NSID0gZmFsc2UsIHNzckNzc1ZhcnMgPSBgYCwgYmluZGluZ01ldGFkYXRhID0gRU1QVFlfT0JKLCBpbmxpbmUgPSBmYWxzZSwgaXNUUyA9IGZhbHNlLCBvbkVycm9yID0gZGVmYXVsdE9uRXJyb3IsIG9uV2FybiA9IGRlZmF1bHRPbldhcm4sIGNvbXBhdENvbmZpZyB9KSB7XHJcbiAgICBjb25zdCBuYW1lTWF0Y2ggPSBmaWxlbmFtZS5yZXBsYWNlKC9cXD8uKiQvLCAnJykubWF0Y2goLyhbXi9cXFxcXSspXFwuXFx3KyQvKTtcclxuICAgIGNvbnN0IGNvbnRleHQgPSB7XHJcbiAgICAgICAgLy8gb3B0aW9uc1xyXG4gICAgICAgIHNlbGZOYW1lOiBuYW1lTWF0Y2ggJiYgY2FwaXRhbGl6ZShjYW1lbGl6ZSQxKG5hbWVNYXRjaFsxXSkpLFxyXG4gICAgICAgIHByZWZpeElkZW50aWZpZXJzLFxyXG4gICAgICAgIGhvaXN0U3RhdGljLFxyXG4gICAgICAgIGNhY2hlSGFuZGxlcnMsXHJcbiAgICAgICAgbm9kZVRyYW5zZm9ybXMsXHJcbiAgICAgICAgZGlyZWN0aXZlVHJhbnNmb3JtcyxcclxuICAgICAgICB0cmFuc2Zvcm1Ib2lzdCxcclxuICAgICAgICBpc0J1aWx0SW5Db21wb25lbnQsXHJcbiAgICAgICAgaXNDdXN0b21FbGVtZW50LFxyXG4gICAgICAgIGV4cHJlc3Npb25QbHVnaW5zLFxyXG4gICAgICAgIHNjb3BlSWQsXHJcbiAgICAgICAgc2xvdHRlZCxcclxuICAgICAgICBzc3IsXHJcbiAgICAgICAgaW5TU1IsXHJcbiAgICAgICAgc3NyQ3NzVmFycyxcclxuICAgICAgICBiaW5kaW5nTWV0YWRhdGEsXHJcbiAgICAgICAgaW5saW5lLFxyXG4gICAgICAgIGlzVFMsXHJcbiAgICAgICAgb25FcnJvcixcclxuICAgICAgICBvbldhcm4sXHJcbiAgICAgICAgY29tcGF0Q29uZmlnLFxyXG4gICAgICAgIC8vIHN0YXRlXHJcbiAgICAgICAgcm9vdCxcclxuICAgICAgICBoZWxwZXJzOiBuZXcgTWFwKCksXHJcbiAgICAgICAgY29tcG9uZW50czogbmV3IFNldCgpLFxyXG4gICAgICAgIGRpcmVjdGl2ZXM6IG5ldyBTZXQoKSxcclxuICAgICAgICBob2lzdHM6IFtdLFxyXG4gICAgICAgIGltcG9ydHM6IFtdLFxyXG4gICAgICAgIGNvbnN0YW50Q2FjaGU6IG5ldyBNYXAoKSxcclxuICAgICAgICB0ZW1wczogMCxcclxuICAgICAgICBjYWNoZWQ6IDAsXHJcbiAgICAgICAgaWRlbnRpZmllcnM6IE9iamVjdC5jcmVhdGUobnVsbCksXHJcbiAgICAgICAgc2NvcGVzOiB7XHJcbiAgICAgICAgICAgIHZGb3I6IDAsXHJcbiAgICAgICAgICAgIHZTbG90OiAwLFxyXG4gICAgICAgICAgICB2UHJlOiAwLFxyXG4gICAgICAgICAgICB2T25jZTogMFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcGFyZW50OiBudWxsLFxyXG4gICAgICAgIGN1cnJlbnROb2RlOiByb290LFxyXG4gICAgICAgIGNoaWxkSW5kZXg6IDAsXHJcbiAgICAgICAgaW5WT25jZTogZmFsc2UsXHJcbiAgICAgICAgLy8gbWV0aG9kc1xyXG4gICAgICAgIGhlbHBlcihuYW1lKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvdW50ID0gY29udGV4dC5oZWxwZXJzLmdldChuYW1lKSB8fCAwO1xyXG4gICAgICAgICAgICBjb250ZXh0LmhlbHBlcnMuc2V0KG5hbWUsIGNvdW50ICsgMSk7XHJcbiAgICAgICAgICAgIHJldHVybiBuYW1lO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVtb3ZlSGVscGVyKG5hbWUpIHtcclxuICAgICAgICAgICAgY29uc3QgY291bnQgPSBjb250ZXh0LmhlbHBlcnMuZ2V0KG5hbWUpO1xyXG4gICAgICAgICAgICBpZiAoY291bnQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDb3VudCA9IGNvdW50IC0gMTtcclxuICAgICAgICAgICAgICAgIGlmICghY3VycmVudENvdW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5oZWxwZXJzLmRlbGV0ZShuYW1lKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuaGVscGVycy5zZXQobmFtZSwgY3VycmVudENvdW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaGVscGVyU3RyaW5nKG5hbWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGBfJHtoZWxwZXJOYW1lTWFwW2NvbnRleHQuaGVscGVyKG5hbWUpXX1gO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVwbGFjZU5vZGUobm9kZSkge1xyXG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LmN1cnJlbnROb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb2RlIGJlaW5nIHJlcGxhY2VkIGlzIGFscmVhZHkgcmVtb3ZlZC5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghY29udGV4dC5wYXJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXBsYWNlIHJvb3Qgbm9kZS5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250ZXh0LnBhcmVudC5jaGlsZHJlbltjb250ZXh0LmNoaWxkSW5kZXhdID0gY29udGV4dC5jdXJyZW50Tm9kZSA9IG5vZGU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICByZW1vdmVOb2RlKG5vZGUpIHtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhY29udGV4dC5wYXJlbnQpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlbW92ZSByb290IG5vZGUuYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgbGlzdCA9IGNvbnRleHQucGFyZW50LmNoaWxkcmVuO1xyXG4gICAgICAgICAgICBjb25zdCByZW1vdmFsSW5kZXggPSBub2RlXHJcbiAgICAgICAgICAgICAgICA/IGxpc3QuaW5kZXhPZihub2RlKVxyXG4gICAgICAgICAgICAgICAgOiBjb250ZXh0LmN1cnJlbnROb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgPyBjb250ZXh0LmNoaWxkSW5kZXhcclxuICAgICAgICAgICAgICAgICAgICA6IC0xO1xyXG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiByZW1vdmFsSW5kZXggPCAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYG5vZGUgYmVpbmcgcmVtb3ZlZCBpcyBub3QgYSBjaGlsZCBvZiBjdXJyZW50IHBhcmVudGApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghbm9kZSB8fCBub2RlID09PSBjb250ZXh0LmN1cnJlbnROb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjdXJyZW50IG5vZGUgcmVtb3ZlZFxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5jdXJyZW50Tm9kZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm9uTm9kZVJlbW92ZWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIHNpYmxpbmcgbm9kZSByZW1vdmVkXHJcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5jaGlsZEluZGV4ID4gcmVtb3ZhbEluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5jaGlsZEluZGV4LS07XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5vbk5vZGVSZW1vdmVkKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udGV4dC5wYXJlbnQuY2hpbGRyZW4uc3BsaWNlKHJlbW92YWxJbmRleCwgMSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvbk5vZGVSZW1vdmVkOiAoKSA9PiB7IH0sXHJcbiAgICAgICAgYWRkSWRlbnRpZmllcnMoZXhwKSB7XHJcbiAgICAgICAgfSxcclxuICAgICAgICByZW1vdmVJZGVudGlmaWVycyhleHApIHtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGhvaXN0KGV4cCkge1xyXG4gICAgICAgICAgICBpZiAoaXNTdHJpbmcoZXhwKSlcclxuICAgICAgICAgICAgICAgIGV4cCA9IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oZXhwKTtcclxuICAgICAgICAgICAgY29udGV4dC5ob2lzdHMucHVzaChleHApO1xyXG4gICAgICAgICAgICBjb25zdCBpZGVudGlmaWVyID0gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgX2hvaXN0ZWRfJHtjb250ZXh0LmhvaXN0cy5sZW5ndGh9YCwgZmFsc2UsIGV4cC5sb2MsIDIgLyogQ29uc3RhbnRUeXBlcy5DQU5fSE9JU1QgKi8pO1xyXG4gICAgICAgICAgICBpZGVudGlmaWVyLmhvaXN0ZWQgPSBleHA7XHJcbiAgICAgICAgICAgIHJldHVybiBpZGVudGlmaWVyO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2FjaGUoZXhwLCBpc1ZOb2RlID0gZmFsc2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUNhY2hlRXhwcmVzc2lvbihjb250ZXh0LmNhY2hlZCsrLCBleHAsIGlzVk5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB7XHJcbiAgICAgICAgY29udGV4dC5maWx0ZXJzID0gbmV3IFNldCgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbnRleHQ7XHJcbn1cclxuZnVuY3Rpb24gdHJhbnNmb3JtKHJvb3QsIG9wdGlvbnMpIHtcclxuICAgIGNvbnN0IGNvbnRleHQgPSBjcmVhdGVUcmFuc2Zvcm1Db250ZXh0KHJvb3QsIG9wdGlvbnMpO1xyXG4gICAgdHJhdmVyc2VOb2RlKHJvb3QsIGNvbnRleHQpO1xyXG4gICAgaWYgKG9wdGlvbnMuaG9pc3RTdGF0aWMpIHtcclxuICAgICAgICBob2lzdFN0YXRpYyhyb290LCBjb250ZXh0KTtcclxuICAgIH1cclxuICAgIGlmICghb3B0aW9ucy5zc3IpIHtcclxuICAgICAgICBjcmVhdGVSb290Q29kZWdlbihyb290LCBjb250ZXh0KTtcclxuICAgIH1cclxuICAgIC8vIGZpbmFsaXplIG1ldGEgaW5mb3JtYXRpb25cclxuICAgIHJvb3QuaGVscGVycyA9IFsuLi5jb250ZXh0LmhlbHBlcnMua2V5cygpXTtcclxuICAgIHJvb3QuY29tcG9uZW50cyA9IFsuLi5jb250ZXh0LmNvbXBvbmVudHNdO1xyXG4gICAgcm9vdC5kaXJlY3RpdmVzID0gWy4uLmNvbnRleHQuZGlyZWN0aXZlc107XHJcbiAgICByb290LmltcG9ydHMgPSBjb250ZXh0LmltcG9ydHM7XHJcbiAgICByb290LmhvaXN0cyA9IGNvbnRleHQuaG9pc3RzO1xyXG4gICAgcm9vdC50ZW1wcyA9IGNvbnRleHQudGVtcHM7XHJcbiAgICByb290LmNhY2hlZCA9IGNvbnRleHQuY2FjaGVkO1xyXG4gICAge1xyXG4gICAgICAgIHJvb3QuZmlsdGVycyA9IFsuLi5jb250ZXh0LmZpbHRlcnNdO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVJvb3RDb2RlZ2VuKHJvb3QsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgaGVscGVyIH0gPSBjb250ZXh0O1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gcm9vdDtcclxuICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuWzBdO1xyXG4gICAgICAgIC8vIGlmIHRoZSBzaW5nbGUgY2hpbGQgaXMgYW4gZWxlbWVudCwgdHVybiBpdCBpbnRvIGEgYmxvY2suXHJcbiAgICAgICAgaWYgKGlzU2luZ2xlRWxlbWVudFJvb3Qocm9vdCwgY2hpbGQpICYmIGNoaWxkLmNvZGVnZW5Ob2RlKSB7XHJcbiAgICAgICAgICAgIC8vIHNpbmdsZSBlbGVtZW50IHJvb3QgaXMgbmV2ZXIgaG9pc3RlZCBzbyBjb2RlZ2VuTm9kZSB3aWxsIG5ldmVyIGJlXHJcbiAgICAgICAgICAgIC8vIFNpbXBsZUV4cHJlc3Npb25Ob2RlXHJcbiAgICAgICAgICAgIGNvbnN0IGNvZGVnZW5Ob2RlID0gY2hpbGQuY29kZWdlbk5vZGU7XHJcbiAgICAgICAgICAgIGlmIChjb2RlZ2VuTm9kZS50eXBlID09PSAxMyAvKiBOb2RlVHlwZXMuVk5PREVfQ0FMTCAqLykge1xyXG4gICAgICAgICAgICAgICAgbWFrZUJsb2NrKGNvZGVnZW5Ob2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByb290LmNvZGVnZW5Ob2RlID0gY29kZWdlbk5vZGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyAtIHNpbmdsZSA8c2xvdC8+LCBJZk5vZGUsIEZvck5vZGU6IGFscmVhZHkgYmxvY2tzLlxyXG4gICAgICAgICAgICAvLyAtIHNpbmdsZSB0ZXh0IG5vZGU6IGFsd2F5cyBwYXRjaGVkLlxyXG4gICAgICAgICAgICAvLyByb290IGNvZGVnZW4gZmFsbHMgdGhyb3VnaCB2aWEgZ2VuTm9kZSgpXHJcbiAgICAgICAgICAgIHJvb3QuY29kZWdlbk5vZGUgPSBjaGlsZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChjaGlsZHJlbi5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgLy8gcm9vdCBoYXMgbXVsdGlwbGUgbm9kZXMgLSByZXR1cm4gYSBmcmFnbWVudCBibG9jay5cclxuICAgICAgICBsZXQgcGF0Y2hGbGFnID0gNjQgLyogUGF0Y2hGbGFncy5TVEFCTEVfRlJBR01FTlQgKi87XHJcbiAgICAgICAgbGV0IHBhdGNoRmxhZ1RleHQgPSBQYXRjaEZsYWdOYW1lc1s2NCAvKiBQYXRjaEZsYWdzLlNUQUJMRV9GUkFHTUVOVCAqL107XHJcbiAgICAgICAgLy8gY2hlY2sgaWYgdGhlIGZyYWdtZW50IGFjdHVhbGx5IGNvbnRhaW5zIGEgc2luZ2xlIHZhbGlkIGNoaWxkIHdpdGhcclxuICAgICAgICAvLyB0aGUgcmVzdCBiZWluZyBjb21tZW50c1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgY2hpbGRyZW4uZmlsdGVyKGMgPT4gYy50eXBlICE9PSAzIC8qIE5vZGVUeXBlcy5DT01NRU5UICovKS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgcGF0Y2hGbGFnIHw9IDIwNDggLyogUGF0Y2hGbGFncy5ERVZfUk9PVF9GUkFHTUVOVCAqLztcclxuICAgICAgICAgICAgcGF0Y2hGbGFnVGV4dCArPSBgLCAke1BhdGNoRmxhZ05hbWVzWzIwNDggLyogUGF0Y2hGbGFncy5ERVZfUk9PVF9GUkFHTUVOVCAqL119YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcm9vdC5jb2RlZ2VuTm9kZSA9IGNyZWF0ZVZOb2RlQ2FsbChjb250ZXh0LCBoZWxwZXIoRlJBR01FTlQpLCB1bmRlZmluZWQsIHJvb3QuY2hpbGRyZW4sIHBhdGNoRmxhZyArICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgIC8qICR7cGF0Y2hGbGFnVGV4dH0gKi9gIDogYGApLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdHJ1ZSwgdW5kZWZpbmVkLCBmYWxzZSAvKiBpc0NvbXBvbmVudCAqLyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIDtcclxufVxyXG5mdW5jdGlvbiB0cmF2ZXJzZUNoaWxkcmVuKHBhcmVudCwgY29udGV4dCkge1xyXG4gICAgbGV0IGkgPSAwO1xyXG4gICAgY29uc3Qgbm9kZVJlbW92ZWQgPSAoKSA9PiB7XHJcbiAgICAgICAgaS0tO1xyXG4gICAgfTtcclxuICAgIGZvciAoOyBpIDwgcGFyZW50LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgY2hpbGQgPSBwYXJlbnQuY2hpbGRyZW5baV07XHJcbiAgICAgICAgaWYgKGlzU3RyaW5nKGNoaWxkKSlcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgY29udGV4dC5wYXJlbnQgPSBwYXJlbnQ7XHJcbiAgICAgICAgY29udGV4dC5jaGlsZEluZGV4ID0gaTtcclxuICAgICAgICBjb250ZXh0Lm9uTm9kZVJlbW92ZWQgPSBub2RlUmVtb3ZlZDtcclxuICAgICAgICB0cmF2ZXJzZU5vZGUoY2hpbGQsIGNvbnRleHQpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHRyYXZlcnNlTm9kZShub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb250ZXh0LmN1cnJlbnROb2RlID0gbm9kZTtcclxuICAgIC8vIGFwcGx5IHRyYW5zZm9ybSBwbHVnaW5zXHJcbiAgICBjb25zdCB7IG5vZGVUcmFuc2Zvcm1zIH0gPSBjb250ZXh0O1xyXG4gICAgY29uc3QgZXhpdEZucyA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlVHJhbnNmb3Jtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IG9uRXhpdCA9IG5vZGVUcmFuc2Zvcm1zW2ldKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgIGlmIChvbkV4aXQpIHtcclxuICAgICAgICAgICAgaWYgKGlzQXJyYXkob25FeGl0KSkge1xyXG4gICAgICAgICAgICAgICAgZXhpdEZucy5wdXNoKC4uLm9uRXhpdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBleGl0Rm5zLnB1c2gob25FeGl0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWNvbnRleHQuY3VycmVudE5vZGUpIHtcclxuICAgICAgICAgICAgLy8gbm9kZSB3YXMgcmVtb3ZlZFxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBub2RlIG1heSBoYXZlIGJlZW4gcmVwbGFjZWRcclxuICAgICAgICAgICAgbm9kZSA9IGNvbnRleHQuY3VycmVudE5vZGU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgc3dpdGNoIChub2RlLnR5cGUpIHtcclxuICAgICAgICBjYXNlIDMgLyogTm9kZVR5cGVzLkNPTU1FTlQgKi86XHJcbiAgICAgICAgICAgIGlmICghY29udGV4dC5zc3IpIHtcclxuICAgICAgICAgICAgICAgIC8vIGluamVjdCBpbXBvcnQgZm9yIHRoZSBDb21tZW50IHN5bWJvbCwgd2hpY2ggaXMgbmVlZGVkIGZvciBjcmVhdGluZ1xyXG4gICAgICAgICAgICAgICAgLy8gY29tbWVudCBub2RlcyB3aXRoIGBjcmVhdGVWTm9kZWBcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuaGVscGVyKENSRUFURV9DT01NRU5UKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDUgLyogTm9kZVR5cGVzLklOVEVSUE9MQVRJT04gKi86XHJcbiAgICAgICAgICAgIC8vIG5vIG5lZWQgdG8gdHJhdmVyc2UsIGJ1dCB3ZSBuZWVkIHRvIGluamVjdCB0b1N0cmluZyBoZWxwZXJcclxuICAgICAgICAgICAgaWYgKCFjb250ZXh0LnNzcikge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5oZWxwZXIoVE9fRElTUExBWV9TVFJJTkcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vIGZvciBjb250YWluZXIgdHlwZXMsIGZ1cnRoZXIgdHJhdmVyc2UgZG93bndhcmRzXHJcbiAgICAgICAgY2FzZSA5IC8qIE5vZGVUeXBlcy5JRiAqLzpcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmJyYW5jaGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB0cmF2ZXJzZU5vZGUobm9kZS5icmFuY2hlc1tpXSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAxMCAvKiBOb2RlVHlwZXMuSUZfQlJBTkNIICovOlxyXG4gICAgICAgIGNhc2UgMTEgLyogTm9kZVR5cGVzLkZPUiAqLzpcclxuICAgICAgICBjYXNlIDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi86XHJcbiAgICAgICAgY2FzZSAwIC8qIE5vZGVUeXBlcy5ST09UICovOlxyXG4gICAgICAgICAgICB0cmF2ZXJzZUNoaWxkcmVuKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIC8vIGV4aXQgdHJhbnNmb3Jtc1xyXG4gICAgY29udGV4dC5jdXJyZW50Tm9kZSA9IG5vZGU7XHJcbiAgICBsZXQgaSA9IGV4aXRGbnMubGVuZ3RoO1xyXG4gICAgd2hpbGUgKGktLSkge1xyXG4gICAgICAgIGV4aXRGbnNbaV0oKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjcmVhdGVTdHJ1Y3R1cmFsRGlyZWN0aXZlVHJhbnNmb3JtKG5hbWUsIGZuKSB7XHJcbiAgICBjb25zdCBtYXRjaGVzID0gaXNTdHJpbmcobmFtZSlcclxuICAgICAgICA/IChuKSA9PiBuID09PSBuYW1lXHJcbiAgICAgICAgOiAobikgPT4gbmFtZS50ZXN0KG4pO1xyXG4gICAgcmV0dXJuIChub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLykge1xyXG4gICAgICAgICAgICBjb25zdCB7IHByb3BzIH0gPSBub2RlO1xyXG4gICAgICAgICAgICAvLyBzdHJ1Y3R1cmFsIGRpcmVjdGl2ZSB0cmFuc2Zvcm1zIGFyZSBub3QgY29uY2VybmVkIHdpdGggc2xvdHNcclxuICAgICAgICAgICAgLy8gYXMgdGhleSBhcmUgaGFuZGxlZCBzZXBhcmF0ZWx5IGluIHZTbG90LnRzXHJcbiAgICAgICAgICAgIGlmIChub2RlLnRhZ1R5cGUgPT09IDMgLyogRWxlbWVudFR5cGVzLlRFTVBMQVRFICovICYmIHByb3BzLnNvbWUoaXNWU2xvdCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBleGl0Rm5zID0gW107XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHByb3AgPSBwcm9wc1tpXTtcclxuICAgICAgICAgICAgICAgIGlmIChwcm9wLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyAmJiBtYXRjaGVzKHByb3AubmFtZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBzdHJ1Y3R1cmFsIGRpcmVjdGl2ZXMgYXJlIHJlbW92ZWQgdG8gYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYWxzbyB3ZSByZW1vdmUgdGhlbSAqYmVmb3JlKiBhcHBseWluZyBzbyB0aGF0IGl0IGNhbiBmdXJ0aGVyXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdHJhdmVyc2UgaXRzZWxmIGluIGNhc2UgaXQgbW92ZXMgdGhlIG5vZGUgYXJvdW5kXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGktLTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBvbkV4aXQgPSBmbihub2RlLCBwcm9wLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob25FeGl0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBleGl0Rm5zLnB1c2gob25FeGl0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZXhpdEZucztcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XG5cbmNvbnN0IFBVUkVfQU5OT1RBVElPTiA9IGAvKiNfX1BVUkVfXyovYDtcclxuY29uc3QgYWxpYXNIZWxwZXIgPSAocykgPT4gYCR7aGVscGVyTmFtZU1hcFtzXX06IF8ke2hlbHBlck5hbWVNYXBbc119YDtcclxuZnVuY3Rpb24gY3JlYXRlQ29kZWdlbkNvbnRleHQoYXN0LCB7IG1vZGUgPSAnZnVuY3Rpb24nLCBwcmVmaXhJZGVudGlmaWVycyA9IG1vZGUgPT09ICdtb2R1bGUnLCBzb3VyY2VNYXAgPSBmYWxzZSwgZmlsZW5hbWUgPSBgdGVtcGxhdGUudnVlLmh0bWxgLCBzY29wZUlkID0gbnVsbCwgb3B0aW1pemVJbXBvcnRzID0gZmFsc2UsIHJ1bnRpbWVHbG9iYWxOYW1lID0gYFZ1ZWAsIHJ1bnRpbWVNb2R1bGVOYW1lID0gYHZ1ZWAsIHNzclJ1bnRpbWVNb2R1bGVOYW1lID0gJ3Z1ZS9zZXJ2ZXItcmVuZGVyZXInLCBzc3IgPSBmYWxzZSwgaXNUUyA9IGZhbHNlLCBpblNTUiA9IGZhbHNlIH0pIHtcclxuICAgIGNvbnN0IGNvbnRleHQgPSB7XHJcbiAgICAgICAgbW9kZSxcclxuICAgICAgICBwcmVmaXhJZGVudGlmaWVycyxcclxuICAgICAgICBzb3VyY2VNYXAsXHJcbiAgICAgICAgZmlsZW5hbWUsXHJcbiAgICAgICAgc2NvcGVJZCxcclxuICAgICAgICBvcHRpbWl6ZUltcG9ydHMsXHJcbiAgICAgICAgcnVudGltZUdsb2JhbE5hbWUsXHJcbiAgICAgICAgcnVudGltZU1vZHVsZU5hbWUsXHJcbiAgICAgICAgc3NyUnVudGltZU1vZHVsZU5hbWUsXHJcbiAgICAgICAgc3NyLFxyXG4gICAgICAgIGlzVFMsXHJcbiAgICAgICAgaW5TU1IsXHJcbiAgICAgICAgc291cmNlOiBhc3QubG9jLnNvdXJjZSxcclxuICAgICAgICBjb2RlOiBgYCxcclxuICAgICAgICBjb2x1bW46IDEsXHJcbiAgICAgICAgbGluZTogMSxcclxuICAgICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgICAgaW5kZW50TGV2ZWw6IDAsXHJcbiAgICAgICAgcHVyZTogZmFsc2UsXHJcbiAgICAgICAgbWFwOiB1bmRlZmluZWQsXHJcbiAgICAgICAgaGVscGVyKGtleSkge1xyXG4gICAgICAgICAgICByZXR1cm4gYF8ke2hlbHBlck5hbWVNYXBba2V5XX1gO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcHVzaChjb2RlLCBub2RlKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuY29kZSArPSBjb2RlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaW5kZW50KCkge1xyXG4gICAgICAgICAgICBuZXdsaW5lKCsrY29udGV4dC5pbmRlbnRMZXZlbCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBkZWluZGVudCh3aXRob3V0TmV3TGluZSA9IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIGlmICh3aXRob3V0TmV3TGluZSkge1xyXG4gICAgICAgICAgICAgICAgLS1jb250ZXh0LmluZGVudExldmVsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbmV3bGluZSgtLWNvbnRleHQuaW5kZW50TGV2ZWwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBuZXdsaW5lKCkge1xyXG4gICAgICAgICAgICBuZXdsaW5lKGNvbnRleHQuaW5kZW50TGV2ZWwpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBmdW5jdGlvbiBuZXdsaW5lKG4pIHtcclxuICAgICAgICBjb250ZXh0LnB1c2goJ1xcbicgKyBgICBgLnJlcGVhdChuKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29udGV4dDtcclxufVxyXG5mdW5jdGlvbiBnZW5lcmF0ZShhc3QsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgY29uc3QgY29udGV4dCA9IGNyZWF0ZUNvZGVnZW5Db250ZXh0KGFzdCwgb3B0aW9ucyk7XHJcbiAgICBpZiAob3B0aW9ucy5vbkNvbnRleHRDcmVhdGVkKVxyXG4gICAgICAgIG9wdGlvbnMub25Db250ZXh0Q3JlYXRlZChjb250ZXh0KTtcclxuICAgIGNvbnN0IHsgbW9kZSwgcHVzaCwgcHJlZml4SWRlbnRpZmllcnMsIGluZGVudCwgZGVpbmRlbnQsIG5ld2xpbmUsIHNjb3BlSWQsIHNzciB9ID0gY29udGV4dDtcclxuICAgIGNvbnN0IGhhc0hlbHBlcnMgPSBhc3QuaGVscGVycy5sZW5ndGggPiAwO1xyXG4gICAgY29uc3QgdXNlV2l0aEJsb2NrID0gIXByZWZpeElkZW50aWZpZXJzICYmIG1vZGUgIT09ICdtb2R1bGUnO1xyXG4gICAgLy8gcHJlYW1ibGVzXHJcbiAgICAvLyBpbiBzZXR1cCgpIGlubGluZSBtb2RlLCB0aGUgcHJlYW1ibGUgaXMgZ2VuZXJhdGVkIGluIGEgc3ViIGNvbnRleHRcclxuICAgIC8vIGFuZCByZXR1cm5lZCBzZXBhcmF0ZWx5LlxyXG4gICAgY29uc3QgcHJlYW1ibGVDb250ZXh0ID0gY29udGV4dDtcclxuICAgIHtcclxuICAgICAgICBnZW5GdW5jdGlvblByZWFtYmxlKGFzdCwgcHJlYW1ibGVDb250ZXh0KTtcclxuICAgIH1cclxuICAgIC8vIGVudGVyIHJlbmRlciBmdW5jdGlvblxyXG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gc3NyID8gYHNzclJlbmRlcmAgOiBgcmVuZGVyYDtcclxuICAgIGNvbnN0IGFyZ3MgPSBzc3IgPyBbJ19jdHgnLCAnX3B1c2gnLCAnX3BhcmVudCcsICdfYXR0cnMnXSA6IFsnX2N0eCcsICdfY2FjaGUnXTtcclxuICAgIGNvbnN0IHNpZ25hdHVyZSA9IGFyZ3Muam9pbignLCAnKTtcclxuICAgIHtcclxuICAgICAgICBwdXNoKGBmdW5jdGlvbiAke2Z1bmN0aW9uTmFtZX0oJHtzaWduYXR1cmV9KSB7YCk7XHJcbiAgICB9XHJcbiAgICBpbmRlbnQoKTtcclxuICAgIGlmICh1c2VXaXRoQmxvY2spIHtcclxuICAgICAgICBwdXNoKGB3aXRoIChfY3R4KSB7YCk7XHJcbiAgICAgICAgaW5kZW50KCk7XHJcbiAgICAgICAgLy8gZnVuY3Rpb24gbW9kZSBjb25zdCBkZWNsYXJhdGlvbnMgc2hvdWxkIGJlIGluc2lkZSB3aXRoIGJsb2NrXHJcbiAgICAgICAgLy8gYWxzbyB0aGV5IHNob3VsZCBiZSByZW5hbWVkIHRvIGF2b2lkIGNvbGxpc2lvbiB3aXRoIHVzZXIgcHJvcGVydGllc1xyXG4gICAgICAgIGlmIChoYXNIZWxwZXJzKSB7XHJcbiAgICAgICAgICAgIHB1c2goYGNvbnN0IHsgJHthc3QuaGVscGVycy5tYXAoYWxpYXNIZWxwZXIpLmpvaW4oJywgJyl9IH0gPSBfVnVlYCk7XHJcbiAgICAgICAgICAgIHB1c2goYFxcbmApO1xyXG4gICAgICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gZ2VuZXJhdGUgYXNzZXQgcmVzb2x1dGlvbiBzdGF0ZW1lbnRzXHJcbiAgICBpZiAoYXN0LmNvbXBvbmVudHMubGVuZ3RoKSB7XHJcbiAgICAgICAgZ2VuQXNzZXRzKGFzdC5jb21wb25lbnRzLCAnY29tcG9uZW50JywgY29udGV4dCk7XHJcbiAgICAgICAgaWYgKGFzdC5kaXJlY3RpdmVzLmxlbmd0aCB8fCBhc3QudGVtcHMgPiAwKSB7XHJcbiAgICAgICAgICAgIG5ld2xpbmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoYXN0LmRpcmVjdGl2ZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgZ2VuQXNzZXRzKGFzdC5kaXJlY3RpdmVzLCAnZGlyZWN0aXZlJywgY29udGV4dCk7XHJcbiAgICAgICAgaWYgKGFzdC50ZW1wcyA+IDApIHtcclxuICAgICAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChhc3QuZmlsdGVycyAmJiBhc3QuZmlsdGVycy5sZW5ndGgpIHtcclxuICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICAgICAgZ2VuQXNzZXRzKGFzdC5maWx0ZXJzLCAnZmlsdGVyJywgY29udGV4dCk7XHJcbiAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGFzdC50ZW1wcyA+IDApIHtcclxuICAgICAgICBwdXNoKGBsZXQgYCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhc3QudGVtcHM7IGkrKykge1xyXG4gICAgICAgICAgICBwdXNoKGAke2kgPiAwID8gYCwgYCA6IGBgfV90ZW1wJHtpfWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChhc3QuY29tcG9uZW50cy5sZW5ndGggfHwgYXN0LmRpcmVjdGl2ZXMubGVuZ3RoIHx8IGFzdC50ZW1wcykge1xyXG4gICAgICAgIHB1c2goYFxcbmApO1xyXG4gICAgICAgIG5ld2xpbmUoKTtcclxuICAgIH1cclxuICAgIC8vIGdlbmVyYXRlIHRoZSBWTm9kZSB0cmVlIGV4cHJlc3Npb25cclxuICAgIGlmICghc3NyKSB7XHJcbiAgICAgICAgcHVzaChgcmV0dXJuIGApO1xyXG4gICAgfVxyXG4gICAgaWYgKGFzdC5jb2RlZ2VuTm9kZSkge1xyXG4gICAgICAgIGdlbk5vZGUoYXN0LmNvZGVnZW5Ob2RlLCBjb250ZXh0KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHB1c2goYG51bGxgKTtcclxuICAgIH1cclxuICAgIGlmICh1c2VXaXRoQmxvY2spIHtcclxuICAgICAgICBkZWluZGVudCgpO1xyXG4gICAgICAgIHB1c2goYH1gKTtcclxuICAgIH1cclxuICAgIGRlaW5kZW50KCk7XHJcbiAgICBwdXNoKGB9YCk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGFzdCxcclxuICAgICAgICBjb2RlOiBjb250ZXh0LmNvZGUsXHJcbiAgICAgICAgcHJlYW1ibGU6IGBgLFxyXG4gICAgICAgIC8vIFNvdXJjZU1hcEdlbmVyYXRvciBkb2VzIGhhdmUgdG9KU09OKCkgbWV0aG9kIGJ1dCBpdCdzIG5vdCBpbiB0aGUgdHlwZXNcclxuICAgICAgICBtYXA6IGNvbnRleHQubWFwID8gY29udGV4dC5tYXAudG9KU09OKCkgOiB1bmRlZmluZWRcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gZ2VuRnVuY3Rpb25QcmVhbWJsZShhc3QsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgc3NyLCBwcmVmaXhJZGVudGlmaWVycywgcHVzaCwgbmV3bGluZSwgcnVudGltZU1vZHVsZU5hbWUsIHJ1bnRpbWVHbG9iYWxOYW1lLCBzc3JSdW50aW1lTW9kdWxlTmFtZSB9ID0gY29udGV4dDtcclxuICAgIGNvbnN0IFZ1ZUJpbmRpbmcgPSBydW50aW1lR2xvYmFsTmFtZTtcclxuICAgIC8vIEdlbmVyYXRlIGNvbnN0IGRlY2xhcmF0aW9uIGZvciBoZWxwZXJzXHJcbiAgICAvLyBJbiBwcmVmaXggbW9kZSwgd2UgcGxhY2UgdGhlIGNvbnN0IGRlY2xhcmF0aW9uIGF0IHRvcCBzbyBpdCdzIGRvbmVcclxuICAgIC8vIG9ubHkgb25jZTsgQnV0IGlmIHdlIG5vdCBwcmVmaXhpbmcsIHdlIHBsYWNlIHRoZSBkZWNsYXJhdGlvbiBpbnNpZGUgdGhlXHJcbiAgICAvLyB3aXRoIGJsb2NrIHNvIGl0IGRvZXNuJ3QgaW5jdXIgdGhlIGBpbmAgY2hlY2sgY29zdCBmb3IgZXZlcnkgaGVscGVyIGFjY2Vzcy5cclxuICAgIGlmIChhc3QuaGVscGVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAvLyBcIndpdGhcIiBtb2RlLlxyXG4gICAgICAgICAgICAvLyBzYXZlIFZ1ZSBpbiBhIHNlcGFyYXRlIHZhcmlhYmxlIHRvIGF2b2lkIGNvbGxpc2lvblxyXG4gICAgICAgICAgICBwdXNoKGBjb25zdCBfVnVlID0gJHtWdWVCaW5kaW5nfVxcbmApO1xyXG4gICAgICAgICAgICAvLyBpbiBcIndpdGhcIiBtb2RlLCBoZWxwZXJzIGFyZSBkZWNsYXJlZCBpbnNpZGUgdGhlIHdpdGggYmxvY2sgdG8gYXZvaWRcclxuICAgICAgICAgICAgLy8gaGFzIGNoZWNrIGNvc3QsIGJ1dCBob2lzdHMgYXJlIGxpZnRlZCBvdXQgb2YgdGhlIGZ1bmN0aW9uIC0gd2UgbmVlZFxyXG4gICAgICAgICAgICAvLyB0byBwcm92aWRlIHRoZSBoZWxwZXIgaGVyZS5cclxuICAgICAgICAgICAgaWYgKGFzdC5ob2lzdHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdGF0aWNIZWxwZXJzID0gW1xyXG4gICAgICAgICAgICAgICAgICAgIENSRUFURV9WTk9ERSxcclxuICAgICAgICAgICAgICAgICAgICBDUkVBVEVfRUxFTUVOVF9WTk9ERSxcclxuICAgICAgICAgICAgICAgICAgICBDUkVBVEVfQ09NTUVOVCxcclxuICAgICAgICAgICAgICAgICAgICBDUkVBVEVfVEVYVCxcclxuICAgICAgICAgICAgICAgICAgICBDUkVBVEVfU1RBVElDXHJcbiAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihoZWxwZXIgPT4gYXN0LmhlbHBlcnMuaW5jbHVkZXMoaGVscGVyKSlcclxuICAgICAgICAgICAgICAgICAgICAubWFwKGFsaWFzSGVscGVyKVxyXG4gICAgICAgICAgICAgICAgICAgIC5qb2luKCcsICcpO1xyXG4gICAgICAgICAgICAgICAgcHVzaChgY29uc3QgeyAke3N0YXRpY0hlbHBlcnN9IH0gPSBfVnVlXFxuYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBnZW5Ib2lzdHMoYXN0LmhvaXN0cywgY29udGV4dCk7XHJcbiAgICBuZXdsaW5lKCk7XHJcbiAgICBwdXNoKGByZXR1cm4gYCk7XHJcbn1cclxuZnVuY3Rpb24gZ2VuQXNzZXRzKGFzc2V0cywgdHlwZSwgeyBoZWxwZXIsIHB1c2gsIG5ld2xpbmUsIGlzVFMgfSkge1xyXG4gICAgY29uc3QgcmVzb2x2ZXIgPSBoZWxwZXIodHlwZSA9PT0gJ2ZpbHRlcidcclxuICAgICAgICA/IFJFU09MVkVfRklMVEVSXHJcbiAgICAgICAgOiB0eXBlID09PSAnY29tcG9uZW50J1xyXG4gICAgICAgICAgICA/IFJFU09MVkVfQ09NUE9ORU5UXHJcbiAgICAgICAgICAgIDogUkVTT0xWRV9ESVJFQ1RJVkUpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhc3NldHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgaWQgPSBhc3NldHNbaV07XHJcbiAgICAgICAgLy8gcG90ZW50aWFsIGNvbXBvbmVudCBpbXBsaWNpdCBzZWxmLXJlZmVyZW5jZSBpbmZlcnJlZCBmcm9tIFNGQyBmaWxlbmFtZVxyXG4gICAgICAgIGNvbnN0IG1heWJlU2VsZlJlZmVyZW5jZSA9IGlkLmVuZHNXaXRoKCdfX3NlbGYnKTtcclxuICAgICAgICBpZiAobWF5YmVTZWxmUmVmZXJlbmNlKSB7XHJcbiAgICAgICAgICAgIGlkID0gaWQuc2xpY2UoMCwgLTYpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwdXNoKGBjb25zdCAke3RvVmFsaWRBc3NldElkKGlkLCB0eXBlKX0gPSAke3Jlc29sdmVyfSgke0pTT04uc3RyaW5naWZ5KGlkKX0ke21heWJlU2VsZlJlZmVyZW5jZSA/IGAsIHRydWVgIDogYGB9KSR7aXNUUyA/IGAhYCA6IGBgfWApO1xyXG4gICAgICAgIGlmIChpIDwgYXNzZXRzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZW5Ib2lzdHMoaG9pc3RzLCBjb250ZXh0KSB7XHJcbiAgICBpZiAoIWhvaXN0cy5sZW5ndGgpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnB1cmUgPSB0cnVlO1xyXG4gICAgY29uc3QgeyBwdXNoLCBuZXdsaW5lLCBoZWxwZXIsIHNjb3BlSWQsIG1vZGUgfSA9IGNvbnRleHQ7XHJcbiAgICBuZXdsaW5lKCk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhvaXN0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGV4cCA9IGhvaXN0c1tpXTtcclxuICAgICAgICBpZiAoZXhwKSB7XHJcbiAgICAgICAgICAgIHB1c2goYGNvbnN0IF9ob2lzdGVkXyR7aSArIDF9ID0gJHtgYH1gKTtcclxuICAgICAgICAgICAgZ2VuTm9kZShleHAsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29udGV4dC5wdXJlID0gZmFsc2U7XHJcbn1cclxuZnVuY3Rpb24gaXNUZXh0JDEobikge1xyXG4gICAgcmV0dXJuIChpc1N0cmluZyhuKSB8fFxyXG4gICAgICAgIG4udHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8gfHxcclxuICAgICAgICBuLnR5cGUgPT09IDIgLyogTm9kZVR5cGVzLlRFWFQgKi8gfHxcclxuICAgICAgICBuLnR5cGUgPT09IDUgLyogTm9kZVR5cGVzLklOVEVSUE9MQVRJT04gKi8gfHxcclxuICAgICAgICBuLnR5cGUgPT09IDggLyogTm9kZVR5cGVzLkNPTVBPVU5EX0VYUFJFU1NJT04gKi8pO1xyXG59XHJcbmZ1bmN0aW9uIGdlbk5vZGVMaXN0QXNBcnJheShub2RlcywgY29udGV4dCkge1xyXG4gICAgY29uc3QgbXVsdGlsaW5lcyA9IG5vZGVzLmxlbmd0aCA+IDMgfHxcclxuICAgICAgICAoKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkgJiYgbm9kZXMuc29tZShuID0+IGlzQXJyYXkobikgfHwgIWlzVGV4dCQxKG4pKSk7XHJcbiAgICBjb250ZXh0LnB1c2goYFtgKTtcclxuICAgIG11bHRpbGluZXMgJiYgY29udGV4dC5pbmRlbnQoKTtcclxuICAgIGdlbk5vZGVMaXN0KG5vZGVzLCBjb250ZXh0LCBtdWx0aWxpbmVzKTtcclxuICAgIG11bHRpbGluZXMgJiYgY29udGV4dC5kZWluZGVudCgpO1xyXG4gICAgY29udGV4dC5wdXNoKGBdYCk7XHJcbn1cclxuZnVuY3Rpb24gZ2VuTm9kZUxpc3Qobm9kZXMsIGNvbnRleHQsIG11bHRpbGluZXMgPSBmYWxzZSwgY29tbWEgPSB0cnVlKSB7XHJcbiAgICBjb25zdCB7IHB1c2gsIG5ld2xpbmUgfSA9IGNvbnRleHQ7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3Qgbm9kZSA9IG5vZGVzW2ldO1xyXG4gICAgICAgIGlmIChpc1N0cmluZyhub2RlKSkge1xyXG4gICAgICAgICAgICBwdXNoKG5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpc0FycmF5KG5vZGUpKSB7XHJcbiAgICAgICAgICAgIGdlbk5vZGVMaXN0QXNBcnJheShub2RlLCBjb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGdlbk5vZGUobm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpIDwgbm9kZXMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICBpZiAobXVsdGlsaW5lcykge1xyXG4gICAgICAgICAgICAgICAgY29tbWEgJiYgcHVzaCgnLCcpO1xyXG4gICAgICAgICAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29tbWEgJiYgcHVzaCgnLCAnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZW5Ob2RlKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGlmIChpc1N0cmluZyhub2RlKSkge1xyXG4gICAgICAgIGNvbnRleHQucHVzaChub2RlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoaXNTeW1ib2wobm9kZSkpIHtcclxuICAgICAgICBjb250ZXh0LnB1c2goY29udGV4dC5oZWxwZXIobm9kZSkpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovOlxyXG4gICAgICAgIGNhc2UgOSAvKiBOb2RlVHlwZXMuSUYgKi86XHJcbiAgICAgICAgY2FzZSAxMSAvKiBOb2RlVHlwZXMuRk9SICovOlxyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgIGFzc2VydChub2RlLmNvZGVnZW5Ob2RlICE9IG51bGwsIGBDb2RlZ2VuIG5vZGUgaXMgbWlzc2luZyBmb3IgZWxlbWVudC9pZi9mb3Igbm9kZS4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYEFwcGx5IGFwcHJvcHJpYXRlIHRyYW5zZm9ybXMgZmlyc3QuYCk7XHJcbiAgICAgICAgICAgIGdlbk5vZGUobm9kZS5jb2RlZ2VuTm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMiAvKiBOb2RlVHlwZXMuVEVYVCAqLzpcclxuICAgICAgICAgICAgZ2VuVGV4dChub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgZ2VuRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSA1IC8qIE5vZGVUeXBlcy5JTlRFUlBPTEFUSU9OICovOlxyXG4gICAgICAgICAgICBnZW5JbnRlcnBvbGF0aW9uKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDEyIC8qIE5vZGVUeXBlcy5URVhUX0NBTEwgKi86XHJcbiAgICAgICAgICAgIGdlbk5vZGUobm9kZS5jb2RlZ2VuTm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgOCAvKiBOb2RlVHlwZXMuQ09NUE9VTkRfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgZ2VuQ29tcG91bmRFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDMgLyogTm9kZVR5cGVzLkNPTU1FTlQgKi86XHJcbiAgICAgICAgICAgIGdlbkNvbW1lbnQobm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMTMgLyogTm9kZVR5cGVzLlZOT0RFX0NBTEwgKi86XHJcbiAgICAgICAgICAgIGdlblZOb2RlQ2FsbChub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAxNCAvKiBOb2RlVHlwZXMuSlNfQ0FMTF9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICBnZW5DYWxsRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAxNSAvKiBOb2RlVHlwZXMuSlNfT0JKRUNUX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIGdlbk9iamVjdEV4cHJlc3Npb24obm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMTcgLyogTm9kZVR5cGVzLkpTX0FSUkFZX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIGdlbkFycmF5RXhwcmVzc2lvbihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAxOCAvKiBOb2RlVHlwZXMuSlNfRlVOQ1RJT05fRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgZ2VuRnVuY3Rpb25FeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDE5IC8qIE5vZGVUeXBlcy5KU19DT05ESVRJT05BTF9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICBnZW5Db25kaXRpb25hbEV4cHJlc3Npb24obm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMjAgLyogTm9kZVR5cGVzLkpTX0NBQ0hFX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIGdlbkNhY2hlRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAyMSAvKiBOb2RlVHlwZXMuSlNfQkxPQ0tfU1RBVEVNRU5UICovOlxyXG4gICAgICAgICAgICBnZW5Ob2RlTGlzdChub2RlLmJvZHksIGNvbnRleHQsIHRydWUsIGZhbHNlKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy8gU1NSIG9ubHkgdHlwZXNcclxuICAgICAgICBjYXNlIDIyIC8qIE5vZGVUeXBlcy5KU19URU1QTEFURV9MSVRFUkFMICovOlxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDIzIC8qIE5vZGVUeXBlcy5KU19JRl9TVEFURU1FTlQgKi86XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMjQgLyogTm9kZVR5cGVzLkpTX0FTU0lHTk1FTlRfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAyNSAvKiBOb2RlVHlwZXMuSlNfU0VRVUVOQ0VfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAyNiAvKiBOb2RlVHlwZXMuSlNfUkVUVVJOX1NUQVRFTUVOVCAqLzpcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuICAgICAgICBjYXNlIDEwIC8qIE5vZGVUeXBlcy5JRl9CUkFOQ0ggKi86XHJcbiAgICAgICAgICAgIC8vIG5vb3BcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgYXNzZXJ0KGZhbHNlLCBgdW5oYW5kbGVkIGNvZGVnZW4gbm9kZSB0eXBlOiAke25vZGUudHlwZX1gKTtcclxuICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB3ZSBleGhhdXN0IGFsbCBwb3NzaWJsZSB0eXBlc1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXhoYXVzdGl2ZUNoZWNrID0gbm9kZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBleGhhdXN0aXZlQ2hlY2s7XHJcbiAgICAgICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZW5UZXh0KG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnRleHQucHVzaChKU09OLnN0cmluZ2lmeShub2RlLmNvbnRlbnQpLCBub2RlKTtcclxufVxyXG5mdW5jdGlvbiBnZW5FeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgY29udGVudCwgaXNTdGF0aWMgfSA9IG5vZGU7XHJcbiAgICBjb250ZXh0LnB1c2goaXNTdGF0aWMgPyBKU09OLnN0cmluZ2lmeShjb250ZW50KSA6IGNvbnRlbnQsIG5vZGUpO1xyXG59XHJcbmZ1bmN0aW9uIGdlbkludGVycG9sYXRpb24obm9kZSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBwdXNoLCBoZWxwZXIsIHB1cmUgfSA9IGNvbnRleHQ7XHJcbiAgICBpZiAocHVyZSlcclxuICAgICAgICBwdXNoKFBVUkVfQU5OT1RBVElPTik7XHJcbiAgICBwdXNoKGAke2hlbHBlcihUT19ESVNQTEFZX1NUUklORyl9KGApO1xyXG4gICAgZ2VuTm9kZShub2RlLmNvbnRlbnQsIGNvbnRleHQpO1xyXG4gICAgcHVzaChgKWApO1xyXG59XHJcbmZ1bmN0aW9uIGdlbkNvbXBvdW5kRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGUuY2hpbGRyZW5baV07XHJcbiAgICAgICAgaWYgKGlzU3RyaW5nKGNoaWxkKSkge1xyXG4gICAgICAgICAgICBjb250ZXh0LnB1c2goY2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZ2VuTm9kZShjaGlsZCwgY29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdlbkV4cHJlc3Npb25Bc1Byb3BlcnR5S2V5KG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgcHVzaCB9ID0gY29udGV4dDtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IDggLyogTm9kZVR5cGVzLkNPTVBPVU5EX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICBwdXNoKGBbYCk7XHJcbiAgICAgICAgZ2VuQ29tcG91bmRFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgIHB1c2goYF1gKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKG5vZGUuaXNTdGF0aWMpIHtcclxuICAgICAgICAvLyBvbmx5IHF1b3RlIGtleXMgaWYgbmVjZXNzYXJ5XHJcbiAgICAgICAgY29uc3QgdGV4dCA9IGlzU2ltcGxlSWRlbnRpZmllcihub2RlLmNvbnRlbnQpXHJcbiAgICAgICAgICAgID8gbm9kZS5jb250ZW50XHJcbiAgICAgICAgICAgIDogSlNPTi5zdHJpbmdpZnkobm9kZS5jb250ZW50KTtcclxuICAgICAgICBwdXNoKHRleHQsIG5vZGUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcHVzaChgWyR7bm9kZS5jb250ZW50fV1gLCBub2RlKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZW5Db21tZW50KG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgcHVzaCwgaGVscGVyLCBwdXJlIH0gPSBjb250ZXh0O1xyXG4gICAgaWYgKHB1cmUpIHtcclxuICAgICAgICBwdXNoKFBVUkVfQU5OT1RBVElPTik7XHJcbiAgICB9XHJcbiAgICBwdXNoKGAke2hlbHBlcihDUkVBVEVfQ09NTUVOVCl9KCR7SlNPTi5zdHJpbmdpZnkobm9kZS5jb250ZW50KX0pYCwgbm9kZSk7XHJcbn1cclxuZnVuY3Rpb24gZ2VuVk5vZGVDYWxsKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgcHVzaCwgaGVscGVyLCBwdXJlIH0gPSBjb250ZXh0O1xyXG4gICAgY29uc3QgeyB0YWcsIHByb3BzLCBjaGlsZHJlbiwgcGF0Y2hGbGFnLCBkeW5hbWljUHJvcHMsIGRpcmVjdGl2ZXMsIGlzQmxvY2ssIGRpc2FibGVUcmFja2luZywgaXNDb21wb25lbnQgfSA9IG5vZGU7XHJcbiAgICBpZiAoZGlyZWN0aXZlcykge1xyXG4gICAgICAgIHB1c2goaGVscGVyKFdJVEhfRElSRUNUSVZFUykgKyBgKGApO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzQmxvY2spIHtcclxuICAgICAgICBwdXNoKGAoJHtoZWxwZXIoT1BFTl9CTE9DSyl9KCR7ZGlzYWJsZVRyYWNraW5nID8gYHRydWVgIDogYGB9KSwgYCk7XHJcbiAgICB9XHJcbiAgICBpZiAocHVyZSkge1xyXG4gICAgICAgIHB1c2goUFVSRV9BTk5PVEFUSU9OKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNhbGxIZWxwZXIgPSBpc0Jsb2NrXHJcbiAgICAgICAgPyBnZXRWTm9kZUJsb2NrSGVscGVyKGNvbnRleHQuaW5TU1IsIGlzQ29tcG9uZW50KVxyXG4gICAgICAgIDogZ2V0Vk5vZGVIZWxwZXIoY29udGV4dC5pblNTUiwgaXNDb21wb25lbnQpO1xyXG4gICAgcHVzaChoZWxwZXIoY2FsbEhlbHBlcikgKyBgKGAsIG5vZGUpO1xyXG4gICAgZ2VuTm9kZUxpc3QoZ2VuTnVsbGFibGVBcmdzKFt0YWcsIHByb3BzLCBjaGlsZHJlbiwgcGF0Y2hGbGFnLCBkeW5hbWljUHJvcHNdKSwgY29udGV4dCk7XHJcbiAgICBwdXNoKGApYCk7XHJcbiAgICBpZiAoaXNCbG9jaykge1xyXG4gICAgICAgIHB1c2goYClgKTtcclxuICAgIH1cclxuICAgIGlmIChkaXJlY3RpdmVzKSB7XHJcbiAgICAgICAgcHVzaChgLCBgKTtcclxuICAgICAgICBnZW5Ob2RlKGRpcmVjdGl2ZXMsIGNvbnRleHQpO1xyXG4gICAgICAgIHB1c2goYClgKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZW5OdWxsYWJsZUFyZ3MoYXJncykge1xyXG4gICAgbGV0IGkgPSBhcmdzLmxlbmd0aDtcclxuICAgIHdoaWxlIChpLS0pIHtcclxuICAgICAgICBpZiAoYXJnc1tpXSAhPSBudWxsKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBhcmdzLnNsaWNlKDAsIGkgKyAxKS5tYXAoYXJnID0+IGFyZyB8fCBgbnVsbGApO1xyXG59XHJcbi8vIEphdmFTY3JpcHRcclxuZnVuY3Rpb24gZ2VuQ2FsbEV4cHJlc3Npb24obm9kZSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBwdXNoLCBoZWxwZXIsIHB1cmUgfSA9IGNvbnRleHQ7XHJcbiAgICBjb25zdCBjYWxsZWUgPSBpc1N0cmluZyhub2RlLmNhbGxlZSkgPyBub2RlLmNhbGxlZSA6IGhlbHBlcihub2RlLmNhbGxlZSk7XHJcbiAgICBpZiAocHVyZSkge1xyXG4gICAgICAgIHB1c2goUFVSRV9BTk5PVEFUSU9OKTtcclxuICAgIH1cclxuICAgIHB1c2goY2FsbGVlICsgYChgLCBub2RlKTtcclxuICAgIGdlbk5vZGVMaXN0KG5vZGUuYXJndW1lbnRzLCBjb250ZXh0KTtcclxuICAgIHB1c2goYClgKTtcclxufVxyXG5mdW5jdGlvbiBnZW5PYmplY3RFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgcHVzaCwgaW5kZW50LCBkZWluZGVudCwgbmV3bGluZSB9ID0gY29udGV4dDtcclxuICAgIGNvbnN0IHsgcHJvcGVydGllcyB9ID0gbm9kZTtcclxuICAgIGlmICghcHJvcGVydGllcy5sZW5ndGgpIHtcclxuICAgICAgICBwdXNoKGB7fWAsIG5vZGUpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IG11bHRpbGluZXMgPSBwcm9wZXJ0aWVzLmxlbmd0aCA+IDEgfHxcclxuICAgICAgICAoKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkgJiZcclxuICAgICAgICAgICAgcHJvcGVydGllcy5zb21lKHAgPT4gcC52YWx1ZS50eXBlICE9PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLykpO1xyXG4gICAgcHVzaChtdWx0aWxpbmVzID8gYHtgIDogYHsgYCk7XHJcbiAgICBtdWx0aWxpbmVzICYmIGluZGVudCgpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgeyBrZXksIHZhbHVlIH0gPSBwcm9wZXJ0aWVzW2ldO1xyXG4gICAgICAgIC8vIGtleVxyXG4gICAgICAgIGdlbkV4cHJlc3Npb25Bc1Byb3BlcnR5S2V5KGtleSwgY29udGV4dCk7XHJcbiAgICAgICAgcHVzaChgOiBgKTtcclxuICAgICAgICAvLyB2YWx1ZVxyXG4gICAgICAgIGdlbk5vZGUodmFsdWUsIGNvbnRleHQpO1xyXG4gICAgICAgIGlmIChpIDwgcHJvcGVydGllcy5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgIC8vIHdpbGwgb25seSByZWFjaCB0aGlzIGlmIGl0J3MgbXVsdGlsaW5lc1xyXG4gICAgICAgICAgICBwdXNoKGAsYCk7XHJcbiAgICAgICAgICAgIG5ld2xpbmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBtdWx0aWxpbmVzICYmIGRlaW5kZW50KCk7XHJcbiAgICBwdXNoKG11bHRpbGluZXMgPyBgfWAgOiBgIH1gKTtcclxufVxyXG5mdW5jdGlvbiBnZW5BcnJheUV4cHJlc3Npb24obm9kZSwgY29udGV4dCkge1xyXG4gICAgZ2VuTm9kZUxpc3RBc0FycmF5KG5vZGUuZWxlbWVudHMsIGNvbnRleHQpO1xyXG59XHJcbmZ1bmN0aW9uIGdlbkZ1bmN0aW9uRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IHB1c2gsIGluZGVudCwgZGVpbmRlbnQgfSA9IGNvbnRleHQ7XHJcbiAgICBjb25zdCB7IHBhcmFtcywgcmV0dXJucywgYm9keSwgbmV3bGluZSwgaXNTbG90IH0gPSBub2RlO1xyXG4gICAgaWYgKGlzU2xvdCkge1xyXG4gICAgICAgIC8vIHdyYXAgc2xvdCBmdW5jdGlvbnMgd2l0aCBvd25lciBjb250ZXh0XHJcbiAgICAgICAgcHVzaChgXyR7aGVscGVyTmFtZU1hcFtXSVRIX0NUWF19KGApO1xyXG4gICAgfVxyXG4gICAgcHVzaChgKGAsIG5vZGUpO1xyXG4gICAgaWYgKGlzQXJyYXkocGFyYW1zKSkge1xyXG4gICAgICAgIGdlbk5vZGVMaXN0KHBhcmFtcywgY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChwYXJhbXMpIHtcclxuICAgICAgICBnZW5Ob2RlKHBhcmFtcywgY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICBwdXNoKGApID0+IGApO1xyXG4gICAgaWYgKG5ld2xpbmUgfHwgYm9keSkge1xyXG4gICAgICAgIHB1c2goYHtgKTtcclxuICAgICAgICBpbmRlbnQoKTtcclxuICAgIH1cclxuICAgIGlmIChyZXR1cm5zKSB7XHJcbiAgICAgICAgaWYgKG5ld2xpbmUpIHtcclxuICAgICAgICAgICAgcHVzaChgcmV0dXJuIGApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNBcnJheShyZXR1cm5zKSkge1xyXG4gICAgICAgICAgICBnZW5Ob2RlTGlzdEFzQXJyYXkocmV0dXJucywgY29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBnZW5Ob2RlKHJldHVybnMsIGNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGJvZHkpIHtcclxuICAgICAgICBnZW5Ob2RlKGJvZHksIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgaWYgKG5ld2xpbmUgfHwgYm9keSkge1xyXG4gICAgICAgIGRlaW5kZW50KCk7XHJcbiAgICAgICAgcHVzaChgfWApO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzU2xvdCkge1xyXG4gICAgICAgIGlmIChub2RlLmlzTm9uU2NvcGVkU2xvdCkge1xyXG4gICAgICAgICAgICBwdXNoKGAsIHVuZGVmaW5lZCwgdHJ1ZWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwdXNoKGApYCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2VuQ29uZGl0aW9uYWxFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgdGVzdCwgY29uc2VxdWVudCwgYWx0ZXJuYXRlLCBuZXdsaW5lOiBuZWVkTmV3bGluZSB9ID0gbm9kZTtcclxuICAgIGNvbnN0IHsgcHVzaCwgaW5kZW50LCBkZWluZGVudCwgbmV3bGluZSB9ID0gY29udGV4dDtcclxuICAgIGlmICh0ZXN0LnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgY29uc3QgbmVlZHNQYXJlbnMgPSAhaXNTaW1wbGVJZGVudGlmaWVyKHRlc3QuY29udGVudCk7XHJcbiAgICAgICAgbmVlZHNQYXJlbnMgJiYgcHVzaChgKGApO1xyXG4gICAgICAgIGdlbkV4cHJlc3Npb24odGVzdCwgY29udGV4dCk7XHJcbiAgICAgICAgbmVlZHNQYXJlbnMgJiYgcHVzaChgKWApO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcHVzaChgKGApO1xyXG4gICAgICAgIGdlbk5vZGUodGVzdCwgY29udGV4dCk7XHJcbiAgICAgICAgcHVzaChgKWApO1xyXG4gICAgfVxyXG4gICAgbmVlZE5ld2xpbmUgJiYgaW5kZW50KCk7XHJcbiAgICBjb250ZXh0LmluZGVudExldmVsKys7XHJcbiAgICBuZWVkTmV3bGluZSB8fCBwdXNoKGAgYCk7XHJcbiAgICBwdXNoKGA/IGApO1xyXG4gICAgZ2VuTm9kZShjb25zZXF1ZW50LCBjb250ZXh0KTtcclxuICAgIGNvbnRleHQuaW5kZW50TGV2ZWwtLTtcclxuICAgIG5lZWROZXdsaW5lICYmIG5ld2xpbmUoKTtcclxuICAgIG5lZWROZXdsaW5lIHx8IHB1c2goYCBgKTtcclxuICAgIHB1c2goYDogYCk7XHJcbiAgICBjb25zdCBpc05lc3RlZCA9IGFsdGVybmF0ZS50eXBlID09PSAxOSAvKiBOb2RlVHlwZXMuSlNfQ09ORElUSU9OQUxfRVhQUkVTU0lPTiAqLztcclxuICAgIGlmICghaXNOZXN0ZWQpIHtcclxuICAgICAgICBjb250ZXh0LmluZGVudExldmVsKys7XHJcbiAgICB9XHJcbiAgICBnZW5Ob2RlKGFsdGVybmF0ZSwgY29udGV4dCk7XHJcbiAgICBpZiAoIWlzTmVzdGVkKSB7XHJcbiAgICAgICAgY29udGV4dC5pbmRlbnRMZXZlbC0tO1xyXG4gICAgfVxyXG4gICAgbmVlZE5ld2xpbmUgJiYgZGVpbmRlbnQodHJ1ZSAvKiB3aXRob3V0IG5ld2xpbmUgKi8pO1xyXG59XHJcbmZ1bmN0aW9uIGdlbkNhY2hlRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IHB1c2gsIGhlbHBlciwgaW5kZW50LCBkZWluZGVudCwgbmV3bGluZSB9ID0gY29udGV4dDtcclxuICAgIHB1c2goYF9jYWNoZVske25vZGUuaW5kZXh9XSB8fCAoYCk7XHJcbiAgICBpZiAobm9kZS5pc1ZOb2RlKSB7XHJcbiAgICAgICAgaW5kZW50KCk7XHJcbiAgICAgICAgcHVzaChgJHtoZWxwZXIoU0VUX0JMT0NLX1RSQUNLSU5HKX0oLTEpLGApO1xyXG4gICAgICAgIG5ld2xpbmUoKTtcclxuICAgIH1cclxuICAgIHB1c2goYF9jYWNoZVske25vZGUuaW5kZXh9XSA9IGApO1xyXG4gICAgZ2VuTm9kZShub2RlLnZhbHVlLCBjb250ZXh0KTtcclxuICAgIGlmIChub2RlLmlzVk5vZGUpIHtcclxuICAgICAgICBwdXNoKGAsYCk7XHJcbiAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgICAgIHB1c2goYCR7aGVscGVyKFNFVF9CTE9DS19UUkFDS0lORyl9KDEpLGApO1xyXG4gICAgICAgIG5ld2xpbmUoKTtcclxuICAgICAgICBwdXNoKGBfY2FjaGVbJHtub2RlLmluZGV4fV1gKTtcclxuICAgICAgICBkZWluZGVudCgpO1xyXG4gICAgfVxyXG4gICAgcHVzaChgKWApO1xyXG59XG5cbmZ1bmN0aW9uIHdhbGtJZGVudGlmaWVycyhyb290LCBvbklkZW50aWZpZXIsIGluY2x1ZGVBbGwgPSBmYWxzZSwgcGFyZW50U3RhY2sgPSBbXSwga25vd25JZHMgPSBPYmplY3QuY3JlYXRlKG51bGwpKSB7XHJcbiAgICB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGlzUmVmZXJlbmNlZElkZW50aWZpZXIoaWQsIHBhcmVudCwgcGFyZW50U3RhY2spIHtcclxuICAgIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaXNJbkRlc3RydWN0dXJlQXNzaWdubWVudChwYXJlbnQsIHBhcmVudFN0YWNrKSB7XHJcbiAgICBpZiAocGFyZW50ICYmXHJcbiAgICAgICAgKHBhcmVudC50eXBlID09PSAnT2JqZWN0UHJvcGVydHknIHx8IHBhcmVudC50eXBlID09PSAnQXJyYXlQYXR0ZXJuJykpIHtcclxuICAgICAgICBsZXQgaSA9IHBhcmVudFN0YWNrLmxlbmd0aDtcclxuICAgICAgICB3aGlsZSAoaS0tKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHAgPSBwYXJlbnRTdGFja1tpXTtcclxuICAgICAgICAgICAgaWYgKHAudHlwZSA9PT0gJ0Fzc2lnbm1lbnRFeHByZXNzaW9uJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAocC50eXBlICE9PSAnT2JqZWN0UHJvcGVydHknICYmICFwLnR5cGUuZW5kc1dpdGgoJ1BhdHRlcm4nKSkge1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cclxuZnVuY3Rpb24gd2Fsa0Z1bmN0aW9uUGFyYW1zKG5vZGUsIG9uSWRlbnQpIHtcclxuICAgIGZvciAoY29uc3QgcCBvZiBub2RlLnBhcmFtcykge1xyXG4gICAgICAgIGZvciAoY29uc3QgaWQgb2YgZXh0cmFjdElkZW50aWZpZXJzKHApKSB7XHJcbiAgICAgICAgICAgIG9uSWRlbnQoaWQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB3YWxrQmxvY2tEZWNsYXJhdGlvbnMoYmxvY2ssIG9uSWRlbnQpIHtcclxuICAgIGZvciAoY29uc3Qgc3RtdCBvZiBibG9jay5ib2R5KSB7XHJcbiAgICAgICAgaWYgKHN0bXQudHlwZSA9PT0gJ1ZhcmlhYmxlRGVjbGFyYXRpb24nKSB7XHJcbiAgICAgICAgICAgIGlmIChzdG10LmRlY2xhcmUpXHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBkZWNsIG9mIHN0bXQuZGVjbGFyYXRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGlkIG9mIGV4dHJhY3RJZGVudGlmaWVycyhkZWNsLmlkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG9uSWRlbnQoaWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHN0bXQudHlwZSA9PT0gJ0Z1bmN0aW9uRGVjbGFyYXRpb24nIHx8XHJcbiAgICAgICAgICAgIHN0bXQudHlwZSA9PT0gJ0NsYXNzRGVjbGFyYXRpb24nKSB7XHJcbiAgICAgICAgICAgIGlmIChzdG10LmRlY2xhcmUgfHwgIXN0bXQuaWQpXHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgb25JZGVudChzdG10LmlkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZXh0cmFjdElkZW50aWZpZXJzKHBhcmFtLCBub2RlcyA9IFtdKSB7XHJcbiAgICBzd2l0Y2ggKHBhcmFtLnR5cGUpIHtcclxuICAgICAgICBjYXNlICdJZGVudGlmaWVyJzpcclxuICAgICAgICAgICAgbm9kZXMucHVzaChwYXJhbSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ01lbWJlckV4cHJlc3Npb24nOlxyXG4gICAgICAgICAgICBsZXQgb2JqZWN0ID0gcGFyYW07XHJcbiAgICAgICAgICAgIHdoaWxlIChvYmplY3QudHlwZSA9PT0gJ01lbWJlckV4cHJlc3Npb24nKSB7XHJcbiAgICAgICAgICAgICAgICBvYmplY3QgPSBvYmplY3Qub2JqZWN0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG5vZGVzLnB1c2gob2JqZWN0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnT2JqZWN0UGF0dGVybic6XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBwYXJhbS5wcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocHJvcC50eXBlID09PSAnUmVzdEVsZW1lbnQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFjdElkZW50aWZpZXJzKHByb3AuYXJndW1lbnQsIG5vZGVzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhY3RJZGVudGlmaWVycyhwcm9wLnZhbHVlLCBub2Rlcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnQXJyYXlQYXR0ZXJuJzpcclxuICAgICAgICAgICAgcGFyYW0uZWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50KVxyXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhY3RJZGVudGlmaWVycyhlbGVtZW50LCBub2Rlcyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdSZXN0RWxlbWVudCc6XHJcbiAgICAgICAgICAgIGV4dHJhY3RJZGVudGlmaWVycyhwYXJhbS5hcmd1bWVudCwgbm9kZXMpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdBc3NpZ25tZW50UGF0dGVybic6XHJcbiAgICAgICAgICAgIGV4dHJhY3RJZGVudGlmaWVycyhwYXJhbS5sZWZ0LCBub2Rlcyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5vZGVzO1xyXG59XHJcbmNvbnN0IGlzRnVuY3Rpb25UeXBlID0gKG5vZGUpID0+IHtcclxuICAgIHJldHVybiAvRnVuY3Rpb24oPzpFeHByZXNzaW9ufERlY2xhcmF0aW9uKSR8TWV0aG9kJC8udGVzdChub2RlLnR5cGUpO1xyXG59O1xyXG5jb25zdCBpc1N0YXRpY1Byb3BlcnR5ID0gKG5vZGUpID0+IG5vZGUgJiZcclxuICAgIChub2RlLnR5cGUgPT09ICdPYmplY3RQcm9wZXJ0eScgfHwgbm9kZS50eXBlID09PSAnT2JqZWN0TWV0aG9kJykgJiZcclxuICAgICFub2RlLmNvbXB1dGVkO1xyXG5jb25zdCBpc1N0YXRpY1Byb3BlcnR5S2V5ID0gKG5vZGUsIHBhcmVudCkgPT4gaXNTdGF0aWNQcm9wZXJ0eShwYXJlbnQpICYmIHBhcmVudC5rZXkgPT09IG5vZGU7XG5cbi8vIHRoZXNlIGtleXdvcmRzIHNob3VsZCBub3QgYXBwZWFyIGluc2lkZSBleHByZXNzaW9ucywgYnV0IG9wZXJhdG9ycyBsaWtlXHJcbi8vIHR5cGVvZiwgaW5zdGFuY2VvZiBhbmQgaW4gYXJlIGFsbG93ZWRcclxuY29uc3QgcHJvaGliaXRlZEtleXdvcmRSRSA9IG5ldyBSZWdFeHAoJ1xcXFxiJyArXHJcbiAgICAoJ2RvLGlmLGZvcixsZXQsbmV3LHRyeSx2YXIsY2FzZSxlbHNlLHdpdGgsYXdhaXQsYnJlYWssY2F0Y2gsY2xhc3MsY29uc3QsJyArXHJcbiAgICAgICAgJ3N1cGVyLHRocm93LHdoaWxlLHlpZWxkLGRlbGV0ZSxleHBvcnQsaW1wb3J0LHJldHVybixzd2l0Y2gsZGVmYXVsdCwnICtcclxuICAgICAgICAnZXh0ZW5kcyxmaW5hbGx5LGNvbnRpbnVlLGRlYnVnZ2VyLGZ1bmN0aW9uLGFyZ3VtZW50cyx0eXBlb2Ysdm9pZCcpXHJcbiAgICAgICAgLnNwbGl0KCcsJylcclxuICAgICAgICAuam9pbignXFxcXGJ8XFxcXGInKSArXHJcbiAgICAnXFxcXGInKTtcclxuLy8gc3RyaXAgc3RyaW5ncyBpbiBleHByZXNzaW9uc1xyXG5jb25zdCBzdHJpcFN0cmluZ1JFID0gLycoPzpbXidcXFxcXXxcXFxcLikqJ3xcIig/OlteXCJcXFxcXXxcXFxcLikqXCJ8YCg/OlteYFxcXFxdfFxcXFwuKSpcXCRcXHt8XFx9KD86W15gXFxcXF18XFxcXC4pKmB8YCg/OlteYFxcXFxdfFxcXFwuKSpgL2c7XHJcbi8qKlxyXG4gKiBWYWxpZGF0ZSBhIG5vbi1wcmVmaXhlZCBleHByZXNzaW9uLlxyXG4gKiBUaGlzIGlzIG9ubHkgY2FsbGVkIHdoZW4gdXNpbmcgdGhlIGluLWJyb3dzZXIgcnVudGltZSBjb21waWxlciBzaW5jZSBpdFxyXG4gKiBkb2Vzbid0IHByZWZpeCBleHByZXNzaW9ucy5cclxuICovXHJcbmZ1bmN0aW9uIHZhbGlkYXRlQnJvd3NlckV4cHJlc3Npb24obm9kZSwgY29udGV4dCwgYXNQYXJhbXMgPSBmYWxzZSwgYXNSYXdTdGF0ZW1lbnRzID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGV4cCA9IG5vZGUuY29udGVudDtcclxuICAgIC8vIGVtcHR5IGV4cHJlc3Npb25zIGFyZSB2YWxpZGF0ZWQgcGVyLWRpcmVjdGl2ZSBzaW5jZSBzb21lIGRpcmVjdGl2ZXNcclxuICAgIC8vIGRvIGFsbG93IGVtcHR5IGV4cHJlc3Npb25zLlxyXG4gICAgaWYgKCFleHAudHJpbSgpKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgICBuZXcgRnVuY3Rpb24oYXNSYXdTdGF0ZW1lbnRzXHJcbiAgICAgICAgICAgID8gYCAke2V4cH0gYFxyXG4gICAgICAgICAgICA6IGByZXR1cm4gJHthc1BhcmFtcyA/IGAoJHtleHB9KSA9PiB7fWAgOiBgKCR7ZXhwfSlgfWApO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICBsZXQgbWVzc2FnZSA9IGUubWVzc2FnZTtcclxuICAgICAgICBjb25zdCBrZXl3b3JkTWF0Y2ggPSBleHBcclxuICAgICAgICAgICAgLnJlcGxhY2Uoc3RyaXBTdHJpbmdSRSwgJycpXHJcbiAgICAgICAgICAgIC5tYXRjaChwcm9oaWJpdGVkS2V5d29yZFJFKTtcclxuICAgICAgICBpZiAoa2V5d29yZE1hdGNoKSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgYXZvaWQgdXNpbmcgSmF2YVNjcmlwdCBrZXl3b3JkIGFzIHByb3BlcnR5IG5hbWU6IFwiJHtrZXl3b3JkTWF0Y2hbMF19XCJgO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcig0NCAvKiBFcnJvckNvZGVzLlhfSU5WQUxJRF9FWFBSRVNTSU9OICovLCBub2RlLmxvYywgdW5kZWZpbmVkLCBtZXNzYWdlKSk7XHJcbiAgICB9XHJcbn1cblxuY29uc3QgdHJhbnNmb3JtRXhwcmVzc2lvbiA9IChub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSA1IC8qIE5vZGVUeXBlcy5JTlRFUlBPTEFUSU9OICovKSB7XHJcbiAgICAgICAgbm9kZS5jb250ZW50ID0gcHJvY2Vzc0V4cHJlc3Npb24obm9kZS5jb250ZW50LCBjb250ZXh0KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLykge1xyXG4gICAgICAgIC8vIGhhbmRsZSBkaXJlY3RpdmVzIG9uIGVsZW1lbnRcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUucHJvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgZGlyID0gbm9kZS5wcm9wc1tpXTtcclxuICAgICAgICAgICAgLy8gZG8gbm90IHByb2Nlc3MgZm9yIHYtb24gJiB2LWZvciBzaW5jZSB0aGV5IGFyZSBzcGVjaWFsIGhhbmRsZWRcclxuICAgICAgICAgICAgaWYgKGRpci50eXBlID09PSA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8gJiYgZGlyLm5hbWUgIT09ICdmb3InKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBleHAgPSBkaXIuZXhwO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYXJnID0gZGlyLmFyZztcclxuICAgICAgICAgICAgICAgIC8vIGRvIG5vdCBwcm9jZXNzIGV4cCBpZiB0aGlzIGlzIHYtb246YXJnIC0gd2UgbmVlZCBzcGVjaWFsIGhhbmRsaW5nXHJcbiAgICAgICAgICAgICAgICAvLyBmb3Igd3JhcHBpbmcgaW5saW5lIHN0YXRlbWVudHMuXHJcbiAgICAgICAgICAgICAgICBpZiAoZXhwICYmXHJcbiAgICAgICAgICAgICAgICAgICAgZXhwLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovICYmXHJcbiAgICAgICAgICAgICAgICAgICAgIShkaXIubmFtZSA9PT0gJ29uJyAmJiBhcmcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlyLmV4cCA9IHByb2Nlc3NFeHByZXNzaW9uKGV4cCwgY29udGV4dCwgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gc2xvdCBhcmdzIG11c3QgYmUgcHJvY2Vzc2VkIGFzIGZ1bmN0aW9uIHBhcmFtc1xyXG4gICAgICAgICAgICAgICAgICAgIGRpci5uYW1lID09PSAnc2xvdCcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGFyZyAmJiBhcmcudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8gJiYgIWFyZy5pc1N0YXRpYykge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpci5hcmcgPSBwcm9jZXNzRXhwcmVzc2lvbihhcmcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG4vLyBJbXBvcnRhbnQ6IHNpbmNlIHRoaXMgZnVuY3Rpb24gdXNlcyBOb2RlLmpzIG9ubHkgZGVwZW5kZW5jaWVzLCBpdCBzaG91bGRcclxuLy8gYWx3YXlzIGJlIHVzZWQgd2l0aCBhIGxlYWRpbmcgIXRydWUgY2hlY2sgc28gdGhhdCBpdCBjYW4gYmVcclxuLy8gdHJlZS1zaGFrZW4gZnJvbSB0aGUgYnJvd3NlciBidWlsZC5cclxuZnVuY3Rpb24gcHJvY2Vzc0V4cHJlc3Npb24obm9kZSwgY29udGV4dCwgXHJcbi8vIHNvbWUgZXhwcmVzc2lvbnMgbGlrZSB2LXNsb3QgcHJvcHMgJiB2LWZvciBhbGlhc2VzIHNob3VsZCBiZSBwYXJzZWQgYXNcclxuLy8gZnVuY3Rpb24gcGFyYW1zXHJcbmFzUGFyYW1zID0gZmFsc2UsIFxyXG4vLyB2LW9uIGhhbmRsZXIgdmFsdWVzIG1heSBjb250YWluIG11bHRpcGxlIHN0YXRlbWVudHNcclxuYXNSYXdTdGF0ZW1lbnRzID0gZmFsc2UsIGxvY2FsVmFycyA9IE9iamVjdC5jcmVhdGUoY29udGV4dC5pZGVudGlmaWVycykpIHtcclxuICAgIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIC8vIHNpbXBsZSBpbi1icm93c2VyIHZhbGlkYXRpb24gKHNhbWUgbG9naWMgaW4gMi54KVxyXG4gICAgICAgICAgICB2YWxpZGF0ZUJyb3dzZXJFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQsIGFzUGFyYW1zLCBhc1Jhd1N0YXRlbWVudHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbm9kZTtcclxuICAgIH1cclxufVxuXG5jb25zdCB0cmFuc2Zvcm1JZiA9IGNyZWF0ZVN0cnVjdHVyYWxEaXJlY3RpdmVUcmFuc2Zvcm0oL14oaWZ8ZWxzZXxlbHNlLWlmKSQvLCAobm9kZSwgZGlyLCBjb250ZXh0KSA9PiB7XHJcbiAgICByZXR1cm4gcHJvY2Vzc0lmKG5vZGUsIGRpciwgY29udGV4dCwgKGlmTm9kZSwgYnJhbmNoLCBpc1Jvb3QpID0+IHtcclxuICAgICAgICAvLyAjMTU4NzogV2UgbmVlZCB0byBkeW5hbWljYWxseSBpbmNyZW1lbnQgdGhlIGtleSBiYXNlZCBvbiB0aGUgY3VycmVudFxyXG4gICAgICAgIC8vIG5vZGUncyBzaWJsaW5nIG5vZGVzLCBzaW5jZSBjaGFpbmVkIHYtaWYvZWxzZSBicmFuY2hlcyBhcmVcclxuICAgICAgICAvLyByZW5kZXJlZCBhdCB0aGUgc2FtZSBkZXB0aFxyXG4gICAgICAgIGNvbnN0IHNpYmxpbmdzID0gY29udGV4dC5wYXJlbnQuY2hpbGRyZW47XHJcbiAgICAgICAgbGV0IGkgPSBzaWJsaW5ncy5pbmRleE9mKGlmTm9kZSk7XHJcbiAgICAgICAgbGV0IGtleSA9IDA7XHJcbiAgICAgICAgd2hpbGUgKGktLSA+PSAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNpYmxpbmcgPSBzaWJsaW5nc1tpXTtcclxuICAgICAgICAgICAgaWYgKHNpYmxpbmcgJiYgc2libGluZy50eXBlID09PSA5IC8qIE5vZGVUeXBlcy5JRiAqLykge1xyXG4gICAgICAgICAgICAgICAga2V5ICs9IHNpYmxpbmcuYnJhbmNoZXMubGVuZ3RoO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEV4aXQgY2FsbGJhY2suIENvbXBsZXRlIHRoZSBjb2RlZ2VuTm9kZSB3aGVuIGFsbCBjaGlsZHJlbiBoYXZlIGJlZW5cclxuICAgICAgICAvLyB0cmFuc2Zvcm1lZC5cclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaXNSb290KSB7XHJcbiAgICAgICAgICAgICAgICBpZk5vZGUuY29kZWdlbk5vZGUgPSBjcmVhdGVDb2RlZ2VuTm9kZUZvckJyYW5jaChicmFuY2gsIGtleSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBhdHRhY2ggdGhpcyBicmFuY2gncyBjb2RlZ2VuIG5vZGUgdG8gdGhlIHYtaWYgcm9vdC5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudENvbmRpdGlvbiA9IGdldFBhcmVudENvbmRpdGlvbihpZk5vZGUuY29kZWdlbk5vZGUpO1xyXG4gICAgICAgICAgICAgICAgcGFyZW50Q29uZGl0aW9uLmFsdGVybmF0ZSA9IGNyZWF0ZUNvZGVnZW5Ob2RlRm9yQnJhbmNoKGJyYW5jaCwga2V5ICsgaWZOb2RlLmJyYW5jaGVzLmxlbmd0aCAtIDEsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH0pO1xyXG59KTtcclxuLy8gdGFyZ2V0LWFnbm9zdGljIHRyYW5zZm9ybSB1c2VkIGZvciBib3RoIENsaWVudCBhbmQgU1NSXHJcbmZ1bmN0aW9uIHByb2Nlc3NJZihub2RlLCBkaXIsIGNvbnRleHQsIHByb2Nlc3NDb2RlZ2VuKSB7XHJcbiAgICBpZiAoZGlyLm5hbWUgIT09ICdlbHNlJyAmJlxyXG4gICAgICAgICghZGlyLmV4cCB8fCAhZGlyLmV4cC5jb250ZW50LnRyaW0oKSkpIHtcclxuICAgICAgICBjb25zdCBsb2MgPSBkaXIuZXhwID8gZGlyLmV4cC5sb2MgOiBub2RlLmxvYztcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigyOCAvKiBFcnJvckNvZGVzLlhfVl9JRl9OT19FWFBSRVNTSU9OICovLCBkaXIubG9jKSk7XHJcbiAgICAgICAgZGlyLmV4cCA9IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYHRydWVgLCBmYWxzZSwgbG9jKTtcclxuICAgIH1cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgdHJ1ZSAmJiBkaXIuZXhwKSB7XHJcbiAgICAgICAgdmFsaWRhdGVCcm93c2VyRXhwcmVzc2lvbihkaXIuZXhwLCBjb250ZXh0KTtcclxuICAgIH1cclxuICAgIGlmIChkaXIubmFtZSA9PT0gJ2lmJykge1xyXG4gICAgICAgIGNvbnN0IGJyYW5jaCA9IGNyZWF0ZUlmQnJhbmNoKG5vZGUsIGRpcik7XHJcbiAgICAgICAgY29uc3QgaWZOb2RlID0ge1xyXG4gICAgICAgICAgICB0eXBlOiA5IC8qIE5vZGVUeXBlcy5JRiAqLyxcclxuICAgICAgICAgICAgbG9jOiBub2RlLmxvYyxcclxuICAgICAgICAgICAgYnJhbmNoZXM6IFticmFuY2hdXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb250ZXh0LnJlcGxhY2VOb2RlKGlmTm9kZSk7XHJcbiAgICAgICAgaWYgKHByb2Nlc3NDb2RlZ2VuKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBwcm9jZXNzQ29kZWdlbihpZk5vZGUsIGJyYW5jaCwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gbG9jYXRlIHRoZSBhZGphY2VudCB2LWlmXHJcbiAgICAgICAgY29uc3Qgc2libGluZ3MgPSBjb250ZXh0LnBhcmVudC5jaGlsZHJlbjtcclxuICAgICAgICBjb25zdCBjb21tZW50cyA9IFtdO1xyXG4gICAgICAgIGxldCBpID0gc2libGluZ3MuaW5kZXhPZihub2RlKTtcclxuICAgICAgICB3aGlsZSAoaS0tID49IC0xKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNpYmxpbmcgPSBzaWJsaW5nc1tpXTtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBzaWJsaW5nICYmIHNpYmxpbmcudHlwZSA9PT0gMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5yZW1vdmVOb2RlKHNpYmxpbmcpO1xyXG4gICAgICAgICAgICAgICAgY29tbWVudHMudW5zaGlmdChzaWJsaW5nKTtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzaWJsaW5nICYmXHJcbiAgICAgICAgICAgICAgICBzaWJsaW5nLnR5cGUgPT09IDIgLyogTm9kZVR5cGVzLlRFWFQgKi8gJiZcclxuICAgICAgICAgICAgICAgICFzaWJsaW5nLmNvbnRlbnQudHJpbSgpLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5yZW1vdmVOb2RlKHNpYmxpbmcpO1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHNpYmxpbmcgJiYgc2libGluZy50eXBlID09PSA5IC8qIE5vZGVUeXBlcy5JRiAqLykge1xyXG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdi1lbHNlIHdhcyBmb2xsb3dlZCBieSB2LWVsc2UtaWZcclxuICAgICAgICAgICAgICAgIGlmIChkaXIubmFtZSA9PT0gJ2Vsc2UtaWYnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgc2libGluZy5icmFuY2hlc1tzaWJsaW5nLmJyYW5jaGVzLmxlbmd0aCAtIDFdLmNvbmRpdGlvbiA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzAgLyogRXJyb3JDb2Rlcy5YX1ZfRUxTRV9OT19BREpBQ0VOVF9JRiAqLywgbm9kZS5sb2MpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIG1vdmUgdGhlIG5vZGUgdG8gdGhlIGlmIG5vZGUncyBicmFuY2hlc1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5yZW1vdmVOb2RlKCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBicmFuY2ggPSBjcmVhdGVJZkJyYW5jaChub2RlLCBkaXIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnRzLmxlbmd0aCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIC8vICMzNjE5IGlnbm9yZSBjb21tZW50cyBpZiB0aGUgdi1pZiBpcyBkaXJlY3QgY2hpbGQgb2YgPHRyYW5zaXRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgIShjb250ZXh0LnBhcmVudCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnBhcmVudC50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQnVpbHRJblR5cGUoY29udGV4dC5wYXJlbnQudGFnLCAndHJhbnNpdGlvbicpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGJyYW5jaC5jaGlsZHJlbiA9IFsuLi5jb21tZW50cywgLi4uYnJhbmNoLmNoaWxkcmVuXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIGNoZWNrIGlmIHVzZXIgaXMgZm9yY2luZyBzYW1lIGtleSBvbiBkaWZmZXJlbnQgYnJhbmNoZXNcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgIXRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBicmFuY2gudXNlcktleTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpYmxpbmcuYnJhbmNoZXMuZm9yRWFjaCgoeyB1c2VyS2V5IH0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1NhbWVLZXkodXNlcktleSwga2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDI5IC8qIEVycm9yQ29kZXMuWF9WX0lGX1NBTUVfS0VZICovLCBicmFuY2gudXNlcktleS5sb2MpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgc2libGluZy5icmFuY2hlcy5wdXNoKGJyYW5jaCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvbkV4aXQgPSBwcm9jZXNzQ29kZWdlbiAmJiBwcm9jZXNzQ29kZWdlbihzaWJsaW5nLCBicmFuY2gsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIC8vIHNpbmNlIHRoZSBicmFuY2ggd2FzIHJlbW92ZWQsIGl0IHdpbGwgbm90IGJlIHRyYXZlcnNlZC5cclxuICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0byB0cmF2ZXJzZSBoZXJlLlxyXG4gICAgICAgICAgICAgICAgdHJhdmVyc2VOb2RlKGJyYW5jaCwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICAvLyBjYWxsIG9uIGV4aXRcclxuICAgICAgICAgICAgICAgIGlmIChvbkV4aXQpXHJcbiAgICAgICAgICAgICAgICAgICAgb25FeGl0KCk7XHJcbiAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdG8gcmVzZXQgY3VycmVudE5vZGUgYWZ0ZXIgdHJhdmVyc2FsIHRvIGluZGljYXRlIHRoaXNcclxuICAgICAgICAgICAgICAgIC8vIG5vZGUgaGFzIGJlZW4gcmVtb3ZlZC5cclxuICAgICAgICAgICAgICAgIGNvbnRleHQuY3VycmVudE5vZGUgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzAgLyogRXJyb3JDb2Rlcy5YX1ZfRUxTRV9OT19BREpBQ0VOVF9JRiAqLywgbm9kZS5sb2MpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlSWZCcmFuY2gobm9kZSwgZGlyKSB7XHJcbiAgICBjb25zdCBpc1RlbXBsYXRlSWYgPSBub2RlLnRhZ1R5cGUgPT09IDMgLyogRWxlbWVudFR5cGVzLlRFTVBMQVRFICovO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAxMCAvKiBOb2RlVHlwZXMuSUZfQlJBTkNIICovLFxyXG4gICAgICAgIGxvYzogbm9kZS5sb2MsXHJcbiAgICAgICAgY29uZGl0aW9uOiBkaXIubmFtZSA9PT0gJ2Vsc2UnID8gdW5kZWZpbmVkIDogZGlyLmV4cCxcclxuICAgICAgICBjaGlsZHJlbjogaXNUZW1wbGF0ZUlmICYmICFmaW5kRGlyKG5vZGUsICdmb3InKSA/IG5vZGUuY2hpbGRyZW4gOiBbbm9kZV0sXHJcbiAgICAgICAgdXNlcktleTogZmluZFByb3Aobm9kZSwgYGtleWApLFxyXG4gICAgICAgIGlzVGVtcGxhdGVJZlxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVDb2RlZ2VuTm9kZUZvckJyYW5jaChicmFuY2gsIGtleUluZGV4LCBjb250ZXh0KSB7XHJcbiAgICBpZiAoYnJhbmNoLmNvbmRpdGlvbikge1xyXG4gICAgICAgIHJldHVybiBjcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb24oYnJhbmNoLmNvbmRpdGlvbiwgY3JlYXRlQ2hpbGRyZW5Db2RlZ2VuTm9kZShicmFuY2gsIGtleUluZGV4LCBjb250ZXh0KSwgXHJcbiAgICAgICAgLy8gbWFrZSBzdXJlIHRvIHBhc3MgaW4gYXNCbG9jazogdHJ1ZSBzbyB0aGF0IHRoZSBjb21tZW50IG5vZGUgY2FsbFxyXG4gICAgICAgIC8vIGNsb3NlcyB0aGUgY3VycmVudCBibG9jay5cclxuICAgICAgICBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihDUkVBVEVfQ09NTUVOVCksIFtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gJ1widi1pZlwiJyA6ICdcIlwiJyxcclxuICAgICAgICAgICAgJ3RydWUnXHJcbiAgICAgICAgXSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUNoaWxkcmVuQ29kZWdlbk5vZGUoYnJhbmNoLCBrZXlJbmRleCwgY29udGV4dCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlQ2hpbGRyZW5Db2RlZ2VuTm9kZShicmFuY2gsIGtleUluZGV4LCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IGhlbHBlciB9ID0gY29udGV4dDtcclxuICAgIGNvbnN0IGtleVByb3BlcnR5ID0gY3JlYXRlT2JqZWN0UHJvcGVydHkoYGtleWAsIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYCR7a2V5SW5kZXh9YCwgZmFsc2UsIGxvY1N0dWIsIDIgLyogQ29uc3RhbnRUeXBlcy5DQU5fSE9JU1QgKi8pKTtcclxuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IGJyYW5jaDtcclxuICAgIGNvbnN0IGZpcnN0Q2hpbGQgPSBjaGlsZHJlblswXTtcclxuICAgIGNvbnN0IG5lZWRGcmFnbWVudFdyYXBwZXIgPSBjaGlsZHJlbi5sZW5ndGggIT09IDEgfHwgZmlyc3RDaGlsZC50eXBlICE9PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovO1xyXG4gICAgaWYgKG5lZWRGcmFnbWVudFdyYXBwZXIpIHtcclxuICAgICAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmIGZpcnN0Q2hpbGQudHlwZSA9PT0gMTEgLyogTm9kZVR5cGVzLkZPUiAqLykge1xyXG4gICAgICAgICAgICAvLyBvcHRpbWl6ZSBhd2F5IG5lc3RlZCBmcmFnbWVudHMgd2hlbiBjaGlsZCBpcyBhIEZvck5vZGVcclxuICAgICAgICAgICAgY29uc3Qgdm5vZGVDYWxsID0gZmlyc3RDaGlsZC5jb2RlZ2VuTm9kZTtcclxuICAgICAgICAgICAgaW5qZWN0UHJvcCh2bm9kZUNhbGwsIGtleVByb3BlcnR5LCBjb250ZXh0KTtcclxuICAgICAgICAgICAgcmV0dXJuIHZub2RlQ2FsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBwYXRjaEZsYWcgPSA2NCAvKiBQYXRjaEZsYWdzLlNUQUJMRV9GUkFHTUVOVCAqLztcclxuICAgICAgICAgICAgbGV0IHBhdGNoRmxhZ1RleHQgPSBQYXRjaEZsYWdOYW1lc1s2NCAvKiBQYXRjaEZsYWdzLlNUQUJMRV9GUkFHTUVOVCAqL107XHJcbiAgICAgICAgICAgIC8vIGNoZWNrIGlmIHRoZSBmcmFnbWVudCBhY3R1YWxseSBjb250YWlucyBhIHNpbmdsZSB2YWxpZCBjaGlsZCB3aXRoXHJcbiAgICAgICAgICAgIC8vIHRoZSByZXN0IGJlaW5nIGNvbW1lbnRzXHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgICFicmFuY2guaXNUZW1wbGF0ZUlmICYmXHJcbiAgICAgICAgICAgICAgICBjaGlsZHJlbi5maWx0ZXIoYyA9PiBjLnR5cGUgIT09IDMgLyogTm9kZVR5cGVzLkNPTU1FTlQgKi8pLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICAgICAgcGF0Y2hGbGFnIHw9IDIwNDggLyogUGF0Y2hGbGFncy5ERVZfUk9PVF9GUkFHTUVOVCAqLztcclxuICAgICAgICAgICAgICAgIHBhdGNoRmxhZ1RleHQgKz0gYCwgJHtQYXRjaEZsYWdOYW1lc1syMDQ4IC8qIFBhdGNoRmxhZ3MuREVWX1JPT1RfRlJBR01FTlQgKi9dfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlQ2FsbChjb250ZXh0LCBoZWxwZXIoRlJBR01FTlQpLCBjcmVhdGVPYmplY3RFeHByZXNzaW9uKFtrZXlQcm9wZXJ0eV0pLCBjaGlsZHJlbiwgcGF0Y2hGbGFnICsgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGAgLyogJHtwYXRjaEZsYWdUZXh0fSAqL2AgOiBgYCksIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0cnVlLCBmYWxzZSwgZmFsc2UgLyogaXNDb21wb25lbnQgKi8sIGJyYW5jaC5sb2MpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHJldCA9IGZpcnN0Q2hpbGQuY29kZWdlbk5vZGU7XHJcbiAgICAgICAgY29uc3Qgdm5vZGVDYWxsID0gZ2V0TWVtb2VkVk5vZGVDYWxsKHJldCk7XHJcbiAgICAgICAgLy8gQ2hhbmdlIGNyZWF0ZVZOb2RlIHRvIGNyZWF0ZUJsb2NrLlxyXG4gICAgICAgIGlmICh2bm9kZUNhbGwudHlwZSA9PT0gMTMgLyogTm9kZVR5cGVzLlZOT0RFX0NBTEwgKi8pIHtcclxuICAgICAgICAgICAgbWFrZUJsb2NrKHZub2RlQ2FsbCwgY29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGluamVjdCBicmFuY2gga2V5XHJcbiAgICAgICAgaW5qZWN0UHJvcCh2bm9kZUNhbGwsIGtleVByb3BlcnR5LCBjb250ZXh0KTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGlzU2FtZUtleShhLCBiKSB7XHJcbiAgICBpZiAoIWEgfHwgYS50eXBlICE9PSBiLnR5cGUpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAoYS50eXBlID09PSA2IC8qIE5vZGVUeXBlcy5BVFRSSUJVVEUgKi8pIHtcclxuICAgICAgICBpZiAoYS52YWx1ZS5jb250ZW50ICE9PSBiLnZhbHVlLmNvbnRlbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIGRpcmVjdGl2ZVxyXG4gICAgICAgIGNvbnN0IGV4cCA9IGEuZXhwO1xyXG4gICAgICAgIGNvbnN0IGJyYW5jaEV4cCA9IGIuZXhwO1xyXG4gICAgICAgIGlmIChleHAudHlwZSAhPT0gYnJhbmNoRXhwLnR5cGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZXhwLnR5cGUgIT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovIHx8XHJcbiAgICAgICAgICAgIGV4cC5pc1N0YXRpYyAhPT0gYnJhbmNoRXhwLmlzU3RhdGljIHx8XHJcbiAgICAgICAgICAgIGV4cC5jb250ZW50ICE9PSBicmFuY2hFeHAuY29udGVudCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbn1cclxuZnVuY3Rpb24gZ2V0UGFyZW50Q29uZGl0aW9uKG5vZGUpIHtcclxuICAgIHdoaWxlICh0cnVlKSB7XHJcbiAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gMTkgLyogTm9kZVR5cGVzLkpTX0NPTkRJVElPTkFMX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgaWYgKG5vZGUuYWx0ZXJuYXRlLnR5cGUgPT09IDE5IC8qIE5vZGVUeXBlcy5KU19DT05ESVRJT05BTF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgICAgICBub2RlID0gbm9kZS5hbHRlcm5hdGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09IDIwIC8qIE5vZGVUeXBlcy5KU19DQUNIRV9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgIG5vZGUgPSBub2RlLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxuXG5jb25zdCB0cmFuc2Zvcm1Gb3IgPSBjcmVhdGVTdHJ1Y3R1cmFsRGlyZWN0aXZlVHJhbnNmb3JtKCdmb3InLCAobm9kZSwgZGlyLCBjb250ZXh0KSA9PiB7XHJcbiAgICBjb25zdCB7IGhlbHBlciwgcmVtb3ZlSGVscGVyIH0gPSBjb250ZXh0O1xyXG4gICAgcmV0dXJuIHByb2Nlc3NGb3Iobm9kZSwgZGlyLCBjb250ZXh0LCBmb3JOb2RlID0+IHtcclxuICAgICAgICAvLyBjcmVhdGUgdGhlIGxvb3AgcmVuZGVyIGZ1bmN0aW9uIGV4cHJlc3Npb24gbm93LCBhbmQgYWRkIHRoZVxyXG4gICAgICAgIC8vIGl0ZXJhdG9yIG9uIGV4aXQgYWZ0ZXIgYWxsIGNoaWxkcmVuIGhhdmUgYmVlbiB0cmF2ZXJzZWRcclxuICAgICAgICBjb25zdCByZW5kZXJFeHAgPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihoZWxwZXIoUkVOREVSX0xJU1QpLCBbXHJcbiAgICAgICAgICAgIGZvck5vZGUuc291cmNlXHJcbiAgICAgICAgXSk7XHJcbiAgICAgICAgY29uc3QgaXNUZW1wbGF0ZSA9IGlzVGVtcGxhdGVOb2RlKG5vZGUpO1xyXG4gICAgICAgIGNvbnN0IG1lbW8gPSBmaW5kRGlyKG5vZGUsICdtZW1vJyk7XHJcbiAgICAgICAgY29uc3Qga2V5UHJvcCA9IGZpbmRQcm9wKG5vZGUsIGBrZXlgKTtcclxuICAgICAgICBjb25zdCBrZXlFeHAgPSBrZXlQcm9wICYmXHJcbiAgICAgICAgICAgIChrZXlQcm9wLnR5cGUgPT09IDYgLyogTm9kZVR5cGVzLkFUVFJJQlVURSAqL1xyXG4gICAgICAgICAgICAgICAgPyBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGtleVByb3AudmFsdWUuY29udGVudCwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgIDoga2V5UHJvcC5leHApO1xyXG4gICAgICAgIGNvbnN0IGtleVByb3BlcnR5ID0ga2V5UHJvcCA/IGNyZWF0ZU9iamVjdFByb3BlcnR5KGBrZXlgLCBrZXlFeHApIDogbnVsbDtcclxuICAgICAgICBjb25zdCBpc1N0YWJsZUZyYWdtZW50ID0gZm9yTm9kZS5zb3VyY2UudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8gJiZcclxuICAgICAgICAgICAgZm9yTm9kZS5zb3VyY2UuY29uc3RUeXBlID4gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLztcclxuICAgICAgICBjb25zdCBmcmFnbWVudEZsYWcgPSBpc1N0YWJsZUZyYWdtZW50XHJcbiAgICAgICAgICAgID8gNjQgLyogUGF0Y2hGbGFncy5TVEFCTEVfRlJBR01FTlQgKi9cclxuICAgICAgICAgICAgOiBrZXlQcm9wXHJcbiAgICAgICAgICAgICAgICA/IDEyOCAvKiBQYXRjaEZsYWdzLktFWUVEX0ZSQUdNRU5UICovXHJcbiAgICAgICAgICAgICAgICA6IDI1NiAvKiBQYXRjaEZsYWdzLlVOS0VZRURfRlJBR01FTlQgKi87XHJcbiAgICAgICAgZm9yTm9kZS5jb2RlZ2VuTm9kZSA9IGNyZWF0ZVZOb2RlQ2FsbChjb250ZXh0LCBoZWxwZXIoRlJBR01FTlQpLCB1bmRlZmluZWQsIHJlbmRlckV4cCwgZnJhZ21lbnRGbGFnICtcclxuICAgICAgICAgICAgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGAgLyogJHtQYXRjaEZsYWdOYW1lc1tmcmFnbWVudEZsYWddfSAqL2AgOiBgYCksIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0cnVlIC8qIGlzQmxvY2sgKi8sICFpc1N0YWJsZUZyYWdtZW50IC8qIGRpc2FibGVUcmFja2luZyAqLywgZmFsc2UgLyogaXNDb21wb25lbnQgKi8sIG5vZGUubG9jKTtcclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyBmaW5pc2ggdGhlIGNvZGVnZW4gbm93IHRoYXQgYWxsIGNoaWxkcmVuIGhhdmUgYmVlbiB0cmF2ZXJzZWRcclxuICAgICAgICAgICAgbGV0IGNoaWxkQmxvY2s7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IGZvck5vZGU7XHJcbiAgICAgICAgICAgIC8vIGNoZWNrIDx0ZW1wbGF0ZSB2LWZvcj4ga2V5IHBsYWNlbWVudFxyXG4gICAgICAgICAgICBpZiAoKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCAhdHJ1ZSkgJiYgaXNUZW1wbGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgbm9kZS5jaGlsZHJlbi5zb21lKGMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gZmluZFByb3AoYywgJ2tleScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigzMyAvKiBFcnJvckNvZGVzLlhfVl9GT1JfVEVNUExBVEVfS0VZX1BMQUNFTUVOVCAqLywga2V5LmxvYykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBuZWVkRnJhZ21lbnRXcmFwcGVyID0gY2hpbGRyZW4ubGVuZ3RoICE9PSAxIHx8IGNoaWxkcmVuWzBdLnR5cGUgIT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi87XHJcbiAgICAgICAgICAgIGNvbnN0IHNsb3RPdXRsZXQgPSBpc1Nsb3RPdXRsZXQobm9kZSlcclxuICAgICAgICAgICAgICAgID8gbm9kZVxyXG4gICAgICAgICAgICAgICAgOiBpc1RlbXBsYXRlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDEgJiZcclxuICAgICAgICAgICAgICAgICAgICBpc1Nsb3RPdXRsZXQobm9kZS5jaGlsZHJlblswXSlcclxuICAgICAgICAgICAgICAgICAgICA/IG5vZGUuY2hpbGRyZW5bMF0gLy8gYXBpLWV4dHJhY3RvciBzb21laG93IGZhaWxzIHRvIGluZmVyIHRoaXNcclxuICAgICAgICAgICAgICAgICAgICA6IG51bGw7XHJcbiAgICAgICAgICAgIGlmIChzbG90T3V0bGV0KSB7XHJcbiAgICAgICAgICAgICAgICAvLyA8c2xvdCB2LWZvcj1cIi4uLlwiPiBvciA8dGVtcGxhdGUgdi1mb3I9XCIuLi5cIj48c2xvdC8+PC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIGNoaWxkQmxvY2sgPSBzbG90T3V0bGV0LmNvZGVnZW5Ob2RlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzVGVtcGxhdGUgJiYga2V5UHJvcGVydHkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyA8dGVtcGxhdGUgdi1mb3I9XCIuLi5cIiA6a2V5PVwiLi4uXCI+PHNsb3QvPjwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBpbmplY3QgdGhlIGtleSB0byB0aGUgcmVuZGVyU2xvdCgpIGNhbGwuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHByb3BzIGZvciByZW5kZXJTbG90IGlzIHBhc3NlZCBhcyB0aGUgM3JkIGFyZ3VtZW50LlxyXG4gICAgICAgICAgICAgICAgICAgIGluamVjdFByb3AoY2hpbGRCbG9jaywga2V5UHJvcGVydHksIGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKG5lZWRGcmFnbWVudFdyYXBwZXIpIHtcclxuICAgICAgICAgICAgICAgIC8vIDx0ZW1wbGF0ZSB2LWZvcj1cIi4uLlwiPiB3aXRoIHRleHQgb3IgbXVsdGktZWxlbWVudHNcclxuICAgICAgICAgICAgICAgIC8vIHNob3VsZCBnZW5lcmF0ZSBhIGZyYWdtZW50IGJsb2NrIGZvciBlYWNoIGxvb3BcclxuICAgICAgICAgICAgICAgIGNoaWxkQmxvY2sgPSBjcmVhdGVWTm9kZUNhbGwoY29udGV4dCwgaGVscGVyKEZSQUdNRU5UKSwga2V5UHJvcGVydHkgPyBjcmVhdGVPYmplY3RFeHByZXNzaW9uKFtrZXlQcm9wZXJ0eV0pIDogdW5kZWZpbmVkLCBub2RlLmNoaWxkcmVuLCA2NCAvKiBQYXRjaEZsYWdzLlNUQUJMRV9GUkFHTUVOVCAqLyArXHJcbiAgICAgICAgICAgICAgICAgICAgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGAgLyogJHtQYXRjaEZsYWdOYW1lc1s2NCAvKiBQYXRjaEZsYWdzLlNUQUJMRV9GUkFHTUVOVCAqL119ICovYFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGBgKSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRydWUsIHVuZGVmaW5lZCwgZmFsc2UgLyogaXNDb21wb25lbnQgKi8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gTm9ybWFsIGVsZW1lbnQgdi1mb3IuIERpcmVjdGx5IHVzZSB0aGUgY2hpbGQncyBjb2RlZ2VuTm9kZVxyXG4gICAgICAgICAgICAgICAgLy8gYnV0IG1hcmsgaXQgYXMgYSBibG9jay5cclxuICAgICAgICAgICAgICAgIGNoaWxkQmxvY2sgPSBjaGlsZHJlblswXVxyXG4gICAgICAgICAgICAgICAgICAgIC5jb2RlZ2VuTm9kZTtcclxuICAgICAgICAgICAgICAgIGlmIChpc1RlbXBsYXRlICYmIGtleVByb3BlcnR5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5qZWN0UHJvcChjaGlsZEJsb2NrLCBrZXlQcm9wZXJ0eSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRCbG9jay5pc0Jsb2NrICE9PSAhaXNTdGFibGVGcmFnbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZEJsb2NrLmlzQmxvY2spIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3dpdGNoIGZyb20gYmxvY2sgdG8gdm5vZGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlSGVscGVyKE9QRU5fQkxPQ0spO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVIZWxwZXIoZ2V0Vk5vZGVCbG9ja0hlbHBlcihjb250ZXh0LmluU1NSLCBjaGlsZEJsb2NrLmlzQ29tcG9uZW50KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzd2l0Y2ggZnJvbSB2bm9kZSB0byBibG9ja1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVIZWxwZXIoZ2V0Vk5vZGVIZWxwZXIoY29udGV4dC5pblNTUiwgY2hpbGRCbG9jay5pc0NvbXBvbmVudCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNoaWxkQmxvY2suaXNCbG9jayA9ICFpc1N0YWJsZUZyYWdtZW50O1xyXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkQmxvY2suaXNCbG9jaykge1xyXG4gICAgICAgICAgICAgICAgICAgIGhlbHBlcihPUEVOX0JMT0NLKTtcclxuICAgICAgICAgICAgICAgICAgICBoZWxwZXIoZ2V0Vk5vZGVCbG9ja0hlbHBlcihjb250ZXh0LmluU1NSLCBjaGlsZEJsb2NrLmlzQ29tcG9uZW50KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBoZWxwZXIoZ2V0Vk5vZGVIZWxwZXIoY29udGV4dC5pblNTUiwgY2hpbGRCbG9jay5pc0NvbXBvbmVudCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChtZW1vKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsb29wID0gY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKGNyZWF0ZUZvckxvb3BQYXJhbXMoZm9yTm9kZS5wYXJzZVJlc3VsdCwgW1xyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYF9jYWNoZWRgKVxyXG4gICAgICAgICAgICAgICAgXSkpO1xyXG4gICAgICAgICAgICAgICAgbG9vcC5ib2R5ID0gY3JlYXRlQmxvY2tTdGF0ZW1lbnQoW1xyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbYGNvbnN0IF9tZW1vID0gKGAsIG1lbW8uZXhwLCBgKWBdKSxcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgaWYgKF9jYWNoZWRgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4oa2V5RXhwID8gW2AgJiYgX2NhY2hlZC5rZXkgPT09IGAsIGtleUV4cF0gOiBbXSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGAgJiYgJHtjb250ZXh0LmhlbHBlclN0cmluZyhJU19NRU1PX1NBTUUpfShfY2FjaGVkLCBfbWVtbykpIHJldHVybiBfY2FjaGVkYFxyXG4gICAgICAgICAgICAgICAgICAgIF0pLFxyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbYGNvbnN0IF9pdGVtID0gYCwgY2hpbGRCbG9ja10pLFxyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYF9pdGVtLm1lbW8gPSBfbWVtb2ApLFxyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYHJldHVybiBfaXRlbWApXHJcbiAgICAgICAgICAgICAgICBdKTtcclxuICAgICAgICAgICAgICAgIHJlbmRlckV4cC5hcmd1bWVudHMucHVzaChsb29wLCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGBfY2FjaGVgKSwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihTdHJpbmcoY29udGV4dC5jYWNoZWQrKykpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJlbmRlckV4cC5hcmd1bWVudHMucHVzaChjcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24oY3JlYXRlRm9yTG9vcFBhcmFtcyhmb3JOb2RlLnBhcnNlUmVzdWx0KSwgY2hpbGRCbG9jaywgdHJ1ZSAvKiBmb3JjZSBuZXdsaW5lICovKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfSk7XHJcbn0pO1xyXG4vLyB0YXJnZXQtYWdub3N0aWMgdHJhbnNmb3JtIHVzZWQgZm9yIGJvdGggQ2xpZW50IGFuZCBTU1JcclxuZnVuY3Rpb24gcHJvY2Vzc0Zvcihub2RlLCBkaXIsIGNvbnRleHQsIHByb2Nlc3NDb2RlZ2VuKSB7XHJcbiAgICBpZiAoIWRpci5leHApIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigzMSAvKiBFcnJvckNvZGVzLlhfVl9GT1JfTk9fRVhQUkVTU0lPTiAqLywgZGlyLmxvYykpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHBhcnNlUmVzdWx0ID0gcGFyc2VGb3JFeHByZXNzaW9uKFxyXG4gICAgLy8gY2FuIG9ubHkgYmUgc2ltcGxlIGV4cHJlc3Npb24gYmVjYXVzZSB2Rm9yIHRyYW5zZm9ybSBpcyBhcHBsaWVkXHJcbiAgICAvLyBiZWZvcmUgZXhwcmVzc2lvbiB0cmFuc2Zvcm0uXHJcbiAgICBkaXIuZXhwLCBjb250ZXh0KTtcclxuICAgIGlmICghcGFyc2VSZXN1bHQpIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigzMiAvKiBFcnJvckNvZGVzLlhfVl9GT1JfTUFMRk9STUVEX0VYUFJFU1NJT04gKi8sIGRpci5sb2MpKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IGFkZElkZW50aWZpZXJzLCByZW1vdmVJZGVudGlmaWVycywgc2NvcGVzIH0gPSBjb250ZXh0O1xyXG4gICAgY29uc3QgeyBzb3VyY2UsIHZhbHVlLCBrZXksIGluZGV4IH0gPSBwYXJzZVJlc3VsdDtcclxuICAgIGNvbnN0IGZvck5vZGUgPSB7XHJcbiAgICAgICAgdHlwZTogMTEgLyogTm9kZVR5cGVzLkZPUiAqLyxcclxuICAgICAgICBsb2M6IGRpci5sb2MsXHJcbiAgICAgICAgc291cmNlLFxyXG4gICAgICAgIHZhbHVlQWxpYXM6IHZhbHVlLFxyXG4gICAgICAgIGtleUFsaWFzOiBrZXksXHJcbiAgICAgICAgb2JqZWN0SW5kZXhBbGlhczogaW5kZXgsXHJcbiAgICAgICAgcGFyc2VSZXN1bHQsXHJcbiAgICAgICAgY2hpbGRyZW46IGlzVGVtcGxhdGVOb2RlKG5vZGUpID8gbm9kZS5jaGlsZHJlbiA6IFtub2RlXVxyXG4gICAgfTtcclxuICAgIGNvbnRleHQucmVwbGFjZU5vZGUoZm9yTm9kZSk7XHJcbiAgICAvLyBib29ra2VlcGluZ1xyXG4gICAgc2NvcGVzLnZGb3IrKztcclxuICAgIGNvbnN0IG9uRXhpdCA9IHByb2Nlc3NDb2RlZ2VuICYmIHByb2Nlc3NDb2RlZ2VuKGZvck5vZGUpO1xyXG4gICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICBzY29wZXMudkZvci0tO1xyXG4gICAgICAgIGlmIChvbkV4aXQpXHJcbiAgICAgICAgICAgIG9uRXhpdCgpO1xyXG4gICAgfTtcclxufVxyXG5jb25zdCBmb3JBbGlhc1JFID0gLyhbXFxzXFxTXSo/KVxccysoPzppbnxvZilcXHMrKFtcXHNcXFNdKikvO1xyXG4vLyBUaGlzIHJlZ2V4IGRvZXNuJ3QgY292ZXIgdGhlIGNhc2UgaWYga2V5IG9yIGluZGV4IGFsaWFzZXMgaGF2ZSBkZXN0cnVjdHVyaW5nLFxyXG4vLyBidXQgdGhvc2UgZG8gbm90IG1ha2Ugc2Vuc2UgaW4gdGhlIGZpcnN0IHBsYWNlLCBzbyB0aGlzIHdvcmtzIGluIHByYWN0aWNlLlxyXG5jb25zdCBmb3JJdGVyYXRvclJFID0gLywoW14sXFx9XFxdXSopKD86LChbXixcXH1cXF1dKikpPyQvO1xyXG5jb25zdCBzdHJpcFBhcmVuc1JFID0gL15cXCh8XFwpJC9nO1xyXG5mdW5jdGlvbiBwYXJzZUZvckV4cHJlc3Npb24oaW5wdXQsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IGxvYyA9IGlucHV0LmxvYztcclxuICAgIGNvbnN0IGV4cCA9IGlucHV0LmNvbnRlbnQ7XHJcbiAgICBjb25zdCBpbk1hdGNoID0gZXhwLm1hdGNoKGZvckFsaWFzUkUpO1xyXG4gICAgaWYgKCFpbk1hdGNoKVxyXG4gICAgICAgIHJldHVybjtcclxuICAgIGNvbnN0IFssIExIUywgUkhTXSA9IGluTWF0Y2g7XHJcbiAgICBjb25zdCByZXN1bHQgPSB7XHJcbiAgICAgICAgc291cmNlOiBjcmVhdGVBbGlhc0V4cHJlc3Npb24obG9jLCBSSFMudHJpbSgpLCBleHAuaW5kZXhPZihSSFMsIExIUy5sZW5ndGgpKSxcclxuICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxyXG4gICAgICAgIGtleTogdW5kZWZpbmVkLFxyXG4gICAgICAgIGluZGV4OiB1bmRlZmluZWRcclxuICAgIH07XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHRydWUpIHtcclxuICAgICAgICB2YWxpZGF0ZUJyb3dzZXJFeHByZXNzaW9uKHJlc3VsdC5zb3VyY2UsIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgbGV0IHZhbHVlQ29udGVudCA9IExIUy50cmltKCkucmVwbGFjZShzdHJpcFBhcmVuc1JFLCAnJykudHJpbSgpO1xyXG4gICAgY29uc3QgdHJpbW1lZE9mZnNldCA9IExIUy5pbmRleE9mKHZhbHVlQ29udGVudCk7XHJcbiAgICBjb25zdCBpdGVyYXRvck1hdGNoID0gdmFsdWVDb250ZW50Lm1hdGNoKGZvckl0ZXJhdG9yUkUpO1xyXG4gICAgaWYgKGl0ZXJhdG9yTWF0Y2gpIHtcclxuICAgICAgICB2YWx1ZUNvbnRlbnQgPSB2YWx1ZUNvbnRlbnQucmVwbGFjZShmb3JJdGVyYXRvclJFLCAnJykudHJpbSgpO1xyXG4gICAgICAgIGNvbnN0IGtleUNvbnRlbnQgPSBpdGVyYXRvck1hdGNoWzFdLnRyaW0oKTtcclxuICAgICAgICBsZXQga2V5T2Zmc2V0O1xyXG4gICAgICAgIGlmIChrZXlDb250ZW50KSB7XHJcbiAgICAgICAgICAgIGtleU9mZnNldCA9IGV4cC5pbmRleE9mKGtleUNvbnRlbnQsIHRyaW1tZWRPZmZzZXQgKyB2YWx1ZUNvbnRlbnQubGVuZ3RoKTtcclxuICAgICAgICAgICAgcmVzdWx0LmtleSA9IGNyZWF0ZUFsaWFzRXhwcmVzc2lvbihsb2MsIGtleUNvbnRlbnQsIGtleU9mZnNldCk7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgdmFsaWRhdGVCcm93c2VyRXhwcmVzc2lvbihyZXN1bHQua2V5LCBjb250ZXh0LCB0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlcmF0b3JNYXRjaFsyXSkge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleENvbnRlbnQgPSBpdGVyYXRvck1hdGNoWzJdLnRyaW0oKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4Q29udGVudCkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0LmluZGV4ID0gY3JlYXRlQWxpYXNFeHByZXNzaW9uKGxvYywgaW5kZXhDb250ZW50LCBleHAuaW5kZXhPZihpbmRleENvbnRlbnQsIHJlc3VsdC5rZXlcclxuICAgICAgICAgICAgICAgICAgICA/IGtleU9mZnNldCArIGtleUNvbnRlbnQubGVuZ3RoXHJcbiAgICAgICAgICAgICAgICAgICAgOiB0cmltbWVkT2Zmc2V0ICsgdmFsdWVDb250ZW50Lmxlbmd0aCkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVCcm93c2VyRXhwcmVzc2lvbihyZXN1bHQuaW5kZXgsIGNvbnRleHQsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHZhbHVlQ29udGVudCkge1xyXG4gICAgICAgIHJlc3VsdC52YWx1ZSA9IGNyZWF0ZUFsaWFzRXhwcmVzc2lvbihsb2MsIHZhbHVlQ29udGVudCwgdHJpbW1lZE9mZnNldCk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB0cnVlKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRlQnJvd3NlckV4cHJlc3Npb24ocmVzdWx0LnZhbHVlLCBjb250ZXh0LCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUFsaWFzRXhwcmVzc2lvbihyYW5nZSwgY29udGVudCwgb2Zmc2V0KSB7XHJcbiAgICByZXR1cm4gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihjb250ZW50LCBmYWxzZSwgZ2V0SW5uZXJSYW5nZShyYW5nZSwgb2Zmc2V0LCBjb250ZW50Lmxlbmd0aCkpO1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUZvckxvb3BQYXJhbXMoeyB2YWx1ZSwga2V5LCBpbmRleCB9LCBtZW1vQXJncyA9IFtdKSB7XHJcbiAgICByZXR1cm4gY3JlYXRlUGFyYW1zTGlzdChbdmFsdWUsIGtleSwgaW5kZXgsIC4uLm1lbW9BcmdzXSk7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlUGFyYW1zTGlzdChhcmdzKSB7XHJcbiAgICBsZXQgaSA9IGFyZ3MubGVuZ3RoO1xyXG4gICAgd2hpbGUgKGktLSkge1xyXG4gICAgICAgIGlmIChhcmdzW2ldKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBhcmdzXHJcbiAgICAgICAgLnNsaWNlKDAsIGkgKyAxKVxyXG4gICAgICAgIC5tYXAoKGFyZywgaSkgPT4gYXJnIHx8IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYF9gLnJlcGVhdChpICsgMSksIGZhbHNlKSk7XHJcbn1cblxuY29uc3QgZGVmYXVsdEZhbGxiYWNrID0gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgdW5kZWZpbmVkYCwgZmFsc2UpO1xyXG4vLyBBIE5vZGVUcmFuc2Zvcm0gdGhhdDpcclxuLy8gMS4gVHJhY2tzIHNjb3BlIGlkZW50aWZpZXJzIGZvciBzY29wZWQgc2xvdHMgc28gdGhhdCB0aGV5IGRvbid0IGdldCBwcmVmaXhlZFxyXG4vLyAgICBieSB0cmFuc2Zvcm1FeHByZXNzaW9uLiBUaGlzIGlzIG9ubHkgYXBwbGllZCBpbiBub24tYnJvd3NlciBidWlsZHMgd2l0aFxyXG4vLyAgICB7IHByZWZpeElkZW50aWZpZXJzOiB0cnVlIH0uXHJcbi8vIDIuIFRyYWNrIHYtc2xvdCBkZXB0aHMgc28gdGhhdCB3ZSBrbm93IGEgc2xvdCBpcyBpbnNpZGUgYW5vdGhlciBzbG90LlxyXG4vLyAgICBOb3RlIHRoZSBleGl0IGNhbGxiYWNrIGlzIGV4ZWN1dGVkIGJlZm9yZSBidWlsZFNsb3RzKCkgb24gdGhlIHNhbWUgbm9kZSxcclxuLy8gICAgc28gb25seSBuZXN0ZWQgc2xvdHMgc2VlIHBvc2l0aXZlIG51bWJlcnMuXHJcbmNvbnN0IHRyYWNrU2xvdFNjb3BlcyA9IChub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgKG5vZGUudGFnVHlwZSA9PT0gMSAvKiBFbGVtZW50VHlwZXMuQ09NUE9ORU5UICovIHx8XHJcbiAgICAgICAgICAgIG5vZGUudGFnVHlwZSA9PT0gMyAvKiBFbGVtZW50VHlwZXMuVEVNUExBVEUgKi8pKSB7XHJcbiAgICAgICAgLy8gV2UgYXJlIG9ubHkgY2hlY2tpbmcgbm9uLWVtcHR5IHYtc2xvdCBoZXJlXHJcbiAgICAgICAgLy8gc2luY2Ugd2Ugb25seSBjYXJlIGFib3V0IHNsb3RzIHRoYXQgaW50cm9kdWNlIHNjb3BlIHZhcmlhYmxlcy5cclxuICAgICAgICBjb25zdCB2U2xvdCA9IGZpbmREaXIobm9kZSwgJ3Nsb3QnKTtcclxuICAgICAgICBpZiAodlNsb3QpIHtcclxuICAgICAgICAgICAgdlNsb3QuZXhwO1xyXG4gICAgICAgICAgICBjb250ZXh0LnNjb3Blcy52U2xvdCsrO1xyXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zY29wZXMudlNsb3QtLTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbi8vIEEgTm9kZVRyYW5zZm9ybSB0aGF0IHRyYWNrcyBzY29wZSBpZGVudGlmaWVycyBmb3Igc2NvcGVkIHNsb3RzIHdpdGggdi1mb3IuXHJcbi8vIFRoaXMgdHJhbnNmb3JtIGlzIG9ubHkgYXBwbGllZCBpbiBub24tYnJvd3NlciBidWlsZHMgd2l0aCB7IHByZWZpeElkZW50aWZpZXJzOiB0cnVlIH1cclxuY29uc3QgdHJhY2tWRm9yU2xvdFNjb3BlcyA9IChub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBsZXQgdkZvcjtcclxuICAgIGlmIChpc1RlbXBsYXRlTm9kZShub2RlKSAmJlxyXG4gICAgICAgIG5vZGUucHJvcHMuc29tZShpc1ZTbG90KSAmJlxyXG4gICAgICAgICh2Rm9yID0gZmluZERpcihub2RlLCAnZm9yJykpKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gKHZGb3IucGFyc2VSZXN1bHQgPSBwYXJzZUZvckV4cHJlc3Npb24odkZvci5leHAsIGNvbnRleHQpKTtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgdmFsdWUsIGtleSwgaW5kZXggfSA9IHJlc3VsdDtcclxuICAgICAgICAgICAgY29uc3QgeyBhZGRJZGVudGlmaWVycywgcmVtb3ZlSWRlbnRpZmllcnMgfSA9IGNvbnRleHQ7XHJcbiAgICAgICAgICAgIHZhbHVlICYmIGFkZElkZW50aWZpZXJzKHZhbHVlKTtcclxuICAgICAgICAgICAga2V5ICYmIGFkZElkZW50aWZpZXJzKGtleSk7XHJcbiAgICAgICAgICAgIGluZGV4ICYmIGFkZElkZW50aWZpZXJzKGluZGV4KTtcclxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlICYmIHJlbW92ZUlkZW50aWZpZXJzKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGtleSAmJiByZW1vdmVJZGVudGlmaWVycyhrZXkpO1xyXG4gICAgICAgICAgICAgICAgaW5kZXggJiYgcmVtb3ZlSWRlbnRpZmllcnMoaW5kZXgpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuY29uc3QgYnVpbGRDbGllbnRTbG90Rm4gPSAocHJvcHMsIGNoaWxkcmVuLCBsb2MpID0+IGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihwcm9wcywgY2hpbGRyZW4sIGZhbHNlIC8qIG5ld2xpbmUgKi8sIHRydWUgLyogaXNTbG90ICovLCBjaGlsZHJlbi5sZW5ndGggPyBjaGlsZHJlblswXS5sb2MgOiBsb2MpO1xyXG4vLyBJbnN0ZWFkIG9mIGJlaW5nIGEgRGlyZWN0aXZlVHJhbnNmb3JtLCB2LXNsb3QgcHJvY2Vzc2luZyBpcyBjYWxsZWQgZHVyaW5nXHJcbi8vIHRyYW5zZm9ybUVsZW1lbnQgdG8gYnVpbGQgdGhlIHNsb3RzIG9iamVjdCBmb3IgYSBjb21wb25lbnQuXHJcbmZ1bmN0aW9uIGJ1aWxkU2xvdHMobm9kZSwgY29udGV4dCwgYnVpbGRTbG90Rm4gPSBidWlsZENsaWVudFNsb3RGbikge1xyXG4gICAgY29udGV4dC5oZWxwZXIoV0lUSF9DVFgpO1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiwgbG9jIH0gPSBub2RlO1xyXG4gICAgY29uc3Qgc2xvdHNQcm9wZXJ0aWVzID0gW107XHJcbiAgICBjb25zdCBkeW5hbWljU2xvdHMgPSBbXTtcclxuICAgIC8vIElmIHRoZSBzbG90IGlzIGluc2lkZSBhIHYtZm9yIG9yIGFub3RoZXIgdi1zbG90LCBmb3JjZSBpdCB0byBiZSBkeW5hbWljXHJcbiAgICAvLyBzaW5jZSBpdCBsaWtlbHkgdXNlcyBhIHNjb3BlIHZhcmlhYmxlLlxyXG4gICAgbGV0IGhhc0R5bmFtaWNTbG90cyA9IGNvbnRleHQuc2NvcGVzLnZTbG90ID4gMCB8fCBjb250ZXh0LnNjb3Blcy52Rm9yID4gMDtcclxuICAgIC8vIDEuIENoZWNrIGZvciBzbG90IHdpdGggc2xvdFByb3BzIG9uIGNvbXBvbmVudCBpdHNlbGYuXHJcbiAgICAvLyAgICA8Q29tcCB2LXNsb3Q9XCJ7IHByb3AgfVwiLz5cclxuICAgIGNvbnN0IG9uQ29tcG9uZW50U2xvdCA9IGZpbmREaXIobm9kZSwgJ3Nsb3QnLCB0cnVlKTtcclxuICAgIGlmIChvbkNvbXBvbmVudFNsb3QpIHtcclxuICAgICAgICBjb25zdCB7IGFyZywgZXhwIH0gPSBvbkNvbXBvbmVudFNsb3Q7XHJcbiAgICAgICAgaWYgKGFyZyAmJiAhaXNTdGF0aWNFeHAoYXJnKSkge1xyXG4gICAgICAgICAgICBoYXNEeW5hbWljU2xvdHMgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzbG90c1Byb3BlcnRpZXMucHVzaChjcmVhdGVPYmplY3RQcm9wZXJ0eShhcmcgfHwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbignZGVmYXVsdCcsIHRydWUpLCBidWlsZFNsb3RGbihleHAsIGNoaWxkcmVuLCBsb2MpKSk7XHJcbiAgICB9XHJcbiAgICAvLyAyLiBJdGVyYXRlIHRocm91Z2ggY2hpbGRyZW4gYW5kIGNoZWNrIGZvciB0ZW1wbGF0ZSBzbG90c1xyXG4gICAgLy8gICAgPHRlbXBsYXRlIHYtc2xvdDpmb289XCJ7IHByb3AgfVwiPlxyXG4gICAgbGV0IGhhc1RlbXBsYXRlU2xvdHMgPSBmYWxzZTtcclxuICAgIGxldCBoYXNOYW1lZERlZmF1bHRTbG90ID0gZmFsc2U7XHJcbiAgICBjb25zdCBpbXBsaWNpdERlZmF1bHRDaGlsZHJlbiA9IFtdO1xyXG4gICAgY29uc3Qgc2VlblNsb3ROYW1lcyA9IG5ldyBTZXQoKTtcclxuICAgIGxldCBjb25kaXRpb25hbEJyYW5jaEluZGV4ID0gMDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBzbG90RWxlbWVudCA9IGNoaWxkcmVuW2ldO1xyXG4gICAgICAgIGxldCBzbG90RGlyO1xyXG4gICAgICAgIGlmICghaXNUZW1wbGF0ZU5vZGUoc2xvdEVsZW1lbnQpIHx8XHJcbiAgICAgICAgICAgICEoc2xvdERpciA9IGZpbmREaXIoc2xvdEVsZW1lbnQsICdzbG90JywgdHJ1ZSkpKSB7XHJcbiAgICAgICAgICAgIC8vIG5vdCBhIDx0ZW1wbGF0ZSB2LXNsb3Q+LCBza2lwLlxyXG4gICAgICAgICAgICBpZiAoc2xvdEVsZW1lbnQudHlwZSAhPT0gMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgaW1wbGljaXREZWZhdWx0Q2hpbGRyZW4ucHVzaChzbG90RWxlbWVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvbkNvbXBvbmVudFNsb3QpIHtcclxuICAgICAgICAgICAgLy8gYWxyZWFkeSBoYXMgb24tY29tcG9uZW50IHNsb3QgLSB0aGlzIGlzIGluY29ycmVjdCB1c2FnZS5cclxuICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzcgLyogRXJyb3JDb2Rlcy5YX1ZfU0xPVF9NSVhFRF9TTE9UX1VTQUdFICovLCBzbG90RGlyLmxvYykpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgaGFzVGVtcGxhdGVTbG90cyA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgeyBjaGlsZHJlbjogc2xvdENoaWxkcmVuLCBsb2M6IHNsb3RMb2MgfSA9IHNsb3RFbGVtZW50O1xyXG4gICAgICAgIGNvbnN0IHsgYXJnOiBzbG90TmFtZSA9IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYGRlZmF1bHRgLCB0cnVlKSwgZXhwOiBzbG90UHJvcHMsIGxvYzogZGlyTG9jIH0gPSBzbG90RGlyO1xyXG4gICAgICAgIC8vIGNoZWNrIGlmIG5hbWUgaXMgZHluYW1pYy5cclxuICAgICAgICBsZXQgc3RhdGljU2xvdE5hbWU7XHJcbiAgICAgICAgaWYgKGlzU3RhdGljRXhwKHNsb3ROYW1lKSkge1xyXG4gICAgICAgICAgICBzdGF0aWNTbG90TmFtZSA9IHNsb3ROYW1lID8gc2xvdE5hbWUuY29udGVudCA6IGBkZWZhdWx0YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGhhc0R5bmFtaWNTbG90cyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHNsb3RGdW5jdGlvbiA9IGJ1aWxkU2xvdEZuKHNsb3RQcm9wcywgc2xvdENoaWxkcmVuLCBzbG90TG9jKTtcclxuICAgICAgICAvLyBjaGVjayBpZiB0aGlzIHNsb3QgaXMgY29uZGl0aW9uYWwgKHYtaWYvdi1mb3IpXHJcbiAgICAgICAgbGV0IHZJZjtcclxuICAgICAgICBsZXQgdkVsc2U7XHJcbiAgICAgICAgbGV0IHZGb3I7XHJcbiAgICAgICAgaWYgKCh2SWYgPSBmaW5kRGlyKHNsb3RFbGVtZW50LCAnaWYnKSkpIHtcclxuICAgICAgICAgICAgaGFzRHluYW1pY1Nsb3RzID0gdHJ1ZTtcclxuICAgICAgICAgICAgZHluYW1pY1Nsb3RzLnB1c2goY3JlYXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uKHZJZi5leHAsIGJ1aWxkRHluYW1pY1Nsb3Qoc2xvdE5hbWUsIHNsb3RGdW5jdGlvbiwgY29uZGl0aW9uYWxCcmFuY2hJbmRleCsrKSwgZGVmYXVsdEZhbGxiYWNrKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKCh2RWxzZSA9IGZpbmREaXIoc2xvdEVsZW1lbnQsIC9eZWxzZSgtaWYpPyQvLCB0cnVlIC8qIGFsbG93RW1wdHkgKi8pKSkge1xyXG4gICAgICAgICAgICAvLyBmaW5kIGFkamFjZW50IHYtaWZcclxuICAgICAgICAgICAgbGV0IGogPSBpO1xyXG4gICAgICAgICAgICBsZXQgcHJldjtcclxuICAgICAgICAgICAgd2hpbGUgKGotLSkge1xyXG4gICAgICAgICAgICAgICAgcHJldiA9IGNoaWxkcmVuW2pdO1xyXG4gICAgICAgICAgICAgICAgaWYgKHByZXYudHlwZSAhPT0gMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChwcmV2ICYmIGlzVGVtcGxhdGVOb2RlKHByZXYpICYmIGZpbmREaXIocHJldiwgJ2lmJykpIHtcclxuICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBub2RlXHJcbiAgICAgICAgICAgICAgICBjaGlsZHJlbi5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgICAgICBpLS07XHJcbiAgICAgICAgICAgICAgICAvLyBhdHRhY2ggdGhpcyBzbG90IHRvIHByZXZpb3VzIGNvbmRpdGlvbmFsXHJcbiAgICAgICAgICAgICAgICBsZXQgY29uZGl0aW9uYWwgPSBkeW5hbWljU2xvdHNbZHluYW1pY1Nsb3RzLmxlbmd0aCAtIDFdO1xyXG4gICAgICAgICAgICAgICAgd2hpbGUgKGNvbmRpdGlvbmFsLmFsdGVybmF0ZS50eXBlID09PSAxOSAvKiBOb2RlVHlwZXMuSlNfQ09ORElUSU9OQUxfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbmFsID0gY29uZGl0aW9uYWwuYWx0ZXJuYXRlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uZGl0aW9uYWwuYWx0ZXJuYXRlID0gdkVsc2UuZXhwXHJcbiAgICAgICAgICAgICAgICAgICAgPyBjcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb24odkVsc2UuZXhwLCBidWlsZER5bmFtaWNTbG90KHNsb3ROYW1lLCBzbG90RnVuY3Rpb24sIGNvbmRpdGlvbmFsQnJhbmNoSW5kZXgrKyksIGRlZmF1bHRGYWxsYmFjaylcclxuICAgICAgICAgICAgICAgICAgICA6IGJ1aWxkRHluYW1pY1Nsb3Qoc2xvdE5hbWUsIHNsb3RGdW5jdGlvbiwgY29uZGl0aW9uYWxCcmFuY2hJbmRleCsrKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDMwIC8qIEVycm9yQ29kZXMuWF9WX0VMU0VfTk9fQURKQUNFTlRfSUYgKi8sIHZFbHNlLmxvYykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKCh2Rm9yID0gZmluZERpcihzbG90RWxlbWVudCwgJ2ZvcicpKSkge1xyXG4gICAgICAgICAgICBoYXNEeW5hbWljU2xvdHMgPSB0cnVlO1xyXG4gICAgICAgICAgICBjb25zdCBwYXJzZVJlc3VsdCA9IHZGb3IucGFyc2VSZXN1bHQgfHxcclxuICAgICAgICAgICAgICAgIHBhcnNlRm9yRXhwcmVzc2lvbih2Rm9yLmV4cCwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGlmIChwYXJzZVJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgLy8gUmVuZGVyIHRoZSBkeW5hbWljIHNsb3RzIGFzIGFuIGFycmF5IGFuZCBhZGQgaXQgdG8gdGhlIGNyZWF0ZVNsb3QoKVxyXG4gICAgICAgICAgICAgICAgLy8gYXJncy4gVGhlIHJ1bnRpbWUga25vd3MgaG93IHRvIGhhbmRsZSBpdCBhcHByb3ByaWF0ZWx5LlxyXG4gICAgICAgICAgICAgICAgZHluYW1pY1Nsb3RzLnB1c2goY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoUkVOREVSX0xJU1QpLCBbXHJcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VSZXN1bHQuc291cmNlLFxyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihjcmVhdGVGb3JMb29wUGFyYW1zKHBhcnNlUmVzdWx0KSwgYnVpbGREeW5hbWljU2xvdChzbG90TmFtZSwgc2xvdEZ1bmN0aW9uKSwgdHJ1ZSAvKiBmb3JjZSBuZXdsaW5lICovKVxyXG4gICAgICAgICAgICAgICAgXSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzIgLyogRXJyb3JDb2Rlcy5YX1ZfRk9SX01BTEZPUk1FRF9FWFBSRVNTSU9OICovLCB2Rm9yLmxvYykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBjaGVjayBkdXBsaWNhdGUgc3RhdGljIG5hbWVzXHJcbiAgICAgICAgICAgIGlmIChzdGF0aWNTbG90TmFtZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHNlZW5TbG90TmFtZXMuaGFzKHN0YXRpY1Nsb3ROYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDM4IC8qIEVycm9yQ29kZXMuWF9WX1NMT1RfRFVQTElDQVRFX1NMT1RfTkFNRVMgKi8sIGRpckxvYykpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgc2VlblNsb3ROYW1lcy5hZGQoc3RhdGljU2xvdE5hbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHN0YXRpY1Nsb3ROYW1lID09PSAnZGVmYXVsdCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBoYXNOYW1lZERlZmF1bHRTbG90ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzbG90c1Byb3BlcnRpZXMucHVzaChjcmVhdGVPYmplY3RQcm9wZXJ0eShzbG90TmFtZSwgc2xvdEZ1bmN0aW9uKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCFvbkNvbXBvbmVudFNsb3QpIHtcclxuICAgICAgICBjb25zdCBidWlsZERlZmF1bHRTbG90UHJvcGVydHkgPSAocHJvcHMsIGNoaWxkcmVuKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZuID0gYnVpbGRTbG90Rm4ocHJvcHMsIGNoaWxkcmVuLCBsb2MpO1xyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5jb21wYXRDb25maWcpIHtcclxuICAgICAgICAgICAgICAgIGZuLmlzTm9uU2NvcGVkU2xvdCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZU9iamVjdFByb3BlcnR5KGBkZWZhdWx0YCwgZm4pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKCFoYXNUZW1wbGF0ZVNsb3RzKSB7XHJcbiAgICAgICAgICAgIC8vIGltcGxpY2l0IGRlZmF1bHQgc2xvdCAob24gY29tcG9uZW50KVxyXG4gICAgICAgICAgICBzbG90c1Byb3BlcnRpZXMucHVzaChidWlsZERlZmF1bHRTbG90UHJvcGVydHkodW5kZWZpbmVkLCBjaGlsZHJlbikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpbXBsaWNpdERlZmF1bHRDaGlsZHJlbi5sZW5ndGggJiZcclxuICAgICAgICAgICAgLy8gIzM3NjZcclxuICAgICAgICAgICAgLy8gd2l0aCB3aGl0ZXNwYWNlOiAncHJlc2VydmUnLCB3aGl0ZXNwYWNlcyBiZXR3ZWVuIHNsb3RzIHdpbGwgZW5kIHVwIGluXHJcbiAgICAgICAgICAgIC8vIGltcGxpY2l0RGVmYXVsdENoaWxkcmVuLiBJZ25vcmUgaWYgYWxsIGltcGxpY2l0IGNoaWxkcmVuIGFyZSB3aGl0ZXNwYWNlcy5cclxuICAgICAgICAgICAgaW1wbGljaXREZWZhdWx0Q2hpbGRyZW4uc29tZShub2RlID0+IGlzTm9uV2hpdGVzcGFjZUNvbnRlbnQobm9kZSkpKSB7XHJcbiAgICAgICAgICAgIC8vIGltcGxpY2l0IGRlZmF1bHQgc2xvdCAobWl4ZWQgd2l0aCBuYW1lZCBzbG90cylcclxuICAgICAgICAgICAgaWYgKGhhc05hbWVkRGVmYXVsdFNsb3QpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDM5IC8qIEVycm9yQ29kZXMuWF9WX1NMT1RfRVhUUkFORU9VU19ERUZBVUxUX1NMT1RfQ0hJTERSRU4gKi8sIGltcGxpY2l0RGVmYXVsdENoaWxkcmVuWzBdLmxvYykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgc2xvdHNQcm9wZXJ0aWVzLnB1c2goYnVpbGREZWZhdWx0U2xvdFByb3BlcnR5KHVuZGVmaW5lZCwgaW1wbGljaXREZWZhdWx0Q2hpbGRyZW4pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHNsb3RGbGFnID0gaGFzRHluYW1pY1Nsb3RzXHJcbiAgICAgICAgPyAyIC8qIFNsb3RGbGFncy5EWU5BTUlDICovXHJcbiAgICAgICAgOiBoYXNGb3J3YXJkZWRTbG90cyhub2RlLmNoaWxkcmVuKVxyXG4gICAgICAgICAgICA/IDMgLyogU2xvdEZsYWdzLkZPUldBUkRFRCAqL1xyXG4gICAgICAgICAgICA6IDEgLyogU2xvdEZsYWdzLlNUQUJMRSAqLztcclxuICAgIGxldCBzbG90cyA9IGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oc2xvdHNQcm9wZXJ0aWVzLmNvbmNhdChjcmVhdGVPYmplY3RQcm9wZXJ0eShgX2AsIFxyXG4gICAgLy8gMiA9IGNvbXBpbGVkIGJ1dCBkeW5hbWljID0gY2FuIHNraXAgbm9ybWFsaXphdGlvbiwgYnV0IG11c3QgcnVuIGRpZmZcclxuICAgIC8vIDEgPSBjb21waWxlZCBhbmQgc3RhdGljID0gY2FuIHNraXAgbm9ybWFsaXphdGlvbiBBTkQgZGlmZiBhcyBvcHRpbWl6ZWRcclxuICAgIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oc2xvdEZsYWcgKyAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYCAvKiAke3Nsb3RGbGFnc1RleHRbc2xvdEZsYWddfSAqL2AgOiBgYCksIGZhbHNlKSkpLCBsb2MpO1xyXG4gICAgaWYgKGR5bmFtaWNTbG90cy5sZW5ndGgpIHtcclxuICAgICAgICBzbG90cyA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKENSRUFURV9TTE9UUyksIFtcclxuICAgICAgICAgICAgc2xvdHMsXHJcbiAgICAgICAgICAgIGNyZWF0ZUFycmF5RXhwcmVzc2lvbihkeW5hbWljU2xvdHMpXHJcbiAgICAgICAgXSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHNsb3RzLFxyXG4gICAgICAgIGhhc0R5bmFtaWNTbG90c1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBidWlsZER5bmFtaWNTbG90KG5hbWUsIGZuLCBpbmRleCkge1xyXG4gICAgY29uc3QgcHJvcHMgPSBbXHJcbiAgICAgICAgY3JlYXRlT2JqZWN0UHJvcGVydHkoYG5hbWVgLCBuYW1lKSxcclxuICAgICAgICBjcmVhdGVPYmplY3RQcm9wZXJ0eShgZm5gLCBmbilcclxuICAgIF07XHJcbiAgICBpZiAoaW5kZXggIT0gbnVsbCkge1xyXG4gICAgICAgIHByb3BzLnB1c2goY3JlYXRlT2JqZWN0UHJvcGVydHkoYGtleWAsIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oU3RyaW5nKGluZGV4KSwgdHJ1ZSkpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjcmVhdGVPYmplY3RFeHByZXNzaW9uKHByb3BzKTtcclxufVxyXG5mdW5jdGlvbiBoYXNGb3J3YXJkZWRTbG90cyhjaGlsZHJlbikge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baV07XHJcbiAgICAgICAgc3dpdGNoIChjaGlsZC50eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLzpcclxuICAgICAgICAgICAgICAgIGlmIChjaGlsZC50YWdUeXBlID09PSAyIC8qIEVsZW1lbnRUeXBlcy5TTE9UICovIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzRm9yd2FyZGVkU2xvdHMoY2hpbGQuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSA5IC8qIE5vZGVUeXBlcy5JRiAqLzpcclxuICAgICAgICAgICAgICAgIGlmIChoYXNGb3J3YXJkZWRTbG90cyhjaGlsZC5icmFuY2hlcykpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxMCAvKiBOb2RlVHlwZXMuSUZfQlJBTkNIICovOlxyXG4gICAgICAgICAgICBjYXNlIDExIC8qIE5vZGVUeXBlcy5GT1IgKi86XHJcbiAgICAgICAgICAgICAgICBpZiAoaGFzRm9yd2FyZGVkU2xvdHMoY2hpbGQuY2hpbGRyZW4pKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbmZ1bmN0aW9uIGlzTm9uV2hpdGVzcGFjZUNvbnRlbnQobm9kZSkge1xyXG4gICAgaWYgKG5vZGUudHlwZSAhPT0gMiAvKiBOb2RlVHlwZXMuVEVYVCAqLyAmJiBub2RlLnR5cGUgIT09IDEyIC8qIE5vZGVUeXBlcy5URVhUX0NBTEwgKi8pXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICByZXR1cm4gbm9kZS50eXBlID09PSAyIC8qIE5vZGVUeXBlcy5URVhUICovXHJcbiAgICAgICAgPyAhIW5vZGUuY29udGVudC50cmltKClcclxuICAgICAgICA6IGlzTm9uV2hpdGVzcGFjZUNvbnRlbnQobm9kZS5jb250ZW50KTtcclxufVxuXG4vLyBzb21lIGRpcmVjdGl2ZSB0cmFuc2Zvcm1zIChlLmcuIHYtbW9kZWwpIG1heSByZXR1cm4gYSBzeW1ib2wgZm9yIHJ1bnRpbWVcclxuLy8gaW1wb3J0LCB3aGljaCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIGEgcmVzb2x2ZURpcmVjdGl2ZSBjYWxsLlxyXG5jb25zdCBkaXJlY3RpdmVJbXBvcnRNYXAgPSBuZXcgV2Vha01hcCgpO1xyXG4vLyBnZW5lcmF0ZSBhIEphdmFTY3JpcHQgQVNUIGZvciB0aGlzIGVsZW1lbnQncyBjb2RlZ2VuXHJcbmNvbnN0IHRyYW5zZm9ybUVsZW1lbnQgPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgLy8gcGVyZm9ybSB0aGUgd29yayBvbiBleGl0LCBhZnRlciBhbGwgY2hpbGQgZXhwcmVzc2lvbnMgaGF2ZSBiZWVuXHJcbiAgICAvLyBwcm9jZXNzZWQgYW5kIG1lcmdlZC5cclxuICAgIHJldHVybiBmdW5jdGlvbiBwb3N0VHJhbnNmb3JtRWxlbWVudCgpIHtcclxuICAgICAgICBub2RlID0gY29udGV4dC5jdXJyZW50Tm9kZTtcclxuICAgICAgICBpZiAoIShub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8gJiZcclxuICAgICAgICAgICAgKG5vZGUudGFnVHlwZSA9PT0gMCAvKiBFbGVtZW50VHlwZXMuRUxFTUVOVCAqLyB8fFxyXG4gICAgICAgICAgICAgICAgbm9kZS50YWdUeXBlID09PSAxIC8qIEVsZW1lbnRUeXBlcy5DT01QT05FTlQgKi8pKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHsgdGFnLCBwcm9wcyB9ID0gbm9kZTtcclxuICAgICAgICBjb25zdCBpc0NvbXBvbmVudCA9IG5vZGUudGFnVHlwZSA9PT0gMSAvKiBFbGVtZW50VHlwZXMuQ09NUE9ORU5UICovO1xyXG4gICAgICAgIC8vIFRoZSBnb2FsIG9mIHRoZSB0cmFuc2Zvcm0gaXMgdG8gY3JlYXRlIGEgY29kZWdlbk5vZGUgaW1wbGVtZW50aW5nIHRoZVxyXG4gICAgICAgIC8vIFZOb2RlQ2FsbCBpbnRlcmZhY2UuXHJcbiAgICAgICAgbGV0IHZub2RlVGFnID0gaXNDb21wb25lbnRcclxuICAgICAgICAgICAgPyByZXNvbHZlQ29tcG9uZW50VHlwZShub2RlLCBjb250ZXh0KVxyXG4gICAgICAgICAgICA6IGBcIiR7dGFnfVwiYDtcclxuICAgICAgICBjb25zdCBpc0R5bmFtaWNDb21wb25lbnQgPSBpc09iamVjdCh2bm9kZVRhZykgJiYgdm5vZGVUYWcuY2FsbGVlID09PSBSRVNPTFZFX0RZTkFNSUNfQ09NUE9ORU5UO1xyXG4gICAgICAgIGxldCB2bm9kZVByb3BzO1xyXG4gICAgICAgIGxldCB2bm9kZUNoaWxkcmVuO1xyXG4gICAgICAgIGxldCB2bm9kZVBhdGNoRmxhZztcclxuICAgICAgICBsZXQgcGF0Y2hGbGFnID0gMDtcclxuICAgICAgICBsZXQgdm5vZGVEeW5hbWljUHJvcHM7XHJcbiAgICAgICAgbGV0IGR5bmFtaWNQcm9wTmFtZXM7XHJcbiAgICAgICAgbGV0IHZub2RlRGlyZWN0aXZlcztcclxuICAgICAgICBsZXQgc2hvdWxkVXNlQmxvY2sgPSBcclxuICAgICAgICAvLyBkeW5hbWljIGNvbXBvbmVudCBtYXkgcmVzb2x2ZSB0byBwbGFpbiBlbGVtZW50c1xyXG4gICAgICAgIGlzRHluYW1pY0NvbXBvbmVudCB8fFxyXG4gICAgICAgICAgICB2bm9kZVRhZyA9PT0gVEVMRVBPUlQgfHxcclxuICAgICAgICAgICAgdm5vZGVUYWcgPT09IFNVU1BFTlNFIHx8XHJcbiAgICAgICAgICAgICghaXNDb21wb25lbnQgJiZcclxuICAgICAgICAgICAgICAgIC8vIDxzdmc+IGFuZCA8Zm9yZWlnbk9iamVjdD4gbXVzdCBiZSBmb3JjZWQgaW50byBibG9ja3Mgc28gdGhhdCBibG9ja1xyXG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlcyBpbnNpZGUgZ2V0IHByb3BlciBpc1NWRyBmbGFnIGF0IHJ1bnRpbWUuICgjNjM5LCAjNjQzKVxyXG4gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0ZWNobmljYWxseSB3ZWItc3BlY2lmaWMsIGJ1dCBzcGxpdHRpbmcgdGhlIGxvZ2ljIG91dCBvZiBjb3JlXHJcbiAgICAgICAgICAgICAgICAvLyBsZWFkcyB0byB0b28gbXVjaCB1bm5lY2Vzc2FyeSBjb21wbGV4aXR5LlxyXG4gICAgICAgICAgICAgICAgKHRhZyA9PT0gJ3N2ZycgfHwgdGFnID09PSAnZm9yZWlnbk9iamVjdCcpKTtcclxuICAgICAgICAvLyBwcm9wc1xyXG4gICAgICAgIGlmIChwcm9wcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb3BzQnVpbGRSZXN1bHQgPSBidWlsZFByb3BzKG5vZGUsIGNvbnRleHQsIHVuZGVmaW5lZCwgaXNDb21wb25lbnQsIGlzRHluYW1pY0NvbXBvbmVudCk7XHJcbiAgICAgICAgICAgIHZub2RlUHJvcHMgPSBwcm9wc0J1aWxkUmVzdWx0LnByb3BzO1xyXG4gICAgICAgICAgICBwYXRjaEZsYWcgPSBwcm9wc0J1aWxkUmVzdWx0LnBhdGNoRmxhZztcclxuICAgICAgICAgICAgZHluYW1pY1Byb3BOYW1lcyA9IHByb3BzQnVpbGRSZXN1bHQuZHluYW1pY1Byb3BOYW1lcztcclxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aXZlcyA9IHByb3BzQnVpbGRSZXN1bHQuZGlyZWN0aXZlcztcclxuICAgICAgICAgICAgdm5vZGVEaXJlY3RpdmVzID1cclxuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMgJiYgZGlyZWN0aXZlcy5sZW5ndGhcclxuICAgICAgICAgICAgICAgICAgICA/IGNyZWF0ZUFycmF5RXhwcmVzc2lvbihkaXJlY3RpdmVzLm1hcChkaXIgPT4gYnVpbGREaXJlY3RpdmVBcmdzKGRpciwgY29udGV4dCkpKVxyXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICBpZiAocHJvcHNCdWlsZFJlc3VsdC5zaG91bGRVc2VCbG9jaykge1xyXG4gICAgICAgICAgICAgICAgc2hvdWxkVXNlQmxvY2sgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNoaWxkcmVuXHJcbiAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBpZiAodm5vZGVUYWcgPT09IEtFRVBfQUxJVkUpIHtcclxuICAgICAgICAgICAgICAgIC8vIEFsdGhvdWdoIGEgYnVpbHQtaW4gY29tcG9uZW50LCB3ZSBjb21waWxlIEtlZXBBbGl2ZSB3aXRoIHJhdyBjaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgLy8gaW5zdGVhZCBvZiBzbG90IGZ1bmN0aW9ucyBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGluc2lkZSBUcmFuc2l0aW9uXHJcbiAgICAgICAgICAgICAgICAvLyBvciBvdGhlciBUcmFuc2l0aW9uLXdyYXBwaW5nIEhPQ3MuXHJcbiAgICAgICAgICAgICAgICAvLyBUbyBlbnN1cmUgY29ycmVjdCB1cGRhdGVzIHdpdGggYmxvY2sgb3B0aW1pemF0aW9ucywgd2UgbmVlZCB0bzpcclxuICAgICAgICAgICAgICAgIC8vIDEuIEZvcmNlIGtlZXAtYWxpdmUgaW50byBhIGJsb2NrLiBUaGlzIGF2b2lkcyBpdHMgY2hpbGRyZW4gYmVpbmdcclxuICAgICAgICAgICAgICAgIC8vICAgIGNvbGxlY3RlZCBieSBhIHBhcmVudCBibG9jay5cclxuICAgICAgICAgICAgICAgIHNob3VsZFVzZUJsb2NrID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIC8vIDIuIEZvcmNlIGtlZXAtYWxpdmUgdG8gYWx3YXlzIGJlIHVwZGF0ZWQsIHNpbmNlIGl0IHVzZXMgcmF3IGNoaWxkcmVuLlxyXG4gICAgICAgICAgICAgICAgcGF0Y2hGbGFnIHw9IDEwMjQgLyogUGF0Y2hGbGFncy5EWU5BTUlDX1NMT1RTICovO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcig0NSAvKiBFcnJvckNvZGVzLlhfS0VFUF9BTElWRV9JTlZBTElEX0NISUxEUkVOICovLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBub2RlLmNoaWxkcmVuWzBdLmxvYy5zdGFydCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBub2RlLmNoaWxkcmVuW25vZGUuY2hpbGRyZW4ubGVuZ3RoIC0gMV0ubG9jLmVuZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiAnJ1xyXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBzaG91bGRCdWlsZEFzU2xvdHMgPSBpc0NvbXBvbmVudCAmJlxyXG4gICAgICAgICAgICAgICAgLy8gVGVsZXBvcnQgaXMgbm90IGEgcmVhbCBjb21wb25lbnQgYW5kIGhhcyBkZWRpY2F0ZWQgcnVudGltZSBoYW5kbGluZ1xyXG4gICAgICAgICAgICAgICAgdm5vZGVUYWcgIT09IFRFTEVQT1JUICYmXHJcbiAgICAgICAgICAgICAgICAvLyBleHBsYWluZWQgYWJvdmUuXHJcbiAgICAgICAgICAgICAgICB2bm9kZVRhZyAhPT0gS0VFUF9BTElWRTtcclxuICAgICAgICAgICAgaWYgKHNob3VsZEJ1aWxkQXNTbG90cykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBzbG90cywgaGFzRHluYW1pY1Nsb3RzIH0gPSBidWlsZFNsb3RzKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgdm5vZGVDaGlsZHJlbiA9IHNsb3RzO1xyXG4gICAgICAgICAgICAgICAgaWYgKGhhc0R5bmFtaWNTbG90cykge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhdGNoRmxhZyB8PSAxMDI0IC8qIFBhdGNoRmxhZ3MuRFlOQU1JQ19TTE9UUyAqLztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJiB2bm9kZVRhZyAhPT0gVEVMRVBPUlQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlblswXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBjaGlsZC50eXBlO1xyXG4gICAgICAgICAgICAgICAgLy8gY2hlY2sgZm9yIGR5bmFtaWMgdGV4dCBjaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgY29uc3QgaGFzRHluYW1pY1RleHRDaGlsZCA9IHR5cGUgPT09IDUgLyogTm9kZVR5cGVzLklOVEVSUE9MQVRJT04gKi8gfHxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlID09PSA4IC8qIE5vZGVUeXBlcy5DT01QT1VORF9FWFBSRVNTSU9OICovO1xyXG4gICAgICAgICAgICAgICAgaWYgKGhhc0R5bmFtaWNUZXh0Q2hpbGQgJiZcclxuICAgICAgICAgICAgICAgICAgICBnZXRDb25zdGFudFR5cGUoY2hpbGQsIGNvbnRleHQpID09PSAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2hGbGFnIHw9IDEgLyogUGF0Y2hGbGFncy5URVhUICovO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gcGFzcyBkaXJlY3RseSBpZiB0aGUgb25seSBjaGlsZCBpcyBhIHRleHQgbm9kZVxyXG4gICAgICAgICAgICAgICAgLy8gKHBsYWluIC8gaW50ZXJwb2xhdGlvbiAvIGV4cHJlc3Npb24pXHJcbiAgICAgICAgICAgICAgICBpZiAoaGFzRHluYW1pY1RleHRDaGlsZCB8fCB0eXBlID09PSAyIC8qIE5vZGVUeXBlcy5URVhUICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdm5vZGVDaGlsZHJlbiA9IGNoaWxkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdm5vZGVDaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZUNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBwYXRjaEZsYWcgJiBkeW5hbWljUHJvcE5hbWVzXHJcbiAgICAgICAgaWYgKHBhdGNoRmxhZyAhPT0gMCkge1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocGF0Y2hGbGFnIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpYWwgZmxhZ3MgKG5lZ2F0aXZlIGFuZCBtdXR1YWxseSBleGNsdXNpdmUpXHJcbiAgICAgICAgICAgICAgICAgICAgdm5vZGVQYXRjaEZsYWcgPSBwYXRjaEZsYWcgKyBgIC8qICR7UGF0Y2hGbGFnTmFtZXNbcGF0Y2hGbGFnXX0gKi9gO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYml0d2lzZSBmbGFnc1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsYWdOYW1lcyA9IE9iamVjdC5rZXlzKFBhdGNoRmxhZ05hbWVzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKE51bWJlcilcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihuID0+IG4gPiAwICYmIHBhdGNoRmxhZyAmIG4pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAobiA9PiBQYXRjaEZsYWdOYW1lc1tuXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oYCwgYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdm5vZGVQYXRjaEZsYWcgPSBwYXRjaEZsYWcgKyBgIC8qICR7ZmxhZ05hbWVzfSAqL2A7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZVBhdGNoRmxhZyA9IFN0cmluZyhwYXRjaEZsYWcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChkeW5hbWljUHJvcE5hbWVzICYmIGR5bmFtaWNQcm9wTmFtZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZUR5bmFtaWNQcm9wcyA9IHN0cmluZ2lmeUR5bmFtaWNQcm9wTmFtZXMoZHluYW1pY1Byb3BOYW1lcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgbm9kZS5jb2RlZ2VuTm9kZSA9IGNyZWF0ZVZOb2RlQ2FsbChjb250ZXh0LCB2bm9kZVRhZywgdm5vZGVQcm9wcywgdm5vZGVDaGlsZHJlbiwgdm5vZGVQYXRjaEZsYWcsIHZub2RlRHluYW1pY1Byb3BzLCB2bm9kZURpcmVjdGl2ZXMsICEhc2hvdWxkVXNlQmxvY2ssIGZhbHNlIC8qIGRpc2FibGVUcmFja2luZyAqLywgaXNDb21wb25lbnQsIG5vZGUubG9jKTtcclxuICAgIH07XHJcbn07XHJcbmZ1bmN0aW9uIHJlc29sdmVDb21wb25lbnRUeXBlKG5vZGUsIGNvbnRleHQsIHNzciA9IGZhbHNlKSB7XHJcbiAgICBsZXQgeyB0YWcgfSA9IG5vZGU7XHJcbiAgICAvLyAxLiBkeW5hbWljIGNvbXBvbmVudFxyXG4gICAgY29uc3QgaXNFeHBsaWNpdER5bmFtaWMgPSBpc0NvbXBvbmVudFRhZyh0YWcpO1xyXG4gICAgY29uc3QgaXNQcm9wID0gZmluZFByb3Aobm9kZSwgJ2lzJyk7XHJcbiAgICBpZiAoaXNQcm9wKSB7XHJcbiAgICAgICAgaWYgKGlzRXhwbGljaXREeW5hbWljIHx8XHJcbiAgICAgICAgICAgIChpc0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9JU19PTl9FTEVNRU5UXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX0lTX09OX0VMRU1FTlQgKi8sIGNvbnRleHQpKSkge1xyXG4gICAgICAgICAgICBjb25zdCBleHAgPSBpc1Byb3AudHlwZSA9PT0gNiAvKiBOb2RlVHlwZXMuQVRUUklCVVRFICovXHJcbiAgICAgICAgICAgICAgICA/IGlzUHJvcC52YWx1ZSAmJiBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGlzUHJvcC52YWx1ZS5jb250ZW50LCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgOiBpc1Byb3AuZXhwO1xyXG4gICAgICAgICAgICBpZiAoZXhwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoUkVTT0xWRV9EWU5BTUlDX0NPTVBPTkVOVCksIFtcclxuICAgICAgICAgICAgICAgICAgICBleHBcclxuICAgICAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlzUHJvcC50eXBlID09PSA2IC8qIE5vZGVUeXBlcy5BVFRSSUJVVEUgKi8gJiZcclxuICAgICAgICAgICAgaXNQcm9wLnZhbHVlLmNvbnRlbnQuc3RhcnRzV2l0aCgndnVlOicpKSB7XHJcbiAgICAgICAgICAgIC8vIDxidXR0b24gaXM9XCJ2dWU6eHh4XCI+XHJcbiAgICAgICAgICAgIC8vIGlmIG5vdCA8Y29tcG9uZW50Piwgb25seSBpcyB2YWx1ZSB0aGF0IHN0YXJ0cyB3aXRoIFwidnVlOlwiIHdpbGwgYmVcclxuICAgICAgICAgICAgLy8gdHJlYXRlZCBhcyBjb21wb25lbnQgYnkgdGhlIHBhcnNlIHBoYXNlIGFuZCByZWFjaCBoZXJlLCB1bmxlc3MgaXQnc1xyXG4gICAgICAgICAgICAvLyBjb21wYXQgbW9kZSB3aGVyZSBhbGwgaXMgdmFsdWVzIGFyZSBjb25zaWRlcmVkIGNvbXBvbmVudHNcclxuICAgICAgICAgICAgdGFnID0gaXNQcm9wLnZhbHVlLmNvbnRlbnQuc2xpY2UoNCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gMS41IHYtaXMgKFRPRE86IERlcHJlY2F0ZSlcclxuICAgIGNvbnN0IGlzRGlyID0gIWlzRXhwbGljaXREeW5hbWljICYmIGZpbmREaXIobm9kZSwgJ2lzJyk7XHJcbiAgICBpZiAoaXNEaXIgJiYgaXNEaXIuZXhwKSB7XHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKFJFU09MVkVfRFlOQU1JQ19DT01QT05FTlQpLCBbXHJcbiAgICAgICAgICAgIGlzRGlyLmV4cFxyXG4gICAgICAgIF0pO1xyXG4gICAgfVxyXG4gICAgLy8gMi4gYnVpbHQtaW4gY29tcG9uZW50cyAoVGVsZXBvcnQsIFRyYW5zaXRpb24sIEtlZXBBbGl2ZSwgU3VzcGVuc2UuLi4pXHJcbiAgICBjb25zdCBidWlsdEluID0gaXNDb3JlQ29tcG9uZW50KHRhZykgfHwgY29udGV4dC5pc0J1aWx0SW5Db21wb25lbnQodGFnKTtcclxuICAgIGlmIChidWlsdEluKSB7XHJcbiAgICAgICAgLy8gYnVpbHQtaW5zIGFyZSBzaW1wbHkgZmFsbHRocm91Z2hzIC8gaGF2ZSBzcGVjaWFsIGhhbmRsaW5nIGR1cmluZyBzc3JcclxuICAgICAgICAvLyBzbyB3ZSBkb24ndCBuZWVkIHRvIGltcG9ydCB0aGVpciBydW50aW1lIGVxdWl2YWxlbnRzXHJcbiAgICAgICAgaWYgKCFzc3IpXHJcbiAgICAgICAgICAgIGNvbnRleHQuaGVscGVyKGJ1aWx0SW4pO1xyXG4gICAgICAgIHJldHVybiBidWlsdEluO1xyXG4gICAgfVxyXG4gICAgLy8gNS4gdXNlciBjb21wb25lbnQgKHJlc29sdmUpXHJcbiAgICBjb250ZXh0LmhlbHBlcihSRVNPTFZFX0NPTVBPTkVOVCk7XHJcbiAgICBjb250ZXh0LmNvbXBvbmVudHMuYWRkKHRhZyk7XHJcbiAgICByZXR1cm4gdG9WYWxpZEFzc2V0SWQodGFnLCBgY29tcG9uZW50YCk7XHJcbn1cclxuZnVuY3Rpb24gYnVpbGRQcm9wcyhub2RlLCBjb250ZXh0LCBwcm9wcyA9IG5vZGUucHJvcHMsIGlzQ29tcG9uZW50LCBpc0R5bmFtaWNDb21wb25lbnQsIHNzciA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCB7IHRhZywgbG9jOiBlbGVtZW50TG9jLCBjaGlsZHJlbiB9ID0gbm9kZTtcclxuICAgIGxldCBwcm9wZXJ0aWVzID0gW107XHJcbiAgICBjb25zdCBtZXJnZUFyZ3MgPSBbXTtcclxuICAgIGNvbnN0IHJ1bnRpbWVEaXJlY3RpdmVzID0gW107XHJcbiAgICBjb25zdCBoYXNDaGlsZHJlbiA9IGNoaWxkcmVuLmxlbmd0aCA+IDA7XHJcbiAgICBsZXQgc2hvdWxkVXNlQmxvY2sgPSBmYWxzZTtcclxuICAgIC8vIHBhdGNoRmxhZyBhbmFseXNpc1xyXG4gICAgbGV0IHBhdGNoRmxhZyA9IDA7XHJcbiAgICBsZXQgaGFzUmVmID0gZmFsc2U7XHJcbiAgICBsZXQgaGFzQ2xhc3NCaW5kaW5nID0gZmFsc2U7XHJcbiAgICBsZXQgaGFzU3R5bGVCaW5kaW5nID0gZmFsc2U7XHJcbiAgICBsZXQgaGFzSHlkcmF0aW9uRXZlbnRCaW5kaW5nID0gZmFsc2U7XHJcbiAgICBsZXQgaGFzRHluYW1pY0tleXMgPSBmYWxzZTtcclxuICAgIGxldCBoYXNWbm9kZUhvb2sgPSBmYWxzZTtcclxuICAgIGNvbnN0IGR5bmFtaWNQcm9wTmFtZXMgPSBbXTtcclxuICAgIGNvbnN0IGFuYWx5emVQYXRjaEZsYWcgPSAoeyBrZXksIHZhbHVlIH0pID0+IHtcclxuICAgICAgICBpZiAoaXNTdGF0aWNFeHAoa2V5KSkge1xyXG4gICAgICAgICAgICBjb25zdCBuYW1lID0ga2V5LmNvbnRlbnQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzRXZlbnRIYW5kbGVyID0gaXNPbihuYW1lKTtcclxuICAgICAgICAgICAgaWYgKGlzRXZlbnRIYW5kbGVyICYmXHJcbiAgICAgICAgICAgICAgICAoIWlzQ29tcG9uZW50IHx8IGlzRHluYW1pY0NvbXBvbmVudCkgJiZcclxuICAgICAgICAgICAgICAgIC8vIG9taXQgdGhlIGZsYWcgZm9yIGNsaWNrIGhhbmRsZXJzIGJlY2F1c2UgaHlkcmF0aW9uIGdpdmVzIGNsaWNrXHJcbiAgICAgICAgICAgICAgICAvLyBkZWRpY2F0ZWQgZmFzdCBwYXRoLlxyXG4gICAgICAgICAgICAgICAgbmFtZS50b0xvd2VyQ2FzZSgpICE9PSAnb25jbGljaycgJiZcclxuICAgICAgICAgICAgICAgIC8vIG9taXQgdi1tb2RlbCBoYW5kbGVyc1xyXG4gICAgICAgICAgICAgICAgbmFtZSAhPT0gJ29uVXBkYXRlOm1vZGVsVmFsdWUnICYmXHJcbiAgICAgICAgICAgICAgICAvLyBvbWl0IG9uVm5vZGVYWFggaG9va3NcclxuICAgICAgICAgICAgICAgICFpc1Jlc2VydmVkUHJvcChuYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgaGFzSHlkcmF0aW9uRXZlbnRCaW5kaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaXNFdmVudEhhbmRsZXIgJiYgaXNSZXNlcnZlZFByb3AobmFtZSkpIHtcclxuICAgICAgICAgICAgICAgIGhhc1Zub2RlSG9vayA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhbHVlLnR5cGUgPT09IDIwIC8qIE5vZGVUeXBlcy5KU19DQUNIRV9FWFBSRVNTSU9OICovIHx8XHJcbiAgICAgICAgICAgICAgICAoKHZhbHVlLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUudHlwZSA9PT0gOCAvKiBOb2RlVHlwZXMuQ09NUE9VTkRfRVhQUkVTU0lPTiAqLykgJiZcclxuICAgICAgICAgICAgICAgICAgICBnZXRDb25zdGFudFR5cGUodmFsdWUsIGNvbnRleHQpID4gMCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIHNraXAgaWYgdGhlIHByb3AgaXMgYSBjYWNoZWQgaGFuZGxlciBvciBoYXMgY29uc3RhbnQgdmFsdWVcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJ3JlZicpIHtcclxuICAgICAgICAgICAgICAgIGhhc1JlZiA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xyXG4gICAgICAgICAgICAgICAgaGFzQ2xhc3NCaW5kaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChuYW1lID09PSAnc3R5bGUnKSB7XHJcbiAgICAgICAgICAgICAgICBoYXNTdHlsZUJpbmRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUgIT09ICdrZXknICYmICFkeW5hbWljUHJvcE5hbWVzLmluY2x1ZGVzKG5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICBkeW5hbWljUHJvcE5hbWVzLnB1c2gobmFtZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gdHJlYXQgdGhlIGR5bmFtaWMgY2xhc3MgYW5kIHN0eWxlIGJpbmRpbmcgb2YgdGhlIGNvbXBvbmVudCBhcyBkeW5hbWljIHByb3BzXHJcbiAgICAgICAgICAgIGlmIChpc0NvbXBvbmVudCAmJlxyXG4gICAgICAgICAgICAgICAgKG5hbWUgPT09ICdjbGFzcycgfHwgbmFtZSA9PT0gJ3N0eWxlJykgJiZcclxuICAgICAgICAgICAgICAgICFkeW5hbWljUHJvcE5hbWVzLmluY2x1ZGVzKG5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICBkeW5hbWljUHJvcE5hbWVzLnB1c2gobmFtZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGhhc0R5bmFtaWNLZXlzID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIC8vIHN0YXRpYyBhdHRyaWJ1dGVcclxuICAgICAgICBjb25zdCBwcm9wID0gcHJvcHNbaV07XHJcbiAgICAgICAgaWYgKHByb3AudHlwZSA9PT0gNiAvKiBOb2RlVHlwZXMuQVRUUklCVVRFICovKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgbG9jLCBuYW1lLCB2YWx1ZSB9ID0gcHJvcDtcclxuICAgICAgICAgICAgbGV0IGlzU3RhdGljID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdyZWYnKSB7XHJcbiAgICAgICAgICAgICAgICBoYXNSZWYgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuc2NvcGVzLnZGb3IgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllcy5wdXNoKGNyZWF0ZU9iamVjdFByb3BlcnR5KGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oJ3JlZl9mb3InLCB0cnVlKSwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbigndHJ1ZScpKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gc2tpcCBpcyBvbiA8Y29tcG9uZW50Piwgb3IgaXM9XCJ2dWU6eHh4XCJcclxuICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdpcycgJiZcclxuICAgICAgICAgICAgICAgIChpc0NvbXBvbmVudFRhZyh0YWcpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlICYmIHZhbHVlLmNvbnRlbnQuc3RhcnRzV2l0aCgndnVlOicpKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIChpc0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9JU19PTl9FTEVNRU5UXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX0lTX09OX0VMRU1FTlQgKi8sIGNvbnRleHQpKSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHByb3BlcnRpZXMucHVzaChjcmVhdGVPYmplY3RQcm9wZXJ0eShjcmVhdGVTaW1wbGVFeHByZXNzaW9uKG5hbWUsIHRydWUsIGdldElubmVyUmFuZ2UobG9jLCAwLCBuYW1lLmxlbmd0aCkpLCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKHZhbHVlID8gdmFsdWUuY29udGVudCA6ICcnLCBpc1N0YXRpYywgdmFsdWUgPyB2YWx1ZS5sb2MgOiBsb2MpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBkaXJlY3RpdmVzXHJcbiAgICAgICAgICAgIGNvbnN0IHsgbmFtZSwgYXJnLCBleHAsIGxvYyB9ID0gcHJvcDtcclxuICAgICAgICAgICAgY29uc3QgaXNWQmluZCA9IG5hbWUgPT09ICdiaW5kJztcclxuICAgICAgICAgICAgY29uc3QgaXNWT24gPSBuYW1lID09PSAnb24nO1xyXG4gICAgICAgICAgICAvLyBza2lwIHYtc2xvdCAtIGl0IGlzIGhhbmRsZWQgYnkgaXRzIGRlZGljYXRlZCB0cmFuc2Zvcm0uXHJcbiAgICAgICAgICAgIGlmIChuYW1lID09PSAnc2xvdCcpIHtcclxuICAgICAgICAgICAgICAgIGlmICghaXNDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcig0MCAvKiBFcnJvckNvZGVzLlhfVl9TTE9UX01JU1BMQUNFRCAqLywgbG9jKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBza2lwIHYtb25jZS92LW1lbW8gLSB0aGV5IGFyZSBoYW5kbGVkIGJ5IGRlZGljYXRlZCB0cmFuc2Zvcm1zLlxyXG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJ29uY2UnIHx8IG5hbWUgPT09ICdtZW1vJykge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gc2tpcCB2LWlzIGFuZCA6aXMgb24gPGNvbXBvbmVudD5cclxuICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdpcycgfHxcclxuICAgICAgICAgICAgICAgIChpc1ZCaW5kICYmXHJcbiAgICAgICAgICAgICAgICAgICAgaXNTdGF0aWNBcmdPZihhcmcsICdpcycpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgKGlzQ29tcG9uZW50VGFnKHRhZykgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGlzQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX0lTX09OX0VMRU1FTlRcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfSVNfT05fRUxFTUVOVCAqLywgY29udGV4dCkpKSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHNraXAgdi1vbiBpbiBTU1IgY29tcGlsYXRpb25cclxuICAgICAgICAgICAgaWYgKGlzVk9uICYmIHNzcikge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAvLyAjOTM4OiBlbGVtZW50cyB3aXRoIGR5bmFtaWMga2V5cyBzaG91bGQgYmUgZm9yY2VkIGludG8gYmxvY2tzXHJcbiAgICAgICAgICAgIChpc1ZCaW5kICYmIGlzU3RhdGljQXJnT2YoYXJnLCAna2V5JykpIHx8XHJcbiAgICAgICAgICAgICAgICAvLyBpbmxpbmUgYmVmb3JlLXVwZGF0ZSBob29rcyBuZWVkIHRvIGZvcmNlIGJsb2NrIHNvIHRoYXQgaXQgaXMgaW52b2tlZFxyXG4gICAgICAgICAgICAgICAgLy8gYmVmb3JlIGNoaWxkcmVuXHJcbiAgICAgICAgICAgICAgICAoaXNWT24gJiYgaGFzQ2hpbGRyZW4gJiYgaXNTdGF0aWNBcmdPZihhcmcsICd2dWU6YmVmb3JlLXVwZGF0ZScpKSkge1xyXG4gICAgICAgICAgICAgICAgc2hvdWxkVXNlQmxvY2sgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpc1ZCaW5kICYmIGlzU3RhdGljQXJnT2YoYXJnLCAncmVmJykgJiYgY29udGV4dC5zY29wZXMudkZvciA+IDApIHtcclxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXMucHVzaChjcmVhdGVPYmplY3RQcm9wZXJ0eShjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCdyZWZfZm9yJywgdHJ1ZSksIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oJ3RydWUnKSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZSBmb3Igdi1iaW5kIGFuZCB2LW9uIHdpdGggbm8gYXJndW1lbnRcclxuICAgICAgICAgICAgaWYgKCFhcmcgJiYgKGlzVkJpbmQgfHwgaXNWT24pKSB7XHJcbiAgICAgICAgICAgICAgICBoYXNEeW5hbWljS2V5cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXhwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlQXJncy5wdXNoKGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oZGVkdXBlUHJvcGVydGllcyhwcm9wZXJ0aWVzKSwgZWxlbWVudExvYykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1ZCaW5kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIueCB2LWJpbmQgb2JqZWN0IG9yZGVyIGNvbXBhdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc092ZXJyaWRhYmxlS2V5cyA9IG1lcmdlQXJncy5zb21lKGFyZyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmcudHlwZSA9PT0gMTUgLyogTm9kZVR5cGVzLkpTX09CSkVDVF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJnLnByb3BlcnRpZXMuc29tZSgoeyBrZXkgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkudHlwZSAhPT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8gfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWtleS5pc1N0YXRpYykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChrZXkuY29udGVudCAhPT0gJ2NsYXNzJyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkuY29udGVudCAhPT0gJ3N0eWxlJyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaXNPbihrZXkuY29udGVudCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkeW5hbWljIGV4cHJlc3Npb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc092ZXJyaWRhYmxlS2V5cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9WX0JJTkRfT0JKRUNUX09SREVSXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX1ZfQklORF9PQkpFQ1RfT1JERVIgKi8sIGNvbnRleHQsIGxvYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX1ZfQklORF9PQkpFQ1RfT1JERVJcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfVl9CSU5EX09CSkVDVF9PUkRFUiAqLywgY29udGV4dCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZUFyZ3MudW5zaGlmdChleHApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlQXJncy5wdXNoKGV4cCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB2LW9uPVwib2JqXCIgLT4gdG9IYW5kbGVycyhvYmopXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlQXJncy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IDE0IC8qIE5vZGVUeXBlcy5KU19DQUxMX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWU6IGNvbnRleHQuaGVscGVyKFRPX0hBTkRMRVJTKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50czogaXNDb21wb25lbnQgPyBbZXhwXSA6IFtleHAsIGB0cnVlYF1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoaXNWQmluZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IDM0IC8qIEVycm9yQ29kZXMuWF9WX0JJTkRfTk9fRVhQUkVTU0lPTiAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IDM1IC8qIEVycm9yQ29kZXMuWF9WX09OX05PX0VYUFJFU1NJT04gKi8sIGxvYykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aXZlVHJhbnNmb3JtID0gY29udGV4dC5kaXJlY3RpdmVUcmFuc2Zvcm1zW25hbWVdO1xyXG4gICAgICAgICAgICBpZiAoZGlyZWN0aXZlVHJhbnNmb3JtKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBoYXMgYnVpbHQtaW4gZGlyZWN0aXZlIHRyYW5zZm9ybS5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgcHJvcHMsIG5lZWRSdW50aW1lIH0gPSBkaXJlY3RpdmVUcmFuc2Zvcm0ocHJvcCwgbm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICAhc3NyICYmIHByb3BzLmZvckVhY2goYW5hbHl6ZVBhdGNoRmxhZyk7XHJcbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzLnB1c2goLi4ucHJvcHMpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5lZWRSdW50aW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcnVudGltZURpcmVjdGl2ZXMucHVzaChwcm9wKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNTeW1ib2wobmVlZFJ1bnRpbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZUltcG9ydE1hcC5zZXQocHJvcCwgbmVlZFJ1bnRpbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICghaXNCdWlsdEluRGlyZWN0aXZlKG5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBubyBidWlsdC1pbiB0cmFuc2Zvcm0sIHRoaXMgaXMgYSB1c2VyIGN1c3RvbSBkaXJlY3RpdmUuXHJcbiAgICAgICAgICAgICAgICBydW50aW1lRGlyZWN0aXZlcy5wdXNoKHByb3ApO1xyXG4gICAgICAgICAgICAgICAgLy8gY3VzdG9tIGRpcnMgbWF5IHVzZSBiZWZvcmVVcGRhdGUgc28gdGhleSBuZWVkIHRvIGZvcmNlIGJsb2Nrc1xyXG4gICAgICAgICAgICAgICAgLy8gdG8gZW5zdXJlIGJlZm9yZS11cGRhdGUgZ2V0cyBjYWxsZWQgYmVmb3JlIGNoaWxkcmVuIHVwZGF0ZVxyXG4gICAgICAgICAgICAgICAgaWYgKGhhc0NoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2hvdWxkVXNlQmxvY2sgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IHByb3BzRXhwcmVzc2lvbiA9IHVuZGVmaW5lZDtcclxuICAgIC8vIGhhcyB2LWJpbmQ9XCJvYmplY3RcIiBvciB2LW9uPVwib2JqZWN0XCIsIHdyYXAgd2l0aCBtZXJnZVByb3BzXHJcbiAgICBpZiAobWVyZ2VBcmdzLmxlbmd0aCkge1xyXG4gICAgICAgIGlmIChwcm9wZXJ0aWVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBtZXJnZUFyZ3MucHVzaChjcmVhdGVPYmplY3RFeHByZXNzaW9uKGRlZHVwZVByb3BlcnRpZXMocHJvcGVydGllcyksIGVsZW1lbnRMb2MpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG1lcmdlQXJncy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHByb3BzRXhwcmVzc2lvbiA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKE1FUkdFX1BST1BTKSwgbWVyZ2VBcmdzLCBlbGVtZW50TG9jKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHNpbmdsZSB2LWJpbmQgd2l0aCBub3RoaW5nIGVsc2UgLSBubyBuZWVkIGZvciBhIG1lcmdlUHJvcHMgY2FsbFxyXG4gICAgICAgICAgICBwcm9wc0V4cHJlc3Npb24gPSBtZXJnZUFyZ3NbMF07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocHJvcGVydGllcy5sZW5ndGgpIHtcclxuICAgICAgICBwcm9wc0V4cHJlc3Npb24gPSBjcmVhdGVPYmplY3RFeHByZXNzaW9uKGRlZHVwZVByb3BlcnRpZXMocHJvcGVydGllcyksIGVsZW1lbnRMb2MpO1xyXG4gICAgfVxyXG4gICAgLy8gcGF0Y2hGbGFnIGFuYWx5c2lzXHJcbiAgICBpZiAoaGFzRHluYW1pY0tleXMpIHtcclxuICAgICAgICBwYXRjaEZsYWcgfD0gMTYgLyogUGF0Y2hGbGFncy5GVUxMX1BST1BTICovO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKGhhc0NsYXNzQmluZGluZyAmJiAhaXNDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgcGF0Y2hGbGFnIHw9IDIgLyogUGF0Y2hGbGFncy5DTEFTUyAqLztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGhhc1N0eWxlQmluZGluZyAmJiAhaXNDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgcGF0Y2hGbGFnIHw9IDQgLyogUGF0Y2hGbGFncy5TVFlMRSAqLztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGR5bmFtaWNQcm9wTmFtZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHBhdGNoRmxhZyB8PSA4IC8qIFBhdGNoRmxhZ3MuUFJPUFMgKi87XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChoYXNIeWRyYXRpb25FdmVudEJpbmRpbmcpIHtcclxuICAgICAgICAgICAgcGF0Y2hGbGFnIHw9IDMyIC8qIFBhdGNoRmxhZ3MuSFlEUkFURV9FVkVOVFMgKi87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCFzaG91bGRVc2VCbG9jayAmJlxyXG4gICAgICAgIChwYXRjaEZsYWcgPT09IDAgfHwgcGF0Y2hGbGFnID09PSAzMiAvKiBQYXRjaEZsYWdzLkhZRFJBVEVfRVZFTlRTICovKSAmJlxyXG4gICAgICAgIChoYXNSZWYgfHwgaGFzVm5vZGVIb29rIHx8IHJ1bnRpbWVEaXJlY3RpdmVzLmxlbmd0aCA+IDApKSB7XHJcbiAgICAgICAgcGF0Y2hGbGFnIHw9IDUxMiAvKiBQYXRjaEZsYWdzLk5FRURfUEFUQ0ggKi87XHJcbiAgICB9XHJcbiAgICAvLyBwcmUtbm9ybWFsaXplIHByb3BzLCBTU1IgaXMgc2tpcHBlZCBmb3Igbm93XHJcbiAgICBpZiAoIWNvbnRleHQuaW5TU1IgJiYgcHJvcHNFeHByZXNzaW9uKSB7XHJcbiAgICAgICAgc3dpdGNoIChwcm9wc0V4cHJlc3Npb24udHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIDE1IC8qIE5vZGVUeXBlcy5KU19PQkpFQ1RfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgICAgIC8vIG1lYW5zIHRoYXQgdGhlcmUgaXMgbm8gdi1iaW5kLFxyXG4gICAgICAgICAgICAgICAgLy8gYnV0IHN0aWxsIG5lZWQgdG8gZGVhbCB3aXRoIGR5bmFtaWMga2V5IGJpbmRpbmdcclxuICAgICAgICAgICAgICAgIGxldCBjbGFzc0tleUluZGV4ID0gLTE7XHJcbiAgICAgICAgICAgICAgICBsZXQgc3R5bGVLZXlJbmRleCA9IC0xO1xyXG4gICAgICAgICAgICAgICAgbGV0IGhhc0R5bmFtaWNLZXkgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcHNFeHByZXNzaW9uLnByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBwcm9wc0V4cHJlc3Npb24ucHJvcGVydGllc1tpXS5rZXk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzU3RhdGljRXhwKGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleS5jb250ZW50ID09PSAnY2xhc3MnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc0tleUluZGV4ID0gaTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChrZXkuY29udGVudCA9PT0gJ3N0eWxlJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVLZXlJbmRleCA9IGk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWtleS5pc0hhbmRsZXJLZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzRHluYW1pY0tleSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xhc3NQcm9wID0gcHJvcHNFeHByZXNzaW9uLnByb3BlcnRpZXNbY2xhc3NLZXlJbmRleF07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdHlsZVByb3AgPSBwcm9wc0V4cHJlc3Npb24ucHJvcGVydGllc1tzdHlsZUtleUluZGV4XTtcclxuICAgICAgICAgICAgICAgIC8vIG5vIGR5bmFtaWMga2V5XHJcbiAgICAgICAgICAgICAgICBpZiAoIWhhc0R5bmFtaWNLZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2xhc3NQcm9wICYmICFpc1N0YXRpY0V4cChjbGFzc1Byb3AudmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzUHJvcC52YWx1ZSA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKE5PUk1BTElaRV9DTEFTUyksIFtjbGFzc1Byb3AudmFsdWVdKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0eWxlUHJvcCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgc3RhdGljIHN0eWxlIGlzIGNvbXBpbGVkIGludG8gYW4gb2JqZWN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzbyB1c2UgYGhhc1N0eWxlQmluZGluZ2AgdG8gZW5zdXJlIHRoYXQgaXQgaXMgYSBkeW5hbWljIHN0eWxlIGJpbmRpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGhhc1N0eWxlQmluZGluZyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0eWxlUHJvcC52YWx1ZS50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlUHJvcC52YWx1ZS5jb250ZW50LnRyaW0oKVswXSA9PT0gYFtgKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdi1iaW5kOnN0eWxlIGFuZCBzdHlsZSBib3RoIGV4aXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdi1iaW5kOnN0eWxlIHdpdGggc3RhdGljIGxpdGVyYWwgb2JqZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZVByb3AudmFsdWUudHlwZSA9PT0gMTcgLyogTm9kZVR5cGVzLkpTX0FSUkFZX0VYUFJFU1NJT04gKi8pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlUHJvcC52YWx1ZSA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKE5PUk1BTElaRV9TVFlMRSksIFtzdHlsZVByb3AudmFsdWVdKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBkeW5hbWljIGtleSBiaW5kaW5nLCB3cmFwIHdpdGggYG5vcm1hbGl6ZVByb3BzYFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3BzRXhwcmVzc2lvbiA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKE5PUk1BTElaRV9QUk9QUyksIFtwcm9wc0V4cHJlc3Npb25dKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDE0IC8qIE5vZGVUeXBlcy5KU19DQUxMX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgICAgICAvLyBtZXJnZVByb3BzIGNhbGwsIGRvIG5vdGhpbmdcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgLy8gc2luZ2xlIHYtYmluZFxyXG4gICAgICAgICAgICAgICAgcHJvcHNFeHByZXNzaW9uID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoTk9STUFMSVpFX1BST1BTKSwgW1xyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKEdVQVJEX1JFQUNUSVZFX1BST1BTKSwgW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wc0V4cHJlc3Npb25cclxuICAgICAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHByb3BzOiBwcm9wc0V4cHJlc3Npb24sXHJcbiAgICAgICAgZGlyZWN0aXZlczogcnVudGltZURpcmVjdGl2ZXMsXHJcbiAgICAgICAgcGF0Y2hGbGFnLFxyXG4gICAgICAgIGR5bmFtaWNQcm9wTmFtZXMsXHJcbiAgICAgICAgc2hvdWxkVXNlQmxvY2tcclxuICAgIH07XHJcbn1cclxuLy8gRGVkdXBlIHByb3BzIGluIGFuIG9iamVjdCBsaXRlcmFsLlxyXG4vLyBMaXRlcmFsIGR1cGxpY2F0ZWQgYXR0cmlidXRlcyB3b3VsZCBoYXZlIGJlZW4gd2FybmVkIGR1cmluZyB0aGUgcGFyc2UgcGhhc2UsXHJcbi8vIGhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdG8gZW5jb3VudGVyIGR1cGxpY2F0ZWQgYG9uWFhYYCBoYW5kbGVycyB3aXRoIGRpZmZlcmVudFxyXG4vLyBtb2RpZmllcnMuIFdlIGFsc28gbmVlZCB0byBtZXJnZSBzdGF0aWMgYW5kIGR5bmFtaWMgY2xhc3MgLyBzdHlsZSBhdHRyaWJ1dGVzLlxyXG4vLyAtIG9uWFhYIGhhbmRsZXJzIC8gc3R5bGU6IG1lcmdlIGludG8gYXJyYXlcclxuLy8gLSBjbGFzczogbWVyZ2UgaW50byBzaW5nbGUgZXhwcmVzc2lvbiB3aXRoIGNvbmNhdGVuYXRpb25cclxuZnVuY3Rpb24gZGVkdXBlUHJvcGVydGllcyhwcm9wZXJ0aWVzKSB7XHJcbiAgICBjb25zdCBrbm93blByb3BzID0gbmV3IE1hcCgpO1xyXG4gICAgY29uc3QgZGVkdXBlZCA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgcHJvcCA9IHByb3BlcnRpZXNbaV07XHJcbiAgICAgICAgLy8gZHluYW1pYyBrZXlzIGFyZSBhbHdheXMgYWxsb3dlZFxyXG4gICAgICAgIGlmIChwcm9wLmtleS50eXBlID09PSA4IC8qIE5vZGVUeXBlcy5DT01QT1VORF9FWFBSRVNTSU9OICovIHx8ICFwcm9wLmtleS5pc1N0YXRpYykge1xyXG4gICAgICAgICAgICBkZWR1cGVkLnB1c2gocHJvcCk7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBuYW1lID0gcHJvcC5rZXkuY29udGVudDtcclxuICAgICAgICBjb25zdCBleGlzdGluZyA9IGtub3duUHJvcHMuZ2V0KG5hbWUpO1xyXG4gICAgICAgIGlmIChleGlzdGluZykge1xyXG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJ3N0eWxlJyB8fCBuYW1lID09PSAnY2xhc3MnIHx8IGlzT24obmFtZSkpIHtcclxuICAgICAgICAgICAgICAgIG1lcmdlQXNBcnJheShleGlzdGluZywgcHJvcCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gdW5leHBlY3RlZCBkdXBsaWNhdGUsIHNob3VsZCBoYXZlIGVtaXR0ZWQgZXJyb3IgZHVyaW5nIHBhcnNlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBrbm93blByb3BzLnNldChuYW1lLCBwcm9wKTtcclxuICAgICAgICAgICAgZGVkdXBlZC5wdXNoKHByb3ApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBkZWR1cGVkO1xyXG59XHJcbmZ1bmN0aW9uIG1lcmdlQXNBcnJheShleGlzdGluZywgaW5jb21pbmcpIHtcclxuICAgIGlmIChleGlzdGluZy52YWx1ZS50eXBlID09PSAxNyAvKiBOb2RlVHlwZXMuSlNfQVJSQVlfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgIGV4aXN0aW5nLnZhbHVlLmVsZW1lbnRzLnB1c2goaW5jb21pbmcudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZXhpc3RpbmcudmFsdWUgPSBjcmVhdGVBcnJheUV4cHJlc3Npb24oW2V4aXN0aW5nLnZhbHVlLCBpbmNvbWluZy52YWx1ZV0sIGV4aXN0aW5nLmxvYyk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gYnVpbGREaXJlY3RpdmVBcmdzKGRpciwgY29udGV4dCkge1xyXG4gICAgY29uc3QgZGlyQXJncyA9IFtdO1xyXG4gICAgY29uc3QgcnVudGltZSA9IGRpcmVjdGl2ZUltcG9ydE1hcC5nZXQoZGlyKTtcclxuICAgIGlmIChydW50aW1lKSB7XHJcbiAgICAgICAgLy8gYnVpbHQtaW4gZGlyZWN0aXZlIHdpdGggcnVudGltZVxyXG4gICAgICAgIGRpckFyZ3MucHVzaChjb250ZXh0LmhlbHBlclN0cmluZyhydW50aW1lKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIC8vIGluamVjdCBzdGF0ZW1lbnQgZm9yIHJlc29sdmluZyBkaXJlY3RpdmVcclxuICAgICAgICAgICAgY29udGV4dC5oZWxwZXIoUkVTT0xWRV9ESVJFQ1RJVkUpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmRpcmVjdGl2ZXMuYWRkKGRpci5uYW1lKTtcclxuICAgICAgICAgICAgZGlyQXJncy5wdXNoKHRvVmFsaWRBc3NldElkKGRpci5uYW1lLCBgZGlyZWN0aXZlYCkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHsgbG9jIH0gPSBkaXI7XHJcbiAgICBpZiAoZGlyLmV4cClcclxuICAgICAgICBkaXJBcmdzLnB1c2goZGlyLmV4cCk7XHJcbiAgICBpZiAoZGlyLmFyZykge1xyXG4gICAgICAgIGlmICghZGlyLmV4cCkge1xyXG4gICAgICAgICAgICBkaXJBcmdzLnB1c2goYHZvaWQgMGApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkaXJBcmdzLnB1c2goZGlyLmFyZyk7XHJcbiAgICB9XHJcbiAgICBpZiAoT2JqZWN0LmtleXMoZGlyLm1vZGlmaWVycykubGVuZ3RoKSB7XHJcbiAgICAgICAgaWYgKCFkaXIuYXJnKSB7XHJcbiAgICAgICAgICAgIGlmICghZGlyLmV4cCkge1xyXG4gICAgICAgICAgICAgICAgZGlyQXJncy5wdXNoKGB2b2lkIDBgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBkaXJBcmdzLnB1c2goYHZvaWQgMGApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB0cnVlRXhwcmVzc2lvbiA9IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYHRydWVgLCBmYWxzZSwgbG9jKTtcclxuICAgICAgICBkaXJBcmdzLnB1c2goY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihkaXIubW9kaWZpZXJzLm1hcChtb2RpZmllciA9PiBjcmVhdGVPYmplY3RQcm9wZXJ0eShtb2RpZmllciwgdHJ1ZUV4cHJlc3Npb24pKSwgbG9jKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY3JlYXRlQXJyYXlFeHByZXNzaW9uKGRpckFyZ3MsIGRpci5sb2MpO1xyXG59XHJcbmZ1bmN0aW9uIHN0cmluZ2lmeUR5bmFtaWNQcm9wTmFtZXMocHJvcHMpIHtcclxuICAgIGxldCBwcm9wc05hbWVzU3RyaW5nID0gYFtgO1xyXG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBwcm9wcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICBwcm9wc05hbWVzU3RyaW5nICs9IEpTT04uc3RyaW5naWZ5KHByb3BzW2ldKTtcclxuICAgICAgICBpZiAoaSA8IGwgLSAxKVxyXG4gICAgICAgICAgICBwcm9wc05hbWVzU3RyaW5nICs9ICcsICc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcHJvcHNOYW1lc1N0cmluZyArIGBdYDtcclxufVxyXG5mdW5jdGlvbiBpc0NvbXBvbmVudFRhZyh0YWcpIHtcclxuICAgIHJldHVybiB0YWcgPT09ICdjb21wb25lbnQnIHx8IHRhZyA9PT0gJ0NvbXBvbmVudCc7XHJcbn1cblxuKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICA/IE9iamVjdC5mcmVlemUoe30pXHJcbiAgICA6IHt9O1xyXG4ocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBPYmplY3QuZnJlZXplKFtdKSA6IFtdO1xyXG5jb25zdCBjYWNoZVN0cmluZ0Z1bmN0aW9uID0gKGZuKSA9PiB7XHJcbiAgICBjb25zdCBjYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbiAgICByZXR1cm4gKChzdHIpID0+IHtcclxuICAgICAgICBjb25zdCBoaXQgPSBjYWNoZVtzdHJdO1xyXG4gICAgICAgIHJldHVybiBoaXQgfHwgKGNhY2hlW3N0cl0gPSBmbihzdHIpKTtcclxuICAgIH0pO1xyXG59O1xyXG5jb25zdCBjYW1lbGl6ZVJFID0gLy0oXFx3KS9nO1xyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmNvbnN0IGNhbWVsaXplID0gY2FjaGVTdHJpbmdGdW5jdGlvbigoc3RyKSA9PiB7XHJcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoY2FtZWxpemVSRSwgKF8sIGMpID0+IChjID8gYy50b1VwcGVyQ2FzZSgpIDogJycpKTtcclxufSk7XG5cbmNvbnN0IHRyYW5zZm9ybVNsb3RPdXRsZXQgPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgaWYgKGlzU2xvdE91dGxldChub2RlKSkge1xyXG4gICAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIGxvYyB9ID0gbm9kZTtcclxuICAgICAgICBjb25zdCB7IHNsb3ROYW1lLCBzbG90UHJvcHMgfSA9IHByb2Nlc3NTbG90T3V0bGV0KG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgIGNvbnN0IHNsb3RBcmdzID0gW1xyXG4gICAgICAgICAgICBjb250ZXh0LnByZWZpeElkZW50aWZpZXJzID8gYF9jdHguJHNsb3RzYCA6IGAkc2xvdHNgLFxyXG4gICAgICAgICAgICBzbG90TmFtZSxcclxuICAgICAgICAgICAgJ3t9JyxcclxuICAgICAgICAgICAgJ3VuZGVmaW5lZCcsXHJcbiAgICAgICAgICAgICd0cnVlJ1xyXG4gICAgICAgIF07XHJcbiAgICAgICAgbGV0IGV4cGVjdGVkTGVuID0gMjtcclxuICAgICAgICBpZiAoc2xvdFByb3BzKSB7XHJcbiAgICAgICAgICAgIHNsb3RBcmdzWzJdID0gc2xvdFByb3BzO1xyXG4gICAgICAgICAgICBleHBlY3RlZExlbiA9IDM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgc2xvdEFyZ3NbM10gPSBjcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24oW10sIGNoaWxkcmVuLCBmYWxzZSwgZmFsc2UsIGxvYyk7XHJcbiAgICAgICAgICAgIGV4cGVjdGVkTGVuID0gNDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbnRleHQuc2NvcGVJZCAmJiAhY29udGV4dC5zbG90dGVkKSB7XHJcbiAgICAgICAgICAgIGV4cGVjdGVkTGVuID0gNTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2xvdEFyZ3Muc3BsaWNlKGV4cGVjdGVkTGVuKTsgLy8gcmVtb3ZlIHVudXNlZCBhcmd1bWVudHNcclxuICAgICAgICBub2RlLmNvZGVnZW5Ob2RlID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoUkVOREVSX1NMT1QpLCBzbG90QXJncywgbG9jKTtcclxuICAgIH1cclxufTtcclxuZnVuY3Rpb24gcHJvY2Vzc1Nsb3RPdXRsZXQobm9kZSwgY29udGV4dCkge1xyXG4gICAgbGV0IHNsb3ROYW1lID0gYFwiZGVmYXVsdFwiYDtcclxuICAgIGxldCBzbG90UHJvcHMgPSB1bmRlZmluZWQ7XHJcbiAgICBjb25zdCBub25OYW1lUHJvcHMgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5wcm9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHAgPSBub2RlLnByb3BzW2ldO1xyXG4gICAgICAgIGlmIChwLnR5cGUgPT09IDYgLyogTm9kZVR5cGVzLkFUVFJJQlVURSAqLykge1xyXG4gICAgICAgICAgICBpZiAocC52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHAubmFtZSA9PT0gJ25hbWUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2xvdE5hbWUgPSBKU09OLnN0cmluZ2lmeShwLnZhbHVlLmNvbnRlbnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcC5uYW1lID0gY2FtZWxpemUocC5uYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICBub25OYW1lUHJvcHMucHVzaChwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHAubmFtZSA9PT0gJ2JpbmQnICYmIGlzU3RhdGljQXJnT2YocC5hcmcsICduYW1lJykpIHtcclxuICAgICAgICAgICAgICAgIGlmIChwLmV4cClcclxuICAgICAgICAgICAgICAgICAgICBzbG90TmFtZSA9IHAuZXhwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKHAubmFtZSA9PT0gJ2JpbmQnICYmIHAuYXJnICYmIGlzU3RhdGljRXhwKHAuYXJnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHAuYXJnLmNvbnRlbnQgPSBjYW1lbGl6ZShwLmFyZy5jb250ZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG5vbk5hbWVQcm9wcy5wdXNoKHApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKG5vbk5hbWVQcm9wcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY29uc3QgeyBwcm9wcywgZGlyZWN0aXZlcyB9ID0gYnVpbGRQcm9wcyhub2RlLCBjb250ZXh0LCBub25OYW1lUHJvcHMsIGZhbHNlLCBmYWxzZSk7XHJcbiAgICAgICAgc2xvdFByb3BzID0gcHJvcHM7XHJcbiAgICAgICAgaWYgKGRpcmVjdGl2ZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDM2IC8qIEVycm9yQ29kZXMuWF9WX1NMT1RfVU5FWFBFQ1RFRF9ESVJFQ1RJVkVfT05fU0xPVF9PVVRMRVQgKi8sIGRpcmVjdGl2ZXNbMF0ubG9jKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBzbG90TmFtZSxcclxuICAgICAgICBzbG90UHJvcHNcclxuICAgIH07XHJcbn1cblxuY29uc3QgZm5FeHBSRSA9IC9eXFxzKihbXFx3JF9dK3woYXN5bmNcXHMqKT9cXChbXildKj9cXCkpXFxzKj0+fF5cXHMqKGFzeW5jXFxzKyk/ZnVuY3Rpb24oPzpcXHMrW1xcdyRdKyk/XFxzKlxcKC87XHJcbmNvbnN0IHRyYW5zZm9ybU9uID0gKGRpciwgbm9kZSwgY29udGV4dCwgYXVnbWVudG9yKSA9PiB7XHJcbiAgICBjb25zdCB7IGxvYywgbW9kaWZpZXJzLCBhcmcgfSA9IGRpcjtcclxuICAgIGlmICghZGlyLmV4cCAmJiAhbW9kaWZpZXJzLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDM1IC8qIEVycm9yQ29kZXMuWF9WX09OX05PX0VYUFJFU1NJT04gKi8sIGxvYykpO1xyXG4gICAgfVxyXG4gICAgbGV0IGV2ZW50TmFtZTtcclxuICAgIGlmIChhcmcudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICBpZiAoYXJnLmlzU3RhdGljKSB7XHJcbiAgICAgICAgICAgIGxldCByYXdOYW1lID0gYXJnLmNvbnRlbnQ7XHJcbiAgICAgICAgICAgIC8vIFRPRE8gZGVwcmVjYXRlIEB2bm9kZVhYWCB1c2FnZVxyXG4gICAgICAgICAgICBpZiAocmF3TmFtZS5zdGFydHNXaXRoKCd2dWU6JykpIHtcclxuICAgICAgICAgICAgICAgIHJhd05hbWUgPSBgdm5vZGUtJHtyYXdOYW1lLnNsaWNlKDQpfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZXZlbnRTdHJpbmcgPSBub2RlLnRhZ1R5cGUgPT09IDEgLyogRWxlbWVudFR5cGVzLkNPTVBPTkVOVCAqLyB8fFxyXG4gICAgICAgICAgICAgICAgcmF3TmFtZS5zdGFydHNXaXRoKCd2bm9kZScpIHx8XHJcbiAgICAgICAgICAgICAgICAhL1tBLVpdLy50ZXN0KHJhd05hbWUpXHJcbiAgICAgICAgICAgICAgICA/IC8vIGZvciBjb21wb25lbnQgYW5kIHZub2RlIGxpZmVjeWNsZSBldmVudCBsaXN0ZW5lcnMsIGF1dG8gY29udmVydFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGl0IHRvIGNhbWVsQ2FzZS4gU2VlIGlzc3VlICMyMjQ5XHJcbiAgICAgICAgICAgICAgICAgICAgdG9IYW5kbGVyS2V5KGNhbWVsaXplJDEocmF3TmFtZSkpXHJcbiAgICAgICAgICAgICAgICAvLyBwcmVzZXJ2ZSBjYXNlIGZvciBwbGFpbiBlbGVtZW50IGxpc3RlbmVycyB0aGF0IGhhdmUgdXBwZXJjYXNlXHJcbiAgICAgICAgICAgICAgICAvLyBsZXR0ZXJzLCBhcyB0aGVzZSBtYXkgYmUgY3VzdG9tIGVsZW1lbnRzJyBjdXN0b20gZXZlbnRzXHJcbiAgICAgICAgICAgICAgICA6IGBvbjoke3Jhd05hbWV9YDtcclxuICAgICAgICAgICAgZXZlbnROYW1lID0gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihldmVudFN0cmluZywgdHJ1ZSwgYXJnLmxvYyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyAjMjM4OFxyXG4gICAgICAgICAgICBldmVudE5hbWUgPSBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW1xyXG4gICAgICAgICAgICAgICAgYCR7Y29udGV4dC5oZWxwZXJTdHJpbmcoVE9fSEFORExFUl9LRVkpfShgLFxyXG4gICAgICAgICAgICAgICAgYXJnLFxyXG4gICAgICAgICAgICAgICAgYClgXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIGFscmVhZHkgYSBjb21wb3VuZCBleHByZXNzaW9uLlxyXG4gICAgICAgIGV2ZW50TmFtZSA9IGFyZztcclxuICAgICAgICBldmVudE5hbWUuY2hpbGRyZW4udW5zaGlmdChgJHtjb250ZXh0LmhlbHBlclN0cmluZyhUT19IQU5ETEVSX0tFWSl9KGApO1xyXG4gICAgICAgIGV2ZW50TmFtZS5jaGlsZHJlbi5wdXNoKGApYCk7XHJcbiAgICB9XHJcbiAgICAvLyBoYW5kbGVyIHByb2Nlc3NpbmdcclxuICAgIGxldCBleHAgPSBkaXIuZXhwO1xyXG4gICAgaWYgKGV4cCAmJiAhZXhwLmNvbnRlbnQudHJpbSgpKSB7XHJcbiAgICAgICAgZXhwID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgbGV0IHNob3VsZENhY2hlID0gY29udGV4dC5jYWNoZUhhbmRsZXJzICYmICFleHAgJiYgIWNvbnRleHQuaW5WT25jZTtcclxuICAgIGlmIChleHApIHtcclxuICAgICAgICBjb25zdCBpc01lbWJlckV4cCA9IGlzTWVtYmVyRXhwcmVzc2lvbihleHAuY29udGVudCk7XHJcbiAgICAgICAgY29uc3QgaXNJbmxpbmVTdGF0ZW1lbnQgPSAhKGlzTWVtYmVyRXhwIHx8IGZuRXhwUkUudGVzdChleHAuY29udGVudCkpO1xyXG4gICAgICAgIGNvbnN0IGhhc011bHRpcGxlU3RhdGVtZW50cyA9IGV4cC5jb250ZW50LmluY2x1ZGVzKGA7YCk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB0cnVlKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRlQnJvd3NlckV4cHJlc3Npb24oZXhwLCBjb250ZXh0LCBmYWxzZSwgaGFzTXVsdGlwbGVTdGF0ZW1lbnRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzSW5saW5lU3RhdGVtZW50IHx8IChzaG91bGRDYWNoZSAmJiBpc01lbWJlckV4cCkpIHtcclxuICAgICAgICAgICAgLy8gd3JhcCBpbmxpbmUgc3RhdGVtZW50IGluIGEgZnVuY3Rpb24gZXhwcmVzc2lvblxyXG4gICAgICAgICAgICBleHAgPSBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW1xyXG4gICAgICAgICAgICAgICAgYCR7aXNJbmxpbmVTdGF0ZW1lbnRcclxuICAgICAgICAgICAgICAgICAgICA/IGAkZXZlbnRgXHJcbiAgICAgICAgICAgICAgICAgICAgOiBgJHtgYH0oLi4uYXJncylgfSA9PiAke2hhc011bHRpcGxlU3RhdGVtZW50cyA/IGB7YCA6IGAoYH1gLFxyXG4gICAgICAgICAgICAgICAgZXhwLFxyXG4gICAgICAgICAgICAgICAgaGFzTXVsdGlwbGVTdGF0ZW1lbnRzID8gYH1gIDogYClgXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCByZXQgPSB7XHJcbiAgICAgICAgcHJvcHM6IFtcclxuICAgICAgICAgICAgY3JlYXRlT2JqZWN0UHJvcGVydHkoZXZlbnROYW1lLCBleHAgfHwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgKCkgPT4ge31gLCBmYWxzZSwgbG9jKSlcclxuICAgICAgICBdXHJcbiAgICB9O1xyXG4gICAgLy8gYXBwbHkgZXh0ZW5kZWQgY29tcGlsZXIgYXVnbWVudG9yXHJcbiAgICBpZiAoYXVnbWVudG9yKSB7XHJcbiAgICAgICAgcmV0ID0gYXVnbWVudG9yKHJldCk7XHJcbiAgICB9XHJcbiAgICBpZiAoc2hvdWxkQ2FjaGUpIHtcclxuICAgICAgICAvLyBjYWNoZSBoYW5kbGVycyBzbyB0aGF0IGl0J3MgYWx3YXlzIHRoZSBzYW1lIGhhbmRsZXIgYmVpbmcgcGFzc2VkIGRvd24uXHJcbiAgICAgICAgLy8gdGhpcyBhdm9pZHMgdW5uZWNlc3NhcnkgcmUtcmVuZGVycyB3aGVuIHVzZXJzIHVzZSBpbmxpbmUgaGFuZGxlcnMgb25cclxuICAgICAgICAvLyBjb21wb25lbnRzLlxyXG4gICAgICAgIHJldC5wcm9wc1swXS52YWx1ZSA9IGNvbnRleHQuY2FjaGUocmV0LnByb3BzWzBdLnZhbHVlKTtcclxuICAgIH1cclxuICAgIC8vIG1hcmsgdGhlIGtleSBhcyBoYW5kbGVyIGZvciBwcm9wcyBub3JtYWxpemF0aW9uIGNoZWNrXHJcbiAgICByZXQucHJvcHMuZm9yRWFjaChwID0+IChwLmtleS5pc0hhbmRsZXJLZXkgPSB0cnVlKSk7XHJcbiAgICByZXR1cm4gcmV0O1xyXG59O1xuXG4vLyB2LWJpbmQgd2l0aG91dCBhcmcgaXMgaGFuZGxlZCBkaXJlY3RseSBpbiAuL3RyYW5zZm9ybUVsZW1lbnRzLnRzIGR1ZSB0byBpdCBhZmZlY3RpbmdcclxuLy8gY29kZWdlbiBmb3IgdGhlIGVudGlyZSBwcm9wcyBvYmplY3QuIFRoaXMgdHJhbnNmb3JtIGhlcmUgaXMgb25seSBmb3Igdi1iaW5kXHJcbi8vICp3aXRoKiBhcmdzLlxyXG5jb25zdCB0cmFuc2Zvcm1CaW5kID0gKGRpciwgX25vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGNvbnN0IHsgZXhwLCBtb2RpZmllcnMsIGxvYyB9ID0gZGlyO1xyXG4gICAgY29uc3QgYXJnID0gZGlyLmFyZztcclxuICAgIGlmIChhcmcudHlwZSAhPT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICBhcmcuY2hpbGRyZW4udW5zaGlmdChgKGApO1xyXG4gICAgICAgIGFyZy5jaGlsZHJlbi5wdXNoKGApIHx8IFwiXCJgKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKCFhcmcuaXNTdGF0aWMpIHtcclxuICAgICAgICBhcmcuY29udGVudCA9IGAke2FyZy5jb250ZW50fSB8fCBcIlwiYDtcclxuICAgIH1cclxuICAgIC8vIC5zeW5jIGlzIHJlcGxhY2VkIGJ5IHYtbW9kZWw6YXJnXHJcbiAgICBpZiAobW9kaWZpZXJzLmluY2x1ZGVzKCdjYW1lbCcpKSB7XHJcbiAgICAgICAgaWYgKGFyZy50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICBpZiAoYXJnLmlzU3RhdGljKSB7XHJcbiAgICAgICAgICAgICAgICBhcmcuY29udGVudCA9IGNhbWVsaXplJDEoYXJnLmNvbnRlbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYXJnLmNvbnRlbnQgPSBgJHtjb250ZXh0LmhlbHBlclN0cmluZyhDQU1FTElaRSl9KCR7YXJnLmNvbnRlbnR9KWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGFyZy5jaGlsZHJlbi51bnNoaWZ0KGAke2NvbnRleHQuaGVscGVyU3RyaW5nKENBTUVMSVpFKX0oYCk7XHJcbiAgICAgICAgICAgIGFyZy5jaGlsZHJlbi5wdXNoKGApYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCFjb250ZXh0LmluU1NSKSB7XHJcbiAgICAgICAgaWYgKG1vZGlmaWVycy5pbmNsdWRlcygncHJvcCcpKSB7XHJcbiAgICAgICAgICAgIGluamVjdFByZWZpeChhcmcsICcuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChtb2RpZmllcnMuaW5jbHVkZXMoJ2F0dHInKSkge1xyXG4gICAgICAgICAgICBpbmplY3RQcmVmaXgoYXJnLCAnXicpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghZXhwIHx8XHJcbiAgICAgICAgKGV4cC50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyAmJiAhZXhwLmNvbnRlbnQudHJpbSgpKSkge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDM0IC8qIEVycm9yQ29kZXMuWF9WX0JJTkRfTk9fRVhQUkVTU0lPTiAqLywgbG9jKSk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcHJvcHM6IFtjcmVhdGVPYmplY3RQcm9wZXJ0eShhcmcsIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oJycsIHRydWUsIGxvYykpXVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHByb3BzOiBbY3JlYXRlT2JqZWN0UHJvcGVydHkoYXJnLCBleHApXVxyXG4gICAgfTtcclxufTtcclxuY29uc3QgaW5qZWN0UHJlZml4ID0gKGFyZywgcHJlZml4KSA9PiB7XHJcbiAgICBpZiAoYXJnLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgaWYgKGFyZy5pc1N0YXRpYykge1xyXG4gICAgICAgICAgICBhcmcuY29udGVudCA9IHByZWZpeCArIGFyZy5jb250ZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgYXJnLmNvbnRlbnQgPSBgXFxgJHtwcmVmaXh9XFwkeyR7YXJnLmNvbnRlbnR9fVxcYGA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgYXJnLmNoaWxkcmVuLnVuc2hpZnQoYCcke3ByZWZpeH0nICsgKGApO1xyXG4gICAgICAgIGFyZy5jaGlsZHJlbi5wdXNoKGApYCk7XHJcbiAgICB9XHJcbn07XG5cbi8vIE1lcmdlIGFkamFjZW50IHRleHQgbm9kZXMgYW5kIGV4cHJlc3Npb25zIGludG8gYSBzaW5nbGUgZXhwcmVzc2lvblxyXG4vLyBlLmcuIDxkaXY+YWJjIHt7IGQgfX0ge3sgZSB9fTwvZGl2PiBzaG91bGQgaGF2ZSBhIHNpbmdsZSBleHByZXNzaW9uIG5vZGUgYXMgY2hpbGQuXHJcbmNvbnN0IHRyYW5zZm9ybVRleHQgPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gMCAvKiBOb2RlVHlwZXMuUk9PVCAqLyB8fFxyXG4gICAgICAgIG5vZGUudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyB8fFxyXG4gICAgICAgIG5vZGUudHlwZSA9PT0gMTEgLyogTm9kZVR5cGVzLkZPUiAqLyB8fFxyXG4gICAgICAgIG5vZGUudHlwZSA9PT0gMTAgLyogTm9kZVR5cGVzLklGX0JSQU5DSCAqLykge1xyXG4gICAgICAgIC8vIHBlcmZvcm0gdGhlIHRyYW5zZm9ybSBvbiBub2RlIGV4aXQgc28gdGhhdCBhbGwgZXhwcmVzc2lvbnMgaGF2ZSBhbHJlYWR5XHJcbiAgICAgICAgLy8gYmVlbiBwcm9jZXNzZWQuXHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICBsZXQgY3VycmVudENvbnRhaW5lciA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgbGV0IGhhc1RleHQgPSBmYWxzZTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgICAgIGlmIChpc1RleHQoY2hpbGQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzVGV4dCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgY2hpbGRyZW4ubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IGNoaWxkcmVuW2pdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNUZXh0KG5leHQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRDb250YWluZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29udGFpbmVyID0gY2hpbGRyZW5baV0gPSBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW2NoaWxkXSwgY2hpbGQubG9jKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1lcmdlIGFkamFjZW50IHRleHQgbm9kZSBpbnRvIGN1cnJlbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb250YWluZXIuY2hpbGRyZW4ucHVzaChgICsgYCwgbmV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5zcGxpY2UoaiwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqLS07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29udGFpbmVyID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFoYXNUZXh0IHx8XHJcbiAgICAgICAgICAgICAgICAvLyBpZiB0aGlzIGlzIGEgcGxhaW4gZWxlbWVudCB3aXRoIGEgc2luZ2xlIHRleHQgY2hpbGQsIGxlYXZlIGl0XHJcbiAgICAgICAgICAgICAgICAvLyBhcy1pcyBzaW5jZSB0aGUgcnVudGltZSBoYXMgZGVkaWNhdGVkIGZhc3QgcGF0aCBmb3IgdGhpcyBieSBkaXJlY3RseVxyXG4gICAgICAgICAgICAgICAgLy8gc2V0dGluZyB0ZXh0Q29udGVudCBvZiB0aGUgZWxlbWVudC5cclxuICAgICAgICAgICAgICAgIC8vIGZvciBjb21wb25lbnQgcm9vdCBpdCdzIGFsd2F5cyBub3JtYWxpemVkIGFueXdheS5cclxuICAgICAgICAgICAgICAgIChjaGlsZHJlbi5sZW5ndGggPT09IDEgJiZcclxuICAgICAgICAgICAgICAgICAgICAobm9kZS50eXBlID09PSAwIC8qIE5vZGVUeXBlcy5ST09UICovIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUudGFnVHlwZSA9PT0gMCAvKiBFbGVtZW50VHlwZXMuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIzM3NTZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGN1c3RvbSBkaXJlY3RpdmVzIGNhbiBwb3RlbnRpYWxseSBhZGQgRE9NIGVsZW1lbnRzIGFyYml0cmFyaWx5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBhdm9pZCBzZXR0aW5nIHRleHRDb250ZW50IG9mIHRoZSBlbGVtZW50IGF0IHJ1bnRpbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGF2b2lkIGFjY2lkZW50YWxseSBvdmVyd3JpdGluZyB0aGUgRE9NIGVsZW1lbnRzIGFkZGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBieSB0aGUgdXNlciB0aHJvdWdoIGN1c3RvbSBkaXJlY3RpdmVzLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIW5vZGUucHJvcHMuZmluZChwID0+IHAudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWNvbnRleHQuZGlyZWN0aXZlVHJhbnNmb3Jtc1twLm5hbWVdKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gY29tcGF0IG1vZGUsIDx0ZW1wbGF0ZT4gdGFncyB3aXRoIG5vIHNwZWNpYWwgZGlyZWN0aXZlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBiZSByZW5kZXJlZCBhcyBhIGZyYWdtZW50IHNvIGl0cyBjaGlsZHJlbiBtdXN0IGJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb252ZXJ0ZWQgaW50byB2bm9kZXMuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhKG5vZGUudGFnID09PSAndGVtcGxhdGUnKSkpKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHByZS1jb252ZXJ0IHRleHQgbm9kZXMgaW50byBjcmVhdGVUZXh0Vk5vZGUodGV4dCkgY2FsbHMgdG8gYXZvaWRcclxuICAgICAgICAgICAgLy8gcnVudGltZSBub3JtYWxpemF0aW9uLlxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzVGV4dChjaGlsZCkgfHwgY2hpbGQudHlwZSA9PT0gOCAvKiBOb2RlVHlwZXMuQ09NUE9VTkRfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbGxBcmdzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY3JlYXRlVGV4dFZOb2RlIGRlZmF1bHRzIHRvIHNpbmdsZSB3aGl0ZXNwYWNlLCBzbyBpZiBpdCBpcyBhXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gc2luZ2xlIHNwYWNlIHRoZSBjb2RlIGNvdWxkIGJlIGFuIGVtcHR5IGNhbGwgdG8gc2F2ZSBieXRlcy5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQudHlwZSAhPT0gMiAvKiBOb2RlVHlwZXMuVEVYVCAqLyB8fCBjaGlsZC5jb250ZW50ICE9PSAnICcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbEFyZ3MucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIG1hcmsgZHluYW1pYyB0ZXh0IHdpdGggZmxhZyBzbyBpdCBnZXRzIHBhdGNoZWQgaW5zaWRlIGEgYmxvY2tcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQuc3NyICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldENvbnN0YW50VHlwZShjaGlsZCwgY29udGV4dCkgPT09IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbEFyZ3MucHVzaCgxIC8qIFBhdGNoRmxhZ3MuVEVYVCAqLyArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYCAvKiAke1BhdGNoRmxhZ05hbWVzWzEgLyogUGF0Y2hGbGFncy5URVhUICovXX0gKi9gIDogYGApKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5baV0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IDEyIC8qIE5vZGVUeXBlcy5URVhUX0NBTEwgKi8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGNoaWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2M6IGNoaWxkLmxvYyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZWdlbk5vZGU6IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKENSRUFURV9URVhUKSwgY2FsbEFyZ3MpXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn07XG5cbmNvbnN0IHNlZW4gPSBuZXcgV2Vha1NldCgpO1xyXG5jb25zdCB0cmFuc2Zvcm1PbmNlID0gKG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8gJiYgZmluZERpcihub2RlLCAnb25jZScsIHRydWUpKSB7XHJcbiAgICAgICAgaWYgKHNlZW4uaGFzKG5vZGUpIHx8IGNvbnRleHQuaW5WT25jZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNlZW4uYWRkKG5vZGUpO1xyXG4gICAgICAgIGNvbnRleHQuaW5WT25jZSA9IHRydWU7XHJcbiAgICAgICAgY29udGV4dC5oZWxwZXIoU0VUX0JMT0NLX1RSQUNLSU5HKTtcclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb250ZXh0LmluVk9uY2UgPSBmYWxzZTtcclxuICAgICAgICAgICAgY29uc3QgY3VyID0gY29udGV4dC5jdXJyZW50Tm9kZTtcclxuICAgICAgICAgICAgaWYgKGN1ci5jb2RlZ2VuTm9kZSkge1xyXG4gICAgICAgICAgICAgICAgY3VyLmNvZGVnZW5Ob2RlID0gY29udGV4dC5jYWNoZShjdXIuY29kZWdlbk5vZGUsIHRydWUgLyogaXNWTm9kZSAqLyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59O1xuXG5jb25zdCB0cmFuc2Zvcm1Nb2RlbCA9IChkaXIsIG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGNvbnN0IHsgZXhwLCBhcmcgfSA9IGRpcjtcclxuICAgIGlmICghZXhwKSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDEgLyogRXJyb3JDb2Rlcy5YX1ZfTU9ERUxfTk9fRVhQUkVTU0lPTiAqLywgZGlyLmxvYykpO1xyXG4gICAgICAgIHJldHVybiBjcmVhdGVUcmFuc2Zvcm1Qcm9wcygpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmF3RXhwID0gZXhwLmxvYy5zb3VyY2U7XHJcbiAgICBjb25zdCBleHBTdHJpbmcgPSBleHAudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8gPyBleHAuY29udGVudCA6IHJhd0V4cDtcclxuICAgIC8vIGltIFNGQyA8c2NyaXB0IHNldHVwPiBpbmxpbmUgbW9kZSwgdGhlIGV4cCBtYXkgaGF2ZSBiZWVuIHRyYW5zZm9ybWVkIGludG9cclxuICAgIC8vIF91bnJlZihleHApXHJcbiAgICBjb250ZXh0LmJpbmRpbmdNZXRhZGF0YVtyYXdFeHBdO1xyXG4gICAgY29uc3QgbWF5YmVSZWYgPSAhdHJ1ZSAgICAvKiBCaW5kaW5nVHlwZXMuU0VUVVBfQ09OU1QgKi87XHJcbiAgICBpZiAoIWV4cFN0cmluZy50cmltKCkgfHxcclxuICAgICAgICAoIWlzTWVtYmVyRXhwcmVzc2lvbihleHBTdHJpbmcpICYmICFtYXliZVJlZikpIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcig0MiAvKiBFcnJvckNvZGVzLlhfVl9NT0RFTF9NQUxGT1JNRURfRVhQUkVTU0lPTiAqLywgZXhwLmxvYykpO1xyXG4gICAgICAgIHJldHVybiBjcmVhdGVUcmFuc2Zvcm1Qcm9wcygpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcHJvcE5hbWUgPSBhcmcgPyBhcmcgOiBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCdtb2RlbFZhbHVlJywgdHJ1ZSk7XHJcbiAgICBjb25zdCBldmVudE5hbWUgPSBhcmdcclxuICAgICAgICA/IGlzU3RhdGljRXhwKGFyZylcclxuICAgICAgICAgICAgPyBgb25VcGRhdGU6JHthcmcuY29udGVudH1gXHJcbiAgICAgICAgICAgIDogY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFsnXCJvblVwZGF0ZTpcIiArICcsIGFyZ10pXHJcbiAgICAgICAgOiBgb25VcGRhdGU6bW9kZWxWYWx1ZWA7XHJcbiAgICBsZXQgYXNzaWdubWVudEV4cDtcclxuICAgIGNvbnN0IGV2ZW50QXJnID0gY29udGV4dC5pc1RTID8gYCgkZXZlbnQ6IGFueSlgIDogYCRldmVudGA7XHJcbiAgICB7XHJcbiAgICAgICAgYXNzaWdubWVudEV4cCA9IGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbXHJcbiAgICAgICAgICAgIGAke2V2ZW50QXJnfSA9PiAoKGAsXHJcbiAgICAgICAgICAgIGV4cCxcclxuICAgICAgICAgICAgYCkgPSAkZXZlbnQpYFxyXG4gICAgICAgIF0pO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcHJvcHMgPSBbXHJcbiAgICAgICAgLy8gbW9kZWxWYWx1ZTogZm9vXHJcbiAgICAgICAgY3JlYXRlT2JqZWN0UHJvcGVydHkocHJvcE5hbWUsIGRpci5leHApLFxyXG4gICAgICAgIC8vIFwib25VcGRhdGU6bW9kZWxWYWx1ZVwiOiAkZXZlbnQgPT4gKGZvbyA9ICRldmVudClcclxuICAgICAgICBjcmVhdGVPYmplY3RQcm9wZXJ0eShldmVudE5hbWUsIGFzc2lnbm1lbnRFeHApXHJcbiAgICBdO1xyXG4gICAgLy8gbW9kZWxNb2RpZmllcnM6IHsgZm9vOiB0cnVlLCBcImJhci1iYXpcIjogdHJ1ZSB9XHJcbiAgICBpZiAoZGlyLm1vZGlmaWVycy5sZW5ndGggJiYgbm9kZS50YWdUeXBlID09PSAxIC8qIEVsZW1lbnRUeXBlcy5DT01QT05FTlQgKi8pIHtcclxuICAgICAgICBjb25zdCBtb2RpZmllcnMgPSBkaXIubW9kaWZpZXJzXHJcbiAgICAgICAgICAgIC5tYXAobSA9PiAoaXNTaW1wbGVJZGVudGlmaWVyKG0pID8gbSA6IEpTT04uc3RyaW5naWZ5KG0pKSArIGA6IHRydWVgKVxyXG4gICAgICAgICAgICAuam9pbihgLCBgKTtcclxuICAgICAgICBjb25zdCBtb2RpZmllcnNLZXkgPSBhcmdcclxuICAgICAgICAgICAgPyBpc1N0YXRpY0V4cChhcmcpXHJcbiAgICAgICAgICAgICAgICA/IGAke2FyZy5jb250ZW50fU1vZGlmaWVyc2BcclxuICAgICAgICAgICAgICAgIDogY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFthcmcsICcgKyBcIk1vZGlmaWVyc1wiJ10pXHJcbiAgICAgICAgICAgIDogYG1vZGVsTW9kaWZpZXJzYDtcclxuICAgICAgICBwcm9wcy5wdXNoKGNyZWF0ZU9iamVjdFByb3BlcnR5KG1vZGlmaWVyc0tleSwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgeyAke21vZGlmaWVyc30gfWAsIGZhbHNlLCBkaXIubG9jLCAyIC8qIENvbnN0YW50VHlwZXMuQ0FOX0hPSVNUICovKSkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNyZWF0ZVRyYW5zZm9ybVByb3BzKHByb3BzKTtcclxufTtcclxuZnVuY3Rpb24gY3JlYXRlVHJhbnNmb3JtUHJvcHMocHJvcHMgPSBbXSkge1xyXG4gICAgcmV0dXJuIHsgcHJvcHMgfTtcclxufVxuXG5jb25zdCB2YWxpZERpdmlzaW9uQ2hhclJFID0gL1tcXHcpLitcXC1fJFxcXV0vO1xyXG5jb25zdCB0cmFuc2Zvcm1GaWx0ZXIgPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgaWYgKCFpc0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9GSUxURVJcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfRklMVEVSUyAqLywgY29udGV4dCkpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAobm9kZS50eXBlID09PSA1IC8qIE5vZGVUeXBlcy5JTlRFUlBPTEFUSU9OICovKSB7XHJcbiAgICAgICAgLy8gZmlsdGVyIHJld3JpdGUgaXMgYXBwbGllZCBiZWZvcmUgZXhwcmVzc2lvbiB0cmFuc2Zvcm0gc28gb25seVxyXG4gICAgICAgIC8vIHNpbXBsZSBleHByZXNzaW9ucyBhcmUgcG9zc2libGUgYXQgdGhpcyBzdGFnZVxyXG4gICAgICAgIHJld3JpdGVGaWx0ZXIobm9kZS5jb250ZW50LCBjb250ZXh0KTtcclxuICAgIH1cclxuICAgIGlmIChub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8pIHtcclxuICAgICAgICBub2RlLnByb3BzLmZvckVhY2goKHByb3ApID0+IHtcclxuICAgICAgICAgICAgaWYgKHByb3AudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovICYmXHJcbiAgICAgICAgICAgICAgICBwcm9wLm5hbWUgIT09ICdmb3InICYmXHJcbiAgICAgICAgICAgICAgICBwcm9wLmV4cCkge1xyXG4gICAgICAgICAgICAgICAgcmV3cml0ZUZpbHRlcihwcm9wLmV4cCwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxufTtcclxuZnVuY3Rpb24gcmV3cml0ZUZpbHRlcihub2RlLCBjb250ZXh0KSB7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgIHBhcnNlRmlsdGVyKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjaGlsZCAhPT0gJ29iamVjdCcpXHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJzZUZpbHRlcihjaGlsZCwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQudHlwZSA9PT0gOCAvKiBOb2RlVHlwZXMuQ09NUE9VTkRfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICAgICAgcmV3cml0ZUZpbHRlcihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChjaGlsZC50eXBlID09PSA1IC8qIE5vZGVUeXBlcy5JTlRFUlBPTEFUSU9OICovKSB7XHJcbiAgICAgICAgICAgICAgICByZXdyaXRlRmlsdGVyKGNoaWxkLmNvbnRlbnQsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHBhcnNlRmlsdGVyKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IGV4cCA9IG5vZGUuY29udGVudDtcclxuICAgIGxldCBpblNpbmdsZSA9IGZhbHNlO1xyXG4gICAgbGV0IGluRG91YmxlID0gZmFsc2U7XHJcbiAgICBsZXQgaW5UZW1wbGF0ZVN0cmluZyA9IGZhbHNlO1xyXG4gICAgbGV0IGluUmVnZXggPSBmYWxzZTtcclxuICAgIGxldCBjdXJseSA9IDA7XHJcbiAgICBsZXQgc3F1YXJlID0gMDtcclxuICAgIGxldCBwYXJlbiA9IDA7XHJcbiAgICBsZXQgbGFzdEZpbHRlckluZGV4ID0gMDtcclxuICAgIGxldCBjLCBwcmV2LCBpLCBleHByZXNzaW9uLCBmaWx0ZXJzID0gW107XHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgZXhwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgcHJldiA9IGM7XHJcbiAgICAgICAgYyA9IGV4cC5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICAgIGlmIChpblNpbmdsZSkge1xyXG4gICAgICAgICAgICBpZiAoYyA9PT0gMHgyNyAmJiBwcmV2ICE9PSAweDVjKVxyXG4gICAgICAgICAgICAgICAgaW5TaW5nbGUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaW5Eb3VibGUpIHtcclxuICAgICAgICAgICAgaWYgKGMgPT09IDB4MjIgJiYgcHJldiAhPT0gMHg1YylcclxuICAgICAgICAgICAgICAgIGluRG91YmxlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGluVGVtcGxhdGVTdHJpbmcpIHtcclxuICAgICAgICAgICAgaWYgKGMgPT09IDB4NjAgJiYgcHJldiAhPT0gMHg1YylcclxuICAgICAgICAgICAgICAgIGluVGVtcGxhdGVTdHJpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaW5SZWdleCkge1xyXG4gICAgICAgICAgICBpZiAoYyA9PT0gMHgyZiAmJiBwcmV2ICE9PSAweDVjKVxyXG4gICAgICAgICAgICAgICAgaW5SZWdleCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChjID09PSAweDdjICYmIC8vIHBpcGVcclxuICAgICAgICAgICAgZXhwLmNoYXJDb2RlQXQoaSArIDEpICE9PSAweDdjICYmXHJcbiAgICAgICAgICAgIGV4cC5jaGFyQ29kZUF0KGkgLSAxKSAhPT0gMHg3YyAmJlxyXG4gICAgICAgICAgICAhY3VybHkgJiZcclxuICAgICAgICAgICAgIXNxdWFyZSAmJlxyXG4gICAgICAgICAgICAhcGFyZW4pIHtcclxuICAgICAgICAgICAgaWYgKGV4cHJlc3Npb24gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gZmlyc3QgZmlsdGVyLCBlbmQgb2YgZXhwcmVzc2lvblxyXG4gICAgICAgICAgICAgICAgbGFzdEZpbHRlckluZGV4ID0gaSArIDE7XHJcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uID0gZXhwLnNsaWNlKDAsIGkpLnRyaW0oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHB1c2hGaWx0ZXIoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgc3dpdGNoIChjKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDB4MjI6XHJcbiAgICAgICAgICAgICAgICAgICAgaW5Eb3VibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBcIlxyXG4gICAgICAgICAgICAgICAgY2FzZSAweDI3OlxyXG4gICAgICAgICAgICAgICAgICAgIGluU2luZ2xlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gJ1xyXG4gICAgICAgICAgICAgICAgY2FzZSAweDYwOlxyXG4gICAgICAgICAgICAgICAgICAgIGluVGVtcGxhdGVTdHJpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBgXHJcbiAgICAgICAgICAgICAgICBjYXNlIDB4Mjg6XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyZW4rKztcclxuICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gKFxyXG4gICAgICAgICAgICAgICAgY2FzZSAweDI5OlxyXG4gICAgICAgICAgICAgICAgICAgIHBhcmVuLS07XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIClcclxuICAgICAgICAgICAgICAgIGNhc2UgMHg1YjpcclxuICAgICAgICAgICAgICAgICAgICBzcXVhcmUrKztcclxuICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gW1xyXG4gICAgICAgICAgICAgICAgY2FzZSAweDVkOlxyXG4gICAgICAgICAgICAgICAgICAgIHNxdWFyZS0tO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBdXHJcbiAgICAgICAgICAgICAgICBjYXNlIDB4N2I6XHJcbiAgICAgICAgICAgICAgICAgICAgY3VybHkrKztcclxuICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8ge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAweDdkOlxyXG4gICAgICAgICAgICAgICAgICAgIGN1cmx5LS07XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYyA9PT0gMHgyZikge1xyXG4gICAgICAgICAgICAgICAgLy8gL1xyXG4gICAgICAgICAgICAgICAgbGV0IGogPSBpIC0gMTtcclxuICAgICAgICAgICAgICAgIGxldCBwO1xyXG4gICAgICAgICAgICAgICAgLy8gZmluZCBmaXJzdCBub24td2hpdGVzcGFjZSBwcmV2IGNoYXJcclxuICAgICAgICAgICAgICAgIGZvciAoOyBqID49IDA7IGotLSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHAgPSBleHAuY2hhckF0KGopO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwICE9PSAnICcpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFwIHx8ICF2YWxpZERpdmlzaW9uQ2hhclJFLnRlc3QocCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpblJlZ2V4ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChleHByZXNzaW9uID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBleHByZXNzaW9uID0gZXhwLnNsaWNlKDAsIGkpLnRyaW0oKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGxhc3RGaWx0ZXJJbmRleCAhPT0gMCkge1xyXG4gICAgICAgIHB1c2hGaWx0ZXIoKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHB1c2hGaWx0ZXIoKSB7XHJcbiAgICAgICAgZmlsdGVycy5wdXNoKGV4cC5zbGljZShsYXN0RmlsdGVySW5kZXgsIGkpLnRyaW0oKSk7XHJcbiAgICAgICAgbGFzdEZpbHRlckluZGV4ID0gaSArIDE7XHJcbiAgICB9XHJcbiAgICBpZiAoZmlsdGVycy5sZW5ndGgpIHtcclxuICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgd2FybkRlcHJlY2F0aW9uKFwiQ09NUElMRVJfRklMVEVSXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX0ZJTFRFUlMgKi8sIGNvbnRleHQsIG5vZGUubG9jKTtcclxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZmlsdGVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBleHByZXNzaW9uID0gd3JhcEZpbHRlcihleHByZXNzaW9uLCBmaWx0ZXJzW2ldLCBjb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbm9kZS5jb250ZW50ID0gZXhwcmVzc2lvbjtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB3cmFwRmlsdGVyKGV4cCwgZmlsdGVyLCBjb250ZXh0KSB7XHJcbiAgICBjb250ZXh0LmhlbHBlcihSRVNPTFZFX0ZJTFRFUik7XHJcbiAgICBjb25zdCBpID0gZmlsdGVyLmluZGV4T2YoJygnKTtcclxuICAgIGlmIChpIDwgMCkge1xyXG4gICAgICAgIGNvbnRleHQuZmlsdGVycy5hZGQoZmlsdGVyKTtcclxuICAgICAgICByZXR1cm4gYCR7dG9WYWxpZEFzc2V0SWQoZmlsdGVyLCAnZmlsdGVyJyl9KCR7ZXhwfSlgO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IGZpbHRlci5zbGljZSgwLCBpKTtcclxuICAgICAgICBjb25zdCBhcmdzID0gZmlsdGVyLnNsaWNlKGkgKyAxKTtcclxuICAgICAgICBjb250ZXh0LmZpbHRlcnMuYWRkKG5hbWUpO1xyXG4gICAgICAgIHJldHVybiBgJHt0b1ZhbGlkQXNzZXRJZChuYW1lLCAnZmlsdGVyJyl9KCR7ZXhwfSR7YXJncyAhPT0gJyknID8gJywnICsgYXJncyA6IGFyZ3N9YDtcclxuICAgIH1cclxufVxuXG5jb25zdCBzZWVuJDEgPSBuZXcgV2Vha1NldCgpO1xyXG5jb25zdCB0cmFuc2Zvcm1NZW1vID0gKG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8pIHtcclxuICAgICAgICBjb25zdCBkaXIgPSBmaW5kRGlyKG5vZGUsICdtZW1vJyk7XHJcbiAgICAgICAgaWYgKCFkaXIgfHwgc2VlbiQxLmhhcyhub2RlKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNlZW4kMS5hZGQobm9kZSk7XHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY29kZWdlbk5vZGUgPSBub2RlLmNvZGVnZW5Ob2RlIHx8XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmN1cnJlbnROb2RlLmNvZGVnZW5Ob2RlO1xyXG4gICAgICAgICAgICBpZiAoY29kZWdlbk5vZGUgJiYgY29kZWdlbk5vZGUudHlwZSA9PT0gMTMgLyogTm9kZVR5cGVzLlZOT0RFX0NBTEwgKi8pIHtcclxuICAgICAgICAgICAgICAgIC8vIG5vbi1jb21wb25lbnQgc3ViIHRyZWUgc2hvdWxkIGJlIHR1cm5lZCBpbnRvIGEgYmxvY2tcclxuICAgICAgICAgICAgICAgIGlmIChub2RlLnRhZ1R5cGUgIT09IDEgLyogRWxlbWVudFR5cGVzLkNPTVBPTkVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIG1ha2VCbG9jayhjb2RlZ2VuTm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBub2RlLmNvZGVnZW5Ob2RlID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoV0lUSF9NRU1PKSwgW1xyXG4gICAgICAgICAgICAgICAgICAgIGRpci5leHAsXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKHVuZGVmaW5lZCwgY29kZWdlbk5vZGUpLFxyXG4gICAgICAgICAgICAgICAgICAgIGBfY2FjaGVgLFxyXG4gICAgICAgICAgICAgICAgICAgIFN0cmluZyhjb250ZXh0LmNhY2hlZCsrKVxyXG4gICAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59O1xuXG5mdW5jdGlvbiBnZXRCYXNlVHJhbnNmb3JtUHJlc2V0KHByZWZpeElkZW50aWZpZXJzKSB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICAgIFtcclxuICAgICAgICAgICAgdHJhbnNmb3JtT25jZSxcclxuICAgICAgICAgICAgdHJhbnNmb3JtSWYsXHJcbiAgICAgICAgICAgIHRyYW5zZm9ybU1lbW8sXHJcbiAgICAgICAgICAgIHRyYW5zZm9ybUZvcixcclxuICAgICAgICAgICAgLi4uKFt0cmFuc2Zvcm1GaWx0ZXJdICksXHJcbiAgICAgICAgICAgIC4uLigocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICAgICAgICAgICAgICA/IFt0cmFuc2Zvcm1FeHByZXNzaW9uXVxyXG4gICAgICAgICAgICAgICAgICAgIDogW10pLFxyXG4gICAgICAgICAgICB0cmFuc2Zvcm1TbG90T3V0bGV0LFxyXG4gICAgICAgICAgICB0cmFuc2Zvcm1FbGVtZW50LFxyXG4gICAgICAgICAgICB0cmFja1Nsb3RTY29wZXMsXHJcbiAgICAgICAgICAgIHRyYW5zZm9ybVRleHRcclxuICAgICAgICBdLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgb246IHRyYW5zZm9ybU9uLFxyXG4gICAgICAgICAgICBiaW5kOiB0cmFuc2Zvcm1CaW5kLFxyXG4gICAgICAgICAgICBtb2RlbDogdHJhbnNmb3JtTW9kZWxcclxuICAgICAgICB9XHJcbiAgICBdO1xyXG59XHJcbi8vIHdlIG5hbWUgaXQgYGJhc2VDb21waWxlYCBzbyB0aGF0IGhpZ2hlciBvcmRlciBjb21waWxlcnMgbGlrZVxyXG4vLyBAdnVlL2NvbXBpbGVyLWRvbSBjYW4gZXhwb3J0IGBjb21waWxlYCB3aGlsZSByZS1leHBvcnRpbmcgZXZlcnl0aGluZyBlbHNlLlxyXG5mdW5jdGlvbiBiYXNlQ29tcGlsZSh0ZW1wbGF0ZSwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICBjb25zdCBvbkVycm9yID0gb3B0aW9ucy5vbkVycm9yIHx8IGRlZmF1bHRPbkVycm9yO1xyXG4gICAgY29uc3QgaXNNb2R1bGVNb2RlID0gb3B0aW9ucy5tb2RlID09PSAnbW9kdWxlJztcclxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xyXG4gICAge1xyXG4gICAgICAgIGlmIChvcHRpb25zLnByZWZpeElkZW50aWZpZXJzID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIG9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcig0NiAvKiBFcnJvckNvZGVzLlhfUFJFRklYX0lEX05PVF9TVVBQT1JURUQgKi8pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaXNNb2R1bGVNb2RlKSB7XHJcbiAgICAgICAgICAgIG9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcig0NyAvKiBFcnJvckNvZGVzLlhfTU9EVUxFX01PREVfTk9UX1NVUFBPUlRFRCAqLykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHByZWZpeElkZW50aWZpZXJzID0gIXRydWUgO1xyXG4gICAgaWYgKG9wdGlvbnMuY2FjaGVIYW5kbGVycykge1xyXG4gICAgICAgIG9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcig0OCAvKiBFcnJvckNvZGVzLlhfQ0FDSEVfSEFORExFUl9OT1RfU1VQUE9SVEVEICovKSk7XHJcbiAgICB9XHJcbiAgICBpZiAob3B0aW9ucy5zY29wZUlkICYmICFpc01vZHVsZU1vZGUpIHtcclxuICAgICAgICBvbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDkgLyogRXJyb3JDb2Rlcy5YX1NDT1BFX0lEX05PVF9TVVBQT1JURUQgKi8pKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGFzdCA9IGlzU3RyaW5nKHRlbXBsYXRlKSA/IGJhc2VQYXJzZSh0ZW1wbGF0ZSwgb3B0aW9ucykgOiB0ZW1wbGF0ZTtcclxuICAgIGNvbnN0IFtub2RlVHJhbnNmb3JtcywgZGlyZWN0aXZlVHJhbnNmb3Jtc10gPSBnZXRCYXNlVHJhbnNmb3JtUHJlc2V0KCk7XHJcbiAgICB0cmFuc2Zvcm0oYXN0LCBleHRlbmQoe30sIG9wdGlvbnMsIHtcclxuICAgICAgICBwcmVmaXhJZGVudGlmaWVycyxcclxuICAgICAgICBub2RlVHJhbnNmb3JtczogW1xyXG4gICAgICAgICAgICAuLi5ub2RlVHJhbnNmb3JtcyxcclxuICAgICAgICAgICAgLi4uKG9wdGlvbnMubm9kZVRyYW5zZm9ybXMgfHwgW10pIC8vIHVzZXIgdHJhbnNmb3Jtc1xyXG4gICAgICAgIF0sXHJcbiAgICAgICAgZGlyZWN0aXZlVHJhbnNmb3JtczogZXh0ZW5kKHt9LCBkaXJlY3RpdmVUcmFuc2Zvcm1zLCBvcHRpb25zLmRpcmVjdGl2ZVRyYW5zZm9ybXMgfHwge30gLy8gdXNlciB0cmFuc2Zvcm1zXHJcbiAgICAgICAgKVxyXG4gICAgfSkpO1xyXG4gICAgcmV0dXJuIGdlbmVyYXRlKGFzdCwgZXh0ZW5kKHt9LCBvcHRpb25zLCB7XHJcbiAgICAgICAgcHJlZml4SWRlbnRpZmllcnNcclxuICAgIH0pKTtcclxufVxuXG5jb25zdCBub29wRGlyZWN0aXZlVHJhbnNmb3JtID0gKCkgPT4gKHsgcHJvcHM6IFtdIH0pO1xuXG5leHBvcnQgeyBCQVNFX1RSQU5TSVRJT04sIENBTUVMSVpFLCBDQVBJVEFMSVpFLCBDUkVBVEVfQkxPQ0ssIENSRUFURV9DT01NRU5ULCBDUkVBVEVfRUxFTUVOVF9CTE9DSywgQ1JFQVRFX0VMRU1FTlRfVk5PREUsIENSRUFURV9TTE9UUywgQ1JFQVRFX1NUQVRJQywgQ1JFQVRFX1RFWFQsIENSRUFURV9WTk9ERSwgRlJBR01FTlQsIEdVQVJEX1JFQUNUSVZFX1BST1BTLCBJU19NRU1PX1NBTUUsIElTX1JFRiwgS0VFUF9BTElWRSwgTUVSR0VfUFJPUFMsIE5PUk1BTElaRV9DTEFTUywgTk9STUFMSVpFX1BST1BTLCBOT1JNQUxJWkVfU1RZTEUsIE9QRU5fQkxPQ0ssIFBPUF9TQ09QRV9JRCwgUFVTSF9TQ09QRV9JRCwgUkVOREVSX0xJU1QsIFJFTkRFUl9TTE9ULCBSRVNPTFZFX0NPTVBPTkVOVCwgUkVTT0xWRV9ESVJFQ1RJVkUsIFJFU09MVkVfRFlOQU1JQ19DT01QT05FTlQsIFJFU09MVkVfRklMVEVSLCBTRVRfQkxPQ0tfVFJBQ0tJTkcsIFNVU1BFTlNFLCBURUxFUE9SVCwgVE9fRElTUExBWV9TVFJJTkcsIFRPX0hBTkRMRVJTLCBUT19IQU5ETEVSX0tFWSwgVU5SRUYsIFdJVEhfQ1RYLCBXSVRIX0RJUkVDVElWRVMsIFdJVEhfTUVNTywgYWR2YW5jZVBvc2l0aW9uV2l0aENsb25lLCBhZHZhbmNlUG9zaXRpb25XaXRoTXV0YXRpb24sIGFzc2VydCwgYmFzZUNvbXBpbGUsIGJhc2VQYXJzZSwgYnVpbGREaXJlY3RpdmVBcmdzLCBidWlsZFByb3BzLCBidWlsZFNsb3RzLCBjaGVja0NvbXBhdEVuYWJsZWQsIGNyZWF0ZUFycmF5RXhwcmVzc2lvbiwgY3JlYXRlQXNzaWdubWVudEV4cHJlc3Npb24sIGNyZWF0ZUJsb2NrU3RhdGVtZW50LCBjcmVhdGVDYWNoZUV4cHJlc3Npb24sIGNyZWF0ZUNhbGxFeHByZXNzaW9uLCBjcmVhdGVDb21waWxlckVycm9yLCBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24sIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbiwgY3JlYXRlRm9yTG9vcFBhcmFtcywgY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uLCBjcmVhdGVJZlN0YXRlbWVudCwgY3JlYXRlSW50ZXJwb2xhdGlvbiwgY3JlYXRlT2JqZWN0RXhwcmVzc2lvbiwgY3JlYXRlT2JqZWN0UHJvcGVydHksIGNyZWF0ZVJldHVyblN0YXRlbWVudCwgY3JlYXRlUm9vdCwgY3JlYXRlU2VxdWVuY2VFeHByZXNzaW9uLCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uLCBjcmVhdGVTdHJ1Y3R1cmFsRGlyZWN0aXZlVHJhbnNmb3JtLCBjcmVhdGVUZW1wbGF0ZUxpdGVyYWwsIGNyZWF0ZVRyYW5zZm9ybUNvbnRleHQsIGNyZWF0ZVZOb2RlQ2FsbCwgZXh0cmFjdElkZW50aWZpZXJzLCBmaW5kRGlyLCBmaW5kUHJvcCwgZ2VuZXJhdGUsIGdldEJhc2VUcmFuc2Zvcm1QcmVzZXQsIGdldENvbnN0YW50VHlwZSwgZ2V0SW5uZXJSYW5nZSwgZ2V0TWVtb2VkVk5vZGVDYWxsLCBnZXRWTm9kZUJsb2NrSGVscGVyLCBnZXRWTm9kZUhlbHBlciwgaGFzRHluYW1pY0tleVZCaW5kLCBoYXNTY29wZVJlZiwgaGVscGVyTmFtZU1hcCwgaW5qZWN0UHJvcCwgaXNCdWlsdEluVHlwZSwgaXNDb3JlQ29tcG9uZW50LCBpc0Z1bmN0aW9uVHlwZSwgaXNJbkRlc3RydWN0dXJlQXNzaWdubWVudCwgaXNNZW1iZXJFeHByZXNzaW9uLCBpc01lbWJlckV4cHJlc3Npb25Ccm93c2VyLCBpc01lbWJlckV4cHJlc3Npb25Ob2RlLCBpc1JlZmVyZW5jZWRJZGVudGlmaWVyLCBpc1NpbXBsZUlkZW50aWZpZXIsIGlzU2xvdE91dGxldCwgaXNTdGF0aWNBcmdPZiwgaXNTdGF0aWNFeHAsIGlzU3RhdGljUHJvcGVydHksIGlzU3RhdGljUHJvcGVydHlLZXksIGlzVGVtcGxhdGVOb2RlLCBpc1RleHQsIGlzVlNsb3QsIGxvY1N0dWIsIG1ha2VCbG9jaywgbm9vcERpcmVjdGl2ZVRyYW5zZm9ybSwgcHJvY2Vzc0V4cHJlc3Npb24sIHByb2Nlc3NGb3IsIHByb2Nlc3NJZiwgcHJvY2Vzc1Nsb3RPdXRsZXQsIHJlZ2lzdGVyUnVudGltZUhlbHBlcnMsIHJlc29sdmVDb21wb25lbnRUeXBlLCB0b1ZhbGlkQXNzZXRJZCwgdHJhY2tTbG90U2NvcGVzLCB0cmFja1ZGb3JTbG90U2NvcGVzLCB0cmFuc2Zvcm0sIHRyYW5zZm9ybUJpbmQsIHRyYW5zZm9ybUVsZW1lbnQsIHRyYW5zZm9ybUV4cHJlc3Npb24sIHRyYW5zZm9ybU1vZGVsLCB0cmFuc2Zvcm1PbiwgdHJhdmVyc2VOb2RlLCB3YWxrQmxvY2tEZWNsYXJhdGlvbnMsIHdhbGtGdW5jdGlvblBhcmFtcywgd2Fsa0lkZW50aWZpZXJzLCB3YXJuRGVwcmVjYXRpb24gfTtcbiIsImltcG9ydCB7IHJlZ2lzdGVyUnVudGltZUhlbHBlcnMsIGlzQnVpbHRJblR5cGUsIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24sIGNyZWF0ZUNvbXBpbGVyRXJyb3IsIGNyZWF0ZU9iamVjdFByb3BlcnR5LCBnZXRDb25zdGFudFR5cGUsIGNyZWF0ZUNhbGxFeHByZXNzaW9uLCBUT19ESVNQTEFZX1NUUklORywgdHJhbnNmb3JtTW9kZWwgYXMgdHJhbnNmb3JtTW9kZWwkMSwgZmluZFByb3AsIGhhc0R5bmFtaWNLZXlWQmluZCwgdHJhbnNmb3JtT24gYXMgdHJhbnNmb3JtT24kMSwgY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uLCBpc1N0YXRpY0V4cCwgY2hlY2tDb21wYXRFbmFibGVkLCBub29wRGlyZWN0aXZlVHJhbnNmb3JtLCBiYXNlQ29tcGlsZSwgYmFzZVBhcnNlIH0gZnJvbSAnQHZ1ZS9jb21waWxlci1jb3JlJztcbmV4cG9ydCAqIGZyb20gJ0B2dWUvY29tcGlsZXItY29yZSc7XG5pbXBvcnQgeyBpc1ZvaWRUYWcsIGlzSFRNTFRhZywgaXNTVkdUYWcsIG1ha2VNYXAsIHBhcnNlU3RyaW5nU3R5bGUsIGNhcGl0YWxpemUsIGV4dGVuZCB9IGZyb20gJ0B2dWUvc2hhcmVkJztcblxuY29uc3QgVl9NT0RFTF9SQURJTyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgdk1vZGVsUmFkaW9gIDogYGApO1xyXG5jb25zdCBWX01PREVMX0NIRUNLQk9YID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB2TW9kZWxDaGVja2JveGAgOiBgYCk7XHJcbmNvbnN0IFZfTU9ERUxfVEVYVCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgdk1vZGVsVGV4dGAgOiBgYCk7XHJcbmNvbnN0IFZfTU9ERUxfU0VMRUNUID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB2TW9kZWxTZWxlY3RgIDogYGApO1xyXG5jb25zdCBWX01PREVMX0RZTkFNSUMgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHZNb2RlbER5bmFtaWNgIDogYGApO1xyXG5jb25zdCBWX09OX1dJVEhfTU9ESUZJRVJTID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB2T25Nb2RpZmllcnNHdWFyZGAgOiBgYCk7XHJcbmNvbnN0IFZfT05fV0lUSF9LRVlTID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB2T25LZXlzR3VhcmRgIDogYGApO1xyXG5jb25zdCBWX1NIT1cgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHZTaG93YCA6IGBgKTtcclxuY29uc3QgVFJBTlNJVElPTiA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgVHJhbnNpdGlvbmAgOiBgYCk7XHJcbmNvbnN0IFRSQU5TSVRJT05fR1JPVVAgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYFRyYW5zaXRpb25Hcm91cGAgOiBgYCk7XHJcbnJlZ2lzdGVyUnVudGltZUhlbHBlcnMoe1xyXG4gICAgW1ZfTU9ERUxfUkFESU9dOiBgdk1vZGVsUmFkaW9gLFxyXG4gICAgW1ZfTU9ERUxfQ0hFQ0tCT1hdOiBgdk1vZGVsQ2hlY2tib3hgLFxyXG4gICAgW1ZfTU9ERUxfVEVYVF06IGB2TW9kZWxUZXh0YCxcclxuICAgIFtWX01PREVMX1NFTEVDVF06IGB2TW9kZWxTZWxlY3RgLFxyXG4gICAgW1ZfTU9ERUxfRFlOQU1JQ106IGB2TW9kZWxEeW5hbWljYCxcclxuICAgIFtWX09OX1dJVEhfTU9ESUZJRVJTXTogYHdpdGhNb2RpZmllcnNgLFxyXG4gICAgW1ZfT05fV0lUSF9LRVlTXTogYHdpdGhLZXlzYCxcclxuICAgIFtWX1NIT1ddOiBgdlNob3dgLFxyXG4gICAgW1RSQU5TSVRJT05dOiBgVHJhbnNpdGlvbmAsXHJcbiAgICBbVFJBTlNJVElPTl9HUk9VUF06IGBUcmFuc2l0aW9uR3JvdXBgXHJcbn0pO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgKi9cclxubGV0IGRlY29kZXI7XHJcbmZ1bmN0aW9uIGRlY29kZUh0bWxCcm93c2VyKHJhdywgYXNBdHRyID0gZmFsc2UpIHtcclxuICAgIGlmICghZGVjb2Rlcikge1xyXG4gICAgICAgIGRlY29kZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIH1cclxuICAgIGlmIChhc0F0dHIpIHtcclxuICAgICAgICBkZWNvZGVyLmlubmVySFRNTCA9IGA8ZGl2IGZvbz1cIiR7cmF3LnJlcGxhY2UoL1wiL2csICcmcXVvdDsnKX1cIj5gO1xyXG4gICAgICAgIHJldHVybiBkZWNvZGVyLmNoaWxkcmVuWzBdLmdldEF0dHJpYnV0ZSgnZm9vJyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBkZWNvZGVyLmlubmVySFRNTCA9IHJhdztcclxuICAgICAgICByZXR1cm4gZGVjb2Rlci50ZXh0Q29udGVudDtcclxuICAgIH1cclxufVxuXG5jb25zdCBpc1Jhd1RleHRDb250YWluZXIgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoJ3N0eWxlLGlmcmFtZSxzY3JpcHQsbm9zY3JpcHQnLCB0cnVlKTtcclxuY29uc3QgcGFyc2VyT3B0aW9ucyA9IHtcclxuICAgIGlzVm9pZFRhZyxcclxuICAgIGlzTmF0aXZlVGFnOiB0YWcgPT4gaXNIVE1MVGFnKHRhZykgfHwgaXNTVkdUYWcodGFnKSxcclxuICAgIGlzUHJlVGFnOiB0YWcgPT4gdGFnID09PSAncHJlJyxcclxuICAgIGRlY29kZUVudGl0aWVzOiBkZWNvZGVIdG1sQnJvd3NlciAsXHJcbiAgICBpc0J1aWx0SW5Db21wb25lbnQ6ICh0YWcpID0+IHtcclxuICAgICAgICBpZiAoaXNCdWlsdEluVHlwZSh0YWcsIGBUcmFuc2l0aW9uYCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFRSQU5TSVRJT047XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlzQnVpbHRJblR5cGUodGFnLCBgVHJhbnNpdGlvbkdyb3VwYCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFRSQU5TSVRJT05fR1JPVVA7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCN0cmVlLWNvbnN0cnVjdGlvbi1kaXNwYXRjaGVyXHJcbiAgICBnZXROYW1lc3BhY2UodGFnLCBwYXJlbnQpIHtcclxuICAgICAgICBsZXQgbnMgPSBwYXJlbnQgPyBwYXJlbnQubnMgOiAwIC8qIERPTU5hbWVzcGFjZXMuSFRNTCAqLztcclxuICAgICAgICBpZiAocGFyZW50ICYmIG5zID09PSAyIC8qIERPTU5hbWVzcGFjZXMuTUFUSF9NTCAqLykge1xyXG4gICAgICAgICAgICBpZiAocGFyZW50LnRhZyA9PT0gJ2Fubm90YXRpb24teG1sJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRhZyA9PT0gJ3N2ZycpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMSAvKiBET01OYW1lc3BhY2VzLlNWRyAqLztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChwYXJlbnQucHJvcHMuc29tZShhID0+IGEudHlwZSA9PT0gNiAvKiBOb2RlVHlwZXMuQVRUUklCVVRFICovICYmXHJcbiAgICAgICAgICAgICAgICAgICAgYS5uYW1lID09PSAnZW5jb2RpbmcnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgYS52YWx1ZSAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgICAgICAgKGEudmFsdWUuY29udGVudCA9PT0gJ3RleHQvaHRtbCcgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYS52YWx1ZS5jb250ZW50ID09PSAnYXBwbGljYXRpb24veGh0bWwreG1sJykpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbnMgPSAwIC8qIERPTU5hbWVzcGFjZXMuSFRNTCAqLztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICgvXm0oPzpbaW9uc118dGV4dCkkLy50ZXN0KHBhcmVudC50YWcpICYmXHJcbiAgICAgICAgICAgICAgICB0YWcgIT09ICdtZ2x5cGgnICYmXHJcbiAgICAgICAgICAgICAgICB0YWcgIT09ICdtYWxpZ25tYXJrJykge1xyXG4gICAgICAgICAgICAgICAgbnMgPSAwIC8qIERPTU5hbWVzcGFjZXMuSFRNTCAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChwYXJlbnQgJiYgbnMgPT09IDEgLyogRE9NTmFtZXNwYWNlcy5TVkcgKi8pIHtcclxuICAgICAgICAgICAgaWYgKHBhcmVudC50YWcgPT09ICdmb3JlaWduT2JqZWN0JyB8fFxyXG4gICAgICAgICAgICAgICAgcGFyZW50LnRhZyA9PT0gJ2Rlc2MnIHx8XHJcbiAgICAgICAgICAgICAgICBwYXJlbnQudGFnID09PSAndGl0bGUnKSB7XHJcbiAgICAgICAgICAgICAgICBucyA9IDAgLyogRE9NTmFtZXNwYWNlcy5IVE1MICovO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChucyA9PT0gMCAvKiBET01OYW1lc3BhY2VzLkhUTUwgKi8pIHtcclxuICAgICAgICAgICAgaWYgKHRhZyA9PT0gJ3N2ZycpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAxIC8qIERPTU5hbWVzcGFjZXMuU1ZHICovO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0YWcgPT09ICdtYXRoJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDIgLyogRE9NTmFtZXNwYWNlcy5NQVRIX01MICovO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBucztcclxuICAgIH0sXHJcbiAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9wYXJzaW5nLmh0bWwjcGFyc2luZy1odG1sLWZyYWdtZW50c1xyXG4gICAgZ2V0VGV4dE1vZGUoeyB0YWcsIG5zIH0pIHtcclxuICAgICAgICBpZiAobnMgPT09IDAgLyogRE9NTmFtZXNwYWNlcy5IVE1MICovKSB7XHJcbiAgICAgICAgICAgIGlmICh0YWcgPT09ICd0ZXh0YXJlYScgfHwgdGFnID09PSAndGl0bGUnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMSAvKiBUZXh0TW9kZXMuUkNEQVRBICovO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpc1Jhd1RleHRDb250YWluZXIodGFnKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDIgLyogVGV4dE1vZGVzLlJBV1RFWFQgKi87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIDAgLyogVGV4dE1vZGVzLkRBVEEgKi87XHJcbiAgICB9XHJcbn07XG5cbi8vIFBhcnNlIGlubGluZSBDU1Mgc3RyaW5ncyBmb3Igc3RhdGljIHN0eWxlIGF0dHJpYnV0ZXMgaW50byBhbiBvYmplY3QuXHJcbi8vIFRoaXMgaXMgYSBOb2RlVHJhbnNmb3JtIHNpbmNlIGl0IHdvcmtzIG9uIHRoZSBzdGF0aWMgYHN0eWxlYCBhdHRyaWJ1dGUgYW5kXHJcbi8vIGNvbnZlcnRzIGl0IGludG8gYSBkeW5hbWljIGVxdWl2YWxlbnQ6XHJcbi8vIHN0eWxlPVwiY29sb3I6IHJlZFwiIC0+IDpzdHlsZT0neyBcImNvbG9yXCI6IFwicmVkXCIgfSdcclxuLy8gSXQgaXMgdGhlbiBwcm9jZXNzZWQgYnkgYHRyYW5zZm9ybUVsZW1lbnRgIGFuZCBpbmNsdWRlZCBpbiB0aGUgZ2VuZXJhdGVkXHJcbi8vIHByb3BzLlxyXG5jb25zdCB0cmFuc2Zvcm1TdHlsZSA9IG5vZGUgPT4ge1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLykge1xyXG4gICAgICAgIG5vZGUucHJvcHMuZm9yRWFjaCgocCwgaSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocC50eXBlID09PSA2IC8qIE5vZGVUeXBlcy5BVFRSSUJVVEUgKi8gJiYgcC5uYW1lID09PSAnc3R5bGUnICYmIHAudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIC8vIHJlcGxhY2UgcCB3aXRoIGFuIGV4cHJlc3Npb24gbm9kZVxyXG4gICAgICAgICAgICAgICAgbm9kZS5wcm9wc1tpXSA9IHtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8sXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogYGJpbmRgLFxyXG4gICAgICAgICAgICAgICAgICAgIGFyZzogY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgc3R5bGVgLCB0cnVlLCBwLmxvYyksXHJcbiAgICAgICAgICAgICAgICAgICAgZXhwOiBwYXJzZUlubGluZUNTUyhwLnZhbHVlLmNvbnRlbnQsIHAubG9jKSxcclxuICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnM6IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgIGxvYzogcC5sb2NcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxufTtcclxuY29uc3QgcGFyc2VJbmxpbmVDU1MgPSAoY3NzVGV4dCwgbG9jKSA9PiB7XHJcbiAgICBjb25zdCBub3JtYWxpemVkID0gcGFyc2VTdHJpbmdTdHlsZShjc3NUZXh0KTtcclxuICAgIHJldHVybiBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKEpTT04uc3RyaW5naWZ5KG5vcm1hbGl6ZWQpLCBmYWxzZSwgbG9jLCAzIC8qIENvbnN0YW50VHlwZXMuQ0FOX1NUUklOR0lGWSAqLyk7XHJcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoY29kZSwgbG9jKSB7XHJcbiAgICByZXR1cm4gY3JlYXRlQ29tcGlsZXJFcnJvcihjb2RlLCBsb2MsIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCAhdHJ1ZSA/IERPTUVycm9yTWVzc2FnZXMgOiB1bmRlZmluZWQpO1xyXG59XHJcbmNvbnN0IERPTUVycm9yTWVzc2FnZXMgPSB7XHJcbiAgICBbNTAgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfSFRNTF9OT19FWFBSRVNTSU9OICovXTogYHYtaHRtbCBpcyBtaXNzaW5nIGV4cHJlc3Npb24uYCxcclxuICAgIFs1MSAvKiBET01FcnJvckNvZGVzLlhfVl9IVE1MX1dJVEhfQ0hJTERSRU4gKi9dOiBgdi1odG1sIHdpbGwgb3ZlcnJpZGUgZWxlbWVudCBjaGlsZHJlbi5gLFxyXG4gICAgWzUyIC8qIERPTUVycm9yQ29kZXMuWF9WX1RFWFRfTk9fRVhQUkVTU0lPTiAqL106IGB2LXRleHQgaXMgbWlzc2luZyBleHByZXNzaW9uLmAsXHJcbiAgICBbNTMgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfVEVYVF9XSVRIX0NISUxEUkVOICovXTogYHYtdGV4dCB3aWxsIG92ZXJyaWRlIGVsZW1lbnQgY2hpbGRyZW4uYCxcclxuICAgIFs1NCAvKiBET01FcnJvckNvZGVzLlhfVl9NT0RFTF9PTl9JTlZBTElEX0VMRU1FTlQgKi9dOiBgdi1tb2RlbCBjYW4gb25seSBiZSB1c2VkIG9uIDxpbnB1dD4sIDx0ZXh0YXJlYT4gYW5kIDxzZWxlY3Q+IGVsZW1lbnRzLmAsXHJcbiAgICBbNTUgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfTU9ERUxfQVJHX09OX0VMRU1FTlQgKi9dOiBgdi1tb2RlbCBhcmd1bWVudCBpcyBub3Qgc3VwcG9ydGVkIG9uIHBsYWluIGVsZW1lbnRzLmAsXHJcbiAgICBbNTYgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfTU9ERUxfT05fRklMRV9JTlBVVF9FTEVNRU5UICovXTogYHYtbW9kZWwgY2Fubm90IGJlIHVzZWQgb24gZmlsZSBpbnB1dHMgc2luY2UgdGhleSBhcmUgcmVhZC1vbmx5LiBVc2UgYSB2LW9uOmNoYW5nZSBsaXN0ZW5lciBpbnN0ZWFkLmAsXHJcbiAgICBbNTcgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfTU9ERUxfVU5ORUNFU1NBUllfVkFMVUUgKi9dOiBgVW5uZWNlc3NhcnkgdmFsdWUgYmluZGluZyB1c2VkIGFsb25nc2lkZSB2LW1vZGVsLiBJdCB3aWxsIGludGVyZmVyZSB3aXRoIHYtbW9kZWwncyBiZWhhdmlvci5gLFxyXG4gICAgWzU4IC8qIERPTUVycm9yQ29kZXMuWF9WX1NIT1dfTk9fRVhQUkVTU0lPTiAqL106IGB2LXNob3cgaXMgbWlzc2luZyBleHByZXNzaW9uLmAsXHJcbiAgICBbNTkgLyogRE9NRXJyb3JDb2Rlcy5YX1RSQU5TSVRJT05fSU5WQUxJRF9DSElMRFJFTiAqL106IGA8VHJhbnNpdGlvbj4gZXhwZWN0cyBleGFjdGx5IG9uZSBjaGlsZCBlbGVtZW50IG9yIGNvbXBvbmVudC5gLFxyXG4gICAgWzYwIC8qIERPTUVycm9yQ29kZXMuWF9JR05PUkVEX1NJREVfRUZGRUNUX1RBRyAqL106IGBUYWdzIHdpdGggc2lkZSBlZmZlY3QgKDxzY3JpcHQ+IGFuZCA8c3R5bGU+KSBhcmUgaWdub3JlZCBpbiBjbGllbnQgY29tcG9uZW50IHRlbXBsYXRlcy5gXHJcbn07XG5cbmNvbnN0IHRyYW5zZm9ybVZIdG1sID0gKGRpciwgbm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgY29uc3QgeyBleHAsIGxvYyB9ID0gZGlyO1xyXG4gICAgaWYgKCFleHApIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig1MCAvKiBET01FcnJvckNvZGVzLlhfVl9IVE1MX05PX0VYUFJFU1NJT04gKi8sIGxvYykpO1xyXG4gICAgfVxyXG4gICAgaWYgKG5vZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNTEgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfSFRNTF9XSVRIX0NISUxEUkVOICovLCBsb2MpKTtcclxuICAgICAgICBub2RlLmNoaWxkcmVuLmxlbmd0aCA9IDA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHByb3BzOiBbXHJcbiAgICAgICAgICAgIGNyZWF0ZU9iamVjdFByb3BlcnR5KGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYGlubmVySFRNTGAsIHRydWUsIGxvYyksIGV4cCB8fCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCcnLCB0cnVlKSlcclxuICAgICAgICBdXHJcbiAgICB9O1xyXG59O1xuXG5jb25zdCB0cmFuc2Zvcm1WVGV4dCA9IChkaXIsIG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGNvbnN0IHsgZXhwLCBsb2MgfSA9IGRpcjtcclxuICAgIGlmICghZXhwKSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNTIgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfVEVYVF9OT19FWFBSRVNTSU9OICovLCBsb2MpKTtcclxuICAgIH1cclxuICAgIGlmIChub2RlLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDUzIC8qIERPTUVycm9yQ29kZXMuWF9WX1RFWFRfV0lUSF9DSElMRFJFTiAqLywgbG9jKSk7XHJcbiAgICAgICAgbm9kZS5jaGlsZHJlbi5sZW5ndGggPSAwO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBwcm9wczogW1xyXG4gICAgICAgICAgICBjcmVhdGVPYmplY3RQcm9wZXJ0eShjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGB0ZXh0Q29udGVudGAsIHRydWUpLCBleHBcclxuICAgICAgICAgICAgICAgID8gZ2V0Q29uc3RhbnRUeXBlKGV4cCwgY29udGV4dCkgPiAwXHJcbiAgICAgICAgICAgICAgICAgICAgPyBleHBcclxuICAgICAgICAgICAgICAgICAgICA6IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyU3RyaW5nKFRPX0RJU1BMQVlfU1RSSU5HKSwgW2V4cF0sIGxvYylcclxuICAgICAgICAgICAgICAgIDogY3JlYXRlU2ltcGxlRXhwcmVzc2lvbignJywgdHJ1ZSkpXHJcbiAgICAgICAgXVxyXG4gICAgfTtcclxufTtcblxuY29uc3QgdHJhbnNmb3JtTW9kZWwgPSAoZGlyLCBub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBjb25zdCBiYXNlUmVzdWx0ID0gdHJhbnNmb3JtTW9kZWwkMShkaXIsIG5vZGUsIGNvbnRleHQpO1xyXG4gICAgLy8gYmFzZSB0cmFuc2Zvcm0gaGFzIGVycm9ycyBPUiBjb21wb25lbnQgdi1tb2RlbCAob25seSBuZWVkIHByb3BzKVxyXG4gICAgaWYgKCFiYXNlUmVzdWx0LnByb3BzLmxlbmd0aCB8fCBub2RlLnRhZ1R5cGUgPT09IDEgLyogRWxlbWVudFR5cGVzLkNPTVBPTkVOVCAqLykge1xyXG4gICAgICAgIHJldHVybiBiYXNlUmVzdWx0O1xyXG4gICAgfVxyXG4gICAgaWYgKGRpci5hcmcpIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig1NSAvKiBET01FcnJvckNvZGVzLlhfVl9NT0RFTF9BUkdfT05fRUxFTUVOVCAqLywgZGlyLmFyZy5sb2MpKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGNoZWNrRHVwbGljYXRlZFZhbHVlKCkge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gZmluZFByb3Aobm9kZSwgJ3ZhbHVlJyk7XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDU3IC8qIERPTUVycm9yQ29kZXMuWF9WX01PREVMX1VOTkVDRVNTQVJZX1ZBTFVFICovLCB2YWx1ZS5sb2MpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IHRhZyB9ID0gbm9kZTtcclxuICAgIGNvbnN0IGlzQ3VzdG9tRWxlbWVudCA9IGNvbnRleHQuaXNDdXN0b21FbGVtZW50KHRhZyk7XHJcbiAgICBpZiAodGFnID09PSAnaW5wdXQnIHx8XHJcbiAgICAgICAgdGFnID09PSAndGV4dGFyZWEnIHx8XHJcbiAgICAgICAgdGFnID09PSAnc2VsZWN0JyB8fFxyXG4gICAgICAgIGlzQ3VzdG9tRWxlbWVudCkge1xyXG4gICAgICAgIGxldCBkaXJlY3RpdmVUb1VzZSA9IFZfTU9ERUxfVEVYVDtcclxuICAgICAgICBsZXQgaXNJbnZhbGlkVHlwZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0YWcgPT09ICdpbnB1dCcgfHwgaXNDdXN0b21FbGVtZW50KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBmaW5kUHJvcChub2RlLCBgdHlwZWApO1xyXG4gICAgICAgICAgICBpZiAodHlwZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gOnR5cGU9XCJmb29cIlxyXG4gICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZVRvVXNlID0gVl9NT0RFTF9EWU5BTUlDO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZS52YWx1ZS5jb250ZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JhZGlvJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZVRvVXNlID0gVl9NT0RFTF9SQURJTztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjaGVja2JveCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVUb1VzZSA9IFZfTU9ERUxfQ0hFQ0tCT1g7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZmlsZSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ludmFsaWRUeXBlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDU2IC8qIERPTUVycm9yQ29kZXMuWF9WX01PREVMX09OX0ZJTEVfSU5QVVRfRUxFTUVOVCAqLywgZGlyLmxvYykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0ZXh0IHR5cGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBjaGVja0R1cGxpY2F0ZWRWYWx1ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGhhc0R5bmFtaWNLZXlWQmluZChub2RlKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gZWxlbWVudCBoYXMgYmluZGluZ3Mgd2l0aCBkeW5hbWljIGtleXMsIHdoaWNoIGNhbiBwb3NzaWJseSBjb250YWluXHJcbiAgICAgICAgICAgICAgICAvLyBcInR5cGVcIi5cclxuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZVRvVXNlID0gVl9NT0RFTF9EWU5BTUlDO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gdGV4dCB0eXBlXHJcbiAgICAgICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgY2hlY2tEdXBsaWNhdGVkVmFsdWUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0YWcgPT09ICdzZWxlY3QnKSB7XHJcbiAgICAgICAgICAgIGRpcmVjdGl2ZVRvVXNlID0gVl9NT0RFTF9TRUxFQ1Q7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyB0ZXh0YXJlYVxyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgY2hlY2tEdXBsaWNhdGVkVmFsdWUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaW5qZWN0IHJ1bnRpbWUgZGlyZWN0aXZlXHJcbiAgICAgICAgLy8gYnkgcmV0dXJuaW5nIHRoZSBoZWxwZXIgc3ltYm9sIHZpYSBuZWVkUnVudGltZVxyXG4gICAgICAgIC8vIHRoZSBpbXBvcnQgd2lsbCByZXBsYWNlZCBhIHJlc29sdmVEaXJlY3RpdmUgY2FsbC5cclxuICAgICAgICBpZiAoIWlzSW52YWxpZFR5cGUpIHtcclxuICAgICAgICAgICAgYmFzZVJlc3VsdC5uZWVkUnVudGltZSA9IGNvbnRleHQuaGVscGVyKGRpcmVjdGl2ZVRvVXNlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig1NCAvKiBET01FcnJvckNvZGVzLlhfVl9NT0RFTF9PTl9JTlZBTElEX0VMRU1FTlQgKi8sIGRpci5sb2MpKTtcclxuICAgIH1cclxuICAgIC8vIG5hdGl2ZSB2bW9kZWwgZG9lc24ndCBuZWVkIHRoZSBgbW9kZWxWYWx1ZWAgcHJvcHMgc2luY2UgdGhleSBhcmUgYWxzb1xyXG4gICAgLy8gcGFzc2VkIHRvIHRoZSBydW50aW1lIGFzIGBiaW5kaW5nLnZhbHVlYC4gcmVtb3ZpbmcgaXQgcmVkdWNlcyBjb2RlIHNpemUuXHJcbiAgICBiYXNlUmVzdWx0LnByb3BzID0gYmFzZVJlc3VsdC5wcm9wcy5maWx0ZXIocCA9PiAhKHAua2V5LnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovICYmXHJcbiAgICAgICAgcC5rZXkuY29udGVudCA9PT0gJ21vZGVsVmFsdWUnKSk7XHJcbiAgICByZXR1cm4gYmFzZVJlc3VsdDtcclxufTtcblxuY29uc3QgaXNFdmVudE9wdGlvbk1vZGlmaWVyID0gLyojX19QVVJFX18qLyBtYWtlTWFwKGBwYXNzaXZlLG9uY2UsY2FwdHVyZWApO1xyXG5jb25zdCBpc05vbktleU1vZGlmaWVyID0gLyojX19QVVJFX18qLyBtYWtlTWFwKFxyXG4vLyBldmVudCBwcm9wYWdhdGlvbiBtYW5hZ2VtZW50XHJcbmBzdG9wLHByZXZlbnQsc2VsZixgICtcclxuICAgIC8vIHN5c3RlbSBtb2RpZmllcnMgKyBleGFjdFxyXG4gICAgYGN0cmwsc2hpZnQsYWx0LG1ldGEsZXhhY3QsYCArXHJcbiAgICAvLyBtb3VzZVxyXG4gICAgYG1pZGRsZWApO1xyXG4vLyBsZWZ0ICYgcmlnaHQgY291bGQgYmUgbW91c2Ugb3Iga2V5IG1vZGlmaWVycyBiYXNlZCBvbiBldmVudCB0eXBlXHJcbmNvbnN0IG1heWJlS2V5TW9kaWZpZXIgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoJ2xlZnQscmlnaHQnKTtcclxuY29uc3QgaXNLZXlib2FyZEV2ZW50ID0gLyojX19QVVJFX18qLyBtYWtlTWFwKGBvbmtleXVwLG9ua2V5ZG93bixvbmtleXByZXNzYCwgdHJ1ZSk7XHJcbmNvbnN0IHJlc29sdmVNb2RpZmllcnMgPSAoa2V5LCBtb2RpZmllcnMsIGNvbnRleHQsIGxvYykgPT4ge1xyXG4gICAgY29uc3Qga2V5TW9kaWZpZXJzID0gW107XHJcbiAgICBjb25zdCBub25LZXlNb2RpZmllcnMgPSBbXTtcclxuICAgIGNvbnN0IGV2ZW50T3B0aW9uTW9kaWZpZXJzID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vZGlmaWVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IG1vZGlmaWVyID0gbW9kaWZpZXJzW2ldO1xyXG4gICAgICAgIGlmIChtb2RpZmllciA9PT0gJ25hdGl2ZScgJiZcclxuICAgICAgICAgICAgY2hlY2tDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfVl9PTl9OQVRJVkVcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfVl9PTl9OQVRJVkUgKi8sIGNvbnRleHQsIGxvYykpIHtcclxuICAgICAgICAgICAgZXZlbnRPcHRpb25Nb2RpZmllcnMucHVzaChtb2RpZmllcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlzRXZlbnRPcHRpb25Nb2RpZmllcihtb2RpZmllcikpIHtcclxuICAgICAgICAgICAgLy8gZXZlbnRPcHRpb25Nb2RpZmllcnM6IG1vZGlmaWVycyBmb3IgYWRkRXZlbnRMaXN0ZW5lcigpIG9wdGlvbnMsXHJcbiAgICAgICAgICAgIC8vIGUuZy4gLnBhc3NpdmUgJiAuY2FwdHVyZVxyXG4gICAgICAgICAgICBldmVudE9wdGlvbk1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHJ1bnRpbWVNb2RpZmllcnM6IG1vZGlmaWVycyB0aGF0IG5lZWRzIHJ1bnRpbWUgZ3VhcmRzXHJcbiAgICAgICAgICAgIGlmIChtYXliZUtleU1vZGlmaWVyKG1vZGlmaWVyKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzU3RhdGljRXhwKGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNLZXlib2FyZEV2ZW50KGtleS5jb250ZW50KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXlNb2RpZmllcnMucHVzaChtb2RpZmllcik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBub25LZXlNb2RpZmllcnMucHVzaChtb2RpZmllcik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAga2V5TW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIG5vbktleU1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChpc05vbktleU1vZGlmaWVyKG1vZGlmaWVyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5vbktleU1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGtleU1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAga2V5TW9kaWZpZXJzLFxyXG4gICAgICAgIG5vbktleU1vZGlmaWVycyxcclxuICAgICAgICBldmVudE9wdGlvbk1vZGlmaWVyc1xyXG4gICAgfTtcclxufTtcclxuY29uc3QgdHJhbnNmb3JtQ2xpY2sgPSAoa2V5LCBldmVudCkgPT4ge1xyXG4gICAgY29uc3QgaXNTdGF0aWNDbGljayA9IGlzU3RhdGljRXhwKGtleSkgJiYga2V5LmNvbnRlbnQudG9Mb3dlckNhc2UoKSA9PT0gJ29uY2xpY2snO1xyXG4gICAgcmV0dXJuIGlzU3RhdGljQ2xpY2tcclxuICAgICAgICA/IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oZXZlbnQsIHRydWUpXHJcbiAgICAgICAgOiBrZXkudHlwZSAhPT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi9cclxuICAgICAgICAgICAgPyBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW1xyXG4gICAgICAgICAgICAgICAgYChgLFxyXG4gICAgICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAgICAgYCkgPT09IFwib25DbGlja1wiID8gXCIke2V2ZW50fVwiIDogKGAsXHJcbiAgICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgICBgKWBcclxuICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgOiBrZXk7XHJcbn07XHJcbmNvbnN0IHRyYW5zZm9ybU9uID0gKGRpciwgbm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgcmV0dXJuIHRyYW5zZm9ybU9uJDEoZGlyLCBub2RlLCBjb250ZXh0LCBiYXNlUmVzdWx0ID0+IHtcclxuICAgICAgICBjb25zdCB7IG1vZGlmaWVycyB9ID0gZGlyO1xyXG4gICAgICAgIGlmICghbW9kaWZpZXJzLmxlbmd0aClcclxuICAgICAgICAgICAgcmV0dXJuIGJhc2VSZXN1bHQ7XHJcbiAgICAgICAgbGV0IHsga2V5LCB2YWx1ZTogaGFuZGxlckV4cCB9ID0gYmFzZVJlc3VsdC5wcm9wc1swXTtcclxuICAgICAgICBjb25zdCB7IGtleU1vZGlmaWVycywgbm9uS2V5TW9kaWZpZXJzLCBldmVudE9wdGlvbk1vZGlmaWVycyB9ID0gcmVzb2x2ZU1vZGlmaWVycyhrZXksIG1vZGlmaWVycywgY29udGV4dCwgZGlyLmxvYyk7XHJcbiAgICAgICAgLy8gbm9ybWFsaXplIGNsaWNrLnJpZ2h0IGFuZCBjbGljay5taWRkbGUgc2luY2UgdGhleSBkb24ndCBhY3R1YWxseSBmaXJlXHJcbiAgICAgICAgaWYgKG5vbktleU1vZGlmaWVycy5pbmNsdWRlcygncmlnaHQnKSkge1xyXG4gICAgICAgICAgICBrZXkgPSB0cmFuc2Zvcm1DbGljayhrZXksIGBvbkNvbnRleHRtZW51YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChub25LZXlNb2RpZmllcnMuaW5jbHVkZXMoJ21pZGRsZScpKSB7XHJcbiAgICAgICAgICAgIGtleSA9IHRyYW5zZm9ybUNsaWNrKGtleSwgYG9uTW91c2V1cGApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobm9uS2V5TW9kaWZpZXJzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBoYW5kbGVyRXhwID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoVl9PTl9XSVRIX01PRElGSUVSUyksIFtcclxuICAgICAgICAgICAgICAgIGhhbmRsZXJFeHAsXHJcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShub25LZXlNb2RpZmllcnMpXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoa2V5TW9kaWZpZXJzLmxlbmd0aCAmJlxyXG4gICAgICAgICAgICAvLyBpZiBldmVudCBuYW1lIGlzIGR5bmFtaWMsIGFsd2F5cyB3cmFwIHdpdGgga2V5cyBndWFyZFxyXG4gICAgICAgICAgICAoIWlzU3RhdGljRXhwKGtleSkgfHwgaXNLZXlib2FyZEV2ZW50KGtleS5jb250ZW50KSkpIHtcclxuICAgICAgICAgICAgaGFuZGxlckV4cCA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKFZfT05fV0lUSF9LRVlTKSwgW1xyXG4gICAgICAgICAgICAgICAgaGFuZGxlckV4cCxcclxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGtleU1vZGlmaWVycylcclxuICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChldmVudE9wdGlvbk1vZGlmaWVycy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgY29uc3QgbW9kaWZpZXJQb3N0Zml4ID0gZXZlbnRPcHRpb25Nb2RpZmllcnMubWFwKGNhcGl0YWxpemUpLmpvaW4oJycpO1xyXG4gICAgICAgICAgICBrZXkgPSBpc1N0YXRpY0V4cChrZXkpXHJcbiAgICAgICAgICAgICAgICA/IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYCR7a2V5LmNvbnRlbnR9JHttb2RpZmllclBvc3RmaXh9YCwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgIDogY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFtgKGAsIGtleSwgYCkgKyBcIiR7bW9kaWZpZXJQb3N0Zml4fVwiYF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBwcm9wczogW2NyZWF0ZU9iamVjdFByb3BlcnR5KGtleSwgaGFuZGxlckV4cCldXHJcbiAgICAgICAgfTtcclxuICAgIH0pO1xyXG59O1xuXG5jb25zdCB0cmFuc2Zvcm1TaG93ID0gKGRpciwgbm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgY29uc3QgeyBleHAsIGxvYyB9ID0gZGlyO1xyXG4gICAgaWYgKCFleHApIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig1OCAvKiBET01FcnJvckNvZGVzLlhfVl9TSE9XX05PX0VYUFJFU1NJT04gKi8sIGxvYykpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBwcm9wczogW10sXHJcbiAgICAgICAgbmVlZFJ1bnRpbWU6IGNvbnRleHQuaGVscGVyKFZfU0hPVylcclxuICAgIH07XHJcbn07XG5cbmNvbnN0IHRyYW5zZm9ybVRyYW5zaXRpb24gPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgIG5vZGUudGFnVHlwZSA9PT0gMSAvKiBFbGVtZW50VHlwZXMuQ09NUE9ORU5UICovKSB7XHJcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gY29udGV4dC5pc0J1aWx0SW5Db21wb25lbnQobm9kZS50YWcpO1xyXG4gICAgICAgIGlmIChjb21wb25lbnQgPT09IFRSQU5TSVRJT04pIHtcclxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghbm9kZS5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyB3YXJuIG11bHRpcGxlIHRyYW5zaXRpb24gY2hpbGRyZW5cclxuICAgICAgICAgICAgICAgIGlmIChoYXNNdWx0aXBsZUNoaWxkcmVuKG5vZGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNTkgLyogRE9NRXJyb3JDb2Rlcy5YX1RSQU5TSVRJT05fSU5WQUxJRF9DSElMRFJFTiAqLywge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogbm9kZS5jaGlsZHJlblswXS5sb2Muc3RhcnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbm9kZS5jaGlsZHJlbltub2RlLmNoaWxkcmVuLmxlbmd0aCAtIDFdLmxvYy5lbmQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogJydcclxuICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiBpdCdzIHMgc2luZ2xlIGNoaWxkIHcvIHYtc2hvd1xyXG4gICAgICAgICAgICAgICAgLy8gaWYgeWVzLCBpbmplY3QgXCJwZXJzaXN0ZWQ6IHRydWVcIiB0byB0aGUgdHJhbnNpdGlvbiBwcm9wc1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBub2RlLmNoaWxkcmVuWzBdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHAgb2YgY2hpbGQucHJvcHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovICYmIHAubmFtZSA9PT0gJ3Nob3cnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLnByb3BzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IDYgLyogTm9kZVR5cGVzLkFUVFJJQlVURSAqLyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGVyc2lzdGVkJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYzogbm9kZS5sb2NcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuZnVuY3Rpb24gaGFzTXVsdGlwbGVDaGlsZHJlbihub2RlKSB7XHJcbiAgICAvLyAjMTM1MiBmaWx0ZXIgb3V0IHBvdGVudGlhbCBjb21tZW50IG5vZGVzLlxyXG4gICAgY29uc3QgY2hpbGRyZW4gPSAobm9kZS5jaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4uZmlsdGVyKGMgPT4gYy50eXBlICE9PSAzIC8qIE5vZGVUeXBlcy5DT01NRU5UICovICYmXHJcbiAgICAgICAgIShjLnR5cGUgPT09IDIgLyogTm9kZVR5cGVzLlRFWFQgKi8gJiYgIWMuY29udGVudC50cmltKCkpKSk7XHJcbiAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuWzBdO1xyXG4gICAgcmV0dXJuIChjaGlsZHJlbi5sZW5ndGggIT09IDEgfHxcclxuICAgICAgICBjaGlsZC50eXBlID09PSAxMSAvKiBOb2RlVHlwZXMuRk9SICovIHx8XHJcbiAgICAgICAgKGNoaWxkLnR5cGUgPT09IDkgLyogTm9kZVR5cGVzLklGICovICYmIGNoaWxkLmJyYW5jaGVzLnNvbWUoaGFzTXVsdGlwbGVDaGlsZHJlbikpKTtcclxufVxuXG5jb25zdCBpZ25vcmVTaWRlRWZmZWN0VGFncyA9IChub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgbm9kZS50YWdUeXBlID09PSAwIC8qIEVsZW1lbnRUeXBlcy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgKG5vZGUudGFnID09PSAnc2NyaXB0JyB8fCBub2RlLnRhZyA9PT0gJ3N0eWxlJykpIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig2MCAvKiBET01FcnJvckNvZGVzLlhfSUdOT1JFRF9TSURFX0VGRkVDVF9UQUcgKi8sIG5vZGUubG9jKSk7XHJcbiAgICAgICAgY29udGV4dC5yZW1vdmVOb2RlKCk7XHJcbiAgICB9XHJcbn07XG5cbmNvbnN0IERPTU5vZGVUcmFuc2Zvcm1zID0gW1xyXG4gICAgdHJhbnNmb3JtU3R5bGUsXHJcbiAgICAuLi4oKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gW3RyYW5zZm9ybVRyYW5zaXRpb25dIDogW10pXHJcbl07XHJcbmNvbnN0IERPTURpcmVjdGl2ZVRyYW5zZm9ybXMgPSB7XHJcbiAgICBjbG9hazogbm9vcERpcmVjdGl2ZVRyYW5zZm9ybSxcclxuICAgIGh0bWw6IHRyYW5zZm9ybVZIdG1sLFxyXG4gICAgdGV4dDogdHJhbnNmb3JtVlRleHQsXHJcbiAgICBtb2RlbDogdHJhbnNmb3JtTW9kZWwsXHJcbiAgICBvbjogdHJhbnNmb3JtT24sXHJcbiAgICBzaG93OiB0cmFuc2Zvcm1TaG93XHJcbn07XHJcbmZ1bmN0aW9uIGNvbXBpbGUodGVtcGxhdGUsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgcmV0dXJuIGJhc2VDb21waWxlKHRlbXBsYXRlLCBleHRlbmQoe30sIHBhcnNlck9wdGlvbnMsIG9wdGlvbnMsIHtcclxuICAgICAgICBub2RlVHJhbnNmb3JtczogW1xyXG4gICAgICAgICAgICAvLyBpZ25vcmUgPHNjcmlwdD4gYW5kIDx0YWc+XHJcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgbm90IHB1dCBpbnNpZGUgRE9NTm9kZVRyYW5zZm9ybXMgYmVjYXVzZSB0aGF0IGxpc3QgaXMgdXNlZFxyXG4gICAgICAgICAgICAvLyBieSBjb21waWxlci1zc3IgdG8gZ2VuZXJhdGUgdm5vZGUgZmFsbGJhY2sgYnJhbmNoZXNcclxuICAgICAgICAgICAgaWdub3JlU2lkZUVmZmVjdFRhZ3MsXHJcbiAgICAgICAgICAgIC4uLkRPTU5vZGVUcmFuc2Zvcm1zLFxyXG4gICAgICAgICAgICAuLi4ob3B0aW9ucy5ub2RlVHJhbnNmb3JtcyB8fCBbXSlcclxuICAgICAgICBdLFxyXG4gICAgICAgIGRpcmVjdGl2ZVRyYW5zZm9ybXM6IGV4dGVuZCh7fSwgRE9NRGlyZWN0aXZlVHJhbnNmb3Jtcywgb3B0aW9ucy5kaXJlY3RpdmVUcmFuc2Zvcm1zIHx8IHt9KSxcclxuICAgICAgICB0cmFuc2Zvcm1Ib2lzdDogbnVsbCBcclxuICAgIH0pKTtcclxufVxyXG5mdW5jdGlvbiBwYXJzZSh0ZW1wbGF0ZSwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICByZXR1cm4gYmFzZVBhcnNlKHRlbXBsYXRlLCBleHRlbmQoe30sIHBhcnNlck9wdGlvbnMsIG9wdGlvbnMpKTtcclxufVxuXG5leHBvcnQgeyBET01EaXJlY3RpdmVUcmFuc2Zvcm1zLCBET01Ob2RlVHJhbnNmb3JtcywgVFJBTlNJVElPTiwgVFJBTlNJVElPTl9HUk9VUCwgVl9NT0RFTF9DSEVDS0JPWCwgVl9NT0RFTF9EWU5BTUlDLCBWX01PREVMX1JBRElPLCBWX01PREVMX1NFTEVDVCwgVl9NT0RFTF9URVhULCBWX09OX1dJVEhfS0VZUywgVl9PTl9XSVRIX01PRElGSUVSUywgVl9TSE9XLCBjb21waWxlLCBjcmVhdGVET01Db21waWxlckVycm9yLCBwYXJzZSwgcGFyc2VyT3B0aW9ucywgdHJhbnNmb3JtU3R5bGUgfTtcbiIsImV4cG9ydCBjb25zdCBIT09LX1NFVFVQID0gJ2RldnRvb2xzLXBsdWdpbjpzZXR1cCc7XG5leHBvcnQgY29uc3QgSE9PS19QTFVHSU5fU0VUVElOR1NfU0VUID0gJ3BsdWdpbjpzZXR0aW5nczpzZXQnO1xuIiwiZXhwb3J0IGZ1bmN0aW9uIGdldERldnRvb2xzR2xvYmFsSG9vaygpIHtcbiAgICByZXR1cm4gZ2V0VGFyZ2V0KCkuX19WVUVfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRUYXJnZXQoKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgID8gd2luZG93XG4gICAgICAgIDogdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgID8gZ2xvYmFsXG4gICAgICAgICAgICA6IHt9O1xufVxuZXhwb3J0IGNvbnN0IGlzUHJveHlBdmFpbGFibGUgPSB0eXBlb2YgUHJveHkgPT09ICdmdW5jdGlvbic7XG4iLCJpbXBvcnQgeyBnZXRUYXJnZXQsIGdldERldnRvb2xzR2xvYmFsSG9vaywgaXNQcm94eUF2YWlsYWJsZSB9IGZyb20gJy4vZW52LmpzJztcbmltcG9ydCB7IEhPT0tfU0VUVVAgfSBmcm9tICcuL2NvbnN0LmpzJztcbmltcG9ydCB7IEFwaVByb3h5IH0gZnJvbSAnLi9wcm94eS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaS9pbmRleC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3BsdWdpbi5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3RpbWUuanMnO1xuZXhwb3J0IGZ1bmN0aW9uIHNldHVwRGV2dG9vbHNQbHVnaW4ocGx1Z2luRGVzY3JpcHRvciwgc2V0dXBGbikge1xuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBwbHVnaW5EZXNjcmlwdG9yO1xuICAgIGNvbnN0IHRhcmdldCA9IGdldFRhcmdldCgpO1xuICAgIGNvbnN0IGhvb2sgPSBnZXREZXZ0b29sc0dsb2JhbEhvb2soKTtcbiAgICBjb25zdCBlbmFibGVQcm94eSA9IGlzUHJveHlBdmFpbGFibGUgJiYgZGVzY3JpcHRvci5lbmFibGVFYXJseVByb3h5O1xuICAgIGlmIChob29rICYmICh0YXJnZXQuX19WVUVfREVWVE9PTFNfUExVR0lOX0FQSV9BVkFJTEFCTEVfXyB8fCAhZW5hYmxlUHJveHkpKSB7XG4gICAgICAgIGhvb2suZW1pdChIT09LX1NFVFVQLCBwbHVnaW5EZXNjcmlwdG9yLCBzZXR1cEZuKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IHByb3h5ID0gZW5hYmxlUHJveHkgPyBuZXcgQXBpUHJveHkoZGVzY3JpcHRvciwgaG9vaykgOiBudWxsO1xuICAgICAgICBjb25zdCBsaXN0ID0gdGFyZ2V0Ll9fVlVFX0RFVlRPT0xTX1BMVUdJTlNfXyA9IHRhcmdldC5fX1ZVRV9ERVZUT09MU19QTFVHSU5TX18gfHwgW107XG4gICAgICAgIGxpc3QucHVzaCh7XG4gICAgICAgICAgICBwbHVnaW5EZXNjcmlwdG9yOiBkZXNjcmlwdG9yLFxuICAgICAgICAgICAgc2V0dXBGbixcbiAgICAgICAgICAgIHByb3h5LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHByb3h5KVxuICAgICAgICAgICAgc2V0dXBGbihwcm94eS5wcm94aWVkVGFyZ2V0KTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBIT09LX1BMVUdJTl9TRVRUSU5HU19TRVQgfSBmcm9tICcuL2NvbnN0LmpzJztcbmltcG9ydCB7IG5vdyB9IGZyb20gJy4vdGltZS5qcyc7XG5leHBvcnQgY2xhc3MgQXBpUHJveHkge1xuICAgIGNvbnN0cnVjdG9yKHBsdWdpbiwgaG9vaykge1xuICAgICAgICB0aGlzLnRhcmdldCA9IG51bGw7XG4gICAgICAgIHRoaXMudGFyZ2V0UXVldWUgPSBbXTtcbiAgICAgICAgdGhpcy5vblF1ZXVlID0gW107XG4gICAgICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICAgICAgICB0aGlzLmhvb2sgPSBob29rO1xuICAgICAgICBjb25zdCBkZWZhdWx0U2V0dGluZ3MgPSB7fTtcbiAgICAgICAgaWYgKHBsdWdpbi5zZXR0aW5ncykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpZCBpbiBwbHVnaW4uc2V0dGluZ3MpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gcGx1Z2luLnNldHRpbmdzW2lkXTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0U2V0dGluZ3NbaWRdID0gaXRlbS5kZWZhdWx0VmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbG9jYWxTZXR0aW5nc1NhdmVJZCA9IGBfX3Z1ZS1kZXZ0b29scy1wbHVnaW4tc2V0dGluZ3NfXyR7cGx1Z2luLmlkfWA7XG4gICAgICAgIGxldCBjdXJyZW50U2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0U2V0dGluZ3MpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmF3ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTZXR0aW5nc1NhdmVJZCk7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShyYXcpO1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihjdXJyZW50U2V0dGluZ3MsIGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBub29wXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mYWxsYmFja3MgPSB7XG4gICAgICAgICAgICBnZXRTZXR0aW5ncygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFNldHRpbmdzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldFNldHRpbmdzKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obG9jYWxTZXR0aW5nc1NhdmVJZCwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gbm9vcFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjdXJyZW50U2V0dGluZ3MgPSB2YWx1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBub3coKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vdygpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGhvb2spIHtcbiAgICAgICAgICAgIGhvb2sub24oSE9PS19QTFVHSU5fU0VUVElOR1NfU0VULCAocGx1Z2luSWQsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHBsdWdpbklkID09PSB0aGlzLnBsdWdpbi5pZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZhbGxiYWNrcy5zZXRTZXR0aW5ncyh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcm94aWVkT24gPSBuZXcgUHJveHkoe30sIHtcbiAgICAgICAgICAgIGdldDogKF90YXJnZXQsIHByb3ApID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGFyZ2V0Lm9uW3Byb3BdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uUXVldWUucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBwcm9wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5wcm94aWVkVGFyZ2V0ID0gbmV3IFByb3h5KHt9LCB7XG4gICAgICAgICAgICBnZXQ6IChfdGFyZ2V0LCBwcm9wKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRhcmdldFtwcm9wXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocHJvcCA9PT0gJ29uJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm94aWVkT247XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKE9iamVjdC5rZXlzKHRoaXMuZmFsbGJhY2tzKS5pbmNsdWRlcyhwcm9wKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0UXVldWUucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBwcm9wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZTogKCkgPT4geyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mYWxsYmFja3NbcHJvcF0oLi4uYXJncyk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhcmdldFF1ZXVlLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IHByb3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgc2V0UmVhbFRhcmdldCh0YXJnZXQpIHtcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLm9uUXVldWUpIHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0Lm9uW2l0ZW0ubWV0aG9kXSguLi5pdGVtLmFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLnRhcmdldFF1ZXVlKSB7XG4gICAgICAgICAgICBpdGVtLnJlc29sdmUoYXdhaXQgdGhpcy50YXJnZXRbaXRlbS5tZXRob2RdKC4uLml0ZW0uYXJncykpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwibGV0IHN1cHBvcnRlZDtcbmxldCBwZXJmO1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGVyZm9ybWFuY2VTdXBwb3J0ZWQoKSB7XG4gICAgdmFyIF9hO1xuICAgIGlmIChzdXBwb3J0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gc3VwcG9ydGVkO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LnBlcmZvcm1hbmNlKSB7XG4gICAgICAgIHN1cHBvcnRlZCA9IHRydWU7XG4gICAgICAgIHBlcmYgPSB3aW5kb3cucGVyZm9ybWFuY2U7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnICYmICgoX2EgPSBnbG9iYWwucGVyZl9ob29rcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnBlcmZvcm1hbmNlKSkge1xuICAgICAgICBzdXBwb3J0ZWQgPSB0cnVlO1xuICAgICAgICBwZXJmID0gZ2xvYmFsLnBlcmZfaG9va3MucGVyZm9ybWFuY2U7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzdXBwb3J0ZWQgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cHBvcnRlZDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBub3coKSB7XG4gICAgcmV0dXJuIGlzUGVyZm9ybWFuY2VTdXBwb3J0ZWQoKSA/IHBlcmYubm93KCkgOiBEYXRlLm5vdygpO1xufVxuIiwiaW1wb3J0IHsgZXh0ZW5kLCBpc0FycmF5LCBpc01hcCwgaXNJbnRlZ2VyS2V5LCBoYXNPd24sIGlzU3ltYm9sLCBpc09iamVjdCwgaGFzQ2hhbmdlZCwgbWFrZU1hcCwgY2FwaXRhbGl6ZSwgdG9SYXdUeXBlLCBkZWYsIGlzRnVuY3Rpb24sIE5PT1AgfSBmcm9tICdAdnVlL3NoYXJlZCc7XG5cbmZ1bmN0aW9uIHdhcm4obXNnLCAuLi5hcmdzKSB7XHJcbiAgICBjb25zb2xlLndhcm4oYFtWdWUgd2Fybl0gJHttc2d9YCwgLi4uYXJncyk7XHJcbn1cblxubGV0IGFjdGl2ZUVmZmVjdFNjb3BlO1xyXG5jbGFzcyBFZmZlY3RTY29wZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihkZXRhY2hlZCA9IGZhbHNlKSB7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQGludGVybmFsXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEBpbnRlcm5hbFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHRoaXMuZWZmZWN0cyA9IFtdO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEBpbnRlcm5hbFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHRoaXMuY2xlYW51cHMgPSBbXTtcclxuICAgICAgICBpZiAoIWRldGFjaGVkICYmIGFjdGl2ZUVmZmVjdFNjb3BlKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFyZW50ID0gYWN0aXZlRWZmZWN0U2NvcGU7XHJcbiAgICAgICAgICAgIHRoaXMuaW5kZXggPVxyXG4gICAgICAgICAgICAgICAgKGFjdGl2ZUVmZmVjdFNjb3BlLnNjb3BlcyB8fCAoYWN0aXZlRWZmZWN0U2NvcGUuc2NvcGVzID0gW10pKS5wdXNoKHRoaXMpIC0gMTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBydW4oZm4pIHtcclxuICAgICAgICBpZiAodGhpcy5hY3RpdmUpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudEVmZmVjdFNjb3BlID0gYWN0aXZlRWZmZWN0U2NvcGU7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBhY3RpdmVFZmZlY3RTY29wZSA9IHRoaXM7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZm4oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmaW5hbGx5IHtcclxuICAgICAgICAgICAgICAgIGFjdGl2ZUVmZmVjdFNjb3BlID0gY3VycmVudEVmZmVjdFNjb3BlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBjYW5ub3QgcnVuIGFuIGluYWN0aXZlIGVmZmVjdCBzY29wZS5gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uIG5vbi1kZXRhY2hlZCBzY29wZXNcclxuICAgICAqIEBpbnRlcm5hbFxyXG4gICAgICovXHJcbiAgICBvbigpIHtcclxuICAgICAgICBhY3RpdmVFZmZlY3RTY29wZSA9IHRoaXM7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uIG5vbi1kZXRhY2hlZCBzY29wZXNcclxuICAgICAqIEBpbnRlcm5hbFxyXG4gICAgICovXHJcbiAgICBvZmYoKSB7XHJcbiAgICAgICAgYWN0aXZlRWZmZWN0U2NvcGUgPSB0aGlzLnBhcmVudDtcclxuICAgIH1cclxuICAgIHN0b3AoZnJvbVBhcmVudCkge1xyXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZSkge1xyXG4gICAgICAgICAgICBsZXQgaSwgbDtcclxuICAgICAgICAgICAgZm9yIChpID0gMCwgbCA9IHRoaXMuZWZmZWN0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZWZmZWN0c1tpXS5zdG9wKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZm9yIChpID0gMCwgbCA9IHRoaXMuY2xlYW51cHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFudXBzW2ldKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuc2NvcGVzKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBsID0gdGhpcy5zY29wZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zY29wZXNbaV0uc3RvcCh0cnVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBuZXN0ZWQgc2NvcGUsIGRlcmVmZXJlbmNlIGZyb20gcGFyZW50IHRvIGF2b2lkIG1lbW9yeSBsZWFrc1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wYXJlbnQgJiYgIWZyb21QYXJlbnQpIHtcclxuICAgICAgICAgICAgICAgIC8vIG9wdGltaXplZCBPKDEpIHJlbW92YWxcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxhc3QgPSB0aGlzLnBhcmVudC5zY29wZXMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobGFzdCAmJiBsYXN0ICE9PSB0aGlzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuc2NvcGVzW3RoaXMuaW5kZXhdID0gbGFzdDtcclxuICAgICAgICAgICAgICAgICAgICBsYXN0LmluZGV4ID0gdGhpcy5pbmRleDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBlZmZlY3RTY29wZShkZXRhY2hlZCkge1xyXG4gICAgcmV0dXJuIG5ldyBFZmZlY3RTY29wZShkZXRhY2hlZCk7XHJcbn1cclxuZnVuY3Rpb24gcmVjb3JkRWZmZWN0U2NvcGUoZWZmZWN0LCBzY29wZSA9IGFjdGl2ZUVmZmVjdFNjb3BlKSB7XHJcbiAgICBpZiAoc2NvcGUgJiYgc2NvcGUuYWN0aXZlKSB7XHJcbiAgICAgICAgc2NvcGUuZWZmZWN0cy5wdXNoKGVmZmVjdCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2V0Q3VycmVudFNjb3BlKCkge1xyXG4gICAgcmV0dXJuIGFjdGl2ZUVmZmVjdFNjb3BlO1xyXG59XHJcbmZ1bmN0aW9uIG9uU2NvcGVEaXNwb3NlKGZuKSB7XHJcbiAgICBpZiAoYWN0aXZlRWZmZWN0U2NvcGUpIHtcclxuICAgICAgICBhY3RpdmVFZmZlY3RTY29wZS5jbGVhbnVwcy5wdXNoKGZuKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIHdhcm4oYG9uU2NvcGVEaXNwb3NlKCkgaXMgY2FsbGVkIHdoZW4gdGhlcmUgaXMgbm8gYWN0aXZlIGVmZmVjdCBzY29wZWAgK1xyXG4gICAgICAgICAgICBgIHRvIGJlIGFzc29jaWF0ZWQgd2l0aC5gKTtcclxuICAgIH1cclxufVxuXG5jb25zdCBjcmVhdGVEZXAgPSAoZWZmZWN0cykgPT4ge1xyXG4gICAgY29uc3QgZGVwID0gbmV3IFNldChlZmZlY3RzKTtcclxuICAgIGRlcC53ID0gMDtcclxuICAgIGRlcC5uID0gMDtcclxuICAgIHJldHVybiBkZXA7XHJcbn07XHJcbmNvbnN0IHdhc1RyYWNrZWQgPSAoZGVwKSA9PiAoZGVwLncgJiB0cmFja09wQml0KSA+IDA7XHJcbmNvbnN0IG5ld1RyYWNrZWQgPSAoZGVwKSA9PiAoZGVwLm4gJiB0cmFja09wQml0KSA+IDA7XHJcbmNvbnN0IGluaXREZXBNYXJrZXJzID0gKHsgZGVwcyB9KSA9PiB7XHJcbiAgICBpZiAoZGVwcy5sZW5ndGgpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgZGVwc1tpXS53IHw9IHRyYWNrT3BCaXQ7IC8vIHNldCB3YXMgdHJhY2tlZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuY29uc3QgZmluYWxpemVEZXBNYXJrZXJzID0gKGVmZmVjdCkgPT4ge1xyXG4gICAgY29uc3QgeyBkZXBzIH0gPSBlZmZlY3Q7XHJcbiAgICBpZiAoZGVwcy5sZW5ndGgpIHtcclxuICAgICAgICBsZXQgcHRyID0gMDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgZGVwID0gZGVwc1tpXTtcclxuICAgICAgICAgICAgaWYgKHdhc1RyYWNrZWQoZGVwKSAmJiAhbmV3VHJhY2tlZChkZXApKSB7XHJcbiAgICAgICAgICAgICAgICBkZXAuZGVsZXRlKGVmZmVjdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkZXBzW3B0cisrXSA9IGRlcDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBjbGVhciBiaXRzXHJcbiAgICAgICAgICAgIGRlcC53ICY9IH50cmFja09wQml0O1xyXG4gICAgICAgICAgICBkZXAubiAmPSB+dHJhY2tPcEJpdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZGVwcy5sZW5ndGggPSBwdHI7XHJcbiAgICB9XHJcbn07XG5cbmNvbnN0IHRhcmdldE1hcCA9IG5ldyBXZWFrTWFwKCk7XHJcbi8vIFRoZSBudW1iZXIgb2YgZWZmZWN0cyBjdXJyZW50bHkgYmVpbmcgdHJhY2tlZCByZWN1cnNpdmVseS5cclxubGV0IGVmZmVjdFRyYWNrRGVwdGggPSAwO1xyXG5sZXQgdHJhY2tPcEJpdCA9IDE7XHJcbi8qKlxyXG4gKiBUaGUgYml0d2lzZSB0cmFjayBtYXJrZXJzIHN1cHBvcnQgYXQgbW9zdCAzMCBsZXZlbHMgb2YgcmVjdXJzaW9uLlxyXG4gKiBUaGlzIHZhbHVlIGlzIGNob3NlbiB0byBlbmFibGUgbW9kZXJuIEpTIGVuZ2luZXMgdG8gdXNlIGEgU01JIG9uIGFsbCBwbGF0Zm9ybXMuXHJcbiAqIFdoZW4gcmVjdXJzaW9uIGRlcHRoIGlzIGdyZWF0ZXIsIGZhbGwgYmFjayB0byB1c2luZyBhIGZ1bGwgY2xlYW51cC5cclxuICovXHJcbmNvbnN0IG1heE1hcmtlckJpdHMgPSAzMDtcclxubGV0IGFjdGl2ZUVmZmVjdDtcclxuY29uc3QgSVRFUkFURV9LRVkgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gJ2l0ZXJhdGUnIDogJycpO1xyXG5jb25zdCBNQVBfS0VZX0lURVJBVEVfS0VZID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/ICdNYXAga2V5IGl0ZXJhdGUnIDogJycpO1xyXG5jbGFzcyBSZWFjdGl2ZUVmZmVjdCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihmbiwgc2NoZWR1bGVyID0gbnVsbCwgc2NvcGUpIHtcclxuICAgICAgICB0aGlzLmZuID0gZm47XHJcbiAgICAgICAgdGhpcy5zY2hlZHVsZXIgPSBzY2hlZHVsZXI7XHJcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZGVwcyA9IFtdO1xyXG4gICAgICAgIHRoaXMucGFyZW50ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHJlY29yZEVmZmVjdFNjb3BlKHRoaXMsIHNjb3BlKTtcclxuICAgIH1cclxuICAgIHJ1bigpIHtcclxuICAgICAgICBpZiAoIXRoaXMuYWN0aXZlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBwYXJlbnQgPSBhY3RpdmVFZmZlY3Q7XHJcbiAgICAgICAgbGV0IGxhc3RTaG91bGRUcmFjayA9IHNob3VsZFRyYWNrO1xyXG4gICAgICAgIHdoaWxlIChwYXJlbnQpIHtcclxuICAgICAgICAgICAgaWYgKHBhcmVudCA9PT0gdGhpcykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFyZW50ID0gYWN0aXZlRWZmZWN0O1xyXG4gICAgICAgICAgICBhY3RpdmVFZmZlY3QgPSB0aGlzO1xyXG4gICAgICAgICAgICBzaG91bGRUcmFjayA9IHRydWU7XHJcbiAgICAgICAgICAgIHRyYWNrT3BCaXQgPSAxIDw8ICsrZWZmZWN0VHJhY2tEZXB0aDtcclxuICAgICAgICAgICAgaWYgKGVmZmVjdFRyYWNrRGVwdGggPD0gbWF4TWFya2VyQml0cykge1xyXG4gICAgICAgICAgICAgICAgaW5pdERlcE1hcmtlcnModGhpcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjbGVhbnVwRWZmZWN0KHRoaXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkge1xyXG4gICAgICAgICAgICBpZiAoZWZmZWN0VHJhY2tEZXB0aCA8PSBtYXhNYXJrZXJCaXRzKSB7XHJcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZURlcE1hcmtlcnModGhpcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdHJhY2tPcEJpdCA9IDEgPDwgLS1lZmZlY3RUcmFja0RlcHRoO1xyXG4gICAgICAgICAgICBhY3RpdmVFZmZlY3QgPSB0aGlzLnBhcmVudDtcclxuICAgICAgICAgICAgc2hvdWxkVHJhY2sgPSBsYXN0U2hvdWxkVHJhY2s7XHJcbiAgICAgICAgICAgIHRoaXMucGFyZW50ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kZWZlclN0b3ApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgc3RvcCgpIHtcclxuICAgICAgICAvLyBzdG9wcGVkIHdoaWxlIHJ1bm5pbmcgaXRzZWxmIC0gZGVmZXIgdGhlIGNsZWFudXBcclxuICAgICAgICBpZiAoYWN0aXZlRWZmZWN0ID09PSB0aGlzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVmZXJTdG9wID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5hY3RpdmUpIHtcclxuICAgICAgICAgICAgY2xlYW51cEVmZmVjdCh0aGlzKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMub25TdG9wKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uU3RvcCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGNsZWFudXBFZmZlY3QoZWZmZWN0KSB7XHJcbiAgICBjb25zdCB7IGRlcHMgfSA9IGVmZmVjdDtcclxuICAgIGlmIChkZXBzLmxlbmd0aCkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGVwcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBkZXBzW2ldLmRlbGV0ZShlZmZlY3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkZXBzLmxlbmd0aCA9IDA7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZWZmZWN0KGZuLCBvcHRpb25zKSB7XHJcbiAgICBpZiAoZm4uZWZmZWN0KSB7XHJcbiAgICAgICAgZm4gPSBmbi5lZmZlY3QuZm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBfZWZmZWN0ID0gbmV3IFJlYWN0aXZlRWZmZWN0KGZuKTtcclxuICAgIGlmIChvcHRpb25zKSB7XHJcbiAgICAgICAgZXh0ZW5kKF9lZmZlY3QsIG9wdGlvbnMpO1xyXG4gICAgICAgIGlmIChvcHRpb25zLnNjb3BlKVxyXG4gICAgICAgICAgICByZWNvcmRFZmZlY3RTY29wZShfZWZmZWN0LCBvcHRpb25zLnNjb3BlKTtcclxuICAgIH1cclxuICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5sYXp5KSB7XHJcbiAgICAgICAgX2VmZmVjdC5ydW4oKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJ1bm5lciA9IF9lZmZlY3QucnVuLmJpbmQoX2VmZmVjdCk7XHJcbiAgICBydW5uZXIuZWZmZWN0ID0gX2VmZmVjdDtcclxuICAgIHJldHVybiBydW5uZXI7XHJcbn1cclxuZnVuY3Rpb24gc3RvcChydW5uZXIpIHtcclxuICAgIHJ1bm5lci5lZmZlY3Quc3RvcCgpO1xyXG59XHJcbmxldCBzaG91bGRUcmFjayA9IHRydWU7XHJcbmNvbnN0IHRyYWNrU3RhY2sgPSBbXTtcclxuZnVuY3Rpb24gcGF1c2VUcmFja2luZygpIHtcclxuICAgIHRyYWNrU3RhY2sucHVzaChzaG91bGRUcmFjayk7XHJcbiAgICBzaG91bGRUcmFjayA9IGZhbHNlO1xyXG59XHJcbmZ1bmN0aW9uIGVuYWJsZVRyYWNraW5nKCkge1xyXG4gICAgdHJhY2tTdGFjay5wdXNoKHNob3VsZFRyYWNrKTtcclxuICAgIHNob3VsZFRyYWNrID0gdHJ1ZTtcclxufVxyXG5mdW5jdGlvbiByZXNldFRyYWNraW5nKCkge1xyXG4gICAgY29uc3QgbGFzdCA9IHRyYWNrU3RhY2sucG9wKCk7XHJcbiAgICBzaG91bGRUcmFjayA9IGxhc3QgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBsYXN0O1xyXG59XHJcbmZ1bmN0aW9uIHRyYWNrKHRhcmdldCwgdHlwZSwga2V5KSB7XHJcbiAgICBpZiAoc2hvdWxkVHJhY2sgJiYgYWN0aXZlRWZmZWN0KSB7XHJcbiAgICAgICAgbGV0IGRlcHNNYXAgPSB0YXJnZXRNYXAuZ2V0KHRhcmdldCk7XHJcbiAgICAgICAgaWYgKCFkZXBzTWFwKSB7XHJcbiAgICAgICAgICAgIHRhcmdldE1hcC5zZXQodGFyZ2V0LCAoZGVwc01hcCA9IG5ldyBNYXAoKSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZGVwID0gZGVwc01hcC5nZXQoa2V5KTtcclxuICAgICAgICBpZiAoIWRlcCkge1xyXG4gICAgICAgICAgICBkZXBzTWFwLnNldChrZXksIChkZXAgPSBjcmVhdGVEZXAoKSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBldmVudEluZm8gPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICAgICAgPyB7IGVmZmVjdDogYWN0aXZlRWZmZWN0LCB0YXJnZXQsIHR5cGUsIGtleSB9XHJcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xyXG4gICAgICAgIHRyYWNrRWZmZWN0cyhkZXAsIGV2ZW50SW5mbyk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdHJhY2tFZmZlY3RzKGRlcCwgZGVidWdnZXJFdmVudEV4dHJhSW5mbykge1xyXG4gICAgbGV0IHNob3VsZFRyYWNrID0gZmFsc2U7XHJcbiAgICBpZiAoZWZmZWN0VHJhY2tEZXB0aCA8PSBtYXhNYXJrZXJCaXRzKSB7XHJcbiAgICAgICAgaWYgKCFuZXdUcmFja2VkKGRlcCkpIHtcclxuICAgICAgICAgICAgZGVwLm4gfD0gdHJhY2tPcEJpdDsgLy8gc2V0IG5ld2x5IHRyYWNrZWRcclxuICAgICAgICAgICAgc2hvdWxkVHJhY2sgPSAhd2FzVHJhY2tlZChkZXApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIEZ1bGwgY2xlYW51cCBtb2RlLlxyXG4gICAgICAgIHNob3VsZFRyYWNrID0gIWRlcC5oYXMoYWN0aXZlRWZmZWN0KTtcclxuICAgIH1cclxuICAgIGlmIChzaG91bGRUcmFjaykge1xyXG4gICAgICAgIGRlcC5hZGQoYWN0aXZlRWZmZWN0KTtcclxuICAgICAgICBhY3RpdmVFZmZlY3QuZGVwcy5wdXNoKGRlcCk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBhY3RpdmVFZmZlY3Qub25UcmFjaykge1xyXG4gICAgICAgICAgICBhY3RpdmVFZmZlY3Qub25UcmFjayhPYmplY3QuYXNzaWduKHsgZWZmZWN0OiBhY3RpdmVFZmZlY3QgfSwgZGVidWdnZXJFdmVudEV4dHJhSW5mbykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB0cmlnZ2VyKHRhcmdldCwgdHlwZSwga2V5LCBuZXdWYWx1ZSwgb2xkVmFsdWUsIG9sZFRhcmdldCkge1xyXG4gICAgY29uc3QgZGVwc01hcCA9IHRhcmdldE1hcC5nZXQodGFyZ2V0KTtcclxuICAgIGlmICghZGVwc01hcCkge1xyXG4gICAgICAgIC8vIG5ldmVyIGJlZW4gdHJhY2tlZFxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBkZXBzID0gW107XHJcbiAgICBpZiAodHlwZSA9PT0gXCJjbGVhclwiIC8qIFRyaWdnZXJPcFR5cGVzLkNMRUFSICovKSB7XHJcbiAgICAgICAgLy8gY29sbGVjdGlvbiBiZWluZyBjbGVhcmVkXHJcbiAgICAgICAgLy8gdHJpZ2dlciBhbGwgZWZmZWN0cyBmb3IgdGFyZ2V0XHJcbiAgICAgICAgZGVwcyA9IFsuLi5kZXBzTWFwLnZhbHVlcygpXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGtleSA9PT0gJ2xlbmd0aCcgJiYgaXNBcnJheSh0YXJnZXQpKSB7XHJcbiAgICAgICAgZGVwc01hcC5mb3JFYWNoKChkZXAsIGtleSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoa2V5ID09PSAnbGVuZ3RoJyB8fCBrZXkgPj0gbmV3VmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGRlcHMucHVzaChkZXApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBzY2hlZHVsZSBydW5zIGZvciBTRVQgfCBBREQgfCBERUxFVEVcclxuICAgICAgICBpZiAoa2V5ICE9PSB2b2lkIDApIHtcclxuICAgICAgICAgICAgZGVwcy5wdXNoKGRlcHNNYXAuZ2V0KGtleSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBhbHNvIHJ1biBmb3IgaXRlcmF0aW9uIGtleSBvbiBBREQgfCBERUxFVEUgfCBNYXAuU0VUXHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJhZGRcIiAvKiBUcmlnZ2VyT3BUeXBlcy5BREQgKi86XHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzQXJyYXkodGFyZ2V0KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlcHMucHVzaChkZXBzTWFwLmdldChJVEVSQVRFX0tFWSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc01hcCh0YXJnZXQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlcHMucHVzaChkZXBzTWFwLmdldChNQVBfS0VZX0lURVJBVEVfS0VZKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNJbnRlZ2VyS2V5KGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBuZXcgaW5kZXggYWRkZWQgdG8gYXJyYXkgLT4gbGVuZ3RoIGNoYW5nZXNcclxuICAgICAgICAgICAgICAgICAgICBkZXBzLnB1c2goZGVwc01hcC5nZXQoJ2xlbmd0aCcpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwiZGVsZXRlXCIgLyogVHJpZ2dlck9wVHlwZXMuREVMRVRFICovOlxyXG4gICAgICAgICAgICAgICAgaWYgKCFpc0FycmF5KHRhcmdldCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBkZXBzLnB1c2goZGVwc01hcC5nZXQoSVRFUkFURV9LRVkpKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNNYXAodGFyZ2V0KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXBzLnB1c2goZGVwc01hcC5nZXQoTUFQX0tFWV9JVEVSQVRFX0tFWSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwic2V0XCIgLyogVHJpZ2dlck9wVHlwZXMuU0VUICovOlxyXG4gICAgICAgICAgICAgICAgaWYgKGlzTWFwKHRhcmdldCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBkZXBzLnB1c2goZGVwc01hcC5nZXQoSVRFUkFURV9LRVkpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGV2ZW50SW5mbyA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgID8geyB0YXJnZXQsIHR5cGUsIGtleSwgbmV3VmFsdWUsIG9sZFZhbHVlLCBvbGRUYXJnZXQgfVxyXG4gICAgICAgIDogdW5kZWZpbmVkO1xyXG4gICAgaWYgKGRlcHMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgaWYgKGRlcHNbMF0pIHtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgdHJpZ2dlckVmZmVjdHMoZGVwc1swXSwgZXZlbnRJbmZvKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRyaWdnZXJFZmZlY3RzKGRlcHNbMF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgZWZmZWN0cyA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgZGVwIG9mIGRlcHMpIHtcclxuICAgICAgICAgICAgaWYgKGRlcCkge1xyXG4gICAgICAgICAgICAgICAgZWZmZWN0cy5wdXNoKC4uLmRlcCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB0cmlnZ2VyRWZmZWN0cyhjcmVhdGVEZXAoZWZmZWN0cyksIGV2ZW50SW5mbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0cmlnZ2VyRWZmZWN0cyhjcmVhdGVEZXAoZWZmZWN0cykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB0cmlnZ2VyRWZmZWN0cyhkZXAsIGRlYnVnZ2VyRXZlbnRFeHRyYUluZm8pIHtcclxuICAgIC8vIHNwcmVhZCBpbnRvIGFycmF5IGZvciBzdGFiaWxpemF0aW9uXHJcbiAgICBjb25zdCBlZmZlY3RzID0gaXNBcnJheShkZXApID8gZGVwIDogWy4uLmRlcF07XHJcbiAgICBmb3IgKGNvbnN0IGVmZmVjdCBvZiBlZmZlY3RzKSB7XHJcbiAgICAgICAgaWYgKGVmZmVjdC5jb21wdXRlZCkge1xyXG4gICAgICAgICAgICB0cmlnZ2VyRWZmZWN0KGVmZmVjdCwgZGVidWdnZXJFdmVudEV4dHJhSW5mbyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBlZmZlY3Qgb2YgZWZmZWN0cykge1xyXG4gICAgICAgIGlmICghZWZmZWN0LmNvbXB1dGVkKSB7XHJcbiAgICAgICAgICAgIHRyaWdnZXJFZmZlY3QoZWZmZWN0LCBkZWJ1Z2dlckV2ZW50RXh0cmFJbmZvKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdHJpZ2dlckVmZmVjdChlZmZlY3QsIGRlYnVnZ2VyRXZlbnRFeHRyYUluZm8pIHtcclxuICAgIGlmIChlZmZlY3QgIT09IGFjdGl2ZUVmZmVjdCB8fCBlZmZlY3QuYWxsb3dSZWN1cnNlKSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBlZmZlY3Qub25UcmlnZ2VyKSB7XHJcbiAgICAgICAgICAgIGVmZmVjdC5vblRyaWdnZXIoZXh0ZW5kKHsgZWZmZWN0IH0sIGRlYnVnZ2VyRXZlbnRFeHRyYUluZm8pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGVmZmVjdC5zY2hlZHVsZXIpIHtcclxuICAgICAgICAgICAgZWZmZWN0LnNjaGVkdWxlcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZWZmZWN0LnJ1bigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxuXG5jb25zdCBpc05vblRyYWNrYWJsZUtleXMgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoYF9fcHJvdG9fXyxfX3ZfaXNSZWYsX19pc1Z1ZWApO1xyXG5jb25zdCBidWlsdEluU3ltYm9scyA9IG5ldyBTZXQoXHJcbi8qI19fUFVSRV9fKi9cclxuT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoU3ltYm9sKVxyXG4gICAgLy8gaW9zMTAueCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhTeW1ib2wpIGNhbiBlbnVtZXJhdGUgJ2FyZ3VtZW50cycgYW5kICdjYWxsZXInXHJcbiAgICAvLyBidXQgYWNjZXNzaW5nIHRoZW0gb24gU3ltYm9sIGxlYWRzIHRvIFR5cGVFcnJvciBiZWNhdXNlIFN5bWJvbCBpcyBhIHN0cmljdCBtb2RlXHJcbiAgICAvLyBmdW5jdGlvblxyXG4gICAgLmZpbHRlcihrZXkgPT4ga2V5ICE9PSAnYXJndW1lbnRzJyAmJiBrZXkgIT09ICdjYWxsZXInKVxyXG4gICAgLm1hcChrZXkgPT4gU3ltYm9sW2tleV0pXHJcbiAgICAuZmlsdGVyKGlzU3ltYm9sKSk7XHJcbmNvbnN0IGdldCA9IC8qI19fUFVSRV9fKi8gY3JlYXRlR2V0dGVyKCk7XHJcbmNvbnN0IHNoYWxsb3dHZXQgPSAvKiNfX1BVUkVfXyovIGNyZWF0ZUdldHRlcihmYWxzZSwgdHJ1ZSk7XHJcbmNvbnN0IHJlYWRvbmx5R2V0ID0gLyojX19QVVJFX18qLyBjcmVhdGVHZXR0ZXIodHJ1ZSk7XHJcbmNvbnN0IHNoYWxsb3dSZWFkb25seUdldCA9IC8qI19fUFVSRV9fKi8gY3JlYXRlR2V0dGVyKHRydWUsIHRydWUpO1xyXG5jb25zdCBhcnJheUluc3RydW1lbnRhdGlvbnMgPSAvKiNfX1BVUkVfXyovIGNyZWF0ZUFycmF5SW5zdHJ1bWVudGF0aW9ucygpO1xyXG5mdW5jdGlvbiBjcmVhdGVBcnJheUluc3RydW1lbnRhdGlvbnMoKSB7XHJcbiAgICBjb25zdCBpbnN0cnVtZW50YXRpb25zID0ge307XHJcbiAgICBbJ2luY2x1ZGVzJywgJ2luZGV4T2YnLCAnbGFzdEluZGV4T2YnXS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgaW5zdHJ1bWVudGF0aW9uc1trZXldID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcclxuICAgICAgICAgICAgY29uc3QgYXJyID0gdG9SYXcodGhpcyk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gdGhpcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHRyYWNrKGFyciwgXCJnZXRcIiAvKiBUcmFja09wVHlwZXMuR0VUICovLCBpICsgJycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHdlIHJ1biB0aGUgbWV0aG9kIHVzaW5nIHRoZSBvcmlnaW5hbCBhcmdzIGZpcnN0ICh3aGljaCBtYXkgYmUgcmVhY3RpdmUpXHJcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGFycltrZXldKC4uLmFyZ3MpO1xyXG4gICAgICAgICAgICBpZiAocmVzID09PSAtMSB8fCByZXMgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZiB0aGF0IGRpZG4ndCB3b3JrLCBydW4gaXQgYWdhaW4gdXNpbmcgcmF3IHZhbHVlcy5cclxuICAgICAgICAgICAgICAgIHJldHVybiBhcnJba2V5XSguLi5hcmdzLm1hcCh0b1JhdykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9KTtcclxuICAgIFsncHVzaCcsICdwb3AnLCAnc2hpZnQnLCAndW5zaGlmdCcsICdzcGxpY2UnXS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgaW5zdHJ1bWVudGF0aW9uc1trZXldID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcclxuICAgICAgICAgICAgcGF1c2VUcmFja2luZygpO1xyXG4gICAgICAgICAgICBjb25zdCByZXMgPSB0b1Jhdyh0aGlzKVtrZXldLmFwcGx5KHRoaXMsIGFyZ3MpO1xyXG4gICAgICAgICAgICByZXNldFRyYWNraW5nKCk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgfTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGluc3RydW1lbnRhdGlvbnM7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlR2V0dGVyKGlzUmVhZG9ubHkgPSBmYWxzZSwgc2hhbGxvdyA9IGZhbHNlKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gZ2V0KHRhcmdldCwga2V5LCByZWNlaXZlcikge1xyXG4gICAgICAgIGlmIChrZXkgPT09IFwiX192X2lzUmVhY3RpdmVcIiAvKiBSZWFjdGl2ZUZsYWdzLklTX1JFQUNUSVZFICovKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAhaXNSZWFkb25seTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoa2V5ID09PSBcIl9fdl9pc1JlYWRvbmx5XCIgLyogUmVhY3RpdmVGbGFncy5JU19SRUFET05MWSAqLykge1xyXG4gICAgICAgICAgICByZXR1cm4gaXNSZWFkb25seTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoa2V5ID09PSBcIl9fdl9pc1NoYWxsb3dcIiAvKiBSZWFjdGl2ZUZsYWdzLklTX1NIQUxMT1cgKi8pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHNoYWxsb3c7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGtleSA9PT0gXCJfX3ZfcmF3XCIgLyogUmVhY3RpdmVGbGFncy5SQVcgKi8gJiZcclxuICAgICAgICAgICAgcmVjZWl2ZXIgPT09XHJcbiAgICAgICAgICAgICAgICAoaXNSZWFkb25seVxyXG4gICAgICAgICAgICAgICAgICAgID8gc2hhbGxvd1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNoYWxsb3dSZWFkb25seU1hcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHJlYWRvbmx5TWFwXHJcbiAgICAgICAgICAgICAgICAgICAgOiBzaGFsbG93XHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2hhbGxvd1JlYWN0aXZlTWFwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcmVhY3RpdmVNYXApLmdldCh0YXJnZXQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHRhcmdldElzQXJyYXkgPSBpc0FycmF5KHRhcmdldCk7XHJcbiAgICAgICAgaWYgKCFpc1JlYWRvbmx5ICYmIHRhcmdldElzQXJyYXkgJiYgaGFzT3duKGFycmF5SW5zdHJ1bWVudGF0aW9ucywga2V5KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQoYXJyYXlJbnN0cnVtZW50YXRpb25zLCBrZXksIHJlY2VpdmVyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcmVzID0gUmVmbGVjdC5nZXQodGFyZ2V0LCBrZXksIHJlY2VpdmVyKTtcclxuICAgICAgICBpZiAoaXNTeW1ib2woa2V5KSA/IGJ1aWx0SW5TeW1ib2xzLmhhcyhrZXkpIDogaXNOb25UcmFja2FibGVLZXlzKGtleSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFpc1JlYWRvbmx5KSB7XHJcbiAgICAgICAgICAgIHRyYWNrKHRhcmdldCwgXCJnZXRcIiAvKiBUcmFja09wVHlwZXMuR0VUICovLCBrZXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2hhbGxvdykge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNSZWYocmVzKSkge1xyXG4gICAgICAgICAgICAvLyByZWYgdW53cmFwcGluZyAtIHNraXAgdW53cmFwIGZvciBBcnJheSArIGludGVnZXIga2V5LlxyXG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0SXNBcnJheSAmJiBpc0ludGVnZXJLZXkoa2V5KSA/IHJlcyA6IHJlcy52YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzT2JqZWN0KHJlcykpIHtcclxuICAgICAgICAgICAgLy8gQ29udmVydCByZXR1cm5lZCB2YWx1ZSBpbnRvIGEgcHJveHkgYXMgd2VsbC4gd2UgZG8gdGhlIGlzT2JqZWN0IGNoZWNrXHJcbiAgICAgICAgICAgIC8vIGhlcmUgdG8gYXZvaWQgaW52YWxpZCB2YWx1ZSB3YXJuaW5nLiBBbHNvIG5lZWQgdG8gbGF6eSBhY2Nlc3MgcmVhZG9ubHlcclxuICAgICAgICAgICAgLy8gYW5kIHJlYWN0aXZlIGhlcmUgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jeS5cclxuICAgICAgICAgICAgcmV0dXJuIGlzUmVhZG9ubHkgPyByZWFkb25seShyZXMpIDogcmVhY3RpdmUocmVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgIH07XHJcbn1cclxuY29uc3Qgc2V0ID0gLyojX19QVVJFX18qLyBjcmVhdGVTZXR0ZXIoKTtcclxuY29uc3Qgc2hhbGxvd1NldCA9IC8qI19fUFVSRV9fKi8gY3JlYXRlU2V0dGVyKHRydWUpO1xyXG5mdW5jdGlvbiBjcmVhdGVTZXR0ZXIoc2hhbGxvdyA9IGZhbHNlKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gc2V0KHRhcmdldCwga2V5LCB2YWx1ZSwgcmVjZWl2ZXIpIHtcclxuICAgICAgICBsZXQgb2xkVmFsdWUgPSB0YXJnZXRba2V5XTtcclxuICAgICAgICBpZiAoaXNSZWFkb25seShvbGRWYWx1ZSkgJiYgaXNSZWYob2xkVmFsdWUpICYmICFpc1JlZih2YWx1ZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXNoYWxsb3cpIHtcclxuICAgICAgICAgICAgaWYgKCFpc1NoYWxsb3codmFsdWUpICYmICFpc1JlYWRvbmx5KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgb2xkVmFsdWUgPSB0b1JhdyhvbGRWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHRvUmF3KHZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIWlzQXJyYXkodGFyZ2V0KSAmJiBpc1JlZihvbGRWYWx1ZSkgJiYgIWlzUmVmKHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgb2xkVmFsdWUudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGhhZEtleSA9IGlzQXJyYXkodGFyZ2V0KSAmJiBpc0ludGVnZXJLZXkoa2V5KVxyXG4gICAgICAgICAgICA/IE51bWJlcihrZXkpIDwgdGFyZ2V0Lmxlbmd0aFxyXG4gICAgICAgICAgICA6IGhhc093bih0YXJnZXQsIGtleSk7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gUmVmbGVjdC5zZXQodGFyZ2V0LCBrZXksIHZhbHVlLCByZWNlaXZlcik7XHJcbiAgICAgICAgLy8gZG9uJ3QgdHJpZ2dlciBpZiB0YXJnZXQgaXMgc29tZXRoaW5nIHVwIGluIHRoZSBwcm90b3R5cGUgY2hhaW4gb2Ygb3JpZ2luYWxcclxuICAgICAgICBpZiAodGFyZ2V0ID09PSB0b1JhdyhyZWNlaXZlcikpIHtcclxuICAgICAgICAgICAgaWYgKCFoYWRLZXkpIHtcclxuICAgICAgICAgICAgICAgIHRyaWdnZXIodGFyZ2V0LCBcImFkZFwiIC8qIFRyaWdnZXJPcFR5cGVzLkFERCAqLywga2V5LCB2YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaGFzQ2hhbmdlZCh2YWx1ZSwgb2xkVmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICB0cmlnZ2VyKHRhcmdldCwgXCJzZXRcIiAvKiBUcmlnZ2VyT3BUeXBlcy5TRVQgKi8sIGtleSwgdmFsdWUsIG9sZFZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBkZWxldGVQcm9wZXJ0eSh0YXJnZXQsIGtleSkge1xyXG4gICAgY29uc3QgaGFkS2V5ID0gaGFzT3duKHRhcmdldCwga2V5KTtcclxuICAgIGNvbnN0IG9sZFZhbHVlID0gdGFyZ2V0W2tleV07XHJcbiAgICBjb25zdCByZXN1bHQgPSBSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KHRhcmdldCwga2V5KTtcclxuICAgIGlmIChyZXN1bHQgJiYgaGFkS2V5KSB7XHJcbiAgICAgICAgdHJpZ2dlcih0YXJnZXQsIFwiZGVsZXRlXCIgLyogVHJpZ2dlck9wVHlwZXMuREVMRVRFICovLCBrZXksIHVuZGVmaW5lZCwgb2xkVmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5mdW5jdGlvbiBoYXModGFyZ2V0LCBrZXkpIHtcclxuICAgIGNvbnN0IHJlc3VsdCA9IFJlZmxlY3QuaGFzKHRhcmdldCwga2V5KTtcclxuICAgIGlmICghaXNTeW1ib2woa2V5KSB8fCAhYnVpbHRJblN5bWJvbHMuaGFzKGtleSkpIHtcclxuICAgICAgICB0cmFjayh0YXJnZXQsIFwiaGFzXCIgLyogVHJhY2tPcFR5cGVzLkhBUyAqLywga2V5KTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuZnVuY3Rpb24gb3duS2V5cyh0YXJnZXQpIHtcclxuICAgIHRyYWNrKHRhcmdldCwgXCJpdGVyYXRlXCIgLyogVHJhY2tPcFR5cGVzLklURVJBVEUgKi8sIGlzQXJyYXkodGFyZ2V0KSA/ICdsZW5ndGgnIDogSVRFUkFURV9LRVkpO1xyXG4gICAgcmV0dXJuIFJlZmxlY3Qub3duS2V5cyh0YXJnZXQpO1xyXG59XHJcbmNvbnN0IG11dGFibGVIYW5kbGVycyA9IHtcclxuICAgIGdldCxcclxuICAgIHNldCxcclxuICAgIGRlbGV0ZVByb3BlcnR5LFxyXG4gICAgaGFzLFxyXG4gICAgb3duS2V5c1xyXG59O1xyXG5jb25zdCByZWFkb25seUhhbmRsZXJzID0ge1xyXG4gICAgZ2V0OiByZWFkb25seUdldCxcclxuICAgIHNldCh0YXJnZXQsIGtleSkge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgd2FybihgU2V0IG9wZXJhdGlvbiBvbiBrZXkgXCIke1N0cmluZyhrZXkpfVwiIGZhaWxlZDogdGFyZ2V0IGlzIHJlYWRvbmx5LmAsIHRhcmdldCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSxcclxuICAgIGRlbGV0ZVByb3BlcnR5KHRhcmdldCwga2V5KSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBEZWxldGUgb3BlcmF0aW9uIG9uIGtleSBcIiR7U3RyaW5nKGtleSl9XCIgZmFpbGVkOiB0YXJnZXQgaXMgcmVhZG9ubHkuYCwgdGFyZ2V0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IHNoYWxsb3dSZWFjdGl2ZUhhbmRsZXJzID0gLyojX19QVVJFX18qLyBleHRlbmQoe30sIG11dGFibGVIYW5kbGVycywge1xyXG4gICAgZ2V0OiBzaGFsbG93R2V0LFxyXG4gICAgc2V0OiBzaGFsbG93U2V0XHJcbn0pO1xyXG4vLyBQcm9wcyBoYW5kbGVycyBhcmUgc3BlY2lhbCBpbiB0aGUgc2Vuc2UgdGhhdCBpdCBzaG91bGQgbm90IHVud3JhcCB0b3AtbGV2ZWxcclxuLy8gcmVmcyAoaW4gb3JkZXIgdG8gYWxsb3cgcmVmcyB0byBiZSBleHBsaWNpdGx5IHBhc3NlZCBkb3duKSwgYnV0IHNob3VsZFxyXG4vLyByZXRhaW4gdGhlIHJlYWN0aXZpdHkgb2YgdGhlIG5vcm1hbCByZWFkb25seSBvYmplY3QuXHJcbmNvbnN0IHNoYWxsb3dSZWFkb25seUhhbmRsZXJzID0gLyojX19QVVJFX18qLyBleHRlbmQoe30sIHJlYWRvbmx5SGFuZGxlcnMsIHtcclxuICAgIGdldDogc2hhbGxvd1JlYWRvbmx5R2V0XHJcbn0pO1xuXG5jb25zdCB0b1NoYWxsb3cgPSAodmFsdWUpID0+IHZhbHVlO1xyXG5jb25zdCBnZXRQcm90byA9ICh2KSA9PiBSZWZsZWN0LmdldFByb3RvdHlwZU9mKHYpO1xyXG5mdW5jdGlvbiBnZXQkMSh0YXJnZXQsIGtleSwgaXNSZWFkb25seSA9IGZhbHNlLCBpc1NoYWxsb3cgPSBmYWxzZSkge1xyXG4gICAgLy8gIzE3NzI6IHJlYWRvbmx5KHJlYWN0aXZlKE1hcCkpIHNob3VsZCByZXR1cm4gcmVhZG9ubHkgKyByZWFjdGl2ZSB2ZXJzaW9uXHJcbiAgICAvLyBvZiB0aGUgdmFsdWVcclxuICAgIHRhcmdldCA9IHRhcmdldFtcIl9fdl9yYXdcIiAvKiBSZWFjdGl2ZUZsYWdzLlJBVyAqL107XHJcbiAgICBjb25zdCByYXdUYXJnZXQgPSB0b1Jhdyh0YXJnZXQpO1xyXG4gICAgY29uc3QgcmF3S2V5ID0gdG9SYXcoa2V5KTtcclxuICAgIGlmICghaXNSZWFkb25seSkge1xyXG4gICAgICAgIGlmIChrZXkgIT09IHJhd0tleSkge1xyXG4gICAgICAgICAgICB0cmFjayhyYXdUYXJnZXQsIFwiZ2V0XCIgLyogVHJhY2tPcFR5cGVzLkdFVCAqLywga2V5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJhY2socmF3VGFyZ2V0LCBcImdldFwiIC8qIFRyYWNrT3BUeXBlcy5HRVQgKi8sIHJhd0tleSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IGhhcyB9ID0gZ2V0UHJvdG8ocmF3VGFyZ2V0KTtcclxuICAgIGNvbnN0IHdyYXAgPSBpc1NoYWxsb3cgPyB0b1NoYWxsb3cgOiBpc1JlYWRvbmx5ID8gdG9SZWFkb25seSA6IHRvUmVhY3RpdmU7XHJcbiAgICBpZiAoaGFzLmNhbGwocmF3VGFyZ2V0LCBrZXkpKSB7XHJcbiAgICAgICAgcmV0dXJuIHdyYXAodGFyZ2V0LmdldChrZXkpKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGhhcy5jYWxsKHJhd1RhcmdldCwgcmF3S2V5KSkge1xyXG4gICAgICAgIHJldHVybiB3cmFwKHRhcmdldC5nZXQocmF3S2V5KSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0YXJnZXQgIT09IHJhd1RhcmdldCkge1xyXG4gICAgICAgIC8vICMzNjAyIHJlYWRvbmx5KHJlYWN0aXZlKE1hcCkpXHJcbiAgICAgICAgLy8gZW5zdXJlIHRoYXQgdGhlIG5lc3RlZCByZWFjdGl2ZSBgTWFwYCBjYW4gZG8gdHJhY2tpbmcgZm9yIGl0c2VsZlxyXG4gICAgICAgIHRhcmdldC5nZXQoa2V5KTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBoYXMkMShrZXksIGlzUmVhZG9ubHkgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gdGhpc1tcIl9fdl9yYXdcIiAvKiBSZWFjdGl2ZUZsYWdzLlJBVyAqL107XHJcbiAgICBjb25zdCByYXdUYXJnZXQgPSB0b1Jhdyh0YXJnZXQpO1xyXG4gICAgY29uc3QgcmF3S2V5ID0gdG9SYXcoa2V5KTtcclxuICAgIGlmICghaXNSZWFkb25seSkge1xyXG4gICAgICAgIGlmIChrZXkgIT09IHJhd0tleSkge1xyXG4gICAgICAgICAgICB0cmFjayhyYXdUYXJnZXQsIFwiaGFzXCIgLyogVHJhY2tPcFR5cGVzLkhBUyAqLywga2V5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJhY2socmF3VGFyZ2V0LCBcImhhc1wiIC8qIFRyYWNrT3BUeXBlcy5IQVMgKi8sIHJhd0tleSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ga2V5ID09PSByYXdLZXlcclxuICAgICAgICA/IHRhcmdldC5oYXMoa2V5KVxyXG4gICAgICAgIDogdGFyZ2V0LmhhcyhrZXkpIHx8IHRhcmdldC5oYXMocmF3S2V5KTtcclxufVxyXG5mdW5jdGlvbiBzaXplKHRhcmdldCwgaXNSZWFkb25seSA9IGZhbHNlKSB7XHJcbiAgICB0YXJnZXQgPSB0YXJnZXRbXCJfX3ZfcmF3XCIgLyogUmVhY3RpdmVGbGFncy5SQVcgKi9dO1xyXG4gICAgIWlzUmVhZG9ubHkgJiYgdHJhY2sodG9SYXcodGFyZ2V0KSwgXCJpdGVyYXRlXCIgLyogVHJhY2tPcFR5cGVzLklURVJBVEUgKi8sIElURVJBVEVfS0VZKTtcclxuICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsICdzaXplJywgdGFyZ2V0KTtcclxufVxyXG5mdW5jdGlvbiBhZGQodmFsdWUpIHtcclxuICAgIHZhbHVlID0gdG9SYXcodmFsdWUpO1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gdG9SYXcodGhpcyk7XHJcbiAgICBjb25zdCBwcm90byA9IGdldFByb3RvKHRhcmdldCk7XHJcbiAgICBjb25zdCBoYWRLZXkgPSBwcm90by5oYXMuY2FsbCh0YXJnZXQsIHZhbHVlKTtcclxuICAgIGlmICghaGFkS2V5KSB7XHJcbiAgICAgICAgdGFyZ2V0LmFkZCh2YWx1ZSk7XHJcbiAgICAgICAgdHJpZ2dlcih0YXJnZXQsIFwiYWRkXCIgLyogVHJpZ2dlck9wVHlwZXMuQUREICovLCB2YWx1ZSwgdmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbn1cclxuZnVuY3Rpb24gc2V0JDEoa2V5LCB2YWx1ZSkge1xyXG4gICAgdmFsdWUgPSB0b1Jhdyh2YWx1ZSk7XHJcbiAgICBjb25zdCB0YXJnZXQgPSB0b1Jhdyh0aGlzKTtcclxuICAgIGNvbnN0IHsgaGFzLCBnZXQgfSA9IGdldFByb3RvKHRhcmdldCk7XHJcbiAgICBsZXQgaGFkS2V5ID0gaGFzLmNhbGwodGFyZ2V0LCBrZXkpO1xyXG4gICAgaWYgKCFoYWRLZXkpIHtcclxuICAgICAgICBrZXkgPSB0b1JhdyhrZXkpO1xyXG4gICAgICAgIGhhZEtleSA9IGhhcy5jYWxsKHRhcmdldCwga2V5KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGNoZWNrSWRlbnRpdHlLZXlzKHRhcmdldCwgaGFzLCBrZXkpO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb2xkVmFsdWUgPSBnZXQuY2FsbCh0YXJnZXQsIGtleSk7XHJcbiAgICB0YXJnZXQuc2V0KGtleSwgdmFsdWUpO1xyXG4gICAgaWYgKCFoYWRLZXkpIHtcclxuICAgICAgICB0cmlnZ2VyKHRhcmdldCwgXCJhZGRcIiAvKiBUcmlnZ2VyT3BUeXBlcy5BREQgKi8sIGtleSwgdmFsdWUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaGFzQ2hhbmdlZCh2YWx1ZSwgb2xkVmFsdWUpKSB7XHJcbiAgICAgICAgdHJpZ2dlcih0YXJnZXQsIFwic2V0XCIgLyogVHJpZ2dlck9wVHlwZXMuU0VUICovLCBrZXksIHZhbHVlLCBvbGRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcztcclxufVxyXG5mdW5jdGlvbiBkZWxldGVFbnRyeShrZXkpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IHRvUmF3KHRoaXMpO1xyXG4gICAgY29uc3QgeyBoYXMsIGdldCB9ID0gZ2V0UHJvdG8odGFyZ2V0KTtcclxuICAgIGxldCBoYWRLZXkgPSBoYXMuY2FsbCh0YXJnZXQsIGtleSk7XHJcbiAgICBpZiAoIWhhZEtleSkge1xyXG4gICAgICAgIGtleSA9IHRvUmF3KGtleSk7XHJcbiAgICAgICAgaGFkS2V5ID0gaGFzLmNhbGwodGFyZ2V0LCBrZXkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgY2hlY2tJZGVudGl0eUtleXModGFyZ2V0LCBoYXMsIGtleSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBvbGRWYWx1ZSA9IGdldCA/IGdldC5jYWxsKHRhcmdldCwga2V5KSA6IHVuZGVmaW5lZDtcclxuICAgIC8vIGZvcndhcmQgdGhlIG9wZXJhdGlvbiBiZWZvcmUgcXVldWVpbmcgcmVhY3Rpb25zXHJcbiAgICBjb25zdCByZXN1bHQgPSB0YXJnZXQuZGVsZXRlKGtleSk7XHJcbiAgICBpZiAoaGFkS2V5KSB7XHJcbiAgICAgICAgdHJpZ2dlcih0YXJnZXQsIFwiZGVsZXRlXCIgLyogVHJpZ2dlck9wVHlwZXMuREVMRVRFICovLCBrZXksIHVuZGVmaW5lZCwgb2xkVmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5mdW5jdGlvbiBjbGVhcigpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IHRvUmF3KHRoaXMpO1xyXG4gICAgY29uc3QgaGFkSXRlbXMgPSB0YXJnZXQuc2l6ZSAhPT0gMDtcclxuICAgIGNvbnN0IG9sZFRhcmdldCA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgID8gaXNNYXAodGFyZ2V0KVxyXG4gICAgICAgICAgICA/IG5ldyBNYXAodGFyZ2V0KVxyXG4gICAgICAgICAgICA6IG5ldyBTZXQodGFyZ2V0KVxyXG4gICAgICAgIDogdW5kZWZpbmVkO1xyXG4gICAgLy8gZm9yd2FyZCB0aGUgb3BlcmF0aW9uIGJlZm9yZSBxdWV1ZWluZyByZWFjdGlvbnNcclxuICAgIGNvbnN0IHJlc3VsdCA9IHRhcmdldC5jbGVhcigpO1xyXG4gICAgaWYgKGhhZEl0ZW1zKSB7XHJcbiAgICAgICAgdHJpZ2dlcih0YXJnZXQsIFwiY2xlYXJcIiAvKiBUcmlnZ2VyT3BUeXBlcy5DTEVBUiAqLywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIG9sZFRhcmdldCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUZvckVhY2goaXNSZWFkb25seSwgaXNTaGFsbG93KSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZykge1xyXG4gICAgICAgIGNvbnN0IG9ic2VydmVkID0gdGhpcztcclxuICAgICAgICBjb25zdCB0YXJnZXQgPSBvYnNlcnZlZFtcIl9fdl9yYXdcIiAvKiBSZWFjdGl2ZUZsYWdzLlJBVyAqL107XHJcbiAgICAgICAgY29uc3QgcmF3VGFyZ2V0ID0gdG9SYXcodGFyZ2V0KTtcclxuICAgICAgICBjb25zdCB3cmFwID0gaXNTaGFsbG93ID8gdG9TaGFsbG93IDogaXNSZWFkb25seSA/IHRvUmVhZG9ubHkgOiB0b1JlYWN0aXZlO1xyXG4gICAgICAgICFpc1JlYWRvbmx5ICYmIHRyYWNrKHJhd1RhcmdldCwgXCJpdGVyYXRlXCIgLyogVHJhY2tPcFR5cGVzLklURVJBVEUgKi8sIElURVJBVEVfS0VZKTtcclxuICAgICAgICByZXR1cm4gdGFyZ2V0LmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcclxuICAgICAgICAgICAgLy8gaW1wb3J0YW50OiBtYWtlIHN1cmUgdGhlIGNhbGxiYWNrIGlzXHJcbiAgICAgICAgICAgIC8vIDEuIGludm9rZWQgd2l0aCB0aGUgcmVhY3RpdmUgbWFwIGFzIGB0aGlzYCBhbmQgM3JkIGFyZ1xyXG4gICAgICAgICAgICAvLyAyLiB0aGUgdmFsdWUgcmVjZWl2ZWQgc2hvdWxkIGJlIGEgY29ycmVzcG9uZGluZyByZWFjdGl2ZS9yZWFkb25seS5cclxuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgd3JhcCh2YWx1ZSksIHdyYXAoa2V5KSwgb2JzZXJ2ZWQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVJdGVyYWJsZU1ldGhvZChtZXRob2QsIGlzUmVhZG9ubHksIGlzU2hhbGxvdykge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICguLi5hcmdzKSB7XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpc1tcIl9fdl9yYXdcIiAvKiBSZWFjdGl2ZUZsYWdzLlJBVyAqL107XHJcbiAgICAgICAgY29uc3QgcmF3VGFyZ2V0ID0gdG9SYXcodGFyZ2V0KTtcclxuICAgICAgICBjb25zdCB0YXJnZXRJc01hcCA9IGlzTWFwKHJhd1RhcmdldCk7XHJcbiAgICAgICAgY29uc3QgaXNQYWlyID0gbWV0aG9kID09PSAnZW50cmllcycgfHwgKG1ldGhvZCA9PT0gU3ltYm9sLml0ZXJhdG9yICYmIHRhcmdldElzTWFwKTtcclxuICAgICAgICBjb25zdCBpc0tleU9ubHkgPSBtZXRob2QgPT09ICdrZXlzJyAmJiB0YXJnZXRJc01hcDtcclxuICAgICAgICBjb25zdCBpbm5lckl0ZXJhdG9yID0gdGFyZ2V0W21ldGhvZF0oLi4uYXJncyk7XHJcbiAgICAgICAgY29uc3Qgd3JhcCA9IGlzU2hhbGxvdyA/IHRvU2hhbGxvdyA6IGlzUmVhZG9ubHkgPyB0b1JlYWRvbmx5IDogdG9SZWFjdGl2ZTtcclxuICAgICAgICAhaXNSZWFkb25seSAmJlxyXG4gICAgICAgICAgICB0cmFjayhyYXdUYXJnZXQsIFwiaXRlcmF0ZVwiIC8qIFRyYWNrT3BUeXBlcy5JVEVSQVRFICovLCBpc0tleU9ubHkgPyBNQVBfS0VZX0lURVJBVEVfS0VZIDogSVRFUkFURV9LRVkpO1xyXG4gICAgICAgIC8vIHJldHVybiBhIHdyYXBwZWQgaXRlcmF0b3Igd2hpY2ggcmV0dXJucyBvYnNlcnZlZCB2ZXJzaW9ucyBvZiB0aGVcclxuICAgICAgICAvLyB2YWx1ZXMgZW1pdHRlZCBmcm9tIHRoZSByZWFsIGl0ZXJhdG9yXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLy8gaXRlcmF0b3IgcHJvdG9jb2xcclxuICAgICAgICAgICAgbmV4dCgpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgdmFsdWUsIGRvbmUgfSA9IGlubmVySXRlcmF0b3IubmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmVcclxuICAgICAgICAgICAgICAgICAgICA/IHsgdmFsdWUsIGRvbmUgfVxyXG4gICAgICAgICAgICAgICAgICAgIDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaXNQYWlyID8gW3dyYXAodmFsdWVbMF0pLCB3cmFwKHZhbHVlWzFdKV0gOiB3cmFwKHZhbHVlKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9uZVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIGl0ZXJhYmxlIHByb3RvY29sXHJcbiAgICAgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVSZWFkb25seU1ldGhvZCh0eXBlKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGFyZ3NbMF0gPyBgb24ga2V5IFwiJHthcmdzWzBdfVwiIGAgOiBgYDtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKGAke2NhcGl0YWxpemUodHlwZSl9IG9wZXJhdGlvbiAke2tleX1mYWlsZWQ6IHRhcmdldCBpcyByZWFkb25seS5gLCB0b1Jhdyh0aGlzKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0eXBlID09PSBcImRlbGV0ZVwiIC8qIFRyaWdnZXJPcFR5cGVzLkRFTEVURSAqLyA/IGZhbHNlIDogdGhpcztcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlSW5zdHJ1bWVudGF0aW9ucygpIHtcclxuICAgIGNvbnN0IG11dGFibGVJbnN0cnVtZW50YXRpb25zID0ge1xyXG4gICAgICAgIGdldChrZXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGdldCQxKHRoaXMsIGtleSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXQgc2l6ZSgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHNpemUodGhpcyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBoYXM6IGhhcyQxLFxyXG4gICAgICAgIGFkZCxcclxuICAgICAgICBzZXQ6IHNldCQxLFxyXG4gICAgICAgIGRlbGV0ZTogZGVsZXRlRW50cnksXHJcbiAgICAgICAgY2xlYXIsXHJcbiAgICAgICAgZm9yRWFjaDogY3JlYXRlRm9yRWFjaChmYWxzZSwgZmFsc2UpXHJcbiAgICB9O1xyXG4gICAgY29uc3Qgc2hhbGxvd0luc3RydW1lbnRhdGlvbnMgPSB7XHJcbiAgICAgICAgZ2V0KGtleSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2V0JDEodGhpcywga2V5LCBmYWxzZSwgdHJ1ZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXQgc2l6ZSgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHNpemUodGhpcyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBoYXM6IGhhcyQxLFxyXG4gICAgICAgIGFkZCxcclxuICAgICAgICBzZXQ6IHNldCQxLFxyXG4gICAgICAgIGRlbGV0ZTogZGVsZXRlRW50cnksXHJcbiAgICAgICAgY2xlYXIsXHJcbiAgICAgICAgZm9yRWFjaDogY3JlYXRlRm9yRWFjaChmYWxzZSwgdHJ1ZSlcclxuICAgIH07XHJcbiAgICBjb25zdCByZWFkb25seUluc3RydW1lbnRhdGlvbnMgPSB7XHJcbiAgICAgICAgZ2V0KGtleSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2V0JDEodGhpcywga2V5LCB0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGdldCBzaXplKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gc2l6ZSh0aGlzLCB0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGhhcyhrZXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGhhcyQxLmNhbGwodGhpcywga2V5LCB0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGFkZDogY3JlYXRlUmVhZG9ubHlNZXRob2QoXCJhZGRcIiAvKiBUcmlnZ2VyT3BUeXBlcy5BREQgKi8pLFxyXG4gICAgICAgIHNldDogY3JlYXRlUmVhZG9ubHlNZXRob2QoXCJzZXRcIiAvKiBUcmlnZ2VyT3BUeXBlcy5TRVQgKi8pLFxyXG4gICAgICAgIGRlbGV0ZTogY3JlYXRlUmVhZG9ubHlNZXRob2QoXCJkZWxldGVcIiAvKiBUcmlnZ2VyT3BUeXBlcy5ERUxFVEUgKi8pLFxyXG4gICAgICAgIGNsZWFyOiBjcmVhdGVSZWFkb25seU1ldGhvZChcImNsZWFyXCIgLyogVHJpZ2dlck9wVHlwZXMuQ0xFQVIgKi8pLFxyXG4gICAgICAgIGZvckVhY2g6IGNyZWF0ZUZvckVhY2godHJ1ZSwgZmFsc2UpXHJcbiAgICB9O1xyXG4gICAgY29uc3Qgc2hhbGxvd1JlYWRvbmx5SW5zdHJ1bWVudGF0aW9ucyA9IHtcclxuICAgICAgICBnZXQoa2V5KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBnZXQkMSh0aGlzLCBrZXksIHRydWUsIHRydWUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0IHNpemUoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzaXplKHRoaXMsIHRydWUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaGFzKGtleSkge1xyXG4gICAgICAgICAgICByZXR1cm4gaGFzJDEuY2FsbCh0aGlzLCBrZXksIHRydWUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgYWRkOiBjcmVhdGVSZWFkb25seU1ldGhvZChcImFkZFwiIC8qIFRyaWdnZXJPcFR5cGVzLkFERCAqLyksXHJcbiAgICAgICAgc2V0OiBjcmVhdGVSZWFkb25seU1ldGhvZChcInNldFwiIC8qIFRyaWdnZXJPcFR5cGVzLlNFVCAqLyksXHJcbiAgICAgICAgZGVsZXRlOiBjcmVhdGVSZWFkb25seU1ldGhvZChcImRlbGV0ZVwiIC8qIFRyaWdnZXJPcFR5cGVzLkRFTEVURSAqLyksXHJcbiAgICAgICAgY2xlYXI6IGNyZWF0ZVJlYWRvbmx5TWV0aG9kKFwiY2xlYXJcIiAvKiBUcmlnZ2VyT3BUeXBlcy5DTEVBUiAqLyksXHJcbiAgICAgICAgZm9yRWFjaDogY3JlYXRlRm9yRWFjaCh0cnVlLCB0cnVlKVxyXG4gICAgfTtcclxuICAgIGNvbnN0IGl0ZXJhdG9yTWV0aG9kcyA9IFsna2V5cycsICd2YWx1ZXMnLCAnZW50cmllcycsIFN5bWJvbC5pdGVyYXRvcl07XHJcbiAgICBpdGVyYXRvck1ldGhvZHMuZm9yRWFjaChtZXRob2QgPT4ge1xyXG4gICAgICAgIG11dGFibGVJbnN0cnVtZW50YXRpb25zW21ldGhvZF0gPSBjcmVhdGVJdGVyYWJsZU1ldGhvZChtZXRob2QsIGZhbHNlLCBmYWxzZSk7XHJcbiAgICAgICAgcmVhZG9ubHlJbnN0cnVtZW50YXRpb25zW21ldGhvZF0gPSBjcmVhdGVJdGVyYWJsZU1ldGhvZChtZXRob2QsIHRydWUsIGZhbHNlKTtcclxuICAgICAgICBzaGFsbG93SW5zdHJ1bWVudGF0aW9uc1ttZXRob2RdID0gY3JlYXRlSXRlcmFibGVNZXRob2QobWV0aG9kLCBmYWxzZSwgdHJ1ZSk7XHJcbiAgICAgICAgc2hhbGxvd1JlYWRvbmx5SW5zdHJ1bWVudGF0aW9uc1ttZXRob2RdID0gY3JlYXRlSXRlcmFibGVNZXRob2QobWV0aG9kLCB0cnVlLCB0cnVlKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAgICBtdXRhYmxlSW5zdHJ1bWVudGF0aW9ucyxcclxuICAgICAgICByZWFkb25seUluc3RydW1lbnRhdGlvbnMsXHJcbiAgICAgICAgc2hhbGxvd0luc3RydW1lbnRhdGlvbnMsXHJcbiAgICAgICAgc2hhbGxvd1JlYWRvbmx5SW5zdHJ1bWVudGF0aW9uc1xyXG4gICAgXTtcclxufVxyXG5jb25zdCBbbXV0YWJsZUluc3RydW1lbnRhdGlvbnMsIHJlYWRvbmx5SW5zdHJ1bWVudGF0aW9ucywgc2hhbGxvd0luc3RydW1lbnRhdGlvbnMsIHNoYWxsb3dSZWFkb25seUluc3RydW1lbnRhdGlvbnNdID0gLyogI19fUFVSRV9fKi8gY3JlYXRlSW5zdHJ1bWVudGF0aW9ucygpO1xyXG5mdW5jdGlvbiBjcmVhdGVJbnN0cnVtZW50YXRpb25HZXR0ZXIoaXNSZWFkb25seSwgc2hhbGxvdykge1xyXG4gICAgY29uc3QgaW5zdHJ1bWVudGF0aW9ucyA9IHNoYWxsb3dcclxuICAgICAgICA/IGlzUmVhZG9ubHlcclxuICAgICAgICAgICAgPyBzaGFsbG93UmVhZG9ubHlJbnN0cnVtZW50YXRpb25zXHJcbiAgICAgICAgICAgIDogc2hhbGxvd0luc3RydW1lbnRhdGlvbnNcclxuICAgICAgICA6IGlzUmVhZG9ubHlcclxuICAgICAgICAgICAgPyByZWFkb25seUluc3RydW1lbnRhdGlvbnNcclxuICAgICAgICAgICAgOiBtdXRhYmxlSW5zdHJ1bWVudGF0aW9ucztcclxuICAgIHJldHVybiAodGFyZ2V0LCBrZXksIHJlY2VpdmVyKSA9PiB7XHJcbiAgICAgICAgaWYgKGtleSA9PT0gXCJfX3ZfaXNSZWFjdGl2ZVwiIC8qIFJlYWN0aXZlRmxhZ3MuSVNfUkVBQ1RJVkUgKi8pIHtcclxuICAgICAgICAgICAgcmV0dXJuICFpc1JlYWRvbmx5O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChrZXkgPT09IFwiX192X2lzUmVhZG9ubHlcIiAvKiBSZWFjdGl2ZUZsYWdzLklTX1JFQURPTkxZICovKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpc1JlYWRvbmx5O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChrZXkgPT09IFwiX192X3Jhd1wiIC8qIFJlYWN0aXZlRmxhZ3MuUkFXICovKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBSZWZsZWN0LmdldChoYXNPd24oaW5zdHJ1bWVudGF0aW9ucywga2V5KSAmJiBrZXkgaW4gdGFyZ2V0XHJcbiAgICAgICAgICAgID8gaW5zdHJ1bWVudGF0aW9uc1xyXG4gICAgICAgICAgICA6IHRhcmdldCwga2V5LCByZWNlaXZlcik7XHJcbiAgICB9O1xyXG59XHJcbmNvbnN0IG11dGFibGVDb2xsZWN0aW9uSGFuZGxlcnMgPSB7XHJcbiAgICBnZXQ6IC8qI19fUFVSRV9fKi8gY3JlYXRlSW5zdHJ1bWVudGF0aW9uR2V0dGVyKGZhbHNlLCBmYWxzZSlcclxufTtcclxuY29uc3Qgc2hhbGxvd0NvbGxlY3Rpb25IYW5kbGVycyA9IHtcclxuICAgIGdldDogLyojX19QVVJFX18qLyBjcmVhdGVJbnN0cnVtZW50YXRpb25HZXR0ZXIoZmFsc2UsIHRydWUpXHJcbn07XHJcbmNvbnN0IHJlYWRvbmx5Q29sbGVjdGlvbkhhbmRsZXJzID0ge1xyXG4gICAgZ2V0OiAvKiNfX1BVUkVfXyovIGNyZWF0ZUluc3RydW1lbnRhdGlvbkdldHRlcih0cnVlLCBmYWxzZSlcclxufTtcclxuY29uc3Qgc2hhbGxvd1JlYWRvbmx5Q29sbGVjdGlvbkhhbmRsZXJzID0ge1xyXG4gICAgZ2V0OiAvKiNfX1BVUkVfXyovIGNyZWF0ZUluc3RydW1lbnRhdGlvbkdldHRlcih0cnVlLCB0cnVlKVxyXG59O1xyXG5mdW5jdGlvbiBjaGVja0lkZW50aXR5S2V5cyh0YXJnZXQsIGhhcywga2V5KSB7XHJcbiAgICBjb25zdCByYXdLZXkgPSB0b1JhdyhrZXkpO1xyXG4gICAgaWYgKHJhd0tleSAhPT0ga2V5ICYmIGhhcy5jYWxsKHRhcmdldCwgcmF3S2V5KSkge1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSB0b1Jhd1R5cGUodGFyZ2V0KTtcclxuICAgICAgICBjb25zb2xlLndhcm4oYFJlYWN0aXZlICR7dHlwZX0gY29udGFpbnMgYm90aCB0aGUgcmF3IGFuZCByZWFjdGl2ZSBgICtcclxuICAgICAgICAgICAgYHZlcnNpb25zIG9mIHRoZSBzYW1lIG9iamVjdCR7dHlwZSA9PT0gYE1hcGAgPyBgIGFzIGtleXNgIDogYGB9LCBgICtcclxuICAgICAgICAgICAgYHdoaWNoIGNhbiBsZWFkIHRvIGluY29uc2lzdGVuY2llcy4gYCArXHJcbiAgICAgICAgICAgIGBBdm9pZCBkaWZmZXJlbnRpYXRpbmcgYmV0d2VlbiB0aGUgcmF3IGFuZCByZWFjdGl2ZSB2ZXJzaW9ucyBgICtcclxuICAgICAgICAgICAgYG9mIGFuIG9iamVjdCBhbmQgb25seSB1c2UgdGhlIHJlYWN0aXZlIHZlcnNpb24gaWYgcG9zc2libGUuYCk7XHJcbiAgICB9XHJcbn1cblxuY29uc3QgcmVhY3RpdmVNYXAgPSBuZXcgV2Vha01hcCgpO1xyXG5jb25zdCBzaGFsbG93UmVhY3RpdmVNYXAgPSBuZXcgV2Vha01hcCgpO1xyXG5jb25zdCByZWFkb25seU1hcCA9IG5ldyBXZWFrTWFwKCk7XHJcbmNvbnN0IHNoYWxsb3dSZWFkb25seU1hcCA9IG5ldyBXZWFrTWFwKCk7XHJcbmZ1bmN0aW9uIHRhcmdldFR5cGVNYXAocmF3VHlwZSkge1xyXG4gICAgc3dpdGNoIChyYXdUeXBlKSB7XHJcbiAgICAgICAgY2FzZSAnT2JqZWN0JzpcclxuICAgICAgICBjYXNlICdBcnJheSc6XHJcbiAgICAgICAgICAgIHJldHVybiAxIC8qIFRhcmdldFR5cGUuQ09NTU9OICovO1xyXG4gICAgICAgIGNhc2UgJ01hcCc6XHJcbiAgICAgICAgY2FzZSAnU2V0JzpcclxuICAgICAgICBjYXNlICdXZWFrTWFwJzpcclxuICAgICAgICBjYXNlICdXZWFrU2V0JzpcclxuICAgICAgICAgICAgcmV0dXJuIDIgLyogVGFyZ2V0VHlwZS5DT0xMRUNUSU9OICovO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHJldHVybiAwIC8qIFRhcmdldFR5cGUuSU5WQUxJRCAqLztcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZXRUYXJnZXRUeXBlKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gdmFsdWVbXCJfX3Zfc2tpcFwiIC8qIFJlYWN0aXZlRmxhZ3MuU0tJUCAqL10gfHwgIU9iamVjdC5pc0V4dGVuc2libGUodmFsdWUpXHJcbiAgICAgICAgPyAwIC8qIFRhcmdldFR5cGUuSU5WQUxJRCAqL1xyXG4gICAgICAgIDogdGFyZ2V0VHlwZU1hcCh0b1Jhd1R5cGUodmFsdWUpKTtcclxufVxyXG5mdW5jdGlvbiByZWFjdGl2ZSh0YXJnZXQpIHtcclxuICAgIC8vIGlmIHRyeWluZyB0byBvYnNlcnZlIGEgcmVhZG9ubHkgcHJveHksIHJldHVybiB0aGUgcmVhZG9ubHkgdmVyc2lvbi5cclxuICAgIGlmIChpc1JlYWRvbmx5KHRhcmdldCkpIHtcclxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNyZWF0ZVJlYWN0aXZlT2JqZWN0KHRhcmdldCwgZmFsc2UsIG11dGFibGVIYW5kbGVycywgbXV0YWJsZUNvbGxlY3Rpb25IYW5kbGVycywgcmVhY3RpdmVNYXApO1xyXG59XHJcbi8qKlxyXG4gKiBSZXR1cm4gYSBzaGFsbG93bHktcmVhY3RpdmUgY29weSBvZiB0aGUgb3JpZ2luYWwgb2JqZWN0LCB3aGVyZSBvbmx5IHRoZSByb290XHJcbiAqIGxldmVsIHByb3BlcnRpZXMgYXJlIHJlYWN0aXZlLiBJdCBhbHNvIGRvZXMgbm90IGF1dG8tdW53cmFwIHJlZnMgKGV2ZW4gYXQgdGhlXHJcbiAqIHJvb3QgbGV2ZWwpLlxyXG4gKi9cclxuZnVuY3Rpb24gc2hhbGxvd1JlYWN0aXZlKHRhcmdldCkge1xyXG4gICAgcmV0dXJuIGNyZWF0ZVJlYWN0aXZlT2JqZWN0KHRhcmdldCwgZmFsc2UsIHNoYWxsb3dSZWFjdGl2ZUhhbmRsZXJzLCBzaGFsbG93Q29sbGVjdGlvbkhhbmRsZXJzLCBzaGFsbG93UmVhY3RpdmVNYXApO1xyXG59XHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgcmVhZG9ubHkgY29weSBvZiB0aGUgb3JpZ2luYWwgb2JqZWN0LiBOb3RlIHRoZSByZXR1cm5lZCBjb3B5IGlzIG5vdFxyXG4gKiBtYWRlIHJlYWN0aXZlLCBidXQgYHJlYWRvbmx5YCBjYW4gYmUgY2FsbGVkIG9uIGFuIGFscmVhZHkgcmVhY3RpdmUgb2JqZWN0LlxyXG4gKi9cclxuZnVuY3Rpb24gcmVhZG9ubHkodGFyZ2V0KSB7XHJcbiAgICByZXR1cm4gY3JlYXRlUmVhY3RpdmVPYmplY3QodGFyZ2V0LCB0cnVlLCByZWFkb25seUhhbmRsZXJzLCByZWFkb25seUNvbGxlY3Rpb25IYW5kbGVycywgcmVhZG9ubHlNYXApO1xyXG59XHJcbi8qKlxyXG4gKiBSZXR1cm5zIGEgcmVhY3RpdmUtY29weSBvZiB0aGUgb3JpZ2luYWwgb2JqZWN0LCB3aGVyZSBvbmx5IHRoZSByb290IGxldmVsXHJcbiAqIHByb3BlcnRpZXMgYXJlIHJlYWRvbmx5LCBhbmQgZG9lcyBOT1QgdW53cmFwIHJlZnMgbm9yIHJlY3Vyc2l2ZWx5IGNvbnZlcnRcclxuICogcmV0dXJuZWQgcHJvcGVydGllcy5cclxuICogVGhpcyBpcyB1c2VkIGZvciBjcmVhdGluZyB0aGUgcHJvcHMgcHJveHkgb2JqZWN0IGZvciBzdGF0ZWZ1bCBjb21wb25lbnRzLlxyXG4gKi9cclxuZnVuY3Rpb24gc2hhbGxvd1JlYWRvbmx5KHRhcmdldCkge1xyXG4gICAgcmV0dXJuIGNyZWF0ZVJlYWN0aXZlT2JqZWN0KHRhcmdldCwgdHJ1ZSwgc2hhbGxvd1JlYWRvbmx5SGFuZGxlcnMsIHNoYWxsb3dSZWFkb25seUNvbGxlY3Rpb25IYW5kbGVycywgc2hhbGxvd1JlYWRvbmx5TWFwKTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVSZWFjdGl2ZU9iamVjdCh0YXJnZXQsIGlzUmVhZG9ubHksIGJhc2VIYW5kbGVycywgY29sbGVjdGlvbkhhbmRsZXJzLCBwcm94eU1hcCkge1xyXG4gICAgaWYgKCFpc09iamVjdCh0YXJnZXQpKSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYHZhbHVlIGNhbm5vdCBiZSBtYWRlIHJlYWN0aXZlOiAke1N0cmluZyh0YXJnZXQpfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xyXG4gICAgfVxyXG4gICAgLy8gdGFyZ2V0IGlzIGFscmVhZHkgYSBQcm94eSwgcmV0dXJuIGl0LlxyXG4gICAgLy8gZXhjZXB0aW9uOiBjYWxsaW5nIHJlYWRvbmx5KCkgb24gYSByZWFjdGl2ZSBvYmplY3RcclxuICAgIGlmICh0YXJnZXRbXCJfX3ZfcmF3XCIgLyogUmVhY3RpdmVGbGFncy5SQVcgKi9dICYmXHJcbiAgICAgICAgIShpc1JlYWRvbmx5ICYmIHRhcmdldFtcIl9fdl9pc1JlYWN0aXZlXCIgLyogUmVhY3RpdmVGbGFncy5JU19SRUFDVElWRSAqL10pKSB7XHJcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcclxuICAgIH1cclxuICAgIC8vIHRhcmdldCBhbHJlYWR5IGhhcyBjb3JyZXNwb25kaW5nIFByb3h5XHJcbiAgICBjb25zdCBleGlzdGluZ1Byb3h5ID0gcHJveHlNYXAuZ2V0KHRhcmdldCk7XHJcbiAgICBpZiAoZXhpc3RpbmdQcm94eSkge1xyXG4gICAgICAgIHJldHVybiBleGlzdGluZ1Byb3h5O1xyXG4gICAgfVxyXG4gICAgLy8gb25seSBzcGVjaWZpYyB2YWx1ZSB0eXBlcyBjYW4gYmUgb2JzZXJ2ZWQuXHJcbiAgICBjb25zdCB0YXJnZXRUeXBlID0gZ2V0VGFyZ2V0VHlwZSh0YXJnZXQpO1xyXG4gICAgaWYgKHRhcmdldFR5cGUgPT09IDAgLyogVGFyZ2V0VHlwZS5JTlZBTElEICovKSB7XHJcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcclxuICAgIH1cclxuICAgIGNvbnN0IHByb3h5ID0gbmV3IFByb3h5KHRhcmdldCwgdGFyZ2V0VHlwZSA9PT0gMiAvKiBUYXJnZXRUeXBlLkNPTExFQ1RJT04gKi8gPyBjb2xsZWN0aW9uSGFuZGxlcnMgOiBiYXNlSGFuZGxlcnMpO1xyXG4gICAgcHJveHlNYXAuc2V0KHRhcmdldCwgcHJveHkpO1xyXG4gICAgcmV0dXJuIHByb3h5O1xyXG59XHJcbmZ1bmN0aW9uIGlzUmVhY3RpdmUodmFsdWUpIHtcclxuICAgIGlmIChpc1JlYWRvbmx5KHZhbHVlKSkge1xyXG4gICAgICAgIHJldHVybiBpc1JlYWN0aXZlKHZhbHVlW1wiX192X3Jhd1wiIC8qIFJlYWN0aXZlRmxhZ3MuUkFXICovXSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gISEodmFsdWUgJiYgdmFsdWVbXCJfX3ZfaXNSZWFjdGl2ZVwiIC8qIFJlYWN0aXZlRmxhZ3MuSVNfUkVBQ1RJVkUgKi9dKTtcclxufVxyXG5mdW5jdGlvbiBpc1JlYWRvbmx5KHZhbHVlKSB7XHJcbiAgICByZXR1cm4gISEodmFsdWUgJiYgdmFsdWVbXCJfX3ZfaXNSZWFkb25seVwiIC8qIFJlYWN0aXZlRmxhZ3MuSVNfUkVBRE9OTFkgKi9dKTtcclxufVxyXG5mdW5jdGlvbiBpc1NoYWxsb3codmFsdWUpIHtcclxuICAgIHJldHVybiAhISh2YWx1ZSAmJiB2YWx1ZVtcIl9fdl9pc1NoYWxsb3dcIiAvKiBSZWFjdGl2ZUZsYWdzLklTX1NIQUxMT1cgKi9dKTtcclxufVxyXG5mdW5jdGlvbiBpc1Byb3h5KHZhbHVlKSB7XHJcbiAgICByZXR1cm4gaXNSZWFjdGl2ZSh2YWx1ZSkgfHwgaXNSZWFkb25seSh2YWx1ZSk7XHJcbn1cclxuZnVuY3Rpb24gdG9SYXcob2JzZXJ2ZWQpIHtcclxuICAgIGNvbnN0IHJhdyA9IG9ic2VydmVkICYmIG9ic2VydmVkW1wiX192X3Jhd1wiIC8qIFJlYWN0aXZlRmxhZ3MuUkFXICovXTtcclxuICAgIHJldHVybiByYXcgPyB0b1JhdyhyYXcpIDogb2JzZXJ2ZWQ7XHJcbn1cclxuZnVuY3Rpb24gbWFya1Jhdyh2YWx1ZSkge1xyXG4gICAgZGVmKHZhbHVlLCBcIl9fdl9za2lwXCIgLyogUmVhY3RpdmVGbGFncy5TS0lQICovLCB0cnVlKTtcclxuICAgIHJldHVybiB2YWx1ZTtcclxufVxyXG5jb25zdCB0b1JlYWN0aXZlID0gKHZhbHVlKSA9PiBpc09iamVjdCh2YWx1ZSkgPyByZWFjdGl2ZSh2YWx1ZSkgOiB2YWx1ZTtcclxuY29uc3QgdG9SZWFkb25seSA9ICh2YWx1ZSkgPT4gaXNPYmplY3QodmFsdWUpID8gcmVhZG9ubHkodmFsdWUpIDogdmFsdWU7XG5cbmZ1bmN0aW9uIHRyYWNrUmVmVmFsdWUocmVmKSB7XHJcbiAgICBpZiAoc2hvdWxkVHJhY2sgJiYgYWN0aXZlRWZmZWN0KSB7XHJcbiAgICAgICAgcmVmID0gdG9SYXcocmVmKTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHRyYWNrRWZmZWN0cyhyZWYuZGVwIHx8IChyZWYuZGVwID0gY3JlYXRlRGVwKCkpLCB7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHJlZixcclxuICAgICAgICAgICAgICAgIHR5cGU6IFwiZ2V0XCIgLyogVHJhY2tPcFR5cGVzLkdFVCAqLyxcclxuICAgICAgICAgICAgICAgIGtleTogJ3ZhbHVlJ1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRyYWNrRWZmZWN0cyhyZWYuZGVwIHx8IChyZWYuZGVwID0gY3JlYXRlRGVwKCkpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdHJpZ2dlclJlZlZhbHVlKHJlZiwgbmV3VmFsKSB7XHJcbiAgICByZWYgPSB0b1JhdyhyZWYpO1xyXG4gICAgaWYgKHJlZi5kZXApIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHRyaWdnZXJFZmZlY3RzKHJlZi5kZXAsIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldDogcmVmLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzZXRcIiAvKiBUcmlnZ2VyT3BUeXBlcy5TRVQgKi8sXHJcbiAgICAgICAgICAgICAgICBrZXk6ICd2YWx1ZScsXHJcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZTogbmV3VmFsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdHJpZ2dlckVmZmVjdHMocmVmLmRlcCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGlzUmVmKHIpIHtcclxuICAgIHJldHVybiAhIShyICYmIHIuX192X2lzUmVmID09PSB0cnVlKTtcclxufVxyXG5mdW5jdGlvbiByZWYodmFsdWUpIHtcclxuICAgIHJldHVybiBjcmVhdGVSZWYodmFsdWUsIGZhbHNlKTtcclxufVxyXG5mdW5jdGlvbiBzaGFsbG93UmVmKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gY3JlYXRlUmVmKHZhbHVlLCB0cnVlKTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVSZWYocmF3VmFsdWUsIHNoYWxsb3cpIHtcclxuICAgIGlmIChpc1JlZihyYXdWYWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gcmF3VmFsdWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IFJlZkltcGwocmF3VmFsdWUsIHNoYWxsb3cpO1xyXG59XHJcbmNsYXNzIFJlZkltcGwge1xyXG4gICAgY29uc3RydWN0b3IodmFsdWUsIF9fdl9pc1NoYWxsb3cpIHtcclxuICAgICAgICB0aGlzLl9fdl9pc1NoYWxsb3cgPSBfX3ZfaXNTaGFsbG93O1xyXG4gICAgICAgIHRoaXMuZGVwID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMuX192X2lzUmVmID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLl9yYXdWYWx1ZSA9IF9fdl9pc1NoYWxsb3cgPyB2YWx1ZSA6IHRvUmF3KHZhbHVlKTtcclxuICAgICAgICB0aGlzLl92YWx1ZSA9IF9fdl9pc1NoYWxsb3cgPyB2YWx1ZSA6IHRvUmVhY3RpdmUodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgZ2V0IHZhbHVlKCkge1xyXG4gICAgICAgIHRyYWNrUmVmVmFsdWUodGhpcyk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gICAgfVxyXG4gICAgc2V0IHZhbHVlKG5ld1ZhbCkge1xyXG4gICAgICAgIGNvbnN0IHVzZURpcmVjdFZhbHVlID0gdGhpcy5fX3ZfaXNTaGFsbG93IHx8IGlzU2hhbGxvdyhuZXdWYWwpIHx8IGlzUmVhZG9ubHkobmV3VmFsKTtcclxuICAgICAgICBuZXdWYWwgPSB1c2VEaXJlY3RWYWx1ZSA/IG5ld1ZhbCA6IHRvUmF3KG5ld1ZhbCk7XHJcbiAgICAgICAgaWYgKGhhc0NoYW5nZWQobmV3VmFsLCB0aGlzLl9yYXdWYWx1ZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5fcmF3VmFsdWUgPSBuZXdWYWw7XHJcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdXNlRGlyZWN0VmFsdWUgPyBuZXdWYWwgOiB0b1JlYWN0aXZlKG5ld1ZhbCk7XHJcbiAgICAgICAgICAgIHRyaWdnZXJSZWZWYWx1ZSh0aGlzLCBuZXdWYWwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB0cmlnZ2VyUmVmKHJlZikge1xyXG4gICAgdHJpZ2dlclJlZlZhbHVlKHJlZiwgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gcmVmLnZhbHVlIDogdm9pZCAwKTtcclxufVxyXG5mdW5jdGlvbiB1bnJlZihyZWYpIHtcclxuICAgIHJldHVybiBpc1JlZihyZWYpID8gcmVmLnZhbHVlIDogcmVmO1xyXG59XHJcbmNvbnN0IHNoYWxsb3dVbndyYXBIYW5kbGVycyA9IHtcclxuICAgIGdldDogKHRhcmdldCwga2V5LCByZWNlaXZlcikgPT4gdW5yZWYoUmVmbGVjdC5nZXQodGFyZ2V0LCBrZXksIHJlY2VpdmVyKSksXHJcbiAgICBzZXQ6ICh0YXJnZXQsIGtleSwgdmFsdWUsIHJlY2VpdmVyKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgb2xkVmFsdWUgPSB0YXJnZXRba2V5XTtcclxuICAgICAgICBpZiAoaXNSZWYob2xkVmFsdWUpICYmICFpc1JlZih2YWx1ZSkpIHtcclxuICAgICAgICAgICAgb2xkVmFsdWUudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5zZXQodGFyZ2V0LCBrZXksIHZhbHVlLCByZWNlaXZlcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5mdW5jdGlvbiBwcm94eVJlZnMob2JqZWN0V2l0aFJlZnMpIHtcclxuICAgIHJldHVybiBpc1JlYWN0aXZlKG9iamVjdFdpdGhSZWZzKVxyXG4gICAgICAgID8gb2JqZWN0V2l0aFJlZnNcclxuICAgICAgICA6IG5ldyBQcm94eShvYmplY3RXaXRoUmVmcywgc2hhbGxvd1Vud3JhcEhhbmRsZXJzKTtcclxufVxyXG5jbGFzcyBDdXN0b21SZWZJbXBsIHtcclxuICAgIGNvbnN0cnVjdG9yKGZhY3RvcnkpIHtcclxuICAgICAgICB0aGlzLmRlcCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLl9fdl9pc1JlZiA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgeyBnZXQsIHNldCB9ID0gZmFjdG9yeSgoKSA9PiB0cmFja1JlZlZhbHVlKHRoaXMpLCAoKSA9PiB0cmlnZ2VyUmVmVmFsdWUodGhpcykpO1xyXG4gICAgICAgIHRoaXMuX2dldCA9IGdldDtcclxuICAgICAgICB0aGlzLl9zZXQgPSBzZXQ7XHJcbiAgICB9XHJcbiAgICBnZXQgdmFsdWUoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldCgpO1xyXG4gICAgfVxyXG4gICAgc2V0IHZhbHVlKG5ld1ZhbCkge1xyXG4gICAgICAgIHRoaXMuX3NldChuZXdWYWwpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGN1c3RvbVJlZihmYWN0b3J5KSB7XHJcbiAgICByZXR1cm4gbmV3IEN1c3RvbVJlZkltcGwoZmFjdG9yeSk7XHJcbn1cclxuZnVuY3Rpb24gdG9SZWZzKG9iamVjdCkge1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaXNQcm94eShvYmplY3QpKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKGB0b1JlZnMoKSBleHBlY3RzIGEgcmVhY3RpdmUgb2JqZWN0IGJ1dCByZWNlaXZlZCBhIHBsYWluIG9uZS5gKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJldCA9IGlzQXJyYXkob2JqZWN0KSA/IG5ldyBBcnJheShvYmplY3QubGVuZ3RoKSA6IHt9O1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqZWN0KSB7XHJcbiAgICAgICAgcmV0W2tleV0gPSB0b1JlZihvYmplY3QsIGtleSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0O1xyXG59XHJcbmNsYXNzIE9iamVjdFJlZkltcGwge1xyXG4gICAgY29uc3RydWN0b3IoX29iamVjdCwgX2tleSwgX2RlZmF1bHRWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuX29iamVjdCA9IF9vYmplY3Q7XHJcbiAgICAgICAgdGhpcy5fa2V5ID0gX2tleTtcclxuICAgICAgICB0aGlzLl9kZWZhdWx0VmFsdWUgPSBfZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIHRoaXMuX192X2lzUmVmID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGdldCB2YWx1ZSgpIHtcclxuICAgICAgICBjb25zdCB2YWwgPSB0aGlzLl9vYmplY3RbdGhpcy5fa2V5XTtcclxuICAgICAgICByZXR1cm4gdmFsID09PSB1bmRlZmluZWQgPyB0aGlzLl9kZWZhdWx0VmFsdWUgOiB2YWw7XHJcbiAgICB9XHJcbiAgICBzZXQgdmFsdWUobmV3VmFsKSB7XHJcbiAgICAgICAgdGhpcy5fb2JqZWN0W3RoaXMuX2tleV0gPSBuZXdWYWw7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdG9SZWYob2JqZWN0LCBrZXksIGRlZmF1bHRWYWx1ZSkge1xyXG4gICAgY29uc3QgdmFsID0gb2JqZWN0W2tleV07XHJcbiAgICByZXR1cm4gaXNSZWYodmFsKVxyXG4gICAgICAgID8gdmFsXHJcbiAgICAgICAgOiBuZXcgT2JqZWN0UmVmSW1wbChvYmplY3QsIGtleSwgZGVmYXVsdFZhbHVlKTtcclxufVxuXG52YXIgX2E7XHJcbmNsYXNzIENvbXB1dGVkUmVmSW1wbCB7XHJcbiAgICBjb25zdHJ1Y3RvcihnZXR0ZXIsIF9zZXR0ZXIsIGlzUmVhZG9ubHksIGlzU1NSKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0dGVyID0gX3NldHRlcjtcclxuICAgICAgICB0aGlzLmRlcCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLl9fdl9pc1JlZiA9IHRydWU7XHJcbiAgICAgICAgdGhpc1tfYV0gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl9kaXJ0eSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5lZmZlY3QgPSBuZXcgUmVhY3RpdmVFZmZlY3QoZ2V0dGVyLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5fZGlydHkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RpcnR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRyaWdnZXJSZWZWYWx1ZSh0aGlzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZWZmZWN0LmNvbXB1dGVkID0gdGhpcztcclxuICAgICAgICB0aGlzLmVmZmVjdC5hY3RpdmUgPSB0aGlzLl9jYWNoZWFibGUgPSAhaXNTU1I7XHJcbiAgICAgICAgdGhpc1tcIl9fdl9pc1JlYWRvbmx5XCIgLyogUmVhY3RpdmVGbGFncy5JU19SRUFET05MWSAqL10gPSBpc1JlYWRvbmx5O1xyXG4gICAgfVxyXG4gICAgZ2V0IHZhbHVlKCkge1xyXG4gICAgICAgIC8vIHRoZSBjb21wdXRlZCByZWYgbWF5IGdldCB3cmFwcGVkIGJ5IG90aGVyIHByb3hpZXMgZS5nLiByZWFkb25seSgpICMzMzc2XHJcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRvUmF3KHRoaXMpO1xyXG4gICAgICAgIHRyYWNrUmVmVmFsdWUoc2VsZik7XHJcbiAgICAgICAgaWYgKHNlbGYuX2RpcnR5IHx8ICFzZWxmLl9jYWNoZWFibGUpIHtcclxuICAgICAgICAgICAgc2VsZi5fZGlydHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgc2VsZi5fdmFsdWUgPSBzZWxmLmVmZmVjdC5ydW4oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHNlbGYuX3ZhbHVlO1xyXG4gICAgfVxyXG4gICAgc2V0IHZhbHVlKG5ld1ZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0dGVyKG5ld1ZhbHVlKTtcclxuICAgIH1cclxufVxyXG5fYSA9IFwiX192X2lzUmVhZG9ubHlcIiAvKiBSZWFjdGl2ZUZsYWdzLklTX1JFQURPTkxZICovO1xyXG5mdW5jdGlvbiBjb21wdXRlZChnZXR0ZXJPck9wdGlvbnMsIGRlYnVnT3B0aW9ucywgaXNTU1IgPSBmYWxzZSkge1xyXG4gICAgbGV0IGdldHRlcjtcclxuICAgIGxldCBzZXR0ZXI7XHJcbiAgICBjb25zdCBvbmx5R2V0dGVyID0gaXNGdW5jdGlvbihnZXR0ZXJPck9wdGlvbnMpO1xyXG4gICAgaWYgKG9ubHlHZXR0ZXIpIHtcclxuICAgICAgICBnZXR0ZXIgPSBnZXR0ZXJPck9wdGlvbnM7XHJcbiAgICAgICAgc2V0dGVyID0gKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgICAgID8gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdXcml0ZSBvcGVyYXRpb24gZmFpbGVkOiBjb21wdXRlZCB2YWx1ZSBpcyByZWFkb25seScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDogTk9PUDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGdldHRlciA9IGdldHRlck9yT3B0aW9ucy5nZXQ7XHJcbiAgICAgICAgc2V0dGVyID0gZ2V0dGVyT3JPcHRpb25zLnNldDtcclxuICAgIH1cclxuICAgIGNvbnN0IGNSZWYgPSBuZXcgQ29tcHV0ZWRSZWZJbXBsKGdldHRlciwgc2V0dGVyLCBvbmx5R2V0dGVyIHx8ICFzZXR0ZXIsIGlzU1NSKTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgZGVidWdPcHRpb25zICYmICFpc1NTUikge1xyXG4gICAgICAgIGNSZWYuZWZmZWN0Lm9uVHJhY2sgPSBkZWJ1Z09wdGlvbnMub25UcmFjaztcclxuICAgICAgICBjUmVmLmVmZmVjdC5vblRyaWdnZXIgPSBkZWJ1Z09wdGlvbnMub25UcmlnZ2VyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNSZWY7XHJcbn1cblxudmFyIF9hJDE7XHJcbmNvbnN0IHRpY2sgPSAvKiNfX1BVUkVfXyovIFByb21pc2UucmVzb2x2ZSgpO1xyXG5jb25zdCBxdWV1ZSA9IFtdO1xyXG5sZXQgcXVldWVkID0gZmFsc2U7XHJcbmNvbnN0IHNjaGVkdWxlciA9IChmbikgPT4ge1xyXG4gICAgcXVldWUucHVzaChmbik7XHJcbiAgICBpZiAoIXF1ZXVlZCkge1xyXG4gICAgICAgIHF1ZXVlZCA9IHRydWU7XHJcbiAgICAgICAgdGljay50aGVuKGZsdXNoKTtcclxuICAgIH1cclxufTtcclxuY29uc3QgZmx1c2ggPSAoKSA9PiB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHF1ZXVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgcXVldWVbaV0oKTtcclxuICAgIH1cclxuICAgIHF1ZXVlLmxlbmd0aCA9IDA7XHJcbiAgICBxdWV1ZWQgPSBmYWxzZTtcclxufTtcclxuY2xhc3MgRGVmZXJyZWRDb21wdXRlZFJlZkltcGwge1xyXG4gICAgY29uc3RydWN0b3IoZ2V0dGVyKSB7XHJcbiAgICAgICAgdGhpcy5kZXAgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5fZGlydHkgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX192X2lzUmVmID0gdHJ1ZTtcclxuICAgICAgICB0aGlzW19hJDFdID0gdHJ1ZTtcclxuICAgICAgICBsZXQgY29tcGFyZVRhcmdldDtcclxuICAgICAgICBsZXQgaGFzQ29tcGFyZVRhcmdldCA9IGZhbHNlO1xyXG4gICAgICAgIGxldCBzY2hlZHVsZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmVmZmVjdCA9IG5ldyBSZWFjdGl2ZUVmZmVjdChnZXR0ZXIsIChjb21wdXRlZFRyaWdnZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZGVwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29tcHV0ZWRUcmlnZ2VyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29tcGFyZVRhcmdldCA9IHRoaXMuX3ZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc0NvbXBhcmVUYXJnZXQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXNjaGVkdWxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlVG9Db21wYXJlID0gaGFzQ29tcGFyZVRhcmdldCA/IGNvbXBhcmVUYXJnZXQgOiB0aGlzLl92YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc0NvbXBhcmVUYXJnZXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZXIoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5lZmZlY3QuYWN0aXZlICYmIHRoaXMuX2dldCgpICE9PSB2YWx1ZVRvQ29tcGFyZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlclJlZlZhbHVlKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVkdWxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gY2hhaW5lZCB1cHN0cmVhbSBjb21wdXRlZHMgYXJlIG5vdGlmaWVkIHN5bmNocm9ub3VzbHkgdG8gZW5zdXJlXHJcbiAgICAgICAgICAgICAgICAvLyB2YWx1ZSBpbnZhbGlkYXRpb24gaW4gY2FzZSBvZiBzeW5jIGFjY2Vzczsgbm9ybWFsIGVmZmVjdHMgYXJlXHJcbiAgICAgICAgICAgICAgICAvLyBkZWZlcnJlZCB0byBiZSB0cmlnZ2VyZWQgaW4gc2NoZWR1bGVyLlxyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIHRoaXMuZGVwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUuY29tcHV0ZWQgaW5zdGFuY2VvZiBEZWZlcnJlZENvbXB1dGVkUmVmSW1wbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnNjaGVkdWxlcih0cnVlIC8qIGNvbXB1dGVkVHJpZ2dlciAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuX2RpcnR5ID0gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmVmZmVjdC5jb21wdXRlZCA9IHRoaXM7XHJcbiAgICB9XHJcbiAgICBfZ2V0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9kaXJ0eSkge1xyXG4gICAgICAgICAgICB0aGlzLl9kaXJ0eSA9IGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm4gKHRoaXMuX3ZhbHVlID0gdGhpcy5lZmZlY3QucnVuKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgICB9XHJcbiAgICBnZXQgdmFsdWUoKSB7XHJcbiAgICAgICAgdHJhY2tSZWZWYWx1ZSh0aGlzKTtcclxuICAgICAgICAvLyB0aGUgY29tcHV0ZWQgcmVmIG1heSBnZXQgd3JhcHBlZCBieSBvdGhlciBwcm94aWVzIGUuZy4gcmVhZG9ubHkoKSAjMzM3NlxyXG4gICAgICAgIHJldHVybiB0b1Jhdyh0aGlzKS5fZ2V0KCk7XHJcbiAgICB9XHJcbn1cclxuX2EkMSA9IFwiX192X2lzUmVhZG9ubHlcIiAvKiBSZWFjdGl2ZUZsYWdzLklTX1JFQURPTkxZICovO1xyXG5mdW5jdGlvbiBkZWZlcnJlZENvbXB1dGVkKGdldHRlcikge1xyXG4gICAgcmV0dXJuIG5ldyBEZWZlcnJlZENvbXB1dGVkUmVmSW1wbChnZXR0ZXIpO1xyXG59XG5cbmV4cG9ydCB7IEVmZmVjdFNjb3BlLCBJVEVSQVRFX0tFWSwgUmVhY3RpdmVFZmZlY3QsIGNvbXB1dGVkLCBjdXN0b21SZWYsIGRlZmVycmVkQ29tcHV0ZWQsIGVmZmVjdCwgZWZmZWN0U2NvcGUsIGVuYWJsZVRyYWNraW5nLCBnZXRDdXJyZW50U2NvcGUsIGlzUHJveHksIGlzUmVhY3RpdmUsIGlzUmVhZG9ubHksIGlzUmVmLCBpc1NoYWxsb3csIG1hcmtSYXcsIG9uU2NvcGVEaXNwb3NlLCBwYXVzZVRyYWNraW5nLCBwcm94eVJlZnMsIHJlYWN0aXZlLCByZWFkb25seSwgcmVmLCByZXNldFRyYWNraW5nLCBzaGFsbG93UmVhY3RpdmUsIHNoYWxsb3dSZWFkb25seSwgc2hhbGxvd1JlZiwgc3RvcCwgdG9SYXcsIHRvUmVmLCB0b1JlZnMsIHRyYWNrLCB0cmlnZ2VyLCB0cmlnZ2VyUmVmLCB1bnJlZiB9O1xuIiwiaW1wb3J0IHsgcGF1c2VUcmFja2luZywgcmVzZXRUcmFja2luZywgaXNSZWYsIHRvUmF3LCBpc1NoYWxsb3cgYXMgaXNTaGFsbG93JDEsIGlzUmVhY3RpdmUsIFJlYWN0aXZlRWZmZWN0LCByZWYsIHNoYWxsb3dSZWFkb25seSwgdHJhY2ssIHJlYWN0aXZlLCBzaGFsbG93UmVhY3RpdmUsIHRyaWdnZXIsIGlzUHJveHksIEVmZmVjdFNjb3BlLCBtYXJrUmF3LCBwcm94eVJlZnMsIGNvbXB1dGVkIGFzIGNvbXB1dGVkJDEsIGlzUmVhZG9ubHkgfSBmcm9tICdAdnVlL3JlYWN0aXZpdHknO1xuZXhwb3J0IHsgRWZmZWN0U2NvcGUsIFJlYWN0aXZlRWZmZWN0LCBjdXN0b21SZWYsIGVmZmVjdCwgZWZmZWN0U2NvcGUsIGdldEN1cnJlbnRTY29wZSwgaXNQcm94eSwgaXNSZWFjdGl2ZSwgaXNSZWFkb25seSwgaXNSZWYsIGlzU2hhbGxvdywgbWFya1Jhdywgb25TY29wZURpc3Bvc2UsIHByb3h5UmVmcywgcmVhY3RpdmUsIHJlYWRvbmx5LCByZWYsIHNoYWxsb3dSZWFjdGl2ZSwgc2hhbGxvd1JlYWRvbmx5LCBzaGFsbG93UmVmLCBzdG9wLCB0b1JhdywgdG9SZWYsIHRvUmVmcywgdHJpZ2dlclJlZiwgdW5yZWYgfSBmcm9tICdAdnVlL3JlYWN0aXZpdHknO1xuaW1wb3J0IHsgaXNTdHJpbmcsIGlzRnVuY3Rpb24sIGlzUHJvbWlzZSwgaXNBcnJheSwgTk9PUCwgZ2V0R2xvYmFsVGhpcywgZXh0ZW5kLCBFTVBUWV9PQkosIHRvSGFuZGxlcktleSwgdG9OdW1iZXIsIGh5cGhlbmF0ZSwgY2FtZWxpemUsIGlzT2JqZWN0LCBpc09uLCBoYXNPd24sIGlzTW9kZWxMaXN0ZW5lciwgaGFzQ2hhbmdlZCwgcmVtb3ZlLCBpc1NldCwgaXNNYXAsIGlzUGxhaW5PYmplY3QsIGludm9rZUFycmF5Rm5zLCBpc0J1aWx0SW5EaXJlY3RpdmUsIGNhcGl0YWxpemUsIGlzR2xvYmFsbHlXaGl0ZWxpc3RlZCwgZGVmLCBpc1Jlc2VydmVkUHJvcCwgRU1QVFlfQVJSLCB0b1Jhd1R5cGUsIG1ha2VNYXAsIE5PLCBub3JtYWxpemVDbGFzcywgbm9ybWFsaXplU3R5bGUgfSBmcm9tICdAdnVlL3NoYXJlZCc7XG5leHBvcnQgeyBjYW1lbGl6ZSwgY2FwaXRhbGl6ZSwgbm9ybWFsaXplQ2xhc3MsIG5vcm1hbGl6ZVByb3BzLCBub3JtYWxpemVTdHlsZSwgdG9EaXNwbGF5U3RyaW5nLCB0b0hhbmRsZXJLZXkgfSBmcm9tICdAdnVlL3NoYXJlZCc7XG5cbmNvbnN0IHN0YWNrID0gW107XHJcbmZ1bmN0aW9uIHB1c2hXYXJuaW5nQ29udGV4dCh2bm9kZSkge1xyXG4gICAgc3RhY2sucHVzaCh2bm9kZSk7XHJcbn1cclxuZnVuY3Rpb24gcG9wV2FybmluZ0NvbnRleHQoKSB7XHJcbiAgICBzdGFjay5wb3AoKTtcclxufVxyXG5mdW5jdGlvbiB3YXJuKG1zZywgLi4uYXJncykge1xyXG4gICAgLy8gYXZvaWQgcHJvcHMgZm9ybWF0dGluZyBvciB3YXJuIGhhbmRsZXIgdHJhY2tpbmcgZGVwcyB0aGF0IG1pZ2h0IGJlIG11dGF0ZWRcclxuICAgIC8vIGR1cmluZyBwYXRjaCwgbGVhZGluZyB0byBpbmZpbml0ZSByZWN1cnNpb24uXHJcbiAgICBwYXVzZVRyYWNraW5nKCk7XHJcbiAgICBjb25zdCBpbnN0YW5jZSA9IHN0YWNrLmxlbmd0aCA/IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdLmNvbXBvbmVudCA6IG51bGw7XHJcbiAgICBjb25zdCBhcHBXYXJuSGFuZGxlciA9IGluc3RhbmNlICYmIGluc3RhbmNlLmFwcENvbnRleHQuY29uZmlnLndhcm5IYW5kbGVyO1xyXG4gICAgY29uc3QgdHJhY2UgPSBnZXRDb21wb25lbnRUcmFjZSgpO1xyXG4gICAgaWYgKGFwcFdhcm5IYW5kbGVyKSB7XHJcbiAgICAgICAgY2FsbFdpdGhFcnJvckhhbmRsaW5nKGFwcFdhcm5IYW5kbGVyLCBpbnN0YW5jZSwgMTEgLyogRXJyb3JDb2Rlcy5BUFBfV0FSTl9IQU5ETEVSICovLCBbXHJcbiAgICAgICAgICAgIG1zZyArIGFyZ3Muam9pbignJyksXHJcbiAgICAgICAgICAgIGluc3RhbmNlICYmIGluc3RhbmNlLnByb3h5LFxyXG4gICAgICAgICAgICB0cmFjZVxyXG4gICAgICAgICAgICAgICAgLm1hcCgoeyB2bm9kZSB9KSA9PiBgYXQgPCR7Zm9ybWF0Q29tcG9uZW50TmFtZShpbnN0YW5jZSwgdm5vZGUudHlwZSl9PmApXHJcbiAgICAgICAgICAgICAgICAuam9pbignXFxuJyksXHJcbiAgICAgICAgICAgIHRyYWNlXHJcbiAgICAgICAgXSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCB3YXJuQXJncyA9IFtgW1Z1ZSB3YXJuXTogJHttc2d9YCwgLi4uYXJnc107XHJcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXHJcbiAgICAgICAgaWYgKHRyYWNlLmxlbmd0aCAmJlxyXG4gICAgICAgICAgICAvLyBhdm9pZCBzcGFtbWluZyBjb25zb2xlIGR1cmluZyB0ZXN0c1xyXG4gICAgICAgICAgICAhZmFsc2UpIHtcclxuICAgICAgICAgICAgd2FybkFyZ3MucHVzaChgXFxuYCwgLi4uZm9ybWF0VHJhY2UodHJhY2UpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc29sZS53YXJuKC4uLndhcm5BcmdzKTtcclxuICAgIH1cclxuICAgIHJlc2V0VHJhY2tpbmcoKTtcclxufVxyXG5mdW5jdGlvbiBnZXRDb21wb25lbnRUcmFjZSgpIHtcclxuICAgIGxldCBjdXJyZW50Vk5vZGUgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcclxuICAgIGlmICghY3VycmVudFZOb2RlKSB7XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gICAgLy8gd2UgY2FuJ3QganVzdCB1c2UgdGhlIHN0YWNrIGJlY2F1c2UgaXQgd2lsbCBiZSBpbmNvbXBsZXRlIGR1cmluZyB1cGRhdGVzXHJcbiAgICAvLyB0aGF0IGRpZCBub3Qgc3RhcnQgZnJvbSB0aGUgcm9vdC4gUmUtY29uc3RydWN0IHRoZSBwYXJlbnQgY2hhaW4gdXNpbmdcclxuICAgIC8vIGluc3RhbmNlIHBhcmVudCBwb2ludGVycy5cclxuICAgIGNvbnN0IG5vcm1hbGl6ZWRTdGFjayA9IFtdO1xyXG4gICAgd2hpbGUgKGN1cnJlbnRWTm9kZSkge1xyXG4gICAgICAgIGNvbnN0IGxhc3QgPSBub3JtYWxpemVkU3RhY2tbMF07XHJcbiAgICAgICAgaWYgKGxhc3QgJiYgbGFzdC52bm9kZSA9PT0gY3VycmVudFZOb2RlKSB7XHJcbiAgICAgICAgICAgIGxhc3QucmVjdXJzZUNvdW50Kys7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBub3JtYWxpemVkU3RhY2sucHVzaCh7XHJcbiAgICAgICAgICAgICAgICB2bm9kZTogY3VycmVudFZOb2RlLFxyXG4gICAgICAgICAgICAgICAgcmVjdXJzZUNvdW50OiAwXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBwYXJlbnRJbnN0YW5jZSA9IGN1cnJlbnRWTm9kZS5jb21wb25lbnQgJiYgY3VycmVudFZOb2RlLmNvbXBvbmVudC5wYXJlbnQ7XHJcbiAgICAgICAgY3VycmVudFZOb2RlID0gcGFyZW50SW5zdGFuY2UgJiYgcGFyZW50SW5zdGFuY2Uudm5vZGU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbm9ybWFsaXplZFN0YWNrO1xyXG59XHJcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXHJcbmZ1bmN0aW9uIGZvcm1hdFRyYWNlKHRyYWNlKSB7XHJcbiAgICBjb25zdCBsb2dzID0gW107XHJcbiAgICB0cmFjZS5mb3JFYWNoKChlbnRyeSwgaSkgPT4ge1xyXG4gICAgICAgIGxvZ3MucHVzaCguLi4oaSA9PT0gMCA/IFtdIDogW2BcXG5gXSksIC4uLmZvcm1hdFRyYWNlRW50cnkoZW50cnkpKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGxvZ3M7XHJcbn1cclxuZnVuY3Rpb24gZm9ybWF0VHJhY2VFbnRyeSh7IHZub2RlLCByZWN1cnNlQ291bnQgfSkge1xyXG4gICAgY29uc3QgcG9zdGZpeCA9IHJlY3Vyc2VDb3VudCA+IDAgPyBgLi4uICgke3JlY3Vyc2VDb3VudH0gcmVjdXJzaXZlIGNhbGxzKWAgOiBgYDtcclxuICAgIGNvbnN0IGlzUm9vdCA9IHZub2RlLmNvbXBvbmVudCA/IHZub2RlLmNvbXBvbmVudC5wYXJlbnQgPT0gbnVsbCA6IGZhbHNlO1xyXG4gICAgY29uc3Qgb3BlbiA9IGAgYXQgPCR7Zm9ybWF0Q29tcG9uZW50TmFtZSh2bm9kZS5jb21wb25lbnQsIHZub2RlLnR5cGUsIGlzUm9vdCl9YDtcclxuICAgIGNvbnN0IGNsb3NlID0gYD5gICsgcG9zdGZpeDtcclxuICAgIHJldHVybiB2bm9kZS5wcm9wc1xyXG4gICAgICAgID8gW29wZW4sIC4uLmZvcm1hdFByb3BzKHZub2RlLnByb3BzKSwgY2xvc2VdXHJcbiAgICAgICAgOiBbb3BlbiArIGNsb3NlXTtcclxufVxyXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG5mdW5jdGlvbiBmb3JtYXRQcm9wcyhwcm9wcykge1xyXG4gICAgY29uc3QgcmVzID0gW107XHJcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocHJvcHMpO1xyXG4gICAga2V5cy5zbGljZSgwLCAzKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgcmVzLnB1c2goLi4uZm9ybWF0UHJvcChrZXksIHByb3BzW2tleV0pKTtcclxuICAgIH0pO1xyXG4gICAgaWYgKGtleXMubGVuZ3RoID4gMykge1xyXG4gICAgICAgIHJlcy5wdXNoKGAgLi4uYCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG59XHJcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXHJcbmZ1bmN0aW9uIGZvcm1hdFByb3Aoa2V5LCB2YWx1ZSwgcmF3KSB7XHJcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XHJcbiAgICAgICAgdmFsdWUgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XHJcbiAgICAgICAgcmV0dXJuIHJhdyA/IHZhbHVlIDogW2Ake2tleX09JHt2YWx1ZX1gXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHxcclxuICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyB8fFxyXG4gICAgICAgIHZhbHVlID09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gcmF3ID8gdmFsdWUgOiBbYCR7a2V5fT0ke3ZhbHVlfWBdO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNSZWYodmFsdWUpKSB7XHJcbiAgICAgICAgdmFsdWUgPSBmb3JtYXRQcm9wKGtleSwgdG9SYXcodmFsdWUudmFsdWUpLCB0cnVlKTtcclxuICAgICAgICByZXR1cm4gcmF3ID8gdmFsdWUgOiBbYCR7a2V5fT1SZWY8YCwgdmFsdWUsIGA+YF07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xyXG4gICAgICAgIHJldHVybiBbYCR7a2V5fT1mbiR7dmFsdWUubmFtZSA/IGA8JHt2YWx1ZS5uYW1lfT5gIDogYGB9YF07XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICB2YWx1ZSA9IHRvUmF3KHZhbHVlKTtcclxuICAgICAgICByZXR1cm4gcmF3ID8gdmFsdWUgOiBbYCR7a2V5fT1gLCB2YWx1ZV07XHJcbiAgICB9XHJcbn1cblxuY29uc3QgRXJyb3JUeXBlU3RyaW5ncyA9IHtcclxuICAgIFtcInNwXCIgLyogTGlmZWN5Y2xlSG9va3MuU0VSVkVSX1BSRUZFVENIICovXTogJ3NlcnZlclByZWZldGNoIGhvb2snLFxyXG4gICAgW1wiYmNcIiAvKiBMaWZlY3ljbGVIb29rcy5CRUZPUkVfQ1JFQVRFICovXTogJ2JlZm9yZUNyZWF0ZSBob29rJyxcclxuICAgIFtcImNcIiAvKiBMaWZlY3ljbGVIb29rcy5DUkVBVEVEICovXTogJ2NyZWF0ZWQgaG9vaycsXHJcbiAgICBbXCJibVwiIC8qIExpZmVjeWNsZUhvb2tzLkJFRk9SRV9NT1VOVCAqL106ICdiZWZvcmVNb3VudCBob29rJyxcclxuICAgIFtcIm1cIiAvKiBMaWZlY3ljbGVIb29rcy5NT1VOVEVEICovXTogJ21vdW50ZWQgaG9vaycsXHJcbiAgICBbXCJidVwiIC8qIExpZmVjeWNsZUhvb2tzLkJFRk9SRV9VUERBVEUgKi9dOiAnYmVmb3JlVXBkYXRlIGhvb2snLFxyXG4gICAgW1widVwiIC8qIExpZmVjeWNsZUhvb2tzLlVQREFURUQgKi9dOiAndXBkYXRlZCcsXHJcbiAgICBbXCJidW1cIiAvKiBMaWZlY3ljbGVIb29rcy5CRUZPUkVfVU5NT1VOVCAqL106ICdiZWZvcmVVbm1vdW50IGhvb2snLFxyXG4gICAgW1widW1cIiAvKiBMaWZlY3ljbGVIb29rcy5VTk1PVU5URUQgKi9dOiAndW5tb3VudGVkIGhvb2snLFxyXG4gICAgW1wiYVwiIC8qIExpZmVjeWNsZUhvb2tzLkFDVElWQVRFRCAqL106ICdhY3RpdmF0ZWQgaG9vaycsXHJcbiAgICBbXCJkYVwiIC8qIExpZmVjeWNsZUhvb2tzLkRFQUNUSVZBVEVEICovXTogJ2RlYWN0aXZhdGVkIGhvb2snLFxyXG4gICAgW1wiZWNcIiAvKiBMaWZlY3ljbGVIb29rcy5FUlJPUl9DQVBUVVJFRCAqL106ICdlcnJvckNhcHR1cmVkIGhvb2snLFxyXG4gICAgW1wicnRjXCIgLyogTGlmZWN5Y2xlSG9va3MuUkVOREVSX1RSQUNLRUQgKi9dOiAncmVuZGVyVHJhY2tlZCBob29rJyxcclxuICAgIFtcInJ0Z1wiIC8qIExpZmVjeWNsZUhvb2tzLlJFTkRFUl9UUklHR0VSRUQgKi9dOiAncmVuZGVyVHJpZ2dlcmVkIGhvb2snLFxyXG4gICAgWzAgLyogRXJyb3JDb2Rlcy5TRVRVUF9GVU5DVElPTiAqL106ICdzZXR1cCBmdW5jdGlvbicsXHJcbiAgICBbMSAvKiBFcnJvckNvZGVzLlJFTkRFUl9GVU5DVElPTiAqL106ICdyZW5kZXIgZnVuY3Rpb24nLFxyXG4gICAgWzIgLyogRXJyb3JDb2Rlcy5XQVRDSF9HRVRURVIgKi9dOiAnd2F0Y2hlciBnZXR0ZXInLFxyXG4gICAgWzMgLyogRXJyb3JDb2Rlcy5XQVRDSF9DQUxMQkFDSyAqL106ICd3YXRjaGVyIGNhbGxiYWNrJyxcclxuICAgIFs0IC8qIEVycm9yQ29kZXMuV0FUQ0hfQ0xFQU5VUCAqL106ICd3YXRjaGVyIGNsZWFudXAgZnVuY3Rpb24nLFxyXG4gICAgWzUgLyogRXJyb3JDb2Rlcy5OQVRJVkVfRVZFTlRfSEFORExFUiAqL106ICduYXRpdmUgZXZlbnQgaGFuZGxlcicsXHJcbiAgICBbNiAvKiBFcnJvckNvZGVzLkNPTVBPTkVOVF9FVkVOVF9IQU5ETEVSICovXTogJ2NvbXBvbmVudCBldmVudCBoYW5kbGVyJyxcclxuICAgIFs3IC8qIEVycm9yQ29kZXMuVk5PREVfSE9PSyAqL106ICd2bm9kZSBob29rJyxcclxuICAgIFs4IC8qIEVycm9yQ29kZXMuRElSRUNUSVZFX0hPT0sgKi9dOiAnZGlyZWN0aXZlIGhvb2snLFxyXG4gICAgWzkgLyogRXJyb3JDb2Rlcy5UUkFOU0lUSU9OX0hPT0sgKi9dOiAndHJhbnNpdGlvbiBob29rJyxcclxuICAgIFsxMCAvKiBFcnJvckNvZGVzLkFQUF9FUlJPUl9IQU5ETEVSICovXTogJ2FwcCBlcnJvckhhbmRsZXInLFxyXG4gICAgWzExIC8qIEVycm9yQ29kZXMuQVBQX1dBUk5fSEFORExFUiAqL106ICdhcHAgd2FybkhhbmRsZXInLFxyXG4gICAgWzEyIC8qIEVycm9yQ29kZXMuRlVOQ1RJT05fUkVGICovXTogJ3JlZiBmdW5jdGlvbicsXHJcbiAgICBbMTMgLyogRXJyb3JDb2Rlcy5BU1lOQ19DT01QT05FTlRfTE9BREVSICovXTogJ2FzeW5jIGNvbXBvbmVudCBsb2FkZXInLFxyXG4gICAgWzE0IC8qIEVycm9yQ29kZXMuU0NIRURVTEVSICovXTogJ3NjaGVkdWxlciBmbHVzaC4gVGhpcyBpcyBsaWtlbHkgYSBWdWUgaW50ZXJuYWxzIGJ1Zy4gJyArXHJcbiAgICAgICAgJ1BsZWFzZSBvcGVuIGFuIGlzc3VlIGF0IGh0dHBzOi8vbmV3LWlzc3VlLnZ1ZWpzLm9yZy8/cmVwbz12dWVqcy9jb3JlJ1xyXG59O1xyXG5mdW5jdGlvbiBjYWxsV2l0aEVycm9ySGFuZGxpbmcoZm4sIGluc3RhbmNlLCB0eXBlLCBhcmdzKSB7XHJcbiAgICBsZXQgcmVzO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICByZXMgPSBhcmdzID8gZm4oLi4uYXJncykgOiBmbigpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgIGhhbmRsZUVycm9yKGVyciwgaW5zdGFuY2UsIHR5cGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxufVxyXG5mdW5jdGlvbiBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhmbiwgaW5zdGFuY2UsIHR5cGUsIGFyZ3MpIHtcclxuICAgIGlmIChpc0Z1bmN0aW9uKGZuKSkge1xyXG4gICAgICAgIGNvbnN0IHJlcyA9IGNhbGxXaXRoRXJyb3JIYW5kbGluZyhmbiwgaW5zdGFuY2UsIHR5cGUsIGFyZ3MpO1xyXG4gICAgICAgIGlmIChyZXMgJiYgaXNQcm9taXNlKHJlcykpIHtcclxuICAgICAgICAgICAgcmVzLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICBoYW5kbGVFcnJvcihlcnIsIGluc3RhbmNlLCB0eXBlKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICB9XHJcbiAgICBjb25zdCB2YWx1ZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YWx1ZXMucHVzaChjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhmbltpXSwgaW5zdGFuY2UsIHR5cGUsIGFyZ3MpKTtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZXM7XHJcbn1cclxuZnVuY3Rpb24gaGFuZGxlRXJyb3IoZXJyLCBpbnN0YW5jZSwgdHlwZSwgdGhyb3dJbkRldiA9IHRydWUpIHtcclxuICAgIGNvbnN0IGNvbnRleHRWTm9kZSA9IGluc3RhbmNlID8gaW5zdGFuY2Uudm5vZGUgOiBudWxsO1xyXG4gICAgaWYgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgbGV0IGN1ciA9IGluc3RhbmNlLnBhcmVudDtcclxuICAgICAgICAvLyB0aGUgZXhwb3NlZCBpbnN0YW5jZSBpcyB0aGUgcmVuZGVyIHByb3h5IHRvIGtlZXAgaXQgY29uc2lzdGVudCB3aXRoIDIueFxyXG4gICAgICAgIGNvbnN0IGV4cG9zZWRJbnN0YW5jZSA9IGluc3RhbmNlLnByb3h5O1xyXG4gICAgICAgIC8vIGluIHByb2R1Y3Rpb24gdGhlIGhvb2sgcmVjZWl2ZXMgb25seSB0aGUgZXJyb3IgY29kZVxyXG4gICAgICAgIGNvbnN0IGVycm9ySW5mbyA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IEVycm9yVHlwZVN0cmluZ3NbdHlwZV0gOiB0eXBlO1xyXG4gICAgICAgIHdoaWxlIChjdXIpIHtcclxuICAgICAgICAgICAgY29uc3QgZXJyb3JDYXB0dXJlZEhvb2tzID0gY3VyLmVjO1xyXG4gICAgICAgICAgICBpZiAoZXJyb3JDYXB0dXJlZEhvb2tzKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVycm9yQ2FwdHVyZWRIb29rcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvckNhcHR1cmVkSG9va3NbaV0oZXJyLCBleHBvc2VkSW5zdGFuY2UsIGVycm9ySW5mbykgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY3VyID0gY3VyLnBhcmVudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gYXBwLWxldmVsIGhhbmRsaW5nXHJcbiAgICAgICAgY29uc3QgYXBwRXJyb3JIYW5kbGVyID0gaW5zdGFuY2UuYXBwQ29udGV4dC5jb25maWcuZXJyb3JIYW5kbGVyO1xyXG4gICAgICAgIGlmIChhcHBFcnJvckhhbmRsZXIpIHtcclxuICAgICAgICAgICAgY2FsbFdpdGhFcnJvckhhbmRsaW5nKGFwcEVycm9ySGFuZGxlciwgbnVsbCwgMTAgLyogRXJyb3JDb2Rlcy5BUFBfRVJST1JfSEFORExFUiAqLywgW2VyciwgZXhwb3NlZEluc3RhbmNlLCBlcnJvckluZm9dKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGxvZ0Vycm9yKGVyciwgdHlwZSwgY29udGV4dFZOb2RlLCB0aHJvd0luRGV2KTtcclxufVxyXG5mdW5jdGlvbiBsb2dFcnJvcihlcnIsIHR5cGUsIGNvbnRleHRWTm9kZSwgdGhyb3dJbkRldiA9IHRydWUpIHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBjb25zdCBpbmZvID0gRXJyb3JUeXBlU3RyaW5nc1t0eXBlXTtcclxuICAgICAgICBpZiAoY29udGV4dFZOb2RlKSB7XHJcbiAgICAgICAgICAgIHB1c2hXYXJuaW5nQ29udGV4dChjb250ZXh0Vk5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB3YXJuKGBVbmhhbmRsZWQgZXJyb3Ike2luZm8gPyBgIGR1cmluZyBleGVjdXRpb24gb2YgJHtpbmZvfWAgOiBgYH1gKTtcclxuICAgICAgICBpZiAoY29udGV4dFZOb2RlKSB7XHJcbiAgICAgICAgICAgIHBvcFdhcm5pbmdDb250ZXh0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNyYXNoIGluIGRldiBieSBkZWZhdWx0IHNvIGl0J3MgbW9yZSBub3RpY2VhYmxlXHJcbiAgICAgICAgaWYgKHRocm93SW5EZXYpIHtcclxuICAgICAgICAgICAgdGhyb3cgZXJyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIHJlY292ZXIgaW4gcHJvZCB0byByZWR1Y2UgdGhlIGltcGFjdCBvbiBlbmQtdXNlclxyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgIH1cclxufVxuXG5sZXQgaXNGbHVzaGluZyA9IGZhbHNlO1xyXG5sZXQgaXNGbHVzaFBlbmRpbmcgPSBmYWxzZTtcclxuY29uc3QgcXVldWUgPSBbXTtcclxubGV0IGZsdXNoSW5kZXggPSAwO1xyXG5jb25zdCBwZW5kaW5nUG9zdEZsdXNoQ2JzID0gW107XHJcbmxldCBhY3RpdmVQb3N0Rmx1c2hDYnMgPSBudWxsO1xyXG5sZXQgcG9zdEZsdXNoSW5kZXggPSAwO1xyXG5jb25zdCByZXNvbHZlZFByb21pc2UgPSAvKiNfX1BVUkVfXyovIFByb21pc2UucmVzb2x2ZSgpO1xyXG5sZXQgY3VycmVudEZsdXNoUHJvbWlzZSA9IG51bGw7XHJcbmNvbnN0IFJFQ1VSU0lPTl9MSU1JVCA9IDEwMDtcclxuZnVuY3Rpb24gbmV4dFRpY2soZm4pIHtcclxuICAgIGNvbnN0IHAgPSBjdXJyZW50Rmx1c2hQcm9taXNlIHx8IHJlc29sdmVkUHJvbWlzZTtcclxuICAgIHJldHVybiBmbiA/IHAudGhlbih0aGlzID8gZm4uYmluZCh0aGlzKSA6IGZuKSA6IHA7XHJcbn1cclxuLy8gIzI3NjhcclxuLy8gVXNlIGJpbmFyeS1zZWFyY2ggdG8gZmluZCBhIHN1aXRhYmxlIHBvc2l0aW9uIGluIHRoZSBxdWV1ZSxcclxuLy8gc28gdGhhdCB0aGUgcXVldWUgbWFpbnRhaW5zIHRoZSBpbmNyZWFzaW5nIG9yZGVyIG9mIGpvYidzIGlkLFxyXG4vLyB3aGljaCBjYW4gcHJldmVudCB0aGUgam9iIGZyb20gYmVpbmcgc2tpcHBlZCBhbmQgYWxzbyBjYW4gYXZvaWQgcmVwZWF0ZWQgcGF0Y2hpbmcuXHJcbmZ1bmN0aW9uIGZpbmRJbnNlcnRpb25JbmRleChpZCkge1xyXG4gICAgLy8gdGhlIHN0YXJ0IGluZGV4IHNob3VsZCBiZSBgZmx1c2hJbmRleCArIDFgXHJcbiAgICBsZXQgc3RhcnQgPSBmbHVzaEluZGV4ICsgMTtcclxuICAgIGxldCBlbmQgPSBxdWV1ZS5sZW5ndGg7XHJcbiAgICB3aGlsZSAoc3RhcnQgPCBlbmQpIHtcclxuICAgICAgICBjb25zdCBtaWRkbGUgPSAoc3RhcnQgKyBlbmQpID4+PiAxO1xyXG4gICAgICAgIGNvbnN0IG1pZGRsZUpvYklkID0gZ2V0SWQocXVldWVbbWlkZGxlXSk7XHJcbiAgICAgICAgbWlkZGxlSm9iSWQgPCBpZCA/IChzdGFydCA9IG1pZGRsZSArIDEpIDogKGVuZCA9IG1pZGRsZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3RhcnQ7XHJcbn1cclxuZnVuY3Rpb24gcXVldWVKb2Ioam9iKSB7XHJcbiAgICAvLyB0aGUgZGVkdXBlIHNlYXJjaCB1c2VzIHRoZSBzdGFydEluZGV4IGFyZ3VtZW50IG9mIEFycmF5LmluY2x1ZGVzKClcclxuICAgIC8vIGJ5IGRlZmF1bHQgdGhlIHNlYXJjaCBpbmRleCBpbmNsdWRlcyB0aGUgY3VycmVudCBqb2IgdGhhdCBpcyBiZWluZyBydW5cclxuICAgIC8vIHNvIGl0IGNhbm5vdCByZWN1cnNpdmVseSB0cmlnZ2VyIGl0c2VsZiBhZ2Fpbi5cclxuICAgIC8vIGlmIHRoZSBqb2IgaXMgYSB3YXRjaCgpIGNhbGxiYWNrLCB0aGUgc2VhcmNoIHdpbGwgc3RhcnQgd2l0aCBhICsxIGluZGV4IHRvXHJcbiAgICAvLyBhbGxvdyBpdCByZWN1cnNpdmVseSB0cmlnZ2VyIGl0c2VsZiAtIGl0IGlzIHRoZSB1c2VyJ3MgcmVzcG9uc2liaWxpdHkgdG9cclxuICAgIC8vIGVuc3VyZSBpdCBkb2Vzbid0IGVuZCB1cCBpbiBhbiBpbmZpbml0ZSBsb29wLlxyXG4gICAgaWYgKCFxdWV1ZS5sZW5ndGggfHxcclxuICAgICAgICAhcXVldWUuaW5jbHVkZXMoam9iLCBpc0ZsdXNoaW5nICYmIGpvYi5hbGxvd1JlY3Vyc2UgPyBmbHVzaEluZGV4ICsgMSA6IGZsdXNoSW5kZXgpKSB7XHJcbiAgICAgICAgaWYgKGpvYi5pZCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHF1ZXVlLnB1c2goam9iKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHF1ZXVlLnNwbGljZShmaW5kSW5zZXJ0aW9uSW5kZXgoam9iLmlkKSwgMCwgam9iKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcXVldWVGbHVzaCgpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHF1ZXVlRmx1c2goKSB7XHJcbiAgICBpZiAoIWlzRmx1c2hpbmcgJiYgIWlzRmx1c2hQZW5kaW5nKSB7XHJcbiAgICAgICAgaXNGbHVzaFBlbmRpbmcgPSB0cnVlO1xyXG4gICAgICAgIGN1cnJlbnRGbHVzaFByb21pc2UgPSByZXNvbHZlZFByb21pc2UudGhlbihmbHVzaEpvYnMpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGludmFsaWRhdGVKb2Ioam9iKSB7XHJcbiAgICBjb25zdCBpID0gcXVldWUuaW5kZXhPZihqb2IpO1xyXG4gICAgaWYgKGkgPiBmbHVzaEluZGV4KSB7XHJcbiAgICAgICAgcXVldWUuc3BsaWNlKGksIDEpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHF1ZXVlUG9zdEZsdXNoQ2IoY2IpIHtcclxuICAgIGlmICghaXNBcnJheShjYikpIHtcclxuICAgICAgICBpZiAoIWFjdGl2ZVBvc3RGbHVzaENicyB8fFxyXG4gICAgICAgICAgICAhYWN0aXZlUG9zdEZsdXNoQ2JzLmluY2x1ZGVzKGNiLCBjYi5hbGxvd1JlY3Vyc2UgPyBwb3N0Rmx1c2hJbmRleCArIDEgOiBwb3N0Rmx1c2hJbmRleCkpIHtcclxuICAgICAgICAgICAgcGVuZGluZ1Bvc3RGbHVzaENicy5wdXNoKGNiKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBpZiBjYiBpcyBhbiBhcnJheSwgaXQgaXMgYSBjb21wb25lbnQgbGlmZWN5Y2xlIGhvb2sgd2hpY2ggY2FuIG9ubHkgYmVcclxuICAgICAgICAvLyB0cmlnZ2VyZWQgYnkgYSBqb2IsIHdoaWNoIGlzIGFscmVhZHkgZGVkdXBlZCBpbiB0aGUgbWFpbiBxdWV1ZSwgc29cclxuICAgICAgICAvLyB3ZSBjYW4gc2tpcCBkdXBsaWNhdGUgY2hlY2sgaGVyZSB0byBpbXByb3ZlIHBlcmZcclxuICAgICAgICBwZW5kaW5nUG9zdEZsdXNoQ2JzLnB1c2goLi4uY2IpO1xyXG4gICAgfVxyXG4gICAgcXVldWVGbHVzaCgpO1xyXG59XHJcbmZ1bmN0aW9uIGZsdXNoUHJlRmx1c2hDYnMoc2VlbiwgaSA9IGZsdXNoSW5kZXgpIHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBzZWVuID0gc2VlbiB8fCBuZXcgTWFwKCk7XHJcbiAgICB9XHJcbiAgICBmb3IgKDsgaSA8IHF1ZXVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgY2IgPSBxdWV1ZVtpXTtcclxuICAgICAgICBpZiAoY2IgJiYgY2IucHJlKSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgY2hlY2tSZWN1cnNpdmVVcGRhdGVzKHNlZW4sIGNiKSkge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcXVldWUuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICBpLS07XHJcbiAgICAgICAgICAgIGNiKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGZsdXNoUG9zdEZsdXNoQ2JzKHNlZW4pIHtcclxuICAgIGlmIChwZW5kaW5nUG9zdEZsdXNoQ2JzLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IGRlZHVwZWQgPSBbLi4ubmV3IFNldChwZW5kaW5nUG9zdEZsdXNoQ2JzKV07XHJcbiAgICAgICAgcGVuZGluZ1Bvc3RGbHVzaENicy5sZW5ndGggPSAwO1xyXG4gICAgICAgIC8vICMxOTQ3IGFscmVhZHkgaGFzIGFjdGl2ZSBxdWV1ZSwgbmVzdGVkIGZsdXNoUG9zdEZsdXNoQ2JzIGNhbGxcclxuICAgICAgICBpZiAoYWN0aXZlUG9zdEZsdXNoQ2JzKSB7XHJcbiAgICAgICAgICAgIGFjdGl2ZVBvc3RGbHVzaENicy5wdXNoKC4uLmRlZHVwZWQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFjdGl2ZVBvc3RGbHVzaENicyA9IGRlZHVwZWQ7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICBzZWVuID0gc2VlbiB8fCBuZXcgTWFwKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFjdGl2ZVBvc3RGbHVzaENicy5zb3J0KChhLCBiKSA9PiBnZXRJZChhKSAtIGdldElkKGIpKTtcclxuICAgICAgICBmb3IgKHBvc3RGbHVzaEluZGV4ID0gMDsgcG9zdEZsdXNoSW5kZXggPCBhY3RpdmVQb3N0Rmx1c2hDYnMubGVuZ3RoOyBwb3N0Rmx1c2hJbmRleCsrKSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgIGNoZWNrUmVjdXJzaXZlVXBkYXRlcyhzZWVuLCBhY3RpdmVQb3N0Rmx1c2hDYnNbcG9zdEZsdXNoSW5kZXhdKSkge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYWN0aXZlUG9zdEZsdXNoQ2JzW3Bvc3RGbHVzaEluZGV4XSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhY3RpdmVQb3N0Rmx1c2hDYnMgPSBudWxsO1xyXG4gICAgICAgIHBvc3RGbHVzaEluZGV4ID0gMDtcclxuICAgIH1cclxufVxyXG5jb25zdCBnZXRJZCA9IChqb2IpID0+IGpvYi5pZCA9PSBudWxsID8gSW5maW5pdHkgOiBqb2IuaWQ7XHJcbmNvbnN0IGNvbXBhcmF0b3IgPSAoYSwgYikgPT4ge1xyXG4gICAgY29uc3QgZGlmZiA9IGdldElkKGEpIC0gZ2V0SWQoYik7XHJcbiAgICBpZiAoZGlmZiA9PT0gMCkge1xyXG4gICAgICAgIGlmIChhLnByZSAmJiAhYi5wcmUpXHJcbiAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICBpZiAoYi5wcmUgJiYgIWEucHJlKVxyXG4gICAgICAgICAgICByZXR1cm4gMTtcclxuICAgIH1cclxuICAgIHJldHVybiBkaWZmO1xyXG59O1xyXG5mdW5jdGlvbiBmbHVzaEpvYnMoc2Vlbikge1xyXG4gICAgaXNGbHVzaFBlbmRpbmcgPSBmYWxzZTtcclxuICAgIGlzRmx1c2hpbmcgPSB0cnVlO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIHNlZW4gPSBzZWVuIHx8IG5ldyBNYXAoKTtcclxuICAgIH1cclxuICAgIC8vIFNvcnQgcXVldWUgYmVmb3JlIGZsdXNoLlxyXG4gICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQ6XHJcbiAgICAvLyAxLiBDb21wb25lbnRzIGFyZSB1cGRhdGVkIGZyb20gcGFyZW50IHRvIGNoaWxkLiAoYmVjYXVzZSBwYXJlbnQgaXMgYWx3YXlzXHJcbiAgICAvLyAgICBjcmVhdGVkIGJlZm9yZSB0aGUgY2hpbGQgc28gaXRzIHJlbmRlciBlZmZlY3Qgd2lsbCBoYXZlIHNtYWxsZXJcclxuICAgIC8vICAgIHByaW9yaXR5IG51bWJlcilcclxuICAgIC8vIDIuIElmIGEgY29tcG9uZW50IGlzIHVubW91bnRlZCBkdXJpbmcgYSBwYXJlbnQgY29tcG9uZW50J3MgdXBkYXRlLFxyXG4gICAgLy8gICAgaXRzIHVwZGF0ZSBjYW4gYmUgc2tpcHBlZC5cclxuICAgIHF1ZXVlLnNvcnQoY29tcGFyYXRvcik7XHJcbiAgICAvLyBjb25kaXRpb25hbCB1c2FnZSBvZiBjaGVja1JlY3Vyc2l2ZVVwZGF0ZSBtdXN0IGJlIGRldGVybWluZWQgb3V0IG9mXHJcbiAgICAvLyB0cnkgLi4uIGNhdGNoIGJsb2NrIHNpbmNlIFJvbGx1cCBieSBkZWZhdWx0IGRlLW9wdGltaXplcyB0cmVlc2hha2luZ1xyXG4gICAgLy8gaW5zaWRlIHRyeS1jYXRjaC4gVGhpcyBjYW4gbGVhdmUgYWxsIHdhcm5pbmcgY29kZSB1bnNoYWtlZC4gQWx0aG91Z2hcclxuICAgIC8vIHRoZXkgd291bGQgZ2V0IGV2ZW50dWFsbHkgc2hha2VuIGJ5IGEgbWluaWZpZXIgbGlrZSB0ZXJzZXIsIHNvbWUgbWluaWZpZXJzXHJcbiAgICAvLyB3b3VsZCBmYWlsIHRvIGRvIHRoYXQgKGUuZy4gaHR0cHM6Ly9naXRodWIuY29tL2V2YW53L2VzYnVpbGQvaXNzdWVzLzE2MTApXHJcbiAgICBjb25zdCBjaGVjayA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgID8gKGpvYikgPT4gY2hlY2tSZWN1cnNpdmVVcGRhdGVzKHNlZW4sIGpvYilcclxuICAgICAgICA6IE5PT1A7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGZvciAoZmx1c2hJbmRleCA9IDA7IGZsdXNoSW5kZXggPCBxdWV1ZS5sZW5ndGg7IGZsdXNoSW5kZXgrKykge1xyXG4gICAgICAgICAgICBjb25zdCBqb2IgPSBxdWV1ZVtmbHVzaEluZGV4XTtcclxuICAgICAgICAgICAgaWYgKGpvYiAmJiBqb2IuYWN0aXZlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBjaGVjayhqb2IpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhgcnVubmluZzpgLCBqb2IuaWQpXHJcbiAgICAgICAgICAgICAgICBjYWxsV2l0aEVycm9ySGFuZGxpbmcoam9iLCBudWxsLCAxNCAvKiBFcnJvckNvZGVzLlNDSEVEVUxFUiAqLyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgICBmbHVzaEluZGV4ID0gMDtcclxuICAgICAgICBxdWV1ZS5sZW5ndGggPSAwO1xyXG4gICAgICAgIGZsdXNoUG9zdEZsdXNoQ2JzKHNlZW4pO1xyXG4gICAgICAgIGlzRmx1c2hpbmcgPSBmYWxzZTtcclxuICAgICAgICBjdXJyZW50Rmx1c2hQcm9taXNlID0gbnVsbDtcclxuICAgICAgICAvLyBzb21lIHBvc3RGbHVzaENiIHF1ZXVlZCBqb2JzIVxyXG4gICAgICAgIC8vIGtlZXAgZmx1c2hpbmcgdW50aWwgaXQgZHJhaW5zLlxyXG4gICAgICAgIGlmIChxdWV1ZS5sZW5ndGggfHwgcGVuZGluZ1Bvc3RGbHVzaENicy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgZmx1c2hKb2JzKHNlZW4pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjaGVja1JlY3Vyc2l2ZVVwZGF0ZXMoc2VlbiwgZm4pIHtcclxuICAgIGlmICghc2Vlbi5oYXMoZm4pKSB7XHJcbiAgICAgICAgc2Vlbi5zZXQoZm4sIDEpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgY291bnQgPSBzZWVuLmdldChmbik7XHJcbiAgICAgICAgaWYgKGNvdW50ID4gUkVDVVJTSU9OX0xJTUlUKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gZm4ub3duZXJJbnN0YW5jZTtcclxuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50TmFtZSA9IGluc3RhbmNlICYmIGdldENvbXBvbmVudE5hbWUoaW5zdGFuY2UudHlwZSk7XHJcbiAgICAgICAgICAgIHdhcm4oYE1heGltdW0gcmVjdXJzaXZlIHVwZGF0ZXMgZXhjZWVkZWQke2NvbXBvbmVudE5hbWUgPyBgIGluIGNvbXBvbmVudCA8JHtjb21wb25lbnROYW1lfT5gIDogYGB9LiBgICtcclxuICAgICAgICAgICAgICAgIGBUaGlzIG1lYW5zIHlvdSBoYXZlIGEgcmVhY3RpdmUgZWZmZWN0IHRoYXQgaXMgbXV0YXRpbmcgaXRzIG93biBgICtcclxuICAgICAgICAgICAgICAgIGBkZXBlbmRlbmNpZXMgYW5kIHRodXMgcmVjdXJzaXZlbHkgdHJpZ2dlcmluZyBpdHNlbGYuIFBvc3NpYmxlIHNvdXJjZXMgYCArXHJcbiAgICAgICAgICAgICAgICBgaW5jbHVkZSBjb21wb25lbnQgdGVtcGxhdGUsIHJlbmRlciBmdW5jdGlvbiwgdXBkYXRlZCBob29rIG9yIGAgK1xyXG4gICAgICAgICAgICAgICAgYHdhdGNoZXIgc291cmNlIGZ1bmN0aW9uLmApO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHNlZW4uc2V0KGZuLCBjb3VudCArIDEpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgKi9cclxubGV0IGlzSG1yVXBkYXRpbmcgPSBmYWxzZTtcclxuY29uc3QgaG1yRGlydHlDb21wb25lbnRzID0gbmV3IFNldCgpO1xyXG4vLyBFeHBvc2UgdGhlIEhNUiBydW50aW1lIG9uIHRoZSBnbG9iYWwgb2JqZWN0XHJcbi8vIFRoaXMgbWFrZXMgaXQgZW50aXJlbHkgdHJlZS1zaGFrYWJsZSB3aXRob3V0IHBvbGx1dGluZyB0aGUgZXhwb3J0cyBhbmQgbWFrZXNcclxuLy8gaXQgZWFzaWVyIHRvIGJlIHVzZWQgaW4gdG9vbGluZ3MgbGlrZSB2dWUtbG9hZGVyXHJcbi8vIE5vdGU6IGZvciBhIGNvbXBvbmVudCB0byBiZSBlbGlnaWJsZSBmb3IgSE1SIGl0IGFsc28gbmVlZHMgdGhlIF9faG1ySWQgb3B0aW9uXHJcbi8vIHRvIGJlIHNldCBzbyB0aGF0IGl0cyBpbnN0YW5jZXMgY2FuIGJlIHJlZ2lzdGVyZWQgLyByZW1vdmVkLlxyXG5pZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICBnZXRHbG9iYWxUaGlzKCkuX19WVUVfSE1SX1JVTlRJTUVfXyA9IHtcclxuICAgICAgICBjcmVhdGVSZWNvcmQ6IHRyeVdyYXAoY3JlYXRlUmVjb3JkKSxcclxuICAgICAgICByZXJlbmRlcjogdHJ5V3JhcChyZXJlbmRlciksXHJcbiAgICAgICAgcmVsb2FkOiB0cnlXcmFwKHJlbG9hZClcclxuICAgIH07XHJcbn1cclxuY29uc3QgbWFwID0gbmV3IE1hcCgpO1xyXG5mdW5jdGlvbiByZWdpc3RlckhNUihpbnN0YW5jZSkge1xyXG4gICAgY29uc3QgaWQgPSBpbnN0YW5jZS50eXBlLl9faG1ySWQ7XHJcbiAgICBsZXQgcmVjb3JkID0gbWFwLmdldChpZCk7XHJcbiAgICBpZiAoIXJlY29yZCkge1xyXG4gICAgICAgIGNyZWF0ZVJlY29yZChpZCwgaW5zdGFuY2UudHlwZSk7XHJcbiAgICAgICAgcmVjb3JkID0gbWFwLmdldChpZCk7XHJcbiAgICB9XHJcbiAgICByZWNvcmQuaW5zdGFuY2VzLmFkZChpbnN0YW5jZSk7XHJcbn1cclxuZnVuY3Rpb24gdW5yZWdpc3RlckhNUihpbnN0YW5jZSkge1xyXG4gICAgbWFwLmdldChpbnN0YW5jZS50eXBlLl9faG1ySWQpLmluc3RhbmNlcy5kZWxldGUoaW5zdGFuY2UpO1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVJlY29yZChpZCwgaW5pdGlhbERlZikge1xyXG4gICAgaWYgKG1hcC5oYXMoaWQpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgbWFwLnNldChpZCwge1xyXG4gICAgICAgIGluaXRpYWxEZWY6IG5vcm1hbGl6ZUNsYXNzQ29tcG9uZW50KGluaXRpYWxEZWYpLFxyXG4gICAgICAgIGluc3RhbmNlczogbmV3IFNldCgpXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0cnVlO1xyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZUNsYXNzQ29tcG9uZW50KGNvbXBvbmVudCkge1xyXG4gICAgcmV0dXJuIGlzQ2xhc3NDb21wb25lbnQoY29tcG9uZW50KSA/IGNvbXBvbmVudC5fX3ZjY09wdHMgOiBjb21wb25lbnQ7XHJcbn1cclxuZnVuY3Rpb24gcmVyZW5kZXIoaWQsIG5ld1JlbmRlcikge1xyXG4gICAgY29uc3QgcmVjb3JkID0gbWFwLmdldChpZCk7XHJcbiAgICBpZiAoIXJlY29yZCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIHVwZGF0ZSBpbml0aWFsIHJlY29yZCAoZm9yIG5vdC15ZXQtcmVuZGVyZWQgY29tcG9uZW50KVxyXG4gICAgcmVjb3JkLmluaXRpYWxEZWYucmVuZGVyID0gbmV3UmVuZGVyO1xyXG4gICAgWy4uLnJlY29yZC5pbnN0YW5jZXNdLmZvckVhY2goaW5zdGFuY2UgPT4ge1xyXG4gICAgICAgIGlmIChuZXdSZW5kZXIpIHtcclxuICAgICAgICAgICAgaW5zdGFuY2UucmVuZGVyID0gbmV3UmVuZGVyO1xyXG4gICAgICAgICAgICBub3JtYWxpemVDbGFzc0NvbXBvbmVudChpbnN0YW5jZS50eXBlKS5yZW5kZXIgPSBuZXdSZW5kZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGluc3RhbmNlLnJlbmRlckNhY2hlID0gW107XHJcbiAgICAgICAgLy8gdGhpcyBmbGFnIGZvcmNlcyBjaGlsZCBjb21wb25lbnRzIHdpdGggc2xvdCBjb250ZW50IHRvIHVwZGF0ZVxyXG4gICAgICAgIGlzSG1yVXBkYXRpbmcgPSB0cnVlO1xyXG4gICAgICAgIGluc3RhbmNlLnVwZGF0ZSgpO1xyXG4gICAgICAgIGlzSG1yVXBkYXRpbmcgPSBmYWxzZTtcclxuICAgIH0pO1xyXG59XHJcbmZ1bmN0aW9uIHJlbG9hZChpZCwgbmV3Q29tcCkge1xyXG4gICAgY29uc3QgcmVjb3JkID0gbWFwLmdldChpZCk7XHJcbiAgICBpZiAoIXJlY29yZClcclxuICAgICAgICByZXR1cm47XHJcbiAgICBuZXdDb21wID0gbm9ybWFsaXplQ2xhc3NDb21wb25lbnQobmV3Q29tcCk7XHJcbiAgICAvLyB1cGRhdGUgaW5pdGlhbCBkZWYgKGZvciBub3QteWV0LXJlbmRlcmVkIGNvbXBvbmVudHMpXHJcbiAgICB1cGRhdGVDb21wb25lbnREZWYocmVjb3JkLmluaXRpYWxEZWYsIG5ld0NvbXApO1xyXG4gICAgLy8gY3JlYXRlIGEgc25hcHNob3Qgd2hpY2ggYXZvaWRzIHRoZSBzZXQgYmVpbmcgbXV0YXRlZCBkdXJpbmcgdXBkYXRlc1xyXG4gICAgY29uc3QgaW5zdGFuY2VzID0gWy4uLnJlY29yZC5pbnN0YW5jZXNdO1xyXG4gICAgZm9yIChjb25zdCBpbnN0YW5jZSBvZiBpbnN0YW5jZXMpIHtcclxuICAgICAgICBjb25zdCBvbGRDb21wID0gbm9ybWFsaXplQ2xhc3NDb21wb25lbnQoaW5zdGFuY2UudHlwZSk7XHJcbiAgICAgICAgaWYgKCFobXJEaXJ0eUNvbXBvbmVudHMuaGFzKG9sZENvbXApKSB7XHJcbiAgICAgICAgICAgIC8vIDEuIFVwZGF0ZSBleGlzdGluZyBjb21wIGRlZmluaXRpb24gdG8gbWF0Y2ggbmV3IG9uZVxyXG4gICAgICAgICAgICBpZiAob2xkQ29tcCAhPT0gcmVjb3JkLmluaXRpYWxEZWYpIHtcclxuICAgICAgICAgICAgICAgIHVwZGF0ZUNvbXBvbmVudERlZihvbGRDb21wLCBuZXdDb21wKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyAyLiBtYXJrIGRlZmluaXRpb24gZGlydHkuIFRoaXMgZm9yY2VzIHRoZSByZW5kZXJlciB0byByZXBsYWNlIHRoZVxyXG4gICAgICAgICAgICAvLyBjb21wb25lbnQgb24gcGF0Y2guXHJcbiAgICAgICAgICAgIGhtckRpcnR5Q29tcG9uZW50cy5hZGQob2xkQ29tcCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIDMuIGludmFsaWRhdGUgb3B0aW9ucyByZXNvbHV0aW9uIGNhY2hlXHJcbiAgICAgICAgaW5zdGFuY2UuYXBwQ29udGV4dC5vcHRpb25zQ2FjaGUuZGVsZXRlKGluc3RhbmNlLnR5cGUpO1xyXG4gICAgICAgIC8vIDQuIGFjdHVhbGx5IHVwZGF0ZVxyXG4gICAgICAgIGlmIChpbnN0YW5jZS5jZVJlbG9hZCkge1xyXG4gICAgICAgICAgICAvLyBjdXN0b20gZWxlbWVudFxyXG4gICAgICAgICAgICBobXJEaXJ0eUNvbXBvbmVudHMuYWRkKG9sZENvbXApO1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5jZVJlbG9hZChuZXdDb21wLnN0eWxlcyk7XHJcbiAgICAgICAgICAgIGhtckRpcnR5Q29tcG9uZW50cy5kZWxldGUob2xkQ29tcCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGluc3RhbmNlLnBhcmVudCkge1xyXG4gICAgICAgICAgICAvLyA0LiBGb3JjZSB0aGUgcGFyZW50IGluc3RhbmNlIHRvIHJlLXJlbmRlci4gVGhpcyB3aWxsIGNhdXNlIGFsbCB1cGRhdGVkXHJcbiAgICAgICAgICAgIC8vIGNvbXBvbmVudHMgdG8gYmUgdW5tb3VudGVkIGFuZCByZS1tb3VudGVkLiBRdWV1ZSB0aGUgdXBkYXRlIHNvIHRoYXQgd2VcclxuICAgICAgICAgICAgLy8gZG9uJ3QgZW5kIHVwIGZvcmNpbmcgdGhlIHNhbWUgcGFyZW50IHRvIHJlLXJlbmRlciBtdWx0aXBsZSB0aW1lcy5cclxuICAgICAgICAgICAgcXVldWVKb2IoaW5zdGFuY2UucGFyZW50LnVwZGF0ZSk7XHJcbiAgICAgICAgICAgIC8vIGluc3RhbmNlIGlzIHRoZSBpbm5lciBjb21wb25lbnQgb2YgYW4gYXN5bmMgY3VzdG9tIGVsZW1lbnRcclxuICAgICAgICAgICAgLy8gaW52b2tlIHRvIHJlc2V0IHN0eWxlc1xyXG4gICAgICAgICAgICBpZiAoaW5zdGFuY2UucGFyZW50LnR5cGUuX19hc3luY0xvYWRlciAmJlxyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UucGFyZW50LmNlUmVsb2FkKSB7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5wYXJlbnQuY2VSZWxvYWQobmV3Q29tcC5zdHlsZXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGluc3RhbmNlLmFwcENvbnRleHQucmVsb2FkKSB7XHJcbiAgICAgICAgICAgIC8vIHJvb3QgaW5zdGFuY2UgbW91bnRlZCB2aWEgY3JlYXRlQXBwKCkgaGFzIGEgcmVsb2FkIG1ldGhvZFxyXG4gICAgICAgICAgICBpbnN0YW5jZS5hcHBDb250ZXh0LnJlbG9hZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAvLyByb290IGluc3RhbmNlIGluc2lkZSB0cmVlIGNyZWF0ZWQgdmlhIHJhdyByZW5kZXIoKS4gRm9yY2UgcmVsb2FkLlxyXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1tITVJdIFJvb3Qgb3IgbWFudWFsbHkgbW91bnRlZCBpbnN0YW5jZSBtb2RpZmllZC4gRnVsbCByZWxvYWQgcmVxdWlyZWQuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gNS4gbWFrZSBzdXJlIHRvIGNsZWFudXAgZGlydHkgaG1yIGNvbXBvbmVudHMgYWZ0ZXIgdXBkYXRlXHJcbiAgICBxdWV1ZVBvc3RGbHVzaENiKCgpID0+IHtcclxuICAgICAgICBmb3IgKGNvbnN0IGluc3RhbmNlIG9mIGluc3RhbmNlcykge1xyXG4gICAgICAgICAgICBobXJEaXJ0eUNvbXBvbmVudHMuZGVsZXRlKG5vcm1hbGl6ZUNsYXNzQ29tcG9uZW50KGluc3RhbmNlLnR5cGUpKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5mdW5jdGlvbiB1cGRhdGVDb21wb25lbnREZWYob2xkQ29tcCwgbmV3Q29tcCkge1xyXG4gICAgZXh0ZW5kKG9sZENvbXAsIG5ld0NvbXApO1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2xkQ29tcCkge1xyXG4gICAgICAgIGlmIChrZXkgIT09ICdfX2ZpbGUnICYmICEoa2V5IGluIG5ld0NvbXApKSB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSBvbGRDb21wW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHRyeVdyYXAoZm4pIHtcclxuICAgIHJldHVybiAoaWQsIGFyZykgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmbihpZCwgYXJnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKGBbSE1SXSBTb21ldGhpbmcgd2VudCB3cm9uZyBkdXJpbmcgVnVlIGNvbXBvbmVudCBob3QtcmVsb2FkLiBgICtcclxuICAgICAgICAgICAgICAgIGBGdWxsIHJlbG9hZCByZXF1aXJlZC5gKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XG5cbmxldCBkZXZ0b29scztcclxubGV0IGJ1ZmZlciA9IFtdO1xyXG5sZXQgZGV2dG9vbHNOb3RJbnN0YWxsZWQgPSBmYWxzZTtcclxuZnVuY3Rpb24gZW1pdChldmVudCwgLi4uYXJncykge1xyXG4gICAgaWYgKGRldnRvb2xzKSB7XHJcbiAgICAgICAgZGV2dG9vbHMuZW1pdChldmVudCwgLi4uYXJncyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICghZGV2dG9vbHNOb3RJbnN0YWxsZWQpIHtcclxuICAgICAgICBidWZmZXIucHVzaCh7IGV2ZW50LCBhcmdzIH0pO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHNldERldnRvb2xzSG9vayhob29rLCB0YXJnZXQpIHtcclxuICAgIHZhciBfYSwgX2I7XHJcbiAgICBkZXZ0b29scyA9IGhvb2s7XHJcbiAgICBpZiAoZGV2dG9vbHMpIHtcclxuICAgICAgICBkZXZ0b29scy5lbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICBidWZmZXIuZm9yRWFjaCgoeyBldmVudCwgYXJncyB9KSA9PiBkZXZ0b29scy5lbWl0KGV2ZW50LCAuLi5hcmdzKSk7XHJcbiAgICAgICAgYnVmZmVyID0gW107XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChcclxuICAgIC8vIGhhbmRsZSBsYXRlIGRldnRvb2xzIGluamVjdGlvbiAtIG9ubHkgZG8gdGhpcyBpZiB3ZSBhcmUgaW4gYW4gYWN0dWFsXHJcbiAgICAvLyBicm93c2VyIGVudmlyb25tZW50IHRvIGF2b2lkIHRoZSB0aW1lciBoYW5kbGUgc3RhbGxpbmcgdGVzdCBydW5uZXIgZXhpdFxyXG4gICAgLy8gKCM0ODE1KVxyXG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcclxuICAgICAgICAvLyBzb21lIGVudnMgbW9jayB3aW5kb3cgYnV0IG5vdCBmdWxseVxyXG4gICAgICAgIHdpbmRvdy5IVE1MRWxlbWVudCAmJlxyXG4gICAgICAgIC8vIGFsc28gZXhjbHVkZSBqc2RvbVxyXG4gICAgICAgICEoKF9iID0gKF9hID0gd2luZG93Lm5hdmlnYXRvcikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnVzZXJBZ2VudCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmluY2x1ZGVzKCdqc2RvbScpKSkge1xyXG4gICAgICAgIGNvbnN0IHJlcGxheSA9ICh0YXJnZXQuX19WVUVfREVWVE9PTFNfSE9PS19SRVBMQVlfXyA9XHJcbiAgICAgICAgICAgIHRhcmdldC5fX1ZVRV9ERVZUT09MU19IT09LX1JFUExBWV9fIHx8IFtdKTtcclxuICAgICAgICByZXBsYXkucHVzaCgobmV3SG9vaykgPT4ge1xyXG4gICAgICAgICAgICBzZXREZXZ0b29sc0hvb2sobmV3SG9vaywgdGFyZ2V0KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyBjbGVhciBidWZmZXIgYWZ0ZXIgM3MgLSB0aGUgdXNlciBwcm9iYWJseSBkb2Vzbid0IGhhdmUgZGV2dG9vbHMgaW5zdGFsbGVkXHJcbiAgICAgICAgLy8gYXQgYWxsLCBhbmQga2VlcGluZyB0aGUgYnVmZmVyIHdpbGwgY2F1c2UgbWVtb3J5IGxlYWtzICgjNDczOClcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFkZXZ0b29scykge1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0Ll9fVlVFX0RFVlRPT0xTX0hPT0tfUkVQTEFZX18gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgZGV2dG9vbHNOb3RJbnN0YWxsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYnVmZmVyID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCAzMDAwKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIG5vbi1icm93c2VyIGVudiwgYXNzdW1lIG5vdCBpbnN0YWxsZWRcclxuICAgICAgICBkZXZ0b29sc05vdEluc3RhbGxlZCA9IHRydWU7XHJcbiAgICAgICAgYnVmZmVyID0gW107XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZGV2dG9vbHNJbml0QXBwKGFwcCwgdmVyc2lvbikge1xyXG4gICAgZW1pdChcImFwcDppbml0XCIgLyogRGV2dG9vbHNIb29rcy5BUFBfSU5JVCAqLywgYXBwLCB2ZXJzaW9uLCB7XHJcbiAgICAgICAgRnJhZ21lbnQsXHJcbiAgICAgICAgVGV4dCxcclxuICAgICAgICBDb21tZW50LFxyXG4gICAgICAgIFN0YXRpY1xyXG4gICAgfSk7XHJcbn1cclxuZnVuY3Rpb24gZGV2dG9vbHNVbm1vdW50QXBwKGFwcCkge1xyXG4gICAgZW1pdChcImFwcDp1bm1vdW50XCIgLyogRGV2dG9vbHNIb29rcy5BUFBfVU5NT1VOVCAqLywgYXBwKTtcclxufVxyXG5jb25zdCBkZXZ0b29sc0NvbXBvbmVudEFkZGVkID0gLyojX19QVVJFX18qLyBjcmVhdGVEZXZ0b29sc0NvbXBvbmVudEhvb2soXCJjb21wb25lbnQ6YWRkZWRcIiAvKiBEZXZ0b29sc0hvb2tzLkNPTVBPTkVOVF9BRERFRCAqLyk7XHJcbmNvbnN0IGRldnRvb2xzQ29tcG9uZW50VXBkYXRlZCA9IFxyXG4vKiNfX1BVUkVfXyovIGNyZWF0ZURldnRvb2xzQ29tcG9uZW50SG9vayhcImNvbXBvbmVudDp1cGRhdGVkXCIgLyogRGV2dG9vbHNIb29rcy5DT01QT05FTlRfVVBEQVRFRCAqLyk7XHJcbmNvbnN0IGRldnRvb2xzQ29tcG9uZW50UmVtb3ZlZCA9IFxyXG4vKiNfX1BVUkVfXyovIGNyZWF0ZURldnRvb2xzQ29tcG9uZW50SG9vayhcImNvbXBvbmVudDpyZW1vdmVkXCIgLyogRGV2dG9vbHNIb29rcy5DT01QT05FTlRfUkVNT1ZFRCAqLyk7XHJcbmZ1bmN0aW9uIGNyZWF0ZURldnRvb2xzQ29tcG9uZW50SG9vayhob29rKSB7XHJcbiAgICByZXR1cm4gKGNvbXBvbmVudCkgPT4ge1xyXG4gICAgICAgIGVtaXQoaG9vaywgY29tcG9uZW50LmFwcENvbnRleHQuYXBwLCBjb21wb25lbnQudWlkLCBjb21wb25lbnQucGFyZW50ID8gY29tcG9uZW50LnBhcmVudC51aWQgOiB1bmRlZmluZWQsIGNvbXBvbmVudCk7XHJcbiAgICB9O1xyXG59XHJcbmNvbnN0IGRldnRvb2xzUGVyZlN0YXJ0ID0gLyojX19QVVJFX18qLyBjcmVhdGVEZXZ0b29sc1BlcmZvcm1hbmNlSG9vayhcInBlcmY6c3RhcnRcIiAvKiBEZXZ0b29sc0hvb2tzLlBFUkZPUk1BTkNFX1NUQVJUICovKTtcclxuY29uc3QgZGV2dG9vbHNQZXJmRW5kID0gLyojX19QVVJFX18qLyBjcmVhdGVEZXZ0b29sc1BlcmZvcm1hbmNlSG9vayhcInBlcmY6ZW5kXCIgLyogRGV2dG9vbHNIb29rcy5QRVJGT1JNQU5DRV9FTkQgKi8pO1xyXG5mdW5jdGlvbiBjcmVhdGVEZXZ0b29sc1BlcmZvcm1hbmNlSG9vayhob29rKSB7XHJcbiAgICByZXR1cm4gKGNvbXBvbmVudCwgdHlwZSwgdGltZSkgPT4ge1xyXG4gICAgICAgIGVtaXQoaG9vaywgY29tcG9uZW50LmFwcENvbnRleHQuYXBwLCBjb21wb25lbnQudWlkLCBjb21wb25lbnQsIHR5cGUsIHRpbWUpO1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBkZXZ0b29sc0NvbXBvbmVudEVtaXQoY29tcG9uZW50LCBldmVudCwgcGFyYW1zKSB7XHJcbiAgICBlbWl0KFwiY29tcG9uZW50OmVtaXRcIiAvKiBEZXZ0b29sc0hvb2tzLkNPTVBPTkVOVF9FTUlUICovLCBjb21wb25lbnQuYXBwQ29udGV4dC5hcHAsIGNvbXBvbmVudCwgZXZlbnQsIHBhcmFtcyk7XHJcbn1cblxuZnVuY3Rpb24gZW1pdCQxKGluc3RhbmNlLCBldmVudCwgLi4ucmF3QXJncykge1xyXG4gICAgaWYgKGluc3RhbmNlLmlzVW5tb3VudGVkKVxyXG4gICAgICAgIHJldHVybjtcclxuICAgIGNvbnN0IHByb3BzID0gaW5zdGFuY2Uudm5vZGUucHJvcHMgfHwgRU1QVFlfT0JKO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGNvbnN0IHsgZW1pdHNPcHRpb25zLCBwcm9wc09wdGlvbnM6IFtwcm9wc09wdGlvbnNdIH0gPSBpbnN0YW5jZTtcclxuICAgICAgICBpZiAoZW1pdHNPcHRpb25zKSB7XHJcbiAgICAgICAgICAgIGlmICghKGV2ZW50IGluIGVtaXRzT3B0aW9ucykgJiZcclxuICAgICAgICAgICAgICAgICEoZmFsc2UgKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFwcm9wc09wdGlvbnMgfHwgISh0b0hhbmRsZXJLZXkoZXZlbnQpIGluIHByb3BzT3B0aW9ucykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBDb21wb25lbnQgZW1pdHRlZCBldmVudCBcIiR7ZXZlbnR9XCIgYnV0IGl0IGlzIG5laXRoZXIgZGVjbGFyZWQgaW4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGB0aGUgZW1pdHMgb3B0aW9uIG5vciBhcyBhbiBcIiR7dG9IYW5kbGVyS2V5KGV2ZW50KX1cIiBwcm9wLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdG9yID0gZW1pdHNPcHRpb25zW2V2ZW50XTtcclxuICAgICAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKHZhbGlkYXRvcikpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1ZhbGlkID0gdmFsaWRhdG9yKC4uLnJhd0FyZ3MpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuKGBJbnZhbGlkIGV2ZW50IGFyZ3VtZW50czogZXZlbnQgdmFsaWRhdGlvbiBmYWlsZWQgZm9yIGV2ZW50IFwiJHtldmVudH1cIi5gKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgYXJncyA9IHJhd0FyZ3M7XHJcbiAgICBjb25zdCBpc01vZGVsTGlzdGVuZXIgPSBldmVudC5zdGFydHNXaXRoKCd1cGRhdGU6Jyk7XHJcbiAgICAvLyBmb3Igdi1tb2RlbCB1cGRhdGU6eHh4IGV2ZW50cywgYXBwbHkgbW9kaWZpZXJzIG9uIGFyZ3NcclxuICAgIGNvbnN0IG1vZGVsQXJnID0gaXNNb2RlbExpc3RlbmVyICYmIGV2ZW50LnNsaWNlKDcpO1xyXG4gICAgaWYgKG1vZGVsQXJnICYmIG1vZGVsQXJnIGluIHByb3BzKSB7XHJcbiAgICAgICAgY29uc3QgbW9kaWZpZXJzS2V5ID0gYCR7bW9kZWxBcmcgPT09ICdtb2RlbFZhbHVlJyA/ICdtb2RlbCcgOiBtb2RlbEFyZ31Nb2RpZmllcnNgO1xyXG4gICAgICAgIGNvbnN0IHsgbnVtYmVyLCB0cmltIH0gPSBwcm9wc1ttb2RpZmllcnNLZXldIHx8IEVNUFRZX09CSjtcclxuICAgICAgICBpZiAodHJpbSkge1xyXG4gICAgICAgICAgICBhcmdzID0gcmF3QXJncy5tYXAoYSA9PiBhLnRyaW0oKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChudW1iZXIpIHtcclxuICAgICAgICAgICAgYXJncyA9IHJhd0FyZ3MubWFwKHRvTnVtYmVyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgIGRldnRvb2xzQ29tcG9uZW50RW1pdChpbnN0YW5jZSwgZXZlbnQsIGFyZ3MpO1xyXG4gICAgfVxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGNvbnN0IGxvd2VyQ2FzZUV2ZW50ID0gZXZlbnQudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBpZiAobG93ZXJDYXNlRXZlbnQgIT09IGV2ZW50ICYmIHByb3BzW3RvSGFuZGxlcktleShsb3dlckNhc2VFdmVudCldKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYEV2ZW50IFwiJHtsb3dlckNhc2VFdmVudH1cIiBpcyBlbWl0dGVkIGluIGNvbXBvbmVudCBgICtcclxuICAgICAgICAgICAgICAgIGAke2Zvcm1hdENvbXBvbmVudE5hbWUoaW5zdGFuY2UsIGluc3RhbmNlLnR5cGUpfSBidXQgdGhlIGhhbmRsZXIgaXMgcmVnaXN0ZXJlZCBmb3IgXCIke2V2ZW50fVwiLiBgICtcclxuICAgICAgICAgICAgICAgIGBOb3RlIHRoYXQgSFRNTCBhdHRyaWJ1dGVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlIGFuZCB5b3UgY2Fubm90IHVzZSBgICtcclxuICAgICAgICAgICAgICAgIGB2LW9uIHRvIGxpc3RlbiB0byBjYW1lbENhc2UgZXZlbnRzIHdoZW4gdXNpbmcgaW4tRE9NIHRlbXBsYXRlcy4gYCArXHJcbiAgICAgICAgICAgICAgICBgWW91IHNob3VsZCBwcm9iYWJseSB1c2UgXCIke2h5cGhlbmF0ZShldmVudCl9XCIgaW5zdGVhZCBvZiBcIiR7ZXZlbnR9XCIuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IGhhbmRsZXJOYW1lO1xyXG4gICAgbGV0IGhhbmRsZXIgPSBwcm9wc1soaGFuZGxlck5hbWUgPSB0b0hhbmRsZXJLZXkoZXZlbnQpKV0gfHxcclxuICAgICAgICAvLyBhbHNvIHRyeSBjYW1lbENhc2UgZXZlbnQgaGFuZGxlciAoIzIyNDkpXHJcbiAgICAgICAgcHJvcHNbKGhhbmRsZXJOYW1lID0gdG9IYW5kbGVyS2V5KGNhbWVsaXplKGV2ZW50KSkpXTtcclxuICAgIC8vIGZvciB2LW1vZGVsIHVwZGF0ZTp4eHggZXZlbnRzLCBhbHNvIHRyaWdnZXIga2ViYWItY2FzZSBlcXVpdmFsZW50XHJcbiAgICAvLyBmb3IgcHJvcHMgcGFzc2VkIHZpYSBrZWJhYi1jYXNlXHJcbiAgICBpZiAoIWhhbmRsZXIgJiYgaXNNb2RlbExpc3RlbmVyKSB7XHJcbiAgICAgICAgaGFuZGxlciA9IHByb3BzWyhoYW5kbGVyTmFtZSA9IHRvSGFuZGxlcktleShoeXBoZW5hdGUoZXZlbnQpKSldO1xyXG4gICAgfVxyXG4gICAgaWYgKGhhbmRsZXIpIHtcclxuICAgICAgICBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhoYW5kbGVyLCBpbnN0YW5jZSwgNiAvKiBFcnJvckNvZGVzLkNPTVBPTkVOVF9FVkVOVF9IQU5ETEVSICovLCBhcmdzKTtcclxuICAgIH1cclxuICAgIGNvbnN0IG9uY2VIYW5kbGVyID0gcHJvcHNbaGFuZGxlck5hbWUgKyBgT25jZWBdO1xyXG4gICAgaWYgKG9uY2VIYW5kbGVyKSB7XHJcbiAgICAgICAgaWYgKCFpbnN0YW5jZS5lbWl0dGVkKSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlLmVtaXR0ZWQgPSB7fTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaW5zdGFuY2UuZW1pdHRlZFtoYW5kbGVyTmFtZV0pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpbnN0YW5jZS5lbWl0dGVkW2hhbmRsZXJOYW1lXSA9IHRydWU7XHJcbiAgICAgICAgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcob25jZUhhbmRsZXIsIGluc3RhbmNlLCA2IC8qIEVycm9yQ29kZXMuQ09NUE9ORU5UX0VWRU5UX0hBTkRMRVIgKi8sIGFyZ3MpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZUVtaXRzT3B0aW9ucyhjb21wLCBhcHBDb250ZXh0LCBhc01peGluID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGNhY2hlID0gYXBwQ29udGV4dC5lbWl0c0NhY2hlO1xyXG4gICAgY29uc3QgY2FjaGVkID0gY2FjaGUuZ2V0KGNvbXApO1xyXG4gICAgaWYgKGNhY2hlZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcmV0dXJuIGNhY2hlZDtcclxuICAgIH1cclxuICAgIGNvbnN0IHJhdyA9IGNvbXAuZW1pdHM7XHJcbiAgICBsZXQgbm9ybWFsaXplZCA9IHt9O1xyXG4gICAgLy8gYXBwbHkgbWl4aW4vZXh0ZW5kcyBwcm9wc1xyXG4gICAgbGV0IGhhc0V4dGVuZHMgPSBmYWxzZTtcclxuICAgIGlmIChfX1ZVRV9PUFRJT05TX0FQSV9fICYmICFpc0Z1bmN0aW9uKGNvbXApKSB7XHJcbiAgICAgICAgY29uc3QgZXh0ZW5kRW1pdHMgPSAocmF3KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRGcm9tRXh0ZW5kID0gbm9ybWFsaXplRW1pdHNPcHRpb25zKHJhdywgYXBwQ29udGV4dCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIGlmIChub3JtYWxpemVkRnJvbUV4dGVuZCkge1xyXG4gICAgICAgICAgICAgICAgaGFzRXh0ZW5kcyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBleHRlbmQobm9ybWFsaXplZCwgbm9ybWFsaXplZEZyb21FeHRlbmQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAoIWFzTWl4aW4gJiYgYXBwQ29udGV4dC5taXhpbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGFwcENvbnRleHQubWl4aW5zLmZvckVhY2goZXh0ZW5kRW1pdHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29tcC5leHRlbmRzKSB7XHJcbiAgICAgICAgICAgIGV4dGVuZEVtaXRzKGNvbXAuZXh0ZW5kcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb21wLm1peGlucykge1xyXG4gICAgICAgICAgICBjb21wLm1peGlucy5mb3JFYWNoKGV4dGVuZEVtaXRzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIXJhdyAmJiAhaGFzRXh0ZW5kcykge1xyXG4gICAgICAgIGlmIChpc09iamVjdChjb21wKSkge1xyXG4gICAgICAgICAgICBjYWNoZS5zZXQoY29tcCwgbnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzQXJyYXkocmF3KSkge1xyXG4gICAgICAgIHJhdy5mb3JFYWNoKGtleSA9PiAobm9ybWFsaXplZFtrZXldID0gbnVsbCkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZXh0ZW5kKG5vcm1hbGl6ZWQsIHJhdyk7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNPYmplY3QoY29tcCkpIHtcclxuICAgICAgICBjYWNoZS5zZXQoY29tcCwgbm9ybWFsaXplZCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbm9ybWFsaXplZDtcclxufVxyXG4vLyBDaGVjayBpZiBhbiBpbmNvbWluZyBwcm9wIGtleSBpcyBhIGRlY2xhcmVkIGVtaXQgZXZlbnQgbGlzdGVuZXIuXHJcbi8vIGUuZy4gV2l0aCBgZW1pdHM6IHsgY2xpY2s6IG51bGwgfWAsIHByb3BzIG5hbWVkIGBvbkNsaWNrYCBhbmQgYG9uY2xpY2tgIGFyZVxyXG4vLyBib3RoIGNvbnNpZGVyZWQgbWF0Y2hlZCBsaXN0ZW5lcnMuXHJcbmZ1bmN0aW9uIGlzRW1pdExpc3RlbmVyKG9wdGlvbnMsIGtleSkge1xyXG4gICAgaWYgKCFvcHRpb25zIHx8ICFpc09uKGtleSkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBrZXkgPSBrZXkuc2xpY2UoMikucmVwbGFjZSgvT25jZSQvLCAnJyk7XHJcbiAgICByZXR1cm4gKGhhc093bihvcHRpb25zLCBrZXlbMF0udG9Mb3dlckNhc2UoKSArIGtleS5zbGljZSgxKSkgfHxcclxuICAgICAgICBoYXNPd24ob3B0aW9ucywgaHlwaGVuYXRlKGtleSkpIHx8XHJcbiAgICAgICAgaGFzT3duKG9wdGlvbnMsIGtleSkpO1xyXG59XG5cbi8qKlxyXG4gKiBtYXJrIHRoZSBjdXJyZW50IHJlbmRlcmluZyBpbnN0YW5jZSBmb3IgYXNzZXQgcmVzb2x1dGlvbiAoZS5nLlxyXG4gKiByZXNvbHZlQ29tcG9uZW50LCByZXNvbHZlRGlyZWN0aXZlKSBkdXJpbmcgcmVuZGVyXHJcbiAqL1xyXG5sZXQgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlID0gbnVsbDtcclxubGV0IGN1cnJlbnRTY29wZUlkID0gbnVsbDtcclxuLyoqXHJcbiAqIE5vdGU6IHJlbmRlcmluZyBjYWxscyBtYXliZSBuZXN0ZWQuIFRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBwYXJlbnQgcmVuZGVyaW5nXHJcbiAqIGluc3RhbmNlIGlmIHByZXNlbnQsIHdoaWNoIHNob3VsZCBiZSByZXN0b3JlZCBhZnRlciB0aGUgcmVuZGVyIGlzIGRvbmU6XHJcbiAqXHJcbiAqIGBgYGpzXHJcbiAqIGNvbnN0IHByZXYgPSBzZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UoaSlcclxuICogLy8gLi4ucmVuZGVyXHJcbiAqIHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZShwcmV2KVxyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZShpbnN0YW5jZSkge1xyXG4gICAgY29uc3QgcHJldiA9IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZTtcclxuICAgIGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSA9IGluc3RhbmNlO1xyXG4gICAgY3VycmVudFNjb3BlSWQgPSAoaW5zdGFuY2UgJiYgaW5zdGFuY2UudHlwZS5fX3Njb3BlSWQpIHx8IG51bGw7XHJcbiAgICByZXR1cm4gcHJldjtcclxufVxyXG4vKipcclxuICogU2V0IHNjb3BlIGlkIHdoZW4gY3JlYXRpbmcgaG9pc3RlZCB2bm9kZXMuXHJcbiAqIEBwcml2YXRlIGNvbXBpbGVyIGhlbHBlclxyXG4gKi9cclxuZnVuY3Rpb24gcHVzaFNjb3BlSWQoaWQpIHtcclxuICAgIGN1cnJlbnRTY29wZUlkID0gaWQ7XHJcbn1cclxuLyoqXHJcbiAqIFRlY2huaWNhbGx5IHdlIG5vIGxvbmdlciBuZWVkIHRoaXMgYWZ0ZXIgMy4wLjggYnV0IHdlIG5lZWQgdG8ga2VlcCB0aGUgc2FtZVxyXG4gKiBBUEkgZm9yIGJhY2t3YXJkcyBjb21wYXQgdy8gY29kZSBnZW5lcmF0ZWQgYnkgY29tcGlsZXJzLlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gcG9wU2NvcGVJZCgpIHtcclxuICAgIGN1cnJlbnRTY29wZUlkID0gbnVsbDtcclxufVxyXG4vKipcclxuICogT25seSBmb3IgYmFja3dhcmRzIGNvbXBhdFxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuY29uc3Qgd2l0aFNjb3BlSWQgPSAoX2lkKSA9PiB3aXRoQ3R4O1xyXG4vKipcclxuICogV3JhcCBhIHNsb3QgZnVuY3Rpb24gdG8gbWVtb2l6ZSBjdXJyZW50IHJlbmRlcmluZyBpbnN0YW5jZVxyXG4gKiBAcHJpdmF0ZSBjb21waWxlciBoZWxwZXJcclxuICovXHJcbmZ1bmN0aW9uIHdpdGhDdHgoZm4sIGN0eCA9IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSwgaXNOb25TY29wZWRTbG90IC8vIGZhbHNlIG9ubHlcclxuKSB7XHJcbiAgICBpZiAoIWN0eClcclxuICAgICAgICByZXR1cm4gZm47XHJcbiAgICAvLyBhbHJlYWR5IG5vcm1hbGl6ZWRcclxuICAgIGlmIChmbi5fbikge1xyXG4gICAgICAgIHJldHVybiBmbjtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlbmRlckZuV2l0aENvbnRleHQgPSAoLi4uYXJncykgPT4ge1xyXG4gICAgICAgIC8vIElmIGEgdXNlciBjYWxscyBhIGNvbXBpbGVkIHNsb3QgaW5zaWRlIGEgdGVtcGxhdGUgZXhwcmVzc2lvbiAoIzE3NDUpLCBpdFxyXG4gICAgICAgIC8vIGNhbiBtZXNzIHVwIGJsb2NrIHRyYWNraW5nLCBzbyBieSBkZWZhdWx0IHdlIGRpc2FibGUgYmxvY2sgdHJhY2tpbmcgYW5kXHJcbiAgICAgICAgLy8gZm9yY2UgYmFpbCBvdXQgd2hlbiBpbnZva2luZyBhIGNvbXBpbGVkIHNsb3QgKGluZGljYXRlZCBieSB0aGUgLl9kIGZsYWcpLlxyXG4gICAgICAgIC8vIFRoaXMgaXNuJ3QgbmVjZXNzYXJ5IGlmIHJlbmRlcmluZyBhIGNvbXBpbGVkIGA8c2xvdD5gLCBzbyB3ZSBmbGlwIHRoZVxyXG4gICAgICAgIC8vIC5fZCBmbGFnIG9mZiB3aGVuIGludm9raW5nIHRoZSB3cmFwcGVkIGZuIGluc2lkZSBgcmVuZGVyU2xvdGAuXHJcbiAgICAgICAgaWYgKHJlbmRlckZuV2l0aENvbnRleHQuX2QpIHtcclxuICAgICAgICAgICAgc2V0QmxvY2tUcmFja2luZygtMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHByZXZJbnN0YW5jZSA9IHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZShjdHgpO1xyXG4gICAgICAgIGNvbnN0IHJlcyA9IGZuKC4uLmFyZ3MpO1xyXG4gICAgICAgIHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZShwcmV2SW5zdGFuY2UpO1xyXG4gICAgICAgIGlmIChyZW5kZXJGbldpdGhDb250ZXh0Ll9kKSB7XHJcbiAgICAgICAgICAgIHNldEJsb2NrVHJhY2tpbmcoMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgICAgIGRldnRvb2xzQ29tcG9uZW50VXBkYXRlZChjdHgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgfTtcclxuICAgIC8vIG1hcmsgbm9ybWFsaXplZCB0byBhdm9pZCBkdXBsaWNhdGVkIHdyYXBwaW5nXHJcbiAgICByZW5kZXJGbldpdGhDb250ZXh0Ll9uID0gdHJ1ZTtcclxuICAgIC8vIG1hcmsgdGhpcyBhcyBjb21waWxlZCBieSBkZWZhdWx0XHJcbiAgICAvLyB0aGlzIGlzIHVzZWQgaW4gdm5vZGUudHMgLT4gbm9ybWFsaXplQ2hpbGRyZW4oKSB0byBzZXQgdGhlIHNsb3RcclxuICAgIC8vIHJlbmRlcmluZyBmbGFnLlxyXG4gICAgcmVuZGVyRm5XaXRoQ29udGV4dC5fYyA9IHRydWU7XHJcbiAgICAvLyBkaXNhYmxlIGJsb2NrIHRyYWNraW5nIGJ5IGRlZmF1bHRcclxuICAgIHJlbmRlckZuV2l0aENvbnRleHQuX2QgPSB0cnVlO1xyXG4gICAgcmV0dXJuIHJlbmRlckZuV2l0aENvbnRleHQ7XHJcbn1cblxuLyoqXHJcbiAqIGRldiBvbmx5IGZsYWcgdG8gdHJhY2sgd2hldGhlciAkYXR0cnMgd2FzIHVzZWQgZHVyaW5nIHJlbmRlci5cclxuICogSWYgJGF0dHJzIHdhcyB1c2VkIGR1cmluZyByZW5kZXIgdGhlbiB0aGUgd2FybmluZyBmb3IgZmFpbGVkIGF0dHJzXHJcbiAqIGZhbGx0aHJvdWdoIGNhbiBiZSBzdXBwcmVzc2VkLlxyXG4gKi9cclxubGV0IGFjY2Vzc2VkQXR0cnMgPSBmYWxzZTtcclxuZnVuY3Rpb24gbWFya0F0dHJzQWNjZXNzZWQoKSB7XHJcbiAgICBhY2Nlc3NlZEF0dHJzID0gdHJ1ZTtcclxufVxyXG5mdW5jdGlvbiByZW5kZXJDb21wb25lbnRSb290KGluc3RhbmNlKSB7XHJcbiAgICBjb25zdCB7IHR5cGU6IENvbXBvbmVudCwgdm5vZGUsIHByb3h5LCB3aXRoUHJveHksIHByb3BzLCBwcm9wc09wdGlvbnM6IFtwcm9wc09wdGlvbnNdLCBzbG90cywgYXR0cnMsIGVtaXQsIHJlbmRlciwgcmVuZGVyQ2FjaGUsIGRhdGEsIHNldHVwU3RhdGUsIGN0eCwgaW5oZXJpdEF0dHJzIH0gPSBpbnN0YW5jZTtcclxuICAgIGxldCByZXN1bHQ7XHJcbiAgICBsZXQgZmFsbHRocm91Z2hBdHRycztcclxuICAgIGNvbnN0IHByZXYgPSBzZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UoaW5zdGFuY2UpO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGFjY2Vzc2VkQXR0cnMgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRyeSB7XHJcbiAgICAgICAgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDQgLyogU2hhcGVGbGFncy5TVEFURUZVTF9DT01QT05FTlQgKi8pIHtcclxuICAgICAgICAgICAgLy8gd2l0aFByb3h5IGlzIGEgcHJveHkgd2l0aCBhIGRpZmZlcmVudCBgaGFzYCB0cmFwIG9ubHkgZm9yXHJcbiAgICAgICAgICAgIC8vIHJ1bnRpbWUtY29tcGlsZWQgcmVuZGVyIGZ1bmN0aW9ucyB1c2luZyBgd2l0aGAgYmxvY2suXHJcbiAgICAgICAgICAgIGNvbnN0IHByb3h5VG9Vc2UgPSB3aXRoUHJveHkgfHwgcHJveHk7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IG5vcm1hbGl6ZVZOb2RlKHJlbmRlci5jYWxsKHByb3h5VG9Vc2UsIHByb3h5VG9Vc2UsIHJlbmRlckNhY2hlLCBwcm9wcywgc2V0dXBTdGF0ZSwgZGF0YSwgY3R4KSk7XHJcbiAgICAgICAgICAgIGZhbGx0aHJvdWdoQXR0cnMgPSBhdHRycztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGZ1bmN0aW9uYWxcclxuICAgICAgICAgICAgY29uc3QgcmVuZGVyID0gQ29tcG9uZW50O1xyXG4gICAgICAgICAgICAvLyBpbiBkZXYsIG1hcmsgYXR0cnMgYWNjZXNzZWQgaWYgb3B0aW9uYWwgcHJvcHMgKGF0dHJzID09PSBwcm9wcylcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBhdHRycyA9PT0gcHJvcHMpIHtcclxuICAgICAgICAgICAgICAgIG1hcmtBdHRyc0FjY2Vzc2VkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVzdWx0ID0gbm9ybWFsaXplVk5vZGUocmVuZGVyLmxlbmd0aCA+IDFcclxuICAgICAgICAgICAgICAgID8gcmVuZGVyKHByb3BzLCAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICAgICAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IGF0dHJzKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya0F0dHJzQWNjZXNzZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhdHRycztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2xvdHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgOiB7IGF0dHJzLCBzbG90cywgZW1pdCB9KVxyXG4gICAgICAgICAgICAgICAgOiByZW5kZXIocHJvcHMsIG51bGwgLyogd2Uga25vdyBpdCBkb2Vzbid0IG5lZWQgaXQgKi8pKTtcclxuICAgICAgICAgICAgZmFsbHRocm91Z2hBdHRycyA9IENvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgPyBhdHRyc1xyXG4gICAgICAgICAgICAgICAgOiBnZXRGdW5jdGlvbmFsRmFsbHRocm91Z2goYXR0cnMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICBibG9ja1N0YWNrLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyLCBpbnN0YW5jZSwgMSAvKiBFcnJvckNvZGVzLlJFTkRFUl9GVU5DVElPTiAqLyk7XHJcbiAgICAgICAgcmVzdWx0ID0gY3JlYXRlVk5vZGUoQ29tbWVudCk7XHJcbiAgICB9XHJcbiAgICAvLyBhdHRyIG1lcmdpbmdcclxuICAgIC8vIGluIGRldiBtb2RlLCBjb21tZW50cyBhcmUgcHJlc2VydmVkLCBhbmQgaXQncyBwb3NzaWJsZSBmb3IgYSB0ZW1wbGF0ZVxyXG4gICAgLy8gdG8gaGF2ZSBjb21tZW50cyBhbG9uZyBzaWRlIHRoZSByb290IGVsZW1lbnQgd2hpY2ggbWFrZXMgaXQgYSBmcmFnbWVudFxyXG4gICAgbGV0IHJvb3QgPSByZXN1bHQ7XHJcbiAgICBsZXQgc2V0Um9vdCA9IHVuZGVmaW5lZDtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICByZXN1bHQucGF0Y2hGbGFnID4gMCAmJlxyXG4gICAgICAgIHJlc3VsdC5wYXRjaEZsYWcgJiAyMDQ4IC8qIFBhdGNoRmxhZ3MuREVWX1JPT1RfRlJBR01FTlQgKi8pIHtcclxuICAgICAgICBbcm9vdCwgc2V0Um9vdF0gPSBnZXRDaGlsZFJvb3QocmVzdWx0KTtcclxuICAgIH1cclxuICAgIGlmIChmYWxsdGhyb3VnaEF0dHJzICYmIGluaGVyaXRBdHRycyAhPT0gZmFsc2UpIHtcclxuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoZmFsbHRocm91Z2hBdHRycyk7XHJcbiAgICAgICAgY29uc3QgeyBzaGFwZUZsYWcgfSA9IHJvb3Q7XHJcbiAgICAgICAgaWYgKGtleXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGlmIChzaGFwZUZsYWcgJiAoMSAvKiBTaGFwZUZsYWdzLkVMRU1FTlQgKi8gfCA2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UICovKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHByb3BzT3B0aW9ucyAmJiBrZXlzLnNvbWUoaXNNb2RlbExpc3RlbmVyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIGEgdi1tb2RlbCBsaXN0ZW5lciAob25VcGRhdGU6eHh4KSBoYXMgYSBjb3JyZXNwb25kaW5nIGRlY2xhcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcHJvcCwgaXQgaW5kaWNhdGVzIHRoaXMgY29tcG9uZW50IGV4cGVjdHMgdG8gaGFuZGxlIHYtbW9kZWwgYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaXQgc2hvdWxkIG5vdCBmYWxsdGhyb3VnaC5cclxuICAgICAgICAgICAgICAgICAgICAvLyByZWxhdGVkOiAjMTU0MywgIzE2NDMsICMxOTg5XHJcbiAgICAgICAgICAgICAgICAgICAgZmFsbHRocm91Z2hBdHRycyA9IGZpbHRlck1vZGVsTGlzdGVuZXJzKGZhbGx0aHJvdWdoQXR0cnMsIHByb3BzT3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByb290ID0gY2xvbmVWTm9kZShyb290LCBmYWxsdGhyb3VnaEF0dHJzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWFjY2Vzc2VkQXR0cnMgJiYgcm9vdC50eXBlICE9PSBDb21tZW50KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhbGxBdHRycyA9IE9iamVjdC5rZXlzKGF0dHJzKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50QXR0cnMgPSBbXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGV4dHJhQXR0cnMgPSBbXTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gYWxsQXR0cnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYWxsQXR0cnNbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzT24oa2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmUgdi1tb2RlbCBoYW5kbGVycyB3aGVuIHRoZXkgZmFpbCB0byBmYWxsdGhyb3VnaFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTW9kZWxMaXN0ZW5lcihrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgYG9uYCwgbG93ZXJjYXNlIGZpcnN0IGxldHRlciB0byByZWZsZWN0IGV2ZW50IGNhc2luZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjdXJhdGVseVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRBdHRycy5wdXNoKGtleVsyXS50b0xvd2VyQ2FzZSgpICsga2V5LnNsaWNlKDMpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFBdHRycy5wdXNoKGtleSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGV4dHJhQXR0cnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgRXh0cmFuZW91cyBub24tcHJvcHMgYXR0cmlidXRlcyAoYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGAke2V4dHJhQXR0cnMuam9pbignLCAnKX0pIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgd2VyZSBwYXNzZWQgdG8gY29tcG9uZW50IGJ1dCBjb3VsZCBub3QgYmUgYXV0b21hdGljYWxseSBpbmhlcml0ZWQgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBiZWNhdXNlIGNvbXBvbmVudCByZW5kZXJzIGZyYWdtZW50IG9yIHRleHQgcm9vdCBub2Rlcy5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChldmVudEF0dHJzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYEV4dHJhbmVvdXMgbm9uLWVtaXRzIGV2ZW50IGxpc3RlbmVycyAoYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGAke2V2ZW50QXR0cnMuam9pbignLCAnKX0pIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgd2VyZSBwYXNzZWQgdG8gY29tcG9uZW50IGJ1dCBjb3VsZCBub3QgYmUgYXV0b21hdGljYWxseSBpbmhlcml0ZWQgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBiZWNhdXNlIGNvbXBvbmVudCByZW5kZXJzIGZyYWdtZW50IG9yIHRleHQgcm9vdCBub2Rlcy4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBJZiB0aGUgbGlzdGVuZXIgaXMgaW50ZW5kZWQgdG8gYmUgYSBjb21wb25lbnQgY3VzdG9tIGV2ZW50IGxpc3RlbmVyIG9ubHksIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgZGVjbGFyZSBpdCB1c2luZyB0aGUgXCJlbWl0c1wiIG9wdGlvbi5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIGluaGVyaXQgZGlyZWN0aXZlc1xyXG4gICAgaWYgKHZub2RlLmRpcnMpIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpc0VsZW1lbnRSb290KHJvb3QpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYFJ1bnRpbWUgZGlyZWN0aXZlIHVzZWQgb24gY29tcG9uZW50IHdpdGggbm9uLWVsZW1lbnQgcm9vdCBub2RlLiBgICtcclxuICAgICAgICAgICAgICAgIGBUaGUgZGlyZWN0aXZlcyB3aWxsIG5vdCBmdW5jdGlvbiBhcyBpbnRlbmRlZC5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY2xvbmUgYmVmb3JlIG11dGF0aW5nIHNpbmNlIHRoZSByb290IG1heSBiZSBhIGhvaXN0ZWQgdm5vZGVcclxuICAgICAgICByb290ID0gY2xvbmVWTm9kZShyb290KTtcclxuICAgICAgICByb290LmRpcnMgPSByb290LmRpcnMgPyByb290LmRpcnMuY29uY2F0KHZub2RlLmRpcnMpIDogdm5vZGUuZGlycztcclxuICAgIH1cclxuICAgIC8vIGluaGVyaXQgdHJhbnNpdGlvbiBkYXRhXHJcbiAgICBpZiAodm5vZGUudHJhbnNpdGlvbikge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzRWxlbWVudFJvb3Qocm9vdCkpIHtcclxuICAgICAgICAgICAgd2FybihgQ29tcG9uZW50IGluc2lkZSA8VHJhbnNpdGlvbj4gcmVuZGVycyBub24tZWxlbWVudCByb290IG5vZGUgYCArXHJcbiAgICAgICAgICAgICAgICBgdGhhdCBjYW5ub3QgYmUgYW5pbWF0ZWQuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvb3QudHJhbnNpdGlvbiA9IHZub2RlLnRyYW5zaXRpb247XHJcbiAgICB9XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHNldFJvb3QpIHtcclxuICAgICAgICBzZXRSb290KHJvb3QpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcmVzdWx0ID0gcm9vdDtcclxuICAgIH1cclxuICAgIHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZShwcmV2KTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuLyoqXHJcbiAqIGRldiBvbmx5XHJcbiAqIEluIGRldiBtb2RlLCB0ZW1wbGF0ZSByb290IGxldmVsIGNvbW1lbnRzIGFyZSByZW5kZXJlZCwgd2hpY2ggdHVybnMgdGhlXHJcbiAqIHRlbXBsYXRlIGludG8gYSBmcmFnbWVudCByb290LCBidXQgd2UgbmVlZCB0byBsb2NhdGUgdGhlIHNpbmdsZSBlbGVtZW50XHJcbiAqIHJvb3QgZm9yIGF0dHJzIGFuZCBzY29wZSBpZCBwcm9jZXNzaW5nLlxyXG4gKi9cclxuY29uc3QgZ2V0Q2hpbGRSb290ID0gKHZub2RlKSA9PiB7XHJcbiAgICBjb25zdCByYXdDaGlsZHJlbiA9IHZub2RlLmNoaWxkcmVuO1xyXG4gICAgY29uc3QgZHluYW1pY0NoaWxkcmVuID0gdm5vZGUuZHluYW1pY0NoaWxkcmVuO1xyXG4gICAgY29uc3QgY2hpbGRSb290ID0gZmlsdGVyU2luZ2xlUm9vdChyYXdDaGlsZHJlbik7XHJcbiAgICBpZiAoIWNoaWxkUm9vdCkge1xyXG4gICAgICAgIHJldHVybiBbdm5vZGUsIHVuZGVmaW5lZF07XHJcbiAgICB9XHJcbiAgICBjb25zdCBpbmRleCA9IHJhd0NoaWxkcmVuLmluZGV4T2YoY2hpbGRSb290KTtcclxuICAgIGNvbnN0IGR5bmFtaWNJbmRleCA9IGR5bmFtaWNDaGlsZHJlbiA/IGR5bmFtaWNDaGlsZHJlbi5pbmRleE9mKGNoaWxkUm9vdCkgOiAtMTtcclxuICAgIGNvbnN0IHNldFJvb3QgPSAodXBkYXRlZFJvb3QpID0+IHtcclxuICAgICAgICByYXdDaGlsZHJlbltpbmRleF0gPSB1cGRhdGVkUm9vdDtcclxuICAgICAgICBpZiAoZHluYW1pY0NoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIGlmIChkeW5hbWljSW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgZHluYW1pY0NoaWxkcmVuW2R5bmFtaWNJbmRleF0gPSB1cGRhdGVkUm9vdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh1cGRhdGVkUm9vdC5wYXRjaEZsYWcgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZS5keW5hbWljQ2hpbGRyZW4gPSBbLi4uZHluYW1pY0NoaWxkcmVuLCB1cGRhdGVkUm9vdF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIFtub3JtYWxpemVWTm9kZShjaGlsZFJvb3QpLCBzZXRSb290XTtcclxufTtcclxuZnVuY3Rpb24gZmlsdGVyU2luZ2xlUm9vdChjaGlsZHJlbikge1xyXG4gICAgbGV0IHNpbmdsZVJvb3Q7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlbltpXTtcclxuICAgICAgICBpZiAoaXNWTm9kZShjaGlsZCkpIHtcclxuICAgICAgICAgICAgLy8gaWdub3JlIHVzZXIgY29tbWVudFxyXG4gICAgICAgICAgICBpZiAoY2hpbGQudHlwZSAhPT0gQ29tbWVudCB8fCBjaGlsZC5jaGlsZHJlbiA9PT0gJ3YtaWYnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2luZ2xlUm9vdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGhhcyBtb3JlIHRoYW4gMSBub24tY29tbWVudCBjaGlsZCwgcmV0dXJuIG5vd1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVJvb3QgPSBjaGlsZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzaW5nbGVSb290O1xyXG59XHJcbmNvbnN0IGdldEZ1bmN0aW9uYWxGYWxsdGhyb3VnaCA9IChhdHRycykgPT4ge1xyXG4gICAgbGV0IHJlcztcclxuICAgIGZvciAoY29uc3Qga2V5IGluIGF0dHJzKSB7XHJcbiAgICAgICAgaWYgKGtleSA9PT0gJ2NsYXNzJyB8fCBrZXkgPT09ICdzdHlsZScgfHwgaXNPbihrZXkpKSB7XHJcbiAgICAgICAgICAgIChyZXMgfHwgKHJlcyA9IHt9KSlba2V5XSA9IGF0dHJzW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxufTtcclxuY29uc3QgZmlsdGVyTW9kZWxMaXN0ZW5lcnMgPSAoYXR0cnMsIHByb3BzKSA9PiB7XHJcbiAgICBjb25zdCByZXMgPSB7fTtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIGF0dHJzKSB7XHJcbiAgICAgICAgaWYgKCFpc01vZGVsTGlzdGVuZXIoa2V5KSB8fCAhKGtleS5zbGljZSg5KSBpbiBwcm9wcykpIHtcclxuICAgICAgICAgICAgcmVzW2tleV0gPSBhdHRyc1trZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbn07XHJcbmNvbnN0IGlzRWxlbWVudFJvb3QgPSAodm5vZGUpID0+IHtcclxuICAgIHJldHVybiAodm5vZGUuc2hhcGVGbGFnICYgKDYgLyogU2hhcGVGbGFncy5DT01QT05FTlQgKi8gfCAxIC8qIFNoYXBlRmxhZ3MuRUxFTUVOVCAqLykgfHxcclxuICAgICAgICB2bm9kZS50eXBlID09PSBDb21tZW50IC8vIHBvdGVudGlhbCB2LWlmIGJyYW5jaCBzd2l0Y2hcclxuICAgICk7XHJcbn07XHJcbmZ1bmN0aW9uIHNob3VsZFVwZGF0ZUNvbXBvbmVudChwcmV2Vk5vZGUsIG5leHRWTm9kZSwgb3B0aW1pemVkKSB7XHJcbiAgICBjb25zdCB7IHByb3BzOiBwcmV2UHJvcHMsIGNoaWxkcmVuOiBwcmV2Q2hpbGRyZW4sIGNvbXBvbmVudCB9ID0gcHJldlZOb2RlO1xyXG4gICAgY29uc3QgeyBwcm9wczogbmV4dFByb3BzLCBjaGlsZHJlbjogbmV4dENoaWxkcmVuLCBwYXRjaEZsYWcgfSA9IG5leHRWTm9kZTtcclxuICAgIGNvbnN0IGVtaXRzID0gY29tcG9uZW50LmVtaXRzT3B0aW9ucztcclxuICAgIC8vIFBhcmVudCBjb21wb25lbnQncyByZW5kZXIgZnVuY3Rpb24gd2FzIGhvdC11cGRhdGVkLiBTaW5jZSB0aGlzIG1heSBoYXZlXHJcbiAgICAvLyBjYXVzZWQgdGhlIGNoaWxkIGNvbXBvbmVudCdzIHNsb3RzIGNvbnRlbnQgdG8gaGF2ZSBjaGFuZ2VkLCB3ZSBuZWVkIHRvXHJcbiAgICAvLyBmb3JjZSB0aGUgY2hpbGQgdG8gdXBkYXRlIGFzIHdlbGwuXHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIChwcmV2Q2hpbGRyZW4gfHwgbmV4dENoaWxkcmVuKSAmJiBpc0htclVwZGF0aW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICAvLyBmb3JjZSBjaGlsZCB1cGRhdGUgZm9yIHJ1bnRpbWUgZGlyZWN0aXZlIG9yIHRyYW5zaXRpb24gb24gY29tcG9uZW50IHZub2RlLlxyXG4gICAgaWYgKG5leHRWTm9kZS5kaXJzIHx8IG5leHRWTm9kZS50cmFuc2l0aW9uKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAob3B0aW1pemVkICYmIHBhdGNoRmxhZyA+PSAwKSB7XHJcbiAgICAgICAgaWYgKHBhdGNoRmxhZyAmIDEwMjQgLyogUGF0Y2hGbGFncy5EWU5BTUlDX1NMT1RTICovKSB7XHJcbiAgICAgICAgICAgIC8vIHNsb3QgY29udGVudCB0aGF0IHJlZmVyZW5jZXMgdmFsdWVzIHRoYXQgbWlnaHQgaGF2ZSBjaGFuZ2VkLFxyXG4gICAgICAgICAgICAvLyBlLmcuIGluIGEgdi1mb3JcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXRjaEZsYWcgJiAxNiAvKiBQYXRjaEZsYWdzLkZVTExfUFJPUFMgKi8pIHtcclxuICAgICAgICAgICAgaWYgKCFwcmV2UHJvcHMpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAhIW5leHRQcm9wcztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBwcmVzZW5jZSBvZiB0aGlzIGZsYWcgaW5kaWNhdGVzIHByb3BzIGFyZSBhbHdheXMgbm9uLW51bGxcclxuICAgICAgICAgICAgcmV0dXJuIGhhc1Byb3BzQ2hhbmdlZChwcmV2UHJvcHMsIG5leHRQcm9wcywgZW1pdHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChwYXRjaEZsYWcgJiA4IC8qIFBhdGNoRmxhZ3MuUFJPUFMgKi8pIHtcclxuICAgICAgICAgICAgY29uc3QgZHluYW1pY1Byb3BzID0gbmV4dFZOb2RlLmR5bmFtaWNQcm9wcztcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkeW5hbWljUHJvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGR5bmFtaWNQcm9wc1tpXTtcclxuICAgICAgICAgICAgICAgIGlmIChuZXh0UHJvcHNba2V5XSAhPT0gcHJldlByb3BzW2tleV0gJiZcclxuICAgICAgICAgICAgICAgICAgICAhaXNFbWl0TGlzdGVuZXIoZW1pdHMsIGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIHRoaXMgcGF0aCBpcyBvbmx5IHRha2VuIGJ5IG1hbnVhbGx5IHdyaXR0ZW4gcmVuZGVyIGZ1bmN0aW9uc1xyXG4gICAgICAgIC8vIHNvIHByZXNlbmNlIG9mIGFueSBjaGlsZHJlbiBsZWFkcyB0byBhIGZvcmNlZCB1cGRhdGVcclxuICAgICAgICBpZiAocHJldkNoaWxkcmVuIHx8IG5leHRDaGlsZHJlbikge1xyXG4gICAgICAgICAgICBpZiAoIW5leHRDaGlsZHJlbiB8fCAhbmV4dENoaWxkcmVuLiRzdGFibGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwcmV2UHJvcHMgPT09IG5leHRQcm9wcykge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghcHJldlByb3BzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAhIW5leHRQcm9wcztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFuZXh0UHJvcHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBoYXNQcm9wc0NoYW5nZWQocHJldlByb3BzLCBuZXh0UHJvcHMsIGVtaXRzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5mdW5jdGlvbiBoYXNQcm9wc0NoYW5nZWQocHJldlByb3BzLCBuZXh0UHJvcHMsIGVtaXRzT3B0aW9ucykge1xyXG4gICAgY29uc3QgbmV4dEtleXMgPSBPYmplY3Qua2V5cyhuZXh0UHJvcHMpO1xyXG4gICAgaWYgKG5leHRLZXlzLmxlbmd0aCAhPT0gT2JqZWN0LmtleXMocHJldlByb3BzKS5sZW5ndGgpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmV4dEtleXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBrZXkgPSBuZXh0S2V5c1tpXTtcclxuICAgICAgICBpZiAobmV4dFByb3BzW2tleV0gIT09IHByZXZQcm9wc1trZXldICYmXHJcbiAgICAgICAgICAgICFpc0VtaXRMaXN0ZW5lcihlbWl0c09wdGlvbnMsIGtleSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbmZ1bmN0aW9uIHVwZGF0ZUhPQ0hvc3RFbCh7IHZub2RlLCBwYXJlbnQgfSwgZWwgLy8gSG9zdE5vZGVcclxuKSB7XHJcbiAgICB3aGlsZSAocGFyZW50ICYmIHBhcmVudC5zdWJUcmVlID09PSB2bm9kZSkge1xyXG4gICAgICAgICh2bm9kZSA9IHBhcmVudC52bm9kZSkuZWwgPSBlbDtcclxuICAgICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50O1xyXG4gICAgfVxyXG59XG5cbmNvbnN0IGlzU3VzcGVuc2UgPSAodHlwZSkgPT4gdHlwZS5fX2lzU3VzcGVuc2U7XHJcbi8vIFN1c3BlbnNlIGV4cG9zZXMgYSBjb21wb25lbnQtbGlrZSBBUEksIGFuZCBpcyB0cmVhdGVkIGxpa2UgYSBjb21wb25lbnRcclxuLy8gaW4gdGhlIGNvbXBpbGVyLCBidXQgaW50ZXJuYWxseSBpdCdzIGEgc3BlY2lhbCBidWlsdC1pbiB0eXBlIHRoYXQgaG9va3NcclxuLy8gZGlyZWN0bHkgaW50byB0aGUgcmVuZGVyZXIuXHJcbmNvbnN0IFN1c3BlbnNlSW1wbCA9IHtcclxuICAgIG5hbWU6ICdTdXNwZW5zZScsXHJcbiAgICAvLyBJbiBvcmRlciB0byBtYWtlIFN1c3BlbnNlIHRyZWUtc2hha2FibGUsIHdlIG5lZWQgdG8gYXZvaWQgaW1wb3J0aW5nIGl0XHJcbiAgICAvLyBkaXJlY3RseSBpbiB0aGUgcmVuZGVyZXIuIFRoZSByZW5kZXJlciBjaGVja3MgZm9yIHRoZSBfX2lzU3VzcGVuc2UgZmxhZ1xyXG4gICAgLy8gb24gYSB2bm9kZSdzIHR5cGUgYW5kIGNhbGxzIHRoZSBgcHJvY2Vzc2AgbWV0aG9kLCBwYXNzaW5nIGluIHJlbmRlcmVyXHJcbiAgICAvLyBpbnRlcm5hbHMuXHJcbiAgICBfX2lzU3VzcGVuc2U6IHRydWUsXHJcbiAgICBwcm9jZXNzKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgXHJcbiAgICAvLyBwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsIHBhc3NlZCBmcm9tIHJlbmRlcmVyXHJcbiAgICByZW5kZXJlckludGVybmFscykge1xyXG4gICAgICAgIGlmIChuMSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIG1vdW50U3VzcGVuc2UobjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIHJlbmRlcmVySW50ZXJuYWxzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHBhdGNoU3VzcGVuc2UobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIHJlbmRlcmVySW50ZXJuYWxzKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgaHlkcmF0ZTogaHlkcmF0ZVN1c3BlbnNlLFxyXG4gICAgY3JlYXRlOiBjcmVhdGVTdXNwZW5zZUJvdW5kYXJ5LFxyXG4gICAgbm9ybWFsaXplOiBub3JtYWxpemVTdXNwZW5zZUNoaWxkcmVuXHJcbn07XHJcbi8vIEZvcmNlLWNhc3RlZCBwdWJsaWMgdHlwaW5nIGZvciBoIGFuZCBUU1ggcHJvcHMgaW5mZXJlbmNlXHJcbmNvbnN0IFN1c3BlbnNlID0gKFN1c3BlbnNlSW1wbCApO1xyXG5mdW5jdGlvbiB0cmlnZ2VyRXZlbnQodm5vZGUsIG5hbWUpIHtcclxuICAgIGNvbnN0IGV2ZW50TGlzdGVuZXIgPSB2bm9kZS5wcm9wcyAmJiB2bm9kZS5wcm9wc1tuYW1lXTtcclxuICAgIGlmIChpc0Z1bmN0aW9uKGV2ZW50TGlzdGVuZXIpKSB7XHJcbiAgICAgICAgZXZlbnRMaXN0ZW5lcigpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIG1vdW50U3VzcGVuc2Uodm5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIHJlbmRlcmVySW50ZXJuYWxzKSB7XHJcbiAgICBjb25zdCB7IHA6IHBhdGNoLCBvOiB7IGNyZWF0ZUVsZW1lbnQgfSB9ID0gcmVuZGVyZXJJbnRlcm5hbHM7XHJcbiAgICBjb25zdCBoaWRkZW5Db250YWluZXIgPSBjcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIGNvbnN0IHN1c3BlbnNlID0gKHZub2RlLnN1c3BlbnNlID0gY3JlYXRlU3VzcGVuc2VCb3VuZGFyeSh2bm9kZSwgcGFyZW50U3VzcGVuc2UsIHBhcmVudENvbXBvbmVudCwgY29udGFpbmVyLCBoaWRkZW5Db250YWluZXIsIGFuY2hvciwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCByZW5kZXJlckludGVybmFscykpO1xyXG4gICAgLy8gc3RhcnQgbW91bnRpbmcgdGhlIGNvbnRlbnQgc3VidHJlZSBpbiBhbiBvZmYtZG9tIGNvbnRhaW5lclxyXG4gICAgcGF0Y2gobnVsbCwgKHN1c3BlbnNlLnBlbmRpbmdCcmFuY2ggPSB2bm9kZS5zc0NvbnRlbnQpLCBoaWRkZW5Db250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgc3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMpO1xyXG4gICAgLy8gbm93IGNoZWNrIGlmIHdlIGhhdmUgZW5jb3VudGVyZWQgYW55IGFzeW5jIGRlcHNcclxuICAgIGlmIChzdXNwZW5zZS5kZXBzID4gMCkge1xyXG4gICAgICAgIC8vIGhhcyBhc3luY1xyXG4gICAgICAgIC8vIGludm9rZSBAZmFsbGJhY2sgZXZlbnRcclxuICAgICAgICB0cmlnZ2VyRXZlbnQodm5vZGUsICdvblBlbmRpbmcnKTtcclxuICAgICAgICB0cmlnZ2VyRXZlbnQodm5vZGUsICdvbkZhbGxiYWNrJyk7XHJcbiAgICAgICAgLy8gbW91bnQgdGhlIGZhbGxiYWNrIHRyZWVcclxuICAgICAgICBwYXRjaChudWxsLCB2bm9kZS5zc0ZhbGxiYWNrLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBudWxsLCAvLyBmYWxsYmFjayB0cmVlIHdpbGwgbm90IGhhdmUgc3VzcGVuc2UgY29udGV4dFxyXG4gICAgICAgIGlzU1ZHLCBzbG90U2NvcGVJZHMpO1xyXG4gICAgICAgIHNldEFjdGl2ZUJyYW5jaChzdXNwZW5zZSwgdm5vZGUuc3NGYWxsYmFjayk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBTdXNwZW5zZSBoYXMgbm8gYXN5bmMgZGVwcy4gSnVzdCByZXNvbHZlLlxyXG4gICAgICAgIHN1c3BlbnNlLnJlc29sdmUoKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBwYXRjaFN1c3BlbnNlKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCB7IHA6IHBhdGNoLCB1bTogdW5tb3VudCwgbzogeyBjcmVhdGVFbGVtZW50IH0gfSkge1xyXG4gICAgY29uc3Qgc3VzcGVuc2UgPSAobjIuc3VzcGVuc2UgPSBuMS5zdXNwZW5zZSk7XHJcbiAgICBzdXNwZW5zZS52bm9kZSA9IG4yO1xyXG4gICAgbjIuZWwgPSBuMS5lbDtcclxuICAgIGNvbnN0IG5ld0JyYW5jaCA9IG4yLnNzQ29udGVudDtcclxuICAgIGNvbnN0IG5ld0ZhbGxiYWNrID0gbjIuc3NGYWxsYmFjaztcclxuICAgIGNvbnN0IHsgYWN0aXZlQnJhbmNoLCBwZW5kaW5nQnJhbmNoLCBpc0luRmFsbGJhY2ssIGlzSHlkcmF0aW5nIH0gPSBzdXNwZW5zZTtcclxuICAgIGlmIChwZW5kaW5nQnJhbmNoKSB7XHJcbiAgICAgICAgc3VzcGVuc2UucGVuZGluZ0JyYW5jaCA9IG5ld0JyYW5jaDtcclxuICAgICAgICBpZiAoaXNTYW1lVk5vZGVUeXBlKG5ld0JyYW5jaCwgcGVuZGluZ0JyYW5jaCkpIHtcclxuICAgICAgICAgICAgLy8gc2FtZSByb290IHR5cGUgYnV0IGNvbnRlbnQgbWF5IGhhdmUgY2hhbmdlZC5cclxuICAgICAgICAgICAgcGF0Y2gocGVuZGluZ0JyYW5jaCwgbmV3QnJhbmNoLCBzdXNwZW5zZS5oaWRkZW5Db250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgc3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIGlmIChzdXNwZW5zZS5kZXBzIDw9IDApIHtcclxuICAgICAgICAgICAgICAgIHN1c3BlbnNlLnJlc29sdmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChpc0luRmFsbGJhY2spIHtcclxuICAgICAgICAgICAgICAgIHBhdGNoKGFjdGl2ZUJyYW5jaCwgbmV3RmFsbGJhY2ssIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIG51bGwsIC8vIGZhbGxiYWNrIHRyZWUgd2lsbCBub3QgaGF2ZSBzdXNwZW5zZSBjb250ZXh0XHJcbiAgICAgICAgICAgICAgICBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgc2V0QWN0aXZlQnJhbmNoKHN1c3BlbnNlLCBuZXdGYWxsYmFjayk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHRvZ2dsZWQgYmVmb3JlIHBlbmRpbmcgdHJlZSBpcyByZXNvbHZlZFxyXG4gICAgICAgICAgICBzdXNwZW5zZS5wZW5kaW5nSWQrKztcclxuICAgICAgICAgICAgaWYgKGlzSHlkcmF0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZiB0b2dnbGVkIGJlZm9yZSBoeWRyYXRpb24gaXMgZmluaXNoZWQsIHRoZSBjdXJyZW50IERPTSB0cmVlIGlzXHJcbiAgICAgICAgICAgICAgICAvLyBubyBsb25nZXIgdmFsaWQuIHNldCBpdCBhcyB0aGUgYWN0aXZlIGJyYW5jaCBzbyBpdCB3aWxsIGJlIHVubW91bnRlZFxyXG4gICAgICAgICAgICAgICAgLy8gd2hlbiByZXNvbHZlZFxyXG4gICAgICAgICAgICAgICAgc3VzcGVuc2UuaXNIeWRyYXRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHN1c3BlbnNlLmFjdGl2ZUJyYW5jaCA9IHBlbmRpbmdCcmFuY2g7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB1bm1vdW50KHBlbmRpbmdCcmFuY2gsIHBhcmVudENvbXBvbmVudCwgc3VzcGVuc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGluY3JlbWVudCBwZW5kaW5nIElELiB0aGlzIGlzIHVzZWQgdG8gaW52YWxpZGF0ZSBhc3luYyBjYWxsYmFja3NcclxuICAgICAgICAgICAgLy8gcmVzZXQgc3VzcGVuc2Ugc3RhdGVcclxuICAgICAgICAgICAgc3VzcGVuc2UuZGVwcyA9IDA7XHJcbiAgICAgICAgICAgIC8vIGRpc2NhcmQgZWZmZWN0cyBmcm9tIHBlbmRpbmcgYnJhbmNoXHJcbiAgICAgICAgICAgIHN1c3BlbnNlLmVmZmVjdHMubGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgLy8gZGlzY2FyZCBwcmV2aW91cyBjb250YWluZXJcclxuICAgICAgICAgICAgc3VzcGVuc2UuaGlkZGVuQ29udGFpbmVyID0gY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgICAgIGlmIChpc0luRmFsbGJhY2spIHtcclxuICAgICAgICAgICAgICAgIC8vIGFscmVhZHkgaW4gZmFsbGJhY2sgc3RhdGVcclxuICAgICAgICAgICAgICAgIHBhdGNoKG51bGwsIG5ld0JyYW5jaCwgc3VzcGVuc2UuaGlkZGVuQ29udGFpbmVyLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHN1c3BlbnNlLmRlcHMgPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN1c3BlbnNlLnJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhdGNoKGFjdGl2ZUJyYW5jaCwgbmV3RmFsbGJhY2ssIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIG51bGwsIC8vIGZhbGxiYWNrIHRyZWUgd2lsbCBub3QgaGF2ZSBzdXNwZW5zZSBjb250ZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRBY3RpdmVCcmFuY2goc3VzcGVuc2UsIG5ld0ZhbGxiYWNrKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChhY3RpdmVCcmFuY2ggJiYgaXNTYW1lVk5vZGVUeXBlKG5ld0JyYW5jaCwgYWN0aXZlQnJhbmNoKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gdG9nZ2xlZCBcImJhY2tcIiB0byBjdXJyZW50IGFjdGl2ZSBicmFuY2hcclxuICAgICAgICAgICAgICAgIHBhdGNoKGFjdGl2ZUJyYW5jaCwgbmV3QnJhbmNoLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBzdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIC8vIGZvcmNlIHJlc29sdmVcclxuICAgICAgICAgICAgICAgIHN1c3BlbnNlLnJlc29sdmUodHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBzd2l0Y2hlZCB0byBhIDNyZCBicmFuY2hcclxuICAgICAgICAgICAgICAgIHBhdGNoKG51bGwsIG5ld0JyYW5jaCwgc3VzcGVuc2UuaGlkZGVuQ29udGFpbmVyLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHN1c3BlbnNlLmRlcHMgPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN1c3BlbnNlLnJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChhY3RpdmVCcmFuY2ggJiYgaXNTYW1lVk5vZGVUeXBlKG5ld0JyYW5jaCwgYWN0aXZlQnJhbmNoKSkge1xyXG4gICAgICAgICAgICAvLyByb290IGRpZCBub3QgY2hhbmdlLCBqdXN0IG5vcm1hbCBwYXRjaFxyXG4gICAgICAgICAgICBwYXRjaChhY3RpdmVCcmFuY2gsIG5ld0JyYW5jaCwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgc3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIHNldEFjdGl2ZUJyYW5jaChzdXNwZW5zZSwgbmV3QnJhbmNoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHJvb3Qgbm9kZSB0b2dnbGVkXHJcbiAgICAgICAgICAgIC8vIGludm9rZSBAcGVuZGluZyBldmVudFxyXG4gICAgICAgICAgICB0cmlnZ2VyRXZlbnQobjIsICdvblBlbmRpbmcnKTtcclxuICAgICAgICAgICAgLy8gbW91bnQgcGVuZGluZyBicmFuY2ggaW4gb2ZmLWRvbSBjb250YWluZXJcclxuICAgICAgICAgICAgc3VzcGVuc2UucGVuZGluZ0JyYW5jaCA9IG5ld0JyYW5jaDtcclxuICAgICAgICAgICAgc3VzcGVuc2UucGVuZGluZ0lkKys7XHJcbiAgICAgICAgICAgIHBhdGNoKG51bGwsIG5ld0JyYW5jaCwgc3VzcGVuc2UuaGlkZGVuQ29udGFpbmVyLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICBpZiAoc3VzcGVuc2UuZGVwcyA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpbmNvbWluZyBicmFuY2ggaGFzIG5vIGFzeW5jIGRlcHMsIHJlc29sdmUgbm93LlxyXG4gICAgICAgICAgICAgICAgc3VzcGVuc2UucmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyB0aW1lb3V0LCBwZW5kaW5nSWQgfSA9IHN1c3BlbnNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRpbWVvdXQgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXNwZW5zZS5wZW5kaW5nSWQgPT09IHBlbmRpbmdJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VzcGVuc2UuZmFsbGJhY2sobmV3RmFsbGJhY2spO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgdGltZW91dCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aW1lb3V0ID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3VzcGVuc2UuZmFsbGJhY2sobmV3RmFsbGJhY2spO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmxldCBoYXNXYXJuZWQgPSBmYWxzZTtcclxuZnVuY3Rpb24gY3JlYXRlU3VzcGVuc2VCb3VuZGFyeSh2bm9kZSwgcGFyZW50LCBwYXJlbnRDb21wb25lbnQsIGNvbnRhaW5lciwgaGlkZGVuQ29udGFpbmVyLCBhbmNob3IsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgcmVuZGVyZXJJbnRlcm5hbHMsIGlzSHlkcmF0aW5nID0gZmFsc2UpIHtcclxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhZmFsc2UgJiYgIWhhc1dhcm5lZCkge1xyXG4gICAgICAgIGhhc1dhcm5lZCA9IHRydWU7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZSBgY29uc29sZS5pbmZvYCBjYW5ub3QgYmUgbnVsbCBlcnJvclxyXG4gICAgICAgIGNvbnNvbGVbY29uc29sZS5pbmZvID8gJ2luZm8nIDogJ2xvZyddKGA8U3VzcGVuc2U+IGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGFuZCBpdHMgQVBJIHdpbGwgbGlrZWx5IGNoYW5nZS5gKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgcDogcGF0Y2gsIG06IG1vdmUsIHVtOiB1bm1vdW50LCBuOiBuZXh0LCBvOiB7IHBhcmVudE5vZGUsIHJlbW92ZSB9IH0gPSByZW5kZXJlckludGVybmFscztcclxuICAgIGNvbnN0IHRpbWVvdXQgPSB0b051bWJlcih2bm9kZS5wcm9wcyAmJiB2bm9kZS5wcm9wcy50aW1lb3V0KTtcclxuICAgIGNvbnN0IHN1c3BlbnNlID0ge1xyXG4gICAgICAgIHZub2RlLFxyXG4gICAgICAgIHBhcmVudCxcclxuICAgICAgICBwYXJlbnRDb21wb25lbnQsXHJcbiAgICAgICAgaXNTVkcsXHJcbiAgICAgICAgY29udGFpbmVyLFxyXG4gICAgICAgIGhpZGRlbkNvbnRhaW5lcixcclxuICAgICAgICBhbmNob3IsXHJcbiAgICAgICAgZGVwczogMCxcclxuICAgICAgICBwZW5kaW5nSWQ6IDAsXHJcbiAgICAgICAgdGltZW91dDogdHlwZW9mIHRpbWVvdXQgPT09ICdudW1iZXInID8gdGltZW91dCA6IC0xLFxyXG4gICAgICAgIGFjdGl2ZUJyYW5jaDogbnVsbCxcclxuICAgICAgICBwZW5kaW5nQnJhbmNoOiBudWxsLFxyXG4gICAgICAgIGlzSW5GYWxsYmFjazogdHJ1ZSxcclxuICAgICAgICBpc0h5ZHJhdGluZyxcclxuICAgICAgICBpc1VubW91bnRlZDogZmFsc2UsXHJcbiAgICAgICAgZWZmZWN0czogW10sXHJcbiAgICAgICAgcmVzb2x2ZShyZXN1bWUgPSBmYWxzZSkge1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VtZSAmJiAhc3VzcGVuc2UucGVuZGluZ0JyYW5jaCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgc3VzcGVuc2UucmVzb2x2ZSgpIGlzIGNhbGxlZCB3aXRob3V0IGEgcGVuZGluZyBicmFuY2guYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoc3VzcGVuc2UuaXNVbm1vdW50ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHN1c3BlbnNlLnJlc29sdmUoKSBpcyBjYWxsZWQgb24gYW4gYWxyZWFkeSB1bm1vdW50ZWQgc3VzcGVuc2UgYm91bmRhcnkuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgeyB2bm9kZSwgYWN0aXZlQnJhbmNoLCBwZW5kaW5nQnJhbmNoLCBwZW5kaW5nSWQsIGVmZmVjdHMsIHBhcmVudENvbXBvbmVudCwgY29udGFpbmVyIH0gPSBzdXNwZW5zZTtcclxuICAgICAgICAgICAgaWYgKHN1c3BlbnNlLmlzSHlkcmF0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICBzdXNwZW5zZS5pc0h5ZHJhdGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKCFyZXN1bWUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRlbGF5RW50ZXIgPSBhY3RpdmVCcmFuY2ggJiZcclxuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nQnJhbmNoLnRyYW5zaXRpb24gJiZcclxuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nQnJhbmNoLnRyYW5zaXRpb24ubW9kZSA9PT0gJ291dC1pbic7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGVsYXlFbnRlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUJyYW5jaC50cmFuc2l0aW9uLmFmdGVyTGVhdmUgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZW5kaW5nSWQgPT09IHN1c3BlbnNlLnBlbmRpbmdJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZShwZW5kaW5nQnJhbmNoLCBjb250YWluZXIsIGFuY2hvciwgMCAvKiBNb3ZlVHlwZS5FTlRFUiAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBpbml0aWFsIGFuY2hvciBvbiBtb3VudFxyXG4gICAgICAgICAgICAgICAgbGV0IHsgYW5jaG9yIH0gPSBzdXNwZW5zZTtcclxuICAgICAgICAgICAgICAgIC8vIHVubW91bnQgY3VycmVudCBhY3RpdmUgdHJlZVxyXG4gICAgICAgICAgICAgICAgaWYgKGFjdGl2ZUJyYW5jaCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBmYWxsYmFjayB0cmVlIHdhcyBtb3VudGVkLCBpdCBtYXkgaGF2ZSBiZWVuIG1vdmVkXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYXMgcGFydCBvZiBhIHBhcmVudCBzdXNwZW5zZS4gZ2V0IHRoZSBsYXRlc3QgYW5jaG9yIGZvciBpbnNlcnRpb25cclxuICAgICAgICAgICAgICAgICAgICBhbmNob3IgPSBuZXh0KGFjdGl2ZUJyYW5jaCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdW5tb3VudChhY3RpdmVCcmFuY2gsIHBhcmVudENvbXBvbmVudCwgc3VzcGVuc2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFkZWxheUVudGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gbW92ZSBjb250ZW50IGZyb20gb2ZmLWRvbSBjb250YWluZXIgdG8gYWN0dWFsIGNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgIG1vdmUocGVuZGluZ0JyYW5jaCwgY29udGFpbmVyLCBhbmNob3IsIDAgLyogTW92ZVR5cGUuRU5URVIgKi8pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNldEFjdGl2ZUJyYW5jaChzdXNwZW5zZSwgcGVuZGluZ0JyYW5jaCk7XHJcbiAgICAgICAgICAgIHN1c3BlbnNlLnBlbmRpbmdCcmFuY2ggPSBudWxsO1xyXG4gICAgICAgICAgICBzdXNwZW5zZS5pc0luRmFsbGJhY2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgLy8gZmx1c2ggYnVmZmVyZWQgZWZmZWN0c1xyXG4gICAgICAgICAgICAvLyBjaGVjayBpZiB0aGVyZSBpcyBhIHBlbmRpbmcgcGFyZW50IHN1c3BlbnNlXHJcbiAgICAgICAgICAgIGxldCBwYXJlbnQgPSBzdXNwZW5zZS5wYXJlbnQ7XHJcbiAgICAgICAgICAgIGxldCBoYXNVbnJlc29sdmVkQW5jZXN0b3IgPSBmYWxzZTtcclxuICAgICAgICAgICAgd2hpbGUgKHBhcmVudCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudC5wZW5kaW5nQnJhbmNoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZm91bmQgYSBwZW5kaW5nIHBhcmVudCBzdXNwZW5zZSwgbWVyZ2UgYnVmZmVyZWQgcG9zdCBqb2JzXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaW50byB0aGF0IHBhcmVudFxyXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudC5lZmZlY3RzLnB1c2goLi4uZWZmZWN0cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzVW5yZXNvbHZlZEFuY2VzdG9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gbm8gcGVuZGluZyBwYXJlbnQgc3VzcGVuc2UsIGZsdXNoIGFsbCBqb2JzXHJcbiAgICAgICAgICAgIGlmICghaGFzVW5yZXNvbHZlZEFuY2VzdG9yKSB7XHJcbiAgICAgICAgICAgICAgICBxdWV1ZVBvc3RGbHVzaENiKGVmZmVjdHMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHN1c3BlbnNlLmVmZmVjdHMgPSBbXTtcclxuICAgICAgICAgICAgLy8gaW52b2tlIEByZXNvbHZlIGV2ZW50XHJcbiAgICAgICAgICAgIHRyaWdnZXJFdmVudCh2bm9kZSwgJ29uUmVzb2x2ZScpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZmFsbGJhY2soZmFsbGJhY2tWTm9kZSkge1xyXG4gICAgICAgICAgICBpZiAoIXN1c3BlbnNlLnBlbmRpbmdCcmFuY2gpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCB7IHZub2RlLCBhY3RpdmVCcmFuY2gsIHBhcmVudENvbXBvbmVudCwgY29udGFpbmVyLCBpc1NWRyB9ID0gc3VzcGVuc2U7XHJcbiAgICAgICAgICAgIC8vIGludm9rZSBAZmFsbGJhY2sgZXZlbnRcclxuICAgICAgICAgICAgdHJpZ2dlckV2ZW50KHZub2RlLCAnb25GYWxsYmFjaycpO1xyXG4gICAgICAgICAgICBjb25zdCBhbmNob3IgPSBuZXh0KGFjdGl2ZUJyYW5jaCk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vdW50RmFsbGJhY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXN1c3BlbnNlLmlzSW5GYWxsYmFjaykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIG1vdW50IHRoZSBmYWxsYmFjayB0cmVlXHJcbiAgICAgICAgICAgICAgICBwYXRjaChudWxsLCBmYWxsYmFja1ZOb2RlLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBudWxsLCAvLyBmYWxsYmFjayB0cmVlIHdpbGwgbm90IGhhdmUgc3VzcGVuc2UgY29udGV4dFxyXG4gICAgICAgICAgICAgICAgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIHNldEFjdGl2ZUJyYW5jaChzdXNwZW5zZSwgZmFsbGJhY2tWTm9kZSk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGNvbnN0IGRlbGF5RW50ZXIgPSBmYWxsYmFja1ZOb2RlLnRyYW5zaXRpb24gJiYgZmFsbGJhY2tWTm9kZS50cmFuc2l0aW9uLm1vZGUgPT09ICdvdXQtaW4nO1xyXG4gICAgICAgICAgICBpZiAoZGVsYXlFbnRlcikge1xyXG4gICAgICAgICAgICAgICAgYWN0aXZlQnJhbmNoLnRyYW5zaXRpb24uYWZ0ZXJMZWF2ZSA9IG1vdW50RmFsbGJhY2s7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc3VzcGVuc2UuaXNJbkZhbGxiYWNrID0gdHJ1ZTtcclxuICAgICAgICAgICAgLy8gdW5tb3VudCBjdXJyZW50IGFjdGl2ZSBicmFuY2hcclxuICAgICAgICAgICAgdW5tb3VudChhY3RpdmVCcmFuY2gsIHBhcmVudENvbXBvbmVudCwgbnVsbCwgLy8gbm8gc3VzcGVuc2Ugc28gdW5tb3VudCBob29rcyBmaXJlIG5vd1xyXG4gICAgICAgICAgICB0cnVlIC8vIHNob3VsZFJlbW92ZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoIWRlbGF5RW50ZXIpIHtcclxuICAgICAgICAgICAgICAgIG1vdW50RmFsbGJhY2soKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbW92ZShjb250YWluZXIsIGFuY2hvciwgdHlwZSkge1xyXG4gICAgICAgICAgICBzdXNwZW5zZS5hY3RpdmVCcmFuY2ggJiZcclxuICAgICAgICAgICAgICAgIG1vdmUoc3VzcGVuc2UuYWN0aXZlQnJhbmNoLCBjb250YWluZXIsIGFuY2hvciwgdHlwZSk7XHJcbiAgICAgICAgICAgIHN1c3BlbnNlLmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG5leHQoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzdXNwZW5zZS5hY3RpdmVCcmFuY2ggJiYgbmV4dChzdXNwZW5zZS5hY3RpdmVCcmFuY2gpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVnaXN0ZXJEZXAoaW5zdGFuY2UsIHNldHVwUmVuZGVyRWZmZWN0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzSW5QZW5kaW5nU3VzcGVuc2UgPSAhIXN1c3BlbnNlLnBlbmRpbmdCcmFuY2g7XHJcbiAgICAgICAgICAgIGlmIChpc0luUGVuZGluZ1N1c3BlbnNlKSB7XHJcbiAgICAgICAgICAgICAgICBzdXNwZW5zZS5kZXBzKys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgaHlkcmF0ZWRFbCA9IGluc3RhbmNlLnZub2RlLmVsO1xyXG4gICAgICAgICAgICBpbnN0YW5jZVxyXG4gICAgICAgICAgICAgICAgLmFzeW5jRGVwLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICBoYW5kbGVFcnJvcihlcnIsIGluc3RhbmNlLCAwIC8qIEVycm9yQ29kZXMuU0VUVVBfRlVOQ1RJT04gKi8pO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oYXN5bmNTZXR1cFJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyByZXRyeSB3aGVuIHRoZSBzZXR1cCgpIHByb21pc2UgcmVzb2x2ZXMuXHJcbiAgICAgICAgICAgICAgICAvLyBjb21wb25lbnQgbWF5IGhhdmUgYmVlbiB1bm1vdW50ZWQgYmVmb3JlIHJlc29sdmUuXHJcbiAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2UuaXNVbm1vdW50ZWQgfHxcclxuICAgICAgICAgICAgICAgICAgICBzdXNwZW5zZS5pc1VubW91bnRlZCB8fFxyXG4gICAgICAgICAgICAgICAgICAgIHN1c3BlbnNlLnBlbmRpbmdJZCAhPT0gaW5zdGFuY2Uuc3VzcGVuc2VJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIHJldHJ5IGZyb20gdGhpcyBjb21wb25lbnRcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmFzeW5jUmVzb2x2ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyB2bm9kZSB9ID0gaW5zdGFuY2U7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHVzaFdhcm5pbmdDb250ZXh0KHZub2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGhhbmRsZVNldHVwUmVzdWx0KGluc3RhbmNlLCBhc3luY1NldHVwUmVzdWx0LCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaHlkcmF0ZWRFbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHZub2RlIG1heSBoYXZlIGJlZW4gcmVwbGFjZWQgaWYgYW4gdXBkYXRlIGhhcHBlbmVkIGJlZm9yZSB0aGVcclxuICAgICAgICAgICAgICAgICAgICAvLyBhc3luYyBkZXAgaXMgcmVzb2x2ZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgdm5vZGUuZWwgPSBoeWRyYXRlZEVsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSAhaHlkcmF0ZWRFbCAmJiBpbnN0YW5jZS5zdWJUcmVlLmVsO1xyXG4gICAgICAgICAgICAgICAgc2V0dXBSZW5kZXJFZmZlY3QoaW5zdGFuY2UsIHZub2RlLCBcclxuICAgICAgICAgICAgICAgIC8vIGNvbXBvbmVudCBtYXkgaGF2ZSBiZWVuIG1vdmVkIGJlZm9yZSByZXNvbHZlLlxyXG4gICAgICAgICAgICAgICAgLy8gaWYgdGhpcyBpcyBub3QgYSBoeWRyYXRpb24sIGluc3RhbmNlLnN1YlRyZWUgd2lsbCBiZSB0aGUgY29tbWVudFxyXG4gICAgICAgICAgICAgICAgLy8gcGxhY2Vob2xkZXIuXHJcbiAgICAgICAgICAgICAgICBwYXJlbnROb2RlKGh5ZHJhdGVkRWwgfHwgaW5zdGFuY2Uuc3ViVHJlZS5lbCksIFxyXG4gICAgICAgICAgICAgICAgLy8gYW5jaG9yIHdpbGwgbm90IGJlIHVzZWQgaWYgdGhpcyBpcyBoeWRyYXRpb24sIHNvIG9ubHkgbmVlZCB0b1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc2lkZXIgdGhlIGNvbW1lbnQgcGxhY2Vob2xkZXIgY2FzZS5cclxuICAgICAgICAgICAgICAgIGh5ZHJhdGVkRWwgPyBudWxsIDogbmV4dChpbnN0YW5jZS5zdWJUcmVlKSwgc3VzcGVuc2UsIGlzU1ZHLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHBsYWNlaG9sZGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKHBsYWNlaG9sZGVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHVwZGF0ZUhPQ0hvc3RFbChpbnN0YW5jZSwgdm5vZGUuZWwpO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcFdhcm5pbmdDb250ZXh0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBvbmx5IGRlY3JlYXNlIGRlcHMgY291bnQgaWYgc3VzcGVuc2UgaXMgbm90IGFscmVhZHkgcmVzb2x2ZWRcclxuICAgICAgICAgICAgICAgIGlmIChpc0luUGVuZGluZ1N1c3BlbnNlICYmIC0tc3VzcGVuc2UuZGVwcyA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN1c3BlbnNlLnJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB1bm1vdW50KHBhcmVudFN1c3BlbnNlLCBkb1JlbW92ZSkge1xyXG4gICAgICAgICAgICBzdXNwZW5zZS5pc1VubW91bnRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmIChzdXNwZW5zZS5hY3RpdmVCcmFuY2gpIHtcclxuICAgICAgICAgICAgICAgIHVubW91bnQoc3VzcGVuc2UuYWN0aXZlQnJhbmNoLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBkb1JlbW92ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHN1c3BlbnNlLnBlbmRpbmdCcmFuY2gpIHtcclxuICAgICAgICAgICAgICAgIHVubW91bnQoc3VzcGVuc2UucGVuZGluZ0JyYW5jaCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgZG9SZW1vdmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHJldHVybiBzdXNwZW5zZTtcclxufVxyXG5mdW5jdGlvbiBoeWRyYXRlU3VzcGVuc2Uobm9kZSwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgcmVuZGVyZXJJbnRlcm5hbHMsIGh5ZHJhdGVOb2RlKSB7XHJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgKi9cclxuICAgIGNvbnN0IHN1c3BlbnNlID0gKHZub2RlLnN1c3BlbnNlID0gY3JlYXRlU3VzcGVuc2VCb3VuZGFyeSh2bm9kZSwgcGFyZW50U3VzcGVuc2UsIHBhcmVudENvbXBvbmVudCwgbm9kZS5wYXJlbnROb2RlLCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgbnVsbCwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCByZW5kZXJlckludGVybmFscywgdHJ1ZSAvKiBoeWRyYXRpbmcgKi8pKTtcclxuICAgIC8vIHRoZXJlIGFyZSB0d28gcG9zc2libGUgc2NlbmFyaW9zIGZvciBzZXJ2ZXItcmVuZGVyZWQgc3VzcGVuc2U6XHJcbiAgICAvLyAtIHN1Y2Nlc3M6IHNzciBjb250ZW50IHNob3VsZCBiZSBmdWxseSByZXNvbHZlZFxyXG4gICAgLy8gLSBmYWlsdXJlOiBzc3IgY29udGVudCBzaG91bGQgYmUgdGhlIGZhbGxiYWNrIGJyYW5jaC5cclxuICAgIC8vIGhvd2V2ZXIsIG9uIHRoZSBjbGllbnQgd2UgZG9uJ3QgcmVhbGx5IGtub3cgaWYgaXQgaGFzIGZhaWxlZCBvciBub3RcclxuICAgIC8vIGF0dGVtcHQgdG8gaHlkcmF0ZSB0aGUgRE9NIGFzc3VtaW5nIGl0IGhhcyBzdWNjZWVkZWQsIGJ1dCB3ZSBzdGlsbFxyXG4gICAgLy8gbmVlZCB0byBjb25zdHJ1Y3QgYSBzdXNwZW5zZSBib3VuZGFyeSBmaXJzdFxyXG4gICAgY29uc3QgcmVzdWx0ID0gaHlkcmF0ZU5vZGUobm9kZSwgKHN1c3BlbnNlLnBlbmRpbmdCcmFuY2ggPSB2bm9kZS5zc0NvbnRlbnQpLCBwYXJlbnRDb21wb25lbnQsIHN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICBpZiAoc3VzcGVuc2UuZGVwcyA9PT0gMCkge1xyXG4gICAgICAgIHN1c3BlbnNlLnJlc29sdmUoKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAqL1xyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZVN1c3BlbnNlQ2hpbGRyZW4odm5vZGUpIHtcclxuICAgIGNvbnN0IHsgc2hhcGVGbGFnLCBjaGlsZHJlbiB9ID0gdm5vZGU7XHJcbiAgICBjb25zdCBpc1Nsb3RDaGlsZHJlbiA9IHNoYXBlRmxhZyAmIDMyIC8qIFNoYXBlRmxhZ3MuU0xPVFNfQ0hJTERSRU4gKi87XHJcbiAgICB2bm9kZS5zc0NvbnRlbnQgPSBub3JtYWxpemVTdXNwZW5zZVNsb3QoaXNTbG90Q2hpbGRyZW4gPyBjaGlsZHJlbi5kZWZhdWx0IDogY2hpbGRyZW4pO1xyXG4gICAgdm5vZGUuc3NGYWxsYmFjayA9IGlzU2xvdENoaWxkcmVuXHJcbiAgICAgICAgPyBub3JtYWxpemVTdXNwZW5zZVNsb3QoY2hpbGRyZW4uZmFsbGJhY2spXHJcbiAgICAgICAgOiBjcmVhdGVWTm9kZShDb21tZW50KTtcclxufVxyXG5mdW5jdGlvbiBub3JtYWxpemVTdXNwZW5zZVNsb3Qocykge1xyXG4gICAgbGV0IGJsb2NrO1xyXG4gICAgaWYgKGlzRnVuY3Rpb24ocykpIHtcclxuICAgICAgICBjb25zdCB0cmFja0Jsb2NrID0gaXNCbG9ja1RyZWVFbmFibGVkICYmIHMuX2M7XHJcbiAgICAgICAgaWYgKHRyYWNrQmxvY2spIHtcclxuICAgICAgICAgICAgLy8gZGlzYWJsZVRyYWNraW5nOiBmYWxzZVxyXG4gICAgICAgICAgICAvLyBhbGxvdyBibG9jayB0cmFja2luZyBmb3IgY29tcGlsZWQgc2xvdHNcclxuICAgICAgICAgICAgLy8gKHNlZSAuL2NvbXBvbmVudFJlbmRlckNvbnRleHQudHMpXHJcbiAgICAgICAgICAgIHMuX2QgPSBmYWxzZTtcclxuICAgICAgICAgICAgb3BlbkJsb2NrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHMgPSBzKCk7XHJcbiAgICAgICAgaWYgKHRyYWNrQmxvY2spIHtcclxuICAgICAgICAgICAgcy5fZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGJsb2NrID0gY3VycmVudEJsb2NrO1xyXG4gICAgICAgICAgICBjbG9zZUJsb2NrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGlzQXJyYXkocykpIHtcclxuICAgICAgICBjb25zdCBzaW5nbGVDaGlsZCA9IGZpbHRlclNpbmdsZVJvb3Qocyk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhc2luZ2xlQ2hpbGQpIHtcclxuICAgICAgICAgICAgd2FybihgPFN1c3BlbnNlPiBzbG90cyBleHBlY3QgYSBzaW5nbGUgcm9vdCBub2RlLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzID0gc2luZ2xlQ2hpbGQ7XHJcbiAgICB9XHJcbiAgICBzID0gbm9ybWFsaXplVk5vZGUocyk7XHJcbiAgICBpZiAoYmxvY2sgJiYgIXMuZHluYW1pY0NoaWxkcmVuKSB7XHJcbiAgICAgICAgcy5keW5hbWljQ2hpbGRyZW4gPSBibG9jay5maWx0ZXIoYyA9PiBjICE9PSBzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBzO1xyXG59XHJcbmZ1bmN0aW9uIHF1ZXVlRWZmZWN0V2l0aFN1c3BlbnNlKGZuLCBzdXNwZW5zZSkge1xyXG4gICAgaWYgKHN1c3BlbnNlICYmIHN1c3BlbnNlLnBlbmRpbmdCcmFuY2gpIHtcclxuICAgICAgICBpZiAoaXNBcnJheShmbikpIHtcclxuICAgICAgICAgICAgc3VzcGVuc2UuZWZmZWN0cy5wdXNoKC4uLmZuKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHN1c3BlbnNlLmVmZmVjdHMucHVzaChmbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcXVldWVQb3N0Rmx1c2hDYihmbik7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gc2V0QWN0aXZlQnJhbmNoKHN1c3BlbnNlLCBicmFuY2gpIHtcclxuICAgIHN1c3BlbnNlLmFjdGl2ZUJyYW5jaCA9IGJyYW5jaDtcclxuICAgIGNvbnN0IHsgdm5vZGUsIHBhcmVudENvbXBvbmVudCB9ID0gc3VzcGVuc2U7XHJcbiAgICBjb25zdCBlbCA9ICh2bm9kZS5lbCA9IGJyYW5jaC5lbCk7XHJcbiAgICAvLyBpbiBjYXNlIHN1c3BlbnNlIGlzIHRoZSByb290IG5vZGUgb2YgYSBjb21wb25lbnQsXHJcbiAgICAvLyByZWN1cnNpdmVseSB1cGRhdGUgdGhlIEhPQyBlbFxyXG4gICAgaWYgKHBhcmVudENvbXBvbmVudCAmJiBwYXJlbnRDb21wb25lbnQuc3ViVHJlZSA9PT0gdm5vZGUpIHtcclxuICAgICAgICBwYXJlbnRDb21wb25lbnQudm5vZGUuZWwgPSBlbDtcclxuICAgICAgICB1cGRhdGVIT0NIb3N0RWwocGFyZW50Q29tcG9uZW50LCBlbCk7XHJcbiAgICB9XHJcbn1cblxuZnVuY3Rpb24gcHJvdmlkZShrZXksIHZhbHVlKSB7XHJcbiAgICBpZiAoIWN1cnJlbnRJbnN0YW5jZSkge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgd2FybihgcHJvdmlkZSgpIGNhbiBvbmx5IGJlIHVzZWQgaW5zaWRlIHNldHVwKCkuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgbGV0IHByb3ZpZGVzID0gY3VycmVudEluc3RhbmNlLnByb3ZpZGVzO1xyXG4gICAgICAgIC8vIGJ5IGRlZmF1bHQgYW4gaW5zdGFuY2UgaW5oZXJpdHMgaXRzIHBhcmVudCdzIHByb3ZpZGVzIG9iamVjdFxyXG4gICAgICAgIC8vIGJ1dCB3aGVuIGl0IG5lZWRzIHRvIHByb3ZpZGUgdmFsdWVzIG9mIGl0cyBvd24sIGl0IGNyZWF0ZXMgaXRzXHJcbiAgICAgICAgLy8gb3duIHByb3ZpZGVzIG9iamVjdCB1c2luZyBwYXJlbnQgcHJvdmlkZXMgb2JqZWN0IGFzIHByb3RvdHlwZS5cclxuICAgICAgICAvLyB0aGlzIHdheSBpbiBgaW5qZWN0YCB3ZSBjYW4gc2ltcGx5IGxvb2sgdXAgaW5qZWN0aW9ucyBmcm9tIGRpcmVjdFxyXG4gICAgICAgIC8vIHBhcmVudCBhbmQgbGV0IHRoZSBwcm90b3R5cGUgY2hhaW4gZG8gdGhlIHdvcmsuXHJcbiAgICAgICAgY29uc3QgcGFyZW50UHJvdmlkZXMgPSBjdXJyZW50SW5zdGFuY2UucGFyZW50ICYmIGN1cnJlbnRJbnN0YW5jZS5wYXJlbnQucHJvdmlkZXM7XHJcbiAgICAgICAgaWYgKHBhcmVudFByb3ZpZGVzID09PSBwcm92aWRlcykge1xyXG4gICAgICAgICAgICBwcm92aWRlcyA9IGN1cnJlbnRJbnN0YW5jZS5wcm92aWRlcyA9IE9iamVjdC5jcmVhdGUocGFyZW50UHJvdmlkZXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBUUyBkb2Vzbid0IGFsbG93IHN5bWJvbCBhcyBpbmRleCB0eXBlXHJcbiAgICAgICAgcHJvdmlkZXNba2V5XSA9IHZhbHVlO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGluamVjdChrZXksIGRlZmF1bHRWYWx1ZSwgdHJlYXREZWZhdWx0QXNGYWN0b3J5ID0gZmFsc2UpIHtcclxuICAgIC8vIGZhbGxiYWNrIHRvIGBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2VgIHNvIHRoYXQgdGhpcyBjYW4gYmUgY2FsbGVkIGluXHJcbiAgICAvLyBhIGZ1bmN0aW9uYWwgY29tcG9uZW50XHJcbiAgICBjb25zdCBpbnN0YW5jZSA9IGN1cnJlbnRJbnN0YW5jZSB8fCBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2U7XHJcbiAgICBpZiAoaW5zdGFuY2UpIHtcclxuICAgICAgICAvLyAjMjQwMFxyXG4gICAgICAgIC8vIHRvIHN1cHBvcnQgYGFwcC51c2VgIHBsdWdpbnMsXHJcbiAgICAgICAgLy8gZmFsbGJhY2sgdG8gYXBwQ29udGV4dCdzIGBwcm92aWRlc2AgaWYgdGhlIGluc3RhbmNlIGlzIGF0IHJvb3RcclxuICAgICAgICBjb25zdCBwcm92aWRlcyA9IGluc3RhbmNlLnBhcmVudCA9PSBudWxsXHJcbiAgICAgICAgICAgID8gaW5zdGFuY2Uudm5vZGUuYXBwQ29udGV4dCAmJiBpbnN0YW5jZS52bm9kZS5hcHBDb250ZXh0LnByb3ZpZGVzXHJcbiAgICAgICAgICAgIDogaW5zdGFuY2UucGFyZW50LnByb3ZpZGVzO1xyXG4gICAgICAgIGlmIChwcm92aWRlcyAmJiBrZXkgaW4gcHJvdmlkZXMpIHtcclxuICAgICAgICAgICAgLy8gVFMgZG9lc24ndCBhbGxvdyBzeW1ib2wgYXMgaW5kZXggdHlwZVxyXG4gICAgICAgICAgICByZXR1cm4gcHJvdmlkZXNba2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRyZWF0RGVmYXVsdEFzRmFjdG9yeSAmJiBpc0Z1bmN0aW9uKGRlZmF1bHRWYWx1ZSlcclxuICAgICAgICAgICAgICAgID8gZGVmYXVsdFZhbHVlLmNhbGwoaW5zdGFuY2UucHJveHkpXHJcbiAgICAgICAgICAgICAgICA6IGRlZmF1bHRWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYGluamVjdGlvbiBcIiR7U3RyaW5nKGtleSl9XCIgbm90IGZvdW5kLmApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIHdhcm4oYGluamVjdCgpIGNhbiBvbmx5IGJlIHVzZWQgaW5zaWRlIHNldHVwKCkgb3IgZnVuY3Rpb25hbCBjb21wb25lbnRzLmApO1xyXG4gICAgfVxyXG59XG5cbi8vIFNpbXBsZSBlZmZlY3QuXHJcbmZ1bmN0aW9uIHdhdGNoRWZmZWN0KGVmZmVjdCwgb3B0aW9ucykge1xyXG4gICAgcmV0dXJuIGRvV2F0Y2goZWZmZWN0LCBudWxsLCBvcHRpb25zKTtcclxufVxyXG5mdW5jdGlvbiB3YXRjaFBvc3RFZmZlY3QoZWZmZWN0LCBvcHRpb25zKSB7XHJcbiAgICByZXR1cm4gZG9XYXRjaChlZmZlY3QsIG51bGwsICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICA/IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucyksIHsgZmx1c2g6ICdwb3N0JyB9KSA6IHsgZmx1c2g6ICdwb3N0JyB9KSk7XHJcbn1cclxuZnVuY3Rpb24gd2F0Y2hTeW5jRWZmZWN0KGVmZmVjdCwgb3B0aW9ucykge1xyXG4gICAgcmV0dXJuIGRvV2F0Y2goZWZmZWN0LCBudWxsLCAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgPyBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMpLCB7IGZsdXNoOiAnc3luYycgfSkgOiB7IGZsdXNoOiAnc3luYycgfSkpO1xyXG59XHJcbi8vIGluaXRpYWwgdmFsdWUgZm9yIHdhdGNoZXJzIHRvIHRyaWdnZXIgb24gdW5kZWZpbmVkIGluaXRpYWwgdmFsdWVzXHJcbmNvbnN0IElOSVRJQUxfV0FUQ0hFUl9WQUxVRSA9IHt9O1xyXG4vLyBpbXBsZW1lbnRhdGlvblxyXG5mdW5jdGlvbiB3YXRjaChzb3VyY2UsIGNiLCBvcHRpb25zKSB7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpc0Z1bmN0aW9uKGNiKSkge1xyXG4gICAgICAgIHdhcm4oYFxcYHdhdGNoKGZuLCBvcHRpb25zPylcXGAgc2lnbmF0dXJlIGhhcyBiZWVuIG1vdmVkIHRvIGEgc2VwYXJhdGUgQVBJLiBgICtcclxuICAgICAgICAgICAgYFVzZSBcXGB3YXRjaEVmZmVjdChmbiwgb3B0aW9ucz8pXFxgIGluc3RlYWQuIFxcYHdhdGNoXFxgIG5vdyBvbmx5IGAgK1xyXG4gICAgICAgICAgICBgc3VwcG9ydHMgXFxgd2F0Y2goc291cmNlLCBjYiwgb3B0aW9ucz8pIHNpZ25hdHVyZS5gKTtcclxuICAgIH1cclxuICAgIHJldHVybiBkb1dhdGNoKHNvdXJjZSwgY2IsIG9wdGlvbnMpO1xyXG59XHJcbmZ1bmN0aW9uIGRvV2F0Y2goc291cmNlLCBjYiwgeyBpbW1lZGlhdGUsIGRlZXAsIGZsdXNoLCBvblRyYWNrLCBvblRyaWdnZXIgfSA9IEVNUFRZX09CSikge1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhY2IpIHtcclxuICAgICAgICBpZiAoaW1tZWRpYXRlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgd2Fybihgd2F0Y2goKSBcImltbWVkaWF0ZVwiIG9wdGlvbiBpcyBvbmx5IHJlc3BlY3RlZCB3aGVuIHVzaW5nIHRoZSBgICtcclxuICAgICAgICAgICAgICAgIGB3YXRjaChzb3VyY2UsIGNhbGxiYWNrLCBvcHRpb25zPykgc2lnbmF0dXJlLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGVlcCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYHdhdGNoKCkgXCJkZWVwXCIgb3B0aW9uIGlzIG9ubHkgcmVzcGVjdGVkIHdoZW4gdXNpbmcgdGhlIGAgK1xyXG4gICAgICAgICAgICAgICAgYHdhdGNoKHNvdXJjZSwgY2FsbGJhY2ssIG9wdGlvbnM/KSBzaWduYXR1cmUuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3Qgd2FybkludmFsaWRTb3VyY2UgPSAocykgPT4ge1xyXG4gICAgICAgIHdhcm4oYEludmFsaWQgd2F0Y2ggc291cmNlOiBgLCBzLCBgQSB3YXRjaCBzb3VyY2UgY2FuIG9ubHkgYmUgYSBnZXR0ZXIvZWZmZWN0IGZ1bmN0aW9uLCBhIHJlZiwgYCArXHJcbiAgICAgICAgICAgIGBhIHJlYWN0aXZlIG9iamVjdCwgb3IgYW4gYXJyYXkgb2YgdGhlc2UgdHlwZXMuYCk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgaW5zdGFuY2UgPSBjdXJyZW50SW5zdGFuY2U7XHJcbiAgICBsZXQgZ2V0dGVyO1xyXG4gICAgbGV0IGZvcmNlVHJpZ2dlciA9IGZhbHNlO1xyXG4gICAgbGV0IGlzTXVsdGlTb3VyY2UgPSBmYWxzZTtcclxuICAgIGlmIChpc1JlZihzb3VyY2UpKSB7XHJcbiAgICAgICAgZ2V0dGVyID0gKCkgPT4gc291cmNlLnZhbHVlO1xyXG4gICAgICAgIGZvcmNlVHJpZ2dlciA9IGlzU2hhbGxvdyQxKHNvdXJjZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc1JlYWN0aXZlKHNvdXJjZSkpIHtcclxuICAgICAgICBnZXR0ZXIgPSAoKSA9PiBzb3VyY2U7XHJcbiAgICAgICAgZGVlcCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0FycmF5KHNvdXJjZSkpIHtcclxuICAgICAgICBpc011bHRpU291cmNlID0gdHJ1ZTtcclxuICAgICAgICBmb3JjZVRyaWdnZXIgPSBzb3VyY2Uuc29tZShzID0+IGlzUmVhY3RpdmUocykgfHwgaXNTaGFsbG93JDEocykpO1xyXG4gICAgICAgIGdldHRlciA9ICgpID0+IHNvdXJjZS5tYXAocyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpc1JlZihzKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHMudmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaXNSZWFjdGl2ZShzKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNlKHMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzRnVuY3Rpb24ocykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYWxsV2l0aEVycm9ySGFuZGxpbmcocywgaW5zdGFuY2UsIDIgLyogRXJyb3JDb2Rlcy5XQVRDSF9HRVRURVIgKi8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHdhcm5JbnZhbGlkU291cmNlKHMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKHNvdXJjZSkpIHtcclxuICAgICAgICBpZiAoY2IpIHtcclxuICAgICAgICAgICAgLy8gZ2V0dGVyIHdpdGggY2JcclxuICAgICAgICAgICAgZ2V0dGVyID0gKCkgPT4gY2FsbFdpdGhFcnJvckhhbmRsaW5nKHNvdXJjZSwgaW5zdGFuY2UsIDIgLyogRXJyb3JDb2Rlcy5XQVRDSF9HRVRURVIgKi8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gbm8gY2IgLT4gc2ltcGxlIGVmZmVjdFxyXG4gICAgICAgICAgICBnZXR0ZXIgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2UgJiYgaW5zdGFuY2UuaXNVbm1vdW50ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoY2xlYW51cCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFudXAoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhzb3VyY2UsIGluc3RhbmNlLCAzIC8qIEVycm9yQ29kZXMuV0FUQ0hfQ0FMTEJBQ0sgKi8sIFtvbkNsZWFudXBdKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBnZXR0ZXIgPSBOT09QO1xyXG4gICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB3YXJuSW52YWxpZFNvdXJjZShzb3VyY2UpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNiICYmIGRlZXApIHtcclxuICAgICAgICBjb25zdCBiYXNlR2V0dGVyID0gZ2V0dGVyO1xyXG4gICAgICAgIGdldHRlciA9ICgpID0+IHRyYXZlcnNlKGJhc2VHZXR0ZXIoKSk7XHJcbiAgICB9XHJcbiAgICBsZXQgY2xlYW51cDtcclxuICAgIGxldCBvbkNsZWFudXAgPSAoZm4pID0+IHtcclxuICAgICAgICBjbGVhbnVwID0gZWZmZWN0Lm9uU3RvcCA9ICgpID0+IHtcclxuICAgICAgICAgICAgY2FsbFdpdGhFcnJvckhhbmRsaW5nKGZuLCBpbnN0YW5jZSwgNCAvKiBFcnJvckNvZGVzLldBVENIX0NMRUFOVVAgKi8pO1xyXG4gICAgICAgIH07XHJcbiAgICB9O1xyXG4gICAgLy8gaW4gU1NSIHRoZXJlIGlzIG5vIG5lZWQgdG8gc2V0dXAgYW4gYWN0dWFsIGVmZmVjdCwgYW5kIGl0IHNob3VsZCBiZSBub29wXHJcbiAgICAvLyB1bmxlc3MgaXQncyBlYWdlclxyXG4gICAgaWYgKGlzSW5TU1JDb21wb25lbnRTZXR1cCkge1xyXG4gICAgICAgIC8vIHdlIHdpbGwgYWxzbyBub3QgY2FsbCB0aGUgaW52YWxpZGF0ZSBjYWxsYmFjayAoKyBydW5uZXIgaXMgbm90IHNldCB1cClcclxuICAgICAgICBvbkNsZWFudXAgPSBOT09QO1xyXG4gICAgICAgIGlmICghY2IpIHtcclxuICAgICAgICAgICAgZ2V0dGVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGltbWVkaWF0ZSkge1xyXG4gICAgICAgICAgICBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhjYiwgaW5zdGFuY2UsIDMgLyogRXJyb3JDb2Rlcy5XQVRDSF9DQUxMQkFDSyAqLywgW1xyXG4gICAgICAgICAgICAgICAgZ2V0dGVyKCksXHJcbiAgICAgICAgICAgICAgICBpc011bHRpU291cmNlID8gW10gOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICBvbkNsZWFudXBcclxuICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBOT09QO1xyXG4gICAgfVxyXG4gICAgbGV0IG9sZFZhbHVlID0gaXNNdWx0aVNvdXJjZSA/IFtdIDogSU5JVElBTF9XQVRDSEVSX1ZBTFVFO1xyXG4gICAgY29uc3Qgam9iID0gKCkgPT4ge1xyXG4gICAgICAgIGlmICghZWZmZWN0LmFjdGl2ZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjYikge1xyXG4gICAgICAgICAgICAvLyB3YXRjaChzb3VyY2UsIGNiKVxyXG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGVmZmVjdC5ydW4oKTtcclxuICAgICAgICAgICAgaWYgKGRlZXAgfHxcclxuICAgICAgICAgICAgICAgIGZvcmNlVHJpZ2dlciB8fFxyXG4gICAgICAgICAgICAgICAgKGlzTXVsdGlTb3VyY2VcclxuICAgICAgICAgICAgICAgICAgICA/IG5ld1ZhbHVlLnNvbWUoKHYsIGkpID0+IGhhc0NoYW5nZWQodiwgb2xkVmFsdWVbaV0pKVxyXG4gICAgICAgICAgICAgICAgICAgIDogaGFzQ2hhbmdlZChuZXdWYWx1ZSwgb2xkVmFsdWUpKSB8fFxyXG4gICAgICAgICAgICAgICAgKGZhbHNlICApKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjbGVhbnVwIGJlZm9yZSBydW5uaW5nIGNiIGFnYWluXHJcbiAgICAgICAgICAgICAgICBpZiAoY2xlYW51cCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFudXAoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGNiLCBpbnN0YW5jZSwgMyAvKiBFcnJvckNvZGVzLldBVENIX0NBTExCQUNLICovLCBbXHJcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcGFzcyB1bmRlZmluZWQgYXMgdGhlIG9sZCB2YWx1ZSB3aGVuIGl0J3MgY2hhbmdlZCBmb3IgdGhlIGZpcnN0IHRpbWVcclxuICAgICAgICAgICAgICAgICAgICBvbGRWYWx1ZSA9PT0gSU5JVElBTF9XQVRDSEVSX1ZBTFVFID8gdW5kZWZpbmVkIDogb2xkVmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGVhbnVwXHJcbiAgICAgICAgICAgICAgICBdKTtcclxuICAgICAgICAgICAgICAgIG9sZFZhbHVlID0gbmV3VmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHdhdGNoRWZmZWN0XHJcbiAgICAgICAgICAgIGVmZmVjdC5ydW4oKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgLy8gaW1wb3J0YW50OiBtYXJrIHRoZSBqb2IgYXMgYSB3YXRjaGVyIGNhbGxiYWNrIHNvIHRoYXQgc2NoZWR1bGVyIGtub3dzXHJcbiAgICAvLyBpdCBpcyBhbGxvd2VkIHRvIHNlbGYtdHJpZ2dlciAoIzE3MjcpXHJcbiAgICBqb2IuYWxsb3dSZWN1cnNlID0gISFjYjtcclxuICAgIGxldCBzY2hlZHVsZXI7XHJcbiAgICBpZiAoZmx1c2ggPT09ICdzeW5jJykge1xyXG4gICAgICAgIHNjaGVkdWxlciA9IGpvYjsgLy8gdGhlIHNjaGVkdWxlciBmdW5jdGlvbiBnZXRzIGNhbGxlZCBkaXJlY3RseVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZmx1c2ggPT09ICdwb3N0Jykge1xyXG4gICAgICAgIHNjaGVkdWxlciA9ICgpID0+IHF1ZXVlUG9zdFJlbmRlckVmZmVjdChqb2IsIGluc3RhbmNlICYmIGluc3RhbmNlLnN1c3BlbnNlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIGRlZmF1bHQ6ICdwcmUnXHJcbiAgICAgICAgam9iLnByZSA9IHRydWU7XHJcbiAgICAgICAgaWYgKGluc3RhbmNlKVxyXG4gICAgICAgICAgICBqb2IuaWQgPSBpbnN0YW5jZS51aWQ7XHJcbiAgICAgICAgc2NoZWR1bGVyID0gKCkgPT4gcXVldWVKb2Ioam9iKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGVmZmVjdCA9IG5ldyBSZWFjdGl2ZUVmZmVjdChnZXR0ZXIsIHNjaGVkdWxlcik7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgZWZmZWN0Lm9uVHJhY2sgPSBvblRyYWNrO1xyXG4gICAgICAgIGVmZmVjdC5vblRyaWdnZXIgPSBvblRyaWdnZXI7XHJcbiAgICB9XHJcbiAgICAvLyBpbml0aWFsIHJ1blxyXG4gICAgaWYgKGNiKSB7XHJcbiAgICAgICAgaWYgKGltbWVkaWF0ZSkge1xyXG4gICAgICAgICAgICBqb2IoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG9sZFZhbHVlID0gZWZmZWN0LnJ1bigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGZsdXNoID09PSAncG9zdCcpIHtcclxuICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoZWZmZWN0LnJ1bi5iaW5kKGVmZmVjdCksIGluc3RhbmNlICYmIGluc3RhbmNlLnN1c3BlbnNlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGVmZmVjdC5ydW4oKTtcclxuICAgIH1cclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgZWZmZWN0LnN0b3AoKTtcclxuICAgICAgICBpZiAoaW5zdGFuY2UgJiYgaW5zdGFuY2Uuc2NvcGUpIHtcclxuICAgICAgICAgICAgcmVtb3ZlKGluc3RhbmNlLnNjb3BlLmVmZmVjdHMsIGVmZmVjdCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxyXG4vLyB0aGlzLiR3YXRjaFxyXG5mdW5jdGlvbiBpbnN0YW5jZVdhdGNoKHNvdXJjZSwgdmFsdWUsIG9wdGlvbnMpIHtcclxuICAgIGNvbnN0IHB1YmxpY1RoaXMgPSB0aGlzLnByb3h5O1xyXG4gICAgY29uc3QgZ2V0dGVyID0gaXNTdHJpbmcoc291cmNlKVxyXG4gICAgICAgID8gc291cmNlLmluY2x1ZGVzKCcuJylcclxuICAgICAgICAgICAgPyBjcmVhdGVQYXRoR2V0dGVyKHB1YmxpY1RoaXMsIHNvdXJjZSlcclxuICAgICAgICAgICAgOiAoKSA9PiBwdWJsaWNUaGlzW3NvdXJjZV1cclxuICAgICAgICA6IHNvdXJjZS5iaW5kKHB1YmxpY1RoaXMsIHB1YmxpY1RoaXMpO1xyXG4gICAgbGV0IGNiO1xyXG4gICAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XHJcbiAgICAgICAgY2IgPSB2YWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNiID0gdmFsdWUuaGFuZGxlcjtcclxuICAgICAgICBvcHRpb25zID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjdXIgPSBjdXJyZW50SW5zdGFuY2U7XHJcbiAgICBzZXRDdXJyZW50SW5zdGFuY2UodGhpcyk7XHJcbiAgICBjb25zdCByZXMgPSBkb1dhdGNoKGdldHRlciwgY2IuYmluZChwdWJsaWNUaGlzKSwgb3B0aW9ucyk7XHJcbiAgICBpZiAoY3VyKSB7XHJcbiAgICAgICAgc2V0Q3VycmVudEluc3RhbmNlKGN1cik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICB1bnNldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVQYXRoR2V0dGVyKGN0eCwgcGF0aCkge1xyXG4gICAgY29uc3Qgc2VnbWVudHMgPSBwYXRoLnNwbGl0KCcuJyk7XHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgIGxldCBjdXIgPSBjdHg7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWdtZW50cy5sZW5ndGggJiYgY3VyOyBpKyspIHtcclxuICAgICAgICAgICAgY3VyID0gY3VyW3NlZ21lbnRzW2ldXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGN1cjtcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gdHJhdmVyc2UodmFsdWUsIHNlZW4pIHtcclxuICAgIGlmICghaXNPYmplY3QodmFsdWUpIHx8IHZhbHVlW1wiX192X3NraXBcIiAvKiBSZWFjdGl2ZUZsYWdzLlNLSVAgKi9dKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gICAgc2VlbiA9IHNlZW4gfHwgbmV3IFNldCgpO1xyXG4gICAgaWYgKHNlZW4uaGFzKHZhbHVlKSkge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIHNlZW4uYWRkKHZhbHVlKTtcclxuICAgIGlmIChpc1JlZih2YWx1ZSkpIHtcclxuICAgICAgICB0cmF2ZXJzZSh2YWx1ZS52YWx1ZSwgc2Vlbik7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdHJhdmVyc2UodmFsdWVbaV0sIHNlZW4pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzU2V0KHZhbHVlKSB8fCBpc01hcCh2YWx1ZSkpIHtcclxuICAgICAgICB2YWx1ZS5mb3JFYWNoKCh2KSA9PiB7XHJcbiAgICAgICAgICAgIHRyYXZlcnNlKHYsIHNlZW4pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB2YWx1ZSkge1xyXG4gICAgICAgICAgICB0cmF2ZXJzZSh2YWx1ZVtrZXldLCBzZWVuKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbn1cblxuZnVuY3Rpb24gdXNlVHJhbnNpdGlvblN0YXRlKCkge1xyXG4gICAgY29uc3Qgc3RhdGUgPSB7XHJcbiAgICAgICAgaXNNb3VudGVkOiBmYWxzZSxcclxuICAgICAgICBpc0xlYXZpbmc6IGZhbHNlLFxyXG4gICAgICAgIGlzVW5tb3VudGluZzogZmFsc2UsXHJcbiAgICAgICAgbGVhdmluZ1ZOb2RlczogbmV3IE1hcCgpXHJcbiAgICB9O1xyXG4gICAgb25Nb3VudGVkKCgpID0+IHtcclxuICAgICAgICBzdGF0ZS5pc01vdW50ZWQgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgICBvbkJlZm9yZVVubW91bnQoKCkgPT4ge1xyXG4gICAgICAgIHN0YXRlLmlzVW5tb3VudGluZyA9IHRydWU7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBzdGF0ZTtcclxufVxyXG5jb25zdCBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvciA9IFtGdW5jdGlvbiwgQXJyYXldO1xyXG5jb25zdCBCYXNlVHJhbnNpdGlvbkltcGwgPSB7XHJcbiAgICBuYW1lOiBgQmFzZVRyYW5zaXRpb25gLFxyXG4gICAgcHJvcHM6IHtcclxuICAgICAgICBtb2RlOiBTdHJpbmcsXHJcbiAgICAgICAgYXBwZWFyOiBCb29sZWFuLFxyXG4gICAgICAgIHBlcnNpc3RlZDogQm9vbGVhbixcclxuICAgICAgICAvLyBlbnRlclxyXG4gICAgICAgIG9uQmVmb3JlRW50ZXI6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxyXG4gICAgICAgIG9uRW50ZXI6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxyXG4gICAgICAgIG9uQWZ0ZXJFbnRlcjogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXHJcbiAgICAgICAgb25FbnRlckNhbmNlbGxlZDogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXHJcbiAgICAgICAgLy8gbGVhdmVcclxuICAgICAgICBvbkJlZm9yZUxlYXZlOiBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvcixcclxuICAgICAgICBvbkxlYXZlOiBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvcixcclxuICAgICAgICBvbkFmdGVyTGVhdmU6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxyXG4gICAgICAgIG9uTGVhdmVDYW5jZWxsZWQ6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxyXG4gICAgICAgIC8vIGFwcGVhclxyXG4gICAgICAgIG9uQmVmb3JlQXBwZWFyOiBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvcixcclxuICAgICAgICBvbkFwcGVhcjogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXHJcbiAgICAgICAgb25BZnRlckFwcGVhcjogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXHJcbiAgICAgICAgb25BcHBlYXJDYW5jZWxsZWQ6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yXHJcbiAgICB9LFxyXG4gICAgc2V0dXAocHJvcHMsIHsgc2xvdHMgfSkge1xyXG4gICAgICAgIGNvbnN0IGluc3RhbmNlID0gZ2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB1c2VUcmFuc2l0aW9uU3RhdGUoKTtcclxuICAgICAgICBsZXQgcHJldlRyYW5zaXRpb25LZXk7XHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBzbG90cy5kZWZhdWx0ICYmIGdldFRyYW5zaXRpb25SYXdDaGlsZHJlbihzbG90cy5kZWZhdWx0KCksIHRydWUpO1xyXG4gICAgICAgICAgICBpZiAoIWNoaWxkcmVuIHx8ICFjaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgY2hpbGQgPSBjaGlsZHJlblswXTtcclxuICAgICAgICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgIGxldCBoYXNGb3VuZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgLy8gbG9jYXRlIGZpcnN0IG5vbi1jb21tZW50IGNoaWxkXHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGMgb2YgY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYy50eXBlICE9PSBDb21tZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaGFzRm91bmQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdhcm4gbW9yZSB0aGFuIG9uZSBub24tY29tbWVudCBjaGlsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybignPHRyYW5zaXRpb24+IGNhbiBvbmx5IGJlIHVzZWQgb24gYSBzaW5nbGUgZWxlbWVudCBvciBjb21wb25lbnQuICcgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVc2UgPHRyYW5zaXRpb24tZ3JvdXA+IGZvciBsaXN0cy4nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkID0gYztcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzRm91bmQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyB0aGVyZSdzIG5vIG5lZWQgdG8gdHJhY2sgcmVhY3Rpdml0eSBmb3IgdGhlc2UgcHJvcHMgc28gdXNlIHRoZSByYXdcclxuICAgICAgICAgICAgLy8gcHJvcHMgZm9yIGEgYml0IGJldHRlciBwZXJmXHJcbiAgICAgICAgICAgIGNvbnN0IHJhd1Byb3BzID0gdG9SYXcocHJvcHMpO1xyXG4gICAgICAgICAgICBjb25zdCB7IG1vZGUgfSA9IHJhd1Byb3BzO1xyXG4gICAgICAgICAgICAvLyBjaGVjayBtb2RlXHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgIG1vZGUgJiZcclxuICAgICAgICAgICAgICAgIG1vZGUgIT09ICdpbi1vdXQnICYmXHJcbiAgICAgICAgICAgICAgICBtb2RlICE9PSAnb3V0LWluJyAmJlxyXG4gICAgICAgICAgICAgICAgbW9kZSAhPT0gJ2RlZmF1bHQnKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBpbnZhbGlkIDx0cmFuc2l0aW9uPiBtb2RlOiAke21vZGV9YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHN0YXRlLmlzTGVhdmluZykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5UGxhY2Vob2xkZXIoY2hpbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGluIHRoZSBjYXNlIG9mIDx0cmFuc2l0aW9uPjxrZWVwLWFsaXZlLz48L3RyYW5zaXRpb24+LCB3ZSBuZWVkIHRvXHJcbiAgICAgICAgICAgIC8vIGNvbXBhcmUgdGhlIHR5cGUgb2YgdGhlIGtlcHQtYWxpdmUgY2hpbGRyZW4uXHJcbiAgICAgICAgICAgIGNvbnN0IGlubmVyQ2hpbGQgPSBnZXRLZWVwQWxpdmVDaGlsZChjaGlsZCk7XHJcbiAgICAgICAgICAgIGlmICghaW5uZXJDaGlsZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5UGxhY2Vob2xkZXIoY2hpbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGVudGVySG9va3MgPSByZXNvbHZlVHJhbnNpdGlvbkhvb2tzKGlubmVyQ2hpbGQsIHJhd1Byb3BzLCBzdGF0ZSwgaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICBzZXRUcmFuc2l0aW9uSG9va3MoaW5uZXJDaGlsZCwgZW50ZXJIb29rcyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG9sZENoaWxkID0gaW5zdGFuY2Uuc3ViVHJlZTtcclxuICAgICAgICAgICAgY29uc3Qgb2xkSW5uZXJDaGlsZCA9IG9sZENoaWxkICYmIGdldEtlZXBBbGl2ZUNoaWxkKG9sZENoaWxkKTtcclxuICAgICAgICAgICAgbGV0IHRyYW5zaXRpb25LZXlDaGFuZ2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgZ2V0VHJhbnNpdGlvbktleSB9ID0gaW5uZXJDaGlsZC50eXBlO1xyXG4gICAgICAgICAgICBpZiAoZ2V0VHJhbnNpdGlvbktleSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gZ2V0VHJhbnNpdGlvbktleSgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHByZXZUcmFuc2l0aW9uS2V5ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBwcmV2VHJhbnNpdGlvbktleSA9IGtleTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtleSAhPT0gcHJldlRyYW5zaXRpb25LZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICBwcmV2VHJhbnNpdGlvbktleSA9IGtleTtcclxuICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uS2V5Q2hhbmdlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gaGFuZGxlIG1vZGVcclxuICAgICAgICAgICAgaWYgKG9sZElubmVyQ2hpbGQgJiZcclxuICAgICAgICAgICAgICAgIG9sZElubmVyQ2hpbGQudHlwZSAhPT0gQ29tbWVudCAmJlxyXG4gICAgICAgICAgICAgICAgKCFpc1NhbWVWTm9kZVR5cGUoaW5uZXJDaGlsZCwgb2xkSW5uZXJDaGlsZCkgfHwgdHJhbnNpdGlvbktleUNoYW5nZWQpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZWF2aW5nSG9va3MgPSByZXNvbHZlVHJhbnNpdGlvbkhvb2tzKG9sZElubmVyQ2hpbGQsIHJhd1Byb3BzLCBzdGF0ZSwgaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlIG9sZCB0cmVlJ3MgaG9va3MgaW4gY2FzZSBvZiBkeW5hbWljIHRyYW5zaXRpb25cclxuICAgICAgICAgICAgICAgIHNldFRyYW5zaXRpb25Ib29rcyhvbGRJbm5lckNoaWxkLCBsZWF2aW5nSG9va3MpO1xyXG4gICAgICAgICAgICAgICAgLy8gc3dpdGNoaW5nIGJldHdlZW4gZGlmZmVyZW50IHZpZXdzXHJcbiAgICAgICAgICAgICAgICBpZiAobW9kZSA9PT0gJ291dC1pbicpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5pc0xlYXZpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHJldHVybiBwbGFjZWhvbGRlciBub2RlIGFuZCBxdWV1ZSB1cGRhdGUgd2hlbiBsZWF2ZSBmaW5pc2hlc1xyXG4gICAgICAgICAgICAgICAgICAgIGxlYXZpbmdIb29rcy5hZnRlckxlYXZlID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5pc0xlYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UudXBkYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHlQbGFjZWhvbGRlcihjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtb2RlID09PSAnaW4tb3V0JyAmJiBpbm5lckNoaWxkLnR5cGUgIT09IENvbW1lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZWF2aW5nSG9va3MuZGVsYXlMZWF2ZSA9IChlbCwgZWFybHlSZW1vdmUsIGRlbGF5ZWRMZWF2ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWF2aW5nVk5vZGVzQ2FjaGUgPSBnZXRMZWF2aW5nTm9kZXNGb3JUeXBlKHN0YXRlLCBvbGRJbm5lckNoaWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGVhdmluZ1ZOb2Rlc0NhY2hlW1N0cmluZyhvbGRJbm5lckNoaWxkLmtleSldID0gb2xkSW5uZXJDaGlsZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWFybHkgcmVtb3ZhbCBjYWxsYmFja1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbC5fbGVhdmVDYiA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhcmx5UmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbC5fbGVhdmVDYiA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBlbnRlckhvb2tzLmRlbGF5ZWRMZWF2ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW50ZXJIb29rcy5kZWxheWVkTGVhdmUgPSBkZWxheWVkTGVhdmU7XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gY2hpbGQ7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufTtcclxuLy8gZXhwb3J0IHRoZSBwdWJsaWMgdHlwZSBmb3IgaC90c3ggaW5mZXJlbmNlXHJcbi8vIGFsc28gdG8gYXZvaWQgaW5saW5lIGltcG9ydCgpIGluIGdlbmVyYXRlZCBkLnRzIGZpbGVzXHJcbmNvbnN0IEJhc2VUcmFuc2l0aW9uID0gQmFzZVRyYW5zaXRpb25JbXBsO1xyXG5mdW5jdGlvbiBnZXRMZWF2aW5nTm9kZXNGb3JUeXBlKHN0YXRlLCB2bm9kZSkge1xyXG4gICAgY29uc3QgeyBsZWF2aW5nVk5vZGVzIH0gPSBzdGF0ZTtcclxuICAgIGxldCBsZWF2aW5nVk5vZGVzQ2FjaGUgPSBsZWF2aW5nVk5vZGVzLmdldCh2bm9kZS50eXBlKTtcclxuICAgIGlmICghbGVhdmluZ1ZOb2Rlc0NhY2hlKSB7XHJcbiAgICAgICAgbGVhdmluZ1ZOb2Rlc0NhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICAgICAgICBsZWF2aW5nVk5vZGVzLnNldCh2bm9kZS50eXBlLCBsZWF2aW5nVk5vZGVzQ2FjaGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxlYXZpbmdWTm9kZXNDYWNoZTtcclxufVxyXG4vLyBUaGUgdHJhbnNpdGlvbiBob29rcyBhcmUgYXR0YWNoZWQgdG8gdGhlIHZub2RlIGFzIHZub2RlLnRyYW5zaXRpb25cclxuLy8gYW5kIHdpbGwgYmUgY2FsbGVkIGF0IGFwcHJvcHJpYXRlIHRpbWluZyBpbiB0aGUgcmVuZGVyZXIuXHJcbmZ1bmN0aW9uIHJlc29sdmVUcmFuc2l0aW9uSG9va3Modm5vZGUsIHByb3BzLCBzdGF0ZSwgaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IHsgYXBwZWFyLCBtb2RlLCBwZXJzaXN0ZWQgPSBmYWxzZSwgb25CZWZvcmVFbnRlciwgb25FbnRlciwgb25BZnRlckVudGVyLCBvbkVudGVyQ2FuY2VsbGVkLCBvbkJlZm9yZUxlYXZlLCBvbkxlYXZlLCBvbkFmdGVyTGVhdmUsIG9uTGVhdmVDYW5jZWxsZWQsIG9uQmVmb3JlQXBwZWFyLCBvbkFwcGVhciwgb25BZnRlckFwcGVhciwgb25BcHBlYXJDYW5jZWxsZWQgfSA9IHByb3BzO1xyXG4gICAgY29uc3Qga2V5ID0gU3RyaW5nKHZub2RlLmtleSk7XHJcbiAgICBjb25zdCBsZWF2aW5nVk5vZGVzQ2FjaGUgPSBnZXRMZWF2aW5nTm9kZXNGb3JUeXBlKHN0YXRlLCB2bm9kZSk7XHJcbiAgICBjb25zdCBjYWxsSG9vayA9IChob29rLCBhcmdzKSA9PiB7XHJcbiAgICAgICAgaG9vayAmJlxyXG4gICAgICAgICAgICBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhob29rLCBpbnN0YW5jZSwgOSAvKiBFcnJvckNvZGVzLlRSQU5TSVRJT05fSE9PSyAqLywgYXJncyk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgY2FsbEFzeW5jSG9vayA9IChob29rLCBhcmdzKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZG9uZSA9IGFyZ3NbMV07XHJcbiAgICAgICAgY2FsbEhvb2soaG9vaywgYXJncyk7XHJcbiAgICAgICAgaWYgKGlzQXJyYXkoaG9vaykpIHtcclxuICAgICAgICAgICAgaWYgKGhvb2suZXZlcnkoaG9vayA9PiBob29rLmxlbmd0aCA8PSAxKSlcclxuICAgICAgICAgICAgICAgIGRvbmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaG9vay5sZW5ndGggPD0gMSkge1xyXG4gICAgICAgICAgICBkb25lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IGhvb2tzID0ge1xyXG4gICAgICAgIG1vZGUsXHJcbiAgICAgICAgcGVyc2lzdGVkLFxyXG4gICAgICAgIGJlZm9yZUVudGVyKGVsKSB7XHJcbiAgICAgICAgICAgIGxldCBob29rID0gb25CZWZvcmVFbnRlcjtcclxuICAgICAgICAgICAgaWYgKCFzdGF0ZS5pc01vdW50ZWQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChhcHBlYXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBob29rID0gb25CZWZvcmVBcHBlYXIgfHwgb25CZWZvcmVFbnRlcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBmb3Igc2FtZSBlbGVtZW50ICh2LXNob3cpXHJcbiAgICAgICAgICAgIGlmIChlbC5fbGVhdmVDYikge1xyXG4gICAgICAgICAgICAgICAgZWwuX2xlYXZlQ2IodHJ1ZSAvKiBjYW5jZWxsZWQgKi8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGZvciB0b2dnbGVkIGVsZW1lbnQgd2l0aCBzYW1lIGtleSAodi1pZilcclxuICAgICAgICAgICAgY29uc3QgbGVhdmluZ1ZOb2RlID0gbGVhdmluZ1ZOb2Rlc0NhY2hlW2tleV07XHJcbiAgICAgICAgICAgIGlmIChsZWF2aW5nVk5vZGUgJiZcclxuICAgICAgICAgICAgICAgIGlzU2FtZVZOb2RlVHlwZSh2bm9kZSwgbGVhdmluZ1ZOb2RlKSAmJlxyXG4gICAgICAgICAgICAgICAgbGVhdmluZ1ZOb2RlLmVsLl9sZWF2ZUNiKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBmb3JjZSBlYXJseSByZW1vdmFsIChub3QgY2FuY2VsbGVkKVxyXG4gICAgICAgICAgICAgICAgbGVhdmluZ1ZOb2RlLmVsLl9sZWF2ZUNiKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FsbEhvb2soaG9vaywgW2VsXSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlbnRlcihlbCkge1xyXG4gICAgICAgICAgICBsZXQgaG9vayA9IG9uRW50ZXI7XHJcbiAgICAgICAgICAgIGxldCBhZnRlckhvb2sgPSBvbkFmdGVyRW50ZXI7XHJcbiAgICAgICAgICAgIGxldCBjYW5jZWxIb29rID0gb25FbnRlckNhbmNlbGxlZDtcclxuICAgICAgICAgICAgaWYgKCFzdGF0ZS5pc01vdW50ZWQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChhcHBlYXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBob29rID0gb25BcHBlYXIgfHwgb25FbnRlcjtcclxuICAgICAgICAgICAgICAgICAgICBhZnRlckhvb2sgPSBvbkFmdGVyQXBwZWFyIHx8IG9uQWZ0ZXJFbnRlcjtcclxuICAgICAgICAgICAgICAgICAgICBjYW5jZWxIb29rID0gb25BcHBlYXJDYW5jZWxsZWQgfHwgb25FbnRlckNhbmNlbGxlZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgY2FsbGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNvbnN0IGRvbmUgPSAoZWwuX2VudGVyQ2IgPSAoY2FuY2VsbGVkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2FsbGVkKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGNhbGxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2FuY2VsbGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbEhvb2soY2FuY2VsSG9vaywgW2VsXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsSG9vayhhZnRlckhvb2ssIFtlbF0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGhvb2tzLmRlbGF5ZWRMZWF2ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGhvb2tzLmRlbGF5ZWRMZWF2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWwuX2VudGVyQ2IgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAoaG9vaykge1xyXG4gICAgICAgICAgICAgICAgY2FsbEFzeW5jSG9vayhob29rLCBbZWwsIGRvbmVdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRvbmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbGVhdmUoZWwsIHJlbW92ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBrZXkgPSBTdHJpbmcodm5vZGUua2V5KTtcclxuICAgICAgICAgICAgaWYgKGVsLl9lbnRlckNiKSB7XHJcbiAgICAgICAgICAgICAgICBlbC5fZW50ZXJDYih0cnVlIC8qIGNhbmNlbGxlZCAqLyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHN0YXRlLmlzVW5tb3VudGluZykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlbW92ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhbGxIb29rKG9uQmVmb3JlTGVhdmUsIFtlbF0pO1xyXG4gICAgICAgICAgICBsZXQgY2FsbGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNvbnN0IGRvbmUgPSAoZWwuX2xlYXZlQ2IgPSAoY2FuY2VsbGVkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2FsbGVkKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGNhbGxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICByZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgIGlmIChjYW5jZWxsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsSG9vayhvbkxlYXZlQ2FuY2VsbGVkLCBbZWxdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxIb29rKG9uQWZ0ZXJMZWF2ZSwgW2VsXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbC5fbGVhdmVDYiA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgIGlmIChsZWF2aW5nVk5vZGVzQ2FjaGVba2V5XSA9PT0gdm5vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbGVhdmluZ1ZOb2Rlc0NhY2hlW2tleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBsZWF2aW5nVk5vZGVzQ2FjaGVba2V5XSA9IHZub2RlO1xyXG4gICAgICAgICAgICBpZiAob25MZWF2ZSkge1xyXG4gICAgICAgICAgICAgICAgY2FsbEFzeW5jSG9vayhvbkxlYXZlLCBbZWwsIGRvbmVdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRvbmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xvbmUodm5vZGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVUcmFuc2l0aW9uSG9va3Modm5vZGUsIHByb3BzLCBzdGF0ZSwgaW5zdGFuY2UpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICByZXR1cm4gaG9va3M7XHJcbn1cclxuLy8gdGhlIHBsYWNlaG9sZGVyIHJlYWxseSBvbmx5IGhhbmRsZXMgb25lIHNwZWNpYWwgY2FzZTogS2VlcEFsaXZlXHJcbi8vIGluIHRoZSBjYXNlIG9mIGEgS2VlcEFsaXZlIGluIGEgbGVhdmUgcGhhc2Ugd2UgbmVlZCB0byByZXR1cm4gYSBLZWVwQWxpdmVcclxuLy8gcGxhY2Vob2xkZXIgd2l0aCBlbXB0eSBjb250ZW50IHRvIGF2b2lkIHRoZSBLZWVwQWxpdmUgaW5zdGFuY2UgZnJvbSBiZWluZ1xyXG4vLyB1bm1vdW50ZWQuXHJcbmZ1bmN0aW9uIGVtcHR5UGxhY2Vob2xkZXIodm5vZGUpIHtcclxuICAgIGlmIChpc0tlZXBBbGl2ZSh2bm9kZSkpIHtcclxuICAgICAgICB2bm9kZSA9IGNsb25lVk5vZGUodm5vZGUpO1xyXG4gICAgICAgIHZub2RlLmNoaWxkcmVuID0gbnVsbDtcclxuICAgICAgICByZXR1cm4gdm5vZGU7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2V0S2VlcEFsaXZlQ2hpbGQodm5vZGUpIHtcclxuICAgIHJldHVybiBpc0tlZXBBbGl2ZSh2bm9kZSlcclxuICAgICAgICA/IHZub2RlLmNoaWxkcmVuXHJcbiAgICAgICAgICAgID8gdm5vZGUuY2hpbGRyZW5bMF1cclxuICAgICAgICAgICAgOiB1bmRlZmluZWRcclxuICAgICAgICA6IHZub2RlO1xyXG59XHJcbmZ1bmN0aW9uIHNldFRyYW5zaXRpb25Ib29rcyh2bm9kZSwgaG9va3MpIHtcclxuICAgIGlmICh2bm9kZS5zaGFwZUZsYWcgJiA2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UICovICYmIHZub2RlLmNvbXBvbmVudCkge1xyXG4gICAgICAgIHNldFRyYW5zaXRpb25Ib29rcyh2bm9kZS5jb21wb25lbnQuc3ViVHJlZSwgaG9va3MpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodm5vZGUuc2hhcGVGbGFnICYgMTI4IC8qIFNoYXBlRmxhZ3MuU1VTUEVOU0UgKi8pIHtcclxuICAgICAgICB2bm9kZS5zc0NvbnRlbnQudHJhbnNpdGlvbiA9IGhvb2tzLmNsb25lKHZub2RlLnNzQ29udGVudCk7XHJcbiAgICAgICAgdm5vZGUuc3NGYWxsYmFjay50cmFuc2l0aW9uID0gaG9va3MuY2xvbmUodm5vZGUuc3NGYWxsYmFjayk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICB2bm9kZS50cmFuc2l0aW9uID0gaG9va3M7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2V0VHJhbnNpdGlvblJhd0NoaWxkcmVuKGNoaWxkcmVuLCBrZWVwQ29tbWVudCA9IGZhbHNlLCBwYXJlbnRLZXkpIHtcclxuICAgIGxldCByZXQgPSBbXTtcclxuICAgIGxldCBrZXllZEZyYWdtZW50Q291bnQgPSAwO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xyXG4gICAgICAgIC8vICM1MzYwIGluaGVyaXQgcGFyZW50IGtleSBpbiBjYXNlIG9mIDx0ZW1wbGF0ZSB2LWZvcj5cclxuICAgICAgICBjb25zdCBrZXkgPSBwYXJlbnRLZXkgPT0gbnVsbFxyXG4gICAgICAgICAgICA/IGNoaWxkLmtleVxyXG4gICAgICAgICAgICA6IFN0cmluZyhwYXJlbnRLZXkpICsgU3RyaW5nKGNoaWxkLmtleSAhPSBudWxsID8gY2hpbGQua2V5IDogaSk7XHJcbiAgICAgICAgLy8gaGFuZGxlIGZyYWdtZW50IGNoaWxkcmVuIGNhc2UsIGUuZy4gdi1mb3JcclxuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gRnJhZ21lbnQpIHtcclxuICAgICAgICAgICAgaWYgKGNoaWxkLnBhdGNoRmxhZyAmIDEyOCAvKiBQYXRjaEZsYWdzLktFWUVEX0ZSQUdNRU5UICovKVxyXG4gICAgICAgICAgICAgICAga2V5ZWRGcmFnbWVudENvdW50Kys7XHJcbiAgICAgICAgICAgIHJldCA9IHJldC5jb25jYXQoZ2V0VHJhbnNpdGlvblJhd0NoaWxkcmVuKGNoaWxkLmNoaWxkcmVuLCBrZWVwQ29tbWVudCwga2V5KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNvbW1lbnQgcGxhY2Vob2xkZXJzIHNob3VsZCBiZSBza2lwcGVkLCBlLmcuIHYtaWZcclxuICAgICAgICBlbHNlIGlmIChrZWVwQ29tbWVudCB8fCBjaGlsZC50eXBlICE9PSBDb21tZW50KSB7XHJcbiAgICAgICAgICAgIHJldC5wdXNoKGtleSAhPSBudWxsID8gY2xvbmVWTm9kZShjaGlsZCwgeyBrZXkgfSkgOiBjaGlsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gIzExMjYgaWYgYSB0cmFuc2l0aW9uIGNoaWxkcmVuIGxpc3QgY29udGFpbnMgbXVsdGlwbGUgc3ViIGZyYWdtZW50cywgdGhlc2VcclxuICAgIC8vIGZyYWdtZW50cyB3aWxsIGJlIG1lcmdlZCBpbnRvIGEgZmxhdCBjaGlsZHJlbiBhcnJheS4gU2luY2UgZWFjaCB2LWZvclxyXG4gICAgLy8gZnJhZ21lbnQgbWF5IGNvbnRhaW4gZGlmZmVyZW50IHN0YXRpYyBiaW5kaW5ncyBpbnNpZGUsIHdlIG5lZWQgdG8gZGUtb3BcclxuICAgIC8vIHRoZXNlIGNoaWxkcmVuIHRvIGZvcmNlIGZ1bGwgZGlmZnMgdG8gZW5zdXJlIGNvcnJlY3QgYmVoYXZpb3IuXHJcbiAgICBpZiAoa2V5ZWRGcmFnbWVudENvdW50ID4gMSkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmV0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHJldFtpXS5wYXRjaEZsYWcgPSAtMiAvKiBQYXRjaEZsYWdzLkJBSUwgKi87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldDtcclxufVxuXG4vLyBpbXBsZW1lbnRhdGlvbiwgY2xvc2UgdG8gbm8tb3BcclxuZnVuY3Rpb24gZGVmaW5lQ29tcG9uZW50KG9wdGlvbnMpIHtcclxuICAgIHJldHVybiBpc0Z1bmN0aW9uKG9wdGlvbnMpID8geyBzZXR1cDogb3B0aW9ucywgbmFtZTogb3B0aW9ucy5uYW1lIH0gOiBvcHRpb25zO1xyXG59XG5cbmNvbnN0IGlzQXN5bmNXcmFwcGVyID0gKGkpID0+ICEhaS50eXBlLl9fYXN5bmNMb2FkZXI7XHJcbmZ1bmN0aW9uIGRlZmluZUFzeW5jQ29tcG9uZW50KHNvdXJjZSkge1xyXG4gICAgaWYgKGlzRnVuY3Rpb24oc291cmNlKSkge1xyXG4gICAgICAgIHNvdXJjZSA9IHsgbG9hZGVyOiBzb3VyY2UgfTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgbG9hZGVyLCBsb2FkaW5nQ29tcG9uZW50LCBlcnJvckNvbXBvbmVudCwgZGVsYXkgPSAyMDAsIHRpbWVvdXQsIC8vIHVuZGVmaW5lZCA9IG5ldmVyIHRpbWVzIG91dFxyXG4gICAgc3VzcGVuc2libGUgPSB0cnVlLCBvbkVycm9yOiB1c2VyT25FcnJvciB9ID0gc291cmNlO1xyXG4gICAgbGV0IHBlbmRpbmdSZXF1ZXN0ID0gbnVsbDtcclxuICAgIGxldCByZXNvbHZlZENvbXA7XHJcbiAgICBsZXQgcmV0cmllcyA9IDA7XHJcbiAgICBjb25zdCByZXRyeSA9ICgpID0+IHtcclxuICAgICAgICByZXRyaWVzKys7XHJcbiAgICAgICAgcGVuZGluZ1JlcXVlc3QgPSBudWxsO1xyXG4gICAgICAgIHJldHVybiBsb2FkKCk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgbG9hZCA9ICgpID0+IHtcclxuICAgICAgICBsZXQgdGhpc1JlcXVlc3Q7XHJcbiAgICAgICAgcmV0dXJuIChwZW5kaW5nUmVxdWVzdCB8fFxyXG4gICAgICAgICAgICAodGhpc1JlcXVlc3QgPSBwZW5kaW5nUmVxdWVzdCA9XHJcbiAgICAgICAgICAgICAgICBsb2FkZXIoKVxyXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGVyciA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyIDogbmV3IEVycm9yKFN0cmluZyhlcnIpKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodXNlck9uRXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJSZXRyeSA9ICgpID0+IHJlc29sdmUocmV0cnkoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1c2VyRmFpbCA9ICgpID0+IHJlamVjdChlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlck9uRXJyb3IoZXJyLCB1c2VyUmV0cnksIHVzZXJGYWlsLCByZXRyaWVzICsgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKGNvbXApID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpc1JlcXVlc3QgIT09IHBlbmRpbmdSZXF1ZXN0ICYmIHBlbmRpbmdSZXF1ZXN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwZW5kaW5nUmVxdWVzdDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhY29tcCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuKGBBc3luYyBjb21wb25lbnQgbG9hZGVyIHJlc29sdmVkIHRvIHVuZGVmaW5lZC4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgSWYgeW91IGFyZSB1c2luZyByZXRyeSgpLCBtYWtlIHN1cmUgdG8gcmV0dXJuIGl0cyByZXR1cm4gdmFsdWUuYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGludGVyb3AgbW9kdWxlIGRlZmF1bHRcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29tcCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY29tcC5fX2VzTW9kdWxlIHx8IGNvbXBbU3ltYm9sLnRvU3RyaW5nVGFnXSA9PT0gJ01vZHVsZScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXAgPSBjb21wLmRlZmF1bHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgY29tcCAmJiAhaXNPYmplY3QoY29tcCkgJiYgIWlzRnVuY3Rpb24oY29tcCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGFzeW5jIGNvbXBvbmVudCBsb2FkIHJlc3VsdDogJHtjb21wfWApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZENvbXAgPSBjb21wO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wO1xyXG4gICAgICAgICAgICAgICAgfSkpKTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gZGVmaW5lQ29tcG9uZW50KHtcclxuICAgICAgICBuYW1lOiAnQXN5bmNDb21wb25lbnRXcmFwcGVyJyxcclxuICAgICAgICBfX2FzeW5jTG9hZGVyOiBsb2FkLFxyXG4gICAgICAgIGdldCBfX2FzeW5jUmVzb2x2ZWQoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlZENvbXA7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzZXR1cCgpIHtcclxuICAgICAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBjdXJyZW50SW5zdGFuY2U7XHJcbiAgICAgICAgICAgIC8vIGFscmVhZHkgcmVzb2x2ZWRcclxuICAgICAgICAgICAgaWYgKHJlc29sdmVkQ29tcCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IGNyZWF0ZUlubmVyQ29tcChyZXNvbHZlZENvbXAsIGluc3RhbmNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBvbkVycm9yID0gKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcGVuZGluZ1JlcXVlc3QgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgaGFuZGxlRXJyb3IoZXJyLCBpbnN0YW5jZSwgMTMgLyogRXJyb3JDb2Rlcy5BU1lOQ19DT01QT05FTlRfTE9BREVSICovLCAhZXJyb3JDb21wb25lbnQgLyogZG8gbm90IHRocm93IGluIGRldiBpZiB1c2VyIHByb3ZpZGVkIGVycm9yIGNvbXBvbmVudCAqLyk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIC8vIHN1c3BlbnNlLWNvbnRyb2xsZWQgb3IgU1NSLlxyXG4gICAgICAgICAgICBpZiAoKHN1c3BlbnNpYmxlICYmIGluc3RhbmNlLnN1c3BlbnNlKSB8fFxyXG4gICAgICAgICAgICAgICAgKGlzSW5TU1JDb21wb25lbnRTZXR1cCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBsb2FkKClcclxuICAgICAgICAgICAgICAgICAgICAudGhlbihjb21wID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4gY3JlYXRlSW5uZXJDb21wKGNvbXAsIGluc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiBlcnJvckNvbXBvbmVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGNyZWF0ZVZOb2RlKGVycm9yQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGxvYWRlZCA9IHJlZihmYWxzZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gcmVmKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRlbGF5ZWQgPSByZWYoISFkZWxheSk7XHJcbiAgICAgICAgICAgIGlmIChkZWxheSkge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsYXllZC52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSwgZGVsYXkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aW1lb3V0ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghbG9hZGVkLnZhbHVlICYmICFlcnJvci52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnIgPSBuZXcgRXJyb3IoYEFzeW5jIGNvbXBvbmVudCB0aW1lZCBvdXQgYWZ0ZXIgJHt0aW1lb3V0fW1zLmApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkVycm9yKGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLnZhbHVlID0gZXJyO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sIHRpbWVvdXQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxvYWQoKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbG9hZGVkLnZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZS5wYXJlbnQgJiYgaXNLZWVwQWxpdmUoaW5zdGFuY2UucGFyZW50LnZub2RlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHBhcmVudCBpcyBrZWVwLWFsaXZlLCBmb3JjZSB1cGRhdGUgc28gdGhlIGxvYWRlZCBjb21wb25lbnQnc1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIG5hbWUgaXMgdGFrZW4gaW50byBhY2NvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgcXVldWVKb2IoaW5zdGFuY2UucGFyZW50LnVwZGF0ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIG9uRXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgICAgIGVycm9yLnZhbHVlID0gZXJyO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChsb2FkZWQudmFsdWUgJiYgcmVzb2x2ZWRDb21wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUlubmVyQ29tcChyZXNvbHZlZENvbXAsIGluc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVycm9yLnZhbHVlICYmIGVycm9yQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKGVycm9yQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvci52YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobG9hZGluZ0NvbXBvbmVudCAmJiAhZGVsYXllZC52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVWTm9kZShsb2FkaW5nQ29tcG9uZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVJbm5lckNvbXAoY29tcCwgeyB2bm9kZTogeyByZWYsIHByb3BzLCBjaGlsZHJlbiwgc2hhcGVGbGFnIH0sIHBhcmVudCB9KSB7XHJcbiAgICBjb25zdCB2bm9kZSA9IGNyZWF0ZVZOb2RlKGNvbXAsIHByb3BzLCBjaGlsZHJlbik7XHJcbiAgICAvLyBlbnN1cmUgaW5uZXIgY29tcG9uZW50IGluaGVyaXRzIHRoZSBhc3luYyB3cmFwcGVyJ3MgcmVmIG93bmVyXHJcbiAgICB2bm9kZS5yZWYgPSByZWY7XHJcbiAgICByZXR1cm4gdm5vZGU7XHJcbn1cblxuY29uc3QgaXNLZWVwQWxpdmUgPSAodm5vZGUpID0+IHZub2RlLnR5cGUuX19pc0tlZXBBbGl2ZTtcclxuY29uc3QgS2VlcEFsaXZlSW1wbCA9IHtcclxuICAgIG5hbWU6IGBLZWVwQWxpdmVgLFxyXG4gICAgLy8gTWFya2VyIGZvciBzcGVjaWFsIGhhbmRsaW5nIGluc2lkZSB0aGUgcmVuZGVyZXIuIFdlIGFyZSBub3QgdXNpbmcgYSA9PT1cclxuICAgIC8vIGNoZWNrIGRpcmVjdGx5IG9uIEtlZXBBbGl2ZSBpbiB0aGUgcmVuZGVyZXIsIGJlY2F1c2UgaW1wb3J0aW5nIGl0IGRpcmVjdGx5XHJcbiAgICAvLyB3b3VsZCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgdHJlZS1zaGFrZW4uXHJcbiAgICBfX2lzS2VlcEFsaXZlOiB0cnVlLFxyXG4gICAgcHJvcHM6IHtcclxuICAgICAgICBpbmNsdWRlOiBbU3RyaW5nLCBSZWdFeHAsIEFycmF5XSxcclxuICAgICAgICBleGNsdWRlOiBbU3RyaW5nLCBSZWdFeHAsIEFycmF5XSxcclxuICAgICAgICBtYXg6IFtTdHJpbmcsIE51bWJlcl1cclxuICAgIH0sXHJcbiAgICBzZXR1cChwcm9wcywgeyBzbG90cyB9KSB7XHJcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBnZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgICAgICAvLyBLZWVwQWxpdmUgY29tbXVuaWNhdGVzIHdpdGggdGhlIGluc3RhbnRpYXRlZCByZW5kZXJlciB2aWEgdGhlXHJcbiAgICAgICAgLy8gY3R4IHdoZXJlIHRoZSByZW5kZXJlciBwYXNzZXMgaW4gaXRzIGludGVybmFscyxcclxuICAgICAgICAvLyBhbmQgdGhlIEtlZXBBbGl2ZSBpbnN0YW5jZSBleHBvc2VzIGFjdGl2YXRlL2RlYWN0aXZhdGUgaW1wbGVtZW50YXRpb25zLlxyXG4gICAgICAgIC8vIFRoZSB3aG9sZSBwb2ludCBvZiB0aGlzIGlzIHRvIGF2b2lkIGltcG9ydGluZyBLZWVwQWxpdmUgZGlyZWN0bHkgaW4gdGhlXHJcbiAgICAgICAgLy8gcmVuZGVyZXIgdG8gZmFjaWxpdGF0ZSB0cmVlLXNoYWtpbmcuXHJcbiAgICAgICAgY29uc3Qgc2hhcmVkQ29udGV4dCA9IGluc3RhbmNlLmN0eDtcclxuICAgICAgICAvLyBpZiB0aGUgaW50ZXJuYWwgcmVuZGVyZXIgaXMgbm90IHJlZ2lzdGVyZWQsIGl0IGluZGljYXRlcyB0aGF0IHRoaXMgaXMgc2VydmVyLXNpZGUgcmVuZGVyaW5nLFxyXG4gICAgICAgIC8vIGZvciBLZWVwQWxpdmUsIHdlIGp1c3QgbmVlZCB0byByZW5kZXIgaXRzIGNoaWxkcmVuXHJcbiAgICAgICAgaWYgKCFzaGFyZWRDb250ZXh0LnJlbmRlcmVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHNsb3RzLmRlZmF1bHQgJiYgc2xvdHMuZGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuICYmIGNoaWxkcmVuLmxlbmd0aCA9PT0gMSA/IGNoaWxkcmVuWzBdIDogY2hpbGRyZW47XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGNhY2hlID0gbmV3IE1hcCgpO1xyXG4gICAgICAgIGNvbnN0IGtleXMgPSBuZXcgU2V0KCk7XHJcbiAgICAgICAgbGV0IGN1cnJlbnQgPSBudWxsO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlLl9fdl9jYWNoZSA9IGNhY2hlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBwYXJlbnRTdXNwZW5zZSA9IGluc3RhbmNlLnN1c3BlbnNlO1xyXG4gICAgICAgIGNvbnN0IHsgcmVuZGVyZXI6IHsgcDogcGF0Y2gsIG06IG1vdmUsIHVtOiBfdW5tb3VudCwgbzogeyBjcmVhdGVFbGVtZW50IH0gfSB9ID0gc2hhcmVkQ29udGV4dDtcclxuICAgICAgICBjb25zdCBzdG9yYWdlQ29udGFpbmVyID0gY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgc2hhcmVkQ29udGV4dC5hY3RpdmF0ZSA9ICh2bm9kZSwgY29udGFpbmVyLCBhbmNob3IsIGlzU1ZHLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW5zdGFuY2UgPSB2bm9kZS5jb21wb25lbnQ7XHJcbiAgICAgICAgICAgIG1vdmUodm5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCAwIC8qIE1vdmVUeXBlLkVOVEVSICovLCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgIC8vIGluIGNhc2UgcHJvcHMgaGF2ZSBjaGFuZ2VkXHJcbiAgICAgICAgICAgIHBhdGNoKGluc3RhbmNlLnZub2RlLCB2bm9kZSwgY29udGFpbmVyLCBhbmNob3IsIGluc3RhbmNlLCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHZub2RlLnNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmlzRGVhY3RpdmF0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZS5hKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlQXJyYXlGbnMoaW5zdGFuY2UuYSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2bm9kZUhvb2sgPSB2bm9kZS5wcm9wcyAmJiB2bm9kZS5wcm9wcy5vblZub2RlTW91bnRlZDtcclxuICAgICAgICAgICAgICAgIGlmICh2bm9kZUhvb2spIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBpbnN0YW5jZS5wYXJlbnQsIHZub2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIGNvbXBvbmVudHMgdHJlZVxyXG4gICAgICAgICAgICAgICAgZGV2dG9vbHNDb21wb25lbnRBZGRlZChpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIHNoYXJlZENvbnRleHQuZGVhY3RpdmF0ZSA9ICh2bm9kZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbnN0YW5jZSA9IHZub2RlLmNvbXBvbmVudDtcclxuICAgICAgICAgICAgbW92ZSh2bm9kZSwgc3RvcmFnZUNvbnRhaW5lciwgbnVsbCwgMSAvKiBNb3ZlVHlwZS5MRUFWRSAqLywgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlLmRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlQXJyYXlGbnMoaW5zdGFuY2UuZGEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3Qgdm5vZGVIb29rID0gdm5vZGUucHJvcHMgJiYgdm5vZGUucHJvcHMub25Wbm9kZVVubW91bnRlZDtcclxuICAgICAgICAgICAgICAgIGlmICh2bm9kZUhvb2spIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBpbnN0YW5jZS5wYXJlbnQsIHZub2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmlzRGVhY3RpdmF0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9LCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgY29tcG9uZW50cyB0cmVlXHJcbiAgICAgICAgICAgICAgICBkZXZ0b29sc0NvbXBvbmVudEFkZGVkKGluc3RhbmNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgZnVuY3Rpb24gdW5tb3VudCh2bm9kZSkge1xyXG4gICAgICAgICAgICAvLyByZXNldCB0aGUgc2hhcGVGbGFnIHNvIGl0IGNhbiBiZSBwcm9wZXJseSB1bm1vdW50ZWRcclxuICAgICAgICAgICAgcmVzZXRTaGFwZUZsYWcodm5vZGUpO1xyXG4gICAgICAgICAgICBfdW5tb3VudCh2bm9kZSwgaW5zdGFuY2UsIHBhcmVudFN1c3BlbnNlLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZnVuY3Rpb24gcHJ1bmVDYWNoZShmaWx0ZXIpIHtcclxuICAgICAgICAgICAgY2FjaGUuZm9yRWFjaCgodm5vZGUsIGtleSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IGdldENvbXBvbmVudE5hbWUodm5vZGUudHlwZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAobmFtZSAmJiAoIWZpbHRlciB8fCAhZmlsdGVyKG5hbWUpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBydW5lQ2FjaGVFbnRyeShrZXkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZnVuY3Rpb24gcHJ1bmVDYWNoZUVudHJ5KGtleSkge1xyXG4gICAgICAgICAgICBjb25zdCBjYWNoZWQgPSBjYWNoZS5nZXQoa2V5KTtcclxuICAgICAgICAgICAgaWYgKCFjdXJyZW50IHx8IGNhY2hlZC50eXBlICE9PSBjdXJyZW50LnR5cGUpIHtcclxuICAgICAgICAgICAgICAgIHVubW91bnQoY2FjaGVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjdXJyZW50IGFjdGl2ZSBpbnN0YW5jZSBzaG91bGQgbm8gbG9uZ2VyIGJlIGtlcHQtYWxpdmUuXHJcbiAgICAgICAgICAgICAgICAvLyB3ZSBjYW4ndCB1bm1vdW50IGl0IG5vdyBidXQgaXQgbWlnaHQgYmUgbGF0ZXIsIHNvIHJlc2V0IGl0cyBmbGFnIG5vdy5cclxuICAgICAgICAgICAgICAgIHJlc2V0U2hhcGVGbGFnKGN1cnJlbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhY2hlLmRlbGV0ZShrZXkpO1xyXG4gICAgICAgICAgICBrZXlzLmRlbGV0ZShrZXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBwcnVuZSBjYWNoZSBvbiBpbmNsdWRlL2V4Y2x1ZGUgcHJvcCBjaGFuZ2VcclxuICAgICAgICB3YXRjaCgoKSA9PiBbcHJvcHMuaW5jbHVkZSwgcHJvcHMuZXhjbHVkZV0sIChbaW5jbHVkZSwgZXhjbHVkZV0pID0+IHtcclxuICAgICAgICAgICAgaW5jbHVkZSAmJiBwcnVuZUNhY2hlKG5hbWUgPT4gbWF0Y2hlcyhpbmNsdWRlLCBuYW1lKSk7XHJcbiAgICAgICAgICAgIGV4Y2x1ZGUgJiYgcHJ1bmVDYWNoZShuYW1lID0+ICFtYXRjaGVzKGV4Y2x1ZGUsIG5hbWUpKTtcclxuICAgICAgICB9LCBcclxuICAgICAgICAvLyBwcnVuZSBwb3N0LXJlbmRlciBhZnRlciBgY3VycmVudGAgaGFzIGJlZW4gdXBkYXRlZFxyXG4gICAgICAgIHsgZmx1c2g6ICdwb3N0JywgZGVlcDogdHJ1ZSB9KTtcclxuICAgICAgICAvLyBjYWNoZSBzdWIgdHJlZSBhZnRlciByZW5kZXJcclxuICAgICAgICBsZXQgcGVuZGluZ0NhY2hlS2V5ID0gbnVsbDtcclxuICAgICAgICBjb25zdCBjYWNoZVN1YnRyZWUgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIGZpeCAjMTYyMSwgdGhlIHBlbmRpbmdDYWNoZUtleSBjb3VsZCBiZSAwXHJcbiAgICAgICAgICAgIGlmIChwZW5kaW5nQ2FjaGVLZXkgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgY2FjaGUuc2V0KHBlbmRpbmdDYWNoZUtleSwgZ2V0SW5uZXJDaGlsZChpbnN0YW5jZS5zdWJUcmVlKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIG9uTW91bnRlZChjYWNoZVN1YnRyZWUpO1xyXG4gICAgICAgIG9uVXBkYXRlZChjYWNoZVN1YnRyZWUpO1xyXG4gICAgICAgIG9uQmVmb3JlVW5tb3VudCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNhY2hlLmZvckVhY2goY2FjaGVkID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgc3ViVHJlZSwgc3VzcGVuc2UgfSA9IGluc3RhbmNlO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgdm5vZGUgPSBnZXRJbm5lckNoaWxkKHN1YlRyZWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNhY2hlZC50eXBlID09PSB2bm9kZS50eXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY3VycmVudCBpbnN0YW5jZSB3aWxsIGJlIHVubW91bnRlZCBhcyBwYXJ0IG9mIGtlZXAtYWxpdmUncyB1bm1vdW50XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzZXRTaGFwZUZsYWcodm5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGJ1dCBpbnZva2UgaXRzIGRlYWN0aXZhdGVkIGhvb2sgaGVyZVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhID0gdm5vZGUuY29tcG9uZW50LmRhO1xyXG4gICAgICAgICAgICAgICAgICAgIGRhICYmIHF1ZXVlUG9zdFJlbmRlckVmZmVjdChkYSwgc3VzcGVuc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHVubW91bnQoY2FjaGVkKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgcGVuZGluZ0NhY2hlS2V5ID0gbnVsbDtcclxuICAgICAgICAgICAgaWYgKCFzbG90cy5kZWZhdWx0KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHNsb3RzLmRlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3QgcmF3Vk5vZGUgPSBjaGlsZHJlblswXTtcclxuICAgICAgICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBLZWVwQWxpdmUgc2hvdWxkIGNvbnRhaW4gZXhhY3RseSBvbmUgY29tcG9uZW50IGNoaWxkLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY3VycmVudCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoIWlzVk5vZGUocmF3Vk5vZGUpIHx8XHJcbiAgICAgICAgICAgICAgICAoIShyYXdWTm9kZS5zaGFwZUZsYWcgJiA0IC8qIFNoYXBlRmxhZ3MuU1RBVEVGVUxfQ09NUE9ORU5UICovKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICEocmF3Vk5vZGUuc2hhcGVGbGFnICYgMTI4IC8qIFNoYXBlRmxhZ3MuU1VTUEVOU0UgKi8pKSkge1xyXG4gICAgICAgICAgICAgICAgY3VycmVudCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmF3Vk5vZGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IHZub2RlID0gZ2V0SW5uZXJDaGlsZChyYXdWTm9kZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbXAgPSB2bm9kZS50eXBlO1xyXG4gICAgICAgICAgICAvLyBmb3IgYXN5bmMgY29tcG9uZW50cywgbmFtZSBjaGVjayBzaG91bGQgYmUgYmFzZWQgaW4gaXRzIGxvYWRlZFxyXG4gICAgICAgICAgICAvLyBpbm5lciBjb21wb25lbnQgaWYgYXZhaWxhYmxlXHJcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBnZXRDb21wb25lbnROYW1lKGlzQXN5bmNXcmFwcGVyKHZub2RlKVxyXG4gICAgICAgICAgICAgICAgPyB2bm9kZS50eXBlLl9fYXN5bmNSZXNvbHZlZCB8fCB7fVxyXG4gICAgICAgICAgICAgICAgOiBjb21wKTtcclxuICAgICAgICAgICAgY29uc3QgeyBpbmNsdWRlLCBleGNsdWRlLCBtYXggfSA9IHByb3BzO1xyXG4gICAgICAgICAgICBpZiAoKGluY2x1ZGUgJiYgKCFuYW1lIHx8ICFtYXRjaGVzKGluY2x1ZGUsIG5hbWUpKSkgfHxcclxuICAgICAgICAgICAgICAgIChleGNsdWRlICYmIG5hbWUgJiYgbWF0Y2hlcyhleGNsdWRlLCBuYW1lKSkpIHtcclxuICAgICAgICAgICAgICAgIGN1cnJlbnQgPSB2bm9kZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiByYXdWTm9kZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBrZXkgPSB2bm9kZS5rZXkgPT0gbnVsbCA/IGNvbXAgOiB2bm9kZS5rZXk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlZFZOb2RlID0gY2FjaGUuZ2V0KGtleSk7XHJcbiAgICAgICAgICAgIC8vIGNsb25lIHZub2RlIGlmIGl0J3MgcmV1c2VkIGJlY2F1c2Ugd2UgYXJlIGdvaW5nIHRvIG11dGF0ZSBpdFxyXG4gICAgICAgICAgICBpZiAodm5vZGUuZWwpIHtcclxuICAgICAgICAgICAgICAgIHZub2RlID0gY2xvbmVWTm9kZSh2bm9kZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmF3Vk5vZGUuc2hhcGVGbGFnICYgMTI4IC8qIFNoYXBlRmxhZ3MuU1VTUEVOU0UgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICByYXdWTm9kZS5zc0NvbnRlbnQgPSB2bm9kZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyAjMTUxMyBpdCdzIHBvc3NpYmxlIGZvciB0aGUgcmV0dXJuZWQgdm5vZGUgdG8gYmUgY2xvbmVkIGR1ZSB0byBhdHRyXHJcbiAgICAgICAgICAgIC8vIGZhbGx0aHJvdWdoIG9yIHNjb3BlSWQsIHNvIHRoZSB2bm9kZSBoZXJlIG1heSBub3QgYmUgdGhlIGZpbmFsIHZub2RlXHJcbiAgICAgICAgICAgIC8vIHRoYXQgaXMgbW91bnRlZC4gSW5zdGVhZCBvZiBjYWNoaW5nIGl0IGRpcmVjdGx5LCB3ZSBzdG9yZSB0aGUgcGVuZGluZ1xyXG4gICAgICAgICAgICAvLyBrZXkgYW5kIGNhY2hlIGBpbnN0YW5jZS5zdWJUcmVlYCAodGhlIG5vcm1hbGl6ZWQgdm5vZGUpIGluXHJcbiAgICAgICAgICAgIC8vIGJlZm9yZU1vdW50L2JlZm9yZVVwZGF0ZSBob29rcy5cclxuICAgICAgICAgICAgcGVuZGluZ0NhY2hlS2V5ID0ga2V5O1xyXG4gICAgICAgICAgICBpZiAoY2FjaGVkVk5vZGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvcHkgb3ZlciBtb3VudGVkIHN0YXRlXHJcbiAgICAgICAgICAgICAgICB2bm9kZS5lbCA9IGNhY2hlZFZOb2RlLmVsO1xyXG4gICAgICAgICAgICAgICAgdm5vZGUuY29tcG9uZW50ID0gY2FjaGVkVk5vZGUuY29tcG9uZW50O1xyXG4gICAgICAgICAgICAgICAgaWYgKHZub2RlLnRyYW5zaXRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyByZWN1cnNpdmVseSB1cGRhdGUgdHJhbnNpdGlvbiBob29rcyBvbiBzdWJUcmVlXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VHJhbnNpdGlvbkhvb2tzKHZub2RlLCB2bm9kZS50cmFuc2l0aW9uKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIGF2b2lkIHZub2RlIGJlaW5nIG1vdW50ZWQgYXMgZnJlc2hcclxuICAgICAgICAgICAgICAgIHZub2RlLnNoYXBlRmxhZyB8PSA1MTIgLyogU2hhcGVGbGFncy5DT01QT05FTlRfS0VQVF9BTElWRSAqLztcclxuICAgICAgICAgICAgICAgIC8vIG1ha2UgdGhpcyBrZXkgdGhlIGZyZXNoZXN0XHJcbiAgICAgICAgICAgICAgICBrZXlzLmRlbGV0ZShrZXkpO1xyXG4gICAgICAgICAgICAgICAga2V5cy5hZGQoa2V5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGtleXMuYWRkKGtleSk7XHJcbiAgICAgICAgICAgICAgICAvLyBwcnVuZSBvbGRlc3QgZW50cnlcclxuICAgICAgICAgICAgICAgIGlmIChtYXggJiYga2V5cy5zaXplID4gcGFyc2VJbnQobWF4LCAxMCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBwcnVuZUNhY2hlRW50cnkoa2V5cy52YWx1ZXMoKS5uZXh0KCkudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGF2b2lkIHZub2RlIGJlaW5nIHVubW91bnRlZFxyXG4gICAgICAgICAgICB2bm9kZS5zaGFwZUZsYWcgfD0gMjU2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UX1NIT1VMRF9LRUVQX0FMSVZFICovO1xyXG4gICAgICAgICAgICBjdXJyZW50ID0gdm5vZGU7XHJcbiAgICAgICAgICAgIHJldHVybiBpc1N1c3BlbnNlKHJhd1ZOb2RlLnR5cGUpID8gcmF3Vk5vZGUgOiB2bm9kZTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59O1xyXG4vLyBleHBvcnQgdGhlIHB1YmxpYyB0eXBlIGZvciBoL3RzeCBpbmZlcmVuY2VcclxuLy8gYWxzbyB0byBhdm9pZCBpbmxpbmUgaW1wb3J0KCkgaW4gZ2VuZXJhdGVkIGQudHMgZmlsZXNcclxuY29uc3QgS2VlcEFsaXZlID0gS2VlcEFsaXZlSW1wbDtcclxuZnVuY3Rpb24gbWF0Y2hlcyhwYXR0ZXJuLCBuYW1lKSB7XHJcbiAgICBpZiAoaXNBcnJheShwYXR0ZXJuKSkge1xyXG4gICAgICAgIHJldHVybiBwYXR0ZXJuLnNvbWUoKHApID0+IG1hdGNoZXMocCwgbmFtZSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNTdHJpbmcocGF0dGVybikpIHtcclxuICAgICAgICByZXR1cm4gcGF0dGVybi5zcGxpdCgnLCcpLmluY2x1ZGVzKG5hbWUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocGF0dGVybi50ZXN0KSB7XHJcbiAgICAgICAgcmV0dXJuIHBhdHRlcm4udGVzdChuYW1lKTtcclxuICAgIH1cclxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cclxuZnVuY3Rpb24gb25BY3RpdmF0ZWQoaG9vaywgdGFyZ2V0KSB7XHJcbiAgICByZWdpc3RlcktlZXBBbGl2ZUhvb2soaG9vaywgXCJhXCIgLyogTGlmZWN5Y2xlSG9va3MuQUNUSVZBVEVEICovLCB0YXJnZXQpO1xyXG59XHJcbmZ1bmN0aW9uIG9uRGVhY3RpdmF0ZWQoaG9vaywgdGFyZ2V0KSB7XHJcbiAgICByZWdpc3RlcktlZXBBbGl2ZUhvb2soaG9vaywgXCJkYVwiIC8qIExpZmVjeWNsZUhvb2tzLkRFQUNUSVZBVEVEICovLCB0YXJnZXQpO1xyXG59XHJcbmZ1bmN0aW9uIHJlZ2lzdGVyS2VlcEFsaXZlSG9vayhob29rLCB0eXBlLCB0YXJnZXQgPSBjdXJyZW50SW5zdGFuY2UpIHtcclxuICAgIC8vIGNhY2hlIHRoZSBkZWFjdGl2YXRlIGJyYW5jaCBjaGVjayB3cmFwcGVyIGZvciBpbmplY3RlZCBob29rcyBzbyB0aGUgc2FtZVxyXG4gICAgLy8gaG9vayBjYW4gYmUgcHJvcGVybHkgZGVkdXBlZCBieSB0aGUgc2NoZWR1bGVyLiBcIl9fd2RjXCIgc3RhbmRzIGZvciBcIndpdGhcclxuICAgIC8vIGRlYWN0aXZhdGlvbiBjaGVja1wiLlxyXG4gICAgY29uc3Qgd3JhcHBlZEhvb2sgPSBob29rLl9fd2RjIHx8XHJcbiAgICAgICAgKGhvb2suX193ZGMgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIG9ubHkgZmlyZSB0aGUgaG9vayBpZiB0aGUgdGFyZ2V0IGluc3RhbmNlIGlzIE5PVCBpbiBhIGRlYWN0aXZhdGVkIGJyYW5jaC5cclxuICAgICAgICAgICAgbGV0IGN1cnJlbnQgPSB0YXJnZXQ7XHJcbiAgICAgICAgICAgIHdoaWxlIChjdXJyZW50KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudC5pc0RlYWN0aXZhdGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQucGFyZW50O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBob29rKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICBpbmplY3RIb29rKHR5cGUsIHdyYXBwZWRIb29rLCB0YXJnZXQpO1xyXG4gICAgLy8gSW4gYWRkaXRpb24gdG8gcmVnaXN0ZXJpbmcgaXQgb24gdGhlIHRhcmdldCBpbnN0YW5jZSwgd2Ugd2FsayB1cCB0aGUgcGFyZW50XHJcbiAgICAvLyBjaGFpbiBhbmQgcmVnaXN0ZXIgaXQgb24gYWxsIGFuY2VzdG9yIGluc3RhbmNlcyB0aGF0IGFyZSBrZWVwLWFsaXZlIHJvb3RzLlxyXG4gICAgLy8gVGhpcyBhdm9pZHMgdGhlIG5lZWQgdG8gd2FsayB0aGUgZW50aXJlIGNvbXBvbmVudCB0cmVlIHdoZW4gaW52b2tpbmcgdGhlc2VcclxuICAgIC8vIGhvb2tzLCBhbmQgbW9yZSBpbXBvcnRhbnRseSwgYXZvaWRzIHRoZSBuZWVkIHRvIHRyYWNrIGNoaWxkIGNvbXBvbmVudHMgaW5cclxuICAgIC8vIGFycmF5cy5cclxuICAgIGlmICh0YXJnZXQpIHtcclxuICAgICAgICBsZXQgY3VycmVudCA9IHRhcmdldC5wYXJlbnQ7XHJcbiAgICAgICAgd2hpbGUgKGN1cnJlbnQgJiYgY3VycmVudC5wYXJlbnQpIHtcclxuICAgICAgICAgICAgaWYgKGlzS2VlcEFsaXZlKGN1cnJlbnQucGFyZW50LnZub2RlKSkge1xyXG4gICAgICAgICAgICAgICAgaW5qZWN0VG9LZWVwQWxpdmVSb290KHdyYXBwZWRIb29rLCB0eXBlLCB0YXJnZXQsIGN1cnJlbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaW5qZWN0VG9LZWVwQWxpdmVSb290KGhvb2ssIHR5cGUsIHRhcmdldCwga2VlcEFsaXZlUm9vdCkge1xyXG4gICAgLy8gaW5qZWN0SG9vayB3cmFwcyB0aGUgb3JpZ2luYWwgZm9yIGVycm9yIGhhbmRsaW5nLCBzbyBtYWtlIHN1cmUgdG8gcmVtb3ZlXHJcbiAgICAvLyB0aGUgd3JhcHBlZCB2ZXJzaW9uLlxyXG4gICAgY29uc3QgaW5qZWN0ZWQgPSBpbmplY3RIb29rKHR5cGUsIGhvb2ssIGtlZXBBbGl2ZVJvb3QsIHRydWUgLyogcHJlcGVuZCAqLyk7XHJcbiAgICBvblVubW91bnRlZCgoKSA9PiB7XHJcbiAgICAgICAgcmVtb3ZlKGtlZXBBbGl2ZVJvb3RbdHlwZV0sIGluamVjdGVkKTtcclxuICAgIH0sIHRhcmdldCk7XHJcbn1cclxuZnVuY3Rpb24gcmVzZXRTaGFwZUZsYWcodm5vZGUpIHtcclxuICAgIGxldCBzaGFwZUZsYWcgPSB2bm9kZS5zaGFwZUZsYWc7XHJcbiAgICBpZiAoc2hhcGVGbGFnICYgMjU2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UX1NIT1VMRF9LRUVQX0FMSVZFICovKSB7XHJcbiAgICAgICAgc2hhcGVGbGFnIC09IDI1NiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVF9TSE9VTERfS0VFUF9BTElWRSAqLztcclxuICAgIH1cclxuICAgIGlmIChzaGFwZUZsYWcgJiA1MTIgLyogU2hhcGVGbGFncy5DT01QT05FTlRfS0VQVF9BTElWRSAqLykge1xyXG4gICAgICAgIHNoYXBlRmxhZyAtPSA1MTIgLyogU2hhcGVGbGFncy5DT01QT05FTlRfS0VQVF9BTElWRSAqLztcclxuICAgIH1cclxuICAgIHZub2RlLnNoYXBlRmxhZyA9IHNoYXBlRmxhZztcclxufVxyXG5mdW5jdGlvbiBnZXRJbm5lckNoaWxkKHZub2RlKSB7XHJcbiAgICByZXR1cm4gdm5vZGUuc2hhcGVGbGFnICYgMTI4IC8qIFNoYXBlRmxhZ3MuU1VTUEVOU0UgKi8gPyB2bm9kZS5zc0NvbnRlbnQgOiB2bm9kZTtcclxufVxuXG5mdW5jdGlvbiBpbmplY3RIb29rKHR5cGUsIGhvb2ssIHRhcmdldCA9IGN1cnJlbnRJbnN0YW5jZSwgcHJlcGVuZCA9IGZhbHNlKSB7XHJcbiAgICBpZiAodGFyZ2V0KSB7XHJcbiAgICAgICAgY29uc3QgaG9va3MgPSB0YXJnZXRbdHlwZV0gfHwgKHRhcmdldFt0eXBlXSA9IFtdKTtcclxuICAgICAgICAvLyBjYWNoZSB0aGUgZXJyb3IgaGFuZGxpbmcgd3JhcHBlciBmb3IgaW5qZWN0ZWQgaG9va3Mgc28gdGhlIHNhbWUgaG9va1xyXG4gICAgICAgIC8vIGNhbiBiZSBwcm9wZXJseSBkZWR1cGVkIGJ5IHRoZSBzY2hlZHVsZXIuIFwiX193ZWhcIiBzdGFuZHMgZm9yIFwid2l0aCBlcnJvclxyXG4gICAgICAgIC8vIGhhbmRsaW5nXCIuXHJcbiAgICAgICAgY29uc3Qgd3JhcHBlZEhvb2sgPSBob29rLl9fd2VoIHx8XHJcbiAgICAgICAgICAgIChob29rLl9fd2VoID0gKC4uLmFyZ3MpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQuaXNVbm1vdW50ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBkaXNhYmxlIHRyYWNraW5nIGluc2lkZSBhbGwgbGlmZWN5Y2xlIGhvb2tzXHJcbiAgICAgICAgICAgICAgICAvLyBzaW5jZSB0aGV5IGNhbiBwb3RlbnRpYWxseSBiZSBjYWxsZWQgaW5zaWRlIGVmZmVjdHMuXHJcbiAgICAgICAgICAgICAgICBwYXVzZVRyYWNraW5nKCk7XHJcbiAgICAgICAgICAgICAgICAvLyBTZXQgY3VycmVudEluc3RhbmNlIGR1cmluZyBob29rIGludm9jYXRpb24uXHJcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGFzc3VtZXMgdGhlIGhvb2sgZG9lcyBub3Qgc3luY2hyb25vdXNseSB0cmlnZ2VyIG90aGVyIGhvb2tzLCB3aGljaFxyXG4gICAgICAgICAgICAgICAgLy8gY2FuIG9ubHkgYmUgZmFsc2Ugd2hlbiB0aGUgdXNlciBkb2VzIHNvbWV0aGluZyByZWFsbHkgZnVua3kuXHJcbiAgICAgICAgICAgICAgICBzZXRDdXJyZW50SW5zdGFuY2UodGFyZ2V0KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGhvb2ssIHRhcmdldCwgdHlwZSwgYXJncyk7XHJcbiAgICAgICAgICAgICAgICB1bnNldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgICAgICAgICAgICAgcmVzZXRUcmFja2luZygpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKHByZXBlbmQpIHtcclxuICAgICAgICAgICAgaG9va3MudW5zaGlmdCh3cmFwcGVkSG9vayk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBob29rcy5wdXNoKHdyYXBwZWRIb29rKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHdyYXBwZWRIb29rO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgY29uc3QgYXBpTmFtZSA9IHRvSGFuZGxlcktleShFcnJvclR5cGVTdHJpbmdzW3R5cGVdLnJlcGxhY2UoLyBob29rJC8sICcnKSk7XHJcbiAgICAgICAgd2FybihgJHthcGlOYW1lfSBpcyBjYWxsZWQgd2hlbiB0aGVyZSBpcyBubyBhY3RpdmUgY29tcG9uZW50IGluc3RhbmNlIHRvIGJlIGAgK1xyXG4gICAgICAgICAgICBgYXNzb2NpYXRlZCB3aXRoLiBgICtcclxuICAgICAgICAgICAgYExpZmVjeWNsZSBpbmplY3Rpb24gQVBJcyBjYW4gb25seSBiZSB1c2VkIGR1cmluZyBleGVjdXRpb24gb2Ygc2V0dXAoKS5gICtcclxuICAgICAgICAgICAgKGAgSWYgeW91IGFyZSB1c2luZyBhc3luYyBzZXR1cCgpLCBtYWtlIHN1cmUgdG8gcmVnaXN0ZXIgbGlmZWN5Y2xlIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGBob29rcyBiZWZvcmUgdGhlIGZpcnN0IGF3YWl0IHN0YXRlbWVudC5gXHJcbiAgICAgICAgICAgICAgICApKTtcclxuICAgIH1cclxufVxyXG5jb25zdCBjcmVhdGVIb29rID0gKGxpZmVjeWNsZSkgPT4gKGhvb2ssIHRhcmdldCA9IGN1cnJlbnRJbnN0YW5jZSkgPT4gXHJcbi8vIHBvc3QtY3JlYXRlIGxpZmVjeWNsZSByZWdpc3RyYXRpb25zIGFyZSBub29wcyBkdXJpbmcgU1NSIChleGNlcHQgZm9yIHNlcnZlclByZWZldGNoKVxyXG4oIWlzSW5TU1JDb21wb25lbnRTZXR1cCB8fCBsaWZlY3ljbGUgPT09IFwic3BcIiAvKiBMaWZlY3ljbGVIb29rcy5TRVJWRVJfUFJFRkVUQ0ggKi8pICYmXHJcbiAgICBpbmplY3RIb29rKGxpZmVjeWNsZSwgaG9vaywgdGFyZ2V0KTtcclxuY29uc3Qgb25CZWZvcmVNb3VudCA9IGNyZWF0ZUhvb2soXCJibVwiIC8qIExpZmVjeWNsZUhvb2tzLkJFRk9SRV9NT1VOVCAqLyk7XHJcbmNvbnN0IG9uTW91bnRlZCA9IGNyZWF0ZUhvb2soXCJtXCIgLyogTGlmZWN5Y2xlSG9va3MuTU9VTlRFRCAqLyk7XHJcbmNvbnN0IG9uQmVmb3JlVXBkYXRlID0gY3JlYXRlSG9vayhcImJ1XCIgLyogTGlmZWN5Y2xlSG9va3MuQkVGT1JFX1VQREFURSAqLyk7XHJcbmNvbnN0IG9uVXBkYXRlZCA9IGNyZWF0ZUhvb2soXCJ1XCIgLyogTGlmZWN5Y2xlSG9va3MuVVBEQVRFRCAqLyk7XHJcbmNvbnN0IG9uQmVmb3JlVW5tb3VudCA9IGNyZWF0ZUhvb2soXCJidW1cIiAvKiBMaWZlY3ljbGVIb29rcy5CRUZPUkVfVU5NT1VOVCAqLyk7XHJcbmNvbnN0IG9uVW5tb3VudGVkID0gY3JlYXRlSG9vayhcInVtXCIgLyogTGlmZWN5Y2xlSG9va3MuVU5NT1VOVEVEICovKTtcclxuY29uc3Qgb25TZXJ2ZXJQcmVmZXRjaCA9IGNyZWF0ZUhvb2soXCJzcFwiIC8qIExpZmVjeWNsZUhvb2tzLlNFUlZFUl9QUkVGRVRDSCAqLyk7XHJcbmNvbnN0IG9uUmVuZGVyVHJpZ2dlcmVkID0gY3JlYXRlSG9vayhcInJ0Z1wiIC8qIExpZmVjeWNsZUhvb2tzLlJFTkRFUl9UUklHR0VSRUQgKi8pO1xyXG5jb25zdCBvblJlbmRlclRyYWNrZWQgPSBjcmVhdGVIb29rKFwicnRjXCIgLyogTGlmZWN5Y2xlSG9va3MuUkVOREVSX1RSQUNLRUQgKi8pO1xyXG5mdW5jdGlvbiBvbkVycm9yQ2FwdHVyZWQoaG9vaywgdGFyZ2V0ID0gY3VycmVudEluc3RhbmNlKSB7XHJcbiAgICBpbmplY3RIb29rKFwiZWNcIiAvKiBMaWZlY3ljbGVIb29rcy5FUlJPUl9DQVBUVVJFRCAqLywgaG9vaywgdGFyZ2V0KTtcclxufVxuXG4vKipcclxuUnVudGltZSBoZWxwZXIgZm9yIGFwcGx5aW5nIGRpcmVjdGl2ZXMgdG8gYSB2bm9kZS4gRXhhbXBsZSB1c2FnZTpcclxuXG5jb25zdCBjb21wID0gcmVzb2x2ZUNvbXBvbmVudCgnY29tcCcpXHJcbmNvbnN0IGZvbyA9IHJlc29sdmVEaXJlY3RpdmUoJ2ZvbycpXHJcbmNvbnN0IGJhciA9IHJlc29sdmVEaXJlY3RpdmUoJ2JhcicpXHJcblxucmV0dXJuIHdpdGhEaXJlY3RpdmVzKGgoY29tcCksIFtcclxuICBbZm9vLCB0aGlzLnhdLFxyXG4gIFtiYXIsIHRoaXMueV1cclxuXSlcclxuKi9cclxuZnVuY3Rpb24gdmFsaWRhdGVEaXJlY3RpdmVOYW1lKG5hbWUpIHtcclxuICAgIGlmIChpc0J1aWx0SW5EaXJlY3RpdmUobmFtZSkpIHtcclxuICAgICAgICB3YXJuKCdEbyBub3QgdXNlIGJ1aWx0LWluIGRpcmVjdGl2ZSBpZHMgYXMgY3VzdG9tIGRpcmVjdGl2ZSBpZDogJyArIG5hbWUpO1xyXG4gICAgfVxyXG59XHJcbi8qKlxyXG4gKiBBZGRzIGRpcmVjdGl2ZXMgdG8gYSBWTm9kZS5cclxuICovXHJcbmZ1bmN0aW9uIHdpdGhEaXJlY3RpdmVzKHZub2RlLCBkaXJlY3RpdmVzKSB7XHJcbiAgICBjb25zdCBpbnRlcm5hbEluc3RhbmNlID0gY3VycmVudFJlbmRlcmluZ0luc3RhbmNlO1xyXG4gICAgaWYgKGludGVybmFsSW5zdGFuY2UgPT09IG51bGwpIHtcclxuICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgd2Fybihgd2l0aERpcmVjdGl2ZXMgY2FuIG9ubHkgYmUgdXNlZCBpbnNpZGUgcmVuZGVyIGZ1bmN0aW9ucy5gKTtcclxuICAgICAgICByZXR1cm4gdm5vZGU7XHJcbiAgICB9XHJcbiAgICBjb25zdCBpbnN0YW5jZSA9IGdldEV4cG9zZVByb3h5KGludGVybmFsSW5zdGFuY2UpIHx8XHJcbiAgICAgICAgaW50ZXJuYWxJbnN0YW5jZS5wcm94eTtcclxuICAgIGNvbnN0IGJpbmRpbmdzID0gdm5vZGUuZGlycyB8fCAodm5vZGUuZGlycyA9IFtdKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlyZWN0aXZlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBbZGlyLCB2YWx1ZSwgYXJnLCBtb2RpZmllcnMgPSBFTVBUWV9PQkpdID0gZGlyZWN0aXZlc1tpXTtcclxuICAgICAgICBpZiAoaXNGdW5jdGlvbihkaXIpKSB7XHJcbiAgICAgICAgICAgIGRpciA9IHtcclxuICAgICAgICAgICAgICAgIG1vdW50ZWQ6IGRpcixcclxuICAgICAgICAgICAgICAgIHVwZGF0ZWQ6IGRpclxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGlyLmRlZXApIHtcclxuICAgICAgICAgICAgdHJhdmVyc2UodmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBiaW5kaW5ncy5wdXNoKHtcclxuICAgICAgICAgICAgZGlyLFxyXG4gICAgICAgICAgICBpbnN0YW5jZSxcclxuICAgICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICAgIG9sZFZhbHVlOiB2b2lkIDAsXHJcbiAgICAgICAgICAgIGFyZyxcclxuICAgICAgICAgICAgbW9kaWZpZXJzXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdm5vZGU7XHJcbn1cclxuZnVuY3Rpb24gaW52b2tlRGlyZWN0aXZlSG9vayh2bm9kZSwgcHJldlZOb2RlLCBpbnN0YW5jZSwgbmFtZSkge1xyXG4gICAgY29uc3QgYmluZGluZ3MgPSB2bm9kZS5kaXJzO1xyXG4gICAgY29uc3Qgb2xkQmluZGluZ3MgPSBwcmV2Vk5vZGUgJiYgcHJldlZOb2RlLmRpcnM7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJpbmRpbmdzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgYmluZGluZyA9IGJpbmRpbmdzW2ldO1xyXG4gICAgICAgIGlmIChvbGRCaW5kaW5ncykge1xyXG4gICAgICAgICAgICBiaW5kaW5nLm9sZFZhbHVlID0gb2xkQmluZGluZ3NbaV0udmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBob29rID0gYmluZGluZy5kaXJbbmFtZV07XHJcbiAgICAgICAgaWYgKGhvb2spIHtcclxuICAgICAgICAgICAgLy8gZGlzYWJsZSB0cmFja2luZyBpbnNpZGUgYWxsIGxpZmVjeWNsZSBob29rc1xyXG4gICAgICAgICAgICAvLyBzaW5jZSB0aGV5IGNhbiBwb3RlbnRpYWxseSBiZSBjYWxsZWQgaW5zaWRlIGVmZmVjdHMuXHJcbiAgICAgICAgICAgIHBhdXNlVHJhY2tpbmcoKTtcclxuICAgICAgICAgICAgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoaG9vaywgaW5zdGFuY2UsIDggLyogRXJyb3JDb2Rlcy5ESVJFQ1RJVkVfSE9PSyAqLywgW1xyXG4gICAgICAgICAgICAgICAgdm5vZGUuZWwsXHJcbiAgICAgICAgICAgICAgICBiaW5kaW5nLFxyXG4gICAgICAgICAgICAgICAgdm5vZGUsXHJcbiAgICAgICAgICAgICAgICBwcmV2Vk5vZGVcclxuICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgIHJlc2V0VHJhY2tpbmcoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cblxuY29uc3QgQ09NUE9ORU5UUyA9ICdjb21wb25lbnRzJztcclxuY29uc3QgRElSRUNUSVZFUyA9ICdkaXJlY3RpdmVzJztcclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiByZXNvbHZlQ29tcG9uZW50KG5hbWUsIG1heWJlU2VsZlJlZmVyZW5jZSkge1xyXG4gICAgcmV0dXJuIHJlc29sdmVBc3NldChDT01QT05FTlRTLCBuYW1lLCB0cnVlLCBtYXliZVNlbGZSZWZlcmVuY2UpIHx8IG5hbWU7XHJcbn1cclxuY29uc3QgTlVMTF9EWU5BTUlDX0NPTVBPTkVOVCA9IFN5bWJvbCgpO1xyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIHJlc29sdmVEeW5hbWljQ29tcG9uZW50KGNvbXBvbmVudCkge1xyXG4gICAgaWYgKGlzU3RyaW5nKGNvbXBvbmVudCkpIHtcclxuICAgICAgICByZXR1cm4gcmVzb2x2ZUFzc2V0KENPTVBPTkVOVFMsIGNvbXBvbmVudCwgZmFsc2UpIHx8IGNvbXBvbmVudDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIGludmFsaWQgdHlwZXMgd2lsbCBmYWxsdGhyb3VnaCB0byBjcmVhdGVWTm9kZSBhbmQgcmFpc2Ugd2FybmluZ1xyXG4gICAgICAgIHJldHVybiAoY29tcG9uZW50IHx8IE5VTExfRFlOQU1JQ19DT01QT05FTlQpO1xyXG4gICAgfVxyXG59XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gcmVzb2x2ZURpcmVjdGl2ZShuYW1lKSB7XHJcbiAgICByZXR1cm4gcmVzb2x2ZUFzc2V0KERJUkVDVElWRVMsIG5hbWUpO1xyXG59XHJcbi8vIGltcGxlbWVudGF0aW9uXHJcbmZ1bmN0aW9uIHJlc29sdmVBc3NldCh0eXBlLCBuYW1lLCB3YXJuTWlzc2luZyA9IHRydWUsIG1heWJlU2VsZlJlZmVyZW5jZSA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBpbnN0YW5jZSA9IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSB8fCBjdXJyZW50SW5zdGFuY2U7XHJcbiAgICBpZiAoaW5zdGFuY2UpIHtcclxuICAgICAgICBjb25zdCBDb21wb25lbnQgPSBpbnN0YW5jZS50eXBlO1xyXG4gICAgICAgIC8vIGV4cGxpY2l0IHNlbGYgbmFtZSBoYXMgaGlnaGVzdCBwcmlvcml0eVxyXG4gICAgICAgIGlmICh0eXBlID09PSBDT01QT05FTlRTKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGZOYW1lID0gZ2V0Q29tcG9uZW50TmFtZShDb21wb25lbnQsIGZhbHNlIC8qIGRvIG5vdCBpbmNsdWRlIGluZmVycmVkIG5hbWUgdG8gYXZvaWQgYnJlYWtpbmcgZXhpc3RpbmcgY29kZSAqLyk7XHJcbiAgICAgICAgICAgIGlmIChzZWxmTmFtZSAmJlxyXG4gICAgICAgICAgICAgICAgKHNlbGZOYW1lID09PSBuYW1lIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZk5hbWUgPT09IGNhbWVsaXplKG5hbWUpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZk5hbWUgPT09IGNhcGl0YWxpemUoY2FtZWxpemUobmFtZSkpKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBvbmVudDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByZXMgPSBcclxuICAgICAgICAvLyBsb2NhbCByZWdpc3RyYXRpb25cclxuICAgICAgICAvLyBjaGVjayBpbnN0YW5jZVt0eXBlXSBmaXJzdCB3aGljaCBpcyByZXNvbHZlZCBmb3Igb3B0aW9ucyBBUElcclxuICAgICAgICByZXNvbHZlKGluc3RhbmNlW3R5cGVdIHx8IENvbXBvbmVudFt0eXBlXSwgbmFtZSkgfHxcclxuICAgICAgICAgICAgLy8gZ2xvYmFsIHJlZ2lzdHJhdGlvblxyXG4gICAgICAgICAgICByZXNvbHZlKGluc3RhbmNlLmFwcENvbnRleHRbdHlwZV0sIG5hbWUpO1xyXG4gICAgICAgIGlmICghcmVzICYmIG1heWJlU2VsZlJlZmVyZW5jZSkge1xyXG4gICAgICAgICAgICAvLyBmYWxsYmFjayB0byBpbXBsaWNpdCBzZWxmLXJlZmVyZW5jZVxyXG4gICAgICAgICAgICByZXR1cm4gQ29tcG9uZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHdhcm5NaXNzaW5nICYmICFyZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgZXh0cmEgPSB0eXBlID09PSBDT01QT05FTlRTXHJcbiAgICAgICAgICAgICAgICA/IGBcXG5JZiB0aGlzIGlzIGEgbmF0aXZlIGN1c3RvbSBlbGVtZW50LCBtYWtlIHN1cmUgdG8gZXhjbHVkZSBpdCBmcm9tIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGBjb21wb25lbnQgcmVzb2x1dGlvbiB2aWEgY29tcGlsZXJPcHRpb25zLmlzQ3VzdG9tRWxlbWVudC5gXHJcbiAgICAgICAgICAgICAgICA6IGBgO1xyXG4gICAgICAgICAgICB3YXJuKGBGYWlsZWQgdG8gcmVzb2x2ZSAke3R5cGUuc2xpY2UoMCwgLTEpfTogJHtuYW1lfSR7ZXh0cmF9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB3YXJuKGByZXNvbHZlJHtjYXBpdGFsaXplKHR5cGUuc2xpY2UoMCwgLTEpKX0gYCArXHJcbiAgICAgICAgICAgIGBjYW4gb25seSBiZSB1c2VkIGluIHJlbmRlcigpIG9yIHNldHVwKCkuYCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gcmVzb2x2ZShyZWdpc3RyeSwgbmFtZSkge1xyXG4gICAgcmV0dXJuIChyZWdpc3RyeSAmJlxyXG4gICAgICAgIChyZWdpc3RyeVtuYW1lXSB8fFxyXG4gICAgICAgICAgICByZWdpc3RyeVtjYW1lbGl6ZShuYW1lKV0gfHxcclxuICAgICAgICAgICAgcmVnaXN0cnlbY2FwaXRhbGl6ZShjYW1lbGl6ZShuYW1lKSldKSk7XHJcbn1cblxuLyoqXHJcbiAqIEFjdHVhbCBpbXBsZW1lbnRhdGlvblxyXG4gKi9cclxuZnVuY3Rpb24gcmVuZGVyTGlzdChzb3VyY2UsIHJlbmRlckl0ZW0sIGNhY2hlLCBpbmRleCkge1xyXG4gICAgbGV0IHJldDtcclxuICAgIGNvbnN0IGNhY2hlZCA9IChjYWNoZSAmJiBjYWNoZVtpbmRleF0pO1xyXG4gICAgaWYgKGlzQXJyYXkoc291cmNlKSB8fCBpc1N0cmluZyhzb3VyY2UpKSB7XHJcbiAgICAgICAgcmV0ID0gbmV3IEFycmF5KHNvdXJjZS5sZW5ndGgpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gc291cmNlLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICByZXRbaV0gPSByZW5kZXJJdGVtKHNvdXJjZVtpXSwgaSwgdW5kZWZpbmVkLCBjYWNoZWQgJiYgY2FjaGVkW2ldKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0eXBlb2Ygc291cmNlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIU51bWJlci5pc0ludGVnZXIoc291cmNlKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBUaGUgdi1mb3IgcmFuZ2UgZXhwZWN0IGFuIGludGVnZXIgdmFsdWUgYnV0IGdvdCAke3NvdXJjZX0uYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldCA9IG5ldyBBcnJheShzb3VyY2UpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc291cmNlOyBpKyspIHtcclxuICAgICAgICAgICAgcmV0W2ldID0gcmVuZGVySXRlbShpICsgMSwgaSwgdW5kZWZpbmVkLCBjYWNoZWQgJiYgY2FjaGVkW2ldKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc09iamVjdChzb3VyY2UpKSB7XHJcbiAgICAgICAgaWYgKHNvdXJjZVtTeW1ib2wuaXRlcmF0b3JdKSB7XHJcbiAgICAgICAgICAgIHJldCA9IEFycmF5LmZyb20oc291cmNlLCAoaXRlbSwgaSkgPT4gcmVuZGVySXRlbShpdGVtLCBpLCB1bmRlZmluZWQsIGNhY2hlZCAmJiBjYWNoZWRbaV0pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xyXG4gICAgICAgICAgICByZXQgPSBuZXcgQXJyYXkoa2V5cy5sZW5ndGgpO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IGtleXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBrZXlzW2ldO1xyXG4gICAgICAgICAgICAgICAgcmV0W2ldID0gcmVuZGVySXRlbShzb3VyY2Vba2V5XSwga2V5LCBpLCBjYWNoZWQgJiYgY2FjaGVkW2ldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJldCA9IFtdO1xyXG4gICAgfVxyXG4gICAgaWYgKGNhY2hlKSB7XHJcbiAgICAgICAgY2FjaGVbaW5kZXhdID0gcmV0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldDtcclxufVxuXG4vKipcclxuICogQ29tcGlsZXIgcnVudGltZSBoZWxwZXIgZm9yIGNyZWF0aW5nIGR5bmFtaWMgc2xvdHMgb2JqZWN0XHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVTbG90cyhzbG90cywgZHluYW1pY1Nsb3RzKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGR5bmFtaWNTbG90cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHNsb3QgPSBkeW5hbWljU2xvdHNbaV07XHJcbiAgICAgICAgLy8gYXJyYXkgb2YgZHluYW1pYyBzbG90IGdlbmVyYXRlZCBieSA8dGVtcGxhdGUgdi1mb3I9XCIuLi5cIiAjWy4uLl0+XHJcbiAgICAgICAgaWYgKGlzQXJyYXkoc2xvdCkpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBzbG90Lmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICBzbG90c1tzbG90W2pdLm5hbWVdID0gc2xvdFtqXS5mbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChzbG90KSB7XHJcbiAgICAgICAgICAgIC8vIGNvbmRpdGlvbmFsIHNpbmdsZSBzbG90IGdlbmVyYXRlZCBieSA8dGVtcGxhdGUgdi1pZj1cIi4uLlwiICNmb28+XHJcbiAgICAgICAgICAgIHNsb3RzW3Nsb3QubmFtZV0gPSBzbG90LmtleVxyXG4gICAgICAgICAgICAgICAgPyAoLi4uYXJncykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IHNsb3QuZm4oLi4uYXJncyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLmtleSA9IHNsb3Qua2V5O1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA6IHNsb3QuZm47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHNsb3RzO1xyXG59XG5cbi8qKlxyXG4gKiBDb21waWxlciBydW50aW1lIGhlbHBlciBmb3IgcmVuZGVyaW5nIGA8c2xvdC8+YFxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gcmVuZGVyU2xvdChzbG90cywgbmFtZSwgcHJvcHMgPSB7fSwgXHJcbi8vIHRoaXMgaXMgbm90IGEgdXNlci1mYWNpbmcgZnVuY3Rpb24sIHNvIHRoZSBmYWxsYmFjayBpcyBhbHdheXMgZ2VuZXJhdGVkIGJ5XHJcbi8vIHRoZSBjb21waWxlciBhbmQgZ3VhcmFudGVlZCB0byBiZSBhIGZ1bmN0aW9uIHJldHVybmluZyBhbiBhcnJheVxyXG5mYWxsYmFjaywgbm9TbG90dGVkKSB7XHJcbiAgICBpZiAoY3VycmVudFJlbmRlcmluZ0luc3RhbmNlLmlzQ0UgfHxcclxuICAgICAgICAoY3VycmVudFJlbmRlcmluZ0luc3RhbmNlLnBhcmVudCAmJlxyXG4gICAgICAgICAgICBpc0FzeW5jV3JhcHBlcihjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UucGFyZW50KSAmJlxyXG4gICAgICAgICAgICBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UucGFyZW50LmlzQ0UpKSB7XHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKCdzbG90JywgbmFtZSA9PT0gJ2RlZmF1bHQnID8gbnVsbCA6IHsgbmFtZSB9LCBmYWxsYmFjayAmJiBmYWxsYmFjaygpKTtcclxuICAgIH1cclxuICAgIGxldCBzbG90ID0gc2xvdHNbbmFtZV07XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHNsb3QgJiYgc2xvdC5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgd2FybihgU1NSLW9wdGltaXplZCBzbG90IGZ1bmN0aW9uIGRldGVjdGVkIGluIGEgbm9uLVNTUi1vcHRpbWl6ZWQgcmVuZGVyIGAgK1xyXG4gICAgICAgICAgICBgZnVuY3Rpb24uIFlvdSBuZWVkIHRvIG1hcmsgdGhpcyBjb21wb25lbnQgd2l0aCAkZHluYW1pYy1zbG90cyBpbiB0aGUgYCArXHJcbiAgICAgICAgICAgIGBwYXJlbnQgdGVtcGxhdGUuYCk7XHJcbiAgICAgICAgc2xvdCA9ICgpID0+IFtdO1xyXG4gICAgfVxyXG4gICAgLy8gYSBjb21waWxlZCBzbG90IGRpc2FibGVzIGJsb2NrIHRyYWNraW5nIGJ5IGRlZmF1bHQgdG8gYXZvaWQgbWFudWFsXHJcbiAgICAvLyBpbnZvY2F0aW9uIGludGVyZmVyaW5nIHdpdGggdGVtcGxhdGUtYmFzZWQgYmxvY2sgdHJhY2tpbmcsIGJ1dCBpblxyXG4gICAgLy8gYHJlbmRlclNsb3RgIHdlIGNhbiBiZSBzdXJlIHRoYXQgaXQncyB0ZW1wbGF0ZS1iYXNlZCBzbyB3ZSBjYW4gZm9yY2VcclxuICAgIC8vIGVuYWJsZSBpdC5cclxuICAgIGlmIChzbG90ICYmIHNsb3QuX2MpIHtcclxuICAgICAgICBzbG90Ll9kID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBvcGVuQmxvY2soKTtcclxuICAgIGNvbnN0IHZhbGlkU2xvdENvbnRlbnQgPSBzbG90ICYmIGVuc3VyZVZhbGlkVk5vZGUoc2xvdChwcm9wcykpO1xyXG4gICAgY29uc3QgcmVuZGVyZWQgPSBjcmVhdGVCbG9jayhGcmFnbWVudCwge1xyXG4gICAgICAgIGtleTogcHJvcHMua2V5IHx8XHJcbiAgICAgICAgICAgIC8vIHNsb3QgY29udGVudCBhcnJheSBvZiBhIGR5bmFtaWMgY29uZGl0aW9uYWwgc2xvdCBtYXkgaGF2ZSBhIGJyYW5jaFxyXG4gICAgICAgICAgICAvLyBrZXkgYXR0YWNoZWQgaW4gdGhlIGBjcmVhdGVTbG90c2AgaGVscGVyLCByZXNwZWN0IHRoYXRcclxuICAgICAgICAgICAgKHZhbGlkU2xvdENvbnRlbnQgJiYgdmFsaWRTbG90Q29udGVudC5rZXkpIHx8XHJcbiAgICAgICAgICAgIGBfJHtuYW1lfWBcclxuICAgIH0sIHZhbGlkU2xvdENvbnRlbnQgfHwgKGZhbGxiYWNrID8gZmFsbGJhY2soKSA6IFtdKSwgdmFsaWRTbG90Q29udGVudCAmJiBzbG90cy5fID09PSAxIC8qIFNsb3RGbGFncy5TVEFCTEUgKi9cclxuICAgICAgICA/IDY0IC8qIFBhdGNoRmxhZ3MuU1RBQkxFX0ZSQUdNRU5UICovXHJcbiAgICAgICAgOiAtMiAvKiBQYXRjaEZsYWdzLkJBSUwgKi8pO1xyXG4gICAgaWYgKCFub1Nsb3R0ZWQgJiYgcmVuZGVyZWQuc2NvcGVJZCkge1xyXG4gICAgICAgIHJlbmRlcmVkLnNsb3RTY29wZUlkcyA9IFtyZW5kZXJlZC5zY29wZUlkICsgJy1zJ107XHJcbiAgICB9XHJcbiAgICBpZiAoc2xvdCAmJiBzbG90Ll9jKSB7XHJcbiAgICAgICAgc2xvdC5fZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVuZGVyZWQ7XHJcbn1cclxuZnVuY3Rpb24gZW5zdXJlVmFsaWRWTm9kZSh2bm9kZXMpIHtcclxuICAgIHJldHVybiB2bm9kZXMuc29tZShjaGlsZCA9PiB7XHJcbiAgICAgICAgaWYgKCFpc1ZOb2RlKGNoaWxkKSlcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IENvbW1lbnQpXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gRnJhZ21lbnQgJiZcclxuICAgICAgICAgICAgIWVuc3VyZVZhbGlkVk5vZGUoY2hpbGQuY2hpbGRyZW4pKVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9KVxyXG4gICAgICAgID8gdm5vZGVzXHJcbiAgICAgICAgOiBudWxsO1xyXG59XG5cbi8qKlxyXG4gKiBGb3IgcHJlZml4aW5nIGtleXMgaW4gdi1vbj1cIm9ialwiIHdpdGggXCJvblwiXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiB0b0hhbmRsZXJzKG9iaiwgcHJlc2VydmVDYXNlSWZOZWNlc3NhcnkpIHtcclxuICAgIGNvbnN0IHJldCA9IHt9O1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaXNPYmplY3Qob2JqKSkge1xyXG4gICAgICAgIHdhcm4oYHYtb24gd2l0aCBubyBhcmd1bWVudCBleHBlY3RzIGFuIG9iamVjdCB2YWx1ZS5gKTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XHJcbiAgICAgICAgcmV0W3ByZXNlcnZlQ2FzZUlmTmVjZXNzYXJ5ICYmIC9bQS1aXS8udGVzdChrZXkpXHJcbiAgICAgICAgICAgID8gYG9uOiR7a2V5fWBcclxuICAgICAgICAgICAgOiB0b0hhbmRsZXJLZXkoa2V5KV0gPSBvYmpba2V5XTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXQ7XHJcbn1cblxuLyoqXHJcbiAqICMyNDM3IEluIFZ1ZSAzLCBmdW5jdGlvbmFsIGNvbXBvbmVudHMgZG8gbm90IGhhdmUgYSBwdWJsaWMgaW5zdGFuY2UgcHJveHkgYnV0XHJcbiAqIHRoZXkgZXhpc3QgaW4gdGhlIGludGVybmFsIHBhcmVudCBjaGFpbi4gRm9yIGNvZGUgdGhhdCByZWxpZXMgb24gdHJhdmVyc2luZ1xyXG4gKiBwdWJsaWMgJHBhcmVudCBjaGFpbnMsIHNraXAgZnVuY3Rpb25hbCBvbmVzIGFuZCBnbyB0byB0aGUgcGFyZW50IGluc3RlYWQuXHJcbiAqL1xyXG5jb25zdCBnZXRQdWJsaWNJbnN0YW5jZSA9IChpKSA9PiB7XHJcbiAgICBpZiAoIWkpXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICBpZiAoaXNTdGF0ZWZ1bENvbXBvbmVudChpKSlcclxuICAgICAgICByZXR1cm4gZ2V0RXhwb3NlUHJveHkoaSkgfHwgaS5wcm94eTtcclxuICAgIHJldHVybiBnZXRQdWJsaWNJbnN0YW5jZShpLnBhcmVudCk7XHJcbn07XHJcbmNvbnN0IHB1YmxpY1Byb3BlcnRpZXNNYXAgPSBcclxuLy8gTW92ZSBQVVJFIG1hcmtlciB0byBuZXcgbGluZSB0byB3b3JrYXJvdW5kIGNvbXBpbGVyIGRpc2NhcmRpbmcgaXRcclxuLy8gZHVlIHRvIHR5cGUgYW5ub3RhdGlvblxyXG4vKiNfX1BVUkVfXyovIGV4dGVuZChPYmplY3QuY3JlYXRlKG51bGwpLCB7XHJcbiAgICAkOiBpID0+IGksXHJcbiAgICAkZWw6IGkgPT4gaS52bm9kZS5lbCxcclxuICAgICRkYXRhOiBpID0+IGkuZGF0YSxcclxuICAgICRwcm9wczogaSA9PiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gc2hhbGxvd1JlYWRvbmx5KGkucHJvcHMpIDogaS5wcm9wcyksXHJcbiAgICAkYXR0cnM6IGkgPT4gKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IHNoYWxsb3dSZWFkb25seShpLmF0dHJzKSA6IGkuYXR0cnMpLFxyXG4gICAgJHNsb3RzOiBpID0+ICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBzaGFsbG93UmVhZG9ubHkoaS5zbG90cykgOiBpLnNsb3RzKSxcclxuICAgICRyZWZzOiBpID0+ICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBzaGFsbG93UmVhZG9ubHkoaS5yZWZzKSA6IGkucmVmcyksXHJcbiAgICAkcGFyZW50OiBpID0+IGdldFB1YmxpY0luc3RhbmNlKGkucGFyZW50KSxcclxuICAgICRyb290OiBpID0+IGdldFB1YmxpY0luc3RhbmNlKGkucm9vdCksXHJcbiAgICAkZW1pdDogaSA9PiBpLmVtaXQsXHJcbiAgICAkb3B0aW9uczogaSA9PiAoX19WVUVfT1BUSU9OU19BUElfXyA/IHJlc29sdmVNZXJnZWRPcHRpb25zKGkpIDogaS50eXBlKSxcclxuICAgICRmb3JjZVVwZGF0ZTogaSA9PiBpLmYgfHwgKGkuZiA9ICgpID0+IHF1ZXVlSm9iKGkudXBkYXRlKSksXHJcbiAgICAkbmV4dFRpY2s6IGkgPT4gaS5uIHx8IChpLm4gPSBuZXh0VGljay5iaW5kKGkucHJveHkpKSxcclxuICAgICR3YXRjaDogaSA9PiAoX19WVUVfT1BUSU9OU19BUElfXyA/IGluc3RhbmNlV2F0Y2guYmluZChpKSA6IE5PT1ApXHJcbn0pO1xyXG5jb25zdCBpc1Jlc2VydmVkUHJlZml4ID0gKGtleSkgPT4ga2V5ID09PSAnXycgfHwga2V5ID09PSAnJCc7XHJcbmNvbnN0IFB1YmxpY0luc3RhbmNlUHJveHlIYW5kbGVycyA9IHtcclxuICAgIGdldCh7IF86IGluc3RhbmNlIH0sIGtleSkge1xyXG4gICAgICAgIGNvbnN0IHsgY3R4LCBzZXR1cFN0YXRlLCBkYXRhLCBwcm9wcywgYWNjZXNzQ2FjaGUsIHR5cGUsIGFwcENvbnRleHQgfSA9IGluc3RhbmNlO1xyXG4gICAgICAgIC8vIGZvciBpbnRlcm5hbCBmb3JtYXR0ZXJzIHRvIGtub3cgdGhhdCB0aGlzIGlzIGEgVnVlIGluc3RhbmNlXHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBrZXkgPT09ICdfX2lzVnVlJykge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gcHJpb3JpdGl6ZSA8c2NyaXB0IHNldHVwPiBiaW5kaW5ncyBkdXJpbmcgZGV2LlxyXG4gICAgICAgIC8vIHRoaXMgYWxsb3dzIGV2ZW4gcHJvcGVydGllcyB0aGF0IHN0YXJ0IHdpdGggXyBvciAkIHRvIGJlIHVzZWQgLSBzbyB0aGF0XHJcbiAgICAgICAgLy8gaXQgYWxpZ25zIHdpdGggdGhlIHByb2R1Y3Rpb24gYmVoYXZpb3Igd2hlcmUgdGhlIHJlbmRlciBmbiBpcyBpbmxpbmVkIGFuZFxyXG4gICAgICAgIC8vIGluZGVlZCBoYXMgYWNjZXNzIHRvIGFsbCBkZWNsYXJlZCB2YXJpYWJsZXMuXHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICBzZXR1cFN0YXRlICE9PSBFTVBUWV9PQkogJiZcclxuICAgICAgICAgICAgc2V0dXBTdGF0ZS5fX2lzU2NyaXB0U2V0dXAgJiZcclxuICAgICAgICAgICAgaGFzT3duKHNldHVwU3RhdGUsIGtleSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHNldHVwU3RhdGVba2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gZGF0YSAvIHByb3BzIC8gY3R4XHJcbiAgICAgICAgLy8gVGhpcyBnZXR0ZXIgZ2V0cyBjYWxsZWQgZm9yIGV2ZXJ5IHByb3BlcnR5IGFjY2VzcyBvbiB0aGUgcmVuZGVyIGNvbnRleHRcclxuICAgICAgICAvLyBkdXJpbmcgcmVuZGVyIGFuZCBpcyBhIG1ham9yIGhvdHNwb3QuIFRoZSBtb3N0IGV4cGVuc2l2ZSBwYXJ0IG9mIHRoaXNcclxuICAgICAgICAvLyBpcyB0aGUgbXVsdGlwbGUgaGFzT3duKCkgY2FsbHMuIEl0J3MgbXVjaCBmYXN0ZXIgdG8gZG8gYSBzaW1wbGUgcHJvcGVydHlcclxuICAgICAgICAvLyBhY2Nlc3Mgb24gYSBwbGFpbiBvYmplY3QsIHNvIHdlIHVzZSBhbiBhY2Nlc3NDYWNoZSBvYmplY3QgKHdpdGggbnVsbFxyXG4gICAgICAgIC8vIHByb3RvdHlwZSkgdG8gbWVtb2l6ZSB3aGF0IGFjY2VzcyB0eXBlIGEga2V5IGNvcnJlc3BvbmRzIHRvLlxyXG4gICAgICAgIGxldCBub3JtYWxpemVkUHJvcHM7XHJcbiAgICAgICAgaWYgKGtleVswXSAhPT0gJyQnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG4gPSBhY2Nlc3NDYWNoZVtrZXldO1xyXG4gICAgICAgICAgICBpZiAobiAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKG4pIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDEgLyogQWNjZXNzVHlwZXMuU0VUVVAgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXR1cFN0YXRlW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyIC8qIEFjY2Vzc1R5cGVzLkRBVEEgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0IC8qIEFjY2Vzc1R5cGVzLkNPTlRFWFQgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdHhba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDMgLyogQWNjZXNzVHlwZXMuUFJPUFMgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wc1trZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGRlZmF1bHQ6IGp1c3QgZmFsbHRocm91Z2hcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChzZXR1cFN0YXRlICE9PSBFTVBUWV9PQkogJiYgaGFzT3duKHNldHVwU3RhdGUsIGtleSkpIHtcclxuICAgICAgICAgICAgICAgIGFjY2Vzc0NhY2hlW2tleV0gPSAxIC8qIEFjY2Vzc1R5cGVzLlNFVFVQICovO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNldHVwU3RhdGVba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChkYXRhICE9PSBFTVBUWV9PQkogJiYgaGFzT3duKGRhdGEsIGtleSkpIHtcclxuICAgICAgICAgICAgICAgIGFjY2Vzc0NhY2hlW2tleV0gPSAyIC8qIEFjY2Vzc1R5cGVzLkRBVEEgKi87XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YVtrZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAvLyBvbmx5IGNhY2hlIG90aGVyIHByb3BlcnRpZXMgd2hlbiBpbnN0YW5jZSBoYXMgZGVjbGFyZWQgKHRodXMgc3RhYmxlKVxyXG4gICAgICAgICAgICAvLyBwcm9wc1xyXG4gICAgICAgICAgICAobm9ybWFsaXplZFByb3BzID0gaW5zdGFuY2UucHJvcHNPcHRpb25zWzBdKSAmJlxyXG4gICAgICAgICAgICAgICAgaGFzT3duKG5vcm1hbGl6ZWRQcm9wcywga2V5KSkge1xyXG4gICAgICAgICAgICAgICAgYWNjZXNzQ2FjaGVba2V5XSA9IDMgLyogQWNjZXNzVHlwZXMuUFJPUFMgKi87XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHNba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChjdHggIT09IEVNUFRZX09CSiAmJiBoYXNPd24oY3R4LCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICBhY2Nlc3NDYWNoZVtrZXldID0gNCAvKiBBY2Nlc3NUeXBlcy5DT05URVhUICovO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGN0eFtrZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKCFfX1ZVRV9PUFRJT05TX0FQSV9fIHx8IHNob3VsZENhY2hlQWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICBhY2Nlc3NDYWNoZVtrZXldID0gMCAvKiBBY2Nlc3NUeXBlcy5PVEhFUiAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBwdWJsaWNHZXR0ZXIgPSBwdWJsaWNQcm9wZXJ0aWVzTWFwW2tleV07XHJcbiAgICAgICAgbGV0IGNzc01vZHVsZSwgZ2xvYmFsUHJvcGVydGllcztcclxuICAgICAgICAvLyBwdWJsaWMgJHh4eCBwcm9wZXJ0aWVzXHJcbiAgICAgICAgaWYgKHB1YmxpY0dldHRlcikge1xyXG4gICAgICAgICAgICBpZiAoa2V5ID09PSAnJGF0dHJzJykge1xyXG4gICAgICAgICAgICAgICAgdHJhY2soaW5zdGFuY2UsIFwiZ2V0XCIgLyogVHJhY2tPcFR5cGVzLkdFVCAqLywga2V5KTtcclxuICAgICAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBtYXJrQXR0cnNBY2Nlc3NlZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBwdWJsaWNHZXR0ZXIoaW5zdGFuY2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChcclxuICAgICAgICAvLyBjc3MgbW9kdWxlIChpbmplY3RlZCBieSB2dWUtbG9hZGVyKVxyXG4gICAgICAgIChjc3NNb2R1bGUgPSB0eXBlLl9fY3NzTW9kdWxlcykgJiZcclxuICAgICAgICAgICAgKGNzc01vZHVsZSA9IGNzc01vZHVsZVtrZXldKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gY3NzTW9kdWxlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChjdHggIT09IEVNUFRZX09CSiAmJiBoYXNPd24oY3R4LCBrZXkpKSB7XHJcbiAgICAgICAgICAgIC8vIHVzZXIgbWF5IHNldCBjdXN0b20gcHJvcGVydGllcyB0byBgdGhpc2AgdGhhdCBzdGFydCB3aXRoIGAkYFxyXG4gICAgICAgICAgICBhY2Nlc3NDYWNoZVtrZXldID0gNCAvKiBBY2Nlc3NUeXBlcy5DT05URVhUICovO1xyXG4gICAgICAgICAgICByZXR1cm4gY3R4W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKFxyXG4gICAgICAgIC8vIGdsb2JhbCBwcm9wZXJ0aWVzXHJcbiAgICAgICAgKChnbG9iYWxQcm9wZXJ0aWVzID0gYXBwQ29udGV4dC5jb25maWcuZ2xvYmFsUHJvcGVydGllcyksXHJcbiAgICAgICAgICAgIGhhc093bihnbG9iYWxQcm9wZXJ0aWVzLCBrZXkpKSkge1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2xvYmFsUHJvcGVydGllc1trZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UgJiZcclxuICAgICAgICAgICAgKCFpc1N0cmluZyhrZXkpIHx8XHJcbiAgICAgICAgICAgICAgICAvLyAjMTA5MSBhdm9pZCBpbnRlcm5hbCBpc1JlZi9pc1ZOb2RlIGNoZWNrcyBvbiBjb21wb25lbnQgaW5zdGFuY2UgbGVhZGluZ1xyXG4gICAgICAgICAgICAgICAgLy8gdG8gaW5maW5pdGUgd2FybmluZyBsb29wXHJcbiAgICAgICAgICAgICAgICBrZXkuaW5kZXhPZignX192JykgIT09IDApKSB7XHJcbiAgICAgICAgICAgIGlmIChkYXRhICE9PSBFTVBUWV9PQkogJiYgaXNSZXNlcnZlZFByZWZpeChrZXlbMF0pICYmIGhhc093bihkYXRhLCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBQcm9wZXJ0eSAke0pTT04uc3RyaW5naWZ5KGtleSl9IG11c3QgYmUgYWNjZXNzZWQgdmlhICRkYXRhIGJlY2F1c2UgaXQgc3RhcnRzIHdpdGggYSByZXNlcnZlZCBgICtcclxuICAgICAgICAgICAgICAgICAgICBgY2hhcmFjdGVyIChcIiRcIiBvciBcIl9cIikgYW5kIGlzIG5vdCBwcm94aWVkIG9uIHRoZSByZW5kZXIgY29udGV4dC5gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChpbnN0YW5jZSA9PT0gY3VycmVudFJlbmRlcmluZ0luc3RhbmNlKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBQcm9wZXJ0eSAke0pTT04uc3RyaW5naWZ5KGtleSl9IHdhcyBhY2Nlc3NlZCBkdXJpbmcgcmVuZGVyIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGBidXQgaXMgbm90IGRlZmluZWQgb24gaW5zdGFuY2UuYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgc2V0KHsgXzogaW5zdGFuY2UgfSwga2V5LCB2YWx1ZSkge1xyXG4gICAgICAgIGNvbnN0IHsgZGF0YSwgc2V0dXBTdGF0ZSwgY3R4IH0gPSBpbnN0YW5jZTtcclxuICAgICAgICBpZiAoc2V0dXBTdGF0ZSAhPT0gRU1QVFlfT0JKICYmIGhhc093bihzZXR1cFN0YXRlLCBrZXkpKSB7XHJcbiAgICAgICAgICAgIHNldHVwU3RhdGVba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZGF0YSAhPT0gRU1QVFlfT0JKICYmIGhhc093bihkYXRhLCBrZXkpKSB7XHJcbiAgICAgICAgICAgIGRhdGFba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaGFzT3duKGluc3RhbmNlLnByb3BzLCBrZXkpKSB7XHJcbiAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgd2FybihgQXR0ZW1wdGluZyB0byBtdXRhdGUgcHJvcCBcIiR7a2V5fVwiLiBQcm9wcyBhcmUgcmVhZG9ubHkuYCwgaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChrZXlbMF0gPT09ICckJyAmJiBrZXkuc2xpY2UoMSkgaW4gaW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICB3YXJuKGBBdHRlbXB0aW5nIHRvIG11dGF0ZSBwdWJsaWMgcHJvcGVydHkgXCIke2tleX1cIi4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYFByb3BlcnRpZXMgc3RhcnRpbmcgd2l0aCAkIGFyZSByZXNlcnZlZCBhbmQgcmVhZG9ubHkuYCwgaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGtleSBpbiBpbnN0YW5jZS5hcHBDb250ZXh0LmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3R4LCBrZXksIHtcclxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjdHhba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSxcclxuICAgIGhhcyh7IF86IHsgZGF0YSwgc2V0dXBTdGF0ZSwgYWNjZXNzQ2FjaGUsIGN0eCwgYXBwQ29udGV4dCwgcHJvcHNPcHRpb25zIH0gfSwga2V5KSB7XHJcbiAgICAgICAgbGV0IG5vcm1hbGl6ZWRQcm9wcztcclxuICAgICAgICByZXR1cm4gKCEhYWNjZXNzQ2FjaGVba2V5XSB8fFxyXG4gICAgICAgICAgICAoZGF0YSAhPT0gRU1QVFlfT0JKICYmIGhhc093bihkYXRhLCBrZXkpKSB8fFxyXG4gICAgICAgICAgICAoc2V0dXBTdGF0ZSAhPT0gRU1QVFlfT0JKICYmIGhhc093bihzZXR1cFN0YXRlLCBrZXkpKSB8fFxyXG4gICAgICAgICAgICAoKG5vcm1hbGl6ZWRQcm9wcyA9IHByb3BzT3B0aW9uc1swXSkgJiYgaGFzT3duKG5vcm1hbGl6ZWRQcm9wcywga2V5KSkgfHxcclxuICAgICAgICAgICAgaGFzT3duKGN0eCwga2V5KSB8fFxyXG4gICAgICAgICAgICBoYXNPd24ocHVibGljUHJvcGVydGllc01hcCwga2V5KSB8fFxyXG4gICAgICAgICAgICBoYXNPd24oYXBwQ29udGV4dC5jb25maWcuZ2xvYmFsUHJvcGVydGllcywga2V5KSk7XHJcbiAgICB9LFxyXG4gICAgZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIGRlc2NyaXB0b3IpIHtcclxuICAgICAgICBpZiAoZGVzY3JpcHRvci5nZXQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAvLyBpbnZhbGlkYXRlIGtleSBjYWNoZSBvZiBhIGdldHRlciBiYXNlZCBwcm9wZXJ0eSAjNTQxN1xyXG4gICAgICAgICAgICB0YXJnZXQuXy5hY2Nlc3NDYWNoZVtrZXldID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaGFzT3duKGRlc2NyaXB0b3IsICd2YWx1ZScpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0KHRhcmdldCwga2V5LCBkZXNjcmlwdG9yLnZhbHVlLCBudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIGRlc2NyaXB0b3IpO1xyXG4gICAgfVxyXG59O1xyXG5pZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFmYWxzZSkge1xyXG4gICAgUHVibGljSW5zdGFuY2VQcm94eUhhbmRsZXJzLm93bktleXMgPSAodGFyZ2V0KSA9PiB7XHJcbiAgICAgICAgd2FybihgQXZvaWQgYXBwIGxvZ2ljIHRoYXQgcmVsaWVzIG9uIGVudW1lcmF0aW5nIGtleXMgb24gYSBjb21wb25lbnQgaW5zdGFuY2UuIGAgK1xyXG4gICAgICAgICAgICBgVGhlIGtleXMgd2lsbCBiZSBlbXB0eSBpbiBwcm9kdWN0aW9uIG1vZGUgdG8gYXZvaWQgcGVyZm9ybWFuY2Ugb3ZlcmhlYWQuYCk7XHJcbiAgICAgICAgcmV0dXJuIFJlZmxlY3Qub3duS2V5cyh0YXJnZXQpO1xyXG4gICAgfTtcclxufVxyXG5jb25zdCBSdW50aW1lQ29tcGlsZWRQdWJsaWNJbnN0YW5jZVByb3h5SGFuZGxlcnMgPSAvKiNfX1BVUkVfXyovIGV4dGVuZCh7fSwgUHVibGljSW5zdGFuY2VQcm94eUhhbmRsZXJzLCB7XHJcbiAgICBnZXQodGFyZ2V0LCBrZXkpIHtcclxuICAgICAgICAvLyBmYXN0IHBhdGggZm9yIHVuc2NvcGFibGVzIHdoZW4gdXNpbmcgYHdpdGhgIGJsb2NrXHJcbiAgICAgICAgaWYgKGtleSA9PT0gU3ltYm9sLnVuc2NvcGFibGVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFB1YmxpY0luc3RhbmNlUHJveHlIYW5kbGVycy5nZXQodGFyZ2V0LCBrZXksIHRhcmdldCk7XHJcbiAgICB9LFxyXG4gICAgaGFzKF8sIGtleSkge1xyXG4gICAgICAgIGNvbnN0IGhhcyA9IGtleVswXSAhPT0gJ18nICYmICFpc0dsb2JhbGx5V2hpdGVsaXN0ZWQoa2V5KTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFoYXMgJiYgUHVibGljSW5zdGFuY2VQcm94eUhhbmRsZXJzLmhhcyhfLCBrZXkpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYFByb3BlcnR5ICR7SlNPTi5zdHJpbmdpZnkoa2V5KX0gc2hvdWxkIG5vdCBzdGFydCB3aXRoIF8gd2hpY2ggaXMgYSByZXNlcnZlZCBwcmVmaXggZm9yIFZ1ZSBpbnRlcm5hbHMuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBoYXM7XHJcbiAgICB9XHJcbn0pO1xyXG4vLyBkZXYgb25seVxyXG4vLyBJbiBkZXYgbW9kZSwgdGhlIHByb3h5IHRhcmdldCBleHBvc2VzIHRoZSBzYW1lIHByb3BlcnRpZXMgYXMgc2VlbiBvbiBgdGhpc2BcclxuLy8gZm9yIGVhc2llciBjb25zb2xlIGluc3BlY3Rpb24uIEluIHByb2QgbW9kZSBpdCB3aWxsIGJlIGFuIGVtcHR5IG9iamVjdCBzb1xyXG4vLyB0aGVzZSBwcm9wZXJ0aWVzIGRlZmluaXRpb25zIGNhbiBiZSBza2lwcGVkLlxyXG5mdW5jdGlvbiBjcmVhdGVEZXZSZW5kZXJDb250ZXh0KGluc3RhbmNlKSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSB7fTtcclxuICAgIC8vIGV4cG9zZSBpbnRlcm5hbCBpbnN0YW5jZSBmb3IgcHJveHkgaGFuZGxlcnNcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGBfYCwge1xyXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcclxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgICAgICBnZXQ6ICgpID0+IGluc3RhbmNlXHJcbiAgICB9KTtcclxuICAgIC8vIGV4cG9zZSBwdWJsaWMgcHJvcGVydGllc1xyXG4gICAgT2JqZWN0LmtleXMocHVibGljUHJvcGVydGllc01hcCkuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xyXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBnZXQ6ICgpID0+IHB1YmxpY1Byb3BlcnRpZXNNYXBba2V5XShpbnN0YW5jZSksXHJcbiAgICAgICAgICAgIC8vIGludGVyY2VwdGVkIGJ5IHRoZSBwcm94eSBzbyBubyBuZWVkIGZvciBpbXBsZW1lbnRhdGlvbixcclxuICAgICAgICAgICAgLy8gYnV0IG5lZWRlZCB0byBwcmV2ZW50IHNldCBlcnJvcnNcclxuICAgICAgICAgICAgc2V0OiBOT09QXHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0YXJnZXQ7XHJcbn1cclxuLy8gZGV2IG9ubHlcclxuZnVuY3Rpb24gZXhwb3NlUHJvcHNPblJlbmRlckNvbnRleHQoaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IHsgY3R4LCBwcm9wc09wdGlvbnM6IFtwcm9wc09wdGlvbnNdIH0gPSBpbnN0YW5jZTtcclxuICAgIGlmIChwcm9wc09wdGlvbnMpIHtcclxuICAgICAgICBPYmplY3Qua2V5cyhwcm9wc09wdGlvbnMpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGN0eCwga2V5LCB7XHJcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiBpbnN0YW5jZS5wcm9wc1trZXldLFxyXG4gICAgICAgICAgICAgICAgc2V0OiBOT09QXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbi8vIGRldiBvbmx5XHJcbmZ1bmN0aW9uIGV4cG9zZVNldHVwU3RhdGVPblJlbmRlckNvbnRleHQoaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IHsgY3R4LCBzZXR1cFN0YXRlIH0gPSBpbnN0YW5jZTtcclxuICAgIE9iamVjdC5rZXlzKHRvUmF3KHNldHVwU3RhdGUpKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgaWYgKCFzZXR1cFN0YXRlLl9faXNTY3JpcHRTZXR1cCkge1xyXG4gICAgICAgICAgICBpZiAoaXNSZXNlcnZlZFByZWZpeChrZXlbMF0pKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBzZXR1cCgpIHJldHVybiBwcm9wZXJ0eSAke0pTT04uc3RyaW5naWZ5KGtleSl9IHNob3VsZCBub3Qgc3RhcnQgd2l0aCBcIiRcIiBvciBcIl9cIiBgICtcclxuICAgICAgICAgICAgICAgICAgICBgd2hpY2ggYXJlIHJlc2VydmVkIHByZWZpeGVzIGZvciBWdWUgaW50ZXJuYWxzLmApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdHgsIGtleSwge1xyXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGdldDogKCkgPT4gc2V0dXBTdGF0ZVtrZXldLFxyXG4gICAgICAgICAgICAgICAgc2V0OiBOT09QXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUR1cGxpY2F0ZUNoZWNrZXIoKSB7XHJcbiAgICBjb25zdCBjYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbiAgICByZXR1cm4gKHR5cGUsIGtleSkgPT4ge1xyXG4gICAgICAgIGlmIChjYWNoZVtrZXldKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYCR7dHlwZX0gcHJvcGVydHkgXCIke2tleX1cIiBpcyBhbHJlYWR5IGRlZmluZWQgaW4gJHtjYWNoZVtrZXldfS5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNhY2hlW2tleV0gPSB0eXBlO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cclxubGV0IHNob3VsZENhY2hlQWNjZXNzID0gdHJ1ZTtcclxuZnVuY3Rpb24gYXBwbHlPcHRpb25zKGluc3RhbmNlKSB7XHJcbiAgICBjb25zdCBvcHRpb25zID0gcmVzb2x2ZU1lcmdlZE9wdGlvbnMoaW5zdGFuY2UpO1xyXG4gICAgY29uc3QgcHVibGljVGhpcyA9IGluc3RhbmNlLnByb3h5O1xyXG4gICAgY29uc3QgY3R4ID0gaW5zdGFuY2UuY3R4O1xyXG4gICAgLy8gZG8gbm90IGNhY2hlIHByb3BlcnR5IGFjY2VzcyBvbiBwdWJsaWMgcHJveHkgZHVyaW5nIHN0YXRlIGluaXRpYWxpemF0aW9uXHJcbiAgICBzaG91bGRDYWNoZUFjY2VzcyA9IGZhbHNlO1xyXG4gICAgLy8gY2FsbCBiZWZvcmVDcmVhdGUgZmlyc3QgYmVmb3JlIGFjY2Vzc2luZyBvdGhlciBvcHRpb25zIHNpbmNlXHJcbiAgICAvLyB0aGUgaG9vayBtYXkgbXV0YXRlIHJlc29sdmVkIG9wdGlvbnMgKCMyNzkxKVxyXG4gICAgaWYgKG9wdGlvbnMuYmVmb3JlQ3JlYXRlKSB7XHJcbiAgICAgICAgY2FsbEhvb2sob3B0aW9ucy5iZWZvcmVDcmVhdGUsIGluc3RhbmNlLCBcImJjXCIgLyogTGlmZWN5Y2xlSG9va3MuQkVGT1JFX0NSRUFURSAqLyk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IFxyXG4gICAgLy8gc3RhdGVcclxuICAgIGRhdGE6IGRhdGFPcHRpb25zLCBjb21wdXRlZDogY29tcHV0ZWRPcHRpb25zLCBtZXRob2RzLCB3YXRjaDogd2F0Y2hPcHRpb25zLCBwcm92aWRlOiBwcm92aWRlT3B0aW9ucywgaW5qZWN0OiBpbmplY3RPcHRpb25zLCBcclxuICAgIC8vIGxpZmVjeWNsZVxyXG4gICAgY3JlYXRlZCwgYmVmb3JlTW91bnQsIG1vdW50ZWQsIGJlZm9yZVVwZGF0ZSwgdXBkYXRlZCwgYWN0aXZhdGVkLCBkZWFjdGl2YXRlZCwgYmVmb3JlRGVzdHJveSwgYmVmb3JlVW5tb3VudCwgZGVzdHJveWVkLCB1bm1vdW50ZWQsIHJlbmRlciwgcmVuZGVyVHJhY2tlZCwgcmVuZGVyVHJpZ2dlcmVkLCBlcnJvckNhcHR1cmVkLCBzZXJ2ZXJQcmVmZXRjaCwgXHJcbiAgICAvLyBwdWJsaWMgQVBJXHJcbiAgICBleHBvc2UsIGluaGVyaXRBdHRycywgXHJcbiAgICAvLyBhc3NldHNcclxuICAgIGNvbXBvbmVudHMsIGRpcmVjdGl2ZXMsIGZpbHRlcnMgfSA9IG9wdGlvbnM7XHJcbiAgICBjb25zdCBjaGVja0R1cGxpY2F0ZVByb3BlcnRpZXMgPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBjcmVhdGVEdXBsaWNhdGVDaGVja2VyKCkgOiBudWxsO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGNvbnN0IFtwcm9wc09wdGlvbnNdID0gaW5zdGFuY2UucHJvcHNPcHRpb25zO1xyXG4gICAgICAgIGlmIChwcm9wc09wdGlvbnMpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcHJvcHNPcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBjaGVja0R1cGxpY2F0ZVByb3BlcnRpZXMoXCJQcm9wc1wiIC8qIE9wdGlvblR5cGVzLlBST1BTICovLCBrZXkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gb3B0aW9ucyBpbml0aWFsaXphdGlvbiBvcmRlciAodG8gYmUgY29uc2lzdGVudCB3aXRoIFZ1ZSAyKTpcclxuICAgIC8vIC0gcHJvcHMgKGFscmVhZHkgZG9uZSBvdXRzaWRlIG9mIHRoaXMgZnVuY3Rpb24pXHJcbiAgICAvLyAtIGluamVjdFxyXG4gICAgLy8gLSBtZXRob2RzXHJcbiAgICAvLyAtIGRhdGEgKGRlZmVycmVkIHNpbmNlIGl0IHJlbGllcyBvbiBgdGhpc2AgYWNjZXNzKVxyXG4gICAgLy8gLSBjb21wdXRlZFxyXG4gICAgLy8gLSB3YXRjaCAoZGVmZXJyZWQgc2luY2UgaXQgcmVsaWVzIG9uIGB0aGlzYCBhY2Nlc3MpXHJcbiAgICBpZiAoaW5qZWN0T3B0aW9ucykge1xyXG4gICAgICAgIHJlc29sdmVJbmplY3Rpb25zKGluamVjdE9wdGlvbnMsIGN0eCwgY2hlY2tEdXBsaWNhdGVQcm9wZXJ0aWVzLCBpbnN0YW5jZS5hcHBDb250ZXh0LmNvbmZpZy51bndyYXBJbmplY3RlZFJlZik7XHJcbiAgICB9XHJcbiAgICBpZiAobWV0aG9kcykge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG1ldGhvZHMpIHtcclxuICAgICAgICAgICAgY29uc3QgbWV0aG9kSGFuZGxlciA9IG1ldGhvZHNba2V5XTtcclxuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24obWV0aG9kSGFuZGxlcikpIHtcclxuICAgICAgICAgICAgICAgIC8vIEluIGRldiBtb2RlLCB3ZSB1c2UgdGhlIGBjcmVhdGVSZW5kZXJDb250ZXh0YCBmdW5jdGlvbiB0byBkZWZpbmVcclxuICAgICAgICAgICAgICAgIC8vIG1ldGhvZHMgdG8gdGhlIHByb3h5IHRhcmdldCwgYW5kIHRob3NlIGFyZSByZWFkLW9ubHkgYnV0XHJcbiAgICAgICAgICAgICAgICAvLyByZWNvbmZpZ3VyYWJsZSwgc28gaXQgbmVlZHMgdG8gYmUgcmVkZWZpbmVkIGhlcmVcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3R4LCBrZXksIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG1ldGhvZEhhbmRsZXIuYmluZChwdWJsaWNUaGlzKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3R4W2tleV0gPSBtZXRob2RIYW5kbGVyLmJpbmQocHVibGljVGhpcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tEdXBsaWNhdGVQcm9wZXJ0aWVzKFwiTWV0aG9kc1wiIC8qIE9wdGlvblR5cGVzLk1FVEhPRFMgKi8sIGtleSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBNZXRob2QgXCIke2tleX1cIiBoYXMgdHlwZSBcIiR7dHlwZW9mIG1ldGhvZEhhbmRsZXJ9XCIgaW4gdGhlIGNvbXBvbmVudCBkZWZpbml0aW9uLiBgICtcclxuICAgICAgICAgICAgICAgICAgICBgRGlkIHlvdSByZWZlcmVuY2UgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseT9gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChkYXRhT3B0aW9ucykge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzRnVuY3Rpb24oZGF0YU9wdGlvbnMpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYFRoZSBkYXRhIG9wdGlvbiBtdXN0IGJlIGEgZnVuY3Rpb24uIGAgK1xyXG4gICAgICAgICAgICAgICAgYFBsYWluIG9iamVjdCB1c2FnZSBpcyBubyBsb25nZXIgc3VwcG9ydGVkLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBkYXRhID0gZGF0YU9wdGlvbnMuY2FsbChwdWJsaWNUaGlzLCBwdWJsaWNUaGlzKTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGlzUHJvbWlzZShkYXRhKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBkYXRhKCkgcmV0dXJuZWQgYSBQcm9taXNlIC0gbm90ZSBkYXRhKCkgY2Fubm90IGJlIGFzeW5jOyBJZiB5b3UgYCArXHJcbiAgICAgICAgICAgICAgICBgaW50ZW5kIHRvIHBlcmZvcm0gZGF0YSBmZXRjaGluZyBiZWZvcmUgY29tcG9uZW50IHJlbmRlcnMsIHVzZSBgICtcclxuICAgICAgICAgICAgICAgIGBhc3luYyBzZXR1cCgpICsgPFN1c3BlbnNlPi5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFpc09iamVjdChkYXRhKSkge1xyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgd2FybihgZGF0YSgpIHNob3VsZCByZXR1cm4gYW4gb2JqZWN0LmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaW5zdGFuY2UuZGF0YSA9IHJlYWN0aXZlKGRhdGEpO1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tEdXBsaWNhdGVQcm9wZXJ0aWVzKFwiRGF0YVwiIC8qIE9wdGlvblR5cGVzLkRBVEEgKi8sIGtleSk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZXhwb3NlIGRhdGEgb24gY3R4IGR1cmluZyBkZXZcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzUmVzZXJ2ZWRQcmVmaXgoa2V5WzBdKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3R4LCBrZXksIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQ6ICgpID0+IGRhdGFba2V5XSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldDogTk9PUFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBzdGF0ZSBpbml0aWFsaXphdGlvbiBjb21wbGV0ZSBhdCB0aGlzIHBvaW50IC0gc3RhcnQgY2FjaGluZyBhY2Nlc3NcclxuICAgIHNob3VsZENhY2hlQWNjZXNzID0gdHJ1ZTtcclxuICAgIGlmIChjb21wdXRlZE9wdGlvbnMpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBjb21wdXRlZE9wdGlvbnMpIHtcclxuICAgICAgICAgICAgY29uc3Qgb3B0ID0gY29tcHV0ZWRPcHRpb25zW2tleV07XHJcbiAgICAgICAgICAgIGNvbnN0IGdldCA9IGlzRnVuY3Rpb24ob3B0KVxyXG4gICAgICAgICAgICAgICAgPyBvcHQuYmluZChwdWJsaWNUaGlzLCBwdWJsaWNUaGlzKVxyXG4gICAgICAgICAgICAgICAgOiBpc0Z1bmN0aW9uKG9wdC5nZXQpXHJcbiAgICAgICAgICAgICAgICAgICAgPyBvcHQuZ2V0LmJpbmQocHVibGljVGhpcywgcHVibGljVGhpcylcclxuICAgICAgICAgICAgICAgICAgICA6IE5PT1A7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgZ2V0ID09PSBOT09QKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBDb21wdXRlZCBwcm9wZXJ0eSBcIiR7a2V5fVwiIGhhcyBubyBnZXR0ZXIuYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3Qgc2V0ID0gIWlzRnVuY3Rpb24ob3B0KSAmJiBpc0Z1bmN0aW9uKG9wdC5zZXQpXHJcbiAgICAgICAgICAgICAgICA/IG9wdC5zZXQuYmluZChwdWJsaWNUaGlzKVxyXG4gICAgICAgICAgICAgICAgOiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICAgICAgICAgICAgICA/ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FybihgV3JpdGUgb3BlcmF0aW9uIGZhaWxlZDogY29tcHV0ZWQgcHJvcGVydHkgXCIke2tleX1cIiBpcyByZWFkb25seS5gKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgOiBOT09QO1xyXG4gICAgICAgICAgICBjb25zdCBjID0gY29tcHV0ZWQoe1xyXG4gICAgICAgICAgICAgICAgZ2V0LFxyXG4gICAgICAgICAgICAgICAgc2V0XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3R4LCBrZXksIHtcclxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBnZXQ6ICgpID0+IGMudmFsdWUsXHJcbiAgICAgICAgICAgICAgICBzZXQ6IHYgPT4gKGMudmFsdWUgPSB2KVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgY2hlY2tEdXBsaWNhdGVQcm9wZXJ0aWVzKFwiQ29tcHV0ZWRcIiAvKiBPcHRpb25UeXBlcy5DT01QVVRFRCAqLywga2V5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh3YXRjaE9wdGlvbnMpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB3YXRjaE9wdGlvbnMpIHtcclxuICAgICAgICAgICAgY3JlYXRlV2F0Y2hlcih3YXRjaE9wdGlvbnNba2V5XSwgY3R4LCBwdWJsaWNUaGlzLCBrZXkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChwcm92aWRlT3B0aW9ucykge1xyXG4gICAgICAgIGNvbnN0IHByb3ZpZGVzID0gaXNGdW5jdGlvbihwcm92aWRlT3B0aW9ucylcclxuICAgICAgICAgICAgPyBwcm92aWRlT3B0aW9ucy5jYWxsKHB1YmxpY1RoaXMpXHJcbiAgICAgICAgICAgIDogcHJvdmlkZU9wdGlvbnM7XHJcbiAgICAgICAgUmVmbGVjdC5vd25LZXlzKHByb3ZpZGVzKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgICAgIHByb3ZpZGUoa2V5LCBwcm92aWRlc1trZXldKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChjcmVhdGVkKSB7XHJcbiAgICAgICAgY2FsbEhvb2soY3JlYXRlZCwgaW5zdGFuY2UsIFwiY1wiIC8qIExpZmVjeWNsZUhvb2tzLkNSRUFURUQgKi8pO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gcmVnaXN0ZXJMaWZlY3ljbGVIb29rKHJlZ2lzdGVyLCBob29rKSB7XHJcbiAgICAgICAgaWYgKGlzQXJyYXkoaG9vaykpIHtcclxuICAgICAgICAgICAgaG9vay5mb3JFYWNoKF9ob29rID0+IHJlZ2lzdGVyKF9ob29rLmJpbmQocHVibGljVGhpcykpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaG9vaykge1xyXG4gICAgICAgICAgICByZWdpc3Rlcihob29rLmJpbmQocHVibGljVGhpcykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvbkJlZm9yZU1vdW50LCBiZWZvcmVNb3VudCk7XHJcbiAgICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25Nb3VudGVkLCBtb3VudGVkKTtcclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvbkJlZm9yZVVwZGF0ZSwgYmVmb3JlVXBkYXRlKTtcclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvblVwZGF0ZWQsIHVwZGF0ZWQpO1xyXG4gICAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uQWN0aXZhdGVkLCBhY3RpdmF0ZWQpO1xyXG4gICAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uRGVhY3RpdmF0ZWQsIGRlYWN0aXZhdGVkKTtcclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvbkVycm9yQ2FwdHVyZWQsIGVycm9yQ2FwdHVyZWQpO1xyXG4gICAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uUmVuZGVyVHJhY2tlZCwgcmVuZGVyVHJhY2tlZCk7XHJcbiAgICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25SZW5kZXJUcmlnZ2VyZWQsIHJlbmRlclRyaWdnZXJlZCk7XHJcbiAgICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25CZWZvcmVVbm1vdW50LCBiZWZvcmVVbm1vdW50KTtcclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvblVubW91bnRlZCwgdW5tb3VudGVkKTtcclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvblNlcnZlclByZWZldGNoLCBzZXJ2ZXJQcmVmZXRjaCk7XHJcbiAgICBpZiAoaXNBcnJheShleHBvc2UpKSB7XHJcbiAgICAgICAgaWYgKGV4cG9zZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgY29uc3QgZXhwb3NlZCA9IGluc3RhbmNlLmV4cG9zZWQgfHwgKGluc3RhbmNlLmV4cG9zZWQgPSB7fSk7XHJcbiAgICAgICAgICAgIGV4cG9zZS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3NlZCwga2V5LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiBwdWJsaWNUaGlzW2tleV0sXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0OiB2YWwgPT4gKHB1YmxpY1RoaXNba2V5XSA9IHZhbClcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoIWluc3RhbmNlLmV4cG9zZWQpIHtcclxuICAgICAgICAgICAgaW5zdGFuY2UuZXhwb3NlZCA9IHt9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIG9wdGlvbnMgdGhhdCBhcmUgaGFuZGxlZCB3aGVuIGNyZWF0aW5nIHRoZSBpbnN0YW5jZSBidXQgYWxzbyBuZWVkIHRvIGJlXHJcbiAgICAvLyBhcHBsaWVkIGZyb20gbWl4aW5zXHJcbiAgICBpZiAocmVuZGVyICYmIGluc3RhbmNlLnJlbmRlciA9PT0gTk9PUCkge1xyXG4gICAgICAgIGluc3RhbmNlLnJlbmRlciA9IHJlbmRlcjtcclxuICAgIH1cclxuICAgIGlmIChpbmhlcml0QXR0cnMgIT0gbnVsbCkge1xyXG4gICAgICAgIGluc3RhbmNlLmluaGVyaXRBdHRycyA9IGluaGVyaXRBdHRycztcclxuICAgIH1cclxuICAgIC8vIGFzc2V0IG9wdGlvbnMuXHJcbiAgICBpZiAoY29tcG9uZW50cylcclxuICAgICAgICBpbnN0YW5jZS5jb21wb25lbnRzID0gY29tcG9uZW50cztcclxuICAgIGlmIChkaXJlY3RpdmVzKVxyXG4gICAgICAgIGluc3RhbmNlLmRpcmVjdGl2ZXMgPSBkaXJlY3RpdmVzO1xyXG59XHJcbmZ1bmN0aW9uIHJlc29sdmVJbmplY3Rpb25zKGluamVjdE9wdGlvbnMsIGN0eCwgY2hlY2tEdXBsaWNhdGVQcm9wZXJ0aWVzID0gTk9PUCwgdW53cmFwUmVmID0gZmFsc2UpIHtcclxuICAgIGlmIChpc0FycmF5KGluamVjdE9wdGlvbnMpKSB7XHJcbiAgICAgICAgaW5qZWN0T3B0aW9ucyA9IG5vcm1hbGl6ZUluamVjdChpbmplY3RPcHRpb25zKTtcclxuICAgIH1cclxuICAgIGZvciAoY29uc3Qga2V5IGluIGluamVjdE9wdGlvbnMpIHtcclxuICAgICAgICBjb25zdCBvcHQgPSBpbmplY3RPcHRpb25zW2tleV07XHJcbiAgICAgICAgbGV0IGluamVjdGVkO1xyXG4gICAgICAgIGlmIChpc09iamVjdChvcHQpKSB7XHJcbiAgICAgICAgICAgIGlmICgnZGVmYXVsdCcgaW4gb3B0KSB7XHJcbiAgICAgICAgICAgICAgICBpbmplY3RlZCA9IGluamVjdChvcHQuZnJvbSB8fCBrZXksIG9wdC5kZWZhdWx0LCB0cnVlIC8qIHRyZWF0IGRlZmF1bHQgZnVuY3Rpb24gYXMgZmFjdG9yeSAqLyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpbmplY3RlZCA9IGluamVjdChvcHQuZnJvbSB8fCBrZXkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpbmplY3RlZCA9IGluamVjdChvcHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNSZWYoaW5qZWN0ZWQpKSB7XHJcbiAgICAgICAgICAgIC8vIFRPRE8gcmVtb3ZlIHRoZSBjaGVjayBpbiAzLjNcclxuICAgICAgICAgICAgaWYgKHVud3JhcFJlZikge1xyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGN0eCwga2V5LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiBpbmplY3RlZC52YWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICBzZXQ6IHYgPT4gKGluamVjdGVkLnZhbHVlID0gdilcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYGluamVjdGVkIHByb3BlcnR5IFwiJHtrZXl9XCIgaXMgYSByZWYgYW5kIHdpbGwgYmUgYXV0by11bndyYXBwZWQgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBhbmQgbm8gbG9uZ2VyIG5lZWRzIFxcYC52YWx1ZVxcYCBpbiB0aGUgbmV4dCBtaW5vciByZWxlYXNlLiBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYFRvIG9wdC1pbiB0byB0aGUgbmV3IGJlaGF2aW9yIG5vdywgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBzZXQgXFxgYXBwLmNvbmZpZy51bndyYXBJbmplY3RlZFJlZiA9IHRydWVcXGAgKHRoaXMgY29uZmlnIGlzIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgdGVtcG9yYXJ5IGFuZCB3aWxsIG5vdCBiZSBuZWVkZWQgaW4gdGhlIGZ1dHVyZS4pYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjdHhba2V5XSA9IGluamVjdGVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjdHhba2V5XSA9IGluamVjdGVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIGNoZWNrRHVwbGljYXRlUHJvcGVydGllcyhcIkluamVjdFwiIC8qIE9wdGlvblR5cGVzLklOSkVDVCAqLywga2V5KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gY2FsbEhvb2soaG9vaywgaW5zdGFuY2UsIHR5cGUpIHtcclxuICAgIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGlzQXJyYXkoaG9vaylcclxuICAgICAgICA/IGhvb2subWFwKGggPT4gaC5iaW5kKGluc3RhbmNlLnByb3h5KSlcclxuICAgICAgICA6IGhvb2suYmluZChpbnN0YW5jZS5wcm94eSksIGluc3RhbmNlLCB0eXBlKTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVXYXRjaGVyKHJhdywgY3R4LCBwdWJsaWNUaGlzLCBrZXkpIHtcclxuICAgIGNvbnN0IGdldHRlciA9IGtleS5pbmNsdWRlcygnLicpXHJcbiAgICAgICAgPyBjcmVhdGVQYXRoR2V0dGVyKHB1YmxpY1RoaXMsIGtleSlcclxuICAgICAgICA6ICgpID0+IHB1YmxpY1RoaXNba2V5XTtcclxuICAgIGlmIChpc1N0cmluZyhyYXcpKSB7XHJcbiAgICAgICAgY29uc3QgaGFuZGxlciA9IGN0eFtyYXddO1xyXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKGhhbmRsZXIpKSB7XHJcbiAgICAgICAgICAgIHdhdGNoKGdldHRlciwgaGFuZGxlcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBJbnZhbGlkIHdhdGNoIGhhbmRsZXIgc3BlY2lmaWVkIGJ5IGtleSBcIiR7cmF3fVwiYCwgaGFuZGxlcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNGdW5jdGlvbihyYXcpKSB7XHJcbiAgICAgICAgd2F0Y2goZ2V0dGVyLCByYXcuYmluZChwdWJsaWNUaGlzKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc09iamVjdChyYXcpKSB7XHJcbiAgICAgICAgaWYgKGlzQXJyYXkocmF3KSkge1xyXG4gICAgICAgICAgICByYXcuZm9yRWFjaChyID0+IGNyZWF0ZVdhdGNoZXIociwgY3R4LCBwdWJsaWNUaGlzLCBrZXkpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZXIgPSBpc0Z1bmN0aW9uKHJhdy5oYW5kbGVyKVxyXG4gICAgICAgICAgICAgICAgPyByYXcuaGFuZGxlci5iaW5kKHB1YmxpY1RoaXMpXHJcbiAgICAgICAgICAgICAgICA6IGN0eFtyYXcuaGFuZGxlcl07XHJcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKGhhbmRsZXIpKSB7XHJcbiAgICAgICAgICAgICAgICB3YXRjaChnZXR0ZXIsIGhhbmRsZXIsIHJhdyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBJbnZhbGlkIHdhdGNoIGhhbmRsZXIgc3BlY2lmaWVkIGJ5IGtleSBcIiR7cmF3LmhhbmRsZXJ9XCJgLCBoYW5kbGVyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIHdhcm4oYEludmFsaWQgd2F0Y2ggb3B0aW9uOiBcIiR7a2V5fVwiYCwgcmF3KTtcclxuICAgIH1cclxufVxyXG4vKipcclxuICogUmVzb2x2ZSBtZXJnZWQgb3B0aW9ucyBhbmQgY2FjaGUgaXQgb24gdGhlIGNvbXBvbmVudC5cclxuICogVGhpcyBpcyBkb25lIG9ubHkgb25jZSBwZXItY29tcG9uZW50IHNpbmNlIHRoZSBtZXJnaW5nIGRvZXMgbm90IGludm9sdmVcclxuICogaW5zdGFuY2VzLlxyXG4gKi9cclxuZnVuY3Rpb24gcmVzb2x2ZU1lcmdlZE9wdGlvbnMoaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IGJhc2UgPSBpbnN0YW5jZS50eXBlO1xyXG4gICAgY29uc3QgeyBtaXhpbnMsIGV4dGVuZHM6IGV4dGVuZHNPcHRpb25zIH0gPSBiYXNlO1xyXG4gICAgY29uc3QgeyBtaXhpbnM6IGdsb2JhbE1peGlucywgb3B0aW9uc0NhY2hlOiBjYWNoZSwgY29uZmlnOiB7IG9wdGlvbk1lcmdlU3RyYXRlZ2llcyB9IH0gPSBpbnN0YW5jZS5hcHBDb250ZXh0O1xyXG4gICAgY29uc3QgY2FjaGVkID0gY2FjaGUuZ2V0KGJhc2UpO1xyXG4gICAgbGV0IHJlc29sdmVkO1xyXG4gICAgaWYgKGNhY2hlZCkge1xyXG4gICAgICAgIHJlc29sdmVkID0gY2FjaGVkO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoIWdsb2JhbE1peGlucy5sZW5ndGggJiYgIW1peGlucyAmJiAhZXh0ZW5kc09wdGlvbnMpIHtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHJlc29sdmVkID0gYmFzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICByZXNvbHZlZCA9IHt9O1xyXG4gICAgICAgIGlmIChnbG9iYWxNaXhpbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGdsb2JhbE1peGlucy5mb3JFYWNoKG0gPT4gbWVyZ2VPcHRpb25zKHJlc29sdmVkLCBtLCBvcHRpb25NZXJnZVN0cmF0ZWdpZXMsIHRydWUpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbWVyZ2VPcHRpb25zKHJlc29sdmVkLCBiYXNlLCBvcHRpb25NZXJnZVN0cmF0ZWdpZXMpO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzT2JqZWN0KGJhc2UpKSB7XHJcbiAgICAgICAgY2FjaGUuc2V0KGJhc2UsIHJlc29sdmVkKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXNvbHZlZDtcclxufVxyXG5mdW5jdGlvbiBtZXJnZU9wdGlvbnModG8sIGZyb20sIHN0cmF0cywgYXNNaXhpbiA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCB7IG1peGlucywgZXh0ZW5kczogZXh0ZW5kc09wdGlvbnMgfSA9IGZyb207XHJcbiAgICBpZiAoZXh0ZW5kc09wdGlvbnMpIHtcclxuICAgICAgICBtZXJnZU9wdGlvbnModG8sIGV4dGVuZHNPcHRpb25zLCBzdHJhdHMsIHRydWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKG1peGlucykge1xyXG4gICAgICAgIG1peGlucy5mb3JFYWNoKChtKSA9PiBtZXJnZU9wdGlvbnModG8sIG0sIHN0cmF0cywgdHJ1ZSkpO1xyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZnJvbSkge1xyXG4gICAgICAgIGlmIChhc01peGluICYmIGtleSA9PT0gJ2V4cG9zZScpIHtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICB3YXJuKGBcImV4cG9zZVwiIG9wdGlvbiBpcyBpZ25vcmVkIHdoZW4gZGVjbGFyZWQgaW4gbWl4aW5zIG9yIGV4dGVuZHMuIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGBJdCBzaG91bGQgb25seSBiZSBkZWNsYXJlZCBpbiB0aGUgYmFzZSBjb21wb25lbnQgaXRzZWxmLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3Qgc3RyYXQgPSBpbnRlcm5hbE9wdGlvbk1lcmdlU3RyYXRzW2tleV0gfHwgKHN0cmF0cyAmJiBzdHJhdHNba2V5XSk7XHJcbiAgICAgICAgICAgIHRvW2tleV0gPSBzdHJhdCA/IHN0cmF0KHRvW2tleV0sIGZyb21ba2V5XSkgOiBmcm9tW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvO1xyXG59XHJcbmNvbnN0IGludGVybmFsT3B0aW9uTWVyZ2VTdHJhdHMgPSB7XHJcbiAgICBkYXRhOiBtZXJnZURhdGFGbixcclxuICAgIHByb3BzOiBtZXJnZU9iamVjdE9wdGlvbnMsXHJcbiAgICBlbWl0czogbWVyZ2VPYmplY3RPcHRpb25zLFxyXG4gICAgLy8gb2JqZWN0c1xyXG4gICAgbWV0aG9kczogbWVyZ2VPYmplY3RPcHRpb25zLFxyXG4gICAgY29tcHV0ZWQ6IG1lcmdlT2JqZWN0T3B0aW9ucyxcclxuICAgIC8vIGxpZmVjeWNsZVxyXG4gICAgYmVmb3JlQ3JlYXRlOiBtZXJnZUFzQXJyYXksXHJcbiAgICBjcmVhdGVkOiBtZXJnZUFzQXJyYXksXHJcbiAgICBiZWZvcmVNb3VudDogbWVyZ2VBc0FycmF5LFxyXG4gICAgbW91bnRlZDogbWVyZ2VBc0FycmF5LFxyXG4gICAgYmVmb3JlVXBkYXRlOiBtZXJnZUFzQXJyYXksXHJcbiAgICB1cGRhdGVkOiBtZXJnZUFzQXJyYXksXHJcbiAgICBiZWZvcmVEZXN0cm95OiBtZXJnZUFzQXJyYXksXHJcbiAgICBiZWZvcmVVbm1vdW50OiBtZXJnZUFzQXJyYXksXHJcbiAgICBkZXN0cm95ZWQ6IG1lcmdlQXNBcnJheSxcclxuICAgIHVubW91bnRlZDogbWVyZ2VBc0FycmF5LFxyXG4gICAgYWN0aXZhdGVkOiBtZXJnZUFzQXJyYXksXHJcbiAgICBkZWFjdGl2YXRlZDogbWVyZ2VBc0FycmF5LFxyXG4gICAgZXJyb3JDYXB0dXJlZDogbWVyZ2VBc0FycmF5LFxyXG4gICAgc2VydmVyUHJlZmV0Y2g6IG1lcmdlQXNBcnJheSxcclxuICAgIC8vIGFzc2V0c1xyXG4gICAgY29tcG9uZW50czogbWVyZ2VPYmplY3RPcHRpb25zLFxyXG4gICAgZGlyZWN0aXZlczogbWVyZ2VPYmplY3RPcHRpb25zLFxyXG4gICAgLy8gd2F0Y2hcclxuICAgIHdhdGNoOiBtZXJnZVdhdGNoT3B0aW9ucyxcclxuICAgIC8vIHByb3ZpZGUgLyBpbmplY3RcclxuICAgIHByb3ZpZGU6IG1lcmdlRGF0YUZuLFxyXG4gICAgaW5qZWN0OiBtZXJnZUluamVjdFxyXG59O1xyXG5mdW5jdGlvbiBtZXJnZURhdGFGbih0bywgZnJvbSkge1xyXG4gICAgaWYgKCFmcm9tKSB7XHJcbiAgICAgICAgcmV0dXJuIHRvO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0bykge1xyXG4gICAgICAgIHJldHVybiBmcm9tO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIG1lcmdlZERhdGFGbigpIHtcclxuICAgICAgICByZXR1cm4gKGV4dGVuZCkoaXNGdW5jdGlvbih0bykgPyB0by5jYWxsKHRoaXMsIHRoaXMpIDogdG8sIGlzRnVuY3Rpb24oZnJvbSkgPyBmcm9tLmNhbGwodGhpcywgdGhpcykgOiBmcm9tKTtcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gbWVyZ2VJbmplY3QodG8sIGZyb20pIHtcclxuICAgIHJldHVybiBtZXJnZU9iamVjdE9wdGlvbnMobm9ybWFsaXplSW5qZWN0KHRvKSwgbm9ybWFsaXplSW5qZWN0KGZyb20pKTtcclxufVxyXG5mdW5jdGlvbiBub3JtYWxpemVJbmplY3QocmF3KSB7XHJcbiAgICBpZiAoaXNBcnJheShyYXcpKSB7XHJcbiAgICAgICAgY29uc3QgcmVzID0ge307XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByYXcubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgcmVzW3Jhd1tpXV0gPSByYXdbaV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmF3O1xyXG59XHJcbmZ1bmN0aW9uIG1lcmdlQXNBcnJheSh0bywgZnJvbSkge1xyXG4gICAgcmV0dXJuIHRvID8gWy4uLm5ldyBTZXQoW10uY29uY2F0KHRvLCBmcm9tKSldIDogZnJvbTtcclxufVxyXG5mdW5jdGlvbiBtZXJnZU9iamVjdE9wdGlvbnModG8sIGZyb20pIHtcclxuICAgIHJldHVybiB0byA/IGV4dGVuZChleHRlbmQoT2JqZWN0LmNyZWF0ZShudWxsKSwgdG8pLCBmcm9tKSA6IGZyb207XHJcbn1cclxuZnVuY3Rpb24gbWVyZ2VXYXRjaE9wdGlvbnModG8sIGZyb20pIHtcclxuICAgIGlmICghdG8pXHJcbiAgICAgICAgcmV0dXJuIGZyb207XHJcbiAgICBpZiAoIWZyb20pXHJcbiAgICAgICAgcmV0dXJuIHRvO1xyXG4gICAgY29uc3QgbWVyZ2VkID0gZXh0ZW5kKE9iamVjdC5jcmVhdGUobnVsbCksIHRvKTtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIGZyb20pIHtcclxuICAgICAgICBtZXJnZWRba2V5XSA9IG1lcmdlQXNBcnJheSh0b1trZXldLCBmcm9tW2tleV0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1lcmdlZDtcclxufVxuXG5mdW5jdGlvbiBpbml0UHJvcHMoaW5zdGFuY2UsIHJhd1Byb3BzLCBpc1N0YXRlZnVsLCAvLyByZXN1bHQgb2YgYml0d2lzZSBmbGFnIGNvbXBhcmlzb25cclxuaXNTU1IgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgcHJvcHMgPSB7fTtcclxuICAgIGNvbnN0IGF0dHJzID0ge307XHJcbiAgICBkZWYoYXR0cnMsIEludGVybmFsT2JqZWN0S2V5LCAxKTtcclxuICAgIGluc3RhbmNlLnByb3BzRGVmYXVsdHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xyXG4gICAgc2V0RnVsbFByb3BzKGluc3RhbmNlLCByYXdQcm9wcywgcHJvcHMsIGF0dHJzKTtcclxuICAgIC8vIGVuc3VyZSBhbGwgZGVjbGFyZWQgcHJvcCBrZXlzIGFyZSBwcmVzZW50XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBpbnN0YW5jZS5wcm9wc09wdGlvbnNbMF0pIHtcclxuICAgICAgICBpZiAoIShrZXkgaW4gcHJvcHMpKSB7XHJcbiAgICAgICAgICAgIHByb3BzW2tleV0gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gdmFsaWRhdGlvblxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIHZhbGlkYXRlUHJvcHMocmF3UHJvcHMgfHwge30sIHByb3BzLCBpbnN0YW5jZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNTdGF0ZWZ1bCkge1xyXG4gICAgICAgIC8vIHN0YXRlZnVsXHJcbiAgICAgICAgaW5zdGFuY2UucHJvcHMgPSBpc1NTUiA/IHByb3BzIDogc2hhbGxvd1JlYWN0aXZlKHByb3BzKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICghaW5zdGFuY2UudHlwZS5wcm9wcykge1xyXG4gICAgICAgICAgICAvLyBmdW5jdGlvbmFsIHcvIG9wdGlvbmFsIHByb3BzLCBwcm9wcyA9PT0gYXR0cnNcclxuICAgICAgICAgICAgaW5zdGFuY2UucHJvcHMgPSBhdHRycztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGZ1bmN0aW9uYWwgdy8gZGVjbGFyZWQgcHJvcHNcclxuICAgICAgICAgICAgaW5zdGFuY2UucHJvcHMgPSBwcm9wcztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpbnN0YW5jZS5hdHRycyA9IGF0dHJzO1xyXG59XHJcbmZ1bmN0aW9uIGlzSW5IbXJDb250ZXh0KGluc3RhbmNlKSB7XHJcbiAgICB3aGlsZSAoaW5zdGFuY2UpIHtcclxuICAgICAgICBpZiAoaW5zdGFuY2UudHlwZS5fX2htcklkKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpbnN0YW5jZSA9IGluc3RhbmNlLnBhcmVudDtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB1cGRhdGVQcm9wcyhpbnN0YW5jZSwgcmF3UHJvcHMsIHJhd1ByZXZQcm9wcywgb3B0aW1pemVkKSB7XHJcbiAgICBjb25zdCB7IHByb3BzLCBhdHRycywgdm5vZGU6IHsgcGF0Y2hGbGFnIH0gfSA9IGluc3RhbmNlO1xyXG4gICAgY29uc3QgcmF3Q3VycmVudFByb3BzID0gdG9SYXcocHJvcHMpO1xyXG4gICAgY29uc3QgW29wdGlvbnNdID0gaW5zdGFuY2UucHJvcHNPcHRpb25zO1xyXG4gICAgbGV0IGhhc0F0dHJzQ2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgaWYgKFxyXG4gICAgLy8gYWx3YXlzIGZvcmNlIGZ1bGwgZGlmZiBpbiBkZXZcclxuICAgIC8vIC0gIzE5NDIgaWYgaG1yIGlzIGVuYWJsZWQgd2l0aCBzZmMgY29tcG9uZW50XHJcbiAgICAvLyAtIHZpdGUjODcyIG5vbi1zZmMgY29tcG9uZW50IHVzZWQgYnkgc2ZjIGNvbXBvbmVudFxyXG4gICAgISgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaXNJbkhtckNvbnRleHQoaW5zdGFuY2UpKSAmJlxyXG4gICAgICAgIChvcHRpbWl6ZWQgfHwgcGF0Y2hGbGFnID4gMCkgJiZcclxuICAgICAgICAhKHBhdGNoRmxhZyAmIDE2IC8qIFBhdGNoRmxhZ3MuRlVMTF9QUk9QUyAqLykpIHtcclxuICAgICAgICBpZiAocGF0Y2hGbGFnICYgOCAvKiBQYXRjaEZsYWdzLlBST1BTICovKSB7XHJcbiAgICAgICAgICAgIC8vIENvbXBpbGVyLWdlbmVyYXRlZCBwcm9wcyAmIG5vIGtleXMgY2hhbmdlLCBqdXN0IHNldCB0aGUgdXBkYXRlZFxyXG4gICAgICAgICAgICAvLyB0aGUgcHJvcHMuXHJcbiAgICAgICAgICAgIGNvbnN0IHByb3BzVG9VcGRhdGUgPSBpbnN0YW5jZS52bm9kZS5keW5hbWljUHJvcHM7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcHNUb1VwZGF0ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGtleSA9IHByb3BzVG9VcGRhdGVbaV07XHJcbiAgICAgICAgICAgICAgICAvLyBza2lwIGlmIHRoZSBwcm9wIGtleSBpcyBhIGRlY2xhcmVkIGVtaXQgZXZlbnQgbGlzdGVuZXJcclxuICAgICAgICAgICAgICAgIGlmIChpc0VtaXRMaXN0ZW5lcihpbnN0YW5jZS5lbWl0c09wdGlvbnMsIGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIFBST1BTIGZsYWcgZ3VhcmFudGVlcyByYXdQcm9wcyB0byBiZSBub24tbnVsbFxyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSByYXdQcm9wc1trZXldO1xyXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBhdHRyIC8gcHJvcHMgc2VwYXJhdGlvbiB3YXMgZG9uZSBvbiBpbml0IGFuZCB3aWxsIGJlIGNvbnNpc3RlbnRcclxuICAgICAgICAgICAgICAgICAgICAvLyBpbiB0aGlzIGNvZGUgcGF0aCwgc28ganVzdCBjaGVjayBpZiBhdHRycyBoYXZlIGl0LlxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNPd24oYXR0cnMsIGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBhdHRyc1trZXldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyc1trZXldID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNBdHRyc0NoYW5nZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW1lbGl6ZWRLZXkgPSBjYW1lbGl6ZShrZXkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wc1tjYW1lbGl6ZWRLZXldID0gcmVzb2x2ZVByb3BWYWx1ZShvcHRpb25zLCByYXdDdXJyZW50UHJvcHMsIGNhbWVsaXplZEtleSwgdmFsdWUsIGluc3RhbmNlLCBmYWxzZSAvKiBpc0Fic2VudCAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBhdHRyc1trZXldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzQXR0cnNDaGFuZ2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBmdWxsIHByb3BzIHVwZGF0ZS5cclxuICAgICAgICBpZiAoc2V0RnVsbFByb3BzKGluc3RhbmNlLCByYXdQcm9wcywgcHJvcHMsIGF0dHJzKSkge1xyXG4gICAgICAgICAgICBoYXNBdHRyc0NoYW5nZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpbiBjYXNlIG9mIGR5bmFtaWMgcHJvcHMsIGNoZWNrIGlmIHdlIG5lZWQgdG8gZGVsZXRlIGtleXMgZnJvbVxyXG4gICAgICAgIC8vIHRoZSBwcm9wcyBvYmplY3RcclxuICAgICAgICBsZXQga2ViYWJLZXk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcmF3Q3VycmVudFByb3BzKSB7XHJcbiAgICAgICAgICAgIGlmICghcmF3UHJvcHMgfHxcclxuICAgICAgICAgICAgICAgIC8vIGZvciBjYW1lbENhc2VcclxuICAgICAgICAgICAgICAgICghaGFzT3duKHJhd1Byb3BzLCBrZXkpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaXQncyBwb3NzaWJsZSB0aGUgb3JpZ2luYWwgcHJvcHMgd2FzIHBhc3NlZCBpbiBhcyBrZWJhYi1jYXNlXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYW5kIGNvbnZlcnRlZCB0byBjYW1lbENhc2UgKCM5NTUpXHJcbiAgICAgICAgICAgICAgICAgICAgKChrZWJhYktleSA9IGh5cGhlbmF0ZShrZXkpKSA9PT0ga2V5IHx8ICFoYXNPd24ocmF3UHJvcHMsIGtlYmFiS2V5KSkpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyYXdQcmV2UHJvcHMgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGNhbWVsQ2FzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocmF3UHJldlByb3BzW2tleV0gIT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGtlYmFiLWNhc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhd1ByZXZQcm9wc1trZWJhYktleV0gIT09IHVuZGVmaW5lZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHNba2V5XSA9IHJlc29sdmVQcm9wVmFsdWUob3B0aW9ucywgcmF3Q3VycmVudFByb3BzLCBrZXksIHVuZGVmaW5lZCwgaW5zdGFuY2UsIHRydWUgLyogaXNBYnNlbnQgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwcm9wc1trZXldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGluIHRoZSBjYXNlIG9mIGZ1bmN0aW9uYWwgY29tcG9uZW50IHcvbyBwcm9wcyBkZWNsYXJhdGlvbiwgcHJvcHMgYW5kXHJcbiAgICAgICAgLy8gYXR0cnMgcG9pbnQgdG8gdGhlIHNhbWUgb2JqZWN0IHNvIGl0IHNob3VsZCBhbHJlYWR5IGhhdmUgYmVlbiB1cGRhdGVkLlxyXG4gICAgICAgIGlmIChhdHRycyAhPT0gcmF3Q3VycmVudFByb3BzKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGF0dHJzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJhd1Byb3BzIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKCFoYXNPd24ocmF3UHJvcHMsIGtleSkgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgKCFmYWxzZSApKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBhdHRyc1trZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc0F0dHJzQ2hhbmdlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyB0cmlnZ2VyIHVwZGF0ZXMgZm9yICRhdHRycyBpbiBjYXNlIGl0J3MgdXNlZCBpbiBjb21wb25lbnQgc2xvdHNcclxuICAgIGlmIChoYXNBdHRyc0NoYW5nZWQpIHtcclxuICAgICAgICB0cmlnZ2VyKGluc3RhbmNlLCBcInNldFwiIC8qIFRyaWdnZXJPcFR5cGVzLlNFVCAqLywgJyRhdHRycycpO1xyXG4gICAgfVxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIHZhbGlkYXRlUHJvcHMocmF3UHJvcHMgfHwge30sIHByb3BzLCBpbnN0YW5jZSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gc2V0RnVsbFByb3BzKGluc3RhbmNlLCByYXdQcm9wcywgcHJvcHMsIGF0dHJzKSB7XHJcbiAgICBjb25zdCBbb3B0aW9ucywgbmVlZENhc3RLZXlzXSA9IGluc3RhbmNlLnByb3BzT3B0aW9ucztcclxuICAgIGxldCBoYXNBdHRyc0NoYW5nZWQgPSBmYWxzZTtcclxuICAgIGxldCByYXdDYXN0VmFsdWVzO1xyXG4gICAgaWYgKHJhd1Byb3BzKSB7XHJcbiAgICAgICAgZm9yIChsZXQga2V5IGluIHJhd1Byb3BzKSB7XHJcbiAgICAgICAgICAgIC8vIGtleSwgcmVmIGFyZSByZXNlcnZlZCBhbmQgbmV2ZXIgcGFzc2VkIGRvd25cclxuICAgICAgICAgICAgaWYgKGlzUmVzZXJ2ZWRQcm9wKGtleSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcmF3UHJvcHNba2V5XTtcclxuICAgICAgICAgICAgLy8gcHJvcCBvcHRpb24gbmFtZXMgYXJlIGNhbWVsaXplZCBkdXJpbmcgbm9ybWFsaXphdGlvbiwgc28gdG8gc3VwcG9ydFxyXG4gICAgICAgICAgICAvLyBrZWJhYiAtPiBjYW1lbCBjb252ZXJzaW9uIGhlcmUgd2UgbmVlZCB0byBjYW1lbGl6ZSB0aGUga2V5LlxyXG4gICAgICAgICAgICBsZXQgY2FtZWxLZXk7XHJcbiAgICAgICAgICAgIGlmIChvcHRpb25zICYmIGhhc093bihvcHRpb25zLCAoY2FtZWxLZXkgPSBjYW1lbGl6ZShrZXkpKSkpIHtcclxuICAgICAgICAgICAgICAgIGlmICghbmVlZENhc3RLZXlzIHx8ICFuZWVkQ2FzdEtleXMuaW5jbHVkZXMoY2FtZWxLZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcHNbY2FtZWxLZXldID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAocmF3Q2FzdFZhbHVlcyB8fCAocmF3Q2FzdFZhbHVlcyA9IHt9KSlbY2FtZWxLZXldID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoIWlzRW1pdExpc3RlbmVyKGluc3RhbmNlLmVtaXRzT3B0aW9ucywga2V5KSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCEoa2V5IGluIGF0dHJzKSB8fCB2YWx1ZSAhPT0gYXR0cnNba2V5XSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICBoYXNBdHRyc0NoYW5nZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKG5lZWRDYXN0S2V5cykge1xyXG4gICAgICAgIGNvbnN0IHJhd0N1cnJlbnRQcm9wcyA9IHRvUmF3KHByb3BzKTtcclxuICAgICAgICBjb25zdCBjYXN0VmFsdWVzID0gcmF3Q2FzdFZhbHVlcyB8fCBFTVBUWV9PQko7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZWVkQ2FzdEtleXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3Qga2V5ID0gbmVlZENhc3RLZXlzW2ldO1xyXG4gICAgICAgICAgICBwcm9wc1trZXldID0gcmVzb2x2ZVByb3BWYWx1ZShvcHRpb25zLCByYXdDdXJyZW50UHJvcHMsIGtleSwgY2FzdFZhbHVlc1trZXldLCBpbnN0YW5jZSwgIWhhc093bihjYXN0VmFsdWVzLCBrZXkpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaGFzQXR0cnNDaGFuZ2VkO1xyXG59XHJcbmZ1bmN0aW9uIHJlc29sdmVQcm9wVmFsdWUob3B0aW9ucywgcHJvcHMsIGtleSwgdmFsdWUsIGluc3RhbmNlLCBpc0Fic2VudCkge1xyXG4gICAgY29uc3Qgb3B0ID0gb3B0aW9uc1trZXldO1xyXG4gICAgaWYgKG9wdCAhPSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgaGFzRGVmYXVsdCA9IGhhc093bihvcHQsICdkZWZhdWx0Jyk7XHJcbiAgICAgICAgLy8gZGVmYXVsdCB2YWx1ZXNcclxuICAgICAgICBpZiAoaGFzRGVmYXVsdCAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IG9wdC5kZWZhdWx0O1xyXG4gICAgICAgICAgICBpZiAob3B0LnR5cGUgIT09IEZ1bmN0aW9uICYmIGlzRnVuY3Rpb24oZGVmYXVsdFZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBwcm9wc0RlZmF1bHRzIH0gPSBpbnN0YW5jZTtcclxuICAgICAgICAgICAgICAgIGlmIChrZXkgaW4gcHJvcHNEZWZhdWx0cykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcHJvcHNEZWZhdWx0c1trZXldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0Q3VycmVudEluc3RhbmNlKGluc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHByb3BzRGVmYXVsdHNba2V5XSA9IGRlZmF1bHRWYWx1ZS5jYWxsKG51bGwsIHByb3BzKTtcclxuICAgICAgICAgICAgICAgICAgICB1bnNldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSBkZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gYm9vbGVhbiBjYXN0aW5nXHJcbiAgICAgICAgaWYgKG9wdFswIC8qIEJvb2xlYW5GbGFncy5zaG91bGRDYXN0ICovXSkge1xyXG4gICAgICAgICAgICBpZiAoaXNBYnNlbnQgJiYgIWhhc0RlZmF1bHQpIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAob3B0WzEgLyogQm9vbGVhbkZsYWdzLnNob3VsZENhc3RUcnVlICovXSAmJlxyXG4gICAgICAgICAgICAgICAgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gaHlwaGVuYXRlKGtleSkpKSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplUHJvcHNPcHRpb25zKGNvbXAsIGFwcENvbnRleHQsIGFzTWl4aW4gPSBmYWxzZSkge1xyXG4gICAgY29uc3QgY2FjaGUgPSBhcHBDb250ZXh0LnByb3BzQ2FjaGU7XHJcbiAgICBjb25zdCBjYWNoZWQgPSBjYWNoZS5nZXQoY29tcCk7XHJcbiAgICBpZiAoY2FjaGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIGNhY2hlZDtcclxuICAgIH1cclxuICAgIGNvbnN0IHJhdyA9IGNvbXAucHJvcHM7XHJcbiAgICBjb25zdCBub3JtYWxpemVkID0ge307XHJcbiAgICBjb25zdCBuZWVkQ2FzdEtleXMgPSBbXTtcclxuICAgIC8vIGFwcGx5IG1peGluL2V4dGVuZHMgcHJvcHNcclxuICAgIGxldCBoYXNFeHRlbmRzID0gZmFsc2U7XHJcbiAgICBpZiAoX19WVUVfT1BUSU9OU19BUElfXyAmJiAhaXNGdW5jdGlvbihjb21wKSkge1xyXG4gICAgICAgIGNvbnN0IGV4dGVuZFByb3BzID0gKHJhdykgPT4ge1xyXG4gICAgICAgICAgICBoYXNFeHRlbmRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgY29uc3QgW3Byb3BzLCBrZXlzXSA9IG5vcm1hbGl6ZVByb3BzT3B0aW9ucyhyYXcsIGFwcENvbnRleHQsIHRydWUpO1xyXG4gICAgICAgICAgICBleHRlbmQobm9ybWFsaXplZCwgcHJvcHMpO1xyXG4gICAgICAgICAgICBpZiAoa2V5cylcclxuICAgICAgICAgICAgICAgIG5lZWRDYXN0S2V5cy5wdXNoKC4uLmtleXMpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKCFhc01peGluICYmIGFwcENvbnRleHQubWl4aW5zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBhcHBDb250ZXh0Lm1peGlucy5mb3JFYWNoKGV4dGVuZFByb3BzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbXAuZXh0ZW5kcykge1xyXG4gICAgICAgICAgICBleHRlbmRQcm9wcyhjb21wLmV4dGVuZHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29tcC5taXhpbnMpIHtcclxuICAgICAgICAgICAgY29tcC5taXhpbnMuZm9yRWFjaChleHRlbmRQcm9wcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCFyYXcgJiYgIWhhc0V4dGVuZHMpIHtcclxuICAgICAgICBpZiAoaXNPYmplY3QoY29tcCkpIHtcclxuICAgICAgICAgICAgY2FjaGUuc2V0KGNvbXAsIEVNUFRZX0FSUik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBFTVBUWV9BUlI7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNBcnJheShyYXcpKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByYXcubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaXNTdHJpbmcocmF3W2ldKSkge1xyXG4gICAgICAgICAgICAgICAgd2FybihgcHJvcHMgbXVzdCBiZSBzdHJpbmdzIHdoZW4gdXNpbmcgYXJyYXkgc3ludGF4LmAsIHJhd1tpXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZEtleSA9IGNhbWVsaXplKHJhd1tpXSk7XHJcbiAgICAgICAgICAgIGlmICh2YWxpZGF0ZVByb3BOYW1lKG5vcm1hbGl6ZWRLZXkpKSB7XHJcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkW25vcm1hbGl6ZWRLZXldID0gRU1QVFlfT0JKO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocmF3KSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaXNPYmplY3QocmF3KSkge1xyXG4gICAgICAgICAgICB3YXJuKGBpbnZhbGlkIHByb3BzIG9wdGlvbnNgLCByYXcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiByYXcpIHtcclxuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZEtleSA9IGNhbWVsaXplKGtleSk7XHJcbiAgICAgICAgICAgIGlmICh2YWxpZGF0ZVByb3BOYW1lKG5vcm1hbGl6ZWRLZXkpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvcHQgPSByYXdba2V5XTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHByb3AgPSAobm9ybWFsaXplZFtub3JtYWxpemVkS2V5XSA9XHJcbiAgICAgICAgICAgICAgICAgICAgaXNBcnJheShvcHQpIHx8IGlzRnVuY3Rpb24ob3B0KSA/IHsgdHlwZTogb3B0IH0gOiBvcHQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHByb3ApIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sZWFuSW5kZXggPSBnZXRUeXBlSW5kZXgoQm9vbGVhbiwgcHJvcC50eXBlKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJpbmdJbmRleCA9IGdldFR5cGVJbmRleChTdHJpbmcsIHByb3AudHlwZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcFswIC8qIEJvb2xlYW5GbGFncy5zaG91bGRDYXN0ICovXSA9IGJvb2xlYW5JbmRleCA+IC0xO1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BbMSAvKiBCb29sZWFuRmxhZ3Muc2hvdWxkQ2FzdFRydWUgKi9dID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nSW5kZXggPCAwIHx8IGJvb2xlYW5JbmRleCA8IHN0cmluZ0luZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBwcm9wIG5lZWRzIGJvb2xlYW4gY2FzdGluZyBvciBkZWZhdWx0IHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJvb2xlYW5JbmRleCA+IC0xIHx8IGhhc093bihwcm9wLCAnZGVmYXVsdCcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRDYXN0S2V5cy5wdXNoKG5vcm1hbGl6ZWRLZXkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHJlcyA9IFtub3JtYWxpemVkLCBuZWVkQ2FzdEtleXNdO1xyXG4gICAgaWYgKGlzT2JqZWN0KGNvbXApKSB7XHJcbiAgICAgICAgY2FjaGUuc2V0KGNvbXAsIHJlcyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG59XHJcbmZ1bmN0aW9uIHZhbGlkYXRlUHJvcE5hbWUoa2V5KSB7XHJcbiAgICBpZiAoa2V5WzBdICE9PSAnJCcpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIHdhcm4oYEludmFsaWQgcHJvcCBuYW1lOiBcIiR7a2V5fVwiIGlzIGEgcmVzZXJ2ZWQgcHJvcGVydHkuYCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cclxuLy8gdXNlIGZ1bmN0aW9uIHN0cmluZyBuYW1lIHRvIGNoZWNrIHR5cGUgY29uc3RydWN0b3JzXHJcbi8vIHNvIHRoYXQgaXQgd29ya3MgYWNyb3NzIHZtcyAvIGlmcmFtZXMuXHJcbmZ1bmN0aW9uIGdldFR5cGUoY3Rvcikge1xyXG4gICAgY29uc3QgbWF0Y2ggPSBjdG9yICYmIGN0b3IudG9TdHJpbmcoKS5tYXRjaCgvXlxccypmdW5jdGlvbiAoXFx3KykvKTtcclxuICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdIDogY3RvciA9PT0gbnVsbCA/ICdudWxsJyA6ICcnO1xyXG59XHJcbmZ1bmN0aW9uIGlzU2FtZVR5cGUoYSwgYikge1xyXG4gICAgcmV0dXJuIGdldFR5cGUoYSkgPT09IGdldFR5cGUoYik7XHJcbn1cclxuZnVuY3Rpb24gZ2V0VHlwZUluZGV4KHR5cGUsIGV4cGVjdGVkVHlwZXMpIHtcclxuICAgIGlmIChpc0FycmF5KGV4cGVjdGVkVHlwZXMpKSB7XHJcbiAgICAgICAgcmV0dXJuIGV4cGVjdGVkVHlwZXMuZmluZEluZGV4KHQgPT4gaXNTYW1lVHlwZSh0LCB0eXBlKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKGV4cGVjdGVkVHlwZXMpKSB7XHJcbiAgICAgICAgcmV0dXJuIGlzU2FtZVR5cGUoZXhwZWN0ZWRUeXBlcywgdHlwZSkgPyAwIDogLTE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gLTE7XHJcbn1cclxuLyoqXHJcbiAqIGRldiBvbmx5XHJcbiAqL1xyXG5mdW5jdGlvbiB2YWxpZGF0ZVByb3BzKHJhd1Byb3BzLCBwcm9wcywgaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IHJlc29sdmVkVmFsdWVzID0gdG9SYXcocHJvcHMpO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IGluc3RhbmNlLnByb3BzT3B0aW9uc1swXTtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIG9wdGlvbnMpIHtcclxuICAgICAgICBsZXQgb3B0ID0gb3B0aW9uc1trZXldO1xyXG4gICAgICAgIGlmIChvcHQgPT0gbnVsbClcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgdmFsaWRhdGVQcm9wKGtleSwgcmVzb2x2ZWRWYWx1ZXNba2V5XSwgb3B0LCAhaGFzT3duKHJhd1Byb3BzLCBrZXkpICYmICFoYXNPd24ocmF3UHJvcHMsIGh5cGhlbmF0ZShrZXkpKSk7XHJcbiAgICB9XHJcbn1cclxuLyoqXHJcbiAqIGRldiBvbmx5XHJcbiAqL1xyXG5mdW5jdGlvbiB2YWxpZGF0ZVByb3AobmFtZSwgdmFsdWUsIHByb3AsIGlzQWJzZW50KSB7XHJcbiAgICBjb25zdCB7IHR5cGUsIHJlcXVpcmVkLCB2YWxpZGF0b3IgfSA9IHByb3A7XHJcbiAgICAvLyByZXF1aXJlZCFcclxuICAgIGlmIChyZXF1aXJlZCAmJiBpc0Fic2VudCkge1xyXG4gICAgICAgIHdhcm4oJ01pc3NpbmcgcmVxdWlyZWQgcHJvcDogXCInICsgbmFtZSArICdcIicpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIG1pc3NpbmcgYnV0IG9wdGlvbmFsXHJcbiAgICBpZiAodmFsdWUgPT0gbnVsbCAmJiAhcHJvcC5yZXF1aXJlZCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIHR5cGUgY2hlY2tcclxuICAgIGlmICh0eXBlICE9IG51bGwgJiYgdHlwZSAhPT0gdHJ1ZSkge1xyXG4gICAgICAgIGxldCBpc1ZhbGlkID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgdHlwZXMgPSBpc0FycmF5KHR5cGUpID8gdHlwZSA6IFt0eXBlXTtcclxuICAgICAgICBjb25zdCBleHBlY3RlZFR5cGVzID0gW107XHJcbiAgICAgICAgLy8gdmFsdWUgaXMgdmFsaWQgYXMgbG9uZyBhcyBvbmUgb2YgdGhlIHNwZWNpZmllZCB0eXBlcyBtYXRjaFxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoICYmICFpc1ZhbGlkOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgeyB2YWxpZCwgZXhwZWN0ZWRUeXBlIH0gPSBhc3NlcnRUeXBlKHZhbHVlLCB0eXBlc1tpXSk7XHJcbiAgICAgICAgICAgIGV4cGVjdGVkVHlwZXMucHVzaChleHBlY3RlZFR5cGUgfHwgJycpO1xyXG4gICAgICAgICAgICBpc1ZhbGlkID0gdmFsaWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaXNWYWxpZCkge1xyXG4gICAgICAgICAgICB3YXJuKGdldEludmFsaWRUeXBlTWVzc2FnZShuYW1lLCB2YWx1ZSwgZXhwZWN0ZWRUeXBlcykpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gY3VzdG9tIHZhbGlkYXRvclxyXG4gICAgaWYgKHZhbGlkYXRvciAmJiAhdmFsaWRhdG9yKHZhbHVlKSkge1xyXG4gICAgICAgIHdhcm4oJ0ludmFsaWQgcHJvcDogY3VzdG9tIHZhbGlkYXRvciBjaGVjayBmYWlsZWQgZm9yIHByb3AgXCInICsgbmFtZSArICdcIi4nKTtcclxuICAgIH1cclxufVxyXG5jb25zdCBpc1NpbXBsZVR5cGUgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoJ1N0cmluZyxOdW1iZXIsQm9vbGVhbixGdW5jdGlvbixTeW1ib2wsQmlnSW50Jyk7XHJcbi8qKlxyXG4gKiBkZXYgb25seVxyXG4gKi9cclxuZnVuY3Rpb24gYXNzZXJ0VHlwZSh2YWx1ZSwgdHlwZSkge1xyXG4gICAgbGV0IHZhbGlkO1xyXG4gICAgY29uc3QgZXhwZWN0ZWRUeXBlID0gZ2V0VHlwZSh0eXBlKTtcclxuICAgIGlmIChpc1NpbXBsZVR5cGUoZXhwZWN0ZWRUeXBlKSkge1xyXG4gICAgICAgIGNvbnN0IHQgPSB0eXBlb2YgdmFsdWU7XHJcbiAgICAgICAgdmFsaWQgPSB0ID09PSBleHBlY3RlZFR5cGUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAvLyBmb3IgcHJpbWl0aXZlIHdyYXBwZXIgb2JqZWN0c1xyXG4gICAgICAgIGlmICghdmFsaWQgJiYgdCA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgdmFsaWQgPSB2YWx1ZSBpbnN0YW5jZW9mIHR5cGU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSAnT2JqZWN0Jykge1xyXG4gICAgICAgIHZhbGlkID0gaXNPYmplY3QodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSAnQXJyYXknKSB7XHJcbiAgICAgICAgdmFsaWQgPSBpc0FycmF5KHZhbHVlKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0gJ251bGwnKSB7XHJcbiAgICAgICAgdmFsaWQgPSB2YWx1ZSA9PT0gbnVsbDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHZhbGlkID0gdmFsdWUgaW5zdGFuY2VvZiB0eXBlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB2YWxpZCxcclxuICAgICAgICBleHBlY3RlZFR5cGVcclxuICAgIH07XHJcbn1cclxuLyoqXHJcbiAqIGRldiBvbmx5XHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRJbnZhbGlkVHlwZU1lc3NhZ2UobmFtZSwgdmFsdWUsIGV4cGVjdGVkVHlwZXMpIHtcclxuICAgIGxldCBtZXNzYWdlID0gYEludmFsaWQgcHJvcDogdHlwZSBjaGVjayBmYWlsZWQgZm9yIHByb3AgXCIke25hbWV9XCIuYCArXHJcbiAgICAgICAgYCBFeHBlY3RlZCAke2V4cGVjdGVkVHlwZXMubWFwKGNhcGl0YWxpemUpLmpvaW4oJyB8ICcpfWA7XHJcbiAgICBjb25zdCBleHBlY3RlZFR5cGUgPSBleHBlY3RlZFR5cGVzWzBdO1xyXG4gICAgY29uc3QgcmVjZWl2ZWRUeXBlID0gdG9SYXdUeXBlKHZhbHVlKTtcclxuICAgIGNvbnN0IGV4cGVjdGVkVmFsdWUgPSBzdHlsZVZhbHVlKHZhbHVlLCBleHBlY3RlZFR5cGUpO1xyXG4gICAgY29uc3QgcmVjZWl2ZWRWYWx1ZSA9IHN0eWxlVmFsdWUodmFsdWUsIHJlY2VpdmVkVHlwZSk7XHJcbiAgICAvLyBjaGVjayBpZiB3ZSBuZWVkIHRvIHNwZWNpZnkgZXhwZWN0ZWQgdmFsdWVcclxuICAgIGlmIChleHBlY3RlZFR5cGVzLmxlbmd0aCA9PT0gMSAmJlxyXG4gICAgICAgIGlzRXhwbGljYWJsZShleHBlY3RlZFR5cGUpICYmXHJcbiAgICAgICAgIWlzQm9vbGVhbihleHBlY3RlZFR5cGUsIHJlY2VpdmVkVHlwZSkpIHtcclxuICAgICAgICBtZXNzYWdlICs9IGAgd2l0aCB2YWx1ZSAke2V4cGVjdGVkVmFsdWV9YDtcclxuICAgIH1cclxuICAgIG1lc3NhZ2UgKz0gYCwgZ290ICR7cmVjZWl2ZWRUeXBlfSBgO1xyXG4gICAgLy8gY2hlY2sgaWYgd2UgbmVlZCB0byBzcGVjaWZ5IHJlY2VpdmVkIHZhbHVlXHJcbiAgICBpZiAoaXNFeHBsaWNhYmxlKHJlY2VpdmVkVHlwZSkpIHtcclxuICAgICAgICBtZXNzYWdlICs9IGB3aXRoIHZhbHVlICR7cmVjZWl2ZWRWYWx1ZX0uYDtcclxuICAgIH1cclxuICAgIHJldHVybiBtZXNzYWdlO1xyXG59XHJcbi8qKlxyXG4gKiBkZXYgb25seVxyXG4gKi9cclxuZnVuY3Rpb24gc3R5bGVWYWx1ZSh2YWx1ZSwgdHlwZSkge1xyXG4gICAgaWYgKHR5cGUgPT09ICdTdHJpbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuIGBcIiR7dmFsdWV9XCJgO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodHlwZSA9PT0gJ051bWJlcicpIHtcclxuICAgICAgICByZXR1cm4gYCR7TnVtYmVyKHZhbHVlKX1gO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGAke3ZhbHVlfWA7XHJcbiAgICB9XHJcbn1cclxuLyoqXHJcbiAqIGRldiBvbmx5XHJcbiAqL1xyXG5mdW5jdGlvbiBpc0V4cGxpY2FibGUodHlwZSkge1xyXG4gICAgY29uc3QgZXhwbGljaXRUeXBlcyA9IFsnc3RyaW5nJywgJ251bWJlcicsICdib29sZWFuJ107XHJcbiAgICByZXR1cm4gZXhwbGljaXRUeXBlcy5zb21lKGVsZW0gPT4gdHlwZS50b0xvd2VyQ2FzZSgpID09PSBlbGVtKTtcclxufVxyXG4vKipcclxuICogZGV2IG9ubHlcclxuICovXHJcbmZ1bmN0aW9uIGlzQm9vbGVhbiguLi5hcmdzKSB7XHJcbiAgICByZXR1cm4gYXJncy5zb21lKGVsZW0gPT4gZWxlbS50b0xvd2VyQ2FzZSgpID09PSAnYm9vbGVhbicpO1xyXG59XG5cbmNvbnN0IGlzSW50ZXJuYWxLZXkgPSAoa2V5KSA9PiBrZXlbMF0gPT09ICdfJyB8fCBrZXkgPT09ICckc3RhYmxlJztcclxuY29uc3Qgbm9ybWFsaXplU2xvdFZhbHVlID0gKHZhbHVlKSA9PiBpc0FycmF5KHZhbHVlKVxyXG4gICAgPyB2YWx1ZS5tYXAobm9ybWFsaXplVk5vZGUpXHJcbiAgICA6IFtub3JtYWxpemVWTm9kZSh2YWx1ZSldO1xyXG5jb25zdCBub3JtYWxpemVTbG90ID0gKGtleSwgcmF3U2xvdCwgY3R4KSA9PiB7XHJcbiAgICBpZiAocmF3U2xvdC5fbikge1xyXG4gICAgICAgIC8vIGFscmVhZHkgbm9ybWFsaXplZCAtICM1MzUzXHJcbiAgICAgICAgcmV0dXJuIHJhd1Nsb3Q7XHJcbiAgICB9XHJcbiAgICBjb25zdCBub3JtYWxpemVkID0gd2l0aEN0eCgoLi4uYXJncykgPT4ge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgY3VycmVudEluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYFNsb3QgXCIke2tleX1cIiBpbnZva2VkIG91dHNpZGUgb2YgdGhlIHJlbmRlciBmdW5jdGlvbjogYCArXHJcbiAgICAgICAgICAgICAgICBgdGhpcyB3aWxsIG5vdCB0cmFjayBkZXBlbmRlbmNpZXMgdXNlZCBpbiB0aGUgc2xvdC4gYCArXHJcbiAgICAgICAgICAgICAgICBgSW52b2tlIHRoZSBzbG90IGZ1bmN0aW9uIGluc2lkZSB0aGUgcmVuZGVyIGZ1bmN0aW9uIGluc3RlYWQuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBub3JtYWxpemVTbG90VmFsdWUocmF3U2xvdCguLi5hcmdzKSk7XHJcbiAgICB9LCBjdHgpO1xyXG4gICAgbm9ybWFsaXplZC5fYyA9IGZhbHNlO1xyXG4gICAgcmV0dXJuIG5vcm1hbGl6ZWQ7XHJcbn07XHJcbmNvbnN0IG5vcm1hbGl6ZU9iamVjdFNsb3RzID0gKHJhd1Nsb3RzLCBzbG90cywgaW5zdGFuY2UpID0+IHtcclxuICAgIGNvbnN0IGN0eCA9IHJhd1Nsb3RzLl9jdHg7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiByYXdTbG90cykge1xyXG4gICAgICAgIGlmIChpc0ludGVybmFsS2V5KGtleSkpXHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gcmF3U2xvdHNba2V5XTtcclxuICAgICAgICBpZiAoaXNGdW5jdGlvbih2YWx1ZSkpIHtcclxuICAgICAgICAgICAgc2xvdHNba2V5XSA9IG5vcm1hbGl6ZVNsb3Qoa2V5LCB2YWx1ZSwgY3R4KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICAhKGZhbHNlICkpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYE5vbi1mdW5jdGlvbiB2YWx1ZSBlbmNvdW50ZXJlZCBmb3Igc2xvdCBcIiR7a2V5fVwiLiBgICtcclxuICAgICAgICAgICAgICAgICAgICBgUHJlZmVyIGZ1bmN0aW9uIHNsb3RzIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVNsb3RWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgIHNsb3RzW2tleV0gPSAoKSA9PiBub3JtYWxpemVkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuY29uc3Qgbm9ybWFsaXplVk5vZGVTbG90cyA9IChpbnN0YW5jZSwgY2hpbGRyZW4pID0+IHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAhaXNLZWVwQWxpdmUoaW5zdGFuY2Uudm5vZGUpICYmXHJcbiAgICAgICAgIShmYWxzZSApKSB7XHJcbiAgICAgICAgd2FybihgTm9uLWZ1bmN0aW9uIHZhbHVlIGVuY291bnRlcmVkIGZvciBkZWZhdWx0IHNsb3QuIGAgK1xyXG4gICAgICAgICAgICBgUHJlZmVyIGZ1bmN0aW9uIHNsb3RzIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuYCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplU2xvdFZhbHVlKGNoaWxkcmVuKTtcclxuICAgIGluc3RhbmNlLnNsb3RzLmRlZmF1bHQgPSAoKSA9PiBub3JtYWxpemVkO1xyXG59O1xyXG5jb25zdCBpbml0U2xvdHMgPSAoaW5zdGFuY2UsIGNoaWxkcmVuKSA9PiB7XHJcbiAgICBpZiAoaW5zdGFuY2Uudm5vZGUuc2hhcGVGbGFnICYgMzIgLyogU2hhcGVGbGFncy5TTE9UU19DSElMRFJFTiAqLykge1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSBjaGlsZHJlbi5fO1xyXG4gICAgICAgIGlmICh0eXBlKSB7XHJcbiAgICAgICAgICAgIC8vIHVzZXJzIGNhbiBnZXQgdGhlIHNoYWxsb3cgcmVhZG9ubHkgdmVyc2lvbiBvZiB0aGUgc2xvdHMgb2JqZWN0IHRocm91Z2ggYHRoaXMuJHNsb3RzYCxcclxuICAgICAgICAgICAgLy8gd2Ugc2hvdWxkIGF2b2lkIHRoZSBwcm94eSBvYmplY3QgcG9sbHV0aW5nIHRoZSBzbG90cyBvZiB0aGUgaW50ZXJuYWwgaW5zdGFuY2VcclxuICAgICAgICAgICAgaW5zdGFuY2Uuc2xvdHMgPSB0b1JhdyhjaGlsZHJlbik7XHJcbiAgICAgICAgICAgIC8vIG1ha2UgY29tcGlsZXIgbWFya2VyIG5vbi1lbnVtZXJhYmxlXHJcbiAgICAgICAgICAgIGRlZihjaGlsZHJlbiwgJ18nLCB0eXBlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG5vcm1hbGl6ZU9iamVjdFNsb3RzKGNoaWxkcmVuLCAoaW5zdGFuY2Uuc2xvdHMgPSB7fSkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGluc3RhbmNlLnNsb3RzID0ge307XHJcbiAgICAgICAgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIG5vcm1hbGl6ZVZOb2RlU2xvdHMoaW5zdGFuY2UsIGNoaWxkcmVuKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBkZWYoaW5zdGFuY2Uuc2xvdHMsIEludGVybmFsT2JqZWN0S2V5LCAxKTtcclxufTtcclxuY29uc3QgdXBkYXRlU2xvdHMgPSAoaW5zdGFuY2UsIGNoaWxkcmVuLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgIGNvbnN0IHsgdm5vZGUsIHNsb3RzIH0gPSBpbnN0YW5jZTtcclxuICAgIGxldCBuZWVkRGVsZXRpb25DaGVjayA9IHRydWU7XHJcbiAgICBsZXQgZGVsZXRpb25Db21wYXJpc29uVGFyZ2V0ID0gRU1QVFlfT0JKO1xyXG4gICAgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDMyIC8qIFNoYXBlRmxhZ3MuU0xPVFNfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICBjb25zdCB0eXBlID0gY2hpbGRyZW4uXztcclxuICAgICAgICBpZiAodHlwZSkge1xyXG4gICAgICAgICAgICAvLyBjb21waWxlZCBzbG90cy5cclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBpc0htclVwZGF0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBQYXJlbnQgd2FzIEhNUiB1cGRhdGVkIHNvIHNsb3QgY29udGVudCBtYXkgaGF2ZSBjaGFuZ2VkLlxyXG4gICAgICAgICAgICAgICAgLy8gZm9yY2UgdXBkYXRlIHNsb3RzIGFuZCBtYXJrIGluc3RhbmNlIGZvciBobXIgYXMgd2VsbFxyXG4gICAgICAgICAgICAgICAgZXh0ZW5kKHNsb3RzLCBjaGlsZHJlbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAob3B0aW1pemVkICYmIHR5cGUgPT09IDEgLyogU2xvdEZsYWdzLlNUQUJMRSAqLykge1xyXG4gICAgICAgICAgICAgICAgLy8gY29tcGlsZWQgQU5EIHN0YWJsZS5cclxuICAgICAgICAgICAgICAgIC8vIG5vIG5lZWQgdG8gdXBkYXRlLCBhbmQgc2tpcCBzdGFsZSBzbG90cyByZW1vdmFsLlxyXG4gICAgICAgICAgICAgICAgbmVlZERlbGV0aW9uQ2hlY2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbXBpbGVkIGJ1dCBkeW5hbWljICh2LWlmL3YtZm9yIG9uIHNsb3RzKSAtIHVwZGF0ZSBzbG90cywgYnV0IHNraXBcclxuICAgICAgICAgICAgICAgIC8vIG5vcm1hbGl6YXRpb24uXHJcbiAgICAgICAgICAgICAgICBleHRlbmQoc2xvdHMsIGNoaWxkcmVuKTtcclxuICAgICAgICAgICAgICAgIC8vICMyODkzXHJcbiAgICAgICAgICAgICAgICAvLyB3aGVuIHJlbmRlcmluZyB0aGUgb3B0aW1pemVkIHNsb3RzIGJ5IG1hbnVhbGx5IHdyaXR0ZW4gcmVuZGVyIGZ1bmN0aW9uLFxyXG4gICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBkZWxldGUgdGhlIGBzbG90cy5fYCBmbGFnIGlmIG5lY2Vzc2FyeSB0byBtYWtlIHN1YnNlcXVlbnQgdXBkYXRlcyByZWxpYWJsZSxcclxuICAgICAgICAgICAgICAgIC8vIGkuZS4gbGV0IHRoZSBgcmVuZGVyU2xvdGAgY3JlYXRlIHRoZSBiYWlsZWQgRnJhZ21lbnRcclxuICAgICAgICAgICAgICAgIGlmICghb3B0aW1pemVkICYmIHR5cGUgPT09IDEgLyogU2xvdEZsYWdzLlNUQUJMRSAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzbG90cy5fO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBuZWVkRGVsZXRpb25DaGVjayA9ICFjaGlsZHJlbi4kc3RhYmxlO1xyXG4gICAgICAgICAgICBub3JtYWxpemVPYmplY3RTbG90cyhjaGlsZHJlbiwgc2xvdHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkZWxldGlvbkNvbXBhcmlzb25UYXJnZXQgPSBjaGlsZHJlbjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgICAgLy8gbm9uIHNsb3Qgb2JqZWN0IGNoaWxkcmVuIChkaXJlY3QgdmFsdWUpIHBhc3NlZCB0byBhIGNvbXBvbmVudFxyXG4gICAgICAgIG5vcm1hbGl6ZVZOb2RlU2xvdHMoaW5zdGFuY2UsIGNoaWxkcmVuKTtcclxuICAgICAgICBkZWxldGlvbkNvbXBhcmlzb25UYXJnZXQgPSB7IGRlZmF1bHQ6IDEgfTtcclxuICAgIH1cclxuICAgIC8vIGRlbGV0ZSBzdGFsZSBzbG90c1xyXG4gICAgaWYgKG5lZWREZWxldGlvbkNoZWNrKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gc2xvdHMpIHtcclxuICAgICAgICAgICAgaWYgKCFpc0ludGVybmFsS2V5KGtleSkgJiYgIShrZXkgaW4gZGVsZXRpb25Db21wYXJpc29uVGFyZ2V0KSkge1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIHNsb3RzW2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZUFwcENvbnRleHQoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGFwcDogbnVsbCxcclxuICAgICAgICBjb25maWc6IHtcclxuICAgICAgICAgICAgaXNOYXRpdmVUYWc6IE5PLFxyXG4gICAgICAgICAgICBwZXJmb3JtYW5jZTogZmFsc2UsXHJcbiAgICAgICAgICAgIGdsb2JhbFByb3BlcnRpZXM6IHt9LFxyXG4gICAgICAgICAgICBvcHRpb25NZXJnZVN0cmF0ZWdpZXM6IHt9LFxyXG4gICAgICAgICAgICBlcnJvckhhbmRsZXI6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgd2FybkhhbmRsZXI6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7fVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbWl4aW5zOiBbXSxcclxuICAgICAgICBjb21wb25lbnRzOiB7fSxcclxuICAgICAgICBkaXJlY3RpdmVzOiB7fSxcclxuICAgICAgICBwcm92aWRlczogT2JqZWN0LmNyZWF0ZShudWxsKSxcclxuICAgICAgICBvcHRpb25zQ2FjaGU6IG5ldyBXZWFrTWFwKCksXHJcbiAgICAgICAgcHJvcHNDYWNoZTogbmV3IFdlYWtNYXAoKSxcclxuICAgICAgICBlbWl0c0NhY2hlOiBuZXcgV2Vha01hcCgpXHJcbiAgICB9O1xyXG59XHJcbmxldCB1aWQgPSAwO1xyXG5mdW5jdGlvbiBjcmVhdGVBcHBBUEkocmVuZGVyLCBoeWRyYXRlKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gY3JlYXRlQXBwKHJvb3RDb21wb25lbnQsIHJvb3RQcm9wcyA9IG51bGwpIHtcclxuICAgICAgICBpZiAoIWlzRnVuY3Rpb24ocm9vdENvbXBvbmVudCkpIHtcclxuICAgICAgICAgICAgcm9vdENvbXBvbmVudCA9IE9iamVjdC5hc3NpZ24oe30sIHJvb3RDb21wb25lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocm9vdFByb3BzICE9IG51bGwgJiYgIWlzT2JqZWN0KHJvb3RQcm9wcykpIHtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHdhcm4oYHJvb3QgcHJvcHMgcGFzc2VkIHRvIGFwcC5tb3VudCgpIG11c3QgYmUgYW4gb2JqZWN0LmApO1xyXG4gICAgICAgICAgICByb290UHJvcHMgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjb250ZXh0ID0gY3JlYXRlQXBwQ29udGV4dCgpO1xyXG4gICAgICAgIGNvbnN0IGluc3RhbGxlZFBsdWdpbnMgPSBuZXcgU2V0KCk7XHJcbiAgICAgICAgbGV0IGlzTW91bnRlZCA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGFwcCA9IChjb250ZXh0LmFwcCA9IHtcclxuICAgICAgICAgICAgX3VpZDogdWlkKyssXHJcbiAgICAgICAgICAgIF9jb21wb25lbnQ6IHJvb3RDb21wb25lbnQsXHJcbiAgICAgICAgICAgIF9wcm9wczogcm9vdFByb3BzLFxyXG4gICAgICAgICAgICBfY29udGFpbmVyOiBudWxsLFxyXG4gICAgICAgICAgICBfY29udGV4dDogY29udGV4dCxcclxuICAgICAgICAgICAgX2luc3RhbmNlOiBudWxsLFxyXG4gICAgICAgICAgICB2ZXJzaW9uLFxyXG4gICAgICAgICAgICBnZXQgY29uZmlnKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY29uZmlnO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzZXQgY29uZmlnKHYpIHtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBhcHAuY29uZmlnIGNhbm5vdCBiZSByZXBsYWNlZC4gTW9kaWZ5IGluZGl2aWR1YWwgb3B0aW9ucyBpbnN0ZWFkLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB1c2UocGx1Z2luLCAuLi5vcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5zdGFsbGVkUGx1Z2lucy5oYXMocGx1Z2luKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB3YXJuKGBQbHVnaW4gaGFzIGFscmVhZHkgYmVlbiBhcHBsaWVkIHRvIHRhcmdldCBhcHAuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChwbHVnaW4gJiYgaXNGdW5jdGlvbihwbHVnaW4uaW5zdGFsbCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWRQbHVnaW5zLmFkZChwbHVnaW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIHBsdWdpbi5pbnN0YWxsKGFwcCwgLi4ub3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKHBsdWdpbikpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWRQbHVnaW5zLmFkZChwbHVnaW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIHBsdWdpbihhcHAsIC4uLm9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgQSBwbHVnaW4gbXVzdCBlaXRoZXIgYmUgYSBmdW5jdGlvbiBvciBhbiBvYmplY3Qgd2l0aCBhbiBcImluc3RhbGxcIiBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYGZ1bmN0aW9uLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFwcDtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbWl4aW4obWl4aW4pIHtcclxuICAgICAgICAgICAgICAgIGlmIChfX1ZVRV9PUFRJT05TX0FQSV9fKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0Lm1peGlucy5pbmNsdWRlcyhtaXhpbikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5taXhpbnMucHVzaChtaXhpbik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuKCdNaXhpbiBoYXMgYWxyZWFkeSBiZWVuIGFwcGxpZWQgdG8gdGFyZ2V0IGFwcCcgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1peGluLm5hbWUgPyBgOiAke21peGluLm5hbWV9YCA6ICcnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybignTWl4aW5zIGFyZSBvbmx5IGF2YWlsYWJsZSBpbiBidWlsZHMgc3VwcG9ydGluZyBPcHRpb25zIEFQSScpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFwcDtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY29tcG9uZW50KG5hbWUsIGNvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlQ29tcG9uZW50TmFtZShuYW1lLCBjb250ZXh0LmNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIWNvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNvbXBvbmVudHNbbmFtZV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGNvbnRleHQuY29tcG9uZW50c1tuYW1lXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYENvbXBvbmVudCBcIiR7bmFtZX1cIiBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQgaW4gdGFyZ2V0IGFwcC5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnRleHQuY29tcG9uZW50c1tuYW1lXSA9IGNvbXBvbmVudDtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhcHA7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGRpcmVjdGl2ZShuYW1lLCBkaXJlY3RpdmUpIHtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZURpcmVjdGl2ZU5hbWUobmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIWRpcmVjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmRpcmVjdGl2ZXNbbmFtZV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGNvbnRleHQuZGlyZWN0aXZlc1tuYW1lXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYERpcmVjdGl2ZSBcIiR7bmFtZX1cIiBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQgaW4gdGFyZ2V0IGFwcC5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnRleHQuZGlyZWN0aXZlc1tuYW1lXSA9IGRpcmVjdGl2ZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhcHA7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG1vdW50KHJvb3RDb250YWluZXIsIGlzSHlkcmF0ZSwgaXNTVkcpIHtcclxuICAgICAgICAgICAgICAgIGlmICghaXNNb3VudGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gIzU1NzFcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHJvb3RDb250YWluZXIuX192dWVfYXBwX18pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FybihgVGhlcmUgaXMgYWxyZWFkeSBhbiBhcHAgaW5zdGFuY2UgbW91bnRlZCBvbiB0aGUgaG9zdCBjb250YWluZXIuXFxuYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgIElmIHlvdSB3YW50IHRvIG1vdW50IGFub3RoZXIgYXBwIG9uIHRoZSBzYW1lIGhvc3QgY29udGFpbmVyLGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYCB5b3UgbmVlZCB0byB1bm1vdW50IHRoZSBwcmV2aW91cyBhcHAgYnkgY2FsbGluZyBcXGBhcHAudW5tb3VudCgpXFxgIGZpcnN0LmApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB2bm9kZSA9IGNyZWF0ZVZOb2RlKHJvb3RDb21wb25lbnQsIHJvb3RQcm9wcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gc3RvcmUgYXBwIGNvbnRleHQgb24gdGhlIHJvb3QgVk5vZGUuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyB3aWxsIGJlIHNldCBvbiB0aGUgcm9vdCBpbnN0YW5jZSBvbiBpbml0aWFsIG1vdW50LlxyXG4gICAgICAgICAgICAgICAgICAgIHZub2RlLmFwcENvbnRleHQgPSBjb250ZXh0O1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIEhNUiByb290IHJlbG9hZFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5yZWxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXIoY2xvbmVWTm9kZSh2bm9kZSksIHJvb3RDb250YWluZXIsIGlzU1ZHKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzSHlkcmF0ZSAmJiBoeWRyYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh5ZHJhdGUodm5vZGUsIHJvb3RDb250YWluZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyKHZub2RlLCByb290Q29udGFpbmVyLCBpc1NWRyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlzTW91bnRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgYXBwLl9jb250YWluZXIgPSByb290Q29udGFpbmVyO1xyXG4gICAgICAgICAgICAgICAgICAgIHJvb3RDb250YWluZXIuX192dWVfYXBwX18gPSBhcHA7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwLl9pbnN0YW5jZSA9IHZub2RlLmNvbXBvbmVudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGV2dG9vbHNJbml0QXBwKGFwcCwgdmVyc2lvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRFeHBvc2VQcm94eSh2bm9kZS5jb21wb25lbnQpIHx8IHZub2RlLmNvbXBvbmVudC5wcm94eTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYEFwcCBoYXMgYWxyZWFkeSBiZWVuIG1vdW50ZWQuXFxuYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBJZiB5b3Ugd2FudCB0byByZW1vdW50IHRoZSBzYW1lIGFwcCwgbW92ZSB5b3VyIGFwcCBjcmVhdGlvbiBsb2dpYyBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYGludG8gYSBmYWN0b3J5IGZ1bmN0aW9uIGFuZCBjcmVhdGUgZnJlc2ggYXBwIGluc3RhbmNlcyBmb3IgZWFjaCBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYG1vdW50IC0gZS5nLiBcXGBjb25zdCBjcmVhdGVNeUFwcCA9ICgpID0+IGNyZWF0ZUFwcChBcHApXFxgYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHVubW91bnQoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNNb3VudGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyKG51bGwsIGFwcC5fY29udGFpbmVyKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHAuX2luc3RhbmNlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGV2dG9vbHNVbm1vdW50QXBwKGFwcCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBhcHAuX2NvbnRhaW5lci5fX3Z1ZV9hcHBfXztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYENhbm5vdCB1bm1vdW50IGFuIGFwcCB0aGF0IGlzIG5vdCBtb3VudGVkLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBwcm92aWRlKGtleSwgdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYga2V5IGluIGNvbnRleHQucHJvdmlkZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBBcHAgYWxyZWFkeSBwcm92aWRlcyBwcm9wZXJ0eSB3aXRoIGtleSBcIiR7U3RyaW5nKGtleSl9XCIuIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgSXQgd2lsbCBiZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSBuZXcgdmFsdWUuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnByb3ZpZGVzW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhcHA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gYXBwO1xyXG4gICAgfTtcclxufVxuXG4vKipcclxuICogRnVuY3Rpb24gZm9yIGhhbmRsaW5nIGEgdGVtcGxhdGUgcmVmXHJcbiAqL1xyXG5mdW5jdGlvbiBzZXRSZWYocmF3UmVmLCBvbGRSYXdSZWYsIHBhcmVudFN1c3BlbnNlLCB2bm9kZSwgaXNVbm1vdW50ID0gZmFsc2UpIHtcclxuICAgIGlmIChpc0FycmF5KHJhd1JlZikpIHtcclxuICAgICAgICByYXdSZWYuZm9yRWFjaCgociwgaSkgPT4gc2V0UmVmKHIsIG9sZFJhd1JlZiAmJiAoaXNBcnJheShvbGRSYXdSZWYpID8gb2xkUmF3UmVmW2ldIDogb2xkUmF3UmVmKSwgcGFyZW50U3VzcGVuc2UsIHZub2RlLCBpc1VubW91bnQpKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoaXNBc3luY1dyYXBwZXIodm5vZGUpICYmICFpc1VubW91bnQpIHtcclxuICAgICAgICAvLyB3aGVuIG1vdW50aW5nIGFzeW5jIGNvbXBvbmVudHMsIG5vdGhpbmcgbmVlZHMgdG8gYmUgZG9uZSxcclxuICAgICAgICAvLyBiZWNhdXNlIHRoZSB0ZW1wbGF0ZSByZWYgaXMgZm9yd2FyZGVkIHRvIGlubmVyIGNvbXBvbmVudFxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlZlZhbHVlID0gdm5vZGUuc2hhcGVGbGFnICYgNCAvKiBTaGFwZUZsYWdzLlNUQVRFRlVMX0NPTVBPTkVOVCAqL1xyXG4gICAgICAgID8gZ2V0RXhwb3NlUHJveHkodm5vZGUuY29tcG9uZW50KSB8fCB2bm9kZS5jb21wb25lbnQucHJveHlcclxuICAgICAgICA6IHZub2RlLmVsO1xyXG4gICAgY29uc3QgdmFsdWUgPSBpc1VubW91bnQgPyBudWxsIDogcmVmVmFsdWU7XHJcbiAgICBjb25zdCB7IGk6IG93bmVyLCByOiByZWYgfSA9IHJhd1JlZjtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIW93bmVyKSB7XHJcbiAgICAgICAgd2FybihgTWlzc2luZyByZWYgb3duZXIgY29udGV4dC4gcmVmIGNhbm5vdCBiZSB1c2VkIG9uIGhvaXN0ZWQgdm5vZGVzLiBgICtcclxuICAgICAgICAgICAgYEEgdm5vZGUgd2l0aCByZWYgbXVzdCBiZSBjcmVhdGVkIGluc2lkZSB0aGUgcmVuZGVyIGZ1bmN0aW9uLmApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IG9sZFJlZiA9IG9sZFJhd1JlZiAmJiBvbGRSYXdSZWYucjtcclxuICAgIGNvbnN0IHJlZnMgPSBvd25lci5yZWZzID09PSBFTVBUWV9PQkogPyAob3duZXIucmVmcyA9IHt9KSA6IG93bmVyLnJlZnM7XHJcbiAgICBjb25zdCBzZXR1cFN0YXRlID0gb3duZXIuc2V0dXBTdGF0ZTtcclxuICAgIC8vIGR5bmFtaWMgcmVmIGNoYW5nZWQuIHVuc2V0IG9sZCByZWZcclxuICAgIGlmIChvbGRSZWYgIT0gbnVsbCAmJiBvbGRSZWYgIT09IHJlZikge1xyXG4gICAgICAgIGlmIChpc1N0cmluZyhvbGRSZWYpKSB7XHJcbiAgICAgICAgICAgIHJlZnNbb2xkUmVmXSA9IG51bGw7XHJcbiAgICAgICAgICAgIGlmIChoYXNPd24oc2V0dXBTdGF0ZSwgb2xkUmVmKSkge1xyXG4gICAgICAgICAgICAgICAgc2V0dXBTdGF0ZVtvbGRSZWZdID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpc1JlZihvbGRSZWYpKSB7XHJcbiAgICAgICAgICAgIG9sZFJlZi52YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGlzRnVuY3Rpb24ocmVmKSkge1xyXG4gICAgICAgIGNhbGxXaXRoRXJyb3JIYW5kbGluZyhyZWYsIG93bmVyLCAxMiAvKiBFcnJvckNvZGVzLkZVTkNUSU9OX1JFRiAqLywgW3ZhbHVlLCByZWZzXSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBfaXNTdHJpbmcgPSBpc1N0cmluZyhyZWYpO1xyXG4gICAgICAgIGNvbnN0IF9pc1JlZiA9IGlzUmVmKHJlZik7XHJcbiAgICAgICAgaWYgKF9pc1N0cmluZyB8fCBfaXNSZWYpIHtcclxuICAgICAgICAgICAgY29uc3QgZG9TZXQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmF3UmVmLmYpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZyA9IF9pc1N0cmluZyA/IHJlZnNbcmVmXSA6IHJlZi52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNVbm1vdW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJyYXkoZXhpc3RpbmcpICYmIHJlbW92ZShleGlzdGluZywgcmVmVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0FycmF5KGV4aXN0aW5nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9pc1N0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnNbcmVmXSA9IFtyZWZWYWx1ZV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc093bihzZXR1cFN0YXRlLCByZWYpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHVwU3RhdGVbcmVmXSA9IHJlZnNbcmVmXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWYudmFsdWUgPSBbcmVmVmFsdWVdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyYXdSZWYuaylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmc1tyYXdSZWYua10gPSByZWYudmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWV4aXN0aW5nLmluY2x1ZGVzKHJlZlZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcucHVzaChyZWZWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChfaXNTdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICByZWZzW3JlZl0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzT3duKHNldHVwU3RhdGUsIHJlZikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0dXBTdGF0ZVtyZWZdID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoX2lzUmVmKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVmLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJhd1JlZi5rKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZzW3Jhd1JlZi5rXSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybignSW52YWxpZCB0ZW1wbGF0ZSByZWYgdHlwZTonLCByZWYsIGAoJHt0eXBlb2YgcmVmfSlgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBkb1NldC5pZCA9IC0xO1xyXG4gICAgICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KGRvU2V0LCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkb1NldCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB3YXJuKCdJbnZhbGlkIHRlbXBsYXRlIHJlZiB0eXBlOicsIHJlZiwgYCgke3R5cGVvZiByZWZ9KWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxuXG5sZXQgaGFzTWlzbWF0Y2ggPSBmYWxzZTtcclxuY29uc3QgaXNTVkdDb250YWluZXIgPSAoY29udGFpbmVyKSA9PiAvc3ZnLy50ZXN0KGNvbnRhaW5lci5uYW1lc3BhY2VVUkkpICYmIGNvbnRhaW5lci50YWdOYW1lICE9PSAnZm9yZWlnbk9iamVjdCc7XHJcbmNvbnN0IGlzQ29tbWVudCA9IChub2RlKSA9PiBub2RlLm5vZGVUeXBlID09PSA4IC8qIERPTU5vZGVUeXBlcy5DT01NRU5UICovO1xyXG4vLyBOb3RlOiBoeWRyYXRpb24gaXMgRE9NLXNwZWNpZmljXHJcbi8vIEJ1dCB3ZSBoYXZlIHRvIHBsYWNlIGl0IGluIGNvcmUgZHVlIHRvIHRpZ2h0IGNvdXBsaW5nIHdpdGggY29yZSAtIHNwbGl0dGluZ1xyXG4vLyBpdCBvdXQgY3JlYXRlcyBhIHRvbiBvZiB1bm5lY2Vzc2FyeSBjb21wbGV4aXR5LlxyXG4vLyBIeWRyYXRpb24gYWxzbyBkZXBlbmRzIG9uIHNvbWUgcmVuZGVyZXIgaW50ZXJuYWwgbG9naWMgd2hpY2ggbmVlZHMgdG8gYmVcclxuLy8gcGFzc2VkIGluIHZpYSBhcmd1bWVudHMuXHJcbmZ1bmN0aW9uIGNyZWF0ZUh5ZHJhdGlvbkZ1bmN0aW9ucyhyZW5kZXJlckludGVybmFscykge1xyXG4gICAgY29uc3QgeyBtdDogbW91bnRDb21wb25lbnQsIHA6IHBhdGNoLCBvOiB7IHBhdGNoUHJvcCwgY3JlYXRlVGV4dCwgbmV4dFNpYmxpbmcsIHBhcmVudE5vZGUsIHJlbW92ZSwgaW5zZXJ0LCBjcmVhdGVDb21tZW50IH0gfSA9IHJlbmRlcmVySW50ZXJuYWxzO1xyXG4gICAgY29uc3QgaHlkcmF0ZSA9ICh2bm9kZSwgY29udGFpbmVyKSA9PiB7XHJcbiAgICAgICAgaWYgKCFjb250YWluZXIuaGFzQ2hpbGROb2RlcygpKSB7XHJcbiAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgd2FybihgQXR0ZW1wdGluZyB0byBoeWRyYXRlIGV4aXN0aW5nIG1hcmt1cCBidXQgY29udGFpbmVyIGlzIGVtcHR5LiBgICtcclxuICAgICAgICAgICAgICAgICAgICBgUGVyZm9ybWluZyBmdWxsIG1vdW50IGluc3RlYWQuYCk7XHJcbiAgICAgICAgICAgIHBhdGNoKG51bGwsIHZub2RlLCBjb250YWluZXIpO1xyXG4gICAgICAgICAgICBmbHVzaFBvc3RGbHVzaENicygpO1xyXG4gICAgICAgICAgICBjb250YWluZXIuX3Zub2RlID0gdm5vZGU7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaGFzTWlzbWF0Y2ggPSBmYWxzZTtcclxuICAgICAgICBoeWRyYXRlTm9kZShjb250YWluZXIuZmlyc3RDaGlsZCwgdm5vZGUsIG51bGwsIG51bGwsIG51bGwpO1xyXG4gICAgICAgIGZsdXNoUG9zdEZsdXNoQ2JzKCk7XHJcbiAgICAgICAgY29udGFpbmVyLl92bm9kZSA9IHZub2RlO1xyXG4gICAgICAgIGlmIChoYXNNaXNtYXRjaCAmJiAhZmFsc2UpIHtcclxuICAgICAgICAgICAgLy8gdGhpcyBlcnJvciBzaG91bGQgc2hvdyB1cCBpbiBwcm9kdWN0aW9uXHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEh5ZHJhdGlvbiBjb21wbGV0ZWQgYnV0IGNvbnRhaW5zIG1pc21hdGNoZXMuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IGh5ZHJhdGVOb2RlID0gKG5vZGUsIHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCA9IGZhbHNlKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaXNGcmFnbWVudFN0YXJ0ID0gaXNDb21tZW50KG5vZGUpICYmIG5vZGUuZGF0YSA9PT0gJ1snO1xyXG4gICAgICAgIGNvbnN0IG9uTWlzbWF0Y2ggPSAoKSA9PiBoYW5kbGVNaXNtYXRjaChub2RlLCB2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBpc0ZyYWdtZW50U3RhcnQpO1xyXG4gICAgICAgIGNvbnN0IHsgdHlwZSwgcmVmLCBzaGFwZUZsYWcsIHBhdGNoRmxhZyB9ID0gdm5vZGU7XHJcbiAgICAgICAgY29uc3QgZG9tVHlwZSA9IG5vZGUubm9kZVR5cGU7XHJcbiAgICAgICAgdm5vZGUuZWwgPSBub2RlO1xyXG4gICAgICAgIGlmIChwYXRjaEZsYWcgPT09IC0yIC8qIFBhdGNoRmxhZ3MuQkFJTCAqLykge1xyXG4gICAgICAgICAgICBvcHRpbWl6ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdm5vZGUuZHluYW1pY0NoaWxkcmVuID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IG5leHROb2RlID0gbnVsbDtcclxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBUZXh0OlxyXG4gICAgICAgICAgICAgICAgaWYgKGRvbVR5cGUgIT09IDMgLyogRE9NTm9kZVR5cGVzLlRFWFQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyAjNTcyOCBlbXB0eSB0ZXh0IG5vZGUgaW5zaWRlIGEgc2xvdCBjYW4gY2F1c2UgaHlkcmF0aW9uIGZhaWx1cmVcclxuICAgICAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHRoZSBzZXJ2ZXIgcmVuZGVyZWQgSFRNTCB3b24ndCBjb250YWluIGEgdGV4dCBub2RlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZub2RlLmNoaWxkcmVuID09PSAnJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnQoKHZub2RlLmVsID0gY3JlYXRlVGV4dCgnJykpLCBwYXJlbnROb2RlKG5vZGUpLCBub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBub2RlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBvbk1pc21hdGNoKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUuZGF0YSAhPT0gdm5vZGUuY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzTWlzbWF0Y2ggPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4oYEh5ZHJhdGlvbiB0ZXh0IG1pc21hdGNoOmAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBcXG4tIENsaWVudDogJHtKU09OLnN0cmluZ2lmeShub2RlLmRhdGEpfWAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBcXG4tIFNlcnZlcjogJHtKU09OLnN0cmluZ2lmeSh2bm9kZS5jaGlsZHJlbil9YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuZGF0YSA9IHZub2RlLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG5leHRTaWJsaW5nKG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgQ29tbWVudDpcclxuICAgICAgICAgICAgICAgIGlmIChkb21UeXBlICE9PSA4IC8qIERPTU5vZGVUeXBlcy5DT01NRU5UICovIHx8IGlzRnJhZ21lbnRTdGFydCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gb25NaXNtYXRjaCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBuZXh0U2libGluZyhub2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFN0YXRpYzpcclxuICAgICAgICAgICAgICAgIGlmIChkb21UeXBlICE9PSAxIC8qIERPTU5vZGVUeXBlcy5FTEVNRU5UICovICYmIGRvbVR5cGUgIT09IDMgLyogRE9NTm9kZVR5cGVzLlRFWFQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG9uTWlzbWF0Y2goKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGRldGVybWluZSBhbmNob3IsIGFkb3B0IGNvbnRlbnRcclxuICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG5vZGU7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHN0YXRpYyB2bm9kZSBoYXMgaXRzIGNvbnRlbnQgc3RyaXBwZWQgZHVyaW5nIGJ1aWxkLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGFkb3B0IGl0IGZyb20gdGhlIHNlcnZlci1yZW5kZXJlZCBIVE1MLlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5lZWRUb0Fkb3B0Q29udGVudCA9ICF2bm9kZS5jaGlsZHJlbi5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2bm9kZS5zdGF0aWNDb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZWVkVG9BZG9wdENvbnRlbnQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bm9kZS5jaGlsZHJlbiArPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHROb2RlLm5vZGVUeXBlID09PSAxIC8qIERPTU5vZGVUeXBlcy5FTEVNRU5UICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbmV4dE5vZGUub3V0ZXJIVE1MXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbmV4dE5vZGUuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IHZub2RlLnN0YXRpY0NvdW50IC0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdm5vZGUuYW5jaG9yID0gbmV4dE5vZGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBuZXh0U2libGluZyhuZXh0Tm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXh0Tm9kZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEZyYWdtZW50OlxyXG4gICAgICAgICAgICAgICAgaWYgKCFpc0ZyYWdtZW50U3RhcnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG9uTWlzbWF0Y2goKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gaHlkcmF0ZUZyYWdtZW50KG5vZGUsIHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGlmIChzaGFwZUZsYWcgJiAxIC8qIFNoYXBlRmxhZ3MuRUxFTUVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkb21UeXBlICE9PSAxIC8qIERPTU5vZGVUeXBlcy5FTEVNRU5UICovIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZub2RlLnR5cGUudG9Mb3dlckNhc2UoKSAhPT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gb25NaXNtYXRjaCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBoeWRyYXRlRWxlbWVudChub2RlLCB2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNoYXBlRmxhZyAmIDYgLyogU2hhcGVGbGFncy5DT01QT05FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHNldHRpbmcgdXAgdGhlIHJlbmRlciBlZmZlY3QsIGlmIHRoZSBpbml0aWFsIHZub2RlIGFscmVhZHlcclxuICAgICAgICAgICAgICAgICAgICAvLyBoYXMgLmVsIHNldCwgdGhlIGNvbXBvbmVudCB3aWxsIHBlcmZvcm0gaHlkcmF0aW9uIGluc3RlYWQgb2YgbW91bnRcclxuICAgICAgICAgICAgICAgICAgICAvLyBvbiBpdHMgc3ViLXRyZWUuXHJcbiAgICAgICAgICAgICAgICAgICAgdm5vZGUuc2xvdFNjb3BlSWRzID0gc2xvdFNjb3BlSWRzO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHBhcmVudE5vZGUobm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbW91bnRDb21wb25lbnQodm5vZGUsIGNvbnRhaW5lciwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkdDb250YWluZXIoY29udGFpbmVyKSwgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb21wb25lbnQgbWF5IGJlIGFzeW5jLCBzbyBpbiB0aGUgY2FzZSBvZiBmcmFnbWVudHMgd2UgY2Fubm90IHJlbHlcclxuICAgICAgICAgICAgICAgICAgICAvLyBvbiBjb21wb25lbnQncyByZW5kZXJlZCBvdXRwdXQgdG8gZGV0ZXJtaW5lIHRoZSBlbmQgb2YgdGhlIGZyYWdtZW50XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaW5zdGVhZCwgd2UgZG8gYSBsb29rYWhlYWQgdG8gZmluZCB0aGUgZW5kIGFuY2hvciBub2RlLlxyXG4gICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gaXNGcmFnbWVudFN0YXJ0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gbG9jYXRlQ2xvc2luZ0FzeW5jQW5jaG9yKG5vZGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbmV4dFNpYmxpbmcobm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gIzQyOTMgdGVsZXBvcnQgYXMgY29tcG9uZW50IHJvb3RcclxuICAgICAgICAgICAgICAgICAgICBpZiAobmV4dE5vZGUgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNDb21tZW50KG5leHROb2RlKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZS5kYXRhID09PSAndGVsZXBvcnQgZW5kJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG5leHRTaWJsaW5nKG5leHROb2RlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gIzM3ODdcclxuICAgICAgICAgICAgICAgICAgICAvLyBpZiBjb21wb25lbnQgaXMgYXN5bmMsIGl0IG1heSBnZXQgbW92ZWQgLyB1bm1vdW50ZWQgYmVmb3JlIGl0c1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlubmVyIGNvbXBvbmVudCBpcyBsb2FkZWQsIHNvIHdlIG5lZWQgdG8gZ2l2ZSBpdCBhIHBsYWNlaG9sZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdm5vZGUgdGhhdCBtYXRjaGVzIGl0cyBhZG9wdGVkIERPTS5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNBc3luY1dyYXBwZXIodm5vZGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdWJUcmVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNGcmFnbWVudFN0YXJ0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJUcmVlID0gY3JlYXRlVk5vZGUoRnJhZ21lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViVHJlZS5hbmNob3IgPSBuZXh0Tm9kZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbmV4dE5vZGUucHJldmlvdXNTaWJsaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjb250YWluZXIubGFzdENoaWxkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViVHJlZSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5ub2RlVHlwZSA9PT0gMyA/IGNyZWF0ZVRleHRWTm9kZSgnJykgOiBjcmVhdGVWTm9kZSgnZGl2Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgc3ViVHJlZS5lbCA9IG5vZGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZub2RlLmNvbXBvbmVudC5zdWJUcmVlID0gc3ViVHJlZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzaGFwZUZsYWcgJiA2NCAvKiBTaGFwZUZsYWdzLlRFTEVQT1JUICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRvbVR5cGUgIT09IDggLyogRE9NTm9kZVR5cGVzLkNPTU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBvbk1pc21hdGNoKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IHZub2RlLnR5cGUuaHlkcmF0ZShub2RlLCB2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIHJlbmRlcmVySW50ZXJuYWxzLCBoeWRyYXRlQ2hpbGRyZW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNoYXBlRmxhZyAmIDEyOCAvKiBTaGFwZUZsYWdzLlNVU1BFTlNFICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSB2bm9kZS50eXBlLmh5ZHJhdGUobm9kZSwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHQ29udGFpbmVyKHBhcmVudE5vZGUobm9kZSkpLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgcmVuZGVyZXJJbnRlcm5hbHMsIGh5ZHJhdGVOb2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oJ0ludmFsaWQgSG9zdFZOb2RlIHR5cGU6JywgdHlwZSwgYCgke3R5cGVvZiB0eXBlfSlgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJlZiAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHNldFJlZihyZWYsIG51bGwsIHBhcmVudFN1c3BlbnNlLCB2bm9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXh0Tm9kZTtcclxuICAgIH07XHJcbiAgICBjb25zdCBoeWRyYXRlRWxlbWVudCA9IChlbCwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgb3B0aW1pemVkID0gb3B0aW1pemVkIHx8ICEhdm5vZGUuZHluYW1pY0NoaWxkcmVuO1xyXG4gICAgICAgIGNvbnN0IHsgdHlwZSwgcHJvcHMsIHBhdGNoRmxhZywgc2hhcGVGbGFnLCBkaXJzIH0gPSB2bm9kZTtcclxuICAgICAgICAvLyAjNDAwNiBmb3IgZm9ybSBlbGVtZW50cyB3aXRoIG5vbi1zdHJpbmcgdi1tb2RlbCB2YWx1ZSBiaW5kaW5nc1xyXG4gICAgICAgIC8vIGUuZy4gPG9wdGlvbiA6dmFsdWU9XCJvYmpcIj4sIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiA6dHJ1ZS12YWx1ZT1cIjFcIj5cclxuICAgICAgICBjb25zdCBmb3JjZVBhdGNoVmFsdWUgPSAodHlwZSA9PT0gJ2lucHV0JyAmJiBkaXJzKSB8fCB0eXBlID09PSAnb3B0aW9uJztcclxuICAgICAgICAvLyBza2lwIHByb3BzICYgY2hpbGRyZW4gaWYgdGhpcyBpcyBob2lzdGVkIHN0YXRpYyBub2Rlc1xyXG4gICAgICAgIC8vICM1NDA1IGluIGRldiwgYWx3YXlzIGh5ZHJhdGUgY2hpbGRyZW4gZm9yIEhNUlxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgZm9yY2VQYXRjaFZhbHVlIHx8IHBhdGNoRmxhZyAhPT0gLTEgLyogUGF0Y2hGbGFncy5IT0lTVEVEICovKSB7XHJcbiAgICAgICAgICAgIGlmIChkaXJzKSB7XHJcbiAgICAgICAgICAgICAgICBpbnZva2VEaXJlY3RpdmVIb29rKHZub2RlLCBudWxsLCBwYXJlbnRDb21wb25lbnQsICdjcmVhdGVkJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gcHJvcHNcclxuICAgICAgICAgICAgaWYgKHByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZm9yY2VQYXRjaFZhbHVlIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgIW9wdGltaXplZCB8fFxyXG4gICAgICAgICAgICAgICAgICAgIHBhdGNoRmxhZyAmICgxNiAvKiBQYXRjaEZsYWdzLkZVTExfUFJPUFMgKi8gfCAzMiAvKiBQYXRjaEZsYWdzLkhZRFJBVEVfRVZFTlRTICovKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZm9yY2VQYXRjaFZhbHVlICYmIGtleS5lbmRzV2l0aCgndmFsdWUnKSkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc09uKGtleSkgJiYgIWlzUmVzZXJ2ZWRQcm9wKGtleSkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaFByb3AoZWwsIGtleSwgbnVsbCwgcHJvcHNba2V5XSwgZmFsc2UsIHVuZGVmaW5lZCwgcGFyZW50Q29tcG9uZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHByb3BzLm9uQ2xpY2spIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBGYXN0IHBhdGggZm9yIGNsaWNrIGxpc3RlbmVycyAod2hpY2ggaXMgbW9zdCBvZnRlbikgdG8gYXZvaWRcclxuICAgICAgICAgICAgICAgICAgICAvLyBpdGVyYXRpbmcgdGhyb3VnaCBwcm9wcy5cclxuICAgICAgICAgICAgICAgICAgICBwYXRjaFByb3AoZWwsICdvbkNsaWNrJywgbnVsbCwgcHJvcHMub25DbGljaywgZmFsc2UsIHVuZGVmaW5lZCwgcGFyZW50Q29tcG9uZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyB2bm9kZSAvIGRpcmVjdGl2ZSBob29rc1xyXG4gICAgICAgICAgICBsZXQgdm5vZGVIb29rcztcclxuICAgICAgICAgICAgaWYgKCh2bm9kZUhvb2tzID0gcHJvcHMgJiYgcHJvcHMub25Wbm9kZUJlZm9yZU1vdW50KSkge1xyXG4gICAgICAgICAgICAgICAgaW52b2tlVk5vZGVIb29rKHZub2RlSG9va3MsIHBhcmVudENvbXBvbmVudCwgdm5vZGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChkaXJzKSB7XHJcbiAgICAgICAgICAgICAgICBpbnZva2VEaXJlY3RpdmVIb29rKHZub2RlLCBudWxsLCBwYXJlbnRDb21wb25lbnQsICdiZWZvcmVNb3VudCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgodm5vZGVIb29rcyA9IHByb3BzICYmIHByb3BzLm9uVm5vZGVNb3VudGVkKSB8fCBkaXJzKSB7XHJcbiAgICAgICAgICAgICAgICBxdWV1ZUVmZmVjdFdpdGhTdXNwZW5zZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdm5vZGVIb29rcyAmJiBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rcywgcGFyZW50Q29tcG9uZW50LCB2bm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlycyAmJiBpbnZva2VEaXJlY3RpdmVIb29rKHZub2RlLCBudWxsLCBwYXJlbnRDb21wb25lbnQsICdtb3VudGVkJyk7XHJcbiAgICAgICAgICAgICAgICB9LCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gY2hpbGRyZW5cclxuICAgICAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi8gJiZcclxuICAgICAgICAgICAgICAgIC8vIHNraXAgaWYgZWxlbWVudCBoYXMgaW5uZXJIVE1MIC8gdGV4dENvbnRlbnRcclxuICAgICAgICAgICAgICAgICEocHJvcHMgJiYgKHByb3BzLmlubmVySFRNTCB8fCBwcm9wcy50ZXh0Q29udGVudCkpKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgbmV4dCA9IGh5ZHJhdGVDaGlsZHJlbihlbC5maXJzdENoaWxkLCB2bm9kZSwgZWwsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIGxldCBoYXNXYXJuZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHdoaWxlIChuZXh0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzTWlzbWF0Y2ggPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWhhc1dhcm5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuKGBIeWRyYXRpb24gY2hpbGRyZW4gbWlzbWF0Y2ggaW4gPCR7dm5vZGUudHlwZX0+OiBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBzZXJ2ZXIgcmVuZGVyZWQgZWxlbWVudCBjb250YWlucyBtb3JlIGNoaWxkIG5vZGVzIHRoYW4gY2xpZW50IHZkb20uYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc1dhcm5lZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBTU1JlZCBET00gY29udGFpbnMgbW9yZSBub2RlcyB0aGFuIGl0IHNob3VsZC4gUmVtb3ZlIHRoZW0uXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VyID0gbmV4dDtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0ID0gbmV4dC5uZXh0U2libGluZztcclxuICAgICAgICAgICAgICAgICAgICByZW1vdmUoY3VyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChzaGFwZUZsYWcgJiA4IC8qIFNoYXBlRmxhZ3MuVEVYVF9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVsLnRleHRDb250ZW50ICE9PSB2bm9kZS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc01pc21hdGNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FybihgSHlkcmF0aW9uIHRleHQgY29udGVudCBtaXNtYXRjaCBpbiA8JHt2bm9kZS50eXBlfT46XFxuYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgLSBDbGllbnQ6ICR7ZWwudGV4dENvbnRlbnR9XFxuYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgLSBTZXJ2ZXI6ICR7dm5vZGUuY2hpbGRyZW59YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWwudGV4dENvbnRlbnQgPSB2bm9kZS5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZWwubmV4dFNpYmxpbmc7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgaHlkcmF0ZUNoaWxkcmVuID0gKG5vZGUsIHBhcmVudFZOb2RlLCBjb250YWluZXIsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgb3B0aW1pemVkID0gb3B0aW1pemVkIHx8ICEhcGFyZW50Vk5vZGUuZHluYW1pY0NoaWxkcmVuO1xyXG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gcGFyZW50Vk5vZGUuY2hpbGRyZW47XHJcbiAgICAgICAgY29uc3QgbCA9IGNoaWxkcmVuLmxlbmd0aDtcclxuICAgICAgICBsZXQgaGFzV2FybmVkID0gZmFsc2U7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3Qgdm5vZGUgPSBvcHRpbWl6ZWRcclxuICAgICAgICAgICAgICAgID8gY2hpbGRyZW5baV1cclxuICAgICAgICAgICAgICAgIDogKGNoaWxkcmVuW2ldID0gbm9ybWFsaXplVk5vZGUoY2hpbGRyZW5baV0pKTtcclxuICAgICAgICAgICAgaWYgKG5vZGUpIHtcclxuICAgICAgICAgICAgICAgIG5vZGUgPSBoeWRyYXRlTm9kZShub2RlLCB2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHZub2RlLnR5cGUgPT09IFRleHQgJiYgIXZub2RlLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGhhc01pc21hdGNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWhhc1dhcm5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYEh5ZHJhdGlvbiBjaGlsZHJlbiBtaXNtYXRjaCBpbiA8JHtjb250YWluZXIudGFnTmFtZS50b0xvd2VyQ2FzZSgpfT46IGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgc2VydmVyIHJlbmRlcmVkIGVsZW1lbnQgY29udGFpbnMgZmV3ZXIgY2hpbGQgbm9kZXMgdGhhbiBjbGllbnQgdmRvbS5gKTtcclxuICAgICAgICAgICAgICAgICAgICBoYXNXYXJuZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gdGhlIFNTUmVkIERPTSBkaWRuJ3QgY29udGFpbiBlbm91Z2ggbm9kZXMuIE1vdW50IHRoZSBtaXNzaW5nIG9uZXMuXHJcbiAgICAgICAgICAgICAgICBwYXRjaChudWxsLCB2bm9kZSwgY29udGFpbmVyLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWR0NvbnRhaW5lcihjb250YWluZXIpLCBzbG90U2NvcGVJZHMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGh5ZHJhdGVGcmFnbWVudCA9IChub2RlLCB2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBjb25zdCB7IHNsb3RTY29wZUlkczogZnJhZ21lbnRTbG90U2NvcGVJZHMgfSA9IHZub2RlO1xyXG4gICAgICAgIGlmIChmcmFnbWVudFNsb3RTY29wZUlkcykge1xyXG4gICAgICAgICAgICBzbG90U2NvcGVJZHMgPSBzbG90U2NvcGVJZHNcclxuICAgICAgICAgICAgICAgID8gc2xvdFNjb3BlSWRzLmNvbmNhdChmcmFnbWVudFNsb3RTY29wZUlkcylcclxuICAgICAgICAgICAgICAgIDogZnJhZ21lbnRTbG90U2NvcGVJZHM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHBhcmVudE5vZGUobm9kZSk7XHJcbiAgICAgICAgY29uc3QgbmV4dCA9IGh5ZHJhdGVDaGlsZHJlbihuZXh0U2libGluZyhub2RlKSwgdm5vZGUsIGNvbnRhaW5lciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgIGlmIChuZXh0ICYmIGlzQ29tbWVudChuZXh0KSAmJiBuZXh0LmRhdGEgPT09ICddJykge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV4dFNpYmxpbmcoKHZub2RlLmFuY2hvciA9IG5leHQpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGZyYWdtZW50IGRpZG4ndCBoeWRyYXRlIHN1Y2Nlc3NmdWxseSwgc2luY2Ugd2UgZGlkbid0IGdldCBhIGVuZCBhbmNob3JcclxuICAgICAgICAgICAgLy8gYmFjay4gVGhpcyBzaG91bGQgaGF2ZSBsZWQgdG8gbm9kZS9jaGlsZHJlbiBtaXNtYXRjaCB3YXJuaW5ncy5cclxuICAgICAgICAgICAgaGFzTWlzbWF0Y2ggPSB0cnVlO1xyXG4gICAgICAgICAgICAvLyBzaW5jZSB0aGUgYW5jaG9yIGlzIG1pc3NpbmcsIHdlIG5lZWQgdG8gY3JlYXRlIG9uZSBhbmQgaW5zZXJ0IGl0XHJcbiAgICAgICAgICAgIGluc2VydCgodm5vZGUuYW5jaG9yID0gY3JlYXRlQ29tbWVudChgXWApKSwgY29udGFpbmVyLCBuZXh0KTtcclxuICAgICAgICAgICAgcmV0dXJuIG5leHQ7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IGhhbmRsZU1pc21hdGNoID0gKG5vZGUsIHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIGlzRnJhZ21lbnQpID0+IHtcclxuICAgICAgICBoYXNNaXNtYXRjaCA9IHRydWU7XHJcbiAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgIHdhcm4oYEh5ZHJhdGlvbiBub2RlIG1pc21hdGNoOlxcbi0gQ2xpZW50IHZub2RlOmAsIHZub2RlLnR5cGUsIGBcXG4tIFNlcnZlciByZW5kZXJlZCBET006YCwgbm9kZSwgbm9kZS5ub2RlVHlwZSA9PT0gMyAvKiBET01Ob2RlVHlwZXMuVEVYVCAqL1xyXG4gICAgICAgICAgICAgICAgPyBgKHRleHQpYFxyXG4gICAgICAgICAgICAgICAgOiBpc0NvbW1lbnQobm9kZSkgJiYgbm9kZS5kYXRhID09PSAnWydcclxuICAgICAgICAgICAgICAgICAgICA/IGAoc3RhcnQgb2YgZnJhZ21lbnQpYFxyXG4gICAgICAgICAgICAgICAgICAgIDogYGApO1xyXG4gICAgICAgIHZub2RlLmVsID0gbnVsbDtcclxuICAgICAgICBpZiAoaXNGcmFnbWVudCkge1xyXG4gICAgICAgICAgICAvLyByZW1vdmUgZXhjZXNzaXZlIGZyYWdtZW50IG5vZGVzXHJcbiAgICAgICAgICAgIGNvbnN0IGVuZCA9IGxvY2F0ZUNsb3NpbmdBc3luY0FuY2hvcihub2RlKTtcclxuICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSBuZXh0U2libGluZyhub2RlKTtcclxuICAgICAgICAgICAgICAgIGlmIChuZXh0ICYmIG5leHQgIT09IGVuZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZShuZXh0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG5leHQgPSBuZXh0U2libGluZyhub2RlKTtcclxuICAgICAgICBjb25zdCBjb250YWluZXIgPSBwYXJlbnROb2RlKG5vZGUpO1xyXG4gICAgICAgIHJlbW92ZShub2RlKTtcclxuICAgICAgICBwYXRjaChudWxsLCB2bm9kZSwgY29udGFpbmVyLCBuZXh0LCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWR0NvbnRhaW5lcihjb250YWluZXIpLCBzbG90U2NvcGVJZHMpO1xyXG4gICAgICAgIHJldHVybiBuZXh0O1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGxvY2F0ZUNsb3NpbmdBc3luY0FuY2hvciA9IChub2RlKSA9PiB7XHJcbiAgICAgICAgbGV0IG1hdGNoID0gMDtcclxuICAgICAgICB3aGlsZSAobm9kZSkge1xyXG4gICAgICAgICAgICBub2RlID0gbmV4dFNpYmxpbmcobm9kZSk7XHJcbiAgICAgICAgICAgIGlmIChub2RlICYmIGlzQ29tbWVudChub2RlKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKG5vZGUuZGF0YSA9PT0gJ1snKVxyXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoKys7XHJcbiAgICAgICAgICAgICAgICBpZiAobm9kZS5kYXRhID09PSAnXScpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2ggPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5leHRTaWJsaW5nKG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gtLTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIFtoeWRyYXRlLCBoeWRyYXRlTm9kZV07XHJcbn1cblxuLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzICovXHJcbmxldCBzdXBwb3J0ZWQ7XHJcbmxldCBwZXJmO1xyXG5mdW5jdGlvbiBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIHR5cGUpIHtcclxuICAgIGlmIChpbnN0YW5jZS5hcHBDb250ZXh0LmNvbmZpZy5wZXJmb3JtYW5jZSAmJiBpc1N1cHBvcnRlZCgpKSB7XHJcbiAgICAgICAgcGVyZi5tYXJrKGB2dWUtJHt0eXBlfS0ke2luc3RhbmNlLnVpZH1gKTtcclxuICAgIH1cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgZGV2dG9vbHNQZXJmU3RhcnQoaW5zdGFuY2UsIHR5cGUsIGlzU3VwcG9ydGVkKCkgPyBwZXJmLm5vdygpIDogRGF0ZS5ub3coKSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZW5kTWVhc3VyZShpbnN0YW5jZSwgdHlwZSkge1xyXG4gICAgaWYgKGluc3RhbmNlLmFwcENvbnRleHQuY29uZmlnLnBlcmZvcm1hbmNlICYmIGlzU3VwcG9ydGVkKCkpIHtcclxuICAgICAgICBjb25zdCBzdGFydFRhZyA9IGB2dWUtJHt0eXBlfS0ke2luc3RhbmNlLnVpZH1gO1xyXG4gICAgICAgIGNvbnN0IGVuZFRhZyA9IHN0YXJ0VGFnICsgYDplbmRgO1xyXG4gICAgICAgIHBlcmYubWFyayhlbmRUYWcpO1xyXG4gICAgICAgIHBlcmYubWVhc3VyZShgPCR7Zm9ybWF0Q29tcG9uZW50TmFtZShpbnN0YW5jZSwgaW5zdGFuY2UudHlwZSl9PiAke3R5cGV9YCwgc3RhcnRUYWcsIGVuZFRhZyk7XHJcbiAgICAgICAgcGVyZi5jbGVhck1hcmtzKHN0YXJ0VGFnKTtcclxuICAgICAgICBwZXJmLmNsZWFyTWFya3MoZW5kVGFnKTtcclxuICAgIH1cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgZGV2dG9vbHNQZXJmRW5kKGluc3RhbmNlLCB0eXBlLCBpc1N1cHBvcnRlZCgpID8gcGVyZi5ub3coKSA6IERhdGUubm93KCkpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGlzU3VwcG9ydGVkKCkge1xyXG4gICAgaWYgKHN1cHBvcnRlZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcmV0dXJuIHN1cHBvcnRlZDtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cucGVyZm9ybWFuY2UpIHtcclxuICAgICAgICBzdXBwb3J0ZWQgPSB0cnVlO1xyXG4gICAgICAgIHBlcmYgPSB3aW5kb3cucGVyZm9ybWFuY2U7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBzdXBwb3J0ZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdXBwb3J0ZWQ7XHJcbn1cblxuLyoqXHJcbiAqIFRoaXMgaXMgb25seSBjYWxsZWQgaW4gZXNtLWJ1bmRsZXIgYnVpbGRzLlxyXG4gKiBJdCBpcyBjYWxsZWQgd2hlbiBhIHJlbmRlcmVyIGlzIGNyZWF0ZWQsIGluIGBiYXNlQ3JlYXRlUmVuZGVyZXJgIHNvIHRoYXRcclxuICogaW1wb3J0aW5nIHJ1bnRpbWUtY29yZSBpcyBzaWRlLWVmZmVjdHMgZnJlZS5cclxuICpcclxuICogaXN0YW5idWwtaWdub3JlLW5leHRcclxuICovXHJcbmZ1bmN0aW9uIGluaXRGZWF0dXJlRmxhZ3MoKSB7XHJcbiAgICBjb25zdCBuZWVkV2FybiA9IFtdO1xyXG4gICAgaWYgKHR5cGVvZiBfX1ZVRV9PUFRJT05TX0FQSV9fICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgbmVlZFdhcm4ucHVzaChgX19WVUVfT1BUSU9OU19BUElfX2ApO1xyXG4gICAgICAgIGdldEdsb2JhbFRoaXMoKS5fX1ZVRV9PUFRJT05TX0FQSV9fID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgX19WVUVfUFJPRF9ERVZUT09MU19fICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgbmVlZFdhcm4ucHVzaChgX19WVUVfUFJPRF9ERVZUT09MU19fYCk7XHJcbiAgICAgICAgZ2V0R2xvYmFsVGhpcygpLl9fVlVFX1BST0RfREVWVE9PTFNfXyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBuZWVkV2Fybi5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBtdWx0aSA9IG5lZWRXYXJuLmxlbmd0aCA+IDE7XHJcbiAgICAgICAgY29uc29sZS53YXJuKGBGZWF0dXJlIGZsYWcke211bHRpID8gYHNgIDogYGB9ICR7bmVlZFdhcm4uam9pbignLCAnKX0gJHttdWx0aSA/IGBhcmVgIDogYGlzYH0gbm90IGV4cGxpY2l0bHkgZGVmaW5lZC4gWW91IGFyZSBydW5uaW5nIHRoZSBlc20tYnVuZGxlciBidWlsZCBvZiBWdWUsIGAgK1xyXG4gICAgICAgICAgICBgd2hpY2ggZXhwZWN0cyB0aGVzZSBjb21waWxlLXRpbWUgZmVhdHVyZSBmbGFncyB0byBiZSBnbG9iYWxseSBpbmplY3RlZCBgICtcclxuICAgICAgICAgICAgYHZpYSB0aGUgYnVuZGxlciBjb25maWcgaW4gb3JkZXIgdG8gZ2V0IGJldHRlciB0cmVlLXNoYWtpbmcgaW4gdGhlIGAgK1xyXG4gICAgICAgICAgICBgcHJvZHVjdGlvbiBidW5kbGUuXFxuXFxuYCArXHJcbiAgICAgICAgICAgIGBGb3IgbW9yZSBkZXRhaWxzLCBzZWUgaHR0cHM6Ly9saW5rLnZ1ZWpzLm9yZy9mZWF0dXJlLWZsYWdzLmApO1xyXG4gICAgfVxyXG59XG5cbmNvbnN0IHF1ZXVlUG9zdFJlbmRlckVmZmVjdCA9IHF1ZXVlRWZmZWN0V2l0aFN1c3BlbnNlXHJcbiAgICA7XHJcbi8qKlxyXG4gKiBUaGUgY3JlYXRlUmVuZGVyZXIgZnVuY3Rpb24gYWNjZXB0cyB0d28gZ2VuZXJpYyBhcmd1bWVudHM6XHJcbiAqIEhvc3ROb2RlIGFuZCBIb3N0RWxlbWVudCwgY29ycmVzcG9uZGluZyB0byBOb2RlIGFuZCBFbGVtZW50IHR5cGVzIGluIHRoZVxyXG4gKiBob3N0IGVudmlyb25tZW50LiBGb3IgZXhhbXBsZSwgZm9yIHJ1bnRpbWUtZG9tLCBIb3N0Tm9kZSB3b3VsZCBiZSB0aGUgRE9NXHJcbiAqIGBOb2RlYCBpbnRlcmZhY2UgYW5kIEhvc3RFbGVtZW50IHdvdWxkIGJlIHRoZSBET00gYEVsZW1lbnRgIGludGVyZmFjZS5cclxuICpcclxuICogQ3VzdG9tIHJlbmRlcmVycyBjYW4gcGFzcyBpbiB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgdHlwZXMgbGlrZSB0aGlzOlxyXG4gKlxyXG4gKiBgYGAganNcclxuICogY29uc3QgeyByZW5kZXIsIGNyZWF0ZUFwcCB9ID0gY3JlYXRlUmVuZGVyZXI8Tm9kZSwgRWxlbWVudD4oe1xyXG4gKiAgIHBhdGNoUHJvcCxcclxuICogICAuLi5ub2RlT3BzXHJcbiAqIH0pXHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlUmVuZGVyZXIob3B0aW9ucykge1xyXG4gICAgcmV0dXJuIGJhc2VDcmVhdGVSZW5kZXJlcihvcHRpb25zKTtcclxufVxyXG4vLyBTZXBhcmF0ZSBBUEkgZm9yIGNyZWF0aW5nIGh5ZHJhdGlvbi1lbmFibGVkIHJlbmRlcmVyLlxyXG4vLyBIeWRyYXRpb24gbG9naWMgaXMgb25seSB1c2VkIHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCBtYWtpbmcgaXRcclxuLy8gdHJlZS1zaGFrYWJsZS5cclxuZnVuY3Rpb24gY3JlYXRlSHlkcmF0aW9uUmVuZGVyZXIob3B0aW9ucykge1xyXG4gICAgcmV0dXJuIGJhc2VDcmVhdGVSZW5kZXJlcihvcHRpb25zLCBjcmVhdGVIeWRyYXRpb25GdW5jdGlvbnMpO1xyXG59XHJcbi8vIGltcGxlbWVudGF0aW9uXHJcbmZ1bmN0aW9uIGJhc2VDcmVhdGVSZW5kZXJlcihvcHRpb25zLCBjcmVhdGVIeWRyYXRpb25GbnMpIHtcclxuICAgIC8vIGNvbXBpbGUtdGltZSBmZWF0dXJlIGZsYWdzIGNoZWNrXHJcbiAgICB7XHJcbiAgICAgICAgaW5pdEZlYXR1cmVGbGFncygpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdGFyZ2V0ID0gZ2V0R2xvYmFsVGhpcygpO1xyXG4gICAgdGFyZ2V0Ll9fVlVFX18gPSB0cnVlO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICBzZXREZXZ0b29sc0hvb2sodGFyZ2V0Ll9fVlVFX0RFVlRPT0xTX0dMT0JBTF9IT09LX18sIHRhcmdldCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IGluc2VydDogaG9zdEluc2VydCwgcmVtb3ZlOiBob3N0UmVtb3ZlLCBwYXRjaFByb3A6IGhvc3RQYXRjaFByb3AsIGNyZWF0ZUVsZW1lbnQ6IGhvc3RDcmVhdGVFbGVtZW50LCBjcmVhdGVUZXh0OiBob3N0Q3JlYXRlVGV4dCwgY3JlYXRlQ29tbWVudDogaG9zdENyZWF0ZUNvbW1lbnQsIHNldFRleHQ6IGhvc3RTZXRUZXh0LCBzZXRFbGVtZW50VGV4dDogaG9zdFNldEVsZW1lbnRUZXh0LCBwYXJlbnROb2RlOiBob3N0UGFyZW50Tm9kZSwgbmV4dFNpYmxpbmc6IGhvc3ROZXh0U2libGluZywgc2V0U2NvcGVJZDogaG9zdFNldFNjb3BlSWQgPSBOT09QLCBjbG9uZU5vZGU6IGhvc3RDbG9uZU5vZGUsIGluc2VydFN0YXRpY0NvbnRlbnQ6IGhvc3RJbnNlcnRTdGF0aWNDb250ZW50IH0gPSBvcHRpb25zO1xyXG4gICAgLy8gTm90ZTogZnVuY3Rpb25zIGluc2lkZSB0aGlzIGNsb3N1cmUgc2hvdWxkIHVzZSBgY29uc3QgeHh4ID0gKCkgPT4ge31gXHJcbiAgICAvLyBzdHlsZSBpbiBvcmRlciB0byBwcmV2ZW50IGJlaW5nIGlubGluZWQgYnkgbWluaWZpZXJzLlxyXG4gICAgY29uc3QgcGF0Y2ggPSAobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciA9IG51bGwsIHBhcmVudENvbXBvbmVudCA9IG51bGwsIHBhcmVudFN1c3BlbnNlID0gbnVsbCwgaXNTVkcgPSBmYWxzZSwgc2xvdFNjb3BlSWRzID0gbnVsbCwgb3B0aW1pemVkID0gKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGlzSG1yVXBkYXRpbmcgPyBmYWxzZSA6ICEhbjIuZHluYW1pY0NoaWxkcmVuKSA9PiB7XHJcbiAgICAgICAgaWYgKG4xID09PSBuMikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHBhdGNoaW5nICYgbm90IHNhbWUgdHlwZSwgdW5tb3VudCBvbGQgdHJlZVxyXG4gICAgICAgIGlmIChuMSAmJiAhaXNTYW1lVk5vZGVUeXBlKG4xLCBuMikpIHtcclxuICAgICAgICAgICAgYW5jaG9yID0gZ2V0TmV4dEhvc3ROb2RlKG4xKTtcclxuICAgICAgICAgICAgdW5tb3VudChuMSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIG4xID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG4yLnBhdGNoRmxhZyA9PT0gLTIgLyogUGF0Y2hGbGFncy5CQUlMICovKSB7XHJcbiAgICAgICAgICAgIG9wdGltaXplZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBuMi5keW5hbWljQ2hpbGRyZW4gPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB7IHR5cGUsIHJlZiwgc2hhcGVGbGFnIH0gPSBuMjtcclxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBUZXh0OlxyXG4gICAgICAgICAgICAgICAgcHJvY2Vzc1RleHQobjEsIG4yLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBDb21tZW50OlxyXG4gICAgICAgICAgICAgICAgcHJvY2Vzc0NvbW1lbnROb2RlKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgU3RhdGljOlxyXG4gICAgICAgICAgICAgICAgaWYgKG4xID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBtb3VudFN0YXRpY05vZGUobjIsIGNvbnRhaW5lciwgYW5jaG9yLCBpc1NWRyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXRjaFN0YXRpY05vZGUobjEsIG4yLCBjb250YWluZXIsIGlzU1ZHKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEZyYWdtZW50OlxyXG4gICAgICAgICAgICAgICAgcHJvY2Vzc0ZyYWdtZW50KG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGlmIChzaGFwZUZsYWcgJiAxIC8qIFNoYXBlRmxhZ3MuRUxFTUVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NFbGVtZW50KG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzaGFwZUZsYWcgJiA2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0NvbXBvbmVudChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2hhcGVGbGFnICYgNjQgLyogU2hhcGVGbGFncy5URUxFUE9SVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGUucHJvY2VzcyhuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIGludGVybmFscyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzaGFwZUZsYWcgJiAxMjggLyogU2hhcGVGbGFncy5TVVNQRU5TRSAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGUucHJvY2VzcyhuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIGludGVybmFscyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKCdJbnZhbGlkIFZOb2RlIHR5cGU6JywgdHlwZSwgYCgke3R5cGVvZiB0eXBlfSlgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gc2V0IHJlZlxyXG4gICAgICAgIGlmIChyZWYgIT0gbnVsbCAmJiBwYXJlbnRDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgc2V0UmVmKHJlZiwgbjEgJiYgbjEucmVmLCBwYXJlbnRTdXNwZW5zZSwgbjIgfHwgbjEsICFuMik7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHByb2Nlc3NUZXh0ID0gKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IpID0+IHtcclxuICAgICAgICBpZiAobjEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBob3N0SW5zZXJ0KChuMi5lbCA9IGhvc3RDcmVhdGVUZXh0KG4yLmNoaWxkcmVuKSksIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsID0gKG4yLmVsID0gbjEuZWwpO1xyXG4gICAgICAgICAgICBpZiAobjIuY2hpbGRyZW4gIT09IG4xLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICBob3N0U2V0VGV4dChlbCwgbjIuY2hpbGRyZW4pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHByb2Nlc3NDb21tZW50Tm9kZSA9IChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yKSA9PiB7XHJcbiAgICAgICAgaWYgKG4xID09IG51bGwpIHtcclxuICAgICAgICAgICAgaG9zdEluc2VydCgobjIuZWwgPSBob3N0Q3JlYXRlQ29tbWVudChuMi5jaGlsZHJlbiB8fCAnJykpLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyB0aGVyZSdzIG5vIHN1cHBvcnQgZm9yIGR5bmFtaWMgY29tbWVudHNcclxuICAgICAgICAgICAgbjIuZWwgPSBuMS5lbDtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgbW91bnRTdGF0aWNOb2RlID0gKG4yLCBjb250YWluZXIsIGFuY2hvciwgaXNTVkcpID0+IHtcclxuICAgICAgICBbbjIuZWwsIG4yLmFuY2hvcl0gPSBob3N0SW5zZXJ0U3RhdGljQ29udGVudChuMi5jaGlsZHJlbiwgY29udGFpbmVyLCBhbmNob3IsIGlzU1ZHLCBuMi5lbCwgbjIuYW5jaG9yKTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIERldiAvIEhNUiBvbmx5XHJcbiAgICAgKi9cclxuICAgIGNvbnN0IHBhdGNoU3RhdGljTm9kZSA9IChuMSwgbjIsIGNvbnRhaW5lciwgaXNTVkcpID0+IHtcclxuICAgICAgICAvLyBzdGF0aWMgbm9kZXMgYXJlIG9ubHkgcGF0Y2hlZCBkdXJpbmcgZGV2IGZvciBITVJcclxuICAgICAgICBpZiAobjIuY2hpbGRyZW4gIT09IG4xLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFuY2hvciA9IGhvc3ROZXh0U2libGluZyhuMS5hbmNob3IpO1xyXG4gICAgICAgICAgICAvLyByZW1vdmUgZXhpc3RpbmdcclxuICAgICAgICAgICAgcmVtb3ZlU3RhdGljTm9kZShuMSk7XHJcbiAgICAgICAgICAgIFtuMi5lbCwgbjIuYW5jaG9yXSA9IGhvc3RJbnNlcnRTdGF0aWNDb250ZW50KG4yLmNoaWxkcmVuLCBjb250YWluZXIsIGFuY2hvciwgaXNTVkcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbjIuZWwgPSBuMS5lbDtcclxuICAgICAgICAgICAgbjIuYW5jaG9yID0gbjEuYW5jaG9yO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBtb3ZlU3RhdGljTm9kZSA9ICh7IGVsLCBhbmNob3IgfSwgY29udGFpbmVyLCBuZXh0U2libGluZykgPT4ge1xyXG4gICAgICAgIGxldCBuZXh0O1xyXG4gICAgICAgIHdoaWxlIChlbCAmJiBlbCAhPT0gYW5jaG9yKSB7XHJcbiAgICAgICAgICAgIG5leHQgPSBob3N0TmV4dFNpYmxpbmcoZWwpO1xyXG4gICAgICAgICAgICBob3N0SW5zZXJ0KGVsLCBjb250YWluZXIsIG5leHRTaWJsaW5nKTtcclxuICAgICAgICAgICAgZWwgPSBuZXh0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBob3N0SW5zZXJ0KGFuY2hvciwgY29udGFpbmVyLCBuZXh0U2libGluZyk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcmVtb3ZlU3RhdGljTm9kZSA9ICh7IGVsLCBhbmNob3IgfSkgPT4ge1xyXG4gICAgICAgIGxldCBuZXh0O1xyXG4gICAgICAgIHdoaWxlIChlbCAmJiBlbCAhPT0gYW5jaG9yKSB7XHJcbiAgICAgICAgICAgIG5leHQgPSBob3N0TmV4dFNpYmxpbmcoZWwpO1xyXG4gICAgICAgICAgICBob3N0UmVtb3ZlKGVsKTtcclxuICAgICAgICAgICAgZWwgPSBuZXh0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBob3N0UmVtb3ZlKGFuY2hvcik7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcHJvY2Vzc0VsZW1lbnQgPSAobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgaXNTVkcgPSBpc1NWRyB8fCBuMi50eXBlID09PSAnc3ZnJztcclxuICAgICAgICBpZiAobjEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBtb3VudEVsZW1lbnQobjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcGF0Y2hFbGVtZW50KG4xLCBuMiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgbW91bnRFbGVtZW50ID0gKHZub2RlLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgbGV0IGVsO1xyXG4gICAgICAgIGxldCB2bm9kZUhvb2s7XHJcbiAgICAgICAgY29uc3QgeyB0eXBlLCBwcm9wcywgc2hhcGVGbGFnLCB0cmFuc2l0aW9uLCBwYXRjaEZsYWcsIGRpcnMgfSA9IHZub2RlO1xyXG4gICAgICAgIGlmICghKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgIHZub2RlLmVsICYmXHJcbiAgICAgICAgICAgIGhvc3RDbG9uZU5vZGUgIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgICBwYXRjaEZsYWcgPT09IC0xIC8qIFBhdGNoRmxhZ3MuSE9JU1RFRCAqLykge1xyXG4gICAgICAgICAgICAvLyBJZiBhIHZub2RlIGhhcyBub24tbnVsbCBlbCwgaXQgbWVhbnMgaXQncyBiZWluZyByZXVzZWQuXHJcbiAgICAgICAgICAgIC8vIE9ubHkgc3RhdGljIHZub2RlcyBjYW4gYmUgcmV1c2VkLCBzbyBpdHMgbW91bnRlZCBET00gbm9kZXMgc2hvdWxkIGJlXHJcbiAgICAgICAgICAgIC8vIGV4YWN0bHkgdGhlIHNhbWUsIGFuZCB3ZSBjYW4gc2ltcGx5IGRvIGEgY2xvbmUgaGVyZS5cclxuICAgICAgICAgICAgLy8gb25seSBkbyB0aGlzIGluIHByb2R1Y3Rpb24gc2luY2UgY2xvbmVkIHRyZWVzIGNhbm5vdCBiZSBITVIgdXBkYXRlZC5cclxuICAgICAgICAgICAgZWwgPSB2bm9kZS5lbCA9IGhvc3RDbG9uZU5vZGUodm5vZGUuZWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZWwgPSB2bm9kZS5lbCA9IGhvc3RDcmVhdGVFbGVtZW50KHZub2RlLnR5cGUsIGlzU1ZHLCBwcm9wcyAmJiBwcm9wcy5pcywgcHJvcHMpO1xyXG4gICAgICAgICAgICAvLyBtb3VudCBjaGlsZHJlbiBmaXJzdCwgc2luY2Ugc29tZSBwcm9wcyBtYXkgcmVseSBvbiBjaGlsZCBjb250ZW50XHJcbiAgICAgICAgICAgIC8vIGJlaW5nIGFscmVhZHkgcmVuZGVyZWQsIGUuZy4gYDxzZWxlY3QgdmFsdWU+YFxyXG4gICAgICAgICAgICBpZiAoc2hhcGVGbGFnICYgOCAvKiBTaGFwZUZsYWdzLlRFWFRfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgICAgIGhvc3RTZXRFbGVtZW50VGV4dChlbCwgdm5vZGUuY2hpbGRyZW4pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHNoYXBlRmxhZyAmIDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgICAgIG1vdW50Q2hpbGRyZW4odm5vZGUuY2hpbGRyZW4sIGVsLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRyAmJiB0eXBlICE9PSAnZm9yZWlnbk9iamVjdCcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZGlycykge1xyXG4gICAgICAgICAgICAgICAgaW52b2tlRGlyZWN0aXZlSG9vayh2bm9kZSwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCAnY3JlYXRlZCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHByb3BzXHJcbiAgICAgICAgICAgIGlmIChwcm9wcykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcHJvcHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ICE9PSAndmFsdWUnICYmICFpc1Jlc2VydmVkUHJvcChrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RQYXRjaFByb3AoZWwsIGtleSwgbnVsbCwgcHJvcHNba2V5XSwgaXNTVkcsIHZub2RlLmNoaWxkcmVuLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB1bm1vdW50Q2hpbGRyZW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgICAgICogU3BlY2lhbCBjYXNlIGZvciBzZXR0aW5nIHZhbHVlIG9uIERPTSBlbGVtZW50czpcclxuICAgICAgICAgICAgICAgICAqIC0gaXQgY2FuIGJlIG9yZGVyLXNlbnNpdGl2ZSAoZS5nLiBzaG91bGQgYmUgc2V0ICphZnRlciogbWluL21heCwgIzIzMjUsICM0MDI0KVxyXG4gICAgICAgICAgICAgICAgICogLSBpdCBuZWVkcyB0byBiZSBmb3JjZWQgKCMxNDcxKVxyXG4gICAgICAgICAgICAgICAgICogIzIzNTMgcHJvcG9zZXMgYWRkaW5nIGFub3RoZXIgcmVuZGVyZXIgb3B0aW9uIHRvIGNvbmZpZ3VyZSB0aGlzLCBidXRcclxuICAgICAgICAgICAgICAgICAqIHRoZSBwcm9wZXJ0aWVzIGFmZmVjdHMgYXJlIHNvIGZpbml0ZSBpdCBpcyB3b3J0aCBzcGVjaWFsIGNhc2luZyBpdFxyXG4gICAgICAgICAgICAgICAgICogaGVyZSB0byByZWR1Y2UgdGhlIGNvbXBsZXhpdHkuIChTcGVjaWFsIGNhc2luZyBpdCBhbHNvIHNob3VsZCBub3RcclxuICAgICAgICAgICAgICAgICAqIGFmZmVjdCBub24tRE9NIHJlbmRlcmVycylcclxuICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKCd2YWx1ZScgaW4gcHJvcHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBob3N0UGF0Y2hQcm9wKGVsLCAndmFsdWUnLCBudWxsLCBwcm9wcy52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoKHZub2RlSG9vayA9IHByb3BzLm9uVm5vZGVCZWZvcmVNb3VudCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBwYXJlbnRDb21wb25lbnQsIHZub2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBzY29wZUlkXHJcbiAgICAgICAgICAgIHNldFNjb3BlSWQoZWwsIHZub2RlLCB2bm9kZS5zY29wZUlkLCBzbG90U2NvcGVJZHMsIHBhcmVudENvbXBvbmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbCwgJ19fdm5vZGUnLCB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogdm5vZGUsXHJcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsLCAnX192dWVQYXJlbnRDb21wb25lbnQnLCB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogcGFyZW50Q29tcG9uZW50LFxyXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2VcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkaXJzKSB7XHJcbiAgICAgICAgICAgIGludm9rZURpcmVjdGl2ZUhvb2sodm5vZGUsIG51bGwsIHBhcmVudENvbXBvbmVudCwgJ2JlZm9yZU1vdW50Jyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vICMxNTgzIEZvciBpbnNpZGUgc3VzcGVuc2UgKyBzdXNwZW5zZSBub3QgcmVzb2x2ZWQgY2FzZSwgZW50ZXIgaG9vayBzaG91bGQgY2FsbCB3aGVuIHN1c3BlbnNlIHJlc29sdmVkXHJcbiAgICAgICAgLy8gIzE2ODkgRm9yIGluc2lkZSBzdXNwZW5zZSArIHN1c3BlbnNlIHJlc29sdmVkIGNhc2UsIGp1c3QgY2FsbCBpdFxyXG4gICAgICAgIGNvbnN0IG5lZWRDYWxsVHJhbnNpdGlvbkhvb2tzID0gKCFwYXJlbnRTdXNwZW5zZSB8fCAocGFyZW50U3VzcGVuc2UgJiYgIXBhcmVudFN1c3BlbnNlLnBlbmRpbmdCcmFuY2gpKSAmJlxyXG4gICAgICAgICAgICB0cmFuc2l0aW9uICYmXHJcbiAgICAgICAgICAgICF0cmFuc2l0aW9uLnBlcnNpc3RlZDtcclxuICAgICAgICBpZiAobmVlZENhbGxUcmFuc2l0aW9uSG9va3MpIHtcclxuICAgICAgICAgICAgdHJhbnNpdGlvbi5iZWZvcmVFbnRlcihlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGhvc3RJbnNlcnQoZWwsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICBpZiAoKHZub2RlSG9vayA9IHByb3BzICYmIHByb3BzLm9uVm5vZGVNb3VudGVkKSB8fFxyXG4gICAgICAgICAgICBuZWVkQ2FsbFRyYW5zaXRpb25Ib29rcyB8fFxyXG4gICAgICAgICAgICBkaXJzKSB7XHJcbiAgICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZUhvb2sgJiYgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50Q29tcG9uZW50LCB2bm9kZSk7XHJcbiAgICAgICAgICAgICAgICBuZWVkQ2FsbFRyYW5zaXRpb25Ib29rcyAmJiB0cmFuc2l0aW9uLmVudGVyKGVsKTtcclxuICAgICAgICAgICAgICAgIGRpcnMgJiYgaW52b2tlRGlyZWN0aXZlSG9vayh2bm9kZSwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCAnbW91bnRlZCcpO1xyXG4gICAgICAgICAgICB9LCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHNldFNjb3BlSWQgPSAoZWwsIHZub2RlLCBzY29wZUlkLCBzbG90U2NvcGVJZHMsIHBhcmVudENvbXBvbmVudCkgPT4ge1xyXG4gICAgICAgIGlmIChzY29wZUlkKSB7XHJcbiAgICAgICAgICAgIGhvc3RTZXRTY29wZUlkKGVsLCBzY29wZUlkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNsb3RTY29wZUlkcykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNsb3RTY29wZUlkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgaG9zdFNldFNjb3BlSWQoZWwsIHNsb3RTY29wZUlkc1tpXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhcmVudENvbXBvbmVudCkge1xyXG4gICAgICAgICAgICBsZXQgc3ViVHJlZSA9IHBhcmVudENvbXBvbmVudC5zdWJUcmVlO1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICBzdWJUcmVlLnBhdGNoRmxhZyA+IDAgJiZcclxuICAgICAgICAgICAgICAgIHN1YlRyZWUucGF0Y2hGbGFnICYgMjA0OCAvKiBQYXRjaEZsYWdzLkRFVl9ST09UX0ZSQUdNRU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICBzdWJUcmVlID1cclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJTaW5nbGVSb290KHN1YlRyZWUuY2hpbGRyZW4pIHx8IHN1YlRyZWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZub2RlID09PSBzdWJUcmVlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRWTm9kZSA9IHBhcmVudENvbXBvbmVudC52bm9kZTtcclxuICAgICAgICAgICAgICAgIHNldFNjb3BlSWQoZWwsIHBhcmVudFZOb2RlLCBwYXJlbnRWTm9kZS5zY29wZUlkLCBwYXJlbnRWTm9kZS5zbG90U2NvcGVJZHMsIHBhcmVudENvbXBvbmVudC5wYXJlbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IG1vdW50Q2hpbGRyZW4gPSAoY2hpbGRyZW4sIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIHN0YXJ0ID0gMCkgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gKGNoaWxkcmVuW2ldID0gb3B0aW1pemVkXHJcbiAgICAgICAgICAgICAgICA/IGNsb25lSWZNb3VudGVkKGNoaWxkcmVuW2ldKVxyXG4gICAgICAgICAgICAgICAgOiBub3JtYWxpemVWTm9kZShjaGlsZHJlbltpXSkpO1xyXG4gICAgICAgICAgICBwYXRjaChudWxsLCBjaGlsZCwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHBhdGNoRWxlbWVudCA9IChuMSwgbjIsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVsID0gKG4yLmVsID0gbjEuZWwpO1xyXG4gICAgICAgIGxldCB7IHBhdGNoRmxhZywgZHluYW1pY0NoaWxkcmVuLCBkaXJzIH0gPSBuMjtcclxuICAgICAgICAvLyAjMTQyNiB0YWtlIHRoZSBvbGQgdm5vZGUncyBwYXRjaCBmbGFnIGludG8gYWNjb3VudCBzaW5jZSB1c2VyIG1heSBjbG9uZSBhXHJcbiAgICAgICAgLy8gY29tcGlsZXItZ2VuZXJhdGVkIHZub2RlLCB3aGljaCBkZS1vcHRzIHRvIEZVTExfUFJPUFNcclxuICAgICAgICBwYXRjaEZsYWcgfD0gbjEucGF0Y2hGbGFnICYgMTYgLyogUGF0Y2hGbGFncy5GVUxMX1BST1BTICovO1xyXG4gICAgICAgIGNvbnN0IG9sZFByb3BzID0gbjEucHJvcHMgfHwgRU1QVFlfT0JKO1xyXG4gICAgICAgIGNvbnN0IG5ld1Byb3BzID0gbjIucHJvcHMgfHwgRU1QVFlfT0JKO1xyXG4gICAgICAgIGxldCB2bm9kZUhvb2s7XHJcbiAgICAgICAgLy8gZGlzYWJsZSByZWN1cnNlIGluIGJlZm9yZVVwZGF0ZSBob29rc1xyXG4gICAgICAgIHBhcmVudENvbXBvbmVudCAmJiB0b2dnbGVSZWN1cnNlKHBhcmVudENvbXBvbmVudCwgZmFsc2UpO1xyXG4gICAgICAgIGlmICgodm5vZGVIb29rID0gbmV3UHJvcHMub25Wbm9kZUJlZm9yZVVwZGF0ZSkpIHtcclxuICAgICAgICAgICAgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50Q29tcG9uZW50LCBuMiwgbjEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGlycykge1xyXG4gICAgICAgICAgICBpbnZva2VEaXJlY3RpdmVIb29rKG4yLCBuMSwgcGFyZW50Q29tcG9uZW50LCAnYmVmb3JlVXBkYXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBhcmVudENvbXBvbmVudCAmJiB0b2dnbGVSZWN1cnNlKHBhcmVudENvbXBvbmVudCwgdHJ1ZSk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBpc0htclVwZGF0aW5nKSB7XHJcbiAgICAgICAgICAgIC8vIEhNUiB1cGRhdGVkLCBmb3JjZSBmdWxsIGRpZmZcclxuICAgICAgICAgICAgcGF0Y2hGbGFnID0gMDtcclxuICAgICAgICAgICAgb3B0aW1pemVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGR5bmFtaWNDaGlsZHJlbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGFyZUNoaWxkcmVuU1ZHID0gaXNTVkcgJiYgbjIudHlwZSAhPT0gJ2ZvcmVpZ25PYmplY3QnO1xyXG4gICAgICAgIGlmIChkeW5hbWljQ2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgcGF0Y2hCbG9ja0NoaWxkcmVuKG4xLmR5bmFtaWNDaGlsZHJlbiwgZHluYW1pY0NoaWxkcmVuLCBlbCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgYXJlQ2hpbGRyZW5TVkcsIHNsb3RTY29wZUlkcyk7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgcGFyZW50Q29tcG9uZW50ICYmIHBhcmVudENvbXBvbmVudC50eXBlLl9faG1ySWQpIHtcclxuICAgICAgICAgICAgICAgIHRyYXZlcnNlU3RhdGljQ2hpbGRyZW4objEsIG4yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICghb3B0aW1pemVkKSB7XHJcbiAgICAgICAgICAgIC8vIGZ1bGwgZGlmZlxyXG4gICAgICAgICAgICBwYXRjaENoaWxkcmVuKG4xLCBuMiwgZWwsIG51bGwsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGFyZUNoaWxkcmVuU1ZHLCBzbG90U2NvcGVJZHMsIGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhdGNoRmxhZyA+IDApIHtcclxuICAgICAgICAgICAgLy8gdGhlIHByZXNlbmNlIG9mIGEgcGF0Y2hGbGFnIG1lYW5zIHRoaXMgZWxlbWVudCdzIHJlbmRlciBjb2RlIHdhc1xyXG4gICAgICAgICAgICAvLyBnZW5lcmF0ZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBjYW4gdGFrZSB0aGUgZmFzdCBwYXRoLlxyXG4gICAgICAgICAgICAvLyBpbiB0aGlzIHBhdGggb2xkIG5vZGUgYW5kIG5ldyBub2RlIGFyZSBndWFyYW50ZWVkIHRvIGhhdmUgdGhlIHNhbWUgc2hhcGVcclxuICAgICAgICAgICAgLy8gKGkuZS4gYXQgdGhlIGV4YWN0IHNhbWUgcG9zaXRpb24gaW4gdGhlIHNvdXJjZSB0ZW1wbGF0ZSlcclxuICAgICAgICAgICAgaWYgKHBhdGNoRmxhZyAmIDE2IC8qIFBhdGNoRmxhZ3MuRlVMTF9QUk9QUyAqLykge1xyXG4gICAgICAgICAgICAgICAgLy8gZWxlbWVudCBwcm9wcyBjb250YWluIGR5bmFtaWMga2V5cywgZnVsbCBkaWZmIG5lZWRlZFxyXG4gICAgICAgICAgICAgICAgcGF0Y2hQcm9wcyhlbCwgbjIsIG9sZFByb3BzLCBuZXdQcm9wcywgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gY2xhc3NcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMgZmxhZyBpcyBtYXRjaGVkIHdoZW4gdGhlIGVsZW1lbnQgaGFzIGR5bmFtaWMgY2xhc3MgYmluZGluZ3MuXHJcbiAgICAgICAgICAgICAgICBpZiAocGF0Y2hGbGFnICYgMiAvKiBQYXRjaEZsYWdzLkNMQVNTICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9sZFByb3BzLmNsYXNzICE9PSBuZXdQcm9wcy5jbGFzcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBob3N0UGF0Y2hQcm9wKGVsLCAnY2xhc3MnLCBudWxsLCBuZXdQcm9wcy5jbGFzcywgaXNTVkcpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIHN0eWxlXHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzIGZsYWcgaXMgbWF0Y2hlZCB3aGVuIHRoZSBlbGVtZW50IGhhcyBkeW5hbWljIHN0eWxlIGJpbmRpbmdzXHJcbiAgICAgICAgICAgICAgICBpZiAocGF0Y2hGbGFnICYgNCAvKiBQYXRjaEZsYWdzLlNUWUxFICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaG9zdFBhdGNoUHJvcChlbCwgJ3N0eWxlJywgb2xkUHJvcHMuc3R5bGUsIG5ld1Byb3BzLnN0eWxlLCBpc1NWRyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBwcm9wc1xyXG4gICAgICAgICAgICAgICAgLy8gVGhpcyBmbGFnIGlzIG1hdGNoZWQgd2hlbiB0aGUgZWxlbWVudCBoYXMgZHluYW1pYyBwcm9wL2F0dHIgYmluZGluZ3NcclxuICAgICAgICAgICAgICAgIC8vIG90aGVyIHRoYW4gY2xhc3MgYW5kIHN0eWxlLiBUaGUga2V5cyBvZiBkeW5hbWljIHByb3AvYXR0cnMgYXJlIHNhdmVkIGZvclxyXG4gICAgICAgICAgICAgICAgLy8gZmFzdGVyIGl0ZXJhdGlvbi5cclxuICAgICAgICAgICAgICAgIC8vIE5vdGUgZHluYW1pYyBrZXlzIGxpa2UgOltmb29dPVwiYmFyXCIgd2lsbCBjYXVzZSB0aGlzIG9wdGltaXphdGlvbiB0b1xyXG4gICAgICAgICAgICAgICAgLy8gYmFpbCBvdXQgYW5kIGdvIHRocm91Z2ggYSBmdWxsIGRpZmYgYmVjYXVzZSB3ZSBuZWVkIHRvIHVuc2V0IHRoZSBvbGQga2V5XHJcbiAgICAgICAgICAgICAgICBpZiAocGF0Y2hGbGFnICYgOCAvKiBQYXRjaEZsYWdzLlBST1BTICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGZsYWcgaXMgcHJlc2VudCB0aGVuIGR5bmFtaWNQcm9wcyBtdXN0IGJlIG5vbi1udWxsXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvcHNUb1VwZGF0ZSA9IG4yLmR5bmFtaWNQcm9wcztcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzVG9VcGRhdGUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gcHJvcHNUb1VwZGF0ZVtpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldiA9IG9sZFByb3BzW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSBuZXdQcm9wc1trZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAjMTQ3MSBmb3JjZSBwYXRjaCB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dCAhPT0gcHJldiB8fCBrZXkgPT09ICd2YWx1ZScpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RQYXRjaFByb3AoZWwsIGtleSwgcHJldiwgbmV4dCwgaXNTVkcsIG4xLmNoaWxkcmVuLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB1bm1vdW50Q2hpbGRyZW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHRleHRcclxuICAgICAgICAgICAgLy8gVGhpcyBmbGFnIGlzIG1hdGNoZWQgd2hlbiB0aGUgZWxlbWVudCBoYXMgb25seSBkeW5hbWljIHRleHQgY2hpbGRyZW4uXHJcbiAgICAgICAgICAgIGlmIChwYXRjaEZsYWcgJiAxIC8qIFBhdGNoRmxhZ3MuVEVYVCAqLykge1xyXG4gICAgICAgICAgICAgICAgaWYgKG4xLmNoaWxkcmVuICE9PSBuMi5jaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgICAgIGhvc3RTZXRFbGVtZW50VGV4dChlbCwgbjIuY2hpbGRyZW4pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKCFvcHRpbWl6ZWQgJiYgZHluYW1pY0NoaWxkcmVuID09IG51bGwpIHtcclxuICAgICAgICAgICAgLy8gdW5vcHRpbWl6ZWQsIGZ1bGwgZGlmZlxyXG4gICAgICAgICAgICBwYXRjaFByb3BzKGVsLCBuMiwgb2xkUHJvcHMsIG5ld1Byb3BzLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgodm5vZGVIb29rID0gbmV3UHJvcHMub25Wbm9kZVVwZGF0ZWQpIHx8IGRpcnMpIHtcclxuICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHZub2RlSG9vayAmJiBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBwYXJlbnRDb21wb25lbnQsIG4yLCBuMSk7XHJcbiAgICAgICAgICAgICAgICBkaXJzICYmIGludm9rZURpcmVjdGl2ZUhvb2sobjIsIG4xLCBwYXJlbnRDb21wb25lbnQsICd1cGRhdGVkJyk7XHJcbiAgICAgICAgICAgIH0sIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgLy8gVGhlIGZhc3QgcGF0aCBmb3IgYmxvY2tzLlxyXG4gICAgY29uc3QgcGF0Y2hCbG9ja0NoaWxkcmVuID0gKG9sZENoaWxkcmVuLCBuZXdDaGlsZHJlbiwgZmFsbGJhY2tDb250YWluZXIsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMpID0+IHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5ld0NoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9sZFZOb2RlID0gb2xkQ2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZOb2RlID0gbmV3Q2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgIC8vIERldGVybWluZSB0aGUgY29udGFpbmVyIChwYXJlbnQgZWxlbWVudCkgZm9yIHRoZSBwYXRjaC5cclxuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gXHJcbiAgICAgICAgICAgIC8vIG9sZFZOb2RlIG1heSBiZSBhbiBlcnJvcmVkIGFzeW5jIHNldHVwKCkgY29tcG9uZW50IGluc2lkZSBTdXNwZW5zZVxyXG4gICAgICAgICAgICAvLyB3aGljaCB3aWxsIG5vdCBoYXZlIGEgbW91bnRlZCBlbGVtZW50XHJcbiAgICAgICAgICAgIG9sZFZOb2RlLmVsICYmXHJcbiAgICAgICAgICAgICAgICAvLyAtIEluIHRoZSBjYXNlIG9mIGEgRnJhZ21lbnQsIHdlIG5lZWQgdG8gcHJvdmlkZSB0aGUgYWN0dWFsIHBhcmVudFxyXG4gICAgICAgICAgICAgICAgLy8gb2YgdGhlIEZyYWdtZW50IGl0c2VsZiBzbyBpdCBjYW4gbW92ZSBpdHMgY2hpbGRyZW4uXHJcbiAgICAgICAgICAgICAgICAob2xkVk5vZGUudHlwZSA9PT0gRnJhZ21lbnQgfHxcclxuICAgICAgICAgICAgICAgICAgICAvLyAtIEluIHRoZSBjYXNlIG9mIGRpZmZlcmVudCBub2RlcywgdGhlcmUgaXMgZ29pbmcgdG8gYmUgYSByZXBsYWNlbWVudFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIGFsc28gcmVxdWlyZXMgdGhlIGNvcnJlY3QgcGFyZW50IGNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICFpc1NhbWVWTm9kZVR5cGUob2xkVk5vZGUsIG5ld1ZOb2RlKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIC0gSW4gdGhlIGNhc2Ugb2YgYSBjb21wb25lbnQsIGl0IGNvdWxkIGNvbnRhaW4gYW55dGhpbmcuXHJcbiAgICAgICAgICAgICAgICAgICAgb2xkVk5vZGUuc2hhcGVGbGFnICYgKDYgLyogU2hhcGVGbGFncy5DT01QT05FTlQgKi8gfCA2NCAvKiBTaGFwZUZsYWdzLlRFTEVQT1JUICovKSlcclxuICAgICAgICAgICAgICAgID8gaG9zdFBhcmVudE5vZGUob2xkVk5vZGUuZWwpXHJcbiAgICAgICAgICAgICAgICA6IC8vIEluIG90aGVyIGNhc2VzLCB0aGUgcGFyZW50IGNvbnRhaW5lciBpcyBub3QgYWN0dWFsbHkgdXNlZCBzbyB3ZVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGp1c3QgcGFzcyB0aGUgYmxvY2sgZWxlbWVudCBoZXJlIHRvIGF2b2lkIGEgRE9NIHBhcmVudE5vZGUgY2FsbC5cclxuICAgICAgICAgICAgICAgICAgICBmYWxsYmFja0NvbnRhaW5lcjtcclxuICAgICAgICAgICAgcGF0Y2gob2xkVk5vZGUsIG5ld1ZOb2RlLCBjb250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBwYXRjaFByb3BzID0gKGVsLCB2bm9kZSwgb2xkUHJvcHMsIG5ld1Byb3BzLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRykgPT4ge1xyXG4gICAgICAgIGlmIChvbGRQcm9wcyAhPT0gbmV3UHJvcHMpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbmV3UHJvcHMpIHtcclxuICAgICAgICAgICAgICAgIC8vIGVtcHR5IHN0cmluZyBpcyBub3QgdmFsaWQgcHJvcFxyXG4gICAgICAgICAgICAgICAgaWYgKGlzUmVzZXJ2ZWRQcm9wKGtleSkpXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gbmV3UHJvcHNba2V5XTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHByZXYgPSBvbGRQcm9wc1trZXldO1xyXG4gICAgICAgICAgICAgICAgLy8gZGVmZXIgcGF0Y2hpbmcgdmFsdWVcclxuICAgICAgICAgICAgICAgIGlmIChuZXh0ICE9PSBwcmV2ICYmIGtleSAhPT0gJ3ZhbHVlJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGhvc3RQYXRjaFByb3AoZWwsIGtleSwgcHJldiwgbmV4dCwgaXNTVkcsIHZub2RlLmNoaWxkcmVuLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB1bm1vdW50Q2hpbGRyZW4pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChvbGRQcm9wcyAhPT0gRU1QVFlfT0JKKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvbGRQcm9wcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNSZXNlcnZlZFByb3Aoa2V5KSAmJiAhKGtleSBpbiBuZXdQcm9wcykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaG9zdFBhdGNoUHJvcChlbCwga2V5LCBvbGRQcm9wc1trZXldLCBudWxsLCBpc1NWRywgdm5vZGUuY2hpbGRyZW4sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHVubW91bnRDaGlsZHJlbik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgndmFsdWUnIGluIG5ld1Byb3BzKSB7XHJcbiAgICAgICAgICAgICAgICBob3N0UGF0Y2hQcm9wKGVsLCAndmFsdWUnLCBvbGRQcm9wcy52YWx1ZSwgbmV3UHJvcHMudmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHByb2Nlc3NGcmFnbWVudCA9IChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBjb25zdCBmcmFnbWVudFN0YXJ0QW5jaG9yID0gKG4yLmVsID0gbjEgPyBuMS5lbCA6IGhvc3RDcmVhdGVUZXh0KCcnKSk7XHJcbiAgICAgICAgY29uc3QgZnJhZ21lbnRFbmRBbmNob3IgPSAobjIuYW5jaG9yID0gbjEgPyBuMS5hbmNob3IgOiBob3N0Q3JlYXRlVGV4dCgnJykpO1xyXG4gICAgICAgIGxldCB7IHBhdGNoRmxhZywgZHluYW1pY0NoaWxkcmVuLCBzbG90U2NvcGVJZHM6IGZyYWdtZW50U2xvdFNjb3BlSWRzIH0gPSBuMjtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgIC8vICM1NTIzIGRldiByb290IGZyYWdtZW50IG1heSBpbmhlcml0IGRpcmVjdGl2ZXNcclxuICAgICAgICAgICAgKGlzSG1yVXBkYXRpbmcgfHwgcGF0Y2hGbGFnICYgMjA0OCAvKiBQYXRjaEZsYWdzLkRFVl9ST09UX0ZSQUdNRU5UICovKSkge1xyXG4gICAgICAgICAgICAvLyBITVIgdXBkYXRlZCAvIERldiByb290IGZyYWdtZW50ICh3LyBjb21tZW50cyksIGZvcmNlIGZ1bGwgZGlmZlxyXG4gICAgICAgICAgICBwYXRjaEZsYWcgPSAwO1xyXG4gICAgICAgICAgICBvcHRpbWl6ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgZHluYW1pY0NoaWxkcmVuID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY2hlY2sgaWYgdGhpcyBpcyBhIHNsb3QgZnJhZ21lbnQgd2l0aCA6c2xvdHRlZCBzY29wZSBpZHNcclxuICAgICAgICBpZiAoZnJhZ21lbnRTbG90U2NvcGVJZHMpIHtcclxuICAgICAgICAgICAgc2xvdFNjb3BlSWRzID0gc2xvdFNjb3BlSWRzXHJcbiAgICAgICAgICAgICAgICA/IHNsb3RTY29wZUlkcy5jb25jYXQoZnJhZ21lbnRTbG90U2NvcGVJZHMpXHJcbiAgICAgICAgICAgICAgICA6IGZyYWdtZW50U2xvdFNjb3BlSWRzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobjEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBob3N0SW5zZXJ0KGZyYWdtZW50U3RhcnRBbmNob3IsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICAgICAgaG9zdEluc2VydChmcmFnbWVudEVuZEFuY2hvciwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICAvLyBhIGZyYWdtZW50IGNhbiBvbmx5IGhhdmUgYXJyYXkgY2hpbGRyZW5cclxuICAgICAgICAgICAgLy8gc2luY2UgdGhleSBhcmUgZWl0aGVyIGdlbmVyYXRlZCBieSB0aGUgY29tcGlsZXIsIG9yIGltcGxpY2l0bHkgY3JlYXRlZFxyXG4gICAgICAgICAgICAvLyBmcm9tIGFycmF5cy5cclxuICAgICAgICAgICAgbW91bnRDaGlsZHJlbihuMi5jaGlsZHJlbiwgY29udGFpbmVyLCBmcmFnbWVudEVuZEFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChwYXRjaEZsYWcgPiAwICYmXHJcbiAgICAgICAgICAgICAgICBwYXRjaEZsYWcgJiA2NCAvKiBQYXRjaEZsYWdzLlNUQUJMRV9GUkFHTUVOVCAqLyAmJlxyXG4gICAgICAgICAgICAgICAgZHluYW1pY0NoaWxkcmVuICYmXHJcbiAgICAgICAgICAgICAgICAvLyAjMjcxNSB0aGUgcHJldmlvdXMgZnJhZ21lbnQgY291bGQndmUgYmVlbiBhIEJBSUxlZCBvbmUgYXMgYSByZXN1bHRcclxuICAgICAgICAgICAgICAgIC8vIG9mIHJlbmRlclNsb3QoKSB3aXRoIG5vIHZhbGlkIGNoaWxkcmVuXHJcbiAgICAgICAgICAgICAgICBuMS5keW5hbWljQ2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgIC8vIGEgc3RhYmxlIGZyYWdtZW50ICh0ZW1wbGF0ZSByb290IG9yIDx0ZW1wbGF0ZSB2LWZvcj4pIGRvZXNuJ3QgbmVlZCB0b1xyXG4gICAgICAgICAgICAgICAgLy8gcGF0Y2ggY2hpbGRyZW4gb3JkZXIsIGJ1dCBpdCBtYXkgY29udGFpbiBkeW5hbWljQ2hpbGRyZW4uXHJcbiAgICAgICAgICAgICAgICBwYXRjaEJsb2NrQ2hpbGRyZW4objEuZHluYW1pY0NoaWxkcmVuLCBkeW5hbWljQ2hpbGRyZW4sIGNvbnRhaW5lciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHBhcmVudENvbXBvbmVudCAmJiBwYXJlbnRDb21wb25lbnQudHlwZS5fX2htcklkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2VTdGF0aWNDaGlsZHJlbihuMSwgbjIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgICAvLyAjMjA4MCBpZiB0aGUgc3RhYmxlIGZyYWdtZW50IGhhcyBhIGtleSwgaXQncyBhIDx0ZW1wbGF0ZSB2LWZvcj4gdGhhdCBtYXlcclxuICAgICAgICAgICAgICAgIC8vICBnZXQgbW92ZWQgYXJvdW5kLiBNYWtlIHN1cmUgYWxsIHJvb3QgbGV2ZWwgdm5vZGVzIGluaGVyaXQgZWwuXHJcbiAgICAgICAgICAgICAgICAvLyAjMjEzNCBvciBpZiBpdCdzIGEgY29tcG9uZW50IHJvb3QsIGl0IG1heSBhbHNvIGdldCBtb3ZlZCBhcm91bmRcclxuICAgICAgICAgICAgICAgIC8vIGFzIHRoZSBjb21wb25lbnQgaXMgYmVpbmcgbW92ZWQuXHJcbiAgICAgICAgICAgICAgICBuMi5rZXkgIT0gbnVsbCB8fFxyXG4gICAgICAgICAgICAgICAgICAgIChwYXJlbnRDb21wb25lbnQgJiYgbjIgPT09IHBhcmVudENvbXBvbmVudC5zdWJUcmVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYXZlcnNlU3RhdGljQ2hpbGRyZW4objEsIG4yLCB0cnVlIC8qIHNoYWxsb3cgKi8pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8ga2V5ZWQgLyB1bmtleWVkLCBvciBtYW51YWwgZnJhZ21lbnRzLlxyXG4gICAgICAgICAgICAgICAgLy8gZm9yIGtleWVkICYgdW5rZXllZCwgc2luY2UgdGhleSBhcmUgY29tcGlsZXIgZ2VuZXJhdGVkIGZyb20gdi1mb3IsXHJcbiAgICAgICAgICAgICAgICAvLyBlYWNoIGNoaWxkIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBibG9jayBzbyB0aGUgZnJhZ21lbnQgd2lsbCBuZXZlclxyXG4gICAgICAgICAgICAgICAgLy8gaGF2ZSBkeW5hbWljQ2hpbGRyZW4uXHJcbiAgICAgICAgICAgICAgICBwYXRjaENoaWxkcmVuKG4xLCBuMiwgY29udGFpbmVyLCBmcmFnbWVudEVuZEFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBwcm9jZXNzQ29tcG9uZW50ID0gKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIG4yLnNsb3RTY29wZUlkcyA9IHNsb3RTY29wZUlkcztcclxuICAgICAgICBpZiAobjEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAobjIuc2hhcGVGbGFnICYgNTEyIC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UX0tFUFRfQUxJVkUgKi8pIHtcclxuICAgICAgICAgICAgICAgIHBhcmVudENvbXBvbmVudC5jdHguYWN0aXZhdGUobjIsIGNvbnRhaW5lciwgYW5jaG9yLCBpc1NWRywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG1vdW50Q29tcG9uZW50KG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHVwZGF0ZUNvbXBvbmVudChuMSwgbjIsIG9wdGltaXplZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IG1vdW50Q29tcG9uZW50ID0gKGluaXRpYWxWTm9kZSwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IChpbml0aWFsVk5vZGUuY29tcG9uZW50ID0gY3JlYXRlQ29tcG9uZW50SW5zdGFuY2UoaW5pdGlhbFZOb2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlKSk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBpbnN0YW5jZS50eXBlLl9faG1ySWQpIHtcclxuICAgICAgICAgICAgcmVnaXN0ZXJITVIoaW5zdGFuY2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHB1c2hXYXJuaW5nQ29udGV4dChpbml0aWFsVk5vZGUpO1xyXG4gICAgICAgICAgICBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIGBtb3VudGApO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpbmplY3QgcmVuZGVyZXIgaW50ZXJuYWxzIGZvciBrZWVwQWxpdmVcclxuICAgICAgICBpZiAoaXNLZWVwQWxpdmUoaW5pdGlhbFZOb2RlKSkge1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5jdHgucmVuZGVyZXIgPSBpbnRlcm5hbHM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHJlc29sdmUgcHJvcHMgYW5kIHNsb3RzIGZvciBzZXR1cCBjb250ZXh0XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIGBpbml0YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc2V0dXBDb21wb25lbnQoaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICBlbmRNZWFzdXJlKGluc3RhbmNlLCBgaW5pdGApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHNldHVwKCkgaXMgYXN5bmMuIFRoaXMgY29tcG9uZW50IHJlbGllcyBvbiBhc3luYyBsb2dpYyB0byBiZSByZXNvbHZlZFxyXG4gICAgICAgIC8vIGJlZm9yZSBwcm9jZWVkaW5nXHJcbiAgICAgICAgaWYgKGluc3RhbmNlLmFzeW5jRGVwKSB7XHJcbiAgICAgICAgICAgIHBhcmVudFN1c3BlbnNlICYmIHBhcmVudFN1c3BlbnNlLnJlZ2lzdGVyRGVwKGluc3RhbmNlLCBzZXR1cFJlbmRlckVmZmVjdCk7XHJcbiAgICAgICAgICAgIC8vIEdpdmUgaXQgYSBwbGFjZWhvbGRlciBpZiB0aGlzIGlzIG5vdCBoeWRyYXRpb25cclxuICAgICAgICAgICAgLy8gVE9ETyBoYW5kbGUgc2VsZi1kZWZpbmVkIGZhbGxiYWNrXHJcbiAgICAgICAgICAgIGlmICghaW5pdGlhbFZOb2RlLmVsKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwbGFjZWhvbGRlciA9IChpbnN0YW5jZS5zdWJUcmVlID0gY3JlYXRlVk5vZGUoQ29tbWVudCkpO1xyXG4gICAgICAgICAgICAgICAgcHJvY2Vzc0NvbW1lbnROb2RlKG51bGwsIHBsYWNlaG9sZGVyLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzZXR1cFJlbmRlckVmZmVjdChpbnN0YW5jZSwgaW5pdGlhbFZOb2RlLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgcG9wV2FybmluZ0NvbnRleHQoKTtcclxuICAgICAgICAgICAgZW5kTWVhc3VyZShpbnN0YW5jZSwgYG1vdW50YCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHVwZGF0ZUNvbXBvbmVudCA9IChuMSwgbjIsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGluc3RhbmNlID0gKG4yLmNvbXBvbmVudCA9IG4xLmNvbXBvbmVudCk7XHJcbiAgICAgICAgaWYgKHNob3VsZFVwZGF0ZUNvbXBvbmVudChuMSwgbjIsIG9wdGltaXplZCkpIHtcclxuICAgICAgICAgICAgaWYgKGluc3RhbmNlLmFzeW5jRGVwICYmXHJcbiAgICAgICAgICAgICAgICAhaW5zdGFuY2UuYXN5bmNSZXNvbHZlZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gYXN5bmMgJiBzdGlsbCBwZW5kaW5nIC0ganVzdCB1cGRhdGUgcHJvcHMgYW5kIHNsb3RzXHJcbiAgICAgICAgICAgICAgICAvLyBzaW5jZSB0aGUgY29tcG9uZW50J3MgcmVhY3RpdmUgZWZmZWN0IGZvciByZW5kZXIgaXNuJ3Qgc2V0LXVwIHlldFxyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHB1c2hXYXJuaW5nQ29udGV4dChuMik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB1cGRhdGVDb21wb25lbnRQcmVSZW5kZXIoaW5zdGFuY2UsIG4yLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcFdhcm5pbmdDb250ZXh0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBub3JtYWwgdXBkYXRlXHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5uZXh0ID0gbjI7XHJcbiAgICAgICAgICAgICAgICAvLyBpbiBjYXNlIHRoZSBjaGlsZCBjb21wb25lbnQgaXMgYWxzbyBxdWV1ZWQsIHJlbW92ZSBpdCB0byBhdm9pZFxyXG4gICAgICAgICAgICAgICAgLy8gZG91YmxlIHVwZGF0aW5nIHRoZSBzYW1lIGNoaWxkIGNvbXBvbmVudCBpbiB0aGUgc2FtZSBmbHVzaC5cclxuICAgICAgICAgICAgICAgIGludmFsaWRhdGVKb2IoaW5zdGFuY2UudXBkYXRlKTtcclxuICAgICAgICAgICAgICAgIC8vIGluc3RhbmNlLnVwZGF0ZSBpcyB0aGUgcmVhY3RpdmUgZWZmZWN0LlxyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UudXBkYXRlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIG5vIHVwZGF0ZSBuZWVkZWQuIGp1c3QgY29weSBvdmVyIHByb3BlcnRpZXNcclxuICAgICAgICAgICAgbjIuZWwgPSBuMS5lbDtcclxuICAgICAgICAgICAgaW5zdGFuY2Uudm5vZGUgPSBuMjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3Qgc2V0dXBSZW5kZXJFZmZlY3QgPSAoaW5zdGFuY2UsIGluaXRpYWxWTm9kZSwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29tcG9uZW50VXBkYXRlRm4gPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghaW5zdGFuY2UuaXNNb3VudGVkKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdm5vZGVIb29rO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBlbCwgcHJvcHMgfSA9IGluaXRpYWxWTm9kZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgYm0sIG0sIHBhcmVudCB9ID0gaW5zdGFuY2U7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpc0FzeW5jV3JhcHBlclZOb2RlID0gaXNBc3luY1dyYXBwZXIoaW5pdGlhbFZOb2RlKTtcclxuICAgICAgICAgICAgICAgIHRvZ2dsZVJlY3Vyc2UoaW5zdGFuY2UsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIC8vIGJlZm9yZU1vdW50IGhvb2tcclxuICAgICAgICAgICAgICAgIGlmIChibSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGludm9rZUFycmF5Rm5zKGJtKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIG9uVm5vZGVCZWZvcmVNb3VudFxyXG4gICAgICAgICAgICAgICAgaWYgKCFpc0FzeW5jV3JhcHBlclZOb2RlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgKHZub2RlSG9vayA9IHByb3BzICYmIHByb3BzLm9uVm5vZGVCZWZvcmVNb3VudCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBwYXJlbnQsIGluaXRpYWxWTm9kZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0b2dnbGVSZWN1cnNlKGluc3RhbmNlLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIGlmIChlbCAmJiBoeWRyYXRlTm9kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHZub2RlIGhhcyBhZG9wdGVkIGhvc3Qgbm9kZSAtIHBlcmZvcm0gaHlkcmF0aW9uIGluc3RlYWQgb2YgbW91bnQuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaHlkcmF0ZVN1YlRyZWUgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0TWVhc3VyZShpbnN0YW5jZSwgYHJlbmRlcmApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnN1YlRyZWUgPSByZW5kZXJDb21wb25lbnRSb290KGluc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kTWVhc3VyZShpbnN0YW5jZSwgYHJlbmRlcmApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0TWVhc3VyZShpbnN0YW5jZSwgYGh5ZHJhdGVgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoeWRyYXRlTm9kZShlbCwgaW5zdGFuY2Uuc3ViVHJlZSwgaW5zdGFuY2UsIHBhcmVudFN1c3BlbnNlLCBudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kTWVhc3VyZShpbnN0YW5jZSwgYGh5ZHJhdGVgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXN5bmNXcmFwcGVyVk5vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFZOb2RlLnR5cGUuX19hc3luY0xvYWRlcigpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vdGU6IHdlIGFyZSBtb3ZpbmcgdGhlIHJlbmRlciBjYWxsIGludG8gYW4gYXN5bmMgY2FsbGJhY2ssXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIG1lYW5zIGl0IHdvbid0IHRyYWNrIGRlcGVuZGVuY2llcyAtIGJ1dCBpdCdzIG9rIGJlY2F1c2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBzZXJ2ZXItcmVuZGVyZWQgYXN5bmMgd3JhcHBlciBpcyBhbHJlYWR5IGluIHJlc29sdmVkIHN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBpdCB3aWxsIG5ldmVyIG5lZWQgdG8gY2hhbmdlLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoKSA9PiAhaW5zdGFuY2UuaXNVbm1vdW50ZWQgJiYgaHlkcmF0ZVN1YlRyZWUoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoeWRyYXRlU3ViVHJlZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRNZWFzdXJlKGluc3RhbmNlLCBgcmVuZGVyYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YlRyZWUgPSAoaW5zdGFuY2Uuc3ViVHJlZSA9IHJlbmRlckNvbXBvbmVudFJvb3QoaW5zdGFuY2UpKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZE1lYXN1cmUoaW5zdGFuY2UsIGByZW5kZXJgKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIGBwYXRjaGApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBwYXRjaChudWxsLCBzdWJUcmVlLCBjb250YWluZXIsIGFuY2hvciwgaW5zdGFuY2UsIHBhcmVudFN1c3BlbnNlLCBpc1NWRyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRNZWFzdXJlKGluc3RhbmNlLCBgcGF0Y2hgKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFZOb2RlLmVsID0gc3ViVHJlZS5lbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIG1vdW50ZWQgaG9va1xyXG4gICAgICAgICAgICAgICAgaWYgKG0pIHtcclxuICAgICAgICAgICAgICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QobSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gb25Wbm9kZU1vdW50ZWRcclxuICAgICAgICAgICAgICAgIGlmICghaXNBc3luY1dyYXBwZXJWTm9kZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICh2bm9kZUhvb2sgPSBwcm9wcyAmJiBwcm9wcy5vblZub2RlTW91bnRlZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzY29wZWRJbml0aWFsVk5vZGUgPSBpbml0aWFsVk5vZGU7XHJcbiAgICAgICAgICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KCgpID0+IGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2ssIHBhcmVudCwgc2NvcGVkSW5pdGlhbFZOb2RlKSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gYWN0aXZhdGVkIGhvb2sgZm9yIGtlZXAtYWxpdmUgcm9vdHMuXHJcbiAgICAgICAgICAgICAgICAvLyAjMTc0MiBhY3RpdmF0ZWQgaG9vayBtdXN0IGJlIGFjY2Vzc2VkIGFmdGVyIGZpcnN0IHJlbmRlclxyXG4gICAgICAgICAgICAgICAgLy8gc2luY2UgdGhlIGhvb2sgbWF5IGJlIGluamVjdGVkIGJ5IGEgY2hpbGQga2VlcC1hbGl2ZVxyXG4gICAgICAgICAgICAgICAgaWYgKGluaXRpYWxWTm9kZS5zaGFwZUZsYWcgJiAyNTYgLyogU2hhcGVGbGFncy5DT01QT05FTlRfU0hPVUxEX0tFRVBfQUxJVkUgKi8gfHxcclxuICAgICAgICAgICAgICAgICAgICAocGFyZW50ICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXN5bmNXcmFwcGVyKHBhcmVudC52bm9kZSkgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LnZub2RlLnNoYXBlRmxhZyAmIDI1NiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVF9TSE9VTERfS0VFUF9BTElWRSAqLykpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5hICYmIHF1ZXVlUG9zdFJlbmRlckVmZmVjdChpbnN0YW5jZS5hLCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5pc01vdW50ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICAgICAgICAgICAgICBkZXZ0b29sc0NvbXBvbmVudEFkZGVkKGluc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vICMyNDU4OiBkZWZlcmVuY2UgbW91bnQtb25seSBvYmplY3QgcGFyYW1ldGVycyB0byBwcmV2ZW50IG1lbWxlYWtzXHJcbiAgICAgICAgICAgICAgICBpbml0aWFsVk5vZGUgPSBjb250YWluZXIgPSBhbmNob3IgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlQ29tcG9uZW50XHJcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRyaWdnZXJlZCBieSBtdXRhdGlvbiBvZiBjb21wb25lbnQncyBvd24gc3RhdGUgKG5leHQ6IG51bGwpXHJcbiAgICAgICAgICAgICAgICAvLyBPUiBwYXJlbnQgY2FsbGluZyBwcm9jZXNzQ29tcG9uZW50IChuZXh0OiBWTm9kZSlcclxuICAgICAgICAgICAgICAgIGxldCB7IG5leHQsIGJ1LCB1LCBwYXJlbnQsIHZub2RlIH0gPSBpbnN0YW5jZTtcclxuICAgICAgICAgICAgICAgIGxldCBvcmlnaW5OZXh0ID0gbmV4dDtcclxuICAgICAgICAgICAgICAgIGxldCB2bm9kZUhvb2s7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHVzaFdhcm5pbmdDb250ZXh0KG5leHQgfHwgaW5zdGFuY2Uudm5vZGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gRGlzYWxsb3cgY29tcG9uZW50IGVmZmVjdCByZWN1cnNpb24gZHVyaW5nIHByZS1saWZlY3ljbGUgaG9va3MuXHJcbiAgICAgICAgICAgICAgICB0b2dnbGVSZWN1cnNlKGluc3RhbmNlLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAobmV4dCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5leHQuZWwgPSB2bm9kZS5lbDtcclxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVDb21wb25lbnRQcmVSZW5kZXIoaW5zdGFuY2UsIG5leHQsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0ID0gdm5vZGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBiZWZvcmVVcGRhdGUgaG9va1xyXG4gICAgICAgICAgICAgICAgaWYgKGJ1KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlQXJyYXlGbnMoYnUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gb25Wbm9kZUJlZm9yZVVwZGF0ZVxyXG4gICAgICAgICAgICAgICAgaWYgKCh2bm9kZUhvb2sgPSBuZXh0LnByb3BzICYmIG5leHQucHJvcHMub25Wbm9kZUJlZm9yZVVwZGF0ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBwYXJlbnQsIG5leHQsIHZub2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRvZ2dsZVJlY3Vyc2UoaW5zdGFuY2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgLy8gcmVuZGVyXHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRNZWFzdXJlKGluc3RhbmNlLCBgcmVuZGVyYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0VHJlZSA9IHJlbmRlckNvbXBvbmVudFJvb3QoaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVuZE1lYXN1cmUoaW5zdGFuY2UsIGByZW5kZXJgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZUcmVlID0gaW5zdGFuY2Uuc3ViVHJlZTtcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLnN1YlRyZWUgPSBuZXh0VHJlZTtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIGBwYXRjaGApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcGF0Y2gocHJldlRyZWUsIG5leHRUcmVlLCBcclxuICAgICAgICAgICAgICAgIC8vIHBhcmVudCBtYXkgaGF2ZSBjaGFuZ2VkIGlmIGl0J3MgaW4gYSB0ZWxlcG9ydFxyXG4gICAgICAgICAgICAgICAgaG9zdFBhcmVudE5vZGUocHJldlRyZWUuZWwpLCBcclxuICAgICAgICAgICAgICAgIC8vIGFuY2hvciBtYXkgaGF2ZSBjaGFuZ2VkIGlmIGl0J3MgaW4gYSBmcmFnbWVudFxyXG4gICAgICAgICAgICAgICAgZ2V0TmV4dEhvc3ROb2RlKHByZXZUcmVlKSwgaW5zdGFuY2UsIHBhcmVudFN1c3BlbnNlLCBpc1NWRyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW5kTWVhc3VyZShpbnN0YW5jZSwgYHBhdGNoYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBuZXh0LmVsID0gbmV4dFRyZWUuZWw7XHJcbiAgICAgICAgICAgICAgICBpZiAob3JpZ2luTmV4dCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHNlbGYtdHJpZ2dlcmVkIHVwZGF0ZS4gSW4gY2FzZSBvZiBIT0MsIHVwZGF0ZSBwYXJlbnQgY29tcG9uZW50XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdm5vZGUgZWwuIEhPQyBpcyBpbmRpY2F0ZWQgYnkgcGFyZW50IGluc3RhbmNlJ3Mgc3ViVHJlZSBwb2ludGluZ1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRvIGNoaWxkIGNvbXBvbmVudCdzIHZub2RlXHJcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlSE9DSG9zdEVsKGluc3RhbmNlLCBuZXh0VHJlZS5lbCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyB1cGRhdGVkIGhvb2tcclxuICAgICAgICAgICAgICAgIGlmICh1KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KHUsIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIG9uVm5vZGVVcGRhdGVkXHJcbiAgICAgICAgICAgICAgICBpZiAoKHZub2RlSG9vayA9IG5leHQucHJvcHMgJiYgbmV4dC5wcm9wcy5vblZub2RlVXBkYXRlZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoKCkgPT4gaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50LCBuZXh0LCB2bm9kZSksIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGV2dG9vbHNDb21wb25lbnRVcGRhdGVkKGluc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBwb3BXYXJuaW5nQ29udGV4dCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICAvLyBjcmVhdGUgcmVhY3RpdmUgZWZmZWN0IGZvciByZW5kZXJpbmdcclxuICAgICAgICBjb25zdCBlZmZlY3QgPSAoaW5zdGFuY2UuZWZmZWN0ID0gbmV3IFJlYWN0aXZlRWZmZWN0KGNvbXBvbmVudFVwZGF0ZUZuLCAoKSA9PiBxdWV1ZUpvYih1cGRhdGUpLCBpbnN0YW5jZS5zY29wZSAvLyB0cmFjayBpdCBpbiBjb21wb25lbnQncyBlZmZlY3Qgc2NvcGVcclxuICAgICAgICApKTtcclxuICAgICAgICBjb25zdCB1cGRhdGUgPSAoaW5zdGFuY2UudXBkYXRlID0gKCkgPT4gZWZmZWN0LnJ1bigpKTtcclxuICAgICAgICB1cGRhdGUuaWQgPSBpbnN0YW5jZS51aWQ7XHJcbiAgICAgICAgLy8gYWxsb3dSZWN1cnNlXHJcbiAgICAgICAgLy8gIzE4MDEsICMyMDQzIGNvbXBvbmVudCByZW5kZXIgZWZmZWN0cyBzaG91bGQgYWxsb3cgcmVjdXJzaXZlIHVwZGF0ZXNcclxuICAgICAgICB0b2dnbGVSZWN1cnNlKGluc3RhbmNlLCB0cnVlKTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIGVmZmVjdC5vblRyYWNrID0gaW5zdGFuY2UucnRjXHJcbiAgICAgICAgICAgICAgICA/IGUgPT4gaW52b2tlQXJyYXlGbnMoaW5zdGFuY2UucnRjLCBlKVxyXG4gICAgICAgICAgICAgICAgOiB2b2lkIDA7XHJcbiAgICAgICAgICAgIGVmZmVjdC5vblRyaWdnZXIgPSBpbnN0YW5jZS5ydGdcclxuICAgICAgICAgICAgICAgID8gZSA9PiBpbnZva2VBcnJheUZucyhpbnN0YW5jZS5ydGcsIGUpXHJcbiAgICAgICAgICAgICAgICA6IHZvaWQgMDtcclxuICAgICAgICAgICAgdXBkYXRlLm93bmVySW5zdGFuY2UgPSBpbnN0YW5jZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdXBkYXRlKCk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgdXBkYXRlQ29tcG9uZW50UHJlUmVuZGVyID0gKGluc3RhbmNlLCBuZXh0Vk5vZGUsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIG5leHRWTm9kZS5jb21wb25lbnQgPSBpbnN0YW5jZTtcclxuICAgICAgICBjb25zdCBwcmV2UHJvcHMgPSBpbnN0YW5jZS52bm9kZS5wcm9wcztcclxuICAgICAgICBpbnN0YW5jZS52bm9kZSA9IG5leHRWTm9kZTtcclxuICAgICAgICBpbnN0YW5jZS5uZXh0ID0gbnVsbDtcclxuICAgICAgICB1cGRhdGVQcm9wcyhpbnN0YW5jZSwgbmV4dFZOb2RlLnByb3BzLCBwcmV2UHJvcHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgdXBkYXRlU2xvdHMoaW5zdGFuY2UsIG5leHRWTm9kZS5jaGlsZHJlbiwgb3B0aW1pemVkKTtcclxuICAgICAgICBwYXVzZVRyYWNraW5nKCk7XHJcbiAgICAgICAgLy8gcHJvcHMgdXBkYXRlIG1heSBoYXZlIHRyaWdnZXJlZCBwcmUtZmx1c2ggd2F0Y2hlcnMuXHJcbiAgICAgICAgLy8gZmx1c2ggdGhlbSBiZWZvcmUgdGhlIHJlbmRlciB1cGRhdGUuXHJcbiAgICAgICAgZmx1c2hQcmVGbHVzaENicygpO1xyXG4gICAgICAgIHJlc2V0VHJhY2tpbmcoKTtcclxuICAgIH07XHJcbiAgICBjb25zdCBwYXRjaENoaWxkcmVuID0gKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCA9IGZhbHNlKSA9PiB7XHJcbiAgICAgICAgY29uc3QgYzEgPSBuMSAmJiBuMS5jaGlsZHJlbjtcclxuICAgICAgICBjb25zdCBwcmV2U2hhcGVGbGFnID0gbjEgPyBuMS5zaGFwZUZsYWcgOiAwO1xyXG4gICAgICAgIGNvbnN0IGMyID0gbjIuY2hpbGRyZW47XHJcbiAgICAgICAgY29uc3QgeyBwYXRjaEZsYWcsIHNoYXBlRmxhZyB9ID0gbjI7XHJcbiAgICAgICAgLy8gZmFzdCBwYXRoXHJcbiAgICAgICAgaWYgKHBhdGNoRmxhZyA+IDApIHtcclxuICAgICAgICAgICAgaWYgKHBhdGNoRmxhZyAmIDEyOCAvKiBQYXRjaEZsYWdzLktFWUVEX0ZSQUdNRU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzIGNvdWxkIGJlIGVpdGhlciBmdWxseS1rZXllZCBvciBtaXhlZCAoc29tZSBrZXllZCBzb21lIG5vdClcclxuICAgICAgICAgICAgICAgIC8vIHByZXNlbmNlIG9mIHBhdGNoRmxhZyBtZWFucyBjaGlsZHJlbiBhcmUgZ3VhcmFudGVlZCB0byBiZSBhcnJheXNcclxuICAgICAgICAgICAgICAgIHBhdGNoS2V5ZWRDaGlsZHJlbihjMSwgYzIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHBhdGNoRmxhZyAmIDI1NiAvKiBQYXRjaEZsYWdzLlVOS0VZRURfRlJBR01FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgIC8vIHVua2V5ZWRcclxuICAgICAgICAgICAgICAgIHBhdGNoVW5rZXllZENoaWxkcmVuKGMxLCBjMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY2hpbGRyZW4gaGFzIDMgcG9zc2liaWxpdGllczogdGV4dCwgYXJyYXkgb3Igbm8gY2hpbGRyZW4uXHJcbiAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDggLyogU2hhcGVGbGFncy5URVhUX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgICAgIC8vIHRleHQgY2hpbGRyZW4gZmFzdCBwYXRoXHJcbiAgICAgICAgICAgIGlmIChwcmV2U2hhcGVGbGFnICYgMTYgLyogU2hhcGVGbGFncy5BUlJBWV9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICAgICAgdW5tb3VudENoaWxkcmVuKGMxLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYzIgIT09IGMxKSB7XHJcbiAgICAgICAgICAgICAgICBob3N0U2V0RWxlbWVudFRleHQoY29udGFpbmVyLCBjMik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChwcmV2U2hhcGVGbGFnICYgMTYgLyogU2hhcGVGbGFncy5BUlJBWV9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICAgICAgLy8gcHJldiBjaGlsZHJlbiB3YXMgYXJyYXlcclxuICAgICAgICAgICAgICAgIGlmIChzaGFwZUZsYWcgJiAxNiAvKiBTaGFwZUZsYWdzLkFSUkFZX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdHdvIGFycmF5cywgY2Fubm90IGFzc3VtZSBhbnl0aGluZywgZG8gZnVsbCBkaWZmXHJcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2hLZXllZENoaWxkcmVuKGMxLCBjMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBubyBuZXcgY2hpbGRyZW4sIGp1c3QgdW5tb3VudCBvbGRcclxuICAgICAgICAgICAgICAgICAgICB1bm1vdW50Q2hpbGRyZW4oYzEsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gcHJldiBjaGlsZHJlbiB3YXMgdGV4dCBPUiBudWxsXHJcbiAgICAgICAgICAgICAgICAvLyBuZXcgY2hpbGRyZW4gaXMgYXJyYXkgT1IgbnVsbFxyXG4gICAgICAgICAgICAgICAgaWYgKHByZXZTaGFwZUZsYWcgJiA4IC8qIFNoYXBlRmxhZ3MuVEVYVF9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGhvc3RTZXRFbGVtZW50VGV4dChjb250YWluZXIsICcnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIG1vdW50IG5ldyBpZiBhcnJheVxyXG4gICAgICAgICAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBtb3VudENoaWxkcmVuKGMyLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBwYXRjaFVua2V5ZWRDaGlsZHJlbiA9IChjMSwgYzIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBjMSA9IGMxIHx8IEVNUFRZX0FSUjtcclxuICAgICAgICBjMiA9IGMyIHx8IEVNUFRZX0FSUjtcclxuICAgICAgICBjb25zdCBvbGRMZW5ndGggPSBjMS5sZW5ndGg7XHJcbiAgICAgICAgY29uc3QgbmV3TGVuZ3RoID0gYzIubGVuZ3RoO1xyXG4gICAgICAgIGNvbnN0IGNvbW1vbkxlbmd0aCA9IE1hdGgubWluKG9sZExlbmd0aCwgbmV3TGVuZ3RoKTtcclxuICAgICAgICBsZXQgaTtcclxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY29tbW9uTGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgbmV4dENoaWxkID0gKGMyW2ldID0gb3B0aW1pemVkXHJcbiAgICAgICAgICAgICAgICA/IGNsb25lSWZNb3VudGVkKGMyW2ldKVxyXG4gICAgICAgICAgICAgICAgOiBub3JtYWxpemVWTm9kZShjMltpXSkpO1xyXG4gICAgICAgICAgICBwYXRjaChjMVtpXSwgbmV4dENoaWxkLCBjb250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvbGRMZW5ndGggPiBuZXdMZW5ndGgpIHtcclxuICAgICAgICAgICAgLy8gcmVtb3ZlIG9sZFxyXG4gICAgICAgICAgICB1bm1vdW50Q2hpbGRyZW4oYzEsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHRydWUsIGZhbHNlLCBjb21tb25MZW5ndGgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gbW91bnQgbmV3XHJcbiAgICAgICAgICAgIG1vdW50Q2hpbGRyZW4oYzIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIGNvbW1vbkxlbmd0aCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIC8vIGNhbiBiZSBhbGwta2V5ZWQgb3IgbWl4ZWRcclxuICAgIGNvbnN0IHBhdGNoS2V5ZWRDaGlsZHJlbiA9IChjMSwgYzIsIGNvbnRhaW5lciwgcGFyZW50QW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBsZXQgaSA9IDA7XHJcbiAgICAgICAgY29uc3QgbDIgPSBjMi5sZW5ndGg7XHJcbiAgICAgICAgbGV0IGUxID0gYzEubGVuZ3RoIC0gMTsgLy8gcHJldiBlbmRpbmcgaW5kZXhcclxuICAgICAgICBsZXQgZTIgPSBsMiAtIDE7IC8vIG5leHQgZW5kaW5nIGluZGV4XHJcbiAgICAgICAgLy8gMS4gc3luYyBmcm9tIHN0YXJ0XHJcbiAgICAgICAgLy8gKGEgYikgY1xyXG4gICAgICAgIC8vIChhIGIpIGQgZVxyXG4gICAgICAgIHdoaWxlIChpIDw9IGUxICYmIGkgPD0gZTIpIHtcclxuICAgICAgICAgICAgY29uc3QgbjEgPSBjMVtpXTtcclxuICAgICAgICAgICAgY29uc3QgbjIgPSAoYzJbaV0gPSBvcHRpbWl6ZWRcclxuICAgICAgICAgICAgICAgID8gY2xvbmVJZk1vdW50ZWQoYzJbaV0pXHJcbiAgICAgICAgICAgICAgICA6IG5vcm1hbGl6ZVZOb2RlKGMyW2ldKSk7XHJcbiAgICAgICAgICAgIGlmIChpc1NhbWVWTm9kZVR5cGUobjEsIG4yKSkge1xyXG4gICAgICAgICAgICAgICAgcGF0Y2gobjEsIG4yLCBjb250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpKys7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIDIuIHN5bmMgZnJvbSBlbmRcclxuICAgICAgICAvLyBhIChiIGMpXHJcbiAgICAgICAgLy8gZCBlIChiIGMpXHJcbiAgICAgICAgd2hpbGUgKGkgPD0gZTEgJiYgaSA8PSBlMikge1xyXG4gICAgICAgICAgICBjb25zdCBuMSA9IGMxW2UxXTtcclxuICAgICAgICAgICAgY29uc3QgbjIgPSAoYzJbZTJdID0gb3B0aW1pemVkXHJcbiAgICAgICAgICAgICAgICA/IGNsb25lSWZNb3VudGVkKGMyW2UyXSlcclxuICAgICAgICAgICAgICAgIDogbm9ybWFsaXplVk5vZGUoYzJbZTJdKSk7XHJcbiAgICAgICAgICAgIGlmIChpc1NhbWVWTm9kZVR5cGUobjEsIG4yKSkge1xyXG4gICAgICAgICAgICAgICAgcGF0Y2gobjEsIG4yLCBjb250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlMS0tO1xyXG4gICAgICAgICAgICBlMi0tO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyAzLiBjb21tb24gc2VxdWVuY2UgKyBtb3VudFxyXG4gICAgICAgIC8vIChhIGIpXHJcbiAgICAgICAgLy8gKGEgYikgY1xyXG4gICAgICAgIC8vIGkgPSAyLCBlMSA9IDEsIGUyID0gMlxyXG4gICAgICAgIC8vIChhIGIpXHJcbiAgICAgICAgLy8gYyAoYSBiKVxyXG4gICAgICAgIC8vIGkgPSAwLCBlMSA9IC0xLCBlMiA9IDBcclxuICAgICAgICBpZiAoaSA+IGUxKSB7XHJcbiAgICAgICAgICAgIGlmIChpIDw9IGUyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0UG9zID0gZTIgKyAxO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYW5jaG9yID0gbmV4dFBvcyA8IGwyID8gYzJbbmV4dFBvc10uZWwgOiBwYXJlbnRBbmNob3I7XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAoaSA8PSBlMikge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhdGNoKG51bGwsIChjMltpXSA9IG9wdGltaXplZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGNsb25lSWZNb3VudGVkKGMyW2ldKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG5vcm1hbGl6ZVZOb2RlKGMyW2ldKSksIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGkrKztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyA0LiBjb21tb24gc2VxdWVuY2UgKyB1bm1vdW50XHJcbiAgICAgICAgLy8gKGEgYikgY1xyXG4gICAgICAgIC8vIChhIGIpXHJcbiAgICAgICAgLy8gaSA9IDIsIGUxID0gMiwgZTIgPSAxXHJcbiAgICAgICAgLy8gYSAoYiBjKVxyXG4gICAgICAgIC8vIChiIGMpXHJcbiAgICAgICAgLy8gaSA9IDAsIGUxID0gMCwgZTIgPSAtMVxyXG4gICAgICAgIGVsc2UgaWYgKGkgPiBlMikge1xyXG4gICAgICAgICAgICB3aGlsZSAoaSA8PSBlMSkge1xyXG4gICAgICAgICAgICAgICAgdW5tb3VudChjMVtpXSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICBpKys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gNS4gdW5rbm93biBzZXF1ZW5jZVxyXG4gICAgICAgIC8vIFtpIC4uLiBlMSArIDFdOiBhIGIgW2MgZCBlXSBmIGdcclxuICAgICAgICAvLyBbaSAuLi4gZTIgKyAxXTogYSBiIFtlIGQgYyBoXSBmIGdcclxuICAgICAgICAvLyBpID0gMiwgZTEgPSA0LCBlMiA9IDVcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgczEgPSBpOyAvLyBwcmV2IHN0YXJ0aW5nIGluZGV4XHJcbiAgICAgICAgICAgIGNvbnN0IHMyID0gaTsgLy8gbmV4dCBzdGFydGluZyBpbmRleFxyXG4gICAgICAgICAgICAvLyA1LjEgYnVpbGQga2V5OmluZGV4IG1hcCBmb3IgbmV3Q2hpbGRyZW5cclxuICAgICAgICAgICAgY29uc3Qga2V5VG9OZXdJbmRleE1hcCA9IG5ldyBNYXAoKTtcclxuICAgICAgICAgICAgZm9yIChpID0gczI7IGkgPD0gZTI7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dENoaWxkID0gKGMyW2ldID0gb3B0aW1pemVkXHJcbiAgICAgICAgICAgICAgICAgICAgPyBjbG9uZUlmTW91bnRlZChjMltpXSlcclxuICAgICAgICAgICAgICAgICAgICA6IG5vcm1hbGl6ZVZOb2RlKGMyW2ldKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAobmV4dENoaWxkLmtleSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBrZXlUb05ld0luZGV4TWFwLmhhcyhuZXh0Q2hpbGQua2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuKGBEdXBsaWNhdGUga2V5cyBmb3VuZCBkdXJpbmcgdXBkYXRlOmAsIEpTT04uc3RyaW5naWZ5KG5leHRDaGlsZC5rZXkpLCBgTWFrZSBzdXJlIGtleXMgYXJlIHVuaXF1ZS5gKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAga2V5VG9OZXdJbmRleE1hcC5zZXQobmV4dENoaWxkLmtleSwgaSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gNS4yIGxvb3AgdGhyb3VnaCBvbGQgY2hpbGRyZW4gbGVmdCB0byBiZSBwYXRjaGVkIGFuZCB0cnkgdG8gcGF0Y2hcclxuICAgICAgICAgICAgLy8gbWF0Y2hpbmcgbm9kZXMgJiByZW1vdmUgbm9kZXMgdGhhdCBhcmUgbm8gbG9uZ2VyIHByZXNlbnRcclxuICAgICAgICAgICAgbGV0IGo7XHJcbiAgICAgICAgICAgIGxldCBwYXRjaGVkID0gMDtcclxuICAgICAgICAgICAgY29uc3QgdG9CZVBhdGNoZWQgPSBlMiAtIHMyICsgMTtcclxuICAgICAgICAgICAgbGV0IG1vdmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vIHVzZWQgdG8gdHJhY2sgd2hldGhlciBhbnkgbm9kZSBoYXMgbW92ZWRcclxuICAgICAgICAgICAgbGV0IG1heE5ld0luZGV4U29GYXIgPSAwO1xyXG4gICAgICAgICAgICAvLyB3b3JrcyBhcyBNYXA8bmV3SW5kZXgsIG9sZEluZGV4PlxyXG4gICAgICAgICAgICAvLyBOb3RlIHRoYXQgb2xkSW5kZXggaXMgb2Zmc2V0IGJ5ICsxXHJcbiAgICAgICAgICAgIC8vIGFuZCBvbGRJbmRleCA9IDAgaXMgYSBzcGVjaWFsIHZhbHVlIGluZGljYXRpbmcgdGhlIG5ldyBub2RlIGhhc1xyXG4gICAgICAgICAgICAvLyBubyBjb3JyZXNwb25kaW5nIG9sZCBub2RlLlxyXG4gICAgICAgICAgICAvLyB1c2VkIGZvciBkZXRlcm1pbmluZyBsb25nZXN0IHN0YWJsZSBzdWJzZXF1ZW5jZVxyXG4gICAgICAgICAgICBjb25zdCBuZXdJbmRleFRvT2xkSW5kZXhNYXAgPSBuZXcgQXJyYXkodG9CZVBhdGNoZWQpO1xyXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdG9CZVBhdGNoZWQ7IGkrKylcclxuICAgICAgICAgICAgICAgIG5ld0luZGV4VG9PbGRJbmRleE1hcFtpXSA9IDA7XHJcbiAgICAgICAgICAgIGZvciAoaSA9IHMxOyBpIDw9IGUxOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZDaGlsZCA9IGMxW2ldO1xyXG4gICAgICAgICAgICAgICAgaWYgKHBhdGNoZWQgPj0gdG9CZVBhdGNoZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBhbGwgbmV3IGNoaWxkcmVuIGhhdmUgYmVlbiBwYXRjaGVkIHNvIHRoaXMgY2FuIG9ubHkgYmUgYSByZW1vdmFsXHJcbiAgICAgICAgICAgICAgICAgICAgdW5tb3VudChwcmV2Q2hpbGQsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGV0IG5ld0luZGV4O1xyXG4gICAgICAgICAgICAgICAgaWYgKHByZXZDaGlsZC5rZXkgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld0luZGV4ID0ga2V5VG9OZXdJbmRleE1hcC5nZXQocHJldkNoaWxkLmtleSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBrZXktbGVzcyBub2RlLCB0cnkgdG8gbG9jYXRlIGEga2V5LWxlc3Mgbm9kZSBvZiB0aGUgc2FtZSB0eXBlXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gczI7IGogPD0gZTI7IGorKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3SW5kZXhUb09sZEluZGV4TWFwW2ogLSBzMl0gPT09IDAgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2FtZVZOb2RlVHlwZShwcmV2Q2hpbGQsIGMyW2pdKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3SW5kZXggPSBqO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAobmV3SW5kZXggPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHVubW91bnQocHJldkNoaWxkLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld0luZGV4VG9PbGRJbmRleE1hcFtuZXdJbmRleCAtIHMyXSA9IGkgKyAxO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdJbmRleCA+PSBtYXhOZXdJbmRleFNvRmFyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heE5ld0luZGV4U29GYXIgPSBuZXdJbmRleDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2gocHJldkNoaWxkLCBjMltuZXdJbmRleF0sIGNvbnRhaW5lciwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgICAgICBwYXRjaGVkKys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gNS4zIG1vdmUgYW5kIG1vdW50XHJcbiAgICAgICAgICAgIC8vIGdlbmVyYXRlIGxvbmdlc3Qgc3RhYmxlIHN1YnNlcXVlbmNlIG9ubHkgd2hlbiBub2RlcyBoYXZlIG1vdmVkXHJcbiAgICAgICAgICAgIGNvbnN0IGluY3JlYXNpbmdOZXdJbmRleFNlcXVlbmNlID0gbW92ZWRcclxuICAgICAgICAgICAgICAgID8gZ2V0U2VxdWVuY2UobmV3SW5kZXhUb09sZEluZGV4TWFwKVxyXG4gICAgICAgICAgICAgICAgOiBFTVBUWV9BUlI7XHJcbiAgICAgICAgICAgIGogPSBpbmNyZWFzaW5nTmV3SW5kZXhTZXF1ZW5jZS5sZW5ndGggLSAxO1xyXG4gICAgICAgICAgICAvLyBsb29waW5nIGJhY2t3YXJkcyBzbyB0aGF0IHdlIGNhbiB1c2UgbGFzdCBwYXRjaGVkIG5vZGUgYXMgYW5jaG9yXHJcbiAgICAgICAgICAgIGZvciAoaSA9IHRvQmVQYXRjaGVkIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRJbmRleCA9IHMyICsgaTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRDaGlsZCA9IGMyW25leHRJbmRleF07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhbmNob3IgPSBuZXh0SW5kZXggKyAxIDwgbDIgPyBjMltuZXh0SW5kZXggKyAxXS5lbCA6IHBhcmVudEFuY2hvcjtcclxuICAgICAgICAgICAgICAgIGlmIChuZXdJbmRleFRvT2xkSW5kZXhNYXBbaV0gPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBtb3VudCBuZXdcclxuICAgICAgICAgICAgICAgICAgICBwYXRjaChudWxsLCBuZXh0Q2hpbGQsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobW92ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBtb3ZlIGlmOlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIHN0YWJsZSBzdWJzZXF1ZW5jZSAoZS5nLiBhIHJldmVyc2UpXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gT1IgY3VycmVudCBub2RlIGlzIG5vdCBhbW9uZyB0aGUgc3RhYmxlIHNlcXVlbmNlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGogPCAwIHx8IGkgIT09IGluY3JlYXNpbmdOZXdJbmRleFNlcXVlbmNlW2pdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUobmV4dENoaWxkLCBjb250YWluZXIsIGFuY2hvciwgMiAvKiBNb3ZlVHlwZS5SRU9SREVSICovKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGotLTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgbW92ZSA9ICh2bm9kZSwgY29udGFpbmVyLCBhbmNob3IsIG1vdmVUeXBlLCBwYXJlbnRTdXNwZW5zZSA9IG51bGwpID0+IHtcclxuICAgICAgICBjb25zdCB7IGVsLCB0eXBlLCB0cmFuc2l0aW9uLCBjaGlsZHJlbiwgc2hhcGVGbGFnIH0gPSB2bm9kZTtcclxuICAgICAgICBpZiAoc2hhcGVGbGFnICYgNiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVCAqLykge1xyXG4gICAgICAgICAgICBtb3ZlKHZub2RlLmNvbXBvbmVudC5zdWJUcmVlLCBjb250YWluZXIsIGFuY2hvciwgbW92ZVR5cGUpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzaGFwZUZsYWcgJiAxMjggLyogU2hhcGVGbGFncy5TVVNQRU5TRSAqLykge1xyXG4gICAgICAgICAgICB2bm9kZS5zdXNwZW5zZS5tb3ZlKGNvbnRhaW5lciwgYW5jaG9yLCBtb3ZlVHlwZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDY0IC8qIFNoYXBlRmxhZ3MuVEVMRVBPUlQgKi8pIHtcclxuICAgICAgICAgICAgdHlwZS5tb3ZlKHZub2RlLCBjb250YWluZXIsIGFuY2hvciwgaW50ZXJuYWxzKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZSA9PT0gRnJhZ21lbnQpIHtcclxuICAgICAgICAgICAgaG9zdEluc2VydChlbCwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBtb3ZlKGNoaWxkcmVuW2ldLCBjb250YWluZXIsIGFuY2hvciwgbW92ZVR5cGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGhvc3RJbnNlcnQodm5vZGUuYW5jaG9yLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGUgPT09IFN0YXRpYykge1xyXG4gICAgICAgICAgICBtb3ZlU3RhdGljTm9kZSh2bm9kZSwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHNpbmdsZSBub2Rlc1xyXG4gICAgICAgIGNvbnN0IG5lZWRUcmFuc2l0aW9uID0gbW92ZVR5cGUgIT09IDIgLyogTW92ZVR5cGUuUkVPUkRFUiAqLyAmJlxyXG4gICAgICAgICAgICBzaGFwZUZsYWcgJiAxIC8qIFNoYXBlRmxhZ3MuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgICAgICB0cmFuc2l0aW9uO1xyXG4gICAgICAgIGlmIChuZWVkVHJhbnNpdGlvbikge1xyXG4gICAgICAgICAgICBpZiAobW92ZVR5cGUgPT09IDAgLyogTW92ZVR5cGUuRU5URVIgKi8pIHtcclxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb24uYmVmb3JlRW50ZXIoZWwpO1xyXG4gICAgICAgICAgICAgICAgaG9zdEluc2VydChlbCwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KCgpID0+IHRyYW5zaXRpb24uZW50ZXIoZWwpLCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IGxlYXZlLCBkZWxheUxlYXZlLCBhZnRlckxlYXZlIH0gPSB0cmFuc2l0aW9uO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVtb3ZlID0gKCkgPT4gaG9zdEluc2VydChlbCwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGVyZm9ybUxlYXZlID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxlYXZlKGVsLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhZnRlckxlYXZlICYmIGFmdGVyTGVhdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBpZiAoZGVsYXlMZWF2ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5TGVhdmUoZWwsIHJlbW92ZSwgcGVyZm9ybUxlYXZlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHBlcmZvcm1MZWF2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBob3N0SW5zZXJ0KGVsLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHVubW91bnQgPSAodm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGRvUmVtb3ZlID0gZmFsc2UsIG9wdGltaXplZCA9IGZhbHNlKSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyB0eXBlLCBwcm9wcywgcmVmLCBjaGlsZHJlbiwgZHluYW1pY0NoaWxkcmVuLCBzaGFwZUZsYWcsIHBhdGNoRmxhZywgZGlycyB9ID0gdm5vZGU7XHJcbiAgICAgICAgLy8gdW5zZXQgcmVmXHJcbiAgICAgICAgaWYgKHJlZiAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHNldFJlZihyZWYsIG51bGwsIHBhcmVudFN1c3BlbnNlLCB2bm9kZSwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzaGFwZUZsYWcgJiAyNTYgLyogU2hhcGVGbGFncy5DT01QT05FTlRfU0hPVUxEX0tFRVBfQUxJVkUgKi8pIHtcclxuICAgICAgICAgICAgcGFyZW50Q29tcG9uZW50LmN0eC5kZWFjdGl2YXRlKHZub2RlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzaG91bGRJbnZva2VEaXJzID0gc2hhcGVGbGFnICYgMSAvKiBTaGFwZUZsYWdzLkVMRU1FTlQgKi8gJiYgZGlycztcclxuICAgICAgICBjb25zdCBzaG91bGRJbnZva2VWbm9kZUhvb2sgPSAhaXNBc3luY1dyYXBwZXIodm5vZGUpO1xyXG4gICAgICAgIGxldCB2bm9kZUhvb2s7XHJcbiAgICAgICAgaWYgKHNob3VsZEludm9rZVZub2RlSG9vayAmJlxyXG4gICAgICAgICAgICAodm5vZGVIb29rID0gcHJvcHMgJiYgcHJvcHMub25Wbm9kZUJlZm9yZVVubW91bnQpKSB7XHJcbiAgICAgICAgICAgIGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2ssIHBhcmVudENvbXBvbmVudCwgdm5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2hhcGVGbGFnICYgNiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVCAqLykge1xyXG4gICAgICAgICAgICB1bm1vdW50Q29tcG9uZW50KHZub2RlLmNvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGRvUmVtb3ZlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChzaGFwZUZsYWcgJiAxMjggLyogU2hhcGVGbGFncy5TVVNQRU5TRSAqLykge1xyXG4gICAgICAgICAgICAgICAgdm5vZGUuc3VzcGVuc2UudW5tb3VudChwYXJlbnRTdXNwZW5zZSwgZG9SZW1vdmUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzaG91bGRJbnZva2VEaXJzKSB7XHJcbiAgICAgICAgICAgICAgICBpbnZva2VEaXJlY3RpdmVIb29rKHZub2RlLCBudWxsLCBwYXJlbnRDb21wb25lbnQsICdiZWZvcmVVbm1vdW50Jyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDY0IC8qIFNoYXBlRmxhZ3MuVEVMRVBPUlQgKi8pIHtcclxuICAgICAgICAgICAgICAgIHZub2RlLnR5cGUucmVtb3ZlKHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBvcHRpbWl6ZWQsIGludGVybmFscywgZG9SZW1vdmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGR5bmFtaWNDaGlsZHJlbiAmJlxyXG4gICAgICAgICAgICAgICAgLy8gIzExNTM6IGZhc3QgcGF0aCBzaG91bGQgbm90IGJlIHRha2VuIGZvciBub24tc3RhYmxlICh2LWZvcikgZnJhZ21lbnRzXHJcbiAgICAgICAgICAgICAgICAodHlwZSAhPT0gRnJhZ21lbnQgfHxcclxuICAgICAgICAgICAgICAgICAgICAocGF0Y2hGbGFnID4gMCAmJiBwYXRjaEZsYWcgJiA2NCAvKiBQYXRjaEZsYWdzLlNUQUJMRV9GUkFHTUVOVCAqLykpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBmYXN0IHBhdGggZm9yIGJsb2NrIG5vZGVzOiBvbmx5IG5lZWQgdG8gdW5tb3VudCBkeW5hbWljIGNoaWxkcmVuLlxyXG4gICAgICAgICAgICAgICAgdW5tb3VudENoaWxkcmVuKGR5bmFtaWNDaGlsZHJlbiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgZmFsc2UsIHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKCh0eXBlID09PSBGcmFnbWVudCAmJlxyXG4gICAgICAgICAgICAgICAgcGF0Y2hGbGFnICZcclxuICAgICAgICAgICAgICAgICAgICAoMTI4IC8qIFBhdGNoRmxhZ3MuS0VZRURfRlJBR01FTlQgKi8gfCAyNTYgLyogUGF0Y2hGbGFncy5VTktFWUVEX0ZSQUdNRU5UICovKSkgfHxcclxuICAgICAgICAgICAgICAgICghb3B0aW1pemVkICYmIHNoYXBlRmxhZyAmIDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi8pKSB7XHJcbiAgICAgICAgICAgICAgICB1bm1vdW50Q2hpbGRyZW4oY2hpbGRyZW4sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChkb1JlbW92ZSkge1xyXG4gICAgICAgICAgICAgICAgcmVtb3ZlKHZub2RlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKHNob3VsZEludm9rZVZub2RlSG9vayAmJlxyXG4gICAgICAgICAgICAodm5vZGVIb29rID0gcHJvcHMgJiYgcHJvcHMub25Wbm9kZVVubW91bnRlZCkpIHx8XHJcbiAgICAgICAgICAgIHNob3VsZEludm9rZURpcnMpIHtcclxuICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHZub2RlSG9vayAmJiBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBwYXJlbnRDb21wb25lbnQsIHZub2RlKTtcclxuICAgICAgICAgICAgICAgIHNob3VsZEludm9rZURpcnMgJiZcclxuICAgICAgICAgICAgICAgICAgICBpbnZva2VEaXJlY3RpdmVIb29rKHZub2RlLCBudWxsLCBwYXJlbnRDb21wb25lbnQsICd1bm1vdW50ZWQnKTtcclxuICAgICAgICAgICAgfSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCByZW1vdmUgPSB2bm9kZSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyB0eXBlLCBlbCwgYW5jaG9yLCB0cmFuc2l0aW9uIH0gPSB2bm9kZTtcclxuICAgICAgICBpZiAodHlwZSA9PT0gRnJhZ21lbnQpIHtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgdm5vZGUucGF0Y2hGbGFnID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgdm5vZGUucGF0Y2hGbGFnICYgMjA0OCAvKiBQYXRjaEZsYWdzLkRFVl9ST09UX0ZSQUdNRU5UICovICYmXHJcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uICYmXHJcbiAgICAgICAgICAgICAgICAhdHJhbnNpdGlvbi5wZXJzaXN0ZWQpIHtcclxuICAgICAgICAgICAgICAgIHZub2RlLmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC50eXBlID09PSBDb21tZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RSZW1vdmUoY2hpbGQuZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKGNoaWxkKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJlbW92ZUZyYWdtZW50KGVsLCBhbmNob3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGUgPT09IFN0YXRpYykge1xyXG4gICAgICAgICAgICByZW1vdmVTdGF0aWNOb2RlKHZub2RlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBwZXJmb3JtUmVtb3ZlID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBob3N0UmVtb3ZlKGVsKTtcclxuICAgICAgICAgICAgaWYgKHRyYW5zaXRpb24gJiYgIXRyYW5zaXRpb24ucGVyc2lzdGVkICYmIHRyYW5zaXRpb24uYWZ0ZXJMZWF2ZSkge1xyXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbi5hZnRlckxlYXZlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICh2bm9kZS5zaGFwZUZsYWcgJiAxIC8qIFNoYXBlRmxhZ3MuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgICAgICB0cmFuc2l0aW9uICYmXHJcbiAgICAgICAgICAgICF0cmFuc2l0aW9uLnBlcnNpc3RlZCkge1xyXG4gICAgICAgICAgICBjb25zdCB7IGxlYXZlLCBkZWxheUxlYXZlIH0gPSB0cmFuc2l0aW9uO1xyXG4gICAgICAgICAgICBjb25zdCBwZXJmb3JtTGVhdmUgPSAoKSA9PiBsZWF2ZShlbCwgcGVyZm9ybVJlbW92ZSk7XHJcbiAgICAgICAgICAgIGlmIChkZWxheUxlYXZlKSB7XHJcbiAgICAgICAgICAgICAgICBkZWxheUxlYXZlKHZub2RlLmVsLCBwZXJmb3JtUmVtb3ZlLCBwZXJmb3JtTGVhdmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcGVyZm9ybUxlYXZlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHBlcmZvcm1SZW1vdmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcmVtb3ZlRnJhZ21lbnQgPSAoY3VyLCBlbmQpID0+IHtcclxuICAgICAgICAvLyBGb3IgZnJhZ21lbnRzLCBkaXJlY3RseSByZW1vdmUgYWxsIGNvbnRhaW5lZCBET00gbm9kZXMuXHJcbiAgICAgICAgLy8gKGZyYWdtZW50IGNoaWxkIG5vZGVzIGNhbm5vdCBoYXZlIHRyYW5zaXRpb24pXHJcbiAgICAgICAgbGV0IG5leHQ7XHJcbiAgICAgICAgd2hpbGUgKGN1ciAhPT0gZW5kKSB7XHJcbiAgICAgICAgICAgIG5leHQgPSBob3N0TmV4dFNpYmxpbmcoY3VyKTtcclxuICAgICAgICAgICAgaG9zdFJlbW92ZShjdXIpO1xyXG4gICAgICAgICAgICBjdXIgPSBuZXh0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBob3N0UmVtb3ZlKGVuZCk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgdW5tb3VudENvbXBvbmVudCA9IChpbnN0YW5jZSwgcGFyZW50U3VzcGVuc2UsIGRvUmVtb3ZlKSA9PiB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBpbnN0YW5jZS50eXBlLl9faG1ySWQpIHtcclxuICAgICAgICAgICAgdW5yZWdpc3RlckhNUihpbnN0YW5jZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHsgYnVtLCBzY29wZSwgdXBkYXRlLCBzdWJUcmVlLCB1bSB9ID0gaW5zdGFuY2U7XHJcbiAgICAgICAgLy8gYmVmb3JlVW5tb3VudCBob29rXHJcbiAgICAgICAgaWYgKGJ1bSkge1xyXG4gICAgICAgICAgICBpbnZva2VBcnJheUZucyhidW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBzdG9wIGVmZmVjdHMgaW4gY29tcG9uZW50IHNjb3BlXHJcbiAgICAgICAgc2NvcGUuc3RvcCgpO1xyXG4gICAgICAgIC8vIHVwZGF0ZSBtYXkgYmUgbnVsbCBpZiBhIGNvbXBvbmVudCBpcyB1bm1vdW50ZWQgYmVmb3JlIGl0cyBhc3luY1xyXG4gICAgICAgIC8vIHNldHVwIGhhcyByZXNvbHZlZC5cclxuICAgICAgICBpZiAodXBkYXRlKSB7XHJcbiAgICAgICAgICAgIC8vIHNvIHRoYXQgc2NoZWR1bGVyIHdpbGwgbm8gbG9uZ2VyIGludm9rZSBpdFxyXG4gICAgICAgICAgICB1cGRhdGUuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHVubW91bnQoc3ViVHJlZSwgaW5zdGFuY2UsIHBhcmVudFN1c3BlbnNlLCBkb1JlbW92ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHVubW91bnRlZCBob29rXHJcbiAgICAgICAgaWYgKHVtKSB7XHJcbiAgICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCh1bSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5pc1VubW91bnRlZCA9IHRydWU7XHJcbiAgICAgICAgfSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgIC8vIEEgY29tcG9uZW50IHdpdGggYXN5bmMgZGVwIGluc2lkZSBhIHBlbmRpbmcgc3VzcGVuc2UgaXMgdW5tb3VudGVkIGJlZm9yZVxyXG4gICAgICAgIC8vIGl0cyBhc3luYyBkZXAgcmVzb2x2ZXMuIFRoaXMgc2hvdWxkIHJlbW92ZSB0aGUgZGVwIGZyb20gdGhlIHN1c3BlbnNlLCBhbmRcclxuICAgICAgICAvLyBjYXVzZSB0aGUgc3VzcGVuc2UgdG8gcmVzb2x2ZSBpbW1lZGlhdGVseSBpZiB0aGF0IHdhcyB0aGUgbGFzdCBkZXAuXHJcbiAgICAgICAgaWYgKHBhcmVudFN1c3BlbnNlICYmXHJcbiAgICAgICAgICAgIHBhcmVudFN1c3BlbnNlLnBlbmRpbmdCcmFuY2ggJiZcclxuICAgICAgICAgICAgIXBhcmVudFN1c3BlbnNlLmlzVW5tb3VudGVkICYmXHJcbiAgICAgICAgICAgIGluc3RhbmNlLmFzeW5jRGVwICYmXHJcbiAgICAgICAgICAgICFpbnN0YW5jZS5hc3luY1Jlc29sdmVkICYmXHJcbiAgICAgICAgICAgIGluc3RhbmNlLnN1c3BlbnNlSWQgPT09IHBhcmVudFN1c3BlbnNlLnBlbmRpbmdJZCkge1xyXG4gICAgICAgICAgICBwYXJlbnRTdXNwZW5zZS5kZXBzLS07XHJcbiAgICAgICAgICAgIGlmIChwYXJlbnRTdXNwZW5zZS5kZXBzID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJlbnRTdXNwZW5zZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICAgICAgZGV2dG9vbHNDb21wb25lbnRSZW1vdmVkKGluc3RhbmNlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgdW5tb3VudENoaWxkcmVuID0gKGNoaWxkcmVuLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBkb1JlbW92ZSA9IGZhbHNlLCBvcHRpbWl6ZWQgPSBmYWxzZSwgc3RhcnQgPSAwKSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdW5tb3VudChjaGlsZHJlbltpXSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgZG9SZW1vdmUsIG9wdGltaXplZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IGdldE5leHRIb3N0Tm9kZSA9IHZub2RlID0+IHtcclxuICAgICAgICBpZiAodm5vZGUuc2hhcGVGbGFnICYgNiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVCAqLykge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2V0TmV4dEhvc3ROb2RlKHZub2RlLmNvbXBvbmVudC5zdWJUcmVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDEyOCAvKiBTaGFwZUZsYWdzLlNVU1BFTlNFICovKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2bm9kZS5zdXNwZW5zZS5uZXh0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBob3N0TmV4dFNpYmxpbmcoKHZub2RlLmFuY2hvciB8fCB2bm9kZS5lbCkpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlbmRlciA9ICh2bm9kZSwgY29udGFpbmVyLCBpc1NWRykgPT4ge1xyXG4gICAgICAgIGlmICh2bm9kZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmIChjb250YWluZXIuX3Zub2RlKSB7XHJcbiAgICAgICAgICAgICAgICB1bm1vdW50KGNvbnRhaW5lci5fdm5vZGUsIG51bGwsIG51bGwsIHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBwYXRjaChjb250YWluZXIuX3Zub2RlIHx8IG51bGwsIHZub2RlLCBjb250YWluZXIsIG51bGwsIG51bGwsIG51bGwsIGlzU1ZHKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmx1c2hQcmVGbHVzaENicygpO1xyXG4gICAgICAgIGZsdXNoUG9zdEZsdXNoQ2JzKCk7XHJcbiAgICAgICAgY29udGFpbmVyLl92bm9kZSA9IHZub2RlO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGludGVybmFscyA9IHtcclxuICAgICAgICBwOiBwYXRjaCxcclxuICAgICAgICB1bTogdW5tb3VudCxcclxuICAgICAgICBtOiBtb3ZlLFxyXG4gICAgICAgIHI6IHJlbW92ZSxcclxuICAgICAgICBtdDogbW91bnRDb21wb25lbnQsXHJcbiAgICAgICAgbWM6IG1vdW50Q2hpbGRyZW4sXHJcbiAgICAgICAgcGM6IHBhdGNoQ2hpbGRyZW4sXHJcbiAgICAgICAgcGJjOiBwYXRjaEJsb2NrQ2hpbGRyZW4sXHJcbiAgICAgICAgbjogZ2V0TmV4dEhvc3ROb2RlLFxyXG4gICAgICAgIG86IG9wdGlvbnNcclxuICAgIH07XHJcbiAgICBsZXQgaHlkcmF0ZTtcclxuICAgIGxldCBoeWRyYXRlTm9kZTtcclxuICAgIGlmIChjcmVhdGVIeWRyYXRpb25GbnMpIHtcclxuICAgICAgICBbaHlkcmF0ZSwgaHlkcmF0ZU5vZGVdID0gY3JlYXRlSHlkcmF0aW9uRm5zKGludGVybmFscyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHJlbmRlcixcclxuICAgICAgICBoeWRyYXRlLFxyXG4gICAgICAgIGNyZWF0ZUFwcDogY3JlYXRlQXBwQVBJKHJlbmRlciwgaHlkcmF0ZSlcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gdG9nZ2xlUmVjdXJzZSh7IGVmZmVjdCwgdXBkYXRlIH0sIGFsbG93ZWQpIHtcclxuICAgIGVmZmVjdC5hbGxvd1JlY3Vyc2UgPSB1cGRhdGUuYWxsb3dSZWN1cnNlID0gYWxsb3dlZDtcclxufVxyXG4vKipcclxuICogIzExNTZcclxuICogV2hlbiBhIGNvbXBvbmVudCBpcyBITVItZW5hYmxlZCwgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgc3RhdGljIG5vZGVzXHJcbiAqIGluc2lkZSBhIGJsb2NrIGFsc28gaW5oZXJpdCB0aGUgRE9NIGVsZW1lbnQgZnJvbSB0aGUgcHJldmlvdXMgdHJlZSBzbyB0aGF0XHJcbiAqIEhNUiB1cGRhdGVzICh3aGljaCBhcmUgZnVsbCB1cGRhdGVzKSBjYW4gcmV0cmlldmUgdGhlIGVsZW1lbnQgZm9yIHBhdGNoaW5nLlxyXG4gKlxyXG4gKiAjMjA4MFxyXG4gKiBJbnNpZGUga2V5ZWQgYHRlbXBsYXRlYCBmcmFnbWVudCBzdGF0aWMgY2hpbGRyZW4sIGlmIGEgZnJhZ21lbnQgaXMgbW92ZWQsXHJcbiAqIHRoZSBjaGlsZHJlbiB3aWxsIGFsd2F5cyBiZSBtb3ZlZC4gVGhlcmVmb3JlLCBpbiBvcmRlciB0byBlbnN1cmUgY29ycmVjdCBtb3ZlXHJcbiAqIHBvc2l0aW9uLCBlbCBzaG91bGQgYmUgaW5oZXJpdGVkIGZyb20gcHJldmlvdXMgbm9kZXMuXHJcbiAqL1xyXG5mdW5jdGlvbiB0cmF2ZXJzZVN0YXRpY0NoaWxkcmVuKG4xLCBuMiwgc2hhbGxvdyA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBjaDEgPSBuMS5jaGlsZHJlbjtcclxuICAgIGNvbnN0IGNoMiA9IG4yLmNoaWxkcmVuO1xyXG4gICAgaWYgKGlzQXJyYXkoY2gxKSAmJiBpc0FycmF5KGNoMikpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoMS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAvLyB0aGlzIGlzIG9ubHkgY2FsbGVkIGluIHRoZSBvcHRpbWl6ZWQgcGF0aCBzbyBhcnJheSBjaGlsZHJlbiBhcmVcclxuICAgICAgICAgICAgLy8gZ3VhcmFudGVlZCB0byBiZSB2bm9kZXNcclxuICAgICAgICAgICAgY29uc3QgYzEgPSBjaDFbaV07XHJcbiAgICAgICAgICAgIGxldCBjMiA9IGNoMltpXTtcclxuICAgICAgICAgICAgaWYgKGMyLnNoYXBlRmxhZyAmIDEgLyogU2hhcGVGbGFncy5FTEVNRU5UICovICYmICFjMi5keW5hbWljQ2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgIGlmIChjMi5wYXRjaEZsYWcgPD0gMCB8fCBjMi5wYXRjaEZsYWcgPT09IDMyIC8qIFBhdGNoRmxhZ3MuSFlEUkFURV9FVkVOVFMgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBjMiA9IGNoMltpXSA9IGNsb25lSWZNb3VudGVkKGNoMltpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYzIuZWwgPSBjMS5lbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghc2hhbGxvdylcclxuICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzZVN0YXRpY0NoaWxkcmVuKGMxLCBjMik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gYWxzbyBpbmhlcml0IGZvciBjb21tZW50IG5vZGVzLCBidXQgbm90IHBsYWNlaG9sZGVycyAoZS5nLiB2LWlmIHdoaWNoXHJcbiAgICAgICAgICAgIC8vIHdvdWxkIGhhdmUgcmVjZWl2ZWQgLmVsIGR1cmluZyBibG9jayBwYXRjaClcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBjMi50eXBlID09PSBDb21tZW50ICYmICFjMi5lbCkge1xyXG4gICAgICAgICAgICAgICAgYzIuZWwgPSBjMS5lbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Mb25nZXN0X2luY3JlYXNpbmdfc3Vic2VxdWVuY2VcclxuZnVuY3Rpb24gZ2V0U2VxdWVuY2UoYXJyKSB7XHJcbiAgICBjb25zdCBwID0gYXJyLnNsaWNlKCk7XHJcbiAgICBjb25zdCByZXN1bHQgPSBbMF07XHJcbiAgICBsZXQgaSwgaiwgdSwgdiwgYztcclxuICAgIGNvbnN0IGxlbiA9IGFyci5sZW5ndGg7XHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICBjb25zdCBhcnJJID0gYXJyW2ldO1xyXG4gICAgICAgIGlmIChhcnJJICE9PSAwKSB7XHJcbiAgICAgICAgICAgIGogPSByZXN1bHRbcmVzdWx0Lmxlbmd0aCAtIDFdO1xyXG4gICAgICAgICAgICBpZiAoYXJyW2pdIDwgYXJySSkge1xyXG4gICAgICAgICAgICAgICAgcFtpXSA9IGo7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChpKTtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHUgPSAwO1xyXG4gICAgICAgICAgICB2ID0gcmVzdWx0Lmxlbmd0aCAtIDE7XHJcbiAgICAgICAgICAgIHdoaWxlICh1IDwgdikge1xyXG4gICAgICAgICAgICAgICAgYyA9ICh1ICsgdikgPj4gMTtcclxuICAgICAgICAgICAgICAgIGlmIChhcnJbcmVzdWx0W2NdXSA8IGFyckkpIHtcclxuICAgICAgICAgICAgICAgICAgICB1ID0gYyArIDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB2ID0gYztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYXJySSA8IGFycltyZXN1bHRbdV1dKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBwW2ldID0gcmVzdWx0W3UgLSAxXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJlc3VsdFt1XSA9IGk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICB1ID0gcmVzdWx0Lmxlbmd0aDtcclxuICAgIHYgPSByZXN1bHRbdSAtIDFdO1xyXG4gICAgd2hpbGUgKHUtLSA+IDApIHtcclxuICAgICAgICByZXN1bHRbdV0gPSB2O1xyXG4gICAgICAgIHYgPSBwW3ZdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxuXG5jb25zdCBpc1RlbGVwb3J0ID0gKHR5cGUpID0+IHR5cGUuX19pc1RlbGVwb3J0O1xyXG5jb25zdCBpc1RlbGVwb3J0RGlzYWJsZWQgPSAocHJvcHMpID0+IHByb3BzICYmIChwcm9wcy5kaXNhYmxlZCB8fCBwcm9wcy5kaXNhYmxlZCA9PT0gJycpO1xyXG5jb25zdCBpc1RhcmdldFNWRyA9ICh0YXJnZXQpID0+IHR5cGVvZiBTVkdFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB0YXJnZXQgaW5zdGFuY2VvZiBTVkdFbGVtZW50O1xyXG5jb25zdCByZXNvbHZlVGFyZ2V0ID0gKHByb3BzLCBzZWxlY3QpID0+IHtcclxuICAgIGNvbnN0IHRhcmdldFNlbGVjdG9yID0gcHJvcHMgJiYgcHJvcHMudG87XHJcbiAgICBpZiAoaXNTdHJpbmcodGFyZ2V0U2VsZWN0b3IpKSB7XHJcbiAgICAgICAgaWYgKCFzZWxlY3QpIHtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICB3YXJuKGBDdXJyZW50IHJlbmRlcmVyIGRvZXMgbm90IHN1cHBvcnQgc3RyaW5nIHRhcmdldCBmb3IgVGVsZXBvcnRzLiBgICtcclxuICAgICAgICAgICAgICAgICAgICBgKG1pc3NpbmcgcXVlcnlTZWxlY3RvciByZW5kZXJlciBvcHRpb24pYCk7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gc2VsZWN0KHRhcmdldFNlbGVjdG9yKTtcclxuICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcclxuICAgICAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYEZhaWxlZCB0byBsb2NhdGUgVGVsZXBvcnQgdGFyZ2V0IHdpdGggc2VsZWN0b3IgXCIke3RhcmdldFNlbGVjdG9yfVwiLiBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYE5vdGUgdGhlIHRhcmdldCBlbGVtZW50IG11c3QgZXhpc3QgYmVmb3JlIHRoZSBjb21wb25lbnQgaXMgbW91bnRlZCAtIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgaS5lLiB0aGUgdGFyZ2V0IGNhbm5vdCBiZSByZW5kZXJlZCBieSB0aGUgY29tcG9uZW50IGl0c2VsZiwgYW5kIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgaWRlYWxseSBzaG91bGQgYmUgb3V0c2lkZSBvZiB0aGUgZW50aXJlIFZ1ZSBjb21wb25lbnQgdHJlZS5gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIXRhcmdldFNlbGVjdG9yICYmICFpc1RlbGVwb3J0RGlzYWJsZWQocHJvcHMpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYEludmFsaWQgVGVsZXBvcnQgdGFyZ2V0OiAke3RhcmdldFNlbGVjdG9yfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGFyZ2V0U2VsZWN0b3I7XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IFRlbGVwb3J0SW1wbCA9IHtcclxuICAgIF9faXNUZWxlcG9ydDogdHJ1ZSxcclxuICAgIHByb2Nlc3MobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCBpbnRlcm5hbHMpIHtcclxuICAgICAgICBjb25zdCB7IG1jOiBtb3VudENoaWxkcmVuLCBwYzogcGF0Y2hDaGlsZHJlbiwgcGJjOiBwYXRjaEJsb2NrQ2hpbGRyZW4sIG86IHsgaW5zZXJ0LCBxdWVyeVNlbGVjdG9yLCBjcmVhdGVUZXh0LCBjcmVhdGVDb21tZW50IH0gfSA9IGludGVybmFscztcclxuICAgICAgICBjb25zdCBkaXNhYmxlZCA9IGlzVGVsZXBvcnREaXNhYmxlZChuMi5wcm9wcyk7XHJcbiAgICAgICAgbGV0IHsgc2hhcGVGbGFnLCBjaGlsZHJlbiwgZHluYW1pY0NoaWxkcmVuIH0gPSBuMjtcclxuICAgICAgICAvLyAjMzMwMlxyXG4gICAgICAgIC8vIEhNUiB1cGRhdGVkLCBmb3JjZSBmdWxsIGRpZmZcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGlzSG1yVXBkYXRpbmcpIHtcclxuICAgICAgICAgICAgb3B0aW1pemVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGR5bmFtaWNDaGlsZHJlbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChuMSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIC8vIGluc2VydCBhbmNob3JzIGluIHRoZSBtYWluIHZpZXdcclxuICAgICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSAobjIuZWwgPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICAgICAgICAgID8gY3JlYXRlQ29tbWVudCgndGVsZXBvcnQgc3RhcnQnKVxyXG4gICAgICAgICAgICAgICAgOiBjcmVhdGVUZXh0KCcnKSk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1haW5BbmNob3IgPSAobjIuYW5jaG9yID0gKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgICAgICAgICA/IGNyZWF0ZUNvbW1lbnQoJ3RlbGVwb3J0IGVuZCcpXHJcbiAgICAgICAgICAgICAgICA6IGNyZWF0ZVRleHQoJycpKTtcclxuICAgICAgICAgICAgaW5zZXJ0KHBsYWNlaG9sZGVyLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgICAgIGluc2VydChtYWluQW5jaG9yLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IChuMi50YXJnZXQgPSByZXNvbHZlVGFyZ2V0KG4yLnByb3BzLCBxdWVyeVNlbGVjdG9yKSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldEFuY2hvciA9IChuMi50YXJnZXRBbmNob3IgPSBjcmVhdGVUZXh0KCcnKSk7XHJcbiAgICAgICAgICAgIGlmICh0YXJnZXQpIHtcclxuICAgICAgICAgICAgICAgIGluc2VydCh0YXJnZXRBbmNob3IsIHRhcmdldCk7XHJcbiAgICAgICAgICAgICAgICAvLyAjMjY1MiB3ZSBjb3VsZCBiZSB0ZWxlcG9ydGluZyBmcm9tIGEgbm9uLVNWRyB0cmVlIGludG8gYW4gU1ZHIHRyZWVcclxuICAgICAgICAgICAgICAgIGlzU1ZHID0gaXNTVkcgfHwgaXNUYXJnZXRTVkcodGFyZ2V0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKCdJbnZhbGlkIFRlbGVwb3J0IHRhcmdldCBvbiBtb3VudDonLCB0YXJnZXQsIGAoJHt0eXBlb2YgdGFyZ2V0fSlgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBtb3VudCA9IChjb250YWluZXIsIGFuY2hvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gVGVsZXBvcnQgKmFsd2F5cyogaGFzIEFycmF5IGNoaWxkcmVuLiBUaGlzIGlzIGVuZm9yY2VkIGluIGJvdGggdGhlXHJcbiAgICAgICAgICAgICAgICAvLyBjb21waWxlciBhbmQgdm5vZGUgY2hpbGRyZW4gbm9ybWFsaXphdGlvbi5cclxuICAgICAgICAgICAgICAgIGlmIChzaGFwZUZsYWcgJiAxNiAvKiBTaGFwZUZsYWdzLkFSUkFZX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbW91bnRDaGlsZHJlbihjaGlsZHJlbiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGlmIChkaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgbW91bnQoY29udGFpbmVyLCBtYWluQW5jaG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh0YXJnZXQpIHtcclxuICAgICAgICAgICAgICAgIG1vdW50KHRhcmdldCwgdGFyZ2V0QW5jaG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gdXBkYXRlIGNvbnRlbnRcclxuICAgICAgICAgICAgbjIuZWwgPSBuMS5lbDtcclxuICAgICAgICAgICAgY29uc3QgbWFpbkFuY2hvciA9IChuMi5hbmNob3IgPSBuMS5hbmNob3IpO1xyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSAobjIudGFyZ2V0ID0gbjEudGFyZ2V0KTtcclxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0QW5jaG9yID0gKG4yLnRhcmdldEFuY2hvciA9IG4xLnRhcmdldEFuY2hvcik7XHJcbiAgICAgICAgICAgIGNvbnN0IHdhc0Rpc2FibGVkID0gaXNUZWxlcG9ydERpc2FibGVkKG4xLnByb3BzKTtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudENvbnRhaW5lciA9IHdhc0Rpc2FibGVkID8gY29udGFpbmVyIDogdGFyZ2V0O1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50QW5jaG9yID0gd2FzRGlzYWJsZWQgPyBtYWluQW5jaG9yIDogdGFyZ2V0QW5jaG9yO1xyXG4gICAgICAgICAgICBpc1NWRyA9IGlzU1ZHIHx8IGlzVGFyZ2V0U1ZHKHRhcmdldCk7XHJcbiAgICAgICAgICAgIGlmIChkeW5hbWljQ2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgIC8vIGZhc3QgcGF0aCB3aGVuIHRoZSB0ZWxlcG9ydCBoYXBwZW5zIHRvIGJlIGEgYmxvY2sgcm9vdFxyXG4gICAgICAgICAgICAgICAgcGF0Y2hCbG9ja0NoaWxkcmVuKG4xLmR5bmFtaWNDaGlsZHJlbiwgZHluYW1pY0NoaWxkcmVuLCBjdXJyZW50Q29udGFpbmVyLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzKTtcclxuICAgICAgICAgICAgICAgIC8vIGV2ZW4gaW4gYmxvY2sgdHJlZSBtb2RlIHdlIG5lZWQgdG8gbWFrZSBzdXJlIGFsbCByb290LWxldmVsIG5vZGVzXHJcbiAgICAgICAgICAgICAgICAvLyBpbiB0aGUgdGVsZXBvcnQgaW5oZXJpdCBwcmV2aW91cyBET00gcmVmZXJlbmNlcyBzbyB0aGF0IHRoZXkgY2FuXHJcbiAgICAgICAgICAgICAgICAvLyBiZSBtb3ZlZCBpbiBmdXR1cmUgcGF0Y2hlcy5cclxuICAgICAgICAgICAgICAgIHRyYXZlcnNlU3RhdGljQ2hpbGRyZW4objEsIG4yLCB0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICghb3B0aW1pemVkKSB7XHJcbiAgICAgICAgICAgICAgICBwYXRjaENoaWxkcmVuKG4xLCBuMiwgY3VycmVudENvbnRhaW5lciwgY3VycmVudEFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChkaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF3YXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZWQgLT4gZGlzYWJsZWRcclxuICAgICAgICAgICAgICAgICAgICAvLyBtb3ZlIGludG8gbWFpbiBjb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICBtb3ZlVGVsZXBvcnQobjIsIGNvbnRhaW5lciwgbWFpbkFuY2hvciwgaW50ZXJuYWxzLCAxIC8qIFRlbGVwb3J0TW92ZVR5cGVzLlRPR0dMRSAqLyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyB0YXJnZXQgY2hhbmdlZFxyXG4gICAgICAgICAgICAgICAgaWYgKChuMi5wcm9wcyAmJiBuMi5wcm9wcy50bykgIT09IChuMS5wcm9wcyAmJiBuMS5wcm9wcy50bykpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0VGFyZ2V0ID0gKG4yLnRhcmdldCA9IHJlc29sdmVUYXJnZXQobjIucHJvcHMsIHF1ZXJ5U2VsZWN0b3IpKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobmV4dFRhcmdldCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlVGVsZXBvcnQobjIsIG5leHRUYXJnZXQsIG51bGwsIGludGVybmFscywgMCAvKiBUZWxlcG9ydE1vdmVUeXBlcy5UQVJHRVRfQ0hBTkdFICovKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4oJ0ludmFsaWQgVGVsZXBvcnQgdGFyZ2V0IG9uIHVwZGF0ZTonLCB0YXJnZXQsIGAoJHt0eXBlb2YgdGFyZ2V0fSlgKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh3YXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGRpc2FibGVkIC0+IGVuYWJsZWRcclxuICAgICAgICAgICAgICAgICAgICAvLyBtb3ZlIGludG8gdGVsZXBvcnQgdGFyZ2V0XHJcbiAgICAgICAgICAgICAgICAgICAgbW92ZVRlbGVwb3J0KG4yLCB0YXJnZXQsIHRhcmdldEFuY2hvciwgaW50ZXJuYWxzLCAxIC8qIFRlbGVwb3J0TW92ZVR5cGVzLlRPR0dMRSAqLyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgcmVtb3ZlKHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBvcHRpbWl6ZWQsIHsgdW06IHVubW91bnQsIG86IHsgcmVtb3ZlOiBob3N0UmVtb3ZlIH0gfSwgZG9SZW1vdmUpIHtcclxuICAgICAgICBjb25zdCB7IHNoYXBlRmxhZywgY2hpbGRyZW4sIGFuY2hvciwgdGFyZ2V0QW5jaG9yLCB0YXJnZXQsIHByb3BzIH0gPSB2bm9kZTtcclxuICAgICAgICBpZiAodGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIGhvc3RSZW1vdmUodGFyZ2V0QW5jaG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gYW4gdW5tb3VudGVkIHRlbGVwb3J0IHNob3VsZCBhbHdheXMgcmVtb3ZlIGl0cyBjaGlsZHJlbiBpZiBub3QgZGlzYWJsZWRcclxuICAgICAgICBpZiAoZG9SZW1vdmUgfHwgIWlzVGVsZXBvcnREaXNhYmxlZChwcm9wcykpIHtcclxuICAgICAgICAgICAgaG9zdFJlbW92ZShhbmNob3IpO1xyXG4gICAgICAgICAgICBpZiAoc2hhcGVGbGFnICYgMTYgLyogU2hhcGVGbGFncy5BUlJBWV9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgICAgICAgICAgdW5tb3VudChjaGlsZCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdHJ1ZSwgISFjaGlsZC5keW5hbWljQ2hpbGRyZW4pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIG1vdmU6IG1vdmVUZWxlcG9ydCxcclxuICAgIGh5ZHJhdGU6IGh5ZHJhdGVUZWxlcG9ydFxyXG59O1xyXG5mdW5jdGlvbiBtb3ZlVGVsZXBvcnQodm5vZGUsIGNvbnRhaW5lciwgcGFyZW50QW5jaG9yLCB7IG86IHsgaW5zZXJ0IH0sIG06IG1vdmUgfSwgbW92ZVR5cGUgPSAyIC8qIFRlbGVwb3J0TW92ZVR5cGVzLlJFT1JERVIgKi8pIHtcclxuICAgIC8vIG1vdmUgdGFyZ2V0IGFuY2hvciBpZiB0aGlzIGlzIGEgdGFyZ2V0IGNoYW5nZS5cclxuICAgIGlmIChtb3ZlVHlwZSA9PT0gMCAvKiBUZWxlcG9ydE1vdmVUeXBlcy5UQVJHRVRfQ0hBTkdFICovKSB7XHJcbiAgICAgICAgaW5zZXJ0KHZub2RlLnRhcmdldEFuY2hvciwgY29udGFpbmVyLCBwYXJlbnRBbmNob3IpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBlbCwgYW5jaG9yLCBzaGFwZUZsYWcsIGNoaWxkcmVuLCBwcm9wcyB9ID0gdm5vZGU7XHJcbiAgICBjb25zdCBpc1Jlb3JkZXIgPSBtb3ZlVHlwZSA9PT0gMiAvKiBUZWxlcG9ydE1vdmVUeXBlcy5SRU9SREVSICovO1xyXG4gICAgLy8gbW92ZSBtYWluIHZpZXcgYW5jaG9yIGlmIHRoaXMgaXMgYSByZS1vcmRlci5cclxuICAgIGlmIChpc1Jlb3JkZXIpIHtcclxuICAgICAgICBpbnNlcnQoZWwsIGNvbnRhaW5lciwgcGFyZW50QW5jaG9yKTtcclxuICAgIH1cclxuICAgIC8vIGlmIHRoaXMgaXMgYSByZS1vcmRlciBhbmQgdGVsZXBvcnQgaXMgZW5hYmxlZCAoY29udGVudCBpcyBpbiB0YXJnZXQpXHJcbiAgICAvLyBkbyBub3QgbW92ZSBjaGlsZHJlbi4gU28gdGhlIG9wcG9zaXRlIGlzOiBvbmx5IG1vdmUgY2hpbGRyZW4gaWYgdGhpc1xyXG4gICAgLy8gaXMgbm90IGEgcmVvcmRlciwgb3IgdGhlIHRlbGVwb3J0IGlzIGRpc2FibGVkXHJcbiAgICBpZiAoIWlzUmVvcmRlciB8fCBpc1RlbGVwb3J0RGlzYWJsZWQocHJvcHMpKSB7XHJcbiAgICAgICAgLy8gVGVsZXBvcnQgaGFzIGVpdGhlciBBcnJheSBjaGlsZHJlbiBvciBubyBjaGlsZHJlbi5cclxuICAgICAgICBpZiAoc2hhcGVGbGFnICYgMTYgLyogU2hhcGVGbGFncy5BUlJBWV9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBtb3ZlKGNoaWxkcmVuW2ldLCBjb250YWluZXIsIHBhcmVudEFuY2hvciwgMiAvKiBNb3ZlVHlwZS5SRU9SREVSICovKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIG1vdmUgbWFpbiB2aWV3IGFuY2hvciBpZiB0aGlzIGlzIGEgcmUtb3JkZXIuXHJcbiAgICBpZiAoaXNSZW9yZGVyKSB7XHJcbiAgICAgICAgaW5zZXJ0KGFuY2hvciwgY29udGFpbmVyLCBwYXJlbnRBbmNob3IpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGh5ZHJhdGVUZWxlcG9ydChub2RlLCB2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIHsgbzogeyBuZXh0U2libGluZywgcGFyZW50Tm9kZSwgcXVlcnlTZWxlY3RvciB9IH0sIGh5ZHJhdGVDaGlsZHJlbikge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gKHZub2RlLnRhcmdldCA9IHJlc29sdmVUYXJnZXQodm5vZGUucHJvcHMsIHF1ZXJ5U2VsZWN0b3IpKTtcclxuICAgIGlmICh0YXJnZXQpIHtcclxuICAgICAgICAvLyBpZiBtdWx0aXBsZSB0ZWxlcG9ydHMgcmVuZGVyZWQgdG8gdGhlIHNhbWUgdGFyZ2V0IGVsZW1lbnQsIHdlIG5lZWQgdG9cclxuICAgICAgICAvLyBwaWNrIHVwIGZyb20gd2hlcmUgdGhlIGxhc3QgdGVsZXBvcnQgZmluaXNoZWQgaW5zdGVhZCBvZiB0aGUgZmlyc3Qgbm9kZVxyXG4gICAgICAgIGNvbnN0IHRhcmdldE5vZGUgPSB0YXJnZXQuX2xwYSB8fCB0YXJnZXQuZmlyc3RDaGlsZDtcclxuICAgICAgICBpZiAodm5vZGUuc2hhcGVGbGFnICYgMTYgLyogU2hhcGVGbGFncy5BUlJBWV9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICBpZiAoaXNUZWxlcG9ydERpc2FibGVkKHZub2RlLnByb3BzKSkge1xyXG4gICAgICAgICAgICAgICAgdm5vZGUuYW5jaG9yID0gaHlkcmF0ZUNoaWxkcmVuKG5leHRTaWJsaW5nKG5vZGUpLCB2bm9kZSwgcGFyZW50Tm9kZShub2RlKSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgdm5vZGUudGFyZ2V0QW5jaG9yID0gdGFyZ2V0Tm9kZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHZub2RlLmFuY2hvciA9IG5leHRTaWJsaW5nKG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgLy8gbG9va2FoZWFkIHVudGlsIHdlIGZpbmQgdGhlIHRhcmdldCBhbmNob3JcclxuICAgICAgICAgICAgICAgIC8vIHdlIGNhbm5vdCByZWx5IG9uIHJldHVybiB2YWx1ZSBvZiBoeWRyYXRlQ2hpbGRyZW4oKSBiZWNhdXNlIHRoZXJlXHJcbiAgICAgICAgICAgICAgICAvLyBjb3VsZCBiZSBuZXN0ZWQgdGVsZXBvcnRzXHJcbiAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0QW5jaG9yID0gdGFyZ2V0Tm9kZTtcclxuICAgICAgICAgICAgICAgIHdoaWxlICh0YXJnZXRBbmNob3IpIHtcclxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRBbmNob3IgPSBuZXh0U2libGluZyh0YXJnZXRBbmNob3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRBbmNob3IgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QW5jaG9yLm5vZGVUeXBlID09PSA4ICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEFuY2hvci5kYXRhID09PSAndGVsZXBvcnQgYW5jaG9yJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2bm9kZS50YXJnZXRBbmNob3IgPSB0YXJnZXRBbmNob3I7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5fbHBhID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZub2RlLnRhcmdldEFuY2hvciAmJiBuZXh0U2libGluZyh2bm9kZS50YXJnZXRBbmNob3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBoeWRyYXRlQ2hpbGRyZW4odGFyZ2V0Tm9kZSwgdm5vZGUsIHRhcmdldCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZub2RlLmFuY2hvciAmJiBuZXh0U2libGluZyh2bm9kZS5hbmNob3IpO1xyXG59XHJcbi8vIEZvcmNlLWNhc3RlZCBwdWJsaWMgdHlwaW5nIGZvciBoIGFuZCBUU1ggcHJvcHMgaW5mZXJlbmNlXHJcbmNvbnN0IFRlbGVwb3J0ID0gVGVsZXBvcnRJbXBsO1xuXG5jb25zdCBGcmFnbWVudCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyAnRnJhZ21lbnQnIDogdW5kZWZpbmVkKTtcclxuY29uc3QgVGV4dCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyAnVGV4dCcgOiB1bmRlZmluZWQpO1xyXG5jb25zdCBDb21tZW50ID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/ICdDb21tZW50JyA6IHVuZGVmaW5lZCk7XHJcbmNvbnN0IFN0YXRpYyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyAnU3RhdGljJyA6IHVuZGVmaW5lZCk7XHJcbi8vIFNpbmNlIHYtaWYgYW5kIHYtZm9yIGFyZSB0aGUgdHdvIHBvc3NpYmxlIHdheXMgbm9kZSBzdHJ1Y3R1cmUgY2FuIGR5bmFtaWNhbGx5XHJcbi8vIGNoYW5nZSwgb25jZSB3ZSBjb25zaWRlciB2LWlmIGJyYW5jaGVzIGFuZCBlYWNoIHYtZm9yIGZyYWdtZW50IGEgYmxvY2ssIHdlXHJcbi8vIGNhbiBkaXZpZGUgYSB0ZW1wbGF0ZSBpbnRvIG5lc3RlZCBibG9ja3MsIGFuZCB3aXRoaW4gZWFjaCBibG9jayB0aGUgbm9kZVxyXG4vLyBzdHJ1Y3R1cmUgd291bGQgYmUgc3RhYmxlLiBUaGlzIGFsbG93cyB1cyB0byBza2lwIG1vc3QgY2hpbGRyZW4gZGlmZmluZ1xyXG4vLyBhbmQgb25seSB3b3JyeSBhYm91dCB0aGUgZHluYW1pYyBub2RlcyAoaW5kaWNhdGVkIGJ5IHBhdGNoIGZsYWdzKS5cclxuY29uc3QgYmxvY2tTdGFjayA9IFtdO1xyXG5sZXQgY3VycmVudEJsb2NrID0gbnVsbDtcclxuLyoqXHJcbiAqIE9wZW4gYSBibG9jay5cclxuICogVGhpcyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgYGNyZWF0ZUJsb2NrYC4gSXQgY2Fubm90IGJlIHBhcnQgb2YgYGNyZWF0ZUJsb2NrYFxyXG4gKiBiZWNhdXNlIHRoZSBjaGlsZHJlbiBvZiB0aGUgYmxvY2sgYXJlIGV2YWx1YXRlZCBiZWZvcmUgYGNyZWF0ZUJsb2NrYCBpdHNlbGZcclxuICogaXMgY2FsbGVkLiBUaGUgZ2VuZXJhdGVkIGNvZGUgdHlwaWNhbGx5IGxvb2tzIGxpa2UgdGhpczpcclxuICpcclxuICogYGBganNcclxuICogZnVuY3Rpb24gcmVuZGVyKCkge1xyXG4gKiAgIHJldHVybiAob3BlbkJsb2NrKCksY3JlYXRlQmxvY2soJ2RpdicsIG51bGwsIFsuLi5dKSlcclxuICogfVxyXG4gKiBgYGBcclxuICogZGlzYWJsZVRyYWNraW5nIGlzIHRydWUgd2hlbiBjcmVhdGluZyBhIHYtZm9yIGZyYWdtZW50IGJsb2NrLCBzaW5jZSBhIHYtZm9yXHJcbiAqIGZyYWdtZW50IGFsd2F5cyBkaWZmcyBpdHMgY2hpbGRyZW4uXHJcbiAqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiBvcGVuQmxvY2soZGlzYWJsZVRyYWNraW5nID0gZmFsc2UpIHtcclxuICAgIGJsb2NrU3RhY2sucHVzaCgoY3VycmVudEJsb2NrID0gZGlzYWJsZVRyYWNraW5nID8gbnVsbCA6IFtdKSk7XHJcbn1cclxuZnVuY3Rpb24gY2xvc2VCbG9jaygpIHtcclxuICAgIGJsb2NrU3RhY2sucG9wKCk7XHJcbiAgICBjdXJyZW50QmxvY2sgPSBibG9ja1N0YWNrW2Jsb2NrU3RhY2subGVuZ3RoIC0gMV0gfHwgbnVsbDtcclxufVxyXG4vLyBXaGV0aGVyIHdlIHNob3VsZCBiZSB0cmFja2luZyBkeW5hbWljIGNoaWxkIG5vZGVzIGluc2lkZSBhIGJsb2NrLlxyXG4vLyBPbmx5IHRyYWNrcyB3aGVuIHRoaXMgdmFsdWUgaXMgPiAwXHJcbi8vIFdlIGFyZSBub3QgdXNpbmcgYSBzaW1wbGUgYm9vbGVhbiBiZWNhdXNlIHRoaXMgdmFsdWUgbWF5IG5lZWQgdG8gYmVcclxuLy8gaW5jcmVtZW50ZWQvZGVjcmVtZW50ZWQgYnkgbmVzdGVkIHVzYWdlIG9mIHYtb25jZSAoc2VlIGJlbG93KVxyXG5sZXQgaXNCbG9ja1RyZWVFbmFibGVkID0gMTtcclxuLyoqXHJcbiAqIEJsb2NrIHRyYWNraW5nIHNvbWV0aW1lcyBuZWVkcyB0byBiZSBkaXNhYmxlZCwgZm9yIGV4YW1wbGUgZHVyaW5nIHRoZVxyXG4gKiBjcmVhdGlvbiBvZiBhIHRyZWUgdGhhdCBuZWVkcyB0byBiZSBjYWNoZWQgYnkgdi1vbmNlLiBUaGUgY29tcGlsZXIgZ2VuZXJhdGVzXHJcbiAqIGNvZGUgbGlrZSB0aGlzOlxyXG4gKlxyXG4gKiBgYGAganNcclxuICogX2NhY2hlWzFdIHx8IChcclxuICogICBzZXRCbG9ja1RyYWNraW5nKC0xKSxcclxuICogICBfY2FjaGVbMV0gPSBjcmVhdGVWTm9kZSguLi4pLFxyXG4gKiAgIHNldEJsb2NrVHJhY2tpbmcoMSksXHJcbiAqICAgX2NhY2hlWzFdXHJcbiAqIClcclxuICogYGBgXHJcbiAqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiBzZXRCbG9ja1RyYWNraW5nKHZhbHVlKSB7XHJcbiAgICBpc0Jsb2NrVHJlZUVuYWJsZWQgKz0gdmFsdWU7XHJcbn1cclxuZnVuY3Rpb24gc2V0dXBCbG9jayh2bm9kZSkge1xyXG4gICAgLy8gc2F2ZSBjdXJyZW50IGJsb2NrIGNoaWxkcmVuIG9uIHRoZSBibG9jayB2bm9kZVxyXG4gICAgdm5vZGUuZHluYW1pY0NoaWxkcmVuID1cclxuICAgICAgICBpc0Jsb2NrVHJlZUVuYWJsZWQgPiAwID8gY3VycmVudEJsb2NrIHx8IEVNUFRZX0FSUiA6IG51bGw7XHJcbiAgICAvLyBjbG9zZSBibG9ja1xyXG4gICAgY2xvc2VCbG9jaygpO1xyXG4gICAgLy8gYSBibG9jayBpcyBhbHdheXMgZ29pbmcgdG8gYmUgcGF0Y2hlZCwgc28gdHJhY2sgaXQgYXMgYSBjaGlsZCBvZiBpdHNcclxuICAgIC8vIHBhcmVudCBibG9ja1xyXG4gICAgaWYgKGlzQmxvY2tUcmVlRW5hYmxlZCA+IDAgJiYgY3VycmVudEJsb2NrKSB7XHJcbiAgICAgICAgY3VycmVudEJsb2NrLnB1c2godm5vZGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZub2RlO1xyXG59XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlRWxlbWVudEJsb2NrKHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgcGF0Y2hGbGFnLCBkeW5hbWljUHJvcHMsIHNoYXBlRmxhZykge1xyXG4gICAgcmV0dXJuIHNldHVwQmxvY2soY3JlYXRlQmFzZVZOb2RlKHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgcGF0Y2hGbGFnLCBkeW5hbWljUHJvcHMsIHNoYXBlRmxhZywgdHJ1ZSAvKiBpc0Jsb2NrICovKSk7XHJcbn1cclxuLyoqXHJcbiAqIENyZWF0ZSBhIGJsb2NrIHJvb3Qgdm5vZGUuIFRha2VzIHRoZSBzYW1lIGV4YWN0IGFyZ3VtZW50cyBhcyBgY3JlYXRlVk5vZGVgLlxyXG4gKiBBIGJsb2NrIHJvb3Qga2VlcHMgdHJhY2sgb2YgZHluYW1pYyBub2RlcyB3aXRoaW4gdGhlIGJsb2NrIGluIHRoZVxyXG4gKiBgZHluYW1pY0NoaWxkcmVuYCBhcnJheS5cclxuICpcclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZUJsb2NrKHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgcGF0Y2hGbGFnLCBkeW5hbWljUHJvcHMpIHtcclxuICAgIHJldHVybiBzZXR1cEJsb2NrKGNyZWF0ZVZOb2RlKHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgcGF0Y2hGbGFnLCBkeW5hbWljUHJvcHMsIHRydWUgLyogaXNCbG9jazogcHJldmVudCBhIGJsb2NrIGZyb20gdHJhY2tpbmcgaXRzZWxmICovKSk7XHJcbn1cclxuZnVuY3Rpb24gaXNWTm9kZSh2YWx1ZSkge1xyXG4gICAgcmV0dXJuIHZhbHVlID8gdmFsdWUuX192X2lzVk5vZGUgPT09IHRydWUgOiBmYWxzZTtcclxufVxyXG5mdW5jdGlvbiBpc1NhbWVWTm9kZVR5cGUobjEsIG4yKSB7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgbjIuc2hhcGVGbGFnICYgNiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVCAqLyAmJlxyXG4gICAgICAgIGhtckRpcnR5Q29tcG9uZW50cy5oYXMobjIudHlwZSkpIHtcclxuICAgICAgICAvLyBITVIgb25seTogaWYgdGhlIGNvbXBvbmVudCBoYXMgYmVlbiBob3QtdXBkYXRlZCwgZm9yY2UgYSByZWxvYWQuXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG4xLnR5cGUgPT09IG4yLnR5cGUgJiYgbjEua2V5ID09PSBuMi5rZXk7XHJcbn1cclxubGV0IHZub2RlQXJnc1RyYW5zZm9ybWVyO1xyXG4vKipcclxuICogSW50ZXJuYWwgQVBJIGZvciByZWdpc3RlcmluZyBhbiBhcmd1bWVudHMgdHJhbnNmb3JtIGZvciBjcmVhdGVWTm9kZVxyXG4gKiB1c2VkIGZvciBjcmVhdGluZyBzdHVicyBpbiB0aGUgdGVzdC11dGlsc1xyXG4gKiBJdCBpcyAqaW50ZXJuYWwqIGJ1dCBuZWVkcyB0byBiZSBleHBvc2VkIGZvciB0ZXN0LXV0aWxzIHRvIHBpY2sgdXAgcHJvcGVyXHJcbiAqIHR5cGluZ3NcclxuICovXHJcbmZ1bmN0aW9uIHRyYW5zZm9ybVZOb2RlQXJncyh0cmFuc2Zvcm1lcikge1xyXG4gICAgdm5vZGVBcmdzVHJhbnNmb3JtZXIgPSB0cmFuc2Zvcm1lcjtcclxufVxyXG5jb25zdCBjcmVhdGVWTm9kZVdpdGhBcmdzVHJhbnNmb3JtID0gKC4uLmFyZ3MpID0+IHtcclxuICAgIHJldHVybiBfY3JlYXRlVk5vZGUoLi4uKHZub2RlQXJnc1RyYW5zZm9ybWVyXHJcbiAgICAgICAgPyB2bm9kZUFyZ3NUcmFuc2Zvcm1lcihhcmdzLCBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UpXHJcbiAgICAgICAgOiBhcmdzKSk7XHJcbn07XHJcbmNvbnN0IEludGVybmFsT2JqZWN0S2V5ID0gYF9fdkludGVybmFsYDtcclxuY29uc3Qgbm9ybWFsaXplS2V5ID0gKHsga2V5IH0pID0+IGtleSAhPSBudWxsID8ga2V5IDogbnVsbDtcclxuY29uc3Qgbm9ybWFsaXplUmVmID0gKHsgcmVmLCByZWZfa2V5LCByZWZfZm9yIH0pID0+IHtcclxuICAgIHJldHVybiAocmVmICE9IG51bGxcclxuICAgICAgICA/IGlzU3RyaW5nKHJlZikgfHwgaXNSZWYocmVmKSB8fCBpc0Z1bmN0aW9uKHJlZilcclxuICAgICAgICAgICAgPyB7IGk6IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSwgcjogcmVmLCBrOiByZWZfa2V5LCBmOiAhIXJlZl9mb3IgfVxyXG4gICAgICAgICAgICA6IHJlZlxyXG4gICAgICAgIDogbnVsbCk7XHJcbn07XHJcbmZ1bmN0aW9uIGNyZWF0ZUJhc2VWTm9kZSh0eXBlLCBwcm9wcyA9IG51bGwsIGNoaWxkcmVuID0gbnVsbCwgcGF0Y2hGbGFnID0gMCwgZHluYW1pY1Byb3BzID0gbnVsbCwgc2hhcGVGbGFnID0gdHlwZSA9PT0gRnJhZ21lbnQgPyAwIDogMSAvKiBTaGFwZUZsYWdzLkVMRU1FTlQgKi8sIGlzQmxvY2tOb2RlID0gZmFsc2UsIG5lZWRGdWxsQ2hpbGRyZW5Ob3JtYWxpemF0aW9uID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IHZub2RlID0ge1xyXG4gICAgICAgIF9fdl9pc1ZOb2RlOiB0cnVlLFxyXG4gICAgICAgIF9fdl9za2lwOiB0cnVlLFxyXG4gICAgICAgIHR5cGUsXHJcbiAgICAgICAgcHJvcHMsXHJcbiAgICAgICAga2V5OiBwcm9wcyAmJiBub3JtYWxpemVLZXkocHJvcHMpLFxyXG4gICAgICAgIHJlZjogcHJvcHMgJiYgbm9ybWFsaXplUmVmKHByb3BzKSxcclxuICAgICAgICBzY29wZUlkOiBjdXJyZW50U2NvcGVJZCxcclxuICAgICAgICBzbG90U2NvcGVJZHM6IG51bGwsXHJcbiAgICAgICAgY2hpbGRyZW4sXHJcbiAgICAgICAgY29tcG9uZW50OiBudWxsLFxyXG4gICAgICAgIHN1c3BlbnNlOiBudWxsLFxyXG4gICAgICAgIHNzQ29udGVudDogbnVsbCxcclxuICAgICAgICBzc0ZhbGxiYWNrOiBudWxsLFxyXG4gICAgICAgIGRpcnM6IG51bGwsXHJcbiAgICAgICAgdHJhbnNpdGlvbjogbnVsbCxcclxuICAgICAgICBlbDogbnVsbCxcclxuICAgICAgICBhbmNob3I6IG51bGwsXHJcbiAgICAgICAgdGFyZ2V0OiBudWxsLFxyXG4gICAgICAgIHRhcmdldEFuY2hvcjogbnVsbCxcclxuICAgICAgICBzdGF0aWNDb3VudDogMCxcclxuICAgICAgICBzaGFwZUZsYWcsXHJcbiAgICAgICAgcGF0Y2hGbGFnLFxyXG4gICAgICAgIGR5bmFtaWNQcm9wcyxcclxuICAgICAgICBkeW5hbWljQ2hpbGRyZW46IG51bGwsXHJcbiAgICAgICAgYXBwQ29udGV4dDogbnVsbFxyXG4gICAgfTtcclxuICAgIGlmIChuZWVkRnVsbENoaWxkcmVuTm9ybWFsaXphdGlvbikge1xyXG4gICAgICAgIG5vcm1hbGl6ZUNoaWxkcmVuKHZub2RlLCBjaGlsZHJlbik7XHJcbiAgICAgICAgLy8gbm9ybWFsaXplIHN1c3BlbnNlIGNoaWxkcmVuXHJcbiAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDEyOCAvKiBTaGFwZUZsYWdzLlNVU1BFTlNFICovKSB7XHJcbiAgICAgICAgICAgIHR5cGUubm9ybWFsaXplKHZub2RlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICAgIC8vIGNvbXBpbGVkIGVsZW1lbnQgdm5vZGUgLSBpZiBjaGlsZHJlbiBpcyBwYXNzZWQsIG9ubHkgcG9zc2libGUgdHlwZXMgYXJlXHJcbiAgICAgICAgLy8gc3RyaW5nIG9yIEFycmF5LlxyXG4gICAgICAgIHZub2RlLnNoYXBlRmxhZyB8PSBpc1N0cmluZyhjaGlsZHJlbilcclxuICAgICAgICAgICAgPyA4IC8qIFNoYXBlRmxhZ3MuVEVYVF9DSElMRFJFTiAqL1xyXG4gICAgICAgICAgICA6IDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi87XHJcbiAgICB9XHJcbiAgICAvLyB2YWxpZGF0ZSBrZXlcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgdm5vZGUua2V5ICE9PSB2bm9kZS5rZXkpIHtcclxuICAgICAgICB3YXJuKGBWTm9kZSBjcmVhdGVkIHdpdGggaW52YWxpZCBrZXkgKE5hTikuIFZOb2RlIHR5cGU6YCwgdm5vZGUudHlwZSk7XHJcbiAgICB9XHJcbiAgICAvLyB0cmFjayB2bm9kZSBmb3IgYmxvY2sgdHJlZVxyXG4gICAgaWYgKGlzQmxvY2tUcmVlRW5hYmxlZCA+IDAgJiZcclxuICAgICAgICAvLyBhdm9pZCBhIGJsb2NrIG5vZGUgZnJvbSB0cmFja2luZyBpdHNlbGZcclxuICAgICAgICAhaXNCbG9ja05vZGUgJiZcclxuICAgICAgICAvLyBoYXMgY3VycmVudCBwYXJlbnQgYmxvY2tcclxuICAgICAgICBjdXJyZW50QmxvY2sgJiZcclxuICAgICAgICAvLyBwcmVzZW5jZSBvZiBhIHBhdGNoIGZsYWcgaW5kaWNhdGVzIHRoaXMgbm9kZSBuZWVkcyBwYXRjaGluZyBvbiB1cGRhdGVzLlxyXG4gICAgICAgIC8vIGNvbXBvbmVudCBub2RlcyBhbHNvIHNob3VsZCBhbHdheXMgYmUgcGF0Y2hlZCwgYmVjYXVzZSBldmVuIGlmIHRoZVxyXG4gICAgICAgIC8vIGNvbXBvbmVudCBkb2Vzbid0IG5lZWQgdG8gdXBkYXRlLCBpdCBuZWVkcyB0byBwZXJzaXN0IHRoZSBpbnN0YW5jZSBvbiB0b1xyXG4gICAgICAgIC8vIHRoZSBuZXh0IHZub2RlIHNvIHRoYXQgaXQgY2FuIGJlIHByb3Blcmx5IHVubW91bnRlZCBsYXRlci5cclxuICAgICAgICAodm5vZGUucGF0Y2hGbGFnID4gMCB8fCBzaGFwZUZsYWcgJiA2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UICovKSAmJlxyXG4gICAgICAgIC8vIHRoZSBFVkVOVFMgZmxhZyBpcyBvbmx5IGZvciBoeWRyYXRpb24gYW5kIGlmIGl0IGlzIHRoZSBvbmx5IGZsYWcsIHRoZVxyXG4gICAgICAgIC8vIHZub2RlIHNob3VsZCBub3QgYmUgY29uc2lkZXJlZCBkeW5hbWljIGR1ZSB0byBoYW5kbGVyIGNhY2hpbmcuXHJcbiAgICAgICAgdm5vZGUucGF0Y2hGbGFnICE9PSAzMiAvKiBQYXRjaEZsYWdzLkhZRFJBVEVfRVZFTlRTICovKSB7XHJcbiAgICAgICAgY3VycmVudEJsb2NrLnB1c2godm5vZGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZub2RlO1xyXG59XHJcbmNvbnN0IGNyZWF0ZVZOb2RlID0gKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGNyZWF0ZVZOb2RlV2l0aEFyZ3NUcmFuc2Zvcm0gOiBfY3JlYXRlVk5vZGUpO1xyXG5mdW5jdGlvbiBfY3JlYXRlVk5vZGUodHlwZSwgcHJvcHMgPSBudWxsLCBjaGlsZHJlbiA9IG51bGwsIHBhdGNoRmxhZyA9IDAsIGR5bmFtaWNQcm9wcyA9IG51bGwsIGlzQmxvY2tOb2RlID0gZmFsc2UpIHtcclxuICAgIGlmICghdHlwZSB8fCB0eXBlID09PSBOVUxMX0RZTkFNSUNfQ09NUE9ORU5UKSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhdHlwZSkge1xyXG4gICAgICAgICAgICB3YXJuKGBJbnZhbGlkIHZub2RlIHR5cGUgd2hlbiBjcmVhdGluZyB2bm9kZTogJHt0eXBlfS5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHlwZSA9IENvbW1lbnQ7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWTm9kZSh0eXBlKSkge1xyXG4gICAgICAgIC8vIGNyZWF0ZVZOb2RlIHJlY2VpdmluZyBhbiBleGlzdGluZyB2bm9kZS4gVGhpcyBoYXBwZW5zIGluIGNhc2VzIGxpa2VcclxuICAgICAgICAvLyA8Y29tcG9uZW50IDppcz1cInZub2RlXCIvPlxyXG4gICAgICAgIC8vICMyMDc4IG1ha2Ugc3VyZSB0byBtZXJnZSByZWZzIGR1cmluZyB0aGUgY2xvbmUgaW5zdGVhZCBvZiBvdmVyd3JpdGluZyBpdFxyXG4gICAgICAgIGNvbnN0IGNsb25lZCA9IGNsb25lVk5vZGUodHlwZSwgcHJvcHMsIHRydWUgLyogbWVyZ2VSZWY6IHRydWUgKi8pO1xyXG4gICAgICAgIGlmIChjaGlsZHJlbikge1xyXG4gICAgICAgICAgICBub3JtYWxpemVDaGlsZHJlbihjbG9uZWQsIGNoaWxkcmVuKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzQmxvY2tUcmVlRW5hYmxlZCA+IDAgJiYgIWlzQmxvY2tOb2RlICYmIGN1cnJlbnRCbG9jaykge1xyXG4gICAgICAgICAgICBpZiAoY2xvbmVkLnNoYXBlRmxhZyAmIDYgLyogU2hhcGVGbGFncy5DT01QT05FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRCbG9ja1tjdXJyZW50QmxvY2suaW5kZXhPZih0eXBlKV0gPSBjbG9uZWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjdXJyZW50QmxvY2sucHVzaChjbG9uZWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNsb25lZC5wYXRjaEZsYWcgfD0gLTIgLyogUGF0Y2hGbGFncy5CQUlMICovO1xyXG4gICAgICAgIHJldHVybiBjbG9uZWQ7XHJcbiAgICB9XHJcbiAgICAvLyBjbGFzcyBjb21wb25lbnQgbm9ybWFsaXphdGlvbi5cclxuICAgIGlmIChpc0NsYXNzQ29tcG9uZW50KHR5cGUpKSB7XHJcbiAgICAgICAgdHlwZSA9IHR5cGUuX192Y2NPcHRzO1xyXG4gICAgfVxyXG4gICAgLy8gY2xhc3MgJiBzdHlsZSBub3JtYWxpemF0aW9uLlxyXG4gICAgaWYgKHByb3BzKSB7XHJcbiAgICAgICAgLy8gZm9yIHJlYWN0aXZlIG9yIHByb3h5IG9iamVjdHMsIHdlIG5lZWQgdG8gY2xvbmUgaXQgdG8gZW5hYmxlIG11dGF0aW9uLlxyXG4gICAgICAgIHByb3BzID0gZ3VhcmRSZWFjdGl2ZVByb3BzKHByb3BzKTtcclxuICAgICAgICBsZXQgeyBjbGFzczoga2xhc3MsIHN0eWxlIH0gPSBwcm9wcztcclxuICAgICAgICBpZiAoa2xhc3MgJiYgIWlzU3RyaW5nKGtsYXNzKSkge1xyXG4gICAgICAgICAgICBwcm9wcy5jbGFzcyA9IG5vcm1hbGl6ZUNsYXNzKGtsYXNzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzT2JqZWN0KHN0eWxlKSkge1xyXG4gICAgICAgICAgICAvLyByZWFjdGl2ZSBzdGF0ZSBvYmplY3RzIG5lZWQgdG8gYmUgY2xvbmVkIHNpbmNlIHRoZXkgYXJlIGxpa2VseSB0byBiZVxyXG4gICAgICAgICAgICAvLyBtdXRhdGVkXHJcbiAgICAgICAgICAgIGlmIChpc1Byb3h5KHN0eWxlKSAmJiAhaXNBcnJheShzdHlsZSkpIHtcclxuICAgICAgICAgICAgICAgIHN0eWxlID0gZXh0ZW5kKHt9LCBzdHlsZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcHJvcHMuc3R5bGUgPSBub3JtYWxpemVTdHlsZShzdHlsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gZW5jb2RlIHRoZSB2bm9kZSB0eXBlIGluZm9ybWF0aW9uIGludG8gYSBiaXRtYXBcclxuICAgIGNvbnN0IHNoYXBlRmxhZyA9IGlzU3RyaW5nKHR5cGUpXHJcbiAgICAgICAgPyAxIC8qIFNoYXBlRmxhZ3MuRUxFTUVOVCAqL1xyXG4gICAgICAgIDogaXNTdXNwZW5zZSh0eXBlKVxyXG4gICAgICAgICAgICA/IDEyOCAvKiBTaGFwZUZsYWdzLlNVU1BFTlNFICovXHJcbiAgICAgICAgICAgIDogaXNUZWxlcG9ydCh0eXBlKVxyXG4gICAgICAgICAgICAgICAgPyA2NCAvKiBTaGFwZUZsYWdzLlRFTEVQT1JUICovXHJcbiAgICAgICAgICAgICAgICA6IGlzT2JqZWN0KHR5cGUpXHJcbiAgICAgICAgICAgICAgICAgICAgPyA0IC8qIFNoYXBlRmxhZ3MuU1RBVEVGVUxfQ09NUE9ORU5UICovXHJcbiAgICAgICAgICAgICAgICAgICAgOiBpc0Z1bmN0aW9uKHR5cGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gMiAvKiBTaGFwZUZsYWdzLkZVTkNUSU9OQUxfQ09NUE9ORU5UICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogMDtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgc2hhcGVGbGFnICYgNCAvKiBTaGFwZUZsYWdzLlNUQVRFRlVMX0NPTVBPTkVOVCAqLyAmJiBpc1Byb3h5KHR5cGUpKSB7XHJcbiAgICAgICAgdHlwZSA9IHRvUmF3KHR5cGUpO1xyXG4gICAgICAgIHdhcm4oYFZ1ZSByZWNlaXZlZCBhIENvbXBvbmVudCB3aGljaCB3YXMgbWFkZSBhIHJlYWN0aXZlIG9iamVjdC4gVGhpcyBjYW4gYCArXHJcbiAgICAgICAgICAgIGBsZWFkIHRvIHVubmVjZXNzYXJ5IHBlcmZvcm1hbmNlIG92ZXJoZWFkLCBhbmQgc2hvdWxkIGJlIGF2b2lkZWQgYnkgYCArXHJcbiAgICAgICAgICAgIGBtYXJraW5nIHRoZSBjb21wb25lbnQgd2l0aCBcXGBtYXJrUmF3XFxgIG9yIHVzaW5nIFxcYHNoYWxsb3dSZWZcXGAgYCArXHJcbiAgICAgICAgICAgIGBpbnN0ZWFkIG9mIFxcYHJlZlxcYC5gLCBgXFxuQ29tcG9uZW50IHRoYXQgd2FzIG1hZGUgcmVhY3RpdmU6IGAsIHR5cGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNyZWF0ZUJhc2VWTm9kZSh0eXBlLCBwcm9wcywgY2hpbGRyZW4sIHBhdGNoRmxhZywgZHluYW1pY1Byb3BzLCBzaGFwZUZsYWcsIGlzQmxvY2tOb2RlLCB0cnVlKTtcclxufVxyXG5mdW5jdGlvbiBndWFyZFJlYWN0aXZlUHJvcHMocHJvcHMpIHtcclxuICAgIGlmICghcHJvcHMpXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gaXNQcm94eShwcm9wcykgfHwgSW50ZXJuYWxPYmplY3RLZXkgaW4gcHJvcHNcclxuICAgICAgICA/IGV4dGVuZCh7fSwgcHJvcHMpXHJcbiAgICAgICAgOiBwcm9wcztcclxufVxyXG5mdW5jdGlvbiBjbG9uZVZOb2RlKHZub2RlLCBleHRyYVByb3BzLCBtZXJnZVJlZiA9IGZhbHNlKSB7XHJcbiAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgTk9UIHVzaW5nIHNwcmVhZCBvciBleHRlbmQgdG8gYXZvaWQgdGhlIHJ1bnRpbWVcclxuICAgIC8vIGtleSBlbnVtZXJhdGlvbiBjb3N0LlxyXG4gICAgY29uc3QgeyBwcm9wcywgcmVmLCBwYXRjaEZsYWcsIGNoaWxkcmVuIH0gPSB2bm9kZTtcclxuICAgIGNvbnN0IG1lcmdlZFByb3BzID0gZXh0cmFQcm9wcyA/IG1lcmdlUHJvcHMocHJvcHMgfHwge30sIGV4dHJhUHJvcHMpIDogcHJvcHM7XHJcbiAgICBjb25zdCBjbG9uZWQgPSB7XHJcbiAgICAgICAgX192X2lzVk5vZGU6IHRydWUsXHJcbiAgICAgICAgX192X3NraXA6IHRydWUsXHJcbiAgICAgICAgdHlwZTogdm5vZGUudHlwZSxcclxuICAgICAgICBwcm9wczogbWVyZ2VkUHJvcHMsXHJcbiAgICAgICAga2V5OiBtZXJnZWRQcm9wcyAmJiBub3JtYWxpemVLZXkobWVyZ2VkUHJvcHMpLFxyXG4gICAgICAgIHJlZjogZXh0cmFQcm9wcyAmJiBleHRyYVByb3BzLnJlZlxyXG4gICAgICAgICAgICA/IC8vICMyMDc4IGluIHRoZSBjYXNlIG9mIDxjb21wb25lbnQgOmlzPVwidm5vZGVcIiByZWY9XCJleHRyYVwiLz5cclxuICAgICAgICAgICAgICAgIC8vIGlmIHRoZSB2bm9kZSBpdHNlbGYgYWxyZWFkeSBoYXMgYSByZWYsIGNsb25lVk5vZGUgd2lsbCBuZWVkIHRvIG1lcmdlXHJcbiAgICAgICAgICAgICAgICAvLyB0aGUgcmVmcyBzbyB0aGUgc2luZ2xlIHZub2RlIGNhbiBiZSBzZXQgb24gbXVsdGlwbGUgcmVmc1xyXG4gICAgICAgICAgICAgICAgbWVyZ2VSZWYgJiYgcmVmXHJcbiAgICAgICAgICAgICAgICAgICAgPyBpc0FycmF5KHJlZilcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyByZWYuY29uY2F0KG5vcm1hbGl6ZVJlZihleHRyYVByb3BzKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbcmVmLCBub3JtYWxpemVSZWYoZXh0cmFQcm9wcyldXHJcbiAgICAgICAgICAgICAgICAgICAgOiBub3JtYWxpemVSZWYoZXh0cmFQcm9wcylcclxuICAgICAgICAgICAgOiByZWYsXHJcbiAgICAgICAgc2NvcGVJZDogdm5vZGUuc2NvcGVJZCxcclxuICAgICAgICBzbG90U2NvcGVJZHM6IHZub2RlLnNsb3RTY29wZUlkcyxcclxuICAgICAgICBjaGlsZHJlbjogKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHBhdGNoRmxhZyA9PT0gLTEgLyogUGF0Y2hGbGFncy5IT0lTVEVEICovICYmIGlzQXJyYXkoY2hpbGRyZW4pXHJcbiAgICAgICAgICAgID8gY2hpbGRyZW4ubWFwKGRlZXBDbG9uZVZOb2RlKVxyXG4gICAgICAgICAgICA6IGNoaWxkcmVuLFxyXG4gICAgICAgIHRhcmdldDogdm5vZGUudGFyZ2V0LFxyXG4gICAgICAgIHRhcmdldEFuY2hvcjogdm5vZGUudGFyZ2V0QW5jaG9yLFxyXG4gICAgICAgIHN0YXRpY0NvdW50OiB2bm9kZS5zdGF0aWNDb3VudCxcclxuICAgICAgICBzaGFwZUZsYWc6IHZub2RlLnNoYXBlRmxhZyxcclxuICAgICAgICAvLyBpZiB0aGUgdm5vZGUgaXMgY2xvbmVkIHdpdGggZXh0cmEgcHJvcHMsIHdlIGNhbiBubyBsb25nZXIgYXNzdW1lIGl0c1xyXG4gICAgICAgIC8vIGV4aXN0aW5nIHBhdGNoIGZsYWcgdG8gYmUgcmVsaWFibGUgYW5kIG5lZWQgdG8gYWRkIHRoZSBGVUxMX1BST1BTIGZsYWcuXHJcbiAgICAgICAgLy8gbm90ZTogcHJlc2VydmUgZmxhZyBmb3IgZnJhZ21lbnRzIHNpbmNlIHRoZXkgdXNlIHRoZSBmbGFnIGZvciBjaGlsZHJlblxyXG4gICAgICAgIC8vIGZhc3QgcGF0aHMgb25seS5cclxuICAgICAgICBwYXRjaEZsYWc6IGV4dHJhUHJvcHMgJiYgdm5vZGUudHlwZSAhPT0gRnJhZ21lbnRcclxuICAgICAgICAgICAgPyBwYXRjaEZsYWcgPT09IC0xIC8vIGhvaXN0ZWQgbm9kZVxyXG4gICAgICAgICAgICAgICAgPyAxNiAvKiBQYXRjaEZsYWdzLkZVTExfUFJPUFMgKi9cclxuICAgICAgICAgICAgICAgIDogcGF0Y2hGbGFnIHwgMTYgLyogUGF0Y2hGbGFncy5GVUxMX1BST1BTICovXHJcbiAgICAgICAgICAgIDogcGF0Y2hGbGFnLFxyXG4gICAgICAgIGR5bmFtaWNQcm9wczogdm5vZGUuZHluYW1pY1Byb3BzLFxyXG4gICAgICAgIGR5bmFtaWNDaGlsZHJlbjogdm5vZGUuZHluYW1pY0NoaWxkcmVuLFxyXG4gICAgICAgIGFwcENvbnRleHQ6IHZub2RlLmFwcENvbnRleHQsXHJcbiAgICAgICAgZGlyczogdm5vZGUuZGlycyxcclxuICAgICAgICB0cmFuc2l0aW9uOiB2bm9kZS50cmFuc2l0aW9uLFxyXG4gICAgICAgIC8vIFRoZXNlIHNob3VsZCB0ZWNobmljYWxseSBvbmx5IGJlIG5vbi1udWxsIG9uIG1vdW50ZWQgVk5vZGVzLiBIb3dldmVyLFxyXG4gICAgICAgIC8vIHRoZXkgKnNob3VsZCogYmUgY29waWVkIGZvciBrZXB0LWFsaXZlIHZub2Rlcy4gU28gd2UganVzdCBhbHdheXMgY29weVxyXG4gICAgICAgIC8vIHRoZW0gc2luY2UgdGhlbSBiZWluZyBub24tbnVsbCBkdXJpbmcgYSBtb3VudCBkb2Vzbid0IGFmZmVjdCB0aGUgbG9naWMgYXNcclxuICAgICAgICAvLyB0aGV5IHdpbGwgc2ltcGx5IGJlIG92ZXJ3cml0dGVuLlxyXG4gICAgICAgIGNvbXBvbmVudDogdm5vZGUuY29tcG9uZW50LFxyXG4gICAgICAgIHN1c3BlbnNlOiB2bm9kZS5zdXNwZW5zZSxcclxuICAgICAgICBzc0NvbnRlbnQ6IHZub2RlLnNzQ29udGVudCAmJiBjbG9uZVZOb2RlKHZub2RlLnNzQ29udGVudCksXHJcbiAgICAgICAgc3NGYWxsYmFjazogdm5vZGUuc3NGYWxsYmFjayAmJiBjbG9uZVZOb2RlKHZub2RlLnNzRmFsbGJhY2spLFxyXG4gICAgICAgIGVsOiB2bm9kZS5lbCxcclxuICAgICAgICBhbmNob3I6IHZub2RlLmFuY2hvclxyXG4gICAgfTtcclxuICAgIHJldHVybiBjbG9uZWQ7XHJcbn1cclxuLyoqXHJcbiAqIERldiBvbmx5LCBmb3IgSE1SIG9mIGhvaXN0ZWQgdm5vZGVzIHJldXNlZCBpbiB2LWZvclxyXG4gKiBodHRwczovL2dpdGh1Yi5jb20vdml0ZWpzL3ZpdGUvaXNzdWVzLzIwMjJcclxuICovXHJcbmZ1bmN0aW9uIGRlZXBDbG9uZVZOb2RlKHZub2RlKSB7XHJcbiAgICBjb25zdCBjbG9uZWQgPSBjbG9uZVZOb2RlKHZub2RlKTtcclxuICAgIGlmIChpc0FycmF5KHZub2RlLmNoaWxkcmVuKSkge1xyXG4gICAgICAgIGNsb25lZC5jaGlsZHJlbiA9IHZub2RlLmNoaWxkcmVuLm1hcChkZWVwQ2xvbmVWTm9kZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2xvbmVkO1xyXG59XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlVGV4dFZOb2RlKHRleHQgPSAnICcsIGZsYWcgPSAwKSB7XHJcbiAgICByZXR1cm4gY3JlYXRlVk5vZGUoVGV4dCwgbnVsbCwgdGV4dCwgZmxhZyk7XHJcbn1cclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVTdGF0aWNWTm9kZShjb250ZW50LCBudW1iZXJPZk5vZGVzKSB7XHJcbiAgICAvLyBBIHN0YXRpYyB2bm9kZSBjYW4gY29udGFpbiBtdWx0aXBsZSBzdHJpbmdpZmllZCBlbGVtZW50cywgYW5kIHRoZSBudW1iZXJcclxuICAgIC8vIG9mIGVsZW1lbnRzIGlzIG5lY2Vzc2FyeSBmb3IgaHlkcmF0aW9uLlxyXG4gICAgY29uc3Qgdm5vZGUgPSBjcmVhdGVWTm9kZShTdGF0aWMsIG51bGwsIGNvbnRlbnQpO1xyXG4gICAgdm5vZGUuc3RhdGljQ291bnQgPSBudW1iZXJPZk5vZGVzO1xyXG4gICAgcmV0dXJuIHZub2RlO1xyXG59XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlQ29tbWVudFZOb2RlKHRleHQgPSAnJywgXHJcbi8vIHdoZW4gdXNlZCBhcyB0aGUgdi1lbHNlIGJyYW5jaCwgdGhlIGNvbW1lbnQgbm9kZSBtdXN0IGJlIGNyZWF0ZWQgYXMgYVxyXG4vLyBibG9jayB0byBlbnN1cmUgY29ycmVjdCB1cGRhdGVzLlxyXG5hc0Jsb2NrID0gZmFsc2UpIHtcclxuICAgIHJldHVybiBhc0Jsb2NrXHJcbiAgICAgICAgPyAob3BlbkJsb2NrKCksIGNyZWF0ZUJsb2NrKENvbW1lbnQsIG51bGwsIHRleHQpKVxyXG4gICAgICAgIDogY3JlYXRlVk5vZGUoQ29tbWVudCwgbnVsbCwgdGV4dCk7XHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplVk5vZGUoY2hpbGQpIHtcclxuICAgIGlmIChjaGlsZCA9PSBudWxsIHx8IHR5cGVvZiBjaGlsZCA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgLy8gZW1wdHkgcGxhY2Vob2xkZXJcclxuICAgICAgICByZXR1cm4gY3JlYXRlVk5vZGUoQ29tbWVudCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0FycmF5KGNoaWxkKSkge1xyXG4gICAgICAgIC8vIGZyYWdtZW50XHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKEZyYWdtZW50LCBudWxsLCBcclxuICAgICAgICAvLyAjMzY2NiwgYXZvaWQgcmVmZXJlbmNlIHBvbGx1dGlvbiB3aGVuIHJldXNpbmcgdm5vZGVcclxuICAgICAgICBjaGlsZC5zbGljZSgpKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHR5cGVvZiBjaGlsZCA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAvLyBhbHJlYWR5IHZub2RlLCB0aGlzIHNob3VsZCBiZSB0aGUgbW9zdCBjb21tb24gc2luY2UgY29tcGlsZWQgdGVtcGxhdGVzXHJcbiAgICAgICAgLy8gYWx3YXlzIHByb2R1Y2UgYWxsLXZub2RlIGNoaWxkcmVuIGFycmF5c1xyXG4gICAgICAgIHJldHVybiBjbG9uZUlmTW91bnRlZChjaGlsZCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBzdHJpbmdzIGFuZCBudW1iZXJzXHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKFRleHQsIG51bGwsIFN0cmluZyhjaGlsZCkpO1xyXG4gICAgfVxyXG59XHJcbi8vIG9wdGltaXplZCBub3JtYWxpemF0aW9uIGZvciB0ZW1wbGF0ZS1jb21waWxlZCByZW5kZXIgZm5zXHJcbmZ1bmN0aW9uIGNsb25lSWZNb3VudGVkKGNoaWxkKSB7XHJcbiAgICByZXR1cm4gY2hpbGQuZWwgPT09IG51bGwgfHwgY2hpbGQubWVtbyA/IGNoaWxkIDogY2xvbmVWTm9kZShjaGlsZCk7XHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplQ2hpbGRyZW4odm5vZGUsIGNoaWxkcmVuKSB7XHJcbiAgICBsZXQgdHlwZSA9IDA7XHJcbiAgICBjb25zdCB7IHNoYXBlRmxhZyB9ID0gdm5vZGU7XHJcbiAgICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkge1xyXG4gICAgICAgIGNoaWxkcmVuID0gbnVsbDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgdHlwZSA9IDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi87XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgaWYgKHNoYXBlRmxhZyAmICgxIC8qIFNoYXBlRmxhZ3MuRUxFTUVOVCAqLyB8IDY0IC8qIFNoYXBlRmxhZ3MuVEVMRVBPUlQgKi8pKSB7XHJcbiAgICAgICAgICAgIC8vIE5vcm1hbGl6ZSBzbG90IHRvIHBsYWluIGNoaWxkcmVuIGZvciBwbGFpbiBlbGVtZW50IGFuZCBUZWxlcG9ydFxyXG4gICAgICAgICAgICBjb25zdCBzbG90ID0gY2hpbGRyZW4uZGVmYXVsdDtcclxuICAgICAgICAgICAgaWYgKHNsb3QpIHtcclxuICAgICAgICAgICAgICAgIC8vIF9jIG1hcmtlciBpcyBhZGRlZCBieSB3aXRoQ3R4KCkgaW5kaWNhdGluZyB0aGlzIGlzIGEgY29tcGlsZWQgc2xvdFxyXG4gICAgICAgICAgICAgICAgc2xvdC5fYyAmJiAoc2xvdC5fZCA9IGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZUNoaWxkcmVuKHZub2RlLCBzbG90KCkpO1xyXG4gICAgICAgICAgICAgICAgc2xvdC5fYyAmJiAoc2xvdC5fZCA9IHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHR5cGUgPSAzMiAvKiBTaGFwZUZsYWdzLlNMT1RTX0NISUxEUkVOICovO1xyXG4gICAgICAgICAgICBjb25zdCBzbG90RmxhZyA9IGNoaWxkcmVuLl87XHJcbiAgICAgICAgICAgIGlmICghc2xvdEZsYWcgJiYgIShJbnRlcm5hbE9iamVjdEtleSBpbiBjaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgICAgIGNoaWxkcmVuLl9jdHggPSBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoc2xvdEZsYWcgPT09IDMgLyogU2xvdEZsYWdzLkZPUldBUkRFRCAqLyAmJiBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgICAgIC8vIGEgY2hpbGQgY29tcG9uZW50IHJlY2VpdmVzIGZvcndhcmRlZCBzbG90cyBmcm9tIHRoZSBwYXJlbnQuXHJcbiAgICAgICAgICAgICAgICAvLyBpdHMgc2xvdCB0eXBlIGlzIGRldGVybWluZWQgYnkgaXRzIHBhcmVudCdzIHNsb3QgdHlwZS5cclxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2Uuc2xvdHMuXyA9PT0gMSAvKiBTbG90RmxhZ3MuU1RBQkxFICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uXyA9IDEgLyogU2xvdEZsYWdzLlNUQUJMRSAqLztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLl8gPSAyIC8qIFNsb3RGbGFncy5EWU5BTUlDICovO1xyXG4gICAgICAgICAgICAgICAgICAgIHZub2RlLnBhdGNoRmxhZyB8PSAxMDI0IC8qIFBhdGNoRmxhZ3MuRFlOQU1JQ19TTE9UUyAqLztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzRnVuY3Rpb24oY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgY2hpbGRyZW4gPSB7IGRlZmF1bHQ6IGNoaWxkcmVuLCBfY3R4OiBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UgfTtcclxuICAgICAgICB0eXBlID0gMzIgLyogU2hhcGVGbGFncy5TTE9UU19DSElMRFJFTiAqLztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNoaWxkcmVuID0gU3RyaW5nKGNoaWxkcmVuKTtcclxuICAgICAgICAvLyBmb3JjZSB0ZWxlcG9ydCBjaGlsZHJlbiB0byBhcnJheSBzbyBpdCBjYW4gYmUgbW92ZWQgYXJvdW5kXHJcbiAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDY0IC8qIFNoYXBlRmxhZ3MuVEVMRVBPUlQgKi8pIHtcclxuICAgICAgICAgICAgdHlwZSA9IDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi87XHJcbiAgICAgICAgICAgIGNoaWxkcmVuID0gW2NyZWF0ZVRleHRWTm9kZShjaGlsZHJlbildO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdHlwZSA9IDggLyogU2hhcGVGbGFncy5URVhUX0NISUxEUkVOICovO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHZub2RlLmNoaWxkcmVuID0gY2hpbGRyZW47XHJcbiAgICB2bm9kZS5zaGFwZUZsYWcgfD0gdHlwZTtcclxufVxyXG5mdW5jdGlvbiBtZXJnZVByb3BzKC4uLmFyZ3MpIHtcclxuICAgIGNvbnN0IHJldCA9IHt9O1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgdG9NZXJnZSA9IGFyZ3NbaV07XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdG9NZXJnZSkge1xyXG4gICAgICAgICAgICBpZiAoa2V5ID09PSAnY2xhc3MnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmV0LmNsYXNzICE9PSB0b01lcmdlLmNsYXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0LmNsYXNzID0gbm9ybWFsaXplQ2xhc3MoW3JldC5jbGFzcywgdG9NZXJnZS5jbGFzc10pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGtleSA9PT0gJ3N0eWxlJykge1xyXG4gICAgICAgICAgICAgICAgcmV0LnN0eWxlID0gbm9ybWFsaXplU3R5bGUoW3JldC5zdHlsZSwgdG9NZXJnZS5zdHlsZV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzT24oa2V5KSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSByZXRba2V5XTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGluY29taW5nID0gdG9NZXJnZVtrZXldO1xyXG4gICAgICAgICAgICAgICAgaWYgKGluY29taW5nICYmXHJcbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgIT09IGluY29taW5nICYmXHJcbiAgICAgICAgICAgICAgICAgICAgIShpc0FycmF5KGV4aXN0aW5nKSAmJiBleGlzdGluZy5pbmNsdWRlcyhpbmNvbWluZykpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0W2tleV0gPSBleGlzdGluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFtdLmNvbmNhdChleGlzdGluZywgaW5jb21pbmcpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaW5jb21pbmc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoa2V5ICE9PSAnJykge1xyXG4gICAgICAgICAgICAgICAgcmV0W2tleV0gPSB0b01lcmdlW2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0O1xyXG59XHJcbmZ1bmN0aW9uIGludm9rZVZOb2RlSG9vayhob29rLCBpbnN0YW5jZSwgdm5vZGUsIHByZXZWTm9kZSA9IG51bGwpIHtcclxuICAgIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGhvb2ssIGluc3RhbmNlLCA3IC8qIEVycm9yQ29kZXMuVk5PREVfSE9PSyAqLywgW1xyXG4gICAgICAgIHZub2RlLFxyXG4gICAgICAgIHByZXZWTm9kZVxyXG4gICAgXSk7XHJcbn1cblxuY29uc3QgZW1wdHlBcHBDb250ZXh0ID0gY3JlYXRlQXBwQ29udGV4dCgpO1xyXG5sZXQgdWlkJDEgPSAwO1xyXG5mdW5jdGlvbiBjcmVhdGVDb21wb25lbnRJbnN0YW5jZSh2bm9kZSwgcGFyZW50LCBzdXNwZW5zZSkge1xyXG4gICAgY29uc3QgdHlwZSA9IHZub2RlLnR5cGU7XHJcbiAgICAvLyBpbmhlcml0IHBhcmVudCBhcHAgY29udGV4dCAtIG9yIC0gaWYgcm9vdCwgYWRvcHQgZnJvbSByb290IHZub2RlXHJcbiAgICBjb25zdCBhcHBDb250ZXh0ID0gKHBhcmVudCA/IHBhcmVudC5hcHBDb250ZXh0IDogdm5vZGUuYXBwQ29udGV4dCkgfHwgZW1wdHlBcHBDb250ZXh0O1xyXG4gICAgY29uc3QgaW5zdGFuY2UgPSB7XHJcbiAgICAgICAgdWlkOiB1aWQkMSsrLFxyXG4gICAgICAgIHZub2RlLFxyXG4gICAgICAgIHR5cGUsXHJcbiAgICAgICAgcGFyZW50LFxyXG4gICAgICAgIGFwcENvbnRleHQsXHJcbiAgICAgICAgcm9vdDogbnVsbCxcclxuICAgICAgICBuZXh0OiBudWxsLFxyXG4gICAgICAgIHN1YlRyZWU6IG51bGwsXHJcbiAgICAgICAgZWZmZWN0OiBudWxsLFxyXG4gICAgICAgIHVwZGF0ZTogbnVsbCxcclxuICAgICAgICBzY29wZTogbmV3IEVmZmVjdFNjb3BlKHRydWUgLyogZGV0YWNoZWQgKi8pLFxyXG4gICAgICAgIHJlbmRlcjogbnVsbCxcclxuICAgICAgICBwcm94eTogbnVsbCxcclxuICAgICAgICBleHBvc2VkOiBudWxsLFxyXG4gICAgICAgIGV4cG9zZVByb3h5OiBudWxsLFxyXG4gICAgICAgIHdpdGhQcm94eTogbnVsbCxcclxuICAgICAgICBwcm92aWRlczogcGFyZW50ID8gcGFyZW50LnByb3ZpZGVzIDogT2JqZWN0LmNyZWF0ZShhcHBDb250ZXh0LnByb3ZpZGVzKSxcclxuICAgICAgICBhY2Nlc3NDYWNoZTogbnVsbCxcclxuICAgICAgICByZW5kZXJDYWNoZTogW10sXHJcbiAgICAgICAgLy8gbG9jYWwgcmVzb2x2ZWQgYXNzZXRzXHJcbiAgICAgICAgY29tcG9uZW50czogbnVsbCxcclxuICAgICAgICBkaXJlY3RpdmVzOiBudWxsLFxyXG4gICAgICAgIC8vIHJlc29sdmVkIHByb3BzIGFuZCBlbWl0cyBvcHRpb25zXHJcbiAgICAgICAgcHJvcHNPcHRpb25zOiBub3JtYWxpemVQcm9wc09wdGlvbnModHlwZSwgYXBwQ29udGV4dCksXHJcbiAgICAgICAgZW1pdHNPcHRpb25zOiBub3JtYWxpemVFbWl0c09wdGlvbnModHlwZSwgYXBwQ29udGV4dCksXHJcbiAgICAgICAgLy8gZW1pdFxyXG4gICAgICAgIGVtaXQ6IG51bGwsXHJcbiAgICAgICAgZW1pdHRlZDogbnVsbCxcclxuICAgICAgICAvLyBwcm9wcyBkZWZhdWx0IHZhbHVlXHJcbiAgICAgICAgcHJvcHNEZWZhdWx0czogRU1QVFlfT0JKLFxyXG4gICAgICAgIC8vIGluaGVyaXRBdHRyc1xyXG4gICAgICAgIGluaGVyaXRBdHRyczogdHlwZS5pbmhlcml0QXR0cnMsXHJcbiAgICAgICAgLy8gc3RhdGVcclxuICAgICAgICBjdHg6IEVNUFRZX09CSixcclxuICAgICAgICBkYXRhOiBFTVBUWV9PQkosXHJcbiAgICAgICAgcHJvcHM6IEVNUFRZX09CSixcclxuICAgICAgICBhdHRyczogRU1QVFlfT0JKLFxyXG4gICAgICAgIHNsb3RzOiBFTVBUWV9PQkosXHJcbiAgICAgICAgcmVmczogRU1QVFlfT0JKLFxyXG4gICAgICAgIHNldHVwU3RhdGU6IEVNUFRZX09CSixcclxuICAgICAgICBzZXR1cENvbnRleHQ6IG51bGwsXHJcbiAgICAgICAgLy8gc3VzcGVuc2UgcmVsYXRlZFxyXG4gICAgICAgIHN1c3BlbnNlLFxyXG4gICAgICAgIHN1c3BlbnNlSWQ6IHN1c3BlbnNlID8gc3VzcGVuc2UucGVuZGluZ0lkIDogMCxcclxuICAgICAgICBhc3luY0RlcDogbnVsbCxcclxuICAgICAgICBhc3luY1Jlc29sdmVkOiBmYWxzZSxcclxuICAgICAgICAvLyBsaWZlY3ljbGUgaG9va3NcclxuICAgICAgICAvLyBub3QgdXNpbmcgZW51bXMgaGVyZSBiZWNhdXNlIGl0IHJlc3VsdHMgaW4gY29tcHV0ZWQgcHJvcGVydGllc1xyXG4gICAgICAgIGlzTW91bnRlZDogZmFsc2UsXHJcbiAgICAgICAgaXNVbm1vdW50ZWQ6IGZhbHNlLFxyXG4gICAgICAgIGlzRGVhY3RpdmF0ZWQ6IGZhbHNlLFxyXG4gICAgICAgIGJjOiBudWxsLFxyXG4gICAgICAgIGM6IG51bGwsXHJcbiAgICAgICAgYm06IG51bGwsXHJcbiAgICAgICAgbTogbnVsbCxcclxuICAgICAgICBidTogbnVsbCxcclxuICAgICAgICB1OiBudWxsLFxyXG4gICAgICAgIHVtOiBudWxsLFxyXG4gICAgICAgIGJ1bTogbnVsbCxcclxuICAgICAgICBkYTogbnVsbCxcclxuICAgICAgICBhOiBudWxsLFxyXG4gICAgICAgIHJ0ZzogbnVsbCxcclxuICAgICAgICBydGM6IG51bGwsXHJcbiAgICAgICAgZWM6IG51bGwsXHJcbiAgICAgICAgc3A6IG51bGxcclxuICAgIH07XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgaW5zdGFuY2UuY3R4ID0gY3JlYXRlRGV2UmVuZGVyQ29udGV4dChpbnN0YW5jZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBpbnN0YW5jZS5jdHggPSB7IF86IGluc3RhbmNlIH07XHJcbiAgICB9XHJcbiAgICBpbnN0YW5jZS5yb290ID0gcGFyZW50ID8gcGFyZW50LnJvb3QgOiBpbnN0YW5jZTtcclxuICAgIGluc3RhbmNlLmVtaXQgPSBlbWl0JDEuYmluZChudWxsLCBpbnN0YW5jZSk7XHJcbiAgICAvLyBhcHBseSBjdXN0b20gZWxlbWVudCBzcGVjaWFsIGhhbmRsaW5nXHJcbiAgICBpZiAodm5vZGUuY2UpIHtcclxuICAgICAgICB2bm9kZS5jZShpbnN0YW5jZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaW5zdGFuY2U7XHJcbn1cclxubGV0IGN1cnJlbnRJbnN0YW5jZSA9IG51bGw7XHJcbmNvbnN0IGdldEN1cnJlbnRJbnN0YW5jZSA9ICgpID0+IGN1cnJlbnRJbnN0YW5jZSB8fCBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2U7XHJcbmNvbnN0IHNldEN1cnJlbnRJbnN0YW5jZSA9IChpbnN0YW5jZSkgPT4ge1xyXG4gICAgY3VycmVudEluc3RhbmNlID0gaW5zdGFuY2U7XHJcbiAgICBpbnN0YW5jZS5zY29wZS5vbigpO1xyXG59O1xyXG5jb25zdCB1bnNldEN1cnJlbnRJbnN0YW5jZSA9ICgpID0+IHtcclxuICAgIGN1cnJlbnRJbnN0YW5jZSAmJiBjdXJyZW50SW5zdGFuY2Uuc2NvcGUub2ZmKCk7XHJcbiAgICBjdXJyZW50SW5zdGFuY2UgPSBudWxsO1xyXG59O1xyXG5jb25zdCBpc0J1aWx0SW5UYWcgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoJ3Nsb3QsY29tcG9uZW50Jyk7XHJcbmZ1bmN0aW9uIHZhbGlkYXRlQ29tcG9uZW50TmFtZShuYW1lLCBjb25maWcpIHtcclxuICAgIGNvbnN0IGFwcElzTmF0aXZlVGFnID0gY29uZmlnLmlzTmF0aXZlVGFnIHx8IE5PO1xyXG4gICAgaWYgKGlzQnVpbHRJblRhZyhuYW1lKSB8fCBhcHBJc05hdGl2ZVRhZyhuYW1lKSkge1xyXG4gICAgICAgIHdhcm4oJ0RvIG5vdCB1c2UgYnVpbHQtaW4gb3IgcmVzZXJ2ZWQgSFRNTCBlbGVtZW50cyBhcyBjb21wb25lbnQgaWQ6ICcgKyBuYW1lKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBpc1N0YXRlZnVsQ29tcG9uZW50KGluc3RhbmNlKSB7XHJcbiAgICByZXR1cm4gaW5zdGFuY2Uudm5vZGUuc2hhcGVGbGFnICYgNCAvKiBTaGFwZUZsYWdzLlNUQVRFRlVMX0NPTVBPTkVOVCAqLztcclxufVxyXG5sZXQgaXNJblNTUkNvbXBvbmVudFNldHVwID0gZmFsc2U7XHJcbmZ1bmN0aW9uIHNldHVwQ29tcG9uZW50KGluc3RhbmNlLCBpc1NTUiA9IGZhbHNlKSB7XHJcbiAgICBpc0luU1NSQ29tcG9uZW50U2V0dXAgPSBpc1NTUjtcclxuICAgIGNvbnN0IHsgcHJvcHMsIGNoaWxkcmVuIH0gPSBpbnN0YW5jZS52bm9kZTtcclxuICAgIGNvbnN0IGlzU3RhdGVmdWwgPSBpc1N0YXRlZnVsQ29tcG9uZW50KGluc3RhbmNlKTtcclxuICAgIGluaXRQcm9wcyhpbnN0YW5jZSwgcHJvcHMsIGlzU3RhdGVmdWwsIGlzU1NSKTtcclxuICAgIGluaXRTbG90cyhpbnN0YW5jZSwgY2hpbGRyZW4pO1xyXG4gICAgY29uc3Qgc2V0dXBSZXN1bHQgPSBpc1N0YXRlZnVsXHJcbiAgICAgICAgPyBzZXR1cFN0YXRlZnVsQ29tcG9uZW50KGluc3RhbmNlLCBpc1NTUilcclxuICAgICAgICA6IHVuZGVmaW5lZDtcclxuICAgIGlzSW5TU1JDb21wb25lbnRTZXR1cCA9IGZhbHNlO1xyXG4gICAgcmV0dXJuIHNldHVwUmVzdWx0O1xyXG59XHJcbmZ1bmN0aW9uIHNldHVwU3RhdGVmdWxDb21wb25lbnQoaW5zdGFuY2UsIGlzU1NSKSB7XHJcbiAgICB2YXIgX2E7XHJcbiAgICBjb25zdCBDb21wb25lbnQgPSBpbnN0YW5jZS50eXBlO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGlmIChDb21wb25lbnQubmFtZSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0ZUNvbXBvbmVudE5hbWUoQ29tcG9uZW50Lm5hbWUsIGluc3RhbmNlLmFwcENvbnRleHQuY29uZmlnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKENvbXBvbmVudC5jb21wb25lbnRzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5hbWVzID0gT2JqZWN0LmtleXMoQ29tcG9uZW50LmNvbXBvbmVudHMpO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZUNvbXBvbmVudE5hbWUobmFtZXNbaV0sIGluc3RhbmNlLmFwcENvbnRleHQuY29uZmlnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoQ29tcG9uZW50LmRpcmVjdGl2ZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgbmFtZXMgPSBPYmplY3Qua2V5cyhDb21wb25lbnQuZGlyZWN0aXZlcyk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHZhbGlkYXRlRGlyZWN0aXZlTmFtZShuYW1lc1tpXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKENvbXBvbmVudC5jb21waWxlck9wdGlvbnMgJiYgaXNSdW50aW1lT25seSgpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYFwiY29tcGlsZXJPcHRpb25zXCIgaXMgb25seSBzdXBwb3J0ZWQgd2hlbiB1c2luZyBhIGJ1aWxkIG9mIFZ1ZSB0aGF0IGAgK1xyXG4gICAgICAgICAgICAgICAgYGluY2x1ZGVzIHRoZSBydW50aW1lIGNvbXBpbGVyLiBTaW5jZSB5b3UgYXJlIHVzaW5nIGEgcnVudGltZS1vbmx5IGAgK1xyXG4gICAgICAgICAgICAgICAgYGJ1aWxkLCB0aGUgb3B0aW9ucyBzaG91bGQgYmUgcGFzc2VkIHZpYSB5b3VyIGJ1aWxkIHRvb2wgY29uZmlnIGluc3RlYWQuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gMC4gY3JlYXRlIHJlbmRlciBwcm94eSBwcm9wZXJ0eSBhY2Nlc3MgY2FjaGVcclxuICAgIGluc3RhbmNlLmFjY2Vzc0NhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICAgIC8vIDEuIGNyZWF0ZSBwdWJsaWMgaW5zdGFuY2UgLyByZW5kZXIgcHJveHlcclxuICAgIC8vIGFsc28gbWFyayBpdCByYXcgc28gaXQncyBuZXZlciBvYnNlcnZlZFxyXG4gICAgaW5zdGFuY2UucHJveHkgPSBtYXJrUmF3KG5ldyBQcm94eShpbnN0YW5jZS5jdHgsIFB1YmxpY0luc3RhbmNlUHJveHlIYW5kbGVycykpO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGV4cG9zZVByb3BzT25SZW5kZXJDb250ZXh0KGluc3RhbmNlKTtcclxuICAgIH1cclxuICAgIC8vIDIuIGNhbGwgc2V0dXAoKVxyXG4gICAgY29uc3QgeyBzZXR1cCB9ID0gQ29tcG9uZW50O1xyXG4gICAgaWYgKHNldHVwKSB7XHJcbiAgICAgICAgY29uc3Qgc2V0dXBDb250ZXh0ID0gKGluc3RhbmNlLnNldHVwQ29udGV4dCA9XHJcbiAgICAgICAgICAgIHNldHVwLmxlbmd0aCA+IDEgPyBjcmVhdGVTZXR1cENvbnRleHQoaW5zdGFuY2UpIDogbnVsbCk7XHJcbiAgICAgICAgc2V0Q3VycmVudEluc3RhbmNlKGluc3RhbmNlKTtcclxuICAgICAgICBwYXVzZVRyYWNraW5nKCk7XHJcbiAgICAgICAgY29uc3Qgc2V0dXBSZXN1bHQgPSBjYWxsV2l0aEVycm9ySGFuZGxpbmcoc2V0dXAsIGluc3RhbmNlLCAwIC8qIEVycm9yQ29kZXMuU0VUVVBfRlVOQ1RJT04gKi8sIFsocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBzaGFsbG93UmVhZG9ubHkoaW5zdGFuY2UucHJvcHMpIDogaW5zdGFuY2UucHJvcHMsIHNldHVwQ29udGV4dF0pO1xyXG4gICAgICAgIHJlc2V0VHJhY2tpbmcoKTtcclxuICAgICAgICB1bnNldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgICAgIGlmIChpc1Byb21pc2Uoc2V0dXBSZXN1bHQpKSB7XHJcbiAgICAgICAgICAgIHNldHVwUmVzdWx0LnRoZW4odW5zZXRDdXJyZW50SW5zdGFuY2UsIHVuc2V0Q3VycmVudEluc3RhbmNlKTtcclxuICAgICAgICAgICAgaWYgKGlzU1NSKSB7XHJcbiAgICAgICAgICAgICAgICAvLyByZXR1cm4gdGhlIHByb21pc2Ugc28gc2VydmVyLXJlbmRlcmVyIGNhbiB3YWl0IG9uIGl0XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc2V0dXBSZXN1bHRcclxuICAgICAgICAgICAgICAgICAgICAudGhlbigocmVzb2x2ZWRSZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZXR1cFJlc3VsdChpbnN0YW5jZSwgcmVzb2x2ZWRSZXN1bHQsIGlzU1NSKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUVycm9yKGUsIGluc3RhbmNlLCAwIC8qIEVycm9yQ29kZXMuU0VUVVBfRlVOQ1RJT04gKi8pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBhc3luYyBzZXR1cCByZXR1cm5lZCBQcm9taXNlLlxyXG4gICAgICAgICAgICAgICAgLy8gYmFpbCBoZXJlIGFuZCB3YWl0IGZvciByZS1lbnRyeS5cclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmFzeW5jRGVwID0gc2V0dXBSZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpbnN0YW5jZS5zdXNwZW5zZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSAoX2EgPSBDb21wb25lbnQubmFtZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ0Fub255bW91cyc7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgQ29tcG9uZW50IDwke25hbWV9Pjogc2V0dXAgZnVuY3Rpb24gcmV0dXJuZWQgYSBwcm9taXNlLCBidXQgbm8gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGA8U3VzcGVuc2U+IGJvdW5kYXJ5IHdhcyBmb3VuZCBpbiB0aGUgcGFyZW50IGNvbXBvbmVudCB0cmVlLiBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYEEgY29tcG9uZW50IHdpdGggYXN5bmMgc2V0dXAoKSBtdXN0IGJlIG5lc3RlZCBpbiBhIDxTdXNwZW5zZT4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBpbiBvcmRlciB0byBiZSByZW5kZXJlZC5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaGFuZGxlU2V0dXBSZXN1bHQoaW5zdGFuY2UsIHNldHVwUmVzdWx0LCBpc1NTUik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZmluaXNoQ29tcG9uZW50U2V0dXAoaW5zdGFuY2UsIGlzU1NSKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBoYW5kbGVTZXR1cFJlc3VsdChpbnN0YW5jZSwgc2V0dXBSZXN1bHQsIGlzU1NSKSB7XHJcbiAgICBpZiAoaXNGdW5jdGlvbihzZXR1cFJlc3VsdCkpIHtcclxuICAgICAgICAvLyBzZXR1cCByZXR1cm5lZCBhbiBpbmxpbmUgcmVuZGVyIGZ1bmN0aW9uXHJcbiAgICAgICAgaWYgKGluc3RhbmNlLnR5cGUuX19zc3JJbmxpbmVSZW5kZXIpIHtcclxuICAgICAgICAgICAgLy8gd2hlbiB0aGUgZnVuY3Rpb24ncyBuYW1lIGlzIGBzc3JSZW5kZXJgIChjb21waWxlZCBieSBTRkMgaW5saW5lIG1vZGUpLFxyXG4gICAgICAgICAgICAvLyBzZXQgaXQgYXMgc3NyUmVuZGVyIGluc3RlYWQuXHJcbiAgICAgICAgICAgIGluc3RhbmNlLnNzclJlbmRlciA9IHNldHVwUmVzdWx0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaW5zdGFuY2UucmVuZGVyID0gc2V0dXBSZXN1bHQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNPYmplY3Qoc2V0dXBSZXN1bHQpKSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBpc1ZOb2RlKHNldHVwUmVzdWx0KSkge1xyXG4gICAgICAgICAgICB3YXJuKGBzZXR1cCgpIHNob3VsZCBub3QgcmV0dXJuIFZOb2RlcyBkaXJlY3RseSAtIGAgK1xyXG4gICAgICAgICAgICAgICAgYHJldHVybiBhIHJlbmRlciBmdW5jdGlvbiBpbnN0ZWFkLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBzZXR1cCByZXR1cm5lZCBiaW5kaW5ncy5cclxuICAgICAgICAvLyBhc3N1bWluZyBhIHJlbmRlciBmdW5jdGlvbiBjb21waWxlZCBmcm9tIHRlbXBsYXRlIGlzIHByZXNlbnQuXHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICAgICAgaW5zdGFuY2UuZGV2dG9vbHNSYXdTZXR1cFN0YXRlID0gc2V0dXBSZXN1bHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGluc3RhbmNlLnNldHVwU3RhdGUgPSBwcm94eVJlZnMoc2V0dXBSZXN1bHQpO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgZXhwb3NlU2V0dXBTdGF0ZU9uUmVuZGVyQ29udGV4dChpbnN0YW5jZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHNldHVwUmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB3YXJuKGBzZXR1cCgpIHNob3VsZCByZXR1cm4gYW4gb2JqZWN0LiBSZWNlaXZlZDogJHtzZXR1cFJlc3VsdCA9PT0gbnVsbCA/ICdudWxsJyA6IHR5cGVvZiBzZXR1cFJlc3VsdH1gKTtcclxuICAgIH1cclxuICAgIGZpbmlzaENvbXBvbmVudFNldHVwKGluc3RhbmNlLCBpc1NTUik7XHJcbn1cclxubGV0IGNvbXBpbGU7XHJcbmxldCBpbnN0YWxsV2l0aFByb3h5O1xyXG4vKipcclxuICogRm9yIHJ1bnRpbWUtZG9tIHRvIHJlZ2lzdGVyIHRoZSBjb21waWxlci5cclxuICogTm90ZSB0aGUgZXhwb3J0ZWQgbWV0aG9kIHVzZXMgYW55IHRvIGF2b2lkIGQudHMgcmVseWluZyBvbiB0aGUgY29tcGlsZXIgdHlwZXMuXHJcbiAqL1xyXG5mdW5jdGlvbiByZWdpc3RlclJ1bnRpbWVDb21waWxlcihfY29tcGlsZSkge1xyXG4gICAgY29tcGlsZSA9IF9jb21waWxlO1xyXG4gICAgaW5zdGFsbFdpdGhQcm94eSA9IGkgPT4ge1xyXG4gICAgICAgIGlmIChpLnJlbmRlci5fcmMpIHtcclxuICAgICAgICAgICAgaS53aXRoUHJveHkgPSBuZXcgUHJveHkoaS5jdHgsIFJ1bnRpbWVDb21waWxlZFB1YmxpY0luc3RhbmNlUHJveHlIYW5kbGVycyk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxyXG4vLyBkZXYgb25seVxyXG5jb25zdCBpc1J1bnRpbWVPbmx5ID0gKCkgPT4gIWNvbXBpbGU7XHJcbmZ1bmN0aW9uIGZpbmlzaENvbXBvbmVudFNldHVwKGluc3RhbmNlLCBpc1NTUiwgc2tpcE9wdGlvbnMpIHtcclxuICAgIGNvbnN0IENvbXBvbmVudCA9IGluc3RhbmNlLnR5cGU7XHJcbiAgICAvLyB0ZW1wbGF0ZSAvIHJlbmRlciBmdW5jdGlvbiBub3JtYWxpemF0aW9uXHJcbiAgICAvLyBjb3VsZCBiZSBhbHJlYWR5IHNldCB3aGVuIHJldHVybmVkIGZyb20gc2V0dXAoKVxyXG4gICAgaWYgKCFpbnN0YW5jZS5yZW5kZXIpIHtcclxuICAgICAgICAvLyBvbmx5IGRvIG9uLXRoZS1mbHkgY29tcGlsZSBpZiBub3QgaW4gU1NSIC0gU1NSIG9uLXRoZS1mbHkgY29tcGlsYXRpb25cclxuICAgICAgICAvLyBpcyBkb25lIGJ5IHNlcnZlci1yZW5kZXJlclxyXG4gICAgICAgIGlmICghaXNTU1IgJiYgY29tcGlsZSAmJiAhQ29tcG9uZW50LnJlbmRlcikge1xyXG4gICAgICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IENvbXBvbmVudC50ZW1wbGF0ZTtcclxuICAgICAgICAgICAgaWYgKHRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRNZWFzdXJlKGluc3RhbmNlLCBgY29tcGlsZWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBpc0N1c3RvbUVsZW1lbnQsIGNvbXBpbGVyT3B0aW9ucyB9ID0gaW5zdGFuY2UuYXBwQ29udGV4dC5jb25maWc7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IGRlbGltaXRlcnMsIGNvbXBpbGVyT3B0aW9uczogY29tcG9uZW50Q29tcGlsZXJPcHRpb25zIH0gPSBDb21wb25lbnQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaW5hbENvbXBpbGVyT3B0aW9ucyA9IGV4dGVuZChleHRlbmQoe1xyXG4gICAgICAgICAgICAgICAgICAgIGlzQ3VzdG9tRWxlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICBkZWxpbWl0ZXJzXHJcbiAgICAgICAgICAgICAgICB9LCBjb21waWxlck9wdGlvbnMpLCBjb21wb25lbnRDb21waWxlck9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgQ29tcG9uZW50LnJlbmRlciA9IGNvbXBpbGUodGVtcGxhdGUsIGZpbmFsQ29tcGlsZXJPcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBlbmRNZWFzdXJlKGluc3RhbmNlLCBgY29tcGlsZWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGluc3RhbmNlLnJlbmRlciA9IChDb21wb25lbnQucmVuZGVyIHx8IE5PT1ApO1xyXG4gICAgICAgIC8vIGZvciBydW50aW1lLWNvbXBpbGVkIHJlbmRlciBmdW5jdGlvbnMgdXNpbmcgYHdpdGhgIGJsb2NrcywgdGhlIHJlbmRlclxyXG4gICAgICAgIC8vIHByb3h5IHVzZWQgbmVlZHMgYSBkaWZmZXJlbnQgYGhhc2AgaGFuZGxlciB3aGljaCBpcyBtb3JlIHBlcmZvcm1hbnQgYW5kXHJcbiAgICAgICAgLy8gYWxzbyBvbmx5IGFsbG93cyBhIHdoaXRlbGlzdCBvZiBnbG9iYWxzIHRvIGZhbGx0aHJvdWdoLlxyXG4gICAgICAgIGlmIChpbnN0YWxsV2l0aFByb3h5KSB7XHJcbiAgICAgICAgICAgIGluc3RhbGxXaXRoUHJveHkoaW5zdGFuY2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIHN1cHBvcnQgZm9yIDIueCBvcHRpb25zXHJcbiAgICBpZiAoX19WVUVfT1BUSU9OU19BUElfXyAmJiAhKGZhbHNlICkpIHtcclxuICAgICAgICBzZXRDdXJyZW50SW5zdGFuY2UoaW5zdGFuY2UpO1xyXG4gICAgICAgIHBhdXNlVHJhY2tpbmcoKTtcclxuICAgICAgICBhcHBseU9wdGlvbnMoaW5zdGFuY2UpO1xyXG4gICAgICAgIHJlc2V0VHJhY2tpbmcoKTtcclxuICAgICAgICB1bnNldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgfVxyXG4gICAgLy8gd2FybiBtaXNzaW5nIHRlbXBsYXRlL3JlbmRlclxyXG4gICAgLy8gdGhlIHJ1bnRpbWUgY29tcGlsYXRpb24gb2YgdGVtcGxhdGUgaW4gU1NSIGlzIGRvbmUgYnkgc2VydmVyLXJlbmRlclxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhQ29tcG9uZW50LnJlbmRlciAmJiBpbnN0YW5jZS5yZW5kZXIgPT09IE5PT1AgJiYgIWlzU1NSKSB7XHJcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXHJcbiAgICAgICAgaWYgKCFjb21waWxlICYmIENvbXBvbmVudC50ZW1wbGF0ZSkge1xyXG4gICAgICAgICAgICB3YXJuKGBDb21wb25lbnQgcHJvdmlkZWQgdGVtcGxhdGUgb3B0aW9uIGJ1dCBgICtcclxuICAgICAgICAgICAgICAgIGBydW50aW1lIGNvbXBpbGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBidWlsZCBvZiBWdWUuYCArXHJcbiAgICAgICAgICAgICAgICAoYCBDb25maWd1cmUgeW91ciBidW5kbGVyIHRvIGFsaWFzIFwidnVlXCIgdG8gXCJ2dWUvZGlzdC92dWUuZXNtLWJ1bmRsZXIuanNcIi5gXHJcbiAgICAgICAgICAgICAgICAgICAgKSAvKiBzaG91bGQgbm90IGhhcHBlbiAqLyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB3YXJuKGBDb21wb25lbnQgaXMgbWlzc2luZyB0ZW1wbGF0ZSBvciByZW5kZXIgZnVuY3Rpb24uYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUF0dHJzUHJveHkoaW5zdGFuY2UpIHtcclxuICAgIHJldHVybiBuZXcgUHJveHkoaW5zdGFuY2UuYXR0cnMsIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgID8ge1xyXG4gICAgICAgICAgICBnZXQodGFyZ2V0LCBrZXkpIHtcclxuICAgICAgICAgICAgICAgIG1hcmtBdHRyc0FjY2Vzc2VkKCk7XHJcbiAgICAgICAgICAgICAgICB0cmFjayhpbnN0YW5jZSwgXCJnZXRcIiAvKiBUcmFja09wVHlwZXMuR0VUICovLCAnJGF0dHJzJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W2tleV07XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNldCgpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYHNldHVwQ29udGV4dC5hdHRycyBpcyByZWFkb25seS5gKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGVsZXRlUHJvcGVydHkoKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBzZXR1cENvbnRleHQuYXR0cnMgaXMgcmVhZG9ubHkuYCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgOiB7XHJcbiAgICAgICAgICAgIGdldCh0YXJnZXQsIGtleSkge1xyXG4gICAgICAgICAgICAgICAgdHJhY2soaW5zdGFuY2UsIFwiZ2V0XCIgLyogVHJhY2tPcFR5cGVzLkdFVCAqLywgJyRhdHRycycpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtrZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlU2V0dXBDb250ZXh0KGluc3RhbmNlKSB7XHJcbiAgICBjb25zdCBleHBvc2UgPSBleHBvc2VkID0+IHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGluc3RhbmNlLmV4cG9zZWQpIHtcclxuICAgICAgICAgICAgd2FybihgZXhwb3NlKCkgc2hvdWxkIGJlIGNhbGxlZCBvbmx5IG9uY2UgcGVyIHNldHVwKCkuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGluc3RhbmNlLmV4cG9zZWQgPSBleHBvc2VkIHx8IHt9O1xyXG4gICAgfTtcclxuICAgIGxldCBhdHRycztcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAvLyBXZSB1c2UgZ2V0dGVycyBpbiBkZXYgaW4gY2FzZSBsaWJzIGxpa2UgdGVzdC11dGlscyBvdmVyd3JpdGUgaW5zdGFuY2VcclxuICAgICAgICAvLyBwcm9wZXJ0aWVzIChvdmVyd3JpdGVzIHNob3VsZCBub3QgYmUgZG9uZSBpbiBwcm9kKVxyXG4gICAgICAgIHJldHVybiBPYmplY3QuZnJlZXplKHtcclxuICAgICAgICAgICAgZ2V0IGF0dHJzKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJzIHx8IChhdHRycyA9IGNyZWF0ZUF0dHJzUHJveHkoaW5zdGFuY2UpKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZ2V0IHNsb3RzKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNoYWxsb3dSZWFkb25seShpbnN0YW5jZS5zbG90cyk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGdldCBlbWl0KCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChldmVudCwgLi4uYXJncykgPT4gaW5zdGFuY2UuZW1pdChldmVudCwgLi4uYXJncyk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGV4cG9zZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZ2V0IGF0dHJzKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJzIHx8IChhdHRycyA9IGNyZWF0ZUF0dHJzUHJveHkoaW5zdGFuY2UpKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2xvdHM6IGluc3RhbmNlLnNsb3RzLFxyXG4gICAgICAgICAgICBlbWl0OiBpbnN0YW5jZS5lbWl0LFxyXG4gICAgICAgICAgICBleHBvc2VcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdldEV4cG9zZVByb3h5KGluc3RhbmNlKSB7XHJcbiAgICBpZiAoaW5zdGFuY2UuZXhwb3NlZCkge1xyXG4gICAgICAgIHJldHVybiAoaW5zdGFuY2UuZXhwb3NlUHJveHkgfHxcclxuICAgICAgICAgICAgKGluc3RhbmNlLmV4cG9zZVByb3h5ID0gbmV3IFByb3h5KHByb3h5UmVmcyhtYXJrUmF3KGluc3RhbmNlLmV4cG9zZWQpKSwge1xyXG4gICAgICAgICAgICAgICAgZ2V0KHRhcmdldCwga2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtleSBpbiB0YXJnZXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtrZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChrZXkgaW4gcHVibGljUHJvcGVydGllc01hcCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHVibGljUHJvcGVydGllc01hcFtrZXldKGluc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pKSk7XHJcbiAgICB9XHJcbn1cclxuY29uc3QgY2xhc3NpZnlSRSA9IC8oPzpefFstX10pKFxcdykvZztcclxuY29uc3QgY2xhc3NpZnkgPSAoc3RyKSA9PiBzdHIucmVwbGFjZShjbGFzc2lmeVJFLCBjID0+IGMudG9VcHBlckNhc2UoKSkucmVwbGFjZSgvWy1fXS9nLCAnJyk7XHJcbmZ1bmN0aW9uIGdldENvbXBvbmVudE5hbWUoQ29tcG9uZW50LCBpbmNsdWRlSW5mZXJyZWQgPSB0cnVlKSB7XHJcbiAgICByZXR1cm4gaXNGdW5jdGlvbihDb21wb25lbnQpXHJcbiAgICAgICAgPyBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWVcclxuICAgICAgICA6IENvbXBvbmVudC5uYW1lIHx8IChpbmNsdWRlSW5mZXJyZWQgJiYgQ29tcG9uZW50Ll9fbmFtZSk7XHJcbn1cclxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuZnVuY3Rpb24gZm9ybWF0Q29tcG9uZW50TmFtZShpbnN0YW5jZSwgQ29tcG9uZW50LCBpc1Jvb3QgPSBmYWxzZSkge1xyXG4gICAgbGV0IG5hbWUgPSBnZXRDb21wb25lbnROYW1lKENvbXBvbmVudCk7XHJcbiAgICBpZiAoIW5hbWUgJiYgQ29tcG9uZW50Ll9fZmlsZSkge1xyXG4gICAgICAgIGNvbnN0IG1hdGNoID0gQ29tcG9uZW50Ll9fZmlsZS5tYXRjaCgvKFteL1xcXFxdKylcXC5cXHcrJC8pO1xyXG4gICAgICAgIGlmIChtYXRjaCkge1xyXG4gICAgICAgICAgICBuYW1lID0gbWF0Y2hbMV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCFuYW1lICYmIGluc3RhbmNlICYmIGluc3RhbmNlLnBhcmVudCkge1xyXG4gICAgICAgIC8vIHRyeSB0byBpbmZlciB0aGUgbmFtZSBiYXNlZCBvbiByZXZlcnNlIHJlc29sdXRpb25cclxuICAgICAgICBjb25zdCBpbmZlckZyb21SZWdpc3RyeSA9IChyZWdpc3RyeSkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiByZWdpc3RyeSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlZ2lzdHJ5W2tleV0gPT09IENvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIG5hbWUgPVxyXG4gICAgICAgICAgICBpbmZlckZyb21SZWdpc3RyeShpbnN0YW5jZS5jb21wb25lbnRzIHx8XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5wYXJlbnQudHlwZS5jb21wb25lbnRzKSB8fCBpbmZlckZyb21SZWdpc3RyeShpbnN0YW5jZS5hcHBDb250ZXh0LmNvbXBvbmVudHMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5hbWUgPyBjbGFzc2lmeShuYW1lKSA6IGlzUm9vdCA/IGBBcHBgIDogYEFub255bW91c2A7XHJcbn1cclxuZnVuY3Rpb24gaXNDbGFzc0NvbXBvbmVudCh2YWx1ZSkge1xyXG4gICAgcmV0dXJuIGlzRnVuY3Rpb24odmFsdWUpICYmICdfX3ZjY09wdHMnIGluIHZhbHVlO1xyXG59XG5cbmNvbnN0IGNvbXB1dGVkID0gKChnZXR0ZXJPck9wdGlvbnMsIGRlYnVnT3B0aW9ucykgPT4ge1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgcmV0dXJuIGNvbXB1dGVkJDEoZ2V0dGVyT3JPcHRpb25zLCBkZWJ1Z09wdGlvbnMsIGlzSW5TU1JDb21wb25lbnRTZXR1cCk7XHJcbn0pO1xuXG4vLyBkZXYgb25seVxyXG5jb25zdCB3YXJuUnVudGltZVVzYWdlID0gKG1ldGhvZCkgPT4gd2FybihgJHttZXRob2R9KCkgaXMgYSBjb21waWxlci1oaW50IGhlbHBlciB0aGF0IGlzIG9ubHkgdXNhYmxlIGluc2lkZSBgICtcclxuICAgIGA8c2NyaXB0IHNldHVwPiBvZiBhIHNpbmdsZSBmaWxlIGNvbXBvbmVudC4gSXRzIGFyZ3VtZW50cyBzaG91bGQgYmUgYCArXHJcbiAgICBgY29tcGlsZWQgYXdheSBhbmQgcGFzc2luZyBpdCBhdCBydW50aW1lIGhhcyBubyBlZmZlY3QuYCk7XHJcbi8vIGltcGxlbWVudGF0aW9uXHJcbmZ1bmN0aW9uIGRlZmluZVByb3BzKCkge1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIHdhcm5SdW50aW1lVXNhZ2UoYGRlZmluZVByb3BzYCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufVxyXG4vLyBpbXBsZW1lbnRhdGlvblxyXG5mdW5jdGlvbiBkZWZpbmVFbWl0cygpIHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB3YXJuUnVudGltZVVzYWdlKGBkZWZpbmVFbWl0c2ApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn1cclxuLyoqXHJcbiAqIFZ1ZSBgPHNjcmlwdCBzZXR1cD5gIGNvbXBpbGVyIG1hY3JvIGZvciBkZWNsYXJpbmcgYSBjb21wb25lbnQncyBleHBvc2VkXHJcbiAqIGluc3RhbmNlIHByb3BlcnRpZXMgd2hlbiBpdCBpcyBhY2Nlc3NlZCBieSBhIHBhcmVudCBjb21wb25lbnQgdmlhIHRlbXBsYXRlXHJcbiAqIHJlZnMuXHJcbiAqXHJcbiAqIGA8c2NyaXB0IHNldHVwPmAgY29tcG9uZW50cyBhcmUgY2xvc2VkIGJ5IGRlZmF1bHQgLSBpLmUuIHZhcmlhYmxlcyBpbnNpZGVcclxuICogdGhlIGA8c2NyaXB0IHNldHVwPmAgc2NvcGUgaXMgbm90IGV4cG9zZWQgdG8gcGFyZW50IHVubGVzcyBleHBsaWNpdGx5IGV4cG9zZWRcclxuICogdmlhIGBkZWZpbmVFeHBvc2VgLlxyXG4gKlxyXG4gKiBUaGlzIGlzIG9ubHkgdXNhYmxlIGluc2lkZSBgPHNjcmlwdCBzZXR1cD5gLCBpcyBjb21waWxlZCBhd2F5IGluIHRoZVxyXG4gKiBvdXRwdXQgYW5kIHNob3VsZCAqKm5vdCoqIGJlIGFjdHVhbGx5IGNhbGxlZCBhdCBydW50aW1lLlxyXG4gKi9cclxuZnVuY3Rpb24gZGVmaW5lRXhwb3NlKGV4cG9zZWQpIHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB3YXJuUnVudGltZVVzYWdlKGBkZWZpbmVFeHBvc2VgKTtcclxuICAgIH1cclxufVxyXG4vKipcclxuICogVnVlIGA8c2NyaXB0IHNldHVwPmAgY29tcGlsZXIgbWFjcm8gZm9yIHByb3ZpZGluZyBwcm9wcyBkZWZhdWx0IHZhbHVlcyB3aGVuXHJcbiAqIHVzaW5nIHR5cGUtYmFzZWQgYGRlZmluZVByb3BzYCBkZWNsYXJhdGlvbi5cclxuICpcclxuICogRXhhbXBsZSB1c2FnZTpcclxuICogYGBgdHNcclxuICogd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPHtcclxuICogICBzaXplPzogbnVtYmVyXHJcbiAqICAgbGFiZWxzPzogc3RyaW5nW11cclxuICogfT4oKSwge1xyXG4gKiAgIHNpemU6IDMsXHJcbiAqICAgbGFiZWxzOiAoKSA9PiBbJ2RlZmF1bHQgbGFiZWwnXVxyXG4gKiB9KVxyXG4gKiBgYGBcclxuICpcclxuICogVGhpcyBpcyBvbmx5IHVzYWJsZSBpbnNpZGUgYDxzY3JpcHQgc2V0dXA+YCwgaXMgY29tcGlsZWQgYXdheSBpbiB0aGUgb3V0cHV0XHJcbiAqIGFuZCBzaG91bGQgKipub3QqKiBiZSBhY3R1YWxseSBjYWxsZWQgYXQgcnVudGltZS5cclxuICovXHJcbmZ1bmN0aW9uIHdpdGhEZWZhdWx0cyhwcm9wcywgZGVmYXVsdHMpIHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB3YXJuUnVudGltZVVzYWdlKGB3aXRoRGVmYXVsdHNgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59XHJcbmZ1bmN0aW9uIHVzZVNsb3RzKCkge1xyXG4gICAgcmV0dXJuIGdldENvbnRleHQoKS5zbG90cztcclxufVxyXG5mdW5jdGlvbiB1c2VBdHRycygpIHtcclxuICAgIHJldHVybiBnZXRDb250ZXh0KCkuYXR0cnM7XHJcbn1cclxuZnVuY3Rpb24gZ2V0Q29udGV4dCgpIHtcclxuICAgIGNvbnN0IGkgPSBnZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWkpIHtcclxuICAgICAgICB3YXJuKGB1c2VDb250ZXh0KCkgY2FsbGVkIHdpdGhvdXQgYWN0aXZlIGluc3RhbmNlLmApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGkuc2V0dXBDb250ZXh0IHx8IChpLnNldHVwQ29udGV4dCA9IGNyZWF0ZVNldHVwQ29udGV4dChpKSk7XHJcbn1cclxuLyoqXHJcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciBtZXJnaW5nIGRlZmF1bHQgZGVjbGFyYXRpb25zLiBJbXBvcnRlZCBieSBjb21waWxlZCBjb2RlXHJcbiAqIG9ubHkuXHJcbiAqIEBpbnRlcm5hbFxyXG4gKi9cclxuZnVuY3Rpb24gbWVyZ2VEZWZhdWx0cyhyYXcsIGRlZmF1bHRzKSB7XHJcbiAgICBjb25zdCBwcm9wcyA9IGlzQXJyYXkocmF3KVxyXG4gICAgICAgID8gcmF3LnJlZHVjZSgobm9ybWFsaXplZCwgcCkgPT4gKChub3JtYWxpemVkW3BdID0ge30pLCBub3JtYWxpemVkKSwge30pXHJcbiAgICAgICAgOiByYXc7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBkZWZhdWx0cykge1xyXG4gICAgICAgIGNvbnN0IG9wdCA9IHByb3BzW2tleV07XHJcbiAgICAgICAgaWYgKG9wdCkge1xyXG4gICAgICAgICAgICBpZiAoaXNBcnJheShvcHQpIHx8IGlzRnVuY3Rpb24ob3B0KSkge1xyXG4gICAgICAgICAgICAgICAgcHJvcHNba2V5XSA9IHsgdHlwZTogb3B0LCBkZWZhdWx0OiBkZWZhdWx0c1trZXldIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBvcHQuZGVmYXVsdCA9IGRlZmF1bHRzW2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAob3B0ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHByb3BzW2tleV0gPSB7IGRlZmF1bHQ6IGRlZmF1bHRzW2tleV0gfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYHByb3BzIGRlZmF1bHQga2V5IFwiJHtrZXl9XCIgaGFzIG5vIGNvcnJlc3BvbmRpbmcgZGVjbGFyYXRpb24uYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHByb3BzO1xyXG59XHJcbi8qKlxyXG4gKiBVc2VkIHRvIGNyZWF0ZSBhIHByb3h5IGZvciB0aGUgcmVzdCBlbGVtZW50IHdoZW4gZGVzdHJ1Y3R1cmluZyBwcm9wcyB3aXRoXHJcbiAqIGRlZmluZVByb3BzKCkuXHJcbiAqIEBpbnRlcm5hbFxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlUHJvcHNSZXN0UHJveHkocHJvcHMsIGV4Y2x1ZGVkS2V5cykge1xyXG4gICAgY29uc3QgcmV0ID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBwcm9wcykge1xyXG4gICAgICAgIGlmICghZXhjbHVkZWRLZXlzLmluY2x1ZGVzKGtleSkpIHtcclxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJldCwga2V5LCB7XHJcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiBwcm9wc1trZXldXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXQ7XHJcbn1cclxuLyoqXHJcbiAqIGA8c2NyaXB0IHNldHVwPmAgaGVscGVyIGZvciBwZXJzaXN0aW5nIHRoZSBjdXJyZW50IGluc3RhbmNlIGNvbnRleHQgb3ZlclxyXG4gKiBhc3luYy9hd2FpdCBmbG93cy5cclxuICpcclxuICogYEB2dWUvY29tcGlsZXItc2ZjYCBjb252ZXJ0cyB0aGUgZm9sbG93aW5nOlxyXG4gKlxyXG4gKiBgYGB0c1xyXG4gKiBjb25zdCB4ID0gYXdhaXQgZm9vKClcclxuICogYGBgXHJcbiAqXHJcbiAqIGludG86XHJcbiAqXHJcbiAqIGBgYHRzXHJcbiAqIGxldCBfX3RlbXAsIF9fcmVzdG9yZVxyXG4gKiBjb25zdCB4ID0gKChbX190ZW1wLCBfX3Jlc3RvcmVdID0gd2l0aEFzeW5jQ29udGV4dCgoKSA9PiBmb28oKSkpLF9fdGVtcD1hd2FpdCBfX3RlbXAsX19yZXN0b3JlKCksX190ZW1wKVxyXG4gKiBgYGBcclxuICogQGludGVybmFsXHJcbiAqL1xyXG5mdW5jdGlvbiB3aXRoQXN5bmNDb250ZXh0KGdldEF3YWl0YWJsZSkge1xyXG4gICAgY29uc3QgY3R4ID0gZ2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFjdHgpIHtcclxuICAgICAgICB3YXJuKGB3aXRoQXN5bmNDb250ZXh0IGNhbGxlZCB3aXRob3V0IGFjdGl2ZSBjdXJyZW50IGluc3RhbmNlLiBgICtcclxuICAgICAgICAgICAgYFRoaXMgaXMgbGlrZWx5IGEgYnVnLmApO1xyXG4gICAgfVxyXG4gICAgbGV0IGF3YWl0YWJsZSA9IGdldEF3YWl0YWJsZSgpO1xyXG4gICAgdW5zZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgIGlmIChpc1Byb21pc2UoYXdhaXRhYmxlKSkge1xyXG4gICAgICAgIGF3YWl0YWJsZSA9IGF3YWl0YWJsZS5jYXRjaChlID0+IHtcclxuICAgICAgICAgICAgc2V0Q3VycmVudEluc3RhbmNlKGN0eCk7XHJcbiAgICAgICAgICAgIHRocm93IGU7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW2F3YWl0YWJsZSwgKCkgPT4gc2V0Q3VycmVudEluc3RhbmNlKGN0eCldO1xyXG59XG5cbi8vIEFjdHVhbCBpbXBsZW1lbnRhdGlvblxyXG5mdW5jdGlvbiBoKHR5cGUsIHByb3BzT3JDaGlsZHJlbiwgY2hpbGRyZW4pIHtcclxuICAgIGNvbnN0IGwgPSBhcmd1bWVudHMubGVuZ3RoO1xyXG4gICAgaWYgKGwgPT09IDIpIHtcclxuICAgICAgICBpZiAoaXNPYmplY3QocHJvcHNPckNoaWxkcmVuKSAmJiAhaXNBcnJheShwcm9wc09yQ2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgIC8vIHNpbmdsZSB2bm9kZSB3aXRob3V0IHByb3BzXHJcbiAgICAgICAgICAgIGlmIChpc1ZOb2RlKHByb3BzT3JDaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVWTm9kZSh0eXBlLCBudWxsLCBbcHJvcHNPckNoaWxkcmVuXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gcHJvcHMgd2l0aG91dCBjaGlsZHJlblxyXG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlVk5vZGUodHlwZSwgcHJvcHNPckNoaWxkcmVuKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIG9taXQgcHJvcHNcclxuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKHR5cGUsIG51bGwsIHByb3BzT3JDaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKGwgPiAzKSB7XHJcbiAgICAgICAgICAgIGNoaWxkcmVuID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAobCA9PT0gMyAmJiBpc1ZOb2RlKGNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICBjaGlsZHJlbiA9IFtjaGlsZHJlbl07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjcmVhdGVWTm9kZSh0eXBlLCBwcm9wc09yQ2hpbGRyZW4sIGNoaWxkcmVuKTtcclxuICAgIH1cclxufVxuXG5jb25zdCBzc3JDb250ZXh0S2V5ID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBzc3JDb250ZXh0YCA6IGBgKTtcclxuY29uc3QgdXNlU1NSQ29udGV4dCA9ICgpID0+IHtcclxuICAgIHtcclxuICAgICAgICBjb25zdCBjdHggPSBpbmplY3Qoc3NyQ29udGV4dEtleSk7XHJcbiAgICAgICAgaWYgKCFjdHgpIHtcclxuICAgICAgICAgICAgd2FybihgU2VydmVyIHJlbmRlcmluZyBjb250ZXh0IG5vdCBwcm92aWRlZC4gTWFrZSBzdXJlIHRvIG9ubHkgY2FsbCBgICtcclxuICAgICAgICAgICAgICAgIGB1c2VTU1JDb250ZXh0KCkgY29uZGl0aW9uYWxseSBpbiB0aGUgc2VydmVyIGJ1aWxkLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY3R4O1xyXG4gICAgfVxyXG59O1xuXG5mdW5jdGlvbiBpc1NoYWxsb3codmFsdWUpIHtcclxuICAgIHJldHVybiAhISh2YWx1ZSAmJiB2YWx1ZVtcIl9fdl9pc1NoYWxsb3dcIiAvKiBSZWFjdGl2ZUZsYWdzLklTX1NIQUxMT1cgKi9dKTtcclxufVxuXG5mdW5jdGlvbiBpbml0Q3VzdG9tRm9ybWF0dGVyKCkge1xyXG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzICovXHJcbiAgICBpZiAoIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHZ1ZVN0eWxlID0geyBzdHlsZTogJ2NvbG9yOiMzYmE3NzYnIH07XHJcbiAgICBjb25zdCBudW1iZXJTdHlsZSA9IHsgc3R5bGU6ICdjb2xvcjojMGIxYmM5JyB9O1xyXG4gICAgY29uc3Qgc3RyaW5nU3R5bGUgPSB7IHN0eWxlOiAnY29sb3I6I2I2MmUyNCcgfTtcclxuICAgIGNvbnN0IGtleXdvcmRTdHlsZSA9IHsgc3R5bGU6ICdjb2xvcjojOWQyODhjJyB9O1xyXG4gICAgLy8gY3VzdG9tIGZvcm1hdHRlciBmb3IgQ2hyb21lXHJcbiAgICAvLyBodHRwczovL3d3dy5tYXR0emV1bmVydC5jb20vMjAxNi8wMi8xOS9jdXN0b20tY2hyb21lLWRldnRvb2xzLW9iamVjdC1mb3JtYXR0ZXJzLmh0bWxcclxuICAgIGNvbnN0IGZvcm1hdHRlciA9IHtcclxuICAgICAgICBoZWFkZXIob2JqKSB7XHJcbiAgICAgICAgICAgIC8vIFRPRE8gYWxzbyBmb3JtYXQgQ29tcG9uZW50UHVibGljSW5zdGFuY2UgJiBjdHguc2xvdHMvYXR0cnMgaW4gc2V0dXBcclxuICAgICAgICAgICAgaWYgKCFpc09iamVjdChvYmopKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAob2JqLl9faXNWdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBbJ2RpdicsIHZ1ZVN0eWxlLCBgVnVlSW5zdGFuY2VgXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChpc1JlZihvYmopKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgICAgICdkaXYnLFxyXG4gICAgICAgICAgICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgICAgICAgICAgIFsnc3BhbicsIHZ1ZVN0eWxlLCBnZW5SZWZGbGFnKG9iaildLFxyXG4gICAgICAgICAgICAgICAgICAgICc8JyxcclxuICAgICAgICAgICAgICAgICAgICBmb3JtYXRWYWx1ZShvYmoudmFsdWUpLFxyXG4gICAgICAgICAgICAgICAgICAgIGA+YFxyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChpc1JlYWN0aXZlKG9iaikpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgICAgICAgICAgJ2RpdicsXHJcbiAgICAgICAgICAgICAgICAgICAge30sXHJcbiAgICAgICAgICAgICAgICAgICAgWydzcGFuJywgdnVlU3R5bGUsIGlzU2hhbGxvdyhvYmopID8gJ1NoYWxsb3dSZWFjdGl2ZScgOiAnUmVhY3RpdmUnXSxcclxuICAgICAgICAgICAgICAgICAgICAnPCcsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0VmFsdWUob2JqKSxcclxuICAgICAgICAgICAgICAgICAgICBgPiR7aXNSZWFkb25seShvYmopID8gYCAocmVhZG9ubHkpYCA6IGBgfWBcclxuICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaXNSZWFkb25seShvYmopKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgICAgICdkaXYnLFxyXG4gICAgICAgICAgICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgICAgICAgICAgIFsnc3BhbicsIHZ1ZVN0eWxlLCBpc1NoYWxsb3cob2JqKSA/ICdTaGFsbG93UmVhZG9ubHknIDogJ1JlYWRvbmx5J10sXHJcbiAgICAgICAgICAgICAgICAgICAgJzwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdFZhbHVlKG9iaiksXHJcbiAgICAgICAgICAgICAgICAgICAgJz4nXHJcbiAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaGFzQm9keShvYmopIHtcclxuICAgICAgICAgICAgcmV0dXJuIG9iaiAmJiBvYmouX19pc1Z1ZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGJvZHkob2JqKSB7XHJcbiAgICAgICAgICAgIGlmIChvYmogJiYgb2JqLl9faXNWdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgICAgICAgICAgJ2RpdicsXHJcbiAgICAgICAgICAgICAgICAgICAge30sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybWF0SW5zdGFuY2Uob2JqLiQpXHJcbiAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGZ1bmN0aW9uIGZvcm1hdEluc3RhbmNlKGluc3RhbmNlKSB7XHJcbiAgICAgICAgY29uc3QgYmxvY2tzID0gW107XHJcbiAgICAgICAgaWYgKGluc3RhbmNlLnR5cGUucHJvcHMgJiYgaW5zdGFuY2UucHJvcHMpIHtcclxuICAgICAgICAgICAgYmxvY2tzLnB1c2goY3JlYXRlSW5zdGFuY2VCbG9jaygncHJvcHMnLCB0b1JhdyhpbnN0YW5jZS5wcm9wcykpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGluc3RhbmNlLnNldHVwU3RhdGUgIT09IEVNUFRZX09CSikge1xyXG4gICAgICAgICAgICBibG9ja3MucHVzaChjcmVhdGVJbnN0YW5jZUJsb2NrKCdzZXR1cCcsIGluc3RhbmNlLnNldHVwU3RhdGUpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGluc3RhbmNlLmRhdGEgIT09IEVNUFRZX09CSikge1xyXG4gICAgICAgICAgICBibG9ja3MucHVzaChjcmVhdGVJbnN0YW5jZUJsb2NrKCdkYXRhJywgdG9SYXcoaW5zdGFuY2UuZGF0YSkpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY29tcHV0ZWQgPSBleHRyYWN0S2V5cyhpbnN0YW5jZSwgJ2NvbXB1dGVkJyk7XHJcbiAgICAgICAgaWYgKGNvbXB1dGVkKSB7XHJcbiAgICAgICAgICAgIGJsb2Nrcy5wdXNoKGNyZWF0ZUluc3RhbmNlQmxvY2soJ2NvbXB1dGVkJywgY29tcHV0ZWQpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaW5qZWN0ZWQgPSBleHRyYWN0S2V5cyhpbnN0YW5jZSwgJ2luamVjdCcpO1xyXG4gICAgICAgIGlmIChpbmplY3RlZCkge1xyXG4gICAgICAgICAgICBibG9ja3MucHVzaChjcmVhdGVJbnN0YW5jZUJsb2NrKCdpbmplY3RlZCcsIGluamVjdGVkKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJsb2Nrcy5wdXNoKFtcclxuICAgICAgICAgICAgJ2RpdicsXHJcbiAgICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgICBbXHJcbiAgICAgICAgICAgICAgICAnc3BhbicsXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6IGtleXdvcmRTdHlsZS5zdHlsZSArICc7b3BhY2l0eTowLjY2J1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICckIChpbnRlcm5hbCk6ICdcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgWydvYmplY3QnLCB7IG9iamVjdDogaW5zdGFuY2UgfV1cclxuICAgICAgICBdKTtcclxuICAgICAgICByZXR1cm4gYmxvY2tzO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2VCbG9jayh0eXBlLCB0YXJnZXQpIHtcclxuICAgICAgICB0YXJnZXQgPSBleHRlbmQoe30sIHRhcmdldCk7XHJcbiAgICAgICAgaWYgKCFPYmplY3Qua2V5cyh0YXJnZXQpLmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXR1cm4gWydzcGFuJywge31dO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAnZGl2JyxcclxuICAgICAgICAgICAgeyBzdHlsZTogJ2xpbmUtaGVpZ2h0OjEuMjVlbTttYXJnaW4tYm90dG9tOjAuNmVtJyB9LFxyXG4gICAgICAgICAgICBbXHJcbiAgICAgICAgICAgICAgICAnZGl2JyxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZTogJ2NvbG9yOiM0NzY1ODInXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgdHlwZVxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICBbXHJcbiAgICAgICAgICAgICAgICAnZGl2JyxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZTogJ3BhZGRpbmctbGVmdDoxLjI1ZW0nXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgLi4uT2JqZWN0LmtleXModGFyZ2V0KS5tYXAoa2V5ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnZGl2JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAge30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsnc3BhbicsIGtleXdvcmRTdHlsZSwga2V5ICsgJzogJ10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdFZhbHVlKHRhcmdldFtrZXldLCBmYWxzZSlcclxuICAgICAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgXVxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBmb3JtYXRWYWx1ZSh2LCBhc1JhdyA9IHRydWUpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHYgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbJ3NwYW4nLCBudW1iZXJTdHlsZSwgdl07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICByZXR1cm4gWydzcGFuJywgc3RyaW5nU3R5bGUsIEpTT04uc3RyaW5naWZ5KHYpXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIHYgPT09ICdib29sZWFuJykge1xyXG4gICAgICAgICAgICByZXR1cm4gWydzcGFuJywga2V5d29yZFN0eWxlLCB2XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaXNPYmplY3QodikpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFsnb2JqZWN0JywgeyBvYmplY3Q6IGFzUmF3ID8gdG9SYXcodikgOiB2IH1dO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIFsnc3BhbicsIHN0cmluZ1N0eWxlLCBTdHJpbmcodildO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGV4dHJhY3RLZXlzKGluc3RhbmNlLCB0eXBlKSB7XHJcbiAgICAgICAgY29uc3QgQ29tcCA9IGluc3RhbmNlLnR5cGU7XHJcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24oQ29tcCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBleHRyYWN0ZWQgPSB7fTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbnN0YW5jZS5jdHgpIHtcclxuICAgICAgICAgICAgaWYgKGlzS2V5T2ZUeXBlKENvbXAsIGtleSwgdHlwZSkpIHtcclxuICAgICAgICAgICAgICAgIGV4dHJhY3RlZFtrZXldID0gaW5zdGFuY2UuY3R4W2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGV4dHJhY3RlZDtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGlzS2V5T2ZUeXBlKENvbXAsIGtleSwgdHlwZSkge1xyXG4gICAgICAgIGNvbnN0IG9wdHMgPSBDb21wW3R5cGVdO1xyXG4gICAgICAgIGlmICgoaXNBcnJheShvcHRzKSAmJiBvcHRzLmluY2x1ZGVzKGtleSkpIHx8XHJcbiAgICAgICAgICAgIChpc09iamVjdChvcHRzKSAmJiBrZXkgaW4gb3B0cykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChDb21wLmV4dGVuZHMgJiYgaXNLZXlPZlR5cGUoQ29tcC5leHRlbmRzLCBrZXksIHR5cGUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoQ29tcC5taXhpbnMgJiYgQ29tcC5taXhpbnMuc29tZShtID0+IGlzS2V5T2ZUeXBlKG0sIGtleSwgdHlwZSkpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGdlblJlZkZsYWcodikge1xyXG4gICAgICAgIGlmIChpc1NoYWxsb3codikpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGBTaGFsbG93UmVmYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHYuZWZmZWN0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgQ29tcHV0ZWRSZWZgO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYFJlZmA7XHJcbiAgICB9XHJcbiAgICBpZiAod2luZG93LmRldnRvb2xzRm9ybWF0dGVycykge1xyXG4gICAgICAgIHdpbmRvdy5kZXZ0b29sc0Zvcm1hdHRlcnMucHVzaChmb3JtYXR0ZXIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgd2luZG93LmRldnRvb2xzRm9ybWF0dGVycyA9IFtmb3JtYXR0ZXJdO1xyXG4gICAgfVxyXG59XG5cbmZ1bmN0aW9uIHdpdGhNZW1vKG1lbW8sIHJlbmRlciwgY2FjaGUsIGluZGV4KSB7XHJcbiAgICBjb25zdCBjYWNoZWQgPSBjYWNoZVtpbmRleF07XHJcbiAgICBpZiAoY2FjaGVkICYmIGlzTWVtb1NhbWUoY2FjaGVkLCBtZW1vKSkge1xyXG4gICAgICAgIHJldHVybiBjYWNoZWQ7XHJcbiAgICB9XHJcbiAgICBjb25zdCByZXQgPSByZW5kZXIoKTtcclxuICAgIC8vIHNoYWxsb3cgY2xvbmVcclxuICAgIHJldC5tZW1vID0gbWVtby5zbGljZSgpO1xyXG4gICAgcmV0dXJuIChjYWNoZVtpbmRleF0gPSByZXQpO1xyXG59XHJcbmZ1bmN0aW9uIGlzTWVtb1NhbWUoY2FjaGVkLCBtZW1vKSB7XHJcbiAgICBjb25zdCBwcmV2ID0gY2FjaGVkLm1lbW87XHJcbiAgICBpZiAocHJldi5sZW5ndGggIT0gbWVtby5sZW5ndGgpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZXYubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoaGFzQ2hhbmdlZChwcmV2W2ldLCBtZW1vW2ldKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gbWFrZSBzdXJlIHRvIGxldCBwYXJlbnQgYmxvY2sgdHJhY2sgaXQgd2hlbiByZXR1cm5pbmcgY2FjaGVkXHJcbiAgICBpZiAoaXNCbG9ja1RyZWVFbmFibGVkID4gMCAmJiBjdXJyZW50QmxvY2spIHtcclxuICAgICAgICBjdXJyZW50QmxvY2sucHVzaChjYWNoZWQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbn1cblxuLy8gQ29yZSBBUEkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbmNvbnN0IHZlcnNpb24gPSBcIjMuMi4zOFwiO1xyXG5jb25zdCBfc3NyVXRpbHMgPSB7XHJcbiAgICBjcmVhdGVDb21wb25lbnRJbnN0YW5jZSxcclxuICAgIHNldHVwQ29tcG9uZW50LFxyXG4gICAgcmVuZGVyQ29tcG9uZW50Um9vdCxcclxuICAgIHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSxcclxuICAgIGlzVk5vZGUsXHJcbiAgICBub3JtYWxpemVWTm9kZVxyXG59O1xyXG4vKipcclxuICogU1NSIHV0aWxzIGZvciBcXEB2dWUvc2VydmVyLXJlbmRlcmVyLiBPbmx5IGV4cG9zZWQgaW4gc3NyLXBvc3NpYmxlIGJ1aWxkcy5cclxuICogQGludGVybmFsXHJcbiAqL1xyXG5jb25zdCBzc3JVdGlscyA9IChfc3NyVXRpbHMgKTtcclxuLyoqXHJcbiAqIEBpbnRlcm5hbCBvbmx5IGV4cG9zZWQgaW4gY29tcGF0IGJ1aWxkc1xyXG4gKi9cclxuY29uc3QgcmVzb2x2ZUZpbHRlciA9IG51bGw7XHJcbi8qKlxyXG4gKiBAaW50ZXJuYWwgb25seSBleHBvc2VkIGluIGNvbXBhdCBidWlsZHMuXHJcbiAqL1xyXG5jb25zdCBjb21wYXRVdGlscyA9IChudWxsKTtcblxuZXhwb3J0IHsgQmFzZVRyYW5zaXRpb24sIENvbW1lbnQsIEZyYWdtZW50LCBLZWVwQWxpdmUsIFN0YXRpYywgU3VzcGVuc2UsIFRlbGVwb3J0LCBUZXh0LCBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZywgY2FsbFdpdGhFcnJvckhhbmRsaW5nLCBjbG9uZVZOb2RlLCBjb21wYXRVdGlscywgY29tcHV0ZWQsIGNyZWF0ZUJsb2NrLCBjcmVhdGVDb21tZW50Vk5vZGUsIGNyZWF0ZUVsZW1lbnRCbG9jaywgY3JlYXRlQmFzZVZOb2RlIGFzIGNyZWF0ZUVsZW1lbnRWTm9kZSwgY3JlYXRlSHlkcmF0aW9uUmVuZGVyZXIsIGNyZWF0ZVByb3BzUmVzdFByb3h5LCBjcmVhdGVSZW5kZXJlciwgY3JlYXRlU2xvdHMsIGNyZWF0ZVN0YXRpY1ZOb2RlLCBjcmVhdGVUZXh0Vk5vZGUsIGNyZWF0ZVZOb2RlLCBkZWZpbmVBc3luY0NvbXBvbmVudCwgZGVmaW5lQ29tcG9uZW50LCBkZWZpbmVFbWl0cywgZGVmaW5lRXhwb3NlLCBkZWZpbmVQcm9wcywgZGV2dG9vbHMsIGdldEN1cnJlbnRJbnN0YW5jZSwgZ2V0VHJhbnNpdGlvblJhd0NoaWxkcmVuLCBndWFyZFJlYWN0aXZlUHJvcHMsIGgsIGhhbmRsZUVycm9yLCBpbml0Q3VzdG9tRm9ybWF0dGVyLCBpbmplY3QsIGlzTWVtb1NhbWUsIGlzUnVudGltZU9ubHksIGlzVk5vZGUsIG1lcmdlRGVmYXVsdHMsIG1lcmdlUHJvcHMsIG5leHRUaWNrLCBvbkFjdGl2YXRlZCwgb25CZWZvcmVNb3VudCwgb25CZWZvcmVVbm1vdW50LCBvbkJlZm9yZVVwZGF0ZSwgb25EZWFjdGl2YXRlZCwgb25FcnJvckNhcHR1cmVkLCBvbk1vdW50ZWQsIG9uUmVuZGVyVHJhY2tlZCwgb25SZW5kZXJUcmlnZ2VyZWQsIG9uU2VydmVyUHJlZmV0Y2gsIG9uVW5tb3VudGVkLCBvblVwZGF0ZWQsIG9wZW5CbG9jaywgcG9wU2NvcGVJZCwgcHJvdmlkZSwgcHVzaFNjb3BlSWQsIHF1ZXVlUG9zdEZsdXNoQ2IsIHJlZ2lzdGVyUnVudGltZUNvbXBpbGVyLCByZW5kZXJMaXN0LCByZW5kZXJTbG90LCByZXNvbHZlQ29tcG9uZW50LCByZXNvbHZlRGlyZWN0aXZlLCByZXNvbHZlRHluYW1pY0NvbXBvbmVudCwgcmVzb2x2ZUZpbHRlciwgcmVzb2x2ZVRyYW5zaXRpb25Ib29rcywgc2V0QmxvY2tUcmFja2luZywgc2V0RGV2dG9vbHNIb29rLCBzZXRUcmFuc2l0aW9uSG9va3MsIHNzckNvbnRleHRLZXksIHNzclV0aWxzLCB0b0hhbmRsZXJzLCB0cmFuc2Zvcm1WTm9kZUFyZ3MsIHVzZUF0dHJzLCB1c2VTU1JDb250ZXh0LCB1c2VTbG90cywgdXNlVHJhbnNpdGlvblN0YXRlLCB2ZXJzaW9uLCB3YXJuLCB3YXRjaCwgd2F0Y2hFZmZlY3QsIHdhdGNoUG9zdEVmZmVjdCwgd2F0Y2hTeW5jRWZmZWN0LCB3aXRoQXN5bmNDb250ZXh0LCB3aXRoQ3R4LCB3aXRoRGVmYXVsdHMsIHdpdGhEaXJlY3RpdmVzLCB3aXRoTWVtbywgd2l0aFNjb3BlSWQgfTtcbiIsImltcG9ydCB7IGNhbWVsaXplLCB3YXJuLCBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZywgZGVmaW5lQ29tcG9uZW50LCBuZXh0VGljaywgY3JlYXRlVk5vZGUsIGdldEN1cnJlbnRJbnN0YW5jZSwgd2F0Y2hQb3N0RWZmZWN0LCBvbk1vdW50ZWQsIG9uVW5tb3VudGVkLCBGcmFnbWVudCwgU3RhdGljLCBoLCBCYXNlVHJhbnNpdGlvbiwgdXNlVHJhbnNpdGlvblN0YXRlLCBvblVwZGF0ZWQsIHRvUmF3LCBnZXRUcmFuc2l0aW9uUmF3Q2hpbGRyZW4sIHNldFRyYW5zaXRpb25Ib29rcywgcmVzb2x2ZVRyYW5zaXRpb25Ib29rcywgY3JlYXRlUmVuZGVyZXIsIGlzUnVudGltZU9ubHksIGNyZWF0ZUh5ZHJhdGlvblJlbmRlcmVyIH0gZnJvbSAnQHZ1ZS9ydW50aW1lLWNvcmUnO1xuZXhwb3J0ICogZnJvbSAnQHZ1ZS9ydW50aW1lLWNvcmUnO1xuaW1wb3J0IHsgaXNTdHJpbmcsIGlzQXJyYXksIGh5cGhlbmF0ZSwgY2FwaXRhbGl6ZSwgaXNTcGVjaWFsQm9vbGVhbkF0dHIsIGluY2x1ZGVCb29sZWFuQXR0ciwgaXNPbiwgaXNNb2RlbExpc3RlbmVyLCBpc0Z1bmN0aW9uLCB0b051bWJlciwgY2FtZWxpemUgYXMgY2FtZWxpemUkMSwgZXh0ZW5kLCBFTVBUWV9PQkosIGlzT2JqZWN0LCBpbnZva2VBcnJheUZucywgbG9vc2VJbmRleE9mLCBpc1NldCwgbG9vc2VFcXVhbCwgaXNIVE1MVGFnLCBpc1NWR1RhZyB9IGZyb20gJ0B2dWUvc2hhcmVkJztcblxuY29uc3Qgc3ZnTlMgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xyXG5jb25zdCBkb2MgPSAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyA/IGRvY3VtZW50IDogbnVsbCk7XHJcbmNvbnN0IHRlbXBsYXRlQ29udGFpbmVyID0gZG9jICYmIC8qI19fUFVSRV9fKi8gZG9jLmNyZWF0ZUVsZW1lbnQoJ3RlbXBsYXRlJyk7XHJcbmNvbnN0IG5vZGVPcHMgPSB7XHJcbiAgICBpbnNlcnQ6IChjaGlsZCwgcGFyZW50LCBhbmNob3IpID0+IHtcclxuICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGNoaWxkLCBhbmNob3IgfHwgbnVsbCk7XHJcbiAgICB9LFxyXG4gICAgcmVtb3ZlOiBjaGlsZCA9PiB7XHJcbiAgICAgICAgY29uc3QgcGFyZW50ID0gY2hpbGQucGFyZW50Tm9kZTtcclxuICAgICAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgICAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChjaGlsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIGNyZWF0ZUVsZW1lbnQ6ICh0YWcsIGlzU1ZHLCBpcywgcHJvcHMpID0+IHtcclxuICAgICAgICBjb25zdCBlbCA9IGlzU1ZHXHJcbiAgICAgICAgICAgID8gZG9jLmNyZWF0ZUVsZW1lbnROUyhzdmdOUywgdGFnKVxyXG4gICAgICAgICAgICA6IGRvYy5jcmVhdGVFbGVtZW50KHRhZywgaXMgPyB7IGlzIH0gOiB1bmRlZmluZWQpO1xyXG4gICAgICAgIGlmICh0YWcgPT09ICdzZWxlY3QnICYmIHByb3BzICYmIHByb3BzLm11bHRpcGxlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdtdWx0aXBsZScsIHByb3BzLm11bHRpcGxlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGVsO1xyXG4gICAgfSxcclxuICAgIGNyZWF0ZVRleHQ6IHRleHQgPT4gZG9jLmNyZWF0ZVRleHROb2RlKHRleHQpLFxyXG4gICAgY3JlYXRlQ29tbWVudDogdGV4dCA9PiBkb2MuY3JlYXRlQ29tbWVudCh0ZXh0KSxcclxuICAgIHNldFRleHQ6IChub2RlLCB0ZXh0KSA9PiB7XHJcbiAgICAgICAgbm9kZS5ub2RlVmFsdWUgPSB0ZXh0O1xyXG4gICAgfSxcclxuICAgIHNldEVsZW1lbnRUZXh0OiAoZWwsIHRleHQpID0+IHtcclxuICAgICAgICBlbC50ZXh0Q29udGVudCA9IHRleHQ7XHJcbiAgICB9LFxyXG4gICAgcGFyZW50Tm9kZTogbm9kZSA9PiBub2RlLnBhcmVudE5vZGUsXHJcbiAgICBuZXh0U2libGluZzogbm9kZSA9PiBub2RlLm5leHRTaWJsaW5nLFxyXG4gICAgcXVlcnlTZWxlY3Rvcjogc2VsZWN0b3IgPT4gZG9jLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpLFxyXG4gICAgc2V0U2NvcGVJZChlbCwgaWQpIHtcclxuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoaWQsICcnKTtcclxuICAgIH0sXHJcbiAgICBjbG9uZU5vZGUoZWwpIHtcclxuICAgICAgICBjb25zdCBjbG9uZWQgPSBlbC5jbG9uZU5vZGUodHJ1ZSk7XHJcbiAgICAgICAgLy8gIzMwNzJcclxuICAgICAgICAvLyAtIGluIGBwYXRjaERPTVByb3BgLCB3ZSBzdG9yZSB0aGUgYWN0dWFsIHZhbHVlIGluIHRoZSBgZWwuX3ZhbHVlYCBwcm9wZXJ0eS5cclxuICAgICAgICAvLyAtIG5vcm1hbGx5LCBlbGVtZW50cyB1c2luZyBgOnZhbHVlYCBiaW5kaW5ncyB3aWxsIG5vdCBiZSBob2lzdGVkLCBidXQgaWZcclxuICAgICAgICAvLyAgIHRoZSBib3VuZCB2YWx1ZSBpcyBhIGNvbnN0YW50LCBlLmcuIGA6dmFsdWU9XCJ0cnVlXCJgIC0gdGhleSBkbyBnZXRcclxuICAgICAgICAvLyAgIGhvaXN0ZWQuXHJcbiAgICAgICAgLy8gLSBpbiBwcm9kdWN0aW9uLCBob2lzdGVkIG5vZGVzIGFyZSBjbG9uZWQgd2hlbiBzdWJzZXF1ZW50IGluc2VydHMsIGJ1dFxyXG4gICAgICAgIC8vICAgY2xvbmVOb2RlKCkgZG9lcyBub3QgY29weSB0aGUgY3VzdG9tIHByb3BlcnR5IHdlIGF0dGFjaGVkLlxyXG4gICAgICAgIC8vIC0gVGhpcyBtYXkgbmVlZCB0byBhY2NvdW50IGZvciBvdGhlciBjdXN0b20gRE9NIHByb3BlcnRpZXMgd2UgYXR0YWNoIHRvXHJcbiAgICAgICAgLy8gICBlbGVtZW50cyBpbiBhZGRpdGlvbiB0byBgX3ZhbHVlYCBpbiB0aGUgZnV0dXJlLlxyXG4gICAgICAgIGlmIChgX3ZhbHVlYCBpbiBlbCkge1xyXG4gICAgICAgICAgICBjbG9uZWQuX3ZhbHVlID0gZWwuX3ZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY2xvbmVkO1xyXG4gICAgfSxcclxuICAgIC8vIF9fVU5TQUZFX19cclxuICAgIC8vIFJlYXNvbjogaW5uZXJIVE1MLlxyXG4gICAgLy8gU3RhdGljIGNvbnRlbnQgaGVyZSBjYW4gb25seSBjb21lIGZyb20gY29tcGlsZWQgdGVtcGxhdGVzLlxyXG4gICAgLy8gQXMgbG9uZyBhcyB0aGUgdXNlciBvbmx5IHVzZXMgdHJ1c3RlZCB0ZW1wbGF0ZXMsIHRoaXMgaXMgc2FmZS5cclxuICAgIGluc2VydFN0YXRpY0NvbnRlbnQoY29udGVudCwgcGFyZW50LCBhbmNob3IsIGlzU1ZHLCBzdGFydCwgZW5kKSB7XHJcbiAgICAgICAgLy8gPHBhcmVudD4gYmVmb3JlIHwgZmlyc3QgLi4uIGxhc3QgfCBhbmNob3IgPC9wYXJlbnQ+XHJcbiAgICAgICAgY29uc3QgYmVmb3JlID0gYW5jaG9yID8gYW5jaG9yLnByZXZpb3VzU2libGluZyA6IHBhcmVudC5sYXN0Q2hpbGQ7XHJcbiAgICAgICAgLy8gIzUzMDggY2FuIG9ubHkgdGFrZSBjYWNoZWQgcGF0aCBpZjpcclxuICAgICAgICAvLyAtIGhhcyBhIHNpbmdsZSByb290IG5vZGVcclxuICAgICAgICAvLyAtIG5leHRTaWJsaW5nIGluZm8gaXMgc3RpbGwgYXZhaWxhYmxlXHJcbiAgICAgICAgaWYgKHN0YXJ0ICYmIChzdGFydCA9PT0gZW5kIHx8IHN0YXJ0Lm5leHRTaWJsaW5nKSkge1xyXG4gICAgICAgICAgICAvLyBjYWNoZWRcclxuICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcclxuICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoc3RhcnQuY2xvbmVOb2RlKHRydWUpLCBhbmNob3IpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID09PSBlbmQgfHwgIShzdGFydCA9IHN0YXJ0Lm5leHRTaWJsaW5nKSlcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gZnJlc2ggaW5zZXJ0XHJcbiAgICAgICAgICAgIHRlbXBsYXRlQ29udGFpbmVyLmlubmVySFRNTCA9IGlzU1ZHID8gYDxzdmc+JHtjb250ZW50fTwvc3ZnPmAgOiBjb250ZW50O1xyXG4gICAgICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IHRlbXBsYXRlQ29udGFpbmVyLmNvbnRlbnQ7XHJcbiAgICAgICAgICAgIGlmIChpc1NWRykge1xyXG4gICAgICAgICAgICAgICAgLy8gcmVtb3ZlIG91dGVyIHN2ZyB3cmFwcGVyXHJcbiAgICAgICAgICAgICAgICBjb25zdCB3cmFwcGVyID0gdGVtcGxhdGUuZmlyc3RDaGlsZDtcclxuICAgICAgICAgICAgICAgIHdoaWxlICh3cmFwcGVyLmZpcnN0Q2hpbGQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5hcHBlbmRDaGlsZCh3cmFwcGVyLmZpcnN0Q2hpbGQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUucmVtb3ZlQ2hpbGQod3JhcHBlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZSh0ZW1wbGF0ZSwgYW5jaG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgLy8gZmlyc3RcclxuICAgICAgICAgICAgYmVmb3JlID8gYmVmb3JlLm5leHRTaWJsaW5nIDogcGFyZW50LmZpcnN0Q2hpbGQsXHJcbiAgICAgICAgICAgIC8vIGxhc3RcclxuICAgICAgICAgICAgYW5jaG9yID8gYW5jaG9yLnByZXZpb3VzU2libGluZyA6IHBhcmVudC5sYXN0Q2hpbGRcclxuICAgICAgICBdO1xyXG4gICAgfVxyXG59O1xuXG4vLyBjb21waWxlciBzaG91bGQgbm9ybWFsaXplIGNsYXNzICsgOmNsYXNzIGJpbmRpbmdzIG9uIHRoZSBzYW1lIGVsZW1lbnRcclxuLy8gaW50byBhIHNpbmdsZSBiaW5kaW5nIFsnc3RhdGljQ2xhc3MnLCBkeW5hbWljXVxyXG5mdW5jdGlvbiBwYXRjaENsYXNzKGVsLCB2YWx1ZSwgaXNTVkcpIHtcclxuICAgIC8vIGRpcmVjdGx5IHNldHRpbmcgY2xhc3NOYW1lIHNob3VsZCBiZSBmYXN0ZXIgdGhhbiBzZXRBdHRyaWJ1dGUgaW4gdGhlb3J5XHJcbiAgICAvLyBpZiB0aGlzIGlzIGFuIGVsZW1lbnQgZHVyaW5nIGEgdHJhbnNpdGlvbiwgdGFrZSB0aGUgdGVtcG9yYXJ5IHRyYW5zaXRpb25cclxuICAgIC8vIGNsYXNzZXMgaW50byBhY2NvdW50LlxyXG4gICAgY29uc3QgdHJhbnNpdGlvbkNsYXNzZXMgPSBlbC5fdnRjO1xyXG4gICAgaWYgKHRyYW5zaXRpb25DbGFzc2VzKSB7XHJcbiAgICAgICAgdmFsdWUgPSAodmFsdWUgPyBbdmFsdWUsIC4uLnRyYW5zaXRpb25DbGFzc2VzXSA6IFsuLi50cmFuc2l0aW9uQ2xhc3Nlc10pLmpvaW4oJyAnKTtcclxuICAgIH1cclxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKCdjbGFzcycpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNTVkcpIHtcclxuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgdmFsdWUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZWwuY2xhc3NOYW1lID0gdmFsdWU7XHJcbiAgICB9XHJcbn1cblxuZnVuY3Rpb24gcGF0Y2hTdHlsZShlbCwgcHJldiwgbmV4dCkge1xyXG4gICAgY29uc3Qgc3R5bGUgPSBlbC5zdHlsZTtcclxuICAgIGNvbnN0IGlzQ3NzU3RyaW5nID0gaXNTdHJpbmcobmV4dCk7XHJcbiAgICBpZiAobmV4dCAmJiAhaXNDc3NTdHJpbmcpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBuZXh0KSB7XHJcbiAgICAgICAgICAgIHNldFN0eWxlKHN0eWxlLCBrZXksIG5leHRba2V5XSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwcmV2ICYmICFpc1N0cmluZyhwcmV2KSkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBwcmV2KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAobmV4dFtrZXldID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBzZXRTdHlsZShzdHlsZSwga2V5LCAnJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBjdXJyZW50RGlzcGxheSA9IHN0eWxlLmRpc3BsYXk7XHJcbiAgICAgICAgaWYgKGlzQ3NzU3RyaW5nKSB7XHJcbiAgICAgICAgICAgIGlmIChwcmV2ICE9PSBuZXh0KSB7XHJcbiAgICAgICAgICAgICAgICBzdHlsZS5jc3NUZXh0ID0gbmV4dDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChwcmV2KSB7XHJcbiAgICAgICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgnc3R5bGUnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaW5kaWNhdGVzIHRoYXQgdGhlIGBkaXNwbGF5YCBvZiB0aGUgZWxlbWVudCBpcyBjb250cm9sbGVkIGJ5IGB2LXNob3dgLFxyXG4gICAgICAgIC8vIHNvIHdlIGFsd2F5cyBrZWVwIHRoZSBjdXJyZW50IGBkaXNwbGF5YCB2YWx1ZSByZWdhcmRsZXNzIG9mIHRoZSBgc3R5bGVgXHJcbiAgICAgICAgLy8gdmFsdWUsIHRodXMgaGFuZGluZyBvdmVyIGNvbnRyb2wgdG8gYHYtc2hvd2AuXHJcbiAgICAgICAgaWYgKCdfdm9kJyBpbiBlbCkge1xyXG4gICAgICAgICAgICBzdHlsZS5kaXNwbGF5ID0gY3VycmVudERpc3BsYXk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmNvbnN0IGltcG9ydGFudFJFID0gL1xccyohaW1wb3J0YW50JC87XHJcbmZ1bmN0aW9uIHNldFN0eWxlKHN0eWxlLCBuYW1lLCB2YWwpIHtcclxuICAgIGlmIChpc0FycmF5KHZhbCkpIHtcclxuICAgICAgICB2YWwuZm9yRWFjaCh2ID0+IHNldFN0eWxlKHN0eWxlLCBuYW1lLCB2KSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBpZiAodmFsID09IG51bGwpXHJcbiAgICAgICAgICAgIHZhbCA9ICcnO1xyXG4gICAgICAgIGlmIChuYW1lLnN0YXJ0c1dpdGgoJy0tJykpIHtcclxuICAgICAgICAgICAgLy8gY3VzdG9tIHByb3BlcnR5IGRlZmluaXRpb25cclxuICAgICAgICAgICAgc3R5bGUuc2V0UHJvcGVydHkobmFtZSwgdmFsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByZWZpeGVkID0gYXV0b1ByZWZpeChzdHlsZSwgbmFtZSk7XHJcbiAgICAgICAgICAgIGlmIChpbXBvcnRhbnRSRS50ZXN0KHZhbCkpIHtcclxuICAgICAgICAgICAgICAgIC8vICFpbXBvcnRhbnRcclxuICAgICAgICAgICAgICAgIHN0eWxlLnNldFByb3BlcnR5KGh5cGhlbmF0ZShwcmVmaXhlZCksIHZhbC5yZXBsYWNlKGltcG9ydGFudFJFLCAnJyksICdpbXBvcnRhbnQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHN0eWxlW3ByZWZpeGVkXSA9IHZhbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5jb25zdCBwcmVmaXhlcyA9IFsnV2Via2l0JywgJ01veicsICdtcyddO1xyXG5jb25zdCBwcmVmaXhDYWNoZSA9IHt9O1xyXG5mdW5jdGlvbiBhdXRvUHJlZml4KHN0eWxlLCByYXdOYW1lKSB7XHJcbiAgICBjb25zdCBjYWNoZWQgPSBwcmVmaXhDYWNoZVtyYXdOYW1lXTtcclxuICAgIGlmIChjYWNoZWQpIHtcclxuICAgICAgICByZXR1cm4gY2FjaGVkO1xyXG4gICAgfVxyXG4gICAgbGV0IG5hbWUgPSBjYW1lbGl6ZShyYXdOYW1lKTtcclxuICAgIGlmIChuYW1lICE9PSAnZmlsdGVyJyAmJiBuYW1lIGluIHN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIChwcmVmaXhDYWNoZVtyYXdOYW1lXSA9IG5hbWUpO1xyXG4gICAgfVxyXG4gICAgbmFtZSA9IGNhcGl0YWxpemUobmFtZSk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZWZpeGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgcHJlZml4ZWQgPSBwcmVmaXhlc1tpXSArIG5hbWU7XHJcbiAgICAgICAgaWYgKHByZWZpeGVkIGluIHN0eWxlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAocHJlZml4Q2FjaGVbcmF3TmFtZV0gPSBwcmVmaXhlZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJhd05hbWU7XHJcbn1cblxuY29uc3QgeGxpbmtOUyA9ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJztcclxuZnVuY3Rpb24gcGF0Y2hBdHRyKGVsLCBrZXksIHZhbHVlLCBpc1NWRywgaW5zdGFuY2UpIHtcclxuICAgIGlmIChpc1NWRyAmJiBrZXkuc3RhcnRzV2l0aCgneGxpbms6JykpIHtcclxuICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGVOUyh4bGlua05TLCBrZXkuc2xpY2UoNiwga2V5Lmxlbmd0aCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlTlMoeGxpbmtOUywga2V5LCB2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gbm90ZSB3ZSBhcmUgb25seSBjaGVja2luZyBib29sZWFuIGF0dHJpYnV0ZXMgdGhhdCBkb24ndCBoYXZlIGFcclxuICAgICAgICAvLyBjb3JyZXNwb25kaW5nIGRvbSBwcm9wIG9mIHRoZSBzYW1lIG5hbWUgaGVyZS5cclxuICAgICAgICBjb25zdCBpc0Jvb2xlYW4gPSBpc1NwZWNpYWxCb29sZWFuQXR0cihrZXkpO1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IChpc0Jvb2xlYW4gJiYgIWluY2x1ZGVCb29sZWFuQXR0cih2YWx1ZSkpKSB7XHJcbiAgICAgICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKGtleSwgaXNCb29sZWFuID8gJycgOiB2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XG5cbi8vIF9fVU5TQUZFX19cclxuLy8gZnVuY3Rpb25zLiBUaGUgdXNlciBpcyByZXNwb25zaWJsZSBmb3IgdXNpbmcgdGhlbSB3aXRoIG9ubHkgdHJ1c3RlZCBjb250ZW50LlxyXG5mdW5jdGlvbiBwYXRjaERPTVByb3AoZWwsIGtleSwgdmFsdWUsIFxyXG4vLyB0aGUgZm9sbG93aW5nIGFyZ3MgYXJlIHBhc3NlZCBvbmx5IGR1ZSB0byBwb3RlbnRpYWwgaW5uZXJIVE1ML3RleHRDb250ZW50XHJcbi8vIG92ZXJyaWRpbmcgZXhpc3RpbmcgVk5vZGVzLCBpbiB3aGljaCBjYXNlIHRoZSBvbGQgdHJlZSBtdXN0IGJlIHByb3Blcmx5XHJcbi8vIHVubW91bnRlZC5cclxucHJldkNoaWxkcmVuLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB1bm1vdW50Q2hpbGRyZW4pIHtcclxuICAgIGlmIChrZXkgPT09ICdpbm5lckhUTUwnIHx8IGtleSA9PT0gJ3RleHRDb250ZW50Jykge1xyXG4gICAgICAgIGlmIChwcmV2Q2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgdW5tb3VudENoaWxkcmVuKHByZXZDaGlsZHJlbiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsW2tleV0gPSB2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoa2V5ID09PSAndmFsdWUnICYmXHJcbiAgICAgICAgZWwudGFnTmFtZSAhPT0gJ1BST0dSRVNTJyAmJlxyXG4gICAgICAgIC8vIGN1c3RvbSBlbGVtZW50cyBtYXkgdXNlIF92YWx1ZSBpbnRlcm5hbGx5XHJcbiAgICAgICAgIWVsLnRhZ05hbWUuaW5jbHVkZXMoJy0nKSkge1xyXG4gICAgICAgIC8vIHN0b3JlIHZhbHVlIGFzIF92YWx1ZSBhcyB3ZWxsIHNpbmNlXHJcbiAgICAgICAgLy8gbm9uLXN0cmluZyB2YWx1ZXMgd2lsbCBiZSBzdHJpbmdpZmllZC5cclxuICAgICAgICBlbC5fdmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlO1xyXG4gICAgICAgIGlmIChlbC52YWx1ZSAhPT0gbmV3VmFsdWUgfHxcclxuICAgICAgICAgICAgLy8gIzQ5NTY6IGFsd2F5cyBzZXQgZm9yIE9QVElPTiBlbGVtZW50cyBiZWNhdXNlIGl0cyB2YWx1ZSBmYWxscyBiYWNrIHRvXHJcbiAgICAgICAgICAgIC8vIHRleHRDb250ZW50IGlmIG5vIHZhbHVlIGF0dHJpYnV0ZSBpcyBwcmVzZW50LiBBbmQgc2V0dGluZyAudmFsdWUgZm9yXHJcbiAgICAgICAgICAgIC8vIE9QVElPTiBoYXMgbm8gc2lkZSBlZmZlY3RcclxuICAgICAgICAgICAgZWwudGFnTmFtZSA9PT0gJ09QVElPTicpIHtcclxuICAgICAgICAgICAgZWwudmFsdWUgPSBuZXdWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKGtleSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBuZWVkUmVtb3ZlID0gZmFsc2U7XHJcbiAgICBpZiAodmFsdWUgPT09ICcnIHx8IHZhbHVlID09IG51bGwpIHtcclxuICAgICAgICBjb25zdCB0eXBlID0gdHlwZW9mIGVsW2tleV07XHJcbiAgICAgICAgaWYgKHR5cGUgPT09ICdib29sZWFuJykge1xyXG4gICAgICAgICAgICAvLyBlLmcuIDxzZWxlY3QgbXVsdGlwbGU+IGNvbXBpbGVzIHRvIHsgbXVsdGlwbGU6ICcnIH1cclxuICAgICAgICAgICAgdmFsdWUgPSBpbmNsdWRlQm9vbGVhbkF0dHIodmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSBudWxsICYmIHR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIC8vIGUuZy4gPGRpdiA6aWQ9XCJudWxsXCI+XHJcbiAgICAgICAgICAgIHZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgIG5lZWRSZW1vdmUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0eXBlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICAvLyBlLmcuIDxpbWcgOndpZHRoPVwibnVsbFwiPlxyXG4gICAgICAgICAgICAvLyB0aGUgdmFsdWUgb2Ygc29tZSBJREwgYXR0ciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwLCBlLmcuIGlucHV0LnNpemUgPSAwIC0+IGVycm9yXHJcbiAgICAgICAgICAgIHZhbHVlID0gMDtcclxuICAgICAgICAgICAgbmVlZFJlbW92ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gc29tZSBwcm9wZXJ0aWVzIHBlcmZvcm0gdmFsdWUgdmFsaWRhdGlvbiBhbmQgdGhyb3csXHJcbiAgICAvLyBzb21lIHByb3BlcnRpZXMgaGFzIGdldHRlciwgbm8gc2V0dGVyLCB3aWxsIGVycm9yIGluICd1c2Ugc3RyaWN0J1xyXG4gICAgLy8gZWcuIDxzZWxlY3QgOnR5cGU9XCJudWxsXCI+PC9zZWxlY3Q+IDxzZWxlY3QgOndpbGxWYWxpZGF0ZT1cIm51bGxcIj48L3NlbGVjdD5cclxuICAgIHRyeSB7XHJcbiAgICAgICAgZWxba2V5XSA9IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYEZhaWxlZCBzZXR0aW5nIHByb3AgXCIke2tleX1cIiBvbiA8JHtlbC50YWdOYW1lLnRvTG93ZXJDYXNlKCl9PjogYCArXHJcbiAgICAgICAgICAgICAgICBgdmFsdWUgJHt2YWx1ZX0gaXMgaW52YWxpZC5gLCBlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBuZWVkUmVtb3ZlICYmIGVsLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xyXG59XG5cbi8vIEFzeW5jIGVkZ2UgY2FzZSBmaXggcmVxdWlyZXMgc3RvcmluZyBhbiBldmVudCBsaXN0ZW5lcidzIGF0dGFjaCB0aW1lc3RhbXAuXHJcbmNvbnN0IFtfZ2V0Tm93LCBza2lwVGltZXN0YW1wQ2hlY2tdID0gLyojX19QVVJFX18qLyAoKCkgPT4ge1xyXG4gICAgbGV0IF9nZXROb3cgPSBEYXRlLm5vdztcclxuICAgIGxldCBza2lwVGltZXN0YW1wQ2hlY2sgPSBmYWxzZTtcclxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgIC8vIERldGVybWluZSB3aGF0IGV2ZW50IHRpbWVzdGFtcCB0aGUgYnJvd3NlciBpcyB1c2luZy4gQW5ub3lpbmdseSwgdGhlXHJcbiAgICAgICAgLy8gdGltZXN0YW1wIGNhbiBlaXRoZXIgYmUgaGktcmVzIChyZWxhdGl2ZSB0byBwYWdlIGxvYWQpIG9yIGxvdy1yZXNcclxuICAgICAgICAvLyAocmVsYXRpdmUgdG8gVU5JWCBlcG9jaCksIHNvIGluIG9yZGVyIHRvIGNvbXBhcmUgdGltZSB3ZSBoYXZlIHRvIHVzZSB0aGVcclxuICAgICAgICAvLyBzYW1lIHRpbWVzdGFtcCB0eXBlIHdoZW4gc2F2aW5nIHRoZSBmbHVzaCB0aW1lc3RhbXAuXHJcbiAgICAgICAgaWYgKERhdGUubm93KCkgPiBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKS50aW1lU3RhbXApIHtcclxuICAgICAgICAgICAgLy8gaWYgdGhlIGxvdy1yZXMgdGltZXN0YW1wIHdoaWNoIGlzIGJpZ2dlciB0aGFuIHRoZSBldmVudCB0aW1lc3RhbXBcclxuICAgICAgICAgICAgLy8gKHdoaWNoIGlzIGV2YWx1YXRlZCBBRlRFUikgaXQgbWVhbnMgdGhlIGV2ZW50IGlzIHVzaW5nIGEgaGktcmVzIHRpbWVzdGFtcCxcclxuICAgICAgICAgICAgLy8gYW5kIHdlIG5lZWQgdG8gdXNlIHRoZSBoaS1yZXMgdmVyc2lvbiBmb3IgZXZlbnQgbGlzdGVuZXJzIGFzIHdlbGwuXHJcbiAgICAgICAgICAgIF9nZXROb3cgPSBwZXJmb3JtYW5jZS5ub3cuYmluZChwZXJmb3JtYW5jZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vICMzNDg1OiBGaXJlZm94IDw9IDUzIGhhcyBpbmNvcnJlY3QgRXZlbnQudGltZVN0YW1wIGltcGxlbWVudGF0aW9uXHJcbiAgICAgICAgLy8gYW5kIGRvZXMgbm90IGZpcmUgbWljcm90YXNrcyBpbiBiZXR3ZWVuIGV2ZW50IHByb3BhZ2F0aW9uLCBzbyBzYWZlIHRvIGV4Y2x1ZGUuXHJcbiAgICAgICAgY29uc3QgZmZNYXRjaCA9IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL2ZpcmVmb3hcXC8oXFxkKykvaSk7XHJcbiAgICAgICAgc2tpcFRpbWVzdGFtcENoZWNrID0gISEoZmZNYXRjaCAmJiBOdW1iZXIoZmZNYXRjaFsxXSkgPD0gNTMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtfZ2V0Tm93LCBza2lwVGltZXN0YW1wQ2hlY2tdO1xyXG59KSgpO1xyXG4vLyBUbyBhdm9pZCB0aGUgb3ZlcmhlYWQgb2YgcmVwZWF0ZWRseSBjYWxsaW5nIHBlcmZvcm1hbmNlLm5vdygpLCB3ZSBjYWNoZVxyXG4vLyBhbmQgdXNlIHRoZSBzYW1lIHRpbWVzdGFtcCBmb3IgYWxsIGV2ZW50IGxpc3RlbmVycyBhdHRhY2hlZCBpbiB0aGUgc2FtZSB0aWNrLlxyXG5sZXQgY2FjaGVkTm93ID0gMDtcclxuY29uc3QgcCA9IC8qI19fUFVSRV9fKi8gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbmNvbnN0IHJlc2V0ID0gKCkgPT4ge1xyXG4gICAgY2FjaGVkTm93ID0gMDtcclxufTtcclxuY29uc3QgZ2V0Tm93ID0gKCkgPT4gY2FjaGVkTm93IHx8IChwLnRoZW4ocmVzZXQpLCAoY2FjaGVkTm93ID0gX2dldE5vdygpKSk7XHJcbmZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIoZWwsIGV2ZW50LCBoYW5kbGVyLCBvcHRpb25zKSB7XHJcbiAgICBlbC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyLCBvcHRpb25zKTtcclxufVxyXG5mdW5jdGlvbiByZW1vdmVFdmVudExpc3RlbmVyKGVsLCBldmVudCwgaGFuZGxlciwgb3B0aW9ucykge1xyXG4gICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgb3B0aW9ucyk7XHJcbn1cclxuZnVuY3Rpb24gcGF0Y2hFdmVudChlbCwgcmF3TmFtZSwgcHJldlZhbHVlLCBuZXh0VmFsdWUsIGluc3RhbmNlID0gbnVsbCkge1xyXG4gICAgLy8gdmVpID0gdnVlIGV2ZW50IGludm9rZXJzXHJcbiAgICBjb25zdCBpbnZva2VycyA9IGVsLl92ZWkgfHwgKGVsLl92ZWkgPSB7fSk7XHJcbiAgICBjb25zdCBleGlzdGluZ0ludm9rZXIgPSBpbnZva2Vyc1tyYXdOYW1lXTtcclxuICAgIGlmIChuZXh0VmFsdWUgJiYgZXhpc3RpbmdJbnZva2VyKSB7XHJcbiAgICAgICAgLy8gcGF0Y2hcclxuICAgICAgICBleGlzdGluZ0ludm9rZXIudmFsdWUgPSBuZXh0VmFsdWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBbbmFtZSwgb3B0aW9uc10gPSBwYXJzZU5hbWUocmF3TmFtZSk7XHJcbiAgICAgICAgaWYgKG5leHRWYWx1ZSkge1xyXG4gICAgICAgICAgICAvLyBhZGRcclxuICAgICAgICAgICAgY29uc3QgaW52b2tlciA9IChpbnZva2Vyc1tyYXdOYW1lXSA9IGNyZWF0ZUludm9rZXIobmV4dFZhbHVlLCBpbnN0YW5jZSkpO1xyXG4gICAgICAgICAgICBhZGRFdmVudExpc3RlbmVyKGVsLCBuYW1lLCBpbnZva2VyLCBvcHRpb25zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZXhpc3RpbmdJbnZva2VyKSB7XHJcbiAgICAgICAgICAgIC8vIHJlbW92ZVxyXG4gICAgICAgICAgICByZW1vdmVFdmVudExpc3RlbmVyKGVsLCBuYW1lLCBleGlzdGluZ0ludm9rZXIsIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICBpbnZva2Vyc1tyYXdOYW1lXSA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuY29uc3Qgb3B0aW9uc01vZGlmaWVyUkUgPSAvKD86T25jZXxQYXNzaXZlfENhcHR1cmUpJC87XHJcbmZ1bmN0aW9uIHBhcnNlTmFtZShuYW1lKSB7XHJcbiAgICBsZXQgb3B0aW9ucztcclxuICAgIGlmIChvcHRpb25zTW9kaWZpZXJSRS50ZXN0KG5hbWUpKSB7XHJcbiAgICAgICAgb3B0aW9ucyA9IHt9O1xyXG4gICAgICAgIGxldCBtO1xyXG4gICAgICAgIHdoaWxlICgobSA9IG5hbWUubWF0Y2gob3B0aW9uc01vZGlmaWVyUkUpKSkge1xyXG4gICAgICAgICAgICBuYW1lID0gbmFtZS5zbGljZSgwLCBuYW1lLmxlbmd0aCAtIG1bMF0ubGVuZ3RoKTtcclxuICAgICAgICAgICAgb3B0aW9uc1ttWzBdLnRvTG93ZXJDYXNlKCldID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBldmVudCA9IG5hbWVbMl0gPT09ICc6JyA/IG5hbWUuc2xpY2UoMykgOiBoeXBoZW5hdGUobmFtZS5zbGljZSgyKSk7XHJcbiAgICByZXR1cm4gW2V2ZW50LCBvcHRpb25zXTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVJbnZva2VyKGluaXRpYWxWYWx1ZSwgaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IGludm9rZXIgPSAoZSkgPT4ge1xyXG4gICAgICAgIC8vIGFzeW5jIGVkZ2UgY2FzZSAjNjU2NjogaW5uZXIgY2xpY2sgZXZlbnQgdHJpZ2dlcnMgcGF0Y2gsIGV2ZW50IGhhbmRsZXJcclxuICAgICAgICAvLyBhdHRhY2hlZCB0byBvdXRlciBlbGVtZW50IGR1cmluZyBwYXRjaCwgYW5kIHRyaWdnZXJlZCBhZ2Fpbi4gVGhpc1xyXG4gICAgICAgIC8vIGhhcHBlbnMgYmVjYXVzZSBicm93c2VycyBmaXJlIG1pY3JvdGFzayB0aWNrcyBiZXR3ZWVuIGV2ZW50IHByb3BhZ2F0aW9uLlxyXG4gICAgICAgIC8vIHRoZSBzb2x1dGlvbiBpcyBzaW1wbGU6IHdlIHNhdmUgdGhlIHRpbWVzdGFtcCB3aGVuIGEgaGFuZGxlciBpcyBhdHRhY2hlZCxcclxuICAgICAgICAvLyBhbmQgdGhlIGhhbmRsZXIgd291bGQgb25seSBmaXJlIGlmIHRoZSBldmVudCBwYXNzZWQgdG8gaXQgd2FzIGZpcmVkXHJcbiAgICAgICAgLy8gQUZURVIgaXQgd2FzIGF0dGFjaGVkLlxyXG4gICAgICAgIGNvbnN0IHRpbWVTdGFtcCA9IGUudGltZVN0YW1wIHx8IF9nZXROb3coKTtcclxuICAgICAgICBpZiAoc2tpcFRpbWVzdGFtcENoZWNrIHx8IHRpbWVTdGFtcCA+PSBpbnZva2VyLmF0dGFjaGVkIC0gMSkge1xyXG4gICAgICAgICAgICBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhwYXRjaFN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbihlLCBpbnZva2VyLnZhbHVlKSwgaW5zdGFuY2UsIDUgLyogRXJyb3JDb2Rlcy5OQVRJVkVfRVZFTlRfSEFORExFUiAqLywgW2VdKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgaW52b2tlci52YWx1ZSA9IGluaXRpYWxWYWx1ZTtcclxuICAgIGludm9rZXIuYXR0YWNoZWQgPSBnZXROb3coKTtcclxuICAgIHJldHVybiBpbnZva2VyO1xyXG59XHJcbmZ1bmN0aW9uIHBhdGNoU3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKGUsIHZhbHVlKSB7XHJcbiAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICBjb25zdCBvcmlnaW5hbFN0b3AgPSBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjtcclxuICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiA9ICgpID0+IHtcclxuICAgICAgICAgICAgb3JpZ2luYWxTdG9wLmNhbGwoZSk7XHJcbiAgICAgICAgICAgIGUuX3N0b3BwZWQgPSB0cnVlO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlLm1hcChmbiA9PiAoZSkgPT4gIWUuX3N0b3BwZWQgJiYgZm4gJiYgZm4oZSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG59XG5cbmNvbnN0IG5hdGl2ZU9uUkUgPSAvXm9uW2Etel0vO1xyXG5jb25zdCBwYXRjaFByb3AgPSAoZWwsIGtleSwgcHJldlZhbHVlLCBuZXh0VmFsdWUsIGlzU1ZHID0gZmFsc2UsIHByZXZDaGlsZHJlbiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdW5tb3VudENoaWxkcmVuKSA9PiB7XHJcbiAgICBpZiAoa2V5ID09PSAnY2xhc3MnKSB7XHJcbiAgICAgICAgcGF0Y2hDbGFzcyhlbCwgbmV4dFZhbHVlLCBpc1NWRyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChrZXkgPT09ICdzdHlsZScpIHtcclxuICAgICAgICBwYXRjaFN0eWxlKGVsLCBwcmV2VmFsdWUsIG5leHRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc09uKGtleSkpIHtcclxuICAgICAgICAvLyBpZ25vcmUgdi1tb2RlbCBsaXN0ZW5lcnNcclxuICAgICAgICBpZiAoIWlzTW9kZWxMaXN0ZW5lcihrZXkpKSB7XHJcbiAgICAgICAgICAgIHBhdGNoRXZlbnQoZWwsIGtleSwgcHJldlZhbHVlLCBuZXh0VmFsdWUsIHBhcmVudENvbXBvbmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoa2V5WzBdID09PSAnLidcclxuICAgICAgICA/ICgoa2V5ID0ga2V5LnNsaWNlKDEpKSwgdHJ1ZSlcclxuICAgICAgICA6IGtleVswXSA9PT0gJ14nXHJcbiAgICAgICAgICAgID8gKChrZXkgPSBrZXkuc2xpY2UoMSkpLCBmYWxzZSlcclxuICAgICAgICAgICAgOiBzaG91bGRTZXRBc1Byb3AoZWwsIGtleSwgbmV4dFZhbHVlLCBpc1NWRykpIHtcclxuICAgICAgICBwYXRjaERPTVByb3AoZWwsIGtleSwgbmV4dFZhbHVlLCBwcmV2Q2hpbGRyZW4sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHVubW91bnRDaGlsZHJlbik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBzcGVjaWFsIGNhc2UgZm9yIDxpbnB1dCB2LW1vZGVsIHR5cGU9XCJjaGVja2JveFwiPiB3aXRoXHJcbiAgICAgICAgLy8gOnRydWUtdmFsdWUgJiA6ZmFsc2UtdmFsdWVcclxuICAgICAgICAvLyBzdG9yZSB2YWx1ZSBhcyBkb20gcHJvcGVydGllcyBzaW5jZSBub24tc3RyaW5nIHZhbHVlcyB3aWxsIGJlXHJcbiAgICAgICAgLy8gc3RyaW5naWZpZWQuXHJcbiAgICAgICAgaWYgKGtleSA9PT0gJ3RydWUtdmFsdWUnKSB7XHJcbiAgICAgICAgICAgIGVsLl90cnVlVmFsdWUgPSBuZXh0VmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGtleSA9PT0gJ2ZhbHNlLXZhbHVlJykge1xyXG4gICAgICAgICAgICBlbC5fZmFsc2VWYWx1ZSA9IG5leHRWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcGF0Y2hBdHRyKGVsLCBrZXksIG5leHRWYWx1ZSwgaXNTVkcpO1xyXG4gICAgfVxyXG59O1xyXG5mdW5jdGlvbiBzaG91bGRTZXRBc1Byb3AoZWwsIGtleSwgdmFsdWUsIGlzU1ZHKSB7XHJcbiAgICBpZiAoaXNTVkcpIHtcclxuICAgICAgICAvLyBtb3N0IGtleXMgbXVzdCBiZSBzZXQgYXMgYXR0cmlidXRlIG9uIHN2ZyBlbGVtZW50cyB0byB3b3JrXHJcbiAgICAgICAgLy8gLi4uZXhjZXB0IGlubmVySFRNTCAmIHRleHRDb250ZW50XHJcbiAgICAgICAgaWYgKGtleSA9PT0gJ2lubmVySFRNTCcgfHwga2V5ID09PSAndGV4dENvbnRlbnQnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBvciBuYXRpdmUgb25jbGljayB3aXRoIGZ1bmN0aW9uIHZhbHVlc1xyXG4gICAgICAgIGlmIChrZXkgaW4gZWwgJiYgbmF0aXZlT25SRS50ZXN0KGtleSkgJiYgaXNGdW5jdGlvbih2YWx1ZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIHRoZXNlIGFyZSBlbnVtZXJhdGVkIGF0dHJzLCBob3dldmVyIHRoZWlyIGNvcnJlc3BvbmRpbmcgRE9NIHByb3BlcnRpZXNcclxuICAgIC8vIGFyZSBhY3R1YWxseSBib29sZWFucyAtIHRoaXMgbGVhZHMgdG8gc2V0dGluZyBpdCB3aXRoIGEgc3RyaW5nIFwiZmFsc2VcIlxyXG4gICAgLy8gdmFsdWUgbGVhZGluZyBpdCB0byBiZSBjb2VyY2VkIHRvIGB0cnVlYCwgc28gd2UgbmVlZCB0byBhbHdheXMgdHJlYXRcclxuICAgIC8vIHRoZW0gYXMgYXR0cmlidXRlcy5cclxuICAgIC8vIE5vdGUgdGhhdCBgY29udGVudEVkaXRhYmxlYCBkb2Vzbid0IGhhdmUgdGhpcyBwcm9ibGVtOiBpdHMgRE9NXHJcbiAgICAvLyBwcm9wZXJ0eSBpcyBhbHNvIGVudW1lcmF0ZWQgc3RyaW5nIHZhbHVlcy5cclxuICAgIGlmIChrZXkgPT09ICdzcGVsbGNoZWNrJyB8fCBrZXkgPT09ICdkcmFnZ2FibGUnIHx8IGtleSA9PT0gJ3RyYW5zbGF0ZScpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyAjMTc4NywgIzI4NDAgZm9ybSBwcm9wZXJ0eSBvbiBmb3JtIGVsZW1lbnRzIGlzIHJlYWRvbmx5IGFuZCBtdXN0IGJlIHNldCBhc1xyXG4gICAgLy8gYXR0cmlidXRlLlxyXG4gICAgaWYgKGtleSA9PT0gJ2Zvcm0nKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gIzE1MjYgPGlucHV0IGxpc3Q+IG11c3QgYmUgc2V0IGFzIGF0dHJpYnV0ZVxyXG4gICAgaWYgKGtleSA9PT0gJ2xpc3QnICYmIGVsLnRhZ05hbWUgPT09ICdJTlBVVCcpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyAjMjc2NiA8dGV4dGFyZWEgdHlwZT4gbXVzdCBiZSBzZXQgYXMgYXR0cmlidXRlXHJcbiAgICBpZiAoa2V5ID09PSAndHlwZScgJiYgZWwudGFnTmFtZSA9PT0gJ1RFWFRBUkVBJykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIG5hdGl2ZSBvbmNsaWNrIHdpdGggc3RyaW5nIHZhbHVlLCBtdXN0IGJlIHNldCBhcyBhdHRyaWJ1dGVcclxuICAgIGlmIChuYXRpdmVPblJFLnRlc3Qoa2V5KSAmJiBpc1N0cmluZyh2YWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ga2V5IGluIGVsO1xyXG59XG5cbmZ1bmN0aW9uIGRlZmluZUN1c3RvbUVsZW1lbnQob3B0aW9ucywgaHlkcmF0ZSkge1xyXG4gICAgY29uc3QgQ29tcCA9IGRlZmluZUNvbXBvbmVudChvcHRpb25zKTtcclxuICAgIGNsYXNzIFZ1ZUN1c3RvbUVsZW1lbnQgZXh0ZW5kcyBWdWVFbGVtZW50IHtcclxuICAgICAgICBjb25zdHJ1Y3Rvcihpbml0aWFsUHJvcHMpIHtcclxuICAgICAgICAgICAgc3VwZXIoQ29tcCwgaW5pdGlhbFByb3BzLCBoeWRyYXRlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBWdWVDdXN0b21FbGVtZW50LmRlZiA9IENvbXA7XHJcbiAgICByZXR1cm4gVnVlQ3VzdG9tRWxlbWVudDtcclxufVxyXG5jb25zdCBkZWZpbmVTU1JDdXN0b21FbGVtZW50ID0gKChvcHRpb25zKSA9PiB7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICByZXR1cm4gZGVmaW5lQ3VzdG9tRWxlbWVudChvcHRpb25zLCBoeWRyYXRlKTtcclxufSk7XHJcbmNvbnN0IEJhc2VDbGFzcyA9ICh0eXBlb2YgSFRNTEVsZW1lbnQgIT09ICd1bmRlZmluZWQnID8gSFRNTEVsZW1lbnQgOiBjbGFzcyB7XHJcbn0pO1xyXG5jbGFzcyBWdWVFbGVtZW50IGV4dGVuZHMgQmFzZUNsYXNzIHtcclxuICAgIGNvbnN0cnVjdG9yKF9kZWYsIF9wcm9wcyA9IHt9LCBoeWRyYXRlKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLl9kZWYgPSBfZGVmO1xyXG4gICAgICAgIHRoaXMuX3Byb3BzID0gX3Byb3BzO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEBpbnRlcm5hbFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHRoaXMuX2luc3RhbmNlID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9jb25uZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl9yZXNvbHZlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX251bWJlclByb3BzID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5zaGFkb3dSb290ICYmIGh5ZHJhdGUpIHtcclxuICAgICAgICAgICAgaHlkcmF0ZSh0aGlzLl9jcmVhdGVWTm9kZSgpLCB0aGlzLnNoYWRvd1Jvb3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB0aGlzLnNoYWRvd1Jvb3QpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYEN1c3RvbSBlbGVtZW50IGhhcyBwcmUtcmVuZGVyZWQgZGVjbGFyYXRpdmUgc2hhZG93IHJvb3QgYnV0IGlzIG5vdCBgICtcclxuICAgICAgICAgICAgICAgICAgICBgZGVmaW5lZCBhcyBoeWRyYXRhYmxlLiBVc2UgXFxgZGVmaW5lU1NSQ3VzdG9tRWxlbWVudFxcYC5gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25uZWN0ZWRDYWxsYmFjaygpIHtcclxuICAgICAgICB0aGlzLl9jb25uZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgIGlmICghdGhpcy5faW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fcmVzb2x2ZURlZigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCkge1xyXG4gICAgICAgIHRoaXMuX2Nvbm5lY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIG5leHRUaWNrKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLl9jb25uZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgIHJlbmRlcihudWxsLCB0aGlzLnNoYWRvd1Jvb3QpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faW5zdGFuY2UgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIHJlc29sdmUgaW5uZXIgY29tcG9uZW50IGRlZmluaXRpb24gKGhhbmRsZSBwb3NzaWJsZSBhc3luYyBjb21wb25lbnQpXHJcbiAgICAgKi9cclxuICAgIF9yZXNvbHZlRGVmKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9yZXNvbHZlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3Jlc29sdmVkID0gdHJ1ZTtcclxuICAgICAgICAvLyBzZXQgaW5pdGlhbCBhdHRyc1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NldEF0dHIodGhpcy5hdHRyaWJ1dGVzW2ldLm5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB3YXRjaCBmdXR1cmUgYXR0ciBjaGFuZ2VzXHJcbiAgICAgICAgbmV3IE11dGF0aW9uT2JzZXJ2ZXIobXV0YXRpb25zID0+IHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBtIG9mIG11dGF0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0QXR0cihtLmF0dHJpYnV0ZU5hbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSkub2JzZXJ2ZSh0aGlzLCB7IGF0dHJpYnV0ZXM6IHRydWUgfSk7XHJcbiAgICAgICAgY29uc3QgcmVzb2x2ZSA9IChkZWYpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgeyBwcm9wcywgc3R5bGVzIH0gPSBkZWY7XHJcbiAgICAgICAgICAgIGNvbnN0IGhhc09wdGlvbnMgPSAhaXNBcnJheShwcm9wcyk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJhd0tleXMgPSBwcm9wcyA/IChoYXNPcHRpb25zID8gT2JqZWN0LmtleXMocHJvcHMpIDogcHJvcHMpIDogW107XHJcbiAgICAgICAgICAgIC8vIGNhc3QgTnVtYmVyLXR5cGUgcHJvcHMgc2V0IGJlZm9yZSByZXNvbHZlXHJcbiAgICAgICAgICAgIGxldCBudW1iZXJQcm9wcztcclxuICAgICAgICAgICAgaWYgKGhhc09wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuX3Byb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B0ID0gcHJvcHNba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob3B0ID09PSBOdW1iZXIgfHwgKG9wdCAmJiBvcHQudHlwZSA9PT0gTnVtYmVyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wcm9wc1trZXldID0gdG9OdW1iZXIodGhpcy5fcHJvcHNba2V5XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChudW1iZXJQcm9wcyB8fCAobnVtYmVyUHJvcHMgPSBPYmplY3QuY3JlYXRlKG51bGwpKSlba2V5XSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuX251bWJlclByb3BzID0gbnVtYmVyUHJvcHM7XHJcbiAgICAgICAgICAgIC8vIGNoZWNrIGlmIHRoZXJlIGFyZSBwcm9wcyBzZXQgcHJlLXVwZ3JhZGUgb3IgY29ubmVjdFxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGtleVswXSAhPT0gJ18nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0UHJvcChrZXksIHRoaXNba2V5XSwgdHJ1ZSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGRlZmluaW5nIGdldHRlci9zZXR0ZXJzIG9uIHByb3RvdHlwZVxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiByYXdLZXlzLm1hcChjYW1lbGl6ZSQxKSkge1xyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIGtleSwge1xyXG4gICAgICAgICAgICAgICAgICAgIGdldCgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3Aoa2V5KTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHNldCh2YWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0UHJvcChrZXksIHZhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gYXBwbHkgQ1NTXHJcbiAgICAgICAgICAgIHRoaXMuX2FwcGx5U3R5bGVzKHN0eWxlcyk7XHJcbiAgICAgICAgICAgIC8vIGluaXRpYWwgcmVuZGVyXHJcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZSgpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgYXN5bmNEZWYgPSB0aGlzLl9kZWYuX19hc3luY0xvYWRlcjtcclxuICAgICAgICBpZiAoYXN5bmNEZWYpIHtcclxuICAgICAgICAgICAgYXN5bmNEZWYoKS50aGVuKHJlc29sdmUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLl9kZWYpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIF9zZXRBdHRyKGtleSkge1xyXG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuZ2V0QXR0cmlidXRlKGtleSk7XHJcbiAgICAgICAgaWYgKHRoaXMuX251bWJlclByb3BzICYmIHRoaXMuX251bWJlclByb3BzW2tleV0pIHtcclxuICAgICAgICAgICAgdmFsdWUgPSB0b051bWJlcih2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3NldFByb3AoY2FtZWxpemUkMShrZXkpLCB2YWx1ZSwgZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBAaW50ZXJuYWxcclxuICAgICAqL1xyXG4gICAgX2dldFByb3Aoa2V5KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BzW2tleV07XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEBpbnRlcm5hbFxyXG4gICAgICovXHJcbiAgICBfc2V0UHJvcChrZXksIHZhbCwgc2hvdWxkUmVmbGVjdCA9IHRydWUsIHNob3VsZFVwZGF0ZSA9IHRydWUpIHtcclxuICAgICAgICBpZiAodmFsICE9PSB0aGlzLl9wcm9wc1trZXldKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Byb3BzW2tleV0gPSB2YWw7XHJcbiAgICAgICAgICAgIGlmIChzaG91bGRVcGRhdGUgJiYgdGhpcy5faW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHJlZmxlY3RcclxuICAgICAgICAgICAgaWYgKHNob3VsZFJlZmxlY3QpIHtcclxuICAgICAgICAgICAgICAgIGlmICh2YWwgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZShoeXBoZW5hdGUoa2V5KSwgJycpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZShoeXBoZW5hdGUoa2V5KSwgdmFsICsgJycpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXZhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKGh5cGhlbmF0ZShrZXkpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIF91cGRhdGUoKSB7XHJcbiAgICAgICAgcmVuZGVyKHRoaXMuX2NyZWF0ZVZOb2RlKCksIHRoaXMuc2hhZG93Um9vdCk7XHJcbiAgICB9XHJcbiAgICBfY3JlYXRlVk5vZGUoKSB7XHJcbiAgICAgICAgY29uc3Qgdm5vZGUgPSBjcmVhdGVWTm9kZSh0aGlzLl9kZWYsIGV4dGVuZCh7fSwgdGhpcy5fcHJvcHMpKTtcclxuICAgICAgICBpZiAoIXRoaXMuX2luc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIHZub2RlLmNlID0gaW5zdGFuY2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faW5zdGFuY2UgPSBpbnN0YW5jZTtcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmlzQ0UgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgLy8gSE1SXHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY2VSZWxvYWQgPSBuZXdTdHlsZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhbHdheXMgcmVzZXQgc3R5bGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zdHlsZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0eWxlcy5mb3JFYWNoKHMgPT4gdGhpcy5zaGFkb3dSb290LnJlbW92ZUNoaWxkKHMpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0eWxlcy5sZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FwcGx5U3R5bGVzKG5ld1N0eWxlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoaXMgaXMgYW4gYXN5bmMgY29tcG9uZW50LCBjZVJlbG9hZCBpcyBjYWxsZWQgZnJvbSB0aGUgaW5uZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29tcG9uZW50IHNvIG5vIG5lZWQgdG8gcmVsb2FkIHRoZSBhc3luYyB3cmFwcGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5fZGVmLl9fYXN5bmNMb2FkZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbG9hZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5zdGFuY2UgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gaW50ZXJjZXB0IGVtaXRcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmVtaXQgPSAoZXZlbnQsIC4uLmFyZ3MpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KGV2ZW50LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDogYXJnc1xyXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAvLyBsb2NhdGUgbmVhcmVzdCBWdWUgY3VzdG9tIGVsZW1lbnQgcGFyZW50IGZvciBwcm92aWRlL2luamVjdFxyXG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudCA9IHRoaXM7XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAoKHBhcmVudCA9XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50ICYmIChwYXJlbnQucGFyZW50Tm9kZSB8fCBwYXJlbnQuaG9zdCkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudCBpbnN0YW5jZW9mIFZ1ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UucGFyZW50ID0gcGFyZW50Ll9pbnN0YW5jZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdm5vZGU7XHJcbiAgICB9XHJcbiAgICBfYXBwbHlTdHlsZXMoc3R5bGVzKSB7XHJcbiAgICAgICAgaWYgKHN0eWxlcykge1xyXG4gICAgICAgICAgICBzdHlsZXMuZm9yRWFjaChjc3MgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XHJcbiAgICAgICAgICAgICAgICBzLnRleHRDb250ZW50ID0gY3NzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zaGFkb3dSb290LmFwcGVuZENoaWxkKHMpO1xyXG4gICAgICAgICAgICAgICAgLy8gcmVjb3JkIGZvciBITVJcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAodGhpcy5fc3R5bGVzIHx8ICh0aGlzLl9zdHlsZXMgPSBbXSkpLnB1c2gocyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxuXG5mdW5jdGlvbiB1c2VDc3NNb2R1bGUobmFtZSA9ICckc3R5bGUnKSB7XHJcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xyXG4gICAge1xyXG4gICAgICAgIGNvbnN0IGluc3RhbmNlID0gZ2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICAgICAgaWYgKCFpbnN0YW5jZSkge1xyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgd2FybihgdXNlQ3NzTW9kdWxlIG11c3QgYmUgY2FsbGVkIGluc2lkZSBzZXR1cCgpYCk7XHJcbiAgICAgICAgICAgIHJldHVybiBFTVBUWV9PQko7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG1vZHVsZXMgPSBpbnN0YW5jZS50eXBlLl9fY3NzTW9kdWxlcztcclxuICAgICAgICBpZiAoIW1vZHVsZXMpIHtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHdhcm4oYEN1cnJlbnQgaW5zdGFuY2UgZG9lcyBub3QgaGF2ZSBDU1MgbW9kdWxlcyBpbmplY3RlZC5gKTtcclxuICAgICAgICAgICAgcmV0dXJuIEVNUFRZX09CSjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbW9kID0gbW9kdWxlc1tuYW1lXTtcclxuICAgICAgICBpZiAoIW1vZCkge1xyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgIHdhcm4oYEN1cnJlbnQgaW5zdGFuY2UgZG9lcyBub3QgaGF2ZSBDU1MgbW9kdWxlIG5hbWVkIFwiJHtuYW1lfVwiLmApO1xyXG4gICAgICAgICAgICByZXR1cm4gRU1QVFlfT0JKO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbW9kO1xyXG4gICAgfVxyXG59XG5cbi8qKlxyXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgU0ZDJ3MgQ1NTIHZhcmlhYmxlIGluamVjdGlvbiBmZWF0dXJlLlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gdXNlQ3NzVmFycyhnZXR0ZXIpIHtcclxuICAgIGNvbnN0IGluc3RhbmNlID0gZ2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG4gICAgaWYgKCFpbnN0YW5jZSkge1xyXG4gICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICB3YXJuKGB1c2VDc3NWYXJzIGlzIGNhbGxlZCB3aXRob3V0IGN1cnJlbnQgYWN0aXZlIGNvbXBvbmVudCBpbnN0YW5jZS5gKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBzZXRWYXJzID0gKCkgPT4gc2V0VmFyc09uVk5vZGUoaW5zdGFuY2Uuc3ViVHJlZSwgZ2V0dGVyKGluc3RhbmNlLnByb3h5KSk7XHJcbiAgICB3YXRjaFBvc3RFZmZlY3Qoc2V0VmFycyk7XHJcbiAgICBvbk1vdW50ZWQoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG9iID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoc2V0VmFycyk7XHJcbiAgICAgICAgb2Iub2JzZXJ2ZShpbnN0YW5jZS5zdWJUcmVlLmVsLnBhcmVudE5vZGUsIHsgY2hpbGRMaXN0OiB0cnVlIH0pO1xyXG4gICAgICAgIG9uVW5tb3VudGVkKCgpID0+IG9iLmRpc2Nvbm5lY3QoKSk7XHJcbiAgICB9KTtcclxufVxyXG5mdW5jdGlvbiBzZXRWYXJzT25WTm9kZSh2bm9kZSwgdmFycykge1xyXG4gICAgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDEyOCAvKiBTaGFwZUZsYWdzLlNVU1BFTlNFICovKSB7XHJcbiAgICAgICAgY29uc3Qgc3VzcGVuc2UgPSB2bm9kZS5zdXNwZW5zZTtcclxuICAgICAgICB2bm9kZSA9IHN1c3BlbnNlLmFjdGl2ZUJyYW5jaDtcclxuICAgICAgICBpZiAoc3VzcGVuc2UucGVuZGluZ0JyYW5jaCAmJiAhc3VzcGVuc2UuaXNIeWRyYXRpbmcpIHtcclxuICAgICAgICAgICAgc3VzcGVuc2UuZWZmZWN0cy5wdXNoKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHNldFZhcnNPblZOb2RlKHN1c3BlbnNlLmFjdGl2ZUJyYW5jaCwgdmFycyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIGRyaWxsIGRvd24gSE9DcyB1bnRpbCBpdCdzIGEgbm9uLWNvbXBvbmVudCB2bm9kZVxyXG4gICAgd2hpbGUgKHZub2RlLmNvbXBvbmVudCkge1xyXG4gICAgICAgIHZub2RlID0gdm5vZGUuY29tcG9uZW50LnN1YlRyZWU7XHJcbiAgICB9XHJcbiAgICBpZiAodm5vZGUuc2hhcGVGbGFnICYgMSAvKiBTaGFwZUZsYWdzLkVMRU1FTlQgKi8gJiYgdm5vZGUuZWwpIHtcclxuICAgICAgICBzZXRWYXJzT25Ob2RlKHZub2RlLmVsLCB2YXJzKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHZub2RlLnR5cGUgPT09IEZyYWdtZW50KSB7XHJcbiAgICAgICAgdm5vZGUuY2hpbGRyZW4uZm9yRWFjaChjID0+IHNldFZhcnNPblZOb2RlKGMsIHZhcnMpKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHZub2RlLnR5cGUgPT09IFN0YXRpYykge1xyXG4gICAgICAgIGxldCB7IGVsLCBhbmNob3IgfSA9IHZub2RlO1xyXG4gICAgICAgIHdoaWxlIChlbCkge1xyXG4gICAgICAgICAgICBzZXRWYXJzT25Ob2RlKGVsLCB2YXJzKTtcclxuICAgICAgICAgICAgaWYgKGVsID09PSBhbmNob3IpXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZWwgPSBlbC5uZXh0U2libGluZztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gc2V0VmFyc09uTm9kZShlbCwgdmFycykge1xyXG4gICAgaWYgKGVsLm5vZGVUeXBlID09PSAxKSB7XHJcbiAgICAgICAgY29uc3Qgc3R5bGUgPSBlbC5zdHlsZTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB2YXJzKSB7XHJcbiAgICAgICAgICAgIHN0eWxlLnNldFByb3BlcnR5KGAtLSR7a2V5fWAsIHZhcnNba2V5XSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XG5cbmNvbnN0IFRSQU5TSVRJT04gPSAndHJhbnNpdGlvbic7XHJcbmNvbnN0IEFOSU1BVElPTiA9ICdhbmltYXRpb24nO1xyXG4vLyBET00gVHJhbnNpdGlvbiBpcyBhIGhpZ2hlci1vcmRlci1jb21wb25lbnQgYmFzZWQgb24gdGhlIHBsYXRmb3JtLWFnbm9zdGljXHJcbi8vIGJhc2UgVHJhbnNpdGlvbiBjb21wb25lbnQsIHdpdGggRE9NLXNwZWNpZmljIGxvZ2ljLlxyXG5jb25zdCBUcmFuc2l0aW9uID0gKHByb3BzLCB7IHNsb3RzIH0pID0+IGgoQmFzZVRyYW5zaXRpb24sIHJlc29sdmVUcmFuc2l0aW9uUHJvcHMocHJvcHMpLCBzbG90cyk7XHJcblRyYW5zaXRpb24uZGlzcGxheU5hbWUgPSAnVHJhbnNpdGlvbic7XHJcbmNvbnN0IERPTVRyYW5zaXRpb25Qcm9wc1ZhbGlkYXRvcnMgPSB7XHJcbiAgICBuYW1lOiBTdHJpbmcsXHJcbiAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICBjc3M6IHtcclxuICAgICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICAgIGRlZmF1bHQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBkdXJhdGlvbjogW1N0cmluZywgTnVtYmVyLCBPYmplY3RdLFxyXG4gICAgZW50ZXJGcm9tQ2xhc3M6IFN0cmluZyxcclxuICAgIGVudGVyQWN0aXZlQ2xhc3M6IFN0cmluZyxcclxuICAgIGVudGVyVG9DbGFzczogU3RyaW5nLFxyXG4gICAgYXBwZWFyRnJvbUNsYXNzOiBTdHJpbmcsXHJcbiAgICBhcHBlYXJBY3RpdmVDbGFzczogU3RyaW5nLFxyXG4gICAgYXBwZWFyVG9DbGFzczogU3RyaW5nLFxyXG4gICAgbGVhdmVGcm9tQ2xhc3M6IFN0cmluZyxcclxuICAgIGxlYXZlQWN0aXZlQ2xhc3M6IFN0cmluZyxcclxuICAgIGxlYXZlVG9DbGFzczogU3RyaW5nXHJcbn07XHJcbmNvbnN0IFRyYW5zaXRpb25Qcm9wc1ZhbGlkYXRvcnMgPSAoVHJhbnNpdGlvbi5wcm9wcyA9XHJcbiAgICAvKiNfX1BVUkVfXyovIGV4dGVuZCh7fSwgQmFzZVRyYW5zaXRpb24ucHJvcHMsIERPTVRyYW5zaXRpb25Qcm9wc1ZhbGlkYXRvcnMpKTtcclxuLyoqXHJcbiAqICMzMjI3IEluY29taW5nIGhvb2tzIG1heSBiZSBtZXJnZWQgaW50byBhcnJheXMgd2hlbiB3cmFwcGluZyBUcmFuc2l0aW9uXHJcbiAqIHdpdGggY3VzdG9tIEhPQ3MuXHJcbiAqL1xyXG5jb25zdCBjYWxsSG9vayA9IChob29rLCBhcmdzID0gW10pID0+IHtcclxuICAgIGlmIChpc0FycmF5KGhvb2spKSB7XHJcbiAgICAgICAgaG9vay5mb3JFYWNoKGggPT4gaCguLi5hcmdzKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChob29rKSB7XHJcbiAgICAgICAgaG9vayguLi5hcmdzKTtcclxuICAgIH1cclxufTtcclxuLyoqXHJcbiAqIENoZWNrIGlmIGEgaG9vayBleHBlY3RzIGEgY2FsbGJhY2sgKDJuZCBhcmcpLCB3aGljaCBtZWFucyB0aGUgdXNlclxyXG4gKiBpbnRlbmRzIHRvIGV4cGxpY2l0bHkgY29udHJvbCB0aGUgZW5kIG9mIHRoZSB0cmFuc2l0aW9uLlxyXG4gKi9cclxuY29uc3QgaGFzRXhwbGljaXRDYWxsYmFjayA9IChob29rKSA9PiB7XHJcbiAgICByZXR1cm4gaG9va1xyXG4gICAgICAgID8gaXNBcnJheShob29rKVxyXG4gICAgICAgICAgICA/IGhvb2suc29tZShoID0+IGgubGVuZ3RoID4gMSlcclxuICAgICAgICAgICAgOiBob29rLmxlbmd0aCA+IDFcclxuICAgICAgICA6IGZhbHNlO1xyXG59O1xyXG5mdW5jdGlvbiByZXNvbHZlVHJhbnNpdGlvblByb3BzKHJhd1Byb3BzKSB7XHJcbiAgICBjb25zdCBiYXNlUHJvcHMgPSB7fTtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIHJhd1Byb3BzKSB7XHJcbiAgICAgICAgaWYgKCEoa2V5IGluIERPTVRyYW5zaXRpb25Qcm9wc1ZhbGlkYXRvcnMpKSB7XHJcbiAgICAgICAgICAgIGJhc2VQcm9wc1trZXldID0gcmF3UHJvcHNba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocmF3UHJvcHMuY3NzID09PSBmYWxzZSkge1xyXG4gICAgICAgIHJldHVybiBiYXNlUHJvcHM7XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IG5hbWUgPSAndicsIHR5cGUsIGR1cmF0aW9uLCBlbnRlckZyb21DbGFzcyA9IGAke25hbWV9LWVudGVyLWZyb21gLCBlbnRlckFjdGl2ZUNsYXNzID0gYCR7bmFtZX0tZW50ZXItYWN0aXZlYCwgZW50ZXJUb0NsYXNzID0gYCR7bmFtZX0tZW50ZXItdG9gLCBhcHBlYXJGcm9tQ2xhc3MgPSBlbnRlckZyb21DbGFzcywgYXBwZWFyQWN0aXZlQ2xhc3MgPSBlbnRlckFjdGl2ZUNsYXNzLCBhcHBlYXJUb0NsYXNzID0gZW50ZXJUb0NsYXNzLCBsZWF2ZUZyb21DbGFzcyA9IGAke25hbWV9LWxlYXZlLWZyb21gLCBsZWF2ZUFjdGl2ZUNsYXNzID0gYCR7bmFtZX0tbGVhdmUtYWN0aXZlYCwgbGVhdmVUb0NsYXNzID0gYCR7bmFtZX0tbGVhdmUtdG9gIH0gPSByYXdQcm9wcztcclxuICAgIGNvbnN0IGR1cmF0aW9ucyA9IG5vcm1hbGl6ZUR1cmF0aW9uKGR1cmF0aW9uKTtcclxuICAgIGNvbnN0IGVudGVyRHVyYXRpb24gPSBkdXJhdGlvbnMgJiYgZHVyYXRpb25zWzBdO1xyXG4gICAgY29uc3QgbGVhdmVEdXJhdGlvbiA9IGR1cmF0aW9ucyAmJiBkdXJhdGlvbnNbMV07XHJcbiAgICBjb25zdCB7IG9uQmVmb3JlRW50ZXIsIG9uRW50ZXIsIG9uRW50ZXJDYW5jZWxsZWQsIG9uTGVhdmUsIG9uTGVhdmVDYW5jZWxsZWQsIG9uQmVmb3JlQXBwZWFyID0gb25CZWZvcmVFbnRlciwgb25BcHBlYXIgPSBvbkVudGVyLCBvbkFwcGVhckNhbmNlbGxlZCA9IG9uRW50ZXJDYW5jZWxsZWQgfSA9IGJhc2VQcm9wcztcclxuICAgIGNvbnN0IGZpbmlzaEVudGVyID0gKGVsLCBpc0FwcGVhciwgZG9uZSkgPT4ge1xyXG4gICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgaXNBcHBlYXIgPyBhcHBlYXJUb0NsYXNzIDogZW50ZXJUb0NsYXNzKTtcclxuICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGlzQXBwZWFyID8gYXBwZWFyQWN0aXZlQ2xhc3MgOiBlbnRlckFjdGl2ZUNsYXNzKTtcclxuICAgICAgICBkb25lICYmIGRvbmUoKTtcclxuICAgIH07XHJcbiAgICBjb25zdCBmaW5pc2hMZWF2ZSA9IChlbCwgZG9uZSkgPT4ge1xyXG4gICAgICAgIGVsLl9pc0xlYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlRnJvbUNsYXNzKTtcclxuICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlVG9DbGFzcyk7XHJcbiAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUFjdGl2ZUNsYXNzKTtcclxuICAgICAgICBkb25lICYmIGRvbmUoKTtcclxuICAgIH07XHJcbiAgICBjb25zdCBtYWtlRW50ZXJIb29rID0gKGlzQXBwZWFyKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIChlbCwgZG9uZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBob29rID0gaXNBcHBlYXIgPyBvbkFwcGVhciA6IG9uRW50ZXI7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmUgPSAoKSA9PiBmaW5pc2hFbnRlcihlbCwgaXNBcHBlYXIsIGRvbmUpO1xyXG4gICAgICAgICAgICBjYWxsSG9vayhob29rLCBbZWwsIHJlc29sdmVdKTtcclxuICAgICAgICAgICAgbmV4dEZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgaXNBcHBlYXIgPyBhcHBlYXJGcm9tQ2xhc3MgOiBlbnRlckZyb21DbGFzcyk7XHJcbiAgICAgICAgICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGlzQXBwZWFyID8gYXBwZWFyVG9DbGFzcyA6IGVudGVyVG9DbGFzcyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWhhc0V4cGxpY2l0Q2FsbGJhY2soaG9vaykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3aGVuVHJhbnNpdGlvbkVuZHMoZWwsIHR5cGUsIGVudGVyRHVyYXRpb24sIHJlc29sdmUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG4gICAgfTtcclxuICAgIHJldHVybiBleHRlbmQoYmFzZVByb3BzLCB7XHJcbiAgICAgICAgb25CZWZvcmVFbnRlcihlbCkge1xyXG4gICAgICAgICAgICBjYWxsSG9vayhvbkJlZm9yZUVudGVyLCBbZWxdKTtcclxuICAgICAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBlbnRlckZyb21DbGFzcyk7XHJcbiAgICAgICAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgZW50ZXJBY3RpdmVDbGFzcyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvbkJlZm9yZUFwcGVhcihlbCkge1xyXG4gICAgICAgICAgICBjYWxsSG9vayhvbkJlZm9yZUFwcGVhciwgW2VsXSk7XHJcbiAgICAgICAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgYXBwZWFyRnJvbUNsYXNzKTtcclxuICAgICAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBhcHBlYXJBY3RpdmVDbGFzcyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvbkVudGVyOiBtYWtlRW50ZXJIb29rKGZhbHNlKSxcclxuICAgICAgICBvbkFwcGVhcjogbWFrZUVudGVySG9vayh0cnVlKSxcclxuICAgICAgICBvbkxlYXZlKGVsLCBkb25lKSB7XHJcbiAgICAgICAgICAgIGVsLl9pc0xlYXZpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICBjb25zdCByZXNvbHZlID0gKCkgPT4gZmluaXNoTGVhdmUoZWwsIGRvbmUpO1xyXG4gICAgICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlRnJvbUNsYXNzKTtcclxuICAgICAgICAgICAgLy8gZm9yY2UgcmVmbG93IHNvICotbGVhdmUtZnJvbSBjbGFzc2VzIGltbWVkaWF0ZWx5IHRha2UgZWZmZWN0ICgjMjU5MylcclxuICAgICAgICAgICAgZm9yY2VSZWZsb3coKTtcclxuICAgICAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUFjdGl2ZUNsYXNzKTtcclxuICAgICAgICAgICAgbmV4dEZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghZWwuX2lzTGVhdmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNhbmNlbGxlZFxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVGcm9tQ2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZVRvQ2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFoYXNFeHBsaWNpdENhbGxiYWNrKG9uTGVhdmUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2hlblRyYW5zaXRpb25FbmRzKGVsLCB0eXBlLCBsZWF2ZUR1cmF0aW9uLCByZXNvbHZlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNhbGxIb29rKG9uTGVhdmUsIFtlbCwgcmVzb2x2ZV0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25FbnRlckNhbmNlbGxlZChlbCkge1xyXG4gICAgICAgICAgICBmaW5pc2hFbnRlcihlbCwgZmFsc2UpO1xyXG4gICAgICAgICAgICBjYWxsSG9vayhvbkVudGVyQ2FuY2VsbGVkLCBbZWxdKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQXBwZWFyQ2FuY2VsbGVkKGVsKSB7XHJcbiAgICAgICAgICAgIGZpbmlzaEVudGVyKGVsLCB0cnVlKTtcclxuICAgICAgICAgICAgY2FsbEhvb2sob25BcHBlYXJDYW5jZWxsZWQsIFtlbF0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25MZWF2ZUNhbmNlbGxlZChlbCkge1xyXG4gICAgICAgICAgICBmaW5pc2hMZWF2ZShlbCk7XHJcbiAgICAgICAgICAgIGNhbGxIb29rKG9uTGVhdmVDYW5jZWxsZWQsIFtlbF0pO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZUR1cmF0aW9uKGR1cmF0aW9uKSB7XHJcbiAgICBpZiAoZHVyYXRpb24gPT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNPYmplY3QoZHVyYXRpb24pKSB7XHJcbiAgICAgICAgcmV0dXJuIFtOdW1iZXJPZihkdXJhdGlvbi5lbnRlciksIE51bWJlck9mKGR1cmF0aW9uLmxlYXZlKV07XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBuID0gTnVtYmVyT2YoZHVyYXRpb24pO1xyXG4gICAgICAgIHJldHVybiBbbiwgbl07XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gTnVtYmVyT2YodmFsKSB7XHJcbiAgICBjb25zdCByZXMgPSB0b051bWJlcih2YWwpO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSlcclxuICAgICAgICB2YWxpZGF0ZUR1cmF0aW9uKHJlcyk7XHJcbiAgICByZXR1cm4gcmVzO1xyXG59XHJcbmZ1bmN0aW9uIHZhbGlkYXRlRHVyYXRpb24odmFsKSB7XHJcbiAgICBpZiAodHlwZW9mIHZhbCAhPT0gJ251bWJlcicpIHtcclxuICAgICAgICB3YXJuKGA8dHJhbnNpdGlvbj4gZXhwbGljaXQgZHVyYXRpb24gaXMgbm90IGEgdmFsaWQgbnVtYmVyIC0gYCArXHJcbiAgICAgICAgICAgIGBnb3QgJHtKU09OLnN0cmluZ2lmeSh2YWwpfS5gKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzTmFOKHZhbCkpIHtcclxuICAgICAgICB3YXJuKGA8dHJhbnNpdGlvbj4gZXhwbGljaXQgZHVyYXRpb24gaXMgTmFOIC0gYCArXHJcbiAgICAgICAgICAgICd0aGUgZHVyYXRpb24gZXhwcmVzc2lvbiBtaWdodCBiZSBpbmNvcnJlY3QuJyk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBjbHMpIHtcclxuICAgIGNscy5zcGxpdCgvXFxzKy8pLmZvckVhY2goYyA9PiBjICYmIGVsLmNsYXNzTGlzdC5hZGQoYykpO1xyXG4gICAgKGVsLl92dGMgfHxcclxuICAgICAgICAoZWwuX3Z0YyA9IG5ldyBTZXQoKSkpLmFkZChjbHMpO1xyXG59XHJcbmZ1bmN0aW9uIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgY2xzKSB7XHJcbiAgICBjbHMuc3BsaXQoL1xccysvKS5mb3JFYWNoKGMgPT4gYyAmJiBlbC5jbGFzc0xpc3QucmVtb3ZlKGMpKTtcclxuICAgIGNvbnN0IHsgX3Z0YyB9ID0gZWw7XHJcbiAgICBpZiAoX3Z0Yykge1xyXG4gICAgICAgIF92dGMuZGVsZXRlKGNscyk7XHJcbiAgICAgICAgaWYgKCFfdnRjLnNpemUpIHtcclxuICAgICAgICAgICAgZWwuX3Z0YyA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gbmV4dEZyYW1lKGNiKSB7XHJcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShjYik7XHJcbiAgICB9KTtcclxufVxyXG5sZXQgZW5kSWQgPSAwO1xyXG5mdW5jdGlvbiB3aGVuVHJhbnNpdGlvbkVuZHMoZWwsIGV4cGVjdGVkVHlwZSwgZXhwbGljaXRUaW1lb3V0LCByZXNvbHZlKSB7XHJcbiAgICBjb25zdCBpZCA9IChlbC5fZW5kSWQgPSArK2VuZElkKTtcclxuICAgIGNvbnN0IHJlc29sdmVJZk5vdFN0YWxlID0gKCkgPT4ge1xyXG4gICAgICAgIGlmIChpZCA9PT0gZWwuX2VuZElkKSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgaWYgKGV4cGxpY2l0VGltZW91dCkge1xyXG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KHJlc29sdmVJZk5vdFN0YWxlLCBleHBsaWNpdFRpbWVvdXQpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyB0eXBlLCB0aW1lb3V0LCBwcm9wQ291bnQgfSA9IGdldFRyYW5zaXRpb25JbmZvKGVsLCBleHBlY3RlZFR5cGUpO1xyXG4gICAgaWYgKCF0eXBlKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGVuZEV2ZW50ID0gdHlwZSArICdlbmQnO1xyXG4gICAgbGV0IGVuZGVkID0gMDtcclxuICAgIGNvbnN0IGVuZCA9ICgpID0+IHtcclxuICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKGVuZEV2ZW50LCBvbkVuZCk7XHJcbiAgICAgICAgcmVzb2x2ZUlmTm90U3RhbGUoKTtcclxuICAgIH07XHJcbiAgICBjb25zdCBvbkVuZCA9IChlKSA9PiB7XHJcbiAgICAgICAgaWYgKGUudGFyZ2V0ID09PSBlbCAmJiArK2VuZGVkID49IHByb3BDb3VudCkge1xyXG4gICAgICAgICAgICBlbmQoKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKGVuZGVkIDwgcHJvcENvdW50KSB7XHJcbiAgICAgICAgICAgIGVuZCgpO1xyXG4gICAgICAgIH1cclxuICAgIH0sIHRpbWVvdXQgKyAxKTtcclxuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoZW5kRXZlbnQsIG9uRW5kKTtcclxufVxyXG5mdW5jdGlvbiBnZXRUcmFuc2l0aW9uSW5mbyhlbCwgZXhwZWN0ZWRUeXBlKSB7XHJcbiAgICBjb25zdCBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCk7XHJcbiAgICAvLyBKU0RPTSBtYXkgcmV0dXJuIHVuZGVmaW5lZCBmb3IgdHJhbnNpdGlvbiBwcm9wZXJ0aWVzXHJcbiAgICBjb25zdCBnZXRTdHlsZVByb3BlcnRpZXMgPSAoa2V5KSA9PiAoc3R5bGVzW2tleV0gfHwgJycpLnNwbGl0KCcsICcpO1xyXG4gICAgY29uc3QgdHJhbnNpdGlvbkRlbGF5cyA9IGdldFN0eWxlUHJvcGVydGllcyhUUkFOU0lUSU9OICsgJ0RlbGF5Jyk7XHJcbiAgICBjb25zdCB0cmFuc2l0aW9uRHVyYXRpb25zID0gZ2V0U3R5bGVQcm9wZXJ0aWVzKFRSQU5TSVRJT04gKyAnRHVyYXRpb24nKTtcclxuICAgIGNvbnN0IHRyYW5zaXRpb25UaW1lb3V0ID0gZ2V0VGltZW91dCh0cmFuc2l0aW9uRGVsYXlzLCB0cmFuc2l0aW9uRHVyYXRpb25zKTtcclxuICAgIGNvbnN0IGFuaW1hdGlvbkRlbGF5cyA9IGdldFN0eWxlUHJvcGVydGllcyhBTklNQVRJT04gKyAnRGVsYXknKTtcclxuICAgIGNvbnN0IGFuaW1hdGlvbkR1cmF0aW9ucyA9IGdldFN0eWxlUHJvcGVydGllcyhBTklNQVRJT04gKyAnRHVyYXRpb24nKTtcclxuICAgIGNvbnN0IGFuaW1hdGlvblRpbWVvdXQgPSBnZXRUaW1lb3V0KGFuaW1hdGlvbkRlbGF5cywgYW5pbWF0aW9uRHVyYXRpb25zKTtcclxuICAgIGxldCB0eXBlID0gbnVsbDtcclxuICAgIGxldCB0aW1lb3V0ID0gMDtcclxuICAgIGxldCBwcm9wQ291bnQgPSAwO1xyXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXHJcbiAgICBpZiAoZXhwZWN0ZWRUeXBlID09PSBUUkFOU0lUSU9OKSB7XHJcbiAgICAgICAgaWYgKHRyYW5zaXRpb25UaW1lb3V0ID4gMCkge1xyXG4gICAgICAgICAgICB0eXBlID0gVFJBTlNJVElPTjtcclxuICAgICAgICAgICAgdGltZW91dCA9IHRyYW5zaXRpb25UaW1lb3V0O1xyXG4gICAgICAgICAgICBwcm9wQ291bnQgPSB0cmFuc2l0aW9uRHVyYXRpb25zLmxlbmd0aDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09IEFOSU1BVElPTikge1xyXG4gICAgICAgIGlmIChhbmltYXRpb25UaW1lb3V0ID4gMCkge1xyXG4gICAgICAgICAgICB0eXBlID0gQU5JTUFUSU9OO1xyXG4gICAgICAgICAgICB0aW1lb3V0ID0gYW5pbWF0aW9uVGltZW91dDtcclxuICAgICAgICAgICAgcHJvcENvdW50ID0gYW5pbWF0aW9uRHVyYXRpb25zLmxlbmd0aDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICB0aW1lb3V0ID0gTWF0aC5tYXgodHJhbnNpdGlvblRpbWVvdXQsIGFuaW1hdGlvblRpbWVvdXQpO1xyXG4gICAgICAgIHR5cGUgPVxyXG4gICAgICAgICAgICB0aW1lb3V0ID4gMFxyXG4gICAgICAgICAgICAgICAgPyB0cmFuc2l0aW9uVGltZW91dCA+IGFuaW1hdGlvblRpbWVvdXRcclxuICAgICAgICAgICAgICAgICAgICA/IFRSQU5TSVRJT05cclxuICAgICAgICAgICAgICAgICAgICA6IEFOSU1BVElPTlxyXG4gICAgICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgIHByb3BDb3VudCA9IHR5cGVcclxuICAgICAgICAgICAgPyB0eXBlID09PSBUUkFOU0lUSU9OXHJcbiAgICAgICAgICAgICAgICA/IHRyYW5zaXRpb25EdXJhdGlvbnMubGVuZ3RoXHJcbiAgICAgICAgICAgICAgICA6IGFuaW1hdGlvbkR1cmF0aW9ucy5sZW5ndGhcclxuICAgICAgICAgICAgOiAwO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaGFzVHJhbnNmb3JtID0gdHlwZSA9PT0gVFJBTlNJVElPTiAmJlxyXG4gICAgICAgIC9cXGIodHJhbnNmb3JtfGFsbCkoLHwkKS8udGVzdChzdHlsZXNbVFJBTlNJVElPTiArICdQcm9wZXJ0eSddKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZSxcclxuICAgICAgICB0aW1lb3V0LFxyXG4gICAgICAgIHByb3BDb3VudCxcclxuICAgICAgICBoYXNUcmFuc2Zvcm1cclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gZ2V0VGltZW91dChkZWxheXMsIGR1cmF0aW9ucykge1xyXG4gICAgd2hpbGUgKGRlbGF5cy5sZW5ndGggPCBkdXJhdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgZGVsYXlzID0gZGVsYXlzLmNvbmNhdChkZWxheXMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIE1hdGgubWF4KC4uLmR1cmF0aW9ucy5tYXAoKGQsIGkpID0+IHRvTXMoZCkgKyB0b01zKGRlbGF5c1tpXSkpKTtcclxufVxyXG4vLyBPbGQgdmVyc2lvbnMgb2YgQ2hyb21pdW0gKGJlbG93IDYxLjAuMzE2My4xMDApIGZvcm1hdHMgZmxvYXRpbmcgcG9pbnRlclxyXG4vLyBudW1iZXJzIGluIGEgbG9jYWxlLWRlcGVuZGVudCB3YXksIHVzaW5nIGEgY29tbWEgaW5zdGVhZCBvZiBhIGRvdC5cclxuLy8gSWYgY29tbWEgaXMgbm90IHJlcGxhY2VkIHdpdGggYSBkb3QsIHRoZSBpbnB1dCB3aWxsIGJlIHJvdW5kZWQgZG93blxyXG4vLyAoaS5lLiBhY3RpbmcgYXMgYSBmbG9vciBmdW5jdGlvbikgY2F1c2luZyB1bmV4cGVjdGVkIGJlaGF2aW9yc1xyXG5mdW5jdGlvbiB0b01zKHMpIHtcclxuICAgIHJldHVybiBOdW1iZXIocy5zbGljZSgwLCAtMSkucmVwbGFjZSgnLCcsICcuJykpICogMTAwMDtcclxufVxyXG4vLyBzeW5jaHJvbm91c2x5IGZvcmNlIGxheW91dCB0byBwdXQgZWxlbWVudHMgaW50byBhIGNlcnRhaW4gc3RhdGVcclxuZnVuY3Rpb24gZm9yY2VSZWZsb3coKSB7XHJcbiAgICByZXR1cm4gZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7XHJcbn1cblxuY29uc3QgcG9zaXRpb25NYXAgPSBuZXcgV2Vha01hcCgpO1xyXG5jb25zdCBuZXdQb3NpdGlvbk1hcCA9IG5ldyBXZWFrTWFwKCk7XHJcbmNvbnN0IFRyYW5zaXRpb25Hcm91cEltcGwgPSB7XHJcbiAgICBuYW1lOiAnVHJhbnNpdGlvbkdyb3VwJyxcclxuICAgIHByb3BzOiAvKiNfX1BVUkVfXyovIGV4dGVuZCh7fSwgVHJhbnNpdGlvblByb3BzVmFsaWRhdG9ycywge1xyXG4gICAgICAgIHRhZzogU3RyaW5nLFxyXG4gICAgICAgIG1vdmVDbGFzczogU3RyaW5nXHJcbiAgICB9KSxcclxuICAgIHNldHVwKHByb3BzLCB7IHNsb3RzIH0pIHtcclxuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IGdldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgICAgIGNvbnN0IHN0YXRlID0gdXNlVHJhbnNpdGlvblN0YXRlKCk7XHJcbiAgICAgICAgbGV0IHByZXZDaGlsZHJlbjtcclxuICAgICAgICBsZXQgY2hpbGRyZW47XHJcbiAgICAgICAgb25VcGRhdGVkKCgpID0+IHtcclxuICAgICAgICAgICAgLy8gY2hpbGRyZW4gaXMgZ3VhcmFudGVlZCB0byBleGlzdCBhZnRlciBpbml0aWFsIHJlbmRlclxyXG4gICAgICAgICAgICBpZiAoIXByZXZDaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBtb3ZlQ2xhc3MgPSBwcm9wcy5tb3ZlQ2xhc3MgfHwgYCR7cHJvcHMubmFtZSB8fCAndid9LW1vdmVgO1xyXG4gICAgICAgICAgICBpZiAoIWhhc0NTU1RyYW5zZm9ybShwcmV2Q2hpbGRyZW5bMF0uZWwsIGluc3RhbmNlLnZub2RlLmVsLCBtb3ZlQ2xhc3MpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gd2UgZGl2aWRlIHRoZSB3b3JrIGludG8gdGhyZWUgbG9vcHMgdG8gYXZvaWQgbWl4aW5nIERPTSByZWFkcyBhbmQgd3JpdGVzXHJcbiAgICAgICAgICAgIC8vIGluIGVhY2ggaXRlcmF0aW9uIC0gd2hpY2ggaGVscHMgcHJldmVudCBsYXlvdXQgdGhyYXNoaW5nLlxyXG4gICAgICAgICAgICBwcmV2Q2hpbGRyZW4uZm9yRWFjaChjYWxsUGVuZGluZ0Nicyk7XHJcbiAgICAgICAgICAgIHByZXZDaGlsZHJlbi5mb3JFYWNoKHJlY29yZFBvc2l0aW9uKTtcclxuICAgICAgICAgICAgY29uc3QgbW92ZWRDaGlsZHJlbiA9IHByZXZDaGlsZHJlbi5maWx0ZXIoYXBwbHlUcmFuc2xhdGlvbik7XHJcbiAgICAgICAgICAgIC8vIGZvcmNlIHJlZmxvdyB0byBwdXQgZXZlcnl0aGluZyBpbiBwb3NpdGlvblxyXG4gICAgICAgICAgICBmb3JjZVJlZmxvdygpO1xyXG4gICAgICAgICAgICBtb3ZlZENoaWxkcmVuLmZvckVhY2goYyA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlbCA9IGMuZWw7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdHlsZSA9IGVsLnN0eWxlO1xyXG4gICAgICAgICAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBtb3ZlQ2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgc3R5bGUudHJhbnNmb3JtID0gc3R5bGUud2Via2l0VHJhbnNmb3JtID0gc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gJyc7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjYiA9IChlbC5fbW92ZUNiID0gKGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZSAmJiBlLnRhcmdldCAhPT0gZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWUgfHwgL3RyYW5zZm9ybSQvLnRlc3QoZS5wcm9wZXJ0eU5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBjYik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsLl9tb3ZlQ2IgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIG1vdmVDbGFzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgY2IpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCByYXdQcm9wcyA9IHRvUmF3KHByb3BzKTtcclxuICAgICAgICAgICAgY29uc3QgY3NzVHJhbnNpdGlvblByb3BzID0gcmVzb2x2ZVRyYW5zaXRpb25Qcm9wcyhyYXdQcm9wcyk7XHJcbiAgICAgICAgICAgIGxldCB0YWcgPSByYXdQcm9wcy50YWcgfHwgRnJhZ21lbnQ7XHJcbiAgICAgICAgICAgIHByZXZDaGlsZHJlbiA9IGNoaWxkcmVuO1xyXG4gICAgICAgICAgICBjaGlsZHJlbiA9IHNsb3RzLmRlZmF1bHQgPyBnZXRUcmFuc2l0aW9uUmF3Q2hpbGRyZW4oc2xvdHMuZGVmYXVsdCgpKSA6IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkLmtleSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VHJhbnNpdGlvbkhvb2tzKGNoaWxkLCByZXNvbHZlVHJhbnNpdGlvbkhvb2tzKGNoaWxkLCBjc3NUcmFuc2l0aW9uUHJvcHMsIHN0YXRlLCBpbnN0YW5jZSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgPFRyYW5zaXRpb25Hcm91cD4gY2hpbGRyZW4gbXVzdCBiZSBrZXllZC5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocHJldkNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZXZDaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gcHJldkNoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRyYW5zaXRpb25Ib29rcyhjaGlsZCwgcmVzb2x2ZVRyYW5zaXRpb25Ib29rcyhjaGlsZCwgY3NzVHJhbnNpdGlvblByb3BzLCBzdGF0ZSwgaW5zdGFuY2UpKTtcclxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbk1hcC5zZXQoY2hpbGQsIGNoaWxkLmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlVk5vZGUodGFnLCBudWxsLCBjaGlsZHJlbik7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufTtcclxuY29uc3QgVHJhbnNpdGlvbkdyb3VwID0gVHJhbnNpdGlvbkdyb3VwSW1wbDtcclxuZnVuY3Rpb24gY2FsbFBlbmRpbmdDYnMoYykge1xyXG4gICAgY29uc3QgZWwgPSBjLmVsO1xyXG4gICAgaWYgKGVsLl9tb3ZlQ2IpIHtcclxuICAgICAgICBlbC5fbW92ZUNiKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoZWwuX2VudGVyQ2IpIHtcclxuICAgICAgICBlbC5fZW50ZXJDYigpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHJlY29yZFBvc2l0aW9uKGMpIHtcclxuICAgIG5ld1Bvc2l0aW9uTWFwLnNldChjLCBjLmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcclxufVxyXG5mdW5jdGlvbiBhcHBseVRyYW5zbGF0aW9uKGMpIHtcclxuICAgIGNvbnN0IG9sZFBvcyA9IHBvc2l0aW9uTWFwLmdldChjKTtcclxuICAgIGNvbnN0IG5ld1BvcyA9IG5ld1Bvc2l0aW9uTWFwLmdldChjKTtcclxuICAgIGNvbnN0IGR4ID0gb2xkUG9zLmxlZnQgLSBuZXdQb3MubGVmdDtcclxuICAgIGNvbnN0IGR5ID0gb2xkUG9zLnRvcCAtIG5ld1Bvcy50b3A7XHJcbiAgICBpZiAoZHggfHwgZHkpIHtcclxuICAgICAgICBjb25zdCBzID0gYy5lbC5zdHlsZTtcclxuICAgICAgICBzLnRyYW5zZm9ybSA9IHMud2Via2l0VHJhbnNmb3JtID0gYHRyYW5zbGF0ZSgke2R4fXB4LCR7ZHl9cHgpYDtcclxuICAgICAgICBzLnRyYW5zaXRpb25EdXJhdGlvbiA9ICcwcyc7XHJcbiAgICAgICAgcmV0dXJuIGM7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaGFzQ1NTVHJhbnNmb3JtKGVsLCByb290LCBtb3ZlQ2xhc3MpIHtcclxuICAgIC8vIERldGVjdCB3aGV0aGVyIGFuIGVsZW1lbnQgd2l0aCB0aGUgbW92ZSBjbGFzcyBhcHBsaWVkIGhhc1xyXG4gICAgLy8gQ1NTIHRyYW5zaXRpb25zLiBTaW5jZSB0aGUgZWxlbWVudCBtYXkgYmUgaW5zaWRlIGFuIGVudGVyaW5nXHJcbiAgICAvLyB0cmFuc2l0aW9uIGF0IHRoaXMgdmVyeSBtb21lbnQsIHdlIG1ha2UgYSBjbG9uZSBvZiBpdCBhbmQgcmVtb3ZlXHJcbiAgICAvLyBhbGwgb3RoZXIgdHJhbnNpdGlvbiBjbGFzc2VzIGFwcGxpZWQgdG8gZW5zdXJlIG9ubHkgdGhlIG1vdmUgY2xhc3NcclxuICAgIC8vIGlzIGFwcGxpZWQuXHJcbiAgICBjb25zdCBjbG9uZSA9IGVsLmNsb25lTm9kZSgpO1xyXG4gICAgaWYgKGVsLl92dGMpIHtcclxuICAgICAgICBlbC5fdnRjLmZvckVhY2goY2xzID0+IHtcclxuICAgICAgICAgICAgY2xzLnNwbGl0KC9cXHMrLykuZm9yRWFjaChjID0+IGMgJiYgY2xvbmUuY2xhc3NMaXN0LnJlbW92ZShjKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBtb3ZlQ2xhc3Muc3BsaXQoL1xccysvKS5mb3JFYWNoKGMgPT4gYyAmJiBjbG9uZS5jbGFzc0xpc3QuYWRkKGMpKTtcclxuICAgIGNsb25lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICBjb25zdCBjb250YWluZXIgPSAocm9vdC5ub2RlVHlwZSA9PT0gMSA/IHJvb3QgOiByb290LnBhcmVudE5vZGUpO1xyXG4gICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGNsb25lKTtcclxuICAgIGNvbnN0IHsgaGFzVHJhbnNmb3JtIH0gPSBnZXRUcmFuc2l0aW9uSW5mbyhjbG9uZSk7XHJcbiAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQoY2xvbmUpO1xyXG4gICAgcmV0dXJuIGhhc1RyYW5zZm9ybTtcclxufVxuXG5jb25zdCBnZXRNb2RlbEFzc2lnbmVyID0gKHZub2RlKSA9PiB7XHJcbiAgICBjb25zdCBmbiA9IHZub2RlLnByb3BzWydvblVwZGF0ZTptb2RlbFZhbHVlJ10gfHxcclxuICAgICAgICAoZmFsc2UgKTtcclxuICAgIHJldHVybiBpc0FycmF5KGZuKSA/IHZhbHVlID0+IGludm9rZUFycmF5Rm5zKGZuLCB2YWx1ZSkgOiBmbjtcclxufTtcclxuZnVuY3Rpb24gb25Db21wb3NpdGlvblN0YXJ0KGUpIHtcclxuICAgIGUudGFyZ2V0LmNvbXBvc2luZyA9IHRydWU7XHJcbn1cclxuZnVuY3Rpb24gb25Db21wb3NpdGlvbkVuZChlKSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldDtcclxuICAgIGlmICh0YXJnZXQuY29tcG9zaW5nKSB7XHJcbiAgICAgICAgdGFyZ2V0LmNvbXBvc2luZyA9IGZhbHNlO1xyXG4gICAgICAgIHRhcmdldC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnKSk7XHJcbiAgICB9XHJcbn1cclxuLy8gV2UgYXJlIGV4cG9ydGluZyB0aGUgdi1tb2RlbCBydW50aW1lIGRpcmVjdGx5IGFzIHZub2RlIGhvb2tzIHNvIHRoYXQgaXQgY2FuXHJcbi8vIGJlIHRyZWUtc2hha2VuIGluIGNhc2Ugdi1tb2RlbCBpcyBuZXZlciB1c2VkLlxyXG5jb25zdCB2TW9kZWxUZXh0ID0ge1xyXG4gICAgY3JlYXRlZChlbCwgeyBtb2RpZmllcnM6IHsgbGF6eSwgdHJpbSwgbnVtYmVyIH0gfSwgdm5vZGUpIHtcclxuICAgICAgICBlbC5fYXNzaWduID0gZ2V0TW9kZWxBc3NpZ25lcih2bm9kZSk7XHJcbiAgICAgICAgY29uc3QgY2FzdFRvTnVtYmVyID0gbnVtYmVyIHx8ICh2bm9kZS5wcm9wcyAmJiB2bm9kZS5wcm9wcy50eXBlID09PSAnbnVtYmVyJyk7XHJcbiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcihlbCwgbGF6eSA/ICdjaGFuZ2UnIDogJ2lucHV0JywgZSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlLnRhcmdldC5jb21wb3NpbmcpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIGxldCBkb21WYWx1ZSA9IGVsLnZhbHVlO1xyXG4gICAgICAgICAgICBpZiAodHJpbSkge1xyXG4gICAgICAgICAgICAgICAgZG9tVmFsdWUgPSBkb21WYWx1ZS50cmltKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNhc3RUb051bWJlcikge1xyXG4gICAgICAgICAgICAgICAgZG9tVmFsdWUgPSB0b051bWJlcihkb21WYWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWwuX2Fzc2lnbihkb21WYWx1ZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKHRyaW0pIHtcclxuICAgICAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcihlbCwgJ2NoYW5nZScsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGVsLnZhbHVlID0gZWwudmFsdWUudHJpbSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFsYXp5KSB7XHJcbiAgICAgICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoZWwsICdjb21wb3NpdGlvbnN0YXJ0Jywgb25Db21wb3NpdGlvblN0YXJ0KTtcclxuICAgICAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcihlbCwgJ2NvbXBvc2l0aW9uZW5kJywgb25Db21wb3NpdGlvbkVuZCk7XHJcbiAgICAgICAgICAgIC8vIFNhZmFyaSA8IDEwLjIgJiBVSVdlYlZpZXcgZG9lc24ndCBmaXJlIGNvbXBvc2l0aW9uZW5kIHdoZW5cclxuICAgICAgICAgICAgLy8gc3dpdGNoaW5nIGZvY3VzIGJlZm9yZSBjb25maXJtaW5nIGNvbXBvc2l0aW9uIGNob2ljZVxyXG4gICAgICAgICAgICAvLyB0aGlzIGFsc28gZml4ZXMgdGhlIGlzc3VlIHdoZXJlIHNvbWUgYnJvd3NlcnMgZS5nLiBpT1MgQ2hyb21lXHJcbiAgICAgICAgICAgIC8vIGZpcmVzIFwiY2hhbmdlXCIgaW5zdGVhZCBvZiBcImlucHV0XCIgb24gYXV0b2NvbXBsZXRlLlxyXG4gICAgICAgICAgICBhZGRFdmVudExpc3RlbmVyKGVsLCAnY2hhbmdlJywgb25Db21wb3NpdGlvbkVuZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8vIHNldCB2YWx1ZSBvbiBtb3VudGVkIHNvIGl0J3MgYWZ0ZXIgbWluL21heCBmb3IgdHlwZT1cInJhbmdlXCJcclxuICAgIG1vdW50ZWQoZWwsIHsgdmFsdWUgfSkge1xyXG4gICAgICAgIGVsLnZhbHVlID0gdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWU7XHJcbiAgICB9LFxyXG4gICAgYmVmb3JlVXBkYXRlKGVsLCB7IHZhbHVlLCBtb2RpZmllcnM6IHsgbGF6eSwgdHJpbSwgbnVtYmVyIH0gfSwgdm5vZGUpIHtcclxuICAgICAgICBlbC5fYXNzaWduID0gZ2V0TW9kZWxBc3NpZ25lcih2bm9kZSk7XHJcbiAgICAgICAgLy8gYXZvaWQgY2xlYXJpbmcgdW5yZXNvbHZlZCB0ZXh0LiAjMjMwMlxyXG4gICAgICAgIGlmIChlbC5jb21wb3NpbmcpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gZWwgJiYgZWwudHlwZSAhPT0gJ3JhbmdlJykge1xyXG4gICAgICAgICAgICBpZiAobGF6eSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0cmltICYmIGVsLnZhbHVlLnRyaW0oKSA9PT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKG51bWJlciB8fCBlbC50eXBlID09PSAnbnVtYmVyJykgJiYgdG9OdW1iZXIoZWwudmFsdWUpID09PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWU7XHJcbiAgICAgICAgaWYgKGVsLnZhbHVlICE9PSBuZXdWYWx1ZSkge1xyXG4gICAgICAgICAgICBlbC52YWx1ZSA9IG5ld1ZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuY29uc3Qgdk1vZGVsQ2hlY2tib3ggPSB7XHJcbiAgICAvLyAjNDA5NiBhcnJheSBjaGVja2JveGVzIG5lZWQgdG8gYmUgZGVlcCB0cmF2ZXJzZWRcclxuICAgIGRlZXA6IHRydWUsXHJcbiAgICBjcmVhdGVkKGVsLCBfLCB2bm9kZSkge1xyXG4gICAgICAgIGVsLl9hc3NpZ24gPSBnZXRNb2RlbEFzc2lnbmVyKHZub2RlKTtcclxuICAgICAgICBhZGRFdmVudExpc3RlbmVyKGVsLCAnY2hhbmdlJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtb2RlbFZhbHVlID0gZWwuX21vZGVsVmFsdWU7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRWYWx1ZSA9IGdldFZhbHVlKGVsKTtcclxuICAgICAgICAgICAgY29uc3QgY2hlY2tlZCA9IGVsLmNoZWNrZWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGFzc2lnbiA9IGVsLl9hc3NpZ247XHJcbiAgICAgICAgICAgIGlmIChpc0FycmF5KG1vZGVsVmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGxvb3NlSW5kZXhPZihtb2RlbFZhbHVlLCBlbGVtZW50VmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZm91bmQgPSBpbmRleCAhPT0gLTE7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hlY2tlZCAmJiAhZm91bmQpIHtcclxuICAgICAgICAgICAgICAgICAgICBhc3NpZ24obW9kZWxWYWx1ZS5jb25jYXQoZWxlbWVudFZhbHVlKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICghY2hlY2tlZCAmJiBmb3VuZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkID0gWy4uLm1vZGVsVmFsdWVdO1xyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYXNzaWduKGZpbHRlcmVkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChpc1NldChtb2RlbFZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvbmVkID0gbmV3IFNldChtb2RlbFZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGlmIChjaGVja2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xvbmVkLmFkZChlbGVtZW50VmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xvbmVkLmRlbGV0ZShlbGVtZW50VmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYXNzaWduKGNsb25lZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBhc3NpZ24oZ2V0Q2hlY2tib3hWYWx1ZShlbCwgY2hlY2tlZCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9LFxyXG4gICAgLy8gc2V0IGluaXRpYWwgY2hlY2tlZCBvbiBtb3VudCB0byB3YWl0IGZvciB0cnVlLXZhbHVlL2ZhbHNlLXZhbHVlXHJcbiAgICBtb3VudGVkOiBzZXRDaGVja2VkLFxyXG4gICAgYmVmb3JlVXBkYXRlKGVsLCBiaW5kaW5nLCB2bm9kZSkge1xyXG4gICAgICAgIGVsLl9hc3NpZ24gPSBnZXRNb2RlbEFzc2lnbmVyKHZub2RlKTtcclxuICAgICAgICBzZXRDaGVja2VkKGVsLCBiaW5kaW5nLCB2bm9kZSk7XHJcbiAgICB9XHJcbn07XHJcbmZ1bmN0aW9uIHNldENoZWNrZWQoZWwsIHsgdmFsdWUsIG9sZFZhbHVlIH0sIHZub2RlKSB7XHJcbiAgICBlbC5fbW9kZWxWYWx1ZSA9IHZhbHVlO1xyXG4gICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgZWwuY2hlY2tlZCA9IGxvb3NlSW5kZXhPZih2YWx1ZSwgdm5vZGUucHJvcHMudmFsdWUpID4gLTE7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc1NldCh2YWx1ZSkpIHtcclxuICAgICAgICBlbC5jaGVja2VkID0gdmFsdWUuaGFzKHZub2RlLnByb3BzLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHZhbHVlICE9PSBvbGRWYWx1ZSkge1xyXG4gICAgICAgIGVsLmNoZWNrZWQgPSBsb29zZUVxdWFsKHZhbHVlLCBnZXRDaGVja2JveFZhbHVlKGVsLCB0cnVlKSk7XHJcbiAgICB9XHJcbn1cclxuY29uc3Qgdk1vZGVsUmFkaW8gPSB7XHJcbiAgICBjcmVhdGVkKGVsLCB7IHZhbHVlIH0sIHZub2RlKSB7XHJcbiAgICAgICAgZWwuY2hlY2tlZCA9IGxvb3NlRXF1YWwodmFsdWUsIHZub2RlLnByb3BzLnZhbHVlKTtcclxuICAgICAgICBlbC5fYXNzaWduID0gZ2V0TW9kZWxBc3NpZ25lcih2bm9kZSk7XHJcbiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcihlbCwgJ2NoYW5nZScsICgpID0+IHtcclxuICAgICAgICAgICAgZWwuX2Fzc2lnbihnZXRWYWx1ZShlbCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSxcclxuICAgIGJlZm9yZVVwZGF0ZShlbCwgeyB2YWx1ZSwgb2xkVmFsdWUgfSwgdm5vZGUpIHtcclxuICAgICAgICBlbC5fYXNzaWduID0gZ2V0TW9kZWxBc3NpZ25lcih2bm9kZSk7XHJcbiAgICAgICAgaWYgKHZhbHVlICE9PSBvbGRWYWx1ZSkge1xyXG4gICAgICAgICAgICBlbC5jaGVja2VkID0gbG9vc2VFcXVhbCh2YWx1ZSwgdm5vZGUucHJvcHMudmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuY29uc3Qgdk1vZGVsU2VsZWN0ID0ge1xyXG4gICAgLy8gPHNlbGVjdCBtdWx0aXBsZT4gdmFsdWUgbmVlZCB0byBiZSBkZWVwIHRyYXZlcnNlZFxyXG4gICAgZGVlcDogdHJ1ZSxcclxuICAgIGNyZWF0ZWQoZWwsIHsgdmFsdWUsIG1vZGlmaWVyczogeyBudW1iZXIgfSB9LCB2bm9kZSkge1xyXG4gICAgICAgIGNvbnN0IGlzU2V0TW9kZWwgPSBpc1NldCh2YWx1ZSk7XHJcbiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcihlbCwgJ2NoYW5nZScsICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRWYWwgPSBBcnJheS5wcm90b3R5cGUuZmlsdGVyXHJcbiAgICAgICAgICAgICAgICAuY2FsbChlbC5vcHRpb25zLCAobykgPT4gby5zZWxlY3RlZClcclxuICAgICAgICAgICAgICAgIC5tYXAoKG8pID0+IG51bWJlciA/IHRvTnVtYmVyKGdldFZhbHVlKG8pKSA6IGdldFZhbHVlKG8pKTtcclxuICAgICAgICAgICAgZWwuX2Fzc2lnbihlbC5tdWx0aXBsZVxyXG4gICAgICAgICAgICAgICAgPyBpc1NldE1vZGVsXHJcbiAgICAgICAgICAgICAgICAgICAgPyBuZXcgU2V0KHNlbGVjdGVkVmFsKVxyXG4gICAgICAgICAgICAgICAgICAgIDogc2VsZWN0ZWRWYWxcclxuICAgICAgICAgICAgICAgIDogc2VsZWN0ZWRWYWxbMF0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGVsLl9hc3NpZ24gPSBnZXRNb2RlbEFzc2lnbmVyKHZub2RlKTtcclxuICAgIH0sXHJcbiAgICAvLyBzZXQgdmFsdWUgaW4gbW91bnRlZCAmIHVwZGF0ZWQgYmVjYXVzZSA8c2VsZWN0PiByZWxpZXMgb24gaXRzIGNoaWxkcmVuXHJcbiAgICAvLyA8b3B0aW9uPnMuXHJcbiAgICBtb3VudGVkKGVsLCB7IHZhbHVlIH0pIHtcclxuICAgICAgICBzZXRTZWxlY3RlZChlbCwgdmFsdWUpO1xyXG4gICAgfSxcclxuICAgIGJlZm9yZVVwZGF0ZShlbCwgX2JpbmRpbmcsIHZub2RlKSB7XHJcbiAgICAgICAgZWwuX2Fzc2lnbiA9IGdldE1vZGVsQXNzaWduZXIodm5vZGUpO1xyXG4gICAgfSxcclxuICAgIHVwZGF0ZWQoZWwsIHsgdmFsdWUgfSkge1xyXG4gICAgICAgIHNldFNlbGVjdGVkKGVsLCB2YWx1ZSk7XHJcbiAgICB9XHJcbn07XHJcbmZ1bmN0aW9uIHNldFNlbGVjdGVkKGVsLCB2YWx1ZSkge1xyXG4gICAgY29uc3QgaXNNdWx0aXBsZSA9IGVsLm11bHRpcGxlO1xyXG4gICAgaWYgKGlzTXVsdGlwbGUgJiYgIWlzQXJyYXkodmFsdWUpICYmICFpc1NldCh2YWx1ZSkpIHtcclxuICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgd2FybihgPHNlbGVjdCBtdWx0aXBsZSB2LW1vZGVsPiBleHBlY3RzIGFuIEFycmF5IG9yIFNldCB2YWx1ZSBmb3IgaXRzIGJpbmRpbmcsIGAgK1xyXG4gICAgICAgICAgICAgICAgYGJ1dCBnb3QgJHtPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLnNsaWNlKDgsIC0xKX0uYCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBlbC5vcHRpb25zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IGVsLm9wdGlvbnNbaV07XHJcbiAgICAgICAgY29uc3Qgb3B0aW9uVmFsdWUgPSBnZXRWYWx1ZShvcHRpb24pO1xyXG4gICAgICAgIGlmIChpc011bHRpcGxlKSB7XHJcbiAgICAgICAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gbG9vc2VJbmRleE9mKHZhbHVlLCBvcHRpb25WYWx1ZSkgPiAtMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IHZhbHVlLmhhcyhvcHRpb25WYWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChsb29zZUVxdWFsKGdldFZhbHVlKG9wdGlvbiksIHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVsLnNlbGVjdGVkSW5kZXggIT09IGkpXHJcbiAgICAgICAgICAgICAgICAgICAgZWwuc2VsZWN0ZWRJbmRleCA9IGk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzTXVsdGlwbGUgJiYgZWwuc2VsZWN0ZWRJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICBlbC5zZWxlY3RlZEluZGV4ID0gLTE7XHJcbiAgICB9XHJcbn1cclxuLy8gcmV0cmlldmUgcmF3IHZhbHVlIHNldCB2aWEgOnZhbHVlIGJpbmRpbmdzXHJcbmZ1bmN0aW9uIGdldFZhbHVlKGVsKSB7XHJcbiAgICByZXR1cm4gJ192YWx1ZScgaW4gZWwgPyBlbC5fdmFsdWUgOiBlbC52YWx1ZTtcclxufVxyXG4vLyByZXRyaWV2ZSByYXcgdmFsdWUgZm9yIHRydWUtdmFsdWUgYW5kIGZhbHNlLXZhbHVlIHNldCB2aWEgOnRydWUtdmFsdWUgb3IgOmZhbHNlLXZhbHVlIGJpbmRpbmdzXHJcbmZ1bmN0aW9uIGdldENoZWNrYm94VmFsdWUoZWwsIGNoZWNrZWQpIHtcclxuICAgIGNvbnN0IGtleSA9IGNoZWNrZWQgPyAnX3RydWVWYWx1ZScgOiAnX2ZhbHNlVmFsdWUnO1xyXG4gICAgcmV0dXJuIGtleSBpbiBlbCA/IGVsW2tleV0gOiBjaGVja2VkO1xyXG59XHJcbmNvbnN0IHZNb2RlbER5bmFtaWMgPSB7XHJcbiAgICBjcmVhdGVkKGVsLCBiaW5kaW5nLCB2bm9kZSkge1xyXG4gICAgICAgIGNhbGxNb2RlbEhvb2soZWwsIGJpbmRpbmcsIHZub2RlLCBudWxsLCAnY3JlYXRlZCcpO1xyXG4gICAgfSxcclxuICAgIG1vdW50ZWQoZWwsIGJpbmRpbmcsIHZub2RlKSB7XHJcbiAgICAgICAgY2FsbE1vZGVsSG9vayhlbCwgYmluZGluZywgdm5vZGUsIG51bGwsICdtb3VudGVkJyk7XHJcbiAgICB9LFxyXG4gICAgYmVmb3JlVXBkYXRlKGVsLCBiaW5kaW5nLCB2bm9kZSwgcHJldlZOb2RlKSB7XHJcbiAgICAgICAgY2FsbE1vZGVsSG9vayhlbCwgYmluZGluZywgdm5vZGUsIHByZXZWTm9kZSwgJ2JlZm9yZVVwZGF0ZScpO1xyXG4gICAgfSxcclxuICAgIHVwZGF0ZWQoZWwsIGJpbmRpbmcsIHZub2RlLCBwcmV2Vk5vZGUpIHtcclxuICAgICAgICBjYWxsTW9kZWxIb29rKGVsLCBiaW5kaW5nLCB2bm9kZSwgcHJldlZOb2RlLCAndXBkYXRlZCcpO1xyXG4gICAgfVxyXG59O1xyXG5mdW5jdGlvbiByZXNvbHZlRHluYW1pY01vZGVsKHRhZ05hbWUsIHR5cGUpIHtcclxuICAgIHN3aXRjaCAodGFnTmFtZSkge1xyXG4gICAgICAgIGNhc2UgJ1NFTEVDVCc6XHJcbiAgICAgICAgICAgIHJldHVybiB2TW9kZWxTZWxlY3Q7XHJcbiAgICAgICAgY2FzZSAnVEVYVEFSRUEnOlxyXG4gICAgICAgICAgICByZXR1cm4gdk1vZGVsVGV4dDtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2NoZWNrYm94JzpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdk1vZGVsQ2hlY2tib3g7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdyYWRpbyc6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZNb2RlbFJhZGlvO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdk1vZGVsVGV4dDtcclxuICAgICAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGNhbGxNb2RlbEhvb2soZWwsIGJpbmRpbmcsIHZub2RlLCBwcmV2Vk5vZGUsIGhvb2spIHtcclxuICAgIGNvbnN0IG1vZGVsVG9Vc2UgPSByZXNvbHZlRHluYW1pY01vZGVsKGVsLnRhZ05hbWUsIHZub2RlLnByb3BzICYmIHZub2RlLnByb3BzLnR5cGUpO1xyXG4gICAgY29uc3QgZm4gPSBtb2RlbFRvVXNlW2hvb2tdO1xyXG4gICAgZm4gJiYgZm4oZWwsIGJpbmRpbmcsIHZub2RlLCBwcmV2Vk5vZGUpO1xyXG59XHJcbi8vIFNTUiB2bm9kZSB0cmFuc2Zvcm1zLCBvbmx5IHVzZWQgd2hlbiB1c2VyIGluY2x1ZGVzIGNsaWVudC1vcmllbnRlZCByZW5kZXJcclxuLy8gZnVuY3Rpb24gaW4gU1NSXHJcbmZ1bmN0aW9uIGluaXRWTW9kZWxGb3JTU1IoKSB7XHJcbiAgICB2TW9kZWxUZXh0LmdldFNTUlByb3BzID0gKHsgdmFsdWUgfSkgPT4gKHsgdmFsdWUgfSk7XHJcbiAgICB2TW9kZWxSYWRpby5nZXRTU1JQcm9wcyA9ICh7IHZhbHVlIH0sIHZub2RlKSA9PiB7XHJcbiAgICAgICAgaWYgKHZub2RlLnByb3BzICYmIGxvb3NlRXF1YWwodm5vZGUucHJvcHMudmFsdWUsIHZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4geyBjaGVja2VkOiB0cnVlIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHZNb2RlbENoZWNrYm94LmdldFNTUlByb3BzID0gKHsgdmFsdWUgfSwgdm5vZGUpID0+IHtcclxuICAgICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgaWYgKHZub2RlLnByb3BzICYmIGxvb3NlSW5kZXhPZih2YWx1ZSwgdm5vZGUucHJvcHMudmFsdWUpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IGNoZWNrZWQ6IHRydWUgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpc1NldCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgaWYgKHZub2RlLnByb3BzICYmIHZhbHVlLmhhcyh2bm9kZS5wcm9wcy52YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IGNoZWNrZWQ6IHRydWUgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4geyBjaGVja2VkOiB0cnVlIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHZNb2RlbER5bmFtaWMuZ2V0U1NSUHJvcHMgPSAoYmluZGluZywgdm5vZGUpID0+IHtcclxuICAgICAgICBpZiAodHlwZW9mIHZub2RlLnR5cGUgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbW9kZWxUb1VzZSA9IHJlc29sdmVEeW5hbWljTW9kZWwoXHJcbiAgICAgICAgLy8gcmVzb2x2ZUR5bmFtaWNNb2RlbCBleHBlY3RzIGFuIHVwcGVyY2FzZSB0YWcgbmFtZSwgYnV0IHZub2RlLnR5cGUgaXMgbG93ZXJjYXNlXHJcbiAgICAgICAgdm5vZGUudHlwZS50b1VwcGVyQ2FzZSgpLCB2bm9kZS5wcm9wcyAmJiB2bm9kZS5wcm9wcy50eXBlKTtcclxuICAgICAgICBpZiAobW9kZWxUb1VzZS5nZXRTU1JQcm9wcykge1xyXG4gICAgICAgICAgICByZXR1cm4gbW9kZWxUb1VzZS5nZXRTU1JQcm9wcyhiaW5kaW5nLCB2bm9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxuXG5jb25zdCBzeXN0ZW1Nb2RpZmllcnMgPSBbJ2N0cmwnLCAnc2hpZnQnLCAnYWx0JywgJ21ldGEnXTtcclxuY29uc3QgbW9kaWZpZXJHdWFyZHMgPSB7XHJcbiAgICBzdG9wOiBlID0+IGUuc3RvcFByb3BhZ2F0aW9uKCksXHJcbiAgICBwcmV2ZW50OiBlID0+IGUucHJldmVudERlZmF1bHQoKSxcclxuICAgIHNlbGY6IGUgPT4gZS50YXJnZXQgIT09IGUuY3VycmVudFRhcmdldCxcclxuICAgIGN0cmw6IGUgPT4gIWUuY3RybEtleSxcclxuICAgIHNoaWZ0OiBlID0+ICFlLnNoaWZ0S2V5LFxyXG4gICAgYWx0OiBlID0+ICFlLmFsdEtleSxcclxuICAgIG1ldGE6IGUgPT4gIWUubWV0YUtleSxcclxuICAgIGxlZnQ6IGUgPT4gJ2J1dHRvbicgaW4gZSAmJiBlLmJ1dHRvbiAhPT0gMCxcclxuICAgIG1pZGRsZTogZSA9PiAnYnV0dG9uJyBpbiBlICYmIGUuYnV0dG9uICE9PSAxLFxyXG4gICAgcmlnaHQ6IGUgPT4gJ2J1dHRvbicgaW4gZSAmJiBlLmJ1dHRvbiAhPT0gMixcclxuICAgIGV4YWN0OiAoZSwgbW9kaWZpZXJzKSA9PiBzeXN0ZW1Nb2RpZmllcnMuc29tZShtID0+IGVbYCR7bX1LZXlgXSAmJiAhbW9kaWZpZXJzLmluY2x1ZGVzKG0pKVxyXG59O1xyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmNvbnN0IHdpdGhNb2RpZmllcnMgPSAoZm4sIG1vZGlmaWVycykgPT4ge1xyXG4gICAgcmV0dXJuIChldmVudCwgLi4uYXJncykgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW9kaWZpZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGd1YXJkID0gbW9kaWZpZXJHdWFyZHNbbW9kaWZpZXJzW2ldXTtcclxuICAgICAgICAgICAgaWYgKGd1YXJkICYmIGd1YXJkKGV2ZW50LCBtb2RpZmllcnMpKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZm4oZXZlbnQsIC4uLmFyZ3MpO1xyXG4gICAgfTtcclxufTtcclxuLy8gS2VwdCBmb3IgMi54IGNvbXBhdC5cclxuLy8gTm90ZTogSUUxMSBjb21wYXQgZm9yIGBzcGFjZWJhcmAgYW5kIGBkZWxgIGlzIHJlbW92ZWQgZm9yIG5vdy5cclxuY29uc3Qga2V5TmFtZXMgPSB7XHJcbiAgICBlc2M6ICdlc2NhcGUnLFxyXG4gICAgc3BhY2U6ICcgJyxcclxuICAgIHVwOiAnYXJyb3ctdXAnLFxyXG4gICAgbGVmdDogJ2Fycm93LWxlZnQnLFxyXG4gICAgcmlnaHQ6ICdhcnJvdy1yaWdodCcsXHJcbiAgICBkb3duOiAnYXJyb3ctZG93bicsXHJcbiAgICBkZWxldGU6ICdiYWNrc3BhY2UnXHJcbn07XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuY29uc3Qgd2l0aEtleXMgPSAoZm4sIG1vZGlmaWVycykgPT4ge1xyXG4gICAgcmV0dXJuIChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmICghKCdrZXknIGluIGV2ZW50KSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGV2ZW50S2V5ID0gaHlwaGVuYXRlKGV2ZW50LmtleSk7XHJcbiAgICAgICAgaWYgKG1vZGlmaWVycy5zb21lKGsgPT4gayA9PT0gZXZlbnRLZXkgfHwga2V5TmFtZXNba10gPT09IGV2ZW50S2V5KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZm4oZXZlbnQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn07XG5cbmNvbnN0IHZTaG93ID0ge1xyXG4gICAgYmVmb3JlTW91bnQoZWwsIHsgdmFsdWUgfSwgeyB0cmFuc2l0aW9uIH0pIHtcclxuICAgICAgICBlbC5fdm9kID0gZWwuc3R5bGUuZGlzcGxheSA9PT0gJ25vbmUnID8gJycgOiBlbC5zdHlsZS5kaXNwbGF5O1xyXG4gICAgICAgIGlmICh0cmFuc2l0aW9uICYmIHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRyYW5zaXRpb24uYmVmb3JlRW50ZXIoZWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgc2V0RGlzcGxheShlbCwgdmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBtb3VudGVkKGVsLCB7IHZhbHVlIH0sIHsgdHJhbnNpdGlvbiB9KSB7XHJcbiAgICAgICAgaWYgKHRyYW5zaXRpb24gJiYgdmFsdWUpIHtcclxuICAgICAgICAgICAgdHJhbnNpdGlvbi5lbnRlcihlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIHVwZGF0ZWQoZWwsIHsgdmFsdWUsIG9sZFZhbHVlIH0sIHsgdHJhbnNpdGlvbiB9KSB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSA9PT0gIW9sZFZhbHVlKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgaWYgKHRyYW5zaXRpb24pIHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uLmJlZm9yZUVudGVyKGVsKTtcclxuICAgICAgICAgICAgICAgIHNldERpc3BsYXkoZWwsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbi5lbnRlcihlbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uLmxlYXZlKGVsLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0RGlzcGxheShlbCwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHNldERpc3BsYXkoZWwsIHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgYmVmb3JlVW5tb3VudChlbCwgeyB2YWx1ZSB9KSB7XHJcbiAgICAgICAgc2V0RGlzcGxheShlbCwgdmFsdWUpO1xyXG4gICAgfVxyXG59O1xyXG5mdW5jdGlvbiBzZXREaXNwbGF5KGVsLCB2YWx1ZSkge1xyXG4gICAgZWwuc3R5bGUuZGlzcGxheSA9IHZhbHVlID8gZWwuX3ZvZCA6ICdub25lJztcclxufVxyXG4vLyBTU1Igdm5vZGUgdHJhbnNmb3Jtcywgb25seSB1c2VkIHdoZW4gdXNlciBpbmNsdWRlcyBjbGllbnQtb3JpZW50ZWQgcmVuZGVyXHJcbi8vIGZ1bmN0aW9uIGluIFNTUlxyXG5mdW5jdGlvbiBpbml0VlNob3dGb3JTU1IoKSB7XHJcbiAgICB2U2hvdy5nZXRTU1JQcm9wcyA9ICh7IHZhbHVlIH0pID0+IHtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHN0eWxlOiB7IGRpc3BsYXk6ICdub25lJyB9IH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxuXG5jb25zdCByZW5kZXJlck9wdGlvbnMgPSAvKiNfX1BVUkVfXyovIGV4dGVuZCh7IHBhdGNoUHJvcCB9LCBub2RlT3BzKTtcclxuLy8gbGF6eSBjcmVhdGUgdGhlIHJlbmRlcmVyIC0gdGhpcyBtYWtlcyBjb3JlIHJlbmRlcmVyIGxvZ2ljIHRyZWUtc2hha2FibGVcclxuLy8gaW4gY2FzZSB0aGUgdXNlciBvbmx5IGltcG9ydHMgcmVhY3Rpdml0eSB1dGlsaXRpZXMgZnJvbSBWdWUuXHJcbmxldCByZW5kZXJlcjtcclxubGV0IGVuYWJsZWRIeWRyYXRpb24gPSBmYWxzZTtcclxuZnVuY3Rpb24gZW5zdXJlUmVuZGVyZXIoKSB7XHJcbiAgICByZXR1cm4gKHJlbmRlcmVyIHx8XHJcbiAgICAgICAgKHJlbmRlcmVyID0gY3JlYXRlUmVuZGVyZXIocmVuZGVyZXJPcHRpb25zKSkpO1xyXG59XHJcbmZ1bmN0aW9uIGVuc3VyZUh5ZHJhdGlvblJlbmRlcmVyKCkge1xyXG4gICAgcmVuZGVyZXIgPSBlbmFibGVkSHlkcmF0aW9uXHJcbiAgICAgICAgPyByZW5kZXJlclxyXG4gICAgICAgIDogY3JlYXRlSHlkcmF0aW9uUmVuZGVyZXIocmVuZGVyZXJPcHRpb25zKTtcclxuICAgIGVuYWJsZWRIeWRyYXRpb24gPSB0cnVlO1xyXG4gICAgcmV0dXJuIHJlbmRlcmVyO1xyXG59XHJcbi8vIHVzZSBleHBsaWNpdCB0eXBlIGNhc3RzIGhlcmUgdG8gYXZvaWQgaW1wb3J0KCkgY2FsbHMgaW4gcm9sbGVkLXVwIGQudHNcclxuY29uc3QgcmVuZGVyID0gKCguLi5hcmdzKSA9PiB7XHJcbiAgICBlbnN1cmVSZW5kZXJlcigpLnJlbmRlciguLi5hcmdzKTtcclxufSk7XHJcbmNvbnN0IGh5ZHJhdGUgPSAoKC4uLmFyZ3MpID0+IHtcclxuICAgIGVuc3VyZUh5ZHJhdGlvblJlbmRlcmVyKCkuaHlkcmF0ZSguLi5hcmdzKTtcclxufSk7XHJcbmNvbnN0IGNyZWF0ZUFwcCA9ICgoLi4uYXJncykgPT4ge1xyXG4gICAgY29uc3QgYXBwID0gZW5zdXJlUmVuZGVyZXIoKS5jcmVhdGVBcHAoLi4uYXJncyk7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgaW5qZWN0TmF0aXZlVGFnQ2hlY2soYXBwKTtcclxuICAgICAgICBpbmplY3RDb21waWxlck9wdGlvbnNDaGVjayhhcHApO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBtb3VudCB9ID0gYXBwO1xyXG4gICAgYXBwLm1vdW50ID0gKGNvbnRhaW5lck9yU2VsZWN0b3IpID0+IHtcclxuICAgICAgICBjb25zdCBjb250YWluZXIgPSBub3JtYWxpemVDb250YWluZXIoY29udGFpbmVyT3JTZWxlY3Rvcik7XHJcbiAgICAgICAgaWYgKCFjb250YWluZXIpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBjb25zdCBjb21wb25lbnQgPSBhcHAuX2NvbXBvbmVudDtcclxuICAgICAgICBpZiAoIWlzRnVuY3Rpb24oY29tcG9uZW50KSAmJiAhY29tcG9uZW50LnJlbmRlciAmJiAhY29tcG9uZW50LnRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgIC8vIF9fVU5TQUZFX19cclxuICAgICAgICAgICAgLy8gUmVhc29uOiBwb3RlbnRpYWwgZXhlY3V0aW9uIG9mIEpTIGV4cHJlc3Npb25zIGluIGluLURPTSB0ZW1wbGF0ZS5cclxuICAgICAgICAgICAgLy8gVGhlIHVzZXIgbXVzdCBtYWtlIHN1cmUgdGhlIGluLURPTSB0ZW1wbGF0ZSBpcyB0cnVzdGVkLiBJZiBpdCdzXHJcbiAgICAgICAgICAgIC8vIHJlbmRlcmVkIGJ5IHRoZSBzZXJ2ZXIsIHRoZSB0ZW1wbGF0ZSBzaG91bGQgbm90IGNvbnRhaW4gYW55IHVzZXIgZGF0YS5cclxuICAgICAgICAgICAgY29tcG9uZW50LnRlbXBsYXRlID0gY29udGFpbmVyLmlubmVySFRNTDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY2xlYXIgY29udGVudCBiZWZvcmUgbW91bnRpbmdcclxuICAgICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gJyc7XHJcbiAgICAgICAgY29uc3QgcHJveHkgPSBtb3VudChjb250YWluZXIsIGZhbHNlLCBjb250YWluZXIgaW5zdGFuY2VvZiBTVkdFbGVtZW50KTtcclxuICAgICAgICBpZiAoY29udGFpbmVyIGluc3RhbmNlb2YgRWxlbWVudCkge1xyXG4gICAgICAgICAgICBjb250YWluZXIucmVtb3ZlQXR0cmlidXRlKCd2LWNsb2FrJyk7XHJcbiAgICAgICAgICAgIGNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ2RhdGEtdi1hcHAnLCAnJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwcm94eTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gYXBwO1xyXG59KTtcclxuY29uc3QgY3JlYXRlU1NSQXBwID0gKCguLi5hcmdzKSA9PiB7XHJcbiAgICBjb25zdCBhcHAgPSBlbnN1cmVIeWRyYXRpb25SZW5kZXJlcigpLmNyZWF0ZUFwcCguLi5hcmdzKTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBpbmplY3ROYXRpdmVUYWdDaGVjayhhcHApO1xyXG4gICAgICAgIGluamVjdENvbXBpbGVyT3B0aW9uc0NoZWNrKGFwcCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IG1vdW50IH0gPSBhcHA7XHJcbiAgICBhcHAubW91bnQgPSAoY29udGFpbmVyT3JTZWxlY3RvcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IG5vcm1hbGl6ZUNvbnRhaW5lcihjb250YWluZXJPclNlbGVjdG9yKTtcclxuICAgICAgICBpZiAoY29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtb3VudChjb250YWluZXIsIHRydWUsIGNvbnRhaW5lciBpbnN0YW5jZW9mIFNWR0VsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICByZXR1cm4gYXBwO1xyXG59KTtcclxuZnVuY3Rpb24gaW5qZWN0TmF0aXZlVGFnQ2hlY2soYXBwKSB7XHJcbiAgICAvLyBJbmplY3QgYGlzTmF0aXZlVGFnYFxyXG4gICAgLy8gdGhpcyBpcyB1c2VkIGZvciBjb21wb25lbnQgbmFtZSB2YWxpZGF0aW9uIChkZXYgb25seSlcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhcHAuY29uZmlnLCAnaXNOYXRpdmVUYWcnLCB7XHJcbiAgICAgICAgdmFsdWU6ICh0YWcpID0+IGlzSFRNTFRhZyh0YWcpIHx8IGlzU1ZHVGFnKHRhZyksXHJcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlXHJcbiAgICB9KTtcclxufVxyXG4vLyBkZXYgb25seVxyXG5mdW5jdGlvbiBpbmplY3RDb21waWxlck9wdGlvbnNDaGVjayhhcHApIHtcclxuICAgIGlmIChpc1J1bnRpbWVPbmx5KCkpIHtcclxuICAgICAgICBjb25zdCBpc0N1c3RvbUVsZW1lbnQgPSBhcHAuY29uZmlnLmlzQ3VzdG9tRWxlbWVudDtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYXBwLmNvbmZpZywgJ2lzQ3VzdG9tRWxlbWVudCcsIHtcclxuICAgICAgICAgICAgZ2V0KCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzQ3VzdG9tRWxlbWVudDtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2V0KCkge1xyXG4gICAgICAgICAgICAgICAgd2FybihgVGhlIFxcYGlzQ3VzdG9tRWxlbWVudFxcYCBjb25maWcgb3B0aW9uIGlzIGRlcHJlY2F0ZWQuIFVzZSBgICtcclxuICAgICAgICAgICAgICAgICAgICBgXFxgY29tcGlsZXJPcHRpb25zLmlzQ3VzdG9tRWxlbWVudFxcYCBpbnN0ZWFkLmApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3QgY29tcGlsZXJPcHRpb25zID0gYXBwLmNvbmZpZy5jb21waWxlck9wdGlvbnM7XHJcbiAgICAgICAgY29uc3QgbXNnID0gYFRoZSBcXGBjb21waWxlck9wdGlvbnNcXGAgY29uZmlnIG9wdGlvbiBpcyBvbmx5IHJlc3BlY3RlZCB3aGVuIHVzaW5nIGAgK1xyXG4gICAgICAgICAgICBgYSBidWlsZCBvZiBWdWUuanMgdGhhdCBpbmNsdWRlcyB0aGUgcnVudGltZSBjb21waWxlciAoYWthIFwiZnVsbCBidWlsZFwiKS4gYCArXHJcbiAgICAgICAgICAgIGBTaW5jZSB5b3UgYXJlIHVzaW5nIHRoZSBydW50aW1lLW9ubHkgYnVpbGQsIFxcYGNvbXBpbGVyT3B0aW9uc1xcYCBgICtcclxuICAgICAgICAgICAgYG11c3QgYmUgcGFzc2VkIHRvIFxcYEB2dWUvY29tcGlsZXItZG9tXFxgIGluIHRoZSBidWlsZCBzZXR1cCBpbnN0ZWFkLlxcbmAgK1xyXG4gICAgICAgICAgICBgLSBGb3IgdnVlLWxvYWRlcjogcGFzcyBpdCB2aWEgdnVlLWxvYWRlcidzIFxcYGNvbXBpbGVyT3B0aW9uc1xcYCBsb2FkZXIgb3B0aW9uLlxcbmAgK1xyXG4gICAgICAgICAgICBgLSBGb3IgdnVlLWNsaTogc2VlIGh0dHBzOi8vY2xpLnZ1ZWpzLm9yZy9ndWlkZS93ZWJwYWNrLmh0bWwjbW9kaWZ5aW5nLW9wdGlvbnMtb2YtYS1sb2FkZXJcXG5gICtcclxuICAgICAgICAgICAgYC0gRm9yIHZpdGU6IHBhc3MgaXQgdmlhIEB2aXRlanMvcGx1Z2luLXZ1ZSBvcHRpb25zLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3ZpdGVqcy92aXRlL3RyZWUvbWFpbi9wYWNrYWdlcy9wbHVnaW4tdnVlI2V4YW1wbGUtZm9yLXBhc3Npbmctb3B0aW9ucy10by12dWVjb21waWxlci1kb21gO1xyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhcHAuY29uZmlnLCAnY29tcGlsZXJPcHRpb25zJywge1xyXG4gICAgICAgICAgICBnZXQoKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKG1zZyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJPcHRpb25zO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzZXQoKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKG1zZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBub3JtYWxpemVDb250YWluZXIoY29udGFpbmVyKSB7XHJcbiAgICBpZiAoaXNTdHJpbmcoY29udGFpbmVyKSkge1xyXG4gICAgICAgIGNvbnN0IHJlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoY29udGFpbmVyKTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFyZXMpIHtcclxuICAgICAgICAgICAgd2FybihgRmFpbGVkIHRvIG1vdW50IGFwcDogbW91bnQgdGFyZ2V0IHNlbGVjdG9yIFwiJHtjb250YWluZXJ9XCIgcmV0dXJuZWQgbnVsbC5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgIH1cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICB3aW5kb3cuU2hhZG93Um9vdCAmJlxyXG4gICAgICAgIGNvbnRhaW5lciBpbnN0YW5jZW9mIHdpbmRvdy5TaGFkb3dSb290ICYmXHJcbiAgICAgICAgY29udGFpbmVyLm1vZGUgPT09ICdjbG9zZWQnKSB7XHJcbiAgICAgICAgd2FybihgbW91bnRpbmcgb24gYSBTaGFkb3dSb290IHdpdGggXFxge21vZGU6IFwiY2xvc2VkXCJ9XFxgIG1heSBsZWFkIHRvIHVucHJlZGljdGFibGUgYnVnc2ApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbnRhaW5lcjtcclxufVxyXG5sZXQgc3NyRGlyZWN0aXZlSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuLyoqXHJcbiAqIEBpbnRlcm5hbFxyXG4gKi9cclxuY29uc3QgaW5pdERpcmVjdGl2ZXNGb3JTU1IgPSAoKSA9PiB7XHJcbiAgICAgICAgaWYgKCFzc3JEaXJlY3RpdmVJbml0aWFsaXplZCkge1xyXG4gICAgICAgICAgICBzc3JEaXJlY3RpdmVJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGluaXRWTW9kZWxGb3JTU1IoKTtcclxuICAgICAgICAgICAgaW5pdFZTaG93Rm9yU1NSKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgO1xuXG5leHBvcnQgeyBUcmFuc2l0aW9uLCBUcmFuc2l0aW9uR3JvdXAsIFZ1ZUVsZW1lbnQsIGNyZWF0ZUFwcCwgY3JlYXRlU1NSQXBwLCBkZWZpbmVDdXN0b21FbGVtZW50LCBkZWZpbmVTU1JDdXN0b21FbGVtZW50LCBoeWRyYXRlLCBpbml0RGlyZWN0aXZlc0ZvclNTUiwgcmVuZGVyLCB1c2VDc3NNb2R1bGUsIHVzZUNzc1ZhcnMsIHZNb2RlbENoZWNrYm94LCB2TW9kZWxEeW5hbWljLCB2TW9kZWxSYWRpbywgdk1vZGVsU2VsZWN0LCB2TW9kZWxUZXh0LCB2U2hvdywgd2l0aEtleXMsIHdpdGhNb2RpZmllcnMgfTtcbiIsIi8qKlxyXG4gKiBNYWtlIGEgbWFwIGFuZCByZXR1cm4gYSBmdW5jdGlvbiBmb3IgY2hlY2tpbmcgaWYgYSBrZXlcclxuICogaXMgaW4gdGhhdCBtYXAuXHJcbiAqIElNUE9SVEFOVDogYWxsIGNhbGxzIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBwcmVmaXhlZCB3aXRoXHJcbiAqIFxcL1xcKiNcXF9cXF9QVVJFXFxfXFxfXFwqXFwvXHJcbiAqIFNvIHRoYXQgcm9sbHVwIGNhbiB0cmVlLXNoYWtlIHRoZW0gaWYgbmVjZXNzYXJ5LlxyXG4gKi9cclxuZnVuY3Rpb24gbWFrZU1hcChzdHIsIGV4cGVjdHNMb3dlckNhc2UpIHtcclxuICAgIGNvbnN0IG1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbiAgICBjb25zdCBsaXN0ID0gc3RyLnNwbGl0KCcsJyk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBtYXBbbGlzdFtpXV0gPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGV4cGVjdHNMb3dlckNhc2UgPyB2YWwgPT4gISFtYXBbdmFsLnRvTG93ZXJDYXNlKCldIDogdmFsID0+ICEhbWFwW3ZhbF07XHJcbn1cblxuLyoqXHJcbiAqIGRldiBvbmx5IGZsYWcgLT4gbmFtZSBtYXBwaW5nXHJcbiAqL1xyXG5jb25zdCBQYXRjaEZsYWdOYW1lcyA9IHtcclxuICAgIFsxIC8qIFBhdGNoRmxhZ3MuVEVYVCAqL106IGBURVhUYCxcclxuICAgIFsyIC8qIFBhdGNoRmxhZ3MuQ0xBU1MgKi9dOiBgQ0xBU1NgLFxyXG4gICAgWzQgLyogUGF0Y2hGbGFncy5TVFlMRSAqL106IGBTVFlMRWAsXHJcbiAgICBbOCAvKiBQYXRjaEZsYWdzLlBST1BTICovXTogYFBST1BTYCxcclxuICAgIFsxNiAvKiBQYXRjaEZsYWdzLkZVTExfUFJPUFMgKi9dOiBgRlVMTF9QUk9QU2AsXHJcbiAgICBbMzIgLyogUGF0Y2hGbGFncy5IWURSQVRFX0VWRU5UUyAqL106IGBIWURSQVRFX0VWRU5UU2AsXHJcbiAgICBbNjQgLyogUGF0Y2hGbGFncy5TVEFCTEVfRlJBR01FTlQgKi9dOiBgU1RBQkxFX0ZSQUdNRU5UYCxcclxuICAgIFsxMjggLyogUGF0Y2hGbGFncy5LRVlFRF9GUkFHTUVOVCAqL106IGBLRVlFRF9GUkFHTUVOVGAsXHJcbiAgICBbMjU2IC8qIFBhdGNoRmxhZ3MuVU5LRVlFRF9GUkFHTUVOVCAqL106IGBVTktFWUVEX0ZSQUdNRU5UYCxcclxuICAgIFs1MTIgLyogUGF0Y2hGbGFncy5ORUVEX1BBVENIICovXTogYE5FRURfUEFUQ0hgLFxyXG4gICAgWzEwMjQgLyogUGF0Y2hGbGFncy5EWU5BTUlDX1NMT1RTICovXTogYERZTkFNSUNfU0xPVFNgLFxyXG4gICAgWzIwNDggLyogUGF0Y2hGbGFncy5ERVZfUk9PVF9GUkFHTUVOVCAqL106IGBERVZfUk9PVF9GUkFHTUVOVGAsXHJcbiAgICBbLTEgLyogUGF0Y2hGbGFncy5IT0lTVEVEICovXTogYEhPSVNURURgLFxyXG4gICAgWy0yIC8qIFBhdGNoRmxhZ3MuQkFJTCAqL106IGBCQUlMYFxyXG59O1xuXG4vKipcclxuICogRGV2IG9ubHlcclxuICovXHJcbmNvbnN0IHNsb3RGbGFnc1RleHQgPSB7XHJcbiAgICBbMSAvKiBTbG90RmxhZ3MuU1RBQkxFICovXTogJ1NUQUJMRScsXHJcbiAgICBbMiAvKiBTbG90RmxhZ3MuRFlOQU1JQyAqL106ICdEWU5BTUlDJyxcclxuICAgIFszIC8qIFNsb3RGbGFncy5GT1JXQVJERUQgKi9dOiAnRk9SV0FSREVEJ1xyXG59O1xuXG5jb25zdCBHTE9CQUxTX1dISVRFX0xJU1RFRCA9ICdJbmZpbml0eSx1bmRlZmluZWQsTmFOLGlzRmluaXRlLGlzTmFOLHBhcnNlRmxvYXQscGFyc2VJbnQsZGVjb2RlVVJJLCcgK1xyXG4gICAgJ2RlY29kZVVSSUNvbXBvbmVudCxlbmNvZGVVUkksZW5jb2RlVVJJQ29tcG9uZW50LE1hdGgsTnVtYmVyLERhdGUsQXJyYXksJyArXHJcbiAgICAnT2JqZWN0LEJvb2xlYW4sU3RyaW5nLFJlZ0V4cCxNYXAsU2V0LEpTT04sSW50bCxCaWdJbnQnO1xyXG5jb25zdCBpc0dsb2JhbGx5V2hpdGVsaXN0ZWQgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoR0xPQkFMU19XSElURV9MSVNURUQpO1xuXG5jb25zdCByYW5nZSA9IDI7XHJcbmZ1bmN0aW9uIGdlbmVyYXRlQ29kZUZyYW1lKHNvdXJjZSwgc3RhcnQgPSAwLCBlbmQgPSBzb3VyY2UubGVuZ3RoKSB7XHJcbiAgICAvLyBTcGxpdCB0aGUgY29udGVudCBpbnRvIGluZGl2aWR1YWwgbGluZXMgYnV0IGNhcHR1cmUgdGhlIG5ld2xpbmUgc2VxdWVuY2VcclxuICAgIC8vIHRoYXQgc2VwYXJhdGVkIGVhY2ggbGluZS4gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSB0aGUgYWN0dWFsIHNlcXVlbmNlIGlzXHJcbiAgICAvLyBuZWVkZWQgdG8gcHJvcGVybHkgdGFrZSBpbnRvIGFjY291bnQgdGhlIGZ1bGwgbGluZSBsZW5ndGggZm9yIG9mZnNldFxyXG4gICAgLy8gY29tcGFyaXNvblxyXG4gICAgbGV0IGxpbmVzID0gc291cmNlLnNwbGl0KC8oXFxyP1xcbikvKTtcclxuICAgIC8vIFNlcGFyYXRlIHRoZSBsaW5lcyBhbmQgbmV3bGluZSBzZXF1ZW5jZXMgaW50byBzZXBhcmF0ZSBhcnJheXMgZm9yIGVhc2llciByZWZlcmVuY2luZ1xyXG4gICAgY29uc3QgbmV3bGluZVNlcXVlbmNlcyA9IGxpbmVzLmZpbHRlcigoXywgaWR4KSA9PiBpZHggJSAyID09PSAxKTtcclxuICAgIGxpbmVzID0gbGluZXMuZmlsdGVyKChfLCBpZHgpID0+IGlkeCAlIDIgPT09IDApO1xyXG4gICAgbGV0IGNvdW50ID0gMDtcclxuICAgIGNvbnN0IHJlcyA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvdW50ICs9XHJcbiAgICAgICAgICAgIGxpbmVzW2ldLmxlbmd0aCArXHJcbiAgICAgICAgICAgICAgICAoKG5ld2xpbmVTZXF1ZW5jZXNbaV0gJiYgbmV3bGluZVNlcXVlbmNlc1tpXS5sZW5ndGgpIHx8IDApO1xyXG4gICAgICAgIGlmIChjb3VudCA+PSBzdGFydCkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gaSAtIHJhbmdlOyBqIDw9IGkgKyByYW5nZSB8fCBlbmQgPiBjb3VudDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaiA8IDAgfHwgaiA+PSBsaW5lcy5sZW5ndGgpXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lID0gaiArIDE7XHJcbiAgICAgICAgICAgICAgICByZXMucHVzaChgJHtsaW5lfSR7JyAnLnJlcGVhdChNYXRoLm1heCgzIC0gU3RyaW5nKGxpbmUpLmxlbmd0aCwgMCkpfXwgICR7bGluZXNbal19YCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lTGVuZ3RoID0gbGluZXNbal0ubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3TGluZVNlcUxlbmd0aCA9IChuZXdsaW5lU2VxdWVuY2VzW2pdICYmIG5ld2xpbmVTZXF1ZW5jZXNbal0ubGVuZ3RoKSB8fCAwO1xyXG4gICAgICAgICAgICAgICAgaWYgKGogPT09IGkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBwdXNoIHVuZGVybGluZVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhZCA9IHN0YXJ0IC0gKGNvdW50IC0gKGxpbmVMZW5ndGggKyBuZXdMaW5lU2VxTGVuZ3RoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gTWF0aC5tYXgoMSwgZW5kID4gY291bnQgPyBsaW5lTGVuZ3RoIC0gcGFkIDogZW5kIC0gc3RhcnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5wdXNoKGAgICB8ICBgICsgJyAnLnJlcGVhdChwYWQpICsgJ14nLnJlcGVhdChsZW5ndGgpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGogPiBpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVuZCA+IGNvdW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IE1hdGgubWF4KE1hdGgubWluKGVuZCAtIGNvdW50LCBsaW5lTGVuZ3RoKSwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5wdXNoKGAgICB8ICBgICsgJ14nLnJlcGVhdChsZW5ndGgpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gbGluZUxlbmd0aCArIG5ld0xpbmVTZXFMZW5ndGg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcy5qb2luKCdcXG4nKTtcclxufVxuXG4vKipcclxuICogT24gdGhlIGNsaWVudCB3ZSBvbmx5IG5lZWQgdG8gb2ZmZXIgc3BlY2lhbCBjYXNlcyBmb3IgYm9vbGVhbiBhdHRyaWJ1dGVzIHRoYXRcclxuICogaGF2ZSBkaWZmZXJlbnQgbmFtZXMgZnJvbSB0aGVpciBjb3JyZXNwb25kaW5nIGRvbSBwcm9wZXJ0aWVzOlxyXG4gKiAtIGl0ZW1zY29wZSAtPiBOL0FcclxuICogLSBhbGxvd2Z1bGxzY3JlZW4gLT4gYWxsb3dGdWxsc2NyZWVuXHJcbiAqIC0gZm9ybW5vdmFsaWRhdGUgLT4gZm9ybU5vVmFsaWRhdGVcclxuICogLSBpc21hcCAtPiBpc01hcFxyXG4gKiAtIG5vbW9kdWxlIC0+IG5vTW9kdWxlXHJcbiAqIC0gbm92YWxpZGF0ZSAtPiBub1ZhbGlkYXRlXHJcbiAqIC0gcmVhZG9ubHkgLT4gcmVhZE9ubHlcclxuICovXHJcbmNvbnN0IHNwZWNpYWxCb29sZWFuQXR0cnMgPSBgaXRlbXNjb3BlLGFsbG93ZnVsbHNjcmVlbixmb3Jtbm92YWxpZGF0ZSxpc21hcCxub21vZHVsZSxub3ZhbGlkYXRlLHJlYWRvbmx5YDtcclxuY29uc3QgaXNTcGVjaWFsQm9vbGVhbkF0dHIgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoc3BlY2lhbEJvb2xlYW5BdHRycyk7XHJcbi8qKlxyXG4gKiBUaGUgZnVsbCBsaXN0IGlzIG5lZWRlZCBkdXJpbmcgU1NSIHRvIHByb2R1Y2UgdGhlIGNvcnJlY3QgaW5pdGlhbCBtYXJrdXAuXHJcbiAqL1xyXG5jb25zdCBpc0Jvb2xlYW5BdHRyID0gLyojX19QVVJFX18qLyBtYWtlTWFwKHNwZWNpYWxCb29sZWFuQXR0cnMgK1xyXG4gICAgYCxhc3luYyxhdXRvZm9jdXMsYXV0b3BsYXksY29udHJvbHMsZGVmYXVsdCxkZWZlcixkaXNhYmxlZCxoaWRkZW4sYCArXHJcbiAgICBgbG9vcCxvcGVuLHJlcXVpcmVkLHJldmVyc2VkLHNjb3BlZCxzZWFtbGVzcyxgICtcclxuICAgIGBjaGVja2VkLG11dGVkLG11bHRpcGxlLHNlbGVjdGVkYCk7XHJcbi8qKlxyXG4gKiBCb29sZWFuIGF0dHJpYnV0ZXMgc2hvdWxkIGJlIGluY2x1ZGVkIGlmIHRoZSB2YWx1ZSBpcyB0cnV0aHkgb3IgJycuXHJcbiAqIGUuZy4gYDxzZWxlY3QgbXVsdGlwbGU+YCBjb21waWxlcyB0byBgeyBtdWx0aXBsZTogJycgfWBcclxuICovXHJcbmZ1bmN0aW9uIGluY2x1ZGVCb29sZWFuQXR0cih2YWx1ZSkge1xyXG4gICAgcmV0dXJuICEhdmFsdWUgfHwgdmFsdWUgPT09ICcnO1xyXG59XHJcbmNvbnN0IHVuc2FmZUF0dHJDaGFyUkUgPSAvWz4vPVwiJ1xcdTAwMDlcXHUwMDBhXFx1MDAwY1xcdTAwMjBdLztcclxuY29uc3QgYXR0clZhbGlkYXRpb25DYWNoZSA9IHt9O1xyXG5mdW5jdGlvbiBpc1NTUlNhZmVBdHRyTmFtZShuYW1lKSB7XHJcbiAgICBpZiAoYXR0clZhbGlkYXRpb25DYWNoZS5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xyXG4gICAgICAgIHJldHVybiBhdHRyVmFsaWRhdGlvbkNhY2hlW25hbWVdO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaXNVbnNhZmUgPSB1bnNhZmVBdHRyQ2hhclJFLnRlc3QobmFtZSk7XHJcbiAgICBpZiAoaXNVbnNhZmUpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGB1bnNhZmUgYXR0cmlidXRlIG5hbWU6ICR7bmFtZX1gKTtcclxuICAgIH1cclxuICAgIHJldHVybiAoYXR0clZhbGlkYXRpb25DYWNoZVtuYW1lXSA9ICFpc1Vuc2FmZSk7XHJcbn1cclxuY29uc3QgcHJvcHNUb0F0dHJNYXAgPSB7XHJcbiAgICBhY2NlcHRDaGFyc2V0OiAnYWNjZXB0LWNoYXJzZXQnLFxyXG4gICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxyXG4gICAgaHRtbEZvcjogJ2ZvcicsXHJcbiAgICBodHRwRXF1aXY6ICdodHRwLWVxdWl2J1xyXG59O1xyXG4vKipcclxuICogQ1NTIHByb3BlcnRpZXMgdGhhdCBhY2NlcHQgcGxhaW4gbnVtYmVyc1xyXG4gKi9cclxuY29uc3QgaXNOb1VuaXROdW1lcmljU3R5bGVQcm9wID0gLyojX19QVVJFX18qLyBtYWtlTWFwKGBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50LGJvcmRlci1pbWFnZS1vdXRzZXQsYm9yZGVyLWltYWdlLXNsaWNlLGAgK1xyXG4gICAgYGJvcmRlci1pbWFnZS13aWR0aCxib3gtZmxleCxib3gtZmxleC1ncm91cCxib3gtb3JkaW5hbC1ncm91cCxjb2x1bW4tY291bnQsYCArXHJcbiAgICBgY29sdW1ucyxmbGV4LGZsZXgtZ3JvdyxmbGV4LXBvc2l0aXZlLGZsZXgtc2hyaW5rLGZsZXgtbmVnYXRpdmUsZmxleC1vcmRlcixgICtcclxuICAgIGBncmlkLXJvdyxncmlkLXJvdy1lbmQsZ3JpZC1yb3ctc3BhbixncmlkLXJvdy1zdGFydCxncmlkLWNvbHVtbixgICtcclxuICAgIGBncmlkLWNvbHVtbi1lbmQsZ3JpZC1jb2x1bW4tc3BhbixncmlkLWNvbHVtbi1zdGFydCxmb250LXdlaWdodCxsaW5lLWNsYW1wLGAgK1xyXG4gICAgYGxpbmUtaGVpZ2h0LG9wYWNpdHksb3JkZXIsb3JwaGFucyx0YWItc2l6ZSx3aWRvd3Msei1pbmRleCx6b29tLGAgK1xyXG4gICAgLy8gU1ZHXHJcbiAgICBgZmlsbC1vcGFjaXR5LGZsb29kLW9wYWNpdHksc3RvcC1vcGFjaXR5LHN0cm9rZS1kYXNoYXJyYXksc3Ryb2tlLWRhc2hvZmZzZXQsYCArXHJcbiAgICBgc3Ryb2tlLW1pdGVybGltaXQsc3Ryb2tlLW9wYWNpdHksc3Ryb2tlLXdpZHRoYCk7XHJcbi8qKlxyXG4gKiBLbm93biBhdHRyaWJ1dGVzLCB0aGlzIGlzIHVzZWQgZm9yIHN0cmluZ2lmaWNhdGlvbiBvZiBydW50aW1lIHN0YXRpYyBub2Rlc1xyXG4gKiBzbyB0aGF0IHdlIGRvbid0IHN0cmluZ2lmeSBiaW5kaW5ncyB0aGF0IGNhbm5vdCBiZSBzZXQgZnJvbSBIVE1MLlxyXG4gKiBEb24ndCBhbHNvIGZvcmdldCB0byBhbGxvdyBgZGF0YS0qYCBhbmQgYGFyaWEtKmAhXHJcbiAqIEdlbmVyYXRlZCBmcm9tIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQXR0cmlidXRlc1xyXG4gKi9cclxuY29uc3QgaXNLbm93bkh0bWxBdHRyID0gLyojX19QVVJFX18qLyBtYWtlTWFwKGBhY2NlcHQsYWNjZXB0LWNoYXJzZXQsYWNjZXNza2V5LGFjdGlvbixhbGlnbixhbGxvdyxhbHQsYXN5bmMsYCArXHJcbiAgICBgYXV0b2NhcGl0YWxpemUsYXV0b2NvbXBsZXRlLGF1dG9mb2N1cyxhdXRvcGxheSxiYWNrZ3JvdW5kLGJnY29sb3IsYCArXHJcbiAgICBgYm9yZGVyLGJ1ZmZlcmVkLGNhcHR1cmUsY2hhbGxlbmdlLGNoYXJzZXQsY2hlY2tlZCxjaXRlLGNsYXNzLGNvZGUsYCArXHJcbiAgICBgY29kZWJhc2UsY29sb3IsY29scyxjb2xzcGFuLGNvbnRlbnQsY29udGVudGVkaXRhYmxlLGNvbnRleHRtZW51LGNvbnRyb2xzLGAgK1xyXG4gICAgYGNvb3Jkcyxjcm9zc29yaWdpbixjc3AsZGF0YSxkYXRldGltZSxkZWNvZGluZyxkZWZhdWx0LGRlZmVyLGRpcixkaXJuYW1lLGAgK1xyXG4gICAgYGRpc2FibGVkLGRvd25sb2FkLGRyYWdnYWJsZSxkcm9wem9uZSxlbmN0eXBlLGVudGVya2V5aGludCxmb3IsZm9ybSxgICtcclxuICAgIGBmb3JtYWN0aW9uLGZvcm1lbmN0eXBlLGZvcm1tZXRob2QsZm9ybW5vdmFsaWRhdGUsZm9ybXRhcmdldCxoZWFkZXJzLGAgK1xyXG4gICAgYGhlaWdodCxoaWRkZW4saGlnaCxocmVmLGhyZWZsYW5nLGh0dHAtZXF1aXYsaWNvbixpZCxpbXBvcnRhbmNlLGludGVncml0eSxgICtcclxuICAgIGBpc21hcCxpdGVtcHJvcCxrZXl0eXBlLGtpbmQsbGFiZWwsbGFuZyxsYW5ndWFnZSxsb2FkaW5nLGxpc3QsbG9vcCxsb3csYCArXHJcbiAgICBgbWFuaWZlc3QsbWF4LG1heGxlbmd0aCxtaW5sZW5ndGgsbWVkaWEsbWluLG11bHRpcGxlLG11dGVkLG5hbWUsbm92YWxpZGF0ZSxgICtcclxuICAgIGBvcGVuLG9wdGltdW0scGF0dGVybixwaW5nLHBsYWNlaG9sZGVyLHBvc3RlcixwcmVsb2FkLHJhZGlvZ3JvdXAscmVhZG9ubHksYCArXHJcbiAgICBgcmVmZXJyZXJwb2xpY3kscmVsLHJlcXVpcmVkLHJldmVyc2VkLHJvd3Mscm93c3BhbixzYW5kYm94LHNjb3BlLHNjb3BlZCxgICtcclxuICAgIGBzZWxlY3RlZCxzaGFwZSxzaXplLHNpemVzLHNsb3Qsc3BhbixzcGVsbGNoZWNrLHNyYyxzcmNkb2Msc3JjbGFuZyxzcmNzZXQsYCArXHJcbiAgICBgc3RhcnQsc3RlcCxzdHlsZSxzdW1tYXJ5LHRhYmluZGV4LHRhcmdldCx0aXRsZSx0cmFuc2xhdGUsdHlwZSx1c2VtYXAsYCArXHJcbiAgICBgdmFsdWUsd2lkdGgsd3JhcGApO1xyXG4vKipcclxuICogR2VuZXJhdGVkIGZyb20gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU1ZHL0F0dHJpYnV0ZVxyXG4gKi9cclxuY29uc3QgaXNLbm93blN2Z0F0dHIgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoYHhtbG5zLGFjY2VudC1oZWlnaHQsYWNjdW11bGF0ZSxhZGRpdGl2ZSxhbGlnbm1lbnQtYmFzZWxpbmUsYWxwaGFiZXRpYyxhbXBsaXR1ZGUsYCArXHJcbiAgICBgYXJhYmljLWZvcm0sYXNjZW50LGF0dHJpYnV0ZU5hbWUsYXR0cmlidXRlVHlwZSxhemltdXRoLGJhc2VGcmVxdWVuY3ksYCArXHJcbiAgICBgYmFzZWxpbmUtc2hpZnQsYmFzZVByb2ZpbGUsYmJveCxiZWdpbixiaWFzLGJ5LGNhbGNNb2RlLGNhcC1oZWlnaHQsY2xhc3MsYCArXHJcbiAgICBgY2xpcCxjbGlwUGF0aFVuaXRzLGNsaXAtcGF0aCxjbGlwLXJ1bGUsY29sb3IsY29sb3ItaW50ZXJwb2xhdGlvbixgICtcclxuICAgIGBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMsY29sb3ItcHJvZmlsZSxjb2xvci1yZW5kZXJpbmcsYCArXHJcbiAgICBgY29udGVudFNjcmlwdFR5cGUsY29udGVudFN0eWxlVHlwZSxjcm9zc29yaWdpbixjdXJzb3IsY3gsY3ksZCxkZWNlbGVyYXRlLGAgK1xyXG4gICAgYGRlc2NlbnQsZGlmZnVzZUNvbnN0YW50LGRpcmVjdGlvbixkaXNwbGF5LGRpdmlzb3IsZG9taW5hbnQtYmFzZWxpbmUsZHVyLGR4LGAgK1xyXG4gICAgYGR5LGVkZ2VNb2RlLGVsZXZhdGlvbixlbmFibGUtYmFja2dyb3VuZCxlbmQsZXhwb25lbnQsZmlsbCxmaWxsLW9wYWNpdHksYCArXHJcbiAgICBgZmlsbC1ydWxlLGZpbHRlcixmaWx0ZXJSZXMsZmlsdGVyVW5pdHMsZmxvb2QtY29sb3IsZmxvb2Qtb3BhY2l0eSxgICtcclxuICAgIGBmb250LWZhbWlseSxmb250LXNpemUsZm9udC1zaXplLWFkanVzdCxmb250LXN0cmV0Y2gsZm9udC1zdHlsZSxgICtcclxuICAgIGBmb250LXZhcmlhbnQsZm9udC13ZWlnaHQsZm9ybWF0LGZyb20sZnIsZngsZnksZzEsZzIsZ2x5cGgtbmFtZSxgICtcclxuICAgIGBnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsLGdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsLGdseXBoUmVmLGAgK1xyXG4gICAgYGdyYWRpZW50VHJhbnNmb3JtLGdyYWRpZW50VW5pdHMsaGFuZ2luZyxoZWlnaHQsaHJlZixocmVmbGFuZyxob3Jpei1hZHYteCxgICtcclxuICAgIGBob3Jpei1vcmlnaW4teCxpZCxpZGVvZ3JhcGhpYyxpbWFnZS1yZW5kZXJpbmcsaW4saW4yLGludGVyY2VwdCxrLGsxLGsyLGszLGAgK1xyXG4gICAgYGs0LGtlcm5lbE1hdHJpeCxrZXJuZWxVbml0TGVuZ3RoLGtlcm5pbmcsa2V5UG9pbnRzLGtleVNwbGluZXMsa2V5VGltZXMsYCArXHJcbiAgICBgbGFuZyxsZW5ndGhBZGp1c3QsbGV0dGVyLXNwYWNpbmcsbGlnaHRpbmctY29sb3IsbGltaXRpbmdDb25lQW5nbGUsbG9jYWwsYCArXHJcbiAgICBgbWFya2VyLWVuZCxtYXJrZXItbWlkLG1hcmtlci1zdGFydCxtYXJrZXJIZWlnaHQsbWFya2VyVW5pdHMsbWFya2VyV2lkdGgsYCArXHJcbiAgICBgbWFzayxtYXNrQ29udGVudFVuaXRzLG1hc2tVbml0cyxtYXRoZW1hdGljYWwsbWF4LG1lZGlhLG1ldGhvZCxtaW4sbW9kZSxgICtcclxuICAgIGBuYW1lLG51bU9jdGF2ZXMsb2Zmc2V0LG9wYWNpdHksb3BlcmF0b3Isb3JkZXIsb3JpZW50LG9yaWVudGF0aW9uLG9yaWdpbixgICtcclxuICAgIGBvdmVyZmxvdyxvdmVybGluZS1wb3NpdGlvbixvdmVybGluZS10aGlja25lc3MscGFub3NlLTEscGFpbnQtb3JkZXIscGF0aCxgICtcclxuICAgIGBwYXRoTGVuZ3RoLHBhdHRlcm5Db250ZW50VW5pdHMscGF0dGVyblRyYW5zZm9ybSxwYXR0ZXJuVW5pdHMscGluZyxgICtcclxuICAgIGBwb2ludGVyLWV2ZW50cyxwb2ludHMscG9pbnRzQXRYLHBvaW50c0F0WSxwb2ludHNBdFoscHJlc2VydmVBbHBoYSxgICtcclxuICAgIGBwcmVzZXJ2ZUFzcGVjdFJhdGlvLHByaW1pdGl2ZVVuaXRzLHIscmFkaXVzLHJlZmVycmVyUG9saWN5LHJlZlgscmVmWSxyZWwsYCArXHJcbiAgICBgcmVuZGVyaW5nLWludGVudCxyZXBlYXRDb3VudCxyZXBlYXREdXIscmVxdWlyZWRFeHRlbnNpb25zLHJlcXVpcmVkRmVhdHVyZXMsYCArXHJcbiAgICBgcmVzdGFydCxyZXN1bHQscm90YXRlLHJ4LHJ5LHNjYWxlLHNlZWQsc2hhcGUtcmVuZGVyaW5nLHNsb3BlLHNwYWNpbmcsYCArXHJcbiAgICBgc3BlY3VsYXJDb25zdGFudCxzcGVjdWxhckV4cG9uZW50LHNwZWVkLHNwcmVhZE1ldGhvZCxzdGFydE9mZnNldCxgICtcclxuICAgIGBzdGREZXZpYXRpb24sc3RlbWgsc3RlbXYsc3RpdGNoVGlsZXMsc3RvcC1jb2xvcixzdG9wLW9wYWNpdHksYCArXHJcbiAgICBgc3RyaWtldGhyb3VnaC1wb3NpdGlvbixzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcyxzdHJpbmcsc3Ryb2tlLGAgK1xyXG4gICAgYHN0cm9rZS1kYXNoYXJyYXksc3Ryb2tlLWRhc2hvZmZzZXQsc3Ryb2tlLWxpbmVjYXAsc3Ryb2tlLWxpbmVqb2luLGAgK1xyXG4gICAgYHN0cm9rZS1taXRlcmxpbWl0LHN0cm9rZS1vcGFjaXR5LHN0cm9rZS13aWR0aCxzdHlsZSxzdXJmYWNlU2NhbGUsYCArXHJcbiAgICBgc3lzdGVtTGFuZ3VhZ2UsdGFiaW5kZXgsdGFibGVWYWx1ZXMsdGFyZ2V0LHRhcmdldFgsdGFyZ2V0WSx0ZXh0LWFuY2hvcixgICtcclxuICAgIGB0ZXh0LWRlY29yYXRpb24sdGV4dC1yZW5kZXJpbmcsdGV4dExlbmd0aCx0byx0cmFuc2Zvcm0sdHJhbnNmb3JtLW9yaWdpbixgICtcclxuICAgIGB0eXBlLHUxLHUyLHVuZGVybGluZS1wb3NpdGlvbix1bmRlcmxpbmUtdGhpY2tuZXNzLHVuaWNvZGUsdW5pY29kZS1iaWRpLGAgK1xyXG4gICAgYHVuaWNvZGUtcmFuZ2UsdW5pdHMtcGVyLWVtLHYtYWxwaGFiZXRpYyx2LWhhbmdpbmcsdi1pZGVvZ3JhcGhpYyxgICtcclxuICAgIGB2LW1hdGhlbWF0aWNhbCx2YWx1ZXMsdmVjdG9yLWVmZmVjdCx2ZXJzaW9uLHZlcnQtYWR2LXksdmVydC1vcmlnaW4teCxgICtcclxuICAgIGB2ZXJ0LW9yaWdpbi15LHZpZXdCb3gsdmlld1RhcmdldCx2aXNpYmlsaXR5LHdpZHRoLHdpZHRocyx3b3JkLXNwYWNpbmcsYCArXHJcbiAgICBgd3JpdGluZy1tb2RlLHgseC1oZWlnaHQseDEseDIseENoYW5uZWxTZWxlY3Rvcix4bGluazphY3R1YXRlLHhsaW5rOmFyY3JvbGUsYCArXHJcbiAgICBgeGxpbms6aHJlZix4bGluazpyb2xlLHhsaW5rOnNob3cseGxpbms6dGl0bGUseGxpbms6dHlwZSx4bWw6YmFzZSx4bWw6bGFuZyxgICtcclxuICAgIGB4bWw6c3BhY2UseSx5MSx5Mix5Q2hhbm5lbFNlbGVjdG9yLHosem9vbUFuZFBhbmApO1xuXG5mdW5jdGlvbiBub3JtYWxpemVTdHlsZSh2YWx1ZSkge1xyXG4gICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgY29uc3QgcmVzID0ge307XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBpdGVtID0gdmFsdWVbaV07XHJcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBpc1N0cmluZyhpdGVtKVxyXG4gICAgICAgICAgICAgICAgPyBwYXJzZVN0cmluZ1N0eWxlKGl0ZW0pXHJcbiAgICAgICAgICAgICAgICA6IG5vcm1hbGl6ZVN0eWxlKGl0ZW0pO1xyXG4gICAgICAgICAgICBpZiAobm9ybWFsaXplZCkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbm9ybWFsaXplZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc1trZXldID0gbm9ybWFsaXplZFtrZXldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbn1cclxuY29uc3QgbGlzdERlbGltaXRlclJFID0gLzsoPyFbXihdKlxcKSkvZztcclxuY29uc3QgcHJvcGVydHlEZWxpbWl0ZXJSRSA9IC86KC4rKS87XHJcbmZ1bmN0aW9uIHBhcnNlU3RyaW5nU3R5bGUoY3NzVGV4dCkge1xyXG4gICAgY29uc3QgcmV0ID0ge307XHJcbiAgICBjc3NUZXh0LnNwbGl0KGxpc3REZWxpbWl0ZXJSRSkuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgICAgICBjb25zdCB0bXAgPSBpdGVtLnNwbGl0KHByb3BlcnR5RGVsaW1pdGVyUkUpO1xyXG4gICAgICAgICAgICB0bXAubGVuZ3RoID4gMSAmJiAocmV0W3RtcFswXS50cmltKCldID0gdG1wWzFdLnRyaW0oKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcmV0O1xyXG59XHJcbmZ1bmN0aW9uIHN0cmluZ2lmeVN0eWxlKHN0eWxlcykge1xyXG4gICAgbGV0IHJldCA9ICcnO1xyXG4gICAgaWYgKCFzdHlsZXMgfHwgaXNTdHJpbmcoc3R5bGVzKSkge1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBzdHlsZXMpIHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IHN0eWxlc1trZXldO1xyXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRLZXkgPSBrZXkuc3RhcnRzV2l0aChgLS1gKSA/IGtleSA6IGh5cGhlbmF0ZShrZXkpO1xyXG4gICAgICAgIGlmIChpc1N0cmluZyh2YWx1ZSkgfHxcclxuICAgICAgICAgICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgaXNOb1VuaXROdW1lcmljU3R5bGVQcm9wKG5vcm1hbGl6ZWRLZXkpKSkge1xyXG4gICAgICAgICAgICAvLyBvbmx5IHJlbmRlciB2YWxpZCB2YWx1ZXNcclxuICAgICAgICAgICAgcmV0ICs9IGAke25vcm1hbGl6ZWRLZXl9OiR7dmFsdWV9O2A7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldDtcclxufVxyXG5mdW5jdGlvbiBub3JtYWxpemVDbGFzcyh2YWx1ZSkge1xyXG4gICAgbGV0IHJlcyA9ICcnO1xyXG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xyXG4gICAgICAgIHJlcyA9IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVDbGFzcyh2YWx1ZVtpXSk7XHJcbiAgICAgICAgICAgIGlmIChub3JtYWxpemVkKSB7XHJcbiAgICAgICAgICAgICAgICByZXMgKz0gbm9ybWFsaXplZCArICcgJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xyXG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBpbiB2YWx1ZSkge1xyXG4gICAgICAgICAgICBpZiAodmFsdWVbbmFtZV0pIHtcclxuICAgICAgICAgICAgICAgIHJlcyArPSBuYW1lICsgJyAnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcy50cmltKCk7XHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplUHJvcHMocHJvcHMpIHtcclxuICAgIGlmICghcHJvcHMpXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICBsZXQgeyBjbGFzczoga2xhc3MsIHN0eWxlIH0gPSBwcm9wcztcclxuICAgIGlmIChrbGFzcyAmJiAhaXNTdHJpbmcoa2xhc3MpKSB7XHJcbiAgICAgICAgcHJvcHMuY2xhc3MgPSBub3JtYWxpemVDbGFzcyhrbGFzcyk7XHJcbiAgICB9XHJcbiAgICBpZiAoc3R5bGUpIHtcclxuICAgICAgICBwcm9wcy5zdHlsZSA9IG5vcm1hbGl6ZVN0eWxlKHN0eWxlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwcm9wcztcclxufVxuXG4vLyBUaGVzZSB0YWcgY29uZmlncyBhcmUgc2hhcmVkIGJldHdlZW4gY29tcGlsZXItZG9tIGFuZCBydW50aW1lLWRvbSwgc28gdGhleVxyXG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnRcclxuY29uc3QgSFRNTF9UQUdTID0gJ2h0bWwsYm9keSxiYXNlLGhlYWQsbGluayxtZXRhLHN0eWxlLHRpdGxlLGFkZHJlc3MsYXJ0aWNsZSxhc2lkZSxmb290ZXIsJyArXHJcbiAgICAnaGVhZGVyLGgxLGgyLGgzLGg0LGg1LGg2LG5hdixzZWN0aW9uLGRpdixkZCxkbCxkdCxmaWdjYXB0aW9uLCcgK1xyXG4gICAgJ2ZpZ3VyZSxwaWN0dXJlLGhyLGltZyxsaSxtYWluLG9sLHAscHJlLHVsLGEsYixhYmJyLGJkaSxiZG8sYnIsY2l0ZSxjb2RlLCcgK1xyXG4gICAgJ2RhdGEsZGZuLGVtLGksa2JkLG1hcmsscSxycCxydCxydWJ5LHMsc2FtcCxzbWFsbCxzcGFuLHN0cm9uZyxzdWIsc3VwLCcgK1xyXG4gICAgJ3RpbWUsdSx2YXIsd2JyLGFyZWEsYXVkaW8sbWFwLHRyYWNrLHZpZGVvLGVtYmVkLG9iamVjdCxwYXJhbSxzb3VyY2UsJyArXHJcbiAgICAnY2FudmFzLHNjcmlwdCxub3NjcmlwdCxkZWwsaW5zLGNhcHRpb24sY29sLGNvbGdyb3VwLHRhYmxlLHRoZWFkLHRib2R5LHRkLCcgK1xyXG4gICAgJ3RoLHRyLGJ1dHRvbixkYXRhbGlzdCxmaWVsZHNldCxmb3JtLGlucHV0LGxhYmVsLGxlZ2VuZCxtZXRlcixvcHRncm91cCwnICtcclxuICAgICdvcHRpb24sb3V0cHV0LHByb2dyZXNzLHNlbGVjdCx0ZXh0YXJlYSxkZXRhaWxzLGRpYWxvZyxtZW51LCcgK1xyXG4gICAgJ3N1bW1hcnksdGVtcGxhdGUsYmxvY2txdW90ZSxpZnJhbWUsdGZvb3QnO1xyXG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TVkcvRWxlbWVudFxyXG5jb25zdCBTVkdfVEFHUyA9ICdzdmcsYW5pbWF0ZSxhbmltYXRlTW90aW9uLGFuaW1hdGVUcmFuc2Zvcm0sY2lyY2xlLGNsaXBQYXRoLGNvbG9yLXByb2ZpbGUsJyArXHJcbiAgICAnZGVmcyxkZXNjLGRpc2NhcmQsZWxsaXBzZSxmZUJsZW5kLGZlQ29sb3JNYXRyaXgsZmVDb21wb25lbnRUcmFuc2ZlciwnICtcclxuICAgICdmZUNvbXBvc2l0ZSxmZUNvbnZvbHZlTWF0cml4LGZlRGlmZnVzZUxpZ2h0aW5nLGZlRGlzcGxhY2VtZW50TWFwLCcgK1xyXG4gICAgJ2ZlRGlzdGFuY2VMaWdodCxmZURyb3BTaGFkb3csZmVGbG9vZCxmZUZ1bmNBLGZlRnVuY0IsZmVGdW5jRyxmZUZ1bmNSLCcgK1xyXG4gICAgJ2ZlR2F1c3NpYW5CbHVyLGZlSW1hZ2UsZmVNZXJnZSxmZU1lcmdlTm9kZSxmZU1vcnBob2xvZ3ksZmVPZmZzZXQsJyArXHJcbiAgICAnZmVQb2ludExpZ2h0LGZlU3BlY3VsYXJMaWdodGluZyxmZVNwb3RMaWdodCxmZVRpbGUsZmVUdXJidWxlbmNlLGZpbHRlciwnICtcclxuICAgICdmb3JlaWduT2JqZWN0LGcsaGF0Y2gsaGF0Y2hwYXRoLGltYWdlLGxpbmUsbGluZWFyR3JhZGllbnQsbWFya2VyLG1hc2ssJyArXHJcbiAgICAnbWVzaCxtZXNoZ3JhZGllbnQsbWVzaHBhdGNoLG1lc2hyb3csbWV0YWRhdGEsbXBhdGgscGF0aCxwYXR0ZXJuLCcgK1xyXG4gICAgJ3BvbHlnb24scG9seWxpbmUscmFkaWFsR3JhZGllbnQscmVjdCxzZXQsc29saWRjb2xvcixzdG9wLHN3aXRjaCxzeW1ib2wsJyArXHJcbiAgICAndGV4dCx0ZXh0UGF0aCx0aXRsZSx0c3Bhbix1bmtub3duLHVzZSx2aWV3JztcclxuY29uc3QgVk9JRF9UQUdTID0gJ2FyZWEsYmFzZSxicixjb2wsZW1iZWQsaHIsaW1nLGlucHV0LGxpbmssbWV0YSxwYXJhbSxzb3VyY2UsdHJhY2ssd2JyJztcclxuLyoqXHJcbiAqIENvbXBpbGVyIG9ubHkuXHJcbiAqIERvIE5PVCB1c2UgaW4gcnVudGltZSBjb2RlIHBhdGhzIHVubGVzcyBiZWhpbmQgYChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKWAgZmxhZy5cclxuICovXHJcbmNvbnN0IGlzSFRNTFRhZyA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChIVE1MX1RBR1MpO1xyXG4vKipcclxuICogQ29tcGlsZXIgb25seS5cclxuICogRG8gTk9UIHVzZSBpbiBydW50aW1lIGNvZGUgcGF0aHMgdW5sZXNzIGJlaGluZCBgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpYCBmbGFnLlxyXG4gKi9cclxuY29uc3QgaXNTVkdUYWcgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoU1ZHX1RBR1MpO1xyXG4vKipcclxuICogQ29tcGlsZXIgb25seS5cclxuICogRG8gTk9UIHVzZSBpbiBydW50aW1lIGNvZGUgcGF0aHMgdW5sZXNzIGJlaGluZCBgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpYCBmbGFnLlxyXG4gKi9cclxuY29uc3QgaXNWb2lkVGFnID0gLyojX19QVVJFX18qLyBtYWtlTWFwKFZPSURfVEFHUyk7XG5cbmNvbnN0IGVzY2FwZVJFID0gL1tcIicmPD5dLztcclxuZnVuY3Rpb24gZXNjYXBlSHRtbChzdHJpbmcpIHtcclxuICAgIGNvbnN0IHN0ciA9ICcnICsgc3RyaW5nO1xyXG4gICAgY29uc3QgbWF0Y2ggPSBlc2NhcGVSRS5leGVjKHN0cik7XHJcbiAgICBpZiAoIW1hdGNoKSB7XHJcbiAgICAgICAgcmV0dXJuIHN0cjtcclxuICAgIH1cclxuICAgIGxldCBodG1sID0gJyc7XHJcbiAgICBsZXQgZXNjYXBlZDtcclxuICAgIGxldCBpbmRleDtcclxuICAgIGxldCBsYXN0SW5kZXggPSAwO1xyXG4gICAgZm9yIChpbmRleCA9IG1hdGNoLmluZGV4OyBpbmRleCA8IHN0ci5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBzd2l0Y2ggKHN0ci5jaGFyQ29kZUF0KGluZGV4KSkge1xyXG4gICAgICAgICAgICBjYXNlIDM0OiAvLyBcIlxyXG4gICAgICAgICAgICAgICAgZXNjYXBlZCA9ICcmcXVvdDsnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMzg6IC8vICZcclxuICAgICAgICAgICAgICAgIGVzY2FwZWQgPSAnJmFtcDsnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMzk6IC8vICdcclxuICAgICAgICAgICAgICAgIGVzY2FwZWQgPSAnJiMzOTsnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgNjA6IC8vIDxcclxuICAgICAgICAgICAgICAgIGVzY2FwZWQgPSAnJmx0Oyc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSA2MjogLy8gPlxyXG4gICAgICAgICAgICAgICAgZXNjYXBlZCA9ICcmZ3Q7JztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChsYXN0SW5kZXggIT09IGluZGV4KSB7XHJcbiAgICAgICAgICAgIGh0bWwgKz0gc3RyLnNsaWNlKGxhc3RJbmRleCwgaW5kZXgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsYXN0SW5kZXggPSBpbmRleCArIDE7XHJcbiAgICAgICAgaHRtbCArPSBlc2NhcGVkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxhc3RJbmRleCAhPT0gaW5kZXggPyBodG1sICsgc3RyLnNsaWNlKGxhc3RJbmRleCwgaW5kZXgpIDogaHRtbDtcclxufVxyXG4vLyBodHRwczovL3d3dy53My5vcmcvVFIvaHRtbDUyL3N5bnRheC5odG1sI2NvbW1lbnRzXHJcbmNvbnN0IGNvbW1lbnRTdHJpcFJFID0gL14tPz58PCEtLXwtLT58LS0hPnw8IS0kL2c7XHJcbmZ1bmN0aW9uIGVzY2FwZUh0bWxDb21tZW50KHNyYykge1xyXG4gICAgcmV0dXJuIHNyYy5yZXBsYWNlKGNvbW1lbnRTdHJpcFJFLCAnJyk7XHJcbn1cblxuZnVuY3Rpb24gbG9vc2VDb21wYXJlQXJyYXlzKGEsIGIpIHtcclxuICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgbGV0IGVxdWFsID0gdHJ1ZTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBlcXVhbCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGVxdWFsID0gbG9vc2VFcXVhbChhW2ldLCBiW2ldKTtcclxuICAgIH1cclxuICAgIHJldHVybiBlcXVhbDtcclxufVxyXG5mdW5jdGlvbiBsb29zZUVxdWFsKGEsIGIpIHtcclxuICAgIGlmIChhID09PSBiKVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgbGV0IGFWYWxpZFR5cGUgPSBpc0RhdGUoYSk7XHJcbiAgICBsZXQgYlZhbGlkVHlwZSA9IGlzRGF0ZShiKTtcclxuICAgIGlmIChhVmFsaWRUeXBlIHx8IGJWYWxpZFR5cGUpIHtcclxuICAgICAgICByZXR1cm4gYVZhbGlkVHlwZSAmJiBiVmFsaWRUeXBlID8gYS5nZXRUaW1lKCkgPT09IGIuZ2V0VGltZSgpIDogZmFsc2U7XHJcbiAgICB9XHJcbiAgICBhVmFsaWRUeXBlID0gaXNTeW1ib2woYSk7XHJcbiAgICBiVmFsaWRUeXBlID0gaXNTeW1ib2woYik7XHJcbiAgICBpZiAoYVZhbGlkVHlwZSB8fCBiVmFsaWRUeXBlKSB7XHJcbiAgICAgICAgcmV0dXJuIGEgPT09IGI7XHJcbiAgICB9XHJcbiAgICBhVmFsaWRUeXBlID0gaXNBcnJheShhKTtcclxuICAgIGJWYWxpZFR5cGUgPSBpc0FycmF5KGIpO1xyXG4gICAgaWYgKGFWYWxpZFR5cGUgfHwgYlZhbGlkVHlwZSkge1xyXG4gICAgICAgIHJldHVybiBhVmFsaWRUeXBlICYmIGJWYWxpZFR5cGUgPyBsb29zZUNvbXBhcmVBcnJheXMoYSwgYikgOiBmYWxzZTtcclxuICAgIH1cclxuICAgIGFWYWxpZFR5cGUgPSBpc09iamVjdChhKTtcclxuICAgIGJWYWxpZFR5cGUgPSBpc09iamVjdChiKTtcclxuICAgIGlmIChhVmFsaWRUeXBlIHx8IGJWYWxpZFR5cGUpIHtcclxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWY6IHRoaXMgaWYgd2lsbCBwcm9iYWJseSBuZXZlciBiZSBjYWxsZWQgKi9cclxuICAgICAgICBpZiAoIWFWYWxpZFR5cGUgfHwgIWJWYWxpZFR5cGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBhS2V5c0NvdW50ID0gT2JqZWN0LmtleXMoYSkubGVuZ3RoO1xyXG4gICAgICAgIGNvbnN0IGJLZXlzQ291bnQgPSBPYmplY3Qua2V5cyhiKS5sZW5ndGg7XHJcbiAgICAgICAgaWYgKGFLZXlzQ291bnQgIT09IGJLZXlzQ291bnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBhKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFIYXNLZXkgPSBhLmhhc093blByb3BlcnR5KGtleSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGJIYXNLZXkgPSBiLmhhc093blByb3BlcnR5KGtleSk7XHJcbiAgICAgICAgICAgIGlmICgoYUhhc0tleSAmJiAhYkhhc0tleSkgfHxcclxuICAgICAgICAgICAgICAgICghYUhhc0tleSAmJiBiSGFzS2V5KSB8fFxyXG4gICAgICAgICAgICAgICAgIWxvb3NlRXF1YWwoYVtrZXldLCBiW2tleV0pKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gU3RyaW5nKGEpID09PSBTdHJpbmcoYik7XHJcbn1cclxuZnVuY3Rpb24gbG9vc2VJbmRleE9mKGFyciwgdmFsKSB7XHJcbiAgICByZXR1cm4gYXJyLmZpbmRJbmRleChpdGVtID0+IGxvb3NlRXF1YWwoaXRlbSwgdmFsKSk7XHJcbn1cblxuLyoqXHJcbiAqIEZvciBjb252ZXJ0aW5nIHt7IGludGVycG9sYXRpb24gfX0gdmFsdWVzIHRvIGRpc3BsYXllZCBzdHJpbmdzLlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuY29uc3QgdG9EaXNwbGF5U3RyaW5nID0gKHZhbCkgPT4ge1xyXG4gICAgcmV0dXJuIGlzU3RyaW5nKHZhbClcclxuICAgICAgICA/IHZhbFxyXG4gICAgICAgIDogdmFsID09IG51bGxcclxuICAgICAgICAgICAgPyAnJ1xyXG4gICAgICAgICAgICA6IGlzQXJyYXkodmFsKSB8fFxyXG4gICAgICAgICAgICAgICAgKGlzT2JqZWN0KHZhbCkgJiZcclxuICAgICAgICAgICAgICAgICAgICAodmFsLnRvU3RyaW5nID09PSBvYmplY3RUb1N0cmluZyB8fCAhaXNGdW5jdGlvbih2YWwudG9TdHJpbmcpKSlcclxuICAgICAgICAgICAgICAgID8gSlNPTi5zdHJpbmdpZnkodmFsLCByZXBsYWNlciwgMilcclxuICAgICAgICAgICAgICAgIDogU3RyaW5nKHZhbCk7XHJcbn07XHJcbmNvbnN0IHJlcGxhY2VyID0gKF9rZXksIHZhbCkgPT4ge1xyXG4gICAgLy8gY2FuJ3QgdXNlIGlzUmVmIGhlcmUgc2luY2UgQHZ1ZS9zaGFyZWQgaGFzIG5vIGRlcHNcclxuICAgIGlmICh2YWwgJiYgdmFsLl9fdl9pc1JlZikge1xyXG4gICAgICAgIHJldHVybiByZXBsYWNlcihfa2V5LCB2YWwudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNNYXAodmFsKSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIFtgTWFwKCR7dmFsLnNpemV9KWBdOiBbLi4udmFsLmVudHJpZXMoKV0ucmVkdWNlKChlbnRyaWVzLCBba2V5LCB2YWxdKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBlbnRyaWVzW2Ake2tleX0gPT5gXSA9IHZhbDtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlbnRyaWVzO1xyXG4gICAgICAgICAgICB9LCB7fSlcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNTZXQodmFsKSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIFtgU2V0KCR7dmFsLnNpemV9KWBdOiBbLi4udmFsLnZhbHVlcygpXVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc09iamVjdCh2YWwpICYmICFpc0FycmF5KHZhbCkgJiYgIWlzUGxhaW5PYmplY3QodmFsKSkge1xyXG4gICAgICAgIHJldHVybiBTdHJpbmcodmFsKTtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWw7XHJcbn07XG5cbmNvbnN0IEVNUFRZX09CSiA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgPyBPYmplY3QuZnJlZXplKHt9KVxyXG4gICAgOiB7fTtcclxuY29uc3QgRU1QVFlfQVJSID0gKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gT2JqZWN0LmZyZWV6ZShbXSkgOiBbXTtcclxuY29uc3QgTk9PUCA9ICgpID0+IHsgfTtcclxuLyoqXHJcbiAqIEFsd2F5cyByZXR1cm4gZmFsc2UuXHJcbiAqL1xyXG5jb25zdCBOTyA9ICgpID0+IGZhbHNlO1xyXG5jb25zdCBvblJFID0gL15vblteYS16XS87XHJcbmNvbnN0IGlzT24gPSAoa2V5KSA9PiBvblJFLnRlc3Qoa2V5KTtcclxuY29uc3QgaXNNb2RlbExpc3RlbmVyID0gKGtleSkgPT4ga2V5LnN0YXJ0c1dpdGgoJ29uVXBkYXRlOicpO1xyXG5jb25zdCBleHRlbmQgPSBPYmplY3QuYXNzaWduO1xyXG5jb25zdCByZW1vdmUgPSAoYXJyLCBlbCkgPT4ge1xyXG4gICAgY29uc3QgaSA9IGFyci5pbmRleE9mKGVsKTtcclxuICAgIGlmIChpID4gLTEpIHtcclxuICAgICAgICBhcnIuc3BsaWNlKGksIDEpO1xyXG4gICAgfVxyXG59O1xyXG5jb25zdCBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XHJcbmNvbnN0IGhhc093biA9ICh2YWwsIGtleSkgPT4gaGFzT3duUHJvcGVydHkuY2FsbCh2YWwsIGtleSk7XHJcbmNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xyXG5jb25zdCBpc01hcCA9ICh2YWwpID0+IHRvVHlwZVN0cmluZyh2YWwpID09PSAnW29iamVjdCBNYXBdJztcclxuY29uc3QgaXNTZXQgPSAodmFsKSA9PiB0b1R5cGVTdHJpbmcodmFsKSA9PT0gJ1tvYmplY3QgU2V0XSc7XHJcbmNvbnN0IGlzRGF0ZSA9ICh2YWwpID0+IHRvVHlwZVN0cmluZyh2YWwpID09PSAnW29iamVjdCBEYXRlXSc7XHJcbmNvbnN0IGlzRnVuY3Rpb24gPSAodmFsKSA9PiB0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nO1xyXG5jb25zdCBpc1N0cmluZyA9ICh2YWwpID0+IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnO1xyXG5jb25zdCBpc1N5bWJvbCA9ICh2YWwpID0+IHR5cGVvZiB2YWwgPT09ICdzeW1ib2wnO1xyXG5jb25zdCBpc09iamVjdCA9ICh2YWwpID0+IHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JztcclxuY29uc3QgaXNQcm9taXNlID0gKHZhbCkgPT4ge1xyXG4gICAgcmV0dXJuIGlzT2JqZWN0KHZhbCkgJiYgaXNGdW5jdGlvbih2YWwudGhlbikgJiYgaXNGdW5jdGlvbih2YWwuY2F0Y2gpO1xyXG59O1xyXG5jb25zdCBvYmplY3RUb1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XHJcbmNvbnN0IHRvVHlwZVN0cmluZyA9ICh2YWx1ZSkgPT4gb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XHJcbmNvbnN0IHRvUmF3VHlwZSA9ICh2YWx1ZSkgPT4ge1xyXG4gICAgLy8gZXh0cmFjdCBcIlJhd1R5cGVcIiBmcm9tIHN0cmluZ3MgbGlrZSBcIltvYmplY3QgUmF3VHlwZV1cIlxyXG4gICAgcmV0dXJuIHRvVHlwZVN0cmluZyh2YWx1ZSkuc2xpY2UoOCwgLTEpO1xyXG59O1xyXG5jb25zdCBpc1BsYWluT2JqZWN0ID0gKHZhbCkgPT4gdG9UeXBlU3RyaW5nKHZhbCkgPT09ICdbb2JqZWN0IE9iamVjdF0nO1xyXG5jb25zdCBpc0ludGVnZXJLZXkgPSAoa2V5KSA9PiBpc1N0cmluZyhrZXkpICYmXHJcbiAgICBrZXkgIT09ICdOYU4nICYmXHJcbiAgICBrZXlbMF0gIT09ICctJyAmJlxyXG4gICAgJycgKyBwYXJzZUludChrZXksIDEwKSA9PT0ga2V5O1xyXG5jb25zdCBpc1Jlc2VydmVkUHJvcCA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChcclxuLy8gdGhlIGxlYWRpbmcgY29tbWEgaXMgaW50ZW50aW9uYWwgc28gZW1wdHkgc3RyaW5nIFwiXCIgaXMgYWxzbyBpbmNsdWRlZFxyXG4nLGtleSxyZWYscmVmX2ZvcixyZWZfa2V5LCcgK1xyXG4gICAgJ29uVm5vZGVCZWZvcmVNb3VudCxvblZub2RlTW91bnRlZCwnICtcclxuICAgICdvblZub2RlQmVmb3JlVXBkYXRlLG9uVm5vZGVVcGRhdGVkLCcgK1xyXG4gICAgJ29uVm5vZGVCZWZvcmVVbm1vdW50LG9uVm5vZGVVbm1vdW50ZWQnKTtcclxuY29uc3QgaXNCdWlsdEluRGlyZWN0aXZlID0gLyojX19QVVJFX18qLyBtYWtlTWFwKCdiaW5kLGNsb2FrLGVsc2UtaWYsZWxzZSxmb3IsaHRtbCxpZixtb2RlbCxvbixvbmNlLHByZSxzaG93LHNsb3QsdGV4dCxtZW1vJyk7XHJcbmNvbnN0IGNhY2hlU3RyaW5nRnVuY3Rpb24gPSAoZm4pID0+IHtcclxuICAgIGNvbnN0IGNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICAgIHJldHVybiAoKHN0cikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGhpdCA9IGNhY2hlW3N0cl07XHJcbiAgICAgICAgcmV0dXJuIGhpdCB8fCAoY2FjaGVbc3RyXSA9IGZuKHN0cikpO1xyXG4gICAgfSk7XHJcbn07XHJcbmNvbnN0IGNhbWVsaXplUkUgPSAvLShcXHcpL2c7XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuY29uc3QgY2FtZWxpemUgPSBjYWNoZVN0cmluZ0Z1bmN0aW9uKChzdHIpID0+IHtcclxuICAgIHJldHVybiBzdHIucmVwbGFjZShjYW1lbGl6ZVJFLCAoXywgYykgPT4gKGMgPyBjLnRvVXBwZXJDYXNlKCkgOiAnJykpO1xyXG59KTtcclxuY29uc3QgaHlwaGVuYXRlUkUgPSAvXFxCKFtBLVpdKS9nO1xyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmNvbnN0IGh5cGhlbmF0ZSA9IGNhY2hlU3RyaW5nRnVuY3Rpb24oKHN0cikgPT4gc3RyLnJlcGxhY2UoaHlwaGVuYXRlUkUsICctJDEnKS50b0xvd2VyQ2FzZSgpKTtcclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5jb25zdCBjYXBpdGFsaXplID0gY2FjaGVTdHJpbmdGdW5jdGlvbigoc3RyKSA9PiBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSkpO1xyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmNvbnN0IHRvSGFuZGxlcktleSA9IGNhY2hlU3RyaW5nRnVuY3Rpb24oKHN0cikgPT4gc3RyID8gYG9uJHtjYXBpdGFsaXplKHN0cil9YCA6IGBgKTtcclxuLy8gY29tcGFyZSB3aGV0aGVyIGEgdmFsdWUgaGFzIGNoYW5nZWQsIGFjY291bnRpbmcgZm9yIE5hTi5cclxuY29uc3QgaGFzQ2hhbmdlZCA9ICh2YWx1ZSwgb2xkVmFsdWUpID0+ICFPYmplY3QuaXModmFsdWUsIG9sZFZhbHVlKTtcclxuY29uc3QgaW52b2tlQXJyYXlGbnMgPSAoZm5zLCBhcmcpID0+IHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm5zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgZm5zW2ldKGFyZyk7XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IGRlZiA9IChvYmosIGtleSwgdmFsdWUpID0+IHtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xyXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcclxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgICAgICB2YWx1ZVxyXG4gICAgfSk7XHJcbn07XHJcbmNvbnN0IHRvTnVtYmVyID0gKHZhbCkgPT4ge1xyXG4gICAgY29uc3QgbiA9IHBhcnNlRmxvYXQodmFsKTtcclxuICAgIHJldHVybiBpc05hTihuKSA/IHZhbCA6IG47XHJcbn07XHJcbmxldCBfZ2xvYmFsVGhpcztcclxuY29uc3QgZ2V0R2xvYmFsVGhpcyA9ICgpID0+IHtcclxuICAgIHJldHVybiAoX2dsb2JhbFRoaXMgfHxcclxuICAgICAgICAoX2dsb2JhbFRoaXMgPVxyXG4gICAgICAgICAgICB0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCdcclxuICAgICAgICAgICAgICAgID8gZ2xvYmFsVGhpc1xyXG4gICAgICAgICAgICAgICAgOiB0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCdcclxuICAgICAgICAgICAgICAgICAgICA/IHNlbGZcclxuICAgICAgICAgICAgICAgICAgICA6IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gd2luZG93XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2xvYmFsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSk7XHJcbn07XHJcbmNvbnN0IGlkZW50UkUgPSAvXltfJGEtekEtWlxceEEwLVxcdUZGRkZdW18kYS16QS1aMC05XFx4QTAtXFx1RkZGRl0qJC87XHJcbmZ1bmN0aW9uIGdlblByb3BzQWNjZXNzRXhwKG5hbWUpIHtcclxuICAgIHJldHVybiBpZGVudFJFLnRlc3QobmFtZSlcclxuICAgICAgICA/IGBfX3Byb3BzLiR7bmFtZX1gXHJcbiAgICAgICAgOiBgX19wcm9wc1ske0pTT04uc3RyaW5naWZ5KG5hbWUpfV1gO1xyXG59XG5cbmV4cG9ydCB7IEVNUFRZX0FSUiwgRU1QVFlfT0JKLCBOTywgTk9PUCwgUGF0Y2hGbGFnTmFtZXMsIGNhbWVsaXplLCBjYXBpdGFsaXplLCBkZWYsIGVzY2FwZUh0bWwsIGVzY2FwZUh0bWxDb21tZW50LCBleHRlbmQsIGdlblByb3BzQWNjZXNzRXhwLCBnZW5lcmF0ZUNvZGVGcmFtZSwgZ2V0R2xvYmFsVGhpcywgaGFzQ2hhbmdlZCwgaGFzT3duLCBoeXBoZW5hdGUsIGluY2x1ZGVCb29sZWFuQXR0ciwgaW52b2tlQXJyYXlGbnMsIGlzQXJyYXksIGlzQm9vbGVhbkF0dHIsIGlzQnVpbHRJbkRpcmVjdGl2ZSwgaXNEYXRlLCBpc0Z1bmN0aW9uLCBpc0dsb2JhbGx5V2hpdGVsaXN0ZWQsIGlzSFRNTFRhZywgaXNJbnRlZ2VyS2V5LCBpc0tub3duSHRtbEF0dHIsIGlzS25vd25TdmdBdHRyLCBpc01hcCwgaXNNb2RlbExpc3RlbmVyLCBpc05vVW5pdE51bWVyaWNTdHlsZVByb3AsIGlzT2JqZWN0LCBpc09uLCBpc1BsYWluT2JqZWN0LCBpc1Byb21pc2UsIGlzUmVzZXJ2ZWRQcm9wLCBpc1NTUlNhZmVBdHRyTmFtZSwgaXNTVkdUYWcsIGlzU2V0LCBpc1NwZWNpYWxCb29sZWFuQXR0ciwgaXNTdHJpbmcsIGlzU3ltYm9sLCBpc1ZvaWRUYWcsIGxvb3NlRXF1YWwsIGxvb3NlSW5kZXhPZiwgbWFrZU1hcCwgbm9ybWFsaXplQ2xhc3MsIG5vcm1hbGl6ZVByb3BzLCBub3JtYWxpemVTdHlsZSwgb2JqZWN0VG9TdHJpbmcsIHBhcnNlU3RyaW5nU3R5bGUsIHByb3BzVG9BdHRyTWFwLCByZW1vdmUsIHNsb3RGbGFnc1RleHQsIHN0cmluZ2lmeVN0eWxlLCB0b0Rpc3BsYXlTdHJpbmcsIHRvSGFuZGxlcktleSwgdG9OdW1iZXIsIHRvUmF3VHlwZSwgdG9UeXBlU3RyaW5nIH07XG4iLCJpbXBvcnQgeyB0b1JlZnMsIGdldEN1cnJlbnRJbnN0YW5jZSwgcmVmLCBjb21wdXRlZCwgd2F0Y2gsIG5leHRUaWNrLCBvbk1vdW50ZWQsIG9wZW5CbG9jaywgY3JlYXRlRWxlbWVudEJsb2NrLCBub3JtYWxpemVDbGFzcywgY3JlYXRlQ29tbWVudFZOb2RlLCBtZXJnZVByb3BzLCB3aXRoTW9kaWZpZXJzLCBGcmFnbWVudCwgcmVuZGVyTGlzdCwgcmVuZGVyU2xvdCwgY3JlYXRlVGV4dFZOb2RlLCB0b0Rpc3BsYXlTdHJpbmcsIGNyZWF0ZUVsZW1lbnRWTm9kZSB9IGZyb20gJ3Z1ZSc7XG5cbmZ1bmN0aW9uIGlzTnVsbGlzaCAodmFsKSB7XG4gIHJldHVybiBbbnVsbCwgdW5kZWZpbmVkXS5pbmRleE9mKHZhbCkgIT09IC0xXG59XG5cbmZ1bmN0aW9uIHVzZURhdGEgKHByb3BzLCBjb250ZXh0LCBkZXApXG57XG4gIGNvbnN0IHsgb2JqZWN0LCB2YWx1ZVByb3AsIG1vZGUgfSA9IHRvUmVmcyhwcm9wcyk7XG5cbiAgY29uc3QgJHRoaXMgPSBnZXRDdXJyZW50SW5zdGFuY2UoKS5wcm94eTtcblxuICAvLyA9PT09PT09PT09PT0gREVQRU5ERU5DSUVTID09PT09PT09PT09PVxuXG4gIGNvbnN0IGl2ID0gZGVwLml2O1xuXG4gIC8vID09PT09PT09PT09PT09PSBNRVRIT0RTID09PT09PT09PT09PT09XG5cbiAgY29uc3QgdXBkYXRlID0gKHZhbCkgPT4ge1xuICAgIC8vIFNldHRpbmcgb2JqZWN0KHMpIGFzIGludGVybmFsIHZhbHVlXG4gICAgaXYudmFsdWUgPSBtYWtlSW50ZXJuYWwodmFsKTtcblxuICAgIC8vIFNldHRpbmcgb2JqZWN0KHMpIG9yIHBsYWluIHZhbHVlIGFzIGV4dGVybmFsIFxuICAgIC8vIHZhbHVlIGJhc2VkIG9uIGBvcHRpb25gIHNldHRpbmdcbiAgICBjb25zdCBleHRlcm5hbFZhbCA9IG1ha2VFeHRlcm5hbCh2YWwpO1xuXG4gICAgY29udGV4dC5lbWl0KCdjaGFuZ2UnLCBleHRlcm5hbFZhbCwgJHRoaXMpO1xuICAgIGNvbnRleHQuZW1pdCgnaW5wdXQnLCBleHRlcm5hbFZhbCk7XG4gICAgY29udGV4dC5lbWl0KCd1cGRhdGU6bW9kZWxWYWx1ZScsIGV4dGVybmFsVmFsKTtcbiAgfTsgXG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IG1ha2VFeHRlcm5hbCA9ICh2YWwpID0+IHtcbiAgICAvLyBJZiBleHRlcm5hbCB2YWx1ZSBzaG91bGQgYmUgb2JqZWN0XG4gICAgLy8gbm8gdHJhbnNmb3JtYXRpb24gaXMgcmVxdWlyZWRcbiAgICBpZiAob2JqZWN0LnZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsXG4gICAgfVxuXG4gICAgLy8gTm8gbmVlZCB0byB0cmFuc2Zvcm0gaWYgZW1wdHkgdmFsdWVcbiAgICBpZiAoaXNOdWxsaXNoKHZhbCkpIHtcbiAgICAgIHJldHVybiB2YWxcbiAgICB9XG5cbiAgICAvLyBJZiBleHRlcm5hbCBzaG91bGQgYmUgcGxhaW4gdHJhbnNmb3JtXG4gICAgLy8gdmFsdWUgb2JqZWN0IHRvIHBsYWluIHZhbHVlc1xuICAgIHJldHVybiAhQXJyYXkuaXNBcnJheSh2YWwpID8gdmFsW3ZhbHVlUHJvcC52YWx1ZV0gOiB2YWwubWFwKHYgPT4gdlt2YWx1ZVByb3AudmFsdWVdKVxuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBtYWtlSW50ZXJuYWwgPSAodmFsKSA9PiB7XG4gICAgaWYgKGlzTnVsbGlzaCh2YWwpKSB7XG4gICAgICByZXR1cm4gbW9kZS52YWx1ZSA9PT0gJ3NpbmdsZScgPyB7fSA6IFtdXG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgdXBkYXRlLFxuICB9XG59XG5cbmZ1bmN0aW9uIHVzZVZhbHVlIChwcm9wcywgY29udGV4dClcbntcbiAgY29uc3QgeyB2YWx1ZSwgbW9kZWxWYWx1ZSwgbW9kZSwgdmFsdWVQcm9wIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIC8vID09PT09PT09PT09PT09PT0gREFUQSA9PT09PT09PT09PT09PT09XG5cbiAgLy8gaW50ZXJuYWxWYWx1ZVxuICBjb25zdCBpdiA9IHJlZihtb2RlLnZhbHVlICE9PSAnc2luZ2xlJyA/IFtdIDoge30pO1xuXG4gIC8vID09PT09PT09PT09PT09IENPTVBVVEVEID09PT09PT09PT09PT09XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgLy8gZXh0ZXJuYWxWYWx1ZVxuICBjb25zdCBldiA9IG1vZGVsVmFsdWUgJiYgbW9kZWxWYWx1ZS52YWx1ZSAhPT0gdW5kZWZpbmVkID8gbW9kZWxWYWx1ZSA6IHZhbHVlO1xuXG4gIGNvbnN0IHBsYWluVmFsdWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIG1vZGUudmFsdWUgPT09ICdzaW5nbGUnID8gaXYudmFsdWVbdmFsdWVQcm9wLnZhbHVlXSA6IGl2LnZhbHVlLm1hcCh2PT52W3ZhbHVlUHJvcC52YWx1ZV0pXG4gIH0pO1xuXG4gIGNvbnN0IHRleHRWYWx1ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gbW9kZS52YWx1ZSAhPT0gJ3NpbmdsZScgPyBpdi52YWx1ZS5tYXAodj0+dlt2YWx1ZVByb3AudmFsdWVdKS5qb2luKCcsJykgOiBpdi52YWx1ZVt2YWx1ZVByb3AudmFsdWVdXG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgaXYsXG4gICAgaW50ZXJuYWxWYWx1ZTogaXYsXG4gICAgZXYsXG4gICAgZXh0ZXJuYWxWYWx1ZTogZXYsXG4gICAgdGV4dFZhbHVlLFxuICAgIHBsYWluVmFsdWUsXG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlU2VhcmNoIChwcm9wcywgY29udGV4dCwgZGVwKVxueyAgY29uc3QgeyByZWdleCB9ID0gdG9SZWZzKHByb3BzKTtcblxuICBjb25zdCAkdGhpcyA9IGdldEN1cnJlbnRJbnN0YW5jZSgpLnByb3h5O1xuXG4gIC8vID09PT09PT09PT09PSBERVBFTkRFTkNJRVMgPT09PT09PT09PT09XG5cbiAgY29uc3QgaXNPcGVuID0gZGVwLmlzT3BlbjtcbiAgY29uc3Qgb3BlbiA9IGRlcC5vcGVuO1xuXG4gIC8vID09PT09PT09PT09PT09PT0gREFUQSA9PT09PT09PT09PT09PT09XG5cbiAgY29uc3Qgc2VhcmNoID0gcmVmKG51bGwpO1xuXG4gIGNvbnN0IGlucHV0ID0gcmVmKG51bGwpO1xuXG4gIC8vID09PT09PT09PT09PT09PSBNRVRIT0RTID09PT09PT09PT09PT09XG5cbiAgY29uc3QgY2xlYXJTZWFyY2ggPSAoKSA9PiB7XG4gICAgc2VhcmNoLnZhbHVlID0gJyc7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU2VhcmNoSW5wdXQgPSAoZSkgPT4ge1xuICAgIHNlYXJjaC52YWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUtleXByZXNzID0gKGUpID0+IHtcbiAgICBpZiAocmVnZXggJiYgcmVnZXgudmFsdWUpIHtcbiAgICAgIGxldCByZWdleHAgPSByZWdleC52YWx1ZTtcblxuICAgICAgaWYgKHR5cGVvZiByZWdleHAgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJlZ2V4cCA9IG5ldyBSZWdFeHAocmVnZXhwKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFlLmtleS5tYXRjaChyZWdleHApKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlUGFzdGUgPSAoZSkgPT4ge1xuICAgIGlmIChyZWdleCAmJiByZWdleC52YWx1ZSkge1xuICAgICAgbGV0IGNsaXBib2FyZERhdGEgPSBlLmNsaXBib2FyZERhdGEgfHwgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gd2luZG93LmNsaXBib2FyZERhdGE7XG4gICAgICBsZXQgcGFzdGVkRGF0YSA9IGNsaXBib2FyZERhdGEuZ2V0RGF0YSgnVGV4dCcpO1xuXG4gICAgICBsZXQgcmVnZXhwID0gcmVnZXgudmFsdWU7XG5cbiAgICAgIGlmICh0eXBlb2YgcmVnZXhwID09PSAnc3RyaW5nJykge1xuICAgICAgICByZWdleHAgPSBuZXcgUmVnRXhwKHJlZ2V4cCk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmICghcGFzdGVkRGF0YS5zcGxpdCgnJykuZXZlcnkoYyA9PiAhIWMubWF0Y2gocmVnZXhwKSkpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnRleHQuZW1pdCgncGFzdGUnLCBlLCAkdGhpcyk7XG4gIH07XG5cbiAgLy8gPT09PT09PT09PT09PT0gV0FUQ0hFUlMgPT09PT09PT09PT09PT1cblxuICB3YXRjaChzZWFyY2gsICh2YWwpID0+IHtcbiAgICBpZiAoIWlzT3Blbi52YWx1ZSAmJiB2YWwpIHtcbiAgICAgIG9wZW4oKTtcbiAgICB9XG5cbiAgICBjb250ZXh0LmVtaXQoJ3NlYXJjaC1jaGFuZ2UnLCB2YWwsICR0aGlzKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzZWFyY2gsXG4gICAgaW5wdXQsXG4gICAgY2xlYXJTZWFyY2gsXG4gICAgaGFuZGxlU2VhcmNoSW5wdXQsXG4gICAgaGFuZGxlS2V5cHJlc3MsXG4gICAgaGFuZGxlUGFzdGUsXG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlUG9pbnRlciQxIChwcm9wcywgY29udGV4dCwgZGVwKVxue1xuICBjb25zdCB7IGdyb3VwU2VsZWN0LCBtb2RlLCBncm91cHMsIGRpc2FibGVkUHJvcCB9ID0gdG9SZWZzKHByb3BzKTtcblxuICAvLyA9PT09PT09PT09PT09PT09IERBVEEgPT09PT09PT09PT09PT09PVxuXG4gIGNvbnN0IHBvaW50ZXIgPSByZWYobnVsbCk7XG5cbiAgLy8gPT09PT09PT09PT09PT09IE1FVEhPRFMgPT09PT09PT09PT09PT1cblxuICBjb25zdCBzZXRQb2ludGVyID0gKG9wdGlvbikgPT4ge1xuICAgIGlmIChvcHRpb24gPT09IHVuZGVmaW5lZCB8fCAob3B0aW9uICE9PSBudWxsICYmIG9wdGlvbltkaXNhYmxlZFByb3AudmFsdWVdKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGdyb3Vwcy52YWx1ZSAmJiBvcHRpb24gJiYgb3B0aW9uLmdyb3VwICYmIChtb2RlLnZhbHVlID09PSAnc2luZ2xlJyB8fCAhZ3JvdXBTZWxlY3QudmFsdWUpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBwb2ludGVyLnZhbHVlID0gb3B0aW9uO1xuICB9O1xuXG4gIGNvbnN0IGNsZWFyUG9pbnRlciA9ICgpID0+IHtcbiAgICBzZXRQb2ludGVyKG51bGwpO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgcG9pbnRlcixcbiAgICBzZXRQb2ludGVyLFxuICAgIGNsZWFyUG9pbnRlcixcbiAgfVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemUgKHN0ciwgc3RyaWN0ID0gdHJ1ZSkge1xuICByZXR1cm4gc3RyaWN0XG4gICAgPyBTdHJpbmcoc3RyKS50b0xvd2VyQ2FzZSgpLnRyaW0oKVxuICAgIDogU3RyaW5nKHN0cikubm9ybWFsaXplKCdORkQnKS5yZXBsYWNlKC9cXHB7RGlhY3JpdGljfS9ndSwgJycpLnRvTG93ZXJDYXNlKCkudHJpbSgpXG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0ICh2YXJpYWJsZSkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhcmlhYmxlKSA9PT0gJ1tvYmplY3QgT2JqZWN0XSdcbn1cblxuZnVuY3Rpb24gYXJyYXlzRXF1YWwgKGFycmF5MSwgYXJyYXkyKSB7XG4gIGNvbnN0IGFycmF5MlNvcnRlZCA9IGFycmF5Mi5zbGljZSgpLnNvcnQoKTtcblxuICByZXR1cm4gYXJyYXkxLmxlbmd0aCA9PT0gYXJyYXkyLmxlbmd0aCAmJiBhcnJheTEuc2xpY2UoKS5zb3J0KCkuZXZlcnkoZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09IGFycmF5MlNvcnRlZFtpbmRleF07XG4gIH0pXG59XG5cbmZ1bmN0aW9uIHVzZU9wdGlvbnMgKHByb3BzLCBjb250ZXh0LCBkZXApXG57XG4gIGNvbnN0IHsgXG4gICAgb3B0aW9ucywgbW9kZSwgdHJhY2tCeTogdHJhY2tCeV8sIGxpbWl0LCBoaWRlU2VsZWN0ZWQsIGNyZWF0ZVRhZywgY3JlYXRlT3B0aW9uOiBjcmVhdGVPcHRpb25fLCBsYWJlbCxcbiAgICBhcHBlbmROZXdUYWcsIGFwcGVuZE5ld09wdGlvbjogYXBwZW5kTmV3T3B0aW9uXywgbXVsdGlwbGVMYWJlbCwgb2JqZWN0LCBsb2FkaW5nLCBkZWxheSwgcmVzb2x2ZU9uTG9hZCxcbiAgICBtaW5DaGFycywgZmlsdGVyUmVzdWx0cywgY2xlYXJPblNlYXJjaCwgY2xlYXJPblNlbGVjdCwgdmFsdWVQcm9wLFxuICAgIGNhbkRlc2VsZWN0LCBtYXgsIHN0cmljdCwgY2xvc2VPblNlbGVjdCwgZ3JvdXBzOiBncm91cHBlZCwgcmV2ZXJzZSwgaW5maW5pdGUsXG4gICAgZ3JvdXBPcHRpb25zLCBncm91cEhpZGVFbXB0eSwgZ3JvdXBTZWxlY3QsIG9uQ3JlYXRlLCBkaXNhYmxlZFByb3AsIHNlYXJjaFN0YXJ0LFxuICB9ID0gdG9SZWZzKHByb3BzKTtcblxuICBjb25zdCAkdGhpcyA9IGdldEN1cnJlbnRJbnN0YW5jZSgpLnByb3h5O1xuXG4gIC8vID09PT09PT09PT09PSBERVBFTkRFTkNJRVMgPT09PT09PT09PT09XG5cbiAgY29uc3QgaXYgPSBkZXAuaXY7XG4gIGNvbnN0IGV2ID0gZGVwLmV2O1xuICBjb25zdCBzZWFyY2ggPSBkZXAuc2VhcmNoO1xuICBjb25zdCBjbGVhclNlYXJjaCA9IGRlcC5jbGVhclNlYXJjaDtcbiAgY29uc3QgdXBkYXRlID0gZGVwLnVwZGF0ZTtcbiAgY29uc3QgcG9pbnRlciA9IGRlcC5wb2ludGVyO1xuICBjb25zdCBjbGVhclBvaW50ZXIgPSBkZXAuY2xlYXJQb2ludGVyO1xuICBjb25zdCBmb2N1cyA9IGRlcC5mb2N1cztcbiAgY29uc3QgZGVhY3RpdmF0ZSA9IGRlcC5kZWFjdGl2YXRlO1xuICBjb25zdCBjbG9zZSA9IGRlcC5jbG9zZTtcblxuICAvLyA9PT09PT09PT09PT09PT09IERBVEEgPT09PT09PT09PT09PT09PVxuXG4gIC8vIG5vIGV4cG9ydFxuICAvLyBhcHBlbmRlZE9wdGlvbnNcbiAgY29uc3QgYXAgPSByZWYoW10pO1xuXG4gIC8vIG5vIGV4cG9ydFxuICAvLyByZXNvbHZlZE9wdGlvbnNcbiAgY29uc3Qgcm8gPSByZWYoW10pO1xuXG4gIGNvbnN0IHJlc29sdmluZyA9IHJlZihmYWxzZSk7XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IHNlYXJjaFdhdGNoZXIgPSByZWYobnVsbCk7XG5cbiAgY29uc3Qgb2Zmc2V0ID0gcmVmKGluZmluaXRlLnZhbHVlICYmIGxpbWl0LnZhbHVlID09PSAtMSA/IDEwIDogbGltaXQudmFsdWUpO1xuXG4gIC8vID09PT09PT09PT09PT09IENPTVBVVEVEID09PT09PT09PT09PT09XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IGNyZWF0ZU9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gY3JlYXRlVGFnLnZhbHVlIHx8IGNyZWF0ZU9wdGlvbl8udmFsdWUgfHwgZmFsc2VcbiAgfSk7XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IGFwcGVuZE5ld09wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoYXBwZW5kTmV3VGFnLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBhcHBlbmROZXdUYWcudmFsdWVcbiAgICB9IGVsc2UgaWYgKGFwcGVuZE5ld09wdGlvbl8udmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGFwcGVuZE5ld09wdGlvbl8udmFsdWVcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9KTtcblxuICAvLyBubyBleHBvcnRcbiAgLy8gZXh0ZW5kZWRPcHRpb25zXG4gIGNvbnN0IGVvID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChncm91cHBlZC52YWx1ZSkge1xuICAgICAgbGV0IGdyb3VwcyA9IHJvLnZhbHVlIHx8IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIFtdO1xuXG4gICAgICBsZXQgZW8gPSBbXTtcblxuICAgICAgZ3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICAgIG9wdGlvbnNUb0FycmF5KGdyb3VwW2dyb3VwT3B0aW9ucy52YWx1ZV0pLmZvckVhY2goKG9wdGlvbikgPT4ge1xuICAgICAgICAgIGVvLnB1c2goT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9uLCBncm91cFtkaXNhYmxlZFByb3AudmFsdWVdID8geyBbZGlzYWJsZWRQcm9wLnZhbHVlXTogdHJ1ZSB9IDoge30pKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGVvXG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBlbyA9IG9wdGlvbnNUb0FycmF5KHJvLnZhbHVlIHx8IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIFtdKTtcblxuICAgICAgaWYgKGFwLnZhbHVlLmxlbmd0aCkge1xuICAgICAgICBlbyA9IGVvLmNvbmNhdChhcC52YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlb1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgZmcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKCFncm91cHBlZC52YWx1ZSkge1xuICAgICAgcmV0dXJuIFtdXG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbHRlckdyb3Vwcygocm8udmFsdWUgfHwgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gW10pLm1hcCgoZ3JvdXApID0+IHtcbiAgICAgIGNvbnN0IGFycmF5T3B0aW9ucyA9IG9wdGlvbnNUb0FycmF5KGdyb3VwW2dyb3VwT3B0aW9ucy52YWx1ZV0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5ncm91cCxcbiAgICAgICAgZ3JvdXA6IHRydWUsXG4gICAgICAgIFtncm91cE9wdGlvbnMudmFsdWVdOiBmaWx0ZXJPcHRpb25zKGFycmF5T3B0aW9ucywgZmFsc2UpLm1hcChvID0+IE9iamVjdC5hc3NpZ24oe30sIG8sIGdyb3VwW2Rpc2FibGVkUHJvcC52YWx1ZV0gPyB7IFtkaXNhYmxlZFByb3AudmFsdWVdOiB0cnVlIH0gOiB7fSkpLFxuICAgICAgICBfX1ZJU0lCTEVfXzogZmlsdGVyT3B0aW9ucyhhcnJheU9wdGlvbnMpLm1hcChvID0+IE9iamVjdC5hc3NpZ24oe30sIG8sIGdyb3VwW2Rpc2FibGVkUHJvcC52YWx1ZV0gPyB7IFtkaXNhYmxlZFByb3AudmFsdWVdOiB0cnVlIH0gOiB7fSkpLFxuICAgICAgfVxuICAgICAgLy8gRGlmZmVyZW5jZSBiZXR3ZWVuIF9fVklTSUJMRV9fIGFuZCB7Z3JvdXBPcHRpb25zfTogdmlzaWJsZSBkb2VzIG5vdCBjb250YWluIHNlbGVjdGVkIG9wdGlvbnMgd2hlbiBoaWRlU2VsZWN0ZWQ9dHJ1ZVxuICAgIH0pKVxuICB9KTtcblxuICAvLyBwcmVGaWx0ZXJlZE9wdGlvbnNcbiAgY29uc3QgcGZvID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGxldCBvcHRpb25zID0gZW8udmFsdWU7XG5cbiAgICBpZiAocmV2ZXJzZS52YWx1ZSkge1xuICAgICAgb3B0aW9ucyA9IG9wdGlvbnMucmV2ZXJzZSgpO1xuICAgIH1cblxuICAgIGlmIChjcmVhdGVkT3B0aW9uLnZhbHVlLmxlbmd0aCkge1xuICAgICAgb3B0aW9ucyA9IGNyZWF0ZWRPcHRpb24udmFsdWUuY29uY2F0KG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHJldHVybiBmaWx0ZXJPcHRpb25zKG9wdGlvbnMpXG4gIH0pO1xuXG4gIC8vIGZpbHRlcmVkT3B0aW9uc1xuICBjb25zdCBmbyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBsZXQgb3B0aW9ucyA9IHBmby52YWx1ZTtcblxuICAgIGlmIChvZmZzZXQudmFsdWUgPiAwKSB7XG4gICAgICBvcHRpb25zID0gb3B0aW9ucy5zbGljZSgwLCBvZmZzZXQudmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiBvcHRpb25zXG4gIH0pO1xuXG4gIGNvbnN0IGhhc1NlbGVjdGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHN3aXRjaCAobW9kZS52YWx1ZSkge1xuICAgICAgY2FzZSAnc2luZ2xlJzpcbiAgICAgICAgcmV0dXJuICFpc051bGxpc2goaXYudmFsdWVbdmFsdWVQcm9wLnZhbHVlXSlcblxuICAgICAgY2FzZSAnbXVsdGlwbGUnOlxuICAgICAgY2FzZSAndGFncyc6XG4gICAgICAgIHJldHVybiAhaXNOdWxsaXNoKGl2LnZhbHVlKSAmJiBpdi52YWx1ZS5sZW5ndGggPiAwXG4gICAgfVxuICB9KTtcblxuICBjb25zdCBtdWx0aXBsZUxhYmVsVGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gbXVsdGlwbGVMYWJlbCAhPT0gdW5kZWZpbmVkICYmIG11bHRpcGxlTGFiZWwudmFsdWUgIT09IHVuZGVmaW5lZFxuICAgICAgPyBtdWx0aXBsZUxhYmVsLnZhbHVlKGl2LnZhbHVlLCAkdGhpcylcbiAgICAgIDogKGl2LnZhbHVlICYmIGl2LnZhbHVlLmxlbmd0aCA+IDEgPyBgJHtpdi52YWx1ZS5sZW5ndGh9IG9wdGlvbnMgc2VsZWN0ZWRgIDogYDEgb3B0aW9uIHNlbGVjdGVkYClcbiAgfSk7XG5cbiAgY29uc3Qgbm9PcHRpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiAhZW8udmFsdWUubGVuZ3RoICYmICFyZXNvbHZpbmcudmFsdWUgJiYgIWNyZWF0ZWRPcHRpb24udmFsdWUubGVuZ3RoXG4gIH0pO1xuXG5cbiAgY29uc3Qgbm9SZXN1bHRzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBlby52YWx1ZS5sZW5ndGggPiAwICYmIGZvLnZhbHVlLmxlbmd0aCA9PSAwICYmICgoc2VhcmNoLnZhbHVlICYmIGdyb3VwcGVkLnZhbHVlKSB8fCAhZ3JvdXBwZWQudmFsdWUpXG4gIH0pO1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBjcmVhdGVkT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChjcmVhdGVPcHRpb24udmFsdWUgPT09IGZhbHNlIHx8ICFzZWFyY2gudmFsdWUpIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cblxuICAgIHJldHVybiBnZXRPcHRpb25CeVRyYWNrQnkoc2VhcmNoLnZhbHVlKSAhPT0gLTEgPyBbXSA6IFt7XG4gICAgICBbdmFsdWVQcm9wLnZhbHVlXTogc2VhcmNoLnZhbHVlLFxuICAgICAgW2xhYmVsLnZhbHVlXTogc2VhcmNoLnZhbHVlLFxuICAgICAgW3RyYWNrQnkudmFsdWVdOiBzZWFyY2gudmFsdWUsXG4gICAgICBfX0NSRUFURV9fOiB0cnVlLFxuICAgIH1dXG4gIH0pO1xuXG4gIGNvbnN0IHRyYWNrQnkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRyYWNrQnlfLnZhbHVlIHx8IGxhYmVsLnZhbHVlXG4gIH0pO1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBudWxsVmFsdWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgc3dpdGNoIChtb2RlLnZhbHVlKSB7XG4gICAgICBjYXNlICdzaW5nbGUnOlxuICAgICAgICByZXR1cm4gbnVsbFxuXG4gICAgICBjYXNlICdtdWx0aXBsZSc6XG4gICAgICBjYXNlICd0YWdzJzpcbiAgICAgICAgcmV0dXJuIFtdXG4gICAgfVxuICB9KTtcblxuICBjb25zdCBidXN5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBsb2FkaW5nLnZhbHVlIHx8IHJlc29sdmluZy52YWx1ZVxuICB9KTtcblxuICAvLyA9PT09PT09PT09PT09PT0gTUVUSE9EUyA9PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2FycmF5fG9iamVjdHxzdHJpbmd8bnVtYmVyfSBvcHRpb24gXG4gICAqL1xuICBjb25zdCBzZWxlY3QgPSAob3B0aW9uKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb24gIT09ICdvYmplY3QnKSB7XG4gICAgICBvcHRpb24gPSBnZXRPcHRpb24ob3B0aW9uKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKG1vZGUudmFsdWUpIHtcbiAgICAgIGNhc2UgJ3NpbmdsZSc6XG4gICAgICAgIHVwZGF0ZShvcHRpb24pO1xuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICdtdWx0aXBsZSc6XG4gICAgICBjYXNlICd0YWdzJzpcbiAgICAgICAgdXBkYXRlKChpdi52YWx1ZSkuY29uY2F0KG9wdGlvbikpO1xuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIGNvbnRleHQuZW1pdCgnc2VsZWN0JywgZmluYWxWYWx1ZShvcHRpb24pLCBvcHRpb24sICR0aGlzKTtcbiAgfTtcblxuICBjb25zdCBkZXNlbGVjdCA9IChvcHRpb24pID0+IHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbiAhPT0gJ29iamVjdCcpIHtcbiAgICAgIG9wdGlvbiA9IGdldE9wdGlvbihvcHRpb24pO1xuICAgIH1cblxuICAgIHN3aXRjaCAobW9kZS52YWx1ZSkge1xuICAgICAgY2FzZSAnc2luZ2xlJzpcbiAgICAgICAgY2xlYXIoKTtcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAndGFncyc6XG4gICAgICBjYXNlICdtdWx0aXBsZSc6XG4gICAgICAgIHVwZGF0ZShBcnJheS5pc0FycmF5KG9wdGlvbilcbiAgICAgICAgICA/IGl2LnZhbHVlLmZpbHRlcih2ID0+IG9wdGlvbi5tYXAobyA9PiBvW3ZhbHVlUHJvcC52YWx1ZV0pLmluZGV4T2Yodlt2YWx1ZVByb3AudmFsdWVdKSA9PT0gLTEpXG4gICAgICAgICAgOiBpdi52YWx1ZS5maWx0ZXIodiA9PiB2W3ZhbHVlUHJvcC52YWx1ZV0gIT0gb3B0aW9uW3ZhbHVlUHJvcC52YWx1ZV0pKTtcbiAgICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjb250ZXh0LmVtaXQoJ2Rlc2VsZWN0JywgZmluYWxWYWx1ZShvcHRpb24pLCBvcHRpb24sICR0aGlzKTtcbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgZmluYWxWYWx1ZSA9IChvcHRpb24pID0+IHtcbiAgICByZXR1cm4gb2JqZWN0LnZhbHVlID8gb3B0aW9uIDogb3B0aW9uW3ZhbHVlUHJvcC52YWx1ZV1cbiAgfTtcblxuICBjb25zdCByZW1vdmUgPSAob3B0aW9uKSA9PiB7XG4gICAgZGVzZWxlY3Qob3B0aW9uKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVUYWdSZW1vdmUgPSAob3B0aW9uLCBlKSA9PiB7XG4gICAgaWYgKGUuYnV0dG9uICE9PSAwKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICByZW1vdmUob3B0aW9uKTtcbiAgfTtcblxuICBjb25zdCBjbGVhciA9ICgpID0+IHtcbiAgICBjb250ZXh0LmVtaXQoJ2NsZWFyJywgJHRoaXMpO1xuICAgIHVwZGF0ZShudWxsVmFsdWUudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGlzU2VsZWN0ZWQgPSAob3B0aW9uKSA9PiB7XG4gICAgaWYgKG9wdGlvbi5ncm91cCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gbW9kZS52YWx1ZSA9PT0gJ3NpbmdsZScgPyBmYWxzZSA6IGFyZUFsbFNlbGVjdGVkKG9wdGlvbltncm91cE9wdGlvbnMudmFsdWVdKSAmJiBvcHRpb25bZ3JvdXBPcHRpb25zLnZhbHVlXS5sZW5ndGhcbiAgICB9XG5cbiAgICBzd2l0Y2ggKG1vZGUudmFsdWUpIHtcbiAgICAgIGNhc2UgJ3NpbmdsZSc6XG4gICAgICAgIHJldHVybiAhaXNOdWxsaXNoKGl2LnZhbHVlKSAmJiBpdi52YWx1ZVt2YWx1ZVByb3AudmFsdWVdID09IG9wdGlvblt2YWx1ZVByb3AudmFsdWVdXG5cbiAgICAgIGNhc2UgJ3RhZ3MnOlxuICAgICAgY2FzZSAnbXVsdGlwbGUnOlxuICAgICAgICByZXR1cm4gIWlzTnVsbGlzaChpdi52YWx1ZSkgJiYgaXYudmFsdWUubWFwKG8gPT4gb1t2YWx1ZVByb3AudmFsdWVdKS5pbmRleE9mKG9wdGlvblt2YWx1ZVByb3AudmFsdWVdKSAhPT0gLTFcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaXNEaXNhYmxlZCA9IChvcHRpb24pID0+IHtcbiAgICByZXR1cm4gb3B0aW9uW2Rpc2FibGVkUHJvcC52YWx1ZV0gPT09IHRydWVcbiAgfTtcblxuICBjb25zdCBpc01heCA9ICgpID0+IHtcbiAgICBpZiAobWF4ID09PSB1bmRlZmluZWQgfHwgbWF4LnZhbHVlID09PSAtMSB8fCAoIWhhc1NlbGVjdGVkLnZhbHVlICYmIG1heC52YWx1ZSA+IDApKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGl2LnZhbHVlLmxlbmd0aCA+PSBtYXgudmFsdWVcbiAgfTtcblxuICBjb25zdCBoYW5kbGVPcHRpb25DbGljayA9IChvcHRpb24pID0+IHtcbiAgICBpZiAoaXNEaXNhYmxlZChvcHRpb24pKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAob25DcmVhdGUgJiYgb25DcmVhdGUudmFsdWUgJiYgIWlzU2VsZWN0ZWQob3B0aW9uKSAmJiBvcHRpb24uX19DUkVBVEVfXykge1xuICAgICAgb3B0aW9uID0geyAuLi5vcHRpb24gfTtcbiAgICAgIGRlbGV0ZSBvcHRpb24uX19DUkVBVEVfXztcblxuICAgICAgb3B0aW9uID0gb25DcmVhdGUudmFsdWUob3B0aW9uLCAkdGhpcyk7XG4gICAgICBcbiAgICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgIHJlc29sdmluZy52YWx1ZSA9IHRydWU7XG4gICAgICAgIG9wdGlvbi50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICByZXNvbHZpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICBoYW5kbGVPcHRpb25TZWxlY3QocmVzdWx0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuXG4gICAgICB9IFxuICAgIH1cblxuICAgIGhhbmRsZU9wdGlvblNlbGVjdChvcHRpb24pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9wdGlvblNlbGVjdCA9IChvcHRpb24pID0+IHtcbiAgICBpZiAob3B0aW9uLl9fQ1JFQVRFX18pIHtcbiAgICAgIG9wdGlvbiA9IHsgLi4ub3B0aW9uIH07XG4gICAgICBkZWxldGUgb3B0aW9uLl9fQ1JFQVRFX187XG4gICAgfVxuICAgIFxuICAgIHN3aXRjaCAobW9kZS52YWx1ZSkge1xuICAgICAgY2FzZSAnc2luZ2xlJzpcbiAgICAgICAgaWYgKG9wdGlvbiAmJiBpc1NlbGVjdGVkKG9wdGlvbikpIHtcbiAgICAgICAgICBpZiAoY2FuRGVzZWxlY3QudmFsdWUpIHtcbiAgICAgICAgICAgIGRlc2VsZWN0KG9wdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbikge1xuICAgICAgICAgIGhhbmRsZU9wdGlvbkFwcGVuZChvcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKGNsZWFyT25TZWxlY3QudmFsdWUpIHtcbiAgICAgICAgICBjbGVhclNlYXJjaCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNsb3NlT25TZWxlY3QudmFsdWUpIHtcbiAgICAgICAgICBjbGVhclBvaW50ZXIoKTtcbiAgICAgICAgICBjbG9zZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbikge1xuICAgICAgICAgIHNlbGVjdChvcHRpb24pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ211bHRpcGxlJzpcbiAgICAgICAgaWYgKG9wdGlvbiAmJiBpc1NlbGVjdGVkKG9wdGlvbikpIHtcbiAgICAgICAgICBkZXNlbGVjdChvcHRpb24pO1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzTWF4KCkpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb24pIHtcbiAgICAgICAgICBoYW5kbGVPcHRpb25BcHBlbmQob3B0aW9uKTtcbiAgICAgICAgICBzZWxlY3Qob3B0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjbGVhck9uU2VsZWN0LnZhbHVlKSB7XG4gICAgICAgICAgY2xlYXJTZWFyY2goKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoaWRlU2VsZWN0ZWQudmFsdWUpIHtcbiAgICAgICAgICBjbGVhclBvaW50ZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjbG9zZU9uU2VsZWN0LnZhbHVlKSB7XG4gICAgICAgICAgY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICd0YWdzJzpcbiAgICAgICAgaWYgKG9wdGlvbiAmJiBpc1NlbGVjdGVkKG9wdGlvbikpIHtcbiAgICAgICAgICBkZXNlbGVjdChvcHRpb24pO1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzTWF4KCkpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb24pIHtcbiAgICAgICAgICBoYW5kbGVPcHRpb25BcHBlbmQob3B0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjbGVhck9uU2VsZWN0LnZhbHVlKSB7XG4gICAgICAgICAgY2xlYXJTZWFyY2goKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb24pIHtcbiAgICAgICAgICBzZWxlY3Qob3B0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoaWRlU2VsZWN0ZWQudmFsdWUpIHtcbiAgICAgICAgICBjbGVhclBvaW50ZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjbG9zZU9uU2VsZWN0LnZhbHVlKSB7XG4gICAgICAgICAgY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIGlmICghY2xvc2VPblNlbGVjdC52YWx1ZSkge1xuICAgICAgZm9jdXMoKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlR3JvdXBDbGljayA9IChncm91cCkgPT4ge1xuICAgIGlmIChpc0Rpc2FibGVkKGdyb3VwKSB8fCBtb2RlLnZhbHVlID09PSAnc2luZ2xlJyB8fCAhZ3JvdXBTZWxlY3QudmFsdWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHN3aXRjaCAobW9kZS52YWx1ZSkge1xuICAgICAgY2FzZSAnbXVsdGlwbGUnOlxuICAgICAgY2FzZSAndGFncyc6XG4gICAgICAgIGlmIChhcmVBbGxFbmFibGVkU2VsZWN0ZWQoZ3JvdXBbZ3JvdXBPcHRpb25zLnZhbHVlXSkpIHtcbiAgICAgICAgICBkZXNlbGVjdChncm91cFtncm91cE9wdGlvbnMudmFsdWVdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZWxlY3QoZ3JvdXBbZ3JvdXBPcHRpb25zLnZhbHVlXVxuICAgICAgICAgICAgLmZpbHRlcihvID0+IGl2LnZhbHVlLm1hcCh2ID0+IHZbdmFsdWVQcm9wLnZhbHVlXSkuaW5kZXhPZihvW3ZhbHVlUHJvcC52YWx1ZV0pID09PSAtMSlcbiAgICAgICAgICAgIC5maWx0ZXIobyA9PiAhb1tkaXNhYmxlZFByb3AudmFsdWVdKVxuICAgICAgICAgICAgLmZpbHRlcigobywgaykgPT4gaXYudmFsdWUubGVuZ3RoICsgMSArIGsgPD0gbWF4LnZhbHVlIHx8IG1heC52YWx1ZSA9PT0gLTEpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIGlmIChjbG9zZU9uU2VsZWN0LnZhbHVlKSB7XG4gICAgICBkZWFjdGl2YXRlKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9wdGlvbkFwcGVuZCA9IChvcHRpb24pID0+IHtcbiAgICBpZiAoZ2V0T3B0aW9uKG9wdGlvblt2YWx1ZVByb3AudmFsdWVdKSA9PT0gdW5kZWZpbmVkICYmIGNyZWF0ZU9wdGlvbi52YWx1ZSkge1xuICAgICAgY29udGV4dC5lbWl0KCd0YWcnLCBvcHRpb25bdmFsdWVQcm9wLnZhbHVlXSwgJHRoaXMpO1xuICAgICAgY29udGV4dC5lbWl0KCdvcHRpb24nLCBvcHRpb25bdmFsdWVQcm9wLnZhbHVlXSwgJHRoaXMpO1xuXG4gICAgICBpZiAoYXBwZW5kTmV3T3B0aW9uLnZhbHVlKSB7XG4gICAgICAgIGFwcGVuZE9wdGlvbihvcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjbGVhclNlYXJjaCgpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBzZWxlY3RBbGwgPSAoKSA9PiB7XG4gICAgaWYgKG1vZGUudmFsdWUgPT09ICdzaW5nbGUnKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzZWxlY3QoZm8udmFsdWUpO1xuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBhcmVBbGxFbmFibGVkU2VsZWN0ZWQgPSAob3B0aW9ucykgPT4ge1xuICAgIHJldHVybiBvcHRpb25zLmZpbmQobyA9PiAhaXNTZWxlY3RlZChvKSAmJiAhb1tkaXNhYmxlZFByb3AudmFsdWVdKSA9PT0gdW5kZWZpbmVkXG4gIH07XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IGFyZUFsbFNlbGVjdGVkID0gKG9wdGlvbnMpID0+IHtcbiAgICByZXR1cm4gb3B0aW9ucy5maW5kKG8gPT4gIWlzU2VsZWN0ZWQobykpID09PSB1bmRlZmluZWRcbiAgfTtcblxuICBjb25zdCBnZXRPcHRpb24gPSAodmFsKSA9PiB7XG4gICAgcmV0dXJuIGVvLnZhbHVlW2VvLnZhbHVlLm1hcChvID0+IFN0cmluZyhvW3ZhbHVlUHJvcC52YWx1ZV0pKS5pbmRleE9mKFN0cmluZyh2YWwpKV1cbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgZ2V0T3B0aW9uQnlUcmFja0J5ID0gKHZhbCwgbm9ybSA9IHRydWUpID0+IHtcbiAgICByZXR1cm4gZW8udmFsdWUubWFwKG8gPT4gcGFyc2VJbnQob1t0cmFja0J5LnZhbHVlXSkgPT0gb1t0cmFja0J5LnZhbHVlXSA/IHBhcnNlSW50KG9bdHJhY2tCeS52YWx1ZV0pIDogb1t0cmFja0J5LnZhbHVlXSkuaW5kZXhPZihcbiAgICAgIHBhcnNlSW50KHZhbCkgPT0gdmFsID8gcGFyc2VJbnQodmFsKSA6IHZhbFxuICAgIClcbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3Qgc2hvdWxkSGlkZU9wdGlvbiA9IChvcHRpb24pID0+IHtcbiAgICByZXR1cm4gWyd0YWdzJywgJ211bHRpcGxlJ10uaW5kZXhPZihtb2RlLnZhbHVlKSAhPT0gLTEgJiYgaGlkZVNlbGVjdGVkLnZhbHVlICYmIGlzU2VsZWN0ZWQob3B0aW9uKVxuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBhcHBlbmRPcHRpb24gPSAob3B0aW9uKSA9PiB7XG4gICAgYXAudmFsdWUucHVzaChvcHRpb24pO1xuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBmaWx0ZXJHcm91cHMgPSAoZ3JvdXBzKSA9PiB7XG4gICAgLy8gSWYgdGhlIHNlYXJjaCBoYXMgdmFsdWUgd2UgbmVlZCB0byBmaWx0ZXIgYW1vbmcgXG4gICAgLy8gaGUgb25lcyB0aGF0IGFyZSB2aXNpYmxlIHRvIHRoZSB1c2VyIHRvIGF2b2lkXG4gICAgLy8gZGlzcGxheWluZyBncm91cHMgd2hpY2ggdGVjaG5pY2FsbHkgaGF2ZSBvcHRpb25zXG4gICAgLy8gYmFzZWQgb24gc2VhcmNoIGJ1dCB0aGF0IG9wdGlvbiBpcyBhbHJlYWR5IHNlbGVjdGVkLlxuICAgIHJldHVybiBncm91cEhpZGVFbXB0eS52YWx1ZVxuICAgICAgPyBncm91cHMuZmlsdGVyKGcgPT4gc2VhcmNoLnZhbHVlXG4gICAgICAgICAgPyBnLl9fVklTSUJMRV9fLmxlbmd0aFxuICAgICAgICAgIDogZ1tncm91cE9wdGlvbnMudmFsdWVdLmxlbmd0aFxuICAgICAgICApXG4gICAgICA6IGdyb3Vwcy5maWx0ZXIoZyA9PiBzZWFyY2gudmFsdWUgPyBnLl9fVklTSUJMRV9fLmxlbmd0aCA6IHRydWUpXG4gIH07XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IGZpbHRlck9wdGlvbnMgPSAob3B0aW9ucywgZXhjbHVkZUhpZGVTZWxlY3RlZCA9IHRydWUpID0+IHtcbiAgICBsZXQgZm8gPSBvcHRpb25zO1xuICAgIFxuICAgIGlmIChzZWFyY2gudmFsdWUgJiYgZmlsdGVyUmVzdWx0cy52YWx1ZSkge1xuICAgICAgZm8gPSBmby5maWx0ZXIoKG9wdGlvbikgPT4ge1xuICAgICAgICByZXR1cm4gc2VhcmNoU3RhcnQudmFsdWVcbiAgICAgICAgICA/IG5vcm1hbGl6ZShvcHRpb25bdHJhY2tCeS52YWx1ZV0sIHN0cmljdC52YWx1ZSkuc3RhcnRzV2l0aChub3JtYWxpemUoc2VhcmNoLnZhbHVlLCBzdHJpY3QudmFsdWUpKVxuICAgICAgICAgIDogbm9ybWFsaXplKG9wdGlvblt0cmFja0J5LnZhbHVlXSwgc3RyaWN0LnZhbHVlKS5pbmRleE9mKG5vcm1hbGl6ZShzZWFyY2gudmFsdWUsIHN0cmljdC52YWx1ZSkpICE9PSAtMVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGhpZGVTZWxlY3RlZC52YWx1ZSAmJiBleGNsdWRlSGlkZVNlbGVjdGVkKSB7XG4gICAgICBmbyA9IGZvLmZpbHRlcigob3B0aW9uKSA9PiAhc2hvdWxkSGlkZU9wdGlvbihvcHRpb24pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm9cbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3Qgb3B0aW9uc1RvQXJyYXkgPSAob3B0aW9ucykgPT4ge1xuICAgIGxldCB1byA9IG9wdGlvbnM7XG4gICAgXG4gICAgLy8gVHJhbnNmb3JtaW5nIGFuIG9iamVjdCB0byBhbiBhcnJheSBvZiBvYmplY3RzXG4gICAgaWYgKGlzT2JqZWN0KHVvKSkge1xuICAgICAgdW8gPSBPYmplY3Qua2V5cyh1bykubWFwKChrZXkpID0+IHtcbiAgICAgICAgbGV0IHZhbCA9IHVvW2tleV07XG5cbiAgICAgICAgcmV0dXJuIHsgW3ZhbHVlUHJvcC52YWx1ZV06IGtleSwgW3RyYWNrQnkudmFsdWVdOiB2YWwsIFtsYWJlbC52YWx1ZV06IHZhbH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFRyYW5zZm9ybWluZyBhbiBwbGFpbiBhcnJheXMgdG8gYW4gYXJyYXkgb2Ygb2JqZWN0c1xuICAgIHVvID0gdW8ubWFwKCh2YWwpID0+IHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyA/IHZhbCA6IHsgW3ZhbHVlUHJvcC52YWx1ZV06IHZhbCwgW3RyYWNrQnkudmFsdWVdOiB2YWwsIFtsYWJlbC52YWx1ZV06IHZhbH1cbiAgICB9KTtcblxuICAgIHJldHVybiB1b1xuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBpbml0SW50ZXJuYWxWYWx1ZSA9ICgpID0+IHtcbiAgICBpZiAoIWlzTnVsbGlzaChldi52YWx1ZSkpIHtcbiAgICAgIGl2LnZhbHVlID0gbWFrZUludGVybmFsKGV2LnZhbHVlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgcmVzb2x2ZU9wdGlvbnMgPSAoY2FsbGJhY2spID0+IHtcbiAgICByZXNvbHZpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIG9wdGlvbnMudmFsdWUoc2VhcmNoLnZhbHVlLCAkdGhpcykudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgcm8udmFsdWUgPSByZXNwb25zZSB8fCBbXTtcblxuICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBjYWxsYmFjayhyZXNwb25zZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG5cbiAgICAgICAgcm8udmFsdWUgPSBbXTtcblxuICAgICAgICByZXNvbHZpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9KTtcbiAgICB9KVxuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCByZWZyZXNoTGFiZWxzID0gKCkgPT4ge1xuICAgIGlmICghaGFzU2VsZWN0ZWQudmFsdWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChtb2RlLnZhbHVlID09PSAnc2luZ2xlJykge1xuICAgICAgbGV0IG9wdGlvbiA9IGdldE9wdGlvbihpdi52YWx1ZVt2YWx1ZVByb3AudmFsdWVdKTtcblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChvcHRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsZXQgbmV3TGFiZWwgPSBvcHRpb25bbGFiZWwudmFsdWVdO1xuXG4gICAgICAgIGl2LnZhbHVlW2xhYmVsLnZhbHVlXSA9IG5ld0xhYmVsO1xuXG4gICAgICAgIGlmIChvYmplY3QudmFsdWUpIHtcbiAgICAgICAgICBldi52YWx1ZVtsYWJlbC52YWx1ZV0gPSBuZXdMYWJlbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpdi52YWx1ZS5mb3JFYWNoKCh2YWwsIGkpID0+IHtcbiAgICAgICAgbGV0IG9wdGlvbiA9IGdldE9wdGlvbihpdi52YWx1ZVtpXVt2YWx1ZVByb3AudmFsdWVdKTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAob3B0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBsZXQgbmV3TGFiZWwgPSBvcHRpb25bbGFiZWwudmFsdWVdO1xuXG4gICAgICAgICAgaXYudmFsdWVbaV1bbGFiZWwudmFsdWVdID0gbmV3TGFiZWw7XG5cbiAgICAgICAgICBpZiAob2JqZWN0LnZhbHVlKSB7XG4gICAgICAgICAgICBldi52YWx1ZVtpXVtsYWJlbC52YWx1ZV0gPSBuZXdMYWJlbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCByZWZyZXNoT3B0aW9ucyA9IChjYWxsYmFjaykgPT4ge1xuICAgIHJlc29sdmVPcHRpb25zKGNhbGxiYWNrKTtcbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgbWFrZUludGVybmFsID0gKHZhbCkgPT4ge1xuICAgIGlmIChpc051bGxpc2godmFsKSkge1xuICAgICAgcmV0dXJuIG1vZGUudmFsdWUgPT09ICdzaW5nbGUnID8ge30gOiBbXVxuICAgIH1cblxuICAgIGlmIChvYmplY3QudmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWxcbiAgICB9XG5cbiAgICAvLyBJZiBleHRlcm5hbCBzaG91bGQgYmUgcGxhaW4gdHJhbnNmb3JtXG4gICAgLy8gdmFsdWUgb2JqZWN0IHRvIHBsYWluIHZhbHVlc1xuICAgIHJldHVybiBtb2RlLnZhbHVlID09PSAnc2luZ2xlJyA/IGdldE9wdGlvbih2YWwpIHx8IHt9IDogdmFsLmZpbHRlcih2ID0+ICEhIGdldE9wdGlvbih2KSkubWFwKHYgPT4gZ2V0T3B0aW9uKHYpKVxuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBpbml0U2VhcmNoV2F0Y2hlciA9ICgpID0+IHtcbiAgICBzZWFyY2hXYXRjaGVyLnZhbHVlID0gd2F0Y2goc2VhcmNoLCAocXVlcnkpID0+IHtcbiAgICAgIGlmIChxdWVyeS5sZW5ndGggPCBtaW5DaGFycy52YWx1ZSB8fCAoIXF1ZXJ5ICYmIG1pbkNoYXJzLnZhbHVlICE9PSAwKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgcmVzb2x2aW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgaWYgKGNsZWFyT25TZWFyY2gudmFsdWUpIHtcbiAgICAgICAgcm8udmFsdWUgPSBbXTtcbiAgICAgIH1cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAocXVlcnkgIT0gc2VhcmNoLnZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBvcHRpb25zLnZhbHVlKHNlYXJjaC52YWx1ZSwgJHRoaXMpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgaWYgKHF1ZXJ5ID09IHNlYXJjaC52YWx1ZSB8fCAhc2VhcmNoLnZhbHVlKSB7XG4gICAgICAgICAgICByby52YWx1ZSA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgcG9pbnRlci52YWx1ZSA9IGZvLnZhbHVlLmZpbHRlcihvID0+IG9bZGlzYWJsZWRQcm9wLnZhbHVlXSAhPT0gdHJ1ZSlbMF0gfHwgbnVsbDtcbiAgICAgICAgICAgIHJlc29sdmluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkuY2F0Y2goIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIChlKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBkZWxheS52YWx1ZSk7XG5cbiAgICB9LCB7IGZsdXNoOiAnc3luYycgfSk7XG4gIH07XG5cbiAgLy8gPT09PT09PT09PT09PT09PSBIT09LUyA9PT09PT09PT09PT09PT1cblxuICBpZiAobW9kZS52YWx1ZSAhPT0gJ3NpbmdsZScgJiYgIWlzTnVsbGlzaChldi52YWx1ZSkgJiYgIUFycmF5LmlzQXJyYXkoZXYudmFsdWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB2LW1vZGVsIG11c3QgYmUgYW4gYXJyYXkgd2hlbiB1c2luZyBcIiR7bW9kZS52YWx1ZX1cIiBtb2RlYClcbiAgfVxuXG4gIGlmIChvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zLnZhbHVlID09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAocmVzb2x2ZU9uTG9hZC52YWx1ZSkge1xuICAgICAgcmVzb2x2ZU9wdGlvbnMoaW5pdEludGVybmFsVmFsdWUpO1xuICAgIH0gZWxzZSBpZiAob2JqZWN0LnZhbHVlID09IHRydWUpIHtcbiAgICAgIGluaXRJbnRlcm5hbFZhbHVlKCk7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHJvLnZhbHVlID0gb3B0aW9ucy52YWx1ZTtcblxuICAgIGluaXRJbnRlcm5hbFZhbHVlKCk7XG4gIH1cbiAgXG4gIC8vID09PT09PT09PT09PT09IFdBVENIRVJTID09PT09PT09PT09PT09XG5cbiAgaWYgKGRlbGF5LnZhbHVlID4gLTEpIHtcbiAgICBpbml0U2VhcmNoV2F0Y2hlcigpO1xuICB9XG5cbiAgd2F0Y2goZGVsYXksICh2YWx1ZSwgb2xkKSA9PiB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoc2VhcmNoV2F0Y2hlci52YWx1ZSkge1xuICAgICAgc2VhcmNoV2F0Y2hlci52YWx1ZSgpO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSA+PSAwKSB7XG4gICAgICBpbml0U2VhcmNoV2F0Y2hlcigpO1xuICAgIH1cbiAgfSk7XG5cbiAgd2F0Y2goZXYsIChuZXdWYWx1ZSkgPT4ge1xuICAgIGlmIChpc051bGxpc2gobmV3VmFsdWUpKSB7XG4gICAgICBpdi52YWx1ZSA9IG1ha2VJbnRlcm5hbChuZXdWYWx1ZSk7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzd2l0Y2ggKG1vZGUudmFsdWUpIHtcbiAgICAgIGNhc2UgJ3NpbmdsZSc6XG4gICAgICAgIGlmIChvYmplY3QudmFsdWUgPyBuZXdWYWx1ZVt2YWx1ZVByb3AudmFsdWVdICE9IGl2LnZhbHVlW3ZhbHVlUHJvcC52YWx1ZV0gOiBuZXdWYWx1ZSAhPSBpdi52YWx1ZVt2YWx1ZVByb3AudmFsdWVdKSB7XG4gICAgICAgICAgaXYudmFsdWUgPSBtYWtlSW50ZXJuYWwobmV3VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ211bHRpcGxlJzpcbiAgICAgIGNhc2UgJ3RhZ3MnOlxuICAgICAgICBpZiAoIWFycmF5c0VxdWFsKG9iamVjdC52YWx1ZSA/IG5ld1ZhbHVlLm1hcChvID0+IG9bdmFsdWVQcm9wLnZhbHVlXSkgOiBuZXdWYWx1ZSwgaXYudmFsdWUubWFwKG8gPT4gb1t2YWx1ZVByb3AudmFsdWVdKSkpIHtcbiAgICAgICAgICBpdi52YWx1ZSA9IG1ha2VJbnRlcm5hbChuZXdWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH0sIHsgZGVlcDogdHJ1ZSB9KTtcblxuICB3YXRjaChvcHRpb25zLCAobiwgbykgPT4ge1xuICAgIGlmICh0eXBlb2YgcHJvcHMub3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaWYgKHJlc29sdmVPbkxvYWQudmFsdWUpIHtcbiAgICAgICAgcmVzb2x2ZU9wdGlvbnMoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcm8udmFsdWUgPSBwcm9wcy5vcHRpb25zO1xuXG4gICAgICBpZiAoIU9iamVjdC5rZXlzKGl2LnZhbHVlKS5sZW5ndGgpIHtcbiAgICAgICAgaW5pdEludGVybmFsVmFsdWUoKTtcbiAgICAgIH1cblxuICAgICAgcmVmcmVzaExhYmVscygpO1xuICAgIH1cbiAgfSk7XG5cbiAgd2F0Y2gobGFiZWwsIHJlZnJlc2hMYWJlbHMpO1xuXG4gIHJldHVybiB7XG4gICAgcGZvLFxuICAgIGZvLFxuICAgIGZpbHRlcmVkT3B0aW9uczogZm8sXG4gICAgaGFzU2VsZWN0ZWQsXG4gICAgbXVsdGlwbGVMYWJlbFRleHQsXG4gICAgZW8sXG4gICAgZXh0ZW5kZWRPcHRpb25zOiBlbyxcbiAgICBmZyxcbiAgICBmaWx0ZXJlZEdyb3VwczogZmcsXG4gICAgbm9PcHRpb25zLFxuICAgIG5vUmVzdWx0cyxcbiAgICByZXNvbHZpbmcsXG4gICAgYnVzeSxcbiAgICBvZmZzZXQsXG4gICAgc2VsZWN0LFxuICAgIGRlc2VsZWN0LFxuICAgIHJlbW92ZSxcbiAgICBzZWxlY3RBbGwsXG4gICAgY2xlYXIsXG4gICAgaXNTZWxlY3RlZCxcbiAgICBpc0Rpc2FibGVkLFxuICAgIGlzTWF4LFxuICAgIGdldE9wdGlvbixcbiAgICBoYW5kbGVPcHRpb25DbGljayxcbiAgICBoYW5kbGVHcm91cENsaWNrLFxuICAgIGhhbmRsZVRhZ1JlbW92ZSxcbiAgICByZWZyZXNoT3B0aW9ucyxcbiAgICByZXNvbHZlT3B0aW9ucyxcbiAgICByZWZyZXNoTGFiZWxzLFxuICB9XG59XG5cbmZ1bmN0aW9uIHVzZVBvaW50ZXIgKHByb3BzLCBjb250ZXh0LCBkZXApXG57XG4gIGNvbnN0IHtcbiAgICB2YWx1ZVByb3AsIHNob3dPcHRpb25zLCBzZWFyY2hhYmxlLCBncm91cExhYmVsLFxuICAgIGdyb3VwczogZ3JvdXBwZWQsIG1vZGUsIGdyb3VwU2VsZWN0LCBkaXNhYmxlZFByb3AsXG4gIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIC8vID09PT09PT09PT09PSBERVBFTkRFTkNJRVMgPT09PT09PT09PT09XG5cbiAgY29uc3QgZm8gPSBkZXAuZm87XG4gIGNvbnN0IGZnID0gZGVwLmZnO1xuICBjb25zdCBoYW5kbGVPcHRpb25DbGljayA9IGRlcC5oYW5kbGVPcHRpb25DbGljaztcbiAgY29uc3QgaGFuZGxlR3JvdXBDbGljayA9IGRlcC5oYW5kbGVHcm91cENsaWNrO1xuICBjb25zdCBzZWFyY2ggPSBkZXAuc2VhcmNoO1xuICBjb25zdCBwb2ludGVyID0gZGVwLnBvaW50ZXI7XG4gIGNvbnN0IHNldFBvaW50ZXIgPSBkZXAuc2V0UG9pbnRlcjtcbiAgY29uc3QgY2xlYXJQb2ludGVyID0gZGVwLmNsZWFyUG9pbnRlcjtcbiAgY29uc3QgbXVsdGlzZWxlY3QgPSBkZXAubXVsdGlzZWxlY3Q7XG4gIGNvbnN0IGlzT3BlbiA9IGRlcC5pc09wZW47XG5cbiAgLy8gPT09PT09PT09PT09PT0gQ09NUFVURUQgPT09PT09PT09PT09PT1cblxuICAvLyBubyBleHBvcnRcbiAgY29uc3Qgb3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gZm8udmFsdWUuZmlsdGVyKG8gPT4gIW9bZGlzYWJsZWRQcm9wLnZhbHVlXSlcbiAgfSk7XG5cbiAgY29uc3QgZ3JvdXBzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBmZy52YWx1ZS5maWx0ZXIobyA9PiAhb1tkaXNhYmxlZFByb3AudmFsdWVdKVxuICB9KTtcblxuICBjb25zdCBjYW5Qb2ludEdyb3VwcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gbW9kZS52YWx1ZSAhPT0gJ3NpbmdsZScgJiYgZ3JvdXBTZWxlY3QudmFsdWVcbiAgfSk7XG5cbiAgY29uc3QgaXNQb2ludGVyR3JvdXAgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHBvaW50ZXIudmFsdWUgJiYgcG9pbnRlci52YWx1ZS5ncm91cFxuICB9KTtcblxuICBjb25zdCBjdXJyZW50R3JvdXAgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIGdldFBhcmVudEdyb3VwKHBvaW50ZXIudmFsdWUpXG4gIH0pO1xuXG4gIGNvbnN0IHByZXZHcm91cCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBncm91cCA9IGlzUG9pbnRlckdyb3VwLnZhbHVlID8gcG9pbnRlci52YWx1ZSA6IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIGdldFBhcmVudEdyb3VwKHBvaW50ZXIudmFsdWUpO1xuICAgIGNvbnN0IGdyb3VwSW5kZXggPSBncm91cHMudmFsdWUubWFwKGcgPT4gZ1tncm91cExhYmVsLnZhbHVlXSkuaW5kZXhPZihncm91cFtncm91cExhYmVsLnZhbHVlXSk7XG4gICAgbGV0IHByZXZHcm91cCA9IGdyb3Vwcy52YWx1ZVtncm91cEluZGV4IC0gMV07XG5cbiAgICBpZiAocHJldkdyb3VwID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHByZXZHcm91cCA9IGxhc3RHcm91cC52YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJldkdyb3VwXG4gIH0pO1xuICBcbiAgY29uc3QgbmV4dEdyb3VwID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGxldCBuZXh0SW5kZXggPSBncm91cHMudmFsdWUubWFwKGcgPT4gZy5sYWJlbCkuaW5kZXhPZihpc1BvaW50ZXJHcm91cC52YWx1ZVxuICAgICAgPyBwb2ludGVyLnZhbHVlW2dyb3VwTGFiZWwudmFsdWVdXG4gICAgICA6IGdldFBhcmVudEdyb3VwKHBvaW50ZXIudmFsdWUpW2dyb3VwTGFiZWwudmFsdWVdKSArIDE7XG5cbiAgICBpZiAoZ3JvdXBzLnZhbHVlLmxlbmd0aCA8PSBuZXh0SW5kZXgpIHtcbiAgICAgIG5leHRJbmRleCA9IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdyb3Vwcy52YWx1ZVtuZXh0SW5kZXhdXG4gIH0pO1xuXG4gIGNvbnN0IGxhc3RHcm91cCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gWy4uLmdyb3Vwcy52YWx1ZV0uc2xpY2UoLTEpWzBdXG4gIH0pO1xuICBcbiAgY29uc3QgY3VycmVudEdyb3VwRmlyc3RFbmFibGVkT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBwb2ludGVyLnZhbHVlLl9fVklTSUJMRV9fLmZpbHRlcihvID0+ICFvW2Rpc2FibGVkUHJvcC52YWx1ZV0pWzBdXG4gIH0pO1xuXG4gIGNvbnN0IGN1cnJlbnRHcm91cFByZXZFbmFibGVkT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBjdXJyZW50R3JvdXAudmFsdWUuX19WSVNJQkxFX18uZmlsdGVyKG8gPT4gIW9bZGlzYWJsZWRQcm9wLnZhbHVlXSk7XG4gICAgcmV0dXJuIG9wdGlvbnNbb3B0aW9ucy5tYXAobyA9PiBvW3ZhbHVlUHJvcC52YWx1ZV0pLmluZGV4T2YocG9pbnRlci52YWx1ZVt2YWx1ZVByb3AudmFsdWVdKSAtIDFdXG4gIH0pO1xuICBcbiAgY29uc3QgY3VycmVudEdyb3VwTmV4dEVuYWJsZWRPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGdldFBhcmVudEdyb3VwKHBvaW50ZXIudmFsdWUpLl9fVklTSUJMRV9fLmZpbHRlcihvID0+ICFvW2Rpc2FibGVkUHJvcC52YWx1ZV0pO1xuICAgIHJldHVybiBvcHRpb25zW29wdGlvbnMubWFwKG8gPT4gb1t2YWx1ZVByb3AudmFsdWVdKS5pbmRleE9mKHBvaW50ZXIudmFsdWVbdmFsdWVQcm9wLnZhbHVlXSkgKyAxXVxuICB9KTtcblxuICBjb25zdCBwcmV2R3JvdXBMYXN0RW5hYmxlZE9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gWy4uLnByZXZHcm91cC52YWx1ZS5fX1ZJU0lCTEVfXy5maWx0ZXIobyA9PiAhb1tkaXNhYmxlZFByb3AudmFsdWVdKV0uc2xpY2UoLTEpWzBdXG4gIH0pO1xuXG4gIGNvbnN0IGxhc3RHcm91cExhc3RFbmFibGVkT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBbLi4ubGFzdEdyb3VwLnZhbHVlLl9fVklTSUJMRV9fLmZpbHRlcihvID0+ICFvW2Rpc2FibGVkUHJvcC52YWx1ZV0pXS5zbGljZSgtMSlbMF1cbiAgfSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09IE1FVEhPRFMgPT09PT09PT09PT09PT1cblxuICBjb25zdCBpc1BvaW50ZWQgPSAob3B0aW9uKSA9PiB7XG4gICAgcmV0dXJuICghIXBvaW50ZXIudmFsdWUgJiYgKFxuICAgICAgKCFvcHRpb24uZ3JvdXAgJibCoHBvaW50ZXIudmFsdWVbdmFsdWVQcm9wLnZhbHVlXSA9PSBvcHRpb25bdmFsdWVQcm9wLnZhbHVlXSkgfHxcbiAgICAgIChvcHRpb24uZ3JvdXAgIT09IHVuZGVmaW5lZCAmJsKgcG9pbnRlci52YWx1ZVtncm91cExhYmVsLnZhbHVlXSA9PSBvcHRpb25bZ3JvdXBMYWJlbC52YWx1ZV0pXG4gICAgKSkgPyB0cnVlIDogdW5kZWZpbmVkXG4gIH07XG5cbiAgY29uc3Qgc2V0UG9pbnRlckZpcnN0ID0gKCkgPT4ge1xuICAgIHNldFBvaW50ZXIob3B0aW9ucy52YWx1ZVswXSB8fCBudWxsKTtcbiAgfTtcblxuICBjb25zdCBzZWxlY3RQb2ludGVyID0gKCkgPT4ge1xuICAgIGlmICghcG9pbnRlci52YWx1ZSB8fCBwb2ludGVyLnZhbHVlW2Rpc2FibGVkUHJvcC52YWx1ZV0gPT09IHRydWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChpc1BvaW50ZXJHcm91cC52YWx1ZSkge1xuICAgICAgaGFuZGxlR3JvdXBDbGljayhwb2ludGVyLnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGFuZGxlT3B0aW9uQ2xpY2socG9pbnRlci52YWx1ZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGZvcndhcmRQb2ludGVyID0gKCkgPT4ge1xuICAgIGlmIChwb2ludGVyLnZhbHVlID09PSBudWxsKSB7XG4gICAgICBzZXRQb2ludGVyKChncm91cHBlZC52YWx1ZSAmJiBjYW5Qb2ludEdyb3Vwcy52YWx1ZSA/IGdyb3Vwcy52YWx1ZVswXSA6IG9wdGlvbnMudmFsdWVbMF0pIHx8IG51bGwpO1xuICAgIH1cbiAgICBlbHNlIGlmIChncm91cHBlZC52YWx1ZSAmJiBjYW5Qb2ludEdyb3Vwcy52YWx1ZSkge1xuICAgICAgbGV0IG5leHRQb2ludGVyID0gaXNQb2ludGVyR3JvdXAudmFsdWUgPyBjdXJyZW50R3JvdXBGaXJzdEVuYWJsZWRPcHRpb24udmFsdWUgOiBjdXJyZW50R3JvdXBOZXh0RW5hYmxlZE9wdGlvbi52YWx1ZTtcblxuICAgICAgaWYgKG5leHRQb2ludGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbmV4dFBvaW50ZXIgPSBuZXh0R3JvdXAudmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHNldFBvaW50ZXIobmV4dFBvaW50ZXIgfHwgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gbnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBuZXh0ID0gb3B0aW9ucy52YWx1ZS5tYXAobyA9PiBvW3ZhbHVlUHJvcC52YWx1ZV0pLmluZGV4T2YocG9pbnRlci52YWx1ZVt2YWx1ZVByb3AudmFsdWVdKSArIDE7XG5cbiAgICAgIGlmIChvcHRpb25zLnZhbHVlLmxlbmd0aCA8PSBuZXh0KSB7XG4gICAgICAgIG5leHQgPSAwO1xuICAgICAgfVxuXG4gICAgICBzZXRQb2ludGVyKG9wdGlvbnMudmFsdWVbbmV4dF0gfHwgbnVsbCk7XG4gICAgfVxuXG4gICAgbmV4dFRpY2soKCkgPT4ge1xuICAgICAgYWRqdXN0V3JhcHBlclNjcm9sbFRvUG9pbnRlcigpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGJhY2t3YXJkUG9pbnRlciA9ICgpID0+IHtcbiAgICBpZiAocG9pbnRlci52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbGV0IHByZXZQb2ludGVyID0gb3B0aW9ucy52YWx1ZVtvcHRpb25zLnZhbHVlLmxlbmd0aCAtIDFdO1xuXG4gICAgICBpZiAoZ3JvdXBwZWQudmFsdWUgJiYgY2FuUG9pbnRHcm91cHMudmFsdWUpIHtcbiAgICAgICAgcHJldlBvaW50ZXIgPSBsYXN0R3JvdXBMYXN0RW5hYmxlZE9wdGlvbi52YWx1ZTtcblxuICAgICAgICBpZiAocHJldlBvaW50ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHByZXZQb2ludGVyID0gbGFzdEdyb3VwLnZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHNldFBvaW50ZXIocHJldlBvaW50ZXIgIHx8IG51bGwpO1xuICAgIH1cbiAgICBlbHNlIGlmIChncm91cHBlZC52YWx1ZSAmJiBjYW5Qb2ludEdyb3Vwcy52YWx1ZSkge1xuICAgICAgbGV0IHByZXZQb2ludGVyID0gaXNQb2ludGVyR3JvdXAudmFsdWUgPyBwcmV2R3JvdXBMYXN0RW5hYmxlZE9wdGlvbi52YWx1ZSA6IGN1cnJlbnRHcm91cFByZXZFbmFibGVkT3B0aW9uLnZhbHVlO1xuXG4gICAgICBpZiAocHJldlBvaW50ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwcmV2UG9pbnRlciA9IGlzUG9pbnRlckdyb3VwLnZhbHVlID8gcHJldkdyb3VwLnZhbHVlIDogY3VycmVudEdyb3VwLnZhbHVlO1xuICAgICAgfVxuXG4gICAgICBzZXRQb2ludGVyKHByZXZQb2ludGVyIHx8IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcHJldkluZGV4ID0gb3B0aW9ucy52YWx1ZS5tYXAobyA9PiBvW3ZhbHVlUHJvcC52YWx1ZV0pLmluZGV4T2YocG9pbnRlci52YWx1ZVt2YWx1ZVByb3AudmFsdWVdKSAtIDE7XG5cbiAgICAgIGlmIChwcmV2SW5kZXggPCAwKSB7XG4gICAgICAgIHByZXZJbmRleCA9IG9wdGlvbnMudmFsdWUubGVuZ3RoIC0gMTtcbiAgICAgIH1cblxuICAgICAgc2V0UG9pbnRlcihvcHRpb25zLnZhbHVlW3ByZXZJbmRleF0gfHwgbnVsbCk7XG4gICAgfVxuXG4gICAgbmV4dFRpY2soKCkgPT4ge1xuICAgICAgYWRqdXN0V3JhcHBlclNjcm9sbFRvUG9pbnRlcigpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGdldFBhcmVudEdyb3VwID0gKG9wdGlvbikgPT4ge1xuICAgIHJldHVybiBncm91cHMudmFsdWUuZmluZCgoZ3JvdXApID0+IHtcbiAgICAgIHJldHVybiBncm91cC5fX1ZJU0lCTEVfXy5tYXAobyA9PiBvW3ZhbHVlUHJvcC52YWx1ZV0pLmluZGV4T2Yob3B0aW9uW3ZhbHVlUHJvcC52YWx1ZV0pICE9PSAtMVxuICAgIH0pXG4gIH07XG5cbiAgLy8gbm8gZXhwb3J0XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGNvbnN0IGFkanVzdFdyYXBwZXJTY3JvbGxUb1BvaW50ZXIgPSAoKSA9PiB7XG4gICAgbGV0IHBvaW50ZWRPcHRpb24gPSBtdWx0aXNlbGVjdC52YWx1ZS5xdWVyeVNlbGVjdG9yKGBbZGF0YS1wb2ludGVkXWApO1xuXG4gICAgaWYgKCFwb2ludGVkT3B0aW9uKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBsZXQgd3JhcHBlciA9IHBvaW50ZWRPcHRpb24ucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xuXG4gICAgaWYgKGdyb3VwcGVkLnZhbHVlKSB7XG4gICAgICB3cmFwcGVyID0gaXNQb2ludGVyR3JvdXAudmFsdWVcbiAgICAgICAgPyBwb2ludGVkT3B0aW9uLnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50XG4gICAgICAgIDogcG9pbnRlZE9wdGlvbi5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgIH1cblxuICAgIGlmIChwb2ludGVkT3B0aW9uLm9mZnNldFRvcCArIHBvaW50ZWRPcHRpb24ub2Zmc2V0SGVpZ2h0ID4gd3JhcHBlci5jbGllbnRIZWlnaHQgKyB3cmFwcGVyLnNjcm9sbFRvcCkge1xuICAgICAgd3JhcHBlci5zY3JvbGxUb3AgPSBwb2ludGVkT3B0aW9uLm9mZnNldFRvcCArIHBvaW50ZWRPcHRpb24ub2Zmc2V0SGVpZ2h0IC0gd3JhcHBlci5jbGllbnRIZWlnaHQ7XG4gICAgfVxuICAgIFxuICAgIGlmIChwb2ludGVkT3B0aW9uLm9mZnNldFRvcCA8IHdyYXBwZXIuc2Nyb2xsVG9wKSB7XG4gICAgICB3cmFwcGVyLnNjcm9sbFRvcCA9IHBvaW50ZWRPcHRpb24ub2Zmc2V0VG9wO1xuICAgIH1cbiAgfTtcblxuICAvLyA9PT09PT09PT09PT09PSBXQVRDSEVSUyA9PT09PT09PT09PT09PVxuXG4gIHdhdGNoKHNlYXJjaCwgKHZhbCkgPT4ge1xuICAgIGlmIChzZWFyY2hhYmxlLnZhbHVlKSB7XG4gICAgICBpZiAodmFsLmxlbmd0aCAmJiBzaG93T3B0aW9ucy52YWx1ZSkge1xuICAgICAgICBzZXRQb2ludGVyRmlyc3QoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNsZWFyUG9pbnRlcigpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgd2F0Y2goaXNPcGVuLCAodmFsKSA9PiB7XG4gICAgaWYgKHZhbCkge1xuICAgICAgbGV0IGZpcnN0U2VsZWN0ZWQgPSBtdWx0aXNlbGVjdC52YWx1ZS5xdWVyeVNlbGVjdG9yQWxsKGBbZGF0YS1zZWxlY3RlZF1gKVswXTtcblxuICAgICAgaWYgKCFmaXJzdFNlbGVjdGVkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBsZXQgd3JhcHBlciA9IGZpcnN0U2VsZWN0ZWQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgXG4gICAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGlmICh3cmFwcGVyLnNjcm9sbFRvcCA+IDApIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIHdyYXBwZXIuc2Nyb2xsVG9wID0gZmlyc3RTZWxlY3RlZC5vZmZzZXRUb3A7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgcG9pbnRlcixcbiAgICBjYW5Qb2ludEdyb3VwcyxcbiAgICBpc1BvaW50ZWQsXG4gICAgc2V0UG9pbnRlckZpcnN0LFxuICAgIHNlbGVjdFBvaW50ZXIsXG4gICAgZm9yd2FyZFBvaW50ZXIsXG4gICAgYmFja3dhcmRQb2ludGVyLFxuICB9XG59XG5cbmZ1bmN0aW9uIHVzZURyb3Bkb3duIChwcm9wcywgY29udGV4dCwgZGVwKVxue1xuICBjb25zdCB7IGRpc2FibGVkIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIGNvbnN0ICR0aGlzID0gZ2V0Q3VycmVudEluc3RhbmNlKCkucHJveHk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PSBEQVRBID09PT09PT09PT09PT09PT1cblxuICBjb25zdCBpc09wZW4gPSByZWYoZmFsc2UpO1xuXG4gIC8vID09PT09PT09PT09PT09PSBNRVRIT0RTID09PT09PT09PT09PT09XG5cbiAgY29uc3Qgb3BlbiA9ICgpID0+IHtcbiAgICBpZiAoaXNPcGVuLnZhbHVlIHx8IGRpc2FibGVkLnZhbHVlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpc09wZW4udmFsdWUgPSB0cnVlO1xuICAgIGNvbnRleHQuZW1pdCgnb3BlbicsICR0aGlzKTtcbiAgfTtcblxuICBjb25zdCBjbG9zZSA9ICgpID0+IHtcbiAgICBpZiAoIWlzT3Blbi52YWx1ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaXNPcGVuLnZhbHVlID0gZmFsc2U7XG4gICAgY29udGV4dC5lbWl0KCdjbG9zZScsICR0aGlzKTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGlzT3BlbixcbiAgICBvcGVuLFxuICAgIGNsb3NlLFxuICB9XG59XG5cbmZ1bmN0aW9uIHVzZU11bHRpc2VsZWN0IChwcm9wcywgY29udGV4dCwgZGVwKVxue1xuICBjb25zdCB7IHNlYXJjaGFibGUsIGRpc2FibGVkIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIC8vID09PT09PT09PT09PSBERVBFTkRFTkNJRVMgPT09PT09PT09PT09XG5cbiAgY29uc3QgaW5wdXQgPSBkZXAuaW5wdXQ7XG4gIGNvbnN0IG9wZW4gPSBkZXAub3BlbjtcbiAgY29uc3QgY2xvc2UgPSBkZXAuY2xvc2U7XG4gIGNvbnN0IGNsZWFyU2VhcmNoID0gZGVwLmNsZWFyU2VhcmNoO1xuICBjb25zdCBpc09wZW4gPSBkZXAuaXNPcGVuO1xuXG4gIC8vID09PT09PT09PT09PT09PT0gREFUQSA9PT09PT09PT09PT09PT09XG5cbiAgY29uc3QgbXVsdGlzZWxlY3QgPSByZWYobnVsbCk7XG4gIGNvbnN0IHRhZ3MgPSByZWYobnVsbCk7XG5cbiAgY29uc3QgaXNBY3RpdmUgPSByZWYoZmFsc2UpO1xuXG4gIC8vID09PT09PT09PT09PT09IENPTVBVVEVEID09PT09PT09PT09PT09XG5cbiAgY29uc3QgdGFiaW5kZXggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHNlYXJjaGFibGUudmFsdWUgfHwgZGlzYWJsZWQudmFsdWUgPyAtMSA6IDBcbiAgfSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09IE1FVEhPRFMgPT09PT09PT09PT09PT1cblxuICBjb25zdCBibHVyID0gKCkgPT4ge1xuICAgIGlmIChzZWFyY2hhYmxlLnZhbHVlKSB7XG4gICAgICBpbnB1dC52YWx1ZS5ibHVyKCk7XG4gICAgfVxuXG4gICAgbXVsdGlzZWxlY3QudmFsdWUuYmx1cigpO1xuICB9O1xuXG4gIGNvbnN0IGZvY3VzID0gKCkgPT4ge1xuICAgIGlmIChzZWFyY2hhYmxlLnZhbHVlICYmICFkaXNhYmxlZC52YWx1ZSkge1xuICAgICAgaW5wdXQudmFsdWUuZm9jdXMoKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBhY3RpdmF0ZSA9ICgpID0+IHtcbiAgICBpZiAoZGlzYWJsZWQudmFsdWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlzQWN0aXZlLnZhbHVlID0gdHJ1ZTtcblxuICAgIG9wZW4oKTtcbiAgfTtcblxuICBjb25zdCBkZWFjdGl2YXRlID0gKCkgPT4ge1xuICAgIGlzQWN0aXZlLnZhbHVlID0gZmFsc2U7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghaXNBY3RpdmUudmFsdWUpIHtcbiAgICAgICAgY2xvc2UoKTtcbiAgICAgICAgY2xlYXJTZWFyY2goKTtcbiAgICAgIH1cbiAgICB9LCAxKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDYXJldENsaWNrID0gKCkgPT4ge1xuICAgIGRlYWN0aXZhdGUoKTtcbiAgICBibHVyKCk7XG4gIH07XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgY29uc3QgaGFuZGxlTW91c2Vkb3duID0gKGUpID0+IHtcbiAgICBpZiAoaXNPcGVuLnZhbHVlICYmIChlLnRhcmdldC5pc0VxdWFsTm9kZShtdWx0aXNlbGVjdC52YWx1ZSkgfHwgZS50YXJnZXQuaXNFcXVhbE5vZGUodGFncy52YWx1ZSkpKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgZGVhY3RpdmF0ZSgpO1xuICAgICAgfSwgMCk7XG4gICAgfSBlbHNlIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50LmlzRXF1YWxOb2RlKG11bHRpc2VsZWN0LnZhbHVlKSAmJiAhaXNPcGVuLnZhbHVlKSB7XG4gICAgICBhY3RpdmF0ZSgpOyAgICBcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBtdWx0aXNlbGVjdCxcbiAgICB0YWdzLFxuICAgIHRhYmluZGV4LFxuICAgIGlzQWN0aXZlLFxuICAgIGJsdXIsXG4gICAgZm9jdXMsXG4gICAgaGFuZGxlRm9jdXMsXG4gICAgYWN0aXZhdGUsXG4gICAgZGVhY3RpdmF0ZSxcbiAgICBoYW5kbGVDYXJldENsaWNrLFxuICAgIGhhbmRsZU1vdXNlZG93bixcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VLZXlib2FyZCAocHJvcHMsIGNvbnRleHQsIGRlcClcbntcbiAgY29uc3Qge1xuICAgIG1vZGUsIGFkZFRhZ09uLCBvcGVuRGlyZWN0aW9uLCBzZWFyY2hhYmxlLFxuICAgIHNob3dPcHRpb25zLCB2YWx1ZVByb3AsIGdyb3VwczogZ3JvdXBwZWQsXG4gICAgYWRkT3B0aW9uT246IGFkZE9wdGlvbk9uXywgY3JlYXRlVGFnLCBjcmVhdGVPcHRpb246IGNyZWF0ZU9wdGlvbl8sXG4gICAgcmV2ZXJzZSxcbiAgfSA9IHRvUmVmcyhwcm9wcyk7XG5cbiAgY29uc3QgJHRoaXMgPSBnZXRDdXJyZW50SW5zdGFuY2UoKS5wcm94eTtcblxuICAvLyA9PT09PT09PT09PT0gREVQRU5ERU5DSUVTID09PT09PT09PT09PVxuXG4gIGNvbnN0IGl2ID0gZGVwLml2O1xuICBjb25zdCB1cGRhdGUgPSBkZXAudXBkYXRlO1xuICBjb25zdCBzZWFyY2ggPSBkZXAuc2VhcmNoO1xuICBjb25zdCBzZXRQb2ludGVyID0gZGVwLnNldFBvaW50ZXI7XG4gIGNvbnN0IHNlbGVjdFBvaW50ZXIgPSBkZXAuc2VsZWN0UG9pbnRlcjtcbiAgY29uc3QgYmFja3dhcmRQb2ludGVyID0gZGVwLmJhY2t3YXJkUG9pbnRlcjtcbiAgY29uc3QgZm9yd2FyZFBvaW50ZXIgPSBkZXAuZm9yd2FyZFBvaW50ZXI7XG4gIGNvbnN0IGlzT3BlbiA9IGRlcC5pc09wZW47XG4gIGNvbnN0IG9wZW4gPSBkZXAub3BlbjtcbiAgY29uc3QgYmx1ciA9IGRlcC5ibHVyO1xuICBjb25zdCBmbyA9IGRlcC5mbztcblxuICAvLyA9PT09PT09PT09PT09PSBDT01QVVRFRCA9PT09PT09PT09PT09PVxuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBjcmVhdGVPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIGNyZWF0ZVRhZy52YWx1ZSB8fCBjcmVhdGVPcHRpb25fLnZhbHVlIHx8IGZhbHNlXG4gIH0pO1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBhZGRPcHRpb25PbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoYWRkVGFnT24udmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGFkZFRhZ09uLnZhbHVlXG4gICAgfVxuICAgIGVsc2UgaWYgKGFkZE9wdGlvbk9uXy52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gYWRkT3B0aW9uT25fLnZhbHVlXG4gICAgfVxuXG4gICAgcmV0dXJuIFsnZW50ZXInXVxuICB9KTtcblxuICAvLyA9PT09PT09PT09PT09PT0gTUVUSE9EUyA9PT09PT09PT09PT09PVxuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBwcmVwYXJlUG9pbnRlciA9ICgpID0+IHtcbiAgICAvLyBXaGVuIG9wdGlvbnMgYXJlIGhpZGRlbiBhbmQgY3JlYXRpbmcgdGFncyBpcyBhbGxvd2VkXG4gICAgLy8gbm8gcG9pbnRlciB3aWxsIGJlIHNldCAoYmVjYXVzZSBvcHRpb25zIGFyZSBoaWRkZW4pLlxuICAgIC8vIEluIHN1Y2ggY2FzZSB3ZSBuZWVkIHRvIHNldCB0aGUgcG9pbnRlciBtYW51YWxseSB0byB0aGUgXG4gICAgLy8gZmlyc3Qgb3B0aW9uLCB3aGljaCBlcXVhbHMgdG8gdGhlIG9wdGlvbiBjcmVhdGVkIGZyb21cbiAgICAvLyB0aGUgc2VhcmNoIHZhbHVlLlxuICAgIGlmIChtb2RlLnZhbHVlID09PSAndGFncycgJiYgIXNob3dPcHRpb25zLnZhbHVlICYmIGNyZWF0ZU9wdGlvbi52YWx1ZSAmJiBzZWFyY2hhYmxlLnZhbHVlICYmICFncm91cHBlZC52YWx1ZSkge1xuICAgICAgc2V0UG9pbnRlcihmby52YWx1ZVtmby52YWx1ZS5tYXAobyA9PiBvW3ZhbHVlUHJvcC52YWx1ZV0pLmluZGV4T2Yoc2VhcmNoLnZhbHVlKV0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVLZXlkb3duID0gKGUpID0+IHtcbiAgICBjb250ZXh0LmVtaXQoJ2tleWRvd24nLCBlLCAkdGhpcyk7XG5cbiAgICBzd2l0Y2ggKGUua2V5KSB7XG4gICAgICBjYXNlICdCYWNrc3BhY2UnOlxuICAgICAgICBpZiAobW9kZS52YWx1ZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzZWFyY2hhYmxlLnZhbHVlICYmIFtudWxsLCAnJ10uaW5kZXhPZihzZWFyY2gudmFsdWUpID09PSAtMSkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl2LnZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICB1cGRhdGUoWy4uLml2LnZhbHVlXS5zbGljZSgwLC0xKSk7XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmIChhZGRPcHRpb25Pbi52YWx1ZS5pbmRleE9mKCdlbnRlcicpID09PSAtMSAmJiBjcmVhdGVPcHRpb24udmFsdWUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgcHJlcGFyZVBvaW50ZXIoKTtcbiAgICAgICAgc2VsZWN0UG9pbnRlcigpO1xuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICcgJzpcbiAgICAgICAgaWYgKCFjcmVhdGVPcHRpb24udmFsdWUgJiYgIXNlYXJjaGFibGUudmFsdWUpIHtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgXG4gICAgICAgICAgcHJlcGFyZVBvaW50ZXIoKTtcbiAgICAgICAgICBzZWxlY3RQb2ludGVyKCk7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWNyZWF0ZU9wdGlvbi52YWx1ZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9IFxuXG4gICAgICAgIGlmIChhZGRPcHRpb25Pbi52YWx1ZS5pbmRleE9mKCdzcGFjZScpID09PSAtMSAmJiBjcmVhdGVPcHRpb24udmFsdWUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgXG4gICAgICAgIHByZXBhcmVQb2ludGVyKCk7XG4gICAgICAgIHNlbGVjdFBvaW50ZXIoKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIFxuICAgICAgY2FzZSAnVGFiJzpcbiAgICAgIGNhc2UgJzsnOlxuICAgICAgY2FzZSAnLCc6XG4gICAgICAgIGlmIChhZGRPcHRpb25Pbi52YWx1ZS5pbmRleE9mKGUua2V5LnRvTG93ZXJDYXNlKCkpID09PSAtMSB8fCAhY3JlYXRlT3B0aW9uLnZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBwcmVwYXJlUG9pbnRlcigpO1xuICAgICAgICBzZWxlY3RQb2ludGVyKCk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgYmx1cigpO1xuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmICghc2hvd09wdGlvbnMudmFsdWUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmICghaXNPcGVuLnZhbHVlKSB7XG4gICAgICAgICAgb3BlbigpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBiYWNrd2FyZFBvaW50ZXIoKTtcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmICghc2hvd09wdGlvbnMudmFsdWUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmICghaXNPcGVuLnZhbHVlKSB7XG4gICAgICAgICAgb3BlbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yd2FyZFBvaW50ZXIoKTtcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlS2V5dXAgPSAoZSkgPT4ge1xuICAgIGNvbnRleHQuZW1pdCgna2V5dXAnLCBlLCAkdGhpcyk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBoYW5kbGVLZXlkb3duLFxuICAgIGhhbmRsZUtleXVwLFxuICAgIHByZXBhcmVQb2ludGVyLFxuICB9XG59XG5cbmZ1bmN0aW9uIHVzZUNsYXNzZXMgKHByb3BzLCBjb250ZXh0LCBkZXBlbmRlbmNpZXMpXG57Y29uc3QgeyBcbiAgICBjbGFzc2VzOiBjbGFzc2VzXywgZGlzYWJsZWQsIG9wZW5EaXJlY3Rpb24sIHNob3dPcHRpb25zXG4gIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIC8vID09PT09PT09PT09PSBERVBFTkRFTkNJRVMgPT09PT09PT09PT09XG5cbiAgY29uc3QgaXNPcGVuID0gZGVwZW5kZW5jaWVzLmlzT3BlbjtcbiAgY29uc3QgaXNQb2ludGVkID0gZGVwZW5kZW5jaWVzLmlzUG9pbnRlZDtcbiAgY29uc3QgaXNTZWxlY3RlZCA9IGRlcGVuZGVuY2llcy5pc1NlbGVjdGVkO1xuICBjb25zdCBpc0Rpc2FibGVkID0gZGVwZW5kZW5jaWVzLmlzRGlzYWJsZWQ7XG4gIGNvbnN0IGlzQWN0aXZlID0gZGVwZW5kZW5jaWVzLmlzQWN0aXZlO1xuICBjb25zdCBjYW5Qb2ludEdyb3VwcyA9IGRlcGVuZGVuY2llcy5jYW5Qb2ludEdyb3VwcztcbiAgY29uc3QgcmVzb2x2aW5nID0gZGVwZW5kZW5jaWVzLnJlc29sdmluZztcbiAgY29uc3QgZm8gPSBkZXBlbmRlbmNpZXMuZm87XG5cbiAgY29uc3QgY2xhc3NlcyA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgY29udGFpbmVyOiAnbXVsdGlzZWxlY3QnLFxuICAgIGNvbnRhaW5lckRpc2FibGVkOiAnaXMtZGlzYWJsZWQnLFxuICAgIGNvbnRhaW5lck9wZW46ICdpcy1vcGVuJyxcbiAgICBjb250YWluZXJPcGVuVG9wOiAnaXMtb3Blbi10b3AnLFxuICAgIGNvbnRhaW5lckFjdGl2ZTogJ2lzLWFjdGl2ZScsXG4gICAgc2luZ2xlTGFiZWw6ICdtdWx0aXNlbGVjdC1zaW5nbGUtbGFiZWwnLFxuICAgIHNpbmdsZUxhYmVsVGV4dDogJ211bHRpc2VsZWN0LXNpbmdsZS1sYWJlbC10ZXh0JyxcbiAgICBtdWx0aXBsZUxhYmVsOiAnbXVsdGlzZWxlY3QtbXVsdGlwbGUtbGFiZWwnLFxuICAgIHNlYXJjaDogJ211bHRpc2VsZWN0LXNlYXJjaCcsXG4gICAgdGFnczogJ211bHRpc2VsZWN0LXRhZ3MnLFxuICAgIHRhZzogJ211bHRpc2VsZWN0LXRhZycsXG4gICAgdGFnRGlzYWJsZWQ6ICdpcy1kaXNhYmxlZCcsXG4gICAgdGFnUmVtb3ZlOiAnbXVsdGlzZWxlY3QtdGFnLXJlbW92ZScsXG4gICAgdGFnUmVtb3ZlSWNvbjogJ211bHRpc2VsZWN0LXRhZy1yZW1vdmUtaWNvbicsXG4gICAgdGFnc1NlYXJjaFdyYXBwZXI6ICdtdWx0aXNlbGVjdC10YWdzLXNlYXJjaC13cmFwcGVyJyxcbiAgICB0YWdzU2VhcmNoOiAnbXVsdGlzZWxlY3QtdGFncy1zZWFyY2gnLFxuICAgIHRhZ3NTZWFyY2hDb3B5OiAnbXVsdGlzZWxlY3QtdGFncy1zZWFyY2gtY29weScsXG4gICAgcGxhY2Vob2xkZXI6ICdtdWx0aXNlbGVjdC1wbGFjZWhvbGRlcicsXG4gICAgY2FyZXQ6ICdtdWx0aXNlbGVjdC1jYXJldCcsXG4gICAgY2FyZXRPcGVuOiAnaXMtb3BlbicsXG4gICAgY2xlYXI6ICdtdWx0aXNlbGVjdC1jbGVhcicsXG4gICAgY2xlYXJJY29uOiAnbXVsdGlzZWxlY3QtY2xlYXItaWNvbicsXG4gICAgc3Bpbm5lcjogJ211bHRpc2VsZWN0LXNwaW5uZXInLFxuICAgIGluaWZpbml0ZTogJ211bHRpc2VsZWN0LWluaWZpdGUnLFxuICAgIGluaWZpbml0ZVNwaW5uZXI6ICdtdWx0aXNlbGVjdC1pbmlmaXRlLXNwaW5uZXInLFxuICAgIGRyb3Bkb3duOiAnbXVsdGlzZWxlY3QtZHJvcGRvd24nLFxuICAgIGRyb3Bkb3duVG9wOiAnaXMtdG9wJyxcbiAgICBkcm9wZG93bkhpZGRlbjogJ2lzLWhpZGRlbicsXG4gICAgb3B0aW9uczogJ211bHRpc2VsZWN0LW9wdGlvbnMnLFxuICAgIG9wdGlvbnNUb3A6ICdpcy10b3AnLFxuICAgIGdyb3VwOiAnbXVsdGlzZWxlY3QtZ3JvdXAnLFxuICAgIGdyb3VwTGFiZWw6ICdtdWx0aXNlbGVjdC1ncm91cC1sYWJlbCcsXG4gICAgZ3JvdXBMYWJlbFBvaW50YWJsZTogJ2lzLXBvaW50YWJsZScsXG4gICAgZ3JvdXBMYWJlbFBvaW50ZWQ6ICdpcy1wb2ludGVkJyxcbiAgICBncm91cExhYmVsU2VsZWN0ZWQ6ICdpcy1zZWxlY3RlZCcsXG4gICAgZ3JvdXBMYWJlbERpc2FibGVkOiAnaXMtZGlzYWJsZWQnLFxuICAgIGdyb3VwTGFiZWxTZWxlY3RlZFBvaW50ZWQ6ICdpcy1zZWxlY3RlZCBpcy1wb2ludGVkJyxcbiAgICBncm91cExhYmVsU2VsZWN0ZWREaXNhYmxlZDogJ2lzLXNlbGVjdGVkIGlzLWRpc2FibGVkJyxcbiAgICBncm91cE9wdGlvbnM6ICdtdWx0aXNlbGVjdC1ncm91cC1vcHRpb25zJyxcbiAgICBvcHRpb246ICdtdWx0aXNlbGVjdC1vcHRpb24nLFxuICAgIG9wdGlvblBvaW50ZWQ6ICdpcy1wb2ludGVkJyxcbiAgICBvcHRpb25TZWxlY3RlZDogJ2lzLXNlbGVjdGVkJyxcbiAgICBvcHRpb25EaXNhYmxlZDogJ2lzLWRpc2FibGVkJyxcbiAgICBvcHRpb25TZWxlY3RlZFBvaW50ZWQ6ICdpcy1zZWxlY3RlZCBpcy1wb2ludGVkJyxcbiAgICBvcHRpb25TZWxlY3RlZERpc2FibGVkOiAnaXMtc2VsZWN0ZWQgaXMtZGlzYWJsZWQnLFxuICAgIG5vT3B0aW9uczogJ211bHRpc2VsZWN0LW5vLW9wdGlvbnMnLFxuICAgIG5vUmVzdWx0czogJ211bHRpc2VsZWN0LW5vLXJlc3VsdHMnLFxuICAgIGZha2VJbnB1dDogJ211bHRpc2VsZWN0LWZha2UtaW5wdXQnLFxuICAgIHNwYWNlcjogJ211bHRpc2VsZWN0LXNwYWNlcicsXG4gICAgLi4uY2xhc3Nlc18udmFsdWUsXG4gIH0pKTtcblxuICAvLyA9PT09PT09PT09PT09PSBDT01QVVRFRCA9PT09PT09PT09PT09PVxuXG4gIGNvbnN0IHNob3dEcm9wZG93biA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gISEoaXNPcGVuLnZhbHVlICYmIHNob3dPcHRpb25zLnZhbHVlICYmICghcmVzb2x2aW5nLnZhbHVlIHx8IChyZXNvbHZpbmcudmFsdWUgJiYgZm8udmFsdWUubGVuZ3RoKSkpXG4gIH0pO1xuXG4gIGNvbnN0IGNsYXNzTGlzdCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjID0gY2xhc3Nlcy52YWx1ZTtcblxuICAgIHJldHVybiB7XG4gICAgICBjb250YWluZXI6IFtjLmNvbnRhaW5lcl1cbiAgICAgICAgLmNvbmNhdChkaXNhYmxlZC52YWx1ZSA/IGMuY29udGFpbmVyRGlzYWJsZWQgOiBbXSlcbiAgICAgICAgLmNvbmNhdChzaG93RHJvcGRvd24udmFsdWUgJiYgb3BlbkRpcmVjdGlvbi52YWx1ZSA9PT0gJ3RvcCcgID8gYy5jb250YWluZXJPcGVuVG9wIDogW10pXG4gICAgICAgIC5jb25jYXQoc2hvd0Ryb3Bkb3duLnZhbHVlICYmIG9wZW5EaXJlY3Rpb24udmFsdWUgIT09ICd0b3AnID8gYy5jb250YWluZXJPcGVuIDogW10pXG4gICAgICAgIC5jb25jYXQoaXNBY3RpdmUudmFsdWUgPyBjLmNvbnRhaW5lckFjdGl2ZSA6IFtdKSxcbiAgICAgIHNwYWNlcjogYy5zcGFjZXIsXG4gICAgICBzaW5nbGVMYWJlbDogYy5zaW5nbGVMYWJlbCxcbiAgICAgIHNpbmdsZUxhYmVsVGV4dDogYy5zaW5nbGVMYWJlbFRleHQsXG4gICAgICBtdWx0aXBsZUxhYmVsOiBjLm11bHRpcGxlTGFiZWwsXG4gICAgICBzZWFyY2g6IGMuc2VhcmNoLFxuICAgICAgdGFnczogYy50YWdzLFxuICAgICAgdGFnOiBbYy50YWddXG4gICAgICAgIC5jb25jYXQoZGlzYWJsZWQudmFsdWUgPyBjLnRhZ0Rpc2FibGVkIDogW10pLFxuICAgICAgdGFnUmVtb3ZlOiBjLnRhZ1JlbW92ZSxcbiAgICAgIHRhZ1JlbW92ZUljb246IGMudGFnUmVtb3ZlSWNvbixcbiAgICAgIHRhZ3NTZWFyY2hXcmFwcGVyOiBjLnRhZ3NTZWFyY2hXcmFwcGVyLFxuICAgICAgdGFnc1NlYXJjaDogYy50YWdzU2VhcmNoLFxuICAgICAgdGFnc1NlYXJjaENvcHk6IGMudGFnc1NlYXJjaENvcHksXG4gICAgICBwbGFjZWhvbGRlcjogYy5wbGFjZWhvbGRlcixcbiAgICAgIGNhcmV0OiBbYy5jYXJldF1cbiAgICAgICAgLmNvbmNhdChpc09wZW4udmFsdWUgPyBjLmNhcmV0T3BlbiA6IFtdKSxcbiAgICAgIGNsZWFyOiBjLmNsZWFyLFxuICAgICAgY2xlYXJJY29uOiBjLmNsZWFySWNvbixcbiAgICAgIHNwaW5uZXI6IGMuc3Bpbm5lcixcbiAgICAgIGluaWZpbml0ZTogYy5pbmlmaW5pdGUsXG4gICAgICBpbmlmaW5pdGVTcGlubmVyOiBjLmluaWZpbml0ZVNwaW5uZXIsXG4gICAgICBkcm9wZG93bjogW2MuZHJvcGRvd25dXG4gICAgICAgIC5jb25jYXQob3BlbkRpcmVjdGlvbi52YWx1ZSA9PT0gJ3RvcCcgPyBjLmRyb3Bkb3duVG9wIDogW10pXG4gICAgICAgIC5jb25jYXQoIWlzT3Blbi52YWx1ZSB8fCAhc2hvd09wdGlvbnMudmFsdWUgfHwgIXNob3dEcm9wZG93bi52YWx1ZSA/IGMuZHJvcGRvd25IaWRkZW4gOiBbXSksXG4gICAgICBvcHRpb25zOiBbYy5vcHRpb25zXVxuICAgICAgICAuY29uY2F0KG9wZW5EaXJlY3Rpb24udmFsdWUgPT09ICd0b3AnID8gYy5vcHRpb25zVG9wIDogW10pLFxuICAgICAgZ3JvdXA6IGMuZ3JvdXAsXG4gICAgICBncm91cExhYmVsOiAoZykgPT4ge1xuICAgICAgICBsZXQgZ3JvdXBMYWJlbCA9IFtjLmdyb3VwTGFiZWxdO1xuXG4gICAgICAgIGlmIChpc1BvaW50ZWQoZykpIHtcbiAgICAgICAgICBncm91cExhYmVsLnB1c2goaXNTZWxlY3RlZChnKSA/IGMuZ3JvdXBMYWJlbFNlbGVjdGVkUG9pbnRlZCA6IGMuZ3JvdXBMYWJlbFBvaW50ZWQpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzU2VsZWN0ZWQoZykgJiYgY2FuUG9pbnRHcm91cHMudmFsdWUpIHtcbiAgICAgICAgICBncm91cExhYmVsLnB1c2goaXNEaXNhYmxlZChnKSA/IGMuZ3JvdXBMYWJlbFNlbGVjdGVkRGlzYWJsZWQgOiBjLmdyb3VwTGFiZWxTZWxlY3RlZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEaXNhYmxlZChnKSkge1xuICAgICAgICAgIGdyb3VwTGFiZWwucHVzaChjLmdyb3VwTGFiZWxEaXNhYmxlZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2FuUG9pbnRHcm91cHMudmFsdWUpIHtcbiAgICAgICAgICBncm91cExhYmVsLnB1c2goYy5ncm91cExhYmVsUG9pbnRhYmxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBncm91cExhYmVsXG4gICAgICB9LFxuICAgICAgZ3JvdXBPcHRpb25zOiBjLmdyb3VwT3B0aW9ucyxcbiAgICAgIG9wdGlvbjogKG8sIGcpID0+IHtcbiAgICAgICAgbGV0IG9wdGlvbiA9IFtjLm9wdGlvbl07XG5cbiAgICAgICAgaWYgKGlzUG9pbnRlZChvKSkge1xuICAgICAgICAgIG9wdGlvbi5wdXNoKGlzU2VsZWN0ZWQobykgPyBjLm9wdGlvblNlbGVjdGVkUG9pbnRlZCA6IGMub3B0aW9uUG9pbnRlZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNTZWxlY3RlZChvKSkge1xuICAgICAgICAgIG9wdGlvbi5wdXNoKGlzRGlzYWJsZWQobykgPyBjLm9wdGlvblNlbGVjdGVkRGlzYWJsZWQgOiBjLm9wdGlvblNlbGVjdGVkKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0Rpc2FibGVkKG8pIHx8IChnICYmIGlzRGlzYWJsZWQoZykpKSB7XG4gICAgICAgICAgb3B0aW9uLnB1c2goYy5vcHRpb25EaXNhYmxlZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3B0aW9uXG4gICAgICB9LFxuICAgICAgbm9PcHRpb25zOiBjLm5vT3B0aW9ucyxcbiAgICAgIG5vUmVzdWx0czogYy5ub1Jlc3VsdHMsXG4gICAgICBmYWtlSW5wdXQ6IGMuZmFrZUlucHV0LFxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBjbGFzc0xpc3QsXG4gICAgc2hvd0Ryb3Bkb3duLFxuICB9XG59XG5cbmZ1bmN0aW9uIHVzZVNjcm9sbCQxIChwcm9wcywgY29udGV4dCwgZGVwKVxue1xuICBjb25zdCB7XG4gICAgbGltaXQsIGluZmluaXRlLFxuICB9ID0gdG9SZWZzKHByb3BzKTtcblxuICAvLyA9PT09PT09PT09PT0gREVQRU5ERU5DSUVTID09PT09PT09PT09PVxuXG4gIGNvbnN0IGlzT3BlbiA9IGRlcC5pc09wZW47XG4gIGNvbnN0IG9mZnNldCA9IGRlcC5vZmZzZXQ7XG4gIGNvbnN0IHNlYXJjaCA9IGRlcC5zZWFyY2g7XG4gIGNvbnN0IHBmbyA9IGRlcC5wZm87XG4gIGNvbnN0IGVvID0gZGVwLmVvO1xuXG4gIC8vID09PT09PT09PT09PT09PT0gREFUQSA9PT09PT09PT09PT09PT09XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IG9ic2VydmVyID0gcmVmKG51bGwpO1xuXG4gIGNvbnN0IGluZmluaXRlTG9hZGVyID0gcmVmKG51bGwpO1xuXG4gIC8vID09PT09PT09PT09PT09IENPTVBVVEVEID09PT09PT09PT09PT09XG5cbiAgY29uc3QgaGFzTW9yZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gb2Zmc2V0LnZhbHVlIDwgcGZvLnZhbHVlLmxlbmd0aFxuICB9KTtcblxuICAvLyA9PT09PT09PT09PT09PT0gTUVUSE9EUyA9PT09PT09PT09PT09PVxuXG4gIC8vIG5vIGV4cG9ydFxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBjb25zdCBoYW5kbGVJbnRlcnNlY3Rpb25PYnNlcnZlciA9IChlbnRyaWVzKSA9PiB7XG4gICAgY29uc3QgeyBpc0ludGVyc2VjdGluZywgdGFyZ2V0IH0gPSBlbnRyaWVzWzBdO1xuXG4gICAgaWYgKGlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICBjb25zdCBwYXJlbnQgPSB0YXJnZXQub2Zmc2V0UGFyZW50O1xuICAgICAgY29uc3Qgc2Nyb2xsVG9wID0gcGFyZW50LnNjcm9sbFRvcDtcblxuICAgICAgb2Zmc2V0LnZhbHVlICs9IGxpbWl0LnZhbHVlID09IC0xID8gMTAgOiBsaW1pdC52YWx1ZTtcblxuICAgICAgbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICBwYXJlbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9ic2VydmUgPSAoKSA9PiB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoaXNPcGVuLnZhbHVlICYmIG9mZnNldC52YWx1ZSA8IHBmby52YWx1ZS5sZW5ndGgpIHtcbiAgICAgIG9ic2VydmVyLnZhbHVlLm9ic2VydmUoaW5maW5pdGVMb2FkZXIudmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoIWlzT3Blbi52YWx1ZSAmJiBvYnNlcnZlci52YWx1ZSkge1xuICAgICAgb2JzZXJ2ZXIudmFsdWUuZGlzY29ubmVjdCgpO1xuICAgIH1cbiAgfTtcblxuICAvLyA9PT09PT09PT09PT09PSBXQVRDSEVSUyA9PT09PT09PT09PT09PVxuXG4gIHdhdGNoKGlzT3BlbiwgKCkgPT4ge1xuICAgIGlmICghaW5maW5pdGUudmFsdWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIG9ic2VydmUoKTtcbiAgfSk7XG5cbiAgd2F0Y2goc2VhcmNoLCAoKSA9PiB7XG4gICAgaWYgKCFpbmZpbml0ZS52YWx1ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgb2Zmc2V0LnZhbHVlID0gbGltaXQudmFsdWU7XG5cbiAgICBvYnNlcnZlKCk7XG4gIH0sIHsgZmx1c2g6ICdwb3N0JyB9KTtcblxuICB3YXRjaChlbywgKCkgPT4ge1xuICAgIGlmICghaW5maW5pdGUudmFsdWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIG9ic2VydmUoKTtcbiAgfSwgeyBpbW1lZGlhdGU6IGZhbHNlLCBmbHVzaDogJ3Bvc3QnIH0pO1xuXG4gIC8vID09PT09PT09PT09PT09PT0gSE9PS1MgPT09PT09PT09PT09PT09XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh3aW5kb3cgJiYgd2luZG93LkludGVyc2VjdGlvbk9ic2VydmVyKSB7XG4gICAgICBvYnNlcnZlci52YWx1ZSA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihoYW5kbGVJbnRlcnNlY3Rpb25PYnNlcnZlcik7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIGhhc01vcmUsXG4gICAgaW5maW5pdGVMb2FkZXIsXG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlU2Nyb2xsIChwcm9wcywgY29udGV4dCwgZGVwKVxue1xuICBjb25zdCB7IHBsYWNlaG9sZGVyLCBpZCwgdmFsdWVQcm9wLCBsYWJlbDogbGFiZWxQcm9wLCBtb2RlLCBncm91cExhYmVsIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIC8vID09PT09PT09PT09PSBERVBFTkRFTkNJRVMgPT09PT09PT09PT09XG5cbiAgY29uc3QgcG9pbnRlciA9IGRlcC5wb2ludGVyO1xuICBjb25zdCBpdiA9IGRlcC5pdjtcbiAgY29uc3QgaXNTZWxlY3RlZCA9IGRlcC5pc1NlbGVjdGVkO1xuICBjb25zdCBoYXNTZWxlY3RlZCA9IGRlcC5oYXNTZWxlY3RlZDtcbiAgY29uc3QgbXVsdGlwbGVMYWJlbFRleHQgPSBkZXAubXVsdGlwbGVMYWJlbFRleHQ7XG5cbiAgLy8gPT09PT09PT09PT09PT09PSBEQVRBID09PT09PT09PT09PT09PT1cblxuICBjb25zdCBsYWJlbCA9IHJlZihudWxsKTtcblxuICAvLyA9PT09PT09PT09PT09PSBDT01QVVRFRCA9PT09PT09PT09PT09PVxuXG4gIGNvbnN0IGFyaWFPd25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGxldCB0ZXh0cyA9IFtdO1xuXG4gICAgaWYgKGlkICYmIGlkLnZhbHVlKSB7XG4gICAgICB0ZXh0cy5wdXNoKGlkLnZhbHVlKTtcbiAgICB9XG5cbiAgICB0ZXh0cy5wdXNoKCdtdWx0aXNlbGVjdC1vcHRpb25zJyk7XG5cbiAgICByZXR1cm4gdGV4dHMuam9pbignLScpXG4gIH0pO1xuXG4gIGNvbnN0IGFyaWFBY3RpdmVEZXNjZW5kYW50ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGxldCB0ZXh0cyA9IFtdO1xuXG4gICAgaWYgKGlkICYmIGlkLnZhbHVlKSB7XG4gICAgICB0ZXh0cy5wdXNoKGlkLnZhbHVlKTtcbiAgICB9XG5cbiAgICB0ZXh0cy5wdXNoKCdtdWx0aXNlbGVjdC1vcHRpb24nKTtcblxuICAgIGlmIChwb2ludGVyLnZhbHVlICYmIHBvaW50ZXIudmFsdWVbdmFsdWVQcm9wLnZhbHVlXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0ZXh0cy5wdXNoKHBvaW50ZXIudmFsdWVbdmFsdWVQcm9wLnZhbHVlXSk7XG5cbiAgICAgIHJldHVybiB0ZXh0cy5qb2luKCctJylcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGFyaWFMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBsZXQgdGV4dHMgPSBbXTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKGxhYmVsLnZhbHVlKSB7XG4gICAgICB0ZXh0cy5wdXNoKGxhYmVsLnZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAocGxhY2Vob2xkZXIudmFsdWUgJiYgIWhhc1NlbGVjdGVkLnZhbHVlKSB7XG4gICAgICB0ZXh0cy5wdXNoKHBsYWNlaG9sZGVyLnZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAobW9kZS52YWx1ZSA9PT0gJ3NpbmdsZScgJiYgaXYudmFsdWUgJiYgaXYudmFsdWVbbGFiZWxQcm9wLnZhbHVlXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0ZXh0cy5wdXNoKGl2LnZhbHVlW2xhYmVsUHJvcC52YWx1ZV0pO1xuICAgIH1cblxuICAgIGlmIChtb2RlLnZhbHVlID09PSAnbXVsdGlwbGUnICYmIGhhc1NlbGVjdGVkLnZhbHVlKSB7XG4gICAgICB0ZXh0cy5wdXNoKG11bHRpcGxlTGFiZWxUZXh0LnZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAobW9kZS52YWx1ZSA9PT0gJ3RhZ3MnICYmIGhhc1NlbGVjdGVkLnZhbHVlKSB7XG4gICAgICB0ZXh0cy5wdXNoKC4uLml2LnZhbHVlLm1hcCh2ID0+IHZbbGFiZWxQcm9wLnZhbHVlXSkpO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXh0cy5qb2luKCcsICcpXG4gIH0pO1xuXG4gIGNvbnN0IGFyaWFQbGFjZWhvbGRlciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gYXJpYUxhYmVsLnZhbHVlXG4gIH0pO1xuXG4gIC8vID09PT09PT09PT09PT09PSBNRVRIT0RTID09PT09PT09PT09PT09XG5cbiAgY29uc3QgYXJpYU9wdGlvbklkID0gKG9wdGlvbikgPT4ge1xuICAgIGxldCB0ZXh0cyA9IFtdO1xuXG4gICAgaWYgKGlkICYmIGlkLnZhbHVlKSB7XG4gICAgICB0ZXh0cy5wdXNoKGlkLnZhbHVlKTtcbiAgICB9XG5cbiAgICB0ZXh0cy5wdXNoKCdtdWx0aXNlbGVjdC1vcHRpb24nKTtcblxuICAgIHRleHRzLnB1c2gob3B0aW9uW3ZhbHVlUHJvcC52YWx1ZV0pO1xuXG4gICAgcmV0dXJuIHRleHRzLmpvaW4oJy0nKVxuICB9O1xuXG4gIGNvbnN0IGFyaWFPcHRpb25MYWJlbCA9IChvcHRpb24pID0+IHtcbiAgICBsZXQgdGV4dHMgPSBbXTtcblxuICAgIGlmIChpc1NlbGVjdGVkKG9wdGlvbikpIHtcbiAgICAgIHRleHRzLnB1c2goJ+KckycpO1xuICAgIH1cblxuICAgIHRleHRzLnB1c2gob3B0aW9uW2xhYmVsUHJvcC52YWx1ZV0pO1xuXG4gICAgcmV0dXJuIHRleHRzLmpvaW4oJyAnKVxuICB9O1xuXG4gIGNvbnN0IGFyaWFHcm91cExhYmVsID0gKGdyb3VwKSA9PiB7XG4gICAgbGV0IHRleHRzID0gW107XG5cbiAgICB0ZXh0cy5wdXNoKGdyb3VwW2dyb3VwTGFiZWwudmFsdWVdKTtcblxuICAgIHJldHVybiB0ZXh0cy5qb2luKCcgJylcbiAgfTtcblxuICAvLyA9PT09PT09PT09PT09PT0gSE9PS1MgPT09PT09PT09PT09PT09PVxuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAoaWQgJiYgaWQudmFsdWUgJiYgZG9jdW1lbnQgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcikge1xuICAgICAgbGV0IGZvclRhZyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtmb3I9XCIke2lkLnZhbHVlfVwiXWApO1xuICAgICAgbGFiZWwudmFsdWUgPSBmb3JUYWcgPyBmb3JUYWcuaW5uZXJUZXh0IDogbnVsbDtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgYXJpYU93bnMsXG4gICAgYXJpYUxhYmVsLFxuICAgIGFyaWFQbGFjZWhvbGRlcixcbiAgICBhcmlhQWN0aXZlRGVzY2VuZGFudCxcbiAgICBhcmlhT3B0aW9uSWQsXG4gICAgYXJpYU9wdGlvbkxhYmVsLFxuICAgIGFyaWFHcm91cExhYmVsLFxuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVEZXBzIChwcm9wcywgY29udGV4dCwgZmVhdHVyZXMsIGRlcHMgPSB7fSkge1xuICBmZWF0dXJlcy5mb3JFYWNoKChjb21wb3NhYmxlKSA9PiB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoY29tcG9zYWJsZSkge1xuICAgICAgZGVwcyA9IHtcbiAgICAgICAgLi4uZGVwcyxcbiAgICAgICAgLi4uY29tcG9zYWJsZShwcm9wcywgY29udGV4dCwgZGVwcylcbiAgICAgIH07XG4gICAgfVxuXG4gIH0pO1xuICBcbiAgcmV0dXJuIGRlcHNcbn1cblxudmFyIHNjcmlwdCA9IHtcbiAgICBuYW1lOiAnTXVsdGlzZWxlY3QnLFxuICAgIGVtaXRzOiBbXG4gICAgICAncGFzdGUnLCAnb3BlbicsICdjbG9zZScsICdzZWxlY3QnLCAnZGVzZWxlY3QnLCBcbiAgICAgICdpbnB1dCcsICdzZWFyY2gtY2hhbmdlJywgJ3RhZycsICdvcHRpb24nLCAndXBkYXRlOm1vZGVsVmFsdWUnLFxuICAgICAgJ2NoYW5nZScsICdjbGVhcicsICdrZXlkb3duJywgJ2tleXVwJyxcbiAgICBdLFxuICAgIHByb3BzOiB7XG4gICAgICB2YWx1ZToge1xuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgbW9kZWxWYWx1ZToge1xuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICB0eXBlOiBbQXJyYXksIE9iamVjdCwgRnVuY3Rpb25dLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6ICgpID0+IChbXSlcbiAgICAgIH0sXG4gICAgICBpZDoge1xuICAgICAgICB0eXBlOiBbU3RyaW5nLCBOdW1iZXJdLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgbmFtZToge1xuICAgICAgICB0eXBlOiBbU3RyaW5nLCBOdW1iZXJdLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6ICdtdWx0aXNlbGVjdCcsXG4gICAgICB9LFxuICAgICAgZGlzYWJsZWQ6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBsYWJlbDoge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogJ2xhYmVsJyxcbiAgICAgIH0sXG4gICAgICB0cmFja0J5OiB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgdmFsdWVQcm9wOiB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAndmFsdWUnLFxuICAgICAgfSxcbiAgICAgIHBsYWNlaG9sZGVyOiB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgfSxcbiAgICAgIG1vZGU6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6ICdzaW5nbGUnLCAvLyBzaW5nbGV8bXVsdGlwbGV8dGFnc1xuICAgICAgfSxcbiAgICAgIHNlYXJjaGFibGU6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBsaW1pdDoge1xuICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogLTEsXG4gICAgICB9LFxuICAgICAgaGlkZVNlbGVjdGVkOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBjcmVhdGVUYWc6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgY3JlYXRlT3B0aW9uOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIGFwcGVuZE5ld1RhZzoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBhcHBlbmROZXdPcHRpb246IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgYWRkVGFnT246IHtcbiAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIGFkZE9wdGlvbk9uOiB7XG4gICAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBjYXJldDoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgbG9hZGluZzoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIG5vT3B0aW9uc1RleHQ6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6ICdUaGUgbGlzdCBpcyBlbXB0eScsXG4gICAgICB9LFxuICAgICAgbm9SZXN1bHRzVGV4dDoge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogJ05vIHJlc3VsdHMgZm91bmQnLFxuICAgICAgfSxcbiAgICAgIG11bHRpcGxlTGFiZWw6IHtcbiAgICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBvYmplY3Q6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBkZWxheToge1xuICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogLTEsXG4gICAgICB9LFxuICAgICAgbWluQ2hhcnM6IHtcbiAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IDAsXG4gICAgICB9LFxuICAgICAgcmVzb2x2ZU9uTG9hZDoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgZmlsdGVyUmVzdWx0czoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgY2xlYXJPblNlYXJjaDoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGNsZWFyT25TZWxlY3Q6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGNhbkRlc2VsZWN0OiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBjYW5DbGVhcjoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgbWF4OiB7XG4gICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAtMSxcbiAgICAgIH0sXG4gICAgICBzaG93T3B0aW9uczoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgcmVxdWlyZWQ6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBvcGVuRGlyZWN0aW9uOiB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAnYm90dG9tJyxcbiAgICAgIH0sXG4gICAgICBuYXRpdmVTdXBwb3J0OiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgY2xhc3Nlczoge1xuICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogKCkgPT4gKHt9KVxuICAgICAgfSxcbiAgICAgIHN0cmljdDoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgY2xvc2VPblNlbGVjdDoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgYXV0b2NvbXBsZXRlOiB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGdyb3Vwczoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGdyb3VwTGFiZWw6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6ICdsYWJlbCcsXG4gICAgICB9LFxuICAgICAgZ3JvdXBPcHRpb25zOiB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAnb3B0aW9ucycsXG4gICAgICB9LFxuICAgICAgZ3JvdXBIaWRlRW1wdHk6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBncm91cFNlbGVjdDoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgaW5wdXRUeXBlOiB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAndGV4dCcsXG4gICAgICB9LFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgIGRlZmF1bHQ6ICgpID0+ICh7fSksXG4gICAgICB9LFxuICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgIH0sXG4gICAgICBkaXNhYmxlZFByb3A6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6ICdkaXNhYmxlZCcsXG4gICAgICB9LFxuICAgICAgc2VhcmNoU3RhcnQ6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICByZXZlcnNlOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgcmVnZXg6IHtcbiAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nLCBSZWdFeHBdLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBydGw6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBpbmZpbml0ZToge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwKHByb3BzLCBjb250ZXh0KVxuICAgIHsgXG4gICAgICByZXR1cm4gcmVzb2x2ZURlcHMocHJvcHMsIGNvbnRleHQsIFtcbiAgICAgICAgdXNlVmFsdWUsXG4gICAgICAgIHVzZVBvaW50ZXIkMSxcbiAgICAgICAgdXNlRHJvcGRvd24sXG4gICAgICAgIHVzZVNlYXJjaCxcbiAgICAgICAgdXNlRGF0YSxcbiAgICAgICAgdXNlTXVsdGlzZWxlY3QsXG4gICAgICAgIHVzZU9wdGlvbnMsXG4gICAgICAgIHVzZVNjcm9sbCQxLFxuICAgICAgICB1c2VQb2ludGVyLFxuICAgICAgICB1c2VLZXlib2FyZCxcbiAgICAgICAgdXNlQ2xhc3NlcyxcbiAgICAgICAgdXNlU2Nyb2xsLFxuICAgICAgXSlcbiAgICB9XG4gIH07XG5cbmNvbnN0IF9ob2lzdGVkXzEgPSBbXCJ0YWJpbmRleFwiLCBcImlkXCIsIFwiZGlyXCIsIFwiYXJpYS1vd25zXCIsIFwiYXJpYS1leHBhbmRlZFwiLCBcImFyaWEtbGFiZWxcIiwgXCJhcmlhLXBsYWNlaG9sZGVyXCIsIFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCJdO1xuY29uc3QgX2hvaXN0ZWRfMiA9IFtcInR5cGVcIiwgXCJtb2RlbFZhbHVlXCIsIFwidmFsdWVcIiwgXCJhdXRvY29tcGxldGVcIiwgXCJpZFwiLCBcImFyaWEtb3duc1wiLCBcImFyaWEtZXhwYW5kZWRcIiwgXCJhcmlhLWxhYmVsXCIsIFwiYXJpYS1wbGFjZWhvbGRlclwiLCBcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiXTtcbmNvbnN0IF9ob2lzdGVkXzMgPSBbXCJvbkNsaWNrXCJdO1xuY29uc3QgX2hvaXN0ZWRfNCA9IFtcInR5cGVcIiwgXCJtb2RlbFZhbHVlXCIsIFwidmFsdWVcIiwgXCJpZFwiLCBcImF1dG9jb21wbGV0ZVwiLCBcImFyaWEtb3duc1wiLCBcImFyaWEtZXhwYW5kZWRcIiwgXCJhcmlhLWxhYmVsXCIsIFwiYXJpYS1wbGFjZWhvbGRlclwiLCBcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiXTtcbmNvbnN0IF9ob2lzdGVkXzUgPSBbXCJpbm5lckhUTUxcIl07XG5jb25zdCBfaG9pc3RlZF82ID0gW1wiaW5uZXJIVE1MXCJdO1xuY29uc3QgX2hvaXN0ZWRfNyA9IFtcImlkXCJdO1xuY29uc3QgX2hvaXN0ZWRfOCA9IFtcImRhdGEtcG9pbnRlZFwiLCBcIm9uTW91c2VlbnRlclwiLCBcIm9uQ2xpY2tcIl07XG5jb25zdCBfaG9pc3RlZF85ID0gW1wiaW5uZXJIVE1MXCJdO1xuY29uc3QgX2hvaXN0ZWRfMTAgPSBbXCJhcmlhLWxhYmVsXCJdO1xuY29uc3QgX2hvaXN0ZWRfMTEgPSBbXCJkYXRhLXBvaW50ZWRcIiwgXCJkYXRhLXNlbGVjdGVkXCIsIFwiaWRcIiwgXCJhcmlhLWxhYmVsXCIsIFwib25Nb3VzZWVudGVyXCIsIFwib25DbGlja1wiXTtcbmNvbnN0IF9ob2lzdGVkXzEyID0gW1wiaW5uZXJIVE1MXCJdO1xuY29uc3QgX2hvaXN0ZWRfMTMgPSBbXCJpZFwiLCBcImFyaWEtbGFiZWxcIiwgXCJkYXRhLXBvaW50ZWRcIiwgXCJkYXRhLXNlbGVjdGVkXCIsIFwib25Nb3VzZWVudGVyXCIsIFwib25DbGlja1wiXTtcbmNvbnN0IF9ob2lzdGVkXzE0ID0gW1wiaW5uZXJIVE1MXCJdO1xuY29uc3QgX2hvaXN0ZWRfMTUgPSBbXCJpbm5lckhUTUxcIl07XG5jb25zdCBfaG9pc3RlZF8xNiA9IFtcImlubmVySFRNTFwiXTtcbmNvbnN0IF9ob2lzdGVkXzE3ID0gW1widmFsdWVcIl07XG5jb25zdCBfaG9pc3RlZF8xOCA9IFtcIm5hbWVcIiwgXCJ2YWx1ZVwiXTtcbmNvbnN0IF9ob2lzdGVkXzE5ID0gW1wibmFtZVwiLCBcInZhbHVlXCJdO1xuXG5mdW5jdGlvbiByZW5kZXIoX2N0eCwgX2NhY2hlLCAkcHJvcHMsICRzZXR1cCwgJGRhdGEsICRvcHRpb25zKSB7XG4gIHJldHVybiAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLCB7XG4gICAgcmVmOiBcIm11bHRpc2VsZWN0XCIsXG4gICAgdGFiaW5kZXg6IF9jdHgudGFiaW5kZXgsXG4gICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LmNvbnRhaW5lciksXG4gICAgaWQ6ICRwcm9wcy5zZWFyY2hhYmxlID8gdW5kZWZpbmVkIDogJHByb3BzLmlkLFxuICAgIGRpcjogJHByb3BzLnJ0bCA/ICdydGwnIDogdW5kZWZpbmVkLFxuICAgIFwiYXJpYS1vd25zXCI6IF9jdHguYXJpYU93bnMsXG4gICAgXCJhcmlhLWV4cGFuZGVkXCI6IF9jdHguaXNPcGVuLFxuICAgIFwiYXJpYS1sYWJlbFwiOiBfY3R4LmFyaWFMYWJlbCxcbiAgICBcImFyaWEtcGxhY2Vob2xkZXJcIjogX2N0eC5hcmlhUGxhY2Vob2xkZXIsXG4gICAgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIjogX2N0eC5hcmlhQWN0aXZlRGVzY2VuZGFudCxcbiAgICBvbkZvY3VzaW46IF9jYWNoZVs4XSB8fCAoX2NhY2hlWzhdID0gKC4uLmFyZ3MpID0+IChfY3R4LmFjdGl2YXRlICYmIF9jdHguYWN0aXZhdGUoLi4uYXJncykpKSxcbiAgICBvbkZvY3Vzb3V0OiBfY2FjaGVbOV0gfHwgKF9jYWNoZVs5XSA9ICguLi5hcmdzKSA9PiAoX2N0eC5kZWFjdGl2YXRlICYmIF9jdHguZGVhY3RpdmF0ZSguLi5hcmdzKSkpLFxuICAgIG9uS2V5ZG93bjogX2NhY2hlWzEwXSB8fCAoX2NhY2hlWzEwXSA9ICguLi5hcmdzKSA9PiAoX2N0eC5oYW5kbGVLZXlkb3duICYmIF9jdHguaGFuZGxlS2V5ZG93biguLi5hcmdzKSkpLFxuICAgIG9uS2V5dXA6IF9jYWNoZVsxMV0gfHwgKF9jYWNoZVsxMV0gPSAoLi4uYXJncykgPT4gKF9jdHguaGFuZGxlS2V5dXAgJiYgX2N0eC5oYW5kbGVLZXl1cCguLi5hcmdzKSkpLFxuICAgIG9uRm9jdXM6IF9jYWNoZVsxMl0gfHwgKF9jYWNoZVsxMl0gPSAoLi4uYXJncykgPT4gKF9jdHguaGFuZGxlRm9jdXMgJiYgX2N0eC5oYW5kbGVGb2N1cyguLi5hcmdzKSkpLFxuICAgIG9uTW91c2Vkb3duOiBfY2FjaGVbMTNdIHx8IChfY2FjaGVbMTNdID0gKC4uLmFyZ3MpID0+IChfY3R4LmhhbmRsZU1vdXNlZG93biAmJiBfY3R4LmhhbmRsZU1vdXNlZG93biguLi5hcmdzKSkpLFxuICAgIHJvbGU6IFwiY29tYm9ib3hcIlxuICB9LCBbXG4gICAgY3JlYXRlQ29tbWVudFZOb2RlKFwiIFNlYXJjaCBcIiksXG4gICAgKCRwcm9wcy5tb2RlICE9PSAndGFncycgJiYgJHByb3BzLnNlYXJjaGFibGUgJiYgISRwcm9wcy5kaXNhYmxlZClcbiAgICAgID8gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJpbnB1dFwiLCBtZXJnZVByb3BzKHtcbiAgICAgICAgICBrZXk6IDAsXG4gICAgICAgICAgdHlwZTogJHByb3BzLmlucHV0VHlwZSxcbiAgICAgICAgICBtb2RlbFZhbHVlOiBfY3R4LnNlYXJjaCxcbiAgICAgICAgICB2YWx1ZTogX2N0eC5zZWFyY2gsXG4gICAgICAgICAgY2xhc3M6IF9jdHguY2xhc3NMaXN0LnNlYXJjaCxcbiAgICAgICAgICBhdXRvY29tcGxldGU6ICRwcm9wcy5hdXRvY29tcGxldGUsXG4gICAgICAgICAgaWQ6ICRwcm9wcy5zZWFyY2hhYmxlID8gJHByb3BzLmlkIDogdW5kZWZpbmVkXG4gICAgICAgIH0sICRwcm9wcy5hdHRycywge1xuICAgICAgICAgIFwiYXJpYS1vd25zXCI6IF9jdHguYXJpYU93bnMsXG4gICAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IF9jdHguaXNPcGVuLFxuICAgICAgICAgIFwiYXJpYS1sYWJlbFwiOiBfY3R4LmFyaWFMYWJlbCxcbiAgICAgICAgICBcImFyaWEtcGxhY2Vob2xkZXJcIjogX2N0eC5hcmlhUGxhY2Vob2xkZXIsXG4gICAgICAgICAgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIjogX2N0eC5hcmlhQWN0aXZlRGVzY2VuZGFudCxcbiAgICAgICAgICBvbklucHV0OiBfY2FjaGVbMF0gfHwgKF9jYWNoZVswXSA9ICguLi5hcmdzKSA9PiAoX2N0eC5oYW5kbGVTZWFyY2hJbnB1dCAmJiBfY3R4LmhhbmRsZVNlYXJjaElucHV0KC4uLmFyZ3MpKSksXG4gICAgICAgICAgb25LZXlwcmVzczogX2NhY2hlWzFdIHx8IChfY2FjaGVbMV0gPSAoLi4uYXJncykgPT4gKF9jdHguaGFuZGxlS2V5cHJlc3MgJiYgX2N0eC5oYW5kbGVLZXlwcmVzcyguLi5hcmdzKSkpLFxuICAgICAgICAgIG9uUGFzdGU6IF9jYWNoZVsyXSB8fCAoX2NhY2hlWzJdID0gd2l0aE1vZGlmaWVycygoLi4uYXJncykgPT4gKF9jdHguaGFuZGxlUGFzdGUgJiYgX2N0eC5oYW5kbGVQYXN0ZSguLi5hcmdzKSksIFtcInN0b3BcIl0pKSxcbiAgICAgICAgICByZWY6IFwiaW5wdXRcIixcbiAgICAgICAgICByb2xlOiBcImNvbWJvYm94XCJcbiAgICAgICAgfSksIG51bGwsIDE2IC8qIEZVTExfUFJPUFMgKi8sIF9ob2lzdGVkXzIpKVxuICAgICAgOiBjcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpLFxuICAgIGNyZWF0ZUNvbW1lbnRWTm9kZShcIiBUYWdzICh3aXRoIHNlYXJjaCkgXCIpLFxuICAgICgkcHJvcHMubW9kZSA9PSAndGFncycpXG4gICAgICA/IChvcGVuQmxvY2soKSwgY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIsIHtcbiAgICAgICAgICBrZXk6IDEsXG4gICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LnRhZ3MpXG4gICAgICAgIH0sIFtcbiAgICAgICAgICAob3BlbkJsb2NrKHRydWUpLCBjcmVhdGVFbGVtZW50QmxvY2soRnJhZ21lbnQsIG51bGwsIHJlbmRlckxpc3QoX2N0eC5pdiwgKG9wdGlvbiwgaSwga2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJ0YWdcIiwge1xuICAgICAgICAgICAgICBvcHRpb246IG9wdGlvbixcbiAgICAgICAgICAgICAgaGFuZGxlVGFnUmVtb3ZlOiBfY3R4LmhhbmRsZVRhZ1JlbW92ZSxcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6ICRwcm9wcy5kaXNhYmxlZFxuICAgICAgICAgICAgfSwgKCkgPT4gW1xuICAgICAgICAgICAgICAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhcInNwYW5cIiwge1xuICAgICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC50YWcpLFxuICAgICAgICAgICAgICAgIGtleToga2V5XG4gICAgICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Vk5vZGUodG9EaXNwbGF5U3RyaW5nKG9wdGlvblskcHJvcHMubGFiZWxdKSArIFwiIFwiLCAxIC8qIFRFWFQgKi8pLFxuICAgICAgICAgICAgICAgICghJHByb3BzLmRpc2FibGVkKVxuICAgICAgICAgICAgICAgICAgPyAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhcInNwYW5cIiwge1xuICAgICAgICAgICAgICAgICAgICAgIGtleTogMCxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QudGFnUmVtb3ZlKSxcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiAkZXZlbnQgPT4gKF9jdHguaGFuZGxlVGFnUmVtb3ZlKG9wdGlvbiwgJGV2ZW50KSlcbiAgICAgICAgICAgICAgICAgICAgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcInNwYW5cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LnRhZ1JlbW92ZUljb24pXG4gICAgICAgICAgICAgICAgICAgICAgfSwgbnVsbCwgMiAvKiBDTEFTUyAqLylcbiAgICAgICAgICAgICAgICAgICAgXSwgMTAgLyogQ0xBU1MsIFBST1BTICovLCBfaG9pc3RlZF8zKSlcbiAgICAgICAgICAgICAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKVxuICAgICAgICAgICAgICBdLCAyIC8qIENMQVNTICovKSlcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgfSksIDI1NiAvKiBVTktFWUVEX0ZSQUdNRU5UICovKSksXG4gICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsIHtcbiAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC50YWdzU2VhcmNoV3JhcHBlciksXG4gICAgICAgICAgICByZWY6IFwidGFnc1wiXG4gICAgICAgICAgfSwgW1xuICAgICAgICAgICAgY3JlYXRlQ29tbWVudFZOb2RlKFwiIFVzZWQgZm9yIG1lYXN1cmluZyBzZWFyY2ggd2lkdGggXCIpLFxuICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC50YWdzU2VhcmNoQ29weSlcbiAgICAgICAgICAgIH0sIHRvRGlzcGxheVN0cmluZyhfY3R4LnNlYXJjaCksIDMgLyogVEVYVCwgQ0xBU1MgKi8pLFxuICAgICAgICAgICAgY3JlYXRlQ29tbWVudFZOb2RlKFwiIEFjdHVhbCBzZWFyY2ggaW5wdXQgXCIpLFxuICAgICAgICAgICAgKCRwcm9wcy5zZWFyY2hhYmxlICYmICEkcHJvcHMuZGlzYWJsZWQpXG4gICAgICAgICAgICAgID8gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJpbnB1dFwiLCBtZXJnZVByb3BzKHtcbiAgICAgICAgICAgICAgICAgIGtleTogMCxcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICRwcm9wcy5pbnB1dFR5cGUsXG4gICAgICAgICAgICAgICAgICBtb2RlbFZhbHVlOiBfY3R4LnNlYXJjaCxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfY3R4LnNlYXJjaCxcbiAgICAgICAgICAgICAgICAgIGNsYXNzOiBfY3R4LmNsYXNzTGlzdC50YWdzU2VhcmNoLFxuICAgICAgICAgICAgICAgICAgaWQ6ICRwcm9wcy5zZWFyY2hhYmxlID8gJHByb3BzLmlkIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiAkcHJvcHMuYXV0b2NvbXBsZXRlXG4gICAgICAgICAgICAgICAgfSwgJHByb3BzLmF0dHJzLCB7XG4gICAgICAgICAgICAgICAgICBcImFyaWEtb3duc1wiOiBfY3R4LmFyaWFPd25zLFxuICAgICAgICAgICAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IF9jdHguaXNPcGVuLFxuICAgICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IF9jdHguYXJpYUxhYmVsLFxuICAgICAgICAgICAgICAgICAgXCJhcmlhLXBsYWNlaG9sZGVyXCI6IF9jdHguYXJpYVBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIjogX2N0eC5hcmlhQWN0aXZlRGVzY2VuZGFudCxcbiAgICAgICAgICAgICAgICAgIG9uSW5wdXQ6IF9jYWNoZVszXSB8fCAoX2NhY2hlWzNdID0gKC4uLmFyZ3MpID0+IChfY3R4LmhhbmRsZVNlYXJjaElucHV0ICYmIF9jdHguaGFuZGxlU2VhcmNoSW5wdXQoLi4uYXJncykpKSxcbiAgICAgICAgICAgICAgICAgIG9uS2V5cHJlc3M6IF9jYWNoZVs0XSB8fCAoX2NhY2hlWzRdID0gKC4uLmFyZ3MpID0+IChfY3R4LmhhbmRsZUtleXByZXNzICYmIF9jdHguaGFuZGxlS2V5cHJlc3MoLi4uYXJncykpKSxcbiAgICAgICAgICAgICAgICAgIG9uUGFzdGU6IF9jYWNoZVs1XSB8fCAoX2NhY2hlWzVdID0gd2l0aE1vZGlmaWVycygoLi4uYXJncykgPT4gKF9jdHguaGFuZGxlUGFzdGUgJiYgX2N0eC5oYW5kbGVQYXN0ZSguLi5hcmdzKSksIFtcInN0b3BcIl0pKSxcbiAgICAgICAgICAgICAgICAgIHJlZjogXCJpbnB1dFwiLFxuICAgICAgICAgICAgICAgICAgcm9sZTogXCJjb21ib2JveFwiXG4gICAgICAgICAgICAgICAgfSksIG51bGwsIDE2IC8qIEZVTExfUFJPUFMgKi8sIF9ob2lzdGVkXzQpKVxuICAgICAgICAgICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSlcbiAgICAgICAgICBdLCAyIC8qIENMQVNTICovKVxuICAgICAgICBdLCAyIC8qIENMQVNTICovKSlcbiAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgU2luZ2xlIGxhYmVsIFwiKSxcbiAgICAoJHByb3BzLm1vZGUgPT0gJ3NpbmdsZScgJiYgX2N0eC5oYXNTZWxlY3RlZCAmJiAhX2N0eC5zZWFyY2ggJiYgX2N0eC5pdilcbiAgICAgID8gcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJzaW5nbGVsYWJlbFwiLCB7XG4gICAgICAgICAga2V5OiAyLFxuICAgICAgICAgIHZhbHVlOiBfY3R4Lml2XG4gICAgICAgIH0sICgpID0+IFtcbiAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIiwge1xuICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LnNpbmdsZUxhYmVsKVxuICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcInNwYW5cIiwge1xuICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3Quc2luZ2xlTGFiZWxUZXh0KSxcbiAgICAgICAgICAgICAgaW5uZXJIVE1MOiBfY3R4Lml2WyRwcm9wcy5sYWJlbF1cbiAgICAgICAgICAgIH0sIG51bGwsIDEwIC8qIENMQVNTLCBQUk9QUyAqLywgX2hvaXN0ZWRfNSlcbiAgICAgICAgICBdLCAyIC8qIENMQVNTICovKVxuICAgICAgICBdKVxuICAgICAgOiBjcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpLFxuICAgIGNyZWF0ZUNvbW1lbnRWTm9kZShcIiBNdWx0aXBsZSBsYWJlbCBcIiksXG4gICAgKCRwcm9wcy5tb2RlID09ICdtdWx0aXBsZScgJiYgX2N0eC5oYXNTZWxlY3RlZCAmJiAhX2N0eC5zZWFyY2gpXG4gICAgICA/IHJlbmRlclNsb3QoX2N0eC4kc2xvdHMsIFwibXVsdGlwbGVsYWJlbFwiLCB7XG4gICAgICAgICAga2V5OiAzLFxuICAgICAgICAgIHZhbHVlczogX2N0eC5pdlxuICAgICAgICB9LCAoKSA9PiBbXG4gICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsIHtcbiAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5tdWx0aXBsZUxhYmVsKSxcbiAgICAgICAgICAgIGlubmVySFRNTDogX2N0eC5tdWx0aXBsZUxhYmVsVGV4dFxuICAgICAgICAgIH0sIG51bGwsIDEwIC8qIENMQVNTLCBQUk9QUyAqLywgX2hvaXN0ZWRfNilcbiAgICAgICAgXSlcbiAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgUGxhY2Vob2xkZXIgXCIpLFxuICAgICgkcHJvcHMucGxhY2Vob2xkZXIgJiYgIV9jdHguaGFzU2VsZWN0ZWQgJiYgIV9jdHguc2VhcmNoKVxuICAgICAgPyByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcInBsYWNlaG9sZGVyXCIsIHsga2V5OiA0IH0sICgpID0+IFtcbiAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIiwge1xuICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LnBsYWNlaG9sZGVyKVxuICAgICAgICAgIH0sIHRvRGlzcGxheVN0cmluZygkcHJvcHMucGxhY2Vob2xkZXIpLCAzIC8qIFRFWFQsIENMQVNTICovKVxuICAgICAgICBdKVxuICAgICAgOiBjcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpLFxuICAgIGNyZWF0ZUNvbW1lbnRWTm9kZShcIiBTcGlubmVyIFwiKSxcbiAgICAoJHByb3BzLmxvYWRpbmcgfHwgX2N0eC5yZXNvbHZpbmcpXG4gICAgICA/IHJlbmRlclNsb3QoX2N0eC4kc2xvdHMsIFwic3Bpbm5lclwiLCB7IGtleTogNSB9LCAoKSA9PiBbXG4gICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCB7XG4gICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3Quc3Bpbm5lcilcbiAgICAgICAgICB9LCBudWxsLCAyIC8qIENMQVNTICovKVxuICAgICAgICBdKVxuICAgICAgOiBjcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpLFxuICAgIGNyZWF0ZUNvbW1lbnRWTm9kZShcIiBDbGVhciBcIiksXG4gICAgKF9jdHguaGFzU2VsZWN0ZWQgJiYgISRwcm9wcy5kaXNhYmxlZCAmJiAkcHJvcHMuY2FuQ2xlYXIgJiYgIV9jdHguYnVzeSlcbiAgICAgID8gcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJjbGVhclwiLCB7XG4gICAgICAgICAga2V5OiA2LFxuICAgICAgICAgIGNsZWFyOiBfY3R4LmNsZWFyXG4gICAgICAgIH0sICgpID0+IFtcbiAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5jbGVhciksXG4gICAgICAgICAgICBvbkNsaWNrOiBfY2FjaGVbNl0gfHwgKF9jYWNoZVs2XSA9ICguLi5hcmdzKSA9PiAoX2N0eC5jbGVhciAmJiBfY3R4LmNsZWFyKC4uLmFyZ3MpKSlcbiAgICAgICAgICB9LCBbXG4gICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LmNsZWFySWNvbilcbiAgICAgICAgICAgIH0sIG51bGwsIDIgLyogQ0xBU1MgKi8pXG4gICAgICAgICAgXSwgMiAvKiBDTEFTUyAqLylcbiAgICAgICAgXSlcbiAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgQ2FyZXQgXCIpLFxuICAgICgkcHJvcHMuY2FyZXQgJiYgJHByb3BzLnNob3dPcHRpb25zKVxuICAgICAgPyByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcImNhcmV0XCIsIHsga2V5OiA3IH0sICgpID0+IFtcbiAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5jYXJldCksXG4gICAgICAgICAgICBvbkNsaWNrOiBfY2FjaGVbN10gfHwgKF9jYWNoZVs3XSA9ICguLi5hcmdzKSA9PiAoX2N0eC5oYW5kbGVDYXJldENsaWNrICYmIF9jdHguaGFuZGxlQ2FyZXRDbGljayguLi5hcmdzKSkpXG4gICAgICAgICAgfSwgbnVsbCwgMiAvKiBDTEFTUyAqLylcbiAgICAgICAgXSlcbiAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgT3B0aW9ucyBcIiksXG4gICAgY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsIHtcbiAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5kcm9wZG93biksXG4gICAgICB0YWJpbmRleDogXCItMVwiXG4gICAgfSwgW1xuICAgICAgcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJiZWZvcmVsaXN0XCIsIHsgb3B0aW9uczogX2N0eC5mbyB9KSxcbiAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcInVsXCIsIHtcbiAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0Lm9wdGlvbnMpLFxuICAgICAgICBpZDogX2N0eC5hcmlhT3ducyxcbiAgICAgICAgcm9sZTogXCJsaXN0Ym94XCJcbiAgICAgIH0sIFtcbiAgICAgICAgKCRwcm9wcy5ncm91cHMpXG4gICAgICAgICAgPyAob3BlbkJsb2NrKHRydWUpLCBjcmVhdGVFbGVtZW50QmxvY2soRnJhZ21lbnQsIHsga2V5OiAwIH0sIHJlbmRlckxpc3QoX2N0eC5mZywgKGdyb3VwLCBpLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIChvcGVuQmxvY2soKSwgY3JlYXRlRWxlbWVudEJsb2NrKFwibGlcIiwge1xuICAgICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5ncm91cCksXG4gICAgICAgICAgICAgICAga2V5OiBrZXlcbiAgICAgICAgICAgICAgfSwgW1xuICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLCB7XG4gICAgICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QuZ3JvdXBMYWJlbChncm91cCkpLFxuICAgICAgICAgICAgICAgICAgXCJkYXRhLXBvaW50ZWRcIjogX2N0eC5pc1BvaW50ZWQoZ3JvdXApLFxuICAgICAgICAgICAgICAgICAgb25Nb3VzZWVudGVyOiAkZXZlbnQgPT4gKF9jdHguc2V0UG9pbnRlcihncm91cCkpLFxuICAgICAgICAgICAgICAgICAgb25DbGljazogJGV2ZW50ID0+IChfY3R4LmhhbmRsZUdyb3VwQ2xpY2soZ3JvdXApKSxcbiAgICAgICAgICAgICAgICAgIHJvbGU6IFwibm9uZVwiXG4gICAgICAgICAgICAgICAgfSwgW1xuICAgICAgICAgICAgICAgICAgcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJncm91cGxhYmVsXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkOiBfY3R4LmlzU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgIGlzUG9pbnRlZDogX2N0eC5pc1BvaW50ZWRcbiAgICAgICAgICAgICAgICAgIH0sICgpID0+IFtcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgaW5uZXJIVE1MOiBncm91cFskcHJvcHMuZ3JvdXBMYWJlbF1cbiAgICAgICAgICAgICAgICAgICAgfSwgbnVsbCwgOCAvKiBQUk9QUyAqLywgX2hvaXN0ZWRfOSlcbiAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgXSwgNDIgLyogQ0xBU1MsIFBST1BTLCBIWURSQVRFX0VWRU5UUyAqLywgX2hvaXN0ZWRfOCksXG4gICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwidWxcIiwge1xuICAgICAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0Lmdyb3VwT3B0aW9ucyksXG4gICAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogX2N0eC5hcmlhR3JvdXBMYWJlbChncm91cCksXG4gICAgICAgICAgICAgICAgICByb2xlOiBcImdyb3VwXCJcbiAgICAgICAgICAgICAgICB9LCBbXG4gICAgICAgICAgICAgICAgICAob3BlbkJsb2NrKHRydWUpLCBjcmVhdGVFbGVtZW50QmxvY2soRnJhZ21lbnQsIG51bGwsIHJlbmRlckxpc3QoZ3JvdXAuX19WSVNJQkxFX18sIChvcHRpb24sIGksIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJsaVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0Lm9wdGlvbihvcHRpb24sIGdyb3VwKSksXG4gICAgICAgICAgICAgICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgICAgICAgICAgICAgXCJkYXRhLXBvaW50ZWRcIjogX2N0eC5pc1BvaW50ZWQob3B0aW9uKSxcbiAgICAgICAgICAgICAgICAgICAgICBcImRhdGEtc2VsZWN0ZWRcIjogX2N0eC5pc1NlbGVjdGVkKG9wdGlvbikgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgIGlkOiBfY3R4LmFyaWFPcHRpb25JZChvcHRpb24pLFxuICAgICAgICAgICAgICAgICAgICAgIFwiYXJpYS1sYWJlbFwiOiBfY3R4LmFyaWFPcHRpb25MYWJlbChvcHRpb24pLFxuICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VlbnRlcjogJGV2ZW50ID0+IChfY3R4LnNldFBvaW50ZXIob3B0aW9uKSksXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljazogJGV2ZW50ID0+IChfY3R4LmhhbmRsZU9wdGlvbkNsaWNrKG9wdGlvbikpLFxuICAgICAgICAgICAgICAgICAgICAgIHJvbGU6IFwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclNsb3QoX2N0eC4kc2xvdHMsIFwib3B0aW9uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbjogb3B0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZDogX2N0eC5pc1NlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNQb2ludGVkOiBfY3R4LmlzUG9pbnRlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaDogX2N0eC5zZWFyY2hcbiAgICAgICAgICAgICAgICAgICAgICB9LCAoKSA9PiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJIVE1MOiBvcHRpb25bJHByb3BzLmxhYmVsXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgbnVsbCwgOCAvKiBQUk9QUyAqLywgX2hvaXN0ZWRfMTIpXG4gICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgXSwgNDIgLyogQ0xBU1MsIFBST1BTLCBIWURSQVRFX0VWRU5UUyAqLywgX2hvaXN0ZWRfMTEpKVxuICAgICAgICAgICAgICAgICAgfSksIDEyOCAvKiBLRVlFRF9GUkFHTUVOVCAqLykpXG4gICAgICAgICAgICAgICAgXSwgMTAgLyogQ0xBU1MsIFBST1BTICovLCBfaG9pc3RlZF8xMClcbiAgICAgICAgICAgICAgXSwgMiAvKiBDTEFTUyAqLykpXG4gICAgICAgICAgICB9KSwgMTI4IC8qIEtFWUVEX0ZSQUdNRU5UICovKSlcbiAgICAgICAgICA6IChvcGVuQmxvY2sodHJ1ZSksIGNyZWF0ZUVsZW1lbnRCbG9jayhGcmFnbWVudCwgeyBrZXk6IDEgfSwgcmVuZGVyTGlzdChfY3R4LmZvLCAob3B0aW9uLCBpLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIChvcGVuQmxvY2soKSwgY3JlYXRlRWxlbWVudEJsb2NrKFwibGlcIiwge1xuICAgICAgICAgICAgICAgIGlkOiBfY3R4LmFyaWFPcHRpb25JZChvcHRpb24pLFxuICAgICAgICAgICAgICAgIFwiYXJpYS1sYWJlbFwiOiBfY3R4LmFyaWFPcHRpb25MYWJlbChvcHRpb24pLFxuICAgICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5vcHRpb24ob3B0aW9uKSksXG4gICAgICAgICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgICAgICAgXCJkYXRhLXBvaW50ZWRcIjogX2N0eC5pc1BvaW50ZWQob3B0aW9uKSxcbiAgICAgICAgICAgICAgICBcImRhdGEtc2VsZWN0ZWRcIjogX2N0eC5pc1NlbGVjdGVkKG9wdGlvbikgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIG9uTW91c2VlbnRlcjogJGV2ZW50ID0+IChfY3R4LnNldFBvaW50ZXIob3B0aW9uKSksXG4gICAgICAgICAgICAgICAgb25DbGljazogJGV2ZW50ID0+IChfY3R4LmhhbmRsZU9wdGlvbkNsaWNrKG9wdGlvbikpLFxuICAgICAgICAgICAgICAgIHJvbGU6IFwib3B0aW9uXCJcbiAgICAgICAgICAgICAgfSwgW1xuICAgICAgICAgICAgICAgIHJlbmRlclNsb3QoX2N0eC4kc2xvdHMsIFwib3B0aW9uXCIsIHtcbiAgICAgICAgICAgICAgICAgIG9wdGlvbjogb3B0aW9uLFxuICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZDogX2N0eC5pc1NlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgaXNQb2ludGVkOiBfY3R4LmlzUG9pbnRlZCxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaDogX2N0eC5zZWFyY2hcbiAgICAgICAgICAgICAgICB9LCAoKSA9PiBbXG4gICAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgaW5uZXJIVE1MOiBvcHRpb25bJHByb3BzLmxhYmVsXVxuICAgICAgICAgICAgICAgICAgfSwgbnVsbCwgOCAvKiBQUk9QUyAqLywgX2hvaXN0ZWRfMTQpXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgXSwgNDIgLyogQ0xBU1MsIFBST1BTLCBIWURSQVRFX0VWRU5UUyAqLywgX2hvaXN0ZWRfMTMpKVxuICAgICAgICAgICAgfSksIDEyOCAvKiBLRVlFRF9GUkFHTUVOVCAqLykpXG4gICAgICBdLCAxMCAvKiBDTEFTUywgUFJPUFMgKi8sIF9ob2lzdGVkXzcpLFxuICAgICAgKF9jdHgubm9PcHRpb25zKVxuICAgICAgICA/IHJlbmRlclNsb3QoX2N0eC4kc2xvdHMsIFwibm9vcHRpb25zXCIsIHsga2V5OiAwIH0sICgpID0+IFtcbiAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLCB7XG4gICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5ub09wdGlvbnMpLFxuICAgICAgICAgICAgICBpbm5lckhUTUw6ICRwcm9wcy5ub09wdGlvbnNUZXh0XG4gICAgICAgICAgICB9LCBudWxsLCAxMCAvKiBDTEFTUywgUFJPUFMgKi8sIF9ob2lzdGVkXzE1KVxuICAgICAgICAgIF0pXG4gICAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICAgIChfY3R4Lm5vUmVzdWx0cylcbiAgICAgICAgPyByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcIm5vcmVzdWx0c1wiLCB7IGtleTogMSB9LCAoKSA9PiBbXG4gICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIiwge1xuICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3Qubm9SZXN1bHRzKSxcbiAgICAgICAgICAgICAgaW5uZXJIVE1MOiAkcHJvcHMubm9SZXN1bHRzVGV4dFxuICAgICAgICAgICAgfSwgbnVsbCwgMTAgLyogQ0xBU1MsIFBST1BTICovLCBfaG9pc3RlZF8xNilcbiAgICAgICAgICBdKVxuICAgICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSksXG4gICAgICAoJHByb3BzLmluZmluaXRlICYmIF9jdHguaGFzTW9yZSlcbiAgICAgICAgPyAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLCB7XG4gICAgICAgICAgICBrZXk6IDIsXG4gICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QuaW5pZmluaXRlKSxcbiAgICAgICAgICAgIHJlZjogXCJpbmZpbml0ZUxvYWRlclwiXG4gICAgICAgICAgfSwgW1xuICAgICAgICAgICAgcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJpbmZpbml0ZVwiLCB7fSwgKCkgPT4gW1xuICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QuaW5pZmluaXRlU3Bpbm5lcilcbiAgICAgICAgICAgICAgfSwgbnVsbCwgMiAvKiBDTEFTUyAqLylcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgXSwgMiAvKiBDTEFTUyAqLykpXG4gICAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICAgIHJlbmRlclNsb3QoX2N0eC4kc2xvdHMsIFwiYWZ0ZXJsaXN0XCIsIHsgb3B0aW9uczogX2N0eC5mbyB9KVxuICAgIF0sIDIgLyogQ0xBU1MgKi8pLFxuICAgIGNyZWF0ZUNvbW1lbnRWTm9kZShcIiBIYWNreSBpbnB1dCBlbGVtZW50IHRvIHNob3cgSFRNTDUgcmVxdWlyZWQgd2FybmluZyBcIiksXG4gICAgKCRwcm9wcy5yZXF1aXJlZClcbiAgICAgID8gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJpbnB1dFwiLCB7XG4gICAgICAgICAga2V5OiA4LFxuICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5mYWtlSW5wdXQpLFxuICAgICAgICAgIHRhYmluZGV4OiBcIi0xXCIsXG4gICAgICAgICAgdmFsdWU6IF9jdHgudGV4dFZhbHVlLFxuICAgICAgICAgIHJlcXVpcmVkOiBcIlwiXG4gICAgICAgIH0sIG51bGwsIDEwIC8qIENMQVNTLCBQUk9QUyAqLywgX2hvaXN0ZWRfMTcpKVxuICAgICAgOiBjcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpLFxuICAgIGNyZWF0ZUNvbW1lbnRWTm9kZShcIiBOYXRpdmUgaW5wdXQgc3VwcG9ydCBcIiksXG4gICAgKCRwcm9wcy5uYXRpdmVTdXBwb3J0KVxuICAgICAgPyAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhGcmFnbWVudCwgeyBrZXk6IDkgfSwgW1xuICAgICAgICAgICgkcHJvcHMubW9kZSA9PSAnc2luZ2xlJylcbiAgICAgICAgICAgID8gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAga2V5OiAwLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgICAgICAgbmFtZTogJHByb3BzLm5hbWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IF9jdHgucGxhaW5WYWx1ZSAhPT0gdW5kZWZpbmVkID8gX2N0eC5wbGFpblZhbHVlIDogJydcbiAgICAgICAgICAgICAgfSwgbnVsbCwgOCAvKiBQUk9QUyAqLywgX2hvaXN0ZWRfMTgpKVxuICAgICAgICAgICAgOiAob3BlbkJsb2NrKHRydWUpLCBjcmVhdGVFbGVtZW50QmxvY2soRnJhZ21lbnQsIHsga2V5OiAxIH0sIHJlbmRlckxpc3QoX2N0eC5wbGFpblZhbHVlLCAodiwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhcImlucHV0XCIsIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgICAgICAgICBuYW1lOiBgJHskcHJvcHMubmFtZX1bXWAsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogdixcbiAgICAgICAgICAgICAgICAgIGtleTogaVxuICAgICAgICAgICAgICAgIH0sIG51bGwsIDggLyogUFJPUFMgKi8sIF9ob2lzdGVkXzE5KSlcbiAgICAgICAgICAgICAgfSksIDEyOCAvKiBLRVlFRF9GUkFHTUVOVCAqLykpXG4gICAgICAgIF0sIDY0IC8qIFNUQUJMRV9GUkFHTUVOVCAqLykpXG4gICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSksXG4gICAgY3JlYXRlQ29tbWVudFZOb2RlKFwiIENyZWF0ZSBoZWlnaHQgZm9yIGVtcHR5IGlucHV0IFwiKSxcbiAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIiwge1xuICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LnNwYWNlcilcbiAgICB9LCBudWxsLCAyIC8qIENMQVNTICovKVxuICBdLCA0MiAvKiBDTEFTUywgUFJPUFMsIEhZRFJBVEVfRVZFTlRTICovLCBfaG9pc3RlZF8xKSlcbn1cblxuc2NyaXB0LnJlbmRlciA9IHJlbmRlcjtcbnNjcmlwdC5fX2ZpbGUgPSBcInNyYy9NdWx0aXNlbGVjdC52dWVcIjtcblxuZXhwb3J0IHsgc2NyaXB0IGFzIGRlZmF1bHQgfTtcbiIsIi8qIVxuICogQXBleENoYXJ0cyB2My40MC4wXG4gKiAoYykgMjAxOC0yMDIzIEFwZXhDaGFydHNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gdCh0LGUpe3ZhciBpPU9iamVjdC5rZXlzKHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7ZSYmKGE9YS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSkuZW51bWVyYWJsZX0pKSksaS5wdXNoLmFwcGx5KGksYSl9cmV0dXJuIGl9ZnVuY3Rpb24gZShlKXtmb3IodmFyIGk9MTtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKXt2YXIgYT1udWxsIT1hcmd1bWVudHNbaV0/YXJndW1lbnRzW2ldOnt9O2klMj90KE9iamVjdChhKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7byhlLHQsYVt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhhKSk6dChPYmplY3QoYSkpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBpKHQpe3JldHVybiBpPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIHR9LGkodCl9ZnVuY3Rpb24gYSh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gcyh0LGUpe2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgYT1lW2ldO2EuZW51bWVyYWJsZT1hLmVudW1lcmFibGV8fCExLGEuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIGEmJihhLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxhLmtleSxhKX19ZnVuY3Rpb24gcih0LGUsaSl7cmV0dXJuIGUmJnModC5wcm90b3R5cGUsZSksaSYmcyh0LGkpLHR9ZnVuY3Rpb24gbyh0LGUsaSl7cmV0dXJuIGUgaW4gdD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTppLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtlXT1pLHR9ZnVuY3Rpb24gbih0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksZSYmaCh0LGUpfWZ1bmN0aW9uIGwodCl7cmV0dXJuIGw9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbih0KXtyZXR1cm4gdC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KX0sbCh0KX1mdW5jdGlvbiBoKHQsZSl7cmV0dXJuIGg9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbih0LGUpe3JldHVybiB0Ll9fcHJvdG9fXz1lLHR9LGgodCxlKX1mdW5jdGlvbiBjKHQsZSl7aWYoZSYmKFwib2JqZWN0XCI9PXR5cGVvZiBlfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlKSlyZXR1cm4gZTtpZih2b2lkIDAhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTtyZXR1cm4gZnVuY3Rpb24odCl7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIHR9KHQpfWZ1bmN0aW9uIGQodCl7dmFyIGU9ZnVuY3Rpb24oKXtpZihcInVuZGVmaW5lZFwiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKHQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaSxhPWwodCk7aWYoZSl7dmFyIHM9bCh0aGlzKS5jb25zdHJ1Y3RvcjtpPVJlZmxlY3QuY29uc3RydWN0KGEsYXJndW1lbnRzLHMpfWVsc2UgaT1hLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gYyh0aGlzLGkpfX1mdW5jdGlvbiBnKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHR9KHQpfHxmdW5jdGlvbih0LGUpe3ZhciBpPW51bGw9PXQ/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PWkpcmV0dXJuO3ZhciBhLHMscj1bXSxvPSEwLG49ITE7dHJ5e2ZvcihpPWkuY2FsbCh0KTshKG89KGE9aS5uZXh0KCkpLmRvbmUpJiYoci5wdXNoKGEudmFsdWUpLCFlfHxyLmxlbmd0aCE9PWUpO289ITApO31jYXRjaCh0KXtuPSEwLHM9dH1maW5hbGx5e3RyeXtvfHxudWxsPT1pLnJldHVybnx8aS5yZXR1cm4oKX1maW5hbGx5e2lmKG4pdGhyb3cgc319cmV0dXJuIHJ9KHQsZSl8fHAodCxlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIHUodCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGYodCl9KHQpfHxmdW5jdGlvbih0KXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZudWxsIT10W1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPXRbXCJAQGl0ZXJhdG9yXCJdKXJldHVybiBBcnJheS5mcm9tKHQpfSh0KXx8cCh0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBwKHQsZSl7aWYodCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpcmV0dXJuIGYodCxlKTt2YXIgaT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuXCJPYmplY3RcIj09PWkmJnQuY29uc3RydWN0b3ImJihpPXQuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PWl8fFwiU2V0XCI9PT1pP0FycmF5LmZyb20odCk6XCJBcmd1bWVudHNcIj09PWl8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGkpP2YodCxlKTp2b2lkIDB9fWZ1bmN0aW9uIGYodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIGk9MCxhPW5ldyBBcnJheShlKTtpPGU7aSsrKWFbaV09dFtpXTtyZXR1cm4gYX12YXIgeD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXthKHRoaXMsdCl9cmV0dXJuIHIodCxbe2tleTpcInNoYWRlUkdCQ29sb3JcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWUuc3BsaXQoXCIsXCIpLGE9dDwwPzA6MjU1LHM9dDwwPy0xKnQ6dCxyPXBhcnNlSW50KGlbMF0uc2xpY2UoNCksMTApLG89cGFyc2VJbnQoaVsxXSwxMCksbj1wYXJzZUludChpWzJdLDEwKTtyZXR1cm5cInJnYihcIisoTWF0aC5yb3VuZCgoYS1yKSpzKStyKStcIixcIisoTWF0aC5yb3VuZCgoYS1vKSpzKStvKStcIixcIisoTWF0aC5yb3VuZCgoYS1uKSpzKStuKStcIilcIn19LHtrZXk6XCJzaGFkZUhleENvbG9yXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1wYXJzZUludChlLnNsaWNlKDEpLDE2KSxhPXQ8MD8wOjI1NSxzPXQ8MD8tMSp0OnQscj1pPj4xNixvPWk+PjgmMjU1LG49MjU1Jmk7cmV0dXJuXCIjXCIrKDE2Nzc3MjE2KzY1NTM2KihNYXRoLnJvdW5kKChhLXIpKnMpK3IpKzI1NiooTWF0aC5yb3VuZCgoYS1vKSpzKStvKSsoTWF0aC5yb3VuZCgoYS1uKSpzKStuKSkudG9TdHJpbmcoMTYpLnNsaWNlKDEpfX0se2tleTpcInNoYWRlQ29sb3JcIix2YWx1ZTpmdW5jdGlvbihlLGkpe3JldHVybiB0LmlzQ29sb3JIZXgoaSk/dGhpcy5zaGFkZUhleENvbG9yKGUsaSk6dGhpcy5zaGFkZVJHQkNvbG9yKGUsaSl9fV0sW3trZXk6XCJiaW5kXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseShlLGFyZ3VtZW50cyl9fX0se2tleTpcImlzT2JqZWN0XCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlwib2JqZWN0XCI9PT1pKHQpJiYhQXJyYXkuaXNBcnJheSh0KSYmbnVsbCE9dH19LHtrZXk6XCJpc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKT09PVwiW29iamVjdCBcIit0K1wiXVwifX0se2tleTpcImxpc3RUb0FycmF5XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT1bXTtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKWlbZV09dFtlXTtyZXR1cm4gaX19LHtrZXk6XCJleHRlbmRcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXM7XCJmdW5jdGlvblwiIT10eXBlb2YgT2JqZWN0LmFzc2lnbiYmKE9iamVjdC5hc3NpZ249ZnVuY3Rpb24odCl7aWYobnVsbD09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNvbnZlcnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0XCIpO2Zvcih2YXIgZT1PYmplY3QodCksaT0xO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspe3ZhciBhPWFyZ3VtZW50c1tpXTtpZihudWxsIT1hKWZvcih2YXIgcyBpbiBhKWEuaGFzT3duUHJvcGVydHkocykmJihlW3NdPWFbc10pfXJldHVybiBlfSk7dmFyIGE9T2JqZWN0LmFzc2lnbih7fSx0KTtyZXR1cm4gdGhpcy5pc09iamVjdCh0KSYmdGhpcy5pc09iamVjdChlKSYmT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24ocyl7aS5pc09iamVjdChlW3NdKSYmcyBpbiB0P2Fbc109aS5leHRlbmQodFtzXSxlW3NdKTpPYmplY3QuYXNzaWduKGEsbyh7fSxzLGVbc10pKX0pKSxhfX0se2tleTpcImV4dGVuZEFycmF5XCIsdmFsdWU6ZnVuY3Rpb24oZSxpKXt2YXIgYT1bXTtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKGUpe2EucHVzaCh0LmV4dGVuZChpLGUpKX0pKSxlPWF9fSx7a2V5OlwibW9udGhNb2RcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdCUxMn19LHtrZXk6XCJjbG9uZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKHQuaXMoXCJBcnJheVwiLGUpKXtmb3IodmFyIGE9W10scz0wO3M8ZS5sZW5ndGg7cysrKWFbc109dGhpcy5jbG9uZShlW3NdKTtyZXR1cm4gYX1pZih0LmlzKFwiTnVsbFwiLGUpKXJldHVybiBudWxsO2lmKHQuaXMoXCJEYXRlXCIsZSkpcmV0dXJuIGU7aWYoXCJvYmplY3RcIj09PWkoZSkpe3ZhciByPXt9O2Zvcih2YXIgbyBpbiBlKWUuaGFzT3duUHJvcGVydHkobykmJihyW29dPXRoaXMuY2xvbmUoZVtvXSkpO3JldHVybiByfXJldHVybiBlfX0se2tleTpcImxvZzEwXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubG9nKHQpL01hdGguTE4xMH19LHtrZXk6XCJyb3VuZFRvQmFzZTEwXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucG93KDEwLE1hdGguZmxvb3IoTWF0aC5sb2cxMCh0KSkpfX0se2tleTpcInJvdW5kVG9CYXNlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5wb3coZSxNYXRoLmZsb29yKE1hdGgubG9nKHQpL01hdGgubG9nKGUpKSl9fSx7a2V5OlwicGFyc2VOdW1iZXJcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09PXQ/dDpwYXJzZUZsb2F0KHQpfX0se2tleTpcInJhbmRvbUlkXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4oTWF0aC5yYW5kb20oKSsxKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDQpfX0se2tleTpcIm5vRXhwb25lbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9U3RyaW5nKHQpLnNwbGl0KC9bZUVdLyk7aWYoMT09PWUubGVuZ3RoKXJldHVybiBlWzBdO3ZhciBpPVwiXCIsYT10PDA/XCItXCI6XCJcIixzPWVbMF0ucmVwbGFjZShcIi5cIixcIlwiKSxyPU51bWJlcihlWzFdKSsxO2lmKHI8MCl7Zm9yKGk9YStcIjAuXCI7cisrOylpKz1cIjBcIjtyZXR1cm4gaStzLnJlcGxhY2UoL14tLyxcIlwiKX1mb3Ioci09cy5sZW5ndGg7ci0tOylpKz1cIjBcIjtyZXR1cm4gcytpfX0se2tleTpcImdldERpbWVuc2lvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCksaT10LmNsaWVudEhlaWdodCxhPXQuY2xpZW50V2lkdGg7cmV0dXJuIGktPXBhcnNlRmxvYXQoZS5wYWRkaW5nVG9wKStwYXJzZUZsb2F0KGUucGFkZGluZ0JvdHRvbSksW2EtPXBhcnNlRmxvYXQoZS5wYWRkaW5nTGVmdCkrcGFyc2VGbG9hdChlLnBhZGRpbmdSaWdodCksaV19fSx7a2V5OlwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57dG9wOmUudG9wLHJpZ2h0OmUucmlnaHQsYm90dG9tOmUuYm90dG9tLGxlZnQ6ZS5sZWZ0LHdpZHRoOnQuY2xpZW50V2lkdGgsaGVpZ2h0OnQuY2xpZW50SGVpZ2h0LHg6ZS5sZWZ0LHk6ZS50b3B9fX0se2tleTpcImdldExhcmdlc3RTdHJpbmdGcm9tQXJyXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpJiYoZT1lLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5sZW5ndGg+ZS5sZW5ndGg/dDplfSkpKSx0Lmxlbmd0aD5lLmxlbmd0aD90OmV9KSwwKX19LHtrZXk6XCJoZXhUb1JnYmFcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpcIiM5OTk5OTlcIixlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTouNjtcIiNcIiE9PXQuc3Vic3RyaW5nKDAsMSkmJih0PVwiIzk5OTk5OVwiKTt2YXIgaT10LnJlcGxhY2UoXCIjXCIsXCJcIik7aT1pLm1hdGNoKG5ldyBSZWdFeHAoXCIoLntcIitpLmxlbmd0aC8zK1wifSlcIixcImdcIikpO2Zvcih2YXIgYT0wO2E8aS5sZW5ndGg7YSsrKWlbYV09cGFyc2VJbnQoMT09PWlbYV0ubGVuZ3RoP2lbYV0raVthXTppW2FdLDE2KTtyZXR1cm4gdm9pZCAwIT09ZSYmaS5wdXNoKGUpLFwicmdiYShcIitpLmpvaW4oXCIsXCIpK1wiKVwifX0se2tleTpcImdldE9wYWNpdHlGcm9tUkdCQVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBwYXJzZUZsb2F0KHQucmVwbGFjZSgvXi4qLCguKylcXCkvLFwiJDFcIikpfX0se2tleTpcInJnYjJoZXhcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4odD10Lm1hdGNoKC9ecmdiYT9bXFxzK10/XFwoW1xccytdPyhcXGQrKVtcXHMrXT8sW1xccytdPyhcXGQrKVtcXHMrXT8sW1xccytdPyhcXGQrKVtcXHMrXT8vaSkpJiY0PT09dC5sZW5ndGg/XCIjXCIrKFwiMFwiK3BhcnNlSW50KHRbMV0sMTApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpKyhcIjBcIitwYXJzZUludCh0WzJdLDEwKS50b1N0cmluZygxNikpLnNsaWNlKC0yKSsoXCIwXCIrcGFyc2VJbnQodFszXSwxMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtMik6XCJcIn19LHtrZXk6XCJpc0NvbG9ySGV4XCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuLyheI1swLTlBLUZdezZ9JCl8KF4jWzAtOUEtRl17M30kKXwoXiNbMC05QS1GXXs4fSQpL2kudGVzdCh0KX19LHtrZXk6XCJnZXRQb2x5Z29uUG9zXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9W10sYT0yKk1hdGguUEkvZSxzPTA7czxlO3MrKyl7dmFyIHI9e307ci54PXQqTWF0aC5zaW4ocyphKSxyLnk9LXQqTWF0aC5jb3MocyphKSxpLnB1c2gocil9cmV0dXJuIGl9fSx7a2V5OlwicG9sYXJUb0NhcnRlc2lhblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPShhLTkwKSpNYXRoLlBJLzE4MDtyZXR1cm57eDp0K2kqTWF0aC5jb3MocykseTplK2kqTWF0aC5zaW4ocyl9fX0se2tleTpcImVzY2FwZVN0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpcInhcIixpPXQudG9TdHJpbmcoKS5zbGljZSgpO3JldHVybiBpPWkucmVwbGFjZSgvW2AgfiFAIyQlXiYqKCl8K1xcPT87OidcIiwuPD57fVtcXF1cXFxcL10vZ2ksZSl9fSx7a2V5OlwibmVnVG9aZXJvXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQ8MD8wOnR9fSx7a2V5OlwibW92ZUluZGV4SW5BcnJheVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtpZihpPj10Lmxlbmd0aClmb3IodmFyIGE9aS10Lmxlbmd0aCsxO2EtLTspdC5wdXNoKHZvaWQgMCk7cmV0dXJuIHQuc3BsaWNlKGksMCx0LnNwbGljZShlLDEpWzBdKSx0fX0se2tleTpcImV4dHJhY3ROdW1iZXJcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VGbG9hdCh0LnJlcGxhY2UoL1teXFxkLl0qL2csXCJcIikpfX0se2tleTpcImZpbmRBbmNlc3RvclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKDsodD10LnBhcmVudEVsZW1lbnQpJiYhdC5jbGFzc0xpc3QuY29udGFpbnMoZSk7KTtyZXR1cm4gdH19LHtrZXk6XCJzZXRFTHN0eWxlc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShpKSYmKHQuc3R5bGUua2V5PWVbaV0pfX0se2tleTpcImlzTnVtYmVyXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIWlzTmFOKHQpJiZwYXJzZUZsb2F0KE51bWJlcih0KSk9PT10JiYhaXNOYU4ocGFyc2VJbnQodCwxMCkpfX0se2tleTpcImlzRmxvYXRcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gTnVtYmVyKHQpPT09dCYmdCUxIT0wfX0se2tleTpcImlzU2FmYXJpXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4vXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpfX0se2tleTpcImlzRmlyZWZveFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwiZmlyZWZveFwiKT4tMX19LHtrZXk6XCJpc0lFMTFcIix2YWx1ZTpmdW5jdGlvbigpe2lmKC0xIT09d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZihcIk1TSUVcIil8fHdpbmRvdy5uYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmRleE9mKFwiVHJpZGVudC9cIik+LTEpcmV0dXJuITB9fSx7a2V5OlwiaXNJRVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQsZT10LmluZGV4T2YoXCJNU0lFIFwiKTtpZihlPjApcmV0dXJuIHBhcnNlSW50KHQuc3Vic3RyaW5nKGUrNSx0LmluZGV4T2YoXCIuXCIsZSkpLDEwKTtpZih0LmluZGV4T2YoXCJUcmlkZW50L1wiKT4wKXt2YXIgaT10LmluZGV4T2YoXCJydjpcIik7cmV0dXJuIHBhcnNlSW50KHQuc3Vic3RyaW5nKGkrMyx0LmluZGV4T2YoXCIuXCIsaSkpLDEwKX12YXIgYT10LmluZGV4T2YoXCJFZGdlL1wiKTtyZXR1cm4gYT4wJiZwYXJzZUludCh0LnN1YnN0cmluZyhhKzUsdC5pbmRleE9mKFwiLlwiLGEpKSwxMCl9fV0pLHR9KCksYj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnNldEVhc2luZ0Z1bmN0aW9ucygpfXJldHVybiByKHQsW3trZXk6XCJzZXRFYXNpbmdGdW5jdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0O2lmKCF0aGlzLncuZ2xvYmFscy5lYXNpbmcpe3N3aXRjaCh0aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZWFzaW5nKXtjYXNlXCJsaW5lYXJcIjp0PVwiLVwiO2JyZWFrO2Nhc2VcImVhc2VpblwiOnQ9XCI8XCI7YnJlYWs7Y2FzZVwiZWFzZW91dFwiOnQ9XCI+XCI7YnJlYWs7Y2FzZVwiZWFzZWlub3V0XCI6ZGVmYXVsdDp0PVwiPD5cIjticmVhaztjYXNlXCJzd2luZ1wiOnQ9ZnVuY3Rpb24odCl7dmFyIGU9MS43MDE1ODtyZXR1cm4odC09MSkqdCooKGUrMSkqdCtlKSsxfTticmVhaztjYXNlXCJib3VuY2VcIjp0PWZ1bmN0aW9uKHQpe3JldHVybiB0PDEvMi43NT83LjU2MjUqdCp0OnQ8Mi8yLjc1PzcuNTYyNSoodC09MS41LzIuNzUpKnQrLjc1OnQ8Mi41LzIuNzU/Ny41NjI1Kih0LT0yLjI1LzIuNzUpKnQrLjkzNzU6Ny41NjI1Kih0LT0yLjYyNS8yLjc1KSp0Ky45ODQzNzV9O2JyZWFrO2Nhc2VcImVsYXN0aWNcIjp0PWZ1bmN0aW9uKHQpe3JldHVybiB0PT09ISF0P3Q6TWF0aC5wb3coMiwtMTAqdCkqTWF0aC5zaW4oKHQtLjA3NSkqKDIqTWF0aC5QSSkvLjMpKzF9fXRoaXMudy5nbG9iYWxzLmVhc2luZz10fX19LHtrZXk6XCJhbmltYXRlTGluZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3QuYXR0cihlKS5hbmltYXRlKGEpLmF0dHIoaSl9fSx7a2V5OlwiYW5pbWF0ZU1hcmtlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyKXtlfHwoZT0wKSx0LmF0dHIoe3I6ZSx3aWR0aDplLGhlaWdodDplfSkuYW5pbWF0ZShhLHMpLmF0dHIoe3I6aSx3aWR0aDppLndpZHRoLGhlaWdodDppLmhlaWdodH0pLmFmdGVyQWxsKChmdW5jdGlvbigpe3IoKX0pKX19LHtrZXk6XCJhbmltYXRlQ2lyY2xlXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzKXt0LmF0dHIoe3I6ZS5yLGN4OmUuY3gsY3k6ZS5jeX0pLmFuaW1hdGUoYSxzKS5hdHRyKHtyOmkucixjeDppLmN4LGN5OmkuY3l9KX19LHtrZXk6XCJhbmltYXRlUmVjdFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyl7dC5hdHRyKGUpLmFuaW1hdGUoYSkuYXR0cihpKS5hZnRlckFsbCgoZnVuY3Rpb24oKXtyZXR1cm4gcygpfSkpfX0se2tleTpcImFuaW1hdGVQYXRoc0dyYWR1YWxseVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZWwsaT10LnJlYWxJbmRleCxhPXQuaixzPXQuZmlsbCxyPXQucGF0aEZyb20sbz10LnBhdGhUbyxuPXQuc3BlZWQsbD10LmRlbGF5LGg9dGhpcy53LGM9MDtoLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmFuaW1hdGVHcmFkdWFsbHkuZW5hYmxlZCYmKGM9aC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5hbmltYXRlR3JhZHVhbGx5LmRlbGF5KSxoLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCYmaC5nbG9iYWxzLmRhdGFDaGFuZ2VkJiZcImJhclwiIT09aC5jb25maWcuY2hhcnQudHlwZSYmKGM9MCksdGhpcy5tb3JwaFNWRyhlLGksYSxcImxpbmVcIiE9PWguY29uZmlnLmNoYXJ0LnR5cGV8fGguZ2xvYmFscy5jb21ib0NoYXJ0cz9zOlwic3Ryb2tlXCIscixvLG4sbCpjKX19LHtrZXk6XCJzaG93RGVsYXllZEVsZW1lbnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLncuZ2xvYmFscy5kZWxheWVkRWxlbWVudHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5lbC5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwiKX0pKX19LHtrZXk6XCJhbmltYXRpb25Db21wbGV0ZWRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7ZS5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkfHwoZS5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkPSEwLHRoaXMuc2hvd0RlbGF5ZWRFbGVtZW50cygpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGUuY29uZmlnLmNoYXJ0LmV2ZW50cy5hbmltYXRpb25FbmQmJmUuY29uZmlnLmNoYXJ0LmV2ZW50cy5hbmltYXRpb25FbmQodGhpcy5jdHgse2VsOnQsdzplfSkpfX0se2tleTpcIm1vcnBoU1ZHXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzLHIsbyxuKXt2YXIgbD10aGlzLGg9dGhpcy53O3N8fChzPXQuYXR0cihcInBhdGhGcm9tXCIpKSxyfHwocj10LmF0dHIoXCJwYXRoVG9cIikpO3ZhciBjPWZ1bmN0aW9uKHQpe3JldHVyblwicmFkYXJcIj09PWguY29uZmlnLmNoYXJ0LnR5cGUmJihvPTEpLFwiTSAwIFwiLmNvbmNhdChoLmdsb2JhbHMuZ3JpZEhlaWdodCl9Oyghc3x8cy5pbmRleE9mKFwidW5kZWZpbmVkXCIpPi0xfHxzLmluZGV4T2YoXCJOYU5cIik+LTEpJiYocz1jKCkpLCghcnx8ci5pbmRleE9mKFwidW5kZWZpbmVkXCIpPi0xfHxyLmluZGV4T2YoXCJOYU5cIik+LTEpJiYocj1jKCkpLGguZ2xvYmFscy5zaG91bGRBbmltYXRlfHwobz0xKSx0LnBsb3QocykuYW5pbWF0ZSgxLGguZ2xvYmFscy5lYXNpbmcsbikucGxvdChzKS5hbmltYXRlKG8saC5nbG9iYWxzLmVhc2luZyxuKS5wbG90KHIpLmFmdGVyQWxsKChmdW5jdGlvbigpe3guaXNOdW1iZXIoaSk/aT09PWguZ2xvYmFscy5zZXJpZXNbaC5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aC0yJiZoLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZSYmbC5hbmltYXRpb25Db21wbGV0ZWQodCk6XCJub25lXCIhPT1hJiZoLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZSYmKCFoLmdsb2JhbHMuY29tYm9DaGFydHMmJmU9PT1oLmdsb2JhbHMuc2VyaWVzLmxlbmd0aC0xfHxoLmdsb2JhbHMuY29tYm9DaGFydHMpJiZsLmFuaW1hdGlvbkNvbXBsZXRlZCh0KSxsLnNob3dEZWxheWVkRWxlbWVudHMoKX0pKX19XSksdH0oKSx2PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJnZXREZWZhdWx0RmlsdGVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7dC51bmZpbHRlcighMCksKG5ldyB3aW5kb3cuU1ZHLkZpbHRlcikuc2l6ZShcIjEyMCVcIixcIjE4MCVcIixcIi01JVwiLFwiLTQwJVwiKSxcIm5vbmVcIiE9PWkuY29uZmlnLnN0YXRlcy5ub3JtYWwuZmlsdGVyP3RoaXMuYXBwbHlGaWx0ZXIodCxlLGkuY29uZmlnLnN0YXRlcy5ub3JtYWwuZmlsdGVyLnR5cGUsaS5jb25maWcuc3RhdGVzLm5vcm1hbC5maWx0ZXIudmFsdWUpOmkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCYmdGhpcy5kcm9wU2hhZG93KHQsaS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdyxlKX19LHtrZXk6XCJhZGROb3JtYWxGaWx0ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztpLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQmJiF0Lm5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1tYXJrZXJcIikmJnRoaXMuZHJvcFNoYWRvdyh0LGkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3csZSl9fSx7a2V5OlwiYWRkTGlnaHRlbkZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLHM9dGhpcy53LHI9aS5pbnRlbnNpdHk7dC51bmZpbHRlcighMCk7bmV3IHdpbmRvdy5TVkcuRmlsdGVyO3QuZmlsdGVyKChmdW5jdGlvbih0KXt2YXIgaT1zLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93OyhpLmVuYWJsZWQ/YS5hZGRTaGFkb3codCxlLGkpOnQpLmNvbXBvbmVudFRyYW5zZmVyKHtyZ2I6e3R5cGU6XCJsaW5lYXJcIixzbG9wZToxLjUsaW50ZXJjZXB0OnJ9fSl9KSksdC5maWx0ZXJlci5ub2RlLnNldEF0dHJpYnV0ZShcImZpbHRlclVuaXRzXCIsXCJ1c2VyU3BhY2VPblVzZVwiKSx0aGlzLl9zY2FsZUZpbHRlclNpemUodC5maWx0ZXJlci5ub2RlKX19LHtrZXk6XCJhZGREYXJrZW5GaWx0ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcyxzPXRoaXMudyxyPWkuaW50ZW5zaXR5O3QudW5maWx0ZXIoITApO25ldyB3aW5kb3cuU1ZHLkZpbHRlcjt0LmZpbHRlcigoZnVuY3Rpb24odCl7dmFyIGk9cy5jb25maWcuY2hhcnQuZHJvcFNoYWRvdzsoaS5lbmFibGVkP2EuYWRkU2hhZG93KHQsZSxpKTp0KS5jb21wb25lbnRUcmFuc2Zlcih7cmdiOnt0eXBlOlwibGluZWFyXCIsc2xvcGU6cn19KX0pKSx0LmZpbHRlcmVyLm5vZGUuc2V0QXR0cmlidXRlKFwiZmlsdGVyVW5pdHNcIixcInVzZXJTcGFjZU9uVXNlXCIpLHRoaXMuX3NjYWxlRmlsdGVyU2l6ZSh0LmZpbHRlcmVyLm5vZGUpfX0se2tleTpcImFwcGx5RmlsdGVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTouNTtzd2l0Y2goaSl7Y2FzZVwibm9uZVwiOnRoaXMuYWRkTm9ybWFsRmlsdGVyKHQsZSk7YnJlYWs7Y2FzZVwibGlnaHRlblwiOnRoaXMuYWRkTGlnaHRlbkZpbHRlcih0LGUse2ludGVuc2l0eTphfSk7YnJlYWs7Y2FzZVwiZGFya2VuXCI6dGhpcy5hZGREYXJrZW5GaWx0ZXIodCxlLHtpbnRlbnNpdHk6YX0pfX19LHtrZXk6XCJhZGRTaGFkb3dcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9aS5ibHVyLHM9aS50b3Ascj1pLmxlZnQsbz1pLmNvbG9yLG49aS5vcGFjaXR5LGw9dC5mbG9vZChBcnJheS5pc0FycmF5KG8pP29bZV06byxuKS5jb21wb3NpdGUodC5zb3VyY2VBbHBoYSxcImluXCIpLm9mZnNldChyLHMpLmdhdXNzaWFuQmx1cihhKS5tZXJnZSh0LnNvdXJjZSk7cmV0dXJuIHQuYmxlbmQodC5zb3VyY2UsbCl9fSx7a2V5OlwiZHJvcFNoYWRvd1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjAsYT1lLnRvcCxzPWUubGVmdCxyPWUuYmx1cixvPWUuY29sb3Isbj1lLm9wYWNpdHksbD1lLm5vVXNlclNwYWNlT25Vc2UsaD10aGlzLnc7cmV0dXJuIHQudW5maWx0ZXIoITApLHguaXNJRSgpJiZcInJhZGlhbEJhclwiPT09aC5jb25maWcuY2hhcnQudHlwZXx8KG89QXJyYXkuaXNBcnJheShvKT9vW2ldOm8sdC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3ZhciBlPW51bGw7ZT14LmlzU2FmYXJpKCl8fHguaXNGaXJlZm94KCl8fHguaXNJRSgpP3QuZmxvb2QobyxuKS5jb21wb3NpdGUodC5zb3VyY2VBbHBoYSxcImluXCIpLm9mZnNldChzLGEpLmdhdXNzaWFuQmx1cihyKTp0LmZsb29kKG8sbikuY29tcG9zaXRlKHQuc291cmNlQWxwaGEsXCJpblwiKS5vZmZzZXQocyxhKS5nYXVzc2lhbkJsdXIocikubWVyZ2UodC5zb3VyY2UpLHQuYmxlbmQodC5zb3VyY2UsZSl9KSksbHx8dC5maWx0ZXJlci5ub2RlLnNldEF0dHJpYnV0ZShcImZpbHRlclVuaXRzXCIsXCJ1c2VyU3BhY2VPblVzZVwiKSx0aGlzLl9zY2FsZUZpbHRlclNpemUodC5maWx0ZXJlci5ub2RlKSksdH19LHtrZXk6XCJzZXRTZWxlY3Rpb25GaWx0ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53O2lmKHZvaWQgMCE9PWEuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbZV0mJmEuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbZV0uaW5kZXhPZihpKT4tMSl7dC5ub2RlLnNldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIsITApO3ZhciBzPWEuY29uZmlnLnN0YXRlcy5hY3RpdmUuZmlsdGVyO1wibm9uZVwiIT09cyYmdGhpcy5hcHBseUZpbHRlcih0LGUscy50eXBlLHMudmFsdWUpfX19LHtrZXk6XCJfc2NhbGVGaWx0ZXJTaXplXCIsdmFsdWU6ZnVuY3Rpb24odCl7IWZ1bmN0aW9uKGUpe2Zvcih2YXIgaSBpbiBlKWUuaGFzT3duUHJvcGVydHkoaSkmJnQuc2V0QXR0cmlidXRlKGksZVtpXSl9KHt3aWR0aDpcIjIwMCVcIixoZWlnaHQ6XCIyMDAlXCIseDpcIi01MCVcIix5OlwiLTUwJVwifSl9fV0pLHR9KCksbT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5Olwicm91bmRQYXRoQ29ybmVyc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gaSh0LGUsaSl7dmFyIHM9ZS54LXQueCxyPWUueS10Lnksbz1NYXRoLnNxcnQocypzK3Iqcik7cmV0dXJuIGEodCxlLE1hdGgubWluKDEsaS9vKSl9ZnVuY3Rpb24gYSh0LGUsaSl7cmV0dXJue3g6dC54KyhlLngtdC54KSppLHk6dC55KyhlLnktdC55KSppfX1mdW5jdGlvbiBzKHQsZSl7dC5sZW5ndGg+MiYmKHRbdC5sZW5ndGgtMl09ZS54LHRbdC5sZW5ndGgtMV09ZS55KX1mdW5jdGlvbiByKHQpe3JldHVybnt4OnBhcnNlRmxvYXQodFt0Lmxlbmd0aC0yXSkseTpwYXJzZUZsb2F0KHRbdC5sZW5ndGgtMV0pfX10LmluZGV4T2YoXCJOYU5cIik+LTEmJih0PVwiXCIpO3ZhciBvPXQuc3BsaXQoL1ssXFxzXS8pLnJlZHVjZSgoZnVuY3Rpb24odCxlKXt2YXIgaT1lLm1hdGNoKFwiKFthLXpBLVpdKSguKylcIik7cmV0dXJuIGk/KHQucHVzaChpWzFdKSx0LnB1c2goaVsyXSkpOnQucHVzaChlKSx0fSksW10pLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gcGFyc2VGbG9hdChlKT09ZSYmdC5sZW5ndGg/dFt0Lmxlbmd0aC0xXS5wdXNoKGUpOnQucHVzaChbZV0pLHR9KSxbXSksbj1bXTtpZihvLmxlbmd0aD4xKXt2YXIgbD1yKG9bMF0pLGg9bnVsbDtcIlpcIj09b1tvLmxlbmd0aC0xXVswXSYmb1swXS5sZW5ndGg+MiYmKGg9W1wiTFwiLGwueCxsLnldLG9bby5sZW5ndGgtMV09aCksbi5wdXNoKG9bMF0pO2Zvcih2YXIgYz0xO2M8by5sZW5ndGg7YysrKXt2YXIgZD1uW24ubGVuZ3RoLTFdLGc9b1tjXSx1PWc9PWg/b1sxXTpvW2MrMV07aWYodSYmZCYmZC5sZW5ndGg+MiYmXCJMXCI9PWdbMF0mJnUubGVuZ3RoPjImJlwiTFwiPT11WzBdKXt2YXIgcCxmLHg9cihkKSxiPXIoZyksdj1yKHUpO3A9aShiLHgsZSksZj1pKGIsdixlKSxzKGcscCksZy5vcmlnUG9pbnQ9YixuLnB1c2goZyk7dmFyIG09YShwLGIsLjUpLHk9YShiLGYsLjUpLHc9W1wiQ1wiLG0ueCxtLnkseS54LHkueSxmLngsZi55XTt3Lm9yaWdQb2ludD1iLG4ucHVzaCh3KX1lbHNlIG4ucHVzaChnKX1pZihoKXt2YXIgaz1yKG5bbi5sZW5ndGgtMV0pO24ucHVzaChbXCJaXCJdKSxzKG5bMF0sayl9fWVsc2Ugbj1vO3JldHVybiBuLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLmpvaW4oXCIgXCIpK1wiIFwifSksXCJcIil9fSx7a2V5OlwiZHJhd0xpbmVcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XT9hcmd1bWVudHNbNF06XCIjYThhOGE4XCIscj1hcmd1bWVudHMubGVuZ3RoPjUmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XT9hcmd1bWVudHNbNV06MCxvPWFyZ3VtZW50cy5sZW5ndGg+NiYmdm9pZCAwIT09YXJndW1lbnRzWzZdP2FyZ3VtZW50c1s2XTpudWxsLG49YXJndW1lbnRzLmxlbmd0aD43JiZ2b2lkIDAhPT1hcmd1bWVudHNbN10/YXJndW1lbnRzWzddOlwiYnV0dFwiO3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uUGFwZXIubGluZSgpLmF0dHIoe3gxOnQseTE6ZSx4MjppLHkyOmEsc3Ryb2tlOnMsXCJzdHJva2UtZGFzaGFycmF5XCI6cixcInN0cm9rZS13aWR0aFwiOm8sXCJzdHJva2UtbGluZWNhcFwiOm59KX19LHtrZXk6XCJkcmF3UmVjdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjAsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MCxpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTowLGE9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOjAscz1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XT9hcmd1bWVudHNbNF06MCxyPWFyZ3VtZW50cy5sZW5ndGg+NSYmdm9pZCAwIT09YXJndW1lbnRzWzVdP2FyZ3VtZW50c1s1XTpcIiNmZWZlZmVcIixvPWFyZ3VtZW50cy5sZW5ndGg+NiYmdm9pZCAwIT09YXJndW1lbnRzWzZdP2FyZ3VtZW50c1s2XToxLG49YXJndW1lbnRzLmxlbmd0aD43JiZ2b2lkIDAhPT1hcmd1bWVudHNbN10/YXJndW1lbnRzWzddOm51bGwsbD1hcmd1bWVudHMubGVuZ3RoPjgmJnZvaWQgMCE9PWFyZ3VtZW50c1s4XT9hcmd1bWVudHNbOF06bnVsbCxoPWFyZ3VtZW50cy5sZW5ndGg+OSYmdm9pZCAwIT09YXJndW1lbnRzWzldP2FyZ3VtZW50c1s5XTowLGM9dGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLnJlY3QoKTtyZXR1cm4gYy5hdHRyKHt4OnQseTplLHdpZHRoOmk+MD9pOjAsaGVpZ2h0OmE+MD9hOjAscng6cyxyeTpzLG9wYWNpdHk6byxcInN0cm9rZS13aWR0aFwiOm51bGwhPT1uP246MCxzdHJva2U6bnVsbCE9PWw/bDpcIm5vbmVcIixcInN0cm9rZS1kYXNoYXJyYXlcIjpofSksYy5ub2RlLnNldEF0dHJpYnV0ZShcImZpbGxcIixyKSxjfX0se2tleTpcImRyYXdQb2x5Z29uXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOlwiI2UxZTFlMVwiLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjEsYT1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106XCJub25lXCI7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5wb2x5Z29uKHQpLmF0dHIoe2ZpbGw6YSxzdHJva2U6ZSxcInN0cm9rZS13aWR0aFwiOml9KX19LHtrZXk6XCJkcmF3Q2lyY2xlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGw7dDwwJiYodD0wKTt2YXIgaT10aGlzLncuZ2xvYmFscy5kb20uUGFwZXIuY2lyY2xlKDIqdCk7cmV0dXJuIG51bGwhPT1lJiZpLmF0dHIoZSksaX19LHtrZXk6XCJkcmF3UGF0aFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZCxpPXZvaWQgMD09PWU/XCJcIjplLGE9dC5zdHJva2Uscz12b2lkIDA9PT1hP1wiI2E4YThhOFwiOmEscj10LnN0cm9rZVdpZHRoLG89dm9pZCAwPT09cj8xOnIsbj10LmZpbGwsbD10LmZpbGxPcGFjaXR5LGg9dm9pZCAwPT09bD8xOmwsYz10LnN0cm9rZU9wYWNpdHksZD12b2lkIDA9PT1jPzE6YyxnPXQuY2xhc3Nlcyx1PXQuc3Ryb2tlTGluZWNhcCxwPXZvaWQgMD09PXU/bnVsbDp1LGY9dC5zdHJva2VEYXNoQXJyYXkseD12b2lkIDA9PT1mPzA6ZixiPXRoaXMudztyZXR1cm4gbnVsbD09PXAmJihwPWIuY29uZmlnLnN0cm9rZS5saW5lQ2FwKSwoaS5pbmRleE9mKFwidW5kZWZpbmVkXCIpPi0xfHxpLmluZGV4T2YoXCJOYU5cIik+LTEpJiYoaT1cIk0gMCBcIi5jb25jYXQoYi5nbG9iYWxzLmdyaWRIZWlnaHQpKSxiLmdsb2JhbHMuZG9tLlBhcGVyLnBhdGgoaSkuYXR0cih7ZmlsbDpuLFwiZmlsbC1vcGFjaXR5XCI6aCxzdHJva2U6cyxcInN0cm9rZS1vcGFjaXR5XCI6ZCxcInN0cm9rZS1saW5lY2FwXCI6cCxcInN0cm9rZS13aWR0aFwiOm8sXCJzdHJva2UtZGFzaGFycmF5XCI6eCxjbGFzczpnfSl9fSx7a2V5OlwiZ3JvdXBcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLGU9dGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLmdyb3VwKCk7cmV0dXJuIG51bGwhPT10JiZlLmF0dHIodCksZX19LHtrZXk6XCJtb3ZlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1bXCJNXCIsdCxlXS5qb2luKFwiIFwiKTtyZXR1cm4gaX19LHtrZXk6XCJsaW5lXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbCxhPW51bGw7cmV0dXJuIG51bGw9PT1pP2E9W1wiIExcIix0LGVdLmpvaW4oXCIgXCIpOlwiSFwiPT09aT9hPVtcIiBIXCIsdF0uam9pbihcIiBcIik6XCJWXCI9PT1pJiYoYT1bXCIgVlwiLGVdLmpvaW4oXCIgXCIpKSxhfX0se2tleTpcImN1cnZlXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzLHIpe3ZhciBvPVtcIkNcIix0LGUsaSxhLHMscl0uam9pbihcIiBcIik7cmV0dXJuIG99fSx7a2V5OlwicXVhZHJhdGljQ3VydmVcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXtyZXR1cm5bXCJRXCIsdCxlLGksYV0uam9pbihcIiBcIil9fSx7a2V5OlwiYXJjXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzLHIsbyl7dmFyIG49XCJBXCI7YXJndW1lbnRzLmxlbmd0aD43JiZ2b2lkIDAhPT1hcmd1bWVudHNbN10mJmFyZ3VtZW50c1s3XSYmKG49XCJhXCIpO3ZhciBsPVtuLHQsZSxpLGEscyxyLG9dLmpvaW4oXCIgXCIpO3JldHVybiBsfX0se2tleTpcInJlbmRlclBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGksYT10Lmoscz10LnJlYWxJbmRleCxyPXQucGF0aEZyb20sbz10LnBhdGhUbyxuPXQuc3Ryb2tlLGw9dC5zdHJva2VXaWR0aCxoPXQuc3Ryb2tlTGluZWNhcCxjPXQuZmlsbCxkPXQuYW5pbWF0aW9uRGVsYXksZz10LmluaXRpYWxTcGVlZCx1PXQuZGF0YUNoYW5nZVNwZWVkLHA9dC5jbGFzc05hbWUsZj10LnNob3VsZENsaXBUb0dyaWQseD12b2lkIDA9PT1mfHxmLG09dC5iaW5kRXZlbnRzT25QYXRocyx5PXZvaWQgMD09PW18fG0sdz10LmRyYXdTaGFkb3csaz12b2lkIDA9PT13fHx3LEE9dGhpcy53LFM9bmV3IHYodGhpcy5jdHgpLEM9bmV3IGIodGhpcy5jdHgpLEw9dGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQsUD1MJiZ0aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkLEk9ISEoTCYmIUEuZ2xvYmFscy5yZXNpemVkfHxQJiZBLmdsb2JhbHMuZGF0YUNoYW5nZWQmJkEuZ2xvYmFscy5zaG91bGRBbmltYXRlKTtJP2k9cjooaT1vLEEuZ2xvYmFscy5hbmltYXRpb25FbmRlZD0hMCk7dmFyIFQ9QS5jb25maWcuc3Ryb2tlLmRhc2hBcnJheSxNPTA7TT1BcnJheS5pc0FycmF5KFQpP1Rbc106QS5jb25maWcuc3Ryb2tlLmRhc2hBcnJheTt2YXIgWD10aGlzLmRyYXdQYXRoKHtkOmksc3Ryb2tlOm4sc3Ryb2tlV2lkdGg6bCxmaWxsOmMsZmlsbE9wYWNpdHk6MSxjbGFzc2VzOnAsc3Ryb2tlTGluZWNhcDpoLHN0cm9rZURhc2hBcnJheTpNfSk7aWYoWC5hdHRyKFwiaW5kZXhcIixzKSx4JiZYLmF0dHIoe1wiY2xpcC1wYXRoXCI6XCJ1cmwoI2dyaWRSZWN0TWFza1wiLmNvbmNhdChBLmdsb2JhbHMuY3VpZCxcIilcIil9KSxcIm5vbmVcIiE9PUEuY29uZmlnLnN0YXRlcy5ub3JtYWwuZmlsdGVyLnR5cGUpUy5nZXREZWZhdWx0RmlsdGVyKFgscyk7ZWxzZSBpZihBLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQmJmsmJighQS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkT25TZXJpZXN8fEEuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZE9uU2VyaWVzJiYtMSE9PUEuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZE9uU2VyaWVzLmluZGV4T2YocykpKXt2YXIgej1BLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93O1MuZHJvcFNoYWRvdyhYLHoscyl9eSYmKFgubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLHRoaXMucGF0aE1vdXNlRW50ZXIuYmluZCh0aGlzLFgpKSxYLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIix0aGlzLnBhdGhNb3VzZUxlYXZlLmJpbmQodGhpcyxYKSksWC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIix0aGlzLnBhdGhNb3VzZURvd24uYmluZCh0aGlzLFgpKSksWC5hdHRyKHtwYXRoVG86byxwYXRoRnJvbTpyfSk7dmFyIEU9e2VsOlgsajphLHJlYWxJbmRleDpzLHBhdGhGcm9tOnIscGF0aFRvOm8sZmlsbDpjLHN0cm9rZVdpZHRoOmwsZGVsYXk6ZH07cmV0dXJuIUx8fEEuZ2xvYmFscy5yZXNpemVkfHxBLmdsb2JhbHMuZGF0YUNoYW5nZWQ/IUEuZ2xvYmFscy5yZXNpemVkJiZBLmdsb2JhbHMuZGF0YUNoYW5nZWR8fEMuc2hvd0RlbGF5ZWRFbGVtZW50cygpOkMuYW5pbWF0ZVBhdGhzR3JhZHVhbGx5KGUoZSh7fSxFKSx7fSx7c3BlZWQ6Z30pKSxBLmdsb2JhbHMuZGF0YUNoYW5nZWQmJlAmJkkmJkMuYW5pbWF0ZVBhdGhzR3JhZHVhbGx5KGUoZSh7fSxFKSx7fSx7c3BlZWQ6dX0pKSxYfX0se2tleTpcImRyYXdQYXR0ZXJuXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpcIiNhOGE4YThcIixzPWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdP2FyZ3VtZW50c1s0XTowO3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uUGFwZXIucGF0dGVybihlLGksKGZ1bmN0aW9uKHIpe1wiaG9yaXpvbnRhbExpbmVzXCI9PT10P3IubGluZSgwLDAsaSwwKS5zdHJva2Uoe2NvbG9yOmEsd2lkdGg6cysxfSk6XCJ2ZXJ0aWNhbExpbmVzXCI9PT10P3IubGluZSgwLDAsMCxlKS5zdHJva2Uoe2NvbG9yOmEsd2lkdGg6cysxfSk6XCJzbGFudGVkTGluZXNcIj09PXQ/ci5saW5lKDAsMCxlLGkpLnN0cm9rZSh7Y29sb3I6YSx3aWR0aDpzfSk6XCJzcXVhcmVzXCI9PT10P3IucmVjdChlLGkpLmZpbGwoXCJub25lXCIpLnN0cm9rZSh7Y29sb3I6YSx3aWR0aDpzfSk6XCJjaXJjbGVzXCI9PT10JiZyLmNpcmNsZShlKS5maWxsKFwibm9uZVwiKS5zdHJva2Uoe2NvbG9yOmEsd2lkdGg6c30pfSkpfX0se2tleTpcImRyYXdHcmFkaWVudFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyl7dmFyIHIsbz1hcmd1bWVudHMubGVuZ3RoPjUmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XT9hcmd1bWVudHNbNV06bnVsbCxuPWFyZ3VtZW50cy5sZW5ndGg+NiYmdm9pZCAwIT09YXJndW1lbnRzWzZdP2FyZ3VtZW50c1s2XTpudWxsLGw9YXJndW1lbnRzLmxlbmd0aD43JiZ2b2lkIDAhPT1hcmd1bWVudHNbN10/YXJndW1lbnRzWzddOm51bGwsaD1hcmd1bWVudHMubGVuZ3RoPjgmJnZvaWQgMCE9PWFyZ3VtZW50c1s4XT9hcmd1bWVudHNbOF06MCxjPXRoaXMudztlLmxlbmd0aDw5JiYwPT09ZS5pbmRleE9mKFwiI1wiKSYmKGU9eC5oZXhUb1JnYmEoZSxhKSksaS5sZW5ndGg8OSYmMD09PWkuaW5kZXhPZihcIiNcIikmJihpPXguaGV4VG9SZ2JhKGkscykpO3ZhciBkPTAsZz0xLHU9MSxwPW51bGw7bnVsbCE9PW4mJihkPXZvaWQgMCE9PW5bMF0/blswXS8xMDA6MCxnPXZvaWQgMCE9PW5bMV0/blsxXS8xMDA6MSx1PXZvaWQgMCE9PW5bMl0/blsyXS8xMDA6MSxwPXZvaWQgMCE9PW5bM10/blszXS8xMDA6bnVsbCk7dmFyIGY9IShcImRvbnV0XCIhPT1jLmNvbmZpZy5jaGFydC50eXBlJiZcInBpZVwiIT09Yy5jb25maWcuY2hhcnQudHlwZSYmXCJwb2xhckFyZWFcIiE9PWMuY29uZmlnLmNoYXJ0LnR5cGUmJlwiYnViYmxlXCIhPT1jLmNvbmZpZy5jaGFydC50eXBlKTtpZihyPW51bGw9PT1sfHwwPT09bC5sZW5ndGg/Yy5nbG9iYWxzLmRvbS5QYXBlci5ncmFkaWVudChmP1wicmFkaWFsXCI6XCJsaW5lYXJcIiwoZnVuY3Rpb24odCl7dC5hdChkLGUsYSksdC5hdChnLGkscyksdC5hdCh1LGkscyksbnVsbCE9PXAmJnQuYXQocCxlLGEpfSkpOmMuZ2xvYmFscy5kb20uUGFwZXIuZ3JhZGllbnQoZj9cInJhZGlhbFwiOlwibGluZWFyXCIsKGZ1bmN0aW9uKHQpeyhBcnJheS5pc0FycmF5KGxbaF0pP2xbaF06bCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dC5hdChlLm9mZnNldC8xMDAsZS5jb2xvcixlLm9wYWNpdHkpfSkpfSkpLGYpe3ZhciBiPWMuZ2xvYmFscy5ncmlkV2lkdGgvMix2PWMuZ2xvYmFscy5ncmlkSGVpZ2h0LzI7XCJidWJibGVcIiE9PWMuY29uZmlnLmNoYXJ0LnR5cGU/ci5hdHRyKHtncmFkaWVudFVuaXRzOlwidXNlclNwYWNlT25Vc2VcIixjeDpiLGN5OnYscjpvfSk6ci5hdHRyKHtjeDouNSxjeTouNSxyOi44LGZ4Oi4yLGZ5Oi4yfSl9ZWxzZVwidmVydGljYWxcIj09PXQ/ci5mcm9tKDAsMCkudG8oMCwxKTpcImRpYWdvbmFsXCI9PT10P3IuZnJvbSgwLDApLnRvKDEsMSk6XCJob3Jpem9udGFsXCI9PT10P3IuZnJvbSgwLDEpLnRvKDEsMSk6XCJkaWFnb25hbDJcIj09PXQmJnIuZnJvbSgxLDApLnRvKDAsMSk7cmV0dXJuIHJ9fSx7a2V5OlwiZ2V0VGV4dEJhc2VkT25NYXhXaWR0aFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQudGV4dCxpPXQubWF4V2lkdGgsYT10LmZvbnRTaXplLHM9dC5mb250RmFtaWx5LHI9dGhpcy5nZXRUZXh0UmVjdHMoZSxhLHMpLG89ci53aWR0aC9lLmxlbmd0aCxuPU1hdGguZmxvb3IoaS9vKTtyZXR1cm4gaTxyLndpZHRoP2Uuc2xpY2UoMCxuLTMpK1wiLi4uXCI6ZX19LHtrZXk6XCJkcmF3VGV4dFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMsYT10Lngscz10Lnkscj10LnRleHQsbz10LnRleHRBbmNob3Isbj10LmZvbnRTaXplLGw9dC5mb250RmFtaWx5LGg9dC5mb250V2VpZ2h0LGM9dC5mb3JlQ29sb3IsZD10Lm9wYWNpdHksZz10Lm1heFdpZHRoLHU9dC5jc3NDbGFzcyxwPXZvaWQgMD09PXU/XCJcIjp1LGY9dC5pc1BsYWluVGV4dCx4PXZvaWQgMD09PWZ8fGYsYj10aGlzLnc7dm9pZCAwPT09ciYmKHI9XCJcIik7dmFyIHY9cjtvfHwobz1cInN0YXJ0XCIpLGMmJmMubGVuZ3RofHwoYz1iLmNvbmZpZy5jaGFydC5mb3JlQ29sb3IpLGw9bHx8Yi5jb25maWcuY2hhcnQuZm9udEZhbWlseSxoPWh8fFwicmVndWxhclwiO3ZhciBtLHk9e21heFdpZHRoOmcsZm9udFNpemU6bj1ufHxcIjExcHhcIixmb250RmFtaWx5Omx9O3JldHVybiBBcnJheS5pc0FycmF5KHIpP209Yi5nbG9iYWxzLmRvbS5QYXBlci50ZXh0KChmdW5jdGlvbih0KXtmb3IodmFyIGE9MDthPHIubGVuZ3RoO2ErKyl2PXJbYV0sZyYmKHY9aS5nZXRUZXh0QmFzZWRPbk1heFdpZHRoKGUoe3RleHQ6clthXX0seSkpKSwwPT09YT90LnRzcGFuKHYpOnQudHNwYW4odikubmV3TGluZSgpfSkpOihnJiYodj10aGlzLmdldFRleHRCYXNlZE9uTWF4V2lkdGgoZSh7dGV4dDpyfSx5KSkpLG09eD9iLmdsb2JhbHMuZG9tLlBhcGVyLnBsYWluKHIpOmIuZ2xvYmFscy5kb20uUGFwZXIudGV4dCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudHNwYW4odil9KSkpLG0uYXR0cih7eDphLHk6cyxcInRleHQtYW5jaG9yXCI6byxcImRvbWluYW50LWJhc2VsaW5lXCI6XCJhdXRvXCIsXCJmb250LXNpemVcIjpuLFwiZm9udC1mYW1pbHlcIjpsLFwiZm9udC13ZWlnaHRcIjpoLGZpbGw6YyxjbGFzczpcImFwZXhjaGFydHMtdGV4dCBcIitwfSksbS5ub2RlLnN0eWxlLmZvbnRGYW1pbHk9bCxtLm5vZGUuc3R5bGUub3BhY2l0eT1kLG19fSx7a2V5OlwiZHJhd01hcmtlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt0PXR8fDA7dmFyIGE9aS5wU2l6ZXx8MCxzPW51bGw7aWYoXCJzcXVhcmVcIj09PWkuc2hhcGV8fFwicmVjdFwiPT09aS5zaGFwZSl7dmFyIHI9dm9pZCAwPT09aS5wUmFkaXVzP2EvMjppLnBSYWRpdXM7bnVsbCE9PWUmJmF8fChhPTAscj0wKTt2YXIgbz0xLjIqYStyLG49dGhpcy5kcmF3UmVjdChvLG8sbyxvLHIpO24uYXR0cih7eDp0LW8vMix5OmUtby8yLGN4OnQsY3k6ZSxjbGFzczppLmNsYXNzP2kuY2xhc3M6XCJcIixmaWxsOmkucG9pbnRGaWxsQ29sb3IsXCJmaWxsLW9wYWNpdHlcIjppLnBvaW50RmlsbE9wYWNpdHk/aS5wb2ludEZpbGxPcGFjaXR5OjEsc3Ryb2tlOmkucG9pbnRTdHJva2VDb2xvcixcInN0cm9rZS13aWR0aFwiOmkucG9pbnRTdHJva2VXaWR0aD9pLnBvaW50U3Ryb2tlV2lkdGg6MCxcInN0cm9rZS1vcGFjaXR5XCI6aS5wb2ludFN0cm9rZU9wYWNpdHk/aS5wb2ludFN0cm9rZU9wYWNpdHk6MX0pLHM9bn1lbHNlXCJjaXJjbGVcIiE9PWkuc2hhcGUmJmkuc2hhcGV8fCh4LmlzTnVtYmVyKGUpfHwoYT0wLGU9MCkscz10aGlzLmRyYXdDaXJjbGUoYSx7Y3g6dCxjeTplLGNsYXNzOmkuY2xhc3M/aS5jbGFzczpcIlwiLHN0cm9rZTppLnBvaW50U3Ryb2tlQ29sb3IsZmlsbDppLnBvaW50RmlsbENvbG9yLFwiZmlsbC1vcGFjaXR5XCI6aS5wb2ludEZpbGxPcGFjaXR5P2kucG9pbnRGaWxsT3BhY2l0eToxLFwic3Ryb2tlLXdpZHRoXCI6aS5wb2ludFN0cm9rZVdpZHRoP2kucG9pbnRTdHJva2VXaWR0aDowLFwic3Ryb2tlLW9wYWNpdHlcIjppLnBvaW50U3Ryb2tlT3BhY2l0eT9pLnBvaW50U3Ryb2tlT3BhY2l0eToxfSkpO3JldHVybiBzfX0se2tleTpcInBhdGhNb3VzZUVudGVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1uZXcgdih0aGlzLmN0eCkscz1wYXJzZUludCh0Lm5vZGUuZ2V0QXR0cmlidXRlKFwiaW5kZXhcIiksMTApLHI9cGFyc2VJbnQodC5ub2RlLmdldEF0dHJpYnV0ZShcImpcIiksMTApO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGkuY29uZmlnLmNoYXJ0LmV2ZW50cy5kYXRhUG9pbnRNb3VzZUVudGVyJiZpLmNvbmZpZy5jaGFydC5ldmVudHMuZGF0YVBvaW50TW91c2VFbnRlcihlLHRoaXMuY3R4LHtzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsdzppfSksdGhpcy5jdHguZXZlbnRzLmZpcmVFdmVudChcImRhdGFQb2ludE1vdXNlRW50ZXJcIixbZSx0aGlzLmN0eCx7c2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpyLHc6aX1dKSwoXCJub25lXCI9PT1pLmNvbmZpZy5zdGF0ZXMuYWN0aXZlLmZpbHRlci50eXBlfHxcInRydWVcIiE9PXQubm9kZS5nZXRBdHRyaWJ1dGUoXCJzZWxlY3RlZFwiKSkmJlwibm9uZVwiIT09aS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlci50eXBlJiYhaS5nbG9iYWxzLmlzVG91Y2hEZXZpY2Upe3ZhciBvPWkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXI7YS5hcHBseUZpbHRlcih0LHMsby50eXBlLG8udmFsdWUpfX19LHtrZXk6XCJwYXRoTW91c2VMZWF2ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9bmV3IHYodGhpcy5jdHgpLHM9cGFyc2VJbnQodC5ub2RlLmdldEF0dHJpYnV0ZShcImluZGV4XCIpLDEwKSxyPXBhcnNlSW50KHQubm9kZS5nZXRBdHRyaWJ1dGUoXCJqXCIpLDEwKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBpLmNvbmZpZy5jaGFydC5ldmVudHMuZGF0YVBvaW50TW91c2VMZWF2ZSYmaS5jb25maWcuY2hhcnQuZXZlbnRzLmRhdGFQb2ludE1vdXNlTGVhdmUoZSx0aGlzLmN0eCx7c2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpyLHc6aX0pLHRoaXMuY3R4LmV2ZW50cy5maXJlRXZlbnQoXCJkYXRhUG9pbnRNb3VzZUxlYXZlXCIsW2UsdGhpcy5jdHgse3Nlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6cix3Oml9XSksXCJub25lXCIhPT1pLmNvbmZpZy5zdGF0ZXMuYWN0aXZlLmZpbHRlci50eXBlJiZcInRydWVcIj09PXQubm9kZS5nZXRBdHRyaWJ1dGUoXCJzZWxlY3RlZFwiKXx8XCJub25lXCIhPT1pLmNvbmZpZy5zdGF0ZXMuaG92ZXIuZmlsdGVyLnR5cGUmJmEuZ2V0RGVmYXVsdEZpbHRlcih0LHMpfX0se2tleTpcInBhdGhNb3VzZURvd25cIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPW5ldyB2KHRoaXMuY3R4KSxzPXBhcnNlSW50KHQubm9kZS5nZXRBdHRyaWJ1dGUoXCJpbmRleFwiKSwxMCkscj1wYXJzZUludCh0Lm5vZGUuZ2V0QXR0cmlidXRlKFwialwiKSwxMCksbz1cImZhbHNlXCI7aWYoXCJ0cnVlXCI9PT10Lm5vZGUuZ2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIikpe2lmKHQubm9kZS5zZXRBdHRyaWJ1dGUoXCJzZWxlY3RlZFwiLFwiZmFsc2VcIiksaS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1tzXS5pbmRleE9mKHIpPi0xKXt2YXIgbj1pLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW3NdLmluZGV4T2Yocik7aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1tzXS5zcGxpY2UobiwxKX19ZWxzZXtpZighaS5jb25maWcuc3RhdGVzLmFjdGl2ZS5hbGxvd011bHRpcGxlRGF0YVBvaW50c1NlbGVjdGlvbiYmaS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50cy5sZW5ndGg+MCl7aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50cz1bXTt2YXIgbD1pLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIi5hcGV4Y2hhcnRzLXNlcmllcyBwYXRoXCIpLm1lbWJlcnMsaD1pLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIi5hcGV4Y2hhcnRzLXNlcmllcyBjaXJjbGUsIC5hcGV4Y2hhcnRzLXNlcmllcyByZWN0XCIpLm1lbWJlcnMsYz1mdW5jdGlvbih0KXtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHQsKGZ1bmN0aW9uKHQpe3Qubm9kZS5zZXRBdHRyaWJ1dGUoXCJzZWxlY3RlZFwiLFwiZmFsc2VcIiksYS5nZXREZWZhdWx0RmlsdGVyKHQscyl9KSl9O2MobCksYyhoKX10Lm5vZGUuc2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIixcInRydWVcIiksbz1cInRydWVcIix2b2lkIDA9PT1pLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW3NdJiYoaS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1tzXT1bXSksaS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1tzXS5wdXNoKHIpfWlmKFwidHJ1ZVwiPT09byl7dmFyIGQ9aS5jb25maWcuc3RhdGVzLmFjdGl2ZS5maWx0ZXI7aWYoXCJub25lXCIhPT1kKWEuYXBwbHlGaWx0ZXIodCxzLGQudHlwZSxkLnZhbHVlKTtlbHNlIGlmKFwibm9uZVwiIT09aS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlciYmIWkuZ2xvYmFscy5pc1RvdWNoRGV2aWNlKXt2YXIgZz1pLmNvbmZpZy5zdGF0ZXMuaG92ZXIuZmlsdGVyO2EuYXBwbHlGaWx0ZXIodCxzLGcudHlwZSxnLnZhbHVlKX19ZWxzZSBpZihcIm5vbmVcIiE9PWkuY29uZmlnLnN0YXRlcy5hY3RpdmUuZmlsdGVyLnR5cGUpaWYoXCJub25lXCI9PT1pLmNvbmZpZy5zdGF0ZXMuaG92ZXIuZmlsdGVyLnR5cGV8fGkuZ2xvYmFscy5pc1RvdWNoRGV2aWNlKWEuZ2V0RGVmYXVsdEZpbHRlcih0LHMpO2Vsc2V7Zz1pLmNvbmZpZy5zdGF0ZXMuaG92ZXIuZmlsdGVyO2EuYXBwbHlGaWx0ZXIodCxzLGcudHlwZSxnLnZhbHVlKX1cImZ1bmN0aW9uXCI9PXR5cGVvZiBpLmNvbmZpZy5jaGFydC5ldmVudHMuZGF0YVBvaW50U2VsZWN0aW9uJiZpLmNvbmZpZy5jaGFydC5ldmVudHMuZGF0YVBvaW50U2VsZWN0aW9uKGUsdGhpcy5jdHgse3NlbGVjdGVkRGF0YVBvaW50czppLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzLHNlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6cix3Oml9KSxlJiZ0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KFwiZGF0YVBvaW50U2VsZWN0aW9uXCIsW2UsdGhpcy5jdHgse3NlbGVjdGVkRGF0YVBvaW50czppLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzLHNlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6cix3Oml9XSl9fSx7a2V5Olwicm90YXRlQXJvdW5kQ2VudGVyXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9e307cmV0dXJuIHQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHQuZ2V0QkJveCYmKGU9dC5nZXRCQm94KCkpLHt4OmUueCtlLndpZHRoLzIseTplLnkrZS5oZWlnaHQvMn19fSx7a2V5OlwiZ2V0VGV4dFJlY3RzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9IShhcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XSl8fGFyZ3VtZW50c1s0XSxyPXRoaXMudyxvPXRoaXMuZHJhd1RleHQoe3g6LTIwMCx5Oi0yMDAsdGV4dDp0LHRleHRBbmNob3I6XCJzdGFydFwiLGZvbnRTaXplOmUsZm9udEZhbWlseTppLGZvcmVDb2xvcjpcIiNmZmZcIixvcGFjaXR5OjB9KTthJiZvLmF0dHIoXCJ0cmFuc2Zvcm1cIixhKSxyLmdsb2JhbHMuZG9tLlBhcGVyLmFkZChvKTt2YXIgbj1vLmJib3goKTtyZXR1cm4gc3x8KG49by5ub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSxvLnJlbW92ZSgpLHt3aWR0aDpuLndpZHRoLGhlaWdodDpuLmhlaWdodH19fSx7a2V5OlwicGxhY2VUZXh0V2l0aEVsbGlwc2lzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQuZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoJiYodC50ZXh0Q29udGVudD1lLGUubGVuZ3RoPjAmJnQuZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCk+PWkvMS4xKSl7Zm9yKHZhciBhPWUubGVuZ3RoLTM7YT4wO2EtPTMpaWYodC5nZXRTdWJTdHJpbmdMZW5ndGgoMCxhKTw9aS8xLjEpcmV0dXJuIHZvaWQodC50ZXh0Q29udGVudD1lLnN1YnN0cmluZygwLGEpK1wiLi4uXCIpO3QudGV4dENvbnRlbnQ9XCIuXCJ9fX1dLFt7a2V5Olwic2V0QXR0cnNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaSBpbiBlKWUuaGFzT3duUHJvcGVydHkoaSkmJnQuc2V0QXR0cmlidXRlKGksZVtpXSl9fV0pLHR9KCkseT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiZ2V0U3RhY2tlZFNlcmllc1RvdGFsc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOltdLGU9dGhpcy53LGk9W107aWYoMD09PWUuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKXJldHVybiBpO2Zvcih2YXIgYT0wO2E8ZS5nbG9iYWxzLnNlcmllc1tlLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoO2ErKyl7Zm9yKHZhciBzPTAscj0wO3I8ZS5nbG9iYWxzLnNlcmllcy5sZW5ndGg7cisrKXZvaWQgMCE9PWUuZ2xvYmFscy5zZXJpZXNbcl1bYV0mJi0xPT09dC5pbmRleE9mKHIpJiYocys9ZS5nbG9iYWxzLnNlcmllc1tyXVthXSk7aS5wdXNoKHMpfXJldHVybiBpfX0se2tleTpcImdldFNlcmllc1RvdGFsQnlJbmRleFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGw7cmV0dXJuIG51bGw9PT10P3RoaXMudy5jb25maWcuc2VyaWVzLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlfSksMCk6dGhpcy53Lmdsb2JhbHMuc2VyaWVzW3RdLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlfSksMCl9fSx7a2V5OlwiaXNTZXJpZXNOdWxsXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDtyZXR1cm4gMD09PShudWxsPT09dD90aGlzLncuY29uZmlnLnNlcmllcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09dH0pKTp0aGlzLncuY29uZmlnLnNlcmllc1t0XS5kYXRhLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPT10fSkpKS5sZW5ndGh9fSx7a2V5Olwic2VyaWVzSGF2ZVNhbWVWYWx1ZXNcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuc2VyaWVzW3RdLmV2ZXJ5KChmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHQ9PT1pWzBdfSkpfX0se2tleTpcImdldENhdGVnb3J5TGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dC5zbGljZSgpO3JldHVybiBlLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJihpPXQubWFwKChmdW5jdGlvbih0LGkpe3JldHVybiBlLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyKHQtZS5nbG9iYWxzLm1pblgrMSl9KSkpLGl9fSx7a2V5OlwiZ2V0TGFyZ2VzdFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O3QuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4PXQuZ2xvYmFscy5zZXJpZXMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5sZW5ndGh9KSkuaW5kZXhPZihNYXRoLm1heC5hcHBseShNYXRoLHQuZ2xvYmFscy5zZXJpZXMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5sZW5ndGh9KSkpKX19LHtrZXk6XCJnZXRMYXJnZXN0TWFya2VyU2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9MDtyZXR1cm4gdC5nbG9iYWxzLm1hcmtlcnMuc2l6ZS5mb3JFYWNoKChmdW5jdGlvbih0KXtlPU1hdGgubWF4KGUsdCl9KSksdC5jb25maWcubWFya2Vycy5kaXNjcmV0ZSYmdC5jb25maWcubWFya2Vycy5kaXNjcmV0ZS5sZW5ndGgmJnQuY29uZmlnLm1hcmtlcnMuZGlzY3JldGUuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZT1NYXRoLm1heChlLHQuc2l6ZSl9KSksZT4wJiYoZSs9dC5jb25maWcubWFya2Vycy5ob3Zlci5zaXplT2Zmc2V0KzEpLHQuZ2xvYmFscy5tYXJrZXJzLmxhcmdlc3RTaXplPWUsZX19LHtrZXk6XCJnZXRTZXJpZXNUb3RhbHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudzt0Lmdsb2JhbHMuc2VyaWVzVG90YWxzPXQuZ2xvYmFscy5zZXJpZXMubWFwKChmdW5jdGlvbih0LGUpe3ZhciBpPTA7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIGE9MDthPHQubGVuZ3RoO2ErKylpKz10W2FdO2Vsc2UgaSs9dDtyZXR1cm4gaX0pKX19LHtrZXk6XCJnZXRTZXJpZXNUb3RhbHNYUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztyZXR1cm4gaS5nbG9iYWxzLnNlcmllcy5tYXAoKGZ1bmN0aW9uKGEscyl7Zm9yKHZhciByPTAsbz0wO288YS5sZW5ndGg7bysrKWkuZ2xvYmFscy5zZXJpZXNYW3NdW29dPnQmJmkuZ2xvYmFscy5zZXJpZXNYW3NdW29dPGUmJihyKz1hW29dKTtyZXR1cm4gcn0pKX19LHtrZXk6XCJnZXRQZXJjZW50U2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dC5nbG9iYWxzLnNlcmllc1BlcmNlbnQ9dC5nbG9iYWxzLnNlcmllcy5tYXAoKGZ1bmN0aW9uKGUsaSl7dmFyIGE9W107aWYoQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIHM9MDtzPGUubGVuZ3RoO3MrKyl7dmFyIHI9dC5nbG9iYWxzLnN0YWNrZWRTZXJpZXNUb3RhbHNbc10sbz0wO3ImJihvPTEwMCplW3NdL3IpLGEucHVzaChvKX1lbHNle3ZhciBuPTEwMCplL3QuZ2xvYmFscy5zZXJpZXNUb3RhbHMucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSwwKTthLnB1c2gobil9cmV0dXJuIGF9KSl9fSx7a2V5OlwiZ2V0Q2FsY3VsYXRlZFJhdGlvc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLGEscz10aGlzLncuZ2xvYmFscyxyPVtdLG89MCxuPVtdLGw9LjEsaD0wO2lmKHMueVJhbmdlPVtdLHMuaXNNdWx0aXBsZVlBeGlzKWZvcih2YXIgYz0wO2M8cy5taW5ZQXJyLmxlbmd0aDtjKyspcy55UmFuZ2UucHVzaChNYXRoLmFicyhzLm1pbllBcnJbY10tcy5tYXhZQXJyW2NdKSksbi5wdXNoKDApO2Vsc2Ugcy55UmFuZ2UucHVzaChNYXRoLmFicyhzLm1pblktcy5tYXhZKSk7cy54UmFuZ2U9TWF0aC5hYnMocy5tYXhYLXMubWluWCkscy56UmFuZ2U9TWF0aC5hYnMocy5tYXhaLXMubWluWik7Zm9yKHZhciBkPTA7ZDxzLnlSYW5nZS5sZW5ndGg7ZCsrKXIucHVzaChzLnlSYW5nZVtkXS9zLmdyaWRIZWlnaHQpO2lmKGU9cy54UmFuZ2Uvcy5ncmlkV2lkdGgsaT1NYXRoLmFicyhzLmluaXRpYWxNYXhYLXMuaW5pdGlhbE1pblgpL3MuZ3JpZFdpZHRoLHQ9cy55UmFuZ2Uvcy5ncmlkV2lkdGgsYT1zLnhSYW5nZS9zLmdyaWRIZWlnaHQsKG89cy56UmFuZ2Uvcy5ncmlkSGVpZ2h0KjE2KXx8KG89MSkscy5taW5ZIT09TnVtYmVyLk1JTl9WQUxVRSYmMCE9PU1hdGguYWJzKHMubWluWSkmJihzLmhhc05lZ3M9ITApLHMuaXNNdWx0aXBsZVlBeGlzKXtuPVtdO2Zvcih2YXIgZz0wO2c8ci5sZW5ndGg7ZysrKW4ucHVzaCgtcy5taW5ZQXJyW2ddL3JbZ10pfWVsc2Ugbi5wdXNoKC1zLm1pblkvclswXSkscy5taW5ZIT09TnVtYmVyLk1JTl9WQUxVRSYmMCE9PU1hdGguYWJzKHMubWluWSkmJihsPS1zLm1pblkvdCxoPXMubWluWC9lKTtyZXR1cm57eVJhdGlvOnIsaW52ZXJ0ZWRZUmF0aW86dCx6UmF0aW86byx4UmF0aW86ZSxpbml0aWFsWFJhdGlvOmksaW52ZXJ0ZWRYUmF0aW86YSxiYXNlTGluZUludmVydGVkWTpsLGJhc2VMaW5lWTpuLGJhc2VMaW5lWDpofX19LHtrZXk6XCJnZXRMb2dTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53O3JldHVybiBpLmdsb2JhbHMuc2VyaWVzTG9nPXQubWFwKChmdW5jdGlvbih0LGEpe3JldHVybiBpLmNvbmZpZy55YXhpc1thXSYmaS5jb25maWcueWF4aXNbYV0ubG9nYXJpdGhtaWM/dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT09dD9udWxsOmUuZ2V0TG9nVmFsKGkuY29uZmlnLnlheGlzW2FdLmxvZ0Jhc2UsdCxhKX0pKTp0fSkpLGkuZ2xvYmFscy5pbnZhbGlkTG9nU2NhbGU/dDppLmdsb2JhbHMuc2VyaWVzTG9nfX0se2tleTpcImdldEJhc2VMb2dcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLmxvZyhlKS9NYXRoLmxvZyh0KX19LHtrZXk6XCJnZXRMb2dWYWxcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7aWYoMD09PWUpcmV0dXJuIDA7dmFyIGE9dGhpcy53LHM9MD09PWEuZ2xvYmFscy5taW5ZQXJyW2ldPy0xOnRoaXMuZ2V0QmFzZUxvZyh0LGEuZ2xvYmFscy5taW5ZQXJyW2ldKSxyPSgwPT09YS5nbG9iYWxzLm1heFlBcnJbaV0/MDp0aGlzLmdldEJhc2VMb2codCxhLmdsb2JhbHMubWF4WUFycltpXSkpLXM7cmV0dXJuIGU8MT9lL3I6KHRoaXMuZ2V0QmFzZUxvZyh0LGUpLXMpL3J9fSx7a2V5OlwiZ2V0TG9nWVJhdGlvc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLncsYT10aGlzLncuZ2xvYmFscztyZXR1cm4gYS55TG9nUmF0aW89dC5zbGljZSgpLGEubG9nWVJhbmdlPWEueVJhbmdlLm1hcCgoZnVuY3Rpb24odCxzKXtpZihpLmNvbmZpZy55YXhpc1tzXSYmZS53LmNvbmZpZy55YXhpc1tzXS5sb2dhcml0aG1pYyl7dmFyIHIsbz0tTnVtYmVyLk1BWF9WQUxVRSxuPU51bWJlci5NSU5fVkFMVUU7cmV0dXJuIGEuc2VyaWVzTG9nLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5mb3JFYWNoKChmdW5jdGlvbih0KXtpLmNvbmZpZy55YXhpc1tlXSYmaS5jb25maWcueWF4aXNbZV0ubG9nYXJpdGhtaWMmJihvPU1hdGgubWF4KHQsbyksbj1NYXRoLm1pbih0LG4pKX0pKX0pKSxyPU1hdGgucG93KGEueVJhbmdlW3NdLE1hdGguYWJzKG4tbykvYS55UmFuZ2Vbc10pLGEueUxvZ1JhdGlvW3NdPXIvYS5ncmlkSGVpZ2h0LHJ9fSkpLGEuaW52YWxpZExvZ1NjYWxlP3Quc2xpY2UoKTphLnlMb2dSYXRpb319XSxbe2tleTpcImNoZWNrQ29tYm9TZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0hMSxpPTAsYT0wO3JldHVybiB0Lmxlbmd0aCYmdm9pZCAwIT09dFswXS50eXBlJiZ0LmZvckVhY2goKGZ1bmN0aW9uKHQpe1wiYmFyXCIhPT10LnR5cGUmJlwiY29sdW1uXCIhPT10LnR5cGUmJlwiY2FuZGxlc3RpY2tcIiE9PXQudHlwZSYmXCJib3hQbG90XCIhPT10LnR5cGV8fGkrKyx2b2lkIDAhPT10LnR5cGUmJmErK30pKSxhPjAmJihlPSEwKSx7Y29tYm9CYXJDb3VudDppLGNvbWJvQ2hhcnRzOmV9fX0se2tleTpcImV4dGVuZEFycmF5UHJvcHNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIGUueWF4aXMmJihlPXQuZXh0ZW5kWUF4aXMoZSxpKSksZS5hbm5vdGF0aW9ucyYmKGUuYW5ub3RhdGlvbnMueWF4aXMmJihlPXQuZXh0ZW5kWUF4aXNBbm5vdGF0aW9ucyhlKSksZS5hbm5vdGF0aW9ucy54YXhpcyYmKGU9dC5leHRlbmRYQXhpc0Fubm90YXRpb25zKGUpKSxlLmFubm90YXRpb25zLnBvaW50cyYmKGU9dC5leHRlbmRQb2ludEFubm90YXRpb25zKGUpKSksZX19XSksdH0oKSx3PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmFubm9DdHg9ZX1yZXR1cm4gcih0LFt7a2V5Olwic2V0T3JpZW50YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGwsaT10aGlzLnc7aWYoXCJ2ZXJ0aWNhbFwiPT09dC5sYWJlbC5vcmllbnRhdGlvbil7dmFyIGE9bnVsbCE9PWU/ZTowLHM9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXhheGlzLWFubm90YXRpb25zIC5hcGV4Y2hhcnRzLXhheGlzLWFubm90YXRpb24tbGFiZWxbcmVsPSdcIi5jb25jYXQoYSxcIiddXCIpKTtpZihudWxsIT09cyl7dmFyIHI9cy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtzLnNldEF0dHJpYnV0ZShcInhcIixwYXJzZUZsb2F0KHMuZ2V0QXR0cmlidXRlKFwieFwiKSktci5oZWlnaHQrNCksXCJ0b3BcIj09PXQubGFiZWwucG9zaXRpb24/cy5zZXRBdHRyaWJ1dGUoXCJ5XCIscGFyc2VGbG9hdChzLmdldEF0dHJpYnV0ZShcInlcIikpK3Iud2lkdGgpOnMuc2V0QXR0cmlidXRlKFwieVwiLHBhcnNlRmxvYXQocy5nZXRBdHRyaWJ1dGUoXCJ5XCIpKS1yLndpZHRoKTt2YXIgbz10aGlzLmFubm9DdHguZ3JhcGhpY3Mucm90YXRlQXJvdW5kQ2VudGVyKHMpLG49by54LGw9by55O3Muc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJyb3RhdGUoLTkwIFwiLmNvbmNhdChuLFwiIFwiKS5jb25jYXQobCxcIilcIikpfX19fSx7a2V5OlwiYWRkQmFja2dyb3VuZFRvQW5ub1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2lmKCF0fHx2b2lkIDA9PT1lLmxhYmVsLnRleHR8fHZvaWQgMCE9PWUubGFiZWwudGV4dCYmIVN0cmluZyhlLmxhYmVsLnRleHQpLnRyaW0oKSlyZXR1cm4gbnVsbDt2YXIgYT1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZ3JpZFwiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxzPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj1lLmxhYmVsLnN0eWxlLnBhZGRpbmcubGVmdCxvPWUubGFiZWwuc3R5bGUucGFkZGluZy5yaWdodCxuPWUubGFiZWwuc3R5bGUucGFkZGluZy50b3AsbD1lLmxhYmVsLnN0eWxlLnBhZGRpbmcuYm90dG9tO1widmVydGljYWxcIj09PWUubGFiZWwub3JpZW50YXRpb24mJihuPWUubGFiZWwuc3R5bGUucGFkZGluZy5sZWZ0LGw9ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLnJpZ2h0LHI9ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLnRvcCxvPWUubGFiZWwuc3R5bGUucGFkZGluZy5ib3R0b20pO3ZhciBoPXMubGVmdC1hLmxlZnQtcixjPXMudG9wLWEudG9wLW4sZD10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd1JlY3QoaC1pLmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXMsYyxzLndpZHRoK3IrbyxzLmhlaWdodCtuK2wsZS5sYWJlbC5ib3JkZXJSYWRpdXMsZS5sYWJlbC5zdHlsZS5iYWNrZ3JvdW5kLDEsZS5sYWJlbC5ib3JkZXJXaWR0aCxlLmxhYmVsLmJvcmRlckNvbG9yLDApO3JldHVybiBlLmlkJiZkLm5vZGUuY2xhc3NMaXN0LmFkZChlLmlkKSxkfX0se2tleTpcImFubm90YXRpb25zQmFja2dyb3VuZFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPWZ1bmN0aW9uKGksYSxzKXt2YXIgcj1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KHMsXCItYW5ub3RhdGlvbnMgLmFwZXhjaGFydHMtXCIpLmNvbmNhdChzLFwiLWFubm90YXRpb24tbGFiZWxbcmVsPSdcIikuY29uY2F0KGEsXCInXVwiKSk7aWYocil7dmFyIG89ci5wYXJlbnROb2RlLG49dC5hZGRCYWNrZ3JvdW5kVG9Bbm5vKHIsaSk7biYmKG8uaW5zZXJ0QmVmb3JlKG4ubm9kZSxyKSxpLmxhYmVsLm1vdXNlRW50ZXImJm4ubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLGkubGFiZWwubW91c2VFbnRlci5iaW5kKHQsaSkpLGkubGFiZWwubW91c2VMZWF2ZSYmbi5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsaS5sYWJlbC5tb3VzZUxlYXZlLmJpbmQodCxpKSksaS5sYWJlbC5jbGljayYmbi5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLGkubGFiZWwuY2xpY2suYmluZCh0LGkpKSl9fTtlLmNvbmZpZy5hbm5vdGF0aW9ucy54YXhpcy5tYXAoKGZ1bmN0aW9uKHQsZSl7aSh0LGUsXCJ4YXhpc1wiKX0pKSxlLmNvbmZpZy5hbm5vdGF0aW9ucy55YXhpcy5tYXAoKGZ1bmN0aW9uKHQsZSl7aSh0LGUsXCJ5YXhpc1wiKX0pKSxlLmNvbmZpZy5hbm5vdGF0aW9ucy5wb2ludHMubWFwKChmdW5jdGlvbih0LGUpe2kodCxlLFwicG9pbnRcIil9KSl9fSx7a2V5OlwiZ2V0WTFZMlwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGksYT1cInkxXCI9PT10P2UueTplLnkyLHM9dGhpcy53O2lmKHRoaXMuYW5ub0N0eC5pbnZlcnRBeGlzKXt2YXIgcj1zLmdsb2JhbHMubGFiZWxzLmluZGV4T2YoYSk7cy5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYocj1zLmdsb2JhbHMuY2F0ZWdvcnlMYWJlbHMuaW5kZXhPZihhKSk7dmFyIG89cy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXlheGlzLXRleHRzLWcgdGV4dDpudGgtY2hpbGQoXCIrKHIrMSkrXCIpXCIpO28mJihpPXBhcnNlRmxvYXQoby5nZXRBdHRyaWJ1dGUoXCJ5XCIpKSl9ZWxzZXt2YXIgbjtpZihzLmNvbmZpZy55YXhpc1tlLnlBeGlzSW5kZXhdLmxvZ2FyaXRobWljKW49KGE9bmV3IHkodGhpcy5hbm5vQ3R4LmN0eCkuZ2V0TG9nVmFsKGEsZS55QXhpc0luZGV4KSkvcy5nbG9iYWxzLnlMb2dSYXRpb1tlLnlBeGlzSW5kZXhdO2Vsc2Ugbj0oYS1zLmdsb2JhbHMubWluWUFycltlLnlBeGlzSW5kZXhdKS8ocy5nbG9iYWxzLnlSYW5nZVtlLnlBeGlzSW5kZXhdL3MuZ2xvYmFscy5ncmlkSGVpZ2h0KTtpPXMuZ2xvYmFscy5ncmlkSGVpZ2h0LW4sIWUubWFya2VyfHx2b2lkIDAhPT1lLnkmJm51bGwhPT1lLnl8fChpPTApLHMuY29uZmlnLnlheGlzW2UueUF4aXNJbmRleF0mJnMuY29uZmlnLnlheGlzW2UueUF4aXNJbmRleF0ucmV2ZXJzZWQmJihpPW4pfXJldHVyblwic3RyaW5nXCI9PXR5cGVvZiBhJiZhLmluZGV4T2YoXCJweFwiKT4tMSYmKGk9cGFyc2VGbG9hdChhKSksaX19LHtrZXk6XCJnZXRYMVgyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT10aGlzLmFubm9DdHguaW52ZXJ0QXhpcz9pLmdsb2JhbHMubWluWTppLmdsb2JhbHMubWluWCxzPXRoaXMuYW5ub0N0eC5pbnZlcnRBeGlzP2kuZ2xvYmFscy5tYXhZOmkuZ2xvYmFscy5tYXhYLHI9dGhpcy5hbm5vQ3R4LmludmVydEF4aXM/aS5nbG9iYWxzLnlSYW5nZVswXTppLmdsb2JhbHMueFJhbmdlLG89KGUueC1hKS8oci9pLmdsb2JhbHMuZ3JpZFdpZHRoKTt0aGlzLmFubm9DdHguaW52ZXJzZWRSZXZlcnNlZEF4aXMmJihvPShzLWUueCkvKHIvaS5nbG9iYWxzLmdyaWRXaWR0aCkpLFwiY2F0ZWdvcnlcIiE9PWkuY29uZmlnLnhheGlzLnR5cGUmJiFpLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWN8fHRoaXMuYW5ub0N0eC5pbnZlcnRBeGlzfHxpLmdsb2JhbHMuZGF0YUZvcm1hdFhOdW1lcmljfHwobz10aGlzLmdldFN0cmluZ1goZS54KSk7dmFyIG49KGUueDItYSkvKHIvaS5nbG9iYWxzLmdyaWRXaWR0aCk7cmV0dXJuIHRoaXMuYW5ub0N0eC5pbnZlcnNlZFJldmVyc2VkQXhpcyYmKG49KHMtZS54MikvKHIvaS5nbG9iYWxzLmdyaWRXaWR0aCkpLFwiY2F0ZWdvcnlcIiE9PWkuY29uZmlnLnhheGlzLnR5cGUmJiFpLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWN8fHRoaXMuYW5ub0N0eC5pbnZlcnRBeGlzfHxpLmdsb2JhbHMuZGF0YUZvcm1hdFhOdW1lcmljfHwobj10aGlzLmdldFN0cmluZ1goZS54MikpLHZvaWQgMCE9PWUueCYmbnVsbCE9PWUueHx8IWUubWFya2VyfHwobz1pLmdsb2JhbHMuZ3JpZFdpZHRoKSxcIngxXCI9PT10JiZcInN0cmluZ1wiPT10eXBlb2YgZS54JiZlLnguaW5kZXhPZihcInB4XCIpPi0xJiYobz1wYXJzZUZsb2F0KGUueCkpLFwieDJcIj09PXQmJlwic3RyaW5nXCI9PXR5cGVvZiBlLngyJiZlLngyLmluZGV4T2YoXCJweFwiKT4tMSYmKG49cGFyc2VGbG9hdChlLngyKSksXCJ4MVwiPT09dD9vOm59fSx7a2V5OlwiZ2V0U3RyaW5nWFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPXQ7ZS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiZlLmdsb2JhbHMuY2F0ZWdvcnlMYWJlbHMubGVuZ3RoJiYodD1lLmdsb2JhbHMuY2F0ZWdvcnlMYWJlbHMuaW5kZXhPZih0KSsxKTt2YXIgYT1lLmdsb2JhbHMubGFiZWxzLmluZGV4T2YodCkscz1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteGF4aXMtdGV4dHMtZyB0ZXh0Om50aC1jaGlsZChcIisoYSsxKStcIilcIik7cmV0dXJuIHMmJihpPXBhcnNlRmxvYXQocy5nZXRBdHRyaWJ1dGUoXCJ4XCIpKSksaX19XSksdH0oKSxrPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmFubm9DdHg9ZSx0aGlzLmludmVydEF4aXM9dGhpcy5hbm5vQ3R4LmludmVydEF4aXMsdGhpcy5oZWxwZXJzPW5ldyB3KHRoaXMuYW5ub0N0eCl9cmV0dXJuIHIodCxbe2tleTpcImFkZFhheGlzQW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYSxzPXRoaXMudyxyPXRoaXMuaGVscGVycy5nZXRYMVgyKFwieDFcIix0KSxvPXQubGFiZWwudGV4dCxuPXQuc3Ryb2tlRGFzaEFycmF5O2lmKHguaXNOdW1iZXIocikpe2lmKG51bGw9PT10LngyfHx2b2lkIDA9PT10LngyKXt2YXIgbD10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd0xpbmUocit0Lm9mZnNldFgsMCt0Lm9mZnNldFkscit0Lm9mZnNldFgscy5nbG9iYWxzLmdyaWRIZWlnaHQrdC5vZmZzZXRZLHQuYm9yZGVyQ29sb3Isbix0LmJvcmRlcldpZHRoKTtlLmFwcGVuZENoaWxkKGwubm9kZSksdC5pZCYmbC5ub2RlLmNsYXNzTGlzdC5hZGQodC5pZCl9ZWxzZXtpZigoYT10aGlzLmhlbHBlcnMuZ2V0WDFYMihcIngyXCIsdCkpPHIpe3ZhciBoPXI7cj1hLGE9aH12YXIgYz10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd1JlY3Qocit0Lm9mZnNldFgsMCt0Lm9mZnNldFksYS1yLHMuZ2xvYmFscy5ncmlkSGVpZ2h0K3Qub2Zmc2V0WSwwLHQuZmlsbENvbG9yLHQub3BhY2l0eSwxLHQuYm9yZGVyQ29sb3Isbik7Yy5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFubm90YXRpb24tcmVjdFwiKSxjLmF0dHIoXCJjbGlwLXBhdGhcIixcInVybCgjZ3JpZFJlY3RNYXNrXCIuY29uY2F0KHMuZ2xvYmFscy5jdWlkLFwiKVwiKSksZS5hcHBlbmRDaGlsZChjLm5vZGUpLHQuaWQmJmMubm9kZS5jbGFzc0xpc3QuYWRkKHQuaWQpfXZhciBkPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5nZXRUZXh0UmVjdHMobyxwYXJzZUZsb2F0KHQubGFiZWwuc3R5bGUuZm9udFNpemUpKSxnPVwidG9wXCI9PT10LmxhYmVsLnBvc2l0aW9uPzQ6XCJjZW50ZXJcIj09PXQubGFiZWwucG9zaXRpb24/cy5nbG9iYWxzLmdyaWRIZWlnaHQvMisoXCJ2ZXJ0aWNhbFwiPT09dC5sYWJlbC5vcmllbnRhdGlvbj9kLndpZHRoLzI6MCk6cy5nbG9iYWxzLmdyaWRIZWlnaHQsdT10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd1RleHQoe3g6cit0LmxhYmVsLm9mZnNldFgseTpnK3QubGFiZWwub2Zmc2V0WS0oXCJ2ZXJ0aWNhbFwiPT09dC5sYWJlbC5vcmllbnRhdGlvbj9cInRvcFwiPT09dC5sYWJlbC5wb3NpdGlvbj9kLndpZHRoLzItMTI6LWQud2lkdGgvMjowKSx0ZXh0Om8sdGV4dEFuY2hvcjp0LmxhYmVsLnRleHRBbmNob3IsZm9udFNpemU6dC5sYWJlbC5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OnQubGFiZWwuc3R5bGUuZm9udEZhbWlseSxmb250V2VpZ2h0OnQubGFiZWwuc3R5bGUuZm9udFdlaWdodCxmb3JlQ29sb3I6dC5sYWJlbC5zdHlsZS5jb2xvcixjc3NDbGFzczpcImFwZXhjaGFydHMteGF4aXMtYW5ub3RhdGlvbi1sYWJlbCBcIi5jb25jYXQodC5sYWJlbC5zdHlsZS5jc3NDbGFzcyxcIiBcIikuY29uY2F0KHQuaWQ/dC5pZDpcIlwiKX0pO3UuYXR0cih7cmVsOml9KSxlLmFwcGVuZENoaWxkKHUubm9kZSksdGhpcy5hbm5vQ3R4LmhlbHBlcnMuc2V0T3JpZW50YXRpb25zKHQsaSl9fX0se2tleTpcImRyYXdYQXhpc0Fubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteGF4aXMtYW5ub3RhdGlvbnNcIn0pO3JldHVybiBlLmNvbmZpZy5hbm5vdGF0aW9ucy54YXhpcy5tYXAoKGZ1bmN0aW9uKGUsYSl7dC5hZGRYYXhpc0Fubm90YXRpb24oZSxpLm5vZGUsYSl9KSksaX19XSksdH0oKSxBPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmFubm9DdHg9ZSx0aGlzLmhlbHBlcnM9bmV3IHcodGhpcy5hbm5vQ3R4KX1yZXR1cm4gcih0LFt7a2V5OlwiYWRkWWF4aXNBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhLHM9dGhpcy53LHI9dC5zdHJva2VEYXNoQXJyYXksbz10aGlzLmhlbHBlcnMuZ2V0WTFZMihcInkxXCIsdCksbj10LmxhYmVsLnRleHQ7aWYobnVsbD09PXQueTJ8fHZvaWQgMD09PXQueTIpe3ZhciBsPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3TGluZSgwK3Qub2Zmc2V0WCxvK3Qub2Zmc2V0WSx0aGlzLl9nZXRZQXhpc0Fubm90YXRpb25XaWR0aCh0KSxvK3Qub2Zmc2V0WSx0LmJvcmRlckNvbG9yLHIsdC5ib3JkZXJXaWR0aCk7ZS5hcHBlbmRDaGlsZChsLm5vZGUpLHQuaWQmJmwubm9kZS5jbGFzc0xpc3QuYWRkKHQuaWQpfWVsc2V7aWYoKGE9dGhpcy5oZWxwZXJzLmdldFkxWTIoXCJ5MlwiLHQpKT5vKXt2YXIgaD1vO289YSxhPWh9dmFyIGM9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdSZWN0KDArdC5vZmZzZXRYLGErdC5vZmZzZXRZLHRoaXMuX2dldFlBeGlzQW5ub3RhdGlvbldpZHRoKHQpLG8tYSwwLHQuZmlsbENvbG9yLHQub3BhY2l0eSwxLHQuYm9yZGVyQ29sb3Iscik7Yy5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFubm90YXRpb24tcmVjdFwiKSxjLmF0dHIoXCJjbGlwLXBhdGhcIixcInVybCgjZ3JpZFJlY3RNYXNrXCIuY29uY2F0KHMuZ2xvYmFscy5jdWlkLFwiKVwiKSksZS5hcHBlbmRDaGlsZChjLm5vZGUpLHQuaWQmJmMubm9kZS5jbGFzc0xpc3QuYWRkKHQuaWQpfXZhciBkPVwicmlnaHRcIj09PXQubGFiZWwucG9zaXRpb24/cy5nbG9iYWxzLmdyaWRXaWR0aDpcImNlbnRlclwiPT09dC5sYWJlbC5wb3NpdGlvbj9zLmdsb2JhbHMuZ3JpZFdpZHRoLzI6MCxnPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3VGV4dCh7eDpkK3QubGFiZWwub2Zmc2V0WCx5OihudWxsIT1hP2E6bykrdC5sYWJlbC5vZmZzZXRZLTMsdGV4dDpuLHRleHRBbmNob3I6dC5sYWJlbC50ZXh0QW5jaG9yLGZvbnRTaXplOnQubGFiZWwuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTp0LmxhYmVsLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDp0LmxhYmVsLnN0eWxlLmZvbnRXZWlnaHQsZm9yZUNvbG9yOnQubGFiZWwuc3R5bGUuY29sb3IsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLWFubm90YXRpb24tbGFiZWwgXCIuY29uY2F0KHQubGFiZWwuc3R5bGUuY3NzQ2xhc3MsXCIgXCIpLmNvbmNhdCh0LmlkP3QuaWQ6XCJcIil9KTtnLmF0dHIoe3JlbDppfSksZS5hcHBlbmRDaGlsZChnLm5vZGUpfX0se2tleTpcIl9nZXRZQXhpc0Fubm90YXRpb25XaWR0aFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztlLmdsb2JhbHMuZ3JpZFdpZHRoO3JldHVybih0LndpZHRoLmluZGV4T2YoXCIlXCIpPi0xP2UuZ2xvYmFscy5ncmlkV2lkdGgqcGFyc2VJbnQodC53aWR0aCwxMCkvMTAwOnBhcnNlSW50KHQud2lkdGgsMTApKSt0Lm9mZnNldFh9fSx7a2V5OlwiZHJhd1lBeGlzQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT10aGlzLmFubm9DdHguZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy1hbm5vdGF0aW9uc1wifSk7cmV0dXJuIGUuY29uZmlnLmFubm90YXRpb25zLnlheGlzLm1hcCgoZnVuY3Rpb24oZSxhKXt0LmFkZFlheGlzQW5ub3RhdGlvbihlLGkubm9kZSxhKX0pKSxpfX1dKSx0fSgpLFM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuYW5ub0N0eD1lLHRoaXMuaGVscGVycz1uZXcgdyh0aGlzLmFubm9DdHgpfXJldHVybiByKHQsW3trZXk6XCJhZGRQb2ludEFubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy53O3ZhciBhPXRoaXMuaGVscGVycy5nZXRYMVgyKFwieDFcIix0KSxzPXRoaXMuaGVscGVycy5nZXRZMVkyKFwieTFcIix0KTtpZih4LmlzTnVtYmVyKGEpKXt2YXIgcj17cFNpemU6dC5tYXJrZXIuc2l6ZSxwb2ludFN0cm9rZVdpZHRoOnQubWFya2VyLnN0cm9rZVdpZHRoLHBvaW50RmlsbENvbG9yOnQubWFya2VyLmZpbGxDb2xvcixwb2ludFN0cm9rZUNvbG9yOnQubWFya2VyLnN0cm9rZUNvbG9yLHNoYXBlOnQubWFya2VyLnNoYXBlLHBSYWRpdXM6dC5tYXJrZXIucmFkaXVzLGNsYXNzOlwiYXBleGNoYXJ0cy1wb2ludC1hbm5vdGF0aW9uLW1hcmtlciBcIi5jb25jYXQodC5tYXJrZXIuY3NzQ2xhc3MsXCIgXCIpLmNvbmNhdCh0LmlkP3QuaWQ6XCJcIil9LG89dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdNYXJrZXIoYSt0Lm1hcmtlci5vZmZzZXRYLHMrdC5tYXJrZXIub2Zmc2V0WSxyKTtlLmFwcGVuZENoaWxkKG8ubm9kZSk7dmFyIG49dC5sYWJlbC50ZXh0P3QubGFiZWwudGV4dDpcIlwiLGw9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdUZXh0KHt4OmErdC5sYWJlbC5vZmZzZXRYLHk6cyt0LmxhYmVsLm9mZnNldFktdC5tYXJrZXIuc2l6ZS1wYXJzZUZsb2F0KHQubGFiZWwuc3R5bGUuZm9udFNpemUpLzEuNix0ZXh0Om4sdGV4dEFuY2hvcjp0LmxhYmVsLnRleHRBbmNob3IsZm9udFNpemU6dC5sYWJlbC5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OnQubGFiZWwuc3R5bGUuZm9udEZhbWlseSxmb250V2VpZ2h0OnQubGFiZWwuc3R5bGUuZm9udFdlaWdodCxmb3JlQ29sb3I6dC5sYWJlbC5zdHlsZS5jb2xvcixjc3NDbGFzczpcImFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbi1sYWJlbCBcIi5jb25jYXQodC5sYWJlbC5zdHlsZS5jc3NDbGFzcyxcIiBcIikuY29uY2F0KHQuaWQ/dC5pZDpcIlwiKX0pO2lmKGwuYXR0cih7cmVsOml9KSxlLmFwcGVuZENoaWxkKGwubm9kZSksdC5jdXN0b21TVkcuU1ZHKXt2YXIgaD10aGlzLmFubm9DdHguZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1wb2ludC1hbm5vdGF0aW9ucy1jdXN0b20tc3ZnIFwiK3QuY3VzdG9tU1ZHLmNzc0NsYXNzfSk7aC5hdHRyKHt0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIuY29uY2F0KGErdC5jdXN0b21TVkcub2Zmc2V0WCxcIiwgXCIpLmNvbmNhdChzK3QuY3VzdG9tU1ZHLm9mZnNldFksXCIpXCIpfSksaC5ub2RlLmlubmVySFRNTD10LmN1c3RvbVNWRy5TVkcsZS5hcHBlbmRDaGlsZChoLm5vZGUpfWlmKHQuaW1hZ2UucGF0aCl7dmFyIGM9dC5pbWFnZS53aWR0aD90LmltYWdlLndpZHRoOjIwLGQ9dC5pbWFnZS5oZWlnaHQ/dC5pbWFnZS5oZWlnaHQ6MjA7bz10aGlzLmFubm9DdHguYWRkSW1hZ2Uoe3g6YSt0LmltYWdlLm9mZnNldFgtYy8yLHk6cyt0LmltYWdlLm9mZnNldFktZC8yLHdpZHRoOmMsaGVpZ2h0OmQscGF0aDp0LmltYWdlLnBhdGgsYXBwZW5kVG86XCIuYXBleGNoYXJ0cy1wb2ludC1hbm5vdGF0aW9uc1wifSl9dC5tb3VzZUVudGVyJiZvLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIix0Lm1vdXNlRW50ZXIuYmluZCh0aGlzLHQpKSx0Lm1vdXNlTGVhdmUmJm8ubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLHQubW91c2VMZWF2ZS5iaW5kKHRoaXMsdCkpLHQuY2xpY2smJm8ubm9kZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0LmNsaWNrLmJpbmQodGhpcyx0KSl9fX0se2tleTpcImRyYXdQb2ludEFubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbnNcIn0pO3JldHVybiBlLmNvbmZpZy5hbm5vdGF0aW9ucy5wb2ludHMubWFwKChmdW5jdGlvbihlLGEpe3QuYWRkUG9pbnRBbm5vdGF0aW9uKGUsaS5ub2RlLGEpfSkpLGl9fV0pLHR9KCk7dmFyIEM9e25hbWU6XCJlblwiLG9wdGlvbnM6e21vbnRoczpbXCJKYW51YXJ5XCIsXCJGZWJydWFyeVwiLFwiTWFyY2hcIixcIkFwcmlsXCIsXCJNYXlcIixcIkp1bmVcIixcIkp1bHlcIixcIkF1Z3VzdFwiLFwiU2VwdGVtYmVyXCIsXCJPY3RvYmVyXCIsXCJOb3ZlbWJlclwiLFwiRGVjZW1iZXJcIl0sc2hvcnRNb250aHM6W1wiSmFuXCIsXCJGZWJcIixcIk1hclwiLFwiQXByXCIsXCJNYXlcIixcIkp1blwiLFwiSnVsXCIsXCJBdWdcIixcIlNlcFwiLFwiT2N0XCIsXCJOb3ZcIixcIkRlY1wiXSxkYXlzOltcIlN1bmRheVwiLFwiTW9uZGF5XCIsXCJUdWVzZGF5XCIsXCJXZWRuZXNkYXlcIixcIlRodXJzZGF5XCIsXCJGcmlkYXlcIixcIlNhdHVyZGF5XCJdLHNob3J0RGF5czpbXCJTdW5cIixcIk1vblwiLFwiVHVlXCIsXCJXZWRcIixcIlRodVwiLFwiRnJpXCIsXCJTYXRcIl0sdG9vbGJhcjp7ZXhwb3J0VG9TVkc6XCJEb3dubG9hZCBTVkdcIixleHBvcnRUb1BORzpcIkRvd25sb2FkIFBOR1wiLGV4cG9ydFRvQ1NWOlwiRG93bmxvYWQgQ1NWXCIsbWVudTpcIk1lbnVcIixzZWxlY3Rpb246XCJTZWxlY3Rpb25cIixzZWxlY3Rpb25ab29tOlwiU2VsZWN0aW9uIFpvb21cIix6b29tSW46XCJab29tIEluXCIsem9vbU91dDpcIlpvb20gT3V0XCIscGFuOlwiUGFubmluZ1wiLHJlc2V0OlwiUmVzZXQgWm9vbVwifX19LEw9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7YSh0aGlzLHQpLHRoaXMueUF4aXM9e3Nob3c6ITAsc2hvd0Fsd2F5czohMSxzaG93Rm9yTnVsbFNlcmllczohMCxzZXJpZXNOYW1lOnZvaWQgMCxvcHBvc2l0ZTohMSxyZXZlcnNlZDohMSxsb2dhcml0aG1pYzohMSxsb2dCYXNlOjEwLHRpY2tBbW91bnQ6dm9pZCAwLGZvcmNlTmljZVNjYWxlOiExLG1heDp2b2lkIDAsbWluOnZvaWQgMCxmbG9hdGluZzohMSxkZWNpbWFsc0luRmxvYXQ6dm9pZCAwLGxhYmVsczp7c2hvdzohMCxtaW5XaWR0aDowLG1heFdpZHRoOjE2MCxvZmZzZXRYOjAsb2Zmc2V0WTowLGFsaWduOnZvaWQgMCxyb3RhdGU6MCxwYWRkaW5nOjIwLHN0eWxlOntjb2xvcnM6W10sZm9udFNpemU6XCIxMXB4XCIsZm9udFdlaWdodDo0MDAsZm9udEZhbWlseTp2b2lkIDAsY3NzQ2xhc3M6XCJcIn0sZm9ybWF0dGVyOnZvaWQgMH0sYXhpc0JvcmRlcjp7c2hvdzohMSxjb2xvcjpcIiNlMGUwZTBcIix3aWR0aDoxLG9mZnNldFg6MCxvZmZzZXRZOjB9LGF4aXNUaWNrczp7c2hvdzohMSxjb2xvcjpcIiNlMGUwZTBcIix3aWR0aDo2LG9mZnNldFg6MCxvZmZzZXRZOjB9LHRpdGxlOnt0ZXh0OnZvaWQgMCxyb3RhdGU6LTkwLG9mZnNldFk6MCxvZmZzZXRYOjAsc3R5bGU6e2NvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjExcHhcIixmb250V2VpZ2h0OjkwMCxmb250RmFtaWx5OnZvaWQgMCxjc3NDbGFzczpcIlwifX0sdG9vbHRpcDp7ZW5hYmxlZDohMSxvZmZzZXRYOjB9LGNyb3NzaGFpcnM6e3Nob3c6ITAscG9zaXRpb246XCJmcm9udFwiLHN0cm9rZTp7Y29sb3I6XCIjYjZiNmI2XCIsd2lkdGg6MSxkYXNoQXJyYXk6MH19fSx0aGlzLnBvaW50QW5ub3RhdGlvbj17aWQ6dm9pZCAwLHg6MCx5Om51bGwseUF4aXNJbmRleDowLHNlcmllc0luZGV4OjAsbW91c2VFbnRlcjp2b2lkIDAsbW91c2VMZWF2ZTp2b2lkIDAsY2xpY2s6dm9pZCAwLG1hcmtlcjp7c2l6ZTo0LGZpbGxDb2xvcjpcIiNmZmZcIixzdHJva2VXaWR0aDoyLHN0cm9rZUNvbG9yOlwiIzMzM1wiLHNoYXBlOlwiY2lyY2xlXCIsb2Zmc2V0WDowLG9mZnNldFk6MCxyYWRpdXM6Mixjc3NDbGFzczpcIlwifSxsYWJlbDp7Ym9yZGVyQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyV2lkdGg6MSxib3JkZXJSYWRpdXM6Mix0ZXh0OnZvaWQgMCx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsb2Zmc2V0WDowLG9mZnNldFk6MCxtb3VzZUVudGVyOnZvaWQgMCxtb3VzZUxlYXZlOnZvaWQgMCxjbGljazp2b2lkIDAsc3R5bGU6e2JhY2tncm91bmQ6XCIjZmZmXCIsY29sb3I6dm9pZCAwLGZvbnRTaXplOlwiMTFweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NDAwLGNzc0NsYXNzOlwiXCIscGFkZGluZzp7bGVmdDo1LHJpZ2h0OjUsdG9wOjIsYm90dG9tOjJ9fX0sY3VzdG9tU1ZHOntTVkc6dm9pZCAwLGNzc0NsYXNzOnZvaWQgMCxvZmZzZXRYOjAsb2Zmc2V0WTowfSxpbWFnZTp7cGF0aDp2b2lkIDAsd2lkdGg6MjAsaGVpZ2h0OjIwLG9mZnNldFg6MCxvZmZzZXRZOjB9fSx0aGlzLnlBeGlzQW5ub3RhdGlvbj17aWQ6dm9pZCAwLHk6MCx5MjpudWxsLHN0cm9rZURhc2hBcnJheToxLGZpbGxDb2xvcjpcIiNjMmMyYzJcIixib3JkZXJDb2xvcjpcIiNjMmMyYzJcIixib3JkZXJXaWR0aDoxLG9wYWNpdHk6LjMsb2Zmc2V0WDowLG9mZnNldFk6MCx3aWR0aDpcIjEwMCVcIix5QXhpc0luZGV4OjAsbGFiZWw6e2JvcmRlckNvbG9yOlwiI2MyYzJjMlwiLGJvcmRlcldpZHRoOjEsYm9yZGVyUmFkaXVzOjIsdGV4dDp2b2lkIDAsdGV4dEFuY2hvcjpcImVuZFwiLHBvc2l0aW9uOlwicmlnaHRcIixvZmZzZXRYOjAsb2Zmc2V0WTotMyxtb3VzZUVudGVyOnZvaWQgMCxtb3VzZUxlYXZlOnZvaWQgMCxjbGljazp2b2lkIDAsc3R5bGU6e2JhY2tncm91bmQ6XCIjZmZmXCIsY29sb3I6dm9pZCAwLGZvbnRTaXplOlwiMTFweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NDAwLGNzc0NsYXNzOlwiXCIscGFkZGluZzp7bGVmdDo1LHJpZ2h0OjUsdG9wOjIsYm90dG9tOjJ9fX19LHRoaXMueEF4aXNBbm5vdGF0aW9uPXtpZDp2b2lkIDAseDowLHgyOm51bGwsc3Ryb2tlRGFzaEFycmF5OjEsZmlsbENvbG9yOlwiI2MyYzJjMlwiLGJvcmRlckNvbG9yOlwiI2MyYzJjMlwiLGJvcmRlcldpZHRoOjEsb3BhY2l0eTouMyxvZmZzZXRYOjAsb2Zmc2V0WTowLGxhYmVsOntib3JkZXJDb2xvcjpcIiNjMmMyYzJcIixib3JkZXJXaWR0aDoxLGJvcmRlclJhZGl1czoyLHRleHQ6dm9pZCAwLHRleHRBbmNob3I6XCJtaWRkbGVcIixvcmllbnRhdGlvbjpcInZlcnRpY2FsXCIscG9zaXRpb246XCJ0b3BcIixvZmZzZXRYOjAsb2Zmc2V0WTowLG1vdXNlRW50ZXI6dm9pZCAwLG1vdXNlTGVhdmU6dm9pZCAwLGNsaWNrOnZvaWQgMCxzdHlsZTp7YmFja2dyb3VuZDpcIiNmZmZcIixjb2xvcjp2b2lkIDAsZm9udFNpemU6XCIxMXB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsY3NzQ2xhc3M6XCJcIixwYWRkaW5nOntsZWZ0OjUscmlnaHQ6NSx0b3A6Mixib3R0b206Mn19fX0sdGhpcy50ZXh0PXt4OjAseTowLHRleHQ6XCJcIix0ZXh0QW5jaG9yOlwic3RhcnRcIixmb3JlQ29sb3I6dm9pZCAwLGZvbnRTaXplOlwiMTNweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NDAwLGFwcGVuZFRvOlwiLmFwZXhjaGFydHMtYW5ub3RhdGlvbnNcIixiYWNrZ3JvdW5kQ29sb3I6XCJ0cmFuc3BhcmVudFwiLGJvcmRlckNvbG9yOlwiI2MyYzJjMlwiLGJvcmRlclJhZGl1czowLGJvcmRlcldpZHRoOjAscGFkZGluZ0xlZnQ6NCxwYWRkaW5nUmlnaHQ6NCxwYWRkaW5nVG9wOjIscGFkZGluZ0JvdHRvbToyfX1yZXR1cm4gcih0LFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2Fubm90YXRpb25zOnt5YXhpczpbdGhpcy55QXhpc0Fubm90YXRpb25dLHhheGlzOlt0aGlzLnhBeGlzQW5ub3RhdGlvbl0scG9pbnRzOlt0aGlzLnBvaW50QW5ub3RhdGlvbl0sdGV4dHM6W10saW1hZ2VzOltdLHNoYXBlczpbXX0sY2hhcnQ6e2FuaW1hdGlvbnM6e2VuYWJsZWQ6ITAsZWFzaW5nOlwiZWFzZWlub3V0XCIsc3BlZWQ6ODAwLGFuaW1hdGVHcmFkdWFsbHk6e2RlbGF5OjE1MCxlbmFibGVkOiEwfSxkeW5hbWljQW5pbWF0aW9uOntlbmFibGVkOiEwLHNwZWVkOjM1MH19LGJhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiLGxvY2FsZXM6W0NdLGRlZmF1bHRMb2NhbGU6XCJlblwiLGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITEsZW5hYmxlZE9uU2VyaWVzOnZvaWQgMCx0b3A6MixsZWZ0OjIsYmx1cjo0LGNvbG9yOlwiIzAwMFwiLG9wYWNpdHk6LjM1fSxldmVudHM6e2FuaW1hdGlvbkVuZDp2b2lkIDAsYmVmb3JlTW91bnQ6dm9pZCAwLG1vdW50ZWQ6dm9pZCAwLHVwZGF0ZWQ6dm9pZCAwLGNsaWNrOnZvaWQgMCxtb3VzZU1vdmU6dm9pZCAwLG1vdXNlTGVhdmU6dm9pZCAwLHhBeGlzTGFiZWxDbGljazp2b2lkIDAsbGVnZW5kQ2xpY2s6dm9pZCAwLG1hcmtlckNsaWNrOnZvaWQgMCxzZWxlY3Rpb246dm9pZCAwLGRhdGFQb2ludFNlbGVjdGlvbjp2b2lkIDAsZGF0YVBvaW50TW91c2VFbnRlcjp2b2lkIDAsZGF0YVBvaW50TW91c2VMZWF2ZTp2b2lkIDAsYmVmb3JlWm9vbTp2b2lkIDAsYmVmb3JlUmVzZXRab29tOnZvaWQgMCx6b29tZWQ6dm9pZCAwLHNjcm9sbGVkOnZvaWQgMCxicnVzaFNjcm9sbGVkOnZvaWQgMH0sZm9yZUNvbG9yOlwiIzM3M2QzZlwiLGZvbnRGYW1pbHk6XCJIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmXCIsaGVpZ2h0OlwiYXV0b1wiLHBhcmVudEhlaWdodE9mZnNldDoxNSxyZWRyYXdPblBhcmVudFJlc2l6ZTohMCxyZWRyYXdPbldpbmRvd1Jlc2l6ZTohMCxpZDp2b2lkIDAsZ3JvdXA6dm9pZCAwLG9mZnNldFg6MCxvZmZzZXRZOjAsc2VsZWN0aW9uOntlbmFibGVkOiExLHR5cGU6XCJ4XCIsZmlsbDp7Y29sb3I6XCIjMjQyOTJlXCIsb3BhY2l0eTouMX0sc3Ryb2tlOnt3aWR0aDoxLGNvbG9yOlwiIzI0MjkyZVwiLG9wYWNpdHk6LjQsZGFzaEFycmF5OjN9LHhheGlzOnttaW46dm9pZCAwLG1heDp2b2lkIDB9LHlheGlzOnttaW46dm9pZCAwLG1heDp2b2lkIDB9fSxzcGFya2xpbmU6e2VuYWJsZWQ6ITF9LGJydXNoOntlbmFibGVkOiExLGF1dG9TY2FsZVlheGlzOiEwLHRhcmdldDp2b2lkIDB9LHN0YWNrZWQ6ITEsc3RhY2tUeXBlOlwibm9ybWFsXCIsdG9vbGJhcjp7c2hvdzohMCxvZmZzZXRYOjAsb2Zmc2V0WTowLHRvb2xzOntkb3dubG9hZDohMCxzZWxlY3Rpb246ITAsem9vbTohMCx6b29taW46ITAsem9vbW91dDohMCxwYW46ITAscmVzZXQ6ITAsY3VzdG9tSWNvbnM6W119LGV4cG9ydDp7Y3N2OntmaWxlbmFtZTp2b2lkIDAsY29sdW1uRGVsaW1pdGVyOlwiLFwiLGhlYWRlckNhdGVnb3J5OlwiY2F0ZWdvcnlcIixoZWFkZXJWYWx1ZTpcInZhbHVlXCIsZGF0ZUZvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IERhdGUodCkudG9EYXRlU3RyaW5nKCl9fSxwbmc6e2ZpbGVuYW1lOnZvaWQgMH0sc3ZnOntmaWxlbmFtZTp2b2lkIDB9fSxhdXRvU2VsZWN0ZWQ6XCJ6b29tXCJ9LHR5cGU6XCJsaW5lXCIsd2lkdGg6XCIxMDAlXCIsem9vbTp7ZW5hYmxlZDohMCx0eXBlOlwieFwiLGF1dG9TY2FsZVlheGlzOiExLHpvb21lZEFyZWE6e2ZpbGw6e2NvbG9yOlwiIzkwQ0FGOVwiLG9wYWNpdHk6LjR9LHN0cm9rZTp7Y29sb3I6XCIjMEQ0N0ExXCIsb3BhY2l0eTouNCx3aWR0aDoxfX19fSxwbG90T3B0aW9uczp7YXJlYTp7ZmlsbFRvOlwib3JpZ2luXCJ9LGJhcjp7aG9yaXpvbnRhbDohMSxjb2x1bW5XaWR0aDpcIjcwJVwiLGJhckhlaWdodDpcIjcwJVwiLGRpc3RyaWJ1dGVkOiExLGJvcmRlclJhZGl1czowLGJvcmRlclJhZGl1c0FwcGxpY2F0aW9uOlwiYXJvdW5kXCIsYm9yZGVyUmFkaXVzV2hlblN0YWNrZWQ6XCJsYXN0XCIscmFuZ2VCYXJPdmVybGFwOiEwLHJhbmdlQmFyR3JvdXBSb3dzOiExLGhpZGVaZXJvQmFyc1doZW5Hcm91cGVkOiExLGlzRHVtYmJlbGw6ITEsZHVtYmJlbGxDb2xvcnM6dm9pZCAwLGNvbG9yczp7cmFuZ2VzOltdLGJhY2tncm91bmRCYXJDb2xvcnM6W10sYmFja2dyb3VuZEJhck9wYWNpdHk6MSxiYWNrZ3JvdW5kQmFyUmFkaXVzOjB9LGRhdGFMYWJlbHM6e3Bvc2l0aW9uOlwidG9wXCIsbWF4SXRlbXM6MTAwLGhpZGVPdmVyZmxvd2luZ0xhYmVsczohMCxvcmllbnRhdGlvbjpcImhvcml6b250YWxcIix0b3RhbDp7ZW5hYmxlZDohMSxmb3JtYXR0ZXI6dm9pZCAwLG9mZnNldFg6MCxvZmZzZXRZOjAsc3R5bGU6e2NvbG9yOlwiIzM3M2QzZlwiLGZvbnRTaXplOlwiMTJweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NjAwfX19fSxidWJibGU6e3pTY2FsaW5nOiEwLG1pbkJ1YmJsZVJhZGl1czp2b2lkIDAsbWF4QnViYmxlUmFkaXVzOnZvaWQgMH0sY2FuZGxlc3RpY2s6e2NvbG9yczp7dXB3YXJkOlwiIzAwQjc0NlwiLGRvd253YXJkOlwiI0VGNDAzQ1wifSx3aWNrOnt1c2VGaWxsQ29sb3I6ITB9fSxib3hQbG90Ontjb2xvcnM6e3VwcGVyOlwiIzAwRTM5NlwiLGxvd2VyOlwiIzAwOEZGQlwifX0saGVhdG1hcDp7cmFkaXVzOjIsZW5hYmxlU2hhZGVzOiEwLHNoYWRlSW50ZW5zaXR5Oi41LHJldmVyc2VOZWdhdGl2ZVNoYWRlOiExLGRpc3RyaWJ1dGVkOiExLHVzZUZpbGxDb2xvckFzU3Ryb2tlOiExLGNvbG9yU2NhbGU6e2ludmVyc2U6ITEscmFuZ2VzOltdLG1pbjp2b2lkIDAsbWF4OnZvaWQgMH19LHRyZWVtYXA6e2VuYWJsZVNoYWRlczohMCxzaGFkZUludGVuc2l0eTouNSxkaXN0cmlidXRlZDohMSxyZXZlcnNlTmVnYXRpdmVTaGFkZTohMSx1c2VGaWxsQ29sb3JBc1N0cm9rZTohMSxjb2xvclNjYWxlOntpbnZlcnNlOiExLHJhbmdlczpbXSxtaW46dm9pZCAwLG1heDp2b2lkIDB9fSxyYWRpYWxCYXI6e2ludmVyc2VPcmRlcjohMSxzdGFydEFuZ2xlOjAsZW5kQW5nbGU6MzYwLG9mZnNldFg6MCxvZmZzZXRZOjAsaG9sbG93OnttYXJnaW46NSxzaXplOlwiNTAlXCIsYmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCIsaW1hZ2U6dm9pZCAwLGltYWdlV2lkdGg6MTUwLGltYWdlSGVpZ2h0OjE1MCxpbWFnZU9mZnNldFg6MCxpbWFnZU9mZnNldFk6MCxpbWFnZUNsaXBwZWQ6ITAscG9zaXRpb246XCJmcm9udFwiLGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITEsdG9wOjAsbGVmdDowLGJsdXI6Myxjb2xvcjpcIiMwMDBcIixvcGFjaXR5Oi41fX0sdHJhY2s6e3Nob3c6ITAsc3RhcnRBbmdsZTp2b2lkIDAsZW5kQW5nbGU6dm9pZCAwLGJhY2tncm91bmQ6XCIjZjJmMmYyXCIsc3Ryb2tlV2lkdGg6XCI5NyVcIixvcGFjaXR5OjEsbWFyZ2luOjUsZHJvcFNoYWRvdzp7ZW5hYmxlZDohMSx0b3A6MCxsZWZ0OjAsYmx1cjozLGNvbG9yOlwiIzAwMFwiLG9wYWNpdHk6LjV9fSxkYXRhTGFiZWxzOntzaG93OiEwLG5hbWU6e3Nob3c6ITAsZm9udFNpemU6XCIxNnB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo2MDAsY29sb3I6dm9pZCAwLG9mZnNldFk6MCxmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHR9fSx2YWx1ZTp7c2hvdzohMCxmb250U2l6ZTpcIjE0cHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCxjb2xvcjp2b2lkIDAsb2Zmc2V0WToxNixmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQrXCIlXCJ9fSx0b3RhbDp7c2hvdzohMSxsYWJlbDpcIlRvdGFsXCIsZm9udFNpemU6XCIxNnB4XCIsZm9udFdlaWdodDo2MDAsZm9udEZhbWlseTp2b2lkIDAsY29sb3I6dm9pZCAwLGZvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdC5nbG9iYWxzLnNlcmllc1RvdGFscy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pLDApL3QuZ2xvYmFscy5zZXJpZXMubGVuZ3RoK1wiJVwifX19fSxwaWU6e2N1c3RvbVNjYWxlOjEsb2Zmc2V0WDowLG9mZnNldFk6MCxzdGFydEFuZ2xlOjAsZW5kQW5nbGU6MzYwLGV4cGFuZE9uQ2xpY2s6ITAsZGF0YUxhYmVsczp7b2Zmc2V0OjAsbWluQW5nbGVUb1Nob3dMYWJlbDoxMH0sZG9udXQ6e3NpemU6XCI2NSVcIixiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixsYWJlbHM6e3Nob3c6ITEsbmFtZTp7c2hvdzohMCxmb250U2l6ZTpcIjE2cHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjYwMCxjb2xvcjp2b2lkIDAsb2Zmc2V0WTotMTAsZm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0fX0sdmFsdWU6e3Nob3c6ITAsZm9udFNpemU6XCIyMHB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsY29sb3I6dm9pZCAwLG9mZnNldFk6MTAsZm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0fX0sdG90YWw6e3Nob3c6ITEsc2hvd0Fsd2F5czohMSxsYWJlbDpcIlRvdGFsXCIsZm9udFNpemU6XCIxNnB4XCIsZm9udFdlaWdodDo0MDAsZm9udEZhbWlseTp2b2lkIDAsY29sb3I6dm9pZCAwLGZvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdC5nbG9iYWxzLnNlcmllc1RvdGFscy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pLDApfX19fX0scG9sYXJBcmVhOntyaW5nczp7c3Ryb2tlV2lkdGg6MSxzdHJva2VDb2xvcjpcIiNlOGU4ZThcIn0sc3Bva2VzOntzdHJva2VXaWR0aDoxLGNvbm5lY3RvckNvbG9yczpcIiNlOGU4ZThcIn19LHJhZGFyOntzaXplOnZvaWQgMCxvZmZzZXRYOjAsb2Zmc2V0WTowLHBvbHlnb25zOntzdHJva2VXaWR0aDoxLHN0cm9rZUNvbG9yczpcIiNlOGU4ZThcIixjb25uZWN0b3JDb2xvcnM6XCIjZThlOGU4XCIsZmlsbDp7Y29sb3JzOnZvaWQgMH19fX0sY29sb3JzOnZvaWQgMCxkYXRhTGFiZWxzOntlbmFibGVkOiEwLGVuYWJsZWRPblNlcmllczp2b2lkIDAsZm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09dD90OlwiXCJ9LHRleHRBbmNob3I6XCJtaWRkbGVcIixkaXN0cmlidXRlZDohMSxvZmZzZXRYOjAsb2Zmc2V0WTowLHN0eWxlOntmb250U2l6ZTpcIjEycHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjYwMCxjb2xvcnM6dm9pZCAwfSxiYWNrZ3JvdW5kOntlbmFibGVkOiEwLGZvcmVDb2xvcjpcIiNmZmZcIixib3JkZXJSYWRpdXM6MixwYWRkaW5nOjQsb3BhY2l0eTouOSxib3JkZXJXaWR0aDoxLGJvcmRlckNvbG9yOlwiI2ZmZlwiLGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITEsdG9wOjEsbGVmdDoxLGJsdXI6MSxjb2xvcjpcIiMwMDBcIixvcGFjaXR5Oi40NX19LGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITEsdG9wOjEsbGVmdDoxLGJsdXI6MSxjb2xvcjpcIiMwMDBcIixvcGFjaXR5Oi40NX19LGZpbGw6e3R5cGU6XCJzb2xpZFwiLGNvbG9yczp2b2lkIDAsb3BhY2l0eTouODUsZ3JhZGllbnQ6e3NoYWRlOlwiZGFya1wiLHR5cGU6XCJob3Jpem9udGFsXCIsc2hhZGVJbnRlbnNpdHk6LjUsZ3JhZGllbnRUb0NvbG9yczp2b2lkIDAsaW52ZXJzZUNvbG9yczohMCxvcGFjaXR5RnJvbToxLG9wYWNpdHlUbzoxLHN0b3BzOlswLDUwLDEwMF0sY29sb3JTdG9wczpbXX0saW1hZ2U6e3NyYzpbXSx3aWR0aDp2b2lkIDAsaGVpZ2h0OnZvaWQgMH0scGF0dGVybjp7c3R5bGU6XCJzcXVhcmVzXCIsd2lkdGg6NixoZWlnaHQ6NixzdHJva2VXaWR0aDoyfX0sZm9yZWNhc3REYXRhUG9pbnRzOntjb3VudDowLGZpbGxPcGFjaXR5Oi41LHN0cm9rZVdpZHRoOnZvaWQgMCxkYXNoQXJyYXk6NH0sZ3JpZDp7c2hvdzohMCxib3JkZXJDb2xvcjpcIiNlMGUwZTBcIixzdHJva2VEYXNoQXJyYXk6MCxwb3NpdGlvbjpcImJhY2tcIix4YXhpczp7bGluZXM6e3Nob3c6ITF9fSx5YXhpczp7bGluZXM6e3Nob3c6ITB9fSxyb3c6e2NvbG9yczp2b2lkIDAsb3BhY2l0eTouNX0sY29sdW1uOntjb2xvcnM6dm9pZCAwLG9wYWNpdHk6LjV9LHBhZGRpbmc6e3RvcDowLHJpZ2h0OjEwLGJvdHRvbTowLGxlZnQ6MTJ9fSxsYWJlbHM6W10sbGVnZW5kOntzaG93OiEwLHNob3dGb3JTaW5nbGVTZXJpZXM6ITEsc2hvd0Zvck51bGxTZXJpZXM6ITAsc2hvd0Zvclplcm9TZXJpZXM6ITAsZmxvYXRpbmc6ITEscG9zaXRpb246XCJib3R0b21cIixob3Jpem9udGFsQWxpZ246XCJjZW50ZXJcIixpbnZlcnNlT3JkZXI6ITEsZm9udFNpemU6XCIxMnB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsd2lkdGg6dm9pZCAwLGhlaWdodDp2b2lkIDAsZm9ybWF0dGVyOnZvaWQgMCx0b29sdGlwSG92ZXJGb3JtYXR0ZXI6dm9pZCAwLG9mZnNldFg6LTIwLG9mZnNldFk6NCxjdXN0b21MZWdlbmRJdGVtczpbXSxsYWJlbHM6e2NvbG9yczp2b2lkIDAsdXNlU2VyaWVzQ29sb3JzOiExfSxtYXJrZXJzOnt3aWR0aDoxMixoZWlnaHQ6MTIsc3Ryb2tlV2lkdGg6MCxmaWxsQ29sb3JzOnZvaWQgMCxzdHJva2VDb2xvcjpcIiNmZmZcIixyYWRpdXM6MTIsY3VzdG9tSFRNTDp2b2lkIDAsb2Zmc2V0WDowLG9mZnNldFk6MCxvbkNsaWNrOnZvaWQgMH0saXRlbU1hcmdpbjp7aG9yaXpvbnRhbDo1LHZlcnRpY2FsOjJ9LG9uSXRlbUNsaWNrOnt0b2dnbGVEYXRhU2VyaWVzOiEwfSxvbkl0ZW1Ib3Zlcjp7aGlnaGxpZ2h0RGF0YVNlcmllczohMH19LG1hcmtlcnM6e2Rpc2NyZXRlOltdLHNpemU6MCxjb2xvcnM6dm9pZCAwLHN0cm9rZUNvbG9yczpcIiNmZmZcIixzdHJva2VXaWR0aDoyLHN0cm9rZU9wYWNpdHk6Ljksc3Ryb2tlRGFzaEFycmF5OjAsZmlsbE9wYWNpdHk6MSxzaGFwZTpcImNpcmNsZVwiLHdpZHRoOjgsaGVpZ2h0OjgscmFkaXVzOjIsb2Zmc2V0WDowLG9mZnNldFk6MCxvbkNsaWNrOnZvaWQgMCxvbkRibENsaWNrOnZvaWQgMCxzaG93TnVsbERhdGFQb2ludHM6ITAsaG92ZXI6e3NpemU6dm9pZCAwLHNpemVPZmZzZXQ6M319LG5vRGF0YTp7dGV4dDp2b2lkIDAsYWxpZ246XCJjZW50ZXJcIix2ZXJ0aWNhbEFsaWduOlwibWlkZGxlXCIsb2Zmc2V0WDowLG9mZnNldFk6MCxzdHlsZTp7Y29sb3I6dm9pZCAwLGZvbnRTaXplOlwiMTRweFwiLGZvbnRGYW1pbHk6dm9pZCAwfX0scmVzcG9uc2l2ZTpbXSxzZXJpZXM6dm9pZCAwLHN0YXRlczp7bm9ybWFsOntmaWx0ZXI6e3R5cGU6XCJub25lXCIsdmFsdWU6MH19LGhvdmVyOntmaWx0ZXI6e3R5cGU6XCJsaWdodGVuXCIsdmFsdWU6LjF9fSxhY3RpdmU6e2FsbG93TXVsdGlwbGVEYXRhUG9pbnRzU2VsZWN0aW9uOiExLGZpbHRlcjp7dHlwZTpcImRhcmtlblwiLHZhbHVlOi41fX19LHRpdGxlOnt0ZXh0OnZvaWQgMCxhbGlnbjpcImxlZnRcIixtYXJnaW46NSxvZmZzZXRYOjAsb2Zmc2V0WTowLGZsb2F0aW5nOiExLHN0eWxlOntmb250U2l6ZTpcIjE0cHhcIixmb250V2VpZ2h0OjkwMCxmb250RmFtaWx5OnZvaWQgMCxjb2xvcjp2b2lkIDB9fSxzdWJ0aXRsZTp7dGV4dDp2b2lkIDAsYWxpZ246XCJsZWZ0XCIsbWFyZ2luOjUsb2Zmc2V0WDowLG9mZnNldFk6MzAsZmxvYXRpbmc6ITEsc3R5bGU6e2ZvbnRTaXplOlwiMTJweFwiLGZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6dm9pZCAwLGNvbG9yOnZvaWQgMH19LHN0cm9rZTp7c2hvdzohMCxjdXJ2ZTpcInNtb290aFwiLGxpbmVDYXA6XCJidXR0XCIsd2lkdGg6Mixjb2xvcnM6dm9pZCAwLGRhc2hBcnJheTowLGZpbGw6e3R5cGU6XCJzb2xpZFwiLGNvbG9yczp2b2lkIDAsb3BhY2l0eTouODUsZ3JhZGllbnQ6e3NoYWRlOlwiZGFya1wiLHR5cGU6XCJob3Jpem9udGFsXCIsc2hhZGVJbnRlbnNpdHk6LjUsZ3JhZGllbnRUb0NvbG9yczp2b2lkIDAsaW52ZXJzZUNvbG9yczohMCxvcGFjaXR5RnJvbToxLG9wYWNpdHlUbzoxLHN0b3BzOlswLDUwLDEwMF0sY29sb3JTdG9wczpbXX19fSx0b29sdGlwOntlbmFibGVkOiEwLGVuYWJsZWRPblNlcmllczp2b2lkIDAsc2hhcmVkOiEwLGZvbGxvd0N1cnNvcjohMSxpbnRlcnNlY3Q6ITEsaW52ZXJzZU9yZGVyOiExLGN1c3RvbTp2b2lkIDAsZmlsbFNlcmllc0NvbG9yOiExLHRoZW1lOlwibGlnaHRcIixjc3NDbGFzczpcIlwiLHN0eWxlOntmb250U2l6ZTpcIjEycHhcIixmb250RmFtaWx5OnZvaWQgMH0sb25EYXRhc2V0SG92ZXI6e2hpZ2hsaWdodERhdGFTZXJpZXM6ITF9LHg6e3Nob3c6ITAsZm9ybWF0OlwiZGQgTU1NXCIsZm9ybWF0dGVyOnZvaWQgMH0seTp7Zm9ybWF0dGVyOnZvaWQgMCx0aXRsZTp7Zm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0P3QrXCI6IFwiOlwiXCJ9fX0sejp7Zm9ybWF0dGVyOnZvaWQgMCx0aXRsZTpcIlNpemU6IFwifSxtYXJrZXI6e3Nob3c6ITAsZmlsbENvbG9yczp2b2lkIDB9LGl0ZW1zOntkaXNwbGF5OlwiZmxleFwifSxmaXhlZDp7ZW5hYmxlZDohMSxwb3NpdGlvbjpcInRvcFJpZ2h0XCIsb2Zmc2V0WDowLG9mZnNldFk6MH19LHhheGlzOnt0eXBlOlwiY2F0ZWdvcnlcIixjYXRlZ29yaWVzOltdLGNvbnZlcnRlZENhdFRvTnVtZXJpYzohMSxvZmZzZXRYOjAsb2Zmc2V0WTowLG92ZXJ3cml0ZUNhdGVnb3JpZXM6dm9pZCAwLGxhYmVsczp7c2hvdzohMCxyb3RhdGU6LTQ1LHJvdGF0ZUFsd2F5czohMSxoaWRlT3ZlcmxhcHBpbmdMYWJlbHM6ITAsdHJpbTohMSxtaW5IZWlnaHQ6dm9pZCAwLG1heEhlaWdodDoxMjAsc2hvd0R1cGxpY2F0ZXM6ITAsc3R5bGU6e2NvbG9yczpbXSxmb250U2l6ZTpcIjEycHhcIixmb250V2VpZ2h0OjQwMCxmb250RmFtaWx5OnZvaWQgMCxjc3NDbGFzczpcIlwifSxvZmZzZXRYOjAsb2Zmc2V0WTowLGZvcm1hdDp2b2lkIDAsZm9ybWF0dGVyOnZvaWQgMCxkYXRldGltZVVUQzohMCxkYXRldGltZUZvcm1hdHRlcjp7eWVhcjpcInl5eXlcIixtb250aDpcIk1NTSAneXlcIixkYXk6XCJkZCBNTU1cIixob3VyOlwiSEg6bW1cIixtaW51dGU6XCJISDptbTpzc1wiLHNlY29uZDpcIkhIOm1tOnNzXCJ9fSxncm91cDp7Z3JvdXBzOltdLHN0eWxlOntjb2xvcnM6W10sZm9udFNpemU6XCIxMnB4XCIsZm9udFdlaWdodDo0MDAsZm9udEZhbWlseTp2b2lkIDAsY3NzQ2xhc3M6XCJcIn19LGF4aXNCb3JkZXI6e3Nob3c6ITAsY29sb3I6XCIjZTBlMGUwXCIsd2lkdGg6XCIxMDAlXCIsaGVpZ2h0OjEsb2Zmc2V0WDowLG9mZnNldFk6MH0sYXhpc1RpY2tzOntzaG93OiEwLGNvbG9yOlwiI2UwZTBlMFwiLGhlaWdodDo2LG9mZnNldFg6MCxvZmZzZXRZOjB9LHRpY2tBbW91bnQ6dm9pZCAwLHRpY2tQbGFjZW1lbnQ6XCJvblwiLG1pbjp2b2lkIDAsbWF4OnZvaWQgMCxyYW5nZTp2b2lkIDAsZmxvYXRpbmc6ITEsZGVjaW1hbHNJbkZsb2F0OnZvaWQgMCxwb3NpdGlvbjpcImJvdHRvbVwiLHRpdGxlOnt0ZXh0OnZvaWQgMCxvZmZzZXRYOjAsb2Zmc2V0WTowLHN0eWxlOntjb2xvcjp2b2lkIDAsZm9udFNpemU6XCIxMnB4XCIsZm9udFdlaWdodDo5MDAsZm9udEZhbWlseTp2b2lkIDAsY3NzQ2xhc3M6XCJcIn19LGNyb3NzaGFpcnM6e3Nob3c6ITAsd2lkdGg6MSxwb3NpdGlvbjpcImJhY2tcIixvcGFjaXR5Oi45LHN0cm9rZTp7Y29sb3I6XCIjYjZiNmI2XCIsd2lkdGg6MSxkYXNoQXJyYXk6M30sZmlsbDp7dHlwZTpcInNvbGlkXCIsY29sb3I6XCIjQjFCOUM0XCIsZ3JhZGllbnQ6e2NvbG9yRnJvbTpcIiNEOEUzRjBcIixjb2xvclRvOlwiI0JFRDFFNlwiLHN0b3BzOlswLDEwMF0sb3BhY2l0eUZyb206LjQsb3BhY2l0eVRvOi41fX0sZHJvcFNoYWRvdzp7ZW5hYmxlZDohMSxsZWZ0OjAsdG9wOjAsYmx1cjoxLG9wYWNpdHk6LjR9fSx0b29sdGlwOntlbmFibGVkOiEwLG9mZnNldFk6MCxmb3JtYXR0ZXI6dm9pZCAwLHN0eWxlOntmb250U2l6ZTpcIjEycHhcIixmb250RmFtaWx5OnZvaWQgMH19fSx5YXhpczp0aGlzLnlBeGlzLHRoZW1lOnttb2RlOlwibGlnaHRcIixwYWxldHRlOlwicGFsZXR0ZTFcIixtb25vY2hyb21lOntlbmFibGVkOiExLGNvbG9yOlwiIzAwOEZGQlwiLHNoYWRlVG86XCJsaWdodFwiLHNoYWRlSW50ZW5zaXR5Oi42NX19fX19XSksdH0oKSxQPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMuZ3JhcGhpY3M9bmV3IG0odGhpcy5jdHgpLHRoaXMudy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKHRoaXMuaW52ZXJ0QXhpcz0hMCksdGhpcy5oZWxwZXJzPW5ldyB3KHRoaXMpLHRoaXMueEF4aXNBbm5vdGF0aW9ucz1uZXcgayh0aGlzKSx0aGlzLnlBeGlzQW5ub3RhdGlvbnM9bmV3IEEodGhpcyksdGhpcy5wb2ludHNBbm5vdGF0aW9ucz1uZXcgUyh0aGlzKSx0aGlzLncuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJnRoaXMudy5jb25maWcueWF4aXNbMF0ucmV2ZXJzZWQmJih0aGlzLmludmVyc2VkUmV2ZXJzZWRBeGlzPSEwKSx0aGlzLnhEaXZpc2lvbj10aGlzLncuZ2xvYmFscy5ncmlkV2lkdGgvdGhpcy53Lmdsb2JhbHMuZGF0YVBvaW50c31yZXR1cm4gcih0LFt7a2V5OlwiZHJhd0F4ZXNBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O2lmKHQuZ2xvYmFscy5heGlzQ2hhcnRzKXtmb3IodmFyIGU9dGhpcy55QXhpc0Fubm90YXRpb25zLmRyYXdZQXhpc0Fubm90YXRpb25zKCksaT10aGlzLnhBeGlzQW5ub3RhdGlvbnMuZHJhd1hBeGlzQW5ub3RhdGlvbnMoKSxhPXRoaXMucG9pbnRzQW5ub3RhdGlvbnMuZHJhd1BvaW50QW5ub3RhdGlvbnMoKSxzPXQuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCxyPVtlLGksYV0sbz1baS5ub2RlLGUubm9kZSxhLm5vZGVdLG49MDtuPDM7bisrKXQuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHJbbl0pLCFzfHx0Lmdsb2JhbHMucmVzaXplZHx8dC5nbG9iYWxzLmRhdGFDaGFuZ2VkfHxcInNjYXR0ZXJcIiE9PXQuY29uZmlnLmNoYXJ0LnR5cGUmJlwiYnViYmxlXCIhPT10LmNvbmZpZy5jaGFydC50eXBlJiZ0Lmdsb2JhbHMuZGF0YVBvaW50cz4xJiZvW25dLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCIpLHQuZ2xvYmFscy5kZWxheWVkRWxlbWVudHMucHVzaCh7ZWw6b1tuXSxpbmRleDowfSk7dGhpcy5oZWxwZXJzLmFubm90YXRpb25zQmFja2dyb3VuZCgpfX19LHtrZXk6XCJkcmF3SW1hZ2VBbm5vc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLncuY29uZmlnLmFubm90YXRpb25zLmltYWdlcy5tYXAoKGZ1bmN0aW9uKGUsaSl7dC5hZGRJbWFnZShlLGkpfSkpfX0se2tleTpcImRyYXdUZXh0QW5ub3NcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy53LmNvbmZpZy5hbm5vdGF0aW9ucy50ZXh0cy5tYXAoKGZ1bmN0aW9uKGUsaSl7dC5hZGRUZXh0KGUsaSl9KSl9fSx7a2V5OlwiYWRkWGF4aXNBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3RoaXMueEF4aXNBbm5vdGF0aW9ucy5hZGRYYXhpc0Fubm90YXRpb24odCxlLGkpfX0se2tleTpcImFkZFlheGlzQW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt0aGlzLnlBeGlzQW5ub3RhdGlvbnMuYWRkWWF4aXNBbm5vdGF0aW9uKHQsZSxpKX19LHtrZXk6XCJhZGRQb2ludEFubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy5wb2ludHNBbm5vdGF0aW9ucy5hZGRQb2ludEFubm90YXRpb24odCxlLGkpfX0se2tleTpcImFkZFRleHRcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXQueCxhPXQueSxzPXQudGV4dCxyPXQudGV4dEFuY2hvcixvPXQuZm9yZUNvbG9yLG49dC5mb250U2l6ZSxsPXQuZm9udEZhbWlseSxoPXQuZm9udFdlaWdodCxjPXQuY3NzQ2xhc3MsZD10LmJhY2tncm91bmRDb2xvcixnPXQuYm9yZGVyV2lkdGgsdT10LnN0cm9rZURhc2hBcnJheSxwPXQuYm9yZGVyUmFkaXVzLGY9dC5ib3JkZXJDb2xvcix4PXQuYXBwZW5kVG8sYj12b2lkIDA9PT14P1wiLmFwZXhjaGFydHMtYW5ub3RhdGlvbnNcIjp4LHY9dC5wYWRkaW5nTGVmdCxtPXZvaWQgMD09PXY/NDp2LHk9dC5wYWRkaW5nUmlnaHQsdz12b2lkIDA9PT15PzQ6eSxrPXQucGFkZGluZ0JvdHRvbSxBPXZvaWQgMD09PWs/MjprLFM9dC5wYWRkaW5nVG9wLEM9dm9pZCAwPT09Uz8yOlMsTD10aGlzLncsUD10aGlzLmdyYXBoaWNzLmRyYXdUZXh0KHt4OmkseTphLHRleHQ6cyx0ZXh0QW5jaG9yOnJ8fFwic3RhcnRcIixmb250U2l6ZTpufHxcIjEycHhcIixmb250V2VpZ2h0Omh8fFwicmVndWxhclwiLGZvbnRGYW1pbHk6bHx8TC5jb25maWcuY2hhcnQuZm9udEZhbWlseSxmb3JlQ29sb3I6b3x8TC5jb25maWcuY2hhcnQuZm9yZUNvbG9yLGNzc0NsYXNzOmN9KSxJPUwuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoYik7SSYmSS5hcHBlbmRDaGlsZChQLm5vZGUpO3ZhciBUPVAuYmJveCgpO2lmKHMpe3ZhciBNPXRoaXMuZ3JhcGhpY3MuZHJhd1JlY3QoVC54LW0sVC55LUMsVC53aWR0aCttK3csVC5oZWlnaHQrQStDLHAsZHx8XCJ0cmFuc3BhcmVudFwiLDEsZyxmLHUpO0kuaW5zZXJ0QmVmb3JlKE0ubm9kZSxQLm5vZGUpfX19LHtrZXk6XCJhZGRJbWFnZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9dC5wYXRoLHM9dC54LHI9dm9pZCAwPT09cz8wOnMsbz10Lnksbj12b2lkIDA9PT1vPzA6byxsPXQud2lkdGgsaD12b2lkIDA9PT1sPzIwOmwsYz10LmhlaWdodCxkPXZvaWQgMD09PWM/MjA6YyxnPXQuYXBwZW5kVG8sdT12b2lkIDA9PT1nP1wiLmFwZXhjaGFydHMtYW5ub3RhdGlvbnNcIjpnLHA9aS5nbG9iYWxzLmRvbS5QYXBlci5pbWFnZShhKTtwLnNpemUoaCxkKS5tb3ZlKHIsbik7dmFyIGY9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3Rvcih1KTtyZXR1cm4gZiYmZi5hcHBlbmRDaGlsZChwLm5vZGUpLHB9fSx7a2V5OlwiYWRkWGF4aXNBbm5vdGF0aW9uRXh0ZXJuYWxcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMuYWRkQW5ub3RhdGlvbkV4dGVybmFsKHtwYXJhbXM6dCxwdXNoVG9NZW1vcnk6ZSxjb250ZXh0OmksdHlwZTpcInhheGlzXCIsY29udGV4dE1ldGhvZDppLmFkZFhheGlzQW5ub3RhdGlvbn0pLGl9fSx7a2V5OlwiYWRkWWF4aXNBbm5vdGF0aW9uRXh0ZXJuYWxcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMuYWRkQW5ub3RhdGlvbkV4dGVybmFsKHtwYXJhbXM6dCxwdXNoVG9NZW1vcnk6ZSxjb250ZXh0OmksdHlwZTpcInlheGlzXCIsY29udGV4dE1ldGhvZDppLmFkZFlheGlzQW5ub3RhdGlvbn0pLGl9fSx7a2V5OlwiYWRkUG9pbnRBbm5vdGF0aW9uRXh0ZXJuYWxcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHZvaWQgMD09PXRoaXMuaW52ZXJ0QXhpcyYmKHRoaXMuaW52ZXJ0QXhpcz1pLncuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpLHRoaXMuYWRkQW5ub3RhdGlvbkV4dGVybmFsKHtwYXJhbXM6dCxwdXNoVG9NZW1vcnk6ZSxjb250ZXh0OmksdHlwZTpcInBvaW50XCIsY29udGV4dE1ldGhvZDppLmFkZFBvaW50QW5ub3RhdGlvbn0pLGl9fSx7a2V5OlwiYWRkQW5ub3RhdGlvbkV4dGVybmFsXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5wYXJhbXMsaT10LnB1c2hUb01lbW9yeSxhPXQuY29udGV4dCxzPXQudHlwZSxyPXQuY29udGV4dE1ldGhvZCxvPWEsbj1vLncsbD1uLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KHMsXCItYW5ub3RhdGlvbnNcIikpLGg9bC5jaGlsZE5vZGVzLmxlbmd0aCsxLGM9bmV3IEwsZD1PYmplY3QuYXNzaWduKHt9LFwieGF4aXNcIj09PXM/Yy54QXhpc0Fubm90YXRpb246XCJ5YXhpc1wiPT09cz9jLnlBeGlzQW5ub3RhdGlvbjpjLnBvaW50QW5ub3RhdGlvbiksZz14LmV4dGVuZChkLGUpO3N3aXRjaChzKXtjYXNlXCJ4YXhpc1wiOnRoaXMuYWRkWGF4aXNBbm5vdGF0aW9uKGcsbCxoKTticmVhaztjYXNlXCJ5YXhpc1wiOnRoaXMuYWRkWWF4aXNBbm5vdGF0aW9uKGcsbCxoKTticmVhaztjYXNlXCJwb2ludFwiOnRoaXMuYWRkUG9pbnRBbm5vdGF0aW9uKGcsbCxoKX12YXIgdT1uLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KHMsXCItYW5ub3RhdGlvbnMgLmFwZXhjaGFydHMtXCIpLmNvbmNhdChzLFwiLWFubm90YXRpb24tbGFiZWxbcmVsPSdcIikuY29uY2F0KGgsXCInXVwiKSkscD10aGlzLmhlbHBlcnMuYWRkQmFja2dyb3VuZFRvQW5ubyh1LGcpO3JldHVybiBwJiZsLmluc2VydEJlZm9yZShwLm5vZGUsdSksaSYmbi5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLnB1c2goe2NvbnRleHQ6byxpZDpnLmlkP2cuaWQ6eC5yYW5kb21JZCgpLG1ldGhvZDpyLGxhYmVsOlwiYWRkQW5ub3RhdGlvblwiLHBhcmFtczplfSksYX19LHtrZXk6XCJjbGVhckFubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC53LGk9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXlheGlzLWFubm90YXRpb25zLCAuYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9ucywgLmFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbnNcIik7ZS5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLm1hcCgoZnVuY3Rpb24odCxpKXtcImFkZFRleHRcIiE9PXQubGFiZWwmJlwiYWRkQW5ub3RhdGlvblwiIT09dC5sYWJlbHx8ZS5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLnNwbGljZShpLDEpfSkpLGk9eC5saXN0VG9BcnJheShpKSxBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGksKGZ1bmN0aW9uKHQpe2Zvcig7dC5maXJzdENoaWxkOyl0LnJlbW92ZUNoaWxkKHQuZmlyc3RDaGlsZCl9KSl9fSx7a2V5OlwicmVtb3ZlQW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dC53LGE9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5cIi5jb25jYXQoZSkpO2EmJihpLmdsb2JhbHMubWVtb3J5Lm1ldGhvZHNUb0V4ZWMubWFwKChmdW5jdGlvbih0LGEpe3QuaWQ9PT1lJiZpLmdsb2JhbHMubWVtb3J5Lm1ldGhvZHNUb0V4ZWMuc3BsaWNlKGEsMSl9KSksQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChhLChmdW5jdGlvbih0KXt0LnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQodCl9KSkpfX1dKSx0fSgpLEk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5tb250aHMzMT1bMSwzLDUsNyw4LDEwLDEyXSx0aGlzLm1vbnRoczMwPVsyLDQsNiw5LDExXSx0aGlzLmRheXNDbnRPZlllYXI9WzAsMzEsNTksOTAsMTIwLDE1MSwxODEsMjEyLDI0MywyNzMsMzA0LDMzNF19cmV0dXJuIHIodCxbe2tleTpcImlzVmFsaWREYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIWlzTmFOKHRoaXMucGFyc2VEYXRlKHQpKX19LHtrZXk6XCJnZXRUaW1lU3RhbXBcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gRGF0ZS5wYXJzZSh0KT90aGlzLncuY29uZmlnLnhheGlzLmxhYmVscy5kYXRldGltZVVUQz9uZXcgRGF0ZShuZXcgRGF0ZSh0KS50b0lTT1N0cmluZygpLnN1YnN0cigwLDI1KSkuZ2V0VGltZSgpOm5ldyBEYXRlKHQpLmdldFRpbWUoKTp0fX0se2tleTpcImdldERhdGVcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy53LmNvbmZpZy54YXhpcy5sYWJlbHMuZGF0ZXRpbWVVVEM/bmV3IERhdGUobmV3IERhdGUodCkudG9VVENTdHJpbmcoKSk6bmV3IERhdGUodCl9fSx7a2V5OlwicGFyc2VEYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9RGF0ZS5wYXJzZSh0KTtpZighaXNOYU4oZSkpcmV0dXJuIHRoaXMuZ2V0VGltZVN0YW1wKHQpO3ZhciBpPURhdGUucGFyc2UodC5yZXBsYWNlKC8tL2csXCIvXCIpLnJlcGxhY2UoL1thLXpdKy9naSxcIiBcIikpO3JldHVybiBpPXRoaXMuZ2V0VGltZVN0YW1wKGkpfX0se2tleTpcInBhcnNlRGF0ZVdpdGhUaW1lem9uZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBEYXRlLnBhcnNlKHQucmVwbGFjZSgvLS9nLFwiL1wiKS5yZXBsYWNlKC9bYS16XSsvZ2ksXCIgXCIpKX19LHtrZXk6XCJmb3JtYXREYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncuZ2xvYmFscy5sb2NhbGUsYT10aGlzLncuY29uZmlnLnhheGlzLmxhYmVscy5kYXRldGltZVVUQyxzPVtcIlxcMFwiXS5jb25jYXQodShpLm1vbnRocykpLHI9W1wiXFx4MDFcIl0uY29uY2F0KHUoaS5zaG9ydE1vbnRocykpLG89W1wiXFx4MDJcIl0uY29uY2F0KHUoaS5kYXlzKSksbj1bXCJcXHgwM1wiXS5jb25jYXQodShpLnNob3J0RGF5cykpO2Z1bmN0aW9uIGwodCxlKXt2YXIgaT10K1wiXCI7Zm9yKGU9ZXx8MjtpLmxlbmd0aDxlOylpPVwiMFwiK2k7cmV0dXJuIGl9dmFyIGg9YT90LmdldFVUQ0Z1bGxZZWFyKCk6dC5nZXRGdWxsWWVhcigpO2U9KGU9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKXl5eXkrL2csXCIkMVwiK2gpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKXl5L2csXCIkMVwiK2gudG9TdHJpbmcoKS5zdWJzdHIoMiwyKSkpLnJlcGxhY2UoLyhefFteXFxcXF0peS9nLFwiJDFcIitoKTt2YXIgYz0oYT90LmdldFVUQ01vbnRoKCk6dC5nZXRNb250aCgpKSsxO2U9KGU9KGU9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKU1NTU0rL2csXCIkMVwiK3NbMF0pKS5yZXBsYWNlKC8oXnxbXlxcXFxdKU1NTS9nLFwiJDFcIityWzBdKSkucmVwbGFjZSgvKF58W15cXFxcXSlNTS9nLFwiJDFcIitsKGMpKSkucmVwbGFjZSgvKF58W15cXFxcXSlNL2csXCIkMVwiK2MpO3ZhciBkPWE/dC5nZXRVVENEYXRlKCk6dC5nZXREYXRlKCk7ZT0oZT0oZT0oZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pZGRkZCsvZyxcIiQxXCIrb1swXSkpLnJlcGxhY2UoLyhefFteXFxcXF0pZGRkL2csXCIkMVwiK25bMF0pKS5yZXBsYWNlKC8oXnxbXlxcXFxdKWRkL2csXCIkMVwiK2woZCkpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKWQvZyxcIiQxXCIrZCk7dmFyIGc9YT90LmdldFVUQ0hvdXJzKCk6dC5nZXRIb3VycygpLHA9Zz4xMj9nLTEyOjA9PT1nPzEyOmc7ZT0oZT0oZT0oZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pSEgrL2csXCIkMVwiK2woZykpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKUgvZyxcIiQxXCIrZykpLnJlcGxhY2UoLyhefFteXFxcXF0paGgrL2csXCIkMVwiK2wocCkpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKWgvZyxcIiQxXCIrcCk7dmFyIGY9YT90LmdldFVUQ01pbnV0ZXMoKTp0LmdldE1pbnV0ZXMoKTtlPShlPWUucmVwbGFjZSgvKF58W15cXFxcXSltbSsvZyxcIiQxXCIrbChmKSkpLnJlcGxhY2UoLyhefFteXFxcXF0pbS9nLFwiJDFcIitmKTt2YXIgeD1hP3QuZ2V0VVRDU2Vjb25kcygpOnQuZ2V0U2Vjb25kcygpO2U9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKXNzKy9nLFwiJDFcIitsKHgpKSkucmVwbGFjZSgvKF58W15cXFxcXSlzL2csXCIkMVwiK3gpO3ZhciBiPWE/dC5nZXRVVENNaWxsaXNlY29uZHMoKTp0LmdldE1pbGxpc2Vjb25kcygpO2U9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKWZmZisvZyxcIiQxXCIrbChiLDMpKSxiPU1hdGgucm91bmQoYi8xMCksZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pZmYvZyxcIiQxXCIrbChiKSksYj1NYXRoLnJvdW5kKGIvMTApO3ZhciB2PWc8MTI/XCJBTVwiOlwiUE1cIjtlPShlPShlPWUucmVwbGFjZSgvKF58W15cXFxcXSlmL2csXCIkMVwiK2IpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKVRUKy9nLFwiJDFcIit2KSkucmVwbGFjZSgvKF58W15cXFxcXSlUL2csXCIkMVwiK3YuY2hhckF0KDApKTt2YXIgbT12LnRvTG93ZXJDYXNlKCk7ZT0oZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pdHQrL2csXCIkMVwiK20pKS5yZXBsYWNlKC8oXnxbXlxcXFxdKXQvZyxcIiQxXCIrbS5jaGFyQXQoMCkpO3ZhciB5PS10LmdldFRpbWV6b25lT2Zmc2V0KCksdz1hfHwheT9cIlpcIjp5PjA/XCIrXCI6XCItXCI7aWYoIWEpe3ZhciBrPSh5PU1hdGguYWJzKHkpKSU2MDt3Kz1sKE1hdGguZmxvb3IoeS82MCkpK1wiOlwiK2woayl9ZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pSy9nLFwiJDFcIit3KTt2YXIgQT0oYT90LmdldFVUQ0RheSgpOnQuZ2V0RGF5KCkpKzE7cmV0dXJuIGU9KGU9KGU9KGU9KGU9ZS5yZXBsYWNlKG5ldyBSZWdFeHAob1swXSxcImdcIiksb1tBXSkpLnJlcGxhY2UobmV3IFJlZ0V4cChuWzBdLFwiZ1wiKSxuW0FdKSkucmVwbGFjZShuZXcgUmVnRXhwKHNbMF0sXCJnXCIpLHNbY10pKS5yZXBsYWNlKG5ldyBSZWdFeHAoclswXSxcImdcIikscltjXSkpLnJlcGxhY2UoL1xcXFwoLikvZyxcIiQxXCIpfX0se2tleTpcImdldFRpbWVVbml0c2Zyb21UaW1lc3RhbXBcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53O3ZvaWQgMCE9PWEuY29uZmlnLnhheGlzLm1pbiYmKHQ9YS5jb25maWcueGF4aXMubWluKSx2b2lkIDAhPT1hLmNvbmZpZy54YXhpcy5tYXgmJihlPWEuY29uZmlnLnhheGlzLm1heCk7dmFyIHM9dGhpcy5nZXREYXRlKHQpLHI9dGhpcy5nZXREYXRlKGUpLG89dGhpcy5mb3JtYXREYXRlKHMsXCJ5eXl5IE1NIGRkIEhIIG1tIHNzIGZmZlwiKS5zcGxpdChcIiBcIiksbj10aGlzLmZvcm1hdERhdGUocixcInl5eXkgTU0gZGQgSEggbW0gc3MgZmZmXCIpLnNwbGl0KFwiIFwiKTtyZXR1cm57bWluTWlsbGlzZWNvbmQ6cGFyc2VJbnQob1s2XSwxMCksbWF4TWlsbGlzZWNvbmQ6cGFyc2VJbnQobls2XSwxMCksbWluU2Vjb25kOnBhcnNlSW50KG9bNV0sMTApLG1heFNlY29uZDpwYXJzZUludChuWzVdLDEwKSxtaW5NaW51dGU6cGFyc2VJbnQob1s0XSwxMCksbWF4TWludXRlOnBhcnNlSW50KG5bNF0sMTApLG1pbkhvdXI6cGFyc2VJbnQob1szXSwxMCksbWF4SG91cjpwYXJzZUludChuWzNdLDEwKSxtaW5EYXRlOnBhcnNlSW50KG9bMl0sMTApLG1heERhdGU6cGFyc2VJbnQoblsyXSwxMCksbWluTW9udGg6cGFyc2VJbnQob1sxXSwxMCktMSxtYXhNb250aDpwYXJzZUludChuWzFdLDEwKS0xLG1pblllYXI6cGFyc2VJbnQob1swXSwxMCksbWF4WWVhcjpwYXJzZUludChuWzBdLDEwKX19fSx7a2V5OlwiaXNMZWFwWWVhclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0JTQ9PTAmJnQlMTAwIT0wfHx0JTQwMD09MH19LHtrZXk6XCJjYWxjdWxjYXRlTGFzdERheXNPZk1vbnRoXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLmRldGVybWluZURheXNPZk1vbnRocyh0LGUpLWl9fSx7a2V5OlwiZGV0ZXJtaW5lRGF5c09mWWVhclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPTM2NTtyZXR1cm4gdGhpcy5pc0xlYXBZZWFyKHQpJiYoZT0zNjYpLGV9fSx7a2V5OlwiZGV0ZXJtaW5lUmVtYWluaW5nRGF5c09mWWVhclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLmRheXNDbnRPZlllYXJbZV0raTtyZXR1cm4gZT4xJiZ0aGlzLmlzTGVhcFllYXIoKSYmYSsrLGF9fSx7a2V5OlwiZGV0ZXJtaW5lRGF5c09mTW9udGhzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT0zMDtzd2l0Y2godD14Lm1vbnRoTW9kKHQpLCEwKXtjYXNlIHRoaXMubW9udGhzMzAuaW5kZXhPZih0KT4tMToyPT09dCYmKGk9dGhpcy5pc0xlYXBZZWFyKGUpPzI5OjI4KTticmVhaztjYXNlIHRoaXMubW9udGhzMzEuaW5kZXhPZih0KT4tMTpkZWZhdWx0Omk9MzF9cmV0dXJuIGl9fV0pLHR9KCksVD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnRvb2x0aXBLZXlGb3JtYXQ9XCJkZCBNTU1cIn1yZXR1cm4gcih0LFt7a2V5OlwieExhYmVsRm9ybWF0XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9dGhpcy53O2lmKFwiZGF0ZXRpbWVcIj09PXMuY29uZmlnLnhheGlzLnR5cGUmJnZvaWQgMD09PXMuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXImJnZvaWQgMD09PXMuY29uZmlnLnRvb2x0aXAueC5mb3JtYXR0ZXIpe3ZhciByPW5ldyBJKHRoaXMuY3R4KTtyZXR1cm4gci5mb3JtYXREYXRlKHIuZ2V0RGF0ZShlKSxzLmNvbmZpZy50b29sdGlwLnguZm9ybWF0KX1yZXR1cm4gdChlLGksYSl9fSx7a2V5OlwiZGVmYXVsdEdlbmVyYWxGb3JtYXR0ZXJcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHR9KSk6dH19LHtrZXk6XCJkZWZhdWx0WUZvcm1hdHRlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLnc7cmV0dXJuIHguaXNOdW1iZXIodCkmJih0PTAhPT1hLmdsb2JhbHMueVZhbHVlRGVjaW1hbD90LnRvRml4ZWQodm9pZCAwIT09ZS5kZWNpbWFsc0luRmxvYXQ/ZS5kZWNpbWFsc0luRmxvYXQ6YS5nbG9iYWxzLnlWYWx1ZURlY2ltYWwpOmEuZ2xvYmFscy5tYXhZQXJyW2ldLWEuZ2xvYmFscy5taW5ZQXJyW2ldPDU/dC50b0ZpeGVkKDEpOnQudG9GaXhlZCgwKSksdH19LHtrZXk6XCJzZXRMYWJlbEZvcm1hdHRlcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLnc7cmV0dXJuIGUuZ2xvYmFscy54YXhpc1Rvb2x0aXBGb3JtYXR0ZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZGVmYXVsdEdlbmVyYWxGb3JtYXR0ZXIoZSl9LGUuZ2xvYmFscy50dEtleUZvcm1hdHRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdC5kZWZhdWx0R2VuZXJhbEZvcm1hdHRlcihlKX0sZS5nbG9iYWxzLnR0WkZvcm1hdHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdH0sZS5nbG9iYWxzLmxlZ2VuZEZvcm1hdHRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdC5kZWZhdWx0R2VuZXJhbEZvcm1hdHRlcihlKX0sdm9pZCAwIT09ZS5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlcj9lLmdsb2JhbHMueExhYmVsRm9ybWF0dGVyPWUuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXI6ZS5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcj1mdW5jdGlvbih0KXtpZih4LmlzTnVtYmVyKHQpKXtpZighZS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiZcIm51bWVyaWNcIj09PWUuY29uZmlnLnhheGlzLnR5cGUpe2lmKHguaXNOdW1iZXIoZS5jb25maWcueGF4aXMuZGVjaW1hbHNJbkZsb2F0KSlyZXR1cm4gdC50b0ZpeGVkKGUuY29uZmlnLnhheGlzLmRlY2ltYWxzSW5GbG9hdCk7dmFyIGk9ZS5nbG9iYWxzLm1heFgtZS5nbG9iYWxzLm1pblg7cmV0dXJuIGk+MCYmaTwxMDA/dC50b0ZpeGVkKDEpOnQudG9GaXhlZCgwKX1pZihlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKWlmKGUuZ2xvYmFscy5tYXhZLWUuZ2xvYmFscy5taW5ZQXJyPDQpcmV0dXJuIHQudG9GaXhlZCgxKTtyZXR1cm4gdC50b0ZpeGVkKDApfXJldHVybiB0fSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyP2UuZ2xvYmFscy50dEtleUZvcm1hdHRlcj1lLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyOmUuZ2xvYmFscy50dEtleUZvcm1hdHRlcj1lLmdsb2JhbHMueExhYmVsRm9ybWF0dGVyLFwiZnVuY3Rpb25cIj09dHlwZW9mIGUuY29uZmlnLnhheGlzLnRvb2x0aXAuZm9ybWF0dGVyJiYoZS5nbG9iYWxzLnhheGlzVG9vbHRpcEZvcm1hdHRlcj1lLmNvbmZpZy54YXhpcy50b29sdGlwLmZvcm1hdHRlciksKEFycmF5LmlzQXJyYXkoZS5jb25maWcudG9vbHRpcC55KXx8dm9pZCAwIT09ZS5jb25maWcudG9vbHRpcC55LmZvcm1hdHRlcikmJihlLmdsb2JhbHMudHRWYWw9ZS5jb25maWcudG9vbHRpcC55KSx2b2lkIDAhPT1lLmNvbmZpZy50b29sdGlwLnouZm9ybWF0dGVyJiYoZS5nbG9iYWxzLnR0WkZvcm1hdHRlcj1lLmNvbmZpZy50b29sdGlwLnouZm9ybWF0dGVyKSx2b2lkIDAhPT1lLmNvbmZpZy5sZWdlbmQuZm9ybWF0dGVyJiYoZS5nbG9iYWxzLmxlZ2VuZEZvcm1hdHRlcj1lLmNvbmZpZy5sZWdlbmQuZm9ybWF0dGVyKSxlLmNvbmZpZy55YXhpcy5mb3JFYWNoKChmdW5jdGlvbihpLGEpe3ZvaWQgMCE9PWkubGFiZWxzLmZvcm1hdHRlcj9lLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1thXT1pLmxhYmVscy5mb3JtYXR0ZXI6ZS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbYV09ZnVuY3Rpb24ocyl7cmV0dXJuIGUuZ2xvYmFscy54eUNoYXJ0cz9BcnJheS5pc0FycmF5KHMpP3MubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC5kZWZhdWx0WUZvcm1hdHRlcihlLGksYSl9KSk6dC5kZWZhdWx0WUZvcm1hdHRlcihzLGksYSk6c319KSksZS5nbG9iYWxzfX0se2tleTpcImhlYXRtYXBMYWJlbEZvcm1hdHRlcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudztpZihcImhlYXRtYXBcIj09PXQuY29uZmlnLmNoYXJ0LnR5cGUpe3QuZ2xvYmFscy55QXhpc1NjYWxlWzBdLnJlc3VsdD10Lmdsb2JhbHMuc2VyaWVzTmFtZXMuc2xpY2UoKTt2YXIgZT10Lmdsb2JhbHMuc2VyaWVzTmFtZXMucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0Lmxlbmd0aD5lLmxlbmd0aD90OmV9KSwwKTt0Lmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWF4PWUsdC5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ubmljZU1pbj1lfX19XSksdH0oKSxNPWZ1bmN0aW9uKHQpe3ZhciBlLGk9dC5pc1RpbWVsaW5lLGE9dC5jdHgscz10LnNlcmllc0luZGV4LHI9dC5kYXRhUG9pbnRJbmRleCxvPXQueTEsbj10LnkyLGw9dC53LGg9bC5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbc11bcl0sYz1sLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmRbc11bcl0sZD1sLmdsb2JhbHMubGFiZWxzW3JdLGc9bC5jb25maWcuc2VyaWVzW3NdLm5hbWU/bC5jb25maWcuc2VyaWVzW3NdLm5hbWU6XCJcIix1PWwuZ2xvYmFscy50dEtleUZvcm1hdHRlcixwPWwuY29uZmlnLnRvb2x0aXAueS50aXRsZS5mb3JtYXR0ZXIsZj17dzpsLHNlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6cixzdGFydDpoLGVuZDpjfTsoXCJmdW5jdGlvblwiPT10eXBlb2YgcCYmKGc9cChnLGYpKSxudWxsIT09KGU9bC5jb25maWcuc2VyaWVzW3NdLmRhdGFbcl0pJiZ2b2lkIDAhPT1lJiZlLngmJihkPWwuY29uZmlnLnNlcmllc1tzXS5kYXRhW3JdLngpLGkpfHxcImRhdGV0aW1lXCI9PT1sLmNvbmZpZy54YXhpcy50eXBlJiYoZD1uZXcgVChhKS54TGFiZWxGb3JtYXQobC5nbG9iYWxzLnR0S2V5Rm9ybWF0dGVyLGQsZCx7aTp2b2lkIDAsZGF0ZUZvcm1hdHRlcjpuZXcgSShhKS5mb3JtYXREYXRlLHc6bH0pKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiB1JiYoZD11KGQsZikpLE51bWJlci5pc0Zpbml0ZShvKSYmTnVtYmVyLmlzRmluaXRlKG4pJiYoaD1vLGM9bik7dmFyIHg9XCJcIixiPVwiXCIsdj1sLmdsb2JhbHMuY29sb3JzW3NdO2lmKHZvaWQgMD09PWwuY29uZmlnLnRvb2x0aXAueC5mb3JtYXR0ZXIpaWYoXCJkYXRldGltZVwiPT09bC5jb25maWcueGF4aXMudHlwZSl7dmFyIG09bmV3IEkoYSk7eD1tLmZvcm1hdERhdGUobS5nZXREYXRlKGgpLGwuY29uZmlnLnRvb2x0aXAueC5mb3JtYXQpLGI9bS5mb3JtYXREYXRlKG0uZ2V0RGF0ZShjKSxsLmNvbmZpZy50b29sdGlwLnguZm9ybWF0KX1lbHNlIHg9aCxiPWM7ZWxzZSB4PWwuY29uZmlnLnRvb2x0aXAueC5mb3JtYXR0ZXIoaCksYj1sLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyKGMpO3JldHVybntzdGFydDpoLGVuZDpjLHN0YXJ0VmFsOngsZW5kVmFsOmIseWxhYmVsOmQsY29sb3I6dixzZXJpZXNOYW1lOmd9fSxYPWZ1bmN0aW9uKHQpe3ZhciBlPXQuY29sb3IsaT10LnNlcmllc05hbWUsYT10LnlsYWJlbCxzPXQuc3RhcnQscj10LmVuZCxvPXQuc2VyaWVzSW5kZXgsbj10LmRhdGFQb2ludEluZGV4LGw9dC5jdHgudG9vbHRpcC50b29sdGlwTGFiZWxzLmdldEZvcm1hdHRlcnMobyk7cz1sLnlMYkZvcm1hdHRlcihzKSxyPWwueUxiRm9ybWF0dGVyKHIpO3ZhciBoPWwueUxiRm9ybWF0dGVyKHQudy5nbG9iYWxzLnNlcmllc1tvXVtuXSksYz0nPHNwYW4gY2xhc3M9XCJ2YWx1ZSBzdGFydC12YWx1ZVwiPlxcbiAgJy5jb25jYXQocywnXFxuICA8L3NwYW4+IDxzcGFuIGNsYXNzPVwic2VwYXJhdG9yXCI+LTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJ2YWx1ZSBlbmQtdmFsdWVcIj5cXG4gICcpLmNvbmNhdChyLFwiXFxuICA8L3NwYW4+XCIpO3JldHVybic8ZGl2IGNsYXNzPVwiYXBleGNoYXJ0cy10b29sdGlwLXJhbmdlYmFyXCI+PGRpdj4gPHNwYW4gY2xhc3M9XCJzZXJpZXMtbmFtZVwiIHN0eWxlPVwiY29sb3I6ICcrZSsnXCI+JysoaXx8XCJcIikrJzwvc3Bhbj48L2Rpdj48ZGl2PiA8c3BhbiBjbGFzcz1cImNhdGVnb3J5XCI+JythK1wiOiA8L3NwYW4+IFwiKyh0LncuZ2xvYmFscy5jb21ib0NoYXJ0cz9cInJhbmdlQXJlYVwiPT09dC53LmNvbmZpZy5zZXJpZXNbb10udHlwZXx8XCJyYW5nZUJhclwiPT09dC53LmNvbmZpZy5zZXJpZXNbb10udHlwZT9jOlwiPHNwYW4+XCIuY29uY2F0KGgsXCI8L3NwYW4+XCIpOmMpK1wiIDwvZGl2PjwvZGl2PlwifSx6PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5vcHRzPWV9cmV0dXJuIHIodCxbe2tleTpcImxpbmVcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7YW5pbWF0aW9uczp7ZWFzaW5nOlwic3dpbmdcIn19LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITF9LHN0cm9rZTp7d2lkdGg6NSxjdXJ2ZTpcInN0cmFpZ2h0XCJ9LG1hcmtlcnM6e3NpemU6MCxob3Zlcjp7c2l6ZU9mZnNldDo2fX0seGF4aXM6e2Nyb3NzaGFpcnM6e3dpZHRoOjF9fX19fSx7a2V5Olwic3BhcmtsaW5lXCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5vcHRzLnlheGlzWzBdLnNob3c9ITEsdGhpcy5vcHRzLnlheGlzWzBdLnRpdGxlLnRleHQ9XCJcIix0aGlzLm9wdHMueWF4aXNbMF0uYXhpc0JvcmRlci5zaG93PSExLHRoaXMub3B0cy55YXhpc1swXS5heGlzVGlja3Muc2hvdz0hMSx0aGlzLm9wdHMueWF4aXNbMF0uZmxvYXRpbmc9ITA7cmV0dXJuIHguZXh0ZW5kKHQse2dyaWQ6e3Nob3c6ITEscGFkZGluZzp7bGVmdDowLHJpZ2h0OjAsdG9wOjAsYm90dG9tOjB9fSxsZWdlbmQ6e3Nob3c6ITF9LHhheGlzOntsYWJlbHM6e3Nob3c6ITF9LHRvb2x0aXA6e2VuYWJsZWQ6ITF9LGF4aXNCb3JkZXI6e3Nob3c6ITF9LGF4aXNUaWNrczp7c2hvdzohMX19LGNoYXJ0Ont0b29sYmFyOntzaG93OiExfSx6b29tOntlbmFibGVkOiExfX0sZGF0YUxhYmVsczp7ZW5hYmxlZDohMX19KX19LHtrZXk6XCJiYXJcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7c3RhY2tlZDohMSxhbmltYXRpb25zOntlYXNpbmc6XCJzd2luZ1wifX0scGxvdE9wdGlvbnM6e2Jhcjp7ZGF0YUxhYmVsczp7cG9zaXRpb246XCJjZW50ZXJcIn19fSxkYXRhTGFiZWxzOntzdHlsZTp7Y29sb3JzOltcIiNmZmZcIl19LGJhY2tncm91bmQ6e2VuYWJsZWQ6ITF9fSxzdHJva2U6e3dpZHRoOjAsbGluZUNhcDpcInJvdW5kXCJ9LGZpbGw6e29wYWNpdHk6Ljg1fSxsZWdlbmQ6e21hcmtlcnM6e3NoYXBlOlwic3F1YXJlXCIscmFkaXVzOjIsc2l6ZTo4fX0sdG9vbHRpcDp7c2hhcmVkOiExLGludGVyc2VjdDohMH0seGF4aXM6e3Rvb2x0aXA6e2VuYWJsZWQ6ITF9LHRpY2tQbGFjZW1lbnQ6XCJiZXR3ZWVuXCIsY3Jvc3NoYWlyczp7d2lkdGg6XCJiYXJXaWR0aFwiLHBvc2l0aW9uOlwiYmFja1wiLGZpbGw6e3R5cGU6XCJncmFkaWVudFwifSxkcm9wU2hhZG93OntlbmFibGVkOiExfSxzdHJva2U6e3dpZHRoOjB9fX19fX0se2tleTpcImNhbmRsZXN0aWNrXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybntzdHJva2U6e3dpZHRoOjEsY29sb3JzOltcIiMzMzNcIl19LGZpbGw6e29wYWNpdHk6MX0sZGF0YUxhYmVsczp7ZW5hYmxlZDohMX0sdG9vbHRpcDp7c2hhcmVkOiEwLGN1c3RvbTpmdW5jdGlvbihlKXt2YXIgaT1lLnNlcmllc0luZGV4LGE9ZS5kYXRhUG9pbnRJbmRleCxzPWUudztyZXR1cm4gdC5fZ2V0Qm94VG9vbHRpcChzLGksYSxbXCJPcGVuXCIsXCJIaWdoXCIsXCJcIixcIkxvd1wiLFwiQ2xvc2VcIl0sXCJjYW5kbGVzdGlja1wiKX19LHN0YXRlczp7YWN0aXZlOntmaWx0ZXI6e3R5cGU6XCJub25lXCJ9fX0seGF4aXM6e2Nyb3NzaGFpcnM6e3dpZHRoOjF9fX19fSx7a2V5OlwiYm94UGxvdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm57Y2hhcnQ6e2FuaW1hdGlvbnM6e2R5bmFtaWNBbmltYXRpb246e2VuYWJsZWQ6ITF9fX0sc3Ryb2tlOnt3aWR0aDoxLGNvbG9yczpbXCIjMjQyOTJlXCJdfSxkYXRhTGFiZWxzOntlbmFibGVkOiExfSx0b29sdGlwOntzaGFyZWQ6ITAsY3VzdG9tOmZ1bmN0aW9uKGUpe3ZhciBpPWUuc2VyaWVzSW5kZXgsYT1lLmRhdGFQb2ludEluZGV4LHM9ZS53O3JldHVybiB0Ll9nZXRCb3hUb29sdGlwKHMsaSxhLFtcIk1pbmltdW1cIixcIlExXCIsXCJNZWRpYW5cIixcIlEzXCIsXCJNYXhpbXVtXCJdLFwiYm94UGxvdFwiKX19LG1hcmtlcnM6e3NpemU6NSxzdHJva2VXaWR0aDoxLHN0cm9rZUNvbG9yczpcIiMxMTFcIn0seGF4aXM6e2Nyb3NzaGFpcnM6e3dpZHRoOjF9fX19fSx7a2V5OlwicmFuZ2VCYXJcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7YW5pbWF0aW9uczp7YW5pbWF0ZUdyYWR1YWxseTohMX19LHN0cm9rZTp7d2lkdGg6MCxsaW5lQ2FwOlwic3F1YXJlXCJ9LHBsb3RPcHRpb25zOntiYXI6e2JvcmRlclJhZGl1czowLGRhdGFMYWJlbHM6e3Bvc2l0aW9uOlwiY2VudGVyXCJ9fX0sZGF0YUxhYmVsczp7ZW5hYmxlZDohMSxmb3JtYXR0ZXI6ZnVuY3Rpb24odCxlKXtlLmN0eDt2YXIgaT1lLnNlcmllc0luZGV4LGE9ZS5kYXRhUG9pbnRJbmRleCxzPWUudyxyPWZ1bmN0aW9uKCl7dmFyIHQ9cy5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbaV1bYV07cmV0dXJuIHMuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZFtpXVthXS10fTtyZXR1cm4gcy5nbG9iYWxzLmNvbWJvQ2hhcnRzP1wicmFuZ2VCYXJcIj09PXMuY29uZmlnLnNlcmllc1tpXS50eXBlfHxcInJhbmdlQXJlYVwiPT09cy5jb25maWcuc2VyaWVzW2ldLnR5cGU/cigpOnQ6cigpfSxiYWNrZ3JvdW5kOntlbmFibGVkOiExfSxzdHlsZTp7Y29sb3JzOltcIiNmZmZcIl19fSxtYXJrZXJzOntzaXplOjEwfSx0b29sdGlwOntzaGFyZWQ6ITEsZm9sbG93Q3Vyc29yOiEwLGN1c3RvbTpmdW5jdGlvbih0KXtyZXR1cm4gdC53LmNvbmZpZy5wbG90T3B0aW9ucyYmdC53LmNvbmZpZy5wbG90T3B0aW9ucy5iYXImJnQudy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWw/ZnVuY3Rpb24odCl7dmFyIGk9TShlKGUoe30sdCkse30se2lzVGltZWxpbmU6ITB9KSksYT1pLmNvbG9yLHM9aS5zZXJpZXNOYW1lLHI9aS55bGFiZWwsbz1pLnN0YXJ0VmFsLG49aS5lbmRWYWw7cmV0dXJuIFgoZShlKHt9LHQpLHt9LHtjb2xvcjphLHNlcmllc05hbWU6cyx5bGFiZWw6cixzdGFydDpvLGVuZDpufSkpfSh0KTpmdW5jdGlvbih0KXt2YXIgaT1NKHQpLGE9aS5jb2xvcixzPWkuc2VyaWVzTmFtZSxyPWkueWxhYmVsLG89aS5zdGFydCxuPWkuZW5kO3JldHVybiBYKGUoZSh7fSx0KSx7fSx7Y29sb3I6YSxzZXJpZXNOYW1lOnMseWxhYmVsOnIsc3RhcnQ6byxlbmQ6bn0pKX0odCl9fSx4YXhpczp7dGlja1BsYWNlbWVudDpcImJldHdlZW5cIix0b29sdGlwOntlbmFibGVkOiExfSxjcm9zc2hhaXJzOntzdHJva2U6e3dpZHRoOjB9fX19fX0se2tleTpcImR1bWJiZWxsXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaTtyZXR1cm4gbnVsbCE9PShlPXQucGxvdE9wdGlvbnMuYmFyKSYmdm9pZCAwIT09ZSYmZS5iYXJIZWlnaHR8fCh0LnBsb3RPcHRpb25zLmJhci5iYXJIZWlnaHQ9MiksbnVsbCE9PShpPXQucGxvdE9wdGlvbnMuYmFyKSYmdm9pZCAwIT09aSYmaS5jb2x1bW5XaWR0aHx8KHQucGxvdE9wdGlvbnMuYmFyLmNvbHVtbldpZHRoPTIpLHR9fSx7a2V5OlwiYXJlYVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue3N0cm9rZTp7d2lkdGg6NCxmaWxsOnt0eXBlOlwic29saWRcIixncmFkaWVudDp7aW52ZXJzZUNvbG9yczohMSxzaGFkZTpcImxpZ2h0XCIsdHlwZTpcInZlcnRpY2FsXCIsb3BhY2l0eUZyb206LjY1LG9wYWNpdHlUbzouNSxzdG9wczpbMCwxMDAsMTAwXX19fSxmaWxsOnt0eXBlOlwiZ3JhZGllbnRcIixncmFkaWVudDp7aW52ZXJzZUNvbG9yczohMSxzaGFkZTpcImxpZ2h0XCIsdHlwZTpcInZlcnRpY2FsXCIsb3BhY2l0eUZyb206LjY1LG9wYWNpdHlUbzouNSxzdG9wczpbMCwxMDAsMTAwXX19LG1hcmtlcnM6e3NpemU6MCxob3Zlcjp7c2l6ZU9mZnNldDo2fX0sdG9vbHRpcDp7Zm9sbG93Q3Vyc29yOiExfX19fSx7a2V5OlwicmFuZ2VBcmVhXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57c3Ryb2tlOntjdXJ2ZTpcInN0cmFpZ2h0XCIsd2lkdGg6MH0sZmlsbDp7dHlwZTpcInNvbGlkXCIsb3BhY2l0eTouNn0sbWFya2Vyczp7c2l6ZTowfSxzdGF0ZXM6e2hvdmVyOntmaWx0ZXI6e3R5cGU6XCJub25lXCJ9fSxhY3RpdmU6e2ZpbHRlcjp7dHlwZTpcIm5vbmVcIn19fSx0b29sdGlwOntpbnRlcnNlY3Q6ITEsc2hhcmVkOiEwLGZvbGxvd0N1cnNvcjohMCxjdXN0b206ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBpPU0odCksYT1pLmNvbG9yLHM9aS5zZXJpZXNOYW1lLHI9aS55bGFiZWwsbz1pLnN0YXJ0LG49aS5lbmQ7cmV0dXJuIFgoZShlKHt9LHQpLHt9LHtjb2xvcjphLHNlcmllc05hbWU6cyx5bGFiZWw6cixzdGFydDpvLGVuZDpufSkpfSh0KX19fX19LHtrZXk6XCJicnVzaFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB4LmV4dGVuZCh0LHtjaGFydDp7dG9vbGJhcjp7YXV0b1NlbGVjdGVkOlwic2VsZWN0aW9uXCIsc2hvdzohMX0sem9vbTp7ZW5hYmxlZDohMX19LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITF9LHN0cm9rZTp7d2lkdGg6MX0sdG9vbHRpcDp7ZW5hYmxlZDohMX0seGF4aXM6e3Rvb2x0aXA6e2VuYWJsZWQ6ITF9fX0pfX0se2tleTpcInN0YWNrZWQxMDBcIix2YWx1ZTpmdW5jdGlvbih0KXt0LmRhdGFMYWJlbHM9dC5kYXRhTGFiZWxzfHx7fSx0LmRhdGFMYWJlbHMuZm9ybWF0dGVyPXQuZGF0YUxhYmVscy5mb3JtYXR0ZXJ8fHZvaWQgMDt2YXIgZT10LmRhdGFMYWJlbHMuZm9ybWF0dGVyO3JldHVybiB0LnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7dC55YXhpc1tpXS5taW49MCx0LnlheGlzW2ldLm1heD0xMDB9KSksXCJiYXJcIj09PXQuY2hhcnQudHlwZSYmKHQuZGF0YUxhYmVscy5mb3JtYXR0ZXI9ZXx8ZnVuY3Rpb24odCl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIHQmJnQ/dC50b0ZpeGVkKDApK1wiJVwiOnR9KSx0fX0se2tleTpcInN0YWNrZWRCYXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmJhcigpO3JldHVybiBlKGUoe30sdCkse30se3Bsb3RPcHRpb25zOmUoZSh7fSx0LnBsb3RPcHRpb25zKSx7fSx7YmFyOmUoZSh7fSx0LnBsb3RPcHRpb25zLmJhcikse30se2JvcmRlclJhZGl1c0FwcGxpY2F0aW9uOlwiZW5kXCIsYm9yZGVyUmFkaXVzV2hlblN0YWNrZWQ6XCJsYXN0XCJ9KX0pfSl9fSx7a2V5OlwiY29udmVydENhdFRvTnVtZXJpY1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYz0hMCx0fX0se2tleTpcImNvbnZlcnRDYXRUb051bWVyaWNYYXhpc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt0LnhheGlzLnR5cGU9XCJudW1lcmljXCIsdC54YXhpcy5sYWJlbHM9dC54YXhpcy5sYWJlbHN8fHt9LHQueGF4aXMubGFiZWxzLmZvcm1hdHRlcj10LnhheGlzLmxhYmVscy5mb3JtYXR0ZXJ8fGZ1bmN0aW9uKHQpe3JldHVybiB4LmlzTnVtYmVyKHQpP01hdGguZmxvb3IodCk6dH07dmFyIGE9dC54YXhpcy5sYWJlbHMuZm9ybWF0dGVyLHM9dC54YXhpcy5jYXRlZ29yaWVzJiZ0LnhheGlzLmNhdGVnb3JpZXMubGVuZ3RoP3QueGF4aXMuY2F0ZWdvcmllczp0LmxhYmVscztyZXR1cm4gaSYmaS5sZW5ndGgmJihzPWkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90OlN0cmluZyh0KX0pKSkscyYmcy5sZW5ndGgmJih0LnhheGlzLmxhYmVscy5mb3JtYXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHguaXNOdW1iZXIodCk/YShzW01hdGguZmxvb3IodCktMV0pOmEodCl9KSx0LnhheGlzLmNhdGVnb3JpZXM9W10sdC5sYWJlbHM9W10sdC54YXhpcy50aWNrQW1vdW50PXQueGF4aXMudGlja0Ftb3VudHx8XCJkYXRhUG9pbnRzXCIsdH19LHtrZXk6XCJidWJibGVcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntkYXRhTGFiZWxzOntzdHlsZTp7Y29sb3JzOltcIiNmZmZcIl19fSx0b29sdGlwOntzaGFyZWQ6ITEsaW50ZXJzZWN0OiEwfSx4YXhpczp7Y3Jvc3NoYWlyczp7d2lkdGg6MH19LGZpbGw6e3R5cGU6XCJzb2xpZFwiLGdyYWRpZW50OntzaGFkZTpcImxpZ2h0XCIsaW52ZXJzZTohMCxzaGFkZUludGVuc2l0eTouNTUsb3BhY2l0eUZyb206LjQsb3BhY2l0eVRvOi44fX19fX0se2tleTpcInNjYXR0ZXJcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntkYXRhTGFiZWxzOntlbmFibGVkOiExfSx0b29sdGlwOntzaGFyZWQ6ITEsaW50ZXJzZWN0OiEwfSxtYXJrZXJzOntzaXplOjYsc3Ryb2tlV2lkdGg6MSxob3Zlcjp7c2l6ZU9mZnNldDoyfX19fX0se2tleTpcImhlYXRtYXBcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7c3RhY2tlZDohMX0sZmlsbDp7b3BhY2l0eToxfSxkYXRhTGFiZWxzOntzdHlsZTp7Y29sb3JzOltcIiNmZmZcIl19fSxzdHJva2U6e2NvbG9yczpbXCIjZmZmXCJdfSx0b29sdGlwOntmb2xsb3dDdXJzb3I6ITAsbWFya2VyOntzaG93OiExfSx4OntzaG93OiExfX0sbGVnZW5kOntwb3NpdGlvbjpcInRvcFwiLG1hcmtlcnM6e3NoYXBlOlwic3F1YXJlXCIsc2l6ZToxMCxvZmZzZXRZOjJ9fSxncmlkOntwYWRkaW5nOntyaWdodDoyMH19fX19LHtrZXk6XCJ0cmVlbWFwXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e3pvb206e2VuYWJsZWQ6ITF9fSxkYXRhTGFiZWxzOntzdHlsZTp7Zm9udFNpemU6MTQsZm9udFdlaWdodDo2MDAsY29sb3JzOltcIiNmZmZcIl19fSxzdHJva2U6e3Nob3c6ITAsd2lkdGg6Mixjb2xvcnM6W1wiI2ZmZlwiXX0sbGVnZW5kOntzaG93OiExfSxmaWxsOntncmFkaWVudDp7c3RvcHM6WzAsMTAwXX19LHRvb2x0aXA6e2ZvbGxvd0N1cnNvcjohMCx4OntzaG93OiExfX0sZ3JpZDp7cGFkZGluZzp7bGVmdDowLHJpZ2h0OjB9fSx4YXhpczp7Y3Jvc3NoYWlyczp7c2hvdzohMX0sdG9vbHRpcDp7ZW5hYmxlZDohMX19fX19LHtrZXk6XCJwaWVcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7dG9vbGJhcjp7c2hvdzohMX19LHBsb3RPcHRpb25zOntwaWU6e2RvbnV0OntsYWJlbHM6e3Nob3c6ITF9fX19LGRhdGFMYWJlbHM6e2Zvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdC50b0ZpeGVkKDEpK1wiJVwifSxzdHlsZTp7Y29sb3JzOltcIiNmZmZcIl19LGJhY2tncm91bmQ6e2VuYWJsZWQ6ITF9LGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITB9fSxzdHJva2U6e2NvbG9yczpbXCIjZmZmXCJdfSxmaWxsOntvcGFjaXR5OjEsZ3JhZGllbnQ6e3NoYWRlOlwibGlnaHRcIixzdG9wczpbMCwxMDBdfX0sdG9vbHRpcDp7dGhlbWU6XCJkYXJrXCIsZmlsbFNlcmllc0NvbG9yOiEwfSxsZWdlbmQ6e3Bvc2l0aW9uOlwicmlnaHRcIn19fX0se2tleTpcImRvbnV0XCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e3Rvb2xiYXI6e3Nob3c6ITF9fSxkYXRhTGFiZWxzOntmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQudG9GaXhlZCgxKStcIiVcIn0sc3R5bGU6e2NvbG9yczpbXCIjZmZmXCJdfSxiYWNrZ3JvdW5kOntlbmFibGVkOiExfSxkcm9wU2hhZG93OntlbmFibGVkOiEwfX0sc3Ryb2tlOntjb2xvcnM6W1wiI2ZmZlwiXX0sZmlsbDp7b3BhY2l0eToxLGdyYWRpZW50OntzaGFkZTpcImxpZ2h0XCIsc2hhZGVJbnRlbnNpdHk6LjM1LHN0b3BzOls4MCwxMDBdLG9wYWNpdHlGcm9tOjEsb3BhY2l0eVRvOjF9fSx0b29sdGlwOnt0aGVtZTpcImRhcmtcIixmaWxsU2VyaWVzQ29sb3I6ITB9LGxlZ2VuZDp7cG9zaXRpb246XCJyaWdodFwifX19fSx7a2V5OlwicG9sYXJBcmVhXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRzLnlheGlzWzBdLnRpY2tBbW91bnQ9dGhpcy5vcHRzLnlheGlzWzBdLnRpY2tBbW91bnQ/dGhpcy5vcHRzLnlheGlzWzBdLnRpY2tBbW91bnQ6Nix7Y2hhcnQ6e3Rvb2xiYXI6e3Nob3c6ITF9fSxkYXRhTGFiZWxzOntmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQudG9GaXhlZCgxKStcIiVcIn0sZW5hYmxlZDohMX0sc3Ryb2tlOntzaG93OiEwLHdpZHRoOjJ9LGZpbGw6e29wYWNpdHk6Ljd9LHRvb2x0aXA6e3RoZW1lOlwiZGFya1wiLGZpbGxTZXJpZXNDb2xvcjohMH0sbGVnZW5kOntwb3NpdGlvbjpcInJpZ2h0XCJ9fX19LHtrZXk6XCJyYWRhclwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0cy55YXhpc1swXS5sYWJlbHMub2Zmc2V0WT10aGlzLm9wdHMueWF4aXNbMF0ubGFiZWxzLm9mZnNldFk/dGhpcy5vcHRzLnlheGlzWzBdLmxhYmVscy5vZmZzZXRZOjYse2RhdGFMYWJlbHM6e2VuYWJsZWQ6ITEsc3R5bGU6e2ZvbnRTaXplOlwiMTFweFwifX0sc3Ryb2tlOnt3aWR0aDoyfSxtYXJrZXJzOntzaXplOjMsc3Ryb2tlV2lkdGg6MSxzdHJva2VPcGFjaXR5OjF9LGZpbGw6e29wYWNpdHk6LjJ9LHRvb2x0aXA6e3NoYXJlZDohMSxpbnRlcnNlY3Q6ITAsZm9sbG93Q3Vyc29yOiEwfSxncmlkOntzaG93OiExfSx4YXhpczp7bGFiZWxzOntmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHR9LHN0eWxlOntjb2xvcnM6W1wiI2E4YThhOFwiXSxmb250U2l6ZTpcIjExcHhcIn19LHRvb2x0aXA6e2VuYWJsZWQ6ITF9LGNyb3NzaGFpcnM6e3Nob3c6ITF9fX19fSx7a2V5OlwicmFkaWFsQmFyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e2FuaW1hdGlvbnM6e2R5bmFtaWNBbmltYXRpb246e2VuYWJsZWQ6ITAsc3BlZWQ6ODAwfX0sdG9vbGJhcjp7c2hvdzohMX19LGZpbGw6e2dyYWRpZW50OntzaGFkZTpcImRhcmtcIixzaGFkZUludGVuc2l0eTouNCxpbnZlcnNlQ29sb3JzOiExLHR5cGU6XCJkaWFnb25hbDJcIixvcGFjaXR5RnJvbToxLG9wYWNpdHlUbzoxLHN0b3BzOls3MCw5OCwxMDBdfX0sbGVnZW5kOntzaG93OiExLHBvc2l0aW9uOlwicmlnaHRcIn0sdG9vbHRpcDp7ZW5hYmxlZDohMSxmaWxsU2VyaWVzQ29sb3I6ITB9fX19LHtrZXk6XCJfZ2V0Qm94VG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyl7dmFyIHI9dC5nbG9iYWxzLnNlcmllc0NhbmRsZU9bZV1baV0sbz10Lmdsb2JhbHMuc2VyaWVzQ2FuZGxlSFtlXVtpXSxuPXQuZ2xvYmFscy5zZXJpZXNDYW5kbGVNW2VdW2ldLGw9dC5nbG9iYWxzLnNlcmllc0NhbmRsZUxbZV1baV0saD10Lmdsb2JhbHMuc2VyaWVzQ2FuZGxlQ1tlXVtpXTtyZXR1cm4gdC5jb25maWcuc2VyaWVzW2VdLnR5cGUmJnQuY29uZmlnLnNlcmllc1tlXS50eXBlIT09cz8nPGRpdiBjbGFzcz1cImFwZXhjaGFydHMtY3VzdG9tLXRvb2x0aXBcIj5cXG4gICAgICAgICAgJy5jb25jYXQodC5jb25maWcuc2VyaWVzW2VdLm5hbWU/dC5jb25maWcuc2VyaWVzW2VdLm5hbWU6XCJzZXJpZXMtXCIrKGUrMSksXCI6IDxzdHJvbmc+XCIpLmNvbmNhdCh0Lmdsb2JhbHMuc2VyaWVzW2VdW2ldLFwiPC9zdHJvbmc+XFxuICAgICAgICA8L2Rpdj5cIik6JzxkaXYgY2xhc3M9XCJhcGV4Y2hhcnRzLXRvb2x0aXAtYm94IGFwZXhjaGFydHMtdG9vbHRpcC0nLmNvbmNhdCh0LmNvbmZpZy5jaGFydC50eXBlLCdcIj4nKStcIjxkaXY+XCIuY29uY2F0KGFbMF0sJzogPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPicpK3IrXCI8L3NwYW4+PC9kaXY+XCIrXCI8ZGl2PlwiLmNvbmNhdChhWzFdLCc6IDxzcGFuIGNsYXNzPVwidmFsdWVcIj4nKStvK1wiPC9zcGFuPjwvZGl2PlwiKyhuP1wiPGRpdj5cIi5jb25jYXQoYVsyXSwnOiA8c3BhbiBjbGFzcz1cInZhbHVlXCI+JykrbitcIjwvc3Bhbj48L2Rpdj5cIjpcIlwiKStcIjxkaXY+XCIuY29uY2F0KGFbM10sJzogPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPicpK2wrXCI8L3NwYW4+PC9kaXY+XCIrXCI8ZGl2PlwiLmNvbmNhdChhWzRdLCc6IDxzcGFuIGNsYXNzPVwidmFsdWVcIj4nKStoK1wiPC9zcGFuPjwvZGl2PjwvZGl2PlwifX1dKSx0fSgpLEU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLm9wdHM9ZX1yZXR1cm4gcih0LFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQucmVzcG9uc2l2ZU92ZXJyaWRlLGE9dGhpcy5vcHRzLHM9bmV3IEwscj1uZXcgeihhKTt0aGlzLmNoYXJ0VHlwZT1hLmNoYXJ0LnR5cGUsYT10aGlzLmV4dGVuZFlBeGlzKGEpLGE9dGhpcy5leHRlbmRBbm5vdGF0aW9ucyhhKTt2YXIgbz1zLmluaXQoKSxuPXt9O2lmKGEmJlwib2JqZWN0XCI9PT1pKGEpKXt2YXIgbCxoLGMsZCxnLHUscD17fTtwPS0xIT09W1wibGluZVwiLFwiYXJlYVwiLFwiYmFyXCIsXCJjYW5kbGVzdGlja1wiLFwiYm94UGxvdFwiLFwicmFuZ2VCYXJcIixcInJhbmdlQXJlYVwiLFwiYnViYmxlXCIsXCJzY2F0dGVyXCIsXCJoZWF0bWFwXCIsXCJ0cmVlbWFwXCIsXCJwaWVcIixcInBvbGFyQXJlYVwiLFwiZG9udXRcIixcInJhZGFyXCIsXCJyYWRpYWxCYXJcIl0uaW5kZXhPZihhLmNoYXJ0LnR5cGUpP3JbYS5jaGFydC50eXBlXSgpOnIubGluZSgpLGEuY2hhcnQuc3RhY2tlZCYmXCJiYXJcIj09PWEuY2hhcnQudHlwZSYmKHA9ci5zdGFja2VkQmFycygpKSxudWxsIT09KGw9YS5jaGFydC5icnVzaCkmJnZvaWQgMCE9PWwmJmwuZW5hYmxlZCYmKHA9ci5icnVzaChwKSksYS5jaGFydC5zdGFja2VkJiZcIjEwMCVcIj09PWEuY2hhcnQuc3RhY2tUeXBlJiYoYT1yLnN0YWNrZWQxMDAoYSkpLG51bGwhPT0oaD1hLnBsb3RPcHRpb25zKSYmdm9pZCAwIT09aCYmbnVsbCE9PShjPWguYmFyKSYmdm9pZCAwIT09YyYmYy5pc0R1bWJiZWxsJiYoYT1yLmR1bWJiZWxsKGEpKSx0aGlzLmNoZWNrRm9yRGFya1RoZW1lKHdpbmRvdy5BcGV4KSx0aGlzLmNoZWNrRm9yRGFya1RoZW1lKGEpLGEueGF4aXM9YS54YXhpc3x8d2luZG93LkFwZXgueGF4aXN8fHt9LGV8fChhLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYz0hMSksKG51bGwhPT0oZD0oYT10aGlzLmNoZWNrRm9yQ2F0VG9OdW1lcmljWEF4aXModGhpcy5jaGFydFR5cGUscCxhKSkuY2hhcnQuc3BhcmtsaW5lKSYmdm9pZCAwIT09ZCYmZC5lbmFibGVkfHxudWxsIT09KGc9d2luZG93LkFwZXguY2hhcnQpJiZ2b2lkIDAhPT1nJiZudWxsIT09KHU9Zy5zcGFya2xpbmUpJiZ2b2lkIDAhPT11JiZ1LmVuYWJsZWQpJiYocD1yLnNwYXJrbGluZShwKSksbj14LmV4dGVuZChvLHApfXZhciBmPXguZXh0ZW5kKG4sd2luZG93LkFwZXgpO3JldHVybiBvPXguZXh0ZW5kKGYsYSksbz10aGlzLmhhbmRsZVVzZXJJbnB1dEVycm9ycyhvKX19LHtrZXk6XCJjaGVja0ZvckNhdFRvTnVtZXJpY1hBeGlzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhLHMscj1uZXcgeihpKSxvPShcImJhclwiPT09dHx8XCJib3hQbG90XCI9PT10KSYmKG51bGw9PT0oYT1pLnBsb3RPcHRpb25zKXx8dm9pZCAwPT09YXx8bnVsbD09PShzPWEuYmFyKXx8dm9pZCAwPT09cz92b2lkIDA6cy5ob3Jpem9udGFsKSxuPVwicGllXCI9PT10fHxcInBvbGFyQXJlYVwiPT09dHx8XCJkb251dFwiPT09dHx8XCJyYWRhclwiPT09dHx8XCJyYWRpYWxCYXJcIj09PXR8fFwiaGVhdG1hcFwiPT09dCxsPVwiZGF0ZXRpbWVcIiE9PWkueGF4aXMudHlwZSYmXCJudW1lcmljXCIhPT1pLnhheGlzLnR5cGUsaD1pLnhheGlzLnRpY2tQbGFjZW1lbnQ/aS54YXhpcy50aWNrUGxhY2VtZW50OmUueGF4aXMmJmUueGF4aXMudGlja1BsYWNlbWVudDtyZXR1cm4gb3x8bnx8IWx8fFwiYmV0d2VlblwiPT09aHx8KGk9ci5jb252ZXJ0Q2F0VG9OdW1lcmljKGkpKSxpfX0se2tleTpcImV4dGVuZFlBeGlzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1uZXcgTDsodm9pZCAwPT09dC55YXhpc3x8IXQueWF4aXN8fEFycmF5LmlzQXJyYXkodC55YXhpcykmJjA9PT10LnlheGlzLmxlbmd0aCkmJih0LnlheGlzPXt9KSx0LnlheGlzLmNvbnN0cnVjdG9yIT09QXJyYXkmJndpbmRvdy5BcGV4LnlheGlzJiZ3aW5kb3cuQXBleC55YXhpcy5jb25zdHJ1Y3RvciE9PUFycmF5JiYodC55YXhpcz14LmV4dGVuZCh0LnlheGlzLHdpbmRvdy5BcGV4LnlheGlzKSksdC55YXhpcy5jb25zdHJ1Y3RvciE9PUFycmF5P3QueWF4aXM9W3guZXh0ZW5kKGkueUF4aXMsdC55YXhpcyldOnQueWF4aXM9eC5leHRlbmRBcnJheSh0LnlheGlzLGkueUF4aXMpO3ZhciBhPSExO3QueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5sb2dhcml0aG1pYyYmKGE9ITApfSkpO3ZhciBzPXQuc2VyaWVzO3JldHVybiBlJiYhcyYmKHM9ZS5jb25maWcuc2VyaWVzKSxhJiZzLmxlbmd0aCE9PXQueWF4aXMubGVuZ3RoJiZzLmxlbmd0aCYmKHQueWF4aXM9cy5tYXAoKGZ1bmN0aW9uKGUsYSl7aWYoZS5uYW1lfHwoc1thXS5uYW1lPVwic2VyaWVzLVwiLmNvbmNhdChhKzEpKSx0LnlheGlzW2FdKXJldHVybiB0LnlheGlzW2FdLnNlcmllc05hbWU9c1thXS5uYW1lLHQueWF4aXNbYV07dmFyIHI9eC5leHRlbmQoaS55QXhpcyx0LnlheGlzWzBdKTtyZXR1cm4gci5zaG93PSExLHJ9KSkpLGEmJnMubGVuZ3RoPjEmJnMubGVuZ3RoIT09dC55YXhpcy5sZW5ndGgmJmNvbnNvbGUud2FybihcIkEgbXVsdGktc2VyaWVzIGxvZ2FyaXRobWljIGNoYXJ0IHNob3VsZCBoYXZlIGVxdWFsIG51bWJlciBvZiBzZXJpZXMgYW5kIHktYXhlcy4gUGxlYXNlIG1ha2Ugc3VyZSB0byBlcXVhbGl6ZSBib3RoLlwiKSx0fX0se2tleTpcImV4dGVuZEFubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQuYW5ub3RhdGlvbnMmJih0LmFubm90YXRpb25zPXt9LHQuYW5ub3RhdGlvbnMueWF4aXM9W10sdC5hbm5vdGF0aW9ucy54YXhpcz1bXSx0LmFubm90YXRpb25zLnBvaW50cz1bXSksdD10aGlzLmV4dGVuZFlBeGlzQW5ub3RhdGlvbnModCksdD10aGlzLmV4dGVuZFhBeGlzQW5ub3RhdGlvbnModCksdD10aGlzLmV4dGVuZFBvaW50QW5ub3RhdGlvbnModCl9fSx7a2V5OlwiZXh0ZW5kWUF4aXNBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBMO3JldHVybiB0LmFubm90YXRpb25zLnlheGlzPXguZXh0ZW5kQXJyYXkodm9pZCAwIT09dC5hbm5vdGF0aW9ucy55YXhpcz90LmFubm90YXRpb25zLnlheGlzOltdLGUueUF4aXNBbm5vdGF0aW9uKSx0fX0se2tleTpcImV4dGVuZFhBeGlzQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgTDtyZXR1cm4gdC5hbm5vdGF0aW9ucy54YXhpcz14LmV4dGVuZEFycmF5KHZvaWQgMCE9PXQuYW5ub3RhdGlvbnMueGF4aXM/dC5hbm5vdGF0aW9ucy54YXhpczpbXSxlLnhBeGlzQW5ub3RhdGlvbiksdH19LHtrZXk6XCJleHRlbmRQb2ludEFubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9bmV3IEw7cmV0dXJuIHQuYW5ub3RhdGlvbnMucG9pbnRzPXguZXh0ZW5kQXJyYXkodm9pZCAwIT09dC5hbm5vdGF0aW9ucy5wb2ludHM/dC5hbm5vdGF0aW9ucy5wb2ludHM6W10sZS5wb2ludEFubm90YXRpb24pLHR9fSx7a2V5OlwiY2hlY2tGb3JEYXJrVGhlbWVcIix2YWx1ZTpmdW5jdGlvbih0KXt0LnRoZW1lJiZcImRhcmtcIj09PXQudGhlbWUubW9kZSYmKHQudG9vbHRpcHx8KHQudG9vbHRpcD17fSksXCJsaWdodFwiIT09dC50b29sdGlwLnRoZW1lJiYodC50b29sdGlwLnRoZW1lPVwiZGFya1wiKSx0LmNoYXJ0LmZvcmVDb2xvcnx8KHQuY2hhcnQuZm9yZUNvbG9yPVwiI2Y2ZjdmOFwiKSx0LmNoYXJ0LmJhY2tncm91bmR8fCh0LmNoYXJ0LmJhY2tncm91bmQ9XCIjNDI0MjQyXCIpLHQudGhlbWUucGFsZXR0ZXx8KHQudGhlbWUucGFsZXR0ZT1cInBhbGV0dGU0XCIpKX19LHtrZXk6XCJoYW5kbGVVc2VySW5wdXRFcnJvcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10O2lmKGUudG9vbHRpcC5zaGFyZWQmJmUudG9vbHRpcC5pbnRlcnNlY3QpdGhyb3cgbmV3IEVycm9yKFwidG9vbHRpcC5zaGFyZWQgY2Fubm90IGJlIGVuYWJsZWQgd2hlbiB0b29sdGlwLmludGVyc2VjdCBpcyB0cnVlLiBUdXJuIG9mZiBhbnkgb3RoZXIgb3B0aW9uIGJ5IHNldHRpbmcgaXQgdG8gZmFsc2UuXCIpO2lmKFwiYmFyXCI9PT1lLmNoYXJ0LnR5cGUmJmUucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWwpe2lmKGUueWF4aXMubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKFwiTXVsdGlwbGUgWSBBeGlzIGZvciBiYXJzIGFyZSBub3Qgc3VwcG9ydGVkLiBTd2l0Y2ggdG8gY29sdW1uIGNoYXJ0IGJ5IHNldHRpbmcgcGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWw9ZmFsc2VcIik7ZS55YXhpc1swXS5yZXZlcnNlZCYmKGUueWF4aXNbMF0ub3Bwb3NpdGU9ITApLGUueGF4aXMudG9vbHRpcC5lbmFibGVkPSExLGUueWF4aXNbMF0udG9vbHRpcC5lbmFibGVkPSExLGUuY2hhcnQuem9vbS5lbmFibGVkPSExfXJldHVyblwiYmFyXCIhPT1lLmNoYXJ0LnR5cGUmJlwicmFuZ2VCYXJcIiE9PWUuY2hhcnQudHlwZXx8ZS50b29sdGlwLnNoYXJlZCYmXCJiYXJXaWR0aFwiPT09ZS54YXhpcy5jcm9zc2hhaXJzLndpZHRoJiZlLnNlcmllcy5sZW5ndGg+MSYmKGUueGF4aXMuY3Jvc3NoYWlycy53aWR0aD1cInRpY2tXaWR0aFwiKSxcImNhbmRsZXN0aWNrXCIhPT1lLmNoYXJ0LnR5cGUmJlwiYm94UGxvdFwiIT09ZS5jaGFydC50eXBlfHxlLnlheGlzWzBdLnJldmVyc2VkJiYoY29uc29sZS53YXJuKFwiUmV2ZXJzZWQgeS1heGlzIGluIFwiLmNvbmNhdChlLmNoYXJ0LnR5cGUsXCIgY2hhcnQgaXMgbm90IHN1cHBvcnRlZC5cIikpLGUueWF4aXNbMF0ucmV2ZXJzZWQ9ITEpLGV9fV0pLHR9KCksWT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXthKHRoaXMsdCl9cmV0dXJuIHIodCxbe2tleTpcImluaXRHbG9iYWxWYXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dC5zZXJpZXM9W10sdC5zZXJpZXNDYW5kbGVPPVtdLHQuc2VyaWVzQ2FuZGxlSD1bXSx0LnNlcmllc0NhbmRsZU09W10sdC5zZXJpZXNDYW5kbGVMPVtdLHQuc2VyaWVzQ2FuZGxlQz1bXSx0LnNlcmllc1JhbmdlU3RhcnQ9W10sdC5zZXJpZXNSYW5nZUVuZD1bXSx0LnNlcmllc1JhbmdlPVtdLHQuc2VyaWVzUGVyY2VudD1bXSx0LnNlcmllc0dvYWxzPVtdLHQuc2VyaWVzWD1bXSx0LnNlcmllc1o9W10sdC5zZXJpZXNOYW1lcz1bXSx0LnNlcmllc1RvdGFscz1bXSx0LnNlcmllc0xvZz1bXSx0LnNlcmllc0NvbG9ycz1bXSx0LnN0YWNrZWRTZXJpZXNUb3RhbHM9W10sdC5zZXJpZXNYdmFsdWVzPVtdLHQuc2VyaWVzWXZhbHVlcz1bXSx0LmxhYmVscz1bXSx0Lmhhc1hheGlzR3JvdXBzPSExLHQuZ3JvdXBzPVtdLHQuaGFzU2VyaWVzR3JvdXBzPSExLHQuc2VyaWVzR3JvdXBzPVtdLHQuY2F0ZWdvcnlMYWJlbHM9W10sdC50aW1lc2NhbGVMYWJlbHM9W10sdC5ub0xhYmVsc1Byb3ZpZGVkPSExLHQucmVzaXplVGltZXI9bnVsbCx0LnNlbGVjdGlvblJlc2l6ZVRpbWVyPW51bGwsdC5kZWxheWVkRWxlbWVudHM9W10sdC5wb2ludHNBcnJheT1bXSx0LmRhdGFMYWJlbHNSZWN0cz1bXSx0LmlzWE51bWVyaWM9ITEsdC5za2lwTGFzdFRpbWVsaW5lbGFiZWw9ITEsdC5za2lwRmlyc3RUaW1lbGluZWxhYmVsPSExLHQuaXNEYXRhWFlaPSExLHQuaXNNdWx0aUxpbmVYPSExLHQuaXNNdWx0aXBsZVlBeGlzPSExLHQubWF4WT0tTnVtYmVyLk1BWF9WQUxVRSx0Lm1pblk9TnVtYmVyLk1JTl9WQUxVRSx0Lm1pbllBcnI9W10sdC5tYXhZQXJyPVtdLHQubWF4WD0tTnVtYmVyLk1BWF9WQUxVRSx0Lm1pblg9TnVtYmVyLk1BWF9WQUxVRSx0LmluaXRpYWxNYXhYPS1OdW1iZXIuTUFYX1ZBTFVFLHQuaW5pdGlhbE1pblg9TnVtYmVyLk1BWF9WQUxVRSx0Lm1heERhdGU9MCx0Lm1pbkRhdGU9TnVtYmVyLk1BWF9WQUxVRSx0Lm1pblo9TnVtYmVyLk1BWF9WQUxVRSx0Lm1heFo9LU51bWJlci5NQVhfVkFMVUUsdC5taW5YRGlmZj1OdW1iZXIuTUFYX1ZBTFVFLHQueUF4aXNTY2FsZT1bXSx0LnhBeGlzU2NhbGU9bnVsbCx0LnhBeGlzVGlja3NQb3NpdGlvbnM9W10sdC55TGFiZWxzQ29vcmRzPVtdLHQueVRpdGxlQ29vcmRzPVtdLHQuYmFyUGFkRm9yTnVtZXJpY0F4aXM9MCx0LnBhZEhvcml6b250YWw9MCx0LnhSYW5nZT0wLHQueVJhbmdlPVtdLHQuelJhbmdlPTAsdC5kYXRhUG9pbnRzPTAsdC54VGlja0Ftb3VudD0wfX0se2tleTpcImdsb2JhbFZhcnNcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm57Y2hhcnRJRDpudWxsLGN1aWQ6bnVsbCxldmVudHM6e2JlZm9yZU1vdW50OltdLG1vdW50ZWQ6W10sdXBkYXRlZDpbXSxjbGlja2VkOltdLHNlbGVjdGlvbjpbXSxkYXRhUG9pbnRTZWxlY3Rpb246W10sem9vbWVkOltdLHNjcm9sbGVkOltdfSxjb2xvcnM6W10sY2xpZW50WDpudWxsLGNsaWVudFk6bnVsbCxmaWxsOntjb2xvcnM6W119LHN0cm9rZTp7Y29sb3JzOltdfSxkYXRhTGFiZWxzOntzdHlsZTp7Y29sb3JzOltdfX0scmFkYXJQb2x5Z29uczp7ZmlsbDp7Y29sb3JzOltdfX0sbWFya2Vyczp7Y29sb3JzOltdLHNpemU6dC5tYXJrZXJzLnNpemUsbGFyZ2VzdFNpemU6MH0sYW5pbWF0aW9uRW5kZWQ6ITEsaXNUb3VjaERldmljZTpcIm9udG91Y2hzdGFydFwiaW4gd2luZG93fHxuYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50cyxpc0RpcnR5OiExLGlzRXhlY0NhbGxlZDohMSxpbml0aWFsQ29uZmlnOm51bGwsaW5pdGlhbFNlcmllczpbXSxsYXN0WEF4aXM6W10sbGFzdFlBeGlzOltdLGNvbHVtblNlcmllczpudWxsLGxhYmVsczpbXSx0aW1lc2NhbGVMYWJlbHM6W10sbm9MYWJlbHNQcm92aWRlZDohMSxhbGxTZXJpZXNDb2xsYXBzZWQ6ITEsY29sbGFwc2VkU2VyaWVzOltdLGNvbGxhcHNlZFNlcmllc0luZGljZXM6W10sYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzOltdLGFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXM6W10scmlzaW5nU2VyaWVzOltdLGRhdGFGb3JtYXRYTnVtZXJpYzohMSxjYXB0dXJlZFNlcmllc0luZGV4Oi0xLGNhcHR1cmVkRGF0YVBvaW50SW5kZXg6LTEsc2VsZWN0ZWREYXRhUG9pbnRzOltdLGdvbGRlblBhZGRpbmc6MzUsaW52YWxpZExvZ1NjYWxlOiExLGlnbm9yZVlBeGlzSW5kZXhlczpbXSx5QXhpc1NhbWVTY2FsZUluZGljZXM6W10sbWF4VmFsc0luQXJyYXlJbmRleDowLHJhZGlhbFNpemU6MCxzZWxlY3Rpb246dm9pZCAwLHpvb21FbmFibGVkOlwiem9vbVwiPT09dC5jaGFydC50b29sYmFyLmF1dG9TZWxlY3RlZCYmdC5jaGFydC50b29sYmFyLnRvb2xzLnpvb20mJnQuY2hhcnQuem9vbS5lbmFibGVkLHBhbkVuYWJsZWQ6XCJwYW5cIj09PXQuY2hhcnQudG9vbGJhci5hdXRvU2VsZWN0ZWQmJnQuY2hhcnQudG9vbGJhci50b29scy5wYW4sc2VsZWN0aW9uRW5hYmxlZDpcInNlbGVjdGlvblwiPT09dC5jaGFydC50b29sYmFyLmF1dG9TZWxlY3RlZCYmdC5jaGFydC50b29sYmFyLnRvb2xzLnNlbGVjdGlvbix5YXhpczpudWxsLG1vdXNlZG93bjohMSxsYXN0Q2xpZW50UG9zaXRpb246e30sdmlzaWJsZVhSYW5nZTp2b2lkIDAseVZhbHVlRGVjaW1hbDowLHRvdGFsOjAsU1ZHTlM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHN2Z1dpZHRoOjAsc3ZnSGVpZ2h0OjAsbm9EYXRhOiExLGxvY2FsZTp7fSxkb206e30sbWVtb3J5OnttZXRob2RzVG9FeGVjOltdfSxzaG91bGRBbmltYXRlOiEwLHNraXBMYXN0VGltZWxpbmVsYWJlbDohMSxza2lwRmlyc3RUaW1lbGluZWxhYmVsOiExLGRlbGF5ZWRFbGVtZW50czpbXSxheGlzQ2hhcnRzOiEwLGlzRGF0YVhZWjohMSxyZXNpemVkOiExLHJlc2l6ZVRpbWVyOm51bGwsY29tYm9DaGFydHM6ITEsZGF0YUNoYW5nZWQ6ITEscHJldmlvdXNQYXRoczpbXSxhbGxTZXJpZXNIYXNFcXVhbFg6ITAscG9pbnRzQXJyYXk6W10sZGF0YUxhYmVsc1JlY3RzOltdLGxhc3REcmF3bkRhdGFMYWJlbHNJbmRleGVzOltdLGhhc051bGxWYWx1ZXM6ITEsZWFzaW5nOm51bGwsem9vbWVkOiExLGdyaWRXaWR0aDowLGdyaWRIZWlnaHQ6MCxyb3RhdGVYTGFiZWxzOiExLGRlZmF1bHRMYWJlbHM6ITEseExhYmVsRm9ybWF0dGVyOnZvaWQgMCx5TGFiZWxGb3JtYXR0ZXJzOltdLHhheGlzVG9vbHRpcEZvcm1hdHRlcjp2b2lkIDAsdHRLZXlGb3JtYXR0ZXI6dm9pZCAwLHR0VmFsOnZvaWQgMCx0dFpGb3JtYXR0ZXI6dm9pZCAwLExJTkVfSEVJR0hUX1JBVElPOjEuNjE4LHhBeGlzTGFiZWxzSGVpZ2h0OjAseEF4aXNHcm91cExhYmVsc0hlaWdodDowLHhBeGlzTGFiZWxzV2lkdGg6MCx5QXhpc0xhYmVsc1dpZHRoOjAsc2NhbGVYOjEsc2NhbGVZOjEsdHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCx0cmFuc2xhdGVZQXhpc1g6W10seUF4aXNXaWR0aHM6W10sdHJhbnNsYXRlWEF4aXNZOjAsdHJhbnNsYXRlWEF4aXNYOjAsdG9vbHRpcDpudWxsfX19LHtrZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nbG9iYWxWYXJzKHQpO3JldHVybiB0aGlzLmluaXRHbG9iYWxWYXJzKGUpLGUuaW5pdGlhbENvbmZpZz14LmV4dGVuZCh7fSx0KSxlLmluaXRpYWxTZXJpZXM9eC5jbG9uZSh0LnNlcmllcyksZS5sYXN0WEF4aXM9eC5jbG9uZShlLmluaXRpYWxDb25maWcueGF4aXMpLGUubGFzdFlBeGlzPXguY2xvbmUoZS5pbml0aWFsQ29uZmlnLnlheGlzKSxlfX1dKSx0fSgpLEY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLm9wdHM9ZX1yZXR1cm4gcih0LFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9bmV3IEUodGhpcy5vcHRzKS5pbml0KHtyZXNwb25zaXZlT3ZlcnJpZGU6ITF9KTtyZXR1cm57Y29uZmlnOnQsZ2xvYmFsczoobmV3IFkpLmluaXQodCl9fX1dKSx0fSgpLFI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5vcHRzPW51bGwsdGhpcy5zZXJpZXNJbmRleD0wfXJldHVybiByKHQsW3trZXk6XCJjbGlwcGVkSW1nQXJlYVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPWUuY29uZmlnLGE9cGFyc2VJbnQoZS5nbG9iYWxzLmdyaWRXaWR0aCwxMCkscz1wYXJzZUludChlLmdsb2JhbHMuZ3JpZEhlaWdodCwxMCkscj1hPnM/YTpzLG89dC5pbWFnZSxuPTAsbD0wO3ZvaWQgMD09PXQud2lkdGgmJnZvaWQgMD09PXQuaGVpZ2h0P3ZvaWQgMCE9PWkuZmlsbC5pbWFnZS53aWR0aCYmdm9pZCAwIT09aS5maWxsLmltYWdlLmhlaWdodD8obj1pLmZpbGwuaW1hZ2Uud2lkdGgrMSxsPWkuZmlsbC5pbWFnZS5oZWlnaHQpOihuPXIrMSxsPXIpOihuPXQud2lkdGgsbD10LmhlaWdodCk7dmFyIGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuZ2xvYmFscy5TVkdOUyxcInBhdHRlcm5cIik7bS5zZXRBdHRycyhoLHtpZDp0LnBhdHRlcm5JRCxwYXR0ZXJuVW5pdHM6dC5wYXR0ZXJuVW5pdHM/dC5wYXR0ZXJuVW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwiLHdpZHRoOm4rXCJweFwiLGhlaWdodDpsK1wicHhcIn0pO3ZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLmdsb2JhbHMuU1ZHTlMsXCJpbWFnZVwiKTtoLmFwcGVuZENoaWxkKGMpLGMuc2V0QXR0cmlidXRlTlMod2luZG93LlNWRy54bGluayxcImhyZWZcIixvKSxtLnNldEF0dHJzKGMse3g6MCx5OjAscHJlc2VydmVBc3BlY3RSYXRpbzpcIm5vbmVcIix3aWR0aDpuK1wicHhcIixoZWlnaHQ6bCtcInB4XCJ9KSxjLnN0eWxlLm9wYWNpdHk9dC5vcGFjaXR5LGUuZ2xvYmFscy5kb20uZWxEZWZzLm5vZGUuYXBwZW5kQ2hpbGQoaCl9fSx7a2V5OlwiZ2V0U2VyaWVzSW5kZXhcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7cmV0dXJuKFwiYmFyXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlfHxcInJhbmdlQmFyXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlKSYmZS5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRpc3RyaWJ1dGVkfHxcImhlYXRtYXBcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGV8fFwidHJlZW1hcFwiPT09ZS5jb25maWcuY2hhcnQudHlwZT90aGlzLnNlcmllc0luZGV4PXQuc2VyaWVzTnVtYmVyOnRoaXMuc2VyaWVzSW5kZXg9dC5zZXJpZXNOdW1iZXIlZS5nbG9iYWxzLnNlcmllcy5sZW5ndGgsdGhpcy5zZXJpZXNJbmRleH19LHtrZXk6XCJmaWxsUGF0aFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudzt0aGlzLm9wdHM9dDt2YXIgaSxhLHMscj10aGlzLncuY29uZmlnO3RoaXMuc2VyaWVzSW5kZXg9dGhpcy5nZXRTZXJpZXNJbmRleCh0KTt2YXIgbz10aGlzLmdldEZpbGxDb2xvcnMoKVt0aGlzLnNlcmllc0luZGV4XTt2b2lkIDAhPT1lLmdsb2JhbHMuc2VyaWVzQ29sb3JzW3RoaXMuc2VyaWVzSW5kZXhdJiYobz1lLmdsb2JhbHMuc2VyaWVzQ29sb3JzW3RoaXMuc2VyaWVzSW5kZXhdKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBvJiYobz1vKHtzZXJpZXNJbmRleDp0aGlzLnNlcmllc0luZGV4LGRhdGFQb2ludEluZGV4OnQuZGF0YVBvaW50SW5kZXgsdmFsdWU6dC52YWx1ZSx3OmV9KSk7dmFyIG49dC5maWxsVHlwZT90LmZpbGxUeXBlOnRoaXMuZ2V0RmlsbFR5cGUodGhpcy5zZXJpZXNJbmRleCksbD1BcnJheS5pc0FycmF5KHIuZmlsbC5vcGFjaXR5KT9yLmZpbGwub3BhY2l0eVt0aGlzLnNlcmllc0luZGV4XTpyLmZpbGwub3BhY2l0eTt0LmNvbG9yJiYobz10LmNvbG9yKTt2YXIgaD1vO2lmKC0xPT09by5pbmRleE9mKFwicmdiXCIpP28ubGVuZ3RoPDkmJihoPXguaGV4VG9SZ2JhKG8sbCkpOm8uaW5kZXhPZihcInJnYmFcIik+LTEmJihsPXguZ2V0T3BhY2l0eUZyb21SR0JBKG8pKSx0Lm9wYWNpdHkmJihsPXQub3BhY2l0eSksXCJwYXR0ZXJuXCI9PT1uJiYoYT10aGlzLmhhbmRsZVBhdHRlcm5GaWxsKHtmaWxsQ29uZmlnOnQuZmlsbENvbmZpZyxwYXR0ZXJuRmlsbDphLGZpbGxDb2xvcjpvLGZpbGxPcGFjaXR5OmwsZGVmYXVsdENvbG9yOmh9KSksXCJncmFkaWVudFwiPT09biYmKHM9dGhpcy5oYW5kbGVHcmFkaWVudEZpbGwoe2ZpbGxDb25maWc6dC5maWxsQ29uZmlnLGZpbGxDb2xvcjpvLGZpbGxPcGFjaXR5OmwsaTp0aGlzLnNlcmllc0luZGV4fSkpLFwiaW1hZ2VcIj09PW4pe3ZhciBjPXIuZmlsbC5pbWFnZS5zcmMsZD10LnBhdHRlcm5JRD90LnBhdHRlcm5JRDpcIlwiO3RoaXMuY2xpcHBlZEltZ0FyZWEoe29wYWNpdHk6bCxpbWFnZTpBcnJheS5pc0FycmF5KGMpP3Quc2VyaWVzTnVtYmVyPGMubGVuZ3RoP2NbdC5zZXJpZXNOdW1iZXJdOmNbMF06Yyx3aWR0aDp0LndpZHRoP3Qud2lkdGg6dm9pZCAwLGhlaWdodDp0LmhlaWdodD90LmhlaWdodDp2b2lkIDAscGF0dGVyblVuaXRzOnQucGF0dGVyblVuaXRzLHBhdHRlcm5JRDpcInBhdHRlcm5cIi5jb25jYXQoZS5nbG9iYWxzLmN1aWQpLmNvbmNhdCh0LnNlcmllc051bWJlcisxKS5jb25jYXQoZCl9KSxpPVwidXJsKCNwYXR0ZXJuXCIuY29uY2F0KGUuZ2xvYmFscy5jdWlkKS5jb25jYXQodC5zZXJpZXNOdW1iZXIrMSkuY29uY2F0KGQsXCIpXCIpfWVsc2UgaT1cImdyYWRpZW50XCI9PT1uP3M6XCJwYXR0ZXJuXCI9PT1uP2E6aDtyZXR1cm4gdC5zb2xpZCYmKGk9aCksaX19LHtrZXk6XCJnZXRGaWxsVHlwZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztyZXR1cm4gQXJyYXkuaXNBcnJheShlLmNvbmZpZy5maWxsLnR5cGUpP2UuY29uZmlnLmZpbGwudHlwZVt0XTplLmNvbmZpZy5maWxsLnR5cGV9fSx7a2V5OlwiZ2V0RmlsbENvbG9yc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5jb25maWcsaT10aGlzLm9wdHMsYT1bXTtyZXR1cm4gdC5nbG9iYWxzLmNvbWJvQ2hhcnRzP1wibGluZVwiPT09dC5jb25maWcuc2VyaWVzW3RoaXMuc2VyaWVzSW5kZXhdLnR5cGU/QXJyYXkuaXNBcnJheSh0Lmdsb2JhbHMuc3Ryb2tlLmNvbG9ycyk/YT10Lmdsb2JhbHMuc3Ryb2tlLmNvbG9yczphLnB1c2godC5nbG9iYWxzLnN0cm9rZS5jb2xvcnMpOkFycmF5LmlzQXJyYXkodC5nbG9iYWxzLmZpbGwuY29sb3JzKT9hPXQuZ2xvYmFscy5maWxsLmNvbG9yczphLnB1c2godC5nbG9iYWxzLmZpbGwuY29sb3JzKTpcImxpbmVcIj09PWUuY2hhcnQudHlwZT9BcnJheS5pc0FycmF5KHQuZ2xvYmFscy5zdHJva2UuY29sb3JzKT9hPXQuZ2xvYmFscy5zdHJva2UuY29sb3JzOmEucHVzaCh0Lmdsb2JhbHMuc3Ryb2tlLmNvbG9ycyk6QXJyYXkuaXNBcnJheSh0Lmdsb2JhbHMuZmlsbC5jb2xvcnMpP2E9dC5nbG9iYWxzLmZpbGwuY29sb3JzOmEucHVzaCh0Lmdsb2JhbHMuZmlsbC5jb2xvcnMpLHZvaWQgMCE9PWkuZmlsbENvbG9ycyYmKGE9W10sQXJyYXkuaXNBcnJheShpLmZpbGxDb2xvcnMpP2E9aS5maWxsQ29sb3JzLnNsaWNlKCk6YS5wdXNoKGkuZmlsbENvbG9ycykpLGF9fSx7a2V5OlwiaGFuZGxlUGF0dGVybkZpbGxcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmZpbGxDb25maWcsaT10LnBhdHRlcm5GaWxsLGE9dC5maWxsQ29sb3Iscz10LmZpbGxPcGFjaXR5LHI9dC5kZWZhdWx0Q29sb3Isbz10aGlzLncuY29uZmlnLmZpbGw7ZSYmKG89ZSk7dmFyIG49dGhpcy5vcHRzLGw9bmV3IG0odGhpcy5jdHgpLGg9QXJyYXkuaXNBcnJheShvLnBhdHRlcm4uc3Ryb2tlV2lkdGgpP28ucGF0dGVybi5zdHJva2VXaWR0aFt0aGlzLnNlcmllc0luZGV4XTpvLnBhdHRlcm4uc3Ryb2tlV2lkdGgsYz1hO0FycmF5LmlzQXJyYXkoby5wYXR0ZXJuLnN0eWxlKT9pPXZvaWQgMCE9PW8ucGF0dGVybi5zdHlsZVtuLnNlcmllc051bWJlcl0/bC5kcmF3UGF0dGVybihvLnBhdHRlcm4uc3R5bGVbbi5zZXJpZXNOdW1iZXJdLG8ucGF0dGVybi53aWR0aCxvLnBhdHRlcm4uaGVpZ2h0LGMsaCxzKTpyOmk9bC5kcmF3UGF0dGVybihvLnBhdHRlcm4uc3R5bGUsby5wYXR0ZXJuLndpZHRoLG8ucGF0dGVybi5oZWlnaHQsYyxoLHMpO3JldHVybiBpfX0se2tleTpcImhhbmRsZUdyYWRpZW50RmlsbFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBpPXQuZmlsbENvbG9yLGE9dC5maWxsT3BhY2l0eSxzPXQuZmlsbENvbmZpZyxyPXQuaSxvPXRoaXMudy5jb25maWcuZmlsbDtzJiYobz1lKGUoe30sbykscykpO3ZhciBuLGw9dGhpcy5vcHRzLGg9bmV3IG0odGhpcy5jdHgpLGM9bmV3IHgsZD1vLmdyYWRpZW50LnR5cGUsZz1pLHU9dm9pZCAwPT09by5ncmFkaWVudC5vcGFjaXR5RnJvbT9hOkFycmF5LmlzQXJyYXkoby5ncmFkaWVudC5vcGFjaXR5RnJvbSk/by5ncmFkaWVudC5vcGFjaXR5RnJvbVtyXTpvLmdyYWRpZW50Lm9wYWNpdHlGcm9tO2cuaW5kZXhPZihcInJnYmFcIik+LTEmJih1PXguZ2V0T3BhY2l0eUZyb21SR0JBKGcpKTt2YXIgcD12b2lkIDA9PT1vLmdyYWRpZW50Lm9wYWNpdHlUbz9hOkFycmF5LmlzQXJyYXkoby5ncmFkaWVudC5vcGFjaXR5VG8pP28uZ3JhZGllbnQub3BhY2l0eVRvW3JdOm8uZ3JhZGllbnQub3BhY2l0eVRvO2lmKHZvaWQgMD09PW8uZ3JhZGllbnQuZ3JhZGllbnRUb0NvbG9yc3x8MD09PW8uZ3JhZGllbnQuZ3JhZGllbnRUb0NvbG9ycy5sZW5ndGgpbj1cImRhcmtcIj09PW8uZ3JhZGllbnQuc2hhZGU/Yy5zaGFkZUNvbG9yKC0xKnBhcnNlRmxvYXQoby5ncmFkaWVudC5zaGFkZUludGVuc2l0eSksaS5pbmRleE9mKFwicmdiXCIpPi0xP3gucmdiMmhleChpKTppKTpjLnNoYWRlQ29sb3IocGFyc2VGbG9hdChvLmdyYWRpZW50LnNoYWRlSW50ZW5zaXR5KSxpLmluZGV4T2YoXCJyZ2JcIik+LTE/eC5yZ2IyaGV4KGkpOmkpO2Vsc2UgaWYoby5ncmFkaWVudC5ncmFkaWVudFRvQ29sb3JzW2wuc2VyaWVzTnVtYmVyXSl7dmFyIGY9by5ncmFkaWVudC5ncmFkaWVudFRvQ29sb3JzW2wuc2VyaWVzTnVtYmVyXTtuPWYsZi5pbmRleE9mKFwicmdiYVwiKT4tMSYmKHA9eC5nZXRPcGFjaXR5RnJvbVJHQkEoZikpfWVsc2Ugbj1pO2lmKG8uZ3JhZGllbnQuZ3JhZGllbnRGcm9tJiYoZz1vLmdyYWRpZW50LmdyYWRpZW50RnJvbSksby5ncmFkaWVudC5ncmFkaWVudFRvJiYobj1vLmdyYWRpZW50LmdyYWRpZW50VG8pLG8uZ3JhZGllbnQuaW52ZXJzZUNvbG9ycyl7dmFyIGI9ZztnPW4sbj1ifXJldHVybiBnLmluZGV4T2YoXCJyZ2JcIik+LTEmJihnPXgucmdiMmhleChnKSksbi5pbmRleE9mKFwicmdiXCIpPi0xJiYobj14LnJnYjJoZXgobikpLGguZHJhd0dyYWRpZW50KGQsZyxuLHUscCxsLnNpemUsby5ncmFkaWVudC5zdG9wcyxvLmdyYWRpZW50LmNvbG9yU3RvcHMscil9fV0pLHR9KCksRD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJzZXRHbG9iYWxNYXJrZXJTaXplXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7aWYodC5nbG9iYWxzLm1hcmtlcnMuc2l6ZT1BcnJheS5pc0FycmF5KHQuY29uZmlnLm1hcmtlcnMuc2l6ZSk/dC5jb25maWcubWFya2Vycy5zaXplOlt0LmNvbmZpZy5tYXJrZXJzLnNpemVdLHQuZ2xvYmFscy5tYXJrZXJzLnNpemUubGVuZ3RoPjApe2lmKHQuZ2xvYmFscy5tYXJrZXJzLnNpemUubGVuZ3RoPHQuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKzEpZm9yKHZhciBlPTA7ZTw9dC5nbG9iYWxzLnNlcmllcy5sZW5ndGg7ZSsrKXZvaWQgMD09PXQuZ2xvYmFscy5tYXJrZXJzLnNpemVbZV0mJnQuZ2xvYmFscy5tYXJrZXJzLnNpemUucHVzaCh0Lmdsb2JhbHMubWFya2Vycy5zaXplWzBdKX1lbHNlIHQuZ2xvYmFscy5tYXJrZXJzLnNpemU9dC5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuY29uZmlnLm1hcmtlcnMuc2l6ZX0pKX19LHtrZXk6XCJwbG90Q2hhcnRNYXJrZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHMscj1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XSYmYXJndW1lbnRzWzRdLG89dGhpcy53LG49ZSxsPXQsaD1udWxsLGM9bmV3IG0odGhpcy5jdHgpLGQ9by5jb25maWcubWFya2Vycy5kaXNjcmV0ZSYmby5jb25maWcubWFya2Vycy5kaXNjcmV0ZS5sZW5ndGg7aWYoKG8uZ2xvYmFscy5tYXJrZXJzLnNpemVbZV0+MHx8cnx8ZCkmJihoPWMuZ3JvdXAoe2NsYXNzOnJ8fGQ/XCJcIjpcImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnNcIn0pKS5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFya2VyTWFza1wiLmNvbmNhdChvLmdsb2JhbHMuY3VpZCxcIilcIikpLEFycmF5LmlzQXJyYXkobC54KSlmb3IodmFyIGc9MDtnPGwueC5sZW5ndGg7ZysrKXt2YXIgdT1pOzE9PT1pJiYwPT09ZyYmKHU9MCksMT09PWkmJjE9PT1nJiYodT0xKTt2YXIgcD1cImFwZXhjaGFydHMtbWFya2VyXCI7aWYoXCJsaW5lXCIhPT1vLmNvbmZpZy5jaGFydC50eXBlJiZcImFyZWFcIiE9PW8uY29uZmlnLmNoYXJ0LnR5cGV8fG8uZ2xvYmFscy5jb21ib0NoYXJ0c3x8by5jb25maWcudG9vbHRpcC5pbnRlcnNlY3R8fChwKz1cIiBuby1wb2ludGVyLWV2ZW50c1wiKSwoQXJyYXkuaXNBcnJheShvLmNvbmZpZy5tYXJrZXJzLnNpemUpP28uZ2xvYmFscy5tYXJrZXJzLnNpemVbZV0+MDpvLmNvbmZpZy5tYXJrZXJzLnNpemU+MCl8fHJ8fGQpe3guaXNOdW1iZXIobC55W2ddKT9wKz1cIiB3XCIuY29uY2F0KHgucmFuZG9tSWQoKSk6cD1cImFwZXhjaGFydHMtbnVsbHBvaW50XCI7dmFyIGY9dGhpcy5nZXRNYXJrZXJDb25maWcoe2Nzc0NsYXNzOnAsc2VyaWVzSW5kZXg6ZSxkYXRhUG9pbnRJbmRleDp1fSk7by5jb25maWcuc2VyaWVzW25dLmRhdGFbdV0mJihvLmNvbmZpZy5zZXJpZXNbbl0uZGF0YVt1XS5maWxsQ29sb3ImJihmLnBvaW50RmlsbENvbG9yPW8uY29uZmlnLnNlcmllc1tuXS5kYXRhW3VdLmZpbGxDb2xvciksby5jb25maWcuc2VyaWVzW25dLmRhdGFbdV0uc3Ryb2tlQ29sb3ImJihmLnBvaW50U3Ryb2tlQ29sb3I9by5jb25maWcuc2VyaWVzW25dLmRhdGFbdV0uc3Ryb2tlQ29sb3IpKSxhJiYoZi5wU2l6ZT1hKSwobC54W2ddPDB8fGwueFtnXT5vLmdsb2JhbHMuZ3JpZFdpZHRofHxsLnlbZ108MHx8bC55W2ddPm8uZ2xvYmFscy5ncmlkSGVpZ2h0KSYmKGYucFNpemU9MCksKHM9Yy5kcmF3TWFya2VyKGwueFtnXSxsLnlbZ10sZikpLmF0dHIoXCJyZWxcIix1KSxzLmF0dHIoXCJqXCIsdSkscy5hdHRyKFwiaW5kZXhcIixlKSxzLm5vZGUuc2V0QXR0cmlidXRlKFwiZGVmYXVsdC1tYXJrZXItc2l6ZVwiLGYucFNpemUpLG5ldyB2KHRoaXMuY3R4KS5zZXRTZWxlY3Rpb25GaWx0ZXIocyxlLHUpLHRoaXMuYWRkRXZlbnRzKHMpLGgmJmguYWRkKHMpfWVsc2Ugdm9pZCAwPT09by5nbG9iYWxzLnBvaW50c0FycmF5W2VdJiYoby5nbG9iYWxzLnBvaW50c0FycmF5W2VdPVtdKSxvLmdsb2JhbHMucG9pbnRzQXJyYXlbZV0ucHVzaChbbC54W2ddLGwueVtnXV0pfXJldHVybiBofX0se2tleTpcImdldE1hcmtlckNvbmZpZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY3NzQ2xhc3MsaT10LnNlcmllc0luZGV4LGE9dC5kYXRhUG9pbnRJbmRleCxzPXZvaWQgMD09PWE/bnVsbDphLHI9dC5maW5pc2hSYWRpdXMsbz12b2lkIDA9PT1yP251bGw6cixuPXRoaXMudyxsPXRoaXMuZ2V0TWFya2VyU3R5bGUoaSksaD1uLmdsb2JhbHMubWFya2Vycy5zaXplW2ldLGM9bi5jb25maWcubWFya2VycztyZXR1cm4gbnVsbCE9PXMmJmMuZGlzY3JldGUubGVuZ3RoJiZjLmRpc2NyZXRlLm1hcCgoZnVuY3Rpb24odCl7dC5zZXJpZXNJbmRleD09PWkmJnQuZGF0YVBvaW50SW5kZXg9PT1zJiYobC5wb2ludFN0cm9rZUNvbG9yPXQuc3Ryb2tlQ29sb3IsbC5wb2ludEZpbGxDb2xvcj10LmZpbGxDb2xvcixoPXQuc2l6ZSxsLnBvaW50U2hhcGU9dC5zaGFwZSl9KSkse3BTaXplOm51bGw9PT1vP2g6byxwUmFkaXVzOmMucmFkaXVzLHdpZHRoOkFycmF5LmlzQXJyYXkoYy53aWR0aCk/Yy53aWR0aFtpXTpjLndpZHRoLGhlaWdodDpBcnJheS5pc0FycmF5KGMuaGVpZ2h0KT9jLmhlaWdodFtpXTpjLmhlaWdodCxwb2ludFN0cm9rZVdpZHRoOkFycmF5LmlzQXJyYXkoYy5zdHJva2VXaWR0aCk/Yy5zdHJva2VXaWR0aFtpXTpjLnN0cm9rZVdpZHRoLHBvaW50U3Ryb2tlQ29sb3I6bC5wb2ludFN0cm9rZUNvbG9yLHBvaW50RmlsbENvbG9yOmwucG9pbnRGaWxsQ29sb3Isc2hhcGU6bC5wb2ludFNoYXBlfHwoQXJyYXkuaXNBcnJheShjLnNoYXBlKT9jLnNoYXBlW2ldOmMuc2hhcGUpLGNsYXNzOmUscG9pbnRTdHJva2VPcGFjaXR5OkFycmF5LmlzQXJyYXkoYy5zdHJva2VPcGFjaXR5KT9jLnN0cm9rZU9wYWNpdHlbaV06Yy5zdHJva2VPcGFjaXR5LHBvaW50U3Ryb2tlRGFzaEFycmF5OkFycmF5LmlzQXJyYXkoYy5zdHJva2VEYXNoQXJyYXkpP2Muc3Ryb2tlRGFzaEFycmF5W2ldOmMuc3Ryb2tlRGFzaEFycmF5LHBvaW50RmlsbE9wYWNpdHk6QXJyYXkuaXNBcnJheShjLmZpbGxPcGFjaXR5KT9jLmZpbGxPcGFjaXR5W2ldOmMuZmlsbE9wYWNpdHksc2VyaWVzSW5kZXg6aX19fSx7a2V5OlwiYWRkRXZlbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpO3Qubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLGkucGF0aE1vdXNlRW50ZXIuYmluZCh0aGlzLmN0eCx0KSksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsaS5wYXRoTW91c2VMZWF2ZS5iaW5kKHRoaXMuY3R4LHQpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLGkucGF0aE1vdXNlRG93bi5iaW5kKHRoaXMuY3R4LHQpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsZS5jb25maWcubWFya2Vycy5vbkNsaWNrKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcImRibGNsaWNrXCIsZS5jb25maWcubWFya2Vycy5vbkRibENsaWNrKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoc3RhcnRcIixpLnBhdGhNb3VzZURvd24uYmluZCh0aGlzLmN0eCx0KSx7cGFzc2l2ZTohMH0pfX0se2tleTpcImdldE1hcmtlclN0eWxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9ZS5nbG9iYWxzLm1hcmtlcnMuY29sb3JzLGE9ZS5jb25maWcubWFya2Vycy5zdHJva2VDb2xvcnx8ZS5jb25maWcubWFya2Vycy5zdHJva2VDb2xvcnM7cmV0dXJue3BvaW50U3Ryb2tlQ29sb3I6QXJyYXkuaXNBcnJheShhKT9hW3RdOmEscG9pbnRGaWxsQ29sb3I6QXJyYXkuaXNBcnJheShpKT9pW3RdOml9fX1dKSx0fSgpLEg9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5pbml0aWFsQW5pbT10aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCx0aGlzLmR5bmFtaWNBbmltPXRoaXMuaW5pdGlhbEFuaW0mJnRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWR9cmV0dXJuIHIodCxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53LHM9bmV3IG0odGhpcy5jdHgpLHI9aS5yZWFsSW5kZXgsbz1pLnBvaW50c1BvcyxuPWkuelJhdGlvLGw9aS5lbFBhcmVudCxoPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2VycyBhcGV4Y2hhcnRzLXNlcmllcy1cIi5jb25jYXQoYS5jb25maWcuY2hhcnQudHlwZSl9KTtpZihoLmF0dHIoXCJjbGlwLXBhdGhcIixcInVybCgjZ3JpZFJlY3RNYXJrZXJNYXNrXCIuY29uY2F0KGEuZ2xvYmFscy5jdWlkLFwiKVwiKSksQXJyYXkuaXNBcnJheShvLngpKWZvcih2YXIgYz0wO2M8by54Lmxlbmd0aDtjKyspe3ZhciBkPWUrMSxnPSEwOzA9PT1lJiYwPT09YyYmKGQ9MCksMD09PWUmJjE9PT1jJiYoZD0xKTt2YXIgdT0wLHA9YS5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtyXTtpZihuIT09MS8wKXt2YXIgZj1hLmNvbmZpZy5wbG90T3B0aW9ucy5idWJibGU7cD1hLmdsb2JhbHMuc2VyaWVzWltyXVtkXSxmLnpTY2FsaW5nJiYocC89biksZi5taW5CdWJibGVSYWRpdXMmJnA8Zi5taW5CdWJibGVSYWRpdXMmJihwPWYubWluQnViYmxlUmFkaXVzKSxmLm1heEJ1YmJsZVJhZGl1cyYmcD5mLm1heEJ1YmJsZVJhZGl1cyYmKHA9Zi5tYXhCdWJibGVSYWRpdXMpfWEuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZHx8KHU9cCk7dmFyIHg9by54W2NdLGI9by55W2NdO2lmKHU9dXx8MCxudWxsIT09YiYmdm9pZCAwIT09YS5nbG9iYWxzLnNlcmllc1tyXVtkXXx8KGc9ITEpLGcpe3ZhciB2PXRoaXMuZHJhd1BvaW50KHgsYix1LHAscixkLGUpO2guYWRkKHYpfWwuYWRkKGgpfX19LHtrZXk6XCJkcmF3UG9pbnRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscixvKXt2YXIgbj10aGlzLncsbD1zLGg9bmV3IGIodGhpcy5jdHgpLGM9bmV3IHYodGhpcy5jdHgpLGQ9bmV3IFIodGhpcy5jdHgpLGc9bmV3IEQodGhpcy5jdHgpLHU9bmV3IG0odGhpcy5jdHgpLHA9Zy5nZXRNYXJrZXJDb25maWcoe2Nzc0NsYXNzOlwiYXBleGNoYXJ0cy1tYXJrZXJcIixzZXJpZXNJbmRleDpsLGRhdGFQb2ludEluZGV4OnIsZmluaXNoUmFkaXVzOlwiYnViYmxlXCI9PT1uLmNvbmZpZy5jaGFydC50eXBlfHxuLmdsb2JhbHMuY29tYm9DaGFydHMmJm4uY29uZmlnLnNlcmllc1tzXSYmXCJidWJibGVcIj09PW4uY29uZmlnLnNlcmllc1tzXS50eXBlP2E6bnVsbH0pO2E9cC5wU2l6ZTt2YXIgZix4PWQuZmlsbFBhdGgoe3Nlcmllc051bWJlcjpzLGRhdGFQb2ludEluZGV4OnIsY29sb3I6cC5wb2ludEZpbGxDb2xvcixwYXR0ZXJuVW5pdHM6XCJvYmplY3RCb3VuZGluZ0JveFwiLHZhbHVlOm4uZ2xvYmFscy5zZXJpZXNbc11bb119KTtpZihcImNpcmNsZVwiPT09cC5zaGFwZT9mPXUuZHJhd0NpcmNsZShpKTpcInNxdWFyZVwiIT09cC5zaGFwZSYmXCJyZWN0XCIhPT1wLnNoYXBlfHwoZj11LmRyYXdSZWN0KDAsMCxwLndpZHRoLXAucG9pbnRTdHJva2VXaWR0aC8yLHAuaGVpZ2h0LXAucG9pbnRTdHJva2VXaWR0aC8yLHAucFJhZGl1cykpLG4uY29uZmlnLnNlcmllc1tsXS5kYXRhW3JdJiZuLmNvbmZpZy5zZXJpZXNbbF0uZGF0YVtyXS5maWxsQ29sb3ImJih4PW4uY29uZmlnLnNlcmllc1tsXS5kYXRhW3JdLmZpbGxDb2xvciksZi5hdHRyKHt4OnQtcC53aWR0aC8yLXAucG9pbnRTdHJva2VXaWR0aC8yLHk6ZS1wLmhlaWdodC8yLXAucG9pbnRTdHJva2VXaWR0aC8yLGN4OnQsY3k6ZSxmaWxsOngsXCJmaWxsLW9wYWNpdHlcIjpwLnBvaW50RmlsbE9wYWNpdHksc3Ryb2tlOnAucG9pbnRTdHJva2VDb2xvcixyOmEsXCJzdHJva2Utd2lkdGhcIjpwLnBvaW50U3Ryb2tlV2lkdGgsXCJzdHJva2UtZGFzaGFycmF5XCI6cC5wb2ludFN0cm9rZURhc2hBcnJheSxcInN0cm9rZS1vcGFjaXR5XCI6cC5wb2ludFN0cm9rZU9wYWNpdHl9KSxuLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciB5PW4uY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7Yy5kcm9wU2hhZG93KGYseSxzKX1pZighdGhpcy5pbml0aWFsQW5pbXx8bi5nbG9iYWxzLmRhdGFDaGFuZ2VkfHxuLmdsb2JhbHMucmVzaXplZCluLmdsb2JhbHMuYW5pbWF0aW9uRW5kZWQ9ITA7ZWxzZXt2YXIgdz1uLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkO2guYW5pbWF0ZU1hcmtlcihmLDAsXCJjaXJjbGVcIj09PXAuc2hhcGU/YTp7d2lkdGg6cC53aWR0aCxoZWlnaHQ6cC5oZWlnaHR9LHcsbi5nbG9iYWxzLmVhc2luZywoZnVuY3Rpb24oKXt3aW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXtoLmFuaW1hdGlvbkNvbXBsZXRlZChmKX0pLDEwMCl9KSl9aWYobi5nbG9iYWxzLmRhdGFDaGFuZ2VkJiZcImNpcmNsZVwiPT09cC5zaGFwZSlpZih0aGlzLmR5bmFtaWNBbmltKXt2YXIgayxBLFMsQyxMPW4uY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZDtudWxsIT0oQz1uLmdsb2JhbHMucHJldmlvdXNQYXRoc1tzXSYmbi5nbG9iYWxzLnByZXZpb3VzUGF0aHNbc11bb10pJiYoaz1DLngsQT1DLnksUz12b2lkIDAhPT1DLnI/Qy5yOmEpO2Zvcih2YXIgUD0wO1A8bi5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGg7UCsrKW4uZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNbUF0uaW5kZXg9PT1zJiYoTD0xLGE9MCk7MD09PXQmJjA9PT1lJiYoYT0wKSxoLmFuaW1hdGVDaXJjbGUoZix7Y3g6ayxjeTpBLHI6U30se2N4OnQsY3k6ZSxyOmF9LEwsbi5nbG9iYWxzLmVhc2luZyl9ZWxzZSBmLmF0dHIoe3I6YX0pO3JldHVybiBmLmF0dHIoe3JlbDpyLGo6cixpbmRleDpzLFwiZGVmYXVsdC1tYXJrZXItc2l6ZVwiOmF9KSxjLnNldFNlbGVjdGlvbkZpbHRlcihmLHMsciksZy5hZGRFdmVudHMoZiksZi5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLW1hcmtlclwiKSxmfX0se2tleTpcImNlbnRlclRleHRJbkJ1YmJsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztyZXR1cm57eTp0Kz1wYXJzZUludChlLmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmZvbnRTaXplLDEwKS80fX19XSksdH0oKSxPPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJkYXRhTGFiZWxzQ29ycmVjdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyLG8pe3ZhciBuPXRoaXMudyxsPSExLGg9bmV3IG0odGhpcy5jdHgpLmdldFRleHRSZWN0cyhpLG8pLGM9aC53aWR0aCxkPWguaGVpZ2h0O2U8MCYmKGU9MCksZT5uLmdsb2JhbHMuZ3JpZEhlaWdodCtkJiYoZT1uLmdsb2JhbHMuZ3JpZEhlaWdodCtkLzIpLHZvaWQgMD09PW4uZ2xvYmFscy5kYXRhTGFiZWxzUmVjdHNbYV0mJihuLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW2FdPVtdKSxuLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW2FdLnB1c2goe3g6dCx5OmUsd2lkdGg6YyxoZWlnaHQ6ZH0pO3ZhciBnPW4uZ2xvYmFscy5kYXRhTGFiZWxzUmVjdHNbYV0ubGVuZ3RoLTIsdT12b2lkIDAhPT1uLmdsb2JhbHMubGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXNbYV0/bi5nbG9iYWxzLmxhc3REcmF3bkRhdGFMYWJlbHNJbmRleGVzW2FdW24uZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1thXS5sZW5ndGgtMV06MDtpZih2b2lkIDAhPT1uLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW2FdW2ddKXt2YXIgcD1uLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW2FdW3VdOyh0PnAueCtwLndpZHRoKzJ8fGU+cC55K3AuaGVpZ2h0KzJ8fHQrYzxwLngpJiYobD0hMCl9cmV0dXJuKDA9PT1zfHxyKSYmKGw9ITApLHt4OnQseTplLHRleHRSZWN0czpoLGRyYXduZXh0TGFiZWw6bH19fSx7a2V5OlwiZHJhd0RhdGFMYWJlbFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10LnR5cGUsYT10LnBvcyxzPXQuaSxyPXQuaixvPXQuaXNSYW5nZVN0YXJ0LG49dC5zdHJva2VXaWR0aCxsPXZvaWQgMD09PW4/MjpuLGg9dGhpcy53LGM9bmV3IG0odGhpcy5jdHgpLGQ9aC5jb25maWcuZGF0YUxhYmVscyxnPTAsdT0wLHA9cixmPW51bGw7aWYoIWQuZW5hYmxlZHx8IUFycmF5LmlzQXJyYXkoYS54KSlyZXR1cm4gZjtmPWMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhLWxhYmVsc1wifSk7Zm9yKHZhciB4PTA7eDxhLngubGVuZ3RoO3grKylpZihnPWEueFt4XStkLm9mZnNldFgsdT1hLnlbeF0rZC5vZmZzZXRZK2wsIWlzTmFOKGcpKXsxPT09ciYmMD09PXgmJihwPTApLDE9PT1yJiYxPT09eCYmKHA9MSk7dmFyIGI9aC5nbG9iYWxzLnNlcmllc1tzXVtwXTtcInJhbmdlQXJlYVwiPT09aSYmKGI9bz9oLmdsb2JhbHMuc2VyaWVzUmFuZ2VTdGFydFtzXVtwXTpoLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmRbc11bcF0pO3ZhciB2PVwiXCIseT1mdW5jdGlvbih0KXtyZXR1cm4gaC5jb25maWcuZGF0YUxhYmVscy5mb3JtYXR0ZXIodCx7Y3R4OmUuY3R4LHNlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6cCx3Omh9KX07aWYoXCJidWJibGVcIj09PWguY29uZmlnLmNoYXJ0LnR5cGUpdj15KGI9aC5nbG9iYWxzLnNlcmllc1pbc11bcF0pLHU9YS55W3hdLHU9bmV3IEgodGhpcy5jdHgpLmNlbnRlclRleHRJbkJ1YmJsZSh1LHMscCkueTtlbHNlIHZvaWQgMCE9PWImJih2PXkoYikpO3RoaXMucGxvdERhdGFMYWJlbHNUZXh0KHt4OmcseTp1LHRleHQ6dixpOnMsajpwLHBhcmVudDpmLG9mZnNldENvcnJlY3Rpb246ITAsZGF0YUxhYmVsc0NvbmZpZzpoLmNvbmZpZy5kYXRhTGFiZWxzfSl9cmV0dXJuIGZ9fSx7a2V5OlwicGxvdERhdGFMYWJlbHNUZXh0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpLGE9dC54LHM9dC55LHI9dC5pLG89dC5qLG49dC50ZXh0LGw9dC50ZXh0QW5jaG9yLGg9dC5mb250U2l6ZSxjPXQucGFyZW50LGQ9dC5kYXRhTGFiZWxzQ29uZmlnLGc9dC5jb2xvcix1PXQuYWx3YXlzRHJhd0RhdGFMYWJlbCxwPXQub2Zmc2V0Q29ycmVjdGlvbjtpZighKEFycmF5LmlzQXJyYXkoZS5jb25maWcuZGF0YUxhYmVscy5lbmFibGVkT25TZXJpZXMpJiZlLmNvbmZpZy5kYXRhTGFiZWxzLmVuYWJsZWRPblNlcmllcy5pbmRleE9mKHIpPDApKXt2YXIgZj17eDphLHk6cyxkcmF3bmV4dExhYmVsOiEwLHRleHRSZWN0czpudWxsfTtwJiYoZj10aGlzLmRhdGFMYWJlbHNDb3JyZWN0aW9uKGEscyxuLHIsbyx1LHBhcnNlSW50KGQuc3R5bGUuZm9udFNpemUsMTApKSksZS5nbG9iYWxzLnpvb21lZHx8KGE9Zi54LHM9Zi55KSxmLnRleHRSZWN0cyYmKGE8LTEwLWYudGV4dFJlY3RzLndpZHRofHxhPmUuZ2xvYmFscy5ncmlkV2lkdGgrZi50ZXh0UmVjdHMud2lkdGgrMTApJiYobj1cIlwiKTt2YXIgeD1lLmdsb2JhbHMuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnNbcl07KChcImJhclwiPT09ZS5jb25maWcuY2hhcnQudHlwZXx8XCJyYW5nZUJhclwiPT09ZS5jb25maWcuY2hhcnQudHlwZSkmJmUuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kaXN0cmlidXRlZHx8ZS5jb25maWcuZGF0YUxhYmVscy5kaXN0cmlidXRlZCkmJih4PWUuZ2xvYmFscy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9yc1tvXSksXCJmdW5jdGlvblwiPT10eXBlb2YgeCYmKHg9eCh7c2VyaWVzOmUuZ2xvYmFscy5zZXJpZXMsc2VyaWVzSW5kZXg6cixkYXRhUG9pbnRJbmRleDpvLHc6ZX0pKSxnJiYoeD1nKTt2YXIgYj1kLm9mZnNldFgseT1kLm9mZnNldFk7aWYoXCJiYXJcIiE9PWUuY29uZmlnLmNoYXJ0LnR5cGUmJlwicmFuZ2VCYXJcIiE9PWUuY29uZmlnLmNoYXJ0LnR5cGV8fChiPTAseT0wKSxmLmRyYXduZXh0TGFiZWwpe3ZhciB3PWkuZHJhd1RleHQoe3dpZHRoOjEwMCxoZWlnaHQ6cGFyc2VJbnQoZC5zdHlsZS5mb250U2l6ZSwxMCkseDphK2IseTpzK3ksZm9yZUNvbG9yOngsdGV4dEFuY2hvcjpsfHxkLnRleHRBbmNob3IsdGV4dDpuLGZvbnRTaXplOmh8fGQuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTpkLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDpkLnN0eWxlLmZvbnRXZWlnaHR8fFwibm9ybWFsXCJ9KTtpZih3LmF0dHIoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxcIixjeDphLGN5OnN9KSxkLmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIGs9ZC5kcm9wU2hhZG93O25ldyB2KHRoaXMuY3R4KS5kcm9wU2hhZG93KHcsayl9Yy5hZGQodyksdm9pZCAwPT09ZS5nbG9iYWxzLmxhc3REcmF3bkRhdGFMYWJlbHNJbmRleGVzW3JdJiYoZS5nbG9iYWxzLmxhc3REcmF3bkRhdGFMYWJlbHNJbmRleGVzW3JdPVtdKSxlLmdsb2JhbHMubGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXNbcl0ucHVzaChvKX19fX0se2tleTpcImFkZEJhY2tncm91bmRUb0RhdGFMYWJlbFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9aS5jb25maWcuZGF0YUxhYmVscy5iYWNrZ3JvdW5kLHM9YS5wYWRkaW5nLHI9YS5wYWRkaW5nLzIsbz1lLndpZHRoLG49ZS5oZWlnaHQsbD1uZXcgbSh0aGlzLmN0eCkuZHJhd1JlY3QoZS54LXMsZS55LXIvMixvKzIqcyxuK3IsYS5ib3JkZXJSYWRpdXMsXCJ0cmFuc3BhcmVudFwiPT09aS5jb25maWcuY2hhcnQuYmFja2dyb3VuZD9cIiNmZmZcIjppLmNvbmZpZy5jaGFydC5iYWNrZ3JvdW5kLGEub3BhY2l0eSxhLmJvcmRlcldpZHRoLGEuYm9yZGVyQ29sb3IpO2EuZHJvcFNoYWRvdy5lbmFibGVkJiZuZXcgdih0aGlzLmN0eCkuZHJvcFNoYWRvdyhsLGEuZHJvcFNoYWRvdyk7cmV0dXJuIGx9fSx7a2V5OlwiZGF0YUxhYmVsc0JhY2tncm91bmRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudztpZihcImJ1YmJsZVwiIT09dC5jb25maWcuY2hhcnQudHlwZSlmb3IodmFyIGU9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLWRhdGFsYWJlbHMgdGV4dFwiKSxpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBhPWVbaV0scz1hLmdldEJCb3goKSxyPW51bGw7aWYocy53aWR0aCYmcy5oZWlnaHQmJihyPXRoaXMuYWRkQmFja2dyb3VuZFRvRGF0YUxhYmVsKGEscykpLHIpe2EucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoci5ub2RlLGEpO3ZhciBvPWEuZ2V0QXR0cmlidXRlKFwiZmlsbFwiKTt0LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQmJiF0Lmdsb2JhbHMucmVzaXplZCYmIXQuZ2xvYmFscy5kYXRhQ2hhbmdlZD9yLmFuaW1hdGUoKS5hdHRyKHtmaWxsOm99KTpyLmF0dHIoe2ZpbGw6b30pLGEuc2V0QXR0cmlidXRlKFwiZmlsbFwiLHQuY29uZmlnLmRhdGFMYWJlbHMuYmFja2dyb3VuZC5mb3JlQ29sb3IpfX19fSx7a2V5OlwiYnJpbmdGb3J3YXJkXCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy53LGU9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIiksaT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtcGxvdC1zZXJpZXM6bGFzdC1jaGlsZFwiKSxhPTA7YTxlLmxlbmd0aDthKyspaSYmaS5pbnNlcnRCZWZvcmUoZVthXSxpLm5leHRTaWJsaW5nKX19XSksdH0oKSxOPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMubGVnZW5kSW5hY3RpdmVDbGFzcz1cImxlZ2VuZC1tb3VzZW92ZXItaW5hY3RpdmVcIn1yZXR1cm4gcih0LFt7a2V5OlwiZ2V0QWxsU2VyaWVzRWxzXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYXBleGNoYXJ0cy1zZXJpZXNcIil9fSx7a2V5OlwiZ2V0U2VyaWVzQnlOYW1lXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWlubmVyIC5hcGV4Y2hhcnRzLXNlcmllc1tzZXJpZXNOYW1lPSdcIi5jb25jYXQoeC5lc2NhcGVTdHJpbmcodCksXCInXVwiKSl9fSx7a2V5OlwiaXNTZXJpZXNIaWRkZW5cIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldFNlcmllc0J5TmFtZSh0KSxpPXBhcnNlSW50KGUuZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIiksMTApO3JldHVybntpc0hpZGRlbjplLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtc2VyaWVzLWNvbGxhcHNlZFwiKSxyZWFsSW5kZXg6aX19fSx7a2V5OlwiYWRkQ29sbGFwc2VkQ2xhc3NUb1Nlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2Z1bmN0aW9uIGEoaSl7Zm9yKHZhciBhPTA7YTxpLmxlbmd0aDthKyspaVthXS5pbmRleD09PWUmJnQubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1zZXJpZXMtY29sbGFwc2VkXCIpfWEoaS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcyksYShpLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzKX19LHtrZXk6XCJ0b2dnbGVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmlzU2VyaWVzSGlkZGVuKHQpO3JldHVybiB0aGlzLmN0eC5sZWdlbmQubGVnZW5kSGVscGVycy50b2dnbGVEYXRhU2VyaWVzKGUucmVhbEluZGV4LGUuaXNIaWRkZW4pLGUuaXNIaWRkZW59fSx7a2V5Olwic2hvd1Nlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaXNTZXJpZXNIaWRkZW4odCk7ZS5pc0hpZGRlbiYmdGhpcy5jdHgubGVnZW5kLmxlZ2VuZEhlbHBlcnMudG9nZ2xlRGF0YVNlcmllcyhlLnJlYWxJbmRleCwhMCl9fSx7a2V5OlwiaGlkZVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaXNTZXJpZXNIaWRkZW4odCk7ZS5pc0hpZGRlbnx8dGhpcy5jdHgubGVnZW5kLmxlZ2VuZEhlbHBlcnMudG9nZ2xlRGF0YVNlcmllcyhlLnJlYWxJbmRleCwhMSl9fSx7a2V5OlwicmVzZXRTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF0sZT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLGk9IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXSxhPXRoaXMudyxzPXguY2xvbmUoYS5nbG9iYWxzLmluaXRpYWxTZXJpZXMpO2EuZ2xvYmFscy5wcmV2aW91c1BhdGhzPVtdLGk/KGEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXM9W10sYS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllcz1bXSxhLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcz1bXSxhLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcz1bXSk6cz10aGlzLmVtcHR5Q29sbGFwc2VkU2VyaWVzKHMpLGEuY29uZmlnLnNlcmllcz1zLHQmJihlJiYoYS5nbG9iYWxzLnpvb21lZD0hMSx0aGlzLmN0eC51cGRhdGVIZWxwZXJzLnJldmVydERlZmF1bHRBeGlzTWluTWF4KCkpLHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZVNlcmllcyhzLGEuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkKSl9fSx7a2V5OlwiZW1wdHlDb2xsYXBzZWRTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy53LGk9MDtpPHQubGVuZ3RoO2krKyllLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGkpPi0xJiYodFtpXS5kYXRhPVtdKTtyZXR1cm4gdH19LHtrZXk6XCJ0b2dnbGVTZXJpZXNPbkhvdmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7ZXx8KGU9dC50YXJnZXQpO3ZhciBhPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXMsIC5hcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIik7aWYoXCJtb3VzZW1vdmVcIj09PXQudHlwZSl7dmFyIHM9cGFyc2VJbnQoZS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTEscj1udWxsLG89bnVsbDtpLmdsb2JhbHMuYXhpc0NoYXJ0c3x8XCJyYWRpYWxCYXJcIj09PWkuY29uZmlnLmNoYXJ0LnR5cGU/aS5nbG9iYWxzLmF4aXNDaGFydHM/KHI9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdChzLFwiJ11cIikpLG89aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWRhdGFsYWJlbHNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIi5jb25jYXQocyxcIiddXCIpKSk6cj1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VyaWVzW3JlbD0nXCIuY29uY2F0KHMrMSxcIiddXCIpKTpyPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIi5jb25jYXQocysxLFwiJ10gcGF0aFwiKSk7Zm9yKHZhciBuPTA7bjxhLmxlbmd0aDtuKyspYVtuXS5jbGFzc0xpc3QuYWRkKHRoaXMubGVnZW5kSW5hY3RpdmVDbGFzcyk7bnVsbCE9PXImJihpLmdsb2JhbHMuYXhpc0NoYXJ0c3x8ci5wYXJlbnROb2RlLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5sZWdlbmRJbmFjdGl2ZUNsYXNzKSxyLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5sZWdlbmRJbmFjdGl2ZUNsYXNzKSxudWxsIT09byYmby5jbGFzc0xpc3QucmVtb3ZlKHRoaXMubGVnZW5kSW5hY3RpdmVDbGFzcykpfWVsc2UgaWYoXCJtb3VzZW91dFwiPT09dC50eXBlKWZvcih2YXIgbD0wO2w8YS5sZW5ndGg7bCsrKWFbbF0uY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmxlZ2VuZEluYWN0aXZlQ2xhc3MpfX0se2tleTpcImhpZ2hsaWdodFJhbmdlSW5TZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMsYT10aGlzLncscz1hLmdsb2JhbHMuZG9tLmJhc2VFbC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYXBleGNoYXJ0cy1oZWF0bWFwLXJlY3RcIikscj1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHMubGVuZ3RoO2UrKylzW2VdLmNsYXNzTGlzdFt0XShpLmxlZ2VuZEluYWN0aXZlQ2xhc3MpfTtpZihcIm1vdXNlbW92ZVwiPT09dC50eXBlKXt2YXIgbz1wYXJzZUludChlLmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMTtyKFwiYWRkXCIpLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8cy5sZW5ndGg7ZSsrKXt2YXIgYT1wYXJzZUludChzW2VdLmdldEF0dHJpYnV0ZShcInZhbFwiKSwxMCk7YT49dC5mcm9tJiZhPD10LnRvJiZzW2VdLmNsYXNzTGlzdC5yZW1vdmUoaS5sZWdlbmRJbmFjdGl2ZUNsYXNzKX19KGEuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAuY29sb3JTY2FsZS5yYW5nZXNbb10pfWVsc2VcIm1vdXNlb3V0XCI9PT10LnR5cGUmJnIoXCJyZW1vdmVcIil9fSx7a2V5OlwiZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXhcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpcImFzY1wiLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOltdLGk9dGhpcy53LGE9MDtpZihpLmNvbmZpZy5zZXJpZXMubGVuZ3RoPjEpZm9yKHZhciBzPWkuY29uZmlnLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQsYSl7cmV0dXJuIHQuZGF0YSYmdC5kYXRhLmxlbmd0aD4wJiYtMT09PWkuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoYSkmJighaS5nbG9iYWxzLmNvbWJvQ2hhcnRzfHwwPT09ZS5sZW5ndGh8fGUubGVuZ3RoJiZlLmluZGV4T2YoaS5jb25maWcuc2VyaWVzW2FdLnR5cGUpPi0xKT9hOi0xfSkpLHI9XCJhc2NcIj09PXQ/MDpzLmxlbmd0aC0xO1wiYXNjXCI9PT10P3I8cy5sZW5ndGg6cj49MDtcImFzY1wiPT09dD9yKys6ci0tKWlmKC0xIT09c1tyXSl7YT1zW3JdO2JyZWFrfXJldHVybiBhfX0se2tleTpcImdldEJhclNlcmllc0luZGljZXNcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5jb21ib0NoYXJ0cz90aGlzLncuY29uZmlnLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuXCJiYXJcIj09PXQudHlwZXx8XCJjb2x1bW5cIj09PXQudHlwZT9lOi0xfSkpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuLTEhPT10fSkpOnRoaXMudy5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gZX0pKX19LHtrZXk6XCJnZXRQcmV2aW91c1BhdGhzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7ZnVuY3Rpb24gZShlLGksYSl7Zm9yKHZhciBzPWVbaV0uY2hpbGROb2RlcyxyPXt0eXBlOmEscGF0aHM6W10scmVhbEluZGV4OmVbaV0uZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIil9LG89MDtvPHMubGVuZ3RoO28rKylpZihzW29dLmhhc0F0dHJpYnV0ZShcInBhdGhUb1wiKSl7dmFyIG49c1tvXS5nZXRBdHRyaWJ1dGUoXCJwYXRoVG9cIik7ci5wYXRocy5wdXNoKHtkOm59KX10Lmdsb2JhbHMucHJldmlvdXNQYXRocy5wdXNoKHIpfXQuZ2xvYmFscy5wcmV2aW91c1BhdGhzPVtdO1tcImxpbmVcIixcImFyZWFcIixcImJhclwiLFwicmFuZ2ViYXJcIixcInJhbmdlQXJlYVwiLFwiY2FuZGxlc3RpY2tcIixcInJhZGFyXCJdLmZvckVhY2goKGZ1bmN0aW9uKGkpe2Zvcih2YXIgYSxzPShhPWksdC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdChhLFwiLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNcIikpKSxyPTA7cjxzLmxlbmd0aDtyKyspZShzLHIsaSl9KSksdGhpcy5oYW5kbGVQcmV2QnViYmxlU2NhdHRlclBhdGhzKFwiYnViYmxlXCIpLHRoaXMuaGFuZGxlUHJldkJ1YmJsZVNjYXR0ZXJQYXRocyhcInNjYXR0ZXJcIik7dmFyIGk9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdCh0LmNvbmZpZy5jaGFydC50eXBlLFwiIC5hcGV4Y2hhcnRzLXNlcmllc1wiKSk7aWYoaS5sZW5ndGg+MClmb3IodmFyIGE9ZnVuY3Rpb24oZSl7Zm9yKHZhciBpPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQodC5jb25maWcuY2hhcnQudHlwZSxcIiAuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIikuY29uY2F0KGUsXCInXSByZWN0XCIpKSxhPVtdLHM9ZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGlbdF0uZ2V0QXR0cmlidXRlKGUpfSxzPXt4OnBhcnNlRmxvYXQoZShcInhcIikpLHk6cGFyc2VGbG9hdChlKFwieVwiKSksd2lkdGg6cGFyc2VGbG9hdChlKFwid2lkdGhcIikpLGhlaWdodDpwYXJzZUZsb2F0KGUoXCJoZWlnaHRcIikpfTthLnB1c2goe3JlY3Q6cyxjb2xvcjppW3RdLmdldEF0dHJpYnV0ZShcImNvbG9yXCIpfSl9LHI9MDtyPGkubGVuZ3RoO3IrKylzKHIpO3QuZ2xvYmFscy5wcmV2aW91c1BhdGhzLnB1c2goYSl9LHM9MDtzPGkubGVuZ3RoO3MrKylhKHMpO3QuZ2xvYmFscy5heGlzQ2hhcnRzfHwodC5nbG9iYWxzLnByZXZpb3VzUGF0aHM9dC5nbG9iYWxzLnNlcmllcyl9fSx7a2V5OlwiaGFuZGxlUHJldkJ1YmJsZVNjYXR0ZXJQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQodCxcIi1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzXCIpKTtpZihpLmxlbmd0aD4wKWZvcih2YXIgYT0wO2E8aS5sZW5ndGg7YSsrKXtmb3IodmFyIHM9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdCh0LFwiLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIikuY29uY2F0KGEsXCInXSBjaXJjbGVcIikpLHI9W10sbz0wO288cy5sZW5ndGg7bysrKXIucHVzaCh7eDpzW29dLmdldEF0dHJpYnV0ZShcImN4XCIpLHk6c1tvXS5nZXRBdHRyaWJ1dGUoXCJjeVwiKSxyOnNbb10uZ2V0QXR0cmlidXRlKFwiclwiKX0pO2UuZ2xvYmFscy5wcmV2aW91c1BhdGhzLnB1c2gocil9fX0se2tleTpcImNsZWFyUHJldmlvdXNQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O3QuZ2xvYmFscy5wcmV2aW91c1BhdGhzPVtdLHQuZ2xvYmFscy5hbGxTZXJpZXNDb2xsYXBzZWQ9ITF9fSx7a2V5OlwiaGFuZGxlTm9EYXRhXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10LmNvbmZpZy5ub0RhdGEsaT1uZXcgbSh0aGlzLmN0eCksYT10Lmdsb2JhbHMuc3ZnV2lkdGgvMixzPXQuZ2xvYmFscy5zdmdIZWlnaHQvMixyPVwibWlkZGxlXCI7aWYodC5nbG9iYWxzLm5vRGF0YT0hMCx0Lmdsb2JhbHMuYW5pbWF0aW9uRW5kZWQ9ITAsXCJsZWZ0XCI9PT1lLmFsaWduPyhhPTEwLHI9XCJzdGFydFwiKTpcInJpZ2h0XCI9PT1lLmFsaWduJiYoYT10Lmdsb2JhbHMuc3ZnV2lkdGgtMTAscj1cImVuZFwiKSxcInRvcFwiPT09ZS52ZXJ0aWNhbEFsaWduP3M9NTA6XCJib3R0b21cIj09PWUudmVydGljYWxBbGlnbiYmKHM9dC5nbG9iYWxzLnN2Z0hlaWdodC01MCksYSs9ZS5vZmZzZXRYLHM9cytwYXJzZUludChlLnN0eWxlLmZvbnRTaXplLDEwKSsyK2Uub2Zmc2V0WSx2b2lkIDAhPT1lLnRleHQmJlwiXCIhPT1lLnRleHQpe3ZhciBvPWkuZHJhd1RleHQoe3g6YSx5OnMsdGV4dDplLnRleHQsdGV4dEFuY2hvcjpyLGZvbnRTaXplOmUuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTplLnN0eWxlLmZvbnRGYW1pbHksZm9yZUNvbG9yOmUuc3R5bGUuY29sb3Isb3BhY2l0eToxLGNsYXNzOlwiYXBleGNoYXJ0cy10ZXh0LW5vZGF0YVwifSk7dC5nbG9iYWxzLmRvbS5QYXBlci5hZGQobyl9fX0se2tleTpcInNldE51bGxTZXJpZXNUb1plcm9WYWx1ZXNcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy53LGk9MDtpPHQubGVuZ3RoO2krKylpZigwPT09dFtpXS5sZW5ndGgpZm9yKHZhciBhPTA7YTx0W2UuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGg7YSsrKXRbaV0ucHVzaCgwKTtyZXR1cm4gdH19LHtrZXk6XCJoYXNBbGxTZXJpZXNFcXVhbFhcIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD0hMCxlPXRoaXMudyxpPXRoaXMuZmlsdGVyZWRTZXJpZXNYKCksYT0wO2E8aS5sZW5ndGgtMTthKyspaWYoaVthXVswXSE9PWlbYSsxXVswXSl7dD0hMTticmVha31yZXR1cm4gZS5nbG9iYWxzLmFsbFNlcmllc0hhc0VxdWFsWD10LHR9fSx7a2V5OlwiZmlsdGVyZWRTZXJpZXNYXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscy5zZXJpZXNYLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RoPjA/dDpbXX0pKTtyZXR1cm4gdH19XSksdH0oKSxXPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMudHdvRFNlcmllcz1bXSx0aGlzLnRocmVlRFNlcmllcz1bXSx0aGlzLnR3b0RTZXJpZXNYPVtdLHRoaXMuc2VyaWVzR29hbHM9W10sdGhpcy5jb3JlVXRpbHM9bmV3IHkodGhpcy5jdHgpfXJldHVybiByKHQsW3trZXk6XCJpc011bHRpRm9ybWF0XCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0Zvcm1hdFhZKCl8fHRoaXMuaXNGb3JtYXQyREFycmF5KCl9fSx7a2V5OlwiaXNGb3JtYXRYWVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LmNvbmZpZy5zZXJpZXMuc2xpY2UoKSxlPW5ldyBOKHRoaXMuY3R4KTtpZih0aGlzLmFjdGl2ZVNlcmllc0luZGV4PWUuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoKSx2b2lkIDAhPT10W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGEmJnRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YS5sZW5ndGg+MCYmbnVsbCE9PXRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YVswXSYmdm9pZCAwIT09dFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdLngmJm51bGwhPT10W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGFbMF0pcmV0dXJuITB9fSx7a2V5OlwiaXNGb3JtYXQyREFycmF5XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuY29uZmlnLnNlcmllcy5zbGljZSgpLGU9bmV3IE4odGhpcy5jdHgpO2lmKHRoaXMuYWN0aXZlU2VyaWVzSW5kZXg9ZS5nZXRBY3RpdmVDb25maWdTZXJpZXNJbmRleCgpLHZvaWQgMCE9PXRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YSYmdFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhLmxlbmd0aD4wJiZ2b2lkIDAhPT10W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGFbMF0mJm51bGwhPT10W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGFbMF0mJnRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YVswXS5jb25zdHJ1Y3Rvcj09PUFycmF5KXJldHVybiEwfX0se2tleTpcImhhbmRsZUZvcm1hdDJEQXJyYXlcIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaT10aGlzLncuY29uZmlnLGE9dGhpcy53Lmdsb2JhbHMscz1cImJveFBsb3RcIj09PWkuY2hhcnQudHlwZXx8XCJib3hQbG90XCI9PT1pLnNlcmllc1tlXS50eXBlLHI9MDtyPHRbZV0uZGF0YS5sZW5ndGg7cisrKWlmKHZvaWQgMCE9PXRbZV0uZGF0YVtyXVsxXSYmKEFycmF5LmlzQXJyYXkodFtlXS5kYXRhW3JdWzFdKSYmND09PXRbZV0uZGF0YVtyXVsxXS5sZW5ndGgmJiFzP3RoaXMudHdvRFNlcmllcy5wdXNoKHgucGFyc2VOdW1iZXIodFtlXS5kYXRhW3JdWzFdWzNdKSk6dFtlXS5kYXRhW3JdLmxlbmd0aD49NT90aGlzLnR3b0RTZXJpZXMucHVzaCh4LnBhcnNlTnVtYmVyKHRbZV0uZGF0YVtyXVs0XSkpOnRoaXMudHdvRFNlcmllcy5wdXNoKHgucGFyc2VOdW1iZXIodFtlXS5kYXRhW3JdWzFdKSksYS5kYXRhRm9ybWF0WE51bWVyaWM9ITApLFwiZGF0ZXRpbWVcIj09PWkueGF4aXMudHlwZSl7dmFyIG89bmV3IERhdGUodFtlXS5kYXRhW3JdWzBdKTtvPW5ldyBEYXRlKG8pLmdldFRpbWUoKSx0aGlzLnR3b0RTZXJpZXNYLnB1c2gobyl9ZWxzZSB0aGlzLnR3b0RTZXJpZXNYLnB1c2godFtlXS5kYXRhW3JdWzBdKTtmb3IodmFyIG49MDtuPHRbZV0uZGF0YS5sZW5ndGg7bisrKXZvaWQgMCE9PXRbZV0uZGF0YVtuXVsyXSYmKHRoaXMudGhyZWVEU2VyaWVzLnB1c2godFtlXS5kYXRhW25dWzJdKSxhLmlzRGF0YVhZWj0hMCl9fSx7a2V5OlwiaGFuZGxlRm9ybWF0WFlcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudy5jb25maWcsYT10aGlzLncuZ2xvYmFscyxzPW5ldyBJKHRoaXMuY3R4KSxyPWU7YS5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoZSk+LTEmJihyPXRoaXMuYWN0aXZlU2VyaWVzSW5kZXgpO2Zvcih2YXIgbz0wO288dFtlXS5kYXRhLmxlbmd0aDtvKyspdm9pZCAwIT09dFtlXS5kYXRhW29dLnkmJihBcnJheS5pc0FycmF5KHRbZV0uZGF0YVtvXS55KT90aGlzLnR3b0RTZXJpZXMucHVzaCh4LnBhcnNlTnVtYmVyKHRbZV0uZGF0YVtvXS55W3RbZV0uZGF0YVtvXS55Lmxlbmd0aC0xXSkpOnRoaXMudHdvRFNlcmllcy5wdXNoKHgucGFyc2VOdW1iZXIodFtlXS5kYXRhW29dLnkpKSksdm9pZCAwIT09dFtlXS5kYXRhW29dLmdvYWxzJiZBcnJheS5pc0FycmF5KHRbZV0uZGF0YVtvXS5nb2Fscyk/KHZvaWQgMD09PXRoaXMuc2VyaWVzR29hbHNbZV0mJih0aGlzLnNlcmllc0dvYWxzW2VdPVtdKSx0aGlzLnNlcmllc0dvYWxzW2VdLnB1c2godFtlXS5kYXRhW29dLmdvYWxzKSk6KHZvaWQgMD09PXRoaXMuc2VyaWVzR29hbHNbZV0mJih0aGlzLnNlcmllc0dvYWxzW2VdPVtdKSx0aGlzLnNlcmllc0dvYWxzW2VdLnB1c2gobnVsbCkpO2Zvcih2YXIgbj0wO248dFtyXS5kYXRhLmxlbmd0aDtuKyspe3ZhciBsPVwic3RyaW5nXCI9PXR5cGVvZiB0W3JdLmRhdGFbbl0ueCxoPUFycmF5LmlzQXJyYXkodFtyXS5kYXRhW25dLngpLGM9IWgmJiEhcy5pc1ZhbGlkRGF0ZSh0W3JdLmRhdGFbbl0ueC50b1N0cmluZygpKTtpZihsfHxjKWlmKGx8fGkueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljKXt2YXIgZD1hLmlzQmFySG9yaXpvbnRhbCYmYS5pc1JhbmdlRGF0YTtcImRhdGV0aW1lXCIhPT1pLnhheGlzLnR5cGV8fGQ/KHRoaXMuZmFsbGJhY2tUb0NhdGVnb3J5PSEwLHRoaXMudHdvRFNlcmllc1gucHVzaCh0W3JdLmRhdGFbbl0ueCkpOnRoaXMudHdvRFNlcmllc1gucHVzaChzLnBhcnNlRGF0ZSh0W3JdLmRhdGFbbl0ueCkpfWVsc2VcImRhdGV0aW1lXCI9PT1pLnhheGlzLnR5cGU/dGhpcy50d29EU2VyaWVzWC5wdXNoKHMucGFyc2VEYXRlKHRbcl0uZGF0YVtuXS54LnRvU3RyaW5nKCkpKTooYS5kYXRhRm9ybWF0WE51bWVyaWM9ITAsYS5pc1hOdW1lcmljPSEwLHRoaXMudHdvRFNlcmllc1gucHVzaChwYXJzZUZsb2F0KHRbcl0uZGF0YVtuXS54KSkpO2Vsc2UgaD8odGhpcy5mYWxsYmFja1RvQ2F0ZWdvcnk9ITAsdGhpcy50d29EU2VyaWVzWC5wdXNoKHRbcl0uZGF0YVtuXS54KSk6KGEuaXNYTnVtZXJpYz0hMCxhLmRhdGFGb3JtYXRYTnVtZXJpYz0hMCx0aGlzLnR3b0RTZXJpZXNYLnB1c2godFtyXS5kYXRhW25dLngpKX1pZih0W2VdLmRhdGFbMF0mJnZvaWQgMCE9PXRbZV0uZGF0YVswXS56KXtmb3IodmFyIGc9MDtnPHRbZV0uZGF0YS5sZW5ndGg7ZysrKXRoaXMudGhyZWVEU2VyaWVzLnB1c2godFtlXS5kYXRhW2ddLnopO2EuaXNEYXRhWFlaPSEwfX19LHtrZXk6XCJoYW5kbGVSYW5nZURhdGFcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudy5nbG9iYWxzLGE9e307cmV0dXJuIHRoaXMuaXNGb3JtYXQyREFycmF5KCk/YT10aGlzLmhhbmRsZVJhbmdlRGF0YUZvcm1hdChcImFycmF5XCIsdCxlKTp0aGlzLmlzRm9ybWF0WFkoKSYmKGE9dGhpcy5oYW5kbGVSYW5nZURhdGFGb3JtYXQoXCJ4eVwiLHQsZSkpLGkuc2VyaWVzUmFuZ2VTdGFydC5wdXNoKGEuc3RhcnQpLGkuc2VyaWVzUmFuZ2VFbmQucHVzaChhLmVuZCksaS5zZXJpZXNSYW5nZS5wdXNoKGEucmFuZ2VVbmlxdWVzKSxpLnNlcmllc1JhbmdlLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dCYmdC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QueS5mb3JFYWNoKChmdW5jdGlvbihlLGkpe2Zvcih2YXIgYT0wO2E8dC55Lmxlbmd0aDthKyspaWYoaSE9PWEpe3ZhciBzPWUueTEscj1lLnkyLG89dC55W2FdLnkxO3M8PXQueVthXS55MiYmbzw9ciYmKHQub3ZlcmxhcHMuaW5kZXhPZihlLnJhbmdlTmFtZSk8MCYmdC5vdmVybGFwcy5wdXNoKGUucmFuZ2VOYW1lKSx0Lm92ZXJsYXBzLmluZGV4T2YodC55W2FdLnJhbmdlTmFtZSk8MCYmdC5vdmVybGFwcy5wdXNoKHQueVthXS5yYW5nZU5hbWUpKX19KSl9KSl9KSksYX19LHtrZXk6XCJoYW5kbGVDYW5kbGVTdGlja0JveERhdGFcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudy5nbG9iYWxzLGE9e307cmV0dXJuIHRoaXMuaXNGb3JtYXQyREFycmF5KCk/YT10aGlzLmhhbmRsZUNhbmRsZVN0aWNrQm94RGF0YUZvcm1hdChcImFycmF5XCIsdCxlKTp0aGlzLmlzRm9ybWF0WFkoKSYmKGE9dGhpcy5oYW5kbGVDYW5kbGVTdGlja0JveERhdGFGb3JtYXQoXCJ4eVwiLHQsZSkpLGkuc2VyaWVzQ2FuZGxlT1tlXT1hLm8saS5zZXJpZXNDYW5kbGVIW2VdPWEuaCxpLnNlcmllc0NhbmRsZU1bZV09YS5tLGkuc2VyaWVzQ2FuZGxlTFtlXT1hLmwsaS5zZXJpZXNDYW5kbGVDW2VdPWEuYyxhfX0se2tleTpcImhhbmRsZVJhbmdlRGF0YUZvcm1hdFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT1bXSxzPVtdLHI9ZVtpXS5kYXRhLmZpbHRlcigoZnVuY3Rpb24odCxlLGkpe3JldHVybiBlPT09aS5maW5kSW5kZXgoKGZ1bmN0aW9uKGUpe3JldHVybiBlLng9PT10Lnh9KSl9KSkubWFwKChmdW5jdGlvbih0LGUpe3JldHVybnt4OnQueCxvdmVybGFwczpbXSx5OltdfX0pKTtpZihcImFycmF5XCI9PT10KWZvcih2YXIgbz0wO288ZVtpXS5kYXRhLmxlbmd0aDtvKyspQXJyYXkuaXNBcnJheShlW2ldLmRhdGFbb10pPyhhLnB1c2goZVtpXS5kYXRhW29dWzFdWzBdKSxzLnB1c2goZVtpXS5kYXRhW29dWzFdWzFdKSk6KGEucHVzaChlW2ldLmRhdGFbb10pLHMucHVzaChlW2ldLmRhdGFbb10pKTtlbHNlIGlmKFwieHlcIj09PXQpZm9yKHZhciBuPWZ1bmN0aW9uKHQpe3ZhciBvPUFycmF5LmlzQXJyYXkoZVtpXS5kYXRhW3RdLnkpLG49eC5yYW5kb21JZCgpLGw9ZVtpXS5kYXRhW3RdLngsaD17eTE6bz9lW2ldLmRhdGFbdF0ueVswXTplW2ldLmRhdGFbdF0ueSx5MjpvP2VbaV0uZGF0YVt0XS55WzFdOmVbaV0uZGF0YVt0XS55LHJhbmdlTmFtZTpufTtlW2ldLmRhdGFbdF0ucmFuZ2VOYW1lPW47dmFyIGM9ci5maW5kSW5kZXgoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lng9PT1sfSkpO3JbY10ueS5wdXNoKGgpLGEucHVzaChoLnkxKSxzLnB1c2goaC55Mil9LGw9MDtsPGVbaV0uZGF0YS5sZW5ndGg7bCsrKW4obCk7cmV0dXJue3N0YXJ0OmEsZW5kOnMscmFuZ2VVbmlxdWVzOnJ9fX0se2tleTpcImhhbmRsZUNhbmRsZVN0aWNrQm94RGF0YUZvcm1hdFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLncscz1cImJveFBsb3RcIj09PWEuY29uZmlnLmNoYXJ0LnR5cGV8fFwiYm94UGxvdFwiPT09YS5jb25maWcuc2VyaWVzW2ldLnR5cGUscj1bXSxvPVtdLG49W10sbD1bXSxoPVtdO2lmKFwiYXJyYXlcIj09PXQpaWYocyYmNj09PWVbaV0uZGF0YVswXS5sZW5ndGh8fCFzJiY1PT09ZVtpXS5kYXRhWzBdLmxlbmd0aClmb3IodmFyIGM9MDtjPGVbaV0uZGF0YS5sZW5ndGg7YysrKXIucHVzaChlW2ldLmRhdGFbY11bMV0pLG8ucHVzaChlW2ldLmRhdGFbY11bMl0pLHM/KG4ucHVzaChlW2ldLmRhdGFbY11bM10pLGwucHVzaChlW2ldLmRhdGFbY11bNF0pLGgucHVzaChlW2ldLmRhdGFbY11bNV0pKToobC5wdXNoKGVbaV0uZGF0YVtjXVszXSksaC5wdXNoKGVbaV0uZGF0YVtjXVs0XSkpO2Vsc2UgZm9yKHZhciBkPTA7ZDxlW2ldLmRhdGEubGVuZ3RoO2QrKylBcnJheS5pc0FycmF5KGVbaV0uZGF0YVtkXVsxXSkmJihyLnB1c2goZVtpXS5kYXRhW2RdWzFdWzBdKSxvLnB1c2goZVtpXS5kYXRhW2RdWzFdWzFdKSxzPyhuLnB1c2goZVtpXS5kYXRhW2RdWzFdWzJdKSxsLnB1c2goZVtpXS5kYXRhW2RdWzFdWzNdKSxoLnB1c2goZVtpXS5kYXRhW2RdWzFdWzRdKSk6KGwucHVzaChlW2ldLmRhdGFbZF1bMV1bMl0pLGgucHVzaChlW2ldLmRhdGFbZF1bMV1bM10pKSk7ZWxzZSBpZihcInh5XCI9PT10KWZvcih2YXIgZz0wO2c8ZVtpXS5kYXRhLmxlbmd0aDtnKyspQXJyYXkuaXNBcnJheShlW2ldLmRhdGFbZ10ueSkmJihyLnB1c2goZVtpXS5kYXRhW2ddLnlbMF0pLG8ucHVzaChlW2ldLmRhdGFbZ10ueVsxXSkscz8obi5wdXNoKGVbaV0uZGF0YVtnXS55WzJdKSxsLnB1c2goZVtpXS5kYXRhW2ddLnlbM10pLGgucHVzaChlW2ldLmRhdGFbZ10ueVs0XSkpOihsLnB1c2goZVtpXS5kYXRhW2ddLnlbMl0pLGgucHVzaChlW2ldLmRhdGFbZ10ueVszXSkpKTtyZXR1cm57bzpyLGg6byxtOm4sbDpsLGM6aH19fSx7a2V5OlwicGFyc2VEYXRhQXhpc0NoYXJ0c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcyxhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLmN0eCxzPXRoaXMudy5jb25maWcscj10aGlzLncuZ2xvYmFscyxvPW5ldyBJKGEpLG49cy5sYWJlbHMubGVuZ3RoPjA/cy5sYWJlbHMuc2xpY2UoKTpzLnhheGlzLmNhdGVnb3JpZXMuc2xpY2UoKTtpZihyLmlzUmFuZ2VCYXI9XCJyYW5nZUJhclwiPT09cy5jaGFydC50eXBlJiZyLmlzQmFySG9yaXpvbnRhbCxyLmhhc1hheGlzR3JvdXBzPVwiY2F0ZWdvcnlcIj09PXMueGF4aXMudHlwZSYmcy54YXhpcy5ncm91cC5ncm91cHMubGVuZ3RoPjAsci5oYXNYYXhpc0dyb3VwcyYmKHIuZ3JvdXBzPXMueGF4aXMuZ3JvdXAuZ3JvdXBzKSxyLmhhc1Nlcmllc0dyb3Vwcz1udWxsPT09KGU9dFswXSl8fHZvaWQgMD09PWU/dm9pZCAwOmUuZ3JvdXAsci5oYXNTZXJpZXNHcm91cHMpe3ZhciBsPVtdLGg9dShuZXcgU2V0KHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5ncm91cH0pKSkpO3QuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt2YXIgaT1oLmluZGV4T2YodC5ncm91cCk7bFtpXXx8KGxbaV09W10pLGxbaV0ucHVzaCh0Lm5hbWUpfSkpLHIuc2VyaWVzR3JvdXBzPWx9Zm9yKHZhciBjPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDxuLmxlbmd0aDt0KyspaWYoXCJzdHJpbmdcIj09dHlwZW9mIG5bdF0pe2lmKCFvLmlzVmFsaWREYXRlKG5bdF0pKXRocm93IG5ldyBFcnJvcihcIllvdSBoYXZlIHByb3ZpZGVkIGludmFsaWQgRGF0ZSBmb3JtYXQuIFBsZWFzZSBwcm92aWRlIGEgdmFsaWQgSmF2YVNjcmlwdCBEYXRlXCIpO2kudHdvRFNlcmllc1gucHVzaChvLnBhcnNlRGF0ZShuW3RdKSl9ZWxzZSBpLnR3b0RTZXJpZXNYLnB1c2goblt0XSl9LGQ9MDtkPHQubGVuZ3RoO2QrKyl7aWYodGhpcy50d29EU2VyaWVzPVtdLHRoaXMudHdvRFNlcmllc1g9W10sdGhpcy50aHJlZURTZXJpZXM9W10sdm9pZCAwPT09dFtkXS5kYXRhKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoXCJJdCBpcyBhIHBvc3NpYmlsaXR5IHRoYXQgeW91IG1heSBoYXZlIG5vdCBpbmNsdWRlZCAnZGF0YScgcHJvcGVydHkgaW4gc2VyaWVzLlwiKTtpZihcInJhbmdlQmFyXCIhPT1zLmNoYXJ0LnR5cGUmJlwicmFuZ2VBcmVhXCIhPT1zLmNoYXJ0LnR5cGUmJlwicmFuZ2VCYXJcIiE9PXRbZF0udHlwZSYmXCJyYW5nZUFyZWFcIiE9PXRbZF0udHlwZXx8KHIuaXNSYW5nZURhdGE9ITAsci5pc0NvbWJvQ2hhcnRzP1wicmFuZ2VCYXJcIiE9PXRbZF0udHlwZSYmXCJyYW5nZUFyZWFcIiE9PXRbZF0udHlwZXx8dGhpcy5oYW5kbGVSYW5nZURhdGEodCxkKTpcInJhbmdlQmFyXCIhPT1zLmNoYXJ0LnR5cGUmJlwicmFuZ2VBcmVhXCIhPT1zLmNoYXJ0LnR5cGV8fHRoaXMuaGFuZGxlUmFuZ2VEYXRhKHQsZCkpLHRoaXMuaXNNdWx0aUZvcm1hdCgpKXRoaXMuaXNGb3JtYXQyREFycmF5KCk/dGhpcy5oYW5kbGVGb3JtYXQyREFycmF5KHQsZCk6dGhpcy5pc0Zvcm1hdFhZKCkmJnRoaXMuaGFuZGxlRm9ybWF0WFkodCxkKSxcImNhbmRsZXN0aWNrXCIhPT1zLmNoYXJ0LnR5cGUmJlwiY2FuZGxlc3RpY2tcIiE9PXRbZF0udHlwZSYmXCJib3hQbG90XCIhPT1zLmNoYXJ0LnR5cGUmJlwiYm94UGxvdFwiIT09dFtkXS50eXBlfHx0aGlzLmhhbmRsZUNhbmRsZVN0aWNrQm94RGF0YSh0LGQpLHIuc2VyaWVzLnB1c2godGhpcy50d29EU2VyaWVzKSxyLmxhYmVscy5wdXNoKHRoaXMudHdvRFNlcmllc1gpLHIuc2VyaWVzWC5wdXNoKHRoaXMudHdvRFNlcmllc1gpLHIuc2VyaWVzR29hbHM9dGhpcy5zZXJpZXNHb2FscyxkIT09dGhpcy5hY3RpdmVTZXJpZXNJbmRleHx8dGhpcy5mYWxsYmFja1RvQ2F0ZWdvcnl8fChyLmlzWE51bWVyaWM9ITApO2Vsc2V7XCJkYXRldGltZVwiPT09cy54YXhpcy50eXBlPyhyLmlzWE51bWVyaWM9ITAsYygpLHIuc2VyaWVzWC5wdXNoKHRoaXMudHdvRFNlcmllc1gpKTpcIm51bWVyaWNcIj09PXMueGF4aXMudHlwZSYmKHIuaXNYTnVtZXJpYz0hMCxuLmxlbmd0aD4wJiYodGhpcy50d29EU2VyaWVzWD1uLHIuc2VyaWVzWC5wdXNoKHRoaXMudHdvRFNlcmllc1gpKSksci5sYWJlbHMucHVzaCh0aGlzLnR3b0RTZXJpZXNYKTt2YXIgZz10W2RdLmRhdGEubWFwKChmdW5jdGlvbih0KXtyZXR1cm4geC5wYXJzZU51bWJlcih0KX0pKTtyLnNlcmllcy5wdXNoKGcpfXIuc2VyaWVzWi5wdXNoKHRoaXMudGhyZWVEU2VyaWVzKSx2b2lkIDAhPT10W2RdLm5hbWU/ci5zZXJpZXNOYW1lcy5wdXNoKHRbZF0ubmFtZSk6ci5zZXJpZXNOYW1lcy5wdXNoKFwic2VyaWVzLVwiK3BhcnNlSW50KGQrMSwxMCkpLHZvaWQgMCE9PXRbZF0uY29sb3I/ci5zZXJpZXNDb2xvcnMucHVzaCh0W2RdLmNvbG9yKTpyLnNlcmllc0NvbG9ycy5wdXNoKHZvaWQgMCl9cmV0dXJuIHRoaXMud319LHtrZXk6XCJwYXJzZURhdGFOb25BeGlzQ2hhcnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53Lmdsb2JhbHMsaT10aGlzLncuY29uZmlnO2Uuc2VyaWVzPXQuc2xpY2UoKSxlLnNlcmllc05hbWVzPWkubGFiZWxzLnNsaWNlKCk7Zm9yKHZhciBhPTA7YTxlLnNlcmllcy5sZW5ndGg7YSsrKXZvaWQgMD09PWUuc2VyaWVzTmFtZXNbYV0mJmUuc2VyaWVzTmFtZXMucHVzaChcInNlcmllcy1cIisoYSsxKSk7cmV0dXJuIHRoaXMud319LHtrZXk6XCJoYW5kbGVFeHRlcm5hbExhYmVsc0RhdGFcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncuY29uZmlnLGk9dGhpcy53Lmdsb2JhbHM7aWYoZS54YXhpcy5jYXRlZ29yaWVzLmxlbmd0aD4wKWkubGFiZWxzPWUueGF4aXMuY2F0ZWdvcmllcztlbHNlIGlmKGUubGFiZWxzLmxlbmd0aD4wKWkubGFiZWxzPWUubGFiZWxzLnNsaWNlKCk7ZWxzZSBpZih0aGlzLmZhbGxiYWNrVG9DYXRlZ29yeSl7aWYoaS5sYWJlbHM9aS5sYWJlbHNbMF0saS5zZXJpZXNSYW5nZS5sZW5ndGgmJihpLnNlcmllc1JhbmdlLm1hcCgoZnVuY3Rpb24odCl7dC5mb3JFYWNoKChmdW5jdGlvbih0KXtpLmxhYmVscy5pbmRleE9mKHQueCk8MCYmdC54JiZpLmxhYmVscy5wdXNoKHQueCl9KSl9KSksaS5sYWJlbHM9aS5sYWJlbHMuZmlsdGVyKChmdW5jdGlvbih0LGUsaSl7cmV0dXJuIGkuaW5kZXhPZih0KT09PWV9KSkpLGUueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljKW5ldyB6KGUpLmNvbnZlcnRDYXRUb051bWVyaWNYYXhpcyhlLHRoaXMuY3R4LGkuc2VyaWVzWFswXSksdGhpcy5fZ2VuZXJhdGVFeHRlcm5hbExhYmVscyh0KX1lbHNlIHRoaXMuX2dlbmVyYXRlRXh0ZXJuYWxMYWJlbHModCl9fSx7a2V5OlwiX2dlbmVyYXRlRXh0ZXJuYWxMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncuZ2xvYmFscyxpPXRoaXMudy5jb25maWcsYT1bXTtpZihlLmF4aXNDaGFydHMpe2lmKGUuc2VyaWVzLmxlbmd0aD4wKWlmKHRoaXMuaXNGb3JtYXRYWSgpKWZvcih2YXIgcz1pLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZGF0YS5maWx0ZXIoKGZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gaS5maW5kSW5kZXgoKGZ1bmN0aW9uKGUpe3JldHVybiBlLng9PT10Lnh9KSk9PT1lfSkpfSkpLHI9cy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSxpLGEpe3JldHVybiBhW3RdLmxlbmd0aD5lLmxlbmd0aD90Oml9KSwwKSxvPTA7bzxzW3JdLmxlbmd0aDtvKyspYS5wdXNoKG8rMSk7ZWxzZSBmb3IodmFyIG49MDtuPGUuc2VyaWVzW2UubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoO24rKylhLnB1c2gobisxKTtlLnNlcmllc1g9W107Zm9yKHZhciBsPTA7bDx0Lmxlbmd0aDtsKyspZS5zZXJpZXNYLnB1c2goYSk7ZS5pc1hOdW1lcmljPSEwfWlmKDA9PT1hLmxlbmd0aCl7YT1lLmF4aXNDaGFydHM/W106ZS5zZXJpZXMubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBlKzF9KSk7Zm9yKHZhciBoPTA7aDx0Lmxlbmd0aDtoKyspZS5zZXJpZXNYLnB1c2goYSl9ZS5sYWJlbHM9YSxpLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKGUuY2F0ZWdvcnlMYWJlbHM9YS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBpLnhheGlzLmxhYmVscy5mb3JtYXR0ZXIodCl9KSkpLGUubm9MYWJlbHNQcm92aWRlZD0hMH19LHtrZXk6XCJwYXJzZURhdGFcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1lLmNvbmZpZyxhPWUuZ2xvYmFscztpZih0aGlzLmV4Y2x1ZGVDb2xsYXBzZWRTZXJpZXNJbllBeGlzKCksdGhpcy5mYWxsYmFja1RvQ2F0ZWdvcnk9ITEsdGhpcy5jdHguY29yZS5yZXNldEdsb2JhbHMoKSx0aGlzLmN0eC5jb3JlLmlzTXVsdGlwbGVZKCksYS5heGlzQ2hhcnRzPyh0aGlzLnBhcnNlRGF0YUF4aXNDaGFydHModCksdGhpcy5jb3JlVXRpbHMuZ2V0TGFyZ2VzdFNlcmllcygpKTp0aGlzLnBhcnNlRGF0YU5vbkF4aXNDaGFydHModCksXCJiYXJcIj09PWkuY2hhcnQudHlwZSYmaS5jaGFydC5zdGFja2VkKXt2YXIgcz1uZXcgTih0aGlzLmN0eCk7YS5zZXJpZXM9cy5zZXROdWxsU2VyaWVzVG9aZXJvVmFsdWVzKGEuc2VyaWVzKX10aGlzLmNvcmVVdGlscy5nZXRTZXJpZXNUb3RhbHMoKSxhLmF4aXNDaGFydHMmJihhLnN0YWNrZWRTZXJpZXNUb3RhbHM9dGhpcy5jb3JlVXRpbHMuZ2V0U3RhY2tlZFNlcmllc1RvdGFscygpKSx0aGlzLmNvcmVVdGlscy5nZXRQZXJjZW50U2VyaWVzKCksYS5kYXRhRm9ybWF0WE51bWVyaWN8fGEuaXNYTnVtZXJpYyYmKFwibnVtZXJpY1wiIT09aS54YXhpcy50eXBlfHwwIT09aS5sYWJlbHMubGVuZ3RofHwwIT09aS54YXhpcy5jYXRlZ29yaWVzLmxlbmd0aCl8fHRoaXMuaGFuZGxlRXh0ZXJuYWxMYWJlbHNEYXRhKHQpO2Zvcih2YXIgcj10aGlzLmNvcmVVdGlscy5nZXRDYXRlZ29yeUxhYmVscyhhLmxhYmVscyksbz0wO288ci5sZW5ndGg7bysrKWlmKEFycmF5LmlzQXJyYXkocltvXSkpe2EuaXNNdWx0aUxpbmVYPSEwO2JyZWFrfX19LHtrZXk6XCJleGNsdWRlQ29sbGFwc2VkU2VyaWVzSW5ZQXhpc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudztlLmdsb2JhbHMuaWdub3JlWUF4aXNJbmRleGVzPWUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubWFwKChmdW5jdGlvbihpLGEpe2lmKHQudy5nbG9iYWxzLmlzTXVsdGlwbGVZQXhpcyYmIWUuY29uZmlnLmNoYXJ0LnN0YWNrZWQpcmV0dXJuIGkuaW5kZXh9KSl9fV0pLHR9KCksQj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiZ2V0TGFiZWxcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XT9hcmd1bWVudHNbNF06W10scj1hcmd1bWVudHMubGVuZ3RoPjUmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XT9hcmd1bWVudHNbNV06XCIxMnB4XCIsbz0hKGFyZ3VtZW50cy5sZW5ndGg+NiYmdm9pZCAwIT09YXJndW1lbnRzWzZdKXx8YXJndW1lbnRzWzZdLG49dGhpcy53LGw9dm9pZCAwPT09dFthXT9cIlwiOnRbYV0saD1sLGM9bi5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcixkPW4uY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXIsZz0hMSx1PW5ldyBUKHRoaXMuY3R4KSxwPWw7byYmKGg9dS54TGFiZWxGb3JtYXQoYyxsLHAse2k6YSxkYXRlRm9ybWF0dGVyOm5ldyBJKHRoaXMuY3R4KS5mb3JtYXREYXRlLHc6bn0pLHZvaWQgMCE9PWQmJihoPWQobCx0W2FdLHtpOmEsZGF0ZUZvcm1hdHRlcjpuZXcgSSh0aGlzLmN0eCkuZm9ybWF0RGF0ZSx3Om59KSkpO3ZhciBmLHg7ZS5sZW5ndGg+MD8oZj1lW2FdLnVuaXQseD1udWxsLGUuZm9yRWFjaCgoZnVuY3Rpb24odCl7XCJtb250aFwiPT09dC51bml0P3g9XCJ5ZWFyXCI6XCJkYXlcIj09PXQudW5pdD94PVwibW9udGhcIjpcImhvdXJcIj09PXQudW5pdD94PVwiZGF5XCI6XCJtaW51dGVcIj09PXQudW5pdCYmKHg9XCJob3VyXCIpfSkpLGc9eD09PWYsaT1lW2FdLnBvc2l0aW9uLGg9ZVthXS52YWx1ZSk6XCJkYXRldGltZVwiPT09bi5jb25maWcueGF4aXMudHlwZSYmdm9pZCAwPT09ZCYmKGg9XCJcIiksdm9pZCAwPT09aCYmKGg9XCJcIiksaD1BcnJheS5pc0FycmF5KGgpP2g6aC50b1N0cmluZygpO3ZhciBiPW5ldyBtKHRoaXMuY3R4KSx2PXt9O3Y9bi5nbG9iYWxzLnJvdGF0ZVhMYWJlbHMmJm8/Yi5nZXRUZXh0UmVjdHMoaCxwYXJzZUludChyLDEwKSxudWxsLFwicm90YXRlKFwiLmNvbmNhdChuLmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlLFwiIDAgMClcIiksITEpOmIuZ2V0VGV4dFJlY3RzKGgscGFyc2VJbnQociwxMCkpO3ZhciB5PSFuLmNvbmZpZy54YXhpcy5sYWJlbHMuc2hvd0R1cGxpY2F0ZXMmJnRoaXMuY3R4LnRpbWVTY2FsZTtyZXR1cm4hQXJyYXkuaXNBcnJheShoKSYmKDA9PT1oLmluZGV4T2YoXCJOYU5cIil8fDA9PT1oLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImludmFsaWRcIil8fGgudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwiaW5maW5pdHlcIik+PTB8fHMuaW5kZXhPZihoKT49MCYmeSkmJihoPVwiXCIpLHt4OmksdGV4dDpoLHRleHRSZWN0OnYsaXNCb2xkOmd9fX0se2tleTpcImNoZWNrTGFiZWxCYXNlZE9uVGlja2Ftb3VudFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLncscz1hLmNvbmZpZy54YXhpcy50aWNrQW1vdW50O3JldHVyblwiZGF0YVBvaW50c1wiPT09cyYmKHM9TWF0aC5yb3VuZChhLmdsb2JhbHMuZ3JpZFdpZHRoLzEyMCkpLHM+aXx8dCVNYXRoLnJvdW5kKGkvKHMrMSkpPT0wfHwoZS50ZXh0PVwiXCIpLGV9fSx7a2V5OlwiY2hlY2tGb3JPdmVyZmxvd2luZ0xhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyl7dmFyIHI9dGhpcy53O2lmKDA9PT10JiZyLmdsb2JhbHMuc2tpcEZpcnN0VGltZWxpbmVsYWJlbCYmKGUudGV4dD1cIlwiKSx0PT09aS0xJiZyLmdsb2JhbHMuc2tpcExhc3RUaW1lbGluZWxhYmVsJiYoZS50ZXh0PVwiXCIpLHIuY29uZmlnLnhheGlzLmxhYmVscy5oaWRlT3ZlcmxhcHBpbmdMYWJlbHMmJmEubGVuZ3RoPjApe3ZhciBvPXNbcy5sZW5ndGgtMV07ZS54PG8udGV4dFJlY3Qud2lkdGgvKHIuZ2xvYmFscy5yb3RhdGVYTGFiZWxzP01hdGguYWJzKHIuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGUpLzEyOjEuMDEpK28ueCYmKGUudGV4dD1cIlwiKX1yZXR1cm4gZX19LHtrZXk6XCJjaGVja0ZvclJldmVyc2VkTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7cmV0dXJuIGkuY29uZmlnLnlheGlzW3RdJiZpLmNvbmZpZy55YXhpc1t0XS5yZXZlcnNlZCYmZS5yZXZlcnNlKCksZX19LHtrZXk6XCJpc1lBeGlzSGlkZGVuXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IHkodGhpcy5jdHgpO3JldHVybiFlLmNvbmZpZy55YXhpc1t0XS5zaG93fHwhZS5jb25maWcueWF4aXNbdF0uc2hvd0Zvck51bGxTZXJpZXMmJmkuaXNTZXJpZXNOdWxsKHQpJiYtMT09PWUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YodCl9fSx7a2V5OlwiZ2V0WUF4aXNGb3JlQ29sb3JcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztyZXR1cm4gQXJyYXkuaXNBcnJheSh0KSYmaS5nbG9iYWxzLnlBeGlzU2NhbGVbZV0mJnRoaXMuY3R4LnRoZW1lLnB1c2hFeHRyYUNvbG9ycyh0LGkuZ2xvYmFscy55QXhpc1NjYWxlW2VdLnJlc3VsdC5sZW5ndGgsITEpLHR9fSx7a2V5OlwiZHJhd1lBeGlzVGlja3NcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscixvKXt2YXIgbj10aGlzLncsbD1uZXcgbSh0aGlzLmN0eCksaD1uLmdsb2JhbHMudHJhbnNsYXRlWTtpZihhLnNob3cmJmU+MCl7ITA9PT1uLmNvbmZpZy55YXhpc1tzXS5vcHBvc2l0ZSYmKHQrPWEud2lkdGgpO2Zvcih2YXIgYz1lO2M+PTA7Yy0tKXt2YXIgZD1oK2UvMTArbi5jb25maWcueWF4aXNbc10ubGFiZWxzLm9mZnNldFktMTtuLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYoZD1yKmMpLFwiaGVhdG1hcFwiPT09bi5jb25maWcuY2hhcnQudHlwZSYmKGQrPXIvMik7dmFyIGc9bC5kcmF3TGluZSh0K2kub2Zmc2V0WC1hLndpZHRoK2Eub2Zmc2V0WCxkK2Eub2Zmc2V0WSx0K2kub2Zmc2V0WCthLm9mZnNldFgsZCthLm9mZnNldFksYS5jb2xvcik7by5hZGQoZyksaCs9cn19fX1dKSx0fSgpLEc9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcInNjYWxlU3ZnTm9kZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9cGFyc2VGbG9hdCh0LmdldEF0dHJpYnV0ZU5TKG51bGwsXCJ3aWR0aFwiKSksYT1wYXJzZUZsb2F0KHQuZ2V0QXR0cmlidXRlTlMobnVsbCxcImhlaWdodFwiKSk7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLFwid2lkdGhcIixpKmUpLHQuc2V0QXR0cmlidXRlTlMobnVsbCxcImhlaWdodFwiLGEqZSksdC5zZXRBdHRyaWJ1dGVOUyhudWxsLFwidmlld0JveFwiLFwiMCAwIFwiK2krXCIgXCIrYSl9fSx7a2V5OlwiZml4U3ZnU3RyaW5nRm9ySWUxMVwiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKCF4LmlzSUUxMSgpKXJldHVybiB0LnJlcGxhY2UoLyZuYnNwOy9nLFwiJiMxNjA7XCIpO3ZhciBlPTAsaT10LnJlcGxhY2UoL3htbG5zPVwiaHR0cDpcXC9cXC93d3cudzMub3JnXFwvMjAwMFxcL3N2Z1wiL2csKGZ1bmN0aW9uKHQpe3JldHVybiAyPT09KytlPyd4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB4bWxuczpzdmdqcz1cImh0dHA6Ly9zdmdqcy5kZXZcIic6dH0pKTtyZXR1cm4gaT0oaT1pLnJlcGxhY2UoL3htbG5zOk5TXFxkKz1cIlwiL2csXCJcIikpLnJlcGxhY2UoL05TXFxkKzooXFx3KzpcXHcrPVwiKS9nLFwiJDFcIil9fSx7a2V5OlwiZ2V0U3ZnU3RyaW5nXCIsdmFsdWU6ZnVuY3Rpb24odCl7bnVsbD09dCYmKHQ9MSk7dmFyIGU9dGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLnN2ZygpO2lmKDEhPT10KXt2YXIgaT10aGlzLncuZ2xvYmFscy5kb20uUGFwZXIubm9kZS5jbG9uZU5vZGUoITApO3RoaXMuc2NhbGVTdmdOb2RlKGksdCksZT0obmV3IFhNTFNlcmlhbGl6ZXIpLnNlcmlhbGl6ZVRvU3RyaW5nKGkpfXJldHVybiB0aGlzLmZpeFN2Z1N0cmluZ0ZvckllMTEoZSl9fSx7a2V5OlwiY2xlYW51cFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFwZXhjaGFydHMteGNyb3NzaGFpcnNcIiksaT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYXBleGNoYXJ0cy15Y3Jvc3NoYWlyc1wiKSxhPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy16b29tLXJlY3QsIC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0XCIpO0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoYSwoZnVuY3Rpb24odCl7dC5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLDApfSkpLGUmJmVbMF0mJihlWzBdLnNldEF0dHJpYnV0ZShcInhcIiwtNTAwKSxlWzBdLnNldEF0dHJpYnV0ZShcIngxXCIsLTUwMCksZVswXS5zZXRBdHRyaWJ1dGUoXCJ4MlwiLC01MDApKSxpJiZpWzBdJiYoaVswXS5zZXRBdHRyaWJ1dGUoXCJ5XCIsLTEwMCksaVswXS5zZXRBdHRyaWJ1dGUoXCJ5MVwiLC0xMDApLGlbMF0uc2V0QXR0cmlidXRlKFwieTJcIiwtMTAwKSl9fSx7a2V5Olwic3ZnVXJsXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNsZWFudXAoKTt2YXIgdD10aGlzLmdldFN2Z1N0cmluZygpLGU9bmV3IEJsb2IoW3RdLHt0eXBlOlwiaW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04XCJ9KTtyZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTChlKX19LHtrZXk6XCJkYXRhVVJJXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGkpe3ZhciBhPWUudyxzPXQ/dC5zY2FsZXx8dC53aWR0aC9hLmdsb2JhbHMuc3ZnV2lkdGg6MTtlLmNsZWFudXAoKTt2YXIgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO3Iud2lkdGg9YS5nbG9iYWxzLnN2Z1dpZHRoKnMsci5oZWlnaHQ9cGFyc2VJbnQoYS5nbG9iYWxzLmRvbS5lbFdyYXAuc3R5bGUuaGVpZ2h0LDEwKSpzO3ZhciBvPVwidHJhbnNwYXJlbnRcIj09PWEuY29uZmlnLmNoYXJ0LmJhY2tncm91bmQ/XCIjZmZmXCI6YS5jb25maWcuY2hhcnQuYmFja2dyb3VuZCxuPXIuZ2V0Q29udGV4dChcIjJkXCIpO24uZmlsbFN0eWxlPW8sbi5maWxsUmVjdCgwLDAsci53aWR0aCpzLHIuaGVpZ2h0KnMpO3ZhciBsPWUuZ2V0U3ZnU3RyaW5nKHMpO2lmKHdpbmRvdy5jYW52ZyYmeC5pc0lFMTEoKSl7dmFyIGg9d2luZG93LmNhbnZnLkNhbnZnLmZyb21TdHJpbmcobixsLHtpZ25vcmVDbGVhcjohMCxpZ25vcmVEaW1lbnNpb25zOiEwfSk7aC5zdGFydCgpO3ZhciBjPXIubXNUb0Jsb2IoKTtoLnN0b3AoKSxpKHtibG9iOmN9KX1lbHNle3ZhciBkPVwiZGF0YTppbWFnZS9zdmcreG1sLFwiK2VuY29kZVVSSUNvbXBvbmVudChsKSxnPW5ldyBJbWFnZTtnLmNyb3NzT3JpZ2luPVwiYW5vbnltb3VzXCIsZy5vbmxvYWQ9ZnVuY3Rpb24oKXtpZihuLmRyYXdJbWFnZShnLDAsMCksci5tc1RvQmxvYil7dmFyIHQ9ci5tc1RvQmxvYigpO2koe2Jsb2I6dH0pfWVsc2V7dmFyIGU9ci50b0RhdGFVUkwoXCJpbWFnZS9wbmdcIik7aSh7aW1nVVJJOmV9KX19LGcuc3JjPWR9fSkpfX0se2tleTpcImV4cG9ydFRvU1ZHXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnRyaWdnZXJEb3dubG9hZCh0aGlzLnN2Z1VybCgpLHRoaXMudy5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuc3ZnLmZpbGVuYW1lLFwiLnN2Z1wiKX19LHtrZXk6XCJleHBvcnRUb1BuZ1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmRhdGFVUkkoKS50aGVuKChmdW5jdGlvbihlKXt2YXIgaT1lLmltZ1VSSSxhPWUuYmxvYjthP25hdmlnYXRvci5tc1NhdmVPck9wZW5CbG9iKGEsdC53Lmdsb2JhbHMuY2hhcnRJRCtcIi5wbmdcIik6dC50cmlnZ2VyRG93bmxvYWQoaSx0LncuY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LnBuZy5maWxlbmFtZSxcIi5wbmdcIil9KSl9fSx7a2V5OlwiZXhwb3J0VG9DU1ZcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dC5zZXJpZXMsYT10LmZpbGVOYW1lLHM9dC5jb2x1bW5EZWxpbWl0ZXIscj12b2lkIDA9PT1zP1wiLFwiOnMsbz10LmxpbmVEZWxpbWl0ZXIsbj12b2lkIDA9PT1vP1wiXFxuXCI6byxsPXRoaXMudztpfHwoaT1sLmNvbmZpZy5zZXJpZXMpO3ZhciBoPVtdLGM9W10sZD1cIlwiLGc9bC5nbG9iYWxzLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuLTE9PT1sLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGUpP3Q6W119KSkscD1NYXRoLm1heC5hcHBseShNYXRoLHUoaS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRhdGE/dC5kYXRhLmxlbmd0aDowfSkpKSksZj1uZXcgVyh0aGlzLmN0eCksYj1uZXcgQih0aGlzLmN0eCksdj1mdW5jdGlvbih0KXt2YXIgaT1cIlwiO2lmKGwuZ2xvYmFscy5heGlzQ2hhcnRzKXtpZihcImNhdGVnb3J5XCI9PT1sLmNvbmZpZy54YXhpcy50eXBlfHxsLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMpaWYobC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCl7dmFyIGE9bC5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF0scz1uZXcgTihlLmN0eCkuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoKTtpPWEobC5nbG9iYWxzLmxhYmVsc1t0XSx7c2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDp0LHc6bH0pfWVsc2UgaT1iLmdldExhYmVsKGwuZ2xvYmFscy5sYWJlbHMsbC5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscywwLHQpLnRleHQ7XCJkYXRldGltZVwiPT09bC5jb25maWcueGF4aXMudHlwZSYmKGwuY29uZmlnLnhheGlzLmNhdGVnb3JpZXMubGVuZ3RoP2k9bC5jb25maWcueGF4aXMuY2F0ZWdvcmllc1t0XTpsLmNvbmZpZy5sYWJlbHMubGVuZ3RoJiYoaT1sLmNvbmZpZy5sYWJlbHNbdF0pKX1lbHNlIGk9bC5jb25maWcubGFiZWxzW3RdO3JldHVybiBBcnJheS5pc0FycmF5KGkpJiYoaT1pLmpvaW4oXCIgXCIpKSx4LmlzTnVtYmVyKGkpP2k6aS5zcGxpdChyKS5qb2luKFwiXCIpfSxtPWZ1bmN0aW9uKHQsZSl7aWYoaC5sZW5ndGgmJjA9PT1lJiZjLnB1c2goaC5qb2luKHIpKSx0LmRhdGEpe3QuZGF0YT10LmRhdGEubGVuZ3RoJiZ0LmRhdGF8fHUoQXJyYXkocCkpLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm5cIlwifSkpO2Zvcih2YXIgYT0wO2E8dC5kYXRhLmxlbmd0aDthKyspe2g9W107dmFyIHM9dihhKTtpZihzfHwoZi5pc0Zvcm1hdFhZKCk/cz1pW2VdLmRhdGFbYV0ueDpmLmlzRm9ybWF0MkRBcnJheSgpJiYocz1pW2VdLmRhdGFbYV0/aVtlXS5kYXRhW2FdWzBdOlwiXCIpKSwwPT09ZSl7aC5wdXNoKChuPXMsXCJkYXRldGltZVwiPT09bC5jb25maWcueGF4aXMudHlwZSYmU3RyaW5nKG4pLmxlbmd0aD49MTA/bC5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuY3N2LmRhdGVGb3JtYXR0ZXIocyk6eC5pc051bWJlcihzKT9zOnMuc3BsaXQocikuam9pbihcIlwiKSkpO2Zvcih2YXIgbz0wO288bC5nbG9iYWxzLnNlcmllcy5sZW5ndGg7bysrKWYuaXNGb3JtYXRYWSgpP2gucHVzaChpW29dLmRhdGFbYV0ueSk6aC5wdXNoKGdbb11bYV0pfShcImNhbmRsZXN0aWNrXCI9PT1sLmNvbmZpZy5jaGFydC50eXBlfHx0LnR5cGUmJlwiY2FuZGxlc3RpY2tcIj09PXQudHlwZSkmJihoLnBvcCgpLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzQ2FuZGxlT1tlXVthXSksaC5wdXNoKGwuZ2xvYmFscy5zZXJpZXNDYW5kbGVIW2VdW2FdKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZUxbZV1bYV0pLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzQ2FuZGxlQ1tlXVthXSkpLChcImJveFBsb3RcIj09PWwuY29uZmlnLmNoYXJ0LnR5cGV8fHQudHlwZSYmXCJib3hQbG90XCI9PT10LnR5cGUpJiYoaC5wb3AoKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZU9bZV1bYV0pLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzQ2FuZGxlSFtlXVthXSksaC5wdXNoKGwuZ2xvYmFscy5zZXJpZXNDYW5kbGVNW2VdW2FdKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZUxbZV1bYV0pLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzQ2FuZGxlQ1tlXVthXSkpLFwicmFuZ2VCYXJcIj09PWwuY29uZmlnLmNoYXJ0LnR5cGUmJihoLnBvcCgpLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzUmFuZ2VTdGFydFtlXVthXSksaC5wdXNoKGwuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZFtlXVthXSkpLGgubGVuZ3RoJiZjLnB1c2goaC5qb2luKHIpKX19dmFyIG59O2gucHVzaChsLmNvbmZpZy5jaGFydC50b29sYmFyLmV4cG9ydC5jc3YuaGVhZGVyQ2F0ZWdvcnkpLFwiYm94UGxvdFwiPT09bC5jb25maWcuY2hhcnQudHlwZT8oaC5wdXNoKFwibWluaW11bVwiKSxoLnB1c2goXCJxMVwiKSxoLnB1c2goXCJtZWRpYW5cIiksaC5wdXNoKFwicTNcIiksaC5wdXNoKFwibWF4aW11bVwiKSk6XCJjYW5kbGVzdGlja1wiPT09bC5jb25maWcuY2hhcnQudHlwZT8oaC5wdXNoKFwib3BlblwiKSxoLnB1c2goXCJoaWdoXCIpLGgucHVzaChcImxvd1wiKSxoLnB1c2goXCJjbG9zZVwiKSk6XCJyYW5nZUJhclwiPT09bC5jb25maWcuY2hhcnQudHlwZT8oaC5wdXNoKFwibWluaW11bVwiKSxoLnB1c2goXCJtYXhpbXVtXCIpKTppLm1hcCgoZnVuY3Rpb24odCxlKXt2YXIgaT10Lm5hbWU/dC5uYW1lOlwic2VyaWVzLVwiLmNvbmNhdChlKTtsLmdsb2JhbHMuYXhpc0NoYXJ0cyYmaC5wdXNoKGkuc3BsaXQocikuam9pbihcIlwiKT9pLnNwbGl0KHIpLmpvaW4oXCJcIik6XCJzZXJpZXMtXCIuY29uY2F0KGUpKX0pKSxsLmdsb2JhbHMuYXhpc0NoYXJ0c3x8KGgucHVzaChsLmNvbmZpZy5jaGFydC50b29sYmFyLmV4cG9ydC5jc3YuaGVhZGVyVmFsdWUpLGMucHVzaChoLmpvaW4ocikpKSxpLm1hcCgoZnVuY3Rpb24odCxlKXtsLmdsb2JhbHMuYXhpc0NoYXJ0cz9tKHQsZSk6KChoPVtdKS5wdXNoKGwuZ2xvYmFscy5sYWJlbHNbZV0uc3BsaXQocikuam9pbihcIlwiKSksaC5wdXNoKGdbZV0pLGMucHVzaChoLmpvaW4ocikpKX0pKSxkKz1jLmpvaW4obiksdGhpcy50cmlnZ2VyRG93bmxvYWQoXCJkYXRhOnRleHQvY3N2OyBjaGFyc2V0PXV0Zi04LFwiK2VuY29kZVVSSUNvbXBvbmVudChcIlxcdWZlZmZcIitkKSxhfHxsLmNvbmZpZy5jaGFydC50b29sYmFyLmV4cG9ydC5jc3YuZmlsZW5hbWUsXCIuY3N2XCIpfX0se2tleTpcInRyaWdnZXJEb3dubG9hZFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTthLmhyZWY9dCxhLmRvd25sb2FkPShlfHx0aGlzLncuZ2xvYmFscy5jaGFydElEKStpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSksYS5jbGljaygpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSl9fV0pLHR9KCksVj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLmVsZ3JpZD1pLHRoaXMudz1lLnc7dmFyIHM9dGhpcy53O3RoaXMuYXhlc1V0aWxzPW5ldyBCKGUpLHRoaXMueGF4aXNMYWJlbHM9cy5nbG9iYWxzLmxhYmVscy5zbGljZSgpLHMuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMubGVuZ3RoPjAmJiFzLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYodGhpcy54YXhpc0xhYmVscz1zLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLnNsaWNlKCkpLHMuY29uZmlnLnhheGlzLm92ZXJ3cml0ZUNhdGVnb3JpZXMmJih0aGlzLnhheGlzTGFiZWxzPXMuY29uZmlnLnhheGlzLm92ZXJ3cml0ZUNhdGVnb3JpZXMpLHRoaXMuZHJhd25MYWJlbHM9W10sdGhpcy5kcmF3bkxhYmVsc1JlY3RzPVtdLFwidG9wXCI9PT1zLmNvbmZpZy54YXhpcy5wb3NpdGlvbj90aGlzLm9mZlk9MDp0aGlzLm9mZlk9cy5nbG9iYWxzLmdyaWRIZWlnaHQrMSx0aGlzLm9mZlk9dGhpcy5vZmZZK3MuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIub2Zmc2V0WSx0aGlzLmlzQ2F0ZWdvcnlCYXJIb3Jpem9udGFsPVwiYmFyXCI9PT1zLmNvbmZpZy5jaGFydC50eXBlJiZzLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbCx0aGlzLnhheGlzRm9udFNpemU9cy5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplLHRoaXMueGF4aXNGb250RmFtaWx5PXMuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250RmFtaWx5LHRoaXMueGF4aXNGb3JlQ29sb3JzPXMuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5jb2xvcnMsdGhpcy54YXhpc0JvcmRlcldpZHRoPXMuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIud2lkdGgsdGhpcy5pc0NhdGVnb3J5QmFySG9yaXpvbnRhbCYmKHRoaXMueGF4aXNCb3JkZXJXaWR0aD1zLmNvbmZpZy55YXhpc1swXS5heGlzQm9yZGVyLndpZHRoLnRvU3RyaW5nKCkpLHRoaXMueGF4aXNCb3JkZXJXaWR0aC5pbmRleE9mKFwiJVwiKT4tMT90aGlzLnhheGlzQm9yZGVyV2lkdGg9cy5nbG9iYWxzLmdyaWRXaWR0aCpwYXJzZUludCh0aGlzLnhheGlzQm9yZGVyV2lkdGgsMTApLzEwMDp0aGlzLnhheGlzQm9yZGVyV2lkdGg9cGFyc2VJbnQodGhpcy54YXhpc0JvcmRlcldpZHRoLDEwKSx0aGlzLnhheGlzQm9yZGVySGVpZ2h0PXMuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIuaGVpZ2h0LHRoaXMueWF4aXM9cy5jb25maWcueWF4aXNbMF19cmV0dXJuIHIodCxbe2tleTpcImRyYXdYYXhpc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9bmV3IG0odGhpcy5jdHgpLGk9ZS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdCh0LmNvbmZpZy54YXhpcy5vZmZzZXRYLFwiLCBcIikuY29uY2F0KHQuY29uZmlnLnhheGlzLm9mZnNldFksXCIpXCIpfSksYT1lLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteGF4aXMtdGV4dHMtZ1wiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIi5jb25jYXQodC5nbG9iYWxzLnRyYW5zbGF0ZVhBeGlzWCxcIiwgXCIpLmNvbmNhdCh0Lmdsb2JhbHMudHJhbnNsYXRlWEF4aXNZLFwiKVwiKX0pO2kuYWRkKGEpO2Zvcih2YXIgcz1bXSxyPTA7cjx0aGlzLnhheGlzTGFiZWxzLmxlbmd0aDtyKyspcy5wdXNoKHRoaXMueGF4aXNMYWJlbHNbcl0pO2lmKHRoaXMuZHJhd1hBeGlzTGFiZWxBbmRHcm91cCghMCxlLGEscyx0Lmdsb2JhbHMuaXNYTnVtZXJpYywoZnVuY3Rpb24odCxlKXtyZXR1cm4gZX0pKSx0Lmdsb2JhbHMuaGFzWGF4aXNHcm91cHMpe3ZhciBvPXQuZ2xvYmFscy5ncm91cHM7cz1bXTtmb3IodmFyIG49MDtuPG8ubGVuZ3RoO24rKylzLnB1c2gob1tuXS50aXRsZSk7dmFyIGw9e307dC5jb25maWcueGF4aXMuZ3JvdXAuc3R5bGUmJihsLnhheGlzRm9udFNpemU9dC5jb25maWcueGF4aXMuZ3JvdXAuc3R5bGUuZm9udFNpemUsbC54YXhpc0ZvbnRGYW1pbHk9dC5jb25maWcueGF4aXMuZ3JvdXAuc3R5bGUuZm9udEZhbWlseSxsLnhheGlzRm9yZUNvbG9ycz10LmNvbmZpZy54YXhpcy5ncm91cC5zdHlsZS5jb2xvcnMsbC5mb250V2VpZ2h0PXQuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlLmZvbnRXZWlnaHQsbC5jc3NDbGFzcz10LmNvbmZpZy54YXhpcy5ncm91cC5zdHlsZS5jc3NDbGFzcyksdGhpcy5kcmF3WEF4aXNMYWJlbEFuZEdyb3VwKCExLGUsYSxzLCExLChmdW5jdGlvbih0LGUpe3JldHVybiBvW3RdLmNvbHMqZX0pLGwpfWlmKHZvaWQgMCE9PXQuY29uZmlnLnhheGlzLnRpdGxlLnRleHQpe3ZhciBoPWUuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy10aXRsZVwifSksYz1lLmRyYXdUZXh0KHt4OnQuZ2xvYmFscy5ncmlkV2lkdGgvMit0LmNvbmZpZy54YXhpcy50aXRsZS5vZmZzZXRYLHk6dGhpcy5vZmZZK3BhcnNlRmxvYXQodGhpcy54YXhpc0ZvbnRTaXplKSsoXCJib3R0b21cIj09PXQuY29uZmlnLnhheGlzLnBvc2l0aW9uP3QuZ2xvYmFscy54QXhpc0xhYmVsc0hlaWdodDotdC5nbG9iYWxzLnhBeGlzTGFiZWxzSGVpZ2h0LTEwKSt0LmNvbmZpZy54YXhpcy50aXRsZS5vZmZzZXRZLHRleHQ6dC5jb25maWcueGF4aXMudGl0bGUudGV4dCx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9udFNpemU6dC5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTp0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6dC5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFdlaWdodCxmb3JlQ29sb3I6dC5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuY29sb3IsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLXRpdGxlLXRleHQgXCIrdC5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuY3NzQ2xhc3N9KTtoLmFkZChjKSxpLmFkZChoKX1pZih0LmNvbmZpZy54YXhpcy5heGlzQm9yZGVyLnNob3cpe3ZhciBkPXQuZ2xvYmFscy5iYXJQYWRGb3JOdW1lcmljQXhpcyxnPWUuZHJhd0xpbmUodC5nbG9iYWxzLnBhZEhvcml6b250YWwrdC5jb25maWcueGF4aXMuYXhpc0JvcmRlci5vZmZzZXRYLWQsdGhpcy5vZmZZLHRoaXMueGF4aXNCb3JkZXJXaWR0aCtkLHRoaXMub2ZmWSx0LmNvbmZpZy54YXhpcy5heGlzQm9yZGVyLmNvbG9yLDAsdGhpcy54YXhpc0JvcmRlckhlaWdodCk7dGhpcy5lbGdyaWQmJnRoaXMuZWxncmlkLmVsR3JpZEJvcmRlcnMmJnQuY29uZmlnLmdyaWQuc2hvdz90aGlzLmVsZ3JpZC5lbEdyaWRCb3JkZXJzLmFkZChnKTppLmFkZChnKX1yZXR1cm4gaX19LHtrZXk6XCJkcmF3WEF4aXNMYWJlbEFuZEdyb3VwXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzLHIpe3ZhciBvLG49dGhpcyxsPWFyZ3VtZW50cy5sZW5ndGg+NiYmdm9pZCAwIT09YXJndW1lbnRzWzZdP2FyZ3VtZW50c1s2XTp7fSxoPVtdLGM9W10sZD10aGlzLncsZz1sLnhheGlzRm9udFNpemV8fHRoaXMueGF4aXNGb250U2l6ZSx1PWwueGF4aXNGb250RmFtaWx5fHx0aGlzLnhheGlzRm9udEZhbWlseSxwPWwueGF4aXNGb3JlQ29sb3JzfHx0aGlzLnhheGlzRm9yZUNvbG9ycyxmPWwuZm9udFdlaWdodHx8ZC5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRXZWlnaHQseD1sLmNzc0NsYXNzfHxkLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuY3NzQ2xhc3MsYj1kLmdsb2JhbHMucGFkSG9yaXpvbnRhbCx2PWEubGVuZ3RoLG09XCJjYXRlZ29yeVwiPT09ZC5jb25maWcueGF4aXMudHlwZT9kLmdsb2JhbHMuZGF0YVBvaW50czp2O2lmKDA9PT1tJiZ2Pm0mJihtPXYpLHMpe3ZhciB5PW0+MT9tLTE6bTtvPWQuZ2xvYmFscy5ncmlkV2lkdGgveSxiPWIrcigwLG8pLzIrZC5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFh9ZWxzZSBvPWQuZ2xvYmFscy5ncmlkV2lkdGgvbSxiPWIrcigwLG8pK2QuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRYO2Zvcih2YXIgdz1mdW5jdGlvbihzKXt2YXIgbD1iLXIocyxvKS8yK2QuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRYOzA9PT1zJiYxPT09diYmby8yPT09YiYmMT09PW0mJihsPWQuZ2xvYmFscy5ncmlkV2lkdGgvMik7dmFyIHk9bi5heGVzVXRpbHMuZ2V0TGFiZWwoYSxkLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLGwscyxoLGcsdCksdz0yODtkLmdsb2JhbHMucm90YXRlWExhYmVscyYmdCYmKHc9MjIpLGQuY29uZmlnLnhheGlzLnRpdGxlLnRleHQmJlwidG9wXCI9PT1kLmNvbmZpZy54YXhpcy5wb3NpdGlvbiYmKHcrPXBhcnNlRmxvYXQoZC5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFNpemUpKzIpLHR8fCh3PXcrcGFyc2VGbG9hdChnKSsoZC5nbG9iYWxzLnhBeGlzTGFiZWxzSGVpZ2h0LWQuZ2xvYmFscy54QXhpc0dyb3VwTGFiZWxzSGVpZ2h0KSsoZC5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM/MTA6MCkpLHk9dm9pZCAwIT09ZC5jb25maWcueGF4aXMudGlja0Ftb3VudCYmXCJkYXRhUG9pbnRzXCIhPT1kLmNvbmZpZy54YXhpcy50aWNrQW1vdW50JiZcImRhdGV0aW1lXCIhPT1kLmNvbmZpZy54YXhpcy50eXBlP24uYXhlc1V0aWxzLmNoZWNrTGFiZWxCYXNlZE9uVGlja2Ftb3VudChzLHksdik6bi5heGVzVXRpbHMuY2hlY2tGb3JPdmVyZmxvd2luZ0xhYmVscyhzLHksdixoLGMpO2lmKGQuY29uZmlnLnhheGlzLmxhYmVscy5zaG93KXt2YXIgaz1lLmRyYXdUZXh0KHt4OnkueCx5Om4ub2ZmWStkLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WSt3LShcInRvcFwiPT09ZC5jb25maWcueGF4aXMucG9zaXRpb24/ZC5nbG9iYWxzLnhBeGlzSGVpZ2h0K2QuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5oZWlnaHQtMjowKSx0ZXh0OnkudGV4dCx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9udFdlaWdodDp5LmlzQm9sZD82MDA6Zixmb250U2l6ZTpnLGZvbnRGYW1pbHk6dSxmb3JlQ29sb3I6QXJyYXkuaXNBcnJheShwKT90JiZkLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWM/cFtkLmdsb2JhbHMubWluWCtzLTFdOnBbc106cCxpc1BsYWluVGV4dDohMSxjc3NDbGFzczoodD9cImFwZXhjaGFydHMteGF4aXMtbGFiZWwgXCI6XCJhcGV4Y2hhcnRzLXhheGlzLWdyb3VwLWxhYmVsIFwiKSt4fSk7aWYoaS5hZGQoayksay5vbihcImNsaWNrXCIsKGZ1bmN0aW9uKHQpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGQuY29uZmlnLmNoYXJ0LmV2ZW50cy54QXhpc0xhYmVsQ2xpY2spe3ZhciBlPU9iamVjdC5hc3NpZ24oe30sZCx7bGFiZWxJbmRleDpzfSk7ZC5jb25maWcuY2hhcnQuZXZlbnRzLnhBeGlzTGFiZWxDbGljayh0LG4uY3R4LGUpfX0pKSx0KXt2YXIgQT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZC5nbG9iYWxzLlNWR05TLFwidGl0bGVcIik7QS50ZXh0Q29udGVudD1BcnJheS5pc0FycmF5KHkudGV4dCk/eS50ZXh0LmpvaW4oXCIgXCIpOnkudGV4dCxrLm5vZGUuYXBwZW5kQ2hpbGQoQSksXCJcIiE9PXkudGV4dCYmKGgucHVzaCh5LnRleHQpLGMucHVzaCh5KSl9fXM8di0xJiYoYis9cihzKzEsbykpfSxrPTA7azw9di0xO2srKyl3KGspfX0se2tleTpcImRyYXdYYXhpc0ludmVyc2VkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaSxhPXRoaXMscz10aGlzLncscj1uZXcgbSh0aGlzLmN0eCksbz1zLmNvbmZpZy55YXhpc1swXS5vcHBvc2l0ZT9zLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW3RdOjAsbj1yLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXMgYXBleGNoYXJ0cy14YXhpcy1pbnZlcnNlZFwiLHJlbDp0fSksbD1yLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXMtdGV4dHMtZyBhcGV4Y2hhcnRzLXhheGlzLWludmVyc2VkLXRleHRzLWdcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIrbytcIiwgMClcIn0pO24uYWRkKGwpO3ZhciBoPVtdO2lmKHMuY29uZmlnLnlheGlzW3RdLnNob3cpZm9yKHZhciBjPTA7Yzx0aGlzLnhheGlzTGFiZWxzLmxlbmd0aDtjKyspaC5wdXNoKHRoaXMueGF4aXNMYWJlbHNbY10pO2U9cy5nbG9iYWxzLmdyaWRIZWlnaHQvaC5sZW5ndGgsaT0tZS8yLjI7dmFyIGQ9cy5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF0sZz1zLmNvbmZpZy55YXhpc1swXS5sYWJlbHM7aWYoZy5zaG93KWZvcih2YXIgdT1mdW5jdGlvbihvKXt2YXIgbj12b2lkIDA9PT1oW29dP1wiXCI6aFtvXTtuPWQobix7c2VyaWVzSW5kZXg6dCxkYXRhUG9pbnRJbmRleDpvLHc6c30pO3ZhciBjPWEuYXhlc1V0aWxzLmdldFlBeGlzRm9yZUNvbG9yKGcuc3R5bGUuY29sb3JzLHQpLHU9MDtBcnJheS5pc0FycmF5KG4pJiYodT1uLmxlbmd0aC8yKnBhcnNlSW50KGcuc3R5bGUuZm9udFNpemUsMTApKTt2YXIgcD1nLm9mZnNldFgtMTUsZj1cImVuZFwiO2EueWF4aXMub3Bwb3NpdGUmJihmPVwic3RhcnRcIiksXCJsZWZ0XCI9PT1zLmNvbmZpZy55YXhpc1swXS5sYWJlbHMuYWxpZ24/KHA9Zy5vZmZzZXRYLGY9XCJzdGFydFwiKTpcImNlbnRlclwiPT09cy5jb25maWcueWF4aXNbMF0ubGFiZWxzLmFsaWduPyhwPWcub2Zmc2V0WCxmPVwibWlkZGxlXCIpOlwicmlnaHRcIj09PXMuY29uZmlnLnlheGlzWzBdLmxhYmVscy5hbGlnbiYmKGY9XCJlbmRcIik7dmFyIHg9ci5kcmF3VGV4dCh7eDpwLHk6aStlK2cub2Zmc2V0WS11LHRleHQ6bix0ZXh0QW5jaG9yOmYsZm9yZUNvbG9yOkFycmF5LmlzQXJyYXkoYyk/Y1tvXTpjLGZvbnRTaXplOmcuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTpnLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDpnLnN0eWxlLmZvbnRXZWlnaHQsaXNQbGFpblRleHQ6ITEsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLWxhYmVsIFwiK2cuc3R5bGUuY3NzQ2xhc3MsbWF4V2lkdGg6Zy5tYXhXaWR0aH0pO2wuYWRkKHgpLHgub24oXCJjbGlja1wiLChmdW5jdGlvbih0KXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBzLmNvbmZpZy5jaGFydC5ldmVudHMueEF4aXNMYWJlbENsaWNrKXt2YXIgZT1PYmplY3QuYXNzaWduKHt9LHMse2xhYmVsSW5kZXg6b30pO3MuY29uZmlnLmNoYXJ0LmV2ZW50cy54QXhpc0xhYmVsQ2xpY2sodCxhLmN0eCxlKX19KSk7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHMuZ2xvYmFscy5TVkdOUyxcInRpdGxlXCIpO2lmKGIudGV4dENvbnRlbnQ9QXJyYXkuaXNBcnJheShuKT9uLmpvaW4oXCIgXCIpOm4seC5ub2RlLmFwcGVuZENoaWxkKGIpLDAhPT1zLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMucm90YXRlKXt2YXIgdj1yLnJvdGF0ZUFyb3VuZENlbnRlcih4Lm5vZGUpO3gubm9kZS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInJvdGF0ZShcIi5jb25jYXQocy5jb25maWcueWF4aXNbdF0ubGFiZWxzLnJvdGF0ZSxcIiAwIFwiKS5jb25jYXQodi55LFwiKVwiKSl9aSs9ZX0scD0wO3A8PWgubGVuZ3RoLTE7cCsrKXUocCk7aWYodm9pZCAwIT09cy5jb25maWcueWF4aXNbMF0udGl0bGUudGV4dCl7dmFyIGY9ci5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLXRpdGxlIGFwZXhjaGFydHMteGF4aXMtdGl0bGUtaW52ZXJzZWRcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIrbytcIiwgMClcIn0pLHg9ci5kcmF3VGV4dCh7eDpzLmNvbmZpZy55YXhpc1swXS50aXRsZS5vZmZzZXRYLHk6cy5nbG9iYWxzLmdyaWRIZWlnaHQvMitzLmNvbmZpZy55YXhpc1swXS50aXRsZS5vZmZzZXRZLHRleHQ6cy5jb25maWcueWF4aXNbMF0udGl0bGUudGV4dCx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9yZUNvbG9yOnMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmNvbG9yLGZvbnRTaXplOnMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmZvbnRTaXplLGZvbnRXZWlnaHQ6cy5jb25maWcueWF4aXNbMF0udGl0bGUuc3R5bGUuZm9udFdlaWdodCxmb250RmFtaWx5OnMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmZvbnRGYW1pbHksY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLXRpdGxlLXRleHQgXCIrcy5jb25maWcueWF4aXNbMF0udGl0bGUuc3R5bGUuY3NzQ2xhc3N9KTtmLmFkZCh4KSxuLmFkZChmKX12YXIgYj0wO3RoaXMuaXNDYXRlZ29yeUJhckhvcml6b250YWwmJnMuY29uZmlnLnlheGlzWzBdLm9wcG9zaXRlJiYoYj1zLmdsb2JhbHMuZ3JpZFdpZHRoKTt2YXIgdj1zLmNvbmZpZy54YXhpcy5heGlzQm9yZGVyO2lmKHYuc2hvdyl7dmFyIHk9ci5kcmF3TGluZShzLmdsb2JhbHMucGFkSG9yaXpvbnRhbCt2Lm9mZnNldFgrYiwxK3Yub2Zmc2V0WSxzLmdsb2JhbHMucGFkSG9yaXpvbnRhbCt2Lm9mZnNldFgrYixzLmdsb2JhbHMuZ3JpZEhlaWdodCt2Lm9mZnNldFksdi5jb2xvciwwKTt0aGlzLmVsZ3JpZCYmdGhpcy5lbGdyaWQuZWxHcmlkQm9yZGVycyYmcy5jb25maWcuZ3JpZC5zaG93P3RoaXMuZWxncmlkLmVsR3JpZEJvcmRlcnMuYWRkKHkpOm4uYWRkKHkpfXJldHVybiBzLmNvbmZpZy55YXhpc1swXS5heGlzVGlja3Muc2hvdyYmdGhpcy5heGVzVXRpbHMuZHJhd1lBeGlzVGlja3MoYixoLmxlbmd0aCxzLmNvbmZpZy55YXhpc1swXS5heGlzQm9yZGVyLHMuY29uZmlnLnlheGlzWzBdLmF4aXNUaWNrcywwLGUsbiksbn19LHtrZXk6XCJkcmF3WGF4aXNUaWNrc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLncscz10O2lmKCEodDwwfHx0LTI+YS5nbG9iYWxzLmdyaWRXaWR0aCkpe3ZhciByPXRoaXMub2ZmWSthLmNvbmZpZy54YXhpcy5heGlzVGlja3Mub2Zmc2V0WTtpZihlPWUrcithLmNvbmZpZy54YXhpcy5heGlzVGlja3MuaGVpZ2h0LFwidG9wXCI9PT1hLmNvbmZpZy54YXhpcy5wb3NpdGlvbiYmKGU9ci1hLmNvbmZpZy54YXhpcy5heGlzVGlja3MuaGVpZ2h0KSxhLmNvbmZpZy54YXhpcy5heGlzVGlja3Muc2hvdyl7dmFyIG89bmV3IG0odGhpcy5jdHgpLmRyYXdMaW5lKHQrYS5jb25maWcueGF4aXMuYXhpc1RpY2tzLm9mZnNldFgscithLmNvbmZpZy54YXhpcy5vZmZzZXRZLHMrYS5jb25maWcueGF4aXMuYXhpc1RpY2tzLm9mZnNldFgsZSthLmNvbmZpZy54YXhpcy5vZmZzZXRZLGEuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5jb2xvcik7aS5hZGQobyksby5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXhheGlzLXRpY2tcIil9fX19LHtrZXk6XCJnZXRYQXhpc1RpY2tzUG9zaXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT1bXSxpPXRoaXMueGF4aXNMYWJlbHMubGVuZ3RoLGE9dC5nbG9iYWxzLnBhZEhvcml6b250YWw7aWYodC5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscy5sZW5ndGg+MClmb3IodmFyIHM9MDtzPGk7cysrKWE9dGhpcy54YXhpc0xhYmVsc1tzXS5wb3NpdGlvbixlLnB1c2goYSk7ZWxzZSBmb3IodmFyIHI9aSxvPTA7bzxyO28rKyl7dmFyIG49cjt0Lmdsb2JhbHMuaXNYTnVtZXJpYyYmXCJiYXJcIiE9PXQuY29uZmlnLmNoYXJ0LnR5cGUmJihuLT0xKSxhKz10Lmdsb2JhbHMuZ3JpZFdpZHRoL24sZS5wdXNoKGEpfXJldHVybiBlfX0se2tleTpcInhBeGlzTGFiZWxDb3JyZWN0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9bmV3IG0odGhpcy5jdHgpLGk9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXhheGlzLXRleHRzLWdcIiksYT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMteGF4aXMtdGV4dHMtZyB0ZXh0Om5vdCguYXBleGNoYXJ0cy14YXhpcy1ncm91cC1sYWJlbClcIikscz10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMteWF4aXMtaW52ZXJzZWQgdGV4dFwiKSxyPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy14YXhpcy1pbnZlcnNlZC10ZXh0cy1nIHRleHQgdHNwYW5cIik7aWYodC5nbG9iYWxzLnJvdGF0ZVhMYWJlbHN8fHQuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGVBbHdheXMpZm9yKHZhciBvPTA7bzxhLmxlbmd0aDtvKyspe3ZhciBuPWUucm90YXRlQXJvdW5kQ2VudGVyKGFbb10pO24ueT1uLnktMSxuLng9bi54KzEsYVtvXS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInJvdGF0ZShcIi5jb25jYXQodC5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZSxcIiBcIikuY29uY2F0KG4ueCxcIiBcIikuY29uY2F0KG4ueSxcIilcIikpLGFbb10uc2V0QXR0cmlidXRlKFwidGV4dC1hbmNob3JcIixcImVuZFwiKTtpLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwidHJhbnNsYXRlKDAsIFwiLmNvbmNhdCgtMTAsXCIpXCIpKTt2YXIgbD1hW29dLmNoaWxkTm9kZXM7dC5jb25maWcueGF4aXMubGFiZWxzLnRyaW0mJkFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwobCwoZnVuY3Rpb24oaSl7ZS5wbGFjZVRleHRXaXRoRWxsaXBzaXMoaSxpLnRleHRDb250ZW50LHQuZ2xvYmFscy54QXhpc0xhYmVsc0hlaWdodC0oXCJib3R0b21cIj09PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbj8yMDoxMCkpfSkpfWVsc2UhZnVuY3Rpb24oKXtmb3IodmFyIGk9dC5nbG9iYWxzLmdyaWRXaWR0aC8odC5nbG9iYWxzLmxhYmVscy5sZW5ndGgrMSkscz0wO3M8YS5sZW5ndGg7cysrKXt2YXIgcj1hW3NdLmNoaWxkTm9kZXM7dC5jb25maWcueGF4aXMubGFiZWxzLnRyaW0mJlwiZGF0ZXRpbWVcIiE9PXQuY29uZmlnLnhheGlzLnR5cGUmJkFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwociwoZnVuY3Rpb24odCl7ZS5wbGFjZVRleHRXaXRoRWxsaXBzaXModCx0LnRleHRDb250ZW50LGkpfSkpfX0oKTtpZihzLmxlbmd0aD4wKXt2YXIgaD1zW3MubGVuZ3RoLTFdLmdldEJCb3goKSxjPXNbMF0uZ2V0QkJveCgpO2gueDwtMjAmJnNbcy5sZW5ndGgtMV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzW3MubGVuZ3RoLTFdKSxjLngrYy53aWR0aD50Lmdsb2JhbHMuZ3JpZFdpZHRoJiYhdC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmc1swXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNbMF0pO2Zvcih2YXIgZD0wO2Q8ci5sZW5ndGg7ZCsrKWUucGxhY2VUZXh0V2l0aEVsbGlwc2lzKHJbZF0scltkXS50ZXh0Q29udGVudCx0LmNvbmZpZy55YXhpc1swXS5sYWJlbHMubWF4V2lkdGgtKHQuY29uZmlnLnlheGlzWzBdLnRpdGxlLnRleHQ/MipwYXJzZUZsb2F0KHQuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmZvbnRTaXplKTowKS0xNSl9fX1dKSx0fSgpLGo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnc7dmFyIGk9dGhpcy53O3RoaXMueGF4aXNMYWJlbHM9aS5nbG9iYWxzLmxhYmVscy5zbGljZSgpLHRoaXMuYXhlc1V0aWxzPW5ldyBCKGUpLHRoaXMuaXNSYW5nZUJhcj1pLmdsb2JhbHMuc2VyaWVzUmFuZ2UubGVuZ3RoLGkuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMubGVuZ3RoPjAmJih0aGlzLnhheGlzTGFiZWxzPWkuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMuc2xpY2UoKSl9cmV0dXJuIHIodCxbe2tleTpcImRyYXdHcmlkQXJlYVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGwsZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCk7bnVsbD09PXQmJih0PWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1ncmlkXCJ9KSk7dmFyIGE9aS5kcmF3TGluZShlLmdsb2JhbHMucGFkSG9yaXpvbnRhbCwxLGUuZ2xvYmFscy5wYWRIb3Jpem9udGFsLGUuZ2xvYmFscy5ncmlkSGVpZ2h0LFwidHJhbnNwYXJlbnRcIikscz1pLmRyYXdMaW5lKGUuZ2xvYmFscy5wYWRIb3Jpem9udGFsLGUuZ2xvYmFscy5ncmlkSGVpZ2h0LGUuZ2xvYmFscy5ncmlkV2lkdGgsZS5nbG9iYWxzLmdyaWRIZWlnaHQsXCJ0cmFuc3BhcmVudFwiKTtyZXR1cm4gdC5hZGQocyksdC5hZGQoYSksdH19LHtrZXk6XCJkcmF3R3JpZFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9bnVsbDtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuYXhpc0NoYXJ0cyYmKHQ9dGhpcy5yZW5kZXJHcmlkKCksdGhpcy5kcmF3R3JpZEFyZWEodC5lbCkpLHR9fSx7a2V5OlwiY3JlYXRlR3JpZE1hc2tcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuZ2xvYmFscyxpPW5ldyBtKHRoaXMuY3R4KSxhPUFycmF5LmlzQXJyYXkodC5jb25maWcuc3Ryb2tlLndpZHRoKT8wOnQuY29uZmlnLnN0cm9rZS53aWR0aDtpZihBcnJheS5pc0FycmF5KHQuY29uZmlnLnN0cm9rZS53aWR0aCkpe3ZhciBzPTA7dC5jb25maWcuc3Ryb2tlLndpZHRoLmZvckVhY2goKGZ1bmN0aW9uKHQpe3M9TWF0aC5tYXgocyx0KX0pKSxhPXN9ZS5kb20uZWxHcmlkUmVjdE1hc2s9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuU1ZHTlMsXCJjbGlwUGF0aFwiKSxlLmRvbS5lbEdyaWRSZWN0TWFzay5zZXRBdHRyaWJ1dGUoXCJpZFwiLFwiZ3JpZFJlY3RNYXNrXCIuY29uY2F0KGUuY3VpZCkpLGUuZG9tLmVsR3JpZFJlY3RNYXJrZXJNYXNrPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLlNWR05TLFwiY2xpcFBhdGhcIiksZS5kb20uZWxHcmlkUmVjdE1hcmtlck1hc2suc2V0QXR0cmlidXRlKFwiaWRcIixcImdyaWRSZWN0TWFya2VyTWFza1wiLmNvbmNhdChlLmN1aWQpKSxlLmRvbS5lbEZvcmVjYXN0TWFzaz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZS5TVkdOUyxcImNsaXBQYXRoXCIpLGUuZG9tLmVsRm9yZWNhc3RNYXNrLnNldEF0dHJpYnV0ZShcImlkXCIsXCJmb3JlY2FzdE1hc2tcIi5jb25jYXQoZS5jdWlkKSksZS5kb20uZWxOb25Gb3JlY2FzdE1hc2s9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuU1ZHTlMsXCJjbGlwUGF0aFwiKSxlLmRvbS5lbE5vbkZvcmVjYXN0TWFzay5zZXRBdHRyaWJ1dGUoXCJpZFwiLFwibm9uRm9yZWNhc3RNYXNrXCIuY29uY2F0KGUuY3VpZCkpO3ZhciByPXQuY29uZmlnLmNoYXJ0LnR5cGUsbz0wLG49MDsoXCJiYXJcIj09PXJ8fFwicmFuZ2VCYXJcIj09PXJ8fFwiY2FuZGxlc3RpY2tcIj09PXJ8fFwiYm94UGxvdFwiPT09cnx8dC5nbG9iYWxzLmNvbWJvQmFyQ291bnQ+MCkmJnQuZ2xvYmFscy5pc1hOdW1lcmljJiYhdC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKG89dC5jb25maWcuZ3JpZC5wYWRkaW5nLmxlZnQsbj10LmNvbmZpZy5ncmlkLnBhZGRpbmcucmlnaHQsZS5iYXJQYWRGb3JOdW1lcmljQXhpcz5vJiYobz1lLmJhclBhZEZvck51bWVyaWNBeGlzLG49ZS5iYXJQYWRGb3JOdW1lcmljQXhpcykpLGUuZG9tLmVsR3JpZFJlY3Q9aS5kcmF3UmVjdCgtYS8yLW8tMiwtYS8yLGUuZ3JpZFdpZHRoK2ErbitvKzQsZS5ncmlkSGVpZ2h0K2EsMCxcIiNmZmZcIik7dmFyIGw9dC5nbG9iYWxzLm1hcmtlcnMubGFyZ2VzdFNpemUrMTtlLmRvbS5lbEdyaWRSZWN0TWFya2VyPWkuZHJhd1JlY3QoMiotbCwyKi1sLGUuZ3JpZFdpZHRoKzQqbCxlLmdyaWRIZWlnaHQrNCpsLDAsXCIjZmZmXCIpLGUuZG9tLmVsR3JpZFJlY3RNYXNrLmFwcGVuZENoaWxkKGUuZG9tLmVsR3JpZFJlY3Qubm9kZSksZS5kb20uZWxHcmlkUmVjdE1hcmtlck1hc2suYXBwZW5kQ2hpbGQoZS5kb20uZWxHcmlkUmVjdE1hcmtlci5ub2RlKTt2YXIgaD1lLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcImRlZnNcIik7aC5hcHBlbmRDaGlsZChlLmRvbS5lbEdyaWRSZWN0TWFzayksaC5hcHBlbmRDaGlsZChlLmRvbS5lbEZvcmVjYXN0TWFzayksaC5hcHBlbmRDaGlsZChlLmRvbS5lbE5vbkZvcmVjYXN0TWFzayksaC5hcHBlbmRDaGlsZChlLmRvbS5lbEdyaWRSZWN0TWFya2VyTWFzayl9fSx7a2V5OlwiX2RyYXdHcmlkTGluZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmksaT10LngxLGE9dC55MSxzPXQueDIscj10LnkyLG89dC54Q291bnQsbj10LnBhcmVudCxsPXRoaXMudztpZighKDA9PT1lJiZsLmdsb2JhbHMuc2tpcEZpcnN0VGltZWxpbmVsYWJlbHx8ZT09PW8tMSYmbC5nbG9iYWxzLnNraXBMYXN0VGltZWxpbmVsYWJlbCYmIWwuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXJ8fFwicmFkYXJcIj09PWwuY29uZmlnLmNoYXJ0LnR5cGUpKXtsLmNvbmZpZy5ncmlkLnhheGlzLmxpbmVzLnNob3cmJnRoaXMuX2RyYXdHcmlkTGluZSh7aTplLHgxOmkseTE6YSx4MjpzLHkyOnIseENvdW50Om8scGFyZW50Om59KTt2YXIgaD0wO2lmKGwuZ2xvYmFscy5oYXNYYXhpc0dyb3VwcyYmXCJiZXR3ZWVuXCI9PT1sLmNvbmZpZy54YXhpcy50aWNrUGxhY2VtZW50KXt2YXIgYz1sLmdsb2JhbHMuZ3JvdXBzO2lmKGMpe2Zvcih2YXIgZD0wLGc9MDtkPGUmJmc8Yy5sZW5ndGg7ZysrKWQrPWNbZ10uY29scztkPT09ZSYmKGg9LjYqbC5nbG9iYWxzLnhBeGlzTGFiZWxzSGVpZ2h0KX19bmV3IFYodGhpcy5jdHgpLmRyYXdYYXhpc1RpY2tzKGksaCxsLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsKX19fSx7a2V5OlwiX2RyYXdHcmlkTGluZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaSxpPXQueDEsYT10LnkxLHM9dC54MixyPXQueTIsbz10LnhDb3VudCxuPXQucGFyZW50LGw9dGhpcy53LGg9ITEsYz1uLm5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1ncmlkbGluZXMtaG9yaXpvbnRhbFwiKSxkPWwuY29uZmlnLmdyaWQuc3Ryb2tlRGFzaEFycmF5LGc9bC5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzOygwPT09YSYmMD09PXJ8fDA9PT1pJiYwPT09cykmJihoPSEwKSxhPT09bC5nbG9iYWxzLmdyaWRIZWlnaHQmJnI9PT1sLmdsb2JhbHMuZ3JpZEhlaWdodCYmKGg9ITApLCFsLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsfHwwIT09ZSYmZSE9PW8tMXx8KGg9ITApO3ZhciB1PW5ldyBtKHRoaXMpLmRyYXdMaW5lKGktKGM/ZzowKSxhLHMrKGM/ZzowKSxyLGwuY29uZmlnLmdyaWQuYm9yZGVyQ29sb3IsZCk7dS5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWdyaWRsaW5lXCIpLGgmJmwuY29uZmlnLmdyaWQuc2hvdz90aGlzLmVsR3JpZEJvcmRlcnMuYWRkKHUpOm4uYWRkKHUpfX0se2tleTpcIl9kcmF3R3JpZEJhbmRSZWN0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5jLGk9dC54MSxhPXQueTEscz10LngyLHI9dC55MixvPXQudHlwZSxuPXRoaXMudyxsPW5ldyBtKHRoaXMuY3R4KSxoPW4uZ2xvYmFscy5iYXJQYWRGb3JOdW1lcmljQXhpcztpZihcImNvbHVtblwiIT09b3x8XCJkYXRldGltZVwiIT09bi5jb25maWcueGF4aXMudHlwZSl7dmFyIGM9bi5jb25maWcuZ3JpZFtvXS5jb2xvcnNbZV0sZD1sLmRyYXdSZWN0KGktKFwicm93XCI9PT1vP2g6MCksYSxzKyhcInJvd1wiPT09bz8yKmg6MCksciwwLGMsbi5jb25maWcuZ3JpZFtvXS5vcGFjaXR5KTt0aGlzLmVsZy5hZGQoZCksZC5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFza1wiLmNvbmNhdChuLmdsb2JhbHMuY3VpZCxcIilcIikpLGQubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1ncmlkLVwiLmNvbmNhdChvKSl9fX0se2tleTpcIl9kcmF3WFlMaW5lc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10LnhDb3VudCxhPXQudGlja0Ftb3VudCxzPXRoaXMudztpZihzLmNvbmZpZy5ncmlkLnhheGlzLmxpbmVzLnNob3d8fHMuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5zaG93KXt2YXIgcixvPXMuZ2xvYmFscy5wYWRIb3Jpem9udGFsLG49cy5nbG9iYWxzLmdyaWRIZWlnaHQ7cy5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscy5sZW5ndGg/ZnVuY3Rpb24odCl7Zm9yKHZhciBhPXQueEMscz10LngxLHI9dC55MSxvPXQueDIsbj10LnkyLGw9MDtsPGE7bCsrKXM9ZS54YXhpc0xhYmVsc1tsXS5wb3NpdGlvbixvPWUueGF4aXNMYWJlbHNbbF0ucG9zaXRpb24sZS5fZHJhd0dyaWRMaW5lcyh7aTpsLHgxOnMseTE6cix4MjpvLHkyOm4seENvdW50OmkscGFyZW50OmUuZWxncmlkTGluZXNWfSl9KHt4QzppLHgxOm8seTE6MCx4MjpyLHkyOm59KToocy5nbG9iYWxzLmlzWE51bWVyaWMmJihpPXMuZ2xvYmFscy54QXhpc1NjYWxlLnJlc3VsdC5sZW5ndGgpLGZ1bmN0aW9uKHQpe2Zvcih2YXIgYT10LnhDLHI9dC54MSxvPXQueTEsbj10LngyLGw9dC55MixoPTA7aDxhKyhzLmdsb2JhbHMuaXNYTnVtZXJpYz8wOjEpO2grKykwPT09aCYmMT09PWEmJjE9PT1zLmdsb2JhbHMuZGF0YVBvaW50cyYmKG49cj1zLmdsb2JhbHMuZ3JpZFdpZHRoLzIpLGUuX2RyYXdHcmlkTGluZXMoe2k6aCx4MTpyLHkxOm8seDI6bix5MjpsLHhDb3VudDppLHBhcmVudDplLmVsZ3JpZExpbmVzVn0pLG49cis9cy5nbG9iYWxzLmdyaWRXaWR0aC8ocy5nbG9iYWxzLmlzWE51bWVyaWM/YS0xOmEpfSh7eEM6aSx4MTpvLHkxOjAseDI6cix5MjpufSkpfWlmKHMuY29uZmlnLmdyaWQueWF4aXMubGluZXMuc2hvdyl7dmFyIGw9MCxoPTAsYz1zLmdsb2JhbHMuZ3JpZFdpZHRoLGQ9YSsxO3RoaXMuaXNSYW5nZUJhciYmKGQ9cy5nbG9iYWxzLmxhYmVscy5sZW5ndGgpO2Zvcih2YXIgZz0wO2c8ZCsodGhpcy5pc1JhbmdlQmFyPzE6MCk7ZysrKXRoaXMuX2RyYXdHcmlkTGluZSh7aTpnLHhDb3VudDpkKyh0aGlzLmlzUmFuZ2VCYXI/MTowKSx4MTowLHkxOmwseDI6Yyx5MjpoLHBhcmVudDp0aGlzLmVsZ3JpZExpbmVzSH0pLGg9bCs9cy5nbG9iYWxzLmdyaWRIZWlnaHQvKHRoaXMuaXNSYW5nZUJhcj9kOmEpfX19LHtrZXk6XCJfZHJhd0ludmVydGVkWFlMaW5lc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQueENvdW50LGk9dGhpcy53O2lmKGkuY29uZmlnLmdyaWQueGF4aXMubGluZXMuc2hvd3x8aS5jb25maWcueGF4aXMuYXhpc1RpY2tzLnNob3cpZm9yKHZhciBhLHM9aS5nbG9iYWxzLnBhZEhvcml6b250YWwscj1pLmdsb2JhbHMuZ3JpZEhlaWdodCxvPTA7bzxlKzE7bysrKXtpLmNvbmZpZy5ncmlkLnhheGlzLmxpbmVzLnNob3cmJnRoaXMuX2RyYXdHcmlkTGluZSh7aTpvLHhDb3VudDplKzEseDE6cyx5MTowLHgyOmEseTI6cixwYXJlbnQ6dGhpcy5lbGdyaWRMaW5lc1Z9KSxuZXcgVih0aGlzLmN0eCkuZHJhd1hheGlzVGlja3MocywwLGkuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwpLGE9cz1zK2kuZ2xvYmFscy5ncmlkV2lkdGgvZSsuM31pZihpLmNvbmZpZy5ncmlkLnlheGlzLmxpbmVzLnNob3cpZm9yKHZhciBuPTAsbD0wLGg9aS5nbG9iYWxzLmdyaWRXaWR0aCxjPTA7YzxpLmdsb2JhbHMuZGF0YVBvaW50cysxO2MrKyl0aGlzLl9kcmF3R3JpZExpbmUoe2k6Yyx4Q291bnQ6aS5nbG9iYWxzLmRhdGFQb2ludHMrMSx4MTowLHkxOm4seDI6aCx5MjpsLHBhcmVudDp0aGlzLmVsZ3JpZExpbmVzSH0pLGw9bis9aS5nbG9iYWxzLmdyaWRIZWlnaHQvaS5nbG9iYWxzLmRhdGFQb2ludHN9fSx7a2V5OlwicmVuZGVyR3JpZFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9bmV3IG0odGhpcy5jdHgpO3RoaXMuZWxnPWUuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1ncmlkXCJ9KSx0aGlzLmVsZ3JpZExpbmVzSD1lLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZ3JpZGxpbmVzLWhvcml6b250YWxcIn0pLHRoaXMuZWxncmlkTGluZXNWPWUuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1ncmlkbGluZXMtdmVydGljYWxcIn0pLHRoaXMuZWxHcmlkQm9yZGVycz1lLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZ3JpZC1ib3JkZXJzXCJ9KSx0aGlzLmVsZy5hZGQodGhpcy5lbGdyaWRMaW5lc0gpLHRoaXMuZWxnLmFkZCh0aGlzLmVsZ3JpZExpbmVzViksdC5jb25maWcuZ3JpZC5zaG93fHwodGhpcy5lbGdyaWRMaW5lc1YuaGlkZSgpLHRoaXMuZWxncmlkTGluZXNILmhpZGUoKSx0aGlzLmVsR3JpZEJvcmRlcnMuaGlkZSgpKTtmb3IodmFyIGksYT10Lmdsb2JhbHMueUF4aXNTY2FsZS5sZW5ndGg/dC5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0Lmxlbmd0aC0xOjUscz0wO3M8dC5nbG9iYWxzLnNlcmllcy5sZW5ndGgmJih2b2lkIDAhPT10Lmdsb2JhbHMueUF4aXNTY2FsZVtzXSYmKGE9dC5nbG9iYWxzLnlBeGlzU2NhbGVbc10ucmVzdWx0Lmxlbmd0aC0xKSwhKGE+MikpO3MrKyk7cmV0dXJuIXQuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fHRoaXMuaXNSYW5nZUJhcj8oaT10aGlzLnhheGlzTGFiZWxzLmxlbmd0aCx0aGlzLmlzUmFuZ2VCYXImJihpLS0sYT10Lmdsb2JhbHMubGFiZWxzLmxlbmd0aCx0LmNvbmZpZy54YXhpcy50aWNrQW1vdW50JiZ0LmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyJiYoaT10LmNvbmZpZy54YXhpcy50aWNrQW1vdW50KSksdGhpcy5fZHJhd1hZTGluZXMoe3hDb3VudDppLHRpY2tBbW91bnQ6YX0pKTooaT1hLGE9dC5nbG9iYWxzLnhUaWNrQW1vdW50LHRoaXMuX2RyYXdJbnZlcnRlZFhZTGluZXMoe3hDb3VudDppLHRpY2tBbW91bnQ6YX0pKSx0aGlzLmRyYXdHcmlkQmFuZHMoaSxhKSx7ZWw6dGhpcy5lbGcsZWxHcmlkQm9yZGVyczp0aGlzLmVsR3JpZEJvcmRlcnMseEF4aXNUaWNrV2lkdGg6dC5nbG9iYWxzLmdyaWRXaWR0aC9pfX19LHtrZXk6XCJkcmF3R3JpZEJhbmRzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aWYodm9pZCAwIT09aS5jb25maWcuZ3JpZC5yb3cuY29sb3JzJiZpLmNvbmZpZy5ncmlkLnJvdy5jb2xvcnMubGVuZ3RoPjApZm9yKHZhciBhPTAscz1pLmdsb2JhbHMuZ3JpZEhlaWdodC9lLHI9aS5nbG9iYWxzLmdyaWRXaWR0aCxvPTAsbj0wO288ZTtvKyssbisrKW4+PWkuY29uZmlnLmdyaWQucm93LmNvbG9ycy5sZW5ndGgmJihuPTApLHRoaXMuX2RyYXdHcmlkQmFuZFJlY3Qoe2M6bix4MTowLHkxOmEseDI6cix5MjpzLHR5cGU6XCJyb3dcIn0pLGErPWkuZ2xvYmFscy5ncmlkSGVpZ2h0L2U7aWYodm9pZCAwIT09aS5jb25maWcuZ3JpZC5jb2x1bW4uY29sb3JzJiZpLmNvbmZpZy5ncmlkLmNvbHVtbi5jb2xvcnMubGVuZ3RoPjApZm9yKHZhciBsPWkuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fFwiY2F0ZWdvcnlcIiE9PWkuY29uZmlnLnhheGlzLnR5cGUmJiFpLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWM/dDp0LTEsaD1pLmdsb2JhbHMucGFkSG9yaXpvbnRhbCxjPWkuZ2xvYmFscy5wYWRIb3Jpem9udGFsK2kuZ2xvYmFscy5ncmlkV2lkdGgvbCxkPWkuZ2xvYmFscy5ncmlkSGVpZ2h0LGc9MCx1PTA7Zzx0O2crKyx1KyspdT49aS5jb25maWcuZ3JpZC5jb2x1bW4uY29sb3JzLmxlbmd0aCYmKHU9MCksdGhpcy5fZHJhd0dyaWRCYW5kUmVjdCh7Yzp1LHgxOmgseTE6MCx4MjpjLHkyOmQsdHlwZTpcImNvbHVtblwifSksaCs9aS5nbG9iYWxzLmdyaWRXaWR0aC9sfX1dKSx0fSgpLF89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcIm5pY2VTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjEwLGE9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOjAscz1hcmd1bWVudHMubGVuZ3RoPjQ/YXJndW1lbnRzWzRdOnZvaWQgMCxyPXRoaXMudyxvPU1hdGguYWJzKGUtdCk7aWYoXCJkYXRhUG9pbnRzXCI9PT0oaT10aGlzLl9hZGp1c3RUaWNrc0ZvclNtYWxsUmFuZ2UoaSxhLG8pKSYmKGk9ci5nbG9iYWxzLmRhdGFQb2ludHMtMSksdD09PU51bWJlci5NSU5fVkFMVUUmJjA9PT1lfHwheC5pc051bWJlcih0KSYmIXguaXNOdW1iZXIoZSl8fHQ9PT1OdW1iZXIuTUlOX1ZBTFVFJiZlPT09LU51bWJlci5NQVhfVkFMVUUpcmV0dXJuIHQ9MCxlPWksdGhpcy5saW5lYXJTY2FsZSh0LGUsaSk7dD5lPyhjb25zb2xlLndhcm4oXCJheGlzLm1pbiBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIGF4aXMubWF4XCIpLGU9dCsuMSk6dD09PWUmJih0PTA9PT10PzA6dC0uNSxlPTA9PT1lPzI6ZSsuNSk7dmFyIG49W107bzwxJiZzJiYoXCJjYW5kbGVzdGlja1wiPT09ci5jb25maWcuY2hhcnQudHlwZXx8XCJjYW5kbGVzdGlja1wiPT09ci5jb25maWcuc2VyaWVzW2FdLnR5cGV8fFwiYm94UGxvdFwiPT09ci5jb25maWcuY2hhcnQudHlwZXx8XCJib3hQbG90XCI9PT1yLmNvbmZpZy5zZXJpZXNbYV0udHlwZXx8ci5nbG9iYWxzLmlzUmFuZ2VEYXRhKSYmKGUqPTEuMDEpO3ZhciBsPWkrMTtsPDI/bD0yOmw+MiYmKGwtPTIpO3ZhciBoPW8vbCxjPU1hdGguZmxvb3IoeC5sb2cxMChoKSksZD1NYXRoLnBvdygxMCxjKSxnPU1hdGgucm91bmQoaC9kKTtnPDEmJihnPTEpO3ZhciB1PWcqZCxwPXUqTWF0aC5mbG9vcih0L3UpLGY9dSpNYXRoLmNlaWwoZS91KSxiPXA7aWYocyYmbz4yKXtmb3IoO24ucHVzaChiKSwhKChiKz11KT5mKTspO3JldHVybntyZXN1bHQ6bixuaWNlTWluOm5bMF0sbmljZU1heDpuW24ubGVuZ3RoLTFdfX12YXIgdj10OyhuPVtdKS5wdXNoKHYpO2Zvcih2YXIgbT1NYXRoLmFicyhlLXQpL2kseT0wO3k8PWk7eSsrKXYrPW0sbi5wdXNoKHYpO3JldHVybiBuW24ubGVuZ3RoLTJdPj1lJiZuLnBvcCgpLHtyZXN1bHQ6bixuaWNlTWluOm5bMF0sbmljZU1heDpuW24ubGVuZ3RoLTFdfX19LHtrZXk6XCJsaW5lYXJTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjEwLGE9YXJndW1lbnRzLmxlbmd0aD4zP2FyZ3VtZW50c1szXTp2b2lkIDAscz1NYXRoLmFicyhlLXQpO1wiZGF0YVBvaW50c1wiPT09KGk9dGhpcy5fYWRqdXN0VGlja3NGb3JTbWFsbFJhbmdlKGksYSxzKSkmJihpPXRoaXMudy5nbG9iYWxzLmRhdGFQb2ludHMtMSk7dmFyIHI9cy9pO2k9PT1OdW1iZXIuTUFYX1ZBTFVFJiYoaT0xMCxyPTEpO2Zvcih2YXIgbz1bXSxuPXQ7aT49MDspby5wdXNoKG4pLG4rPXIsaS09MTtyZXR1cm57cmVzdWx0Om8sbmljZU1pbjpvWzBdLG5pY2VNYXg6b1tvLmxlbmd0aC0xXX19fSx7a2V5OlwibG9nYXJpdGhtaWNTY2FsZU5pY2VcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7ZTw9MCYmKGU9TWF0aC5tYXgodCxpKSksdDw9MCYmKHQ9TWF0aC5taW4oZSxpKSk7Zm9yKHZhciBhPVtdLHM9TWF0aC5jZWlsKE1hdGgubG9nKGUpL01hdGgubG9nKGkpKzEpLHI9TWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLmxvZyhpKSk7cjxzO3IrKylhLnB1c2goTWF0aC5wb3coaSxyKSk7cmV0dXJue3Jlc3VsdDphLG5pY2VNaW46YVswXSxuaWNlTWF4OmFbYS5sZW5ndGgtMV19fX0se2tleTpcImxvZ2FyaXRobWljU2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7ZTw9MCYmKGU9TWF0aC5tYXgodCxpKSksdDw9MCYmKHQ9TWF0aC5taW4oZSxpKSk7Zm9yKHZhciBhPVtdLHM9TWF0aC5sb2coZSkvTWF0aC5sb2coaSkscj1NYXRoLmxvZyh0KS9NYXRoLmxvZyhpKSxvPXMtcixuPU1hdGgucm91bmQobyksbD1vL24saD0wLGM9cjtoPG47aCsrLGMrPWwpYS5wdXNoKE1hdGgucG93KGksYykpO3JldHVybiBhLnB1c2goTWF0aC5wb3coaSxzKSkse3Jlc3VsdDphLG5pY2VNaW46dCxuaWNlTWF4OmV9fX0se2tleTpcIl9hZGp1c3RUaWNrc0ZvclNtYWxsUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dDtpZih2b2lkIDAhPT1lJiZ0aGlzLncuY29uZmlnLnlheGlzW2VdLmxhYmVscy5mb3JtYXR0ZXImJnZvaWQgMD09PXRoaXMudy5jb25maWcueWF4aXNbZV0udGlja0Ftb3VudCl7dmFyIHM9TnVtYmVyKHRoaXMudy5jb25maWcueWF4aXNbZV0ubGFiZWxzLmZvcm1hdHRlcigxKSk7eC5pc051bWJlcihzKSYmMD09PXRoaXMudy5nbG9iYWxzLnlWYWx1ZURlY2ltYWwmJihhPU1hdGguY2VpbChpKSl9cmV0dXJuIGE8dD9hOnR9fSx7a2V5Olwic2V0WVNjYWxlRm9ySW5kZXhcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53Lmdsb2JhbHMscz10aGlzLncuY29uZmlnLHI9YS5pc0Jhckhvcml6b250YWw/cy54YXhpczpzLnlheGlzW3RdO3ZvaWQgMD09PWEueUF4aXNTY2FsZVt0XSYmKGEueUF4aXNTY2FsZVt0XT1bXSk7dmFyIG89TWF0aC5hYnMoaS1lKTtpZihyLmxvZ2FyaXRobWljJiZvPD01JiYoYS5pbnZhbGlkTG9nU2NhbGU9ITApLHIubG9nYXJpdGhtaWMmJm8+NSlhLmFsbFNlcmllc0NvbGxhcHNlZD0hMSxhLnlBeGlzU2NhbGVbdF09dGhpcy5sb2dhcml0aG1pY1NjYWxlKGUsaSxyLmxvZ0Jhc2UpLGEueUF4aXNTY2FsZVt0XT1yLmZvcmNlTmljZVNjYWxlP3RoaXMubG9nYXJpdGhtaWNTY2FsZU5pY2UoZSxpLHIubG9nQmFzZSk6dGhpcy5sb2dhcml0aG1pY1NjYWxlKGUsaSxyLmxvZ0Jhc2UpO2Vsc2UgaWYoaSE9PS1OdW1iZXIuTUFYX1ZBTFVFJiZ4LmlzTnVtYmVyKGkpKWlmKGEuYWxsU2VyaWVzQ29sbGFwc2VkPSExLHZvaWQgMD09PXIubWluJiZ2b2lkIDA9PT1yLm1heHx8ci5mb3JjZU5pY2VTY2FsZSl7dmFyIG49dm9pZCAwPT09cy55YXhpc1t0XS5tYXgmJnZvaWQgMD09PXMueWF4aXNbdF0ubWlufHxzLnlheGlzW3RdLmZvcmNlTmljZVNjYWxlO2EueUF4aXNTY2FsZVt0XT10aGlzLm5pY2VTY2FsZShlLGksci50aWNrQW1vdW50P3IudGlja0Ftb3VudDpvPDUmJm8+MT9vKzE6NSx0LG4pfWVsc2UgYS55QXhpc1NjYWxlW3RdPXRoaXMubGluZWFyU2NhbGUoZSxpLHIudGlja0Ftb3VudCx0KTtlbHNlIGEueUF4aXNTY2FsZVt0XT10aGlzLmxpbmVhclNjYWxlKDAsNSw1KX19LHtrZXk6XCJzZXRYU2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPWkuZ2xvYmFscyxzPWkuY29uZmlnLnhheGlzLHI9TWF0aC5hYnMoZS10KTtyZXR1cm4gZSE9PS1OdW1iZXIuTUFYX1ZBTFVFJiZ4LmlzTnVtYmVyKGUpP2EueEF4aXNTY2FsZT10aGlzLmxpbmVhclNjYWxlKHQsZSxzLnRpY2tBbW91bnQ/cy50aWNrQW1vdW50OnI8NSYmcj4xP3IrMTo1LDApOmEueEF4aXNTY2FsZT10aGlzLmxpbmVhclNjYWxlKDAsNSw1KSxhLnhBeGlzU2NhbGV9fSx7a2V5Olwic2V0TXVsdGlwbGVZU2NhbGVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53Lmdsb2JhbHMsaT10aGlzLncuY29uZmlnLGE9ZS5taW5ZQXJyLmNvbmNhdChbXSkscz1lLm1heFlBcnIuY29uY2F0KFtdKSxyPVtdO2kueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24oZSxvKXt2YXIgbj1vO2kuc2VyaWVzLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7dC5uYW1lPT09ZS5zZXJpZXNOYW1lJiYobj1pLG8hPT1pP3IucHVzaCh7aW5kZXg6aSxzaW1pbGFySW5kZXg6byxhbHJlYWR5RXhpc3RzOiEwfSk6ci5wdXNoKHtpbmRleDppfSkpfSkpO3ZhciBsPWFbbl0saD1zW25dO3Quc2V0WVNjYWxlRm9ySW5kZXgobyxsLGgpfSkpLHRoaXMuc2FtZVNjYWxlSW5NdWx0aXBsZUF4ZXMoYSxzLHIpfX0se2tleTpcInNhbWVTY2FsZUluTXVsdGlwbGVBeGVzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMscz10aGlzLncuY29uZmlnLHI9dGhpcy53Lmdsb2JhbHMsbz1bXTtpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuYWxyZWFkeUV4aXN0cyYmKHZvaWQgMD09PW9bdC5pbmRleF0mJihvW3QuaW5kZXhdPVtdKSxvW3QuaW5kZXhdLnB1c2godC5pbmRleCksb1t0LmluZGV4XS5wdXNoKHQuc2ltaWxhckluZGV4KSl9KSksci55QXhpc1NhbWVTY2FsZUluZGljZXM9byxvLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7by5mb3JFYWNoKChmdW5jdGlvbihpLGEpe3ZhciBzLHI7ZSE9PWEmJihzPXQscj1pLHMuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4tMSE9PXIuaW5kZXhPZih0KX0pKSkubGVuZ3RoPjAmJihvW2VdPW9bZV0uY29uY2F0KG9bYV0pKX0pKX0pKTt2YXIgbj1vLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbihlLGkpe3JldHVybiB0LmluZGV4T2YoZSk9PT1pfSkpfSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuc29ydCgpfSkpO289by5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiEhdH0pKTt2YXIgbD1uLnNsaWNlKCksaD1sLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpfSkpO2w9bC5maWx0ZXIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGguaW5kZXhPZihKU09OLnN0cmluZ2lmeSh0KSk9PT1lfSkpO3ZhciBjPVtdLGQ9W107dC5mb3JFYWNoKChmdW5jdGlvbih0LGkpe2wuZm9yRWFjaCgoZnVuY3Rpb24oYSxzKXthLmluZGV4T2YoaSk+LTEmJih2b2lkIDA9PT1jW3NdJiYoY1tzXT1bXSxkW3NdPVtdKSxjW3NdLnB1c2goe2tleTppLHZhbHVlOnR9KSxkW3NdLnB1c2goe2tleTppLHZhbHVlOmVbaV19KSl9KSl9KSk7dmFyIGc9QXJyYXkuYXBwbHkobnVsbCxBcnJheShsLmxlbmd0aCkpLm1hcChOdW1iZXIucHJvdG90eXBlLnZhbHVlT2YsTnVtYmVyLk1JTl9WQUxVRSksdT1BcnJheS5hcHBseShudWxsLEFycmF5KGwubGVuZ3RoKSkubWFwKE51bWJlci5wcm90b3R5cGUudmFsdWVPZiwtTnVtYmVyLk1BWF9WQUxVRSk7Yy5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtnW2VdPU1hdGgubWluKHQudmFsdWUsZ1tlXSl9KSl9KSksZC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXt1W2VdPU1hdGgubWF4KHQudmFsdWUsdVtlXSl9KSl9KSksdC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe2QuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXt2YXIgbz1nW2ldLG49dVtpXTtzLmNoYXJ0LnN0YWNrZWQmJihuPTAsdC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QudmFsdWUhPT0tTnVtYmVyLk1BWF9WQUxVRSYmKG4rPXQudmFsdWUpLG8hPT1OdW1iZXIuTUlOX1ZBTFVFJiYobys9Y1tpXVtlXS52YWx1ZSl9KSkpLHQuZm9yRWFjaCgoZnVuY3Rpb24oaSxsKXt0W2xdLmtleT09PWUmJih2b2lkIDAhPT1zLnlheGlzW2VdLm1pbiYmKG89XCJmdW5jdGlvblwiPT10eXBlb2Ygcy55YXhpc1tlXS5taW4/cy55YXhpc1tlXS5taW4oci5taW5ZKTpzLnlheGlzW2VdLm1pbiksdm9pZCAwIT09cy55YXhpc1tlXS5tYXgmJihuPVwiZnVuY3Rpb25cIj09dHlwZW9mIHMueWF4aXNbZV0ubWF4P3MueWF4aXNbZV0ubWF4KHIubWF4WSk6cy55YXhpc1tlXS5tYXgpLGEuc2V0WVNjYWxlRm9ySW5kZXgoZSxvLG4pKX0pKX0pKX0pKX19LHtrZXk6XCJhdXRvU2NhbGVZXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3R8fCh0PXRoaXMpO3ZhciBhPXQudztpZihhLmdsb2JhbHMuaXNNdWx0aXBsZVlBeGlzfHxhLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aClyZXR1cm4gY29uc29sZS53YXJuKFwiYXV0b1NjYWxlWWF4aXMgaXMgbm90IHN1cHBvcnRlZCBpbiBhIG11bHRpLXlheGlzIGNoYXJ0LlwiKSxlO3ZhciBzPWEuZ2xvYmFscy5zZXJpZXNYWzBdLHI9YS5jb25maWcuY2hhcnQuc3RhY2tlZDtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbih0LG8pe2Zvcih2YXIgbj0wLGw9MDtsPHMubGVuZ3RoO2wrKylpZihzW2xdPj1pLnhheGlzLm1pbil7bj1sO2JyZWFrfXZhciBoLGMsZD1hLmdsb2JhbHMubWluWUFycltvXSxnPWEuZ2xvYmFscy5tYXhZQXJyW29dLHU9YS5nbG9iYWxzLnN0YWNrZWRTZXJpZXNUb3RhbHM7YS5nbG9iYWxzLnNlcmllcy5mb3JFYWNoKChmdW5jdGlvbihvLGwpe3ZhciBwPW9bbl07cj8ocD11W25dLGg9Yz1wLHUuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXtzW2VdPD1pLnhheGlzLm1heCYmc1tlXT49aS54YXhpcy5taW4mJih0PmMmJm51bGwhPT10JiYoYz10KSxvW2VdPGgmJm51bGwhPT1vW2VdJiYoaD1vW2VdKSl9KSkpOihoPWM9cCxvLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7aWYoc1tlXTw9aS54YXhpcy5tYXgmJnNbZV0+PWkueGF4aXMubWluKXt2YXIgcj10LG89dDthLmdsb2JhbHMuc2VyaWVzLmZvckVhY2goKGZ1bmN0aW9uKGksYSl7bnVsbCE9PXQmJihyPU1hdGgubWluKGlbZV0sciksbz1NYXRoLm1heChpW2VdLG8pKX0pKSxvPmMmJm51bGwhPT1vJiYoYz1vKSxyPGgmJm51bGwhPT1yJiYoaD1yKX19KSkpLHZvaWQgMD09PWgmJnZvaWQgMD09PWMmJihoPWQsYz1nKSxjKj1jPDA/Ljk6MS4xLDA9PT0oaCo9aDwwPzEuMTouOSkmJjA9PT1jJiYoaD0tMSxjPTEpLGM8MCYmYzxnJiYoYz1nKSxoPDAmJmg+ZCYmKGg9ZCksZS5sZW5ndGg+MT8oZVtsXS5taW49dm9pZCAwPT09dC5taW4/aDp0Lm1pbixlW2xdLm1heD12b2lkIDA9PT10Lm1heD9jOnQubWF4KTooZVswXS5taW49dm9pZCAwPT09dC5taW4/aDp0Lm1pbixlWzBdLm1heD12b2lkIDA9PT10Lm1heD9jOnQubWF4KX0pKX0pKSxlfX1dKSx0fSgpLFU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5zY2FsZXM9bmV3IF8oZSl9cmV0dXJuIHIodCxbe2tleTpcImluaXRcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2V0WVJhbmdlKCksdGhpcy5zZXRYUmFuZ2UoKSx0aGlzLnNldFpSYW5nZSgpfX0se2tleTpcImdldE1pbllNYXhZXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOk51bWJlci5NQVhfVkFMVUUsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06LU51bWJlci5NQVhfVkFMVUUsYT1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106bnVsbCxzPXRoaXMudy5jb25maWcscj10aGlzLncuZ2xvYmFscyxvPS1OdW1iZXIuTUFYX1ZBTFVFLG49TnVtYmVyLk1JTl9WQUxVRTtudWxsPT09YSYmKGE9dCsxKTt2YXIgbD1yLnNlcmllcyxoPWwsYz1sO1wiY2FuZGxlc3RpY2tcIj09PXMuY2hhcnQudHlwZT8oaD1yLnNlcmllc0NhbmRsZUwsYz1yLnNlcmllc0NhbmRsZUgpOlwiYm94UGxvdFwiPT09cy5jaGFydC50eXBlPyhoPXIuc2VyaWVzQ2FuZGxlTyxjPXIuc2VyaWVzQ2FuZGxlQyk6ci5pc1JhbmdlRGF0YSYmKGg9ci5zZXJpZXNSYW5nZVN0YXJ0LGM9ci5zZXJpZXNSYW5nZUVuZCk7Zm9yKHZhciBkPXQ7ZDxhO2QrKyl7ci5kYXRhUG9pbnRzPU1hdGgubWF4KHIuZGF0YVBvaW50cyxsW2RdLmxlbmd0aCksci5jYXRlZ29yeUxhYmVscy5sZW5ndGgmJihyLmRhdGFQb2ludHM9ci5jYXRlZ29yeUxhYmVscy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDAhPT10fSkpLmxlbmd0aCk7Zm9yKHZhciBnPTA7ZzxyLnNlcmllc1tkXS5sZW5ndGg7ZysrKXt2YXIgdT1sW2RdW2ddO251bGwhPT11JiZ4LmlzTnVtYmVyKHUpPyh2b2lkIDAhPT1jW2RdW2ddJiYobz1NYXRoLm1heChvLGNbZF1bZ10pLGU9TWF0aC5taW4oZSxjW2RdW2ddKSksdm9pZCAwIT09aFtkXVtnXSYmKGU9TWF0aC5taW4oZSxoW2RdW2ddKSxpPU1hdGgubWF4KGksaFtkXVtnXSkpLFwiY2FuZGxlc3RpY2tcIiE9PXRoaXMudy5jb25maWcuY2hhcnQudHlwZSYmXCJib3hQbG90XCIhPT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUmJlwicmFuZ2VBcmVhXCI9PT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUmJlwicmFuZ2VCYXJcIj09PXRoaXMudy5jb25maWcuY2hhcnQudHlwZXx8KFwiY2FuZGxlc3RpY2tcIiE9PXRoaXMudy5jb25maWcuY2hhcnQudHlwZSYmXCJib3hQbG90XCIhPT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGV8fHZvaWQgMCE9PXIuc2VyaWVzQ2FuZGxlQ1tkXVtnXSYmKG89TWF0aC5tYXgobyxyLnNlcmllc0NhbmRsZU9bZF1bZ10pLG89TWF0aC5tYXgobyxyLnNlcmllc0NhbmRsZUhbZF1bZ10pLG89TWF0aC5tYXgobyxyLnNlcmllc0NhbmRsZUxbZF1bZ10pLG89TWF0aC5tYXgobyxyLnNlcmllc0NhbmRsZUNbZF1bZ10pLFwiYm94UGxvdFwiPT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlJiYobz1NYXRoLm1heChvLHIuc2VyaWVzQ2FuZGxlTVtkXVtnXSkpKSwhcy5zZXJpZXNbZF0udHlwZXx8XCJjYW5kbGVzdGlja1wiPT09cy5zZXJpZXNbZF0udHlwZSYmXCJib3hQbG90XCI9PT1zLnNlcmllc1tkXS50eXBlJiZcInJhbmdlQXJlYVwiPT09cy5zZXJpZXNbZF0udHlwZSYmXCJyYW5nZUJhclwiPT09cy5zZXJpZXNbZF0udHlwZXx8KG89TWF0aC5tYXgobyxyLnNlcmllc1tkXVtnXSksZT1NYXRoLm1pbihlLHIuc2VyaWVzW2RdW2ddKSksaT1vKSxyLnNlcmllc0dvYWxzW2RdJiZyLnNlcmllc0dvYWxzW2RdW2ddJiZBcnJheS5pc0FycmF5KHIuc2VyaWVzR29hbHNbZF1bZ10pJiZyLnNlcmllc0dvYWxzW2RdW2ddLmZvckVhY2goKGZ1bmN0aW9uKHQpe24hPT1OdW1iZXIuTUlOX1ZBTFVFJiYobj1NYXRoLm1pbihuLHQudmFsdWUpLGU9biksbz1NYXRoLm1heChvLHQudmFsdWUpLGk9b30pKSx4LmlzRmxvYXQodSkmJih1PXgubm9FeHBvbmVudHModSksci55VmFsdWVEZWNpbWFsPU1hdGgubWF4KHIueVZhbHVlRGVjaW1hbCx1LnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzFdLmxlbmd0aCkpLG4+aFtkXVtnXSYmaFtkXVtnXTwwJiYobj1oW2RdW2ddKSk6ci5oYXNOdWxsVmFsdWVzPSEwfX1yZXR1cm5cInJhbmdlQmFyXCI9PT1zLmNoYXJ0LnR5cGUmJnIuc2VyaWVzUmFuZ2VTdGFydC5sZW5ndGgmJnIuaXNCYXJIb3Jpem9udGFsJiYobj1lKSxcImJhclwiPT09cy5jaGFydC50eXBlJiYobjwwJiZvPDAmJihvPTApLG49PT1OdW1iZXIuTUlOX1ZBTFVFJiYobj0wKSkse21pblk6bixtYXhZOm8sbG93ZXN0WTplLGhpZ2hlc3RZOml9fX0se2tleTpcInNldFlSYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMsZT10aGlzLncuY29uZmlnO3QubWF4WT0tTnVtYmVyLk1BWF9WQUxVRSx0Lm1pblk9TnVtYmVyLk1JTl9WQUxVRTt2YXIgaT1OdW1iZXIuTUFYX1ZBTFVFO2lmKHQuaXNNdWx0aXBsZVlBeGlzKWZvcih2YXIgYT0wO2E8dC5zZXJpZXMubGVuZ3RoO2ErKyl7dmFyIHM9dGhpcy5nZXRNaW5ZTWF4WShhLGksbnVsbCxhKzEpO3QubWluWUFyci5wdXNoKHMubWluWSksdC5tYXhZQXJyLnB1c2gocy5tYXhZKSxpPXMubG93ZXN0WX12YXIgcj10aGlzLmdldE1pbllNYXhZKDAsaSxudWxsLHQuc2VyaWVzLmxlbmd0aCk7aWYodC5taW5ZPXIubWluWSx0Lm1heFk9ci5tYXhZLGk9ci5sb3dlc3RZLGUuY2hhcnQuc3RhY2tlZCYmdGhpcy5fc2V0U3RhY2tlZE1pbk1heCgpLChcImxpbmVcIj09PWUuY2hhcnQudHlwZXx8XCJhcmVhXCI9PT1lLmNoYXJ0LnR5cGV8fFwiY2FuZGxlc3RpY2tcIj09PWUuY2hhcnQudHlwZXx8XCJib3hQbG90XCI9PT1lLmNoYXJ0LnR5cGV8fFwicmFuZ2VCYXJcIj09PWUuY2hhcnQudHlwZSYmIXQuaXNCYXJIb3Jpem9udGFsKSYmdC5taW5ZPT09TnVtYmVyLk1JTl9WQUxVRSYmaSE9PS1OdW1iZXIuTUFYX1ZBTFVFJiZpIT09dC5tYXhZKXt2YXIgbz10Lm1heFktaTsoaT49MCYmaTw9MTB8fHZvaWQgMCE9PWUueWF4aXNbMF0ubWlufHx2b2lkIDAhPT1lLnlheGlzWzBdLm1heCkmJihvPTApLHQubWluWT1pLTUqby8xMDAsaT4wJiZ0Lm1pblk8MCYmKHQubWluWT0wKSx0Lm1heFk9dC5tYXhZKzUqby8xMDB9aWYoZS55YXhpcy5mb3JFYWNoKChmdW5jdGlvbihlLGkpe3ZvaWQgMCE9PWUubWF4JiYoXCJudW1iZXJcIj09dHlwZW9mIGUubWF4P3QubWF4WUFycltpXT1lLm1heDpcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLm1heCYmKHQubWF4WUFycltpXT1lLm1heCh0LmlzTXVsdGlwbGVZQXhpcz90Lm1heFlBcnJbaV06dC5tYXhZKSksdC5tYXhZPXQubWF4WUFycltpXSksdm9pZCAwIT09ZS5taW4mJihcIm51bWJlclwiPT10eXBlb2YgZS5taW4/dC5taW5ZQXJyW2ldPWUubWluOlwiZnVuY3Rpb25cIj09dHlwZW9mIGUubWluJiYodC5taW5ZQXJyW2ldPWUubWluKHQuaXNNdWx0aXBsZVlBeGlzP3QubWluWUFycltpXT09PU51bWJlci5NSU5fVkFMVUU/MDp0Lm1pbllBcnJbaV06dC5taW5ZKSksdC5taW5ZPXQubWluWUFycltpXSl9KSksdC5pc0Jhckhvcml6b250YWwpe1tcIm1pblwiLFwibWF4XCJdLmZvckVhY2goKGZ1bmN0aW9uKGkpe3ZvaWQgMCE9PWUueGF4aXNbaV0mJlwibnVtYmVyXCI9PXR5cGVvZiBlLnhheGlzW2ldJiYoXCJtaW5cIj09PWk/dC5taW5ZPWUueGF4aXNbaV06dC5tYXhZPWUueGF4aXNbaV0pfSkpfXJldHVybiB0LmlzTXVsdGlwbGVZQXhpcz8odGhpcy5zY2FsZXMuc2V0TXVsdGlwbGVZU2NhbGVzKCksdC5taW5ZPWksdC55QXhpc1NjYWxlLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7dC5taW5ZQXJyW2ldPWUubmljZU1pbix0Lm1heFlBcnJbaV09ZS5uaWNlTWF4fSkpKToodGhpcy5zY2FsZXMuc2V0WVNjYWxlRm9ySW5kZXgoMCx0Lm1pblksdC5tYXhZKSx0Lm1pblk9dC55QXhpc1NjYWxlWzBdLm5pY2VNaW4sdC5tYXhZPXQueUF4aXNTY2FsZVswXS5uaWNlTWF4LHQubWluWUFyclswXT10LnlBeGlzU2NhbGVbMF0ubmljZU1pbix0Lm1heFlBcnJbMF09dC55QXhpc1NjYWxlWzBdLm5pY2VNYXgpLHttaW5ZOnQubWluWSxtYXhZOnQubWF4WSxtaW5ZQXJyOnQubWluWUFycixtYXhZQXJyOnQubWF4WUFycix5QXhpc1NjYWxlOnQueUF4aXNTY2FsZX19fSx7a2V5Olwic2V0WFJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscyxlPXRoaXMudy5jb25maWcsaT1cIm51bWVyaWNcIj09PWUueGF4aXMudHlwZXx8XCJkYXRldGltZVwiPT09ZS54YXhpcy50eXBlfHxcImNhdGVnb3J5XCI9PT1lLnhheGlzLnR5cGUmJiF0Lm5vTGFiZWxzUHJvdmlkZWR8fHQubm9MYWJlbHNQcm92aWRlZHx8dC5pc1hOdW1lcmljO2lmKHQuaXNYTnVtZXJpYyYmZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPHQuc2VyaWVzLmxlbmd0aDtlKyspaWYodC5sYWJlbHNbZV0pZm9yKHZhciBpPTA7aTx0LmxhYmVsc1tlXS5sZW5ndGg7aSsrKW51bGwhPT10LmxhYmVsc1tlXVtpXSYmeC5pc051bWJlcih0LmxhYmVsc1tlXVtpXSkmJih0Lm1heFg9TWF0aC5tYXgodC5tYXhYLHQubGFiZWxzW2VdW2ldKSx0LmluaXRpYWxNYXhYPU1hdGgubWF4KHQubWF4WCx0LmxhYmVsc1tlXVtpXSksdC5taW5YPU1hdGgubWluKHQubWluWCx0LmxhYmVsc1tlXVtpXSksdC5pbml0aWFsTWluWD1NYXRoLm1pbih0Lm1pblgsdC5sYWJlbHNbZV1baV0pKX0oKSx0Lm5vTGFiZWxzUHJvdmlkZWQmJjA9PT1lLnhheGlzLmNhdGVnb3JpZXMubGVuZ3RoJiYodC5tYXhYPXQubGFiZWxzW3QubGFiZWxzLmxlbmd0aC0xXSx0LmluaXRpYWxNYXhYPXQubGFiZWxzW3QubGFiZWxzLmxlbmd0aC0xXSx0Lm1pblg9MSx0LmluaXRpYWxNaW5YPTEpLHQuaXNYTnVtZXJpY3x8dC5ub0xhYmVsc1Byb3ZpZGVkfHx0LmRhdGFGb3JtYXRYTnVtZXJpYyl7dmFyIGE7aWYodm9pZCAwPT09ZS54YXhpcy50aWNrQW1vdW50PyhhPU1hdGgucm91bmQodC5zdmdXaWR0aC8xNTApLFwibnVtZXJpY1wiPT09ZS54YXhpcy50eXBlJiZ0LmRhdGFQb2ludHM8MzAmJihhPXQuZGF0YVBvaW50cy0xKSxhPnQuZGF0YVBvaW50cyYmMCE9PXQuZGF0YVBvaW50cyYmKGE9dC5kYXRhUG9pbnRzLTEpKTpcImRhdGFQb2ludHNcIj09PWUueGF4aXMudGlja0Ftb3VudD8odC5zZXJpZXMubGVuZ3RoPjEmJihhPXQuc2VyaWVzW3QubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoLTEpLHQuaXNYTnVtZXJpYyYmKGE9dC5tYXhYLXQubWluWC0xKSk6YT1lLnhheGlzLnRpY2tBbW91bnQsdC54VGlja0Ftb3VudD1hLHZvaWQgMCE9PWUueGF4aXMubWF4JiZcIm51bWJlclwiPT10eXBlb2YgZS54YXhpcy5tYXgmJih0Lm1heFg9ZS54YXhpcy5tYXgpLHZvaWQgMCE9PWUueGF4aXMubWluJiZcIm51bWJlclwiPT10eXBlb2YgZS54YXhpcy5taW4mJih0Lm1pblg9ZS54YXhpcy5taW4pLHZvaWQgMCE9PWUueGF4aXMucmFuZ2UmJih0Lm1pblg9dC5tYXhYLWUueGF4aXMucmFuZ2UpLHQubWluWCE9PU51bWJlci5NQVhfVkFMVUUmJnQubWF4WCE9PS1OdW1iZXIuTUFYX1ZBTFVFKWlmKGUueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYhdC5kYXRhRm9ybWF0WE51bWVyaWMpe2Zvcih2YXIgcz1bXSxyPXQubWluWC0xO3I8dC5tYXhYO3IrKylzLnB1c2gocisxKTt0LnhBeGlzU2NhbGU9e3Jlc3VsdDpzLG5pY2VNaW46c1swXSxuaWNlTWF4OnNbcy5sZW5ndGgtMV19fWVsc2UgdC54QXhpc1NjYWxlPXRoaXMuc2NhbGVzLnNldFhTY2FsZSh0Lm1pblgsdC5tYXhYKTtlbHNlIHQueEF4aXNTY2FsZT10aGlzLnNjYWxlcy5saW5lYXJTY2FsZSgxLGEsYSksdC5ub0xhYmVsc1Byb3ZpZGVkJiZ0LmxhYmVscy5sZW5ndGg+MCYmKHQueEF4aXNTY2FsZT10aGlzLnNjYWxlcy5saW5lYXJTY2FsZSgxLHQubGFiZWxzLmxlbmd0aCxhLTEpLHQuc2VyaWVzWD10LmxhYmVscy5zbGljZSgpKTtpJiYodC5sYWJlbHM9dC54QXhpc1NjYWxlLnJlc3VsdC5zbGljZSgpKX1yZXR1cm4gdC5pc0Jhckhvcml6b250YWwmJnQubGFiZWxzLmxlbmd0aCYmKHQueFRpY2tBbW91bnQ9dC5sYWJlbHMubGVuZ3RoKSx0aGlzLl9oYW5kbGVTaW5nbGVEYXRhUG9pbnQoKSx0aGlzLl9nZXRNaW5YRGlmZigpLHttaW5YOnQubWluWCxtYXhYOnQubWF4WH19fSx7a2V5Olwic2V0WlJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscztpZih0LmlzRGF0YVhZWilmb3IodmFyIGU9MDtlPHQuc2VyaWVzLmxlbmd0aDtlKyspaWYodm9pZCAwIT09dC5zZXJpZXNaW2VdKWZvcih2YXIgaT0wO2k8dC5zZXJpZXNaW2VdLmxlbmd0aDtpKyspbnVsbCE9PXQuc2VyaWVzWltlXVtpXSYmeC5pc051bWJlcih0LnNlcmllc1pbZV1baV0pJiYodC5tYXhaPU1hdGgubWF4KHQubWF4Wix0LnNlcmllc1pbZV1baV0pLHQubWluWj1NYXRoLm1pbih0Lm1pblosdC5zZXJpZXNaW2VdW2ldKSl9fSx7a2V5OlwiX2hhbmRsZVNpbmdsZURhdGFQb2ludFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMsZT10aGlzLncuY29uZmlnO2lmKHQubWluWD09PXQubWF4WCl7dmFyIGk9bmV3IEkodGhpcy5jdHgpO2lmKFwiZGF0ZXRpbWVcIj09PWUueGF4aXMudHlwZSl7dmFyIGE9aS5nZXREYXRlKHQubWluWCk7ZS54YXhpcy5sYWJlbHMuZGF0ZXRpbWVVVEM/YS5zZXRVVENEYXRlKGEuZ2V0VVRDRGF0ZSgpLTIpOmEuc2V0RGF0ZShhLmdldERhdGUoKS0yKSx0Lm1pblg9bmV3IERhdGUoYSkuZ2V0VGltZSgpO3ZhciBzPWkuZ2V0RGF0ZSh0Lm1heFgpO2UueGF4aXMubGFiZWxzLmRhdGV0aW1lVVRDP3Muc2V0VVRDRGF0ZShzLmdldFVUQ0RhdGUoKSsyKTpzLnNldERhdGUocy5nZXREYXRlKCkrMiksdC5tYXhYPW5ldyBEYXRlKHMpLmdldFRpbWUoKX1lbHNlKFwibnVtZXJpY1wiPT09ZS54YXhpcy50eXBlfHxcImNhdGVnb3J5XCI9PT1lLnhheGlzLnR5cGUmJiF0Lm5vTGFiZWxzUHJvdmlkZWQpJiYodC5taW5YPXQubWluWC0yLHQuaW5pdGlhbE1pblg9dC5taW5YLHQubWF4WD10Lm1heFgrMix0LmluaXRpYWxNYXhYPXQubWF4WCl9fX0se2tleTpcIl9nZXRNaW5YRGlmZlwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHM7dC5pc1hOdW1lcmljJiZ0LnNlcmllc1guZm9yRWFjaCgoZnVuY3Rpb24oZSxpKXsxPT09ZS5sZW5ndGgmJmUucHVzaCh0LnNlcmllc1hbdC5tYXhWYWxzSW5BcnJheUluZGV4XVt0LnNlcmllc1hbdC5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGgtMV0pO3ZhciBhPWUuc2xpY2UoKTthLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQtZX0pKSxhLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7aWYoaT4wKXt2YXIgcz1lLWFbaS0xXTtzPjAmJih0Lm1pblhEaWZmPU1hdGgubWluKHMsdC5taW5YRGlmZikpfX0pKSwxIT09dC5kYXRhUG9pbnRzJiZ0Lm1pblhEaWZmIT09TnVtYmVyLk1BWF9WQUxVRXx8KHQubWluWERpZmY9LjUpfSkpfX0se2tleTpcIl9zZXRTdGFja2VkTWluTWF4XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53Lmdsb2JhbHM7aWYoZS5zZXJpZXMubGVuZ3RoKXt2YXIgaT1lLnNlcmllc0dyb3VwcztpLmxlbmd0aHx8KGk9W3RoaXMudy5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubmFtZX0pKV0pO3ZhciBhPXt9LHM9e307aS5mb3JFYWNoKChmdW5jdGlvbihpKXthW2ldPVtdLHNbaV09W10sdC53LmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBpLmluZGV4T2YodC5uYW1lKT4tMT9lOm51bGx9KSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9PXR9KSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7Zm9yKHZhciByPTA7cjxlLnNlcmllc1tlLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aDtyKyspdm9pZCAwPT09YVtpXVtyXSYmKGFbaV1bcl09MCxzW2ldW3JdPTApLG51bGwhPT1lLnNlcmllc1t0XVtyXSYmeC5pc051bWJlcihlLnNlcmllc1t0XVtyXSkmJihlLnNlcmllc1t0XVtyXT4wP2FbaV1bcl0rPXBhcnNlRmxvYXQoZS5zZXJpZXNbdF1bcl0pKzFlLTQ6c1tpXVtyXSs9cGFyc2VGbG9hdChlLnNlcmllc1t0XVtyXSkpfSkpfSkpLE9iamVjdC5lbnRyaWVzKGEpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBpPWcodCwxKVswXTthW2ldLmZvckVhY2goKGZ1bmN0aW9uKHQscil7ZS5tYXhZPU1hdGgubWF4KGUubWF4WSxhW2ldW3JdKSxlLm1pblk9TWF0aC5taW4oZS5taW5ZLHNbaV1bcl0pfSkpfSkpfX19XSksdH0oKSxxPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMuZWxncmlkPWksdGhpcy53PWUudzt2YXIgcz10aGlzLnc7dGhpcy54YXhpc0ZvbnRTaXplPXMuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSx0aGlzLmF4aXNGb250RmFtaWx5PXMuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250RmFtaWx5LHRoaXMueGF4aXNGb3JlQ29sb3JzPXMuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5jb2xvcnMsdGhpcy5pc0NhdGVnb3J5QmFySG9yaXpvbnRhbD1cImJhclwiPT09cy5jb25maWcuY2hhcnQudHlwZSYmcy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWwsdGhpcy54QXhpc29mZlg9MCxcImJvdHRvbVwiPT09cy5jb25maWcueGF4aXMucG9zaXRpb24mJih0aGlzLnhBeGlzb2ZmWD1zLmdsb2JhbHMuZ3JpZEhlaWdodCksdGhpcy5kcmF3bkxhYmVscz1bXSx0aGlzLmF4ZXNVdGlscz1uZXcgQihlKX1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1lheGlzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudyxhPW5ldyBtKHRoaXMuY3R4KSxzPWkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5zdHlsZSxyPXMuZm9udFNpemUsbz1zLmZvbnRGYW1pbHksbj1zLmZvbnRXZWlnaHQsbD1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXNcIixyZWw6dCx0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIraS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFt0XStcIiwgMClcIn0pO2lmKHRoaXMuYXhlc1V0aWxzLmlzWUF4aXNIaWRkZW4odCkpcmV0dXJuIGw7dmFyIGg9YS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLXRleHRzLWdcIn0pO2wuYWRkKGgpO3ZhciBjPWkuZ2xvYmFscy55QXhpc1NjYWxlW3RdLnJlc3VsdC5sZW5ndGgtMSxkPWkuZ2xvYmFscy5ncmlkSGVpZ2h0L2MsZz1pLmdsb2JhbHMudHJhbnNsYXRlWSx1PWkuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzW3RdLHA9aS5nbG9iYWxzLnlBeGlzU2NhbGVbdF0ucmVzdWx0LnNsaWNlKCk7cD10aGlzLmF4ZXNVdGlscy5jaGVja0ZvclJldmVyc2VkTGFiZWxzKHQscCk7dmFyIGY9XCJcIjtpZihpLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMuc2hvdylmb3IodmFyIHg9ZnVuY3Rpb24obCl7dmFyIHg9cFtsXTt4PXUoeCxsLGkpO3ZhciBiPWkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5wYWRkaW5nO2kuY29uZmlnLnlheGlzW3RdLm9wcG9zaXRlJiYwIT09aS5jb25maWcueWF4aXMubGVuZ3RoJiYoYio9LTEpO3ZhciB2PVwiZW5kXCI7aS5jb25maWcueWF4aXNbdF0ub3Bwb3NpdGUmJih2PVwic3RhcnRcIiksXCJsZWZ0XCI9PT1pLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMuYWxpZ24/dj1cInN0YXJ0XCI6XCJjZW50ZXJcIj09PWkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5hbGlnbj92PVwibWlkZGxlXCI6XCJyaWdodFwiPT09aS5jb25maWcueWF4aXNbdF0ubGFiZWxzLmFsaWduJiYodj1cImVuZFwiKTt2YXIgbT1lLmF4ZXNVdGlscy5nZXRZQXhpc0ZvcmVDb2xvcihzLmNvbG9ycyx0KSx5PWEuZHJhd1RleHQoe3g6Yix5OmcrYy8xMCtpLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMub2Zmc2V0WSsxLHRleHQ6eCx0ZXh0QW5jaG9yOnYsZm9udFNpemU6cixmb250RmFtaWx5Om8sZm9udFdlaWdodDpuLG1heFdpZHRoOmkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5tYXhXaWR0aCxmb3JlQ29sb3I6QXJyYXkuaXNBcnJheShtKT9tW2xdOm0saXNQbGFpblRleHQ6ITEsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLWxhYmVsIFwiK3MuY3NzQ2xhc3N9KTtsPT09YyYmKGY9eSksaC5hZGQoeSk7dmFyIHc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGkuZ2xvYmFscy5TVkdOUyxcInRpdGxlXCIpO2lmKHcudGV4dENvbnRlbnQ9QXJyYXkuaXNBcnJheSh4KT94LmpvaW4oXCIgXCIpOngseS5ub2RlLmFwcGVuZENoaWxkKHcpLDAhPT1pLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMucm90YXRlKXt2YXIgaz1hLnJvdGF0ZUFyb3VuZENlbnRlcihmLm5vZGUpLEE9YS5yb3RhdGVBcm91bmRDZW50ZXIoeS5ub2RlKTt5Lm5vZGUuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJyb3RhdGUoXCIuY29uY2F0KGkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5yb3RhdGUsXCIgXCIpLmNvbmNhdChrLngsXCIgXCIpLmNvbmNhdChBLnksXCIpXCIpKX1nKz1kfSxiPWM7Yj49MDtiLS0peChiKTtpZih2b2lkIDAhPT1pLmNvbmZpZy55YXhpc1t0XS50aXRsZS50ZXh0KXt2YXIgdj1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXMtdGl0bGVcIn0pLHk9MDtpLmNvbmZpZy55YXhpc1t0XS5vcHBvc2l0ZSYmKHk9aS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFt0XSk7dmFyIHc9YS5kcmF3VGV4dCh7eDp5LHk6aS5nbG9iYWxzLmdyaWRIZWlnaHQvMitpLmdsb2JhbHMudHJhbnNsYXRlWStpLmNvbmZpZy55YXhpc1t0XS50aXRsZS5vZmZzZXRZLHRleHQ6aS5jb25maWcueWF4aXNbdF0udGl0bGUudGV4dCx0ZXh0QW5jaG9yOlwiZW5kXCIsZm9yZUNvbG9yOmkuY29uZmlnLnlheGlzW3RdLnRpdGxlLnN0eWxlLmNvbG9yLGZvbnRTaXplOmkuY29uZmlnLnlheGlzW3RdLnRpdGxlLnN0eWxlLmZvbnRTaXplLGZvbnRXZWlnaHQ6aS5jb25maWcueWF4aXNbdF0udGl0bGUuc3R5bGUuZm9udFdlaWdodCxmb250RmFtaWx5OmkuY29uZmlnLnlheGlzW3RdLnRpdGxlLnN0eWxlLmZvbnRGYW1pbHksY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLXRpdGxlLXRleHQgXCIraS5jb25maWcueWF4aXNbdF0udGl0bGUuc3R5bGUuY3NzQ2xhc3N9KTt2LmFkZCh3KSxsLmFkZCh2KX12YXIgaz1pLmNvbmZpZy55YXhpc1t0XS5heGlzQm9yZGVyLEE9MzEray5vZmZzZXRYO2lmKGkuY29uZmlnLnlheGlzW3RdLm9wcG9zaXRlJiYoQT0tMzEtay5vZmZzZXRYKSxrLnNob3cpe3ZhciBTPWEuZHJhd0xpbmUoQSxpLmdsb2JhbHMudHJhbnNsYXRlWStrLm9mZnNldFktMixBLGkuZ2xvYmFscy5ncmlkSGVpZ2h0K2kuZ2xvYmFscy50cmFuc2xhdGVZK2sub2Zmc2V0WSsyLGsuY29sb3IsMCxrLndpZHRoKTtsLmFkZChTKX1yZXR1cm4gaS5jb25maWcueWF4aXNbdF0uYXhpc1RpY2tzLnNob3cmJnRoaXMuYXhlc1V0aWxzLmRyYXdZQXhpc1RpY2tzKEEsYyxrLGkuY29uZmlnLnlheGlzW3RdLmF4aXNUaWNrcyx0LGQsbCksbH19LHtrZXk6XCJkcmF3WWF4aXNJbnZlcnNlZFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBtKHRoaXMuY3R4KSxhPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcyBhcGV4Y2hhcnRzLXlheGlzLWludmVyc2VkXCJ9KSxzPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy10ZXh0cy1nXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdChlLmdsb2JhbHMudHJhbnNsYXRlWEF4aXNYLFwiLCBcIikuY29uY2F0KGUuZ2xvYmFscy50cmFuc2xhdGVYQXhpc1ksXCIpXCIpfSk7YS5hZGQocyk7dmFyIHI9ZS5nbG9iYWxzLnlBeGlzU2NhbGVbdF0ucmVzdWx0Lmxlbmd0aC0xLG89ZS5nbG9iYWxzLmdyaWRXaWR0aC9yKy4xLG49bytlLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WCxsPWUuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXIsaD1lLmdsb2JhbHMueUF4aXNTY2FsZVt0XS5yZXN1bHQuc2xpY2UoKSxjPWUuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHM7Yy5sZW5ndGg+MCYmKHRoaXMueGF4aXNMYWJlbHM9Yy5zbGljZSgpLHI9KGg9Yy5zbGljZSgpKS5sZW5ndGgpLGg9dGhpcy5heGVzVXRpbHMuY2hlY2tGb3JSZXZlcnNlZExhYmVscyh0LGgpO3ZhciBkPWMubGVuZ3RoO2lmKGUuY29uZmlnLnhheGlzLmxhYmVscy5zaG93KWZvcih2YXIgZz1kPzA6cjtkP2c8ZDpnPj0wO2Q/ZysrOmctLSl7dmFyIHU9aFtnXTt1PWwodSxnLGUpO3ZhciBwPWUuZ2xvYmFscy5ncmlkV2lkdGgrZS5nbG9iYWxzLnBhZEhvcml6b250YWwtKG4tbytlLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WCk7aWYoYy5sZW5ndGgpe3ZhciBmPXRoaXMuYXhlc1V0aWxzLmdldExhYmVsKGgsYyxwLGcsdGhpcy5kcmF3bkxhYmVscyx0aGlzLnhheGlzRm9udFNpemUpO3A9Zi54LHU9Zi50ZXh0LHRoaXMuZHJhd25MYWJlbHMucHVzaChmLnRleHQpLDA9PT1nJiZlLmdsb2JhbHMuc2tpcEZpcnN0VGltZWxpbmVsYWJlbCYmKHU9XCJcIiksZz09PWgubGVuZ3RoLTEmJmUuZ2xvYmFscy5za2lwTGFzdFRpbWVsaW5lbGFiZWwmJih1PVwiXCIpfXZhciB4PWkuZHJhd1RleHQoe3g6cCx5OnRoaXMueEF4aXNvZmZYK2UuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRZKzMwLShcInRvcFwiPT09ZS5jb25maWcueGF4aXMucG9zaXRpb24/ZS5nbG9iYWxzLnhBeGlzSGVpZ2h0K2UuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5oZWlnaHQtMjowKSx0ZXh0OnUsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvcmVDb2xvcjpBcnJheS5pc0FycmF5KHRoaXMueGF4aXNGb3JlQ29sb3JzKT90aGlzLnhheGlzRm9yZUNvbG9yc1t0XTp0aGlzLnhheGlzRm9yZUNvbG9ycyxmb250U2l6ZTp0aGlzLnhheGlzRm9udFNpemUsZm9udEZhbWlseTp0aGlzLnhheGlzRm9udEZhbWlseSxmb250V2VpZ2h0OmUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250V2VpZ2h0LGlzUGxhaW5UZXh0OiExLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy1sYWJlbCBcIitlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuY3NzQ2xhc3N9KTtzLmFkZCh4KSx4LnRzcGFuKHUpO3ZhciBiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLmdsb2JhbHMuU1ZHTlMsXCJ0aXRsZVwiKTtiLnRleHRDb250ZW50PXUseC5ub2RlLmFwcGVuZENoaWxkKGIpLG4rPW99cmV0dXJuIHRoaXMuaW52ZXJzZWRZQXhpc1RpdGxlVGV4dChhKSx0aGlzLmludmVyc2VkWUF4aXNCb3JkZXIoYSksYX19LHtrZXk6XCJpbnZlcnNlZFlBeGlzQm9yZGVyXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpLGE9ZS5jb25maWcueGF4aXMuYXhpc0JvcmRlcjtpZihhLnNob3cpe3ZhciBzPTA7XCJiYXJcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGUmJmUuZ2xvYmFscy5pc1hOdW1lcmljJiYocy09MTUpO3ZhciByPWkuZHJhd0xpbmUoZS5nbG9iYWxzLnBhZEhvcml6b250YWwrcythLm9mZnNldFgsdGhpcy54QXhpc29mZlgsZS5nbG9iYWxzLmdyaWRXaWR0aCx0aGlzLnhBeGlzb2ZmWCxhLmNvbG9yLDAsYS5oZWlnaHQpO3RoaXMuZWxncmlkJiZ0aGlzLmVsZ3JpZC5lbEdyaWRCb3JkZXJzJiZlLmNvbmZpZy5ncmlkLnNob3c/dGhpcy5lbGdyaWQuZWxHcmlkQm9yZGVycy5hZGQocik6dC5hZGQocil9fX0se2tleTpcImludmVyc2VkWUF4aXNUaXRsZVRleHRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCk7aWYodm9pZCAwIT09ZS5jb25maWcueGF4aXMudGl0bGUudGV4dCl7dmFyIGE9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLXRpdGxlIGFwZXhjaGFydHMteWF4aXMtdGl0bGUtaW52ZXJzZWRcIn0pLHM9aS5kcmF3VGV4dCh7eDplLmdsb2JhbHMuZ3JpZFdpZHRoLzIrZS5jb25maWcueGF4aXMudGl0bGUub2Zmc2V0WCx5OnRoaXMueEF4aXNvZmZYK3BhcnNlRmxvYXQodGhpcy54YXhpc0ZvbnRTaXplKStwYXJzZUZsb2F0KGUuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRTaXplKStlLmNvbmZpZy54YXhpcy50aXRsZS5vZmZzZXRZKzIwLHRleHQ6ZS5jb25maWcueGF4aXMudGl0bGUudGV4dCx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9udFNpemU6ZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTplLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6ZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFdlaWdodCxmb3JlQ29sb3I6ZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuY29sb3IsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLXRpdGxlLXRleHQgXCIrZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuY3NzQ2xhc3N9KTthLmFkZChzKSx0LmFkZChhKX19fSx7a2V5OlwieUF4aXNUaXRsZVJvdGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9bmV3IG0odGhpcy5jdHgpLHM9e3dpZHRoOjAsaGVpZ2h0OjB9LHI9e3dpZHRoOjAsaGVpZ2h0OjB9LG89aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIiAuYXBleGNoYXJ0cy15YXhpc1tyZWw9J1wiLmNvbmNhdCh0LFwiJ10gLmFwZXhjaGFydHMteWF4aXMtdGV4dHMtZ1wiKSk7bnVsbCE9PW8mJihzPW8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO3ZhciBuPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy15YXhpc1tyZWw9J1wiLmNvbmNhdCh0LFwiJ10gLmFwZXhjaGFydHMteWF4aXMtdGl0bGUgdGV4dFwiKSk7aWYobnVsbCE9PW4mJihyPW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLG51bGwhPT1uKXt2YXIgbD10aGlzLnhQYWRkaW5nRm9yWUF4aXNUaXRsZSh0LHMscixlKTtuLnNldEF0dHJpYnV0ZShcInhcIixsLnhQb3MtKGU/MTA6MCkpfWlmKG51bGwhPT1uKXt2YXIgaD1hLnJvdGF0ZUFyb3VuZENlbnRlcihuKTtuLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwicm90YXRlKFwiLmNvbmNhdChlPy0xKmkuY29uZmlnLnlheGlzW3RdLnRpdGxlLnJvdGF0ZTppLmNvbmZpZy55YXhpc1t0XS50aXRsZS5yb3RhdGUsXCIgXCIpLmNvbmNhdChoLngsXCIgXCIpLmNvbmNhdChoLnksXCIpXCIpKX19fSx7a2V5OlwieFBhZGRpbmdGb3JZQXhpc1RpdGxlXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9dGhpcy53LHI9MCxvPTAsbj0xMDtyZXR1cm4gdm9pZCAwPT09cy5jb25maWcueWF4aXNbdF0udGl0bGUudGV4dHx8dDwwP3t4UG9zOm8scGFkZDowfTooYT8obz1lLndpZHRoK3MuY29uZmlnLnlheGlzW3RdLnRpdGxlLm9mZnNldFgraS53aWR0aC8yK24vMiwwPT09KHIrPTEpJiYoby09bi8yKSk6KG89LTEqZS53aWR0aCtzLmNvbmZpZy55YXhpc1t0XS50aXRsZS5vZmZzZXRYK24vMitpLndpZHRoLzIscy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKG49MjUsbz0tMSplLndpZHRoLXMuY29uZmlnLnlheGlzW3RdLnRpdGxlLm9mZnNldFgtbikpLHt4UG9zOm8scGFkZDpufSl9fSx7a2V5Olwic2V0WUF4aXNYUG9zaXRpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPTAscz0wLHI9MTgsbz0xO2kuY29uZmlnLnlheGlzLmxlbmd0aD4xJiYodGhpcy5tdWx0aXBsZVlzPSEwKSxpLmNvbmZpZy55YXhpcy5tYXAoKGZ1bmN0aW9uKG4sbCl7dmFyIGg9aS5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcy5pbmRleE9mKGwpPi0xfHwhbi5zaG93fHxuLmZsb2F0aW5nfHwwPT09dFtsXS53aWR0aCxjPXRbbF0ud2lkdGgrZVtsXS53aWR0aDtuLm9wcG9zaXRlP2kuZ2xvYmFscy5pc0Jhckhvcml6b250YWw/KHM9aS5nbG9iYWxzLmdyaWRXaWR0aCtpLmdsb2JhbHMudHJhbnNsYXRlWC0xLGkuZ2xvYmFscy50cmFuc2xhdGVZQXhpc1hbbF09cy1uLmxhYmVscy5vZmZzZXRYKToocz1pLmdsb2JhbHMuZ3JpZFdpZHRoK2kuZ2xvYmFscy50cmFuc2xhdGVYK28saHx8KG89bytjKzIwKSxpLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW2xdPXMtbi5sYWJlbHMub2Zmc2V0WCsyMCk6KGE9aS5nbG9iYWxzLnRyYW5zbGF0ZVgtcixofHwocj1yK2MrMjApLGkuZ2xvYmFscy50cmFuc2xhdGVZQXhpc1hbbF09YStuLmxhYmVscy5vZmZzZXRYKX0pKX19LHtrZXk6XCJzZXRZQXhpc1RleHRBbGlnbm1lbnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYXBleGNoYXJ0cy15YXhpc1wiKTsoZT14Lmxpc3RUb0FycmF5KGUpKS5mb3JFYWNoKChmdW5jdGlvbihlLGkpe3ZhciBhPXQuY29uZmlnLnlheGlzW2ldO2lmKGEmJiFhLmZsb2F0aW5nJiZ2b2lkIDAhPT1hLmxhYmVscy5hbGlnbil7dmFyIHM9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXlheGlzW3JlbD0nXCIuY29uY2F0KGksXCInXSAuYXBleGNoYXJ0cy15YXhpcy10ZXh0cy1nXCIpKSxyPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy15YXhpc1tyZWw9J1wiLmNvbmNhdChpLFwiJ10gLmFwZXhjaGFydHMteWF4aXMtbGFiZWxcIikpO3I9eC5saXN0VG9BcnJheShyKTt2YXIgbz1zLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1wibGVmdFwiPT09YS5sYWJlbHMuYWxpZ24/KHIuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LnNldEF0dHJpYnV0ZShcInRleHQtYW5jaG9yXCIsXCJzdGFydFwiKX0pKSxhLm9wcG9zaXRlfHxzLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwidHJhbnNsYXRlKC1cIi5jb25jYXQoby53aWR0aCxcIiwgMClcIikpKTpcImNlbnRlclwiPT09YS5sYWJlbHMuYWxpZ24/KHIuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LnNldEF0dHJpYnV0ZShcInRleHQtYW5jaG9yXCIsXCJtaWRkbGVcIil9KSkscy5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInRyYW5zbGF0ZShcIi5jb25jYXQoby53aWR0aC8yKihhLm9wcG9zaXRlPzE6LTEpLFwiLCAwKVwiKSkpOlwicmlnaHRcIj09PWEubGFiZWxzLmFsaWduJiYoci5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3Quc2V0QXR0cmlidXRlKFwidGV4dC1hbmNob3JcIixcImVuZFwiKX0pKSxhLm9wcG9zaXRlJiZzLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwidHJhbnNsYXRlKFwiLmNvbmNhdChvLndpZHRoLFwiLCAwKVwiKSkpfX0pKX19XSksdH0oKSxaPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMuZG9jdW1lbnRFdmVudD14LmJpbmQodGhpcy5kb2N1bWVudEV2ZW50LHRoaXMpfXJldHVybiByKHQsW3trZXk6XCJhZGRFdmVudExpc3RlbmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aS5nbG9iYWxzLmV2ZW50cy5oYXNPd25Qcm9wZXJ0eSh0KT9pLmdsb2JhbHMuZXZlbnRzW3RdLnB1c2goZSk6aS5nbG9iYWxzLmV2ZW50c1t0XT1bZV19fSx7a2V5OlwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2lmKGkuZ2xvYmFscy5ldmVudHMuaGFzT3duUHJvcGVydHkodCkpe3ZhciBhPWkuZ2xvYmFscy5ldmVudHNbdF0uaW5kZXhPZihlKTstMSE9PWEmJmkuZ2xvYmFscy5ldmVudHNbdF0uc3BsaWNlKGEsMSl9fX0se2tleTpcImZpcmVFdmVudFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2lmKGkuZ2xvYmFscy5ldmVudHMuaGFzT3duUHJvcGVydHkodCkpe2UmJmUubGVuZ3RofHwoZT1bXSk7Zm9yKHZhciBhPWkuZ2xvYmFscy5ldmVudHNbdF0scz1hLmxlbmd0aCxyPTA7cjxzO3IrKylhW3JdLmFwcGx5KG51bGwsZSl9fX0se2tleTpcInNldHVwRXZlbnRIYW5kbGVyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPXRoaXMuY3R4LGE9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihlLmdsb2JhbHMuY2hhcnRDbGFzcyk7dGhpcy5jdHguZXZlbnRMaXN0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2EuYWRkRXZlbnRMaXN0ZW5lcih0LChmdW5jdGlvbih0KXt2YXIgYT1PYmplY3QuYXNzaWduKHt9LGUse3Nlcmllc0luZGV4OmUuZ2xvYmFscy5jYXB0dXJlZFNlcmllc0luZGV4LGRhdGFQb2ludEluZGV4OmUuZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4fSk7XCJtb3VzZW1vdmVcIj09PXQudHlwZXx8XCJ0b3VjaG1vdmVcIj09PXQudHlwZT9cImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbmZpZy5jaGFydC5ldmVudHMubW91c2VNb3ZlJiZlLmNvbmZpZy5jaGFydC5ldmVudHMubW91c2VNb3ZlKHQsaSxhKTpcIm1vdXNlbGVhdmVcIj09PXQudHlwZXx8XCJ0b3VjaGxlYXZlXCI9PT10LnR5cGU/XCJmdW5jdGlvblwiPT10eXBlb2YgZS5jb25maWcuY2hhcnQuZXZlbnRzLm1vdXNlTGVhdmUmJmUuY29uZmlnLmNoYXJ0LmV2ZW50cy5tb3VzZUxlYXZlKHQsaSxhKTooXCJtb3VzZXVwXCI9PT10LnR5cGUmJjE9PT10LndoaWNofHxcInRvdWNoZW5kXCI9PT10LnR5cGUpJiYoXCJmdW5jdGlvblwiPT10eXBlb2YgZS5jb25maWcuY2hhcnQuZXZlbnRzLmNsaWNrJiZlLmNvbmZpZy5jaGFydC5ldmVudHMuY2xpY2sodCxpLGEpLGkuY3R4LmV2ZW50cy5maXJlRXZlbnQoXCJjbGlja1wiLFt0LGksYV0pKX0pLHtjYXB0dXJlOiExLHBhc3NpdmU6ITB9KX0pKSx0aGlzLmN0eC5ldmVudExpc3QuZm9yRWFjaCgoZnVuY3Rpb24oaSl7ZS5nbG9iYWxzLmRvbS5iYXNlRWwuYWRkRXZlbnRMaXN0ZW5lcihpLHQuZG9jdW1lbnRFdmVudCx7cGFzc2l2ZTohMH0pfSkpLHRoaXMuY3R4LmNvcmUuc2V0dXBCcnVzaEhhbmRsZXIoKX19LHtrZXk6XCJkb2N1bWVudEV2ZW50XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dC50YXJnZXQuY2xhc3NOYW1lO2lmKFwiY2xpY2tcIj09PXQudHlwZSl7dmFyIGE9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLW1lbnVcIik7YSYmYS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLW1lbnUtb3BlblwiKSYmXCJhcGV4Y2hhcnRzLW1lbnUtaWNvblwiIT09aSYmYS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1tZW51LW9wZW5cIil9ZS5nbG9iYWxzLmNsaWVudFg9XCJ0b3VjaG1vdmVcIj09PXQudHlwZT90LnRvdWNoZXNbMF0uY2xpZW50WDp0LmNsaWVudFgsZS5nbG9iYWxzLmNsaWVudFk9XCJ0b3VjaG1vdmVcIj09PXQudHlwZT90LnRvdWNoZXNbMF0uY2xpZW50WTp0LmNsaWVudFl9fV0pLHR9KCksJD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5Olwic2V0Q3VycmVudExvY2FsZVZhbHVlc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudy5jb25maWcuY2hhcnQubG9jYWxlczt3aW5kb3cuQXBleC5jaGFydCYmd2luZG93LkFwZXguY2hhcnQubG9jYWxlcyYmd2luZG93LkFwZXguY2hhcnQubG9jYWxlcy5sZW5ndGg+MCYmKGU9dGhpcy53LmNvbmZpZy5jaGFydC5sb2NhbGVzLmNvbmNhdCh3aW5kb3cuQXBleC5jaGFydC5sb2NhbGVzKSk7dmFyIGk9ZS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLm5hbWU9PT10fSkpWzBdO2lmKCFpKXRocm93IG5ldyBFcnJvcihcIldyb25nIGxvY2FsZSBuYW1lIHByb3ZpZGVkLiBQbGVhc2UgbWFrZSBzdXJlIHlvdSBzZXQgdGhlIGNvcnJlY3QgbG9jYWxlIG5hbWUgaW4gb3B0aW9uc1wiKTt2YXIgYT14LmV4dGVuZChDLGkpO3RoaXMudy5nbG9iYWxzLmxvY2FsZT1hLm9wdGlvbnN9fV0pLHR9KCksSj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiZHJhd0F4aXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpLGEscz10aGlzLHI9dGhpcy53Lmdsb2JhbHMsbz10aGlzLncuY29uZmlnLG49bmV3IFYodGhpcy5jdHgsZSksbD1uZXcgcSh0aGlzLmN0eCxlKTtyLmF4aXNDaGFydHMmJlwicmFkYXJcIiE9PXQmJihyLmlzQmFySG9yaXpvbnRhbD8oYT1sLmRyYXdZYXhpc0ludmVyc2VkKDApLGk9bi5kcmF3WGF4aXNJbnZlcnNlZCgwKSxyLmRvbS5lbEdyYXBoaWNhbC5hZGQoaSksci5kb20uZWxHcmFwaGljYWwuYWRkKGEpKTooaT1uLmRyYXdYYXhpcygpLHIuZG9tLmVsR3JhcGhpY2FsLmFkZChpKSxvLnlheGlzLm1hcCgoZnVuY3Rpb24odCxlKXtpZigtMT09PXIuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YoZSkmJihhPWwuZHJhd1lheGlzKGUpLHIuZG9tLlBhcGVyLmFkZChhKSxcImJhY2tcIj09PXMudy5jb25maWcuZ3JpZC5wb3NpdGlvbikpe3ZhciBpPXIuZG9tLlBhcGVyLmNoaWxkcmVuKClbMV07aS5yZW1vdmUoKSxyLmRvbS5QYXBlci5hZGQoaSl9fSkpKSl9fV0pLHR9KCksUT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1hDcm9zc2hhaXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT1uZXcgbSh0aGlzLmN0eCksaT1uZXcgdih0aGlzLmN0eCksYT10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLmZpbGwuZ3JhZGllbnQscz10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLmRyb3BTaGFkb3cscj10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLmZpbGwudHlwZSxvPWEuY29sb3JGcm9tLG49YS5jb2xvclRvLGw9YS5vcGFjaXR5RnJvbSxoPWEub3BhY2l0eVRvLGM9YS5zdG9wcyxkPXMuZW5hYmxlZCxnPXMubGVmdCx1PXMudG9wLHA9cy5ibHVyLGY9cy5jb2xvcixiPXMub3BhY2l0eSx5PXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuZmlsbC5jb2xvcjtpZih0LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnNob3cpe1wiZ3JhZGllbnRcIj09PXImJih5PWUuZHJhd0dyYWRpZW50KFwidmVydGljYWxcIixvLG4sbCxoLG51bGwsYyxudWxsKSk7dmFyIHc9ZS5kcmF3UmVjdCgpOzE9PT10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoJiYodz1lLmRyYXdMaW5lKCkpO3ZhciBrPXQuZ2xvYmFscy5ncmlkSGVpZ2h0OygheC5pc051bWJlcihrKXx8azwwKSYmKGs9MCk7dmFyIEE9dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aDsoIXguaXNOdW1iZXIoQSl8fEE8MCkmJihBPTApLHcuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhjcm9zc2hhaXJzXCIseDowLHk6MCx5MjprLHdpZHRoOkEsaGVpZ2h0OmssZmlsbDp5LGZpbHRlcjpcIm5vbmVcIixcImZpbGwtb3BhY2l0eVwiOnQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMub3BhY2l0eSxzdHJva2U6dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5zdHJva2UuY29sb3IsXCJzdHJva2Utd2lkdGhcIjp0LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnN0cm9rZS53aWR0aCxcInN0cm9rZS1kYXNoYXJyYXlcIjp0LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnN0cm9rZS5kYXNoQXJyYXl9KSxkJiYodz1pLmRyb3BTaGFkb3codyx7bGVmdDpnLHRvcDp1LGJsdXI6cCxjb2xvcjpmLG9wYWNpdHk6Yn0pKSx0Lmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZCh3KX19fSx7a2V5OlwiZHJhd1lDcm9zc2hhaXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT1uZXcgbSh0aGlzLmN0eCksaT10LmNvbmZpZy55YXhpc1swXS5jcm9zc2hhaXJzLGE9dC5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzO2lmKHQuY29uZmlnLnlheGlzWzBdLmNyb3NzaGFpcnMuc2hvdyl7dmFyIHM9ZS5kcmF3TGluZSgtYSwwLHQuZ2xvYmFscy5ncmlkV2lkdGgrYSwwLGkuc3Ryb2tlLmNvbG9yLGkuc3Ryb2tlLmRhc2hBcnJheSxpLnN0cm9rZS53aWR0aCk7cy5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMteWNyb3NzaGFpcnNcIn0pLHQuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHMpfXZhciByPWUuZHJhd0xpbmUoLWEsMCx0Lmdsb2JhbHMuZ3JpZFdpZHRoK2EsMCxpLnN0cm9rZS5jb2xvciwwLDApO3IuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLXljcm9zc2hhaXJzLWhpZGRlblwifSksdC5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQocil9fV0pLHR9KCksSz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiY2hlY2tSZXNwb25zaXZlQ29uZmlnXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudyxhPWkuY29uZmlnO2lmKDAhPT1hLnJlc3BvbnNpdmUubGVuZ3RoKXt2YXIgcz1hLnJlc3BvbnNpdmUuc2xpY2UoKTtzLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuYnJlYWtwb2ludD5lLmJyZWFrcG9pbnQ/MTplLmJyZWFrcG9pbnQ+dC5icmVha3BvaW50Py0xOjB9KSkucmV2ZXJzZSgpO3ZhciByPW5ldyBFKHt9KSxvPWZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LGE9c1swXS5icmVha3BvaW50LG89d2luZG93LmlubmVyV2lkdGg+MD93aW5kb3cuaW5uZXJXaWR0aDpzY3JlZW4ud2lkdGg7aWYobz5hKXt2YXIgbj15LmV4dGVuZEFycmF5UHJvcHMocixpLmdsb2JhbHMuaW5pdGlhbENvbmZpZyxpKTt0PXguZXh0ZW5kKG4sdCksdD14LmV4dGVuZChpLmNvbmZpZyx0KSxlLm92ZXJyaWRlUmVzcG9uc2l2ZU9wdGlvbnModCl9ZWxzZSBmb3IodmFyIGw9MDtsPHMubGVuZ3RoO2wrKylvPHNbbF0uYnJlYWtwb2ludCYmKHQ9eS5leHRlbmRBcnJheVByb3BzKHIsc1tsXS5vcHRpb25zLGkpLHQ9eC5leHRlbmQoaS5jb25maWcsdCksZS5vdmVycmlkZVJlc3BvbnNpdmVPcHRpb25zKHQpKX07aWYodCl7dmFyIG49eS5leHRlbmRBcnJheVByb3BzKHIsdCxpKTtuPXguZXh0ZW5kKGkuY29uZmlnLG4pLG8obj14LmV4dGVuZChuLHQpKX1lbHNlIG8oe30pfX19LHtrZXk6XCJvdmVycmlkZVJlc3BvbnNpdmVPcHRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9bmV3IEUodCkuaW5pdCh7cmVzcG9uc2l2ZU92ZXJyaWRlOiEwfSk7dGhpcy53LmNvbmZpZz1lfX1dKSx0fSgpLHR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLmNvbG9ycz1bXSx0aGlzLnc9ZS53O3ZhciBpPXRoaXMudzt0aGlzLmlzQ29sb3JGbj0hMSx0aGlzLmlzSGVhdG1hcERpc3RyaWJ1dGVkPVwidHJlZW1hcFwiPT09aS5jb25maWcuY2hhcnQudHlwZSYmaS5jb25maWcucGxvdE9wdGlvbnMudHJlZW1hcC5kaXN0cmlidXRlZHx8XCJoZWF0bWFwXCI9PT1pLmNvbmZpZy5jaGFydC50eXBlJiZpLmNvbmZpZy5wbG90T3B0aW9ucy5oZWF0bWFwLmRpc3RyaWJ1dGVkLHRoaXMuaXNCYXJEaXN0cmlidXRlZD1pLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGlzdHJpYnV0ZWQmJihcImJhclwiPT09aS5jb25maWcuY2hhcnQudHlwZXx8XCJyYW5nZUJhclwiPT09aS5jb25maWcuY2hhcnQudHlwZSl9cmV0dXJuIHIodCxbe2tleTpcImluaXRcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2V0RGVmYXVsdENvbG9ycygpfX0se2tleTpcInNldERlZmF1bHRDb2xvcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1uZXcgeDtpZihlLmdsb2JhbHMuZG9tLmVsV3JhcC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10aGVtZS1cIi5jb25jYXQoZS5jb25maWcudGhlbWUubW9kZSkpLHZvaWQgMD09PWUuY29uZmlnLmNvbG9ycz9lLmdsb2JhbHMuY29sb3JzPXRoaXMucHJlZGVmaW5lZCgpOihlLmdsb2JhbHMuY29sb3JzPWUuY29uZmlnLmNvbG9ycyxBcnJheS5pc0FycmF5KGUuY29uZmlnLmNvbG9ycykmJmUuY29uZmlnLmNvbG9ycy5sZW5ndGg+MCYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS5jb25maWcuY29sb3JzWzBdJiYoZS5nbG9iYWxzLmNvbG9ycz1lLmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbihpLGEpe3ZhciBzPWUuY29uZmlnLmNvbG9yc1thXTtyZXR1cm4gc3x8KHM9ZS5jb25maWcuY29sb3JzWzBdKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBzPyh0LmlzQ29sb3JGbj0hMCxzKHt2YWx1ZTplLmdsb2JhbHMuYXhpc0NoYXJ0cz9lLmdsb2JhbHMuc2VyaWVzW2FdWzBdP2UuZ2xvYmFscy5zZXJpZXNbYV1bMF06MDplLmdsb2JhbHMuc2VyaWVzW2FdLHNlcmllc0luZGV4OmEsZGF0YVBvaW50SW5kZXg6YSx3OmV9KSk6c30pKSkpLGUuZ2xvYmFscy5zZXJpZXNDb2xvcnMubWFwKChmdW5jdGlvbih0LGkpe3QmJihlLmdsb2JhbHMuY29sb3JzW2ldPXQpfSkpLGUuY29uZmlnLnRoZW1lLm1vbm9jaHJvbWUuZW5hYmxlZCl7dmFyIGE9W10scz1lLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDsodGhpcy5pc0JhckRpc3RyaWJ1dGVkfHx0aGlzLmlzSGVhdG1hcERpc3RyaWJ1dGVkKSYmKHM9ZS5nbG9iYWxzLnNlcmllc1swXS5sZW5ndGgqZS5nbG9iYWxzLnNlcmllcy5sZW5ndGgpO2Zvcih2YXIgcj1lLmNvbmZpZy50aGVtZS5tb25vY2hyb21lLmNvbG9yLG89MS8ocy9lLmNvbmZpZy50aGVtZS5tb25vY2hyb21lLnNoYWRlSW50ZW5zaXR5KSxuPWUuY29uZmlnLnRoZW1lLm1vbm9jaHJvbWUuc2hhZGVUbyxsPTAsaD0wO2g8cztoKyspe3ZhciBjPXZvaWQgMDtcImRhcmtcIj09PW4/KGM9aS5zaGFkZUNvbG9yKC0xKmwsciksbCs9byk6KGM9aS5zaGFkZUNvbG9yKGwsciksbCs9byksYS5wdXNoKGMpfWUuZ2xvYmFscy5jb2xvcnM9YS5zbGljZSgpfXZhciBkPWUuZ2xvYmFscy5jb2xvcnMuc2xpY2UoKTt0aGlzLnB1c2hFeHRyYUNvbG9ycyhlLmdsb2JhbHMuY29sb3JzKTtbXCJmaWxsXCIsXCJzdHJva2VcIl0uZm9yRWFjaCgoZnVuY3Rpb24oaSl7dm9pZCAwPT09ZS5jb25maWdbaV0uY29sb3JzP2UuZ2xvYmFsc1tpXS5jb2xvcnM9dC5pc0NvbG9yRm4/ZS5jb25maWcuY29sb3JzOmQ6ZS5nbG9iYWxzW2ldLmNvbG9ycz1lLmNvbmZpZ1tpXS5jb2xvcnMuc2xpY2UoKSx0LnB1c2hFeHRyYUNvbG9ycyhlLmdsb2JhbHNbaV0uY29sb3JzKX0pKSx2b2lkIDA9PT1lLmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9ycz9lLmdsb2JhbHMuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnM9ZDplLmdsb2JhbHMuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnM9ZS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnMuc2xpY2UoKSx0aGlzLnB1c2hFeHRyYUNvbG9ycyhlLmdsb2JhbHMuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnMsNTApLHZvaWQgMD09PWUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLnBvbHlnb25zLmZpbGwuY29sb3JzP2UuZ2xvYmFscy5yYWRhclBvbHlnb25zLmZpbGwuY29sb3JzPVtcImRhcmtcIj09PWUuY29uZmlnLnRoZW1lLm1vZGU/XCIjNDI0MjQyXCI6XCJub25lXCJdOmUuZ2xvYmFscy5yYWRhclBvbHlnb25zLmZpbGwuY29sb3JzPWUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLnBvbHlnb25zLmZpbGwuY29sb3JzLnNsaWNlKCksdGhpcy5wdXNoRXh0cmFDb2xvcnMoZS5nbG9iYWxzLnJhZGFyUG9seWdvbnMuZmlsbC5jb2xvcnMsMjApLHZvaWQgMD09PWUuY29uZmlnLm1hcmtlcnMuY29sb3JzP2UuZ2xvYmFscy5tYXJrZXJzLmNvbG9ycz1kOmUuZ2xvYmFscy5tYXJrZXJzLmNvbG9ycz1lLmNvbmZpZy5tYXJrZXJzLmNvbG9ycy5zbGljZSgpLHRoaXMucHVzaEV4dHJhQ29sb3JzKGUuZ2xvYmFscy5tYXJrZXJzLmNvbG9ycyl9fSx7a2V5OlwicHVzaEV4dHJhQ29sb3JzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbCxhPXRoaXMudyxzPWV8fGEuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO2lmKG51bGw9PT1pJiYoaT10aGlzLmlzQmFyRGlzdHJpYnV0ZWR8fHRoaXMuaXNIZWF0bWFwRGlzdHJpYnV0ZWR8fFwiaGVhdG1hcFwiPT09YS5jb25maWcuY2hhcnQudHlwZSYmYS5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5jb2xvclNjYWxlLmludmVyc2UpLGkmJmEuZ2xvYmFscy5zZXJpZXMubGVuZ3RoJiYocz1hLmdsb2JhbHMuc2VyaWVzW2EuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGgqYS5nbG9iYWxzLnNlcmllcy5sZW5ndGgpLHQubGVuZ3RoPHMpZm9yKHZhciByPXMtdC5sZW5ndGgsbz0wO288cjtvKyspdC5wdXNoKHRbb10pfX0se2tleTpcInVwZGF0ZVRoZW1lT3B0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3QuY2hhcnQ9dC5jaGFydHx8e30sdC50b29sdGlwPXQudG9vbHRpcHx8e307dmFyIGU9dC50aGVtZS5tb2RlfHxcImxpZ2h0XCIsaT10LnRoZW1lLnBhbGV0dGU/dC50aGVtZS5wYWxldHRlOlwiZGFya1wiPT09ZT9cInBhbGV0dGU0XCI6XCJwYWxldHRlMVwiLGE9dC5jaGFydC5mb3JlQ29sb3I/dC5jaGFydC5mb3JlQ29sb3I6XCJkYXJrXCI9PT1lP1wiI2Y2ZjdmOFwiOlwiIzM3M2QzZlwiO3JldHVybiB0LnRvb2x0aXAudGhlbWU9ZSx0LmNoYXJ0LmZvcmVDb2xvcj1hLHQudGhlbWUucGFsZXR0ZT1pLHR9fSx7a2V5OlwicHJlZGVmaW5lZFwiLHZhbHVlOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMudy5jb25maWcudGhlbWUucGFsZXR0ZSl7Y2FzZVwicGFsZXR0ZTFcIjpkZWZhdWx0OnRoaXMuY29sb3JzPVtcIiMwMDhGRkJcIixcIiMwMEUzOTZcIixcIiNGRUIwMTlcIixcIiNGRjQ1NjBcIixcIiM3NzVERDBcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTJcIjp0aGlzLmNvbG9ycz1bXCIjM2Y1MWI1XCIsXCIjMDNhOWY0XCIsXCIjNGNhZjUwXCIsXCIjZjljZTFkXCIsXCIjRkY5ODAwXCJdO2JyZWFrO2Nhc2VcInBhbGV0dGUzXCI6dGhpcy5jb2xvcnM9W1wiIzMzYjJkZlwiLFwiIzU0NkU3QVwiLFwiI2Q0NTI2ZVwiLFwiIzEzZDhhYVwiLFwiI0E1OTc4QlwiXTticmVhaztjYXNlXCJwYWxldHRlNFwiOnRoaXMuY29sb3JzPVtcIiM0ZWNkYzRcIixcIiNjN2Y0NjRcIixcIiM4MUQ0RkFcIixcIiNmZDZhNmFcIixcIiM1NDZFN0FcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTVcIjp0aGlzLmNvbG9ycz1bXCIjMmI5MDhmXCIsXCIjZjlhM2E0XCIsXCIjOTBlZTdlXCIsXCIjZmE0NDQzXCIsXCIjNjlkMmU3XCJdO2JyZWFrO2Nhc2VcInBhbGV0dGU2XCI6dGhpcy5jb2xvcnM9W1wiIzQ0OUREMVwiLFwiI0Y4NjYyNFwiLFwiI0VBMzU0NlwiLFwiIzY2MkU5QlwiLFwiI0M1RDg2RFwiXTticmVhaztjYXNlXCJwYWxldHRlN1wiOnRoaXMuY29sb3JzPVtcIiNENzI2M0RcIixcIiMxQjk5OEJcIixcIiMyRTI5NEVcIixcIiNGNDYwMzZcIixcIiNFMkMwNDRcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZThcIjp0aGlzLmNvbG9ycz1bXCIjNjYyRTlCXCIsXCIjRjg2NjI0XCIsXCIjRjlDODBFXCIsXCIjRUEzNTQ2XCIsXCIjNDNCQ0NEXCJdO2JyZWFrO2Nhc2VcInBhbGV0dGU5XCI6dGhpcy5jb2xvcnM9W1wiIzVDNDc0MlwiLFwiI0E1OTc4QlwiLFwiIzhENUI0Q1wiLFwiIzVBMkEyN1wiLFwiI0M0QkJBRlwiXTticmVhaztjYXNlXCJwYWxldHRlMTBcIjp0aGlzLmNvbG9ycz1bXCIjQTMwMEQ2XCIsXCIjN0QwMkVCXCIsXCIjNTY1M0ZFXCIsXCIjMjk4M0ZGXCIsXCIjMDBCMUYyXCJdfXJldHVybiB0aGlzLmNvbG9yc319XSksdH0oKSxldD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kcmF3VGl0bGVTdWJ0aXRsZShcInRpdGxlXCIpLHRoaXMuZHJhd1RpdGxlU3VidGl0bGUoXCJzdWJ0aXRsZVwiKX19LHtrZXk6XCJkcmF3VGl0bGVTdWJ0aXRsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPVwidGl0bGVcIj09PXQ/ZS5jb25maWcudGl0bGU6ZS5jb25maWcuc3VidGl0bGUsYT1lLmdsb2JhbHMuc3ZnV2lkdGgvMixzPWkub2Zmc2V0WSxyPVwibWlkZGxlXCI7aWYoXCJsZWZ0XCI9PT1pLmFsaWduPyhhPTEwLHI9XCJzdGFydFwiKTpcInJpZ2h0XCI9PT1pLmFsaWduJiYoYT1lLmdsb2JhbHMuc3ZnV2lkdGgtMTAscj1cImVuZFwiKSxhKz1pLm9mZnNldFgscz1zK3BhcnNlSW50KGkuc3R5bGUuZm9udFNpemUsMTApK2kubWFyZ2luLzIsdm9pZCAwIT09aS50ZXh0KXt2YXIgbz1uZXcgbSh0aGlzLmN0eCkuZHJhd1RleHQoe3g6YSx5OnMsdGV4dDppLnRleHQsdGV4dEFuY2hvcjpyLGZvbnRTaXplOmkuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTppLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDppLnN0eWxlLmZvbnRXZWlnaHQsZm9yZUNvbG9yOmkuc3R5bGUuY29sb3Isb3BhY2l0eToxfSk7by5ub2RlLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsXCJhcGV4Y2hhcnRzLVwiLmNvbmNhdCh0LFwiLXRleHRcIikpLGUuZ2xvYmFscy5kb20uUGFwZXIuYWRkKG8pfX19XSksdH0oKSxpdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5kQ3R4PWV9cmV0dXJuIHIodCxbe2tleTpcImdldFRpdGxlU3VidGl0bGVDb29yZHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT0wLGE9MCxzPVwidGl0bGVcIj09PXQ/ZS5jb25maWcudGl0bGUuZmxvYXRpbmc6ZS5jb25maWcuc3VidGl0bGUuZmxvYXRpbmcscj1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KHQsXCItdGV4dFwiKSk7aWYobnVsbCE9PXImJiFzKXt2YXIgbz1yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2k9by53aWR0aCxhPWUuZ2xvYmFscy5heGlzQ2hhcnRzP28uaGVpZ2h0KzU6by5oZWlnaHR9cmV0dXJue3dpZHRoOmksaGVpZ2h0OmF9fX0se2tleTpcImdldExlZ2VuZHNSZWN0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcDt0LmNvbmZpZy5sZWdlbmQuaGVpZ2h0fHxcInRvcFwiIT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9uJiZcImJvdHRvbVwiIT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9ufHwoZS5zdHlsZS5tYXhIZWlnaHQ9dC5nbG9iYWxzLnN2Z0hlaWdodC8yK1wicHhcIik7dmFyIGk9T2JqZWN0LmFzc2lnbih7fSx4LmdldEJvdW5kaW5nQ2xpZW50UmVjdChlKSk7cmV0dXJuIG51bGwhPT1lJiYhdC5jb25maWcubGVnZW5kLmZsb2F0aW5nJiZ0LmNvbmZpZy5sZWdlbmQuc2hvdz90aGlzLmRDdHgubGdSZWN0PXt4OmkueCx5OmkueSxoZWlnaHQ6aS5oZWlnaHQsd2lkdGg6MD09PWkuaGVpZ2h0PzA6aS53aWR0aH06dGhpcy5kQ3R4LmxnUmVjdD17eDowLHk6MCxoZWlnaHQ6MCx3aWR0aDowfSxcImxlZnRcIiE9PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmXCJyaWdodFwiIT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9ufHwxLjUqdGhpcy5kQ3R4LmxnUmVjdC53aWR0aD50Lmdsb2JhbHMuc3ZnV2lkdGgmJih0aGlzLmRDdHgubGdSZWN0LndpZHRoPXQuZ2xvYmFscy5zdmdXaWR0aC8xLjUpLHRoaXMuZEN0eC5sZ1JlY3R9fSx7a2V5OlwiZ2V0TGFyZ2VzdFN0cmluZ0Zyb21NdWx0aUFyclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dDtpZih0aGlzLncuZ2xvYmFscy5pc011bHRpTGluZVgpe3ZhciBhPWUubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3QubGVuZ3RoOjF9KSkscz1NYXRoLm1heC5hcHBseShNYXRoLHUoYSkpO2k9ZVthLmluZGV4T2YocyldfXJldHVybiBpfX1dKSx0fSgpLGF0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmRDdHg9ZX1yZXR1cm4gcih0LFt7a2V5OlwiZ2V0eEF4aXNMYWJlbHNDb29yZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy53LGk9ZS5nbG9iYWxzLmxhYmVscy5zbGljZSgpO2lmKGUuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmMD09PWkubGVuZ3RoJiYoaT1lLmdsb2JhbHMuY2F0ZWdvcnlMYWJlbHMpLGUuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMubGVuZ3RoPjApe3ZhciBhPXRoaXMuZ2V0eEF4aXNUaW1lU2NhbGVMYWJlbHNDb29yZHMoKTt0PXt3aWR0aDphLndpZHRoLGhlaWdodDphLmhlaWdodH0sZS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM9ITF9ZWxzZXt0aGlzLmRDdHgubGdXaWR0aEZvclNpZGVMZWdlbmRzPVwibGVmdFwiIT09ZS5jb25maWcubGVnZW5kLnBvc2l0aW9uJiZcInJpZ2h0XCIhPT1lLmNvbmZpZy5sZWdlbmQucG9zaXRpb258fGUuY29uZmlnLmxlZ2VuZC5mbG9hdGluZz8wOnRoaXMuZEN0eC5sZ1JlY3Qud2lkdGg7dmFyIHM9ZS5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcixyPXguZ2V0TGFyZ2VzdFN0cmluZ0Zyb21BcnIoaSksbz10aGlzLmRDdHguZGltSGVscGVycy5nZXRMYXJnZXN0U3RyaW5nRnJvbU11bHRpQXJyKHIsaSk7ZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKG89cj1lLmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0Lmxlbmd0aD5lLmxlbmd0aD90OmV9KSwwKSk7dmFyIG49bmV3IFQodGhpcy5kQ3R4LmN0eCksbD1yO3I9bi54TGFiZWxGb3JtYXQocyxyLGwse2k6dm9pZCAwLGRhdGVGb3JtYXR0ZXI6bmV3IEkodGhpcy5kQ3R4LmN0eCkuZm9ybWF0RGF0ZSx3OmV9KSxvPW4ueExhYmVsRm9ybWF0KHMsbyxsLHtpOnZvaWQgMCxkYXRlRm9ybWF0dGVyOm5ldyBJKHRoaXMuZEN0eC5jdHgpLmZvcm1hdERhdGUsdzplfSksKGUuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmdm9pZCAwPT09cnx8XCJcIj09PVN0cmluZyhyKS50cmltKCkpJiYobz1yPVwiMVwiKTt2YXIgaD1uZXcgbSh0aGlzLmRDdHguY3R4KSxjPWguZ2V0VGV4dFJlY3RzKHIsZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplKSxkPWM7aWYociE9PW8mJihkPWguZ2V0VGV4dFJlY3RzKG8sZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplKSksKHQ9e3dpZHRoOmMud2lkdGg+PWQud2lkdGg/Yy53aWR0aDpkLndpZHRoLGhlaWdodDpjLmhlaWdodD49ZC5oZWlnaHQ/Yy5oZWlnaHQ6ZC5oZWlnaHR9KS53aWR0aCppLmxlbmd0aD5lLmdsb2JhbHMuc3ZnV2lkdGgtdGhpcy5kQ3R4LmxnV2lkdGhGb3JTaWRlTGVnZW5kcy10aGlzLmRDdHgueUF4aXNXaWR0aC10aGlzLmRDdHguZ3JpZFBhZC5sZWZ0LXRoaXMuZEN0eC5ncmlkUGFkLnJpZ2h0JiYwIT09ZS5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZXx8ZS5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZUFsd2F5cyl7aWYoIWUuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpe2UuZ2xvYmFscy5yb3RhdGVYTGFiZWxzPSEwO3ZhciBnPWZ1bmN0aW9uKHQpe3JldHVybiBoLmdldFRleHRSZWN0cyh0LGUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSxlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSxcInJvdGF0ZShcIi5jb25jYXQoZS5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZSxcIiAwIDApXCIpLCExKX07Yz1nKHIpLHIhPT1vJiYoZD1nKG8pKSx0LmhlaWdodD0oYy5oZWlnaHQ+ZC5oZWlnaHQ/Yy5oZWlnaHQ6ZC5oZWlnaHQpLzEuNSx0LndpZHRoPWMud2lkdGg+ZC53aWR0aD9jLndpZHRoOmQud2lkdGh9fWVsc2UgZS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM9ITF9cmV0dXJuIGUuY29uZmlnLnhheGlzLmxhYmVscy5zaG93fHwodD17d2lkdGg6MCxoZWlnaHQ6MH0pLHt3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH19fSx7a2V5OlwiZ2V0eEF4aXNHcm91cExhYmVsc0Nvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLnc7aWYoIWUuZ2xvYmFscy5oYXNYYXhpc0dyb3VwcylyZXR1cm57d2lkdGg6MCxoZWlnaHQ6MH07dmFyIGksYT0obnVsbD09PSh0PWUuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5mb250U2l6ZSl8fGUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSxzPWUuZ2xvYmFscy5ncm91cHMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC50aXRsZX0pKSxyPXguZ2V0TGFyZ2VzdFN0cmluZ0Zyb21BcnIocyksbz10aGlzLmRDdHguZGltSGVscGVycy5nZXRMYXJnZXN0U3RyaW5nRnJvbU11bHRpQXJyKHIscyksbj1uZXcgbSh0aGlzLmRDdHguY3R4KSxsPW4uZ2V0VGV4dFJlY3RzKHIsYSksaD1sO3JldHVybiByIT09byYmKGg9bi5nZXRUZXh0UmVjdHMobyxhKSksaT17d2lkdGg6bC53aWR0aD49aC53aWR0aD9sLndpZHRoOmgud2lkdGgsaGVpZ2h0OmwuaGVpZ2h0Pj1oLmhlaWdodD9sLmhlaWdodDpoLmhlaWdodH0sZS5jb25maWcueGF4aXMubGFiZWxzLnNob3d8fChpPXt3aWR0aDowLGhlaWdodDowfSkse3dpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0fX19LHtrZXk6XCJnZXR4QXhpc1RpdGxlQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT0wLGk9MDtpZih2b2lkIDAhPT10LmNvbmZpZy54YXhpcy50aXRsZS50ZXh0KXt2YXIgYT1uZXcgbSh0aGlzLmRDdHguY3R4KS5nZXRUZXh0UmVjdHModC5jb25maWcueGF4aXMudGl0bGUudGV4dCx0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250U2l6ZSk7ZT1hLndpZHRoLGk9YS5oZWlnaHR9cmV0dXJue3dpZHRoOmUsaGVpZ2h0Oml9fX0se2tleTpcImdldHhBeGlzVGltZVNjYWxlTGFiZWxzQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMudzt0aGlzLmRDdHgudGltZXNjYWxlTGFiZWxzPWUuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMuc2xpY2UoKTt2YXIgaT10aGlzLmRDdHgudGltZXNjYWxlTGFiZWxzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWV9KSksYT1pLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09dD8oY29uc29sZS5lcnJvcihcIllvdSBoYXZlIHBvc3NpYmx5IHN1cHBsaWVkIGludmFsaWQgRGF0ZSBmb3JtYXQuIFBsZWFzZSBzdXBwbHkgYSB2YWxpZCBKYXZhU2NyaXB0IERhdGVcIiksMCk6dC5sZW5ndGg+ZS5sZW5ndGg/dDplfSksMCk7cmV0dXJuIDEuMDUqKHQ9bmV3IG0odGhpcy5kQ3R4LmN0eCkuZ2V0VGV4dFJlY3RzKGEsZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplKSkud2lkdGgqaS5sZW5ndGg+ZS5nbG9iYWxzLmdyaWRXaWR0aCYmMCE9PWUuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGUmJihlLmdsb2JhbHMub3ZlcmxhcHBpbmdYTGFiZWxzPSEwKSx0fX0se2tleTpcImFkZGl0aW9uYWxQYWRkaW5nWExhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLncsYT1pLmdsb2JhbHMscz1pLmNvbmZpZyxyPXMueGF4aXMudHlwZSxvPXQud2lkdGg7YS5za2lwTGFzdFRpbWVsaW5lbGFiZWw9ITEsYS5za2lwRmlyc3RUaW1lbGluZWxhYmVsPSExO3ZhciBuPWkuY29uZmlnLnlheGlzWzBdLm9wcG9zaXRlJiZpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsLGw9ZnVuY3Rpb24odCxuKXtzLnlheGlzLmxlbmd0aD4xJiZmdW5jdGlvbih0KXtyZXR1cm4tMSE9PWEuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHQpfShuKXx8ZnVuY3Rpb24odCl7aWYoZS5kQ3R4LnRpbWVzY2FsZUxhYmVscyYmZS5kQ3R4LnRpbWVzY2FsZUxhYmVscy5sZW5ndGgpe3ZhciBuPWUuZEN0eC50aW1lc2NhbGVMYWJlbHNbMF0sbD1lLmRDdHgudGltZXNjYWxlTGFiZWxzW2UuZEN0eC50aW1lc2NhbGVMYWJlbHMubGVuZ3RoLTFdLnBvc2l0aW9uK28vMS43NS1lLmRDdHgueUF4aXNXaWR0aFJpZ2h0LGg9bi5wb3NpdGlvbi1vLzEuNzUrZS5kQ3R4LnlBeGlzV2lkdGhMZWZ0LGM9XCJyaWdodFwiPT09aS5jb25maWcubGVnZW5kLnBvc2l0aW9uJiZlLmRDdHgubGdSZWN0LndpZHRoPjA/ZS5kQ3R4LmxnUmVjdC53aWR0aDowO2w+YS5zdmdXaWR0aC1hLnRyYW5zbGF0ZVgtYyYmKGEuc2tpcExhc3RUaW1lbGluZWxhYmVsPSEwKSxoPC0odC5zaG93JiYhdC5mbG9hdGluZ3x8XCJiYXJcIiE9PXMuY2hhcnQudHlwZSYmXCJjYW5kbGVzdGlja1wiIT09cy5jaGFydC50eXBlJiZcInJhbmdlQmFyXCIhPT1zLmNoYXJ0LnR5cGUmJlwiYm94UGxvdFwiIT09cy5jaGFydC50eXBlPzEwOm8vMS43NSkmJihhLnNraXBGaXJzdFRpbWVsaW5lbGFiZWw9ITApfWVsc2VcImRhdGV0aW1lXCI9PT1yP2UuZEN0eC5ncmlkUGFkLnJpZ2h0PG8mJiFhLnJvdGF0ZVhMYWJlbHMmJihhLnNraXBMYXN0VGltZWxpbmVsYWJlbD0hMCk6XCJkYXRldGltZVwiIT09ciYmZS5kQ3R4LmdyaWRQYWQucmlnaHQ8by8yLWUuZEN0eC55QXhpc1dpZHRoUmlnaHQmJiFhLnJvdGF0ZVhMYWJlbHMmJiFpLmNvbmZpZy54YXhpcy5sYWJlbHMudHJpbSYmKFwiYmV0d2VlblwiIT09aS5jb25maWcueGF4aXMudGlja1BsYWNlbWVudHx8aS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCkmJihlLmRDdHgueFBhZFJpZ2h0PW8vMisxKX0odCl9O3MueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtuPyhlLmRDdHguZ3JpZFBhZC5sZWZ0PG8mJihlLmRDdHgueFBhZExlZnQ9by8yKzEpLGUuZEN0eC54UGFkUmlnaHQ9by8yKzEpOmwodCxpKX0pKX19XSksdH0oKSxzdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5kQ3R4PWV9cmV0dXJuIHIodCxbe2tleTpcImdldHlBeGlzTGFiZWxzQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9W10sYT0xMCxzPW5ldyBCKHRoaXMuZEN0eC5jdHgpO3JldHVybiBlLmNvbmZpZy55YXhpcy5tYXAoKGZ1bmN0aW9uKHIsbyl7dmFyIG49ZS5nbG9iYWxzLnlBeGlzU2NhbGVbb10sbD0wO2lmKCFzLmlzWUF4aXNIaWRkZW4obykmJnIubGFiZWxzLnNob3cmJnZvaWQgMCE9PXIubGFiZWxzLm1pbldpZHRoJiYobD1yLmxhYmVscy5taW5XaWR0aCksIXMuaXNZQXhpc0hpZGRlbihvKSYmci5sYWJlbHMuc2hvdyYmbi5yZXN1bHQubGVuZ3RoKXt2YXIgaD1lLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1tvXSxjPW4ubmljZU1pbj09PU51bWJlci5NSU5fVkFMVUU/MDpuLm5pY2VNaW4sZD1TdHJpbmcoYykubGVuZ3RoPlN0cmluZyhuLm5pY2VNYXgpLmxlbmd0aD9jOm4ubmljZU1heCxnPWgoZCx7c2VyaWVzSW5kZXg6byxkYXRhUG9pbnRJbmRleDotMSx3OmV9KSx1PWc7aWYodm9pZCAwIT09ZyYmMCE9PWcubGVuZ3RofHwoZz1kKSxlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKXthPTA7dmFyIHA9ZS5nbG9iYWxzLmxhYmVscy5zbGljZSgpO2c9aChnPXguZ2V0TGFyZ2VzdFN0cmluZ0Zyb21BcnIocCkse3Nlcmllc0luZGV4Om8sZGF0YVBvaW50SW5kZXg6LTEsdzplfSksdT10LmRDdHguZGltSGVscGVycy5nZXRMYXJnZXN0U3RyaW5nRnJvbU11bHRpQXJyKGcscCl9dmFyIGY9bmV3IG0odC5kQ3R4LmN0eCksYj1cInJvdGF0ZShcIi5jb25jYXQoci5sYWJlbHMucm90YXRlLFwiIDAgMClcIiksdj1mLmdldFRleHRSZWN0cyhnLHIubGFiZWxzLnN0eWxlLmZvbnRTaXplLHIubGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksYiwhMSkseT12O2chPT11JiYoeT1mLmdldFRleHRSZWN0cyh1LHIubGFiZWxzLnN0eWxlLmZvbnRTaXplLHIubGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksYiwhMSkpLGkucHVzaCh7d2lkdGg6KGw+eS53aWR0aHx8bD52LndpZHRoP2w6eS53aWR0aD52LndpZHRoP3kud2lkdGg6di53aWR0aCkrYSxoZWlnaHQ6eS5oZWlnaHQ+di5oZWlnaHQ/eS5oZWlnaHQ6di5oZWlnaHR9KX1lbHNlIGkucHVzaCh7d2lkdGg6MCxoZWlnaHQ6MH0pfSkpLGl9fSx7a2V5OlwiZ2V0eUF4aXNUaXRsZUNvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPVtdO3JldHVybiBlLmNvbmZpZy55YXhpcy5tYXAoKGZ1bmN0aW9uKGUsYSl7aWYoZS5zaG93JiZ2b2lkIDAhPT1lLnRpdGxlLnRleHQpe3ZhciBzPW5ldyBtKHQuZEN0eC5jdHgpLHI9XCJyb3RhdGUoXCIuY29uY2F0KGUudGl0bGUucm90YXRlLFwiIDAgMClcIiksbz1zLmdldFRleHRSZWN0cyhlLnRpdGxlLnRleHQsZS50aXRsZS5zdHlsZS5mb250U2l6ZSxlLnRpdGxlLnN0eWxlLmZvbnRGYW1pbHksciwhMSk7aS5wdXNoKHt3aWR0aDpvLndpZHRoLGhlaWdodDpvLmhlaWdodH0pfWVsc2UgaS5wdXNoKHt3aWR0aDowLGhlaWdodDowfSl9KSksaX19LHtrZXk6XCJnZXRUb3RhbFlBeGlzV2lkdGhcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPTAsaT0wLGE9MCxzPXQuZ2xvYmFscy55QXhpc1NjYWxlLmxlbmd0aD4xPzEwOjAscj1uZXcgQih0aGlzLmRDdHguY3R4KSxvPWZ1bmN0aW9uKG8sbil7dmFyIGw9dC5jb25maWcueWF4aXNbbl0uZmxvYXRpbmcsaD0wO28ud2lkdGg+MCYmIWw/KGg9by53aWR0aCtzLGZ1bmN0aW9uKGUpe3JldHVybiB0Lmdsb2JhbHMuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YoZSk+LTF9KG4pJiYoaD1oLW8ud2lkdGgtcykpOmg9bHx8ci5pc1lBeGlzSGlkZGVuKG4pPzA6NSx0LmNvbmZpZy55YXhpc1tuXS5vcHBvc2l0ZT9hKz1oOmkrPWgsZSs9aH07cmV0dXJuIHQuZ2xvYmFscy55TGFiZWxzQ29vcmRzLm1hcCgoZnVuY3Rpb24odCxlKXtvKHQsZSl9KSksdC5nbG9iYWxzLnlUaXRsZUNvb3Jkcy5tYXAoKGZ1bmN0aW9uKHQsZSl7byh0LGUpfSkpLHQuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJiF0LmNvbmZpZy55YXhpc1swXS5mbG9hdGluZyYmKGU9dC5nbG9iYWxzLnlMYWJlbHNDb29yZHNbMF0ud2lkdGgrdC5nbG9iYWxzLnlUaXRsZUNvb3Jkc1swXS53aWR0aCsxNSksdGhpcy5kQ3R4LnlBeGlzV2lkdGhMZWZ0PWksdGhpcy5kQ3R4LnlBeGlzV2lkdGhSaWdodD1hLGV9fV0pLHR9KCkscnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuZEN0eD1lfXJldHVybiByKHQsW3trZXk6XCJncmlkUGFkRm9yQ29sdW1uc0luTnVtZXJpY0F4aXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7aWYoZS5nbG9iYWxzLm5vRGF0YXx8ZS5nbG9iYWxzLmFsbFNlcmllc0NvbGxhcHNlZClyZXR1cm4gMDt2YXIgaT1mdW5jdGlvbih0KXtyZXR1cm5cImJhclwiPT09dHx8XCJyYW5nZUJhclwiPT09dHx8XCJjYW5kbGVzdGlja1wiPT09dHx8XCJib3hQbG90XCI9PT10fSxhPWUuY29uZmlnLmNoYXJ0LnR5cGUscz0wLHI9aShhKT9lLmNvbmZpZy5zZXJpZXMubGVuZ3RoOjE7aWYoZS5nbG9iYWxzLmNvbWJvQmFyQ291bnQ+MCYmKHI9ZS5nbG9iYWxzLmNvbWJvQmFyQ291bnQpLGUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7aSh0LnR5cGUpJiYoci09MSl9KSksZS5jb25maWcuY2hhcnQuc3RhY2tlZCYmKHI9MSksKGkoYSl8fGUuZ2xvYmFscy5jb21ib0JhckNvdW50PjApJiZlLmdsb2JhbHMuaXNYTnVtZXJpYyYmIWUuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJnI+MCl7dmFyIG8sbixsPU1hdGguYWJzKGUuZ2xvYmFscy5pbml0aWFsTWF4WC1lLmdsb2JhbHMuaW5pdGlhbE1pblgpO2w8PTMmJihsPWUuZ2xvYmFscy5kYXRhUG9pbnRzKSxvPWwvdCxlLmdsb2JhbHMubWluWERpZmYmJmUuZ2xvYmFscy5taW5YRGlmZi9vPjAmJihuPWUuZ2xvYmFscy5taW5YRGlmZi9vKSxuPnQvMiYmKG4vPTIpLChzPW4vcipwYXJzZUludChlLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuY29sdW1uV2lkdGgsMTApLzEwMCk8MSYmKHM9MSkscz1zLyhyPjE/MToxLjUpKzUsZS5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzPXN9cmV0dXJuIHN9fSx7a2V5OlwiZ3JpZFBhZEZvcnRpdGxlU3VidGl0bGVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1lLmdsb2JhbHMsYT10aGlzLmRDdHguaXNTcGFya2xpbmV8fCFlLmdsb2JhbHMuYXhpc0NoYXJ0cz8wOjEwO1tcInRpdGxlXCIsXCJzdWJ0aXRsZVwiXS5mb3JFYWNoKChmdW5jdGlvbihpKXt2b2lkIDAhPT1lLmNvbmZpZ1tpXS50ZXh0P2ErPWUuY29uZmlnW2ldLm1hcmdpbjphKz10LmRDdHguaXNTcGFya2xpbmV8fCFlLmdsb2JhbHMuYXhpc0NoYXJ0cz8wOjV9KSksIWUuY29uZmlnLmxlZ2VuZC5zaG93fHxcImJvdHRvbVwiIT09ZS5jb25maWcubGVnZW5kLnBvc2l0aW9ufHxlLmNvbmZpZy5sZWdlbmQuZmxvYXRpbmd8fGUuZ2xvYmFscy5heGlzQ2hhcnRzfHwoYSs9MTApO3ZhciBzPXRoaXMuZEN0eC5kaW1IZWxwZXJzLmdldFRpdGxlU3VidGl0bGVDb29yZHMoXCJ0aXRsZVwiKSxyPXRoaXMuZEN0eC5kaW1IZWxwZXJzLmdldFRpdGxlU3VidGl0bGVDb29yZHMoXCJzdWJ0aXRsZVwiKTtpLmdyaWRIZWlnaHQ9aS5ncmlkSGVpZ2h0LXMuaGVpZ2h0LXIuaGVpZ2h0LWEsaS50cmFuc2xhdGVZPWkudHJhbnNsYXRlWStzLmhlaWdodCtyLmhlaWdodCthfX0se2tleTpcInNldEdyaWRYUG9zRm9yRHVhbFlBeGlzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1uZXcgQih0aGlzLmRDdHguY3R4KTtpLmNvbmZpZy55YXhpcy5tYXAoKGZ1bmN0aW9uKHMscil7LTEhPT1pLmdsb2JhbHMuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2Yocil8fHMuZmxvYXRpbmd8fGEuaXNZQXhpc0hpZGRlbihyKXx8KHMub3Bwb3NpdGUmJihpLmdsb2JhbHMudHJhbnNsYXRlWD1pLmdsb2JhbHMudHJhbnNsYXRlWC0oZVtyXS53aWR0aCt0W3JdLndpZHRoKS1wYXJzZUludChpLmNvbmZpZy55YXhpc1tyXS5sYWJlbHMuc3R5bGUuZm9udFNpemUsMTApLzEuMi0xMiksaS5nbG9iYWxzLnRyYW5zbGF0ZVg8MiYmKGkuZ2xvYmFscy50cmFuc2xhdGVYPTIpKX0pKX19XSksdH0oKSxvdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLmxnUmVjdD17fSx0aGlzLnlBeGlzV2lkdGg9MCx0aGlzLnlBeGlzV2lkdGhMZWZ0PTAsdGhpcy55QXhpc1dpZHRoUmlnaHQ9MCx0aGlzLnhBeGlzSGVpZ2h0PTAsdGhpcy5pc1NwYXJrbGluZT10aGlzLncuY29uZmlnLmNoYXJ0LnNwYXJrbGluZS5lbmFibGVkLHRoaXMuZGltSGVscGVycz1uZXcgaXQodGhpcyksdGhpcy5kaW1ZQXhpcz1uZXcgc3QodGhpcyksdGhpcy5kaW1YQXhpcz1uZXcgYXQodGhpcyksdGhpcy5kaW1HcmlkPW5ldyBydCh0aGlzKSx0aGlzLmxnV2lkdGhGb3JTaWRlTGVnZW5kcz0wLHRoaXMuZ3JpZFBhZD10aGlzLncuY29uZmlnLmdyaWQucGFkZGluZyx0aGlzLnhQYWRSaWdodD0wLHRoaXMueFBhZExlZnQ9MH1yZXR1cm4gcih0LFt7a2V5OlwicGxvdENvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPWUuZ2xvYmFsczt0aGlzLmxnUmVjdD10aGlzLmRpbUhlbHBlcnMuZ2V0TGVnZW5kc1JlY3QoKSx0aGlzLmlzU3BhcmtsaW5lJiYoZS5jb25maWcubWFya2Vycy5kaXNjcmV0ZS5sZW5ndGg+MHx8ZS5jb25maWcubWFya2Vycy5zaXplPjApJiZPYmplY3QuZW50cmllcyh0aGlzLmdyaWRQYWQpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBpPWcoZSwyKSxhPWlbMF0scz1pWzFdO3QuZ3JpZFBhZFthXT1NYXRoLm1heChzLHQudy5nbG9iYWxzLm1hcmtlcnMubGFyZ2VzdFNpemUvMS41KX0pKSxpLmF4aXNDaGFydHM/dGhpcy5zZXREaW1lbnNpb25zRm9yQXhpc0NoYXJ0cygpOnRoaXMuc2V0RGltZW5zaW9uc0Zvck5vbkF4aXNDaGFydHMoKSx0aGlzLmRpbUdyaWQuZ3JpZFBhZEZvcnRpdGxlU3VidGl0bGUoKSxpLmdyaWRIZWlnaHQ9aS5ncmlkSGVpZ2h0LXRoaXMuZ3JpZFBhZC50b3AtdGhpcy5ncmlkUGFkLmJvdHRvbSxpLmdyaWRXaWR0aD1pLmdyaWRXaWR0aC10aGlzLmdyaWRQYWQubGVmdC10aGlzLmdyaWRQYWQucmlnaHQtdGhpcy54UGFkUmlnaHQtdGhpcy54UGFkTGVmdDt2YXIgYT10aGlzLmRpbUdyaWQuZ3JpZFBhZEZvckNvbHVtbnNJbk51bWVyaWNBeGlzKGkuZ3JpZFdpZHRoKTtpLmdyaWRXaWR0aD1pLmdyaWRXaWR0aC0yKmEsaS50cmFuc2xhdGVYPWkudHJhbnNsYXRlWCt0aGlzLmdyaWRQYWQubGVmdCt0aGlzLnhQYWRMZWZ0KyhhPjA/YSs0OjApLGkudHJhbnNsYXRlWT1pLnRyYW5zbGF0ZVkrdGhpcy5ncmlkUGFkLnRvcH19LHtrZXk6XCJzZXREaW1lbnNpb25zRm9yQXhpc0NoYXJ0c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPWUuZ2xvYmFscyxhPXRoaXMuZGltWUF4aXMuZ2V0eUF4aXNMYWJlbHNDb29yZHMoKSxzPXRoaXMuZGltWUF4aXMuZ2V0eUF4aXNUaXRsZUNvb3JkcygpO2UuZ2xvYmFscy55TGFiZWxzQ29vcmRzPVtdLGUuZ2xvYmFscy55VGl0bGVDb29yZHM9W10sZS5jb25maWcueWF4aXMubWFwKChmdW5jdGlvbih0LGkpe2UuZ2xvYmFscy55TGFiZWxzQ29vcmRzLnB1c2goe3dpZHRoOmFbaV0ud2lkdGgsaW5kZXg6aX0pLGUuZ2xvYmFscy55VGl0bGVDb29yZHMucHVzaCh7d2lkdGg6c1tpXS53aWR0aCxpbmRleDppfSl9KSksdGhpcy55QXhpc1dpZHRoPXRoaXMuZGltWUF4aXMuZ2V0VG90YWxZQXhpc1dpZHRoKCk7dmFyIHI9dGhpcy5kaW1YQXhpcy5nZXR4QXhpc0xhYmVsc0Nvb3JkcygpLG89dGhpcy5kaW1YQXhpcy5nZXR4QXhpc0dyb3VwTGFiZWxzQ29vcmRzKCksbj10aGlzLmRpbVhBeGlzLmdldHhBeGlzVGl0bGVDb29yZHMoKTt0aGlzLmNvbmRpdGlvbmFsQ2hlY2tzRm9yQXhpc0Nvb3JkcyhyLG4sbyksaS50cmFuc2xhdGVYQXhpc1k9ZS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM/dGhpcy54QXhpc0hlaWdodC84Oi00LGkudHJhbnNsYXRlWEF4aXNYPWUuZ2xvYmFscy5yb3RhdGVYTGFiZWxzJiZlLmdsb2JhbHMuaXNYTnVtZXJpYyYmZS5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZTw9LTQ1Py10aGlzLnhBeGlzV2lkdGgvNDowLGUuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihpLnJvdGF0ZVhMYWJlbHM9ITEsaS50cmFuc2xhdGVYQXhpc1k9cGFyc2VJbnQoZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplLDEwKS8xLjUqLTEpLGkudHJhbnNsYXRlWEF4aXNZPWkudHJhbnNsYXRlWEF4aXNZK2UuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRZLGkudHJhbnNsYXRlWEF4aXNYPWkudHJhbnNsYXRlWEF4aXNYK2UuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRYO3ZhciBsPXRoaXMueUF4aXNXaWR0aCxoPXRoaXMueEF4aXNIZWlnaHQ7aS54QXhpc0xhYmVsc0hlaWdodD10aGlzLnhBeGlzSGVpZ2h0LW4uaGVpZ2h0LGkueEF4aXNHcm91cExhYmVsc0hlaWdodD1pLnhBeGlzTGFiZWxzSGVpZ2h0LXIuaGVpZ2h0LGkueEF4aXNMYWJlbHNXaWR0aD10aGlzLnhBeGlzV2lkdGgsaS54QXhpc0hlaWdodD10aGlzLnhBeGlzSGVpZ2h0O3ZhciBjPTEwOyhcInJhZGFyXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlfHx0aGlzLmlzU3BhcmtsaW5lKSYmKGw9MCxoPWkuZ29sZGVuUGFkZGluZyksdGhpcy5pc1NwYXJrbGluZSYmKHRoaXMubGdSZWN0PXtoZWlnaHQ6MCx3aWR0aDowfSksKHRoaXMuaXNTcGFya2xpbmV8fFwidHJlZW1hcFwiPT09ZS5jb25maWcuY2hhcnQudHlwZSkmJihsPTAsaD0wLGM9MCksdGhpcy5pc1NwYXJrbGluZXx8dGhpcy5kaW1YQXhpcy5hZGRpdGlvbmFsUGFkZGluZ1hMYWJlbHMocik7dmFyIGQ9ZnVuY3Rpb24oKXtpLnRyYW5zbGF0ZVg9bCxpLmdyaWRIZWlnaHQ9aS5zdmdIZWlnaHQtdC5sZ1JlY3QuaGVpZ2h0LWgtKHQuaXNTcGFya2xpbmV8fFwidHJlZW1hcFwiPT09ZS5jb25maWcuY2hhcnQudHlwZT8wOmUuZ2xvYmFscy5yb3RhdGVYTGFiZWxzPzEwOjE1KSxpLmdyaWRXaWR0aD1pLnN2Z1dpZHRoLWx9O3N3aXRjaChcInRvcFwiPT09ZS5jb25maWcueGF4aXMucG9zaXRpb24mJihjPWkueEF4aXNIZWlnaHQtZS5jb25maWcueGF4aXMuYXhpc1RpY2tzLmhlaWdodC01KSxlLmNvbmZpZy5sZWdlbmQucG9zaXRpb24pe2Nhc2VcImJvdHRvbVwiOmkudHJhbnNsYXRlWT1jLGQoKTticmVhaztjYXNlXCJ0b3BcIjppLnRyYW5zbGF0ZVk9dGhpcy5sZ1JlY3QuaGVpZ2h0K2MsZCgpO2JyZWFrO2Nhc2VcImxlZnRcIjppLnRyYW5zbGF0ZVk9YyxpLnRyYW5zbGF0ZVg9dGhpcy5sZ1JlY3Qud2lkdGgrbCxpLmdyaWRIZWlnaHQ9aS5zdmdIZWlnaHQtaC0xMixpLmdyaWRXaWR0aD1pLnN2Z1dpZHRoLXRoaXMubGdSZWN0LndpZHRoLWw7YnJlYWs7Y2FzZVwicmlnaHRcIjppLnRyYW5zbGF0ZVk9YyxpLnRyYW5zbGF0ZVg9bCxpLmdyaWRIZWlnaHQ9aS5zdmdIZWlnaHQtaC0xMixpLmdyaWRXaWR0aD1pLnN2Z1dpZHRoLXRoaXMubGdSZWN0LndpZHRoLWwtNTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkxlZ2VuZCBwb3NpdGlvbiBub3Qgc3VwcG9ydGVkXCIpfXRoaXMuZGltR3JpZC5zZXRHcmlkWFBvc0ZvckR1YWxZQXhpcyhzLGEpLG5ldyBxKHRoaXMuY3R4KS5zZXRZQXhpc1hQb3NpdGlvbihhLHMpfX0se2tleTpcInNldERpbWVuc2lvbnNGb3JOb25BeGlzQ2hhcnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMsaT10LmNvbmZpZyxhPTA7dC5jb25maWcubGVnZW5kLnNob3cmJiF0LmNvbmZpZy5sZWdlbmQuZmxvYXRpbmcmJihhPTIwKTt2YXIgcz1cInBpZVwiPT09aS5jaGFydC50eXBlfHxcInBvbGFyQXJlYVwiPT09aS5jaGFydC50eXBlfHxcImRvbnV0XCI9PT1pLmNoYXJ0LnR5cGU/XCJwaWVcIjpcInJhZGlhbEJhclwiLHI9aS5wbG90T3B0aW9uc1tzXS5vZmZzZXRZLG89aS5wbG90T3B0aW9uc1tzXS5vZmZzZXRYO2lmKCFpLmxlZ2VuZC5zaG93fHxpLmxlZ2VuZC5mbG9hdGluZylyZXR1cm4gZS5ncmlkSGVpZ2h0PWUuc3ZnSGVpZ2h0LWkuZ3JpZC5wYWRkaW5nLmxlZnQraS5ncmlkLnBhZGRpbmcucmlnaHQsZS5ncmlkV2lkdGg9ZS5ncmlkSGVpZ2h0LGUudHJhbnNsYXRlWT1yLHZvaWQoZS50cmFuc2xhdGVYPW8rKGUuc3ZnV2lkdGgtZS5ncmlkV2lkdGgpLzIpO3N3aXRjaChpLmxlZ2VuZC5wb3NpdGlvbil7Y2FzZVwiYm90dG9tXCI6ZS5ncmlkSGVpZ2h0PWUuc3ZnSGVpZ2h0LXRoaXMubGdSZWN0LmhlaWdodC1lLmdvbGRlblBhZGRpbmcsZS5ncmlkV2lkdGg9ZS5zdmdXaWR0aCxlLnRyYW5zbGF0ZVk9ci0xMCxlLnRyYW5zbGF0ZVg9bysoZS5zdmdXaWR0aC1lLmdyaWRXaWR0aCkvMjticmVhaztjYXNlXCJ0b3BcIjplLmdyaWRIZWlnaHQ9ZS5zdmdIZWlnaHQtdGhpcy5sZ1JlY3QuaGVpZ2h0LWUuZ29sZGVuUGFkZGluZyxlLmdyaWRXaWR0aD1lLnN2Z1dpZHRoLGUudHJhbnNsYXRlWT10aGlzLmxnUmVjdC5oZWlnaHQrcisxMCxlLnRyYW5zbGF0ZVg9bysoZS5zdmdXaWR0aC1lLmdyaWRXaWR0aCkvMjticmVhaztjYXNlXCJsZWZ0XCI6ZS5ncmlkV2lkdGg9ZS5zdmdXaWR0aC10aGlzLmxnUmVjdC53aWR0aC1hLGUuZ3JpZEhlaWdodD1cImF1dG9cIiE9PWkuY2hhcnQuaGVpZ2h0P2Uuc3ZnSGVpZ2h0OmUuZ3JpZFdpZHRoLGUudHJhbnNsYXRlWT1yLGUudHJhbnNsYXRlWD1vK3RoaXMubGdSZWN0LndpZHRoK2E7YnJlYWs7Y2FzZVwicmlnaHRcIjplLmdyaWRXaWR0aD1lLnN2Z1dpZHRoLXRoaXMubGdSZWN0LndpZHRoLWEtNSxlLmdyaWRIZWlnaHQ9XCJhdXRvXCIhPT1pLmNoYXJ0LmhlaWdodD9lLnN2Z0hlaWdodDplLmdyaWRXaWR0aCxlLnRyYW5zbGF0ZVk9cixlLnRyYW5zbGF0ZVg9bysxMDticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkxlZ2VuZCBwb3NpdGlvbiBub3Qgc3VwcG9ydGVkXCIpfX19LHtrZXk6XCJjb25kaXRpb25hbENoZWNrc0ZvckF4aXNDb29yZHNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53LHM9YS5nbG9iYWxzLmhhc1hheGlzR3JvdXBzPzI6MSxyPWkuaGVpZ2h0K3QuaGVpZ2h0K2UuaGVpZ2h0LG89YS5nbG9iYWxzLmlzTXVsdGlMaW5lWD8xLjI6YS5nbG9iYWxzLkxJTkVfSEVJR0hUX1JBVElPLG49YS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM/MjI6MTAsbD1hLmdsb2JhbHMucm90YXRlWExhYmVscyYmXCJib3R0b21cIj09PWEuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbj8xMDowO3RoaXMueEF4aXNIZWlnaHQ9cipvK3MqbitsLHRoaXMueEF4aXNXaWR0aD10LndpZHRoLHRoaXMueEF4aXNIZWlnaHQtZS5oZWlnaHQ+YS5jb25maWcueGF4aXMubGFiZWxzLm1heEhlaWdodCYmKHRoaXMueEF4aXNIZWlnaHQ9YS5jb25maWcueGF4aXMubGFiZWxzLm1heEhlaWdodCksYS5jb25maWcueGF4aXMubGFiZWxzLm1pbkhlaWdodCYmdGhpcy54QXhpc0hlaWdodDxhLmNvbmZpZy54YXhpcy5sYWJlbHMubWluSGVpZ2h0JiYodGhpcy54QXhpc0hlaWdodD1hLmNvbmZpZy54YXhpcy5sYWJlbHMubWluSGVpZ2h0KSxhLmNvbmZpZy54YXhpcy5mbG9hdGluZyYmKHRoaXMueEF4aXNIZWlnaHQ9MCk7dmFyIGg9MCxjPTA7YS5jb25maWcueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7aCs9dC5sYWJlbHMubWluV2lkdGgsYys9dC5sYWJlbHMubWF4V2lkdGh9KSksdGhpcy55QXhpc1dpZHRoPGgmJih0aGlzLnlBeGlzV2lkdGg9aCksdGhpcy55QXhpc1dpZHRoPmMmJih0aGlzLnlBeGlzV2lkdGg9Yyl9fV0pLHR9KCksbnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMubGdDdHg9ZX1yZXR1cm4gcih0LFt7a2V5OlwiZ2V0TGVnZW5kU3R5bGVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7dC5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsXCJ0ZXh0L2Nzc1wiKTt2YXIgZT1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcIlxcdFxcbiAgICBcXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQge1xcdFxcbiAgICAgICAgZGlzcGxheTogZmxleDtcXHRcXG4gICAgICAgIG92ZXJmbG93OiBhdXRvO1xcdFxcbiAgICAgICAgcGFkZGluZzogMCAxMHB4O1xcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1ib3R0b20sIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLXRvcCB7XFx0XFxuICAgICAgICBmbGV4LXdyYXA6IHdyYXBcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tcmlnaHQsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWxlZnQge1xcdFxcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXHRcXG4gICAgICAgIGJvdHRvbTogMDtcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tYm90dG9tLmFwZXhjaGFydHMtYWxpZ24tbGVmdCwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tdG9wLmFwZXhjaGFydHMtYWxpZ24tbGVmdCwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tcmlnaHQsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWxlZnQge1xcdFxcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1ib3R0b20uYXBleGNoYXJ0cy1hbGlnbi1jZW50ZXIsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLXRvcC5hcGV4Y2hhcnRzLWFsaWduLWNlbnRlciB7XFx0XFxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgIFxcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1ib3R0b20uYXBleGNoYXJ0cy1hbGlnbi1yaWdodCwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tdG9wLmFwZXhjaGFydHMtYWxpZ24tcmlnaHQge1xcdFxcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllcyB7XFx0XFxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XFx0XFxuICAgICAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1ib3R0b20gLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllcywgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tdG9wIC5hcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXN7XFx0XFxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xcdFxcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLXRleHQge1xcdFxcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcdFxcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQtdGV4dCAqLCAuYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyICoge1xcdFxcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC1tYXJrZXIge1xcdFxcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcdFxcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcdFxcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xcdFxcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAzcHg7XFx0XFxuICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xcbiAgICAgIH1cXHRcXG4gICAgICBcXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQuYXBleGNoYXJ0cy1hbGlnbi1yaWdodCAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVzLCAuYXBleGNoYXJ0cy1sZWdlbmQuYXBleGNoYXJ0cy1hbGlnbi1sZWZ0IC5hcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXN7XFx0XFxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXMuYXBleGNoYXJ0cy1uby1jbGljayB7XFx0XFxuICAgICAgICBjdXJzb3I6IGF1dG87XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZCAuYXBleGNoYXJ0cy1oaWRkZW4temVyby1zZXJpZXMsIC5hcGV4Y2hhcnRzLWxlZ2VuZCAuYXBleGNoYXJ0cy1oaWRkZW4tbnVsbC1zZXJpZXMge1xcdFxcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1pbmFjdGl2ZS1sZWdlbmQge1xcdFxcbiAgICAgICAgb3BhY2l0eTogMC40NTtcXHRcXG4gICAgICB9XCIpO3JldHVybiB0LmFwcGVuZENoaWxkKGUpLHR9fSx7a2V5OlwiZ2V0TGVnZW5kQkJveFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtbGVnZW5kXCIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGU9dC53aWR0aDtyZXR1cm57Y2x3aDp0LmhlaWdodCxjbHd3OmV9fX0se2tleTpcImFwcGVuZFRvRm9yZWlnbk9iamVjdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy53Lmdsb2JhbHMuZG9tLmVsTGVnZW5kRm9yZWlnbi5hcHBlbmRDaGlsZCh0aGlzLmdldExlZ2VuZFN0eWxlcygpKX19LHtrZXk6XCJ0b2dnbGVEYXRhU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLGE9dGhpcy53O2lmKGEuZ2xvYmFscy5heGlzQ2hhcnRzfHxcInJhZGlhbEJhclwiPT09YS5jb25maWcuY2hhcnQudHlwZSl7YS5nbG9iYWxzLnJlc2l6ZWQ9ITA7dmFyIHM9bnVsbCxyPW51bGw7aWYoYS5nbG9iYWxzLnJpc2luZ1Nlcmllcz1bXSxhLmdsb2JhbHMuYXhpc0NoYXJ0cz8ocz1hLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KHQsXCInXVwiKSkscj1wYXJzZUludChzLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpLDEwKSk6KHM9YS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9J1wiLmNvbmNhdCh0KzEsXCInXVwiKSkscj1wYXJzZUludChzLmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMSksZSlbe2NzOmEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMsY3NpOmEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzfSx7Y3M6YS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllcyxjc2k6YS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXN9XS5mb3JFYWNoKChmdW5jdGlvbih0KXtpLnJpc2VDb2xsYXBzZWRTZXJpZXModC5jcyx0LmNzaSxyKX0pKTtlbHNlIHRoaXMuaGlkZVNlcmllcyh7c2VyaWVzRWw6cyxyZWFsSW5kZXg6cn0pfWVsc2V7dmFyIG89YS5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoXCIgLmFwZXhjaGFydHMtc2VyaWVzW3JlbD0nXCIuY29uY2F0KHQrMSxcIiddIHBhdGhcIikpLG49YS5jb25maWcuY2hhcnQudHlwZTtpZihcInBpZVwiPT09bnx8XCJwb2xhckFyZWFcIj09PW58fFwiZG9udXRcIj09PW4pe3ZhciBsPWEuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kb251dC5sYWJlbHM7bmV3IG0odGhpcy5sZ0N0eC5jdHgpLnBhdGhNb3VzZURvd24oby5tZW1iZXJzWzBdLG51bGwpLHRoaXMubGdDdHguY3R4LnBpZS5wcmludERhdGFMYWJlbHNJbm5lcihvLm1lbWJlcnNbMF0ubm9kZSxsKX1vLmZpcmUoXCJjbGlja1wiKX19fSx7a2V5OlwiaGlkZVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuc2VyaWVzRWwsaT10LnJlYWxJbmRleCxhPXRoaXMudyxzPXguY2xvbmUoYS5jb25maWcuc2VyaWVzKTtpZihhLmdsb2JhbHMuYXhpc0NoYXJ0cyl7dmFyIHI9ITE7aWYoYS5jb25maWcueWF4aXNbaV0mJmEuY29uZmlnLnlheGlzW2ldLnNob3cmJmEuY29uZmlnLnlheGlzW2ldLnNob3dBbHdheXMmJihyPSEwLGEuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoaSk8MCYmKGEuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXMucHVzaCh7aW5kZXg6aSxkYXRhOnNbaV0uZGF0YS5zbGljZSgpLHR5cGU6ZS5wYXJlbnROb2RlLmNsYXNzTmFtZS5iYXNlVmFsLnNwbGl0KFwiLVwiKVsxXX0pLGEuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLnB1c2goaSkpKSwhcil7YS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5wdXNoKHtpbmRleDppLGRhdGE6c1tpXS5kYXRhLnNsaWNlKCksdHlwZTplLnBhcmVudE5vZGUuY2xhc3NOYW1lLmJhc2VWYWwuc3BsaXQoXCItXCIpWzFdfSksYS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMucHVzaChpKTt2YXIgbz1hLmdsb2JhbHMucmlzaW5nU2VyaWVzLmluZGV4T2YoaSk7YS5nbG9iYWxzLnJpc2luZ1Nlcmllcy5zcGxpY2UobywxKX19ZWxzZSBhLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLnB1c2goe2luZGV4OmksZGF0YTpzW2ldfSksYS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMucHVzaChpKTtmb3IodmFyIG49ZS5jaGlsZE5vZGVzLGw9MDtsPG4ubGVuZ3RoO2wrKyluW2xdLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMtd3JhcFwiKSYmKG5bbF0uY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1oaWRlXCIpP25bbF0uY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtaGlkZVwiKTpuW2xdLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWhpZGVcIikpO2EuZ2xvYmFscy5hbGxTZXJpZXNDb2xsYXBzZWQ9YS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGg9PT1hLmNvbmZpZy5zZXJpZXMubGVuZ3RoLHM9dGhpcy5fZ2V0U2VyaWVzQmFzZWRPbkNvbGxhcHNlZFN0YXRlKHMpLHRoaXMubGdDdHguY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZVNlcmllcyhzLGEuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkKX19LHtrZXk6XCJyaXNlQ29sbGFwc2VkU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudyxzPXguY2xvbmUoYS5jb25maWcuc2VyaWVzKTtpZih0Lmxlbmd0aD4wKXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdLmluZGV4PT09aSYmKGEuZ2xvYmFscy5heGlzQ2hhcnRzPyhzW2ldLmRhdGE9dFtyXS5kYXRhLnNsaWNlKCksdC5zcGxpY2UociwxKSxlLnNwbGljZShyLDEpLGEuZ2xvYmFscy5yaXNpbmdTZXJpZXMucHVzaChpKSk6KHNbaV09dFtyXS5kYXRhLHQuc3BsaWNlKHIsMSksZS5zcGxpY2UociwxKSxhLmdsb2JhbHMucmlzaW5nU2VyaWVzLnB1c2goaSkpKTtzPXRoaXMuX2dldFNlcmllc0Jhc2VkT25Db2xsYXBzZWRTdGF0ZShzKSx0aGlzLmxnQ3R4LmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVTZXJpZXMocyxhLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCl9fX0se2tleTpcIl9nZXRTZXJpZXNCYXNlZE9uQ29sbGFwc2VkU3RhdGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7cmV0dXJuIGUuZ2xvYmFscy5heGlzQ2hhcnRzP3QuZm9yRWFjaCgoZnVuY3Rpb24oaSxhKXtlLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGEpPi0xJiYodFthXS5kYXRhPVtdKX0pKTp0LmZvckVhY2goKGZ1bmN0aW9uKGksYSl7ZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihhKT4tMSYmKHRbYV09MCl9KSksdH19XSksdH0oKSxsdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLm9uTGVnZW5kQ2xpY2s9dGhpcy5vbkxlZ2VuZENsaWNrLmJpbmQodGhpcyksdGhpcy5vbkxlZ2VuZEhvdmVyZWQ9dGhpcy5vbkxlZ2VuZEhvdmVyZWQuYmluZCh0aGlzKSx0aGlzLmlzQmFyc0Rpc3RyaWJ1dGVkPVwiYmFyXCI9PT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUmJnRoaXMudy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRpc3RyaWJ1dGVkJiYxPT09dGhpcy53LmNvbmZpZy5zZXJpZXMubGVuZ3RoLHRoaXMubGVnZW5kSGVscGVycz1uZXcgbnQodGhpcyl9cmV0dXJuIHIodCxbe2tleTpcImluaXRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuZ2xvYmFscyxpPXQuY29uZmlnO2lmKChpLmxlZ2VuZC5zaG93Rm9yU2luZ2xlU2VyaWVzJiYxPT09ZS5zZXJpZXMubGVuZ3RofHx0aGlzLmlzQmFyc0Rpc3RyaWJ1dGVkfHxlLnNlcmllcy5sZW5ndGg+MXx8IWUuYXhpc0NoYXJ0cykmJmkubGVnZW5kLnNob3cpe2Zvcig7ZS5kb20uZWxMZWdlbmRXcmFwLmZpcnN0Q2hpbGQ7KWUuZG9tLmVsTGVnZW5kV3JhcC5yZW1vdmVDaGlsZChlLmRvbS5lbExlZ2VuZFdyYXAuZmlyc3RDaGlsZCk7dGhpcy5kcmF3TGVnZW5kcygpLHguaXNJRTExKCk/ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdLmFwcGVuZENoaWxkKHRoaXMubGVnZW5kSGVscGVycy5nZXRMZWdlbmRTdHlsZXMoKSk6dGhpcy5sZWdlbmRIZWxwZXJzLmFwcGVuZFRvRm9yZWlnbk9iamVjdCgpLFwiYm90dG9tXCI9PT1pLmxlZ2VuZC5wb3NpdGlvbnx8XCJ0b3BcIj09PWkubGVnZW5kLnBvc2l0aW9uP3RoaXMubGVnZW5kQWxpZ25Ib3Jpem9udGFsKCk6XCJyaWdodFwiIT09aS5sZWdlbmQucG9zaXRpb24mJlwibGVmdFwiIT09aS5sZWdlbmQucG9zaXRpb258fHRoaXMubGVnZW5kQWxpZ25WZXJ0aWNhbCgpfX19LHtrZXk6XCJkcmF3TGVnZW5kc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPWUuY29uZmlnLmxlZ2VuZC5mb250RmFtaWx5LGE9ZS5nbG9iYWxzLnNlcmllc05hbWVzLHM9ZS5nbG9iYWxzLmNvbG9ycy5zbGljZSgpO2lmKFwiaGVhdG1hcFwiPT09ZS5jb25maWcuY2hhcnQudHlwZSl7dmFyIHI9ZS5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5jb2xvclNjYWxlLnJhbmdlczthPXIubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5uYW1lP3QubmFtZTp0LmZyb20rXCIgLSBcIit0LnRvfSkpLHM9ci5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNvbG9yfSkpfWVsc2UgdGhpcy5pc0JhcnNEaXN0cmlidXRlZCYmKGE9ZS5nbG9iYWxzLmxhYmVscy5zbGljZSgpKTtlLmNvbmZpZy5sZWdlbmQuY3VzdG9tTGVnZW5kSXRlbXMubGVuZ3RoJiYoYT1lLmNvbmZpZy5sZWdlbmQuY3VzdG9tTGVnZW5kSXRlbXMpO2Zvcih2YXIgbz1lLmdsb2JhbHMubGVnZW5kRm9ybWF0dGVyLG49ZS5jb25maWcubGVnZW5kLmludmVyc2VPcmRlcixsPW4/YS5sZW5ndGgtMTowO24/bD49MDpsPD1hLmxlbmd0aC0xO24/bC0tOmwrKyl7dmFyIGg9byhhW2xdLHtzZXJpZXNJbmRleDpsLHc6ZX0pLGM9ITEsZD0hMTtpZihlLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aD4wKWZvcih2YXIgZz0wO2c8ZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGg7ZysrKWUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNbZ10uaW5kZXg9PT1sJiYoYz0hMCk7aWYoZS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMubGVuZ3RoPjApZm9yKHZhciB1PTA7dTxlLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5sZW5ndGg7dSsrKWUuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzW3VdPT09bCYmKGQ9ITApO3ZhciBwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO3AuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtbGVnZW5kLW1hcmtlclwiKTt2YXIgZj1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5vZmZzZXRYLGI9ZS5jb25maWcubGVnZW5kLm1hcmtlcnMub2Zmc2V0WSx2PWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmhlaWdodCx3PWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLndpZHRoLGs9ZS5jb25maWcubGVnZW5kLm1hcmtlcnMuc3Ryb2tlV2lkdGgsQT1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5zdHJva2VDb2xvcixTPWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLnJhZGl1cyxDPXAuc3R5bGU7Qy5iYWNrZ3JvdW5kPXNbbF0sQy5jb2xvcj1zW2xdLEMuc2V0UHJvcGVydHkoXCJiYWNrZ3JvdW5kXCIsc1tsXSxcImltcG9ydGFudFwiKSxlLmNvbmZpZy5sZWdlbmQubWFya2Vycy5maWxsQ29sb3JzJiZlLmNvbmZpZy5sZWdlbmQubWFya2Vycy5maWxsQ29sb3JzW2xdJiYoQy5iYWNrZ3JvdW5kPWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmZpbGxDb2xvcnNbbF0pLHZvaWQgMCE9PWUuZ2xvYmFscy5zZXJpZXNDb2xvcnNbbF0mJihDLmJhY2tncm91bmQ9ZS5nbG9iYWxzLnNlcmllc0NvbG9yc1tsXSxDLmNvbG9yPWUuZ2xvYmFscy5zZXJpZXNDb2xvcnNbbF0pLEMuaGVpZ2h0PUFycmF5LmlzQXJyYXkodik/cGFyc2VGbG9hdCh2W2xdKStcInB4XCI6cGFyc2VGbG9hdCh2KStcInB4XCIsQy53aWR0aD1BcnJheS5pc0FycmF5KHcpP3BhcnNlRmxvYXQod1tsXSkrXCJweFwiOnBhcnNlRmxvYXQodykrXCJweFwiLEMubGVmdD0oQXJyYXkuaXNBcnJheShmKT9wYXJzZUZsb2F0KGZbbF0pOnBhcnNlRmxvYXQoZikpK1wicHhcIixDLnRvcD0oQXJyYXkuaXNBcnJheShiKT9wYXJzZUZsb2F0KGJbbF0pOnBhcnNlRmxvYXQoYikpK1wicHhcIixDLmJvcmRlcldpZHRoPUFycmF5LmlzQXJyYXkoayk/a1tsXTprLEMuYm9yZGVyQ29sb3I9QXJyYXkuaXNBcnJheShBKT9BW2xdOkEsQy5ib3JkZXJSYWRpdXM9QXJyYXkuaXNBcnJheShTKT9wYXJzZUZsb2F0KFNbbF0pK1wicHhcIjpwYXJzZUZsb2F0KFMpK1wicHhcIixlLmNvbmZpZy5sZWdlbmQubWFya2Vycy5jdXN0b21IVE1MJiYoQXJyYXkuaXNBcnJheShlLmNvbmZpZy5sZWdlbmQubWFya2Vycy5jdXN0b21IVE1MKT9lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5jdXN0b21IVE1MW2xdJiYocC5pbm5lckhUTUw9ZS5jb25maWcubGVnZW5kLm1hcmtlcnMuY3VzdG9tSFRNTFtsXSgpKTpwLmlubmVySFRNTD1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5jdXN0b21IVE1MKCkpLG0uc2V0QXR0cnMocCx7cmVsOmwrMSxcImRhdGE6Y29sbGFwc2VkXCI6Y3x8ZH0pLChjfHxkKSYmcC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1pbmFjdGl2ZS1sZWdlbmRcIik7dmFyIEw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxQPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1AuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtbGVnZW5kLXRleHRcIiksUC5pbm5lckhUTUw9QXJyYXkuaXNBcnJheShoKT9oLmpvaW4oXCIgXCIpOmg7dmFyIEk9ZS5jb25maWcubGVnZW5kLmxhYmVscy51c2VTZXJpZXNDb2xvcnM/ZS5nbG9iYWxzLmNvbG9yc1tsXTplLmNvbmZpZy5sZWdlbmQubGFiZWxzLmNvbG9ycztJfHwoST1lLmNvbmZpZy5jaGFydC5mb3JlQ29sb3IpLFAuc3R5bGUuY29sb3I9SSxQLnN0eWxlLmZvbnRTaXplPXBhcnNlRmxvYXQoZS5jb25maWcubGVnZW5kLmZvbnRTaXplKStcInB4XCIsUC5zdHlsZS5mb250V2VpZ2h0PWUuY29uZmlnLmxlZ2VuZC5mb250V2VpZ2h0LFAuc3R5bGUuZm9udEZhbWlseT1pfHxlLmNvbmZpZy5jaGFydC5mb250RmFtaWx5LG0uc2V0QXR0cnMoUCx7cmVsOmwrMSxpOmwsXCJkYXRhOmRlZmF1bHQtdGV4dFwiOmVuY29kZVVSSUNvbXBvbmVudChoKSxcImRhdGE6Y29sbGFwc2VkXCI6Y3x8ZH0pLEwuYXBwZW5kQ2hpbGQocCksTC5hcHBlbmRDaGlsZChQKTt2YXIgVD1uZXcgeSh0aGlzLmN0eCk7aWYoIWUuY29uZmlnLmxlZ2VuZC5zaG93Rm9yWmVyb1NlcmllcykwPT09VC5nZXRTZXJpZXNUb3RhbEJ5SW5kZXgobCkmJlQuc2VyaWVzSGF2ZVNhbWVWYWx1ZXMobCkmJiFULmlzU2VyaWVzTnVsbChsKSYmLTE9PT1lLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGwpJiYtMT09PWUuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YobCkmJkwuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtaGlkZGVuLXplcm8tc2VyaWVzXCIpO2UuY29uZmlnLmxlZ2VuZC5zaG93Rm9yTnVsbFNlcmllc3x8VC5pc1Nlcmllc051bGwobCkmJi0xPT09ZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihsKSYmLTE9PT1lLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGwpJiZMLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWhpZGRlbi1udWxsLXNlcmllc1wiKSxlLmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcC5hcHBlbmRDaGlsZChMKSxlLmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hbGlnbi1cIi5jb25jYXQoZS5jb25maWcubGVnZW5kLmhvcml6b250YWxBbGlnbikpLGUuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLmNsYXNzTGlzdC5hZGQoXCJhcHgtbGVnZW5kLXBvc2l0aW9uLVwiK2UuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiksTC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVzXCIpLEwuc3R5bGUubWFyZ2luPVwiXCIuY29uY2F0KGUuY29uZmlnLmxlZ2VuZC5pdGVtTWFyZ2luLnZlcnRpY2FsLFwicHggXCIpLmNvbmNhdChlLmNvbmZpZy5sZWdlbmQuaXRlbU1hcmdpbi5ob3Jpem9udGFsLFwicHhcIiksZS5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAuc3R5bGUud2lkdGg9ZS5jb25maWcubGVnZW5kLndpZHRoP2UuY29uZmlnLmxlZ2VuZC53aWR0aCtcInB4XCI6XCJcIixlLmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcC5zdHlsZS5oZWlnaHQ9ZS5jb25maWcubGVnZW5kLmhlaWdodD9lLmNvbmZpZy5sZWdlbmQuaGVpZ2h0K1wicHhcIjpcIlwiLG0uc2V0QXR0cnMoTCx7cmVsOmwrMSxzZXJpZXNOYW1lOnguZXNjYXBlU3RyaW5nKGFbbF0pLFwiZGF0YTpjb2xsYXBzZWRcIjpjfHxkfSksKGN8fGQpJiZMLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWluYWN0aXZlLWxlZ2VuZFwiKSxlLmNvbmZpZy5sZWdlbmQub25JdGVtQ2xpY2sudG9nZ2xlRGF0YVNlcmllc3x8TC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1uby1jbGlja1wiKX1lLmdsb2JhbHMuZG9tLmVsV3JhcC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0Lm9uTGVnZW5kQ2xpY2ssITApLGUuY29uZmlnLmxlZ2VuZC5vbkl0ZW1Ib3Zlci5oaWdobGlnaHREYXRhU2VyaWVzJiYwPT09ZS5jb25maWcubGVnZW5kLmN1c3RvbUxlZ2VuZEl0ZW1zLmxlbmd0aCYmKGUuZ2xvYmFscy5kb20uZWxXcmFwLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIix0Lm9uTGVnZW5kSG92ZXJlZCwhMCksZS5nbG9iYWxzLmRvbS5lbFdyYXAuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlb3V0XCIsdC5vbkxlZ2VuZEhvdmVyZWQsITApKX19LHtrZXk6XCJzZXRMZWdlbmRXcmFwWFlcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPWkuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLHM9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPTAsbz0wO2lmKFwiYm90dG9tXCI9PT1pLmNvbmZpZy5sZWdlbmQucG9zaXRpb24pbys9aS5nbG9iYWxzLnN2Z0hlaWdodC1zLmhlaWdodC8yO2Vsc2UgaWYoXCJ0b3BcIj09PWkuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbil7dmFyIG49bmV3IG90KHRoaXMuY3R4KSxsPW4uZGltSGVscGVycy5nZXRUaXRsZVN1YnRpdGxlQ29vcmRzKFwidGl0bGVcIikuaGVpZ2h0LGg9bi5kaW1IZWxwZXJzLmdldFRpdGxlU3VidGl0bGVDb29yZHMoXCJzdWJ0aXRsZVwiKS5oZWlnaHQ7bz1vKyhsPjA/bC0xMDowKSsoaD4wP2gtMTA6MCl9YS5zdHlsZS5wb3NpdGlvbj1cImFic29sdXRlXCIscj1yK3QraS5jb25maWcubGVnZW5kLm9mZnNldFgsbz1vK2UraS5jb25maWcubGVnZW5kLm9mZnNldFksYS5zdHlsZS5sZWZ0PXIrXCJweFwiLGEuc3R5bGUudG9wPW8rXCJweFwiLFwiYm90dG9tXCI9PT1pLmNvbmZpZy5sZWdlbmQucG9zaXRpb24/KGEuc3R5bGUudG9wPVwiYXV0b1wiLGEuc3R5bGUuYm90dG9tPTUtaS5jb25maWcubGVnZW5kLm9mZnNldFkrXCJweFwiKTpcInJpZ2h0XCI9PT1pLmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJihhLnN0eWxlLmxlZnQ9XCJhdXRvXCIsYS5zdHlsZS5yaWdodD0yNStpLmNvbmZpZy5sZWdlbmQub2Zmc2V0WCtcInB4XCIpO1tcIndpZHRoXCIsXCJoZWlnaHRcIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7YS5zdHlsZVt0XSYmKGEuc3R5bGVbdF09cGFyc2VJbnQoaS5jb25maWcubGVnZW5kW3RdLDEwKStcInB4XCIpfSkpfX0se2tleTpcImxlZ2VuZEFsaWduSG9yaXpvbnRhbFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O3QuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLnN0eWxlLnJpZ2h0PTA7dmFyIGU9dGhpcy5sZWdlbmRIZWxwZXJzLmdldExlZ2VuZEJCb3goKSxpPW5ldyBvdCh0aGlzLmN0eCksYT1pLmRpbUhlbHBlcnMuZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcyhcInRpdGxlXCIpLHM9aS5kaW1IZWxwZXJzLmdldFRpdGxlU3VidGl0bGVDb29yZHMoXCJzdWJ0aXRsZVwiKSxyPTA7XCJib3R0b21cIj09PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbj9yPS1lLmNsd2gvMS44OlwidG9wXCI9PT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJihyPWEuaGVpZ2h0K3MuaGVpZ2h0K3QuY29uZmlnLnRpdGxlLm1hcmdpbit0LmNvbmZpZy5zdWJ0aXRsZS5tYXJnaW4tMTApLHRoaXMuc2V0TGVnZW5kV3JhcFhZKDIwLHIpfX0se2tleTpcImxlZ2VuZEFsaWduVmVydGljYWxcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXRoaXMubGVnZW5kSGVscGVycy5nZXRMZWdlbmRCQm94KCksaT0wO1wibGVmdFwiPT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9uJiYoaT0yMCksXCJyaWdodFwiPT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9uJiYoaT10Lmdsb2JhbHMuc3ZnV2lkdGgtZS5jbHd3LTEwKSx0aGlzLnNldExlZ2VuZFdyYXBYWShpLDIwKX19LHtrZXk6XCJvbkxlZ2VuZEhvdmVyZWRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0XCIpfHx0LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWxlZ2VuZC1tYXJrZXJcIik7aWYoXCJoZWF0bWFwXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlfHx0aGlzLmlzQmFyc0Rpc3RyaWJ1dGVkKXtpZihpKXt2YXIgYT1wYXJzZUludCh0LnRhcmdldC5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTE7dGhpcy5jdHguZXZlbnRzLmZpcmVFdmVudChcImxlZ2VuZEhvdmVyXCIsW3RoaXMuY3R4LGEsdGhpcy53XSksbmV3IE4odGhpcy5jdHgpLmhpZ2hsaWdodFJhbmdlSW5TZXJpZXModCx0LnRhcmdldCl9fWVsc2UhdC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1pbmFjdGl2ZS1sZWdlbmRcIikmJmkmJm5ldyBOKHRoaXMuY3R4KS50b2dnbGVTZXJpZXNPbkhvdmVyKHQsdC50YXJnZXQpfX0se2tleTpcIm9uTGVnZW5kQ2xpY2tcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7aWYoIWUuY29uZmlnLmxlZ2VuZC5jdXN0b21MZWdlbmRJdGVtcy5sZW5ndGgmJih0LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0XCIpfHx0LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWxlZ2VuZC1tYXJrZXJcIikpKXt2YXIgaT1wYXJzZUludCh0LnRhcmdldC5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTEsYT1cInRydWVcIj09PXQudGFyZ2V0LmdldEF0dHJpYnV0ZShcImRhdGE6Y29sbGFwc2VkXCIpLHM9dGhpcy53LmNvbmZpZy5jaGFydC5ldmVudHMubGVnZW5kQ2xpY2s7XCJmdW5jdGlvblwiPT10eXBlb2YgcyYmcyh0aGlzLmN0eCxpLHRoaXMudyksdGhpcy5jdHguZXZlbnRzLmZpcmVFdmVudChcImxlZ2VuZENsaWNrXCIsW3RoaXMuY3R4LGksdGhpcy53XSk7dmFyIHI9dGhpcy53LmNvbmZpZy5sZWdlbmQubWFya2Vycy5vbkNsaWNrO1wiZnVuY3Rpb25cIj09dHlwZW9mIHImJnQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLW1hcmtlclwiKSYmKHIodGhpcy5jdHgsaSx0aGlzLncpLHRoaXMuY3R4LmV2ZW50cy5maXJlRXZlbnQoXCJsZWdlbmRNYXJrZXJDbGlja1wiLFt0aGlzLmN0eCxpLHRoaXMud10pKSxcInRyZWVtYXBcIiE9PWUuY29uZmlnLmNoYXJ0LnR5cGUmJlwiaGVhdG1hcFwiIT09ZS5jb25maWcuY2hhcnQudHlwZSYmIXRoaXMuaXNCYXJzRGlzdHJpYnV0ZWQmJmUuY29uZmlnLmxlZ2VuZC5vbkl0ZW1DbGljay50b2dnbGVEYXRhU2VyaWVzJiZ0aGlzLmxlZ2VuZEhlbHBlcnMudG9nZ2xlRGF0YVNlcmllcyhpLGEpfX19XSksdH0oKSxodD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudzt2YXIgaT10aGlzLnc7dGhpcy5ldj10aGlzLncuY29uZmlnLmNoYXJ0LmV2ZW50cyx0aGlzLnNlbGVjdGVkQ2xhc3M9XCJhcGV4Y2hhcnRzLXNlbGVjdGVkXCIsdGhpcy5sb2NhbGVWYWx1ZXM9dGhpcy53Lmdsb2JhbHMubG9jYWxlLnRvb2xiYXIsdGhpcy5taW5YPWkuZ2xvYmFscy5taW5YLHRoaXMubWF4WD1pLmdsb2JhbHMubWF4WH1yZXR1cm4gcih0LFt7a2V5OlwiY3JlYXRlVG9vbGJhclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPWZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIil9LGE9aSgpO2lmKGEuc2V0QXR0cmlidXRlKFwiY2xhc3NcIixcImFwZXhjaGFydHMtdG9vbGJhclwiKSxhLnN0eWxlLnRvcD1lLmNvbmZpZy5jaGFydC50b29sYmFyLm9mZnNldFkrXCJweFwiLGEuc3R5bGUucmlnaHQ9My1lLmNvbmZpZy5jaGFydC50b29sYmFyLm9mZnNldFgrXCJweFwiLGUuZ2xvYmFscy5kb20uZWxXcmFwLmFwcGVuZENoaWxkKGEpLHRoaXMuZWxab29tPWkoKSx0aGlzLmVsWm9vbUluPWkoKSx0aGlzLmVsWm9vbU91dD1pKCksdGhpcy5lbFBhbj1pKCksdGhpcy5lbFNlbGVjdGlvbj1pKCksdGhpcy5lbFpvb21SZXNldD1pKCksdGhpcy5lbE1lbnVJY29uPWkoKSx0aGlzLmVsTWVudT1pKCksdGhpcy5lbEN1c3RvbUljb25zPVtdLHRoaXMudD1lLmNvbmZpZy5jaGFydC50b29sYmFyLnRvb2xzLEFycmF5LmlzQXJyYXkodGhpcy50LmN1c3RvbUljb25zKSlmb3IodmFyIHM9MDtzPHRoaXMudC5jdXN0b21JY29ucy5sZW5ndGg7cysrKXRoaXMuZWxDdXN0b21JY29ucy5wdXNoKGkoKSk7dmFyIHI9W10sbz1mdW5jdGlvbihpLGEscyl7dmFyIG89aS50b0xvd2VyQ2FzZSgpO3QudFtvXSYmZS5jb25maWcuY2hhcnQuem9vbS5lbmFibGVkJiZyLnB1c2goe2VsOmEsaWNvbjpcInN0cmluZ1wiPT10eXBlb2YgdC50W29dP3QudFtvXTpzLHRpdGxlOnQubG9jYWxlVmFsdWVzW2ldLGNsYXNzOlwiYXBleGNoYXJ0cy1cIi5jb25jYXQobyxcIi1pY29uXCIpfSl9O28oXCJ6b29tSW5cIix0aGlzLmVsWm9vbUluLCc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XFxuICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIi8+XFxuICAgIDxwYXRoIGQ9XCJNMTMgN2gtMnY0SDd2Mmg0djRoMnYtNGg0di0yaC00Vjd6bS0xLTVDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwiLz5cXG48L3N2Zz5cXG4nKSxvKFwiem9vbU91dFwiLHRoaXMuZWxab29tT3V0LCc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XFxuICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIi8+XFxuICAgIDxwYXRoIGQ9XCJNNyAxMXYyaDEwdi0ySDd6bTUtOUM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCIvPlxcbjwvc3ZnPlxcbicpO3ZhciBuPWZ1bmN0aW9uKGkpe3QudFtpXSYmZS5jb25maWcuY2hhcnRbaV0uZW5hYmxlZCYmci5wdXNoKHtlbDpcInpvb21cIj09PWk/dC5lbFpvb206dC5lbFNlbGVjdGlvbixpY29uOlwic3RyaW5nXCI9PXR5cGVvZiB0LnRbaV0/dC50W2ldOlwiem9vbVwiPT09aT8nPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIiMwMDAwMDBcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCI+XFxuICAgIDxwYXRoIGQ9XCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpcIi8+XFxuICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDBWMHpcIiBmaWxsPVwibm9uZVwiLz5cXG4gICAgPHBhdGggZD1cIk0xMiAxMGgtMnYySDl2LTJIN1Y5aDJWN2gxdjJoMnYxelwiLz5cXG48L3N2Zz4nOic8c3ZnIGZpbGw9XCIjNkU4MTkyXCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cXG4gICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBmaWxsPVwibm9uZVwiLz5cXG4gICAgPHBhdGggZD1cIk0zIDVoMlYzYy0xLjEgMC0yIC45LTIgMnptMCA4aDJ2LTJIM3Yyem00IDhoMnYtMkg3djJ6TTMgOWgyVjdIM3Yyem0xMC02aC0ydjJoMlYzem02IDB2MmgyYzAtMS4xLS45LTItMi0yek01IDIxdi0ySDNjMCAxLjEuOSAyIDIgMnptLTItNGgydi0ySDN2MnpNOSAzSDd2MmgyVjN6bTIgMThoMnYtMmgtMnYyem04LThoMnYtMmgtMnYyem0wIDhjMS4xIDAgMi0uOSAyLTJoLTJ2MnptMC0xMmgyVjdoLTJ2MnptMCA4aDJ2LTJoLTJ2MnptLTQgNGgydi0yaC0ydjJ6bTAtMTZoMlYzaC0ydjJ6XCIvPlxcbjwvc3ZnPicsdGl0bGU6dC5sb2NhbGVWYWx1ZXNbXCJ6b29tXCI9PT1pP1wic2VsZWN0aW9uWm9vbVwiOlwic2VsZWN0aW9uXCJdLGNsYXNzOmUuZ2xvYmFscy5pc1RvdWNoRGV2aWNlP1wiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwiOlwiYXBleGNoYXJ0cy1cIi5jb25jYXQoaSxcIi1pY29uXCIpfSl9O24oXCJ6b29tXCIpLG4oXCJzZWxlY3Rpb25cIiksdGhpcy50LnBhbiYmZS5jb25maWcuY2hhcnQuem9vbS5lbmFibGVkJiZyLnB1c2goe2VsOnRoaXMuZWxQYW4saWNvbjpcInN0cmluZ1wiPT10eXBlb2YgdGhpcy50LnBhbj90aGlzLnQucGFuOic8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiBmaWxsPVwiIzAwMDAwMFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIj5cXG4gICAgPGRlZnM+XFxuICAgICAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGlkPVwiYVwiLz5cXG4gICAgPC9kZWZzPlxcbiAgICA8Y2xpcFBhdGggaWQ9XCJiXCI+XFxuICAgICAgICA8dXNlIG92ZXJmbG93PVwidmlzaWJsZVwiIHhsaW5rOmhyZWY9XCIjYVwiLz5cXG4gICAgPC9jbGlwUGF0aD5cXG4gICAgPHBhdGggY2xpcC1wYXRoPVwidXJsKCNiKVwiIGQ9XCJNMjMgNS41VjIwYzAgMi4yLTEuOCA0LTQgNGgtNy4zYy0xLjA4IDAtMi4xLS40My0yLjg1LTEuMTlMMSAxNC44M3MxLjI2LTEuMjMgMS4zLTEuMjVjLjIyLS4xOS40OS0uMjkuNzktLjI5LjIyIDAgLjQyLjA2LjYuMTYuMDQuMDEgNC4zMSAyLjQ2IDQuMzEgMi40NlY0YzAtLjgzLjY3LTEuNSAxLjUtMS41UzExIDMuMTcgMTEgNHY3aDFWMS41YzAtLjgzLjY3LTEuNSAxLjUtMS41UzE1IC42NyAxNSAxLjVWMTFoMVYyLjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVWMTFoMVY1LjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjV6XCIvPlxcbjwvc3ZnPicsdGl0bGU6dGhpcy5sb2NhbGVWYWx1ZXMucGFuLGNsYXNzOmUuZ2xvYmFscy5pc1RvdWNoRGV2aWNlP1wiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwiOlwiYXBleGNoYXJ0cy1wYW4taWNvblwifSksbyhcInJlc2V0XCIsdGhpcy5lbFpvb21SZXNldCwnPHN2ZyBmaWxsPVwiIzAwMDAwMFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XFxuICAgIDxwYXRoIGQ9XCJNMTAgMjB2LTZoNHY2aDV2LThoM0wxMiAzIDIgMTJoM3Y4elwiLz5cXG4gICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBmaWxsPVwibm9uZVwiLz5cXG48L3N2Zz4nKSx0aGlzLnQuZG93bmxvYWQmJnIucHVzaCh7ZWw6dGhpcy5lbE1lbnVJY29uLGljb246XCJzdHJpbmdcIj09dHlwZW9mIHRoaXMudC5kb3dubG9hZD90aGlzLnQuZG93bmxvYWQ6JzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj48cGF0aCBmaWxsPVwibm9uZVwiIGQ9XCJNMCAwaDI0djI0SDBWMHpcIi8+PHBhdGggZD1cIk0zIDE4aDE4di0ySDN2MnptMC01aDE4di0ySDN2MnptMC03djJoMThWNkgzelwiLz48L3N2Zz4nLHRpdGxlOnRoaXMubG9jYWxlVmFsdWVzLm1lbnUsY2xhc3M6XCJhcGV4Y2hhcnRzLW1lbnUtaWNvblwifSk7Zm9yKHZhciBsPTA7bDx0aGlzLmVsQ3VzdG9tSWNvbnMubGVuZ3RoO2wrKylyLnB1c2goe2VsOnRoaXMuZWxDdXN0b21JY29uc1tsXSxpY29uOnRoaXMudC5jdXN0b21JY29uc1tsXS5pY29uLHRpdGxlOnRoaXMudC5jdXN0b21JY29uc1tsXS50aXRsZSxpbmRleDp0aGlzLnQuY3VzdG9tSWNvbnNbbF0uaW5kZXgsY2xhc3M6XCJhcGV4Y2hhcnRzLXRvb2xiYXItY3VzdG9tLWljb24gXCIrdGhpcy50LmN1c3RvbUljb25zW2xdLmNsYXNzfSk7ci5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuaW5kZXgmJngubW92ZUluZGV4SW5BcnJheShyLGUsdC5pbmRleCl9KSk7Zm9yKHZhciBoPTA7aDxyLmxlbmd0aDtoKyspbS5zZXRBdHRycyhyW2hdLmVsLHtjbGFzczpyW2hdLmNsYXNzLHRpdGxlOnJbaF0udGl0bGV9KSxyW2hdLmVsLmlubmVySFRNTD1yW2hdLmljb24sYS5hcHBlbmRDaGlsZChyW2hdLmVsKTt0aGlzLl9jcmVhdGVIYW1idXJnZXJNZW51KGEpLGUuZ2xvYmFscy56b29tRW5hYmxlZD90aGlzLmVsWm9vbS5jbGFzc0xpc3QuYWRkKHRoaXMuc2VsZWN0ZWRDbGFzcyk6ZS5nbG9iYWxzLnBhbkVuYWJsZWQ/dGhpcy5lbFBhbi5jbGFzc0xpc3QuYWRkKHRoaXMuc2VsZWN0ZWRDbGFzcyk6ZS5nbG9iYWxzLnNlbGVjdGlvbkVuYWJsZWQmJnRoaXMuZWxTZWxlY3Rpb24uY2xhc3NMaXN0LmFkZCh0aGlzLnNlbGVjdGVkQ2xhc3MpLHRoaXMuYWRkVG9vbGJhckV2ZW50TGlzdGVuZXJzKCl9fSx7a2V5OlwiX2NyZWF0ZUhhbWJ1cmdlck1lbnVcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmVsTWVudUl0ZW1zPVtdLHQuYXBwZW5kQ2hpbGQodGhpcy5lbE1lbnUpLG0uc2V0QXR0cnModGhpcy5lbE1lbnUse2NsYXNzOlwiYXBleGNoYXJ0cy1tZW51XCJ9KTt2YXIgZT1be25hbWU6XCJleHBvcnRTVkdcIix0aXRsZTp0aGlzLmxvY2FsZVZhbHVlcy5leHBvcnRUb1NWR30se25hbWU6XCJleHBvcnRQTkdcIix0aXRsZTp0aGlzLmxvY2FsZVZhbHVlcy5leHBvcnRUb1BOR30se25hbWU6XCJleHBvcnRDU1ZcIix0aXRsZTp0aGlzLmxvY2FsZVZhbHVlcy5leHBvcnRUb0NTVn1dO3RoaXMudy5nbG9iYWxzLmFsbFNlcmllc0hhc0VxdWFsWHx8ZS5zcGxpY2UoMiwxKTtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl0aGlzLmVsTWVudUl0ZW1zLnB1c2goZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSksdGhpcy5lbE1lbnVJdGVtc1tpXS5pbm5lckhUTUw9ZVtpXS50aXRsZSxtLnNldEF0dHJzKHRoaXMuZWxNZW51SXRlbXNbaV0se2NsYXNzOlwiYXBleGNoYXJ0cy1tZW51LWl0ZW0gXCIuY29uY2F0KGVbaV0ubmFtZSksdGl0bGU6ZVtpXS50aXRsZX0pLHRoaXMuZWxNZW51LmFwcGVuZENoaWxkKHRoaXMuZWxNZW51SXRlbXNbaV0pfX0se2tleTpcImFkZFRvb2xiYXJFdmVudExpc3RlbmVyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmVsWm9vbVJlc2V0LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMuaGFuZGxlWm9vbVJlc2V0LmJpbmQodGhpcykpLHRoaXMuZWxTZWxlY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy50b2dnbGVab29tU2VsZWN0aW9uLmJpbmQodGhpcyxcInNlbGVjdGlvblwiKSksdGhpcy5lbFpvb20uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy50b2dnbGVab29tU2VsZWN0aW9uLmJpbmQodGhpcyxcInpvb21cIikpLHRoaXMuZWxab29tSW4uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy5oYW5kbGVab29tSW4uYmluZCh0aGlzKSksdGhpcy5lbFpvb21PdXQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy5oYW5kbGVab29tT3V0LmJpbmQodGhpcykpLHRoaXMuZWxQYW4uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy50b2dnbGVQYW5uaW5nLmJpbmQodGhpcykpLHRoaXMuZWxNZW51SWNvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLnRvZ2dsZU1lbnUuYmluZCh0aGlzKSksdGhpcy5lbE1lbnVJdGVtcy5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmNsYXNzTGlzdC5jb250YWlucyhcImV4cG9ydFNWR1wiKT9lLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHQuaGFuZGxlRG93bmxvYWQuYmluZCh0LFwic3ZnXCIpKTplLmNsYXNzTGlzdC5jb250YWlucyhcImV4cG9ydFBOR1wiKT9lLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHQuaGFuZGxlRG93bmxvYWQuYmluZCh0LFwicG5nXCIpKTplLmNsYXNzTGlzdC5jb250YWlucyhcImV4cG9ydENTVlwiKSYmZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0LmhhbmRsZURvd25sb2FkLmJpbmQodCxcImNzdlwiKSl9KSk7Zm9yKHZhciBlPTA7ZTx0aGlzLnQuY3VzdG9tSWNvbnMubGVuZ3RoO2UrKyl0aGlzLmVsQ3VzdG9tSWNvbnNbZV0uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy50LmN1c3RvbUljb25zW2VdLmNsaWNrLmJpbmQodGhpcyx0aGlzLmN0eCx0aGlzLmN0eC53KSl9fSx7a2V5OlwidG9nZ2xlWm9vbVNlbGVjdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuY3R4LmdldFN5bmNlZENoYXJ0cygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UuY3R4LnRvb2xiYXIudG9nZ2xlT3RoZXJDb250cm9scygpO3ZhciBpPVwic2VsZWN0aW9uXCI9PT10P2UuY3R4LnRvb2xiYXIuZWxTZWxlY3Rpb246ZS5jdHgudG9vbGJhci5lbFpvb20sYT1cInNlbGVjdGlvblwiPT09dD9cInNlbGVjdGlvbkVuYWJsZWRcIjpcInpvb21FbmFibGVkXCI7ZS53Lmdsb2JhbHNbYV09IWUudy5nbG9iYWxzW2FdLGkuY2xhc3NMaXN0LmNvbnRhaW5zKGUuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcyk/aS5jbGFzc0xpc3QucmVtb3ZlKGUuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcyk6aS5jbGFzc0xpc3QuYWRkKGUuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcyl9KSl9fSx7a2V5OlwiZ2V0VG9vbGJhckljb25zUmVmZXJlbmNlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dGhpcy5lbFpvb218fCh0aGlzLmVsWm9vbT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtem9vbS1pY29uXCIpKSx0aGlzLmVsUGFufHwodGhpcy5lbFBhbj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtcGFuLWljb25cIikpLHRoaXMuZWxTZWxlY3Rpb258fCh0aGlzLmVsU2VsZWN0aW9uPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvblwiKSl9fSx7a2V5OlwiZW5hYmxlWm9vbVBhbkZyb21Ub29sYmFyXCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy50b2dnbGVPdGhlckNvbnRyb2xzKCksXCJwYW5cIj09PXQ/dGhpcy53Lmdsb2JhbHMucGFuRW5hYmxlZD0hMDp0aGlzLncuZ2xvYmFscy56b29tRW5hYmxlZD0hMDt2YXIgZT1cInBhblwiPT09dD90aGlzLmVsUGFuOnRoaXMuZWxab29tLGk9XCJwYW5cIj09PXQ/dGhpcy5lbFpvb206dGhpcy5lbFBhbjtlJiZlLmNsYXNzTGlzdC5hZGQodGhpcy5zZWxlY3RlZENsYXNzKSxpJiZpLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5zZWxlY3RlZENsYXNzKX19LHtrZXk6XCJ0b2dnbGVQYW5uaW5nXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmN0eC5nZXRTeW5jZWRDaGFydHMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXt0LmN0eC50b29sYmFyLnRvZ2dsZU90aGVyQ29udHJvbHMoKSx0LncuZ2xvYmFscy5wYW5FbmFibGVkPSF0LncuZ2xvYmFscy5wYW5FbmFibGVkLHQuY3R4LnRvb2xiYXIuZWxQYW4uY2xhc3NMaXN0LmNvbnRhaW5zKHQuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcyk/dC5jdHgudG9vbGJhci5lbFBhbi5jbGFzc0xpc3QucmVtb3ZlKHQuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcyk6dC5jdHgudG9vbGJhci5lbFBhbi5jbGFzc0xpc3QuYWRkKHQuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcyl9KSl9fSx7a2V5OlwidG9nZ2xlT3RoZXJDb250cm9sc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudztlLmdsb2JhbHMucGFuRW5hYmxlZD0hMSxlLmdsb2JhbHMuem9vbUVuYWJsZWQ9ITEsZS5nbG9iYWxzLnNlbGVjdGlvbkVuYWJsZWQ9ITEsdGhpcy5nZXRUb29sYmFySWNvbnNSZWZlcmVuY2UoKSxbdGhpcy5lbFBhbix0aGlzLmVsU2VsZWN0aW9uLHRoaXMuZWxab29tXS5mb3JFYWNoKChmdW5jdGlvbihlKXtlJiZlLmNsYXNzTGlzdC5yZW1vdmUodC5zZWxlY3RlZENsYXNzKX0pKX19LHtrZXk6XCJoYW5kbGVab29tSW5cIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudzt0Lmdsb2JhbHMuaXNSYW5nZUJhciYmKHRoaXMubWluWD10Lmdsb2JhbHMubWluWSx0aGlzLm1heFg9dC5nbG9iYWxzLm1heFkpO3ZhciBlPSh0aGlzLm1pblgrdGhpcy5tYXhYKS8yLGk9KHRoaXMubWluWCtlKS8yLGE9KHRoaXMubWF4WCtlKS8yLHM9dGhpcy5fZ2V0TmV3TWluWE1heFgoaSxhKTt0Lmdsb2JhbHMuZGlzYWJsZVpvb21Jbnx8dGhpcy56b29tVXBkYXRlT3B0aW9ucyhzLm1pblgscy5tYXhYKX19LHtrZXk6XCJoYW5kbGVab29tT3V0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7aWYodC5nbG9iYWxzLmlzUmFuZ2VCYXImJih0aGlzLm1pblg9dC5nbG9iYWxzLm1pblksdGhpcy5tYXhYPXQuZ2xvYmFscy5tYXhZKSwhKFwiZGF0ZXRpbWVcIj09PXQuY29uZmlnLnhheGlzLnR5cGUmJm5ldyBEYXRlKHRoaXMubWluWCkuZ2V0VVRDRnVsbFllYXIoKTwxZTMpKXt2YXIgZT0odGhpcy5taW5YK3RoaXMubWF4WCkvMixpPXRoaXMubWluWC0oZS10aGlzLm1pblgpLGE9dGhpcy5tYXhYLShlLXRoaXMubWF4WCkscz10aGlzLl9nZXROZXdNaW5YTWF4WChpLGEpO3QuZ2xvYmFscy5kaXNhYmxlWm9vbU91dHx8dGhpcy56b29tVXBkYXRlT3B0aW9ucyhzLm1pblgscy5tYXhYKX19fSx7a2V5OlwiX2dldE5ld01pblhNYXhYXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYztyZXR1cm57bWluWDppP01hdGguZmxvb3IodCk6dCxtYXhYOmk/TWF0aC5mbG9vcihlKTplfX19LHtrZXk6XCJ6b29tVXBkYXRlT3B0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2lmKHZvaWQgMCE9PXR8fHZvaWQgMCE9PWUpe2lmKCEoaS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYodDwxJiYodD0xLGU9aS5nbG9iYWxzLmRhdGFQb2ludHMpLGUtdDwyKSkpe3ZhciBhPXttaW46dCxtYXg6ZX0scz10aGlzLmdldEJlZm9yZVpvb21SYW5nZShhKTtzJiYoYT1zLnhheGlzKTt2YXIgcj17eGF4aXM6YX0sbz14LmNsb25lKGkuZ2xvYmFscy5pbml0aWFsQ29uZmlnLnlheGlzKTtpZihpLmNvbmZpZy5jaGFydC56b29tLmF1dG9TY2FsZVlheGlzKW89bmV3IF8odGhpcy5jdHgpLmF1dG9TY2FsZVkodGhpcy5jdHgsbyx7eGF4aXM6YX0pO2kuY29uZmlnLmNoYXJ0Lmdyb3VwfHwoci55YXhpcz1vKSx0aGlzLncuZ2xvYmFscy56b29tZWQ9ITAsdGhpcy5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlT3B0aW9ucyhyLCExLHRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQpLHRoaXMuem9vbUNhbGxiYWNrKGEsbyl9fWVsc2UgdGhpcy5oYW5kbGVab29tUmVzZXQoKX19LHtrZXk6XCJ6b29tQ2FsbGJhY2tcIix2YWx1ZTpmdW5jdGlvbih0LGUpe1wiZnVuY3Rpb25cIj09dHlwZW9mIHRoaXMuZXYuem9vbWVkJiZ0aGlzLmV2Lnpvb21lZCh0aGlzLmN0eCx7eGF4aXM6dCx5YXhpczplfSl9fSx7a2V5OlwiZ2V0QmVmb3JlWm9vbVJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1udWxsO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHRoaXMuZXYuYmVmb3JlWm9vbSYmKGk9dGhpcy5ldi5iZWZvcmVab29tKHRoaXMse3hheGlzOnQseWF4aXM6ZX0pKSxpfX0se2tleTpcInRvZ2dsZU1lbnVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7d2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC5lbE1lbnUuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1tZW51LW9wZW5cIik/dC5lbE1lbnUuY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtbWVudS1vcGVuXCIpOnQuZWxNZW51LmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLW1lbnUtb3BlblwiKX0pLDApfX0se2tleTpcImhhbmRsZURvd25sb2FkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IEcodGhpcy5jdHgpO3N3aXRjaCh0KXtjYXNlXCJzdmdcIjppLmV4cG9ydFRvU1ZHKHRoaXMuY3R4KTticmVhaztjYXNlXCJwbmdcIjppLmV4cG9ydFRvUG5nKHRoaXMuY3R4KTticmVhaztjYXNlXCJjc3ZcIjppLmV4cG9ydFRvQ1NWKHtzZXJpZXM6ZS5jb25maWcuc2VyaWVzLGNvbHVtbkRlbGltaXRlcjplLmNvbmZpZy5jaGFydC50b29sYmFyLmV4cG9ydC5jc3YuY29sdW1uRGVsaW1pdGVyfSl9fX0se2tleTpcImhhbmRsZVpvb21SZXNldFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuY3R4LmdldFN5bmNlZENoYXJ0cygpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXQudztpZihlLmdsb2JhbHMubGFzdFhBeGlzLm1pbj12b2lkIDAsZS5nbG9iYWxzLmxhc3RYQXhpcy5tYXg9dm9pZCAwLHQudXBkYXRlSGVscGVycy5yZXZlcnREZWZhdWx0QXhpc01pbk1heCgpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGUuY29uZmlnLmNoYXJ0LmV2ZW50cy5iZWZvcmVSZXNldFpvb20pe3ZhciBpPWUuY29uZmlnLmNoYXJ0LmV2ZW50cy5iZWZvcmVSZXNldFpvb20odCxlKTtpJiZ0LnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoaSl9XCJmdW5jdGlvblwiPT10eXBlb2YgZS5jb25maWcuY2hhcnQuZXZlbnRzLnpvb21lZCYmdC5jdHgudG9vbGJhci56b29tQ2FsbGJhY2soe21pbjplLmNvbmZpZy54YXhpcy5taW4sbWF4OmUuY29uZmlnLnhheGlzLm1heH0pLGUuZ2xvYmFscy56b29tZWQ9ITE7dmFyIGE9dC5jdHguc2VyaWVzLmVtcHR5Q29sbGFwc2VkU2VyaWVzKHguY2xvbmUoZS5nbG9iYWxzLmluaXRpYWxTZXJpZXMpKTt0LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZVNlcmllcyhhLGUuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkKX0pKX19LHtrZXk6XCJkZXN0cm95XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmVsWm9vbT1udWxsLHRoaXMuZWxab29tSW49bnVsbCx0aGlzLmVsWm9vbU91dD1udWxsLHRoaXMuZWxQYW49bnVsbCx0aGlzLmVsU2VsZWN0aW9uPW51bGwsdGhpcy5lbFpvb21SZXNldD1udWxsLHRoaXMuZWxNZW51SWNvbj1udWxsfX1dKSx0fSgpLGN0PWZ1bmN0aW9uKHQpe24oaSxodCk7dmFyIGU9ZChpKTtmdW5jdGlvbiBpKHQpe3ZhciBzO3JldHVybiBhKHRoaXMsaSksKHM9ZS5jYWxsKHRoaXMsdCkpLmN0eD10LHMudz10Lncscy5kcmFnZ2VkPSExLHMuZ3JhcGhpY3M9bmV3IG0ocy5jdHgpLHMuZXZlbnRMaXN0PVtcIm1vdXNlZG93blwiLFwibW91c2VsZWF2ZVwiLFwibW91c2Vtb3ZlXCIsXCJ0b3VjaHN0YXJ0XCIsXCJ0b3VjaG1vdmVcIixcIm1vdXNldXBcIixcInRvdWNoZW5kXCJdLHMuY2xpZW50WD0wLHMuY2xpZW50WT0wLHMuc3RhcnRYPTAscy5lbmRYPTAscy5kcmFnWD0wLHMuc3RhcnRZPTAscy5lbmRZPTAscy5kcmFnWT0wLHMubW92ZURpcmVjdGlvbj1cIm5vbmVcIixzfXJldHVybiByKGksW3trZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXQueHlSYXRpb3MsYT10aGlzLncscz10aGlzO3RoaXMueHlSYXRpb3M9aSx0aGlzLnpvb21SZWN0PXRoaXMuZ3JhcGhpY3MuZHJhd1JlY3QoMCwwLDAsMCksdGhpcy5zZWxlY3Rpb25SZWN0PXRoaXMuZ3JhcGhpY3MuZHJhd1JlY3QoMCwwLDAsMCksdGhpcy5ncmlkUmVjdD1hLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZ3JpZFwiKSx0aGlzLnpvb21SZWN0Lm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtem9vbS1yZWN0XCIpLHRoaXMuc2VsZWN0aW9uUmVjdC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0XCIpLGEuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHRoaXMuem9vbVJlY3QpLGEuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHRoaXMuc2VsZWN0aW9uUmVjdCksXCJ4XCI9PT1hLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24udHlwZT90aGlzLnNsRHJhZ2dhYmxlUmVjdD10aGlzLnNlbGVjdGlvblJlY3QuZHJhZ2dhYmxlKHttaW5YOjAsbWluWTowLG1heFg6YS5nbG9iYWxzLmdyaWRXaWR0aCxtYXhZOmEuZ2xvYmFscy5ncmlkSGVpZ2h0fSkub24oXCJkcmFnbW92ZVwiLHRoaXMuc2VsZWN0aW9uRHJhZ2dpbmcuYmluZCh0aGlzLFwiZHJhZ2dpbmdcIikpOlwieVwiPT09YS5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnR5cGU/dGhpcy5zbERyYWdnYWJsZVJlY3Q9dGhpcy5zZWxlY3Rpb25SZWN0LmRyYWdnYWJsZSh7bWluWDowLG1heFg6YS5nbG9iYWxzLmdyaWRXaWR0aH0pLm9uKFwiZHJhZ21vdmVcIix0aGlzLnNlbGVjdGlvbkRyYWdnaW5nLmJpbmQodGhpcyxcImRyYWdnaW5nXCIpKTp0aGlzLnNsRHJhZ2dhYmxlUmVjdD10aGlzLnNlbGVjdGlvblJlY3QuZHJhZ2dhYmxlKCkub24oXCJkcmFnbW92ZVwiLHRoaXMuc2VsZWN0aW9uRHJhZ2dpbmcuYmluZCh0aGlzLFwiZHJhZ2dpbmdcIikpLHRoaXMucHJlc2VsZWN0ZWRTZWxlY3Rpb24oKSx0aGlzLmhvdmVyQXJlYT1hLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiXCIuY29uY2F0KGEuZ2xvYmFscy5jaGFydENsYXNzLFwiIC5hcGV4Y2hhcnRzLXN2Z1wiKSksdGhpcy5ob3ZlckFyZWEuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtem9vbWFibGVcIiksdGhpcy5ldmVudExpc3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5ob3ZlckFyZWEuYWRkRXZlbnRMaXN0ZW5lcih0LHMuc3ZnTW91c2VFdmVudHMuYmluZChzLGkpLHtjYXB0dXJlOiExLHBhc3NpdmU6ITB9KX0pKX19LHtrZXk6XCJkZXN0cm95XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNsRHJhZ2dhYmxlUmVjdCYmKHRoaXMuc2xEcmFnZ2FibGVSZWN0LmRyYWdnYWJsZSghMSksdGhpcy5zbERyYWdnYWJsZVJlY3Qub2ZmKCksdGhpcy5zZWxlY3Rpb25SZWN0Lm9mZigpKSx0aGlzLnNlbGVjdGlvblJlY3Q9bnVsbCx0aGlzLnpvb21SZWN0PW51bGwsdGhpcy5ncmlkUmVjdD1udWxsfX0se2tleTpcInN2Z01vdXNlRXZlbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT10aGlzLHM9dGhpcy5jdHgudG9vbGJhcixyPWkuZ2xvYmFscy56b29tRW5hYmxlZD9pLmNvbmZpZy5jaGFydC56b29tLnR5cGU6aS5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnR5cGUsbz1pLmNvbmZpZy5jaGFydC50b29sYmFyLmF1dG9TZWxlY3RlZDtpZihlLnNoaWZ0S2V5Pyh0aGlzLnNoaWZ0V2FzUHJlc3NlZD0hMCxzLmVuYWJsZVpvb21QYW5Gcm9tVG9vbGJhcihcInBhblwiPT09bz9cInpvb21cIjpcInBhblwiKSk6dGhpcy5zaGlmdFdhc1ByZXNzZWQmJihzLmVuYWJsZVpvb21QYW5Gcm9tVG9vbGJhcihvKSx0aGlzLnNoaWZ0V2FzUHJlc3NlZD0hMSksZS50YXJnZXQpe3ZhciBuLGw9ZS50YXJnZXQuY2xhc3NMaXN0O2lmKGUudGFyZ2V0LnBhcmVudE5vZGUmJm51bGwhPT1lLnRhcmdldC5wYXJlbnROb2RlJiYobj1lLnRhcmdldC5wYXJlbnROb2RlLmNsYXNzTGlzdCksIShsLmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdFwiKXx8bC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLW1hcmtlclwiKXx8bC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLXRleHRcIil8fG4mJm4uY29udGFpbnMoXCJhcGV4Y2hhcnRzLXRvb2xiYXJcIikpKXtpZihhLmNsaWVudFg9XCJ0b3VjaG1vdmVcIj09PWUudHlwZXx8XCJ0b3VjaHN0YXJ0XCI9PT1lLnR5cGU/ZS50b3VjaGVzWzBdLmNsaWVudFg6XCJ0b3VjaGVuZFwiPT09ZS50eXBlP2UuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WDplLmNsaWVudFgsYS5jbGllbnRZPVwidG91Y2htb3ZlXCI9PT1lLnR5cGV8fFwidG91Y2hzdGFydFwiPT09ZS50eXBlP2UudG91Y2hlc1swXS5jbGllbnRZOlwidG91Y2hlbmRcIj09PWUudHlwZT9lLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFk6ZS5jbGllbnRZLFwibW91c2Vkb3duXCI9PT1lLnR5cGUmJjE9PT1lLndoaWNoKXt2YXIgaD1hLmdyaWRSZWN0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2Euc3RhcnRYPWEuY2xpZW50WC1oLmxlZnQsYS5zdGFydFk9YS5jbGllbnRZLWgudG9wLGEuZHJhZ2dlZD0hMSxhLncuZ2xvYmFscy5tb3VzZWRvd249ITB9aWYoKFwibW91c2Vtb3ZlXCI9PT1lLnR5cGUmJjE9PT1lLndoaWNofHxcInRvdWNobW92ZVwiPT09ZS50eXBlKSYmKGEuZHJhZ2dlZD0hMCxpLmdsb2JhbHMucGFuRW5hYmxlZD8oaS5nbG9iYWxzLnNlbGVjdGlvbj1udWxsLGEudy5nbG9iYWxzLm1vdXNlZG93biYmYS5wYW5EcmFnZ2luZyh7Y29udGV4dDphLHpvb210eXBlOnIseHlSYXRpb3M6dH0pKTooYS53Lmdsb2JhbHMubW91c2Vkb3duJiZpLmdsb2JhbHMuem9vbUVuYWJsZWR8fGEudy5nbG9iYWxzLm1vdXNlZG93biYmaS5nbG9iYWxzLnNlbGVjdGlvbkVuYWJsZWQpJiYoYS5zZWxlY3Rpb249YS5zZWxlY3Rpb25EcmF3aW5nKHtjb250ZXh0OmEsem9vbXR5cGU6cn0pKSksXCJtb3VzZXVwXCI9PT1lLnR5cGV8fFwidG91Y2hlbmRcIj09PWUudHlwZXx8XCJtb3VzZWxlYXZlXCI9PT1lLnR5cGUpe3ZhciBjPWEuZ3JpZFJlY3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7YS53Lmdsb2JhbHMubW91c2Vkb3duJiYoYS5lbmRYPWEuY2xpZW50WC1jLmxlZnQsYS5lbmRZPWEuY2xpZW50WS1jLnRvcCxhLmRyYWdYPU1hdGguYWJzKGEuZW5kWC1hLnN0YXJ0WCksYS5kcmFnWT1NYXRoLmFicyhhLmVuZFktYS5zdGFydFkpLChpLmdsb2JhbHMuem9vbUVuYWJsZWR8fGkuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkKSYmYS5zZWxlY3Rpb25EcmF3bih7Y29udGV4dDphLHpvb210eXBlOnJ9KSxpLmdsb2JhbHMucGFuRW5hYmxlZCYmaS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiZhLmRlbGF5ZWRQYW5TY3JvbGxlZCgpKSxpLmdsb2JhbHMuem9vbUVuYWJsZWQmJmEuaGlkZVNlbGVjdGlvblJlY3QodGhpcy5zZWxlY3Rpb25SZWN0KSxhLmRyYWdnZWQ9ITEsYS53Lmdsb2JhbHMubW91c2Vkb3duPSExfXRoaXMubWFrZVNlbGVjdGlvblJlY3REcmFnZ2FibGUoKX19fX0se2tleTpcIm1ha2VTZWxlY3Rpb25SZWN0RHJhZ2dhYmxlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7aWYodGhpcy5zZWxlY3Rpb25SZWN0KXt2YXIgZT10aGlzLnNlbGVjdGlvblJlY3Qubm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtlLndpZHRoPjAmJmUuaGVpZ2h0PjAmJnRoaXMuc2xEcmFnZ2FibGVSZWN0LnNlbGVjdGl6ZSh7cG9pbnRzOlwibCwgclwiLHBvaW50U2l6ZTo4LHBvaW50VHlwZTpcInJlY3RcIn0pLnJlc2l6ZSh7Y29uc3RyYWludDp7bWluWDowLG1pblk6MCxtYXhYOnQuZ2xvYmFscy5ncmlkV2lkdGgsbWF4WTp0Lmdsb2JhbHMuZ3JpZEhlaWdodH19KS5vbihcInJlc2l6aW5nXCIsdGhpcy5zZWxlY3Rpb25EcmFnZ2luZy5iaW5kKHRoaXMsXCJyZXNpemluZ1wiKSl9fX0se2tleTpcInByZXNlbGVjdGVkU2VsZWN0aW9uXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10aGlzLnh5UmF0aW9zO2lmKCF0Lmdsb2JhbHMuem9vbUVuYWJsZWQpaWYodm9pZCAwIT09dC5nbG9iYWxzLnNlbGVjdGlvbiYmbnVsbCE9PXQuZ2xvYmFscy5zZWxlY3Rpb24pdGhpcy5kcmF3U2VsZWN0aW9uUmVjdCh0Lmdsb2JhbHMuc2VsZWN0aW9uKTtlbHNlIGlmKHZvaWQgMCE9PXQuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi54YXhpcy5taW4mJnZvaWQgMCE9PXQuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi54YXhpcy5tYXgpe3ZhciBpPSh0LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWluLXQuZ2xvYmFscy5taW5YKS9lLnhSYXRpbyxhPXt4OmkseTowLHdpZHRoOnQuZ2xvYmFscy5ncmlkV2lkdGgtKHQuZ2xvYmFscy5tYXhYLXQuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi54YXhpcy5tYXgpL2UueFJhdGlvLWksaGVpZ2h0OnQuZ2xvYmFscy5ncmlkSGVpZ2h0LHRyYW5zbGF0ZVg6MCx0cmFuc2xhdGVZOjAsc2VsZWN0aW9uRW5hYmxlZDohMH07dGhpcy5kcmF3U2VsZWN0aW9uUmVjdChhKSx0aGlzLm1ha2VTZWxlY3Rpb25SZWN0RHJhZ2dhYmxlKCksXCJmdW5jdGlvblwiPT10eXBlb2YgdC5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbiYmdC5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbih0aGlzLmN0eCx7eGF4aXM6e21pbjp0LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWluLG1heDp0LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWF4fSx5YXhpczp7fX0pfX19LHtrZXk6XCJkcmF3U2VsZWN0aW9uUmVjdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQueCxpPXQueSxhPXQud2lkdGgscz10LmhlaWdodCxyPXQudHJhbnNsYXRlWCxvPXZvaWQgMD09PXI/MDpyLG49dC50cmFuc2xhdGVZLGw9dm9pZCAwPT09bj8wOm4saD10aGlzLncsYz10aGlzLnpvb21SZWN0LGQ9dGhpcy5zZWxlY3Rpb25SZWN0O2lmKHRoaXMuZHJhZ2dlZHx8bnVsbCE9PWguZ2xvYmFscy5zZWxlY3Rpb24pe3ZhciBnPXt0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIrbytcIiwgXCIrbCtcIilcIn07aC5nbG9iYWxzLnpvb21FbmFibGVkJiZ0aGlzLmRyYWdnZWQmJihhPDAmJihhPTEpLGMuYXR0cih7eDplLHk6aSx3aWR0aDphLGhlaWdodDpzLGZpbGw6aC5jb25maWcuY2hhcnQuem9vbS56b29tZWRBcmVhLmZpbGwuY29sb3IsXCJmaWxsLW9wYWNpdHlcIjpoLmNvbmZpZy5jaGFydC56b29tLnpvb21lZEFyZWEuZmlsbC5vcGFjaXR5LHN0cm9rZTpoLmNvbmZpZy5jaGFydC56b29tLnpvb21lZEFyZWEuc3Ryb2tlLmNvbG9yLFwic3Ryb2tlLXdpZHRoXCI6aC5jb25maWcuY2hhcnQuem9vbS56b29tZWRBcmVhLnN0cm9rZS53aWR0aCxcInN0cm9rZS1vcGFjaXR5XCI6aC5jb25maWcuY2hhcnQuem9vbS56b29tZWRBcmVhLnN0cm9rZS5vcGFjaXR5fSksbS5zZXRBdHRycyhjLm5vZGUsZykpLGguZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkJiYoZC5hdHRyKHt4OmUseTppLHdpZHRoOmE+MD9hOjAsaGVpZ2h0OnM+MD9zOjAsZmlsbDpoLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uZmlsbC5jb2xvcixcImZpbGwtb3BhY2l0eVwiOmguY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5maWxsLm9wYWNpdHksc3Ryb2tlOmguY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5zdHJva2UuY29sb3IsXCJzdHJva2Utd2lkdGhcIjpoLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uc3Ryb2tlLndpZHRoLFwic3Ryb2tlLWRhc2hhcnJheVwiOmguY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5zdHJva2UuZGFzaEFycmF5LFwic3Ryb2tlLW9wYWNpdHlcIjpoLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uc3Ryb2tlLm9wYWNpdHl9KSxtLnNldEF0dHJzKGQubm9kZSxnKSl9fX0se2tleTpcImhpZGVTZWxlY3Rpb25SZWN0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dCYmdC5hdHRyKHt4OjAseTowLHdpZHRoOjAsaGVpZ2h0OjB9KX19LHtrZXk6XCJzZWxlY3Rpb25EcmF3aW5nXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5jb250ZXh0LGk9dC56b29tdHlwZSxhPXRoaXMudyxzPWUscj10aGlzLmdyaWRSZWN0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89cy5zdGFydFgtMSxuPXMuc3RhcnRZLGw9ITEsaD0hMSxjPXMuY2xpZW50WC1yLmxlZnQtbyxkPXMuY2xpZW50WS1yLnRvcC1uLGc9e307cmV0dXJuIE1hdGguYWJzKGMrbyk+YS5nbG9iYWxzLmdyaWRXaWR0aD9jPWEuZ2xvYmFscy5ncmlkV2lkdGgtbzpzLmNsaWVudFgtci5sZWZ0PDAmJihjPW8pLG8+cy5jbGllbnRYLXIubGVmdCYmKGw9ITAsYz1NYXRoLmFicyhjKSksbj5zLmNsaWVudFktci50b3AmJihoPSEwLGQ9TWF0aC5hYnMoZCkpLGc9XCJ4XCI9PT1pP3t4Omw/by1jOm8seTowLHdpZHRoOmMsaGVpZ2h0OmEuZ2xvYmFscy5ncmlkSGVpZ2h0fTpcInlcIj09PWk/e3g6MCx5Omg/bi1kOm4sd2lkdGg6YS5nbG9iYWxzLmdyaWRXaWR0aCxoZWlnaHQ6ZH06e3g6bD9vLWM6byx5Omg/bi1kOm4sd2lkdGg6YyxoZWlnaHQ6ZH0scy5kcmF3U2VsZWN0aW9uUmVjdChnKSxzLnNlbGVjdGlvbkRyYWdnaW5nKFwicmVzaXppbmdcIiksZ319LHtrZXk6XCJzZWxlY3Rpb25EcmFnZ2luZ1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxhPXRoaXMudyxzPXRoaXMueHlSYXRpb3Mscj10aGlzLnNlbGVjdGlvblJlY3Qsbz0wO1wicmVzaXppbmdcIj09PXQmJihvPTMwKTt2YXIgbj1mdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VGbG9hdChyLm5vZGUuZ2V0QXR0cmlidXRlKHQpKX0sbD17eDpuKFwieFwiKSx5Om4oXCJ5XCIpLHdpZHRoOm4oXCJ3aWR0aFwiKSxoZWlnaHQ6bihcImhlaWdodFwiKX07YS5nbG9iYWxzLnNlbGVjdGlvbj1sLFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24mJmEuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkJiYoY2xlYXJUaW1lb3V0KHRoaXMudy5nbG9iYWxzLnNlbGVjdGlvblJlc2l6ZVRpbWVyKSx0aGlzLncuZ2xvYmFscy5zZWxlY3Rpb25SZXNpemVUaW1lcj13aW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXt2YXIgdD1pLmdyaWRSZWN0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGU9ci5ub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89e3hheGlzOnttaW46YS5nbG9iYWxzLnhBeGlzU2NhbGUubmljZU1pbisoZS5sZWZ0LXQubGVmdCkqcy54UmF0aW8sbWF4OmEuZ2xvYmFscy54QXhpc1NjYWxlLm5pY2VNaW4rKGUucmlnaHQtdC5sZWZ0KSpzLnhSYXRpb30seWF4aXM6e21pbjphLmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWluKyh0LmJvdHRvbS1lLmJvdHRvbSkqcy55UmF0aW9bMF0sbWF4OmEuZ2xvYmFscy55QXhpc1NjYWxlWzBdLm5pY2VNYXgtKGUudG9wLXQudG9wKSpzLnlSYXRpb1swXX19O2EuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24oaS5jdHgsbyksYS5jb25maWcuY2hhcnQuYnJ1c2guZW5hYmxlZCYmdm9pZCAwIT09YS5jb25maWcuY2hhcnQuZXZlbnRzLmJydXNoU2Nyb2xsZWQmJmEuY29uZmlnLmNoYXJ0LmV2ZW50cy5icnVzaFNjcm9sbGVkKGkuY3R4LG8pfSksbykpfX0se2tleTpcInNlbGVjdGlvbkRyYXduXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5jb250ZXh0LGk9dC56b29tdHlwZSxhPXRoaXMudyxzPWUscj10aGlzLnh5UmF0aW9zLG89dGhpcy5jdHgudG9vbGJhcjtpZihzLnN0YXJ0WD5zLmVuZFgpe3ZhciBuPXMuc3RhcnRYO3Muc3RhcnRYPXMuZW5kWCxzLmVuZFg9bn1pZihzLnN0YXJ0WT5zLmVuZFkpe3ZhciBsPXMuc3RhcnRZO3Muc3RhcnRZPXMuZW5kWSxzLmVuZFk9bH12YXIgaD12b2lkIDAsYz12b2lkIDA7YS5nbG9iYWxzLmlzUmFuZ2VCYXI/KGg9YS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ubmljZU1pbitzLnN0YXJ0WCpyLmludmVydGVkWVJhdGlvLGM9YS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ubmljZU1pbitzLmVuZFgqci5pbnZlcnRlZFlSYXRpbyk6KGg9YS5nbG9iYWxzLnhBeGlzU2NhbGUubmljZU1pbitzLnN0YXJ0WCpyLnhSYXRpbyxjPWEuZ2xvYmFscy54QXhpc1NjYWxlLm5pY2VNaW4rcy5lbmRYKnIueFJhdGlvKTt2YXIgZD1bXSxnPVtdO2lmKGEuY29uZmlnLnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7ZC5wdXNoKGEuZ2xvYmFscy55QXhpc1NjYWxlW2VdLm5pY2VNYXgtci55UmF0aW9bZV0qcy5zdGFydFkpLGcucHVzaChhLmdsb2JhbHMueUF4aXNTY2FsZVtlXS5uaWNlTWF4LXIueVJhdGlvW2VdKnMuZW5kWSl9KSkscy5kcmFnZ2VkJiYocy5kcmFnWD4xMHx8cy5kcmFnWT4xMCkmJmghPT1jKWlmKGEuZ2xvYmFscy56b29tRW5hYmxlZCl7dmFyIHU9eC5jbG9uZShhLmdsb2JhbHMuaW5pdGlhbENvbmZpZy55YXhpcykscD14LmNsb25lKGEuZ2xvYmFscy5pbml0aWFsQ29uZmlnLnhheGlzKTtpZihhLmdsb2JhbHMuem9vbWVkPSEwLGEuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKGg9TWF0aC5mbG9vcihoKSxjPU1hdGguZmxvb3IoYyksaDwxJiYoaD0xLGM9YS5nbG9iYWxzLmRhdGFQb2ludHMpLGMtaDwyJiYoYz1oKzEpKSxcInh5XCIhPT1pJiZcInhcIiE9PWl8fChwPXttaW46aCxtYXg6Y30pLFwieHlcIiE9PWkmJlwieVwiIT09aXx8dS5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3VbZV0ubWluPWdbZV0sdVtlXS5tYXg9ZFtlXX0pKSxhLmNvbmZpZy5jaGFydC56b29tLmF1dG9TY2FsZVlheGlzKXt2YXIgZj1uZXcgXyhzLmN0eCk7dT1mLmF1dG9TY2FsZVkocy5jdHgsdSx7eGF4aXM6cH0pfWlmKG8pe3ZhciBiPW8uZ2V0QmVmb3JlWm9vbVJhbmdlKHAsdSk7YiYmKHA9Yi54YXhpcz9iLnhheGlzOnAsdT1iLnlheGlzP2IueWF4aXM6dSl9dmFyIHY9e3hheGlzOnB9O2EuY29uZmlnLmNoYXJ0Lmdyb3VwfHwodi55YXhpcz11KSxzLmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVPcHRpb25zKHYsITEscy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCksXCJmdW5jdGlvblwiPT10eXBlb2YgYS5jb25maWcuY2hhcnQuZXZlbnRzLnpvb21lZCYmby56b29tQ2FsbGJhY2socCx1KX1lbHNlIGlmKGEuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkKXt2YXIgbSx5PW51bGw7bT17bWluOmgsbWF4OmN9LFwieHlcIiE9PWkmJlwieVwiIT09aXx8KHk9eC5jbG9uZShhLmNvbmZpZy55YXhpcykpLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7eVtlXS5taW49Z1tlXSx5W2VdLm1heD1kW2VdfSkpLGEuZ2xvYmFscy5zZWxlY3Rpb249cy5zZWxlY3Rpb24sXCJmdW5jdGlvblwiPT10eXBlb2YgYS5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbiYmYS5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbihzLmN0eCx7eGF4aXM6bSx5YXhpczp5fSl9fX0se2tleTpcInBhbkRyYWdnaW5nXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5jb250ZXh0LGk9dGhpcy53LGE9ZTtpZih2b2lkIDAhPT1pLmdsb2JhbHMubGFzdENsaWVudFBvc2l0aW9uLngpe3ZhciBzPWkuZ2xvYmFscy5sYXN0Q2xpZW50UG9zaXRpb24ueC1hLmNsaWVudFgscj1pLmdsb2JhbHMubGFzdENsaWVudFBvc2l0aW9uLnktYS5jbGllbnRZO01hdGguYWJzKHMpPk1hdGguYWJzKHIpJiZzPjA/dGhpcy5tb3ZlRGlyZWN0aW9uPVwibGVmdFwiOk1hdGguYWJzKHMpPk1hdGguYWJzKHIpJiZzPDA/dGhpcy5tb3ZlRGlyZWN0aW9uPVwicmlnaHRcIjpNYXRoLmFicyhyKT5NYXRoLmFicyhzKSYmcj4wP3RoaXMubW92ZURpcmVjdGlvbj1cInVwXCI6TWF0aC5hYnMocik+TWF0aC5hYnMocykmJnI8MCYmKHRoaXMubW92ZURpcmVjdGlvbj1cImRvd25cIil9aS5nbG9iYWxzLmxhc3RDbGllbnRQb3NpdGlvbj17eDphLmNsaWVudFgseTphLmNsaWVudFl9O3ZhciBvPWkuZ2xvYmFscy5pc1JhbmdlQmFyP2kuZ2xvYmFscy5taW5ZOmkuZ2xvYmFscy5taW5YLG49aS5nbG9iYWxzLmlzUmFuZ2VCYXI/aS5nbG9iYWxzLm1heFk6aS5nbG9iYWxzLm1heFg7aS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljfHxhLnBhblNjcm9sbGVkKG8sbil9fSx7a2V5OlwiZGVsYXllZFBhblNjcm9sbGVkXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMubWluWCxpPXQuZ2xvYmFscy5tYXhYLGE9KHQuZ2xvYmFscy5tYXhYLXQuZ2xvYmFscy5taW5YKS8yO1wibGVmdFwiPT09dGhpcy5tb3ZlRGlyZWN0aW9uPyhlPXQuZ2xvYmFscy5taW5YK2EsaT10Lmdsb2JhbHMubWF4WCthKTpcInJpZ2h0XCI9PT10aGlzLm1vdmVEaXJlY3Rpb24mJihlPXQuZ2xvYmFscy5taW5YLWEsaT10Lmdsb2JhbHMubWF4WC1hKSxlPU1hdGguZmxvb3IoZSksaT1NYXRoLmZsb29yKGkpLHRoaXMudXBkYXRlU2Nyb2xsZWRDaGFydCh7eGF4aXM6e21pbjplLG1heDppfX0sZSxpKX19LHtrZXk6XCJwYW5TY3JvbGxlZFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9dGhpcy54eVJhdGlvcyxzPXguY2xvbmUoaS5nbG9iYWxzLmluaXRpYWxDb25maWcueWF4aXMpLHI9YS54UmF0aW8sbz1pLmdsb2JhbHMubWluWCxuPWkuZ2xvYmFscy5tYXhYO2kuZ2xvYmFscy5pc1JhbmdlQmFyJiYocj1hLmludmVydGVkWVJhdGlvLG89aS5nbG9iYWxzLm1pblksbj1pLmdsb2JhbHMubWF4WSksXCJsZWZ0XCI9PT10aGlzLm1vdmVEaXJlY3Rpb24/KHQ9bytpLmdsb2JhbHMuZ3JpZFdpZHRoLzE1KnIsZT1uK2kuZ2xvYmFscy5ncmlkV2lkdGgvMTUqcik6XCJyaWdodFwiPT09dGhpcy5tb3ZlRGlyZWN0aW9uJiYodD1vLWkuZ2xvYmFscy5ncmlkV2lkdGgvMTUqcixlPW4taS5nbG9iYWxzLmdyaWRXaWR0aC8xNSpyKSxpLmdsb2JhbHMuaXNSYW5nZUJhcnx8KHQ8aS5nbG9iYWxzLmluaXRpYWxNaW5YfHxlPmkuZ2xvYmFscy5pbml0aWFsTWF4WCkmJih0PW8sZT1uKTt2YXIgbD17bWluOnQsbWF4OmV9O2kuY29uZmlnLmNoYXJ0Lnpvb20uYXV0b1NjYWxlWWF4aXMmJihzPW5ldyBfKHRoaXMuY3R4KS5hdXRvU2NhbGVZKHRoaXMuY3R4LHMse3hheGlzOmx9KSk7dmFyIGg9e3hheGlzOnttaW46dCxtYXg6ZX19O2kuY29uZmlnLmNoYXJ0Lmdyb3VwfHwoaC55YXhpcz1zKSx0aGlzLnVwZGF0ZVNjcm9sbGVkQ2hhcnQoaCx0LGUpfX0se2tleTpcInVwZGF0ZVNjcm9sbGVkQ2hhcnRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53O3RoaXMuY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZU9wdGlvbnModCwhMSwhMSksXCJmdW5jdGlvblwiPT10eXBlb2YgYS5jb25maWcuY2hhcnQuZXZlbnRzLnNjcm9sbGVkJiZhLmNvbmZpZy5jaGFydC5ldmVudHMuc2Nyb2xsZWQodGhpcy5jdHgse3hheGlzOnttaW46ZSxtYXg6aX19KX19XSksaX0oKSxkdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy50dEN0eD1lLHRoaXMuY3R4PWUuY3R4fXJldHVybiByKHQsW3trZXk6XCJnZXROZWFyZXN0VmFsdWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5ob3ZlckFyZWEsaT10LmVsR3JpZCxhPXQuY2xpZW50WCxzPXQuY2xpZW50WSxyPXRoaXMudyxvPWkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj1vLndpZHRoLGw9by5oZWlnaHQsaD1uLyhyLmdsb2JhbHMuZGF0YVBvaW50cy0xKSxjPWwvci5nbG9iYWxzLmRhdGFQb2ludHMsZD10aGlzLmhhc0JhcnMoKTshci5nbG9iYWxzLmNvbWJvQ2hhcnRzJiYhZHx8ci5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljfHwoaD1uL3IuZ2xvYmFscy5kYXRhUG9pbnRzKTt2YXIgZz1hLW8ubGVmdC1yLmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXMsdT1zLW8udG9wO2c8MHx8dTwwfHxnPm58fHU+bD8oZS5jbGFzc0xpc3QucmVtb3ZlKFwiaG92ZXJpbmctem9vbVwiKSxlLmNsYXNzTGlzdC5yZW1vdmUoXCJob3ZlcmluZy1wYW5cIikpOnIuZ2xvYmFscy56b29tRW5hYmxlZD8oZS5jbGFzc0xpc3QucmVtb3ZlKFwiaG92ZXJpbmctcGFuXCIpLGUuY2xhc3NMaXN0LmFkZChcImhvdmVyaW5nLXpvb21cIikpOnIuZ2xvYmFscy5wYW5FbmFibGVkJiYoZS5jbGFzc0xpc3QucmVtb3ZlKFwiaG92ZXJpbmctem9vbVwiKSxlLmNsYXNzTGlzdC5hZGQoXCJob3ZlcmluZy1wYW5cIikpO3ZhciBwPU1hdGgucm91bmQoZy9oKSxmPU1hdGguZmxvb3IodS9jKTtkJiYhci5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYocD1NYXRoLmNlaWwoZy9oKSxwLT0xKTt2YXIgYj1udWxsLHY9bnVsbCxtPVtdLHk9W107aWYoci5nbG9iYWxzLnNlcmllc1h2YWx1ZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7bS5wdXNoKFt0WzBdKzFlLTZdLmNvbmNhdCh0KSl9KSksci5nbG9iYWxzLnNlcmllc1l2YWx1ZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7eS5wdXNoKFt0WzBdKzFlLTZdLmNvbmNhdCh0KSl9KSksbT1tLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4geC5pc051bWJlcih0KX0pKX0pKSx5PXkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB4LmlzTnVtYmVyKHQpfSkpfSkpLHIuZ2xvYmFscy5pc1hOdW1lcmljKXt2YXIgdz10aGlzLnR0Q3R4LmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGs9Zyoody53aWR0aC9uKSxBPXUqKHcuaGVpZ2h0L2wpO2I9KHY9dGhpcy5jbG9zZXN0SW5NdWx0aUFycmF5KGssQSxtLHkpKS5pbmRleCxwPXYuaixudWxsIT09YiYmKG09ci5nbG9iYWxzLnNlcmllc1h2YWx1ZXNbYl0scD0odj10aGlzLmNsb3Nlc3RJbkFycmF5KGssbSkpLmluZGV4KX1yZXR1cm4gci5nbG9iYWxzLmNhcHR1cmVkU2VyaWVzSW5kZXg9bnVsbD09PWI/LTE6YiwoIXB8fHA8MSkmJihwPTApLHIuZ2xvYmFscy5pc0Jhckhvcml6b250YWw/ci5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXg9ZjpyLmdsb2JhbHMuY2FwdHVyZWREYXRhUG9pbnRJbmRleD1wLHtjYXB0dXJlZFNlcmllczpiLGo6ci5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD9mOnAsaG92ZXJYOmcsaG92ZXJZOnV9fX0se2tleTpcImNsb3Nlc3RJbk11bHRpQXJyYXlcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz10aGlzLncscj0wLG89bnVsbCxuPS0xO3MuZ2xvYmFscy5zZXJpZXMubGVuZ3RoPjE/cj10aGlzLmdldEZpcnN0QWN0aXZlWEFycmF5KGkpOm89MDt2YXIgbD1pW3JdWzBdLGg9TWF0aC5hYnModC1sKTtpZihpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UuZm9yRWFjaCgoZnVuY3Rpb24oZSxpKXt2YXIgYT1NYXRoLmFicyh0LWUpO2E8aCYmKGg9YSxuPWkpfSkpfSkpLC0xIT09bil7dmFyIGM9YVtyXVtuXSxkPU1hdGguYWJzKGUtYyk7bz1yLGEuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXt2YXIgYT1NYXRoLmFicyhlLXRbbl0pO2E8ZCYmKGQ9YSxvPWkpfSkpfXJldHVybntpbmRleDpvLGo6bn19fSx7a2V5OlwiZ2V0Rmlyc3RBY3RpdmVYQXJyYXlcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy53LGk9MCxhPXQubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiB0Lmxlbmd0aD4wP2U6LTF9KSkscz0wO3M8YS5sZW5ndGg7cysrKWlmKC0xIT09YVtzXSYmLTE9PT1lLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHMpJiYtMT09PWUuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2Yocykpe2k9YVtzXTticmVha31yZXR1cm4gaX19LHtrZXk6XCJjbG9zZXN0SW5BcnJheVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPWVbMF0sYT1udWxsLHM9TWF0aC5hYnModC1pKSxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBvPU1hdGguYWJzKHQtZVtyXSk7bzxzJiYocz1vLGE9cil9cmV0dXJue2luZGV4OmF9fX0se2tleTpcImlzWG92ZXJsYXBcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1bXSxpPXRoaXMudy5nbG9iYWxzLnNlcmllc1guZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwIT09dFswXX0pKTtpZihpLmxlbmd0aD4wKWZvcih2YXIgYT0wO2E8aS5sZW5ndGgtMTthKyspdm9pZCAwIT09aVthXVt0XSYmdm9pZCAwIT09aVthKzFdW3RdJiZpW2FdW3RdIT09aVthKzFdW3RdJiZlLnB1c2goXCJ1bkVxdWFsXCIpO3JldHVybiAwPT09ZS5sZW5ndGh9fSx7a2V5OlwiaXNJbml0aWFsU2VyaWVzU2FtZUxlblwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PSEwLGU9dGhpcy53Lmdsb2JhbHMuaW5pdGlhbFNlcmllcyxpPTA7aTxlLmxlbmd0aC0xO2krKylpZihlW2ldLmRhdGEubGVuZ3RoIT09ZVtpKzFdLmRhdGEubGVuZ3RoKXt0PSExO2JyZWFrfXJldHVybiB0fX0se2tleTpcImdldEJhcnNIZWlnaHRcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdSh0KS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS5nZXRCQm94KCkuaGVpZ2h0fSksMCl9fSx7a2V5OlwiZ2V0RWxNYXJrZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIHQ/dGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KHQsXCInXSAuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwID4gKlwiKSk6dGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMtd3JhcCA+ICpcIil9fSx7a2V5OlwiZ2V0QWxsTWFya2Vyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMtd3JhcFwiKTsodD11KHQpKS5zb3J0KChmdW5jdGlvbih0LGUpe3ZhciBpPU51bWJlcih0LmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpKSxhPU51bWJlcihlLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpKTtyZXR1cm4gYTxpPzE6YT5pPy0xOjB9KSk7dmFyIGU9W107cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5wdXNoKHQucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLW1hcmtlclwiKSl9KSksZX19LHtrZXk6XCJoYXNNYXJrZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZ2V0RWxNYXJrZXJzKHQpLmxlbmd0aD4wfX0se2tleTpcImdldEVsQmFyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLWJhci1zZXJpZXMsICAuYXBleGNoYXJ0cy1jYW5kbGVzdGljay1zZXJpZXMsIC5hcGV4Y2hhcnRzLWJveFBsb3Qtc2VyaWVzLCAuYXBleGNoYXJ0cy1yYW5nZWJhci1zZXJpZXNcIil9fSx7a2V5OlwiaGFzQmFyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0RWxCYXJzKCkubGVuZ3RoPjB9fSx7a2V5OlwiZ2V0SG92ZXJNYXJrZXJTaXplXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9ZS5jb25maWcubWFya2Vycy5ob3Zlci5zaXplO3JldHVybiB2b2lkIDA9PT1pJiYoaT1lLmdsb2JhbHMubWFya2Vycy5zaXplW3RdK2UuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZU9mZnNldCksaX19LHtrZXk6XCJ0b2dnbGVBbGxUb29sdGlwU2VyaWVzR3JvdXBzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dGhpcy50dEN0eDswPT09aS5hbGxUb29sdGlwU2VyaWVzR3JvdXBzLmxlbmd0aCYmKGkuYWxsVG9vbHRpcFNlcmllc0dyb3Vwcz1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXBcIikpO2Zvcih2YXIgYT1pLmFsbFRvb2x0aXBTZXJpZXNHcm91cHMscz0wO3M8YS5sZW5ndGg7cysrKVwiZW5hYmxlXCI9PT10PyhhW3NdLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSxhW3NdLnN0eWxlLmRpc3BsYXk9ZS5jb25maWcudG9vbHRpcC5pdGVtcy5kaXNwbGF5KTooYVtzXS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksYVtzXS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiKX19XSksdH0oKSxndD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5jdHg9ZS5jdHgsdGhpcy50dEN0eD1lLHRoaXMudG9vbHRpcFV0aWw9bmV3IGR0KGUpfXJldHVybiByKHQsW3trZXk6XCJkcmF3U2VyaWVzVGV4dHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnNoYXJlZCxpPXZvaWQgMD09PWV8fGUsYT10LnR0SXRlbXMscz10Lmkscj12b2lkIDA9PT1zPzA6cyxvPXQuaixuPXZvaWQgMD09PW8/bnVsbDpvLGw9dC55MSxoPXQueTIsYz10LmUsZD10aGlzLnc7dm9pZCAwIT09ZC5jb25maWcudG9vbHRpcC5jdXN0b20/dGhpcy5oYW5kbGVDdXN0b21Ub29sdGlwKHtpOnIsajpuLHkxOmwseTI6aCx3OmR9KTp0aGlzLnRvZ2dsZUFjdGl2ZUluYWN0aXZlU2VyaWVzKGkpO3ZhciBnPXRoaXMuZ2V0VmFsdWVzVG9QcmludCh7aTpyLGo6bn0pO3RoaXMucHJpbnRMYWJlbHMoe2k6cixqOm4sdmFsdWVzOmcsdHRJdGVtczphLHNoYXJlZDppLGU6Y30pO3ZhciB1PXRoaXMudHRDdHguZ2V0RWxUb29sdGlwKCk7dGhpcy50dEN0eC50b29sdGlwUmVjdC50dFdpZHRoPXUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgsdGhpcy50dEN0eC50b29sdGlwUmVjdC50dEhlaWdodD11LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodH19LHtrZXk6XCJwcmludExhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBpLGE9dGhpcyxzPXQuaSxyPXQuaixvPXQudmFsdWVzLG49dC50dEl0ZW1zLGw9dC5zaGFyZWQsaD10LmUsYz10aGlzLncsZD1bXSxnPWZ1bmN0aW9uKHQpe3JldHVybiBjLmdsb2JhbHMuc2VyaWVzR29hbHNbdF0mJmMuZ2xvYmFscy5zZXJpZXNHb2Fsc1t0XVtyXSYmQXJyYXkuaXNBcnJheShjLmdsb2JhbHMuc2VyaWVzR29hbHNbdF1bcl0pfSx1PW8ueFZhbCxwPW8uelZhbCxmPW8ueEF4aXNUVFZhbCx4PVwiXCIsYj1jLmdsb2JhbHMuY29sb3JzW3NdO251bGwhPT1yJiZjLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGlzdHJpYnV0ZWQmJihiPWMuZ2xvYmFscy5jb2xvcnNbcl0pO2Zvcih2YXIgdj1mdW5jdGlvbih0LG8pe3ZhciB2PWEuZ2V0Rm9ybWF0dGVycyhzKTt4PWEuZ2V0U2VyaWVzTmFtZSh7Zm46di55TGJUaXRsZUZvcm1hdHRlcixpbmRleDpzLHNlcmllc0luZGV4OnMsajpyfSksXCJ0cmVlbWFwXCI9PT1jLmNvbmZpZy5jaGFydC50eXBlJiYoeD12LnlMYlRpdGxlRm9ybWF0dGVyKFN0cmluZyhjLmNvbmZpZy5zZXJpZXNbc10uZGF0YVtyXS54KSx7c2VyaWVzOmMuZ2xvYmFscy5zZXJpZXMsc2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpyLHc6Y30pKTt2YXIgbT1jLmNvbmZpZy50b29sdGlwLmludmVyc2VPcmRlcj9vOnQ7aWYoYy5nbG9iYWxzLmF4aXNDaGFydHMpe3ZhciB5PWZ1bmN0aW9uKHQpe3ZhciBlLGksYSxzO3JldHVybiBjLmdsb2JhbHMuaXNSYW5nZURhdGE/di55TGJGb3JtYXR0ZXIobnVsbD09PShlPWMuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0KXx8dm9pZCAwPT09ZXx8bnVsbD09PShpPWVbdF0pfHx2b2lkIDA9PT1pP3ZvaWQgMDppW3JdLHtzZXJpZXM6Yy5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnQsc2VyaWVzSW5kZXg6dCxkYXRhUG9pbnRJbmRleDpyLHc6Y30pK1wiIC0gXCIrdi55TGJGb3JtYXR0ZXIobnVsbD09PShhPWMuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZCl8fHZvaWQgMD09PWF8fG51bGw9PT0ocz1hW3RdKXx8dm9pZCAwPT09cz92b2lkIDA6c1tyXSx7c2VyaWVzOmMuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZCxzZXJpZXNJbmRleDp0LGRhdGFQb2ludEluZGV4OnIsdzpjfSk6di55TGJGb3JtYXR0ZXIoYy5nbG9iYWxzLnNlcmllc1t0XVtyXSx7c2VyaWVzOmMuZ2xvYmFscy5zZXJpZXMsc2VyaWVzSW5kZXg6dCxkYXRhUG9pbnRJbmRleDpyLHc6Y30pfTtpZihsKXY9YS5nZXRGb3JtYXR0ZXJzKG0pLHg9YS5nZXRTZXJpZXNOYW1lKHtmbjp2LnlMYlRpdGxlRm9ybWF0dGVyLGluZGV4Om0sc2VyaWVzSW5kZXg6cyxqOnJ9KSxiPWMuZ2xvYmFscy5jb2xvcnNbbV0saT15KG0pLGcobSkmJihkPWMuZ2xvYmFscy5zZXJpZXNHb2Fsc1ttXVtyXS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybnthdHRyczp0LHZhbDp2LnlMYkZvcm1hdHRlcih0LnZhbHVlLHtzZXJpZXNJbmRleDptLGRhdGFQb2ludEluZGV4OnIsdzpjfSl9fSkpKTtlbHNle3ZhciB3LGs9bnVsbD09aHx8bnVsbD09PSh3PWgudGFyZ2V0KXx8dm9pZCAwPT09dz92b2lkIDA6dy5nZXRBdHRyaWJ1dGUoXCJmaWxsXCIpO2smJihiPS0xIT09ay5pbmRleE9mKFwidXJsXCIpP2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioay5zdWJzdHIoNCkuc2xpY2UoMCwtMSkpLmNoaWxkTm9kZXNbMF0uZ2V0QXR0cmlidXRlKFwic3Ryb2tlXCIpOmspLGk9eShzKSxnKHMpJiZBcnJheS5pc0FycmF5KGMuZ2xvYmFscy5zZXJpZXNHb2Fsc1tzXVtyXSkmJihkPWMuZ2xvYmFscy5zZXJpZXNHb2Fsc1tzXVtyXS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybnthdHRyczp0LHZhbDp2LnlMYkZvcm1hdHRlcih0LnZhbHVlLHtzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsdzpjfSl9fSkpKX19bnVsbD09PXImJihpPXYueUxiRm9ybWF0dGVyKGMuZ2xvYmFscy5zZXJpZXNbc10sZShlKHt9LGMpLHt9LHtzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnN9KSkpLGEuRE9NSGFuZGxpbmcoe2k6cyx0Om0sajpyLHR0SXRlbXM6bix2YWx1ZXM6e3ZhbDppLGdvYWxWYWxzOmQseFZhbDp1LHhBeGlzVFRWYWw6Zix6VmFsOnB9LHNlcmllc05hbWU6eCxzaGFyZWQ6bCxwQ29sb3I6Yn0pfSxtPTAseT1jLmdsb2JhbHMuc2VyaWVzLmxlbmd0aC0xO208Yy5nbG9iYWxzLnNlcmllcy5sZW5ndGg7bSsrLHktLSl2KG0seSl9fSx7a2V5OlwiZ2V0Rm9ybWF0dGVyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcy53LGE9aS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbdF07cmV0dXJuIHZvaWQgMCE9PWkuZ2xvYmFscy50dFZhbD9BcnJheS5pc0FycmF5KGkuZ2xvYmFscy50dFZhbCk/KGE9aS5nbG9iYWxzLnR0VmFsW3RdJiZpLmdsb2JhbHMudHRWYWxbdF0uZm9ybWF0dGVyLGU9aS5nbG9iYWxzLnR0VmFsW3RdJiZpLmdsb2JhbHMudHRWYWxbdF0udGl0bGUmJmkuZ2xvYmFscy50dFZhbFt0XS50aXRsZS5mb3JtYXR0ZXIpOihhPWkuZ2xvYmFscy50dFZhbC5mb3JtYXR0ZXIsXCJmdW5jdGlvblwiPT10eXBlb2YgaS5nbG9iYWxzLnR0VmFsLnRpdGxlLmZvcm1hdHRlciYmKGU9aS5nbG9iYWxzLnR0VmFsLnRpdGxlLmZvcm1hdHRlcikpOmU9aS5jb25maWcudG9vbHRpcC55LnRpdGxlLmZvcm1hdHRlcixcImZ1bmN0aW9uXCIhPXR5cGVvZiBhJiYoYT1pLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXT9pLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXTpmdW5jdGlvbih0KXtyZXR1cm4gdH0pLFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJihlPWZ1bmN0aW9uKHQpe3JldHVybiB0fSkse3lMYkZvcm1hdHRlcjphLHlMYlRpdGxlRm9ybWF0dGVyOmV9fX0se2tleTpcImdldFNlcmllc05hbWVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmZuLGk9dC5pbmRleCxhPXQuc2VyaWVzSW5kZXgscz10Lmoscj10aGlzLnc7cmV0dXJuIGUoU3RyaW5nKHIuZ2xvYmFscy5zZXJpZXNOYW1lc1tpXSkse3NlcmllczpyLmdsb2JhbHMuc2VyaWVzLHNlcmllc0luZGV4OmEsZGF0YVBvaW50SW5kZXg6cyx3OnJ9KX19LHtrZXk6XCJET01IYW5kbGluZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3QuaTt2YXIgZT10LnQsaT10LmosYT10LnR0SXRlbXMscz10LnZhbHVlcyxyPXQuc2VyaWVzTmFtZSxvPXQuc2hhcmVkLG49dC5wQ29sb3IsbD10aGlzLncsaD10aGlzLnR0Q3R4LGM9cy52YWwsZD1zLmdvYWxWYWxzLGc9cy54VmFsLHU9cy54QXhpc1RUVmFsLHA9cy56VmFsLGY9bnVsbDtmPWFbZV0uY2hpbGRyZW4sbC5jb25maWcudG9vbHRpcC5maWxsU2VyaWVzQ29sb3ImJihhW2VdLnN0eWxlLmJhY2tncm91bmRDb2xvcj1uLGZbMF0uc3R5bGUuZGlzcGxheT1cIm5vbmVcIiksaC5zaG93VG9vbHRpcFRpdGxlJiYobnVsbD09PWgudG9vbHRpcFRpdGxlJiYoaC50b29sdGlwVGl0bGU9bC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGVcIikpLGgudG9vbHRpcFRpdGxlLmlubmVySFRNTD1nKSxoLmlzWEF4aXNUb29sdGlwRW5hYmxlZCYmKGgueGF4aXNUb29sdGlwVGV4dC5pbm5lckhUTUw9XCJcIiE9PXU/dTpnKTt2YXIgeD1hW2VdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQteS1sYWJlbFwiKTt4JiYoeC5pbm5lckhUTUw9cnx8XCJcIik7dmFyIGI9YVtlXS5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXktdmFsdWVcIik7YiYmKGIuaW5uZXJIVE1MPXZvaWQgMCE9PWM/YzpcIlwiKSxmWzBdJiZmWzBdLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtdG9vbHRpcC1tYXJrZXJcIikmJihsLmNvbmZpZy50b29sdGlwLm1hcmtlci5maWxsQ29sb3JzJiZBcnJheS5pc0FycmF5KGwuY29uZmlnLnRvb2x0aXAubWFya2VyLmZpbGxDb2xvcnMpJiYobj1sLmNvbmZpZy50b29sdGlwLm1hcmtlci5maWxsQ29sb3JzW2VdKSxmWzBdLnN0eWxlLmJhY2tncm91bmRDb2xvcj1uKSxsLmNvbmZpZy50b29sdGlwLm1hcmtlci5zaG93fHwoZlswXS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiKTt2YXIgdj1hW2VdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtbGFiZWxcIiksbT1hW2VdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtdmFsdWVcIik7aWYoZC5sZW5ndGgmJmwuZ2xvYmFscy5zZXJpZXNHb2Fsc1tlXSl7dmFyIHk9ZnVuY3Rpb24oKXt2YXIgdD1cIjxkaXYgPlwiLGU9XCI8ZGl2PlwiO2QuZm9yRWFjaCgoZnVuY3Rpb24oaSxhKXt0Kz0nIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4XCI+PHNwYW4gY2xhc3M9XCJhcGV4Y2hhcnRzLXRvb2x0aXAtbWFya2VyXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAnLmNvbmNhdChpLmF0dHJzLnN0cm9rZUNvbG9yLCc7IGhlaWdodDogM3B4OyBib3JkZXItcmFkaXVzOiAwOyB0b3A6IDVweDtcIj48L3NwYW4+ICcpLmNvbmNhdChpLmF0dHJzLm5hbWUsXCI8L2Rpdj5cIiksZSs9XCI8ZGl2PlwiLmNvbmNhdChpLnZhbCxcIjwvZGl2PlwiKX0pKSx2LmlubmVySFRNTD10K1wiPC9kaXY+XCIsbS5pbm5lckhUTUw9ZStcIjwvZGl2PlwifTtvP2wuZ2xvYmFscy5zZXJpZXNHb2Fsc1tlXVtpXSYmQXJyYXkuaXNBcnJheShsLmdsb2JhbHMuc2VyaWVzR29hbHNbZV1baV0pP3koKToodi5pbm5lckhUTUw9XCJcIixtLmlubmVySFRNTD1cIlwiKTp5KCl9ZWxzZSB2LmlubmVySFRNTD1cIlwiLG0uaW5uZXJIVE1MPVwiXCI7bnVsbCE9PXAmJihhW2VdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtei1sYWJlbFwiKS5pbm5lckhUTUw9bC5jb25maWcudG9vbHRpcC56LnRpdGxlLGFbZV0ucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC16LXZhbHVlXCIpLmlubmVySFRNTD12b2lkIDAhPT1wP3A6XCJcIik7byYmZlswXSYmKG51bGw9PWN8fGwuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoZSk+LTF8fGwuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoZSk+LTE/ZlswXS5wYXJlbnROb2RlLnN0eWxlLmRpc3BsYXk9XCJub25lXCI6ZlswXS5wYXJlbnROb2RlLnN0eWxlLmRpc3BsYXk9bC5jb25maWcudG9vbHRpcC5pdGVtcy5kaXNwbGF5KX19LHtrZXk6XCJ0b2dnbGVBY3RpdmVJbmFjdGl2ZVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztpZih0KXRoaXMudG9vbHRpcFV0aWwudG9nZ2xlQWxsVG9vbHRpcFNlcmllc0dyb3VwcyhcImVuYWJsZVwiKTtlbHNle3RoaXMudG9vbHRpcFV0aWwudG9nZ2xlQWxsVG9vbHRpcFNlcmllc0dyb3VwcyhcImRpc2FibGVcIik7dmFyIGk9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwXCIpO2kmJihpLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSxpLnN0eWxlLmRpc3BsYXk9ZS5jb25maWcudG9vbHRpcC5pdGVtcy5kaXNwbGF5KX19fSx7a2V5OlwiZ2V0VmFsdWVzVG9QcmludFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaSxpPXQuaixhPXRoaXMudyxzPXRoaXMuY3R4LnNlcmllcy5maWx0ZXJlZFNlcmllc1goKSxyPVwiXCIsbz1cIlwiLG49bnVsbCxsPW51bGwsaD17c2VyaWVzOmEuZ2xvYmFscy5zZXJpZXMsc2VyaWVzSW5kZXg6ZSxkYXRhUG9pbnRJbmRleDppLHc6YX0sYz1hLmdsb2JhbHMudHRaRm9ybWF0dGVyO251bGw9PT1pP2w9YS5nbG9iYWxzLnNlcmllc1tlXTphLmdsb2JhbHMuaXNYTnVtZXJpYyYmXCJ0cmVlbWFwXCIhPT1hLmNvbmZpZy5jaGFydC50eXBlPyhyPXNbZV1baV0sMD09PXNbZV0ubGVuZ3RoJiYocj1zW3RoaXMudG9vbHRpcFV0aWwuZ2V0Rmlyc3RBY3RpdmVYQXJyYXkocyldW2ldKSk6cj12b2lkIDAhPT1hLmdsb2JhbHMubGFiZWxzW2ldP2EuZ2xvYmFscy5sYWJlbHNbaV06XCJcIjt2YXIgZD1yO2EuZ2xvYmFscy5pc1hOdW1lcmljJiZcImRhdGV0aW1lXCI9PT1hLmNvbmZpZy54YXhpcy50eXBlP3I9bmV3IFQodGhpcy5jdHgpLnhMYWJlbEZvcm1hdChhLmdsb2JhbHMudHRLZXlGb3JtYXR0ZXIsZCxkLHtpOnZvaWQgMCxkYXRlRm9ybWF0dGVyOm5ldyBJKHRoaXMuY3R4KS5mb3JtYXREYXRlLHc6dGhpcy53fSk6cj1hLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsP2EuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzWzBdKGQsaCk6YS5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcihkLGgpO3JldHVybiB2b2lkIDAhPT1hLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyJiYocj1hLmdsb2JhbHMudHRLZXlGb3JtYXR0ZXIoZCxoKSksYS5nbG9iYWxzLnNlcmllc1oubGVuZ3RoPjAmJmEuZ2xvYmFscy5zZXJpZXNaW2VdLmxlbmd0aD4wJiYobj1jKGEuZ2xvYmFscy5zZXJpZXNaW2VdW2ldLGEpKSxvPVwiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29uZmlnLnhheGlzLnRvb2x0aXAuZm9ybWF0dGVyP2EuZ2xvYmFscy54YXhpc1Rvb2x0aXBGb3JtYXR0ZXIoZCxoKTpyLHt2YWw6QXJyYXkuaXNBcnJheShsKT9sLmpvaW4oXCIgXCIpOmwseFZhbDpBcnJheS5pc0FycmF5KHIpP3Iuam9pbihcIiBcIik6cix4QXhpc1RUVmFsOkFycmF5LmlzQXJyYXkobyk/by5qb2luKFwiIFwiKTpvLHpWYWw6bn19fSx7a2V5OlwiaGFuZGxlQ3VzdG9tVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaSxpPXQuaixhPXQueTEscz10LnkyLHI9dC53LG89dGhpcy50dEN0eC5nZXRFbFRvb2x0aXAoKSxuPXIuY29uZmlnLnRvb2x0aXAuY3VzdG9tO0FycmF5LmlzQXJyYXkobikmJm5bZV0mJihuPW5bZV0pLG8uaW5uZXJIVE1MPW4oe2N0eDp0aGlzLmN0eCxzZXJpZXM6ci5nbG9iYWxzLnNlcmllcyxzZXJpZXNJbmRleDplLGRhdGFQb2ludEluZGV4OmkseTE6YSx5MjpzLHc6cn0pfX1dKSx0fSgpLHV0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy50dEN0eD1lLHRoaXMuY3R4PWUuY3R4LHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcIm1vdmVYQ3Jvc3NoYWlyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsLGk9dGhpcy50dEN0eCxhPXRoaXMudyxzPWkuZ2V0RWxYQ3Jvc3NoYWlycygpLHI9dC1pLnhjcm9zc2hhaXJzV2lkdGgvMixvPWEuZ2xvYmFscy5sYWJlbHMuc2xpY2UoKS5sZW5ndGg7aWYobnVsbCE9PWUmJihyPWEuZ2xvYmFscy5ncmlkV2lkdGgvbyplKSxudWxsPT09c3x8YS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8KHMuc2V0QXR0cmlidXRlKFwieFwiLHIpLHMuc2V0QXR0cmlidXRlKFwieDFcIixyKSxzLnNldEF0dHJpYnV0ZShcIngyXCIscikscy5zZXRBdHRyaWJ1dGUoXCJ5MlwiLGEuZ2xvYmFscy5ncmlkSGVpZ2h0KSxzLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSkscjwwJiYocj0wKSxyPmEuZ2xvYmFscy5ncmlkV2lkdGgmJihyPWEuZ2xvYmFscy5ncmlkV2lkdGgpLGkuaXNYQXhpc1Rvb2x0aXBFbmFibGVkKXt2YXIgbj1yO1widGlja1dpZHRoXCIhPT1hLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoJiZcImJhcldpZHRoXCIhPT1hLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRofHwobj1yK2kueGNyb3NzaGFpcnNXaWR0aC8yKSx0aGlzLm1vdmVYQXhpc1Rvb2x0aXAobil9fX0se2tleTpcIm1vdmVZQ3Jvc3NoYWlyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudHRDdHg7bnVsbCE9PWUueWNyb3NzaGFpcnMmJm0uc2V0QXR0cnMoZS55Y3Jvc3NoYWlycyx7eTE6dCx5Mjp0fSksbnVsbCE9PWUueWNyb3NzaGFpcnNIaWRkZW4mJm0uc2V0QXR0cnMoZS55Y3Jvc3NoYWlyc0hpZGRlbix7eTE6dCx5Mjp0fSl9fSx7a2V5OlwibW92ZVhBeGlzVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPXRoaXMudHRDdHg7aWYobnVsbCE9PWkueGF4aXNUb29sdGlwJiYwIT09aS54Y3Jvc3NoYWlyc1dpZHRoKXtpLnhheGlzVG9vbHRpcC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIik7dmFyIGE9aS54YXhpc09mZlkrZS5jb25maWcueGF4aXMudG9vbHRpcC5vZmZzZXRZK2UuZ2xvYmFscy50cmFuc2xhdGVZKzErZS5jb25maWcueGF4aXMub2Zmc2V0WTtpZih0LT1pLnhheGlzVG9vbHRpcC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aC8yLCFpc05hTih0KSl7dCs9ZS5nbG9iYWxzLnRyYW5zbGF0ZVg7dmFyIHM7cz1uZXcgbSh0aGlzLmN0eCkuZ2V0VGV4dFJlY3RzKGkueGF4aXNUb29sdGlwVGV4dC5pbm5lckhUTUwpLGkueGF4aXNUb29sdGlwVGV4dC5zdHlsZS5taW5XaWR0aD1zLndpZHRoK1wicHhcIixpLnhheGlzVG9vbHRpcC5zdHlsZS5sZWZ0PXQrXCJweFwiLGkueGF4aXNUb29sdGlwLnN0eWxlLnRvcD1hK1wicHhcIn19fX0se2tleTpcIm1vdmVZQXhpc1Rvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10aGlzLnR0Q3R4O251bGw9PT1pLnlheGlzVFRFbHMmJihpLnlheGlzVFRFbHM9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcFwiKSk7dmFyIGE9cGFyc2VJbnQoaS55Y3Jvc3NoYWlyc0hpZGRlbi5nZXRBdHRyaWJ1dGUoXCJ5MVwiKSwxMCkscz1lLmdsb2JhbHMudHJhbnNsYXRlWSthLHI9aS55YXhpc1RURWxzW3RdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCxvPWUuZ2xvYmFscy50cmFuc2xhdGVZQXhpc1hbdF0tMjtlLmNvbmZpZy55YXhpc1t0XS5vcHBvc2l0ZSYmKG8tPTI2KSxzLT1yLzIsLTE9PT1lLmdsb2JhbHMuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YodCk/KGkueWF4aXNUVEVsc1t0XS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksaS55YXhpc1RURWxzW3RdLnN0eWxlLnRvcD1zK1wicHhcIixpLnlheGlzVFRFbHNbdF0uc3R5bGUubGVmdD1vK2UuY29uZmlnLnlheGlzW3RdLnRvb2x0aXAub2Zmc2V0WCtcInB4XCIpOmkueWF4aXNUVEVsc1t0XS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1hY3RpdmVcIil9fSx7a2V5OlwibW92ZVRvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsLGE9dGhpcy53LHM9dGhpcy50dEN0eCxyPXMuZ2V0RWxUb29sdGlwKCksbz1zLnRvb2x0aXBSZWN0LG49bnVsbCE9PWk/cGFyc2VGbG9hdChpKToxLGw9cGFyc2VGbG9hdCh0KStuKzUsaD1wYXJzZUZsb2F0KGUpK24vMjtpZihsPmEuZ2xvYmFscy5ncmlkV2lkdGgvMiYmKGw9bC1vLnR0V2lkdGgtbi0xMCksbD5hLmdsb2JhbHMuZ3JpZFdpZHRoLW8udHRXaWR0aC0xMCYmKGw9YS5nbG9iYWxzLmdyaWRXaWR0aC1vLnR0V2lkdGgpLGw8LTIwJiYobD0tMjApLGEuY29uZmlnLnRvb2x0aXAuZm9sbG93Q3Vyc29yKXt2YXIgYz1zLmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOyhsPXMuZS5jbGllbnRYLWMubGVmdCk+YS5nbG9iYWxzLmdyaWRXaWR0aC8yJiYobC09cy50b29sdGlwUmVjdC50dFdpZHRoKSwoaD1zLmUuY2xpZW50WSthLmdsb2JhbHMudHJhbnNsYXRlWS1jLnRvcCk+YS5nbG9iYWxzLmdyaWRIZWlnaHQvMiYmKGgtPXMudG9vbHRpcFJlY3QudHRIZWlnaHQpfWVsc2UgYS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8by50dEhlaWdodC8yK2g+YS5nbG9iYWxzLmdyaWRIZWlnaHQmJihoPWEuZ2xvYmFscy5ncmlkSGVpZ2h0LW8udHRIZWlnaHQrYS5nbG9iYWxzLnRyYW5zbGF0ZVkpO2lzTmFOKGwpfHwobCs9YS5nbG9iYWxzLnRyYW5zbGF0ZVgsci5zdHlsZS5sZWZ0PWwrXCJweFwiLHIuc3R5bGUudG9wPWgrXCJweFwiKX19LHtrZXk6XCJtb3ZlTWFya2Vyc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9dGhpcy50dEN0eDtpZihpLmdsb2JhbHMubWFya2Vycy5zaXplW3RdPjApZm9yKHZhciBzPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KHQsXCInXSAuYXBleGNoYXJ0cy1tYXJrZXJcIikpLHI9MDtyPHMubGVuZ3RoO3IrKylwYXJzZUludChzW3JdLmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCk9PT1lJiYoYS5tYXJrZXIucmVzZXRQb2ludHNTaXplKCksYS5tYXJrZXIuZW5sYXJnZUN1cnJlbnRQb2ludChlLHNbcl0pKTtlbHNlIGEubWFya2VyLnJlc2V0UG9pbnRzU2l6ZSgpLHRoaXMubW92ZUR5bmFtaWNQb2ludE9uSG92ZXIoZSx0KX19LHtrZXk6XCJtb3ZlRHluYW1pY1BvaW50T25Ib3ZlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGksYSxzPXRoaXMudyxyPXRoaXMudHRDdHgsbz1zLmdsb2JhbHMucG9pbnRzQXJyYXksbj1yLnRvb2x0aXBVdGlsLmdldEhvdmVyTWFya2VyU2l6ZShlKSxsPXMuY29uZmlnLnNlcmllc1tlXS50eXBlO2lmKCFsfHxcImNvbHVtblwiIT09bCYmXCJjYW5kbGVzdGlja1wiIT09bCYmXCJib3hQbG90XCIhPT1sKXtpPW9bZV1bdF1bMF0sYT1vW2VdW3RdWzFdP29bZV1bdF1bMV06MDt2YXIgaD1zLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KGUsXCInXSAuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2VycyBjaXJjbGVcIikpO2gmJmE8cy5nbG9iYWxzLmdyaWRIZWlnaHQmJmE+MCYmKGguc2V0QXR0cmlidXRlKFwiclwiLG4pLGguc2V0QXR0cmlidXRlKFwiY3hcIixpKSxoLnNldEF0dHJpYnV0ZShcImN5XCIsYSkpLHRoaXMubW92ZVhDcm9zc2hhaXJzKGkpLHIuZml4ZWRUb29sdGlwfHx0aGlzLm1vdmVUb29sdGlwKGksYSxuKX19fSx7a2V5OlwibW92ZUR5bmFtaWNQb2ludHNPbkhvdmVyXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLnR0Q3R4LGE9aS53LHM9MCxyPTAsbz1hLmdsb2JhbHMucG9pbnRzQXJyYXk7ZT1uZXcgTih0aGlzLmN0eCkuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoXCJhc2NcIixbXCJsaW5lXCIsXCJhcmVhXCIsXCJzY2F0dGVyXCIsXCJidWJibGVcIl0pO3ZhciBuPWkudG9vbHRpcFV0aWwuZ2V0SG92ZXJNYXJrZXJTaXplKGUpO29bZV0mJihzPW9bZV1bdF1bMF0scj1vW2VdW3RdWzFdKTt2YXIgbD1pLnRvb2x0aXBVdGlsLmdldEFsbE1hcmtlcnMoKTtpZihudWxsIT09bClmb3IodmFyIGg9MDtoPGEuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO2grKyl7dmFyIGM9b1toXTtpZihhLmdsb2JhbHMuY29tYm9DaGFydHMmJnZvaWQgMD09PWMmJmwuc3BsaWNlKGgsMCxudWxsKSxjJiZjLmxlbmd0aCl7dmFyIGQ9b1toXVt0XVsxXSxnPXZvaWQgMDtpZihsW2hdLnNldEF0dHJpYnV0ZShcImN4XCIscyksXCJyYW5nZUFyZWFcIj09PWEuY29uZmlnLmNoYXJ0LnR5cGUmJiFhLmdsb2JhbHMuY29tYm9DaGFydHMpe3ZhciB1PXQrYS5nbG9iYWxzLnNlcmllc1toXS5sZW5ndGg7Zz1vW2hdW3VdWzFdLGQtPU1hdGguYWJzKGQtZykvMn1udWxsIT09ZCYmIWlzTmFOKGQpJiZkPGEuZ2xvYmFscy5ncmlkSGVpZ2h0K24mJmQrbj4wPyhsW2hdJiZsW2hdLnNldEF0dHJpYnV0ZShcInJcIixuKSxsW2hdJiZsW2hdLnNldEF0dHJpYnV0ZShcImN5XCIsZCkpOmxbaF0mJmxbaF0uc2V0QXR0cmlidXRlKFwiclwiLDApfX10aGlzLm1vdmVYQ3Jvc3NoYWlycyhzKSxpLmZpeGVkVG9vbHRpcHx8dGhpcy5tb3ZlVG9vbHRpcChzLHJ8fGEuZ2xvYmFscy5ncmlkSGVpZ2h0LG4pfX0se2tleTpcIm1vdmVTdGlja3lUb29sdGlwT3ZlckJhcnNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPXRoaXMudHRDdHgscz1pLmdsb2JhbHMuY29sdW1uU2VyaWVzP2kuZ2xvYmFscy5jb2x1bW5TZXJpZXMubGVuZ3RoOmkuZ2xvYmFscy5zZXJpZXMubGVuZ3RoLHI9cz49MiYmcyUyPT0wP01hdGguZmxvb3Iocy8yKTpNYXRoLmZsb29yKHMvMikrMTtpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYocj1uZXcgTih0aGlzLmN0eCkuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoXCJkZXNjXCIpKzEpO3ZhciBvPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1iYXItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9J1wiLmNvbmNhdChyLFwiJ10gcGF0aFtqPSdcIikuY29uY2F0KHQsXCInXSwgLmFwZXhjaGFydHMtY2FuZGxlc3RpY2stc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9J1wiKS5jb25jYXQocixcIiddIHBhdGhbaj0nXCIpLmNvbmNhdCh0LFwiJ10sIC5hcGV4Y2hhcnRzLWJveFBsb3Qtc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9J1wiKS5jb25jYXQocixcIiddIHBhdGhbaj0nXCIpLmNvbmNhdCh0LFwiJ10sIC5hcGV4Y2hhcnRzLXJhbmdlYmFyLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIikuY29uY2F0KHIsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQodCxcIiddXCIpKTtvfHxcIm51bWJlclwiIT10eXBlb2YgZXx8KG89aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWJhci1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KGUsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQodCxcIiddLFxcbiAgICAgICAgLmFwZXhjaGFydHMtY2FuZGxlc3RpY2stc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiKS5jb25jYXQoZSxcIiddIHBhdGhbaj0nXCIpLmNvbmNhdCh0LFwiJ10sXFxuICAgICAgICAuYXBleGNoYXJ0cy1ib3hQbG90LXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIikuY29uY2F0KGUsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQodCxcIiddLFxcbiAgICAgICAgLmFwZXhjaGFydHMtcmFuZ2ViYXItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiKS5jb25jYXQoZSxcIiddIHBhdGhbaj0nXCIpLmNvbmNhdCh0LFwiJ11cIikpKTt2YXIgbj1vP3BhcnNlRmxvYXQoby5nZXRBdHRyaWJ1dGUoXCJjeFwiKSk6MCxsPW8/cGFyc2VGbG9hdChvLmdldEF0dHJpYnV0ZShcImN5XCIpKTowLGg9bz9wYXJzZUZsb2F0KG8uZ2V0QXR0cmlidXRlKFwiYmFyV2lkdGhcIikpOjAsYz1hLmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGQ9byYmKG8uY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1jYW5kbGVzdGljay1hcmVhXCIpfHxvLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtYm94UGxvdC1hcmVhXCIpKTtpLmdsb2JhbHMuaXNYTnVtZXJpYz8obyYmIWQmJihuLT1zJTIhPTA/aC8yOjApLG8mJmQmJmkuZ2xvYmFscy5jb21ib0NoYXJ0cyYmKG4tPWgvMikpOmkuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fChuPWEueEF4aXNUaWNrc1Bvc2l0aW9uc1t0LTFdK2EuZGF0YVBvaW50c0RpdmlkZWRXaWR0aC8yLGlzTmFOKG4pJiYobj1hLnhBeGlzVGlja3NQb3NpdGlvbnNbdF0tYS5kYXRhUG9pbnRzRGl2aWRlZFdpZHRoLzIpKSxpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsP2wtPWEudG9vbHRpcFJlY3QudHRIZWlnaHQ6aS5jb25maWcudG9vbHRpcC5mb2xsb3dDdXJzb3I/bD1hLmUuY2xpZW50WS1jLnRvcC1hLnRvb2x0aXBSZWN0LnR0SGVpZ2h0LzI6bCthLnRvb2x0aXBSZWN0LnR0SGVpZ2h0KzE1PmkuZ2xvYmFscy5ncmlkSGVpZ2h0JiYobD1pLmdsb2JhbHMuZ3JpZEhlaWdodCksaS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8dGhpcy5tb3ZlWENyb3NzaGFpcnMobiksYS5maXhlZFRvb2x0aXB8fHRoaXMubW92ZVRvb2x0aXAobixsfHxpLmdsb2JhbHMuZ3JpZEhlaWdodCl9fV0pLHR9KCkscHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMudHRDdHg9ZSx0aGlzLmN0eD1lLmN0eCx0aGlzLnRvb2x0aXBQb3NpdGlvbj1uZXcgdXQoZSl9cmV0dXJuIHIodCxbe2tleTpcImRyYXdEeW5hbWljUG9pbnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT1uZXcgbSh0aGlzLmN0eCksaT1uZXcgRCh0aGlzLmN0eCksYT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzXCIpO2E9dShhKSx0LmNvbmZpZy5jaGFydC5zdGFja2VkJiZhLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHBhcnNlRmxvYXQodC5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSktcGFyc2VGbG9hdChlLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpKX0pKTtmb3IodmFyIHM9MDtzPGEubGVuZ3RoO3MrKyl7dmFyIHI9YVtzXS5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMtd3JhcFwiKTtpZihudWxsIT09cil7dmFyIG89dm9pZCAwLG49XCJhcGV4Y2hhcnRzLW1hcmtlciB3XCIuY29uY2F0KChNYXRoLnJhbmRvbSgpKzEpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoNCkpO1wibGluZVwiIT09dC5jb25maWcuY2hhcnQudHlwZSYmXCJhcmVhXCIhPT10LmNvbmZpZy5jaGFydC50eXBlfHx0Lmdsb2JhbHMuY29tYm9DaGFydHN8fHQuY29uZmlnLnRvb2x0aXAuaW50ZXJzZWN0fHwobis9XCIgbm8tcG9pbnRlci1ldmVudHNcIik7dmFyIGw9aS5nZXRNYXJrZXJDb25maWcoe2Nzc0NsYXNzOm4sc2VyaWVzSW5kZXg6TnVtYmVyKHIuZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIikpfSk7KG89ZS5kcmF3TWFya2VyKDAsMCxsKSkubm9kZS5zZXRBdHRyaWJ1dGUoXCJkZWZhdWx0LW1hcmtlci1zaXplXCIsMCk7dmFyIGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuZ2xvYmFscy5TVkdOUyxcImdcIik7aC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vyc1wiKSxoLmFwcGVuZENoaWxkKG8ubm9kZSksci5hcHBlbmRDaGlsZChoKX19fX0se2tleTpcImVubGFyZ2VDdXJyZW50UG9pbnRcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsLGE9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOm51bGwscz10aGlzLnc7XCJidWJibGVcIiE9PXMuY29uZmlnLmNoYXJ0LnR5cGUmJnRoaXMubmV3UG9pbnRTaXplKHQsZSk7dmFyIHI9ZS5nZXRBdHRyaWJ1dGUoXCJjeFwiKSxvPWUuZ2V0QXR0cmlidXRlKFwiY3lcIik7aWYobnVsbCE9PWkmJm51bGwhPT1hJiYocj1pLG89YSksdGhpcy50b29sdGlwUG9zaXRpb24ubW92ZVhDcm9zc2hhaXJzKHIpLCF0aGlzLmZpeGVkVG9vbHRpcCl7aWYoXCJyYWRhclwiPT09cy5jb25maWcuY2hhcnQudHlwZSl7dmFyIG49dGhpcy50dEN0eC5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyPXRoaXMudHRDdHguZS5jbGllbnRYLW4ubGVmdH10aGlzLnRvb2x0aXBQb3NpdGlvbi5tb3ZlVG9vbHRpcChyLG8scy5jb25maWcubWFya2Vycy5ob3Zlci5zaXplKX19fSx7a2V5OlwiZW5sYXJnZVBvaW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLncsaT10aGlzLGE9dGhpcy50dEN0eCxzPXQscj1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzOm5vdCguYXBleGNoYXJ0cy1zZXJpZXMtY29sbGFwc2VkKSAuYXBleGNoYXJ0cy1tYXJrZXJcIiksbz1lLmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemUsbj0wO248ci5sZW5ndGg7bisrKXt2YXIgbD1yW25dLmdldEF0dHJpYnV0ZShcInJlbFwiKSxoPXJbbl0uZ2V0QXR0cmlidXRlKFwiaW5kZXhcIik7aWYodm9pZCAwPT09byYmKG89ZS5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtoXStlLmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemVPZmZzZXQpLHM9PT1wYXJzZUludChsLDEwKSl7aS5uZXdQb2ludFNpemUocyxyW25dKTt2YXIgYz1yW25dLmdldEF0dHJpYnV0ZShcImN4XCIpLGQ9cltuXS5nZXRBdHRyaWJ1dGUoXCJjeVwiKTtpLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWENyb3NzaGFpcnMoYyksYS5maXhlZFRvb2x0aXB8fGkudG9vbHRpcFBvc2l0aW9uLm1vdmVUb29sdGlwKGMsZCxvKX1lbHNlIGkub2xkUG9pbnRTaXplKHJbbl0pfX19LHtrZXk6XCJuZXdQb2ludFNpemVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPWkuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZSxzPTA9PT10P2UucGFyZW50Tm9kZS5maXJzdENoaWxkOmUucGFyZW50Tm9kZS5sYXN0Q2hpbGQ7aWYoXCIwXCIhPT1zLmdldEF0dHJpYnV0ZShcImRlZmF1bHQtbWFya2VyLXNpemVcIikpe3ZhciByPXBhcnNlSW50KHMuZ2V0QXR0cmlidXRlKFwiaW5kZXhcIiksMTApO3ZvaWQgMD09PWEmJihhPWkuZ2xvYmFscy5tYXJrZXJzLnNpemVbcl0raS5jb25maWcubWFya2Vycy5ob3Zlci5zaXplT2Zmc2V0KSxhPDAmJihhPTApLHMuc2V0QXR0cmlidXRlKFwiclwiLGEpfX19LHtrZXk6XCJvbGRQb2ludFNpemVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1wYXJzZUZsb2F0KHQuZ2V0QXR0cmlidXRlKFwiZGVmYXVsdC1tYXJrZXItc2l6ZVwiKSk7dC5zZXRBdHRyaWJ1dGUoXCJyXCIsZSl9fSx7a2V5OlwicmVzZXRQb2ludHNTaXplXCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzOm5vdCguYXBleGNoYXJ0cy1zZXJpZXMtY29sbGFwc2VkKSAuYXBleGNoYXJ0cy1tYXJrZXJcIiksZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgaT1wYXJzZUZsb2F0KHRbZV0uZ2V0QXR0cmlidXRlKFwiZGVmYXVsdC1tYXJrZXItc2l6ZVwiKSk7eC5pc051bWJlcihpKSYmaT49MD90W2VdLnNldEF0dHJpYnV0ZShcInJcIixpKTp0W2VdLnNldEF0dHJpYnV0ZShcInJcIiwwKX19fV0pLHR9KCksZnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMudHRDdHg9ZX1yZXR1cm4gcih0LFt7a2V5OlwiZ2V0QXR0clwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHBhcnNlRmxvYXQodC50YXJnZXQuZ2V0QXR0cmlidXRlKGUpKX19LHtrZXk6XCJoYW5kbGVIZWF0VHJlZVRvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmUsaT10Lm9wdCxhPXQueCxzPXQueSxyPXQudHlwZSxvPXRoaXMudHRDdHgsbj10aGlzLnc7aWYoZS50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1cIi5jb25jYXQocixcIi1yZWN0XCIpKSl7dmFyIGw9dGhpcy5nZXRBdHRyKGUsXCJpXCIpLGg9dGhpcy5nZXRBdHRyKGUsXCJqXCIpLGM9dGhpcy5nZXRBdHRyKGUsXCJjeFwiKSxkPXRoaXMuZ2V0QXR0cihlLFwiY3lcIiksZz10aGlzLmdldEF0dHIoZSxcIndpZHRoXCIpLHU9dGhpcy5nZXRBdHRyKGUsXCJoZWlnaHRcIik7aWYoby50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyh7dHRJdGVtczppLnR0SXRlbXMsaTpsLGo6aCxzaGFyZWQ6ITEsZTplfSksbi5nbG9iYWxzLmNhcHR1cmVkU2VyaWVzSW5kZXg9bCxuLmdsb2JhbHMuY2FwdHVyZWREYXRhUG9pbnRJbmRleD1oLGE9YytvLnRvb2x0aXBSZWN0LnR0V2lkdGgvMitnLHM9ZCtvLnRvb2x0aXBSZWN0LnR0SGVpZ2h0LzItdS8yLG8udG9vbHRpcFBvc2l0aW9uLm1vdmVYQ3Jvc3NoYWlycyhjK2cvMiksYT5uLmdsb2JhbHMuZ3JpZFdpZHRoLzImJihhPWMtby50b29sdGlwUmVjdC50dFdpZHRoLzIrZyksby53LmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcil7dmFyIHA9bi5nbG9iYWxzLmRvbS5lbFdyYXAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7YT1uLmdsb2JhbHMuY2xpZW50WC1wLmxlZnQtKGE+bi5nbG9iYWxzLmdyaWRXaWR0aC8yP28udG9vbHRpcFJlY3QudHRXaWR0aDowKSxzPW4uZ2xvYmFscy5jbGllbnRZLXAudG9wLShzPm4uZ2xvYmFscy5ncmlkSGVpZ2h0LzI/by50b29sdGlwUmVjdC50dEhlaWdodDowKX19cmV0dXJue3g6YSx5OnN9fX0se2tleTpcImhhbmRsZU1hcmtlclRvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpLGE9dC5lLHM9dC5vcHQscj10Lngsbz10Lnksbj10aGlzLncsbD10aGlzLnR0Q3R4O2lmKGEudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbWFya2VyXCIpKXt2YXIgaD1wYXJzZUludChzLnBhdGhzLmdldEF0dHJpYnV0ZShcImN4XCIpLDEwKSxjPXBhcnNlSW50KHMucGF0aHMuZ2V0QXR0cmlidXRlKFwiY3lcIiksMTApLGQ9cGFyc2VGbG9hdChzLnBhdGhzLmdldEF0dHJpYnV0ZShcInZhbFwiKSk7aWYoaT1wYXJzZUludChzLnBhdGhzLmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCksZT1wYXJzZUludChzLnBhdGhzLnBhcmVudE5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMSxsLmludGVyc2VjdCl7dmFyIGc9eC5maW5kQW5jZXN0b3Iocy5wYXRocyxcImFwZXhjaGFydHMtc2VyaWVzXCIpO2cmJihlPXBhcnNlSW50KGcuZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIiksMTApKX1pZihsLnRvb2x0aXBMYWJlbHMuZHJhd1Nlcmllc1RleHRzKHt0dEl0ZW1zOnMudHRJdGVtcyxpOmUsajppLHNoYXJlZDohbC5zaG93T25JbnRlcnNlY3QmJm4uY29uZmlnLnRvb2x0aXAuc2hhcmVkLGU6YX0pLFwibW91c2V1cFwiPT09YS50eXBlJiZsLm1hcmtlckNsaWNrKGEsZSxpKSxuLmdsb2JhbHMuY2FwdHVyZWRTZXJpZXNJbmRleD1lLG4uZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4PWkscj1oLG89YytuLmdsb2JhbHMudHJhbnNsYXRlWS0xLjQqbC50b29sdGlwUmVjdC50dEhlaWdodCxsLncuY29uZmlnLnRvb2x0aXAuZm9sbG93Q3Vyc29yKXt2YXIgdT1sLmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO289bC5lLmNsaWVudFkrbi5nbG9iYWxzLnRyYW5zbGF0ZVktdS50b3B9ZDwwJiYobz1jKSxsLm1hcmtlci5lbmxhcmdlQ3VycmVudFBvaW50KGkscy5wYXRocyxyLG8pfXJldHVybnt4OnIseTpvfX19LHtrZXk6XCJoYW5kbGVCYXJUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaSxhPXQuZSxzPXQub3B0LHI9dGhpcy53LG89dGhpcy50dEN0eCxuPW8uZ2V0RWxUb29sdGlwKCksbD0wLGg9MCxjPTAsZD10aGlzLmdldEJhclRvb2x0aXBYWSh7ZTphLG9wdDpzfSk7ZT1kLmk7dmFyIGc9ZC5iYXJIZWlnaHQsdT1kLmo7ci5nbG9iYWxzLmNhcHR1cmVkU2VyaWVzSW5kZXg9ZSxyLmdsb2JhbHMuY2FwdHVyZWREYXRhUG9pbnRJbmRleD11LHIuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJm8udG9vbHRpcFV0aWwuaGFzQmFycygpfHwhci5jb25maWcudG9vbHRpcC5zaGFyZWQ/KGg9ZC54LGM9ZC55LGk9QXJyYXkuaXNBcnJheShyLmNvbmZpZy5zdHJva2Uud2lkdGgpP3IuY29uZmlnLnN0cm9rZS53aWR0aFtlXTpyLmNvbmZpZy5zdHJva2Uud2lkdGgsbD1oKTpyLmdsb2JhbHMuY29tYm9DaGFydHN8fHIuY29uZmlnLnRvb2x0aXAuc2hhcmVkfHwobC89MiksaXNOYU4oYykmJihjPXIuZ2xvYmFscy5zdmdIZWlnaHQtby50b29sdGlwUmVjdC50dEhlaWdodCk7dmFyIHA9cGFyc2VJbnQocy5wYXRocy5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpLDEwKSxmPXIuZ2xvYmFscy5pc011bHRpcGxlWUF4aXM/ci5jb25maWcueWF4aXNbcF0mJnIuY29uZmlnLnlheGlzW3BdLnJldmVyc2VkOnIuY29uZmlnLnlheGlzWzBdLnJldmVyc2VkO2lmKGgrby50b29sdGlwUmVjdC50dFdpZHRoPnIuZ2xvYmFscy5ncmlkV2lkdGgmJiFmP2gtPW8udG9vbHRpcFJlY3QudHRXaWR0aDpoPDAmJihoPTApLG8udy5jb25maWcudG9vbHRpcC5mb2xsb3dDdXJzb3Ipe3ZhciB4PW8uZ2V0RWxHcmlkKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Yz1vLmUuY2xpZW50WS14LnRvcH1udWxsPT09by50b29sdGlwJiYoby50b29sdGlwPXIuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwXCIpKSxyLmNvbmZpZy50b29sdGlwLnNoYXJlZHx8KHIuZ2xvYmFscy5jb21ib0JhckNvdW50PjA/by50b29sdGlwUG9zaXRpb24ubW92ZVhDcm9zc2hhaXJzKGwraS8yKTpvLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWENyb3NzaGFpcnMobCkpLCFvLmZpeGVkVG9vbHRpcCYmKCFyLmNvbmZpZy50b29sdGlwLnNoYXJlZHx8ci5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmby50b29sdGlwVXRpbC5oYXNCYXJzKCkpJiYoZiYmKGgtPW8udG9vbHRpcFJlY3QudHRXaWR0aCk8MCYmKGg9MCksIWZ8fHIuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJm8udG9vbHRpcFV0aWwuaGFzQmFycygpfHwoYz1jK2ctMiooci5nbG9iYWxzLnNlcmllc1tlXVt1XTwwP2c6MCkpLGM9YytyLmdsb2JhbHMudHJhbnNsYXRlWS1vLnRvb2x0aXBSZWN0LnR0SGVpZ2h0LzIsbi5zdHlsZS5sZWZ0PWgrci5nbG9iYWxzLnRyYW5zbGF0ZVgrXCJweFwiLG4uc3R5bGUudG9wPWMrXCJweFwiKX19LHtrZXk6XCJnZXRCYXJUb29sdGlwWFlcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmUsaT10Lm9wdCxhPXRoaXMudyxzPW51bGwscj10aGlzLnR0Q3R4LG89MCxuPTAsbD0wLGg9MCxjPTAsZD1lLnRhcmdldC5jbGFzc0xpc3Q7aWYoZC5jb250YWlucyhcImFwZXhjaGFydHMtYmFyLWFyZWFcIil8fGQuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLWFyZWFcIil8fGQuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWJveFBsb3QtYXJlYVwiKXx8ZC5jb250YWlucyhcImFwZXhjaGFydHMtcmFuZ2ViYXItYXJlYVwiKSl7dmFyIGc9ZS50YXJnZXQsdT1nLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHA9aS5lbEdyaWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZj11LmhlaWdodDtjPXUuaGVpZ2h0O3ZhciB4PXUud2lkdGgsYj1wYXJzZUludChnLmdldEF0dHJpYnV0ZShcImN4XCIpLDEwKSx2PXBhcnNlSW50KGcuZ2V0QXR0cmlidXRlKFwiY3lcIiksMTApO2g9cGFyc2VGbG9hdChnLmdldEF0dHJpYnV0ZShcImJhcldpZHRoXCIpKTt2YXIgbT1cInRvdWNobW92ZVwiPT09ZS50eXBlP2UudG91Y2hlc1swXS5jbGllbnRYOmUuY2xpZW50WDtzPXBhcnNlSW50KGcuZ2V0QXR0cmlidXRlKFwialwiKSwxMCksbz1wYXJzZUludChnLnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xO3ZhciB5PWcuZ2V0QXR0cmlidXRlKFwiZGF0YS1yYW5nZS15MVwiKSx3PWcuZ2V0QXR0cmlidXRlKFwiZGF0YS1yYW5nZS15MlwiKTthLmdsb2JhbHMuY29tYm9DaGFydHMmJihvPXBhcnNlSW50KGcucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSwxMCkpLHIudG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoe3R0SXRlbXM6aS50dEl0ZW1zLGk6byxqOnMseTE6eT9wYXJzZUludCh5LDEwKTpudWxsLHkyOnc/cGFyc2VJbnQodywxMCk6bnVsbCxzaGFyZWQ6IXIuc2hvd09uSW50ZXJzZWN0JiZhLmNvbmZpZy50b29sdGlwLnNoYXJlZCxlOmV9KSxhLmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcj9hLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsPyhuPW0tcC5sZWZ0KzE1LGw9di1yLmRhdGFQb2ludHNEaXZpZGVkSGVpZ2h0K2YvMi1yLnRvb2x0aXBSZWN0LnR0SGVpZ2h0LzIpOihuPWEuZ2xvYmFscy5pc1hOdW1lcmljP2IteC8yOmItci5kYXRhUG9pbnRzRGl2aWRlZFdpZHRoK3gvMixsPWUuY2xpZW50WS1wLnRvcC1yLnRvb2x0aXBSZWN0LnR0SGVpZ2h0LzItMTUpOmEuZ2xvYmFscy5pc0Jhckhvcml6b250YWw/KChuPWIpPHIueHlSYXRpb3MuYmFzZUxpbmVJbnZlcnRlZFkmJihuPWItci50b29sdGlwUmVjdC50dFdpZHRoKSxsPXYtci5kYXRhUG9pbnRzRGl2aWRlZEhlaWdodCtmLzItci50b29sdGlwUmVjdC50dEhlaWdodC8yKToobj1hLmdsb2JhbHMuaXNYTnVtZXJpYz9iLXgvMjpiLXIuZGF0YVBvaW50c0RpdmlkZWRXaWR0aCt4LzIsbD12KX1yZXR1cm57eDpuLHk6bCxiYXJIZWlnaHQ6YyxiYXJXaWR0aDpoLGk6byxqOnN9fX1dKSx0fSgpLHh0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLnR0Q3R4PWV9cmV0dXJuIHIodCxbe2tleTpcImRyYXdYYXhpc1Rvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXRoaXMudHRDdHgsaT1cImJvdHRvbVwiPT09dC5jb25maWcueGF4aXMucG9zaXRpb247ZS54YXhpc09mZlk9aT90Lmdsb2JhbHMuZ3JpZEhlaWdodCsxOi10Lmdsb2JhbHMueEF4aXNIZWlnaHQtdC5jb25maWcueGF4aXMuYXhpc1RpY2tzLmhlaWdodCszO3ZhciBhPWk/XCJhcGV4Y2hhcnRzLXhheGlzdG9vbHRpcCBhcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b21cIjpcImFwZXhjaGFydHMteGF4aXN0b29sdGlwIGFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcFwiLHM9dC5nbG9iYWxzLmRvbS5lbFdyYXA7ZS5pc1hBeGlzVG9vbHRpcEVuYWJsZWQmJihudWxsPT09dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcFwiKSYmKGUueGF4aXNUb29sdGlwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksZS54YXhpc1Rvb2x0aXAuc2V0QXR0cmlidXRlKFwiY2xhc3NcIixhK1wiIGFwZXhjaGFydHMtdGhlbWUtXCIrdC5jb25maWcudG9vbHRpcC50aGVtZSkscy5hcHBlbmRDaGlsZChlLnhheGlzVG9vbHRpcCksZS54YXhpc1Rvb2x0aXBUZXh0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksZS54YXhpc1Rvb2x0aXBUZXh0LmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10ZXh0XCIpLGUueGF4aXNUb29sdGlwVGV4dC5zdHlsZS5mb250RmFtaWx5PXQuY29uZmlnLnhheGlzLnRvb2x0aXAuc3R5bGUuZm9udEZhbWlseXx8dC5jb25maWcuY2hhcnQuZm9udEZhbWlseSxlLnhheGlzVG9vbHRpcFRleHQuc3R5bGUuZm9udFNpemU9dC5jb25maWcueGF4aXMudG9vbHRpcC5zdHlsZS5mb250U2l6ZSxlLnhheGlzVG9vbHRpcC5hcHBlbmRDaGlsZChlLnhheGlzVG9vbHRpcFRleHQpKSl9fSx7a2V5OlwiZHJhd1lheGlzVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMudyxlPXRoaXMudHRDdHgsaT1mdW5jdGlvbihpKXt2YXIgYT10LmNvbmZpZy55YXhpc1tpXS5vcHBvc2l0ZXx8dC5jb25maWcueWF4aXNbaV0uY3Jvc3NoYWlycy5vcHBvc2l0ZTtlLnlheGlzT2ZmWD1hP3QuZ2xvYmFscy5ncmlkV2lkdGgrMToxO3ZhciBzPVwiYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAgYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtXCIuY29uY2F0KGksYT9cIiBhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodFwiOlwiIGFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnRcIik7dC5nbG9iYWxzLnlBeGlzU2FtZVNjYWxlSW5kaWNlcy5tYXAoKGZ1bmN0aW9uKGUsYSl7ZS5tYXAoKGZ1bmN0aW9uKGUsYSl7YT09PWkmJihzKz10LmNvbmZpZy55YXhpc1thXS5zaG93P1wiIFwiOlwiIGFwZXhjaGFydHMteWF4aXN0b29sdGlwLWhpZGRlblwiKX0pKX0pKTt2YXIgcj10Lmdsb2JhbHMuZG9tLmVsV3JhcDtudWxsPT09dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcCBhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1cIi5jb25jYXQoaSkpJiYoZS55YXhpc1Rvb2x0aXA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxlLnlheGlzVG9vbHRpcC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLHMrXCIgYXBleGNoYXJ0cy10aGVtZS1cIit0LmNvbmZpZy50b29sdGlwLnRoZW1lKSxyLmFwcGVuZENoaWxkKGUueWF4aXNUb29sdGlwKSwwPT09aSYmKGUueWF4aXNUb29sdGlwVGV4dD1bXSksZS55YXhpc1Rvb2x0aXBUZXh0W2ldPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksZS55YXhpc1Rvb2x0aXBUZXh0W2ldLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC10ZXh0XCIpLGUueWF4aXNUb29sdGlwLmFwcGVuZENoaWxkKGUueWF4aXNUb29sdGlwVGV4dFtpXSkpfSxhPTA7YTx0LmNvbmZpZy55YXhpcy5sZW5ndGg7YSsrKWkoYSl9fSx7a2V5Olwic2V0WENyb3NzaGFpcldpZHRoXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10aGlzLnR0Q3R4LGk9ZS5nZXRFbFhDcm9zc2hhaXJzKCk7aWYoZS54Y3Jvc3NoYWlyc1dpZHRoPXBhcnNlSW50KHQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgsMTApLHQuZ2xvYmFscy5jb21ib0NoYXJ0cyl7dmFyIGE9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWJhci1hcmVhXCIpO2lmKG51bGwhPT1hJiZcImJhcldpZHRoXCI9PT10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoKXt2YXIgcz1wYXJzZUZsb2F0KGEuZ2V0QXR0cmlidXRlKFwiYmFyV2lkdGhcIikpO2UueGNyb3NzaGFpcnNXaWR0aD1zfWVsc2UgaWYoXCJ0aWNrV2lkdGhcIj09PXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgpe3ZhciByPXQuZ2xvYmFscy5sYWJlbHMubGVuZ3RoO2UueGNyb3NzaGFpcnNXaWR0aD10Lmdsb2JhbHMuZ3JpZFdpZHRoL3J9fWVsc2UgaWYoXCJ0aWNrV2lkdGhcIj09PXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgpe3ZhciBvPXQuZ2xvYmFscy5sYWJlbHMubGVuZ3RoO2UueGNyb3NzaGFpcnNXaWR0aD10Lmdsb2JhbHMuZ3JpZFdpZHRoL299ZWxzZSBpZihcImJhcldpZHRoXCI9PT10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoKXt2YXIgbj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtYmFyLWFyZWFcIik7aWYobnVsbCE9PW4pe3ZhciBsPXBhcnNlRmxvYXQobi5nZXRBdHRyaWJ1dGUoXCJiYXJXaWR0aFwiKSk7ZS54Y3Jvc3NoYWlyc1dpZHRoPWx9ZWxzZSBlLnhjcm9zc2hhaXJzV2lkdGg9MX10Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYoZS54Y3Jvc3NoYWlyc1dpZHRoPTApLG51bGwhPT1pJiZlLnhjcm9zc2hhaXJzV2lkdGg+MCYmaS5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLGUueGNyb3NzaGFpcnNXaWR0aCl9fSx7a2V5OlwiaGFuZGxlWUNyb3NzaGFpclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dGhpcy50dEN0eDtlLnljcm9zc2hhaXJzPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy15Y3Jvc3NoYWlyc1wiKSxlLnljcm9zc2hhaXJzSGlkZGVuPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy15Y3Jvc3NoYWlycy1oaWRkZW5cIil9fSx7a2V5OlwiZHJhd1lheGlzVG9vbHRpcFRleHRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy50dEN0eCxzPXRoaXMudyxyPXMuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzW3RdO2lmKGEueWF4aXNUb29sdGlwc1t0XSl7dmFyIG89YS5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPShlLW8udG9wKSppLnlSYXRpb1t0XSxsPXMuZ2xvYmFscy5tYXhZQXJyW3RdLXMuZ2xvYmFscy5taW5ZQXJyW3RdLGg9cy5nbG9iYWxzLm1pbllBcnJbdF0rKGwtbik7YS50b29sdGlwUG9zaXRpb24ubW92ZVlDcm9zc2hhaXJzKGUtby50b3ApLGEueWF4aXNUb29sdGlwVGV4dFt0XS5pbm5lckhUTUw9cihoKSxhLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWUF4aXNUb29sdGlwKHQpfX19XSksdH0oKSxidD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudzt2YXIgaT10aGlzLnc7dGhpcy50Q29uZmlnPWkuY29uZmlnLnRvb2x0aXAsdGhpcy50b29sdGlwVXRpbD1uZXcgZHQodGhpcyksdGhpcy50b29sdGlwTGFiZWxzPW5ldyBndCh0aGlzKSx0aGlzLnRvb2x0aXBQb3NpdGlvbj1uZXcgdXQodGhpcyksdGhpcy5tYXJrZXI9bmV3IHB0KHRoaXMpLHRoaXMuaW50ZXJzZWN0PW5ldyBmdCh0aGlzKSx0aGlzLmF4ZXNUb29sdGlwPW5ldyB4dCh0aGlzKSx0aGlzLnNob3dPbkludGVyc2VjdD10aGlzLnRDb25maWcuaW50ZXJzZWN0LHRoaXMuc2hvd1Rvb2x0aXBUaXRsZT10aGlzLnRDb25maWcueC5zaG93LHRoaXMuZml4ZWRUb29sdGlwPXRoaXMudENvbmZpZy5maXhlZC5lbmFibGVkLHRoaXMueGF4aXNUb29sdGlwPW51bGwsdGhpcy55YXhpc1RURWxzPW51bGwsdGhpcy5pc0JhclNoYXJlZD0haS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmdGhpcy50Q29uZmlnLnNoYXJlZCx0aGlzLmxhc3RIb3ZlclRpbWU9RGF0ZS5ub3coKX1yZXR1cm4gcih0LFt7a2V5OlwiZ2V0RWxUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHR8fCh0PXRoaXMpLHQudy5nbG9iYWxzLmRvbS5iYXNlRWw/dC53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcFwiKTpudWxsfX0se2tleTpcImdldEVsWENyb3NzaGFpcnNcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy14Y3Jvc3NoYWlyc1wiKX19LHtrZXk6XCJnZXRFbEdyaWRcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1ncmlkXCIpfX0se2tleTpcImRyYXdUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O3RoaXMueHlSYXRpb3M9dCx0aGlzLmlzWEF4aXNUb29sdGlwRW5hYmxlZD1lLmNvbmZpZy54YXhpcy50b29sdGlwLmVuYWJsZWQmJmUuZ2xvYmFscy5heGlzQ2hhcnRzLHRoaXMueWF4aXNUb29sdGlwcz1lLmNvbmZpZy55YXhpcy5tYXAoKGZ1bmN0aW9uKHQsaSl7cmV0dXJuISEodC5zaG93JiZ0LnRvb2x0aXAuZW5hYmxlZCYmZS5nbG9iYWxzLmF4aXNDaGFydHMpfSkpLHRoaXMuYWxsVG9vbHRpcFNlcmllc0dyb3Vwcz1bXSxlLmdsb2JhbHMuYXhpc0NoYXJ0c3x8KHRoaXMuc2hvd1Rvb2x0aXBUaXRsZT0hMSk7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtpZihpLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXBcIiksZS5jb25maWcudG9vbHRpcC5jc3NDbGFzcyYmaS5jbGFzc0xpc3QuYWRkKGUuY29uZmlnLnRvb2x0aXAuY3NzQ2xhc3MpLGkuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdGhlbWUtXCIuY29uY2F0KHRoaXMudENvbmZpZy50aGVtZSkpLGUuZ2xvYmFscy5kb20uZWxXcmFwLmFwcGVuZENoaWxkKGkpLGUuZ2xvYmFscy5heGlzQ2hhcnRzKXt0aGlzLmF4ZXNUb29sdGlwLmRyYXdYYXhpc1Rvb2x0aXAoKSx0aGlzLmF4ZXNUb29sdGlwLmRyYXdZYXhpc1Rvb2x0aXAoKSx0aGlzLmF4ZXNUb29sdGlwLnNldFhDcm9zc2hhaXJXaWR0aCgpLHRoaXMuYXhlc1Rvb2x0aXAuaGFuZGxlWUNyb3NzaGFpcigpO3ZhciBhPW5ldyBWKHRoaXMuY3R4KTt0aGlzLnhBeGlzVGlja3NQb3NpdGlvbnM9YS5nZXRYQXhpc1RpY2tzUG9zaXRpb25zKCl9aWYoIWUuZ2xvYmFscy5jb21ib0NoYXJ0cyYmIXRoaXMudENvbmZpZy5pbnRlcnNlY3QmJlwicmFuZ2VCYXJcIiE9PWUuY29uZmlnLmNoYXJ0LnR5cGV8fHRoaXMudENvbmZpZy5zaGFyZWR8fCh0aGlzLnNob3dPbkludGVyc2VjdD0hMCksMCE9PWUuY29uZmlnLm1hcmtlcnMuc2l6ZSYmMCE9PWUuZ2xvYmFscy5tYXJrZXJzLmxhcmdlc3RTaXplfHx0aGlzLm1hcmtlci5kcmF3RHluYW1pY1BvaW50cyh0aGlzKSxlLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aCE9PWUuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKXt0aGlzLmRhdGFQb2ludHNEaXZpZGVkSGVpZ2h0PWUuZ2xvYmFscy5ncmlkSGVpZ2h0L2UuZ2xvYmFscy5kYXRhUG9pbnRzLHRoaXMuZGF0YVBvaW50c0RpdmlkZWRXaWR0aD1lLmdsb2JhbHMuZ3JpZFdpZHRoL2UuZ2xvYmFscy5kYXRhUG9pbnRzLHRoaXMuc2hvd1Rvb2x0aXBUaXRsZSYmKHRoaXMudG9vbHRpcFRpdGxlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksdGhpcy50b29sdGlwVGl0bGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC10aXRsZVwiKSx0aGlzLnRvb2x0aXBUaXRsZS5zdHlsZS5mb250RmFtaWx5PXRoaXMudENvbmZpZy5zdHlsZS5mb250RmFtaWx5fHxlLmNvbmZpZy5jaGFydC5mb250RmFtaWx5LHRoaXMudG9vbHRpcFRpdGxlLnN0eWxlLmZvbnRTaXplPXRoaXMudENvbmZpZy5zdHlsZS5mb250U2l6ZSxpLmFwcGVuZENoaWxkKHRoaXMudG9vbHRpcFRpdGxlKSk7dmFyIHM9ZS5nbG9iYWxzLnNlcmllcy5sZW5ndGg7KGUuZ2xvYmFscy54eUNoYXJ0c3x8ZS5nbG9iYWxzLmNvbWJvQ2hhcnRzKSYmdGhpcy50Q29uZmlnLnNoYXJlZCYmKHM9dGhpcy5zaG93T25JbnRlcnNlY3Q/MTplLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCksdGhpcy5sZWdlbmRMYWJlbHM9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0XCIpLHRoaXMudHRJdGVtcz10aGlzLmNyZWF0ZVRURWxlbWVudHMocyksdGhpcy5hZGRTVkdFdmVudHMoKX19fSx7a2V5OlwiY3JlYXRlVFRFbGVtZW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLGk9dGhpcy53LGE9W10scz10aGlzLmdldEVsVG9vbHRpcCgpLHI9ZnVuY3Rpb24ocil7dmFyIG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtvLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwXCIpLG8uc3R5bGUub3JkZXI9aS5jb25maWcudG9vbHRpcC5pbnZlcnNlT3JkZXI/dC1yOnIrMSxlLnRDb25maWcuc2hhcmVkJiZlLnRDb25maWcuZW5hYmxlZE9uU2VyaWVzJiZBcnJheS5pc0FycmF5KGUudENvbmZpZy5lbmFibGVkT25TZXJpZXMpJiZlLnRDb25maWcuZW5hYmxlZE9uU2VyaWVzLmluZGV4T2Yocik8MCYmby5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cC1oaWRkZW5cIik7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7bi5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLW1hcmtlclwiKSxuLnN0eWxlLmJhY2tncm91bmRDb2xvcj1pLmdsb2JhbHMuY29sb3JzW3JdLG8uYXBwZW5kQ2hpbGQobik7dmFyIGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtsLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dFwiKSxsLnN0eWxlLmZvbnRGYW1pbHk9ZS50Q29uZmlnLnN0eWxlLmZvbnRGYW1pbHl8fGkuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksbC5zdHlsZS5mb250U2l6ZT1lLnRDb25maWcuc3R5bGUuZm9udFNpemUsW1wieVwiLFwiZ29hbHNcIixcInpcIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtXCIuY29uY2F0KHQsXCItZ3JvdXBcIikpO3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO2kuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LVwiLmNvbmNhdCh0LFwiLWxhYmVsXCIpKSxlLmFwcGVuZENoaWxkKGkpO3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO2EuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LVwiLmNvbmNhdCh0LFwiLXZhbHVlXCIpKSxlLmFwcGVuZENoaWxkKGEpLGwuYXBwZW5kQ2hpbGQoZSl9KSksby5hcHBlbmRDaGlsZChsKSxzLmFwcGVuZENoaWxkKG8pLGEucHVzaChvKX0sbz0wO288dDtvKyspcihvKTtyZXR1cm4gYX19LHtrZXk6XCJhZGRTVkdFdmVudHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuY29uZmlnLmNoYXJ0LnR5cGUsaT10aGlzLmdldEVsVG9vbHRpcCgpLGE9IShcImJhclwiIT09ZSYmXCJjYW5kbGVzdGlja1wiIT09ZSYmXCJib3hQbG90XCIhPT1lJiZcInJhbmdlQmFyXCIhPT1lKSxzPVwiYXJlYVwiPT09ZXx8XCJsaW5lXCI9PT1lfHxcInNjYXR0ZXJcIj09PWV8fFwiYnViYmxlXCI9PT1lfHxcInJhZGFyXCI9PT1lLHI9dC5nbG9iYWxzLmRvbS5QYXBlci5ub2RlLG89dGhpcy5nZXRFbEdyaWQoKTtvJiYodGhpcy5zZXJpZXNCb3VuZD1vLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTt2YXIgbixsPVtdLGg9W10sYz17aG92ZXJBcmVhOnIsZWxHcmlkOm8sdG9vbHRpcEVsOmksdG9vbHRpcFk6bCx0b29sdGlwWDpoLHR0SXRlbXM6dGhpcy50dEl0ZW1zfTtpZih0Lmdsb2JhbHMuYXhpc0NoYXJ0cyYmKHM/bj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOmxvbmdlc3RTZXJpZXM9J3RydWUnXSAuYXBleGNoYXJ0cy1tYXJrZXJcIik6YT9uPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXMgLmFwZXhjaGFydHMtYmFyLWFyZWEsIC5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy1jYW5kbGVzdGljay1hcmVhLCAuYXBleGNoYXJ0cy1zZXJpZXMgLmFwZXhjaGFydHMtYm94UGxvdC1hcmVhLCAuYXBleGNoYXJ0cy1zZXJpZXMgLmFwZXhjaGFydHMtcmFuZ2ViYXItYXJlYVwiKTpcImhlYXRtYXBcIiE9PWUmJlwidHJlZW1hcFwiIT09ZXx8KG49dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy1oZWF0bWFwLCAuYXBleGNoYXJ0cy1zZXJpZXMgLmFwZXhjaGFydHMtdHJlZW1hcFwiKSksbiYmbi5sZW5ndGgpKWZvcih2YXIgZD0wO2Q8bi5sZW5ndGg7ZCsrKWwucHVzaChuW2RdLmdldEF0dHJpYnV0ZShcImN5XCIpKSxoLnB1c2gobltkXS5nZXRBdHRyaWJ1dGUoXCJjeFwiKSk7aWYodC5nbG9iYWxzLnh5Q2hhcnRzJiYhdGhpcy5zaG93T25JbnRlcnNlY3R8fHQuZ2xvYmFscy5jb21ib0NoYXJ0cyYmIXRoaXMuc2hvd09uSW50ZXJzZWN0fHxhJiZ0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSYmdGhpcy50Q29uZmlnLnNoYXJlZCl0aGlzLmFkZFBhdGhzRXZlbnRMaXN0ZW5lcnMoW3JdLGMpO2Vsc2UgaWYoYSYmIXQuZ2xvYmFscy5jb21ib0NoYXJ0c3x8cyYmdGhpcy5zaG93T25JbnRlcnNlY3QpdGhpcy5hZGREYXRhcG9pbnRFdmVudHNMaXN0ZW5lcnMoYyk7ZWxzZSBpZighdC5nbG9iYWxzLmF4aXNDaGFydHN8fFwiaGVhdG1hcFwiPT09ZXx8XCJ0cmVlbWFwXCI9PT1lKXt2YXIgZz10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzXCIpO3RoaXMuYWRkUGF0aHNFdmVudExpc3RlbmVycyhnLGMpfWlmKHRoaXMuc2hvd09uSW50ZXJzZWN0KXt2YXIgdT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtbGluZS1zZXJpZXMgLmFwZXhjaGFydHMtbWFya2VyLCAuYXBleGNoYXJ0cy1hcmVhLXNlcmllcyAuYXBleGNoYXJ0cy1tYXJrZXJcIik7dS5sZW5ndGg+MCYmdGhpcy5hZGRQYXRoc0V2ZW50TGlzdGVuZXJzKHUsYyksdGhpcy50b29sdGlwVXRpbC5oYXNCYXJzKCkmJiF0aGlzLnRDb25maWcuc2hhcmVkJiZ0aGlzLmFkZERhdGFwb2ludEV2ZW50c0xpc3RlbmVycyhjKX19fSx7a2V5OlwiZHJhd0ZpeGVkVG9vbHRpcFJlY3RcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXRoaXMuZ2V0RWxUb29sdGlwKCksaT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGE9aS53aWR0aCsxMCxzPWkuaGVpZ2h0KzEwLHI9dGhpcy50Q29uZmlnLmZpeGVkLm9mZnNldFgsbz10aGlzLnRDb25maWcuZml4ZWQub2Zmc2V0WSxuPXRoaXMudENvbmZpZy5maXhlZC5wb3NpdGlvbi50b0xvd2VyQ2FzZSgpO3JldHVybiBuLmluZGV4T2YoXCJyaWdodFwiKT4tMSYmKHI9cit0Lmdsb2JhbHMuc3ZnV2lkdGgtYSsxMCksbi5pbmRleE9mKFwiYm90dG9tXCIpPi0xJiYobz1vK3QuZ2xvYmFscy5zdmdIZWlnaHQtcy0xMCksZS5zdHlsZS5sZWZ0PXIrXCJweFwiLGUuc3R5bGUudG9wPW8rXCJweFwiLHt4OnIseTpvLHR0V2lkdGg6YSx0dEhlaWdodDpzfX19LHtrZXk6XCJhZGREYXRhcG9pbnRFdmVudHNMaXN0ZW5lcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2VycyAuYXBleGNoYXJ0cy1tYXJrZXIsIC5hcGV4Y2hhcnRzLWJhci1hcmVhLCAuYXBleGNoYXJ0cy1jYW5kbGVzdGljay1hcmVhLCAuYXBleGNoYXJ0cy1ib3hQbG90LWFyZWEsIC5hcGV4Y2hhcnRzLXJhbmdlYmFyLWFyZWFcIik7dGhpcy5hZGRQYXRoc0V2ZW50TGlzdGVuZXJzKGUsdCl9fSx7a2V5OlwiYWRkUGF0aHNFdmVudExpc3RlbmVyc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPXRoaXMsYT1mdW5jdGlvbihhKXt2YXIgcz17cGF0aHM6dFthXSx0b29sdGlwRWw6ZS50b29sdGlwRWwsdG9vbHRpcFk6ZS50b29sdGlwWSx0b29sdGlwWDplLnRvb2x0aXBYLGVsR3JpZDplLmVsR3JpZCxob3ZlckFyZWE6ZS5ob3ZlckFyZWEsdHRJdGVtczplLnR0SXRlbXN9O1tcIm1vdXNlbW92ZVwiLFwibW91c2V1cFwiLFwidG91Y2htb3ZlXCIsXCJtb3VzZW91dFwiLFwidG91Y2hlbmRcIl0ubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdFthXS5hZGRFdmVudExpc3RlbmVyKGUsaS5vblNlcmllc0hvdmVyLmJpbmQoaSxzKSx7Y2FwdHVyZTohMSxwYXNzaXZlOiEwfSl9KSl9LHM9MDtzPHQubGVuZ3RoO3MrKylhKHMpfX0se2tleTpcIm9uU2VyaWVzSG92ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMsYT1EYXRlLm5vdygpLXRoaXMubGFzdEhvdmVyVGltZTthPj0xMDA/dGhpcy5zZXJpZXNIb3Zlcih0LGUpOihjbGVhclRpbWVvdXQodGhpcy5zZXJpZXNIb3ZlclRpbWVvdXQpLHRoaXMuc2VyaWVzSG92ZXJUaW1lb3V0PXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aS5zZXJpZXNIb3Zlcih0LGUpfSksMTAwLWEpKX19LHtrZXk6XCJzZXJpZXNIb3ZlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpczt0aGlzLmxhc3RIb3ZlclRpbWU9RGF0ZS5ub3coKTt2YXIgYT1bXSxzPXRoaXMudztzLmNvbmZpZy5jaGFydC5ncm91cCYmKGE9dGhpcy5jdHguZ2V0R3JvdXBlZENoYXJ0cygpKSxzLmdsb2JhbHMuYXhpc0NoYXJ0cyYmKHMuZ2xvYmFscy5taW5YPT09LTEvMCYmcy5nbG9iYWxzLm1heFg9PT0xLzB8fDA9PT1zLmdsb2JhbHMuZGF0YVBvaW50cyl8fChhLmxlbmd0aD9hLmZvckVhY2goKGZ1bmN0aW9uKGEpe3ZhciBzPWkuZ2V0RWxUb29sdGlwKGEpLHI9e3BhdGhzOnQucGF0aHMsdG9vbHRpcEVsOnMsdG9vbHRpcFk6dC50b29sdGlwWSx0b29sdGlwWDp0LnRvb2x0aXBYLGVsR3JpZDp0LmVsR3JpZCxob3ZlckFyZWE6dC5ob3ZlckFyZWEsdHRJdGVtczphLncuZ2xvYmFscy50b29sdGlwLnR0SXRlbXN9O2Eudy5nbG9iYWxzLm1pblg9PT1pLncuZ2xvYmFscy5taW5YJiZhLncuZ2xvYmFscy5tYXhYPT09aS53Lmdsb2JhbHMubWF4WCYmYS53Lmdsb2JhbHMudG9vbHRpcC5zZXJpZXNIb3ZlckJ5Q29udGV4dCh7Y2hhcnRDdHg6YSx0dEN0eDphLncuZ2xvYmFscy50b29sdGlwLG9wdDpyLGU6ZX0pfSkpOnRoaXMuc2VyaWVzSG92ZXJCeUNvbnRleHQoe2NoYXJ0Q3R4OnRoaXMuY3R4LHR0Q3R4OnRoaXMudy5nbG9iYWxzLnRvb2x0aXAsb3B0OnQsZTplfSkpfX0se2tleTpcInNlcmllc0hvdmVyQnlDb250ZXh0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5jaGFydEN0eCxpPXQudHRDdHgsYT10Lm9wdCxzPXQuZSxyPWUudyxvPXRoaXMuZ2V0RWxUb29sdGlwKCk7aWYobyl7aWYoaS50b29sdGlwUmVjdD17eDowLHk6MCx0dFdpZHRoOm8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgsdHRIZWlnaHQ6by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHR9LGkuZT1zLGkudG9vbHRpcFV0aWwuaGFzQmFycygpJiYhci5nbG9iYWxzLmNvbWJvQ2hhcnRzJiYhaS5pc0JhclNoYXJlZClpZih0aGlzLnRDb25maWcub25EYXRhc2V0SG92ZXIuaGlnaGxpZ2h0RGF0YVNlcmllcyluZXcgTihlKS50b2dnbGVTZXJpZXNPbkhvdmVyKHMscy50YXJnZXQucGFyZW50Tm9kZSk7aS5maXhlZFRvb2x0aXAmJmkuZHJhd0ZpeGVkVG9vbHRpcFJlY3QoKSxyLmdsb2JhbHMuYXhpc0NoYXJ0cz9pLmF4aXNDaGFydHNUb29sdGlwcyh7ZTpzLG9wdDphLHRvb2x0aXBSZWN0OmkudG9vbHRpcFJlY3R9KTppLm5vbkF4aXNDaGFydHNUb29sdGlwcyh7ZTpzLG9wdDphLHRvb2x0aXBSZWN0OmkudG9vbHRpcFJlY3R9KX19fSx7a2V5OlwiYXhpc0NoYXJ0c1Rvb2x0aXBzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaSxhPXQuZSxzPXQub3B0LHI9dGhpcy53LG89cy5lbEdyaWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj1cInRvdWNobW92ZVwiPT09YS50eXBlP2EudG91Y2hlc1swXS5jbGllbnRYOmEuY2xpZW50WCxsPVwidG91Y2htb3ZlXCI9PT1hLnR5cGU/YS50b3VjaGVzWzBdLmNsaWVudFk6YS5jbGllbnRZO2lmKHRoaXMuY2xpZW50WT1sLHRoaXMuY2xpZW50WD1uLHIuZ2xvYmFscy5jYXB0dXJlZFNlcmllc0luZGV4PS0xLHIuZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4PS0xLGw8by50b3B8fGw+by50b3Arby5oZWlnaHQpdGhpcy5oYW5kbGVNb3VzZU91dChzKTtlbHNle2lmKEFycmF5LmlzQXJyYXkodGhpcy50Q29uZmlnLmVuYWJsZWRPblNlcmllcykmJiFyLmNvbmZpZy50b29sdGlwLnNoYXJlZCl7dmFyIGg9cGFyc2VJbnQocy5wYXRocy5nZXRBdHRyaWJ1dGUoXCJpbmRleFwiKSwxMCk7aWYodGhpcy50Q29uZmlnLmVuYWJsZWRPblNlcmllcy5pbmRleE9mKGgpPDApcmV0dXJuIHZvaWQgdGhpcy5oYW5kbGVNb3VzZU91dChzKX12YXIgYz10aGlzLmdldEVsVG9vbHRpcCgpLGQ9dGhpcy5nZXRFbFhDcm9zc2hhaXJzKCksZz1yLmdsb2JhbHMueHlDaGFydHN8fFwiYmFyXCI9PT1yLmNvbmZpZy5jaGFydC50eXBlJiYhci5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmdGhpcy50b29sdGlwVXRpbC5oYXNCYXJzKCkmJnRoaXMudENvbmZpZy5zaGFyZWR8fHIuZ2xvYmFscy5jb21ib0NoYXJ0cyYmdGhpcy50b29sdGlwVXRpbC5oYXNCYXJzKCk7aWYoXCJtb3VzZW1vdmVcIj09PWEudHlwZXx8XCJ0b3VjaG1vdmVcIj09PWEudHlwZXx8XCJtb3VzZXVwXCI9PT1hLnR5cGUpe2lmKHIuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoK3IuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXMubGVuZ3RoPT09ci5nbG9iYWxzLnNlcmllcy5sZW5ndGgpcmV0dXJuO251bGwhPT1kJiZkLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKTt2YXIgdT10aGlzLnlheGlzVG9vbHRpcHMuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4hMD09PXR9KSk7aWYobnVsbCE9PXRoaXMueWNyb3NzaGFpcnMmJnUubGVuZ3RoJiZ0aGlzLnljcm9zc2hhaXJzLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSxnJiYhdGhpcy5zaG93T25JbnRlcnNlY3QpdGhpcy5oYW5kbGVTdGlja3lUb29sdGlwKGEsbixsLHMpO2Vsc2UgaWYoXCJoZWF0bWFwXCI9PT1yLmNvbmZpZy5jaGFydC50eXBlfHxcInRyZWVtYXBcIj09PXIuY29uZmlnLmNoYXJ0LnR5cGUpe3ZhciBwPXRoaXMuaW50ZXJzZWN0LmhhbmRsZUhlYXRUcmVlVG9vbHRpcCh7ZTphLG9wdDpzLHg6ZSx5OmksdHlwZTpyLmNvbmZpZy5jaGFydC50eXBlfSk7ZT1wLngsaT1wLnksYy5zdHlsZS5sZWZ0PWUrXCJweFwiLGMuc3R5bGUudG9wPWkrXCJweFwifWVsc2UgdGhpcy50b29sdGlwVXRpbC5oYXNCYXJzKCkmJnRoaXMuaW50ZXJzZWN0LmhhbmRsZUJhclRvb2x0aXAoe2U6YSxvcHQ6c30pLHRoaXMudG9vbHRpcFV0aWwuaGFzTWFya2VycygpJiZ0aGlzLmludGVyc2VjdC5oYW5kbGVNYXJrZXJUb29sdGlwKHtlOmEsb3B0OnMseDplLHk6aX0pO2lmKHRoaXMueWF4aXNUb29sdGlwcy5sZW5ndGgpZm9yKHZhciBmPTA7ZjxyLmNvbmZpZy55YXhpcy5sZW5ndGg7ZisrKXRoaXMuYXhlc1Rvb2x0aXAuZHJhd1lheGlzVG9vbHRpcFRleHQoZixsLHRoaXMueHlSYXRpb3MpO3MudG9vbHRpcEVsLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKX1lbHNlXCJtb3VzZW91dFwiIT09YS50eXBlJiZcInRvdWNoZW5kXCIhPT1hLnR5cGV8fHRoaXMuaGFuZGxlTW91c2VPdXQocyl9fX0se2tleTpcIm5vbkF4aXNDaGFydHNUb29sdGlwc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZSxpPXQub3B0LGE9dC50b29sdGlwUmVjdCxzPXRoaXMudyxyPWkucGF0aHMuZ2V0QXR0cmlidXRlKFwicmVsXCIpLG89dGhpcy5nZXRFbFRvb2x0aXAoKSxuPXMuZ2xvYmFscy5kb20uZWxXcmFwLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKFwibW91c2Vtb3ZlXCI9PT1lLnR5cGV8fFwidG91Y2htb3ZlXCI9PT1lLnR5cGUpe28uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpLHRoaXMudG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoe3R0SXRlbXM6aS50dEl0ZW1zLGk6cGFyc2VJbnQociwxMCktMSxzaGFyZWQ6ITF9KTt2YXIgbD1zLmdsb2JhbHMuY2xpZW50WC1uLmxlZnQtYS50dFdpZHRoLzIsaD1zLmdsb2JhbHMuY2xpZW50WS1uLnRvcC1hLnR0SGVpZ2h0LTEwO2lmKG8uc3R5bGUubGVmdD1sK1wicHhcIixvLnN0eWxlLnRvcD1oK1wicHhcIixzLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyKXt2YXIgYz1yLTEsZD0oMCxzLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyKSh0aGlzLmxlZ2VuZExhYmVsc1tjXS5nZXRBdHRyaWJ1dGUoXCJkYXRhOmRlZmF1bHQtdGV4dFwiKSx7c2VyaWVzSW5kZXg6YyxkYXRhUG9pbnRJbmRleDpjLHc6c30pO3RoaXMubGVnZW5kTGFiZWxzW2NdLmlubmVySFRNTD1kfX1lbHNlXCJtb3VzZW91dFwiIT09ZS50eXBlJiZcInRvdWNoZW5kXCIhPT1lLnR5cGV8fChvLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSxzLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyJiZ0aGlzLmxlZ2VuZExhYmVscy5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LmdldEF0dHJpYnV0ZShcImRhdGE6ZGVmYXVsdC10ZXh0XCIpO3QuaW5uZXJIVE1MPWRlY29kZVVSSUNvbXBvbmVudChlKX0pKSl9fSx7a2V5OlwiaGFuZGxlU3RpY2t5VG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPXRoaXMudyxyPXRoaXMudG9vbHRpcFV0aWwuZ2V0TmVhcmVzdFZhbHVlcyh7Y29udGV4dDp0aGlzLGhvdmVyQXJlYTphLmhvdmVyQXJlYSxlbEdyaWQ6YS5lbEdyaWQsY2xpZW50WDplLGNsaWVudFk6aX0pLG89ci5qLG49ci5jYXB0dXJlZFNlcmllcztzLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmNsdWRlcyhuKSYmKG49bnVsbCk7dmFyIGw9YS5lbEdyaWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoci5ob3Zlclg8MHx8ci5ob3Zlclg+bC53aWR0aCl0aGlzLmhhbmRsZU1vdXNlT3V0KGEpO2Vsc2UgaWYobnVsbCE9PW4pdGhpcy5oYW5kbGVTdGlja3lDYXB0dXJlZFNlcmllcyh0LG4sYSxvKTtlbHNlIGlmKHRoaXMudG9vbHRpcFV0aWwuaXNYb3ZlcmxhcChvKXx8cy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCl7dmFyIGg9cy5nbG9iYWxzLnNlcmllcy5maW5kSW5kZXgoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIXMuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluY2x1ZGVzKGUpfSkpO3RoaXMuY3JlYXRlKHQsdGhpcyxoLG8sYS50dEl0ZW1zKX19fSx7a2V5OlwiaGFuZGxlU3RpY2t5Q2FwdHVyZWRTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz10aGlzLnc7aWYoIXRoaXMudENvbmZpZy5zaGFyZWQmJm51bGw9PT1zLmdsb2JhbHMuc2VyaWVzW2VdW2FdKXJldHVybiB2b2lkIHRoaXMuaGFuZGxlTW91c2VPdXQoaSk7aWYodm9pZCAwIT09cy5nbG9iYWxzLnNlcmllc1tlXVthXSl0aGlzLnRDb25maWcuc2hhcmVkJiZ0aGlzLnRvb2x0aXBVdGlsLmlzWG92ZXJsYXAoYSkmJnRoaXMudG9vbHRpcFV0aWwuaXNJbml0aWFsU2VyaWVzU2FtZUxlbigpP3RoaXMuY3JlYXRlKHQsdGhpcyxlLGEsaS50dEl0ZW1zKTp0aGlzLmNyZWF0ZSh0LHRoaXMsZSxhLGkudHRJdGVtcywhMSk7ZWxzZSBpZih0aGlzLnRvb2x0aXBVdGlsLmlzWG92ZXJsYXAoYSkpe3ZhciByPXMuZ2xvYmFscy5zZXJpZXMuZmluZEluZGV4KChmdW5jdGlvbih0LGUpe3JldHVybiFzLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmNsdWRlcyhlKX0pKTt0aGlzLmNyZWF0ZSh0LHRoaXMscixhLGkudHRJdGVtcyl9fX0se2tleTpcImRlYWN0aXZhdGVIb3ZlckZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMudyxlPW5ldyBtKHRoaXMuY3R4KSxpPXQuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiLmFwZXhjaGFydHMtYmFyLWFyZWFcIiksYT0wO2E8aS5sZW5ndGg7YSsrKWUucGF0aE1vdXNlTGVhdmUoaVthXSl9fSx7a2V5OlwiaGFuZGxlTW91c2VPdXRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10aGlzLmdldEVsWENyb3NzaGFpcnMoKTtpZih0LnRvb2x0aXBFbC5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksdGhpcy5kZWFjdGl2YXRlSG92ZXJGaWx0ZXIoKSxcImJ1YmJsZVwiIT09ZS5jb25maWcuY2hhcnQudHlwZSYmdGhpcy5tYXJrZXIucmVzZXRQb2ludHNTaXplKCksbnVsbCE9PWkmJmkuY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpLG51bGwhPT10aGlzLnljcm9zc2hhaXJzJiZ0aGlzLnljcm9zc2hhaXJzLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSx0aGlzLmlzWEF4aXNUb29sdGlwRW5hYmxlZCYmdGhpcy54YXhpc1Rvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpLHRoaXMueWF4aXNUb29sdGlwcy5sZW5ndGgpe251bGw9PT10aGlzLnlheGlzVFRFbHMmJih0aGlzLnlheGlzVFRFbHM9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcFwiKSk7Zm9yKHZhciBhPTA7YTx0aGlzLnlheGlzVFRFbHMubGVuZ3RoO2ErKyl0aGlzLnlheGlzVFRFbHNbYV0uY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpfWUuY29uZmlnLmxlZ2VuZC50b29sdGlwSG92ZXJGb3JtYXR0ZXImJnRoaXMubGVnZW5kTGFiZWxzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2V0QXR0cmlidXRlKFwiZGF0YTpkZWZhdWx0LXRleHRcIik7dC5pbm5lckhUTUw9ZGVjb2RlVVJJQ29tcG9uZW50KGUpfSkpfX0se2tleTpcIm1hcmtlckNsaWNrXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudztcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmNvbmZpZy5jaGFydC5ldmVudHMubWFya2VyQ2xpY2smJmEuY29uZmlnLmNoYXJ0LmV2ZW50cy5tYXJrZXJDbGljayh0LHRoaXMuY3R4LHtzZXJpZXNJbmRleDplLGRhdGFQb2ludEluZGV4OmksdzphfSksdGhpcy5jdHguZXZlbnRzLmZpcmVFdmVudChcIm1hcmtlckNsaWNrXCIsW3QsdGhpcy5jdHgse3Nlcmllc0luZGV4OmUsZGF0YVBvaW50SW5kZXg6aSx3OmF9XSl9fSx7a2V5OlwiY3JlYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCxpLGEscyxyKXt2YXIgbyxuLGwsaCxjLGQsZyx1LHAsZix4LGIsdix5LHcsayxBPWFyZ3VtZW50cy5sZW5ndGg+NSYmdm9pZCAwIT09YXJndW1lbnRzWzVdP2FyZ3VtZW50c1s1XTpudWxsLFM9dGhpcy53LEM9aTtcIm1vdXNldXBcIj09PXQudHlwZSYmdGhpcy5tYXJrZXJDbGljayh0LGEscyksbnVsbD09PUEmJihBPXRoaXMudENvbmZpZy5zaGFyZWQpO3ZhciBMPXRoaXMudG9vbHRpcFV0aWwuaGFzTWFya2VycyhhKSxQPXRoaXMudG9vbHRpcFV0aWwuZ2V0RWxCYXJzKCk7aWYoUy5jb25maWcubGVnZW5kLnRvb2x0aXBIb3ZlckZvcm1hdHRlcil7dmFyIEk9Uy5jb25maWcubGVnZW5kLnRvb2x0aXBIb3ZlckZvcm1hdHRlcixUPUFycmF5LmZyb20odGhpcy5sZWdlbmRMYWJlbHMpO1QuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRBdHRyaWJ1dGUoXCJkYXRhOmRlZmF1bHQtdGV4dFwiKTt0LmlubmVySFRNTD1kZWNvZGVVUklDb21wb25lbnQoZSl9KSk7Zm9yKHZhciBNPTA7TTxULmxlbmd0aDtNKyspe3ZhciBYPVRbTV0sej1wYXJzZUludChYLmdldEF0dHJpYnV0ZShcImlcIiksMTApLEU9ZGVjb2RlVVJJQ29tcG9uZW50KFguZ2V0QXR0cmlidXRlKFwiZGF0YTpkZWZhdWx0LXRleHRcIikpLFk9SShFLHtzZXJpZXNJbmRleDpBP3o6YSxkYXRhUG9pbnRJbmRleDpzLHc6U30pO2lmKEEpWC5pbm5lckhUTUw9Uy5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZih6KTwwP1k6RTtlbHNlIGlmKFguaW5uZXJIVE1MPXo9PT1hP1k6RSxhPT09eilicmVha319dmFyIEY9ZShlKHt0dEl0ZW1zOnIsaTphLGo6c30sdm9pZCAwIT09KG51bGw9PT0obz1TLmdsb2JhbHMuc2VyaWVzUmFuZ2UpfHx2b2lkIDA9PT1vfHxudWxsPT09KG49b1thXSl8fHZvaWQgMD09PW58fG51bGw9PT0obD1uW3NdKXx8dm9pZCAwPT09bHx8bnVsbD09PShoPWwueVswXSl8fHZvaWQgMD09PWg/dm9pZCAwOmgueTEpJiZ7eTE6bnVsbD09PShjPVMuZ2xvYmFscy5zZXJpZXNSYW5nZSl8fHZvaWQgMD09PWN8fG51bGw9PT0oZD1jW2FdKXx8dm9pZCAwPT09ZHx8bnVsbD09PShnPWRbc10pfHx2b2lkIDA9PT1nfHxudWxsPT09KHU9Zy55WzBdKXx8dm9pZCAwPT09dT92b2lkIDA6dS55MX0pLHZvaWQgMCE9PShudWxsPT09KHA9Uy5nbG9iYWxzLnNlcmllc1JhbmdlKXx8dm9pZCAwPT09cHx8bnVsbD09PShmPXBbYV0pfHx2b2lkIDA9PT1mfHxudWxsPT09KHg9ZltzXSl8fHZvaWQgMD09PXh8fG51bGw9PT0oYj14LnlbMF0pfHx2b2lkIDA9PT1iP3ZvaWQgMDpiLnkyKSYme3kyOm51bGw9PT0odj1TLmdsb2JhbHMuc2VyaWVzUmFuZ2UpfHx2b2lkIDA9PT12fHxudWxsPT09KHk9dlthXSl8fHZvaWQgMD09PXl8fG51bGw9PT0odz15W3NdKXx8dm9pZCAwPT09d3x8bnVsbD09PShrPXcueVswXSl8fHZvaWQgMD09PWs/dm9pZCAwOmsueTJ9KTtpZihBKXtpZihDLnRvb2x0aXBMYWJlbHMuZHJhd1Nlcmllc1RleHRzKGUoZSh7fSxGKSx7fSx7c2hhcmVkOiF0aGlzLnNob3dPbkludGVyc2VjdCYmdGhpcy50Q29uZmlnLnNoYXJlZH0pKSxMKVMuZ2xvYmFscy5tYXJrZXJzLmxhcmdlc3RTaXplPjA/Qy5tYXJrZXIuZW5sYXJnZVBvaW50cyhzKTpDLnRvb2x0aXBQb3NpdGlvbi5tb3ZlRHluYW1pY1BvaW50c09uSG92ZXIocyk7ZWxzZSBpZih0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSYmKHRoaXMuYmFyU2VyaWVzSGVpZ2h0PXRoaXMudG9vbHRpcFV0aWwuZ2V0QmFyc0hlaWdodChQKSx0aGlzLmJhclNlcmllc0hlaWdodD4wKSl7dmFyIFI9bmV3IG0odGhpcy5jdHgpLEQ9Uy5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoXCIuYXBleGNoYXJ0cy1iYXItYXJlYVtqPSdcIi5jb25jYXQocyxcIiddXCIpKTt0aGlzLmRlYWN0aXZhdGVIb3ZlckZpbHRlcigpLHRoaXMudG9vbHRpcFBvc2l0aW9uLm1vdmVTdGlja3lUb29sdGlwT3ZlckJhcnMocyxhKTtmb3IodmFyIEg9MDtIPEQubGVuZ3RoO0grKylSLnBhdGhNb3VzZUVudGVyKERbSF0pfX1lbHNlIEMudG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoZSh7c2hhcmVkOiExfSxGKSksdGhpcy50b29sdGlwVXRpbC5oYXNCYXJzKCkmJkMudG9vbHRpcFBvc2l0aW9uLm1vdmVTdGlja3lUb29sdGlwT3ZlckJhcnMocyxhKSxMJiZDLnRvb2x0aXBQb3NpdGlvbi5tb3ZlTWFya2VycyhhLHMpfX1dKSx0fSgpLHZ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmJhckN0eD1lLHRoaXMudG90YWxGb3JtYXR0ZXI9dGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGF0YUxhYmVscy50b3RhbC5mb3JtYXR0ZXIsdGhpcy50b3RhbEZvcm1hdHRlcnx8KHRoaXMudG90YWxGb3JtYXR0ZXI9dGhpcy53LmNvbmZpZy5kYXRhTGFiZWxzLmZvcm1hdHRlcil9cmV0dXJuIHIodCxbe2tleTpcImhhbmRsZUJhckRhdGFMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LngsaT10LnksYT10LnkxLHM9dC55MixyPXQuaSxvPXQuaixuPXQucmVhbEluZGV4LGw9dC5ncm91cEluZGV4LGg9dC5zZXJpZXMsYz10LmJhckhlaWdodCxkPXQuYmFyV2lkdGgsZz10LmJhcllQb3NpdGlvbix1PXQudmlzaWJsZVNlcmllcyxwPXQucmVuZGVyZWRQYXRoLGY9dGhpcy53LHg9bmV3IG0odGhpcy5iYXJDdHguY3R4KSxiPUFycmF5LmlzQXJyYXkodGhpcy5iYXJDdHguc3Ryb2tlV2lkdGgpP3RoaXMuYmFyQ3R4LnN0cm9rZVdpZHRoW25dOnRoaXMuYmFyQ3R4LnN0cm9rZVdpZHRoLHY9ZStwYXJzZUZsb2F0KGQqdSkseT1pK3BhcnNlRmxvYXQoYyp1KTtmLmdsb2JhbHMuaXNYTnVtZXJpYyYmIWYuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJih2PWUrcGFyc2VGbG9hdChkKih1KzEpKSx5PWkrcGFyc2VGbG9hdChjKih1KzEpKS1iKTt2YXIgdyxrPW51bGwsQT1lLFM9aSxDPXt9LEw9Zi5jb25maWcuZGF0YUxhYmVscyxQPXRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuZGF0YUxhYmVscyxJPXRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuZGF0YUxhYmVscy50b3RhbDt2b2lkIDAhPT1nJiZ0aGlzLmJhckN0eC5pc1JhbmdlQmFyJiYoeT1nLFM9Zyk7dmFyIFQ9TC5vZmZzZXRYLE09TC5vZmZzZXRZLFg9e3dpZHRoOjAsaGVpZ2h0OjB9O2lmKGYuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZCl7dmFyIHo9dGhpcy5iYXJDdHguc2VyaWVzW3JdW29dO1g9eC5nZXRUZXh0UmVjdHMoZi5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF0oeikscGFyc2VGbG9hdChMLnN0eWxlLmZvbnRTaXplKSl9dmFyIEU9e3g6ZSx5OmksaTpyLGo6byxyZWFsSW5kZXg6bixncm91cEluZGV4Omx8fC0xLHJlbmRlcmVkUGF0aDpwLGJjeDp2LGJjeTp5LGJhckhlaWdodDpjLGJhcldpZHRoOmQsdGV4dFJlY3RzOlgsc3Ryb2tlV2lkdGg6YixkYXRhTGFiZWxzWDpBLGRhdGFMYWJlbHNZOlMsZGF0YUxhYmVsc0NvbmZpZzpMLGJhckRhdGFMYWJlbHNDb25maWc6UCxiYXJUb3RhbERhdGFMYWJlbHNDb25maWc6SSxvZmZYOlQsb2ZmWTpNfTtyZXR1cm4gQz10aGlzLmJhckN0eC5pc0hvcml6b250YWw/dGhpcy5jYWxjdWxhdGVCYXJzRGF0YUxhYmVsc1Bvc2l0aW9uKEUpOnRoaXMuY2FsY3VsYXRlQ29sdW1uc0RhdGFMYWJlbHNQb3NpdGlvbihFKSxwLmF0dHIoe2N5OkMuYmN5LGN4OkMuYmN4LGo6byx2YWw6aFtyXVtvXSxiYXJIZWlnaHQ6YyxiYXJXaWR0aDpkfSksdz10aGlzLmRyYXdDYWxjdWxhdGVkRGF0YUxhYmVscyh7eDpDLmRhdGFMYWJlbHNYLHk6Qy5kYXRhTGFiZWxzWSx2YWw6dGhpcy5iYXJDdHguaXNSYW5nZUJhcj9bYSxzXTpoW3JdW29dLGk6bixqOm8sYmFyV2lkdGg6ZCxiYXJIZWlnaHQ6Yyx0ZXh0UmVjdHM6WCxkYXRhTGFiZWxzQ29uZmlnOkx9KSxmLmNvbmZpZy5jaGFydC5zdGFja2VkJiZJLmVuYWJsZWQmJihrPXRoaXMuZHJhd1RvdGFsRGF0YUxhYmVscyh7eDpDLnRvdGFsRGF0YUxhYmVsc1gseTpDLnRvdGFsRGF0YUxhYmVsc1kscmVhbEluZGV4Om4sdGV4dEFuY2hvcjpDLnRvdGFsRGF0YUxhYmVsc0FuY2hvcix2YWw6dGhpcy5nZXRTdGFja2VkVG90YWxEYXRhTGFiZWwoe3JlYWxJbmRleDpuLGo6b30pLGRhdGFMYWJlbHNDb25maWc6TCxiYXJUb3RhbERhdGFMYWJlbHNDb25maWc6SX0pKSx7ZGF0YUxhYmVsczp3LHRvdGFsRGF0YUxhYmVsczprfX19LHtrZXk6XCJnZXRTdGFja2VkVG90YWxEYXRhTGFiZWxcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgaT10LnJlYWxJbmRleCxhPXQuaixzPXRoaXMudyxyPXRoaXMuYmFyQ3R4LnN0YWNrZWRTZXJpZXNUb3RhbHNbYV07cmV0dXJuIHRoaXMudG90YWxGb3JtYXR0ZXImJihyPXRoaXMudG90YWxGb3JtYXR0ZXIocixlKGUoe30scykse30se3Nlcmllc0luZGV4OmksZGF0YVBvaW50SW5kZXg6YSx3OnN9KSkpLHJ9fSx7a2V5OlwiY2FsY3VsYXRlQ29sdW1uc0RhdGFMYWJlbHNQb3NpdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGksYSxzPXRoaXMudyxyPXQuaSxvPXQuaixuPXQucmVhbEluZGV4LGw9dC5ncm91cEluZGV4LGg9dC55LGM9dC5iY3gsZD10LmJhcldpZHRoLGc9dC5iYXJIZWlnaHQsdT10LnRleHRSZWN0cyxwPXQuZGF0YUxhYmVsc1ksZj10LmRhdGFMYWJlbHNDb25maWcseD10LmJhckRhdGFMYWJlbHNDb25maWcsYj10LmJhclRvdGFsRGF0YUxhYmVsc0NvbmZpZyx2PXQuc3Ryb2tlV2lkdGgseT10Lm9mZlgsdz10Lm9mZlk7Zz1NYXRoLmFicyhnKTt2YXIgaz1cInZlcnRpY2FsXCI9PT1zLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGF0YUxhYmVscy5vcmllbnRhdGlvbjtjPWMtdi8yKygtMSE9PWw/bCpkOjApO3ZhciBBPXMuZ2xvYmFscy5ncmlkV2lkdGgvcy5nbG9iYWxzLmRhdGFQb2ludHM7aWYoZT1zLmdsb2JhbHMuaXNYTnVtZXJpYz9jLWQvMit5OmMtQStkLzIreSxrKXtlPWUrdS5oZWlnaHQvMi12LzItMn12YXIgUz10aGlzLmJhckN0eC5zZXJpZXNbcl1bb108MCxDPWg7c3dpdGNoKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQmJihDPWgtZysoUz8yKmc6MCksaC09ZykseC5wb3NpdGlvbil7Y2FzZVwiY2VudGVyXCI6cD1rP1M/QytnLzIrdzpDK2cvMi13OlM/Qy1nLzIrdS5oZWlnaHQvMit3OkMrZy8yK3UuaGVpZ2h0LzItdzticmVhaztjYXNlXCJib3R0b21cIjpwPWs/Uz9DK2crdzpDK2ctdzpTP0MtZyt1LmhlaWdodCt2K3c6QytnLXUuaGVpZ2h0LzIrdi13O2JyZWFrO2Nhc2VcInRvcFwiOnA9az9TP0MrdzpDLXc6Uz9DLXUuaGVpZ2h0LzItdzpDK3UuaGVpZ2h0K3d9aWYodGhpcy5iYXJDdHgubGFzdEFjdGl2ZUJhclNlcmllSW5kZXg9PT1uJiZiLmVuYWJsZWQpe3ZhciBMPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCkuZ2V0VGV4dFJlY3RzKHRoaXMuZ2V0U3RhY2tlZFRvdGFsRGF0YUxhYmVsKHtyZWFsSW5kZXg6bixqOm99KSxmLmZvbnRTaXplKTtpPVM/Qy1MLmhlaWdodC8yLXctYi5vZmZzZXRZKzE4OkMrTC5oZWlnaHQrdytiLm9mZnNldFktMTgsYT1lK2Iub2Zmc2V0WH1yZXR1cm4gcy5jb25maWcuY2hhcnQuc3RhY2tlZHx8KHA8MD9wPTArdjpwK3UuaGVpZ2h0LzM+cy5nbG9iYWxzLmdyaWRIZWlnaHQmJihwPXMuZ2xvYmFscy5ncmlkSGVpZ2h0LXYpKSx7YmN4OmMsYmN5OmgsZGF0YUxhYmVsc1g6ZSxkYXRhTGFiZWxzWTpwLHRvdGFsRGF0YUxhYmVsc1g6YSx0b3RhbERhdGFMYWJlbHNZOmksdG90YWxEYXRhTGFiZWxzQW5jaG9yOlwibWlkZGxlXCJ9fX0se2tleTpcImNhbGN1bGF0ZUJhcnNEYXRhTGFiZWxzUG9zaXRpb25cIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10LngsYT10Lmkscz10Lmoscj10LnJlYWxJbmRleCxvPXQuZ3JvdXBJbmRleCxuPXQuYmN5LGw9dC5iYXJIZWlnaHQsaD10LmJhcldpZHRoLGM9dC50ZXh0UmVjdHMsZD10LmRhdGFMYWJlbHNYLGc9dC5zdHJva2VXaWR0aCx1PXQuZGF0YUxhYmVsc0NvbmZpZyxwPXQuYmFyRGF0YUxhYmVsc0NvbmZpZyxmPXQuYmFyVG90YWxEYXRhTGFiZWxzQ29uZmlnLHg9dC5vZmZYLGI9dC5vZmZZLHY9ZS5nbG9iYWxzLmdyaWRIZWlnaHQvZS5nbG9iYWxzLmRhdGFQb2ludHM7aD1NYXRoLmFicyhoKTt2YXIgeSx3LGs9KG4rPS0xIT09bz9vKmw6MCktKHRoaXMuYmFyQ3R4LmlzUmFuZ2VCYXI/MDp2KStsLzIrYy5oZWlnaHQvMitiLTMsQT1cInN0YXJ0XCIsUz10aGlzLmJhckN0eC5zZXJpZXNbYV1bc108MCxDPWk7c3dpdGNoKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQmJihDPWkraC0oUz8yKmg6MCksaT1lLmdsb2JhbHMuZ3JpZFdpZHRoLWgpLHAucG9zaXRpb24pe2Nhc2VcImNlbnRlclwiOmQ9Uz9DK2gvMi14Ok1hdGgubWF4KGMud2lkdGgvMixDLWgvMikreDticmVhaztjYXNlXCJib3R0b21cIjpkPVM/QytoLWctTWF0aC5yb3VuZChjLndpZHRoLzIpLXg6Qy1oK2crTWF0aC5yb3VuZChjLndpZHRoLzIpK3g7YnJlYWs7Y2FzZVwidG9wXCI6ZD1TP0MtZytNYXRoLnJvdW5kKGMud2lkdGgvMikteDpDLWctTWF0aC5yb3VuZChjLndpZHRoLzIpK3h9aWYodGhpcy5iYXJDdHgubGFzdEFjdGl2ZUJhclNlcmllSW5kZXg9PT1yJiZmLmVuYWJsZWQpe3ZhciBMPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCkuZ2V0VGV4dFJlY3RzKHRoaXMuZ2V0U3RhY2tlZFRvdGFsRGF0YUxhYmVsKHtyZWFsSW5kZXg6cixqOnN9KSx1LmZvbnRTaXplKTtTPyh5PUMtZytNYXRoLnJvdW5kKEwud2lkdGgvMikteC1mLm9mZnNldFgtMTUsQT1cImVuZFwiKTp5PUMtZy1NYXRoLnJvdW5kKEwud2lkdGgvMikreCtmLm9mZnNldFgrMTUsdz1rK2Yub2Zmc2V0WX1yZXR1cm4gZS5jb25maWcuY2hhcnQuc3RhY2tlZHx8KGQ8MD9kPWQrYy53aWR0aCtnOmQrYy53aWR0aC8yPmUuZ2xvYmFscy5ncmlkV2lkdGgmJihkPWUuZ2xvYmFscy5ncmlkV2lkdGgtYy53aWR0aC1nKSkse2JjeDppLGJjeTpuLGRhdGFMYWJlbHNYOmQsZGF0YUxhYmVsc1k6ayx0b3RhbERhdGFMYWJlbHNYOnksdG90YWxEYXRhTGFiZWxzWTp3LHRvdGFsRGF0YUxhYmVsc0FuY2hvcjpBfX19LHtrZXk6XCJkcmF3Q2FsY3VsYXRlZERhdGFMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgaT10LngsYT10Lnkscz10LnZhbCxyPXQuaSxvPXQuaixuPXQudGV4dFJlY3RzLGw9dC5iYXJIZWlnaHQsaD10LmJhcldpZHRoLGM9dC5kYXRhTGFiZWxzQ29uZmlnLGQ9dGhpcy53LGc9XCJyb3RhdGUoMClcIjtcInZlcnRpY2FsXCI9PT1kLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGF0YUxhYmVscy5vcmllbnRhdGlvbiYmKGc9XCJyb3RhdGUoLTkwLCBcIi5jb25jYXQoaSxcIiwgXCIpLmNvbmNhdChhLFwiKVwiKSk7dmFyIHU9bmV3IE8odGhpcy5iYXJDdHguY3R4KSxwPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCksZj1jLmZvcm1hdHRlcix4PW51bGwsYj1kLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHIpPi0xO2lmKGMuZW5hYmxlZCYmIWIpe3g9cC5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGEtbGFiZWxzXCIsdHJhbnNmb3JtOmd9KTt2YXIgdj1cIlwiO3ZvaWQgMCE9PXMmJih2PWYocyxlKGUoe30sZCkse30se3Nlcmllc0luZGV4OnIsZGF0YVBvaW50SW5kZXg6byx3OmR9KSkpLCFzJiZkLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuaGlkZVplcm9CYXJzV2hlbkdyb3VwZWQmJih2PVwiXCIpO3ZhciB5PWQuZ2xvYmFscy5zZXJpZXNbcl1bb108MCx3PWQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kYXRhTGFiZWxzLnBvc2l0aW9uO2lmKFwidmVydGljYWxcIj09PWQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kYXRhTGFiZWxzLm9yaWVudGF0aW9uJiYoXCJ0b3BcIj09PXcmJihjLnRleHRBbmNob3I9eT9cImVuZFwiOlwic3RhcnRcIiksXCJjZW50ZXJcIj09PXcmJihjLnRleHRBbmNob3I9XCJtaWRkbGVcIiksXCJib3R0b21cIj09PXcmJihjLnRleHRBbmNob3I9eT9cImVuZFwiOlwic3RhcnRcIikpLHRoaXMuYmFyQ3R4LmlzUmFuZ2VCYXImJnRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuZGF0YUxhYmVscy5oaWRlT3ZlcmZsb3dpbmdMYWJlbHMpaDxwLmdldFRleHRSZWN0cyh2LHBhcnNlRmxvYXQoYy5zdHlsZS5mb250U2l6ZSkpLndpZHRoJiYodj1cIlwiKTtkLmNvbmZpZy5jaGFydC5zdGFja2VkJiZ0aGlzLmJhckN0eC5iYXJPcHRpb25zLmRhdGFMYWJlbHMuaGlkZU92ZXJmbG93aW5nTGFiZWxzJiYodGhpcy5iYXJDdHguaXNIb3Jpem9udGFsP24ud2lkdGgvMS42Pk1hdGguYWJzKGgpJiYodj1cIlwiKTpuLmhlaWdodC8xLjY+TWF0aC5hYnMobCkmJih2PVwiXCIpKTt2YXIgaz1lKHt9LGMpO3RoaXMuYmFyQ3R4LmlzSG9yaXpvbnRhbCYmczwwJiYoXCJzdGFydFwiPT09Yy50ZXh0QW5jaG9yP2sudGV4dEFuY2hvcj1cImVuZFwiOlwiZW5kXCI9PT1jLnRleHRBbmNob3ImJihrLnRleHRBbmNob3I9XCJzdGFydFwiKSksdS5wbG90RGF0YUxhYmVsc1RleHQoe3g6aSx5OmEsdGV4dDp2LGk6cixqOm8scGFyZW50OngsZGF0YUxhYmVsc0NvbmZpZzprLGFsd2F5c0RyYXdEYXRhTGFiZWw6ITAsb2Zmc2V0Q29ycmVjdGlvbjohMH0pfXJldHVybiB4fX0se2tleTpcImRyYXdUb3RhbERhdGFMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXQueCxhPXQueSxzPXQudmFsLHI9dC5yZWFsSW5kZXgsbz10LnRleHRBbmNob3Isbj10LmJhclRvdGFsRGF0YUxhYmVsc0NvbmZpZyxsPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCk7cmV0dXJuIG4uZW5hYmxlZCYmdm9pZCAwIT09aSYmdm9pZCAwIT09YSYmdGhpcy5iYXJDdHgubGFzdEFjdGl2ZUJhclNlcmllSW5kZXg9PT1yJiYoZT1sLmRyYXdUZXh0KHt4OmkseTphLGZvcmVDb2xvcjpuLnN0eWxlLmNvbG9yLHRleHQ6cyx0ZXh0QW5jaG9yOm8sZm9udEZhbWlseTpuLnN0eWxlLmZvbnRGYW1pbHksZm9udFNpemU6bi5zdHlsZS5mb250U2l6ZSxmb250V2VpZ2h0Om4uc3R5bGUuZm9udFdlaWdodH0pKSxlfX1dKSx0fSgpLG10PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmJhckN0eD1lfXJldHVybiByKHQsW3trZXk6XCJpbml0VmFyaWFibGVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O3RoaXMuYmFyQ3R4LnNlcmllcz10LHRoaXMuYmFyQ3R4LnRvdGFsSXRlbXM9MCx0aGlzLmJhckN0eC5zZXJpZXNMZW49MCx0aGlzLmJhckN0eC52aXNpYmxlST0tMSx0aGlzLmJhckN0eC52aXNpYmxlSXRlbXM9MTtmb3IodmFyIGk9MDtpPHQubGVuZ3RoO2krKylpZih0W2ldLmxlbmd0aD4wJiYodGhpcy5iYXJDdHguc2VyaWVzTGVuPXRoaXMuYmFyQ3R4LnNlcmllc0xlbisxLHRoaXMuYmFyQ3R4LnRvdGFsSXRlbXMrPXRbaV0ubGVuZ3RoKSxlLmdsb2JhbHMuaXNYTnVtZXJpYylmb3IodmFyIGE9MDthPHRbaV0ubGVuZ3RoO2ErKyllLmdsb2JhbHMuc2VyaWVzWFtpXVthXT5lLmdsb2JhbHMubWluWCYmZS5nbG9iYWxzLnNlcmllc1hbaV1bYV08ZS5nbG9iYWxzLm1heFgmJnRoaXMuYmFyQ3R4LnZpc2libGVJdGVtcysrO2Vsc2UgdGhpcy5iYXJDdHgudmlzaWJsZUl0ZW1zPWUuZ2xvYmFscy5kYXRhUG9pbnRzOzA9PT10aGlzLmJhckN0eC5zZXJpZXNMZW4mJih0aGlzLmJhckN0eC5zZXJpZXNMZW49MSksdGhpcy5iYXJDdHguemVyb1Nlcmllc2VzPVtdLGUuZ2xvYmFscy5jb21ib0NoYXJ0c3x8dGhpcy5jaGVja1plcm9TZXJpZXMoe3Nlcmllczp0fSl9fSx7a2V5OlwiaW5pdGlhbFBvc2l0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLGEscyxyLG8sbixsPXRoaXMudyxoPWwuZ2xvYmFscy5kYXRhUG9pbnRzO3RoaXMuYmFyQ3R4LmlzUmFuZ2VCYXImJihoPWwuZ2xvYmFscy5sYWJlbHMubGVuZ3RoKTt2YXIgYz10aGlzLmJhckN0eC5zZXJpZXNMZW47aWYobC5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyR3JvdXBSb3dzJiYoYz0xKSx0aGlzLmJhckN0eC5pc0hvcml6b250YWwpcz0oaT1sLmdsb2JhbHMuZ3JpZEhlaWdodC9oKS9jLGwuZ2xvYmFscy5pc1hOdW1lcmljJiYocz0oaT1sLmdsb2JhbHMuZ3JpZEhlaWdodC90aGlzLmJhckN0eC50b3RhbEl0ZW1zKS90aGlzLmJhckN0eC5zZXJpZXNMZW4pLHM9cypwYXJzZUludCh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmJhckhlaWdodCwxMCkvMTAwLC0xPT09U3RyaW5nKHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuYmFySGVpZ2h0KS5pbmRleE9mKFwiJVwiKSYmKHM9cGFyc2VJbnQodGhpcy5iYXJDdHguYmFyT3B0aW9ucy5iYXJIZWlnaHQsMTApKSxuPXRoaXMuYmFyQ3R4LmJhc2VMaW5lSW52ZXJ0ZWRZK2wuZ2xvYmFscy5wYWRIb3Jpem9udGFsKyh0aGlzLmJhckN0eC5pc1JldmVyc2VkP2wuZ2xvYmFscy5ncmlkV2lkdGg6MCktKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQ/Mip0aGlzLmJhckN0eC5iYXNlTGluZUludmVydGVkWTowKSxlPShpLXMqdGhpcy5iYXJDdHguc2VyaWVzTGVuKS8yO2Vsc2V7aWYoYT1sLmdsb2JhbHMuZ3JpZFdpZHRoL3RoaXMuYmFyQ3R4LnZpc2libGVJdGVtcyxsLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJihhPWwuZ2xvYmFscy5ncmlkV2lkdGgvbC5nbG9iYWxzLmRhdGFQb2ludHMpLHI9YS90aGlzLmJhckN0eC5zZXJpZXNMZW4qcGFyc2VJbnQodGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2x1bW5XaWR0aCwxMCkvMTAwLGwuZ2xvYmFscy5pc1hOdW1lcmljKXt2YXIgZD10aGlzLmJhckN0eC54UmF0aW87bC5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYoZD10aGlzLmJhckN0eC5pbml0aWFsWFJhdGlvKSxsLmdsb2JhbHMubWluWERpZmYmJi41IT09bC5nbG9iYWxzLm1pblhEaWZmJiZsLmdsb2JhbHMubWluWERpZmYvZD4wJiYoYT1sLmdsb2JhbHMubWluWERpZmYvZCksKHI9YS90aGlzLmJhckN0eC5zZXJpZXNMZW4qcGFyc2VJbnQodGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2x1bW5XaWR0aCwxMCkvMTAwKTwxJiYocj0xKX0tMT09PVN0cmluZyh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbHVtbldpZHRoKS5pbmRleE9mKFwiJVwiKSYmKHI9cGFyc2VJbnQodGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2x1bW5XaWR0aCwxMCkpLG89bC5nbG9iYWxzLmdyaWRIZWlnaHQtdGhpcy5iYXJDdHguYmFzZUxpbmVZW3RoaXMuYmFyQ3R4LnlheGlzSW5kZXhdLSh0aGlzLmJhckN0eC5pc1JldmVyc2VkP2wuZ2xvYmFscy5ncmlkSGVpZ2h0OjApKyh0aGlzLmJhckN0eC5pc1JldmVyc2VkPzIqdGhpcy5iYXJDdHguYmFzZUxpbmVZW3RoaXMuYmFyQ3R4LnlheGlzSW5kZXhdOjApLHQ9bC5nbG9iYWxzLnBhZEhvcml6b250YWwrKGEtcip0aGlzLmJhckN0eC5zZXJpZXNMZW4pLzJ9cmV0dXJue3g6dCx5OmUseURpdmlzaW9uOmkseERpdmlzaW9uOmEsYmFySGVpZ2h0OnMsYmFyV2lkdGg6cix6ZXJvSDpvLHplcm9XOm59fX0se2tleTpcImluaXRpYWxpemVTdGFja2VkUHJldlZhcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10Lnc7ZS5nbG9iYWxzLmhhc1Nlcmllc0dyb3Vwcz9lLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3RbZV18fCh0W2VdPXt9KSx0W2VdLnByZXZZPVtdLHRbZV0ucHJldlg9W10sdFtlXS5wcmV2WUY9W10sdFtlXS5wcmV2WEY9W10sdFtlXS5wcmV2WVZhbD1bXSx0W2VdLnByZXZYVmFsPVtdfSkpOih0LnByZXZZPVtdLHQucHJldlg9W10sdC5wcmV2WUY9W10sdC5wcmV2WEY9W10sdC5wcmV2WVZhbD1bXSx0LnByZXZYVmFsPVtdKX19LHtrZXk6XCJpbml0aWFsaXplU3RhY2tlZFhZVmFyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQudztlLmdsb2JhbHMuaGFzU2VyaWVzR3JvdXBzP2UuZ2xvYmFscy5zZXJpZXNHcm91cHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dFtlXXx8KHRbZV09e30pLHRbZV0ueEFycmo9W10sdFtlXS54QXJyakY9W10sdFtlXS54QXJyalZhbD1bXSx0W2VdLnlBcnJqPVtdLHRbZV0ueUFycmpGPVtdLHRbZV0ueUFycmpWYWw9W119KSk6KHQueEFycmo9W10sdC54QXJyakY9W10sdC54QXJyalZhbD1bXSx0LnlBcnJqPVtdLHQueUFycmpGPVtdLHQueUFycmpWYWw9W10pfX0se2tleTpcImdldFBhdGhGaWxsQ29sb3JcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcyxyLG8sbixsPXRoaXMudyxoPW5ldyBSKHRoaXMuYmFyQ3R4LmN0eCksYz1udWxsLGQ9dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kaXN0cmlidXRlZD9pOmU7dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMucmFuZ2VzLmxlbmd0aD4wJiZ0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5yYW5nZXMubWFwKChmdW5jdGlvbihhKXt0W2VdW2ldPj1hLmZyb20mJnRbZV1baV08PWEudG8mJihjPWEuY29sb3IpfSkpO3JldHVybiBsLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXSYmbC5jb25maWcuc2VyaWVzW2VdLmRhdGFbaV0uZmlsbENvbG9yJiYoYz1sLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXS5maWxsQ29sb3IpLGguZmlsbFBhdGgoe3Nlcmllc051bWJlcjp0aGlzLmJhckN0eC5iYXJPcHRpb25zLmRpc3RyaWJ1dGVkP2Q6YSxkYXRhUG9pbnRJbmRleDppLGNvbG9yOmMsdmFsdWU6dFtlXVtpXSxmaWxsQ29uZmlnOm51bGw9PT0ocz1sLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXSl8fHZvaWQgMD09PXM/dm9pZCAwOnMuZmlsbCxmaWxsVHlwZTpudWxsIT09KHI9bC5jb25maWcuc2VyaWVzW2VdLmRhdGFbaV0pJiZ2b2lkIDAhPT1yJiZudWxsIT09KG89ci5maWxsKSYmdm9pZCAwIT09byYmby50eXBlP251bGw9PT0obj1sLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uZmlsbC50eXBlOmwuY29uZmlnLmZpbGwudHlwZX0pfX0se2tleTpcImdldFN0cm9rZVdpZHRoXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPTAscz10aGlzLnc7cmV0dXJuIHRoaXMuYmFyQ3R4LnNlcmllc1t0XVtlXT90aGlzLmJhckN0eC5pc051bGxWYWx1ZT0hMTp0aGlzLmJhckN0eC5pc051bGxWYWx1ZT0hMCxzLmNvbmZpZy5zdHJva2Uuc2hvdyYmKHRoaXMuYmFyQ3R4LmlzTnVsbFZhbHVlfHwoYT1BcnJheS5pc0FycmF5KHRoaXMuYmFyQ3R4LnN0cm9rZVdpZHRoKT90aGlzLmJhckN0eC5zdHJva2VXaWR0aFtpXTp0aGlzLmJhckN0eC5zdHJva2VXaWR0aCkpLGF9fSx7a2V5Olwic2hvdWxkQXBwbHlSYWRpdXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT0hMTtyZXR1cm4gZS5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJvcmRlclJhZGl1cz4wJiYoZS5jb25maWcuY2hhcnQuc3RhY2tlZCYmXCJsYXN0XCI9PT1lLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzV2hlblN0YWNrZWQ/dGhpcy5iYXJDdHgubGFzdEFjdGl2ZUJhclNlcmllSW5kZXg9PT10JiYoaT0hMCk6aT0hMCksaX19LHtrZXk6XCJiYXJCYWNrZ3JvdW5kXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5qLGk9dC5pLGE9dC54MSxzPXQueDIscj10LnkxLG89dC55MixuPXQuZWxTZXJpZXMsbD10aGlzLncsaD1uZXcgbSh0aGlzLmJhckN0eC5jdHgpLGM9bmV3IE4odGhpcy5iYXJDdHguY3R4KS5nZXRBY3RpdmVDb25maWdTZXJpZXNJbmRleCgpO2lmKHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnMubGVuZ3RoPjAmJmM9PT1pKXtlPj10aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5iYWNrZ3JvdW5kQmFyQ29sb3JzLmxlbmd0aCYmKGUlPXRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnMubGVuZ3RoKTt2YXIgZD10aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5iYWNrZ3JvdW5kQmFyQ29sb3JzW2VdLGc9aC5kcmF3UmVjdCh2b2lkIDAhPT1hP2E6MCx2b2lkIDAhPT1yP3I6MCx2b2lkIDAhPT1zP3M6bC5nbG9iYWxzLmdyaWRXaWR0aCx2b2lkIDAhPT1vP286bC5nbG9iYWxzLmdyaWRIZWlnaHQsdGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMuYmFja2dyb3VuZEJhclJhZGl1cyxkLHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJPcGFjaXR5KTtuLmFkZChnKSxnLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYmFja2dyb3VuZEJhclwiKX19fSx7a2V5OlwiZ2V0Q29sdW1uUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXQuYmFyV2lkdGgsYT10LmJhclhQb3NpdGlvbixzPXQueTEscj10LnkyLG89dC5zdHJva2VXaWR0aCxuPXQuc2VyaWVzR3JvdXAsbD10LnJlYWxJbmRleCxoPXQuaSxjPXQuaixkPXQudyxnPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCk7KG89QXJyYXkuaXNBcnJheShvKT9vW2xdOm8pfHwobz0wKTt2YXIgdT1pLHA9YTtudWxsIT09KGU9ZC5jb25maWcuc2VyaWVzW2xdLmRhdGFbY10pJiZ2b2lkIDAhPT1lJiZlLmNvbHVtbldpZHRoT2Zmc2V0JiYocD1hLWQuY29uZmlnLnNlcmllc1tsXS5kYXRhW2NdLmNvbHVtbldpZHRoT2Zmc2V0LzIsdT1pK2QuY29uZmlnLnNlcmllc1tsXS5kYXRhW2NdLmNvbHVtbldpZHRoT2Zmc2V0KTt2YXIgZj1wLHg9cCt1O3MrPS4wMDEscis9LjAwMTt2YXIgYj1nLm1vdmUoZixzKSx2PWcubW92ZShmLHMpLHk9Zy5saW5lKHgtbyxzKTtpZihkLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg+MCYmKHY9dGhpcy5iYXJDdHguZ2V0UHJldmlvdXNQYXRoKGwsYywhMSkpLGI9YitnLmxpbmUoZixyKStnLmxpbmUoeC1vLHIpK2cubGluZSh4LW8scykrKFwiYXJvdW5kXCI9PT1kLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzQXBwbGljYXRpb24/XCIgWlwiOlwiIHpcIiksdj12K2cubGluZShmLHMpK3kreSt5K3kreStnLmxpbmUoZixzKSsoXCJhcm91bmRcIj09PWQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXNBcHBsaWNhdGlvbj9cIiBaXCI6XCIgelwiKSx0aGlzLnNob3VsZEFwcGx5UmFkaXVzKGwpJiYoYj1nLnJvdW5kUGF0aENvcm5lcnMoYixkLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzKSksZC5jb25maWcuY2hhcnQuc3RhY2tlZCl7dmFyIHc9dGhpcy5iYXJDdHg7ZC5nbG9iYWxzLmhhc1Nlcmllc0dyb3VwcyYmbiYmKHc9dGhpcy5iYXJDdHhbbl0pLHcueUFycmoucHVzaChyKSx3LnlBcnJqRi5wdXNoKE1hdGguYWJzKHMtcikpLHcueUFycmpWYWwucHVzaCh0aGlzLmJhckN0eC5zZXJpZXNbaF1bY10pfXJldHVybntwYXRoVG86YixwYXRoRnJvbTp2fX19LHtrZXk6XCJnZXRCYXJwYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dC5iYXJZUG9zaXRpb24sYT10LmJhckhlaWdodCxzPXQueDEscj10LngyLG89dC5zdHJva2VXaWR0aCxuPXQuc2VyaWVzR3JvdXAsbD10LnJlYWxJbmRleCxoPXQuaSxjPXQuaixkPXQudyxnPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCk7KG89QXJyYXkuaXNBcnJheShvKT9vW2xdOm8pfHwobz0wKTt2YXIgdT1pLHA9YTtudWxsIT09KGU9ZC5jb25maWcuc2VyaWVzW2xdLmRhdGFbY10pJiZ2b2lkIDAhPT1lJiZlLmJhckhlaWdodE9mZnNldCYmKHU9aS1kLmNvbmZpZy5zZXJpZXNbbF0uZGF0YVtjXS5iYXJIZWlnaHRPZmZzZXQvMixwPWErZC5jb25maWcuc2VyaWVzW2xdLmRhdGFbY10uYmFySGVpZ2h0T2Zmc2V0KTt2YXIgZj11LHg9dStwO3MrPS4wMDEscis9LjAwMTt2YXIgYj1nLm1vdmUocyxmKSx2PWcubW92ZShzLGYpO2QuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYodj10aGlzLmJhckN0eC5nZXRQcmV2aW91c1BhdGgobCxjLCExKSk7dmFyIHk9Zy5saW5lKHMseC1vKTtpZihiPWIrZy5saW5lKHIsZikrZy5saW5lKHIseC1vKSt5KyhcImFyb3VuZFwiPT09ZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJvcmRlclJhZGl1c0FwcGxpY2F0aW9uP1wiIFpcIjpcIiB6XCIpLHY9ditnLmxpbmUocyxmKSt5K3kreSt5K3krZy5saW5lKHMsZikrKFwiYXJvdW5kXCI9PT1kLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzQXBwbGljYXRpb24/XCIgWlwiOlwiIHpcIiksdGhpcy5zaG91bGRBcHBseVJhZGl1cyhsKSYmKGI9Zy5yb3VuZFBhdGhDb3JuZXJzKGIsZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJvcmRlclJhZGl1cykpLGQuY29uZmlnLmNoYXJ0LnN0YWNrZWQpe3ZhciB3PXRoaXMuYmFyQ3R4O2QuZ2xvYmFscy5oYXNTZXJpZXNHcm91cHMmJm4mJih3PXRoaXMuYmFyQ3R4W25dKSx3LnhBcnJqLnB1c2gociksdy54QXJyakYucHVzaChNYXRoLmFicyhzLXIpKSx3LnhBcnJqVmFsLnB1c2godGhpcy5iYXJDdHguc2VyaWVzW2hdW2NdKX1yZXR1cm57cGF0aFRvOmIscGF0aEZyb206dn19fSx7a2V5OlwiY2hlY2taZXJvU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuc2VyaWVzLGk9dGhpcy53LGE9MDthPGUubGVuZ3RoO2ErKyl7Zm9yKHZhciBzPTAscj0wO3I8ZVtpLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoO3IrKylzKz1lW2FdW3JdOzA9PT1zJiZ0aGlzLmJhckN0eC56ZXJvU2VyaWVzZXMucHVzaChhKX19fSx7a2V5OlwiZ2V0WEZvclZhbHVlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdP2U6bnVsbDtyZXR1cm4gbnVsbCE9dCYmKGk9ZSt0L3RoaXMuYmFyQ3R4LmludmVydGVkWVJhdGlvLTIqKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQ/dC90aGlzLmJhckN0eC5pbnZlcnRlZFlSYXRpbzowKSksaX19LHtrZXk6XCJnZXRZRm9yVmFsdWVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0/ZTpudWxsO3JldHVybiBudWxsIT10JiYoaT1lLXQvdGhpcy5iYXJDdHgueVJhdGlvW3RoaXMuYmFyQ3R4LnlheGlzSW5kZXhdKzIqKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQ/dC90aGlzLmJhckN0eC55UmF0aW9bdGhpcy5iYXJDdHgueWF4aXNJbmRleF06MCkpLGl9fSx7a2V5OlwiZ2V0R29hbFZhbHVlc1wiLHZhbHVlOmZ1bmN0aW9uKHQsaSxhLHMscil7dmFyIG49dGhpcyxsPXRoaXMudyxoPVtdLGM9ZnVuY3Rpb24oZSxzKXt2YXIgcjtoLnB1c2goKG8ocj17fSx0LFwieFwiPT09dD9uLmdldFhGb3JWYWx1ZShlLGksITEpOm4uZ2V0WUZvclZhbHVlKGUsYSwhMSkpLG8ocixcImF0dHJzXCIscykscikpfTtpZihsLmdsb2JhbHMuc2VyaWVzR29hbHNbc10mJmwuZ2xvYmFscy5zZXJpZXNHb2Fsc1tzXVtyXSYmQXJyYXkuaXNBcnJheShsLmdsb2JhbHMuc2VyaWVzR29hbHNbc11bcl0pJiZsLmdsb2JhbHMuc2VyaWVzR29hbHNbc11bcl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7Yyh0LnZhbHVlLHQpfSkpLHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuaXNEdW1iYmVsbCYmbC5nbG9iYWxzLnNlcmllc1JhbmdlLmxlbmd0aCl7dmFyIGQ9dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kdW1iYmVsbENvbG9ycz90aGlzLmJhckN0eC5iYXJPcHRpb25zLmR1bWJiZWxsQ29sb3JzOmwuZ2xvYmFscy5jb2xvcnMsZz17c3Ryb2tlSGVpZ2h0OlwieFwiPT09dD8wOmwuZ2xvYmFscy5tYXJrZXJzLnNpemVbc10sc3Ryb2tlV2lkdGg6XCJ4XCI9PT10P2wuZ2xvYmFscy5tYXJrZXJzLnNpemVbc106MCxzdHJva2VEYXNoQXJyYXk6MCxzdHJva2VMaW5lQ2FwOlwicm91bmRcIixzdHJva2VDb2xvcjpBcnJheS5pc0FycmF5KGRbc10pP2Rbc11bMF06ZFtzXX07YyhsLmdsb2JhbHMuc2VyaWVzUmFuZ2VTdGFydFtzXVtyXSxnKSxjKGwuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZFtzXVtyXSxlKGUoe30sZykse30se3N0cm9rZUNvbG9yOkFycmF5LmlzQXJyYXkoZFtzXSk/ZFtzXVsxXTpkW3NdfSkpfXJldHVybiBofX0se2tleTpcImRyYXdHb2FsTGluZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuYmFyWFBvc2l0aW9uLGk9dC5iYXJZUG9zaXRpb24sYT10LmdvYWxYLHM9dC5nb2FsWSxyPXQuYmFyV2lkdGgsbz10LmJhckhlaWdodCxuPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCksbD1uLmdyb3VwKHtjbGFzc05hbWU6XCJhcGV4Y2hhcnRzLWJhci1nb2Fscy1ncm91cHNcIn0pO2wubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwiKSx0aGlzLmJhckN0eC53Lmdsb2JhbHMuZGVsYXllZEVsZW1lbnRzLnB1c2goe2VsOmwubm9kZX0pLGwuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hcmtlck1hc2tcIi5jb25jYXQodGhpcy5iYXJDdHgudy5nbG9iYWxzLmN1aWQsXCIpXCIpKTt2YXIgaD1udWxsO3JldHVybiB0aGlzLmJhckN0eC5pc0hvcml6b250YWw/QXJyYXkuaXNBcnJheShhKSYmYS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT12b2lkIDAhPT10LmF0dHJzLnN0cm9rZUhlaWdodD90LmF0dHJzLnN0cm9rZUhlaWdodDpvLzIsYT1pK2Urby8yO2g9bi5kcmF3TGluZSh0LngsYS0yKmUsdC54LGEsdC5hdHRycy5zdHJva2VDb2xvcj90LmF0dHJzLnN0cm9rZUNvbG9yOnZvaWQgMCx0LmF0dHJzLnN0cm9rZURhc2hBcnJheSx0LmF0dHJzLnN0cm9rZVdpZHRoP3QuYXR0cnMuc3Ryb2tlV2lkdGg6Mix0LmF0dHJzLnN0cm9rZUxpbmVDYXApLGwuYWRkKGgpfSkpOkFycmF5LmlzQXJyYXkocykmJnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGk9dm9pZCAwIT09dC5hdHRycy5zdHJva2VXaWR0aD90LmF0dHJzLnN0cm9rZVdpZHRoOnIvMixhPWUraStyLzI7aD1uLmRyYXdMaW5lKGEtMippLHQueSxhLHQueSx0LmF0dHJzLnN0cm9rZUNvbG9yP3QuYXR0cnMuc3Ryb2tlQ29sb3I6dm9pZCAwLHQuYXR0cnMuc3Ryb2tlRGFzaEFycmF5LHQuYXR0cnMuc3Ryb2tlSGVpZ2h0P3QuYXR0cnMuc3Ryb2tlSGVpZ2h0OjIsdC5hdHRycy5zdHJva2VMaW5lQ2FwKSxsLmFkZChoKX0pKSxsfX1dKSx0fSgpLHl0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnc7dmFyIHM9dGhpcy53O3RoaXMuYmFyT3B0aW9ucz1zLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIsdGhpcy5pc0hvcml6b250YWw9dGhpcy5iYXJPcHRpb25zLmhvcml6b250YWwsdGhpcy5zdHJva2VXaWR0aD1zLmNvbmZpZy5zdHJva2Uud2lkdGgsdGhpcy5pc051bGxWYWx1ZT0hMSx0aGlzLmlzUmFuZ2VCYXI9cy5nbG9iYWxzLnNlcmllc1JhbmdlLmxlbmd0aCYmdGhpcy5pc0hvcml6b250YWwsdGhpcy54eVJhdGlvcz1pLG51bGwhPT10aGlzLnh5UmF0aW9zJiYodGhpcy54UmF0aW89aS54UmF0aW8sdGhpcy5pbml0aWFsWFJhdGlvPWkuaW5pdGlhbFhSYXRpbyx0aGlzLnlSYXRpbz1pLnlSYXRpbyx0aGlzLmludmVydGVkWFJhdGlvPWkuaW52ZXJ0ZWRYUmF0aW8sdGhpcy5pbnZlcnRlZFlSYXRpbz1pLmludmVydGVkWVJhdGlvLHRoaXMuYmFzZUxpbmVZPWkuYmFzZUxpbmVZLHRoaXMuYmFzZUxpbmVJbnZlcnRlZFk9aS5iYXNlTGluZUludmVydGVkWSksdGhpcy55YXhpc0luZGV4PTAsdGhpcy5zZXJpZXNMZW49MDt2YXIgcj1uZXcgTih0aGlzLmN0eCk7dGhpcy5sYXN0QWN0aXZlQmFyU2VyaWVJbmRleD1yLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KFwiZGVzY1wiLFtcImJhclwiLFwiY29sdW1uXCJdKTt2YXIgbz1yLmdldEJhclNlcmllc0luZGljZXMoKSxuPW5ldyB5KHRoaXMuY3R4KTt0aGlzLnN0YWNrZWRTZXJpZXNUb3RhbHM9bi5nZXRTdGFja2VkU2VyaWVzVG90YWxzKHRoaXMudy5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4tMT09PW8uaW5kZXhPZihlKT9lOi0xfSkpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuLTEhPT10fSkpKSx0aGlzLmJhckhlbHBlcnM9bmV3IG10KHRoaXMpfXJldHVybiByKHQsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCxpKXt2YXIgYT10aGlzLncscz1uZXcgbSh0aGlzLmN0eCkscj1uZXcgeSh0aGlzLmN0eCxhKTt0PXIuZ2V0TG9nU2VyaWVzKHQpLHRoaXMuc2VyaWVzPXQsdGhpcy55UmF0aW89ci5nZXRMb2dZUmF0aW9zKHRoaXMueVJhdGlvKSx0aGlzLmJhckhlbHBlcnMuaW5pdFZhcmlhYmxlcyh0KTt2YXIgbz1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtYmFyLXNlcmllcyBhcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzXCJ9KTthLmNvbmZpZy5kYXRhTGFiZWxzLmVuYWJsZWQmJnRoaXMudG90YWxJdGVtcz50aGlzLmJhck9wdGlvbnMuZGF0YUxhYmVscy5tYXhJdGVtcyYmY29uc29sZS53YXJuKFwiV0FSTklORzogRGF0YUxhYmVscyBhcmUgZW5hYmxlZCBidXQgdGhlcmUgYXJlIHRvbyBtYW55IHRvIGRpc3BsYXkuIFRoaXMgbWF5IGNhdXNlIHBlcmZvcm1hbmNlIGlzc3VlIHdoZW4gcmVuZGVyaW5nLlwiKTtmb3IodmFyIG49MCxsPTA7bjx0Lmxlbmd0aDtuKyssbCsrKXt2YXIgaCxjLGQsZyx1PXZvaWQgMCxwPXZvaWQgMCxmPVtdLGI9W10sdj1hLmdsb2JhbHMuY29tYm9DaGFydHM/aVtuXTpuLHc9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllc1wiLHJlbDpuKzEsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhhLmdsb2JhbHMuc2VyaWVzTmFtZXNbdl0pLFwiZGF0YTpyZWFsSW5kZXhcIjp2fSk7dGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXModyx2KSx0W25dLmxlbmd0aD4wJiYodGhpcy52aXNpYmxlST10aGlzLnZpc2libGVJKzEpO3ZhciBrPTAsQT0wO3RoaXMueVJhdGlvLmxlbmd0aD4xJiYodGhpcy55YXhpc0luZGV4PXYpLHRoaXMuaXNSZXZlcnNlZD1hLmNvbmZpZy55YXhpc1t0aGlzLnlheGlzSW5kZXhdJiZhLmNvbmZpZy55YXhpc1t0aGlzLnlheGlzSW5kZXhdLnJldmVyc2VkO3ZhciBTPXRoaXMuYmFySGVscGVycy5pbml0aWFsUG9zaXRpb25zKCk7cD1TLnksaz1TLmJhckhlaWdodCxjPVMueURpdmlzaW9uLGc9Uy56ZXJvVyx1PVMueCxBPVMuYmFyV2lkdGgsaD1TLnhEaXZpc2lvbixkPVMuemVyb0gsdGhpcy5ob3Jpem9udGFsfHxiLnB1c2godStBLzIpO2Zvcih2YXIgQz1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YWxhYmVsc1wiLFwiZGF0YTpyZWFsSW5kZXhcIjp2fSksTD1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtYmFyLWdvYWxzLW1hcmtlcnNcIixzdHlsZTpcInBvaW50ZXItZXZlbnRzOiBub25lXCJ9KSxQPTA7UDxhLmdsb2JhbHMuZGF0YVBvaW50cztQKyspe3ZhciBJPXRoaXMuYmFySGVscGVycy5nZXRTdHJva2VXaWR0aChuLFAsdiksVD1udWxsLE09e2luZGV4ZXM6e2k6bixqOlAscmVhbEluZGV4OnYsYmM6bH0seDp1LHk6cCxzdHJva2VXaWR0aDpJLGVsU2VyaWVzOnd9O3RoaXMuaXNIb3Jpem9udGFsPyhUPXRoaXMuZHJhd0JhclBhdGhzKGUoZSh7fSxNKSx7fSx7YmFySGVpZ2h0OmssemVyb1c6Zyx5RGl2aXNpb246Y30pKSxBPXRoaXMuc2VyaWVzW25dW1BdL3RoaXMuaW52ZXJ0ZWRZUmF0aW8pOihUPXRoaXMuZHJhd0NvbHVtblBhdGhzKGUoZSh7fSxNKSx7fSx7eERpdmlzaW9uOmgsYmFyV2lkdGg6QSx6ZXJvSDpkfSkpLGs9dGhpcy5zZXJpZXNbbl1bUF0vdGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSk7dmFyIFg9dGhpcy5iYXJIZWxwZXJzLmRyYXdHb2FsTGluZSh7YmFyWFBvc2l0aW9uOlQuYmFyWFBvc2l0aW9uLGJhcllQb3NpdGlvbjpULmJhcllQb3NpdGlvbixnb2FsWDpULmdvYWxYLGdvYWxZOlQuZ29hbFksYmFySGVpZ2h0OmssYmFyV2lkdGg6QX0pO1gmJkwuYWRkKFgpLHA9VC55LHU9VC54LFA+MCYmYi5wdXNoKHUrQS8yKSxmLnB1c2gocCk7dmFyIHo9dGhpcy5iYXJIZWxwZXJzLmdldFBhdGhGaWxsQ29sb3IodCxuLFAsdik7dGhpcy5yZW5kZXJTZXJpZXMoe3JlYWxJbmRleDp2LHBhdGhGaWxsOnosajpQLGk6bixwYXRoRnJvbTpULnBhdGhGcm9tLHBhdGhUbzpULnBhdGhUbyxzdHJva2VXaWR0aDpJLGVsU2VyaWVzOncseDp1LHk6cCxzZXJpZXM6dCxiYXJIZWlnaHQ6VC5iYXJIZWlnaHQ/VC5iYXJIZWlnaHQ6ayxiYXJXaWR0aDpULmJhcldpZHRoP1QuYmFyV2lkdGg6QSxlbERhdGFMYWJlbHNXcmFwOkMsZWxHb2Fsc01hcmtlcnM6TCx2aXNpYmxlU2VyaWVzOnRoaXMudmlzaWJsZUksdHlwZTpcImJhclwifSl9YS5nbG9iYWxzLnNlcmllc1h2YWx1ZXNbdl09YixhLmdsb2JhbHMuc2VyaWVzWXZhbHVlc1t2XT1mLG8uYWRkKHcpfXJldHVybiBvfX0se2tleTpcInJlbmRlclNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQucmVhbEluZGV4LGk9dC5wYXRoRmlsbCxhPXQubGluZUZpbGwscz10Lmoscj10Lmksbz10Lmdyb3VwSW5kZXgsbj10LnBhdGhGcm9tLGw9dC5wYXRoVG8saD10LnN0cm9rZVdpZHRoLGM9dC5lbFNlcmllcyxkPXQueCxnPXQueSx1PXQueTEscD10LnkyLGY9dC5zZXJpZXMseD10LmJhckhlaWdodCxiPXQuYmFyV2lkdGgseT10LmJhcllQb3NpdGlvbix3PXQuZWxEYXRhTGFiZWxzV3JhcCxrPXQuZWxHb2Fsc01hcmtlcnMsQT10LnZpc2libGVTZXJpZXMsUz10LnR5cGUsQz10aGlzLncsTD1uZXcgbSh0aGlzLmN0eCk7YXx8KGE9dGhpcy5iYXJPcHRpb25zLmRpc3RyaWJ1dGVkP0MuZ2xvYmFscy5zdHJva2UuY29sb3JzW3NdOkMuZ2xvYmFscy5zdHJva2UuY29sb3JzW2VdKSxDLmNvbmZpZy5zZXJpZXNbcl0uZGF0YVtzXSYmQy5jb25maWcuc2VyaWVzW3JdLmRhdGFbc10uc3Ryb2tlQ29sb3ImJihhPUMuY29uZmlnLnNlcmllc1tyXS5kYXRhW3NdLnN0cm9rZUNvbG9yKSx0aGlzLmlzTnVsbFZhbHVlJiYoaT1cIm5vbmVcIik7dmFyIFA9cy9DLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmFuaW1hdGVHcmFkdWFsbHkuZGVsYXkqKEMuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQvQy5nbG9iYWxzLmRhdGFQb2ludHMpLzIuNCxJPUwucmVuZGVyUGF0aHMoe2k6cixqOnMscmVhbEluZGV4OmUscGF0aEZyb206bixwYXRoVG86bCxzdHJva2U6YSxzdHJva2VXaWR0aDpoLHN0cm9rZUxpbmVDYXA6Qy5jb25maWcuc3Ryb2tlLmxpbmVDYXAsZmlsbDppLGFuaW1hdGlvbkRlbGF5OlAsaW5pdGlhbFNwZWVkOkMuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQsZGF0YUNoYW5nZVNwZWVkOkMuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZCxjbGFzc05hbWU6XCJhcGV4Y2hhcnRzLVwiLmNvbmNhdChTLFwiLWFyZWFcIil9KTtJLmF0dHIoXCJjbGlwLXBhdGhcIixcInVybCgjZ3JpZFJlY3RNYXNrXCIuY29uY2F0KEMuZ2xvYmFscy5jdWlkLFwiKVwiKSk7dmFyIFQ9Qy5jb25maWcuZm9yZWNhc3REYXRhUG9pbnRzO1QuY291bnQ+MCYmcz49Qy5nbG9iYWxzLmRhdGFQb2ludHMtVC5jb3VudCYmKEkubm9kZS5zZXRBdHRyaWJ1dGUoXCJzdHJva2UtZGFzaGFycmF5XCIsVC5kYXNoQXJyYXkpLEkubm9kZS5zZXRBdHRyaWJ1dGUoXCJzdHJva2Utd2lkdGhcIixULnN0cm9rZVdpZHRoKSxJLm5vZGUuc2V0QXR0cmlidXRlKFwiZmlsbC1vcGFjaXR5XCIsVC5maWxsT3BhY2l0eSkpLHZvaWQgMCE9PXUmJnZvaWQgMCE9PXAmJihJLmF0dHIoXCJkYXRhLXJhbmdlLXkxXCIsdSksSS5hdHRyKFwiZGF0YS1yYW5nZS15MlwiLHApKSxuZXcgdih0aGlzLmN0eCkuc2V0U2VsZWN0aW9uRmlsdGVyKEksZSxzKSxjLmFkZChJKTt2YXIgTT1uZXcgdnQodGhpcykuaGFuZGxlQmFyRGF0YUxhYmVscyh7eDpkLHk6Zyx5MTp1LHkyOnAsaTpyLGo6cyxzZXJpZXM6ZixyZWFsSW5kZXg6ZSxncm91cEluZGV4Om8sYmFySGVpZ2h0OngsYmFyV2lkdGg6YixiYXJZUG9zaXRpb246eSxyZW5kZXJlZFBhdGg6SSx2aXNpYmxlU2VyaWVzOkF9KTtyZXR1cm4gbnVsbCE9PU0uZGF0YUxhYmVscyYmdy5hZGQoTS5kYXRhTGFiZWxzKSxNLnRvdGFsRGF0YUxhYmVscyYmdy5hZGQoTS50b3RhbERhdGFMYWJlbHMpLGMuYWRkKHcpLGsmJmMuYWRkKGspLGN9fSx7a2V5OlwiZHJhd0JhclBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10LmluZGV4ZXMsYT10LmJhckhlaWdodCxzPXQuc3Ryb2tlV2lkdGgscj10Lnplcm9XLG89dC54LG49dC55LGw9dC55RGl2aXNpb24saD10LmVsU2VyaWVzLGM9dGhpcy53LGQ9aS5pLGc9aS5qO2lmKGMuZ2xvYmFscy5pc1hOdW1lcmljKWU9KG49KGMuZ2xvYmFscy5zZXJpZXNYW2RdW2ddLWMuZ2xvYmFscy5taW5YKS90aGlzLmludmVydGVkWFJhdGlvLWEpK2EqdGhpcy52aXNpYmxlSTtlbHNlIGlmKGMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5oaWRlWmVyb0JhcnNXaGVuR3JvdXBlZCl7dmFyIHU9MCxwPTA7Yy5nbG9iYWxzLnNlcmllc1BlcmNlbnQuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0W2ddJiZ1KyssZTxkJiYwPT09dFtnXSYmcCsrfSkpLHU+MCYmKGE9dGhpcy5zZXJpZXNMZW4qYS91KSxlPW4rYSp0aGlzLnZpc2libGVJLGUtPWEqcH1lbHNlIGU9bithKnRoaXMudmlzaWJsZUk7bz10aGlzLmJhckhlbHBlcnMuZ2V0WEZvclZhbHVlKHRoaXMuc2VyaWVzW2RdW2ddLHIpO3ZhciBmPXRoaXMuYmFySGVscGVycy5nZXRCYXJwYXRocyh7YmFyWVBvc2l0aW9uOmUsYmFySGVpZ2h0OmEseDE6cix4MjpvLHN0cm9rZVdpZHRoOnMsc2VyaWVzOnRoaXMuc2VyaWVzLHJlYWxJbmRleDppLnJlYWxJbmRleCxpOmQsajpnLHc6Y30pO3JldHVybiBjLmdsb2JhbHMuaXNYTnVtZXJpY3x8KG4rPWwpLHRoaXMuYmFySGVscGVycy5iYXJCYWNrZ3JvdW5kKHtqOmcsaTpkLHkxOmUtYSp0aGlzLnZpc2libGVJLHkyOmEqdGhpcy5zZXJpZXNMZW4sZWxTZXJpZXM6aH0pLHtwYXRoVG86Zi5wYXRoVG8scGF0aEZyb206Zi5wYXRoRnJvbSx4Om8seTpuLGdvYWxYOnRoaXMuYmFySGVscGVycy5nZXRHb2FsVmFsdWVzKFwieFwiLHIsbnVsbCxkLGcpLGJhcllQb3NpdGlvbjplLGJhckhlaWdodDphfX19LHtrZXk6XCJkcmF3Q29sdW1uUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXQuaW5kZXhlcyxhPXQueCxzPXQueSxyPXQueERpdmlzaW9uLG89dC5iYXJXaWR0aCxuPXQuemVyb0gsbD10LnN0cm9rZVdpZHRoLGg9dC5lbFNlcmllcyxjPXRoaXMudyxkPWkucmVhbEluZGV4LGc9aS5pLHU9aS5qLHA9aS5iYztpZihjLmdsb2JhbHMuaXNYTnVtZXJpYyl7dmFyIGY9ZDtjLmdsb2JhbHMuc2VyaWVzWFtkXS5sZW5ndGh8fChmPWMuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4KSxjLmdsb2JhbHMuc2VyaWVzWFtmXVt1XSYmKGE9KGMuZ2xvYmFscy5zZXJpZXNYW2ZdW3VdLWMuZ2xvYmFscy5taW5YKS90aGlzLnhSYXRpby1vKnRoaXMuc2VyaWVzTGVuLzIpLGU9YStvKnRoaXMudmlzaWJsZUl9ZWxzZSBpZihjLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuaGlkZVplcm9CYXJzV2hlbkdyb3VwZWQpe3ZhciB4PTAsYj0wO2MuZ2xvYmFscy5zZXJpZXNQZXJjZW50LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dFt1XSYmeCsrLGU8ZyYmMD09PXRbdV0mJmIrK30pKSx4PjAmJihvPXRoaXMuc2VyaWVzTGVuKm8veCksZT1hK28qdGhpcy52aXNpYmxlSSxlLT1vKmJ9ZWxzZSBlPWErbyp0aGlzLnZpc2libGVJO3M9dGhpcy5iYXJIZWxwZXJzLmdldFlGb3JWYWx1ZSh0aGlzLnNlcmllc1tnXVt1XSxuKTt2YXIgdj10aGlzLmJhckhlbHBlcnMuZ2V0Q29sdW1uUGF0aHMoe2JhclhQb3NpdGlvbjplLGJhcldpZHRoOm8seTE6bix5MjpzLHN0cm9rZVdpZHRoOmwsc2VyaWVzOnRoaXMuc2VyaWVzLHJlYWxJbmRleDppLnJlYWxJbmRleCxpOmcsajp1LHc6Y30pO3JldHVybiBjLmdsb2JhbHMuaXNYTnVtZXJpY3x8KGErPXIpLHRoaXMuYmFySGVscGVycy5iYXJCYWNrZ3JvdW5kKHtiYzpwLGo6dSxpOmcseDE6ZS1sLzItbyp0aGlzLnZpc2libGVJLHgyOm8qdGhpcy5zZXJpZXNMZW4rbC8yLGVsU2VyaWVzOmh9KSx7cGF0aFRvOnYucGF0aFRvLHBhdGhGcm9tOnYucGF0aEZyb20seDphLHk6cyxnb2FsWTp0aGlzLmJhckhlbHBlcnMuZ2V0R29hbFZhbHVlcyhcInlcIixudWxsLG4sZyx1KSxiYXJYUG9zaXRpb246ZSxiYXJXaWR0aDpvfX19LHtrZXk6XCJnZXRQcmV2aW91c1BhdGhcIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaSxhPXRoaXMudyxzPTA7czxhLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg7cysrKXt2YXIgcj1hLmdsb2JhbHMucHJldmlvdXNQYXRoc1tzXTtyLnBhdGhzJiZyLnBhdGhzLmxlbmd0aD4wJiZwYXJzZUludChyLnJlYWxJbmRleCwxMCk9PT1wYXJzZUludCh0LDEwKSYmdm9pZCAwIT09YS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbc10ucGF0aHNbZV0mJihpPWEuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3NdLnBhdGhzW2VdLmQpfXJldHVybiBpfX1dKSx0fSgpLHd0PWZ1bmN0aW9uKHQpe24ocyx5dCk7dmFyIGk9ZChzKTtmdW5jdGlvbiBzKCl7cmV0dXJuIGEodGhpcyxzKSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gcihzLFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQsaSl7dmFyIGE9dGhpcyxzPXRoaXMudzt0aGlzLmdyYXBoaWNzPW5ldyBtKHRoaXMuY3R4KSx0aGlzLmJhcj1uZXcgeXQodGhpcy5jdHgsdGhpcy54eVJhdGlvcyk7dmFyIHI9bmV3IHkodGhpcy5jdHgscyk7dD1yLmdldExvZ1Nlcmllcyh0KSx0aGlzLnlSYXRpbz1yLmdldExvZ1lSYXRpb3ModGhpcy55UmF0aW8pLHRoaXMuYmFySGVscGVycy5pbml0VmFyaWFibGVzKHQpLFwiMTAwJVwiPT09cy5jb25maWcuY2hhcnQuc3RhY2tUeXBlJiYodD1zLmdsb2JhbHMuc2VyaWVzUGVyY2VudC5zbGljZSgpKSx0aGlzLnNlcmllcz10LHRoaXMuYmFySGVscGVycy5pbml0aWFsaXplU3RhY2tlZFByZXZWYXJzKHRoaXMpO2Zvcih2YXIgbz10aGlzLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtYmFyLXNlcmllcyBhcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzXCJ9KSxuPTAsbD0wLGg9ZnVuY3Rpb24ocixoKXt2YXIgYz12b2lkIDAsZD12b2lkIDAsZz12b2lkIDAsdT12b2lkIDAscD0tMTthLmdyb3VwQ3R4PWEscy5nbG9iYWxzLnNlcmllc0dyb3Vwcy5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuaW5kZXhPZihzLmNvbmZpZy5zZXJpZXNbcl0ubmFtZSk+LTEmJihwPWUpfSkpLC0xIT09cCYmKGEuZ3JvdXBDdHg9YVtzLmdsb2JhbHMuc2VyaWVzR3JvdXBzW3BdXSk7dmFyIGY9W10sYj1bXSx2PXMuZ2xvYmFscy5jb21ib0NoYXJ0cz9pW3JdOnI7YS55UmF0aW8ubGVuZ3RoPjEmJihhLnlheGlzSW5kZXg9diksYS5pc1JldmVyc2VkPXMuY29uZmlnLnlheGlzW2EueWF4aXNJbmRleF0mJnMuY29uZmlnLnlheGlzW2EueWF4aXNJbmRleF0ucmV2ZXJzZWQ7dmFyIG09YS5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllc1wiLHNlcmllc05hbWU6eC5lc2NhcGVTdHJpbmcocy5nbG9iYWxzLnNlcmllc05hbWVzW3ZdKSxyZWw6cisxLFwiZGF0YTpyZWFsSW5kZXhcIjp2fSk7YS5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXMobSx2KTt2YXIgeT1hLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YWxhYmVsc1wiLFwiZGF0YTpyZWFsSW5kZXhcIjp2fSksdz1hLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtYmFyLWdvYWxzLW1hcmtlcnNcIixzdHlsZTpcInBvaW50ZXItZXZlbnRzOiBub25lXCJ9KSxrPTAsQT0wLFM9YS5pbml0aWFsUG9zaXRpb25zKG4sbCxjLGQsZyx1KTtsPVMueSxrPVMuYmFySGVpZ2h0LGQ9Uy55RGl2aXNpb24sdT1TLnplcm9XLG49Uy54LEE9Uy5iYXJXaWR0aCxjPVMueERpdmlzaW9uLGc9Uy56ZXJvSCxhLmJhckhlbHBlcnMuaW5pdGlhbGl6ZVN0YWNrZWRYWVZhcnMoYSksMT09PWEuZ3JvdXBDdHgucHJldlkubGVuZ3RoJiZhLmdyb3VwQ3R4LnByZXZZWzBdLmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gaXNOYU4odCl9KSkmJihhLmdyb3VwQ3R4LnByZXZZWzBdPWEuZ3JvdXBDdHgucHJldllbMF0ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZ30pKSxhLmdyb3VwQ3R4LnByZXZZRlswXT1hLmdyb3VwQ3R4LnByZXZZRlswXS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiAwfSkpKTtmb3IodmFyIEM9MDtDPHMuZ2xvYmFscy5kYXRhUG9pbnRzO0MrKyl7dmFyIEw9YS5iYXJIZWxwZXJzLmdldFN0cm9rZVdpZHRoKHIsQyx2KSxQPXtpbmRleGVzOntpOnIsajpDLHJlYWxJbmRleDp2LGJjOmh9LHN0cm9rZVdpZHRoOkwseDpuLHk6bCxlbFNlcmllczptLGdyb3VwSW5kZXg6cCxzZXJpZXNHcm91cDpzLmdsb2JhbHMuc2VyaWVzR3JvdXBzW3BdfSxJPW51bGw7YS5pc0hvcml6b250YWw/KEk9YS5kcmF3U3RhY2tlZEJhclBhdGhzKGUoZSh7fSxQKSx7fSx7emVyb1c6dSxiYXJIZWlnaHQ6ayx5RGl2aXNpb246ZH0pKSxBPWEuc2VyaWVzW3JdW0NdL2EuaW52ZXJ0ZWRZUmF0aW8pOihJPWEuZHJhd1N0YWNrZWRDb2x1bW5QYXRocyhlKGUoe30sUCkse30se3hEaXZpc2lvbjpjLGJhcldpZHRoOkEsemVyb0g6Z30pKSxrPWEuc2VyaWVzW3JdW0NdL2EueVJhdGlvW2EueWF4aXNJbmRleF0pO3ZhciBUPWEuYmFySGVscGVycy5kcmF3R29hbExpbmUoe2JhclhQb3NpdGlvbjpJLmJhclhQb3NpdGlvbixiYXJZUG9zaXRpb246SS5iYXJZUG9zaXRpb24sZ29hbFg6SS5nb2FsWCxnb2FsWTpJLmdvYWxZLGJhckhlaWdodDprLGJhcldpZHRoOkF9KTtUJiZ3LmFkZChUKSxsPUkueSxuPUkueCxmLnB1c2gobiksYi5wdXNoKGwpO3ZhciBNPWEuYmFySGVscGVycy5nZXRQYXRoRmlsbENvbG9yKHQscixDLHYpO209YS5yZW5kZXJTZXJpZXMoe3JlYWxJbmRleDp2LHBhdGhGaWxsOk0sajpDLGk6cixncm91cEluZGV4OnAscGF0aEZyb206SS5wYXRoRnJvbSxwYXRoVG86SS5wYXRoVG8sc3Ryb2tlV2lkdGg6TCxlbFNlcmllczptLHg6bix5Omwsc2VyaWVzOnQsYmFySGVpZ2h0OmssYmFyV2lkdGg6QSxlbERhdGFMYWJlbHNXcmFwOnksZWxHb2Fsc01hcmtlcnM6dyx0eXBlOlwiYmFyXCIsdmlzaWJsZVNlcmllczowfSl9cy5nbG9iYWxzLnNlcmllc1h2YWx1ZXNbdl09ZixzLmdsb2JhbHMuc2VyaWVzWXZhbHVlc1t2XT1iLGEuZ3JvdXBDdHgucHJldlkucHVzaChhLmdyb3VwQ3R4LnlBcnJqKSxhLmdyb3VwQ3R4LnByZXZZRi5wdXNoKGEuZ3JvdXBDdHgueUFycmpGKSxhLmdyb3VwQ3R4LnByZXZZVmFsLnB1c2goYS5ncm91cEN0eC55QXJyalZhbCksYS5ncm91cEN0eC5wcmV2WC5wdXNoKGEuZ3JvdXBDdHgueEFycmopLGEuZ3JvdXBDdHgucHJldlhGLnB1c2goYS5ncm91cEN0eC54QXJyakYpLGEuZ3JvdXBDdHgucHJldlhWYWwucHVzaChhLmdyb3VwQ3R4LnhBcnJqVmFsKSxvLmFkZChtKX0sYz0wLGQ9MDtjPHQubGVuZ3RoO2MrKyxkKyspaChjLGQpO3JldHVybiBvfX0se2tleTpcImluaXRpYWxQb3NpdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscil7dmFyIG8sbixsLGgsYz10aGlzLnc7dGhpcy5pc0hvcml6b250YWw/KG89KG89YT1jLmdsb2JhbHMuZ3JpZEhlaWdodC9jLmdsb2JhbHMuZGF0YVBvaW50cykqcGFyc2VJbnQoYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJhckhlaWdodCwxMCkvMTAwLG51bGwhPT0obD1jLmdsb2JhbHMuc2VyaWVzR3JvdXBzKSYmdm9pZCAwIT09bCYmbC5sZW5ndGgmJihvLz1jLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmxlbmd0aCksLTE9PT1TdHJpbmcoYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJhckhlaWdodCkuaW5kZXhPZihcIiVcIikmJihvPXBhcnNlSW50KGMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5iYXJIZWlnaHQsMTApKSxyPXRoaXMuYmFzZUxpbmVJbnZlcnRlZFkrYy5nbG9iYWxzLnBhZEhvcml6b250YWwrKHRoaXMuaXNSZXZlcnNlZD9jLmdsb2JhbHMuZ3JpZFdpZHRoOjApLSh0aGlzLmlzUmV2ZXJzZWQ/Mip0aGlzLmJhc2VMaW5lSW52ZXJ0ZWRZOjApLGU9KGEtbykvMik6KG49aT1jLmdsb2JhbHMuZ3JpZFdpZHRoL2MuZ2xvYmFscy5kYXRhUG9pbnRzLG49Yy5nbG9iYWxzLmlzWE51bWVyaWMmJmMuZ2xvYmFscy5kYXRhUG9pbnRzPjE/KGk9Yy5nbG9iYWxzLm1pblhEaWZmL3RoaXMueFJhdGlvKSpwYXJzZUludCh0aGlzLmJhck9wdGlvbnMuY29sdW1uV2lkdGgsMTApLzEwMDpuKnBhcnNlSW50KGMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5jb2x1bW5XaWR0aCwxMCkvMTAwLG51bGwhPT0oaD1jLmdsb2JhbHMuc2VyaWVzR3JvdXBzKSYmdm9pZCAwIT09aCYmaC5sZW5ndGgmJihuLz1jLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmxlbmd0aCksLTE9PT1TdHJpbmcoYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmNvbHVtbldpZHRoKS5pbmRleE9mKFwiJVwiKSYmKG49cGFyc2VJbnQoYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmNvbHVtbldpZHRoLDEwKSkscz1jLmdsb2JhbHMuZ3JpZEhlaWdodC10aGlzLmJhc2VMaW5lWVt0aGlzLnlheGlzSW5kZXhdLSh0aGlzLmlzUmV2ZXJzZWQ/Yy5nbG9iYWxzLmdyaWRIZWlnaHQ6MCkrKHRoaXMuaXNSZXZlcnNlZD8yKnRoaXMuYmFzZUxpbmVZW3RoaXMueWF4aXNJbmRleF06MCksdD1jLmdsb2JhbHMucGFkSG9yaXpvbnRhbCsoaS1uKS8yKTtyZXR1cm57eDp0LHk6ZSx5RGl2aXNpb246YSx4RGl2aXNpb246aSxiYXJIZWlnaHQ6byxiYXJXaWR0aDpuLHplcm9IOnMsemVyb1c6cn19fSx7a2V5OlwiZHJhd1N0YWNrZWRCYXJQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPXQuaW5kZXhlcyxhPXQuYmFySGVpZ2h0LHM9dC5zdHJva2VXaWR0aCxyPXQuemVyb1csbz10Lngsbj10LnksbD10Lmdyb3VwSW5kZXgsaD10LnNlcmllc0dyb3VwLGM9dC55RGl2aXNpb24sZD10LmVsU2VyaWVzLGc9dGhpcy53LHU9bisoLTEhPT1sP2wqYTowKSxwPWkuaSxmPWkuaix4PTAsYj0wO2I8dGhpcy5ncm91cEN0eC5wcmV2WEYubGVuZ3RoO2IrKyl4Kz10aGlzLmdyb3VwQ3R4LnByZXZYRltiXVtmXTt2YXIgdj1wO2lmKGgmJih2PWguaW5kZXhPZihnLmNvbmZpZy5zZXJpZXNbcF0ubmFtZSkpLHY+MCl7dmFyIG09cjt0aGlzLmdyb3VwQ3R4LnByZXZYVmFsW3YtMV1bZl08MD9tPXRoaXMuc2VyaWVzW3BdW2ZdPj0wP3RoaXMuZ3JvdXBDdHgucHJldlhbdi0xXVtmXSt4LTIqKHRoaXMuaXNSZXZlcnNlZD94OjApOnRoaXMuZ3JvdXBDdHgucHJldlhbdi0xXVtmXTp0aGlzLmdyb3VwQ3R4LnByZXZYVmFsW3YtMV1bZl0+PTAmJihtPXRoaXMuc2VyaWVzW3BdW2ZdPj0wP3RoaXMuZ3JvdXBDdHgucHJldlhbdi0xXVtmXTp0aGlzLmdyb3VwQ3R4LnByZXZYW3YtMV1bZl0teCsyKih0aGlzLmlzUmV2ZXJzZWQ/eDowKSksZT1tfWVsc2UgZT1yO289bnVsbD09PXRoaXMuc2VyaWVzW3BdW2ZdP2U6ZSt0aGlzLnNlcmllc1twXVtmXS90aGlzLmludmVydGVkWVJhdGlvLTIqKHRoaXMuaXNSZXZlcnNlZD90aGlzLnNlcmllc1twXVtmXS90aGlzLmludmVydGVkWVJhdGlvOjApO3ZhciB5PXRoaXMuYmFySGVscGVycy5nZXRCYXJwYXRocyh7YmFyWVBvc2l0aW9uOnUsYmFySGVpZ2h0OmEseDE6ZSx4MjpvLHN0cm9rZVdpZHRoOnMsc2VyaWVzOnRoaXMuc2VyaWVzLHJlYWxJbmRleDppLnJlYWxJbmRleCxzZXJpZXNHcm91cDpoLGk6cCxqOmYsdzpnfSk7cmV0dXJuIHRoaXMuYmFySGVscGVycy5iYXJCYWNrZ3JvdW5kKHtqOmYsaTpwLHkxOnUseTI6YSxlbFNlcmllczpkfSksbis9Yyx7cGF0aFRvOnkucGF0aFRvLHBhdGhGcm9tOnkucGF0aEZyb20sZ29hbFg6dGhpcy5iYXJIZWxwZXJzLmdldEdvYWxWYWx1ZXMoXCJ4XCIscixudWxsLHAsZiksYmFyWVBvc2l0aW9uOnUseDpvLHk6bn19fSx7a2V5OlwiZHJhd1N0YWNrZWRDb2x1bW5QYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhlcyxpPXQueCxhPXQueSxzPXQueERpdmlzaW9uLHI9dC5iYXJXaWR0aCxvPXQuemVyb0gsbj10Lmdyb3VwSW5kZXgsbD10LnNlcmllc0dyb3VwLGg9dC5lbFNlcmllcyxjPXRoaXMudyxkPWUuaSxnPWUuaix1PWUuYmM7aWYoYy5nbG9iYWxzLmlzWE51bWVyaWMpe3ZhciBwPWMuZ2xvYmFscy5zZXJpZXNYW2RdW2ddO3B8fChwPTApLGk9KHAtYy5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvLXIvMixjLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmxlbmd0aCYmKGk9KHAtYy5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvLXIvMipjLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmxlbmd0aCl9Zm9yKHZhciBmLHg9aSsoLTEhPT1uP24qcjowKSxiPTAsdj0wO3Y8dGhpcy5ncm91cEN0eC5wcmV2WUYubGVuZ3RoO3YrKyliKz1pc05hTih0aGlzLmdyb3VwQ3R4LnByZXZZRlt2XVtnXSk/MDp0aGlzLmdyb3VwQ3R4LnByZXZZRlt2XVtnXTt2YXIgbT1kO2lmKGwmJihtPWwuaW5kZXhPZihjLmNvbmZpZy5zZXJpZXNbZF0ubmFtZSkpLG0+MCYmIWMuZ2xvYmFscy5pc1hOdW1lcmljfHxtPjAmJmMuZ2xvYmFscy5pc1hOdW1lcmljJiZjLmdsb2JhbHMuc2VyaWVzWFtkLTFdW2ddPT09Yy5nbG9iYWxzLnNlcmllc1hbZF1bZ10pe3ZhciB5LHcsayxBPU1hdGgubWluKHRoaXMueVJhdGlvLmxlbmd0aCsxLGQrMSk7aWYodm9pZCAwIT09dGhpcy5ncm91cEN0eC5wcmV2WVttLTFdJiZ0aGlzLmdyb3VwQ3R4LnByZXZZW20tMV0ubGVuZ3RoKWZvcih2YXIgUz0xO1M8QTtTKyspe3ZhciBDO2lmKCFpc05hTihudWxsPT09KEM9dGhpcy5ncm91cEN0eC5wcmV2WVttLVNdKXx8dm9pZCAwPT09Qz92b2lkIDA6Q1tnXSkpe2s9dGhpcy5ncm91cEN0eC5wcmV2WVttLVNdW2ddO2JyZWFrfX1mb3IodmFyIEw9MTtMPEE7TCsrKXt2YXIgUCxJO2lmKChudWxsPT09KFA9dGhpcy5ncm91cEN0eC5wcmV2WVZhbFttLUxdKXx8dm9pZCAwPT09UD92b2lkIDA6UFtnXSk8MCl7dz10aGlzLnNlcmllc1tkXVtnXT49MD9rLWIrMioodGhpcy5pc1JldmVyc2VkP2I6MCk6azticmVha31pZigobnVsbD09PShJPXRoaXMuZ3JvdXBDdHgucHJldllWYWxbbS1MXSl8fHZvaWQgMD09PUk/dm9pZCAwOklbZ10pPj0wKXt3PXRoaXMuc2VyaWVzW2RdW2ddPj0wP2s6aytiLTIqKHRoaXMuaXNSZXZlcnNlZD9iOjApO2JyZWFrfX12b2lkIDA9PT13JiYodz1jLmdsb2JhbHMuZ3JpZEhlaWdodCksZj1udWxsIT09KHk9dGhpcy5ncm91cEN0eC5wcmV2WUZbMF0pJiZ2b2lkIDAhPT15JiZ5LmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gMD09PXR9KSkmJnRoaXMuZ3JvdXBDdHgucHJldllGLnNsaWNlKDEsbSkuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gaXNOYU4odCl9KSl9KSk/bzp3fWVsc2UgZj1vO2E9dGhpcy5zZXJpZXNbZF1bZ10/Zi10aGlzLnNlcmllc1tkXVtnXS90aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdKzIqKHRoaXMuaXNSZXZlcnNlZD90aGlzLnNlcmllc1tkXVtnXS90aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdOjApOmY7dmFyIFQ9dGhpcy5iYXJIZWxwZXJzLmdldENvbHVtblBhdGhzKHtiYXJYUG9zaXRpb246eCxiYXJXaWR0aDpyLHkxOmYseTI6YSx5UmF0aW86dGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSxzdHJva2VXaWR0aDp0aGlzLnN0cm9rZVdpZHRoLHNlcmllczp0aGlzLnNlcmllcyxzZXJpZXNHcm91cDpsLHJlYWxJbmRleDplLnJlYWxJbmRleCxpOmQsajpnLHc6Y30pO3JldHVybiB0aGlzLmJhckhlbHBlcnMuYmFyQmFja2dyb3VuZCh7YmM6dSxqOmcsaTpkLHgxOngseDI6cixlbFNlcmllczpofSksaSs9cyx7cGF0aFRvOlQucGF0aFRvLHBhdGhGcm9tOlQucGF0aEZyb20sZ29hbFk6dGhpcy5iYXJIZWxwZXJzLmdldEdvYWxWYWx1ZXMoXCJ5XCIsbnVsbCxvLGQsZyksYmFyWFBvc2l0aW9uOngseDpjLmdsb2JhbHMuaXNYTnVtZXJpYz9pLXM6aSx5OmF9fX1dKSxzfSgpLGt0PWZ1bmN0aW9uKHQpe24ocyx5dCk7dmFyIGk9ZChzKTtmdW5jdGlvbiBzKCl7cmV0dXJuIGEodGhpcyxzKSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gcihzLFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQsaSxhKXt2YXIgcz10aGlzLHI9dGhpcy53LG89bmV3IG0odGhpcy5jdHgpLG49ci5nbG9iYWxzLmNvbWJvQ2hhcnRzP2k6ci5jb25maWcuY2hhcnQudHlwZSxsPW5ldyBSKHRoaXMuY3R4KTt0aGlzLmNhbmRsZXN0aWNrT3B0aW9ucz10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmNhbmRsZXN0aWNrLHRoaXMuYm94T3B0aW9ucz10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmJveFBsb3QsdGhpcy5pc0hvcml6b250YWw9ci5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWw7dmFyIGg9bmV3IHkodGhpcy5jdHgscik7dD1oLmdldExvZ1Nlcmllcyh0KSx0aGlzLnNlcmllcz10LHRoaXMueVJhdGlvPWguZ2V0TG9nWVJhdGlvcyh0aGlzLnlSYXRpbyksdGhpcy5iYXJIZWxwZXJzLmluaXRWYXJpYWJsZXModCk7Zm9yKHZhciBjPW8uZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1cIi5jb25jYXQobixcIi1zZXJpZXMgYXBleGNoYXJ0cy1wbG90LXNlcmllc1wiKX0pLGQ9ZnVuY3Rpb24oaSl7cy5pc0JveFBsb3Q9XCJib3hQbG90XCI9PT1yLmNvbmZpZy5jaGFydC50eXBlfHxcImJveFBsb3RcIj09PXIuY29uZmlnLnNlcmllc1tpXS50eXBlO3ZhciBuLGgsZCxnLHU9dm9pZCAwLHA9dm9pZCAwLGY9W10sYj1bXSx2PXIuZ2xvYmFscy5jb21ib0NoYXJ0cz9hW2ldOmksbT1vLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzXCIsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhyLmdsb2JhbHMuc2VyaWVzTmFtZXNbdl0pLHJlbDppKzEsXCJkYXRhOnJlYWxJbmRleFwiOnZ9KTtzLmN0eC5zZXJpZXMuYWRkQ29sbGFwc2VkQ2xhc3NUb1NlcmllcyhtLHYpLHRbaV0ubGVuZ3RoPjAmJihzLnZpc2libGVJPXMudmlzaWJsZUkrMSk7dmFyIHksdztzLnlSYXRpby5sZW5ndGg+MSYmKHMueWF4aXNJbmRleD12KTt2YXIgaz1zLmJhckhlbHBlcnMuaW5pdGlhbFBvc2l0aW9ucygpO3A9ay55LHk9ay5iYXJIZWlnaHQsaD1rLnlEaXZpc2lvbixnPWsuemVyb1csdT1rLngsdz1rLmJhcldpZHRoLG49ay54RGl2aXNpb24sZD1rLnplcm9ILGIucHVzaCh1K3cvMik7Zm9yKHZhciBBPW8uZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIsXCJkYXRhOnJlYWxJbmRleFwiOnZ9KSxTPWZ1bmN0aW9uKGEpe3ZhciBvPXMuYmFySGVscGVycy5nZXRTdHJva2VXaWR0aChpLGEsdiksYz1udWxsLHg9e2luZGV4ZXM6e2k6aSxqOmEscmVhbEluZGV4OnZ9LHg6dSx5OnAsc3Ryb2tlV2lkdGg6byxlbFNlcmllczptfTtjPXMuaXNIb3Jpem9udGFsP3MuZHJhd0hvcml6b250YWxCb3hQYXRocyhlKGUoe30seCkse30se3lEaXZpc2lvbjpoLGJhckhlaWdodDp5LHplcm9XOmd9KSk6cy5kcmF3VmVydGljYWxCb3hQYXRocyhlKGUoe30seCkse30se3hEaXZpc2lvbjpuLGJhcldpZHRoOncsemVyb0g6ZH0pKSxwPWMueSx1PWMueCxhPjAmJmIucHVzaCh1K3cvMiksZi5wdXNoKHApLGMucGF0aFRvLmZvckVhY2goKGZ1bmN0aW9uKGUsbil7dmFyIGg9IXMuaXNCb3hQbG90JiZzLmNhbmRsZXN0aWNrT3B0aW9ucy53aWNrLnVzZUZpbGxDb2xvcj9jLmNvbG9yW25dOnIuZ2xvYmFscy5zdHJva2UuY29sb3JzW2ldLGQ9bC5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOnYsZGF0YVBvaW50SW5kZXg6YSxjb2xvcjpjLmNvbG9yW25dLHZhbHVlOnRbaV1bYV19KTtzLnJlbmRlclNlcmllcyh7cmVhbEluZGV4OnYscGF0aEZpbGw6ZCxsaW5lRmlsbDpoLGo6YSxpOmkscGF0aEZyb206Yy5wYXRoRnJvbSxwYXRoVG86ZSxzdHJva2VXaWR0aDpvLGVsU2VyaWVzOm0seDp1LHk6cCxzZXJpZXM6dCxiYXJIZWlnaHQ6eSxiYXJXaWR0aDp3LGVsRGF0YUxhYmVsc1dyYXA6QSx2aXNpYmxlU2VyaWVzOnMudmlzaWJsZUksdHlwZTpyLmNvbmZpZy5jaGFydC50eXBlfSl9KSl9LEM9MDtDPHIuZ2xvYmFscy5kYXRhUG9pbnRzO0MrKylTKEMpO3IuZ2xvYmFscy5zZXJpZXNYdmFsdWVzW3ZdPWIsci5nbG9iYWxzLnNlcmllc1l2YWx1ZXNbdl09ZixjLmFkZChtKX0sZz0wO2c8dC5sZW5ndGg7ZysrKWQoZyk7cmV0dXJuIGN9fSx7a2V5OlwiZHJhd1ZlcnRpY2FsQm94UGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4ZXMsaT10Lng7dC55O3ZhciBhPXQueERpdmlzaW9uLHM9dC5iYXJXaWR0aCxyPXQuemVyb0gsbz10LnN0cm9rZVdpZHRoLG49dGhpcy53LGw9bmV3IG0odGhpcy5jdHgpLGg9ZS5pLGM9ZS5qLGQ9ITAsZz1uLmNvbmZpZy5wbG90T3B0aW9ucy5jYW5kbGVzdGljay5jb2xvcnMudXB3YXJkLHU9bi5jb25maWcucGxvdE9wdGlvbnMuY2FuZGxlc3RpY2suY29sb3JzLmRvd253YXJkLHA9XCJcIjt0aGlzLmlzQm94UGxvdCYmKHA9W3RoaXMuYm94T3B0aW9ucy5jb2xvcnMubG93ZXIsdGhpcy5ib3hPcHRpb25zLmNvbG9ycy51cHBlcl0pO3ZhciBmPXRoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0seD1lLnJlYWxJbmRleCxiPXRoaXMuZ2V0T0hMQ1ZhbHVlKHgsYyksdj1yLHk9cjtiLm8+Yi5jJiYoZD0hMSk7dmFyIHc9TWF0aC5taW4oYi5vLGIuYyksaz1NYXRoLm1heChiLm8sYi5jKSxBPWIubTtuLmdsb2JhbHMuaXNYTnVtZXJpYyYmKGk9KG4uZ2xvYmFscy5zZXJpZXNYW3hdW2NdLW4uZ2xvYmFscy5taW5YKS90aGlzLnhSYXRpby1zLzIpO3ZhciBTPWkrcyp0aGlzLnZpc2libGVJO3ZvaWQgMD09PXRoaXMuc2VyaWVzW2hdW2NdfHxudWxsPT09dGhpcy5zZXJpZXNbaF1bY10/KHc9cixrPXIpOih3PXItdy9mLGs9ci1rL2Ysdj1yLWIuaC9mLHk9ci1iLmwvZixBPXItYi5tL2YpO3ZhciBDPWwubW92ZShTLHIpLEw9bC5tb3ZlKFMrcy8yLHcpO3JldHVybiBuLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg+MCYmKEw9dGhpcy5nZXRQcmV2aW91c1BhdGgoeCxjLCEwKSksQz10aGlzLmlzQm94UGxvdD9bbC5tb3ZlKFMsdykrbC5saW5lKFMrcy8yLHcpK2wubGluZShTK3MvMix2KStsLmxpbmUoUytzLzQsdikrbC5saW5lKFMrcy1zLzQsdikrbC5saW5lKFMrcy8yLHYpK2wubGluZShTK3MvMix3KStsLmxpbmUoUytzLHcpK2wubGluZShTK3MsQSkrbC5saW5lKFMsQSkrbC5saW5lKFMsdytvLzIpLGwubW92ZShTLEEpK2wubGluZShTK3MsQSkrbC5saW5lKFMrcyxrKStsLmxpbmUoUytzLzIsaykrbC5saW5lKFMrcy8yLHkpK2wubGluZShTK3Mtcy80LHkpK2wubGluZShTK3MvNCx5KStsLmxpbmUoUytzLzIseSkrbC5saW5lKFMrcy8yLGspK2wubGluZShTLGspK2wubGluZShTLEEpK1wielwiXTpbbC5tb3ZlKFMsaykrbC5saW5lKFMrcy8yLGspK2wubGluZShTK3MvMix2KStsLmxpbmUoUytzLzIsaykrbC5saW5lKFMrcyxrKStsLmxpbmUoUytzLHcpK2wubGluZShTK3MvMix3KStsLmxpbmUoUytzLzIseSkrbC5saW5lKFMrcy8yLHcpK2wubGluZShTLHcpK2wubGluZShTLGstby8yKV0sTCs9bC5tb3ZlKFMsdyksbi5nbG9iYWxzLmlzWE51bWVyaWN8fChpKz1hKSx7cGF0aFRvOkMscGF0aEZyb206TCx4OmkseTprLGJhclhQb3NpdGlvbjpTLGNvbG9yOnRoaXMuaXNCb3hQbG90P3A6ZD9bZ106W3VdfX19LHtrZXk6XCJkcmF3SG9yaXpvbnRhbEJveFBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleGVzO3QueDt2YXIgaT10LnksYT10LnlEaXZpc2lvbixzPXQuYmFySGVpZ2h0LHI9dC56ZXJvVyxvPXQuc3Ryb2tlV2lkdGgsbj10aGlzLncsbD1uZXcgbSh0aGlzLmN0eCksaD1lLmksYz1lLmosZD10aGlzLmJveE9wdGlvbnMuY29sb3JzLmxvd2VyO3RoaXMuaXNCb3hQbG90JiYoZD1bdGhpcy5ib3hPcHRpb25zLmNvbG9ycy5sb3dlcix0aGlzLmJveE9wdGlvbnMuY29sb3JzLnVwcGVyXSk7dmFyIGc9dGhpcy5pbnZlcnRlZFlSYXRpbyx1PWUucmVhbEluZGV4LHA9dGhpcy5nZXRPSExDVmFsdWUodSxjKSxmPXIseD1yLGI9TWF0aC5taW4ocC5vLHAuYyksdj1NYXRoLm1heChwLm8scC5jKSx5PXAubTtuLmdsb2JhbHMuaXNYTnVtZXJpYyYmKGk9KG4uZ2xvYmFscy5zZXJpZXNYW3VdW2NdLW4uZ2xvYmFscy5taW5YKS90aGlzLmludmVydGVkWFJhdGlvLXMvMik7dmFyIHc9aStzKnRoaXMudmlzaWJsZUk7dm9pZCAwPT09dGhpcy5zZXJpZXNbaF1bY118fG51bGw9PT10aGlzLnNlcmllc1toXVtjXT8oYj1yLHY9cik6KGI9citiL2csdj1yK3YvZyxmPXIrcC5oL2cseD1yK3AubC9nLHk9citwLm0vZyk7dmFyIGs9bC5tb3ZlKHIsdyksQT1sLm1vdmUoYix3K3MvMik7cmV0dXJuIG4uZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYoQT10aGlzLmdldFByZXZpb3VzUGF0aCh1LGMsITApKSxrPVtsLm1vdmUoYix3KStsLmxpbmUoYix3K3MvMikrbC5saW5lKGYsdytzLzIpK2wubGluZShmLHcrcy8yLXMvNCkrbC5saW5lKGYsdytzLzIrcy80KStsLmxpbmUoZix3K3MvMikrbC5saW5lKGIsdytzLzIpK2wubGluZShiLHcrcykrbC5saW5lKHksdytzKStsLmxpbmUoeSx3KStsLmxpbmUoYitvLzIsdyksbC5tb3ZlKHksdykrbC5saW5lKHksdytzKStsLmxpbmUodix3K3MpK2wubGluZSh2LHcrcy8yKStsLmxpbmUoeCx3K3MvMikrbC5saW5lKHgsdytzLXMvNCkrbC5saW5lKHgsdytzLzQpK2wubGluZSh4LHcrcy8yKStsLmxpbmUodix3K3MvMikrbC5saW5lKHYsdykrbC5saW5lKHksdykrXCJ6XCJdLEErPWwubW92ZShiLHcpLG4uZ2xvYmFscy5pc1hOdW1lcmljfHwoaSs9YSkse3BhdGhUbzprLHBhdGhGcm9tOkEseDp2LHk6aSxiYXJZUG9zaXRpb246dyxjb2xvcjpkfX19LHtrZXk6XCJnZXRPSExDVmFsdWVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztyZXR1cm57bzp0aGlzLmlzQm94UGxvdD9pLmdsb2JhbHMuc2VyaWVzQ2FuZGxlSFt0XVtlXTppLmdsb2JhbHMuc2VyaWVzQ2FuZGxlT1t0XVtlXSxoOnRoaXMuaXNCb3hQbG90P2kuZ2xvYmFscy5zZXJpZXNDYW5kbGVPW3RdW2VdOmkuZ2xvYmFscy5zZXJpZXNDYW5kbGVIW3RdW2VdLG06aS5nbG9iYWxzLnNlcmllc0NhbmRsZU1bdF1bZV0sbDp0aGlzLmlzQm94UGxvdD9pLmdsb2JhbHMuc2VyaWVzQ2FuZGxlQ1t0XVtlXTppLmdsb2JhbHMuc2VyaWVzQ2FuZGxlTFt0XVtlXSxjOnRoaXMuaXNCb3hQbG90P2kuZ2xvYmFscy5zZXJpZXNDYW5kbGVMW3RdW2VdOmkuZ2xvYmFscy5zZXJpZXNDYW5kbGVDW3RdW2VdfX19XSksc30oKSxBdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiY2hlY2tDb2xvclJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT0hMSxpPXQuY29uZmlnLnBsb3RPcHRpb25zW3QuY29uZmlnLmNoYXJ0LnR5cGVdO3JldHVybiBpLmNvbG9yU2NhbGUucmFuZ2VzLmxlbmd0aD4wJiZpLmNvbG9yU2NhbGUucmFuZ2VzLm1hcCgoZnVuY3Rpb24odCxpKXt0LmZyb208PTAmJihlPSEwKX0pKSxlfX0se2tleTpcImdldFNoYWRlQ29sb3JcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz10aGlzLncscj0xLG89cy5jb25maWcucGxvdE9wdGlvbnNbdF0uc2hhZGVJbnRlbnNpdHksbj10aGlzLmRldGVybWluZUNvbG9yKHQsZSxpKTtzLmdsb2JhbHMuaGFzTmVnc3x8YT9yPXMuY29uZmlnLnBsb3RPcHRpb25zW3RdLnJldmVyc2VOZWdhdGl2ZVNoYWRlP24ucGVyY2VudDwwP24ucGVyY2VudC8xMDAqKDEuMjUqbyk6KDEtbi5wZXJjZW50LzEwMCkqKDEuMjUqbyk6bi5wZXJjZW50PD0wPzEtKDErbi5wZXJjZW50LzEwMCkqbzooMS1uLnBlcmNlbnQvMTAwKSpvOihyPTEtbi5wZXJjZW50LzEwMCxcInRyZWVtYXBcIj09PXQmJihyPSgxLW4ucGVyY2VudC8xMDApKigxLjI1Km8pKSk7dmFyIGw9bi5jb2xvcixoPW5ldyB4O3JldHVybiBzLmNvbmZpZy5wbG90T3B0aW9uc1t0XS5lbmFibGVTaGFkZXMmJihsPVwiZGFya1wiPT09dGhpcy53LmNvbmZpZy50aGVtZS5tb2RlP3guaGV4VG9SZ2JhKGguc2hhZGVDb2xvcigtMSpyLG4uY29sb3IpLHMuY29uZmlnLmZpbGwub3BhY2l0eSk6eC5oZXhUb1JnYmEoaC5zaGFkZUNvbG9yKHIsbi5jb2xvcikscy5jb25maWcuZmlsbC5vcGFjaXR5KSkse2NvbG9yOmwsY29sb3JQcm9wczpufX19LHtrZXk6XCJkZXRlcm1pbmVDb2xvclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLncscz1hLmdsb2JhbHMuc2VyaWVzW2VdW2ldLHI9YS5jb25maWcucGxvdE9wdGlvbnNbdF0sbz1yLmNvbG9yU2NhbGUuaW52ZXJzZT9pOmU7ci5kaXN0cmlidXRlZCYmXCJ0cmVlbWFwXCI9PT1hLmNvbmZpZy5jaGFydC50eXBlJiYobz1pKTt2YXIgbj1hLmdsb2JhbHMuY29sb3JzW29dLGw9bnVsbCxoPU1hdGgubWluLmFwcGx5KE1hdGgsdShhLmdsb2JhbHMuc2VyaWVzW2VdKSksYz1NYXRoLm1heC5hcHBseShNYXRoLHUoYS5nbG9iYWxzLnNlcmllc1tlXSkpO3IuZGlzdHJpYnV0ZWR8fFwiaGVhdG1hcFwiIT09dHx8KGg9YS5nbG9iYWxzLm1pblksYz1hLmdsb2JhbHMubWF4WSksdm9pZCAwIT09ci5jb2xvclNjYWxlLm1pbiYmKGg9ci5jb2xvclNjYWxlLm1pbjxhLmdsb2JhbHMubWluWT9yLmNvbG9yU2NhbGUubWluOmEuZ2xvYmFscy5taW5ZLGM9ci5jb2xvclNjYWxlLm1heD5hLmdsb2JhbHMubWF4WT9yLmNvbG9yU2NhbGUubWF4OmEuZ2xvYmFscy5tYXhZKTt2YXIgZD1NYXRoLmFicyhjKStNYXRoLmFicyhoKSxnPTEwMCpzLygwPT09ZD9kLTFlLTY6ZCk7ci5jb2xvclNjYWxlLnJhbmdlcy5sZW5ndGg+MCYmci5jb2xvclNjYWxlLnJhbmdlcy5tYXAoKGZ1bmN0aW9uKHQsZSl7aWYocz49dC5mcm9tJiZzPD10LnRvKXtuPXQuY29sb3IsbD10LmZvcmVDb2xvcj90LmZvcmVDb2xvcjpudWxsLGg9dC5mcm9tLGM9dC50bzt2YXIgaT1NYXRoLmFicyhjKStNYXRoLmFicyhoKTtnPTEwMCpzLygwPT09aT9pLTFlLTY6aSl9fSkpO3JldHVybntjb2xvcjpuLGZvcmVDb2xvcjpsLHBlcmNlbnQ6Z319fSx7a2V5OlwiY2FsY3VsYXRlRGF0YUxhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQudGV4dCxpPXQueCxhPXQueSxzPXQuaSxyPXQuaixvPXQuY29sb3JQcm9wcyxuPXQuZm9udFNpemUsbD10aGlzLncuY29uZmlnLmRhdGFMYWJlbHMsaD1uZXcgbSh0aGlzLmN0eCksYz1uZXcgTyh0aGlzLmN0eCksZD1udWxsO2lmKGwuZW5hYmxlZCl7ZD1oLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YS1sYWJlbHNcIn0pO3ZhciBnPWwub2Zmc2V0WCx1PWwub2Zmc2V0WSxwPWkrZyxmPWErcGFyc2VGbG9hdChsLnN0eWxlLmZvbnRTaXplKS8zK3U7Yy5wbG90RGF0YUxhYmVsc1RleHQoe3g6cCx5OmYsdGV4dDplLGk6cyxqOnIsY29sb3I6by5mb3JlQ29sb3IscGFyZW50OmQsZm9udFNpemU6bixkYXRhTGFiZWxzQ29uZmlnOmx9KX1yZXR1cm4gZH19LHtrZXk6XCJhZGRMaXN0ZW5lcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgbSh0aGlzLmN0eCk7dC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsZS5wYXRoTW91c2VFbnRlci5iaW5kKHRoaXMsdCkpLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLGUucGF0aE1vdXNlTGVhdmUuYmluZCh0aGlzLHQpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLGUucGF0aE1vdXNlRG93bi5iaW5kKHRoaXMsdCkpfX1dKSx0fSgpLFN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy54UmF0aW89aS54UmF0aW8sdGhpcy55UmF0aW89aS55UmF0aW8sdGhpcy5keW5hbWljQW5pbT10aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbix0aGlzLmhlbHBlcnM9bmV3IEF0KGUpLHRoaXMucmVjdFJhZGl1cz10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAucmFkaXVzLHRoaXMuc3Ryb2tlV2lkdGg9dGhpcy53LmNvbmZpZy5zdHJva2Uuc2hvdz90aGlzLncuY29uZmlnLnN0cm9rZS53aWR0aDowfXJldHVybiByKHQsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpLGE9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWhlYXRtYXBcIn0pO2EuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hc2tcIi5jb25jYXQoZS5nbG9iYWxzLmN1aWQsXCIpXCIpKTt2YXIgcz1lLmdsb2JhbHMuZ3JpZFdpZHRoL2UuZ2xvYmFscy5kYXRhUG9pbnRzLHI9ZS5nbG9iYWxzLmdyaWRIZWlnaHQvZS5nbG9iYWxzLnNlcmllcy5sZW5ndGgsbz0wLG49ITE7dGhpcy5uZWdSYW5nZT10aGlzLmhlbHBlcnMuY2hlY2tDb2xvclJhbmdlKCk7dmFyIGw9dC5zbGljZSgpO2UuY29uZmlnLnlheGlzWzBdLnJldmVyc2VkJiYobj0hMCxsLnJldmVyc2UoKSk7Zm9yKHZhciBoPW4/MDpsLmxlbmd0aC0xO24/aDxsLmxlbmd0aDpoPj0wO24/aCsrOmgtLSl7dmFyIGM9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcyBhcGV4Y2hhcnRzLWhlYXRtYXAtc2VyaWVzXCIsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhlLmdsb2JhbHMuc2VyaWVzTmFtZXNbaF0pLHJlbDpoKzEsXCJkYXRhOnJlYWxJbmRleFwiOmh9KTtpZih0aGlzLmN0eC5zZXJpZXMuYWRkQ29sbGFwc2VkQ2xhc3NUb1NlcmllcyhjLGgpLGUuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIGQ9ZS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdztuZXcgdih0aGlzLmN0eCkuZHJvcFNoYWRvdyhjLGQsaCl9Zm9yKHZhciBnPTAsdT1lLmNvbmZpZy5wbG90T3B0aW9ucy5oZWF0bWFwLnNoYWRlSW50ZW5zaXR5LHA9MDtwPGxbaF0ubGVuZ3RoO3ArKyl7dmFyIGY9dGhpcy5oZWxwZXJzLmdldFNoYWRlQ29sb3IoZS5jb25maWcuY2hhcnQudHlwZSxoLHAsdGhpcy5uZWdSYW5nZSksYj1mLmNvbG9yLHk9Zi5jb2xvclByb3BzO2lmKFwiaW1hZ2VcIj09PWUuY29uZmlnLmZpbGwudHlwZSliPW5ldyBSKHRoaXMuY3R4KS5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOmgsZGF0YVBvaW50SW5kZXg6cCxvcGFjaXR5OmUuZ2xvYmFscy5oYXNOZWdzP3kucGVyY2VudDwwPzEtKDEreS5wZXJjZW50LzEwMCk6dSt5LnBlcmNlbnQvMTAwOnkucGVyY2VudC8xMDAscGF0dGVybklEOngucmFuZG9tSWQoKSx3aWR0aDplLmNvbmZpZy5maWxsLmltYWdlLndpZHRoP2UuY29uZmlnLmZpbGwuaW1hZ2Uud2lkdGg6cyxoZWlnaHQ6ZS5jb25maWcuZmlsbC5pbWFnZS5oZWlnaHQ/ZS5jb25maWcuZmlsbC5pbWFnZS5oZWlnaHQ6cn0pO3ZhciB3PXRoaXMucmVjdFJhZGl1cyxrPWkuZHJhd1JlY3QoZyxvLHMscix3KTtpZihrLmF0dHIoe2N4OmcsY3k6b30pLGsubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1oZWF0bWFwLXJlY3RcIiksYy5hZGQoayksay5hdHRyKHtmaWxsOmIsaTpoLGluZGV4OmgsajpwLHZhbDpsW2hdW3BdLFwic3Ryb2tlLXdpZHRoXCI6dGhpcy5zdHJva2VXaWR0aCxzdHJva2U6ZS5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC51c2VGaWxsQ29sb3JBc1N0cm9rZT9iOmUuZ2xvYmFscy5zdHJva2UuY29sb3JzWzBdLGNvbG9yOmJ9KSx0aGlzLmhlbHBlcnMuYWRkTGlzdGVuZXJzKGspLGUuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCYmIWUuZ2xvYmFscy5kYXRhQ2hhbmdlZCl7dmFyIEE9MTtlLmdsb2JhbHMucmVzaXplZHx8KEE9ZS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCksdGhpcy5hbmltYXRlSGVhdE1hcChrLGcsbyxzLHIsQSl9aWYoZS5nbG9iYWxzLmRhdGFDaGFuZ2VkKXt2YXIgUz0xO2lmKHRoaXMuZHluYW1pY0FuaW0uZW5hYmxlZCYmZS5nbG9iYWxzLnNob3VsZEFuaW1hdGUpe1M9dGhpcy5keW5hbWljQW5pbS5zcGVlZDt2YXIgQz1lLmdsb2JhbHMucHJldmlvdXNQYXRoc1toXSYmZS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbaF1bcF0mJmUuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2hdW3BdLmNvbG9yO0N8fChDPVwicmdiYSgyNTUsIDI1NSwgMjU1LCAwKVwiKSx0aGlzLmFuaW1hdGVIZWF0Q29sb3Ioayx4LmlzQ29sb3JIZXgoQyk/Qzp4LnJnYjJoZXgoQykseC5pc0NvbG9ySGV4KGIpP2I6eC5yZ2IyaGV4KGIpLFMpfX12YXIgTD0oMCxlLmNvbmZpZy5kYXRhTGFiZWxzLmZvcm1hdHRlcikoZS5nbG9iYWxzLnNlcmllc1toXVtwXSx7dmFsdWU6ZS5nbG9iYWxzLnNlcmllc1toXVtwXSxzZXJpZXNJbmRleDpoLGRhdGFQb2ludEluZGV4OnAsdzplfSksUD10aGlzLmhlbHBlcnMuY2FsY3VsYXRlRGF0YUxhYmVscyh7dGV4dDpMLHg6ZytzLzIseTpvK3IvMixpOmgsajpwLGNvbG9yUHJvcHM6eSxzZXJpZXM6bH0pO251bGwhPT1QJiZjLmFkZChQKSxnKz1zfW8rPXIsYS5hZGQoYyl9dmFyIEk9ZS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0LnNsaWNlKCk7ZS5jb25maWcueWF4aXNbMF0ucmV2ZXJzZWQ/SS51bnNoaWZ0KFwiXCIpOkkucHVzaChcIlwiKSxlLmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQ9STt2YXIgVD1lLmdsb2JhbHMuZ3JpZEhlaWdodC9lLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDtyZXR1cm4gZS5jb25maWcueWF4aXNbMF0ubGFiZWxzLm9mZnNldFk9LVQvMixhfX0se2tleTpcImFuaW1hdGVIZWF0TWFwXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzLHIpe3ZhciBvPW5ldyBiKHRoaXMuY3R4KTtvLmFuaW1hdGVSZWN0KHQse3g6ZSthLzIseTppK3MvMix3aWR0aDowLGhlaWdodDowfSx7eDplLHk6aSx3aWR0aDphLGhlaWdodDpzfSxyLChmdW5jdGlvbigpe28uYW5pbWF0aW9uQ29tcGxldGVkKHQpfSkpfX0se2tleTpcImFuaW1hdGVIZWF0Q29sb3JcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt0LmF0dHIoe2ZpbGw6ZX0pLmFuaW1hdGUoYSkuYXR0cih7ZmlsbDppfSl9fV0pLHR9KCksQ3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImRyYXdZQXhpc1RleHRzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9dGhpcy53LHI9cy5jb25maWcueWF4aXNbMF0sbz1zLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXTtyZXR1cm4gbmV3IG0odGhpcy5jdHgpLmRyYXdUZXh0KHt4OnQrci5sYWJlbHMub2Zmc2V0WCx5OmUrci5sYWJlbHMub2Zmc2V0WSx0ZXh0Om8oYSxpKSx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9udFNpemU6ci5sYWJlbHMuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTpyLmxhYmVscy5zdHlsZS5mb250RmFtaWx5LGZvcmVDb2xvcjpBcnJheS5pc0FycmF5KHIubGFiZWxzLnN0eWxlLmNvbG9ycyk/ci5sYWJlbHMuc3R5bGUuY29sb3JzW2ldOnIubGFiZWxzLnN0eWxlLmNvbG9yc30pfX1dKSx0fSgpLEx0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53O3ZhciBpPXRoaXMudzt0aGlzLmNoYXJ0VHlwZT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUsdGhpcy5pbml0aWFsQW5pbT10aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCx0aGlzLmR5bmFtaWNBbmltPXRoaXMuaW5pdGlhbEFuaW0mJnRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQsdGhpcy5hbmltQmVnaW5BcnI9WzBdLHRoaXMuYW5pbUR1cj0wLHRoaXMuZG9udXREYXRhTGFiZWxzPXRoaXMudy5jb25maWcucGxvdE9wdGlvbnMucGllLmRvbnV0LmxhYmVscyx0aGlzLmxpbmVDb2xvckFycj12b2lkIDAhPT1pLmdsb2JhbHMuc3Ryb2tlLmNvbG9ycz9pLmdsb2JhbHMuc3Ryb2tlLmNvbG9yczppLmdsb2JhbHMuY29sb3JzLHRoaXMuZGVmYXVsdFNpemU9TWF0aC5taW4oaS5nbG9iYWxzLmdyaWRXaWR0aCxpLmdsb2JhbHMuZ3JpZEhlaWdodCksdGhpcy5jZW50ZXJZPXRoaXMuZGVmYXVsdFNpemUvMix0aGlzLmNlbnRlclg9aS5nbG9iYWxzLmdyaWRXaWR0aC8yLFwicmFkaWFsQmFyXCI9PT1pLmNvbmZpZy5jaGFydC50eXBlP3RoaXMuZnVsbEFuZ2xlPTM2MDp0aGlzLmZ1bGxBbmdsZT1NYXRoLmFicyhpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZW5kQW5nbGUtaS5jb25maWcucGxvdE9wdGlvbnMucGllLnN0YXJ0QW5nbGUpLHRoaXMuaW5pdGlhbEFuZ2xlPWkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5zdGFydEFuZ2xlJXRoaXMuZnVsbEFuZ2xlLGkuZ2xvYmFscy5yYWRpYWxTaXplPXRoaXMuZGVmYXVsdFNpemUvMi4wNS1pLmNvbmZpZy5zdHJva2Uud2lkdGgtKGkuY29uZmlnLmNoYXJ0LnNwYXJrbGluZS5lbmFibGVkPzA6aS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5ibHVyKSx0aGlzLmRvbnV0U2l6ZT1pLmdsb2JhbHMucmFkaWFsU2l6ZSpwYXJzZUludChpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZG9udXQuc2l6ZSwxMCkvMTAwLHRoaXMubWF4WT0wLHRoaXMuc2xpY2VMYWJlbHM9W10sdGhpcy5zbGljZVNpemVzPVtdLHRoaXMucHJldlNlY3RvckFuZ2xlQXJyPVtdfXJldHVybiByKHQsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudyxhPW5ldyBtKHRoaXMuY3R4KTtpZih0aGlzLnJldD1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcGllXCJ9KSxpLmdsb2JhbHMubm9EYXRhKXJldHVybiB0aGlzLnJldDtmb3IodmFyIHM9MCxyPTA7cjx0Lmxlbmd0aDtyKyspcys9eC5uZWdUb1plcm8odFtyXSk7dmFyIG89W10sbj1hLmdyb3VwKCk7MD09PXMmJihzPTFlLTUpLHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5tYXhZPU1hdGgubWF4KGUubWF4WSx0KX0pKSxpLmNvbmZpZy55YXhpc1swXS5tYXgmJih0aGlzLm1heFk9aS5jb25maWcueWF4aXNbMF0ubWF4KSxcImJhY2tcIj09PWkuY29uZmlnLmdyaWQucG9zaXRpb24mJlwicG9sYXJBcmVhXCI9PT10aGlzLmNoYXJ0VHlwZSYmdGhpcy5kcmF3UG9sYXJFbGVtZW50cyh0aGlzLnJldCk7Zm9yKHZhciBsPTA7bDx0Lmxlbmd0aDtsKyspe3ZhciBoPXRoaXMuZnVsbEFuZ2xlKngubmVnVG9aZXJvKHRbbF0pL3M7by5wdXNoKGgpLFwicG9sYXJBcmVhXCI9PT10aGlzLmNoYXJ0VHlwZT8ob1tsXT10aGlzLmZ1bGxBbmdsZS90Lmxlbmd0aCx0aGlzLnNsaWNlU2l6ZXMucHVzaChpLmdsb2JhbHMucmFkaWFsU2l6ZSp0W2xdL3RoaXMubWF4WSkpOnRoaXMuc2xpY2VTaXplcy5wdXNoKGkuZ2xvYmFscy5yYWRpYWxTaXplKX1pZihpLmdsb2JhbHMuZGF0YUNoYW5nZWQpe2Zvcih2YXIgYyxkPTAsZz0wO2c8aS5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoO2crKylkKz14Lm5lZ1RvWmVybyhpLmdsb2JhbHMucHJldmlvdXNQYXRoc1tnXSk7Zm9yKHZhciB1PTA7dTxpLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg7dSsrKWM9dGhpcy5mdWxsQW5nbGUqeC5uZWdUb1plcm8oaS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbdV0pL2QsdGhpcy5wcmV2U2VjdG9yQW5nbGVBcnIucHVzaChjKX10aGlzLmRvbnV0U2l6ZTwwJiYodGhpcy5kb251dFNpemU9MCk7dmFyIHA9aS5jb25maWcucGxvdE9wdGlvbnMucGllLmN1c3RvbVNjYWxlLGY9aS5nbG9iYWxzLmdyaWRXaWR0aC8yLGI9aS5nbG9iYWxzLmdyaWRIZWlnaHQvMix2PWYtaS5nbG9iYWxzLmdyaWRXaWR0aC8yKnAseT1iLWkuZ2xvYmFscy5ncmlkSGVpZ2h0LzIqcDtpZihcImRvbnV0XCI9PT10aGlzLmNoYXJ0VHlwZSl7dmFyIHc9YS5kcmF3Q2lyY2xlKHRoaXMuZG9udXRTaXplKTt3LmF0dHIoe2N4OnRoaXMuY2VudGVyWCxjeTp0aGlzLmNlbnRlclksZmlsbDppLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZG9udXQuYmFja2dyb3VuZD9pLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZG9udXQuYmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCJ9KSxuLmFkZCh3KX12YXIgaz10aGlzLmRyYXdBcmNzKG8sdCk7aWYodGhpcy5zbGljZUxhYmVscy5mb3JFYWNoKChmdW5jdGlvbih0KXtrLmFkZCh0KX0pKSxuLmF0dHIoe3RyYW5zZm9ybTpcInRyYW5zbGF0ZShcIi5jb25jYXQodixcIiwgXCIpLmNvbmNhdCh5LFwiKSBzY2FsZShcIikuY29uY2F0KHAsXCIpXCIpfSksbi5hZGQoayksdGhpcy5yZXQuYWRkKG4pLHRoaXMuZG9udXREYXRhTGFiZWxzLnNob3cpe3ZhciBBPXRoaXMucmVuZGVySW5uZXJEYXRhTGFiZWxzKHRoaXMuZG9udXREYXRhTGFiZWxzLHtob2xsb3dTaXplOnRoaXMuZG9udXRTaXplLGNlbnRlclg6dGhpcy5jZW50ZXJYLGNlbnRlclk6dGhpcy5jZW50ZXJZLG9wYWNpdHk6dGhpcy5kb251dERhdGFMYWJlbHMuc2hvdyx0cmFuc2xhdGVYOnYsdHJhbnNsYXRlWTp5fSk7dGhpcy5yZXQuYWRkKEEpfXJldHVyblwiZnJvbnRcIj09PWkuY29uZmlnLmdyaWQucG9zaXRpb24mJlwicG9sYXJBcmVhXCI9PT10aGlzLmNoYXJ0VHlwZSYmdGhpcy5kcmF3UG9sYXJFbGVtZW50cyh0aGlzLnJldCksdGhpcy5yZXR9fSx7a2V5OlwiZHJhd0FyY3NcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPW5ldyB2KHRoaXMuY3R4KSxzPW5ldyBtKHRoaXMuY3R4KSxyPW5ldyBSKHRoaXMuY3R4KSxvPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zbGljZXNcIn0pLG49dGhpcy5pbml0aWFsQW5nbGUsbD10aGlzLmluaXRpYWxBbmdsZSxoPXRoaXMuaW5pdGlhbEFuZ2xlLGM9dGhpcy5pbml0aWFsQW5nbGU7dGhpcy5zdHJva2VXaWR0aD1pLmNvbmZpZy5zdHJva2Uuc2hvdz9pLmNvbmZpZy5zdHJva2Uud2lkdGg6MDtmb3IodmFyIGQ9MDtkPHQubGVuZ3RoO2QrKyl7dmFyIGc9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcyBhcGV4Y2hhcnRzLXBpZS1zZXJpZXNcIixzZXJpZXNOYW1lOnguZXNjYXBlU3RyaW5nKGkuZ2xvYmFscy5zZXJpZXNOYW1lc1tkXSkscmVsOmQrMSxcImRhdGE6cmVhbEluZGV4XCI6ZH0pO28uYWRkKGcpLGw9YyxoPShuPWgpK3RbZF0sYz1sK3RoaXMucHJldlNlY3RvckFuZ2xlQXJyW2RdO3ZhciB1PWg8bj90aGlzLmZ1bGxBbmdsZStoLW46aC1uLHA9ci5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOmQsc2l6ZTp0aGlzLnNsaWNlU2l6ZXNbZF0sdmFsdWU6ZVtkXX0pLGY9dGhpcy5nZXRDaGFuZ2VkUGF0aChsLGMpLGI9cy5kcmF3UGF0aCh7ZDpmLHN0cm9rZTpBcnJheS5pc0FycmF5KHRoaXMubGluZUNvbG9yQXJyKT90aGlzLmxpbmVDb2xvckFycltkXTp0aGlzLmxpbmVDb2xvckFycixzdHJva2VXaWR0aDowLGZpbGw6cCxmaWxsT3BhY2l0eTppLmNvbmZpZy5maWxsLm9wYWNpdHksY2xhc3NlczpcImFwZXhjaGFydHMtcGllLWFyZWEgYXBleGNoYXJ0cy1cIi5jb25jYXQodGhpcy5jaGFydFR5cGUudG9Mb3dlckNhc2UoKSxcIi1zbGljZS1cIikuY29uY2F0KGQpfSk7aWYoYi5hdHRyKHtpbmRleDowLGo6ZH0pLGEuc2V0U2VsZWN0aW9uRmlsdGVyKGIsMCxkKSxpLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciB5PWkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7YS5kcm9wU2hhZG93KGIseSxkKX10aGlzLmFkZExpc3RlbmVycyhiLHRoaXMuZG9udXREYXRhTGFiZWxzKSxtLnNldEF0dHJzKGIubm9kZSx7XCJkYXRhOmFuZ2xlXCI6dSxcImRhdGE6c3RhcnRBbmdsZVwiOm4sXCJkYXRhOnN0cm9rZVdpZHRoXCI6dGhpcy5zdHJva2VXaWR0aCxcImRhdGE6dmFsdWVcIjplW2RdfSk7dmFyIHc9e3g6MCx5OjB9O1wicGllXCI9PT10aGlzLmNoYXJ0VHlwZXx8XCJwb2xhckFyZWFcIj09PXRoaXMuY2hhcnRUeXBlP3c9eC5wb2xhclRvQ2FydGVzaWFuKHRoaXMuY2VudGVyWCx0aGlzLmNlbnRlclksaS5nbG9iYWxzLnJhZGlhbFNpemUvMS4yNStpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZGF0YUxhYmVscy5vZmZzZXQsKG4rdS8yKSV0aGlzLmZ1bGxBbmdsZSk6XCJkb251dFwiPT09dGhpcy5jaGFydFR5cGUmJih3PXgucG9sYXJUb0NhcnRlc2lhbih0aGlzLmNlbnRlclgsdGhpcy5jZW50ZXJZLChpLmdsb2JhbHMucmFkaWFsU2l6ZSt0aGlzLmRvbnV0U2l6ZSkvMitpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZGF0YUxhYmVscy5vZmZzZXQsKG4rdS8yKSV0aGlzLmZ1bGxBbmdsZSkpLGcuYWRkKGIpO3ZhciBrPTA7aWYoIXRoaXMuaW5pdGlhbEFuaW18fGkuZ2xvYmFscy5yZXNpemVkfHxpLmdsb2JhbHMuZGF0YUNoYW5nZWQ/dGhpcy5hbmltQmVnaW5BcnIucHVzaCgwKTooMD09PShrPXUvdGhpcy5mdWxsQW5nbGUqaS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCkmJihrPTEpLHRoaXMuYW5pbUR1cj1rK3RoaXMuYW5pbUR1cix0aGlzLmFuaW1CZWdpbkFyci5wdXNoKHRoaXMuYW5pbUR1cikpLHRoaXMuZHluYW1pY0FuaW0mJmkuZ2xvYmFscy5kYXRhQ2hhbmdlZD90aGlzLmFuaW1hdGVQYXRocyhiLHtzaXplOnRoaXMuc2xpY2VTaXplc1tkXSxlbmRBbmdsZTpoLHN0YXJ0QW5nbGU6bixwcmV2U3RhcnRBbmdsZTpsLHByZXZFbmRBbmdsZTpjLGFuaW1hdGVTdGFydGluZ1BvczohMCxpOmQsYW5pbUJlZ2luQXJyOnRoaXMuYW5pbUJlZ2luQXJyLHNob3VsZFNldFByZXZQYXRoczohMCxkdXI6aS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkfSk6dGhpcy5hbmltYXRlUGF0aHMoYix7c2l6ZTp0aGlzLnNsaWNlU2l6ZXNbZF0sZW5kQW5nbGU6aCxzdGFydEFuZ2xlOm4saTpkLHRvdGFsSXRlbXM6dC5sZW5ndGgtMSxhbmltQmVnaW5BcnI6dGhpcy5hbmltQmVnaW5BcnIsZHVyOmt9KSxpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZXhwYW5kT25DbGljayYmXCJwb2xhckFyZWFcIiE9PXRoaXMuY2hhcnRUeXBlJiZiLmNsaWNrKHRoaXMucGllQ2xpY2tlZC5iaW5kKHRoaXMsZCkpLHZvaWQgMCE9PWkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbMF0mJmkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbMF0uaW5kZXhPZihkKT4tMSYmdGhpcy5waWVDbGlja2VkKGQpLGkuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZCl7dmFyIEE9dy54LFM9dy55LEM9MTAwKnUvdGhpcy5mdWxsQW5nbGUrXCIlXCI7aWYoMCE9PXUmJmkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kYXRhTGFiZWxzLm1pbkFuZ2xlVG9TaG93TGFiZWw8dFtkXSl7dmFyIEw9aS5jb25maWcuZGF0YUxhYmVscy5mb3JtYXR0ZXI7dm9pZCAwIT09TCYmKEM9TChpLmdsb2JhbHMuc2VyaWVzUGVyY2VudFtkXVswXSx7c2VyaWVzSW5kZXg6ZCx3Oml9KSk7dmFyIFA9aS5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzW2RdLEk9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIn0pLFQ9cy5kcmF3VGV4dCh7eDpBLHk6Uyx0ZXh0OkMsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvbnRTaXplOmkuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTppLmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDppLmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmZvbnRXZWlnaHQsZm9yZUNvbG9yOlB9KTtpZihJLmFkZChUKSxpLmNvbmZpZy5kYXRhTGFiZWxzLmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIE09aS5jb25maWcuZGF0YUxhYmVscy5kcm9wU2hhZG93O2EuZHJvcFNoYWRvdyhULE0pfVQubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1waWUtbGFiZWxcIiksaS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5hbmltYXRlJiYhMT09PWkuZ2xvYmFscy5yZXNpemVkJiYoVC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXBpZS1sYWJlbC1kZWxheVwiKSxULm5vZGUuc3R5bGUuYW5pbWF0aW9uRGVsYXk9aS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZC85NDArXCJzXCIpLHRoaXMuc2xpY2VMYWJlbHMucHVzaChJKX19fXJldHVybiBvfX0se2tleTpcImFkZExpc3RlbmVyc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9bmV3IG0odGhpcy5jdHgpO3Qubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLGkucGF0aE1vdXNlRW50ZXIuYmluZCh0aGlzLHQpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIixpLnBhdGhNb3VzZUxlYXZlLmJpbmQodGhpcyx0KSksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsdGhpcy5yZXZlcnREYXRhTGFiZWxzSW5uZXIuYmluZCh0aGlzLHQubm9kZSxlKSksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixpLnBhdGhNb3VzZURvd24uYmluZCh0aGlzLHQpKSx0aGlzLmRvbnV0RGF0YUxhYmVscy50b3RhbC5zaG93QWx3YXlzfHwodC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsdGhpcy5wcmludERhdGFMYWJlbHNJbm5lci5iaW5kKHRoaXMsdC5ub2RlLGUpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLHRoaXMucHJpbnREYXRhTGFiZWxzSW5uZXIuYmluZCh0aGlzLHQubm9kZSxlKSkpfX0se2tleTpcImFuaW1hdGVQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9ZS5lbmRBbmdsZTxlLnN0YXJ0QW5nbGU/dGhpcy5mdWxsQW5nbGUrZS5lbmRBbmdsZS1lLnN0YXJ0QW5nbGU6ZS5lbmRBbmdsZS1lLnN0YXJ0QW5nbGUscz1hLHI9ZS5zdGFydEFuZ2xlLG89ZS5zdGFydEFuZ2xlO3ZvaWQgMCE9PWUucHJldlN0YXJ0QW5nbGUmJnZvaWQgMCE9PWUucHJldkVuZEFuZ2xlJiYocj1lLnByZXZFbmRBbmdsZSxzPWUucHJldkVuZEFuZ2xlPGUucHJldlN0YXJ0QW5nbGU/dGhpcy5mdWxsQW5nbGUrZS5wcmV2RW5kQW5nbGUtZS5wcmV2U3RhcnRBbmdsZTplLnByZXZFbmRBbmdsZS1lLnByZXZTdGFydEFuZ2xlKSxlLmk9PT1pLmNvbmZpZy5zZXJpZXMubGVuZ3RoLTEmJihhK28+dGhpcy5mdWxsQW5nbGU/ZS5lbmRBbmdsZT1lLmVuZEFuZ2xlLShhK28pOmErbzx0aGlzLmZ1bGxBbmdsZSYmKGUuZW5kQW5nbGU9ZS5lbmRBbmdsZSsodGhpcy5mdWxsQW5nbGUtKGErbykpKSksYT09PXRoaXMuZnVsbEFuZ2xlJiYoYT10aGlzLmZ1bGxBbmdsZS0uMDEpLHRoaXMuYW5pbWF0ZUFyYyh0LHIsbyxhLHMsZSl9fSx7a2V5OlwiYW5pbWF0ZUFyY1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyKXt2YXIgbyxuPXRoaXMsbD10aGlzLncsaD1uZXcgYih0aGlzLmN0eCksYz1yLnNpemU7KGlzTmFOKGUpfHxpc05hTihzKSkmJihlPWkscz1hLHIuZHVyPTApO3ZhciBkPWEsZz1pLHU9ZTxpP3RoaXMuZnVsbEFuZ2xlK2UtaTplLWk7bC5nbG9iYWxzLmRhdGFDaGFuZ2VkJiZyLnNob3VsZFNldFByZXZQYXRocyYmci5wcmV2RW5kQW5nbGUmJihvPW4uZ2V0UGllUGF0aCh7bWU6bixzdGFydEFuZ2xlOnIucHJldlN0YXJ0QW5nbGUsYW5nbGU6ci5wcmV2RW5kQW5nbGU8ci5wcmV2U3RhcnRBbmdsZT90aGlzLmZ1bGxBbmdsZStyLnByZXZFbmRBbmdsZS1yLnByZXZTdGFydEFuZ2xlOnIucHJldkVuZEFuZ2xlLXIucHJldlN0YXJ0QW5nbGUsc2l6ZTpjfSksdC5hdHRyKHtkOm99KSksMCE9PXIuZHVyP3QuYW5pbWF0ZShyLmR1cixsLmdsb2JhbHMuZWFzaW5nLHIuYW5pbUJlZ2luQXJyW3IuaV0pLmFmdGVyQWxsKChmdW5jdGlvbigpe1wicGllXCIhPT1uLmNoYXJ0VHlwZSYmXCJkb251dFwiIT09bi5jaGFydFR5cGUmJlwicG9sYXJBcmVhXCIhPT1uLmNoYXJ0VHlwZXx8dGhpcy5hbmltYXRlKGwuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZCkuYXR0cih7XCJzdHJva2Utd2lkdGhcIjpuLnN0cm9rZVdpZHRofSksci5pPT09bC5jb25maWcuc2VyaWVzLmxlbmd0aC0xJiZoLmFuaW1hdGlvbkNvbXBsZXRlZCh0KX0pKS5kdXJpbmcoKGZ1bmN0aW9uKGwpe2Q9dSsoYS11KSpsLHIuYW5pbWF0ZVN0YXJ0aW5nUG9zJiYoZD1zKyhhLXMpKmwsZz1lLXMrKGktKGUtcykpKmwpLG89bi5nZXRQaWVQYXRoKHttZTpuLHN0YXJ0QW5nbGU6ZyxhbmdsZTpkLHNpemU6Y30pLHQubm9kZS5zZXRBdHRyaWJ1dGUoXCJkYXRhOnBhdGhPcmlnXCIsbyksdC5hdHRyKHtkOm99KX0pKToobz1uLmdldFBpZVBhdGgoe21lOm4sc3RhcnRBbmdsZTpnLGFuZ2xlOmEsc2l6ZTpjfSksci5pc1RyYWNrfHwobC5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkPSEwKSx0Lm5vZGUuc2V0QXR0cmlidXRlKFwiZGF0YTpwYXRoT3JpZ1wiLG8pLHQuYXR0cih7ZDpvLFwic3Ryb2tlLXdpZHRoXCI6bi5zdHJva2VXaWR0aH0pKX19LHtrZXk6XCJwaWVDbGlja2VkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLncsYT10aGlzLHM9YS5zbGljZVNpemVzW3RdKyhpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZXhwYW5kT25DbGljaz80OjApLHI9aS5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQoYS5jaGFydFR5cGUudG9Mb3dlckNhc2UoKSxcIi1zbGljZS1cIikuY29uY2F0KHQpKS5tZW1iZXJzWzBdO2lmKFwidHJ1ZVwiIT09ci5hdHRyKFwiZGF0YTpwaWVDbGlja2VkXCIpKXt2YXIgbz1pLmdsb2JhbHMuZG9tLmJhc2VFbC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYXBleGNoYXJ0cy1waWUtYXJlYVwiKTtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKG8sKGZ1bmN0aW9uKHQpe3Quc2V0QXR0cmlidXRlKFwiZGF0YTpwaWVDbGlja2VkXCIsXCJmYWxzZVwiKTt2YXIgZT10LmdldEF0dHJpYnV0ZShcImRhdGE6cGF0aE9yaWdcIik7ZSYmdC5zZXRBdHRyaWJ1dGUoXCJkXCIsZSl9KSksci5hdHRyKFwiZGF0YTpwaWVDbGlja2VkXCIsXCJ0cnVlXCIpO3ZhciBuPXBhcnNlSW50KHIuYXR0cihcImRhdGE6c3RhcnRBbmdsZVwiKSwxMCksbD1wYXJzZUludChyLmF0dHIoXCJkYXRhOmFuZ2xlXCIpLDEwKTtlPWEuZ2V0UGllUGF0aCh7bWU6YSxzdGFydEFuZ2xlOm4sYW5nbGU6bCxzaXplOnN9KSwzNjAhPT1sJiZyLnBsb3QoZSl9ZWxzZXtyLmF0dHIoe1wiZGF0YTpwaWVDbGlja2VkXCI6XCJmYWxzZVwifSksdGhpcy5yZXZlcnREYXRhTGFiZWxzSW5uZXIoci5ub2RlLHRoaXMuZG9udXREYXRhTGFiZWxzKTt2YXIgaD1yLmF0dHIoXCJkYXRhOnBhdGhPcmlnXCIpO3IuYXR0cih7ZDpofSl9fX0se2tleTpcImdldENoYW5nZWRQYXRoXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1cIlwiO3JldHVybiB0aGlzLmR5bmFtaWNBbmltJiZ0aGlzLncuZ2xvYmFscy5kYXRhQ2hhbmdlZCYmKGk9dGhpcy5nZXRQaWVQYXRoKHttZTp0aGlzLHN0YXJ0QW5nbGU6dCxhbmdsZTplLXQsc2l6ZTp0aGlzLnNpemV9KSksaX19LHtrZXk6XCJnZXRQaWVQYXRoXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5tZSxpPXQuc3RhcnRBbmdsZSxhPXQuYW5nbGUscz10LnNpemUscj1pLG89TWF0aC5QSSooci05MCkvMTgwLG49YStpO01hdGguY2VpbChuKT49dGhpcy5mdWxsQW5nbGUrdGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5waWUuc3RhcnRBbmdsZSV0aGlzLmZ1bGxBbmdsZSYmKG49dGhpcy5mdWxsQW5nbGUrdGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5waWUuc3RhcnRBbmdsZSV0aGlzLmZ1bGxBbmdsZS0uMDEpLE1hdGguY2VpbChuKT50aGlzLmZ1bGxBbmdsZSYmKG4tPXRoaXMuZnVsbEFuZ2xlKTt2YXIgbD1NYXRoLlBJKihuLTkwKS8xODAsaD1lLmNlbnRlclgrcypNYXRoLmNvcyhvKSxjPWUuY2VudGVyWStzKk1hdGguc2luKG8pLGQ9ZS5jZW50ZXJYK3MqTWF0aC5jb3MobCksZz1lLmNlbnRlclkrcypNYXRoLnNpbihsKSx1PXgucG9sYXJUb0NhcnRlc2lhbihlLmNlbnRlclgsZS5jZW50ZXJZLGUuZG9udXRTaXplLG4pLHA9eC5wb2xhclRvQ2FydGVzaWFuKGUuY2VudGVyWCxlLmNlbnRlclksZS5kb251dFNpemUsciksZj1hPjE4MD8xOjAsYj1bXCJNXCIsaCxjLFwiQVwiLHMscywwLGYsMSxkLGddO3JldHVyblwiZG9udXRcIj09PWUuY2hhcnRUeXBlP1tdLmNvbmNhdChiLFtcIkxcIix1LngsdS55LFwiQVwiLGUuZG9udXRTaXplLGUuZG9udXRTaXplLDAsZiwwLHAueCxwLnksXCJMXCIsaCxjLFwielwiXSkuam9pbihcIiBcIik6XCJwaWVcIj09PWUuY2hhcnRUeXBlfHxcInBvbGFyQXJlYVwiPT09ZS5jaGFydFR5cGU/W10uY29uY2F0KGIsW1wiTFwiLGUuY2VudGVyWCxlLmNlbnRlclksXCJMXCIsaCxjXSkuam9pbihcIiBcIik6W10uY29uY2F0KGIpLmpvaW4oXCIgXCIpfX0se2tleTpcImRyYXdQb2xhckVsZW1lbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IF8odGhpcy5jdHgpLGE9bmV3IG0odGhpcy5jdHgpLHM9bmV3IEN0KHRoaXMuY3R4KSxyPWEuZ3JvdXAoKSxvPWEuZ3JvdXAoKSxuPWkubmljZVNjYWxlKDAsTWF0aC5jZWlsKHRoaXMubWF4WSksZS5jb25maWcueWF4aXNbMF0udGlja0Ftb3VudCwwLCEwKSxsPW4ucmVzdWx0LnJldmVyc2UoKSxoPW4ucmVzdWx0Lmxlbmd0aDt0aGlzLm1heFk9bi5uaWNlTWF4O2Zvcih2YXIgYz1lLmdsb2JhbHMucmFkaWFsU2l6ZSxkPWMvKGgtMSksZz0wO2c8aC0xO2crKyl7dmFyIHU9YS5kcmF3Q2lyY2xlKGMpO2lmKHUuYXR0cih7Y3g6dGhpcy5jZW50ZXJYLGN5OnRoaXMuY2VudGVyWSxmaWxsOlwibm9uZVwiLFwic3Ryb2tlLXdpZHRoXCI6ZS5jb25maWcucGxvdE9wdGlvbnMucG9sYXJBcmVhLnJpbmdzLnN0cm9rZVdpZHRoLHN0cm9rZTplLmNvbmZpZy5wbG90T3B0aW9ucy5wb2xhckFyZWEucmluZ3Muc3Ryb2tlQ29sb3J9KSxlLmNvbmZpZy55YXhpc1swXS5zaG93KXt2YXIgcD1zLmRyYXdZQXhpc1RleHRzKHRoaXMuY2VudGVyWCx0aGlzLmNlbnRlclktYytwYXJzZUludChlLmNvbmZpZy55YXhpc1swXS5sYWJlbHMuc3R5bGUuZm9udFNpemUsMTApLzIsZyxsW2ddKTtvLmFkZChwKX1yLmFkZCh1KSxjLT1kfXRoaXMuZHJhd1Nwb2tlcyh0KSx0LmFkZChyKSx0LmFkZChvKX19LHtrZXk6XCJyZW5kZXJJbm5lckRhdGFMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPW5ldyBtKHRoaXMuY3R4KSxzPWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzLWdyb3VwXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdChlLnRyYW5zbGF0ZVg/ZS50cmFuc2xhdGVYOjAsXCIsIFwiKS5jb25jYXQoZS50cmFuc2xhdGVZP2UudHJhbnNsYXRlWTowLFwiKSBzY2FsZShcIikuY29uY2F0KGkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5jdXN0b21TY2FsZSxcIilcIil9KSxyPXQudG90YWwuc2hvdztzLm5vZGUuc3R5bGUub3BhY2l0eT1lLm9wYWNpdHk7dmFyIG8sbixsPWUuY2VudGVyWCxoPWUuY2VudGVyWTtvPXZvaWQgMD09PXQubmFtZS5jb2xvcj9pLmdsb2JhbHMuY29sb3JzWzBdOnQubmFtZS5jb2xvcjt2YXIgYz10Lm5hbWUuZm9udFNpemUsZD10Lm5hbWUuZm9udEZhbWlseSxnPXQubmFtZS5mb250V2VpZ2h0O249dm9pZCAwPT09dC52YWx1ZS5jb2xvcj9pLmNvbmZpZy5jaGFydC5mb3JlQ29sb3I6dC52YWx1ZS5jb2xvcjt2YXIgdT10LnZhbHVlLmZvcm1hdHRlcixwPVwiXCIsZj1cIlwiO2lmKHI/KG89dC50b3RhbC5jb2xvcixjPXQudG90YWwuZm9udFNpemUsZD10LnRvdGFsLmZvbnRGYW1pbHksZz10LnRvdGFsLmZvbnRXZWlnaHQsZj10LnRvdGFsLmxhYmVsLHA9dC50b3RhbC5mb3JtYXR0ZXIoaSkpOjE9PT1pLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCYmKHA9dShpLmdsb2JhbHMuc2VyaWVzWzBdLGkpLGY9aS5nbG9iYWxzLnNlcmllc05hbWVzWzBdKSxmJiYoZj10Lm5hbWUuZm9ybWF0dGVyKGYsdC50b3RhbC5zaG93LGkpKSx0Lm5hbWUuc2hvdyl7dmFyIHg9YS5kcmF3VGV4dCh7eDpsLHk6aCtwYXJzZUZsb2F0KHQubmFtZS5vZmZzZXRZKSx0ZXh0OmYsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvcmVDb2xvcjpvLGZvbnRTaXplOmMsZm9udFdlaWdodDpnLGZvbnRGYW1pbHk6ZH0pO3gubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1kYXRhbGFiZWwtbGFiZWxcIikscy5hZGQoeCl9aWYodC52YWx1ZS5zaG93KXt2YXIgYj10Lm5hbWUuc2hvdz9wYXJzZUZsb2F0KHQudmFsdWUub2Zmc2V0WSkrMTY6dC52YWx1ZS5vZmZzZXRZLHY9YS5kcmF3VGV4dCh7eDpsLHk6aCtiLHRleHQ6cCx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9yZUNvbG9yOm4sZm9udFdlaWdodDp0LnZhbHVlLmZvbnRXZWlnaHQsZm9udFNpemU6dC52YWx1ZS5mb250U2l6ZSxmb250RmFtaWx5OnQudmFsdWUuZm9udEZhbWlseX0pO3Yubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1kYXRhbGFiZWwtdmFsdWVcIikscy5hZGQodil9cmV0dXJuIHN9fSx7a2V5OlwicHJpbnRJbm5lckxhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzLHI9dGhpcy53O2E/cz12b2lkIDA9PT10Lm5hbWUuY29sb3I/ci5nbG9iYWxzLmNvbG9yc1twYXJzZUludChhLnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xXTp0Lm5hbWUuY29sb3I6ci5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MSYmdC50b3RhbC5zaG93JiYocz10LnRvdGFsLmNvbG9yKTt2YXIgbz1yLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVsLWxhYmVsXCIpLG49ci5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWRhdGFsYWJlbC12YWx1ZVwiKTtpPSgwLHQudmFsdWUuZm9ybWF0dGVyKShpLHIpLGF8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQudG90YWwuZm9ybWF0dGVyfHwoaT10LnRvdGFsLmZvcm1hdHRlcihyKSk7dmFyIGw9ZT09PXQudG90YWwubGFiZWw7ZT10Lm5hbWUuZm9ybWF0dGVyKGUsbCxyKSxudWxsIT09byYmKG8udGV4dENvbnRlbnQ9ZSksbnVsbCE9PW4mJihuLnRleHRDb250ZW50PWkpLG51bGwhPT1vJiYoby5zdHlsZS5maWxsPXMpfX0se2tleTpcInByaW50RGF0YUxhYmVsc0lubmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT10LmdldEF0dHJpYnV0ZShcImRhdGE6dmFsdWVcIikscz1pLmdsb2JhbHMuc2VyaWVzTmFtZXNbcGFyc2VJbnQodC5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMV07aS5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MSYmdGhpcy5wcmludElubmVyTGFiZWxzKGUscyxhLHQpO3ZhciByPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1kYXRhbGFiZWxzLWdyb3VwXCIpO251bGwhPT1yJiYoci5zdHlsZS5vcGFjaXR5PTEpfX0se2tleTpcImRyYXdTcG9rZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53LGE9bmV3IG0odGhpcy5jdHgpLHM9aS5jb25maWcucGxvdE9wdGlvbnMucG9sYXJBcmVhLnNwb2tlcztpZigwIT09cy5zdHJva2VXaWR0aCl7Zm9yKHZhciByPVtdLG89MzYwL2kuZ2xvYmFscy5zZXJpZXMubGVuZ3RoLG49MDtuPGkuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO24rKylyLnB1c2goeC5wb2xhclRvQ2FydGVzaWFuKHRoaXMuY2VudGVyWCx0aGlzLmNlbnRlclksaS5nbG9iYWxzLnJhZGlhbFNpemUsaS5jb25maWcucGxvdE9wdGlvbnMucGllLnN0YXJ0QW5nbGUrbypuKSk7ci5mb3JFYWNoKChmdW5jdGlvbihpLHIpe3ZhciBvPWEuZHJhd0xpbmUoaS54LGkueSxlLmNlbnRlclgsZS5jZW50ZXJZLEFycmF5LmlzQXJyYXkocy5jb25uZWN0b3JDb2xvcnMpP3MuY29ubmVjdG9yQ29sb3JzW3JdOnMuY29ubmVjdG9yQ29sb3JzKTt0LmFkZChvKX0pKX19fSx7a2V5OlwicmV2ZXJ0RGF0YUxhYmVsc0lubmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMscz10aGlzLncscj1zLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVscy1ncm91cFwiKSxvPSExLG49cy5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFwZXhjaGFydHMtcGllLWFyZWFcIiksbD1mdW5jdGlvbih0KXt2YXIgaT10Lm1ha2VTbGljZU91dCxzPXQucHJpbnRMYWJlbDtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKG4sKGZ1bmN0aW9uKHQpe1widHJ1ZVwiPT09dC5nZXRBdHRyaWJ1dGUoXCJkYXRhOnBpZUNsaWNrZWRcIikmJihpJiYobz0hMCkscyYmYS5wcmludERhdGFMYWJlbHNJbm5lcih0LGUpKX0pKX07aWYobCh7bWFrZVNsaWNlT3V0OiEwLHByaW50TGFiZWw6ITF9KSxlLnRvdGFsLnNob3cmJnMuZ2xvYmFscy5zZXJpZXMubGVuZ3RoPjEpbyYmIWUudG90YWwuc2hvd0Fsd2F5cz9sKHttYWtlU2xpY2VPdXQ6ITEscHJpbnRMYWJlbDohMH0pOnRoaXMucHJpbnRJbm5lckxhYmVscyhlLGUudG90YWwubGFiZWwsZS50b3RhbC5mb3JtYXR0ZXIocykpO2Vsc2UgaWYobCh7bWFrZVNsaWNlT3V0OiExLHByaW50TGFiZWw6ITB9KSwhbylpZihzLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzLmxlbmd0aCYmcy5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MSlpZihzLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzWzBdLmxlbmd0aD4wKXt2YXIgaD1zLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzWzBdLGM9cy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdCh0aGlzLmNoYXJ0VHlwZS50b0xvd2VyQ2FzZSgpLFwiLXNsaWNlLVwiKS5jb25jYXQoaCkpO3RoaXMucHJpbnREYXRhTGFiZWxzSW5uZXIoYyxlKX1lbHNlIHImJnMuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHMubGVuZ3RoJiYwPT09cy5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1swXS5sZW5ndGgmJihyLnN0eWxlLm9wYWNpdHk9MCk7ZWxzZSByJiZzLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xJiYoci5zdHlsZS5vcGFjaXR5PTApfX1dKSx0fSgpLFB0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMuY2hhcnRUeXBlPXRoaXMudy5jb25maWcuY2hhcnQudHlwZSx0aGlzLmluaXRpYWxBbmltPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkLHRoaXMuZHluYW1pY0FuaW09dGhpcy5pbml0aWFsQW5pbSYmdGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCx0aGlzLmFuaW1EdXI9MDt2YXIgaT10aGlzLnc7dGhpcy5ncmFwaGljcz1uZXcgbSh0aGlzLmN0eCksdGhpcy5saW5lQ29sb3JBcnI9dm9pZCAwIT09aS5nbG9iYWxzLnN0cm9rZS5jb2xvcnM/aS5nbG9iYWxzLnN0cm9rZS5jb2xvcnM6aS5nbG9iYWxzLmNvbG9ycyx0aGlzLmRlZmF1bHRTaXplPWkuZ2xvYmFscy5zdmdIZWlnaHQ8aS5nbG9iYWxzLnN2Z1dpZHRoP2kuZ2xvYmFscy5ncmlkSGVpZ2h0KzEuNSppLmdsb2JhbHMuZ29sZGVuUGFkZGluZzppLmdsb2JhbHMuZ3JpZFdpZHRoLHRoaXMuaXNMb2c9aS5jb25maWcueWF4aXNbMF0ubG9nYXJpdGhtaWMsdGhpcy5jb3JlVXRpbHM9bmV3IHkodGhpcy5jdHgpLHRoaXMubWF4VmFsdWU9dGhpcy5pc0xvZz90aGlzLmNvcmVVdGlscy5nZXRMb2dWYWwoaS5nbG9iYWxzLm1heFksMCk6aS5nbG9iYWxzLm1heFksdGhpcy5taW5WYWx1ZT10aGlzLmlzTG9nP3RoaXMuY29yZVV0aWxzLmdldExvZ1ZhbCh0aGlzLncuZ2xvYmFscy5taW5ZLDApOmkuZ2xvYmFscy5taW5ZLHRoaXMucG9seWdvbnM9aS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIucG9seWdvbnMsdGhpcy5zdHJva2VXaWR0aD1pLmNvbmZpZy5zdHJva2Uuc2hvdz9pLmNvbmZpZy5zdHJva2Uud2lkdGg6MCx0aGlzLnNpemU9dGhpcy5kZWZhdWx0U2l6ZS8yLjEtdGhpcy5zdHJva2VXaWR0aC1pLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmJsdXIsaS5jb25maWcueGF4aXMubGFiZWxzLnNob3cmJih0aGlzLnNpemU9dGhpcy5zaXplLWkuZ2xvYmFscy54QXhpc0xhYmVsc1dpZHRoLzEuNzUpLHZvaWQgMCE9PWkuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLnNpemUmJih0aGlzLnNpemU9aS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIuc2l6ZSksdGhpcy5kYXRhUmFkaXVzT2ZQZXJjZW50PVtdLHRoaXMuZGF0YVJhZGl1cz1bXSx0aGlzLmFuZ2xlQXJyPVtdLHRoaXMueWF4aXNMYWJlbHNUZXh0c1Bvcz1bXX1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMsYT10aGlzLncscz1uZXcgUih0aGlzLmN0eCkscj1bXSxvPW5ldyBPKHRoaXMuY3R4KTt0Lmxlbmd0aCYmKHRoaXMuZGF0YVBvaW50c0xlbj10W2EuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGgpLHRoaXMuZGlzQW5nbGU9MipNYXRoLlBJL3RoaXMuZGF0YVBvaW50c0xlbjt2YXIgbj1hLmdsb2JhbHMuZ3JpZFdpZHRoLzIsbD1hLmdsb2JhbHMuZ3JpZEhlaWdodC8yLGg9bithLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRhci5vZmZzZXRYLGM9bCthLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRhci5vZmZzZXRZLGQ9dGhpcy5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXJhZGFyLXNlcmllcyBhcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdChofHwwLFwiLCBcIikuY29uY2F0KGN8fDAsXCIpXCIpfSksZz1bXSx1PW51bGwscD1udWxsO2lmKHRoaXMueWF4aXNMYWJlbHM9dGhpcy5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzXCJ9KSx0LmZvckVhY2goKGZ1bmN0aW9uKHQsbil7dmFyIGw9dC5sZW5ndGg9PT1hLmdsb2JhbHMuZGF0YVBvaW50cyxoPWkuZ3JhcGhpY3MuZ3JvdXAoKS5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzXCIsXCJkYXRhOmxvbmdlc3RTZXJpZXNcIjpsLHNlcmllc05hbWU6eC5lc2NhcGVTdHJpbmcoYS5nbG9iYWxzLnNlcmllc05hbWVzW25dKSxyZWw6bisxLFwiZGF0YTpyZWFsSW5kZXhcIjpufSk7aS5kYXRhUmFkaXVzT2ZQZXJjZW50W25dPVtdLGkuZGF0YVJhZGl1c1tuXT1bXSxpLmFuZ2xlQXJyW25dPVtdLHQuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt2YXIgYT1NYXRoLmFicyhpLm1heFZhbHVlLWkubWluVmFsdWUpO3QrPU1hdGguYWJzKGkubWluVmFsdWUpLGkuaXNMb2cmJih0PWkuY29yZVV0aWxzLmdldExvZ1ZhbCh0LDApKSxpLmRhdGFSYWRpdXNPZlBlcmNlbnRbbl1bZV09dC9hLGkuZGF0YVJhZGl1c1tuXVtlXT1pLmRhdGFSYWRpdXNPZlBlcmNlbnRbbl1bZV0qaS5zaXplLGkuYW5nbGVBcnJbbl1bZV09ZSppLmRpc0FuZ2xlfSkpLGc9aS5nZXREYXRhUG9pbnRzUG9zKGkuZGF0YVJhZGl1c1tuXSxpLmFuZ2xlQXJyW25dKTt2YXIgYz1pLmNyZWF0ZVBhdGhzKGcse3g6MCx5OjB9KTt1PWkuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwIGFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW5cIn0pLHA9aS5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIixcImRhdGE6cmVhbEluZGV4XCI6bn0pLGEuZ2xvYmFscy5kZWxheWVkRWxlbWVudHMucHVzaCh7ZWw6dS5ub2RlLGluZGV4Om59KTt2YXIgZD17aTpuLHJlYWxJbmRleDpuLGFuaW1hdGlvbkRlbGF5Om4saW5pdGlhbFNwZWVkOmEuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQsZGF0YUNoYW5nZVNwZWVkOmEuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZCxjbGFzc05hbWU6XCJhcGV4Y2hhcnRzLXJhZGFyXCIsc2hvdWxkQ2xpcFRvR3JpZDohMSxiaW5kRXZlbnRzT25QYXRoczohMSxzdHJva2U6YS5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbbl0sc3Ryb2tlTGluZUNhcDphLmNvbmZpZy5zdHJva2UubGluZUNhcH0sZj1udWxsO2EuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYoZj1pLmdldFByZXZpb3VzUGF0aChuKSk7Zm9yKHZhciBiPTA7YjxjLmxpbmVQYXRoc1RvLmxlbmd0aDtiKyspe3ZhciBtPWkuZ3JhcGhpY3MucmVuZGVyUGF0aHMoZShlKHt9LGQpLHt9LHtwYXRoRnJvbTpudWxsPT09Zj9jLmxpbmVQYXRoc0Zyb21bYl06ZixwYXRoVG86Yy5saW5lUGF0aHNUb1tiXSxzdHJva2VXaWR0aDpBcnJheS5pc0FycmF5KGkuc3Ryb2tlV2lkdGgpP2kuc3Ryb2tlV2lkdGhbbl06aS5zdHJva2VXaWR0aCxmaWxsOlwibm9uZVwiLGRyYXdTaGFkb3c6ITF9KSk7aC5hZGQobSk7dmFyIHk9cy5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOm59KSx3PWkuZ3JhcGhpY3MucmVuZGVyUGF0aHMoZShlKHt9LGQpLHt9LHtwYXRoRnJvbTpudWxsPT09Zj9jLmFyZWFQYXRoc0Zyb21bYl06ZixwYXRoVG86Yy5hcmVhUGF0aHNUb1tiXSxzdHJva2VXaWR0aDowLGZpbGw6eSxkcmF3U2hhZG93OiExfSkpO2lmKGEuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIGs9bmV3IHYoaS5jdHgpLEE9YS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdztrLmRyb3BTaGFkb3codyxPYmplY3QuYXNzaWduKHt9LEEse25vVXNlclNwYWNlT25Vc2U6ITB9KSxuKX1oLmFkZCh3KX10LmZvckVhY2goKGZ1bmN0aW9uKHQscyl7dmFyIHI9bmV3IEQoaS5jdHgpLmdldE1hcmtlckNvbmZpZyh7Y3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLW1hcmtlclwiLHNlcmllc0luZGV4Om4sZGF0YVBvaW50SW5kZXg6c30pLGw9aS5ncmFwaGljcy5kcmF3TWFya2VyKGdbc10ueCxnW3NdLnkscik7bC5hdHRyKFwicmVsXCIscyksbC5hdHRyKFwialwiLHMpLGwuYXR0cihcImluZGV4XCIsbiksbC5ub2RlLnNldEF0dHJpYnV0ZShcImRlZmF1bHQtbWFya2VyLXNpemVcIixyLnBTaXplKTt2YXIgYz1pLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnNcIn0pO2MmJmMuYWRkKGwpLHUuYWRkKGMpLGguYWRkKHUpO3ZhciBkPWEuY29uZmlnLmRhdGFMYWJlbHM7aWYoZC5lbmFibGVkKXt2YXIgZj1kLmZvcm1hdHRlcihhLmdsb2JhbHMuc2VyaWVzW25dW3NdLHtzZXJpZXNJbmRleDpuLGRhdGFQb2ludEluZGV4OnMsdzphfSk7by5wbG90RGF0YUxhYmVsc1RleHQoe3g6Z1tzXS54LHk6Z1tzXS55LHRleHQ6Zix0ZXh0QW5jaG9yOlwibWlkZGxlXCIsaTpuLGo6bixwYXJlbnQ6cCxvZmZzZXRDb3JyZWN0aW9uOiExLGRhdGFMYWJlbHNDb25maWc6ZSh7fSxkKX0pfWguYWRkKHApfSkpLHIucHVzaChoKX0pKSx0aGlzLmRyYXdQb2x5Z29ucyh7cGFyZW50OmR9KSxhLmNvbmZpZy54YXhpcy5sYWJlbHMuc2hvdyl7dmFyIGY9dGhpcy5kcmF3WEF4aXNUZXh0cygpO2QuYWRkKGYpfXJldHVybiByLmZvckVhY2goKGZ1bmN0aW9uKHQpe2QuYWRkKHQpfSkpLGQuYWRkKHRoaXMueWF4aXNMYWJlbHMpLGR9fSx7a2V5OlwiZHJhd1BvbHlnb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMsaT10aGlzLncsYT10LnBhcmVudCxzPW5ldyBDdCh0aGlzLmN0eCkscj1pLmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQucmV2ZXJzZSgpLG89ci5sZW5ndGgsbj1bXSxsPXRoaXMuc2l6ZS8oby0xKSxoPTA7aDxvO2grKyluW2hdPWwqaDtuLnJldmVyc2UoKTt2YXIgYz1bXSxkPVtdO24uZm9yRWFjaCgoZnVuY3Rpb24odCxpKXt2YXIgYT14LmdldFBvbHlnb25Qb3ModCxlLmRhdGFQb2ludHNMZW4pLHM9XCJcIjthLmZvckVhY2goKGZ1bmN0aW9uKHQsYSl7aWYoMD09PWkpe3ZhciByPWUuZ3JhcGhpY3MuZHJhd0xpbmUodC54LHQueSwwLDAsQXJyYXkuaXNBcnJheShlLnBvbHlnb25zLmNvbm5lY3RvckNvbG9ycyk/ZS5wb2x5Z29ucy5jb25uZWN0b3JDb2xvcnNbYV06ZS5wb2x5Z29ucy5jb25uZWN0b3JDb2xvcnMpO2QucHVzaChyKX0wPT09YSYmZS55YXhpc0xhYmVsc1RleHRzUG9zLnB1c2goe3g6dC54LHk6dC55fSkscys9dC54K1wiLFwiK3QueStcIiBcIn0pKSxjLnB1c2gocyl9KSksYy5mb3JFYWNoKChmdW5jdGlvbih0LHMpe3ZhciByPWUucG9seWdvbnMuc3Ryb2tlQ29sb3JzLG89ZS5wb2x5Z29ucy5zdHJva2VXaWR0aCxuPWUuZ3JhcGhpY3MuZHJhd1BvbHlnb24odCxBcnJheS5pc0FycmF5KHIpP3Jbc106cixBcnJheS5pc0FycmF5KG8pP29bc106byxpLmdsb2JhbHMucmFkYXJQb2x5Z29ucy5maWxsLmNvbG9yc1tzXSk7YS5hZGQobil9KSksZC5mb3JFYWNoKChmdW5jdGlvbih0KXthLmFkZCh0KX0pKSxpLmNvbmZpZy55YXhpc1swXS5zaG93JiZ0aGlzLnlheGlzTGFiZWxzVGV4dHNQb3MuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXt2YXIgYT1zLmRyYXdZQXhpc1RleHRzKHQueCx0LnksaSxyW2ldKTtlLnlheGlzTGFiZWxzLmFkZChhKX0pKX19LHtrZXk6XCJkcmF3WEF4aXNUZXh0c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxpPXRoaXMudyxhPWkuY29uZmlnLnhheGlzLmxhYmVscyxzPXRoaXMuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpc1wifSkscj14LmdldFBvbHlnb25Qb3ModGhpcy5zaXplLHRoaXMuZGF0YVBvaW50c0xlbik7cmV0dXJuIGkuZ2xvYmFscy5sYWJlbHMuZm9yRWFjaCgoZnVuY3Rpb24obyxuKXt2YXIgbD1pLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyLGg9bmV3IE8odC5jdHgpO2lmKHJbbl0pe3ZhciBjPXQuZ2V0VGV4dFBvcyhyW25dLHQuc2l6ZSksZD1sKG8se3Nlcmllc0luZGV4Oi0xLGRhdGFQb2ludEluZGV4Om4sdzppfSk7aC5wbG90RGF0YUxhYmVsc1RleHQoe3g6Yy5uZXdYLHk6Yy5uZXdZLHRleHQ6ZCx0ZXh0QW5jaG9yOmMudGV4dEFuY2hvcixpOm4sajpuLHBhcmVudDpzLGNvbG9yOkFycmF5LmlzQXJyYXkoYS5zdHlsZS5jb2xvcnMpJiZhLnN0eWxlLmNvbG9yc1tuXT9hLnN0eWxlLmNvbG9yc1tuXTpcIiNhOGE4YThcIixkYXRhTGFiZWxzQ29uZmlnOmUoe3RleHRBbmNob3I6Yy50ZXh0QW5jaG9yLGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITF9fSxhKSxvZmZzZXRDb3JyZWN0aW9uOiExfSl9fSkpLHN9fSx7a2V5OlwiY3JlYXRlUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMsYT1bXSxzPVtdLHI9W10sbz1bXTtpZih0Lmxlbmd0aCl7cz1bdGhpcy5ncmFwaGljcy5tb3ZlKGUueCxlLnkpXSxvPVt0aGlzLmdyYXBoaWNzLm1vdmUoZS54LGUueSldO3ZhciBuPXRoaXMuZ3JhcGhpY3MubW92ZSh0WzBdLngsdFswXS55KSxsPXRoaXMuZ3JhcGhpY3MubW92ZSh0WzBdLngsdFswXS55KTt0LmZvckVhY2goKGZ1bmN0aW9uKGUsYSl7bis9aS5ncmFwaGljcy5saW5lKGUueCxlLnkpLGwrPWkuZ3JhcGhpY3MubGluZShlLngsZS55KSxhPT09dC5sZW5ndGgtMSYmKG4rPVwiWlwiLGwrPVwiWlwiKX0pKSxhLnB1c2gobiksci5wdXNoKGwpfXJldHVybntsaW5lUGF0aHNGcm9tOnMsbGluZVBhdGhzVG86YSxhcmVhUGF0aHNGcm9tOm8sYXJlYVBhdGhzVG86cn19fSx7a2V5OlwiZ2V0VGV4dFBvc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9XCJtaWRkbGVcIixhPXQueCxzPXQueTtyZXR1cm4gTWF0aC5hYnModC54KT49MTA/dC54PjA/KGk9XCJzdGFydFwiLGErPTEwKTp0Lng8MCYmKGk9XCJlbmRcIixhLT0xMCk6aT1cIm1pZGRsZVwiLE1hdGguYWJzKHQueSk+PWUtMTAmJih0Lnk8MD9zLT0xMDp0Lnk+MCYmKHMrPTEwKSkse3RleHRBbmNob3I6aSxuZXdYOmEsbmV3WTpzfX19LHtrZXk6XCJnZXRQcmV2aW91c1BhdGhcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy53LGk9bnVsbCxhPTA7YTxlLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg7YSsrKXt2YXIgcz1lLmdsb2JhbHMucHJldmlvdXNQYXRoc1thXTtzLnBhdGhzLmxlbmd0aD4wJiZwYXJzZUludChzLnJlYWxJbmRleCwxMCk9PT1wYXJzZUludCh0LDEwKSYmdm9pZCAwIT09ZS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbYV0ucGF0aHNbMF0mJihpPWUuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2FdLnBhdGhzWzBdLmQpfXJldHVybiBpfX0se2tleTpcImdldERhdGFQb2ludHNQb3NcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp0aGlzLmRhdGFQb2ludHNMZW47dD10fHxbXSxlPWV8fFtdO2Zvcih2YXIgYT1bXSxzPTA7czxpO3MrKyl7dmFyIHI9e307ci54PXRbc10qTWF0aC5zaW4oZVtzXSksci55PS10W3NdKk1hdGguY29zKGVbc10pLGEucHVzaChyKX1yZXR1cm4gYX19XSksdH0oKSxJdD1mdW5jdGlvbih0KXtuKGksTHQpO3ZhciBlPWQoaSk7ZnVuY3Rpb24gaSh0KXt2YXIgczthKHRoaXMsaSksKHM9ZS5jYWxsKHRoaXMsdCkpLmN0eD10LHMudz10Lncscy5hbmltQmVnaW5BcnI9WzBdLHMuYW5pbUR1cj0wO3ZhciByPXMudztyZXR1cm4gcy5zdGFydEFuZ2xlPXIuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5zdGFydEFuZ2xlLHMuZW5kQW5nbGU9ci5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmVuZEFuZ2xlLHMudG90YWxBbmdsZT1NYXRoLmFicyhyLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuZW5kQW5nbGUtci5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnN0YXJ0QW5nbGUpLHMudHJhY2tTdGFydEFuZ2xlPXIuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjay5zdGFydEFuZ2xlLHMudHJhY2tFbmRBbmdsZT1yLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIudHJhY2suZW5kQW5nbGUscy5kb251dERhdGFMYWJlbHM9cy53LmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuZGF0YUxhYmVscyxzLnJhZGlhbERhdGFMYWJlbHM9cy5kb251dERhdGFMYWJlbHMscy50cmFja1N0YXJ0QW5nbGV8fChzLnRyYWNrU3RhcnRBbmdsZT1zLnN0YXJ0QW5nbGUpLHMudHJhY2tFbmRBbmdsZXx8KHMudHJhY2tFbmRBbmdsZT1zLmVuZEFuZ2xlKSwzNjA9PT1zLmVuZEFuZ2xlJiYocy5lbmRBbmdsZT0zNTkuOTkpLHMubWFyZ2luPXBhcnNlSW50KHIuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjay5tYXJnaW4sMTApLHN9cmV0dXJuIHIoaSxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCksYT1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcmFkaWFsYmFyXCJ9KTtpZihlLmdsb2JhbHMubm9EYXRhKXJldHVybiBhO3ZhciBzPWkuZ3JvdXAoKSxyPXRoaXMuZGVmYXVsdFNpemUvMixvPWUuZ2xvYmFscy5ncmlkV2lkdGgvMixuPXRoaXMuZGVmYXVsdFNpemUvMi4wNTtlLmNvbmZpZy5jaGFydC5zcGFya2xpbmUuZW5hYmxlZHx8KG49bi1lLmNvbmZpZy5zdHJva2Uud2lkdGgtZS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5ibHVyKTt2YXIgbD1lLmdsb2JhbHMuZmlsbC5jb2xvcnM7aWYoZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnRyYWNrLnNob3cpe3ZhciBoPXRoaXMuZHJhd1RyYWNrcyh7c2l6ZTpuLGNlbnRlclg6byxjZW50ZXJZOnIsY29sb3JBcnI6bCxzZXJpZXM6dH0pO3MuYWRkKGgpfXZhciBjPXRoaXMuZHJhd0FyY3Moe3NpemU6bixjZW50ZXJYOm8sY2VudGVyWTpyLGNvbG9yQXJyOmwsc2VyaWVzOnR9KSxkPTM2MDtlLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuc3RhcnRBbmdsZTwwJiYoZD10aGlzLnRvdGFsQW5nbGUpO3ZhciBnPSgzNjAtZCkvMzYwO2lmKGUuZ2xvYmFscy5yYWRpYWxTaXplPW4tbipnLHRoaXMucmFkaWFsRGF0YUxhYmVscy52YWx1ZS5zaG93KXt2YXIgdT1NYXRoLm1heCh0aGlzLnJhZGlhbERhdGFMYWJlbHMudmFsdWUub2Zmc2V0WSx0aGlzLnJhZGlhbERhdGFMYWJlbHMubmFtZS5vZmZzZXRZKTtlLmdsb2JhbHMucmFkaWFsU2l6ZSs9dSpnfXJldHVybiBzLmFkZChjLmcpLFwiZnJvbnRcIj09PWUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cucG9zaXRpb24mJihjLmcuYWRkKGMuZWxIb2xsb3cpLGMuZGF0YUxhYmVscyYmYy5nLmFkZChjLmRhdGFMYWJlbHMpKSxhLmFkZChzKSxhfX0se2tleTpcImRyYXdUcmFja3NcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCksYT1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtdHJhY2tzXCJ9KSxzPW5ldyB2KHRoaXMuY3R4KSxyPW5ldyBSKHRoaXMuY3R4KSxvPXRoaXMuZ2V0U3Ryb2tlV2lkdGgodCk7dC5zaXplPXQuc2l6ZS1vLzI7Zm9yKHZhciBuPTA7bjx0LnNlcmllcy5sZW5ndGg7bisrKXt2YXIgbD1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcmFkaWFsYmFyLXRyYWNrIGFwZXhjaGFydHMtdHJhY2tcIn0pO2EuYWRkKGwpLGwuYXR0cih7cmVsOm4rMX0pLHQuc2l6ZT10LnNpemUtby10aGlzLm1hcmdpbjt2YXIgaD1lLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIudHJhY2ssYz1yLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6MCxzaXplOnQuc2l6ZSxmaWxsQ29sb3JzOkFycmF5LmlzQXJyYXkoaC5iYWNrZ3JvdW5kKT9oLmJhY2tncm91bmRbbl06aC5iYWNrZ3JvdW5kLHNvbGlkOiEwfSksZD10aGlzLnRyYWNrU3RhcnRBbmdsZSxnPXRoaXMudHJhY2tFbmRBbmdsZTtNYXRoLmFicyhnKStNYXRoLmFicyhkKT49MzYwJiYoZz0zNjAtTWF0aC5hYnModGhpcy5zdGFydEFuZ2xlKS0uMSk7dmFyIHU9aS5kcmF3UGF0aCh7ZDpcIlwiLHN0cm9rZTpjLHN0cm9rZVdpZHRoOm8qcGFyc2VJbnQoaC5zdHJva2VXaWR0aCwxMCkvMTAwLGZpbGw6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpoLm9wYWNpdHksY2xhc3NlczpcImFwZXhjaGFydHMtcmFkaWFsYmFyLWFyZWFcIn0pO2lmKGguZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgcD1oLmRyb3BTaGFkb3c7cy5kcm9wU2hhZG93KHUscCl9bC5hZGQodSksdS5hdHRyKFwiaWRcIixcImFwZXhjaGFydHMtcmFkaWFsYmFyVHJhY2stXCIrbiksdGhpcy5hbmltYXRlUGF0aHModSx7Y2VudGVyWDp0LmNlbnRlclgsY2VudGVyWTp0LmNlbnRlclksZW5kQW5nbGU6ZyxzdGFydEFuZ2xlOmQsc2l6ZTp0LnNpemUsaTpuLHRvdGFsSXRlbXM6MixhbmltQmVnaW5BcnI6MCxkdXI6MCxpc1RyYWNrOiEwLGVhc2luZzplLmdsb2JhbHMuZWFzaW5nfSl9cmV0dXJuIGF9fSx7a2V5OlwiZHJhd0FyY3NcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCksYT1uZXcgUih0aGlzLmN0eCkscz1uZXcgdih0aGlzLmN0eCkscj1pLmdyb3VwKCksbz10aGlzLmdldFN0cm9rZVdpZHRoKHQpO3Quc2l6ZT10LnNpemUtby8yO3ZhciBuPWUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuYmFja2dyb3VuZCxsPXQuc2l6ZS1vKnQuc2VyaWVzLmxlbmd0aC10aGlzLm1hcmdpbip0LnNlcmllcy5sZW5ndGgtbypwYXJzZUludChlLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIudHJhY2suc3Ryb2tlV2lkdGgsMTApLzEwMC8yLGg9bC1lLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93Lm1hcmdpbjt2b2lkIDAhPT1lLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlJiYobj10aGlzLmRyYXdIb2xsb3dJbWFnZSh0LHIsbCxuKSk7dmFyIGM9dGhpcy5kcmF3SG9sbG93KHtzaXplOmgsY2VudGVyWDp0LmNlbnRlclgsY2VudGVyWTp0LmNlbnRlclksZmlsbDpufHxcInRyYW5zcGFyZW50XCJ9KTtpZihlLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIGQ9ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5kcm9wU2hhZG93O3MuZHJvcFNoYWRvdyhjLGQpfXZhciBnPTE7IXRoaXMucmFkaWFsRGF0YUxhYmVscy50b3RhbC5zaG93JiZlLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xJiYoZz0wKTt2YXIgdT1udWxsO3RoaXMucmFkaWFsRGF0YUxhYmVscy5zaG93JiYodT10aGlzLnJlbmRlcklubmVyRGF0YUxhYmVscyh0aGlzLnJhZGlhbERhdGFMYWJlbHMse2hvbGxvd1NpemU6bCxjZW50ZXJYOnQuY2VudGVyWCxjZW50ZXJZOnQuY2VudGVyWSxvcGFjaXR5Omd9KSksXCJiYWNrXCI9PT1lLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LnBvc2l0aW9uJiYoci5hZGQoYyksdSYmci5hZGQodSkpO3ZhciBwPSExO2UuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5pbnZlcnNlT3JkZXImJihwPSEwKTtmb3IodmFyIGY9cD90LnNlcmllcy5sZW5ndGgtMTowO3A/Zj49MDpmPHQuc2VyaWVzLmxlbmd0aDtwP2YtLTpmKyspe3ZhciBiPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMgYXBleGNoYXJ0cy1yYWRpYWwtc2VyaWVzXCIsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhlLmdsb2JhbHMuc2VyaWVzTmFtZXNbZl0pfSk7ci5hZGQoYiksYi5hdHRyKHtyZWw6ZisxLFwiZGF0YTpyZWFsSW5kZXhcIjpmfSksdGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXMoYixmKSx0LnNpemU9dC5zaXplLW8tdGhpcy5tYXJnaW47dmFyIHk9YS5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOmYsc2l6ZTp0LnNpemUsdmFsdWU6dC5zZXJpZXNbZl19KSx3PXRoaXMuc3RhcnRBbmdsZSxrPXZvaWQgMCxBPXgubmVnVG9aZXJvKHQuc2VyaWVzW2ZdPjEwMD8xMDA6dC5zZXJpZXNbZl0pLzEwMCxTPU1hdGgucm91bmQodGhpcy50b3RhbEFuZ2xlKkEpK3RoaXMuc3RhcnRBbmdsZSxDPXZvaWQgMDtlLmdsb2JhbHMuZGF0YUNoYW5nZWQmJihrPXRoaXMuc3RhcnRBbmdsZSxDPU1hdGgucm91bmQodGhpcy50b3RhbEFuZ2xlKngubmVnVG9aZXJvKGUuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2ZdKS8xMDApK2spLE1hdGguYWJzKFMpK01hdGguYWJzKHcpPj0zNjAmJihTLT0uMDEpLE1hdGguYWJzKEMpK01hdGguYWJzKGspPj0zNjAmJihDLT0uMDEpO3ZhciBMPVMtdyxQPUFycmF5LmlzQXJyYXkoZS5jb25maWcuc3Ryb2tlLmRhc2hBcnJheSk/ZS5jb25maWcuc3Ryb2tlLmRhc2hBcnJheVtmXTplLmNvbmZpZy5zdHJva2UuZGFzaEFycmF5LEk9aS5kcmF3UGF0aCh7ZDpcIlwiLHN0cm9rZTp5LHN0cm9rZVdpZHRoOm8sZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTplLmNvbmZpZy5maWxsLm9wYWNpdHksY2xhc3NlczpcImFwZXhjaGFydHMtcmFkaWFsYmFyLWFyZWEgYXBleGNoYXJ0cy1yYWRpYWxiYXItc2xpY2UtXCIrZixzdHJva2VEYXNoQXJyYXk6UH0pO2lmKG0uc2V0QXR0cnMoSS5ub2RlLHtcImRhdGE6YW5nbGVcIjpMLFwiZGF0YTp2YWx1ZVwiOnQuc2VyaWVzW2ZdfSksZS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgVD1lLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93O3MuZHJvcFNoYWRvdyhJLFQsZil9cy5zZXRTZWxlY3Rpb25GaWx0ZXIoSSwwLGYpLHRoaXMuYWRkTGlzdGVuZXJzKEksdGhpcy5yYWRpYWxEYXRhTGFiZWxzKSxiLmFkZChJKSxJLmF0dHIoe2luZGV4OjAsajpmfSk7dmFyIE09MDshdGhpcy5pbml0aWFsQW5pbXx8ZS5nbG9iYWxzLnJlc2l6ZWR8fGUuZ2xvYmFscy5kYXRhQ2hhbmdlZHx8KE09ZS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCksZS5nbG9iYWxzLmRhdGFDaGFuZ2VkJiYoTT1lLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQpLHRoaXMuYW5pbUR1cj1NLygxLjIqdC5zZXJpZXMubGVuZ3RoKSt0aGlzLmFuaW1EdXIsdGhpcy5hbmltQmVnaW5BcnIucHVzaCh0aGlzLmFuaW1EdXIpLHRoaXMuYW5pbWF0ZVBhdGhzKEkse2NlbnRlclg6dC5jZW50ZXJYLGNlbnRlclk6dC5jZW50ZXJZLGVuZEFuZ2xlOlMsc3RhcnRBbmdsZTp3LHByZXZFbmRBbmdsZTpDLHByZXZTdGFydEFuZ2xlOmssc2l6ZTp0LnNpemUsaTpmLHRvdGFsSXRlbXM6MixhbmltQmVnaW5BcnI6dGhpcy5hbmltQmVnaW5BcnIsZHVyOk0sc2hvdWxkU2V0UHJldlBhdGhzOiEwLGVhc2luZzplLmdsb2JhbHMuZWFzaW5nfSl9cmV0dXJue2c6cixlbEhvbGxvdzpjLGRhdGFMYWJlbHM6dX19fSx7a2V5OlwiZHJhd0hvbGxvd1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBtKHRoaXMuY3R4KS5kcmF3Q2lyY2xlKDIqdC5zaXplKTtyZXR1cm4gZS5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMtcmFkaWFsYmFyLWhvbGxvd1wiLGN4OnQuY2VudGVyWCxjeTp0LmNlbnRlclkscjp0LnNpemUsZmlsbDp0LmZpbGx9KSxlfX0se2tleTpcImRyYXdIb2xsb3dJbWFnZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPXRoaXMudyxyPW5ldyBSKHRoaXMuY3R4KSxvPXgucmFuZG9tSWQoKSxuPXMuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2U7aWYocy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZUNsaXBwZWQpci5jbGlwcGVkSW1nQXJlYSh7d2lkdGg6aSxoZWlnaHQ6aSxpbWFnZTpuLHBhdHRlcm5JRDpcInBhdHRlcm5cIi5jb25jYXQocy5nbG9iYWxzLmN1aWQpLmNvbmNhdChvKX0pLGE9XCJ1cmwoI3BhdHRlcm5cIi5jb25jYXQocy5nbG9iYWxzLmN1aWQpLmNvbmNhdChvLFwiKVwiKTtlbHNle3ZhciBsPXMuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VXaWR0aCxoPXMuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VIZWlnaHQ7aWYodm9pZCAwPT09bCYmdm9pZCAwPT09aCl7dmFyIGM9cy5nbG9iYWxzLmRvbS5QYXBlci5pbWFnZShuKS5sb2FkZWQoKGZ1bmN0aW9uKGUpe3RoaXMubW92ZSh0LmNlbnRlclgtZS53aWR0aC8yK3MuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VPZmZzZXRYLHQuY2VudGVyWS1lLmhlaWdodC8yK3MuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VPZmZzZXRZKX0pKTtlLmFkZChjKX1lbHNle3ZhciBkPXMuZ2xvYmFscy5kb20uUGFwZXIuaW1hZ2UobikubG9hZGVkKChmdW5jdGlvbihlKXt0aGlzLm1vdmUodC5jZW50ZXJYLWwvMitzLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlT2Zmc2V0WCx0LmNlbnRlclktaC8yK3MuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VPZmZzZXRZKSx0aGlzLnNpemUobCxoKX0pKTtlLmFkZChkKX19cmV0dXJuIGF9fSx7a2V5OlwiZ2V0U3Ryb2tlV2lkdGhcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7cmV0dXJuIHQuc2l6ZSooMTAwLXBhcnNlSW50KGUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuc2l6ZSwxMCkpLzEwMC8odC5zZXJpZXMubGVuZ3RoKzEpLXRoaXMubWFyZ2lufX1dKSxpfSgpLFR0PWZ1bmN0aW9uKHQpe24ocyx5dCk7dmFyIGk9ZChzKTtmdW5jdGlvbiBzKCl7cmV0dXJuIGEodGhpcyxzKSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gcihzLFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQsaSl7dmFyIGE9dGhpcy53LHM9bmV3IG0odGhpcy5jdHgpO3RoaXMucmFuZ2VCYXJPcHRpb25zPXRoaXMudy5jb25maWcucGxvdE9wdGlvbnMucmFuZ2VCYXIsdGhpcy5zZXJpZXM9dCx0aGlzLnNlcmllc1JhbmdlU3RhcnQ9YS5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnQsdGhpcy5zZXJpZXNSYW5nZUVuZD1hLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmQsdGhpcy5iYXJIZWxwZXJzLmluaXRWYXJpYWJsZXModCk7Zm9yKHZhciByPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1yYW5nZWJhci1zZXJpZXMgYXBleGNoYXJ0cy1wbG90LXNlcmllc1wifSksbz0wO288dC5sZW5ndGg7bysrKXt2YXIgbixsLGgsYz12b2lkIDAsZD12b2lkIDAsZz12b2lkIDAsdT1hLmdsb2JhbHMuY29tYm9DaGFydHM/aVtvXTpvLHA9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllc1wiLHNlcmllc05hbWU6eC5lc2NhcGVTdHJpbmcoYS5nbG9iYWxzLnNlcmllc05hbWVzW3VdKSxyZWw6bysxLFwiZGF0YTpyZWFsSW5kZXhcIjp1fSk7dGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXMocCx1KSx0W29dLmxlbmd0aD4wJiYodGhpcy52aXNpYmxlST10aGlzLnZpc2libGVJKzEpO3ZhciBmPTAsYj0wO3RoaXMueVJhdGlvLmxlbmd0aD4xJiYodGhpcy55YXhpc0luZGV4PXUpO3ZhciB2PXRoaXMuYmFySGVscGVycy5pbml0aWFsUG9zaXRpb25zKCk7ZD12LnksaD12Lnplcm9XLGM9di54LGI9di5iYXJXaWR0aCxuPXYueERpdmlzaW9uLGw9di56ZXJvSDtmb3IodmFyIHk9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIixcImRhdGE6cmVhbEluZGV4XCI6dX0pLHc9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXJhbmdlYmFyLWdvYWxzLW1hcmtlcnNcIixzdHlsZTpcInBvaW50ZXItZXZlbnRzOiBub25lXCJ9KSxrPTA7azxhLmdsb2JhbHMuZGF0YVBvaW50cztrKyspe3ZhciBBPXRoaXMuYmFySGVscGVycy5nZXRTdHJva2VXaWR0aChvLGssdSksUz10aGlzLnNlcmllc1JhbmdlU3RhcnRbb11ba10sQz10aGlzLnNlcmllc1JhbmdlRW5kW29dW2tdLEw9bnVsbCxQPW51bGwsST17eDpjLHk6ZCxzdHJva2VXaWR0aDpBLGVsU2VyaWVzOnB9O2lmKGc9di55RGl2aXNpb24sZj12LmJhckhlaWdodCx0aGlzLmlzSG9yaXpvbnRhbCl7UD1kK2YqdGhpcy52aXNpYmxlSTt2YXIgVD10aGlzLnNlcmllc0xlbjthLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIucmFuZ2VCYXJHcm91cFJvd3MmJihUPTEpO3ZhciBNPShnLWYqVCkvMjtpZih2b2lkIDA9PT1hLmNvbmZpZy5zZXJpZXNbb10uZGF0YVtrXSlicmVhaztpZihhLmNvbmZpZy5zZXJpZXNbb10uZGF0YVtrXS54KXt2YXIgWD10aGlzLmRldGVjdE92ZXJsYXBwaW5nQmFycyh7aTpvLGo6ayxiYXJZUG9zaXRpb246UCxzcnR5Ok0sYmFySGVpZ2h0OmYseURpdmlzaW9uOmcsaW5pdFBvc2l0aW9uczp2fSk7Zj1YLmJhckhlaWdodCxQPVguYmFyWVBvc2l0aW9ufWI9KEw9dGhpcy5kcmF3UmFuZ2VCYXJQYXRocyhlKHtpbmRleGVzOntpOm8sajprLHJlYWxJbmRleDp1fSxiYXJIZWlnaHQ6ZixiYXJZUG9zaXRpb246UCx6ZXJvVzpoLHlEaXZpc2lvbjpnLHkxOlMseTI6Q30sSSkpKS5iYXJXaWR0aH1lbHNlIGY9KEw9dGhpcy5kcmF3UmFuZ2VDb2x1bW5QYXRocyhlKHtpbmRleGVzOntpOm8sajprLHJlYWxJbmRleDp1fSx6ZXJvSDpsLGJhcldpZHRoOmIseERpdmlzaW9uOm59LEkpKSkuYmFySGVpZ2h0O3ZhciB6PXRoaXMuYmFySGVscGVycy5kcmF3R29hbExpbmUoe2JhclhQb3NpdGlvbjpMLmJhclhQb3NpdGlvbixiYXJZUG9zaXRpb246UCxnb2FsWDpMLmdvYWxYLGdvYWxZOkwuZ29hbFksYmFySGVpZ2h0OmYsYmFyV2lkdGg6Yn0pO3omJncuYWRkKHopLGQ9TC55LGM9TC54O3ZhciBFPXRoaXMuYmFySGVscGVycy5nZXRQYXRoRmlsbENvbG9yKHQsbyxrLHUpLFk9YS5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbdV07dGhpcy5yZW5kZXJTZXJpZXMoe3JlYWxJbmRleDp1LHBhdGhGaWxsOkUsbGluZUZpbGw6WSxqOmssaTpvLHg6Yyx5OmQseTE6Uyx5MjpDLHBhdGhGcm9tOkwucGF0aEZyb20scGF0aFRvOkwucGF0aFRvLHN0cm9rZVdpZHRoOkEsZWxTZXJpZXM6cCxzZXJpZXM6dCxiYXJIZWlnaHQ6ZixiYXJZUG9zaXRpb246UCxiYXJXaWR0aDpiLGVsRGF0YUxhYmVsc1dyYXA6eSxlbEdvYWxzTWFya2Vyczp3LHZpc2libGVTZXJpZXM6dGhpcy52aXNpYmxlSSx0eXBlOlwicmFuZ2ViYXJcIn0pfXIuYWRkKHApfXJldHVybiByfX0se2tleTpcImRldGVjdE92ZXJsYXBwaW5nQmFyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaSxpPXQuaixhPXQuYmFyWVBvc2l0aW9uLHM9dC5zcnR5LHI9dC5iYXJIZWlnaHQsbz10LnlEaXZpc2lvbixuPXQuaW5pdFBvc2l0aW9ucyxsPXRoaXMudyxoPVtdLGM9bC5jb25maWcuc2VyaWVzW2VdLmRhdGFbaV0ucmFuZ2VOYW1lLGQ9bC5jb25maWcuc2VyaWVzW2VdLmRhdGFbaV0ueCxnPWwuZ2xvYmFscy5sYWJlbHMuaW5kZXhPZihkKSx1PWwuZ2xvYmFscy5zZXJpZXNSYW5nZVtlXS5maW5kSW5kZXgoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lng9PT1kJiZ0Lm92ZXJsYXBzLmxlbmd0aD4wfSkpO3JldHVybiBhPWwuY29uZmlnLnBsb3RPcHRpb25zLmJhci5yYW5nZUJhckdyb3VwUm93cz9zK28qZzpzK3IqdGhpcy52aXNpYmxlSStvKmcsdT4tMSYmIWwuY29uZmlnLnBsb3RPcHRpb25zLmJhci5yYW5nZUJhck92ZXJsYXAmJihoPWwuZ2xvYmFscy5zZXJpZXNSYW5nZVtlXVt1XS5vdmVybGFwcykuaW5kZXhPZihjKT4tMSYmKGE9KHI9bi5iYXJIZWlnaHQvaC5sZW5ndGgpKnRoaXMudmlzaWJsZUkrbyooMTAwLXBhcnNlSW50KHRoaXMuYmFyT3B0aW9ucy5iYXJIZWlnaHQsMTApKS8xMDAvMityKih0aGlzLnZpc2libGVJK2guaW5kZXhPZihjKSkrbypnKSx7YmFyWVBvc2l0aW9uOmEsYmFySGVpZ2h0OnJ9fX0se2tleTpcImRyYXdSYW5nZUNvbHVtblBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleGVzLGk9dC54O3Quc3Ryb2tlV2lkdGg7dmFyIGE9dC54RGl2aXNpb24scz10LmJhcldpZHRoLHI9dC56ZXJvSCxvPXRoaXMudyxuPWUuaSxsPWUuaixoPXRoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0sYz1lLnJlYWxJbmRleCxkPXRoaXMuZ2V0UmFuZ2VWYWx1ZShjLGwpLGc9TWF0aC5taW4oZC5zdGFydCxkLmVuZCksdT1NYXRoLm1heChkLnN0YXJ0LGQuZW5kKTtvLmdsb2JhbHMuaXNYTnVtZXJpYyYmKGk9KG8uZ2xvYmFscy5zZXJpZXNYW25dW2xdLW8uZ2xvYmFscy5taW5YKS90aGlzLnhSYXRpby1zLzIpO3ZhciBwPWkrcyp0aGlzLnZpc2libGVJO3ZvaWQgMD09PXRoaXMuc2VyaWVzW25dW2xdfHxudWxsPT09dGhpcy5zZXJpZXNbbl1bbF0/Zz1yOihnPXItZy9oLHU9ci11L2gpO3ZhciBmPU1hdGguYWJzKHUtZykseD10aGlzLmJhckhlbHBlcnMuZ2V0Q29sdW1uUGF0aHMoe2JhclhQb3NpdGlvbjpwLGJhcldpZHRoOnMseTE6Zyx5Mjp1LHN0cm9rZVdpZHRoOnRoaXMuc3Ryb2tlV2lkdGgsc2VyaWVzOnRoaXMuc2VyaWVzUmFuZ2VFbmQscmVhbEluZGV4OmUucmVhbEluZGV4LGk6YyxqOmwsdzpvfSk7cmV0dXJuIG8uZ2xvYmFscy5pc1hOdW1lcmljfHwoaSs9YSkse3BhdGhUbzp4LnBhdGhUbyxwYXRoRnJvbTp4LnBhdGhGcm9tLGJhckhlaWdodDpmLHg6aSx5OnUsZ29hbFk6dGhpcy5iYXJIZWxwZXJzLmdldEdvYWxWYWx1ZXMoXCJ5XCIsbnVsbCxyLG4sbCksYmFyWFBvc2l0aW9uOnB9fX0se2tleTpcImRyYXdSYW5nZUJhclBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleGVzLGk9dC55LGE9dC55MSxzPXQueTIscj10LnlEaXZpc2lvbixvPXQuYmFySGVpZ2h0LG49dC5iYXJZUG9zaXRpb24sbD10Lnplcm9XLGg9dGhpcy53LGM9bCthL3RoaXMuaW52ZXJ0ZWRZUmF0aW8sZD1sK3MvdGhpcy5pbnZlcnRlZFlSYXRpbyxnPU1hdGguYWJzKGQtYyksdT10aGlzLmJhckhlbHBlcnMuZ2V0QmFycGF0aHMoe2JhcllQb3NpdGlvbjpuLGJhckhlaWdodDpvLHgxOmMseDI6ZCxzdHJva2VXaWR0aDp0aGlzLnN0cm9rZVdpZHRoLHNlcmllczp0aGlzLnNlcmllc1JhbmdlRW5kLGk6ZS5yZWFsSW5kZXgscmVhbEluZGV4OmUucmVhbEluZGV4LGo6ZS5qLHc6aH0pO3JldHVybiBoLmdsb2JhbHMuaXNYTnVtZXJpY3x8KGkrPXIpLHtwYXRoVG86dS5wYXRoVG8scGF0aEZyb206dS5wYXRoRnJvbSxiYXJXaWR0aDpnLHg6ZCxnb2FsWDp0aGlzLmJhckhlbHBlcnMuZ2V0R29hbFZhbHVlcyhcInhcIixsLG51bGwsZS5yZWFsSW5kZXgsZS5qKSx5Oml9fX0se2tleTpcImdldFJhbmdlVmFsdWVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztyZXR1cm57c3RhcnQ6aS5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbdF1bZV0sZW5kOmkuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZFt0XVtlXX19fV0pLHN9KCksTXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMubGluZUN0eD1lfXJldHVybiByKHQsW3trZXk6XCJzYW1lVmFsdWVTZXJpZXNGaXhcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztpZigoXCJncmFkaWVudFwiPT09aS5jb25maWcuZmlsbC50eXBlfHxcImdyYWRpZW50XCI9PT1pLmNvbmZpZy5maWxsLnR5cGVbdF0pJiZuZXcgeSh0aGlzLmxpbmVDdHguY3R4LGkpLnNlcmllc0hhdmVTYW1lVmFsdWVzKHQpKXt2YXIgYT1lW3RdLnNsaWNlKCk7YVthLmxlbmd0aC0xXT1hW2EubGVuZ3RoLTFdKzFlLTYsZVt0XT1hfXJldHVybiBlfX0se2tleTpcImNhbGN1bGF0ZVBvaW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuc2VyaWVzLGk9dC5yZWFsSW5kZXgsYT10Lngscz10Lnkscj10Lmksbz10Lmosbj10LnByZXZZLGw9dGhpcy53LGg9W10sYz1bXTtpZigwPT09byl7dmFyIGQ9dGhpcy5saW5lQ3R4LmNhdGVnb3J5QXhpc0NvcnJlY3Rpb24rbC5jb25maWcubWFya2Vycy5vZmZzZXRYO2wuZ2xvYmFscy5pc1hOdW1lcmljJiYoZD0obC5nbG9iYWxzLnNlcmllc1hbaV1bMF0tbC5nbG9iYWxzLm1pblgpL3RoaXMubGluZUN0eC54UmF0aW8rbC5jb25maWcubWFya2Vycy5vZmZzZXRYKSxoLnB1c2goZCksYy5wdXNoKHguaXNOdW1iZXIoZVtyXVswXSk/bitsLmNvbmZpZy5tYXJrZXJzLm9mZnNldFk6bnVsbCksaC5wdXNoKGErbC5jb25maWcubWFya2Vycy5vZmZzZXRYKSxjLnB1c2goeC5pc051bWJlcihlW3JdW28rMV0pP3MrbC5jb25maWcubWFya2Vycy5vZmZzZXRZOm51bGwpfWVsc2UgaC5wdXNoKGErbC5jb25maWcubWFya2Vycy5vZmZzZXRYKSxjLnB1c2goeC5pc051bWJlcihlW3JdW28rMV0pP3MrbC5jb25maWcubWFya2Vycy5vZmZzZXRZOm51bGwpO3JldHVybnt4OmgseTpjfX19LHtrZXk6XCJjaGVja1ByZXZpb3VzUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5wYXRoRnJvbUxpbmUsaT10LnBhdGhGcm9tQXJlYSxhPXQucmVhbEluZGV4LHM9dGhpcy53LHI9MDtyPHMuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aDtyKyspe3ZhciBvPXMuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3JdOyhcImxpbmVcIj09PW8udHlwZXx8XCJhcmVhXCI9PT1vLnR5cGUpJiZvLnBhdGhzLmxlbmd0aD4wJiZwYXJzZUludChvLnJlYWxJbmRleCwxMCk9PT1wYXJzZUludChhLDEwKSYmKFwibGluZVwiPT09by50eXBlPyh0aGlzLmxpbmVDdHguYXBwZW5kUGF0aEZyb209ITEsZT1zLmdsb2JhbHMucHJldmlvdXNQYXRoc1tyXS5wYXRoc1swXS5kKTpcImFyZWFcIj09PW8udHlwZSYmKHRoaXMubGluZUN0eC5hcHBlbmRQYXRoRnJvbT0hMSxpPXMuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3JdLnBhdGhzWzBdLmQscy5jb25maWcuc3Ryb2tlLnNob3cmJnMuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3JdLnBhdGhzWzFdJiYoZT1zLmdsb2JhbHMucHJldmlvdXNQYXRoc1tyXS5wYXRoc1sxXS5kKSkpfXJldHVybntwYXRoRnJvbUxpbmU6ZSxwYXRoRnJvbUFyZWE6aX19fSx7a2V5OlwiZGV0ZXJtaW5lRmlyc3RQcmV2WVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dC5pLGE9dC5zZXJpZXMscz10LnByZXZZLHI9dC5saW5lWVBvc2l0aW9uLG89dGhpcy53O2lmKHZvaWQgMCE9PShudWxsPT09KGU9YVtpXSl8fHZvaWQgMD09PWU/dm9pZCAwOmVbMF0pKXM9KHI9by5jb25maWcuY2hhcnQuc3RhY2tlZCYmaT4wP3RoaXMubGluZUN0eC5wcmV2U2VyaWVzWVtpLTFdWzBdOnRoaXMubGluZUN0eC56ZXJvWSktYVtpXVswXS90aGlzLmxpbmVDdHgueVJhdGlvW3RoaXMubGluZUN0eC55YXhpc0luZGV4XSsyKih0aGlzLmxpbmVDdHguaXNSZXZlcnNlZD9hW2ldWzBdL3RoaXMubGluZUN0eC55UmF0aW9bdGhpcy5saW5lQ3R4LnlheGlzSW5kZXhdOjApO2Vsc2UgaWYoby5jb25maWcuY2hhcnQuc3RhY2tlZCYmaT4wJiZ2b2lkIDA9PT1hW2ldWzBdKWZvcih2YXIgbj1pLTE7bj49MDtuLS0paWYobnVsbCE9PWFbbl1bMF0mJnZvaWQgMCE9PWFbbl1bMF0pe3M9cj10aGlzLmxpbmVDdHgucHJldlNlcmllc1lbbl1bMF07YnJlYWt9cmV0dXJue3ByZXZZOnMsbGluZVlQb3NpdGlvbjpyfX19XSksdH0oKSxYdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpLHMpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy54eVJhdGlvcz1pLHRoaXMucG9pbnRzQ2hhcnQ9IShcImJ1YmJsZVwiIT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlJiZcInNjYXR0ZXJcIiE9PXRoaXMudy5jb25maWcuY2hhcnQudHlwZSl8fHMsdGhpcy5zY2F0dGVyPW5ldyBIKHRoaXMuY3R4KSx0aGlzLm5vTmVnYXRpdmVzPXRoaXMudy5nbG9iYWxzLm1pblg9PT1OdW1iZXIuTUFYX1ZBTFVFLHRoaXMubGluZUhlbHBlcnM9bmV3IE10KHRoaXMpLHRoaXMubWFya2Vycz1uZXcgRCh0aGlzLmN0eCksdGhpcy5wcmV2U2VyaWVzWT1bXSx0aGlzLmNhdGVnb3J5QXhpc0NvcnJlY3Rpb249MCx0aGlzLnlheGlzSW5kZXg9MH1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQsaSxhLHMpe3ZhciByPXRoaXMudyxvPW5ldyBtKHRoaXMuY3R4KSxuPXIuZ2xvYmFscy5jb21ib0NoYXJ0cz9pOnIuY29uZmlnLmNoYXJ0LnR5cGUsbD1vLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtXCIuY29uY2F0KG4sXCItc2VyaWVzIGFwZXhjaGFydHMtcGxvdC1zZXJpZXNcIil9KSxoPW5ldyB5KHRoaXMuY3R4LHIpO3RoaXMueVJhdGlvPXRoaXMueHlSYXRpb3MueVJhdGlvLHRoaXMuelJhdGlvPXRoaXMueHlSYXRpb3MuelJhdGlvLHRoaXMueFJhdGlvPXRoaXMueHlSYXRpb3MueFJhdGlvLHRoaXMuYmFzZUxpbmVZPXRoaXMueHlSYXRpb3MuYmFzZUxpbmVZLHQ9aC5nZXRMb2dTZXJpZXModCksdGhpcy55UmF0aW89aC5nZXRMb2dZUmF0aW9zKHRoaXMueVJhdGlvKTtmb3IodmFyIGM9W10sZD0wO2Q8dC5sZW5ndGg7ZCsrKXt0PXRoaXMubGluZUhlbHBlcnMuc2FtZVZhbHVlU2VyaWVzRml4KGQsdCk7dmFyIGc9ci5nbG9iYWxzLmNvbWJvQ2hhcnRzP2FbZF06ZDt0aGlzLl9pbml0U2VyaWVWYXJpYWJsZXModCxkLGcpO3ZhciB1PVtdLHA9W10sZj1yLmdsb2JhbHMucGFkSG9yaXpvbnRhbCt0aGlzLmNhdGVnb3J5QXhpc0NvcnJlY3Rpb247dGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXModGhpcy5lbFNlcmllcyxnKSxyLmdsb2JhbHMuaXNYTnVtZXJpYyYmci5nbG9iYWxzLnNlcmllc1gubGVuZ3RoPjAmJihmPShyLmdsb2JhbHMuc2VyaWVzWFtnXVswXS1yLmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW8pLHAucHVzaChmKTt2YXIgeCxiPWYsdj12b2lkIDAsdz1iLGs9dGhpcy56ZXJvWSxBPXRoaXMuemVyb1k7az10aGlzLmxpbmVIZWxwZXJzLmRldGVybWluZUZpcnN0UHJldlkoe2k6ZCxzZXJpZXM6dCxwcmV2WTprLGxpbmVZUG9zaXRpb246MH0pLnByZXZZLHUucHVzaChrKSx4PWs7XCJyYW5nZUFyZWFcIj09PW4mJih2PUE9dGhpcy5saW5lSGVscGVycy5kZXRlcm1pbmVGaXJzdFByZXZZKHtpOmQsc2VyaWVzOnMscHJldlk6QSxsaW5lWVBvc2l0aW9uOjB9KS5wcmV2WSk7dmFyIFM9e3R5cGU6bixzZXJpZXM6dCxyZWFsSW5kZXg6ZyxpOmQseDpmLHk6MSxwWDpiLHBZOngscGF0aHNGcm9tOnRoaXMuX2NhbGN1bGF0ZVBhdGhzRnJvbSh7dHlwZTpuLHNlcmllczp0LGk6ZCxyZWFsSW5kZXg6ZyxwcmV2WDp3LHByZXZZOmsscHJldlkyOkF9KSxsaW5lUGF0aHM6W10sYXJlYVBhdGhzOltdLHNlcmllc0luZGV4OmEsbGluZVlQb3NpdGlvbjowLHhBcnJqOnAseUFycmo6dSxzZXJpZXNSYW5nZUVuZDpzfSxDPXRoaXMuX2l0ZXJhdGVPdmVyRGF0YVBvaW50cyhlKGUoe30sUykse30se2l0ZXJhdGlvbnM6XCJyYW5nZUFyZWFcIj09PW4/dFtkXS5sZW5ndGgtMTp2b2lkIDAsaXNSYW5nZVN0YXJ0OiEwfSkpO2lmKFwicmFuZ2VBcmVhXCI9PT1uKXt2YXIgTD10aGlzLl9jYWxjdWxhdGVQYXRoc0Zyb20oe3NlcmllczpzLGk6ZCxyZWFsSW5kZXg6ZyxwcmV2WDp3LHByZXZZOkF9KSxQPXRoaXMuX2l0ZXJhdGVPdmVyRGF0YVBvaW50cyhlKGUoe30sUykse30se3NlcmllczpzLHBZOnYscGF0aHNGcm9tOkwsaXRlcmF0aW9uczpzW2RdLmxlbmd0aC0xLGlzUmFuZ2VTdGFydDohMX0pKTtDLmxpbmVQYXRoc1swXT1QLmxpbmVQYXRoK0MubGluZVBhdGgsQy5wYXRoRnJvbUxpbmU9UC5wYXRoRnJvbUxpbmUrQy5wYXRoRnJvbUxpbmV9dGhpcy5faGFuZGxlUGF0aHMoe3R5cGU6bixyZWFsSW5kZXg6ZyxpOmQscGF0aHM6Q30pLHRoaXMuZWxTZXJpZXMuYWRkKHRoaXMuZWxQb2ludHNNYWluKSx0aGlzLmVsU2VyaWVzLmFkZCh0aGlzLmVsRGF0YUxhYmVsc1dyYXApLGMucHVzaCh0aGlzLmVsU2VyaWVzKX1pZihyLmNvbmZpZy5jaGFydC5zdGFja2VkKWZvcih2YXIgST1jLmxlbmd0aDtJPjA7SS0tKWwuYWRkKGNbSS0xXSk7ZWxzZSBmb3IodmFyIFQ9MDtUPGMubGVuZ3RoO1QrKylsLmFkZChjW1RdKTtyZXR1cm4gbH19LHtrZXk6XCJfaW5pdFNlcmllVmFyaWFibGVzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudyxzPW5ldyBtKHRoaXMuY3R4KTt0aGlzLnhEaXZpc2lvbj1hLmdsb2JhbHMuZ3JpZFdpZHRoLyhhLmdsb2JhbHMuZGF0YVBvaW50cy0oXCJvblwiPT09YS5jb25maWcueGF4aXMudGlja1BsYWNlbWVudD8xOjApKSx0aGlzLnN0cm9rZVdpZHRoPUFycmF5LmlzQXJyYXkoYS5jb25maWcuc3Ryb2tlLndpZHRoKT9hLmNvbmZpZy5zdHJva2Uud2lkdGhbaV06YS5jb25maWcuc3Ryb2tlLndpZHRoLHRoaXMueVJhdGlvLmxlbmd0aD4xJiYodGhpcy55YXhpc0luZGV4PWkpLHRoaXMuaXNSZXZlcnNlZD1hLmNvbmZpZy55YXhpc1t0aGlzLnlheGlzSW5kZXhdJiZhLmNvbmZpZy55YXhpc1t0aGlzLnlheGlzSW5kZXhdLnJldmVyc2VkLHRoaXMuemVyb1k9YS5nbG9iYWxzLmdyaWRIZWlnaHQtdGhpcy5iYXNlTGluZVlbdGhpcy55YXhpc0luZGV4XS0odGhpcy5pc1JldmVyc2VkP2EuZ2xvYmFscy5ncmlkSGVpZ2h0OjApKyh0aGlzLmlzUmV2ZXJzZWQ/Mip0aGlzLmJhc2VMaW5lWVt0aGlzLnlheGlzSW5kZXhdOjApLHRoaXMuYXJlYUJvdHRvbVk9dGhpcy56ZXJvWSwodGhpcy56ZXJvWT5hLmdsb2JhbHMuZ3JpZEhlaWdodHx8XCJlbmRcIj09PWEuY29uZmlnLnBsb3RPcHRpb25zLmFyZWEuZmlsbFRvKSYmKHRoaXMuYXJlYUJvdHRvbVk9YS5nbG9iYWxzLmdyaWRIZWlnaHQpLHRoaXMuY2F0ZWdvcnlBeGlzQ29ycmVjdGlvbj10aGlzLnhEaXZpc2lvbi8yLHRoaXMuZWxTZXJpZXM9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllc1wiLHNlcmllc05hbWU6eC5lc2NhcGVTdHJpbmcoYS5nbG9iYWxzLnNlcmllc05hbWVzW2ldKX0pLHRoaXMuZWxQb2ludHNNYWluPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwXCIsXCJkYXRhOnJlYWxJbmRleFwiOml9KSx0aGlzLmVsRGF0YUxhYmVsc1dyYXA9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIixcImRhdGE6cmVhbEluZGV4XCI6aX0pO3ZhciByPXRbZV0ubGVuZ3RoPT09YS5nbG9iYWxzLmRhdGFQb2ludHM7dGhpcy5lbFNlcmllcy5hdHRyKHtcImRhdGE6bG9uZ2VzdFNlcmllc1wiOnIscmVsOmUrMSxcImRhdGE6cmVhbEluZGV4XCI6aX0pLHRoaXMuYXBwZW5kUGF0aEZyb209ITB9fSx7a2V5OlwiX2NhbGN1bGF0ZVBhdGhzRnJvbVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGksYSxzLHI9dC50eXBlLG89dC5zZXJpZXMsbj10LmksbD10LnJlYWxJbmRleCxoPXQucHJldlgsYz10LnByZXZZLGQ9dC5wcmV2WTIsZz10aGlzLncsdT1uZXcgbSh0aGlzLmN0eCk7aWYobnVsbD09PW9bbl1bMF0pe2Zvcih2YXIgcD0wO3A8b1tuXS5sZW5ndGg7cCsrKWlmKG51bGwhPT1vW25dW3BdKXtoPXRoaXMueERpdmlzaW9uKnAsYz10aGlzLnplcm9ZLW9bbl1bcF0vdGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSxlPXUubW92ZShoLGMpLGk9dS5tb3ZlKGgsdGhpcy5hcmVhQm90dG9tWSk7YnJlYWt9fWVsc2UgZT11Lm1vdmUoaCxjKSxcInJhbmdlQXJlYVwiPT09ciYmKGU9dS5tb3ZlKGgsZCkrdS5saW5lKGgsYykpLGk9dS5tb3ZlKGgsdGhpcy5hcmVhQm90dG9tWSkrdS5saW5lKGgsYyk7aWYoYT11Lm1vdmUoLTEsdGhpcy56ZXJvWSkrdS5saW5lKC0xLHRoaXMuemVyb1kpLHM9dS5tb3ZlKC0xLHRoaXMuemVyb1kpK3UubGluZSgtMSx0aGlzLnplcm9ZKSxnLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg+MCl7dmFyIGY9dGhpcy5saW5lSGVscGVycy5jaGVja1ByZXZpb3VzUGF0aHMoe3BhdGhGcm9tTGluZTphLHBhdGhGcm9tQXJlYTpzLHJlYWxJbmRleDpsfSk7YT1mLnBhdGhGcm9tTGluZSxzPWYucGF0aEZyb21BcmVhfXJldHVybntwcmV2WDpoLHByZXZZOmMsbGluZVBhdGg6ZSxhcmVhUGF0aDppLHBhdGhGcm9tTGluZTphLHBhdGhGcm9tQXJlYTpzfX19LHtrZXk6XCJfaGFuZGxlUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgaT10LnR5cGUsYT10LnJlYWxJbmRleCxzPXQuaSxyPXQucGF0aHMsbz10aGlzLncsbj1uZXcgbSh0aGlzLmN0eCksbD1uZXcgUih0aGlzLmN0eCk7dGhpcy5wcmV2U2VyaWVzWS5wdXNoKHIueUFycmopLG8uZ2xvYmFscy5zZXJpZXNYdmFsdWVzW2FdPXIueEFycmosby5nbG9iYWxzLnNlcmllc1l2YWx1ZXNbYV09ci55QXJyajt2YXIgaD1vLmNvbmZpZy5mb3JlY2FzdERhdGFQb2ludHM7aWYoaC5jb3VudD4wJiZcInJhbmdlQXJlYVwiIT09aSl7dmFyIGM9by5nbG9iYWxzLnNlcmllc1h2YWx1ZXNbYV1bby5nbG9iYWxzLnNlcmllc1h2YWx1ZXNbYV0ubGVuZ3RoLWguY291bnQtMV0sZD1uLmRyYXdSZWN0KGMsMCxvLmdsb2JhbHMuZ3JpZFdpZHRoLG8uZ2xvYmFscy5ncmlkSGVpZ2h0LDApO28uZ2xvYmFscy5kb20uZWxGb3JlY2FzdE1hc2suYXBwZW5kQ2hpbGQoZC5ub2RlKTt2YXIgZz1uLmRyYXdSZWN0KDAsMCxjLG8uZ2xvYmFscy5ncmlkSGVpZ2h0LDApO28uZ2xvYmFscy5kb20uZWxOb25Gb3JlY2FzdE1hc2suYXBwZW5kQ2hpbGQoZy5ub2RlKX10aGlzLnBvaW50c0NoYXJ0fHxvLmdsb2JhbHMuZGVsYXllZEVsZW1lbnRzLnB1c2goe2VsOnRoaXMuZWxQb2ludHNNYWluLm5vZGUsaW5kZXg6YX0pO3ZhciB1PXtpOnMscmVhbEluZGV4OmEsYW5pbWF0aW9uRGVsYXk6cyxpbml0aWFsU3BlZWQ6by5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCxkYXRhQ2hhbmdlU3BlZWQ6by5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkLGNsYXNzTmFtZTpcImFwZXhjaGFydHMtXCIuY29uY2F0KGkpfTtpZihcImFyZWFcIj09PWkpZm9yKHZhciBwPWwuZmlsbFBhdGgoe3Nlcmllc051bWJlcjphfSksZj0wO2Y8ci5hcmVhUGF0aHMubGVuZ3RoO2YrKyl7dmFyIHg9bi5yZW5kZXJQYXRocyhlKGUoe30sdSkse30se3BhdGhGcm9tOnIucGF0aEZyb21BcmVhLHBhdGhUbzpyLmFyZWFQYXRoc1tmXSxzdHJva2U6XCJub25lXCIsc3Ryb2tlV2lkdGg6MCxzdHJva2VMaW5lQ2FwOm51bGwsZmlsbDpwfSkpO3RoaXMuZWxTZXJpZXMuYWRkKHgpfWlmKG8uY29uZmlnLnN0cm9rZS5zaG93JiYhdGhpcy5wb2ludHNDaGFydCl7dmFyIGI9bnVsbDtpZihcImxpbmVcIj09PWkpYj1sLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6YSxpOnN9KTtlbHNlIGlmKFwic29saWRcIj09PW8uY29uZmlnLnN0cm9rZS5maWxsLnR5cGUpYj1vLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1thXTtlbHNle3ZhciB2PW8uY29uZmlnLmZpbGw7by5jb25maWcuZmlsbD1vLmNvbmZpZy5zdHJva2UuZmlsbCxiPWwuZmlsbFBhdGgoe3Nlcmllc051bWJlcjphLGk6c30pLG8uY29uZmlnLmZpbGw9dn1mb3IodmFyIHk9MDt5PHIubGluZVBhdGhzLmxlbmd0aDt5Kyspe3ZhciB3PWI7XCJyYW5nZUFyZWFcIj09PWkmJih3PWwuZmlsbFBhdGgoe3Nlcmllc051bWJlcjphfSkpO3ZhciBrPWUoZSh7fSx1KSx7fSx7cGF0aEZyb206ci5wYXRoRnJvbUxpbmUscGF0aFRvOnIubGluZVBhdGhzW3ldLHN0cm9rZTpiLHN0cm9rZVdpZHRoOnRoaXMuc3Ryb2tlV2lkdGgsc3Ryb2tlTGluZUNhcDpvLmNvbmZpZy5zdHJva2UubGluZUNhcCxmaWxsOlwicmFuZ2VBcmVhXCI9PT1pP3c6XCJub25lXCJ9KSxBPW4ucmVuZGVyUGF0aHMoayk7aWYodGhpcy5lbFNlcmllcy5hZGQoQSksQS5hdHRyKFwiZmlsbC1ydWxlXCIsXCJldmVub2RkXCIpLGguY291bnQ+MCYmXCJyYW5nZUFyZWFcIiE9PWkpe3ZhciBTPW4ucmVuZGVyUGF0aHMoayk7Uy5ub2RlLnNldEF0dHJpYnV0ZShcInN0cm9rZS1kYXNoYXJyYXlcIixoLmRhc2hBcnJheSksaC5zdHJva2VXaWR0aCYmUy5ub2RlLnNldEF0dHJpYnV0ZShcInN0cm9rZS13aWR0aFwiLGguc3Ryb2tlV2lkdGgpLHRoaXMuZWxTZXJpZXMuYWRkKFMpLFMuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNmb3JlY2FzdE1hc2tcIi5jb25jYXQoby5nbG9iYWxzLmN1aWQsXCIpXCIpKSxBLmF0dHIoXCJjbGlwLXBhdGhcIixcInVybCgjbm9uRm9yZWNhc3RNYXNrXCIuY29uY2F0KG8uZ2xvYmFscy5jdWlkLFwiKVwiKSl9fX19fSx7a2V5OlwiX2l0ZXJhdGVPdmVyRGF0YVBvaW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQudHlwZSxpPXQuc2VyaWVzLGE9dC5pdGVyYXRpb25zLHM9dC5yZWFsSW5kZXgscj10Lmksbz10Lngsbj10LnksbD10LnBYLGg9dC5wWSxjPXQucGF0aHNGcm9tLGQ9dC5saW5lUGF0aHMsZz10LmFyZWFQYXRocyx1PXQuc2VyaWVzSW5kZXgscD10LmxpbmVZUG9zaXRpb24sZj10LnhBcnJqLGI9dC55QXJyaix2PXQuaXNSYW5nZVN0YXJ0LHk9dC5zZXJpZXNSYW5nZUVuZCx3PXRoaXMudyxrPW5ldyBtKHRoaXMuY3R4KSxBPXRoaXMueVJhdGlvLFM9Yy5wcmV2WSxDPWMubGluZVBhdGgsTD1jLmFyZWFQYXRoLFA9Yy5wYXRoRnJvbUxpbmUsST1jLnBhdGhGcm9tQXJlYSxUPXguaXNOdW1iZXIody5nbG9iYWxzLm1pbllBcnJbc10pP3cuZ2xvYmFscy5taW5ZQXJyW3NdOncuZ2xvYmFscy5taW5ZO2F8fChhPXcuZ2xvYmFscy5kYXRhUG9pbnRzPjE/dy5nbG9iYWxzLmRhdGFQb2ludHMtMTp3Lmdsb2JhbHMuZGF0YVBvaW50cyk7Zm9yKHZhciBNPW4sWD0wO1g8YTtYKyspe3ZhciB6PXZvaWQgMD09PWlbcl1bWCsxXXx8bnVsbD09PWlbcl1bWCsxXTtpZih3Lmdsb2JhbHMuaXNYTnVtZXJpYyl7dmFyIEU9dy5nbG9iYWxzLnNlcmllc1hbc11bWCsxXTt2b2lkIDA9PT13Lmdsb2JhbHMuc2VyaWVzWFtzXVtYKzFdJiYoRT13Lmdsb2JhbHMuc2VyaWVzWFtzXVthLTFdKSxvPShFLXcuZ2xvYmFscy5taW5YKS90aGlzLnhSYXRpb31lbHNlIG8rPXRoaXMueERpdmlzaW9uO2lmKHcuY29uZmlnLmNoYXJ0LnN0YWNrZWQpaWYocj4wJiZ3Lmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aDx3LmNvbmZpZy5zZXJpZXMubGVuZ3RoLTEpe3A9dGhpcy5wcmV2U2VyaWVzWVtmdW5jdGlvbih0KXtmb3IodmFyIGU9dCxpPTA7aTx3Lmdsb2JhbHMuc2VyaWVzLmxlbmd0aDtpKyspaWYody5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZih0KT4tMSl7ZS0tO2JyZWFrfXJldHVybiBlPj0wP2U6MH0oci0xKV1bWCsxXX1lbHNlIHA9dGhpcy56ZXJvWTtlbHNlIHA9dGhpcy56ZXJvWTt6P249cC1UL0FbdGhpcy55YXhpc0luZGV4XSsyKih0aGlzLmlzUmV2ZXJzZWQ/VC9BW3RoaXMueWF4aXNJbmRleF06MCk6KG49cC1pW3JdW1grMV0vQVt0aGlzLnlheGlzSW5kZXhdKzIqKHRoaXMuaXNSZXZlcnNlZD9pW3JdW1grMV0vQVt0aGlzLnlheGlzSW5kZXhdOjApLFwicmFuZ2VBcmVhXCI9PT1lJiYoTT1wLXlbcl1bWCsxXS9BW3RoaXMueWF4aXNJbmRleF0rMioodGhpcy5pc1JldmVyc2VkP3lbcl1bWCsxXS9BW3RoaXMueWF4aXNJbmRleF06MCkpKSxmLnB1c2gobyksYi5wdXNoKG4pO3ZhciBZPXRoaXMubGluZUhlbHBlcnMuY2FsY3VsYXRlUG9pbnRzKHtzZXJpZXM6aSx4Om8seTpuLHJlYWxJbmRleDpzLGk6cixqOlgscHJldlk6U30pLEY9dGhpcy5fY3JlYXRlUGF0aHMoe3R5cGU6ZSxzZXJpZXM6aSxpOnIscmVhbEluZGV4OnMsajpYLHg6byx5Om4seTI6TSxwWDpsLHBZOmgsbGluZVBhdGg6QyxhcmVhUGF0aDpMLGxpbmVQYXRoczpkLGFyZWFQYXRoczpnLHNlcmllc0luZGV4OnUsaXNSYW5nZVN0YXJ0OnZ9KTtnPUYuYXJlYVBhdGhzLGQ9Ri5saW5lUGF0aHMsbD1GLnBYLGg9Ri5wWSxMPUYuYXJlYVBhdGgsQz1GLmxpbmVQYXRoLHRoaXMuYXBwZW5kUGF0aEZyb20mJihQKz1rLmxpbmUobyx0aGlzLnplcm9ZKSxJKz1rLmxpbmUobyx0aGlzLnplcm9ZKSksdGhpcy5oYW5kbGVOdWxsRGF0YVBvaW50cyhpLFkscixYLHMpLHRoaXMuX2hhbmRsZU1hcmtlcnNBbmRMYWJlbHMoe3R5cGU6ZSxwb2ludHNQb3M6WSxpOnIsajpYLHJlYWxJbmRleDpzLGlzUmFuZ2VTdGFydDp2fSl9cmV0dXJue3lBcnJqOmIseEFycmo6ZixwYXRoRnJvbUFyZWE6SSxhcmVhUGF0aHM6ZyxwYXRoRnJvbUxpbmU6UCxsaW5lUGF0aHM6ZCxsaW5lUGF0aDpDLGFyZWFQYXRoOkx9fX0se2tleTpcIl9oYW5kbGVNYXJrZXJzQW5kTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC50eXBlLGk9dC5wb2ludHNQb3MsYT10LmlzUmFuZ2VTdGFydCxzPXQuaSxyPXQuaixvPXQucmVhbEluZGV4LG49dGhpcy53LGw9bmV3IE8odGhpcy5jdHgpO2lmKHRoaXMucG9pbnRzQ2hhcnQpdGhpcy5zY2F0dGVyLmRyYXcodGhpcy5lbFNlcmllcyxyLHtyZWFsSW5kZXg6byxwb2ludHNQb3M6aSx6UmF0aW86dGhpcy56UmF0aW8sZWxQYXJlbnQ6dGhpcy5lbFBvaW50c01haW59KTtlbHNle24uZ2xvYmFscy5zZXJpZXNbc10ubGVuZ3RoPjEmJnRoaXMuZWxQb2ludHNNYWluLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW5cIik7dmFyIGg9dGhpcy5tYXJrZXJzLnBsb3RDaGFydE1hcmtlcnMoaSxvLHIrMSk7bnVsbCE9PWgmJnRoaXMuZWxQb2ludHNNYWluLmFkZChoKX12YXIgYz1sLmRyYXdEYXRhTGFiZWwoe3R5cGU6ZSxpc1JhbmdlU3RhcnQ6YSxwb3M6aSxpOm8sajpyKzF9KTtudWxsIT09YyYmdGhpcy5lbERhdGFMYWJlbHNXcmFwLmFkZChjKX19LHtrZXk6XCJfY3JlYXRlUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnR5cGUsaT10LnNlcmllcyxhPXQuaSxzPXQucmVhbEluZGV4LHI9dC5qLG89dC54LG49dC55LGw9dC55MixoPXQucFgsYz10LnBZLGQ9dC5saW5lUGF0aCxnPXQuYXJlYVBhdGgsdT10LmxpbmVQYXRocyxwPXQuYXJlYVBhdGhzLGY9dC5zZXJpZXNJbmRleCx4PXQuaXNSYW5nZVN0YXJ0LGI9dGhpcy53LHY9bmV3IG0odGhpcy5jdHgpLHk9Yi5jb25maWcuc3Ryb2tlLmN1cnZlLHc9dGhpcy5hcmVhQm90dG9tWTtpZihBcnJheS5pc0FycmF5KGIuY29uZmlnLnN0cm9rZS5jdXJ2ZSkmJih5PUFycmF5LmlzQXJyYXkoZik/Yi5jb25maWcuc3Ryb2tlLmN1cnZlW2ZbYV1dOmIuY29uZmlnLnN0cm9rZS5jdXJ2ZVthXSksXCJzbW9vdGhcIj09PXkpe3ZhciBrPS4zNSooby1oKTtiLmdsb2JhbHMuaGFzTnVsbFZhbHVlcz8obnVsbCE9PWlbYV1bcl0mJihudWxsIT09aVthXVtyKzFdPyhkPXYubW92ZShoLGMpK3YuY3VydmUoaCtrLGMsby1rLG4sbysxLG4pLGc9di5tb3ZlKGgrMSxjKSt2LmN1cnZlKGgrayxjLG8tayxuLG8rMSxuKSt2LmxpbmUobyx3KSt2LmxpbmUoaCx3KStcInpcIik6KGQ9di5tb3ZlKGgsYyksZz12Lm1vdmUoaCxjKStcInpcIikpLHUucHVzaChkKSxwLnB1c2goZykpOihkKz12LmN1cnZlKGgrayxjLG8tayxuLG8sbiksZys9di5jdXJ2ZShoK2ssYyxvLWssbixvLG4pKSxoPW8sYz1uLHI9PT1pW2FdLmxlbmd0aC0yJiYoZz1nK3YuY3VydmUoaCxjLG8sbixvLHcpK3YubW92ZShvLG4pK1wielwiLFwicmFuZ2VBcmVhXCI9PT1lJiZ4P2Q9ZCt2LmN1cnZlKGgsYyxvLG4sbyxsKSt2Lm1vdmUobyxsKStcInpcIjpiLmdsb2JhbHMuaGFzTnVsbFZhbHVlc3x8KHUucHVzaChkKSxwLnB1c2goZykpKX1lbHNle2lmKG51bGw9PT1pW2FdW3IrMV0pe2QrPXYubW92ZShvLG4pO3ZhciBBPWIuZ2xvYmFscy5pc1hOdW1lcmljPyhiLmdsb2JhbHMuc2VyaWVzWFtzXVtyXS1iLmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW86by10aGlzLnhEaXZpc2lvbjtnPWcrdi5saW5lKEEsdykrdi5tb3ZlKG8sbikrXCJ6XCJ9bnVsbD09PWlbYV1bcl0mJihkKz12Lm1vdmUobyxuKSxnKz12Lm1vdmUobyx3KSksXCJzdGVwbGluZVwiPT09eT8oZD1kK3YubGluZShvLG51bGwsXCJIXCIpK3YubGluZShudWxsLG4sXCJWXCIpLGc9Zyt2LmxpbmUobyxudWxsLFwiSFwiKSt2LmxpbmUobnVsbCxuLFwiVlwiKSk6XCJzdHJhaWdodFwiPT09eSYmKGQrPXYubGluZShvLG4pLGcrPXYubGluZShvLG4pKSxyPT09aVthXS5sZW5ndGgtMiYmKGc9Zyt2LmxpbmUobyx3KSt2Lm1vdmUobyxuKStcInpcIixcInJhbmdlQXJlYVwiPT09ZSYmeD9kPWQrdi5saW5lKG8sbCkrdi5tb3ZlKG8sbCkrXCJ6XCI6KHUucHVzaChkKSxwLnB1c2goZykpKX1yZXR1cm57bGluZVBhdGhzOnUsYXJlYVBhdGhzOnAscFg6aCxwWTpjLGxpbmVQYXRoOmQsYXJlYVBhdGg6Z319fSx7a2V5OlwiaGFuZGxlTnVsbERhdGFQb2ludHNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMpe3ZhciByPXRoaXMudztpZihudWxsPT09dFtpXVthXSYmci5jb25maWcubWFya2Vycy5zaG93TnVsbERhdGFQb2ludHN8fDE9PT10W2ldLmxlbmd0aCl7dmFyIG89dGhpcy5tYXJrZXJzLnBsb3RDaGFydE1hcmtlcnMoZSxzLGErMSx0aGlzLnN0cm9rZVdpZHRoLXIuY29uZmlnLm1hcmtlcnMuc3Ryb2tlV2lkdGgvMiwhMCk7bnVsbCE9PW8mJnRoaXMuZWxQb2ludHNNYWluLmFkZChvKX19fV0pLHR9KCk7d2luZG93LlRyZWVtYXBTcXVhcmVkPXt9LHdpbmRvdy5UcmVlbWFwU3F1YXJlZC5nZW5lcmF0ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpLGEscyl7dGhpcy54b2Zmc2V0PWUsdGhpcy55b2Zmc2V0PWksdGhpcy5oZWlnaHQ9cyx0aGlzLndpZHRoPWEsdGhpcy5zaG9ydGVzdEVkZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5taW4odGhpcy5oZWlnaHQsdGhpcy53aWR0aCl9LHRoaXMuZ2V0Q29vcmRpbmF0ZXM9ZnVuY3Rpb24odCl7dmFyIGUsaT1bXSxhPXRoaXMueG9mZnNldCxzPXRoaXMueW9mZnNldCxvPXIodCkvdGhpcy5oZWlnaHQsbj1yKHQpL3RoaXMud2lkdGg7aWYodGhpcy53aWR0aD49dGhpcy5oZWlnaHQpZm9yKGU9MDtlPHQubGVuZ3RoO2UrKylpLnB1c2goW2EscyxhK28scyt0W2VdL29dKSxzKz10W2VdL287ZWxzZSBmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKWkucHVzaChbYSxzLGErdFtlXS9uLHMrbl0pLGErPXRbZV0vbjtyZXR1cm4gaX0sdGhpcy5jdXRBcmVhPWZ1bmN0aW9uKGUpe3ZhciBpO2lmKHRoaXMud2lkdGg+PXRoaXMuaGVpZ2h0KXt2YXIgYT1lL3RoaXMuaGVpZ2h0LHM9dGhpcy53aWR0aC1hO2k9bmV3IHQodGhpcy54b2Zmc2V0K2EsdGhpcy55b2Zmc2V0LHMsdGhpcy5oZWlnaHQpfWVsc2V7dmFyIHI9ZS90aGlzLndpZHRoLG89dGhpcy5oZWlnaHQtcjtpPW5ldyB0KHRoaXMueG9mZnNldCx0aGlzLnlvZmZzZXQrcix0aGlzLndpZHRoLG8pfXJldHVybiBpfX1mdW5jdGlvbiBlKGUsYSxzLG8sbil7bz12b2lkIDA9PT1vPzA6byxuPXZvaWQgMD09PW4/MDpuO3ZhciBsPWkoZnVuY3Rpb24odCxlKXt2YXIgaSxhPVtdLHM9ZS9yKHQpO2ZvcihpPTA7aTx0Lmxlbmd0aDtpKyspYVtpXT10W2ldKnM7cmV0dXJuIGF9KGUsYSpzKSxbXSxuZXcgdChvLG4sYSxzKSxbXSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlLGksYT1bXTtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKWZvcihpPTA7aTx0W2VdLmxlbmd0aDtpKyspYS5wdXNoKHRbZV1baV0pO3JldHVybiBhfShsKX1mdW5jdGlvbiBpKHQsZSxzLG8pe3ZhciBuLGwsaDtpZigwIT09dC5sZW5ndGgpcmV0dXJuIG49cy5zaG9ydGVzdEVkZ2UoKSxmdW5jdGlvbih0LGUsaSl7dmFyIHM7aWYoMD09PXQubGVuZ3RoKXJldHVybiEwOyhzPXQuc2xpY2UoKSkucHVzaChlKTt2YXIgcj1hKHQsaSksbz1hKHMsaSk7cmV0dXJuIHI+PW99KGUsbD10WzBdLG4pPyhlLnB1c2gobCksaSh0LnNsaWNlKDEpLGUscyxvKSk6KGg9cy5jdXRBcmVhKHIoZSksbyksby5wdXNoKHMuZ2V0Q29vcmRpbmF0ZXMoZSkpLGkodCxbXSxoLG8pKSxvO28ucHVzaChzLmdldENvb3JkaW5hdGVzKGUpKX1mdW5jdGlvbiBhKHQsZSl7dmFyIGk9TWF0aC5taW4uYXBwbHkoTWF0aCx0KSxhPU1hdGgubWF4LmFwcGx5KE1hdGgsdCkscz1yKHQpO3JldHVybiBNYXRoLm1heChNYXRoLnBvdyhlLDIpKmEvTWF0aC5wb3cocywyKSxNYXRoLnBvdyhzLDIpLyhNYXRoLnBvdyhlLDIpKmkpKX1mdW5jdGlvbiBzKHQpe3JldHVybiB0JiZ0LmNvbnN0cnVjdG9yPT09QXJyYXl9ZnVuY3Rpb24gcih0KXt2YXIgZSxpPTA7Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKylpKz10W2VdO3JldHVybiBpfWZ1bmN0aW9uIG8odCl7dmFyIGUsaT0wO2lmKHModFswXSkpZm9yKGU9MDtlPHQubGVuZ3RoO2UrKylpKz1vKHRbZV0pO2Vsc2UgaT1yKHQpO3JldHVybiBpfXJldHVybiBmdW5jdGlvbiB0KGksYSxyLG4sbCl7bj12b2lkIDA9PT1uPzA6bixsPXZvaWQgMD09PWw/MDpsO3ZhciBoLGMsZD1bXSxnPVtdO2lmKHMoaVswXSkpe2ZvcihjPTA7YzxpLmxlbmd0aDtjKyspZFtjXT1vKGlbY10pO2ZvcihoPWUoZCxhLHIsbixsKSxjPTA7YzxpLmxlbmd0aDtjKyspZy5wdXNoKHQoaVtjXSxoW2NdWzJdLWhbY11bMF0saFtjXVszXS1oW2NdWzFdLGhbY11bMF0saFtjXVsxXSkpfWVsc2UgZz1lKGksYSxyLG4sbCk7cmV0dXJuIGd9fSgpO3ZhciB6dCxFdCxZdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMuc3Ryb2tlV2lkdGg9dGhpcy53LmNvbmZpZy5zdHJva2Uud2lkdGgsdGhpcy5oZWxwZXJzPW5ldyBBdChlKSx0aGlzLmR5bmFtaWNBbmltPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLHRoaXMubGFiZWxzPVtdfXJldHVybiByKHQsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudyxhPW5ldyBtKHRoaXMuY3R4KSxzPW5ldyBSKHRoaXMuY3R4KSxyPWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy10cmVlbWFwXCJ9KTtpZihpLmdsb2JhbHMubm9EYXRhKXJldHVybiByO3ZhciBvPVtdO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5hYnModCl9KSk7by5wdXNoKGUpfSkpLHRoaXMubmVnUmFuZ2U9dGhpcy5oZWxwZXJzLmNoZWNrQ29sb3JSYW5nZSgpLGkuY29uZmlnLnNlcmllcy5mb3JFYWNoKChmdW5jdGlvbih0LGkpe3QuZGF0YS5mb3JFYWNoKChmdW5jdGlvbih0KXtBcnJheS5pc0FycmF5KGUubGFiZWxzW2ldKXx8KGUubGFiZWxzW2ldPVtdKSxlLmxhYmVsc1tpXS5wdXNoKHQueCl9KSl9KSksd2luZG93LlRyZWVtYXBTcXVhcmVkLmdlbmVyYXRlKG8saS5nbG9iYWxzLmdyaWRXaWR0aCxpLmdsb2JhbHMuZ3JpZEhlaWdodCkuZm9yRWFjaCgoZnVuY3Rpb24obyxuKXt2YXIgbD1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzIGFwZXhjaGFydHMtdHJlZW1hcC1zZXJpZXNcIixzZXJpZXNOYW1lOnguZXNjYXBlU3RyaW5nKGkuZ2xvYmFscy5zZXJpZXNOYW1lc1tuXSkscmVsOm4rMSxcImRhdGE6cmVhbEluZGV4XCI6bn0pO2lmKGkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIGg9aS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdztuZXcgdihlLmN0eCkuZHJvcFNoYWRvdyhyLGgsbil9dmFyIGM9YS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGEtbGFiZWxzXCJ9KTtvLmZvckVhY2goKGZ1bmN0aW9uKHIsbyl7dmFyIGg9clswXSxjPXJbMV0sZD1yWzJdLGc9clszXSx1PWEuZHJhd1JlY3QoaCxjLGQtaCxnLWMsMCxcIiNmZmZcIiwxLGUuc3Ryb2tlV2lkdGgsaS5jb25maWcucGxvdE9wdGlvbnMudHJlZW1hcC51c2VGaWxsQ29sb3JBc1N0cm9rZT9mOmkuZ2xvYmFscy5zdHJva2UuY29sb3JzW25dKTt1LmF0dHIoe2N4OmgsY3k6YyxpbmRleDpuLGk6bixqOm8sd2lkdGg6ZC1oLGhlaWdodDpnLWN9KTt2YXIgcD1lLmhlbHBlcnMuZ2V0U2hhZGVDb2xvcihpLmNvbmZpZy5jaGFydC50eXBlLG4sbyxlLm5lZ1JhbmdlKSxmPXAuY29sb3I7dm9pZCAwIT09aS5jb25maWcuc2VyaWVzW25dLmRhdGFbb10mJmkuY29uZmlnLnNlcmllc1tuXS5kYXRhW29dLmZpbGxDb2xvciYmKGY9aS5jb25maWcuc2VyaWVzW25dLmRhdGFbb10uZmlsbENvbG9yKTt2YXIgeD1zLmZpbGxQYXRoKHtjb2xvcjpmLHNlcmllc051bWJlcjpuLGRhdGFQb2ludEluZGV4Om99KTt1Lm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdHJlZW1hcC1yZWN0XCIpLHUuYXR0cih7ZmlsbDp4fSksZS5oZWxwZXJzLmFkZExpc3RlbmVycyh1KTt2YXIgYj17eDpoKyhkLWgpLzIseTpjKyhnLWMpLzIsd2lkdGg6MCxoZWlnaHQ6MH0sdj17eDpoLHk6Yyx3aWR0aDpkLWgsaGVpZ2h0OmctY307aWYoaS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkJiYhaS5nbG9iYWxzLmRhdGFDaGFuZ2VkKXt2YXIgbT0xO2kuZ2xvYmFscy5yZXNpemVkfHwobT1pLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkKSxlLmFuaW1hdGVUcmVlbWFwKHUsYix2LG0pfWlmKGkuZ2xvYmFscy5kYXRhQ2hhbmdlZCl7dmFyIHk9MTtlLmR5bmFtaWNBbmltLmVuYWJsZWQmJmkuZ2xvYmFscy5zaG91bGRBbmltYXRlJiYoeT1lLmR5bmFtaWNBbmltLnNwZWVkLGkuZ2xvYmFscy5wcmV2aW91c1BhdGhzW25dJiZpLmdsb2JhbHMucHJldmlvdXNQYXRoc1tuXVtvXSYmaS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbbl1bb10ucmVjdCYmKGI9aS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbbl1bb10ucmVjdCksZS5hbmltYXRlVHJlZW1hcCh1LGIsdix5KSl9dmFyIHc9ZS5nZXRGb250U2l6ZShyKSxrPWkuY29uZmlnLmRhdGFMYWJlbHMuZm9ybWF0dGVyKGUubGFiZWxzW25dW29dLHt2YWx1ZTppLmdsb2JhbHMuc2VyaWVzW25dW29dLHNlcmllc0luZGV4Om4sZGF0YVBvaW50SW5kZXg6byx3Oml9KSxBPWUuaGVscGVycy5jYWxjdWxhdGVEYXRhTGFiZWxzKHt0ZXh0OmsseDooaCtkKS8yLHk6KGMrZykvMitlLnN0cm9rZVdpZHRoLzIrdy8zLGk6bixqOm8sY29sb3JQcm9wczpwLGZvbnRTaXplOncsc2VyaWVzOnR9KTtpLmNvbmZpZy5kYXRhTGFiZWxzLmVuYWJsZWQmJkEmJmUucm90YXRlVG9GaXRMYWJlbChBLHcsayxoLGMsZCxnKSxsLmFkZCh1KSxudWxsIT09QSYmbC5hZGQoQSl9KSksbC5hZGQoYyksci5hZGQobCl9KSkscn19LHtrZXk6XCJnZXRGb250U2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudzt2YXIgaSxhLHMscixvPWZ1bmN0aW9uIHQoZSl7dmFyIGksYT0wO2lmKEFycmF5LmlzQXJyYXkoZVswXSkpZm9yKGk9MDtpPGUubGVuZ3RoO2krKylhKz10KGVbaV0pO2Vsc2UgZm9yKGk9MDtpPGUubGVuZ3RoO2krKylhKz1lW2ldLmxlbmd0aDtyZXR1cm4gYX0odGhpcy5sYWJlbHMpL2Z1bmN0aW9uIHQoZSl7dmFyIGksYT0wO2lmKEFycmF5LmlzQXJyYXkoZVswXSkpZm9yKGk9MDtpPGUubGVuZ3RoO2krKylhKz10KGVbaV0pO2Vsc2UgZm9yKGk9MDtpPGUubGVuZ3RoO2krKylhKz0xO3JldHVybiBhfSh0aGlzLmxhYmVscyk7cmV0dXJuIGk9dFsyXS10WzBdLGE9dFszXS10WzFdLHM9aSphLHI9TWF0aC5wb3cocywuNSksTWF0aC5taW4oci9vLHBhcnNlSW50KGUuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuZm9udFNpemUsMTApKX19LHtrZXk6XCJyb3RhdGVUb0ZpdExhYmVsXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzLHIsbyl7dmFyIG49bmV3IG0odGhpcy5jdHgpLGw9bi5nZXRUZXh0UmVjdHMoaSxlKTtpZihsLndpZHRoK3RoaXMudy5jb25maWcuc3Ryb2tlLndpZHRoKzU+ci1hJiZsLndpZHRoPD1vLXMpe3ZhciBoPW4ucm90YXRlQXJvdW5kQ2VudGVyKHQubm9kZSk7dC5ub2RlLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwicm90YXRlKC05MCBcIi5jb25jYXQoaC54LFwiIFwiKS5jb25jYXQoaC55LFwiKVwiKSl9fX0se2tleTpcImFuaW1hdGVUcmVlbWFwXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9bmV3IGIodGhpcy5jdHgpO3MuYW5pbWF0ZVJlY3QodCx7eDplLngseTplLnksd2lkdGg6ZS53aWR0aCxoZWlnaHQ6ZS5oZWlnaHR9LHt4OmkueCx5OmkueSx3aWR0aDppLndpZHRoLGhlaWdodDppLmhlaWdodH0sYSwoZnVuY3Rpb24oKXtzLmFuaW1hdGlvbkNvbXBsZXRlZCh0KX0pKX19XSksdH0oKSxGdD04NjQwMCxSdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnRpbWVTY2FsZUFycmF5PVtdLHRoaXMudXRjPXRoaXMudy5jb25maWcueGF4aXMubGFiZWxzLmRhdGV0aW1lVVRDfXJldHVybiByKHQsW3trZXk6XCJjYWxjdWxhdGVUaW1lU2NhbGVUaWNrc1wiLHZhbHVlOmZ1bmN0aW9uKHQsaSl7dmFyIGE9dGhpcyxzPXRoaXMudztpZihzLmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkKXJldHVybiBzLmdsb2JhbHMubGFiZWxzPVtdLHMuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHM9W10sW107dmFyIHI9bmV3IEkodGhpcy5jdHgpLG89KGktdCkvODY0ZTU7dGhpcy5kZXRlcm1pbmVJbnRlcnZhbChvKSxzLmdsb2JhbHMuZGlzYWJsZVpvb21Jbj0hMSxzLmdsb2JhbHMuZGlzYWJsZVpvb21PdXQ9ITEsbzwuMDAwMTE1NzQwNzQwNzQwNzQwNzU/cy5nbG9iYWxzLmRpc2FibGVab29tSW49ITA6bz41ZTQmJihzLmdsb2JhbHMuZGlzYWJsZVpvb21PdXQ9ITApO3ZhciBuPXIuZ2V0VGltZVVuaXRzZnJvbVRpbWVzdGFtcCh0LGksdGhpcy51dGMpLGw9cy5nbG9iYWxzLmdyaWRXaWR0aC9vLGg9bC8yNCxjPWgvNjAsZD1jLzYwLGc9TWF0aC5mbG9vcigyNCpvKSx1PU1hdGguZmxvb3IoMTQ0MCpvKSxwPU1hdGguZmxvb3IobypGdCksZj1NYXRoLmZsb29yKG8pLHg9TWF0aC5mbG9vcihvLzMwKSxiPU1hdGguZmxvb3Ioby8zNjUpLHY9e21pbk1pbGxpc2Vjb25kOm4ubWluTWlsbGlzZWNvbmQsbWluU2Vjb25kOm4ubWluU2Vjb25kLG1pbk1pbnV0ZTpuLm1pbk1pbnV0ZSxtaW5Ib3VyOm4ubWluSG91cixtaW5EYXRlOm4ubWluRGF0ZSxtaW5Nb250aDpuLm1pbk1vbnRoLG1pblllYXI6bi5taW5ZZWFyfSxtPXtmaXJzdFZhbDp2LGN1cnJlbnRNaWxsaXNlY29uZDp2Lm1pbk1pbGxpc2Vjb25kLGN1cnJlbnRTZWNvbmQ6di5taW5TZWNvbmQsY3VycmVudE1pbnV0ZTp2Lm1pbk1pbnV0ZSxjdXJyZW50SG91cjp2Lm1pbkhvdXIsY3VycmVudE1vbnRoRGF0ZTp2Lm1pbkRhdGUsY3VycmVudERhdGU6di5taW5EYXRlLGN1cnJlbnRNb250aDp2Lm1pbk1vbnRoLGN1cnJlbnRZZWFyOnYubWluWWVhcixkYXlzV2lkdGhPblhBeGlzOmwsaG91cnNXaWR0aE9uWEF4aXM6aCxtaW51dGVzV2lkdGhPblhBeGlzOmMsc2Vjb25kc1dpZHRoT25YQXhpczpkLG51bWJlck9mU2Vjb25kczpwLG51bWJlck9mTWludXRlczp1LG51bWJlck9mSG91cnM6ZyxudW1iZXJPZkRheXM6ZixudW1iZXJPZk1vbnRoczp4LG51bWJlck9mWWVhcnM6Yn07c3dpdGNoKHRoaXMudGlja0ludGVydmFsKXtjYXNlXCJ5ZWFyc1wiOnRoaXMuZ2VuZXJhdGVZZWFyU2NhbGUobSk7YnJlYWs7Y2FzZVwibW9udGhzXCI6Y2FzZVwiaGFsZl95ZWFyXCI6dGhpcy5nZW5lcmF0ZU1vbnRoU2NhbGUobSk7YnJlYWs7Y2FzZVwibW9udGhzX2RheXNcIjpjYXNlXCJtb250aHNfZm9ydG5pZ2h0XCI6Y2FzZVwiZGF5c1wiOmNhc2VcIndlZWtfZGF5c1wiOnRoaXMuZ2VuZXJhdGVEYXlTY2FsZShtKTticmVhaztjYXNlXCJob3Vyc1wiOnRoaXMuZ2VuZXJhdGVIb3VyU2NhbGUobSk7YnJlYWs7Y2FzZVwibWludXRlc19maXZlc1wiOmNhc2VcIm1pbnV0ZXNcIjp0aGlzLmdlbmVyYXRlTWludXRlU2NhbGUobSk7YnJlYWs7Y2FzZVwic2Vjb25kc190ZW5zXCI6Y2FzZVwic2Vjb25kc19maXZlc1wiOmNhc2VcInNlY29uZHNcIjp0aGlzLmdlbmVyYXRlU2Vjb25kU2NhbGUobSl9dmFyIHk9dGhpcy50aW1lU2NhbGVBcnJheS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBpPXtwb3NpdGlvbjp0LnBvc2l0aW9uLHVuaXQ6dC51bml0LHllYXI6dC55ZWFyLGRheTp0LmRheT90LmRheToxLGhvdXI6dC5ob3VyP3QuaG91cjowLG1vbnRoOnQubW9udGgrMX07cmV0dXJuXCJtb250aFwiPT09dC51bml0P2UoZSh7fSxpKSx7fSx7ZGF5OjEsdmFsdWU6dC52YWx1ZSsxfSk6XCJkYXlcIj09PXQudW5pdHx8XCJob3VyXCI9PT10LnVuaXQ/ZShlKHt9LGkpLHt9LHt2YWx1ZTp0LnZhbHVlfSk6XCJtaW51dGVcIj09PXQudW5pdD9lKGUoe30saSkse30se3ZhbHVlOnQudmFsdWUsbWludXRlOnQudmFsdWV9KTpcInNlY29uZFwiPT09dC51bml0P2UoZSh7fSxpKSx7fSx7dmFsdWU6dC52YWx1ZSxtaW51dGU6dC5taW51dGUsc2Vjb25kOnQuc2Vjb25kfSk6dH0pKTtyZXR1cm4geS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3ZhciBlPTEsaT1NYXRoLmNlaWwocy5nbG9iYWxzLmdyaWRXaWR0aC8xMjApLHI9dC52YWx1ZTt2b2lkIDAhPT1zLmNvbmZpZy54YXhpcy50aWNrQW1vdW50JiYoaT1zLmNvbmZpZy54YXhpcy50aWNrQW1vdW50KSx5Lmxlbmd0aD5pJiYoZT1NYXRoLmZsb29yKHkubGVuZ3RoL2kpKTt2YXIgbz0hMSxuPSExO3N3aXRjaChhLnRpY2tJbnRlcnZhbCl7Y2FzZVwieWVhcnNcIjpcInllYXJcIj09PXQudW5pdCYmKG89ITApO2JyZWFrO2Nhc2VcImhhbGZfeWVhclwiOmU9NyxcInllYXJcIj09PXQudW5pdCYmKG89ITApO2JyZWFrO2Nhc2VcIm1vbnRoc1wiOmU9MSxcInllYXJcIj09PXQudW5pdCYmKG89ITApO2JyZWFrO2Nhc2VcIm1vbnRoc19mb3J0bmlnaHRcIjplPTE1LFwieWVhclwiIT09dC51bml0JiZcIm1vbnRoXCIhPT10LnVuaXR8fChvPSEwKSwzMD09PXImJihuPSEwKTticmVhaztjYXNlXCJtb250aHNfZGF5c1wiOmU9MTAsXCJtb250aFwiPT09dC51bml0JiYobz0hMCksMzA9PT1yJiYobj0hMCk7YnJlYWs7Y2FzZVwid2Vla19kYXlzXCI6ZT04LFwibW9udGhcIj09PXQudW5pdCYmKG89ITApO2JyZWFrO2Nhc2VcImRheXNcIjplPTEsXCJtb250aFwiPT09dC51bml0JiYobz0hMCk7YnJlYWs7Y2FzZVwiaG91cnNcIjpcImRheVwiPT09dC51bml0JiYobz0hMCk7YnJlYWs7Y2FzZVwibWludXRlc19maXZlc1wiOmNhc2VcInNlY29uZHNfZml2ZXNcIjpyJTUhPTAmJihuPSEwKTticmVhaztjYXNlXCJzZWNvbmRzX3RlbnNcIjpyJTEwIT0wJiYobj0hMCl9aWYoXCJob3Vyc1wiPT09YS50aWNrSW50ZXJ2YWx8fFwibWludXRlc19maXZlc1wiPT09YS50aWNrSW50ZXJ2YWx8fFwic2Vjb25kc190ZW5zXCI9PT1hLnRpY2tJbnRlcnZhbHx8XCJzZWNvbmRzX2ZpdmVzXCI9PT1hLnRpY2tJbnRlcnZhbCl7aWYoIW4pcmV0dXJuITB9ZWxzZSBpZigociVlPT0wfHxvKSYmIW4pcmV0dXJuITB9KSl9fSx7a2V5OlwicmVjYWxjRGltZW5zaW9uc0Jhc2VkT25Gb3JtYXRcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPXRoaXMuZm9ybWF0RGF0ZXModCkscz10aGlzLnJlbW92ZU92ZXJsYXBwaW5nVFMoYSk7aS5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscz1zLnNsaWNlKCksbmV3IG90KHRoaXMuY3R4KS5wbG90Q29vcmRzKCl9fSx7a2V5OlwiZGV0ZXJtaW5lSW50ZXJ2YWxcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0yNCp0LGk9NjAqZTtzd2l0Y2goITApe2Nhc2UgdC8zNjU+NTp0aGlzLnRpY2tJbnRlcnZhbD1cInllYXJzXCI7YnJlYWs7Y2FzZSB0PjgwMDp0aGlzLnRpY2tJbnRlcnZhbD1cImhhbGZfeWVhclwiO2JyZWFrO2Nhc2UgdD4xODA6dGhpcy50aWNrSW50ZXJ2YWw9XCJtb250aHNcIjticmVhaztjYXNlIHQ+OTA6dGhpcy50aWNrSW50ZXJ2YWw9XCJtb250aHNfZm9ydG5pZ2h0XCI7YnJlYWs7Y2FzZSB0PjYwOnRoaXMudGlja0ludGVydmFsPVwibW9udGhzX2RheXNcIjticmVhaztjYXNlIHQ+MzA6dGhpcy50aWNrSW50ZXJ2YWw9XCJ3ZWVrX2RheXNcIjticmVhaztjYXNlIHQ+Mjp0aGlzLnRpY2tJbnRlcnZhbD1cImRheXNcIjticmVhaztjYXNlIGU+Mi40OnRoaXMudGlja0ludGVydmFsPVwiaG91cnNcIjticmVhaztjYXNlIGk+MTU6dGhpcy50aWNrSW50ZXJ2YWw9XCJtaW51dGVzX2ZpdmVzXCI7YnJlYWs7Y2FzZSBpPjU6dGhpcy50aWNrSW50ZXJ2YWw9XCJtaW51dGVzXCI7YnJlYWs7Y2FzZSBpPjE6dGhpcy50aWNrSW50ZXJ2YWw9XCJzZWNvbmRzX3RlbnNcIjticmVhaztjYXNlIDYwKmk+MjA6dGhpcy50aWNrSW50ZXJ2YWw9XCJzZWNvbmRzX2ZpdmVzXCI7YnJlYWs7ZGVmYXVsdDp0aGlzLnRpY2tJbnRlcnZhbD1cInNlY29uZHNcIn19fSx7a2V5OlwiZ2VuZXJhdGVZZWFyU2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmZpcnN0VmFsLGk9dC5jdXJyZW50TW9udGgsYT10LmN1cnJlbnRZZWFyLHM9dC5kYXlzV2lkdGhPblhBeGlzLHI9dC5udW1iZXJPZlllYXJzLG89ZS5taW5ZZWFyLG49MCxsPW5ldyBJKHRoaXMuY3R4KSxoPVwieWVhclwiO2lmKGUubWluRGF0ZT4xfHxlLm1pbk1vbnRoPjApe3ZhciBjPWwuZGV0ZXJtaW5lUmVtYWluaW5nRGF5c09mWWVhcihlLm1pblllYXIsZS5taW5Nb250aCxlLm1pbkRhdGUpO249KGwuZGV0ZXJtaW5lRGF5c09mWWVhcihlLm1pblllYXIpLWMrMSkqcyxvPWUubWluWWVhcisxLHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246bix2YWx1ZTpvLHVuaXQ6aCx5ZWFyOm8sbW9udGg6eC5tb250aE1vZChpKzEpfSl9ZWxzZSAxPT09ZS5taW5EYXRlJiYwPT09ZS5taW5Nb250aCYmdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpuLHZhbHVlOm8sdW5pdDpoLHllYXI6YSxtb250aDp4Lm1vbnRoTW9kKGkrMSl9KTtmb3IodmFyIGQ9byxnPW4sdT0wO3U8cjt1KyspZCsrLGc9bC5kZXRlcm1pbmVEYXlzT2ZZZWFyKGQtMSkqcytnLHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246Zyx2YWx1ZTpkLHVuaXQ6aCx5ZWFyOmQsbW9udGg6MX0pfX0se2tleTpcImdlbmVyYXRlTW9udGhTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZmlyc3RWYWwsaT10LmN1cnJlbnRNb250aERhdGUsYT10LmN1cnJlbnRNb250aCxzPXQuY3VycmVudFllYXIscj10LmRheXNXaWR0aE9uWEF4aXMsbz10Lm51bWJlck9mTW9udGhzLG49YSxsPTAsaD1uZXcgSSh0aGlzLmN0eCksYz1cIm1vbnRoXCIsZD0wO2lmKGUubWluRGF0ZT4xKXtsPShoLmRldGVybWluZURheXNPZk1vbnRocyhhKzEsZS5taW5ZZWFyKS1pKzEpKnIsbj14Lm1vbnRoTW9kKGErMSk7dmFyIGc9cytkLHU9eC5tb250aE1vZChuKSxwPW47MD09PW4mJihjPVwieWVhclwiLHA9Zyx1PTEsZys9ZCs9MSksdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpsLHZhbHVlOnAsdW5pdDpjLHllYXI6Zyxtb250aDp1fSl9ZWxzZSB0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmwsdmFsdWU6bix1bml0OmMseWVhcjpzLG1vbnRoOngubW9udGhNb2QoYSl9KTtmb3IodmFyIGY9bisxLGI9bCx2PTAsbT0xO3Y8bzt2KyssbSsrKXswPT09KGY9eC5tb250aE1vZChmKSk/KGM9XCJ5ZWFyXCIsZCs9MSk6Yz1cIm1vbnRoXCI7dmFyIHk9dGhpcy5fZ2V0WWVhcihzLGYsZCk7Yj1oLmRldGVybWluZURheXNPZk1vbnRocyhmLHkpKnIrYjt2YXIgdz0wPT09Zj95OmY7dGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpiLHZhbHVlOncsdW5pdDpjLHllYXI6eSxtb250aDowPT09Zj8xOmZ9KSxmKyt9fX0se2tleTpcImdlbmVyYXRlRGF5U2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmZpcnN0VmFsLGk9dC5jdXJyZW50TW9udGgsYT10LmN1cnJlbnRZZWFyLHM9dC5ob3Vyc1dpZHRoT25YQXhpcyxyPXQubnVtYmVyT2ZEYXlzLG89bmV3IEkodGhpcy5jdHgpLG49XCJkYXlcIixsPWUubWluRGF0ZSsxLGg9bCxjPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdD5vLmRldGVybWluZURheXNPZk1vbnRocyhlKzEsaSk/KGg9MSxuPVwibW9udGhcIixnPWUrPTEsZSk6ZX0sZD0oMjQtZS5taW5Ib3VyKSpzLGc9bCx1PWMoaCxpLGEpOzA9PT1lLm1pbkhvdXImJjE9PT1lLm1pbkRhdGU/KGQ9MCxnPXgubW9udGhNb2QoZS5taW5Nb250aCksbj1cIm1vbnRoXCIsaD1lLm1pbkRhdGUscisrKToxIT09ZS5taW5EYXRlJiYwPT09ZS5taW5Ib3VyJiYwPT09ZS5taW5NaW51dGUmJihkPTAsbD1lLm1pbkRhdGUsZz1sLHU9YyhoPWwsaSxhKSksdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpkLHZhbHVlOmcsdW5pdDpuLHllYXI6dGhpcy5fZ2V0WWVhcihhLHUsMCksbW9udGg6eC5tb250aE1vZCh1KSxkYXk6aH0pO2Zvcih2YXIgcD1kLGY9MDtmPHI7ZisrKXtuPVwiZGF5XCIsdT1jKGgrPTEsdSx0aGlzLl9nZXRZZWFyKGEsdSwwKSk7dmFyIGI9dGhpcy5fZ2V0WWVhcihhLHUsMCk7cD0yNCpzK3A7dmFyIHY9MT09PWg/eC5tb250aE1vZCh1KTpoO3RoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246cCx2YWx1ZTp2LHVuaXQ6bix5ZWFyOmIsbW9udGg6eC5tb250aE1vZCh1KSxkYXk6dn0pfX19LHtrZXk6XCJnZW5lcmF0ZUhvdXJTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZmlyc3RWYWwsaT10LmN1cnJlbnREYXRlLGE9dC5jdXJyZW50TW9udGgscz10LmN1cnJlbnRZZWFyLHI9dC5taW51dGVzV2lkdGhPblhBeGlzLG89dC5udW1iZXJPZkhvdXJzLG49bmV3IEkodGhpcy5jdHgpLGw9XCJob3VyXCIsaD1mdW5jdGlvbih0LGUpe3JldHVybiB0Pm4uZGV0ZXJtaW5lRGF5c09mTW9udGhzKGUrMSxzKSYmKGY9MSxlKz0xKSx7bW9udGg6ZSxkYXRlOmZ9fSxjPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+bi5kZXRlcm1pbmVEYXlzT2ZNb250aHMoZSsxLHMpP2UrPTE6ZX0sZD02MC0oZS5taW5NaW51dGUrZS5taW5TZWNvbmQvNjApLGc9ZCpyLHU9ZS5taW5Ib3VyKzEscD11KzE7NjA9PT1kJiYoZz0wLHA9KHU9ZS5taW5Ib3VyKSsxKTt2YXIgZj1pLGI9YyhmLGEpO3RoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246Zyx2YWx1ZTp1LHVuaXQ6bCxkYXk6Zixob3VyOnAseWVhcjpzLG1vbnRoOngubW9udGhNb2QoYil9KTtmb3IodmFyIHY9ZyxtPTA7bTxvO20rKyl7aWYobD1cImhvdXJcIixwPj0yNClwPTAsbD1cImRheVwiLGI9aChmKz0xLGIpLm1vbnRoLGI9YyhmLGIpO3ZhciB5PXRoaXMuX2dldFllYXIocyxiLDApO3Y9NjAqcit2O3ZhciB3PTA9PT1wP2Y6cDt0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOnYsdmFsdWU6dyx1bml0OmwsaG91cjpwLGRheTpmLHllYXI6eSxtb250aDp4Lm1vbnRoTW9kKGIpfSkscCsrfX19LHtrZXk6XCJnZW5lcmF0ZU1pbnV0ZVNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuY3VycmVudE1pbGxpc2Vjb25kLGk9dC5jdXJyZW50U2Vjb25kLGE9dC5jdXJyZW50TWludXRlLHM9dC5jdXJyZW50SG91cixyPXQuY3VycmVudERhdGUsbz10LmN1cnJlbnRNb250aCxuPXQuY3VycmVudFllYXIsbD10Lm1pbnV0ZXNXaWR0aE9uWEF4aXMsaD10LnNlY29uZHNXaWR0aE9uWEF4aXMsYz10Lm51bWJlck9mTWludXRlcyxkPWErMSxnPXIsdT1vLHA9bixmPXMsYj0oNjAtaS1lLzFlMykqaCx2PTA7djxjO3YrKylkPj02MCYmKGQ9MCwyND09PShmKz0xKSYmKGY9MCkpLHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246Yix2YWx1ZTpkLHVuaXQ6XCJtaW51dGVcIixob3VyOmYsbWludXRlOmQsZGF5OmcseWVhcjp0aGlzLl9nZXRZZWFyKHAsdSwwKSxtb250aDp4Lm1vbnRoTW9kKHUpfSksYis9bCxkKyt9fSx7a2V5OlwiZ2VuZXJhdGVTZWNvbmRTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LmN1cnJlbnRNaWxsaXNlY29uZCxpPXQuY3VycmVudFNlY29uZCxhPXQuY3VycmVudE1pbnV0ZSxzPXQuY3VycmVudEhvdXIscj10LmN1cnJlbnREYXRlLG89dC5jdXJyZW50TW9udGgsbj10LmN1cnJlbnRZZWFyLGw9dC5zZWNvbmRzV2lkdGhPblhBeGlzLGg9dC5udW1iZXJPZlNlY29uZHMsYz1pKzEsZD1hLGc9cix1PW8scD1uLGY9cyxiPSgxZTMtZSkvMWUzKmwsdj0wO3Y8aDt2KyspYz49NjAmJihjPTAsKytkPj02MCYmKGQ9MCwyND09PSsrZiYmKGY9MCkpKSx0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmIsdmFsdWU6Yyx1bml0Olwic2Vjb25kXCIsaG91cjpmLG1pbnV0ZTpkLHNlY29uZDpjLGRheTpnLHllYXI6dGhpcy5fZ2V0WWVhcihwLHUsMCksbW9udGg6eC5tb250aE1vZCh1KX0pLGIrPWwsYysrfX0se2tleTpcImNyZWF0ZVJhd0RhdGVTdHJpbmdcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXQueWVhcjtyZXR1cm4gMD09PXQubW9udGgmJih0Lm1vbnRoPTEpLGkrPVwiLVwiKyhcIjBcIit0Lm1vbnRoLnRvU3RyaW5nKCkpLnNsaWNlKC0yKSxcImRheVwiPT09dC51bml0P2krPVwiZGF5XCI9PT10LnVuaXQ/XCItXCIrKFwiMFwiK2UpLnNsaWNlKC0yKTpcIi0wMVwiOmkrPVwiLVwiKyhcIjBcIisodC5kYXk/dC5kYXk6XCIxXCIpKS5zbGljZSgtMiksXCJob3VyXCI9PT10LnVuaXQ/aSs9XCJob3VyXCI9PT10LnVuaXQ/XCJUXCIrKFwiMFwiK2UpLnNsaWNlKC0yKTpcIlQwMFwiOmkrPVwiVFwiKyhcIjBcIisodC5ob3VyP3QuaG91cjpcIjBcIikpLnNsaWNlKC0yKSxcIm1pbnV0ZVwiPT09dC51bml0P2krPVwiOlwiKyhcIjBcIitlKS5zbGljZSgtMik6aSs9XCI6XCIrKHQubWludXRlPyhcIjBcIit0Lm1pbnV0ZSkuc2xpY2UoLTIpOlwiMDBcIiksXCJzZWNvbmRcIj09PXQudW5pdD9pKz1cIjpcIisoXCIwXCIrZSkuc2xpY2UoLTIpOmkrPVwiOjAwXCIsdGhpcy51dGMmJihpKz1cIi4wMDBaXCIpLGl9fSx7a2V5OlwiZm9ybWF0RGF0ZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53O3JldHVybiB0Lm1hcCgoZnVuY3Rpb24odCl7dmFyIGE9dC52YWx1ZS50b1N0cmluZygpLHM9bmV3IEkoZS5jdHgpLHI9ZS5jcmVhdGVSYXdEYXRlU3RyaW5nKHQsYSksbz1zLmdldERhdGUocy5wYXJzZURhdGUocikpO2lmKGUudXRjfHwobz1zLmdldERhdGUocy5wYXJzZURhdGVXaXRoVGltZXpvbmUocikpKSx2b2lkIDA9PT1pLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0KXt2YXIgbj1cImRkIE1NTVwiLGw9aS5jb25maWcueGF4aXMubGFiZWxzLmRhdGV0aW1lRm9ybWF0dGVyO1wieWVhclwiPT09dC51bml0JiYobj1sLnllYXIpLFwibW9udGhcIj09PXQudW5pdCYmKG49bC5tb250aCksXCJkYXlcIj09PXQudW5pdCYmKG49bC5kYXkpLFwiaG91clwiPT09dC51bml0JiYobj1sLmhvdXIpLFwibWludXRlXCI9PT10LnVuaXQmJihuPWwubWludXRlKSxcInNlY29uZFwiPT09dC51bml0JiYobj1sLnNlY29uZCksYT1zLmZvcm1hdERhdGUobyxuKX1lbHNlIGE9cy5mb3JtYXREYXRlKG8saS5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdCk7cmV0dXJue2RhdGVTdHJpbmc6cixwb3NpdGlvbjp0LnBvc2l0aW9uLHZhbHVlOmEsdW5pdDp0LnVuaXQseWVhcjp0LnllYXIsbW9udGg6dC5tb250aH19KSl9fSx7a2V5OlwicmVtb3ZlT3ZlcmxhcHBpbmdUU1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcyxhPW5ldyBtKHRoaXMuY3R4KSxzPSExO3QubGVuZ3RoPjAmJnRbMF0udmFsdWUmJnQuZXZlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlLmxlbmd0aD09PXRbMF0udmFsdWUubGVuZ3RofSkpJiYocz0hMCxlPWEuZ2V0VGV4dFJlY3RzKHRbMF0udmFsdWUpLndpZHRoKTt2YXIgcj0wLG89dC5tYXAoKGZ1bmN0aW9uKG8sbil7aWYobj4wJiZpLncuY29uZmlnLnhheGlzLmxhYmVscy5oaWRlT3ZlcmxhcHBpbmdMYWJlbHMpe3ZhciBsPXM/ZTphLmdldFRleHRSZWN0cyh0W3JdLnZhbHVlKS53aWR0aCxoPXRbcl0ucG9zaXRpb247cmV0dXJuIG8ucG9zaXRpb24+aCtsKzEwPyhyPW4sbyk6bnVsbH1yZXR1cm4gb30pKTtyZXR1cm4gbz1vLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPT10fSkpfX0se2tleTpcIl9nZXRZZWFyXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0K01hdGguZmxvb3IoZS8xMikraX19XSksdH0oKSxEdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpKXthKHRoaXMsdCksdGhpcy5jdHg9aSx0aGlzLnc9aS53LHRoaXMuZWw9ZX1yZXR1cm4gcih0LFt7a2V5Olwic2V0dXBFbGVtZW50c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMsZT10aGlzLncuY29uZmlnLGk9ZS5jaGFydC50eXBlO3QuYXhpc0NoYXJ0cz1bXCJsaW5lXCIsXCJhcmVhXCIsXCJiYXJcIixcInJhbmdlQmFyXCIsXCJyYW5nZUFyZWFcIixcImNhbmRsZXN0aWNrXCIsXCJib3hQbG90XCIsXCJzY2F0dGVyXCIsXCJidWJibGVcIixcInJhZGFyXCIsXCJoZWF0bWFwXCIsXCJ0cmVlbWFwXCJdLmluZGV4T2YoaSk+LTEsdC54eUNoYXJ0cz1bXCJsaW5lXCIsXCJhcmVhXCIsXCJiYXJcIixcInJhbmdlQmFyXCIsXCJyYW5nZUFyZWFcIixcImNhbmRsZXN0aWNrXCIsXCJib3hQbG90XCIsXCJzY2F0dGVyXCIsXCJidWJibGVcIl0uaW5kZXhPZihpKT4tMSx0LmlzQmFySG9yaXpvbnRhbD0oXCJiYXJcIj09PWUuY2hhcnQudHlwZXx8XCJyYW5nZUJhclwiPT09ZS5jaGFydC50eXBlfHxcImJveFBsb3RcIj09PWUuY2hhcnQudHlwZSkmJmUucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWwsdC5jaGFydENsYXNzPVwiLmFwZXhjaGFydHNcIit0LmNoYXJ0SUQsdC5kb20uYmFzZUVsPXRoaXMuZWwsdC5kb20uZWxXcmFwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksbS5zZXRBdHRycyh0LmRvbS5lbFdyYXAse2lkOnQuY2hhcnRDbGFzcy5zdWJzdHJpbmcoMSksY2xhc3M6XCJhcGV4Y2hhcnRzLWNhbnZhcyBcIit0LmNoYXJ0Q2xhc3Muc3Vic3RyaW5nKDEpfSksdGhpcy5lbC5hcHBlbmRDaGlsZCh0LmRvbS5lbFdyYXApLHQuZG9tLlBhcGVyPW5ldyB3aW5kb3cuU1ZHLkRvYyh0LmRvbS5lbFdyYXApLHQuZG9tLlBhcGVyLmF0dHIoe2NsYXNzOlwiYXBleGNoYXJ0cy1zdmdcIixcInhtbG5zOmRhdGFcIjpcIkFwZXhDaGFydHNOU1wiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIi5jb25jYXQoZS5jaGFydC5vZmZzZXRYLFwiLCBcIikuY29uY2F0KGUuY2hhcnQub2Zmc2V0WSxcIilcIil9KSx0LmRvbS5QYXBlci5ub2RlLnN0eWxlLmJhY2tncm91bmQ9ZS5jaGFydC5iYWNrZ3JvdW5kLHRoaXMuc2V0U1ZHRGltZW5zaW9ucygpLHQuZG9tLmVsTGVnZW5kRm9yZWlnbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlModC5TVkdOUyxcImZvcmVpZ25PYmplY3RcIiksbS5zZXRBdHRycyh0LmRvbS5lbExlZ2VuZEZvcmVpZ24se3g6MCx5OjAsd2lkdGg6dC5zdmdXaWR0aCxoZWlnaHQ6dC5zdmdIZWlnaHR9KSx0LmRvbS5lbExlZ2VuZFdyYXA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSx0LmRvbS5lbExlZ2VuZFdyYXAuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtbGVnZW5kXCIpLHQuZG9tLmVsTGVnZW5kV3JhcC5zZXRBdHRyaWJ1dGUoXCJ4bWxuc1wiLFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiKSx0LmRvbS5lbExlZ2VuZEZvcmVpZ24uYXBwZW5kQ2hpbGQodC5kb20uZWxMZWdlbmRXcmFwKSx0LmRvbS5QYXBlci5ub2RlLmFwcGVuZENoaWxkKHQuZG9tLmVsTGVnZW5kRm9yZWlnbiksdC5kb20uZWxHcmFwaGljYWw9dC5kb20uUGFwZXIuZ3JvdXAoKS5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMtaW5uZXIgYXBleGNoYXJ0cy1ncmFwaGljYWxcIn0pLHQuZG9tLmVsRGVmcz10LmRvbS5QYXBlci5kZWZzKCksdC5kb20uUGFwZXIuYWRkKHQuZG9tLmVsR3JhcGhpY2FsKSx0LmRvbS5lbEdyYXBoaWNhbC5hZGQodC5kb20uZWxEZWZzKX19LHtrZXk6XCJwbG90Q2hhcnRUeXBlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1pLmNvbmZpZyxzPWkuZ2xvYmFscyxyPXtzZXJpZXM6W10saTpbXX0sbz17c2VyaWVzOltdLGk6W119LG49e3NlcmllczpbXSxpOltdfSxsPXtzZXJpZXM6W10saTpbXX0saD17c2VyaWVzOltdLGk6W119LGM9e3NlcmllczpbXSxpOltdfSxkPXtzZXJpZXM6W10saTpbXX0sZz17c2VyaWVzOltdLGk6W119LHU9e3NlcmllczpbXSxzZXJpZXNSYW5nZUVuZDpbXSxpOltdfTtzLnNlcmllcy5tYXAoKGZ1bmN0aW9uKGUscCl7dmFyIGY9MDt2b2lkIDAhPT10W3BdLnR5cGU/KFwiY29sdW1uXCI9PT10W3BdLnR5cGV8fFwiYmFyXCI9PT10W3BdLnR5cGU/KHMuc2VyaWVzLmxlbmd0aD4xJiZhLnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsJiZjb25zb2xlLndhcm4oXCJIb3Jpem9udGFsIGJhcnMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gYSBtaXhlZC9jb21ibyBjaGFydC4gUGxlYXNlIHR1cm4gb2ZmIGBwbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbGBcIiksaC5zZXJpZXMucHVzaChlKSxoLmkucHVzaChwKSxmKyssaS5nbG9iYWxzLmNvbHVtblNlcmllcz1oLnNlcmllcyk6XCJhcmVhXCI9PT10W3BdLnR5cGU/KG8uc2VyaWVzLnB1c2goZSksby5pLnB1c2gocCksZisrKTpcImxpbmVcIj09PXRbcF0udHlwZT8oci5zZXJpZXMucHVzaChlKSxyLmkucHVzaChwKSxmKyspOlwic2NhdHRlclwiPT09dFtwXS50eXBlPyhuLnNlcmllcy5wdXNoKGUpLG4uaS5wdXNoKHApKTpcImJ1YmJsZVwiPT09dFtwXS50eXBlPyhsLnNlcmllcy5wdXNoKGUpLGwuaS5wdXNoKHApLGYrKyk6XCJjYW5kbGVzdGlja1wiPT09dFtwXS50eXBlPyhjLnNlcmllcy5wdXNoKGUpLGMuaS5wdXNoKHApLGYrKyk6XCJib3hQbG90XCI9PT10W3BdLnR5cGU/KGQuc2VyaWVzLnB1c2goZSksZC5pLnB1c2gocCksZisrKTpcInJhbmdlQmFyXCI9PT10W3BdLnR5cGU/KGcuc2VyaWVzLnB1c2goZSksZy5pLnB1c2gocCksZisrKTpcInJhbmdlQXJlYVwiPT09dFtwXS50eXBlPyh1LnNlcmllcy5wdXNoKHMuc2VyaWVzUmFuZ2VTdGFydFtwXSksdS5zZXJpZXNSYW5nZUVuZC5wdXNoKHMuc2VyaWVzUmFuZ2VFbmRbcF0pLHUuaS5wdXNoKHApLGYrKyk6Y29uc29sZS53YXJuKFwiWW91IGhhdmUgc3BlY2lmaWVkIGFuIHVucmVjb2duaXplZCBjaGFydCB0eXBlLiBBdmFpbGFibGUgdHlwZXMgZm9yIHRoaXMgcHJvcGVydHkgYXJlIGxpbmUvYXJlYS9jb2x1bW4vYmFyL3NjYXR0ZXIvYnViYmxlL2NhbmRsZXN0aWNrL2JveFBsb3QvcmFuZ2VCYXIvcmFuZ2VBcmVhXCIpLGY+MSYmKHMuY29tYm9DaGFydHM9ITApKTooci5zZXJpZXMucHVzaChlKSxyLmkucHVzaChwKSl9KSk7dmFyIHA9bmV3IFh0KHRoaXMuY3R4LGUpLGY9bmV3IGt0KHRoaXMuY3R4LGUpO3RoaXMuY3R4LnBpZT1uZXcgTHQodGhpcy5jdHgpO3ZhciB4PW5ldyBJdCh0aGlzLmN0eCk7dGhpcy5jdHgucmFuZ2VCYXI9bmV3IFR0KHRoaXMuY3R4LGUpO3ZhciBiPW5ldyBQdCh0aGlzLmN0eCksdj1bXTtpZihzLmNvbWJvQ2hhcnRzKXtpZihvLnNlcmllcy5sZW5ndGg+MCYmdi5wdXNoKHAuZHJhdyhvLnNlcmllcyxcImFyZWFcIixvLmkpKSxoLnNlcmllcy5sZW5ndGg+MClpZihpLmNvbmZpZy5jaGFydC5zdGFja2VkKXt2YXIgbT1uZXcgd3QodGhpcy5jdHgsZSk7di5wdXNoKG0uZHJhdyhoLnNlcmllcyxoLmkpKX1lbHNlIHRoaXMuY3R4LmJhcj1uZXcgeXQodGhpcy5jdHgsZSksdi5wdXNoKHRoaXMuY3R4LmJhci5kcmF3KGguc2VyaWVzLGguaSkpO2lmKHUuc2VyaWVzLmxlbmd0aD4wJiZ2LnB1c2gocC5kcmF3KHUuc2VyaWVzLFwicmFuZ2VBcmVhXCIsdS5pLHUuc2VyaWVzUmFuZ2VFbmQpKSxyLnNlcmllcy5sZW5ndGg+MCYmdi5wdXNoKHAuZHJhdyhyLnNlcmllcyxcImxpbmVcIixyLmkpKSxjLnNlcmllcy5sZW5ndGg+MCYmdi5wdXNoKGYuZHJhdyhjLnNlcmllcyxcImNhbmRsZXN0aWNrXCIsYy5pKSksZC5zZXJpZXMubGVuZ3RoPjAmJnYucHVzaChmLmRyYXcoZC5zZXJpZXMsXCJib3hQbG90XCIsZC5pKSksZy5zZXJpZXMubGVuZ3RoPjAmJnYucHVzaCh0aGlzLmN0eC5yYW5nZUJhci5kcmF3KGcuc2VyaWVzLGcuaSkpLG4uc2VyaWVzLmxlbmd0aD4wKXt2YXIgeT1uZXcgWHQodGhpcy5jdHgsZSwhMCk7di5wdXNoKHkuZHJhdyhuLnNlcmllcyxcInNjYXR0ZXJcIixuLmkpKX1pZihsLnNlcmllcy5sZW5ndGg+MCl7dmFyIHc9bmV3IFh0KHRoaXMuY3R4LGUsITApO3YucHVzaCh3LmRyYXcobC5zZXJpZXMsXCJidWJibGVcIixsLmkpKX19ZWxzZSBzd2l0Y2goYS5jaGFydC50eXBlKXtjYXNlXCJsaW5lXCI6dj1wLmRyYXcocy5zZXJpZXMsXCJsaW5lXCIpO2JyZWFrO2Nhc2VcImFyZWFcIjp2PXAuZHJhdyhzLnNlcmllcyxcImFyZWFcIik7YnJlYWs7Y2FzZVwiYmFyXCI6aWYoYS5jaGFydC5zdGFja2VkKXY9bmV3IHd0KHRoaXMuY3R4LGUpLmRyYXcocy5zZXJpZXMpO2Vsc2UgdGhpcy5jdHguYmFyPW5ldyB5dCh0aGlzLmN0eCxlKSx2PXRoaXMuY3R4LmJhci5kcmF3KHMuc2VyaWVzKTticmVhaztjYXNlXCJjYW5kbGVzdGlja1wiOnY9bmV3IGt0KHRoaXMuY3R4LGUpLmRyYXcocy5zZXJpZXMsXCJjYW5kbGVzdGlja1wiKTticmVhaztjYXNlXCJib3hQbG90XCI6dj1uZXcga3QodGhpcy5jdHgsZSkuZHJhdyhzLnNlcmllcyxcImJveFBsb3RcIik7YnJlYWs7Y2FzZVwicmFuZ2VCYXJcIjp2PXRoaXMuY3R4LnJhbmdlQmFyLmRyYXcocy5zZXJpZXMpO2JyZWFrO2Nhc2VcInJhbmdlQXJlYVwiOnY9cC5kcmF3KHMuc2VyaWVzUmFuZ2VTdGFydCxcInJhbmdlQXJlYVwiLHZvaWQgMCxzLnNlcmllc1JhbmdlRW5kKTticmVhaztjYXNlXCJoZWF0bWFwXCI6dj1uZXcgU3QodGhpcy5jdHgsZSkuZHJhdyhzLnNlcmllcyk7YnJlYWs7Y2FzZVwidHJlZW1hcFwiOnY9bmV3IFl0KHRoaXMuY3R4LGUpLmRyYXcocy5zZXJpZXMpO2JyZWFrO2Nhc2VcInBpZVwiOmNhc2VcImRvbnV0XCI6Y2FzZVwicG9sYXJBcmVhXCI6dj10aGlzLmN0eC5waWUuZHJhdyhzLnNlcmllcyk7YnJlYWs7Y2FzZVwicmFkaWFsQmFyXCI6dj14LmRyYXcocy5zZXJpZXMpO2JyZWFrO2Nhc2VcInJhZGFyXCI6dj1iLmRyYXcocy5zZXJpZXMpO2JyZWFrO2RlZmF1bHQ6dj1wLmRyYXcocy5zZXJpZXMpfXJldHVybiB2fX0se2tleTpcInNldFNWR0RpbWVuc2lvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzLGU9dGhpcy53LmNvbmZpZzt0LnN2Z1dpZHRoPWUuY2hhcnQud2lkdGgsdC5zdmdIZWlnaHQ9ZS5jaGFydC5oZWlnaHQ7dmFyIGk9eC5nZXREaW1lbnNpb25zKHRoaXMuZWwpLGE9ZS5jaGFydC53aWR0aC50b1N0cmluZygpLnNwbGl0KC9bMC05XSsvZykucG9wKCk7XCIlXCI9PT1hP3guaXNOdW1iZXIoaVswXSkmJigwPT09aVswXS53aWR0aCYmKGk9eC5nZXREaW1lbnNpb25zKHRoaXMuZWwucGFyZW50Tm9kZSkpLHQuc3ZnV2lkdGg9aVswXSpwYXJzZUludChlLmNoYXJ0LndpZHRoLDEwKS8xMDApOlwicHhcIiE9PWEmJlwiXCIhPT1hfHwodC5zdmdXaWR0aD1wYXJzZUludChlLmNoYXJ0LndpZHRoLDEwKSk7dmFyIHM9ZS5jaGFydC5oZWlnaHQudG9TdHJpbmcoKS5zcGxpdCgvWzAtOV0rL2cpLnBvcCgpO2lmKFwiYXV0b1wiIT09dC5zdmdIZWlnaHQmJlwiXCIhPT10LnN2Z0hlaWdodClpZihcIiVcIj09PXMpe3ZhciByPXguZ2V0RGltZW5zaW9ucyh0aGlzLmVsLnBhcmVudE5vZGUpO3Quc3ZnSGVpZ2h0PXJbMV0qcGFyc2VJbnQoZS5jaGFydC5oZWlnaHQsMTApLzEwMH1lbHNlIHQuc3ZnSGVpZ2h0PXBhcnNlSW50KGUuY2hhcnQuaGVpZ2h0LDEwKTtlbHNlIHQuYXhpc0NoYXJ0cz90LnN2Z0hlaWdodD10LnN2Z1dpZHRoLzEuNjE6dC5zdmdIZWlnaHQ9dC5zdmdXaWR0aC8xLjI7aWYodC5zdmdXaWR0aDwwJiYodC5zdmdXaWR0aD0wKSx0LnN2Z0hlaWdodDwwJiYodC5zdmdIZWlnaHQ9MCksbS5zZXRBdHRycyh0LmRvbS5QYXBlci5ub2RlLHt3aWR0aDp0LnN2Z1dpZHRoLGhlaWdodDp0LnN2Z0hlaWdodH0pLFwiJVwiIT09cyl7dmFyIG89ZS5jaGFydC5zcGFya2xpbmUuZW5hYmxlZD8wOnQuYXhpc0NoYXJ0cz9lLmNoYXJ0LnBhcmVudEhlaWdodE9mZnNldDowO3QuZG9tLlBhcGVyLm5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlLnN0eWxlLm1pbkhlaWdodD10LnN2Z0hlaWdodCtvK1wicHhcIn10LmRvbS5lbFdyYXAuc3R5bGUud2lkdGg9dC5zdmdXaWR0aCtcInB4XCIsdC5kb20uZWxXcmFwLnN0eWxlLmhlaWdodD10LnN2Z0hlaWdodCtcInB4XCJ9fSx7a2V5Olwic2hpZnRHcmFwaFBvc2l0aW9uXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscyxlPXQudHJhbnNsYXRlWSxpPXt0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIrdC50cmFuc2xhdGVYK1wiLCBcIitlK1wiKVwifTttLnNldEF0dHJzKHQuZG9tLmVsR3JhcGhpY2FsLm5vZGUsaSl9fSx7a2V5OlwicmVzaXplTm9uQXhpc0NoYXJ0c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5nbG9iYWxzLGk9MCxhPXQuY29uZmlnLmNoYXJ0LnNwYXJrbGluZS5lbmFibGVkPzE6MTU7YSs9dC5jb25maWcuZ3JpZC5wYWRkaW5nLmJvdHRvbSxcInRvcFwiIT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9uJiZcImJvdHRvbVwiIT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9ufHwhdC5jb25maWcubGVnZW5kLnNob3d8fHQuY29uZmlnLmxlZ2VuZC5mbG9hdGluZ3x8KGk9bmV3IGx0KHRoaXMuY3R4KS5sZWdlbmRIZWxwZXJzLmdldExlZ2VuZEJCb3goKS5jbHdoKzEwKTt2YXIgcz10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtcmFkaWFsYmFyLCAuYXBleGNoYXJ0cy1waWVcIikscj0yLjA1KnQuZ2xvYmFscy5yYWRpYWxTaXplO2lmKHMmJiF0LmNvbmZpZy5jaGFydC5zcGFya2xpbmUuZW5hYmxlZCYmMCE9PXQuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5zdGFydEFuZ2xlKXt2YXIgbz14LmdldEJvdW5kaW5nQ2xpZW50UmVjdChzKTtyPW8uYm90dG9tO3ZhciBuPW8uYm90dG9tLW8udG9wO3I9TWF0aC5tYXgoMi4wNSp0Lmdsb2JhbHMucmFkaWFsU2l6ZSxuKX12YXIgbD1yK2UudHJhbnNsYXRlWStpK2E7ZS5kb20uZWxMZWdlbmRGb3JlaWduJiZlLmRvbS5lbExlZ2VuZEZvcmVpZ24uc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsbCksdC5jb25maWcuY2hhcnQuaGVpZ2h0JiZTdHJpbmcodC5jb25maWcuY2hhcnQuaGVpZ2h0KS5pbmRleE9mKFwiJVwiKT4wfHwoZS5kb20uZWxXcmFwLnN0eWxlLmhlaWdodD1sK1wicHhcIixtLnNldEF0dHJzKGUuZG9tLlBhcGVyLm5vZGUse2hlaWdodDpsfSksZS5kb20uUGFwZXIubm9kZS5wYXJlbnROb2RlLnBhcmVudE5vZGUuc3R5bGUubWluSGVpZ2h0PWwrXCJweFwiKX19LHtrZXk6XCJjb3JlQ2FsY3VsYXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXtuZXcgVSh0aGlzLmN0eCkuaW5pdCgpfX0se2tleTpcInJlc2V0R2xvYmFsc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPWZ1bmN0aW9uKCl7cmV0dXJuIHQudy5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuW119KSl9LGk9bmV3IFksYT10aGlzLncuZ2xvYmFscztpLmluaXRHbG9iYWxWYXJzKGEpLGEuc2VyaWVzWHZhbHVlcz1lKCksYS5zZXJpZXNZdmFsdWVzPWUoKX19LHtrZXk6XCJpc011bHRpcGxlWVwiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy53LmNvbmZpZy55YXhpcy5jb25zdHJ1Y3Rvcj09PUFycmF5JiZ0aGlzLncuY29uZmlnLnlheGlzLmxlbmd0aD4xKXJldHVybiB0aGlzLncuZ2xvYmFscy5pc011bHRpcGxlWUF4aXM9ITAsITB9fSx7a2V5OlwieHlTZXR0aW5nc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9bnVsbCxlPXRoaXMudztpZihlLmdsb2JhbHMuYXhpc0NoYXJ0cyl7aWYoXCJiYWNrXCI9PT1lLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnBvc2l0aW9uKW5ldyBRKHRoaXMuY3R4KS5kcmF3WENyb3NzaGFpcnMoKTtpZihcImJhY2tcIj09PWUuY29uZmlnLnlheGlzWzBdLmNyb3NzaGFpcnMucG9zaXRpb24pbmV3IFEodGhpcy5jdHgpLmRyYXdZQ3Jvc3NoYWlycygpO2lmKFwiZGF0ZXRpbWVcIj09PWUuY29uZmlnLnhheGlzLnR5cGUmJnZvaWQgMD09PWUuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXIpe3RoaXMuY3R4LnRpbWVTY2FsZT1uZXcgUnQodGhpcy5jdHgpO3ZhciBpPVtdO2lzRmluaXRlKGUuZ2xvYmFscy5taW5YKSYmaXNGaW5pdGUoZS5nbG9iYWxzLm1heFgpJiYhZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD9pPXRoaXMuY3R4LnRpbWVTY2FsZS5jYWxjdWxhdGVUaW1lU2NhbGVUaWNrcyhlLmdsb2JhbHMubWluWCxlLmdsb2JhbHMubWF4WCk6ZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKGk9dGhpcy5jdHgudGltZVNjYWxlLmNhbGN1bGF0ZVRpbWVTY2FsZVRpY2tzKGUuZ2xvYmFscy5taW5ZLGUuZ2xvYmFscy5tYXhZKSksdGhpcy5jdHgudGltZVNjYWxlLnJlY2FsY0RpbWVuc2lvbnNCYXNlZE9uRm9ybWF0KGkpfXQ9bmV3IHkodGhpcy5jdHgpLmdldENhbGN1bGF0ZWRSYXRpb3MoKX1yZXR1cm4gdH19LHtrZXk6XCJ1cGRhdGVTb3VyY2VDaGFydFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuY3R4LncuZ2xvYmFscy5zZWxlY3Rpb249dm9pZCAwLHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZU9wdGlvbnMoe2NoYXJ0OntzZWxlY3Rpb246e3hheGlzOnttaW46dC53Lmdsb2JhbHMubWluWCxtYXg6dC53Lmdsb2JhbHMubWF4WH19fX0sITEsITEpfX0se2tleTpcInNldHVwQnJ1c2hIYW5kbGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGk9dGhpcy53O2lmKGkuY29uZmlnLmNoYXJ0LmJydXNoLmVuYWJsZWQmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGkuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24pe3ZhciBhPWkuY29uZmlnLmNoYXJ0LmJydXNoLnRhcmdldHN8fFtpLmNvbmZpZy5jaGFydC5icnVzaC50YXJnZXRdO2EuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIGk9QXBleENoYXJ0cy5nZXRDaGFydEJ5SUQoZSk7aS53Lmdsb2JhbHMuYnJ1c2hTb3VyY2U9dC5jdHgsXCJmdW5jdGlvblwiIT10eXBlb2YgaS53LmNvbmZpZy5jaGFydC5ldmVudHMuem9vbWVkJiYoaS53LmNvbmZpZy5jaGFydC5ldmVudHMuem9vbWVkPWZ1bmN0aW9uKCl7dC51cGRhdGVTb3VyY2VDaGFydChpKX0pLFwiZnVuY3Rpb25cIiE9dHlwZW9mIGkudy5jb25maWcuY2hhcnQuZXZlbnRzLnNjcm9sbGVkJiYoaS53LmNvbmZpZy5jaGFydC5ldmVudHMuc2Nyb2xsZWQ9ZnVuY3Rpb24oKXt0LnVwZGF0ZVNvdXJjZUNoYXJ0KGkpfSl9KSksaS5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbj1mdW5jdGlvbih0LHMpe2EuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGE9QXBleENoYXJ0cy5nZXRDaGFydEJ5SUQodCkscj14LmNsb25lKGkuY29uZmlnLnlheGlzKTtpZihpLmNvbmZpZy5jaGFydC5icnVzaC5hdXRvU2NhbGVZYXhpcyYmMT09PWEudy5nbG9iYWxzLnNlcmllcy5sZW5ndGgpe3ZhciBvPW5ldyBfKGEpO3I9by5hdXRvU2NhbGVZKGEscixzKX12YXIgbj1hLncuY29uZmlnLnlheGlzLnJlZHVjZSgoZnVuY3Rpb24odCxpLHMpe3JldHVybltdLmNvbmNhdCh1KHQpLFtlKGUoe30sYS53LmNvbmZpZy55YXhpc1tzXSkse30se21pbjpyWzBdLm1pbixtYXg6clswXS5tYXh9KV0pfSksW10pO2EuY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZU9wdGlvbnMoe3hheGlzOnttaW46cy54YXhpcy5taW4sbWF4OnMueGF4aXMubWF4fSx5YXhpczpufSwhMSwhMSwhMSwhMSl9KSl9fX19XSksdH0oKSxIdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiX3VwZGF0ZU9wdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxzPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0scj0hKGFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdKXx8YXJndW1lbnRzWzNdLG89YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0mJmFyZ3VtZW50c1s0XTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4pe3ZhciBsPVtlLmN0eF07ciYmKGw9ZS5jdHguZ2V0U3luY2VkQ2hhcnRzKCkpLGUuY3R4LncuZ2xvYmFscy5pc0V4ZWNDYWxsZWQmJihsPVtlLmN0eF0sZS5jdHgudy5nbG9iYWxzLmlzRXhlY0NhbGxlZD0hMSksbC5mb3JFYWNoKChmdW5jdGlvbihyLGgpe3ZhciBjPXIudztpZihjLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZT1zLGF8fChjLmdsb2JhbHMucmVzaXplZD0hMCxjLmdsb2JhbHMuZGF0YUNoYW5nZWQ9ITAscyYmci5zZXJpZXMuZ2V0UHJldmlvdXNQYXRocygpKSx0JiZcIm9iamVjdFwiPT09aSh0KSYmKHIuY29uZmlnPW5ldyBFKHQpLHQ9eS5leHRlbmRBcnJheVByb3BzKHIuY29uZmlnLHQsYyksci53Lmdsb2JhbHMuY2hhcnRJRCE9PWUuY3R4LncuZ2xvYmFscy5jaGFydElEJiZkZWxldGUgdC5zZXJpZXMsYy5jb25maWc9eC5leHRlbmQoYy5jb25maWcsdCksbyYmKGMuZ2xvYmFscy5sYXN0WEF4aXM9dC54YXhpcz94LmNsb25lKHQueGF4aXMpOltdLGMuZ2xvYmFscy5sYXN0WUF4aXM9dC55YXhpcz94LmNsb25lKHQueWF4aXMpOltdLGMuZ2xvYmFscy5pbml0aWFsQ29uZmlnPXguZXh0ZW5kKHt9LGMuY29uZmlnKSxjLmdsb2JhbHMuaW5pdGlhbFNlcmllcz14LmNsb25lKGMuY29uZmlnLnNlcmllcyksdC5zZXJpZXMpKSl7Zm9yKHZhciBkPTA7ZDxjLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5sZW5ndGg7ZCsrKXt2YXIgZz1jLmNvbmZpZy5zZXJpZXNbYy5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXNbZF1dO2MuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNbZF0uZGF0YT1jLmdsb2JhbHMuYXhpc0NoYXJ0cz9nLmRhdGEuc2xpY2UoKTpnfWZvcih2YXIgdT0wO3U8Yy5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMubGVuZ3RoO3UrKyl7dmFyIHA9Yy5jb25maWcuc2VyaWVzW2MuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzW3VdXTtjLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzW3VdLmRhdGE9Yy5nbG9iYWxzLmF4aXNDaGFydHM/cC5kYXRhLnNsaWNlKCk6cH1yLnNlcmllcy5lbXB0eUNvbGxhcHNlZFNlcmllcyhjLmNvbmZpZy5zZXJpZXMpfXJldHVybiByLnVwZGF0ZSh0KS50aGVuKChmdW5jdGlvbigpe2g9PT1sLmxlbmd0aC0xJiZuKHIpfSkpfSkpfSkpfX0se2tleTpcIl91cGRhdGVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMsYT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocyl7dmFyIHIsbz1pLnc7cmV0dXJuIG8uZ2xvYmFscy5zaG91bGRBbmltYXRlPWUsby5nbG9iYWxzLmRhdGFDaGFuZ2VkPSEwLGUmJmkuY3R4LnNlcmllcy5nZXRQcmV2aW91c1BhdGhzKCksby5nbG9iYWxzLmF4aXNDaGFydHM/KDA9PT0ocj10Lm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gaS5fZXh0ZW5kU2VyaWVzKHQsZSl9KSkpLmxlbmd0aCYmKHI9W3tkYXRhOltdfV0pLG8uY29uZmlnLnNlcmllcz1yKTpvLmNvbmZpZy5zZXJpZXM9dC5zbGljZSgpLGEmJihvLmdsb2JhbHMuaW5pdGlhbENvbmZpZy5zZXJpZXM9eC5jbG9uZShvLmNvbmZpZy5zZXJpZXMpLG8uZ2xvYmFscy5pbml0aWFsU2VyaWVzPXguY2xvbmUoby5jb25maWcuc2VyaWVzKSksaS5jdHgudXBkYXRlKCkudGhlbigoZnVuY3Rpb24oKXtzKGkuY3R4KX0pKX0pKX19LHtrZXk6XCJfZXh0ZW5kU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCxpKXt2YXIgYT10aGlzLncscz1hLmNvbmZpZy5zZXJpZXNbaV07cmV0dXJuIGUoZSh7fSxhLmNvbmZpZy5zZXJpZXNbaV0pLHt9LHtuYW1lOnQubmFtZT90Lm5hbWU6cyYmcy5uYW1lLGNvbG9yOnQuY29sb3I/dC5jb2xvcjpzJiZzLmNvbG9yLHR5cGU6dC50eXBlP3QudHlwZTpzJiZzLnR5cGUsZGF0YTp0LmRhdGE/dC5kYXRhOnMmJnMuZGF0YX0pfX0se2tleTpcInRvZ2dsZURhdGFQb2ludFNlbGVjdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9bnVsbCxzPVwiLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KHQsXCInXVwiKTtyZXR1cm4gaS5nbG9iYWxzLmF4aXNDaGFydHM/YT1pLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIlwiLmNvbmNhdChzLFwiIHBhdGhbaj0nXCIpLmNvbmNhdChlLFwiJ10sIFwiKS5jb25jYXQocyxcIiBjaXJjbGVbaj0nXCIpLmNvbmNhdChlLFwiJ10sIFwiKS5jb25jYXQocyxcIiByZWN0W2o9J1wiKS5jb25jYXQoZSxcIiddXCIpKS5tZW1iZXJzWzBdOnZvaWQgMD09PWUmJihhPWkuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiXCIuY29uY2F0KHMsXCIgcGF0aFtqPSdcIikuY29uY2F0KHQsXCInXVwiKSkubWVtYmVyc1swXSxcInBpZVwiIT09aS5jb25maWcuY2hhcnQudHlwZSYmXCJwb2xhckFyZWFcIiE9PWkuY29uZmlnLmNoYXJ0LnR5cGUmJlwiZG9udXRcIiE9PWkuY29uZmlnLmNoYXJ0LnR5cGV8fHRoaXMuY3R4LnBpZS5waWVDbGlja2VkKHQpKSxhPyhuZXcgbSh0aGlzLmN0eCkucGF0aE1vdXNlRG93bihhLG51bGwpLGEubm9kZT9hLm5vZGU6bnVsbCk6KGNvbnNvbGUud2FybihcInRvZ2dsZURhdGFQb2ludFNlbGVjdGlvbjogRWxlbWVudCBub3QgZm91bmRcIiksbnVsbCl9fSx7a2V5OlwiZm9yY2VYQXhpc1VwZGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztpZihbXCJtaW5cIixcIm1heFwiXS5mb3JFYWNoKChmdW5jdGlvbihpKXt2b2lkIDAhPT10LnhheGlzW2ldJiYoZS5jb25maWcueGF4aXNbaV09dC54YXhpc1tpXSxlLmdsb2JhbHMubGFzdFhBeGlzW2ldPXQueGF4aXNbaV0pfSkpLHQueGF4aXMuY2F0ZWdvcmllcyYmdC54YXhpcy5jYXRlZ29yaWVzLmxlbmd0aCYmKGUuY29uZmlnLnhheGlzLmNhdGVnb3JpZXM9dC54YXhpcy5jYXRlZ29yaWVzKSxlLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMpe3ZhciBpPW5ldyB6KHQpO3Q9aS5jb252ZXJ0Q2F0VG9OdW1lcmljWGF4aXModCx0aGlzLmN0eCl9cmV0dXJuIHR9fSx7a2V5OlwiZm9yY2VZQXhpc1VwZGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmNoYXJ0JiZ0LmNoYXJ0LnN0YWNrZWQmJlwiMTAwJVwiPT09dC5jaGFydC5zdGFja1R5cGUmJihBcnJheS5pc0FycmF5KHQueWF4aXMpP3QueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24oZSxpKXt0LnlheGlzW2ldLm1pbj0wLHQueWF4aXNbaV0ubWF4PTEwMH0pKToodC55YXhpcy5taW49MCx0LnlheGlzLm1heD0xMDApKSx0fX0se2tleTpcInJldmVydERlZmF1bHRBeGlzTWluTWF4XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudyxhPWkuZ2xvYmFscy5sYXN0WEF4aXMscz1pLmdsb2JhbHMubGFzdFlBeGlzO3QmJnQueGF4aXMmJihhPXQueGF4aXMpLHQmJnQueWF4aXMmJihzPXQueWF4aXMpLGkuY29uZmlnLnhheGlzLm1pbj1hLm1pbixpLmNvbmZpZy54YXhpcy5tYXg9YS5tYXg7dmFyIHI9ZnVuY3Rpb24odCl7dm9pZCAwIT09c1t0XSYmKGkuY29uZmlnLnlheGlzW3RdLm1pbj1zW3RdLm1pbixpLmNvbmZpZy55YXhpc1t0XS5tYXg9c1t0XS5tYXgpfTtpLmNvbmZpZy55YXhpcy5tYXAoKGZ1bmN0aW9uKHQsYSl7aS5nbG9iYWxzLnpvb21lZHx8dm9pZCAwIT09c1thXT9yKGEpOnZvaWQgMCE9PWUuY3R4Lm9wdHMueWF4aXNbYV0mJih0Lm1pbj1lLmN0eC5vcHRzLnlheGlzW2FdLm1pbix0Lm1heD1lLmN0eC5vcHRzLnlheGlzW2FdLm1heCl9KSl9fV0pLHR9KCk7enQ9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dm9pZCAwLEV0PWZ1bmN0aW9uKHQsZSl7dmFyIGE9KHZvaWQgMCE9PXRoaXM/dGhpczp0KS5TVkc9ZnVuY3Rpb24odCl7aWYoYS5zdXBwb3J0ZWQpcmV0dXJuIHQ9bmV3IGEuRG9jKHQpLGEucGFyc2VyLmRyYXd8fGEucHJlcGFyZSgpLHR9O2lmKGEubnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLGEueG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zL1wiLGEueGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsYS5zdmdqcz1cImh0dHA6Ly9zdmdqcy5kZXZcIixhLnN1cHBvcnRlZD0hMCwhYS5zdXBwb3J0ZWQpcmV0dXJuITE7YS5kaWQ9MWUzLGEuZWlkPWZ1bmN0aW9uKHQpe3JldHVyblwiU3ZnanNcIitkKHQpK2EuZGlkKyt9LGEuY3JlYXRlPWZ1bmN0aW9uKHQpe3ZhciBpPWUuY3JlYXRlRWxlbWVudE5TKHRoaXMubnMsdCk7cmV0dXJuIGkuc2V0QXR0cmlidXRlKFwiaWRcIix0aGlzLmVpZCh0KSksaX0sYS5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgdCxlO2U9KHQ9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpKS5wb3AoKTtmb3IodmFyIGk9dC5sZW5ndGgtMTtpPj0wO2ktLSlpZih0W2ldKWZvcih2YXIgcyBpbiBlKXRbaV0ucHJvdG90eXBlW3NdPWVbc107YS5TZXQmJmEuU2V0LmluaGVyaXQmJmEuU2V0LmluaGVyaXQoKX0sYS5pbnZlbnQ9ZnVuY3Rpb24odCl7dmFyIGU9XCJmdW5jdGlvblwiPT10eXBlb2YgdC5jcmVhdGU/dC5jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxhLmNyZWF0ZSh0LmNyZWF0ZSkpfTtyZXR1cm4gdC5pbmhlcml0JiYoZS5wcm90b3R5cGU9bmV3IHQuaW5oZXJpdCksdC5leHRlbmQmJmEuZXh0ZW5kKGUsdC5leHRlbmQpLHQuY29uc3RydWN0JiZhLmV4dGVuZCh0LnBhcmVudHx8YS5Db250YWluZXIsdC5jb25zdHJ1Y3QpLGV9LGEuYWRvcHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGU/ZS5pbnN0YW5jZT9lLmluc3RhbmNlOigoaT1cInN2Z1wiPT1lLm5vZGVOYW1lP2UucGFyZW50Tm9kZSBpbnN0YW5jZW9mIHQuU1ZHRWxlbWVudD9uZXcgYS5OZXN0ZWQ6bmV3IGEuRG9jOlwibGluZWFyR3JhZGllbnRcIj09ZS5ub2RlTmFtZT9uZXcgYS5HcmFkaWVudChcImxpbmVhclwiKTpcInJhZGlhbEdyYWRpZW50XCI9PWUubm9kZU5hbWU/bmV3IGEuR3JhZGllbnQoXCJyYWRpYWxcIik6YVtkKGUubm9kZU5hbWUpXT9uZXcoYVtkKGUubm9kZU5hbWUpXSk6bmV3IGEuRWxlbWVudChlKSkudHlwZT1lLm5vZGVOYW1lLGkubm9kZT1lLGUuaW5zdGFuY2U9aSxpIGluc3RhbmNlb2YgYS5Eb2MmJmkubmFtZXNwYWNlKCkuZGVmcygpLGkuc2V0RGF0YShKU09OLnBhcnNlKGUuZ2V0QXR0cmlidXRlKFwic3ZnanM6ZGF0YVwiKSl8fHt9KSxpKTpudWxsO3ZhciBpfSxhLnByZXBhcmU9ZnVuY3Rpb24oKXt2YXIgdD1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYm9keVwiKVswXSxpPSh0P25ldyBhLkRvYyh0KTphLmFkb3B0KGUuZG9jdW1lbnRFbGVtZW50KS5uZXN0ZWQoKSkuc2l6ZSgyLDApO2EucGFyc2VyPXtib2R5OnR8fGUuZG9jdW1lbnRFbGVtZW50LGRyYXc6aS5zdHlsZShcIm9wYWNpdHk6MDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMDAlO3RvcDotMTAwJTtvdmVyZmxvdzpoaWRkZW5cIikubm9kZSxwb2x5OmkucG9seWxpbmUoKS5ub2RlLHBhdGg6aS5wYXRoKCkubm9kZSxuYXRpdmU6YS5jcmVhdGUoXCJzdmdcIil9fSxhLnBhcnNlcj17bmF0aXZlOmEuY3JlYXRlKFwic3ZnXCIpfSxlLmFkZEV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsKGZ1bmN0aW9uKCl7YS5wYXJzZXIuZHJhd3x8YS5wcmVwYXJlKCl9KSwhMSksYS5yZWdleD17bnVtYmVyQW5kVW5pdDovXihbKy1dPyhcXGQrKFxcLlxcZCopP3xcXC5cXGQrKShlWystXT9cXGQrKT8pKFthLXolXSopJC9pLGhleDovXiM/KFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pJC9pLHJnYjovcmdiXFwoKFxcZCspLChcXGQrKSwoXFxkKylcXCkvLHJlZmVyZW5jZTovIyhbYS16MC05XFwtX10rKS9pLHRyYW5zZm9ybXM6L1xcKVxccyosP1xccyovLHdoaXRlc3BhY2U6L1xccy9nLGlzSGV4Oi9eI1thLWYwLTldezMsNn0kL2ksaXNSZ2I6L15yZ2JcXCgvLGlzQ3NzOi9bXjpdKzpbXjtdKzs/Lyxpc0JsYW5rOi9eKFxccyspPyQvLGlzTnVtYmVyOi9eWystXT8oXFxkKyhcXC5cXGQqKT98XFwuXFxkKykoZVsrLV0/XFxkKyk/JC9pLGlzUGVyY2VudDovXi0/W1xcZFxcLl0rJSQvLGlzSW1hZ2U6L1xcLihqcGd8anBlZ3xwbmd8Z2lmfHN2ZykoXFw/W149XSsuKik/L2ksZGVsaW1pdGVyOi9bXFxzLF0rLyxoeXBoZW46LyhbXmVdKVxcLS9naSxwYXRoTGV0dGVyczovW01MSFZDU1FUQVpdL2dpLGlzUGF0aExldHRlcjovW01MSFZDU1FUQVpdL2ksbnVtYmVyc1dpdGhEb3RzOi8oKFxcZD9cXC5cXGQrKD86ZVsrLV0/XFxkKyk/KSgoPzpcXC5cXGQrKD86ZVsrLV0/XFxkKyk/KSspKSsvZ2ksZG90czovXFwuL2d9LGEudXRpbHM9e21hcDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaT10Lmxlbmd0aCxhPVtdLHM9MDtzPGk7cysrKWEucHVzaChlKHRbc10pKTtyZXR1cm4gYX0sZmlsdGVyOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPXQubGVuZ3RoLGE9W10scz0wO3M8aTtzKyspZSh0W3NdKSYmYS5wdXNoKHRbc10pO3JldHVybiBhfSxmaWx0ZXJTVkdFbGVtZW50czpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5maWx0ZXIoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiB0LlNWR0VsZW1lbnR9KSl9fSxhLmRlZmF1bHRzPXthdHRyczp7XCJmaWxsLW9wYWNpdHlcIjoxLFwic3Ryb2tlLW9wYWNpdHlcIjoxLFwic3Ryb2tlLXdpZHRoXCI6MCxcInN0cm9rZS1saW5lam9pblwiOlwibWl0ZXJcIixcInN0cm9rZS1saW5lY2FwXCI6XCJidXR0XCIsZmlsbDpcIiMwMDAwMDBcIixzdHJva2U6XCIjMDAwMDAwXCIsb3BhY2l0eToxLHg6MCx5OjAsY3g6MCxjeTowLHdpZHRoOjAsaGVpZ2h0OjAscjowLHJ4OjAscnk6MCxvZmZzZXQ6MCxcInN0b3Atb3BhY2l0eVwiOjEsXCJzdG9wLWNvbG9yXCI6XCIjMDAwMDAwXCIsXCJmb250LXNpemVcIjoxNixcImZvbnQtZmFtaWx5XCI6XCJIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmXCIsXCJ0ZXh0LWFuY2hvclwiOlwic3RhcnRcIn19LGEuQ29sb3I9ZnVuY3Rpb24odCl7dmFyIGUsczt0aGlzLnI9MCx0aGlzLmc9MCx0aGlzLmI9MCx0JiYoXCJzdHJpbmdcIj09dHlwZW9mIHQ/YS5yZWdleC5pc1JnYi50ZXN0KHQpPyhlPWEucmVnZXgucmdiLmV4ZWModC5yZXBsYWNlKGEucmVnZXgud2hpdGVzcGFjZSxcIlwiKSksdGhpcy5yPXBhcnNlSW50KGVbMV0pLHRoaXMuZz1wYXJzZUludChlWzJdKSx0aGlzLmI9cGFyc2VJbnQoZVszXSkpOmEucmVnZXguaXNIZXgudGVzdCh0KSYmKGU9YS5yZWdleC5oZXguZXhlYyg0PT0ocz10KS5sZW5ndGg/W1wiI1wiLHMuc3Vic3RyaW5nKDEsMikscy5zdWJzdHJpbmcoMSwyKSxzLnN1YnN0cmluZygyLDMpLHMuc3Vic3RyaW5nKDIsMykscy5zdWJzdHJpbmcoMyw0KSxzLnN1YnN0cmluZygzLDQpXS5qb2luKFwiXCIpOnMpLHRoaXMucj1wYXJzZUludChlWzFdLDE2KSx0aGlzLmc9cGFyc2VJbnQoZVsyXSwxNiksdGhpcy5iPXBhcnNlSW50KGVbM10sMTYpKTpcIm9iamVjdFwiPT09aSh0KSYmKHRoaXMucj10LnIsdGhpcy5nPXQuZyx0aGlzLmI9dC5iKSl9LGEuZXh0ZW5kKGEuQ29sb3Ise3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9IZXgoKX0sdG9IZXg6ZnVuY3Rpb24oKXtyZXR1cm5cIiNcIitnKHRoaXMucikrZyh0aGlzLmcpK2codGhpcy5iKX0sdG9SZ2I6ZnVuY3Rpb24oKXtyZXR1cm5cInJnYihcIitbdGhpcy5yLHRoaXMuZyx0aGlzLmJdLmpvaW4oKStcIilcIn0sYnJpZ2h0bmVzczpmdW5jdGlvbigpe3JldHVybiB0aGlzLnIvMjU1Ki4zK3RoaXMuZy8yNTUqLjU5K3RoaXMuYi8yNTUqLjExfSxtb3JwaDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbj1uZXcgYS5Db2xvcih0KSx0aGlzfSxhdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbj8odD10PDA/MDp0PjE/MTp0LG5ldyBhLkNvbG9yKHtyOn5+KHRoaXMucisodGhpcy5kZXN0aW5hdGlvbi5yLXRoaXMucikqdCksZzp+fih0aGlzLmcrKHRoaXMuZGVzdGluYXRpb24uZy10aGlzLmcpKnQpLGI6fn4odGhpcy5iKyh0aGlzLmRlc3RpbmF0aW9uLmItdGhpcy5iKSp0KX0pKTp0aGlzfX0pLGEuQ29sb3IudGVzdD1mdW5jdGlvbih0KXtyZXR1cm4gdCs9XCJcIixhLnJlZ2V4LmlzSGV4LnRlc3QodCl8fGEucmVnZXguaXNSZ2IudGVzdCh0KX0sYS5Db2xvci5pc1JnYj1mdW5jdGlvbih0KXtyZXR1cm4gdCYmXCJudW1iZXJcIj09dHlwZW9mIHQuciYmXCJudW1iZXJcIj09dHlwZW9mIHQuZyYmXCJudW1iZXJcIj09dHlwZW9mIHQuYn0sYS5Db2xvci5pc0NvbG9yPWZ1bmN0aW9uKHQpe3JldHVybiBhLkNvbG9yLmlzUmdiKHQpfHxhLkNvbG9yLnRlc3QodCl9LGEuQXJyYXk9ZnVuY3Rpb24odCxlKXswPT0odD0odHx8W10pLnZhbHVlT2YoKSkubGVuZ3RoJiZlJiYodD1lLnZhbHVlT2YoKSksdGhpcy52YWx1ZT10aGlzLnBhcnNlKHQpfSxhLmV4dGVuZChhLkFycmF5LHt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlLmpvaW4oXCIgXCIpfSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9LHBhcnNlOmZ1bmN0aW9uKHQpe3JldHVybiB0PXQudmFsdWVPZigpLEFycmF5LmlzQXJyYXkodCk/dDp0aGlzLnNwbGl0KHQpfX0pLGEuUG9pbnRBcnJheT1mdW5jdGlvbih0LGUpe2EuQXJyYXkuY2FsbCh0aGlzLHQsZXx8W1swLDBdXSl9LGEuUG9pbnRBcnJheS5wcm90b3R5cGU9bmV3IGEuQXJyYXksYS5Qb2ludEFycmF5LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hLlBvaW50QXJyYXk7Zm9yKHZhciBzPXtNOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gZS54PWkueD10WzBdLGUueT1pLnk9dFsxXSxbXCJNXCIsZS54LGUueV19LEw6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS54PXRbMF0sZS55PXRbMV0sW1wiTFwiLHRbMF0sdFsxXV19LEg6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS54PXRbMF0sW1wiSFwiLHRbMF1dfSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUueT10WzBdLFtcIlZcIix0WzBdXX0sQzpmdW5jdGlvbih0LGUpe3JldHVybiBlLng9dFs0XSxlLnk9dFs1XSxbXCJDXCIsdFswXSx0WzFdLHRbMl0sdFszXSx0WzRdLHRbNV1dfSxROmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUueD10WzJdLGUueT10WzNdLFtcIlFcIix0WzBdLHRbMV0sdFsyXSx0WzNdXX0sWjpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIGUueD1pLngsZS55PWkueSxbXCJaXCJdfX0scj1cIm1saHZxdGNzYXpcIi5zcGxpdChcIlwiKSxvPTAsbj1yLmxlbmd0aDtvPG47KytvKXNbcltvXV09ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsaSxhKXtpZihcIkhcIj09dCllWzBdPWVbMF0raS54O2Vsc2UgaWYoXCJWXCI9PXQpZVswXT1lWzBdK2kueTtlbHNlIGlmKFwiQVwiPT10KWVbNV09ZVs1XStpLngsZVs2XT1lWzZdK2kueTtlbHNlIGZvcih2YXIgcj0wLG89ZS5sZW5ndGg7cjxvOysrcillW3JdPWVbcl0rKHIlMj9pLnk6aS54KTtpZihzJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBzW3RdKXJldHVybiBzW3RdKGUsaSxhKX19KHJbb10udG9VcHBlckNhc2UoKSk7YS5QYXRoQXJyYXk9ZnVuY3Rpb24odCxlKXthLkFycmF5LmNhbGwodGhpcyx0LGV8fFtbXCJNXCIsMCwwXV0pfSxhLlBhdGhBcnJheS5wcm90b3R5cGU9bmV3IGEuQXJyYXksYS5QYXRoQXJyYXkucHJvdG90eXBlLmNvbnN0cnVjdG9yPWEuUGF0aEFycmF5LGEuZXh0ZW5kKGEuUGF0aEFycmF5LHt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtmb3IodmFyIGU9MCxpPXQubGVuZ3RoLGE9XCJcIjtlPGk7ZSsrKWErPXRbZV1bMF0sbnVsbCE9dFtlXVsxXSYmKGErPXRbZV1bMV0sbnVsbCE9dFtlXVsyXSYmKGErPVwiIFwiLGErPXRbZV1bMl0sbnVsbCE9dFtlXVszXSYmKGErPVwiIFwiLGErPXRbZV1bM10sYSs9XCIgXCIsYSs9dFtlXVs0XSxudWxsIT10W2VdWzVdJiYoYSs9XCIgXCIsYSs9dFtlXVs1XSxhKz1cIiBcIixhKz10W2VdWzZdLG51bGwhPXRbZV1bN10mJihhKz1cIiBcIixhKz10W2VdWzddKSkpKSk7cmV0dXJuIGErXCIgXCJ9KHRoaXMudmFsdWUpfSxtb3ZlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5iYm94KCk7cmV0dXJuIGkueCxpLnksdGhpc30sYXQ6ZnVuY3Rpb24odCl7aWYoIXRoaXMuZGVzdGluYXRpb24pcmV0dXJuIHRoaXM7Zm9yKHZhciBlPXRoaXMudmFsdWUsaT10aGlzLmRlc3RpbmF0aW9uLnZhbHVlLHM9W10scj1uZXcgYS5QYXRoQXJyYXksbz0wLG49ZS5sZW5ndGg7bzxuO28rKyl7c1tvXT1bZVtvXVswXV07Zm9yKHZhciBsPTEsaD1lW29dLmxlbmd0aDtsPGg7bCsrKXNbb11bbF09ZVtvXVtsXSsoaVtvXVtsXS1lW29dW2xdKSp0O1wiQVwiPT09c1tvXVswXSYmKHNbb11bNF09KygwIT1zW29dWzRdKSxzW29dWzVdPSsoMCE9c1tvXVs1XSkpfXJldHVybiByLnZhbHVlPXMscn0scGFyc2U6ZnVuY3Rpb24odCl7aWYodCBpbnN0YW5jZW9mIGEuUGF0aEFycmF5KXJldHVybiB0LnZhbHVlT2YoKTt2YXIgZSxpPXtNOjIsTDoyLEg6MSxWOjEsQzo2LFM6NCxROjQsVDoyLEE6NyxaOjB9O3Q9XCJzdHJpbmdcIj09dHlwZW9mIHQ/dC5yZXBsYWNlKGEucmVnZXgubnVtYmVyc1dpdGhEb3RzLGgpLnJlcGxhY2UoYS5yZWdleC5wYXRoTGV0dGVycyxcIiAkJiBcIikucmVwbGFjZShhLnJlZ2V4Lmh5cGhlbixcIiQxIC1cIikudHJpbSgpLnNwbGl0KGEucmVnZXguZGVsaW1pdGVyKTp0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm5bXS5jb25jYXQuY2FsbCh0LGUpfSksW10pO3ZhciByPVtdLG89bmV3IGEuUG9pbnQsbj1uZXcgYS5Qb2ludCxsPTAsYz10Lmxlbmd0aDtkb3thLnJlZ2V4LmlzUGF0aExldHRlci50ZXN0KHRbbF0pPyhlPXRbbF0sKytsKTpcIk1cIj09ZT9lPVwiTFwiOlwibVwiPT1lJiYoZT1cImxcIiksci5wdXNoKHNbZV0uY2FsbChudWxsLHQuc2xpY2UobCxsKz1pW2UudG9VcHBlckNhc2UoKV0pLm1hcChwYXJzZUZsb2F0KSxvLG4pKX13aGlsZShjPmwpO3JldHVybiByfSxiYm94OmZ1bmN0aW9uKCl7cmV0dXJuIGEucGFyc2VyLmRyYXd8fGEucHJlcGFyZSgpLGEucGFyc2VyLnBhdGguc2V0QXR0cmlidXRlKFwiZFwiLHRoaXMudG9TdHJpbmcoKSksYS5wYXJzZXIucGF0aC5nZXRCQm94KCl9fSksYS5OdW1iZXI9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0LGUpe3RoaXMudmFsdWU9MCx0aGlzLnVuaXQ9ZXx8XCJcIixcIm51bWJlclwiPT10eXBlb2YgdD90aGlzLnZhbHVlPWlzTmFOKHQpPzA6aXNGaW5pdGUodCk/dDp0PDA/LTM0ZTM3OjM0ZTM3Olwic3RyaW5nXCI9PXR5cGVvZiB0PyhlPXQubWF0Y2goYS5yZWdleC5udW1iZXJBbmRVbml0KSkmJih0aGlzLnZhbHVlPXBhcnNlRmxvYXQoZVsxXSksXCIlXCI9PWVbNV0/dGhpcy52YWx1ZS89MTAwOlwic1wiPT1lWzVdJiYodGhpcy52YWx1ZSo9MWUzKSx0aGlzLnVuaXQ9ZVs1XSk6dCBpbnN0YW5jZW9mIGEuTnVtYmVyJiYodGhpcy52YWx1ZT10LnZhbHVlT2YoKSx0aGlzLnVuaXQ9dC51bml0KX0sZXh0ZW5kOnt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybihcIiVcIj09dGhpcy51bml0P35+KDFlOCp0aGlzLnZhbHVlKS8xZTY6XCJzXCI9PXRoaXMudW5pdD90aGlzLnZhbHVlLzFlMzp0aGlzLnZhbHVlKSt0aGlzLnVuaXR9LHRvSlNPTjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKCl9LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX0scGx1czpmdW5jdGlvbih0KXtyZXR1cm4gdD1uZXcgYS5OdW1iZXIodCksbmV3IGEuTnVtYmVyKHRoaXMrdCx0aGlzLnVuaXR8fHQudW5pdCl9LG1pbnVzOmZ1bmN0aW9uKHQpe3JldHVybiB0PW5ldyBhLk51bWJlcih0KSxuZXcgYS5OdW1iZXIodGhpcy10LHRoaXMudW5pdHx8dC51bml0KX0sdGltZXM6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bmV3IGEuTnVtYmVyKHQpLG5ldyBhLk51bWJlcih0aGlzKnQsdGhpcy51bml0fHx0LnVuaXQpfSxkaXZpZGU6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bmV3IGEuTnVtYmVyKHQpLG5ldyBhLk51bWJlcih0aGlzL3QsdGhpcy51bml0fHx0LnVuaXQpfSx0bzpmdW5jdGlvbih0KXt2YXIgZT1uZXcgYS5OdW1iZXIodGhpcyk7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQmJihlLnVuaXQ9dCksZX0sbW9ycGg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb249bmV3IGEuTnVtYmVyKHQpLHQucmVsYXRpdmUmJih0aGlzLmRlc3RpbmF0aW9uLnZhbHVlKz10aGlzLnZhbHVlKSx0aGlzfSxhdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbj9uZXcgYS5OdW1iZXIodGhpcy5kZXN0aW5hdGlvbikubWludXModGhpcykudGltZXModCkucGx1cyh0aGlzKTp0aGlzfX19KSxhLkVsZW1lbnQ9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXt0aGlzLl9zdHJva2U9YS5kZWZhdWx0cy5hdHRycy5zdHJva2UsdGhpcy5fZXZlbnQ9bnVsbCx0aGlzLmRvbT17fSwodGhpcy5ub2RlPXQpJiYodGhpcy50eXBlPXQubm9kZU5hbWUsdGhpcy5ub2RlLmluc3RhbmNlPXRoaXMsdGhpcy5fc3Ryb2tlPXQuZ2V0QXR0cmlidXRlKFwic3Ryb2tlXCIpfHx0aGlzLl9zdHJva2UpfSxleHRlbmQ6e3g6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcInhcIix0KX0seTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwieVwiLHQpfSxjeDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLngoKSt0aGlzLndpZHRoKCkvMjp0aGlzLngodC10aGlzLndpZHRoKCkvMil9LGN5OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMueSgpK3RoaXMuaGVpZ2h0KCkvMjp0aGlzLnkodC10aGlzLmhlaWdodCgpLzIpfSxtb3ZlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMueCh0KS55KGUpfSxjZW50ZXI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5jeCh0KS5jeShlKX0sd2lkdGg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcIndpZHRoXCIsdCl9LGhlaWdodDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwiaGVpZ2h0XCIsdCl9LHNpemU6ZnVuY3Rpb24odCxlKXt2YXIgaT11KHRoaXMsdCxlKTtyZXR1cm4gdGhpcy53aWR0aChuZXcgYS5OdW1iZXIoaS53aWR0aCkpLmhlaWdodChuZXcgYS5OdW1iZXIoaS5oZWlnaHQpKX0sY2xvbmU6ZnVuY3Rpb24odCl7dGhpcy53cml0ZURhdGFUb0RvbSgpO3ZhciBlPXgodGhpcy5ub2RlLmNsb25lTm9kZSghMCkpO3JldHVybiB0P3QuYWRkKGUpOnRoaXMuYWZ0ZXIoZSksZX0scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkucmVtb3ZlRWxlbWVudCh0aGlzKSx0aGlzfSxyZXBsYWNlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmFmdGVyKHQpLnJlbW92ZSgpLHR9LGFkZFRvOmZ1bmN0aW9uKHQpe3JldHVybiB0LnB1dCh0aGlzKX0scHV0SW46ZnVuY3Rpb24odCl7cmV0dXJuIHQuYWRkKHRoaXMpfSxpZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwiaWRcIix0KX0sc2hvdzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0eWxlKFwiZGlzcGxheVwiLFwiXCIpfSxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3R5bGUoXCJkaXNwbGF5XCIsXCJub25lXCIpfSx2aXNpYmxlOmZ1bmN0aW9uKCl7cmV0dXJuXCJub25lXCIhPXRoaXMuc3R5bGUoXCJkaXNwbGF5XCIpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmF0dHIoXCJpZFwiKX0sY2xhc3NlczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuYXR0cihcImNsYXNzXCIpO3JldHVybiBudWxsPT10P1tdOnQudHJpbSgpLnNwbGl0KGEucmVnZXguZGVsaW1pdGVyKX0saGFzQ2xhc3M6ZnVuY3Rpb24odCl7cmV0dXJuLTEhPXRoaXMuY2xhc3NlcygpLmluZGV4T2YodCl9LGFkZENsYXNzOmZ1bmN0aW9uKHQpe2lmKCF0aGlzLmhhc0NsYXNzKHQpKXt2YXIgZT10aGlzLmNsYXNzZXMoKTtlLnB1c2godCksdGhpcy5hdHRyKFwiY2xhc3NcIixlLmpvaW4oXCIgXCIpKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaGFzQ2xhc3ModCkmJnRoaXMuYXR0cihcImNsYXNzXCIsdGhpcy5jbGFzc2VzKCkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZSE9dH0pKS5qb2luKFwiIFwiKSksdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaGFzQ2xhc3ModCk/dGhpcy5yZW1vdmVDbGFzcyh0KTp0aGlzLmFkZENsYXNzKHQpfSxyZWZlcmVuY2U6ZnVuY3Rpb24odCl7cmV0dXJuIGEuZ2V0KHRoaXMuYXR0cih0KSl9LHBhcmVudDpmdW5jdGlvbihlKXt2YXIgaT10aGlzO2lmKCFpLm5vZGUucGFyZW50Tm9kZSlyZXR1cm4gbnVsbDtpZihpPWEuYWRvcHQoaS5ub2RlLnBhcmVudE5vZGUpLCFlKXJldHVybiBpO2Zvcig7aSYmaS5ub2RlIGluc3RhbmNlb2YgdC5TVkdFbGVtZW50Oyl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGU/aS5tYXRjaGVzKGUpOmkgaW5zdGFuY2VvZiBlKXJldHVybiBpO2lmKCFpLm5vZGUucGFyZW50Tm9kZXx8XCIjZG9jdW1lbnRcIj09aS5ub2RlLnBhcmVudE5vZGUubm9kZU5hbWUpcmV0dXJuIG51bGw7aT1hLmFkb3B0KGkubm9kZS5wYXJlbnROb2RlKX19LGRvYzpmdW5jdGlvbigpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgYS5Eb2M/dGhpczp0aGlzLnBhcmVudChhLkRvYyl9LHBhcmVudHM6ZnVuY3Rpb24odCl7dmFyIGU9W10saT10aGlzO2Rve2lmKCEoaT1pLnBhcmVudCh0KSl8fCFpLm5vZGUpYnJlYWs7ZS5wdXNoKGkpfXdoaWxlKGkucGFyZW50KTtyZXR1cm4gZX0sbWF0Y2hlczpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCxlKXtyZXR1cm4odC5tYXRjaGVzfHx0Lm1hdGNoZXNTZWxlY3Rvcnx8dC5tc01hdGNoZXNTZWxlY3Rvcnx8dC5tb3pNYXRjaGVzU2VsZWN0b3J8fHQud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHx0Lm9NYXRjaGVzU2VsZWN0b3IpLmNhbGwodCxlKX0odGhpcy5ub2RlLHQpfSxuYXRpdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlfSxzdmc6ZnVuY3Rpb24odCl7dmFyIGk9ZS5jcmVhdGVFbGVtZW50KFwic3ZnXCIpO2lmKCEodCYmdGhpcyBpbnN0YW5jZW9mIGEuUGFyZW50KSlyZXR1cm4gaS5hcHBlbmRDaGlsZCh0PWUuY3JlYXRlRWxlbWVudChcInN2Z1wiKSksdGhpcy53cml0ZURhdGFUb0RvbSgpLHQuYXBwZW5kQ2hpbGQodGhpcy5ub2RlLmNsb25lTm9kZSghMCkpLGkuaW5uZXJIVE1MLnJlcGxhY2UoL148c3ZnPi8sXCJcIikucmVwbGFjZSgvPFxcL3N2Zz4kLyxcIlwiKTtpLmlubmVySFRNTD1cIjxzdmc+XCIrdC5yZXBsYWNlKC9cXG4vLFwiXCIpLnJlcGxhY2UoLzwoW1xcdzotXSspKFtePF0rPylcXC8+L2csXCI8JDEkMj48LyQxPlwiKStcIjwvc3ZnPlwiO2Zvcih2YXIgcz0wLHI9aS5maXJzdENoaWxkLmNoaWxkTm9kZXMubGVuZ3RoO3M8cjtzKyspdGhpcy5ub2RlLmFwcGVuZENoaWxkKGkuZmlyc3RDaGlsZC5maXJzdENoaWxkKTtyZXR1cm4gdGhpc30sd3JpdGVEYXRhVG9Eb206ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5lYWNofHx0aGlzLmxpbmVzKSYmKHRoaXMuZWFjaD90aGlzOnRoaXMubGluZXMoKSkuZWFjaCgoZnVuY3Rpb24oKXt0aGlzLndyaXRlRGF0YVRvRG9tKCl9KSksdGhpcy5ub2RlLnJlbW92ZUF0dHJpYnV0ZShcInN2Z2pzOmRhdGFcIiksT2JqZWN0LmtleXModGhpcy5kb20pLmxlbmd0aCYmdGhpcy5ub2RlLnNldEF0dHJpYnV0ZShcInN2Z2pzOmRhdGFcIixKU09OLnN0cmluZ2lmeSh0aGlzLmRvbSkpLHRoaXN9LHNldERhdGE6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZG9tPXQsdGhpc30saXM6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQgaW5zdGFuY2VvZiBlfSh0aGlzLHQpfX19KSxhLmVhc2luZz17XCItXCI6ZnVuY3Rpb24odCl7cmV0dXJuIHR9LFwiPD5cIjpmdW5jdGlvbih0KXtyZXR1cm4tTWF0aC5jb3ModCpNYXRoLlBJKS8yKy41fSxcIj5cIjpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5zaW4odCpNYXRoLlBJLzIpfSxcIjxcIjpmdW5jdGlvbih0KXtyZXR1cm4gMS1NYXRoLmNvcyh0Kk1hdGguUEkvMil9fSxhLm1vcnBoPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLGkpe3JldHVybiBuZXcgYS5Nb3JwaE9iaihlLGkpLmF0KHQpfX0sYS5TaXR1YXRpb249YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXt0aGlzLmluaXQ9ITEsdGhpcy5yZXZlcnNlZD0hMSx0aGlzLnJldmVyc2luZz0hMSx0aGlzLmR1cmF0aW9uPW5ldyBhLk51bWJlcih0LmR1cmF0aW9uKS52YWx1ZU9mKCksdGhpcy5kZWxheT1uZXcgYS5OdW1iZXIodC5kZWxheSkudmFsdWVPZigpLHRoaXMuc3RhcnQ9K25ldyBEYXRlK3RoaXMuZGVsYXksdGhpcy5maW5pc2g9dGhpcy5zdGFydCt0aGlzLmR1cmF0aW9uLHRoaXMuZWFzZT10LmVhc2UsdGhpcy5sb29wPTAsdGhpcy5sb29wcz0hMSx0aGlzLmFuaW1hdGlvbnM9e30sdGhpcy5hdHRycz17fSx0aGlzLnN0eWxlcz17fSx0aGlzLnRyYW5zZm9ybXM9W10sdGhpcy5vbmNlPXt9fX0pLGEuRlg9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXt0aGlzLl90YXJnZXQ9dCx0aGlzLnNpdHVhdGlvbnM9W10sdGhpcy5hY3RpdmU9ITEsdGhpcy5zaXR1YXRpb249bnVsbCx0aGlzLnBhdXNlZD0hMSx0aGlzLmxhc3RQb3M9MCx0aGlzLnBvcz0wLHRoaXMuYWJzUG9zPTAsdGhpcy5fc3BlZWQ9MX0sZXh0ZW5kOnthbmltYXRlOmZ1bmN0aW9uKHQsZSxzKXtcIm9iamVjdFwiPT09aSh0KSYmKGU9dC5lYXNlLHM9dC5kZWxheSx0PXQuZHVyYXRpb24pO3ZhciByPW5ldyBhLlNpdHVhdGlvbih7ZHVyYXRpb246dHx8MWUzLGRlbGF5OnN8fDAsZWFzZTphLmVhc2luZ1tlfHxcIi1cIl18fGV9KTtyZXR1cm4gdGhpcy5xdWV1ZShyKSx0aGlzfSx0YXJnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQgaW5zdGFuY2VvZiBhLkVsZW1lbnQ/KHRoaXMuX3RhcmdldD10LHRoaXMpOnRoaXMuX3RhcmdldH0sdGltZVRvQWJzUG9zOmZ1bmN0aW9uKHQpe3JldHVybih0LXRoaXMuc2l0dWF0aW9uLnN0YXJ0KS8odGhpcy5zaXR1YXRpb24uZHVyYXRpb24vdGhpcy5fc3BlZWQpfSxhYnNQb3NUb1RpbWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2l0dWF0aW9uLmR1cmF0aW9uL3RoaXMuX3NwZWVkKnQrdGhpcy5zaXR1YXRpb24uc3RhcnR9LHN0YXJ0QW5pbUZyYW1lOmZ1bmN0aW9uKCl7dGhpcy5zdG9wQW5pbUZyYW1lKCksdGhpcy5hbmltYXRpb25GcmFtZT10LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe3RoaXMuc3RlcCgpfS5iaW5kKHRoaXMpKX0sc3RvcEFuaW1GcmFtZTpmdW5jdGlvbigpe3QuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5hbmltYXRpb25GcmFtZSl9LHN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuYWN0aXZlJiZ0aGlzLnNpdHVhdGlvbiYmKHRoaXMuYWN0aXZlPSEwLHRoaXMuc3RhcnRDdXJyZW50KCkpLHRoaXN9LHN0YXJ0Q3VycmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNpdHVhdGlvbi5zdGFydD0rbmV3IERhdGUrdGhpcy5zaXR1YXRpb24uZGVsYXkvdGhpcy5fc3BlZWQsdGhpcy5zaXR1YXRpb24uZmluaXNoPXRoaXMuc2l0dWF0aW9uLnN0YXJ0K3RoaXMuc2l0dWF0aW9uLmR1cmF0aW9uL3RoaXMuX3NwZWVkLHRoaXMuaW5pdEFuaW1hdGlvbnMoKS5zdGVwKCl9LHF1ZXVlOmZ1bmN0aW9uKHQpe3JldHVybihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgYS5TaXR1YXRpb24pJiZ0aGlzLnNpdHVhdGlvbnMucHVzaCh0KSx0aGlzLnNpdHVhdGlvbnx8KHRoaXMuc2l0dWF0aW9uPXRoaXMuc2l0dWF0aW9ucy5zaGlmdCgpKSx0aGlzfSxkZXF1ZXVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RvcCgpLHRoaXMuc2l0dWF0aW9uPXRoaXMuc2l0dWF0aW9ucy5zaGlmdCgpLHRoaXMuc2l0dWF0aW9uJiYodGhpcy5zaXR1YXRpb24gaW5zdGFuY2VvZiBhLlNpdHVhdGlvbj90aGlzLnN0YXJ0KCk6dGhpcy5zaXR1YXRpb24uY2FsbCh0aGlzKSksdGhpc30saW5pdEFuaW1hdGlvbnM6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMuc2l0dWF0aW9uO2lmKGUuaW5pdClyZXR1cm4gdGhpcztmb3IodmFyIGkgaW4gZS5hbmltYXRpb25zKXt0PXRoaXMudGFyZ2V0KClbaV0oKSxBcnJheS5pc0FycmF5KHQpfHwodD1bdF0pLEFycmF5LmlzQXJyYXkoZS5hbmltYXRpb25zW2ldKXx8KGUuYW5pbWF0aW9uc1tpXT1bZS5hbmltYXRpb25zW2ldXSk7Zm9yKHZhciBzPXQubGVuZ3RoO3MtLTspZS5hbmltYXRpb25zW2ldW3NdaW5zdGFuY2VvZiBhLk51bWJlciYmKHRbc109bmV3IGEuTnVtYmVyKHRbc10pKSxlLmFuaW1hdGlvbnNbaV1bc109dFtzXS5tb3JwaChlLmFuaW1hdGlvbnNbaV1bc10pfWZvcih2YXIgaSBpbiBlLmF0dHJzKWUuYXR0cnNbaV09bmV3IGEuTW9ycGhPYmoodGhpcy50YXJnZXQoKS5hdHRyKGkpLGUuYXR0cnNbaV0pO2Zvcih2YXIgaSBpbiBlLnN0eWxlcyllLnN0eWxlc1tpXT1uZXcgYS5Nb3JwaE9iaih0aGlzLnRhcmdldCgpLnN0eWxlKGkpLGUuc3R5bGVzW2ldKTtyZXR1cm4gZS5pbml0aWFsVHJhbnNmb3JtYXRpb249dGhpcy50YXJnZXQoKS5tYXRyaXhpZnkoKSxlLmluaXQ9ITAsdGhpc30sY2xlYXJRdWV1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNpdHVhdGlvbnM9W10sdGhpc30sY2xlYXJDdXJyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l0dWF0aW9uPW51bGwsdGhpc30sc3RvcDpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuYWN0aXZlO3JldHVybiB0aGlzLmFjdGl2ZT0hMSxlJiZ0aGlzLmNsZWFyUXVldWUoKSx0JiZ0aGlzLnNpdHVhdGlvbiYmKCFpJiZ0aGlzLnN0YXJ0Q3VycmVudCgpLHRoaXMuYXRFbmQoKSksdGhpcy5zdG9wQW5pbUZyYW1lKCksdGhpcy5jbGVhckN1cnJlbnQoKX0sYWZ0ZXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5sYXN0KCk7cmV0dXJuIHRoaXMudGFyZ2V0KCkub24oXCJmaW5pc2hlZC5meFwiLChmdW5jdGlvbiBpKGEpe2EuZGV0YWlsLnNpdHVhdGlvbj09ZSYmKHQuY2FsbCh0aGlzLGUpLHRoaXMub2ZmKFwiZmluaXNoZWQuZnhcIixpKSl9KSksdGhpcy5fY2FsbFN0YXJ0KCl9LGR1cmluZzpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmxhc3QoKSxpPWZ1bmN0aW9uKGkpe2kuZGV0YWlsLnNpdHVhdGlvbj09ZSYmdC5jYWxsKHRoaXMsaS5kZXRhaWwucG9zLGEubW9ycGgoaS5kZXRhaWwucG9zKSxpLmRldGFpbC5lYXNlZCxlKX07cmV0dXJuIHRoaXMudGFyZ2V0KCkub2ZmKFwiZHVyaW5nLmZ4XCIsaSkub24oXCJkdXJpbmcuZnhcIixpKSx0aGlzLmFmdGVyKChmdW5jdGlvbigpe3RoaXMub2ZmKFwiZHVyaW5nLmZ4XCIsaSl9KSksdGhpcy5fY2FsbFN0YXJ0KCl9LGFmdGVyQWxsOmZ1bmN0aW9uKHQpe3ZhciBlPWZ1bmN0aW9uIGUoaSl7dC5jYWxsKHRoaXMpLHRoaXMub2ZmKFwiYWxsZmluaXNoZWQuZnhcIixlKX07cmV0dXJuIHRoaXMudGFyZ2V0KCkub2ZmKFwiYWxsZmluaXNoZWQuZnhcIixlKS5vbihcImFsbGZpbmlzaGVkLmZ4XCIsZSksdGhpcy5fY2FsbFN0YXJ0KCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaXR1YXRpb25zLmxlbmd0aD90aGlzLnNpdHVhdGlvbnNbdGhpcy5zaXR1YXRpb25zLmxlbmd0aC0xXTp0aGlzLnNpdHVhdGlvbn0sYWRkOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5sYXN0KClbaXx8XCJhbmltYXRpb25zXCJdW3RdPWUsdGhpcy5fY2FsbFN0YXJ0KCl9LHN0ZXA6ZnVuY3Rpb24odCl7dmFyIGUsaSxhO3R8fCh0aGlzLmFic1Bvcz10aGlzLnRpbWVUb0Fic1BvcygrbmV3IERhdGUpKSwhMSE9PXRoaXMuc2l0dWF0aW9uLmxvb3BzPyhlPU1hdGgubWF4KHRoaXMuYWJzUG9zLDApLGk9TWF0aC5mbG9vcihlKSwhMD09PXRoaXMuc2l0dWF0aW9uLmxvb3BzfHxpPHRoaXMuc2l0dWF0aW9uLmxvb3BzPyh0aGlzLnBvcz1lLWksYT10aGlzLnNpdHVhdGlvbi5sb29wLHRoaXMuc2l0dWF0aW9uLmxvb3A9aSk6KHRoaXMuYWJzUG9zPXRoaXMuc2l0dWF0aW9uLmxvb3BzLHRoaXMucG9zPTEsYT10aGlzLnNpdHVhdGlvbi5sb29wLTEsdGhpcy5zaXR1YXRpb24ubG9vcD10aGlzLnNpdHVhdGlvbi5sb29wcyksdGhpcy5zaXR1YXRpb24ucmV2ZXJzaW5nJiYodGhpcy5zaXR1YXRpb24ucmV2ZXJzZWQ9dGhpcy5zaXR1YXRpb24ucmV2ZXJzZWQhPUJvb2xlYW4oKHRoaXMuc2l0dWF0aW9uLmxvb3AtYSklMikpKToodGhpcy5hYnNQb3M9TWF0aC5taW4odGhpcy5hYnNQb3MsMSksdGhpcy5wb3M9dGhpcy5hYnNQb3MpLHRoaXMucG9zPDAmJih0aGlzLnBvcz0wKSx0aGlzLnNpdHVhdGlvbi5yZXZlcnNlZCYmKHRoaXMucG9zPTEtdGhpcy5wb3MpO3ZhciBzPXRoaXMuc2l0dWF0aW9uLmVhc2UodGhpcy5wb3MpO2Zvcih2YXIgciBpbiB0aGlzLnNpdHVhdGlvbi5vbmNlKXI+dGhpcy5sYXN0UG9zJiZyPD1zJiYodGhpcy5zaXR1YXRpb24ub25jZVtyXS5jYWxsKHRoaXMudGFyZ2V0KCksdGhpcy5wb3MscyksZGVsZXRlIHRoaXMuc2l0dWF0aW9uLm9uY2Vbcl0pO3JldHVybiB0aGlzLmFjdGl2ZSYmdGhpcy50YXJnZXQoKS5maXJlKFwiZHVyaW5nXCIse3Bvczp0aGlzLnBvcyxlYXNlZDpzLGZ4OnRoaXMsc2l0dWF0aW9uOnRoaXMuc2l0dWF0aW9ufSksdGhpcy5zaXR1YXRpb24/KHRoaXMuZWFjaEF0KCksMT09dGhpcy5wb3MmJiF0aGlzLnNpdHVhdGlvbi5yZXZlcnNlZHx8dGhpcy5zaXR1YXRpb24ucmV2ZXJzZWQmJjA9PXRoaXMucG9zPyh0aGlzLnN0b3BBbmltRnJhbWUoKSx0aGlzLnRhcmdldCgpLmZpcmUoXCJmaW5pc2hlZFwiLHtmeDp0aGlzLHNpdHVhdGlvbjp0aGlzLnNpdHVhdGlvbn0pLHRoaXMuc2l0dWF0aW9ucy5sZW5ndGh8fCh0aGlzLnRhcmdldCgpLmZpcmUoXCJhbGxmaW5pc2hlZFwiKSx0aGlzLnNpdHVhdGlvbnMubGVuZ3RofHwodGhpcy50YXJnZXQoKS5vZmYoXCIuZnhcIiksdGhpcy5hY3RpdmU9ITEpKSx0aGlzLmFjdGl2ZT90aGlzLmRlcXVldWUoKTp0aGlzLmNsZWFyQ3VycmVudCgpKTohdGhpcy5wYXVzZWQmJnRoaXMuYWN0aXZlJiZ0aGlzLnN0YXJ0QW5pbUZyYW1lKCksdGhpcy5sYXN0UG9zPXMsdGhpcyk6dGhpc30sZWFjaEF0OmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLGk9dGhpcy50YXJnZXQoKSxzPXRoaXMuc2l0dWF0aW9uO2Zvcih2YXIgciBpbiBzLmFuaW1hdGlvbnMpdD1bXS5jb25jYXQocy5hbmltYXRpb25zW3JdKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVyblwic3RyaW5nXCIhPXR5cGVvZiB0JiZ0LmF0P3QuYXQocy5lYXNlKGUucG9zKSxlLnBvcyk6dH0pKSxpW3JdLmFwcGx5KGksdCk7Zm9yKHZhciByIGluIHMuYXR0cnMpdD1bcl0uY29uY2F0KHMuYXR0cnNbcl0pLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuXCJzdHJpbmdcIiE9dHlwZW9mIHQmJnQuYXQ/dC5hdChzLmVhc2UoZS5wb3MpLGUucG9zKTp0fSkpLGkuYXR0ci5hcHBseShpLHQpO2Zvcih2YXIgciBpbiBzLnN0eWxlcyl0PVtyXS5jb25jYXQocy5zdHlsZXNbcl0pLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuXCJzdHJpbmdcIiE9dHlwZW9mIHQmJnQuYXQ/dC5hdChzLmVhc2UoZS5wb3MpLGUucG9zKTp0fSkpLGkuc3R5bGUuYXBwbHkoaSx0KTtpZihzLnRyYW5zZm9ybXMubGVuZ3RoKXt0PXMuaW5pdGlhbFRyYW5zZm9ybWF0aW9uLHI9MDtmb3IodmFyIG89cy50cmFuc2Zvcm1zLmxlbmd0aDtyPG87cisrKXt2YXIgbj1zLnRyYW5zZm9ybXNbcl07biBpbnN0YW5jZW9mIGEuTWF0cml4P3Q9bi5yZWxhdGl2ZT90Lm11bHRpcGx5KChuZXcgYS5NYXRyaXgpLm1vcnBoKG4pLmF0KHMuZWFzZSh0aGlzLnBvcykpKTp0Lm1vcnBoKG4pLmF0KHMuZWFzZSh0aGlzLnBvcykpOihuLnJlbGF0aXZlfHxuLnVuZG8odC5leHRyYWN0KCkpLHQ9dC5tdWx0aXBseShuLmF0KHMuZWFzZSh0aGlzLnBvcykpKSl9aS5tYXRyaXgodCl9cmV0dXJuIHRoaXN9LG9uY2U6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMubGFzdCgpO3JldHVybiBpfHwodD1hLmVhc2UodCkpLGEub25jZVt0XT1lLHRoaXN9LF9jYWxsU3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe3RoaXMuc3RhcnQoKX0uYmluZCh0aGlzKSwwKSx0aGlzfX0scGFyZW50OmEuRWxlbWVudCxjb25zdHJ1Y3Q6e2FuaW1hdGU6ZnVuY3Rpb24odCxlLGkpe3JldHVybih0aGlzLmZ4fHwodGhpcy5meD1uZXcgYS5GWCh0aGlzKSkpLmFuaW1hdGUodCxlLGkpfSxkZWxheTpmdW5jdGlvbih0KXtyZXR1cm4odGhpcy5meHx8KHRoaXMuZng9bmV3IGEuRlgodGhpcykpKS5kZWxheSh0KX0sc3RvcDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmZ4JiZ0aGlzLmZ4LnN0b3AodCxlKSx0aGlzfSxmaW5pc2g6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5meCYmdGhpcy5meC5maW5pc2goKSx0aGlzfX19KSxhLk1vcnBoT2JqPWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gYS5Db2xvci5pc0NvbG9yKGUpP25ldyBhLkNvbG9yKHQpLm1vcnBoKGUpOmEucmVnZXguZGVsaW1pdGVyLnRlc3QodCk/YS5yZWdleC5wYXRoTGV0dGVycy50ZXN0KHQpP25ldyBhLlBhdGhBcnJheSh0KS5tb3JwaChlKTpuZXcgYS5BcnJheSh0KS5tb3JwaChlKTphLnJlZ2V4Lm51bWJlckFuZFVuaXQudGVzdChlKT9uZXcgYS5OdW1iZXIodCkubW9ycGgoZSk6KHRoaXMudmFsdWU9dCx2b2lkKHRoaXMuZGVzdGluYXRpb249ZSkpfSxleHRlbmQ6e2F0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU8MT90aGlzLnZhbHVlOnRoaXMuZGVzdGluYXRpb259LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX19fSksYS5leHRlbmQoYS5GWCx7YXR0cjpmdW5jdGlvbih0LGUsYSl7aWYoXCJvYmplY3RcIj09PWkodCkpZm9yKHZhciBzIGluIHQpdGhpcy5hdHRyKHMsdFtzXSk7ZWxzZSB0aGlzLmFkZCh0LGUsXCJhdHRyc1wiKTtyZXR1cm4gdGhpc30scGxvdDpmdW5jdGlvbih0LGUsaSxhKXtyZXR1cm4gND09YXJndW1lbnRzLmxlbmd0aD90aGlzLnBsb3QoW3QsZSxpLGFdKTp0aGlzLmFkZChcInBsb3RcIixuZXcodGhpcy50YXJnZXQoKS5tb3JwaEFycmF5KSh0KSl9fSksYS5Cb3g9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0LGUscyxyKXtpZighKFwib2JqZWN0XCIhPT1pKHQpfHx0IGluc3RhbmNlb2YgYS5FbGVtZW50KSlyZXR1cm4gYS5Cb3guY2FsbCh0aGlzLG51bGwhPXQubGVmdD90LmxlZnQ6dC54LG51bGwhPXQudG9wP3QudG9wOnQueSx0LndpZHRoLHQuaGVpZ2h0KTt2YXIgbzs0PT1hcmd1bWVudHMubGVuZ3RoJiYodGhpcy54PXQsdGhpcy55PWUsdGhpcy53aWR0aD1zLHRoaXMuaGVpZ2h0PXIpLG51bGw9PShvPXRoaXMpLngmJihvLng9MCxvLnk9MCxvLndpZHRoPTAsby5oZWlnaHQ9MCksby53PW8ud2lkdGgsby5oPW8uaGVpZ2h0LG8ueDI9by54K28ud2lkdGgsby55Mj1vLnkrby5oZWlnaHQsby5jeD1vLngrby53aWR0aC8yLG8uY3k9by55K28uaGVpZ2h0LzJ9fSksYS5CQm94PWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7aWYoYS5Cb3guYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpLHQgaW5zdGFuY2VvZiBhLkVsZW1lbnQpe3ZhciBpO3RyeXtpZighZS5kb2N1bWVudEVsZW1lbnQuY29udGFpbnMpe2Zvcih2YXIgcz10Lm5vZGU7cy5wYXJlbnROb2RlOylzPXMucGFyZW50Tm9kZTtpZihzIT1lKXRocm93IG5ldyBFcnJvcihcIkVsZW1lbnQgbm90IGluIHRoZSBkb21cIil9aT10Lm5vZGUuZ2V0QkJveCgpfWNhdGNoKGUpe2lmKHQgaW5zdGFuY2VvZiBhLlNoYXBlKXthLnBhcnNlci5kcmF3fHxhLnByZXBhcmUoKTt2YXIgcj10LmNsb25lKGEucGFyc2VyLmRyYXcuaW5zdGFuY2UpLnNob3coKTtyJiZyLm5vZGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHIubm9kZS5nZXRCQm94JiYoaT1yLm5vZGUuZ2V0QkJveCgpKSxyJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiByLnJlbW92ZSYmci5yZW1vdmUoKX1lbHNlIGk9e3g6dC5ub2RlLmNsaWVudExlZnQseTp0Lm5vZGUuY2xpZW50VG9wLHdpZHRoOnQubm9kZS5jbGllbnRXaWR0aCxoZWlnaHQ6dC5ub2RlLmNsaWVudEhlaWdodH19YS5Cb3guY2FsbCh0aGlzLGkpfX0saW5oZXJpdDphLkJveCxwYXJlbnQ6YS5FbGVtZW50LGNvbnN0cnVjdDp7YmJveDpmdW5jdGlvbigpe3JldHVybiBuZXcgYS5CQm94KHRoaXMpfX19KSxhLkJCb3gucHJvdG90eXBlLmNvbnN0cnVjdG9yPWEuQkJveCxhLk1hdHJpeD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3ZhciBlPWYoWzEsMCwwLDEsMCwwXSk7dD1udWxsPT09dD9lOnQgaW5zdGFuY2VvZiBhLkVsZW1lbnQ/dC5tYXRyaXhpZnkoKTpcInN0cmluZ1wiPT10eXBlb2YgdD9mKHQuc3BsaXQoYS5yZWdleC5kZWxpbWl0ZXIpLm1hcChwYXJzZUZsb2F0KSk6Nj09YXJndW1lbnRzLmxlbmd0aD9mKFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk6QXJyYXkuaXNBcnJheSh0KT9mKHQpOnQmJlwib2JqZWN0XCI9PT1pKHQpP3Q6ZTtmb3IodmFyIHM9di5sZW5ndGgtMTtzPj0wOy0tcyl0aGlzW3Zbc11dPW51bGwhPXRbdltzXV0/dFt2W3NdXTplW3Zbc11dfSxleHRlbmQ6e2V4dHJhY3Q6ZnVuY3Rpb24oKXt2YXIgdD1wKHRoaXMsMCwxKTtwKHRoaXMsMSwwKTt2YXIgZT0xODAvTWF0aC5QSSpNYXRoLmF0YW4yKHQueSx0LngpLTkwO3JldHVybnt4OnRoaXMuZSx5OnRoaXMuZix0cmFuc2Zvcm1lZFg6KHRoaXMuZSpNYXRoLmNvcyhlKk1hdGguUEkvMTgwKSt0aGlzLmYqTWF0aC5zaW4oZSpNYXRoLlBJLzE4MCkpL01hdGguc3FydCh0aGlzLmEqdGhpcy5hK3RoaXMuYip0aGlzLmIpLHRyYW5zZm9ybWVkWToodGhpcy5mKk1hdGguY29zKGUqTWF0aC5QSS8xODApK3RoaXMuZSpNYXRoLnNpbigtZSpNYXRoLlBJLzE4MCkpL01hdGguc3FydCh0aGlzLmMqdGhpcy5jK3RoaXMuZCp0aGlzLmQpLHJvdGF0aW9uOmUsYTp0aGlzLmEsYjp0aGlzLmIsYzp0aGlzLmMsZDp0aGlzLmQsZTp0aGlzLmUsZjp0aGlzLmYsbWF0cml4Om5ldyBhLk1hdHJpeCh0aGlzKX19LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBhLk1hdHJpeCh0aGlzKX0sbW9ycGg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb249bmV3IGEuTWF0cml4KHQpLHRoaXN9LG11bHRpcGx5OmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgYS5NYXRyaXgodGhpcy5uYXRpdmUoKS5tdWx0aXBseShmdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGEuTWF0cml4fHwodD1uZXcgYS5NYXRyaXgodCkpLHR9KHQpLm5hdGl2ZSgpKSl9LGludmVyc2U6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGEuTWF0cml4KHRoaXMubmF0aXZlKCkuaW52ZXJzZSgpKX0sdHJhbnNsYXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBhLk1hdHJpeCh0aGlzLm5hdGl2ZSgpLnRyYW5zbGF0ZSh0fHwwLGV8fDApKX0sbmF0aXZlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PWEucGFyc2VyLm5hdGl2ZS5jcmVhdGVTVkdNYXRyaXgoKSxlPXYubGVuZ3RoLTE7ZT49MDtlLS0pdFt2W2VdXT10aGlzW3ZbZV1dO3JldHVybiB0fSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVyblwibWF0cml4KFwiK2IodGhpcy5hKStcIixcIitiKHRoaXMuYikrXCIsXCIrYih0aGlzLmMpK1wiLFwiK2IodGhpcy5kKStcIixcIitiKHRoaXMuZSkrXCIsXCIrYih0aGlzLmYpK1wiKVwifX0scGFyZW50OmEuRWxlbWVudCxjb25zdHJ1Y3Q6e2N0bTpmdW5jdGlvbigpe3JldHVybiBuZXcgYS5NYXRyaXgodGhpcy5ub2RlLmdldENUTSgpKX0sc2NyZWVuQ1RNOmZ1bmN0aW9uKCl7aWYodGhpcyBpbnN0YW5jZW9mIGEuTmVzdGVkKXt2YXIgdD10aGlzLnJlY3QoMSwxKSxlPXQubm9kZS5nZXRTY3JlZW5DVE0oKTtyZXR1cm4gdC5yZW1vdmUoKSxuZXcgYS5NYXRyaXgoZSl9cmV0dXJuIG5ldyBhLk1hdHJpeCh0aGlzLm5vZGUuZ2V0U2NyZWVuQ1RNKCkpfX19KSxhLlBvaW50PWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCxlKXt2YXIgYTthPUFycmF5LmlzQXJyYXkodCk/e3g6dFswXSx5OnRbMV19Olwib2JqZWN0XCI9PT1pKHQpP3t4OnQueCx5OnQueX06bnVsbCE9dD97eDp0LHk6bnVsbCE9ZT9lOnR9Ont4OjAseTowfSx0aGlzLng9YS54LHRoaXMueT1hLnl9LGV4dGVuZDp7Y2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGEuUG9pbnQodGhpcyl9LG1vcnBoOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb249bmV3IGEuUG9pbnQodCxlKSx0aGlzfX19KSxhLmV4dGVuZChhLkVsZW1lbnQse3BvaW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBhLlBvaW50KHQsZSkudHJhbnNmb3JtKHRoaXMuc2NyZWVuQ1RNKCkuaW52ZXJzZSgpKX19KSxhLmV4dGVuZChhLkVsZW1lbnQse2F0dHI6ZnVuY3Rpb24odCxlLHMpe2lmKG51bGw9PXQpe2Zvcih0PXt9LHM9KGU9dGhpcy5ub2RlLmF0dHJpYnV0ZXMpLmxlbmd0aC0xO3M+PTA7cy0tKXRbZVtzXS5ub2RlTmFtZV09YS5yZWdleC5pc051bWJlci50ZXN0KGVbc10ubm9kZVZhbHVlKT9wYXJzZUZsb2F0KGVbc10ubm9kZVZhbHVlKTplW3NdLm5vZGVWYWx1ZTtyZXR1cm4gdH1pZihcIm9iamVjdFwiPT09aSh0KSlmb3IodmFyIHIgaW4gdCl0aGlzLmF0dHIocix0W3JdKTtlbHNlIGlmKG51bGw9PT1lKXRoaXMubm9kZS5yZW1vdmVBdHRyaWJ1dGUodCk7ZWxzZXtpZihudWxsPT1lKXJldHVybiBudWxsPT0oZT10aGlzLm5vZGUuZ2V0QXR0cmlidXRlKHQpKT9hLmRlZmF1bHRzLmF0dHJzW3RdOmEucmVnZXguaXNOdW1iZXIudGVzdChlKT9wYXJzZUZsb2F0KGUpOmU7XCJzdHJva2Utd2lkdGhcIj09dD90aGlzLmF0dHIoXCJzdHJva2VcIixwYXJzZUZsb2F0KGUpPjA/dGhpcy5fc3Ryb2tlOm51bGwpOlwic3Ryb2tlXCI9PXQmJih0aGlzLl9zdHJva2U9ZSksXCJmaWxsXCIhPXQmJlwic3Ryb2tlXCIhPXR8fChhLnJlZ2V4LmlzSW1hZ2UudGVzdChlKSYmKGU9dGhpcy5kb2MoKS5kZWZzKCkuaW1hZ2UoZSwwLDApKSxlIGluc3RhbmNlb2YgYS5JbWFnZSYmKGU9dGhpcy5kb2MoKS5kZWZzKCkucGF0dGVybigwLDAsKGZ1bmN0aW9uKCl7dGhpcy5hZGQoZSl9KSkpKSxcIm51bWJlclwiPT10eXBlb2YgZT9lPW5ldyBhLk51bWJlcihlKTphLkNvbG9yLmlzQ29sb3IoZSk/ZT1uZXcgYS5Db2xvcihlKTpBcnJheS5pc0FycmF5KGUpJiYoZT1uZXcgYS5BcnJheShlKSksXCJsZWFkaW5nXCI9PXQ/dGhpcy5sZWFkaW5nJiZ0aGlzLmxlYWRpbmcoZSk6XCJzdHJpbmdcIj09dHlwZW9mIHM/dGhpcy5ub2RlLnNldEF0dHJpYnV0ZU5TKHMsdCxlLnRvU3RyaW5nKCkpOnRoaXMubm9kZS5zZXRBdHRyaWJ1dGUodCxlLnRvU3RyaW5nKCkpLCF0aGlzLnJlYnVpbGR8fFwiZm9udC1zaXplXCIhPXQmJlwieFwiIT10fHx0aGlzLnJlYnVpbGQodCxlKX1yZXR1cm4gdGhpc319KSxhLmV4dGVuZChhLkVsZW1lbnQse3RyYW5zZm9ybTpmdW5jdGlvbih0LGUpe3ZhciBzO3JldHVyblwib2JqZWN0XCIhPT1pKHQpPyhzPW5ldyBhLk1hdHJpeCh0aGlzKS5leHRyYWN0KCksXCJzdHJpbmdcIj09dHlwZW9mIHQ/c1t0XTpzKToocz1uZXcgYS5NYXRyaXgodGhpcyksZT0hIWV8fCEhdC5yZWxhdGl2ZSxudWxsIT10LmEmJihzPWU/cy5tdWx0aXBseShuZXcgYS5NYXRyaXgodCkpOm5ldyBhLk1hdHJpeCh0KSksdGhpcy5hdHRyKFwidHJhbnNmb3JtXCIscykpfX0pLGEuZXh0ZW5kKGEuRWxlbWVudCx7dW50cmFuc2Zvcm06ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdHRyKFwidHJhbnNmb3JtXCIsbnVsbCl9LG1hdHJpeGlmeTpmdW5jdGlvbigpe3JldHVybih0aGlzLmF0dHIoXCJ0cmFuc2Zvcm1cIil8fFwiXCIpLnNwbGl0KGEucmVnZXgudHJhbnNmb3Jtcykuc2xpY2UoMCwtMSkubWFwKChmdW5jdGlvbih0KXt2YXIgZT10LnRyaW0oKS5zcGxpdChcIihcIik7cmV0dXJuW2VbMF0sZVsxXS5zcGxpdChhLnJlZ2V4LmRlbGltaXRlcikubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VGbG9hdCh0KX0pKV19KSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVyblwibWF0cml4XCI9PWVbMF0/dC5tdWx0aXBseShmKGVbMV0pKTp0W2VbMF1dLmFwcGx5KHQsZVsxXSl9KSxuZXcgYS5NYXRyaXgpfSx0b1BhcmVudDpmdW5jdGlvbih0KXtpZih0aGlzPT10KXJldHVybiB0aGlzO3ZhciBlPXRoaXMuc2NyZWVuQ1RNKCksaT10LnNjcmVlbkNUTSgpLmludmVyc2UoKTtyZXR1cm4gdGhpcy5hZGRUbyh0KS51bnRyYW5zZm9ybSgpLnRyYW5zZm9ybShpLm11bHRpcGx5KGUpKSx0aGlzfSx0b0RvYzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvUGFyZW50KHRoaXMuZG9jKCkpfX0pLGEuVHJhbnNmb3JtYXRpb249YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0LGUpe2lmKGFyZ3VtZW50cy5sZW5ndGg+MSYmXCJib29sZWFuXCIhPXR5cGVvZiBlKXJldHVybiB0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBhPTAscz10aGlzLmFyZ3VtZW50cy5sZW5ndGg7YTxzOysrYSl0aGlzW3RoaXMuYXJndW1lbnRzW2FdXT10W2FdO2Vsc2UgaWYodCYmXCJvYmplY3RcIj09PWkodCkpZm9yKGE9MCxzPXRoaXMuYXJndW1lbnRzLmxlbmd0aDthPHM7KythKXRoaXNbdGhpcy5hcmd1bWVudHNbYV1dPXRbdGhpcy5hcmd1bWVudHNbYV1dO3RoaXMuaW52ZXJzZWQ9ITEsITA9PT1lJiYodGhpcy5pbnZlcnNlZD0hMCl9fSksYS5UcmFuc2xhdGU9YS5pbnZlbnQoe3BhcmVudDphLk1hdHJpeCxpbmhlcml0OmEuVHJhbnNmb3JtYXRpb24sY3JlYXRlOmZ1bmN0aW9uKHQsZSl7dGhpcy5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSl9LGV4dGVuZDp7YXJndW1lbnRzOltcInRyYW5zZm9ybWVkWFwiLFwidHJhbnNmb3JtZWRZXCJdLG1ldGhvZDpcInRyYW5zbGF0ZVwifX0pLGEuZXh0ZW5kKGEuRWxlbWVudCx7c3R5bGU6ZnVuY3Rpb24odCxlKXtpZigwPT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzLm5vZGUuc3R5bGUuY3NzVGV4dHx8XCJcIjtpZihhcmd1bWVudHMubGVuZ3RoPDIpaWYoXCJvYmplY3RcIj09PWkodCkpZm9yKHZhciBzIGluIHQpdGhpcy5zdHlsZShzLHRbc10pO2Vsc2V7aWYoIWEucmVnZXguaXNDc3MudGVzdCh0KSlyZXR1cm4gdGhpcy5ub2RlLnN0eWxlW2ModCldO2Zvcih0PXQuc3BsaXQoL1xccyo7XFxzKi8pLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuISF0fSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuc3BsaXQoL1xccyo6XFxzKi8pfSkpO2U9dC5wb3AoKTspdGhpcy5zdHlsZShlWzBdLGVbMV0pfWVsc2UgdGhpcy5ub2RlLnN0eWxlW2ModCldPW51bGw9PT1lfHxhLnJlZ2V4LmlzQmxhbmsudGVzdChlKT9cIlwiOmU7cmV0dXJuIHRoaXN9fSksYS5QYXJlbnQ9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyx0KX0saW5oZXJpdDphLkVsZW1lbnQsZXh0ZW5kOntjaGlsZHJlbjpmdW5jdGlvbigpe3JldHVybiBhLnV0aWxzLm1hcChhLnV0aWxzLmZpbHRlclNWR0VsZW1lbnRzKHRoaXMubm9kZS5jaGlsZE5vZGVzKSwoZnVuY3Rpb24odCl7cmV0dXJuIGEuYWRvcHQodCl9KSl9LGFkZDpmdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT1lP3RoaXMubm9kZS5hcHBlbmRDaGlsZCh0Lm5vZGUpOnQubm9kZSE9dGhpcy5ub2RlLmNoaWxkTm9kZXNbZV0mJnRoaXMubm9kZS5pbnNlcnRCZWZvcmUodC5ub2RlLHRoaXMubm9kZS5jaGlsZE5vZGVzW2VdKSx0aGlzfSxwdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hZGQodCxlKSx0fSxoYXM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW5kZXgodCk+PTB9LGluZGV4OmZ1bmN0aW9uKHQpe3JldHVybltdLnNsaWNlLmNhbGwodGhpcy5ub2RlLmNoaWxkTm9kZXMpLmluZGV4T2YodC5ub2RlKX0sZ2V0OmZ1bmN0aW9uKHQpe3JldHVybiBhLmFkb3B0KHRoaXMubm9kZS5jaGlsZE5vZGVzW3RdKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQodGhpcy5ub2RlLmNoaWxkTm9kZXMubGVuZ3RoLTEpfSxlYWNoOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPXRoaXMuY2hpbGRyZW4oKSxzPTAscj1pLmxlbmd0aDtzPHI7cysrKWlbc11pbnN0YW5jZW9mIGEuRWxlbWVudCYmdC5hcHBseShpW3NdLFtzLGldKSxlJiZpW3NdaW5zdGFuY2VvZiBhLkNvbnRhaW5lciYmaVtzXS5lYWNoKHQsZSk7cmV0dXJuIHRoaXN9LHJlbW92ZUVsZW1lbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubm9kZS5yZW1vdmVDaGlsZCh0Lm5vZGUpLHRoaXN9LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKDt0aGlzLm5vZGUuaGFzQ2hpbGROb2RlcygpOyl0aGlzLm5vZGUucmVtb3ZlQ2hpbGQodGhpcy5ub2RlLmxhc3RDaGlsZCk7cmV0dXJuIGRlbGV0ZSB0aGlzLl9kZWZzLHRoaXN9LGRlZnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb2MoKS5kZWZzKCl9fX0pLGEuZXh0ZW5kKGEuUGFyZW50LHt1bmdyb3VwOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIDA9PT1lfHx0aGlzIGluc3RhbmNlb2YgYS5EZWZzfHx0aGlzLm5vZGU9PWEucGFyc2VyLmRyYXd8fCh0PXR8fCh0aGlzIGluc3RhbmNlb2YgYS5Eb2M/dGhpczp0aGlzLnBhcmVudChhLlBhcmVudCkpLGU9ZXx8MS8wLHRoaXMuZWFjaCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGEuRGVmcz90aGlzOnRoaXMgaW5zdGFuY2VvZiBhLlBhcmVudD90aGlzLnVuZ3JvdXAodCxlLTEpOnRoaXMudG9QYXJlbnQodCl9KSksdGhpcy5ub2RlLmZpcnN0Q2hpbGR8fHRoaXMucmVtb3ZlKCkpLHRoaXN9LGZsYXR0ZW46ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy51bmdyb3VwKHQsZSl9fSksYS5Db250YWluZXI9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyx0KX0saW5oZXJpdDphLlBhcmVudH0pLGEuVmlld0JveD1hLmludmVudCh7cGFyZW50OmEuQ29udGFpbmVyLGNvbnN0cnVjdDp7fX0pLFtcImNsaWNrXCIsXCJkYmxjbGlja1wiLFwibW91c2Vkb3duXCIsXCJtb3VzZXVwXCIsXCJtb3VzZW92ZXJcIixcIm1vdXNlb3V0XCIsXCJtb3VzZW1vdmVcIixcInRvdWNoc3RhcnRcIixcInRvdWNobW92ZVwiLFwidG91Y2hsZWF2ZVwiLFwidG91Y2hlbmRcIixcInRvdWNoY2FuY2VsXCJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe2EuRWxlbWVudC5wcm90b3R5cGVbdF09ZnVuY3Rpb24oZSl7cmV0dXJuIGEub24odGhpcy5ub2RlLHQsZSksdGhpc319KSksYS5saXN0ZW5lcnM9W10sYS5oYW5kbGVyTWFwPVtdLGEubGlzdGVuZXJJZD0wLGEub249ZnVuY3Rpb24odCxlLGkscyxyKXt2YXIgbz1pLmJpbmQoc3x8dC5pbnN0YW5jZXx8dCksbj0oYS5oYW5kbGVyTWFwLmluZGV4T2YodCkrMXx8YS5oYW5kbGVyTWFwLnB1c2godCkpLTEsbD1lLnNwbGl0KFwiLlwiKVswXSxoPWUuc3BsaXQoXCIuXCIpWzFdfHxcIipcIjthLmxpc3RlbmVyc1tuXT1hLmxpc3RlbmVyc1tuXXx8e30sYS5saXN0ZW5lcnNbbl1bbF09YS5saXN0ZW5lcnNbbl1bbF18fHt9LGEubGlzdGVuZXJzW25dW2xdW2hdPWEubGlzdGVuZXJzW25dW2xdW2hdfHx7fSxpLl9zdmdqc0xpc3RlbmVySWR8fChpLl9zdmdqc0xpc3RlbmVySWQ9KythLmxpc3RlbmVySWQpLGEubGlzdGVuZXJzW25dW2xdW2hdW2kuX3N2Z2pzTGlzdGVuZXJJZF09byx0LmFkZEV2ZW50TGlzdGVuZXIobCxvLHJ8fHtwYXNzaXZlOiEwfSl9LGEub2ZmPWZ1bmN0aW9uKHQsZSxpKXt2YXIgcz1hLmhhbmRsZXJNYXAuaW5kZXhPZih0KSxyPWUmJmUuc3BsaXQoXCIuXCIpWzBdLG89ZSYmZS5zcGxpdChcIi5cIilbMV0sbj1cIlwiO2lmKC0xIT1zKWlmKGkpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGkmJihpPWkuX3N2Z2pzTGlzdGVuZXJJZCksIWkpcmV0dXJuO2EubGlzdGVuZXJzW3NdW3JdJiZhLmxpc3RlbmVyc1tzXVtyXVtvfHxcIipcIl0mJih0LnJlbW92ZUV2ZW50TGlzdGVuZXIocixhLmxpc3RlbmVyc1tzXVtyXVtvfHxcIipcIl1baV0sITEpLGRlbGV0ZSBhLmxpc3RlbmVyc1tzXVtyXVtvfHxcIipcIl1baV0pfWVsc2UgaWYobyYmcil7aWYoYS5saXN0ZW5lcnNbc11bcl0mJmEubGlzdGVuZXJzW3NdW3JdW29dKXtmb3IodmFyIGwgaW4gYS5saXN0ZW5lcnNbc11bcl1bb10pYS5vZmYodCxbcixvXS5qb2luKFwiLlwiKSxsKTtkZWxldGUgYS5saXN0ZW5lcnNbc11bcl1bb119fWVsc2UgaWYobylmb3IodmFyIGggaW4gYS5saXN0ZW5lcnNbc10pZm9yKHZhciBuIGluIGEubGlzdGVuZXJzW3NdW2hdKW89PT1uJiZhLm9mZih0LFtoLG9dLmpvaW4oXCIuXCIpKTtlbHNlIGlmKHIpe2lmKGEubGlzdGVuZXJzW3NdW3JdKXtmb3IodmFyIG4gaW4gYS5saXN0ZW5lcnNbc11bcl0pYS5vZmYodCxbcixuXS5qb2luKFwiLlwiKSk7ZGVsZXRlIGEubGlzdGVuZXJzW3NdW3JdfX1lbHNle2Zvcih2YXIgaCBpbiBhLmxpc3RlbmVyc1tzXSlhLm9mZih0LGgpO2RlbGV0ZSBhLmxpc3RlbmVyc1tzXSxkZWxldGUgYS5oYW5kbGVyTWFwW3NdfX0sYS5leHRlbmQoYS5FbGVtZW50LHtvbjpmdW5jdGlvbih0LGUsaSxzKXtyZXR1cm4gYS5vbih0aGlzLm5vZGUsdCxlLGkscyksdGhpc30sb2ZmOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGEub2ZmKHRoaXMubm9kZSx0LGUpLHRoaXN9LGZpcmU6ZnVuY3Rpb24oZSxpKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHQuRXZlbnQ/dGhpcy5ub2RlLmRpc3BhdGNoRXZlbnQoZSk6dGhpcy5ub2RlLmRpc3BhdGNoRXZlbnQoZT1uZXcgYS5DdXN0b21FdmVudChlLHtkZXRhaWw6aSxjYW5jZWxhYmxlOiEwfSkpLHRoaXMuX2V2ZW50PWUsdGhpc30sZXZlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZXZlbnR9fSksYS5EZWZzPWEuaW52ZW50KHtjcmVhdGU6XCJkZWZzXCIsaW5oZXJpdDphLkNvbnRhaW5lcn0pLGEuRz1hLmludmVudCh7Y3JlYXRlOlwiZ1wiLGluaGVyaXQ6YS5Db250YWluZXIsZXh0ZW5kOnt4OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMudHJhbnNmb3JtKFwieFwiKTp0aGlzLnRyYW5zZm9ybSh7eDp0LXRoaXMueCgpfSwhMCl9fSxjb25zdHJ1Y3Q6e2dyb3VwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLkcpfX19KSxhLkRvYz1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3QmJihcInN2Z1wiPT0odD1cInN0cmluZ1wiPT10eXBlb2YgdD9lLmdldEVsZW1lbnRCeUlkKHQpOnQpLm5vZGVOYW1lP3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLHQpOih0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxhLmNyZWF0ZShcInN2Z1wiKSksdC5hcHBlbmRDaGlsZCh0aGlzLm5vZGUpLHRoaXMuc2l6ZShcIjEwMCVcIixcIjEwMCVcIikpLHRoaXMubmFtZXNwYWNlKCkuZGVmcygpKX0saW5oZXJpdDphLkNvbnRhaW5lcixleHRlbmQ6e25hbWVzcGFjZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmF0dHIoe3htbG5zOmEubnMsdmVyc2lvbjpcIjEuMVwifSkuYXR0cihcInhtbG5zOnhsaW5rXCIsYS54bGluayxhLnhtbG5zKS5hdHRyKFwieG1sbnM6c3ZnanNcIixhLnN2Z2pzLGEueG1sbnMpfSxkZWZzOmZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuIHRoaXMuX2RlZnN8fCgodD10aGlzLm5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJkZWZzXCIpWzBdKT90aGlzLl9kZWZzPWEuYWRvcHQodCk6dGhpcy5fZGVmcz1uZXcgYS5EZWZzLHRoaXMubm9kZS5hcHBlbmRDaGlsZCh0aGlzLl9kZWZzLm5vZGUpKSx0aGlzLl9kZWZzfSxwYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLnBhcmVudE5vZGUmJlwiI2RvY3VtZW50XCIhPXRoaXMubm9kZS5wYXJlbnROb2RlLm5vZGVOYW1lP3RoaXMubm9kZS5wYXJlbnROb2RlOm51bGx9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnJlbW92ZUNoaWxkKHRoaXMubm9kZSksdGhpc30sY2xlYXI6ZnVuY3Rpb24oKXtmb3IoO3RoaXMubm9kZS5oYXNDaGlsZE5vZGVzKCk7KXRoaXMubm9kZS5yZW1vdmVDaGlsZCh0aGlzLm5vZGUubGFzdENoaWxkKTtyZXR1cm4gZGVsZXRlIHRoaXMuX2RlZnMsYS5wYXJzZXIuZHJhdyYmIWEucGFyc2VyLmRyYXcucGFyZW50Tm9kZSYmdGhpcy5ub2RlLmFwcGVuZENoaWxkKGEucGFyc2VyLmRyYXcpLHRoaXN9LGNsb25lOmZ1bmN0aW9uKHQpe3RoaXMud3JpdGVEYXRhVG9Eb20oKTt2YXIgZT10aGlzLm5vZGUsaT14KGUuY2xvbmVOb2RlKCEwKSk7cmV0dXJuIHQ/KHQubm9kZXx8dCkuYXBwZW5kQ2hpbGQoaS5ub2RlKTplLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGkubm9kZSxlLm5leHRTaWJsaW5nKSxpfX19KSxhLmV4dGVuZChhLkVsZW1lbnQse30pLGEuR3JhZGllbnQ9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxhLmNyZWF0ZSh0K1wiR3JhZGllbnRcIikpLHRoaXMudHlwZT10fSxpbmhlcml0OmEuQ29udGFpbmVyLGV4dGVuZDp7YXQ6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLnB1dChuZXcgYS5TdG9wKS51cGRhdGUodCxlLGkpfSx1cGRhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xlYXIoKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiZ0LmNhbGwodGhpcyx0aGlzKSx0aGlzfSxmaWxsOmZ1bmN0aW9uKCl7cmV0dXJuXCJ1cmwoI1wiK3RoaXMuaWQoKStcIilcIn0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWxsKCl9LGF0dHI6ZnVuY3Rpb24odCxlLGkpe3JldHVyblwidHJhbnNmb3JtXCI9PXQmJih0PVwiZ3JhZGllbnRUcmFuc2Zvcm1cIiksYS5Db250YWluZXIucHJvdG90eXBlLmF0dHIuY2FsbCh0aGlzLHQsZSxpKX19LGNvbnN0cnVjdDp7Z3JhZGllbnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5kZWZzKCkuZ3JhZGllbnQodCxlKX19fSksYS5leHRlbmQoYS5HcmFkaWVudCxhLkZYLHtmcm9tOmZ1bmN0aW9uKHQsZSl7cmV0dXJuXCJyYWRpYWxcIj09KHRoaXMuX3RhcmdldHx8dGhpcykudHlwZT90aGlzLmF0dHIoe2Z4Om5ldyBhLk51bWJlcih0KSxmeTpuZXcgYS5OdW1iZXIoZSl9KTp0aGlzLmF0dHIoe3gxOm5ldyBhLk51bWJlcih0KSx5MTpuZXcgYS5OdW1iZXIoZSl9KX0sdG86ZnVuY3Rpb24odCxlKXtyZXR1cm5cInJhZGlhbFwiPT0odGhpcy5fdGFyZ2V0fHx0aGlzKS50eXBlP3RoaXMuYXR0cih7Y3g6bmV3IGEuTnVtYmVyKHQpLGN5Om5ldyBhLk51bWJlcihlKX0pOnRoaXMuYXR0cih7eDI6bmV3IGEuTnVtYmVyKHQpLHkyOm5ldyBhLk51bWJlcihlKX0pfX0pLGEuZXh0ZW5kKGEuRGVmcyx7Z3JhZGllbnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuR3JhZGllbnQodCkpLnVwZGF0ZShlKX19KSxhLlN0b3A9YS5pbnZlbnQoe2NyZWF0ZTpcInN0b3BcIixpbmhlcml0OmEuRWxlbWVudCxleHRlbmQ6e3VwZGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4oXCJudW1iZXJcIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBhLk51bWJlcikmJih0PXtvZmZzZXQ6YXJndW1lbnRzWzBdLGNvbG9yOmFyZ3VtZW50c1sxXSxvcGFjaXR5OmFyZ3VtZW50c1syXX0pLG51bGwhPXQub3BhY2l0eSYmdGhpcy5hdHRyKFwic3RvcC1vcGFjaXR5XCIsdC5vcGFjaXR5KSxudWxsIT10LmNvbG9yJiZ0aGlzLmF0dHIoXCJzdG9wLWNvbG9yXCIsdC5jb2xvciksbnVsbCE9dC5vZmZzZXQmJnRoaXMuYXR0cihcIm9mZnNldFwiLG5ldyBhLk51bWJlcih0Lm9mZnNldCkpLHRoaXN9fX0pLGEuUGF0dGVybj1hLmludmVudCh7Y3JlYXRlOlwicGF0dGVyblwiLGluaGVyaXQ6YS5Db250YWluZXIsZXh0ZW5kOntmaWxsOmZ1bmN0aW9uKCl7cmV0dXJuXCJ1cmwoI1wiK3RoaXMuaWQoKStcIilcIn0sdXBkYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsZWFyKCksXCJmdW5jdGlvblwiPT10eXBlb2YgdCYmdC5jYWxsKHRoaXMsdGhpcyksdGhpc30sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWxsKCl9LGF0dHI6ZnVuY3Rpb24odCxlLGkpe3JldHVyblwidHJhbnNmb3JtXCI9PXQmJih0PVwicGF0dGVyblRyYW5zZm9ybVwiKSxhLkNvbnRhaW5lci5wcm90b3R5cGUuYXR0ci5jYWxsKHRoaXMsdCxlLGkpfX0sY29uc3RydWN0OntwYXR0ZXJuOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5kZWZzKCkucGF0dGVybih0LGUsaSl9fX0pLGEuZXh0ZW5kKGEuRGVmcyx7cGF0dGVybjpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlBhdHRlcm4pLnVwZGF0ZShpKS5hdHRyKHt4OjAseTowLHdpZHRoOnQsaGVpZ2h0OmUscGF0dGVyblVuaXRzOlwidXNlclNwYWNlT25Vc2VcIn0pfX0pLGEuU2hhcGU9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyx0KX0saW5oZXJpdDphLkVsZW1lbnR9KSxhLlN5bWJvbD1hLmludmVudCh7Y3JlYXRlOlwic3ltYm9sXCIsaW5oZXJpdDphLkNvbnRhaW5lcixjb25zdHJ1Y3Q6e3N5bWJvbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1dChuZXcgYS5TeW1ib2wpfX19KSxhLlVzZT1hLmludmVudCh7Y3JlYXRlOlwidXNlXCIsaW5oZXJpdDphLlNoYXBlLGV4dGVuZDp7ZWxlbWVudDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmF0dHIoXCJocmVmXCIsKGV8fFwiXCIpK1wiI1wiK3QsYS54bGluayl9fSxjb25zdHJ1Y3Q6e3VzZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnB1dChuZXcgYS5Vc2UpLmVsZW1lbnQodCxlKX19fSksYS5SZWN0PWEuaW52ZW50KHtjcmVhdGU6XCJyZWN0XCIsaW5oZXJpdDphLlNoYXBlLGNvbnN0cnVjdDp7cmVjdDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnB1dChuZXcgYS5SZWN0KS5zaXplKHQsZSl9fX0pLGEuQ2lyY2xlPWEuaW52ZW50KHtjcmVhdGU6XCJjaXJjbGVcIixpbmhlcml0OmEuU2hhcGUsY29uc3RydWN0OntjaXJjbGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLkNpcmNsZSkucngobmV3IGEuTnVtYmVyKHQpLmRpdmlkZSgyKSkubW92ZSgwLDApfX19KSxhLmV4dGVuZChhLkNpcmNsZSxhLkZYLHtyeDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwiclwiLHQpfSxyeTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yeCh0KX19KSxhLkVsbGlwc2U9YS5pbnZlbnQoe2NyZWF0ZTpcImVsbGlwc2VcIixpbmhlcml0OmEuU2hhcGUsY29uc3RydWN0OntlbGxpcHNlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLkVsbGlwc2UpLnNpemUodCxlKS5tb3ZlKDAsMCl9fX0pLGEuZXh0ZW5kKGEuRWxsaXBzZSxhLlJlY3QsYS5GWCx7cng6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcInJ4XCIsdCl9LHJ5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJyeVwiLHQpfX0pLGEuZXh0ZW5kKGEuQ2lyY2xlLGEuRWxsaXBzZSx7eDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmN4KCktdGhpcy5yeCgpOnRoaXMuY3godCt0aGlzLnJ4KCkpfSx5OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuY3koKS10aGlzLnJ5KCk6dGhpcy5jeSh0K3RoaXMucnkoKSl9LGN4OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYXR0cihcImN4XCIpOnRoaXMuYXR0cihcImN4XCIsdCl9LGN5OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYXR0cihcImN5XCIpOnRoaXMuYXR0cihcImN5XCIsdCl9LHdpZHRoOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10PzIqdGhpcy5yeCgpOnRoaXMucngobmV3IGEuTnVtYmVyKHQpLmRpdmlkZSgyKSl9LGhlaWdodDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD8yKnRoaXMucnkoKTp0aGlzLnJ5KG5ldyBhLk51bWJlcih0KS5kaXZpZGUoMikpfSxzaXplOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dSh0aGlzLHQsZSk7cmV0dXJuIHRoaXMucngobmV3IGEuTnVtYmVyKGkud2lkdGgpLmRpdmlkZSgyKSkucnkobmV3IGEuTnVtYmVyKGkuaGVpZ2h0KS5kaXZpZGUoMikpfX0pLGEuTGluZT1hLmludmVudCh7Y3JlYXRlOlwibGluZVwiLGluaGVyaXQ6YS5TaGFwZSxleHRlbmQ6e2FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBhLlBvaW50QXJyYXkoW1t0aGlzLmF0dHIoXCJ4MVwiKSx0aGlzLmF0dHIoXCJ5MVwiKV0sW3RoaXMuYXR0cihcIngyXCIpLHRoaXMuYXR0cihcInkyXCIpXV0pfSxwbG90OmZ1bmN0aW9uKHQsZSxpLHMpe3JldHVybiBudWxsPT10P3RoaXMuYXJyYXkoKToodD12b2lkIDAhPT1lP3t4MTp0LHkxOmUseDI6aSx5MjpzfTpuZXcgYS5Qb2ludEFycmF5KHQpLnRvTGluZSgpLHRoaXMuYXR0cih0KSl9LG1vdmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hdHRyKHRoaXMuYXJyYXkoKS5tb3ZlKHQsZSkudG9MaW5lKCkpfSxzaXplOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dSh0aGlzLHQsZSk7cmV0dXJuIHRoaXMuYXR0cih0aGlzLmFycmF5KCkuc2l6ZShpLndpZHRoLGkuaGVpZ2h0KS50b0xpbmUoKSl9fSxjb25zdHJ1Y3Q6e2xpbmU6ZnVuY3Rpb24odCxlLGkscyl7cmV0dXJuIGEuTGluZS5wcm90b3R5cGUucGxvdC5hcHBseSh0aGlzLnB1dChuZXcgYS5MaW5lKSxudWxsIT10P1t0LGUsaSxzXTpbMCwwLDAsMF0pfX19KSxhLlBvbHlsaW5lPWEuaW52ZW50KHtjcmVhdGU6XCJwb2x5bGluZVwiLGluaGVyaXQ6YS5TaGFwZSxjb25zdHJ1Y3Q6e3BvbHlsaW5lOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnB1dChuZXcgYS5Qb2x5bGluZSkucGxvdCh0fHxuZXcgYS5Qb2ludEFycmF5KX19fSksYS5Qb2x5Z29uPWEuaW52ZW50KHtjcmVhdGU6XCJwb2x5Z29uXCIsaW5oZXJpdDphLlNoYXBlLGNvbnN0cnVjdDp7cG9seWdvbjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuUG9seWdvbikucGxvdCh0fHxuZXcgYS5Qb2ludEFycmF5KX19fSksYS5leHRlbmQoYS5Qb2x5bGluZSxhLlBvbHlnb24se2FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FycmF5fHwodGhpcy5fYXJyYXk9bmV3IGEuUG9pbnRBcnJheSh0aGlzLmF0dHIoXCJwb2ludHNcIikpKX0scGxvdDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmFycmF5KCk6dGhpcy5jbGVhcigpLmF0dHIoXCJwb2ludHNcIixcInN0cmluZ1wiPT10eXBlb2YgdD90OnRoaXMuX2FycmF5PW5ldyBhLlBvaW50QXJyYXkodCkpfSxjbGVhcjpmdW5jdGlvbigpe3JldHVybiBkZWxldGUgdGhpcy5fYXJyYXksdGhpc30sbW92ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmF0dHIoXCJwb2ludHNcIix0aGlzLmFycmF5KCkubW92ZSh0LGUpKX0sc2l6ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXUodGhpcyx0LGUpO3JldHVybiB0aGlzLmF0dHIoXCJwb2ludHNcIix0aGlzLmFycmF5KCkuc2l6ZShpLndpZHRoLGkuaGVpZ2h0KSl9fSksYS5leHRlbmQoYS5MaW5lLGEuUG9seWxpbmUsYS5Qb2x5Z29uLHttb3JwaEFycmF5OmEuUG9pbnRBcnJheSx4OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYmJveCgpLng6dGhpcy5tb3ZlKHQsdGhpcy5iYm94KCkueSl9LHk6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5iYm94KCkueTp0aGlzLm1vdmUodGhpcy5iYm94KCkueCx0KX0sd2lkdGg6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5iYm94KCk7cmV0dXJuIG51bGw9PXQ/ZS53aWR0aDp0aGlzLnNpemUodCxlLmhlaWdodCl9LGhlaWdodDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmJib3goKTtyZXR1cm4gbnVsbD09dD9lLmhlaWdodDp0aGlzLnNpemUoZS53aWR0aCx0KX19KSxhLlBhdGg9YS5pbnZlbnQoe2NyZWF0ZTpcInBhdGhcIixpbmhlcml0OmEuU2hhcGUsZXh0ZW5kOnttb3JwaEFycmF5OmEuUGF0aEFycmF5LGFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FycmF5fHwodGhpcy5fYXJyYXk9bmV3IGEuUGF0aEFycmF5KHRoaXMuYXR0cihcImRcIikpKX0scGxvdDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmFycmF5KCk6dGhpcy5jbGVhcigpLmF0dHIoXCJkXCIsXCJzdHJpbmdcIj09dHlwZW9mIHQ/dDp0aGlzLl9hcnJheT1uZXcgYS5QYXRoQXJyYXkodCkpfSxjbGVhcjpmdW5jdGlvbigpe3JldHVybiBkZWxldGUgdGhpcy5fYXJyYXksdGhpc319LGNvbnN0cnVjdDp7cGF0aDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuUGF0aCkucGxvdCh0fHxuZXcgYS5QYXRoQXJyYXkpfX19KSxhLkltYWdlPWEuaW52ZW50KHtjcmVhdGU6XCJpbWFnZVwiLGluaGVyaXQ6YS5TaGFwZSxleHRlbmQ6e2xvYWQ6ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIHRoaXM7dmFyIGk9dGhpcyxzPW5ldyB0LkltYWdlO3JldHVybiBhLm9uKHMsXCJsb2FkXCIsKGZ1bmN0aW9uKCl7YS5vZmYocyk7dmFyIHQ9aS5wYXJlbnQoYS5QYXR0ZXJuKTtudWxsIT09dCYmKDA9PWkud2lkdGgoKSYmMD09aS5oZWlnaHQoKSYmaS5zaXplKHMud2lkdGgscy5oZWlnaHQpLHQmJjA9PXQud2lkdGgoKSYmMD09dC5oZWlnaHQoKSYmdC5zaXplKGkud2lkdGgoKSxpLmhlaWdodCgpKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBpLl9sb2FkZWQmJmkuX2xvYWRlZC5jYWxsKGkse3dpZHRoOnMud2lkdGgsaGVpZ2h0OnMuaGVpZ2h0LHJhdGlvOnMud2lkdGgvcy5oZWlnaHQsdXJsOmV9KSl9KSksYS5vbihzLFwiZXJyb3JcIiwoZnVuY3Rpb24odCl7YS5vZmYocyksXCJmdW5jdGlvblwiPT10eXBlb2YgaS5fZXJyb3ImJmkuX2Vycm9yLmNhbGwoaSx0KX0pKSx0aGlzLmF0dHIoXCJocmVmXCIscy5zcmM9dGhpcy5zcmM9ZSxhLnhsaW5rKX0sbG9hZGVkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9sb2FkZWQ9dCx0aGlzfSxlcnJvcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZXJyb3I9dCx0aGlzfX0sY29uc3RydWN0OntpbWFnZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLkltYWdlKS5sb2FkKHQpLnNpemUoZXx8MCxpfHxlfHwwKX19fSksYS5UZXh0PWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxhLmNyZWF0ZShcInRleHRcIikpLHRoaXMuZG9tLmxlYWRpbmc9bmV3IGEuTnVtYmVyKDEuMyksdGhpcy5fcmVidWlsZD0hMCx0aGlzLl9idWlsZD0hMSx0aGlzLmF0dHIoXCJmb250LWZhbWlseVwiLGEuZGVmYXVsdHMuYXR0cnNbXCJmb250LWZhbWlseVwiXSl9LGluaGVyaXQ6YS5TaGFwZSxleHRlbmQ6e3g6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hdHRyKFwieFwiKTp0aGlzLmF0dHIoXCJ4XCIsdCl9LHRleHQ6ZnVuY3Rpb24odCl7aWYodm9pZCAwPT09dCl7dD1cIlwiO2Zvcih2YXIgZT10aGlzLm5vZGUuY2hpbGROb2RlcyxpPTAscz1lLmxlbmd0aDtpPHM7KytpKTAhPWkmJjMhPWVbaV0ubm9kZVR5cGUmJjE9PWEuYWRvcHQoZVtpXSkuZG9tLm5ld0xpbmVkJiYodCs9XCJcXG5cIiksdCs9ZVtpXS50ZXh0Q29udGVudDtyZXR1cm4gdH1pZih0aGlzLmNsZWFyKCkuYnVpbGQoITApLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQpdC5jYWxsKHRoaXMsdGhpcyk7ZWxzZXtpPTA7Zm9yKHZhciByPSh0PXQuc3BsaXQoXCJcXG5cIikpLmxlbmd0aDtpPHI7aSsrKXRoaXMudHNwYW4odFtpXSkubmV3TGluZSgpfXJldHVybiB0aGlzLmJ1aWxkKCExKS5yZWJ1aWxkKCl9LHNpemU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcImZvbnQtc2l6ZVwiLHQpLnJlYnVpbGQoKX0sbGVhZGluZzpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmRvbS5sZWFkaW5nOih0aGlzLmRvbS5sZWFkaW5nPW5ldyBhLk51bWJlcih0KSx0aGlzLnJlYnVpbGQoKSl9LGxpbmVzOmZ1bmN0aW9uKCl7dmFyIHQ9KHRoaXMudGV4dFBhdGgmJnRoaXMudGV4dFBhdGgoKXx8dGhpcykubm9kZSxlPWEudXRpbHMubWFwKGEudXRpbHMuZmlsdGVyU1ZHRWxlbWVudHModC5jaGlsZE5vZGVzKSwoZnVuY3Rpb24odCl7cmV0dXJuIGEuYWRvcHQodCl9KSk7cmV0dXJuIG5ldyBhLlNldChlKX0scmVidWlsZDpmdW5jdGlvbih0KXtpZihcImJvb2xlYW5cIj09dHlwZW9mIHQmJih0aGlzLl9yZWJ1aWxkPXQpLHRoaXMuX3JlYnVpbGQpe3ZhciBlPXRoaXMsaT0wLHM9dGhpcy5kb20ubGVhZGluZypuZXcgYS5OdW1iZXIodGhpcy5hdHRyKFwiZm9udC1zaXplXCIpKTt0aGlzLmxpbmVzKCkuZWFjaCgoZnVuY3Rpb24oKXt0aGlzLmRvbS5uZXdMaW5lZCYmKGUudGV4dFBhdGgoKXx8dGhpcy5hdHRyKFwieFwiLGUuYXR0cihcInhcIikpLFwiXFxuXCI9PXRoaXMudGV4dCgpP2krPXM6KHRoaXMuYXR0cihcImR5XCIscytpKSxpPTApKX0pKSx0aGlzLmZpcmUoXCJyZWJ1aWxkXCIpfXJldHVybiB0aGlzfSxidWlsZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYnVpbGQ9ISF0LHRoaXN9LHNldERhdGE6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZG9tPXQsdGhpcy5kb20ubGVhZGluZz1uZXcgYS5OdW1iZXIodC5sZWFkaW5nfHwxLjMpLHRoaXN9fSxjb25zdHJ1Y3Q6e3RleHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlRleHQpLnRleHQodCl9LHBsYWluOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnB1dChuZXcgYS5UZXh0KS5wbGFpbih0KX19fSksYS5Uc3Bhbj1hLmludmVudCh7Y3JlYXRlOlwidHNwYW5cIixpbmhlcml0OmEuU2hhcGUsZXh0ZW5kOnt0ZXh0OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMubm9kZS50ZXh0Q29udGVudCsodGhpcy5kb20ubmV3TGluZWQ/XCJcXG5cIjpcIlwiKTooXCJmdW5jdGlvblwiPT10eXBlb2YgdD90LmNhbGwodGhpcyx0aGlzKTp0aGlzLnBsYWluKHQpLHRoaXMpfSxkeDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwiZHhcIix0KX0sZHk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcImR5XCIsdCl9LG5ld0xpbmU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhcmVudChhLlRleHQpO3JldHVybiB0aGlzLmRvbS5uZXdMaW5lZD0hMCx0aGlzLmR5KHQuZG9tLmxlYWRpbmcqdC5hdHRyKFwiZm9udC1zaXplXCIpKS5hdHRyKFwieFwiLHQueCgpKX19fSksYS5leHRlbmQoYS5UZXh0LGEuVHNwYW4se3BsYWluOmZ1bmN0aW9uKHQpe3JldHVybiExPT09dGhpcy5fYnVpbGQmJnRoaXMuY2xlYXIoKSx0aGlzLm5vZGUuYXBwZW5kQ2hpbGQoZS5jcmVhdGVUZXh0Tm9kZSh0KSksdGhpc30sdHNwYW46ZnVuY3Rpb24odCl7dmFyIGU9KHRoaXMudGV4dFBhdGgmJnRoaXMudGV4dFBhdGgoKXx8dGhpcykubm9kZSxpPW5ldyBhLlRzcGFuO3JldHVybiExPT09dGhpcy5fYnVpbGQmJnRoaXMuY2xlYXIoKSxlLmFwcGVuZENoaWxkKGkubm9kZSksaS50ZXh0KHQpfSxjbGVhcjpmdW5jdGlvbigpe2Zvcih2YXIgdD0odGhpcy50ZXh0UGF0aCYmdGhpcy50ZXh0UGF0aCgpfHx0aGlzKS5ub2RlO3QuaGFzQ2hpbGROb2RlcygpOyl0LnJlbW92ZUNoaWxkKHQubGFzdENoaWxkKTtyZXR1cm4gdGhpc30sbGVuZ3RoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5nZXRDb21wdXRlZFRleHRMZW5ndGgoKX19KSxhLlRleHRQYXRoPWEuaW52ZW50KHtjcmVhdGU6XCJ0ZXh0UGF0aFwiLGluaGVyaXQ6YS5QYXJlbnQscGFyZW50OmEuVGV4dCxjb25zdHJ1Y3Q6e21vcnBoQXJyYXk6YS5QYXRoQXJyYXksYXJyYXk6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnRyYWNrKCk7cmV0dXJuIHQ/dC5hcnJheSgpOm51bGx9LHBsb3Q6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy50cmFjaygpLGk9bnVsbDtyZXR1cm4gZSYmKGk9ZS5wbG90KHQpKSxudWxsPT10P2k6dGhpc30sdHJhY2s6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnRleHRQYXRoKCk7aWYodClyZXR1cm4gdC5yZWZlcmVuY2UoXCJocmVmXCIpfSx0ZXh0UGF0aDpmdW5jdGlvbigpe2lmKHRoaXMubm9kZS5maXJzdENoaWxkJiZcInRleHRQYXRoXCI9PXRoaXMubm9kZS5maXJzdENoaWxkLm5vZGVOYW1lKXJldHVybiBhLmFkb3B0KHRoaXMubm9kZS5maXJzdENoaWxkKX19fSksYS5OZXN0ZWQ9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLGEuY3JlYXRlKFwic3ZnXCIpKSx0aGlzLnN0eWxlKFwib3ZlcmZsb3dcIixcInZpc2libGVcIil9LGluaGVyaXQ6YS5Db250YWluZXIsY29uc3RydWN0OntuZXN0ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuTmVzdGVkKX19fSk7dmFyIGw9e3N0cm9rZTpbXCJjb2xvclwiLFwid2lkdGhcIixcIm9wYWNpdHlcIixcImxpbmVjYXBcIixcImxpbmVqb2luXCIsXCJtaXRlcmxpbWl0XCIsXCJkYXNoYXJyYXlcIixcImRhc2hvZmZzZXRcIl0sZmlsbDpbXCJjb2xvclwiLFwib3BhY2l0eVwiLFwicnVsZVwiXSxwcmVmaXg6ZnVuY3Rpb24odCxlKXtyZXR1cm5cImNvbG9yXCI9PWU/dDp0K1wiLVwiK2V9fTtmdW5jdGlvbiBoKHQsZSxpLHMpe3JldHVybiBpK3MucmVwbGFjZShhLnJlZ2V4LmRvdHMsXCIgLlwiKX1mdW5jdGlvbiBjKHQpe3JldHVybiB0LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvLSguKS9nLChmdW5jdGlvbih0LGUpe3JldHVybiBlLnRvVXBwZXJDYXNlKCl9KSl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpfWZ1bmN0aW9uIGcodCl7dmFyIGU9dC50b1N0cmluZygxNik7cmV0dXJuIDE9PWUubGVuZ3RoP1wiMFwiK2U6ZX1mdW5jdGlvbiB1KHQsZSxpKXtpZihudWxsPT1lfHxudWxsPT1pKXt2YXIgYT10LmJib3goKTtudWxsPT1lP2U9YS53aWR0aC9hLmhlaWdodCppOm51bGw9PWkmJihpPWEuaGVpZ2h0L2Eud2lkdGgqZSl9cmV0dXJue3dpZHRoOmUsaGVpZ2h0Oml9fWZ1bmN0aW9uIHAodCxlLGkpe3JldHVybnt4OmUqdC5hK2kqdC5jKzAseTplKnQuYitpKnQuZCswfX1mdW5jdGlvbiBmKHQpe3JldHVybnthOnRbMF0sYjp0WzFdLGM6dFsyXSxkOnRbM10sZTp0WzRdLGY6dFs1XX19ZnVuY3Rpb24geChlKXtmb3IodmFyIGk9ZS5jaGlsZE5vZGVzLmxlbmd0aC0xO2k+PTA7aS0tKWUuY2hpbGROb2Rlc1tpXWluc3RhbmNlb2YgdC5TVkdFbGVtZW50JiZ4KGUuY2hpbGROb2Rlc1tpXSk7cmV0dXJuIGEuYWRvcHQoZSkuaWQoYS5laWQoZS5ub2RlTmFtZSkpfWZ1bmN0aW9uIGIodCl7cmV0dXJuIE1hdGguYWJzKHQpPjFlLTM3P3Q6MH1bXCJmaWxsXCIsXCJzdHJva2VcIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9e307ZVt0XT1mdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXJldHVybiB0aGlzO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlfHxhLkNvbG9yLmlzUmdiKGUpfHxlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmZpbGwpdGhpcy5hdHRyKHQsZSk7ZWxzZSBmb3IodmFyIGk9bFt0XS5sZW5ndGgtMTtpPj0wO2ktLSludWxsIT1lW2xbdF1baV1dJiZ0aGlzLmF0dHIobC5wcmVmaXgodCxsW3RdW2ldKSxlW2xbdF1baV1dKTtyZXR1cm4gdGhpc30sYS5leHRlbmQoYS5FbGVtZW50LGEuRlgsZSl9KSksYS5leHRlbmQoYS5FbGVtZW50LGEuRlgse3RyYW5zbGF0ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnRyYW5zZm9ybSh7eDp0LHk6ZX0pfSxtYXRyaXg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcInRyYW5zZm9ybVwiLG5ldyBhLk1hdHJpeCg2PT1hcmd1bWVudHMubGVuZ3RoP1tdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTp0KSl9LG9wYWNpdHk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcIm9wYWNpdHlcIix0KX0sZHg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueChuZXcgYS5OdW1iZXIodCkucGx1cyh0aGlzIGluc3RhbmNlb2YgYS5GWD8wOnRoaXMueCgpKSwhMCl9LGR5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnkobmV3IGEuTnVtYmVyKHQpLnBsdXModGhpcyBpbnN0YW5jZW9mIGEuRlg/MDp0aGlzLnkoKSksITApfX0pLGEuZXh0ZW5kKGEuUGF0aCx7bGVuZ3RoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5nZXRUb3RhbExlbmd0aCgpfSxwb2ludEF0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm5vZGUuZ2V0UG9pbnRBdExlbmd0aCh0KX19KSxhLlNldD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe0FycmF5LmlzQXJyYXkodCk/dGhpcy5tZW1iZXJzPXQ6dGhpcy5jbGVhcigpfSxleHRlbmQ6e2FkZDpmdW5jdGlvbigpe2Zvcih2YXIgdD1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyksZT0wLGk9dC5sZW5ndGg7ZTxpO2UrKyl0aGlzLm1lbWJlcnMucHVzaCh0W2VdKTtyZXR1cm4gdGhpc30scmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaW5kZXgodCk7cmV0dXJuIGU+LTEmJnRoaXMubWVtYmVycy5zcGxpY2UoZSwxKSx0aGlzfSxlYWNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLGk9dGhpcy5tZW1iZXJzLmxlbmd0aDtlPGk7ZSsrKXQuYXBwbHkodGhpcy5tZW1iZXJzW2VdLFtlLHRoaXMubWVtYmVyc10pO3JldHVybiB0aGlzfSxjbGVhcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1lbWJlcnM9W10sdGhpc30sbGVuZ3RoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVtYmVycy5sZW5ndGh9LGhhczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbmRleCh0KT49MH0saW5kZXg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubWVtYmVycy5pbmRleE9mKHQpfSxnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubWVtYmVyc1t0XX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQodGhpcy5tZW1iZXJzLmxlbmd0aC0xKX0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1lbWJlcnN9fSxjb25zdHJ1Y3Q6e3NldDpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGEuU2V0KHQpfX19KSxhLkZYLlNldD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuc2V0PXR9fSksYS5TZXQuaW5oZXJpdD1mdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiBhLlNoYXBlLnByb3RvdHlwZSlcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLlNoYXBlLnByb3RvdHlwZVtlXSYmXCJmdW5jdGlvblwiIT10eXBlb2YgYS5TZXQucHJvdG90eXBlW2VdJiZ0LnB1c2goZSk7Zm9yKHZhciBlIGluIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7YS5TZXQucHJvdG90eXBlW3RdPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTAsaT10aGlzLm1lbWJlcnMubGVuZ3RoO2U8aTtlKyspdGhpcy5tZW1iZXJzW2VdJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0aGlzLm1lbWJlcnNbZV1bdF0mJnRoaXMubWVtYmVyc1tlXVt0XS5hcHBseSh0aGlzLm1lbWJlcnNbZV0sYXJndW1lbnRzKTtyZXR1cm5cImFuaW1hdGVcIj09dD90aGlzLmZ4fHwodGhpcy5meD1uZXcgYS5GWC5TZXQodGhpcykpOnRoaXN9fSkpLHQ9W10sYS5GWC5wcm90b3R5cGUpXCJmdW5jdGlvblwiPT10eXBlb2YgYS5GWC5wcm90b3R5cGVbZV0mJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGEuRlguU2V0LnByb3RvdHlwZVtlXSYmdC5wdXNoKGUpO3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7YS5GWC5TZXQucHJvdG90eXBlW3RdPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTAsaT10aGlzLnNldC5tZW1iZXJzLmxlbmd0aDtlPGk7ZSsrKXRoaXMuc2V0Lm1lbWJlcnNbZV0uZnhbdF0uYXBwbHkodGhpcy5zZXQubWVtYmVyc1tlXS5meCxhcmd1bWVudHMpO3JldHVybiB0aGlzfX0pKX0sYS5leHRlbmQoYS5FbGVtZW50LHt9KSxhLmV4dGVuZChhLkVsZW1lbnQse3JlbWVtYmVyOmZ1bmN0aW9uKHQsZSl7aWYoXCJvYmplY3RcIj09PWkoYXJndW1lbnRzWzBdKSlmb3IodmFyIGEgaW4gdCl0aGlzLnJlbWVtYmVyKGEsdFthXSk7ZWxzZXtpZigxPT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzLm1lbW9yeSgpW3RdO3RoaXMubWVtb3J5KClbdF09ZX1yZXR1cm4gdGhpc30sZm9yZ2V0OmZ1bmN0aW9uKCl7aWYoMD09YXJndW1lbnRzLmxlbmd0aCl0aGlzLl9tZW1vcnk9e307ZWxzZSBmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aC0xO3Q+PTA7dC0tKWRlbGV0ZSB0aGlzLm1lbW9yeSgpW2FyZ3VtZW50c1t0XV07cmV0dXJuIHRoaXN9LG1lbW9yeTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tZW1vcnl8fCh0aGlzLl9tZW1vcnk9e30pfX0pLGEuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBpPWUuZ2V0RWxlbWVudEJ5SWQoZnVuY3Rpb24odCl7dmFyIGU9KHR8fFwiXCIpLnRvU3RyaW5nKCkubWF0Y2goYS5yZWdleC5yZWZlcmVuY2UpO2lmKGUpcmV0dXJuIGVbMV19KHQpfHx0KTtyZXR1cm4gYS5hZG9wdChpKX0sYS5zZWxlY3Q9ZnVuY3Rpb24odCxpKXtyZXR1cm4gbmV3IGEuU2V0KGEudXRpbHMubWFwKChpfHxlKS5xdWVyeVNlbGVjdG9yQWxsKHQpLChmdW5jdGlvbih0KXtyZXR1cm4gYS5hZG9wdCh0KX0pKSl9LGEuZXh0ZW5kKGEuUGFyZW50LHtzZWxlY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIGEuc2VsZWN0KHQsdGhpcy5ub2RlKX19KTt2YXIgdj1cImFiY2RlZlwiLnNwbGl0KFwiXCIpO2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQuQ3VzdG9tRXZlbnQpe3ZhciBtPWZ1bmN0aW9uKHQsaSl7aT1pfHx7YnViYmxlczohMSxjYW5jZWxhYmxlOiExLGRldGFpbDp2b2lkIDB9O3ZhciBhPWUuY3JlYXRlRXZlbnQoXCJDdXN0b21FdmVudFwiKTtyZXR1cm4gYS5pbml0Q3VzdG9tRXZlbnQodCxpLmJ1YmJsZXMsaS5jYW5jZWxhYmxlLGkuZGV0YWlsKSxhfTttLnByb3RvdHlwZT10LkV2ZW50LnByb3RvdHlwZSxhLkN1c3RvbUV2ZW50PW19ZWxzZSBhLkN1c3RvbUV2ZW50PXQuQ3VzdG9tRXZlbnQ7cmV0dXJuIGF9LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoKGZ1bmN0aW9uKCl7cmV0dXJuIEV0KHp0LHp0LmRvY3VtZW50KX0pKTpcIm9iamVjdFwiPT09KFwidW5kZWZpbmVkXCI9PXR5cGVvZiBleHBvcnRzP1widW5kZWZpbmVkXCI6aShleHBvcnRzKSkmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9enQuZG9jdW1lbnQ/RXQoenQsenQuZG9jdW1lbnQpOmZ1bmN0aW9uKHQpe3JldHVybiBFdCh0LHQuZG9jdW1lbnQpfTp6dC5TVkc9RXQoenQsenQuZG9jdW1lbnQpLFxuLyohIHN2Zy5maWx0ZXIuanMgLSB2Mi4wLjIgLSAyMDE2LTAyLTI0XG4qIGh0dHBzOi8vZ2l0aHViLmNvbS93b3V0L3N2Zy5maWx0ZXIuanNcbiogQ29weXJpZ2h0IChjKSAyMDE2IFdvdXQgRmllcmVuczsgTGljZW5zZWQgTUlUICovXG5mdW5jdGlvbigpe1NWRy5GaWx0ZXI9U1ZHLmludmVudCh7Y3JlYXRlOlwiZmlsdGVyXCIsaW5oZXJpdDpTVkcuUGFyZW50LGV4dGVuZDp7c291cmNlOlwiU291cmNlR3JhcGhpY1wiLHNvdXJjZUFscGhhOlwiU291cmNlQWxwaGFcIixiYWNrZ3JvdW5kOlwiQmFja2dyb3VuZEltYWdlXCIsYmFja2dyb3VuZEFscGhhOlwiQmFja2dyb3VuZEFscGhhXCIsZmlsbDpcIkZpbGxQYWludFwiLHN0cm9rZTpcIlN0cm9rZVBhaW50XCIsYXV0b1NldEluOiEwLHB1dDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmFkZCh0LGUpLCF0LmF0dHIoXCJpblwiKSYmdGhpcy5hdXRvU2V0SW4mJnQuYXR0cihcImluXCIsdGhpcy5zb3VyY2UpLHQuYXR0cihcInJlc3VsdFwiKXx8dC5hdHRyKFwicmVzdWx0XCIsdCksdH0sYmxlbmQ6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkJsZW5kRWZmZWN0KHQsZSxpKSl9LGNvbG9yTWF0cml4OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuQ29sb3JNYXRyaXhFZmZlY3QodCxlKSl9LGNvbnZvbHZlTWF0cml4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkNvbnZvbHZlTWF0cml4RWZmZWN0KHQpKX0sY29tcG9uZW50VHJhbnNmZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuQ29tcG9uZW50VHJhbnNmZXJFZmZlY3QodCkpfSxjb21wb3NpdGU6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkNvbXBvc2l0ZUVmZmVjdCh0LGUsaSkpfSxmbG9vZDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkZsb29kRWZmZWN0KHQsZSkpfSxvZmZzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5PZmZzZXRFZmZlY3QodCxlKSl9LGltYWdlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkltYWdlRWZmZWN0KHQpKX0sbWVyZ2U6ZnVuY3Rpb24oKXt2YXIgdD1bdm9pZCAwXTtmb3IodmFyIGUgaW4gYXJndW1lbnRzKXQucHVzaChhcmd1bWVudHNbZV0pO3JldHVybiB0aGlzLnB1dChuZXcoU1ZHLk1lcmdlRWZmZWN0LmJpbmQuYXBwbHkoU1ZHLk1lcmdlRWZmZWN0LHQpKSl9LGdhdXNzaWFuQmx1cjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkdhdXNzaWFuQmx1ckVmZmVjdCh0LGUpKX0sbW9ycGhvbG9neTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLk1vcnBob2xvZ3lFZmZlY3QodCxlKSl9LGRpZmZ1c2VMaWdodGluZzpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuRGlmZnVzZUxpZ2h0aW5nRWZmZWN0KHQsZSxpKSl9LGRpc3BsYWNlbWVudE1hcDpmdW5jdGlvbih0LGUsaSxhLHMpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkRpc3BsYWNlbWVudE1hcEVmZmVjdCh0LGUsaSxhLHMpKX0sc3BlY3VsYXJMaWdodGluZzpmdW5jdGlvbih0LGUsaSxhKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5TcGVjdWxhckxpZ2h0aW5nRWZmZWN0KHQsZSxpLGEpKX0sdGlsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLlRpbGVFZmZlY3QpfSx0dXJidWxlbmNlOmZ1bmN0aW9uKHQsZSxpLGEscyl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuVHVyYnVsZW5jZUVmZmVjdCh0LGUsaSxhLHMpKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm5cInVybCgjXCIrdGhpcy5hdHRyKFwiaWRcIikrXCIpXCJ9fX0pLFNWRy5leHRlbmQoU1ZHLkRlZnMse2ZpbHRlcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnB1dChuZXcgU1ZHLkZpbHRlcik7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdCYmdC5jYWxsKGUsZSksZX19KSxTVkcuZXh0ZW5kKFNWRy5Db250YWluZXIse2ZpbHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZWZzKCkuZmlsdGVyKHQpfX0pLFNWRy5leHRlbmQoU1ZHLkVsZW1lbnQsU1ZHLkcsU1ZHLk5lc3RlZCx7ZmlsdGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmZpbHRlcmVyPXQgaW5zdGFuY2VvZiBTVkcuRWxlbWVudD90OnRoaXMuZG9jKCkuZmlsdGVyKHQpLHRoaXMuZG9jKCkmJnRoaXMuZmlsdGVyZXIuZG9jKCkhPT10aGlzLmRvYygpJiZ0aGlzLmRvYygpLmRlZnMoKS5hZGQodGhpcy5maWx0ZXJlciksdGhpcy5hdHRyKFwiZmlsdGVyXCIsdGhpcy5maWx0ZXJlciksdGhpcy5maWx0ZXJlcn0sdW5maWx0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZmlsdGVyZXImJiEwPT09dCYmdGhpcy5maWx0ZXJlci5yZW1vdmUoKSxkZWxldGUgdGhpcy5maWx0ZXJlcix0aGlzLmF0dHIoXCJmaWx0ZXJcIixudWxsKX19KSxTVkcuRWZmZWN0PVNWRy5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzKX0saW5oZXJpdDpTVkcuRWxlbWVudCxleHRlbmQ6e2luOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuc2VsZWN0KCdbcmVzdWx0PVwiJyt0aGlzLmF0dHIoXCJpblwiKSsnXCJdJykuZ2V0KDApfHx0aGlzLmF0dHIoXCJpblwiKTp0aGlzLmF0dHIoXCJpblwiLHQpfSxyZXN1bHQ6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hdHRyKFwicmVzdWx0XCIpOnRoaXMuYXR0cihcInJlc3VsdFwiLHQpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJlc3VsdCgpfX19KSxTVkcuUGFyZW50RWZmZWN0PVNWRy5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzKX0saW5oZXJpdDpTVkcuUGFyZW50LGV4dGVuZDp7aW46ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5zZWxlY3QoJ1tyZXN1bHQ9XCInK3RoaXMuYXR0cihcImluXCIpKydcIl0nKS5nZXQoMCl8fHRoaXMuYXR0cihcImluXCIpOnRoaXMuYXR0cihcImluXCIsdCl9LHJlc3VsdDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmF0dHIoXCJyZXN1bHRcIik6dGhpcy5hdHRyKFwicmVzdWx0XCIsdCl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVzdWx0KCl9fX0pO3ZhciB0PXtibGVuZDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmJsZW5kKHRoaXMsdCxlKX0sY29sb3JNYXRyaXg6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5jb2xvck1hdHJpeCh0LGUpLmluKHRoaXMpfSxjb252b2x2ZU1hdHJpeDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5jb252b2x2ZU1hdHJpeCh0KS5pbih0aGlzKX0sY29tcG9uZW50VHJhbnNmZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuY29tcG9uZW50VHJhbnNmZXIodCkuaW4odGhpcyl9LGNvbXBvc2l0ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmNvbXBvc2l0ZSh0aGlzLHQsZSl9LGZsb29kOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuZmxvb2QodCxlKX0sb2Zmc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkub2Zmc2V0KHQsZSkuaW4odGhpcyl9LGltYWdlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmltYWdlKHQpfSxtZXJnZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLm1lcmdlLmFwcGx5KHRoaXMucGFyZW50KCksW3RoaXNdLmNvbmNhdChhcmd1bWVudHMpKX0sZ2F1c3NpYW5CbHVyOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuZ2F1c3NpYW5CbHVyKHQsZSkuaW4odGhpcyl9LG1vcnBob2xvZ3k6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5tb3JwaG9sb2d5KHQsZSkuaW4odGhpcyl9LGRpZmZ1c2VMaWdodGluZzpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuZGlmZnVzZUxpZ2h0aW5nKHQsZSxpKS5pbih0aGlzKX0sZGlzcGxhY2VtZW50TWFwOmZ1bmN0aW9uKHQsZSxpLGEpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmRpc3BsYWNlbWVudE1hcCh0aGlzLHQsZSxpLGEpfSxzcGVjdWxhckxpZ2h0aW5nOmZ1bmN0aW9uKHQsZSxpLGEpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnNwZWN1bGFyTGlnaHRpbmcodCxlLGksYSkuaW4odGhpcyl9LHRpbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS50aWxlKCkuaW4odGhpcyl9LHR1cmJ1bGVuY2U6ZnVuY3Rpb24odCxlLGksYSxzKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS50dXJidWxlbmNlKHQsZSxpLGEscykuaW4odGhpcyl9fTtTVkcuZXh0ZW5kKFNWRy5FZmZlY3QsdCksU1ZHLmV4dGVuZChTVkcuUGFyZW50RWZmZWN0LHQpLFNWRy5DaGlsZEVmZmVjdD1TVkcuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyl9LGluaGVyaXQ6U1ZHLkVsZW1lbnQsZXh0ZW5kOntpbjpmdW5jdGlvbih0KXt0aGlzLmF0dHIoXCJpblwiLHQpfX19KTt2YXIgZT17YmxlbmQ6ZnVuY3Rpb24odCxlLGkpe3RoaXMuYXR0cih7aW46dCxpbjI6ZSxtb2RlOml8fFwibm9ybWFsXCJ9KX0sY29sb3JNYXRyaXg6ZnVuY3Rpb24odCxlKXtcIm1hdHJpeFwiPT10JiYoZT1zKGUpKSx0aGlzLmF0dHIoe3R5cGU6dCx2YWx1ZXM6dm9pZCAwPT09ZT9udWxsOmV9KX0sY29udm9sdmVNYXRyaXg6ZnVuY3Rpb24odCl7dD1zKHQpLHRoaXMuYXR0cih7b3JkZXI6TWF0aC5zcXJ0KHQuc3BsaXQoXCIgXCIpLmxlbmd0aCksa2VybmVsTWF0cml4OnR9KX0sY29tcG9zaXRlOmZ1bmN0aW9uKHQsZSxpKXt0aGlzLmF0dHIoe2luOnQsaW4yOmUsb3BlcmF0b3I6aX0pfSxmbG9vZDpmdW5jdGlvbih0LGUpe3RoaXMuYXR0cihcImZsb29kLWNvbG9yXCIsdCksbnVsbCE9ZSYmdGhpcy5hdHRyKFwiZmxvb2Qtb3BhY2l0eVwiLGUpfSxvZmZzZXQ6ZnVuY3Rpb24odCxlKXt0aGlzLmF0dHIoe2R4OnQsZHk6ZX0pfSxpbWFnZTpmdW5jdGlvbih0KXt0aGlzLmF0dHIoXCJocmVmXCIsdCxTVkcueGxpbmspfSxkaXNwbGFjZW1lbnRNYXA6ZnVuY3Rpb24odCxlLGksYSxzKXt0aGlzLmF0dHIoe2luOnQsaW4yOmUsc2NhbGU6aSx4Q2hhbm5lbFNlbGVjdG9yOmEseUNoYW5uZWxTZWxlY3RvcjpzfSl9LGdhdXNzaWFuQmx1cjpmdW5jdGlvbih0LGUpe251bGwhPXR8fG51bGwhPWU/dGhpcy5hdHRyKFwic3RkRGV2aWF0aW9uXCIsZnVuY3Rpb24odCl7aWYoIUFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHQ7Zm9yKHZhciBlPTAsaT10Lmxlbmd0aCxhPVtdO2U8aTtlKyspYS5wdXNoKHRbZV0pO3JldHVybiBhLmpvaW4oXCIgXCIpfShBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKSk6dGhpcy5hdHRyKFwic3RkRGV2aWF0aW9uXCIsXCIwIDBcIil9LG1vcnBob2xvZ3k6ZnVuY3Rpb24odCxlKXt0aGlzLmF0dHIoe29wZXJhdG9yOnQscmFkaXVzOmV9KX0sdGlsZTpmdW5jdGlvbigpe30sdHVyYnVsZW5jZTpmdW5jdGlvbih0LGUsaSxhLHMpe3RoaXMuYXR0cih7bnVtT2N0YXZlczplLHNlZWQ6aSxzdGl0Y2hUaWxlczphLGJhc2VGcmVxdWVuY3k6dCx0eXBlOnN9KX19LGk9e21lcmdlOmZ1bmN0aW9uKCl7dmFyIHQ7aWYoYXJndW1lbnRzWzBdaW5zdGFuY2VvZiBTVkcuU2V0KXt2YXIgZT10aGlzO2FyZ3VtZW50c1swXS5lYWNoKChmdW5jdGlvbih0KXt0aGlzIGluc3RhbmNlb2YgU1ZHLk1lcmdlTm9kZT9lLnB1dCh0aGlzKToodGhpcyBpbnN0YW5jZW9mIFNWRy5FZmZlY3R8fHRoaXMgaW5zdGFuY2VvZiBTVkcuUGFyZW50RWZmZWN0KSYmZS5wdXQobmV3IFNWRy5NZXJnZU5vZGUodGhpcykpfSkpfWVsc2V7dD1BcnJheS5pc0FycmF5KGFyZ3VtZW50c1swXSk/YXJndW1lbnRzWzBdOmFyZ3VtZW50cztmb3IodmFyIGk9MDtpPHQubGVuZ3RoO2krKyl0W2ldaW5zdGFuY2VvZiBTVkcuTWVyZ2VOb2RlP3RoaXMucHV0KHRbaV0pOnRoaXMucHV0KG5ldyBTVkcuTWVyZ2VOb2RlKHRbaV0pKX19LGNvbXBvbmVudFRyYW5zZmVyOmZ1bmN0aW9uKHQpe2lmKHRoaXMucmdiPW5ldyBTVkcuU2V0LFtcInJcIixcImdcIixcImJcIixcImFcIl0uZm9yRWFjaChmdW5jdGlvbih0KXt0aGlzW3RdPW5ldyhTVkdbXCJGdW5jXCIrdC50b1VwcGVyQ2FzZSgpXSkoXCJpZGVudGl0eVwiKSx0aGlzLnJnYi5hZGQodGhpc1t0XSksdGhpcy5ub2RlLmFwcGVuZENoaWxkKHRoaXNbdF0ubm9kZSl9LmJpbmQodGhpcykpLHQpZm9yKHZhciBlIGluIHQucmdiJiYoW1wiclwiLFwiZ1wiLFwiYlwiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3RoaXNbZV0uYXR0cih0LnJnYil9LmJpbmQodGhpcykpLGRlbGV0ZSB0LnJnYiksdCl0aGlzW2VdLmF0dHIodFtlXSl9LGRpZmZ1c2VMaWdodGluZzpmdW5jdGlvbih0LGUsaSl7dGhpcy5hdHRyKHtzdXJmYWNlU2NhbGU6dCxkaWZmdXNlQ29uc3RhbnQ6ZSxrZXJuZWxVbml0TGVuZ3RoOml9KX0sc3BlY3VsYXJMaWdodGluZzpmdW5jdGlvbih0LGUsaSxhKXt0aGlzLmF0dHIoe3N1cmZhY2VTY2FsZTp0LGRpZmZ1c2VDb25zdGFudDplLHNwZWN1bGFyRXhwb25lbnQ6aSxrZXJuZWxVbml0TGVuZ3RoOmF9KX19LGE9e2Rpc3RhbnRMaWdodDpmdW5jdGlvbih0LGUpe3RoaXMuYXR0cih7YXppbXV0aDp0LGVsZXZhdGlvbjplfSl9LHBvaW50TGlnaHQ6ZnVuY3Rpb24odCxlLGkpe3RoaXMuYXR0cih7eDp0LHk6ZSx6Oml9KX0sc3BvdExpZ2h0OmZ1bmN0aW9uKHQsZSxpLGEscyxyKXt0aGlzLmF0dHIoe3g6dCx5OmUsejppLHBvaW50c0F0WDphLHBvaW50c0F0WTpzLHBvaW50c0F0WjpyfSl9LG1lcmdlTm9kZTpmdW5jdGlvbih0KXt0aGlzLmF0dHIoXCJpblwiLHQpfX07ZnVuY3Rpb24gcyh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KSYmKHQ9bmV3IFNWRy5BcnJheSh0KSksdC50b1N0cmluZygpLnJlcGxhY2UoL15cXHMrLyxcIlwiKS5yZXBsYWNlKC9cXHMrJC8sXCJcIikucmVwbGFjZSgvXFxzKy9nLFwiIFwiKX1mdW5jdGlvbiByKCl7dmFyIHQ9ZnVuY3Rpb24oKXt9O2Zvcih2YXIgZSBpblwiZnVuY3Rpb25cIj09dHlwZW9mIGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoLTFdJiYodD1hcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXSxBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwoYXJndW1lbnRzLGFyZ3VtZW50cy5sZW5ndGgtMSwxKSksYXJndW1lbnRzKWZvcih2YXIgaSBpbiBhcmd1bWVudHNbZV0pdChhcmd1bWVudHNbZV1baV0saSxhcmd1bWVudHNbZV0pfVtcInJcIixcImdcIixcImJcIixcImFcIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7YVtcIkZ1bmNcIit0LnRvVXBwZXJDYXNlKCldPWZ1bmN0aW9uKHQpe3N3aXRjaCh0aGlzLmF0dHIoXCJ0eXBlXCIsdCksdCl7Y2FzZVwidGFibGVcIjp0aGlzLmF0dHIoXCJ0YWJsZVZhbHVlc1wiLGFyZ3VtZW50c1sxXSk7YnJlYWs7Y2FzZVwibGluZWFyXCI6dGhpcy5hdHRyKFwic2xvcGVcIixhcmd1bWVudHNbMV0pLHRoaXMuYXR0cihcImludGVyY2VwdFwiLGFyZ3VtZW50c1syXSk7YnJlYWs7Y2FzZVwiZ2FtbWFcIjp0aGlzLmF0dHIoXCJhbXBsaXR1ZGVcIixhcmd1bWVudHNbMV0pLHRoaXMuYXR0cihcImV4cG9uZW50XCIsYXJndW1lbnRzWzJdKSx0aGlzLmF0dHIoXCJvZmZzZXRcIixhcmd1bWVudHNbMl0pfX19KSkscihlLChmdW5jdGlvbih0LGUpe3ZhciBpPWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKTtTVkdbaStcIkVmZmVjdFwiXT1TVkcuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxTVkcuY3JlYXRlKFwiZmVcIitpKSksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5yZXN1bHQodGhpcy5hdHRyKFwiaWRcIikrXCJPdXRcIil9LGluaGVyaXQ6U1ZHLkVmZmVjdCxleHRlbmQ6e319KX0pKSxyKGksKGZ1bmN0aW9uKHQsZSl7dmFyIGk9ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpO1NWR1tpK1wiRWZmZWN0XCJdPVNWRy5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLFNWRy5jcmVhdGUoXCJmZVwiK2kpKSx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLnJlc3VsdCh0aGlzLmF0dHIoXCJpZFwiKStcIk91dFwiKX0saW5oZXJpdDpTVkcuUGFyZW50RWZmZWN0LGV4dGVuZDp7fX0pfSkpLHIoYSwoZnVuY3Rpb24odCxlKXt2YXIgaT1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSk7U1ZHW2ldPVNWRy5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLFNWRy5jcmVhdGUoXCJmZVwiK2kpKSx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0saW5oZXJpdDpTVkcuQ2hpbGRFZmZlY3QsZXh0ZW5kOnt9fSl9KSksU1ZHLmV4dGVuZChTVkcuTWVyZ2VFZmZlY3Qse2luOmZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgU1ZHLk1lcmdlTm9kZT90aGlzLmFkZCh0LDApOnRoaXMuYWRkKG5ldyBTVkcuTWVyZ2VOb2RlKHQpLDApLHRoaXN9fSksU1ZHLmV4dGVuZChTVkcuQ29tcG9zaXRlRWZmZWN0LFNWRy5CbGVuZEVmZmVjdCxTVkcuRGlzcGxhY2VtZW50TWFwRWZmZWN0LHtpbjI6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5zZWxlY3QoJ1tyZXN1bHQ9XCInK3RoaXMuYXR0cihcImluMlwiKSsnXCJdJykuZ2V0KDApfHx0aGlzLmF0dHIoXCJpbjJcIik6dGhpcy5hdHRyKFwiaW4yXCIsdCl9fSksU1ZHLmZpbHRlcj17c2VwaWF0b25lOlsuMzQzLC42NjksLjExOSwwLDAsLjI0OSwuNjI2LC4xMywwLDAsLjE3MiwuMzM0LC4xMTEsMCwwLDAsMCwwLDEsMF19fS5jYWxsKHZvaWQgMCksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQscyxyLG8sbixsLGgpe2Zvcih2YXIgYz10LnNsaWNlKHMscnx8aCksZD1vLnNsaWNlKG4sbHx8aCksZz0wLHU9e3BvczpbMCwwXSxzdGFydDpbMCwwXX0scD17cG9zOlswLDBdLHN0YXJ0OlswLDBdfTs7KXtpZihjW2ddPWUuY2FsbCh1LGNbZ10pLGRbZ109ZS5jYWxsKHAsZFtnXSksY1tnXVswXSE9ZFtnXVswXXx8XCJNXCI9PWNbZ11bMF18fFwiQVwiPT1jW2ddWzBdJiYoY1tnXVs0XSE9ZFtnXVs0XXx8Y1tnXVs1XSE9ZFtnXVs1XSk/KEFycmF5LnByb3RvdHlwZS5zcGxpY2UuYXBwbHkoYyxbZywxXS5jb25jYXQoYS5jYWxsKHUsY1tnXSkpKSxBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGQsW2csMV0uY29uY2F0KGEuY2FsbChwLGRbZ10pKSkpOihjW2ddPWkuY2FsbCh1LGNbZ10pLGRbZ109aS5jYWxsKHAsZFtnXSkpLCsrZz09Yy5sZW5ndGgmJmc9PWQubGVuZ3RoKWJyZWFrO2c9PWMubGVuZ3RoJiZjLnB1c2goW1wiQ1wiLHUucG9zWzBdLHUucG9zWzFdLHUucG9zWzBdLHUucG9zWzFdLHUucG9zWzBdLHUucG9zWzFdXSksZz09ZC5sZW5ndGgmJmQucHVzaChbXCJDXCIscC5wb3NbMF0scC5wb3NbMV0scC5wb3NbMF0scC5wb3NbMV0scC5wb3NbMF0scC5wb3NbMV1dKX1yZXR1cm57c3RhcnQ6YyxkZXN0OmR9fWZ1bmN0aW9uIGUodCl7c3dpdGNoKHRbMF0pe2Nhc2VcInpcIjpjYXNlXCJaXCI6dFswXT1cIkxcIix0WzFdPXRoaXMuc3RhcnRbMF0sdFsyXT10aGlzLnN0YXJ0WzFdO2JyZWFrO2Nhc2VcIkhcIjp0WzBdPVwiTFwiLHRbMl09dGhpcy5wb3NbMV07YnJlYWs7Y2FzZVwiVlwiOnRbMF09XCJMXCIsdFsyXT10WzFdLHRbMV09dGhpcy5wb3NbMF07YnJlYWs7Y2FzZVwiVFwiOnRbMF09XCJRXCIsdFszXT10WzFdLHRbNF09dFsyXSx0WzFdPXRoaXMucmVmbGVjdGlvblsxXSx0WzJdPXRoaXMucmVmbGVjdGlvblswXTticmVhaztjYXNlXCJTXCI6dFswXT1cIkNcIix0WzZdPXRbNF0sdFs1XT10WzNdLHRbNF09dFsyXSx0WzNdPXRbMV0sdFsyXT10aGlzLnJlZmxlY3Rpb25bMV0sdFsxXT10aGlzLnJlZmxlY3Rpb25bMF19cmV0dXJuIHR9ZnVuY3Rpb24gaSh0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm4gdGhpcy5wb3M9W3RbZS0yXSx0W2UtMV1dLC0xIT1cIlNDUVRcIi5pbmRleE9mKHRbMF0pJiYodGhpcy5yZWZsZWN0aW9uPVsyKnRoaXMucG9zWzBdLXRbZS00XSwyKnRoaXMucG9zWzFdLXRbZS0zXV0pLHR9ZnVuY3Rpb24gYSh0KXt2YXIgZT1bdF07c3dpdGNoKHRbMF0pe2Nhc2VcIk1cIjpyZXR1cm4gdGhpcy5wb3M9dGhpcy5zdGFydD1bdFsxXSx0WzJdXSxlO2Nhc2VcIkxcIjp0WzVdPXRbM109dFsxXSx0WzZdPXRbNF09dFsyXSx0WzFdPXRoaXMucG9zWzBdLHRbMl09dGhpcy5wb3NbMV07YnJlYWs7Y2FzZVwiUVwiOnRbNl09dFs0XSx0WzVdPXRbM10sdFs0XT0xKnRbNF0vMysyKnRbMl0vMyx0WzNdPTEqdFszXS8zKzIqdFsxXS8zLHRbMl09MSp0aGlzLnBvc1sxXS8zKzIqdFsyXS8zLHRbMV09MSp0aGlzLnBvc1swXS8zKzIqdFsxXS8zO2JyZWFrO2Nhc2VcIkFcIjplPWZ1bmN0aW9uKHQsZSl7dmFyIGksYSxzLHIsbyxuLGwsaCxjLGQsZyx1LHAsZix4LGIsdixtLHksdyxrLEEsUyxDLEwsUCxJPU1hdGguYWJzKGVbMV0pLFQ9TWF0aC5hYnMoZVsyXSksTT1lWzNdJTM2MCxYPWVbNF0sej1lWzVdLEU9ZVs2XSxZPWVbN10sRj1uZXcgU1ZHLlBvaW50KHQpLFI9bmV3IFNWRy5Qb2ludChFLFkpLEQ9W107aWYoMD09PUl8fDA9PT1UfHxGLng9PT1SLngmJkYueT09PVIueSlyZXR1cm5bW1wiQ1wiLEYueCxGLnksUi54LFIueSxSLngsUi55XV07aT1uZXcgU1ZHLlBvaW50KChGLngtUi54KS8yLChGLnktUi55KS8yKS50cmFuc2Zvcm0oKG5ldyBTVkcuTWF0cml4KS5yb3RhdGUoTSkpLChhPWkueCppLngvKEkqSSkraS55KmkueS8oVCpUKSk+MSYmKEkqPWE9TWF0aC5zcXJ0KGEpLFQqPWEpO3M9KG5ldyBTVkcuTWF0cml4KS5yb3RhdGUoTSkuc2NhbGUoMS9JLDEvVCkucm90YXRlKC1NKSxGPUYudHJhbnNmb3JtKHMpLFI9Ui50cmFuc2Zvcm0ocykscj1bUi54LUYueCxSLnktRi55XSxuPXJbMF0qclswXStyWzFdKnJbMV0sbz1NYXRoLnNxcnQobiksclswXS89byxyWzFdLz1vLGw9bjw0P01hdGguc3FydCgxLW4vNCk6MCxYPT09eiYmKGwqPS0xKTtoPW5ldyBTVkcuUG9pbnQoKFIueCtGLngpLzIrbCotclsxXSwoUi55K0YueSkvMitsKnJbMF0pLGM9bmV3IFNWRy5Qb2ludChGLngtaC54LEYueS1oLnkpLGQ9bmV3IFNWRy5Qb2ludChSLngtaC54LFIueS1oLnkpLGc9TWF0aC5hY29zKGMueC9NYXRoLnNxcnQoYy54KmMueCtjLnkqYy55KSksYy55PDAmJihnKj0tMSk7dT1NYXRoLmFjb3MoZC54L01hdGguc3FydChkLngqZC54K2QueSpkLnkpKSxkLnk8MCYmKHUqPS0xKTt6JiZnPnUmJih1Kz0yKk1hdGguUEkpOyF6JiZnPHUmJih1LT0yKk1hdGguUEkpO2ZvcihmPU1hdGguY2VpbCgyKk1hdGguYWJzKGctdSkvTWF0aC5QSSksYj1bXSx2PWcscD0odS1nKS9mLHg9NCpNYXRoLnRhbihwLzQpLzMsaz0wO2s8PWY7aysrKXk9TWF0aC5jb3ModiksbT1NYXRoLnNpbih2KSx3PW5ldyBTVkcuUG9pbnQoaC54K3ksaC55K20pLGJba109W25ldyBTVkcuUG9pbnQody54K3gqbSx3LnkteCp5KSx3LG5ldyBTVkcuUG9pbnQody54LXgqbSx3LnkreCp5KV0sdis9cDtmb3IoYlswXVswXT1iWzBdWzFdLmNsb25lKCksYltiLmxlbmd0aC0xXVsyXT1iW2IubGVuZ3RoLTFdWzFdLmNsb25lKCkscz0obmV3IFNWRy5NYXRyaXgpLnJvdGF0ZShNKS5zY2FsZShJLFQpLnJvdGF0ZSgtTSksaz0wLEE9Yi5sZW5ndGg7azxBO2srKyliW2tdWzBdPWJba11bMF0udHJhbnNmb3JtKHMpLGJba11bMV09YltrXVsxXS50cmFuc2Zvcm0ocyksYltrXVsyXT1iW2tdWzJdLnRyYW5zZm9ybShzKTtmb3Ioaz0xLEE9Yi5sZW5ndGg7azxBO2srKylTPSh3PWJbay0xXVsyXSkueCxDPXcueSxMPSh3PWJba11bMF0pLngsUD13LnksRT0odz1iW2tdWzFdKS54LFk9dy55LEQucHVzaChbXCJDXCIsUyxDLEwsUCxFLFldKTtyZXR1cm4gRH0odGhpcy5wb3MsdCksdD1lWzBdfXJldHVybiB0WzBdPVwiQ1wiLHRoaXMucG9zPVt0WzVdLHRbNl1dLHRoaXMucmVmbGVjdGlvbj1bMip0WzVdLXRbM10sMip0WzZdLXRbNF1dLGV9ZnVuY3Rpb24gcyh0LGUpe2lmKCExPT09ZSlyZXR1cm4hMTtmb3IodmFyIGk9ZSxhPXQubGVuZ3RoO2k8YTsrK2kpaWYoXCJNXCI9PXRbaV1bMF0pcmV0dXJuIGk7cmV0dXJuITF9U1ZHLmV4dGVuZChTVkcuUGF0aEFycmF5LHttb3JwaDpmdW5jdGlvbihlKXtmb3IodmFyIGk9dGhpcy52YWx1ZSxhPXRoaXMucGFyc2UoZSkscj0wLG89MCxuPSExLGw9ITE7ITEhPT1yfHwhMSE9PW87KXt2YXIgaDtuPXMoaSwhMSE9PXImJnIrMSksbD1zKGEsITEhPT1vJiZvKzEpLCExPT09ciYmKHI9MD09KGg9bmV3IFNWRy5QYXRoQXJyYXkoYy5zdGFydCkuYmJveCgpKS5oZWlnaHR8fDA9PWgud2lkdGg/aS5wdXNoKGlbMF0pLTE6aS5wdXNoKFtcIk1cIixoLngraC53aWR0aC8yLGgueStoLmhlaWdodC8yXSktMSksITE9PT1vJiYobz0wPT0oaD1uZXcgU1ZHLlBhdGhBcnJheShjLmRlc3QpLmJib3goKSkuaGVpZ2h0fHwwPT1oLndpZHRoP2EucHVzaChhWzBdKS0xOmEucHVzaChbXCJNXCIsaC54K2gud2lkdGgvMixoLnkraC5oZWlnaHQvMl0pLTEpO3ZhciBjPXQoaSxyLG4sYSxvLGwpO2k9aS5zbGljZSgwLHIpLmNvbmNhdChjLnN0YXJ0LCExPT09bj9bXTppLnNsaWNlKG4pKSxhPWEuc2xpY2UoMCxvKS5jb25jYXQoYy5kZXN0LCExPT09bD9bXTphLnNsaWNlKGwpKSxyPSExIT09biYmcitjLnN0YXJ0Lmxlbmd0aCxvPSExIT09bCYmbytjLmRlc3QubGVuZ3RofXJldHVybiB0aGlzLnZhbHVlPWksdGhpcy5kZXN0aW5hdGlvbj1uZXcgU1ZHLlBhdGhBcnJheSx0aGlzLmRlc3RpbmF0aW9uLnZhbHVlPWEsdGhpc319KX0oKSxcbi8qISBzdmcuZHJhZ2dhYmxlLmpzIC0gdjIuMi4yIC0gMjAxOS0wMS0wOFxuKiBodHRwczovL2dpdGh1Yi5jb20vc3ZnZG90anMvc3ZnLmRyYWdnYWJsZS5qc1xuKiBDb3B5cmlnaHQgKGMpIDIwMTkgV291dCBGaWVyZW5zOyBMaWNlbnNlZCBNSVQgKi9cbmZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0LnJlbWVtYmVyKFwiX2RyYWdnYWJsZVwiLHRoaXMpLHRoaXMuZWw9dH10LnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpczt0aGlzLmNvbnN0cmFpbnQ9dCx0aGlzLnZhbHVlPWUsdGhpcy5lbC5vbihcIm1vdXNlZG93bi5kcmFnXCIsKGZ1bmN0aW9uKHQpe2kuc3RhcnQodCl9KSksdGhpcy5lbC5vbihcInRvdWNoc3RhcnQuZHJhZ1wiLChmdW5jdGlvbih0KXtpLnN0YXJ0KHQpfSkpfSx0LnByb3RvdHlwZS50cmFuc2Zvcm1Qb2ludD1mdW5jdGlvbih0LGUpe3ZhciBpPSh0PXR8fHdpbmRvdy5ldmVudCkuY2hhbmdlZFRvdWNoZXMmJnQuY2hhbmdlZFRvdWNoZXNbMF18fHQ7cmV0dXJuIHRoaXMucC54PWkuY2xpZW50WC0oZXx8MCksdGhpcy5wLnk9aS5jbGllbnRZLHRoaXMucC5tYXRyaXhUcmFuc2Zvcm0odGhpcy5tKX0sdC5wcm90b3R5cGUuZ2V0QkJveD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZWwuYmJveCgpO3JldHVybiB0aGlzLmVsIGluc3RhbmNlb2YgU1ZHLk5lc3RlZCYmKHQ9dGhpcy5lbC5yYm94KCkpLCh0aGlzLmVsIGluc3RhbmNlb2YgU1ZHLkd8fHRoaXMuZWwgaW5zdGFuY2VvZiBTVkcuVXNlfHx0aGlzLmVsIGluc3RhbmNlb2YgU1ZHLk5lc3RlZCkmJih0Lng9dGhpcy5lbC54KCksdC55PXRoaXMuZWwueSgpKSx0fSx0LnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbih0KXtpZihcImNsaWNrXCIhPXQudHlwZSYmXCJtb3VzZWRvd25cIiE9dC50eXBlJiZcIm1vdXNlbW92ZVwiIT10LnR5cGV8fDE9PSh0LndoaWNofHx0LmJ1dHRvbnMpKXt2YXIgZT10aGlzO2lmKHRoaXMuZWwuZmlyZShcImJlZm9yZWRyYWdcIix7ZXZlbnQ6dCxoYW5kbGVyOnRoaXN9KSwhdGhpcy5lbC5ldmVudCgpLmRlZmF1bHRQcmV2ZW50ZWQpe3QucHJldmVudERlZmF1bHQoKSx0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMucGFyZW50PXRoaXMucGFyZW50fHx0aGlzLmVsLnBhcmVudChTVkcuTmVzdGVkKXx8dGhpcy5lbC5wYXJlbnQoU1ZHLkRvYyksdGhpcy5wPXRoaXMucGFyZW50Lm5vZGUuY3JlYXRlU1ZHUG9pbnQoKSx0aGlzLm09dGhpcy5lbC5ub2RlLmdldFNjcmVlbkNUTSgpLmludmVyc2UoKTt2YXIgaSxhPXRoaXMuZ2V0QkJveCgpO2lmKHRoaXMuZWwgaW5zdGFuY2VvZiBTVkcuVGV4dClzd2l0Y2goaT10aGlzLmVsLm5vZGUuZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCksdGhpcy5lbC5hdHRyKFwidGV4dC1hbmNob3JcIikpe2Nhc2VcIm1pZGRsZVwiOmkvPTI7YnJlYWs7Y2FzZVwic3RhcnRcIjppPTB9dGhpcy5zdGFydFBvaW50cz17cG9pbnQ6dGhpcy50cmFuc2Zvcm1Qb2ludCh0LGkpLGJveDphLHRyYW5zZm9ybTp0aGlzLmVsLnRyYW5zZm9ybSgpfSxTVkcub24od2luZG93LFwibW91c2Vtb3ZlLmRyYWdcIiwoZnVuY3Rpb24odCl7ZS5kcmFnKHQpfSkpLFNWRy5vbih3aW5kb3csXCJ0b3VjaG1vdmUuZHJhZ1wiLChmdW5jdGlvbih0KXtlLmRyYWcodCl9KSksU1ZHLm9uKHdpbmRvdyxcIm1vdXNldXAuZHJhZ1wiLChmdW5jdGlvbih0KXtlLmVuZCh0KX0pKSxTVkcub24od2luZG93LFwidG91Y2hlbmQuZHJhZ1wiLChmdW5jdGlvbih0KXtlLmVuZCh0KX0pKSx0aGlzLmVsLmZpcmUoXCJkcmFnc3RhcnRcIix7ZXZlbnQ6dCxwOnRoaXMuc3RhcnRQb2ludHMucG9pbnQsbTp0aGlzLm0saGFuZGxlcjp0aGlzfSl9fX0sdC5wcm90b3R5cGUuZHJhZz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldEJCb3goKSxpPXRoaXMudHJhbnNmb3JtUG9pbnQodCksYT10aGlzLnN0YXJ0UG9pbnRzLmJveC54K2kueC10aGlzLnN0YXJ0UG9pbnRzLnBvaW50Lngscz10aGlzLnN0YXJ0UG9pbnRzLmJveC55K2kueS10aGlzLnN0YXJ0UG9pbnRzLnBvaW50Lnkscj10aGlzLmNvbnN0cmFpbnQsbz1pLngtdGhpcy5zdGFydFBvaW50cy5wb2ludC54LG49aS55LXRoaXMuc3RhcnRQb2ludHMucG9pbnQueTtpZih0aGlzLmVsLmZpcmUoXCJkcmFnbW92ZVwiLHtldmVudDp0LHA6aSxtOnRoaXMubSxoYW5kbGVyOnRoaXN9KSx0aGlzLmVsLmV2ZW50KCkuZGVmYXVsdFByZXZlbnRlZClyZXR1cm4gaTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiByKXt2YXIgbD1yLmNhbGwodGhpcy5lbCxhLHMsdGhpcy5tKTtcImJvb2xlYW5cIj09dHlwZW9mIGwmJihsPXt4OmwseTpsfSksITA9PT1sLng/dGhpcy5lbC54KGEpOiExIT09bC54JiZ0aGlzLmVsLngobC54KSwhMD09PWwueT90aGlzLmVsLnkocyk6ITEhPT1sLnkmJnRoaXMuZWwueShsLnkpfWVsc2VcIm9iamVjdFwiPT10eXBlb2YgciYmKG51bGwhPXIubWluWCYmYTxyLm1pblg/bz0oYT1yLm1pblgpLXRoaXMuc3RhcnRQb2ludHMuYm94Lng6bnVsbCE9ci5tYXhYJiZhPnIubWF4WC1lLndpZHRoJiYobz0oYT1yLm1heFgtZS53aWR0aCktdGhpcy5zdGFydFBvaW50cy5ib3gueCksbnVsbCE9ci5taW5ZJiZzPHIubWluWT9uPShzPXIubWluWSktdGhpcy5zdGFydFBvaW50cy5ib3gueTpudWxsIT1yLm1heFkmJnM+ci5tYXhZLWUuaGVpZ2h0JiYobj0ocz1yLm1heFktZS5oZWlnaHQpLXRoaXMuc3RhcnRQb2ludHMuYm94LnkpLG51bGwhPXIuc25hcFRvR3JpZCYmKGEtPWElci5zbmFwVG9HcmlkLHMtPXMlci5zbmFwVG9HcmlkLG8tPW8lci5zbmFwVG9HcmlkLG4tPW4lci5zbmFwVG9HcmlkKSx0aGlzLmVsIGluc3RhbmNlb2YgU1ZHLkc/dGhpcy5lbC5tYXRyaXgodGhpcy5zdGFydFBvaW50cy50cmFuc2Zvcm0pLnRyYW5zZm9ybSh7eDpvLHk6bn0sITApOnRoaXMuZWwubW92ZShhLHMpKTtyZXR1cm4gaX0sdC5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZHJhZyh0KTt0aGlzLmVsLmZpcmUoXCJkcmFnZW5kXCIse2V2ZW50OnQscDplLG06dGhpcy5tLGhhbmRsZXI6dGhpc30pLFNWRy5vZmYod2luZG93LFwibW91c2Vtb3ZlLmRyYWdcIiksU1ZHLm9mZih3aW5kb3csXCJ0b3VjaG1vdmUuZHJhZ1wiKSxTVkcub2ZmKHdpbmRvdyxcIm1vdXNldXAuZHJhZ1wiKSxTVkcub2ZmKHdpbmRvdyxcInRvdWNoZW5kLmRyYWdcIil9LFNWRy5leHRlbmQoU1ZHLkVsZW1lbnQse2RyYWdnYWJsZTpmdW5jdGlvbihlLGkpe1wiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJlwib2JqZWN0XCIhPXR5cGVvZiBlfHwoaT1lLGU9ITApO3ZhciBhPXRoaXMucmVtZW1iZXIoXCJfZHJhZ2dhYmxlXCIpfHxuZXcgdCh0aGlzKTtyZXR1cm4oZT12b2lkIDA9PT1lfHxlKT9hLmluaXQoaXx8e30sZSk6KHRoaXMub2ZmKFwibW91c2Vkb3duLmRyYWdcIiksdGhpcy5vZmYoXCJ0b3VjaHN0YXJ0LmRyYWdcIikpLHRoaXN9fSl9LmNhbGwodm9pZCAwKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5lbD10LHQucmVtZW1iZXIoXCJfc2VsZWN0SGFuZGxlclwiLHRoaXMpLHRoaXMucG9pbnRTZWxlY3Rpb249e2lzU2VsZWN0ZWQ6ITF9LHRoaXMucmVjdFNlbGVjdGlvbj17aXNTZWxlY3RlZDohMX0sdGhpcy5wb2ludHNMaXN0PXtsdDpbMCwwXSxydDpbXCJ3aWR0aFwiLDBdLHJiOltcIndpZHRoXCIsXCJoZWlnaHRcIl0sbGI6WzAsXCJoZWlnaHRcIl0sdDpbXCJ3aWR0aFwiLDBdLHI6W1wid2lkdGhcIixcImhlaWdodFwiXSxiOltcIndpZHRoXCIsXCJoZWlnaHRcIl0sbDpbMCxcImhlaWdodFwiXX0sdGhpcy5wb2ludENvb3JkPWZ1bmN0aW9uKHQsZSxpKXt2YXIgYT1cInN0cmluZ1wiIT10eXBlb2YgdD90OmVbdF07cmV0dXJuIGk/YS8yOmF9LHRoaXMucG9pbnRDb29yZHM9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnBvaW50c0xpc3RbdF07cmV0dXJue3g6dGhpcy5wb2ludENvb3JkKGlbMF0sZSxcInRcIj09PXR8fFwiYlwiPT09dCkseTp0aGlzLnBvaW50Q29vcmQoaVsxXSxlLFwiclwiPT09dHx8XCJsXCI9PT10KX19fXQucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmVsLmJib3goKTt0aGlzLm9wdGlvbnM9e307dmFyIGE9dGhpcy5lbC5zZWxlY3RpemUuZGVmYXVsdHMucG9pbnRzO2Zvcih2YXIgcyBpbiB0aGlzLmVsLnNlbGVjdGl6ZS5kZWZhdWx0cyl0aGlzLm9wdGlvbnNbc109dGhpcy5lbC5zZWxlY3RpemUuZGVmYXVsdHNbc10sdm9pZCAwIT09ZVtzXSYmKHRoaXMub3B0aW9uc1tzXT1lW3NdKTt2YXIgcj1bXCJwb2ludHNcIixcInBvaW50c0V4Y2x1ZGVcIl07Zm9yKHZhciBzIGluIHIpe3ZhciBvPXRoaXMub3B0aW9uc1tyW3NdXTtcInN0cmluZ1wiPT10eXBlb2Ygbz9vPW8ubGVuZ3RoPjA/by5zcGxpdCgvXFxzKixcXHMqL2kpOltdOlwiYm9vbGVhblwiPT10eXBlb2YgbyYmXCJwb2ludHNcIj09PXJbc10mJihvPW8/YTpbXSksdGhpcy5vcHRpb25zW3Jbc11dPW99dGhpcy5vcHRpb25zLnBvaW50cz1bYSx0aGlzLm9wdGlvbnMucG9pbnRzXS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gZS5pbmRleE9mKHQpPi0xfSkpfSkpLHRoaXMub3B0aW9ucy5wb2ludHM9W3RoaXMub3B0aW9ucy5wb2ludHMsdGhpcy5vcHRpb25zLnBvaW50c0V4Y2x1ZGVdLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmluZGV4T2YodCk8MH0pKX0pKSx0aGlzLnBhcmVudD10aGlzLmVsLnBhcmVudCgpLHRoaXMubmVzdGVkPXRoaXMubmVzdGVkfHx0aGlzLnBhcmVudC5ncm91cCgpLHRoaXMubmVzdGVkLm1hdHJpeChuZXcgU1ZHLk1hdHJpeCh0aGlzLmVsKS50cmFuc2xhdGUoaS54LGkueSkpLHRoaXMub3B0aW9ucy5kZWVwU2VsZWN0JiYtMSE9PVtcImxpbmVcIixcInBvbHlsaW5lXCIsXCJwb2x5Z29uXCJdLmluZGV4T2YodGhpcy5lbC50eXBlKT90aGlzLnNlbGVjdFBvaW50cyh0KTp0aGlzLnNlbGVjdFJlY3QodCksdGhpcy5vYnNlcnZlKCksdGhpcy5jbGVhbnVwKCl9LHQucHJvdG90eXBlLnNlbGVjdFBvaW50cz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wb2ludFNlbGVjdGlvbi5pc1NlbGVjdGVkPXQsdGhpcy5wb2ludFNlbGVjdGlvbi5zZXR8fCh0aGlzLnBvaW50U2VsZWN0aW9uLnNldD10aGlzLnBhcmVudC5zZXQoKSx0aGlzLmRyYXdQb2ludHMoKSksdGhpc30sdC5wcm90b3R5cGUuZ2V0UG9pbnRBcnJheT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZWwuYmJveCgpO3JldHVybiB0aGlzLmVsLmFycmF5KCkudmFsdWVPZigpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuW2VbMF0tdC54LGVbMV0tdC55XX0pKX0sdC5wcm90b3R5cGUuZHJhd1BvaW50cz1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9dGhpcy5nZXRQb2ludEFycmF5KCksaT0wLGE9ZS5sZW5ndGg7aTxhOysraSl7dmFyIHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGkpeyhpPWl8fHdpbmRvdy5ldmVudCkucHJldmVudERlZmF1bHQ/aS5wcmV2ZW50RGVmYXVsdCgpOmkucmV0dXJuVmFsdWU9ITEsaS5zdG9wUHJvcGFnYXRpb24oKTt2YXIgYT1pLnBhZ2VYfHxpLnRvdWNoZXNbMF0ucGFnZVgscz1pLnBhZ2VZfHxpLnRvdWNoZXNbMF0ucGFnZVk7dC5lbC5maXJlKFwicG9pbnRcIix7eDphLHk6cyxpOmUsZXZlbnQ6aX0pfX0oaSkscj10aGlzLmRyYXdQb2ludChlW2ldWzBdLGVbaV1bMV0pLmFkZENsYXNzKHRoaXMub3B0aW9ucy5jbGFzc1BvaW50cykuYWRkQ2xhc3ModGhpcy5vcHRpb25zLmNsYXNzUG9pbnRzK1wiX3BvaW50XCIpLm9uKFwidG91Y2hzdGFydFwiLHMpLm9uKFwibW91c2Vkb3duXCIscyk7dGhpcy5wb2ludFNlbGVjdGlvbi5zZXQuYWRkKHIpfX0sdC5wcm90b3R5cGUuZHJhd1BvaW50PWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5vcHRpb25zLnBvaW50VHlwZTtzd2l0Y2goaSl7Y2FzZVwiY2lyY2xlXCI6cmV0dXJuIHRoaXMuZHJhd0NpcmNsZSh0LGUpO2Nhc2VcInJlY3RcIjpyZXR1cm4gdGhpcy5kcmF3UmVjdCh0LGUpO2RlZmF1bHQ6aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgaSlyZXR1cm4gaS5jYWxsKHRoaXMsdCxlKTt0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIFwiK2krXCIgcG9pbnQgdHlwZSFcIil9fSx0LnByb3RvdHlwZS5kcmF3Q2lyY2xlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMubmVzdGVkLmNpcmNsZSh0aGlzLm9wdGlvbnMucG9pbnRTaXplKS5jZW50ZXIodCxlKX0sdC5wcm90b3R5cGUuZHJhd1JlY3Q9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5uZXN0ZWQucmVjdCh0aGlzLm9wdGlvbnMucG9pbnRTaXplLHRoaXMub3B0aW9ucy5wb2ludFNpemUpLmNlbnRlcih0LGUpfSx0LnByb3RvdHlwZS51cGRhdGVQb2ludFNlbGVjdGlvbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0UG9pbnRBcnJheSgpO3RoaXMucG9pbnRTZWxlY3Rpb24uc2V0LmVhY2goKGZ1bmN0aW9uKGUpe3RoaXMuY3goKT09PXRbZV1bMF0mJnRoaXMuY3koKT09PXRbZV1bMV18fHRoaXMuY2VudGVyKHRbZV1bMF0sdFtlXVsxXSl9KSl9LHQucHJvdG90eXBlLnVwZGF0ZVJlY3RTZWxlY3Rpb249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5lbC5iYm94KCk7aWYodGhpcy5yZWN0U2VsZWN0aW9uLnNldC5nZXQoMCkuYXR0cih7d2lkdGg6ZS53aWR0aCxoZWlnaHQ6ZS5oZWlnaHR9KSx0aGlzLm9wdGlvbnMucG9pbnRzLmxlbmd0aCYmdGhpcy5vcHRpb25zLnBvaW50cy5tYXAoKGZ1bmN0aW9uKGksYSl7dmFyIHM9dC5wb2ludENvb3JkcyhpLGUpO3QucmVjdFNlbGVjdGlvbi5zZXQuZ2V0KGErMSkuY2VudGVyKHMueCxzLnkpfSkpLHRoaXMub3B0aW9ucy5yb3RhdGlvblBvaW50KXt2YXIgaT10aGlzLnJlY3RTZWxlY3Rpb24uc2V0Lmxlbmd0aCgpO3RoaXMucmVjdFNlbGVjdGlvbi5zZXQuZ2V0KGktMSkuY2VudGVyKGUud2lkdGgvMiwyMCl9fSx0LnByb3RvdHlwZS5zZWxlY3RSZWN0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLmVsLmJib3goKTtmdW5jdGlvbiBhKHQpe3JldHVybiBmdW5jdGlvbihpKXsoaT1pfHx3aW5kb3cuZXZlbnQpLnByZXZlbnREZWZhdWx0P2kucHJldmVudERlZmF1bHQoKTppLnJldHVyblZhbHVlPSExLGkuc3RvcFByb3BhZ2F0aW9uKCk7dmFyIGE9aS5wYWdlWHx8aS50b3VjaGVzWzBdLnBhZ2VYLHM9aS5wYWdlWXx8aS50b3VjaGVzWzBdLnBhZ2VZO2UuZWwuZmlyZSh0LHt4OmEseTpzLGV2ZW50Oml9KX19aWYodGhpcy5yZWN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQ9dCx0aGlzLnJlY3RTZWxlY3Rpb24uc2V0PXRoaXMucmVjdFNlbGVjdGlvbi5zZXR8fHRoaXMucGFyZW50LnNldCgpLHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZ2V0KDApfHx0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmFkZCh0aGlzLm5lc3RlZC5yZWN0KGkud2lkdGgsaS5oZWlnaHQpLmFkZENsYXNzKHRoaXMub3B0aW9ucy5jbGFzc1JlY3QpKSx0aGlzLm9wdGlvbnMucG9pbnRzLmxlbmd0aCYmdGhpcy5yZWN0U2VsZWN0aW9uLnNldC5sZW5ndGgoKTwyKXt0aGlzLm9wdGlvbnMucG9pbnRzLm1hcCgoZnVuY3Rpb24odCxzKXt2YXIgcj1lLnBvaW50Q29vcmRzKHQsaSksbz1lLmRyYXdQb2ludChyLngsci55KS5hdHRyKFwiY2xhc3NcIixlLm9wdGlvbnMuY2xhc3NQb2ludHMrXCJfXCIrdCkub24oXCJtb3VzZWRvd25cIixhKHQpKS5vbihcInRvdWNoc3RhcnRcIixhKHQpKTtlLnJlY3RTZWxlY3Rpb24uc2V0LmFkZChvKX0pKSx0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmVhY2goKGZ1bmN0aW9uKCl7dGhpcy5hZGRDbGFzcyhlLm9wdGlvbnMuY2xhc3NQb2ludHMpfSkpfWlmKHRoaXMub3B0aW9ucy5yb3RhdGlvblBvaW50JiYodGhpcy5vcHRpb25zLnBvaW50cyYmIXRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZ2V0KDkpfHwhdGhpcy5vcHRpb25zLnBvaW50cyYmIXRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZ2V0KDEpKSl7dmFyIHM9ZnVuY3Rpb24odCl7KHQ9dHx8d2luZG93LmV2ZW50KS5wcmV2ZW50RGVmYXVsdD90LnByZXZlbnREZWZhdWx0KCk6dC5yZXR1cm5WYWx1ZT0hMSx0LnN0b3BQcm9wYWdhdGlvbigpO3ZhciBpPXQucGFnZVh8fHQudG91Y2hlc1swXS5wYWdlWCxhPXQucGFnZVl8fHQudG91Y2hlc1swXS5wYWdlWTtlLmVsLmZpcmUoXCJyb3RcIix7eDppLHk6YSxldmVudDp0fSl9LHI9dGhpcy5kcmF3UG9pbnQoaS53aWR0aC8yLDIwKS5hdHRyKFwiY2xhc3NcIix0aGlzLm9wdGlvbnMuY2xhc3NQb2ludHMrXCJfcm90XCIpLm9uKFwidG91Y2hzdGFydFwiLHMpLm9uKFwibW91c2Vkb3duXCIscyk7dGhpcy5yZWN0U2VsZWN0aW9uLnNldC5hZGQocil9fSx0LnByb3RvdHlwZS5oYW5kbGVyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbC5iYm94KCk7dGhpcy5uZXN0ZWQubWF0cml4KG5ldyBTVkcuTWF0cml4KHRoaXMuZWwpLnRyYW5zbGF0ZSh0LngsdC55KSksdGhpcy5yZWN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQmJnRoaXMudXBkYXRlUmVjdFNlbGVjdGlvbigpLHRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZCYmdGhpcy51cGRhdGVQb2ludFNlbGVjdGlvbigpfSx0LnByb3RvdHlwZS5vYnNlcnZlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZihNdXRhdGlvbk9ic2VydmVyKWlmKHRoaXMucmVjdFNlbGVjdGlvbi5pc1NlbGVjdGVkfHx0aGlzLnBvaW50U2VsZWN0aW9uLmlzU2VsZWN0ZWQpdGhpcy5vYnNlcnZlckluc3Q9dGhpcy5vYnNlcnZlckluc3R8fG5ldyBNdXRhdGlvbk9ic2VydmVyKChmdW5jdGlvbigpe3QuaGFuZGxlcigpfSkpLHRoaXMub2JzZXJ2ZXJJbnN0Lm9ic2VydmUodGhpcy5lbC5ub2RlLHthdHRyaWJ1dGVzOiEwfSk7ZWxzZSB0cnl7dGhpcy5vYnNlcnZlckluc3QuZGlzY29ubmVjdCgpLGRlbGV0ZSB0aGlzLm9ic2VydmVySW5zdH1jYXRjaCh0KXt9ZWxzZSB0aGlzLmVsLm9mZihcIkRPTUF0dHJNb2RpZmllZC5zZWxlY3RcIiksKHRoaXMucmVjdFNlbGVjdGlvbi5pc1NlbGVjdGVkfHx0aGlzLnBvaW50U2VsZWN0aW9uLmlzU2VsZWN0ZWQpJiZ0aGlzLmVsLm9uKFwiRE9NQXR0ck1vZGlmaWVkLnNlbGVjdFwiLChmdW5jdGlvbigpe3QuaGFuZGxlcigpfSkpfSx0LnByb3RvdHlwZS5jbGVhbnVwPWZ1bmN0aW9uKCl7IXRoaXMucmVjdFNlbGVjdGlvbi5pc1NlbGVjdGVkJiZ0aGlzLnJlY3RTZWxlY3Rpb24uc2V0JiYodGhpcy5yZWN0U2VsZWN0aW9uLnNldC5lYWNoKChmdW5jdGlvbigpe3RoaXMucmVtb3ZlKCl9KSksdGhpcy5yZWN0U2VsZWN0aW9uLnNldC5jbGVhcigpLGRlbGV0ZSB0aGlzLnJlY3RTZWxlY3Rpb24uc2V0KSwhdGhpcy5wb2ludFNlbGVjdGlvbi5pc1NlbGVjdGVkJiZ0aGlzLnBvaW50U2VsZWN0aW9uLnNldCYmKHRoaXMucG9pbnRTZWxlY3Rpb24uc2V0LmVhY2goKGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmUoKX0pKSx0aGlzLnBvaW50U2VsZWN0aW9uLnNldC5jbGVhcigpLGRlbGV0ZSB0aGlzLnBvaW50U2VsZWN0aW9uLnNldCksdGhpcy5wb2ludFNlbGVjdGlvbi5pc1NlbGVjdGVkfHx0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZHx8KHRoaXMubmVzdGVkLnJlbW92ZSgpLGRlbGV0ZSB0aGlzLm5lc3RlZCl9LFNWRy5leHRlbmQoU1ZHLkVsZW1lbnQse3NlbGVjdGl6ZTpmdW5jdGlvbihlLGkpe3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiBlJiYoaT1lLGU9ITApLCh0aGlzLnJlbWVtYmVyKFwiX3NlbGVjdEhhbmRsZXJcIil8fG5ldyB0KHRoaXMpKS5pbml0KHZvaWQgMD09PWV8fGUsaXx8e30pLHRoaXN9fSksU1ZHLkVsZW1lbnQucHJvdG90eXBlLnNlbGVjdGl6ZS5kZWZhdWx0cz17cG9pbnRzOltcImx0XCIsXCJydFwiLFwicmJcIixcImxiXCIsXCJ0XCIsXCJyXCIsXCJiXCIsXCJsXCJdLHBvaW50c0V4Y2x1ZGU6W10sY2xhc3NSZWN0Olwic3ZnX3NlbGVjdF9ib3VuZGluZ1JlY3RcIixjbGFzc1BvaW50czpcInN2Z19zZWxlY3RfcG9pbnRzXCIscG9pbnRTaXplOjcscm90YXRpb25Qb2ludDohMCxkZWVwU2VsZWN0OiExLHBvaW50VHlwZTpcImNpcmNsZVwifX0oKSxmdW5jdGlvbigpeyhmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dC5yZW1lbWJlcihcIl9yZXNpemVIYW5kbGVyXCIsdGhpcyksdGhpcy5lbD10LHRoaXMucGFyYW1ldGVycz17fSx0aGlzLmxhc3RVcGRhdGVDYWxsPW51bGwsdGhpcy5wPXQuZG9jKCkubm9kZS5jcmVhdGVTVkdQb2ludCgpfXQucHJvdG90eXBlLnRyYW5zZm9ybVBvaW50PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5wLng9dC0odGhpcy5vZmZzZXQueC13aW5kb3cucGFnZVhPZmZzZXQpLHRoaXMucC55PWUtKHRoaXMub2Zmc2V0Lnktd2luZG93LnBhZ2VZT2Zmc2V0KSx0aGlzLnAubWF0cml4VHJhbnNmb3JtKGl8fHRoaXMubSl9LHQucHJvdG90eXBlLl9leHRyYWN0UG9zaXRpb249ZnVuY3Rpb24odCl7cmV0dXJue3g6bnVsbCE9dC5jbGllbnRYP3QuY2xpZW50WDp0LnRvdWNoZXNbMF0uY2xpZW50WCx5Om51bGwhPXQuY2xpZW50WT90LmNsaWVudFk6dC50b3VjaGVzWzBdLmNsaWVudFl9fSx0LnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYodGhpcy5zdG9wKCksXCJzdG9wXCIhPT10KXtmb3IodmFyIGkgaW4gdGhpcy5vcHRpb25zPXt9LHRoaXMuZWwucmVzaXplLmRlZmF1bHRzKXRoaXMub3B0aW9uc1tpXT10aGlzLmVsLnJlc2l6ZS5kZWZhdWx0c1tpXSx2b2lkIDAhPT10W2ldJiYodGhpcy5vcHRpb25zW2ldPXRbaV0pO3RoaXMuZWwub24oXCJsdC5yZXNpemVcIiwoZnVuY3Rpb24odCl7ZS5yZXNpemUodHx8d2luZG93LmV2ZW50KX0pKSx0aGlzLmVsLm9uKFwicnQucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbihcInJiLnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oXCJsYi5yZXNpemVcIiwoZnVuY3Rpb24odCl7ZS5yZXNpemUodHx8d2luZG93LmV2ZW50KX0pKSx0aGlzLmVsLm9uKFwidC5yZXNpemVcIiwoZnVuY3Rpb24odCl7ZS5yZXNpemUodHx8d2luZG93LmV2ZW50KX0pKSx0aGlzLmVsLm9uKFwici5yZXNpemVcIiwoZnVuY3Rpb24odCl7ZS5yZXNpemUodHx8d2luZG93LmV2ZW50KX0pKSx0aGlzLmVsLm9uKFwiYi5yZXNpemVcIiwoZnVuY3Rpb24odCl7ZS5yZXNpemUodHx8d2luZG93LmV2ZW50KX0pKSx0aGlzLmVsLm9uKFwibC5yZXNpemVcIiwoZnVuY3Rpb24odCl7ZS5yZXNpemUodHx8d2luZG93LmV2ZW50KX0pKSx0aGlzLmVsLm9uKFwicm90LnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oXCJwb2ludC5yZXNpemVcIiwoZnVuY3Rpb24odCl7ZS5yZXNpemUodHx8d2luZG93LmV2ZW50KX0pKSx0aGlzLnVwZGF0ZSgpfX0sdC5wcm90b3R5cGUuc3RvcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVsLm9mZihcImx0LnJlc2l6ZVwiKSx0aGlzLmVsLm9mZihcInJ0LnJlc2l6ZVwiKSx0aGlzLmVsLm9mZihcInJiLnJlc2l6ZVwiKSx0aGlzLmVsLm9mZihcImxiLnJlc2l6ZVwiKSx0aGlzLmVsLm9mZihcInQucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwici5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJiLnJlc2l6ZVwiKSx0aGlzLmVsLm9mZihcImwucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwicm90LnJlc2l6ZVwiKSx0aGlzLmVsLm9mZihcInBvaW50LnJlc2l6ZVwiKSx0aGlzfSx0LnByb3RvdHlwZS5yZXNpemU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLm09dGhpcy5lbC5ub2RlLmdldFNjcmVlbkNUTSgpLmludmVyc2UoKSx0aGlzLm9mZnNldD17eDp3aW5kb3cucGFnZVhPZmZzZXQseTp3aW5kb3cucGFnZVlPZmZzZXR9O3ZhciBpPXRoaXMuX2V4dHJhY3RQb3NpdGlvbih0LmRldGFpbC5ldmVudCk7aWYodGhpcy5wYXJhbWV0ZXJzPXt0eXBlOnRoaXMuZWwudHlwZSxwOnRoaXMudHJhbnNmb3JtUG9pbnQoaS54LGkueSkseDp0LmRldGFpbC54LHk6dC5kZXRhaWwueSxib3g6dGhpcy5lbC5iYm94KCkscm90YXRpb246dGhpcy5lbC50cmFuc2Zvcm0oKS5yb3RhdGlvbn0sXCJ0ZXh0XCI9PT10aGlzLmVsLnR5cGUmJih0aGlzLnBhcmFtZXRlcnMuZm9udFNpemU9dGhpcy5lbC5hdHRyKClbXCJmb250LXNpemVcIl0pLHZvaWQgMCE9PXQuZGV0YWlsLmkpe3ZhciBhPXRoaXMuZWwuYXJyYXkoKS52YWx1ZU9mKCk7dGhpcy5wYXJhbWV0ZXJzLmk9dC5kZXRhaWwuaSx0aGlzLnBhcmFtZXRlcnMucG9pbnRDb29yZHM9W2FbdC5kZXRhaWwuaV1bMF0sYVt0LmRldGFpbC5pXVsxXV19c3dpdGNoKHQudHlwZSl7Y2FzZVwibHRcIjp0aGlzLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnNuYXBUb0dyaWQodCxlKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLWlbMF0+MCYmdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtaVsxXT4wKXtpZihcInRleHRcIj09PXRoaXMucGFyYW1ldGVycy50eXBlKXJldHVybiB0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54K2lbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC55KSx2b2lkIHRoaXMuZWwuYXR0cihcImZvbnQtc2l6ZVwiLHRoaXMucGFyYW1ldGVycy5mb250U2l6ZS1pWzBdKTtpPXRoaXMuY2hlY2tBc3BlY3RSYXRpbyhpKSx0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54K2lbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC55K2lbMV0pLnNpemUodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC1pWzBdLHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LWlbMV0pfX07YnJlYWs7Y2FzZVwicnRcIjp0aGlzLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnNuYXBUb0dyaWQodCxlLDIpO2lmKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgraVswXT4wJiZ0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC1pWzFdPjApe2lmKFwidGV4dFwiPT09dGhpcy5wYXJhbWV0ZXJzLnR5cGUpcmV0dXJuIHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngtaVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLHZvaWQgdGhpcy5lbC5hdHRyKFwiZm9udC1zaXplXCIsdGhpcy5wYXJhbWV0ZXJzLmZvbnRTaXplK2lbMF0pO2k9dGhpcy5jaGVja0FzcGVjdFJhdGlvKGksITApLHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngsdGhpcy5wYXJhbWV0ZXJzLmJveC55K2lbMV0pLnNpemUodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCtpWzBdLHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LWlbMV0pfX07YnJlYWs7Y2FzZVwicmJcIjp0aGlzLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnNuYXBUb0dyaWQodCxlLDApO2lmKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgraVswXT4wJiZ0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCtpWzFdPjApe2lmKFwidGV4dFwiPT09dGhpcy5wYXJhbWV0ZXJzLnR5cGUpcmV0dXJuIHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngtaVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLHZvaWQgdGhpcy5lbC5hdHRyKFwiZm9udC1zaXplXCIsdGhpcy5wYXJhbWV0ZXJzLmZvbnRTaXplK2lbMF0pO2k9dGhpcy5jaGVja0FzcGVjdFJhdGlvKGkpLHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngsdGhpcy5wYXJhbWV0ZXJzLmJveC55KS5zaXplKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgraVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCtpWzFdKX19O2JyZWFrO2Nhc2VcImxiXCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSwxKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLWlbMF0+MCYmdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQraVsxXT4wKXtpZihcInRleHRcIj09PXRoaXMucGFyYW1ldGVycy50eXBlKXJldHVybiB0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54K2lbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC55KSx2b2lkIHRoaXMuZWwuYXR0cihcImZvbnQtc2l6ZVwiLHRoaXMucGFyYW1ldGVycy5mb250U2l6ZS1pWzBdKTtpPXRoaXMuY2hlY2tBc3BlY3RSYXRpbyhpLCEwKSx0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54K2lbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC55KS5zaXplKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgtaVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCtpWzFdKX19O2JyZWFrO2Nhc2VcInRcIjp0aGlzLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnNuYXBUb0dyaWQodCxlLDIpO2lmKHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LWlbMV0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm47dGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCx0aGlzLnBhcmFtZXRlcnMuYm94LnkraVsxXSkuaGVpZ2h0KHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LWlbMV0pfX07YnJlYWs7Y2FzZVwiclwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUsMCk7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCtpWzBdPjApe2lmKFwidGV4dFwiPT09dGhpcy5wYXJhbWV0ZXJzLnR5cGUpcmV0dXJuO3RoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngsdGhpcy5wYXJhbWV0ZXJzLmJveC55KS53aWR0aCh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK2lbMF0pfX07YnJlYWs7Y2FzZVwiYlwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUsMCk7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQraVsxXT4wKXtpZihcInRleHRcIj09PXRoaXMucGFyYW1ldGVycy50eXBlKXJldHVybjt0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54LHRoaXMucGFyYW1ldGVycy5ib3gueSkuaGVpZ2h0KHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K2lbMV0pfX07YnJlYWs7Y2FzZVwibFwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUsMSk7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC1pWzBdPjApe2lmKFwidGV4dFwiPT09dGhpcy5wYXJhbWV0ZXJzLnR5cGUpcmV0dXJuO3RoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngraVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLndpZHRoKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgtaVswXSl9fTticmVhaztjYXNlXCJyb3RcIjp0aGlzLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgaT10K3RoaXMucGFyYW1ldGVycy5wLngsYT1lK3RoaXMucGFyYW1ldGVycy5wLnkscz1NYXRoLmF0YW4yKHRoaXMucGFyYW1ldGVycy5wLnktdGhpcy5wYXJhbWV0ZXJzLmJveC55LXRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LzIsdGhpcy5wYXJhbWV0ZXJzLnAueC10aGlzLnBhcmFtZXRlcnMuYm94LngtdGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC8yKSxyPU1hdGguYXRhbjIoYS10aGlzLnBhcmFtZXRlcnMuYm94LnktdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQvMixpLXRoaXMucGFyYW1ldGVycy5ib3gueC10aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLzIpLG89dGhpcy5wYXJhbWV0ZXJzLnJvdGF0aW9uKzE4MCooci1zKS9NYXRoLlBJK3RoaXMub3B0aW9ucy5zbmFwVG9BbmdsZS8yO3RoaXMuZWwuY2VudGVyKHRoaXMucGFyYW1ldGVycy5ib3guY3gsdGhpcy5wYXJhbWV0ZXJzLmJveC5jeSkucm90YXRlKG8tbyV0aGlzLm9wdGlvbnMuc25hcFRvQW5nbGUsdGhpcy5wYXJhbWV0ZXJzLmJveC5jeCx0aGlzLnBhcmFtZXRlcnMuYm94LmN5KX07YnJlYWs7Y2FzZVwicG9pbnRcIjp0aGlzLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnNuYXBUb0dyaWQodCxlLHRoaXMucGFyYW1ldGVycy5wb2ludENvb3Jkc1swXSx0aGlzLnBhcmFtZXRlcnMucG9pbnRDb29yZHNbMV0pLGE9dGhpcy5lbC5hcnJheSgpLnZhbHVlT2YoKTthW3RoaXMucGFyYW1ldGVycy5pXVswXT10aGlzLnBhcmFtZXRlcnMucG9pbnRDb29yZHNbMF0raVswXSxhW3RoaXMucGFyYW1ldGVycy5pXVsxXT10aGlzLnBhcmFtZXRlcnMucG9pbnRDb29yZHNbMV0raVsxXSx0aGlzLmVsLnBsb3QoYSl9fXRoaXMuZWwuZmlyZShcInJlc2l6ZXN0YXJ0XCIse2R4OnRoaXMucGFyYW1ldGVycy54LGR5OnRoaXMucGFyYW1ldGVycy55LGV2ZW50OnR9KSxTVkcub24od2luZG93LFwidG91Y2htb3ZlLnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnVwZGF0ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLFNWRy5vbih3aW5kb3csXCJ0b3VjaGVuZC5yZXNpemVcIiwoZnVuY3Rpb24oKXtlLmRvbmUoKX0pKSxTVkcub24od2luZG93LFwibW91c2Vtb3ZlLnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnVwZGF0ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLFNWRy5vbih3aW5kb3csXCJtb3VzZXVwLnJlc2l6ZVwiLChmdW5jdGlvbigpe2UuZG9uZSgpfSkpfSx0LnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCl7aWYodCl7dmFyIGU9dGhpcy5fZXh0cmFjdFBvc2l0aW9uKHQpLGk9dGhpcy50cmFuc2Zvcm1Qb2ludChlLngsZS55KSxhPWkueC10aGlzLnBhcmFtZXRlcnMucC54LHM9aS55LXRoaXMucGFyYW1ldGVycy5wLnk7dGhpcy5sYXN0VXBkYXRlQ2FsbD1bYSxzXSx0aGlzLmNhbGMoYSxzKSx0aGlzLmVsLmZpcmUoXCJyZXNpemluZ1wiLHtkeDphLGR5OnMsZXZlbnQ6dH0pfWVsc2UgdGhpcy5sYXN0VXBkYXRlQ2FsbCYmdGhpcy5jYWxjKHRoaXMubGFzdFVwZGF0ZUNhbGxbMF0sdGhpcy5sYXN0VXBkYXRlQ2FsbFsxXSl9LHQucHJvdG90eXBlLmRvbmU9ZnVuY3Rpb24oKXt0aGlzLmxhc3RVcGRhdGVDYWxsPW51bGwsU1ZHLm9mZih3aW5kb3csXCJtb3VzZW1vdmUucmVzaXplXCIpLFNWRy5vZmYod2luZG93LFwibW91c2V1cC5yZXNpemVcIiksU1ZHLm9mZih3aW5kb3csXCJ0b3VjaG1vdmUucmVzaXplXCIpLFNWRy5vZmYod2luZG93LFwidG91Y2hlbmQucmVzaXplXCIpLHRoaXMuZWwuZmlyZShcInJlc2l6ZWRvbmVcIil9LHQucHJvdG90eXBlLnNuYXBUb0dyaWQ9ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM7cmV0dXJuIHZvaWQgMCE9PWE/cz1bKGkrdCkldGhpcy5vcHRpb25zLnNuYXBUb0dyaWQsKGErZSkldGhpcy5vcHRpb25zLnNuYXBUb0dyaWRdOihpPW51bGw9PWk/MzppLHM9Wyh0aGlzLnBhcmFtZXRlcnMuYm94LngrdCsoMSZpPzA6dGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCkpJXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkLCh0aGlzLnBhcmFtZXRlcnMuYm94LnkrZSsoMiZpPzA6dGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQpKSV0aGlzLm9wdGlvbnMuc25hcFRvR3JpZF0pLHQ8MCYmKHNbMF0tPXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkKSxlPDAmJihzWzFdLT10aGlzLm9wdGlvbnMuc25hcFRvR3JpZCksdC09TWF0aC5hYnMoc1swXSk8dGhpcy5vcHRpb25zLnNuYXBUb0dyaWQvMj9zWzBdOnNbMF0tKHQ8MD8tdGhpcy5vcHRpb25zLnNuYXBUb0dyaWQ6dGhpcy5vcHRpb25zLnNuYXBUb0dyaWQpLGUtPU1hdGguYWJzKHNbMV0pPHRoaXMub3B0aW9ucy5zbmFwVG9HcmlkLzI/c1sxXTpzWzFdLShlPDA/LXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkOnRoaXMub3B0aW9ucy5zbmFwVG9HcmlkKSx0aGlzLmNvbnN0cmFpbnRUb0JveCh0LGUsaSxhKX0sdC5wcm90b3R5cGUuY29uc3RyYWludFRvQm94PWZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzLHIsbz10aGlzLm9wdGlvbnMuY29uc3RyYWludHx8e307cmV0dXJuIHZvaWQgMCE9PWE/KHM9aSxyPWEpOihzPXRoaXMucGFyYW1ldGVycy5ib3gueCsoMSZpPzA6dGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCkscj10aGlzLnBhcmFtZXRlcnMuYm94LnkrKDImaT8wOnRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0KSksdm9pZCAwIT09by5taW5YJiZzK3Q8by5taW5YJiYodD1vLm1pblgtcyksdm9pZCAwIT09by5tYXhYJiZzK3Q+by5tYXhYJiYodD1vLm1heFgtcyksdm9pZCAwIT09by5taW5ZJiZyK2U8by5taW5ZJiYoZT1vLm1pblktciksdm9pZCAwIT09by5tYXhZJiZyK2U+by5tYXhZJiYoZT1vLm1heFktciksW3QsZV19LHQucHJvdG90eXBlLmNoZWNrQXNwZWN0UmF0aW89ZnVuY3Rpb24odCxlKXtpZighdGhpcy5vcHRpb25zLnNhdmVBc3BlY3RSYXRpbylyZXR1cm4gdDt2YXIgaT10LnNsaWNlKCksYT10aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoL3RoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LHM9dGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCt0WzBdLHI9dGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtdFsxXSxvPXMvcjtyZXR1cm4gbzxhPyhpWzFdPXMvYS10aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCxlJiYoaVsxXT0taVsxXSkpOm8+YSYmKGlbMF09dGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC1yKmEsZSYmKGlbMF09LWlbMF0pKSxpfSxTVkcuZXh0ZW5kKFNWRy5FbGVtZW50LHtyZXNpemU6ZnVuY3Rpb24oZSl7cmV0dXJuKHRoaXMucmVtZW1iZXIoXCJfcmVzaXplSGFuZGxlclwiKXx8bmV3IHQodGhpcykpLmluaXQoZXx8e30pLHRoaXN9fSksU1ZHLkVsZW1lbnQucHJvdG90eXBlLnJlc2l6ZS5kZWZhdWx0cz17c25hcFRvQW5nbGU6LjEsc25hcFRvR3JpZDoxLGNvbnN0cmFpbnQ6e30sc2F2ZUFzcGVjdFJhdGlvOiExfX0pLmNhbGwodGhpcyl9KCksdm9pZCAwPT09d2luZG93LkFwZXgmJih3aW5kb3cuQXBleD17fSk7dmFyIE90PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJpbml0TW9kdWxlc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jdHgucHVibGljTWV0aG9kcz1bXCJ1cGRhdGVPcHRpb25zXCIsXCJ1cGRhdGVTZXJpZXNcIixcImFwcGVuZERhdGFcIixcImFwcGVuZFNlcmllc1wiLFwidG9nZ2xlU2VyaWVzXCIsXCJzaG93U2VyaWVzXCIsXCJoaWRlU2VyaWVzXCIsXCJzZXRMb2NhbGVcIixcInJlc2V0U2VyaWVzXCIsXCJ6b29tWFwiLFwidG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uXCIsXCJkYXRhVVJJXCIsXCJleHBvcnRUb0NTVlwiLFwiYWRkWGF4aXNBbm5vdGF0aW9uXCIsXCJhZGRZYXhpc0Fubm90YXRpb25cIixcImFkZFBvaW50QW5ub3RhdGlvblwiLFwiY2xlYXJBbm5vdGF0aW9uc1wiLFwicmVtb3ZlQW5ub3RhdGlvblwiLFwicGFwZXJcIixcImRlc3Ryb3lcIl0sdGhpcy5jdHguZXZlbnRMaXN0PVtcImNsaWNrXCIsXCJtb3VzZWRvd25cIixcIm1vdXNlbW92ZVwiLFwibW91c2VsZWF2ZVwiLFwidG91Y2hzdGFydFwiLFwidG91Y2htb3ZlXCIsXCJ0b3VjaGxlYXZlXCIsXCJtb3VzZXVwXCIsXCJ0b3VjaGVuZFwiXSx0aGlzLmN0eC5hbmltYXRpb25zPW5ldyBiKHRoaXMuY3R4KSx0aGlzLmN0eC5heGVzPW5ldyBKKHRoaXMuY3R4KSx0aGlzLmN0eC5jb3JlPW5ldyBEdCh0aGlzLmN0eC5lbCx0aGlzLmN0eCksdGhpcy5jdHguY29uZmlnPW5ldyBFKHt9KSx0aGlzLmN0eC5kYXRhPW5ldyBXKHRoaXMuY3R4KSx0aGlzLmN0eC5ncmlkPW5ldyBqKHRoaXMuY3R4KSx0aGlzLmN0eC5ncmFwaGljcz1uZXcgbSh0aGlzLmN0eCksdGhpcy5jdHguY29yZVV0aWxzPW5ldyB5KHRoaXMuY3R4KSx0aGlzLmN0eC5jcm9zc2hhaXJzPW5ldyBRKHRoaXMuY3R4KSx0aGlzLmN0eC5ldmVudHM9bmV3IFoodGhpcy5jdHgpLHRoaXMuY3R4LmV4cG9ydHM9bmV3IEcodGhpcy5jdHgpLHRoaXMuY3R4LmxvY2FsaXphdGlvbj1uZXcgJCh0aGlzLmN0eCksdGhpcy5jdHgub3B0aW9ucz1uZXcgTCx0aGlzLmN0eC5yZXNwb25zaXZlPW5ldyBLKHRoaXMuY3R4KSx0aGlzLmN0eC5zZXJpZXM9bmV3IE4odGhpcy5jdHgpLHRoaXMuY3R4LnRoZW1lPW5ldyB0dCh0aGlzLmN0eCksdGhpcy5jdHguZm9ybWF0dGVycz1uZXcgVCh0aGlzLmN0eCksdGhpcy5jdHgudGl0bGVTdWJ0aXRsZT1uZXcgZXQodGhpcy5jdHgpLHRoaXMuY3R4LmxlZ2VuZD1uZXcgbHQodGhpcy5jdHgpLHRoaXMuY3R4LnRvb2xiYXI9bmV3IGh0KHRoaXMuY3R4KSx0aGlzLmN0eC50b29sdGlwPW5ldyBidCh0aGlzLmN0eCksdGhpcy5jdHguZGltZW5zaW9ucz1uZXcgb3QodGhpcy5jdHgpLHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnM9bmV3IEh0KHRoaXMuY3R4KSx0aGlzLmN0eC56b29tUGFuU2VsZWN0aW9uPW5ldyBjdCh0aGlzLmN0eCksdGhpcy5jdHgudy5nbG9iYWxzLnRvb2x0aXA9bmV3IGJ0KHRoaXMuY3R4KX19XSksdH0oKSxOdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiY2xlYXJcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmlzVXBkYXRpbmc7dGhpcy5jdHguem9vbVBhblNlbGVjdGlvbiYmdGhpcy5jdHguem9vbVBhblNlbGVjdGlvbi5kZXN0cm95KCksdGhpcy5jdHgudG9vbGJhciYmdGhpcy5jdHgudG9vbGJhci5kZXN0cm95KCksdGhpcy5jdHguYW5pbWF0aW9ucz1udWxsLHRoaXMuY3R4LmF4ZXM9bnVsbCx0aGlzLmN0eC5hbm5vdGF0aW9ucz1udWxsLHRoaXMuY3R4LmNvcmU9bnVsbCx0aGlzLmN0eC5kYXRhPW51bGwsdGhpcy5jdHguZ3JpZD1udWxsLHRoaXMuY3R4LnNlcmllcz1udWxsLHRoaXMuY3R4LnJlc3BvbnNpdmU9bnVsbCx0aGlzLmN0eC50aGVtZT1udWxsLHRoaXMuY3R4LmZvcm1hdHRlcnM9bnVsbCx0aGlzLmN0eC50aXRsZVN1YnRpdGxlPW51bGwsdGhpcy5jdHgubGVnZW5kPW51bGwsdGhpcy5jdHguZGltZW5zaW9ucz1udWxsLHRoaXMuY3R4Lm9wdGlvbnM9bnVsbCx0aGlzLmN0eC5jcm9zc2hhaXJzPW51bGwsdGhpcy5jdHguem9vbVBhblNlbGVjdGlvbj1udWxsLHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnM9bnVsbCx0aGlzLmN0eC50b29sYmFyPW51bGwsdGhpcy5jdHgubG9jYWxpemF0aW9uPW51bGwsdGhpcy5jdHgudy5nbG9iYWxzLnRvb2x0aXA9bnVsbCx0aGlzLmNsZWFyRG9tRWxlbWVudHMoe2lzVXBkYXRpbmc6ZX0pfX0se2tleTpcImtpbGxTVkdcIix2YWx1ZTpmdW5jdGlvbih0KXt0LmVhY2goKGZ1bmN0aW9uKHQsZSl7dGhpcy5yZW1vdmVDbGFzcyhcIipcIiksdGhpcy5vZmYoKSx0aGlzLnN0b3AoKX0pLCEwKSx0LnVuZ3JvdXAoKSx0LmNsZWFyKCl9fSx7a2V5OlwiY2xlYXJEb21FbGVtZW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10LmlzVXBkYXRpbmcsYT10aGlzLncuZ2xvYmFscy5kb20uUGFwZXIubm9kZTthLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5wYXJlbnROb2RlJiYhaSYmKGEucGFyZW50Tm9kZS5wYXJlbnROb2RlLnN0eWxlLm1pbkhlaWdodD1cInVuc2V0XCIpO3ZhciBzPXRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWw7cyYmdGhpcy5jdHguZXZlbnRMaXN0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3MucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGUuY3R4LmV2ZW50cy5kb2N1bWVudEV2ZW50KX0pKTt2YXIgcj10aGlzLncuZ2xvYmFscy5kb207aWYobnVsbCE9PXRoaXMuY3R4LmVsKWZvcig7dGhpcy5jdHguZWwuZmlyc3RDaGlsZDspdGhpcy5jdHguZWwucmVtb3ZlQ2hpbGQodGhpcy5jdHguZWwuZmlyc3RDaGlsZCk7dGhpcy5raWxsU1ZHKHIuUGFwZXIpLHIuUGFwZXIucmVtb3ZlKCksci5lbFdyYXA9bnVsbCxyLmVsR3JhcGhpY2FsPW51bGwsci5lbExlZ2VuZFdyYXA9bnVsbCxyLmVsTGVnZW5kRm9yZWlnbj1udWxsLHIuYmFzZUVsPW51bGwsci5lbEdyaWRSZWN0PW51bGwsci5lbEdyaWRSZWN0TWFzaz1udWxsLHIuZWxHcmlkUmVjdE1hcmtlck1hc2s9bnVsbCxyLmVsRm9yZWNhc3RNYXNrPW51bGwsci5lbE5vbkZvcmVjYXN0TWFzaz1udWxsLHIuZWxEZWZzPW51bGx9fV0pLHR9KCksV3Q9bmV3IFdlYWtNYXA7dmFyIEJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe2EodGhpcyx0KSx0aGlzLm9wdHM9aSx0aGlzLmN0eD10aGlzLHRoaXMudz1uZXcgRihpKS5pbml0KCksdGhpcy5lbD1lLHRoaXMudy5nbG9iYWxzLmN1aWQ9eC5yYW5kb21JZCgpLHRoaXMudy5nbG9iYWxzLmNoYXJ0SUQ9dGhpcy53LmNvbmZpZy5jaGFydC5pZD94LmVzY2FwZVN0cmluZyh0aGlzLncuY29uZmlnLmNoYXJ0LmlkKTp0aGlzLncuZ2xvYmFscy5jdWlkLG5ldyBPdCh0aGlzKS5pbml0TW9kdWxlcygpLHRoaXMuY3JlYXRlPXguYmluZCh0aGlzLmNyZWF0ZSx0aGlzKSx0aGlzLndpbmRvd1Jlc2l6ZUhhbmRsZXI9dGhpcy5fd2luZG93UmVzaXplSGFuZGxlci5iaW5kKHRoaXMpLHRoaXMucGFyZW50UmVzaXplSGFuZGxlcj10aGlzLl9wYXJlbnRSZXNpemVDYWxsYmFjay5iaW5kKHRoaXMpfXJldHVybiByKHQsW3trZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlLGkpe2lmKG51bGwhPT10LmVsKXt2b2lkIDA9PT1BcGV4Ll9jaGFydEluc3RhbmNlcyYmKEFwZXguX2NoYXJ0SW5zdGFuY2VzPVtdKSx0LncuY29uZmlnLmNoYXJ0LmlkJiZBcGV4Ll9jaGFydEluc3RhbmNlcy5wdXNoKHtpZDp0LncuZ2xvYmFscy5jaGFydElELGdyb3VwOnQudy5jb25maWcuY2hhcnQuZ3JvdXAsY2hhcnQ6dH0pLHQuc2V0TG9jYWxlKHQudy5jb25maWcuY2hhcnQuZGVmYXVsdExvY2FsZSk7dmFyIGE9dC53LmNvbmZpZy5jaGFydC5ldmVudHMuYmVmb3JlTW91bnQ7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgYSYmYSh0LHQudyksdC5ldmVudHMuZmlyZUV2ZW50KFwiYmVmb3JlTW91bnRcIixbdCx0LnddKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLHQud2luZG93UmVzaXplSGFuZGxlciksZnVuY3Rpb24odCxlKXt2YXIgaT0hMTtpZih0Lm5vZGVUeXBlIT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFKXt2YXIgYT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1wibm9uZVwiIT09dC5zdHlsZS5kaXNwbGF5JiYwIT09YS53aWR0aHx8KGk9ITApfXZhciBzPW5ldyBSZXNpemVPYnNlcnZlcigoZnVuY3Rpb24oYSl7aSYmZS5jYWxsKHQsYSksaT0hMH0pKTt0Lm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFP0FycmF5LmZyb20odC5jaGlsZHJlbikuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHMub2JzZXJ2ZSh0KX0pKTpzLm9ic2VydmUodCksV3Quc2V0KGUscyl9KHQuZWwucGFyZW50Tm9kZSx0LnBhcmVudFJlc2l6ZUhhbmRsZXIpLCF0LmNzcyl7dmFyIHM9dC5lbC5nZXRSb290Tm9kZSYmdC5lbC5nZXRSb290Tm9kZSgpLHI9eC5pcyhcIlNoYWRvd1Jvb3RcIixzKSxvPXQuZWwub3duZXJEb2N1bWVudCxuPW8uZ2V0RWxlbWVudEJ5SWQoXCJhcGV4Y2hhcnRzLWNzc1wiKTshciYmbnx8KHQuY3NzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKSx0LmNzcy5pZD1cImFwZXhjaGFydHMtY3NzXCIsdC5jc3MudGV4dENvbnRlbnQ9J0BrZXlmcmFtZXMgb3BhcXVlIHtcXG4gIDAlIHtcXG4gICAgICBvcGFjaXR5OiAwXFxuICB9XFxuXFxuICB0byB7XFxuICAgICAgb3BhY2l0eTogMVxcbiAgfVxcbn1cXG5cXG5Aa2V5ZnJhbWVzIHJlc2l6ZWFuaW0ge1xcbiAgMCUsdG8ge1xcbiAgICAgIG9wYWNpdHk6IDBcXG4gIH1cXG59XFxuXFxuLmFwZXhjaGFydHMtY2FudmFzIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHVzZXItc2VsZWN0OiBub25lXFxufVxcblxcbi5hcGV4Y2hhcnRzLWNhbnZhcyA6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcXG4gIHdpZHRoOiA2cHhcXG59XFxuXFxuLmFwZXhjaGFydHMtY2FudmFzIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwuNSk7XFxuICBib3gtc2hhZG93OiAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjUpO1xcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjUpXFxufVxcblxcbi5hcGV4Y2hhcnRzLWlubmVyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy10ZXh0IHRzcGFuIHtcXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0XFxufVxcblxcbi5sZWdlbmQtbW91c2VvdmVyLWluYWN0aXZlIHtcXG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGw7XFxuICBvcGFjaXR5OiAuMlxcbn1cXG5cXG4uYXBleGNoYXJ0cy1sZWdlbmQtdGV4dCB7XFxuICBwYWRkaW5nLWxlZnQ6IDE1cHg7XFxuICBtYXJnaW4tbGVmdDogLTE1cHg7XFxufVxcblxcbi5hcGV4Y2hhcnRzLXNlcmllcy1jb2xsYXBzZWQge1xcbiAgb3BhY2l0eTogMFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwIHtcXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcXG4gIGJveC1zaGFkb3c6IDJweCAycHggNnB4IC00cHggIzk5OTtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIGZvbnQtc2l6ZTogMTRweDtcXG4gIGxlZnQ6IDYycHg7XFxuICBvcGFjaXR5OiAwO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDIwcHg7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgei1pbmRleDogMTI7XFxuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAuYXBleGNoYXJ0cy1hY3RpdmUge1xcbiAgb3BhY2l0eTogMTtcXG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IHtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNlM2UzZTM7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LC45NilcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsge1xcbiAgY29sb3I6ICNmZmY7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDMwLDMwLDMwLC44KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwICoge1xcbiAgZm9udC1mYW1pbHk6IGluaGVyaXRcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC10aXRsZSB7XFxuICBwYWRkaW5nOiA2cHg7XFxuICBmb250LXNpemU6IDE1cHg7XFxuICBtYXJnaW4tYm90dG9tOiA0cHhcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGUge1xcbiAgYmFja2dyb3VuZDogI2VjZWZmMTtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGUge1xcbiAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwuNyk7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzMzM1xcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtdmFsdWUsLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXktdmFsdWUsLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXotdmFsdWUge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgbWFyZ2luLWxlZnQ6IDVweDtcXG4gIGZvbnQtd2VpZ2h0OiA2MDBcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLWxhYmVsOmVtcHR5LC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy12YWx1ZTplbXB0eSwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQteS1sYWJlbDplbXB0eSwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQteS12YWx1ZTplbXB0eSwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtei12YWx1ZTplbXB0eSwuYXBleGNoYXJ0cy10b29sdGlwLXRpdGxlOmVtcHR5IHtcXG4gIGRpc3BsYXk6IG5vbmVcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLWxhYmVsLC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy12YWx1ZSB7XFxuICBwYWRkaW5nOiA2cHggMCA1cHhcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1nb2Fscy1ncm91cCwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtbGFiZWwsLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlIHtcXG4gIGRpc3BsYXk6IGZsZXhcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLWxhYmVsOm5vdCg6ZW1wdHkpLC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy12YWx1ZTpub3QoOmVtcHR5KSB7XFxuICBtYXJnaW4tdG9wOiAtNnB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtbWFya2VyIHtcXG4gIHdpZHRoOiAxMnB4O1xcbiAgaGVpZ2h0OiAxMnB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgdG9wOiAwO1xcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xcbiAgYm9yZGVyLXJhZGl1czogNTAlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwIHtcXG4gIHBhZGRpbmc6IDAgMTBweDtcXG4gIGRpc3BsYXk6IG5vbmU7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlclxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cC5hcGV4Y2hhcnRzLWFjdGl2ZSAuYXBleGNoYXJ0cy10b29sdGlwLW1hcmtlciB7XFxuICBvcGFjaXR5OiAxXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwLmFwZXhjaGFydHMtYWN0aXZlLC5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwOmxhc3QtY2hpbGQge1xcbiAgcGFkZGluZy1ib3R0b206IDRweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cC1oaWRkZW4ge1xcbiAgb3BhY2l0eTogMDtcXG4gIGhlaWdodDogMDtcXG4gIGxpbmUtaGVpZ2h0OiAwO1xcbiAgcGFkZGluZzogMCFpbXBvcnRhbnRcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC15LWdyb3VwIHtcXG4gIHBhZGRpbmc6IDZweCAwIDVweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy1jdXN0b20tdG9vbHRpcCwuYXBleGNoYXJ0cy10b29sdGlwLWJveCB7XFxuICBwYWRkaW5nOiA0cHggOHB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtYm94UGxvdCB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtYm94PmRpdiB7XFxuICBtYXJnaW46IDRweCAwXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtYm94IHNwYW4udmFsdWUge1xcbiAgZm9udC13ZWlnaHQ6IDcwMFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXJhbmdlYmFyIHtcXG4gIHBhZGRpbmc6IDVweCA4cHhcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1yYW5nZWJhciAuY2F0ZWdvcnkge1xcbiAgZm9udC13ZWlnaHQ6IDYwMDtcXG4gIGNvbG9yOiAjNzc3XFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtcmFuZ2ViYXIgLnNlcmllcy1uYW1lIHtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIG1hcmdpbi1ib3R0b206IDVweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAsLmFwZXhjaGFydHMteWF4aXN0b29sdGlwIHtcXG4gIG9wYWNpdHk6IDA7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIGNvbG9yOiAjMzczZDNmO1xcbiAgZm9udC1zaXplOiAxM3B4O1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgei1pbmRleDogMTA7XFxuICBiYWNrZ3JvdW5kOiAjZWNlZmYxO1xcbiAgYm9yZGVyOiAxcHggc29saWQgIzkwYTRhZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAge1xcbiAgcGFkZGluZzogOXB4IDEwcHg7XFxuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsge1xcbiAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwuNyk7XFxuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsMCwwLC41KTtcXG4gIGNvbG9yOiAjZmZmXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcDphZnRlciwuYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXA6YmVmb3JlIHtcXG4gIGxlZnQ6IDUwJTtcXG4gIGJvcmRlcjogc29saWQgdHJhbnNwYXJlbnQ7XFxuICBjb250ZW50OiBcIiBcIjtcXG4gIGhlaWdodDogMDtcXG4gIHdpZHRoOiAwO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmVcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwOmFmdGVyIHtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItd2lkdGg6IDZweDtcXG4gIG1hcmdpbi1sZWZ0OiAtNnB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcDpiZWZvcmUge1xcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci13aWR0aDogN3B4O1xcbiAgbWFyZ2luLWxlZnQ6IC03cHhcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbTphZnRlciwuYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tOmJlZm9yZSB7XFxuICBib3R0b206IDEwMCVcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcDphZnRlciwuYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdG9wOmJlZm9yZSB7XFxuICB0b3A6IDEwMCVcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbTphZnRlciB7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiAjZWNlZmYxXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b206YmVmb3JlIHtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6ICM5MGE0YWVcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbS5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YWZ0ZXIsLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbS5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YmVmb3JlIHtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoMCwwLDAsLjUpXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3A6YWZ0ZXIge1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogI2VjZWZmMVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdG9wOmJlZm9yZSB7XFxuICBib3JkZXItdG9wLWNvbG9yOiAjOTBhNGFlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3AuYXBleGNoYXJ0cy10aGVtZS1kYXJrOmFmdGVyLC5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3AuYXBleGNoYXJ0cy10aGVtZS1kYXJrOmJlZm9yZSB7XFxuICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsMCwwLC41KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAuYXBleGNoYXJ0cy1hY3RpdmUge1xcbiAgb3BhY2l0eTogMTtcXG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwIHtcXG4gIHBhZGRpbmc6IDRweCAxMHB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsge1xcbiAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwuNyk7XFxuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsMCwwLC41KTtcXG4gIGNvbG9yOiAjZmZmXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcDphZnRlciwuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXA6YmVmb3JlIHtcXG4gIHRvcDogNTAlO1xcbiAgYm9yZGVyOiBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIGNvbnRlbnQ6IFwiIFwiO1xcbiAgaGVpZ2h0OiAwO1xcbiAgd2lkdGg6IDA7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXA6YWZ0ZXIge1xcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci13aWR0aDogNnB4O1xcbiAgbWFyZ2luLXRvcDogLTZweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXA6YmVmb3JlIHtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItd2lkdGg6IDdweDtcXG4gIG1hcmdpbi10b3A6IC03cHhcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQ6YWZ0ZXIsLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQ6YmVmb3JlIHtcXG4gIGxlZnQ6IDEwMCVcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0OmFmdGVyLC5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodDpiZWZvcmUge1xcbiAgcmlnaHQ6IDEwMCVcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQ6YWZ0ZXIge1xcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICNlY2VmZjFcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQ6YmVmb3JlIHtcXG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjOTBhNGFlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1sZWZ0LmFwZXhjaGFydHMtdGhlbWUtZGFyazphZnRlciwuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdC5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YmVmb3JlIHtcXG4gIGJvcmRlci1sZWZ0LWNvbG9yOiByZ2JhKDAsMCwwLC41KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtcmlnaHQ6YWZ0ZXIge1xcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjZWNlZmYxXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodDpiZWZvcmUge1xcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjOTBhNGFlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodC5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YWZ0ZXIsLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0LmFwZXhjaGFydHMtdGhlbWUtZGFyazpiZWZvcmUge1xcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiByZ2JhKDAsMCwwLC41KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAuYXBleGNoYXJ0cy1hY3RpdmUge1xcbiAgb3BhY2l0eTogMVxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtaGlkZGVuIHtcXG4gIGRpc3BsYXk6IG5vbmVcXG59XFxuXFxuLmFwZXhjaGFydHMteGNyb3NzaGFpcnMsLmFwZXhjaGFydHMteWNyb3NzaGFpcnMge1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICBvcGFjaXR5OiAwO1xcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxcbn1cXG5cXG4uYXBleGNoYXJ0cy14Y3Jvc3NoYWlycy5hcGV4Y2hhcnRzLWFjdGl2ZSwuYXBleGNoYXJ0cy15Y3Jvc3NoYWlycy5hcGV4Y2hhcnRzLWFjdGl2ZSB7XFxuICBvcGFjaXR5OiAxO1xcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxcbn1cXG5cXG4uYXBleGNoYXJ0cy15Y3Jvc3NoYWlycy1oaWRkZW4ge1xcbiAgb3BhY2l0eTogMFxcbn1cXG5cXG4uYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdCB7XFxuICBjdXJzb3I6IG1vdmVcXG59XFxuXFxuLnN2Z19zZWxlY3RfYm91bmRpbmdSZWN0LC5zdmdfc2VsZWN0X3BvaW50c19yb3Qge1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICBvcGFjaXR5OiAwO1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuXFxufVxcblxcbi5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0K2cgLnN2Z19zZWxlY3RfYm91bmRpbmdSZWN0LC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0K2cgLnN2Z19zZWxlY3RfcG9pbnRzX3JvdCB7XFxuICBvcGFjaXR5OiAwO1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuXFxufVxcblxcbi5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0K2cgLnN2Z19zZWxlY3RfcG9pbnRzX2wsLmFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3QrZyAuc3ZnX3NlbGVjdF9wb2ludHNfciB7XFxuICBjdXJzb3I6IGV3LXJlc2l6ZTtcXG4gIG9wYWNpdHk6IDE7XFxuICB2aXNpYmlsaXR5OiB2aXNpYmxlXFxufVxcblxcbi5zdmdfc2VsZWN0X3BvaW50cyB7XFxuICBmaWxsOiAjZWZlZmVmO1xcbiAgc3Ryb2tlOiAjMzMzO1xcbiAgcng6IDJcXG59XFxuXFxuLmFwZXhjaGFydHMtc3ZnLmFwZXhjaGFydHMtem9vbWFibGUuaG92ZXJpbmctem9vbSB7XFxuICBjdXJzb3I6IGNyb3NzaGFpclxcbn1cXG5cXG4uYXBleGNoYXJ0cy1zdmcuYXBleGNoYXJ0cy16b29tYWJsZS5ob3ZlcmluZy1wYW4ge1xcbiAgY3Vyc29yOiBtb3ZlXFxufVxcblxcbi5hcGV4Y2hhcnRzLW1lbnUtaWNvbiwuYXBleGNoYXJ0cy1wYW4taWNvbiwuYXBleGNoYXJ0cy1yZXNldC1pY29uLC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1pY29uLC5hcGV4Y2hhcnRzLXRvb2xiYXItY3VzdG9tLWljb24sLmFwZXhjaGFydHMtem9vbS1pY29uLC5hcGV4Y2hhcnRzLXpvb21pbi1pY29uLC5hcGV4Y2hhcnRzLXpvb21vdXQtaWNvbiB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICB3aWR0aDogMjBweDtcXG4gIGhlaWdodDogMjBweDtcXG4gIGxpbmUtaGVpZ2h0OiAyNHB4O1xcbiAgY29sb3I6ICM2ZTgxOTI7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXJcXG59XFxuXFxuLmFwZXhjaGFydHMtbWVudS1pY29uIHN2ZywuYXBleGNoYXJ0cy1yZXNldC1pY29uIHN2ZywuYXBleGNoYXJ0cy16b29tLWljb24gc3ZnLC5hcGV4Y2hhcnRzLXpvb21pbi1pY29uIHN2ZywuYXBleGNoYXJ0cy16b29tb3V0LWljb24gc3ZnIHtcXG4gIGZpbGw6ICM2ZTgxOTJcXG59XFxuXFxuLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb24gc3ZnIHtcXG4gIGZpbGw6ICM0NDQ7XFxuICB0cmFuc2Zvcm06IHNjYWxlKC43NilcXG59XFxuXFxuLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy1tZW51LWljb24gc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtcGFuLWljb24gc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtcmVzZXQtaWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy10b29sYmFyLWN1c3RvbS1pY29uIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXpvb20taWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy16b29taW4taWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy16b29tb3V0LWljb24gc3ZnIHtcXG4gIGZpbGw6ICNmM2Y0ZjVcXG59XFxuXFxuLmFwZXhjaGFydHMtY2FudmFzIC5hcGV4Y2hhcnRzLXJlc2V0LXpvb20taWNvbi5hcGV4Y2hhcnRzLXNlbGVjdGVkIHN2ZywuYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb24uYXBleGNoYXJ0cy1zZWxlY3RlZCBzdmcsLmFwZXhjaGFydHMtY2FudmFzIC5hcGV4Y2hhcnRzLXpvb20taWNvbi5hcGV4Y2hhcnRzLXNlbGVjdGVkIHN2ZyB7XFxuICBmaWxsOiAjMDA4ZmZiXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLW1lbnUtaWNvbjpob3ZlciBzdmcsLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtcmVzZXQtaWNvbjpob3ZlciBzdmcsLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb246bm90KC5hcGV4Y2hhcnRzLXNlbGVjdGVkKTpob3ZlciBzdmcsLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtem9vbS1pY29uOm5vdCguYXBleGNoYXJ0cy1zZWxlY3RlZCk6aG92ZXIgc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLXpvb21pbi1pY29uOmhvdmVyIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy16b29tb3V0LWljb246aG92ZXIgc3ZnIHtcXG4gIGZpbGw6ICMzMzNcXG59XFxuXFxuLmFwZXhjaGFydHMtbWVudS1pY29uLC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1pY29uIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1yZXNldC1pY29uIHtcXG4gIG1hcmdpbi1sZWZ0OiA1cHhcXG59XFxuXFxuLmFwZXhjaGFydHMtbWVudS1pY29uLC5hcGV4Y2hhcnRzLXJlc2V0LWljb24sLmFwZXhjaGFydHMtem9vbS1pY29uIHtcXG4gIHRyYW5zZm9ybTogc2NhbGUoLjg1KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy16b29taW4taWNvbiwuYXBleGNoYXJ0cy16b29tb3V0LWljb24ge1xcbiAgdHJhbnNmb3JtOiBzY2FsZSguNylcXG59XFxuXFxuLmFwZXhjaGFydHMtem9vbW91dC1pY29uIHtcXG4gIG1hcmdpbi1yaWdodDogM3B4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXBhbi1pY29uIHtcXG4gIHRyYW5zZm9ybTogc2NhbGUoLjYyKTtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGxlZnQ6IDFweDtcXG4gIHRvcDogMFxcbn1cXG5cXG4uYXBleGNoYXJ0cy1wYW4taWNvbiBzdmcge1xcbiAgZmlsbDogI2ZmZjtcXG4gIHN0cm9rZTogIzZlODE5MjtcXG4gIHN0cm9rZS13aWR0aDogMlxcbn1cXG5cXG4uYXBleGNoYXJ0cy1wYW4taWNvbi5hcGV4Y2hhcnRzLXNlbGVjdGVkIHN2ZyB7XFxuICBzdHJva2U6ICMwMDhmZmJcXG59XFxuXFxuLmFwZXhjaGFydHMtcGFuLWljb246bm90KC5hcGV4Y2hhcnRzLXNlbGVjdGVkKTpob3ZlciBzdmcge1xcbiAgc3Ryb2tlOiAjMzMzXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2xiYXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgei1pbmRleDogMTE7XFxuICBtYXgtd2lkdGg6IDE3NnB4O1xcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XFxuICBib3JkZXItcmFkaXVzOiAzcHg7XFxuICBwYWRkaW5nOiAwIDZweCAycHg7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlclxcbn1cXG5cXG4uYXBleGNoYXJ0cy1tZW51IHtcXG4gIGJhY2tncm91bmQ6ICNmZmY7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDEwMCU7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xcbiAgcGFkZGluZzogM3B4O1xcbiAgcmlnaHQ6IDEwcHg7XFxuICBvcGFjaXR5OiAwO1xcbiAgbWluLXdpZHRoOiAxMTBweDtcXG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGw7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1tZW51LmFwZXhjaGFydHMtbWVudS1vcGVuIHtcXG4gIG9wYWNpdHk6IDE7XFxuICBwb2ludGVyLWV2ZW50czogYWxsO1xcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxcbn1cXG5cXG4uYXBleGNoYXJ0cy1tZW51LWl0ZW0ge1xcbiAgcGFkZGluZzogNnB4IDdweDtcXG4gIGZvbnQtc2l6ZTogMTJweDtcXG4gIGN1cnNvcjogcG9pbnRlclxcbn1cXG5cXG4uYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy1tZW51LWl0ZW06aG92ZXIge1xcbiAgYmFja2dyb3VuZDogI2VlZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLW1lbnUge1xcbiAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwuNyk7XFxuICBjb2xvcjogI2ZmZlxcbn1cXG5cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjc2OHB4KSB7XFxuICAuYXBleGNoYXJ0cy1jYW52YXM6aG92ZXIgLmFwZXhjaGFydHMtdG9vbGJhciB7XFxuICAgICAgb3BhY2l0eTogMVxcbiAgfVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW4sLmFwZXhjaGFydHMtZGF0YWxhYmVsLmFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW4sLmFwZXhjaGFydHMtaGlkZSAuYXBleGNoYXJ0cy1zZXJpZXMtcG9pbnRzIHtcXG4gIG9wYWNpdHk6IDBcXG59XFxuXFxuLmFwZXhjaGFydHMtZGF0YWxhYmVsLC5hcGV4Y2hhcnRzLWRhdGFsYWJlbC1sYWJlbCwuYXBleGNoYXJ0cy1kYXRhbGFiZWwtdmFsdWUsLmFwZXhjaGFydHMtZGF0YWxhYmVscywuYXBleGNoYXJ0cy1waWUtbGFiZWwge1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmVcXG59XFxuXFxuLmFwZXhjaGFydHMtcGllLWxhYmVsLWRlbGF5IHtcXG4gIG9wYWNpdHk6IDA7XFxuICBhbmltYXRpb24tbmFtZTogb3BhcXVlO1xcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAuM3M7XFxuICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcXG4gIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2VcXG59XFxuXFxuLmFwZXhjaGFydHMtYW5ub3RhdGlvbi1yZWN0LC5hcGV4Y2hhcnRzLWFyZWEtc2VyaWVzIC5hcGV4Y2hhcnRzLWFyZWEsLmFwZXhjaGFydHMtYXJlYS1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMgLmFwZXhjaGFydHMtbWFya2VyLm5vLXBvaW50ZXItZXZlbnRzLC5hcGV4Y2hhcnRzLWdyaWRsaW5lLC5hcGV4Y2hhcnRzLWxpbmUsLmFwZXhjaGFydHMtbGluZS1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMgLmFwZXhjaGFydHMtbWFya2VyLm5vLXBvaW50ZXItZXZlbnRzLC5hcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb24tbGFiZWwsLmFwZXhjaGFydHMtcmFkYXItc2VyaWVzIHBhdGgsLmFwZXhjaGFydHMtcmFkYXItc2VyaWVzIHBvbHlnb24sLmFwZXhjaGFydHMtdG9vbGJhciBzdmcsLmFwZXhjaGFydHMtdG9vbHRpcCAuYXBleGNoYXJ0cy1tYXJrZXIsLmFwZXhjaGFydHMteGF4aXMtYW5ub3RhdGlvbi1sYWJlbCwuYXBleGNoYXJ0cy15YXhpcy1hbm5vdGF0aW9uLWxhYmVsLC5hcGV4Y2hhcnRzLXpvb20tcmVjdCB7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1tYXJrZXIge1xcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxcbn1cXG5cXG4ucmVzaXplLXRyaWdnZXJzIHtcXG4gIGFuaW1hdGlvbjogMW1zIHJlc2l6ZWFuaW07XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICBvcGFjaXR5OiAwO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBvdmVyZmxvdzogaGlkZGVuXFxufVxcblxcbi5jb250cmFjdC10cmlnZ2VyOmJlZm9yZSwucmVzaXplLXRyaWdnZXJzLC5yZXNpemUtdHJpZ2dlcnM+ZGl2IHtcXG4gIGNvbnRlbnQ6IFwiIFwiO1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwXFxufVxcblxcbi5yZXNpemUtdHJpZ2dlcnM+ZGl2IHtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgYmFja2dyb3VuZDogI2VlZTtcXG4gIG92ZXJmbG93OiBhdXRvXFxufVxcblxcbi5jb250cmFjdC10cmlnZ2VyOmJlZm9yZSB7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgd2lkdGg6IDIwMCU7XFxuICBoZWlnaHQ6IDIwMCVcXG59XFxuJyxyP3MucHJlcGVuZCh0LmNzcyk6by5oZWFkLmFwcGVuZENoaWxkKHQuY3NzKSl9dmFyIGw9dC5jcmVhdGUodC53LmNvbmZpZy5zZXJpZXMse30pO2lmKCFsKXJldHVybiBlKHQpO3QubW91bnQobCkudGhlbigoZnVuY3Rpb24oKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LncuY29uZmlnLmNoYXJ0LmV2ZW50cy5tb3VudGVkJiZ0LncuY29uZmlnLmNoYXJ0LmV2ZW50cy5tb3VudGVkKHQsdC53KSx0LmV2ZW50cy5maXJlRXZlbnQoXCJtb3VudGVkXCIsW3QsdC53XSksZShsKX0pKS5jYXRjaCgoZnVuY3Rpb24odCl7aSh0KX0pKX1lbHNlIGkobmV3IEVycm9yKFwiRWxlbWVudCBub3QgZm91bmRcIikpfSkpfX0se2tleTpcImNyZWF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O25ldyBPdCh0aGlzKS5pbml0TW9kdWxlcygpO3ZhciBhPXRoaXMudy5nbG9iYWxzOyhhLm5vRGF0YT0hMSxhLmFuaW1hdGlvbkVuZGVkPSExLHRoaXMucmVzcG9uc2l2ZS5jaGVja1Jlc3BvbnNpdmVDb25maWcoZSksaS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljKSYmbmV3IHooaS5jb25maWcpLmNvbnZlcnRDYXRUb051bWVyaWNYYXhpcyhpLmNvbmZpZyx0aGlzLmN0eCk7aWYobnVsbD09PXRoaXMuZWwpcmV0dXJuIGEuYW5pbWF0aW9uRW5kZWQ9ITAsbnVsbDtpZih0aGlzLmNvcmUuc2V0dXBFbGVtZW50cygpLFwidHJlZW1hcFwiPT09aS5jb25maWcuY2hhcnQudHlwZSYmKGkuY29uZmlnLmdyaWQuc2hvdz0hMSxpLmNvbmZpZy55YXhpc1swXS5zaG93PSExKSwwPT09YS5zdmdXaWR0aClyZXR1cm4gYS5hbmltYXRpb25FbmRlZD0hMCxudWxsO3ZhciBzPXkuY2hlY2tDb21ib1Nlcmllcyh0KTthLmNvbWJvQ2hhcnRzPXMuY29tYm9DaGFydHMsYS5jb21ib0JhckNvdW50PXMuY29tYm9CYXJDb3VudDt2YXIgcj10LmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gdC5kYXRhJiYwPT09dC5kYXRhLmxlbmd0aH0pKTsoMD09PXQubGVuZ3RofHxyKSYmdGhpcy5zZXJpZXMuaGFuZGxlTm9EYXRhKCksdGhpcy5ldmVudHMuc2V0dXBFdmVudEhhbmRsZXJzKCksdGhpcy5kYXRhLnBhcnNlRGF0YSh0KSx0aGlzLnRoZW1lLmluaXQoKSxuZXcgRCh0aGlzKS5zZXRHbG9iYWxNYXJrZXJTaXplKCksdGhpcy5mb3JtYXR0ZXJzLnNldExhYmVsRm9ybWF0dGVycygpLHRoaXMudGl0bGVTdWJ0aXRsZS5kcmF3KCksYS5ub0RhdGEmJmEuY29sbGFwc2VkU2VyaWVzLmxlbmd0aCE9PWEuc2VyaWVzLmxlbmd0aCYmIWkuY29uZmlnLmxlZ2VuZC5zaG93Rm9yU2luZ2xlU2VyaWVzfHx0aGlzLmxlZ2VuZC5pbml0KCksdGhpcy5zZXJpZXMuaGFzQWxsU2VyaWVzRXF1YWxYKCksYS5heGlzQ2hhcnRzJiYodGhpcy5jb3JlLmNvcmVDYWxjdWxhdGlvbnMoKSxcImNhdGVnb3J5XCIhPT1pLmNvbmZpZy54YXhpcy50eXBlJiZ0aGlzLmZvcm1hdHRlcnMuc2V0TGFiZWxGb3JtYXR0ZXJzKCksdGhpcy5jdHgudG9vbGJhci5taW5YPWkuZ2xvYmFscy5taW5YLHRoaXMuY3R4LnRvb2xiYXIubWF4WD1pLmdsb2JhbHMubWF4WCksdGhpcy5mb3JtYXR0ZXJzLmhlYXRtYXBMYWJlbEZvcm1hdHRlcnMoKSxuZXcgeSh0aGlzKS5nZXRMYXJnZXN0TWFya2VyU2l6ZSgpLHRoaXMuZGltZW5zaW9ucy5wbG90Q29vcmRzKCk7dmFyIG89dGhpcy5jb3JlLnh5U2V0dGluZ3MoKTt0aGlzLmdyaWQuY3JlYXRlR3JpZE1hc2soKTt2YXIgbj10aGlzLmNvcmUucGxvdENoYXJ0VHlwZSh0LG8pLGw9bmV3IE8odGhpcyk7cmV0dXJuIGwuYnJpbmdGb3J3YXJkKCksaS5jb25maWcuZGF0YUxhYmVscy5iYWNrZ3JvdW5kLmVuYWJsZWQmJmwuZGF0YUxhYmVsc0JhY2tncm91bmQoKSx0aGlzLmNvcmUuc2hpZnRHcmFwaFBvc2l0aW9uKCkse2VsR3JhcGg6bix4eVJhdGlvczpvLGRpbWVuc2lvbnM6e3Bsb3Q6e2xlZnQ6aS5nbG9iYWxzLnRyYW5zbGF0ZVgsdG9wOmkuZ2xvYmFscy50cmFuc2xhdGVZLHdpZHRoOmkuZ2xvYmFscy5ncmlkV2lkdGgsaGVpZ2h0OmkuZ2xvYmFscy5ncmlkSGVpZ2h0fX19fX0se2tleTpcIm1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGwsaT10aGlzLGE9aS53O3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocyxyKXtpZihudWxsPT09aS5lbClyZXR1cm4gcihuZXcgRXJyb3IoXCJOb3QgZW5vdWdoIGRhdGEgdG8gZGlzcGxheSBvciB0YXJnZXQgZWxlbWVudCBub3QgZm91bmRcIikpOyhudWxsPT09ZXx8YS5nbG9iYWxzLmFsbFNlcmllc0NvbGxhcHNlZCkmJmkuc2VyaWVzLmhhbmRsZU5vRGF0YSgpLGkuZ3JpZD1uZXcgaihpKTt2YXIgbz1pLmdyaWQuZHJhd0dyaWQoKTtpZihpLmFubm90YXRpb25zPW5ldyBQKGkpLGkuYW5ub3RhdGlvbnMuZHJhd0ltYWdlQW5ub3MoKSxpLmFubm90YXRpb25zLmRyYXdUZXh0QW5ub3MoKSxcImJhY2tcIj09PWEuY29uZmlnLmdyaWQucG9zaXRpb24mJm8mJmEuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKG8uZWwpLEFycmF5LmlzQXJyYXkoZS5lbEdyYXBoKSlmb3IodmFyIG49MDtuPGUuZWxHcmFwaC5sZW5ndGg7bisrKWEuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKGUuZWxHcmFwaFtuXSk7ZWxzZSBhLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChlLmVsR3JhcGgpO1wiZnJvbnRcIj09PWEuY29uZmlnLmdyaWQucG9zaXRpb24mJm8mJmEuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKG8uZWwpLG8mJm8uZWxHcmlkQm9yZGVycyYmby5lbEdyaWRCb3JkZXJzLm5vZGUmJmEuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKG8uZWxHcmlkQm9yZGVycyksXCJmcm9udFwiPT09YS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5wb3NpdGlvbiYmaS5jcm9zc2hhaXJzLmRyYXdYQ3Jvc3NoYWlycygpLFwiZnJvbnRcIj09PWEuY29uZmlnLnlheGlzWzBdLmNyb3NzaGFpcnMucG9zaXRpb24mJmkuY3Jvc3NoYWlycy5kcmF3WUNyb3NzaGFpcnMoKSxcInRyZWVtYXBcIiE9PWEuY29uZmlnLmNoYXJ0LnR5cGUmJmkuYXhlcy5kcmF3QXhpcyhhLmNvbmZpZy5jaGFydC50eXBlLG8pO3ZhciBsPW5ldyBWKHQuY3R4LG8pLGg9bmV3IHEodC5jdHgsbyk7aWYobnVsbCE9PW8mJihsLnhBeGlzTGFiZWxDb3JyZWN0aW9ucyhvLnhBeGlzVGlja1dpZHRoKSxoLnNldFlBeGlzVGV4dEFsaWdubWVudHMoKSxhLmNvbmZpZy55YXhpcy5tYXAoKGZ1bmN0aW9uKHQsZSl7LTE9PT1hLmdsb2JhbHMuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YoZSkmJmgueUF4aXNUaXRsZVJvdGF0ZShlLHQub3Bwb3NpdGUpfSkpKSxpLmFubm90YXRpb25zLmRyYXdBeGVzQW5ub3RhdGlvbnMoKSwhYS5nbG9iYWxzLm5vRGF0YSl7aWYoYS5jb25maWcudG9vbHRpcC5lbmFibGVkJiYhYS5nbG9iYWxzLm5vRGF0YSYmaS53Lmdsb2JhbHMudG9vbHRpcC5kcmF3VG9vbHRpcChlLnh5UmF0aW9zKSxhLmdsb2JhbHMuYXhpc0NoYXJ0cyYmKGEuZ2xvYmFscy5pc1hOdW1lcmljfHxhLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWN8fGEuZ2xvYmFscy5pc1JhbmdlQmFyKSkoYS5jb25maWcuY2hhcnQuem9vbS5lbmFibGVkfHxhLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24mJmEuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5lbmFibGVkfHxhLmNvbmZpZy5jaGFydC5wYW4mJmEuY29uZmlnLmNoYXJ0LnBhbi5lbmFibGVkKSYmaS56b29tUGFuU2VsZWN0aW9uLmluaXQoe3h5UmF0aW9zOmUueHlSYXRpb3N9KTtlbHNle3ZhciBjPWEuY29uZmlnLmNoYXJ0LnRvb2xiYXIudG9vbHM7W1wiem9vbVwiLFwiem9vbWluXCIsXCJ6b29tb3V0XCIsXCJzZWxlY3Rpb25cIixcInBhblwiLFwicmVzZXRcIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7Y1t0XT0hMX0pKX1hLmNvbmZpZy5jaGFydC50b29sYmFyLnNob3cmJiFhLmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkJiZpLnRvb2xiYXIuY3JlYXRlVG9vbGJhcigpfWEuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5sZW5ndGg+MCYmYS5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QubWV0aG9kKHQucGFyYW1zLCExLHQuY29udGV4dCl9KSksYS5nbG9iYWxzLmF4aXNDaGFydHN8fGEuZ2xvYmFscy5ub0RhdGF8fGkuY29yZS5yZXNpemVOb25BeGlzQ2hhcnRzKCkscyhpKX0pKX19LHtrZXk6XCJkZXN0cm95XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlO3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsdGhpcy53aW5kb3dSZXNpemVIYW5kbGVyKSx0aGlzLmVsLnBhcmVudE5vZGUsdD10aGlzLnBhcmVudFJlc2l6ZUhhbmRsZXIsKGU9V3QuZ2V0KHQpKSYmKGUuZGlzY29ubmVjdCgpLFd0LmRlbGV0ZSh0KSk7dmFyIGk9dGhpcy53LmNvbmZpZy5jaGFydC5pZDtpJiZBcGV4Ll9jaGFydEluc3RhbmNlcy5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuaWQ9PT14LmVzY2FwZVN0cmluZyhpKSYmQXBleC5fY2hhcnRJbnN0YW5jZXMuc3BsaWNlKGUsMSl9KSksbmV3IE50KHRoaXMuY3R4KS5jbGVhcih7aXNVcGRhdGluZzohMX0pfX0se2tleTpcInVwZGF0ZU9wdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxhPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0scz0hKGFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdKXx8YXJndW1lbnRzWzNdLHI9IShhcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XSl8fGFyZ3VtZW50c1s0XSxvPXRoaXMudztyZXR1cm4gby5nbG9iYWxzLnNlbGVjdGlvbj12b2lkIDAsdC5zZXJpZXMmJih0aGlzLnNlcmllcy5yZXNldFNlcmllcyghMSwhMCwhMSksdC5zZXJpZXMubGVuZ3RoJiZ0LnNlcmllc1swXS5kYXRhJiYodC5zZXJpZXM9dC5zZXJpZXMubWFwKChmdW5jdGlvbih0LGkpe3JldHVybiBlLnVwZGF0ZUhlbHBlcnMuX2V4dGVuZFNlcmllcyh0LGkpfSkpKSx0aGlzLnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoKSksdC54YXhpcyYmKHQ9dGhpcy51cGRhdGVIZWxwZXJzLmZvcmNlWEF4aXNVcGRhdGUodCkpLHQueWF4aXMmJih0PXRoaXMudXBkYXRlSGVscGVycy5mb3JjZVlBeGlzVXBkYXRlKHQpKSxvLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5sZW5ndGg+MCYmdGhpcy5zZXJpZXMuY2xlYXJQcmV2aW91c1BhdGhzKCksdC50aGVtZSYmKHQ9dGhpcy50aGVtZS51cGRhdGVUaGVtZU9wdGlvbnModCkpLHRoaXMudXBkYXRlSGVscGVycy5fdXBkYXRlT3B0aW9ucyh0LGksYSxzLHIpfX0se2tleTpcInVwZGF0ZVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOltdLGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxpPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl07cmV0dXJuIHRoaXMuc2VyaWVzLnJlc2V0U2VyaWVzKCExKSx0aGlzLnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoKSx0aGlzLnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZVNlcmllcyh0LGUsaSl9fSx7a2V5OlwiYXBwZW5kU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxpPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0sYT10aGlzLncuY29uZmlnLnNlcmllcy5zbGljZSgpO3JldHVybiBhLnB1c2godCksdGhpcy5zZXJpZXMucmVzZXRTZXJpZXMoITEpLHRoaXMudXBkYXRlSGVscGVycy5yZXZlcnREZWZhdWx0QXhpc01pbk1heCgpLHRoaXMudXBkYXRlSGVscGVycy5fdXBkYXRlU2VyaWVzKGEsZSxpKX19LHtrZXk6XCJhcHBlbmREYXRhXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxpPXRoaXM7aS53Lmdsb2JhbHMuZGF0YUNoYW5nZWQ9ITAsaS5zZXJpZXMuZ2V0UHJldmlvdXNQYXRocygpO2Zvcih2YXIgYT1pLncuY29uZmlnLnNlcmllcy5zbGljZSgpLHM9MDtzPGEubGVuZ3RoO3MrKylpZihudWxsIT09dFtzXSYmdm9pZCAwIT09dFtzXSlmb3IodmFyIHI9MDtyPHRbc10uZGF0YS5sZW5ndGg7cisrKWFbc10uZGF0YS5wdXNoKHRbc10uZGF0YVtyXSk7cmV0dXJuIGkudy5jb25maWcuc2VyaWVzPWEsZSYmKGkudy5nbG9iYWxzLmluaXRpYWxTZXJpZXM9eC5jbG9uZShpLncuY29uZmlnLnNlcmllcykpLHRoaXMudXBkYXRlKCl9fSx7a2V5OlwidXBkYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGksYSl7bmV3IE50KGUuY3R4KS5jbGVhcih7aXNVcGRhdGluZzohMH0pO3ZhciBzPWUuY3JlYXRlKGUudy5jb25maWcuc2VyaWVzLHQpO2lmKCFzKXJldHVybiBpKGUpO2UubW91bnQocykudGhlbigoZnVuY3Rpb24oKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLncuY29uZmlnLmNoYXJ0LmV2ZW50cy51cGRhdGVkJiZlLncuY29uZmlnLmNoYXJ0LmV2ZW50cy51cGRhdGVkKGUsZS53KSxlLmV2ZW50cy5maXJlRXZlbnQoXCJ1cGRhdGVkXCIsW2UsZS53XSksZS53Lmdsb2JhbHMuaXNEaXJ0eT0hMCxpKGUpfSkpLmNhdGNoKChmdW5jdGlvbih0KXthKHQpfSkpfSkpfX0se2tleTpcImdldFN5bmNlZENoYXJ0c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRHcm91cGVkQ2hhcnRzKCksZT1bdGhpc107cmV0dXJuIHQubGVuZ3RoJiYoZT1bXSx0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2UucHVzaCh0KX0pKSksZX19LHtrZXk6XCJnZXRHcm91cGVkQ2hhcnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiBBcGV4Ll9jaGFydEluc3RhbmNlcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe2lmKHQuZ3JvdXApcmV0dXJuITB9KSkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC53LmNvbmZpZy5jaGFydC5ncm91cD09PWUuZ3JvdXA/ZS5jaGFydDp0fSkpfX0se2tleTpcInRvZ2dsZVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNlcmllcy50b2dnbGVTZXJpZXModCl9fSx7a2V5OlwiaGlnaGxpZ2h0U2VyaWVzT25MZWdlbmRIb3ZlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuc2VyaWVzLnRvZ2dsZVNlcmllc09uSG92ZXIodCxlKX19LHtrZXk6XCJzaG93U2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5zZXJpZXMuc2hvd1Nlcmllcyh0KX19LHtrZXk6XCJoaWRlU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5zZXJpZXMuaGlkZVNlcmllcyh0KX19LHtrZXk6XCJyZXNldFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXSxlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV07dGhpcy5zZXJpZXMucmVzZXRTZXJpZXModCxlKX19LHtrZXk6XCJhZGRFdmVudExpc3RlbmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0aGlzLmV2ZW50cy5hZGRFdmVudExpc3RlbmVyKHQsZSl9fSx7a2V5OlwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dGhpcy5ldmVudHMucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGUpfX0se2tleTpcImFkZFhheGlzQW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06dm9pZCAwLGE9dGhpcztpJiYoYT1pKSxhLmFubm90YXRpb25zLmFkZFhheGlzQW5ub3RhdGlvbkV4dGVybmFsKHQsZSxhKX19LHtrZXk6XCJhZGRZYXhpc0Fubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnZvaWQgMCxhPXRoaXM7aSYmKGE9aSksYS5hbm5vdGF0aW9ucy5hZGRZYXhpc0Fubm90YXRpb25FeHRlcm5hbCh0LGUsYSl9fSx7a2V5OlwiYWRkUG9pbnRBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp2b2lkIDAsYT10aGlzO2kmJihhPWkpLGEuYW5ub3RhdGlvbnMuYWRkUG9pbnRBbm5vdGF0aW9uRXh0ZXJuYWwodCxlLGEpfX0se2tleTpcImNsZWFyQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp2b2lkIDAsZT10aGlzO3QmJihlPXQpLGUuYW5ub3RhdGlvbnMuY2xlYXJBbm5vdGF0aW9ucyhlKX19LHtrZXk6XCJyZW1vdmVBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnZvaWQgMCxpPXRoaXM7ZSYmKGk9ZSksaS5hbm5vdGF0aW9ucy5yZW1vdmVBbm5vdGF0aW9uKGksdCl9fSx7a2V5OlwiZ2V0Q2hhcnRBcmVhXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtaW5uZXJcIil9fSx7a2V5OlwiZ2V0U2VyaWVzVG90YWxYUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmNvcmVVdGlscy5nZXRTZXJpZXNUb3RhbHNYUmFuZ2UodCxlKX19LHtrZXk6XCJnZXRIaWdoZXN0VmFsdWVJblNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjA7cmV0dXJuIG5ldyBVKHRoaXMuY3R4KS5nZXRNaW5ZTWF4WSh0KS5oaWdoZXN0WX19LHtrZXk6XCJnZXRMb3dlc3RWYWx1ZUluU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MDtyZXR1cm4gbmV3IFUodGhpcy5jdHgpLmdldE1pbllNYXhZKHQpLmxvd2VzdFl9fSx7a2V5OlwiZ2V0U2VyaWVzVG90YWxcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5zZXJpZXNUb3RhbHN9fSx7a2V5OlwidG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy51cGRhdGVIZWxwZXJzLnRvZ2dsZURhdGFQb2ludFNlbGVjdGlvbih0LGUpfX0se2tleTpcInpvb21YXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0aGlzLmN0eC50b29sYmFyLnpvb21VcGRhdGVPcHRpb25zKHQsZSl9fSx7a2V5Olwic2V0TG9jYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5sb2NhbGl6YXRpb24uc2V0Q3VycmVudExvY2FsZVZhbHVlcyh0KX19LHtrZXk6XCJkYXRhVVJJXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBHKHRoaXMuY3R4KS5kYXRhVVJJKHQpfX0se2tleTpcImV4cG9ydFRvQ1NWXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307cmV0dXJuIG5ldyBHKHRoaXMuY3R4KS5leHBvcnRUb0NTVih0KX19LHtrZXk6XCJwYXBlclwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5QYXBlcn19LHtrZXk6XCJfcGFyZW50UmVzaXplQ2FsbGJhY2tcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudy5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkJiZ0aGlzLncuY29uZmlnLmNoYXJ0LnJlZHJhd09uUGFyZW50UmVzaXplJiZ0aGlzLl93aW5kb3dSZXNpemUoKX19LHtrZXk6XCJfd2luZG93UmVzaXplXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2NsZWFyVGltZW91dCh0aGlzLncuZ2xvYmFscy5yZXNpemVUaW1lciksdGhpcy53Lmdsb2JhbHMucmVzaXplVGltZXI9d2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC53Lmdsb2JhbHMucmVzaXplZD0hMCx0LncuZ2xvYmFscy5kYXRhQ2hhbmdlZD0hMSx0LmN0eC51cGRhdGUoKX0pLDE1MCl9fSx7a2V5OlwiX3dpbmRvd1Jlc2l6ZUhhbmRsZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5jb25maWcuY2hhcnQucmVkcmF3T25XaW5kb3dSZXNpemU7XCJmdW5jdGlvblwiPT10eXBlb2YgdCYmKHQ9dCgpKSx0JiZ0aGlzLl93aW5kb3dSZXNpemUoKX19XSxbe2tleTpcImdldENoYXJ0QnlJRFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXguZXNjYXBlU3RyaW5nKHQpLGk9QXBleC5fY2hhcnRJbnN0YW5jZXMuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZD09PWV9KSlbMF07cmV0dXJuIGkmJmkuY2hhcnR9fSx7a2V5OlwiaW5pdE9uTG9hZFwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS1hcGV4Y2hhcnRzXVwiKSxpPTA7aTxlLmxlbmd0aDtpKyspe25ldyB0KGVbaV0sSlNPTi5wYXJzZShlW2ldLmdldEF0dHJpYnV0ZShcImRhdGEtb3B0aW9uc1wiKSkpLnJlbmRlcigpfX19LHtrZXk6XCJleGVjXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmdldENoYXJ0QnlJRCh0KTtpZihpKXtpLncuZ2xvYmFscy5pc0V4ZWNDYWxsZWQ9ITA7dmFyIGE9bnVsbDtpZigtMSE9PWkucHVibGljTWV0aG9kcy5pbmRleE9mKGUpKXtmb3IodmFyIHM9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShzPjI/cy0yOjApLG89MjtvPHM7bysrKXJbby0yXT1hcmd1bWVudHNbb107YT1pW2VdLmFwcGx5KGkscil9cmV0dXJuIGF9fX0se2tleTpcIm1lcmdlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4geC5leHRlbmQodCxlKX19XSksdH0oKTttb2R1bGUuZXhwb3J0cz1CdDtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvYXhpb3MnKTsiLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciBzZXR0bGUgPSByZXF1aXJlKCcuLy4uL2NvcmUvc2V0dGxlJyk7XG52YXIgY29va2llcyA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9jb29raWVzJyk7XG52YXIgYnVpbGRVUkwgPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvYnVpbGRVUkwnKTtcbnZhciBidWlsZEZ1bGxQYXRoID0gcmVxdWlyZSgnLi4vY29yZS9idWlsZEZ1bGxQYXRoJyk7XG52YXIgcGFyc2VIZWFkZXJzID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL3BhcnNlSGVhZGVycycpO1xudmFyIGlzVVJMU2FtZU9yaWdpbiA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9pc1VSTFNhbWVPcmlnaW4nKTtcbnZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJy4uL2NvcmUvY3JlYXRlRXJyb3InKTtcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJy4uL2RlZmF1bHRzJyk7XG52YXIgQ2FuY2VsID0gcmVxdWlyZSgnLi4vY2FuY2VsL0NhbmNlbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHhockFkYXB0ZXIoY29uZmlnKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiBkaXNwYXRjaFhoclJlcXVlc3QocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFyIHJlcXVlc3REYXRhID0gY29uZmlnLmRhdGE7XG4gICAgdmFyIHJlcXVlc3RIZWFkZXJzID0gY29uZmlnLmhlYWRlcnM7XG4gICAgdmFyIHJlc3BvbnNlVHlwZSA9IGNvbmZpZy5yZXNwb25zZVR5cGU7XG4gICAgdmFyIG9uQ2FuY2VsZWQ7XG4gICAgZnVuY3Rpb24gZG9uZSgpIHtcbiAgICAgIGlmIChjb25maWcuY2FuY2VsVG9rZW4pIHtcbiAgICAgICAgY29uZmlnLmNhbmNlbFRva2VuLnVuc3Vic2NyaWJlKG9uQ2FuY2VsZWQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLnNpZ25hbCkge1xuICAgICAgICBjb25maWcuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25DYW5jZWxlZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHV0aWxzLmlzRm9ybURhdGEocmVxdWVzdERhdGEpKSB7XG4gICAgICBkZWxldGUgcmVxdWVzdEhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddOyAvLyBMZXQgdGhlIGJyb3dzZXIgc2V0IGl0XG4gICAgfVxuXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcblxuICAgIC8vIEhUVFAgYmFzaWMgYXV0aGVudGljYXRpb25cbiAgICBpZiAoY29uZmlnLmF1dGgpIHtcbiAgICAgIHZhciB1c2VybmFtZSA9IGNvbmZpZy5hdXRoLnVzZXJuYW1lIHx8ICcnO1xuICAgICAgdmFyIHBhc3N3b3JkID0gY29uZmlnLmF1dGgucGFzc3dvcmQgPyB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoY29uZmlnLmF1dGgucGFzc3dvcmQpKSA6ICcnO1xuICAgICAgcmVxdWVzdEhlYWRlcnMuQXV0aG9yaXphdGlvbiA9ICdCYXNpYyAnICsgYnRvYSh1c2VybmFtZSArICc6JyArIHBhc3N3b3JkKTtcbiAgICB9XG5cbiAgICB2YXIgZnVsbFBhdGggPSBidWlsZEZ1bGxQYXRoKGNvbmZpZy5iYXNlVVJMLCBjb25maWcudXJsKTtcbiAgICByZXF1ZXN0Lm9wZW4oY29uZmlnLm1ldGhvZC50b1VwcGVyQ2FzZSgpLCBidWlsZFVSTChmdWxsUGF0aCwgY29uZmlnLnBhcmFtcywgY29uZmlnLnBhcmFtc1NlcmlhbGl6ZXIpLCB0cnVlKTtcblxuICAgIC8vIFNldCB0aGUgcmVxdWVzdCB0aW1lb3V0IGluIE1TXG4gICAgcmVxdWVzdC50aW1lb3V0ID0gY29uZmlnLnRpbWVvdXQ7XG5cbiAgICBmdW5jdGlvbiBvbmxvYWRlbmQoKSB7XG4gICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLy8gUHJlcGFyZSB0aGUgcmVzcG9uc2VcbiAgICAgIHZhciByZXNwb25zZUhlYWRlcnMgPSAnZ2V0QWxsUmVzcG9uc2VIZWFkZXJzJyBpbiByZXF1ZXN0ID8gcGFyc2VIZWFkZXJzKHJlcXVlc3QuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpIDogbnVsbDtcbiAgICAgIHZhciByZXNwb25zZURhdGEgPSAhcmVzcG9uc2VUeXBlIHx8IHJlc3BvbnNlVHlwZSA9PT0gJ3RleHQnIHx8ICByZXNwb25zZVR5cGUgPT09ICdqc29uJyA/XG4gICAgICAgIHJlcXVlc3QucmVzcG9uc2VUZXh0IDogcmVxdWVzdC5yZXNwb25zZTtcbiAgICAgIHZhciByZXNwb25zZSA9IHtcbiAgICAgICAgZGF0YTogcmVzcG9uc2VEYXRhLFxuICAgICAgICBzdGF0dXM6IHJlcXVlc3Quc3RhdHVzLFxuICAgICAgICBzdGF0dXNUZXh0OiByZXF1ZXN0LnN0YXR1c1RleHQsXG4gICAgICAgIGhlYWRlcnM6IHJlc3BvbnNlSGVhZGVycyxcbiAgICAgICAgY29uZmlnOiBjb25maWcsXG4gICAgICAgIHJlcXVlc3Q6IHJlcXVlc3RcbiAgICAgIH07XG5cbiAgICAgIHNldHRsZShmdW5jdGlvbiBfcmVzb2x2ZSh2YWx1ZSkge1xuICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSwgZnVuY3Rpb24gX3JlamVjdChlcnIpIHtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0sIHJlc3BvbnNlKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKCdvbmxvYWRlbmQnIGluIHJlcXVlc3QpIHtcbiAgICAgIC8vIFVzZSBvbmxvYWRlbmQgaWYgYXZhaWxhYmxlXG4gICAgICByZXF1ZXN0Lm9ubG9hZGVuZCA9IG9ubG9hZGVuZDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTGlzdGVuIGZvciByZWFkeSBzdGF0ZSB0byBlbXVsYXRlIG9ubG9hZGVuZFxuICAgICAgcmVxdWVzdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiBoYW5kbGVMb2FkKCkge1xuICAgICAgICBpZiAoIXJlcXVlc3QgfHwgcmVxdWVzdC5yZWFkeVN0YXRlICE9PSA0KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlIHJlcXVlc3QgZXJyb3JlZCBvdXQgYW5kIHdlIGRpZG4ndCBnZXQgYSByZXNwb25zZSwgdGhpcyB3aWxsIGJlXG4gICAgICAgIC8vIGhhbmRsZWQgYnkgb25lcnJvciBpbnN0ZWFkXG4gICAgICAgIC8vIFdpdGggb25lIGV4Y2VwdGlvbjogcmVxdWVzdCB0aGF0IHVzaW5nIGZpbGU6IHByb3RvY29sLCBtb3N0IGJyb3dzZXJzXG4gICAgICAgIC8vIHdpbGwgcmV0dXJuIHN0YXR1cyBhcyAwIGV2ZW4gdGhvdWdoIGl0J3MgYSBzdWNjZXNzZnVsIHJlcXVlc3RcbiAgICAgICAgaWYgKHJlcXVlc3Quc3RhdHVzID09PSAwICYmICEocmVxdWVzdC5yZXNwb25zZVVSTCAmJiByZXF1ZXN0LnJlc3BvbnNlVVJMLmluZGV4T2YoJ2ZpbGU6JykgPT09IDApKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJlYWR5c3RhdGUgaGFuZGxlciBpcyBjYWxsaW5nIGJlZm9yZSBvbmVycm9yIG9yIG9udGltZW91dCBoYW5kbGVycyxcbiAgICAgICAgLy8gc28gd2Ugc2hvdWxkIGNhbGwgb25sb2FkZW5kIG9uIHRoZSBuZXh0ICd0aWNrJ1xuICAgICAgICBzZXRUaW1lb3V0KG9ubG9hZGVuZCk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBicm93c2VyIHJlcXVlc3QgY2FuY2VsbGF0aW9uIChhcyBvcHBvc2VkIHRvIGEgbWFudWFsIGNhbmNlbGxhdGlvbilcbiAgICByZXF1ZXN0Lm9uYWJvcnQgPSBmdW5jdGlvbiBoYW5kbGVBYm9ydCgpIHtcbiAgICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJlamVjdChjcmVhdGVFcnJvcignUmVxdWVzdCBhYm9ydGVkJywgY29uZmlnLCAnRUNPTk5BQk9SVEVEJywgcmVxdWVzdCkpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLy8gSGFuZGxlIGxvdyBsZXZlbCBuZXR3b3JrIGVycm9yc1xuICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uIGhhbmRsZUVycm9yKCkge1xuICAgICAgLy8gUmVhbCBlcnJvcnMgYXJlIGhpZGRlbiBmcm9tIHVzIGJ5IHRoZSBicm93c2VyXG4gICAgICAvLyBvbmVycm9yIHNob3VsZCBvbmx5IGZpcmUgaWYgaXQncyBhIG5ldHdvcmsgZXJyb3JcbiAgICAgIHJlamVjdChjcmVhdGVFcnJvcignTmV0d29yayBFcnJvcicsIGNvbmZpZywgbnVsbCwgcmVxdWVzdCkpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLy8gSGFuZGxlIHRpbWVvdXRcbiAgICByZXF1ZXN0Lm9udGltZW91dCA9IGZ1bmN0aW9uIGhhbmRsZVRpbWVvdXQoKSB7XG4gICAgICB2YXIgdGltZW91dEVycm9yTWVzc2FnZSA9IGNvbmZpZy50aW1lb3V0ID8gJ3RpbWVvdXQgb2YgJyArIGNvbmZpZy50aW1lb3V0ICsgJ21zIGV4Y2VlZGVkJyA6ICd0aW1lb3V0IGV4Y2VlZGVkJztcbiAgICAgIHZhciB0cmFuc2l0aW9uYWwgPSBjb25maWcudHJhbnNpdGlvbmFsIHx8IGRlZmF1bHRzLnRyYW5zaXRpb25hbDtcbiAgICAgIGlmIChjb25maWcudGltZW91dEVycm9yTWVzc2FnZSkge1xuICAgICAgICB0aW1lb3V0RXJyb3JNZXNzYWdlID0gY29uZmlnLnRpbWVvdXRFcnJvck1lc3NhZ2U7XG4gICAgICB9XG4gICAgICByZWplY3QoY3JlYXRlRXJyb3IoXG4gICAgICAgIHRpbWVvdXRFcnJvck1lc3NhZ2UsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgdHJhbnNpdGlvbmFsLmNsYXJpZnlUaW1lb3V0RXJyb3IgPyAnRVRJTUVET1VUJyA6ICdFQ09OTkFCT1JURUQnLFxuICAgICAgICByZXF1ZXN0KSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH07XG5cbiAgICAvLyBBZGQgeHNyZiBoZWFkZXJcbiAgICAvLyBUaGlzIGlzIG9ubHkgZG9uZSBpZiBydW5uaW5nIGluIGEgc3RhbmRhcmQgYnJvd3NlciBlbnZpcm9ubWVudC5cbiAgICAvLyBTcGVjaWZpY2FsbHkgbm90IGlmIHdlJ3JlIGluIGEgd2ViIHdvcmtlciwgb3IgcmVhY3QtbmF0aXZlLlxuICAgIGlmICh1dGlscy5pc1N0YW5kYXJkQnJvd3NlckVudigpKSB7XG4gICAgICAvLyBBZGQgeHNyZiBoZWFkZXJcbiAgICAgIHZhciB4c3JmVmFsdWUgPSAoY29uZmlnLndpdGhDcmVkZW50aWFscyB8fCBpc1VSTFNhbWVPcmlnaW4oZnVsbFBhdGgpKSAmJiBjb25maWcueHNyZkNvb2tpZU5hbWUgP1xuICAgICAgICBjb29raWVzLnJlYWQoY29uZmlnLnhzcmZDb29raWVOYW1lKSA6XG4gICAgICAgIHVuZGVmaW5lZDtcblxuICAgICAgaWYgKHhzcmZWYWx1ZSkge1xuICAgICAgICByZXF1ZXN0SGVhZGVyc1tjb25maWcueHNyZkhlYWRlck5hbWVdID0geHNyZlZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkZCBoZWFkZXJzIHRvIHRoZSByZXF1ZXN0XG4gICAgaWYgKCdzZXRSZXF1ZXN0SGVhZGVyJyBpbiByZXF1ZXN0KSB7XG4gICAgICB1dGlscy5mb3JFYWNoKHJlcXVlc3RIZWFkZXJzLCBmdW5jdGlvbiBzZXRSZXF1ZXN0SGVhZGVyKHZhbCwga2V5KSB7XG4gICAgICAgIGlmICh0eXBlb2YgcmVxdWVzdERhdGEgPT09ICd1bmRlZmluZWQnICYmIGtleS50b0xvd2VyQ2FzZSgpID09PSAnY29udGVudC10eXBlJykge1xuICAgICAgICAgIC8vIFJlbW92ZSBDb250ZW50LVR5cGUgaWYgZGF0YSBpcyB1bmRlZmluZWRcbiAgICAgICAgICBkZWxldGUgcmVxdWVzdEhlYWRlcnNba2V5XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBPdGhlcndpc2UgYWRkIGhlYWRlciB0byB0aGUgcmVxdWVzdFxuICAgICAgICAgIHJlcXVlc3Quc2V0UmVxdWVzdEhlYWRlcihrZXksIHZhbCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFkZCB3aXRoQ3JlZGVudGlhbHMgdG8gcmVxdWVzdCBpZiBuZWVkZWRcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZy53aXRoQ3JlZGVudGlhbHMpKSB7XG4gICAgICByZXF1ZXN0LndpdGhDcmVkZW50aWFscyA9ICEhY29uZmlnLndpdGhDcmVkZW50aWFscztcbiAgICB9XG5cbiAgICAvLyBBZGQgcmVzcG9uc2VUeXBlIHRvIHJlcXVlc3QgaWYgbmVlZGVkXG4gICAgaWYgKHJlc3BvbnNlVHlwZSAmJiByZXNwb25zZVR5cGUgIT09ICdqc29uJykge1xuICAgICAgcmVxdWVzdC5yZXNwb25zZVR5cGUgPSBjb25maWcucmVzcG9uc2VUeXBlO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBwcm9ncmVzcyBpZiBuZWVkZWRcbiAgICBpZiAodHlwZW9mIGNvbmZpZy5vbkRvd25sb2FkUHJvZ3Jlc3MgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJlcXVlc3QuYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCBjb25maWcub25Eb3dubG9hZFByb2dyZXNzKTtcbiAgICB9XG5cbiAgICAvLyBOb3QgYWxsIGJyb3dzZXJzIHN1cHBvcnQgdXBsb2FkIGV2ZW50c1xuICAgIGlmICh0eXBlb2YgY29uZmlnLm9uVXBsb2FkUHJvZ3Jlc3MgPT09ICdmdW5jdGlvbicgJiYgcmVxdWVzdC51cGxvYWQpIHtcbiAgICAgIHJlcXVlc3QudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgY29uZmlnLm9uVXBsb2FkUHJvZ3Jlc3MpO1xuICAgIH1cblxuICAgIGlmIChjb25maWcuY2FuY2VsVG9rZW4gfHwgY29uZmlnLnNpZ25hbCkge1xuICAgICAgLy8gSGFuZGxlIGNhbmNlbGxhdGlvblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICAgIG9uQ2FuY2VsZWQgPSBmdW5jdGlvbihjYW5jZWwpIHtcbiAgICAgICAgaWYgKCFyZXF1ZXN0KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJlamVjdCghY2FuY2VsIHx8IChjYW5jZWwgJiYgY2FuY2VsLnR5cGUpID8gbmV3IENhbmNlbCgnY2FuY2VsZWQnKSA6IGNhbmNlbCk7XG4gICAgICAgIHJlcXVlc3QuYWJvcnQoKTtcbiAgICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgICB9O1xuXG4gICAgICBjb25maWcuY2FuY2VsVG9rZW4gJiYgY29uZmlnLmNhbmNlbFRva2VuLnN1YnNjcmliZShvbkNhbmNlbGVkKTtcbiAgICAgIGlmIChjb25maWcuc2lnbmFsKSB7XG4gICAgICAgIGNvbmZpZy5zaWduYWwuYWJvcnRlZCA/IG9uQ2FuY2VsZWQoKSA6IGNvbmZpZy5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkNhbmNlbGVkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXJlcXVlc3REYXRhKSB7XG4gICAgICByZXF1ZXN0RGF0YSA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8gU2VuZCB0aGUgcmVxdWVzdFxuICAgIHJlcXVlc3Quc2VuZChyZXF1ZXN0RGF0YSk7XG4gIH0pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuL2hlbHBlcnMvYmluZCcpO1xudmFyIEF4aW9zID0gcmVxdWlyZSgnLi9jb3JlL0F4aW9zJyk7XG52YXIgbWVyZ2VDb25maWcgPSByZXF1aXJlKCcuL2NvcmUvbWVyZ2VDb25maWcnKTtcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJy4vZGVmYXVsdHMnKTtcblxuLyoqXG4gKiBDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgQXhpb3NcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gZGVmYXVsdENvbmZpZyBUaGUgZGVmYXVsdCBjb25maWcgZm9yIHRoZSBpbnN0YW5jZVxuICogQHJldHVybiB7QXhpb3N9IEEgbmV3IGluc3RhbmNlIG9mIEF4aW9zXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlKGRlZmF1bHRDb25maWcpIHtcbiAgdmFyIGNvbnRleHQgPSBuZXcgQXhpb3MoZGVmYXVsdENvbmZpZyk7XG4gIHZhciBpbnN0YW5jZSA9IGJpbmQoQXhpb3MucHJvdG90eXBlLnJlcXVlc3QsIGNvbnRleHQpO1xuXG4gIC8vIENvcHkgYXhpb3MucHJvdG90eXBlIHRvIGluc3RhbmNlXG4gIHV0aWxzLmV4dGVuZChpbnN0YW5jZSwgQXhpb3MucHJvdG90eXBlLCBjb250ZXh0KTtcblxuICAvLyBDb3B5IGNvbnRleHQgdG8gaW5zdGFuY2VcbiAgdXRpbHMuZXh0ZW5kKGluc3RhbmNlLCBjb250ZXh0KTtcblxuICAvLyBGYWN0b3J5IGZvciBjcmVhdGluZyBuZXcgaW5zdGFuY2VzXG4gIGluc3RhbmNlLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShpbnN0YW5jZUNvbmZpZykge1xuICAgIHJldHVybiBjcmVhdGVJbnN0YW5jZShtZXJnZUNvbmZpZyhkZWZhdWx0Q29uZmlnLCBpbnN0YW5jZUNvbmZpZykpO1xuICB9O1xuXG4gIHJldHVybiBpbnN0YW5jZTtcbn1cblxuLy8gQ3JlYXRlIHRoZSBkZWZhdWx0IGluc3RhbmNlIHRvIGJlIGV4cG9ydGVkXG52YXIgYXhpb3MgPSBjcmVhdGVJbnN0YW5jZShkZWZhdWx0cyk7XG5cbi8vIEV4cG9zZSBBeGlvcyBjbGFzcyB0byBhbGxvdyBjbGFzcyBpbmhlcml0YW5jZVxuYXhpb3MuQXhpb3MgPSBBeGlvcztcblxuLy8gRXhwb3NlIENhbmNlbCAmIENhbmNlbFRva2VuXG5heGlvcy5DYW5jZWwgPSByZXF1aXJlKCcuL2NhbmNlbC9DYW5jZWwnKTtcbmF4aW9zLkNhbmNlbFRva2VuID0gcmVxdWlyZSgnLi9jYW5jZWwvQ2FuY2VsVG9rZW4nKTtcbmF4aW9zLmlzQ2FuY2VsID0gcmVxdWlyZSgnLi9jYW5jZWwvaXNDYW5jZWwnKTtcbmF4aW9zLlZFUlNJT04gPSByZXF1aXJlKCcuL2Vudi9kYXRhJykudmVyc2lvbjtcblxuLy8gRXhwb3NlIGFsbC9zcHJlYWRcbmF4aW9zLmFsbCA9IGZ1bmN0aW9uIGFsbChwcm9taXNlcykge1xuICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xufTtcbmF4aW9zLnNwcmVhZCA9IHJlcXVpcmUoJy4vaGVscGVycy9zcHJlYWQnKTtcblxuLy8gRXhwb3NlIGlzQXhpb3NFcnJvclxuYXhpb3MuaXNBeGlvc0Vycm9yID0gcmVxdWlyZSgnLi9oZWxwZXJzL2lzQXhpb3NFcnJvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGF4aW9zO1xuXG4vLyBBbGxvdyB1c2Ugb2YgZGVmYXVsdCBpbXBvcnQgc3ludGF4IGluIFR5cGVTY3JpcHRcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBheGlvcztcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBBIGBDYW5jZWxgIGlzIGFuIG9iamVjdCB0aGF0IGlzIHRocm93biB3aGVuIGFuIG9wZXJhdGlvbiBpcyBjYW5jZWxlZC5cbiAqXG4gKiBAY2xhc3NcbiAqIEBwYXJhbSB7c3RyaW5nPX0gbWVzc2FnZSBUaGUgbWVzc2FnZS5cbiAqL1xuZnVuY3Rpb24gQ2FuY2VsKG1lc3NhZ2UpIHtcbiAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbn1cblxuQ2FuY2VsLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gJ0NhbmNlbCcgKyAodGhpcy5tZXNzYWdlID8gJzogJyArIHRoaXMubWVzc2FnZSA6ICcnKTtcbn07XG5cbkNhbmNlbC5wcm90b3R5cGUuX19DQU5DRUxfXyA9IHRydWU7XG5cbm1vZHVsZS5leHBvcnRzID0gQ2FuY2VsO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQ2FuY2VsID0gcmVxdWlyZSgnLi9DYW5jZWwnKTtcblxuLyoqXG4gKiBBIGBDYW5jZWxUb2tlbmAgaXMgYW4gb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVxdWVzdCBjYW5jZWxsYXRpb24gb2YgYW4gb3BlcmF0aW9uLlxuICpcbiAqIEBjbGFzc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gZXhlY3V0b3IgVGhlIGV4ZWN1dG9yIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBDYW5jZWxUb2tlbihleGVjdXRvcikge1xuICBpZiAodHlwZW9mIGV4ZWN1dG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLicpO1xuICB9XG5cbiAgdmFyIHJlc29sdmVQcm9taXNlO1xuXG4gIHRoaXMucHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIHByb21pc2VFeGVjdXRvcihyZXNvbHZlKSB7XG4gICAgcmVzb2x2ZVByb21pc2UgPSByZXNvbHZlO1xuICB9KTtcblxuICB2YXIgdG9rZW4gPSB0aGlzO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gIHRoaXMucHJvbWlzZS50aGVuKGZ1bmN0aW9uKGNhbmNlbCkge1xuICAgIGlmICghdG9rZW4uX2xpc3RlbmVycykgcmV0dXJuO1xuXG4gICAgdmFyIGk7XG4gICAgdmFyIGwgPSB0b2tlbi5fbGlzdGVuZXJzLmxlbmd0aDtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHRva2VuLl9saXN0ZW5lcnNbaV0oY2FuY2VsKTtcbiAgICB9XG4gICAgdG9rZW4uX2xpc3RlbmVycyA9IG51bGw7XG4gIH0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gIHRoaXMucHJvbWlzZS50aGVuID0gZnVuY3Rpb24ob25mdWxmaWxsZWQpIHtcbiAgICB2YXIgX3Jlc29sdmU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpIHtcbiAgICAgIHRva2VuLnN1YnNjcmliZShyZXNvbHZlKTtcbiAgICAgIF9yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICB9KS50aGVuKG9uZnVsZmlsbGVkKTtcblxuICAgIHByb21pc2UuY2FuY2VsID0gZnVuY3Rpb24gcmVqZWN0KCkge1xuICAgICAgdG9rZW4udW5zdWJzY3JpYmUoX3Jlc29sdmUpO1xuICAgIH07XG5cbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfTtcblxuICBleGVjdXRvcihmdW5jdGlvbiBjYW5jZWwobWVzc2FnZSkge1xuICAgIGlmICh0b2tlbi5yZWFzb24pIHtcbiAgICAgIC8vIENhbmNlbGxhdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHJlcXVlc3RlZFxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRva2VuLnJlYXNvbiA9IG5ldyBDYW5jZWwobWVzc2FnZSk7XG4gICAgcmVzb2x2ZVByb21pc2UodG9rZW4ucmVhc29uKTtcbiAgfSk7XG59XG5cbi8qKlxuICogVGhyb3dzIGEgYENhbmNlbGAgaWYgY2FuY2VsbGF0aW9uIGhhcyBiZWVuIHJlcXVlc3RlZC5cbiAqL1xuQ2FuY2VsVG9rZW4ucHJvdG90eXBlLnRocm93SWZSZXF1ZXN0ZWQgPSBmdW5jdGlvbiB0aHJvd0lmUmVxdWVzdGVkKCkge1xuICBpZiAodGhpcy5yZWFzb24pIHtcbiAgICB0aHJvdyB0aGlzLnJlYXNvbjtcbiAgfVxufTtcblxuLyoqXG4gKiBTdWJzY3JpYmUgdG8gdGhlIGNhbmNlbCBzaWduYWxcbiAqL1xuXG5DYW5jZWxUb2tlbi5wcm90b3R5cGUuc3Vic2NyaWJlID0gZnVuY3Rpb24gc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gIGlmICh0aGlzLnJlYXNvbikge1xuICAgIGxpc3RlbmVyKHRoaXMucmVhc29uKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAodGhpcy5fbGlzdGVuZXJzKSB7XG4gICAgdGhpcy5fbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuX2xpc3RlbmVycyA9IFtsaXN0ZW5lcl07XG4gIH1cbn07XG5cbi8qKlxuICogVW5zdWJzY3JpYmUgZnJvbSB0aGUgY2FuY2VsIHNpZ25hbFxuICovXG5cbkNhbmNlbFRva2VuLnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uIHVuc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gIGlmICghdGhpcy5fbGlzdGVuZXJzKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBpbmRleCA9IHRoaXMuX2xpc3RlbmVycy5pbmRleE9mKGxpc3RlbmVyKTtcbiAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgIHRoaXMuX2xpc3RlbmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG59O1xuXG4vKipcbiAqIFJldHVybnMgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMgYSBuZXcgYENhbmNlbFRva2VuYCBhbmQgYSBmdW5jdGlvbiB0aGF0LCB3aGVuIGNhbGxlZCxcbiAqIGNhbmNlbHMgdGhlIGBDYW5jZWxUb2tlbmAuXG4gKi9cbkNhbmNlbFRva2VuLnNvdXJjZSA9IGZ1bmN0aW9uIHNvdXJjZSgpIHtcbiAgdmFyIGNhbmNlbDtcbiAgdmFyIHRva2VuID0gbmV3IENhbmNlbFRva2VuKGZ1bmN0aW9uIGV4ZWN1dG9yKGMpIHtcbiAgICBjYW5jZWwgPSBjO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICB0b2tlbjogdG9rZW4sXG4gICAgY2FuY2VsOiBjYW5jZWxcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQ2FuY2VsVG9rZW47XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNDYW5jZWwodmFsdWUpIHtcbiAgcmV0dXJuICEhKHZhbHVlICYmIHZhbHVlLl9fQ0FOQ0VMX18pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xudmFyIGJ1aWxkVVJMID0gcmVxdWlyZSgnLi4vaGVscGVycy9idWlsZFVSTCcpO1xudmFyIEludGVyY2VwdG9yTWFuYWdlciA9IHJlcXVpcmUoJy4vSW50ZXJjZXB0b3JNYW5hZ2VyJyk7XG52YXIgZGlzcGF0Y2hSZXF1ZXN0ID0gcmVxdWlyZSgnLi9kaXNwYXRjaFJlcXVlc3QnKTtcbnZhciBtZXJnZUNvbmZpZyA9IHJlcXVpcmUoJy4vbWVyZ2VDb25maWcnKTtcbnZhciB2YWxpZGF0b3IgPSByZXF1aXJlKCcuLi9oZWxwZXJzL3ZhbGlkYXRvcicpO1xuXG52YXIgdmFsaWRhdG9ycyA9IHZhbGlkYXRvci52YWxpZGF0b3JzO1xuLyoqXG4gKiBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgQXhpb3NcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gaW5zdGFuY2VDb25maWcgVGhlIGRlZmF1bHQgY29uZmlnIGZvciB0aGUgaW5zdGFuY2VcbiAqL1xuZnVuY3Rpb24gQXhpb3MoaW5zdGFuY2VDb25maWcpIHtcbiAgdGhpcy5kZWZhdWx0cyA9IGluc3RhbmNlQ29uZmlnO1xuICB0aGlzLmludGVyY2VwdG9ycyA9IHtcbiAgICByZXF1ZXN0OiBuZXcgSW50ZXJjZXB0b3JNYW5hZ2VyKCksXG4gICAgcmVzcG9uc2U6IG5ldyBJbnRlcmNlcHRvck1hbmFnZXIoKVxuICB9O1xufVxuXG4vKipcbiAqIERpc3BhdGNoIGEgcmVxdWVzdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZyBzcGVjaWZpYyBmb3IgdGhpcyByZXF1ZXN0IChtZXJnZWQgd2l0aCB0aGlzLmRlZmF1bHRzKVxuICovXG5BeGlvcy5wcm90b3R5cGUucmVxdWVzdCA9IGZ1bmN0aW9uIHJlcXVlc3QoY29uZmlnT3JVcmwsIGNvbmZpZykge1xuICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgLy8gQWxsb3cgZm9yIGF4aW9zKCdleGFtcGxlL3VybCdbLCBjb25maWddKSBhIGxhIGZldGNoIEFQSVxuICBpZiAodHlwZW9mIGNvbmZpZ09yVXJsID09PSAnc3RyaW5nJykge1xuICAgIGNvbmZpZyA9IGNvbmZpZyB8fCB7fTtcbiAgICBjb25maWcudXJsID0gY29uZmlnT3JVcmw7XG4gIH0gZWxzZSB7XG4gICAgY29uZmlnID0gY29uZmlnT3JVcmwgfHwge307XG4gIH1cblxuICBpZiAoIWNvbmZpZy51cmwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Byb3ZpZGVkIGNvbmZpZyB1cmwgaXMgbm90IHZhbGlkJyk7XG4gIH1cblxuICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xuXG4gIC8vIFNldCBjb25maWcubWV0aG9kXG4gIGlmIChjb25maWcubWV0aG9kKSB7XG4gICAgY29uZmlnLm1ldGhvZCA9IGNvbmZpZy5tZXRob2QudG9Mb3dlckNhc2UoKTtcbiAgfSBlbHNlIGlmICh0aGlzLmRlZmF1bHRzLm1ldGhvZCkge1xuICAgIGNvbmZpZy5tZXRob2QgPSB0aGlzLmRlZmF1bHRzLm1ldGhvZC50b0xvd2VyQ2FzZSgpO1xuICB9IGVsc2Uge1xuICAgIGNvbmZpZy5tZXRob2QgPSAnZ2V0JztcbiAgfVxuXG4gIHZhciB0cmFuc2l0aW9uYWwgPSBjb25maWcudHJhbnNpdGlvbmFsO1xuXG4gIGlmICh0cmFuc2l0aW9uYWwgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhbGlkYXRvci5hc3NlcnRPcHRpb25zKHRyYW5zaXRpb25hbCwge1xuICAgICAgc2lsZW50SlNPTlBhcnNpbmc6IHZhbGlkYXRvcnMudHJhbnNpdGlvbmFsKHZhbGlkYXRvcnMuYm9vbGVhbiksXG4gICAgICBmb3JjZWRKU09OUGFyc2luZzogdmFsaWRhdG9ycy50cmFuc2l0aW9uYWwodmFsaWRhdG9ycy5ib29sZWFuKSxcbiAgICAgIGNsYXJpZnlUaW1lb3V0RXJyb3I6IHZhbGlkYXRvcnMudHJhbnNpdGlvbmFsKHZhbGlkYXRvcnMuYm9vbGVhbilcbiAgICB9LCBmYWxzZSk7XG4gIH1cblxuICAvLyBmaWx0ZXIgb3V0IHNraXBwZWQgaW50ZXJjZXB0b3JzXG4gIHZhciByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbiA9IFtdO1xuICB2YXIgc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzID0gdHJ1ZTtcbiAgdGhpcy5pbnRlcmNlcHRvcnMucmVxdWVzdC5mb3JFYWNoKGZ1bmN0aW9uIHVuc2hpZnRSZXF1ZXN0SW50ZXJjZXB0b3JzKGludGVyY2VwdG9yKSB7XG4gICAgaWYgKHR5cGVvZiBpbnRlcmNlcHRvci5ydW5XaGVuID09PSAnZnVuY3Rpb24nICYmIGludGVyY2VwdG9yLnJ1bldoZW4oY29uZmlnKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgPSBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgJiYgaW50ZXJjZXB0b3Iuc3luY2hyb25vdXM7XG5cbiAgICByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbi51bnNoaWZ0KGludGVyY2VwdG9yLmZ1bGZpbGxlZCwgaW50ZXJjZXB0b3IucmVqZWN0ZWQpO1xuICB9KTtcblxuICB2YXIgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluID0gW107XG4gIHRoaXMuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLmZvckVhY2goZnVuY3Rpb24gcHVzaFJlc3BvbnNlSW50ZXJjZXB0b3JzKGludGVyY2VwdG9yKSB7XG4gICAgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLnB1c2goaW50ZXJjZXB0b3IuZnVsZmlsbGVkLCBpbnRlcmNlcHRvci5yZWplY3RlZCk7XG4gIH0pO1xuXG4gIHZhciBwcm9taXNlO1xuXG4gIGlmICghc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzKSB7XG4gICAgdmFyIGNoYWluID0gW2Rpc3BhdGNoUmVxdWVzdCwgdW5kZWZpbmVkXTtcblxuICAgIEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KGNoYWluLCByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbik7XG4gICAgY2hhaW4gPSBjaGFpbi5jb25jYXQocmVzcG9uc2VJbnRlcmNlcHRvckNoYWluKTtcblxuICAgIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoY29uZmlnKTtcbiAgICB3aGlsZSAoY2hhaW4ubGVuZ3RoKSB7XG4gICAgICBwcm9taXNlID0gcHJvbWlzZS50aGVuKGNoYWluLnNoaWZ0KCksIGNoYWluLnNoaWZ0KCkpO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG5cblxuICB2YXIgbmV3Q29uZmlnID0gY29uZmlnO1xuICB3aGlsZSAocmVxdWVzdEludGVyY2VwdG9yQ2hhaW4ubGVuZ3RoKSB7XG4gICAgdmFyIG9uRnVsZmlsbGVkID0gcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4uc2hpZnQoKTtcbiAgICB2YXIgb25SZWplY3RlZCA9IHJlcXVlc3RJbnRlcmNlcHRvckNoYWluLnNoaWZ0KCk7XG4gICAgdHJ5IHtcbiAgICAgIG5ld0NvbmZpZyA9IG9uRnVsZmlsbGVkKG5ld0NvbmZpZyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIG9uUmVqZWN0ZWQoZXJyb3IpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdHJ5IHtcbiAgICBwcm9taXNlID0gZGlzcGF0Y2hSZXF1ZXN0KG5ld0NvbmZpZyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgfVxuXG4gIHdoaWxlIChyZXNwb25zZUludGVyY2VwdG9yQ2hhaW4ubGVuZ3RoKSB7XG4gICAgcHJvbWlzZSA9IHByb21pc2UudGhlbihyZXNwb25zZUludGVyY2VwdG9yQ2hhaW4uc2hpZnQoKSwgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLnNoaWZ0KCkpO1xuICB9XG5cbiAgcmV0dXJuIHByb21pc2U7XG59O1xuXG5BeGlvcy5wcm90b3R5cGUuZ2V0VXJpID0gZnVuY3Rpb24gZ2V0VXJpKGNvbmZpZykge1xuICBpZiAoIWNvbmZpZy51cmwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Byb3ZpZGVkIGNvbmZpZyB1cmwgaXMgbm90IHZhbGlkJyk7XG4gIH1cbiAgY29uZmlnID0gbWVyZ2VDb25maWcodGhpcy5kZWZhdWx0cywgY29uZmlnKTtcbiAgcmV0dXJuIGJ1aWxkVVJMKGNvbmZpZy51cmwsIGNvbmZpZy5wYXJhbXMsIGNvbmZpZy5wYXJhbXNTZXJpYWxpemVyKS5yZXBsYWNlKC9eXFw/LywgJycpO1xufTtcblxuLy8gUHJvdmlkZSBhbGlhc2VzIGZvciBzdXBwb3J0ZWQgcmVxdWVzdCBtZXRob2RzXG51dGlscy5mb3JFYWNoKFsnZGVsZXRlJywgJ2dldCcsICdoZWFkJywgJ29wdGlvbnMnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZE5vRGF0YShtZXRob2QpIHtcbiAgLyplc2xpbnQgZnVuYy1uYW1lczowKi9cbiAgQXhpb3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbih1cmwsIGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QobWVyZ2VDb25maWcoY29uZmlnIHx8IHt9LCB7XG4gICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgIHVybDogdXJsLFxuICAgICAgZGF0YTogKGNvbmZpZyB8fCB7fSkuZGF0YVxuICAgIH0pKTtcbiAgfTtcbn0pO1xuXG51dGlscy5mb3JFYWNoKFsncG9zdCcsICdwdXQnLCAncGF0Y2gnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZFdpdGhEYXRhKG1ldGhvZCkge1xuICAvKmVzbGludCBmdW5jLW5hbWVzOjAqL1xuICBBeGlvcy5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uKHVybCwgZGF0YSwgY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdChtZXJnZUNvbmZpZyhjb25maWcgfHwge30sIHtcbiAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAgdXJsOiB1cmwsXG4gICAgICBkYXRhOiBkYXRhXG4gICAgfSkpO1xuICB9O1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gQXhpb3M7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxuZnVuY3Rpb24gSW50ZXJjZXB0b3JNYW5hZ2VyKCkge1xuICB0aGlzLmhhbmRsZXJzID0gW107XG59XG5cbi8qKlxuICogQWRkIGEgbmV3IGludGVyY2VwdG9yIHRvIHRoZSBzdGFja1xuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bGZpbGxlZCBUaGUgZnVuY3Rpb24gdG8gaGFuZGxlIGB0aGVuYCBmb3IgYSBgUHJvbWlzZWBcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHJlamVjdGVkIFRoZSBmdW5jdGlvbiB0byBoYW5kbGUgYHJlamVjdGAgZm9yIGEgYFByb21pc2VgXG4gKlxuICogQHJldHVybiB7TnVtYmVyfSBBbiBJRCB1c2VkIHRvIHJlbW92ZSBpbnRlcmNlcHRvciBsYXRlclxuICovXG5JbnRlcmNlcHRvck1hbmFnZXIucHJvdG90eXBlLnVzZSA9IGZ1bmN0aW9uIHVzZShmdWxmaWxsZWQsIHJlamVjdGVkLCBvcHRpb25zKSB7XG4gIHRoaXMuaGFuZGxlcnMucHVzaCh7XG4gICAgZnVsZmlsbGVkOiBmdWxmaWxsZWQsXG4gICAgcmVqZWN0ZWQ6IHJlamVjdGVkLFxuICAgIHN5bmNocm9ub3VzOiBvcHRpb25zID8gb3B0aW9ucy5zeW5jaHJvbm91cyA6IGZhbHNlLFxuICAgIHJ1bldoZW46IG9wdGlvbnMgPyBvcHRpb25zLnJ1bldoZW4gOiBudWxsXG4gIH0pO1xuICByZXR1cm4gdGhpcy5oYW5kbGVycy5sZW5ndGggLSAxO1xufTtcblxuLyoqXG4gKiBSZW1vdmUgYW4gaW50ZXJjZXB0b3IgZnJvbSB0aGUgc3RhY2tcbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gaWQgVGhlIElEIHRoYXQgd2FzIHJldHVybmVkIGJ5IGB1c2VgXG4gKi9cbkludGVyY2VwdG9yTWFuYWdlci5wcm90b3R5cGUuZWplY3QgPSBmdW5jdGlvbiBlamVjdChpZCkge1xuICBpZiAodGhpcy5oYW5kbGVyc1tpZF0pIHtcbiAgICB0aGlzLmhhbmRsZXJzW2lkXSA9IG51bGw7XG4gIH1cbn07XG5cbi8qKlxuICogSXRlcmF0ZSBvdmVyIGFsbCB0aGUgcmVnaXN0ZXJlZCBpbnRlcmNlcHRvcnNcbiAqXG4gKiBUaGlzIG1ldGhvZCBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBza2lwcGluZyBvdmVyIGFueVxuICogaW50ZXJjZXB0b3JzIHRoYXQgbWF5IGhhdmUgYmVjb21lIGBudWxsYCBjYWxsaW5nIGBlamVjdGAuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgZm9yIGVhY2ggaW50ZXJjZXB0b3JcbiAqL1xuSW50ZXJjZXB0b3JNYW5hZ2VyLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24gZm9yRWFjaChmbikge1xuICB1dGlscy5mb3JFYWNoKHRoaXMuaGFuZGxlcnMsIGZ1bmN0aW9uIGZvckVhY2hIYW5kbGVyKGgpIHtcbiAgICBpZiAoaCAhPT0gbnVsbCkge1xuICAgICAgZm4oaCk7XG4gICAgfVxuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gSW50ZXJjZXB0b3JNYW5hZ2VyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNBYnNvbHV0ZVVSTCA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvaXNBYnNvbHV0ZVVSTCcpO1xudmFyIGNvbWJpbmVVUkxzID0gcmVxdWlyZSgnLi4vaGVscGVycy9jb21iaW5lVVJMcycpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgVVJMIGJ5IGNvbWJpbmluZyB0aGUgYmFzZVVSTCB3aXRoIHRoZSByZXF1ZXN0ZWRVUkwsXG4gKiBvbmx5IHdoZW4gdGhlIHJlcXVlc3RlZFVSTCBpcyBub3QgYWxyZWFkeSBhbiBhYnNvbHV0ZSBVUkwuXG4gKiBJZiB0aGUgcmVxdWVzdFVSTCBpcyBhYnNvbHV0ZSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSByZXF1ZXN0ZWRVUkwgdW50b3VjaGVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVVJMIFRoZSBiYXNlIFVSTFxuICogQHBhcmFtIHtzdHJpbmd9IHJlcXVlc3RlZFVSTCBBYnNvbHV0ZSBvciByZWxhdGl2ZSBVUkwgdG8gY29tYmluZVxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbWJpbmVkIGZ1bGwgcGF0aFxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJ1aWxkRnVsbFBhdGgoYmFzZVVSTCwgcmVxdWVzdGVkVVJMKSB7XG4gIGlmIChiYXNlVVJMICYmICFpc0Fic29sdXRlVVJMKHJlcXVlc3RlZFVSTCkpIHtcbiAgICByZXR1cm4gY29tYmluZVVSTHMoYmFzZVVSTCwgcmVxdWVzdGVkVVJMKTtcbiAgfVxuICByZXR1cm4gcmVxdWVzdGVkVVJMO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGVuaGFuY2VFcnJvciA9IHJlcXVpcmUoJy4vZW5oYW5jZUVycm9yJyk7XG5cbi8qKlxuICogQ3JlYXRlIGFuIEVycm9yIHdpdGggdGhlIHNwZWNpZmllZCBtZXNzYWdlLCBjb25maWcsIGVycm9yIGNvZGUsIHJlcXVlc3QgYW5kIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnLlxuICogQHBhcmFtIHtzdHJpbmd9IFtjb2RlXSBUaGUgZXJyb3IgY29kZSAoZm9yIGV4YW1wbGUsICdFQ09OTkFCT1JURUQnKS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVxdWVzdF0gVGhlIHJlcXVlc3QuXG4gKiBAcGFyYW0ge09iamVjdH0gW3Jlc3BvbnNlXSBUaGUgcmVzcG9uc2UuXG4gKiBAcmV0dXJucyB7RXJyb3J9IFRoZSBjcmVhdGVkIGVycm9yLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNyZWF0ZUVycm9yKG1lc3NhZ2UsIGNvbmZpZywgY29kZSwgcmVxdWVzdCwgcmVzcG9uc2UpIHtcbiAgdmFyIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICByZXR1cm4gZW5oYW5jZUVycm9yKGVycm9yLCBjb25maWcsIGNvZGUsIHJlcXVlc3QsIHJlc3BvbnNlKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciB0cmFuc2Zvcm1EYXRhID0gcmVxdWlyZSgnLi90cmFuc2Zvcm1EYXRhJyk7XG52YXIgaXNDYW5jZWwgPSByZXF1aXJlKCcuLi9jYW5jZWwvaXNDYW5jZWwnKTtcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJy4uL2RlZmF1bHRzJyk7XG52YXIgQ2FuY2VsID0gcmVxdWlyZSgnLi4vY2FuY2VsL0NhbmNlbCcpO1xuXG4vKipcbiAqIFRocm93cyBhIGBDYW5jZWxgIGlmIGNhbmNlbGxhdGlvbiBoYXMgYmVlbiByZXF1ZXN0ZWQuXG4gKi9cbmZ1bmN0aW9uIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKSB7XG4gIGlmIChjb25maWcuY2FuY2VsVG9rZW4pIHtcbiAgICBjb25maWcuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpO1xuICB9XG5cbiAgaWYgKGNvbmZpZy5zaWduYWwgJiYgY29uZmlnLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgdGhyb3cgbmV3IENhbmNlbCgnY2FuY2VsZWQnKTtcbiAgfVxufVxuXG4vKipcbiAqIERpc3BhdGNoIGEgcmVxdWVzdCB0byB0aGUgc2VydmVyIHVzaW5nIHRoZSBjb25maWd1cmVkIGFkYXB0ZXIuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnIHRoYXQgaXMgdG8gYmUgdXNlZCBmb3IgdGhlIHJlcXVlc3RcbiAqIEByZXR1cm5zIHtQcm9taXNlfSBUaGUgUHJvbWlzZSB0byBiZSBmdWxmaWxsZWRcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBkaXNwYXRjaFJlcXVlc3QoY29uZmlnKSB7XG4gIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcblxuICAvLyBFbnN1cmUgaGVhZGVycyBleGlzdFxuICBjb25maWcuaGVhZGVycyA9IGNvbmZpZy5oZWFkZXJzIHx8IHt9O1xuXG4gIC8vIFRyYW5zZm9ybSByZXF1ZXN0IGRhdGFcbiAgY29uZmlnLmRhdGEgPSB0cmFuc2Zvcm1EYXRhLmNhbGwoXG4gICAgY29uZmlnLFxuICAgIGNvbmZpZy5kYXRhLFxuICAgIGNvbmZpZy5oZWFkZXJzLFxuICAgIGNvbmZpZy50cmFuc2Zvcm1SZXF1ZXN0XG4gICk7XG5cbiAgLy8gRmxhdHRlbiBoZWFkZXJzXG4gIGNvbmZpZy5oZWFkZXJzID0gdXRpbHMubWVyZ2UoXG4gICAgY29uZmlnLmhlYWRlcnMuY29tbW9uIHx8IHt9LFxuICAgIGNvbmZpZy5oZWFkZXJzW2NvbmZpZy5tZXRob2RdIHx8IHt9LFxuICAgIGNvbmZpZy5oZWFkZXJzXG4gICk7XG5cbiAgdXRpbHMuZm9yRWFjaChcbiAgICBbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCcsICdwb3N0JywgJ3B1dCcsICdwYXRjaCcsICdjb21tb24nXSxcbiAgICBmdW5jdGlvbiBjbGVhbkhlYWRlckNvbmZpZyhtZXRob2QpIHtcbiAgICAgIGRlbGV0ZSBjb25maWcuaGVhZGVyc1ttZXRob2RdO1xuICAgIH1cbiAgKTtcblxuICB2YXIgYWRhcHRlciA9IGNvbmZpZy5hZGFwdGVyIHx8IGRlZmF1bHRzLmFkYXB0ZXI7XG5cbiAgcmV0dXJuIGFkYXB0ZXIoY29uZmlnKS50aGVuKGZ1bmN0aW9uIG9uQWRhcHRlclJlc29sdXRpb24ocmVzcG9uc2UpIHtcbiAgICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgICAvLyBUcmFuc2Zvcm0gcmVzcG9uc2UgZGF0YVxuICAgIHJlc3BvbnNlLmRhdGEgPSB0cmFuc2Zvcm1EYXRhLmNhbGwoXG4gICAgICBjb25maWcsXG4gICAgICByZXNwb25zZS5kYXRhLFxuICAgICAgcmVzcG9uc2UuaGVhZGVycyxcbiAgICAgIGNvbmZpZy50cmFuc2Zvcm1SZXNwb25zZVxuICAgICk7XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH0sIGZ1bmN0aW9uIG9uQWRhcHRlclJlamVjdGlvbihyZWFzb24pIHtcbiAgICBpZiAoIWlzQ2FuY2VsKHJlYXNvbikpIHtcbiAgICAgIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcblxuICAgICAgLy8gVHJhbnNmb3JtIHJlc3BvbnNlIGRhdGFcbiAgICAgIGlmIChyZWFzb24gJiYgcmVhc29uLnJlc3BvbnNlKSB7XG4gICAgICAgIHJlYXNvbi5yZXNwb25zZS5kYXRhID0gdHJhbnNmb3JtRGF0YS5jYWxsKFxuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICByZWFzb24ucmVzcG9uc2UuZGF0YSxcbiAgICAgICAgICByZWFzb24ucmVzcG9uc2UuaGVhZGVycyxcbiAgICAgICAgICBjb25maWcudHJhbnNmb3JtUmVzcG9uc2VcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVhc29uKTtcbiAgfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFVwZGF0ZSBhbiBFcnJvciB3aXRoIHRoZSBzcGVjaWZpZWQgY29uZmlnLCBlcnJvciBjb2RlLCBhbmQgcmVzcG9uc2UuXG4gKlxuICogQHBhcmFtIHtFcnJvcn0gZXJyb3IgVGhlIGVycm9yIHRvIHVwZGF0ZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbY29kZV0gVGhlIGVycm9yIGNvZGUgKGZvciBleGFtcGxlLCAnRUNPTk5BQk9SVEVEJykuXG4gKiBAcGFyYW0ge09iamVjdH0gW3JlcXVlc3RdIFRoZSByZXF1ZXN0LlxuICogQHBhcmFtIHtPYmplY3R9IFtyZXNwb25zZV0gVGhlIHJlc3BvbnNlLlxuICogQHJldHVybnMge0Vycm9yfSBUaGUgZXJyb3IuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZW5oYW5jZUVycm9yKGVycm9yLCBjb25maWcsIGNvZGUsIHJlcXVlc3QsIHJlc3BvbnNlKSB7XG4gIGVycm9yLmNvbmZpZyA9IGNvbmZpZztcbiAgaWYgKGNvZGUpIHtcbiAgICBlcnJvci5jb2RlID0gY29kZTtcbiAgfVxuXG4gIGVycm9yLnJlcXVlc3QgPSByZXF1ZXN0O1xuICBlcnJvci5yZXNwb25zZSA9IHJlc3BvbnNlO1xuICBlcnJvci5pc0F4aW9zRXJyb3IgPSB0cnVlO1xuXG4gIGVycm9yLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gU3RhbmRhcmRcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIC8vIE1pY3Jvc29mdFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICBudW1iZXI6IHRoaXMubnVtYmVyLFxuICAgICAgLy8gTW96aWxsYVxuICAgICAgZmlsZU5hbWU6IHRoaXMuZmlsZU5hbWUsXG4gICAgICBsaW5lTnVtYmVyOiB0aGlzLmxpbmVOdW1iZXIsXG4gICAgICBjb2x1bW5OdW1iZXI6IHRoaXMuY29sdW1uTnVtYmVyLFxuICAgICAgc3RhY2s6IHRoaXMuc3RhY2ssXG4gICAgICAvLyBBeGlvc1xuICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZyxcbiAgICAgIGNvZGU6IHRoaXMuY29kZSxcbiAgICAgIHN0YXR1czogdGhpcy5yZXNwb25zZSAmJiB0aGlzLnJlc3BvbnNlLnN0YXR1cyA/IHRoaXMucmVzcG9uc2Uuc3RhdHVzIDogbnVsbFxuICAgIH07XG4gIH07XG4gIHJldHVybiBlcnJvcjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG5cbi8qKlxuICogQ29uZmlnLXNwZWNpZmljIG1lcmdlLWZ1bmN0aW9uIHdoaWNoIGNyZWF0ZXMgYSBuZXcgY29uZmlnLW9iamVjdFxuICogYnkgbWVyZ2luZyB0d28gY29uZmlndXJhdGlvbiBvYmplY3RzIHRvZ2V0aGVyLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcxXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnMlxuICogQHJldHVybnMge09iamVjdH0gTmV3IG9iamVjdCByZXN1bHRpbmcgZnJvbSBtZXJnaW5nIGNvbmZpZzIgdG8gY29uZmlnMVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG1lcmdlQ29uZmlnKGNvbmZpZzEsIGNvbmZpZzIpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gIGNvbmZpZzIgPSBjb25maWcyIHx8IHt9O1xuICB2YXIgY29uZmlnID0ge307XG5cbiAgZnVuY3Rpb24gZ2V0TWVyZ2VkVmFsdWUodGFyZ2V0LCBzb3VyY2UpIHtcbiAgICBpZiAodXRpbHMuaXNQbGFpbk9iamVjdCh0YXJnZXQpICYmIHV0aWxzLmlzUGxhaW5PYmplY3Qoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHV0aWxzLm1lcmdlKHRhcmdldCwgc291cmNlKTtcbiAgICB9IGVsc2UgaWYgKHV0aWxzLmlzUGxhaW5PYmplY3Qoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHV0aWxzLm1lcmdlKHt9LCBzb3VyY2UpO1xuICAgIH0gZWxzZSBpZiAodXRpbHMuaXNBcnJheShzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gc291cmNlLnNsaWNlKCk7XG4gICAgfVxuICAgIHJldHVybiBzb3VyY2U7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cbiAgZnVuY3Rpb24gbWVyZ2VEZWVwUHJvcGVydGllcyhwcm9wKSB7XG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcyW3Byb3BdKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKGNvbmZpZzFbcHJvcF0sIGNvbmZpZzJbcHJvcF0pO1xuICAgIH0gZWxzZSBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzFbcHJvcF0pKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcxW3Byb3BdKTtcbiAgICB9XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cbiAgZnVuY3Rpb24gdmFsdWVGcm9tQ29uZmlnMihwcm9wKSB7XG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcyW3Byb3BdKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgY29uZmlnMltwcm9wXSk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIGZ1bmN0aW9uIGRlZmF1bHRUb0NvbmZpZzIocHJvcCkge1xuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnMltwcm9wXSkpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzJbcHJvcF0pO1xuICAgIH0gZWxzZSBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzFbcHJvcF0pKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcxW3Byb3BdKTtcbiAgICB9XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cbiAgZnVuY3Rpb24gbWVyZ2VEaXJlY3RLZXlzKHByb3ApIHtcbiAgICBpZiAocHJvcCBpbiBjb25maWcyKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUoY29uZmlnMVtwcm9wXSwgY29uZmlnMltwcm9wXSk7XG4gICAgfSBlbHNlIGlmIChwcm9wIGluIGNvbmZpZzEpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzFbcHJvcF0pO1xuICAgIH1cbiAgfVxuXG4gIHZhciBtZXJnZU1hcCA9IHtcbiAgICAndXJsJzogdmFsdWVGcm9tQ29uZmlnMixcbiAgICAnbWV0aG9kJzogdmFsdWVGcm9tQ29uZmlnMixcbiAgICAnZGF0YSc6IHZhbHVlRnJvbUNvbmZpZzIsXG4gICAgJ2Jhc2VVUkwnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd0cmFuc2Zvcm1SZXF1ZXN0JzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAndHJhbnNmb3JtUmVzcG9uc2UnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdwYXJhbXNTZXJpYWxpemVyJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAndGltZW91dCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3RpbWVvdXRNZXNzYWdlJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnd2l0aENyZWRlbnRpYWxzJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnYWRhcHRlcic6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3Jlc3BvbnNlVHlwZSc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3hzcmZDb29raWVOYW1lJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAneHNyZkhlYWRlck5hbWUnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdvblVwbG9hZFByb2dyZXNzJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnb25Eb3dubG9hZFByb2dyZXNzJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnZGVjb21wcmVzcyc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ21heENvbnRlbnRMZW5ndGgnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdtYXhCb2R5TGVuZ3RoJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAndHJhbnNwb3J0JzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnaHR0cEFnZW50JzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnaHR0cHNBZ2VudCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ2NhbmNlbFRva2VuJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnc29ja2V0UGF0aCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3Jlc3BvbnNlRW5jb2RpbmcnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd2YWxpZGF0ZVN0YXR1cyc6IG1lcmdlRGlyZWN0S2V5c1xuICB9O1xuXG4gIHV0aWxzLmZvckVhY2goT2JqZWN0LmtleXMoY29uZmlnMSkuY29uY2F0KE9iamVjdC5rZXlzKGNvbmZpZzIpKSwgZnVuY3Rpb24gY29tcHV0ZUNvbmZpZ1ZhbHVlKHByb3ApIHtcbiAgICB2YXIgbWVyZ2UgPSBtZXJnZU1hcFtwcm9wXSB8fCBtZXJnZURlZXBQcm9wZXJ0aWVzO1xuICAgIHZhciBjb25maWdWYWx1ZSA9IG1lcmdlKHByb3ApO1xuICAgICh1dGlscy5pc1VuZGVmaW5lZChjb25maWdWYWx1ZSkgJiYgbWVyZ2UgIT09IG1lcmdlRGlyZWN0S2V5cykgfHwgKGNvbmZpZ1twcm9wXSA9IGNvbmZpZ1ZhbHVlKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbmZpZztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJy4vY3JlYXRlRXJyb3InKTtcblxuLyoqXG4gKiBSZXNvbHZlIG9yIHJlamVjdCBhIFByb21pc2UgYmFzZWQgb24gcmVzcG9uc2Ugc3RhdHVzLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHJlc29sdmUgQSBmdW5jdGlvbiB0aGF0IHJlc29sdmVzIHRoZSBwcm9taXNlLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVqZWN0IEEgZnVuY3Rpb24gdGhhdCByZWplY3RzIHRoZSBwcm9taXNlLlxuICogQHBhcmFtIHtvYmplY3R9IHJlc3BvbnNlIFRoZSByZXNwb25zZS5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCByZXNwb25zZSkge1xuICB2YXIgdmFsaWRhdGVTdGF0dXMgPSByZXNwb25zZS5jb25maWcudmFsaWRhdGVTdGF0dXM7XG4gIGlmICghcmVzcG9uc2Uuc3RhdHVzIHx8ICF2YWxpZGF0ZVN0YXR1cyB8fCB2YWxpZGF0ZVN0YXR1cyhyZXNwb25zZS5zdGF0dXMpKSB7XG4gICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gIH0gZWxzZSB7XG4gICAgcmVqZWN0KGNyZWF0ZUVycm9yKFxuICAgICAgJ1JlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgJyArIHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgIHJlc3BvbnNlLmNvbmZpZyxcbiAgICAgIG51bGwsXG4gICAgICByZXNwb25zZS5yZXF1ZXN0LFxuICAgICAgcmVzcG9uc2VcbiAgICApKTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xudmFyIGRlZmF1bHRzID0gcmVxdWlyZSgnLi8uLi9kZWZhdWx0cycpO1xuXG4vKipcbiAqIFRyYW5zZm9ybSB0aGUgZGF0YSBmb3IgYSByZXF1ZXN0IG9yIGEgcmVzcG9uc2VcbiAqXG4gKiBAcGFyYW0ge09iamVjdHxTdHJpbmd9IGRhdGEgVGhlIGRhdGEgdG8gYmUgdHJhbnNmb3JtZWRcbiAqIEBwYXJhbSB7QXJyYXl9IGhlYWRlcnMgVGhlIGhlYWRlcnMgZm9yIHRoZSByZXF1ZXN0IG9yIHJlc3BvbnNlXG4gKiBAcGFyYW0ge0FycmF5fEZ1bmN0aW9ufSBmbnMgQSBzaW5nbGUgZnVuY3Rpb24gb3IgQXJyYXkgb2YgZnVuY3Rpb25zXG4gKiBAcmV0dXJucyB7Kn0gVGhlIHJlc3VsdGluZyB0cmFuc2Zvcm1lZCBkYXRhXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdHJhbnNmb3JtRGF0YShkYXRhLCBoZWFkZXJzLCBmbnMpIHtcbiAgdmFyIGNvbnRleHQgPSB0aGlzIHx8IGRlZmF1bHRzO1xuICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgdXRpbHMuZm9yRWFjaChmbnMsIGZ1bmN0aW9uIHRyYW5zZm9ybShmbikge1xuICAgIGRhdGEgPSBmbi5jYWxsKGNvbnRleHQsIGRhdGEsIGhlYWRlcnMpO1xuICB9KTtcblxuICByZXR1cm4gZGF0YTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcbnZhciBub3JtYWxpemVIZWFkZXJOYW1lID0gcmVxdWlyZSgnLi9oZWxwZXJzL25vcm1hbGl6ZUhlYWRlck5hbWUnKTtcbnZhciBlbmhhbmNlRXJyb3IgPSByZXF1aXJlKCcuL2NvcmUvZW5oYW5jZUVycm9yJyk7XG5cbnZhciBERUZBVUxUX0NPTlRFTlRfVFlQRSA9IHtcbiAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXG59O1xuXG5mdW5jdGlvbiBzZXRDb250ZW50VHlwZUlmVW5zZXQoaGVhZGVycywgdmFsdWUpIHtcbiAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChoZWFkZXJzKSAmJiB1dGlscy5pc1VuZGVmaW5lZChoZWFkZXJzWydDb250ZW50LVR5cGUnXSkpIHtcbiAgICBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9IHZhbHVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldERlZmF1bHRBZGFwdGVyKCkge1xuICB2YXIgYWRhcHRlcjtcbiAgaWYgKHR5cGVvZiBYTUxIdHRwUmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAvLyBGb3IgYnJvd3NlcnMgdXNlIFhIUiBhZGFwdGVyXG4gICAgYWRhcHRlciA9IHJlcXVpcmUoJy4vYWRhcHRlcnMveGhyJyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChwcm9jZXNzKSA9PT0gJ1tvYmplY3QgcHJvY2Vzc10nKSB7XG4gICAgLy8gRm9yIG5vZGUgdXNlIEhUVFAgYWRhcHRlclxuICAgIGFkYXB0ZXIgPSByZXF1aXJlKCcuL2FkYXB0ZXJzL2h0dHAnKTtcbiAgfVxuICByZXR1cm4gYWRhcHRlcjtcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5U2FmZWx5KHJhd1ZhbHVlLCBwYXJzZXIsIGVuY29kZXIpIHtcbiAgaWYgKHV0aWxzLmlzU3RyaW5nKHJhd1ZhbHVlKSkge1xuICAgIHRyeSB7XG4gICAgICAocGFyc2VyIHx8IEpTT04ucGFyc2UpKHJhd1ZhbHVlKTtcbiAgICAgIHJldHVybiB1dGlscy50cmltKHJhd1ZhbHVlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZS5uYW1lICE9PSAnU3ludGF4RXJyb3InKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChlbmNvZGVyIHx8IEpTT04uc3RyaW5naWZ5KShyYXdWYWx1ZSk7XG59XG5cbnZhciBkZWZhdWx0cyA9IHtcblxuICB0cmFuc2l0aW9uYWw6IHtcbiAgICBzaWxlbnRKU09OUGFyc2luZzogdHJ1ZSxcbiAgICBmb3JjZWRKU09OUGFyc2luZzogdHJ1ZSxcbiAgICBjbGFyaWZ5VGltZW91dEVycm9yOiBmYWxzZVxuICB9LFxuXG4gIGFkYXB0ZXI6IGdldERlZmF1bHRBZGFwdGVyKCksXG5cbiAgdHJhbnNmb3JtUmVxdWVzdDogW2Z1bmN0aW9uIHRyYW5zZm9ybVJlcXVlc3QoZGF0YSwgaGVhZGVycykge1xuICAgIG5vcm1hbGl6ZUhlYWRlck5hbWUoaGVhZGVycywgJ0FjY2VwdCcpO1xuICAgIG5vcm1hbGl6ZUhlYWRlck5hbWUoaGVhZGVycywgJ0NvbnRlbnQtVHlwZScpO1xuXG4gICAgaWYgKHV0aWxzLmlzRm9ybURhdGEoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzQXJyYXlCdWZmZXIoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzQnVmZmVyKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc1N0cmVhbShkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNGaWxlKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0Jsb2IoZGF0YSlcbiAgICApIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICBpZiAodXRpbHMuaXNBcnJheUJ1ZmZlclZpZXcoZGF0YSkpIHtcbiAgICAgIHJldHVybiBkYXRhLmJ1ZmZlcjtcbiAgICB9XG4gICAgaWYgKHV0aWxzLmlzVVJMU2VhcmNoUGFyYW1zKGRhdGEpKSB7XG4gICAgICBzZXRDb250ZW50VHlwZUlmVW5zZXQoaGVhZGVycywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04Jyk7XG4gICAgICByZXR1cm4gZGF0YS50b1N0cmluZygpO1xuICAgIH1cbiAgICBpZiAodXRpbHMuaXNPYmplY3QoZGF0YSkgfHwgKGhlYWRlcnMgJiYgaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPT09ICdhcHBsaWNhdGlvbi9qc29uJykpIHtcbiAgICAgIHNldENvbnRlbnRUeXBlSWZVbnNldChoZWFkZXJzLCAnYXBwbGljYXRpb24vanNvbicpO1xuICAgICAgcmV0dXJuIHN0cmluZ2lmeVNhZmVseShkYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1dLFxuXG4gIHRyYW5zZm9ybVJlc3BvbnNlOiBbZnVuY3Rpb24gdHJhbnNmb3JtUmVzcG9uc2UoZGF0YSkge1xuICAgIHZhciB0cmFuc2l0aW9uYWwgPSB0aGlzLnRyYW5zaXRpb25hbCB8fCBkZWZhdWx0cy50cmFuc2l0aW9uYWw7XG4gICAgdmFyIHNpbGVudEpTT05QYXJzaW5nID0gdHJhbnNpdGlvbmFsICYmIHRyYW5zaXRpb25hbC5zaWxlbnRKU09OUGFyc2luZztcbiAgICB2YXIgZm9yY2VkSlNPTlBhcnNpbmcgPSB0cmFuc2l0aW9uYWwgJiYgdHJhbnNpdGlvbmFsLmZvcmNlZEpTT05QYXJzaW5nO1xuICAgIHZhciBzdHJpY3RKU09OUGFyc2luZyA9ICFzaWxlbnRKU09OUGFyc2luZyAmJiB0aGlzLnJlc3BvbnNlVHlwZSA9PT0gJ2pzb24nO1xuXG4gICAgaWYgKHN0cmljdEpTT05QYXJzaW5nIHx8IChmb3JjZWRKU09OUGFyc2luZyAmJiB1dGlscy5pc1N0cmluZyhkYXRhKSAmJiBkYXRhLmxlbmd0aCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoc3RyaWN0SlNPTlBhcnNpbmcpIHtcbiAgICAgICAgICBpZiAoZS5uYW1lID09PSAnU3ludGF4RXJyb3InKSB7XG4gICAgICAgICAgICB0aHJvdyBlbmhhbmNlRXJyb3IoZSwgdGhpcywgJ0VfSlNPTl9QQVJTRScpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1dLFxuXG4gIC8qKlxuICAgKiBBIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIHRvIGFib3J0IGEgcmVxdWVzdC4gSWYgc2V0IHRvIDAgKGRlZmF1bHQpIGFcbiAgICogdGltZW91dCBpcyBub3QgY3JlYXRlZC5cbiAgICovXG4gIHRpbWVvdXQ6IDAsXG5cbiAgeHNyZkNvb2tpZU5hbWU6ICdYU1JGLVRPS0VOJyxcbiAgeHNyZkhlYWRlck5hbWU6ICdYLVhTUkYtVE9LRU4nLFxuXG4gIG1heENvbnRlbnRMZW5ndGg6IC0xLFxuICBtYXhCb2R5TGVuZ3RoOiAtMSxcblxuICB2YWxpZGF0ZVN0YXR1czogZnVuY3Rpb24gdmFsaWRhdGVTdGF0dXMoc3RhdHVzKSB7XG4gICAgcmV0dXJuIHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwO1xuICB9LFxuXG4gIGhlYWRlcnM6IHtcbiAgICBjb21tb246IHtcbiAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qJ1xuICAgIH1cbiAgfVxufTtcblxudXRpbHMuZm9yRWFjaChbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kTm9EYXRhKG1ldGhvZCkge1xuICBkZWZhdWx0cy5oZWFkZXJzW21ldGhvZF0gPSB7fTtcbn0pO1xuXG51dGlscy5mb3JFYWNoKFsncG9zdCcsICdwdXQnLCAncGF0Y2gnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZFdpdGhEYXRhKG1ldGhvZCkge1xuICBkZWZhdWx0cy5oZWFkZXJzW21ldGhvZF0gPSB1dGlscy5tZXJnZShERUZBVUxUX0NPTlRFTlRfVFlQRSk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZWZhdWx0cztcbiIsIm1vZHVsZS5leHBvcnRzID0ge1xuICBcInZlcnNpb25cIjogXCIwLjI1LjBcIlxufTsiLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYmluZChmbiwgdGhpc0FyZykge1xuICByZXR1cm4gZnVuY3Rpb24gd3JhcCgpIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgfVxuICAgIHJldHVybiBmbi5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxuZnVuY3Rpb24gZW5jb2RlKHZhbCkge1xuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHZhbCkuXG4gICAgcmVwbGFjZSgvJTNBL2dpLCAnOicpLlxuICAgIHJlcGxhY2UoLyUyNC9nLCAnJCcpLlxuICAgIHJlcGxhY2UoLyUyQy9naSwgJywnKS5cbiAgICByZXBsYWNlKC8lMjAvZywgJysnKS5cbiAgICByZXBsYWNlKC8lNUIvZ2ksICdbJykuXG4gICAgcmVwbGFjZSgvJTVEL2dpLCAnXScpO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgVVJMIGJ5IGFwcGVuZGluZyBwYXJhbXMgdG8gdGhlIGVuZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIGJhc2Ugb2YgdGhlIHVybCAoZS5nLiwgaHR0cDovL3d3dy5nb29nbGUuY29tKVxuICogQHBhcmFtIHtvYmplY3R9IFtwYXJhbXNdIFRoZSBwYXJhbXMgdG8gYmUgYXBwZW5kZWRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBmb3JtYXR0ZWQgdXJsXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYnVpbGRVUkwodXJsLCBwYXJhbXMsIHBhcmFtc1NlcmlhbGl6ZXIpIHtcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gIGlmICghcGFyYW1zKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIHZhciBzZXJpYWxpemVkUGFyYW1zO1xuICBpZiAocGFyYW1zU2VyaWFsaXplcikge1xuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBwYXJhbXNTZXJpYWxpemVyKHBhcmFtcyk7XG4gIH0gZWxzZSBpZiAodXRpbHMuaXNVUkxTZWFyY2hQYXJhbXMocGFyYW1zKSkge1xuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgcGFydHMgPSBbXTtcblxuICAgIHV0aWxzLmZvckVhY2gocGFyYW1zLCBmdW5jdGlvbiBzZXJpYWxpemUodmFsLCBrZXkpIHtcbiAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdHlwZW9mIHZhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodXRpbHMuaXNBcnJheSh2YWwpKSB7XG4gICAgICAgIGtleSA9IGtleSArICdbXSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWwgPSBbdmFsXTtcbiAgICAgIH1cblxuICAgICAgdXRpbHMuZm9yRWFjaCh2YWwsIGZ1bmN0aW9uIHBhcnNlVmFsdWUodikge1xuICAgICAgICBpZiAodXRpbHMuaXNEYXRlKHYpKSB7XG4gICAgICAgICAgdiA9IHYudG9JU09TdHJpbmcoKTtcbiAgICAgICAgfSBlbHNlIGlmICh1dGlscy5pc09iamVjdCh2KSkge1xuICAgICAgICAgIHYgPSBKU09OLnN0cmluZ2lmeSh2KTtcbiAgICAgICAgfVxuICAgICAgICBwYXJ0cy5wdXNoKGVuY29kZShrZXkpICsgJz0nICsgZW5jb2RlKHYpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHBhcnRzLmpvaW4oJyYnKTtcbiAgfVxuXG4gIGlmIChzZXJpYWxpemVkUGFyYW1zKSB7XG4gICAgdmFyIGhhc2htYXJrSW5kZXggPSB1cmwuaW5kZXhPZignIycpO1xuICAgIGlmIChoYXNobWFya0luZGV4ICE9PSAtMSkge1xuICAgICAgdXJsID0gdXJsLnNsaWNlKDAsIGhhc2htYXJrSW5kZXgpO1xuICAgIH1cblxuICAgIHVybCArPSAodXJsLmluZGV4T2YoJz8nKSA9PT0gLTEgPyAnPycgOiAnJicpICsgc2VyaWFsaXplZFBhcmFtcztcbiAgfVxuXG4gIHJldHVybiB1cmw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgVVJMIGJ5IGNvbWJpbmluZyB0aGUgc3BlY2lmaWVkIFVSTHNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZVVSTCBUaGUgYmFzZSBVUkxcbiAqIEBwYXJhbSB7c3RyaW5nfSByZWxhdGl2ZVVSTCBUaGUgcmVsYXRpdmUgVVJMXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29tYmluZWQgVVJMXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY29tYmluZVVSTHMoYmFzZVVSTCwgcmVsYXRpdmVVUkwpIHtcbiAgcmV0dXJuIHJlbGF0aXZlVVJMXG4gICAgPyBiYXNlVVJMLnJlcGxhY2UoL1xcLyskLywgJycpICsgJy8nICsgcmVsYXRpdmVVUkwucmVwbGFjZSgvXlxcLysvLCAnJylcbiAgICA6IGJhc2VVUkw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gKFxuICB1dGlscy5pc1N0YW5kYXJkQnJvd3NlckVudigpID9cblxuICAvLyBTdGFuZGFyZCBicm93c2VyIGVudnMgc3VwcG9ydCBkb2N1bWVudC5jb29raWVcbiAgICAoZnVuY3Rpb24gc3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uIHdyaXRlKG5hbWUsIHZhbHVlLCBleHBpcmVzLCBwYXRoLCBkb21haW4sIHNlY3VyZSkge1xuICAgICAgICAgIHZhciBjb29raWUgPSBbXTtcbiAgICAgICAgICBjb29raWUucHVzaChuYW1lICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKSk7XG5cbiAgICAgICAgICBpZiAodXRpbHMuaXNOdW1iZXIoZXhwaXJlcykpIHtcbiAgICAgICAgICAgIGNvb2tpZS5wdXNoKCdleHBpcmVzPScgKyBuZXcgRGF0ZShleHBpcmVzKS50b0dNVFN0cmluZygpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodXRpbHMuaXNTdHJpbmcocGF0aCkpIHtcbiAgICAgICAgICAgIGNvb2tpZS5wdXNoKCdwYXRoPScgKyBwYXRoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodXRpbHMuaXNTdHJpbmcoZG9tYWluKSkge1xuICAgICAgICAgICAgY29va2llLnB1c2goJ2RvbWFpbj0nICsgZG9tYWluKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc2VjdXJlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBjb29raWUucHVzaCgnc2VjdXJlJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZG9jdW1lbnQuY29va2llID0gY29va2llLmpvaW4oJzsgJyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVhZDogZnVuY3Rpb24gcmVhZChuYW1lKSB7XG4gICAgICAgICAgdmFyIG1hdGNoID0gZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoJyhefDtcXFxccyopKCcgKyBuYW1lICsgJyk9KFteO10qKScpKTtcbiAgICAgICAgICByZXR1cm4gKG1hdGNoID8gZGVjb2RlVVJJQ29tcG9uZW50KG1hdGNoWzNdKSA6IG51bGwpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKG5hbWUpIHtcbiAgICAgICAgICB0aGlzLndyaXRlKG5hbWUsICcnLCBEYXRlLm5vdygpIC0gODY0MDAwMDApO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pKCkgOlxuXG4gIC8vIE5vbiBzdGFuZGFyZCBicm93c2VyIGVudiAod2ViIHdvcmtlcnMsIHJlYWN0LW5hdGl2ZSkgbGFjayBuZWVkZWQgc3VwcG9ydC5cbiAgICAoZnVuY3Rpb24gbm9uU3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uIHdyaXRlKCkge30sXG4gICAgICAgIHJlYWQ6IGZ1bmN0aW9uIHJlYWQoKSB7IHJldHVybiBudWxsOyB9LFxuICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHt9XG4gICAgICB9O1xuICAgIH0pKClcbik7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgVVJMIGlzIGFic29sdXRlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybCBUaGUgVVJMIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBzcGVjaWZpZWQgVVJMIGlzIGFic29sdXRlLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0Fic29sdXRlVVJMKHVybCkge1xuICAvLyBBIFVSTCBpcyBjb25zaWRlcmVkIGFic29sdXRlIGlmIGl0IGJlZ2lucyB3aXRoIFwiPHNjaGVtZT46Ly9cIiBvciBcIi8vXCIgKHByb3RvY29sLXJlbGF0aXZlIFVSTCkuXG4gIC8vIFJGQyAzOTg2IGRlZmluZXMgc2NoZW1lIG5hbWUgYXMgYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIGJlZ2lubmluZyB3aXRoIGEgbGV0dGVyIGFuZCBmb2xsb3dlZFxuICAvLyBieSBhbnkgY29tYmluYXRpb24gb2YgbGV0dGVycywgZGlnaXRzLCBwbHVzLCBwZXJpb2QsIG9yIGh5cGhlbi5cbiAgcmV0dXJuIC9eKFthLXpdW2EtelxcZCtcXC0uXSo6KT9cXC9cXC8vaS50ZXN0KHVybCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwYXlsb2FkIGlzIGFuIGVycm9yIHRocm93biBieSBBeGlvc1xuICpcbiAqIEBwYXJhbSB7Kn0gcGF5bG9hZCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHBheWxvYWQgaXMgYW4gZXJyb3IgdGhyb3duIGJ5IEF4aW9zLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0F4aW9zRXJyb3IocGF5bG9hZCkge1xuICByZXR1cm4gdXRpbHMuaXNPYmplY3QocGF5bG9hZCkgJiYgKHBheWxvYWQuaXNBeGlvc0Vycm9yID09PSB0cnVlKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAoXG4gIHV0aWxzLmlzU3RhbmRhcmRCcm93c2VyRW52KCkgP1xuXG4gIC8vIFN0YW5kYXJkIGJyb3dzZXIgZW52cyBoYXZlIGZ1bGwgc3VwcG9ydCBvZiB0aGUgQVBJcyBuZWVkZWQgdG8gdGVzdFxuICAvLyB3aGV0aGVyIHRoZSByZXF1ZXN0IFVSTCBpcyBvZiB0aGUgc2FtZSBvcmlnaW4gYXMgY3VycmVudCBsb2NhdGlvbi5cbiAgICAoZnVuY3Rpb24gc3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgICAgdmFyIG1zaWUgPSAvKG1zaWV8dHJpZGVudCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuICAgICAgdmFyIHVybFBhcnNpbmdOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgdmFyIG9yaWdpblVSTDtcblxuICAgICAgLyoqXG4gICAgKiBQYXJzZSBhIFVSTCB0byBkaXNjb3ZlciBpdCdzIGNvbXBvbmVudHNcbiAgICAqXG4gICAgKiBAcGFyYW0ge1N0cmluZ30gdXJsIFRoZSBVUkwgdG8gYmUgcGFyc2VkXG4gICAgKiBAcmV0dXJucyB7T2JqZWN0fVxuICAgICovXG4gICAgICBmdW5jdGlvbiByZXNvbHZlVVJMKHVybCkge1xuICAgICAgICB2YXIgaHJlZiA9IHVybDtcblxuICAgICAgICBpZiAobXNpZSkge1xuICAgICAgICAvLyBJRSBuZWVkcyBhdHRyaWJ1dGUgc2V0IHR3aWNlIHRvIG5vcm1hbGl6ZSBwcm9wZXJ0aWVzXG4gICAgICAgICAgdXJsUGFyc2luZ05vZGUuc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZik7XG4gICAgICAgICAgaHJlZiA9IHVybFBhcnNpbmdOb2RlLmhyZWY7XG4gICAgICAgIH1cblxuICAgICAgICB1cmxQYXJzaW5nTm9kZS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBocmVmKTtcblxuICAgICAgICAvLyB1cmxQYXJzaW5nTm9kZSBwcm92aWRlcyB0aGUgVXJsVXRpbHMgaW50ZXJmYWNlIC0gaHR0cDovL3VybC5zcGVjLndoYXR3Zy5vcmcvI3VybHV0aWxzXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaHJlZjogdXJsUGFyc2luZ05vZGUuaHJlZixcbiAgICAgICAgICBwcm90b2NvbDogdXJsUGFyc2luZ05vZGUucHJvdG9jb2wgPyB1cmxQYXJzaW5nTm9kZS5wcm90b2NvbC5yZXBsYWNlKC86JC8sICcnKSA6ICcnLFxuICAgICAgICAgIGhvc3Q6IHVybFBhcnNpbmdOb2RlLmhvc3QsXG4gICAgICAgICAgc2VhcmNoOiB1cmxQYXJzaW5nTm9kZS5zZWFyY2ggPyB1cmxQYXJzaW5nTm9kZS5zZWFyY2gucmVwbGFjZSgvXlxcPy8sICcnKSA6ICcnLFxuICAgICAgICAgIGhhc2g6IHVybFBhcnNpbmdOb2RlLmhhc2ggPyB1cmxQYXJzaW5nTm9kZS5oYXNoLnJlcGxhY2UoL14jLywgJycpIDogJycsXG4gICAgICAgICAgaG9zdG5hbWU6IHVybFBhcnNpbmdOb2RlLmhvc3RuYW1lLFxuICAgICAgICAgIHBvcnQ6IHVybFBhcnNpbmdOb2RlLnBvcnQsXG4gICAgICAgICAgcGF0aG5hbWU6ICh1cmxQYXJzaW5nTm9kZS5wYXRobmFtZS5jaGFyQXQoMCkgPT09ICcvJykgP1xuICAgICAgICAgICAgdXJsUGFyc2luZ05vZGUucGF0aG5hbWUgOlxuICAgICAgICAgICAgJy8nICsgdXJsUGFyc2luZ05vZGUucGF0aG5hbWVcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgb3JpZ2luVVJMID0gcmVzb2x2ZVVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG5cbiAgICAgIC8qKlxuICAgICogRGV0ZXJtaW5lIGlmIGEgVVJMIHNoYXJlcyB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlIGN1cnJlbnQgbG9jYXRpb25cbiAgICAqXG4gICAgKiBAcGFyYW0ge1N0cmluZ30gcmVxdWVzdFVSTCBUaGUgVVJMIHRvIHRlc3RcbiAgICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIFVSTCBzaGFyZXMgdGhlIHNhbWUgb3JpZ2luLCBvdGhlcndpc2UgZmFsc2VcbiAgICAqL1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIGlzVVJMU2FtZU9yaWdpbihyZXF1ZXN0VVJMKSB7XG4gICAgICAgIHZhciBwYXJzZWQgPSAodXRpbHMuaXNTdHJpbmcocmVxdWVzdFVSTCkpID8gcmVzb2x2ZVVSTChyZXF1ZXN0VVJMKSA6IHJlcXVlc3RVUkw7XG4gICAgICAgIHJldHVybiAocGFyc2VkLnByb3RvY29sID09PSBvcmlnaW5VUkwucHJvdG9jb2wgJiZcbiAgICAgICAgICAgIHBhcnNlZC5ob3N0ID09PSBvcmlnaW5VUkwuaG9zdCk7XG4gICAgICB9O1xuICAgIH0pKCkgOlxuXG4gIC8vIE5vbiBzdGFuZGFyZCBicm93c2VyIGVudnMgKHdlYiB3b3JrZXJzLCByZWFjdC1uYXRpdmUpIGxhY2sgbmVlZGVkIHN1cHBvcnQuXG4gICAgKGZ1bmN0aW9uIG5vblN0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiBpc1VSTFNhbWVPcmlnaW4oKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfTtcbiAgICB9KSgpXG4pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlck5hbWUoaGVhZGVycywgbm9ybWFsaXplZE5hbWUpIHtcbiAgdXRpbHMuZm9yRWFjaChoZWFkZXJzLCBmdW5jdGlvbiBwcm9jZXNzSGVhZGVyKHZhbHVlLCBuYW1lKSB7XG4gICAgaWYgKG5hbWUgIT09IG5vcm1hbGl6ZWROYW1lICYmIG5hbWUudG9VcHBlckNhc2UoKSA9PT0gbm9ybWFsaXplZE5hbWUudG9VcHBlckNhc2UoKSkge1xuICAgICAgaGVhZGVyc1tub3JtYWxpemVkTmFtZV0gPSB2YWx1ZTtcbiAgICAgIGRlbGV0ZSBoZWFkZXJzW25hbWVdO1xuICAgIH1cbiAgfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbi8vIEhlYWRlcnMgd2hvc2UgZHVwbGljYXRlcyBhcmUgaWdub3JlZCBieSBub2RlXG4vLyBjLmYuIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfbWVzc2FnZV9oZWFkZXJzXG52YXIgaWdub3JlRHVwbGljYXRlT2YgPSBbXG4gICdhZ2UnLCAnYXV0aG9yaXphdGlvbicsICdjb250ZW50LWxlbmd0aCcsICdjb250ZW50LXR5cGUnLCAnZXRhZycsXG4gICdleHBpcmVzJywgJ2Zyb20nLCAnaG9zdCcsICdpZi1tb2RpZmllZC1zaW5jZScsICdpZi11bm1vZGlmaWVkLXNpbmNlJyxcbiAgJ2xhc3QtbW9kaWZpZWQnLCAnbG9jYXRpb24nLCAnbWF4LWZvcndhcmRzJywgJ3Byb3h5LWF1dGhvcml6YXRpb24nLFxuICAncmVmZXJlcicsICdyZXRyeS1hZnRlcicsICd1c2VyLWFnZW50J1xuXTtcblxuLyoqXG4gKiBQYXJzZSBoZWFkZXJzIGludG8gYW4gb2JqZWN0XG4gKlxuICogYGBgXG4gKiBEYXRlOiBXZWQsIDI3IEF1ZyAyMDE0IDA4OjU4OjQ5IEdNVFxuICogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXG4gKiBDb25uZWN0aW9uOiBrZWVwLWFsaXZlXG4gKiBUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxuICogYGBgXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGhlYWRlcnMgSGVhZGVycyBuZWVkaW5nIHRvIGJlIHBhcnNlZFxuICogQHJldHVybnMge09iamVjdH0gSGVhZGVycyBwYXJzZWQgaW50byBhbiBvYmplY3RcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwYXJzZUhlYWRlcnMoaGVhZGVycykge1xuICB2YXIgcGFyc2VkID0ge307XG4gIHZhciBrZXk7XG4gIHZhciB2YWw7XG4gIHZhciBpO1xuXG4gIGlmICghaGVhZGVycykgeyByZXR1cm4gcGFyc2VkOyB9XG5cbiAgdXRpbHMuZm9yRWFjaChoZWFkZXJzLnNwbGl0KCdcXG4nKSwgZnVuY3Rpb24gcGFyc2VyKGxpbmUpIHtcbiAgICBpID0gbGluZS5pbmRleE9mKCc6Jyk7XG4gICAga2V5ID0gdXRpbHMudHJpbShsaW5lLnN1YnN0cigwLCBpKSkudG9Mb3dlckNhc2UoKTtcbiAgICB2YWwgPSB1dGlscy50cmltKGxpbmUuc3Vic3RyKGkgKyAxKSk7XG5cbiAgICBpZiAoa2V5KSB7XG4gICAgICBpZiAocGFyc2VkW2tleV0gJiYgaWdub3JlRHVwbGljYXRlT2YuaW5kZXhPZihrZXkpID49IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGtleSA9PT0gJ3NldC1jb29raWUnKSB7XG4gICAgICAgIHBhcnNlZFtrZXldID0gKHBhcnNlZFtrZXldID8gcGFyc2VkW2tleV0gOiBbXSkuY29uY2F0KFt2YWxdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnNlZFtrZXldID0gcGFyc2VkW2tleV0gPyBwYXJzZWRba2V5XSArICcsICcgKyB2YWwgOiB2YWw7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcGFyc2VkO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBTeW50YWN0aWMgc3VnYXIgZm9yIGludm9raW5nIGEgZnVuY3Rpb24gYW5kIGV4cGFuZGluZyBhbiBhcnJheSBmb3IgYXJndW1lbnRzLlxuICpcbiAqIENvbW1vbiB1c2UgY2FzZSB3b3VsZCBiZSB0byB1c2UgYEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseWAuXG4gKlxuICogIGBgYGpzXG4gKiAgZnVuY3Rpb24gZih4LCB5LCB6KSB7fVxuICogIHZhciBhcmdzID0gWzEsIDIsIDNdO1xuICogIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gKiAgYGBgXG4gKlxuICogV2l0aCBgc3ByZWFkYCB0aGlzIGV4YW1wbGUgY2FuIGJlIHJlLXdyaXR0ZW4uXG4gKlxuICogIGBgYGpzXG4gKiAgc3ByZWFkKGZ1bmN0aW9uKHgsIHksIHopIHt9KShbMSwgMiwgM10pO1xuICogIGBgYFxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259XG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc3ByZWFkKGNhbGxiYWNrKSB7XG4gIHJldHVybiBmdW5jdGlvbiB3cmFwKGFycikge1xuICAgIHJldHVybiBjYWxsYmFjay5hcHBseShudWxsLCBhcnIpO1xuICB9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFZFUlNJT04gPSByZXF1aXJlKCcuLi9lbnYvZGF0YScpLnZlcnNpb247XG5cbnZhciB2YWxpZGF0b3JzID0ge307XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5bJ29iamVjdCcsICdib29sZWFuJywgJ251bWJlcicsICdmdW5jdGlvbicsICdzdHJpbmcnLCAnc3ltYm9sJ10uZm9yRWFjaChmdW5jdGlvbih0eXBlLCBpKSB7XG4gIHZhbGlkYXRvcnNbdHlwZV0gPSBmdW5jdGlvbiB2YWxpZGF0b3IodGhpbmcpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaW5nID09PSB0eXBlIHx8ICdhJyArIChpIDwgMSA/ICduICcgOiAnICcpICsgdHlwZTtcbiAgfTtcbn0pO1xuXG52YXIgZGVwcmVjYXRlZFdhcm5pbmdzID0ge307XG5cbi8qKlxuICogVHJhbnNpdGlvbmFsIG9wdGlvbiB2YWxpZGF0b3JcbiAqIEBwYXJhbSB7ZnVuY3Rpb258Ym9vbGVhbj99IHZhbGlkYXRvciAtIHNldCB0byBmYWxzZSBpZiB0aGUgdHJhbnNpdGlvbmFsIG9wdGlvbiBoYXMgYmVlbiByZW1vdmVkXG4gKiBAcGFyYW0ge3N0cmluZz99IHZlcnNpb24gLSBkZXByZWNhdGVkIHZlcnNpb24gLyByZW1vdmVkIHNpbmNlIHZlcnNpb25cbiAqIEBwYXJhbSB7c3RyaW5nP30gbWVzc2FnZSAtIHNvbWUgbWVzc2FnZSB3aXRoIGFkZGl0aW9uYWwgaW5mb1xuICogQHJldHVybnMge2Z1bmN0aW9ufVxuICovXG52YWxpZGF0b3JzLnRyYW5zaXRpb25hbCA9IGZ1bmN0aW9uIHRyYW5zaXRpb25hbCh2YWxpZGF0b3IsIHZlcnNpb24sIG1lc3NhZ2UpIHtcbiAgZnVuY3Rpb24gZm9ybWF0TWVzc2FnZShvcHQsIGRlc2MpIHtcbiAgICByZXR1cm4gJ1tBeGlvcyB2JyArIFZFUlNJT04gKyAnXSBUcmFuc2l0aW9uYWwgb3B0aW9uIFxcJycgKyBvcHQgKyAnXFwnJyArIGRlc2MgKyAobWVzc2FnZSA/ICcuICcgKyBtZXNzYWdlIDogJycpO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlLCBvcHQsIG9wdHMpIHtcbiAgICBpZiAodmFsaWRhdG9yID09PSBmYWxzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdE1lc3NhZ2Uob3B0LCAnIGhhcyBiZWVuIHJlbW92ZWQnICsgKHZlcnNpb24gPyAnIGluICcgKyB2ZXJzaW9uIDogJycpKSk7XG4gICAgfVxuXG4gICAgaWYgKHZlcnNpb24gJiYgIWRlcHJlY2F0ZWRXYXJuaW5nc1tvcHRdKSB7XG4gICAgICBkZXByZWNhdGVkV2FybmluZ3Nbb3B0XSA9IHRydWU7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBmb3JtYXRNZXNzYWdlKFxuICAgICAgICAgIG9wdCxcbiAgICAgICAgICAnIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgdicgKyB2ZXJzaW9uICsgJyBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZSdcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdG9yID8gdmFsaWRhdG9yKHZhbHVlLCBvcHQsIG9wdHMpIDogdHJ1ZTtcbiAgfTtcbn07XG5cbi8qKlxuICogQXNzZXJ0IG9iamVjdCdzIHByb3BlcnRpZXMgdHlwZVxuICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnNcbiAqIEBwYXJhbSB7b2JqZWN0fSBzY2hlbWFcbiAqIEBwYXJhbSB7Ym9vbGVhbj99IGFsbG93VW5rbm93blxuICovXG5cbmZ1bmN0aW9uIGFzc2VydE9wdGlvbnMob3B0aW9ucywgc2NoZW1hLCBhbGxvd1Vua25vd24pIHtcbiAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgfVxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9wdGlvbnMpO1xuICB2YXIgaSA9IGtleXMubGVuZ3RoO1xuICB3aGlsZSAoaS0tID4gMCkge1xuICAgIHZhciBvcHQgPSBrZXlzW2ldO1xuICAgIHZhciB2YWxpZGF0b3IgPSBzY2hlbWFbb3B0XTtcbiAgICBpZiAodmFsaWRhdG9yKSB7XG4gICAgICB2YXIgdmFsdWUgPSBvcHRpb25zW29wdF07XG4gICAgICB2YXIgcmVzdWx0ID0gdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWxpZGF0b3IodmFsdWUsIG9wdCwgb3B0aW9ucyk7XG4gICAgICBpZiAocmVzdWx0ICE9PSB0cnVlKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbiAnICsgb3B0ICsgJyBtdXN0IGJlICcgKyByZXN1bHQpO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChhbGxvd1Vua25vd24gIT09IHRydWUpIHtcbiAgICAgIHRocm93IEVycm9yKCdVbmtub3duIG9wdGlvbiAnICsgb3B0KTtcbiAgICB9XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFzc2VydE9wdGlvbnM6IGFzc2VydE9wdGlvbnMsXG4gIHZhbGlkYXRvcnM6IHZhbGlkYXRvcnNcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBiaW5kID0gcmVxdWlyZSgnLi9oZWxwZXJzL2JpbmQnKTtcblxuLy8gdXRpbHMgaXMgYSBsaWJyYXJ5IG9mIGdlbmVyaWMgaGVscGVyIGZ1bmN0aW9ucyBub24tc3BlY2lmaWMgdG8gYXhpb3NcblxudmFyIHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhbiBBcnJheVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEFycmF5LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheSh2YWwpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyB1bmRlZmluZWRcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmFsdWUgaXMgdW5kZWZpbmVkLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsID09PSAndW5kZWZpbmVkJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEJ1ZmZlclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgQnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNCdWZmZXIodmFsKSB7XG4gIHJldHVybiB2YWwgIT09IG51bGwgJiYgIWlzVW5kZWZpbmVkKHZhbCkgJiYgdmFsLmNvbnN0cnVjdG9yICE9PSBudWxsICYmICFpc1VuZGVmaW5lZCh2YWwuY29uc3RydWN0b3IpXG4gICAgJiYgdHlwZW9mIHZhbC5jb25zdHJ1Y3Rvci5pc0J1ZmZlciA9PT0gJ2Z1bmN0aW9uJyAmJiB2YWwuY29uc3RydWN0b3IuaXNCdWZmZXIodmFsKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhbiBBcnJheUJ1ZmZlclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEFycmF5QnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUJ1ZmZlcih2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZvcm1EYXRhXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gRm9ybURhdGEsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Zvcm1EYXRhKHZhbCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBGb3JtRGF0YV0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgdmlldyBvbiBhbiBBcnJheUJ1ZmZlclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgdmlldyBvbiBhbiBBcnJheUJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlCdWZmZXJWaWV3KHZhbCkge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpICYmIChBcnJheUJ1ZmZlci5pc1ZpZXcpKSB7XG4gICAgcmVzdWx0ID0gQXJyYXlCdWZmZXIuaXNWaWV3KHZhbCk7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0ID0gKHZhbCkgJiYgKHZhbC5idWZmZXIpICYmIChpc0FycmF5QnVmZmVyKHZhbC5idWZmZXIpKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgU3RyaW5nXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBTdHJpbmcsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N0cmluZyh2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgTnVtYmVyXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBOdW1iZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc051bWJlcih2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdudW1iZXInO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIE9iamVjdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIE9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbCkge1xuICByZXR1cm4gdmFsICE9PSBudWxsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgcGxhaW4gT2JqZWN0XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIHBsYWluIE9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsKSB7XG4gIGlmICh0b1N0cmluZy5jYWxsKHZhbCkgIT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIHByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWwpO1xuICByZXR1cm4gcHJvdG90eXBlID09PSBudWxsIHx8IHByb3RvdHlwZSA9PT0gT2JqZWN0LnByb3RvdHlwZTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIERhdGVcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIERhdGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0RhdGUodmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IERhdGVdJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZpbGVcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEZpbGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0ZpbGUodmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEZpbGVdJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEJsb2JcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEJsb2IsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Jsb2IodmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEJsb2JdJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZ1bmN0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBGdW5jdGlvbiwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBTdHJlYW1cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFN0cmVhbSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3RyZWFtKHZhbCkge1xuICByZXR1cm4gaXNPYmplY3QodmFsKSAmJiBpc0Z1bmN0aW9uKHZhbC5waXBlKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFVSTFNlYXJjaFBhcmFtcyBvYmplY3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFVSTFNlYXJjaFBhcmFtcyBvYmplY3QsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1VSTFNlYXJjaFBhcmFtcyh2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgVVJMU2VhcmNoUGFyYW1zXSc7XG59XG5cbi8qKlxuICogVHJpbSBleGNlc3Mgd2hpdGVzcGFjZSBvZmYgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGEgc3RyaW5nXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0ciBUaGUgU3RyaW5nIHRvIHRyaW1cbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBTdHJpbmcgZnJlZWQgb2YgZXhjZXNzIHdoaXRlc3BhY2VcbiAqL1xuZnVuY3Rpb24gdHJpbShzdHIpIHtcbiAgcmV0dXJuIHN0ci50cmltID8gc3RyLnRyaW0oKSA6IHN0ci5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJyk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSBzdGFuZGFyZCBicm93c2VyIGVudmlyb25tZW50XG4gKlxuICogVGhpcyBhbGxvd3MgYXhpb3MgdG8gcnVuIGluIGEgd2ViIHdvcmtlciwgYW5kIHJlYWN0LW5hdGl2ZS5cbiAqIEJvdGggZW52aXJvbm1lbnRzIHN1cHBvcnQgWE1MSHR0cFJlcXVlc3QsIGJ1dCBub3QgZnVsbHkgc3RhbmRhcmQgZ2xvYmFscy5cbiAqXG4gKiB3ZWIgd29ya2VyczpcbiAqICB0eXBlb2Ygd2luZG93IC0+IHVuZGVmaW5lZFxuICogIHR5cGVvZiBkb2N1bWVudCAtPiB1bmRlZmluZWRcbiAqXG4gKiByZWFjdC1uYXRpdmU6XG4gKiAgbmF2aWdhdG9yLnByb2R1Y3QgLT4gJ1JlYWN0TmF0aXZlJ1xuICogbmF0aXZlc2NyaXB0XG4gKiAgbmF2aWdhdG9yLnByb2R1Y3QgLT4gJ05hdGl2ZVNjcmlwdCcgb3IgJ05TJ1xuICovXG5mdW5jdGlvbiBpc1N0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgaWYgKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIChuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ1JlYWN0TmF0aXZlJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci5wcm9kdWN0ID09PSAnTmF0aXZlU2NyaXB0JyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci5wcm9kdWN0ID09PSAnTlMnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gKFxuICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmXG4gICAgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJ1xuICApO1xufVxuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBhbiBBcnJheSBvciBhbiBPYmplY3QgaW52b2tpbmcgYSBmdW5jdGlvbiBmb3IgZWFjaCBpdGVtLlxuICpcbiAqIElmIGBvYmpgIGlzIGFuIEFycmF5IGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIHBhc3NpbmdcbiAqIHRoZSB2YWx1ZSwgaW5kZXgsIGFuZCBjb21wbGV0ZSBhcnJheSBmb3IgZWFjaCBpdGVtLlxuICpcbiAqIElmICdvYmonIGlzIGFuIE9iamVjdCBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBwYXNzaW5nXG4gKiB0aGUgdmFsdWUsIGtleSwgYW5kIGNvbXBsZXRlIG9iamVjdCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gb2JqIFRoZSBvYmplY3QgdG8gaXRlcmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGNhbGxiYWNrIHRvIGludm9rZSBmb3IgZWFjaCBpdGVtXG4gKi9cbmZ1bmN0aW9uIGZvckVhY2gob2JqLCBmbikge1xuICAvLyBEb24ndCBib3RoZXIgaWYgbm8gdmFsdWUgcHJvdmlkZWRcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIEZvcmNlIGFuIGFycmF5IGlmIG5vdCBhbHJlYWR5IHNvbWV0aGluZyBpdGVyYWJsZVxuICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgICBvYmogPSBbb2JqXTtcbiAgfVxuXG4gIGlmIChpc0FycmF5KG9iaikpIHtcbiAgICAvLyBJdGVyYXRlIG92ZXIgYXJyYXkgdmFsdWVzXG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBvYmoubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIG9ialtpXSwgaSwgb2JqKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gSXRlcmF0ZSBvdmVyIG9iamVjdCBrZXlzXG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgZm4uY2FsbChudWxsLCBvYmpba2V5XSwga2V5LCBvYmopO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFjY2VwdHMgdmFyYXJncyBleHBlY3RpbmcgZWFjaCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3QsIHRoZW5cbiAqIGltbXV0YWJseSBtZXJnZXMgdGhlIHByb3BlcnRpZXMgb2YgZWFjaCBvYmplY3QgYW5kIHJldHVybnMgcmVzdWx0LlxuICpcbiAqIFdoZW4gbXVsdGlwbGUgb2JqZWN0cyBjb250YWluIHRoZSBzYW1lIGtleSB0aGUgbGF0ZXIgb2JqZWN0IGluXG4gKiB0aGUgYXJndW1lbnRzIGxpc3Qgd2lsbCB0YWtlIHByZWNlZGVuY2UuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGBqc1xuICogdmFyIHJlc3VsdCA9IG1lcmdlKHtmb286IDEyM30sIHtmb286IDQ1Nn0pO1xuICogY29uc29sZS5sb2cocmVzdWx0LmZvbyk7IC8vIG91dHB1dHMgNDU2XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqMSBPYmplY3QgdG8gbWVyZ2VcbiAqIEByZXR1cm5zIHtPYmplY3R9IFJlc3VsdCBvZiBhbGwgbWVyZ2UgcHJvcGVydGllc1xuICovXG5mdW5jdGlvbiBtZXJnZSgvKiBvYmoxLCBvYmoyLCBvYmozLCAuLi4gKi8pIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBmdW5jdGlvbiBhc3NpZ25WYWx1ZSh2YWwsIGtleSkge1xuICAgIGlmIChpc1BsYWluT2JqZWN0KHJlc3VsdFtrZXldKSAmJiBpc1BsYWluT2JqZWN0KHZhbCkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gbWVyZ2UocmVzdWx0W2tleV0sIHZhbCk7XG4gICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHZhbCkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gbWVyZ2Uoe30sIHZhbCk7XG4gICAgfSBlbHNlIGlmIChpc0FycmF5KHZhbCkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gdmFsLnNsaWNlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdFtrZXldID0gdmFsO1xuICAgIH1cbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwLCBsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGZvckVhY2goYXJndW1lbnRzW2ldLCBhc3NpZ25WYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBFeHRlbmRzIG9iamVjdCBhIGJ5IG11dGFibHkgYWRkaW5nIHRvIGl0IHRoZSBwcm9wZXJ0aWVzIG9mIG9iamVjdCBiLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBhIFRoZSBvYmplY3QgdG8gYmUgZXh0ZW5kZWRcbiAqIEBwYXJhbSB7T2JqZWN0fSBiIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb21cbiAqIEBwYXJhbSB7T2JqZWN0fSB0aGlzQXJnIFRoZSBvYmplY3QgdG8gYmluZCBmdW5jdGlvbiB0b1xuICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzdWx0aW5nIHZhbHVlIG9mIG9iamVjdCBhXG4gKi9cbmZ1bmN0aW9uIGV4dGVuZChhLCBiLCB0aGlzQXJnKSB7XG4gIGZvckVhY2goYiwgZnVuY3Rpb24gYXNzaWduVmFsdWUodmFsLCBrZXkpIHtcbiAgICBpZiAodGhpc0FyZyAmJiB0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBhW2tleV0gPSBiaW5kKHZhbCwgdGhpc0FyZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFba2V5XSA9IHZhbDtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gYTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgYnl0ZSBvcmRlciBtYXJrZXIuIFRoaXMgY2F0Y2hlcyBFRiBCQiBCRiAodGhlIFVURi04IEJPTSlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGVudCB3aXRoIEJPTVxuICogQHJldHVybiB7c3RyaW5nfSBjb250ZW50IHZhbHVlIHdpdGhvdXQgQk9NXG4gKi9cbmZ1bmN0aW9uIHN0cmlwQk9NKGNvbnRlbnQpIHtcbiAgaWYgKGNvbnRlbnQuY2hhckNvZGVBdCgwKSA9PT0gMHhGRUZGKSB7XG4gICAgY29udGVudCA9IGNvbnRlbnQuc2xpY2UoMSk7XG4gIH1cbiAgcmV0dXJuIGNvbnRlbnQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpc0FycmF5OiBpc0FycmF5LFxuICBpc0FycmF5QnVmZmVyOiBpc0FycmF5QnVmZmVyLFxuICBpc0J1ZmZlcjogaXNCdWZmZXIsXG4gIGlzRm9ybURhdGE6IGlzRm9ybURhdGEsXG4gIGlzQXJyYXlCdWZmZXJWaWV3OiBpc0FycmF5QnVmZmVyVmlldyxcbiAgaXNTdHJpbmc6IGlzU3RyaW5nLFxuICBpc051bWJlcjogaXNOdW1iZXIsXG4gIGlzT2JqZWN0OiBpc09iamVjdCxcbiAgaXNQbGFpbk9iamVjdDogaXNQbGFpbk9iamVjdCxcbiAgaXNVbmRlZmluZWQ6IGlzVW5kZWZpbmVkLFxuICBpc0RhdGU6IGlzRGF0ZSxcbiAgaXNGaWxlOiBpc0ZpbGUsXG4gIGlzQmxvYjogaXNCbG9iLFxuICBpc0Z1bmN0aW9uOiBpc0Z1bmN0aW9uLFxuICBpc1N0cmVhbTogaXNTdHJlYW0sXG4gIGlzVVJMU2VhcmNoUGFyYW1zOiBpc1VSTFNlYXJjaFBhcmFtcyxcbiAgaXNTdGFuZGFyZEJyb3dzZXJFbnY6IGlzU3RhbmRhcmRCcm93c2VyRW52LFxuICBmb3JFYWNoOiBmb3JFYWNoLFxuICBtZXJnZTogbWVyZ2UsXG4gIGV4dGVuZDogZXh0ZW5kLFxuICB0cmltOiB0cmltLFxuICBzdHJpcEJPTTogc3RyaXBCT01cbn07XG4iLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vZW5jLWJhc2U2NFwiKSwgcmVxdWlyZShcIi4vbWQ1XCIpLCByZXF1aXJlKFwiLi9ldnBrZGZcIiksIHJlcXVpcmUoXCIuL2NpcGhlci1jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL2VuYy1iYXNlNjRcIiwgXCIuL21kNVwiLCBcIi4vZXZwa2RmXCIsIFwiLi9jaXBoZXItY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIEJsb2NrQ2lwaGVyID0gQ19saWIuQmxvY2tDaXBoZXI7XG5cdCAgICB2YXIgQ19hbGdvID0gQy5hbGdvO1xuXG5cdCAgICAvLyBMb29rdXAgdGFibGVzXG5cdCAgICB2YXIgU0JPWCA9IFtdO1xuXHQgICAgdmFyIElOVl9TQk9YID0gW107XG5cdCAgICB2YXIgU1VCX01JWF8wID0gW107XG5cdCAgICB2YXIgU1VCX01JWF8xID0gW107XG5cdCAgICB2YXIgU1VCX01JWF8yID0gW107XG5cdCAgICB2YXIgU1VCX01JWF8zID0gW107XG5cdCAgICB2YXIgSU5WX1NVQl9NSVhfMCA9IFtdO1xuXHQgICAgdmFyIElOVl9TVUJfTUlYXzEgPSBbXTtcblx0ICAgIHZhciBJTlZfU1VCX01JWF8yID0gW107XG5cdCAgICB2YXIgSU5WX1NVQl9NSVhfMyA9IFtdO1xuXG5cdCAgICAvLyBDb21wdXRlIGxvb2t1cCB0YWJsZXNcblx0ICAgIChmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgLy8gQ29tcHV0ZSBkb3VibGUgdGFibGVcblx0ICAgICAgICB2YXIgZCA9IFtdO1xuXHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyBpKyspIHtcblx0ICAgICAgICAgICAgaWYgKGkgPCAxMjgpIHtcblx0ICAgICAgICAgICAgICAgIGRbaV0gPSBpIDw8IDE7XG5cdCAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICBkW2ldID0gKGkgPDwgMSkgXiAweDExYjtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblxuXHQgICAgICAgIC8vIFdhbGsgR0YoMl44KVxuXHQgICAgICAgIHZhciB4ID0gMDtcblx0ICAgICAgICB2YXIgeGkgPSAwO1xuXHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyBpKyspIHtcblx0ICAgICAgICAgICAgLy8gQ29tcHV0ZSBzYm94XG5cdCAgICAgICAgICAgIHZhciBzeCA9IHhpIF4gKHhpIDw8IDEpIF4gKHhpIDw8IDIpIF4gKHhpIDw8IDMpIF4gKHhpIDw8IDQpO1xuXHQgICAgICAgICAgICBzeCA9IChzeCA+Pj4gOCkgXiAoc3ggJiAweGZmKSBeIDB4NjM7XG5cdCAgICAgICAgICAgIFNCT1hbeF0gPSBzeDtcblx0ICAgICAgICAgICAgSU5WX1NCT1hbc3hdID0geDtcblxuXHQgICAgICAgICAgICAvLyBDb21wdXRlIG11bHRpcGxpY2F0aW9uXG5cdCAgICAgICAgICAgIHZhciB4MiA9IGRbeF07XG5cdCAgICAgICAgICAgIHZhciB4NCA9IGRbeDJdO1xuXHQgICAgICAgICAgICB2YXIgeDggPSBkW3g0XTtcblxuXHQgICAgICAgICAgICAvLyBDb21wdXRlIHN1YiBieXRlcywgbWl4IGNvbHVtbnMgdGFibGVzXG5cdCAgICAgICAgICAgIHZhciB0ID0gKGRbc3hdICogMHgxMDEpIF4gKHN4ICogMHgxMDEwMTAwKTtcblx0ICAgICAgICAgICAgU1VCX01JWF8wW3hdID0gKHQgPDwgMjQpIHwgKHQgPj4+IDgpO1xuXHQgICAgICAgICAgICBTVUJfTUlYXzFbeF0gPSAodCA8PCAxNikgfCAodCA+Pj4gMTYpO1xuXHQgICAgICAgICAgICBTVUJfTUlYXzJbeF0gPSAodCA8PCA4KSAgfCAodCA+Pj4gMjQpO1xuXHQgICAgICAgICAgICBTVUJfTUlYXzNbeF0gPSB0O1xuXG5cdCAgICAgICAgICAgIC8vIENvbXB1dGUgaW52IHN1YiBieXRlcywgaW52IG1peCBjb2x1bW5zIHRhYmxlc1xuXHQgICAgICAgICAgICB2YXIgdCA9ICh4OCAqIDB4MTAxMDEwMSkgXiAoeDQgKiAweDEwMDAxKSBeICh4MiAqIDB4MTAxKSBeICh4ICogMHgxMDEwMTAwKTtcblx0ICAgICAgICAgICAgSU5WX1NVQl9NSVhfMFtzeF0gPSAodCA8PCAyNCkgfCAodCA+Pj4gOCk7XG5cdCAgICAgICAgICAgIElOVl9TVUJfTUlYXzFbc3hdID0gKHQgPDwgMTYpIHwgKHQgPj4+IDE2KTtcblx0ICAgICAgICAgICAgSU5WX1NVQl9NSVhfMltzeF0gPSAodCA8PCA4KSAgfCAodCA+Pj4gMjQpO1xuXHQgICAgICAgICAgICBJTlZfU1VCX01JWF8zW3N4XSA9IHQ7XG5cblx0ICAgICAgICAgICAgLy8gQ29tcHV0ZSBuZXh0IGNvdW50ZXJcblx0ICAgICAgICAgICAgaWYgKCF4KSB7XG5cdCAgICAgICAgICAgICAgICB4ID0geGkgPSAxO1xuXHQgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgeCA9IHgyIF4gZFtkW2RbeDggXiB4Ml1dXTtcblx0ICAgICAgICAgICAgICAgIHhpIF49IGRbZFt4aV1dO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgfSgpKTtcblxuXHQgICAgLy8gUHJlY29tcHV0ZWQgUmNvbiBsb29rdXBcblx0ICAgIHZhciBSQ09OID0gWzB4MDAsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MWIsIDB4MzZdO1xuXG5cdCAgICAvKipcblx0ICAgICAqIEFFUyBibG9jayBjaXBoZXIgYWxnb3JpdGhtLlxuXHQgICAgICovXG5cdCAgICB2YXIgQUVTID0gQ19hbGdvLkFFUyA9IEJsb2NrQ2lwaGVyLmV4dGVuZCh7XG5cdCAgICAgICAgX2RvUmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdmFyIHQ7XG5cblx0ICAgICAgICAgICAgLy8gU2tpcCByZXNldCBvZiBuUm91bmRzIGhhcyBiZWVuIHNldCBiZWZvcmUgYW5kIGtleSBkaWQgbm90IGNoYW5nZVxuXHQgICAgICAgICAgICBpZiAodGhpcy5fblJvdW5kcyAmJiB0aGlzLl9rZXlQcmlvclJlc2V0ID09PSB0aGlzLl9rZXkpIHtcblx0ICAgICAgICAgICAgICAgIHJldHVybjtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIga2V5ID0gdGhpcy5fa2V5UHJpb3JSZXNldCA9IHRoaXMuX2tleTtcblx0ICAgICAgICAgICAgdmFyIGtleVdvcmRzID0ga2V5LndvcmRzO1xuXHQgICAgICAgICAgICB2YXIga2V5U2l6ZSA9IGtleS5zaWdCeXRlcyAvIDQ7XG5cblx0ICAgICAgICAgICAgLy8gQ29tcHV0ZSBudW1iZXIgb2Ygcm91bmRzXG5cdCAgICAgICAgICAgIHZhciBuUm91bmRzID0gdGhpcy5fblJvdW5kcyA9IGtleVNpemUgKyA2O1xuXG5cdCAgICAgICAgICAgIC8vIENvbXB1dGUgbnVtYmVyIG9mIGtleSBzY2hlZHVsZSByb3dzXG5cdCAgICAgICAgICAgIHZhciBrc1Jvd3MgPSAoblJvdW5kcyArIDEpICogNDtcblxuXHQgICAgICAgICAgICAvLyBDb21wdXRlIGtleSBzY2hlZHVsZVxuXHQgICAgICAgICAgICB2YXIga2V5U2NoZWR1bGUgPSB0aGlzLl9rZXlTY2hlZHVsZSA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBrc1JvdyA9IDA7IGtzUm93IDwga3NSb3dzOyBrc1JvdysrKSB7XG5cdCAgICAgICAgICAgICAgICBpZiAoa3NSb3cgPCBrZXlTaXplKSB7XG5cdCAgICAgICAgICAgICAgICAgICAga2V5U2NoZWR1bGVba3NSb3ddID0ga2V5V29yZHNba3NSb3ddO1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICB0ID0ga2V5U2NoZWR1bGVba3NSb3cgLSAxXTtcblxuXHQgICAgICAgICAgICAgICAgICAgIGlmICghKGtzUm93ICUga2V5U2l6ZSkpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgLy8gUm90IHdvcmRcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdCA9ICh0IDw8IDgpIHwgKHQgPj4+IDI0KTtcblxuXHQgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdWIgd29yZFxuXHQgICAgICAgICAgICAgICAgICAgICAgICB0ID0gKFNCT1hbdCA+Pj4gMjRdIDw8IDI0KSB8IChTQk9YWyh0ID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsodCA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IFNCT1hbdCAmIDB4ZmZdO1xuXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1peCBSY29uXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHQgXj0gUkNPTlsoa3NSb3cgLyBrZXlTaXplKSB8IDBdIDw8IDI0O1xuXHQgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5U2l6ZSA+IDYgJiYga3NSb3cgJSBrZXlTaXplID09IDQpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3ViIHdvcmRcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdCA9IChTQk9YW3QgPj4+IDI0XSA8PCAyNCkgfCAoU0JPWFsodCA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKFNCT1hbKHQgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3QgJiAweGZmXTtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgICAgICBrZXlTY2hlZHVsZVtrc1Jvd10gPSBrZXlTY2hlZHVsZVtrc1JvdyAtIGtleVNpemVdIF4gdDtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIENvbXB1dGUgaW52IGtleSBzY2hlZHVsZVxuXHQgICAgICAgICAgICB2YXIgaW52S2V5U2NoZWR1bGUgPSB0aGlzLl9pbnZLZXlTY2hlZHVsZSA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpbnZLc1JvdyA9IDA7IGludktzUm93IDwga3NSb3dzOyBpbnZLc1JvdysrKSB7XG5cdCAgICAgICAgICAgICAgICB2YXIga3NSb3cgPSBrc1Jvd3MgLSBpbnZLc1JvdztcblxuXHQgICAgICAgICAgICAgICAgaWYgKGludktzUm93ICUgNCkge1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciB0ID0ga2V5U2NoZWR1bGVba3NSb3ddO1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGtleVNjaGVkdWxlW2tzUm93IC0gNF07XG5cdCAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgIGlmIChpbnZLc1JvdyA8IDQgfHwga3NSb3cgPD0gNCkge1xuXHQgICAgICAgICAgICAgICAgICAgIGludktleVNjaGVkdWxlW2ludktzUm93XSA9IHQ7XG5cdCAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgICAgIGludktleVNjaGVkdWxlW2ludktzUm93XSA9IElOVl9TVUJfTUlYXzBbU0JPWFt0ID4+PiAyNF1dIF4gSU5WX1NVQl9NSVhfMVtTQk9YWyh0ID4+PiAxNikgJiAweGZmXV0gXlxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVl9TVUJfTUlYXzJbU0JPWFsodCA+Pj4gOCkgJiAweGZmXV0gXiBJTlZfU1VCX01JWF8zW1NCT1hbdCAmIDB4ZmZdXTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBlbmNyeXB0QmxvY2s6IGZ1bmN0aW9uIChNLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgdGhpcy5fZG9DcnlwdEJsb2NrKE0sIG9mZnNldCwgdGhpcy5fa2V5U2NoZWR1bGUsIFNVQl9NSVhfMCwgU1VCX01JWF8xLCBTVUJfTUlYXzIsIFNVQl9NSVhfMywgU0JPWCk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGRlY3J5cHRCbG9jazogZnVuY3Rpb24gKE0sIG9mZnNldCkge1xuXHQgICAgICAgICAgICAvLyBTd2FwIDJuZCBhbmQgNHRoIHJvd3Ncblx0ICAgICAgICAgICAgdmFyIHQgPSBNW29mZnNldCArIDFdO1xuXHQgICAgICAgICAgICBNW29mZnNldCArIDFdID0gTVtvZmZzZXQgKyAzXTtcblx0ICAgICAgICAgICAgTVtvZmZzZXQgKyAzXSA9IHQ7XG5cblx0ICAgICAgICAgICAgdGhpcy5fZG9DcnlwdEJsb2NrKE0sIG9mZnNldCwgdGhpcy5faW52S2V5U2NoZWR1bGUsIElOVl9TVUJfTUlYXzAsIElOVl9TVUJfTUlYXzEsIElOVl9TVUJfTUlYXzIsIElOVl9TVUJfTUlYXzMsIElOVl9TQk9YKTtcblxuXHQgICAgICAgICAgICAvLyBJbnYgc3dhcCAybmQgYW5kIDR0aCByb3dzXG5cdCAgICAgICAgICAgIHZhciB0ID0gTVtvZmZzZXQgKyAxXTtcblx0ICAgICAgICAgICAgTVtvZmZzZXQgKyAxXSA9IE1bb2Zmc2V0ICsgM107XG5cdCAgICAgICAgICAgIE1bb2Zmc2V0ICsgM10gPSB0O1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9DcnlwdEJsb2NrOiBmdW5jdGlvbiAoTSwgb2Zmc2V0LCBrZXlTY2hlZHVsZSwgU1VCX01JWF8wLCBTVUJfTUlYXzEsIFNVQl9NSVhfMiwgU1VCX01JWF8zLCBTQk9YKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBuUm91bmRzID0gdGhpcy5fblJvdW5kcztcblxuXHQgICAgICAgICAgICAvLyBHZXQgaW5wdXQsIGFkZCByb3VuZCBrZXlcblx0ICAgICAgICAgICAgdmFyIHMwID0gTVtvZmZzZXRdICAgICBeIGtleVNjaGVkdWxlWzBdO1xuXHQgICAgICAgICAgICB2YXIgczEgPSBNW29mZnNldCArIDFdIF4ga2V5U2NoZWR1bGVbMV07XG5cdCAgICAgICAgICAgIHZhciBzMiA9IE1bb2Zmc2V0ICsgMl0gXiBrZXlTY2hlZHVsZVsyXTtcblx0ICAgICAgICAgICAgdmFyIHMzID0gTVtvZmZzZXQgKyAzXSBeIGtleVNjaGVkdWxlWzNdO1xuXG5cdCAgICAgICAgICAgIC8vIEtleSBzY2hlZHVsZSByb3cgY291bnRlclxuXHQgICAgICAgICAgICB2YXIga3NSb3cgPSA0O1xuXG5cdCAgICAgICAgICAgIC8vIFJvdW5kc1xuXHQgICAgICAgICAgICBmb3IgKHZhciByb3VuZCA9IDE7IHJvdW5kIDwgblJvdW5kczsgcm91bmQrKykge1xuXHQgICAgICAgICAgICAgICAgLy8gU2hpZnQgcm93cywgc3ViIGJ5dGVzLCBtaXggY29sdW1ucywgYWRkIHJvdW5kIGtleVxuXHQgICAgICAgICAgICAgICAgdmFyIHQwID0gU1VCX01JWF8wW3MwID4+PiAyNF0gXiBTVUJfTUlYXzFbKHMxID4+PiAxNikgJiAweGZmXSBeIFNVQl9NSVhfMlsoczIgPj4+IDgpICYgMHhmZl0gXiBTVUJfTUlYXzNbczMgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdO1xuXHQgICAgICAgICAgICAgICAgdmFyIHQxID0gU1VCX01JWF8wW3MxID4+PiAyNF0gXiBTVUJfTUlYXzFbKHMyID4+PiAxNikgJiAweGZmXSBeIFNVQl9NSVhfMlsoczMgPj4+IDgpICYgMHhmZl0gXiBTVUJfTUlYXzNbczAgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdO1xuXHQgICAgICAgICAgICAgICAgdmFyIHQyID0gU1VCX01JWF8wW3MyID4+PiAyNF0gXiBTVUJfTUlYXzFbKHMzID4+PiAxNikgJiAweGZmXSBeIFNVQl9NSVhfMlsoczAgPj4+IDgpICYgMHhmZl0gXiBTVUJfTUlYXzNbczEgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdO1xuXHQgICAgICAgICAgICAgICAgdmFyIHQzID0gU1VCX01JWF8wW3MzID4+PiAyNF0gXiBTVUJfTUlYXzFbKHMwID4+PiAxNikgJiAweGZmXSBeIFNVQl9NSVhfMlsoczEgPj4+IDgpICYgMHhmZl0gXiBTVUJfTUlYXzNbczIgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBVcGRhdGUgc3RhdGVcblx0ICAgICAgICAgICAgICAgIHMwID0gdDA7XG5cdCAgICAgICAgICAgICAgICBzMSA9IHQxO1xuXHQgICAgICAgICAgICAgICAgczIgPSB0Mjtcblx0ICAgICAgICAgICAgICAgIHMzID0gdDM7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBTaGlmdCByb3dzLCBzdWIgYnl0ZXMsIGFkZCByb3VuZCBrZXlcblx0ICAgICAgICAgICAgdmFyIHQwID0gKChTQk9YW3MwID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMxID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczIgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MzICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK107XG5cdCAgICAgICAgICAgIHZhciB0MSA9ICgoU0JPWFtzMSA+Pj4gMjRdIDw8IDI0KSB8IChTQk9YWyhzMiA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKFNCT1hbKHMzID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgU0JPWFtzMCAmIDB4ZmZdKSBeIGtleVNjaGVkdWxlW2tzUm93KytdO1xuXHQgICAgICAgICAgICB2YXIgdDIgPSAoKFNCT1hbczIgPj4+IDI0XSA8PCAyNCkgfCAoU0JPWFsoczMgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8IChTQk9YWyhzMCA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IFNCT1hbczEgJiAweGZmXSkgXiBrZXlTY2hlZHVsZVtrc1JvdysrXTtcblx0ICAgICAgICAgICAgdmFyIHQzID0gKChTQk9YW3MzID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMwID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczEgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MyICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK107XG5cblx0ICAgICAgICAgICAgLy8gU2V0IG91dHB1dFxuXHQgICAgICAgICAgICBNW29mZnNldF0gICAgID0gdDA7XG5cdCAgICAgICAgICAgIE1bb2Zmc2V0ICsgMV0gPSB0MTtcblx0ICAgICAgICAgICAgTVtvZmZzZXQgKyAyXSA9IHQyO1xuXHQgICAgICAgICAgICBNW29mZnNldCArIDNdID0gdDM7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGtleVNpemU6IDI1Ni8zMlxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb25zIHRvIHRoZSBjaXBoZXIncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBjaXBoZXJ0ZXh0ID0gQ3J5cHRvSlMuQUVTLmVuY3J5cHQobWVzc2FnZSwga2V5LCBjZmcpO1xuXHQgICAgICogICAgIHZhciBwbGFpbnRleHQgID0gQ3J5cHRvSlMuQUVTLmRlY3J5cHQoY2lwaGVydGV4dCwga2V5LCBjZmcpO1xuXHQgICAgICovXG5cdCAgICBDLkFFUyA9IEJsb2NrQ2lwaGVyLl9jcmVhdGVIZWxwZXIoQUVTKTtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5BRVM7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vZXZwa2RmXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL2V2cGtkZlwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0LyoqXG5cdCAqIENpcGhlciBjb3JlIGNvbXBvbmVudHMuXG5cdCAqL1xuXHRDcnlwdG9KUy5saWIuQ2lwaGVyIHx8IChmdW5jdGlvbiAodW5kZWZpbmVkKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBCYXNlID0gQ19saWIuQmFzZTtcblx0ICAgIHZhciBXb3JkQXJyYXkgPSBDX2xpYi5Xb3JkQXJyYXk7XG5cdCAgICB2YXIgQnVmZmVyZWRCbG9ja0FsZ29yaXRobSA9IENfbGliLkJ1ZmZlcmVkQmxvY2tBbGdvcml0aG07XG5cdCAgICB2YXIgQ19lbmMgPSBDLmVuYztcblx0ICAgIHZhciBVdGY4ID0gQ19lbmMuVXRmODtcblx0ICAgIHZhciBCYXNlNjQgPSBDX2VuYy5CYXNlNjQ7XG5cdCAgICB2YXIgQ19hbGdvID0gQy5hbGdvO1xuXHQgICAgdmFyIEV2cEtERiA9IENfYWxnby5FdnBLREY7XG5cblx0ICAgIC8qKlxuXHQgICAgICogQWJzdHJhY3QgYmFzZSBjaXBoZXIgdGVtcGxhdGUuXG5cdCAgICAgKlxuXHQgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IGtleVNpemUgVGhpcyBjaXBoZXIncyBrZXkgc2l6ZS4gRGVmYXVsdDogNCAoMTI4IGJpdHMpXG5cdCAgICAgKiBAcHJvcGVydHkge251bWJlcn0gaXZTaXplIFRoaXMgY2lwaGVyJ3MgSVYgc2l6ZS4gRGVmYXVsdDogNCAoMTI4IGJpdHMpXG5cdCAgICAgKiBAcHJvcGVydHkge251bWJlcn0gX0VOQ19YRk9STV9NT0RFIEEgY29uc3RhbnQgcmVwcmVzZW50aW5nIGVuY3J5cHRpb24gbW9kZS5cblx0ICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBfREVDX1hGT1JNX01PREUgQSBjb25zdGFudCByZXByZXNlbnRpbmcgZGVjcnlwdGlvbiBtb2RlLlxuXHQgICAgICovXG5cdCAgICB2YXIgQ2lwaGVyID0gQ19saWIuQ2lwaGVyID0gQnVmZmVyZWRCbG9ja0FsZ29yaXRobS5leHRlbmQoe1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwcm9wZXJ0eSB7V29yZEFycmF5fSBpdiBUaGUgSVYgdG8gdXNlIGZvciB0aGlzIG9wZXJhdGlvbi5cblx0ICAgICAgICAgKi9cblx0ICAgICAgICBjZmc6IEJhc2UuZXh0ZW5kKCksXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDcmVhdGVzIHRoaXMgY2lwaGVyIGluIGVuY3J5cHRpb24gbW9kZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fSBrZXkgVGhlIGtleS5cblx0ICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIChPcHRpb25hbCkgVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB1c2UgZm9yIHRoaXMgb3BlcmF0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7Q2lwaGVyfSBBIGNpcGhlciBpbnN0YW5jZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGNpcGhlciA9IENyeXB0b0pTLmFsZ28uQUVTLmNyZWF0ZUVuY3J5cHRvcihrZXlXb3JkQXJyYXksIHsgaXY6IGl2V29yZEFycmF5IH0pO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNyZWF0ZUVuY3J5cHRvcjogZnVuY3Rpb24gKGtleSwgY2ZnKSB7XG5cdCAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZSh0aGlzLl9FTkNfWEZPUk1fTU9ERSwga2V5LCBjZmcpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDcmVhdGVzIHRoaXMgY2lwaGVyIGluIGRlY3J5cHRpb24gbW9kZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fSBrZXkgVGhlIGtleS5cblx0ICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIChPcHRpb25hbCkgVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB1c2UgZm9yIHRoaXMgb3BlcmF0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7Q2lwaGVyfSBBIGNpcGhlciBpbnN0YW5jZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGNpcGhlciA9IENyeXB0b0pTLmFsZ28uQUVTLmNyZWF0ZURlY3J5cHRvcihrZXlXb3JkQXJyYXksIHsgaXY6IGl2V29yZEFycmF5IH0pO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNyZWF0ZURlY3J5cHRvcjogZnVuY3Rpb24gKGtleSwgY2ZnKSB7XG5cdCAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZSh0aGlzLl9ERUNfWEZPUk1fTU9ERSwga2V5LCBjZmcpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBJbml0aWFsaXplcyBhIG5ld2x5IGNyZWF0ZWQgY2lwaGVyLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHhmb3JtTW9kZSBFaXRoZXIgdGhlIGVuY3J5cHRpb24gb3IgZGVjcnlwdGlvbiB0cmFuc29ybWF0aW9uIG1vZGUgY29uc3RhbnQuXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl9IGtleSBUaGUga2V5LlxuXHQgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcgKE9wdGlvbmFsKSBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHVzZSBmb3IgdGhpcyBvcGVyYXRpb24uXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBjaXBoZXIgPSBDcnlwdG9KUy5hbGdvLkFFUy5jcmVhdGUoQ3J5cHRvSlMuYWxnby5BRVMuX0VOQ19YRk9STV9NT0RFLCBrZXlXb3JkQXJyYXksIHsgaXY6IGl2V29yZEFycmF5IH0pO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGluaXQ6IGZ1bmN0aW9uICh4Zm9ybU1vZGUsIGtleSwgY2ZnKSB7XG5cdCAgICAgICAgICAgIC8vIEFwcGx5IGNvbmZpZyBkZWZhdWx0c1xuXHQgICAgICAgICAgICB0aGlzLmNmZyA9IHRoaXMuY2ZnLmV4dGVuZChjZmcpO1xuXG5cdCAgICAgICAgICAgIC8vIFN0b3JlIHRyYW5zZm9ybSBtb2RlIGFuZCBrZXlcblx0ICAgICAgICAgICAgdGhpcy5feGZvcm1Nb2RlID0geGZvcm1Nb2RlO1xuXHQgICAgICAgICAgICB0aGlzLl9rZXkgPSBrZXk7XG5cblx0ICAgICAgICAgICAgLy8gU2V0IGluaXRpYWwgdmFsdWVzXG5cdCAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogUmVzZXRzIHRoaXMgY2lwaGVyIHRvIGl0cyBpbml0aWFsIHN0YXRlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICBjaXBoZXIucmVzZXQoKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICByZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAvLyBSZXNldCBkYXRhIGJ1ZmZlclxuXHQgICAgICAgICAgICBCdWZmZXJlZEJsb2NrQWxnb3JpdGhtLnJlc2V0LmNhbGwodGhpcyk7XG5cblx0ICAgICAgICAgICAgLy8gUGVyZm9ybSBjb25jcmV0ZS1jaXBoZXIgbG9naWNcblx0ICAgICAgICAgICAgdGhpcy5fZG9SZXNldCgpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBBZGRzIGRhdGEgdG8gYmUgZW5jcnlwdGVkIG9yIGRlY3J5cHRlZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gZGF0YVVwZGF0ZSBUaGUgZGF0YSB0byBlbmNyeXB0IG9yIGRlY3J5cHQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBkYXRhIGFmdGVyIHByb2Nlc3NpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBlbmNyeXB0ZWQgPSBjaXBoZXIucHJvY2VzcygnZGF0YScpO1xuXHQgICAgICAgICAqICAgICB2YXIgZW5jcnlwdGVkID0gY2lwaGVyLnByb2Nlc3Mod29yZEFycmF5KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBwcm9jZXNzOiBmdW5jdGlvbiAoZGF0YVVwZGF0ZSkge1xuXHQgICAgICAgICAgICAvLyBBcHBlbmRcblx0ICAgICAgICAgICAgdGhpcy5fYXBwZW5kKGRhdGFVcGRhdGUpO1xuXG5cdCAgICAgICAgICAgIC8vIFByb2Nlc3MgYXZhaWxhYmxlIGJsb2Nrc1xuXHQgICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJvY2VzcygpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBGaW5hbGl6ZXMgdGhlIGVuY3J5cHRpb24gb3IgZGVjcnlwdGlvbiBwcm9jZXNzLlxuXHQgICAgICAgICAqIE5vdGUgdGhhdCB0aGUgZmluYWxpemUgb3BlcmF0aW9uIGlzIGVmZmVjdGl2ZWx5IGEgZGVzdHJ1Y3RpdmUsIHJlYWQtb25jZSBvcGVyYXRpb24uXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IGRhdGFVcGRhdGUgVGhlIGZpbmFsIGRhdGEgdG8gZW5jcnlwdCBvciBkZWNyeXB0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgZGF0YSBhZnRlciBmaW5hbCBwcm9jZXNzaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgZW5jcnlwdGVkID0gY2lwaGVyLmZpbmFsaXplKCk7XG5cdCAgICAgICAgICogICAgIHZhciBlbmNyeXB0ZWQgPSBjaXBoZXIuZmluYWxpemUoJ2RhdGEnKTtcblx0ICAgICAgICAgKiAgICAgdmFyIGVuY3J5cHRlZCA9IGNpcGhlci5maW5hbGl6ZSh3b3JkQXJyYXkpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGZpbmFsaXplOiBmdW5jdGlvbiAoZGF0YVVwZGF0ZSkge1xuXHQgICAgICAgICAgICAvLyBGaW5hbCBkYXRhIHVwZGF0ZVxuXHQgICAgICAgICAgICBpZiAoZGF0YVVwZGF0ZSkge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5fYXBwZW5kKGRhdGFVcGRhdGUpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gUGVyZm9ybSBjb25jcmV0ZS1jaXBoZXIgbG9naWNcblx0ICAgICAgICAgICAgdmFyIGZpbmFsUHJvY2Vzc2VkRGF0YSA9IHRoaXMuX2RvRmluYWxpemUoKTtcblxuXHQgICAgICAgICAgICByZXR1cm4gZmluYWxQcm9jZXNzZWREYXRhO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBrZXlTaXplOiAxMjgvMzIsXG5cblx0ICAgICAgICBpdlNpemU6IDEyOC8zMixcblxuXHQgICAgICAgIF9FTkNfWEZPUk1fTU9ERTogMSxcblxuXHQgICAgICAgIF9ERUNfWEZPUk1fTU9ERTogMixcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENyZWF0ZXMgc2hvcnRjdXQgZnVuY3Rpb25zIHRvIGEgY2lwaGVyJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7Q2lwaGVyfSBjaXBoZXIgVGhlIGNpcGhlciB0byBjcmVhdGUgYSBoZWxwZXIgZm9yLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7T2JqZWN0fSBBbiBvYmplY3Qgd2l0aCBlbmNyeXB0IGFuZCBkZWNyeXB0IHNob3J0Y3V0IGZ1bmN0aW9ucy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIEFFUyA9IENyeXB0b0pTLmxpYi5DaXBoZXIuX2NyZWF0ZUhlbHBlcihDcnlwdG9KUy5hbGdvLkFFUyk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgX2NyZWF0ZUhlbHBlcjogKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgZnVuY3Rpb24gc2VsZWN0Q2lwaGVyU3RyYXRlZ3koa2V5KSB7XG5cdCAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGtleSA9PSAnc3RyaW5nJykge1xuXHQgICAgICAgICAgICAgICAgICAgIHJldHVybiBQYXNzd29yZEJhc2VkQ2lwaGVyO1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2VyaWFsaXphYmxlQ2lwaGVyO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChjaXBoZXIpIHtcblx0ICAgICAgICAgICAgICAgIHJldHVybiB7XG5cdCAgICAgICAgICAgICAgICAgICAgZW5jcnlwdDogZnVuY3Rpb24gKG1lc3NhZ2UsIGtleSwgY2ZnKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3RDaXBoZXJTdHJhdGVneShrZXkpLmVuY3J5cHQoY2lwaGVyLCBtZXNzYWdlLCBrZXksIGNmZyk7XG5cdCAgICAgICAgICAgICAgICAgICAgfSxcblxuXHQgICAgICAgICAgICAgICAgICAgIGRlY3J5cHQ6IGZ1bmN0aW9uIChjaXBoZXJ0ZXh0LCBrZXksIGNmZykge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0Q2lwaGVyU3RyYXRlZ3koa2V5KS5kZWNyeXB0KGNpcGhlciwgY2lwaGVydGV4dCwga2V5LCBjZmcpO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIH07XG5cdCAgICAgICAgICAgIH07XG5cdCAgICAgICAgfSgpKVxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogQWJzdHJhY3QgYmFzZSBzdHJlYW0gY2lwaGVyIHRlbXBsYXRlLlxuXHQgICAgICpcblx0ICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBibG9ja1NpemUgVGhlIG51bWJlciBvZiAzMi1iaXQgd29yZHMgdGhpcyBjaXBoZXIgb3BlcmF0ZXMgb24uIERlZmF1bHQ6IDEgKDMyIGJpdHMpXG5cdCAgICAgKi9cblx0ICAgIHZhciBTdHJlYW1DaXBoZXIgPSBDX2xpYi5TdHJlYW1DaXBoZXIgPSBDaXBoZXIuZXh0ZW5kKHtcblx0ICAgICAgICBfZG9GaW5hbGl6ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAvLyBQcm9jZXNzIHBhcnRpYWwgYmxvY2tzXG5cdCAgICAgICAgICAgIHZhciBmaW5hbFByb2Nlc3NlZEJsb2NrcyA9IHRoaXMuX3Byb2Nlc3MoISEnZmx1c2gnKTtcblxuXHQgICAgICAgICAgICByZXR1cm4gZmluYWxQcm9jZXNzZWRCbG9ja3M7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGJsb2NrU2l6ZTogMVxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogTW9kZSBuYW1lc3BhY2UuXG5cdCAgICAgKi9cblx0ICAgIHZhciBDX21vZGUgPSBDLm1vZGUgPSB7fTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBBYnN0cmFjdCBiYXNlIGJsb2NrIGNpcGhlciBtb2RlIHRlbXBsYXRlLlxuXHQgICAgICovXG5cdCAgICB2YXIgQmxvY2tDaXBoZXJNb2RlID0gQ19saWIuQmxvY2tDaXBoZXJNb2RlID0gQmFzZS5leHRlbmQoe1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENyZWF0ZXMgdGhpcyBtb2RlIGZvciBlbmNyeXB0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtDaXBoZXJ9IGNpcGhlciBBIGJsb2NrIGNpcGhlciBpbnN0YW5jZS5cblx0ICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBpdiBUaGUgSVYgd29yZHMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBtb2RlID0gQ3J5cHRvSlMubW9kZS5DQkMuY3JlYXRlRW5jcnlwdG9yKGNpcGhlciwgaXYud29yZHMpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNyZWF0ZUVuY3J5cHRvcjogZnVuY3Rpb24gKGNpcGhlciwgaXYpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIHRoaXMuRW5jcnlwdG9yLmNyZWF0ZShjaXBoZXIsIGl2KTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ3JlYXRlcyB0aGlzIG1vZGUgZm9yIGRlY3J5cHRpb24uXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge0NpcGhlcn0gY2lwaGVyIEEgYmxvY2sgY2lwaGVyIGluc3RhbmNlLlxuXHQgICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGl2IFRoZSBJViB3b3Jkcy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIG1vZGUgPSBDcnlwdG9KUy5tb2RlLkNCQy5jcmVhdGVEZWNyeXB0b3IoY2lwaGVyLCBpdi53b3Jkcyk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgY3JlYXRlRGVjcnlwdG9yOiBmdW5jdGlvbiAoY2lwaGVyLCBpdikge1xuXHQgICAgICAgICAgICByZXR1cm4gdGhpcy5EZWNyeXB0b3IuY3JlYXRlKGNpcGhlciwgaXYpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBJbml0aWFsaXplcyBhIG5ld2x5IGNyZWF0ZWQgbW9kZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7Q2lwaGVyfSBjaXBoZXIgQSBibG9jayBjaXBoZXIgaW5zdGFuY2UuXG5cdCAgICAgICAgICogQHBhcmFtIHtBcnJheX0gaXYgVGhlIElWIHdvcmRzLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgbW9kZSA9IENyeXB0b0pTLm1vZGUuQ0JDLkVuY3J5cHRvci5jcmVhdGUoY2lwaGVyLCBpdi53b3Jkcyk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgaW5pdDogZnVuY3Rpb24gKGNpcGhlciwgaXYpIHtcblx0ICAgICAgICAgICAgdGhpcy5fY2lwaGVyID0gY2lwaGVyO1xuXHQgICAgICAgICAgICB0aGlzLl9pdiA9IGl2O1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIENpcGhlciBCbG9jayBDaGFpbmluZyBtb2RlLlxuXHQgICAgICovXG5cdCAgICB2YXIgQ0JDID0gQ19tb2RlLkNCQyA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQWJzdHJhY3QgYmFzZSBDQkMgbW9kZS5cblx0ICAgICAgICAgKi9cblx0ICAgICAgICB2YXIgQ0JDID0gQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpO1xuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ0JDIGVuY3J5cHRvci5cblx0ICAgICAgICAgKi9cblx0ICAgICAgICBDQkMuRW5jcnlwdG9yID0gQ0JDLmV4dGVuZCh7XG5cdCAgICAgICAgICAgIC8qKlxuXHQgICAgICAgICAgICAgKiBQcm9jZXNzZXMgdGhlIGRhdGEgYmxvY2sgYXQgb2Zmc2V0LlxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSB3b3JkcyBUaGUgZGF0YSB3b3JkcyB0byBvcGVyYXRlIG9uLlxuXHQgICAgICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0IFRoZSBvZmZzZXQgd2hlcmUgdGhlIGJsb2NrIHN0YXJ0cy5cblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogICAgIG1vZGUucHJvY2Vzc0Jsb2NrKGRhdGEud29yZHMsIG9mZnNldCk7XG5cdCAgICAgICAgICAgICAqL1xuXHQgICAgICAgICAgICBwcm9jZXNzQmxvY2s6IGZ1bmN0aW9uICh3b3Jkcywgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgICAgIHZhciBjaXBoZXIgPSB0aGlzLl9jaXBoZXI7XG5cdCAgICAgICAgICAgICAgICB2YXIgYmxvY2tTaXplID0gY2lwaGVyLmJsb2NrU2l6ZTtcblxuXHQgICAgICAgICAgICAgICAgLy8gWE9SIGFuZCBlbmNyeXB0XG5cdCAgICAgICAgICAgICAgICB4b3JCbG9jay5jYWxsKHRoaXMsIHdvcmRzLCBvZmZzZXQsIGJsb2NrU2l6ZSk7XG5cdCAgICAgICAgICAgICAgICBjaXBoZXIuZW5jcnlwdEJsb2NrKHdvcmRzLCBvZmZzZXQpO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBSZW1lbWJlciB0aGlzIGJsb2NrIHRvIHVzZSB3aXRoIG5leHQgYmxvY2tcblx0ICAgICAgICAgICAgICAgIHRoaXMuX3ByZXZCbG9jayA9IHdvcmRzLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgYmxvY2tTaXplKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH0pO1xuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ0JDIGRlY3J5cHRvci5cblx0ICAgICAgICAgKi9cblx0ICAgICAgICBDQkMuRGVjcnlwdG9yID0gQ0JDLmV4dGVuZCh7XG5cdCAgICAgICAgICAgIC8qKlxuXHQgICAgICAgICAgICAgKiBQcm9jZXNzZXMgdGhlIGRhdGEgYmxvY2sgYXQgb2Zmc2V0LlxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSB3b3JkcyBUaGUgZGF0YSB3b3JkcyB0byBvcGVyYXRlIG9uLlxuXHQgICAgICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0IFRoZSBvZmZzZXQgd2hlcmUgdGhlIGJsb2NrIHN0YXJ0cy5cblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogICAgIG1vZGUucHJvY2Vzc0Jsb2NrKGRhdGEud29yZHMsIG9mZnNldCk7XG5cdCAgICAgICAgICAgICAqL1xuXHQgICAgICAgICAgICBwcm9jZXNzQmxvY2s6IGZ1bmN0aW9uICh3b3Jkcywgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgICAgIHZhciBjaXBoZXIgPSB0aGlzLl9jaXBoZXI7XG5cdCAgICAgICAgICAgICAgICB2YXIgYmxvY2tTaXplID0gY2lwaGVyLmJsb2NrU2l6ZTtcblxuXHQgICAgICAgICAgICAgICAgLy8gUmVtZW1iZXIgdGhpcyBibG9jayB0byB1c2Ugd2l0aCBuZXh0IGJsb2NrXG5cdCAgICAgICAgICAgICAgICB2YXIgdGhpc0Jsb2NrID0gd29yZHMuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBibG9ja1NpemUpO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBEZWNyeXB0IGFuZCBYT1Jcblx0ICAgICAgICAgICAgICAgIGNpcGhlci5kZWNyeXB0QmxvY2sod29yZHMsIG9mZnNldCk7XG5cdCAgICAgICAgICAgICAgICB4b3JCbG9jay5jYWxsKHRoaXMsIHdvcmRzLCBvZmZzZXQsIGJsb2NrU2l6ZSk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIFRoaXMgYmxvY2sgYmVjb21lcyB0aGUgcHJldmlvdXMgYmxvY2tcblx0ICAgICAgICAgICAgICAgIHRoaXMuX3ByZXZCbG9jayA9IHRoaXNCbG9jaztcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH0pO1xuXG5cdCAgICAgICAgZnVuY3Rpb24geG9yQmxvY2sod29yZHMsIG9mZnNldCwgYmxvY2tTaXplKSB7XG5cdCAgICAgICAgICAgIHZhciBibG9jaztcblxuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICB2YXIgaXYgPSB0aGlzLl9pdjtcblxuXHQgICAgICAgICAgICAvLyBDaG9vc2UgbWl4aW5nIGJsb2NrXG5cdCAgICAgICAgICAgIGlmIChpdikge1xuXHQgICAgICAgICAgICAgICAgYmxvY2sgPSBpdjtcblxuXHQgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIElWIGZvciBzdWJzZXF1ZW50IGJsb2Nrc1xuXHQgICAgICAgICAgICAgICAgdGhpcy5faXYgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICBibG9jayA9IHRoaXMuX3ByZXZCbG9jaztcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIFhPUiBibG9ja3Ncblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBibG9ja1NpemU7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgd29yZHNbb2Zmc2V0ICsgaV0gXj0gYmxvY2tbaV07XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gQ0JDO1xuXHQgICAgfSgpKTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBQYWRkaW5nIG5hbWVzcGFjZS5cblx0ICAgICAqL1xuXHQgICAgdmFyIENfcGFkID0gQy5wYWQgPSB7fTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBQS0NTICM1LzcgcGFkZGluZyBzdHJhdGVneS5cblx0ICAgICAqL1xuXHQgICAgdmFyIFBrY3M3ID0gQ19wYWQuUGtjczcgPSB7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogUGFkcyBkYXRhIHVzaW5nIHRoZSBhbGdvcml0aG0gZGVmaW5lZCBpbiBQS0NTICM1LzcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheX0gZGF0YSBUaGUgZGF0YSB0byBwYWQuXG5cdCAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGJsb2NrU2l6ZSBUaGUgbXVsdGlwbGUgdGhhdCB0aGUgZGF0YSBzaG91bGQgYmUgcGFkZGVkIHRvLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICBDcnlwdG9KUy5wYWQuUGtjczcucGFkKHdvcmRBcnJheSwgNCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgcGFkOiBmdW5jdGlvbiAoZGF0YSwgYmxvY2tTaXplKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBibG9ja1NpemVCeXRlcyA9IGJsb2NrU2l6ZSAqIDQ7XG5cblx0ICAgICAgICAgICAgLy8gQ291bnQgcGFkZGluZyBieXRlc1xuXHQgICAgICAgICAgICB2YXIgblBhZGRpbmdCeXRlcyA9IGJsb2NrU2l6ZUJ5dGVzIC0gZGF0YS5zaWdCeXRlcyAlIGJsb2NrU2l6ZUJ5dGVzO1xuXG5cdCAgICAgICAgICAgIC8vIENyZWF0ZSBwYWRkaW5nIHdvcmRcblx0ICAgICAgICAgICAgdmFyIHBhZGRpbmdXb3JkID0gKG5QYWRkaW5nQnl0ZXMgPDwgMjQpIHwgKG5QYWRkaW5nQnl0ZXMgPDwgMTYpIHwgKG5QYWRkaW5nQnl0ZXMgPDwgOCkgfCBuUGFkZGluZ0J5dGVzO1xuXG5cdCAgICAgICAgICAgIC8vIENyZWF0ZSBwYWRkaW5nXG5cdCAgICAgICAgICAgIHZhciBwYWRkaW5nV29yZHMgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuUGFkZGluZ0J5dGVzOyBpICs9IDQpIHtcblx0ICAgICAgICAgICAgICAgIHBhZGRpbmdXb3Jkcy5wdXNoKHBhZGRpbmdXb3JkKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB2YXIgcGFkZGluZyA9IFdvcmRBcnJheS5jcmVhdGUocGFkZGluZ1dvcmRzLCBuUGFkZGluZ0J5dGVzKTtcblxuXHQgICAgICAgICAgICAvLyBBZGQgcGFkZGluZ1xuXHQgICAgICAgICAgICBkYXRhLmNvbmNhdChwYWRkaW5nKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogVW5wYWRzIGRhdGEgdGhhdCBoYWQgYmVlbiBwYWRkZWQgdXNpbmcgdGhlIGFsZ29yaXRobSBkZWZpbmVkIGluIFBLQ1MgIzUvNy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fSBkYXRhIFRoZSBkYXRhIHRvIHVucGFkLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICBDcnlwdG9KUy5wYWQuUGtjczcudW5wYWQod29yZEFycmF5KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICB1bnBhZDogZnVuY3Rpb24gKGRhdGEpIHtcblx0ICAgICAgICAgICAgLy8gR2V0IG51bWJlciBvZiBwYWRkaW5nIGJ5dGVzIGZyb20gbGFzdCBieXRlXG5cdCAgICAgICAgICAgIHZhciBuUGFkZGluZ0J5dGVzID0gZGF0YS53b3Jkc1soZGF0YS5zaWdCeXRlcyAtIDEpID4+PiAyXSAmIDB4ZmY7XG5cblx0ICAgICAgICAgICAgLy8gUmVtb3ZlIHBhZGRpbmdcblx0ICAgICAgICAgICAgZGF0YS5zaWdCeXRlcyAtPSBuUGFkZGluZ0J5dGVzO1xuXHQgICAgICAgIH1cblx0ICAgIH07XG5cblx0ICAgIC8qKlxuXHQgICAgICogQWJzdHJhY3QgYmFzZSBibG9jayBjaXBoZXIgdGVtcGxhdGUuXG5cdCAgICAgKlxuXHQgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IGJsb2NrU2l6ZSBUaGUgbnVtYmVyIG9mIDMyLWJpdCB3b3JkcyB0aGlzIGNpcGhlciBvcGVyYXRlcyBvbi4gRGVmYXVsdDogNCAoMTI4IGJpdHMpXG5cdCAgICAgKi9cblx0ICAgIHZhciBCbG9ja0NpcGhlciA9IENfbGliLkJsb2NrQ2lwaGVyID0gQ2lwaGVyLmV4dGVuZCh7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29uZmlndXJhdGlvbiBvcHRpb25zLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHByb3BlcnR5IHtNb2RlfSBtb2RlIFRoZSBibG9jayBtb2RlIHRvIHVzZS4gRGVmYXVsdDogQ0JDXG5cdCAgICAgICAgICogQHByb3BlcnR5IHtQYWRkaW5nfSBwYWRkaW5nIFRoZSBwYWRkaW5nIHN0cmF0ZWd5IHRvIHVzZS4gRGVmYXVsdDogUGtjczdcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBjZmc6IENpcGhlci5jZmcuZXh0ZW5kKHtcblx0ICAgICAgICAgICAgbW9kZTogQ0JDLFxuXHQgICAgICAgICAgICBwYWRkaW5nOiBQa2NzN1xuXHQgICAgICAgIH0pLFxuXG5cdCAgICAgICAgcmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdmFyIG1vZGVDcmVhdG9yO1xuXG5cdCAgICAgICAgICAgIC8vIFJlc2V0IGNpcGhlclxuXHQgICAgICAgICAgICBDaXBoZXIucmVzZXQuY2FsbCh0aGlzKTtcblxuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGNmZyA9IHRoaXMuY2ZnO1xuXHQgICAgICAgICAgICB2YXIgaXYgPSBjZmcuaXY7XG5cdCAgICAgICAgICAgIHZhciBtb2RlID0gY2ZnLm1vZGU7XG5cblx0ICAgICAgICAgICAgLy8gUmVzZXQgYmxvY2sgbW9kZVxuXHQgICAgICAgICAgICBpZiAodGhpcy5feGZvcm1Nb2RlID09IHRoaXMuX0VOQ19YRk9STV9NT0RFKSB7XG5cdCAgICAgICAgICAgICAgICBtb2RlQ3JlYXRvciA9IG1vZGUuY3JlYXRlRW5jcnlwdG9yO1xuXHQgICAgICAgICAgICB9IGVsc2UgLyogaWYgKHRoaXMuX3hmb3JtTW9kZSA9PSB0aGlzLl9ERUNfWEZPUk1fTU9ERSkgKi8ge1xuXHQgICAgICAgICAgICAgICAgbW9kZUNyZWF0b3IgPSBtb2RlLmNyZWF0ZURlY3J5cHRvcjtcblx0ICAgICAgICAgICAgICAgIC8vIEtlZXAgYXQgbGVhc3Qgb25lIGJsb2NrIGluIHRoZSBidWZmZXIgZm9yIHVucGFkZGluZ1xuXHQgICAgICAgICAgICAgICAgdGhpcy5fbWluQnVmZmVyU2l6ZSA9IDE7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICBpZiAodGhpcy5fbW9kZSAmJiB0aGlzLl9tb2RlLl9fY3JlYXRvciA9PSBtb2RlQ3JlYXRvcikge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5fbW9kZS5pbml0KHRoaXMsIGl2ICYmIGl2LndvcmRzKTtcblx0ICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMuX21vZGUgPSBtb2RlQ3JlYXRvci5jYWxsKG1vZGUsIHRoaXMsIGl2ICYmIGl2LndvcmRzKTtcblx0ICAgICAgICAgICAgICAgIHRoaXMuX21vZGUuX19jcmVhdG9yID0gbW9kZUNyZWF0b3I7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvUHJvY2Vzc0Jsb2NrOiBmdW5jdGlvbiAod29yZHMsIG9mZnNldCkge1xuXHQgICAgICAgICAgICB0aGlzLl9tb2RlLnByb2Nlc3NCbG9jayh3b3Jkcywgb2Zmc2V0KTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvRmluYWxpemU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdmFyIGZpbmFsUHJvY2Vzc2VkQmxvY2tzO1xuXG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBwYWRkaW5nID0gdGhpcy5jZmcucGFkZGluZztcblxuXHQgICAgICAgICAgICAvLyBGaW5hbGl6ZVxuXHQgICAgICAgICAgICBpZiAodGhpcy5feGZvcm1Nb2RlID09IHRoaXMuX0VOQ19YRk9STV9NT0RFKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBQYWQgZGF0YVxuXHQgICAgICAgICAgICAgICAgcGFkZGluZy5wYWQodGhpcy5fZGF0YSwgdGhpcy5ibG9ja1NpemUpO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBQcm9jZXNzIGZpbmFsIGJsb2Nrc1xuXHQgICAgICAgICAgICAgICAgZmluYWxQcm9jZXNzZWRCbG9ja3MgPSB0aGlzLl9wcm9jZXNzKCEhJ2ZsdXNoJyk7XG5cdCAgICAgICAgICAgIH0gZWxzZSAvKiBpZiAodGhpcy5feGZvcm1Nb2RlID09IHRoaXMuX0RFQ19YRk9STV9NT0RFKSAqLyB7XG5cdCAgICAgICAgICAgICAgICAvLyBQcm9jZXNzIGZpbmFsIGJsb2Nrc1xuXHQgICAgICAgICAgICAgICAgZmluYWxQcm9jZXNzZWRCbG9ja3MgPSB0aGlzLl9wcm9jZXNzKCEhJ2ZsdXNoJyk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIFVucGFkIGRhdGFcblx0ICAgICAgICAgICAgICAgIHBhZGRpbmcudW5wYWQoZmluYWxQcm9jZXNzZWRCbG9ja3MpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGZpbmFsUHJvY2Vzc2VkQmxvY2tzO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBibG9ja1NpemU6IDEyOC8zMlxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogQSBjb2xsZWN0aW9uIG9mIGNpcGhlciBwYXJhbWV0ZXJzLlxuXHQgICAgICpcblx0ICAgICAqIEBwcm9wZXJ0eSB7V29yZEFycmF5fSBjaXBoZXJ0ZXh0IFRoZSByYXcgY2lwaGVydGV4dC5cblx0ICAgICAqIEBwcm9wZXJ0eSB7V29yZEFycmF5fSBrZXkgVGhlIGtleSB0byB0aGlzIGNpcGhlcnRleHQuXG5cdCAgICAgKiBAcHJvcGVydHkge1dvcmRBcnJheX0gaXYgVGhlIElWIHVzZWQgaW4gdGhlIGNpcGhlcmluZyBvcGVyYXRpb24uXG5cdCAgICAgKiBAcHJvcGVydHkge1dvcmRBcnJheX0gc2FsdCBUaGUgc2FsdCB1c2VkIHdpdGggYSBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbi5cblx0ICAgICAqIEBwcm9wZXJ0eSB7Q2lwaGVyfSBhbGdvcml0aG0gVGhlIGNpcGhlciBhbGdvcml0aG0uXG5cdCAgICAgKiBAcHJvcGVydHkge01vZGV9IG1vZGUgVGhlIGJsb2NrIG1vZGUgdXNlZCBpbiB0aGUgY2lwaGVyaW5nIG9wZXJhdGlvbi5cblx0ICAgICAqIEBwcm9wZXJ0eSB7UGFkZGluZ30gcGFkZGluZyBUaGUgcGFkZGluZyBzY2hlbWUgdXNlZCBpbiB0aGUgY2lwaGVyaW5nIG9wZXJhdGlvbi5cblx0ICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBibG9ja1NpemUgVGhlIGJsb2NrIHNpemUgb2YgdGhlIGNpcGhlci5cblx0ICAgICAqIEBwcm9wZXJ0eSB7Rm9ybWF0fSBmb3JtYXR0ZXIgVGhlIGRlZmF1bHQgZm9ybWF0dGluZyBzdHJhdGVneSB0byBjb252ZXJ0IHRoaXMgY2lwaGVyIHBhcmFtcyBvYmplY3QgdG8gYSBzdHJpbmcuXG5cdCAgICAgKi9cblx0ICAgIHZhciBDaXBoZXJQYXJhbXMgPSBDX2xpYi5DaXBoZXJQYXJhbXMgPSBCYXNlLmV4dGVuZCh7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogSW5pdGlhbGl6ZXMgYSBuZXdseSBjcmVhdGVkIGNpcGhlciBwYXJhbXMgb2JqZWN0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGNpcGhlclBhcmFtcyBBbiBvYmplY3Qgd2l0aCBhbnkgb2YgdGhlIHBvc3NpYmxlIGNpcGhlciBwYXJhbWV0ZXJzLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgY2lwaGVyUGFyYW1zID0gQ3J5cHRvSlMubGliLkNpcGhlclBhcmFtcy5jcmVhdGUoe1xuXHQgICAgICAgICAqICAgICAgICAgY2lwaGVydGV4dDogY2lwaGVydGV4dFdvcmRBcnJheSxcblx0ICAgICAgICAgKiAgICAgICAgIGtleToga2V5V29yZEFycmF5LFxuXHQgICAgICAgICAqICAgICAgICAgaXY6IGl2V29yZEFycmF5LFxuXHQgICAgICAgICAqICAgICAgICAgc2FsdDogc2FsdFdvcmRBcnJheSxcblx0ICAgICAgICAgKiAgICAgICAgIGFsZ29yaXRobTogQ3J5cHRvSlMuYWxnby5BRVMsXG5cdCAgICAgICAgICogICAgICAgICBtb2RlOiBDcnlwdG9KUy5tb2RlLkNCQyxcblx0ICAgICAgICAgKiAgICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5QS0NTNyxcblx0ICAgICAgICAgKiAgICAgICAgIGJsb2NrU2l6ZTogNCxcblx0ICAgICAgICAgKiAgICAgICAgIGZvcm1hdHRlcjogQ3J5cHRvSlMuZm9ybWF0Lk9wZW5TU0xcblx0ICAgICAgICAgKiAgICAgfSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgaW5pdDogZnVuY3Rpb24gKGNpcGhlclBhcmFtcykge1xuXHQgICAgICAgICAgICB0aGlzLm1peEluKGNpcGhlclBhcmFtcyk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIHRoaXMgY2lwaGVyIHBhcmFtcyBvYmplY3QgdG8gYSBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge0Zvcm1hdH0gZm9ybWF0dGVyIChPcHRpb25hbCkgVGhlIGZvcm1hdHRpbmcgc3RyYXRlZ3kgdG8gdXNlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgc3RyaW5naWZpZWQgY2lwaGVyIHBhcmFtcy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEB0aHJvd3MgRXJyb3IgSWYgbmVpdGhlciB0aGUgZm9ybWF0dGVyIG5vciB0aGUgZGVmYXVsdCBmb3JtYXR0ZXIgaXMgc2V0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgc3RyaW5nID0gY2lwaGVyUGFyYW1zICsgJyc7XG5cdCAgICAgICAgICogICAgIHZhciBzdHJpbmcgPSBjaXBoZXJQYXJhbXMudG9TdHJpbmcoKTtcblx0ICAgICAgICAgKiAgICAgdmFyIHN0cmluZyA9IGNpcGhlclBhcmFtcy50b1N0cmluZyhDcnlwdG9KUy5mb3JtYXQuT3BlblNTTCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgdG9TdHJpbmc6IGZ1bmN0aW9uIChmb3JtYXR0ZXIpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIChmb3JtYXR0ZXIgfHwgdGhpcy5mb3JtYXR0ZXIpLnN0cmluZ2lmeSh0aGlzKTtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBGb3JtYXQgbmFtZXNwYWNlLlxuXHQgICAgICovXG5cdCAgICB2YXIgQ19mb3JtYXQgPSBDLmZvcm1hdCA9IHt9O1xuXG5cdCAgICAvKipcblx0ICAgICAqIE9wZW5TU0wgZm9ybWF0dGluZyBzdHJhdGVneS5cblx0ICAgICAqL1xuXHQgICAgdmFyIE9wZW5TU0xGb3JtYXR0ZXIgPSBDX2Zvcm1hdC5PcGVuU1NMID0ge1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIGEgY2lwaGVyIHBhcmFtcyBvYmplY3QgdG8gYW4gT3BlblNTTC1jb21wYXRpYmxlIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7Q2lwaGVyUGFyYW1zfSBjaXBoZXJQYXJhbXMgVGhlIGNpcGhlciBwYXJhbXMgb2JqZWN0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgT3BlblNTTC1jb21wYXRpYmxlIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIG9wZW5TU0xTdHJpbmcgPSBDcnlwdG9KUy5mb3JtYXQuT3BlblNTTC5zdHJpbmdpZnkoY2lwaGVyUGFyYW1zKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBzdHJpbmdpZnk6IGZ1bmN0aW9uIChjaXBoZXJQYXJhbXMpIHtcblx0ICAgICAgICAgICAgdmFyIHdvcmRBcnJheTtcblxuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGNpcGhlcnRleHQgPSBjaXBoZXJQYXJhbXMuY2lwaGVydGV4dDtcblx0ICAgICAgICAgICAgdmFyIHNhbHQgPSBjaXBoZXJQYXJhbXMuc2FsdDtcblxuXHQgICAgICAgICAgICAvLyBGb3JtYXRcblx0ICAgICAgICAgICAgaWYgKHNhbHQpIHtcblx0ICAgICAgICAgICAgICAgIHdvcmRBcnJheSA9IFdvcmRBcnJheS5jcmVhdGUoWzB4NTM2MTZjNzQsIDB4NjU2NDVmNWZdKS5jb25jYXQoc2FsdCkuY29uY2F0KGNpcGhlcnRleHQpO1xuXHQgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgd29yZEFycmF5ID0gY2lwaGVydGV4dDtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiB3b3JkQXJyYXkudG9TdHJpbmcoQmFzZTY0KTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgYW4gT3BlblNTTC1jb21wYXRpYmxlIHN0cmluZyB0byBhIGNpcGhlciBwYXJhbXMgb2JqZWN0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG9wZW5TU0xTdHIgVGhlIE9wZW5TU0wtY29tcGF0aWJsZSBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtDaXBoZXJQYXJhbXN9IFRoZSBjaXBoZXIgcGFyYW1zIG9iamVjdC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGNpcGhlclBhcmFtcyA9IENyeXB0b0pTLmZvcm1hdC5PcGVuU1NMLnBhcnNlKG9wZW5TU0xTdHJpbmcpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHBhcnNlOiBmdW5jdGlvbiAob3BlblNTTFN0cikge1xuXHQgICAgICAgICAgICB2YXIgc2FsdDtcblxuXHQgICAgICAgICAgICAvLyBQYXJzZSBiYXNlNjRcblx0ICAgICAgICAgICAgdmFyIGNpcGhlcnRleHQgPSBCYXNlNjQucGFyc2Uob3BlblNTTFN0cik7XG5cblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIGNpcGhlcnRleHRXb3JkcyA9IGNpcGhlcnRleHQud29yZHM7XG5cblx0ICAgICAgICAgICAgLy8gVGVzdCBmb3Igc2FsdFxuXHQgICAgICAgICAgICBpZiAoY2lwaGVydGV4dFdvcmRzWzBdID09IDB4NTM2MTZjNzQgJiYgY2lwaGVydGV4dFdvcmRzWzFdID09IDB4NjU2NDVmNWYpIHtcblx0ICAgICAgICAgICAgICAgIC8vIEV4dHJhY3Qgc2FsdFxuXHQgICAgICAgICAgICAgICAgc2FsdCA9IFdvcmRBcnJheS5jcmVhdGUoY2lwaGVydGV4dFdvcmRzLnNsaWNlKDIsIDQpKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHNhbHQgZnJvbSBjaXBoZXJ0ZXh0XG5cdCAgICAgICAgICAgICAgICBjaXBoZXJ0ZXh0V29yZHMuc3BsaWNlKDAsIDQpO1xuXHQgICAgICAgICAgICAgICAgY2lwaGVydGV4dC5zaWdCeXRlcyAtPSAxNjtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiBDaXBoZXJQYXJhbXMuY3JlYXRlKHsgY2lwaGVydGV4dDogY2lwaGVydGV4dCwgc2FsdDogc2FsdCB9KTtcblx0ICAgICAgICB9XG5cdCAgICB9O1xuXG5cdCAgICAvKipcblx0ICAgICAqIEEgY2lwaGVyIHdyYXBwZXIgdGhhdCByZXR1cm5zIGNpcGhlcnRleHQgYXMgYSBzZXJpYWxpemFibGUgY2lwaGVyIHBhcmFtcyBvYmplY3QuXG5cdCAgICAgKi9cblx0ICAgIHZhciBTZXJpYWxpemFibGVDaXBoZXIgPSBDX2xpYi5TZXJpYWxpemFibGVDaXBoZXIgPSBCYXNlLmV4dGVuZCh7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29uZmlndXJhdGlvbiBvcHRpb25zLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHByb3BlcnR5IHtGb3JtYXR0ZXJ9IGZvcm1hdCBUaGUgZm9ybWF0dGluZyBzdHJhdGVneSB0byBjb252ZXJ0IGNpcGhlciBwYXJhbSBvYmplY3RzIHRvIGFuZCBmcm9tIGEgc3RyaW5nLiBEZWZhdWx0OiBPcGVuU1NMXG5cdCAgICAgICAgICovXG5cdCAgICAgICAgY2ZnOiBCYXNlLmV4dGVuZCh7XG5cdCAgICAgICAgICAgIGZvcm1hdDogT3BlblNTTEZvcm1hdHRlclxuXHQgICAgICAgIH0pLFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogRW5jcnlwdHMgYSBtZXNzYWdlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtDaXBoZXJ9IGNpcGhlciBUaGUgY2lwaGVyIGFsZ29yaXRobSB0byB1c2UuXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGVuY3J5cHQuXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl9IGtleSBUaGUga2V5LlxuXHQgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcgKE9wdGlvbmFsKSBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHVzZSBmb3IgdGhpcyBvcGVyYXRpb24uXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtDaXBoZXJQYXJhbXN9IEEgY2lwaGVyIHBhcmFtcyBvYmplY3QuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBjaXBoZXJ0ZXh0UGFyYW1zID0gQ3J5cHRvSlMubGliLlNlcmlhbGl6YWJsZUNpcGhlci5lbmNyeXB0KENyeXB0b0pTLmFsZ28uQUVTLCBtZXNzYWdlLCBrZXkpO1xuXHQgICAgICAgICAqICAgICB2YXIgY2lwaGVydGV4dFBhcmFtcyA9IENyeXB0b0pTLmxpYi5TZXJpYWxpemFibGVDaXBoZXIuZW5jcnlwdChDcnlwdG9KUy5hbGdvLkFFUywgbWVzc2FnZSwga2V5LCB7IGl2OiBpdiB9KTtcblx0ICAgICAgICAgKiAgICAgdmFyIGNpcGhlcnRleHRQYXJhbXMgPSBDcnlwdG9KUy5saWIuU2VyaWFsaXphYmxlQ2lwaGVyLmVuY3J5cHQoQ3J5cHRvSlMuYWxnby5BRVMsIG1lc3NhZ2UsIGtleSwgeyBpdjogaXYsIGZvcm1hdDogQ3J5cHRvSlMuZm9ybWF0Lk9wZW5TU0wgfSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgZW5jcnlwdDogZnVuY3Rpb24gKGNpcGhlciwgbWVzc2FnZSwga2V5LCBjZmcpIHtcblx0ICAgICAgICAgICAgLy8gQXBwbHkgY29uZmlnIGRlZmF1bHRzXG5cdCAgICAgICAgICAgIGNmZyA9IHRoaXMuY2ZnLmV4dGVuZChjZmcpO1xuXG5cdCAgICAgICAgICAgIC8vIEVuY3J5cHRcblx0ICAgICAgICAgICAgdmFyIGVuY3J5cHRvciA9IGNpcGhlci5jcmVhdGVFbmNyeXB0b3Ioa2V5LCBjZmcpO1xuXHQgICAgICAgICAgICB2YXIgY2lwaGVydGV4dCA9IGVuY3J5cHRvci5maW5hbGl6ZShtZXNzYWdlKTtcblxuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICB2YXIgY2lwaGVyQ2ZnID0gZW5jcnlwdG9yLmNmZztcblxuXHQgICAgICAgICAgICAvLyBDcmVhdGUgYW5kIHJldHVybiBzZXJpYWxpemFibGUgY2lwaGVyIHBhcmFtc1xuXHQgICAgICAgICAgICByZXR1cm4gQ2lwaGVyUGFyYW1zLmNyZWF0ZSh7XG5cdCAgICAgICAgICAgICAgICBjaXBoZXJ0ZXh0OiBjaXBoZXJ0ZXh0LFxuXHQgICAgICAgICAgICAgICAga2V5OiBrZXksXG5cdCAgICAgICAgICAgICAgICBpdjogY2lwaGVyQ2ZnLml2LFxuXHQgICAgICAgICAgICAgICAgYWxnb3JpdGhtOiBjaXBoZXIsXG5cdCAgICAgICAgICAgICAgICBtb2RlOiBjaXBoZXJDZmcubW9kZSxcblx0ICAgICAgICAgICAgICAgIHBhZGRpbmc6IGNpcGhlckNmZy5wYWRkaW5nLFxuXHQgICAgICAgICAgICAgICAgYmxvY2tTaXplOiBjaXBoZXIuYmxvY2tTaXplLFxuXHQgICAgICAgICAgICAgICAgZm9ybWF0dGVyOiBjZmcuZm9ybWF0XG5cdCAgICAgICAgICAgIH0pO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBEZWNyeXB0cyBzZXJpYWxpemVkIGNpcGhlcnRleHQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge0NpcGhlcn0gY2lwaGVyIFRoZSBjaXBoZXIgYWxnb3JpdGhtIHRvIHVzZS5cblx0ICAgICAgICAgKiBAcGFyYW0ge0NpcGhlclBhcmFtc3xzdHJpbmd9IGNpcGhlcnRleHQgVGhlIGNpcGhlcnRleHQgdG8gZGVjcnlwdC5cblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheX0ga2V5IFRoZSBrZXkuXG5cdCAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGNmZyAoT3B0aW9uYWwpIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdXNlIGZvciB0aGlzIG9wZXJhdGlvbi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIHBsYWludGV4dC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHBsYWludGV4dCA9IENyeXB0b0pTLmxpYi5TZXJpYWxpemFibGVDaXBoZXIuZGVjcnlwdChDcnlwdG9KUy5hbGdvLkFFUywgZm9ybWF0dGVkQ2lwaGVydGV4dCwga2V5LCB7IGl2OiBpdiwgZm9ybWF0OiBDcnlwdG9KUy5mb3JtYXQuT3BlblNTTCB9KTtcblx0ICAgICAgICAgKiAgICAgdmFyIHBsYWludGV4dCA9IENyeXB0b0pTLmxpYi5TZXJpYWxpemFibGVDaXBoZXIuZGVjcnlwdChDcnlwdG9KUy5hbGdvLkFFUywgY2lwaGVydGV4dFBhcmFtcywga2V5LCB7IGl2OiBpdiwgZm9ybWF0OiBDcnlwdG9KUy5mb3JtYXQuT3BlblNTTCB9KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBkZWNyeXB0OiBmdW5jdGlvbiAoY2lwaGVyLCBjaXBoZXJ0ZXh0LCBrZXksIGNmZykge1xuXHQgICAgICAgICAgICAvLyBBcHBseSBjb25maWcgZGVmYXVsdHNcblx0ICAgICAgICAgICAgY2ZnID0gdGhpcy5jZmcuZXh0ZW5kKGNmZyk7XG5cblx0ICAgICAgICAgICAgLy8gQ29udmVydCBzdHJpbmcgdG8gQ2lwaGVyUGFyYW1zXG5cdCAgICAgICAgICAgIGNpcGhlcnRleHQgPSB0aGlzLl9wYXJzZShjaXBoZXJ0ZXh0LCBjZmcuZm9ybWF0KTtcblxuXHQgICAgICAgICAgICAvLyBEZWNyeXB0XG5cdCAgICAgICAgICAgIHZhciBwbGFpbnRleHQgPSBjaXBoZXIuY3JlYXRlRGVjcnlwdG9yKGtleSwgY2ZnKS5maW5hbGl6ZShjaXBoZXJ0ZXh0LmNpcGhlcnRleHQpO1xuXG5cdCAgICAgICAgICAgIHJldHVybiBwbGFpbnRleHQ7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIHNlcmlhbGl6ZWQgY2lwaGVydGV4dCB0byBDaXBoZXJQYXJhbXMsXG5cdCAgICAgICAgICogZWxzZSBhc3N1bWVkIENpcGhlclBhcmFtcyBhbHJlYWR5IGFuZCByZXR1cm5zIGNpcGhlcnRleHQgdW5jaGFuZ2VkLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtDaXBoZXJQYXJhbXN8c3RyaW5nfSBjaXBoZXJ0ZXh0IFRoZSBjaXBoZXJ0ZXh0LlxuXHQgICAgICAgICAqIEBwYXJhbSB7Rm9ybWF0dGVyfSBmb3JtYXQgVGhlIGZvcm1hdHRpbmcgc3RyYXRlZ3kgdG8gdXNlIHRvIHBhcnNlIHNlcmlhbGl6ZWQgY2lwaGVydGV4dC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge0NpcGhlclBhcmFtc30gVGhlIHVuc2VyaWFsaXplZCBjaXBoZXJ0ZXh0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgY2lwaGVydGV4dFBhcmFtcyA9IENyeXB0b0pTLmxpYi5TZXJpYWxpemFibGVDaXBoZXIuX3BhcnNlKGNpcGhlcnRleHRTdHJpbmdPclBhcmFtcywgZm9ybWF0KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBfcGFyc2U6IGZ1bmN0aW9uIChjaXBoZXJ0ZXh0LCBmb3JtYXQpIHtcblx0ICAgICAgICAgICAgaWYgKHR5cGVvZiBjaXBoZXJ0ZXh0ID09ICdzdHJpbmcnKSB7XG5cdCAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0LnBhcnNlKGNpcGhlcnRleHQsIHRoaXMpO1xuXHQgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgcmV0dXJuIGNpcGhlcnRleHQ7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBLZXkgZGVyaXZhdGlvbiBmdW5jdGlvbiBuYW1lc3BhY2UuXG5cdCAgICAgKi9cblx0ICAgIHZhciBDX2tkZiA9IEMua2RmID0ge307XG5cblx0ICAgIC8qKlxuXHQgICAgICogT3BlblNTTCBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbi5cblx0ICAgICAqL1xuXHQgICAgdmFyIE9wZW5TU0xLZGYgPSBDX2tkZi5PcGVuU1NMID0ge1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIERlcml2ZXMgYSBrZXkgYW5kIElWIGZyb20gYSBwYXNzd29yZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXNzd29yZCBUaGUgcGFzc3dvcmQgdG8gZGVyaXZlIGZyb20uXG5cdCAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGtleVNpemUgVGhlIHNpemUgaW4gd29yZHMgb2YgdGhlIGtleSB0byBnZW5lcmF0ZS5cblx0ICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gaXZTaXplIFRoZSBzaXplIGluIHdvcmRzIG9mIHRoZSBJViB0byBnZW5lcmF0ZS5cblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IHNhbHQgKE9wdGlvbmFsKSBBIDY0LWJpdCBzYWx0IHRvIHVzZS4gSWYgb21pdHRlZCwgYSBzYWx0IHdpbGwgYmUgZ2VuZXJhdGVkIHJhbmRvbWx5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7Q2lwaGVyUGFyYW1zfSBBIGNpcGhlciBwYXJhbXMgb2JqZWN0IHdpdGggdGhlIGtleSwgSVYsIGFuZCBzYWx0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgZGVyaXZlZFBhcmFtcyA9IENyeXB0b0pTLmtkZi5PcGVuU1NMLmV4ZWN1dGUoJ1Bhc3N3b3JkJywgMjU2LzMyLCAxMjgvMzIpO1xuXHQgICAgICAgICAqICAgICB2YXIgZGVyaXZlZFBhcmFtcyA9IENyeXB0b0pTLmtkZi5PcGVuU1NMLmV4ZWN1dGUoJ1Bhc3N3b3JkJywgMjU2LzMyLCAxMjgvMzIsICdzYWx0c2FsdCcpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGV4ZWN1dGU6IGZ1bmN0aW9uIChwYXNzd29yZCwga2V5U2l6ZSwgaXZTaXplLCBzYWx0KSB7XG5cdCAgICAgICAgICAgIC8vIEdlbmVyYXRlIHJhbmRvbSBzYWx0XG5cdCAgICAgICAgICAgIGlmICghc2FsdCkge1xuXHQgICAgICAgICAgICAgICAgc2FsdCA9IFdvcmRBcnJheS5yYW5kb20oNjQvOCk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBEZXJpdmUga2V5IGFuZCBJVlxuXHQgICAgICAgICAgICB2YXIga2V5ID0gRXZwS0RGLmNyZWF0ZSh7IGtleVNpemU6IGtleVNpemUgKyBpdlNpemUgfSkuY29tcHV0ZShwYXNzd29yZCwgc2FsdCk7XG5cblx0ICAgICAgICAgICAgLy8gU2VwYXJhdGUga2V5IGFuZCBJVlxuXHQgICAgICAgICAgICB2YXIgaXYgPSBXb3JkQXJyYXkuY3JlYXRlKGtleS53b3Jkcy5zbGljZShrZXlTaXplKSwgaXZTaXplICogNCk7XG5cdCAgICAgICAgICAgIGtleS5zaWdCeXRlcyA9IGtleVNpemUgKiA0O1xuXG5cdCAgICAgICAgICAgIC8vIFJldHVybiBwYXJhbXNcblx0ICAgICAgICAgICAgcmV0dXJuIENpcGhlclBhcmFtcy5jcmVhdGUoeyBrZXk6IGtleSwgaXY6IGl2LCBzYWx0OiBzYWx0IH0pO1xuXHQgICAgICAgIH1cblx0ICAgIH07XG5cblx0ICAgIC8qKlxuXHQgICAgICogQSBzZXJpYWxpemFibGUgY2lwaGVyIHdyYXBwZXIgdGhhdCBkZXJpdmVzIHRoZSBrZXkgZnJvbSBhIHBhc3N3b3JkLFxuXHQgICAgICogYW5kIHJldHVybnMgY2lwaGVydGV4dCBhcyBhIHNlcmlhbGl6YWJsZSBjaXBoZXIgcGFyYW1zIG9iamVjdC5cblx0ICAgICAqL1xuXHQgICAgdmFyIFBhc3N3b3JkQmFzZWRDaXBoZXIgPSBDX2xpYi5QYXNzd29yZEJhc2VkQ2lwaGVyID0gU2VyaWFsaXphYmxlQ2lwaGVyLmV4dGVuZCh7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29uZmlndXJhdGlvbiBvcHRpb25zLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHByb3BlcnR5IHtLREZ9IGtkZiBUaGUga2V5IGRlcml2YXRpb24gZnVuY3Rpb24gdG8gdXNlIHRvIGdlbmVyYXRlIGEga2V5IGFuZCBJViBmcm9tIGEgcGFzc3dvcmQuIERlZmF1bHQ6IE9wZW5TU0xcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBjZmc6IFNlcmlhbGl6YWJsZUNpcGhlci5jZmcuZXh0ZW5kKHtcblx0ICAgICAgICAgICAga2RmOiBPcGVuU1NMS2RmXG5cdCAgICAgICAgfSksXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBFbmNyeXB0cyBhIG1lc3NhZ2UgdXNpbmcgYSBwYXNzd29yZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7Q2lwaGVyfSBjaXBoZXIgVGhlIGNpcGhlciBhbGdvcml0aG0gdG8gdXNlLlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBlbmNyeXB0LlxuXHQgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXNzd29yZCBUaGUgcGFzc3dvcmQuXG5cdCAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGNmZyAoT3B0aW9uYWwpIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdXNlIGZvciB0aGlzIG9wZXJhdGlvbi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge0NpcGhlclBhcmFtc30gQSBjaXBoZXIgcGFyYW1zIG9iamVjdC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGNpcGhlcnRleHRQYXJhbXMgPSBDcnlwdG9KUy5saWIuUGFzc3dvcmRCYXNlZENpcGhlci5lbmNyeXB0KENyeXB0b0pTLmFsZ28uQUVTLCBtZXNzYWdlLCAncGFzc3dvcmQnKTtcblx0ICAgICAgICAgKiAgICAgdmFyIGNpcGhlcnRleHRQYXJhbXMgPSBDcnlwdG9KUy5saWIuUGFzc3dvcmRCYXNlZENpcGhlci5lbmNyeXB0KENyeXB0b0pTLmFsZ28uQUVTLCBtZXNzYWdlLCAncGFzc3dvcmQnLCB7IGZvcm1hdDogQ3J5cHRvSlMuZm9ybWF0Lk9wZW5TU0wgfSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgZW5jcnlwdDogZnVuY3Rpb24gKGNpcGhlciwgbWVzc2FnZSwgcGFzc3dvcmQsIGNmZykge1xuXHQgICAgICAgICAgICAvLyBBcHBseSBjb25maWcgZGVmYXVsdHNcblx0ICAgICAgICAgICAgY2ZnID0gdGhpcy5jZmcuZXh0ZW5kKGNmZyk7XG5cblx0ICAgICAgICAgICAgLy8gRGVyaXZlIGtleSBhbmQgb3RoZXIgcGFyYW1zXG5cdCAgICAgICAgICAgIHZhciBkZXJpdmVkUGFyYW1zID0gY2ZnLmtkZi5leGVjdXRlKHBhc3N3b3JkLCBjaXBoZXIua2V5U2l6ZSwgY2lwaGVyLml2U2l6ZSk7XG5cblx0ICAgICAgICAgICAgLy8gQWRkIElWIHRvIGNvbmZpZ1xuXHQgICAgICAgICAgICBjZmcuaXYgPSBkZXJpdmVkUGFyYW1zLml2O1xuXG5cdCAgICAgICAgICAgIC8vIEVuY3J5cHRcblx0ICAgICAgICAgICAgdmFyIGNpcGhlcnRleHQgPSBTZXJpYWxpemFibGVDaXBoZXIuZW5jcnlwdC5jYWxsKHRoaXMsIGNpcGhlciwgbWVzc2FnZSwgZGVyaXZlZFBhcmFtcy5rZXksIGNmZyk7XG5cblx0ICAgICAgICAgICAgLy8gTWl4IGluIGRlcml2ZWQgcGFyYW1zXG5cdCAgICAgICAgICAgIGNpcGhlcnRleHQubWl4SW4oZGVyaXZlZFBhcmFtcyk7XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGNpcGhlcnRleHQ7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIERlY3J5cHRzIHNlcmlhbGl6ZWQgY2lwaGVydGV4dCB1c2luZyBhIHBhc3N3b3JkLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtDaXBoZXJ9IGNpcGhlciBUaGUgY2lwaGVyIGFsZ29yaXRobSB0byB1c2UuXG5cdCAgICAgICAgICogQHBhcmFtIHtDaXBoZXJQYXJhbXN8c3RyaW5nfSBjaXBoZXJ0ZXh0IFRoZSBjaXBoZXJ0ZXh0IHRvIGRlY3J5cHQuXG5cdCAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHBhc3N3b3JkIFRoZSBwYXNzd29yZC5cblx0ICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIChPcHRpb25hbCkgVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB1c2UgZm9yIHRoaXMgb3BlcmF0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgcGxhaW50ZXh0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgcGxhaW50ZXh0ID0gQ3J5cHRvSlMubGliLlBhc3N3b3JkQmFzZWRDaXBoZXIuZGVjcnlwdChDcnlwdG9KUy5hbGdvLkFFUywgZm9ybWF0dGVkQ2lwaGVydGV4dCwgJ3Bhc3N3b3JkJywgeyBmb3JtYXQ6IENyeXB0b0pTLmZvcm1hdC5PcGVuU1NMIH0pO1xuXHQgICAgICAgICAqICAgICB2YXIgcGxhaW50ZXh0ID0gQ3J5cHRvSlMubGliLlBhc3N3b3JkQmFzZWRDaXBoZXIuZGVjcnlwdChDcnlwdG9KUy5hbGdvLkFFUywgY2lwaGVydGV4dFBhcmFtcywgJ3Bhc3N3b3JkJywgeyBmb3JtYXQ6IENyeXB0b0pTLmZvcm1hdC5PcGVuU1NMIH0pO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGRlY3J5cHQ6IGZ1bmN0aW9uIChjaXBoZXIsIGNpcGhlcnRleHQsIHBhc3N3b3JkLCBjZmcpIHtcblx0ICAgICAgICAgICAgLy8gQXBwbHkgY29uZmlnIGRlZmF1bHRzXG5cdCAgICAgICAgICAgIGNmZyA9IHRoaXMuY2ZnLmV4dGVuZChjZmcpO1xuXG5cdCAgICAgICAgICAgIC8vIENvbnZlcnQgc3RyaW5nIHRvIENpcGhlclBhcmFtc1xuXHQgICAgICAgICAgICBjaXBoZXJ0ZXh0ID0gdGhpcy5fcGFyc2UoY2lwaGVydGV4dCwgY2ZnLmZvcm1hdCk7XG5cblx0ICAgICAgICAgICAgLy8gRGVyaXZlIGtleSBhbmQgb3RoZXIgcGFyYW1zXG5cdCAgICAgICAgICAgIHZhciBkZXJpdmVkUGFyYW1zID0gY2ZnLmtkZi5leGVjdXRlKHBhc3N3b3JkLCBjaXBoZXIua2V5U2l6ZSwgY2lwaGVyLml2U2l6ZSwgY2lwaGVydGV4dC5zYWx0KTtcblxuXHQgICAgICAgICAgICAvLyBBZGQgSVYgdG8gY29uZmlnXG5cdCAgICAgICAgICAgIGNmZy5pdiA9IGRlcml2ZWRQYXJhbXMuaXY7XG5cblx0ICAgICAgICAgICAgLy8gRGVjcnlwdFxuXHQgICAgICAgICAgICB2YXIgcGxhaW50ZXh0ID0gU2VyaWFsaXphYmxlQ2lwaGVyLmRlY3J5cHQuY2FsbCh0aGlzLCBjaXBoZXIsIGNpcGhlcnRleHQsIGRlcml2ZWRQYXJhbXMua2V5LCBjZmcpO1xuXG5cdCAgICAgICAgICAgIHJldHVybiBwbGFpbnRleHQ7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cdH0oKSk7XG5cblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRyb290LkNyeXB0b0pTID0gZmFjdG9yeSgpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uICgpIHtcblxuXHQvKmdsb2JhbHMgd2luZG93LCBnbG9iYWwsIHJlcXVpcmUqL1xuXG5cdC8qKlxuXHQgKiBDcnlwdG9KUyBjb3JlIGNvbXBvbmVudHMuXG5cdCAqL1xuXHR2YXIgQ3J5cHRvSlMgPSBDcnlwdG9KUyB8fCAoZnVuY3Rpb24gKE1hdGgsIHVuZGVmaW5lZCkge1xuXG5cdCAgICB2YXIgY3J5cHRvO1xuXG5cdCAgICAvLyBOYXRpdmUgY3J5cHRvIGZyb20gd2luZG93IChCcm93c2VyKVxuXHQgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5jcnlwdG8pIHtcblx0ICAgICAgICBjcnlwdG8gPSB3aW5kb3cuY3J5cHRvO1xuXHQgICAgfVxuXG5cdCAgICAvLyBOYXRpdmUgY3J5cHRvIGluIHdlYiB3b3JrZXIgKEJyb3dzZXIpXG5cdCAgICBpZiAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnICYmIHNlbGYuY3J5cHRvKSB7XG5cdCAgICAgICAgY3J5cHRvID0gc2VsZi5jcnlwdG87XG5cdCAgICB9XG5cblx0ICAgIC8vIE5hdGl2ZSBjcnlwdG8gZnJvbSB3b3JrZXJcblx0ICAgIGlmICh0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2xvYmFsVGhpcy5jcnlwdG8pIHtcblx0ICAgICAgICBjcnlwdG8gPSBnbG9iYWxUaGlzLmNyeXB0bztcblx0ICAgIH1cblxuXHQgICAgLy8gTmF0aXZlIChleHBlcmltZW50YWwgSUUgMTEpIGNyeXB0byBmcm9tIHdpbmRvdyAoQnJvd3Nlcilcblx0ICAgIGlmICghY3J5cHRvICYmIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5tc0NyeXB0bykge1xuXHQgICAgICAgIGNyeXB0byA9IHdpbmRvdy5tc0NyeXB0bztcblx0ICAgIH1cblxuXHQgICAgLy8gTmF0aXZlIGNyeXB0byBmcm9tIGdsb2JhbCAoTm9kZUpTKVxuXHQgICAgaWYgKCFjcnlwdG8gJiYgdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2xvYmFsLmNyeXB0bykge1xuXHQgICAgICAgIGNyeXB0byA9IGdsb2JhbC5jcnlwdG87XG5cdCAgICB9XG5cblx0ICAgIC8vIE5hdGl2ZSBjcnlwdG8gaW1wb3J0IHZpYSByZXF1aXJlIChOb2RlSlMpXG5cdCAgICBpZiAoIWNyeXB0byAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICAgIHRyeSB7XG5cdCAgICAgICAgICAgIGNyeXB0byA9IHJlcXVpcmUoJ2NyeXB0bycpO1xuXHQgICAgICAgIH0gY2F0Y2ggKGVycikge31cblx0ICAgIH1cblxuXHQgICAgLypcblx0ICAgICAqIENyeXB0b2dyYXBoaWNhbGx5IHNlY3VyZSBwc2V1ZG9yYW5kb20gbnVtYmVyIGdlbmVyYXRvclxuXHQgICAgICpcblx0ICAgICAqIEFzIE1hdGgucmFuZG9tKCkgaXMgY3J5cHRvZ3JhcGhpY2FsbHkgbm90IHNhZmUgdG8gdXNlXG5cdCAgICAgKi9cblx0ICAgIHZhciBjcnlwdG9TZWN1cmVSYW5kb21JbnQgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgaWYgKGNyeXB0bykge1xuXHQgICAgICAgICAgICAvLyBVc2UgZ2V0UmFuZG9tVmFsdWVzIG1ldGhvZCAoQnJvd3Nlcilcblx0ICAgICAgICAgICAgaWYgKHR5cGVvZiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgICAgICAgICAgICB0cnkge1xuXHQgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheSgxKSlbMF07XG5cdCAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHt9XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBVc2UgcmFuZG9tQnl0ZXMgbWV0aG9kIChOb2RlSlMpXG5cdCAgICAgICAgICAgIGlmICh0eXBlb2YgY3J5cHRvLnJhbmRvbUJ5dGVzID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgICAgICAgICAgICB0cnkge1xuXHQgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcnlwdG8ucmFuZG9tQnl0ZXMoNCkucmVhZEludDMyTEUoKTtcblx0ICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge31cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IG5ldyBFcnJvcignTmF0aXZlIGNyeXB0byBtb2R1bGUgY291bGQgbm90IGJlIHVzZWQgdG8gZ2V0IHNlY3VyZSByYW5kb20gbnVtYmVyLicpO1xuXHQgICAgfTtcblxuXHQgICAgLypcblx0ICAgICAqIExvY2FsIHBvbHlmaWxsIG9mIE9iamVjdC5jcmVhdGVcblxuXHQgICAgICovXG5cdCAgICB2YXIgY3JlYXRlID0gT2JqZWN0LmNyZWF0ZSB8fCAoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIGZ1bmN0aW9uIEYoKSB7fVxuXG5cdCAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChvYmopIHtcblx0ICAgICAgICAgICAgdmFyIHN1YnR5cGU7XG5cblx0ICAgICAgICAgICAgRi5wcm90b3R5cGUgPSBvYmo7XG5cblx0ICAgICAgICAgICAgc3VidHlwZSA9IG5ldyBGKCk7XG5cblx0ICAgICAgICAgICAgRi5wcm90b3R5cGUgPSBudWxsO1xuXG5cdCAgICAgICAgICAgIHJldHVybiBzdWJ0eXBlO1xuXHQgICAgICAgIH07XG5cdCAgICB9KCkpO1xuXG5cdCAgICAvKipcblx0ICAgICAqIENyeXB0b0pTIG5hbWVzcGFjZS5cblx0ICAgICAqL1xuXHQgICAgdmFyIEMgPSB7fTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBMaWJyYXJ5IG5hbWVzcGFjZS5cblx0ICAgICAqL1xuXHQgICAgdmFyIENfbGliID0gQy5saWIgPSB7fTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBCYXNlIG9iamVjdCBmb3IgcHJvdG90eXBhbCBpbmhlcml0YW5jZS5cblx0ICAgICAqL1xuXHQgICAgdmFyIEJhc2UgPSBDX2xpYi5CYXNlID0gKGZ1bmN0aW9uICgpIHtcblxuXG5cdCAgICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAgICAgLyoqXG5cdCAgICAgICAgICAgICAqIENyZWF0ZXMgYSBuZXcgb2JqZWN0IHRoYXQgaW5oZXJpdHMgZnJvbSB0aGlzIG9iamVjdC5cblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG92ZXJyaWRlcyBQcm9wZXJ0aWVzIHRvIGNvcHkgaW50byB0aGUgbmV3IG9iamVjdC5cblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogQHJldHVybiB7T2JqZWN0fSBUaGUgbmV3IG9iamVjdC5cblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiAgICAgdmFyIE15VHlwZSA9IENyeXB0b0pTLmxpYi5CYXNlLmV4dGVuZCh7XG5cdCAgICAgICAgICAgICAqICAgICAgICAgZmllbGQ6ICd2YWx1ZScsXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqICAgICAgICAgbWV0aG9kOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgICAqICAgICAgICAgfVxuXHQgICAgICAgICAgICAgKiAgICAgfSk7XG5cdCAgICAgICAgICAgICAqL1xuXHQgICAgICAgICAgICBleHRlbmQ6IGZ1bmN0aW9uIChvdmVycmlkZXMpIHtcblx0ICAgICAgICAgICAgICAgIC8vIFNwYXduXG5cdCAgICAgICAgICAgICAgICB2YXIgc3VidHlwZSA9IGNyZWF0ZSh0aGlzKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gQXVnbWVudFxuXHQgICAgICAgICAgICAgICAgaWYgKG92ZXJyaWRlcykge1xuXHQgICAgICAgICAgICAgICAgICAgIHN1YnR5cGUubWl4SW4ob3ZlcnJpZGVzKTtcblx0ICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGRlZmF1bHQgaW5pdGlhbGl6ZXJcblx0ICAgICAgICAgICAgICAgIGlmICghc3VidHlwZS5oYXNPd25Qcm9wZXJ0eSgnaW5pdCcpIHx8IHRoaXMuaW5pdCA9PT0gc3VidHlwZS5pbml0KSB7XG5cdCAgICAgICAgICAgICAgICAgICAgc3VidHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0eXBlLiRzdXBlci5pbml0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdCAgICAgICAgICAgICAgICAgICAgfTtcblx0ICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZXIncyBwcm90b3R5cGUgaXMgdGhlIHN1YnR5cGUgb2JqZWN0XG5cdCAgICAgICAgICAgICAgICBzdWJ0eXBlLmluaXQucHJvdG90eXBlID0gc3VidHlwZTtcblxuXHQgICAgICAgICAgICAgICAgLy8gUmVmZXJlbmNlIHN1cGVydHlwZVxuXHQgICAgICAgICAgICAgICAgc3VidHlwZS4kc3VwZXIgPSB0aGlzO1xuXG5cdCAgICAgICAgICAgICAgICByZXR1cm4gc3VidHlwZTtcblx0ICAgICAgICAgICAgfSxcblxuXHQgICAgICAgICAgICAvKipcblx0ICAgICAgICAgICAgICogRXh0ZW5kcyB0aGlzIG9iamVjdCBhbmQgcnVucyB0aGUgaW5pdCBtZXRob2QuXG5cdCAgICAgICAgICAgICAqIEFyZ3VtZW50cyB0byBjcmVhdGUoKSB3aWxsIGJlIHBhc3NlZCB0byBpbml0KCkuXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqIEByZXR1cm4ge09iamVjdH0gVGhlIG5ldyBvYmplY3QuXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogICAgIHZhciBpbnN0YW5jZSA9IE15VHlwZS5jcmVhdGUoKTtcblx0ICAgICAgICAgICAgICovXG5cdCAgICAgICAgICAgIGNyZWF0ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAgICAgdmFyIGluc3RhbmNlID0gdGhpcy5leHRlbmQoKTtcblx0ICAgICAgICAgICAgICAgIGluc3RhbmNlLmluaXQuYXBwbHkoaW5zdGFuY2UsIGFyZ3VtZW50cyk7XG5cblx0ICAgICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTtcblx0ICAgICAgICAgICAgfSxcblxuXHQgICAgICAgICAgICAvKipcblx0ICAgICAgICAgICAgICogSW5pdGlhbGl6ZXMgYSBuZXdseSBjcmVhdGVkIG9iamVjdC5cblx0ICAgICAgICAgICAgICogT3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gYWRkIHNvbWUgbG9naWMgd2hlbiB5b3VyIG9iamVjdHMgYXJlIGNyZWF0ZWQuXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqICAgICB2YXIgTXlUeXBlID0gQ3J5cHRvSlMubGliLkJhc2UuZXh0ZW5kKHtcblx0ICAgICAgICAgICAgICogICAgICAgICBpbml0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgICAqICAgICAgICAgICAgIC8vIC4uLlxuXHQgICAgICAgICAgICAgKiAgICAgICAgIH1cblx0ICAgICAgICAgICAgICogICAgIH0pO1xuXHQgICAgICAgICAgICAgKi9cblx0ICAgICAgICAgICAgaW5pdDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB9LFxuXG5cdCAgICAgICAgICAgIC8qKlxuXHQgICAgICAgICAgICAgKiBDb3BpZXMgcHJvcGVydGllcyBpbnRvIHRoaXMgb2JqZWN0LlxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllcyBUaGUgcHJvcGVydGllcyB0byBtaXggaW4uXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqICAgICBNeVR5cGUubWl4SW4oe1xuXHQgICAgICAgICAgICAgKiAgICAgICAgIGZpZWxkOiAndmFsdWUnXG5cdCAgICAgICAgICAgICAqICAgICB9KTtcblx0ICAgICAgICAgICAgICovXG5cdCAgICAgICAgICAgIG1peEluOiBmdW5jdGlvbiAocHJvcGVydGllcykge1xuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcGVydHlOYW1lIGluIHByb3BlcnRpZXMpIHtcblx0ICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eU5hbWUpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNbcHJvcGVydHlOYW1lXSA9IHByb3BlcnRpZXNbcHJvcGVydHlOYW1lXTtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgIC8vIElFIHdvbid0IGNvcHkgdG9TdHJpbmcgdXNpbmcgdGhlIGxvb3AgYWJvdmVcblx0ICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KCd0b1N0cmluZycpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy50b1N0cmluZyA9IHByb3BlcnRpZXMudG9TdHJpbmc7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH0sXG5cblx0ICAgICAgICAgICAgLyoqXG5cdCAgICAgICAgICAgICAqIENyZWF0ZXMgYSBjb3B5IG9mIHRoaXMgb2JqZWN0LlxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiBAcmV0dXJuIHtPYmplY3R9IFRoZSBjbG9uZS5cblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogICAgIHZhciBjbG9uZSA9IGluc3RhbmNlLmNsb25lKCk7XG5cdCAgICAgICAgICAgICAqL1xuXHQgICAgICAgICAgICBjbG9uZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdC5wcm90b3R5cGUuZXh0ZW5kKHRoaXMpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfTtcblx0ICAgIH0oKSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogQW4gYXJyYXkgb2YgMzItYml0IHdvcmRzLlxuXHQgICAgICpcblx0ICAgICAqIEBwcm9wZXJ0eSB7QXJyYXl9IHdvcmRzIFRoZSBhcnJheSBvZiAzMi1iaXQgd29yZHMuXG5cdCAgICAgKiBAcHJvcGVydHkge251bWJlcn0gc2lnQnl0ZXMgVGhlIG51bWJlciBvZiBzaWduaWZpY2FudCBieXRlcyBpbiB0aGlzIHdvcmQgYXJyYXkuXG5cdCAgICAgKi9cblx0ICAgIHZhciBXb3JkQXJyYXkgPSBDX2xpYi5Xb3JkQXJyYXkgPSBCYXNlLmV4dGVuZCh7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogSW5pdGlhbGl6ZXMgYSBuZXdseSBjcmVhdGVkIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSB3b3JkcyAoT3B0aW9uYWwpIEFuIGFycmF5IG9mIDMyLWJpdCB3b3Jkcy5cblx0ICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gc2lnQnl0ZXMgKE9wdGlvbmFsKSBUaGUgbnVtYmVyIG9mIHNpZ25pZmljYW50IGJ5dGVzIGluIHRoZSB3b3Jkcy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHdvcmRBcnJheSA9IENyeXB0b0pTLmxpYi5Xb3JkQXJyYXkuY3JlYXRlKCk7XG5cdCAgICAgICAgICogICAgIHZhciB3b3JkQXJyYXkgPSBDcnlwdG9KUy5saWIuV29yZEFycmF5LmNyZWF0ZShbMHgwMDAxMDIwMywgMHgwNDA1MDYwN10pO1xuXHQgICAgICAgICAqICAgICB2YXIgd29yZEFycmF5ID0gQ3J5cHRvSlMubGliLldvcmRBcnJheS5jcmVhdGUoWzB4MDAwMTAyMDMsIDB4MDQwNTA2MDddLCA2KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBpbml0OiBmdW5jdGlvbiAod29yZHMsIHNpZ0J5dGVzKSB7XG5cdCAgICAgICAgICAgIHdvcmRzID0gdGhpcy53b3JkcyA9IHdvcmRzIHx8IFtdO1xuXG5cdCAgICAgICAgICAgIGlmIChzaWdCeXRlcyAhPSB1bmRlZmluZWQpIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMuc2lnQnl0ZXMgPSBzaWdCeXRlcztcblx0ICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMuc2lnQnl0ZXMgPSB3b3Jkcy5sZW5ndGggKiA0O1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIHRoaXMgd29yZCBhcnJheSB0byBhIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7RW5jb2Rlcn0gZW5jb2RlciAoT3B0aW9uYWwpIFRoZSBlbmNvZGluZyBzdHJhdGVneSB0byB1c2UuIERlZmF1bHQ6IENyeXB0b0pTLmVuYy5IZXhcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIHN0cmluZ2lmaWVkIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBzdHJpbmcgPSB3b3JkQXJyYXkgKyAnJztcblx0ICAgICAgICAgKiAgICAgdmFyIHN0cmluZyA9IHdvcmRBcnJheS50b1N0cmluZygpO1xuXHQgICAgICAgICAqICAgICB2YXIgc3RyaW5nID0gd29yZEFycmF5LnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICB0b1N0cmluZzogZnVuY3Rpb24gKGVuY29kZXIpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIChlbmNvZGVyIHx8IEhleCkuc3RyaW5naWZ5KHRoaXMpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb25jYXRlbmF0ZXMgYSB3b3JkIGFycmF5IHRvIHRoaXMgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fSB3b3JkQXJyYXkgVGhlIHdvcmQgYXJyYXkgdG8gYXBwZW5kLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGlzIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHdvcmRBcnJheTEuY29uY2F0KHdvcmRBcnJheTIpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNvbmNhdDogZnVuY3Rpb24gKHdvcmRBcnJheSkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIHRoaXNXb3JkcyA9IHRoaXMud29yZHM7XG5cdCAgICAgICAgICAgIHZhciB0aGF0V29yZHMgPSB3b3JkQXJyYXkud29yZHM7XG5cdCAgICAgICAgICAgIHZhciB0aGlzU2lnQnl0ZXMgPSB0aGlzLnNpZ0J5dGVzO1xuXHQgICAgICAgICAgICB2YXIgdGhhdFNpZ0J5dGVzID0gd29yZEFycmF5LnNpZ0J5dGVzO1xuXG5cdCAgICAgICAgICAgIC8vIENsYW1wIGV4Y2VzcyBiaXRzXG5cdCAgICAgICAgICAgIHRoaXMuY2xhbXAoKTtcblxuXHQgICAgICAgICAgICAvLyBDb25jYXRcblx0ICAgICAgICAgICAgaWYgKHRoaXNTaWdCeXRlcyAlIDQpIHtcblx0ICAgICAgICAgICAgICAgIC8vIENvcHkgb25lIGJ5dGUgYXQgYSB0aW1lXG5cdCAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoYXRTaWdCeXRlczsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIHRoYXRCeXRlID0gKHRoYXRXb3Jkc1tpID4+PiAyXSA+Pj4gKDI0IC0gKGkgJSA0KSAqIDgpKSAmIDB4ZmY7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpc1dvcmRzWyh0aGlzU2lnQnl0ZXMgKyBpKSA+Pj4gMl0gfD0gdGhhdEJ5dGUgPDwgKDI0IC0gKCh0aGlzU2lnQnl0ZXMgKyBpKSAlIDQpICogOCk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAvLyBDb3B5IG9uZSB3b3JkIGF0IGEgdGltZVxuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0aGF0U2lnQnl0ZXM7IGogKz0gNCkge1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXNXb3Jkc1sodGhpc1NpZ0J5dGVzICsgaikgPj4+IDJdID0gdGhhdFdvcmRzW2ogPj4+IDJdO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIHRoaXMuc2lnQnl0ZXMgKz0gdGhhdFNpZ0J5dGVzO1xuXG5cdCAgICAgICAgICAgIC8vIENoYWluYWJsZVxuXHQgICAgICAgICAgICByZXR1cm4gdGhpcztcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogUmVtb3ZlcyBpbnNpZ25pZmljYW50IGJpdHMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHdvcmRBcnJheS5jbGFtcCgpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNsYW1wOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgd29yZHMgPSB0aGlzLndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgc2lnQnl0ZXMgPSB0aGlzLnNpZ0J5dGVzO1xuXG5cdCAgICAgICAgICAgIC8vIENsYW1wXG5cdCAgICAgICAgICAgIHdvcmRzW3NpZ0J5dGVzID4+PiAyXSAmPSAweGZmZmZmZmZmIDw8ICgzMiAtIChzaWdCeXRlcyAlIDQpICogOCk7XG5cdCAgICAgICAgICAgIHdvcmRzLmxlbmd0aCA9IE1hdGguY2VpbChzaWdCeXRlcyAvIDQpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDcmVhdGVzIGEgY29weSBvZiB0aGlzIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBjbG9uZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGNsb25lID0gd29yZEFycmF5LmNsb25lKCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgY2xvbmU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdmFyIGNsb25lID0gQmFzZS5jbG9uZS5jYWxsKHRoaXMpO1xuXHQgICAgICAgICAgICBjbG9uZS53b3JkcyA9IHRoaXMud29yZHMuc2xpY2UoMCk7XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGNsb25lO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDcmVhdGVzIGEgd29yZCBhcnJheSBmaWxsZWQgd2l0aCByYW5kb20gYnl0ZXMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gbkJ5dGVzIFRoZSBudW1iZXIgb2YgcmFuZG9tIGJ5dGVzIHRvIGdlbmVyYXRlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgcmFuZG9tIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciB3b3JkQXJyYXkgPSBDcnlwdG9KUy5saWIuV29yZEFycmF5LnJhbmRvbSgxNik7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgcmFuZG9tOiBmdW5jdGlvbiAobkJ5dGVzKSB7XG5cdCAgICAgICAgICAgIHZhciB3b3JkcyA9IFtdO1xuXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbkJ5dGVzOyBpICs9IDQpIHtcblx0ICAgICAgICAgICAgICAgIHdvcmRzLnB1c2goY3J5cHRvU2VjdXJlUmFuZG9tSW50KCkpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIG5ldyBXb3JkQXJyYXkuaW5pdCh3b3JkcywgbkJ5dGVzKTtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBFbmNvZGVyIG5hbWVzcGFjZS5cblx0ICAgICAqL1xuXHQgICAgdmFyIENfZW5jID0gQy5lbmMgPSB7fTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBIZXggZW5jb2Rpbmcgc3RyYXRlZ3kuXG5cdCAgICAgKi9cblx0ICAgIHZhciBIZXggPSBDX2VuYy5IZXggPSB7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgYSB3b3JkIGFycmF5IHRvIGEgaGV4IHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fSB3b3JkQXJyYXkgVGhlIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBoZXggc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgaGV4U3RyaW5nID0gQ3J5cHRvSlMuZW5jLkhleC5zdHJpbmdpZnkod29yZEFycmF5KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBzdHJpbmdpZnk6IGZ1bmN0aW9uICh3b3JkQXJyYXkpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciB3b3JkcyA9IHdvcmRBcnJheS53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIHNpZ0J5dGVzID0gd29yZEFycmF5LnNpZ0J5dGVzO1xuXG5cdCAgICAgICAgICAgIC8vIENvbnZlcnRcblx0ICAgICAgICAgICAgdmFyIGhleENoYXJzID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2lnQnl0ZXM7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgdmFyIGJpdGUgPSAod29yZHNbaSA+Pj4gMl0gPj4+ICgyNCAtIChpICUgNCkgKiA4KSkgJiAweGZmO1xuXHQgICAgICAgICAgICAgICAgaGV4Q2hhcnMucHVzaCgoYml0ZSA+Pj4gNCkudG9TdHJpbmcoMTYpKTtcblx0ICAgICAgICAgICAgICAgIGhleENoYXJzLnB1c2goKGJpdGUgJiAweDBmKS50b1N0cmluZygxNikpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGhleENoYXJzLmpvaW4oJycpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyBhIGhleCBzdHJpbmcgdG8gYSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGhleFN0ciBUaGUgaGV4IHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciB3b3JkQXJyYXkgPSBDcnlwdG9KUy5lbmMuSGV4LnBhcnNlKGhleFN0cmluZyk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgcGFyc2U6IGZ1bmN0aW9uIChoZXhTdHIpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIGhleFN0ckxlbmd0aCA9IGhleFN0ci5sZW5ndGg7XG5cblx0ICAgICAgICAgICAgLy8gQ29udmVydFxuXHQgICAgICAgICAgICB2YXIgd29yZHMgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoZXhTdHJMZW5ndGg7IGkgKz0gMikge1xuXHQgICAgICAgICAgICAgICAgd29yZHNbaSA+Pj4gM10gfD0gcGFyc2VJbnQoaGV4U3RyLnN1YnN0cihpLCAyKSwgMTYpIDw8ICgyNCAtIChpICUgOCkgKiA0KTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiBuZXcgV29yZEFycmF5LmluaXQod29yZHMsIGhleFN0ckxlbmd0aCAvIDIpO1xuXHQgICAgICAgIH1cblx0ICAgIH07XG5cblx0ICAgIC8qKlxuXHQgICAgICogTGF0aW4xIGVuY29kaW5nIHN0cmF0ZWd5LlxuXHQgICAgICovXG5cdCAgICB2YXIgTGF0aW4xID0gQ19lbmMuTGF0aW4xID0ge1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIGEgd29yZCBhcnJheSB0byBhIExhdGluMSBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheX0gd29yZEFycmF5IFRoZSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgTGF0aW4xIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGxhdGluMVN0cmluZyA9IENyeXB0b0pTLmVuYy5MYXRpbjEuc3RyaW5naWZ5KHdvcmRBcnJheSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgc3RyaW5naWZ5OiBmdW5jdGlvbiAod29yZEFycmF5KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgd29yZHMgPSB3b3JkQXJyYXkud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBzaWdCeXRlcyA9IHdvcmRBcnJheS5zaWdCeXRlcztcblxuXHQgICAgICAgICAgICAvLyBDb252ZXJ0XG5cdCAgICAgICAgICAgIHZhciBsYXRpbjFDaGFycyA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpZ0J5dGVzOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIHZhciBiaXRlID0gKHdvcmRzW2kgPj4+IDJdID4+PiAoMjQgLSAoaSAlIDQpICogOCkpICYgMHhmZjtcblx0ICAgICAgICAgICAgICAgIGxhdGluMUNoYXJzLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShiaXRlKSk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICByZXR1cm4gbGF0aW4xQ2hhcnMuam9pbignJyk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIGEgTGF0aW4xIHN0cmluZyB0byBhIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbGF0aW4xU3RyIFRoZSBMYXRpbjEgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHdvcmRBcnJheSA9IENyeXB0b0pTLmVuYy5MYXRpbjEucGFyc2UobGF0aW4xU3RyaW5nKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBwYXJzZTogZnVuY3Rpb24gKGxhdGluMVN0cikge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICB2YXIgbGF0aW4xU3RyTGVuZ3RoID0gbGF0aW4xU3RyLmxlbmd0aDtcblxuXHQgICAgICAgICAgICAvLyBDb252ZXJ0XG5cdCAgICAgICAgICAgIHZhciB3b3JkcyA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhdGluMVN0ckxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICB3b3Jkc1tpID4+PiAyXSB8PSAobGF0aW4xU3RyLmNoYXJDb2RlQXQoaSkgJiAweGZmKSA8PCAoMjQgLSAoaSAlIDQpICogOCk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICByZXR1cm4gbmV3IFdvcmRBcnJheS5pbml0KHdvcmRzLCBsYXRpbjFTdHJMZW5ndGgpO1xuXHQgICAgICAgIH1cblx0ICAgIH07XG5cblx0ICAgIC8qKlxuXHQgICAgICogVVRGLTggZW5jb2Rpbmcgc3RyYXRlZ3kuXG5cdCAgICAgKi9cblx0ICAgIHZhciBVdGY4ID0gQ19lbmMuVXRmOCA9IHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyBhIHdvcmQgYXJyYXkgdG8gYSBVVEYtOCBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheX0gd29yZEFycmF5IFRoZSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgVVRGLTggc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgdXRmOFN0cmluZyA9IENyeXB0b0pTLmVuYy5VdGY4LnN0cmluZ2lmeSh3b3JkQXJyYXkpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHN0cmluZ2lmeTogZnVuY3Rpb24gKHdvcmRBcnJheSkge1xuXHQgICAgICAgICAgICB0cnkge1xuXHQgICAgICAgICAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUoTGF0aW4xLnN0cmluZ2lmeSh3b3JkQXJyYXkpKSk7XG5cdCAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcblx0ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTWFsZm9ybWVkIFVURi04IGRhdGEnKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyBhIFVURi04IHN0cmluZyB0byBhIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXRmOFN0ciBUaGUgVVRGLTggc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHdvcmRBcnJheSA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKHV0ZjhTdHJpbmcpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHBhcnNlOiBmdW5jdGlvbiAodXRmOFN0cikge1xuXHQgICAgICAgICAgICByZXR1cm4gTGF0aW4xLnBhcnNlKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudCh1dGY4U3RyKSkpO1xuXHQgICAgICAgIH1cblx0ICAgIH07XG5cblx0ICAgIC8qKlxuXHQgICAgICogQWJzdHJhY3QgYnVmZmVyZWQgYmxvY2sgYWxnb3JpdGhtIHRlbXBsYXRlLlxuXHQgICAgICpcblx0ICAgICAqIFRoZSBwcm9wZXJ0eSBibG9ja1NpemUgbXVzdCBiZSBpbXBsZW1lbnRlZCBpbiBhIGNvbmNyZXRlIHN1YnR5cGUuXG5cdCAgICAgKlxuXHQgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IF9taW5CdWZmZXJTaXplIFRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgc2hvdWxkIGJlIGtlcHQgdW5wcm9jZXNzZWQgaW4gdGhlIGJ1ZmZlci4gRGVmYXVsdDogMFxuXHQgICAgICovXG5cdCAgICB2YXIgQnVmZmVyZWRCbG9ja0FsZ29yaXRobSA9IENfbGliLkJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0gPSBCYXNlLmV4dGVuZCh7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogUmVzZXRzIHRoaXMgYmxvY2sgYWxnb3JpdGhtJ3MgZGF0YSBidWZmZXIgdG8gaXRzIGluaXRpYWwgc3RhdGUuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIGJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0ucmVzZXQoKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICByZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAvLyBJbml0aWFsIHZhbHVlc1xuXHQgICAgICAgICAgICB0aGlzLl9kYXRhID0gbmV3IFdvcmRBcnJheS5pbml0KCk7XG5cdCAgICAgICAgICAgIHRoaXMuX25EYXRhQnl0ZXMgPSAwO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBBZGRzIG5ldyBkYXRhIHRvIHRoaXMgYmxvY2sgYWxnb3JpdGhtJ3MgYnVmZmVyLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBkYXRhIFRoZSBkYXRhIHRvIGFwcGVuZC4gU3RyaW5ncyBhcmUgY29udmVydGVkIHRvIGEgV29yZEFycmF5IHVzaW5nIFVURi04LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICBidWZmZXJlZEJsb2NrQWxnb3JpdGhtLl9hcHBlbmQoJ2RhdGEnKTtcblx0ICAgICAgICAgKiAgICAgYnVmZmVyZWRCbG9ja0FsZ29yaXRobS5fYXBwZW5kKHdvcmRBcnJheSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgX2FwcGVuZDogZnVuY3Rpb24gKGRhdGEpIHtcblx0ICAgICAgICAgICAgLy8gQ29udmVydCBzdHJpbmcgdG8gV29yZEFycmF5LCBlbHNlIGFzc3VtZSBXb3JkQXJyYXkgYWxyZWFkeVxuXHQgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEgPT0gJ3N0cmluZycpIHtcblx0ICAgICAgICAgICAgICAgIGRhdGEgPSBVdGY4LnBhcnNlKGRhdGEpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gQXBwZW5kXG5cdCAgICAgICAgICAgIHRoaXMuX2RhdGEuY29uY2F0KGRhdGEpO1xuXHQgICAgICAgICAgICB0aGlzLl9uRGF0YUJ5dGVzICs9IGRhdGEuc2lnQnl0ZXM7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIFByb2Nlc3NlcyBhdmFpbGFibGUgZGF0YSBibG9ja3MuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBUaGlzIG1ldGhvZCBpbnZva2VzIF9kb1Byb2Nlc3NCbG9jayhvZmZzZXQpLCB3aGljaCBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IGEgY29uY3JldGUgc3VidHlwZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gZG9GbHVzaCBXaGV0aGVyIGFsbCBibG9ja3MgYW5kIHBhcnRpYWwgYmxvY2tzIHNob3VsZCBiZSBwcm9jZXNzZWQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBwcm9jZXNzZWQgZGF0YS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHByb2Nlc3NlZERhdGEgPSBidWZmZXJlZEJsb2NrQWxnb3JpdGhtLl9wcm9jZXNzKCk7XG5cdCAgICAgICAgICogICAgIHZhciBwcm9jZXNzZWREYXRhID0gYnVmZmVyZWRCbG9ja0FsZ29yaXRobS5fcHJvY2VzcyghISdmbHVzaCcpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIF9wcm9jZXNzOiBmdW5jdGlvbiAoZG9GbHVzaCkge1xuXHQgICAgICAgICAgICB2YXIgcHJvY2Vzc2VkV29yZHM7XG5cblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy5fZGF0YTtcblx0ICAgICAgICAgICAgdmFyIGRhdGFXb3JkcyA9IGRhdGEud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBkYXRhU2lnQnl0ZXMgPSBkYXRhLnNpZ0J5dGVzO1xuXHQgICAgICAgICAgICB2YXIgYmxvY2tTaXplID0gdGhpcy5ibG9ja1NpemU7XG5cdCAgICAgICAgICAgIHZhciBibG9ja1NpemVCeXRlcyA9IGJsb2NrU2l6ZSAqIDQ7XG5cblx0ICAgICAgICAgICAgLy8gQ291bnQgYmxvY2tzIHJlYWR5XG5cdCAgICAgICAgICAgIHZhciBuQmxvY2tzUmVhZHkgPSBkYXRhU2lnQnl0ZXMgLyBibG9ja1NpemVCeXRlcztcblx0ICAgICAgICAgICAgaWYgKGRvRmx1c2gpIHtcblx0ICAgICAgICAgICAgICAgIC8vIFJvdW5kIHVwIHRvIGluY2x1ZGUgcGFydGlhbCBibG9ja3Ncblx0ICAgICAgICAgICAgICAgIG5CbG9ja3NSZWFkeSA9IE1hdGguY2VpbChuQmxvY2tzUmVhZHkpO1xuXHQgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgLy8gUm91bmQgZG93biB0byBpbmNsdWRlIG9ubHkgZnVsbCBibG9ja3MsXG5cdCAgICAgICAgICAgICAgICAvLyBsZXNzIHRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgbXVzdCByZW1haW4gaW4gdGhlIGJ1ZmZlclxuXHQgICAgICAgICAgICAgICAgbkJsb2Nrc1JlYWR5ID0gTWF0aC5tYXgoKG5CbG9ja3NSZWFkeSB8IDApIC0gdGhpcy5fbWluQnVmZmVyU2l6ZSwgMCk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBDb3VudCB3b3JkcyByZWFkeVxuXHQgICAgICAgICAgICB2YXIgbldvcmRzUmVhZHkgPSBuQmxvY2tzUmVhZHkgKiBibG9ja1NpemU7XG5cblx0ICAgICAgICAgICAgLy8gQ291bnQgYnl0ZXMgcmVhZHlcblx0ICAgICAgICAgICAgdmFyIG5CeXRlc1JlYWR5ID0gTWF0aC5taW4obldvcmRzUmVhZHkgKiA0LCBkYXRhU2lnQnl0ZXMpO1xuXG5cdCAgICAgICAgICAgIC8vIFByb2Nlc3MgYmxvY2tzXG5cdCAgICAgICAgICAgIGlmIChuV29yZHNSZWFkeSkge1xuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgbldvcmRzUmVhZHk7IG9mZnNldCArPSBibG9ja1NpemUpIHtcblx0ICAgICAgICAgICAgICAgICAgICAvLyBQZXJmb3JtIGNvbmNyZXRlLWFsZ29yaXRobSBsb2dpY1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RvUHJvY2Vzc0Jsb2NrKGRhdGFXb3Jkcywgb2Zmc2V0KTtcblx0ICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHByb2Nlc3NlZCB3b3Jkc1xuXHQgICAgICAgICAgICAgICAgcHJvY2Vzc2VkV29yZHMgPSBkYXRhV29yZHMuc3BsaWNlKDAsIG5Xb3Jkc1JlYWR5KTtcblx0ICAgICAgICAgICAgICAgIGRhdGEuc2lnQnl0ZXMgLT0gbkJ5dGVzUmVhZHk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBSZXR1cm4gcHJvY2Vzc2VkIHdvcmRzXG5cdCAgICAgICAgICAgIHJldHVybiBuZXcgV29yZEFycmF5LmluaXQocHJvY2Vzc2VkV29yZHMsIG5CeXRlc1JlYWR5KTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ3JlYXRlcyBhIGNvcHkgb2YgdGhpcyBvYmplY3QuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtPYmplY3R9IFRoZSBjbG9uZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGNsb25lID0gYnVmZmVyZWRCbG9ja0FsZ29yaXRobS5jbG9uZSgpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNsb25lOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHZhciBjbG9uZSA9IEJhc2UuY2xvbmUuY2FsbCh0aGlzKTtcblx0ICAgICAgICAgICAgY2xvbmUuX2RhdGEgPSB0aGlzLl9kYXRhLmNsb25lKCk7XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGNsb25lO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfbWluQnVmZmVyU2l6ZTogMFxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogQWJzdHJhY3QgaGFzaGVyIHRlbXBsYXRlLlxuXHQgICAgICpcblx0ICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBibG9ja1NpemUgVGhlIG51bWJlciBvZiAzMi1iaXQgd29yZHMgdGhpcyBoYXNoZXIgb3BlcmF0ZXMgb24uIERlZmF1bHQ6IDE2ICg1MTIgYml0cylcblx0ICAgICAqL1xuXHQgICAgdmFyIEhhc2hlciA9IENfbGliLkhhc2hlciA9IEJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0uZXh0ZW5kKHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMuXG5cdCAgICAgICAgICovXG5cdCAgICAgICAgY2ZnOiBCYXNlLmV4dGVuZCgpLFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogSW5pdGlhbGl6ZXMgYSBuZXdseSBjcmVhdGVkIGhhc2hlci5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcgKE9wdGlvbmFsKSBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHVzZSBmb3IgdGhpcyBoYXNoIGNvbXB1dGF0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgaGFzaGVyID0gQ3J5cHRvSlMuYWxnby5TSEEyNTYuY3JlYXRlKCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgaW5pdDogZnVuY3Rpb24gKGNmZykge1xuXHQgICAgICAgICAgICAvLyBBcHBseSBjb25maWcgZGVmYXVsdHNcblx0ICAgICAgICAgICAgdGhpcy5jZmcgPSB0aGlzLmNmZy5leHRlbmQoY2ZnKTtcblxuXHQgICAgICAgICAgICAvLyBTZXQgaW5pdGlhbCB2YWx1ZXNcblx0ICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBSZXNldHMgdGhpcyBoYXNoZXIgdG8gaXRzIGluaXRpYWwgc3RhdGUuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIGhhc2hlci5yZXNldCgpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHJlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFJlc2V0IGRhdGEgYnVmZmVyXG5cdCAgICAgICAgICAgIEJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0ucmVzZXQuY2FsbCh0aGlzKTtcblxuXHQgICAgICAgICAgICAvLyBQZXJmb3JtIGNvbmNyZXRlLWhhc2hlciBsb2dpY1xuXHQgICAgICAgICAgICB0aGlzLl9kb1Jlc2V0KCk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIFVwZGF0ZXMgdGhpcyBoYXNoZXIgd2l0aCBhIG1lc3NhZ2UuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2VVcGRhdGUgVGhlIG1lc3NhZ2UgdG8gYXBwZW5kLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7SGFzaGVyfSBUaGlzIGhhc2hlci5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgaGFzaGVyLnVwZGF0ZSgnbWVzc2FnZScpO1xuXHQgICAgICAgICAqICAgICBoYXNoZXIudXBkYXRlKHdvcmRBcnJheSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgdXBkYXRlOiBmdW5jdGlvbiAobWVzc2FnZVVwZGF0ZSkge1xuXHQgICAgICAgICAgICAvLyBBcHBlbmRcblx0ICAgICAgICAgICAgdGhpcy5fYXBwZW5kKG1lc3NhZ2VVcGRhdGUpO1xuXG5cdCAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgaGFzaFxuXHQgICAgICAgICAgICB0aGlzLl9wcm9jZXNzKCk7XG5cblx0ICAgICAgICAgICAgLy8gQ2hhaW5hYmxlXG5cdCAgICAgICAgICAgIHJldHVybiB0aGlzO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBGaW5hbGl6ZXMgdGhlIGhhc2ggY29tcHV0YXRpb24uXG5cdCAgICAgICAgICogTm90ZSB0aGF0IHRoZSBmaW5hbGl6ZSBvcGVyYXRpb24gaXMgZWZmZWN0aXZlbHkgYSBkZXN0cnVjdGl2ZSwgcmVhZC1vbmNlIG9wZXJhdGlvbi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZVVwZGF0ZSAoT3B0aW9uYWwpIEEgZmluYWwgbWVzc2FnZSB1cGRhdGUuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBoYXNoLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgaGFzaCA9IGhhc2hlci5maW5hbGl6ZSgpO1xuXHQgICAgICAgICAqICAgICB2YXIgaGFzaCA9IGhhc2hlci5maW5hbGl6ZSgnbWVzc2FnZScpO1xuXHQgICAgICAgICAqICAgICB2YXIgaGFzaCA9IGhhc2hlci5maW5hbGl6ZSh3b3JkQXJyYXkpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGZpbmFsaXplOiBmdW5jdGlvbiAobWVzc2FnZVVwZGF0ZSkge1xuXHQgICAgICAgICAgICAvLyBGaW5hbCBtZXNzYWdlIHVwZGF0ZVxuXHQgICAgICAgICAgICBpZiAobWVzc2FnZVVwZGF0ZSkge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5fYXBwZW5kKG1lc3NhZ2VVcGRhdGUpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gUGVyZm9ybSBjb25jcmV0ZS1oYXNoZXIgbG9naWNcblx0ICAgICAgICAgICAgdmFyIGhhc2ggPSB0aGlzLl9kb0ZpbmFsaXplKCk7XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGhhc2g7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGJsb2NrU2l6ZTogNTEyLzMyLFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ3JlYXRlcyBhIHNob3J0Y3V0IGZ1bmN0aW9uIHRvIGEgaGFzaGVyJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7SGFzaGVyfSBoYXNoZXIgVGhlIGhhc2hlciB0byBjcmVhdGUgYSBoZWxwZXIgZm9yLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7RnVuY3Rpb259IFRoZSBzaG9ydGN1dCBmdW5jdGlvbi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIFNIQTI1NiA9IENyeXB0b0pTLmxpYi5IYXNoZXIuX2NyZWF0ZUhlbHBlcihDcnlwdG9KUy5hbGdvLlNIQTI1Nik7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgX2NyZWF0ZUhlbHBlcjogZnVuY3Rpb24gKGhhc2hlcikge1xuXHQgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG1lc3NhZ2UsIGNmZykge1xuXHQgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBoYXNoZXIuaW5pdChjZmcpLmZpbmFsaXplKG1lc3NhZ2UpO1xuXHQgICAgICAgICAgICB9O1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDcmVhdGVzIGEgc2hvcnRjdXQgZnVuY3Rpb24gdG8gdGhlIEhNQUMncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtIYXNoZXJ9IGhhc2hlciBUaGUgaGFzaGVyIHRvIHVzZSBpbiB0aGlzIEhNQUMgaGVscGVyLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7RnVuY3Rpb259IFRoZSBzaG9ydGN1dCBmdW5jdGlvbi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIEhtYWNTSEEyNTYgPSBDcnlwdG9KUy5saWIuSGFzaGVyLl9jcmVhdGVIbWFjSGVscGVyKENyeXB0b0pTLmFsZ28uU0hBMjU2KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBfY3JlYXRlSG1hY0hlbHBlcjogZnVuY3Rpb24gKGhhc2hlcikge1xuXHQgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG1lc3NhZ2UsIGtleSkge1xuXHQgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDX2FsZ28uSE1BQy5pbml0KGhhc2hlciwga2V5KS5maW5hbGl6ZShtZXNzYWdlKTtcblx0ICAgICAgICAgICAgfTtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBBbGdvcml0aG0gbmFtZXNwYWNlLlxuXHQgICAgICovXG5cdCAgICB2YXIgQ19hbGdvID0gQy5hbGdvID0ge307XG5cblx0ICAgIHJldHVybiBDO1xuXHR9KE1hdGgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUztcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIFdvcmRBcnJheSA9IENfbGliLldvcmRBcnJheTtcblx0ICAgIHZhciBDX2VuYyA9IEMuZW5jO1xuXG5cdCAgICAvKipcblx0ICAgICAqIEJhc2U2NCBlbmNvZGluZyBzdHJhdGVneS5cblx0ICAgICAqL1xuXHQgICAgdmFyIEJhc2U2NCA9IENfZW5jLkJhc2U2NCA9IHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyBhIHdvcmQgYXJyYXkgdG8gYSBCYXNlNjQgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl9IHdvcmRBcnJheSBUaGUgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIEJhc2U2NCBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBiYXNlNjRTdHJpbmcgPSBDcnlwdG9KUy5lbmMuQmFzZTY0LnN0cmluZ2lmeSh3b3JkQXJyYXkpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHN0cmluZ2lmeTogZnVuY3Rpb24gKHdvcmRBcnJheSkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIHdvcmRzID0gd29yZEFycmF5LndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgc2lnQnl0ZXMgPSB3b3JkQXJyYXkuc2lnQnl0ZXM7XG5cdCAgICAgICAgICAgIHZhciBtYXAgPSB0aGlzLl9tYXA7XG5cblx0ICAgICAgICAgICAgLy8gQ2xhbXAgZXhjZXNzIGJpdHNcblx0ICAgICAgICAgICAgd29yZEFycmF5LmNsYW1wKCk7XG5cblx0ICAgICAgICAgICAgLy8gQ29udmVydFxuXHQgICAgICAgICAgICB2YXIgYmFzZTY0Q2hhcnMgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaWdCeXRlczsgaSArPSAzKSB7XG5cdCAgICAgICAgICAgICAgICB2YXIgYnl0ZTEgPSAod29yZHNbaSA+Pj4gMl0gICAgICAgPj4+ICgyNCAtIChpICUgNCkgKiA4KSkgICAgICAgJiAweGZmO1xuXHQgICAgICAgICAgICAgICAgdmFyIGJ5dGUyID0gKHdvcmRzWyhpICsgMSkgPj4+IDJdID4+PiAoMjQgLSAoKGkgKyAxKSAlIDQpICogOCkpICYgMHhmZjtcblx0ICAgICAgICAgICAgICAgIHZhciBieXRlMyA9ICh3b3Jkc1soaSArIDIpID4+PiAyXSA+Pj4gKDI0IC0gKChpICsgMikgJSA0KSAqIDgpKSAmIDB4ZmY7XG5cblx0ICAgICAgICAgICAgICAgIHZhciB0cmlwbGV0ID0gKGJ5dGUxIDw8IDE2KSB8IChieXRlMiA8PCA4KSB8IGJ5dGUzO1xuXG5cdCAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgKGogPCA0KSAmJiAoaSArIGogKiAwLjc1IDwgc2lnQnl0ZXMpOyBqKyspIHtcblx0ICAgICAgICAgICAgICAgICAgICBiYXNlNjRDaGFycy5wdXNoKG1hcC5jaGFyQXQoKHRyaXBsZXQgPj4+ICg2ICogKDMgLSBqKSkpICYgMHgzZikpO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gQWRkIHBhZGRpbmdcblx0ICAgICAgICAgICAgdmFyIHBhZGRpbmdDaGFyID0gbWFwLmNoYXJBdCg2NCk7XG5cdCAgICAgICAgICAgIGlmIChwYWRkaW5nQ2hhcikge1xuXHQgICAgICAgICAgICAgICAgd2hpbGUgKGJhc2U2NENoYXJzLmxlbmd0aCAlIDQpIHtcblx0ICAgICAgICAgICAgICAgICAgICBiYXNlNjRDaGFycy5wdXNoKHBhZGRpbmdDaGFyKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiBiYXNlNjRDaGFycy5qb2luKCcnKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgYSBCYXNlNjQgc3RyaW5nIHRvIGEgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlNjRTdHIgVGhlIEJhc2U2NCBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgd29yZEFycmF5ID0gQ3J5cHRvSlMuZW5jLkJhc2U2NC5wYXJzZShiYXNlNjRTdHJpbmcpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHBhcnNlOiBmdW5jdGlvbiAoYmFzZTY0U3RyKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgYmFzZTY0U3RyTGVuZ3RoID0gYmFzZTY0U3RyLmxlbmd0aDtcblx0ICAgICAgICAgICAgdmFyIG1hcCA9IHRoaXMuX21hcDtcblx0ICAgICAgICAgICAgdmFyIHJldmVyc2VNYXAgPSB0aGlzLl9yZXZlcnNlTWFwO1xuXG5cdCAgICAgICAgICAgIGlmICghcmV2ZXJzZU1hcCkge1xuXHQgICAgICAgICAgICAgICAgICAgIHJldmVyc2VNYXAgPSB0aGlzLl9yZXZlcnNlTWFwID0gW107XG5cdCAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBtYXAubGVuZ3RoOyBqKyspIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgcmV2ZXJzZU1hcFttYXAuY2hhckNvZGVBdChqKV0gPSBqO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIElnbm9yZSBwYWRkaW5nXG5cdCAgICAgICAgICAgIHZhciBwYWRkaW5nQ2hhciA9IG1hcC5jaGFyQXQoNjQpO1xuXHQgICAgICAgICAgICBpZiAocGFkZGluZ0NoYXIpIHtcblx0ICAgICAgICAgICAgICAgIHZhciBwYWRkaW5nSW5kZXggPSBiYXNlNjRTdHIuaW5kZXhPZihwYWRkaW5nQ2hhcik7XG5cdCAgICAgICAgICAgICAgICBpZiAocGFkZGluZ0luZGV4ICE9PSAtMSkge1xuXHQgICAgICAgICAgICAgICAgICAgIGJhc2U2NFN0ckxlbmd0aCA9IHBhZGRpbmdJbmRleDtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIENvbnZlcnRcblx0ICAgICAgICAgICAgcmV0dXJuIHBhcnNlTG9vcChiYXNlNjRTdHIsIGJhc2U2NFN0ckxlbmd0aCwgcmV2ZXJzZU1hcCk7XG5cblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX21hcDogJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89J1xuXHQgICAgfTtcblxuXHQgICAgZnVuY3Rpb24gcGFyc2VMb29wKGJhc2U2NFN0ciwgYmFzZTY0U3RyTGVuZ3RoLCByZXZlcnNlTWFwKSB7XG5cdCAgICAgIHZhciB3b3JkcyA9IFtdO1xuXHQgICAgICB2YXIgbkJ5dGVzID0gMDtcblx0ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYXNlNjRTdHJMZW5ndGg7IGkrKykge1xuXHQgICAgICAgICAgaWYgKGkgJSA0KSB7XG5cdCAgICAgICAgICAgICAgdmFyIGJpdHMxID0gcmV2ZXJzZU1hcFtiYXNlNjRTdHIuY2hhckNvZGVBdChpIC0gMSldIDw8ICgoaSAlIDQpICogMik7XG5cdCAgICAgICAgICAgICAgdmFyIGJpdHMyID0gcmV2ZXJzZU1hcFtiYXNlNjRTdHIuY2hhckNvZGVBdChpKV0gPj4+ICg2IC0gKGkgJSA0KSAqIDIpO1xuXHQgICAgICAgICAgICAgIHZhciBiaXRzQ29tYmluZWQgPSBiaXRzMSB8IGJpdHMyO1xuXHQgICAgICAgICAgICAgIHdvcmRzW25CeXRlcyA+Pj4gMl0gfD0gYml0c0NvbWJpbmVkIDw8ICgyNCAtIChuQnl0ZXMgJSA0KSAqIDgpO1xuXHQgICAgICAgICAgICAgIG5CeXRlcysrO1xuXHQgICAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiBXb3JkQXJyYXkuY3JlYXRlKHdvcmRzLCBuQnl0ZXMpO1xuXHQgICAgfVxuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLmVuYy5CYXNlNjQ7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5KSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAoKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBXb3JkQXJyYXkgPSBDX2xpYi5Xb3JkQXJyYXk7XG5cdCAgICB2YXIgQ19lbmMgPSBDLmVuYztcblxuXHQgICAgLyoqXG5cdCAgICAgKiBCYXNlNjR1cmwgZW5jb2Rpbmcgc3RyYXRlZ3kuXG5cdCAgICAgKi9cblx0ICAgIHZhciBCYXNlNjR1cmwgPSBDX2VuYy5CYXNlNjR1cmwgPSB7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgYSB3b3JkIGFycmF5IHRvIGEgQmFzZTY0dXJsIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fSB3b3JkQXJyYXkgVGhlIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHVybFNhZmUgV2hldGhlciB0byB1c2UgdXJsIHNhZmVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIEJhc2U2NHVybCBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBiYXNlNjRTdHJpbmcgPSBDcnlwdG9KUy5lbmMuQmFzZTY0dXJsLnN0cmluZ2lmeSh3b3JkQXJyYXkpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHN0cmluZ2lmeTogZnVuY3Rpb24gKHdvcmRBcnJheSwgdXJsU2FmZT10cnVlKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgd29yZHMgPSB3b3JkQXJyYXkud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBzaWdCeXRlcyA9IHdvcmRBcnJheS5zaWdCeXRlcztcblx0ICAgICAgICAgICAgdmFyIG1hcCA9IHVybFNhZmUgPyB0aGlzLl9zYWZlX21hcCA6IHRoaXMuX21hcDtcblxuXHQgICAgICAgICAgICAvLyBDbGFtcCBleGNlc3MgYml0c1xuXHQgICAgICAgICAgICB3b3JkQXJyYXkuY2xhbXAoKTtcblxuXHQgICAgICAgICAgICAvLyBDb252ZXJ0XG5cdCAgICAgICAgICAgIHZhciBiYXNlNjRDaGFycyA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpZ0J5dGVzOyBpICs9IDMpIHtcblx0ICAgICAgICAgICAgICAgIHZhciBieXRlMSA9ICh3b3Jkc1tpID4+PiAyXSAgICAgICA+Pj4gKDI0IC0gKGkgJSA0KSAqIDgpKSAgICAgICAmIDB4ZmY7XG5cdCAgICAgICAgICAgICAgICB2YXIgYnl0ZTIgPSAod29yZHNbKGkgKyAxKSA+Pj4gMl0gPj4+ICgyNCAtICgoaSArIDEpICUgNCkgKiA4KSkgJiAweGZmO1xuXHQgICAgICAgICAgICAgICAgdmFyIGJ5dGUzID0gKHdvcmRzWyhpICsgMikgPj4+IDJdID4+PiAoMjQgLSAoKGkgKyAyKSAlIDQpICogOCkpICYgMHhmZjtcblxuXHQgICAgICAgICAgICAgICAgdmFyIHRyaXBsZXQgPSAoYnl0ZTEgPDwgMTYpIHwgKGJ5dGUyIDw8IDgpIHwgYnl0ZTM7XG5cblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyAoaiA8IDQpICYmIChpICsgaiAqIDAuNzUgPCBzaWdCeXRlcyk7IGorKykge1xuXHQgICAgICAgICAgICAgICAgICAgIGJhc2U2NENoYXJzLnB1c2gobWFwLmNoYXJBdCgodHJpcGxldCA+Pj4gKDYgKiAoMyAtIGopKSkgJiAweDNmKSk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBBZGQgcGFkZGluZ1xuXHQgICAgICAgICAgICB2YXIgcGFkZGluZ0NoYXIgPSBtYXAuY2hhckF0KDY0KTtcblx0ICAgICAgICAgICAgaWYgKHBhZGRpbmdDaGFyKSB7XG5cdCAgICAgICAgICAgICAgICB3aGlsZSAoYmFzZTY0Q2hhcnMubGVuZ3RoICUgNCkge1xuXHQgICAgICAgICAgICAgICAgICAgIGJhc2U2NENoYXJzLnB1c2gocGFkZGluZ0NoYXIpO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGJhc2U2NENoYXJzLmpvaW4oJycpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyBhIEJhc2U2NHVybCBzdHJpbmcgdG8gYSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NFN0ciBUaGUgQmFzZTY0dXJsIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gdXJsU2FmZSBXaGV0aGVyIHRvIHVzZSB1cmwgc2FmZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHdvcmRBcnJheSA9IENyeXB0b0pTLmVuYy5CYXNlNjR1cmwucGFyc2UoYmFzZTY0U3RyaW5nKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBwYXJzZTogZnVuY3Rpb24gKGJhc2U2NFN0ciwgdXJsU2FmZT10cnVlKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgYmFzZTY0U3RyTGVuZ3RoID0gYmFzZTY0U3RyLmxlbmd0aDtcblx0ICAgICAgICAgICAgdmFyIG1hcCA9IHVybFNhZmUgPyB0aGlzLl9zYWZlX21hcCA6IHRoaXMuX21hcDtcblx0ICAgICAgICAgICAgdmFyIHJldmVyc2VNYXAgPSB0aGlzLl9yZXZlcnNlTWFwO1xuXG5cdCAgICAgICAgICAgIGlmICghcmV2ZXJzZU1hcCkge1xuXHQgICAgICAgICAgICAgICAgcmV2ZXJzZU1hcCA9IHRoaXMuX3JldmVyc2VNYXAgPSBbXTtcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbWFwLmxlbmd0aDsgaisrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgcmV2ZXJzZU1hcFttYXAuY2hhckNvZGVBdChqKV0gPSBqO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gSWdub3JlIHBhZGRpbmdcblx0ICAgICAgICAgICAgdmFyIHBhZGRpbmdDaGFyID0gbWFwLmNoYXJBdCg2NCk7XG5cdCAgICAgICAgICAgIGlmIChwYWRkaW5nQ2hhcikge1xuXHQgICAgICAgICAgICAgICAgdmFyIHBhZGRpbmdJbmRleCA9IGJhc2U2NFN0ci5pbmRleE9mKHBhZGRpbmdDaGFyKTtcblx0ICAgICAgICAgICAgICAgIGlmIChwYWRkaW5nSW5kZXggIT09IC0xKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgYmFzZTY0U3RyTGVuZ3RoID0gcGFkZGluZ0luZGV4O1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gQ29udmVydFxuXHQgICAgICAgICAgICByZXR1cm4gcGFyc2VMb29wKGJhc2U2NFN0ciwgYmFzZTY0U3RyTGVuZ3RoLCByZXZlcnNlTWFwKTtcblxuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfbWFwOiAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0nLFxuXHQgICAgICAgIF9zYWZlX21hcDogJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LV8nLFxuXHQgICAgfTtcblxuXHQgICAgZnVuY3Rpb24gcGFyc2VMb29wKGJhc2U2NFN0ciwgYmFzZTY0U3RyTGVuZ3RoLCByZXZlcnNlTWFwKSB7XG5cdCAgICAgICAgdmFyIHdvcmRzID0gW107XG5cdCAgICAgICAgdmFyIG5CeXRlcyA9IDA7XG5cdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYXNlNjRTdHJMZW5ndGg7IGkrKykge1xuXHQgICAgICAgICAgICBpZiAoaSAlIDQpIHtcblx0ICAgICAgICAgICAgICAgIHZhciBiaXRzMSA9IHJldmVyc2VNYXBbYmFzZTY0U3RyLmNoYXJDb2RlQXQoaSAtIDEpXSA8PCAoKGkgJSA0KSAqIDIpO1xuXHQgICAgICAgICAgICAgICAgdmFyIGJpdHMyID0gcmV2ZXJzZU1hcFtiYXNlNjRTdHIuY2hhckNvZGVBdChpKV0gPj4+ICg2IC0gKGkgJSA0KSAqIDIpO1xuXHQgICAgICAgICAgICAgICAgdmFyIGJpdHNDb21iaW5lZCA9IGJpdHMxIHwgYml0czI7XG5cdCAgICAgICAgICAgICAgICB3b3Jkc1tuQnl0ZXMgPj4+IDJdIHw9IGJpdHNDb21iaW5lZCA8PCAoMjQgLSAobkJ5dGVzICUgNCkgKiA4KTtcblx0ICAgICAgICAgICAgICAgIG5CeXRlcysrO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiBXb3JkQXJyYXkuY3JlYXRlKHdvcmRzLCBuQnl0ZXMpO1xuXHQgICAgfVxuXHR9KCkpO1xuXG5cdHJldHVybiBDcnlwdG9KUy5lbmMuQmFzZTY0dXJsO1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSkge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfbGliID0gQy5saWI7XG5cdCAgICB2YXIgV29yZEFycmF5ID0gQ19saWIuV29yZEFycmF5O1xuXHQgICAgdmFyIENfZW5jID0gQy5lbmM7XG5cblx0ICAgIC8qKlxuXHQgICAgICogVVRGLTE2IEJFIGVuY29kaW5nIHN0cmF0ZWd5LlxuXHQgICAgICovXG5cdCAgICB2YXIgVXRmMTZCRSA9IENfZW5jLlV0ZjE2ID0gQ19lbmMuVXRmMTZCRSA9IHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyBhIHdvcmQgYXJyYXkgdG8gYSBVVEYtMTYgQkUgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl9IHdvcmRBcnJheSBUaGUgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIFVURi0xNiBCRSBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciB1dGYxNlN0cmluZyA9IENyeXB0b0pTLmVuYy5VdGYxNi5zdHJpbmdpZnkod29yZEFycmF5KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBzdHJpbmdpZnk6IGZ1bmN0aW9uICh3b3JkQXJyYXkpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciB3b3JkcyA9IHdvcmRBcnJheS53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIHNpZ0J5dGVzID0gd29yZEFycmF5LnNpZ0J5dGVzO1xuXG5cdCAgICAgICAgICAgIC8vIENvbnZlcnRcblx0ICAgICAgICAgICAgdmFyIHV0ZjE2Q2hhcnMgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaWdCeXRlczsgaSArPSAyKSB7XG5cdCAgICAgICAgICAgICAgICB2YXIgY29kZVBvaW50ID0gKHdvcmRzW2kgPj4+IDJdID4+PiAoMTYgLSAoaSAlIDQpICogOCkpICYgMHhmZmZmO1xuXHQgICAgICAgICAgICAgICAgdXRmMTZDaGFycy5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZVBvaW50KSk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICByZXR1cm4gdXRmMTZDaGFycy5qb2luKCcnKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgYSBVVEYtMTYgQkUgc3RyaW5nIHRvIGEgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1dGYxNlN0ciBUaGUgVVRGLTE2IEJFIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciB3b3JkQXJyYXkgPSBDcnlwdG9KUy5lbmMuVXRmMTYucGFyc2UodXRmMTZTdHJpbmcpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHBhcnNlOiBmdW5jdGlvbiAodXRmMTZTdHIpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIHV0ZjE2U3RyTGVuZ3RoID0gdXRmMTZTdHIubGVuZ3RoO1xuXG5cdCAgICAgICAgICAgIC8vIENvbnZlcnRcblx0ICAgICAgICAgICAgdmFyIHdvcmRzID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdXRmMTZTdHJMZW5ndGg7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgd29yZHNbaSA+Pj4gMV0gfD0gdXRmMTZTdHIuY2hhckNvZGVBdChpKSA8PCAoMTYgLSAoaSAlIDIpICogMTYpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIFdvcmRBcnJheS5jcmVhdGUod29yZHMsIHV0ZjE2U3RyTGVuZ3RoICogMik7XG5cdCAgICAgICAgfVxuXHQgICAgfTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBVVEYtMTYgTEUgZW5jb2Rpbmcgc3RyYXRlZ3kuXG5cdCAgICAgKi9cblx0ICAgIENfZW5jLlV0ZjE2TEUgPSB7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgYSB3b3JkIGFycmF5IHRvIGEgVVRGLTE2IExFIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fSB3b3JkQXJyYXkgVGhlIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBVVEYtMTYgTEUgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgdXRmMTZTdHIgPSBDcnlwdG9KUy5lbmMuVXRmMTZMRS5zdHJpbmdpZnkod29yZEFycmF5KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBzdHJpbmdpZnk6IGZ1bmN0aW9uICh3b3JkQXJyYXkpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciB3b3JkcyA9IHdvcmRBcnJheS53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIHNpZ0J5dGVzID0gd29yZEFycmF5LnNpZ0J5dGVzO1xuXG5cdCAgICAgICAgICAgIC8vIENvbnZlcnRcblx0ICAgICAgICAgICAgdmFyIHV0ZjE2Q2hhcnMgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaWdCeXRlczsgaSArPSAyKSB7XG5cdCAgICAgICAgICAgICAgICB2YXIgY29kZVBvaW50ID0gc3dhcEVuZGlhbigod29yZHNbaSA+Pj4gMl0gPj4+ICgxNiAtIChpICUgNCkgKiA4KSkgJiAweGZmZmYpO1xuXHQgICAgICAgICAgICAgICAgdXRmMTZDaGFycy5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZVBvaW50KSk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICByZXR1cm4gdXRmMTZDaGFycy5qb2luKCcnKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgYSBVVEYtMTYgTEUgc3RyaW5nIHRvIGEgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1dGYxNlN0ciBUaGUgVVRGLTE2IExFIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciB3b3JkQXJyYXkgPSBDcnlwdG9KUy5lbmMuVXRmMTZMRS5wYXJzZSh1dGYxNlN0cik7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgcGFyc2U6IGZ1bmN0aW9uICh1dGYxNlN0cikge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICB2YXIgdXRmMTZTdHJMZW5ndGggPSB1dGYxNlN0ci5sZW5ndGg7XG5cblx0ICAgICAgICAgICAgLy8gQ29udmVydFxuXHQgICAgICAgICAgICB2YXIgd29yZHMgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1dGYxNlN0ckxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICB3b3Jkc1tpID4+PiAxXSB8PSBzd2FwRW5kaWFuKHV0ZjE2U3RyLmNoYXJDb2RlQXQoaSkgPDwgKDE2IC0gKGkgJSAyKSAqIDE2KSk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICByZXR1cm4gV29yZEFycmF5LmNyZWF0ZSh3b3JkcywgdXRmMTZTdHJMZW5ndGggKiAyKTtcblx0ICAgICAgICB9XG5cdCAgICB9O1xuXG5cdCAgICBmdW5jdGlvbiBzd2FwRW5kaWFuKHdvcmQpIHtcblx0ICAgICAgICByZXR1cm4gKCh3b3JkIDw8IDgpICYgMHhmZjAwZmYwMCkgfCAoKHdvcmQgPj4+IDgpICYgMHgwMGZmMDBmZik7XG5cdCAgICB9XG5cdH0oKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMuZW5jLlV0ZjE2O1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL3NoYTFcIiksIHJlcXVpcmUoXCIuL2htYWNcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4vc2hhMVwiLCBcIi4vaG1hY1wiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIEJhc2UgPSBDX2xpYi5CYXNlO1xuXHQgICAgdmFyIFdvcmRBcnJheSA9IENfbGliLldvcmRBcnJheTtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cdCAgICB2YXIgTUQ1ID0gQ19hbGdvLk1ENTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBUaGlzIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uIGlzIG1lYW50IHRvIGNvbmZvcm0gd2l0aCBFVlBfQnl0ZXNUb0tleS5cblx0ICAgICAqIHd3dy5vcGVuc3NsLm9yZy9kb2NzL2NyeXB0by9FVlBfQnl0ZXNUb0tleS5odG1sXG5cdCAgICAgKi9cblx0ICAgIHZhciBFdnBLREYgPSBDX2FsZ28uRXZwS0RGID0gQmFzZS5leHRlbmQoe1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBrZXlTaXplIFRoZSBrZXkgc2l6ZSBpbiB3b3JkcyB0byBnZW5lcmF0ZS4gRGVmYXVsdDogNCAoMTI4IGJpdHMpXG5cdCAgICAgICAgICogQHByb3BlcnR5IHtIYXNoZXJ9IGhhc2hlciBUaGUgaGFzaCBhbGdvcml0aG0gdG8gdXNlLiBEZWZhdWx0OiBNRDVcblx0ICAgICAgICAgKiBAcHJvcGVydHkge251bWJlcn0gaXRlcmF0aW9ucyBUaGUgbnVtYmVyIG9mIGl0ZXJhdGlvbnMgdG8gcGVyZm9ybS4gRGVmYXVsdDogMVxuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNmZzogQmFzZS5leHRlbmQoe1xuXHQgICAgICAgICAgICBrZXlTaXplOiAxMjgvMzIsXG5cdCAgICAgICAgICAgIGhhc2hlcjogTUQ1LFxuXHQgICAgICAgICAgICBpdGVyYXRpb25zOiAxXG5cdCAgICAgICAgfSksXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBJbml0aWFsaXplcyBhIG5ld2x5IGNyZWF0ZWQga2V5IGRlcml2YXRpb24gZnVuY3Rpb24uXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIChPcHRpb25hbCkgVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB1c2UgZm9yIHRoZSBkZXJpdmF0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIga2RmID0gQ3J5cHRvSlMuYWxnby5FdnBLREYuY3JlYXRlKCk7XG5cdCAgICAgICAgICogICAgIHZhciBrZGYgPSBDcnlwdG9KUy5hbGdvLkV2cEtERi5jcmVhdGUoeyBrZXlTaXplOiA4IH0pO1xuXHQgICAgICAgICAqICAgICB2YXIga2RmID0gQ3J5cHRvSlMuYWxnby5FdnBLREYuY3JlYXRlKHsga2V5U2l6ZTogOCwgaXRlcmF0aW9uczogMTAwMCB9KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBpbml0OiBmdW5jdGlvbiAoY2ZnKSB7XG5cdCAgICAgICAgICAgIHRoaXMuY2ZnID0gdGhpcy5jZmcuZXh0ZW5kKGNmZyk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIERlcml2ZXMgYSBrZXkgZnJvbSBhIHBhc3N3b3JkLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBwYXNzd29yZCBUaGUgcGFzc3dvcmQuXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBzYWx0IEEgc2FsdC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIGRlcml2ZWQga2V5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIga2V5ID0ga2RmLmNvbXB1dGUocGFzc3dvcmQsIHNhbHQpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNvbXB1dGU6IGZ1bmN0aW9uIChwYXNzd29yZCwgc2FsdCkge1xuXHQgICAgICAgICAgICB2YXIgYmxvY2s7XG5cblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIGNmZyA9IHRoaXMuY2ZnO1xuXG5cdCAgICAgICAgICAgIC8vIEluaXQgaGFzaGVyXG5cdCAgICAgICAgICAgIHZhciBoYXNoZXIgPSBjZmcuaGFzaGVyLmNyZWF0ZSgpO1xuXG5cdCAgICAgICAgICAgIC8vIEluaXRpYWwgdmFsdWVzXG5cdCAgICAgICAgICAgIHZhciBkZXJpdmVkS2V5ID0gV29yZEFycmF5LmNyZWF0ZSgpO1xuXG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgZGVyaXZlZEtleVdvcmRzID0gZGVyaXZlZEtleS53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIGtleVNpemUgPSBjZmcua2V5U2l6ZTtcblx0ICAgICAgICAgICAgdmFyIGl0ZXJhdGlvbnMgPSBjZmcuaXRlcmF0aW9ucztcblxuXHQgICAgICAgICAgICAvLyBHZW5lcmF0ZSBrZXlcblx0ICAgICAgICAgICAgd2hpbGUgKGRlcml2ZWRLZXlXb3Jkcy5sZW5ndGggPCBrZXlTaXplKSB7XG5cdCAgICAgICAgICAgICAgICBpZiAoYmxvY2spIHtcblx0ICAgICAgICAgICAgICAgICAgICBoYXNoZXIudXBkYXRlKGJsb2NrKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGJsb2NrID0gaGFzaGVyLnVwZGF0ZShwYXNzd29yZCkuZmluYWxpemUoc2FsdCk7XG5cdCAgICAgICAgICAgICAgICBoYXNoZXIucmVzZXQoKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gSXRlcmF0aW9uc1xuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBpdGVyYXRpb25zOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgICAgICBibG9jayA9IGhhc2hlci5maW5hbGl6ZShibG9jayk7XG5cdCAgICAgICAgICAgICAgICAgICAgaGFzaGVyLnJlc2V0KCk7XG5cdCAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgIGRlcml2ZWRLZXkuY29uY2F0KGJsb2NrKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBkZXJpdmVkS2V5LnNpZ0J5dGVzID0ga2V5U2l6ZSAqIDQ7XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGRlcml2ZWRLZXk7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogRGVyaXZlcyBhIGtleSBmcm9tIGEgcGFzc3dvcmQuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBwYXNzd29yZCBUaGUgcGFzc3dvcmQuXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IHNhbHQgQSBzYWx0LlxuXHQgICAgICogQHBhcmFtIHtPYmplY3R9IGNmZyAoT3B0aW9uYWwpIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdXNlIGZvciB0aGlzIGNvbXB1dGF0aW9uLlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIGRlcml2ZWQga2V5LlxuXHQgICAgICpcblx0ICAgICAqIEBzdGF0aWNcblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIga2V5ID0gQ3J5cHRvSlMuRXZwS0RGKHBhc3N3b3JkLCBzYWx0KTtcblx0ICAgICAqICAgICB2YXIga2V5ID0gQ3J5cHRvSlMuRXZwS0RGKHBhc3N3b3JkLCBzYWx0LCB7IGtleVNpemU6IDggfSk7XG5cdCAgICAgKiAgICAgdmFyIGtleSA9IENyeXB0b0pTLkV2cEtERihwYXNzd29yZCwgc2FsdCwgeyBrZXlTaXplOiA4LCBpdGVyYXRpb25zOiAxMDAwIH0pO1xuXHQgICAgICovXG5cdCAgICBDLkV2cEtERiA9IGZ1bmN0aW9uIChwYXNzd29yZCwgc2FsdCwgY2ZnKSB7XG5cdCAgICAgICAgcmV0dXJuIEV2cEtERi5jcmVhdGUoY2ZnKS5jb21wdXRlKHBhc3N3b3JkLCBzYWx0KTtcblx0ICAgIH07XG5cdH0oKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMuRXZwS0RGO1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL2NpcGhlci1jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL2NpcGhlci1jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKHVuZGVmaW5lZCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfbGliID0gQy5saWI7XG5cdCAgICB2YXIgQ2lwaGVyUGFyYW1zID0gQ19saWIuQ2lwaGVyUGFyYW1zO1xuXHQgICAgdmFyIENfZW5jID0gQy5lbmM7XG5cdCAgICB2YXIgSGV4ID0gQ19lbmMuSGV4O1xuXHQgICAgdmFyIENfZm9ybWF0ID0gQy5mb3JtYXQ7XG5cblx0ICAgIHZhciBIZXhGb3JtYXR0ZXIgPSBDX2Zvcm1hdC5IZXggPSB7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgdGhlIGNpcGhlcnRleHQgb2YgYSBjaXBoZXIgcGFyYW1zIG9iamVjdCB0byBhIGhleGFkZWNpbWFsbHkgZW5jb2RlZCBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge0NpcGhlclBhcmFtc30gY2lwaGVyUGFyYW1zIFRoZSBjaXBoZXIgcGFyYW1zIG9iamVjdC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGhleGFkZWNpbWFsbHkgZW5jb2RlZCBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBoZXhTdHJpbmcgPSBDcnlwdG9KUy5mb3JtYXQuSGV4LnN0cmluZ2lmeShjaXBoZXJQYXJhbXMpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHN0cmluZ2lmeTogZnVuY3Rpb24gKGNpcGhlclBhcmFtcykge1xuXHQgICAgICAgICAgICByZXR1cm4gY2lwaGVyUGFyYW1zLmNpcGhlcnRleHQudG9TdHJpbmcoSGV4KTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgYSBoZXhhZGVjaW1hbGx5IGVuY29kZWQgY2lwaGVydGV4dCBzdHJpbmcgdG8gYSBjaXBoZXIgcGFyYW1zIG9iamVjdC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dCBUaGUgaGV4YWRlY2ltYWxseSBlbmNvZGVkIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge0NpcGhlclBhcmFtc30gVGhlIGNpcGhlciBwYXJhbXMgb2JqZWN0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgY2lwaGVyUGFyYW1zID0gQ3J5cHRvSlMuZm9ybWF0LkhleC5wYXJzZShoZXhTdHJpbmcpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHBhcnNlOiBmdW5jdGlvbiAoaW5wdXQpIHtcblx0ICAgICAgICAgICAgdmFyIGNpcGhlcnRleHQgPSBIZXgucGFyc2UoaW5wdXQpO1xuXHQgICAgICAgICAgICByZXR1cm4gQ2lwaGVyUGFyYW1zLmNyZWF0ZSh7IGNpcGhlcnRleHQ6IGNpcGhlcnRleHQgfSk7XG5cdCAgICAgICAgfVxuXHQgICAgfTtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5mb3JtYXQuSGV4O1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSkge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfbGliID0gQy5saWI7XG5cdCAgICB2YXIgQmFzZSA9IENfbGliLkJhc2U7XG5cdCAgICB2YXIgQ19lbmMgPSBDLmVuYztcblx0ICAgIHZhciBVdGY4ID0gQ19lbmMuVXRmODtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cblx0ICAgIC8qKlxuXHQgICAgICogSE1BQyBhbGdvcml0aG0uXG5cdCAgICAgKi9cblx0ICAgIHZhciBITUFDID0gQ19hbGdvLkhNQUMgPSBCYXNlLmV4dGVuZCh7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogSW5pdGlhbGl6ZXMgYSBuZXdseSBjcmVhdGVkIEhNQUMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge0hhc2hlcn0gaGFzaGVyIFRoZSBoYXNoIGFsZ29yaXRobSB0byB1c2UuXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBrZXkgVGhlIHNlY3JldCBrZXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBobWFjSGFzaGVyID0gQ3J5cHRvSlMuYWxnby5ITUFDLmNyZWF0ZShDcnlwdG9KUy5hbGdvLlNIQTI1Niwga2V5KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBpbml0OiBmdW5jdGlvbiAoaGFzaGVyLCBrZXkpIHtcblx0ICAgICAgICAgICAgLy8gSW5pdCBoYXNoZXJcblx0ICAgICAgICAgICAgaGFzaGVyID0gdGhpcy5faGFzaGVyID0gbmV3IGhhc2hlci5pbml0KCk7XG5cblx0ICAgICAgICAgICAgLy8gQ29udmVydCBzdHJpbmcgdG8gV29yZEFycmF5LCBlbHNlIGFzc3VtZSBXb3JkQXJyYXkgYWxyZWFkeVxuXHQgICAgICAgICAgICBpZiAodHlwZW9mIGtleSA9PSAnc3RyaW5nJykge1xuXHQgICAgICAgICAgICAgICAga2V5ID0gVXRmOC5wYXJzZShrZXkpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBoYXNoZXJCbG9ja1NpemUgPSBoYXNoZXIuYmxvY2tTaXplO1xuXHQgICAgICAgICAgICB2YXIgaGFzaGVyQmxvY2tTaXplQnl0ZXMgPSBoYXNoZXJCbG9ja1NpemUgKiA0O1xuXG5cdCAgICAgICAgICAgIC8vIEFsbG93IGFyYml0cmFyeSBsZW5ndGgga2V5c1xuXHQgICAgICAgICAgICBpZiAoa2V5LnNpZ0J5dGVzID4gaGFzaGVyQmxvY2tTaXplQnl0ZXMpIHtcblx0ICAgICAgICAgICAgICAgIGtleSA9IGhhc2hlci5maW5hbGl6ZShrZXkpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gQ2xhbXAgZXhjZXNzIGJpdHNcblx0ICAgICAgICAgICAga2V5LmNsYW1wKCk7XG5cblx0ICAgICAgICAgICAgLy8gQ2xvbmUga2V5IGZvciBpbm5lciBhbmQgb3V0ZXIgcGFkc1xuXHQgICAgICAgICAgICB2YXIgb0tleSA9IHRoaXMuX29LZXkgPSBrZXkuY2xvbmUoKTtcblx0ICAgICAgICAgICAgdmFyIGlLZXkgPSB0aGlzLl9pS2V5ID0ga2V5LmNsb25lKCk7XG5cblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBvS2V5V29yZHMgPSBvS2V5LndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgaUtleVdvcmRzID0gaUtleS53b3JkcztcblxuXHQgICAgICAgICAgICAvLyBYT1Iga2V5cyB3aXRoIHBhZCBjb25zdGFudHNcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoYXNoZXJCbG9ja1NpemU7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgb0tleVdvcmRzW2ldIF49IDB4NWM1YzVjNWM7XG5cdCAgICAgICAgICAgICAgICBpS2V5V29yZHNbaV0gXj0gMHgzNjM2MzYzNjtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBvS2V5LnNpZ0J5dGVzID0gaUtleS5zaWdCeXRlcyA9IGhhc2hlckJsb2NrU2l6ZUJ5dGVzO1xuXG5cdCAgICAgICAgICAgIC8vIFNldCBpbml0aWFsIHZhbHVlc1xuXHQgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIFJlc2V0cyB0aGlzIEhNQUMgdG8gaXRzIGluaXRpYWwgc3RhdGUuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIGhtYWNIYXNoZXIucmVzZXQoKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICByZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICB2YXIgaGFzaGVyID0gdGhpcy5faGFzaGVyO1xuXG5cdCAgICAgICAgICAgIC8vIFJlc2V0XG5cdCAgICAgICAgICAgIGhhc2hlci5yZXNldCgpO1xuXHQgICAgICAgICAgICBoYXNoZXIudXBkYXRlKHRoaXMuX2lLZXkpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBVcGRhdGVzIHRoaXMgSE1BQyB3aXRoIGEgbWVzc2FnZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZVVwZGF0ZSBUaGUgbWVzc2FnZSB0byBhcHBlbmQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtITUFDfSBUaGlzIEhNQUMgaW5zdGFuY2UuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIGhtYWNIYXNoZXIudXBkYXRlKCdtZXNzYWdlJyk7XG5cdCAgICAgICAgICogICAgIGhtYWNIYXNoZXIudXBkYXRlKHdvcmRBcnJheSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgdXBkYXRlOiBmdW5jdGlvbiAobWVzc2FnZVVwZGF0ZSkge1xuXHQgICAgICAgICAgICB0aGlzLl9oYXNoZXIudXBkYXRlKG1lc3NhZ2VVcGRhdGUpO1xuXG5cdCAgICAgICAgICAgIC8vIENoYWluYWJsZVxuXHQgICAgICAgICAgICByZXR1cm4gdGhpcztcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogRmluYWxpemVzIHRoZSBITUFDIGNvbXB1dGF0aW9uLlxuXHQgICAgICAgICAqIE5vdGUgdGhhdCB0aGUgZmluYWxpemUgb3BlcmF0aW9uIGlzIGVmZmVjdGl2ZWx5IGEgZGVzdHJ1Y3RpdmUsIHJlYWQtb25jZSBvcGVyYXRpb24uXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2VVcGRhdGUgKE9wdGlvbmFsKSBBIGZpbmFsIG1lc3NhZ2UgdXBkYXRlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgSE1BQy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGhtYWMgPSBobWFjSGFzaGVyLmZpbmFsaXplKCk7XG5cdCAgICAgICAgICogICAgIHZhciBobWFjID0gaG1hY0hhc2hlci5maW5hbGl6ZSgnbWVzc2FnZScpO1xuXHQgICAgICAgICAqICAgICB2YXIgaG1hYyA9IGhtYWNIYXNoZXIuZmluYWxpemUod29yZEFycmF5KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBmaW5hbGl6ZTogZnVuY3Rpb24gKG1lc3NhZ2VVcGRhdGUpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIGhhc2hlciA9IHRoaXMuX2hhc2hlcjtcblxuXHQgICAgICAgICAgICAvLyBDb21wdXRlIEhNQUNcblx0ICAgICAgICAgICAgdmFyIGlubmVySGFzaCA9IGhhc2hlci5maW5hbGl6ZShtZXNzYWdlVXBkYXRlKTtcblx0ICAgICAgICAgICAgaGFzaGVyLnJlc2V0KCk7XG5cdCAgICAgICAgICAgIHZhciBobWFjID0gaGFzaGVyLmZpbmFsaXplKHRoaXMuX29LZXkuY2xvbmUoKS5jb25jYXQoaW5uZXJIYXNoKSk7XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGhtYWM7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cdH0oKSk7XG5cblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi94NjQtY29yZVwiKSwgcmVxdWlyZShcIi4vbGliLXR5cGVkYXJyYXlzXCIpLCByZXF1aXJlKFwiLi9lbmMtdXRmMTZcIiksIHJlcXVpcmUoXCIuL2VuYy1iYXNlNjRcIiksIHJlcXVpcmUoXCIuL2VuYy1iYXNlNjR1cmxcIiksIHJlcXVpcmUoXCIuL21kNVwiKSwgcmVxdWlyZShcIi4vc2hhMVwiKSwgcmVxdWlyZShcIi4vc2hhMjU2XCIpLCByZXF1aXJlKFwiLi9zaGEyMjRcIiksIHJlcXVpcmUoXCIuL3NoYTUxMlwiKSwgcmVxdWlyZShcIi4vc2hhMzg0XCIpLCByZXF1aXJlKFwiLi9zaGEzXCIpLCByZXF1aXJlKFwiLi9yaXBlbWQxNjBcIiksIHJlcXVpcmUoXCIuL2htYWNcIiksIHJlcXVpcmUoXCIuL3Bia2RmMlwiKSwgcmVxdWlyZShcIi4vZXZwa2RmXCIpLCByZXF1aXJlKFwiLi9jaXBoZXItY29yZVwiKSwgcmVxdWlyZShcIi4vbW9kZS1jZmJcIiksIHJlcXVpcmUoXCIuL21vZGUtY3RyXCIpLCByZXF1aXJlKFwiLi9tb2RlLWN0ci1nbGFkbWFuXCIpLCByZXF1aXJlKFwiLi9tb2RlLW9mYlwiKSwgcmVxdWlyZShcIi4vbW9kZS1lY2JcIiksIHJlcXVpcmUoXCIuL3BhZC1hbnNpeDkyM1wiKSwgcmVxdWlyZShcIi4vcGFkLWlzbzEwMTI2XCIpLCByZXF1aXJlKFwiLi9wYWQtaXNvOTc5NzFcIiksIHJlcXVpcmUoXCIuL3BhZC16ZXJvcGFkZGluZ1wiKSwgcmVxdWlyZShcIi4vcGFkLW5vcGFkZGluZ1wiKSwgcmVxdWlyZShcIi4vZm9ybWF0LWhleFwiKSwgcmVxdWlyZShcIi4vYWVzXCIpLCByZXF1aXJlKFwiLi90cmlwbGVkZXNcIiksIHJlcXVpcmUoXCIuL3JjNFwiKSwgcmVxdWlyZShcIi4vcmFiYml0XCIpLCByZXF1aXJlKFwiLi9yYWJiaXQtbGVnYWN5XCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL3g2NC1jb3JlXCIsIFwiLi9saWItdHlwZWRhcnJheXNcIiwgXCIuL2VuYy11dGYxNlwiLCBcIi4vZW5jLWJhc2U2NFwiLCBcIi4vZW5jLWJhc2U2NHVybFwiLCBcIi4vbWQ1XCIsIFwiLi9zaGExXCIsIFwiLi9zaGEyNTZcIiwgXCIuL3NoYTIyNFwiLCBcIi4vc2hhNTEyXCIsIFwiLi9zaGEzODRcIiwgXCIuL3NoYTNcIiwgXCIuL3JpcGVtZDE2MFwiLCBcIi4vaG1hY1wiLCBcIi4vcGJrZGYyXCIsIFwiLi9ldnBrZGZcIiwgXCIuL2NpcGhlci1jb3JlXCIsIFwiLi9tb2RlLWNmYlwiLCBcIi4vbW9kZS1jdHJcIiwgXCIuL21vZGUtY3RyLWdsYWRtYW5cIiwgXCIuL21vZGUtb2ZiXCIsIFwiLi9tb2RlLWVjYlwiLCBcIi4vcGFkLWFuc2l4OTIzXCIsIFwiLi9wYWQtaXNvMTAxMjZcIiwgXCIuL3BhZC1pc285Nzk3MVwiLCBcIi4vcGFkLXplcm9wYWRkaW5nXCIsIFwiLi9wYWQtbm9wYWRkaW5nXCIsIFwiLi9mb3JtYXQtaGV4XCIsIFwiLi9hZXNcIiwgXCIuL3RyaXBsZWRlc1wiLCBcIi4vcmM0XCIsIFwiLi9yYWJiaXRcIiwgXCIuL3JhYmJpdC1sZWdhY3lcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRyb290LkNyeXB0b0pTID0gZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHRyZXR1cm4gQ3J5cHRvSlM7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5KSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAoKSB7XG5cdCAgICAvLyBDaGVjayBpZiB0eXBlZCBhcnJheXMgYXJlIHN1cHBvcnRlZFxuXHQgICAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBXb3JkQXJyYXkgPSBDX2xpYi5Xb3JkQXJyYXk7XG5cblx0ICAgIC8vIFJlZmVyZW5jZSBvcmlnaW5hbCBpbml0XG5cdCAgICB2YXIgc3VwZXJJbml0ID0gV29yZEFycmF5LmluaXQ7XG5cblx0ICAgIC8vIEF1Z21lbnQgV29yZEFycmF5LmluaXQgdG8gaGFuZGxlIHR5cGVkIGFycmF5c1xuXHQgICAgdmFyIHN1YkluaXQgPSBXb3JkQXJyYXkuaW5pdCA9IGZ1bmN0aW9uICh0eXBlZEFycmF5KSB7XG5cdCAgICAgICAgLy8gQ29udmVydCBidWZmZXJzIHRvIHVpbnQ4XG5cdCAgICAgICAgaWYgKHR5cGVkQXJyYXkgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xuXHQgICAgICAgICAgICB0eXBlZEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkodHlwZWRBcnJheSk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgLy8gQ29udmVydCBvdGhlciBhcnJheSB2aWV3cyB0byB1aW50OFxuXHQgICAgICAgIGlmIChcblx0ICAgICAgICAgICAgdHlwZWRBcnJheSBpbnN0YW5jZW9mIEludDhBcnJheSB8fFxuXHQgICAgICAgICAgICAodHlwZW9mIFVpbnQ4Q2xhbXBlZEFycmF5ICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVkQXJyYXkgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheSkgfHxcblx0ICAgICAgICAgICAgdHlwZWRBcnJheSBpbnN0YW5jZW9mIEludDE2QXJyYXkgfHxcblx0ICAgICAgICAgICAgdHlwZWRBcnJheSBpbnN0YW5jZW9mIFVpbnQxNkFycmF5IHx8XG5cdCAgICAgICAgICAgIHR5cGVkQXJyYXkgaW5zdGFuY2VvZiBJbnQzMkFycmF5IHx8XG5cdCAgICAgICAgICAgIHR5cGVkQXJyYXkgaW5zdGFuY2VvZiBVaW50MzJBcnJheSB8fFxuXHQgICAgICAgICAgICB0eXBlZEFycmF5IGluc3RhbmNlb2YgRmxvYXQzMkFycmF5IHx8XG5cdCAgICAgICAgICAgIHR5cGVkQXJyYXkgaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXlcblx0ICAgICAgICApIHtcblx0ICAgICAgICAgICAgdHlwZWRBcnJheSA9IG5ldyBVaW50OEFycmF5KHR5cGVkQXJyYXkuYnVmZmVyLCB0eXBlZEFycmF5LmJ5dGVPZmZzZXQsIHR5cGVkQXJyYXkuYnl0ZUxlbmd0aCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgLy8gSGFuZGxlIFVpbnQ4QXJyYXlcblx0ICAgICAgICBpZiAodHlwZWRBcnJheSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIHR5cGVkQXJyYXlCeXRlTGVuZ3RoID0gdHlwZWRBcnJheS5ieXRlTGVuZ3RoO1xuXG5cdCAgICAgICAgICAgIC8vIEV4dHJhY3QgYnl0ZXNcblx0ICAgICAgICAgICAgdmFyIHdvcmRzID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHlwZWRBcnJheUJ5dGVMZW5ndGg7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgd29yZHNbaSA+Pj4gMl0gfD0gdHlwZWRBcnJheVtpXSA8PCAoMjQgLSAoaSAlIDQpICogOCk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBJbml0aWFsaXplIHRoaXMgd29yZCBhcnJheVxuXHQgICAgICAgICAgICBzdXBlckluaXQuY2FsbCh0aGlzLCB3b3JkcywgdHlwZWRBcnJheUJ5dGVMZW5ndGgpO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgIC8vIEVsc2UgY2FsbCBub3JtYWwgaW5pdFxuXHQgICAgICAgICAgICBzdXBlckluaXQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0ICAgICAgICB9XG5cdCAgICB9O1xuXG5cdCAgICBzdWJJbml0LnByb3RvdHlwZSA9IFdvcmRBcnJheTtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5saWIuV29yZEFycmF5O1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSkge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKE1hdGgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIFdvcmRBcnJheSA9IENfbGliLldvcmRBcnJheTtcblx0ICAgIHZhciBIYXNoZXIgPSBDX2xpYi5IYXNoZXI7XG5cdCAgICB2YXIgQ19hbGdvID0gQy5hbGdvO1xuXG5cdCAgICAvLyBDb25zdGFudHMgdGFibGVcblx0ICAgIHZhciBUID0gW107XG5cblx0ICAgIC8vIENvbXB1dGUgY29uc3RhbnRzXG5cdCAgICAoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjQ7IGkrKykge1xuXHQgICAgICAgICAgICBUW2ldID0gKE1hdGguYWJzKE1hdGguc2luKGkgKyAxKSkgKiAweDEwMDAwMDAwMCkgfCAwO1xuXHQgICAgICAgIH1cblx0ICAgIH0oKSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogTUQ1IGhhc2ggYWxnb3JpdGhtLlxuXHQgICAgICovXG5cdCAgICB2YXIgTUQ1ID0gQ19hbGdvLk1ENSA9IEhhc2hlci5leHRlbmQoe1xuXHQgICAgICAgIF9kb1Jlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHRoaXMuX2hhc2ggPSBuZXcgV29yZEFycmF5LmluaXQoW1xuXHQgICAgICAgICAgICAgICAgMHg2NzQ1MjMwMSwgMHhlZmNkYWI4OSxcblx0ICAgICAgICAgICAgICAgIDB4OThiYWRjZmUsIDB4MTAzMjU0NzZcblx0ICAgICAgICAgICAgXSk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb1Byb2Nlc3NCbG9jazogZnVuY3Rpb24gKE0sIG9mZnNldCkge1xuXHQgICAgICAgICAgICAvLyBTd2FwIGVuZGlhblxuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICAgICAgdmFyIG9mZnNldF9pID0gb2Zmc2V0ICsgaTtcblx0ICAgICAgICAgICAgICAgIHZhciBNX29mZnNldF9pID0gTVtvZmZzZXRfaV07XG5cblx0ICAgICAgICAgICAgICAgIE1bb2Zmc2V0X2ldID0gKFxuXHQgICAgICAgICAgICAgICAgICAgICgoKE1fb2Zmc2V0X2kgPDwgOCkgIHwgKE1fb2Zmc2V0X2kgPj4+IDI0KSkgJiAweDAwZmYwMGZmKSB8XG5cdCAgICAgICAgICAgICAgICAgICAgKCgoTV9vZmZzZXRfaSA8PCAyNCkgfCAoTV9vZmZzZXRfaSA+Pj4gOCkpICAmIDB4ZmYwMGZmMDApXG5cdCAgICAgICAgICAgICAgICApO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBIID0gdGhpcy5faGFzaC53b3JkcztcblxuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfMCAgPSBNW29mZnNldCArIDBdO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfMSAgPSBNW29mZnNldCArIDFdO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfMiAgPSBNW29mZnNldCArIDJdO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfMyAgPSBNW29mZnNldCArIDNdO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfNCAgPSBNW29mZnNldCArIDRdO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfNSAgPSBNW29mZnNldCArIDVdO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfNiAgPSBNW29mZnNldCArIDZdO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfNyAgPSBNW29mZnNldCArIDddO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfOCAgPSBNW29mZnNldCArIDhdO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfOSAgPSBNW29mZnNldCArIDldO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfMTAgPSBNW29mZnNldCArIDEwXTtcblx0ICAgICAgICAgICAgdmFyIE1fb2Zmc2V0XzExID0gTVtvZmZzZXQgKyAxMV07XG5cdCAgICAgICAgICAgIHZhciBNX29mZnNldF8xMiA9IE1bb2Zmc2V0ICsgMTJdO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfMTMgPSBNW29mZnNldCArIDEzXTtcblx0ICAgICAgICAgICAgdmFyIE1fb2Zmc2V0XzE0ID0gTVtvZmZzZXQgKyAxNF07XG5cdCAgICAgICAgICAgIHZhciBNX29mZnNldF8xNSA9IE1bb2Zmc2V0ICsgMTVdO1xuXG5cdCAgICAgICAgICAgIC8vIFdvcmtpbmcgdmFyaWFsYmVzXG5cdCAgICAgICAgICAgIHZhciBhID0gSFswXTtcblx0ICAgICAgICAgICAgdmFyIGIgPSBIWzFdO1xuXHQgICAgICAgICAgICB2YXIgYyA9IEhbMl07XG5cdCAgICAgICAgICAgIHZhciBkID0gSFszXTtcblxuXHQgICAgICAgICAgICAvLyBDb21wdXRhdGlvblxuXHQgICAgICAgICAgICBhID0gRkYoYSwgYiwgYywgZCwgTV9vZmZzZXRfMCwgIDcsICBUWzBdKTtcblx0ICAgICAgICAgICAgZCA9IEZGKGQsIGEsIGIsIGMsIE1fb2Zmc2V0XzEsICAxMiwgVFsxXSk7XG5cdCAgICAgICAgICAgIGMgPSBGRihjLCBkLCBhLCBiLCBNX29mZnNldF8yLCAgMTcsIFRbMl0pO1xuXHQgICAgICAgICAgICBiID0gRkYoYiwgYywgZCwgYSwgTV9vZmZzZXRfMywgIDIyLCBUWzNdKTtcblx0ICAgICAgICAgICAgYSA9IEZGKGEsIGIsIGMsIGQsIE1fb2Zmc2V0XzQsICA3LCAgVFs0XSk7XG5cdCAgICAgICAgICAgIGQgPSBGRihkLCBhLCBiLCBjLCBNX29mZnNldF81LCAgMTIsIFRbNV0pO1xuXHQgICAgICAgICAgICBjID0gRkYoYywgZCwgYSwgYiwgTV9vZmZzZXRfNiwgIDE3LCBUWzZdKTtcblx0ICAgICAgICAgICAgYiA9IEZGKGIsIGMsIGQsIGEsIE1fb2Zmc2V0XzcsICAyMiwgVFs3XSk7XG5cdCAgICAgICAgICAgIGEgPSBGRihhLCBiLCBjLCBkLCBNX29mZnNldF84LCAgNywgIFRbOF0pO1xuXHQgICAgICAgICAgICBkID0gRkYoZCwgYSwgYiwgYywgTV9vZmZzZXRfOSwgIDEyLCBUWzldKTtcblx0ICAgICAgICAgICAgYyA9IEZGKGMsIGQsIGEsIGIsIE1fb2Zmc2V0XzEwLCAxNywgVFsxMF0pO1xuXHQgICAgICAgICAgICBiID0gRkYoYiwgYywgZCwgYSwgTV9vZmZzZXRfMTEsIDIyLCBUWzExXSk7XG5cdCAgICAgICAgICAgIGEgPSBGRihhLCBiLCBjLCBkLCBNX29mZnNldF8xMiwgNywgIFRbMTJdKTtcblx0ICAgICAgICAgICAgZCA9IEZGKGQsIGEsIGIsIGMsIE1fb2Zmc2V0XzEzLCAxMiwgVFsxM10pO1xuXHQgICAgICAgICAgICBjID0gRkYoYywgZCwgYSwgYiwgTV9vZmZzZXRfMTQsIDE3LCBUWzE0XSk7XG5cdCAgICAgICAgICAgIGIgPSBGRihiLCBjLCBkLCBhLCBNX29mZnNldF8xNSwgMjIsIFRbMTVdKTtcblxuXHQgICAgICAgICAgICBhID0gR0coYSwgYiwgYywgZCwgTV9vZmZzZXRfMSwgIDUsICBUWzE2XSk7XG5cdCAgICAgICAgICAgIGQgPSBHRyhkLCBhLCBiLCBjLCBNX29mZnNldF82LCAgOSwgIFRbMTddKTtcblx0ICAgICAgICAgICAgYyA9IEdHKGMsIGQsIGEsIGIsIE1fb2Zmc2V0XzExLCAxNCwgVFsxOF0pO1xuXHQgICAgICAgICAgICBiID0gR0coYiwgYywgZCwgYSwgTV9vZmZzZXRfMCwgIDIwLCBUWzE5XSk7XG5cdCAgICAgICAgICAgIGEgPSBHRyhhLCBiLCBjLCBkLCBNX29mZnNldF81LCAgNSwgIFRbMjBdKTtcblx0ICAgICAgICAgICAgZCA9IEdHKGQsIGEsIGIsIGMsIE1fb2Zmc2V0XzEwLCA5LCAgVFsyMV0pO1xuXHQgICAgICAgICAgICBjID0gR0coYywgZCwgYSwgYiwgTV9vZmZzZXRfMTUsIDE0LCBUWzIyXSk7XG5cdCAgICAgICAgICAgIGIgPSBHRyhiLCBjLCBkLCBhLCBNX29mZnNldF80LCAgMjAsIFRbMjNdKTtcblx0ICAgICAgICAgICAgYSA9IEdHKGEsIGIsIGMsIGQsIE1fb2Zmc2V0XzksICA1LCAgVFsyNF0pO1xuXHQgICAgICAgICAgICBkID0gR0coZCwgYSwgYiwgYywgTV9vZmZzZXRfMTQsIDksICBUWzI1XSk7XG5cdCAgICAgICAgICAgIGMgPSBHRyhjLCBkLCBhLCBiLCBNX29mZnNldF8zLCAgMTQsIFRbMjZdKTtcblx0ICAgICAgICAgICAgYiA9IEdHKGIsIGMsIGQsIGEsIE1fb2Zmc2V0XzgsICAyMCwgVFsyN10pO1xuXHQgICAgICAgICAgICBhID0gR0coYSwgYiwgYywgZCwgTV9vZmZzZXRfMTMsIDUsICBUWzI4XSk7XG5cdCAgICAgICAgICAgIGQgPSBHRyhkLCBhLCBiLCBjLCBNX29mZnNldF8yLCAgOSwgIFRbMjldKTtcblx0ICAgICAgICAgICAgYyA9IEdHKGMsIGQsIGEsIGIsIE1fb2Zmc2V0XzcsICAxNCwgVFszMF0pO1xuXHQgICAgICAgICAgICBiID0gR0coYiwgYywgZCwgYSwgTV9vZmZzZXRfMTIsIDIwLCBUWzMxXSk7XG5cblx0ICAgICAgICAgICAgYSA9IEhIKGEsIGIsIGMsIGQsIE1fb2Zmc2V0XzUsICA0LCAgVFszMl0pO1xuXHQgICAgICAgICAgICBkID0gSEgoZCwgYSwgYiwgYywgTV9vZmZzZXRfOCwgIDExLCBUWzMzXSk7XG5cdCAgICAgICAgICAgIGMgPSBISChjLCBkLCBhLCBiLCBNX29mZnNldF8xMSwgMTYsIFRbMzRdKTtcblx0ICAgICAgICAgICAgYiA9IEhIKGIsIGMsIGQsIGEsIE1fb2Zmc2V0XzE0LCAyMywgVFszNV0pO1xuXHQgICAgICAgICAgICBhID0gSEgoYSwgYiwgYywgZCwgTV9vZmZzZXRfMSwgIDQsICBUWzM2XSk7XG5cdCAgICAgICAgICAgIGQgPSBISChkLCBhLCBiLCBjLCBNX29mZnNldF80LCAgMTEsIFRbMzddKTtcblx0ICAgICAgICAgICAgYyA9IEhIKGMsIGQsIGEsIGIsIE1fb2Zmc2V0XzcsICAxNiwgVFszOF0pO1xuXHQgICAgICAgICAgICBiID0gSEgoYiwgYywgZCwgYSwgTV9vZmZzZXRfMTAsIDIzLCBUWzM5XSk7XG5cdCAgICAgICAgICAgIGEgPSBISChhLCBiLCBjLCBkLCBNX29mZnNldF8xMywgNCwgIFRbNDBdKTtcblx0ICAgICAgICAgICAgZCA9IEhIKGQsIGEsIGIsIGMsIE1fb2Zmc2V0XzAsICAxMSwgVFs0MV0pO1xuXHQgICAgICAgICAgICBjID0gSEgoYywgZCwgYSwgYiwgTV9vZmZzZXRfMywgIDE2LCBUWzQyXSk7XG5cdCAgICAgICAgICAgIGIgPSBISChiLCBjLCBkLCBhLCBNX29mZnNldF82LCAgMjMsIFRbNDNdKTtcblx0ICAgICAgICAgICAgYSA9IEhIKGEsIGIsIGMsIGQsIE1fb2Zmc2V0XzksICA0LCAgVFs0NF0pO1xuXHQgICAgICAgICAgICBkID0gSEgoZCwgYSwgYiwgYywgTV9vZmZzZXRfMTIsIDExLCBUWzQ1XSk7XG5cdCAgICAgICAgICAgIGMgPSBISChjLCBkLCBhLCBiLCBNX29mZnNldF8xNSwgMTYsIFRbNDZdKTtcblx0ICAgICAgICAgICAgYiA9IEhIKGIsIGMsIGQsIGEsIE1fb2Zmc2V0XzIsICAyMywgVFs0N10pO1xuXG5cdCAgICAgICAgICAgIGEgPSBJSShhLCBiLCBjLCBkLCBNX29mZnNldF8wLCAgNiwgIFRbNDhdKTtcblx0ICAgICAgICAgICAgZCA9IElJKGQsIGEsIGIsIGMsIE1fb2Zmc2V0XzcsICAxMCwgVFs0OV0pO1xuXHQgICAgICAgICAgICBjID0gSUkoYywgZCwgYSwgYiwgTV9vZmZzZXRfMTQsIDE1LCBUWzUwXSk7XG5cdCAgICAgICAgICAgIGIgPSBJSShiLCBjLCBkLCBhLCBNX29mZnNldF81LCAgMjEsIFRbNTFdKTtcblx0ICAgICAgICAgICAgYSA9IElJKGEsIGIsIGMsIGQsIE1fb2Zmc2V0XzEyLCA2LCAgVFs1Ml0pO1xuXHQgICAgICAgICAgICBkID0gSUkoZCwgYSwgYiwgYywgTV9vZmZzZXRfMywgIDEwLCBUWzUzXSk7XG5cdCAgICAgICAgICAgIGMgPSBJSShjLCBkLCBhLCBiLCBNX29mZnNldF8xMCwgMTUsIFRbNTRdKTtcblx0ICAgICAgICAgICAgYiA9IElJKGIsIGMsIGQsIGEsIE1fb2Zmc2V0XzEsICAyMSwgVFs1NV0pO1xuXHQgICAgICAgICAgICBhID0gSUkoYSwgYiwgYywgZCwgTV9vZmZzZXRfOCwgIDYsICBUWzU2XSk7XG5cdCAgICAgICAgICAgIGQgPSBJSShkLCBhLCBiLCBjLCBNX29mZnNldF8xNSwgMTAsIFRbNTddKTtcblx0ICAgICAgICAgICAgYyA9IElJKGMsIGQsIGEsIGIsIE1fb2Zmc2V0XzYsICAxNSwgVFs1OF0pO1xuXHQgICAgICAgICAgICBiID0gSUkoYiwgYywgZCwgYSwgTV9vZmZzZXRfMTMsIDIxLCBUWzU5XSk7XG5cdCAgICAgICAgICAgIGEgPSBJSShhLCBiLCBjLCBkLCBNX29mZnNldF80LCAgNiwgIFRbNjBdKTtcblx0ICAgICAgICAgICAgZCA9IElJKGQsIGEsIGIsIGMsIE1fb2Zmc2V0XzExLCAxMCwgVFs2MV0pO1xuXHQgICAgICAgICAgICBjID0gSUkoYywgZCwgYSwgYiwgTV9vZmZzZXRfMiwgIDE1LCBUWzYyXSk7XG5cdCAgICAgICAgICAgIGIgPSBJSShiLCBjLCBkLCBhLCBNX29mZnNldF85LCAgMjEsIFRbNjNdKTtcblxuXHQgICAgICAgICAgICAvLyBJbnRlcm1lZGlhdGUgaGFzaCB2YWx1ZVxuXHQgICAgICAgICAgICBIWzBdID0gKEhbMF0gKyBhKSB8IDA7XG5cdCAgICAgICAgICAgIEhbMV0gPSAoSFsxXSArIGIpIHwgMDtcblx0ICAgICAgICAgICAgSFsyXSA9IChIWzJdICsgYykgfCAwO1xuXHQgICAgICAgICAgICBIWzNdID0gKEhbM10gKyBkKSB8IDA7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb0ZpbmFsaXplOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgZGF0YSA9IHRoaXMuX2RhdGE7XG5cdCAgICAgICAgICAgIHZhciBkYXRhV29yZHMgPSBkYXRhLndvcmRzO1xuXG5cdCAgICAgICAgICAgIHZhciBuQml0c1RvdGFsID0gdGhpcy5fbkRhdGFCeXRlcyAqIDg7XG5cdCAgICAgICAgICAgIHZhciBuQml0c0xlZnQgPSBkYXRhLnNpZ0J5dGVzICogODtcblxuXHQgICAgICAgICAgICAvLyBBZGQgcGFkZGluZ1xuXHQgICAgICAgICAgICBkYXRhV29yZHNbbkJpdHNMZWZ0ID4+PiA1XSB8PSAweDgwIDw8ICgyNCAtIG5CaXRzTGVmdCAlIDMyKTtcblxuXHQgICAgICAgICAgICB2YXIgbkJpdHNUb3RhbEggPSBNYXRoLmZsb29yKG5CaXRzVG90YWwgLyAweDEwMDAwMDAwMCk7XG5cdCAgICAgICAgICAgIHZhciBuQml0c1RvdGFsTCA9IG5CaXRzVG90YWw7XG5cdCAgICAgICAgICAgIGRhdGFXb3Jkc1soKChuQml0c0xlZnQgKyA2NCkgPj4+IDkpIDw8IDQpICsgMTVdID0gKFxuXHQgICAgICAgICAgICAgICAgKCgobkJpdHNUb3RhbEggPDwgOCkgIHwgKG5CaXRzVG90YWxIID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuXHQgICAgICAgICAgICAgICAgKCgobkJpdHNUb3RhbEggPDwgMjQpIHwgKG5CaXRzVG90YWxIID4+PiA4KSkgICYgMHhmZjAwZmYwMClcblx0ICAgICAgICAgICAgKTtcblx0ICAgICAgICAgICAgZGF0YVdvcmRzWygoKG5CaXRzTGVmdCArIDY0KSA+Pj4gOSkgPDwgNCkgKyAxNF0gPSAoXG5cdCAgICAgICAgICAgICAgICAoKChuQml0c1RvdGFsTCA8PCA4KSAgfCAobkJpdHNUb3RhbEwgPj4+IDI0KSkgJiAweDAwZmYwMGZmKSB8XG5cdCAgICAgICAgICAgICAgICAoKChuQml0c1RvdGFsTCA8PCAyNCkgfCAobkJpdHNUb3RhbEwgPj4+IDgpKSAgJiAweGZmMDBmZjAwKVxuXHQgICAgICAgICAgICApO1xuXG5cdCAgICAgICAgICAgIGRhdGEuc2lnQnl0ZXMgPSAoZGF0YVdvcmRzLmxlbmd0aCArIDEpICogNDtcblxuXHQgICAgICAgICAgICAvLyBIYXNoIGZpbmFsIGJsb2Nrc1xuXHQgICAgICAgICAgICB0aGlzLl9wcm9jZXNzKCk7XG5cblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBoYXNoID0gdGhpcy5faGFzaDtcblx0ICAgICAgICAgICAgdmFyIEggPSBoYXNoLndvcmRzO1xuXG5cdCAgICAgICAgICAgIC8vIFN3YXAgZW5kaWFuXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICAgICAgdmFyIEhfaSA9IEhbaV07XG5cblx0ICAgICAgICAgICAgICAgIEhbaV0gPSAoKChIX2kgPDwgOCkgIHwgKEhfaSA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcblx0ICAgICAgICAgICAgICAgICAgICAgICAoKChIX2kgPDwgMjQpIHwgKEhfaSA+Pj4gOCkpICAmIDB4ZmYwMGZmMDApO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gUmV0dXJuIGZpbmFsIGNvbXB1dGVkIGhhc2hcblx0ICAgICAgICAgICAgcmV0dXJuIGhhc2g7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGNsb25lOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHZhciBjbG9uZSA9IEhhc2hlci5jbG9uZS5jYWxsKHRoaXMpO1xuXHQgICAgICAgICAgICBjbG9uZS5faGFzaCA9IHRoaXMuX2hhc2guY2xvbmUoKTtcblxuXHQgICAgICAgICAgICByZXR1cm4gY2xvbmU7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIGZ1bmN0aW9uIEZGKGEsIGIsIGMsIGQsIHgsIHMsIHQpIHtcblx0ICAgICAgICB2YXIgbiA9IGEgKyAoKGIgJiBjKSB8ICh+YiAmIGQpKSArIHggKyB0O1xuXHQgICAgICAgIHJldHVybiAoKG4gPDwgcykgfCAobiA+Pj4gKDMyIC0gcykpKSArIGI7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIEdHKGEsIGIsIGMsIGQsIHgsIHMsIHQpIHtcblx0ICAgICAgICB2YXIgbiA9IGEgKyAoKGIgJiBkKSB8IChjICYgfmQpKSArIHggKyB0O1xuXHQgICAgICAgIHJldHVybiAoKG4gPDwgcykgfCAobiA+Pj4gKDMyIC0gcykpKSArIGI7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIEhIKGEsIGIsIGMsIGQsIHgsIHMsIHQpIHtcblx0ICAgICAgICB2YXIgbiA9IGEgKyAoYiBeIGMgXiBkKSArIHggKyB0O1xuXHQgICAgICAgIHJldHVybiAoKG4gPDwgcykgfCAobiA+Pj4gKDMyIC0gcykpKSArIGI7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIElJKGEsIGIsIGMsIGQsIHgsIHMsIHQpIHtcblx0ICAgICAgICB2YXIgbiA9IGEgKyAoYyBeIChiIHwgfmQpKSArIHggKyB0O1xuXHQgICAgICAgIHJldHVybiAoKG4gPDwgcykgfCAobiA+Pj4gKDMyIC0gcykpKSArIGI7XG5cdCAgICB9XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb24gdG8gdGhlIGhhc2hlcidzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGhhc2guXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgaGFzaC5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGhhc2ggPSBDcnlwdG9KUy5NRDUoJ21lc3NhZ2UnKTtcblx0ICAgICAqICAgICB2YXIgaGFzaCA9IENyeXB0b0pTLk1ENSh3b3JkQXJyYXkpO1xuXHQgICAgICovXG5cdCAgICBDLk1ENSA9IEhhc2hlci5fY3JlYXRlSGVscGVyKE1ENSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb24gdG8gdGhlIEhNQUMncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBoYXNoLlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBrZXkgVGhlIHNlY3JldCBrZXkuXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgSE1BQy5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGhtYWMgPSBDcnlwdG9KUy5IbWFjTUQ1KG1lc3NhZ2UsIGtleSk7XG5cdCAgICAgKi9cblx0ICAgIEMuSG1hY01ENSA9IEhhc2hlci5fY3JlYXRlSG1hY0hlbHBlcihNRDUpO1xuXHR9KE1hdGgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5NRDU7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vY2lwaGVyLWNvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4vY2lwaGVyLWNvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdC8qKlxuXHQgKiBDaXBoZXIgRmVlZGJhY2sgYmxvY2sgbW9kZS5cblx0ICovXG5cdENyeXB0b0pTLm1vZGUuQ0ZCID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIHZhciBDRkIgPSBDcnlwdG9KUy5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpO1xuXG5cdCAgICBDRkIuRW5jcnlwdG9yID0gQ0ZCLmV4dGVuZCh7XG5cdCAgICAgICAgcHJvY2Vzc0Jsb2NrOiBmdW5jdGlvbiAod29yZHMsIG9mZnNldCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGNpcGhlciA9IHRoaXMuX2NpcGhlcjtcblx0ICAgICAgICAgICAgdmFyIGJsb2NrU2l6ZSA9IGNpcGhlci5ibG9ja1NpemU7XG5cblx0ICAgICAgICAgICAgZ2VuZXJhdGVLZXlzdHJlYW1BbmRFbmNyeXB0LmNhbGwodGhpcywgd29yZHMsIG9mZnNldCwgYmxvY2tTaXplLCBjaXBoZXIpO1xuXG5cdCAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRoaXMgYmxvY2sgdG8gdXNlIHdpdGggbmV4dCBibG9ja1xuXHQgICAgICAgICAgICB0aGlzLl9wcmV2QmxvY2sgPSB3b3Jkcy5zbGljZShvZmZzZXQsIG9mZnNldCArIGJsb2NrU2l6ZSk7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIENGQi5EZWNyeXB0b3IgPSBDRkIuZXh0ZW5kKHtcblx0ICAgICAgICBwcm9jZXNzQmxvY2s6IGZ1bmN0aW9uICh3b3Jkcywgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgY2lwaGVyID0gdGhpcy5fY2lwaGVyO1xuXHQgICAgICAgICAgICB2YXIgYmxvY2tTaXplID0gY2lwaGVyLmJsb2NrU2l6ZTtcblxuXHQgICAgICAgICAgICAvLyBSZW1lbWJlciB0aGlzIGJsb2NrIHRvIHVzZSB3aXRoIG5leHQgYmxvY2tcblx0ICAgICAgICAgICAgdmFyIHRoaXNCbG9jayA9IHdvcmRzLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgYmxvY2tTaXplKTtcblxuXHQgICAgICAgICAgICBnZW5lcmF0ZUtleXN0cmVhbUFuZEVuY3J5cHQuY2FsbCh0aGlzLCB3b3Jkcywgb2Zmc2V0LCBibG9ja1NpemUsIGNpcGhlcik7XG5cblx0ICAgICAgICAgICAgLy8gVGhpcyBibG9jayBiZWNvbWVzIHRoZSBwcmV2aW91cyBibG9ja1xuXHQgICAgICAgICAgICB0aGlzLl9wcmV2QmxvY2sgPSB0aGlzQmxvY2s7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIGZ1bmN0aW9uIGdlbmVyYXRlS2V5c3RyZWFtQW5kRW5jcnlwdCh3b3Jkcywgb2Zmc2V0LCBibG9ja1NpemUsIGNpcGhlcikge1xuXHQgICAgICAgIHZhciBrZXlzdHJlYW07XG5cblx0ICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgIHZhciBpdiA9IHRoaXMuX2l2O1xuXG5cdCAgICAgICAgLy8gR2VuZXJhdGUga2V5c3RyZWFtXG5cdCAgICAgICAgaWYgKGl2KSB7XG5cdCAgICAgICAgICAgIGtleXN0cmVhbSA9IGl2LnNsaWNlKDApO1xuXG5cdCAgICAgICAgICAgIC8vIFJlbW92ZSBJViBmb3Igc3Vic2VxdWVudCBibG9ja3Ncblx0ICAgICAgICAgICAgdGhpcy5faXYgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAga2V5c3RyZWFtID0gdGhpcy5fcHJldkJsb2NrO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBjaXBoZXIuZW5jcnlwdEJsb2NrKGtleXN0cmVhbSwgMCk7XG5cblx0ICAgICAgICAvLyBFbmNyeXB0XG5cdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBibG9ja1NpemU7IGkrKykge1xuXHQgICAgICAgICAgICB3b3Jkc1tvZmZzZXQgKyBpXSBePSBrZXlzdHJlYW1baV07XG5cdCAgICAgICAgfVxuXHQgICAgfVxuXG5cdCAgICByZXR1cm4gQ0ZCO1xuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLm1vZGUuQ0ZCO1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL2NpcGhlci1jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL2NpcGhlci1jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQvKiogQHByZXNlcnZlXG5cdCAqIENvdW50ZXIgYmxvY2sgbW9kZSBjb21wYXRpYmxlIHdpdGggIERyIEJyaWFuIEdsYWRtYW4gZmlsZWVuYy5jXG5cdCAqIGRlcml2ZWQgZnJvbSBDcnlwdG9KUy5tb2RlLkNUUlxuXHQgKiBKYW4gSHJ1YnkgamhydWJ5LndlYkBnbWFpbC5jb21cblx0ICovXG5cdENyeXB0b0pTLm1vZGUuQ1RSR2xhZG1hbiA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICB2YXIgQ1RSR2xhZG1hbiA9IENyeXB0b0pTLmxpYi5CbG9ja0NpcGhlck1vZGUuZXh0ZW5kKCk7XG5cblx0XHRmdW5jdGlvbiBpbmNXb3JkKHdvcmQpXG5cdFx0e1xuXHRcdFx0aWYgKCgod29yZCA+PiAyNCkgJiAweGZmKSA9PT0gMHhmZikgeyAvL292ZXJmbG93XG5cdFx0XHR2YXIgYjEgPSAod29yZCA+PiAxNikmMHhmZjtcblx0XHRcdHZhciBiMiA9ICh3b3JkID4+IDgpJjB4ZmY7XG5cdFx0XHR2YXIgYjMgPSB3b3JkICYgMHhmZjtcblxuXHRcdFx0aWYgKGIxID09PSAweGZmKSAvLyBvdmVyZmxvdyBiMVxuXHRcdFx0e1xuXHRcdFx0YjEgPSAwO1xuXHRcdFx0aWYgKGIyID09PSAweGZmKVxuXHRcdFx0e1xuXHRcdFx0XHRiMiA9IDA7XG5cdFx0XHRcdGlmIChiMyA9PT0gMHhmZilcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGIzID0gMDtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlXG5cdFx0XHRcdHtcblx0XHRcdFx0XHQrK2IzO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRlbHNlXG5cdFx0XHR7XG5cdFx0XHRcdCsrYjI7XG5cdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRlbHNlXG5cdFx0XHR7XG5cdFx0XHQrK2IxO1xuXHRcdFx0fVxuXG5cdFx0XHR3b3JkID0gMDtcblx0XHRcdHdvcmQgKz0gKGIxIDw8IDE2KTtcblx0XHRcdHdvcmQgKz0gKGIyIDw8IDgpO1xuXHRcdFx0d29yZCArPSBiMztcblx0XHRcdH1cblx0XHRcdGVsc2Vcblx0XHRcdHtcblx0XHRcdHdvcmQgKz0gKDB4MDEgPDwgMjQpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHdvcmQ7XG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gaW5jQ291bnRlcihjb3VudGVyKVxuXHRcdHtcblx0XHRcdGlmICgoY291bnRlclswXSA9IGluY1dvcmQoY291bnRlclswXSkpID09PSAwKVxuXHRcdFx0e1xuXHRcdFx0XHQvLyBlbmNyX2RhdGEgaW4gZmlsZWVuYy5jIGZyb20gIERyIEJyaWFuIEdsYWRtYW4ncyBjb3VudHMgb25seSB3aXRoIERXT1JEIGogPCA4XG5cdFx0XHRcdGNvdW50ZXJbMV0gPSBpbmNXb3JkKGNvdW50ZXJbMV0pO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGNvdW50ZXI7XG5cdFx0fVxuXG5cdCAgICB2YXIgRW5jcnlwdG9yID0gQ1RSR2xhZG1hbi5FbmNyeXB0b3IgPSBDVFJHbGFkbWFuLmV4dGVuZCh7XG5cdCAgICAgICAgcHJvY2Vzc0Jsb2NrOiBmdW5jdGlvbiAod29yZHMsIG9mZnNldCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGNpcGhlciA9IHRoaXMuX2NpcGhlclxuXHQgICAgICAgICAgICB2YXIgYmxvY2tTaXplID0gY2lwaGVyLmJsb2NrU2l6ZTtcblx0ICAgICAgICAgICAgdmFyIGl2ID0gdGhpcy5faXY7XG5cdCAgICAgICAgICAgIHZhciBjb3VudGVyID0gdGhpcy5fY291bnRlcjtcblxuXHQgICAgICAgICAgICAvLyBHZW5lcmF0ZSBrZXlzdHJlYW1cblx0ICAgICAgICAgICAgaWYgKGl2KSB7XG5cdCAgICAgICAgICAgICAgICBjb3VudGVyID0gdGhpcy5fY291bnRlciA9IGl2LnNsaWNlKDApO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBSZW1vdmUgSVYgZm9yIHN1YnNlcXVlbnQgYmxvY2tzXG5cdCAgICAgICAgICAgICAgICB0aGlzLl9pdiA9IHVuZGVmaW5lZDtcblx0ICAgICAgICAgICAgfVxuXG5cdFx0XHRcdGluY0NvdW50ZXIoY291bnRlcik7XG5cblx0XHRcdFx0dmFyIGtleXN0cmVhbSA9IGNvdW50ZXIuc2xpY2UoMCk7XG5cdCAgICAgICAgICAgIGNpcGhlci5lbmNyeXB0QmxvY2soa2V5c3RyZWFtLCAwKTtcblxuXHQgICAgICAgICAgICAvLyBFbmNyeXB0XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmxvY2tTaXplOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIHdvcmRzW29mZnNldCArIGldIF49IGtleXN0cmVhbVtpXTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICBDVFJHbGFkbWFuLkRlY3J5cHRvciA9IEVuY3J5cHRvcjtcblxuXHQgICAgcmV0dXJuIENUUkdsYWRtYW47XG5cdH0oKSk7XG5cblxuXG5cblx0cmV0dXJuIENyeXB0b0pTLm1vZGUuQ1RSR2xhZG1hbjtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9jaXBoZXItY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9jaXBoZXItY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0LyoqXG5cdCAqIENvdW50ZXIgYmxvY2sgbW9kZS5cblx0ICovXG5cdENyeXB0b0pTLm1vZGUuQ1RSID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIHZhciBDVFIgPSBDcnlwdG9KUy5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpO1xuXG5cdCAgICB2YXIgRW5jcnlwdG9yID0gQ1RSLkVuY3J5cHRvciA9IENUUi5leHRlbmQoe1xuXHQgICAgICAgIHByb2Nlc3NCbG9jazogZnVuY3Rpb24gKHdvcmRzLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBjaXBoZXIgPSB0aGlzLl9jaXBoZXJcblx0ICAgICAgICAgICAgdmFyIGJsb2NrU2l6ZSA9IGNpcGhlci5ibG9ja1NpemU7XG5cdCAgICAgICAgICAgIHZhciBpdiA9IHRoaXMuX2l2O1xuXHQgICAgICAgICAgICB2YXIgY291bnRlciA9IHRoaXMuX2NvdW50ZXI7XG5cblx0ICAgICAgICAgICAgLy8gR2VuZXJhdGUga2V5c3RyZWFtXG5cdCAgICAgICAgICAgIGlmIChpdikge1xuXHQgICAgICAgICAgICAgICAgY291bnRlciA9IHRoaXMuX2NvdW50ZXIgPSBpdi5zbGljZSgwKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIElWIGZvciBzdWJzZXF1ZW50IGJsb2Nrc1xuXHQgICAgICAgICAgICAgICAgdGhpcy5faXYgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgdmFyIGtleXN0cmVhbSA9IGNvdW50ZXIuc2xpY2UoMCk7XG5cdCAgICAgICAgICAgIGNpcGhlci5lbmNyeXB0QmxvY2soa2V5c3RyZWFtLCAwKTtcblxuXHQgICAgICAgICAgICAvLyBJbmNyZW1lbnQgY291bnRlclxuXHQgICAgICAgICAgICBjb3VudGVyW2Jsb2NrU2l6ZSAtIDFdID0gKGNvdW50ZXJbYmxvY2tTaXplIC0gMV0gKyAxKSB8IDBcblxuXHQgICAgICAgICAgICAvLyBFbmNyeXB0XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmxvY2tTaXplOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIHdvcmRzW29mZnNldCArIGldIF49IGtleXN0cmVhbVtpXTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICBDVFIuRGVjcnlwdG9yID0gRW5jcnlwdG9yO1xuXG5cdCAgICByZXR1cm4gQ1RSO1xuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLm1vZGUuQ1RSO1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL2NpcGhlci1jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL2NpcGhlci1jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQvKipcblx0ICogRWxlY3Ryb25pYyBDb2RlYm9vayBibG9jayBtb2RlLlxuXHQgKi9cblx0Q3J5cHRvSlMubW9kZS5FQ0IgPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgdmFyIEVDQiA9IENyeXB0b0pTLmxpYi5CbG9ja0NpcGhlck1vZGUuZXh0ZW5kKCk7XG5cblx0ICAgIEVDQi5FbmNyeXB0b3IgPSBFQ0IuZXh0ZW5kKHtcblx0ICAgICAgICBwcm9jZXNzQmxvY2s6IGZ1bmN0aW9uICh3b3Jkcywgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIHRoaXMuX2NpcGhlci5lbmNyeXB0QmxvY2sod29yZHMsIG9mZnNldCk7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIEVDQi5EZWNyeXB0b3IgPSBFQ0IuZXh0ZW5kKHtcblx0ICAgICAgICBwcm9jZXNzQmxvY2s6IGZ1bmN0aW9uICh3b3Jkcywgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIHRoaXMuX2NpcGhlci5kZWNyeXB0QmxvY2sod29yZHMsIG9mZnNldCk7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIHJldHVybiBFQ0I7XG5cdH0oKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMubW9kZS5FQ0I7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vY2lwaGVyLWNvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4vY2lwaGVyLWNvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdC8qKlxuXHQgKiBPdXRwdXQgRmVlZGJhY2sgYmxvY2sgbW9kZS5cblx0ICovXG5cdENyeXB0b0pTLm1vZGUuT0ZCID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIHZhciBPRkIgPSBDcnlwdG9KUy5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpO1xuXG5cdCAgICB2YXIgRW5jcnlwdG9yID0gT0ZCLkVuY3J5cHRvciA9IE9GQi5leHRlbmQoe1xuXHQgICAgICAgIHByb2Nlc3NCbG9jazogZnVuY3Rpb24gKHdvcmRzLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBjaXBoZXIgPSB0aGlzLl9jaXBoZXJcblx0ICAgICAgICAgICAgdmFyIGJsb2NrU2l6ZSA9IGNpcGhlci5ibG9ja1NpemU7XG5cdCAgICAgICAgICAgIHZhciBpdiA9IHRoaXMuX2l2O1xuXHQgICAgICAgICAgICB2YXIga2V5c3RyZWFtID0gdGhpcy5fa2V5c3RyZWFtO1xuXG5cdCAgICAgICAgICAgIC8vIEdlbmVyYXRlIGtleXN0cmVhbVxuXHQgICAgICAgICAgICBpZiAoaXYpIHtcblx0ICAgICAgICAgICAgICAgIGtleXN0cmVhbSA9IHRoaXMuX2tleXN0cmVhbSA9IGl2LnNsaWNlKDApO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBSZW1vdmUgSVYgZm9yIHN1YnNlcXVlbnQgYmxvY2tzXG5cdCAgICAgICAgICAgICAgICB0aGlzLl9pdiA9IHVuZGVmaW5lZDtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBjaXBoZXIuZW5jcnlwdEJsb2NrKGtleXN0cmVhbSwgMCk7XG5cblx0ICAgICAgICAgICAgLy8gRW5jcnlwdFxuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJsb2NrU2l6ZTsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICB3b3Jkc1tvZmZzZXQgKyBpXSBePSBrZXlzdHJlYW1baV07XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgT0ZCLkRlY3J5cHRvciA9IEVuY3J5cHRvcjtcblxuXHQgICAgcmV0dXJuIE9GQjtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5tb2RlLk9GQjtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9jaXBoZXItY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9jaXBoZXItY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0LyoqXG5cdCAqIEFOU0kgWC45MjMgcGFkZGluZyBzdHJhdGVneS5cblx0ICovXG5cdENyeXB0b0pTLnBhZC5BbnNpWDkyMyA9IHtcblx0ICAgIHBhZDogZnVuY3Rpb24gKGRhdGEsIGJsb2NrU2l6ZSkge1xuXHQgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgIHZhciBkYXRhU2lnQnl0ZXMgPSBkYXRhLnNpZ0J5dGVzO1xuXHQgICAgICAgIHZhciBibG9ja1NpemVCeXRlcyA9IGJsb2NrU2l6ZSAqIDQ7XG5cblx0ICAgICAgICAvLyBDb3VudCBwYWRkaW5nIGJ5dGVzXG5cdCAgICAgICAgdmFyIG5QYWRkaW5nQnl0ZXMgPSBibG9ja1NpemVCeXRlcyAtIGRhdGFTaWdCeXRlcyAlIGJsb2NrU2l6ZUJ5dGVzO1xuXG5cdCAgICAgICAgLy8gQ29tcHV0ZSBsYXN0IGJ5dGUgcG9zaXRpb25cblx0ICAgICAgICB2YXIgbGFzdEJ5dGVQb3MgPSBkYXRhU2lnQnl0ZXMgKyBuUGFkZGluZ0J5dGVzIC0gMTtcblxuXHQgICAgICAgIC8vIFBhZFxuXHQgICAgICAgIGRhdGEuY2xhbXAoKTtcblx0ICAgICAgICBkYXRhLndvcmRzW2xhc3RCeXRlUG9zID4+PiAyXSB8PSBuUGFkZGluZ0J5dGVzIDw8ICgyNCAtIChsYXN0Qnl0ZVBvcyAlIDQpICogOCk7XG5cdCAgICAgICAgZGF0YS5zaWdCeXRlcyArPSBuUGFkZGluZ0J5dGVzO1xuXHQgICAgfSxcblxuXHQgICAgdW5wYWQ6IGZ1bmN0aW9uIChkYXRhKSB7XG5cdCAgICAgICAgLy8gR2V0IG51bWJlciBvZiBwYWRkaW5nIGJ5dGVzIGZyb20gbGFzdCBieXRlXG5cdCAgICAgICAgdmFyIG5QYWRkaW5nQnl0ZXMgPSBkYXRhLndvcmRzWyhkYXRhLnNpZ0J5dGVzIC0gMSkgPj4+IDJdICYgMHhmZjtcblxuXHQgICAgICAgIC8vIFJlbW92ZSBwYWRkaW5nXG5cdCAgICAgICAgZGF0YS5zaWdCeXRlcyAtPSBuUGFkZGluZ0J5dGVzO1xuXHQgICAgfVxuXHR9O1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLnBhZC5BbnNpeDkyMztcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9jaXBoZXItY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9jaXBoZXItY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0LyoqXG5cdCAqIElTTyAxMDEyNiBwYWRkaW5nIHN0cmF0ZWd5LlxuXHQgKi9cblx0Q3J5cHRvSlMucGFkLklzbzEwMTI2ID0ge1xuXHQgICAgcGFkOiBmdW5jdGlvbiAoZGF0YSwgYmxvY2tTaXplKSB7XG5cdCAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICB2YXIgYmxvY2tTaXplQnl0ZXMgPSBibG9ja1NpemUgKiA0O1xuXG5cdCAgICAgICAgLy8gQ291bnQgcGFkZGluZyBieXRlc1xuXHQgICAgICAgIHZhciBuUGFkZGluZ0J5dGVzID0gYmxvY2tTaXplQnl0ZXMgLSBkYXRhLnNpZ0J5dGVzICUgYmxvY2tTaXplQnl0ZXM7XG5cblx0ICAgICAgICAvLyBQYWRcblx0ICAgICAgICBkYXRhLmNvbmNhdChDcnlwdG9KUy5saWIuV29yZEFycmF5LnJhbmRvbShuUGFkZGluZ0J5dGVzIC0gMSkpLlxuXHQgICAgICAgICAgICAgY29uY2F0KENyeXB0b0pTLmxpYi5Xb3JkQXJyYXkuY3JlYXRlKFtuUGFkZGluZ0J5dGVzIDw8IDI0XSwgMSkpO1xuXHQgICAgfSxcblxuXHQgICAgdW5wYWQ6IGZ1bmN0aW9uIChkYXRhKSB7XG5cdCAgICAgICAgLy8gR2V0IG51bWJlciBvZiBwYWRkaW5nIGJ5dGVzIGZyb20gbGFzdCBieXRlXG5cdCAgICAgICAgdmFyIG5QYWRkaW5nQnl0ZXMgPSBkYXRhLndvcmRzWyhkYXRhLnNpZ0J5dGVzIC0gMSkgPj4+IDJdICYgMHhmZjtcblxuXHQgICAgICAgIC8vIFJlbW92ZSBwYWRkaW5nXG5cdCAgICAgICAgZGF0YS5zaWdCeXRlcyAtPSBuUGFkZGluZ0J5dGVzO1xuXHQgICAgfVxuXHR9O1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLnBhZC5Jc28xMDEyNjtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9jaXBoZXItY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9jaXBoZXItY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0LyoqXG5cdCAqIElTTy9JRUMgOTc5Ny0xIFBhZGRpbmcgTWV0aG9kIDIuXG5cdCAqL1xuXHRDcnlwdG9KUy5wYWQuSXNvOTc5NzEgPSB7XG5cdCAgICBwYWQ6IGZ1bmN0aW9uIChkYXRhLCBibG9ja1NpemUpIHtcblx0ICAgICAgICAvLyBBZGQgMHg4MCBieXRlXG5cdCAgICAgICAgZGF0YS5jb25jYXQoQ3J5cHRvSlMubGliLldvcmRBcnJheS5jcmVhdGUoWzB4ODAwMDAwMDBdLCAxKSk7XG5cblx0ICAgICAgICAvLyBaZXJvIHBhZCB0aGUgcmVzdFxuXHQgICAgICAgIENyeXB0b0pTLnBhZC5aZXJvUGFkZGluZy5wYWQoZGF0YSwgYmxvY2tTaXplKTtcblx0ICAgIH0sXG5cblx0ICAgIHVucGFkOiBmdW5jdGlvbiAoZGF0YSkge1xuXHQgICAgICAgIC8vIFJlbW92ZSB6ZXJvIHBhZGRpbmdcblx0ICAgICAgICBDcnlwdG9KUy5wYWQuWmVyb1BhZGRpbmcudW5wYWQoZGF0YSk7XG5cblx0ICAgICAgICAvLyBSZW1vdmUgb25lIG1vcmUgYnl0ZSAtLSB0aGUgMHg4MCBieXRlXG5cdCAgICAgICAgZGF0YS5zaWdCeXRlcy0tO1xuXHQgICAgfVxuXHR9O1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLnBhZC5Jc285Nzk3MTtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9jaXBoZXItY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9jaXBoZXItY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0LyoqXG5cdCAqIEEgbm9vcCBwYWRkaW5nIHN0cmF0ZWd5LlxuXHQgKi9cblx0Q3J5cHRvSlMucGFkLk5vUGFkZGluZyA9IHtcblx0ICAgIHBhZDogZnVuY3Rpb24gKCkge1xuXHQgICAgfSxcblxuXHQgICAgdW5wYWQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgIH1cblx0fTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5wYWQuTm9QYWRkaW5nO1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL2NpcGhlci1jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL2NpcGhlci1jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQvKipcblx0ICogWmVybyBwYWRkaW5nIHN0cmF0ZWd5LlxuXHQgKi9cblx0Q3J5cHRvSlMucGFkLlplcm9QYWRkaW5nID0ge1xuXHQgICAgcGFkOiBmdW5jdGlvbiAoZGF0YSwgYmxvY2tTaXplKSB7XG5cdCAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICB2YXIgYmxvY2tTaXplQnl0ZXMgPSBibG9ja1NpemUgKiA0O1xuXG5cdCAgICAgICAgLy8gUGFkXG5cdCAgICAgICAgZGF0YS5jbGFtcCgpO1xuXHQgICAgICAgIGRhdGEuc2lnQnl0ZXMgKz0gYmxvY2tTaXplQnl0ZXMgLSAoKGRhdGEuc2lnQnl0ZXMgJSBibG9ja1NpemVCeXRlcykgfHwgYmxvY2tTaXplQnl0ZXMpO1xuXHQgICAgfSxcblxuXHQgICAgdW5wYWQ6IGZ1bmN0aW9uIChkYXRhKSB7XG5cdCAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICB2YXIgZGF0YVdvcmRzID0gZGF0YS53b3JkcztcblxuXHQgICAgICAgIC8vIFVucGFkXG5cdCAgICAgICAgdmFyIGkgPSBkYXRhLnNpZ0J5dGVzIC0gMTtcblx0ICAgICAgICBmb3IgKHZhciBpID0gZGF0YS5zaWdCeXRlcyAtIDE7IGkgPj0gMDsgaS0tKSB7XG5cdCAgICAgICAgICAgIGlmICgoKGRhdGFXb3Jkc1tpID4+PiAyXSA+Pj4gKDI0IC0gKGkgJSA0KSAqIDgpKSAmIDB4ZmYpKSB7XG5cdCAgICAgICAgICAgICAgICBkYXRhLnNpZ0J5dGVzID0gaSArIDE7XG5cdCAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgIH1cblx0fTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5wYWQuWmVyb1BhZGRpbmc7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vc2hhMVwiKSwgcmVxdWlyZShcIi4vaG1hY1wiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9zaGExXCIsIFwiLi9obWFjXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfbGliID0gQy5saWI7XG5cdCAgICB2YXIgQmFzZSA9IENfbGliLkJhc2U7XG5cdCAgICB2YXIgV29yZEFycmF5ID0gQ19saWIuV29yZEFycmF5O1xuXHQgICAgdmFyIENfYWxnbyA9IEMuYWxnbztcblx0ICAgIHZhciBTSEExID0gQ19hbGdvLlNIQTE7XG5cdCAgICB2YXIgSE1BQyA9IENfYWxnby5ITUFDO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFBhc3N3b3JkLUJhc2VkIEtleSBEZXJpdmF0aW9uIEZ1bmN0aW9uIDIgYWxnb3JpdGhtLlxuXHQgICAgICovXG5cdCAgICB2YXIgUEJLREYyID0gQ19hbGdvLlBCS0RGMiA9IEJhc2UuZXh0ZW5kKHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcHJvcGVydHkge251bWJlcn0ga2V5U2l6ZSBUaGUga2V5IHNpemUgaW4gd29yZHMgdG8gZ2VuZXJhdGUuIERlZmF1bHQ6IDQgKDEyOCBiaXRzKVxuXHQgICAgICAgICAqIEBwcm9wZXJ0eSB7SGFzaGVyfSBoYXNoZXIgVGhlIGhhc2hlciB0byB1c2UuIERlZmF1bHQ6IFNIQTFcblx0ICAgICAgICAgKiBAcHJvcGVydHkge251bWJlcn0gaXRlcmF0aW9ucyBUaGUgbnVtYmVyIG9mIGl0ZXJhdGlvbnMgdG8gcGVyZm9ybS4gRGVmYXVsdDogMVxuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNmZzogQmFzZS5leHRlbmQoe1xuXHQgICAgICAgICAgICBrZXlTaXplOiAxMjgvMzIsXG5cdCAgICAgICAgICAgIGhhc2hlcjogU0hBMSxcblx0ICAgICAgICAgICAgaXRlcmF0aW9uczogMVxuXHQgICAgICAgIH0pLFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogSW5pdGlhbGl6ZXMgYSBuZXdseSBjcmVhdGVkIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGNmZyAoT3B0aW9uYWwpIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdXNlIGZvciB0aGUgZGVyaXZhdGlvbi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGtkZiA9IENyeXB0b0pTLmFsZ28uUEJLREYyLmNyZWF0ZSgpO1xuXHQgICAgICAgICAqICAgICB2YXIga2RmID0gQ3J5cHRvSlMuYWxnby5QQktERjIuY3JlYXRlKHsga2V5U2l6ZTogOCB9KTtcblx0ICAgICAgICAgKiAgICAgdmFyIGtkZiA9IENyeXB0b0pTLmFsZ28uUEJLREYyLmNyZWF0ZSh7IGtleVNpemU6IDgsIGl0ZXJhdGlvbnM6IDEwMDAgfSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgaW5pdDogZnVuY3Rpb24gKGNmZykge1xuXHQgICAgICAgICAgICB0aGlzLmNmZyA9IHRoaXMuY2ZnLmV4dGVuZChjZmcpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb21wdXRlcyB0aGUgUGFzc3dvcmQtQmFzZWQgS2V5IERlcml2YXRpb24gRnVuY3Rpb24gMi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gcGFzc3dvcmQgVGhlIHBhc3N3b3JkLlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gc2FsdCBBIHNhbHQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBkZXJpdmVkIGtleS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGtleSA9IGtkZi5jb21wdXRlKHBhc3N3b3JkLCBzYWx0KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBjb21wdXRlOiBmdW5jdGlvbiAocGFzc3dvcmQsIHNhbHQpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIGNmZyA9IHRoaXMuY2ZnO1xuXG5cdCAgICAgICAgICAgIC8vIEluaXQgSE1BQ1xuXHQgICAgICAgICAgICB2YXIgaG1hYyA9IEhNQUMuY3JlYXRlKGNmZy5oYXNoZXIsIHBhc3N3b3JkKTtcblxuXHQgICAgICAgICAgICAvLyBJbml0aWFsIHZhbHVlc1xuXHQgICAgICAgICAgICB2YXIgZGVyaXZlZEtleSA9IFdvcmRBcnJheS5jcmVhdGUoKTtcblx0ICAgICAgICAgICAgdmFyIGJsb2NrSW5kZXggPSBXb3JkQXJyYXkuY3JlYXRlKFsweDAwMDAwMDAxXSk7XG5cblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBkZXJpdmVkS2V5V29yZHMgPSBkZXJpdmVkS2V5LndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgYmxvY2tJbmRleFdvcmRzID0gYmxvY2tJbmRleC53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIGtleVNpemUgPSBjZmcua2V5U2l6ZTtcblx0ICAgICAgICAgICAgdmFyIGl0ZXJhdGlvbnMgPSBjZmcuaXRlcmF0aW9ucztcblxuXHQgICAgICAgICAgICAvLyBHZW5lcmF0ZSBrZXlcblx0ICAgICAgICAgICAgd2hpbGUgKGRlcml2ZWRLZXlXb3Jkcy5sZW5ndGggPCBrZXlTaXplKSB7XG5cdCAgICAgICAgICAgICAgICB2YXIgYmxvY2sgPSBobWFjLnVwZGF0ZShzYWx0KS5maW5hbGl6ZShibG9ja0luZGV4KTtcblx0ICAgICAgICAgICAgICAgIGhtYWMucmVzZXQoKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgICAgICB2YXIgYmxvY2tXb3JkcyA9IGJsb2NrLndvcmRzO1xuXHQgICAgICAgICAgICAgICAgdmFyIGJsb2NrV29yZHNMZW5ndGggPSBibG9ja1dvcmRzLmxlbmd0aDtcblxuXHQgICAgICAgICAgICAgICAgLy8gSXRlcmF0aW9uc1xuXHQgICAgICAgICAgICAgICAgdmFyIGludGVybWVkaWF0ZSA9IGJsb2NrO1xuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBpdGVyYXRpb25zOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgICAgICBpbnRlcm1lZGlhdGUgPSBobWFjLmZpbmFsaXplKGludGVybWVkaWF0ZSk7XG5cdCAgICAgICAgICAgICAgICAgICAgaG1hYy5yZXNldCgpO1xuXG5cdCAgICAgICAgICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgaW50ZXJtZWRpYXRlV29yZHMgPSBpbnRlcm1lZGlhdGUud29yZHM7XG5cblx0ICAgICAgICAgICAgICAgICAgICAvLyBYT1IgaW50ZXJtZWRpYXRlIHdpdGggYmxvY2tcblx0ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGJsb2NrV29yZHNMZW5ndGg7IGorKykge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBibG9ja1dvcmRzW2pdIF49IGludGVybWVkaWF0ZVdvcmRzW2pdO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgZGVyaXZlZEtleS5jb25jYXQoYmxvY2spO1xuXHQgICAgICAgICAgICAgICAgYmxvY2tJbmRleFdvcmRzWzBdKys7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZGVyaXZlZEtleS5zaWdCeXRlcyA9IGtleVNpemUgKiA0O1xuXG5cdCAgICAgICAgICAgIHJldHVybiBkZXJpdmVkS2V5O1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIENvbXB1dGVzIHRoZSBQYXNzd29yZC1CYXNlZCBLZXkgRGVyaXZhdGlvbiBGdW5jdGlvbiAyLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gcGFzc3dvcmQgVGhlIHBhc3N3b3JkLlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBzYWx0IEEgc2FsdC5cblx0ICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcgKE9wdGlvbmFsKSBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHVzZSBmb3IgdGhpcyBjb21wdXRhdGlvbi5cblx0ICAgICAqXG5cdCAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBkZXJpdmVkIGtleS5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGtleSA9IENyeXB0b0pTLlBCS0RGMihwYXNzd29yZCwgc2FsdCk7XG5cdCAgICAgKiAgICAgdmFyIGtleSA9IENyeXB0b0pTLlBCS0RGMihwYXNzd29yZCwgc2FsdCwgeyBrZXlTaXplOiA4IH0pO1xuXHQgICAgICogICAgIHZhciBrZXkgPSBDcnlwdG9KUy5QQktERjIocGFzc3dvcmQsIHNhbHQsIHsga2V5U2l6ZTogOCwgaXRlcmF0aW9uczogMTAwMCB9KTtcblx0ICAgICAqL1xuXHQgICAgQy5QQktERjIgPSBmdW5jdGlvbiAocGFzc3dvcmQsIHNhbHQsIGNmZykge1xuXHQgICAgICAgIHJldHVybiBQQktERjIuY3JlYXRlKGNmZykuY29tcHV0ZShwYXNzd29yZCwgc2FsdCk7XG5cdCAgICB9O1xuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLlBCS0RGMjtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9lbmMtYmFzZTY0XCIpLCByZXF1aXJlKFwiLi9tZDVcIiksIHJlcXVpcmUoXCIuL2V2cGtkZlwiKSwgcmVxdWlyZShcIi4vY2lwaGVyLWNvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4vZW5jLWJhc2U2NFwiLCBcIi4vbWQ1XCIsIFwiLi9ldnBrZGZcIiwgXCIuL2NpcGhlci1jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfbGliID0gQy5saWI7XG5cdCAgICB2YXIgU3RyZWFtQ2lwaGVyID0gQ19saWIuU3RyZWFtQ2lwaGVyO1xuXHQgICAgdmFyIENfYWxnbyA9IEMuYWxnbztcblxuXHQgICAgLy8gUmV1c2FibGUgb2JqZWN0c1xuXHQgICAgdmFyIFMgID0gW107XG5cdCAgICB2YXIgQ18gPSBbXTtcblx0ICAgIHZhciBHICA9IFtdO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFJhYmJpdCBzdHJlYW0gY2lwaGVyIGFsZ29yaXRobS5cblx0ICAgICAqXG5cdCAgICAgKiBUaGlzIGlzIGEgbGVnYWN5IHZlcnNpb24gdGhhdCBuZWdsZWN0ZWQgdG8gY29udmVydCB0aGUga2V5IHRvIGxpdHRsZS1lbmRpYW4uXG5cdCAgICAgKiBUaGlzIGVycm9yIGRvZXNuJ3QgYWZmZWN0IHRoZSBjaXBoZXIncyBzZWN1cml0eSxcblx0ICAgICAqIGJ1dCBpdCBkb2VzIGFmZmVjdCBpdHMgY29tcGF0aWJpbGl0eSB3aXRoIG90aGVyIGltcGxlbWVudGF0aW9ucy5cblx0ICAgICAqL1xuXHQgICAgdmFyIFJhYmJpdExlZ2FjeSA9IENfYWxnby5SYWJiaXRMZWdhY3kgPSBTdHJlYW1DaXBoZXIuZXh0ZW5kKHtcblx0ICAgICAgICBfZG9SZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIEsgPSB0aGlzLl9rZXkud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBpdiA9IHRoaXMuY2ZnLml2O1xuXG5cdCAgICAgICAgICAgIC8vIEdlbmVyYXRlIGluaXRpYWwgc3RhdGUgdmFsdWVzXG5cdCAgICAgICAgICAgIHZhciBYID0gdGhpcy5fWCA9IFtcblx0ICAgICAgICAgICAgICAgIEtbMF0sIChLWzNdIDw8IDE2KSB8IChLWzJdID4+PiAxNiksXG5cdCAgICAgICAgICAgICAgICBLWzFdLCAoS1swXSA8PCAxNikgfCAoS1szXSA+Pj4gMTYpLFxuXHQgICAgICAgICAgICAgICAgS1syXSwgKEtbMV0gPDwgMTYpIHwgKEtbMF0gPj4+IDE2KSxcblx0ICAgICAgICAgICAgICAgIEtbM10sIChLWzJdIDw8IDE2KSB8IChLWzFdID4+PiAxNilcblx0ICAgICAgICAgICAgXTtcblxuXHQgICAgICAgICAgICAvLyBHZW5lcmF0ZSBpbml0aWFsIGNvdW50ZXIgdmFsdWVzXG5cdCAgICAgICAgICAgIHZhciBDID0gdGhpcy5fQyA9IFtcblx0ICAgICAgICAgICAgICAgIChLWzJdIDw8IDE2KSB8IChLWzJdID4+PiAxNiksIChLWzBdICYgMHhmZmZmMDAwMCkgfCAoS1sxXSAmIDB4MDAwMGZmZmYpLFxuXHQgICAgICAgICAgICAgICAgKEtbM10gPDwgMTYpIHwgKEtbM10gPj4+IDE2KSwgKEtbMV0gJiAweGZmZmYwMDAwKSB8IChLWzJdICYgMHgwMDAwZmZmZiksXG5cdCAgICAgICAgICAgICAgICAoS1swXSA8PCAxNikgfCAoS1swXSA+Pj4gMTYpLCAoS1syXSAmIDB4ZmZmZjAwMDApIHwgKEtbM10gJiAweDAwMDBmZmZmKSxcblx0ICAgICAgICAgICAgICAgIChLWzFdIDw8IDE2KSB8IChLWzFdID4+PiAxNiksIChLWzNdICYgMHhmZmZmMDAwMCkgfCAoS1swXSAmIDB4MDAwMGZmZmYpXG5cdCAgICAgICAgICAgIF07XG5cblx0ICAgICAgICAgICAgLy8gQ2FycnkgYml0XG5cdCAgICAgICAgICAgIHRoaXMuX2IgPSAwO1xuXG5cdCAgICAgICAgICAgIC8vIEl0ZXJhdGUgdGhlIHN5c3RlbSBmb3VyIHRpbWVzXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICBuZXh0U3RhdGUuY2FsbCh0aGlzKTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIE1vZGlmeSB0aGUgY291bnRlcnNcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIENbaV0gXj0gWFsoaSArIDQpICYgN107XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBJViBzZXR1cFxuXHQgICAgICAgICAgICBpZiAoaXYpIHtcblx0ICAgICAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICAgICAgdmFyIElWID0gaXYud29yZHM7XG5cdCAgICAgICAgICAgICAgICB2YXIgSVZfMCA9IElWWzBdO1xuXHQgICAgICAgICAgICAgICAgdmFyIElWXzEgPSBJVlsxXTtcblxuXHQgICAgICAgICAgICAgICAgLy8gR2VuZXJhdGUgZm91ciBzdWJ2ZWN0b3JzXG5cdCAgICAgICAgICAgICAgICB2YXIgaTAgPSAoKChJVl8wIDw8IDgpIHwgKElWXzAgPj4+IDI0KSkgJiAweDAwZmYwMGZmKSB8ICgoKElWXzAgPDwgMjQpIHwgKElWXzAgPj4+IDgpKSAmIDB4ZmYwMGZmMDApO1xuXHQgICAgICAgICAgICAgICAgdmFyIGkyID0gKCgoSVZfMSA8PCA4KSB8IChJVl8xID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfCAoKChJVl8xIDw8IDI0KSB8IChJVl8xID4+PiA4KSkgJiAweGZmMDBmZjAwKTtcblx0ICAgICAgICAgICAgICAgIHZhciBpMSA9IChpMCA+Pj4gMTYpIHwgKGkyICYgMHhmZmZmMDAwMCk7XG5cdCAgICAgICAgICAgICAgICB2YXIgaTMgPSAoaTIgPDwgMTYpICB8IChpMCAmIDB4MDAwMGZmZmYpO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBNb2RpZnkgY291bnRlciB2YWx1ZXNcblx0ICAgICAgICAgICAgICAgIENbMF0gXj0gaTA7XG5cdCAgICAgICAgICAgICAgICBDWzFdIF49IGkxO1xuXHQgICAgICAgICAgICAgICAgQ1syXSBePSBpMjtcblx0ICAgICAgICAgICAgICAgIENbM10gXj0gaTM7XG5cdCAgICAgICAgICAgICAgICBDWzRdIF49IGkwO1xuXHQgICAgICAgICAgICAgICAgQ1s1XSBePSBpMTtcblx0ICAgICAgICAgICAgICAgIENbNl0gXj0gaTI7XG5cdCAgICAgICAgICAgICAgICBDWzddIF49IGkzO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBJdGVyYXRlIHRoZSBzeXN0ZW0gZm91ciB0aW1lc1xuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgICAgICBuZXh0U3RhdGUuY2FsbCh0aGlzKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9Qcm9jZXNzQmxvY2s6IGZ1bmN0aW9uIChNLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIFggPSB0aGlzLl9YO1xuXG5cdCAgICAgICAgICAgIC8vIEl0ZXJhdGUgdGhlIHN5c3RlbVxuXHQgICAgICAgICAgICBuZXh0U3RhdGUuY2FsbCh0aGlzKTtcblxuXHQgICAgICAgICAgICAvLyBHZW5lcmF0ZSBmb3VyIGtleXN0cmVhbSB3b3Jkc1xuXHQgICAgICAgICAgICBTWzBdID0gWFswXSBeIChYWzVdID4+PiAxNikgXiAoWFszXSA8PCAxNik7XG5cdCAgICAgICAgICAgIFNbMV0gPSBYWzJdIF4gKFhbN10gPj4+IDE2KSBeIChYWzVdIDw8IDE2KTtcblx0ICAgICAgICAgICAgU1syXSA9IFhbNF0gXiAoWFsxXSA+Pj4gMTYpIF4gKFhbN10gPDwgMTYpO1xuXHQgICAgICAgICAgICBTWzNdID0gWFs2XSBeIChYWzNdID4+PiAxNikgXiAoWFsxXSA8PCAxNik7XG5cblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIC8vIFN3YXAgZW5kaWFuXG5cdCAgICAgICAgICAgICAgICBTW2ldID0gKCgoU1tpXSA8PCA4KSAgfCAoU1tpXSA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcblx0ICAgICAgICAgICAgICAgICAgICAgICAoKChTW2ldIDw8IDI0KSB8IChTW2ldID4+PiA4KSkgICYgMHhmZjAwZmYwMCk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIEVuY3J5cHRcblx0ICAgICAgICAgICAgICAgIE1bb2Zmc2V0ICsgaV0gXj0gU1tpXTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBibG9ja1NpemU6IDEyOC8zMixcblxuXHQgICAgICAgIGl2U2l6ZTogNjQvMzJcblx0ICAgIH0pO1xuXG5cdCAgICBmdW5jdGlvbiBuZXh0U3RhdGUoKSB7XG5cdCAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgdmFyIFggPSB0aGlzLl9YO1xuXHQgICAgICAgIHZhciBDID0gdGhpcy5fQztcblxuXHQgICAgICAgIC8vIFNhdmUgb2xkIGNvdW50ZXIgdmFsdWVzXG5cdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHtcblx0ICAgICAgICAgICAgQ19baV0gPSBDW2ldO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIC8vIENhbGN1bGF0ZSBuZXcgY291bnRlciB2YWx1ZXNcblx0ICAgICAgICBDWzBdID0gKENbMF0gKyAweDRkMzRkMzRkICsgdGhpcy5fYikgfCAwO1xuXHQgICAgICAgIENbMV0gPSAoQ1sxXSArIDB4ZDM0ZDM0ZDMgKyAoKENbMF0gPj4+IDApIDwgKENfWzBdID4+PiAwKSA/IDEgOiAwKSkgfCAwO1xuXHQgICAgICAgIENbMl0gPSAoQ1syXSArIDB4MzRkMzRkMzQgKyAoKENbMV0gPj4+IDApIDwgKENfWzFdID4+PiAwKSA/IDEgOiAwKSkgfCAwO1xuXHQgICAgICAgIENbM10gPSAoQ1szXSArIDB4NGQzNGQzNGQgKyAoKENbMl0gPj4+IDApIDwgKENfWzJdID4+PiAwKSA/IDEgOiAwKSkgfCAwO1xuXHQgICAgICAgIENbNF0gPSAoQ1s0XSArIDB4ZDM0ZDM0ZDMgKyAoKENbM10gPj4+IDApIDwgKENfWzNdID4+PiAwKSA/IDEgOiAwKSkgfCAwO1xuXHQgICAgICAgIENbNV0gPSAoQ1s1XSArIDB4MzRkMzRkMzQgKyAoKENbNF0gPj4+IDApIDwgKENfWzRdID4+PiAwKSA/IDEgOiAwKSkgfCAwO1xuXHQgICAgICAgIENbNl0gPSAoQ1s2XSArIDB4NGQzNGQzNGQgKyAoKENbNV0gPj4+IDApIDwgKENfWzVdID4+PiAwKSA/IDEgOiAwKSkgfCAwO1xuXHQgICAgICAgIENbN10gPSAoQ1s3XSArIDB4ZDM0ZDM0ZDMgKyAoKENbNl0gPj4+IDApIDwgKENfWzZdID4+PiAwKSA/IDEgOiAwKSkgfCAwO1xuXHQgICAgICAgIHRoaXMuX2IgPSAoQ1s3XSA+Pj4gMCkgPCAoQ19bN10gPj4+IDApID8gMSA6IDA7XG5cblx0ICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGctdmFsdWVzXG5cdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHtcblx0ICAgICAgICAgICAgdmFyIGd4ID0gWFtpXSArIENbaV07XG5cblx0ICAgICAgICAgICAgLy8gQ29uc3RydWN0IGhpZ2ggYW5kIGxvdyBhcmd1bWVudCBmb3Igc3F1YXJpbmdcblx0ICAgICAgICAgICAgdmFyIGdhID0gZ3ggJiAweGZmZmY7XG5cdCAgICAgICAgICAgIHZhciBnYiA9IGd4ID4+PiAxNjtcblxuXHQgICAgICAgICAgICAvLyBDYWxjdWxhdGUgaGlnaCBhbmQgbG93IHJlc3VsdCBvZiBzcXVhcmluZ1xuXHQgICAgICAgICAgICB2YXIgZ2ggPSAoKCgoZ2EgKiBnYSkgPj4+IDE3KSArIGdhICogZ2IpID4+PiAxNSkgKyBnYiAqIGdiO1xuXHQgICAgICAgICAgICB2YXIgZ2wgPSAoKChneCAmIDB4ZmZmZjAwMDApICogZ3gpIHwgMCkgKyAoKChneCAmIDB4MDAwMGZmZmYpICogZ3gpIHwgMCk7XG5cblx0ICAgICAgICAgICAgLy8gSGlnaCBYT1IgbG93XG5cdCAgICAgICAgICAgIEdbaV0gPSBnaCBeIGdsO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIC8vIENhbGN1bGF0ZSBuZXcgc3RhdGUgdmFsdWVzXG5cdCAgICAgICAgWFswXSA9IChHWzBdICsgKChHWzddIDw8IDE2KSB8IChHWzddID4+PiAxNikpICsgKChHWzZdIDw8IDE2KSB8IChHWzZdID4+PiAxNikpKSB8IDA7XG5cdCAgICAgICAgWFsxXSA9IChHWzFdICsgKChHWzBdIDw8IDgpICB8IChHWzBdID4+PiAyNCkpICsgR1s3XSkgfCAwO1xuXHQgICAgICAgIFhbMl0gPSAoR1syXSArICgoR1sxXSA8PCAxNikgfCAoR1sxXSA+Pj4gMTYpKSArICgoR1swXSA8PCAxNikgfCAoR1swXSA+Pj4gMTYpKSkgfCAwO1xuXHQgICAgICAgIFhbM10gPSAoR1szXSArICgoR1syXSA8PCA4KSAgfCAoR1syXSA+Pj4gMjQpKSArIEdbMV0pIHwgMDtcblx0ICAgICAgICBYWzRdID0gKEdbNF0gKyAoKEdbM10gPDwgMTYpIHwgKEdbM10gPj4+IDE2KSkgKyAoKEdbMl0gPDwgMTYpIHwgKEdbMl0gPj4+IDE2KSkpIHwgMDtcblx0ICAgICAgICBYWzVdID0gKEdbNV0gKyAoKEdbNF0gPDwgOCkgIHwgKEdbNF0gPj4+IDI0KSkgKyBHWzNdKSB8IDA7XG5cdCAgICAgICAgWFs2XSA9IChHWzZdICsgKChHWzVdIDw8IDE2KSB8IChHWzVdID4+PiAxNikpICsgKChHWzRdIDw8IDE2KSB8IChHWzRdID4+PiAxNikpKSB8IDA7XG5cdCAgICAgICAgWFs3XSA9IChHWzddICsgKChHWzZdIDw8IDgpICB8IChHWzZdID4+PiAyNCkpICsgR1s1XSkgfCAwO1xuXHQgICAgfVxuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9ucyB0byB0aGUgY2lwaGVyJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgY2lwaGVydGV4dCA9IENyeXB0b0pTLlJhYmJpdExlZ2FjeS5lbmNyeXB0KG1lc3NhZ2UsIGtleSwgY2ZnKTtcblx0ICAgICAqICAgICB2YXIgcGxhaW50ZXh0ICA9IENyeXB0b0pTLlJhYmJpdExlZ2FjeS5kZWNyeXB0KGNpcGhlcnRleHQsIGtleSwgY2ZnKTtcblx0ICAgICAqL1xuXHQgICAgQy5SYWJiaXRMZWdhY3kgPSBTdHJlYW1DaXBoZXIuX2NyZWF0ZUhlbHBlcihSYWJiaXRMZWdhY3kpO1xuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLlJhYmJpdExlZ2FjeTtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9lbmMtYmFzZTY0XCIpLCByZXF1aXJlKFwiLi9tZDVcIiksIHJlcXVpcmUoXCIuL2V2cGtkZlwiKSwgcmVxdWlyZShcIi4vY2lwaGVyLWNvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4vZW5jLWJhc2U2NFwiLCBcIi4vbWQ1XCIsIFwiLi9ldnBrZGZcIiwgXCIuL2NpcGhlci1jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfbGliID0gQy5saWI7XG5cdCAgICB2YXIgU3RyZWFtQ2lwaGVyID0gQ19saWIuU3RyZWFtQ2lwaGVyO1xuXHQgICAgdmFyIENfYWxnbyA9IEMuYWxnbztcblxuXHQgICAgLy8gUmV1c2FibGUgb2JqZWN0c1xuXHQgICAgdmFyIFMgID0gW107XG5cdCAgICB2YXIgQ18gPSBbXTtcblx0ICAgIHZhciBHICA9IFtdO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFJhYmJpdCBzdHJlYW0gY2lwaGVyIGFsZ29yaXRobVxuXHQgICAgICovXG5cdCAgICB2YXIgUmFiYml0ID0gQ19hbGdvLlJhYmJpdCA9IFN0cmVhbUNpcGhlci5leHRlbmQoe1xuXHQgICAgICAgIF9kb1Jlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgSyA9IHRoaXMuX2tleS53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIGl2ID0gdGhpcy5jZmcuaXY7XG5cblx0ICAgICAgICAgICAgLy8gU3dhcCBlbmRpYW5cblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIEtbaV0gPSAoKChLW2ldIDw8IDgpICB8IChLW2ldID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuXHQgICAgICAgICAgICAgICAgICAgICAgICgoKEtbaV0gPDwgMjQpIHwgKEtbaV0gPj4+IDgpKSAgJiAweGZmMDBmZjAwKTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIEdlbmVyYXRlIGluaXRpYWwgc3RhdGUgdmFsdWVzXG5cdCAgICAgICAgICAgIHZhciBYID0gdGhpcy5fWCA9IFtcblx0ICAgICAgICAgICAgICAgIEtbMF0sIChLWzNdIDw8IDE2KSB8IChLWzJdID4+PiAxNiksXG5cdCAgICAgICAgICAgICAgICBLWzFdLCAoS1swXSA8PCAxNikgfCAoS1szXSA+Pj4gMTYpLFxuXHQgICAgICAgICAgICAgICAgS1syXSwgKEtbMV0gPDwgMTYpIHwgKEtbMF0gPj4+IDE2KSxcblx0ICAgICAgICAgICAgICAgIEtbM10sIChLWzJdIDw8IDE2KSB8IChLWzFdID4+PiAxNilcblx0ICAgICAgICAgICAgXTtcblxuXHQgICAgICAgICAgICAvLyBHZW5lcmF0ZSBpbml0aWFsIGNvdW50ZXIgdmFsdWVzXG5cdCAgICAgICAgICAgIHZhciBDID0gdGhpcy5fQyA9IFtcblx0ICAgICAgICAgICAgICAgIChLWzJdIDw8IDE2KSB8IChLWzJdID4+PiAxNiksIChLWzBdICYgMHhmZmZmMDAwMCkgfCAoS1sxXSAmIDB4MDAwMGZmZmYpLFxuXHQgICAgICAgICAgICAgICAgKEtbM10gPDwgMTYpIHwgKEtbM10gPj4+IDE2KSwgKEtbMV0gJiAweGZmZmYwMDAwKSB8IChLWzJdICYgMHgwMDAwZmZmZiksXG5cdCAgICAgICAgICAgICAgICAoS1swXSA8PCAxNikgfCAoS1swXSA+Pj4gMTYpLCAoS1syXSAmIDB4ZmZmZjAwMDApIHwgKEtbM10gJiAweDAwMDBmZmZmKSxcblx0ICAgICAgICAgICAgICAgIChLWzFdIDw8IDE2KSB8IChLWzFdID4+PiAxNiksIChLWzNdICYgMHhmZmZmMDAwMCkgfCAoS1swXSAmIDB4MDAwMGZmZmYpXG5cdCAgICAgICAgICAgIF07XG5cblx0ICAgICAgICAgICAgLy8gQ2FycnkgYml0XG5cdCAgICAgICAgICAgIHRoaXMuX2IgPSAwO1xuXG5cdCAgICAgICAgICAgIC8vIEl0ZXJhdGUgdGhlIHN5c3RlbSBmb3VyIHRpbWVzXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICBuZXh0U3RhdGUuY2FsbCh0aGlzKTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIE1vZGlmeSB0aGUgY291bnRlcnNcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIENbaV0gXj0gWFsoaSArIDQpICYgN107XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBJViBzZXR1cFxuXHQgICAgICAgICAgICBpZiAoaXYpIHtcblx0ICAgICAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICAgICAgdmFyIElWID0gaXYud29yZHM7XG5cdCAgICAgICAgICAgICAgICB2YXIgSVZfMCA9IElWWzBdO1xuXHQgICAgICAgICAgICAgICAgdmFyIElWXzEgPSBJVlsxXTtcblxuXHQgICAgICAgICAgICAgICAgLy8gR2VuZXJhdGUgZm91ciBzdWJ2ZWN0b3JzXG5cdCAgICAgICAgICAgICAgICB2YXIgaTAgPSAoKChJVl8wIDw8IDgpIHwgKElWXzAgPj4+IDI0KSkgJiAweDAwZmYwMGZmKSB8ICgoKElWXzAgPDwgMjQpIHwgKElWXzAgPj4+IDgpKSAmIDB4ZmYwMGZmMDApO1xuXHQgICAgICAgICAgICAgICAgdmFyIGkyID0gKCgoSVZfMSA8PCA4KSB8IChJVl8xID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfCAoKChJVl8xIDw8IDI0KSB8IChJVl8xID4+PiA4KSkgJiAweGZmMDBmZjAwKTtcblx0ICAgICAgICAgICAgICAgIHZhciBpMSA9IChpMCA+Pj4gMTYpIHwgKGkyICYgMHhmZmZmMDAwMCk7XG5cdCAgICAgICAgICAgICAgICB2YXIgaTMgPSAoaTIgPDwgMTYpICB8IChpMCAmIDB4MDAwMGZmZmYpO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBNb2RpZnkgY291bnRlciB2YWx1ZXNcblx0ICAgICAgICAgICAgICAgIENbMF0gXj0gaTA7XG5cdCAgICAgICAgICAgICAgICBDWzFdIF49IGkxO1xuXHQgICAgICAgICAgICAgICAgQ1syXSBePSBpMjtcblx0ICAgICAgICAgICAgICAgIENbM10gXj0gaTM7XG5cdCAgICAgICAgICAgICAgICBDWzRdIF49IGkwO1xuXHQgICAgICAgICAgICAgICAgQ1s1XSBePSBpMTtcblx0ICAgICAgICAgICAgICAgIENbNl0gXj0gaTI7XG5cdCAgICAgICAgICAgICAgICBDWzddIF49IGkzO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBJdGVyYXRlIHRoZSBzeXN0ZW0gZm91ciB0aW1lc1xuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgICAgICBuZXh0U3RhdGUuY2FsbCh0aGlzKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9Qcm9jZXNzQmxvY2s6IGZ1bmN0aW9uIChNLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIFggPSB0aGlzLl9YO1xuXG5cdCAgICAgICAgICAgIC8vIEl0ZXJhdGUgdGhlIHN5c3RlbVxuXHQgICAgICAgICAgICBuZXh0U3RhdGUuY2FsbCh0aGlzKTtcblxuXHQgICAgICAgICAgICAvLyBHZW5lcmF0ZSBmb3VyIGtleXN0cmVhbSB3b3Jkc1xuXHQgICAgICAgICAgICBTWzBdID0gWFswXSBeIChYWzVdID4+PiAxNikgXiAoWFszXSA8PCAxNik7XG5cdCAgICAgICAgICAgIFNbMV0gPSBYWzJdIF4gKFhbN10gPj4+IDE2KSBeIChYWzVdIDw8IDE2KTtcblx0ICAgICAgICAgICAgU1syXSA9IFhbNF0gXiAoWFsxXSA+Pj4gMTYpIF4gKFhbN10gPDwgMTYpO1xuXHQgICAgICAgICAgICBTWzNdID0gWFs2XSBeIChYWzNdID4+PiAxNikgXiAoWFsxXSA8PCAxNik7XG5cblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIC8vIFN3YXAgZW5kaWFuXG5cdCAgICAgICAgICAgICAgICBTW2ldID0gKCgoU1tpXSA8PCA4KSAgfCAoU1tpXSA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcblx0ICAgICAgICAgICAgICAgICAgICAgICAoKChTW2ldIDw8IDI0KSB8IChTW2ldID4+PiA4KSkgICYgMHhmZjAwZmYwMCk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIEVuY3J5cHRcblx0ICAgICAgICAgICAgICAgIE1bb2Zmc2V0ICsgaV0gXj0gU1tpXTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBibG9ja1NpemU6IDEyOC8zMixcblxuXHQgICAgICAgIGl2U2l6ZTogNjQvMzJcblx0ICAgIH0pO1xuXG5cdCAgICBmdW5jdGlvbiBuZXh0U3RhdGUoKSB7XG5cdCAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgdmFyIFggPSB0aGlzLl9YO1xuXHQgICAgICAgIHZhciBDID0gdGhpcy5fQztcblxuXHQgICAgICAgIC8vIFNhdmUgb2xkIGNvdW50ZXIgdmFsdWVzXG5cdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHtcblx0ICAgICAgICAgICAgQ19baV0gPSBDW2ldO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIC8vIENhbGN1bGF0ZSBuZXcgY291bnRlciB2YWx1ZXNcblx0ICAgICAgICBDWzBdID0gKENbMF0gKyAweDRkMzRkMzRkICsgdGhpcy5fYikgfCAwO1xuXHQgICAgICAgIENbMV0gPSAoQ1sxXSArIDB4ZDM0ZDM0ZDMgKyAoKENbMF0gPj4+IDApIDwgKENfWzBdID4+PiAwKSA/IDEgOiAwKSkgfCAwO1xuXHQgICAgICAgIENbMl0gPSAoQ1syXSArIDB4MzRkMzRkMzQgKyAoKENbMV0gPj4+IDApIDwgKENfWzFdID4+PiAwKSA/IDEgOiAwKSkgfCAwO1xuXHQgICAgICAgIENbM10gPSAoQ1szXSArIDB4NGQzNGQzNGQgKyAoKENbMl0gPj4+IDApIDwgKENfWzJdID4+PiAwKSA/IDEgOiAwKSkgfCAwO1xuXHQgICAgICAgIENbNF0gPSAoQ1s0XSArIDB4ZDM0ZDM0ZDMgKyAoKENbM10gPj4+IDApIDwgKENfWzNdID4+PiAwKSA/IDEgOiAwKSkgfCAwO1xuXHQgICAgICAgIENbNV0gPSAoQ1s1XSArIDB4MzRkMzRkMzQgKyAoKENbNF0gPj4+IDApIDwgKENfWzRdID4+PiAwKSA/IDEgOiAwKSkgfCAwO1xuXHQgICAgICAgIENbNl0gPSAoQ1s2XSArIDB4NGQzNGQzNGQgKyAoKENbNV0gPj4+IDApIDwgKENfWzVdID4+PiAwKSA/IDEgOiAwKSkgfCAwO1xuXHQgICAgICAgIENbN10gPSAoQ1s3XSArIDB4ZDM0ZDM0ZDMgKyAoKENbNl0gPj4+IDApIDwgKENfWzZdID4+PiAwKSA/IDEgOiAwKSkgfCAwO1xuXHQgICAgICAgIHRoaXMuX2IgPSAoQ1s3XSA+Pj4gMCkgPCAoQ19bN10gPj4+IDApID8gMSA6IDA7XG5cblx0ICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGctdmFsdWVzXG5cdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHtcblx0ICAgICAgICAgICAgdmFyIGd4ID0gWFtpXSArIENbaV07XG5cblx0ICAgICAgICAgICAgLy8gQ29uc3RydWN0IGhpZ2ggYW5kIGxvdyBhcmd1bWVudCBmb3Igc3F1YXJpbmdcblx0ICAgICAgICAgICAgdmFyIGdhID0gZ3ggJiAweGZmZmY7XG5cdCAgICAgICAgICAgIHZhciBnYiA9IGd4ID4+PiAxNjtcblxuXHQgICAgICAgICAgICAvLyBDYWxjdWxhdGUgaGlnaCBhbmQgbG93IHJlc3VsdCBvZiBzcXVhcmluZ1xuXHQgICAgICAgICAgICB2YXIgZ2ggPSAoKCgoZ2EgKiBnYSkgPj4+IDE3KSArIGdhICogZ2IpID4+PiAxNSkgKyBnYiAqIGdiO1xuXHQgICAgICAgICAgICB2YXIgZ2wgPSAoKChneCAmIDB4ZmZmZjAwMDApICogZ3gpIHwgMCkgKyAoKChneCAmIDB4MDAwMGZmZmYpICogZ3gpIHwgMCk7XG5cblx0ICAgICAgICAgICAgLy8gSGlnaCBYT1IgbG93XG5cdCAgICAgICAgICAgIEdbaV0gPSBnaCBeIGdsO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIC8vIENhbGN1bGF0ZSBuZXcgc3RhdGUgdmFsdWVzXG5cdCAgICAgICAgWFswXSA9IChHWzBdICsgKChHWzddIDw8IDE2KSB8IChHWzddID4+PiAxNikpICsgKChHWzZdIDw8IDE2KSB8IChHWzZdID4+PiAxNikpKSB8IDA7XG5cdCAgICAgICAgWFsxXSA9IChHWzFdICsgKChHWzBdIDw8IDgpICB8IChHWzBdID4+PiAyNCkpICsgR1s3XSkgfCAwO1xuXHQgICAgICAgIFhbMl0gPSAoR1syXSArICgoR1sxXSA8PCAxNikgfCAoR1sxXSA+Pj4gMTYpKSArICgoR1swXSA8PCAxNikgfCAoR1swXSA+Pj4gMTYpKSkgfCAwO1xuXHQgICAgICAgIFhbM10gPSAoR1szXSArICgoR1syXSA8PCA4KSAgfCAoR1syXSA+Pj4gMjQpKSArIEdbMV0pIHwgMDtcblx0ICAgICAgICBYWzRdID0gKEdbNF0gKyAoKEdbM10gPDwgMTYpIHwgKEdbM10gPj4+IDE2KSkgKyAoKEdbMl0gPDwgMTYpIHwgKEdbMl0gPj4+IDE2KSkpIHwgMDtcblx0ICAgICAgICBYWzVdID0gKEdbNV0gKyAoKEdbNF0gPDwgOCkgIHwgKEdbNF0gPj4+IDI0KSkgKyBHWzNdKSB8IDA7XG5cdCAgICAgICAgWFs2XSA9IChHWzZdICsgKChHWzVdIDw8IDE2KSB8IChHWzVdID4+PiAxNikpICsgKChHWzRdIDw8IDE2KSB8IChHWzRdID4+PiAxNikpKSB8IDA7XG5cdCAgICAgICAgWFs3XSA9IChHWzddICsgKChHWzZdIDw8IDgpICB8IChHWzZdID4+PiAyNCkpICsgR1s1XSkgfCAwO1xuXHQgICAgfVxuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9ucyB0byB0aGUgY2lwaGVyJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgY2lwaGVydGV4dCA9IENyeXB0b0pTLlJhYmJpdC5lbmNyeXB0KG1lc3NhZ2UsIGtleSwgY2ZnKTtcblx0ICAgICAqICAgICB2YXIgcGxhaW50ZXh0ICA9IENyeXB0b0pTLlJhYmJpdC5kZWNyeXB0KGNpcGhlcnRleHQsIGtleSwgY2ZnKTtcblx0ICAgICAqL1xuXHQgICAgQy5SYWJiaXQgPSBTdHJlYW1DaXBoZXIuX2NyZWF0ZUhlbHBlcihSYWJiaXQpO1xuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLlJhYmJpdDtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9lbmMtYmFzZTY0XCIpLCByZXF1aXJlKFwiLi9tZDVcIiksIHJlcXVpcmUoXCIuL2V2cGtkZlwiKSwgcmVxdWlyZShcIi4vY2lwaGVyLWNvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4vZW5jLWJhc2U2NFwiLCBcIi4vbWQ1XCIsIFwiLi9ldnBrZGZcIiwgXCIuL2NpcGhlci1jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfbGliID0gQy5saWI7XG5cdCAgICB2YXIgU3RyZWFtQ2lwaGVyID0gQ19saWIuU3RyZWFtQ2lwaGVyO1xuXHQgICAgdmFyIENfYWxnbyA9IEMuYWxnbztcblxuXHQgICAgLyoqXG5cdCAgICAgKiBSQzQgc3RyZWFtIGNpcGhlciBhbGdvcml0aG0uXG5cdCAgICAgKi9cblx0ICAgIHZhciBSQzQgPSBDX2FsZ28uUkM0ID0gU3RyZWFtQ2lwaGVyLmV4dGVuZCh7XG5cdCAgICAgICAgX2RvUmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBrZXkgPSB0aGlzLl9rZXk7XG5cdCAgICAgICAgICAgIHZhciBrZXlXb3JkcyA9IGtleS53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIGtleVNpZ0J5dGVzID0ga2V5LnNpZ0J5dGVzO1xuXG5cdCAgICAgICAgICAgIC8vIEluaXQgc2JveFxuXHQgICAgICAgICAgICB2YXIgUyA9IHRoaXMuX1MgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgU1tpXSA9IGk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBLZXkgc2V0dXBcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGogPSAwOyBpIDwgMjU2OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIHZhciBrZXlCeXRlSW5kZXggPSBpICUga2V5U2lnQnl0ZXM7XG5cdCAgICAgICAgICAgICAgICB2YXIga2V5Qnl0ZSA9IChrZXlXb3Jkc1trZXlCeXRlSW5kZXggPj4+IDJdID4+PiAoMjQgLSAoa2V5Qnl0ZUluZGV4ICUgNCkgKiA4KSkgJiAweGZmO1xuXG5cdCAgICAgICAgICAgICAgICBqID0gKGogKyBTW2ldICsga2V5Qnl0ZSkgJSAyNTY7XG5cblx0ICAgICAgICAgICAgICAgIC8vIFN3YXBcblx0ICAgICAgICAgICAgICAgIHZhciB0ID0gU1tpXTtcblx0ICAgICAgICAgICAgICAgIFNbaV0gPSBTW2pdO1xuXHQgICAgICAgICAgICAgICAgU1tqXSA9IHQ7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBDb3VudGVyc1xuXHQgICAgICAgICAgICB0aGlzLl9pID0gdGhpcy5faiA9IDA7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb1Byb2Nlc3NCbG9jazogZnVuY3Rpb24gKE0sIG9mZnNldCkge1xuXHQgICAgICAgICAgICBNW29mZnNldF0gXj0gZ2VuZXJhdGVLZXlzdHJlYW1Xb3JkLmNhbGwodGhpcyk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGtleVNpemU6IDI1Ni8zMixcblxuXHQgICAgICAgIGl2U2l6ZTogMFxuXHQgICAgfSk7XG5cblx0ICAgIGZ1bmN0aW9uIGdlbmVyYXRlS2V5c3RyZWFtV29yZCgpIHtcblx0ICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICB2YXIgUyA9IHRoaXMuX1M7XG5cdCAgICAgICAgdmFyIGkgPSB0aGlzLl9pO1xuXHQgICAgICAgIHZhciBqID0gdGhpcy5fajtcblxuXHQgICAgICAgIC8vIEdlbmVyYXRlIGtleXN0cmVhbSB3b3JkXG5cdCAgICAgICAgdmFyIGtleXN0cmVhbVdvcmQgPSAwO1xuXHQgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgNDsgbisrKSB7XG5cdCAgICAgICAgICAgIGkgPSAoaSArIDEpICUgMjU2O1xuXHQgICAgICAgICAgICBqID0gKGogKyBTW2ldKSAlIDI1NjtcblxuXHQgICAgICAgICAgICAvLyBTd2FwXG5cdCAgICAgICAgICAgIHZhciB0ID0gU1tpXTtcblx0ICAgICAgICAgICAgU1tpXSA9IFNbal07XG5cdCAgICAgICAgICAgIFNbal0gPSB0O1xuXG5cdCAgICAgICAgICAgIGtleXN0cmVhbVdvcmQgfD0gU1soU1tpXSArIFNbal0pICUgMjU2XSA8PCAoMjQgLSBuICogOCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgLy8gVXBkYXRlIGNvdW50ZXJzXG5cdCAgICAgICAgdGhpcy5faSA9IGk7XG5cdCAgICAgICAgdGhpcy5faiA9IGo7XG5cblx0ICAgICAgICByZXR1cm4ga2V5c3RyZWFtV29yZDtcblx0ICAgIH1cblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbnMgdG8gdGhlIGNpcGhlcidzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGNpcGhlcnRleHQgPSBDcnlwdG9KUy5SQzQuZW5jcnlwdChtZXNzYWdlLCBrZXksIGNmZyk7XG5cdCAgICAgKiAgICAgdmFyIHBsYWludGV4dCAgPSBDcnlwdG9KUy5SQzQuZGVjcnlwdChjaXBoZXJ0ZXh0LCBrZXksIGNmZyk7XG5cdCAgICAgKi9cblx0ICAgIEMuUkM0ID0gU3RyZWFtQ2lwaGVyLl9jcmVhdGVIZWxwZXIoUkM0KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBNb2RpZmllZCBSQzQgc3RyZWFtIGNpcGhlciBhbGdvcml0aG0uXG5cdCAgICAgKi9cblx0ICAgIHZhciBSQzREcm9wID0gQ19hbGdvLlJDNERyb3AgPSBSQzQuZXh0ZW5kKHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcHJvcGVydHkge251bWJlcn0gZHJvcCBUaGUgbnVtYmVyIG9mIGtleXN0cmVhbSB3b3JkcyB0byBkcm9wLiBEZWZhdWx0IDE5MlxuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNmZzogUkM0LmNmZy5leHRlbmQoe1xuXHQgICAgICAgICAgICBkcm9wOiAxOTJcblx0ICAgICAgICB9KSxcblxuXHQgICAgICAgIF9kb1Jlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIFJDNC5fZG9SZXNldC5jYWxsKHRoaXMpO1xuXG5cdCAgICAgICAgICAgIC8vIERyb3Bcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IHRoaXMuY2ZnLmRyb3A7IGkgPiAwOyBpLS0pIHtcblx0ICAgICAgICAgICAgICAgIGdlbmVyYXRlS2V5c3RyZWFtV29yZC5jYWxsKHRoaXMpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb25zIHRvIHRoZSBjaXBoZXIncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBjaXBoZXJ0ZXh0ID0gQ3J5cHRvSlMuUkM0RHJvcC5lbmNyeXB0KG1lc3NhZ2UsIGtleSwgY2ZnKTtcblx0ICAgICAqICAgICB2YXIgcGxhaW50ZXh0ICA9IENyeXB0b0pTLlJDNERyb3AuZGVjcnlwdChjaXBoZXJ0ZXh0LCBrZXksIGNmZyk7XG5cdCAgICAgKi9cblx0ICAgIEMuUkM0RHJvcCA9IFN0cmVhbUNpcGhlci5fY3JlYXRlSGVscGVyKFJDNERyb3ApO1xuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLlJDNDtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0LyoqIEBwcmVzZXJ2ZVxuXHQoYykgMjAxMiBieSBDw6lkcmljIE1lc25pbC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cblxuXHRSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG5cblx0ICAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuXHQgICAgLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cblx0VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuXHQqL1xuXG5cdChmdW5jdGlvbiAoTWF0aCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfbGliID0gQy5saWI7XG5cdCAgICB2YXIgV29yZEFycmF5ID0gQ19saWIuV29yZEFycmF5O1xuXHQgICAgdmFyIEhhc2hlciA9IENfbGliLkhhc2hlcjtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cblx0ICAgIC8vIENvbnN0YW50cyB0YWJsZVxuXHQgICAgdmFyIF96bCA9IFdvcmRBcnJheS5jcmVhdGUoW1xuXHQgICAgICAgIDAsICAxLCAgMiwgIDMsICA0LCAgNSwgIDYsICA3LCAgOCwgIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsXG5cdCAgICAgICAgNywgIDQsIDEzLCAgMSwgMTAsICA2LCAxNSwgIDMsIDEyLCAgMCwgIDksICA1LCAgMiwgMTQsIDExLCAgOCxcblx0ICAgICAgICAzLCAxMCwgMTQsICA0LCAgOSwgMTUsICA4LCAgMSwgIDIsICA3LCAgMCwgIDYsIDEzLCAxMSwgIDUsIDEyLFxuXHQgICAgICAgIDEsICA5LCAxMSwgMTAsICAwLCAgOCwgMTIsICA0LCAxMywgIDMsICA3LCAxNSwgMTQsICA1LCAgNiwgIDIsXG5cdCAgICAgICAgNCwgIDAsICA1LCAgOSwgIDcsIDEyLCAgMiwgMTAsIDE0LCAgMSwgIDMsICA4LCAxMSwgIDYsIDE1LCAxM10pO1xuXHQgICAgdmFyIF96ciA9IFdvcmRBcnJheS5jcmVhdGUoW1xuXHQgICAgICAgIDUsIDE0LCAgNywgIDAsICA5LCAgMiwgMTEsICA0LCAxMywgIDYsIDE1LCAgOCwgIDEsIDEwLCAgMywgMTIsXG5cdCAgICAgICAgNiwgMTEsICAzLCAgNywgIDAsIDEzLCAgNSwgMTAsIDE0LCAxNSwgIDgsIDEyLCAgNCwgIDksICAxLCAgMixcblx0ICAgICAgICAxNSwgIDUsICAxLCAgMywgIDcsIDE0LCAgNiwgIDksIDExLCAgOCwgMTIsICAyLCAxMCwgIDAsICA0LCAxMyxcblx0ICAgICAgICA4LCAgNiwgIDQsICAxLCAgMywgMTEsIDE1LCAgMCwgIDUsIDEyLCAgMiwgMTMsICA5LCAgNywgMTAsIDE0LFxuXHQgICAgICAgIDEyLCAxNSwgMTAsICA0LCAgMSwgIDUsICA4LCAgNywgIDYsICAyLCAxMywgMTQsICAwLCAgMywgIDksIDExXSk7XG5cdCAgICB2YXIgX3NsID0gV29yZEFycmF5LmNyZWF0ZShbXG5cdCAgICAgICAgIDExLCAxNCwgMTUsIDEyLCAgNSwgIDgsICA3LCAgOSwgMTEsIDEzLCAxNCwgMTUsICA2LCAgNywgIDksICA4LFxuXHQgICAgICAgIDcsIDYsICAgOCwgMTMsIDExLCAgOSwgIDcsIDE1LCAgNywgMTIsIDE1LCAgOSwgMTEsICA3LCAxMywgMTIsXG5cdCAgICAgICAgMTEsIDEzLCAgNiwgIDcsIDE0LCAgOSwgMTMsIDE1LCAxNCwgIDgsIDEzLCAgNiwgIDUsIDEyLCAgNywgIDUsXG5cdCAgICAgICAgICAxMSwgMTIsIDE0LCAxNSwgMTQsIDE1LCAgOSwgIDgsICA5LCAxNCwgIDUsICA2LCAgOCwgIDYsICA1LCAxMixcblx0ICAgICAgICA5LCAxNSwgIDUsIDExLCAgNiwgIDgsIDEzLCAxMiwgIDUsIDEyLCAxMywgMTQsIDExLCAgOCwgIDUsICA2IF0pO1xuXHQgICAgdmFyIF9zciA9IFdvcmRBcnJheS5jcmVhdGUoW1xuXHQgICAgICAgIDgsICA5LCAgOSwgMTEsIDEzLCAxNSwgMTUsICA1LCAgNywgIDcsICA4LCAxMSwgMTQsIDE0LCAxMiwgIDYsXG5cdCAgICAgICAgOSwgMTMsIDE1LCAgNywgMTIsICA4LCAgOSwgMTEsICA3LCAgNywgMTIsICA3LCAgNiwgMTUsIDEzLCAxMSxcblx0ICAgICAgICA5LCAgNywgMTUsIDExLCAgOCwgIDYsICA2LCAxNCwgMTIsIDEzLCAgNSwgMTQsIDEzLCAxMywgIDcsICA1LFxuXHQgICAgICAgIDE1LCAgNSwgIDgsIDExLCAxNCwgMTQsICA2LCAxNCwgIDYsICA5LCAxMiwgIDksIDEyLCAgNSwgMTUsICA4LFxuXHQgICAgICAgIDgsICA1LCAxMiwgIDksIDEyLCAgNSwgMTQsICA2LCAgOCwgMTMsICA2LCAgNSwgMTUsIDEzLCAxMSwgMTEgXSk7XG5cblx0ICAgIHZhciBfaGwgPSAgV29yZEFycmF5LmNyZWF0ZShbIDB4MDAwMDAwMDAsIDB4NUE4Mjc5OTksIDB4NkVEOUVCQTEsIDB4OEYxQkJDREMsIDB4QTk1M0ZENEVdKTtcblx0ICAgIHZhciBfaHIgPSAgV29yZEFycmF5LmNyZWF0ZShbIDB4NTBBMjhCRTYsIDB4NUM0REQxMjQsIDB4NkQ3MDNFRjMsIDB4N0E2RDc2RTksIDB4MDAwMDAwMDBdKTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBSSVBFTUQxNjAgaGFzaCBhbGdvcml0aG0uXG5cdCAgICAgKi9cblx0ICAgIHZhciBSSVBFTUQxNjAgPSBDX2FsZ28uUklQRU1EMTYwID0gSGFzaGVyLmV4dGVuZCh7XG5cdCAgICAgICAgX2RvUmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdGhpcy5faGFzaCAgPSBXb3JkQXJyYXkuY3JlYXRlKFsweDY3NDUyMzAxLCAweEVGQ0RBQjg5LCAweDk4QkFEQ0ZFLCAweDEwMzI1NDc2LCAweEMzRDJFMUYwXSk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb1Byb2Nlc3NCbG9jazogZnVuY3Rpb24gKE0sIG9mZnNldCkge1xuXG5cdCAgICAgICAgICAgIC8vIFN3YXAgZW5kaWFuXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0X2kgPSBvZmZzZXQgKyBpO1xuXHQgICAgICAgICAgICAgICAgdmFyIE1fb2Zmc2V0X2kgPSBNW29mZnNldF9pXTtcblxuXHQgICAgICAgICAgICAgICAgLy8gU3dhcFxuXHQgICAgICAgICAgICAgICAgTVtvZmZzZXRfaV0gPSAoXG5cdCAgICAgICAgICAgICAgICAgICAgKCgoTV9vZmZzZXRfaSA8PCA4KSAgfCAoTV9vZmZzZXRfaSA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcblx0ICAgICAgICAgICAgICAgICAgICAoKChNX29mZnNldF9pIDw8IDI0KSB8IChNX29mZnNldF9pID4+PiA4KSkgICYgMHhmZjAwZmYwMClcblx0ICAgICAgICAgICAgICAgICk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIEggID0gdGhpcy5faGFzaC53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIGhsID0gX2hsLndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgaHIgPSBfaHIud29yZHM7XG5cdCAgICAgICAgICAgIHZhciB6bCA9IF96bC53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIHpyID0gX3pyLndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgc2wgPSBfc2wud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBzciA9IF9zci53b3JkcztcblxuXHQgICAgICAgICAgICAvLyBXb3JraW5nIHZhcmlhYmxlc1xuXHQgICAgICAgICAgICB2YXIgYWwsIGJsLCBjbCwgZGwsIGVsO1xuXHQgICAgICAgICAgICB2YXIgYXIsIGJyLCBjciwgZHIsIGVyO1xuXG5cdCAgICAgICAgICAgIGFyID0gYWwgPSBIWzBdO1xuXHQgICAgICAgICAgICBiciA9IGJsID0gSFsxXTtcblx0ICAgICAgICAgICAgY3IgPSBjbCA9IEhbMl07XG5cdCAgICAgICAgICAgIGRyID0gZGwgPSBIWzNdO1xuXHQgICAgICAgICAgICBlciA9IGVsID0gSFs0XTtcblx0ICAgICAgICAgICAgLy8gQ29tcHV0YXRpb25cblx0ICAgICAgICAgICAgdmFyIHQ7XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODA7IGkgKz0gMSkge1xuXHQgICAgICAgICAgICAgICAgdCA9IChhbCArICBNW29mZnNldCt6bFtpXV0pfDA7XG5cdCAgICAgICAgICAgICAgICBpZiAoaTwxNil7XG5cdFx0ICAgICAgICAgICAgdCArPSAgZjEoYmwsY2wsZGwpICsgaGxbMF07XG5cdCAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGk8MzIpIHtcblx0XHQgICAgICAgICAgICB0ICs9ICBmMihibCxjbCxkbCkgKyBobFsxXTtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaTw0OCkge1xuXHRcdCAgICAgICAgICAgIHQgKz0gIGYzKGJsLGNsLGRsKSArIGhsWzJdO1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpPDY0KSB7XG5cdFx0ICAgICAgICAgICAgdCArPSAgZjQoYmwsY2wsZGwpICsgaGxbM107XG5cdCAgICAgICAgICAgICAgICB9IGVsc2Ugey8vIGlmIChpPDgwKSB7XG5cdFx0ICAgICAgICAgICAgdCArPSAgZjUoYmwsY2wsZGwpICsgaGxbNF07XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICB0ID0gdHwwO1xuXHQgICAgICAgICAgICAgICAgdCA9ICByb3RsKHQsc2xbaV0pO1xuXHQgICAgICAgICAgICAgICAgdCA9ICh0K2VsKXwwO1xuXHQgICAgICAgICAgICAgICAgYWwgPSBlbDtcblx0ICAgICAgICAgICAgICAgIGVsID0gZGw7XG5cdCAgICAgICAgICAgICAgICBkbCA9IHJvdGwoY2wsIDEwKTtcblx0ICAgICAgICAgICAgICAgIGNsID0gYmw7XG5cdCAgICAgICAgICAgICAgICBibCA9IHQ7XG5cblx0ICAgICAgICAgICAgICAgIHQgPSAoYXIgKyBNW29mZnNldCt6cltpXV0pfDA7XG5cdCAgICAgICAgICAgICAgICBpZiAoaTwxNil7XG5cdFx0ICAgICAgICAgICAgdCArPSAgZjUoYnIsY3IsZHIpICsgaHJbMF07XG5cdCAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGk8MzIpIHtcblx0XHQgICAgICAgICAgICB0ICs9ICBmNChicixjcixkcikgKyBoclsxXTtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaTw0OCkge1xuXHRcdCAgICAgICAgICAgIHQgKz0gIGYzKGJyLGNyLGRyKSArIGhyWzJdO1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpPDY0KSB7XG5cdFx0ICAgICAgICAgICAgdCArPSAgZjIoYnIsY3IsZHIpICsgaHJbM107XG5cdCAgICAgICAgICAgICAgICB9IGVsc2Ugey8vIGlmIChpPDgwKSB7XG5cdFx0ICAgICAgICAgICAgdCArPSAgZjEoYnIsY3IsZHIpICsgaHJbNF07XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICB0ID0gdHwwO1xuXHQgICAgICAgICAgICAgICAgdCA9ICByb3RsKHQsc3JbaV0pIDtcblx0ICAgICAgICAgICAgICAgIHQgPSAodCtlcil8MDtcblx0ICAgICAgICAgICAgICAgIGFyID0gZXI7XG5cdCAgICAgICAgICAgICAgICBlciA9IGRyO1xuXHQgICAgICAgICAgICAgICAgZHIgPSByb3RsKGNyLCAxMCk7XG5cdCAgICAgICAgICAgICAgICBjciA9IGJyO1xuXHQgICAgICAgICAgICAgICAgYnIgPSB0O1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIC8vIEludGVybWVkaWF0ZSBoYXNoIHZhbHVlXG5cdCAgICAgICAgICAgIHQgICAgPSAoSFsxXSArIGNsICsgZHIpfDA7XG5cdCAgICAgICAgICAgIEhbMV0gPSAoSFsyXSArIGRsICsgZXIpfDA7XG5cdCAgICAgICAgICAgIEhbMl0gPSAoSFszXSArIGVsICsgYXIpfDA7XG5cdCAgICAgICAgICAgIEhbM10gPSAoSFs0XSArIGFsICsgYnIpfDA7XG5cdCAgICAgICAgICAgIEhbNF0gPSAoSFswXSArIGJsICsgY3IpfDA7XG5cdCAgICAgICAgICAgIEhbMF0gPSAgdDtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvRmluYWxpemU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy5fZGF0YTtcblx0ICAgICAgICAgICAgdmFyIGRhdGFXb3JkcyA9IGRhdGEud29yZHM7XG5cblx0ICAgICAgICAgICAgdmFyIG5CaXRzVG90YWwgPSB0aGlzLl9uRGF0YUJ5dGVzICogODtcblx0ICAgICAgICAgICAgdmFyIG5CaXRzTGVmdCA9IGRhdGEuc2lnQnl0ZXMgKiA4O1xuXG5cdCAgICAgICAgICAgIC8vIEFkZCBwYWRkaW5nXG5cdCAgICAgICAgICAgIGRhdGFXb3Jkc1tuQml0c0xlZnQgPj4+IDVdIHw9IDB4ODAgPDwgKDI0IC0gbkJpdHNMZWZ0ICUgMzIpO1xuXHQgICAgICAgICAgICBkYXRhV29yZHNbKCgobkJpdHNMZWZ0ICsgNjQpID4+PiA5KSA8PCA0KSArIDE0XSA9IChcblx0ICAgICAgICAgICAgICAgICgoKG5CaXRzVG90YWwgPDwgOCkgIHwgKG5CaXRzVG90YWwgPj4+IDI0KSkgJiAweDAwZmYwMGZmKSB8XG5cdCAgICAgICAgICAgICAgICAoKChuQml0c1RvdGFsIDw8IDI0KSB8IChuQml0c1RvdGFsID4+PiA4KSkgICYgMHhmZjAwZmYwMClcblx0ICAgICAgICAgICAgKTtcblx0ICAgICAgICAgICAgZGF0YS5zaWdCeXRlcyA9IChkYXRhV29yZHMubGVuZ3RoICsgMSkgKiA0O1xuXG5cdCAgICAgICAgICAgIC8vIEhhc2ggZmluYWwgYmxvY2tzXG5cdCAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3MoKTtcblxuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGhhc2ggPSB0aGlzLl9oYXNoO1xuXHQgICAgICAgICAgICB2YXIgSCA9IGhhc2gud29yZHM7XG5cblx0ICAgICAgICAgICAgLy8gU3dhcCBlbmRpYW5cblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgICAgICB2YXIgSF9pID0gSFtpXTtcblxuXHQgICAgICAgICAgICAgICAgLy8gU3dhcFxuXHQgICAgICAgICAgICAgICAgSFtpXSA9ICgoKEhfaSA8PCA4KSAgfCAoSF9pID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuXHQgICAgICAgICAgICAgICAgICAgICAgICgoKEhfaSA8PCAyNCkgfCAoSF9pID4+PiA4KSkgICYgMHhmZjAwZmYwMCk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBSZXR1cm4gZmluYWwgY29tcHV0ZWQgaGFzaFxuXHQgICAgICAgICAgICByZXR1cm4gaGFzaDtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgY2xvbmU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdmFyIGNsb25lID0gSGFzaGVyLmNsb25lLmNhbGwodGhpcyk7XG5cdCAgICAgICAgICAgIGNsb25lLl9oYXNoID0gdGhpcy5faGFzaC5jbG9uZSgpO1xuXG5cdCAgICAgICAgICAgIHJldHVybiBjbG9uZTtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXG5cdCAgICBmdW5jdGlvbiBmMSh4LCB5LCB6KSB7XG5cdCAgICAgICAgcmV0dXJuICgoeCkgXiAoeSkgXiAoeikpO1xuXG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIGYyKHgsIHksIHopIHtcblx0ICAgICAgICByZXR1cm4gKCgoeCkmKHkpKSB8ICgofngpJih6KSkpO1xuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBmMyh4LCB5LCB6KSB7XG5cdCAgICAgICAgcmV0dXJuICgoKHgpIHwgKH4oeSkpKSBeICh6KSk7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIGY0KHgsIHksIHopIHtcblx0ICAgICAgICByZXR1cm4gKCgoeCkgJiAoeikpIHwgKCh5KSYofih6KSkpKTtcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gZjUoeCwgeSwgeikge1xuXHQgICAgICAgIHJldHVybiAoKHgpIF4gKCh5KSB8KH4oeikpKSk7XG5cblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gcm90bCh4LG4pIHtcblx0ICAgICAgICByZXR1cm4gKHg8PG4pIHwgKHg+Pj4oMzItbikpO1xuXHQgICAgfVxuXG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb24gdG8gdGhlIGhhc2hlcidzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGhhc2guXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgaGFzaC5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGhhc2ggPSBDcnlwdG9KUy5SSVBFTUQxNjAoJ21lc3NhZ2UnKTtcblx0ICAgICAqICAgICB2YXIgaGFzaCA9IENyeXB0b0pTLlJJUEVNRDE2MCh3b3JkQXJyYXkpO1xuXHQgICAgICovXG5cdCAgICBDLlJJUEVNRDE2MCA9IEhhc2hlci5fY3JlYXRlSGVscGVyKFJJUEVNRDE2MCk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb24gdG8gdGhlIEhNQUMncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBoYXNoLlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBrZXkgVGhlIHNlY3JldCBrZXkuXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgSE1BQy5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGhtYWMgPSBDcnlwdG9KUy5IbWFjUklQRU1EMTYwKG1lc3NhZ2UsIGtleSk7XG5cdCAgICAgKi9cblx0ICAgIEMuSG1hY1JJUEVNRDE2MCA9IEhhc2hlci5fY3JlYXRlSG1hY0hlbHBlcihSSVBFTUQxNjApO1xuXHR9KE1hdGgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5SSVBFTUQxNjA7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5KSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAoKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBXb3JkQXJyYXkgPSBDX2xpYi5Xb3JkQXJyYXk7XG5cdCAgICB2YXIgSGFzaGVyID0gQ19saWIuSGFzaGVyO1xuXHQgICAgdmFyIENfYWxnbyA9IEMuYWxnbztcblxuXHQgICAgLy8gUmV1c2FibGUgb2JqZWN0XG5cdCAgICB2YXIgVyA9IFtdO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNIQS0xIGhhc2ggYWxnb3JpdGhtLlxuXHQgICAgICovXG5cdCAgICB2YXIgU0hBMSA9IENfYWxnby5TSEExID0gSGFzaGVyLmV4dGVuZCh7XG5cdCAgICAgICAgX2RvUmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdGhpcy5faGFzaCA9IG5ldyBXb3JkQXJyYXkuaW5pdChbXG5cdCAgICAgICAgICAgICAgICAweDY3NDUyMzAxLCAweGVmY2RhYjg5LFxuXHQgICAgICAgICAgICAgICAgMHg5OGJhZGNmZSwgMHgxMDMyNTQ3Nixcblx0ICAgICAgICAgICAgICAgIDB4YzNkMmUxZjBcblx0ICAgICAgICAgICAgXSk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb1Byb2Nlc3NCbG9jazogZnVuY3Rpb24gKE0sIG9mZnNldCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICB2YXIgSCA9IHRoaXMuX2hhc2gud29yZHM7XG5cblx0ICAgICAgICAgICAgLy8gV29ya2luZyB2YXJpYWJsZXNcblx0ICAgICAgICAgICAgdmFyIGEgPSBIWzBdO1xuXHQgICAgICAgICAgICB2YXIgYiA9IEhbMV07XG5cdCAgICAgICAgICAgIHZhciBjID0gSFsyXTtcblx0ICAgICAgICAgICAgdmFyIGQgPSBIWzNdO1xuXHQgICAgICAgICAgICB2YXIgZSA9IEhbNF07XG5cblx0ICAgICAgICAgICAgLy8gQ29tcHV0YXRpb25cblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA4MDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICBpZiAoaSA8IDE2KSB7XG5cdCAgICAgICAgICAgICAgICAgICAgV1tpXSA9IE1bb2Zmc2V0ICsgaV0gfCAwO1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFdbaSAtIDNdIF4gV1tpIC0gOF0gXiBXW2kgLSAxNF0gXiBXW2kgLSAxNl07XG5cdCAgICAgICAgICAgICAgICAgICAgV1tpXSA9IChuIDw8IDEpIHwgKG4gPj4+IDMxKTtcblx0ICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgdmFyIHQgPSAoKGEgPDwgNSkgfCAoYSA+Pj4gMjcpKSArIGUgKyBXW2ldO1xuXHQgICAgICAgICAgICAgICAgaWYgKGkgPCAyMCkge1xuXHQgICAgICAgICAgICAgICAgICAgIHQgKz0gKChiICYgYykgfCAofmIgJiBkKSkgKyAweDVhODI3OTk5O1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpIDwgNDApIHtcblx0ICAgICAgICAgICAgICAgICAgICB0ICs9IChiIF4gYyBeIGQpICsgMHg2ZWQ5ZWJhMTtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaSA8IDYwKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdCArPSAoKGIgJiBjKSB8IChiICYgZCkgfCAoYyAmIGQpKSAtIDB4NzBlNDQzMjQ7XG5cdCAgICAgICAgICAgICAgICB9IGVsc2UgLyogaWYgKGkgPCA4MCkgKi8ge1xuXHQgICAgICAgICAgICAgICAgICAgIHQgKz0gKGIgXiBjIF4gZCkgLSAweDM1OWQzZTJhO1xuXHQgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICBlID0gZDtcblx0ICAgICAgICAgICAgICAgIGQgPSBjO1xuXHQgICAgICAgICAgICAgICAgYyA9IChiIDw8IDMwKSB8IChiID4+PiAyKTtcblx0ICAgICAgICAgICAgICAgIGIgPSBhO1xuXHQgICAgICAgICAgICAgICAgYSA9IHQ7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBJbnRlcm1lZGlhdGUgaGFzaCB2YWx1ZVxuXHQgICAgICAgICAgICBIWzBdID0gKEhbMF0gKyBhKSB8IDA7XG5cdCAgICAgICAgICAgIEhbMV0gPSAoSFsxXSArIGIpIHwgMDtcblx0ICAgICAgICAgICAgSFsyXSA9IChIWzJdICsgYykgfCAwO1xuXHQgICAgICAgICAgICBIWzNdID0gKEhbM10gKyBkKSB8IDA7XG5cdCAgICAgICAgICAgIEhbNF0gPSAoSFs0XSArIGUpIHwgMDtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvRmluYWxpemU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy5fZGF0YTtcblx0ICAgICAgICAgICAgdmFyIGRhdGFXb3JkcyA9IGRhdGEud29yZHM7XG5cblx0ICAgICAgICAgICAgdmFyIG5CaXRzVG90YWwgPSB0aGlzLl9uRGF0YUJ5dGVzICogODtcblx0ICAgICAgICAgICAgdmFyIG5CaXRzTGVmdCA9IGRhdGEuc2lnQnl0ZXMgKiA4O1xuXG5cdCAgICAgICAgICAgIC8vIEFkZCBwYWRkaW5nXG5cdCAgICAgICAgICAgIGRhdGFXb3Jkc1tuQml0c0xlZnQgPj4+IDVdIHw9IDB4ODAgPDwgKDI0IC0gbkJpdHNMZWZ0ICUgMzIpO1xuXHQgICAgICAgICAgICBkYXRhV29yZHNbKCgobkJpdHNMZWZ0ICsgNjQpID4+PiA5KSA8PCA0KSArIDE0XSA9IE1hdGguZmxvb3IobkJpdHNUb3RhbCAvIDB4MTAwMDAwMDAwKTtcblx0ICAgICAgICAgICAgZGF0YVdvcmRzWygoKG5CaXRzTGVmdCArIDY0KSA+Pj4gOSkgPDwgNCkgKyAxNV0gPSBuQml0c1RvdGFsO1xuXHQgICAgICAgICAgICBkYXRhLnNpZ0J5dGVzID0gZGF0YVdvcmRzLmxlbmd0aCAqIDQ7XG5cblx0ICAgICAgICAgICAgLy8gSGFzaCBmaW5hbCBibG9ja3Ncblx0ICAgICAgICAgICAgdGhpcy5fcHJvY2VzcygpO1xuXG5cdCAgICAgICAgICAgIC8vIFJldHVybiBmaW5hbCBjb21wdXRlZCBoYXNoXG5cdCAgICAgICAgICAgIHJldHVybiB0aGlzLl9oYXNoO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBjbG9uZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB2YXIgY2xvbmUgPSBIYXNoZXIuY2xvbmUuY2FsbCh0aGlzKTtcblx0ICAgICAgICAgICAgY2xvbmUuX2hhc2ggPSB0aGlzLl9oYXNoLmNsb25lKCk7XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGNsb25lO1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9uIHRvIHRoZSBoYXNoZXIncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBoYXNoLlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIGhhc2guXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBoYXNoID0gQ3J5cHRvSlMuU0hBMSgnbWVzc2FnZScpO1xuXHQgICAgICogICAgIHZhciBoYXNoID0gQ3J5cHRvSlMuU0hBMSh3b3JkQXJyYXkpO1xuXHQgICAgICovXG5cdCAgICBDLlNIQTEgPSBIYXNoZXIuX2NyZWF0ZUhlbHBlcihTSEExKTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbiB0byB0aGUgSE1BQydzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGhhc2guXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IGtleSBUaGUgc2VjcmV0IGtleS5cblx0ICAgICAqXG5cdCAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBITUFDLlxuXHQgICAgICpcblx0ICAgICAqIEBzdGF0aWNcblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgaG1hYyA9IENyeXB0b0pTLkhtYWNTSEExKG1lc3NhZ2UsIGtleSk7XG5cdCAgICAgKi9cblx0ICAgIEMuSG1hY1NIQTEgPSBIYXNoZXIuX2NyZWF0ZUhtYWNIZWxwZXIoU0hBMSk7XG5cdH0oKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMuU0hBMTtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9zaGEyNTZcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4vc2hhMjU2XCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfbGliID0gQy5saWI7XG5cdCAgICB2YXIgV29yZEFycmF5ID0gQ19saWIuV29yZEFycmF5O1xuXHQgICAgdmFyIENfYWxnbyA9IEMuYWxnbztcblx0ICAgIHZhciBTSEEyNTYgPSBDX2FsZ28uU0hBMjU2O1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNIQS0yMjQgaGFzaCBhbGdvcml0aG0uXG5cdCAgICAgKi9cblx0ICAgIHZhciBTSEEyMjQgPSBDX2FsZ28uU0hBMjI0ID0gU0hBMjU2LmV4dGVuZCh7XG5cdCAgICAgICAgX2RvUmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdGhpcy5faGFzaCA9IG5ldyBXb3JkQXJyYXkuaW5pdChbXG5cdCAgICAgICAgICAgICAgICAweGMxMDU5ZWQ4LCAweDM2N2NkNTA3LCAweDMwNzBkZDE3LCAweGY3MGU1OTM5LFxuXHQgICAgICAgICAgICAgICAgMHhmZmMwMGIzMSwgMHg2ODU4MTUxMSwgMHg2NGY5OGZhNywgMHhiZWZhNGZhNFxuXHQgICAgICAgICAgICBdKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvRmluYWxpemU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdmFyIGhhc2ggPSBTSEEyNTYuX2RvRmluYWxpemUuY2FsbCh0aGlzKTtcblxuXHQgICAgICAgICAgICBoYXNoLnNpZ0J5dGVzIC09IDQ7XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGhhc2g7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb24gdG8gdGhlIGhhc2hlcidzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGhhc2guXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgaGFzaC5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGhhc2ggPSBDcnlwdG9KUy5TSEEyMjQoJ21lc3NhZ2UnKTtcblx0ICAgICAqICAgICB2YXIgaGFzaCA9IENyeXB0b0pTLlNIQTIyNCh3b3JkQXJyYXkpO1xuXHQgICAgICovXG5cdCAgICBDLlNIQTIyNCA9IFNIQTI1Ni5fY3JlYXRlSGVscGVyKFNIQTIyNCk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb24gdG8gdGhlIEhNQUMncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBoYXNoLlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBrZXkgVGhlIHNlY3JldCBrZXkuXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgSE1BQy5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGhtYWMgPSBDcnlwdG9KUy5IbWFjU0hBMjI0KG1lc3NhZ2UsIGtleSk7XG5cdCAgICAgKi9cblx0ICAgIEMuSG1hY1NIQTIyNCA9IFNIQTI1Ni5fY3JlYXRlSG1hY0hlbHBlcihTSEEyMjQpO1xuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLlNIQTIyNDtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uIChNYXRoKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBXb3JkQXJyYXkgPSBDX2xpYi5Xb3JkQXJyYXk7XG5cdCAgICB2YXIgSGFzaGVyID0gQ19saWIuSGFzaGVyO1xuXHQgICAgdmFyIENfYWxnbyA9IEMuYWxnbztcblxuXHQgICAgLy8gSW5pdGlhbGl6YXRpb24gYW5kIHJvdW5kIGNvbnN0YW50cyB0YWJsZXNcblx0ICAgIHZhciBIID0gW107XG5cdCAgICB2YXIgSyA9IFtdO1xuXG5cdCAgICAvLyBDb21wdXRlIGNvbnN0YW50c1xuXHQgICAgKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICBmdW5jdGlvbiBpc1ByaW1lKG4pIHtcblx0ICAgICAgICAgICAgdmFyIHNxcnROID0gTWF0aC5zcXJ0KG4pO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBmYWN0b3IgPSAyOyBmYWN0b3IgPD0gc3FydE47IGZhY3RvcisrKSB7XG5cdCAgICAgICAgICAgICAgICBpZiAoIShuICUgZmFjdG9yKSkge1xuXHQgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiB0cnVlO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGZ1bmN0aW9uIGdldEZyYWN0aW9uYWxCaXRzKG4pIHtcblx0ICAgICAgICAgICAgcmV0dXJuICgobiAtIChuIHwgMCkpICogMHgxMDAwMDAwMDApIHwgMDtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB2YXIgbiA9IDI7XG5cdCAgICAgICAgdmFyIG5QcmltZSA9IDA7XG5cdCAgICAgICAgd2hpbGUgKG5QcmltZSA8IDY0KSB7XG5cdCAgICAgICAgICAgIGlmIChpc1ByaW1lKG4pKSB7XG5cdCAgICAgICAgICAgICAgICBpZiAoblByaW1lIDwgOCkge1xuXHQgICAgICAgICAgICAgICAgICAgIEhbblByaW1lXSA9IGdldEZyYWN0aW9uYWxCaXRzKE1hdGgucG93KG4sIDEgLyAyKSk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBLW25QcmltZV0gPSBnZXRGcmFjdGlvbmFsQml0cyhNYXRoLnBvdyhuLCAxIC8gMykpO1xuXG5cdCAgICAgICAgICAgICAgICBuUHJpbWUrKztcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIG4rKztcblx0ICAgICAgICB9XG5cdCAgICB9KCkpO1xuXG5cdCAgICAvLyBSZXVzYWJsZSBvYmplY3Rcblx0ICAgIHZhciBXID0gW107XG5cblx0ICAgIC8qKlxuXHQgICAgICogU0hBLTI1NiBoYXNoIGFsZ29yaXRobS5cblx0ICAgICAqL1xuXHQgICAgdmFyIFNIQTI1NiA9IENfYWxnby5TSEEyNTYgPSBIYXNoZXIuZXh0ZW5kKHtcblx0ICAgICAgICBfZG9SZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB0aGlzLl9oYXNoID0gbmV3IFdvcmRBcnJheS5pbml0KEguc2xpY2UoMCkpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9Qcm9jZXNzQmxvY2s6IGZ1bmN0aW9uIChNLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIEggPSB0aGlzLl9oYXNoLndvcmRzO1xuXG5cdCAgICAgICAgICAgIC8vIFdvcmtpbmcgdmFyaWFibGVzXG5cdCAgICAgICAgICAgIHZhciBhID0gSFswXTtcblx0ICAgICAgICAgICAgdmFyIGIgPSBIWzFdO1xuXHQgICAgICAgICAgICB2YXIgYyA9IEhbMl07XG5cdCAgICAgICAgICAgIHZhciBkID0gSFszXTtcblx0ICAgICAgICAgICAgdmFyIGUgPSBIWzRdO1xuXHQgICAgICAgICAgICB2YXIgZiA9IEhbNV07XG5cdCAgICAgICAgICAgIHZhciBnID0gSFs2XTtcblx0ICAgICAgICAgICAgdmFyIGggPSBIWzddO1xuXG5cdCAgICAgICAgICAgIC8vIENvbXB1dGF0aW9uXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjQ7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgaWYgKGkgPCAxNikge1xuXHQgICAgICAgICAgICAgICAgICAgIFdbaV0gPSBNW29mZnNldCArIGldIHwgMDtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGdhbW1hMHggPSBXW2kgLSAxNV07XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGdhbW1hMCAgPSAoKGdhbW1hMHggPDwgMjUpIHwgKGdhbW1hMHggPj4+IDcpKSAgXlxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChnYW1tYTB4IDw8IDE0KSB8IChnYW1tYTB4ID4+PiAxOCkpIF5cblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2FtbWEweCA+Pj4gMyk7XG5cblx0ICAgICAgICAgICAgICAgICAgICB2YXIgZ2FtbWExeCA9IFdbaSAtIDJdO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBnYW1tYTEgID0gKChnYW1tYTF4IDw8IDE1KSB8IChnYW1tYTF4ID4+PiAxNykpIF5cblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZ2FtbWExeCA8PCAxMykgfCAoZ2FtbWExeCA+Pj4gMTkpKSBeXG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdhbW1hMXggPj4+IDEwKTtcblxuXHQgICAgICAgICAgICAgICAgICAgIFdbaV0gPSBnYW1tYTAgKyBXW2kgLSA3XSArIGdhbW1hMSArIFdbaSAtIDE2XTtcblx0ICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgdmFyIGNoICA9IChlICYgZikgXiAofmUgJiBnKTtcblx0ICAgICAgICAgICAgICAgIHZhciBtYWogPSAoYSAmIGIpIF4gKGEgJiBjKSBeIChiICYgYyk7XG5cblx0ICAgICAgICAgICAgICAgIHZhciBzaWdtYTAgPSAoKGEgPDwgMzApIHwgKGEgPj4+IDIpKSBeICgoYSA8PCAxOSkgfCAoYSA+Pj4gMTMpKSBeICgoYSA8PCAxMCkgfCAoYSA+Pj4gMjIpKTtcblx0ICAgICAgICAgICAgICAgIHZhciBzaWdtYTEgPSAoKGUgPDwgMjYpIHwgKGUgPj4+IDYpKSBeICgoZSA8PCAyMSkgfCAoZSA+Pj4gMTEpKSBeICgoZSA8PCA3KSAgfCAoZSA+Pj4gMjUpKTtcblxuXHQgICAgICAgICAgICAgICAgdmFyIHQxID0gaCArIHNpZ21hMSArIGNoICsgS1tpXSArIFdbaV07XG5cdCAgICAgICAgICAgICAgICB2YXIgdDIgPSBzaWdtYTAgKyBtYWo7XG5cblx0ICAgICAgICAgICAgICAgIGggPSBnO1xuXHQgICAgICAgICAgICAgICAgZyA9IGY7XG5cdCAgICAgICAgICAgICAgICBmID0gZTtcblx0ICAgICAgICAgICAgICAgIGUgPSAoZCArIHQxKSB8IDA7XG5cdCAgICAgICAgICAgICAgICBkID0gYztcblx0ICAgICAgICAgICAgICAgIGMgPSBiO1xuXHQgICAgICAgICAgICAgICAgYiA9IGE7XG5cdCAgICAgICAgICAgICAgICBhID0gKHQxICsgdDIpIHwgMDtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIEludGVybWVkaWF0ZSBoYXNoIHZhbHVlXG5cdCAgICAgICAgICAgIEhbMF0gPSAoSFswXSArIGEpIHwgMDtcblx0ICAgICAgICAgICAgSFsxXSA9IChIWzFdICsgYikgfCAwO1xuXHQgICAgICAgICAgICBIWzJdID0gKEhbMl0gKyBjKSB8IDA7XG5cdCAgICAgICAgICAgIEhbM10gPSAoSFszXSArIGQpIHwgMDtcblx0ICAgICAgICAgICAgSFs0XSA9IChIWzRdICsgZSkgfCAwO1xuXHQgICAgICAgICAgICBIWzVdID0gKEhbNV0gKyBmKSB8IDA7XG5cdCAgICAgICAgICAgIEhbNl0gPSAoSFs2XSArIGcpIHwgMDtcblx0ICAgICAgICAgICAgSFs3XSA9IChIWzddICsgaCkgfCAwO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9GaW5hbGl6ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLl9kYXRhO1xuXHQgICAgICAgICAgICB2YXIgZGF0YVdvcmRzID0gZGF0YS53b3JkcztcblxuXHQgICAgICAgICAgICB2YXIgbkJpdHNUb3RhbCA9IHRoaXMuX25EYXRhQnl0ZXMgKiA4O1xuXHQgICAgICAgICAgICB2YXIgbkJpdHNMZWZ0ID0gZGF0YS5zaWdCeXRlcyAqIDg7XG5cblx0ICAgICAgICAgICAgLy8gQWRkIHBhZGRpbmdcblx0ICAgICAgICAgICAgZGF0YVdvcmRzW25CaXRzTGVmdCA+Pj4gNV0gfD0gMHg4MCA8PCAoMjQgLSBuQml0c0xlZnQgJSAzMik7XG5cdCAgICAgICAgICAgIGRhdGFXb3Jkc1soKChuQml0c0xlZnQgKyA2NCkgPj4+IDkpIDw8IDQpICsgMTRdID0gTWF0aC5mbG9vcihuQml0c1RvdGFsIC8gMHgxMDAwMDAwMDApO1xuXHQgICAgICAgICAgICBkYXRhV29yZHNbKCgobkJpdHNMZWZ0ICsgNjQpID4+PiA5KSA8PCA0KSArIDE1XSA9IG5CaXRzVG90YWw7XG5cdCAgICAgICAgICAgIGRhdGEuc2lnQnl0ZXMgPSBkYXRhV29yZHMubGVuZ3RoICogNDtcblxuXHQgICAgICAgICAgICAvLyBIYXNoIGZpbmFsIGJsb2Nrc1xuXHQgICAgICAgICAgICB0aGlzLl9wcm9jZXNzKCk7XG5cblx0ICAgICAgICAgICAgLy8gUmV0dXJuIGZpbmFsIGNvbXB1dGVkIGhhc2hcblx0ICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2hhc2g7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGNsb25lOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHZhciBjbG9uZSA9IEhhc2hlci5jbG9uZS5jYWxsKHRoaXMpO1xuXHQgICAgICAgICAgICBjbG9uZS5faGFzaCA9IHRoaXMuX2hhc2guY2xvbmUoKTtcblxuXHQgICAgICAgICAgICByZXR1cm4gY2xvbmU7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb24gdG8gdGhlIGhhc2hlcidzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGhhc2guXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgaGFzaC5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGhhc2ggPSBDcnlwdG9KUy5TSEEyNTYoJ21lc3NhZ2UnKTtcblx0ICAgICAqICAgICB2YXIgaGFzaCA9IENyeXB0b0pTLlNIQTI1Nih3b3JkQXJyYXkpO1xuXHQgICAgICovXG5cdCAgICBDLlNIQTI1NiA9IEhhc2hlci5fY3JlYXRlSGVscGVyKFNIQTI1Nik7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb24gdG8gdGhlIEhNQUMncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBoYXNoLlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBrZXkgVGhlIHNlY3JldCBrZXkuXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgSE1BQy5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGhtYWMgPSBDcnlwdG9KUy5IbWFjU0hBMjU2KG1lc3NhZ2UsIGtleSk7XG5cdCAgICAgKi9cblx0ICAgIEMuSG1hY1NIQTI1NiA9IEhhc2hlci5fY3JlYXRlSG1hY0hlbHBlcihTSEEyNTYpO1xuXHR9KE1hdGgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5TSEEyNTY7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4veDY0LWNvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4veDY0LWNvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAoTWF0aCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfbGliID0gQy5saWI7XG5cdCAgICB2YXIgV29yZEFycmF5ID0gQ19saWIuV29yZEFycmF5O1xuXHQgICAgdmFyIEhhc2hlciA9IENfbGliLkhhc2hlcjtcblx0ICAgIHZhciBDX3g2NCA9IEMueDY0O1xuXHQgICAgdmFyIFg2NFdvcmQgPSBDX3g2NC5Xb3JkO1xuXHQgICAgdmFyIENfYWxnbyA9IEMuYWxnbztcblxuXHQgICAgLy8gQ29uc3RhbnRzIHRhYmxlc1xuXHQgICAgdmFyIFJIT19PRkZTRVRTID0gW107XG5cdCAgICB2YXIgUElfSU5ERVhFUyAgPSBbXTtcblx0ICAgIHZhciBST1VORF9DT05TVEFOVFMgPSBbXTtcblxuXHQgICAgLy8gQ29tcHV0ZSBDb25zdGFudHNcblx0ICAgIChmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgLy8gQ29tcHV0ZSByaG8gb2Zmc2V0IGNvbnN0YW50c1xuXHQgICAgICAgIHZhciB4ID0gMSwgeSA9IDA7XG5cdCAgICAgICAgZm9yICh2YXIgdCA9IDA7IHQgPCAyNDsgdCsrKSB7XG5cdCAgICAgICAgICAgIFJIT19PRkZTRVRTW3ggKyA1ICogeV0gPSAoKHQgKyAxKSAqICh0ICsgMikgLyAyKSAlIDY0O1xuXG5cdCAgICAgICAgICAgIHZhciBuZXdYID0geSAlIDU7XG5cdCAgICAgICAgICAgIHZhciBuZXdZID0gKDIgKiB4ICsgMyAqIHkpICUgNTtcblx0ICAgICAgICAgICAgeCA9IG5ld1g7XG5cdCAgICAgICAgICAgIHkgPSBuZXdZO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIC8vIENvbXB1dGUgcGkgaW5kZXggY29uc3RhbnRzXG5cdCAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCA1OyB4KyspIHtcblx0ICAgICAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCA1OyB5KyspIHtcblx0ICAgICAgICAgICAgICAgIFBJX0lOREVYRVNbeCArIDUgKiB5XSA9IHkgKyAoKDIgKiB4ICsgMyAqIHkpICUgNSkgKiA1O1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgLy8gQ29tcHV0ZSByb3VuZCBjb25zdGFudHNcblx0ICAgICAgICB2YXIgTEZTUiA9IDB4MDE7XG5cdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNDsgaSsrKSB7XG5cdCAgICAgICAgICAgIHZhciByb3VuZENvbnN0YW50TXN3ID0gMDtcblx0ICAgICAgICAgICAgdmFyIHJvdW5kQ29uc3RhbnRMc3cgPSAwO1xuXG5cdCAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgNzsgaisrKSB7XG5cdCAgICAgICAgICAgICAgICBpZiAoTEZTUiAmIDB4MDEpIHtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgYml0UG9zaXRpb24gPSAoMSA8PCBqKSAtIDE7XG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKGJpdFBvc2l0aW9uIDwgMzIpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgcm91bmRDb25zdGFudExzdyBePSAxIDw8IGJpdFBvc2l0aW9uO1xuXHQgICAgICAgICAgICAgICAgICAgIH0gZWxzZSAvKiBpZiAoYml0UG9zaXRpb24gPj0gMzIpICovIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgcm91bmRDb25zdGFudE1zdyBePSAxIDw8IChiaXRQb3NpdGlvbiAtIDMyKTtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgIC8vIENvbXB1dGUgbmV4dCBMRlNSXG5cdCAgICAgICAgICAgICAgICBpZiAoTEZTUiAmIDB4ODApIHtcblx0ICAgICAgICAgICAgICAgICAgICAvLyBQcmltaXRpdmUgcG9seW5vbWlhbCBvdmVyIEdGKDIpOiB4XjggKyB4XjYgKyB4XjUgKyB4XjQgKyAxXG5cdCAgICAgICAgICAgICAgICAgICAgTEZTUiA9IChMRlNSIDw8IDEpIF4gMHg3MTtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgICAgTEZTUiA8PD0gMTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIFJPVU5EX0NPTlNUQU5UU1tpXSA9IFg2NFdvcmQuY3JlYXRlKHJvdW5kQ29uc3RhbnRNc3csIHJvdW5kQ29uc3RhbnRMc3cpO1xuXHQgICAgICAgIH1cblx0ICAgIH0oKSk7XG5cblx0ICAgIC8vIFJldXNhYmxlIG9iamVjdHMgZm9yIHRlbXBvcmFyeSB2YWx1ZXNcblx0ICAgIHZhciBUID0gW107XG5cdCAgICAoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjU7IGkrKykge1xuXHQgICAgICAgICAgICBUW2ldID0gWDY0V29yZC5jcmVhdGUoKTtcblx0ICAgICAgICB9XG5cdCAgICB9KCkpO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNIQS0zIGhhc2ggYWxnb3JpdGhtLlxuXHQgICAgICovXG5cdCAgICB2YXIgU0hBMyA9IENfYWxnby5TSEEzID0gSGFzaGVyLmV4dGVuZCh7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29uZmlndXJhdGlvbiBvcHRpb25zLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IG91dHB1dExlbmd0aFxuXHQgICAgICAgICAqICAgVGhlIGRlc2lyZWQgbnVtYmVyIG9mIGJpdHMgaW4gdGhlIG91dHB1dCBoYXNoLlxuXHQgICAgICAgICAqICAgT25seSB2YWx1ZXMgcGVybWl0dGVkIGFyZTogMjI0LCAyNTYsIDM4NCwgNTEyLlxuXHQgICAgICAgICAqICAgRGVmYXVsdDogNTEyXG5cdCAgICAgICAgICovXG5cdCAgICAgICAgY2ZnOiBIYXNoZXIuY2ZnLmV4dGVuZCh7XG5cdCAgICAgICAgICAgIG91dHB1dExlbmd0aDogNTEyXG5cdCAgICAgICAgfSksXG5cblx0ICAgICAgICBfZG9SZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB2YXIgc3RhdGUgPSB0aGlzLl9zdGF0ZSA9IFtdXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjU7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgc3RhdGVbaV0gPSBuZXcgWDY0V29yZC5pbml0KCk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICB0aGlzLmJsb2NrU2l6ZSA9ICgxNjAwIC0gMiAqIHRoaXMuY2ZnLm91dHB1dExlbmd0aCkgLyAzMjtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvUHJvY2Vzc0Jsb2NrOiBmdW5jdGlvbiAoTSwgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgc3RhdGUgPSB0aGlzLl9zdGF0ZTtcblx0ICAgICAgICAgICAgdmFyIG5CbG9ja1NpemVMYW5lcyA9IHRoaXMuYmxvY2tTaXplIC8gMjtcblxuXHQgICAgICAgICAgICAvLyBBYnNvcmJcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuQmxvY2tTaXplTGFuZXM7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgICAgICB2YXIgTTJpICA9IE1bb2Zmc2V0ICsgMiAqIGldO1xuXHQgICAgICAgICAgICAgICAgdmFyIE0yaTEgPSBNW29mZnNldCArIDIgKiBpICsgMV07XG5cblx0ICAgICAgICAgICAgICAgIC8vIFN3YXAgZW5kaWFuXG5cdCAgICAgICAgICAgICAgICBNMmkgPSAoXG5cdCAgICAgICAgICAgICAgICAgICAgKCgoTTJpIDw8IDgpICB8IChNMmkgPj4+IDI0KSkgJiAweDAwZmYwMGZmKSB8XG5cdCAgICAgICAgICAgICAgICAgICAgKCgoTTJpIDw8IDI0KSB8IChNMmkgPj4+IDgpKSAgJiAweGZmMDBmZjAwKVxuXHQgICAgICAgICAgICAgICAgKTtcblx0ICAgICAgICAgICAgICAgIE0yaTEgPSAoXG5cdCAgICAgICAgICAgICAgICAgICAgKCgoTTJpMSA8PCA4KSAgfCAoTTJpMSA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcblx0ICAgICAgICAgICAgICAgICAgICAoKChNMmkxIDw8IDI0KSB8IChNMmkxID4+PiA4KSkgICYgMHhmZjAwZmYwMClcblx0ICAgICAgICAgICAgICAgICk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIEFic29yYiBtZXNzYWdlIGludG8gc3RhdGVcblx0ICAgICAgICAgICAgICAgIHZhciBsYW5lID0gc3RhdGVbaV07XG5cdCAgICAgICAgICAgICAgICBsYW5lLmhpZ2ggXj0gTTJpMTtcblx0ICAgICAgICAgICAgICAgIGxhbmUubG93ICBePSBNMmk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBSb3VuZHNcblx0ICAgICAgICAgICAgZm9yICh2YXIgcm91bmQgPSAwOyByb3VuZCA8IDI0OyByb3VuZCsrKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBUaGV0YVxuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCA1OyB4KyspIHtcblx0ICAgICAgICAgICAgICAgICAgICAvLyBNaXggY29sdW1uIGxhbmVzXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIHRNc3cgPSAwLCB0THN3ID0gMDtcblx0ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IDU7IHkrKykge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGFuZSA9IHN0YXRlW3ggKyA1ICogeV07XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRNc3cgXj0gbGFuZS5oaWdoO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0THN3IF49IGxhbmUubG93O1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgICAgIC8vIFRlbXBvcmFyeSB2YWx1ZXNcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgVHggPSBUW3hdO1xuXHQgICAgICAgICAgICAgICAgICAgIFR4LmhpZ2ggPSB0TXN3O1xuXHQgICAgICAgICAgICAgICAgICAgIFR4LmxvdyAgPSB0THN3O1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCA1OyB4KyspIHtcblx0ICAgICAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgVHg0ID0gVFsoeCArIDQpICUgNV07XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIFR4MSA9IFRbKHggKyAxKSAlIDVdO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBUeDFNc3cgPSBUeDEuaGlnaDtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgVHgxTHN3ID0gVHgxLmxvdztcblxuXHQgICAgICAgICAgICAgICAgICAgIC8vIE1peCBzdXJyb3VuZGluZyBjb2x1bW5zXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIHRNc3cgPSBUeDQuaGlnaCBeICgoVHgxTXN3IDw8IDEpIHwgKFR4MUxzdyA+Pj4gMzEpKTtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgdExzdyA9IFR4NC5sb3cgIF4gKChUeDFMc3cgPDwgMSkgfCAoVHgxTXN3ID4+PiAzMSkpO1xuXHQgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgNTsgeSsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsYW5lID0gc3RhdGVbeCArIDUgKiB5XTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgbGFuZS5oaWdoIF49IHRNc3c7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGxhbmUubG93ICBePSB0THN3O1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgLy8gUmhvIFBpXG5cdCAgICAgICAgICAgICAgICBmb3IgKHZhciBsYW5lSW5kZXggPSAxOyBsYW5lSW5kZXggPCAyNTsgbGFuZUluZGV4KyspIHtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgdE1zdztcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgdExzdztcblxuXHQgICAgICAgICAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBsYW5lID0gc3RhdGVbbGFuZUluZGV4XTtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgbGFuZU1zdyA9IGxhbmUuaGlnaDtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgbGFuZUxzdyA9IGxhbmUubG93O1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciByaG9PZmZzZXQgPSBSSE9fT0ZGU0VUU1tsYW5lSW5kZXhdO1xuXG5cdCAgICAgICAgICAgICAgICAgICAgLy8gUm90YXRlIGxhbmVzXG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKHJob09mZnNldCA8IDMyKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRNc3cgPSAobGFuZU1zdyA8PCByaG9PZmZzZXQpIHwgKGxhbmVMc3cgPj4+ICgzMiAtIHJob09mZnNldCkpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0THN3ID0gKGxhbmVMc3cgPDwgcmhvT2Zmc2V0KSB8IChsYW5lTXN3ID4+PiAoMzIgLSByaG9PZmZzZXQpKTtcblx0ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgLyogaWYgKHJob09mZnNldCA+PSAzMikgKi8ge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0TXN3ID0gKGxhbmVMc3cgPDwgKHJob09mZnNldCAtIDMyKSkgfCAobGFuZU1zdyA+Pj4gKDY0IC0gcmhvT2Zmc2V0KSk7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRMc3cgPSAobGFuZU1zdyA8PCAocmhvT2Zmc2V0IC0gMzIpKSB8IChsYW5lTHN3ID4+PiAoNjQgLSByaG9PZmZzZXQpKTtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgICAgICAvLyBUcmFuc3Bvc2UgbGFuZXNcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgVFBpTGFuZSA9IFRbUElfSU5ERVhFU1tsYW5lSW5kZXhdXTtcblx0ICAgICAgICAgICAgICAgICAgICBUUGlMYW5lLmhpZ2ggPSB0TXN3O1xuXHQgICAgICAgICAgICAgICAgICAgIFRQaUxhbmUubG93ICA9IHRMc3c7XG5cdCAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgIC8vIFJobyBwaSBhdCB4ID0geSA9IDBcblx0ICAgICAgICAgICAgICAgIHZhciBUMCA9IFRbMF07XG5cdCAgICAgICAgICAgICAgICB2YXIgc3RhdGUwID0gc3RhdGVbMF07XG5cdCAgICAgICAgICAgICAgICBUMC5oaWdoID0gc3RhdGUwLmhpZ2g7XG5cdCAgICAgICAgICAgICAgICBUMC5sb3cgID0gc3RhdGUwLmxvdztcblxuXHQgICAgICAgICAgICAgICAgLy8gQ2hpXG5cdCAgICAgICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IDU7IHgrKykge1xuXHQgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgNTsgeSsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGFuZUluZGV4ID0geCArIDUgKiB5O1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGFuZSA9IHN0YXRlW2xhbmVJbmRleF07XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHZhciBUTGFuZSA9IFRbbGFuZUluZGV4XTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIFR4MUxhbmUgPSBUWygoeCArIDEpICUgNSkgKyA1ICogeV07XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHZhciBUeDJMYW5lID0gVFsoKHggKyAyKSAlIDUpICsgNSAqIHldO1xuXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1peCByb3dzXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGxhbmUuaGlnaCA9IFRMYW5lLmhpZ2ggXiAoflR4MUxhbmUuaGlnaCAmIFR4MkxhbmUuaGlnaCk7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGxhbmUubG93ICA9IFRMYW5lLmxvdyAgXiAoflR4MUxhbmUubG93ICAmIFR4MkxhbmUubG93KTtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgIC8vIElvdGFcblx0ICAgICAgICAgICAgICAgIHZhciBsYW5lID0gc3RhdGVbMF07XG5cdCAgICAgICAgICAgICAgICB2YXIgcm91bmRDb25zdGFudCA9IFJPVU5EX0NPTlNUQU5UU1tyb3VuZF07XG5cdCAgICAgICAgICAgICAgICBsYW5lLmhpZ2ggXj0gcm91bmRDb25zdGFudC5oaWdoO1xuXHQgICAgICAgICAgICAgICAgbGFuZS5sb3cgIF49IHJvdW5kQ29uc3RhbnQubG93O1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb0ZpbmFsaXplOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgZGF0YSA9IHRoaXMuX2RhdGE7XG5cdCAgICAgICAgICAgIHZhciBkYXRhV29yZHMgPSBkYXRhLndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgbkJpdHNUb3RhbCA9IHRoaXMuX25EYXRhQnl0ZXMgKiA4O1xuXHQgICAgICAgICAgICB2YXIgbkJpdHNMZWZ0ID0gZGF0YS5zaWdCeXRlcyAqIDg7XG5cdCAgICAgICAgICAgIHZhciBibG9ja1NpemVCaXRzID0gdGhpcy5ibG9ja1NpemUgKiAzMjtcblxuXHQgICAgICAgICAgICAvLyBBZGQgcGFkZGluZ1xuXHQgICAgICAgICAgICBkYXRhV29yZHNbbkJpdHNMZWZ0ID4+PiA1XSB8PSAweDEgPDwgKDI0IC0gbkJpdHNMZWZ0ICUgMzIpO1xuXHQgICAgICAgICAgICBkYXRhV29yZHNbKChNYXRoLmNlaWwoKG5CaXRzTGVmdCArIDEpIC8gYmxvY2tTaXplQml0cykgKiBibG9ja1NpemVCaXRzKSA+Pj4gNSkgLSAxXSB8PSAweDgwO1xuXHQgICAgICAgICAgICBkYXRhLnNpZ0J5dGVzID0gZGF0YVdvcmRzLmxlbmd0aCAqIDQ7XG5cblx0ICAgICAgICAgICAgLy8gSGFzaCBmaW5hbCBibG9ja3Ncblx0ICAgICAgICAgICAgdGhpcy5fcHJvY2VzcygpO1xuXG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgc3RhdGUgPSB0aGlzLl9zdGF0ZTtcblx0ICAgICAgICAgICAgdmFyIG91dHB1dExlbmd0aEJ5dGVzID0gdGhpcy5jZmcub3V0cHV0TGVuZ3RoIC8gODtcblx0ICAgICAgICAgICAgdmFyIG91dHB1dExlbmd0aExhbmVzID0gb3V0cHV0TGVuZ3RoQnl0ZXMgLyA4O1xuXG5cdCAgICAgICAgICAgIC8vIFNxdWVlemVcblx0ICAgICAgICAgICAgdmFyIGhhc2hXb3JkcyA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG91dHB1dExlbmd0aExhbmVzOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICAgICAgdmFyIGxhbmUgPSBzdGF0ZVtpXTtcblx0ICAgICAgICAgICAgICAgIHZhciBsYW5lTXN3ID0gbGFuZS5oaWdoO1xuXHQgICAgICAgICAgICAgICAgdmFyIGxhbmVMc3cgPSBsYW5lLmxvdztcblxuXHQgICAgICAgICAgICAgICAgLy8gU3dhcCBlbmRpYW5cblx0ICAgICAgICAgICAgICAgIGxhbmVNc3cgPSAoXG5cdCAgICAgICAgICAgICAgICAgICAgKCgobGFuZU1zdyA8PCA4KSAgfCAobGFuZU1zdyA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcblx0ICAgICAgICAgICAgICAgICAgICAoKChsYW5lTXN3IDw8IDI0KSB8IChsYW5lTXN3ID4+PiA4KSkgICYgMHhmZjAwZmYwMClcblx0ICAgICAgICAgICAgICAgICk7XG5cdCAgICAgICAgICAgICAgICBsYW5lTHN3ID0gKFxuXHQgICAgICAgICAgICAgICAgICAgICgoKGxhbmVMc3cgPDwgOCkgIHwgKGxhbmVMc3cgPj4+IDI0KSkgJiAweDAwZmYwMGZmKSB8XG5cdCAgICAgICAgICAgICAgICAgICAgKCgobGFuZUxzdyA8PCAyNCkgfCAobGFuZUxzdyA+Pj4gOCkpICAmIDB4ZmYwMGZmMDApXG5cdCAgICAgICAgICAgICAgICApO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBTcXVlZXplIHN0YXRlIHRvIHJldHJpZXZlIGhhc2hcblx0ICAgICAgICAgICAgICAgIGhhc2hXb3Jkcy5wdXNoKGxhbmVMc3cpO1xuXHQgICAgICAgICAgICAgICAgaGFzaFdvcmRzLnB1c2gobGFuZU1zdyk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBSZXR1cm4gZmluYWwgY29tcHV0ZWQgaGFzaFxuXHQgICAgICAgICAgICByZXR1cm4gbmV3IFdvcmRBcnJheS5pbml0KGhhc2hXb3Jkcywgb3V0cHV0TGVuZ3RoQnl0ZXMpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBjbG9uZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB2YXIgY2xvbmUgPSBIYXNoZXIuY2xvbmUuY2FsbCh0aGlzKTtcblxuXHQgICAgICAgICAgICB2YXIgc3RhdGUgPSBjbG9uZS5fc3RhdGUgPSB0aGlzLl9zdGF0ZS5zbGljZSgwKTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICBzdGF0ZVtpXSA9IHN0YXRlW2ldLmNsb25lKCk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICByZXR1cm4gY2xvbmU7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb24gdG8gdGhlIGhhc2hlcidzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGhhc2guXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgaGFzaC5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGhhc2ggPSBDcnlwdG9KUy5TSEEzKCdtZXNzYWdlJyk7XG5cdCAgICAgKiAgICAgdmFyIGhhc2ggPSBDcnlwdG9KUy5TSEEzKHdvcmRBcnJheSk7XG5cdCAgICAgKi9cblx0ICAgIEMuU0hBMyA9IEhhc2hlci5fY3JlYXRlSGVscGVyKFNIQTMpO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9uIHRvIHRoZSBITUFDJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gaGFzaC5cblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30ga2V5IFRoZSBzZWNyZXQga2V5LlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIEhNQUMuXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBobWFjID0gQ3J5cHRvSlMuSG1hY1NIQTMobWVzc2FnZSwga2V5KTtcblx0ICAgICAqL1xuXHQgICAgQy5IbWFjU0hBMyA9IEhhc2hlci5fY3JlYXRlSG1hY0hlbHBlcihTSEEzKTtcblx0fShNYXRoKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMuU0hBMztcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi94NjQtY29yZVwiKSwgcmVxdWlyZShcIi4vc2hhNTEyXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL3g2NC1jb3JlXCIsIFwiLi9zaGE1MTJcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAoKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ194NjQgPSBDLng2NDtcblx0ICAgIHZhciBYNjRXb3JkID0gQ194NjQuV29yZDtcblx0ICAgIHZhciBYNjRXb3JkQXJyYXkgPSBDX3g2NC5Xb3JkQXJyYXk7XG5cdCAgICB2YXIgQ19hbGdvID0gQy5hbGdvO1xuXHQgICAgdmFyIFNIQTUxMiA9IENfYWxnby5TSEE1MTI7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU0hBLTM4NCBoYXNoIGFsZ29yaXRobS5cblx0ICAgICAqL1xuXHQgICAgdmFyIFNIQTM4NCA9IENfYWxnby5TSEEzODQgPSBTSEE1MTIuZXh0ZW5kKHtcblx0ICAgICAgICBfZG9SZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB0aGlzLl9oYXNoID0gbmV3IFg2NFdvcmRBcnJheS5pbml0KFtcblx0ICAgICAgICAgICAgICAgIG5ldyBYNjRXb3JkLmluaXQoMHhjYmJiOWQ1ZCwgMHhjMTA1OWVkOCksIG5ldyBYNjRXb3JkLmluaXQoMHg2MjlhMjkyYSwgMHgzNjdjZDUwNyksXG5cdCAgICAgICAgICAgICAgICBuZXcgWDY0V29yZC5pbml0KDB4OTE1OTAxNWEsIDB4MzA3MGRkMTcpLCBuZXcgWDY0V29yZC5pbml0KDB4MTUyZmVjZDgsIDB4ZjcwZTU5MzkpLFxuXHQgICAgICAgICAgICAgICAgbmV3IFg2NFdvcmQuaW5pdCgweDY3MzMyNjY3LCAweGZmYzAwYjMxKSwgbmV3IFg2NFdvcmQuaW5pdCgweDhlYjQ0YTg3LCAweDY4NTgxNTExKSxcblx0ICAgICAgICAgICAgICAgIG5ldyBYNjRXb3JkLmluaXQoMHhkYjBjMmUwZCwgMHg2NGY5OGZhNyksIG5ldyBYNjRXb3JkLmluaXQoMHg0N2I1NDgxZCwgMHhiZWZhNGZhNClcblx0ICAgICAgICAgICAgXSk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb0ZpbmFsaXplOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHZhciBoYXNoID0gU0hBNTEyLl9kb0ZpbmFsaXplLmNhbGwodGhpcyk7XG5cblx0ICAgICAgICAgICAgaGFzaC5zaWdCeXRlcyAtPSAxNjtcblxuXHQgICAgICAgICAgICByZXR1cm4gaGFzaDtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbiB0byB0aGUgaGFzaGVyJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gaGFzaC5cblx0ICAgICAqXG5cdCAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBoYXNoLlxuXHQgICAgICpcblx0ICAgICAqIEBzdGF0aWNcblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgaGFzaCA9IENyeXB0b0pTLlNIQTM4NCgnbWVzc2FnZScpO1xuXHQgICAgICogICAgIHZhciBoYXNoID0gQ3J5cHRvSlMuU0hBMzg0KHdvcmRBcnJheSk7XG5cdCAgICAgKi9cblx0ICAgIEMuU0hBMzg0ID0gU0hBNTEyLl9jcmVhdGVIZWxwZXIoU0hBMzg0KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbiB0byB0aGUgSE1BQydzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGhhc2guXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IGtleSBUaGUgc2VjcmV0IGtleS5cblx0ICAgICAqXG5cdCAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBITUFDLlxuXHQgICAgICpcblx0ICAgICAqIEBzdGF0aWNcblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgaG1hYyA9IENyeXB0b0pTLkhtYWNTSEEzODQobWVzc2FnZSwga2V5KTtcblx0ICAgICAqL1xuXHQgICAgQy5IbWFjU0hBMzg0ID0gU0hBNTEyLl9jcmVhdGVIbWFjSGVscGVyKFNIQTM4NCk7XG5cdH0oKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMuU0hBMzg0O1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL3g2NC1jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL3g2NC1jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfbGliID0gQy5saWI7XG5cdCAgICB2YXIgSGFzaGVyID0gQ19saWIuSGFzaGVyO1xuXHQgICAgdmFyIENfeDY0ID0gQy54NjQ7XG5cdCAgICB2YXIgWDY0V29yZCA9IENfeDY0LldvcmQ7XG5cdCAgICB2YXIgWDY0V29yZEFycmF5ID0gQ194NjQuV29yZEFycmF5O1xuXHQgICAgdmFyIENfYWxnbyA9IEMuYWxnbztcblxuXHQgICAgZnVuY3Rpb24gWDY0V29yZF9jcmVhdGUoKSB7XG5cdCAgICAgICAgcmV0dXJuIFg2NFdvcmQuY3JlYXRlLmFwcGx5KFg2NFdvcmQsIGFyZ3VtZW50cyk7XG5cdCAgICB9XG5cblx0ICAgIC8vIENvbnN0YW50c1xuXHQgICAgdmFyIEsgPSBbXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHg0MjhhMmY5OCwgMHhkNzI4YWUyMiksIFg2NFdvcmRfY3JlYXRlKDB4NzEzNzQ0OTEsIDB4MjNlZjY1Y2QpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4YjVjMGZiY2YsIDB4ZWM0ZDNiMmYpLCBYNjRXb3JkX2NyZWF0ZSgweGU5YjVkYmE1LCAweDgxODlkYmJjKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDM5NTZjMjViLCAweGYzNDhiNTM4KSwgWDY0V29yZF9jcmVhdGUoMHg1OWYxMTFmMSwgMHhiNjA1ZDAxOSksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHg5MjNmODJhNCwgMHhhZjE5NGY5YiksIFg2NFdvcmRfY3JlYXRlKDB4YWIxYzVlZDUsIDB4ZGE2ZDgxMTgpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4ZDgwN2FhOTgsIDB4YTMwMzAyNDIpLCBYNjRXb3JkX2NyZWF0ZSgweDEyODM1YjAxLCAweDQ1NzA2ZmJlKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDI0MzE4NWJlLCAweDRlZTRiMjhjKSwgWDY0V29yZF9jcmVhdGUoMHg1NTBjN2RjMywgMHhkNWZmYjRlMiksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHg3MmJlNWQ3NCwgMHhmMjdiODk2ZiksIFg2NFdvcmRfY3JlYXRlKDB4ODBkZWIxZmUsIDB4M2IxNjk2YjEpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4OWJkYzA2YTcsIDB4MjVjNzEyMzUpLCBYNjRXb3JkX2NyZWF0ZSgweGMxOWJmMTc0LCAweGNmNjkyNjk0KSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweGU0OWI2OWMxLCAweDllZjE0YWQyKSwgWDY0V29yZF9jcmVhdGUoMHhlZmJlNDc4NiwgMHgzODRmMjVlMyksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHgwZmMxOWRjNiwgMHg4YjhjZDViNSksIFg2NFdvcmRfY3JlYXRlKDB4MjQwY2ExY2MsIDB4NzdhYzljNjUpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4MmRlOTJjNmYsIDB4NTkyYjAyNzUpLCBYNjRXb3JkX2NyZWF0ZSgweDRhNzQ4NGFhLCAweDZlYTZlNDgzKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDVjYjBhOWRjLCAweGJkNDFmYmQ0KSwgWDY0V29yZF9jcmVhdGUoMHg3NmY5ODhkYSwgMHg4MzExNTNiNSksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHg5ODNlNTE1MiwgMHhlZTY2ZGZhYiksIFg2NFdvcmRfY3JlYXRlKDB4YTgzMWM2NmQsIDB4MmRiNDMyMTApLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4YjAwMzI3YzgsIDB4OThmYjIxM2YpLCBYNjRXb3JkX2NyZWF0ZSgweGJmNTk3ZmM3LCAweGJlZWYwZWU0KSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweGM2ZTAwYmYzLCAweDNkYTg4ZmMyKSwgWDY0V29yZF9jcmVhdGUoMHhkNWE3OTE0NywgMHg5MzBhYTcyNSksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHgwNmNhNjM1MSwgMHhlMDAzODI2ZiksIFg2NFdvcmRfY3JlYXRlKDB4MTQyOTI5NjcsIDB4MGEwZTZlNzApLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4MjdiNzBhODUsIDB4NDZkMjJmZmMpLCBYNjRXb3JkX2NyZWF0ZSgweDJlMWIyMTM4LCAweDVjMjZjOTI2KSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDRkMmM2ZGZjLCAweDVhYzQyYWVkKSwgWDY0V29yZF9jcmVhdGUoMHg1MzM4MGQxMywgMHg5ZDk1YjNkZiksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHg2NTBhNzM1NCwgMHg4YmFmNjNkZSksIFg2NFdvcmRfY3JlYXRlKDB4NzY2YTBhYmIsIDB4M2M3N2IyYTgpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4ODFjMmM5MmUsIDB4NDdlZGFlZTYpLCBYNjRXb3JkX2NyZWF0ZSgweDkyNzIyYzg1LCAweDE0ODIzNTNiKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweGEyYmZlOGExLCAweDRjZjEwMzY0KSwgWDY0V29yZF9jcmVhdGUoMHhhODFhNjY0YiwgMHhiYzQyMzAwMSksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHhjMjRiOGI3MCwgMHhkMGY4OTc5MSksIFg2NFdvcmRfY3JlYXRlKDB4Yzc2YzUxYTMsIDB4MDY1NGJlMzApLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4ZDE5MmU4MTksIDB4ZDZlZjUyMTgpLCBYNjRXb3JkX2NyZWF0ZSgweGQ2OTkwNjI0LCAweDU1NjVhOTEwKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweGY0MGUzNTg1LCAweDU3NzEyMDJhKSwgWDY0V29yZF9jcmVhdGUoMHgxMDZhYTA3MCwgMHgzMmJiZDFiOCksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHgxOWE0YzExNiwgMHhiOGQyZDBjOCksIFg2NFdvcmRfY3JlYXRlKDB4MWUzNzZjMDgsIDB4NTE0MWFiNTMpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4Mjc0ODc3NGMsIDB4ZGY4ZWViOTkpLCBYNjRXb3JkX2NyZWF0ZSgweDM0YjBiY2I1LCAweGUxOWI0OGE4KSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDM5MWMwY2IzLCAweGM1Yzk1YTYzKSwgWDY0V29yZF9jcmVhdGUoMHg0ZWQ4YWE0YSwgMHhlMzQxOGFjYiksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHg1YjljY2E0ZiwgMHg3NzYzZTM3MyksIFg2NFdvcmRfY3JlYXRlKDB4NjgyZTZmZjMsIDB4ZDZiMmI4YTMpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4NzQ4ZjgyZWUsIDB4NWRlZmIyZmMpLCBYNjRXb3JkX2NyZWF0ZSgweDc4YTU2MzZmLCAweDQzMTcyZjYwKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDg0Yzg3ODE0LCAweGExZjBhYjcyKSwgWDY0V29yZF9jcmVhdGUoMHg4Y2M3MDIwOCwgMHgxYTY0MzllYyksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHg5MGJlZmZmYSwgMHgyMzYzMWUyOCksIFg2NFdvcmRfY3JlYXRlKDB4YTQ1MDZjZWIsIDB4ZGU4MmJkZTkpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4YmVmOWEzZjcsIDB4YjJjNjc5MTUpLCBYNjRXb3JkX2NyZWF0ZSgweGM2NzE3OGYyLCAweGUzNzI1MzJiKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweGNhMjczZWNlLCAweGVhMjY2MTljKSwgWDY0V29yZF9jcmVhdGUoMHhkMTg2YjhjNywgMHgyMWMwYzIwNyksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHhlYWRhN2RkNiwgMHhjZGUwZWIxZSksIFg2NFdvcmRfY3JlYXRlKDB4ZjU3ZDRmN2YsIDB4ZWU2ZWQxNzgpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4MDZmMDY3YWEsIDB4NzIxNzZmYmEpLCBYNjRXb3JkX2NyZWF0ZSgweDBhNjM3ZGM1LCAweGEyYzg5OGE2KSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDExM2Y5ODA0LCAweGJlZjkwZGFlKSwgWDY0V29yZF9jcmVhdGUoMHgxYjcxMGIzNSwgMHgxMzFjNDcxYiksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHgyOGRiNzdmNSwgMHgyMzA0N2Q4NCksIFg2NFdvcmRfY3JlYXRlKDB4MzJjYWFiN2IsIDB4NDBjNzI0OTMpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4M2M5ZWJlMGEsIDB4MTVjOWJlYmMpLCBYNjRXb3JkX2NyZWF0ZSgweDQzMWQ2N2M0LCAweDljMTAwZDRjKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDRjYzVkNGJlLCAweGNiM2U0MmI2KSwgWDY0V29yZF9jcmVhdGUoMHg1OTdmMjk5YywgMHhmYzY1N2UyYSksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHg1ZmNiNmZhYiwgMHgzYWQ2ZmFlYyksIFg2NFdvcmRfY3JlYXRlKDB4NmM0NDE5OGMsIDB4NGE0NzU4MTcpXG5cdCAgICBdO1xuXG5cdCAgICAvLyBSZXVzYWJsZSBvYmplY3RzXG5cdCAgICB2YXIgVyA9IFtdO1xuXHQgICAgKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDgwOyBpKyspIHtcblx0ICAgICAgICAgICAgV1tpXSA9IFg2NFdvcmRfY3JlYXRlKCk7XG5cdCAgICAgICAgfVxuXHQgICAgfSgpKTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTSEEtNTEyIGhhc2ggYWxnb3JpdGhtLlxuXHQgICAgICovXG5cdCAgICB2YXIgU0hBNTEyID0gQ19hbGdvLlNIQTUxMiA9IEhhc2hlci5leHRlbmQoe1xuXHQgICAgICAgIF9kb1Jlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHRoaXMuX2hhc2ggPSBuZXcgWDY0V29yZEFycmF5LmluaXQoW1xuXHQgICAgICAgICAgICAgICAgbmV3IFg2NFdvcmQuaW5pdCgweDZhMDllNjY3LCAweGYzYmNjOTA4KSwgbmV3IFg2NFdvcmQuaW5pdCgweGJiNjdhZTg1LCAweDg0Y2FhNzNiKSxcblx0ICAgICAgICAgICAgICAgIG5ldyBYNjRXb3JkLmluaXQoMHgzYzZlZjM3MiwgMHhmZTk0ZjgyYiksIG5ldyBYNjRXb3JkLmluaXQoMHhhNTRmZjUzYSwgMHg1ZjFkMzZmMSksXG5cdCAgICAgICAgICAgICAgICBuZXcgWDY0V29yZC5pbml0KDB4NTEwZTUyN2YsIDB4YWRlNjgyZDEpLCBuZXcgWDY0V29yZC5pbml0KDB4OWIwNTY4OGMsIDB4MmIzZTZjMWYpLFxuXHQgICAgICAgICAgICAgICAgbmV3IFg2NFdvcmQuaW5pdCgweDFmODNkOWFiLCAweGZiNDFiZDZiKSwgbmV3IFg2NFdvcmQuaW5pdCgweDViZTBjZDE5LCAweDEzN2UyMTc5KVxuXHQgICAgICAgICAgICBdKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvUHJvY2Vzc0Jsb2NrOiBmdW5jdGlvbiAoTSwgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgSCA9IHRoaXMuX2hhc2gud29yZHM7XG5cblx0ICAgICAgICAgICAgdmFyIEgwID0gSFswXTtcblx0ICAgICAgICAgICAgdmFyIEgxID0gSFsxXTtcblx0ICAgICAgICAgICAgdmFyIEgyID0gSFsyXTtcblx0ICAgICAgICAgICAgdmFyIEgzID0gSFszXTtcblx0ICAgICAgICAgICAgdmFyIEg0ID0gSFs0XTtcblx0ICAgICAgICAgICAgdmFyIEg1ID0gSFs1XTtcblx0ICAgICAgICAgICAgdmFyIEg2ID0gSFs2XTtcblx0ICAgICAgICAgICAgdmFyIEg3ID0gSFs3XTtcblxuXHQgICAgICAgICAgICB2YXIgSDBoID0gSDAuaGlnaDtcblx0ICAgICAgICAgICAgdmFyIEgwbCA9IEgwLmxvdztcblx0ICAgICAgICAgICAgdmFyIEgxaCA9IEgxLmhpZ2g7XG5cdCAgICAgICAgICAgIHZhciBIMWwgPSBIMS5sb3c7XG5cdCAgICAgICAgICAgIHZhciBIMmggPSBIMi5oaWdoO1xuXHQgICAgICAgICAgICB2YXIgSDJsID0gSDIubG93O1xuXHQgICAgICAgICAgICB2YXIgSDNoID0gSDMuaGlnaDtcblx0ICAgICAgICAgICAgdmFyIEgzbCA9IEgzLmxvdztcblx0ICAgICAgICAgICAgdmFyIEg0aCA9IEg0LmhpZ2g7XG5cdCAgICAgICAgICAgIHZhciBINGwgPSBINC5sb3c7XG5cdCAgICAgICAgICAgIHZhciBINWggPSBINS5oaWdoO1xuXHQgICAgICAgICAgICB2YXIgSDVsID0gSDUubG93O1xuXHQgICAgICAgICAgICB2YXIgSDZoID0gSDYuaGlnaDtcblx0ICAgICAgICAgICAgdmFyIEg2bCA9IEg2Lmxvdztcblx0ICAgICAgICAgICAgdmFyIEg3aCA9IEg3LmhpZ2g7XG5cdCAgICAgICAgICAgIHZhciBIN2wgPSBINy5sb3c7XG5cblx0ICAgICAgICAgICAgLy8gV29ya2luZyB2YXJpYWJsZXNcblx0ICAgICAgICAgICAgdmFyIGFoID0gSDBoO1xuXHQgICAgICAgICAgICB2YXIgYWwgPSBIMGw7XG5cdCAgICAgICAgICAgIHZhciBiaCA9IEgxaDtcblx0ICAgICAgICAgICAgdmFyIGJsID0gSDFsO1xuXHQgICAgICAgICAgICB2YXIgY2ggPSBIMmg7XG5cdCAgICAgICAgICAgIHZhciBjbCA9IEgybDtcblx0ICAgICAgICAgICAgdmFyIGRoID0gSDNoO1xuXHQgICAgICAgICAgICB2YXIgZGwgPSBIM2w7XG5cdCAgICAgICAgICAgIHZhciBlaCA9IEg0aDtcblx0ICAgICAgICAgICAgdmFyIGVsID0gSDRsO1xuXHQgICAgICAgICAgICB2YXIgZmggPSBINWg7XG5cdCAgICAgICAgICAgIHZhciBmbCA9IEg1bDtcblx0ICAgICAgICAgICAgdmFyIGdoID0gSDZoO1xuXHQgICAgICAgICAgICB2YXIgZ2wgPSBINmw7XG5cdCAgICAgICAgICAgIHZhciBoaCA9IEg3aDtcblx0ICAgICAgICAgICAgdmFyIGhsID0gSDdsO1xuXG5cdCAgICAgICAgICAgIC8vIFJvdW5kc1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDgwOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIHZhciBXaWw7XG5cdCAgICAgICAgICAgICAgICB2YXIgV2loO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICAgICAgdmFyIFdpID0gV1tpXTtcblxuXHQgICAgICAgICAgICAgICAgLy8gRXh0ZW5kIG1lc3NhZ2Vcblx0ICAgICAgICAgICAgICAgIGlmIChpIDwgMTYpIHtcblx0ICAgICAgICAgICAgICAgICAgICBXaWggPSBXaS5oaWdoID0gTVtvZmZzZXQgKyBpICogMl0gICAgIHwgMDtcblx0ICAgICAgICAgICAgICAgICAgICBXaWwgPSBXaS5sb3cgID0gTVtvZmZzZXQgKyBpICogMiArIDFdIHwgMDtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgICAgLy8gR2FtbWEwXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGdhbW1hMHggID0gV1tpIC0gMTVdO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBnYW1tYTB4aCA9IGdhbW1hMHguaGlnaDtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgZ2FtbWEweGwgPSBnYW1tYTB4Lmxvdztcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgZ2FtbWEwaCAgPSAoKGdhbW1hMHhoID4+PiAxKSB8IChnYW1tYTB4bCA8PCAzMSkpIF4gKChnYW1tYTB4aCA+Pj4gOCkgfCAoZ2FtbWEweGwgPDwgMjQpKSBeIChnYW1tYTB4aCA+Pj4gNyk7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGdhbW1hMGwgID0gKChnYW1tYTB4bCA+Pj4gMSkgfCAoZ2FtbWEweGggPDwgMzEpKSBeICgoZ2FtbWEweGwgPj4+IDgpIHwgKGdhbW1hMHhoIDw8IDI0KSkgXiAoKGdhbW1hMHhsID4+PiA3KSB8IChnYW1tYTB4aCA8PCAyNSkpO1xuXG5cdCAgICAgICAgICAgICAgICAgICAgLy8gR2FtbWExXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGdhbW1hMXggID0gV1tpIC0gMl07XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGdhbW1hMXhoID0gZ2FtbWExeC5oaWdoO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBnYW1tYTF4bCA9IGdhbW1hMXgubG93O1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBnYW1tYTFoICA9ICgoZ2FtbWExeGggPj4+IDE5KSB8IChnYW1tYTF4bCA8PCAxMykpIF4gKChnYW1tYTF4aCA8PCAzKSB8IChnYW1tYTF4bCA+Pj4gMjkpKSBeIChnYW1tYTF4aCA+Pj4gNik7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGdhbW1hMWwgID0gKChnYW1tYTF4bCA+Pj4gMTkpIHwgKGdhbW1hMXhoIDw8IDEzKSkgXiAoKGdhbW1hMXhsIDw8IDMpIHwgKGdhbW1hMXhoID4+PiAyOSkpIF4gKChnYW1tYTF4bCA+Pj4gNikgfCAoZ2FtbWExeGggPDwgMjYpKTtcblxuXHQgICAgICAgICAgICAgICAgICAgIC8vIFdbaV0gPSBnYW1tYTAgKyBXW2kgLSA3XSArIGdhbW1hMSArIFdbaSAtIDE2XVxuXHQgICAgICAgICAgICAgICAgICAgIHZhciBXaTcgID0gV1tpIC0gN107XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIFdpN2ggPSBXaTcuaGlnaDtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgV2k3bCA9IFdpNy5sb3c7XG5cblx0ICAgICAgICAgICAgICAgICAgICB2YXIgV2kxNiAgPSBXW2kgLSAxNl07XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIFdpMTZoID0gV2kxNi5oaWdoO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBXaTE2bCA9IFdpMTYubG93O1xuXG5cdCAgICAgICAgICAgICAgICAgICAgV2lsID0gZ2FtbWEwbCArIFdpN2w7XG5cdCAgICAgICAgICAgICAgICAgICAgV2loID0gZ2FtbWEwaCArIFdpN2ggKyAoKFdpbCA+Pj4gMCkgPCAoZ2FtbWEwbCA+Pj4gMCkgPyAxIDogMCk7XG5cdCAgICAgICAgICAgICAgICAgICAgV2lsID0gV2lsICsgZ2FtbWExbDtcblx0ICAgICAgICAgICAgICAgICAgICBXaWggPSBXaWggKyBnYW1tYTFoICsgKChXaWwgPj4+IDApIDwgKGdhbW1hMWwgPj4+IDApID8gMSA6IDApO1xuXHQgICAgICAgICAgICAgICAgICAgIFdpbCA9IFdpbCArIFdpMTZsO1xuXHQgICAgICAgICAgICAgICAgICAgIFdpaCA9IFdpaCArIFdpMTZoICsgKChXaWwgPj4+IDApIDwgKFdpMTZsID4+PiAwKSA/IDEgOiAwKTtcblxuXHQgICAgICAgICAgICAgICAgICAgIFdpLmhpZ2ggPSBXaWg7XG5cdCAgICAgICAgICAgICAgICAgICAgV2kubG93ICA9IFdpbDtcblx0ICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgdmFyIGNoaCAgPSAoZWggJiBmaCkgXiAofmVoICYgZ2gpO1xuXHQgICAgICAgICAgICAgICAgdmFyIGNobCAgPSAoZWwgJiBmbCkgXiAofmVsICYgZ2wpO1xuXHQgICAgICAgICAgICAgICAgdmFyIG1hamggPSAoYWggJiBiaCkgXiAoYWggJiBjaCkgXiAoYmggJiBjaCk7XG5cdCAgICAgICAgICAgICAgICB2YXIgbWFqbCA9IChhbCAmIGJsKSBeIChhbCAmIGNsKSBeIChibCAmIGNsKTtcblxuXHQgICAgICAgICAgICAgICAgdmFyIHNpZ21hMGggPSAoKGFoID4+PiAyOCkgfCAoYWwgPDwgNCkpICBeICgoYWggPDwgMzApICB8IChhbCA+Pj4gMikpIF4gKChhaCA8PCAyNSkgfCAoYWwgPj4+IDcpKTtcblx0ICAgICAgICAgICAgICAgIHZhciBzaWdtYTBsID0gKChhbCA+Pj4gMjgpIHwgKGFoIDw8IDQpKSAgXiAoKGFsIDw8IDMwKSAgfCAoYWggPj4+IDIpKSBeICgoYWwgPDwgMjUpIHwgKGFoID4+PiA3KSk7XG5cdCAgICAgICAgICAgICAgICB2YXIgc2lnbWExaCA9ICgoZWggPj4+IDE0KSB8IChlbCA8PCAxOCkpIF4gKChlaCA+Pj4gMTgpIHwgKGVsIDw8IDE0KSkgXiAoKGVoIDw8IDIzKSB8IChlbCA+Pj4gOSkpO1xuXHQgICAgICAgICAgICAgICAgdmFyIHNpZ21hMWwgPSAoKGVsID4+PiAxNCkgfCAoZWggPDwgMTgpKSBeICgoZWwgPj4+IDE4KSB8IChlaCA8PCAxNCkpIF4gKChlbCA8PCAyMykgfCAoZWggPj4+IDkpKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gdDEgPSBoICsgc2lnbWExICsgY2ggKyBLW2ldICsgV1tpXVxuXHQgICAgICAgICAgICAgICAgdmFyIEtpICA9IEtbaV07XG5cdCAgICAgICAgICAgICAgICB2YXIgS2loID0gS2kuaGlnaDtcblx0ICAgICAgICAgICAgICAgIHZhciBLaWwgPSBLaS5sb3c7XG5cblx0ICAgICAgICAgICAgICAgIHZhciB0MWwgPSBobCArIHNpZ21hMWw7XG5cdCAgICAgICAgICAgICAgICB2YXIgdDFoID0gaGggKyBzaWdtYTFoICsgKCh0MWwgPj4+IDApIDwgKGhsID4+PiAwKSA/IDEgOiAwKTtcblx0ICAgICAgICAgICAgICAgIHZhciB0MWwgPSB0MWwgKyBjaGw7XG5cdCAgICAgICAgICAgICAgICB2YXIgdDFoID0gdDFoICsgY2hoICsgKCh0MWwgPj4+IDApIDwgKGNobCA+Pj4gMCkgPyAxIDogMCk7XG5cdCAgICAgICAgICAgICAgICB2YXIgdDFsID0gdDFsICsgS2lsO1xuXHQgICAgICAgICAgICAgICAgdmFyIHQxaCA9IHQxaCArIEtpaCArICgodDFsID4+PiAwKSA8IChLaWwgPj4+IDApID8gMSA6IDApO1xuXHQgICAgICAgICAgICAgICAgdmFyIHQxbCA9IHQxbCArIFdpbDtcblx0ICAgICAgICAgICAgICAgIHZhciB0MWggPSB0MWggKyBXaWggKyAoKHQxbCA+Pj4gMCkgPCAoV2lsID4+PiAwKSA/IDEgOiAwKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gdDIgPSBzaWdtYTAgKyBtYWpcblx0ICAgICAgICAgICAgICAgIHZhciB0MmwgPSBzaWdtYTBsICsgbWFqbDtcblx0ICAgICAgICAgICAgICAgIHZhciB0MmggPSBzaWdtYTBoICsgbWFqaCArICgodDJsID4+PiAwKSA8IChzaWdtYTBsID4+PiAwKSA/IDEgOiAwKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gVXBkYXRlIHdvcmtpbmcgdmFyaWFibGVzXG5cdCAgICAgICAgICAgICAgICBoaCA9IGdoO1xuXHQgICAgICAgICAgICAgICAgaGwgPSBnbDtcblx0ICAgICAgICAgICAgICAgIGdoID0gZmg7XG5cdCAgICAgICAgICAgICAgICBnbCA9IGZsO1xuXHQgICAgICAgICAgICAgICAgZmggPSBlaDtcblx0ICAgICAgICAgICAgICAgIGZsID0gZWw7XG5cdCAgICAgICAgICAgICAgICBlbCA9IChkbCArIHQxbCkgfCAwO1xuXHQgICAgICAgICAgICAgICAgZWggPSAoZGggKyB0MWggKyAoKGVsID4+PiAwKSA8IChkbCA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICAgICAgICAgIGRoID0gY2g7XG5cdCAgICAgICAgICAgICAgICBkbCA9IGNsO1xuXHQgICAgICAgICAgICAgICAgY2ggPSBiaDtcblx0ICAgICAgICAgICAgICAgIGNsID0gYmw7XG5cdCAgICAgICAgICAgICAgICBiaCA9IGFoO1xuXHQgICAgICAgICAgICAgICAgYmwgPSBhbDtcblx0ICAgICAgICAgICAgICAgIGFsID0gKHQxbCArIHQybCkgfCAwO1xuXHQgICAgICAgICAgICAgICAgYWggPSAodDFoICsgdDJoICsgKChhbCA+Pj4gMCkgPCAodDFsID4+PiAwKSA/IDEgOiAwKSkgfCAwO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gSW50ZXJtZWRpYXRlIGhhc2ggdmFsdWVcblx0ICAgICAgICAgICAgSDBsID0gSDAubG93ICA9IChIMGwgKyBhbCk7XG5cdCAgICAgICAgICAgIEgwLmhpZ2ggPSAoSDBoICsgYWggKyAoKEgwbCA+Pj4gMCkgPCAoYWwgPj4+IDApID8gMSA6IDApKTtcblx0ICAgICAgICAgICAgSDFsID0gSDEubG93ICA9IChIMWwgKyBibCk7XG5cdCAgICAgICAgICAgIEgxLmhpZ2ggPSAoSDFoICsgYmggKyAoKEgxbCA+Pj4gMCkgPCAoYmwgPj4+IDApID8gMSA6IDApKTtcblx0ICAgICAgICAgICAgSDJsID0gSDIubG93ICA9IChIMmwgKyBjbCk7XG5cdCAgICAgICAgICAgIEgyLmhpZ2ggPSAoSDJoICsgY2ggKyAoKEgybCA+Pj4gMCkgPCAoY2wgPj4+IDApID8gMSA6IDApKTtcblx0ICAgICAgICAgICAgSDNsID0gSDMubG93ICA9IChIM2wgKyBkbCk7XG5cdCAgICAgICAgICAgIEgzLmhpZ2ggPSAoSDNoICsgZGggKyAoKEgzbCA+Pj4gMCkgPCAoZGwgPj4+IDApID8gMSA6IDApKTtcblx0ICAgICAgICAgICAgSDRsID0gSDQubG93ICA9IChINGwgKyBlbCk7XG5cdCAgICAgICAgICAgIEg0LmhpZ2ggPSAoSDRoICsgZWggKyAoKEg0bCA+Pj4gMCkgPCAoZWwgPj4+IDApID8gMSA6IDApKTtcblx0ICAgICAgICAgICAgSDVsID0gSDUubG93ICA9IChINWwgKyBmbCk7XG5cdCAgICAgICAgICAgIEg1LmhpZ2ggPSAoSDVoICsgZmggKyAoKEg1bCA+Pj4gMCkgPCAoZmwgPj4+IDApID8gMSA6IDApKTtcblx0ICAgICAgICAgICAgSDZsID0gSDYubG93ICA9IChINmwgKyBnbCk7XG5cdCAgICAgICAgICAgIEg2LmhpZ2ggPSAoSDZoICsgZ2ggKyAoKEg2bCA+Pj4gMCkgPCAoZ2wgPj4+IDApID8gMSA6IDApKTtcblx0ICAgICAgICAgICAgSDdsID0gSDcubG93ICA9IChIN2wgKyBobCk7XG5cdCAgICAgICAgICAgIEg3LmhpZ2ggPSAoSDdoICsgaGggKyAoKEg3bCA+Pj4gMCkgPCAoaGwgPj4+IDApID8gMSA6IDApKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvRmluYWxpemU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy5fZGF0YTtcblx0ICAgICAgICAgICAgdmFyIGRhdGFXb3JkcyA9IGRhdGEud29yZHM7XG5cblx0ICAgICAgICAgICAgdmFyIG5CaXRzVG90YWwgPSB0aGlzLl9uRGF0YUJ5dGVzICogODtcblx0ICAgICAgICAgICAgdmFyIG5CaXRzTGVmdCA9IGRhdGEuc2lnQnl0ZXMgKiA4O1xuXG5cdCAgICAgICAgICAgIC8vIEFkZCBwYWRkaW5nXG5cdCAgICAgICAgICAgIGRhdGFXb3Jkc1tuQml0c0xlZnQgPj4+IDVdIHw9IDB4ODAgPDwgKDI0IC0gbkJpdHNMZWZ0ICUgMzIpO1xuXHQgICAgICAgICAgICBkYXRhV29yZHNbKCgobkJpdHNMZWZ0ICsgMTI4KSA+Pj4gMTApIDw8IDUpICsgMzBdID0gTWF0aC5mbG9vcihuQml0c1RvdGFsIC8gMHgxMDAwMDAwMDApO1xuXHQgICAgICAgICAgICBkYXRhV29yZHNbKCgobkJpdHNMZWZ0ICsgMTI4KSA+Pj4gMTApIDw8IDUpICsgMzFdID0gbkJpdHNUb3RhbDtcblx0ICAgICAgICAgICAgZGF0YS5zaWdCeXRlcyA9IGRhdGFXb3Jkcy5sZW5ndGggKiA0O1xuXG5cdCAgICAgICAgICAgIC8vIEhhc2ggZmluYWwgYmxvY2tzXG5cdCAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3MoKTtcblxuXHQgICAgICAgICAgICAvLyBDb252ZXJ0IGhhc2ggdG8gMzItYml0IHdvcmQgYXJyYXkgYmVmb3JlIHJldHVybmluZ1xuXHQgICAgICAgICAgICB2YXIgaGFzaCA9IHRoaXMuX2hhc2gudG9YMzIoKTtcblxuXHQgICAgICAgICAgICAvLyBSZXR1cm4gZmluYWwgY29tcHV0ZWQgaGFzaFxuXHQgICAgICAgICAgICByZXR1cm4gaGFzaDtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgY2xvbmU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdmFyIGNsb25lID0gSGFzaGVyLmNsb25lLmNhbGwodGhpcyk7XG5cdCAgICAgICAgICAgIGNsb25lLl9oYXNoID0gdGhpcy5faGFzaC5jbG9uZSgpO1xuXG5cdCAgICAgICAgICAgIHJldHVybiBjbG9uZTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgYmxvY2tTaXplOiAxMDI0LzMyXG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbiB0byB0aGUgaGFzaGVyJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gaGFzaC5cblx0ICAgICAqXG5cdCAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBoYXNoLlxuXHQgICAgICpcblx0ICAgICAqIEBzdGF0aWNcblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgaGFzaCA9IENyeXB0b0pTLlNIQTUxMignbWVzc2FnZScpO1xuXHQgICAgICogICAgIHZhciBoYXNoID0gQ3J5cHRvSlMuU0hBNTEyKHdvcmRBcnJheSk7XG5cdCAgICAgKi9cblx0ICAgIEMuU0hBNTEyID0gSGFzaGVyLl9jcmVhdGVIZWxwZXIoU0hBNTEyKTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbiB0byB0aGUgSE1BQydzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGhhc2guXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IGtleSBUaGUgc2VjcmV0IGtleS5cblx0ICAgICAqXG5cdCAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBITUFDLlxuXHQgICAgICpcblx0ICAgICAqIEBzdGF0aWNcblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgaG1hYyA9IENyeXB0b0pTLkhtYWNTSEE1MTIobWVzc2FnZSwga2V5KTtcblx0ICAgICAqL1xuXHQgICAgQy5IbWFjU0hBNTEyID0gSGFzaGVyLl9jcmVhdGVIbWFjSGVscGVyKFNIQTUxMik7XG5cdH0oKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMuU0hBNTEyO1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL2VuYy1iYXNlNjRcIiksIHJlcXVpcmUoXCIuL21kNVwiKSwgcmVxdWlyZShcIi4vZXZwa2RmXCIpLCByZXF1aXJlKFwiLi9jaXBoZXItY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9lbmMtYmFzZTY0XCIsIFwiLi9tZDVcIiwgXCIuL2V2cGtkZlwiLCBcIi4vY2lwaGVyLWNvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAoKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBXb3JkQXJyYXkgPSBDX2xpYi5Xb3JkQXJyYXk7XG5cdCAgICB2YXIgQmxvY2tDaXBoZXIgPSBDX2xpYi5CbG9ja0NpcGhlcjtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cblx0ICAgIC8vIFBlcm11dGVkIENob2ljZSAxIGNvbnN0YW50c1xuXHQgICAgdmFyIFBDMSA9IFtcblx0ICAgICAgICA1NywgNDksIDQxLCAzMywgMjUsIDE3LCA5LCAgMSxcblx0ICAgICAgICA1OCwgNTAsIDQyLCAzNCwgMjYsIDE4LCAxMCwgMixcblx0ICAgICAgICA1OSwgNTEsIDQzLCAzNSwgMjcsIDE5LCAxMSwgMyxcblx0ICAgICAgICA2MCwgNTIsIDQ0LCAzNiwgNjMsIDU1LCA0NywgMzksXG5cdCAgICAgICAgMzEsIDIzLCAxNSwgNywgIDYyLCA1NCwgNDYsIDM4LFxuXHQgICAgICAgIDMwLCAyMiwgMTQsIDYsICA2MSwgNTMsIDQ1LCAzNyxcblx0ICAgICAgICAyOSwgMjEsIDEzLCA1LCAgMjgsIDIwLCAxMiwgNFxuXHQgICAgXTtcblxuXHQgICAgLy8gUGVybXV0ZWQgQ2hvaWNlIDIgY29uc3RhbnRzXG5cdCAgICB2YXIgUEMyID0gW1xuXHQgICAgICAgIDE0LCAxNywgMTEsIDI0LCAxLCAgNSxcblx0ICAgICAgICAzLCAgMjgsIDE1LCA2LCAgMjEsIDEwLFxuXHQgICAgICAgIDIzLCAxOSwgMTIsIDQsICAyNiwgOCxcblx0ICAgICAgICAxNiwgNywgIDI3LCAyMCwgMTMsIDIsXG5cdCAgICAgICAgNDEsIDUyLCAzMSwgMzcsIDQ3LCA1NSxcblx0ICAgICAgICAzMCwgNDAsIDUxLCA0NSwgMzMsIDQ4LFxuXHQgICAgICAgIDQ0LCA0OSwgMzksIDU2LCAzNCwgNTMsXG5cdCAgICAgICAgNDYsIDQyLCA1MCwgMzYsIDI5LCAzMlxuXHQgICAgXTtcblxuXHQgICAgLy8gQ3VtdWxhdGl2ZSBiaXQgc2hpZnQgY29uc3RhbnRzXG5cdCAgICB2YXIgQklUX1NISUZUUyA9IFsxLCAgMiwgIDQsICA2LCAgOCwgIDEwLCAxMiwgMTQsIDE1LCAxNywgMTksIDIxLCAyMywgMjUsIDI3LCAyOF07XG5cblx0ICAgIC8vIFNCT1hlcyBhbmQgcm91bmQgcGVybXV0YXRpb24gY29uc3RhbnRzXG5cdCAgICB2YXIgU0JPWF9QID0gW1xuXHQgICAgICAgIHtcblx0ICAgICAgICAgICAgMHgwOiAweDgwODIwMCxcblx0ICAgICAgICAgICAgMHgxMDAwMDAwMDogMHg4MDAwLFxuXHQgICAgICAgICAgICAweDIwMDAwMDAwOiAweDgwODAwMixcblx0ICAgICAgICAgICAgMHgzMDAwMDAwMDogMHgyLFxuXHQgICAgICAgICAgICAweDQwMDAwMDAwOiAweDIwMCxcblx0ICAgICAgICAgICAgMHg1MDAwMDAwMDogMHg4MDgyMDIsXG5cdCAgICAgICAgICAgIDB4NjAwMDAwMDA6IDB4ODAwMjAyLFxuXHQgICAgICAgICAgICAweDcwMDAwMDAwOiAweDgwMDAwMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwMDogMHgyMDIsXG5cdCAgICAgICAgICAgIDB4OTAwMDAwMDA6IDB4ODAwMjAwLFxuXHQgICAgICAgICAgICAweGEwMDAwMDAwOiAweDgyMDAsXG5cdCAgICAgICAgICAgIDB4YjAwMDAwMDA6IDB4ODA4MDAwLFxuXHQgICAgICAgICAgICAweGMwMDAwMDAwOiAweDgwMDIsXG5cdCAgICAgICAgICAgIDB4ZDAwMDAwMDA6IDB4ODAwMDAyLFxuXHQgICAgICAgICAgICAweGUwMDAwMDAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4ZjAwMDAwMDA6IDB4ODIwMixcblx0ICAgICAgICAgICAgMHg4MDAwMDAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4MTgwMDAwMDA6IDB4ODA4MjAyLFxuXHQgICAgICAgICAgICAweDI4MDAwMDAwOiAweDgyMDIsXG5cdCAgICAgICAgICAgIDB4MzgwMDAwMDA6IDB4ODAwMCxcblx0ICAgICAgICAgICAgMHg0ODAwMDAwMDogMHg4MDgyMDAsXG5cdCAgICAgICAgICAgIDB4NTgwMDAwMDA6IDB4MjAwLFxuXHQgICAgICAgICAgICAweDY4MDAwMDAwOiAweDgwODAwMixcblx0ICAgICAgICAgICAgMHg3ODAwMDAwMDogMHgyLFxuXHQgICAgICAgICAgICAweDg4MDAwMDAwOiAweDgwMDIwMCxcblx0ICAgICAgICAgICAgMHg5ODAwMDAwMDogMHg4MjAwLFxuXHQgICAgICAgICAgICAweGE4MDAwMDAwOiAweDgwODAwMCxcblx0ICAgICAgICAgICAgMHhiODAwMDAwMDogMHg4MDAyMDIsXG5cdCAgICAgICAgICAgIDB4YzgwMDAwMDA6IDB4ODAwMDAyLFxuXHQgICAgICAgICAgICAweGQ4MDAwMDAwOiAweDgwMDIsXG5cdCAgICAgICAgICAgIDB4ZTgwMDAwMDA6IDB4MjAyLFxuXHQgICAgICAgICAgICAweGY4MDAwMDAwOiAweDgwMDAwMCxcblx0ICAgICAgICAgICAgMHgxOiAweDgwMDAsXG5cdCAgICAgICAgICAgIDB4MTAwMDAwMDE6IDB4Mixcblx0ICAgICAgICAgICAgMHgyMDAwMDAwMTogMHg4MDgyMDAsXG5cdCAgICAgICAgICAgIDB4MzAwMDAwMDE6IDB4ODAwMDAwLFxuXHQgICAgICAgICAgICAweDQwMDAwMDAxOiAweDgwODAwMixcblx0ICAgICAgICAgICAgMHg1MDAwMDAwMTogMHg4MjAwLFxuXHQgICAgICAgICAgICAweDYwMDAwMDAxOiAweDIwMCxcblx0ICAgICAgICAgICAgMHg3MDAwMDAwMTogMHg4MDAyMDIsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMDE6IDB4ODA4MjAyLFxuXHQgICAgICAgICAgICAweDkwMDAwMDAxOiAweDgwODAwMCxcblx0ICAgICAgICAgICAgMHhhMDAwMDAwMTogMHg4MDAwMDIsXG5cdCAgICAgICAgICAgIDB4YjAwMDAwMDE6IDB4ODIwMixcblx0ICAgICAgICAgICAgMHhjMDAwMDAwMTogMHgyMDIsXG5cdCAgICAgICAgICAgIDB4ZDAwMDAwMDE6IDB4ODAwMjAwLFxuXHQgICAgICAgICAgICAweGUwMDAwMDAxOiAweDgwMDIsXG5cdCAgICAgICAgICAgIDB4ZjAwMDAwMDE6IDB4MCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAxOiAweDgwODIwMixcblx0ICAgICAgICAgICAgMHgxODAwMDAwMTogMHg4MDgwMDAsXG5cdCAgICAgICAgICAgIDB4MjgwMDAwMDE6IDB4ODAwMDAwLFxuXHQgICAgICAgICAgICAweDM4MDAwMDAxOiAweDIwMCxcblx0ICAgICAgICAgICAgMHg0ODAwMDAwMTogMHg4MDAwLFxuXHQgICAgICAgICAgICAweDU4MDAwMDAxOiAweDgwMDAwMixcblx0ICAgICAgICAgICAgMHg2ODAwMDAwMTogMHgyLFxuXHQgICAgICAgICAgICAweDc4MDAwMDAxOiAweDgyMDIsXG5cdCAgICAgICAgICAgIDB4ODgwMDAwMDE6IDB4ODAwMixcblx0ICAgICAgICAgICAgMHg5ODAwMDAwMTogMHg4MDAyMDIsXG5cdCAgICAgICAgICAgIDB4YTgwMDAwMDE6IDB4MjAyLFxuXHQgICAgICAgICAgICAweGI4MDAwMDAxOiAweDgwODIwMCxcblx0ICAgICAgICAgICAgMHhjODAwMDAwMTogMHg4MDAyMDAsXG5cdCAgICAgICAgICAgIDB4ZDgwMDAwMDE6IDB4MCxcblx0ICAgICAgICAgICAgMHhlODAwMDAwMTogMHg4MjAwLFxuXHQgICAgICAgICAgICAweGY4MDAwMDAxOiAweDgwODAwMlxuXHQgICAgICAgIH0sXG5cdCAgICAgICAge1xuXHQgICAgICAgICAgICAweDA6IDB4NDAwODQwMTAsXG5cdCAgICAgICAgICAgIDB4MTAwMDAwMDogMHg0MDAwLFxuXHQgICAgICAgICAgICAweDIwMDAwMDA6IDB4ODAwMDAsXG5cdCAgICAgICAgICAgIDB4MzAwMDAwMDogMHg0MDA4MDAxMCxcblx0ICAgICAgICAgICAgMHg0MDAwMDAwOiAweDQwMDAwMDEwLFxuXHQgICAgICAgICAgICAweDUwMDAwMDA6IDB4NDAwODQwMDAsXG5cdCAgICAgICAgICAgIDB4NjAwMDAwMDogMHg0MDAwNDAwMCxcblx0ICAgICAgICAgICAgMHg3MDAwMDAwOiAweDEwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDA6IDB4ODQwMDAsXG5cdCAgICAgICAgICAgIDB4OTAwMDAwMDogMHg0MDAwNDAxMCxcblx0ICAgICAgICAgICAgMHhhMDAwMDAwOiAweDQwMDAwMDAwLFxuXHQgICAgICAgICAgICAweGIwMDAwMDA6IDB4ODQwMTAsXG5cdCAgICAgICAgICAgIDB4YzAwMDAwMDogMHg4MDAxMCxcblx0ICAgICAgICAgICAgMHhkMDAwMDAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4ZTAwMDAwMDogMHg0MDEwLFxuXHQgICAgICAgICAgICAweGYwMDAwMDA6IDB4NDAwODAwMDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwOiAweDQwMDA0MDAwLFxuXHQgICAgICAgICAgICAweDE4MDAwMDA6IDB4ODQwMTAsXG5cdCAgICAgICAgICAgIDB4MjgwMDAwMDogMHgxMCxcblx0ICAgICAgICAgICAgMHgzODAwMDAwOiAweDQwMDA0MDEwLFxuXHQgICAgICAgICAgICAweDQ4MDAwMDA6IDB4NDAwODQwMTAsXG5cdCAgICAgICAgICAgIDB4NTgwMDAwMDogMHg0MDAwMDAwMCxcblx0ICAgICAgICAgICAgMHg2ODAwMDAwOiAweDgwMDAwLFxuXHQgICAgICAgICAgICAweDc4MDAwMDA6IDB4NDAwODAwMTAsXG5cdCAgICAgICAgICAgIDB4ODgwMDAwMDogMHg4MDAxMCxcblx0ICAgICAgICAgICAgMHg5ODAwMDAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4YTgwMDAwMDogMHg0MDAwLFxuXHQgICAgICAgICAgICAweGI4MDAwMDA6IDB4NDAwODAwMDAsXG5cdCAgICAgICAgICAgIDB4YzgwMDAwMDogMHg0MDAwMDAxMCxcblx0ICAgICAgICAgICAgMHhkODAwMDAwOiAweDg0MDAwLFxuXHQgICAgICAgICAgICAweGU4MDAwMDA6IDB4NDAwODQwMDAsXG5cdCAgICAgICAgICAgIDB4ZjgwMDAwMDogMHg0MDEwLFxuXHQgICAgICAgICAgICAweDEwMDAwMDAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4MTEwMDAwMDA6IDB4NDAwODAwMTAsXG5cdCAgICAgICAgICAgIDB4MTIwMDAwMDA6IDB4NDAwMDQwMTAsXG5cdCAgICAgICAgICAgIDB4MTMwMDAwMDA6IDB4NDAwODQwMDAsXG5cdCAgICAgICAgICAgIDB4MTQwMDAwMDA6IDB4NDAwODAwMDAsXG5cdCAgICAgICAgICAgIDB4MTUwMDAwMDA6IDB4MTAsXG5cdCAgICAgICAgICAgIDB4MTYwMDAwMDA6IDB4ODQwMTAsXG5cdCAgICAgICAgICAgIDB4MTcwMDAwMDA6IDB4NDAwMCxcblx0ICAgICAgICAgICAgMHgxODAwMDAwMDogMHg0MDEwLFxuXHQgICAgICAgICAgICAweDE5MDAwMDAwOiAweDgwMDAwLFxuXHQgICAgICAgICAgICAweDFhMDAwMDAwOiAweDgwMDEwLFxuXHQgICAgICAgICAgICAweDFiMDAwMDAwOiAweDQwMDAwMDEwLFxuXHQgICAgICAgICAgICAweDFjMDAwMDAwOiAweDg0MDAwLFxuXHQgICAgICAgICAgICAweDFkMDAwMDAwOiAweDQwMDA0MDAwLFxuXHQgICAgICAgICAgICAweDFlMDAwMDAwOiAweDQwMDAwMDAwLFxuXHQgICAgICAgICAgICAweDFmMDAwMDAwOiAweDQwMDg0MDEwLFxuXHQgICAgICAgICAgICAweDEwODAwMDAwOiAweDg0MDEwLFxuXHQgICAgICAgICAgICAweDExODAwMDAwOiAweDgwMDAwLFxuXHQgICAgICAgICAgICAweDEyODAwMDAwOiAweDQwMDgwMDAwLFxuXHQgICAgICAgICAgICAweDEzODAwMDAwOiAweDQwMDAsXG5cdCAgICAgICAgICAgIDB4MTQ4MDAwMDA6IDB4NDAwMDQwMDAsXG5cdCAgICAgICAgICAgIDB4MTU4MDAwMDA6IDB4NDAwODQwMTAsXG5cdCAgICAgICAgICAgIDB4MTY4MDAwMDA6IDB4MTAsXG5cdCAgICAgICAgICAgIDB4MTc4MDAwMDA6IDB4NDAwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTg4MDAwMDA6IDB4NDAwODQwMDAsXG5cdCAgICAgICAgICAgIDB4MTk4MDAwMDA6IDB4NDAwMDAwMTAsXG5cdCAgICAgICAgICAgIDB4MWE4MDAwMDA6IDB4NDAwMDQwMTAsXG5cdCAgICAgICAgICAgIDB4MWI4MDAwMDA6IDB4ODAwMTAsXG5cdCAgICAgICAgICAgIDB4MWM4MDAwMDA6IDB4MCxcblx0ICAgICAgICAgICAgMHgxZDgwMDAwMDogMHg0MDEwLFxuXHQgICAgICAgICAgICAweDFlODAwMDAwOiAweDQwMDgwMDEwLFxuXHQgICAgICAgICAgICAweDFmODAwMDAwOiAweDg0MDAwXG5cdCAgICAgICAgfSxcblx0ICAgICAgICB7XG5cdCAgICAgICAgICAgIDB4MDogMHgxMDQsXG5cdCAgICAgICAgICAgIDB4MTAwMDAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4MjAwMDAwOiAweDQwMDAxMDAsXG5cdCAgICAgICAgICAgIDB4MzAwMDAwOiAweDEwMTA0LFxuXHQgICAgICAgICAgICAweDQwMDAwMDogMHgxMDAwNCxcblx0ICAgICAgICAgICAgMHg1MDAwMDA6IDB4NDAwMDAwNCxcblx0ICAgICAgICAgICAgMHg2MDAwMDA6IDB4NDAxMDEwNCxcblx0ICAgICAgICAgICAgMHg3MDAwMDA6IDB4NDAxMDAwMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDA6IDB4NDAwMDAwMCxcblx0ICAgICAgICAgICAgMHg5MDAwMDA6IDB4NDAxMDEwMCxcblx0ICAgICAgICAgICAgMHhhMDAwMDA6IDB4MTAxMDAsXG5cdCAgICAgICAgICAgIDB4YjAwMDAwOiAweDQwMTAwMDQsXG5cdCAgICAgICAgICAgIDB4YzAwMDAwOiAweDQwMDAxMDQsXG5cdCAgICAgICAgICAgIDB4ZDAwMDAwOiAweDEwMDAwLFxuXHQgICAgICAgICAgICAweGUwMDAwMDogMHg0LFxuXHQgICAgICAgICAgICAweGYwMDAwMDogMHgxMDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDA6IDB4NDAxMDEwMCxcblx0ICAgICAgICAgICAgMHgxODAwMDA6IDB4NDAxMDAwNCxcblx0ICAgICAgICAgICAgMHgyODAwMDA6IDB4MCxcblx0ICAgICAgICAgICAgMHgzODAwMDA6IDB4NDAwMDEwMCxcblx0ICAgICAgICAgICAgMHg0ODAwMDA6IDB4NDAwMDAwNCxcblx0ICAgICAgICAgICAgMHg1ODAwMDA6IDB4MTAwMDAsXG5cdCAgICAgICAgICAgIDB4NjgwMDAwOiAweDEwMDA0LFxuXHQgICAgICAgICAgICAweDc4MDAwMDogMHgxMDQsXG5cdCAgICAgICAgICAgIDB4ODgwMDAwOiAweDQsXG5cdCAgICAgICAgICAgIDB4OTgwMDAwOiAweDEwMCxcblx0ICAgICAgICAgICAgMHhhODAwMDA6IDB4NDAxMDAwMCxcblx0ICAgICAgICAgICAgMHhiODAwMDA6IDB4MTAxMDQsXG5cdCAgICAgICAgICAgIDB4YzgwMDAwOiAweDEwMTAwLFxuXHQgICAgICAgICAgICAweGQ4MDAwMDogMHg0MDAwMTA0LFxuXHQgICAgICAgICAgICAweGU4MDAwMDogMHg0MDEwMTA0LFxuXHQgICAgICAgICAgICAweGY4MDAwMDogMHg0MDAwMDAwLFxuXHQgICAgICAgICAgICAweDEwMDAwMDA6IDB4NDAxMDEwMCxcblx0ICAgICAgICAgICAgMHgxMTAwMDAwOiAweDEwMDA0LFxuXHQgICAgICAgICAgICAweDEyMDAwMDA6IDB4MTAwMDAsXG5cdCAgICAgICAgICAgIDB4MTMwMDAwMDogMHg0MDAwMTAwLFxuXHQgICAgICAgICAgICAweDE0MDAwMDA6IDB4MTAwLFxuXHQgICAgICAgICAgICAweDE1MDAwMDA6IDB4NDAxMDEwNCxcblx0ICAgICAgICAgICAgMHgxNjAwMDAwOiAweDQwMDAwMDQsXG5cdCAgICAgICAgICAgIDB4MTcwMDAwMDogMHgwLFxuXHQgICAgICAgICAgICAweDE4MDAwMDA6IDB4NDAwMDEwNCxcblx0ICAgICAgICAgICAgMHgxOTAwMDAwOiAweDQwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MWEwMDAwMDogMHg0LFxuXHQgICAgICAgICAgICAweDFiMDAwMDA6IDB4MTAxMDAsXG5cdCAgICAgICAgICAgIDB4MWMwMDAwMDogMHg0MDEwMDAwLFxuXHQgICAgICAgICAgICAweDFkMDAwMDA6IDB4MTA0LFxuXHQgICAgICAgICAgICAweDFlMDAwMDA6IDB4MTAxMDQsXG5cdCAgICAgICAgICAgIDB4MWYwMDAwMDogMHg0MDEwMDA0LFxuXHQgICAgICAgICAgICAweDEwODAwMDA6IDB4NDAwMDAwMCxcblx0ICAgICAgICAgICAgMHgxMTgwMDAwOiAweDEwNCxcblx0ICAgICAgICAgICAgMHgxMjgwMDAwOiAweDQwMTAxMDAsXG5cdCAgICAgICAgICAgIDB4MTM4MDAwMDogMHgwLFxuXHQgICAgICAgICAgICAweDE0ODAwMDA6IDB4MTAwMDQsXG5cdCAgICAgICAgICAgIDB4MTU4MDAwMDogMHg0MDAwMTAwLFxuXHQgICAgICAgICAgICAweDE2ODAwMDA6IDB4MTAwLFxuXHQgICAgICAgICAgICAweDE3ODAwMDA6IDB4NDAxMDAwNCxcblx0ICAgICAgICAgICAgMHgxODgwMDAwOiAweDEwMDAwLFxuXHQgICAgICAgICAgICAweDE5ODAwMDA6IDB4NDAxMDEwNCxcblx0ICAgICAgICAgICAgMHgxYTgwMDAwOiAweDEwMTA0LFxuXHQgICAgICAgICAgICAweDFiODAwMDA6IDB4NDAwMDAwNCxcblx0ICAgICAgICAgICAgMHgxYzgwMDAwOiAweDQwMDAxMDQsXG5cdCAgICAgICAgICAgIDB4MWQ4MDAwMDogMHg0MDEwMDAwLFxuXHQgICAgICAgICAgICAweDFlODAwMDA6IDB4NCxcblx0ICAgICAgICAgICAgMHgxZjgwMDAwOiAweDEwMTAwXG5cdCAgICAgICAgfSxcblx0ICAgICAgICB7XG5cdCAgICAgICAgICAgIDB4MDogMHg4MDQwMTAwMCxcblx0ICAgICAgICAgICAgMHgxMDAwMDogMHg4MDAwMTA0MCxcblx0ICAgICAgICAgICAgMHgyMDAwMDogMHg0MDEwNDAsXG5cdCAgICAgICAgICAgIDB4MzAwMDA6IDB4ODA0MDAwMDAsXG5cdCAgICAgICAgICAgIDB4NDAwMDA6IDB4MCxcblx0ICAgICAgICAgICAgMHg1MDAwMDogMHg0MDEwMDAsXG5cdCAgICAgICAgICAgIDB4NjAwMDA6IDB4ODAwMDAwNDAsXG5cdCAgICAgICAgICAgIDB4NzAwMDA6IDB4NDAwMDQwLFxuXHQgICAgICAgICAgICAweDgwMDAwOiAweDgwMDAwMDAwLFxuXHQgICAgICAgICAgICAweDkwMDAwOiAweDQwMDAwMCxcblx0ICAgICAgICAgICAgMHhhMDAwMDogMHg0MCxcblx0ICAgICAgICAgICAgMHhiMDAwMDogMHg4MDAwMTAwMCxcblx0ICAgICAgICAgICAgMHhjMDAwMDogMHg4MDQwMDA0MCxcblx0ICAgICAgICAgICAgMHhkMDAwMDogMHgxMDQwLFxuXHQgICAgICAgICAgICAweGUwMDAwOiAweDEwMDAsXG5cdCAgICAgICAgICAgIDB4ZjAwMDA6IDB4ODA0MDEwNDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDogMHg4MDAwMTA0MCxcblx0ICAgICAgICAgICAgMHgxODAwMDogMHg0MCxcblx0ICAgICAgICAgICAgMHgyODAwMDogMHg4MDQwMDA0MCxcblx0ICAgICAgICAgICAgMHgzODAwMDogMHg4MDAwMTAwMCxcblx0ICAgICAgICAgICAgMHg0ODAwMDogMHg0MDEwMDAsXG5cdCAgICAgICAgICAgIDB4NTgwMDA6IDB4ODA0MDEwNDAsXG5cdCAgICAgICAgICAgIDB4NjgwMDA6IDB4MCxcblx0ICAgICAgICAgICAgMHg3ODAwMDogMHg4MDQwMDAwMCxcblx0ICAgICAgICAgICAgMHg4ODAwMDogMHgxMDAwLFxuXHQgICAgICAgICAgICAweDk4MDAwOiAweDgwNDAxMDAwLFxuXHQgICAgICAgICAgICAweGE4MDAwOiAweDQwMDAwMCxcblx0ICAgICAgICAgICAgMHhiODAwMDogMHgxMDQwLFxuXHQgICAgICAgICAgICAweGM4MDAwOiAweDgwMDAwMDAwLFxuXHQgICAgICAgICAgICAweGQ4MDAwOiAweDQwMDA0MCxcblx0ICAgICAgICAgICAgMHhlODAwMDogMHg0MDEwNDAsXG5cdCAgICAgICAgICAgIDB4ZjgwMDA6IDB4ODAwMDAwNDAsXG5cdCAgICAgICAgICAgIDB4MTAwMDAwOiAweDQwMDA0MCxcblx0ICAgICAgICAgICAgMHgxMTAwMDA6IDB4NDAxMDAwLFxuXHQgICAgICAgICAgICAweDEyMDAwMDogMHg4MDAwMDA0MCxcblx0ICAgICAgICAgICAgMHgxMzAwMDA6IDB4MCxcblx0ICAgICAgICAgICAgMHgxNDAwMDA6IDB4MTA0MCxcblx0ICAgICAgICAgICAgMHgxNTAwMDA6IDB4ODA0MDAwNDAsXG5cdCAgICAgICAgICAgIDB4MTYwMDAwOiAweDgwNDAxMDAwLFxuXHQgICAgICAgICAgICAweDE3MDAwMDogMHg4MDAwMTA0MCxcblx0ICAgICAgICAgICAgMHgxODAwMDA6IDB4ODA0MDEwNDAsXG5cdCAgICAgICAgICAgIDB4MTkwMDAwOiAweDgwMDAwMDAwLFxuXHQgICAgICAgICAgICAweDFhMDAwMDogMHg4MDQwMDAwMCxcblx0ICAgICAgICAgICAgMHgxYjAwMDA6IDB4NDAxMDQwLFxuXHQgICAgICAgICAgICAweDFjMDAwMDogMHg4MDAwMTAwMCxcblx0ICAgICAgICAgICAgMHgxZDAwMDA6IDB4NDAwMDAwLFxuXHQgICAgICAgICAgICAweDFlMDAwMDogMHg0MCxcblx0ICAgICAgICAgICAgMHgxZjAwMDA6IDB4MTAwMCxcblx0ICAgICAgICAgICAgMHgxMDgwMDA6IDB4ODA0MDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTE4MDAwOiAweDgwNDAxMDQwLFxuXHQgICAgICAgICAgICAweDEyODAwMDogMHgwLFxuXHQgICAgICAgICAgICAweDEzODAwMDogMHg0MDEwMDAsXG5cdCAgICAgICAgICAgIDB4MTQ4MDAwOiAweDQwMDA0MCxcblx0ICAgICAgICAgICAgMHgxNTgwMDA6IDB4ODAwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTY4MDAwOiAweDgwMDAxMDQwLFxuXHQgICAgICAgICAgICAweDE3ODAwMDogMHg0MCxcblx0ICAgICAgICAgICAgMHgxODgwMDA6IDB4ODAwMDAwNDAsXG5cdCAgICAgICAgICAgIDB4MTk4MDAwOiAweDEwMDAsXG5cdCAgICAgICAgICAgIDB4MWE4MDAwOiAweDgwMDAxMDAwLFxuXHQgICAgICAgICAgICAweDFiODAwMDogMHg4MDQwMDA0MCxcblx0ICAgICAgICAgICAgMHgxYzgwMDA6IDB4MTA0MCxcblx0ICAgICAgICAgICAgMHgxZDgwMDA6IDB4ODA0MDEwMDAsXG5cdCAgICAgICAgICAgIDB4MWU4MDAwOiAweDQwMDAwMCxcblx0ICAgICAgICAgICAgMHgxZjgwMDA6IDB4NDAxMDQwXG5cdCAgICAgICAgfSxcblx0ICAgICAgICB7XG5cdCAgICAgICAgICAgIDB4MDogMHg4MCxcblx0ICAgICAgICAgICAgMHgxMDAwOiAweDEwNDAwMDAsXG5cdCAgICAgICAgICAgIDB4MjAwMDogMHg0MDAwMCxcblx0ICAgICAgICAgICAgMHgzMDAwOiAweDIwMDAwMDAwLFxuXHQgICAgICAgICAgICAweDQwMDA6IDB4MjAwNDAwODAsXG5cdCAgICAgICAgICAgIDB4NTAwMDogMHgxMDAwMDgwLFxuXHQgICAgICAgICAgICAweDYwMDA6IDB4MjEwMDAwODAsXG5cdCAgICAgICAgICAgIDB4NzAwMDogMHg0MDA4MCxcblx0ICAgICAgICAgICAgMHg4MDAwOiAweDEwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4OTAwMDogMHgyMDA0MDAwMCxcblx0ICAgICAgICAgICAgMHhhMDAwOiAweDIwMDAwMDgwLFxuXHQgICAgICAgICAgICAweGIwMDA6IDB4MjEwNDAwODAsXG5cdCAgICAgICAgICAgIDB4YzAwMDogMHgyMTA0MDAwMCxcblx0ICAgICAgICAgICAgMHhkMDAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4ZTAwMDogMHgxMDQwMDgwLFxuXHQgICAgICAgICAgICAweGYwMDA6IDB4MjEwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4ODAwOiAweDEwNDAwODAsXG5cdCAgICAgICAgICAgIDB4MTgwMDogMHgyMTAwMDA4MCxcblx0ICAgICAgICAgICAgMHgyODAwOiAweDgwLFxuXHQgICAgICAgICAgICAweDM4MDA6IDB4MTA0MDAwMCxcblx0ICAgICAgICAgICAgMHg0ODAwOiAweDQwMDAwLFxuXHQgICAgICAgICAgICAweDU4MDA6IDB4MjAwNDAwODAsXG5cdCAgICAgICAgICAgIDB4NjgwMDogMHgyMTA0MDAwMCxcblx0ICAgICAgICAgICAgMHg3ODAwOiAweDIwMDAwMDAwLFxuXHQgICAgICAgICAgICAweDg4MDA6IDB4MjAwNDAwMDAsXG5cdCAgICAgICAgICAgIDB4OTgwMDogMHgwLFxuXHQgICAgICAgICAgICAweGE4MDA6IDB4MjEwNDAwODAsXG5cdCAgICAgICAgICAgIDB4YjgwMDogMHgxMDAwMDgwLFxuXHQgICAgICAgICAgICAweGM4MDA6IDB4MjAwMDAwODAsXG5cdCAgICAgICAgICAgIDB4ZDgwMDogMHgyMTAwMDAwMCxcblx0ICAgICAgICAgICAgMHhlODAwOiAweDEwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4ZjgwMDogMHg0MDA4MCxcblx0ICAgICAgICAgICAgMHgxMDAwMDogMHg0MDAwMCxcblx0ICAgICAgICAgICAgMHgxMTAwMDogMHg4MCxcblx0ICAgICAgICAgICAgMHgxMjAwMDogMHgyMDAwMDAwMCxcblx0ICAgICAgICAgICAgMHgxMzAwMDogMHgyMTAwMDA4MCxcblx0ICAgICAgICAgICAgMHgxNDAwMDogMHgxMDAwMDgwLFxuXHQgICAgICAgICAgICAweDE1MDAwOiAweDIxMDQwMDAwLFxuXHQgICAgICAgICAgICAweDE2MDAwOiAweDIwMDQwMDgwLFxuXHQgICAgICAgICAgICAweDE3MDAwOiAweDEwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTgwMDA6IDB4MjEwNDAwODAsXG5cdCAgICAgICAgICAgIDB4MTkwMDA6IDB4MjEwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MWEwMDA6IDB4MTA0MDAwMCxcblx0ICAgICAgICAgICAgMHgxYjAwMDogMHgyMDA0MDAwMCxcblx0ICAgICAgICAgICAgMHgxYzAwMDogMHg0MDA4MCxcblx0ICAgICAgICAgICAgMHgxZDAwMDogMHgyMDAwMDA4MCxcblx0ICAgICAgICAgICAgMHgxZTAwMDogMHgwLFxuXHQgICAgICAgICAgICAweDFmMDAwOiAweDEwNDAwODAsXG5cdCAgICAgICAgICAgIDB4MTA4MDA6IDB4MjEwMDAwODAsXG5cdCAgICAgICAgICAgIDB4MTE4MDA6IDB4MTAwMDAwMCxcblx0ICAgICAgICAgICAgMHgxMjgwMDogMHgxMDQwMDAwLFxuXHQgICAgICAgICAgICAweDEzODAwOiAweDIwMDQwMDgwLFxuXHQgICAgICAgICAgICAweDE0ODAwOiAweDIwMDAwMDAwLFxuXHQgICAgICAgICAgICAweDE1ODAwOiAweDEwNDAwODAsXG5cdCAgICAgICAgICAgIDB4MTY4MDA6IDB4ODAsXG5cdCAgICAgICAgICAgIDB4MTc4MDA6IDB4MjEwNDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTg4MDA6IDB4NDAwODAsXG5cdCAgICAgICAgICAgIDB4MTk4MDA6IDB4MjEwNDAwODAsXG5cdCAgICAgICAgICAgIDB4MWE4MDA6IDB4MCxcblx0ICAgICAgICAgICAgMHgxYjgwMDogMHgyMTAwMDAwMCxcblx0ICAgICAgICAgICAgMHgxYzgwMDogMHgxMDAwMDgwLFxuXHQgICAgICAgICAgICAweDFkODAwOiAweDQwMDAwLFxuXHQgICAgICAgICAgICAweDFlODAwOiAweDIwMDQwMDAwLFxuXHQgICAgICAgICAgICAweDFmODAwOiAweDIwMDAwMDgwXG5cdCAgICAgICAgfSxcblx0ICAgICAgICB7XG5cdCAgICAgICAgICAgIDB4MDogMHgxMDAwMDAwOCxcblx0ICAgICAgICAgICAgMHgxMDA6IDB4MjAwMCxcblx0ICAgICAgICAgICAgMHgyMDA6IDB4MTAyMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MzAwOiAweDEwMjAyMDA4LFxuXHQgICAgICAgICAgICAweDQwMDogMHgxMDAwMjAwMCxcblx0ICAgICAgICAgICAgMHg1MDA6IDB4MjAwMDAwLFxuXHQgICAgICAgICAgICAweDYwMDogMHgyMDAwMDgsXG5cdCAgICAgICAgICAgIDB4NzAwOiAweDEwMDAwMDAwLFxuXHQgICAgICAgICAgICAweDgwMDogMHgwLFxuXHQgICAgICAgICAgICAweDkwMDogMHgxMDAwMjAwOCxcblx0ICAgICAgICAgICAgMHhhMDA6IDB4MjAyMDAwLFxuXHQgICAgICAgICAgICAweGIwMDogMHg4LFxuXHQgICAgICAgICAgICAweGMwMDogMHgxMDIwMDAwOCxcblx0ICAgICAgICAgICAgMHhkMDA6IDB4MjAyMDA4LFxuXHQgICAgICAgICAgICAweGUwMDogMHgyMDA4LFxuXHQgICAgICAgICAgICAweGYwMDogMHgxMDIwMjAwMCxcblx0ICAgICAgICAgICAgMHg4MDogMHgxMDIwMDAwMCxcblx0ICAgICAgICAgICAgMHgxODA6IDB4MTAyMDIwMDgsXG5cdCAgICAgICAgICAgIDB4MjgwOiAweDgsXG5cdCAgICAgICAgICAgIDB4MzgwOiAweDIwMDAwMCxcblx0ICAgICAgICAgICAgMHg0ODA6IDB4MjAyMDA4LFxuXHQgICAgICAgICAgICAweDU4MDogMHgxMDAwMDAwOCxcblx0ICAgICAgICAgICAgMHg2ODA6IDB4MTAwMDIwMDAsXG5cdCAgICAgICAgICAgIDB4NzgwOiAweDIwMDgsXG5cdCAgICAgICAgICAgIDB4ODgwOiAweDIwMDAwOCxcblx0ICAgICAgICAgICAgMHg5ODA6IDB4MjAwMCxcblx0ICAgICAgICAgICAgMHhhODA6IDB4MTAwMDIwMDgsXG5cdCAgICAgICAgICAgIDB4YjgwOiAweDEwMjAwMDA4LFxuXHQgICAgICAgICAgICAweGM4MDogMHgwLFxuXHQgICAgICAgICAgICAweGQ4MDogMHgxMDIwMjAwMCxcblx0ICAgICAgICAgICAgMHhlODA6IDB4MjAyMDAwLFxuXHQgICAgICAgICAgICAweGY4MDogMHgxMDAwMDAwMCxcblx0ICAgICAgICAgICAgMHgxMDAwOiAweDEwMDAyMDAwLFxuXHQgICAgICAgICAgICAweDExMDA6IDB4MTAyMDAwMDgsXG5cdCAgICAgICAgICAgIDB4MTIwMDogMHgxMDIwMjAwOCxcblx0ICAgICAgICAgICAgMHgxMzAwOiAweDIwMDgsXG5cdCAgICAgICAgICAgIDB4MTQwMDogMHgyMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTUwMDogMHgxMDAwMDAwMCxcblx0ICAgICAgICAgICAgMHgxNjAwOiAweDEwMDAwMDA4LFxuXHQgICAgICAgICAgICAweDE3MDA6IDB4MjAyMDAwLFxuXHQgICAgICAgICAgICAweDE4MDA6IDB4MjAyMDA4LFxuXHQgICAgICAgICAgICAweDE5MDA6IDB4MCxcblx0ICAgICAgICAgICAgMHgxYTAwOiAweDgsXG5cdCAgICAgICAgICAgIDB4MWIwMDogMHgxMDIwMDAwMCxcblx0ICAgICAgICAgICAgMHgxYzAwOiAweDIwMDAsXG5cdCAgICAgICAgICAgIDB4MWQwMDogMHgxMDAwMjAwOCxcblx0ICAgICAgICAgICAgMHgxZTAwOiAweDEwMjAyMDAwLFxuXHQgICAgICAgICAgICAweDFmMDA6IDB4MjAwMDA4LFxuXHQgICAgICAgICAgICAweDEwODA6IDB4OCxcblx0ICAgICAgICAgICAgMHgxMTgwOiAweDIwMjAwMCxcblx0ICAgICAgICAgICAgMHgxMjgwOiAweDIwMDAwMCxcblx0ICAgICAgICAgICAgMHgxMzgwOiAweDEwMDAwMDA4LFxuXHQgICAgICAgICAgICAweDE0ODA6IDB4MTAwMDIwMDAsXG5cdCAgICAgICAgICAgIDB4MTU4MDogMHgyMDA4LFxuXHQgICAgICAgICAgICAweDE2ODA6IDB4MTAyMDIwMDgsXG5cdCAgICAgICAgICAgIDB4MTc4MDogMHgxMDIwMDAwMCxcblx0ICAgICAgICAgICAgMHgxODgwOiAweDEwMjAyMDAwLFxuXHQgICAgICAgICAgICAweDE5ODA6IDB4MTAyMDAwMDgsXG5cdCAgICAgICAgICAgIDB4MWE4MDogMHgyMDAwLFxuXHQgICAgICAgICAgICAweDFiODA6IDB4MjAyMDA4LFxuXHQgICAgICAgICAgICAweDFjODA6IDB4MjAwMDA4LFxuXHQgICAgICAgICAgICAweDFkODA6IDB4MCxcblx0ICAgICAgICAgICAgMHgxZTgwOiAweDEwMDAwMDAwLFxuXHQgICAgICAgICAgICAweDFmODA6IDB4MTAwMDIwMDhcblx0ICAgICAgICB9LFxuXHQgICAgICAgIHtcblx0ICAgICAgICAgICAgMHgwOiAweDEwMDAwMCxcblx0ICAgICAgICAgICAgMHgxMDogMHgyMDAwNDAxLFxuXHQgICAgICAgICAgICAweDIwOiAweDQwMCxcblx0ICAgICAgICAgICAgMHgzMDogMHgxMDA0MDEsXG5cdCAgICAgICAgICAgIDB4NDA6IDB4MjEwMDQwMSxcblx0ICAgICAgICAgICAgMHg1MDogMHgwLFxuXHQgICAgICAgICAgICAweDYwOiAweDEsXG5cdCAgICAgICAgICAgIDB4NzA6IDB4MjEwMDAwMSxcblx0ICAgICAgICAgICAgMHg4MDogMHgyMDAwNDAwLFxuXHQgICAgICAgICAgICAweDkwOiAweDEwMDAwMSxcblx0ICAgICAgICAgICAgMHhhMDogMHgyMDAwMDAxLFxuXHQgICAgICAgICAgICAweGIwOiAweDIxMDA0MDAsXG5cdCAgICAgICAgICAgIDB4YzA6IDB4MjEwMDAwMCxcblx0ICAgICAgICAgICAgMHhkMDogMHg0MDEsXG5cdCAgICAgICAgICAgIDB4ZTA6IDB4MTAwNDAwLFxuXHQgICAgICAgICAgICAweGYwOiAweDIwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4ODogMHgyMTAwMDAxLFxuXHQgICAgICAgICAgICAweDE4OiAweDAsXG5cdCAgICAgICAgICAgIDB4Mjg6IDB4MjAwMDQwMSxcblx0ICAgICAgICAgICAgMHgzODogMHgyMTAwNDAwLFxuXHQgICAgICAgICAgICAweDQ4OiAweDEwMDAwMCxcblx0ICAgICAgICAgICAgMHg1ODogMHgyMDAwMDAxLFxuXHQgICAgICAgICAgICAweDY4OiAweDIwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4Nzg6IDB4NDAxLFxuXHQgICAgICAgICAgICAweDg4OiAweDEwMDQwMSxcblx0ICAgICAgICAgICAgMHg5ODogMHgyMDAwNDAwLFxuXHQgICAgICAgICAgICAweGE4OiAweDIxMDAwMDAsXG5cdCAgICAgICAgICAgIDB4Yjg6IDB4MTAwMDAxLFxuXHQgICAgICAgICAgICAweGM4OiAweDQwMCxcblx0ICAgICAgICAgICAgMHhkODogMHgyMTAwNDAxLFxuXHQgICAgICAgICAgICAweGU4OiAweDEsXG5cdCAgICAgICAgICAgIDB4Zjg6IDB4MTAwNDAwLFxuXHQgICAgICAgICAgICAweDEwMDogMHgyMDAwMDAwLFxuXHQgICAgICAgICAgICAweDExMDogMHgxMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTIwOiAweDIwMDA0MDEsXG5cdCAgICAgICAgICAgIDB4MTMwOiAweDIxMDAwMDEsXG5cdCAgICAgICAgICAgIDB4MTQwOiAweDEwMDAwMSxcblx0ICAgICAgICAgICAgMHgxNTA6IDB4MjAwMDQwMCxcblx0ICAgICAgICAgICAgMHgxNjA6IDB4MjEwMDQwMCxcblx0ICAgICAgICAgICAgMHgxNzA6IDB4MTAwNDAxLFxuXHQgICAgICAgICAgICAweDE4MDogMHg0MDEsXG5cdCAgICAgICAgICAgIDB4MTkwOiAweDIxMDA0MDEsXG5cdCAgICAgICAgICAgIDB4MWEwOiAweDEwMDQwMCxcblx0ICAgICAgICAgICAgMHgxYjA6IDB4MSxcblx0ICAgICAgICAgICAgMHgxYzA6IDB4MCxcblx0ICAgICAgICAgICAgMHgxZDA6IDB4MjEwMDAwMCxcblx0ICAgICAgICAgICAgMHgxZTA6IDB4MjAwMDAwMSxcblx0ICAgICAgICAgICAgMHgxZjA6IDB4NDAwLFxuXHQgICAgICAgICAgICAweDEwODogMHgxMDA0MDAsXG5cdCAgICAgICAgICAgIDB4MTE4OiAweDIwMDA0MDEsXG5cdCAgICAgICAgICAgIDB4MTI4OiAweDIxMDAwMDEsXG5cdCAgICAgICAgICAgIDB4MTM4OiAweDEsXG5cdCAgICAgICAgICAgIDB4MTQ4OiAweDIwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTU4OiAweDEwMDAwMCxcblx0ICAgICAgICAgICAgMHgxNjg6IDB4NDAxLFxuXHQgICAgICAgICAgICAweDE3ODogMHgyMTAwNDAwLFxuXHQgICAgICAgICAgICAweDE4ODogMHgyMDAwMDAxLFxuXHQgICAgICAgICAgICAweDE5ODogMHgyMTAwMDAwLFxuXHQgICAgICAgICAgICAweDFhODogMHgwLFxuXHQgICAgICAgICAgICAweDFiODogMHgyMTAwNDAxLFxuXHQgICAgICAgICAgICAweDFjODogMHgxMDA0MDEsXG5cdCAgICAgICAgICAgIDB4MWQ4OiAweDQwMCxcblx0ICAgICAgICAgICAgMHgxZTg6IDB4MjAwMDQwMCxcblx0ICAgICAgICAgICAgMHgxZjg6IDB4MTAwMDAxXG5cdCAgICAgICAgfSxcblx0ICAgICAgICB7XG5cdCAgICAgICAgICAgIDB4MDogMHg4MDAwODIwLFxuXHQgICAgICAgICAgICAweDE6IDB4MjAwMDAsXG5cdCAgICAgICAgICAgIDB4MjogMHg4MDAwMDAwLFxuXHQgICAgICAgICAgICAweDM6IDB4MjAsXG5cdCAgICAgICAgICAgIDB4NDogMHgyMDAyMCxcblx0ICAgICAgICAgICAgMHg1OiAweDgwMjA4MjAsXG5cdCAgICAgICAgICAgIDB4NjogMHg4MDIwODAwLFxuXHQgICAgICAgICAgICAweDc6IDB4ODAwLFxuXHQgICAgICAgICAgICAweDg6IDB4ODAyMDAwMCxcblx0ICAgICAgICAgICAgMHg5OiAweDgwMDA4MDAsXG5cdCAgICAgICAgICAgIDB4YTogMHgyMDgwMCxcblx0ICAgICAgICAgICAgMHhiOiAweDgwMjAwMjAsXG5cdCAgICAgICAgICAgIDB4YzogMHg4MjAsXG5cdCAgICAgICAgICAgIDB4ZDogMHgwLFxuXHQgICAgICAgICAgICAweGU6IDB4ODAwMDAyMCxcblx0ICAgICAgICAgICAgMHhmOiAweDIwODIwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDAwOiAweDgwMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwMTogMHg4MDIwODIwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDAyOiAweDgwMDA4MjAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMDM6IDB4ODAwMDAwMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwNDogMHg4MDIwMDAwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDA1OiAweDIwODAwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDA2OiAweDIwODIwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDA3OiAweDIwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDA4OiAweDgwMDAwMjAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMDk6IDB4ODIwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDBhOiAweDIwMDIwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDBiOiAweDgwMjA4MDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMGM6IDB4MCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwZDogMHg4MDIwMDIwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDBlOiAweDgwMDA4MDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMGY6IDB4MjAwMDAsXG5cdCAgICAgICAgICAgIDB4MTA6IDB4MjA4MjAsXG5cdCAgICAgICAgICAgIDB4MTE6IDB4ODAyMDgwMCxcblx0ICAgICAgICAgICAgMHgxMjogMHgyMCxcblx0ICAgICAgICAgICAgMHgxMzogMHg4MDAsXG5cdCAgICAgICAgICAgIDB4MTQ6IDB4ODAwMDgwMCxcblx0ICAgICAgICAgICAgMHgxNTogMHg4MDAwMDIwLFxuXHQgICAgICAgICAgICAweDE2OiAweDgwMjAwMjAsXG5cdCAgICAgICAgICAgIDB4MTc6IDB4MjAwMDAsXG5cdCAgICAgICAgICAgIDB4MTg6IDB4MCxcblx0ICAgICAgICAgICAgMHgxOTogMHgyMDAyMCxcblx0ICAgICAgICAgICAgMHgxYTogMHg4MDIwMDAwLFxuXHQgICAgICAgICAgICAweDFiOiAweDgwMDA4MjAsXG5cdCAgICAgICAgICAgIDB4MWM6IDB4ODAyMDgyMCxcblx0ICAgICAgICAgICAgMHgxZDogMHgyMDgwMCxcblx0ICAgICAgICAgICAgMHgxZTogMHg4MjAsXG5cdCAgICAgICAgICAgIDB4MWY6IDB4ODAwMDAwMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAxMDogMHgyMDAwMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAxMTogMHg4MDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMTI6IDB4ODAyMDAyMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAxMzogMHgyMDgyMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAxNDogMHgyMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAxNTogMHg4MDIwMDAwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDE2OiAweDgwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMTc6IDB4ODAwMDgyMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAxODogMHg4MDIwODIwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDE5OiAweDgwMDAwMjAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMWE6IDB4ODAwMDgwMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAxYjogMHgwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDFjOiAweDIwODAwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDFkOiAweDgyMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAxZTogMHgyMDAyMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAxZjogMHg4MDIwODAwXG5cdCAgICAgICAgfVxuXHQgICAgXTtcblxuXHQgICAgLy8gTWFza3MgdGhhdCBzZWxlY3QgdGhlIFNCT1ggaW5wdXRcblx0ICAgIHZhciBTQk9YX01BU0sgPSBbXG5cdCAgICAgICAgMHhmODAwMDAwMSwgMHgxZjgwMDAwMCwgMHgwMWY4MDAwMCwgMHgwMDFmODAwMCxcblx0ICAgICAgICAweDAwMDFmODAwLCAweDAwMDAxZjgwLCAweDAwMDAwMWY4LCAweDgwMDAwMDFmXG5cdCAgICBdO1xuXG5cdCAgICAvKipcblx0ICAgICAqIERFUyBibG9jayBjaXBoZXIgYWxnb3JpdGhtLlxuXHQgICAgICovXG5cdCAgICB2YXIgREVTID0gQ19hbGdvLkRFUyA9IEJsb2NrQ2lwaGVyLmV4dGVuZCh7XG5cdCAgICAgICAgX2RvUmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBrZXkgPSB0aGlzLl9rZXk7XG5cdCAgICAgICAgICAgIHZhciBrZXlXb3JkcyA9IGtleS53b3JkcztcblxuXHQgICAgICAgICAgICAvLyBTZWxlY3QgNTYgYml0cyBhY2NvcmRpbmcgdG8gUEMxXG5cdCAgICAgICAgICAgIHZhciBrZXlCaXRzID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTY7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgdmFyIGtleUJpdFBvcyA9IFBDMVtpXSAtIDE7XG5cdCAgICAgICAgICAgICAgICBrZXlCaXRzW2ldID0gKGtleVdvcmRzW2tleUJpdFBvcyA+Pj4gNV0gPj4+ICgzMSAtIGtleUJpdFBvcyAlIDMyKSkgJiAxO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gQXNzZW1ibGUgMTYgc3Via2V5c1xuXHQgICAgICAgICAgICB2YXIgc3ViS2V5cyA9IHRoaXMuX3N1YktleXMgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgblN1YktleSA9IDA7IG5TdWJLZXkgPCAxNjsgblN1YktleSsrKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBDcmVhdGUgc3Via2V5XG5cdCAgICAgICAgICAgICAgICB2YXIgc3ViS2V5ID0gc3ViS2V5c1tuU3ViS2V5XSA9IFtdO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICAgICAgdmFyIGJpdFNoaWZ0ID0gQklUX1NISUZUU1tuU3ViS2V5XTtcblxuXHQgICAgICAgICAgICAgICAgLy8gU2VsZWN0IDQ4IGJpdHMgYWNjb3JkaW5nIHRvIFBDMlxuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgLy8gU2VsZWN0IGZyb20gdGhlIGxlZnQgMjgga2V5IGJpdHNcblx0ICAgICAgICAgICAgICAgICAgICBzdWJLZXlbKGkgLyA2KSB8IDBdIHw9IGtleUJpdHNbKChQQzJbaV0gLSAxKSArIGJpdFNoaWZ0KSAlIDI4XSA8PCAoMzEgLSBpICUgNik7XG5cblx0ICAgICAgICAgICAgICAgICAgICAvLyBTZWxlY3QgZnJvbSB0aGUgcmlnaHQgMjgga2V5IGJpdHNcblx0ICAgICAgICAgICAgICAgICAgICBzdWJLZXlbNCArICgoaSAvIDYpIHwgMCldIHw9IGtleUJpdHNbMjggKyAoKChQQzJbaSArIDI0XSAtIDEpICsgYml0U2hpZnQpICUgMjgpXSA8PCAoMzEgLSBpICUgNik7XG5cdCAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgIC8vIFNpbmNlIGVhY2ggc3Via2V5IGlzIGFwcGxpZWQgdG8gYW4gZXhwYW5kZWQgMzItYml0IGlucHV0LFxuXHQgICAgICAgICAgICAgICAgLy8gdGhlIHN1YmtleSBjYW4gYmUgYnJva2VuIGludG8gOCB2YWx1ZXMgc2NhbGVkIHRvIDMyLWJpdHMsXG5cdCAgICAgICAgICAgICAgICAvLyB3aGljaCBhbGxvd3MgdGhlIGtleSB0byBiZSB1c2VkIHdpdGhvdXQgZXhwYW5zaW9uXG5cdCAgICAgICAgICAgICAgICBzdWJLZXlbMF0gPSAoc3ViS2V5WzBdIDw8IDEpIHwgKHN1YktleVswXSA+Pj4gMzEpO1xuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCA3OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgICAgICBzdWJLZXlbaV0gPSBzdWJLZXlbaV0gPj4+ICgoaSAtIDEpICogNCArIDMpO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgc3ViS2V5WzddID0gKHN1YktleVs3XSA8PCA1KSB8IChzdWJLZXlbN10gPj4+IDI3KTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIENvbXB1dGUgaW52ZXJzZSBzdWJrZXlzXG5cdCAgICAgICAgICAgIHZhciBpbnZTdWJLZXlzID0gdGhpcy5faW52U3ViS2V5cyA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIGludlN1YktleXNbaV0gPSBzdWJLZXlzWzE1IC0gaV07XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgZW5jcnlwdEJsb2NrOiBmdW5jdGlvbiAoTSwgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIHRoaXMuX2RvQ3J5cHRCbG9jayhNLCBvZmZzZXQsIHRoaXMuX3N1YktleXMpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBkZWNyeXB0QmxvY2s6IGZ1bmN0aW9uIChNLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgdGhpcy5fZG9DcnlwdEJsb2NrKE0sIG9mZnNldCwgdGhpcy5faW52U3ViS2V5cyk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb0NyeXB0QmxvY2s6IGZ1bmN0aW9uIChNLCBvZmZzZXQsIHN1YktleXMpIHtcblx0ICAgICAgICAgICAgLy8gR2V0IGlucHV0XG5cdCAgICAgICAgICAgIHRoaXMuX2xCbG9jayA9IE1bb2Zmc2V0XTtcblx0ICAgICAgICAgICAgdGhpcy5fckJsb2NrID0gTVtvZmZzZXQgKyAxXTtcblxuXHQgICAgICAgICAgICAvLyBJbml0aWFsIHBlcm11dGF0aW9uXG5cdCAgICAgICAgICAgIGV4Y2hhbmdlTFIuY2FsbCh0aGlzLCA0LCAgMHgwZjBmMGYwZik7XG5cdCAgICAgICAgICAgIGV4Y2hhbmdlTFIuY2FsbCh0aGlzLCAxNiwgMHgwMDAwZmZmZik7XG5cdCAgICAgICAgICAgIGV4Y2hhbmdlUkwuY2FsbCh0aGlzLCAyLCAgMHgzMzMzMzMzMyk7XG5cdCAgICAgICAgICAgIGV4Y2hhbmdlUkwuY2FsbCh0aGlzLCA4LCAgMHgwMGZmMDBmZik7XG5cdCAgICAgICAgICAgIGV4Y2hhbmdlTFIuY2FsbCh0aGlzLCAxLCAgMHg1NTU1NTU1NSk7XG5cblx0ICAgICAgICAgICAgLy8gUm91bmRzXG5cdCAgICAgICAgICAgIGZvciAodmFyIHJvdW5kID0gMDsgcm91bmQgPCAxNjsgcm91bmQrKykge1xuXHQgICAgICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgICAgICB2YXIgc3ViS2V5ID0gc3ViS2V5c1tyb3VuZF07XG5cdCAgICAgICAgICAgICAgICB2YXIgbEJsb2NrID0gdGhpcy5fbEJsb2NrO1xuXHQgICAgICAgICAgICAgICAgdmFyIHJCbG9jayA9IHRoaXMuX3JCbG9jaztcblxuXHQgICAgICAgICAgICAgICAgLy8gRmVpc3RlbCBmdW5jdGlvblxuXHQgICAgICAgICAgICAgICAgdmFyIGYgPSAwO1xuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgICAgICBmIHw9IFNCT1hfUFtpXVsoKHJCbG9jayBeIHN1YktleVtpXSkgJiBTQk9YX01BU0tbaV0pID4+PiAwXTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIHRoaXMuX2xCbG9jayA9IHJCbG9jaztcblx0ICAgICAgICAgICAgICAgIHRoaXMuX3JCbG9jayA9IGxCbG9jayBeIGY7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBVbmRvIHN3YXAgZnJvbSBsYXN0IHJvdW5kXG5cdCAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fbEJsb2NrO1xuXHQgICAgICAgICAgICB0aGlzLl9sQmxvY2sgPSB0aGlzLl9yQmxvY2s7XG5cdCAgICAgICAgICAgIHRoaXMuX3JCbG9jayA9IHQ7XG5cblx0ICAgICAgICAgICAgLy8gRmluYWwgcGVybXV0YXRpb25cblx0ICAgICAgICAgICAgZXhjaGFuZ2VMUi5jYWxsKHRoaXMsIDEsICAweDU1NTU1NTU1KTtcblx0ICAgICAgICAgICAgZXhjaGFuZ2VSTC5jYWxsKHRoaXMsIDgsICAweDAwZmYwMGZmKTtcblx0ICAgICAgICAgICAgZXhjaGFuZ2VSTC5jYWxsKHRoaXMsIDIsICAweDMzMzMzMzMzKTtcblx0ICAgICAgICAgICAgZXhjaGFuZ2VMUi5jYWxsKHRoaXMsIDE2LCAweDAwMDBmZmZmKTtcblx0ICAgICAgICAgICAgZXhjaGFuZ2VMUi5jYWxsKHRoaXMsIDQsICAweDBmMGYwZjBmKTtcblxuXHQgICAgICAgICAgICAvLyBTZXQgb3V0cHV0XG5cdCAgICAgICAgICAgIE1bb2Zmc2V0XSA9IHRoaXMuX2xCbG9jaztcblx0ICAgICAgICAgICAgTVtvZmZzZXQgKyAxXSA9IHRoaXMuX3JCbG9jaztcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAga2V5U2l6ZTogNjQvMzIsXG5cblx0ICAgICAgICBpdlNpemU6IDY0LzMyLFxuXG5cdCAgICAgICAgYmxvY2tTaXplOiA2NC8zMlxuXHQgICAgfSk7XG5cblx0ICAgIC8vIFN3YXAgYml0cyBhY3Jvc3MgdGhlIGxlZnQgYW5kIHJpZ2h0IHdvcmRzXG5cdCAgICBmdW5jdGlvbiBleGNoYW5nZUxSKG9mZnNldCwgbWFzaykge1xuXHQgICAgICAgIHZhciB0ID0gKCh0aGlzLl9sQmxvY2sgPj4+IG9mZnNldCkgXiB0aGlzLl9yQmxvY2spICYgbWFzaztcblx0ICAgICAgICB0aGlzLl9yQmxvY2sgXj0gdDtcblx0ICAgICAgICB0aGlzLl9sQmxvY2sgXj0gdCA8PCBvZmZzZXQ7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIGV4Y2hhbmdlUkwob2Zmc2V0LCBtYXNrKSB7XG5cdCAgICAgICAgdmFyIHQgPSAoKHRoaXMuX3JCbG9jayA+Pj4gb2Zmc2V0KSBeIHRoaXMuX2xCbG9jaykgJiBtYXNrO1xuXHQgICAgICAgIHRoaXMuX2xCbG9jayBePSB0O1xuXHQgICAgICAgIHRoaXMuX3JCbG9jayBePSB0IDw8IG9mZnNldDtcblx0ICAgIH1cblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbnMgdG8gdGhlIGNpcGhlcidzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGNpcGhlcnRleHQgPSBDcnlwdG9KUy5ERVMuZW5jcnlwdChtZXNzYWdlLCBrZXksIGNmZyk7XG5cdCAgICAgKiAgICAgdmFyIHBsYWludGV4dCAgPSBDcnlwdG9KUy5ERVMuZGVjcnlwdChjaXBoZXJ0ZXh0LCBrZXksIGNmZyk7XG5cdCAgICAgKi9cblx0ICAgIEMuREVTID0gQmxvY2tDaXBoZXIuX2NyZWF0ZUhlbHBlcihERVMpO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFRyaXBsZS1ERVMgYmxvY2sgY2lwaGVyIGFsZ29yaXRobS5cblx0ICAgICAqL1xuXHQgICAgdmFyIFRyaXBsZURFUyA9IENfYWxnby5UcmlwbGVERVMgPSBCbG9ja0NpcGhlci5leHRlbmQoe1xuXHQgICAgICAgIF9kb1Jlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIga2V5ID0gdGhpcy5fa2V5O1xuXHQgICAgICAgICAgICB2YXIga2V5V29yZHMgPSBrZXkud29yZHM7XG5cdCAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUga2V5IGxlbmd0aCBpcyB2YWxpZCAoNjQsIDEyOCBvciA+PSAxOTIgYml0KVxuXHQgICAgICAgICAgICBpZiAoa2V5V29yZHMubGVuZ3RoICE9PSAyICYmIGtleVdvcmRzLmxlbmd0aCAhPT0gNCAmJiBrZXlXb3Jkcy5sZW5ndGggPCA2KSB7XG5cdCAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQga2V5IGxlbmd0aCAtIDNERVMgcmVxdWlyZXMgdGhlIGtleSBsZW5ndGggdG8gYmUgNjQsIDEyOCwgMTkyIG9yID4xOTIuJyk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBFeHRlbmQgdGhlIGtleSBhY2NvcmRpbmcgdG8gdGhlIGtleWluZyBvcHRpb25zIGRlZmluZWQgaW4gM0RFUyBzdGFuZGFyZFxuXHQgICAgICAgICAgICB2YXIga2V5MSA9IGtleVdvcmRzLnNsaWNlKDAsIDIpO1xuXHQgICAgICAgICAgICB2YXIga2V5MiA9IGtleVdvcmRzLmxlbmd0aCA8IDQgPyBrZXlXb3Jkcy5zbGljZSgwLCAyKSA6IGtleVdvcmRzLnNsaWNlKDIsIDQpO1xuXHQgICAgICAgICAgICB2YXIga2V5MyA9IGtleVdvcmRzLmxlbmd0aCA8IDYgPyBrZXlXb3Jkcy5zbGljZSgwLCAyKSA6IGtleVdvcmRzLnNsaWNlKDQsIDYpO1xuXG5cdCAgICAgICAgICAgIC8vIENyZWF0ZSBERVMgaW5zdGFuY2VzXG5cdCAgICAgICAgICAgIHRoaXMuX2RlczEgPSBERVMuY3JlYXRlRW5jcnlwdG9yKFdvcmRBcnJheS5jcmVhdGUoa2V5MSkpO1xuXHQgICAgICAgICAgICB0aGlzLl9kZXMyID0gREVTLmNyZWF0ZUVuY3J5cHRvcihXb3JkQXJyYXkuY3JlYXRlKGtleTIpKTtcblx0ICAgICAgICAgICAgdGhpcy5fZGVzMyA9IERFUy5jcmVhdGVFbmNyeXB0b3IoV29yZEFycmF5LmNyZWF0ZShrZXkzKSk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGVuY3J5cHRCbG9jazogZnVuY3Rpb24gKE0sIG9mZnNldCkge1xuXHQgICAgICAgICAgICB0aGlzLl9kZXMxLmVuY3J5cHRCbG9jayhNLCBvZmZzZXQpO1xuXHQgICAgICAgICAgICB0aGlzLl9kZXMyLmRlY3J5cHRCbG9jayhNLCBvZmZzZXQpO1xuXHQgICAgICAgICAgICB0aGlzLl9kZXMzLmVuY3J5cHRCbG9jayhNLCBvZmZzZXQpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBkZWNyeXB0QmxvY2s6IGZ1bmN0aW9uIChNLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgdGhpcy5fZGVzMy5kZWNyeXB0QmxvY2soTSwgb2Zmc2V0KTtcblx0ICAgICAgICAgICAgdGhpcy5fZGVzMi5lbmNyeXB0QmxvY2soTSwgb2Zmc2V0KTtcblx0ICAgICAgICAgICAgdGhpcy5fZGVzMS5kZWNyeXB0QmxvY2soTSwgb2Zmc2V0KTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAga2V5U2l6ZTogMTkyLzMyLFxuXG5cdCAgICAgICAgaXZTaXplOiA2NC8zMixcblxuXHQgICAgICAgIGJsb2NrU2l6ZTogNjQvMzJcblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9ucyB0byB0aGUgY2lwaGVyJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgY2lwaGVydGV4dCA9IENyeXB0b0pTLlRyaXBsZURFUy5lbmNyeXB0KG1lc3NhZ2UsIGtleSwgY2ZnKTtcblx0ICAgICAqICAgICB2YXIgcGxhaW50ZXh0ICA9IENyeXB0b0pTLlRyaXBsZURFUy5kZWNyeXB0KGNpcGhlcnRleHQsIGtleSwgY2ZnKTtcblx0ICAgICAqL1xuXHQgICAgQy5UcmlwbGVERVMgPSBCbG9ja0NpcGhlci5fY3JlYXRlSGVscGVyKFRyaXBsZURFUyk7XG5cdH0oKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMuVHJpcGxlREVTO1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSkge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKHVuZGVmaW5lZCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfbGliID0gQy5saWI7XG5cdCAgICB2YXIgQmFzZSA9IENfbGliLkJhc2U7XG5cdCAgICB2YXIgWDMyV29yZEFycmF5ID0gQ19saWIuV29yZEFycmF5O1xuXG5cdCAgICAvKipcblx0ICAgICAqIHg2NCBuYW1lc3BhY2UuXG5cdCAgICAgKi9cblx0ICAgIHZhciBDX3g2NCA9IEMueDY0ID0ge307XG5cblx0ICAgIC8qKlxuXHQgICAgICogQSA2NC1iaXQgd29yZC5cblx0ICAgICAqL1xuXHQgICAgdmFyIFg2NFdvcmQgPSBDX3g2NC5Xb3JkID0gQmFzZS5leHRlbmQoe1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEluaXRpYWxpemVzIGEgbmV3bHkgY3JlYXRlZCA2NC1iaXQgd29yZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBoaWdoIFRoZSBoaWdoIDMyIGJpdHMuXG5cdCAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGxvdyBUaGUgbG93IDMyIGJpdHMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciB4NjRXb3JkID0gQ3J5cHRvSlMueDY0LldvcmQuY3JlYXRlKDB4MDAwMTAyMDMsIDB4MDQwNTA2MDcpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGluaXQ6IGZ1bmN0aW9uIChoaWdoLCBsb3cpIHtcblx0ICAgICAgICAgICAgdGhpcy5oaWdoID0gaGlnaDtcblx0ICAgICAgICAgICAgdGhpcy5sb3cgPSBsb3c7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQml0d2lzZSBOT1RzIHRoaXMgd29yZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1g2NFdvcmR9IEEgbmV3IHg2NC1Xb3JkIG9iamVjdCBhZnRlciBuZWdhdGluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIG5lZ2F0ZWQgPSB4NjRXb3JkLm5vdCgpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIC8vIG5vdDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAvLyB2YXIgaGlnaCA9IH50aGlzLmhpZ2g7XG5cdCAgICAgICAgICAgIC8vIHZhciBsb3cgPSB+dGhpcy5sb3c7XG5cblx0ICAgICAgICAgICAgLy8gcmV0dXJuIFg2NFdvcmQuY3JlYXRlKGhpZ2gsIGxvdyk7XG5cdCAgICAgICAgLy8gfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEJpdHdpc2UgQU5EcyB0aGlzIHdvcmQgd2l0aCB0aGUgcGFzc2VkIHdvcmQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1g2NFdvcmR9IHdvcmQgVGhlIHg2NC1Xb3JkIHRvIEFORCB3aXRoIHRoaXMgd29yZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1g2NFdvcmR9IEEgbmV3IHg2NC1Xb3JkIG9iamVjdCBhZnRlciBBTkRpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBhbmRlZCA9IHg2NFdvcmQuYW5kKGFub3RoZXJYNjRXb3JkKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICAvLyBhbmQ6IGZ1bmN0aW9uICh3b3JkKSB7XG5cdCAgICAgICAgICAgIC8vIHZhciBoaWdoID0gdGhpcy5oaWdoICYgd29yZC5oaWdoO1xuXHQgICAgICAgICAgICAvLyB2YXIgbG93ID0gdGhpcy5sb3cgJiB3b3JkLmxvdztcblxuXHQgICAgICAgICAgICAvLyByZXR1cm4gWDY0V29yZC5jcmVhdGUoaGlnaCwgbG93KTtcblx0ICAgICAgICAvLyB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQml0d2lzZSBPUnMgdGhpcyB3b3JkIHdpdGggdGhlIHBhc3NlZCB3b3JkLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtYNjRXb3JkfSB3b3JkIFRoZSB4NjQtV29yZCB0byBPUiB3aXRoIHRoaXMgd29yZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1g2NFdvcmR9IEEgbmV3IHg2NC1Xb3JkIG9iamVjdCBhZnRlciBPUmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIG9yZWQgPSB4NjRXb3JkLm9yKGFub3RoZXJYNjRXb3JkKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICAvLyBvcjogZnVuY3Rpb24gKHdvcmQpIHtcblx0ICAgICAgICAgICAgLy8gdmFyIGhpZ2ggPSB0aGlzLmhpZ2ggfCB3b3JkLmhpZ2g7XG5cdCAgICAgICAgICAgIC8vIHZhciBsb3cgPSB0aGlzLmxvdyB8IHdvcmQubG93O1xuXG5cdCAgICAgICAgICAgIC8vIHJldHVybiBYNjRXb3JkLmNyZWF0ZShoaWdoLCBsb3cpO1xuXHQgICAgICAgIC8vIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBCaXR3aXNlIFhPUnMgdGhpcyB3b3JkIHdpdGggdGhlIHBhc3NlZCB3b3JkLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtYNjRXb3JkfSB3b3JkIFRoZSB4NjQtV29yZCB0byBYT1Igd2l0aCB0aGlzIHdvcmQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtYNjRXb3JkfSBBIG5ldyB4NjQtV29yZCBvYmplY3QgYWZ0ZXIgWE9SaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgeG9yZWQgPSB4NjRXb3JkLnhvcihhbm90aGVyWDY0V29yZCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgLy8geG9yOiBmdW5jdGlvbiAod29yZCkge1xuXHQgICAgICAgICAgICAvLyB2YXIgaGlnaCA9IHRoaXMuaGlnaCBeIHdvcmQuaGlnaDtcblx0ICAgICAgICAgICAgLy8gdmFyIGxvdyA9IHRoaXMubG93IF4gd29yZC5sb3c7XG5cblx0ICAgICAgICAgICAgLy8gcmV0dXJuIFg2NFdvcmQuY3JlYXRlKGhpZ2gsIGxvdyk7XG5cdCAgICAgICAgLy8gfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIFNoaWZ0cyB0aGlzIHdvcmQgbiBiaXRzIHRvIHRoZSBsZWZ0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiBiaXRzIHRvIHNoaWZ0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7WDY0V29yZH0gQSBuZXcgeDY0LVdvcmQgb2JqZWN0IGFmdGVyIHNoaWZ0aW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgc2hpZnRlZCA9IHg2NFdvcmQuc2hpZnRMKDI1KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICAvLyBzaGlmdEw6IGZ1bmN0aW9uIChuKSB7XG5cdCAgICAgICAgICAgIC8vIGlmIChuIDwgMzIpIHtcblx0ICAgICAgICAgICAgICAgIC8vIHZhciBoaWdoID0gKHRoaXMuaGlnaCA8PCBuKSB8ICh0aGlzLmxvdyA+Pj4gKDMyIC0gbikpO1xuXHQgICAgICAgICAgICAgICAgLy8gdmFyIGxvdyA9IHRoaXMubG93IDw8IG47XG5cdCAgICAgICAgICAgIC8vIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAvLyB2YXIgaGlnaCA9IHRoaXMubG93IDw8IChuIC0gMzIpO1xuXHQgICAgICAgICAgICAgICAgLy8gdmFyIGxvdyA9IDA7XG5cdCAgICAgICAgICAgIC8vIH1cblxuXHQgICAgICAgICAgICAvLyByZXR1cm4gWDY0V29yZC5jcmVhdGUoaGlnaCwgbG93KTtcblx0ICAgICAgICAvLyB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogU2hpZnRzIHRoaXMgd29yZCBuIGJpdHMgdG8gdGhlIHJpZ2h0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiBiaXRzIHRvIHNoaWZ0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7WDY0V29yZH0gQSBuZXcgeDY0LVdvcmQgb2JqZWN0IGFmdGVyIHNoaWZ0aW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgc2hpZnRlZCA9IHg2NFdvcmQuc2hpZnRSKDcpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIC8vIHNoaWZ0UjogZnVuY3Rpb24gKG4pIHtcblx0ICAgICAgICAgICAgLy8gaWYgKG4gPCAzMikge1xuXHQgICAgICAgICAgICAgICAgLy8gdmFyIGxvdyA9ICh0aGlzLmxvdyA+Pj4gbikgfCAodGhpcy5oaWdoIDw8ICgzMiAtIG4pKTtcblx0ICAgICAgICAgICAgICAgIC8vIHZhciBoaWdoID0gdGhpcy5oaWdoID4+PiBuO1xuXHQgICAgICAgICAgICAvLyB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgLy8gdmFyIGxvdyA9IHRoaXMuaGlnaCA+Pj4gKG4gLSAzMik7XG5cdCAgICAgICAgICAgICAgICAvLyB2YXIgaGlnaCA9IDA7XG5cdCAgICAgICAgICAgIC8vIH1cblxuXHQgICAgICAgICAgICAvLyByZXR1cm4gWDY0V29yZC5jcmVhdGUoaGlnaCwgbG93KTtcblx0ICAgICAgICAvLyB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogUm90YXRlcyB0aGlzIHdvcmQgbiBiaXRzIHRvIHRoZSBsZWZ0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiBiaXRzIHRvIHJvdGF0ZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1g2NFdvcmR9IEEgbmV3IHg2NC1Xb3JkIG9iamVjdCBhZnRlciByb3RhdGluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHJvdGF0ZWQgPSB4NjRXb3JkLnJvdEwoMjUpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIC8vIHJvdEw6IGZ1bmN0aW9uIChuKSB7XG5cdCAgICAgICAgICAgIC8vIHJldHVybiB0aGlzLnNoaWZ0TChuKS5vcih0aGlzLnNoaWZ0Uig2NCAtIG4pKTtcblx0ICAgICAgICAvLyB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogUm90YXRlcyB0aGlzIHdvcmQgbiBiaXRzIHRvIHRoZSByaWdodC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgYml0cyB0byByb3RhdGUuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtYNjRXb3JkfSBBIG5ldyB4NjQtV29yZCBvYmplY3QgYWZ0ZXIgcm90YXRpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciByb3RhdGVkID0geDY0V29yZC5yb3RSKDcpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIC8vIHJvdFI6IGZ1bmN0aW9uIChuKSB7XG5cdCAgICAgICAgICAgIC8vIHJldHVybiB0aGlzLnNoaWZ0UihuKS5vcih0aGlzLnNoaWZ0TCg2NCAtIG4pKTtcblx0ICAgICAgICAvLyB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQWRkcyB0aGlzIHdvcmQgd2l0aCB0aGUgcGFzc2VkIHdvcmQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1g2NFdvcmR9IHdvcmQgVGhlIHg2NC1Xb3JkIHRvIGFkZCB3aXRoIHRoaXMgd29yZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1g2NFdvcmR9IEEgbmV3IHg2NC1Xb3JkIG9iamVjdCBhZnRlciBhZGRpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBhZGRlZCA9IHg2NFdvcmQuYWRkKGFub3RoZXJYNjRXb3JkKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICAvLyBhZGQ6IGZ1bmN0aW9uICh3b3JkKSB7XG5cdCAgICAgICAgICAgIC8vIHZhciBsb3cgPSAodGhpcy5sb3cgKyB3b3JkLmxvdykgfCAwO1xuXHQgICAgICAgICAgICAvLyB2YXIgY2FycnkgPSAobG93ID4+PiAwKSA8ICh0aGlzLmxvdyA+Pj4gMCkgPyAxIDogMDtcblx0ICAgICAgICAgICAgLy8gdmFyIGhpZ2ggPSAodGhpcy5oaWdoICsgd29yZC5oaWdoICsgY2FycnkpIHwgMDtcblxuXHQgICAgICAgICAgICAvLyByZXR1cm4gWDY0V29yZC5jcmVhdGUoaGlnaCwgbG93KTtcblx0ICAgICAgICAvLyB9XG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBBbiBhcnJheSBvZiA2NC1iaXQgd29yZHMuXG5cdCAgICAgKlxuXHQgICAgICogQHByb3BlcnR5IHtBcnJheX0gd29yZHMgVGhlIGFycmF5IG9mIENyeXB0b0pTLng2NC5Xb3JkIG9iamVjdHMuXG5cdCAgICAgKiBAcHJvcGVydHkge251bWJlcn0gc2lnQnl0ZXMgVGhlIG51bWJlciBvZiBzaWduaWZpY2FudCBieXRlcyBpbiB0aGlzIHdvcmQgYXJyYXkuXG5cdCAgICAgKi9cblx0ICAgIHZhciBYNjRXb3JkQXJyYXkgPSBDX3g2NC5Xb3JkQXJyYXkgPSBCYXNlLmV4dGVuZCh7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogSW5pdGlhbGl6ZXMgYSBuZXdseSBjcmVhdGVkIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSB3b3JkcyAoT3B0aW9uYWwpIEFuIGFycmF5IG9mIENyeXB0b0pTLng2NC5Xb3JkIG9iamVjdHMuXG5cdCAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHNpZ0J5dGVzIChPcHRpb25hbCkgVGhlIG51bWJlciBvZiBzaWduaWZpY2FudCBieXRlcyBpbiB0aGUgd29yZHMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciB3b3JkQXJyYXkgPSBDcnlwdG9KUy54NjQuV29yZEFycmF5LmNyZWF0ZSgpO1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciB3b3JkQXJyYXkgPSBDcnlwdG9KUy54NjQuV29yZEFycmF5LmNyZWF0ZShbXG5cdCAgICAgICAgICogICAgICAgICBDcnlwdG9KUy54NjQuV29yZC5jcmVhdGUoMHgwMDAxMDIwMywgMHgwNDA1MDYwNyksXG5cdCAgICAgICAgICogICAgICAgICBDcnlwdG9KUy54NjQuV29yZC5jcmVhdGUoMHgxODE5MWExYiwgMHgxYzFkMWUxZilcblx0ICAgICAgICAgKiAgICAgXSk7XG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHdvcmRBcnJheSA9IENyeXB0b0pTLng2NC5Xb3JkQXJyYXkuY3JlYXRlKFtcblx0ICAgICAgICAgKiAgICAgICAgIENyeXB0b0pTLng2NC5Xb3JkLmNyZWF0ZSgweDAwMDEwMjAzLCAweDA0MDUwNjA3KSxcblx0ICAgICAgICAgKiAgICAgICAgIENyeXB0b0pTLng2NC5Xb3JkLmNyZWF0ZSgweDE4MTkxYTFiLCAweDFjMWQxZTFmKVxuXHQgICAgICAgICAqICAgICBdLCAxMCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgaW5pdDogZnVuY3Rpb24gKHdvcmRzLCBzaWdCeXRlcykge1xuXHQgICAgICAgICAgICB3b3JkcyA9IHRoaXMud29yZHMgPSB3b3JkcyB8fCBbXTtcblxuXHQgICAgICAgICAgICBpZiAoc2lnQnl0ZXMgIT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgICAgICAgICAgICB0aGlzLnNpZ0J5dGVzID0gc2lnQnl0ZXM7XG5cdCAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICB0aGlzLnNpZ0J5dGVzID0gd29yZHMubGVuZ3RoICogODtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyB0aGlzIDY0LWJpdCB3b3JkIGFycmF5IHRvIGEgMzItYml0IHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtDcnlwdG9KUy5saWIuV29yZEFycmF5fSBUaGlzIHdvcmQgYXJyYXkncyBkYXRhIGFzIGEgMzItYml0IHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciB4MzJXb3JkQXJyYXkgPSB4NjRXb3JkQXJyYXkudG9YMzIoKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICB0b1gzMjogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIHg2NFdvcmRzID0gdGhpcy53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIHg2NFdvcmRzTGVuZ3RoID0geDY0V29yZHMubGVuZ3RoO1xuXG5cdCAgICAgICAgICAgIC8vIENvbnZlcnRcblx0ICAgICAgICAgICAgdmFyIHgzMldvcmRzID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeDY0V29yZHNMZW5ndGg7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgdmFyIHg2NFdvcmQgPSB4NjRXb3Jkc1tpXTtcblx0ICAgICAgICAgICAgICAgIHgzMldvcmRzLnB1c2goeDY0V29yZC5oaWdoKTtcblx0ICAgICAgICAgICAgICAgIHgzMldvcmRzLnB1c2goeDY0V29yZC5sb3cpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIFgzMldvcmRBcnJheS5jcmVhdGUoeDMyV29yZHMsIHRoaXMuc2lnQnl0ZXMpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDcmVhdGVzIGEgY29weSBvZiB0aGlzIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtYNjRXb3JkQXJyYXl9IFRoZSBjbG9uZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGNsb25lID0geDY0V29yZEFycmF5LmNsb25lKCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgY2xvbmU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdmFyIGNsb25lID0gQmFzZS5jbG9uZS5jYWxsKHRoaXMpO1xuXG5cdCAgICAgICAgICAgIC8vIENsb25lIFwid29yZHNcIiBhcnJheVxuXHQgICAgICAgICAgICB2YXIgd29yZHMgPSBjbG9uZS53b3JkcyA9IHRoaXMud29yZHMuc2xpY2UoMCk7XG5cblx0ICAgICAgICAgICAgLy8gQ2xvbmUgZWFjaCBYNjRXb3JkIG9iamVjdFxuXHQgICAgICAgICAgICB2YXIgd29yZHNMZW5ndGggPSB3b3Jkcy5sZW5ndGg7XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd29yZHNMZW5ndGg7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgd29yZHNbaV0gPSB3b3Jkc1tpXS5jbG9uZSgpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGNsb25lO1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTO1xuXG59KSk7IiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmRwX19pbnB1dF93cmFwe3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7Ym94LXNpemluZzp1bnNldH0uZHBfX2lucHV0X3dyYXA6Zm9jdXN7Ym9yZGVyLWNvbG9yOnZhcigtLWRwLWJvcmRlci1jb2xvci1ob3Zlcik7b3V0bGluZTpub25lfS5kcF9faW5wdXR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kcC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItcmFkaXVzOnZhcigtLWRwLWJvcmRlci1yYWRpdXMpO2ZvbnQtZmFtaWx5OnZhcigtLWRwLWZvbnQtZmFtaWx5KTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWRwLWJvcmRlci1jb2xvcik7b3V0bGluZTpub25lO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4ycyBjdWJpYy1iZXppZXIoMC42NDUsIDAuMDQ1LCAwLjM1NSwgMSk7d2lkdGg6MTAwJTtmb250LXNpemU6dmFyKC0tZHAtZm9udC1zaXplKTtsaW5lLWhlaWdodDpjYWxjKHZhcigtLWRwLWZvbnQtc2l6ZSkqMS41KTtwYWRkaW5nOnZhcigtLWRwLWlucHV0LXBhZGRpbmcpO2NvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpO2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZHBfX2lucHV0OjotbW96LXBsYWNlaG9sZGVye29wYWNpdHk6Ljd9LmRwX19pbnB1dDo6cGxhY2Vob2xkZXJ7b3BhY2l0eTouN30uZHBfX2lucHV0OmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1kcC1ib3JkZXItY29sb3ItaG92ZXIpfS5kcF9faW5wdXRfcmVne2NhcmV0LWNvbG9yOnJnYmEoMCwwLDAsMCl9LmRwX19pbnB1dF9mb2N1c3tib3JkZXItY29sb3I6dmFyKC0tZHAtYm9yZGVyLWNvbG9yLWhvdmVyKX0uZHBfX2Rpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tZHAtZGlzYWJsZWQtY29sb3IpfS5kcF9fZGlzYWJsZWQ6Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6dmFyKC0tZHAtZGlzYWJsZWQtY29sb3ItdGV4dCl9LmRwX19kaXNhYmxlZDo6cGxhY2Vob2xkZXJ7Y29sb3I6dmFyKC0tZHAtZGlzYWJsZWQtY29sb3ItdGV4dCl9LmRwX19pbnB1dF9pY29uc3tkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDp2YXIoLS1kcC1mb250LXNpemUpO2hlaWdodDp2YXIoLS1kcC1mb250LXNpemUpO3N0cm9rZS13aWR0aDowO2ZvbnQtc2l6ZTp2YXIoLS1kcC1mb250LXNpemUpO2xpbmUtaGVpZ2h0OmNhbGModmFyKC0tZHAtZm9udC1zaXplKSoxLjUpO3BhZGRpbmc6NnB4IDEycHg7Y29sb3I6dmFyKC0tZHAtaWNvbi1jb2xvcik7Ym94LXNpemluZzpjb250ZW50LWJveH0uZHBfX2lucHV0X2ljb257Y3Vyc29yOnBvaW50ZXI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7Y29sb3I6dmFyKC0tZHAtaWNvbi1jb2xvcil9LmRwX19jbGVhcl9pY29ue3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7cmlnaHQ6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTtjdXJzb3I6cG9pbnRlcjtjb2xvcjp2YXIoLS1kcC1pY29uLWNvbG9yKX0uZHBfX2lucHV0X2ljb25fcGFke3BhZGRpbmctbGVmdDp2YXIoLS1kcC1pbnB1dC1pY29uLXBhZGRpbmcpfS5kcF9faW5wdXRfdmFsaWR7Ym94LXNoYWRvdzowIDAgdmFyKC0tZHAtYm9yZGVyLXJhZGl1cykgdmFyKC0tZHAtc3VjY2Vzcy1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWRwLXN1Y2Nlc3MtY29sb3IpfS5kcF9faW5wdXRfdmFsaWQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWRwLXN1Y2Nlc3MtY29sb3IpfS5kcF9faW5wdXRfaW52YWxpZHtib3gtc2hhZG93OjAgMCB2YXIoLS1kcC1ib3JkZXItcmFkaXVzKSB2YXIoLS1kcC1kYW5nZXItY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1kcC1kYW5nZXItY29sb3IpfS5kcF9faW5wdXRfaW52YWxpZDpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tZHAtZGFuZ2VyLWNvbG9yKX0uZHBfX21lbnV7cG9zaXRpb246YWJzb2x1dGU7YmFja2dyb3VuZDp2YXIoLS1kcC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItcmFkaXVzOnZhcigtLWRwLWJvcmRlci1yYWRpdXMpO21pbi13aWR0aDp2YXIoLS1kcC1tZW51LW1pbi13aWR0aCk7Zm9udC1mYW1pbHk6dmFyKC0tZHAtZm9udC1mYW1pbHkpO2ZvbnQtc2l6ZTp2YXIoLS1kcC1mb250LXNpemUpOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWRwLW1lbnUtYm9yZGVyLWNvbG9yKTtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmRwX19tZW51OjphZnRlcntib3gtc2l6aW5nOmJvcmRlci1ib3h9LmRwX19tZW51OjpiZWZvcmV7Ym94LXNpemluZzpib3JkZXItYm94fS5kcF9fbWVudTpmb2N1c3tib3JkZXI6MXB4IHNvbGlkIHZhcigtLWRwLW1lbnUtYm9yZGVyLWNvbG9yKTtvdXRsaW5lOm5vbmV9LmRwX19tZW51X2lubmVye3BhZGRpbmc6dmFyKC0tZHAtbWVudS1wYWRkaW5nKX0uZHBfX21lbnVfaW5kZXh7ei1pbmRleDo5OTk5OX0uZHBfX21lbnVfcmVhZG9ubHksLmRwX19tZW51X2Rpc2FibGVke3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7ei1pbmRleDoxfS5kcF9fbWVudV9kaXNhYmxlZHtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjUpO2N1cnNvcjpub3QtYWxsb3dlZH0uZHBfX21lbnVfcmVhZG9ubHl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDApO2N1cnNvcjpkZWZhdWx0fS5kcF9fYXJyb3dfdG9we2xlZnQ6NTAlO3RvcDotMXB4O2hlaWdodDoxMnB4O3dpZHRoOjEycHg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kcC1iYWNrZ3JvdW5kLWNvbG9yKTtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItbGVmdDoxcHggc29saWQgdmFyKC0tZHAtbWVudS1ib3JkZXItY29sb3IpO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWRwLW1lbnUtYm9yZGVyLWNvbG9yKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsIC01MCUpIHJvdGF0ZSg0NWRlZyl9LmRwX19hcnJvd19ib3R0b217bGVmdDo1MCU7Ym90dG9tOi0xcHg7aGVpZ2h0OjEycHg7d2lkdGg6MTJweDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRwLWJhY2tncm91bmQtY29sb3IpO3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yaWdodDoxcHggc29saWQgdmFyKC0tZHAtbWVudS1ib3JkZXItY29sb3IpO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWRwLW1lbnUtYm9yZGVyLWNvbG9yKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsIDUwJSkgcm90YXRlKDQ1ZGVnKX0uZHBfX2FjdGlvbl9leHRyYXt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjJweCAwfS5kcF9fcHJlc2V0X3Jhbmdlc3twYWRkaW5nOjVweDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHZhcigtLWRwLWJvcmRlci1jb2xvcil9LmRwX19zaWRlYmFyX2xlZnR7cGFkZGluZzo1cHg7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCB2YXIoLS1kcC1ib3JkZXItY29sb3IpfS5kcF9fc2lkZWJhcl9yaWdodHtwYWRkaW5nOjVweDtib3JkZXItbGVmdDoxcHggc29saWQgdmFyKC0tZHAtYm9yZGVyLWNvbG9yKX0uZHBfX3ByZXNldF9yYW5nZXtwYWRkaW5nOjVweDtkaXNwbGF5OmJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcDtjb2xvcjp2YXIoLS1kcC10ZXh0LWNvbG9yKTtib3JkZXItcmFkaXVzOnZhcigtLWRwLWJvcmRlci1yYWRpdXMpO3RyYW5zaXRpb246dmFyKC0tZHAtY29tbW9uLXRyYW5zaXRpb24pfS5kcF9fcHJlc2V0X3JhbmdlOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHAtaG92ZXItY29sb3IpO2N1cnNvcjpwb2ludGVyfS5kcF9fbWVudV9jb250ZW50X3dyYXBwZXJ7ZGlzcGxheTpmbGV4fS5kcF9fY2FsZW5kYXJfaGVhZGVye3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtjb2xvcjp2YXIoLS1kcC10ZXh0LWNvbG9yKTt3aGl0ZS1zcGFjZTpub3dyYXA7Zm9udC13ZWlnaHQ6Ym9sZH0uZHBfX2NhbGVuZGFyX2hlYWRlcl9pdGVte3RleHQtYWxpZ246Y2VudGVyO2ZsZXgtZ3JvdzoxO2hlaWdodDp2YXIoLS1kcC1jZWxsLXNpemUpO3BhZGRpbmc6dmFyKC0tZHAtY2VsbC1wYWRkaW5nKTt3aWR0aDp2YXIoLS1kcC1jZWxsLXNpemUpO2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZHBfX2NhbGVuZGFyX3Jvd3tkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luOnZhcigtLWRwLXJvdy1tYXJpbmcpfS5kcF9fY2FsZW5kYXJfaXRlbXt0ZXh0LWFsaWduOmNlbnRlcjtmbGV4LWdyb3c6MTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6dmFyKC0tZHAtdGV4dC1jb2xvcil9LmRwX19jYWxlbmRhcntwb3NpdGlvbjpyZWxhdGl2ZX0uZHBfX2NhbGVuZGFyX2hlYWRlcl9jZWxse2JvcmRlci1ib3R0b206dGhpbiBzb2xpZCB2YXIoLS1kcC1ib3JkZXItY29sb3IpO3BhZGRpbmc6dmFyKC0tZHAtY2FsZW5kYXItaGVhZGVyLWNlbGwtcGFkZGluZyl9LmRwX19jZWxsX2lubmVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7dGV4dC1hbGlnbjpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtib3JkZXItcmFkaXVzOnZhcigtLWRwLWNlbGwtYm9yZGVyLXJhZGl1cyk7aGVpZ2h0OnZhcigtLWRwLWNlbGwtc2l6ZSk7cGFkZGluZzp2YXIoLS1kcC1jZWxsLXBhZGRpbmcpO3dpZHRoOnZhcigtLWRwLWNlbGwtc2l6ZSk7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLDApO2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZX0uZHBfX2NlbGxfaW5uZXI6aG92ZXJ7dHJhbnNpdGlvbjphbGwgLjJzfS5kcF9fY2VsbF9hdXRvX3JhbmdlX3N0YXJ0LC5kcF9fZGF0ZV9ob3Zlcl9zdGFydDpob3ZlciwuZHBfX3JhbmdlX3N0YXJ0e2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0uZHBfX2NlbGxfYXV0b19yYW5nZV9lbmQsLmRwX19kYXRlX2hvdmVyX2VuZDpob3ZlciwuZHBfX3JhbmdlX2VuZHtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowfS5kcF9fcmFuZ2VfZW5kLC5kcF9fcmFuZ2Vfc3RhcnQsLmRwX19hY3RpdmVfZGF0ZXtiYWNrZ3JvdW5kOnZhcigtLWRwLXByaW1hcnktY29sb3IpO2NvbG9yOnZhcigtLWRwLXByaW1hcnktdGV4dC1jb2xvcil9LmRwX19jZWxsX2F1dG9fcmFuZ2VfZW5kLC5kcF9fY2VsbF9hdXRvX3JhbmdlX3N0YXJ0e2JvcmRlci10b3A6MXB4IGRhc2hlZCB2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKTtib3JkZXItYm90dG9tOjFweCBkYXNoZWQgdmFyKC0tZHAtcHJpbWFyeS1jb2xvcil9LmRwX19kYXRlX2hvdmVyX2VuZDpob3ZlciwuZHBfX2RhdGVfaG92ZXJfc3RhcnQ6aG92ZXIsLmRwX19kYXRlX2hvdmVyOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tZHAtaG92ZXItY29sb3IpO2NvbG9yOnZhcigtLWRwLWhvdmVyLXRleHQtY29sb3IpfS5kcF9fY2VsbF9vZmZzZXR7Y29sb3I6dmFyKC0tZHAtc2Vjb25kYXJ5LWNvbG9yKX0uZHBfX2NlbGxfZGlzYWJsZWR7Y29sb3I6dmFyKC0tZHAtc2Vjb25kYXJ5LWNvbG9yKTtjdXJzb3I6bm90LWFsbG93ZWR9LmRwX19yYW5nZV9iZXR3ZWVue2JhY2tncm91bmQ6dmFyKC0tZHAtaG92ZXItY29sb3IpO2JvcmRlci1yYWRpdXM6MDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWRwLWhvdmVyLWNvbG9yKX0uZHBfX3JhbmdlX2JldHdlZW5fd2Vla3tiYWNrZ3JvdW5kOnZhcigtLWRwLXByaW1hcnktY29sb3IpO2NvbG9yOnZhcigtLWRwLXByaW1hcnktdGV4dC1jb2xvcik7Ym9yZGVyLXJhZGl1czowO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWRwLXByaW1hcnktY29sb3IpO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWRwLXByaW1hcnktY29sb3IpfS5kcF9fdG9kYXl7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKX0uZHBfX3dlZWtfbnVte2NvbG9yOnZhcigtLWRwLXNlY29uZGFyeS1jb2xvcik7dGV4dC1hbGlnbjpjZW50ZXJ9LmRwX19jZWxsX2F1dG9fcmFuZ2V7Ym9yZGVyLXJhZGl1czowO2JvcmRlci10b3A6MXB4IGRhc2hlZCB2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKTtib3JkZXItYm90dG9tOjFweCBkYXNoZWQgdmFyKC0tZHAtcHJpbWFyeS1jb2xvcil9LmRwX19jZWxsX2F1dG9fcmFuZ2Vfc3RhcnR7Ym9yZGVyLWxlZnQ6MXB4IGRhc2hlZCB2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKX0uZHBfX2NlbGxfYXV0b19yYW5nZV9lbmR7Ym9yZGVyLXJpZ2h0OjFweCBkYXNoZWQgdmFyKC0tZHAtcHJpbWFyeS1jb2xvcil9LmRwX19jYWxlbmRhcl9oZWFkZXJfc2VwYXJhdG9ye3dpZHRoOjEwMCU7aGVpZ2h0OjFweDtiYWNrZ3JvdW5kOnZhcigtLWRwLWJvcmRlci1jb2xvcil9LmRwX19jYWxlbmRhcl9uZXh0e21hcmdpbi1sZWZ0OnZhcigtLWRwLW11bHRpLWNhbGVuZGFycy1zcGFjaW5nKX0uZHBfX21hcmtlcl9saW5lLC5kcF9fbWFya2VyX2RvdHtoZWlnaHQ6NXB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHAtbWFya2VyLWNvbG9yKTtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MH0uZHBfX21hcmtlcl9kb3R7d2lkdGg6NXB4O2JvcmRlci1yYWRpdXM6NTAlO2xlZnQ6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpfS5kcF9fbWFya2VyX2xpbmV7d2lkdGg6MTAwJTtsZWZ0OjB9LmRwX19tYXJrZXJfdG9vbHRpcHtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOnZhcigtLWRwLWJvcmRlci1yYWRpdXMpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHAtdG9vbHRpcC1jb2xvcik7cGFkZGluZzo1cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1kcC1ib3JkZXItY29sb3IpO3otaW5kZXg6OTk5OTk7Ym94LXNpemluZzpib3JkZXItYm94O2N1cnNvcjpkZWZhdWx0fS5kcF9fdG9vbHRpcF9jb250ZW50e3doaXRlLXNwYWNlOm5vd3JhcH0uZHBfX3Rvb2x0aXBfdGV4dHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtZmxvdzpyb3cgbm93cmFwO2NvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpfS5kcF9fdG9vbHRpcF9tYXJre2hlaWdodDo1cHg7d2lkdGg6NXB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHAtdGV4dC1jb2xvcik7Y29sb3I6dmFyKC0tZHAtdGV4dC1jb2xvcik7bWFyZ2luLXJpZ2h0OjVweH0uZHBfX2Fycm93X2JvdHRvbV90cHtib3R0b206MDtoZWlnaHQ6OHB4O3dpZHRoOjhweDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRwLXRvb2x0aXAtY29sb3IpO3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yaWdodDoxcHggc29saWQgdmFyKC0tZHAtYm9yZGVyLWNvbG9yKTtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1kcC1ib3JkZXItY29sb3IpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwgNTAlKSByb3RhdGUoNDVkZWcpfS5kcF9faW5zdGFuY2VfY2FsZW5kYXJ7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJX1AbWVkaWEgb25seSBzY3JlZW4gYW5kICh3aWR0aCA8PSA2MDBweCl7LmRwX19mbGV4X2Rpc3BsYXl7ZmxleC1kaXJlY3Rpb246Y29sdW1ufX0uZHBfX2NlbGxfaGlnaGxpZ2h0e2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHAtaGlnaGxpZ2h0LWNvbG9yKX0uZHBfX21vbnRoX3llYXJfcm93e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OnZhcigtLWRwLW1vbnRoLXllYXItcm93LWhlaWdodCk7Y29sb3I6dmFyKC0tZHAtdGV4dC1jb2xvcik7Ym94LXNpemluZzpib3JkZXItYm94fS5kcF9faW5uZXJfbmF2e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtjdXJzb3I6cG9pbnRlcjtoZWlnaHQ6dmFyKC0tZHAtbW9udGgteWVhci1yb3ctYnV0dG9uLXNpemUpO3dpZHRoOnZhcigtLWRwLW1vbnRoLXllYXItcm93LWJ1dHRvbi1zaXplKTtjb2xvcjp2YXIoLS1kcC1pY29uLWNvbG9yKTt0ZXh0LWFsaWduOmNlbnRlcjtib3JkZXItcmFkaXVzOjUwJX0uZHBfX2lubmVyX25hdiBzdmd7aGVpZ2h0OnZhcigtLWRwLWJ1dHRvbi1pY29uLWhlaWdodCk7d2lkdGg6dmFyKC0tZHAtYnV0dG9uLWljb24taGVpZ2h0KX0uZHBfX2lubmVyX25hdjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWRwLWhvdmVyLWNvbG9yKTtjb2xvcjp2YXIoLS1kcC1ob3Zlci1pY29uLWNvbG9yKX0uZHBfX2lubmVyX25hdl9kaXNhYmxlZDpob3ZlciwuZHBfX2lubmVyX25hdl9kaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLWRwLWRpc2FibGVkLWNvbG9yKTtjb2xvcjp2YXIoLS1kcC1kaXNhYmxlZC1jb2xvci10ZXh0KTtjdXJzb3I6bm90LWFsbG93ZWR9LmRwX19tb250aF95ZWFyX3NlbGVjdHt3aWR0aDo1MCU7dGV4dC1hbGlnbjpjZW50ZXI7Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OnZhcigtLWRwLW1vbnRoLXllYXItcm93LWhlaWdodCk7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2JvcmRlci1yYWRpdXM6dmFyKC0tZHAtYm9yZGVyLXJhZGl1cyk7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpfS5kcF9fbW9udGhfeWVhcl9zZWxlY3Q6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1kcC1ob3Zlci1jb2xvcik7Y29sb3I6dmFyKC0tZHAtaG92ZXItdGV4dC1jb2xvcil9LmRwX19tb250aF95ZWFyX3dyYXB7ZGlzcGxheTpmbGV4O3dpZHRoOjEwMCV9LmRwX195ZWFyX2Rpc2FibGVfc2VsZWN0e2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmR9LmRwX19vdmVybGF5e3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7YmFja2dyb3VuZDp2YXIoLS1kcC1iYWNrZ3JvdW5kLWNvbG9yKTt0b3A6MDtsZWZ0OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDFzIGVhc2Utb3V0O3otaW5kZXg6OTk5OTk7Zm9udC1mYW1pbHk6dmFyKC0tZHAtZm9udC1mYW1pbHkpO2NvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpO2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZHBfX292ZXJsYXlfY29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhci10cmFja3tib3gtc2hhZG93OnZhcigtLWRwLXNjcm9sbC1iYXItYmFja2dyb3VuZCk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kcC1zY3JvbGwtYmFyLWJhY2tncm91bmQpfS5kcF9fb3ZlcmxheV9jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFye3dpZHRoOjVweDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRwLXNjcm9sbC1iYXItYmFja2dyb3VuZCl9LmRwX19vdmVybGF5X2NvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kcC1zY3JvbGwtYmFyLWNvbG9yKTtib3JkZXItcmFkaXVzOjEwcHh9LmRwX19vdmVybGF5OmZvY3Vze2JvcmRlcjpub25lO291dGxpbmU6bm9uZX0uZHBfX2NvbnRhaW5lcl9mbGV4e2Rpc3BsYXk6ZmxleH0uZHBfX2NvbnRhaW5lcl9ibG9ja3tkaXNwbGF5OmJsb2NrfS5kcF9fb3ZlcmxheV9jb250YWluZXJ7ZmxleC1kaXJlY3Rpb246Y29sdW1uO292ZXJmbG93LXk6YXV0b30uZHBfX3RpbWVfcGlja2VyX292ZXJsYXlfY29udGFpbmVye2hlaWdodDoxMDAlfS5kcF9fb3ZlcmxheV9yb3d7cGFkZGluZzowO2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmZsZXg7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0bztmbGV4LXdyYXA6d3JhcDttYXgtd2lkdGg6MTAwJTt3aWR0aDoxMDAlO2FsaWduLWl0ZW1zOmNlbnRlcn0uZHBfX2ZsZXhfcm93e2ZsZXg6MX0uZHBfX292ZXJsYXlfY29se2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDozMyU7cGFkZGluZzp2YXIoLS1kcC1vdmVybGF5LWNvbC1wYWRkaW5nKTt3aGl0ZS1zcGFjZTpub3dyYXB9LmRwX19vdmVybGF5X2NlbGxfcGFke3BhZGRpbmc6dmFyKC0tZHAtY29tbW9uLXBhZGRpbmcpIDB9LmRwX19vdmVybGF5X2NlbGxfYWN0aXZle2N1cnNvcjpwb2ludGVyO2JvcmRlci1yYWRpdXM6dmFyKC0tZHAtYm9yZGVyLXJhZGl1cyk7dGV4dC1hbGlnbjpjZW50ZXI7YmFja2dyb3VuZDp2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKTtjb2xvcjp2YXIoLS1kcC1wcmltYXJ5LXRleHQtY29sb3IpfS5kcF9fb3ZlcmxheV9jZWxse2N1cnNvcjpwb2ludGVyO2JvcmRlci1yYWRpdXM6dmFyKC0tZHAtYm9yZGVyLXJhZGl1cyk7dGV4dC1hbGlnbjpjZW50ZXJ9LmRwX19vdmVybGF5X2NlbGw6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1kcC1ob3Zlci1jb2xvcik7Y29sb3I6dmFyKC0tZHAtaG92ZXItdGV4dC1jb2xvcil9LmRwX19jZWxsX2luX2JldHdlZW57YmFja2dyb3VuZDp2YXIoLS1kcC1ob3Zlci1jb2xvcik7Y29sb3I6dmFyKC0tZHAtaG92ZXItdGV4dC1jb2xvcil9LmRwX19vdmVyX2FjdGlvbl9zY3JvbGx7cmlnaHQ6NXB4O2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZHBfX292ZXJsYXlfY2VsbF9kaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZDp2YXIoLS1kcC1kaXNhYmxlZC1jb2xvcil9LmRwX19vdmVybGF5X2NlbGxfZGlzYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1kcC1kaXNhYmxlZC1jb2xvcil9LmRwX19vdmVybGF5X2NlbGxfYWN0aXZlX2Rpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kOnZhcigtLWRwLXByaW1hcnktZGlzYWJsZWQtY29sb3IpfS5kcF9fb3ZlcmxheV9jZWxsX2FjdGl2ZV9kaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWRwLXByaW1hcnktZGlzYWJsZWQtY29sb3IpfS5kcF9fbW9udGhfcGlja2VyX2hlYWRlcntkaXNwbGF5OmZsZXg7d2lkdGg6MTAwJTthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47aGVpZ2h0OnZhcigtLWRwLWNlbGwtc2l6ZSl9LmRwX190aW1lX2lucHV0e3dpZHRoOjEwMCU7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtmb250LWZhbWlseTp2YXIoLS1kcC1mb250LWZhbWlseSk7Y29sb3I6dmFyKC0tZHAtdGV4dC1jb2xvcil9LmRwX190aW1lX2NvbF9yZWd7cGFkZGluZzowIDIwcHh9LmRwX190aW1lX2NvbF9yZWdfd2l0aF9idXR0b257cGFkZGluZzowIDE1cHh9LmRwX190aW1lX2NvbF9zZWN7cGFkZGluZzowIDEwcHh9LmRwX190aW1lX2NvbF9zZWNfd2l0aF9idXR0b257cGFkZGluZzowIDVweH0uZHBfX3RpbWVfY29se2ZvbnQtc2l6ZTp2YXIoLS1kcC10aW1lLWZvbnQtc2l6ZSk7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uZHBfX3RpbWVfZGlzcGxheXtjdXJzb3I6cG9pbnRlcjtjb2xvcjp2YXIoLS1kcC10ZXh0LWNvbG9yKTtib3JkZXItcmFkaXVzOnZhcigtLWRwLWJvcmRlci1yYWRpdXMpO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwYWRkaW5nOjAgM3B4fS5kcF9fdGltZV9kaXNwbGF5OmhvdmVye2JhY2tncm91bmQ6dmFyKC0tZHAtaG92ZXItY29sb3IpO2NvbG9yOnZhcigtLWRwLWhvdmVyLXRleHQtY29sb3IpfS5kcF9faW5jX2RlY19idXR0b257cGFkZGluZzo1cHg7bWFyZ2luOjA7aGVpZ2h0OnZhcigtLWRwLXRpbWUtaW5jLWRlYy1idXR0b24tc2l6ZSk7d2lkdGg6dmFyKC0tZHAtdGltZS1pbmMtZGVjLWJ1dHRvbi1zaXplKTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyLXJhZGl1czo1MCU7Y29sb3I6dmFyKC0tZHAtaWNvbi1jb2xvcik7Ym94LXNpemluZzpib3JkZXItYm94fS5kcF9faW5jX2RlY19idXR0b24gc3Zne2hlaWdodDp2YXIoLS1kcC10aW1lLWluYy1kZWMtYnV0dG9uLXNpemUpO3dpZHRoOnZhcigtLWRwLXRpbWUtaW5jLWRlYy1idXR0b24tc2l6ZSl9LmRwX19pbmNfZGVjX2J1dHRvbjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWRwLWhvdmVyLWNvbG9yKTtjb2xvcjp2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKX0uZHBfX2luY19kZWNfYnV0dG9uX2Rpc2FibGVkOmhvdmVyLC5kcF9faW5jX2RlY19idXR0b25fZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1kcC1kaXNhYmxlZC1jb2xvcik7Y29sb3I6dmFyKC0tZHAtZGlzYWJsZWQtY29sb3ItdGV4dCk7Y3Vyc29yOm5vdC1hbGxvd2VkfS5kcF9fcG1fYW1fYnV0dG9ue2JhY2tncm91bmQ6dmFyKC0tZHAtcHJpbWFyeS1jb2xvcik7Y29sb3I6dmFyKC0tZHAtcHJpbWFyeS10ZXh0LWNvbG9yKTtib3JkZXI6bm9uZTtwYWRkaW5nOnZhcigtLWRwLWNvbW1vbi1wYWRkaW5nKTtib3JkZXItcmFkaXVzOnZhcigtLWRwLWJvcmRlci1yYWRpdXMpO2N1cnNvcjpwb2ludGVyfS5kcF9fYWN0aW9uX3Jvd3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO3dpZHRoOjEwMCU7cGFkZGluZzp2YXIoLS1kcC1jb21tb24tcGFkZGluZyk7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpO2ZsZXgtZmxvdzpyb3cgbm93cmFwfS5kcF9fYWN0aW9uX3JvdyBzdmd7aGVpZ2h0OnZhcigtLWRwLWJ1dHRvbi1pY29uLWhlaWdodCk7d2lkdGg6YXV0b30uZHBfX3NlbGVjdGlvbl9wcmV2aWV3e2Rpc3BsYXk6YmxvY2s7Y29sb3I6dmFyKC0tZHAtdGV4dC1jb2xvcik7Zm9udC1zaXplOnZhcigtLWRwLXByZXZpZXctZm9udC1zaXplKTtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LmRwX19hY3Rpb25fYnV0dG9uc3tkaXNwbGF5OmZsZXg7ZmxleDowO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7bWFyZ2luLWxlZnQ6YXV0b30uZHBfX2FjdGlvbl9idXR0b257YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDApO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwwKTtwYWRkaW5nOnZhcigtLWRwLWFjdGlvbi1idXR0b25zLXBhZGRpbmcpO2xpbmUtaGVpZ2h0OmluaXRpYWw7bWFyZ2luLWxlZnQ6M3B4O2hlaWdodDp2YXIoLS1kcC1hY3Rpb24tYnV0dG9uLWhlaWdodCk7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyLXJhZGl1czp2YXIoLS1kcC1ib3JkZXItcmFkaXVzKX0uZHBfX2FjdGlvbl9zZWxlY3R7YmFja2dyb3VuZDp2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKTtjb2xvcjp2YXIoLS1kcC1wcmltYXJ5LXRleHQtY29sb3IpfS5kcF9fYWN0aW9uX3NlbGVjdDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWRwLXByaW1hcnktY29sb3IpO3RyYW5zaXRpb246dmFyKC0tZHAtYWN0aW9uLXJvdy10cmFuc3Rpb24pfS5kcF9fYWN0aW9uX3NlbGVjdDpkaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLWRwLXByaW1hcnktZGlzYWJsZWQtY29sb3IpO2N1cnNvcjpub3QtYWxsb3dlZH0uZHBfX2FjdGlvbl9jYW5jZWx7Y29sb3I6dmFyKC0tZHAtdGV4dC1jb2xvcik7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1kcC1ib3JkZXItY29sb3IpfS5kcF9fYWN0aW9uX2NhbmNlbDpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tZHAtcHJpbWFyeS1jb2xvcik7dHJhbnNpdGlvbjp2YXIoLS1kcC1hY3Rpb24tcm93LXRyYW5zdGlvbil9OnJvb3R7LS1kcC1jb21tb24tdHJhbnNpdGlvbjogYWxsIDAuMXMgZWFzZS1pbjstLWRwLW1lbnUtcGFkZGluZzogNnB4IDhweDstLWRwLWFuaW1hdGlvbi1kdXJhdGlvbjogMC4xczstLWRwLW1lbnUtYXBwZWFyLXRyYW5zaXRpb24tdGltaW5nOiBjdWJpYy1iZXppZXIoLjQsIDAsIDEsIDEpOy0tZHAtdHJhbnNpdGlvbi10aW1pbmc6IGVhc2Utb3V0Oy0tZHAtYWN0aW9uLXJvdy10cmFuc3Rpb246IGFsbCAwLjJzIGVhc2UtaW47LS1kcC1mb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgYmxpbmttYWNzeXN0ZW1mb250LCBcXFwiU2Vnb2UgVUlcXFwiLCByb2JvdG8sIG94eWdlbiwgdWJ1bnR1LCBjYW50YXJlbGwsIFxcXCJPcGVuIFNhbnNcXFwiLCBcXFwiSGVsdmV0aWNhIE5ldWVcXFwiLCBzYW5zLXNlcmlmOy0tZHAtYm9yZGVyLXJhZGl1czogNHB4Oy0tZHAtY2VsbC1ib3JkZXItcmFkaXVzOiA0cHg7LS1kcC10cmFuc2l0aW9uLWxlbmd0aDogMjJweDstLWRwLXRyYW5zaXRpb24tdGltaW5nLWdlbmVyYWw6IDAuMXM7LS1kcC1idXR0b24taGVpZ2h0OiAzNXB4Oy0tZHAtbW9udGgteWVhci1yb3ctaGVpZ2h0OiAzNXB4Oy0tZHAtbW9udGgteWVhci1yb3ctYnV0dG9uLXNpemU6IDI1cHg7LS1kcC1idXR0b24taWNvbi1oZWlnaHQ6IDIwcHg7LS1kcC1jYWxlbmRhci13cmFwLXBhZGRpbmc6IDAgNXB4Oy0tZHAtY2VsbC1zaXplOiAzNXB4Oy0tZHAtY2VsbC1wYWRkaW5nOiA1cHg7LS1kcC1jb21tb24tcGFkZGluZzogMTBweDstLWRwLWlucHV0LWljb24tcGFkZGluZzogMzVweDstLWRwLWlucHV0LXBhZGRpbmc6IDZweCAzMHB4IDZweCAxMnB4Oy0tZHAtbWVudS1taW4td2lkdGg6IDI2MHB4Oy0tZHAtYWN0aW9uLWJ1dHRvbnMtcGFkZGluZzogMXB4IDZweDstLWRwLXJvdy1tYXJpbmc6IDVweCAwOy0tZHAtY2FsZW5kYXItaGVhZGVyLWNlbGwtcGFkZGluZzogMC41cmVtOy0tZHAtbXVsdGktY2FsZW5kYXJzLXNwYWNpbmc6IDEwcHg7LS1kcC1vdmVybGF5LWNvbC1wYWRkaW5nOiAzcHg7LS1kcC10aW1lLWluYy1kZWMtYnV0dG9uLXNpemU6IDMycHg7LS1kcC1mb250LXNpemU6IDFyZW07LS1kcC1wcmV2aWV3LWZvbnQtc2l6ZTogMC44cmVtOy0tZHAtdGltZS1mb250LXNpemU6IDJyZW07LS1kcC1hY3Rpb24tYnV0dG9uLWhlaWdodDogMjJweH0uZHBfX3RoZW1lX2Rhcmt7LS1kcC1iYWNrZ3JvdW5kLWNvbG9yOiAjMjEyMTIxOy0tZHAtdGV4dC1jb2xvcjogI2ZmZjstLWRwLWhvdmVyLWNvbG9yOiAjNDg0ODQ4Oy0tZHAtaG92ZXItdGV4dC1jb2xvcjogI2ZmZjstLWRwLWhvdmVyLWljb24tY29sb3I6ICM5NTk1OTU7LS1kcC1wcmltYXJ5LWNvbG9yOiAjMDA1Y2IyOy0tZHAtcHJpbWFyeS1kaXNhYmxlZC1jb2xvcjogIzYxYThlYTstLWRwLXByaW1hcnktdGV4dC1jb2xvcjogI2ZmZjstLWRwLXNlY29uZGFyeS1jb2xvcjogI2E5YTlhOTstLWRwLWJvcmRlci1jb2xvcjogIzJkMmQyZDstLWRwLW1lbnUtYm9yZGVyLWNvbG9yOiAjMmQyZDJkOy0tZHAtYm9yZGVyLWNvbG9yLWhvdmVyOiAjYWFhZWI3Oy0tZHAtZGlzYWJsZWQtY29sb3I6ICM3MzczNzM7LS1kcC1kaXNhYmxlZC1jb2xvci10ZXh0OiAjZDBkMGQwOy0tZHAtc2Nyb2xsLWJhci1iYWNrZ3JvdW5kOiAjMjEyMTIxOy0tZHAtc2Nyb2xsLWJhci1jb2xvcjogIzQ4NDg0ODstLWRwLXN1Y2Nlc3MtY29sb3I6ICMwMDcwMWE7LS1kcC1zdWNjZXNzLWNvbG9yLWRpc2FibGVkOiAjNDI4ZjU5Oy0tZHAtaWNvbi1jb2xvcjogIzk1OTU5NTstLWRwLWRhbmdlci1jb2xvcjogI2U1MzkzNTstLWRwLW1hcmtlci1jb2xvcjogI2U1MzkzNTstLWRwLXRvb2x0aXAtY29sb3I6ICMzZTNlM2U7LS1kcC1oaWdobGlnaHQtY29sb3I6IHJnYigwIDkyIDE3OCAvIDIwJSl9LmRwX190aGVtZV9saWdodHstLWRwLWJhY2tncm91bmQtY29sb3I6ICNmZmY7LS1kcC10ZXh0LWNvbG9yOiAjMjEyMTIxOy0tZHAtaG92ZXItY29sb3I6ICNmM2YzZjM7LS1kcC1ob3Zlci10ZXh0LWNvbG9yOiAjMjEyMTIxOy0tZHAtaG92ZXItaWNvbi1jb2xvcjogIzk1OTU5NTstLWRwLXByaW1hcnktY29sb3I6ICMxOTc2ZDI7LS1kcC1wcmltYXJ5LWRpc2FibGVkLWNvbG9yOiAjNmJhY2VhOy0tZHAtcHJpbWFyeS10ZXh0LWNvbG9yOiAjZjhmNWY1Oy0tZHAtc2Vjb25kYXJ5LWNvbG9yOiAjYzBjNGNjOy0tZHAtYm9yZGVyLWNvbG9yOiAjZGRkOy0tZHAtbWVudS1ib3JkZXItY29sb3I6ICNkZGQ7LS1kcC1ib3JkZXItY29sb3ItaG92ZXI6ICNhYWFlYjc7LS1kcC1kaXNhYmxlZC1jb2xvcjogI2Y2ZjZmNjstLWRwLXNjcm9sbC1iYXItYmFja2dyb3VuZDogI2YzZjNmMzstLWRwLXNjcm9sbC1iYXItY29sb3I6ICM5NTk1OTU7LS1kcC1zdWNjZXNzLWNvbG9yOiAjNzZkMjc1Oy0tZHAtc3VjY2Vzcy1jb2xvci1kaXNhYmxlZDogI2EzZDliMTstLWRwLWljb24tY29sb3I6ICM5NTk1OTU7LS1kcC1kYW5nZXItY29sb3I6ICNmZjZmNjA7LS1kcC1tYXJrZXItY29sb3I6ICNmZjZmNjA7LS1kcC10b29sdGlwLWNvbG9yOiAjZmFmYWZhOy0tZHAtZGlzYWJsZWQtY29sb3ItdGV4dDogIzhlOGU4ZTstLWRwLWhpZ2hsaWdodC1jb2xvcjogcmdiKDI1IDExOCAyMTAgLyAxMCUpfS5kcF9fYnRue2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtmb250OmluaGVyaXQ7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjp2YXIoLS1kcC1jb21tb24tdHJhbnNpdGlvbik7bGluZS1oZWlnaHQ6bm9ybWFsfS5kcF9fbWFpbntmb250LWZhbWlseTp2YXIoLS1kcC1mb250LWZhbWlseSk7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlfS5kcF9fcG9pbnRlcntjdXJzb3I6cG9pbnRlcn0uZHBfX2ljb257c3Ryb2tlOmN1cnJlbnRjb2xvcjtmaWxsOmN1cnJlbnRjb2xvcn0uZHBfX2J1dHRvbnt3aWR0aDoxMDAlO3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOnZhcigtLWRwLWljb24tY29sb3IpO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24tY29udGVudDpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwYWRkaW5nOnZhcigtLWRwLWNvbW1vbi1wYWRkaW5nKTtib3gtc2l6aW5nOmJvcmRlci1ib3g7aGVpZ2h0OnZhcigtLWRwLWJ1dHRvbi1oZWlnaHQpfS5kcF9fYnV0dG9uLmRwX19vdmVybGF5X2FjdGlvbntwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MH0uZHBfX2J1dHRvbjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWRwLWhvdmVyLWNvbG9yKTtjb2xvcjp2YXIoLS1kcC1ob3Zlci1pY29uLWNvbG9yKX0uZHBfX2J1dHRvbiBzdmd7aGVpZ2h0OnZhcigtLWRwLWJ1dHRvbi1pY29uLWhlaWdodCk7d2lkdGg6YXV0b30uZHBfX2J1dHRvbl9ib3R0b217Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1kcC1ib3JkZXItcmFkaXVzKTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1kcC1ib3JkZXItcmFkaXVzKX0uZHBfX2ZsZXhfZGlzcGxheXtkaXNwbGF5OmZsZXh9LmRwX19mbGV4X2Rpc3BsYXlfd2l0aF9pbnB1dHtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6ZmxleC1zdGFydH0uZHBfX3JlbGF0aXZle3Bvc2l0aW9uOnJlbGF0aXZlfS5jYWxlbmRhci1uZXh0LWVudGVyLWFjdGl2ZSwuY2FsZW5kYXItbmV4dC1sZWF2ZS1hY3RpdmUsLmNhbGVuZGFyLXByZXYtZW50ZXItYWN0aXZlLC5jYWxlbmRhci1wcmV2LWxlYXZlLWFjdGl2ZXt0cmFuc2l0aW9uOmFsbCB2YXIoLS1kcC10cmFuc2l0aW9uLXRpbWluZy1nZW5lcmFsKSBlYXNlLW91dH0uY2FsZW5kYXItbmV4dC1lbnRlci1mcm9te29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWCh2YXIoLS1kcC10cmFuc2l0aW9uLWxlbmd0aCkpfS5jYWxlbmRhci1uZXh0LWxlYXZlLXRve29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWChjYWxjKHZhcigtLWRwLXRyYW5zaXRpb24tbGVuZ3RoKSAqIC0xKSl9LmNhbGVuZGFyLXByZXYtZW50ZXItZnJvbXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoY2FsYyh2YXIoLS1kcC10cmFuc2l0aW9uLWxlbmd0aCkgKiAtMSkpfS5jYWxlbmRhci1wcmV2LWxlYXZlLXRve29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWCh2YXIoLS1kcC10cmFuc2l0aW9uLWxlbmd0aCkpfS5kcC1zbGlkZS11cC1lbnRlci1hY3RpdmUsLmRwLXNsaWRlLXVwLWxlYXZlLWFjdGl2ZSwuZHAtc2xpZGUtZG93bi1lbnRlci1hY3RpdmUsLmRwLXNsaWRlLWRvd24tbGVhdmUtYWN0aXZle3RyYW5zaXRpb246YWxsIHZhcigtLWRwLWFuaW1hdGlvbi1kdXJhdGlvbikgdmFyKC0tZHAtdHJhbnNpdGlvbi10aW1pbmcpfS5kcC1zbGlkZS1kb3duLWxlYXZlLXRvLC5kcC1zbGlkZS11cC1lbnRlci1mcm9te29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSh2YXIoLS1kcC10cmFuc2l0aW9uLWxlbmd0aCkpfS5kcC1zbGlkZS1kb3duLWVudGVyLWZyb20sLmRwLXNsaWRlLXVwLWxlYXZlLXRve29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWShjYWxjKHZhcigtLWRwLXRyYW5zaXRpb24tbGVuZ3RoKSAqIC0xKSl9LmRwX19tZW51X3RyYW5zaXRpb25lZHt0cmFuc2l0aW9uOmFsbCB2YXIoLS1kcC1hbmltYXRpb24tZHVyYXRpb24pIHZhcigtLWRwLW1lbnUtYXBwZWFyLXRyYW5zaXRpb24tdGltaW5nKX0vKiMgc291cmNlTWFwcGluZ1VSTD1tYWluLmNzcy5tYXAgKi9cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQHZ1ZXBpYy92dWUtZGF0ZXBpY2tlci9zcmMvVnVlRGF0ZVBpY2tlci9zdHlsZS9jb21wb25lbnRzL19EYXRlcGlja2VySW5wdXQuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0B2dWVwaWMvdnVlLWRhdGVwaWNrZXIvc3JjL1Z1ZURhdGVQaWNrZXIvc3R5bGUvY29tcG9uZW50cy9fRGF0ZXBpY2tlck1lbnUuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0B2dWVwaWMvdnVlLWRhdGVwaWNrZXIvc3JjL1Z1ZURhdGVQaWNrZXIvc3R5bGUvY29tcG9uZW50cy9fQ2FsZW5kYXIuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0B2dWVwaWMvdnVlLWRhdGVwaWNrZXIvc3JjL1Z1ZURhdGVQaWNrZXIvc3R5bGUvY29tcG9uZW50cy9fTW9udGhZZWFySW5wdXQuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0B2dWVwaWMvdnVlLWRhdGVwaWNrZXIvc3JjL1Z1ZURhdGVQaWNrZXIvc3R5bGUvY29tcG9uZW50cy9fU2VsZWN0aW9uR3JpZC5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQHZ1ZXBpYy92dWUtZGF0ZXBpY2tlci9zcmMvVnVlRGF0ZVBpY2tlci9zdHlsZS9jb21wb25lbnRzL19UaW1lSW5wdXQuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0B2dWVwaWMvdnVlLWRhdGVwaWNrZXIvc3JjL1Z1ZURhdGVQaWNrZXIvc3R5bGUvY29tcG9uZW50cy9fQWN0aW9uUm93LnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AdnVlcGljL3Z1ZS1kYXRlcGlja2VyL3NyYy9WdWVEYXRlUGlja2VyL3N0eWxlL21haW4uc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQSxnQkFDRSxpQkFBQSxDQUNBLFVBQUEsQ0FDQSxnQkFBQSxDQUVBLHNCQUNFLHlDQUFBLENBQ0EsWUFBQSxDQUlKLFdBQ0UsMkNBQUEsQ0FDQSxxQ0FBQSxDQUNBLGlDQUFBLENBQ0EsdUNBQUEsQ0FDQSxZQUFBLENBQ0EsZ0VBQUEsQ0FDQSxVQUFBLENBQ0EsNkJBQUEsQ0FDQSx5Q0FBQSxDQUNBLCtCQUFBLENBQ0EsMEJBQUEsQ0FDQSxxQkFBQSxDQUVBLDZCQUNFLFVBQUEsQ0FERix3QkFDRSxVQUFBLENBR0YsaUJBQ0UseUNBQUEsQ0FJSixlQUNFLHlCQUFBLENBR0YsaUJBQ0UseUNBQUEsQ0FHRixjQUNFLG1DQUFBLENBRUEsZ0NBQ0UsbUNBQUEsQ0FERiwyQkFDRSxtQ0FB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QUNBLDREQUFBLENBR0Ysd0JBQ0UsU0FBQSxDQUNBLGlEQUFBLENBR0YsNEdBSUUsdUVBQUEsQ0FHRixnREFFRSxTQUFBLENBQ0EsaURBQUEsQ0FHRixnREFFRSxTQUFBLENBQ0EsNERBQUEsQ0FHRix1QkFDRSxtRkFBQSxDQUFBLG1DQUFBXCIsXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLm11bHRpc2VsZWN0e2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOnZhcigtLW1zLWJnLCNmZmYpO2JvcmRlcjp2YXIoLS1tcy1ib3JkZXItd2lkdGgsMXB4KSBzb2xpZCB2YXIoLS1tcy1ib3JkZXItY29sb3IsI2QxZDVkYik7Ym9yZGVyLXJhZGl1czp2YXIoLS1tcy1yYWRpdXMsNHB4KTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZTp2YXIoLS1tcy1mb250LXNpemUsMXJlbSk7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO21hcmdpbjowIGF1dG87bWluLWhlaWdodDpjYWxjKHZhcigtLW1zLWJvcmRlci13aWR0aCwgMXB4KSoyICsgdmFyKC0tbXMtZm9udC1zaXplLCAxcmVtKSp2YXIoLS1tcy1saW5lLWhlaWdodCwgMS4zNzUpICsgdmFyKC0tbXMtcHksIC41cmVtKSoyKTtvdXRsaW5lOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJX0ubXVsdGlzZWxlY3QuaXMtb3Blbntib3JkZXItcmFkaXVzOnZhcigtLW1zLXJhZGl1cyw0cHgpIHZhcigtLW1zLXJhZGl1cyw0cHgpIDAgMH0ubXVsdGlzZWxlY3QuaXMtb3Blbi10b3B7Ym9yZGVyLXJhZGl1czowIDAgdmFyKC0tbXMtcmFkaXVzLDRweCkgdmFyKC0tbXMtcmFkaXVzLDRweCl9Lm11bHRpc2VsZWN0LmlzLWRpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tbXMtYmctZGlzYWJsZWQsI2YzZjRmNik7Y3Vyc29yOmRlZmF1bHR9Lm11bHRpc2VsZWN0LmlzLWFjdGl2ZXtib3gtc2hhZG93OjAgMCAwIHZhcigtLW1zLXJpbmctd2lkdGgsM3B4KSB2YXIoLS1tcy1yaW5nLWNvbG9yLHJnYmEoMTYsMTg1LDEyOSwuMTg4KSl9Lm11bHRpc2VsZWN0LW11bHRpcGxlLWxhYmVsLC5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlciwubXVsdGlzZWxlY3Qtc2luZ2xlLWxhYmVse2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7bGVmdDowO2xpbmUtaGVpZ2h0OnZhcigtLW1zLWxpbmUtaGVpZ2h0LDEuMzc1KTttYXgtd2lkdGg6MTAwJTtwYWRkaW5nLWxlZnQ6dmFyKC0tbXMtcHgsLjg3NXJlbSk7cGFkZGluZy1yaWdodDpjYWxjKDEuMjVyZW0gKyB2YXIoLS1tcy1weCwgLjg3NXJlbSkqMyk7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MH0ubXVsdGlzZWxlY3QtcGxhY2Vob2xkZXJ7Y29sb3I6dmFyKC0tbXMtcGxhY2Vob2xkZXItY29sb3IsIzljYTNhZil9Lm11bHRpc2VsZWN0LXNpbmdsZS1sYWJlbC10ZXh0e2Rpc3BsYXk6YmxvY2s7bWF4LXdpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS5tdWx0aXNlbGVjdC1zZWFyY2h7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lO2JhY2tncm91bmQ6dmFyKC0tbXMtYmcsI2ZmZik7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czp2YXIoLS1tcy1yYWRpdXMsNHB4KTtib3R0b206MDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtoZWlnaHQ6MTAwJTtsZWZ0OjA7b3V0bGluZTpub25lO3BhZGRpbmctbGVmdDp2YXIoLS1tcy1weCwuODc1cmVtKTtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3dpZHRoOjEwMCV9Lm11bHRpc2VsZWN0LXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiwubXVsdGlzZWxlY3Qtc2VhcmNoOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uLC5tdWx0aXNlbGVjdC1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uLC5tdWx0aXNlbGVjdC1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0ubXVsdGlzZWxlY3QtdGFnc3thbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZsZXgtZ3JvdzoxO2ZsZXgtc2hyaW5rOjE7ZmxleC13cmFwOndyYXA7bWFyZ2luOnZhcigtLW1zLXRhZy1teSwuMjVyZW0pIDAgMDtwYWRkaW5nLWxlZnQ6dmFyKC0tbXMtcHksLjVyZW0pfS5tdWx0aXNlbGVjdC10YWd7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6dmFyKC0tbXMtdGFnLWJnLCMxMGI5ODEpO2JvcmRlci1yYWRpdXM6dmFyKC0tbXMtdGFnLXJhZGl1cyw0cHgpO2NvbG9yOnZhcigtLW1zLXRhZy1jb2xvciwjZmZmKTtkaXNwbGF5OmZsZXg7Zm9udC1zaXplOnZhcigtLW1zLXRhZy1mb250LXNpemUsLjg3NXJlbSk7Zm9udC13ZWlnaHQ6dmFyKC0tbXMtdGFnLWZvbnQtd2VpZ2h0LDYwMCk7bGluZS1oZWlnaHQ6dmFyKC0tbXMtdGFnLWxpbmUtaGVpZ2h0LDEuMjVyZW0pO21hcmdpbi1ib3R0b206dmFyKC0tbXMtdGFnLW15LC4yNXJlbSk7bWFyZ2luLXJpZ2h0OnZhcigtLW1zLXRhZy1teCwuMjVyZW0pO3BhZGRpbmc6dmFyKC0tbXMtdGFnLXB5LC4xMjVyZW0pIDAgdmFyKC0tbXMtdGFnLXB5LC4xMjVyZW0pIHZhcigtLW1zLXRhZy1weCwuNXJlbSk7d2hpdGUtc3BhY2U6bm93cmFwfS5tdWx0aXNlbGVjdC10YWcuaXMtZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1tcy10YWctYmctZGlzYWJsZWQsIzljYTNhZik7Y29sb3I6dmFyKC0tbXMtdGFnLWNvbG9yLWRpc2FibGVkLCNmZmYpO3BhZGRpbmctcmlnaHQ6dmFyKC0tbXMtdGFnLXB4LC41cmVtKX0ubXVsdGlzZWxlY3QtdGFnLXJlbW92ZXthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyLXJhZGl1czp2YXIoLS1tcy10YWctcmVtb3ZlLXJhZGl1cyw0cHgpO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbjp2YXIoLS1tcy10YWctcmVtb3ZlLW15LDApIHZhcigtLW1zLXRhZy1yZW1vdmUtbXgsLjEyNXJlbSk7cGFkZGluZzp2YXIoLS1tcy10YWctcmVtb3ZlLXB5LC4yNXJlbSkgdmFyKC0tbXMtdGFnLXJlbW92ZS1weCwuMjVyZW0pfS5tdWx0aXNlbGVjdC10YWctcmVtb3ZlOmhvdmVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDYzKX0ubXVsdGlzZWxlY3QtdGFnLXJlbW92ZS1pY29ue2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDouNzVyZW07LXdlYmtpdC1tYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMjAgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J20yMDcuNiAyNTYgMTA3LjcyLTEwNy43MmM2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4bC0yNS4wMy0yNS4wM2MtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEwxNjAgMjA4LjQgNTIuMjggMTAwLjY4Yy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDQuNjggMTI1LjdjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThMMTEyLjQgMjU2IDQuNjggMzYzLjcyYy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4bDI1LjAzIDI1LjAzYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBMMTYwIDMwMy42bDEwNy43MiAxMDcuNzJjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMGwyNS4wMy0yNS4wM2M2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4TDIwNy42IDI1NnonLyUzRSUzQy9zdmclM0VcXFwiKTttYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMjAgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J20yMDcuNiAyNTYgMTA3LjcyLTEwNy43MmM2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4bC0yNS4wMy0yNS4wM2MtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEwxNjAgMjA4LjQgNTIuMjggMTAwLjY4Yy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDQuNjggMTI1LjdjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThMMTEyLjQgMjU2IDQuNjggMzYzLjcyYy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4bDI1LjAzIDI1LjAzYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBMMTYwIDMwMy42bDEwNy43MiAxMDcuNzJjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMGwyNS4wMy0yNS4wM2M2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4TDIwNy42IDI1NnonLyUzRSUzQy9zdmclM0VcXFwiKTstd2Via2l0LW1hc2stcG9zaXRpb246Y2VudGVyO21hc2stcG9zaXRpb246Y2VudGVyOy13ZWJraXQtbWFzay1yZXBlYXQ6bm8tcmVwZWF0O21hc2stcmVwZWF0Om5vLXJlcGVhdDstd2Via2l0LW1hc2stc2l6ZTpjb250YWluO21hc2stc2l6ZTpjb250YWluO29wYWNpdHk6Ljg7d2lkdGg6Ljc1cmVtfS5tdWx0aXNlbGVjdC10YWdzLXNlYXJjaC13cmFwcGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZsZXgtZ3JvdzoxO2ZsZXgtc2hyaW5rOjE7aGVpZ2h0OjEwMCU7bWFyZ2luOjAgdmFyKC0tbXMtdGFnLW14LDRweCkgdmFyKC0tbXMtdGFnLW15LDRweCk7cG9zaXRpb246cmVsYXRpdmV9Lm11bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoLWNvcHl7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjFweDt2aXNpYmlsaXR5OmhpZGRlbjt3aGl0ZS1zcGFjZTpwcmUtd3JhcDt3aWR0aDoxMDAlfS5tdWx0aXNlbGVjdC10YWdzLXNlYXJjaHstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7Ym9yZGVyOjA7Ym90dG9tOjA7Ym94LXNpemluZzpib3JkZXItYm94O2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7bGVmdDowO291dGxpbmU6bm9uZTtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MDt3aWR0aDoxMDAlfS5tdWx0aXNlbGVjdC10YWdzLXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiwubXVsdGlzZWxlY3QtdGFncy1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24sLm11bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoOjotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiwubXVsdGlzZWxlY3QtdGFncy1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0ubXVsdGlzZWxlY3QtaW5pZml0ZXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWluLWhlaWdodDpjYWxjKHZhcigtLW1zLWJvcmRlci13aWR0aCwgMXB4KSoyICsgdmFyKC0tbXMtZm9udC1zaXplLCAxcmVtKSp2YXIoLS1tcy1saW5lLWhlaWdodCwgMS4zNzUpICsgdmFyKC0tbXMtcHksIC41cmVtKSoyKTt3aWR0aDoxMDAlfS5tdWx0aXNlbGVjdC1pbmlmaXRlLXNwaW5uZXIsLm11bHRpc2VsZWN0LXNwaW5uZXJ7LXdlYmtpdC1hbmltYXRpb246bXVsdGlzZWxlY3Qtc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7YW5pbWF0aW9uOm11bHRpc2VsZWN0LXNwaW4gMXMgbGluZWFyIGluZmluaXRlO2JhY2tncm91bmQtY29sb3I6dmFyKC0tbXMtc3Bpbm5lci1jb2xvciwjMTBiOTgxKTtmbGV4LWdyb3c6MDtmbGV4LXNocmluazowO2hlaWdodDoxcmVtOy13ZWJraXQtbWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgNTEyIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdtNDU2LjQzMyAzNzEuNzItMjcuNzktMTYuMDQ1Yy03LjE5Mi00LjE1Mi0xMC4wNTItMTMuMTM2LTYuNDg3LTIwLjYzNiAyNS44Mi01NC4zMjggMjMuNTY2LTExOC42MDItNi43NjgtMTcxLjAzLTMwLjI2NS01Mi41MjktODQuODAyLTg2LjYyMS0xNDQuNzYtOTEuNDI0QzI2Mi4zNSA3MS45MjIgMjU2IDY0Ljk1MyAyNTYgNTYuNjQ5VjI0LjU2YzAtOS4zMSA3LjkxNi0xNi42MDkgMTcuMjA0LTE1Ljk2IDgxLjc5NSA1LjcxNyAxNTYuNDEyIDUxLjkwMiAxOTcuNjExIDEyMy40MDggNDEuMzAxIDcxLjM4NSA0My45OSAxNTkuMDk2IDguMDQyIDIzMi43OTItNC4wODIgOC4zNjktMTQuMzYxIDExLjU3NS0yMi40MjQgNi45MnonLyUzRSUzQy9zdmclM0VcXFwiKTttYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCA1MTIgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J200NTYuNDMzIDM3MS43Mi0yNy43OS0xNi4wNDVjLTcuMTkyLTQuMTUyLTEwLjA1Mi0xMy4xMzYtNi40ODctMjAuNjM2IDI1LjgyLTU0LjMyOCAyMy41NjYtMTE4LjYwMi02Ljc2OC0xNzEuMDMtMzAuMjY1LTUyLjUyOS04NC44MDItODYuNjIxLTE0NC43Ni05MS40MjRDMjYyLjM1IDcxLjkyMiAyNTYgNjQuOTUzIDI1NiA1Ni42NDlWMjQuNTZjMC05LjMxIDcuOTE2LTE2LjYwOSAxNy4yMDQtMTUuOTYgODEuNzk1IDUuNzE3IDE1Ni40MTIgNTEuOTAyIDE5Ny42MTEgMTIzLjQwOCA0MS4zMDEgNzEuMzg1IDQzLjk5IDE1OS4wOTYgOC4wNDIgMjMyLjc5Mi00LjA4MiA4LjM2OS0xNC4zNjEgMTEuNTc1LTIyLjQyNCA2LjkyeicvJTNFJTNDL3N2ZyUzRVxcXCIpOy13ZWJraXQtbWFzay1wb3NpdGlvbjpjZW50ZXI7bWFzay1wb3NpdGlvbjpjZW50ZXI7LXdlYmtpdC1tYXNrLXJlcGVhdDpuby1yZXBlYXQ7bWFzay1yZXBlYXQ6bm8tcmVwZWF0Oy13ZWJraXQtbWFzay1zaXplOmNvbnRhaW47bWFzay1zaXplOmNvbnRhaW47d2lkdGg6MXJlbTt6LWluZGV4OjEwfS5tdWx0aXNlbGVjdC1zcGlubmVye21hcmdpbjowIHZhcigtLW1zLXB4LC44NzVyZW0pIDAgMH0ubXVsdGlzZWxlY3QtY2xlYXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZ3JvdzowO2ZsZXgtc2hyaW5rOjA7b3BhY2l0eToxO3BhZGRpbmc6MCB2YXIoLS1tcy1weCwuODc1cmVtKSAwIDA7cG9zaXRpb246cmVsYXRpdmU7dHJhbnNpdGlvbjouM3M7ei1pbmRleDoxMH0ubXVsdGlzZWxlY3QtY2xlYXI6aG92ZXIgLm11bHRpc2VsZWN0LWNsZWFyLWljb257YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tcy1jbGVhci1jb2xvci1ob3ZlciwjMDAwKX0ubXVsdGlzZWxlY3QtY2xlYXItaWNvbntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1zLWNsZWFyLWNvbG9yLCM5OTkpO2Rpc3BsYXk6aW5saW5lLWJsb2NrOy13ZWJraXQtbWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzIwIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdtMjA3LjYgMjU2IDEwNy43Mi0xMDcuNzJjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OGwtMjUuMDMtMjUuMDNjLTYuMjMtNi4yMy0xNi4zNC02LjIzLTIyLjU4IDBMMTYwIDIwOC40IDUyLjI4IDEwMC42OGMtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEw0LjY4IDEyNS43Yy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4TDExMi40IDI1NiA0LjY4IDM2My43MmMtNi4yMyA2LjIzLTYuMjMgMTYuMzQgMCAyMi41OGwyNS4wMyAyNS4wM2M2LjIzIDYuMjMgMTYuMzQgNi4yMyAyMi41OCAwTDE2MCAzMDMuNmwxMDcuNzIgMTA3LjcyYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBsMjUuMDMtMjUuMDNjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OEwyMDcuNiAyNTZ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7bWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzIwIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdtMjA3LjYgMjU2IDEwNy43Mi0xMDcuNzJjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OGwtMjUuMDMtMjUuMDNjLTYuMjMtNi4yMy0xNi4zNC02LjIzLTIyLjU4IDBMMTYwIDIwOC40IDUyLjI4IDEwMC42OGMtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEw0LjY4IDEyNS43Yy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4TDExMi40IDI1NiA0LjY4IDM2My43MmMtNi4yMyA2LjIzLTYuMjMgMTYuMzQgMCAyMi41OGwyNS4wMyAyNS4wM2M2LjIzIDYuMjMgMTYuMzQgNi4yMyAyMi41OCAwTDE2MCAzMDMuNmwxMDcuNzIgMTA3LjcyYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBsMjUuMDMtMjUuMDNjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OEwyMDcuNiAyNTZ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7dHJhbnNpdGlvbjouM3N9Lm11bHRpc2VsZWN0LWNhcmV0LC5tdWx0aXNlbGVjdC1jbGVhci1pY29ue2hlaWdodDoxLjEyNXJlbTstd2Via2l0LW1hc2stcG9zaXRpb246Y2VudGVyO21hc2stcG9zaXRpb246Y2VudGVyOy13ZWJraXQtbWFzay1yZXBlYXQ6bm8tcmVwZWF0O21hc2stcmVwZWF0Om5vLXJlcGVhdDstd2Via2l0LW1hc2stc2l6ZTpjb250YWluO21hc2stc2l6ZTpjb250YWluO3dpZHRoOi42MjVyZW19Lm11bHRpc2VsZWN0LWNhcmV0e2JhY2tncm91bmQtY29sb3I6dmFyKC0tbXMtY2FyZXQtY29sb3IsIzk5OSk7ZmxleC1ncm93OjA7ZmxleC1zaHJpbms6MDttYXJnaW46MCB2YXIoLS1tcy1weCwuODc1cmVtKSAwIDA7LXdlYmtpdC1tYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMjAgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J00zMS4zIDE5MmgyNTcuM2MxNy44IDAgMjYuNyAyMS41IDE0LjEgMzQuMUwxNzQuMSAzNTQuOGMtNy44IDcuOC0yMC41IDcuOC0yOC4zIDBMMTcuMiAyMjYuMUM0LjYgMjEzLjUgMTMuNSAxOTIgMzEuMyAxOTJ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7bWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzIwIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdNMzEuMyAxOTJoMjU3LjNjMTcuOCAwIDI2LjcgMjEuNSAxNC4xIDM0LjFMMTc0LjEgMzU0LjhjLTcuOCA3LjgtMjAuNSA3LjgtMjguMyAwTDE3LjIgMjI2LjFDNC42IDIxMy41IDEzLjUgMTkyIDMxLjMgMTkyeicvJTNFJTNDL3N2ZyUzRVxcXCIpO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3M7ei1pbmRleDoxMH0ubXVsdGlzZWxlY3QtY2FyZXQuaXMtb3Blbntwb2ludGVyLWV2ZW50czphdXRvO3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX0ubXVsdGlzZWxlY3QtZHJvcGRvd257LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7YmFja2dyb3VuZDp2YXIoLS1tcy1kcm9wZG93bi1iZywjZmZmKTtib3JkZXI6dmFyKC0tbXMtZHJvcGRvd24tYm9yZGVyLXdpZHRoLDFweCkgc29saWQgdmFyKC0tbXMtZHJvcGRvd24tYm9yZGVyLWNvbG9yLCNkMWQ1ZGIpO2JvcmRlci1yYWRpdXM6MCAwIHZhcigtLW1zLWRyb3Bkb3duLXJhZGl1cyw0cHgpIHZhcigtLW1zLWRyb3Bkb3duLXJhZGl1cyw0cHgpO2JvdHRvbTowO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bGVmdDpjYWxjKHZhcigtLW1zLWJvcmRlci13aWR0aCwgMXB4KSotMSk7bWFyZ2luLXRvcDpjYWxjKHZhcigtLW1zLWJvcmRlci13aWR0aCwgMXB4KSotMSk7bWF4LWhlaWdodDoxNXJlbTttYXgtaGVpZ2h0OnZhcigtLW1zLW1heC1oZWlnaHQsMTByZW0pO291dGxpbmU6bm9uZTtvdmVyZmxvdy15OnNjcm9sbDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDpjYWxjKHZhcigtLW1zLWJvcmRlci13aWR0aCwgMXB4KSotMSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTAwJSk7ei1pbmRleDoxMDB9Lm11bHRpc2VsZWN0LWRyb3Bkb3duLmlzLXRvcHtib3JkZXItcmFkaXVzOnZhcigtLW1zLWRyb3Bkb3duLXJhZGl1cyw0cHgpIHZhcigtLW1zLWRyb3Bkb3duLXJhZGl1cyw0cHgpIDAgMDtib3R0b206YXV0bzt0b3A6dmFyKC0tbXMtYm9yZGVyLXdpZHRoLDFweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEwMCUpfS5tdWx0aXNlbGVjdC1kcm9wZG93bi5pcy1oaWRkZW57ZGlzcGxheTpub25lfS5tdWx0aXNlbGVjdC1vcHRpb25ze2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bGlzdC1zdHlsZTpub25lO21hcmdpbjowO3BhZGRpbmc6MH0ubXVsdGlzZWxlY3QtZ3JvdXB7bWFyZ2luOjA7cGFkZGluZzowfS5tdWx0aXNlbGVjdC1ncm91cC1sYWJlbHthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDp2YXIoLS1tcy1ncm91cC1sYWJlbC1iZywjZTVlN2ViKTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtY29sb3IsIzM3NDE1MSk7Y3Vyc29yOmRlZmF1bHQ7ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZTouODc1cmVtO2ZvbnQtd2VpZ2h0OjYwMDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDtsaW5lLWhlaWdodDp2YXIoLS1tcy1ncm91cC1sYWJlbC1saW5lLWhlaWdodCwxLjM3NSk7cGFkZGluZzp2YXIoLS1tcy1ncm91cC1sYWJlbC1weSwuM3JlbSkgdmFyKC0tbXMtZ3JvdXAtbGFiZWwtcHgsLjc1cmVtKTt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVsLmlzLXBvaW50YWJsZXtjdXJzb3I6cG9pbnRlcn0ubXVsdGlzZWxlY3QtZ3JvdXAtbGFiZWwuaXMtcG9pbnRlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLWdyb3VwLWxhYmVsLWJnLXBvaW50ZWQsI2QxZDVkYik7Y29sb3I6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtY29sb3ItcG9pbnRlZCwjMzc0MTUxKX0ubXVsdGlzZWxlY3QtZ3JvdXAtbGFiZWwuaXMtc2VsZWN0ZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1ncm91cC1sYWJlbC1iZy1zZWxlY3RlZCwjMDU5NjY5KTtjb2xvcjp2YXIoLS1tcy1ncm91cC1sYWJlbC1jb2xvci1zZWxlY3RlZCwjZmZmKX0ubXVsdGlzZWxlY3QtZ3JvdXAtbGFiZWwuaXMtZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1ncm91cC1sYWJlbC1iZy1kaXNhYmxlZCwjZjNmNGY2KTtjb2xvcjp2YXIoLS1tcy1ncm91cC1sYWJlbC1jb2xvci1kaXNhYmxlZCwjZDFkNWRiKTtjdXJzb3I6bm90LWFsbG93ZWR9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVsLmlzLXNlbGVjdGVkLmlzLXBvaW50ZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1ncm91cC1sYWJlbC1iZy1zZWxlY3RlZC1wb2ludGVkLCMwYzllNzApO2NvbG9yOnZhcigtLW1zLWdyb3VwLWxhYmVsLWNvbG9yLXNlbGVjdGVkLXBvaW50ZWQsI2ZmZil9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVsLmlzLXNlbGVjdGVkLmlzLWRpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtYmctc2VsZWN0ZWQtZGlzYWJsZWQsIzc1Y2ZiMSk7Y29sb3I6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtY29sb3Itc2VsZWN0ZWQtZGlzYWJsZWQsI2QxZmFlNSl9Lm11bHRpc2VsZWN0LWdyb3VwLW9wdGlvbnN7bWFyZ2luOjA7cGFkZGluZzowfS5tdWx0aXNlbGVjdC1vcHRpb257YWxpZ24taXRlbXM6Y2VudGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7Zm9udC1zaXplOnZhcigtLW1zLW9wdGlvbi1mb250LXNpemUsMXJlbSk7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7bGluZS1oZWlnaHQ6dmFyKC0tbXMtb3B0aW9uLWxpbmUtaGVpZ2h0LDEuMzc1KTtwYWRkaW5nOnZhcigtLW1zLW9wdGlvbi1weSwuNXJlbSkgdmFyKC0tbXMtb3B0aW9uLXB4LC43NXJlbSk7dGV4dC1hbGlnbjpsZWZ0O3RleHQtZGVjb3JhdGlvbjpub25lfS5tdWx0aXNlbGVjdC1vcHRpb24uaXMtcG9pbnRlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLW9wdGlvbi1iZy1wb2ludGVkLCNmM2Y0ZjYpO2NvbG9yOnZhcigtLW1zLW9wdGlvbi1jb2xvci1wb2ludGVkLCMxZjI5MzcpfS5tdWx0aXNlbGVjdC1vcHRpb24uaXMtc2VsZWN0ZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1vcHRpb24tYmctc2VsZWN0ZWQsIzEwYjk4MSk7Y29sb3I6dmFyKC0tbXMtb3B0aW9uLWNvbG9yLXNlbGVjdGVkLCNmZmYpfS5tdWx0aXNlbGVjdC1vcHRpb24uaXMtZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1vcHRpb24tYmctZGlzYWJsZWQsI2ZmZik7Y29sb3I6dmFyKC0tbXMtb3B0aW9uLWNvbG9yLWRpc2FibGVkLCNkMWQ1ZGIpO2N1cnNvcjpub3QtYWxsb3dlZH0ubXVsdGlzZWxlY3Qtb3B0aW9uLmlzLXNlbGVjdGVkLmlzLXBvaW50ZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1vcHRpb24tYmctc2VsZWN0ZWQtcG9pbnRlZCwjMjZjMDhlKTtjb2xvcjp2YXIoLS1tcy1vcHRpb24tY29sb3Itc2VsZWN0ZWQtcG9pbnRlZCwjZmZmKX0ubXVsdGlzZWxlY3Qtb3B0aW9uLmlzLXNlbGVjdGVkLmlzLWRpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tbXMtb3B0aW9uLWJnLXNlbGVjdGVkLWRpc2FibGVkLCM4N2RjYzApO2NvbG9yOnZhcigtLW1zLW9wdGlvbi1jb2xvci1zZWxlY3RlZC1kaXNhYmxlZCwjZDFmYWU1KX0ubXVsdGlzZWxlY3Qtbm8tb3B0aW9ucywubXVsdGlzZWxlY3Qtbm8tcmVzdWx0c3tjb2xvcjp2YXIoLS1tcy1lbXB0eS1jb2xvciwjNGI1NTYzKTtwYWRkaW5nOnZhcigtLW1zLW9wdGlvbi1weSwuNXJlbSkgdmFyKC0tbXMtb3B0aW9uLXB4LC43NXJlbSl9Lm11bHRpc2VsZWN0LWZha2UtaW5wdXR7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6MDtib3R0b206LTFweDtmb250LXNpemU6MDtoZWlnaHQ6MXB4O2xlZnQ6MDtvdXRsaW5lOm5vbmU7cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7d2lkdGg6MTAwJX0ubXVsdGlzZWxlY3QtZmFrZS1pbnB1dDphY3RpdmUsLm11bHRpc2VsZWN0LWZha2UtaW5wdXQ6Zm9jdXN7b3V0bGluZTpub25lfS5tdWx0aXNlbGVjdC1zcGFjZXJ7ZGlzcGxheTpub25lfVtkaXI9cnRsXSAubXVsdGlzZWxlY3QtbXVsdGlwbGUtbGFiZWwsW2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlcixbZGlyPXJ0bF0gLm11bHRpc2VsZWN0LXNpbmdsZS1sYWJlbHtsZWZ0OmF1dG87cGFkZGluZy1sZWZ0OmNhbGMoMS4yNXJlbSArIHZhcigtLW1zLXB4LCAuODc1cmVtKSozKTtwYWRkaW5nLXJpZ2h0OnZhcigtLW1zLXB4LC44NzVyZW0pO3JpZ2h0OjB9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC1zZWFyY2h7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDp2YXIoLS1tcy1weCwuODc1cmVtKX1bZGlyPXJ0bF0gLm11bHRpc2VsZWN0LXRhZ3N7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDp2YXIoLS1tcy1weSwuNXJlbSl9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC10YWd7bWFyZ2luLWxlZnQ6dmFyKC0tbXMtdGFnLW14LC4yNXJlbSk7bWFyZ2luLXJpZ2h0OjA7cGFkZGluZzp2YXIoLS1tcy10YWctcHksLjEyNXJlbSkgdmFyKC0tbXMtdGFnLXB4LC41cmVtKSB2YXIoLS1tcy10YWctcHksLjEyNXJlbSkgMH1bZGlyPXJ0bF0gLm11bHRpc2VsZWN0LXRhZy5pcy1kaXNhYmxlZHtwYWRkaW5nLWxlZnQ6dmFyKC0tbXMtdGFnLXB4LC41cmVtKX1bZGlyPXJ0bF0gLm11bHRpc2VsZWN0LWNhcmV0LFtkaXI9cnRsXSAubXVsdGlzZWxlY3Qtc3Bpbm5lcnttYXJnaW46MCAwIDAgdmFyKC0tbXMtcHgsLjg3NXJlbSl9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC1jbGVhcntwYWRkaW5nOjAgMCAwIHZhcigtLW1zLXB4LC44NzVyZW0pfUAtd2Via2l0LWtleWZyYW1lcyBtdWx0aXNlbGVjdC1zcGluezAle3RyYW5zZm9ybTpyb3RhdGUoMCl9dG97dHJhbnNmb3JtOnJvdGF0ZSgxdHVybil9fUBrZXlmcmFtZXMgbXVsdGlzZWxlY3Qtc3BpbnswJXt0cmFuc2Zvcm06cm90YXRlKDApfXRve3RyYW5zZm9ybTpyb3RhdGUoMXR1cm4pfX1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQHZ1ZWZvcm0vbXVsdGlzZWxlY3QvdGhlbWVzL2RlZmF1bHQuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLGFBQWEsa0JBQWtCLENBQUMsNEJBQTRCLENBQUMsc0VBQXNFLENBQUMsa0NBQWtDLENBQUMscUJBQXFCLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxrQ0FBa0MsQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsK0hBQStILENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsMkRBQTJELENBQUMseUJBQXlCLDJEQUEyRCxDQUFDLHlCQUF5Qix3Q0FBd0MsQ0FBQyxjQUFjLENBQUMsdUJBQXVCLG9GQUFvRixDQUFDLCtFQUErRSxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyx1Q0FBdUMsQ0FBQyxjQUFjLENBQUMsaUNBQWlDLENBQUMscURBQXFELENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLHlCQUF5Qix5Q0FBeUMsQ0FBQywrQkFBK0IsYUFBYSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsc0JBQXNCLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLHVCQUF1QixDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsa0NBQWtDLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLG1C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REFBc0QsQ0FBQyxnREFBZ0QsbUNBQW1DLENBQUMsNERBQTRELENBQUMsd0JBQXdCLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLDZEQUE2RCxZQUFZLENBQUMsb0JBQW9CLFlBQVksQ0FBQyw2R0FBNkcsU0FBUyxDQUFDLG9EQUFvRCxDQUFDLGtDQUFrQyxDQUFDLE9BQU8sQ0FBQyw4QkFBOEIsY0FBYyxDQUFDLGtDQUFrQyxDQUFDLDRCQUE0QixjQUFjLENBQUMsZ0NBQWdDLENBQUMsMkJBQTJCLG1DQUFtQyxDQUFDLGNBQWMsQ0FBQyxrRkFBa0YsQ0FBQyx1Q0FBdUMsbUNBQW1DLENBQUMsNERBQTRELGlDQUFpQyxDQUFDLDZCQUE2QixrQ0FBa0MsQ0FBQyxvQ0FBb0MsR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLHVCQUF1QixDQUFDLENBQUMsNEJBQTRCLEdBQUcsbUJBQW1CLENBQUMsR0FBRyx1QkFBdUIsQ0FBQ1wiLFwic291cmNlc0NvbnRlbnRcIjpbXCIubXVsdGlzZWxlY3R7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6dmFyKC0tbXMtYmcsI2ZmZik7Ym9yZGVyOnZhcigtLW1zLWJvcmRlci13aWR0aCwxcHgpIHNvbGlkIHZhcigtLW1zLWJvcmRlci1jb2xvciwjZDFkNWRiKTtib3JkZXItcmFkaXVzOnZhcigtLW1zLXJhZGl1cyw0cHgpO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7Zm9udC1zaXplOnZhcigtLW1zLWZvbnQtc2l6ZSwxcmVtKTtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7bWFyZ2luOjAgYXV0bzttaW4taGVpZ2h0OmNhbGModmFyKC0tbXMtYm9yZGVyLXdpZHRoLCAxcHgpKjIgKyB2YXIoLS1tcy1mb250LXNpemUsIDFyZW0pKnZhcigtLW1zLWxpbmUtaGVpZ2h0LCAxLjM3NSkgKyB2YXIoLS1tcy1weSwgLjVyZW0pKjIpO291dGxpbmU6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlfS5tdWx0aXNlbGVjdC5pcy1vcGVue2JvcmRlci1yYWRpdXM6dmFyKC0tbXMtcmFkaXVzLDRweCkgdmFyKC0tbXMtcmFkaXVzLDRweCkgMCAwfS5tdWx0aXNlbGVjdC5pcy1vcGVuLXRvcHtib3JkZXItcmFkaXVzOjAgMCB2YXIoLS1tcy1yYWRpdXMsNHB4KSB2YXIoLS1tcy1yYWRpdXMsNHB4KX0ubXVsdGlzZWxlY3QuaXMtZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1iZy1kaXNhYmxlZCwjZjNmNGY2KTtjdXJzb3I6ZGVmYXVsdH0ubXVsdGlzZWxlY3QuaXMtYWN0aXZle2JveC1zaGFkb3c6MCAwIDAgdmFyKC0tbXMtcmluZy13aWR0aCwzcHgpIHZhcigtLW1zLXJpbmctY29sb3IscmdiYSgxNiwxODUsMTI5LC4xODgpKX0ubXVsdGlzZWxlY3QtbXVsdGlwbGUtbGFiZWwsLm11bHRpc2VsZWN0LXBsYWNlaG9sZGVyLC5tdWx0aXNlbGVjdC1zaW5nbGUtbGFiZWx7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MTAwJTtsZWZ0OjA7bGluZS1oZWlnaHQ6dmFyKC0tbXMtbGluZS1oZWlnaHQsMS4zNzUpO21heC13aWR0aDoxMDAlO3BhZGRpbmctbGVmdDp2YXIoLS1tcy1weCwuODc1cmVtKTtwYWRkaW5nLXJpZ2h0OmNhbGMoMS4yNXJlbSArIHZhcigtLW1zLXB4LCAuODc1cmVtKSozKTtwb2ludGVyLWV2ZW50czpub25lO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowfS5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1tcy1wbGFjZWhvbGRlci1jb2xvciwjOWNhM2FmKX0ubXVsdGlzZWxlY3Qtc2luZ2xlLWxhYmVsLXRleHR7ZGlzcGxheTpibG9jazttYXgtd2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9Lm11bHRpc2VsZWN0LXNlYXJjaHstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZDp2YXIoLS1tcy1iZywjZmZmKTtib3JkZXI6MDtib3JkZXItcmFkaXVzOnZhcigtLW1zLXJhZGl1cyw0cHgpO2JvdHRvbTowO2JveC1zaXppbmc6Ym9yZGVyLWJveDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2hlaWdodDoxMDAlO2xlZnQ6MDtvdXRsaW5lOm5vbmU7cGFkZGluZy1sZWZ0OnZhcigtLW1zLXB4LC44NzVyZW0pO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjA7d2lkdGg6MTAwJX0ubXVsdGlzZWxlY3Qtc2VhcmNoOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLC5tdWx0aXNlbGVjdC1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24sLm11bHRpc2VsZWN0LXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1idXR0b24sLm11bHRpc2VsZWN0LXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfS5tdWx0aXNlbGVjdC10YWdze2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjE7ZmxleC1zaHJpbms6MTtmbGV4LXdyYXA6d3JhcDttYXJnaW46dmFyKC0tbXMtdGFnLW15LC4yNXJlbSkgMCAwO3BhZGRpbmctbGVmdDp2YXIoLS1tcy1weSwuNXJlbSl9Lm11bHRpc2VsZWN0LXRhZ3thbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDp2YXIoLS1tcy10YWctYmcsIzEwYjk4MSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1tcy10YWctcmFkaXVzLDRweCk7Y29sb3I6dmFyKC0tbXMtdGFnLWNvbG9yLCNmZmYpO2Rpc3BsYXk6ZmxleDtmb250LXNpemU6dmFyKC0tbXMtdGFnLWZvbnQtc2l6ZSwuODc1cmVtKTtmb250LXdlaWdodDp2YXIoLS1tcy10YWctZm9udC13ZWlnaHQsNjAwKTtsaW5lLWhlaWdodDp2YXIoLS1tcy10YWctbGluZS1oZWlnaHQsMS4yNXJlbSk7bWFyZ2luLWJvdHRvbTp2YXIoLS1tcy10YWctbXksLjI1cmVtKTttYXJnaW4tcmlnaHQ6dmFyKC0tbXMtdGFnLW14LC4yNXJlbSk7cGFkZGluZzp2YXIoLS1tcy10YWctcHksLjEyNXJlbSkgMCB2YXIoLS1tcy10YWctcHksLjEyNXJlbSkgdmFyKC0tbXMtdGFnLXB4LC41cmVtKTt3aGl0ZS1zcGFjZTpub3dyYXB9Lm11bHRpc2VsZWN0LXRhZy5pcy1kaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLXRhZy1iZy1kaXNhYmxlZCwjOWNhM2FmKTtjb2xvcjp2YXIoLS1tcy10YWctY29sb3ItZGlzYWJsZWQsI2ZmZik7cGFkZGluZy1yaWdodDp2YXIoLS1tcy10YWctcHgsLjVyZW0pfS5tdWx0aXNlbGVjdC10YWctcmVtb3Zle2FsaWduLWl0ZW1zOmNlbnRlcjtib3JkZXItcmFkaXVzOnZhcigtLW1zLXRhZy1yZW1vdmUtcmFkaXVzLDRweCk7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luOnZhcigtLW1zLXRhZy1yZW1vdmUtbXksMCkgdmFyKC0tbXMtdGFnLXJlbW92ZS1teCwuMTI1cmVtKTtwYWRkaW5nOnZhcigtLW1zLXRhZy1yZW1vdmUtcHksLjI1cmVtKSB2YXIoLS1tcy10YWctcmVtb3ZlLXB4LC4yNXJlbSl9Lm11bHRpc2VsZWN0LXRhZy1yZW1vdmU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNjMpfS5tdWx0aXNlbGVjdC10YWctcmVtb3ZlLWljb257YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3I7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0Oi43NXJlbTstd2Via2l0LW1hc2staW1hZ2U6dXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgdmlld0JveD0nMCAwIDMyMCA1MTInIGZpbGw9J2N1cnJlbnRDb2xvcicgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nbTIwNy42IDI1NiAxMDcuNzItMTA3LjcyYzYuMjMtNi4yMyA2LjIzLTE2LjM0IDAtMjIuNThsLTI1LjAzLTI1LjAzYy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDE2MCAyMDguNCA1Mi4yOCAxMDAuNjhjLTYuMjMtNi4yMy0xNi4zNC02LjIzLTIyLjU4IDBMNC42OCAxMjUuN2MtNi4yMyA2LjIzLTYuMjMgMTYuMzQgMCAyMi41OEwxMTIuNCAyNTYgNC42OCAzNjMuNzJjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThsMjUuMDMgMjUuMDNjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMEwxNjAgMzAzLjZsMTA3LjcyIDEwNy43MmM2LjIzIDYuMjMgMTYuMzQgNi4yMyAyMi41OCAwbDI1LjAzLTI1LjAzYzYuMjMtNi4yMyA2LjIzLTE2LjM0IDAtMjIuNThMMjA3LjYgMjU2eicvJTNFJTNDL3N2ZyUzRVxcXCIpO21hc2staW1hZ2U6dXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgdmlld0JveD0nMCAwIDMyMCA1MTInIGZpbGw9J2N1cnJlbnRDb2xvcicgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nbTIwNy42IDI1NiAxMDcuNzItMTA3LjcyYzYuMjMtNi4yMyA2LjIzLTE2LjM0IDAtMjIuNThsLTI1LjAzLTI1LjAzYy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDE2MCAyMDguNCA1Mi4yOCAxMDAuNjhjLTYuMjMtNi4yMy0xNi4zNC02LjIzLTIyLjU4IDBMNC42OCAxMjUuN2MtNi4yMyA2LjIzLTYuMjMgMTYuMzQgMCAyMi41OEwxMTIuNCAyNTYgNC42OCAzNjMuNzJjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThsMjUuMDMgMjUuMDNjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMEwxNjAgMzAzLjZsMTA3LjcyIDEwNy43MmM2LjIzIDYuMjMgMTYuMzQgNi4yMyAyMi41OCAwbDI1LjAzLTI1LjAzYzYuMjMtNi4yMyA2LjIzLTE2LjM0IDAtMjIuNThMMjA3LjYgMjU2eicvJTNFJTNDL3N2ZyUzRVxcXCIpOy13ZWJraXQtbWFzay1wb3NpdGlvbjpjZW50ZXI7bWFzay1wb3NpdGlvbjpjZW50ZXI7LXdlYmtpdC1tYXNrLXJlcGVhdDpuby1yZXBlYXQ7bWFzay1yZXBlYXQ6bm8tcmVwZWF0Oy13ZWJraXQtbWFzay1zaXplOmNvbnRhaW47bWFzay1zaXplOmNvbnRhaW47b3BhY2l0eTouODt3aWR0aDouNzVyZW19Lm11bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoLXdyYXBwZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmxleC1ncm93OjE7ZmxleC1zaHJpbms6MTtoZWlnaHQ6MTAwJTttYXJnaW46MCB2YXIoLS1tcy10YWctbXgsNHB4KSB2YXIoLS1tcy10YWctbXksNHB4KTtwb3NpdGlvbjpyZWxhdGl2ZX0ubXVsdGlzZWxlY3QtdGFncy1zZWFyY2gtY29weXtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MXB4O3Zpc2liaWxpdHk6aGlkZGVuO3doaXRlLXNwYWNlOnByZS13cmFwO3dpZHRoOjEwMCV9Lm11bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoey13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTtib3JkZXI6MDtib3R0b206MDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtsZWZ0OjA7b3V0bGluZTpub25lO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3dpZHRoOjEwMCV9Lm11bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLC5tdWx0aXNlbGVjdC10YWdzLXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiwubXVsdGlzZWxlY3QtdGFncy1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uLC5tdWx0aXNlbGVjdC10YWdzLXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfS5tdWx0aXNlbGVjdC1pbmlmaXRle2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjttaW4taGVpZ2h0OmNhbGModmFyKC0tbXMtYm9yZGVyLXdpZHRoLCAxcHgpKjIgKyB2YXIoLS1tcy1mb250LXNpemUsIDFyZW0pKnZhcigtLW1zLWxpbmUtaGVpZ2h0LCAxLjM3NSkgKyB2YXIoLS1tcy1weSwgLjVyZW0pKjIpO3dpZHRoOjEwMCV9Lm11bHRpc2VsZWN0LWluaWZpdGUtc3Bpbm5lciwubXVsdGlzZWxlY3Qtc3Bpbm5lcnstd2Via2l0LWFuaW1hdGlvbjptdWx0aXNlbGVjdC1zcGluIDFzIGxpbmVhciBpbmZpbml0ZTthbmltYXRpb246bXVsdGlzZWxlY3Qtc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tcy1zcGlubmVyLWNvbG9yLCMxMGI5ODEpO2ZsZXgtZ3JvdzowO2ZsZXgtc2hyaW5rOjA7aGVpZ2h0OjFyZW07LXdlYmtpdC1tYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCA1MTIgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J200NTYuNDMzIDM3MS43Mi0yNy43OS0xNi4wNDVjLTcuMTkyLTQuMTUyLTEwLjA1Mi0xMy4xMzYtNi40ODctMjAuNjM2IDI1LjgyLTU0LjMyOCAyMy41NjYtMTE4LjYwMi02Ljc2OC0xNzEuMDMtMzAuMjY1LTUyLjUyOS04NC44MDItODYuNjIxLTE0NC43Ni05MS40MjRDMjYyLjM1IDcxLjkyMiAyNTYgNjQuOTUzIDI1NiA1Ni42NDlWMjQuNTZjMC05LjMxIDcuOTE2LTE2LjYwOSAxNy4yMDQtMTUuOTYgODEuNzk1IDUuNzE3IDE1Ni40MTIgNTEuOTAyIDE5Ny42MTEgMTIzLjQwOCA0MS4zMDEgNzEuMzg1IDQzLjk5IDE1OS4wOTYgOC4wNDIgMjMyLjc5Mi00LjA4MiA4LjM2OS0xNC4zNjEgMTEuNTc1LTIyLjQyNCA2LjkyeicvJTNFJTNDL3N2ZyUzRVxcXCIpO21hc2staW1hZ2U6dXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgdmlld0JveD0nMCAwIDUxMiA1MTInIGZpbGw9J2N1cnJlbnRDb2xvcicgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nbTQ1Ni40MzMgMzcxLjcyLTI3Ljc5LTE2LjA0NWMtNy4xOTItNC4xNTItMTAuMDUyLTEzLjEzNi02LjQ4Ny0yMC42MzYgMjUuODItNTQuMzI4IDIzLjU2Ni0xMTguNjAyLTYuNzY4LTE3MS4wMy0zMC4yNjUtNTIuNTI5LTg0LjgwMi04Ni42MjEtMTQ0Ljc2LTkxLjQyNEMyNjIuMzUgNzEuOTIyIDI1NiA2NC45NTMgMjU2IDU2LjY0OVYyNC41NmMwLTkuMzEgNy45MTYtMTYuNjA5IDE3LjIwNC0xNS45NiA4MS43OTUgNS43MTcgMTU2LjQxMiA1MS45MDIgMTk3LjYxMSAxMjMuNDA4IDQxLjMwMSA3MS4zODUgNDMuOTkgMTU5LjA5NiA4LjA0MiAyMzIuNzkyLTQuMDgyIDguMzY5LTE0LjM2MSAxMS41NzUtMjIuNDI0IDYuOTJ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7LXdlYmtpdC1tYXNrLXBvc2l0aW9uOmNlbnRlcjttYXNrLXBvc2l0aW9uOmNlbnRlcjstd2Via2l0LW1hc2stcmVwZWF0Om5vLXJlcGVhdDttYXNrLXJlcGVhdDpuby1yZXBlYXQ7LXdlYmtpdC1tYXNrLXNpemU6Y29udGFpbjttYXNrLXNpemU6Y29udGFpbjt3aWR0aDoxcmVtO3otaW5kZXg6MTB9Lm11bHRpc2VsZWN0LXNwaW5uZXJ7bWFyZ2luOjAgdmFyKC0tbXMtcHgsLjg3NXJlbSkgMCAwfS5tdWx0aXNlbGVjdC1jbGVhcntkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjA7ZmxleC1zaHJpbms6MDtvcGFjaXR5OjE7cGFkZGluZzowIHZhcigtLW1zLXB4LC44NzVyZW0pIDAgMDtwb3NpdGlvbjpyZWxhdGl2ZTt0cmFuc2l0aW9uOi4zczt6LWluZGV4OjEwfS5tdWx0aXNlbGVjdC1jbGVhcjpob3ZlciAubXVsdGlzZWxlY3QtY2xlYXItaWNvbntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1zLWNsZWFyLWNvbG9yLWhvdmVyLCMwMDApfS5tdWx0aXNlbGVjdC1jbGVhci1pY29ue2JhY2tncm91bmQtY29sb3I6dmFyKC0tbXMtY2xlYXItY29sb3IsIzk5OSk7ZGlzcGxheTppbmxpbmUtYmxvY2s7LXdlYmtpdC1tYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMjAgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J20yMDcuNiAyNTYgMTA3LjcyLTEwNy43MmM2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4bC0yNS4wMy0yNS4wM2MtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEwxNjAgMjA4LjQgNTIuMjggMTAwLjY4Yy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDQuNjggMTI1LjdjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThMMTEyLjQgMjU2IDQuNjggMzYzLjcyYy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4bDI1LjAzIDI1LjAzYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBMMTYwIDMwMy42bDEwNy43MiAxMDcuNzJjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMGwyNS4wMy0yNS4wM2M2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4TDIwNy42IDI1NnonLyUzRSUzQy9zdmclM0VcXFwiKTttYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMjAgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J20yMDcuNiAyNTYgMTA3LjcyLTEwNy43MmM2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4bC0yNS4wMy0yNS4wM2MtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEwxNjAgMjA4LjQgNTIuMjggMTAwLjY4Yy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDQuNjggMTI1LjdjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThMMTEyLjQgMjU2IDQuNjggMzYzLjcyYy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4bDI1LjAzIDI1LjAzYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBMMTYwIDMwMy42bDEwNy43MiAxMDcuNzJjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMGwyNS4wMy0yNS4wM2M2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4TDIwNy42IDI1NnonLyUzRSUzQy9zdmclM0VcXFwiKTt0cmFuc2l0aW9uOi4zc30ubXVsdGlzZWxlY3QtY2FyZXQsLm11bHRpc2VsZWN0LWNsZWFyLWljb257aGVpZ2h0OjEuMTI1cmVtOy13ZWJraXQtbWFzay1wb3NpdGlvbjpjZW50ZXI7bWFzay1wb3NpdGlvbjpjZW50ZXI7LXdlYmtpdC1tYXNrLXJlcGVhdDpuby1yZXBlYXQ7bWFzay1yZXBlYXQ6bm8tcmVwZWF0Oy13ZWJraXQtbWFzay1zaXplOmNvbnRhaW47bWFzay1zaXplOmNvbnRhaW47d2lkdGg6LjYyNXJlbX0ubXVsdGlzZWxlY3QtY2FyZXR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tcy1jYXJldC1jb2xvciwjOTk5KTtmbGV4LWdyb3c6MDtmbGV4LXNocmluazowO21hcmdpbjowIHZhcigtLW1zLXB4LC44NzVyZW0pIDAgMDstd2Via2l0LW1hc2staW1hZ2U6dXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgdmlld0JveD0nMCAwIDMyMCA1MTInIGZpbGw9J2N1cnJlbnRDb2xvcicgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nTTMxLjMgMTkyaDI1Ny4zYzE3LjggMCAyNi43IDIxLjUgMTQuMSAzNC4xTDE3NC4xIDM1NC44Yy03LjggNy44LTIwLjUgNy44LTI4LjMgMEwxNy4yIDIyNi4xQzQuNiAyMTMuNSAxMy41IDE5MiAzMS4zIDE5MnonLyUzRSUzQy9zdmclM0VcXFwiKTttYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMjAgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J00zMS4zIDE5MmgyNTcuM2MxNy44IDAgMjYuNyAyMS41IDE0LjEgMzQuMUwxNzQuMSAzNTQuOGMtNy44IDcuOC0yMC41IDcuOC0yOC4zIDBMMTcuMiAyMjYuMUM0LjYgMjEzLjUgMTMuNSAxOTIgMzEuMyAxOTJ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpO3RyYW5zaXRpb246dHJhbnNmb3JtIC4zczt6LWluZGV4OjEwfS5tdWx0aXNlbGVjdC1jYXJldC5pcy1vcGVue3BvaW50ZXItZXZlbnRzOmF1dG87dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfS5tdWx0aXNlbGVjdC1kcm9wZG93bnstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDtiYWNrZ3JvdW5kOnZhcigtLW1zLWRyb3Bkb3duLWJnLCNmZmYpO2JvcmRlcjp2YXIoLS1tcy1kcm9wZG93bi1ib3JkZXItd2lkdGgsMXB4KSBzb2xpZCB2YXIoLS1tcy1kcm9wZG93bi1ib3JkZXItY29sb3IsI2QxZDVkYik7Ym9yZGVyLXJhZGl1czowIDAgdmFyKC0tbXMtZHJvcGRvd24tcmFkaXVzLDRweCkgdmFyKC0tbXMtZHJvcGRvd24tcmFkaXVzLDRweCk7Ym90dG9tOjA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtsZWZ0OmNhbGModmFyKC0tbXMtYm9yZGVyLXdpZHRoLCAxcHgpKi0xKTttYXJnaW4tdG9wOmNhbGModmFyKC0tbXMtYm9yZGVyLXdpZHRoLCAxcHgpKi0xKTttYXgtaGVpZ2h0OjE1cmVtO21heC1oZWlnaHQ6dmFyKC0tbXMtbWF4LWhlaWdodCwxMHJlbSk7b3V0bGluZTpub25lO292ZXJmbG93LXk6c2Nyb2xsO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OmNhbGModmFyKC0tbXMtYm9yZGVyLXdpZHRoLCAxcHgpKi0xKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgxMDAlKTt6LWluZGV4OjEwMH0ubXVsdGlzZWxlY3QtZHJvcGRvd24uaXMtdG9we2JvcmRlci1yYWRpdXM6dmFyKC0tbXMtZHJvcGRvd24tcmFkaXVzLDRweCkgdmFyKC0tbXMtZHJvcGRvd24tcmFkaXVzLDRweCkgMCAwO2JvdHRvbTphdXRvO3RvcDp2YXIoLS1tcy1ib3JkZXItd2lkdGgsMXB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTAwJSl9Lm11bHRpc2VsZWN0LWRyb3Bkb3duLmlzLWhpZGRlbntkaXNwbGF5Om5vbmV9Lm11bHRpc2VsZWN0LW9wdGlvbnN7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtsaXN0LXN0eWxlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowfS5tdWx0aXNlbGVjdC1ncm91cHttYXJnaW46MDtwYWRkaW5nOjB9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVse2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOnZhcigtLW1zLWdyb3VwLWxhYmVsLWJnLCNlNWU3ZWIpO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjp2YXIoLS1tcy1ncm91cC1sYWJlbC1jb2xvciwjMzc0MTUxKTtjdXJzb3I6ZGVmYXVsdDtkaXNwbGF5OmZsZXg7Zm9udC1zaXplOi44NzVyZW07Zm9udC13ZWlnaHQ6NjAwO2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O2xpbmUtaGVpZ2h0OnZhcigtLW1zLWdyb3VwLWxhYmVsLWxpbmUtaGVpZ2h0LDEuMzc1KTtwYWRkaW5nOnZhcigtLW1zLWdyb3VwLWxhYmVsLXB5LC4zcmVtKSB2YXIoLS1tcy1ncm91cC1sYWJlbC1weCwuNzVyZW0pO3RleHQtYWxpZ246bGVmdDt0ZXh0LWRlY29yYXRpb246bm9uZX0ubXVsdGlzZWxlY3QtZ3JvdXAtbGFiZWwuaXMtcG9pbnRhYmxle2N1cnNvcjpwb2ludGVyfS5tdWx0aXNlbGVjdC1ncm91cC1sYWJlbC5pcy1wb2ludGVke2JhY2tncm91bmQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtYmctcG9pbnRlZCwjZDFkNWRiKTtjb2xvcjp2YXIoLS1tcy1ncm91cC1sYWJlbC1jb2xvci1wb2ludGVkLCMzNzQxNTEpfS5tdWx0aXNlbGVjdC1ncm91cC1sYWJlbC5pcy1zZWxlY3RlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLWdyb3VwLWxhYmVsLWJnLXNlbGVjdGVkLCMwNTk2NjkpO2NvbG9yOnZhcigtLW1zLWdyb3VwLWxhYmVsLWNvbG9yLXNlbGVjdGVkLCNmZmYpfS5tdWx0aXNlbGVjdC1ncm91cC1sYWJlbC5pcy1kaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLWdyb3VwLWxhYmVsLWJnLWRpc2FibGVkLCNmM2Y0ZjYpO2NvbG9yOnZhcigtLW1zLWdyb3VwLWxhYmVsLWNvbG9yLWRpc2FibGVkLCNkMWQ1ZGIpO2N1cnNvcjpub3QtYWxsb3dlZH0ubXVsdGlzZWxlY3QtZ3JvdXAtbGFiZWwuaXMtc2VsZWN0ZWQuaXMtcG9pbnRlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLWdyb3VwLWxhYmVsLWJnLXNlbGVjdGVkLXBvaW50ZWQsIzBjOWU3MCk7Y29sb3I6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtY29sb3Itc2VsZWN0ZWQtcG9pbnRlZCwjZmZmKX0ubXVsdGlzZWxlY3QtZ3JvdXAtbGFiZWwuaXMtc2VsZWN0ZWQuaXMtZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1ncm91cC1sYWJlbC1iZy1zZWxlY3RlZC1kaXNhYmxlZCwjNzVjZmIxKTtjb2xvcjp2YXIoLS1tcy1ncm91cC1sYWJlbC1jb2xvci1zZWxlY3RlZC1kaXNhYmxlZCwjZDFmYWU1KX0ubXVsdGlzZWxlY3QtZ3JvdXAtb3B0aW9uc3ttYXJnaW46MDtwYWRkaW5nOjB9Lm11bHRpc2VsZWN0LW9wdGlvbnthbGlnbi1pdGVtczpjZW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6ZmxleDtmb250LXNpemU6dmFyKC0tbXMtb3B0aW9uLWZvbnQtc2l6ZSwxcmVtKTtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDtsaW5lLWhlaWdodDp2YXIoLS1tcy1vcHRpb24tbGluZS1oZWlnaHQsMS4zNzUpO3BhZGRpbmc6dmFyKC0tbXMtb3B0aW9uLXB5LC41cmVtKSB2YXIoLS1tcy1vcHRpb24tcHgsLjc1cmVtKTt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9Lm11bHRpc2VsZWN0LW9wdGlvbi5pcy1wb2ludGVke2JhY2tncm91bmQ6dmFyKC0tbXMtb3B0aW9uLWJnLXBvaW50ZWQsI2YzZjRmNik7Y29sb3I6dmFyKC0tbXMtb3B0aW9uLWNvbG9yLXBvaW50ZWQsIzFmMjkzNyl9Lm11bHRpc2VsZWN0LW9wdGlvbi5pcy1zZWxlY3RlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLW9wdGlvbi1iZy1zZWxlY3RlZCwjMTBiOTgxKTtjb2xvcjp2YXIoLS1tcy1vcHRpb24tY29sb3Itc2VsZWN0ZWQsI2ZmZil9Lm11bHRpc2VsZWN0LW9wdGlvbi5pcy1kaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLW9wdGlvbi1iZy1kaXNhYmxlZCwjZmZmKTtjb2xvcjp2YXIoLS1tcy1vcHRpb24tY29sb3ItZGlzYWJsZWQsI2QxZDVkYik7Y3Vyc29yOm5vdC1hbGxvd2VkfS5tdWx0aXNlbGVjdC1vcHRpb24uaXMtc2VsZWN0ZWQuaXMtcG9pbnRlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLW9wdGlvbi1iZy1zZWxlY3RlZC1wb2ludGVkLCMyNmMwOGUpO2NvbG9yOnZhcigtLW1zLW9wdGlvbi1jb2xvci1zZWxlY3RlZC1wb2ludGVkLCNmZmYpfS5tdWx0aXNlbGVjdC1vcHRpb24uaXMtc2VsZWN0ZWQuaXMtZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1vcHRpb24tYmctc2VsZWN0ZWQtZGlzYWJsZWQsIzg3ZGNjMCk7Y29sb3I6dmFyKC0tbXMtb3B0aW9uLWNvbG9yLXNlbGVjdGVkLWRpc2FibGVkLCNkMWZhZTUpfS5tdWx0aXNlbGVjdC1uby1vcHRpb25zLC5tdWx0aXNlbGVjdC1uby1yZXN1bHRze2NvbG9yOnZhcigtLW1zLWVtcHR5LWNvbG9yLCM0YjU1NjMpO3BhZGRpbmc6dmFyKC0tbXMtb3B0aW9uLXB5LC41cmVtKSB2YXIoLS1tcy1vcHRpb24tcHgsLjc1cmVtKX0ubXVsdGlzZWxlY3QtZmFrZS1pbnB1dHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjowO2JvdHRvbTotMXB4O2ZvbnQtc2l6ZTowO2hlaWdodDoxcHg7bGVmdDowO291dGxpbmU6bm9uZTtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt3aWR0aDoxMDAlfS5tdWx0aXNlbGVjdC1mYWtlLWlucHV0OmFjdGl2ZSwubXVsdGlzZWxlY3QtZmFrZS1pbnB1dDpmb2N1c3tvdXRsaW5lOm5vbmV9Lm11bHRpc2VsZWN0LXNwYWNlcntkaXNwbGF5Om5vbmV9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC1tdWx0aXBsZS1sYWJlbCxbZGlyPXJ0bF0gLm11bHRpc2VsZWN0LXBsYWNlaG9sZGVyLFtkaXI9cnRsXSAubXVsdGlzZWxlY3Qtc2luZ2xlLWxhYmVse2xlZnQ6YXV0bztwYWRkaW5nLWxlZnQ6Y2FsYygxLjI1cmVtICsgdmFyKC0tbXMtcHgsIC44NzVyZW0pKjMpO3BhZGRpbmctcmlnaHQ6dmFyKC0tbXMtcHgsLjg3NXJlbSk7cmlnaHQ6MH1bZGlyPXJ0bF0gLm11bHRpc2VsZWN0LXNlYXJjaHtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OnZhcigtLW1zLXB4LC44NzVyZW0pfVtkaXI9cnRsXSAubXVsdGlzZWxlY3QtdGFnc3twYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OnZhcigtLW1zLXB5LC41cmVtKX1bZGlyPXJ0bF0gLm11bHRpc2VsZWN0LXRhZ3ttYXJnaW4tbGVmdDp2YXIoLS1tcy10YWctbXgsLjI1cmVtKTttYXJnaW4tcmlnaHQ6MDtwYWRkaW5nOnZhcigtLW1zLXRhZy1weSwuMTI1cmVtKSB2YXIoLS1tcy10YWctcHgsLjVyZW0pIHZhcigtLW1zLXRhZy1weSwuMTI1cmVtKSAwfVtkaXI9cnRsXSAubXVsdGlzZWxlY3QtdGFnLmlzLWRpc2FibGVke3BhZGRpbmctbGVmdDp2YXIoLS1tcy10YWctcHgsLjVyZW0pfVtkaXI9cnRsXSAubXVsdGlzZWxlY3QtY2FyZXQsW2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC1zcGlubmVye21hcmdpbjowIDAgMCB2YXIoLS1tcy1weCwuODc1cmVtKX1bZGlyPXJ0bF0gLm11bHRpc2VsZWN0LWNsZWFye3BhZGRpbmc6MCAwIDAgdmFyKC0tbXMtcHgsLjg3NXJlbSl9QC13ZWJraXQta2V5ZnJhbWVzIG11bHRpc2VsZWN0LXNwaW57MCV7dHJhbnNmb3JtOnJvdGF0ZSgwKX10b3t0cmFuc2Zvcm06cm90YXRlKDF0dXJuKX19QGtleWZyYW1lcyBtdWx0aXNlbGVjdC1zcGluezAle3RyYW5zZm9ybTpyb3RhdGUoMCl9dG97dHJhbnNmb3JtOnJvdGF0ZSgxdHVybil9fVwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbi8vIGNzcyBiYXNlIGNvZGUsIGluamVjdGVkIGJ5IHRoZSBjc3MtbG9hZGVyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY3NzV2l0aE1hcHBpbmdUb1N0cmluZykge1xuICB2YXIgbGlzdCA9IFtdOyAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pO1xuXG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICByZXR1cm4gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIikuY29uY2F0KGNvbnRlbnQsIFwifVwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTsgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcblxuXG4gIGxpc3QuaSA9IGZ1bmN0aW9uIChtb2R1bGVzLCBtZWRpYVF1ZXJ5LCBkZWR1cGUpIHtcbiAgICBpZiAodHlwZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgXCJcIl1dO1xuICAgIH1cblxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG5cbiAgICBpZiAoZGVkdXBlKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1kZXN0cnVjdHVyaW5nXG4gICAgICAgIHZhciBpZCA9IHRoaXNbaV1bMF07XG5cbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbW9kdWxlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBpdGVtID0gW10uY29uY2F0KG1vZHVsZXNbX2ldKTtcblxuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb250aW51ZVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1lZGlhUXVlcnkpIHtcbiAgICAgICAgaWYgKCFpdGVtWzJdKSB7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhUXVlcnk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsyXSA9IFwiXCIuY29uY2F0KG1lZGlhUXVlcnksIFwiIGFuZCBcIikuY29uY2F0KGl0ZW1bMl0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxpc3QucHVzaChpdGVtKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIGxpc3Q7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgeyB2YXIgX2kgPSBhcnIgJiYgKHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgYXJyW1N5bWJvbC5pdGVyYXRvcl0gfHwgYXJyW1wiQEBpdGVyYXRvclwiXSk7IGlmIChfaSA9PSBudWxsKSByZXR1cm47IHZhciBfYXJyID0gW107IHZhciBfbiA9IHRydWU7IHZhciBfZCA9IGZhbHNlOyB2YXIgX3MsIF9lOyB0cnkgeyBmb3IgKF9pID0gX2kuY2FsbChhcnIpOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7IF9hcnIucHVzaChfcy52YWx1ZSk7IGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhazsgfSB9IGNhdGNoIChlcnIpIHsgX2QgPSB0cnVlOyBfZSA9IGVycjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpOyB9IGZpbmFsbHkgeyBpZiAoX2QpIHRocm93IF9lOyB9IH0gcmV0dXJuIF9hcnI7IH1cblxuZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyOyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKSB7XG4gIHZhciBfaXRlbSA9IF9zbGljZWRUb0FycmF5KGl0ZW0sIDQpLFxuICAgICAgY29udGVudCA9IF9pdGVtWzFdLFxuICAgICAgY3NzTWFwcGluZyA9IF9pdGVtWzNdO1xuXG4gIGlmICghY3NzTWFwcGluZykge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgaWYgKHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoY3NzTWFwcGluZykpKSk7XG4gICAgdmFyIGRhdGEgPSBcInNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiLmNvbmNhdChiYXNlNjQpO1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gXCIvKiMgXCIuY29uY2F0KGRhdGEsIFwiICovXCIpO1xuICAgIHZhciBzb3VyY2VVUkxzID0gY3NzTWFwcGluZy5zb3VyY2VzLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICByZXR1cm4gXCIvKiMgc291cmNlVVJMPVwiLmNvbmNhdChjc3NNYXBwaW5nLnNvdXJjZVJvb3QgfHwgXCJcIikuY29uY2F0KHNvdXJjZSwgXCIgKi9cIik7XG4gICAgfSk7XG4gICAgcmV0dXJuIFtjb250ZW50XS5jb25jYXQoc291cmNlVVJMcykuY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIHJldHVybiBbY29udGVudF0uam9pbihcIlxcblwiKTtcbn07IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWRkTGVhZGluZ1plcm9zKG51bWJlciwgdGFyZ2V0TGVuZ3RoKSB7XG4gIHZhciBzaWduID0gbnVtYmVyIDwgMCA/ICctJyA6ICcnO1xuICB2YXIgb3V0cHV0ID0gTWF0aC5hYnMobnVtYmVyKS50b1N0cmluZygpO1xuICB3aGlsZSAob3V0cHV0Lmxlbmd0aCA8IHRhcmdldExlbmd0aCkge1xuICAgIG91dHB1dCA9ICcwJyArIG91dHB1dDtcbiAgfVxuICByZXR1cm4gc2lnbiArIG91dHB1dDtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhc3NpZ24odGFyZ2V0LCBvYmplY3QpIHtcbiAgaWYgKHRhcmdldCA9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYXNzaWduIHJlcXVpcmVzIHRoYXQgaW5wdXQgcGFyYW1ldGVyIG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCcpO1xuICB9XG4gIGZvciAodmFyIHByb3BlcnR5IGluIG9iamVjdCkge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSkpIHtcbiAgICAgIDtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSBvYmplY3RbcHJvcGVydHldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufSIsImltcG9ydCBhc3NpZ24gZnJvbSBcIi4uL2Fzc2lnbi9pbmRleC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY2xvbmVPYmplY3Qob2JqZWN0KSB7XG4gIHJldHVybiBhc3NpZ24oe30sIG9iamVjdCk7XG59IiwiaW1wb3J0IGRlZmF1bHRMb2NhbGUgZnJvbSBcIi4uLy4uL2xvY2FsZS9lbi1VUy9pbmRleC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZGVmYXVsdExvY2FsZTsiLCJ2YXIgZGVmYXVsdE9wdGlvbnMgPSB7fTtcbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0T3B0aW9ucygpIHtcbiAgcmV0dXJuIGRlZmF1bHRPcHRpb25zO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHNldERlZmF1bHRPcHRpb25zKG5ld09wdGlvbnMpIHtcbiAgZGVmYXVsdE9wdGlvbnMgPSBuZXdPcHRpb25zO1xufSIsImltcG9ydCBnZXRVVENEYXlPZlllYXIgZnJvbSBcIi4uLy4uLy4uL19saWIvZ2V0VVRDRGF5T2ZZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0VVRDSVNPV2VlayBmcm9tIFwiLi4vLi4vLi4vX2xpYi9nZXRVVENJU09XZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0VVRDSVNPV2Vla1llYXIgZnJvbSBcIi4uLy4uLy4uL19saWIvZ2V0VVRDSVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCBnZXRVVENXZWVrIGZyb20gXCIuLi8uLi8uLi9fbGliL2dldFVUQ1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCBnZXRVVENXZWVrWWVhciBmcm9tIFwiLi4vLi4vLi4vX2xpYi9nZXRVVENXZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IGFkZExlYWRpbmdaZXJvcyBmcm9tIFwiLi4vLi4vYWRkTGVhZGluZ1plcm9zL2luZGV4LmpzXCI7XG5pbXBvcnQgbGlnaHRGb3JtYXR0ZXJzIGZyb20gXCIuLi9saWdodEZvcm1hdHRlcnMvaW5kZXguanNcIjtcbnZhciBkYXlQZXJpb2RFbnVtID0ge1xuICBhbTogJ2FtJyxcbiAgcG06ICdwbScsXG4gIG1pZG5pZ2h0OiAnbWlkbmlnaHQnLFxuICBub29uOiAnbm9vbicsXG4gIG1vcm5pbmc6ICdtb3JuaW5nJyxcbiAgYWZ0ZXJub29uOiAnYWZ0ZXJub29uJyxcbiAgZXZlbmluZzogJ2V2ZW5pbmcnLFxuICBuaWdodDogJ25pZ2h0J1xufTtcbi8qXG4gKiB8ICAgICB8IFVuaXQgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFVuaXQgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8ICBhICB8IEFNLCBQTSAgICAgICAgICAgICAgICAgICAgICAgICB8ICBBKiB8IE1pbGxpc2Vjb25kcyBpbiBkYXkgICAgICAgICAgICB8XG4gKiB8ICBiICB8IEFNLCBQTSwgbm9vbiwgbWlkbmlnaHQgICAgICAgICB8ICBCICB8IEZsZXhpYmxlIGRheSBwZXJpb2QgICAgICAgICAgICB8XG4gKiB8ICBjICB8IFN0YW5kLWFsb25lIGxvY2FsIGRheSBvZiB3ZWVrICB8ICBDKiB8IExvY2FsaXplZCBob3VyIHcvIGRheSBwZXJpb2QgICB8XG4gKiB8ICBkICB8IERheSBvZiBtb250aCAgICAgICAgICAgICAgICAgICB8ICBEICB8IERheSBvZiB5ZWFyICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBlICB8IExvY2FsIGRheSBvZiB3ZWVrICAgICAgICAgICAgICB8ICBFICB8IERheSBvZiB3ZWVrICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBmICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBGKiB8IERheSBvZiB3ZWVrIGluIG1vbnRoICAgICAgICAgICB8XG4gKiB8ICBnKiB8IE1vZGlmaWVkIEp1bGlhbiBkYXkgICAgICAgICAgICB8ICBHICB8IEVyYSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBoICB8IEhvdXIgWzEtMTJdICAgICAgICAgICAgICAgICAgICB8ICBIICB8IEhvdXIgWzAtMjNdICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBpISB8IElTTyBkYXkgb2Ygd2VlayAgICAgICAgICAgICAgICB8ICBJISB8IElTTyB3ZWVrIG9mIHllYXIgICAgICAgICAgICAgICB8XG4gKiB8ICBqKiB8IExvY2FsaXplZCBob3VyIHcvIGRheSBwZXJpb2QgICB8ICBKKiB8IExvY2FsaXplZCBob3VyIHcvbyBkYXkgcGVyaW9kICB8XG4gKiB8ICBrICB8IEhvdXIgWzEtMjRdICAgICAgICAgICAgICAgICAgICB8ICBLICB8IEhvdXIgWzAtMTFdICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBsKiB8IChkZXByZWNhdGVkKSAgICAgICAgICAgICAgICAgICB8ICBMICB8IFN0YW5kLWFsb25lIG1vbnRoICAgICAgICAgICAgICB8XG4gKiB8ICBtICB8IE1pbnV0ZSAgICAgICAgICAgICAgICAgICAgICAgICB8ICBNICB8IE1vbnRoICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBuICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBOICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBvISB8IE9yZGluYWwgbnVtYmVyIG1vZGlmaWVyICAgICAgICB8ICBPICB8IFRpbWV6b25lIChHTVQpICAgICAgICAgICAgICAgICB8XG4gKiB8ICBwISB8IExvbmcgbG9jYWxpemVkIHRpbWUgICAgICAgICAgICB8ICBQISB8IExvbmcgbG9jYWxpemVkIGRhdGUgICAgICAgICAgICB8XG4gKiB8ICBxICB8IFN0YW5kLWFsb25lIHF1YXJ0ZXIgICAgICAgICAgICB8ICBRICB8IFF1YXJ0ZXIgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICByKiB8IFJlbGF0ZWQgR3JlZ29yaWFuIHllYXIgICAgICAgICB8ICBSISB8IElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgICB8XG4gKiB8ICBzICB8IFNlY29uZCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBTICB8IEZyYWN0aW9uIG9mIHNlY29uZCAgICAgICAgICAgICB8XG4gKiB8ICB0ISB8IFNlY29uZHMgdGltZXN0YW1wICAgICAgICAgICAgICB8ICBUISB8IE1pbGxpc2Vjb25kcyB0aW1lc3RhbXAgICAgICAgICB8XG4gKiB8ICB1ICB8IEV4dGVuZGVkIHllYXIgICAgICAgICAgICAgICAgICB8ICBVKiB8IEN5Y2xpYyB5ZWFyICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICB2KiB8IFRpbWV6b25lIChnZW5lcmljIG5vbi1sb2NhdC4pICB8ICBWKiB8IFRpbWV6b25lIChsb2NhdGlvbikgICAgICAgICAgICB8XG4gKiB8ICB3ICB8IExvY2FsIHdlZWsgb2YgeWVhciAgICAgICAgICAgICB8ICBXKiB8IFdlZWsgb2YgbW9udGggICAgICAgICAgICAgICAgICB8XG4gKiB8ICB4ICB8IFRpbWV6b25lIChJU08tODYwMSB3L28gWikgICAgICB8ICBYICB8IFRpbWV6b25lIChJU08tODYwMSkgICAgICAgICAgICB8XG4gKiB8ICB5ICB8IFllYXIgKGFicykgICAgICAgICAgICAgICAgICAgICB8ICBZICB8IExvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgICAgICB8XG4gKiB8ICB6ICB8IFRpbWV6b25lIChzcGVjaWZpYyBub24tbG9jYXQuKSB8ICBaKiB8IFRpbWV6b25lIChhbGlhc2VzKSAgICAgICAgICAgICB8XG4gKlxuICogTGV0dGVycyBtYXJrZWQgYnkgKiBhcmUgbm90IGltcGxlbWVudGVkIGJ1dCByZXNlcnZlZCBieSBVbmljb2RlIHN0YW5kYXJkLlxuICpcbiAqIExldHRlcnMgbWFya2VkIGJ5ICEgYXJlIG5vbi1zdGFuZGFyZCwgYnV0IGltcGxlbWVudGVkIGJ5IGRhdGUtZm5zOlxuICogLSBgb2AgbW9kaWZpZXMgdGhlIHByZXZpb3VzIHRva2VuIHRvIHR1cm4gaXQgaW50byBhbiBvcmRpbmFsIChzZWUgYGZvcm1hdGAgZG9jcylcbiAqIC0gYGlgIGlzIElTTyBkYXkgb2Ygd2Vlay4gRm9yIGBpYCBhbmQgYGlpYCBpcyByZXR1cm5zIG51bWVyaWMgSVNPIHdlZWsgZGF5cyxcbiAqICAgaS5lLiA3IGZvciBTdW5kYXksIDEgZm9yIE1vbmRheSwgZXRjLlxuICogLSBgSWAgaXMgSVNPIHdlZWsgb2YgeWVhciwgYXMgb3Bwb3NlZCB0byBgd2Agd2hpY2ggaXMgbG9jYWwgd2VlayBvZiB5ZWFyLlxuICogLSBgUmAgaXMgSVNPIHdlZWstbnVtYmVyaW5nIHllYXIsIGFzIG9wcG9zZWQgdG8gYFlgIHdoaWNoIGlzIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIuXG4gKiAgIGBSYCBpcyBzdXBwb3NlZCB0byBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYElgIGFuZCBgaWBcbiAqICAgZm9yIHVuaXZlcnNhbCBJU08gd2Vlay1udW1iZXJpbmcgZGF0ZSwgd2hlcmVhc1xuICogICBgWWAgaXMgc3VwcG9zZWQgdG8gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGB3YCBhbmQgYGVgXG4gKiAgIGZvciB3ZWVrLW51bWJlcmluZyBkYXRlIHNwZWNpZmljIHRvIHRoZSBsb2NhbGUuXG4gKiAtIGBQYCBpcyBsb25nIGxvY2FsaXplZCBkYXRlIGZvcm1hdFxuICogLSBgcGAgaXMgbG9uZyBsb2NhbGl6ZWQgdGltZSBmb3JtYXRcbiAqL1xuXG52YXIgZm9ybWF0dGVycyA9IHtcbiAgLy8gRXJhXG4gIEc6IGZ1bmN0aW9uIEcoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgdmFyIGVyYSA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKSA+IDAgPyAxIDogMDtcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyBBRCwgQkNcbiAgICAgIGNhc2UgJ0cnOlxuICAgICAgY2FzZSAnR0cnOlxuICAgICAgY2FzZSAnR0dHJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmVyYShlcmEsIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIEEsIEJcbiAgICAgIGNhc2UgJ0dHR0dHJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmVyYShlcmEsIHtcbiAgICAgICAgICB3aWR0aDogJ25hcnJvdydcbiAgICAgICAgfSk7XG4gICAgICAvLyBBbm5vIERvbWluaSwgQmVmb3JlIENocmlzdFxuICAgICAgY2FzZSAnR0dHRyc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZXJhKGVyYSwge1xuICAgICAgICAgIHdpZHRoOiAnd2lkZSdcbiAgICAgICAgfSk7XG4gICAgfVxuICB9LFxuICAvLyBZZWFyXG4gIHk6IGZ1bmN0aW9uIHkoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgLy8gT3JkaW5hbCBudW1iZXJcbiAgICBpZiAodG9rZW4gPT09ICd5bycpIHtcbiAgICAgIHZhciBzaWduZWRZZWFyID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgICAgLy8gUmV0dXJucyAxIGZvciAxIEJDICh3aGljaCBpcyB5ZWFyIDAgaW4gSmF2YVNjcmlwdClcbiAgICAgIHZhciB5ZWFyID0gc2lnbmVkWWVhciA+IDAgPyBzaWduZWRZZWFyIDogMSAtIHNpZ25lZFllYXI7XG4gICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcih5ZWFyLCB7XG4gICAgICAgIHVuaXQ6ICd5ZWFyJ1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBsaWdodEZvcm1hdHRlcnMueShkYXRlLCB0b2tlbik7XG4gIH0sXG4gIC8vIExvY2FsIHdlZWstbnVtYmVyaW5nIHllYXJcbiAgWTogZnVuY3Rpb24gWShkYXRlLCB0b2tlbiwgbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgc2lnbmVkV2Vla1llYXIgPSBnZXRVVENXZWVrWWVhcihkYXRlLCBvcHRpb25zKTtcbiAgICAvLyBSZXR1cm5zIDEgZm9yIDEgQkMgKHdoaWNoIGlzIHllYXIgMCBpbiBKYXZhU2NyaXB0KVxuICAgIHZhciB3ZWVrWWVhciA9IHNpZ25lZFdlZWtZZWFyID4gMCA/IHNpZ25lZFdlZWtZZWFyIDogMSAtIHNpZ25lZFdlZWtZZWFyO1xuXG4gICAgLy8gVHdvIGRpZ2l0IHllYXJcbiAgICBpZiAodG9rZW4gPT09ICdZWScpIHtcbiAgICAgIHZhciB0d29EaWdpdFllYXIgPSB3ZWVrWWVhciAlIDEwMDtcbiAgICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3ModHdvRGlnaXRZZWFyLCAyKTtcbiAgICB9XG5cbiAgICAvLyBPcmRpbmFsIG51bWJlclxuICAgIGlmICh0b2tlbiA9PT0gJ1lvJykge1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIod2Vla1llYXIsIHtcbiAgICAgICAgdW5pdDogJ3llYXInXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBQYWRkaW5nXG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyh3ZWVrWWVhciwgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbiAgLy8gSVNPIHdlZWstbnVtYmVyaW5nIHllYXJcbiAgUjogZnVuY3Rpb24gUihkYXRlLCB0b2tlbikge1xuICAgIHZhciBpc29XZWVrWWVhciA9IGdldFVUQ0lTT1dlZWtZZWFyKGRhdGUpO1xuXG4gICAgLy8gUGFkZGluZ1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoaXNvV2Vla1llYXIsIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIEV4dGVuZGVkIHllYXIuIFRoaXMgaXMgYSBzaW5nbGUgbnVtYmVyIGRlc2lnbmF0aW5nIHRoZSB5ZWFyIG9mIHRoaXMgY2FsZW5kYXIgc3lzdGVtLlxuICAvLyBUaGUgbWFpbiBkaWZmZXJlbmNlIGJldHdlZW4gYHlgIGFuZCBgdWAgbG9jYWxpemVycyBhcmUgQi5DLiB5ZWFyczpcbiAgLy8gfCBZZWFyIHwgYHlgIHwgYHVgIHxcbiAgLy8gfC0tLS0tLXwtLS0tLXwtLS0tLXxcbiAgLy8gfCBBQyAxIHwgICAxIHwgICAxIHxcbiAgLy8gfCBCQyAxIHwgICAxIHwgICAwIHxcbiAgLy8gfCBCQyAyIHwgICAyIHwgIC0xIHxcbiAgLy8gQWxzbyBgeXlgIGFsd2F5cyByZXR1cm5zIHRoZSBsYXN0IHR3byBkaWdpdHMgb2YgYSB5ZWFyLFxuICAvLyB3aGlsZSBgdXVgIHBhZHMgc2luZ2xlIGRpZ2l0IHllYXJzIHRvIDIgY2hhcmFjdGVycyBhbmQgcmV0dXJucyBvdGhlciB5ZWFycyB1bmNoYW5nZWQuXG4gIHU6IGZ1bmN0aW9uIHUoZGF0ZSwgdG9rZW4pIHtcbiAgICB2YXIgeWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKHllYXIsIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIFF1YXJ0ZXJcbiAgUTogZnVuY3Rpb24gUShkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgcXVhcnRlciA9IE1hdGguY2VpbCgoZGF0ZS5nZXRVVENNb250aCgpICsgMSkgLyAzKTtcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyAxLCAyLCAzLCA0XG4gICAgICBjYXNlICdRJzpcbiAgICAgICAgcmV0dXJuIFN0cmluZyhxdWFydGVyKTtcbiAgICAgIC8vIDAxLCAwMiwgMDMsIDA0XG4gICAgICBjYXNlICdRUSc6XG4gICAgICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MocXVhcnRlciwgMik7XG4gICAgICAvLyAxc3QsIDJuZCwgM3JkLCA0dGhcbiAgICAgIGNhc2UgJ1FvJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIocXVhcnRlciwge1xuICAgICAgICAgIHVuaXQ6ICdxdWFydGVyJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFExLCBRMiwgUTMsIFE0XG4gICAgICBjYXNlICdRUVEnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUucXVhcnRlcihxdWFydGVyLCB7XG4gICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgLy8gMSwgMiwgMywgNCAobmFycm93IHF1YXJ0ZXI7IGNvdWxkIGJlIG5vdCBudW1lcmljYWwpXG4gICAgICBjYXNlICdRUVFRUSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5xdWFydGVyKHF1YXJ0ZXIsIHtcbiAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgLy8gMXN0IHF1YXJ0ZXIsIDJuZCBxdWFydGVyLCAuLi5cbiAgICAgIGNhc2UgJ1FRUVEnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLnF1YXJ0ZXIocXVhcnRlciwge1xuICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgLy8gU3RhbmQtYWxvbmUgcXVhcnRlclxuICBxOiBmdW5jdGlvbiBxKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIHZhciBxdWFydGVyID0gTWF0aC5jZWlsKChkYXRlLmdldFVUQ01vbnRoKCkgKyAxKSAvIDMpO1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIDEsIDIsIDMsIDRcbiAgICAgIGNhc2UgJ3EnOlxuICAgICAgICByZXR1cm4gU3RyaW5nKHF1YXJ0ZXIpO1xuICAgICAgLy8gMDEsIDAyLCAwMywgMDRcbiAgICAgIGNhc2UgJ3FxJzpcbiAgICAgICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhxdWFydGVyLCAyKTtcbiAgICAgIC8vIDFzdCwgMm5kLCAzcmQsIDR0aFxuICAgICAgY2FzZSAncW8nOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihxdWFydGVyLCB7XG4gICAgICAgICAgdW5pdDogJ3F1YXJ0ZXInXG4gICAgICAgIH0pO1xuICAgICAgLy8gUTEsIFEyLCBRMywgUTRcbiAgICAgIGNhc2UgJ3FxcSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5xdWFydGVyKHF1YXJ0ZXIsIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgfSk7XG4gICAgICAvLyAxLCAyLCAzLCA0IChuYXJyb3cgcXVhcnRlcjsgY291bGQgYmUgbm90IG51bWVyaWNhbClcbiAgICAgIGNhc2UgJ3FxcXFxJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLnF1YXJ0ZXIocXVhcnRlciwge1xuICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgfSk7XG4gICAgICAvLyAxc3QgcXVhcnRlciwgMm5kIHF1YXJ0ZXIsIC4uLlxuICAgICAgY2FzZSAncXFxcSc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbG9jYWxpemUucXVhcnRlcihxdWFydGVyLCB7XG4gICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgfSk7XG4gICAgfVxuICB9LFxuICAvLyBNb250aFxuICBNOiBmdW5jdGlvbiBNKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIHZhciBtb250aCA9IGRhdGUuZ2V0VVRDTW9udGgoKTtcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICBjYXNlICdNJzpcbiAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgcmV0dXJuIGxpZ2h0Rm9ybWF0dGVycy5NKGRhdGUsIHRva2VuKTtcbiAgICAgIC8vIDFzdCwgMm5kLCAuLi4sIDEydGhcbiAgICAgIGNhc2UgJ01vJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIobW9udGggKyAxLCB7XG4gICAgICAgICAgdW5pdDogJ21vbnRoJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIEphbiwgRmViLCAuLi4sIERlY1xuICAgICAgY2FzZSAnTU1NJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm1vbnRoKG1vbnRoLCB7XG4gICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgLy8gSiwgRiwgLi4uLCBEXG4gICAgICBjYXNlICdNTU1NTSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5tb250aChtb250aCwge1xuICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICAvLyBKYW51YXJ5LCBGZWJydWFyeSwgLi4uLCBEZWNlbWJlclxuICAgICAgY2FzZSAnTU1NTSc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbG9jYWxpemUubW9udGgobW9udGgsIHtcbiAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIC8vIFN0YW5kLWFsb25lIG1vbnRoXG4gIEw6IGZ1bmN0aW9uIEwoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgdmFyIG1vbnRoID0gZGF0ZS5nZXRVVENNb250aCgpO1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIDEsIDIsIC4uLiwgMTJcbiAgICAgIGNhc2UgJ0wnOlxuICAgICAgICByZXR1cm4gU3RyaW5nKG1vbnRoICsgMSk7XG4gICAgICAvLyAwMSwgMDIsIC4uLiwgMTJcbiAgICAgIGNhc2UgJ0xMJzpcbiAgICAgICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhtb250aCArIDEsIDIpO1xuICAgICAgLy8gMXN0LCAybmQsIC4uLiwgMTJ0aFxuICAgICAgY2FzZSAnTG8nOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihtb250aCArIDEsIHtcbiAgICAgICAgICB1bml0OiAnbW9udGgnXG4gICAgICAgIH0pO1xuICAgICAgLy8gSmFuLCBGZWIsIC4uLiwgRGVjXG4gICAgICBjYXNlICdMTEwnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUubW9udGgobW9udGgsIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgfSk7XG4gICAgICAvLyBKLCBGLCAuLi4sIERcbiAgICAgIGNhc2UgJ0xMTExMJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm1vbnRoKG1vbnRoLCB7XG4gICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIEphbnVhcnksIEZlYnJ1YXJ5LCAuLi4sIERlY2VtYmVyXG4gICAgICBjYXNlICdMTExMJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5tb250aChtb250aCwge1xuICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgLy8gTG9jYWwgd2VlayBvZiB5ZWFyXG4gIHc6IGZ1bmN0aW9uIHcoZGF0ZSwgdG9rZW4sIGxvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIHdlZWsgPSBnZXRVVENXZWVrKGRhdGUsIG9wdGlvbnMpO1xuICAgIGlmICh0b2tlbiA9PT0gJ3dvJykge1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIod2Vlaywge1xuICAgICAgICB1bml0OiAnd2VlaydcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKHdlZWssIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIElTTyB3ZWVrIG9mIHllYXJcbiAgSTogZnVuY3Rpb24gSShkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgaXNvV2VlayA9IGdldFVUQ0lTT1dlZWsoZGF0ZSk7XG4gICAgaWYgKHRva2VuID09PSAnSW8nKSB7XG4gICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihpc29XZWVrLCB7XG4gICAgICAgIHVuaXQ6ICd3ZWVrJ1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoaXNvV2VlaywgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbiAgLy8gRGF5IG9mIHRoZSBtb250aFxuICBkOiBmdW5jdGlvbiBkKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIGlmICh0b2tlbiA9PT0gJ2RvJykge1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoZGF0ZS5nZXRVVENEYXRlKCksIHtcbiAgICAgICAgdW5pdDogJ2RhdGUnXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGxpZ2h0Rm9ybWF0dGVycy5kKGRhdGUsIHRva2VuKTtcbiAgfSxcbiAgLy8gRGF5IG9mIHllYXJcbiAgRDogZnVuY3Rpb24gRChkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgZGF5T2ZZZWFyID0gZ2V0VVRDRGF5T2ZZZWFyKGRhdGUpO1xuICAgIGlmICh0b2tlbiA9PT0gJ0RvJykge1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoZGF5T2ZZZWFyLCB7XG4gICAgICAgIHVuaXQ6ICdkYXlPZlllYXInXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhkYXlPZlllYXIsIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIERheSBvZiB3ZWVrXG4gIEU6IGZ1bmN0aW9uIEUoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgdmFyIGRheU9mV2VlayA9IGRhdGUuZ2V0VVRDRGF5KCk7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gVHVlXG4gICAgICBjYXNlICdFJzpcbiAgICAgIGNhc2UgJ0VFJzpcbiAgICAgIGNhc2UgJ0VFRSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgLy8gVFxuICAgICAgY2FzZSAnRUVFRUUnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICAvLyBUdVxuICAgICAgY2FzZSAnRUVFRUVFJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICAvLyBUdWVzZGF5XG4gICAgICBjYXNlICdFRUVFJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgfVxuICB9LFxuICAvLyBMb2NhbCBkYXkgb2Ygd2Vla1xuICBlOiBmdW5jdGlvbiBlKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSwgb3B0aW9ucykge1xuICAgIHZhciBkYXlPZldlZWsgPSBkYXRlLmdldFVUQ0RheSgpO1xuICAgIHZhciBsb2NhbERheU9mV2VlayA9IChkYXlPZldlZWsgLSBvcHRpb25zLndlZWtTdGFydHNPbiArIDgpICUgNyB8fCA3O1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIE51bWVyaWNhbCB2YWx1ZSAoTnRoIGRheSBvZiB3ZWVrIHdpdGggY3VycmVudCBsb2NhbGUgb3Igd2Vla1N0YXJ0c09uKVxuICAgICAgY2FzZSAnZSc6XG4gICAgICAgIHJldHVybiBTdHJpbmcobG9jYWxEYXlPZldlZWspO1xuICAgICAgLy8gUGFkZGVkIG51bWVyaWNhbCB2YWx1ZVxuICAgICAgY2FzZSAnZWUnOlxuICAgICAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGxvY2FsRGF5T2ZXZWVrLCAyKTtcbiAgICAgIC8vIDFzdCwgMm5kLCAuLi4sIDd0aFxuICAgICAgY2FzZSAnZW8nOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihsb2NhbERheU9mV2Vlaywge1xuICAgICAgICAgIHVuaXQ6ICdkYXknXG4gICAgICAgIH0pO1xuICAgICAgY2FzZSAnZWVlJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICAvLyBUXG4gICAgICBjYXNlICdlZWVlZSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFR1XG4gICAgICBjYXNlICdlZWVlZWUnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiAnc2hvcnQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFR1ZXNkYXlcbiAgICAgIGNhc2UgJ2VlZWUnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIC8vIFN0YW5kLWFsb25lIGxvY2FsIGRheSBvZiB3ZWVrXG4gIGM6IGZ1bmN0aW9uIGMoZGF0ZSwgdG9rZW4sIGxvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIGRheU9mV2VlayA9IGRhdGUuZ2V0VVRDRGF5KCk7XG4gICAgdmFyIGxvY2FsRGF5T2ZXZWVrID0gKGRheU9mV2VlayAtIG9wdGlvbnMud2Vla1N0YXJ0c09uICsgOCkgJSA3IHx8IDc7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gTnVtZXJpY2FsIHZhbHVlIChzYW1lIGFzIGluIGBlYClcbiAgICAgIGNhc2UgJ2MnOlxuICAgICAgICByZXR1cm4gU3RyaW5nKGxvY2FsRGF5T2ZXZWVrKTtcbiAgICAgIC8vIFBhZGRlZCBudW1lcmljYWwgdmFsdWVcbiAgICAgIGNhc2UgJ2NjJzpcbiAgICAgICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhsb2NhbERheU9mV2VlaywgdG9rZW4ubGVuZ3RoKTtcbiAgICAgIC8vIDFzdCwgMm5kLCAuLi4sIDd0aFxuICAgICAgY2FzZSAnY28nOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihsb2NhbERheU9mV2Vlaywge1xuICAgICAgICAgIHVuaXQ6ICdkYXknXG4gICAgICAgIH0pO1xuICAgICAgY2FzZSAnY2NjJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgfSk7XG4gICAgICAvLyBUXG4gICAgICBjYXNlICdjY2NjYyc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFR1XG4gICAgICBjYXNlICdjY2NjY2MnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiAnc2hvcnQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFR1ZXNkYXlcbiAgICAgIGNhc2UgJ2NjY2MnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIC8vIElTTyBkYXkgb2Ygd2Vla1xuICBpOiBmdW5jdGlvbiBpKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIHZhciBkYXlPZldlZWsgPSBkYXRlLmdldFVUQ0RheSgpO1xuICAgIHZhciBpc29EYXlPZldlZWsgPSBkYXlPZldlZWsgPT09IDAgPyA3IDogZGF5T2ZXZWVrO1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIDJcbiAgICAgIGNhc2UgJ2knOlxuICAgICAgICByZXR1cm4gU3RyaW5nKGlzb0RheU9mV2Vlayk7XG4gICAgICAvLyAwMlxuICAgICAgY2FzZSAnaWknOlxuICAgICAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGlzb0RheU9mV2VlaywgdG9rZW4ubGVuZ3RoKTtcbiAgICAgIC8vIDJuZFxuICAgICAgY2FzZSAnaW8nOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihpc29EYXlPZldlZWssIHtcbiAgICAgICAgICB1bml0OiAnZGF5J1xuICAgICAgICB9KTtcbiAgICAgIC8vIFR1ZVxuICAgICAgY2FzZSAnaWlpJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICAvLyBUXG4gICAgICBjYXNlICdpaWlpaSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFR1XG4gICAgICBjYXNlICdpaWlpaWknOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiAnc2hvcnQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFR1ZXNkYXlcbiAgICAgIGNhc2UgJ2lpaWknOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIC8vIEFNIG9yIFBNXG4gIGE6IGZ1bmN0aW9uIGEoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgdmFyIGhvdXJzID0gZGF0ZS5nZXRVVENIb3VycygpO1xuICAgIHZhciBkYXlQZXJpb2RFbnVtVmFsdWUgPSBob3VycyAvIDEyID49IDEgPyAncG0nIDogJ2FtJztcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICBjYXNlICdhJzpcbiAgICAgIGNhc2UgJ2FhJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICBjYXNlICdhYWEnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5UGVyaW9kKGRheVBlcmlvZEVudW1WYWx1ZSwge1xuICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KS50b0xvd2VyQ2FzZSgpO1xuICAgICAgY2FzZSAnYWFhYWEnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5UGVyaW9kKGRheVBlcmlvZEVudW1WYWx1ZSwge1xuICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICBjYXNlICdhYWFhJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7XG4gICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgfVxuICB9LFxuICAvLyBBTSwgUE0sIG1pZG5pZ2h0LCBub29uXG4gIGI6IGZ1bmN0aW9uIGIoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgdmFyIGhvdXJzID0gZGF0ZS5nZXRVVENIb3VycygpO1xuICAgIHZhciBkYXlQZXJpb2RFbnVtVmFsdWU7XG4gICAgaWYgKGhvdXJzID09PSAxMikge1xuICAgICAgZGF5UGVyaW9kRW51bVZhbHVlID0gZGF5UGVyaW9kRW51bS5ub29uO1xuICAgIH0gZWxzZSBpZiAoaG91cnMgPT09IDApIHtcbiAgICAgIGRheVBlcmlvZEVudW1WYWx1ZSA9IGRheVBlcmlvZEVudW0ubWlkbmlnaHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRheVBlcmlvZEVudW1WYWx1ZSA9IGhvdXJzIC8gMTIgPj0gMSA/ICdwbScgOiAnYW0nO1xuICAgIH1cbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICBjYXNlICdiJzpcbiAgICAgIGNhc2UgJ2JiJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICBjYXNlICdiYmInOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5UGVyaW9kKGRheVBlcmlvZEVudW1WYWx1ZSwge1xuICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KS50b0xvd2VyQ2FzZSgpO1xuICAgICAgY2FzZSAnYmJiYmInOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5UGVyaW9kKGRheVBlcmlvZEVudW1WYWx1ZSwge1xuICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICBjYXNlICdiYmJiJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7XG4gICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgfVxuICB9LFxuICAvLyBpbiB0aGUgbW9ybmluZywgaW4gdGhlIGFmdGVybm9vbiwgaW4gdGhlIGV2ZW5pbmcsIGF0IG5pZ2h0XG4gIEI6IGZ1bmN0aW9uIEIoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgdmFyIGhvdXJzID0gZGF0ZS5nZXRVVENIb3VycygpO1xuICAgIHZhciBkYXlQZXJpb2RFbnVtVmFsdWU7XG4gICAgaWYgKGhvdXJzID49IDE3KSB7XG4gICAgICBkYXlQZXJpb2RFbnVtVmFsdWUgPSBkYXlQZXJpb2RFbnVtLmV2ZW5pbmc7XG4gICAgfSBlbHNlIGlmIChob3VycyA+PSAxMikge1xuICAgICAgZGF5UGVyaW9kRW51bVZhbHVlID0gZGF5UGVyaW9kRW51bS5hZnRlcm5vb247XG4gICAgfSBlbHNlIGlmIChob3VycyA+PSA0KSB7XG4gICAgICBkYXlQZXJpb2RFbnVtVmFsdWUgPSBkYXlQZXJpb2RFbnVtLm1vcm5pbmc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRheVBlcmlvZEVudW1WYWx1ZSA9IGRheVBlcmlvZEVudW0ubmlnaHQ7XG4gICAgfVxuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIGNhc2UgJ0InOlxuICAgICAgY2FzZSAnQkInOlxuICAgICAgY2FzZSAnQkJCJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICBjYXNlICdCQkJCQic6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7XG4gICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIGNhc2UgJ0JCQkInOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHtcbiAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIC8vIEhvdXIgWzEtMTJdXG4gIGg6IGZ1bmN0aW9uIGgoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgaWYgKHRva2VuID09PSAnaG8nKSB7XG4gICAgICB2YXIgaG91cnMgPSBkYXRlLmdldFVUQ0hvdXJzKCkgJSAxMjtcbiAgICAgIGlmIChob3VycyA9PT0gMCkgaG91cnMgPSAxMjtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGhvdXJzLCB7XG4gICAgICAgIHVuaXQ6ICdob3VyJ1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBsaWdodEZvcm1hdHRlcnMuaChkYXRlLCB0b2tlbik7XG4gIH0sXG4gIC8vIEhvdXIgWzAtMjNdXG4gIEg6IGZ1bmN0aW9uIEgoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgaWYgKHRva2VuID09PSAnSG8nKSB7XG4gICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihkYXRlLmdldFVUQ0hvdXJzKCksIHtcbiAgICAgICAgdW5pdDogJ2hvdXInXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGxpZ2h0Rm9ybWF0dGVycy5IKGRhdGUsIHRva2VuKTtcbiAgfSxcbiAgLy8gSG91ciBbMC0xMV1cbiAgSzogZnVuY3Rpb24gSyhkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgaG91cnMgPSBkYXRlLmdldFVUQ0hvdXJzKCkgJSAxMjtcbiAgICBpZiAodG9rZW4gPT09ICdLbycpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGhvdXJzLCB7XG4gICAgICAgIHVuaXQ6ICdob3VyJ1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoaG91cnMsIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIEhvdXIgWzEtMjRdXG4gIGs6IGZ1bmN0aW9uIGsoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgdmFyIGhvdXJzID0gZGF0ZS5nZXRVVENIb3VycygpO1xuICAgIGlmIChob3VycyA9PT0gMCkgaG91cnMgPSAyNDtcbiAgICBpZiAodG9rZW4gPT09ICdrbycpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGhvdXJzLCB7XG4gICAgICAgIHVuaXQ6ICdob3VyJ1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoaG91cnMsIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIE1pbnV0ZVxuICBtOiBmdW5jdGlvbiBtKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIGlmICh0b2tlbiA9PT0gJ21vJykge1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoZGF0ZS5nZXRVVENNaW51dGVzKCksIHtcbiAgICAgICAgdW5pdDogJ21pbnV0ZSdcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbGlnaHRGb3JtYXR0ZXJzLm0oZGF0ZSwgdG9rZW4pO1xuICB9LFxuICAvLyBTZWNvbmRcbiAgczogZnVuY3Rpb24gcyhkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICBpZiAodG9rZW4gPT09ICdzbycpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGRhdGUuZ2V0VVRDU2Vjb25kcygpLCB7XG4gICAgICAgIHVuaXQ6ICdzZWNvbmQnXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGxpZ2h0Rm9ybWF0dGVycy5zKGRhdGUsIHRva2VuKTtcbiAgfSxcbiAgLy8gRnJhY3Rpb24gb2Ygc2Vjb25kXG4gIFM6IGZ1bmN0aW9uIFMoZGF0ZSwgdG9rZW4pIHtcbiAgICByZXR1cm4gbGlnaHRGb3JtYXR0ZXJzLlMoZGF0ZSwgdG9rZW4pO1xuICB9LFxuICAvLyBUaW1lem9uZSAoSVNPLTg2MDEuIElmIG9mZnNldCBpcyAwLCBvdXRwdXQgaXMgYWx3YXlzIGAnWidgKVxuICBYOiBmdW5jdGlvbiBYKGRhdGUsIHRva2VuLCBfbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgb3JpZ2luYWxEYXRlID0gb3B0aW9ucy5fb3JpZ2luYWxEYXRlIHx8IGRhdGU7XG4gICAgdmFyIHRpbWV6b25lT2Zmc2V0ID0gb3JpZ2luYWxEYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gICAgaWYgKHRpbWV6b25lT2Zmc2V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gJ1onO1xuICAgIH1cbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyBIb3VycyBhbmQgb3B0aW9uYWwgbWludXRlc1xuICAgICAgY2FzZSAnWCc6XG4gICAgICAgIHJldHVybiBmb3JtYXRUaW1lem9uZVdpdGhPcHRpb25hbE1pbnV0ZXModGltZXpvbmVPZmZzZXQpO1xuXG4gICAgICAvLyBIb3VycywgbWludXRlcyBhbmQgb3B0aW9uYWwgc2Vjb25kcyB3aXRob3V0IGA6YCBkZWxpbWl0ZXJcbiAgICAgIC8vIE5vdGU6IG5laXRoZXIgSVNPLTg2MDEgbm9yIEphdmFTY3JpcHQgc3VwcG9ydHMgc2Vjb25kcyBpbiB0aW1lem9uZSBvZmZzZXRzXG4gICAgICAvLyBzbyB0aGlzIHRva2VuIGFsd2F5cyBoYXMgdGhlIHNhbWUgb3V0cHV0IGFzIGBYWGBcbiAgICAgIGNhc2UgJ1hYWFgnOlxuICAgICAgY2FzZSAnWFgnOlxuICAgICAgICAvLyBIb3VycyBhbmQgbWludXRlcyB3aXRob3V0IGA6YCBkZWxpbWl0ZXJcbiAgICAgICAgcmV0dXJuIGZvcm1hdFRpbWV6b25lKHRpbWV6b25lT2Zmc2V0KTtcblxuICAgICAgLy8gSG91cnMsIG1pbnV0ZXMgYW5kIG9wdGlvbmFsIHNlY29uZHMgd2l0aCBgOmAgZGVsaW1pdGVyXG4gICAgICAvLyBOb3RlOiBuZWl0aGVyIElTTy04NjAxIG5vciBKYXZhU2NyaXB0IHN1cHBvcnRzIHNlY29uZHMgaW4gdGltZXpvbmUgb2Zmc2V0c1xuICAgICAgLy8gc28gdGhpcyB0b2tlbiBhbHdheXMgaGFzIHRoZSBzYW1lIG91dHB1dCBhcyBgWFhYYFxuICAgICAgY2FzZSAnWFhYWFgnOlxuICAgICAgY2FzZSAnWFhYJzogLy8gSG91cnMgYW5kIG1pbnV0ZXMgd2l0aCBgOmAgZGVsaW1pdGVyXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZm9ybWF0VGltZXpvbmUodGltZXpvbmVPZmZzZXQsICc6Jyk7XG4gICAgfVxuICB9LFxuICAvLyBUaW1lem9uZSAoSVNPLTg2MDEuIElmIG9mZnNldCBpcyAwLCBvdXRwdXQgaXMgYCcrMDA6MDAnYCBvciBlcXVpdmFsZW50KVxuICB4OiBmdW5jdGlvbiB4KGRhdGUsIHRva2VuLCBfbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgb3JpZ2luYWxEYXRlID0gb3B0aW9ucy5fb3JpZ2luYWxEYXRlIHx8IGRhdGU7XG4gICAgdmFyIHRpbWV6b25lT2Zmc2V0ID0gb3JpZ2luYWxEYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gSG91cnMgYW5kIG9wdGlvbmFsIG1pbnV0ZXNcbiAgICAgIGNhc2UgJ3gnOlxuICAgICAgICByZXR1cm4gZm9ybWF0VGltZXpvbmVXaXRoT3B0aW9uYWxNaW51dGVzKHRpbWV6b25lT2Zmc2V0KTtcblxuICAgICAgLy8gSG91cnMsIG1pbnV0ZXMgYW5kIG9wdGlvbmFsIHNlY29uZHMgd2l0aG91dCBgOmAgZGVsaW1pdGVyXG4gICAgICAvLyBOb3RlOiBuZWl0aGVyIElTTy04NjAxIG5vciBKYXZhU2NyaXB0IHN1cHBvcnRzIHNlY29uZHMgaW4gdGltZXpvbmUgb2Zmc2V0c1xuICAgICAgLy8gc28gdGhpcyB0b2tlbiBhbHdheXMgaGFzIHRoZSBzYW1lIG91dHB1dCBhcyBgeHhgXG4gICAgICBjYXNlICd4eHh4JzpcbiAgICAgIGNhc2UgJ3h4JzpcbiAgICAgICAgLy8gSG91cnMgYW5kIG1pbnV0ZXMgd2l0aG91dCBgOmAgZGVsaW1pdGVyXG4gICAgICAgIHJldHVybiBmb3JtYXRUaW1lem9uZSh0aW1lem9uZU9mZnNldCk7XG5cbiAgICAgIC8vIEhvdXJzLCBtaW51dGVzIGFuZCBvcHRpb25hbCBzZWNvbmRzIHdpdGggYDpgIGRlbGltaXRlclxuICAgICAgLy8gTm90ZTogbmVpdGhlciBJU08tODYwMSBub3IgSmF2YVNjcmlwdCBzdXBwb3J0cyBzZWNvbmRzIGluIHRpbWV6b25lIG9mZnNldHNcbiAgICAgIC8vIHNvIHRoaXMgdG9rZW4gYWx3YXlzIGhhcyB0aGUgc2FtZSBvdXRwdXQgYXMgYHh4eGBcbiAgICAgIGNhc2UgJ3h4eHh4JzpcbiAgICAgIGNhc2UgJ3h4eCc6IC8vIEhvdXJzIGFuZCBtaW51dGVzIHdpdGggYDpgIGRlbGltaXRlclxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZvcm1hdFRpbWV6b25lKHRpbWV6b25lT2Zmc2V0LCAnOicpO1xuICAgIH1cbiAgfSxcbiAgLy8gVGltZXpvbmUgKEdNVClcbiAgTzogZnVuY3Rpb24gTyhkYXRlLCB0b2tlbiwgX2xvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIG9yaWdpbmFsRGF0ZSA9IG9wdGlvbnMuX29yaWdpbmFsRGF0ZSB8fCBkYXRlO1xuICAgIHZhciB0aW1lem9uZU9mZnNldCA9IG9yaWdpbmFsRGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpO1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIFNob3J0XG4gICAgICBjYXNlICdPJzpcbiAgICAgIGNhc2UgJ09PJzpcbiAgICAgIGNhc2UgJ09PTyc6XG4gICAgICAgIHJldHVybiAnR01UJyArIGZvcm1hdFRpbWV6b25lU2hvcnQodGltZXpvbmVPZmZzZXQsICc6Jyk7XG4gICAgICAvLyBMb25nXG4gICAgICBjYXNlICdPT09PJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnR01UJyArIGZvcm1hdFRpbWV6b25lKHRpbWV6b25lT2Zmc2V0LCAnOicpO1xuICAgIH1cbiAgfSxcbiAgLy8gVGltZXpvbmUgKHNwZWNpZmljIG5vbi1sb2NhdGlvbilcbiAgejogZnVuY3Rpb24geihkYXRlLCB0b2tlbiwgX2xvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIG9yaWdpbmFsRGF0ZSA9IG9wdGlvbnMuX29yaWdpbmFsRGF0ZSB8fCBkYXRlO1xuICAgIHZhciB0aW1lem9uZU9mZnNldCA9IG9yaWdpbmFsRGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpO1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIFNob3J0XG4gICAgICBjYXNlICd6JzpcbiAgICAgIGNhc2UgJ3p6JzpcbiAgICAgIGNhc2UgJ3p6eic6XG4gICAgICAgIHJldHVybiAnR01UJyArIGZvcm1hdFRpbWV6b25lU2hvcnQodGltZXpvbmVPZmZzZXQsICc6Jyk7XG4gICAgICAvLyBMb25nXG4gICAgICBjYXNlICd6enp6JzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnR01UJyArIGZvcm1hdFRpbWV6b25lKHRpbWV6b25lT2Zmc2V0LCAnOicpO1xuICAgIH1cbiAgfSxcbiAgLy8gU2Vjb25kcyB0aW1lc3RhbXBcbiAgdDogZnVuY3Rpb24gdChkYXRlLCB0b2tlbiwgX2xvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIG9yaWdpbmFsRGF0ZSA9IG9wdGlvbnMuX29yaWdpbmFsRGF0ZSB8fCBkYXRlO1xuICAgIHZhciB0aW1lc3RhbXAgPSBNYXRoLmZsb29yKG9yaWdpbmFsRGF0ZS5nZXRUaW1lKCkgLyAxMDAwKTtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKHRpbWVzdGFtcCwgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbiAgLy8gTWlsbGlzZWNvbmRzIHRpbWVzdGFtcFxuICBUOiBmdW5jdGlvbiBUKGRhdGUsIHRva2VuLCBfbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgb3JpZ2luYWxEYXRlID0gb3B0aW9ucy5fb3JpZ2luYWxEYXRlIHx8IGRhdGU7XG4gICAgdmFyIHRpbWVzdGFtcCA9IG9yaWdpbmFsRGF0ZS5nZXRUaW1lKCk7XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyh0aW1lc3RhbXAsIHRva2VuLmxlbmd0aCk7XG4gIH1cbn07XG5mdW5jdGlvbiBmb3JtYXRUaW1lem9uZVNob3J0KG9mZnNldCwgZGlydHlEZWxpbWl0ZXIpIHtcbiAgdmFyIHNpZ24gPSBvZmZzZXQgPiAwID8gJy0nIDogJysnO1xuICB2YXIgYWJzT2Zmc2V0ID0gTWF0aC5hYnMob2Zmc2V0KTtcbiAgdmFyIGhvdXJzID0gTWF0aC5mbG9vcihhYnNPZmZzZXQgLyA2MCk7XG4gIHZhciBtaW51dGVzID0gYWJzT2Zmc2V0ICUgNjA7XG4gIGlmIChtaW51dGVzID09PSAwKSB7XG4gICAgcmV0dXJuIHNpZ24gKyBTdHJpbmcoaG91cnMpO1xuICB9XG4gIHZhciBkZWxpbWl0ZXIgPSBkaXJ0eURlbGltaXRlciB8fCAnJztcbiAgcmV0dXJuIHNpZ24gKyBTdHJpbmcoaG91cnMpICsgZGVsaW1pdGVyICsgYWRkTGVhZGluZ1plcm9zKG1pbnV0ZXMsIDIpO1xufVxuZnVuY3Rpb24gZm9ybWF0VGltZXpvbmVXaXRoT3B0aW9uYWxNaW51dGVzKG9mZnNldCwgZGlydHlEZWxpbWl0ZXIpIHtcbiAgaWYgKG9mZnNldCAlIDYwID09PSAwKSB7XG4gICAgdmFyIHNpZ24gPSBvZmZzZXQgPiAwID8gJy0nIDogJysnO1xuICAgIHJldHVybiBzaWduICsgYWRkTGVhZGluZ1plcm9zKE1hdGguYWJzKG9mZnNldCkgLyA2MCwgMik7XG4gIH1cbiAgcmV0dXJuIGZvcm1hdFRpbWV6b25lKG9mZnNldCwgZGlydHlEZWxpbWl0ZXIpO1xufVxuZnVuY3Rpb24gZm9ybWF0VGltZXpvbmUob2Zmc2V0LCBkaXJ0eURlbGltaXRlcikge1xuICB2YXIgZGVsaW1pdGVyID0gZGlydHlEZWxpbWl0ZXIgfHwgJyc7XG4gIHZhciBzaWduID0gb2Zmc2V0ID4gMCA/ICctJyA6ICcrJztcbiAgdmFyIGFic09mZnNldCA9IE1hdGguYWJzKG9mZnNldCk7XG4gIHZhciBob3VycyA9IGFkZExlYWRpbmdaZXJvcyhNYXRoLmZsb29yKGFic09mZnNldCAvIDYwKSwgMik7XG4gIHZhciBtaW51dGVzID0gYWRkTGVhZGluZ1plcm9zKGFic09mZnNldCAlIDYwLCAyKTtcbiAgcmV0dXJuIHNpZ24gKyBob3VycyArIGRlbGltaXRlciArIG1pbnV0ZXM7XG59XG5leHBvcnQgZGVmYXVsdCBmb3JtYXR0ZXJzOyIsImltcG9ydCBhZGRMZWFkaW5nWmVyb3MgZnJvbSBcIi4uLy4uL2FkZExlYWRpbmdaZXJvcy9pbmRleC5qc1wiO1xuLypcbiAqIHwgICAgIHwgVW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgVW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgIGEgIHwgQU0sIFBNICAgICAgICAgICAgICAgICAgICAgICAgIHwgIEEqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIGQgIHwgRGF5IG9mIG1vbnRoICAgICAgICAgICAgICAgICAgIHwgIEQgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIGggIHwgSG91ciBbMS0xMl0gICAgICAgICAgICAgICAgICAgIHwgIEggIHwgSG91ciBbMC0yM10gICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIG0gIHwgTWludXRlICAgICAgICAgICAgICAgICAgICAgICAgIHwgIE0gIHwgTW9udGggICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIHMgIHwgU2Vjb25kICAgICAgICAgICAgICAgICAgICAgICAgIHwgIFMgIHwgRnJhY3Rpb24gb2Ygc2Vjb25kICAgICAgICAgICAgIHxcbiAqIHwgIHkgIHwgWWVhciAoYWJzKSAgICAgICAgICAgICAgICAgICAgIHwgIFkgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqXG4gKiBMZXR0ZXJzIG1hcmtlZCBieSAqIGFyZSBub3QgaW1wbGVtZW50ZWQgYnV0IHJlc2VydmVkIGJ5IFVuaWNvZGUgc3RhbmRhcmQuXG4gKi9cbnZhciBmb3JtYXR0ZXJzID0ge1xuICAvLyBZZWFyXG4gIHk6IGZ1bmN0aW9uIHkoZGF0ZSwgdG9rZW4pIHtcbiAgICAvLyBGcm9tIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjM1L3RyMzUtMzEvdHIzNS1kYXRlcy5odG1sI0RhdGVfRm9ybWF0X3Rva2Vuc1xuICAgIC8vIHwgWWVhciAgICAgfCAgICAgeSB8IHl5IHwgICB5eXkgfCAgeXl5eSB8IHl5eXl5IHxcbiAgICAvLyB8LS0tLS0tLS0tLXwtLS0tLS0tfC0tLS18LS0tLS0tLXwtLS0tLS0tfC0tLS0tLS18XG4gICAgLy8gfCBBRCAxICAgICB8ICAgICAxIHwgMDEgfCAgIDAwMSB8ICAwMDAxIHwgMDAwMDEgfFxuICAgIC8vIHwgQUQgMTIgICAgfCAgICAxMiB8IDEyIHwgICAwMTIgfCAgMDAxMiB8IDAwMDEyIHxcbiAgICAvLyB8IEFEIDEyMyAgIHwgICAxMjMgfCAyMyB8ICAgMTIzIHwgIDAxMjMgfCAwMDEyMyB8XG4gICAgLy8gfCBBRCAxMjM0ICB8ICAxMjM0IHwgMzQgfCAgMTIzNCB8ICAxMjM0IHwgMDEyMzQgfFxuICAgIC8vIHwgQUQgMTIzNDUgfCAxMjM0NSB8IDQ1IHwgMTIzNDUgfCAxMjM0NSB8IDEyMzQ1IHxcblxuICAgIHZhciBzaWduZWRZZWFyID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgIC8vIFJldHVybnMgMSBmb3IgMSBCQyAod2hpY2ggaXMgeWVhciAwIGluIEphdmFTY3JpcHQpXG4gICAgdmFyIHllYXIgPSBzaWduZWRZZWFyID4gMCA/IHNpZ25lZFllYXIgOiAxIC0gc2lnbmVkWWVhcjtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKHRva2VuID09PSAneXknID8geWVhciAlIDEwMCA6IHllYXIsIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIE1vbnRoXG4gIE06IGZ1bmN0aW9uIE0oZGF0ZSwgdG9rZW4pIHtcbiAgICB2YXIgbW9udGggPSBkYXRlLmdldFVUQ01vbnRoKCk7XG4gICAgcmV0dXJuIHRva2VuID09PSAnTScgPyBTdHJpbmcobW9udGggKyAxKSA6IGFkZExlYWRpbmdaZXJvcyhtb250aCArIDEsIDIpO1xuICB9LFxuICAvLyBEYXkgb2YgdGhlIG1vbnRoXG4gIGQ6IGZ1bmN0aW9uIGQoZGF0ZSwgdG9rZW4pIHtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGRhdGUuZ2V0VVRDRGF0ZSgpLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuICAvLyBBTSBvciBQTVxuICBhOiBmdW5jdGlvbiBhKGRhdGUsIHRva2VuKSB7XG4gICAgdmFyIGRheVBlcmlvZEVudW1WYWx1ZSA9IGRhdGUuZ2V0VVRDSG91cnMoKSAvIDEyID49IDEgPyAncG0nIDogJ2FtJztcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICBjYXNlICdhJzpcbiAgICAgIGNhc2UgJ2FhJzpcbiAgICAgICAgcmV0dXJuIGRheVBlcmlvZEVudW1WYWx1ZS50b1VwcGVyQ2FzZSgpO1xuICAgICAgY2FzZSAnYWFhJzpcbiAgICAgICAgcmV0dXJuIGRheVBlcmlvZEVudW1WYWx1ZTtcbiAgICAgIGNhc2UgJ2FhYWFhJzpcbiAgICAgICAgcmV0dXJuIGRheVBlcmlvZEVudW1WYWx1ZVswXTtcbiAgICAgIGNhc2UgJ2FhYWEnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGRheVBlcmlvZEVudW1WYWx1ZSA9PT0gJ2FtJyA/ICdhLm0uJyA6ICdwLm0uJztcbiAgICB9XG4gIH0sXG4gIC8vIEhvdXIgWzEtMTJdXG4gIGg6IGZ1bmN0aW9uIGgoZGF0ZSwgdG9rZW4pIHtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGRhdGUuZ2V0VVRDSG91cnMoKSAlIDEyIHx8IDEyLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuICAvLyBIb3VyIFswLTIzXVxuICBIOiBmdW5jdGlvbiBIKGRhdGUsIHRva2VuKSB7XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhkYXRlLmdldFVUQ0hvdXJzKCksIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIE1pbnV0ZVxuICBtOiBmdW5jdGlvbiBtKGRhdGUsIHRva2VuKSB7XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhkYXRlLmdldFVUQ01pbnV0ZXMoKSwgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbiAgLy8gU2Vjb25kXG4gIHM6IGZ1bmN0aW9uIHMoZGF0ZSwgdG9rZW4pIHtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGRhdGUuZ2V0VVRDU2Vjb25kcygpLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuICAvLyBGcmFjdGlvbiBvZiBzZWNvbmRcbiAgUzogZnVuY3Rpb24gUyhkYXRlLCB0b2tlbikge1xuICAgIHZhciBudW1iZXJPZkRpZ2l0cyA9IHRva2VuLmxlbmd0aDtcbiAgICB2YXIgbWlsbGlzZWNvbmRzID0gZGF0ZS5nZXRVVENNaWxsaXNlY29uZHMoKTtcbiAgICB2YXIgZnJhY3Rpb25hbFNlY29uZHMgPSBNYXRoLmZsb29yKG1pbGxpc2Vjb25kcyAqIE1hdGgucG93KDEwLCBudW1iZXJPZkRpZ2l0cyAtIDMpKTtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGZyYWN0aW9uYWxTZWNvbmRzLCB0b2tlbi5sZW5ndGgpO1xuICB9XG59O1xuZXhwb3J0IGRlZmF1bHQgZm9ybWF0dGVyczsiLCJ2YXIgZGF0ZUxvbmdGb3JtYXR0ZXIgPSBmdW5jdGlvbiBkYXRlTG9uZ0Zvcm1hdHRlcihwYXR0ZXJuLCBmb3JtYXRMb25nKSB7XG4gIHN3aXRjaCAocGF0dGVybikge1xuICAgIGNhc2UgJ1AnOlxuICAgICAgcmV0dXJuIGZvcm1hdExvbmcuZGF0ZSh7XG4gICAgICAgIHdpZHRoOiAnc2hvcnQnXG4gICAgICB9KTtcbiAgICBjYXNlICdQUCc6XG4gICAgICByZXR1cm4gZm9ybWF0TG9uZy5kYXRlKHtcbiAgICAgICAgd2lkdGg6ICdtZWRpdW0nXG4gICAgICB9KTtcbiAgICBjYXNlICdQUFAnOlxuICAgICAgcmV0dXJuIGZvcm1hdExvbmcuZGF0ZSh7XG4gICAgICAgIHdpZHRoOiAnbG9uZydcbiAgICAgIH0pO1xuICAgIGNhc2UgJ1BQUFAnOlxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZm9ybWF0TG9uZy5kYXRlKHtcbiAgICAgICAgd2lkdGg6ICdmdWxsJ1xuICAgICAgfSk7XG4gIH1cbn07XG52YXIgdGltZUxvbmdGb3JtYXR0ZXIgPSBmdW5jdGlvbiB0aW1lTG9uZ0Zvcm1hdHRlcihwYXR0ZXJuLCBmb3JtYXRMb25nKSB7XG4gIHN3aXRjaCAocGF0dGVybikge1xuICAgIGNhc2UgJ3AnOlxuICAgICAgcmV0dXJuIGZvcm1hdExvbmcudGltZSh7XG4gICAgICAgIHdpZHRoOiAnc2hvcnQnXG4gICAgICB9KTtcbiAgICBjYXNlICdwcCc6XG4gICAgICByZXR1cm4gZm9ybWF0TG9uZy50aW1lKHtcbiAgICAgICAgd2lkdGg6ICdtZWRpdW0nXG4gICAgICB9KTtcbiAgICBjYXNlICdwcHAnOlxuICAgICAgcmV0dXJuIGZvcm1hdExvbmcudGltZSh7XG4gICAgICAgIHdpZHRoOiAnbG9uZydcbiAgICAgIH0pO1xuICAgIGNhc2UgJ3BwcHAnOlxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZm9ybWF0TG9uZy50aW1lKHtcbiAgICAgICAgd2lkdGg6ICdmdWxsJ1xuICAgICAgfSk7XG4gIH1cbn07XG52YXIgZGF0ZVRpbWVMb25nRm9ybWF0dGVyID0gZnVuY3Rpb24gZGF0ZVRpbWVMb25nRm9ybWF0dGVyKHBhdHRlcm4sIGZvcm1hdExvbmcpIHtcbiAgdmFyIG1hdGNoUmVzdWx0ID0gcGF0dGVybi5tYXRjaCgvKFArKShwKyk/LykgfHwgW107XG4gIHZhciBkYXRlUGF0dGVybiA9IG1hdGNoUmVzdWx0WzFdO1xuICB2YXIgdGltZVBhdHRlcm4gPSBtYXRjaFJlc3VsdFsyXTtcbiAgaWYgKCF0aW1lUGF0dGVybikge1xuICAgIHJldHVybiBkYXRlTG9uZ0Zvcm1hdHRlcihwYXR0ZXJuLCBmb3JtYXRMb25nKTtcbiAgfVxuICB2YXIgZGF0ZVRpbWVGb3JtYXQ7XG4gIHN3aXRjaCAoZGF0ZVBhdHRlcm4pIHtcbiAgICBjYXNlICdQJzpcbiAgICAgIGRhdGVUaW1lRm9ybWF0ID0gZm9ybWF0TG9uZy5kYXRlVGltZSh7XG4gICAgICAgIHdpZHRoOiAnc2hvcnQnXG4gICAgICB9KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ1BQJzpcbiAgICAgIGRhdGVUaW1lRm9ybWF0ID0gZm9ybWF0TG9uZy5kYXRlVGltZSh7XG4gICAgICAgIHdpZHRoOiAnbWVkaXVtJ1xuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdQUFAnOlxuICAgICAgZGF0ZVRpbWVGb3JtYXQgPSBmb3JtYXRMb25nLmRhdGVUaW1lKHtcbiAgICAgICAgd2lkdGg6ICdsb25nJ1xuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdQUFBQJzpcbiAgICBkZWZhdWx0OlxuICAgICAgZGF0ZVRpbWVGb3JtYXQgPSBmb3JtYXRMb25nLmRhdGVUaW1lKHtcbiAgICAgICAgd2lkdGg6ICdmdWxsJ1xuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gZGF0ZVRpbWVGb3JtYXQucmVwbGFjZSgne3tkYXRlfX0nLCBkYXRlTG9uZ0Zvcm1hdHRlcihkYXRlUGF0dGVybiwgZm9ybWF0TG9uZykpLnJlcGxhY2UoJ3t7dGltZX19JywgdGltZUxvbmdGb3JtYXR0ZXIodGltZVBhdHRlcm4sIGZvcm1hdExvbmcpKTtcbn07XG52YXIgbG9uZ0Zvcm1hdHRlcnMgPSB7XG4gIHA6IHRpbWVMb25nRm9ybWF0dGVyLFxuICBQOiBkYXRlVGltZUxvbmdGb3JtYXR0ZXJcbn07XG5leHBvcnQgZGVmYXVsdCBsb25nRm9ybWF0dGVyczsiLCIvKipcbiAqIEdvb2dsZSBDaHJvbWUgYXMgb2YgNjcuMC4zMzk2Ljg3IGludHJvZHVjZWQgdGltZXpvbmVzIHdpdGggb2Zmc2V0IHRoYXQgaW5jbHVkZXMgc2Vjb25kcy5cbiAqIFRoZXkgdXN1YWxseSBhcHBlYXIgZm9yIGRhdGVzIHRoYXQgZGVub3RlIHRpbWUgYmVmb3JlIHRoZSB0aW1lem9uZXMgd2VyZSBpbnRyb2R1Y2VkXG4gKiAoZS5nLiBmb3IgJ0V1cm9wZS9QcmFndWUnIHRpbWV6b25lIHRoZSBvZmZzZXQgaXMgR01UKzAwOjU3OjQ0IGJlZm9yZSAxIE9jdG9iZXIgMTg5MVxuICogYW5kIEdNVCswMTowMDowMCBhZnRlciB0aGF0IGRhdGUpXG4gKlxuICogRGF0ZSNnZXRUaW1lem9uZU9mZnNldCByZXR1cm5zIHRoZSBvZmZzZXQgaW4gbWludXRlcyBhbmQgd291bGQgcmV0dXJuIDU3IGZvciB0aGUgZXhhbXBsZSBhYm92ZSxcbiAqIHdoaWNoIHdvdWxkIGxlYWQgdG8gaW5jb3JyZWN0IGNhbGN1bGF0aW9ucy5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRpbWV6b25lIG9mZnNldCBpbiBtaWxsaXNlY29uZHMgdGhhdCB0YWtlcyBzZWNvbmRzIGluIGFjY291bnQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoZGF0ZSkge1xuICB2YXIgdXRjRGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSwgZGF0ZS5nZXRIb3VycygpLCBkYXRlLmdldE1pbnV0ZXMoKSwgZGF0ZS5nZXRTZWNvbmRzKCksIGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkpKTtcbiAgdXRjRGF0ZS5zZXRVVENGdWxsWWVhcihkYXRlLmdldEZ1bGxZZWFyKCkpO1xuICByZXR1cm4gZGF0ZS5nZXRUaW1lKCkgLSB1dGNEYXRlLmdldFRpbWUoKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi8uLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xudmFyIE1JTExJU0VDT05EU19JTl9EQVkgPSA4NjQwMDAwMDtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFVUQ0RheU9mWWVhcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciB0aW1lc3RhbXAgPSBkYXRlLmdldFRpbWUoKTtcbiAgZGF0ZS5zZXRVVENNb250aCgwLCAxKTtcbiAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgdmFyIHN0YXJ0T2ZZZWFyVGltZXN0YW1wID0gZGF0ZS5nZXRUaW1lKCk7XG4gIHZhciBkaWZmZXJlbmNlID0gdGltZXN0YW1wIC0gc3RhcnRPZlllYXJUaW1lc3RhbXA7XG4gIHJldHVybiBNYXRoLmZsb29yKGRpZmZlcmVuY2UgLyBNSUxMSVNFQ09ORFNfSU5fREFZKSArIDE7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZlVUQ0lTT1dlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZVVENJU09XZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZlVUQ0lTT1dlZWtZZWFyIGZyb20gXCIuLi9zdGFydE9mVVRDSVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xudmFyIE1JTExJU0VDT05EU19JTl9XRUVLID0gNjA0ODAwMDAwO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VVRDSVNPV2VlayhkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkaWZmID0gc3RhcnRPZlVUQ0lTT1dlZWsoZGF0ZSkuZ2V0VGltZSgpIC0gc3RhcnRPZlVUQ0lTT1dlZWtZZWFyKGRhdGUpLmdldFRpbWUoKTtcblxuICAvLyBSb3VuZCB0aGUgbnVtYmVyIG9mIGRheXMgdG8gdGhlIG5lYXJlc3QgaW50ZWdlclxuICAvLyBiZWNhdXNlIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGluIGEgd2VlayBpcyBub3QgY29uc3RhbnRcbiAgLy8gKGUuZy4gaXQncyBkaWZmZXJlbnQgaW4gdGhlIHdlZWsgb2YgdGhlIGRheWxpZ2h0IHNhdmluZyB0aW1lIGNsb2NrIHNoaWZ0KVxuICByZXR1cm4gTWF0aC5yb3VuZChkaWZmIC8gTUlMTElTRUNPTkRTX0lOX1dFRUspICsgMTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi8uLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZVVENJU09XZWVrIGZyb20gXCIuLi9zdGFydE9mVVRDSVNPV2Vlay9pbmRleC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VVRDSVNPV2Vla1llYXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgeWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgdmFyIGZvdXJ0aE9mSmFudWFyeU9mTmV4dFllYXIgPSBuZXcgRGF0ZSgwKTtcbiAgZm91cnRoT2ZKYW51YXJ5T2ZOZXh0WWVhci5zZXRVVENGdWxsWWVhcih5ZWFyICsgMSwgMCwgNCk7XG4gIGZvdXJ0aE9mSmFudWFyeU9mTmV4dFllYXIuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBzdGFydE9mTmV4dFllYXIgPSBzdGFydE9mVVRDSVNPV2Vlayhmb3VydGhPZkphbnVhcnlPZk5leHRZZWFyKTtcbiAgdmFyIGZvdXJ0aE9mSmFudWFyeU9mVGhpc1llYXIgPSBuZXcgRGF0ZSgwKTtcbiAgZm91cnRoT2ZKYW51YXJ5T2ZUaGlzWWVhci5zZXRVVENGdWxsWWVhcih5ZWFyLCAwLCA0KTtcbiAgZm91cnRoT2ZKYW51YXJ5T2ZUaGlzWWVhci5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgdmFyIHN0YXJ0T2ZUaGlzWWVhciA9IHN0YXJ0T2ZVVENJU09XZWVrKGZvdXJ0aE9mSmFudWFyeU9mVGhpc1llYXIpO1xuICBpZiAoZGF0ZS5nZXRUaW1lKCkgPj0gc3RhcnRPZk5leHRZZWFyLmdldFRpbWUoKSkge1xuICAgIHJldHVybiB5ZWFyICsgMTtcbiAgfSBlbHNlIGlmIChkYXRlLmdldFRpbWUoKSA+PSBzdGFydE9mVGhpc1llYXIuZ2V0VGltZSgpKSB7XG4gICAgcmV0dXJuIHllYXI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHllYXIgLSAxO1xuICB9XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZlVUQ1dlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZVVENXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZlVUQ1dlZWtZZWFyIGZyb20gXCIuLi9zdGFydE9mVVRDV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xudmFyIE1JTExJU0VDT05EU19JTl9XRUVLID0gNjA0ODAwMDAwO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VVRDV2VlayhkaXJ0eURhdGUsIG9wdGlvbnMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkaWZmID0gc3RhcnRPZlVUQ1dlZWsoZGF0ZSwgb3B0aW9ucykuZ2V0VGltZSgpIC0gc3RhcnRPZlVUQ1dlZWtZZWFyKGRhdGUsIG9wdGlvbnMpLmdldFRpbWUoKTtcblxuICAvLyBSb3VuZCB0aGUgbnVtYmVyIG9mIGRheXMgdG8gdGhlIG5lYXJlc3QgaW50ZWdlclxuICAvLyBiZWNhdXNlIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGluIGEgd2VlayBpcyBub3QgY29uc3RhbnRcbiAgLy8gKGUuZy4gaXQncyBkaWZmZXJlbnQgaW4gdGhlIHdlZWsgb2YgdGhlIGRheWxpZ2h0IHNhdmluZyB0aW1lIGNsb2NrIHNoaWZ0KVxuICByZXR1cm4gTWF0aC5yb3VuZChkaWZmIC8gTUlMTElTRUNPTkRTX0lOX1dFRUspICsgMTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi8uLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZVVENXZWVrIGZyb20gXCIuLi9zdGFydE9mVVRDV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuLi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VVRDV2Vla1llYXIoZGlydHlEYXRlLCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfcmVmMiwgX3JlZjMsIF9vcHRpb25zJGZpcnN0V2Vla0NvbiwgX29wdGlvbnMkbG9jYWxlLCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8sIF9kZWZhdWx0T3B0aW9ucyRsb2NhbCwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMjtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciB5ZWFyID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICB2YXIgZmlyc3RXZWVrQ29udGFpbnNEYXRlID0gdG9JbnRlZ2VyKChfcmVmID0gKF9yZWYyID0gKF9yZWYzID0gKF9vcHRpb25zJGZpcnN0V2Vla0NvbiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9vcHRpb25zJGZpcnN0V2Vla0NvbiAhPT0gdm9pZCAwID8gX29wdGlvbnMkZmlyc3RXZWVrQ29uIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9IF9vcHRpb25zJGxvY2FsZS5vcHRpb25zKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb25zJGxvY2FsZSRvcHRpby5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYzICE9PSB2b2lkIDAgPyBfcmVmMyA6IGRlZmF1bHRPcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZjIgIT09IHZvaWQgMCA/IF9yZWYyIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IDEpO1xuXG4gIC8vIFRlc3QgaWYgd2Vla1N0YXJ0c09uIGlzIGJldHdlZW4gMSBhbmQgNyBfYW5kXyBpcyBub3QgTmFOXG4gIGlmICghKGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA+PSAxICYmIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA8PSA3KSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdmaXJzdFdlZWtDb250YWluc0RhdGUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDcgaW5jbHVzaXZlbHknKTtcbiAgfVxuICB2YXIgZmlyc3RXZWVrT2ZOZXh0WWVhciA9IG5ldyBEYXRlKDApO1xuICBmaXJzdFdlZWtPZk5leHRZZWFyLnNldFVUQ0Z1bGxZZWFyKHllYXIgKyAxLCAwLCBmaXJzdFdlZWtDb250YWluc0RhdGUpO1xuICBmaXJzdFdlZWtPZk5leHRZZWFyLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgc3RhcnRPZk5leHRZZWFyID0gc3RhcnRPZlVUQ1dlZWsoZmlyc3RXZWVrT2ZOZXh0WWVhciwgb3B0aW9ucyk7XG4gIHZhciBmaXJzdFdlZWtPZlRoaXNZZWFyID0gbmV3IERhdGUoMCk7XG4gIGZpcnN0V2Vla09mVGhpc1llYXIuc2V0VVRDRnVsbFllYXIoeWVhciwgMCwgZmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgZmlyc3RXZWVrT2ZUaGlzWWVhci5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgdmFyIHN0YXJ0T2ZUaGlzWWVhciA9IHN0YXJ0T2ZVVENXZWVrKGZpcnN0V2Vla09mVGhpc1llYXIsIG9wdGlvbnMpO1xuICBpZiAoZGF0ZS5nZXRUaW1lKCkgPj0gc3RhcnRPZk5leHRZZWFyLmdldFRpbWUoKSkge1xuICAgIHJldHVybiB5ZWFyICsgMTtcbiAgfSBlbHNlIGlmIChkYXRlLmdldFRpbWUoKSA+PSBzdGFydE9mVGhpc1llYXIuZ2V0VGltZSgpKSB7XG4gICAgcmV0dXJuIHllYXI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHllYXIgLSAxO1xuICB9XG59IiwidmFyIHByb3RlY3RlZERheU9mWWVhclRva2VucyA9IFsnRCcsICdERCddO1xudmFyIHByb3RlY3RlZFdlZWtZZWFyVG9rZW5zID0gWydZWScsICdZWVlZJ107XG5leHBvcnQgZnVuY3Rpb24gaXNQcm90ZWN0ZWREYXlPZlllYXJUb2tlbih0b2tlbikge1xuICByZXR1cm4gcHJvdGVjdGVkRGF5T2ZZZWFyVG9rZW5zLmluZGV4T2YodG9rZW4pICE9PSAtMTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb3RlY3RlZFdlZWtZZWFyVG9rZW4odG9rZW4pIHtcbiAgcmV0dXJuIHByb3RlY3RlZFdlZWtZZWFyVG9rZW5zLmluZGV4T2YodG9rZW4pICE9PSAtMTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd1Byb3RlY3RlZEVycm9yKHRva2VuLCBmb3JtYXQsIGlucHV0KSB7XG4gIGlmICh0b2tlbiA9PT0gJ1lZWVknKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJVc2UgYHl5eXlgIGluc3RlYWQgb2YgYFlZWVlgIChpbiBgXCIuY29uY2F0KGZvcm1hdCwgXCJgKSBmb3IgZm9ybWF0dGluZyB5ZWFycyB0byB0aGUgaW5wdXQgYFwiKS5jb25jYXQoaW5wdXQsIFwiYDsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXCIpKTtcbiAgfSBlbHNlIGlmICh0b2tlbiA9PT0gJ1lZJykge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiVXNlIGB5eWAgaW5zdGVhZCBvZiBgWVlgIChpbiBgXCIuY29uY2F0KGZvcm1hdCwgXCJgKSBmb3IgZm9ybWF0dGluZyB5ZWFycyB0byB0aGUgaW5wdXQgYFwiKS5jb25jYXQoaW5wdXQsIFwiYDsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXCIpKTtcbiAgfSBlbHNlIGlmICh0b2tlbiA9PT0gJ0QnKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJVc2UgYGRgIGluc3RlYWQgb2YgYERgIChpbiBgXCIuY29uY2F0KGZvcm1hdCwgXCJgKSBmb3IgZm9ybWF0dGluZyBkYXlzIG9mIHRoZSBtb250aCB0byB0aGUgaW5wdXQgYFwiKS5jb25jYXQoaW5wdXQsIFwiYDsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXCIpKTtcbiAgfSBlbHNlIGlmICh0b2tlbiA9PT0gJ0REJykge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiVXNlIGBkZGAgaW5zdGVhZCBvZiBgRERgIChpbiBgXCIuY29uY2F0KGZvcm1hdCwgXCJgKSBmb3IgZm9ybWF0dGluZyBkYXlzIG9mIHRoZSBtb250aCB0byB0aGUgaW5wdXQgYFwiKS5jb25jYXQoaW5wdXQsIFwiYDsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXCIpKTtcbiAgfVxufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlcXVpcmVkQXJncyhyZXF1aXJlZCwgYXJncykge1xuICBpZiAoYXJncy5sZW5ndGggPCByZXF1aXJlZCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocmVxdWlyZWQgKyAnIGFyZ3VtZW50JyArIChyZXF1aXJlZCA+IDEgPyAncycgOiAnJykgKyAnIHJlcXVpcmVkLCBidXQgb25seSAnICsgYXJncy5sZW5ndGggKyAnIHByZXNlbnQnKTtcbiAgfVxufSIsInZhciByb3VuZGluZ01hcCA9IHtcbiAgY2VpbDogTWF0aC5jZWlsLFxuICByb3VuZDogTWF0aC5yb3VuZCxcbiAgZmxvb3I6IE1hdGguZmxvb3IsXG4gIHRydW5jOiBmdW5jdGlvbiB0cnVuYyh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA8IDAgPyBNYXRoLmNlaWwodmFsdWUpIDogTWF0aC5mbG9vcih2YWx1ZSk7XG4gIH0gLy8gTWF0aC50cnVuYyBpcyBub3Qgc3VwcG9ydGVkIGJ5IElFXG59O1xuXG52YXIgZGVmYXVsdFJvdW5kaW5nTWV0aG9kID0gJ3RydW5jJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRSb3VuZGluZ01ldGhvZChtZXRob2QpIHtcbiAgcmV0dXJuIG1ldGhvZCA/IHJvdW5kaW5nTWFwW21ldGhvZF0gOiByb3VuZGluZ01hcFtkZWZhdWx0Um91bmRpbmdNZXRob2RdO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uLy4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRVVENEYXkoZGlydHlEYXRlLCBkaXJ0eURheSwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX3JlZjIsIF9yZWYzLCBfb3B0aW9ucyR3ZWVrU3RhcnRzT24sIF9vcHRpb25zJGxvY2FsZSwgX29wdGlvbnMkbG9jYWxlJG9wdGlvLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDI7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICB2YXIgd2Vla1N0YXJ0c09uID0gdG9JbnRlZ2VyKChfcmVmID0gKF9yZWYyID0gKF9yZWYzID0gKF9vcHRpb25zJHdlZWtTdGFydHNPbiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9vcHRpb25zJHdlZWtTdGFydHNPbiAhPT0gdm9pZCAwID8gX29wdGlvbnMkd2Vla1N0YXJ0c09uIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9IF9vcHRpb25zJGxvY2FsZS5vcHRpb25zKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb25zJGxvY2FsZSRvcHRpby53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYzICE9PSB2b2lkIDAgPyBfcmVmMyA6IGRlZmF1bHRPcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjIgIT09IHZvaWQgMCA/IF9yZWYyIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IDApO1xuXG4gIC8vIFRlc3QgaWYgd2Vla1N0YXJ0c09uIGlzIGJldHdlZW4gMCBhbmQgNiBfYW5kXyBpcyBub3QgTmFOXG4gIGlmICghKHdlZWtTdGFydHNPbiA+PSAwICYmIHdlZWtTdGFydHNPbiA8PSA2KSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd3ZWVrU3RhcnRzT24gbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYgaW5jbHVzaXZlbHknKTtcbiAgfVxuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGF5ID0gdG9JbnRlZ2VyKGRpcnR5RGF5KTtcbiAgdmFyIGN1cnJlbnREYXkgPSBkYXRlLmdldFVUQ0RheSgpO1xuICB2YXIgcmVtYWluZGVyID0gZGF5ICUgNztcbiAgdmFyIGRheUluZGV4ID0gKHJlbWFpbmRlciArIDcpICUgNztcbiAgdmFyIGRpZmYgPSAoZGF5SW5kZXggPCB3ZWVrU3RhcnRzT24gPyA3IDogMCkgKyBkYXkgLSBjdXJyZW50RGF5O1xuICBkYXRlLnNldFVUQ0RhdGUoZGF0ZS5nZXRVVENEYXRlKCkgKyBkaWZmKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0VVRDSVNPRGF5KGRpcnR5RGF0ZSwgZGlydHlEYXkpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXkgPSB0b0ludGVnZXIoZGlydHlEYXkpO1xuICBpZiAoZGF5ICUgNyA9PT0gMCkge1xuICAgIGRheSA9IGRheSAtIDc7XG4gIH1cbiAgdmFyIHdlZWtTdGFydHNPbiA9IDE7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBjdXJyZW50RGF5ID0gZGF0ZS5nZXRVVENEYXkoKTtcbiAgdmFyIHJlbWFpbmRlciA9IGRheSAlIDc7XG4gIHZhciBkYXlJbmRleCA9IChyZW1haW5kZXIgKyA3KSAlIDc7XG4gIHZhciBkaWZmID0gKGRheUluZGV4IDwgd2Vla1N0YXJ0c09uID8gNyA6IDApICsgZGF5IC0gY3VycmVudERheTtcbiAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpICsgZGlmZik7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0VVRDSVNPV2VlayBmcm9tIFwiLi4vZ2V0VVRDSVNPV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRVVENJU09XZWVrKGRpcnR5RGF0ZSwgZGlydHlJU09XZWVrKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgaXNvV2VlayA9IHRvSW50ZWdlcihkaXJ0eUlTT1dlZWspO1xuICB2YXIgZGlmZiA9IGdldFVUQ0lTT1dlZWsoZGF0ZSkgLSBpc29XZWVrO1xuICBkYXRlLnNldFVUQ0RhdGUoZGF0ZS5nZXRVVENEYXRlKCkgLSBkaWZmICogNyk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0VVRDV2VlayBmcm9tIFwiLi4vZ2V0VVRDV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRVVENXZWVrKGRpcnR5RGF0ZSwgZGlydHlXZWVrLCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgd2VlayA9IHRvSW50ZWdlcihkaXJ0eVdlZWspO1xuICB2YXIgZGlmZiA9IGdldFVUQ1dlZWsoZGF0ZSwgb3B0aW9ucykgLSB3ZWVrO1xuICBkYXRlLnNldFVUQ0RhdGUoZGF0ZS5nZXRVVENEYXRlKCkgLSBkaWZmICogNyk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uLy4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mVVRDSVNPV2VlayhkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciB3ZWVrU3RhcnRzT24gPSAxO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGF5ID0gZGF0ZS5nZXRVVENEYXkoKTtcbiAgdmFyIGRpZmYgPSAoZGF5IDwgd2Vla1N0YXJ0c09uID8gNyA6IDApICsgZGF5IC0gd2Vla1N0YXJ0c09uO1xuICBkYXRlLnNldFVUQ0RhdGUoZGF0ZS5nZXRVVENEYXRlKCkgLSBkaWZmKTtcbiAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IGdldFVUQ0lTT1dlZWtZZWFyIGZyb20gXCIuLi9nZXRVVENJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZVVENJU09XZWVrIGZyb20gXCIuLi9zdGFydE9mVVRDSVNPV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mVVRDSVNPV2Vla1llYXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgeWVhciA9IGdldFVUQ0lTT1dlZWtZZWFyKGRpcnR5RGF0ZSk7XG4gIHZhciBmb3VydGhPZkphbnVhcnkgPSBuZXcgRGF0ZSgwKTtcbiAgZm91cnRoT2ZKYW51YXJ5LnNldFVUQ0Z1bGxZZWFyKHllYXIsIDAsIDQpO1xuICBmb3VydGhPZkphbnVhcnkuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBkYXRlID0gc3RhcnRPZlVUQ0lTT1dlZWsoZm91cnRoT2ZKYW51YXJ5KTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZVVENXZWVrKGRpcnR5RGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX3JlZjIsIF9yZWYzLCBfb3B0aW9ucyR3ZWVrU3RhcnRzT24sIF9vcHRpb25zJGxvY2FsZSwgX29wdGlvbnMkbG9jYWxlJG9wdGlvLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDI7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICB2YXIgd2Vla1N0YXJ0c09uID0gdG9JbnRlZ2VyKChfcmVmID0gKF9yZWYyID0gKF9yZWYzID0gKF9vcHRpb25zJHdlZWtTdGFydHNPbiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9vcHRpb25zJHdlZWtTdGFydHNPbiAhPT0gdm9pZCAwID8gX29wdGlvbnMkd2Vla1N0YXJ0c09uIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9IF9vcHRpb25zJGxvY2FsZS5vcHRpb25zKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb25zJGxvY2FsZSRvcHRpby53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYzICE9PSB2b2lkIDAgPyBfcmVmMyA6IGRlZmF1bHRPcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjIgIT09IHZvaWQgMCA/IF9yZWYyIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IDApO1xuXG4gIC8vIFRlc3QgaWYgd2Vla1N0YXJ0c09uIGlzIGJldHdlZW4gMCBhbmQgNiBfYW5kXyBpcyBub3QgTmFOXG4gIGlmICghKHdlZWtTdGFydHNPbiA+PSAwICYmIHdlZWtTdGFydHNPbiA8PSA2KSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd3ZWVrU3RhcnRzT24gbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYgaW5jbHVzaXZlbHknKTtcbiAgfVxuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGF5ID0gZGF0ZS5nZXRVVENEYXkoKTtcbiAgdmFyIGRpZmYgPSAoZGF5IDwgd2Vla1N0YXJ0c09uID8gNyA6IDApICsgZGF5IC0gd2Vla1N0YXJ0c09uO1xuICBkYXRlLnNldFVUQ0RhdGUoZGF0ZS5nZXRVVENEYXRlKCkgLSBkaWZmKTtcbiAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IGdldFVUQ1dlZWtZZWFyIGZyb20gXCIuLi9nZXRVVENXZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZlVUQ1dlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZVVENXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mVVRDV2Vla1llYXIoZGlydHlEYXRlLCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfcmVmMiwgX3JlZjMsIF9vcHRpb25zJGZpcnN0V2Vla0NvbiwgX29wdGlvbnMkbG9jYWxlLCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8sIF9kZWZhdWx0T3B0aW9ucyRsb2NhbCwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMjtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIHZhciBmaXJzdFdlZWtDb250YWluc0RhdGUgPSB0b0ludGVnZXIoKF9yZWYgPSAoX3JlZjIgPSAoX3JlZjMgPSAoX29wdGlvbnMkZmlyc3RXZWVrQ29uID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX29wdGlvbnMkZmlyc3RXZWVrQ29uICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRmaXJzdFdlZWtDb24gOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUgPSBvcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlJG9wdGlvID0gX29wdGlvbnMkbG9jYWxlLm9wdGlvbnMpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX29wdGlvbnMkbG9jYWxlJG9wdGlvLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZjMgIT09IHZvaWQgMCA/IF9yZWYzIDogZGVmYXVsdE9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdm9pZCAwID8gX3JlZjIgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsID0gZGVmYXVsdE9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID0gX2RlZmF1bHRPcHRpb25zJGxvY2FsLm9wdGlvbnMpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB2b2lkIDAgPyBfcmVmIDogMSk7XG4gIHZhciB5ZWFyID0gZ2V0VVRDV2Vla1llYXIoZGlydHlEYXRlLCBvcHRpb25zKTtcbiAgdmFyIGZpcnN0V2VlayA9IG5ldyBEYXRlKDApO1xuICBmaXJzdFdlZWsuc2V0VVRDRnVsbFllYXIoeWVhciwgMCwgZmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgZmlyc3RXZWVrLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgZGF0ZSA9IHN0YXJ0T2ZVVENXZWVrKGZpcnN0V2Vlaywgb3B0aW9ucyk7XG4gIHJldHVybiBkYXRlO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvSW50ZWdlcihkaXJ0eU51bWJlcikge1xuICBpZiAoZGlydHlOdW1iZXIgPT09IG51bGwgfHwgZGlydHlOdW1iZXIgPT09IHRydWUgfHwgZGlydHlOdW1iZXIgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxuICB2YXIgbnVtYmVyID0gTnVtYmVyKGRpcnR5TnVtYmVyKTtcbiAgaWYgKGlzTmFOKG51bWJlcikpIHtcbiAgICByZXR1cm4gbnVtYmVyO1xuICB9XG4gIHJldHVybiBudW1iZXIgPCAwID8gTWF0aC5jZWlsKG51bWJlcikgOiBNYXRoLmZsb29yKG51bWJlcik7XG59IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZlwiO1xuaW1wb3J0IGFkZERheXMgZnJvbSBcIi4uL2FkZERheXMvaW5kZXguanNcIjtcbmltcG9ydCBhZGRNb250aHMgZnJvbSBcIi4uL2FkZE1vbnRocy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgYWRkXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3VycywgbWludXRlcyBhbmQgc2Vjb25kcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3VycywgbWludXRlcyBhbmQgc2Vjb25kcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtEdXJhdGlvbn0gZHVyYXRpb24gLSB0aGUgb2JqZWN0IHdpdGggeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMsIGhvdXJzLCBtaW51dGVzIGFuZCBzZWNvbmRzIHRvIGJlIGFkZGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKlxuICogfCBLZXkgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCB5ZWFycyAgICAgICAgICB8IEFtb3VudCBvZiB5ZWFycyB0byBiZSBhZGRlZCAgICAgICAgfFxuICogfCBtb250aHMgICAgICAgICB8IEFtb3VudCBvZiBtb250aHMgdG8gYmUgYWRkZWQgICAgICAgfFxuICogfCB3ZWVrcyAgICAgICAgICB8IEFtb3VudCBvZiB3ZWVrcyB0byBiZSBhZGRlZCAgICAgICAgfFxuICogfCBkYXlzICAgICAgICAgICB8IEFtb3VudCBvZiBkYXlzIHRvIGJlIGFkZGVkICAgICAgICAgfFxuICogfCBob3VycyAgICAgICAgICB8IEFtb3VudCBvZiBob3VycyB0byBiZSBhZGRlZCAgICAgICAgfFxuICogfCBtaW51dGVzICAgICAgICB8IEFtb3VudCBvZiBtaW51dGVzIHRvIGJlIGFkZGVkICAgICAgfFxuICogfCBzZWNvbmRzICAgICAgICB8IEFtb3VudCBvZiBzZWNvbmRzIHRvIGJlIGFkZGVkICAgICAgfFxuICpcbiAqIEFsbCB2YWx1ZXMgZGVmYXVsdCB0byAwXG4gKlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBzZWNvbmRzIGFkZGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCB0aGUgZm9sbG93aW5nIGR1cmF0aW9uIHRvIDEgU2VwdGVtYmVyIDIwMTQsIDEwOjE5OjUwXG4gKiBjb25zdCByZXN1bHQgPSBhZGQobmV3IERhdGUoMjAxNCwgOCwgMSwgMTAsIDE5LCA1MCksIHtcbiAqICAgeWVhcnM6IDIsXG4gKiAgIG1vbnRoczogOSxcbiAqICAgd2Vla3M6IDEsXG4gKiAgIGRheXM6IDcsXG4gKiAgIGhvdXJzOiA1LFxuICogICBtaW51dGVzOiA5LFxuICogICBzZWNvbmRzOiAzMCxcbiAqIH0pXG4gKiAvLz0+IFRodSBKdW4gMTUgMjAxNyAxNToyOToyMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGQoZGlydHlEYXRlLCBkdXJhdGlvbikge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgaWYgKCFkdXJhdGlvbiB8fCBfdHlwZW9mKGR1cmF0aW9uKSAhPT0gJ29iamVjdCcpIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB2YXIgeWVhcnMgPSBkdXJhdGlvbi55ZWFycyA/IHRvSW50ZWdlcihkdXJhdGlvbi55ZWFycykgOiAwO1xuICB2YXIgbW9udGhzID0gZHVyYXRpb24ubW9udGhzID8gdG9JbnRlZ2VyKGR1cmF0aW9uLm1vbnRocykgOiAwO1xuICB2YXIgd2Vla3MgPSBkdXJhdGlvbi53ZWVrcyA/IHRvSW50ZWdlcihkdXJhdGlvbi53ZWVrcykgOiAwO1xuICB2YXIgZGF5cyA9IGR1cmF0aW9uLmRheXMgPyB0b0ludGVnZXIoZHVyYXRpb24uZGF5cykgOiAwO1xuICB2YXIgaG91cnMgPSBkdXJhdGlvbi5ob3VycyA/IHRvSW50ZWdlcihkdXJhdGlvbi5ob3VycykgOiAwO1xuICB2YXIgbWludXRlcyA9IGR1cmF0aW9uLm1pbnV0ZXMgPyB0b0ludGVnZXIoZHVyYXRpb24ubWludXRlcykgOiAwO1xuICB2YXIgc2Vjb25kcyA9IGR1cmF0aW9uLnNlY29uZHMgPyB0b0ludGVnZXIoZHVyYXRpb24uc2Vjb25kcykgOiAwO1xuXG4gIC8vIEFkZCB5ZWFycyBhbmQgbW9udGhzXG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkYXRlV2l0aE1vbnRocyA9IG1vbnRocyB8fCB5ZWFycyA/IGFkZE1vbnRocyhkYXRlLCBtb250aHMgKyB5ZWFycyAqIDEyKSA6IGRhdGU7XG5cbiAgLy8gQWRkIHdlZWtzIGFuZCBkYXlzXG4gIHZhciBkYXRlV2l0aERheXMgPSBkYXlzIHx8IHdlZWtzID8gYWRkRGF5cyhkYXRlV2l0aE1vbnRocywgZGF5cyArIHdlZWtzICogNykgOiBkYXRlV2l0aE1vbnRocztcblxuICAvLyBBZGQgZGF5cywgaG91cnMsIG1pbnV0ZXMgYW5kIHNlY29uZHNcbiAgdmFyIG1pbnV0ZXNUb0FkZCA9IG1pbnV0ZXMgKyBob3VycyAqIDYwO1xuICB2YXIgc2Vjb25kc1RvQWRkID0gc2Vjb25kcyArIG1pbnV0ZXNUb0FkZCAqIDYwO1xuICB2YXIgbXNUb0FkZCA9IHNlY29uZHNUb0FkZCAqIDEwMDA7XG4gIHZhciBmaW5hbERhdGUgPSBuZXcgRGF0ZShkYXRlV2l0aERheXMuZ2V0VGltZSgpICsgbXNUb0FkZCk7XG4gIHJldHVybiBmaW5hbERhdGU7XG59IiwiaW1wb3J0IGlzV2Vla2VuZCBmcm9tIFwiLi4vaXNXZWVrZW5kL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IGlzU3VuZGF5IGZyb20gXCIuLi9pc1N1bmRheS9pbmRleC5qc1wiO1xuaW1wb3J0IGlzU2F0dXJkYXkgZnJvbSBcIi4uL2lzU2F0dXJkYXkvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgYWRkQnVzaW5lc3NEYXlzXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBidXNpbmVzcyBkYXlzIChtb24gLSBmcmkpIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJ1c2luZXNzIGRheXMgKG1vbiAtIGZyaSkgdG8gdGhlIGdpdmVuIGRhdGUsIGlnbm9yaW5nIHdlZWtlbmRzLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiBidXNpbmVzcyBkYXlzIHRvIGJlIGFkZGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIGJ1c2luZXNzIGRheXMgYWRkZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDEwIGJ1c2luZXNzIGRheXMgdG8gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZEJ1c2luZXNzRGF5cyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgMTApXG4gKiAvLz0+IE1vbiBTZXAgMTUgMjAxNCAwMDowMDowMCAoc2tpcHBlZCB3ZWVrZW5kIGRheXMpXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZEJ1c2luZXNzRGF5cyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgc3RhcnRlZE9uV2Vla2VuZCA9IGlzV2Vla2VuZChkYXRlKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIGlmIChpc05hTihhbW91bnQpKSByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgdmFyIGhvdXJzID0gZGF0ZS5nZXRIb3VycygpO1xuICB2YXIgc2lnbiA9IGFtb3VudCA8IDAgPyAtMSA6IDE7XG4gIHZhciBmdWxsV2Vla3MgPSB0b0ludGVnZXIoYW1vdW50IC8gNSk7XG4gIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIGZ1bGxXZWVrcyAqIDcpO1xuXG4gIC8vIEdldCByZW1haW5pbmcgZGF5cyBub3QgcGFydCBvZiBhIGZ1bGwgd2Vla1xuICB2YXIgcmVzdERheXMgPSBNYXRoLmFicyhhbW91bnQgJSA1KTtcblxuICAvLyBMb29wcyBvdmVyIHJlbWFpbmluZyBkYXlzXG4gIHdoaWxlIChyZXN0RGF5cyA+IDApIHtcbiAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyBzaWduKTtcbiAgICBpZiAoIWlzV2Vla2VuZChkYXRlKSkgcmVzdERheXMgLT0gMTtcbiAgfVxuXG4gIC8vIElmIHRoZSBkYXRlIGlzIGEgd2Vla2VuZCBkYXkgYW5kIHdlIHJlZHVjZSBhIGRpdmlkYWJsZSBvZlxuICAvLyA1IGZyb20gaXQsIHdlIGxhbmQgb24gYSB3ZWVrZW5kIGRhdGUuXG4gIC8vIFRvIGNvdW50ZXIgdGhpcywgd2UgYWRkIGRheXMgYWNjb3JkaW5nbHkgdG8gbGFuZCBvbiB0aGUgbmV4dCBidXNpbmVzcyBkYXlcbiAgaWYgKHN0YXJ0ZWRPbldlZWtlbmQgJiYgaXNXZWVrZW5kKGRhdGUpICYmIGFtb3VudCAhPT0gMCkge1xuICAgIC8vIElmIHdlJ3JlIHJlZHVjaW5nIGRheXMsIHdlIHdhbnQgdG8gYWRkIGRheXMgdW50aWwgd2UgbGFuZCBvbiBhIHdlZWtkYXlcbiAgICAvLyBJZiB3ZSdyZSBhZGRpbmcgZGF5cyB3ZSB3YW50IHRvIHJlZHVjZSBkYXlzIHVudGlsIHdlIGxhbmQgb24gYSB3ZWVrZGF5XG4gICAgaWYgKGlzU2F0dXJkYXkoZGF0ZSkpIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIChzaWduIDwgMCA/IDIgOiAtMSkpO1xuICAgIGlmIChpc1N1bmRheShkYXRlKSkgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgKHNpZ24gPCAwID8gMSA6IC0yKSk7XG4gIH1cblxuICAvLyBSZXN0b3JlIGhvdXJzIHRvIGF2b2lkIERTVCBsYWdcbiAgZGF0ZS5zZXRIb3Vycyhob3Vycyk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGFkZERheXNcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGRheXMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2YgZGF5cyB0byBiZSBhZGRlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IC0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIGRheXMgYWRkZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gLSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgMTAgZGF5cyB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gYWRkRGF5cyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgMTApXG4gKiAvLz0+IFRodSBTZXAgMTEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGREYXlzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICBpZiAoaXNOYU4oYW1vdW50KSkge1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG4gIGlmICghYW1vdW50KSB7XG4gICAgLy8gSWYgMCBkYXlzLCBuby1vcCB0byBhdm9pZCBjaGFuZ2luZyB0aW1lcyBpbiB0aGUgaG91ciBiZWZvcmUgZW5kIG9mIERTVFxuICAgIHJldHVybiBkYXRlO1xuICB9XG4gIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIGFtb3VudCk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9hZGRNaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG52YXIgTUlMTElTRUNPTkRTX0lOX0hPVVIgPSAzNjAwMDAwO1xuXG4vKipcbiAqIEBuYW1lIGFkZEhvdXJzXG4gKiBAY2F0ZWdvcnkgSG91ciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgaG91cnMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgaG91cnMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIGhvdXJzIHRvIGJlIGFkZGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIGhvdXJzIGFkZGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCAyIGhvdXJzIHRvIDEwIEp1bHkgMjAxNCAyMzowMDowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZEhvdXJzKG5ldyBEYXRlKDIwMTQsIDYsIDEwLCAyMywgMCksIDIpXG4gKiAvLz0+IEZyaSBKdWwgMTEgMjAxNCAwMTowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRIb3VycyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIGFkZE1pbGxpc2Vjb25kcyhkaXJ0eURhdGUsIGFtb3VudCAqIE1JTExJU0VDT05EU19JTl9IT1VSKTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IGdldElTT1dlZWtZZWFyIGZyb20gXCIuLi9nZXRJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHNldElTT1dlZWtZZWFyIGZyb20gXCIuLi9zZXRJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgYWRkSVNPV2Vla1llYXJzXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFycyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgdG8gYmUgYWRkZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIGFkZGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCA1IElTTyB3ZWVrLW51bWJlcmluZyB5ZWFycyB0byAyIEp1bHkgMjAxMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZElTT1dlZWtZZWFycyhuZXcgRGF0ZSgyMDEwLCA2LCAyKSwgNSlcbiAqIC8vPT4gRnJpIEp1biAyNiAyMDE1IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZElTT1dlZWtZZWFycyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIHNldElTT1dlZWtZZWFyKGRpcnR5RGF0ZSwgZ2V0SVNPV2Vla1llYXIoZGlydHlEYXRlKSArIGFtb3VudCk7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgYWRkTWlsbGlzZWNvbmRzXG4gKiBAY2F0ZWdvcnkgTWlsbGlzZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIG1pbGxpc2Vjb25kcyB0byBiZSBhZGRlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBtaWxsaXNlY29uZHMgYWRkZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDc1MCBtaWxsaXNlY29uZHMgdG8gMTAgSnVseSAyMDE0IDEyOjQ1OjMwLjAwMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZE1pbGxpc2Vjb25kcyhuZXcgRGF0ZSgyMDE0LCA2LCAxMCwgMTIsIDQ1LCAzMCwgMCksIDc1MClcbiAqIC8vPT4gVGh1IEp1bCAxMCAyMDE0IDEyOjQ1OjMwLjc1MFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRNaWxsaXNlY29uZHMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIHRpbWVzdGFtcCA9IHRvRGF0ZShkaXJ0eURhdGUpLmdldFRpbWUoKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIHJldHVybiBuZXcgRGF0ZSh0aW1lc3RhbXAgKyBhbW91bnQpO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9hZGRNaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG52YXIgTUlMTElTRUNPTkRTX0lOX01JTlVURSA9IDYwMDAwO1xuXG4vKipcbiAqIEBuYW1lIGFkZE1pbnV0ZXNcbiAqIEBjYXRlZ29yeSBNaW51dGUgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbnV0ZXMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWludXRlcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2YgbWludXRlcyB0byBiZSBhZGRlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBtaW51dGVzIGFkZGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCAzMCBtaW51dGVzIHRvIDEwIEp1bHkgMjAxNCAxMjowMDowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZE1pbnV0ZXMobmV3IERhdGUoMjAxNCwgNiwgMTAsIDEyLCAwKSwgMzApXG4gKiAvLz0+IFRodSBKdWwgMTAgMjAxNCAxMjozMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRNaW51dGVzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gYWRkTWlsbGlzZWNvbmRzKGRpcnR5RGF0ZSwgYW1vdW50ICogTUlMTElTRUNPTkRTX0lOX01JTlVURSk7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgYWRkTW9udGhzXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1vbnRocyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtb250aHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIG1vbnRocyB0byBiZSBhZGRlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBtb250aHMgYWRkZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDUgbW9udGhzIHRvIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRNb250aHMobmV3IERhdGUoMjAxNCwgOCwgMSksIDUpXG4gKiAvLz0+IFN1biBGZWIgMDEgMjAxNSAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRNb250aHMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIGlmIChpc05hTihhbW91bnQpKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbiAgaWYgKCFhbW91bnQpIHtcbiAgICAvLyBJZiAwIG1vbnRocywgbm8tb3AgdG8gYXZvaWQgY2hhbmdpbmcgdGltZXMgaW4gdGhlIGhvdXIgYmVmb3JlIGVuZCBvZiBEU1RcbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxuICB2YXIgZGF5T2ZNb250aCA9IGRhdGUuZ2V0RGF0ZSgpO1xuXG4gIC8vIFRoZSBKUyBEYXRlIG9iamVjdCBzdXBwb3J0cyBkYXRlIG1hdGggYnkgYWNjZXB0aW5nIG91dC1vZi1ib3VuZHMgdmFsdWVzIGZvclxuICAvLyBtb250aCwgZGF5LCBldGMuIEZvciBleGFtcGxlLCBuZXcgRGF0ZSgyMDIwLCAwLCAwKSByZXR1cm5zIDMxIERlYyAyMDE5IGFuZFxuICAvLyBuZXcgRGF0ZSgyMDIwLCAxMywgMSkgcmV0dXJucyAxIEZlYiAyMDIxLiAgVGhpcyBpcyAqYWxtb3N0KiB0aGUgYmVoYXZpb3Igd2VcbiAgLy8gd2FudCBleGNlcHQgdGhhdCBkYXRlcyB3aWxsIHdyYXAgYXJvdW5kIHRoZSBlbmQgb2YgYSBtb250aCwgbWVhbmluZyB0aGF0XG4gIC8vIG5ldyBEYXRlKDIwMjAsIDEzLCAzMSkgd2lsbCByZXR1cm4gMyBNYXIgMjAyMSBub3QgMjggRmViIDIwMjEgYXMgZGVzaXJlZC4gU29cbiAgLy8gd2UnbGwgZGVmYXVsdCB0byB0aGUgZW5kIG9mIHRoZSBkZXNpcmVkIG1vbnRoIGJ5IGFkZGluZyAxIHRvIHRoZSBkZXNpcmVkXG4gIC8vIG1vbnRoIGFuZCB1c2luZyBhIGRhdGUgb2YgMCB0byBiYWNrIHVwIG9uZSBkYXkgdG8gdGhlIGVuZCBvZiB0aGUgZGVzaXJlZFxuICAvLyBtb250aC5cbiAgdmFyIGVuZE9mRGVzaXJlZE1vbnRoID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkpO1xuICBlbmRPZkRlc2lyZWRNb250aC5zZXRNb250aChkYXRlLmdldE1vbnRoKCkgKyBhbW91bnQgKyAxLCAwKTtcbiAgdmFyIGRheXNJbk1vbnRoID0gZW5kT2ZEZXNpcmVkTW9udGguZ2V0RGF0ZSgpO1xuICBpZiAoZGF5T2ZNb250aCA+PSBkYXlzSW5Nb250aCkge1xuICAgIC8vIElmIHdlJ3JlIGFscmVhZHkgYXQgdGhlIGVuZCBvZiB0aGUgbW9udGgsIHRoZW4gdGhpcyBpcyB0aGUgY29ycmVjdCBkYXRlXG4gICAgLy8gYW5kIHdlJ3JlIGRvbmUuXG4gICAgcmV0dXJuIGVuZE9mRGVzaXJlZE1vbnRoO1xuICB9IGVsc2Uge1xuICAgIC8vIE90aGVyd2lzZSwgd2Ugbm93IGtub3cgdGhhdCBzZXR0aW5nIHRoZSBvcmlnaW5hbCBkYXktb2YtbW9udGggdmFsdWUgd29uJ3RcbiAgICAvLyBjYXVzZSBhbiBvdmVyZmxvdywgc28gc2V0IHRoZSBkZXNpcmVkIGRheS1vZi1tb250aC4gTm90ZSB0aGF0IHdlIGNhbid0XG4gICAgLy8ganVzdCBzZXQgdGhlIGRhdGUgb2YgYGVuZE9mRGVzaXJlZE1vbnRoYCBiZWNhdXNlIHRoYXQgb2JqZWN0IG1heSBoYXZlIGhhZFxuICAgIC8vIGl0cyB0aW1lIGNoYW5nZWQgaW4gdGhlIHVudXN1YWwgY2FzZSB3aGVyZSB3aGVyZSBhIERTVCB0cmFuc2l0aW9uIHdhcyBvblxuICAgIC8vIHRoZSBsYXN0IGRheSBvZiB0aGUgbW9udGggYW5kIGl0cyBsb2NhbCB0aW1lIHdhcyBpbiB0aGUgaG91ciBza2lwcGVkIG9yXG4gICAgLy8gcmVwZWF0ZWQgbmV4dCB0byBhIERTVCB0cmFuc2l0aW9uLiAgU28gd2UgdXNlIGBkYXRlYCBpbnN0ZWFkIHdoaWNoIGlzXG4gICAgLy8gZ3VhcmFudGVlZCB0byBzdGlsbCBoYXZlIHRoZSBvcmlnaW5hbCB0aW1lLlxuICAgIGRhdGUuc2V0RnVsbFllYXIoZW5kT2ZEZXNpcmVkTW9udGguZ2V0RnVsbFllYXIoKSwgZW5kT2ZEZXNpcmVkTW9udGguZ2V0TW9udGgoKSwgZGF5T2ZNb250aCk7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IGFkZE1vbnRocyBmcm9tIFwiLi4vYWRkTW9udGhzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBhZGRRdWFydGVyc1xuICogQGNhdGVnb3J5IFF1YXJ0ZXIgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHllYXIgcXVhcnRlcnMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgeWVhciBxdWFydGVycyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2YgcXVhcnRlcnMgdG8gYmUgYWRkZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgcXVhcnRlcnMgYWRkZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDEgcXVhcnRlciB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gYWRkUXVhcnRlcnMobmV3IERhdGUoMjAxNCwgOCwgMSksIDEpXG4gKiAvLz0+IE1vbiBEZWMgMDEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRRdWFydGVycyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgdmFyIG1vbnRocyA9IGFtb3VudCAqIDM7XG4gIHJldHVybiBhZGRNb250aHMoZGlydHlEYXRlLCBtb250aHMpO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9hZGRNaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGFkZFNlY29uZHNcbiAqIEBjYXRlZ29yeSBTZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2Ygc2Vjb25kcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2Ygc2Vjb25kcyB0byBiZSBhZGRlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBzZWNvbmRzIGFkZGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCAzMCBzZWNvbmRzIHRvIDEwIEp1bHkgMjAxNCAxMjo0NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZFNlY29uZHMobmV3IERhdGUoMjAxNCwgNiwgMTAsIDEyLCA0NSwgMCksIDMwKVxuICogLy89PiBUaHUgSnVsIDEwIDIwMTQgMTI6NDU6MzBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWRkU2Vjb25kcyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIGFkZE1pbGxpc2Vjb25kcyhkaXJ0eURhdGUsIGFtb3VudCAqIDEwMDApO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkRGF5cyBmcm9tIFwiLi4vYWRkRGF5cy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgYWRkV2Vla3NcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB3ZWVrcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB3ZWVrIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiB3ZWVrcyB0byBiZSBhZGRlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSB3ZWVrcyBhZGRlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgNCB3ZWVrcyB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gYWRkV2Vla3MobmV3IERhdGUoMjAxNCwgOCwgMSksIDQpXG4gKiAvLz0+IE1vbiBTZXAgMjkgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRXZWVrcyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgdmFyIGRheXMgPSBhbW91bnQgKiA3O1xuICByZXR1cm4gYWRkRGF5cyhkaXJ0eURhdGUsIGRheXMpO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkTW9udGhzIGZyb20gXCIuLi9hZGRNb250aHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGFkZFllYXJzXG4gKiBAY2F0ZWdvcnkgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgeWVhcnMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgeWVhcnMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIHllYXJzIHRvIGJlIGFkZGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIHllYXJzIGFkZGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCA1IHllYXJzIHRvIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRZZWFycyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgNSlcbiAqIC8vPT4gU3VuIFNlcCAwMSAyMDE5IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZFllYXJzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gYWRkTW9udGhzKGRpcnR5RGF0ZSwgYW1vdW50ICogMTIpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgYXJlSW50ZXJ2YWxzT3ZlcmxhcHBpbmdcbiAqIEBjYXRlZ29yeSBJbnRlcnZhbCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gdGltZSBpbnRlcnZhbCBvdmVybGFwcGluZyB3aXRoIGFub3RoZXIgdGltZSBpbnRlcnZhbD9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiB0aW1lIGludGVydmFsIG92ZXJsYXBwaW5nIHdpdGggYW5vdGhlciB0aW1lIGludGVydmFsPyBBZGphY2VudCBpbnRlcnZhbHMgZG8gbm90IGNvdW50IGFzIG92ZXJsYXBwaW5nLlxuICpcbiAqIEBwYXJhbSB7SW50ZXJ2YWx9IGludGVydmFsTGVmdCAtIHRoZSBmaXJzdCBpbnRlcnZhbCB0byBjb21wYXJlLiBTZWUgW0ludGVydmFsXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0ludGVydmFsfVxuICogQHBhcmFtIHtJbnRlcnZhbH0gaW50ZXJ2YWxSaWdodCAtIHRoZSBzZWNvbmQgaW50ZXJ2YWwgdG8gY29tcGFyZS4gU2VlIFtJbnRlcnZhbF17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9JbnRlcnZhbH1cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSB0aGUgb2JqZWN0IHdpdGggb3B0aW9uc1xuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5pbmNsdXNpdmU9ZmFsc2VdIC0gd2hldGhlciB0aGUgY29tcGFyaXNvbiBpcyBpbmNsdXNpdmUgb3Igbm90XG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gd2hldGhlciB0aGUgdGltZSBpbnRlcnZhbHMgYXJlIG92ZXJsYXBwaW5nXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBUaGUgc3RhcnQgb2YgYW4gaW50ZXJ2YWwgY2Fubm90IGJlIGFmdGVyIGl0cyBlbmRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IERhdGUgaW4gaW50ZXJ2YWwgY2Fubm90IGJlIGBJbnZhbGlkIERhdGVgXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciBvdmVybGFwcGluZyB0aW1lIGludGVydmFsczpcbiAqIGFyZUludGVydmFsc092ZXJsYXBwaW5nKFxuICogICB7IHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAwLCAxMCksIGVuZDogbmV3IERhdGUoMjAxNCwgMCwgMjApIH0sXG4gKiAgIHsgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDAsIDE3KSwgZW5kOiBuZXcgRGF0ZSgyMDE0LCAwLCAyMSkgfVxuICogKVxuICogLy89PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciBub24tb3ZlcmxhcHBpbmcgdGltZSBpbnRlcnZhbHM6XG4gKiBhcmVJbnRlcnZhbHNPdmVybGFwcGluZyhcbiAqICAgeyBzdGFydDogbmV3IERhdGUoMjAxNCwgMCwgMTApLCBlbmQ6IG5ldyBEYXRlKDIwMTQsIDAsIDIwKSB9LFxuICogICB7IHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAwLCAyMSksIGVuZDogbmV3IERhdGUoMjAxNCwgMCwgMjIpIH1cbiAqIClcbiAqIC8vPT4gZmFsc2VcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIGFkamFjZW50IHRpbWUgaW50ZXJ2YWxzOlxuICogYXJlSW50ZXJ2YWxzT3ZlcmxhcHBpbmcoXG4gKiAgIHsgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDAsIDEwKSwgZW5kOiBuZXcgRGF0ZSgyMDE0LCAwLCAyMCkgfSxcbiAqICAgeyBzdGFydDogbmV3IERhdGUoMjAxNCwgMCwgMjApLCBlbmQ6IG5ldyBEYXRlKDIwMTQsIDAsIDMwKSB9XG4gKiApXG4gKiAvLz0+IGZhbHNlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFVzaW5nIHRoZSBpbmNsdXNpdmUgb3B0aW9uOlxuICogYXJlSW50ZXJ2YWxzT3ZlcmxhcHBpbmcoXG4gKiAgIHsgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDAsIDEwKSwgZW5kOiBuZXcgRGF0ZSgyMDE0LCAwLCAyMCkgfSxcbiAqICAgeyBzdGFydDogbmV3IERhdGUoMjAxNCwgMCwgMjApLCBlbmQ6IG5ldyBEYXRlKDIwMTQsIDAsIDI0KSB9XG4gKiApXG4gKiAvLz0+IGZhbHNlXG4gKiBhcmVJbnRlcnZhbHNPdmVybGFwcGluZyhcbiAqICAgeyBzdGFydDogbmV3IERhdGUoMjAxNCwgMCwgMTApLCBlbmQ6IG5ldyBEYXRlKDIwMTQsIDAsIDIwKSB9LFxuICogICB7IHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAwLCAyMCksIGVuZDogbmV3IERhdGUoMjAxNCwgMCwgMjQpIH0sXG4gKiAgIHsgaW5jbHVzaXZlOiB0cnVlIH1cbiAqIClcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhcmVJbnRlcnZhbHNPdmVybGFwcGluZyhpbnRlcnZhbExlZnQsIGludGVydmFsUmlnaHQsIG9wdGlvbnMpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBsZWZ0U3RhcnRUaW1lID0gdG9EYXRlKGludGVydmFsTGVmdCA9PT0gbnVsbCB8fCBpbnRlcnZhbExlZnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGludGVydmFsTGVmdC5zdGFydCkuZ2V0VGltZSgpO1xuICB2YXIgbGVmdEVuZFRpbWUgPSB0b0RhdGUoaW50ZXJ2YWxMZWZ0ID09PSBudWxsIHx8IGludGVydmFsTGVmdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogaW50ZXJ2YWxMZWZ0LmVuZCkuZ2V0VGltZSgpO1xuICB2YXIgcmlnaHRTdGFydFRpbWUgPSB0b0RhdGUoaW50ZXJ2YWxSaWdodCA9PT0gbnVsbCB8fCBpbnRlcnZhbFJpZ2h0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBpbnRlcnZhbFJpZ2h0LnN0YXJ0KS5nZXRUaW1lKCk7XG4gIHZhciByaWdodEVuZFRpbWUgPSB0b0RhdGUoaW50ZXJ2YWxSaWdodCA9PT0gbnVsbCB8fCBpbnRlcnZhbFJpZ2h0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBpbnRlcnZhbFJpZ2h0LmVuZCkuZ2V0VGltZSgpO1xuXG4gIC8vIFRocm93IGFuIGV4Y2VwdGlvbiBpZiBzdGFydCBkYXRlIGlzIGFmdGVyIGVuZCBkYXRlIG9yIGlmIGFueSBkYXRlIGlzIGBJbnZhbGlkIERhdGVgXG4gIGlmICghKGxlZnRTdGFydFRpbWUgPD0gbGVmdEVuZFRpbWUgJiYgcmlnaHRTdGFydFRpbWUgPD0gcmlnaHRFbmRUaW1lKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIGludGVydmFsJyk7XG4gIH1cbiAgaWYgKG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdm9pZCAwICYmIG9wdGlvbnMuaW5jbHVzaXZlKSB7XG4gICAgcmV0dXJuIGxlZnRTdGFydFRpbWUgPD0gcmlnaHRFbmRUaW1lICYmIHJpZ2h0U3RhcnRUaW1lIDw9IGxlZnRFbmRUaW1lO1xuICB9XG4gIHJldHVybiBsZWZ0U3RhcnRUaW1lIDwgcmlnaHRFbmRUaW1lICYmIHJpZ2h0U3RhcnRUaW1lIDwgbGVmdEVuZFRpbWU7XG59IiwiaW1wb3J0IG1heCBmcm9tIFwiLi4vbWF4L2luZGV4LmpzXCI7XG5pbXBvcnQgbWluIGZyb20gXCIuLi9taW4vaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGNsYW1wXG4gKiBAY2F0ZWdvcnkgSW50ZXJ2YWwgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIGEgZGF0ZSBib3VuZGVkIGJ5IHRoZSBzdGFydCBhbmQgdGhlIGVuZCBvZiB0aGUgZ2l2ZW4gaW50ZXJ2YWxcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENsYW1wcyBhIGRhdGUgdG8gdGhlIGxvd2VyIGJvdW5kIHdpdGggdGhlIHN0YXJ0IG9mIHRoZSBpbnRlcnZhbCBhbmQgdGhlIHVwcGVyXG4gKiBib3VuZCB3aXRoIHRoZSBlbmQgb2YgdGhlIGludGVydmFsLlxuICpcbiAqIC0gV2hlbiB0aGUgZGF0ZSBpcyBsZXNzIHRoYW4gdGhlIHN0YXJ0IG9mIHRoZSBpbnRlcnZhbCwgdGhlIHN0YXJ0IGlzIHJldHVybmVkLlxuICogLSBXaGVuIHRoZSBkYXRlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgZW5kIG9mIHRoZSBpbnRlcnZhbCwgdGhlIGVuZCBpcyByZXR1cm5lZC5cbiAqIC0gT3RoZXJ3aXNlIHRoZSBkYXRlIGlzIHJldHVybmVkLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGF0IGlzIE1hciwgMjEsIDIwMjEgYm91bmRlZCB0byBhbiBpbnRlcnZhbCBzdGFydGluZyBhdCBNYXIsIDIyLCAyMDIxIGFuZCBlbmRpbmcgYXQgQXByLCAwMSwgMjAyMVxuICogY29uc3QgcmVzdWx0ID0gY2xhbXAobmV3IERhdGUoMjAyMSwgMiwgMjEpLCB7XG4gKiAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDIxLCAyLCAyMiksXG4gKiAgIGVuZDogbmV3IERhdGUoMjAyMSwgMywgMSksXG4gKiB9KVxuICogLy89PiBNb24gTWFyIDIyIDIwMjEgMDA6MDA6MDBcbiAqXG4gKiBAcGFyYW0ge0RhdGUgfCBOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBib3VuZGVkXG4gKiBAcGFyYW0ge0ludGVydmFsfSBpbnRlcnZhbCAtIHRoZSBpbnRlcnZhbCB0byBib3VuZCB0b1xuICogQHJldHVybnMge0RhdGV9IHRoZSBkYXRlIGJvdW5kZWQgYnkgdGhlIHN0YXJ0IGFuZCB0aGUgZW5kIG9mIHRoZSBpbnRlcnZhbFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjbGFtcChkYXRlLCBfcmVmKSB7XG4gIHZhciBzdGFydCA9IF9yZWYuc3RhcnQsXG4gICAgZW5kID0gX3JlZi5lbmQ7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICByZXR1cm4gbWluKFttYXgoW2RhdGUsIHN0YXJ0XSksIGVuZF0pO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgY2xvc2VzdEluZGV4VG9cbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIGFuIGluZGV4IG9mIHRoZSBjbG9zZXN0IGRhdGUgZnJvbSB0aGUgYXJyYXkgY29tcGFyaW5nIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIGFuIGluZGV4IG9mIHRoZSBjbG9zZXN0IGRhdGUgZnJvbSB0aGUgYXJyYXkgY29tcGFyaW5nIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IE51bWJlcn0gZGF0ZVRvQ29tcGFyZSAtIHRoZSBkYXRlIHRvIGNvbXBhcmUgd2l0aFxuICogQHBhcmFtIHtBcnJheTxEYXRlPiB8IEFycmF5PG51bWJlcj59IGRhdGVzQXJyYXkgLSB0aGUgYXJyYXkgdG8gc2VhcmNoXG4gKiBAcmV0dXJucyB7TnVtYmVyIHwgdW5kZWZpbmVkfSBhbiBpbmRleCBvZiB0aGUgZGF0ZSBjbG9zZXN0IHRvIHRoZSBnaXZlbiBkYXRlIG9yIHVuZGVmaW5lZCBpZiBubyB2YWxpZCB2YWx1ZSBpcyBnaXZlblxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCBkYXRlIGlzIGNsb3NlciB0byA2IFNlcHRlbWJlciAyMDE1P1xuICogY29uc3QgZGF0ZVRvQ29tcGFyZSA9IG5ldyBEYXRlKDIwMTUsIDgsIDYpXG4gKiBjb25zdCBkYXRlc0FycmF5ID0gW1xuICogICBuZXcgRGF0ZSgyMDE1LCAwLCAxKSxcbiAqICAgbmV3IERhdGUoMjAxNiwgMCwgMSksXG4gKiAgIG5ldyBEYXRlKDIwMTcsIDAsIDEpXG4gKiBdXG4gKiBjb25zdCByZXN1bHQgPSBjbG9zZXN0SW5kZXhUbyhkYXRlVG9Db21wYXJlLCBkYXRlc0FycmF5KVxuICogLy89PiAxXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNsb3Nlc3RJbmRleFRvKGRpcnR5RGF0ZVRvQ29tcGFyZSwgZGlydHlEYXRlc0FycmF5KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZVRvQ29tcGFyZSA9IHRvRGF0ZShkaXJ0eURhdGVUb0NvbXBhcmUpO1xuICBpZiAoaXNOYU4oTnVtYmVyKGRhdGVUb0NvbXBhcmUpKSkgcmV0dXJuIE5hTjtcbiAgdmFyIHRpbWVUb0NvbXBhcmUgPSBkYXRlVG9Db21wYXJlLmdldFRpbWUoKTtcbiAgdmFyIGRhdGVzQXJyYXk7XG4gIC8vIGBkaXJ0eURhdGVzQXJyYXlgIGlzIHVuZGVmaW5lZCBvciBudWxsXG4gIGlmIChkaXJ0eURhdGVzQXJyYXkgPT0gbnVsbCkge1xuICAgIGRhdGVzQXJyYXkgPSBbXTtcblxuICAgIC8vIGBkaXJ0eURhdGVzQXJyYXlgIGlzIEFycmF5LCBTZXQgb3IgTWFwLCBvciBvYmplY3Qgd2l0aCBjdXN0b20gYGZvckVhY2hgIG1ldGhvZFxuICB9IGVsc2UgaWYgKHR5cGVvZiBkaXJ0eURhdGVzQXJyYXkuZm9yRWFjaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRhdGVzQXJyYXkgPSBkaXJ0eURhdGVzQXJyYXk7XG5cbiAgICAvLyBJZiBgZGlydHlEYXRlc0FycmF5YCBpcyBBcnJheS1saWtlIE9iamVjdCwgY29udmVydCB0byBBcnJheS4gT3RoZXJ3aXNlLCBtYWtlIGl0IGVtcHR5IEFycmF5XG4gIH0gZWxzZSB7XG4gICAgZGF0ZXNBcnJheSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGRpcnR5RGF0ZXNBcnJheSk7XG4gIH1cbiAgdmFyIHJlc3VsdDtcbiAgdmFyIG1pbkRpc3RhbmNlO1xuICBkYXRlc0FycmF5LmZvckVhY2goZnVuY3Rpb24gKGRpcnR5RGF0ZSwgaW5kZXgpIHtcbiAgICB2YXIgY3VycmVudERhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgICBpZiAoaXNOYU4oTnVtYmVyKGN1cnJlbnREYXRlKSkpIHtcbiAgICAgIHJlc3VsdCA9IE5hTjtcbiAgICAgIG1pbkRpc3RhbmNlID0gTmFOO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgZGlzdGFuY2UgPSBNYXRoLmFicyh0aW1lVG9Db21wYXJlIC0gY3VycmVudERhdGUuZ2V0VGltZSgpKTtcbiAgICBpZiAocmVzdWx0ID09IG51bGwgfHwgZGlzdGFuY2UgPCBOdW1iZXIobWluRGlzdGFuY2UpKSB7XG4gICAgICByZXN1bHQgPSBpbmRleDtcbiAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2U7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGNsb3Nlc3RUb1xuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gYSBkYXRlIGZyb20gdGhlIGFycmF5IGNsb3Nlc3QgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gYSBkYXRlIGZyb20gdGhlIGFycmF5IGNsb3Nlc3QgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlIHwgTnVtYmVyfSBkYXRlVG9Db21wYXJlIC0gdGhlIGRhdGUgdG8gY29tcGFyZSB3aXRoXG4gKiBAcGFyYW0ge0FycmF5PERhdGU+IHwgQXJyYXk8bnVtYmVyPn0gZGF0ZXNBcnJheSAtIHRoZSBhcnJheSB0byBzZWFyY2hcbiAqIEByZXR1cm5zIHtEYXRlIHwgdW5kZWZpbmVkfSB0aGUgZGF0ZSBmcm9tIHRoZSBhcnJheSBjbG9zZXN0IHRvIHRoZSBnaXZlbiBkYXRlIG9yIHVuZGVmaW5lZCBpZiBubyB2YWxpZCB2YWx1ZSBpcyBnaXZlblxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCBkYXRlIGlzIGNsb3NlciB0byA2IFNlcHRlbWJlciAyMDE1OiAxIEphbnVhcnkgMjAwMCBvciAxIEphbnVhcnkgMjAzMD9cbiAqIGNvbnN0IGRhdGVUb0NvbXBhcmUgPSBuZXcgRGF0ZSgyMDE1LCA4LCA2KVxuICogY29uc3QgcmVzdWx0ID0gY2xvc2VzdFRvKGRhdGVUb0NvbXBhcmUsIFtcbiAqICAgbmV3IERhdGUoMjAwMCwgMCwgMSksXG4gKiAgIG5ldyBEYXRlKDIwMzAsIDAsIDEpXG4gKiBdKVxuICogLy89PiBUdWUgSmFuIDAxIDIwMzAgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY2xvc2VzdFRvKGRpcnR5RGF0ZVRvQ29tcGFyZSwgZGlydHlEYXRlc0FycmF5KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZVRvQ29tcGFyZSA9IHRvRGF0ZShkaXJ0eURhdGVUb0NvbXBhcmUpO1xuICBpZiAoaXNOYU4oTnVtYmVyKGRhdGVUb0NvbXBhcmUpKSkgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIHZhciB0aW1lVG9Db21wYXJlID0gZGF0ZVRvQ29tcGFyZS5nZXRUaW1lKCk7XG4gIHZhciBkYXRlc0FycmF5O1xuICAvLyBgZGlydHlEYXRlc0FycmF5YCBpcyB1bmRlZmluZWQgb3IgbnVsbFxuICBpZiAoZGlydHlEYXRlc0FycmF5ID09IG51bGwpIHtcbiAgICBkYXRlc0FycmF5ID0gW107XG5cbiAgICAvLyBgZGlydHlEYXRlc0FycmF5YCBpcyBBcnJheSwgU2V0IG9yIE1hcCwgb3Igb2JqZWN0IHdpdGggY3VzdG9tIGBmb3JFYWNoYCBtZXRob2RcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGlydHlEYXRlc0FycmF5LmZvckVhY2ggPT09ICdmdW5jdGlvbicpIHtcbiAgICBkYXRlc0FycmF5ID0gZGlydHlEYXRlc0FycmF5O1xuXG4gICAgLy8gSWYgYGRpcnR5RGF0ZXNBcnJheWAgaXMgQXJyYXktbGlrZSBPYmplY3QsIGNvbnZlcnQgdG8gQXJyYXkuIE90aGVyd2lzZSwgbWFrZSBpdCBlbXB0eSBBcnJheVxuICB9IGVsc2Uge1xuICAgIGRhdGVzQXJyYXkgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkaXJ0eURhdGVzQXJyYXkpO1xuICB9XG4gIHZhciByZXN1bHQ7XG4gIHZhciBtaW5EaXN0YW5jZTtcbiAgZGF0ZXNBcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChkaXJ0eURhdGUpIHtcbiAgICB2YXIgY3VycmVudERhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgICBpZiAoaXNOYU4oTnVtYmVyKGN1cnJlbnREYXRlKSkpIHtcbiAgICAgIHJlc3VsdCA9IG5ldyBEYXRlKE5hTik7XG4gICAgICBtaW5EaXN0YW5jZSA9IE5hTjtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGRpc3RhbmNlID0gTWF0aC5hYnModGltZVRvQ29tcGFyZSAtIGN1cnJlbnREYXRlLmdldFRpbWUoKSk7XG4gICAgaWYgKHJlc3VsdCA9PSBudWxsIHx8IGRpc3RhbmNlIDwgTnVtYmVyKG1pbkRpc3RhbmNlKSkge1xuICAgICAgcmVzdWx0ID0gY3VycmVudERhdGU7XG4gICAgICBtaW5EaXN0YW5jZSA9IGRpc3RhbmNlO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBjb21wYXJlQXNjXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbXBhcmUgdGhlIHR3byBkYXRlcyBhbmQgcmV0dXJuIC0xLCAwIG9yIDEuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb21wYXJlIHRoZSB0d28gZGF0ZXMgYW5kIHJldHVybiAxIGlmIHRoZSBmaXJzdCBkYXRlIGlzIGFmdGVyIHRoZSBzZWNvbmQsXG4gKiAtMSBpZiB0aGUgZmlyc3QgZGF0ZSBpcyBiZWZvcmUgdGhlIHNlY29uZCBvciAwIGlmIGRhdGVzIGFyZSBlcXVhbC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBmaXJzdCBkYXRlIHRvIGNvbXBhcmVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBzZWNvbmQgZGF0ZSB0byBjb21wYXJlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbXBhcmUgMTEgRmVicnVhcnkgMTk4NyBhbmQgMTAgSnVseSAxOTg5OlxuICogY29uc3QgcmVzdWx0ID0gY29tcGFyZUFzYyhuZXcgRGF0ZSgxOTg3LCAxLCAxMSksIG5ldyBEYXRlKDE5ODksIDYsIDEwKSlcbiAqIC8vPT4gLTFcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU29ydCB0aGUgYXJyYXkgb2YgZGF0ZXM6XG4gKiBjb25zdCByZXN1bHQgPSBbXG4gKiAgIG5ldyBEYXRlKDE5OTUsIDYsIDIpLFxuICogICBuZXcgRGF0ZSgxOTg3LCAxLCAxMSksXG4gKiAgIG5ldyBEYXRlKDE5ODksIDYsIDEwKVxuICogXS5zb3J0KGNvbXBhcmVBc2MpXG4gKiAvLz0+IFtcbiAqIC8vICAgV2VkIEZlYiAxMSAxOTg3IDAwOjAwOjAwLFxuICogLy8gICBNb24gSnVsIDEwIDE5ODkgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBKdWwgMDIgMTk5NSAwMDowMDowMFxuICogLy8gXVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wYXJlQXNjKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnQgPSB0b0RhdGUoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBkYXRlUmlnaHQgPSB0b0RhdGUoZGlydHlEYXRlUmlnaHQpO1xuICB2YXIgZGlmZiA9IGRhdGVMZWZ0LmdldFRpbWUoKSAtIGRhdGVSaWdodC5nZXRUaW1lKCk7XG4gIGlmIChkaWZmIDwgMCkge1xuICAgIHJldHVybiAtMTtcbiAgfSBlbHNlIGlmIChkaWZmID4gMCkge1xuICAgIHJldHVybiAxO1xuICAgIC8vIFJldHVybiAwIGlmIGRpZmYgaXMgMDsgcmV0dXJuIE5hTiBpZiBkaWZmIGlzIE5hTlxuICB9IGVsc2Uge1xuICAgIHJldHVybiBkaWZmO1xuICB9XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBjb21wYXJlRGVzY1xuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb21wYXJlIHRoZSB0d28gZGF0ZXMgcmV2ZXJzZSBjaHJvbm9sb2dpY2FsbHkgYW5kIHJldHVybiAtMSwgMCBvciAxLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29tcGFyZSB0aGUgdHdvIGRhdGVzIGFuZCByZXR1cm4gLTEgaWYgdGhlIGZpcnN0IGRhdGUgaXMgYWZ0ZXIgdGhlIHNlY29uZCxcbiAqIDEgaWYgdGhlIGZpcnN0IGRhdGUgaXMgYmVmb3JlIHRoZSBzZWNvbmQgb3IgMCBpZiBkYXRlcyBhcmUgZXF1YWwuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgZmlyc3QgZGF0ZSB0byBjb21wYXJlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgc2Vjb25kIGRhdGUgdG8gY29tcGFyZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvblxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb21wYXJlIDExIEZlYnJ1YXJ5IDE5ODcgYW5kIDEwIEp1bHkgMTk4OSByZXZlcnNlIGNocm9ub2xvZ2ljYWxseTpcbiAqIGNvbnN0IHJlc3VsdCA9IGNvbXBhcmVEZXNjKG5ldyBEYXRlKDE5ODcsIDEsIDExKSwgbmV3IERhdGUoMTk4OSwgNiwgMTApKVxuICogLy89PiAxXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNvcnQgdGhlIGFycmF5IG9mIGRhdGVzIGluIHJldmVyc2UgY2hyb25vbG9naWNhbCBvcmRlcjpcbiAqIGNvbnN0IHJlc3VsdCA9IFtcbiAqICAgbmV3IERhdGUoMTk5NSwgNiwgMiksXG4gKiAgIG5ldyBEYXRlKDE5ODcsIDEsIDExKSxcbiAqICAgbmV3IERhdGUoMTk4OSwgNiwgMTApXG4gKiBdLnNvcnQoY29tcGFyZURlc2MpXG4gKiAvLz0+IFtcbiAqIC8vICAgU3VuIEp1bCAwMiAxOTk1IDAwOjAwOjAwLFxuICogLy8gICBNb24gSnVsIDEwIDE5ODkgMDA6MDA6MDAsXG4gKiAvLyAgIFdlZCBGZWIgMTEgMTk4NyAwMDowMDowMFxuICogLy8gXVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wYXJlRGVzYyhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0ID0gdG9EYXRlKGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgZGF0ZVJpZ2h0ID0gdG9EYXRlKGRpcnR5RGF0ZVJpZ2h0KTtcbiAgdmFyIGRpZmYgPSBkYXRlTGVmdC5nZXRUaW1lKCkgLSBkYXRlUmlnaHQuZ2V0VGltZSgpO1xuICBpZiAoZGlmZiA+IDApIHtcbiAgICByZXR1cm4gLTE7XG4gIH0gZWxzZSBpZiAoZGlmZiA8IDApIHtcbiAgICByZXR1cm4gMTtcbiAgICAvLyBSZXR1cm4gMCBpZiBkaWZmIGlzIDA7IHJldHVybiBOYU4gaWYgZGlmZiBpcyBOYU5cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZGlmZjtcbiAgfVxufSIsIi8qKlxuICogRGF5cyBpbiAxIHdlZWsuXG4gKlxuICogQG5hbWUgZGF5c0luV2Vla1xuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBkYXlzSW5XZWVrID0gNztcblxuLyoqXG4gKiBEYXlzIGluIDEgeWVhclxuICogT25lIHllYXJzIGVxdWFscyAzNjUuMjQyNSBkYXlzIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTpcbiAqXG4gKiA+IExlYXAgeWVhciBvY2N1cmVzIGV2ZXJ5IDQgeWVhcnMsIGV4Y2VwdCBmb3IgeWVhcnMgdGhhdCBhcmUgZGl2aXNhYmxlIGJ5IDEwMCBhbmQgbm90IGRpdmlzYWJsZSBieSA0MDAuXG4gKiA+IDEgbWVhbiB5ZWFyID0gKDM2NSsxLzQtMS8xMDArMS80MDApIGRheXMgPSAzNjUuMjQyNSBkYXlzXG4gKlxuICogQG5hbWUgZGF5c0luWWVhclxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBkYXlzSW5ZZWFyID0gMzY1LjI0MjU7XG5cbi8qKlxuICogTWF4aW11bSBhbGxvd2VkIHRpbWUuXG4gKlxuICogQG5hbWUgbWF4VGltZVxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBtYXhUaW1lID0gTWF0aC5wb3coMTAsIDgpICogMjQgKiA2MCAqIDYwICogMTAwMDtcblxuLyoqXG4gKiBNaWxsaXNlY29uZHMgaW4gMSBtaW51dGVcbiAqXG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbk1pbnV0ZVxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBtaWxsaXNlY29uZHNJbk1pbnV0ZSA9IDYwMDAwO1xuXG4vKipcbiAqIE1pbGxpc2Vjb25kcyBpbiAxIGhvdXJcbiAqXG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbkhvdXJcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqIEBkZWZhdWx0XG4gKi9cbmV4cG9ydCB2YXIgbWlsbGlzZWNvbmRzSW5Ib3VyID0gMzYwMDAwMDtcblxuLyoqXG4gKiBNaWxsaXNlY29uZHMgaW4gMSBzZWNvbmRcbiAqXG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJblNlY29uZFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBtaWxsaXNlY29uZHNJblNlY29uZCA9IDEwMDA7XG5cbi8qKlxuICogTWluaW11bSBhbGxvd2VkIHRpbWUuXG4gKlxuICogQG5hbWUgbWluVGltZVxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBtaW5UaW1lID0gLW1heFRpbWU7XG5cbi8qKlxuICogTWludXRlcyBpbiAxIGhvdXJcbiAqXG4gKiBAbmFtZSBtaW51dGVzSW5Ib3VyXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5leHBvcnQgdmFyIG1pbnV0ZXNJbkhvdXIgPSA2MDtcblxuLyoqXG4gKiBNb250aHMgaW4gMSBxdWFydGVyXG4gKlxuICogQG5hbWUgbW9udGhzSW5RdWFydGVyXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5leHBvcnQgdmFyIG1vbnRoc0luUXVhcnRlciA9IDM7XG5cbi8qKlxuICogTW9udGhzIGluIDEgeWVhclxuICpcbiAqIEBuYW1lIG1vbnRoc0luWWVhclxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBtb250aHNJblllYXIgPSAxMjtcblxuLyoqXG4gKiBRdWFydGVycyBpbiAxIHllYXJcbiAqXG4gKiBAbmFtZSBxdWFydGVyc0luWWVhclxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBxdWFydGVyc0luWWVhciA9IDQ7XG5cbi8qKlxuICogU2Vjb25kcyBpbiAxIGhvdXJcbiAqXG4gKiBAbmFtZSBzZWNvbmRzSW5Ib3VyXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5leHBvcnQgdmFyIHNlY29uZHNJbkhvdXIgPSAzNjAwO1xuXG4vKipcbiAqIFNlY29uZHMgaW4gMSBtaW51dGVcbiAqXG4gKiBAbmFtZSBzZWNvbmRzSW5NaW51dGVcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqIEBkZWZhdWx0XG4gKi9cbmV4cG9ydCB2YXIgc2Vjb25kc0luTWludXRlID0gNjA7XG5cbi8qKlxuICogU2Vjb25kcyBpbiAxIGRheVxuICpcbiAqIEBuYW1lIHNlY29uZHNJbkRheVxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBzZWNvbmRzSW5EYXkgPSBzZWNvbmRzSW5Ib3VyICogMjQ7XG5cbi8qKlxuICogU2Vjb25kcyBpbiAxIHdlZWtcbiAqXG4gKiBAbmFtZSBzZWNvbmRzSW5XZWVrXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5leHBvcnQgdmFyIHNlY29uZHNJbldlZWsgPSBzZWNvbmRzSW5EYXkgKiA3O1xuXG4vKipcbiAqIFNlY29uZHMgaW4gMSB5ZWFyXG4gKlxuICogQG5hbWUgc2Vjb25kc0luWWVhclxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBzZWNvbmRzSW5ZZWFyID0gc2Vjb25kc0luRGF5ICogZGF5c0luWWVhcjtcblxuLyoqXG4gKiBTZWNvbmRzIGluIDEgbW9udGhcbiAqXG4gKiBAbmFtZSBzZWNvbmRzSW5Nb250aFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBzZWNvbmRzSW5Nb250aCA9IHNlY29uZHNJblllYXIgLyAxMjtcblxuLyoqXG4gKiBTZWNvbmRzIGluIDEgcXVhcnRlclxuICpcbiAqIEBuYW1lIHNlY29uZHNJblF1YXJ0ZXJcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqIEBkZWZhdWx0XG4gKi9cbmV4cG9ydCB2YXIgc2Vjb25kc0luUXVhcnRlciA9IHNlY29uZHNJbk1vbnRoICogMzsiLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZGF5c0luV2VlayB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZGF5c1RvV2Vla3NcbiAqIEBjYXRlZ29yeSBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgZGF5cyB0byB3ZWVrcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2YgZGF5cyB0byBhIGZ1bGwgbnVtYmVyIG9mIHdlZWtzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBkYXlzIC0gbnVtYmVyIG9mIGRheXMgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBkYXlzIGNvbnZlcnRlZCBpbiB3ZWVrc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgMTQgZGF5cyB0byB3ZWVrczpcbiAqIGNvbnN0IHJlc3VsdCA9IGRheXNUb1dlZWtzKDE0KVxuICogLy89PiAyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEl0IHVzZXMgZmxvb3Igcm91bmRpbmc6XG4gKiBjb25zdCByZXN1bHQgPSBkYXlzVG9XZWVrcygxMylcbiAqIC8vPT4gMVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkYXlzVG9XZWVrcyhkYXlzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgd2Vla3MgPSBkYXlzIC8gZGF5c0luV2VlaztcbiAgcmV0dXJuIE1hdGguZmxvb3Iod2Vla3MpO1xufSIsImltcG9ydCBhZGREYXlzIGZyb20gXCIuLi9hZGREYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5DYWxlbmRhckRheXMvaW5kZXguanNcIjtcbmltcG9ydCBpc1NhbWVEYXkgZnJvbSBcIi4uL2lzU2FtZURheS9pbmRleC5qc1wiO1xuaW1wb3J0IGlzVmFsaWQgZnJvbSBcIi4uL2lzVmFsaWQvaW5kZXguanNcIjtcbmltcG9ydCBpc1dlZWtlbmQgZnJvbSBcIi4uL2lzV2Vla2VuZC9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluQnVzaW5lc3NEYXlzXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGJ1c2luZXNzIGRheXMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBidXNpbmVzcyBkYXkgcGVyaW9kcyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqIEJ1c2luZXNzIGRheXMgYmVpbmcgZGF5cyB0aGF0IGFyZW50IGluIHRoZSB3ZWVrZW5kLlxuICogTGlrZSBgZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzYCwgdGhlIGZ1bmN0aW9uIHJlbW92ZXMgdGhlIHRpbWVzIGZyb21cbiAqIHRoZSBkYXRlcyBiZWZvcmUgY2FsY3VsYXRpbmcgdGhlIGRpZmZlcmVuY2UuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIGVhcmxpZXIgZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBidXNpbmVzcyBkYXlzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGJ1c2luZXNzIGRheXMgYXJlIGJldHdlZW5cbiAqIC8vIDEwIEphbnVhcnkgMjAxNCBhbmQgMjAgSnVseSAyMDE0P1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluQnVzaW5lc3NEYXlzKFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyMCksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDAsIDEwKVxuICogKVxuICogLy89PiAxMzZcbiAqXG4gKiAvLyBIb3cgbWFueSBidXNpbmVzcyBkYXlzIGFyZSBiZXR3ZWVuXG4gKiAvLyAzMCBOb3ZlbWJlciAyMDIxIGFuZCAxIE5vdmVtYmVyIDIwMjE/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5CdXNpbmVzc0RheXMoXG4gKiAgIG5ldyBEYXRlKDIwMjEsIDEwLCAzMCksXG4gKiAgIG5ldyBEYXRlKDIwMjEsIDEwLCAxKVxuICogKVxuICogLy89PiAyMVxuICpcbiAqIC8vIEhvdyBtYW55IGJ1c2luZXNzIGRheXMgYXJlIGJldHdlZW5cbiAqIC8vIDEgTm92ZW1iZXIgMjAyMSBhbmQgMSBEZWNlbWJlciAyMDIxP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluQnVzaW5lc3NEYXlzKFxuICogICBuZXcgRGF0ZSgyMDIxLCAxMCwgMSksXG4gKiAgIG5ldyBEYXRlKDIwMjEsIDExLCAxKVxuICogKVxuICogLy89PiAtMjJcbiAqXG4gKiAvLyBIb3cgbWFueSBidXNpbmVzcyBkYXlzIGFyZSBiZXR3ZWVuXG4gKiAvLyAxIE5vdmVtYmVyIDIwMjEgYW5kIDEgTm92ZW1iZXIgMjAyMSA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5CdXNpbmVzc0RheXMoXG4gKiAgIG5ldyBEYXRlKDIwMjEsIDEwLCAxKSxcbiAqICAgbmV3IERhdGUoMjAyMSwgMTAsIDEpXG4gKiApXG4gKiAvLz0+IDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlmZmVyZW5jZUluQnVzaW5lc3NEYXlzKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnQgPSB0b0RhdGUoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBkYXRlUmlnaHQgPSB0b0RhdGUoZGlydHlEYXRlUmlnaHQpO1xuICBpZiAoIWlzVmFsaWQoZGF0ZUxlZnQpIHx8ICFpc1ZhbGlkKGRhdGVSaWdodCkpIHJldHVybiBOYU47XG4gIHZhciBjYWxlbmRhckRpZmZlcmVuY2UgPSBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gIHZhciBzaWduID0gY2FsZW5kYXJEaWZmZXJlbmNlIDwgMCA/IC0xIDogMTtcbiAgdmFyIHdlZWtzID0gdG9JbnRlZ2VyKGNhbGVuZGFyRGlmZmVyZW5jZSAvIDcpO1xuICB2YXIgcmVzdWx0ID0gd2Vla3MgKiA1O1xuICBkYXRlUmlnaHQgPSBhZGREYXlzKGRhdGVSaWdodCwgd2Vla3MgKiA3KTtcblxuICAvLyB0aGUgbG9vcCBiZWxvdyB3aWxsIHJ1biBhdCBtb3N0IDYgdGltZXMgdG8gYWNjb3VudCBmb3IgdGhlIHJlbWFpbmluZyBkYXlzIHRoYXQgZG9uJ3QgbWFrZXVwIGEgZnVsbCB3ZWVrXG4gIHdoaWxlICghaXNTYW1lRGF5KGRhdGVMZWZ0LCBkYXRlUmlnaHQpKSB7XG4gICAgLy8gc2lnbiBpcyB1c2VkIHRvIGFjY291bnQgZm9yIGJvdGggbmVnYXRpdmUgYW5kIHBvc2l0aXZlIGRpZmZlcmVuY2VzXG4gICAgcmVzdWx0ICs9IGlzV2Vla2VuZChkYXRlUmlnaHQpID8gMCA6IHNpZ247XG4gICAgZGF0ZVJpZ2h0ID0gYWRkRGF5cyhkYXRlUmlnaHQsIHNpZ24pO1xuICB9XG4gIHJldHVybiByZXN1bHQgPT09IDAgPyAwIDogcmVzdWx0O1xufSIsImltcG9ydCBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9fbGliL2dldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mRGF5IGZyb20gXCIuLi9zdGFydE9mRGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xudmFyIE1JTExJU0VDT05EU19JTl9EQVkgPSA4NjQwMDAwMDtcblxuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXNcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgZGF5cyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIGRheXMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuIFRoaXMgbWVhbnMgdGhhdCB0aGUgdGltZXMgYXJlIHJlbW92ZWRcbiAqIGZyb20gdGhlIGRhdGVzIGFuZCB0aGVuIHRoZSBkaWZmZXJlbmNlIGluIGRheXMgaXMgY2FsY3VsYXRlZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgZWFybGllciBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIGRheXNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgY2FsZW5kYXIgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMiBKdWx5IDIwMTEgMjM6MDA6MDAgYW5kIDIgSnVseSAyMDEyIDAwOjAwOjAwP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKFxuICogICBuZXcgRGF0ZSgyMDEyLCA2LCAyLCAwLCAwKSxcbiAqICAgbmV3IERhdGUoMjAxMSwgNiwgMiwgMjMsIDApXG4gKiApXG4gKiAvLz0+IDM2NlxuICogLy8gSG93IG1hbnkgY2FsZW5kYXIgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMiBKdWx5IDIwMTEgMjM6NTk6MDAgYW5kIDMgSnVseSAyMDExIDAwOjAxOjAwP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKFxuICogICBuZXcgRGF0ZSgyMDExLCA2LCAzLCAwLCAxKSxcbiAqICAgbmV3IERhdGUoMjAxMSwgNiwgMiwgMjMsIDU5KVxuICogKVxuICogLy89PiAxXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIHN0YXJ0T2ZEYXlMZWZ0ID0gc3RhcnRPZkRheShkaXJ0eURhdGVMZWZ0KTtcbiAgdmFyIHN0YXJ0T2ZEYXlSaWdodCA9IHN0YXJ0T2ZEYXkoZGlydHlEYXRlUmlnaHQpO1xuICB2YXIgdGltZXN0YW1wTGVmdCA9IHN0YXJ0T2ZEYXlMZWZ0LmdldFRpbWUoKSAtIGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoc3RhcnRPZkRheUxlZnQpO1xuICB2YXIgdGltZXN0YW1wUmlnaHQgPSBzdGFydE9mRGF5UmlnaHQuZ2V0VGltZSgpIC0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhzdGFydE9mRGF5UmlnaHQpO1xuXG4gIC8vIFJvdW5kIHRoZSBudW1iZXIgb2YgZGF5cyB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyXG4gIC8vIGJlY2F1c2UgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaW4gYSBkYXkgaXMgbm90IGNvbnN0YW50XG4gIC8vIChlLmcuIGl0J3MgZGlmZmVyZW50IGluIHRoZSBkYXkgb2YgdGhlIGRheWxpZ2h0IHNhdmluZyB0aW1lIGNsb2NrIHNoaWZ0KVxuICByZXR1cm4gTWF0aC5yb3VuZCgodGltZXN0YW1wTGVmdCAtIHRpbWVzdGFtcFJpZ2h0KSAvIE1JTExJU0VDT05EU19JTl9EQVkpO1xufSIsImltcG9ydCBnZXRJU09XZWVrWWVhciBmcm9tIFwiLi4vZ2V0SVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbkNhbGVuZGFySVNPV2Vla1llYXJzXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgZWFybGllciBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBjYWxlbmRhciBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgYXJlIDEgSmFudWFyeSAyMDEwIGFuZCAxIEphbnVhcnkgMjAxMj9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkNhbGVuZGFySVNPV2Vla1llYXJzKFxuICogICBuZXcgRGF0ZSgyMDEyLCAwLCAxKSxcbiAqICAgbmV3IERhdGUoMjAxMCwgMCwgMSlcbiAqIClcbiAqIC8vPT4gMlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5DYWxlbmRhcklTT1dlZWtZZWFycyhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGdldElTT1dlZWtZZWFyKGRpcnR5RGF0ZUxlZnQpIC0gZ2V0SVNPV2Vla1llYXIoZGlydHlEYXRlUmlnaHQpO1xufSIsImltcG9ydCBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9fbGliL2dldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mSVNPV2VlayBmcm9tIFwiLi4vc3RhcnRPZklTT1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG52YXIgTUlMTElTRUNPTkRTX0lOX1dFRUsgPSA2MDQ4MDAwMDA7XG5cbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluQ2FsZW5kYXJJU09XZWVrc1xuICogQGNhdGVnb3J5IElTTyBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIElTTyB3ZWVrcyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIElTTyB3ZWVrcyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIGVhcmxpZXIgZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBjYWxlbmRhciBJU08gd2Vla3NcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgY2FsZW5kYXIgSVNPIHdlZWtzIGFyZSBiZXR3ZWVuIDYgSnVseSAyMDE0IGFuZCAyMSBKdWx5IDIwMTQ/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5DYWxlbmRhcklTT1dlZWtzKFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyMSksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDYpXG4gKiApXG4gKiAvLz0+IDNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlmZmVyZW5jZUluQ2FsZW5kYXJJU09XZWVrcyhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIHN0YXJ0T2ZJU09XZWVrTGVmdCA9IHN0YXJ0T2ZJU09XZWVrKGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgc3RhcnRPZklTT1dlZWtSaWdodCA9IHN0YXJ0T2ZJU09XZWVrKGRpcnR5RGF0ZVJpZ2h0KTtcbiAgdmFyIHRpbWVzdGFtcExlZnQgPSBzdGFydE9mSVNPV2Vla0xlZnQuZ2V0VGltZSgpIC0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhzdGFydE9mSVNPV2Vla0xlZnQpO1xuICB2YXIgdGltZXN0YW1wUmlnaHQgPSBzdGFydE9mSVNPV2Vla1JpZ2h0LmdldFRpbWUoKSAtIGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoc3RhcnRPZklTT1dlZWtSaWdodCk7XG5cbiAgLy8gUm91bmQgdGhlIG51bWJlciBvZiBkYXlzIHRvIHRoZSBuZWFyZXN0IGludGVnZXJcbiAgLy8gYmVjYXVzZSB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiBhIHdlZWsgaXMgbm90IGNvbnN0YW50XG4gIC8vIChlLmcuIGl0J3MgZGlmZmVyZW50IGluIHRoZSB3ZWVrIG9mIHRoZSBkYXlsaWdodCBzYXZpbmcgdGltZSBjbG9jayBzaGlmdClcbiAgcmV0dXJuIE1hdGgucm91bmQoKHRpbWVzdGFtcExlZnQgLSB0aW1lc3RhbXBSaWdodCkgLyBNSUxMSVNFQ09ORFNfSU5fV0VFSyk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRoc1xuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIG1vbnRocyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIG1vbnRocyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgZWFybGllciBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIG1vbnRoc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBjYWxlbmRhciBtb250aHMgYXJlIGJldHdlZW4gMzEgSmFudWFyeSAyMDE0IGFuZCAxIFNlcHRlbWJlciAyMDE0P1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDgsIDEpLFxuICogICBuZXcgRGF0ZSgyMDE0LCAwLCAzMSlcbiAqIClcbiAqIC8vPT4gOFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocyhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0ID0gdG9EYXRlKGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgZGF0ZVJpZ2h0ID0gdG9EYXRlKGRpcnR5RGF0ZVJpZ2h0KTtcbiAgdmFyIHllYXJEaWZmID0gZGF0ZUxlZnQuZ2V0RnVsbFllYXIoKSAtIGRhdGVSaWdodC5nZXRGdWxsWWVhcigpO1xuICB2YXIgbW9udGhEaWZmID0gZGF0ZUxlZnQuZ2V0TW9udGgoKSAtIGRhdGVSaWdodC5nZXRNb250aCgpO1xuICByZXR1cm4geWVhckRpZmYgKiAxMiArIG1vbnRoRGlmZjtcbn0iLCJpbXBvcnQgZ2V0UXVhcnRlciBmcm9tIFwiLi4vZ2V0UXVhcnRlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5DYWxlbmRhclF1YXJ0ZXJzXG4gKiBAY2F0ZWdvcnkgUXVhcnRlciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBjYWxlbmRhciBxdWFydGVycyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIHF1YXJ0ZXJzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBlYXJsaWVyIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgcXVhcnRlcnNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgY2FsZW5kYXIgcXVhcnRlcnMgYXJlIGJldHdlZW4gMzEgRGVjZW1iZXIgMjAxMyBhbmQgMiBKdWx5IDIwMTQ/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5DYWxlbmRhclF1YXJ0ZXJzKFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyKSxcbiAqICAgbmV3IERhdGUoMjAxMywgMTEsIDMxKVxuICogKVxuICogLy89PiAzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbkNhbGVuZGFyUXVhcnRlcnMoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdCA9IHRvRGF0ZShkaXJ0eURhdGVMZWZ0KTtcbiAgdmFyIGRhdGVSaWdodCA9IHRvRGF0ZShkaXJ0eURhdGVSaWdodCk7XG4gIHZhciB5ZWFyRGlmZiA9IGRhdGVMZWZ0LmdldEZ1bGxZZWFyKCkgLSBkYXRlUmlnaHQuZ2V0RnVsbFllYXIoKTtcbiAgdmFyIHF1YXJ0ZXJEaWZmID0gZ2V0UXVhcnRlcihkYXRlTGVmdCkgLSBnZXRRdWFydGVyKGRhdGVSaWdodCk7XG4gIHJldHVybiB5ZWFyRGlmZiAqIDQgKyBxdWFydGVyRGlmZjtcbn0iLCJpbXBvcnQgc3RhcnRPZldlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vX2xpYi9nZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xudmFyIE1JTExJU0VDT05EU19JTl9XRUVLID0gNjA0ODAwMDAwO1xuXG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbkNhbGVuZGFyV2Vla3NcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIHdlZWtzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgd2Vla3MgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIGVhcmxpZXIgZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIHdlZWtzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGNhbGVuZGFyIHdlZWtzIGFyZSBiZXR3ZWVuIDUgSnVseSAyMDE0IGFuZCAyMCBKdWx5IDIwMTQ/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5DYWxlbmRhcldlZWtzKFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyMCksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDUpXG4gKiApXG4gKiAvLz0+IDNcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdGhlIHdlZWsgc3RhcnRzIG9uIE1vbmRheSxcbiAqIC8vIGhvdyBtYW55IGNhbGVuZGFyIHdlZWtzIGFyZSBiZXR3ZWVuIDUgSnVseSAyMDE0IGFuZCAyMCBKdWx5IDIwMTQ/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5DYWxlbmRhcldlZWtzKFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyMCksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDUpLFxuICogICB7IHdlZWtTdGFydHNPbjogMSB9XG4gKiApXG4gKiAvLz0+IDJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlmZmVyZW5jZUluQ2FsZW5kYXJXZWVrcyhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCwgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIHN0YXJ0T2ZXZWVrTGVmdCA9IHN0YXJ0T2ZXZWVrKGRpcnR5RGF0ZUxlZnQsIG9wdGlvbnMpO1xuICB2YXIgc3RhcnRPZldlZWtSaWdodCA9IHN0YXJ0T2ZXZWVrKGRpcnR5RGF0ZVJpZ2h0LCBvcHRpb25zKTtcbiAgdmFyIHRpbWVzdGFtcExlZnQgPSBzdGFydE9mV2Vla0xlZnQuZ2V0VGltZSgpIC0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhzdGFydE9mV2Vla0xlZnQpO1xuICB2YXIgdGltZXN0YW1wUmlnaHQgPSBzdGFydE9mV2Vla1JpZ2h0LmdldFRpbWUoKSAtIGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoc3RhcnRPZldlZWtSaWdodCk7XG5cbiAgLy8gUm91bmQgdGhlIG51bWJlciBvZiBkYXlzIHRvIHRoZSBuZWFyZXN0IGludGVnZXJcbiAgLy8gYmVjYXVzZSB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiBhIHdlZWsgaXMgbm90IGNvbnN0YW50XG4gIC8vIChlLmcuIGl0J3MgZGlmZmVyZW50IGluIHRoZSB3ZWVrIG9mIHRoZSBkYXlsaWdodCBzYXZpbmcgdGltZSBjbG9jayBzaGlmdClcbiAgcmV0dXJuIE1hdGgucm91bmQoKHRpbWVzdGFtcExlZnQgLSB0aW1lc3RhbXBSaWdodCkgLyBNSUxMSVNFQ09ORFNfSU5fV0VFSyk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzXG4gKiBAY2F0ZWdvcnkgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBjYWxlbmRhciB5ZWFycyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIHllYXJzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBlYXJsaWVyIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgeWVhcnNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgY2FsZW5kYXIgeWVhcnMgYXJlIGJldHdlZW4gMzEgRGVjZW1iZXIgMjAxMyBhbmQgMTEgRmVicnVhcnkgMjAxNT9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyWWVhcnMoXG4gKiAgIG5ldyBEYXRlKDIwMTUsIDEsIDExKSxcbiAqICAgbmV3IERhdGUoMjAxMywgMTEsIDMxKVxuICogKVxuICogLy89PiAyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbkNhbGVuZGFyWWVhcnMoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdCA9IHRvRGF0ZShkaXJ0eURhdGVMZWZ0KTtcbiAgdmFyIGRhdGVSaWdodCA9IHRvRGF0ZShkaXJ0eURhdGVSaWdodCk7XG4gIHJldHVybiBkYXRlTGVmdC5nZXRGdWxsWWVhcigpIC0gZGF0ZVJpZ2h0LmdldEZ1bGxZZWFyKCk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5DYWxlbmRhckRheXMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7IC8vIExpa2UgYGNvbXBhcmVBc2NgIGJ1dCB1c2VzIGxvY2FsIHRpbWUgbm90IFVUQywgd2hpY2ggaXMgbmVlZGVkXG4vLyBmb3IgYWNjdXJhdGUgZXF1YWxpdHkgY29tcGFyaXNvbnMgb2YgVVRDIHRpbWVzdGFtcHMgdGhhdCBlbmQgdXBcbi8vIGhhdmluZyB0aGUgc2FtZSByZXByZXNlbnRhdGlvbiBpbiBsb2NhbCB0aW1lLCBlLmcuIG9uZSBob3VyIGJlZm9yZVxuLy8gRFNUIGVuZHMgdnMuIHRoZSBpbnN0YW50IHRoYXQgRFNUIGVuZHMuXG5mdW5jdGlvbiBjb21wYXJlTG9jYWxBc2MoZGF0ZUxlZnQsIGRhdGVSaWdodCkge1xuICB2YXIgZGlmZiA9IGRhdGVMZWZ0LmdldEZ1bGxZZWFyKCkgLSBkYXRlUmlnaHQuZ2V0RnVsbFllYXIoKSB8fCBkYXRlTGVmdC5nZXRNb250aCgpIC0gZGF0ZVJpZ2h0LmdldE1vbnRoKCkgfHwgZGF0ZUxlZnQuZ2V0RGF0ZSgpIC0gZGF0ZVJpZ2h0LmdldERhdGUoKSB8fCBkYXRlTGVmdC5nZXRIb3VycygpIC0gZGF0ZVJpZ2h0LmdldEhvdXJzKCkgfHwgZGF0ZUxlZnQuZ2V0TWludXRlcygpIC0gZGF0ZVJpZ2h0LmdldE1pbnV0ZXMoKSB8fCBkYXRlTGVmdC5nZXRTZWNvbmRzKCkgLSBkYXRlUmlnaHQuZ2V0U2Vjb25kcygpIHx8IGRhdGVMZWZ0LmdldE1pbGxpc2Vjb25kcygpIC0gZGF0ZVJpZ2h0LmdldE1pbGxpc2Vjb25kcygpO1xuICBpZiAoZGlmZiA8IDApIHtcbiAgICByZXR1cm4gLTE7XG4gIH0gZWxzZSBpZiAoZGlmZiA+IDApIHtcbiAgICByZXR1cm4gMTtcbiAgICAvLyBSZXR1cm4gMCBpZiBkaWZmIGlzIDA7IHJldHVybiBOYU4gaWYgZGlmZiBpcyBOYU5cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZGlmZjtcbiAgfVxufVxuXG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbkRheXNcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgZnVsbCBkYXlzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgZnVsbCBkYXkgcGVyaW9kcyBiZXR3ZWVuIHR3byBkYXRlcy4gRnJhY3Rpb25hbCBkYXlzIGFyZVxuICogdHJ1bmNhdGVkIHRvd2FyZHMgemVyby5cbiAqXG4gKiBPbmUgXCJmdWxsIGRheVwiIGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIGEgbG9jYWwgdGltZSBpbiBvbmUgZGF5IHRvIHRoZSBzYW1lXG4gKiBsb2NhbCB0aW1lIG9uIHRoZSBuZXh0IG9yIHByZXZpb3VzIGRheS4gQSBmdWxsIGRheSBjYW4gc29tZXRpbWVzIGJlIGxlc3MgdGhhblxuICogb3IgbW9yZSB0aGFuIDI0IGhvdXJzIGlmIGEgZGF5bGlnaHQgc2F2aW5ncyBjaGFuZ2UgaGFwcGVucyBiZXR3ZWVuIHR3byBkYXRlcy5cbiAqXG4gKiBUbyBpZ25vcmUgRFNUIGFuZCBvbmx5IG1lYXN1cmUgZXhhY3QgMjQtaG91ciBwZXJpb2RzLCB1c2UgdGhpcyBpbnN0ZWFkOlxuICogYE1hdGguZmxvb3IoZGlmZmVyZW5jZUluSG91cnMoZGF0ZUxlZnQsIGRhdGVSaWdodCkvMjQpfDBgLlxuICpcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgZWFybGllciBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGZ1bGwgZGF5cyBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsIHRpbWV6b25lXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGZ1bGwgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMiBKdWx5IDIwMTEgMjM6MDA6MDAgYW5kIDIgSnVseSAyMDEyIDAwOjAwOjAwP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluRGF5cyhcbiAqICAgbmV3IERhdGUoMjAxMiwgNiwgMiwgMCwgMCksXG4gKiAgIG5ldyBEYXRlKDIwMTEsIDYsIDIsIDIzLCAwKVxuICogKVxuICogLy89PiAzNjVcbiAqIC8vIEhvdyBtYW55IGZ1bGwgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMiBKdWx5IDIwMTEgMjM6NTk6MDAgYW5kIDMgSnVseSAyMDExIDAwOjAxOjAwP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluRGF5cyhcbiAqICAgbmV3IERhdGUoMjAxMSwgNiwgMywgMCwgMSksXG4gKiAgIG5ldyBEYXRlKDIwMTEsIDYsIDIsIDIzLCA1OSlcbiAqIClcbiAqIC8vPT4gMFxuICogLy8gSG93IG1hbnkgZnVsbCBkYXlzIGFyZSBiZXR3ZWVuXG4gKiAvLyAxIE1hcmNoIDIwMjAgMDowMCBhbmQgMSBKdW5lIDIwMjAgMDowMCA/XG4gKiAvLyBOb3RlOiBiZWNhdXNlIGxvY2FsIHRpbWUgaXMgdXNlZCwgdGhlXG4gKiAvLyByZXN1bHQgd2lsbCBhbHdheXMgYmUgOTIgZGF5cywgZXZlbiBpblxuICogLy8gdGltZSB6b25lcyB3aGVyZSBEU1Qgc3RhcnRzIGFuZCB0aGVcbiAqIC8vIHBlcmlvZCBoYXMgb25seSA5MioyNC0xIGhvdXJzLlxuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluRGF5cyhcbiAqICAgbmV3IERhdGUoMjAyMCwgNSwgMSksXG4gKiAgIG5ldyBEYXRlKDIwMjAsIDIsIDEpXG4gKiApXG4vLz0+IDkyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbkRheXMoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdCA9IHRvRGF0ZShkaXJ0eURhdGVMZWZ0KTtcbiAgdmFyIGRhdGVSaWdodCA9IHRvRGF0ZShkaXJ0eURhdGVSaWdodCk7XG4gIHZhciBzaWduID0gY29tcGFyZUxvY2FsQXNjKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICB2YXIgZGlmZmVyZW5jZSA9IE1hdGguYWJzKGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSk7XG4gIGRhdGVMZWZ0LnNldERhdGUoZGF0ZUxlZnQuZ2V0RGF0ZSgpIC0gc2lnbiAqIGRpZmZlcmVuY2UpO1xuXG4gIC8vIE1hdGguYWJzKGRpZmYgaW4gZnVsbCBkYXlzIC0gZGlmZiBpbiBjYWxlbmRhciBkYXlzKSA9PT0gMSBpZiBsYXN0IGNhbGVuZGFyIGRheSBpcyBub3QgZnVsbFxuICAvLyBJZiBzbywgcmVzdWx0IG11c3QgYmUgZGVjcmVhc2VkIGJ5IDEgaW4gYWJzb2x1dGUgdmFsdWVcbiAgdmFyIGlzTGFzdERheU5vdEZ1bGwgPSBOdW1iZXIoY29tcGFyZUxvY2FsQXNjKGRhdGVMZWZ0LCBkYXRlUmlnaHQpID09PSAtc2lnbik7XG4gIHZhciByZXN1bHQgPSBzaWduICogKGRpZmZlcmVuY2UgLSBpc0xhc3REYXlOb3RGdWxsKTtcbiAgLy8gUHJldmVudCBuZWdhdGl2ZSB6ZXJvXG4gIHJldHVybiByZXN1bHQgPT09IDAgPyAwIDogcmVzdWx0O1xufSIsImltcG9ydCB7IG1pbGxpc2Vjb25kc0luSG91ciB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldFJvdW5kaW5nTWV0aG9kIH0gZnJvbSBcIi4uL19saWIvcm91bmRpbmdNZXRob2RzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbkhvdXJzXG4gKiBAY2F0ZWdvcnkgSG91ciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBob3VycyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGhvdXJzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBlYXJsaWVyIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRpb25zLnJvdW5kaW5nTWV0aG9kPSd0cnVuYyddIC0gYSByb3VuZGluZyBtZXRob2QgKGBjZWlsYCwgYGZsb29yYCwgYHJvdW5kYCBvciBgdHJ1bmNgKVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBob3Vyc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBob3VycyBhcmUgYmV0d2VlbiAyIEp1bHkgMjAxNCAwNjo1MDowMCBhbmQgMiBKdWx5IDIwMTQgMTk6MDA6MDA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5Ib3VycyhcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgMTksIDApLFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyLCA2LCA1MClcbiAqIClcbiAqIC8vPT4gMTJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlmZmVyZW5jZUluSG91cnMoZGF0ZUxlZnQsIGRhdGVSaWdodCwgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRpZmYgPSBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMoZGF0ZUxlZnQsIGRhdGVSaWdodCkgLyBtaWxsaXNlY29uZHNJbkhvdXI7XG4gIHJldHVybiBnZXRSb3VuZGluZ01ldGhvZChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMucm91bmRpbmdNZXRob2QpKGRpZmYpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbkNhbGVuZGFySVNPV2Vla1llYXJzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5DYWxlbmRhcklTT1dlZWtZZWFycy9pbmRleC5qc1wiO1xuaW1wb3J0IGNvbXBhcmVBc2MgZnJvbSBcIi4uL2NvbXBhcmVBc2MvaW5kZXguanNcIjtcbmltcG9ydCBzdWJJU09XZWVrWWVhcnMgZnJvbSBcIi4uL3N1YklTT1dlZWtZZWFycy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluSVNPV2Vla1llYXJzXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgZnVsbCBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBmdWxsIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFycyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIGVhcmxpZXIgZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBmdWxsIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBmdWxsIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFycyBhcmUgYmV0d2VlbiAxIEphbnVhcnkgMjAxMCBhbmQgMSBKYW51YXJ5IDIwMTI/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5JU09XZWVrWWVhcnMoXG4gKiAgIG5ldyBEYXRlKDIwMTIsIDAsIDEpLFxuICogICBuZXcgRGF0ZSgyMDEwLCAwLCAxKVxuICogKVxuICogLy89PiAxXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbklTT1dlZWtZZWFycyhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0ID0gdG9EYXRlKGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgZGF0ZVJpZ2h0ID0gdG9EYXRlKGRpcnR5RGF0ZVJpZ2h0KTtcbiAgdmFyIHNpZ24gPSBjb21wYXJlQXNjKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICB2YXIgZGlmZmVyZW5jZSA9IE1hdGguYWJzKGRpZmZlcmVuY2VJbkNhbGVuZGFySVNPV2Vla1llYXJzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpKTtcbiAgZGF0ZUxlZnQgPSBzdWJJU09XZWVrWWVhcnMoZGF0ZUxlZnQsIHNpZ24gKiBkaWZmZXJlbmNlKTtcblxuICAvLyBNYXRoLmFicyhkaWZmIGluIGZ1bGwgSVNPIHllYXJzIC0gZGlmZiBpbiBjYWxlbmRhciBJU08geWVhcnMpID09PSAxXG4gIC8vIGlmIGxhc3QgY2FsZW5kYXIgSVNPIHllYXIgaXMgbm90IGZ1bGxcbiAgLy8gSWYgc28sIHJlc3VsdCBtdXN0IGJlIGRlY3JlYXNlZCBieSAxIGluIGFic29sdXRlIHZhbHVlXG4gIHZhciBpc0xhc3RJU09XZWVrWWVhck5vdEZ1bGwgPSBOdW1iZXIoY29tcGFyZUFzYyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSA9PT0gLXNpZ24pO1xuICB2YXIgcmVzdWx0ID0gc2lnbiAqIChkaWZmZXJlbmNlIC0gaXNMYXN0SVNPV2Vla1llYXJOb3RGdWxsKTtcbiAgLy8gUHJldmVudCBuZWdhdGl2ZSB6ZXJvXG4gIHJldHVybiByZXN1bHQgPT09IDAgPyAwIDogcmVzdWx0O1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzXG4gKiBAY2F0ZWdvcnkgTWlsbGlzZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBlYXJsaWVyIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IG1pbGxpc2Vjb25kcyBhcmUgYmV0d2VlblxuICogLy8gMiBKdWx5IDIwMTQgMTI6MzA6MjAuNjAwIGFuZCAyIEp1bHkgMjAxNCAxMjozMDoyMS43MDA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDEyLCAzMCwgMjEsIDcwMCksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDEyLCAzMCwgMjAsIDYwMClcbiAqIClcbiAqIC8vPT4gMTEwMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMoZGF0ZUxlZnQsIGRhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHRvRGF0ZShkYXRlTGVmdCkuZ2V0VGltZSgpIC0gdG9EYXRlKGRhdGVSaWdodCkuZ2V0VGltZSgpO1xufSIsImltcG9ydCB7IG1pbGxpc2Vjb25kc0luTWludXRlIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0Um91bmRpbmdNZXRob2QgfSBmcm9tIFwiLi4vX2xpYi9yb3VuZGluZ01ldGhvZHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluTWludXRlc1xuICogQGNhdGVnb3J5IE1pbnV0ZSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBtaW51dGVzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBzaWduZWQgbnVtYmVyIG9mIGZ1bGwgKHJvdW5kZWQgdG93YXJkcyAwKSBtaW51dGVzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBlYXJsaWVyIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRpb25zLnJvdW5kaW5nTWV0aG9kPSd0cnVuYyddIC0gYSByb3VuZGluZyBtZXRob2QgKGBjZWlsYCwgYGZsb29yYCwgYHJvdW5kYCBvciBgdHJ1bmNgKVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBtaW51dGVzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IG1pbnV0ZXMgYXJlIGJldHdlZW4gMiBKdWx5IDIwMTQgMTI6MDc6NTkgYW5kIDIgSnVseSAyMDE0IDEyOjIwOjAwP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluTWludXRlcyhcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgMTIsIDIwLCAwKSxcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgMTIsIDcsIDU5KVxuICogKVxuICogLy89PiAxMlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBtaW51dGVzIGFyZSBiZXR3ZWVuIDEwOjAxOjU5IGFuZCAxMDowMDowMFxuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluTWludXRlcyhcbiAqICAgbmV3IERhdGUoMjAwMCwgMCwgMSwgMTAsIDAsIDApLFxuICogICBuZXcgRGF0ZSgyMDAwLCAwLCAxLCAxMCwgMSwgNTkpXG4gKiApXG4gKiAvLz0+IC0xXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbk1pbnV0ZXMoZGF0ZUxlZnQsIGRhdGVSaWdodCwgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRpZmYgPSBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMoZGF0ZUxlZnQsIGRhdGVSaWdodCkgLyBtaWxsaXNlY29uZHNJbk1pbnV0ZTtcbiAgcmV0dXJuIGdldFJvdW5kaW5nTWV0aG9kKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5yb3VuZGluZ01ldGhvZCkoZGlmZik7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkNhbGVuZGFyTW9udGhzL2luZGV4LmpzXCI7XG5pbXBvcnQgY29tcGFyZUFzYyBmcm9tIFwiLi4vY29tcGFyZUFzYy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCBpc0xhc3REYXlPZk1vbnRoIGZyb20gXCIuLi9pc0xhc3REYXlPZk1vbnRoL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbk1vbnRoc1xuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGZ1bGwgbW9udGhzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgZnVsbCBtb250aHMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMgdXNpbmcgdHJ1bmMgYXMgYSBkZWZhdWx0IHJvdW5kaW5nIG1ldGhvZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgZWFybGllciBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGZ1bGwgbW9udGhzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGZ1bGwgbW9udGhzIGFyZSBiZXR3ZWVuIDMxIEphbnVhcnkgMjAxNCBhbmQgMSBTZXB0ZW1iZXIgMjAxND9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbk1vbnRocyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgbmV3IERhdGUoMjAxNCwgMCwgMzEpKVxuICogLy89PiA3XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbk1vbnRocyhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0ID0gdG9EYXRlKGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgZGF0ZVJpZ2h0ID0gdG9EYXRlKGRpcnR5RGF0ZVJpZ2h0KTtcbiAgdmFyIHNpZ24gPSBjb21wYXJlQXNjKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICB2YXIgZGlmZmVyZW5jZSA9IE1hdGguYWJzKGRpZmZlcmVuY2VJbkNhbGVuZGFyTW9udGhzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpKTtcbiAgdmFyIHJlc3VsdDtcblxuICAvLyBDaGVjayBmb3IgdGhlIGRpZmZlcmVuY2Ugb2YgbGVzcyB0aGFuIG1vbnRoXG4gIGlmIChkaWZmZXJlbmNlIDwgMSkge1xuICAgIHJlc3VsdCA9IDA7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGRhdGVMZWZ0LmdldE1vbnRoKCkgPT09IDEgJiYgZGF0ZUxlZnQuZ2V0RGF0ZSgpID4gMjcpIHtcbiAgICAgIC8vIFRoaXMgd2lsbCBjaGVjayBpZiB0aGUgZGF0ZSBpcyBlbmQgb2YgRmViIGFuZCBhc3NpZ24gYSBoaWdoZXIgZW5kIG9mIG1vbnRoIGRhdGVcbiAgICAgIC8vIHRvIGNvbXBhcmUgaXQgd2l0aCBKYW5cbiAgICAgIGRhdGVMZWZ0LnNldERhdGUoMzApO1xuICAgIH1cbiAgICBkYXRlTGVmdC5zZXRNb250aChkYXRlTGVmdC5nZXRNb250aCgpIC0gc2lnbiAqIGRpZmZlcmVuY2UpO1xuXG4gICAgLy8gTWF0aC5hYnMoZGlmZiBpbiBmdWxsIG1vbnRocyAtIGRpZmYgaW4gY2FsZW5kYXIgbW9udGhzKSA9PT0gMSBpZiBsYXN0IGNhbGVuZGFyIG1vbnRoIGlzIG5vdCBmdWxsXG4gICAgLy8gSWYgc28sIHJlc3VsdCBtdXN0IGJlIGRlY3JlYXNlZCBieSAxIGluIGFic29sdXRlIHZhbHVlXG4gICAgdmFyIGlzTGFzdE1vbnRoTm90RnVsbCA9IGNvbXBhcmVBc2MoZGF0ZUxlZnQsIGRhdGVSaWdodCkgPT09IC1zaWduO1xuXG4gICAgLy8gQ2hlY2sgZm9yIGNhc2VzIG9mIG9uZSBmdWxsIGNhbGVuZGFyIG1vbnRoXG4gICAgaWYgKGlzTGFzdERheU9mTW9udGgodG9EYXRlKGRpcnR5RGF0ZUxlZnQpKSAmJiBkaWZmZXJlbmNlID09PSAxICYmIGNvbXBhcmVBc2MoZGlydHlEYXRlTGVmdCwgZGF0ZVJpZ2h0KSA9PT0gMSkge1xuICAgICAgaXNMYXN0TW9udGhOb3RGdWxsID0gZmFsc2U7XG4gICAgfVxuICAgIHJlc3VsdCA9IHNpZ24gKiAoZGlmZmVyZW5jZSAtIE51bWJlcihpc0xhc3RNb250aE5vdEZ1bGwpKTtcbiAgfVxuXG4gIC8vIFByZXZlbnQgbmVnYXRpdmUgemVyb1xuICByZXR1cm4gcmVzdWx0ID09PSAwID8gMCA6IHJlc3VsdDtcbn0iLCJpbXBvcnQgZGlmZmVyZW5jZUluTW9udGhzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5Nb250aHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXRSb3VuZGluZ01ldGhvZCB9IGZyb20gXCIuLi9fbGliL3JvdW5kaW5nTWV0aG9kcy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5RdWFydGVyc1xuICogQGNhdGVnb3J5IFF1YXJ0ZXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgcXVhcnRlcnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBxdWFydGVycyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgZWFybGllciBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5yb3VuZGluZ01ldGhvZD0ndHJ1bmMnXSAtIGEgcm91bmRpbmcgbWV0aG9kIChgY2VpbGAsIGBmbG9vcmAsIGByb3VuZGAgb3IgYHRydW5jYClcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgZnVsbCBxdWFydGVyc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBmdWxsIHF1YXJ0ZXJzIGFyZSBiZXR3ZWVuIDMxIERlY2VtYmVyIDIwMTMgYW5kIDIgSnVseSAyMDE0P1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluUXVhcnRlcnMobmV3IERhdGUoMjAxNCwgNiwgMiksIG5ldyBEYXRlKDIwMTMsIDExLCAzMSkpXG4gKiAvLz0+IDJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlmZmVyZW5jZUluUXVhcnRlcnMoZGF0ZUxlZnQsIGRhdGVSaWdodCwgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRpZmYgPSBkaWZmZXJlbmNlSW5Nb250aHMoZGF0ZUxlZnQsIGRhdGVSaWdodCkgLyAzO1xuICByZXR1cm4gZ2V0Um91bmRpbmdNZXRob2Qob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnJvdW5kaW5nTWV0aG9kKShkaWZmKTtcbn0iLCJpbXBvcnQgZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXRSb3VuZGluZ01ldGhvZCB9IGZyb20gXCIuLi9fbGliL3JvdW5kaW5nTWV0aG9kcy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5TZWNvbmRzXG4gKiBAY2F0ZWdvcnkgU2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIHNlY29uZHMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBzZWNvbmRzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBlYXJsaWVyIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRpb25zLnJvdW5kaW5nTWV0aG9kPSd0cnVuYyddIC0gYSByb3VuZGluZyBtZXRob2QgKGBjZWlsYCwgYGZsb29yYCwgYHJvdW5kYCBvciBgdHJ1bmNgKVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBzZWNvbmRzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IHNlY29uZHMgYXJlIGJldHdlZW5cbiAqIC8vIDIgSnVseSAyMDE0IDEyOjMwOjA3Ljk5OSBhbmQgMiBKdWx5IDIwMTQgMTI6MzA6MjAuMDAwP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluU2Vjb25kcyhcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgMTIsIDMwLCAyMCwgMCksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDEyLCAzMCwgNywgOTk5KVxuICogKVxuICogLy89PiAxMlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5TZWNvbmRzKGRhdGVMZWZ0LCBkYXRlUmlnaHQsIG9wdGlvbnMpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkaWZmID0gZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpIC8gMTAwMDtcbiAgcmV0dXJuIGdldFJvdW5kaW5nTWV0aG9kKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5yb3VuZGluZ01ldGhvZCkoZGlmZik7XG59IiwiaW1wb3J0IGRpZmZlcmVuY2VJbkRheXMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkRheXMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXRSb3VuZGluZ01ldGhvZCB9IGZyb20gXCIuLi9fbGliL3JvdW5kaW5nTWV0aG9kcy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5XZWVrc1xuICogQGNhdGVnb3J5IFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgZnVsbCB3ZWVrcyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGZ1bGwgd2Vla3MgYmV0d2VlbiB0d28gZGF0ZXMuIEZyYWN0aW9uYWwgd2Vla3MgYXJlXG4gKiB0cnVuY2F0ZWQgdG93YXJkcyB6ZXJvIGJ5IGRlZmF1bHQuXG4gKlxuICogT25lIFwiZnVsbCB3ZWVrXCIgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gYSBsb2NhbCB0aW1lIGluIG9uZSBkYXkgdG8gdGhlIHNhbWVcbiAqIGxvY2FsIHRpbWUgNyBkYXlzIGVhcmxpZXIgb3IgbGF0ZXIuIEEgZnVsbCB3ZWVrIGNhbiBzb21ldGltZXMgYmUgbGVzcyB0aGFuXG4gKiBvciBtb3JlIHRoYW4gNyoyNCBob3VycyBpZiBhIGRheWxpZ2h0IHNhdmluZ3MgY2hhbmdlIGhhcHBlbnMgYmV0d2VlbiB0d28gZGF0ZXMuXG4gKlxuICogVG8gaWdub3JlIERTVCBhbmQgb25seSBtZWFzdXJlIGV4YWN0IDcqMjQtaG91ciBwZXJpb2RzLCB1c2UgdGhpcyBpbnN0ZWFkOlxuICogYE1hdGguZmxvb3IoZGlmZmVyZW5jZUluSG91cnMoZGF0ZUxlZnQsIGRhdGVSaWdodCkvKDcqMjQpKXwwYC5cbiAqXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIGVhcmxpZXIgZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdGlvbnMucm91bmRpbmdNZXRob2Q9J3RydW5jJ10gLSBhIHJvdW5kaW5nIG1ldGhvZCAoYGNlaWxgLCBgZmxvb3JgLCBgcm91bmRgIG9yIGB0cnVuY2ApXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGZ1bGwgd2Vla3NcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgZnVsbCB3ZWVrcyBhcmUgYmV0d2VlbiA1IEp1bHkgMjAxNCBhbmQgMjAgSnVseSAyMDE0P1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluV2Vla3MobmV3IERhdGUoMjAxNCwgNiwgMjApLCBuZXcgRGF0ZSgyMDE0LCA2LCA1KSlcbiAqIC8vPT4gMlxuICpcbiAqIC8vIEhvdyBtYW55IGZ1bGwgd2Vla3MgYXJlIGJldHdlZW5cbiAqIC8vIDEgTWFyY2ggMjAyMCAwOjAwIGFuZCA2IEp1bmUgMjAyMCAwOjAwID9cbiAqIC8vIE5vdGU6IGJlY2F1c2UgbG9jYWwgdGltZSBpcyB1c2VkLCB0aGVcbiAqIC8vIHJlc3VsdCB3aWxsIGFsd2F5cyBiZSA4IHdlZWtzICg1NCBkYXlzKSxcbiAqIC8vIGV2ZW4gaWYgRFNUIHN0YXJ0cyBhbmQgdGhlIHBlcmlvZCBoYXNcbiAqIC8vIG9ubHkgNTQqMjQtMSBob3Vycy5cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbldlZWtzKFxuICogICBuZXcgRGF0ZSgyMDIwLCA1LCAxKSxcbiAqICAgbmV3IERhdGUoMjAyMCwgMiwgNilcbiAqIClcbiAqIC8vPT4gOFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5XZWVrcyhkYXRlTGVmdCwgZGF0ZVJpZ2h0LCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGlmZiA9IGRpZmZlcmVuY2VJbkRheXMoZGF0ZUxlZnQsIGRhdGVSaWdodCkgLyA3O1xuICByZXR1cm4gZ2V0Um91bmRpbmdNZXRob2Qob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnJvdW5kaW5nTWV0aG9kKShkaWZmKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgY29tcGFyZUFzYyBmcm9tIFwiLi4vY29tcGFyZUFzYy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluWWVhcnNcbiAqIEBjYXRlZ29yeSBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGZ1bGwgeWVhcnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBmdWxsIHllYXJzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBlYXJsaWVyIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgZnVsbCB5ZWFyc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBmdWxsIHllYXJzIGFyZSBiZXR3ZWVuIDMxIERlY2VtYmVyIDIwMTMgYW5kIDExIEZlYnJ1YXJ5IDIwMTU/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5ZZWFycyhuZXcgRGF0ZSgyMDE1LCAxLCAxMSksIG5ldyBEYXRlKDIwMTMsIDExLCAzMSkpXG4gKiAvLz0+IDFcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlmZmVyZW5jZUluWWVhcnMoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdCA9IHRvRGF0ZShkaXJ0eURhdGVMZWZ0KTtcbiAgdmFyIGRhdGVSaWdodCA9IHRvRGF0ZShkaXJ0eURhdGVSaWdodCk7XG4gIHZhciBzaWduID0gY29tcGFyZUFzYyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgdmFyIGRpZmZlcmVuY2UgPSBNYXRoLmFicyhkaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpKTtcblxuICAvLyBTZXQgYm90aCBkYXRlcyB0byBhIHZhbGlkIGxlYXAgeWVhciBmb3IgYWNjdXJhdGUgY29tcGFyaXNvbiB3aGVuIGRlYWxpbmdcbiAgLy8gd2l0aCBsZWFwIGRheXNcbiAgZGF0ZUxlZnQuc2V0RnVsbFllYXIoMTU4NCk7XG4gIGRhdGVSaWdodC5zZXRGdWxsWWVhcigxNTg0KTtcblxuICAvLyBNYXRoLmFicyhkaWZmIGluIGZ1bGwgeWVhcnMgLSBkaWZmIGluIGNhbGVuZGFyIHllYXJzKSA9PT0gMSBpZiBsYXN0IGNhbGVuZGFyIHllYXIgaXMgbm90IGZ1bGxcbiAgLy8gSWYgc28sIHJlc3VsdCBtdXN0IGJlIGRlY3JlYXNlZCBieSAxIGluIGFic29sdXRlIHZhbHVlXG4gIHZhciBpc0xhc3RZZWFyTm90RnVsbCA9IGNvbXBhcmVBc2MoZGF0ZUxlZnQsIGRhdGVSaWdodCkgPT09IC1zaWduO1xuICB2YXIgcmVzdWx0ID0gc2lnbiAqIChkaWZmZXJlbmNlIC0gTnVtYmVyKGlzTGFzdFllYXJOb3RGdWxsKSk7XG4gIC8vIFByZXZlbnQgbmVnYXRpdmUgemVyb1xuICByZXR1cm4gcmVzdWx0ID09PSAwID8gMCA6IHJlc3VsdDtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVhY2hEYXlPZkludGVydmFsXG4gKiBAY2F0ZWdvcnkgSW50ZXJ2YWwgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBhcnJheSBvZiBkYXRlcyB3aXRoaW4gdGhlIHNwZWNpZmllZCB0aW1lIGludGVydmFsLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBhcnJheSBvZiBkYXRlcyB3aXRoaW4gdGhlIHNwZWNpZmllZCB0aW1lIGludGVydmFsLlxuICpcbiAqIEBwYXJhbSB7SW50ZXJ2YWx9IGludGVydmFsIC0gdGhlIGludGVydmFsLiBTZWUgW0ludGVydmFsXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0ludGVydmFsfVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMuc3RlcD0xXSAtIHRoZSBzdGVwIHRvIGluY3JlbWVudCBieS4gVGhlIHZhbHVlIHNob3VsZCBiZSBtb3JlIHRoYW4gMS5cbiAqIEByZXR1cm5zIHtEYXRlW119IHRoZSBhcnJheSB3aXRoIHN0YXJ0cyBvZiBkYXlzIGZyb20gdGhlIGRheSBvZiB0aGUgaW50ZXJ2YWwgc3RhcnQgdG8gdGhlIGRheSBvZiB0aGUgaW50ZXJ2YWwgZW5kXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLnN0ZXBgIG11c3QgYmUgYSBudW1iZXIgZ3JlYXRlciB0aGFuIDFcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IFRoZSBzdGFydCBvZiBhbiBpbnRlcnZhbCBjYW5ub3QgYmUgYWZ0ZXIgaXRzIGVuZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gRGF0ZSBpbiBpbnRlcnZhbCBjYW5ub3QgYmUgYEludmFsaWQgRGF0ZWBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRWFjaCBkYXkgYmV0d2VlbiA2IE9jdG9iZXIgMjAxNCBhbmQgMTAgT2N0b2JlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gZWFjaERheU9mSW50ZXJ2YWwoe1xuICogICBzdGFydDogbmV3IERhdGUoMjAxNCwgOSwgNiksXG4gKiAgIGVuZDogbmV3IERhdGUoMjAxNCwgOSwgMTApXG4gKiB9KVxuICogLy89PiBbXG4gKiAvLyAgIE1vbiBPY3QgMDYgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgVHVlIE9jdCAwNyAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBXZWQgT2N0IDA4IDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFRodSBPY3QgMDkgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgRnJpIE9jdCAxMCAyMDE0IDAwOjAwOjAwXG4gKiAvLyBdXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVhY2hEYXlPZkludGVydmFsKGRpcnR5SW50ZXJ2YWwsIG9wdGlvbnMpIHtcbiAgdmFyIF9vcHRpb25zJHN0ZXA7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgaW50ZXJ2YWwgPSBkaXJ0eUludGVydmFsIHx8IHt9O1xuICB2YXIgc3RhcnREYXRlID0gdG9EYXRlKGludGVydmFsLnN0YXJ0KTtcbiAgdmFyIGVuZERhdGUgPSB0b0RhdGUoaW50ZXJ2YWwuZW5kKTtcbiAgdmFyIGVuZFRpbWUgPSBlbmREYXRlLmdldFRpbWUoKTtcblxuICAvLyBUaHJvdyBhbiBleGNlcHRpb24gaWYgc3RhcnQgZGF0ZSBpcyBhZnRlciBlbmQgZGF0ZSBvciBpZiBhbnkgZGF0ZSBpcyBgSW52YWxpZCBEYXRlYFxuICBpZiAoIShzdGFydERhdGUuZ2V0VGltZSgpIDw9IGVuZFRpbWUpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgaW50ZXJ2YWwnKTtcbiAgfVxuICB2YXIgZGF0ZXMgPSBbXTtcbiAgdmFyIGN1cnJlbnREYXRlID0gc3RhcnREYXRlO1xuICBjdXJyZW50RGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgdmFyIHN0ZXAgPSBOdW1iZXIoKF9vcHRpb25zJHN0ZXAgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuc3RlcCkgIT09IG51bGwgJiYgX29wdGlvbnMkc3RlcCAhPT0gdm9pZCAwID8gX29wdGlvbnMkc3RlcCA6IDEpO1xuICBpZiAoc3RlcCA8IDEgfHwgaXNOYU4oc3RlcCkpIHRocm93IG5ldyBSYW5nZUVycm9yKCdgb3B0aW9ucy5zdGVwYCBtdXN0IGJlIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiAxJyk7XG4gIHdoaWxlIChjdXJyZW50RGF0ZS5nZXRUaW1lKCkgPD0gZW5kVGltZSkge1xuICAgIGRhdGVzLnB1c2godG9EYXRlKGN1cnJlbnREYXRlKSk7XG4gICAgY3VycmVudERhdGUuc2V0RGF0ZShjdXJyZW50RGF0ZS5nZXREYXRlKCkgKyBzdGVwKTtcbiAgICBjdXJyZW50RGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgfVxuICByZXR1cm4gZGF0ZXM7XG59IiwiaW1wb3J0IGFkZEhvdXJzIGZyb20gXCIuLi9hZGRIb3Vycy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlYWNoSG91ck9mSW50ZXJ2YWxcbiAqIEBjYXRlZ29yeSBJbnRlcnZhbCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGFycmF5IG9mIGhvdXJzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHRpbWUgaW50ZXJ2YWwuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGFycmF5IG9mIGhvdXJzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHRpbWUgaW50ZXJ2YWwuXG4gKlxuICogQHBhcmFtIHtJbnRlcnZhbH0gaW50ZXJ2YWwgLSB0aGUgaW50ZXJ2YWwuIFNlZSBbSW50ZXJ2YWxde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvSW50ZXJ2YWx9XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy5zdGVwPTFdIC0gdGhlIHN0ZXAgdG8gaW5jcmVtZW50IGJ5LiBUaGUgdmFsdWUgc2hvdWxkIGJlIG1vcmUgdGhhbiAxLlxuICogQHJldHVybnMge0RhdGVbXX0gdGhlIGFycmF5IHdpdGggc3RhcnRzIG9mIGhvdXJzIGZyb20gdGhlIGhvdXIgb2YgdGhlIGludGVydmFsIHN0YXJ0IHRvIHRoZSBob3VyIG9mIHRoZSBpbnRlcnZhbCBlbmRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuc3RlcGAgbXVzdCBiZSBhIG51bWJlciBncmVhdGVyIHRoYW4gMVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gVGhlIHN0YXJ0IG9mIGFuIGludGVydmFsIGNhbm5vdCBiZSBhZnRlciBpdHMgZW5kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBEYXRlIGluIGludGVydmFsIGNhbm5vdCBiZSBgSW52YWxpZCBEYXRlYFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFYWNoIGhvdXIgYmV0d2VlbiA2IE9jdG9iZXIgMjAxNCwgMTI6MDAgYW5kIDYgT2N0b2JlciAyMDE0LCAxNTowMFxuICogY29uc3QgcmVzdWx0ID0gZWFjaEhvdXJPZkludGVydmFsKHtcbiAqICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDksIDYsIDEyKSxcbiAqICAgZW5kOiBuZXcgRGF0ZSgyMDE0LCA5LCA2LCAxNSlcbiAqIH0pXG4gKiAvLz0+IFtcbiAqIC8vICAgTW9uIE9jdCAwNiAyMDE0IDEyOjAwOjAwLFxuICogLy8gICBNb24gT2N0IDA2IDIwMTQgMTM6MDA6MDAsXG4gKiAvLyAgIE1vbiBPY3QgMDYgMjAxNCAxNDowMDowMCxcbiAqIC8vICAgTW9uIE9jdCAwNiAyMDE0IDE1OjAwOjAwXG4gKiAvLyBdXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVhY2hIb3VyT2ZJbnRlcnZhbChkaXJ0eUludGVydmFsLCBvcHRpb25zKSB7XG4gIHZhciBfb3B0aW9ucyRzdGVwO1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGludGVydmFsID0gZGlydHlJbnRlcnZhbCB8fCB7fTtcbiAgdmFyIHN0YXJ0RGF0ZSA9IHRvRGF0ZShpbnRlcnZhbC5zdGFydCk7XG4gIHZhciBlbmREYXRlID0gdG9EYXRlKGludGVydmFsLmVuZCk7XG4gIHZhciBzdGFydFRpbWUgPSBzdGFydERhdGUuZ2V0VGltZSgpO1xuICB2YXIgZW5kVGltZSA9IGVuZERhdGUuZ2V0VGltZSgpO1xuXG4gIC8vIFRocm93IGFuIGV4Y2VwdGlvbiBpZiBzdGFydCBkYXRlIGlzIGFmdGVyIGVuZCBkYXRlIG9yIGlmIGFueSBkYXRlIGlzIGBJbnZhbGlkIERhdGVgXG4gIGlmICghKHN0YXJ0VGltZSA8PSBlbmRUaW1lKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIGludGVydmFsJyk7XG4gIH1cbiAgdmFyIGRhdGVzID0gW107XG4gIHZhciBjdXJyZW50RGF0ZSA9IHN0YXJ0RGF0ZTtcbiAgY3VycmVudERhdGUuc2V0TWludXRlcygwLCAwLCAwKTtcbiAgdmFyIHN0ZXAgPSBOdW1iZXIoKF9vcHRpb25zJHN0ZXAgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuc3RlcCkgIT09IG51bGwgJiYgX29wdGlvbnMkc3RlcCAhPT0gdm9pZCAwID8gX29wdGlvbnMkc3RlcCA6IDEpO1xuICBpZiAoc3RlcCA8IDEgfHwgaXNOYU4oc3RlcCkpIHRocm93IG5ldyBSYW5nZUVycm9yKCdgb3B0aW9ucy5zdGVwYCBtdXN0IGJlIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiAxJyk7XG4gIHdoaWxlIChjdXJyZW50RGF0ZS5nZXRUaW1lKCkgPD0gZW5kVGltZSkge1xuICAgIGRhdGVzLnB1c2godG9EYXRlKGN1cnJlbnREYXRlKSk7XG4gICAgY3VycmVudERhdGUgPSBhZGRIb3VycyhjdXJyZW50RGF0ZSwgc3RlcCk7XG4gIH1cbiAgcmV0dXJuIGRhdGVzO1xufSIsImltcG9ydCBhZGRNaW51dGVzIGZyb20gXCIuLi9hZGRNaW51dGVzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mTWludXRlIGZyb20gXCIuLi9zdGFydE9mTWludXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlYWNoTWludXRlT2ZJbnRlcnZhbFxuICogQGNhdGVnb3J5IEludGVydmFsIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgYXJyYXkgb2YgbWludXRlcyB3aXRoaW4gdGhlIHNwZWNpZmllZCB0aW1lIGludGVydmFsLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJucyB0aGUgYXJyYXkgb2YgbWludXRlcyB3aXRoaW4gdGhlIHNwZWNpZmllZCB0aW1lIGludGVydmFsLlxuICpcbiAqIEBwYXJhbSB7SW50ZXJ2YWx9IGludGVydmFsIC0gdGhlIGludGVydmFsLiBTZWUgW0ludGVydmFsXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0ludGVydmFsfVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMuc3RlcD0xXSAtIHRoZSBzdGVwIHRvIGluY3JlbWVudCBieS4gVGhlIHN0ZXAgbXVzdCBiZSBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gMVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAcmV0dXJucyB7RGF0ZVtdfSB0aGUgYXJyYXkgd2l0aCBzdGFydHMgb2YgbWludXRlcyBmcm9tIHRoZSBtaW51dGUgb2YgdGhlIGludGVydmFsIHN0YXJ0IHRvIHRoZSBtaW51dGUgb2YgdGhlIGludGVydmFsIGVuZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuc3RlcGAgbXVzdCBiZSBhIG51bWJlciBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gMVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gVGhlIHN0YXJ0IG9mIGFuIGludGVydmFsIGNhbm5vdCBiZSBhZnRlciBpdHMgZW5kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBEYXRlIGluIGludGVydmFsIGNhbm5vdCBiZSBgSW52YWxpZCBEYXRlYFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFYWNoIG1pbnV0ZSBiZXR3ZWVuIDE0IE9jdG9iZXIgMjAyMCwgMTM6MDAgYW5kIDE0IE9jdG9iZXIgMjAyMCwgMTM6MDNcbiAqIGNvbnN0IHJlc3VsdCA9IGVhY2hNaW51dGVPZkludGVydmFsKHtcbiAqICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDksIDE0LCAxMyksXG4gKiAgIGVuZDogbmV3IERhdGUoMjAxNCwgOSwgMTQsIDEzLCAzKVxuICogfSlcbiAqIC8vPT4gW1xuICogLy8gICBXZWQgT2N0IDE0IDIwMTQgMTM6MDA6MDAsXG4gKiAvLyAgIFdlZCBPY3QgMTQgMjAxNCAxMzowMTowMCxcbiAqIC8vICAgV2VkIE9jdCAxNCAyMDE0IDEzOjAyOjAwLFxuICogLy8gICBXZWQgT2N0IDE0IDIwMTQgMTM6MDM6MDBcbiAqIC8vIF1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZWFjaE1pbnV0ZU9mSW50ZXJ2YWwoaW50ZXJ2YWwsIG9wdGlvbnMpIHtcbiAgdmFyIF9vcHRpb25zJHN0ZXA7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgc3RhcnREYXRlID0gc3RhcnRPZk1pbnV0ZSh0b0RhdGUoaW50ZXJ2YWwuc3RhcnQpKTtcbiAgdmFyIGVuZERhdGUgPSB0b0RhdGUoaW50ZXJ2YWwuZW5kKTtcbiAgdmFyIHN0YXJ0VGltZSA9IHN0YXJ0RGF0ZS5nZXRUaW1lKCk7XG4gIHZhciBlbmRUaW1lID0gZW5kRGF0ZS5nZXRUaW1lKCk7XG4gIGlmIChzdGFydFRpbWUgPj0gZW5kVGltZSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIGludGVydmFsJyk7XG4gIH1cbiAgdmFyIGRhdGVzID0gW107XG4gIHZhciBjdXJyZW50RGF0ZSA9IHN0YXJ0RGF0ZTtcbiAgdmFyIHN0ZXAgPSBOdW1iZXIoKF9vcHRpb25zJHN0ZXAgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuc3RlcCkgIT09IG51bGwgJiYgX29wdGlvbnMkc3RlcCAhPT0gdm9pZCAwID8gX29wdGlvbnMkc3RlcCA6IDEpO1xuICBpZiAoc3RlcCA8IDEgfHwgaXNOYU4oc3RlcCkpIHRocm93IG5ldyBSYW5nZUVycm9yKCdgb3B0aW9ucy5zdGVwYCBtdXN0IGJlIGEgbnVtYmVyIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbiAxJyk7XG4gIHdoaWxlIChjdXJyZW50RGF0ZS5nZXRUaW1lKCkgPD0gZW5kVGltZSkge1xuICAgIGRhdGVzLnB1c2godG9EYXRlKGN1cnJlbnREYXRlKSk7XG4gICAgY3VycmVudERhdGUgPSBhZGRNaW51dGVzKGN1cnJlbnREYXRlLCBzdGVwKTtcbiAgfVxuICByZXR1cm4gZGF0ZXM7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlYWNoTW9udGhPZkludGVydmFsXG4gKiBAY2F0ZWdvcnkgSW50ZXJ2YWwgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBhcnJheSBvZiBtb250aHMgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSBpbnRlcnZhbC5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgYXJyYXkgb2YgbW9udGhzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHRpbWUgaW50ZXJ2YWwuXG4gKlxuICogQHBhcmFtIHtJbnRlcnZhbH0gaW50ZXJ2YWwgLSB0aGUgaW50ZXJ2YWwuIFNlZSBbSW50ZXJ2YWxde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvSW50ZXJ2YWx9XG4gKiBAcmV0dXJucyB7RGF0ZVtdfSB0aGUgYXJyYXkgd2l0aCBzdGFydHMgb2YgbW9udGhzIGZyb20gdGhlIG1vbnRoIG9mIHRoZSBpbnRlcnZhbCBzdGFydCB0byB0aGUgbW9udGggb2YgdGhlIGludGVydmFsIGVuZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBUaGUgc3RhcnQgb2YgYW4gaW50ZXJ2YWwgY2Fubm90IGJlIGFmdGVyIGl0cyBlbmRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IERhdGUgaW4gaW50ZXJ2YWwgY2Fubm90IGJlIGBJbnZhbGlkIERhdGVgXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEVhY2ggbW9udGggYmV0d2VlbiA2IEZlYnJ1YXJ5IDIwMTQgYW5kIDEwIEF1Z3VzdCAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gZWFjaE1vbnRoT2ZJbnRlcnZhbCh7XG4gKiAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAxLCA2KSxcbiAqICAgZW5kOiBuZXcgRGF0ZSgyMDE0LCA3LCAxMClcbiAqIH0pXG4gKiAvLz0+IFtcbiAqIC8vICAgU2F0IEZlYiAwMSAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBTYXQgTWFyIDAxIDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFR1ZSBBcHIgMDEgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgVGh1IE1heSAwMSAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBTdW4gSnVuIDAxIDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFR1ZSBKdWwgMDEgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgRnJpIEF1ZyAwMSAyMDE0IDAwOjAwOjAwXG4gKiAvLyBdXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVhY2hNb250aE9mSW50ZXJ2YWwoZGlydHlJbnRlcnZhbCkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGludGVydmFsID0gZGlydHlJbnRlcnZhbCB8fCB7fTtcbiAgdmFyIHN0YXJ0RGF0ZSA9IHRvRGF0ZShpbnRlcnZhbC5zdGFydCk7XG4gIHZhciBlbmREYXRlID0gdG9EYXRlKGludGVydmFsLmVuZCk7XG4gIHZhciBlbmRUaW1lID0gZW5kRGF0ZS5nZXRUaW1lKCk7XG4gIHZhciBkYXRlcyA9IFtdO1xuXG4gIC8vIFRocm93IGFuIGV4Y2VwdGlvbiBpZiBzdGFydCBkYXRlIGlzIGFmdGVyIGVuZCBkYXRlIG9yIGlmIGFueSBkYXRlIGlzIGBJbnZhbGlkIERhdGVgXG4gIGlmICghKHN0YXJ0RGF0ZS5nZXRUaW1lKCkgPD0gZW5kVGltZSkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBpbnRlcnZhbCcpO1xuICB9XG4gIHZhciBjdXJyZW50RGF0ZSA9IHN0YXJ0RGF0ZTtcbiAgY3VycmVudERhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIGN1cnJlbnREYXRlLnNldERhdGUoMSk7XG4gIHdoaWxlIChjdXJyZW50RGF0ZS5nZXRUaW1lKCkgPD0gZW5kVGltZSkge1xuICAgIGRhdGVzLnB1c2godG9EYXRlKGN1cnJlbnREYXRlKSk7XG4gICAgY3VycmVudERhdGUuc2V0TW9udGgoY3VycmVudERhdGUuZ2V0TW9udGgoKSArIDEpO1xuICB9XG4gIHJldHVybiBkYXRlcztcbn0iLCJpbXBvcnQgYWRkUXVhcnRlcnMgZnJvbSBcIi4uL2FkZFF1YXJ0ZXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZlF1YXJ0ZXIgZnJvbSBcIi4uL3N0YXJ0T2ZRdWFydGVyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVhY2hRdWFydGVyT2ZJbnRlcnZhbFxuICogQGNhdGVnb3J5IEludGVydmFsIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgYXJyYXkgb2YgcXVhcnRlcnMgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSBpbnRlcnZhbC5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgYXJyYXkgb2YgcXVhcnRlcnMgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSBpbnRlcnZhbC5cbiAqXG4gKiBAcGFyYW0ge0ludGVydmFsfSBpbnRlcnZhbCAtIHRoZSBpbnRlcnZhbC4gU2VlIFtJbnRlcnZhbF17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9JbnRlcnZhbH1cbiAqIEByZXR1cm5zIHtEYXRlW119IHRoZSBhcnJheSB3aXRoIHN0YXJ0cyBvZiBxdWFydGVycyBmcm9tIHRoZSBxdWFydGVyIG9mIHRoZSBpbnRlcnZhbCBzdGFydCB0byB0aGUgcXVhcnRlciBvZiB0aGUgaW50ZXJ2YWwgZW5kXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IFRoZSBzdGFydCBvZiBhbiBpbnRlcnZhbCBjYW5ub3QgYmUgYWZ0ZXIgaXRzIGVuZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gRGF0ZSBpbiBpbnRlcnZhbCBjYW5ub3QgYmUgYEludmFsaWQgRGF0ZWBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRWFjaCBxdWFydGVyIHdpdGhpbiBpbnRlcnZhbCA2IEZlYnJ1YXJ5IDIwMTQgLSAxMCBBdWd1c3QgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVhY2hRdWFydGVyT2ZJbnRlcnZhbCh7XG4gKiAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAxLCA2KSxcbiAqICAgZW5kOiBuZXcgRGF0ZSgyMDE0LCA3LCAxMClcbiAqIH0pXG4gKiAvLz0+IFtcbiAqIC8vICAgV2VkIEphbiAwMSAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBUdWUgQXByIDAxIDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFR1ZSBKdWwgMDEgMjAxNCAwMDowMDowMCxcbiAqIC8vIF1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZWFjaFF1YXJ0ZXJPZkludGVydmFsKGRpcnR5SW50ZXJ2YWwpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBpbnRlcnZhbCA9IGRpcnR5SW50ZXJ2YWwgfHwge307XG4gIHZhciBzdGFydERhdGUgPSB0b0RhdGUoaW50ZXJ2YWwuc3RhcnQpO1xuICB2YXIgZW5kRGF0ZSA9IHRvRGF0ZShpbnRlcnZhbC5lbmQpO1xuICB2YXIgZW5kVGltZSA9IGVuZERhdGUuZ2V0VGltZSgpO1xuXG4gIC8vIFRocm93IGFuIGV4Y2VwdGlvbiBpZiBzdGFydCBkYXRlIGlzIGFmdGVyIGVuZCBkYXRlIG9yIGlmIGFueSBkYXRlIGlzIGBJbnZhbGlkIERhdGVgXG4gIGlmICghKHN0YXJ0RGF0ZS5nZXRUaW1lKCkgPD0gZW5kVGltZSkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBpbnRlcnZhbCcpO1xuICB9XG4gIHZhciBzdGFydERhdGVRdWFydGVyID0gc3RhcnRPZlF1YXJ0ZXIoc3RhcnREYXRlKTtcbiAgdmFyIGVuZERhdGVRdWFydGVyID0gc3RhcnRPZlF1YXJ0ZXIoZW5kRGF0ZSk7XG4gIGVuZFRpbWUgPSBlbmREYXRlUXVhcnRlci5nZXRUaW1lKCk7XG4gIHZhciBxdWFydGVycyA9IFtdO1xuICB2YXIgY3VycmVudFF1YXJ0ZXIgPSBzdGFydERhdGVRdWFydGVyO1xuICB3aGlsZSAoY3VycmVudFF1YXJ0ZXIuZ2V0VGltZSgpIDw9IGVuZFRpbWUpIHtcbiAgICBxdWFydGVycy5wdXNoKHRvRGF0ZShjdXJyZW50UXVhcnRlcikpO1xuICAgIGN1cnJlbnRRdWFydGVyID0gYWRkUXVhcnRlcnMoY3VycmVudFF1YXJ0ZXIsIDEpO1xuICB9XG4gIHJldHVybiBxdWFydGVycztcbn0iLCJpbXBvcnQgYWRkV2Vla3MgZnJvbSBcIi4uL2FkZFdlZWtzL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZldlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVhY2hXZWVrT2ZJbnRlcnZhbFxuICogQGNhdGVnb3J5IEludGVydmFsIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgYXJyYXkgb2Ygd2Vla3Mgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSBpbnRlcnZhbC5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgYXJyYXkgb2Ygd2Vla3Mgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSBpbnRlcnZhbC5cbiAqXG4gKiBAcGFyYW0ge0ludGVydmFsfSBpbnRlcnZhbCAtIHRoZSBpbnRlcnZhbC4gU2VlIFtJbnRlcnZhbF17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9JbnRlcnZhbH1cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHJldHVybnMge0RhdGVbXX0gdGhlIGFycmF5IHdpdGggc3RhcnRzIG9mIHdlZWtzIGZyb20gdGhlIHdlZWsgb2YgdGhlIGludGVydmFsIHN0YXJ0IHRvIHRoZSB3ZWVrIG9mIHRoZSBpbnRlcnZhbCBlbmRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIDAsIDEsIC4uLiwgNlxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gVGhlIHN0YXJ0IG9mIGFuIGludGVydmFsIGNhbm5vdCBiZSBhZnRlciBpdHMgZW5kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBEYXRlIGluIGludGVydmFsIGNhbm5vdCBiZSBgSW52YWxpZCBEYXRlYFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFYWNoIHdlZWsgd2l0aGluIGludGVydmFsIDYgT2N0b2JlciAyMDE0IC0gMjMgTm92ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVhY2hXZWVrT2ZJbnRlcnZhbCh7XG4gKiAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCA5LCA2KSxcbiAqICAgZW5kOiBuZXcgRGF0ZSgyMDE0LCAxMCwgMjMpXG4gKiB9KVxuICogLy89PiBbXG4gKiAvLyAgIFN1biBPY3QgMDUgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgU3VuIE9jdCAxMiAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBTdW4gT2N0IDE5IDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBPY3QgMjYgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgU3VuIE5vdiAwMiAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBTdW4gTm92IDA5IDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBOb3YgMTYgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgU3VuIE5vdiAyMyAyMDE0IDAwOjAwOjAwXG4gKiAvLyBdXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVhY2hXZWVrT2ZJbnRlcnZhbChkaXJ0eUludGVydmFsLCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgaW50ZXJ2YWwgPSBkaXJ0eUludGVydmFsIHx8IHt9O1xuICB2YXIgc3RhcnREYXRlID0gdG9EYXRlKGludGVydmFsLnN0YXJ0KTtcbiAgdmFyIGVuZERhdGUgPSB0b0RhdGUoaW50ZXJ2YWwuZW5kKTtcbiAgdmFyIGVuZFRpbWUgPSBlbmREYXRlLmdldFRpbWUoKTtcblxuICAvLyBUaHJvdyBhbiBleGNlcHRpb24gaWYgc3RhcnQgZGF0ZSBpcyBhZnRlciBlbmQgZGF0ZSBvciBpZiBhbnkgZGF0ZSBpcyBgSW52YWxpZCBEYXRlYFxuICBpZiAoIShzdGFydERhdGUuZ2V0VGltZSgpIDw9IGVuZFRpbWUpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgaW50ZXJ2YWwnKTtcbiAgfVxuICB2YXIgc3RhcnREYXRlV2VlayA9IHN0YXJ0T2ZXZWVrKHN0YXJ0RGF0ZSwgb3B0aW9ucyk7XG4gIHZhciBlbmREYXRlV2VlayA9IHN0YXJ0T2ZXZWVrKGVuZERhdGUsIG9wdGlvbnMpO1xuXG4gIC8vIFNvbWUgdGltZXpvbmVzIHN3aXRjaCBEU1QgYXQgbWlkbmlnaHQsIG1ha2luZyBzdGFydCBvZiBkYXkgdW5yZWxpYWJsZSBpbiB0aGVzZSB0aW1lem9uZXMsIDNwbSBpcyBhIHNhZmUgYmV0XG4gIHN0YXJ0RGF0ZVdlZWsuc2V0SG91cnMoMTUpO1xuICBlbmREYXRlV2Vlay5zZXRIb3VycygxNSk7XG4gIGVuZFRpbWUgPSBlbmREYXRlV2Vlay5nZXRUaW1lKCk7XG4gIHZhciB3ZWVrcyA9IFtdO1xuICB2YXIgY3VycmVudFdlZWsgPSBzdGFydERhdGVXZWVrO1xuICB3aGlsZSAoY3VycmVudFdlZWsuZ2V0VGltZSgpIDw9IGVuZFRpbWUpIHtcbiAgICBjdXJyZW50V2Vlay5zZXRIb3VycygwKTtcbiAgICB3ZWVrcy5wdXNoKHRvRGF0ZShjdXJyZW50V2VlaykpO1xuICAgIGN1cnJlbnRXZWVrID0gYWRkV2Vla3MoY3VycmVudFdlZWssIDEpO1xuICAgIGN1cnJlbnRXZWVrLnNldEhvdXJzKDE1KTtcbiAgfVxuICByZXR1cm4gd2Vla3M7XG59IiwiaW1wb3J0IGVhY2hEYXlPZkludGVydmFsIGZyb20gXCIuLi9lYWNoRGF5T2ZJbnRlcnZhbC9pbmRleC5qc1wiO1xuaW1wb3J0IGlzU3VuZGF5IGZyb20gXCIuLi9pc1N1bmRheS9pbmRleC5qc1wiO1xuaW1wb3J0IGlzV2Vla2VuZCBmcm9tIFwiLi4vaXNXZWVrZW5kL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlYWNoV2Vla2VuZE9mSW50ZXJ2YWxcbiAqIEBjYXRlZ29yeSBJbnRlcnZhbCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBMaXN0IGFsbCB0aGUgU2F0dXJkYXlzIGFuZCBTdW5kYXlzIGluIHRoZSBnaXZlbiBkYXRlIGludGVydmFsLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IGFsbCB0aGUgU2F0dXJkYXlzIGFuZCBTdW5kYXlzIGluIHRoZSBnaXZlbiBkYXRlIGludGVydmFsLlxuICpcbiAqIEBwYXJhbSB7SW50ZXJ2YWx9IGludGVydmFsIC0gdGhlIGdpdmVuIGludGVydmFsLiBTZWUgW0ludGVydmFsXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0ludGVydmFsfVxuICogQHJldHVybnMge0RhdGVbXX0gYW4gYXJyYXkgY29udGFpbmluZyBhbGwgdGhlIFNhdHVyZGF5cyBhbmQgU3VuZGF5c1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBUaGUgc3RhcnQgb2YgYW4gaW50ZXJ2YWwgY2Fubm90IGJlIGFmdGVyIGl0cyBlbmRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IERhdGUgaW4gaW50ZXJ2YWwgY2Fubm90IGJlIGBJbnZhbGlkIERhdGVgXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIExpc3RzIGFsbCBTYXR1cmRheXMgYW5kIFN1bmRheXMgaW4gdGhlIGdpdmVuIGRhdGUgaW50ZXJ2YWxcbiAqIGNvbnN0IHJlc3VsdCA9IGVhY2hXZWVrZW5kT2ZJbnRlcnZhbCh7XG4gKiAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE4LCA4LCAxNyksXG4gKiAgIGVuZDogbmV3IERhdGUoMjAxOCwgOCwgMzApXG4gKiB9KVxuICogLy89PiBbXG4gKiAvLyAgIFNhdCBTZXAgMjIgMjAxOCAwMDowMDowMCxcbiAqIC8vICAgU3VuIFNlcCAyMyAyMDE4IDAwOjAwOjAwLFxuICogLy8gICBTYXQgU2VwIDI5IDIwMTggMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBTZXAgMzAgMjAxOCAwMDowMDowMFxuICogLy8gXVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlYWNoV2Vla2VuZE9mSW50ZXJ2YWwoaW50ZXJ2YWwpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlSW50ZXJ2YWwgPSBlYWNoRGF5T2ZJbnRlcnZhbChpbnRlcnZhbCk7XG4gIHZhciB3ZWVrZW5kcyA9IFtdO1xuICB2YXIgaW5kZXggPSAwO1xuICB3aGlsZSAoaW5kZXggPCBkYXRlSW50ZXJ2YWwubGVuZ3RoKSB7XG4gICAgdmFyIGRhdGUgPSBkYXRlSW50ZXJ2YWxbaW5kZXgrK107XG4gICAgaWYgKGlzV2Vla2VuZChkYXRlKSkge1xuICAgICAgd2Vla2VuZHMucHVzaChkYXRlKTtcbiAgICAgIGlmIChpc1N1bmRheShkYXRlKSkgaW5kZXggPSBpbmRleCArIDU7XG4gICAgfVxuICB9XG4gIHJldHVybiB3ZWVrZW5kcztcbn0iLCJpbXBvcnQgZWFjaFdlZWtlbmRPZkludGVydmFsIGZyb20gXCIuLi9lYWNoV2Vla2VuZE9mSW50ZXJ2YWwvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mTW9udGggZnJvbSBcIi4uL3N0YXJ0T2ZNb250aC9pbmRleC5qc1wiO1xuaW1wb3J0IGVuZE9mTW9udGggZnJvbSBcIi4uL2VuZE9mTW9udGgvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVhY2hXZWVrZW5kT2ZNb250aFxuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IExpc3QgYWxsIHRoZSBTYXR1cmRheXMgYW5kIFN1bmRheXMgaW4gdGhlIGdpdmVuIG1vbnRoLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IGFsbCB0aGUgU2F0dXJkYXlzIGFuZCBTdW5kYXlzIGluIHRoZSBnaXZlbiBtb250aC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIG1vbnRoXG4gKiBAcmV0dXJucyB7RGF0ZVtdfSBhbiBhcnJheSBjb250YWluaW5nIGFsbCB0aGUgU2F0dXJkYXlzIGFuZCBTdW5kYXlzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IFRoZSBwYXNzZWQgZGF0ZSBpcyBpbnZhbGlkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIExpc3RzIGFsbCBTYXR1cmRheXMgYW5kIFN1bmRheXMgaW4gdGhlIGdpdmVuIG1vbnRoXG4gKiBjb25zdCByZXN1bHQgPSBlYWNoV2Vla2VuZE9mTW9udGgobmV3IERhdGUoMjAyMiwgMSwgMSkpXG4gKiAvLz0+IFtcbiAqIC8vICAgU2F0IEZlYiAwNSAyMDIyIDAwOjAwOjAwLFxuICogLy8gICBTdW4gRmViIDA2IDIwMjIgMDA6MDA6MDAsXG4gKiAvLyAgIFNhdCBGZWIgMTIgMjAyMiAwMDowMDowMCxcbiAqIC8vICAgU3VuIEZlYiAxMyAyMDIyIDAwOjAwOjAwLFxuICogLy8gICBTYXQgRmViIDE5IDIwMjIgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBGZWIgMjAgMjAyMiAwMDowMDowMCxcbiAqIC8vICAgU2F0IEZlYiAyNiAyMDIyIDAwOjAwOjAwLFxuICogLy8gICBTdW4gRmViIDI3IDIwMjIgMDA6MDA6MDBcbiAqIC8vIF1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZWFjaFdlZWtlbmRPZk1vbnRoKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIHN0YXJ0RGF0ZSA9IHN0YXJ0T2ZNb250aChkaXJ0eURhdGUpO1xuICBpZiAoaXNOYU4oc3RhcnREYXRlLmdldFRpbWUoKSkpIHRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgcGFzc2VkIGRhdGUgaXMgaW52YWxpZCcpO1xuICB2YXIgZW5kRGF0ZSA9IGVuZE9mTW9udGgoZGlydHlEYXRlKTtcbiAgcmV0dXJuIGVhY2hXZWVrZW5kT2ZJbnRlcnZhbCh7XG4gICAgc3RhcnQ6IHN0YXJ0RGF0ZSxcbiAgICBlbmQ6IGVuZERhdGVcbiAgfSk7XG59IiwiaW1wb3J0IGVhY2hXZWVrZW5kT2ZJbnRlcnZhbCBmcm9tIFwiLi4vZWFjaFdlZWtlbmRPZkludGVydmFsL2luZGV4LmpzXCI7XG5pbXBvcnQgZW5kT2ZZZWFyIGZyb20gXCIuLi9lbmRPZlllYXIvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mWWVhciBmcm9tIFwiLi4vc3RhcnRPZlllYXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVhY2hXZWVrZW5kT2ZZZWFyXG4gKiBAY2F0ZWdvcnkgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBMaXN0IGFsbCB0aGUgU2F0dXJkYXlzIGFuZCBTdW5kYXlzIGluIHRoZSB5ZWFyLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IGFsbCB0aGUgU2F0dXJkYXlzIGFuZCBTdW5kYXlzIGluIHRoZSB5ZWFyLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4geWVhclxuICogQHJldHVybnMge0RhdGVbXX0gYW4gYXJyYXkgY29udGFpbmluZyBhbGwgdGhlIFNhdHVyZGF5cyBhbmQgU3VuZGF5c1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBUaGUgcGFzc2VkIGRhdGUgaXMgaW52YWxpZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBMaXN0cyBhbGwgU2F0dXJkYXlzIGFuZCBTdW5kYXlzIGluIHRoZSB5ZWFyXG4gKiBjb25zdCByZXN1bHQgPSBlYWNoV2Vla2VuZE9mWWVhcihuZXcgRGF0ZSgyMDIwLCAxLCAxKSlcbiAqIC8vPT4gW1xuICogLy8gICBTYXQgSmFuIDAzIDIwMjAgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBKYW4gMDQgMjAyMCAwMDowMDowMCxcbiAqIC8vICAgLi4uXG4gKiAvLyAgIFN1biBEZWMgMjcgMjAyMCAwMDowMDowMFxuICogLy8gXVxuICogXVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlYWNoV2Vla2VuZE9mWWVhcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBzdGFydERhdGUgPSBzdGFydE9mWWVhcihkaXJ0eURhdGUpO1xuICB2YXIgZW5kRGF0ZSA9IGVuZE9mWWVhcihkaXJ0eURhdGUpO1xuICByZXR1cm4gZWFjaFdlZWtlbmRPZkludGVydmFsKHtcbiAgICBzdGFydDogc3RhcnREYXRlLFxuICAgIGVuZDogZW5kRGF0ZVxuICB9KTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVhY2hZZWFyT2ZJbnRlcnZhbFxuICogQGNhdGVnb3J5IEludGVydmFsIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgYXJyYXkgb2YgeWVhcmx5IHRpbWVzdGFtcHMgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSBpbnRlcnZhbC5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgYXJyYXkgb2YgeWVhcmx5IHRpbWVzdGFtcHMgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSBpbnRlcnZhbC5cbiAqXG4gKiBAcGFyYW0ge0ludGVydmFsfSBpbnRlcnZhbCAtIHRoZSBpbnRlcnZhbC4gU2VlIFtJbnRlcnZhbF17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9JbnRlcnZhbH1cbiAqIEByZXR1cm5zIHtEYXRlW119IHRoZSBhcnJheSB3aXRoIHN0YXJ0cyBvZiB5ZWFybHkgdGltZXN0YW1wcyBmcm9tIHRoZSBtb250aCBvZiB0aGUgaW50ZXJ2YWwgc3RhcnQgdG8gdGhlIG1vbnRoIG9mIHRoZSBpbnRlcnZhbCBlbmRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gVGhlIHN0YXJ0IG9mIGFuIGludGVydmFsIGNhbm5vdCBiZSBhZnRlciBpdHMgZW5kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBEYXRlIGluIGludGVydmFsIGNhbm5vdCBiZSBgSW52YWxpZCBEYXRlYFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFYWNoIHllYXIgYmV0d2VlbiA2IEZlYnJ1YXJ5IDIwMTQgYW5kIDEwIEF1Z3VzdCAyMDE3OlxuICogY29uc3QgcmVzdWx0ID0gZWFjaFllYXJPZkludGVydmFsKHtcbiAqICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDEsIDYpLFxuICogICBlbmQ6IG5ldyBEYXRlKDIwMTcsIDcsIDEwKVxuICogfSlcbiAqIC8vPT4gW1xuICogLy8gICBXZWQgSmFuIDAxIDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFRodSBKYW4gMDEgMjAxNSAwMDowMDowMCxcbiAqIC8vICAgRnJpIEphbiAwMSAyMDE2IDAwOjAwOjAwLFxuICogLy8gICBTdW4gSmFuIDAxIDIwMTcgMDA6MDA6MDBcbiAqIC8vIF1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZWFjaFllYXJPZkludGVydmFsKGRpcnR5SW50ZXJ2YWwpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBpbnRlcnZhbCA9IGRpcnR5SW50ZXJ2YWwgfHwge307XG4gIHZhciBzdGFydERhdGUgPSB0b0RhdGUoaW50ZXJ2YWwuc3RhcnQpO1xuICB2YXIgZW5kRGF0ZSA9IHRvRGF0ZShpbnRlcnZhbC5lbmQpO1xuICB2YXIgZW5kVGltZSA9IGVuZERhdGUuZ2V0VGltZSgpO1xuXG4gIC8vIFRocm93IGFuIGV4Y2VwdGlvbiBpZiBzdGFydCBkYXRlIGlzIGFmdGVyIGVuZCBkYXRlIG9yIGlmIGFueSBkYXRlIGlzIGBJbnZhbGlkIERhdGVgXG4gIGlmICghKHN0YXJ0RGF0ZS5nZXRUaW1lKCkgPD0gZW5kVGltZSkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBpbnRlcnZhbCcpO1xuICB9XG4gIHZhciBkYXRlcyA9IFtdO1xuICB2YXIgY3VycmVudERhdGUgPSBzdGFydERhdGU7XG4gIGN1cnJlbnREYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICBjdXJyZW50RGF0ZS5zZXRNb250aCgwLCAxKTtcbiAgd2hpbGUgKGN1cnJlbnREYXRlLmdldFRpbWUoKSA8PSBlbmRUaW1lKSB7XG4gICAgZGF0ZXMucHVzaCh0b0RhdGUoY3VycmVudERhdGUpKTtcbiAgICBjdXJyZW50RGF0ZS5zZXRGdWxsWWVhcihjdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpICsgMSk7XG4gIH1cbiAgcmV0dXJuIGRhdGVzO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZW5kT2ZEYXlcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBlbmQgb2YgYSBkYXkgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBlbmQgb2YgYSBkYXkgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZW5kIG9mIGEgZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGVuZCBvZiBhIGRheSBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVuZE9mRGF5KG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz0+IFR1ZSBTZXAgMDIgMjAxNCAyMzo1OTo1OS45OTlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW5kT2ZEYXkoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICBkYXRlLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZW5kT2ZEZWNhZGVcbiAqIEBjYXRlZ29yeSBEZWNhZGUgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBlbmQgb2YgYSBkZWNhZGUgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBlbmQgb2YgYSBkZWNhZGUgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBlbmQgb2YgYSBkZWNhZGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHswfDF8Mn0gW29wdGlvbnMuYWRkaXRpb25hbERpZ2l0cz0yXSAtIHBhc3NlZCB0byBgdG9EYXRlYC4gU2VlIFt0b0RhdGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvdG9EYXRlfVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5hZGRpdGlvbmFsRGlnaXRzYCBtdXN0IGJlIDAsIDEgb3IgMlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgZW5kIG9mIGEgZGVjYWRlIGZvciAxMiBNYXkgMTk4NCAwMDowMDowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVuZE9mRGVjYWRlKG5ldyBEYXRlKDE5ODQsIDQsIDEyLCAwMCwgMDAsIDAwKSlcbiAqIC8vPT4gRGVjIDMxIDE5ODkgMjM6NTk6NTkuOTk5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVuZE9mRGVjYWRlKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIHZhciBkZWNhZGUgPSA5ICsgTWF0aC5mbG9vcih5ZWFyIC8gMTApICogMTA7XG4gIGRhdGUuc2V0RnVsbFllYXIoZGVjYWRlLCAxMSwgMzEpO1xuICBkYXRlLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZW5kT2ZIb3VyXG4gKiBAY2F0ZWdvcnkgSG91ciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGVuZCBvZiBhbiBob3VyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZW5kIG9mIGFuIGhvdXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZW5kIG9mIGFuIGhvdXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgZW5kIG9mIGFuIGhvdXIgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBlbmRPZkhvdXIobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1KSlcbiAqIC8vPT4gVHVlIFNlcCAwMiAyMDE0IDExOjU5OjU5Ljk5OVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbmRPZkhvdXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICBkYXRlLnNldE1pbnV0ZXMoNTksIDU5LCA5OTkpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgZW5kT2ZXZWVrIGZyb20gXCIuLi9lbmRPZldlZWsvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVuZE9mSVNPV2Vla1xuICogQGNhdGVnb3J5IElTTyBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZW5kIG9mIGFuIElTTyB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZW5kIG9mIGFuIElTTyB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBlbmQgb2YgYW4gSVNPIHdlZWtcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgZW5kIG9mIGFuIElTTyB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gZW5kT2ZJU09XZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz0+IFN1biBTZXAgMDcgMjAxNCAyMzo1OTo1OS45OTlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW5kT2ZJU09XZWVrKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGVuZE9mV2VlayhkaXJ0eURhdGUsIHtcbiAgICB3ZWVrU3RhcnRzT246IDFcbiAgfSk7XG59IiwiaW1wb3J0IGdldElTT1dlZWtZZWFyIGZyb20gXCIuLi9nZXRJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZJU09XZWVrIGZyb20gXCIuLi9zdGFydE9mSVNPV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZW5kT2ZJU09XZWVrWWVhclxuICogQGNhdGVnb3J5IElTTyBXZWVrLU51bWJlcmluZyBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZW5kIG9mIGFuIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZW5kIG9mIGFuIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyLFxuICogd2hpY2ggYWx3YXlzIHN0YXJ0cyAzIGRheXMgYmVmb3JlIHRoZSB5ZWFyJ3MgZmlyc3QgVGh1cnNkYXkuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZW5kIG9mIGFuIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGVuZCBvZiBhbiBJU08gd2Vlay1udW1iZXJpbmcgeWVhciBmb3IgMiBKdWx5IDIwMDU6XG4gKiBjb25zdCByZXN1bHQgPSBlbmRPZklTT1dlZWtZZWFyKG5ldyBEYXRlKDIwMDUsIDYsIDIpKVxuICogLy89PiBTdW4gSmFuIDAxIDIwMDYgMjM6NTk6NTkuOTk5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVuZE9mSVNPV2Vla1llYXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgeWVhciA9IGdldElTT1dlZWtZZWFyKGRpcnR5RGF0ZSk7XG4gIHZhciBmb3VydGhPZkphbnVhcnlPZk5leHRZZWFyID0gbmV3IERhdGUoMCk7XG4gIGZvdXJ0aE9mSmFudWFyeU9mTmV4dFllYXIuc2V0RnVsbFllYXIoeWVhciArIDEsIDAsIDQpO1xuICBmb3VydGhPZkphbnVhcnlPZk5leHRZZWFyLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgZGF0ZSA9IHN0YXJ0T2ZJU09XZWVrKGZvdXJ0aE9mSmFudWFyeU9mTmV4dFllYXIpO1xuICBkYXRlLnNldE1pbGxpc2Vjb25kcyhkYXRlLmdldE1pbGxpc2Vjb25kcygpIC0gMSk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZW5kT2ZNaW51dGVcbiAqIEBjYXRlZ29yeSBNaW51dGUgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBlbmQgb2YgYSBtaW51dGUgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBlbmQgb2YgYSBtaW51dGUgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZW5kIG9mIGEgbWludXRlXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGVuZCBvZiBhIG1pbnV0ZSBmb3IgMSBEZWNlbWJlciAyMDE0IDIyOjE1OjQ1LjQwMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVuZE9mTWludXRlKG5ldyBEYXRlKDIwMTQsIDExLCAxLCAyMiwgMTUsIDQ1LCA0MDApKVxuICogLy89PiBNb24gRGVjIDAxIDIwMTQgMjI6MTU6NTkuOTk5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVuZE9mTWludXRlKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgZGF0ZS5zZXRTZWNvbmRzKDU5LCA5OTkpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVuZE9mTW9udGhcbiAqIEBjYXRlZ29yeSBNb250aCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGVuZCBvZiBhIG1vbnRoIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZW5kIG9mIGEgbW9udGggZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZW5kIG9mIGEgbW9udGhcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgZW5kIG9mIGEgbW9udGggZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBlbmRPZk1vbnRoKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz0+IFR1ZSBTZXAgMzAgMjAxNCAyMzo1OTo1OS45OTlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW5kT2ZNb250aChkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBtb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgZGF0ZS5zZXRGdWxsWWVhcihkYXRlLmdldEZ1bGxZZWFyKCksIG1vbnRoICsgMSwgMCk7XG4gIGRhdGUuc2V0SG91cnMoMjMsIDU5LCA1OSwgOTk5KTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlbmRPZlF1YXJ0ZXJcbiAqIEBjYXRlZ29yeSBRdWFydGVyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZW5kIG9mIGEgeWVhciBxdWFydGVyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZW5kIG9mIGEgeWVhciBxdWFydGVyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGVuZCBvZiBhIHF1YXJ0ZXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgZW5kIG9mIGEgcXVhcnRlciBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVuZE9mUXVhcnRlcihuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89PiBUdWUgU2VwIDMwIDIwMTQgMjM6NTk6NTkuOTk5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVuZE9mUXVhcnRlcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBjdXJyZW50TW9udGggPSBkYXRlLmdldE1vbnRoKCk7XG4gIHZhciBtb250aCA9IGN1cnJlbnRNb250aCAtIGN1cnJlbnRNb250aCAlIDMgKyAzO1xuICBkYXRlLnNldE1vbnRoKG1vbnRoLCAwKTtcbiAgZGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVuZE9mU2Vjb25kXG4gKiBAY2F0ZWdvcnkgU2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZW5kIG9mIGEgc2Vjb25kIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZW5kIG9mIGEgc2Vjb25kIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGVuZCBvZiBhIHNlY29uZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBlbmQgb2YgYSBzZWNvbmQgZm9yIDEgRGVjZW1iZXIgMjAxNCAyMjoxNTo0NS40MDA6XG4gKiBjb25zdCByZXN1bHQgPSBlbmRPZlNlY29uZChuZXcgRGF0ZSgyMDE0LCAxMSwgMSwgMjIsIDE1LCA0NSwgNDAwKSlcbiAqIC8vPT4gTW9uIERlYyAwMSAyMDE0IDIyOjE1OjQ1Ljk5OVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbmRPZlNlY29uZChkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIGRhdGUuc2V0TWlsbGlzZWNvbmRzKDk5OSk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCBlbmRPZkRheSBmcm9tIFwiLi4vZW5kT2ZEYXkvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZW5kT2ZUb2RheVxuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGVuZCBvZiB0b2RheS5cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGVuZCBvZiB0b2RheS5cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBEYXRlLm5vdygpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHJldHVybnMge0RhdGV9IHRoZSBlbmQgb2YgdG9kYXlcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgNiBPY3RvYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBlbmRPZlRvZGF5KClcbiAqIC8vPT4gTW9uIE9jdCA2IDIwMTQgMjM6NTk6NTkuOTk5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVuZE9mVG9kYXkoKSB7XG4gIHJldHVybiBlbmRPZkRheShEYXRlLm5vdygpKTtcbn0iLCIvKipcbiAqIEBuYW1lIGVuZE9mVG9tb3Jyb3dcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBlbmQgb2YgdG9tb3Jyb3cuXG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBlbmQgb2YgdG9tb3Jyb3cuXG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgbmV3IERhdGUoKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZW5kIG9mIHRvbW9ycm93XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDYgT2N0b2JlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gZW5kT2ZUb21vcnJvdygpXG4gKiAvLz0+IFR1ZSBPY3QgNyAyMDE0IDIzOjU5OjU5Ljk5OVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbmRPZlRvbW9ycm93KCkge1xuICB2YXIgbm93ID0gbmV3IERhdGUoKTtcbiAgdmFyIHllYXIgPSBub3cuZ2V0RnVsbFllYXIoKTtcbiAgdmFyIG1vbnRoID0gbm93LmdldE1vbnRoKCk7XG4gIHZhciBkYXkgPSBub3cuZ2V0RGF0ZSgpO1xuICB2YXIgZGF0ZSA9IG5ldyBEYXRlKDApO1xuICBkYXRlLnNldEZ1bGxZZWFyKHllYXIsIG1vbnRoLCBkYXkgKyAxKTtcbiAgZGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuLi9fbGliL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlbmRPZldlZWtcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZW5kIG9mIGEgd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGVuZCBvZiBhIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHJldHVybnMge0RhdGV9IHRoZSBlbmQgb2YgYSB3ZWVrXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLndlZWtTdGFydHNPbmAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDZcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGVuZCBvZiBhIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBlbmRPZldlZWsobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPT4gU2F0IFNlcCAwNiAyMDE0IDIzOjU5OjU5Ljk5OVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0aGUgd2VlayBzdGFydHMgb24gTW9uZGF5LCB0aGUgZW5kIG9mIHRoZSB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gZW5kT2ZXZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCksIHsgd2Vla1N0YXJ0c09uOiAxIH0pXG4gKiAvLz0+IFN1biBTZXAgMDcgMjAxNCAyMzo1OTo1OS45OTlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW5kT2ZXZWVrKGRpcnR5RGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX3JlZjIsIF9yZWYzLCBfb3B0aW9ucyR3ZWVrU3RhcnRzT24sIF9vcHRpb25zJGxvY2FsZSwgX29wdGlvbnMkbG9jYWxlJG9wdGlvLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDI7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICB2YXIgd2Vla1N0YXJ0c09uID0gdG9JbnRlZ2VyKChfcmVmID0gKF9yZWYyID0gKF9yZWYzID0gKF9vcHRpb25zJHdlZWtTdGFydHNPbiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9vcHRpb25zJHdlZWtTdGFydHNPbiAhPT0gdm9pZCAwID8gX29wdGlvbnMkd2Vla1N0YXJ0c09uIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9IF9vcHRpb25zJGxvY2FsZS5vcHRpb25zKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb25zJGxvY2FsZSRvcHRpby53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYzICE9PSB2b2lkIDAgPyBfcmVmMyA6IGRlZmF1bHRPcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjIgIT09IHZvaWQgMCA/IF9yZWYyIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IDApO1xuXG4gIC8vIFRlc3QgaWYgd2Vla1N0YXJ0c09uIGlzIGJldHdlZW4gMCBhbmQgNiBfYW5kXyBpcyBub3QgTmFOXG4gIGlmICghKHdlZWtTdGFydHNPbiA+PSAwICYmIHdlZWtTdGFydHNPbiA8PSA2KSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd3ZWVrU3RhcnRzT24gbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYgaW5jbHVzaXZlbHknKTtcbiAgfVxuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGF5ID0gZGF0ZS5nZXREYXkoKTtcbiAgdmFyIGRpZmYgPSAoZGF5IDwgd2Vla1N0YXJ0c09uID8gLTcgOiAwKSArIDYgLSAoZGF5IC0gd2Vla1N0YXJ0c09uKTtcbiAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgZGlmZik7XG4gIGRhdGUuc2V0SG91cnMoMjMsIDU5LCA1OSwgOTk5KTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlbmRPZlllYXJcbiAqIEBjYXRlZ29yeSBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZW5kIG9mIGEgeWVhciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGVuZCBvZiBhIHllYXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZW5kIG9mIGEgeWVhclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBlbmQgb2YgYSB5ZWFyIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gZW5kT2ZZZWFyKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMDApKVxuICogLy89PiBXZWQgRGVjIDMxIDIwMTQgMjM6NTk6NTkuOTk5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVuZE9mWWVhcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICBkYXRlLnNldEZ1bGxZZWFyKHllYXIgKyAxLCAwLCAwKTtcbiAgZGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCIvKipcbiAqIEBuYW1lIGVuZE9mWWVzdGVyZGF5XG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZW5kIG9mIHllc3RlcmRheS5cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGVuZCBvZiB5ZXN0ZXJkYXkuXG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgbmV3IERhdGUoKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZW5kIG9mIHllc3RlcmRheVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyA2IE9jdG9iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVuZE9mWWVzdGVyZGF5KClcbiAqIC8vPT4gU3VuIE9jdCA1IDIwMTQgMjM6NTk6NTkuOTk5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVuZE9mWWVzdGVyZGF5KCkge1xuICB2YXIgbm93ID0gbmV3IERhdGUoKTtcbiAgdmFyIHllYXIgPSBub3cuZ2V0RnVsbFllYXIoKTtcbiAgdmFyIG1vbnRoID0gbm93LmdldE1vbnRoKCk7XG4gIHZhciBkYXkgPSBub3cuZ2V0RGF0ZSgpO1xuICB2YXIgZGF0ZSA9IG5ldyBEYXRlKDApO1xuICBkYXRlLnNldEZ1bGxZZWFyKHllYXIsIG1vbnRoLCBkYXkgLSAxKTtcbiAgZGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgaXNWYWxpZCBmcm9tIFwiLi4vaXNWYWxpZC9pbmRleC5qc1wiO1xuaW1wb3J0IHN1Yk1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vc3ViTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBmb3JtYXR0ZXJzIGZyb20gXCIuLi9fbGliL2Zvcm1hdC9mb3JtYXR0ZXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgbG9uZ0Zvcm1hdHRlcnMgZnJvbSBcIi4uL19saWIvZm9ybWF0L2xvbmdGb3JtYXR0ZXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vX2xpYi9nZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBpc1Byb3RlY3RlZERheU9mWWVhclRva2VuLCBpc1Byb3RlY3RlZFdlZWtZZWFyVG9rZW4sIHRocm93UHJvdGVjdGVkRXJyb3IgfSBmcm9tIFwiLi4vX2xpYi9wcm90ZWN0ZWRUb2tlbnMvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuaW1wb3J0IGRlZmF1bHRMb2NhbGUgZnJvbSBcIi4uL19saWIvZGVmYXVsdExvY2FsZS9pbmRleC5qc1wiOyAvLyBUaGlzIFJlZ0V4cCBjb25zaXN0cyBvZiB0aHJlZSBwYXJ0cyBzZXBhcmF0ZWQgYnkgYHxgOlxuLy8gLSBbeVlRcU1Md0lkRGVjaWhIS2ttc11vIG1hdGNoZXMgYW55IGF2YWlsYWJsZSBvcmRpbmFsIG51bWJlciB0b2tlblxuLy8gICAob25lIG9mIHRoZSBjZXJ0YWluIGxldHRlcnMgZm9sbG93ZWQgYnkgYG9gKVxuLy8gLSAoXFx3KVxcMSogbWF0Y2hlcyBhbnkgc2VxdWVuY2VzIG9mIHRoZSBzYW1lIGxldHRlclxuLy8gLSAnJyBtYXRjaGVzIHR3byBxdW90ZSBjaGFyYWN0ZXJzIGluIGEgcm93XG4vLyAtICcoJyd8W14nXSkrKCd8JCkgbWF0Y2hlcyBhbnl0aGluZyBzdXJyb3VuZGVkIGJ5IHR3byBxdW90ZSBjaGFyYWN0ZXJzICgnKSxcbi8vICAgZXhjZXB0IGEgc2luZ2xlIHF1b3RlIHN5bWJvbCwgd2hpY2ggZW5kcyB0aGUgc2VxdWVuY2UuXG4vLyAgIFR3byBxdW90ZSBjaGFyYWN0ZXJzIGRvIG5vdCBlbmQgdGhlIHNlcXVlbmNlLlxuLy8gICBJZiB0aGVyZSBpcyBubyBtYXRjaGluZyBzaW5nbGUgcXVvdGVcbi8vICAgdGhlbiB0aGUgc2VxdWVuY2Ugd2lsbCBjb250aW51ZSB1bnRpbCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuXG4vLyAtIC4gbWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3RlciB1bm1hdGNoZWQgYnkgcHJldmlvdXMgcGFydHMgb2YgdGhlIFJlZ0V4cHNcbnZhciBmb3JtYXR0aW5nVG9rZW5zUmVnRXhwID0gL1t5WVFxTUx3SWREZWNpaEhLa21zXW98KFxcdylcXDEqfCcnfCcoJyd8W14nXSkrKCd8JCl8Li9nO1xuXG4vLyBUaGlzIFJlZ0V4cCBjYXRjaGVzIHN5bWJvbHMgZXNjYXBlZCBieSBxdW90ZXMsIGFuZCBhbHNvXG4vLyBzZXF1ZW5jZXMgb2Ygc3ltYm9scyBQLCBwLCBhbmQgdGhlIGNvbWJpbmF0aW9ucyBsaWtlIGBQUFBQUFBQcHBwcHBgXG52YXIgbG9uZ0Zvcm1hdHRpbmdUb2tlbnNSZWdFeHAgPSAvUCtwK3xQK3xwK3wnJ3wnKCcnfFteJ10pKygnfCQpfC4vZztcbnZhciBlc2NhcGVkU3RyaW5nUmVnRXhwID0gL14nKFteXSo/KSc/JC87XG52YXIgZG91YmxlUXVvdGVSZWdFeHAgPSAvJycvZztcbnZhciB1bmVzY2FwZWRMYXRpbkNoYXJhY3RlclJlZ0V4cCA9IC9bYS16QS1aXS87XG5cbi8qKlxuICogQG5hbWUgZm9ybWF0XG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEZvcm1hdCB0aGUgZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nIGluIHRoZSBnaXZlbiBmb3JtYXQuIFRoZSByZXN1bHQgbWF5IHZhcnkgYnkgbG9jYWxlLlxuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhlIGBmb3JtYXRgIHRva2VucyBkaWZmZXIgZnJvbSBNb21lbnQuanMgYW5kIG90aGVyIGxpYnJhcmllcy5cbiAqID4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKlxuICogVGhlIGNoYXJhY3RlcnMgd3JhcHBlZCBiZXR3ZWVuIHR3byBzaW5nbGUgcXVvdGVzIGNoYXJhY3RlcnMgKCcpIGFyZSBlc2NhcGVkLlxuICogVHdvIHNpbmdsZSBxdW90ZXMgaW4gYSByb3csIHdoZXRoZXIgaW5zaWRlIG9yIG91dHNpZGUgYSBxdW90ZWQgc2VxdWVuY2UsIHJlcHJlc2VudCBhICdyZWFsJyBzaW5nbGUgcXVvdGUuXG4gKiAoc2VlIHRoZSBsYXN0IGV4YW1wbGUpXG4gKlxuICogRm9ybWF0IG9mIHRoZSBzdHJpbmcgaXMgYmFzZWQgb24gVW5pY29kZSBUZWNobmljYWwgU3RhbmRhcmQgIzM1OlxuICogaHR0cHM6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjM1L3RyMzUtZGF0ZXMuaHRtbCNEYXRlX0ZpZWxkX1N5bWJvbF9UYWJsZVxuICogd2l0aCBhIGZldyBhZGRpdGlvbnMgKHNlZSBub3RlIDcgYmVsb3cgdGhlIHRhYmxlKS5cbiAqXG4gKiBBY2NlcHRlZCBwYXR0ZXJuczpcbiAqIHwgVW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBhdHRlcm4gfCBSZXN1bHQgZXhhbXBsZXMgICAgICAgICAgICAgICAgICAgfCBOb3RlcyB8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tfFxuICogfCBFcmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRy4uR0dHICB8IEFELCBCQyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdHR0cgICAgfCBBbm5vIERvbWluaSwgQmVmb3JlIENocmlzdCAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBHR0dHRyAgIHwgQSwgQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBDYWxlbmRhciB5ZWFyICAgICAgICAgICAgICAgICAgIHwgeSAgICAgICB8IDQ0LCAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHlvICAgICAgfCA0NHRoLCAxc3QsIDB0aCwgMTd0aCAgICAgICAgICAgICAgfCA1LDcgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB5eSAgICAgIHwgNDQsIDAxLCAwMCwgMTcgICAgICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeXl5ICAgICB8IDA0NCwgMDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHl5eXkgICAgfCAwMDQ0LCAwMDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB5eXl5eSAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMyw1ICAgfFxuICogfCBMb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgIHwgWSAgICAgICB8IDQ0LCAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFlvICAgICAgfCA0NHRoLCAxc3QsIDE5MDB0aCwgMjAxN3RoICAgICAgICAgfCA1LDcgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBZWSAgICAgIHwgNDQsIDAxLCAwMCwgMTcgICAgICAgICAgICAgICAgICAgIHwgNSw4ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWVlZICAgICB8IDA0NCwgMDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFlZWVkgICAgfCAwMDQ0LCAwMDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgfCA1LDggICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBZWVlZWSAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMyw1ICAgfFxuICogfCBJU08gd2Vlay1udW1iZXJpbmcgeWVhciAgICAgICAgIHwgUiAgICAgICB8IC00MywgMCwgMSwgMTkwMCwgMjAxNyAgICAgICAgICAgICB8IDUsNyAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJSICAgICAgfCAtNDMsIDAwLCAwMSwgMTkwMCwgMjAxNyAgICAgICAgICAgfCA1LDcgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSUlIgICAgIHwgLTA0MywgMDAwLCAwMDEsIDE5MDAsIDIwMTcgICAgICAgIHwgNSw3ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUlJSUiAgICB8IC0wMDQzLCAwMDAwLCAwMDAxLCAxOTAwLCAyMDE3ICAgICB8IDUsNyAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJSUlJSICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzLDUsNyB8XG4gKiB8IEV4dGVuZGVkIHllYXIgICAgICAgICAgICAgICAgICAgfCB1ICAgICAgIHwgLTQzLCAwLCAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdXUgICAgICB8IC00MywgMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHV1dSAgICAgfCAtMDQzLCAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1dXV1ICAgIHwgLTAwNDMsIDAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdXV1dXUgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMsNSAgIHxcbiAqIHwgUXVhcnRlciAoZm9ybWF0dGluZykgICAgICAgICAgICB8IFEgICAgICAgfCAxLCAyLCAzLCA0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRbyAgICAgIHwgMXN0LCAybmQsIDNyZCwgNHRoICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUVEgICAgICB8IDAxLCAwMiwgMDMsIDA0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFFRUSAgICAgfCBRMSwgUTIsIFEzLCBRNCAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRUVFRICAgIHwgMXN0IHF1YXJ0ZXIsIDJuZCBxdWFydGVyLCAuLi4gICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUVFRUVEgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgUXVhcnRlciAoc3RhbmQtYWxvbmUpICAgICAgICAgICB8IHEgICAgICAgfCAxLCAyLCAzLCA0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBxbyAgICAgIHwgMXN0LCAybmQsIDNyZCwgNHRoICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcXEgICAgICB8IDAxLCAwMiwgMDMsIDA0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHFxcSAgICAgfCBRMSwgUTIsIFEzLCBRNCAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBxcXFxICAgIHwgMXN0IHF1YXJ0ZXIsIDJuZCBxdWFydGVyLCAuLi4gICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcXFxcXEgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgTW9udGggKGZvcm1hdHRpbmcpICAgICAgICAgICAgICB8IE0gICAgICAgfCAxLCAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTJ0aCAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTU0gICAgICB8IDAxLCAwMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1NTSAgICAgfCBKYW4sIEZlYiwgLi4uLCBEZWMgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNTU1NICAgIHwgSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXIgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTU1NTU0gICB8IEosIEYsIC4uLiwgRCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgTW9udGggKHN0YW5kLWFsb25lKSAgICAgICAgICAgICB8IEwgICAgICAgfCAxLCAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTJ0aCAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTEwgICAgICB8IDAxLCAwMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExMTCAgICAgfCBKYW4sIEZlYiwgLi4uLCBEZWMgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMTExMICAgIHwgSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXIgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTExMTEwgICB8IEosIEYsIC4uLiwgRCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgTG9jYWwgd2VlayBvZiB5ZWFyICAgICAgICAgICAgICB8IHcgICAgICAgfCAxLCAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3byAgICAgIHwgMXN0LCAybmQsIC4uLiwgNTN0aCAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd3cgICAgICB8IDAxLCAwMiwgLi4uLCA1MyAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSVNPIHdlZWsgb2YgeWVhciAgICAgICAgICAgICAgICB8IEkgICAgICAgfCAxLCAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBJbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgNTN0aCAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSUkgICAgICB8IDAxLCAwMiwgLi4uLCA1MyAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgRGF5IG9mIG1vbnRoICAgICAgICAgICAgICAgICAgICB8IGQgICAgICAgfCAxLCAyLCAuLi4sIDMxICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMzFzdCAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGQgICAgICB8IDAxLCAwMiwgLi4uLCAzMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgRGF5IG9mIHllYXIgICAgICAgICAgICAgICAgICAgICB8IEQgICAgICAgfCAxLCAyLCAuLi4sIDM2NSwgMzY2ICAgICAgICAgICAgICAgfCA5ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMzY1dGgsIDM2NnRoICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgREQgICAgICB8IDAxLCAwMiwgLi4uLCAzNjUsIDM2NiAgICAgICAgICAgICB8IDkgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERERCAgICAgfCAwMDEsIDAwMiwgLi4uLCAzNjUsIDM2NiAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEREREICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMyAgICAgfFxuICogfCBEYXkgb2Ygd2VlayAoZm9ybWF0dGluZykgICAgICAgIHwgRS4uRUVFICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3VuICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEVFRUUgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFRUVFRSAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRUVFRUVFICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU2EsIFN1ICAgICAgICB8ICAgICAgIHxcbiAqIHwgSVNPIGRheSBvZiB3ZWVrIChmb3JtYXR0aW5nKSAgICB8IGkgICAgICAgfCAxLCAyLCAzLCAuLi4sIDcgICAgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgN3RoICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaWkgICAgICB8IDAxLCAwMiwgLi4uLCAwNyAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlpaSAgICAgfCBNb24sIFR1ZSwgV2VkLCAuLi4sIFN1biAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpaWlpICAgIHwgTW9uZGF5LCBUdWVzZGF5LCAuLi4sIFN1bmRheSAgICAgIHwgMiw3ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaWlpaWkgICB8IE0sIFQsIFcsIFQsIEYsIFMsIFMgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlpaWlpaSAgfCBNbywgVHUsIFdlLCBUaCwgRnIsIFNhLCBTdSAgICAgICAgfCA3ICAgICB8XG4gKiB8IExvY2FsIGRheSBvZiB3ZWVrIChmb3JtYXR0aW5nKSAgfCBlICAgICAgIHwgMiwgMywgNCwgLi4uLCAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZW8gICAgICB8IDJuZCwgM3JkLCAuLi4sIDFzdCAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVlICAgICAgfCAwMiwgMDMsIC4uLiwgMDEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlZWUgICAgIHwgTW9uLCBUdWUsIFdlZCwgLi4uLCBTdW4gICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZWVlZSAgICB8IE1vbmRheSwgVHVlc2RheSwgLi4uLCBTdW5kYXkgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVlZWVlICAgfCBNLCBULCBXLCBULCBGLCBTLCBTICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlZWVlZWUgIHwgTW8sIFR1LCBXZSwgVGgsIEZyLCBTYSwgU3UgICAgICAgIHwgICAgICAgfFxuICogfCBMb2NhbCBkYXkgb2Ygd2VlayAoc3RhbmQtYWxvbmUpIHwgYyAgICAgICB8IDIsIDMsIDQsIC4uLiwgMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNvICAgICAgfCAybmQsIDNyZCwgLi4uLCAxc3QgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYyAgICAgIHwgMDIsIDAzLCAuLi4sIDAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2NjICAgICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3VuICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNjY2MgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjY2NjYyAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2NjY2NjICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU2EsIFN1ICAgICAgICB8ICAgICAgIHxcbiAqIHwgQU0sIFBNICAgICAgICAgICAgICAgICAgICAgICAgICB8IGEuLmFhICAgfCBBTSwgUE0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYWEgICAgIHwgYW0sIHBtICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWFhYSAgICB8IGEubS4sIHAubS4gICAgICAgICAgICAgICAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFhYWFhICAgfCBhLCBwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IEFNLCBQTSwgbm9vbiwgbWlkbmlnaHQgICAgICAgICAgfCBiLi5iYiAgIHwgQU0sIFBNLCBub29uLCBtaWRuaWdodCAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYmJiICAgICB8IGFtLCBwbSwgbm9vbiwgbWlkbmlnaHQgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGJiYmIgICAgfCBhLm0uLCBwLm0uLCBub29uLCBtaWRuaWdodCAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBiYmJiYiAgIHwgYSwgcCwgbiwgbWkgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBGbGV4aWJsZSBkYXkgcGVyaW9kICAgICAgICAgICAgIHwgQi4uQkJCICB8IGF0IG5pZ2h0LCBpbiB0aGUgbW9ybmluZywgLi4uICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJCQkIgICAgfCBhdCBuaWdodCwgaW4gdGhlIG1vcm5pbmcsIC4uLiAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCQkJCQiAgIHwgYXQgbmlnaHQsIGluIHRoZSBtb3JuaW5nLCAuLi4gICAgIHwgICAgICAgfFxuICogfCBIb3VyIFsxLTEyXSAgICAgICAgICAgICAgICAgICAgIHwgaCAgICAgICB8IDEsIDIsIC4uLiwgMTEsIDEyICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGhvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMXRoLCAxMnRoICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBoaCAgICAgIHwgMDEsIDAyLCAuLi4sIDExLCAxMiAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBIb3VyIFswLTIzXSAgICAgICAgICAgICAgICAgICAgIHwgSCAgICAgICB8IDAsIDEsIDIsIC4uLiwgMjMgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEhvICAgICAgfCAwdGgsIDFzdCwgMm5kLCAuLi4sIDIzcmQgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBISCAgICAgIHwgMDAsIDAxLCAwMiwgLi4uLCAyMyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBIb3VyIFswLTExXSAgICAgICAgICAgICAgICAgICAgIHwgSyAgICAgICB8IDEsIDIsIC4uLiwgMTEsIDAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEtvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMXRoLCAwdGggICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBLSyAgICAgIHwgMDEsIDAyLCAuLi4sIDExLCAwMCAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBIb3VyIFsxLTI0XSAgICAgICAgICAgICAgICAgICAgIHwgayAgICAgICB8IDI0LCAxLCAyLCAuLi4sIDIzICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGtvICAgICAgfCAyNHRoLCAxc3QsIDJuZCwgLi4uLCAyM3JkICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBrayAgICAgIHwgMjQsIDAxLCAwMiwgLi4uLCAyMyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBNaW51dGUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbSAgICAgICB8IDAsIDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG1vICAgICAgfCAwdGgsIDFzdCwgLi4uLCA1OXRoICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBtbSAgICAgIHwgMDAsIDAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBTZWNvbmQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcyAgICAgICB8IDAsIDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNvICAgICAgfCAwdGgsIDFzdCwgLi4uLCA1OXRoICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzcyAgICAgIHwgMDAsIDAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBGcmFjdGlvbiBvZiBzZWNvbmQgICAgICAgICAgICAgIHwgUyAgICAgICB8IDAsIDEsIC4uLiwgOSAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNTICAgICAgfCAwMCwgMDEsIC4uLiwgOTkgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTU1MgICAgIHwgMDAwLCAwMDEsIC4uLiwgOTk5ICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU1NTUyAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMgICAgIHxcbiAqIHwgVGltZXpvbmUgKElTTy04NjAxIHcvIFopICAgICAgICB8IFggICAgICAgfCAtMDgsICswNTMwLCBaICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBYWCAgICAgIHwgLTA4MDAsICswNTMwLCBaICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWFhYICAgICB8IC0wODowMCwgKzA1OjMwLCBaICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFhYWFggICAgfCAtMDgwMCwgKzA1MzAsIFosICsxMjM0NTYgICAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBYWFhYWCAgIHwgLTA4OjAwLCArMDU6MzAsIFosICsxMjozNDo1NiAgICAgIHwgICAgICAgfFxuICogfCBUaW1lem9uZSAoSVNPLTg2MDEgdy9vIFopICAgICAgIHwgeCAgICAgICB8IC0wOCwgKzA1MzAsICswMCAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHh4ICAgICAgfCAtMDgwMCwgKzA1MzAsICswMDAwICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB4eHggICAgIHwgLTA4OjAwLCArMDU6MzAsICswMDowMCAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeHh4eCAgICB8IC0wODAwLCArMDUzMCwgKzAwMDAsICsxMjM0NTYgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHh4eHh4ICAgfCAtMDg6MDAsICswNTozMCwgKzAwOjAwLCArMTI6MzQ6NTYgfCAgICAgICB8XG4gKiB8IFRpbWV6b25lIChHTVQpICAgICAgICAgICAgICAgICAgfCBPLi4uT09PIHwgR01ULTgsIEdNVCs1OjMwLCBHTVQrMCAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgT09PTyAgICB8IEdNVC0wODowMCwgR01UKzA1OjMwLCBHTVQrMDA6MDAgICB8IDIgICAgIHxcbiAqIHwgVGltZXpvbmUgKHNwZWNpZmljIG5vbi1sb2NhdC4pICB8IHouLi56enogfCBHTVQtOCwgR01UKzU6MzAsIEdNVCswICAgICAgICAgICAgfCA2ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB6enp6ICAgIHwgR01ULTA4OjAwLCBHTVQrMDU6MzAsIEdNVCswMDowMCAgIHwgMiw2ICAgfFxuICogfCBTZWNvbmRzIHRpbWVzdGFtcCAgICAgICAgICAgICAgIHwgdCAgICAgICB8IDUxMjk2OTUyMCAgICAgICAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHR0ICAgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzLDcgICB8XG4gKiB8IE1pbGxpc2Vjb25kcyB0aW1lc3RhbXAgICAgICAgICAgfCBUICAgICAgIHwgNTEyOTY5NTIwOTAwICAgICAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVFQgICAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMsNyAgIHxcbiAqIHwgTG9uZyBsb2NhbGl6ZWQgZGF0ZSAgICAgICAgICAgICB8IFAgICAgICAgfCAwNC8yOS8xNDUzICAgICAgICAgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQUCAgICAgIHwgQXByIDI5LCAxNDUzICAgICAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUFBQICAgICB8IEFwcmlsIDI5dGgsIDE0NTMgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBQUFAgICAgfCBGcmlkYXksIEFwcmlsIDI5dGgsIDE0NTMgICAgICAgICAgfCAyLDcgICB8XG4gKiB8IExvbmcgbG9jYWxpemVkIHRpbWUgICAgICAgICAgICAgfCBwICAgICAgIHwgMTI6MDAgQU0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcHAgICAgICB8IDEyOjAwOjAwIEFNICAgICAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBwcCAgICAgfCAxMjowMDowMCBBTSBHTVQrMiAgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwcHBwICAgIHwgMTI6MDA6MDAgQU0gR01UKzAyOjAwICAgICAgICAgICAgIHwgMiw3ICAgfFxuICogfCBDb21iaW5hdGlvbiBvZiBkYXRlIGFuZCB0aW1lICAgIHwgUHAgICAgICB8IDA0LzI5LzE0NTMsIDEyOjAwIEFNICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBQcHAgICAgfCBBcHIgMjksIDE0NTMsIDEyOjAwOjAwIEFNICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQUFBwcHAgIHwgQXByaWwgMjl0aCwgMTQ1MyBhdCAuLi4gICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUFBQUHBwcHB8IEZyaWRheSwgQXByaWwgMjl0aCwgMTQ1MyBhdCAuLi4gICB8IDIsNyAgIHxcbiAqIE5vdGVzOlxuICogMS4gXCJGb3JtYXR0aW5nXCIgdW5pdHMgKGUuZy4gZm9ybWF0dGluZyBxdWFydGVyKSBpbiB0aGUgZGVmYXVsdCBlbi1VUyBsb2NhbGVcbiAqICAgIGFyZSB0aGUgc2FtZSBhcyBcInN0YW5kLWFsb25lXCIgdW5pdHMsIGJ1dCBhcmUgZGlmZmVyZW50IGluIHNvbWUgbGFuZ3VhZ2VzLlxuICogICAgXCJGb3JtYXR0aW5nXCIgdW5pdHMgYXJlIGRlY2xpbmVkIGFjY29yZGluZyB0byB0aGUgcnVsZXMgb2YgdGhlIGxhbmd1YWdlXG4gKiAgICBpbiB0aGUgY29udGV4dCBvZiBhIGRhdGUuIFwiU3RhbmQtYWxvbmVcIiB1bml0cyBhcmUgYWx3YXlzIG5vbWluYXRpdmUgc2luZ3VsYXI6XG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdkbyBMTExMJywge2xvY2FsZTogY3N9KSAvLz0+ICc2LiBsaXN0b3BhZCdgXG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdkbyBNTU1NJywge2xvY2FsZTogY3N9KSAvLz0+ICc2LiBsaXN0b3BhZHUnYFxuICpcbiAqIDIuIEFueSBzZXF1ZW5jZSBvZiB0aGUgaWRlbnRpY2FsIGxldHRlcnMgaXMgYSBwYXR0ZXJuLCB1bmxlc3MgaXQgaXMgZXNjYXBlZCBieVxuICogICAgdGhlIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzIChzZWUgYmVsb3cpLlxuICogICAgSWYgdGhlIHNlcXVlbmNlIGlzIGxvbmdlciB0aGFuIGxpc3RlZCBpbiB0YWJsZSAoZS5nLiBgRUVFRUVFRUVFRUVgKVxuICogICAgdGhlIG91dHB1dCB3aWxsIGJlIHRoZSBzYW1lIGFzIGRlZmF1bHQgcGF0dGVybiBmb3IgdGhpcyB1bml0LCB1c3VhbGx5XG4gKiAgICB0aGUgbG9uZ2VzdCBvbmUgKGluIGNhc2Ugb2YgSVNPIHdlZWtkYXlzLCBgRUVFRWApLiBEZWZhdWx0IHBhdHRlcm5zIGZvciB1bml0c1xuICogICAgYXJlIG1hcmtlZCB3aXRoIFwiMlwiIGluIHRoZSBsYXN0IGNvbHVtbiBvZiB0aGUgdGFibGUuXG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdNTU0nKSAvLz0+ICdOb3YnYFxuICpcbiAqICAgIGBmb3JtYXQobmV3IERhdGUoMjAxNywgMTAsIDYpLCAnTU1NTScpIC8vPT4gJ05vdmVtYmVyJ2BcbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ01NTU1NJykgLy89PiAnTidgXG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdNTU1NTU0nKSAvLz0+ICdOb3ZlbWJlcidgXG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdNTU1NTU1NJykgLy89PiAnTm92ZW1iZXInYFxuICpcbiAqIDMuIFNvbWUgcGF0dGVybnMgY291bGQgYmUgdW5saW1pdGVkIGxlbmd0aCAoc3VjaCBhcyBgeXl5eXl5eXlgKS5cbiAqICAgIFRoZSBvdXRwdXQgd2lsbCBiZSBwYWRkZWQgd2l0aCB6ZXJvcyB0byBtYXRjaCB0aGUgbGVuZ3RoIG9mIHRoZSBwYXR0ZXJuLlxuICpcbiAqICAgIGBmb3JtYXQobmV3IERhdGUoMjAxNywgMTAsIDYpLCAneXl5eXl5eXknKSAvLz0+ICcwMDAwMjAxNydgXG4gKlxuICogNC4gYFFRUVFRYCBhbmQgYHFxcXFxYCBjb3VsZCBiZSBub3Qgc3RyaWN0bHkgbnVtZXJpY2FsIGluIHNvbWUgbG9jYWxlcy5cbiAqICAgIFRoZXNlIHRva2VucyByZXByZXNlbnQgdGhlIHNob3J0ZXN0IGZvcm0gb2YgdGhlIHF1YXJ0ZXIuXG4gKlxuICogNS4gVGhlIG1haW4gZGlmZmVyZW5jZSBiZXR3ZWVuIGB5YCBhbmQgYHVgIHBhdHRlcm5zIGFyZSBCLkMuIHllYXJzOlxuICpcbiAqICAgIHwgWWVhciB8IGB5YCB8IGB1YCB8XG4gKiAgICB8LS0tLS0tfC0tLS0tfC0tLS0tfFxuICogICAgfCBBQyAxIHwgICAxIHwgICAxIHxcbiAqICAgIHwgQkMgMSB8ICAgMSB8ICAgMCB8XG4gKiAgICB8IEJDIDIgfCAgIDIgfCAgLTEgfFxuICpcbiAqICAgIEFsc28gYHl5YCBhbHdheXMgcmV0dXJucyB0aGUgbGFzdCB0d28gZGlnaXRzIG9mIGEgeWVhcixcbiAqICAgIHdoaWxlIGB1dWAgcGFkcyBzaW5nbGUgZGlnaXQgeWVhcnMgdG8gMiBjaGFyYWN0ZXJzIGFuZCByZXR1cm5zIG90aGVyIHllYXJzIHVuY2hhbmdlZDpcbiAqXG4gKiAgICB8IFllYXIgfCBgeXlgIHwgYHV1YCB8XG4gKiAgICB8LS0tLS0tfC0tLS0tLXwtLS0tLS18XG4gKiAgICB8IDEgICAgfCAgIDAxIHwgICAwMSB8XG4gKiAgICB8IDE0ICAgfCAgIDE0IHwgICAxNCB8XG4gKiAgICB8IDM3NiAgfCAgIDc2IHwgIDM3NiB8XG4gKiAgICB8IDE0NTMgfCAgIDUzIHwgMTQ1MyB8XG4gKlxuICogICAgVGhlIHNhbWUgZGlmZmVyZW5jZSBpcyB0cnVlIGZvciBsb2NhbCBhbmQgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIChgWWAgYW5kIGBSYCksXG4gKiAgICBleGNlcHQgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhcnMgYXJlIGRlcGVuZGVudCBvbiBgb3B0aW9ucy53ZWVrU3RhcnRzT25gXG4gKiAgICBhbmQgYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCAoY29tcGFyZSBbZ2V0SVNPV2Vla1llYXJde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvZ2V0SVNPV2Vla1llYXJ9XG4gKiAgICBhbmQgW2dldFdlZWtZZWFyXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL2dldFdlZWtZZWFyfSkuXG4gKlxuICogNi4gU3BlY2lmaWMgbm9uLWxvY2F0aW9uIHRpbWV6b25lcyBhcmUgY3VycmVudGx5IHVuYXZhaWxhYmxlIGluIGBkYXRlLWZuc2AsXG4gKiAgICBzbyByaWdodCBub3cgdGhlc2UgdG9rZW5zIGZhbGwgYmFjayB0byBHTVQgdGltZXpvbmVzLlxuICpcbiAqIDcuIFRoZXNlIHBhdHRlcm5zIGFyZSBub3QgaW4gdGhlIFVuaWNvZGUgVGVjaG5pY2FsIFN0YW5kYXJkICMzNTpcbiAqICAgIC0gYGlgOiBJU08gZGF5IG9mIHdlZWtcbiAqICAgIC0gYElgOiBJU08gd2VlayBvZiB5ZWFyXG4gKiAgICAtIGBSYDogSVNPIHdlZWstbnVtYmVyaW5nIHllYXJcbiAqICAgIC0gYHRgOiBzZWNvbmRzIHRpbWVzdGFtcFxuICogICAgLSBgVGA6IG1pbGxpc2Vjb25kcyB0aW1lc3RhbXBcbiAqICAgIC0gYG9gOiBvcmRpbmFsIG51bWJlciBtb2RpZmllclxuICogICAgLSBgUGA6IGxvbmcgbG9jYWxpemVkIGRhdGVcbiAqICAgIC0gYHBgOiBsb25nIGxvY2FsaXplZCB0aW1lXG4gKlxuICogOC4gYFlZYCBhbmQgYFlZWVlgIHRva2VucyByZXByZXNlbnQgd2Vlay1udW1iZXJpbmcgeWVhcnMgYnV0IHRoZXkgYXJlIG9mdGVuIGNvbmZ1c2VkIHdpdGggeWVhcnMuXG4gKiAgICBZb3Ugc2hvdWxkIGVuYWJsZSBgb3B0aW9ucy51c2VBZGRpdGlvbmFsV2Vla1llYXJUb2tlbnNgIHRvIHVzZSB0aGVtLiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqXG4gKiA5LiBgRGAgYW5kIGBERGAgdG9rZW5zIHJlcHJlc2VudCBkYXlzIG9mIHRoZSB5ZWFyIGJ1dCB0aGV5IGFyZSBvZnRlbiBjb25mdXNlZCB3aXRoIGRheXMgb2YgdGhlIG1vbnRoLlxuICogICAgWW91IHNob3VsZCBlbmFibGUgYG9wdGlvbnMudXNlQWRkaXRpb25hbERheU9mWWVhclRva2Vuc2AgdG8gdXNlIHRoZW0uIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHBhcmFtIHtTdHJpbmd9IGZvcm1hdCAtIHRoZSBzdHJpbmcgb2YgdG9rZW5zXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGU9MV0gLSB0aGUgZGF5IG9mIEphbnVhcnksIHdoaWNoIGlzXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLnVzZUFkZGl0aW9uYWxXZWVrWWVhclRva2Vucz1mYWxzZV0gLSBpZiB0cnVlLCBhbGxvd3MgdXNhZ2Ugb2YgdGhlIHdlZWstbnVtYmVyaW5nIHllYXIgdG9rZW5zIGBZWWAgYW5kIGBZWVlZYDtcbiAqICAgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLnVzZUFkZGl0aW9uYWxEYXlPZlllYXJUb2tlbnM9ZmFsc2VdIC0gaWYgdHJ1ZSwgYWxsb3dzIHVzYWdlIG9mIHRoZSBkYXkgb2YgeWVhciB0b2tlbnMgYERgIGFuZCBgRERgO1xuICogICBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmdcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBkYXRlYCBtdXN0IG5vdCBiZSBJbnZhbGlkIERhdGVcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmxvY2FsZWAgbXVzdCBjb250YWluIGBsb2NhbGl6ZWAgcHJvcGVydHlcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmxvY2FsZWAgbXVzdCBjb250YWluIGBmb3JtYXRMb25nYCBwcm9wZXJ0eVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNlxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgN1xuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gdXNlIGB5eXl5YCBpbnN0ZWFkIG9mIGBZWVlZYCBmb3IgZm9ybWF0dGluZyB5ZWFycyB1c2luZyBbZm9ybWF0IHByb3ZpZGVkXSB0byB0aGUgaW5wdXQgW2lucHV0IHByb3ZpZGVkXTsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSB1c2UgYHl5YCBpbnN0ZWFkIG9mIGBZWWAgZm9yIGZvcm1hdHRpbmcgeWVhcnMgdXNpbmcgW2Zvcm1hdCBwcm92aWRlZF0gdG8gdGhlIGlucHV0IFtpbnB1dCBwcm92aWRlZF07IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gdXNlIGBkYCBpbnN0ZWFkIG9mIGBEYCBmb3IgZm9ybWF0dGluZyBkYXlzIG9mIHRoZSBtb250aCB1c2luZyBbZm9ybWF0IHByb3ZpZGVkXSB0byB0aGUgaW5wdXQgW2lucHV0IHByb3ZpZGVkXTsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSB1c2UgYGRkYCBpbnN0ZWFkIG9mIGBERGAgZm9yIGZvcm1hdHRpbmcgZGF5cyBvZiB0aGUgbW9udGggdXNpbmcgW2Zvcm1hdCBwcm92aWRlZF0gdG8gdGhlIGlucHV0IFtpbnB1dCBwcm92aWRlZF07IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gZm9ybWF0IHN0cmluZyBjb250YWlucyBhbiB1bmVzY2FwZWQgbGF0aW4gYWxwaGFiZXQgY2hhcmFjdGVyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxMSBGZWJydWFyeSAyMDE0IGluIG1pZGRsZS1lbmRpYW4gZm9ybWF0OlxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0KG5ldyBEYXRlKDIwMTQsIDEsIDExKSwgJ01NL2RkL3l5eXknKVxuICogLy89PiAnMDIvMTEvMjAxNCdcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDIgSnVseSAyMDE0IGluIEVzcGVyYW50bzpcbiAqIGltcG9ydCB7IGVvTG9jYWxlIH0gZnJvbSAnZGF0ZS1mbnMvbG9jYWxlL2VvJ1xuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0KG5ldyBEYXRlKDIwMTQsIDYsIDIpLCBcImRvICdkZScgTU1NTSB5eXl5XCIsIHtcbiAqICAgbG9jYWxlOiBlb0xvY2FsZVxuICogfSlcbiAqIC8vPT4gJzItYSBkZSBqdWxpbyAyMDE0J1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFc2NhcGUgc3RyaW5nIGJ5IHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzOlxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0KG5ldyBEYXRlKDIwMTQsIDYsIDIsIDE1KSwgXCJoICdvJydjbG9jaydcIilcbiAqIC8vPT4gXCIzIG8nY2xvY2tcIlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdChkaXJ0eURhdGUsIGRpcnR5Rm9ybWF0U3RyLCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfb3B0aW9ucyRsb2NhbGUsIF9yZWYyLCBfcmVmMywgX3JlZjQsIF9vcHRpb25zJGZpcnN0V2Vla0NvbiwgX29wdGlvbnMkbG9jYWxlMiwgX29wdGlvbnMkbG9jYWxlMiRvcHRpLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIsIF9yZWY1LCBfcmVmNiwgX3JlZjcsIF9vcHRpb25zJHdlZWtTdGFydHNPbiwgX29wdGlvbnMkbG9jYWxlMywgX29wdGlvbnMkbG9jYWxlMyRvcHRpLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwzLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWw0O1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGZvcm1hdFN0ciA9IFN0cmluZyhkaXJ0eUZvcm1hdFN0cik7XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIHZhciBsb2NhbGUgPSAoX3JlZiA9IChfb3B0aW9ucyRsb2NhbGUgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMubG9jYWxlKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRsb2NhbGUgIT09IHZvaWQgMCA/IF9vcHRpb25zJGxvY2FsZSA6IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IGRlZmF1bHRMb2NhbGU7XG4gIHZhciBmaXJzdFdlZWtDb250YWluc0RhdGUgPSB0b0ludGVnZXIoKF9yZWYyID0gKF9yZWYzID0gKF9yZWY0ID0gKF9vcHRpb25zJGZpcnN0V2Vla0NvbiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9vcHRpb25zJGZpcnN0V2Vla0NvbiAhPT0gdm9pZCAwID8gX29wdGlvbnMkZmlyc3RXZWVrQ29uIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlMiA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUyID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlMiRvcHRpID0gX29wdGlvbnMkbG9jYWxlMi5vcHRpb25zKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUyJG9wdGkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb25zJGxvY2FsZTIkb3B0aS5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWY0ICE9PSB2b2lkIDAgPyBfcmVmNCA6IGRlZmF1bHRPcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZjMgIT09IHZvaWQgMCA/IF9yZWYzIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZjIgIT09IHZvaWQgMCA/IF9yZWYyIDogMSk7XG5cbiAgLy8gVGVzdCBpZiB3ZWVrU3RhcnRzT24gaXMgYmV0d2VlbiAxIGFuZCA3IF9hbmRfIGlzIG5vdCBOYU5cbiAgaWYgKCEoZmlyc3RXZWVrQ29udGFpbnNEYXRlID49IDEgJiYgZmlyc3RXZWVrQ29udGFpbnNEYXRlIDw9IDcpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2ZpcnN0V2Vla0NvbnRhaW5zRGF0ZSBtdXN0IGJlIGJldHdlZW4gMSBhbmQgNyBpbmNsdXNpdmVseScpO1xuICB9XG4gIHZhciB3ZWVrU3RhcnRzT24gPSB0b0ludGVnZXIoKF9yZWY1ID0gKF9yZWY2ID0gKF9yZWY3ID0gKF9vcHRpb25zJHdlZWtTdGFydHNPbiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9vcHRpb25zJHdlZWtTdGFydHNPbiAhPT0gdm9pZCAwID8gX29wdGlvbnMkd2Vla1N0YXJ0c09uIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlMyA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUzID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlMyRvcHRpID0gX29wdGlvbnMkbG9jYWxlMy5vcHRpb25zKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUzJG9wdGkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb25zJGxvY2FsZTMkb3B0aS53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWY3ICE9PSB2b2lkIDAgPyBfcmVmNyA6IGRlZmF1bHRPcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjYgIT09IHZvaWQgMCA/IF9yZWY2IDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDMgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWw0ID0gX2RlZmF1bHRPcHRpb25zJGxvY2FsMy5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWw0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdE9wdGlvbnMkbG9jYWw0LndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjUgIT09IHZvaWQgMCA/IF9yZWY1IDogMCk7XG5cbiAgLy8gVGVzdCBpZiB3ZWVrU3RhcnRzT24gaXMgYmV0d2VlbiAwIGFuZCA2IF9hbmRfIGlzIG5vdCBOYU5cbiAgaWYgKCEod2Vla1N0YXJ0c09uID49IDAgJiYgd2Vla1N0YXJ0c09uIDw9IDYpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3dlZWtTdGFydHNPbiBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNiBpbmNsdXNpdmVseScpO1xuICB9XG4gIGlmICghbG9jYWxlLmxvY2FsaXplKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2xvY2FsZSBtdXN0IGNvbnRhaW4gbG9jYWxpemUgcHJvcGVydHknKTtcbiAgfVxuICBpZiAoIWxvY2FsZS5mb3JtYXRMb25nKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2xvY2FsZSBtdXN0IGNvbnRhaW4gZm9ybWF0TG9uZyBwcm9wZXJ0eScpO1xuICB9XG4gIHZhciBvcmlnaW5hbERhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgaWYgKCFpc1ZhbGlkKG9yaWdpbmFsRGF0ZSkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCB0aW1lIHZhbHVlJyk7XG4gIH1cblxuICAvLyBDb252ZXJ0IHRoZSBkYXRlIGluIHN5c3RlbSB0aW1lem9uZSB0byB0aGUgc2FtZSBkYXRlIGluIFVUQyswMDowMCB0aW1lem9uZS5cbiAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgd2hlbiBVVEMgZnVuY3Rpb25zIHdpbGwgYmUgaW1wbGVtZW50ZWQsIGxvY2FsZXMgd2lsbCBiZSBjb21wYXRpYmxlIHdpdGggdGhlbS5cbiAgLy8gU2VlIGFuIGlzc3VlIGFib3V0IFVUQyBmdW5jdGlvbnM6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9pc3N1ZXMvMzc2XG4gIHZhciB0aW1lem9uZU9mZnNldCA9IGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMob3JpZ2luYWxEYXRlKTtcbiAgdmFyIHV0Y0RhdGUgPSBzdWJNaWxsaXNlY29uZHMob3JpZ2luYWxEYXRlLCB0aW1lem9uZU9mZnNldCk7XG4gIHZhciBmb3JtYXR0ZXJPcHRpb25zID0ge1xuICAgIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZTogZmlyc3RXZWVrQ29udGFpbnNEYXRlLFxuICAgIHdlZWtTdGFydHNPbjogd2Vla1N0YXJ0c09uLFxuICAgIGxvY2FsZTogbG9jYWxlLFxuICAgIF9vcmlnaW5hbERhdGU6IG9yaWdpbmFsRGF0ZVxuICB9O1xuICB2YXIgcmVzdWx0ID0gZm9ybWF0U3RyLm1hdGNoKGxvbmdGb3JtYXR0aW5nVG9rZW5zUmVnRXhwKS5tYXAoZnVuY3Rpb24gKHN1YnN0cmluZykge1xuICAgIHZhciBmaXJzdENoYXJhY3RlciA9IHN1YnN0cmluZ1swXTtcbiAgICBpZiAoZmlyc3RDaGFyYWN0ZXIgPT09ICdwJyB8fCBmaXJzdENoYXJhY3RlciA9PT0gJ1AnKSB7XG4gICAgICB2YXIgbG9uZ0Zvcm1hdHRlciA9IGxvbmdGb3JtYXR0ZXJzW2ZpcnN0Q2hhcmFjdGVyXTtcbiAgICAgIHJldHVybiBsb25nRm9ybWF0dGVyKHN1YnN0cmluZywgbG9jYWxlLmZvcm1hdExvbmcpO1xuICAgIH1cbiAgICByZXR1cm4gc3Vic3RyaW5nO1xuICB9KS5qb2luKCcnKS5tYXRjaChmb3JtYXR0aW5nVG9rZW5zUmVnRXhwKS5tYXAoZnVuY3Rpb24gKHN1YnN0cmluZykge1xuICAgIC8vIFJlcGxhY2UgdHdvIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzIHdpdGggb25lIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJcbiAgICBpZiAoc3Vic3RyaW5nID09PSBcIicnXCIpIHtcbiAgICAgIHJldHVybiBcIidcIjtcbiAgICB9XG4gICAgdmFyIGZpcnN0Q2hhcmFjdGVyID0gc3Vic3RyaW5nWzBdO1xuICAgIGlmIChmaXJzdENoYXJhY3RlciA9PT0gXCInXCIpIHtcbiAgICAgIHJldHVybiBjbGVhbkVzY2FwZWRTdHJpbmcoc3Vic3RyaW5nKTtcbiAgICB9XG4gICAgdmFyIGZvcm1hdHRlciA9IGZvcm1hdHRlcnNbZmlyc3RDaGFyYWN0ZXJdO1xuICAgIGlmIChmb3JtYXR0ZXIpIHtcbiAgICAgIGlmICghKG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdm9pZCAwICYmIG9wdGlvbnMudXNlQWRkaXRpb25hbFdlZWtZZWFyVG9rZW5zKSAmJiBpc1Byb3RlY3RlZFdlZWtZZWFyVG9rZW4oc3Vic3RyaW5nKSkge1xuICAgICAgICB0aHJvd1Byb3RlY3RlZEVycm9yKHN1YnN0cmluZywgZGlydHlGb3JtYXRTdHIsIFN0cmluZyhkaXJ0eURhdGUpKTtcbiAgICAgIH1cbiAgICAgIGlmICghKG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdm9pZCAwICYmIG9wdGlvbnMudXNlQWRkaXRpb25hbERheU9mWWVhclRva2VucykgJiYgaXNQcm90ZWN0ZWREYXlPZlllYXJUb2tlbihzdWJzdHJpbmcpKSB7XG4gICAgICAgIHRocm93UHJvdGVjdGVkRXJyb3Ioc3Vic3RyaW5nLCBkaXJ0eUZvcm1hdFN0ciwgU3RyaW5nKGRpcnR5RGF0ZSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZvcm1hdHRlcih1dGNEYXRlLCBzdWJzdHJpbmcsIGxvY2FsZS5sb2NhbGl6ZSwgZm9ybWF0dGVyT3B0aW9ucyk7XG4gICAgfVxuICAgIGlmIChmaXJzdENoYXJhY3Rlci5tYXRjaCh1bmVzY2FwZWRMYXRpbkNoYXJhY3RlclJlZ0V4cCkpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdGb3JtYXQgc3RyaW5nIGNvbnRhaW5zIGFuIHVuZXNjYXBlZCBsYXRpbiBhbHBoYWJldCBjaGFyYWN0ZXIgYCcgKyBmaXJzdENoYXJhY3RlciArICdgJyk7XG4gICAgfVxuICAgIHJldHVybiBzdWJzdHJpbmc7XG4gIH0pLmpvaW4oJycpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gY2xlYW5Fc2NhcGVkU3RyaW5nKGlucHV0KSB7XG4gIHZhciBtYXRjaGVkID0gaW5wdXQubWF0Y2goZXNjYXBlZFN0cmluZ1JlZ0V4cCk7XG4gIGlmICghbWF0Y2hlZCkge1xuICAgIHJldHVybiBpbnB1dDtcbiAgfVxuICByZXR1cm4gbWF0Y2hlZFsxXS5yZXBsYWNlKGRvdWJsZVF1b3RlUmVnRXhwLCBcIidcIik7XG59IiwiaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuaW1wb3J0IGNvbXBhcmVBc2MgZnJvbSBcIi4uL2NvbXBhcmVBc2MvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5Nb250aHMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbk1vbnRocy9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJblNlY29uZHMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJblNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCBkZWZhdWx0TG9jYWxlIGZyb20gXCIuLi9fbGliL2RlZmF1bHRMb2NhbGUvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGNsb25lT2JqZWN0IGZyb20gXCIuLi9fbGliL2Nsb25lT2JqZWN0L2luZGV4LmpzXCI7XG5pbXBvcnQgYXNzaWduIGZyb20gXCIuLi9fbGliL2Fzc2lnbi9pbmRleC5qc1wiO1xuaW1wb3J0IGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMgZnJvbSBcIi4uL19saWIvZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbnZhciBNSU5VVEVTX0lOX0RBWSA9IDE0NDA7XG52YXIgTUlOVVRFU19JTl9BTE1PU1RfVFdPX0RBWVMgPSAyNTIwO1xudmFyIE1JTlVURVNfSU5fTU9OVEggPSA0MzIwMDtcbnZhciBNSU5VVEVTX0lOX1RXT19NT05USFMgPSA4NjQwMDtcblxuLyoqXG4gKiBAbmFtZSBmb3JtYXREaXN0YW5jZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzIGluIHdvcmRzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcyBpbiB3b3Jkcy5cbiAqXG4gKiB8IERpc3RhbmNlIGJldHdlZW4gZGF0ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICB8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8IDAgLi4uIDMwIHNlY3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbGVzcyB0aGFuIGEgbWludXRlICB8XG4gKiB8IDMwIHNlY3MgLi4uIDEgbWluIDMwIHNlY3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMSBtaW51dGUgICAgICAgICAgICB8XG4gKiB8IDEgbWluIDMwIHNlY3MgLi4uIDQ0IG1pbnMgMzAgc2VjcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWzIuLjQ0XSBtaW51dGVzICAgICB8XG4gKiB8IDQ0IG1pbnMgLi4uIDMwIHNlY3MgLi4uIDg5IG1pbnMgMzAgc2VjcyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWJvdXQgMSBob3VyICAgICAgICB8XG4gKiB8IDg5IG1pbnMgMzAgc2VjcyAuLi4gMjMgaHJzIDU5IG1pbnMgMzAgc2VjcyAgICAgICAgICAgICAgICAgICAgICAgIHwgYWJvdXQgWzIuLjI0XSBob3VycyB8XG4gKiB8IDIzIGhycyA1OSBtaW5zIDMwIHNlY3MgLi4uIDQxIGhycyA1OSBtaW5zIDMwIHNlY3MgICAgICAgICAgICAgICAgIHwgMSBkYXkgICAgICAgICAgICAgICB8XG4gKiB8IDQxIGhycyA1OSBtaW5zIDMwIHNlY3MgLi4uIDI5IGRheXMgMjMgaHJzIDU5IG1pbnMgMzAgc2VjcyAgICAgICAgIHwgWzIuLjMwXSBkYXlzICAgICAgICB8XG4gKiB8IDI5IGRheXMgMjMgaHJzIDU5IG1pbnMgMzAgc2VjcyAuLi4gNDQgZGF5cyAyMyBocnMgNTkgbWlucyAzMCBzZWNzIHwgYWJvdXQgMSBtb250aCAgICAgICB8XG4gKiB8IDQ0IGRheXMgMjMgaHJzIDU5IG1pbnMgMzAgc2VjcyAuLi4gNTkgZGF5cyAyMyBocnMgNTkgbWlucyAzMCBzZWNzIHwgYWJvdXQgMiBtb250aHMgICAgICB8XG4gKiB8IDU5IGRheXMgMjMgaHJzIDU5IG1pbnMgMzAgc2VjcyAuLi4gMSB5ciAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWzIuLjEyXSBtb250aHMgICAgICB8XG4gKiB8IDEgeXIgLi4uIDEgeXIgMyBtb250aHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWJvdXQgMSB5ZWFyICAgICAgICB8XG4gKiB8IDEgeXIgMyBtb250aHMgLi4uIDEgeXIgOSBtb250aCBzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3ZlciAxIHllYXIgICAgICAgICB8XG4gKiB8IDEgeXIgOSBtb250aHMgLi4uIDIgeXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxtb3N0IDIgeWVhcnMgICAgICB8XG4gKiB8IE4geXJzIC4uLiBOIHlycyAzIG1vbnRocyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWJvdXQgTiB5ZWFycyAgICAgICB8XG4gKiB8IE4geXJzIDMgbW9udGhzIC4uLiBOIHlycyA5IG1vbnRocyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3ZlciBOIHllYXJzICAgICAgICB8XG4gKiB8IE4geXJzIDkgbW9udGhzIC4uLiBOKzEgeXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxtb3N0IE4rMSB5ZWFycyAgICB8XG4gKlxuICogV2l0aCBgb3B0aW9ucy5pbmNsdWRlU2Vjb25kcyA9PSB0cnVlYDpcbiAqIHwgRGlzdGFuY2UgYmV0d2VlbiBkYXRlcyB8IFJlc3VsdCAgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgMCBzZWNzIC4uLiA1IHNlY3MgICAgICB8IGxlc3MgdGhhbiA1IHNlY29uZHMgIHxcbiAqIHwgNSBzZWNzIC4uLiAxMCBzZWNzICAgICB8IGxlc3MgdGhhbiAxMCBzZWNvbmRzIHxcbiAqIHwgMTAgc2VjcyAuLi4gMjAgc2VjcyAgICB8IGxlc3MgdGhhbiAyMCBzZWNvbmRzIHxcbiAqIHwgMjAgc2VjcyAuLi4gNDAgc2VjcyAgICB8IGhhbGYgYSBtaW51dGUgICAgICAgIHxcbiAqIHwgNDAgc2VjcyAuLi4gNjAgc2VjcyAgICB8IGxlc3MgdGhhbiBhIG1pbnV0ZSAgIHxcbiAqIHwgNjAgc2VjcyAuLi4gOTAgc2VjcyAgICB8IDEgbWludXRlICAgICAgICAgICAgIHxcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGJhc2VEYXRlIC0gdGhlIGRhdGUgdG8gY29tcGFyZSB3aXRoXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuaW5jbHVkZVNlY29uZHM9ZmFsc2VdIC0gZGlzdGFuY2VzIGxlc3MgdGhhbiBhIG1pbnV0ZSBhcmUgbW9yZSBkZXRhaWxlZFxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5hZGRTdWZmaXg9ZmFsc2VdIC0gcmVzdWx0IGluZGljYXRlcyBpZiB0aGUgc2Vjb25kIGRhdGUgaXMgZWFybGllciBvciBsYXRlciB0aGFuIHRoZSBmaXJzdFxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgZGlzdGFuY2UgaW4gd29yZHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBkYXRlYCBtdXN0IG5vdCBiZSBJbnZhbGlkIERhdGVcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBiYXNlRGF0ZWAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5sb2NhbGVgIG11c3QgY29udGFpbiBgZm9ybWF0RGlzdGFuY2VgIHByb3BlcnR5XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoYXQgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gMiBKdWx5IDIwMTQgYW5kIDEgSmFudWFyeSAyMDE1P1xuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0RGlzdGFuY2UobmV3IERhdGUoMjAxNCwgNiwgMiksIG5ldyBEYXRlKDIwMTUsIDAsIDEpKVxuICogLy89PiAnNiBtb250aHMnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoYXQgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gMSBKYW51YXJ5IDIwMTUgMDA6MDA6MTVcbiAqIC8vIGFuZCAxIEphbnVhcnkgMjAxNSAwMDowMDowMCwgaW5jbHVkaW5nIHNlY29uZHM/XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXREaXN0YW5jZShcbiAqICAgbmV3IERhdGUoMjAxNSwgMCwgMSwgMCwgMCwgMTUpLFxuICogICBuZXcgRGF0ZSgyMDE1LCAwLCAxLCAwLCAwLCAwKSxcbiAqICAgeyBpbmNsdWRlU2Vjb25kczogdHJ1ZSB9XG4gKiApXG4gKiAvLz0+ICdsZXNzIHRoYW4gMjAgc2Vjb25kcydcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hhdCBpcyB0aGUgZGlzdGFuY2UgZnJvbSAxIEphbnVhcnkgMjAxNlxuICogLy8gdG8gMSBKYW51YXJ5IDIwMTUsIHdpdGggYSBzdWZmaXg/XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXREaXN0YW5jZShuZXcgRGF0ZSgyMDE1LCAwLCAxKSwgbmV3IERhdGUoMjAxNiwgMCwgMSksIHtcbiAqICAgYWRkU3VmZml4OiB0cnVlXG4gKiB9KVxuICogLy89PiAnYWJvdXQgMSB5ZWFyIGFnbydcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hhdCBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiAxIEF1Z3VzdCAyMDE2IGFuZCAxIEphbnVhcnkgMjAxNSBpbiBFc3BlcmFudG8/XG4gKiBpbXBvcnQgeyBlb0xvY2FsZSB9IGZyb20gJ2RhdGUtZm5zL2xvY2FsZS9lbydcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlKG5ldyBEYXRlKDIwMTYsIDcsIDEpLCBuZXcgRGF0ZSgyMDE1LCAwLCAxKSwge1xuICogICBsb2NhbGU6IGVvTG9jYWxlXG4gKiB9KVxuICogLy89PiAncGxpIG9sIDEgamFybydcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmb3JtYXREaXN0YW5jZShkaXJ0eURhdGUsIGRpcnR5QmFzZURhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9vcHRpb25zJGxvY2FsZTtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIHZhciBsb2NhbGUgPSAoX3JlZiA9IChfb3B0aW9ucyRsb2NhbGUgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMubG9jYWxlKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRsb2NhbGUgIT09IHZvaWQgMCA/IF9vcHRpb25zJGxvY2FsZSA6IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IGRlZmF1bHRMb2NhbGU7XG4gIGlmICghbG9jYWxlLmZvcm1hdERpc3RhbmNlKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2xvY2FsZSBtdXN0IGNvbnRhaW4gZm9ybWF0RGlzdGFuY2UgcHJvcGVydHknKTtcbiAgfVxuICB2YXIgY29tcGFyaXNvbiA9IGNvbXBhcmVBc2MoZGlydHlEYXRlLCBkaXJ0eUJhc2VEYXRlKTtcbiAgaWYgKGlzTmFOKGNvbXBhcmlzb24pKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgdGltZSB2YWx1ZScpO1xuICB9XG4gIHZhciBsb2NhbGl6ZU9wdGlvbnMgPSBhc3NpZ24oY2xvbmVPYmplY3Qob3B0aW9ucyksIHtcbiAgICBhZGRTdWZmaXg6IEJvb2xlYW4ob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmFkZFN1ZmZpeCksXG4gICAgY29tcGFyaXNvbjogY29tcGFyaXNvblxuICB9KTtcbiAgdmFyIGRhdGVMZWZ0O1xuICB2YXIgZGF0ZVJpZ2h0O1xuICBpZiAoY29tcGFyaXNvbiA+IDApIHtcbiAgICBkYXRlTGVmdCA9IHRvRGF0ZShkaXJ0eUJhc2VEYXRlKTtcbiAgICBkYXRlUmlnaHQgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgfSBlbHNlIHtcbiAgICBkYXRlTGVmdCA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICAgIGRhdGVSaWdodCA9IHRvRGF0ZShkaXJ0eUJhc2VEYXRlKTtcbiAgfVxuICB2YXIgc2Vjb25kcyA9IGRpZmZlcmVuY2VJblNlY29uZHMoZGF0ZVJpZ2h0LCBkYXRlTGVmdCk7XG4gIHZhciBvZmZzZXRJblNlY29uZHMgPSAoZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhkYXRlUmlnaHQpIC0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhkYXRlTGVmdCkpIC8gMTAwMDtcbiAgdmFyIG1pbnV0ZXMgPSBNYXRoLnJvdW5kKChzZWNvbmRzIC0gb2Zmc2V0SW5TZWNvbmRzKSAvIDYwKTtcbiAgdmFyIG1vbnRocztcblxuICAvLyAwIHVwIHRvIDIgbWluc1xuICBpZiAobWludXRlcyA8IDIpIHtcbiAgICBpZiAob3B0aW9ucyAhPT0gbnVsbCAmJiBvcHRpb25zICE9PSB2b2lkIDAgJiYgb3B0aW9ucy5pbmNsdWRlU2Vjb25kcykge1xuICAgICAgaWYgKHNlY29uZHMgPCA1KSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ2xlc3NUaGFuWFNlY29uZHMnLCA1LCBsb2NhbGl6ZU9wdGlvbnMpO1xuICAgICAgfSBlbHNlIGlmIChzZWNvbmRzIDwgMTApIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgnbGVzc1RoYW5YU2Vjb25kcycsIDEwLCBsb2NhbGl6ZU9wdGlvbnMpO1xuICAgICAgfSBlbHNlIGlmIChzZWNvbmRzIDwgMjApIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgnbGVzc1RoYW5YU2Vjb25kcycsIDIwLCBsb2NhbGl6ZU9wdGlvbnMpO1xuICAgICAgfSBlbHNlIGlmIChzZWNvbmRzIDwgNDApIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgnaGFsZkFNaW51dGUnLCAwLCBsb2NhbGl6ZU9wdGlvbnMpO1xuICAgICAgfSBlbHNlIGlmIChzZWNvbmRzIDwgNjApIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgnbGVzc1RoYW5YTWludXRlcycsIDEsIGxvY2FsaXplT3B0aW9ucyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCd4TWludXRlcycsIDEsIGxvY2FsaXplT3B0aW9ucyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChtaW51dGVzID09PSAwKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ2xlc3NUaGFuWE1pbnV0ZXMnLCAxLCBsb2NhbGl6ZU9wdGlvbnMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgneE1pbnV0ZXMnLCBtaW51dGVzLCBsb2NhbGl6ZU9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDIgbWlucyB1cCB0byAwLjc1IGhyc1xuICB9IGVsc2UgaWYgKG1pbnV0ZXMgPCA0NSkge1xuICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ3hNaW51dGVzJywgbWludXRlcywgbG9jYWxpemVPcHRpb25zKTtcblxuICAgIC8vIDAuNzUgaHJzIHVwIHRvIDEuNSBocnNcbiAgfSBlbHNlIGlmIChtaW51dGVzIDwgOTApIHtcbiAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCdhYm91dFhIb3VycycsIDEsIGxvY2FsaXplT3B0aW9ucyk7XG5cbiAgICAvLyAxLjUgaHJzIHVwIHRvIDI0IGhyc1xuICB9IGVsc2UgaWYgKG1pbnV0ZXMgPCBNSU5VVEVTX0lOX0RBWSkge1xuICAgIHZhciBob3VycyA9IE1hdGgucm91bmQobWludXRlcyAvIDYwKTtcbiAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCdhYm91dFhIb3VycycsIGhvdXJzLCBsb2NhbGl6ZU9wdGlvbnMpO1xuXG4gICAgLy8gMSBkYXkgdXAgdG8gMS43NSBkYXlzXG4gIH0gZWxzZSBpZiAobWludXRlcyA8IE1JTlVURVNfSU5fQUxNT1NUX1RXT19EQVlTKSB7XG4gICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgneERheXMnLCAxLCBsb2NhbGl6ZU9wdGlvbnMpO1xuXG4gICAgLy8gMS43NSBkYXlzIHVwIHRvIDMwIGRheXNcbiAgfSBlbHNlIGlmIChtaW51dGVzIDwgTUlOVVRFU19JTl9NT05USCkge1xuICAgIHZhciBkYXlzID0gTWF0aC5yb3VuZChtaW51dGVzIC8gTUlOVVRFU19JTl9EQVkpO1xuICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ3hEYXlzJywgZGF5cywgbG9jYWxpemVPcHRpb25zKTtcblxuICAgIC8vIDEgbW9udGggdXAgdG8gMiBtb250aHNcbiAgfSBlbHNlIGlmIChtaW51dGVzIDwgTUlOVVRFU19JTl9UV09fTU9OVEhTKSB7XG4gICAgbW9udGhzID0gTWF0aC5yb3VuZChtaW51dGVzIC8gTUlOVVRFU19JTl9NT05USCk7XG4gICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgnYWJvdXRYTW9udGhzJywgbW9udGhzLCBsb2NhbGl6ZU9wdGlvbnMpO1xuICB9XG4gIG1vbnRocyA9IGRpZmZlcmVuY2VJbk1vbnRocyhkYXRlUmlnaHQsIGRhdGVMZWZ0KTtcblxuICAvLyAyIG1vbnRocyB1cCB0byAxMiBtb250aHNcbiAgaWYgKG1vbnRocyA8IDEyKSB7XG4gICAgdmFyIG5lYXJlc3RNb250aCA9IE1hdGgucm91bmQobWludXRlcyAvIE1JTlVURVNfSU5fTU9OVEgpO1xuICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ3hNb250aHMnLCBuZWFyZXN0TW9udGgsIGxvY2FsaXplT3B0aW9ucyk7XG5cbiAgICAvLyAxIHllYXIgdXAgdG8gbWF4IERhdGVcbiAgfSBlbHNlIHtcbiAgICB2YXIgbW9udGhzU2luY2VTdGFydE9mWWVhciA9IG1vbnRocyAlIDEyO1xuICAgIHZhciB5ZWFycyA9IE1hdGguZmxvb3IobW9udGhzIC8gMTIpO1xuXG4gICAgLy8gTiB5ZWFycyB1cCB0byAxIHllYXJzIDMgbW9udGhzXG4gICAgaWYgKG1vbnRoc1NpbmNlU3RhcnRPZlllYXIgPCAzKSB7XG4gICAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCdhYm91dFhZZWFycycsIHllYXJzLCBsb2NhbGl6ZU9wdGlvbnMpO1xuXG4gICAgICAvLyBOIHllYXJzIDMgbW9udGhzIHVwIHRvIE4geWVhcnMgOSBtb250aHNcbiAgICB9IGVsc2UgaWYgKG1vbnRoc1NpbmNlU3RhcnRPZlllYXIgPCA5KSB7XG4gICAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCdvdmVyWFllYXJzJywgeWVhcnMsIGxvY2FsaXplT3B0aW9ucyk7XG5cbiAgICAgIC8vIE4geWVhcnMgOSBtb250aHMgdXAgdG8gTiB5ZWFyIDEyIG1vbnRoc1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCdhbG1vc3RYWWVhcnMnLCB5ZWFycyArIDEsIGxvY2FsaXplT3B0aW9ucyk7XG4gICAgfVxuICB9XG59IiwiaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuaW1wb3J0IGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMgZnJvbSBcIi4uL19saWIvZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IGNvbXBhcmVBc2MgZnJvbSBcIi4uL2NvbXBhcmVBc2MvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGNsb25lT2JqZWN0IGZyb20gXCIuLi9fbGliL2Nsb25lT2JqZWN0L2luZGV4LmpzXCI7XG5pbXBvcnQgYXNzaWduIGZyb20gXCIuLi9fbGliL2Fzc2lnbi9pbmRleC5qc1wiO1xuaW1wb3J0IGRlZmF1bHRMb2NhbGUgZnJvbSBcIi4uL19saWIvZGVmYXVsdExvY2FsZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbnZhciBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFID0gMTAwMCAqIDYwO1xudmFyIE1JTlVURVNfSU5fREFZID0gNjAgKiAyNDtcbnZhciBNSU5VVEVTX0lOX01PTlRIID0gTUlOVVRFU19JTl9EQVkgKiAzMDtcbnZhciBNSU5VVEVTX0lOX1lFQVIgPSBNSU5VVEVTX0lOX0RBWSAqIDM2NTtcblxuLyoqXG4gKiBAbmFtZSBmb3JtYXREaXN0YW5jZVN0cmljdFxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzIGluIHdvcmRzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcyBpbiB3b3JkcywgdXNpbmcgc3RyaWN0IHVuaXRzLlxuICogVGhpcyBpcyBsaWtlIGBmb3JtYXREaXN0YW5jZWAsIGJ1dCBkb2VzIG5vdCB1c2UgaGVscGVycyBsaWtlICdhbG1vc3QnLCAnb3ZlcicsXG4gKiAnbGVzcyB0aGFuJyBhbmQgdGhlIGxpa2UuXG4gKlxuICogfCBEaXN0YW5jZSBiZXR3ZWVuIGRhdGVzIHwgUmVzdWx0ICAgICAgICAgICAgICB8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgMCAuLi4gNTkgc2VjcyAgICAgICAgICB8IFswLi41OV0gc2Vjb25kcyAgICAgfFxuICogfCAxIC4uLiA1OSBtaW5zICAgICAgICAgIHwgWzEuLjU5XSBtaW51dGVzICAgICB8XG4gKiB8IDEgLi4uIDIzIGhycyAgICAgICAgICAgfCBbMS4uMjNdIGhvdXJzICAgICAgIHxcbiAqIHwgMSAuLi4gMjkgZGF5cyAgICAgICAgICB8IFsxLi4yOV0gZGF5cyAgICAgICAgfFxuICogfCAxIC4uLiAxMSBtb250aHMgICAgICAgIHwgWzEuLjExXSBtb250aHMgICAgICB8XG4gKiB8IDEgLi4uIE4geWVhcnMgICAgICAgICAgfCBbMS4uTl0gIHllYXJzICAgICAgIHxcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGJhc2VEYXRlIC0gdGhlIGRhdGUgdG8gY29tcGFyZSB3aXRoXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuYWRkU3VmZml4PWZhbHNlXSAtIHJlc3VsdCBpbmRpY2F0ZXMgaWYgdGhlIHNlY29uZCBkYXRlIGlzIGVhcmxpZXIgb3IgbGF0ZXIgdGhhbiB0aGUgZmlyc3RcbiAqIEBwYXJhbSB7J3NlY29uZCd8J21pbnV0ZSd8J2hvdXInfCdkYXknfCdtb250aCd8J3llYXInfSBbb3B0aW9ucy51bml0XSAtIGlmIHNwZWNpZmllZCwgd2lsbCBmb3JjZSBhIHVuaXRcbiAqIEBwYXJhbSB7J2Zsb29yJ3wnY2VpbCd8J3JvdW5kJ30gW29wdGlvbnMucm91bmRpbmdNZXRob2Q9J3JvdW5kJ10gLSB3aGljaCB3YXkgdG8gcm91bmQgcGFydGlhbCB1bml0c1xuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgZGlzdGFuY2UgaW4gd29yZHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBkYXRlYCBtdXN0IG5vdCBiZSBJbnZhbGlkIERhdGVcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBiYXNlRGF0ZWAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5yb3VuZGluZ01ldGhvZGAgbXVzdCBiZSAnZmxvb3InLCAnY2VpbCcgb3IgJ3JvdW5kJ1xuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMudW5pdGAgbXVzdCBiZSAnc2Vjb25kJywgJ21pbnV0ZScsICdob3VyJywgJ2RheScsICdtb250aCcgb3IgJ3llYXInXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5sb2NhbGVgIG11c3QgY29udGFpbiBgZm9ybWF0RGlzdGFuY2VgIHByb3BlcnR5XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoYXQgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gMiBKdWx5IDIwMTQgYW5kIDEgSmFudWFyeSAyMDE1P1xuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0RGlzdGFuY2VTdHJpY3QobmV3IERhdGUoMjAxNCwgNiwgMiksIG5ldyBEYXRlKDIwMTUsIDAsIDIpKVxuICogLy89PiAnNiBtb250aHMnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoYXQgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gMSBKYW51YXJ5IDIwMTUgMDA6MDA6MTVcbiAqIC8vIGFuZCAxIEphbnVhcnkgMjAxNSAwMDowMDowMD9cbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlU3RyaWN0KFxuICogICBuZXcgRGF0ZSgyMDE1LCAwLCAxLCAwLCAwLCAxNSksXG4gKiAgIG5ldyBEYXRlKDIwMTUsIDAsIDEsIDAsIDAsIDApXG4gKiApXG4gKiAvLz0+ICcxNSBzZWNvbmRzJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGF0IGlzIHRoZSBkaXN0YW5jZSBmcm9tIDEgSmFudWFyeSAyMDE2XG4gKiAvLyB0byAxIEphbnVhcnkgMjAxNSwgd2l0aCBhIHN1ZmZpeD9cbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlU3RyaWN0KG5ldyBEYXRlKDIwMTUsIDAsIDEpLCBuZXcgRGF0ZSgyMDE2LCAwLCAxKSwge1xuICogICBhZGRTdWZmaXg6IHRydWVcbiAqIH0pXG4gKiAvLz0+ICcxIHllYXIgYWdvJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGF0IGlzIHRoZSBkaXN0YW5jZSBmcm9tIDEgSmFudWFyeSAyMDE2XG4gKiAvLyB0byAxIEphbnVhcnkgMjAxNSwgaW4gbWludXRlcz9cbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlU3RyaWN0KG5ldyBEYXRlKDIwMTYsIDAsIDEpLCBuZXcgRGF0ZSgyMDE1LCAwLCAxKSwge1xuICogICB1bml0OiAnbWludXRlJ1xuICogfSlcbiAqIC8vPT4gJzUyNTYwMCBtaW51dGVzJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGF0IGlzIHRoZSBkaXN0YW5jZSBmcm9tIDEgSmFudWFyeSAyMDE1XG4gKiAvLyB0byAyOCBKYW51YXJ5IDIwMTUsIGluIG1vbnRocywgcm91bmRlZCB1cD9cbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlU3RyaWN0KG5ldyBEYXRlKDIwMTUsIDAsIDI4KSwgbmV3IERhdGUoMjAxNSwgMCwgMSksIHtcbiAqICAgdW5pdDogJ21vbnRoJyxcbiAqICAgcm91bmRpbmdNZXRob2Q6ICdjZWlsJ1xuICogfSlcbiAqIC8vPT4gJzEgbW9udGgnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoYXQgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gMSBBdWd1c3QgMjAxNiBhbmQgMSBKYW51YXJ5IDIwMTUgaW4gRXNwZXJhbnRvP1xuICogaW1wb3J0IHsgZW9Mb2NhbGUgfSBmcm9tICdkYXRlLWZucy9sb2NhbGUvZW8nXG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXREaXN0YW5jZVN0cmljdChuZXcgRGF0ZSgyMDE2LCA3LCAxKSwgbmV3IERhdGUoMjAxNSwgMCwgMSksIHtcbiAqICAgbG9jYWxlOiBlb0xvY2FsZVxuICogfSlcbiAqIC8vPT4gJzEgamFybydcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmb3JtYXREaXN0YW5jZVN0cmljdChkaXJ0eURhdGUsIGRpcnR5QmFzZURhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9vcHRpb25zJGxvY2FsZSwgX29wdGlvbnMkcm91bmRpbmdNZXRoO1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIGxvY2FsZSA9IChfcmVmID0gKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5sb2NhbGUpICE9PSBudWxsICYmIF9vcHRpb25zJGxvY2FsZSAhPT0gdm9pZCAwID8gX29wdGlvbnMkbG9jYWxlIDogZGVmYXVsdE9wdGlvbnMubG9jYWxlKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB2b2lkIDAgPyBfcmVmIDogZGVmYXVsdExvY2FsZTtcbiAgaWYgKCFsb2NhbGUuZm9ybWF0RGlzdGFuY2UpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignbG9jYWxlIG11c3QgY29udGFpbiBsb2NhbGl6ZS5mb3JtYXREaXN0YW5jZSBwcm9wZXJ0eScpO1xuICB9XG4gIHZhciBjb21wYXJpc29uID0gY29tcGFyZUFzYyhkaXJ0eURhdGUsIGRpcnR5QmFzZURhdGUpO1xuICBpZiAoaXNOYU4oY29tcGFyaXNvbikpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCB0aW1lIHZhbHVlJyk7XG4gIH1cbiAgdmFyIGxvY2FsaXplT3B0aW9ucyA9IGFzc2lnbihjbG9uZU9iamVjdChvcHRpb25zKSwge1xuICAgIGFkZFN1ZmZpeDogQm9vbGVhbihvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuYWRkU3VmZml4KSxcbiAgICBjb21wYXJpc29uOiBjb21wYXJpc29uXG4gIH0pO1xuICB2YXIgZGF0ZUxlZnQ7XG4gIHZhciBkYXRlUmlnaHQ7XG4gIGlmIChjb21wYXJpc29uID4gMCkge1xuICAgIGRhdGVMZWZ0ID0gdG9EYXRlKGRpcnR5QmFzZURhdGUpO1xuICAgIGRhdGVSaWdodCA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB9IGVsc2Uge1xuICAgIGRhdGVMZWZ0ID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gICAgZGF0ZVJpZ2h0ID0gdG9EYXRlKGRpcnR5QmFzZURhdGUpO1xuICB9XG4gIHZhciByb3VuZGluZ01ldGhvZCA9IFN0cmluZygoX29wdGlvbnMkcm91bmRpbmdNZXRoID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnJvdW5kaW5nTWV0aG9kKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRyb3VuZGluZ01ldGggIT09IHZvaWQgMCA/IF9vcHRpb25zJHJvdW5kaW5nTWV0aCA6ICdyb3VuZCcpO1xuICB2YXIgcm91bmRpbmdNZXRob2RGbjtcbiAgaWYgKHJvdW5kaW5nTWV0aG9kID09PSAnZmxvb3InKSB7XG4gICAgcm91bmRpbmdNZXRob2RGbiA9IE1hdGguZmxvb3I7XG4gIH0gZWxzZSBpZiAocm91bmRpbmdNZXRob2QgPT09ICdjZWlsJykge1xuICAgIHJvdW5kaW5nTWV0aG9kRm4gPSBNYXRoLmNlaWw7XG4gIH0gZWxzZSBpZiAocm91bmRpbmdNZXRob2QgPT09ICdyb3VuZCcpIHtcbiAgICByb3VuZGluZ01ldGhvZEZuID0gTWF0aC5yb3VuZDtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcInJvdW5kaW5nTWV0aG9kIG11c3QgYmUgJ2Zsb29yJywgJ2NlaWwnIG9yICdyb3VuZCdcIik7XG4gIH1cbiAgdmFyIG1pbGxpc2Vjb25kcyA9IGRhdGVSaWdodC5nZXRUaW1lKCkgLSBkYXRlTGVmdC5nZXRUaW1lKCk7XG4gIHZhciBtaW51dGVzID0gbWlsbGlzZWNvbmRzIC8gTUlMTElTRUNPTkRTX0lOX01JTlVURTtcbiAgdmFyIHRpbWV6b25lT2Zmc2V0ID0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhkYXRlUmlnaHQpIC0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhkYXRlTGVmdCk7XG5cbiAgLy8gVXNlIERTVC1ub3JtYWxpemVkIGRpZmZlcmVuY2UgaW4gbWludXRlcyBmb3IgeWVhcnMsIG1vbnRocyBhbmQgZGF5cztcbiAgLy8gdXNlIHJlZ3VsYXIgZGlmZmVyZW5jZSBpbiBtaW51dGVzIGZvciBob3VycywgbWludXRlcyBhbmQgc2Vjb25kcy5cbiAgdmFyIGRzdE5vcm1hbGl6ZWRNaW51dGVzID0gKG1pbGxpc2Vjb25kcyAtIHRpbWV6b25lT2Zmc2V0KSAvIE1JTExJU0VDT05EU19JTl9NSU5VVEU7XG4gIHZhciBkZWZhdWx0VW5pdCA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy51bml0O1xuICB2YXIgdW5pdDtcbiAgaWYgKCFkZWZhdWx0VW5pdCkge1xuICAgIGlmIChtaW51dGVzIDwgMSkge1xuICAgICAgdW5pdCA9ICdzZWNvbmQnO1xuICAgIH0gZWxzZSBpZiAobWludXRlcyA8IDYwKSB7XG4gICAgICB1bml0ID0gJ21pbnV0ZSc7XG4gICAgfSBlbHNlIGlmIChtaW51dGVzIDwgTUlOVVRFU19JTl9EQVkpIHtcbiAgICAgIHVuaXQgPSAnaG91cic7XG4gICAgfSBlbHNlIGlmIChkc3ROb3JtYWxpemVkTWludXRlcyA8IE1JTlVURVNfSU5fTU9OVEgpIHtcbiAgICAgIHVuaXQgPSAnZGF5JztcbiAgICB9IGVsc2UgaWYgKGRzdE5vcm1hbGl6ZWRNaW51dGVzIDwgTUlOVVRFU19JTl9ZRUFSKSB7XG4gICAgICB1bml0ID0gJ21vbnRoJztcbiAgICB9IGVsc2Uge1xuICAgICAgdW5pdCA9ICd5ZWFyJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdW5pdCA9IFN0cmluZyhkZWZhdWx0VW5pdCk7XG4gIH1cblxuICAvLyAwIHVwIHRvIDYwIHNlY29uZHNcbiAgaWYgKHVuaXQgPT09ICdzZWNvbmQnKSB7XG4gICAgdmFyIHNlY29uZHMgPSByb3VuZGluZ01ldGhvZEZuKG1pbGxpc2Vjb25kcyAvIDEwMDApO1xuICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ3hTZWNvbmRzJywgc2Vjb25kcywgbG9jYWxpemVPcHRpb25zKTtcblxuICAgIC8vIDEgdXAgdG8gNjAgbWluc1xuICB9IGVsc2UgaWYgKHVuaXQgPT09ICdtaW51dGUnKSB7XG4gICAgdmFyIHJvdW5kZWRNaW51dGVzID0gcm91bmRpbmdNZXRob2RGbihtaW51dGVzKTtcbiAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCd4TWludXRlcycsIHJvdW5kZWRNaW51dGVzLCBsb2NhbGl6ZU9wdGlvbnMpO1xuXG4gICAgLy8gMSB1cCB0byAyNCBob3Vyc1xuICB9IGVsc2UgaWYgKHVuaXQgPT09ICdob3VyJykge1xuICAgIHZhciBob3VycyA9IHJvdW5kaW5nTWV0aG9kRm4obWludXRlcyAvIDYwKTtcbiAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCd4SG91cnMnLCBob3VycywgbG9jYWxpemVPcHRpb25zKTtcblxuICAgIC8vIDEgdXAgdG8gMzAgZGF5c1xuICB9IGVsc2UgaWYgKHVuaXQgPT09ICdkYXknKSB7XG4gICAgdmFyIGRheXMgPSByb3VuZGluZ01ldGhvZEZuKGRzdE5vcm1hbGl6ZWRNaW51dGVzIC8gTUlOVVRFU19JTl9EQVkpO1xuICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ3hEYXlzJywgZGF5cywgbG9jYWxpemVPcHRpb25zKTtcblxuICAgIC8vIDEgdXAgdG8gMTIgbW9udGhzXG4gIH0gZWxzZSBpZiAodW5pdCA9PT0gJ21vbnRoJykge1xuICAgIHZhciBtb250aHMgPSByb3VuZGluZ01ldGhvZEZuKGRzdE5vcm1hbGl6ZWRNaW51dGVzIC8gTUlOVVRFU19JTl9NT05USCk7XG4gICAgcmV0dXJuIG1vbnRocyA9PT0gMTIgJiYgZGVmYXVsdFVuaXQgIT09ICdtb250aCcgPyBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ3hZZWFycycsIDEsIGxvY2FsaXplT3B0aW9ucykgOiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ3hNb250aHMnLCBtb250aHMsIGxvY2FsaXplT3B0aW9ucyk7XG5cbiAgICAvLyAxIHllYXIgdXAgdG8gbWF4IERhdGVcbiAgfSBlbHNlIGlmICh1bml0ID09PSAneWVhcicpIHtcbiAgICB2YXIgeWVhcnMgPSByb3VuZGluZ01ldGhvZEZuKGRzdE5vcm1hbGl6ZWRNaW51dGVzIC8gTUlOVVRFU19JTl9ZRUFSKTtcbiAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCd4WWVhcnMnLCB5ZWFycywgbG9jYWxpemVPcHRpb25zKTtcbiAgfVxuICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcInVuaXQgbXVzdCBiZSAnc2Vjb25kJywgJ21pbnV0ZScsICdob3VyJywgJ2RheScsICdtb250aCcgb3IgJ3llYXInXCIpO1xufSIsImltcG9ydCBkaXN0YW5jZUluV29yZHMgZnJvbSBcIi4uL2Zvcm1hdERpc3RhbmNlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBmb3JtYXREaXN0YW5jZVRvTm93XG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZSBhbmQgbm93IGluIHdvcmRzLlxuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZSBhbmQgbm93IGluIHdvcmRzLlxuICpcbiAqIHwgRGlzdGFuY2UgdG8gbm93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgMCAuLi4gMzAgc2VjcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBsZXNzIHRoYW4gYSBtaW51dGUgIHxcbiAqIHwgMzAgc2VjcyAuLi4gMSBtaW4gMzAgc2VjcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxIG1pbnV0ZSAgICAgICAgICAgIHxcbiAqIHwgMSBtaW4gMzAgc2VjcyAuLi4gNDQgbWlucyAzMCBzZWNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbMi4uNDRdIG1pbnV0ZXMgICAgIHxcbiAqIHwgNDQgbWlucyAuLi4gMzAgc2VjcyAuLi4gODkgbWlucyAzMCBzZWNzICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYm91dCAxIGhvdXIgICAgICAgIHxcbiAqIHwgODkgbWlucyAzMCBzZWNzIC4uLiAyMyBocnMgNTkgbWlucyAzMCBzZWNzICAgICAgICAgICAgICAgICAgICAgICAgfCBhYm91dCBbMi4uMjRdIGhvdXJzIHxcbiAqIHwgMjMgaHJzIDU5IG1pbnMgMzAgc2VjcyAuLi4gNDEgaHJzIDU5IG1pbnMgMzAgc2VjcyAgICAgICAgICAgICAgICAgfCAxIGRheSAgICAgICAgICAgICAgIHxcbiAqIHwgNDEgaHJzIDU5IG1pbnMgMzAgc2VjcyAuLi4gMjkgZGF5cyAyMyBocnMgNTkgbWlucyAzMCBzZWNzICAgICAgICAgfCBbMi4uMzBdIGRheXMgICAgICAgIHxcbiAqIHwgMjkgZGF5cyAyMyBocnMgNTkgbWlucyAzMCBzZWNzIC4uLiA0NCBkYXlzIDIzIGhycyA1OSBtaW5zIDMwIHNlY3MgfCBhYm91dCAxIG1vbnRoICAgICAgIHxcbiAqIHwgNDQgZGF5cyAyMyBocnMgNTkgbWlucyAzMCBzZWNzIC4uLiA1OSBkYXlzIDIzIGhycyA1OSBtaW5zIDMwIHNlY3MgfCBhYm91dCAyIG1vbnRocyAgICAgIHxcbiAqIHwgNTkgZGF5cyAyMyBocnMgNTkgbWlucyAzMCBzZWNzIC4uLiAxIHlyICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbMi4uMTJdIG1vbnRocyAgICAgIHxcbiAqIHwgMSB5ciAuLi4gMSB5ciAzIG1vbnRocyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYm91dCAxIHllYXIgICAgICAgIHxcbiAqIHwgMSB5ciAzIG1vbnRocyAuLi4gMSB5ciA5IG1vbnRoIHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvdmVyIDEgeWVhciAgICAgICAgIHxcbiAqIHwgMSB5ciA5IG1vbnRocyAuLi4gMiB5cnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbG1vc3QgMiB5ZWFycyAgICAgIHxcbiAqIHwgTiB5cnMgLi4uIE4geXJzIDMgbW9udGhzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYm91dCBOIHllYXJzICAgICAgIHxcbiAqIHwgTiB5cnMgMyBtb250aHMgLi4uIE4geXJzIDkgbW9udGhzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvdmVyIE4geWVhcnMgICAgICAgIHxcbiAqIHwgTiB5cnMgOSBtb250aHMgLi4uIE4rMSB5cnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbG1vc3QgTisxIHllYXJzICAgIHxcbiAqXG4gKiBXaXRoIGBvcHRpb25zLmluY2x1ZGVTZWNvbmRzID09IHRydWVgOlxuICogfCBEaXN0YW5jZSB0byBub3cgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCAwIHNlY3MgLi4uIDUgc2VjcyAgIHwgbGVzcyB0aGFuIDUgc2Vjb25kcyAgfFxuICogfCA1IHNlY3MgLi4uIDEwIHNlY3MgIHwgbGVzcyB0aGFuIDEwIHNlY29uZHMgfFxuICogfCAxMCBzZWNzIC4uLiAyMCBzZWNzIHwgbGVzcyB0aGFuIDIwIHNlY29uZHMgfFxuICogfCAyMCBzZWNzIC4uLiA0MCBzZWNzIHwgaGFsZiBhIG1pbnV0ZSAgICAgICAgfFxuICogfCA0MCBzZWNzIC4uLiA2MCBzZWNzIHwgbGVzcyB0aGFuIGEgbWludXRlICAgfFxuICogfCA2MCBzZWNzIC4uLiA5MCBzZWNzIHwgMSBtaW51dGUgICAgICAgICAgICAgfFxuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYERhdGUubm93KClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSB0aGUgb2JqZWN0IHdpdGggb3B0aW9uc1xuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5pbmNsdWRlU2Vjb25kcz1mYWxzZV0gLSBkaXN0YW5jZXMgbGVzcyB0aGFuIGEgbWludXRlIGFyZSBtb3JlIGRldGFpbGVkXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLmFkZFN1ZmZpeD1mYWxzZV0gLSByZXN1bHQgc3BlY2lmaWVzIGlmIG5vdyBpcyBlYXJsaWVyIG9yIGxhdGVyIHRoYW4gdGhlIHBhc3NlZCBkYXRlXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBkaXN0YW5jZSBpbiB3b3Jkc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgZGF0ZWAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5sb2NhbGVgIG11c3QgY29udGFpbiBgZm9ybWF0RGlzdGFuY2VgIHByb3BlcnR5XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDEgSmFudWFyeSAyMDE1LCB3aGF0IGlzIHRoZSBkaXN0YW5jZSB0byAyIEp1bHkgMjAxND9cbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlVG9Ob3coXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIpXG4gKiApXG4gKiAvLz0+ICc2IG1vbnRocydcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgbm93IGlzIDEgSmFudWFyeSAyMDE1IDAwOjAwOjAwLFxuICogLy8gd2hhdCBpcyB0aGUgZGlzdGFuY2UgdG8gMSBKYW51YXJ5IDIwMTUgMDA6MDA6MTUsIGluY2x1ZGluZyBzZWNvbmRzP1xuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0RGlzdGFuY2VUb05vdyhcbiAqICAgbmV3IERhdGUoMjAxNSwgMCwgMSwgMCwgMCwgMTUpLFxuICogICB7aW5jbHVkZVNlY29uZHM6IHRydWV9XG4gKiApXG4gKiAvLz0+ICdsZXNzIHRoYW4gMjAgc2Vjb25kcydcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgMSBKYW51YXJ5IDIwMTUsXG4gKiAvLyB3aGF0IGlzIHRoZSBkaXN0YW5jZSB0byAxIEphbnVhcnkgMjAxNiwgd2l0aCBhIHN1ZmZpeD9cbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlVG9Ob3coXG4gKiAgIG5ldyBEYXRlKDIwMTYsIDAsIDEpLFxuICogICB7YWRkU3VmZml4OiB0cnVlfVxuICogKVxuICogLy89PiAnaW4gYWJvdXQgMSB5ZWFyJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyAxIEphbnVhcnkgMjAxNSxcbiAqIC8vIHdoYXQgaXMgdGhlIGRpc3RhbmNlIHRvIDEgQXVndXN0IDIwMTYgaW4gRXNwZXJhbnRvP1xuICogY29uc3QgZW9Mb2NhbGUgPSByZXF1aXJlKCdkYXRlLWZucy9sb2NhbGUvZW8nKVxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0RGlzdGFuY2VUb05vdyhcbiAqICAgbmV3IERhdGUoMjAxNiwgNywgMSksXG4gKiAgIHtsb2NhbGU6IGVvTG9jYWxlfVxuICogKVxuICogLy89PiAncGxpIG9sIDEgamFybydcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0RGlzdGFuY2VUb05vdyhkaXJ0eURhdGUsIG9wdGlvbnMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBkaXN0YW5jZUluV29yZHMoZGlydHlEYXRlLCBEYXRlLm5vdygpLCBvcHRpb25zKTtcbn0iLCJpbXBvcnQgZm9ybWF0RGlzdGFuY2VTdHJpY3QgZnJvbSBcIi4uL2Zvcm1hdERpc3RhbmNlU3RyaWN0L2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBmb3JtYXREaXN0YW5jZVRvTm93U3RyaWN0XG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZSBhbmQgbm93IGluIHdvcmRzLlxuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMgaW4gd29yZHMsIHVzaW5nIHN0cmljdCB1bml0cy5cbiAqIFRoaXMgaXMgbGlrZSBgZm9ybWF0RGlzdGFuY2VgLCBidXQgZG9lcyBub3QgdXNlIGhlbHBlcnMgbGlrZSAnYWxtb3N0JywgJ292ZXInLFxuICogJ2xlc3MgdGhhbicgYW5kIHRoZSBsaWtlLlxuICpcbiAqIHwgRGlzdGFuY2UgYmV0d2VlbiBkYXRlcyB8IFJlc3VsdCAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8IDAgLi4uIDU5IHNlY3MgICAgICAgICAgfCBbMC4uNTldIHNlY29uZHMgICAgIHxcbiAqIHwgMSAuLi4gNTkgbWlucyAgICAgICAgICB8IFsxLi41OV0gbWludXRlcyAgICAgfFxuICogfCAxIC4uLiAyMyBocnMgICAgICAgICAgIHwgWzEuLjIzXSBob3VycyAgICAgICB8XG4gKiB8IDEgLi4uIDI5IGRheXMgICAgICAgICAgfCBbMS4uMjldIGRheXMgICAgICAgIHxcbiAqIHwgMSAuLi4gMTEgbW9udGhzICAgICAgICB8IFsxLi4xMV0gbW9udGhzICAgICAgfFxuICogfCAxIC4uLiBOIHllYXJzICAgICAgICAgIHwgWzEuLk5dICB5ZWFycyAgICAgICB8XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuYWRkU3VmZml4PWZhbHNlXSAtIHJlc3VsdCBpbmRpY2F0ZXMgaWYgdGhlIHNlY29uZCBkYXRlIGlzIGVhcmxpZXIgb3IgbGF0ZXIgdGhhbiB0aGUgZmlyc3RcbiAqIEBwYXJhbSB7J3NlY29uZCd8J21pbnV0ZSd8J2hvdXInfCdkYXknfCdtb250aCd8J3llYXInfSBbb3B0aW9ucy51bml0XSAtIGlmIHNwZWNpZmllZCwgd2lsbCBmb3JjZSBhIHVuaXRcbiAqIEBwYXJhbSB7J2Zsb29yJ3wnY2VpbCd8J3JvdW5kJ30gW29wdGlvbnMucm91bmRpbmdNZXRob2Q9J3JvdW5kJ10gLSB3aGljaCB3YXkgdG8gcm91bmQgcGFydGlhbCB1bml0c1xuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgZGlzdGFuY2UgaW4gd29yZHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYGRhdGVgIG11c3Qgbm90IGJlIEludmFsaWQgRGF0ZVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMubG9jYWxlYCBtdXN0IGNvbnRhaW4gYGZvcm1hdERpc3RhbmNlYCBwcm9wZXJ0eVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyAxIEphbnVhcnkgMjAxNSwgd2hhdCBpcyB0aGUgZGlzdGFuY2UgdG8gMiBKdWx5IDIwMTQ/XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXREaXN0YW5jZVRvTm93U3RyaWN0KFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyKVxuICogKVxuICogLy89PiAnNiBtb250aHMnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIG5vdyBpcyAxIEphbnVhcnkgMjAxNSAwMDowMDowMCxcbiAqIC8vIHdoYXQgaXMgdGhlIGRpc3RhbmNlIHRvIDEgSmFudWFyeSAyMDE1IDAwOjAwOjE1LCBpbmNsdWRpbmcgc2Vjb25kcz9cbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlVG9Ob3dTdHJpY3QoXG4gKiAgIG5ldyBEYXRlKDIwMTUsIDAsIDEsIDAsIDAsIDE1KVxuICogKVxuICogLy89PiAnMTUgc2Vjb25kcydcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgMSBKYW51YXJ5IDIwMTUsXG4gKiAvLyB3aGF0IGlzIHRoZSBkaXN0YW5jZSB0byAxIEphbnVhcnkgMjAxNiwgd2l0aCBhIHN1ZmZpeD9cbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlVG9Ob3dTdHJpY3QoXG4gKiAgIG5ldyBEYXRlKDIwMTYsIDAsIDEpLFxuICogICB7YWRkU3VmZml4OiB0cnVlfVxuICogKVxuICogLy89PiAnaW4gMSB5ZWFyJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyAyOCBKYW51YXJ5IDIwMTUsXG4gKiAvLyB3aGF0IGlzIHRoZSBkaXN0YW5jZSB0byAxIEphbnVhcnkgMjAxNSwgaW4gbW9udGhzLCByb3VuZGVkIHVwPz9cbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlVG9Ob3dTdHJpY3QobmV3IERhdGUoMjAxNSwgMCwgMSksIHtcbiAqICAgdW5pdDogJ21vbnRoJyxcbiAqICAgcm91bmRpbmdNZXRob2Q6ICdjZWlsJ1xuICogfSlcbiAqIC8vPT4gJzEgbW9udGgnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDEgSmFudWFyeSAyMDE1LFxuICogLy8gd2hhdCBpcyB0aGUgZGlzdGFuY2UgdG8gMSBKYW51YXJ5IDIwMTYgaW4gRXNwZXJhbnRvP1xuICogY29uc3QgZW9Mb2NhbGUgPSByZXF1aXJlKCdkYXRlLWZucy9sb2NhbGUvZW8nKVxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0RGlzdGFuY2VUb05vd1N0cmljdChcbiAqICAgbmV3IERhdGUoMjAxNiwgMCwgMSksXG4gKiAgIHtsb2NhbGU6IGVvTG9jYWxlfVxuICogKVxuICogLy89PiAnMSBqYXJvJ1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmb3JtYXREaXN0YW5jZVRvTm93U3RyaWN0KGRpcnR5RGF0ZSwgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGZvcm1hdERpc3RhbmNlU3RyaWN0KGRpcnR5RGF0ZSwgRGF0ZS5ub3coKSwgb3B0aW9ucyk7XG59IiwiaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuaW1wb3J0IGRlZmF1bHRMb2NhbGUgZnJvbSBcIi4uL19saWIvZGVmYXVsdExvY2FsZS9pbmRleC5qc1wiO1xudmFyIGRlZmF1bHRGb3JtYXQgPSBbJ3llYXJzJywgJ21vbnRocycsICd3ZWVrcycsICdkYXlzJywgJ2hvdXJzJywgJ21pbnV0ZXMnLCAnc2Vjb25kcyddO1xuXG4vKipcbiAqIEBuYW1lIGZvcm1hdER1cmF0aW9uXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEZvcm1hdHMgYSBkdXJhdGlvbiBpbiBodW1hbi1yZWFkYWJsZSBmb3JtYXRcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiBodW1hbi1yZWFkYWJsZSBkdXJhdGlvbiBzdHJpbmcgaS5lLiBcIjkgbW9udGhzIDIgZGF5c1wiXG4gKlxuICogQHBhcmFtIHtEdXJhdGlvbn0gZHVyYXRpb24gLSB0aGUgZHVyYXRpb24gdG8gZm9ybWF0XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7c3RyaW5nW119IFtvcHRpb25zLmZvcm1hdD1bJ3llYXJzJywgJ21vbnRocycsICd3ZWVrcycsICdkYXlzJywgJ2hvdXJzJywgJ21pbnV0ZXMnLCAnc2Vjb25kcyddXSAtIHRoZSBhcnJheSBvZiB1bml0cyB0byBmb3JtYXRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuemVybz1mYWxzZV0gLSBzaG91bGQgemVyb3MgYmUgaW5jbHVkZWQgaW4gdGhlIG91dHB1dD9cbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5kZWxpbWl0ZXI9JyAnXSAtIGRlbGltaXRlciBzdHJpbmdcbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHJldHVybnMge3N0cmluZ30gdGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZ1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvcm1hdCBmdWxsIGR1cmF0aW9uXG4gKiBmb3JtYXREdXJhdGlvbih7XG4gKiAgIHllYXJzOiAyLFxuICogICBtb250aHM6IDksXG4gKiAgIHdlZWtzOiAxLFxuICogICBkYXlzOiA3LFxuICogICBob3VyczogNSxcbiAqICAgbWludXRlczogOSxcbiAqICAgc2Vjb25kczogMzBcbiAqIH0pXG4gKiAvLz0+ICcyIHllYXJzIDkgbW9udGhzIDEgd2VlayA3IGRheXMgNSBob3VycyA5IG1pbnV0ZXMgMzAgc2Vjb25kcydcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9ybWF0IHBhcnRpYWwgZHVyYXRpb25cbiAqIGZvcm1hdER1cmF0aW9uKHsgbW9udGhzOiA5LCBkYXlzOiAyIH0pXG4gKiAvLz0+ICc5IG1vbnRocyAyIGRheXMnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEN1c3RvbWl6ZSB0aGUgZm9ybWF0XG4gKiBmb3JtYXREdXJhdGlvbihcbiAqICAge1xuICogICAgIHllYXJzOiAyLFxuICogICAgIG1vbnRoczogOSxcbiAqICAgICB3ZWVrczogMSxcbiAqICAgICBkYXlzOiA3LFxuICogICAgIGhvdXJzOiA1LFxuICogICAgIG1pbnV0ZXM6IDksXG4gKiAgICAgc2Vjb25kczogMzBcbiAqICAgfSxcbiAqICAgeyBmb3JtYXQ6IFsnbW9udGhzJywgJ3dlZWtzJ10gfVxuICogKSA9PT0gJzkgbW9udGhzIDEgd2VlaydcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ3VzdG9taXplIHRoZSB6ZXJvcyBwcmVzZW5jZVxuICogZm9ybWF0RHVyYXRpb24oeyB5ZWFyczogMCwgbW9udGhzOiA5IH0pXG4gKiAvLz0+ICc5IG1vbnRocydcbiAqIGZvcm1hdER1cmF0aW9uKHsgeWVhcnM6IDAsIG1vbnRoczogOSB9LCB7IHplcm86IHRydWUgfSlcbiAqIC8vPT4gJzAgeWVhcnMgOSBtb250aHMnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEN1c3RvbWl6ZSB0aGUgZGVsaW1pdGVyXG4gKiBmb3JtYXREdXJhdGlvbih7IHllYXJzOiAyLCBtb250aHM6IDksIHdlZWtzOiAzIH0sIHsgZGVsaW1pdGVyOiAnLCAnIH0pXG4gKiAvLz0+ICcyIHllYXJzLCA5IG1vbnRocywgMyB3ZWVrcydcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0RHVyYXRpb24oZHVyYXRpb24sIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9vcHRpb25zJGxvY2FsZSwgX29wdGlvbnMkZm9ybWF0LCBfb3B0aW9ucyR6ZXJvLCBfb3B0aW9ucyRkZWxpbWl0ZXI7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCIxIGFyZ3VtZW50IHJlcXVpcmVkLCBidXQgb25seSBcIi5jb25jYXQoYXJndW1lbnRzLmxlbmd0aCwgXCIgcHJlc2VudFwiKSk7XG4gIH1cbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIGxvY2FsZSA9IChfcmVmID0gKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5sb2NhbGUpICE9PSBudWxsICYmIF9vcHRpb25zJGxvY2FsZSAhPT0gdm9pZCAwID8gX29wdGlvbnMkbG9jYWxlIDogZGVmYXVsdE9wdGlvbnMubG9jYWxlKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB2b2lkIDAgPyBfcmVmIDogZGVmYXVsdExvY2FsZTtcbiAgdmFyIGZvcm1hdCA9IChfb3B0aW9ucyRmb3JtYXQgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZm9ybWF0KSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRmb3JtYXQgIT09IHZvaWQgMCA/IF9vcHRpb25zJGZvcm1hdCA6IGRlZmF1bHRGb3JtYXQ7XG4gIHZhciB6ZXJvID0gKF9vcHRpb25zJHplcm8gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuemVybykgIT09IG51bGwgJiYgX29wdGlvbnMkemVybyAhPT0gdm9pZCAwID8gX29wdGlvbnMkemVybyA6IGZhbHNlO1xuICB2YXIgZGVsaW1pdGVyID0gKF9vcHRpb25zJGRlbGltaXRlciA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5kZWxpbWl0ZXIpICE9PSBudWxsICYmIF9vcHRpb25zJGRlbGltaXRlciAhPT0gdm9pZCAwID8gX29wdGlvbnMkZGVsaW1pdGVyIDogJyAnO1xuICBpZiAoIWxvY2FsZS5mb3JtYXREaXN0YW5jZSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICB2YXIgcmVzdWx0ID0gZm9ybWF0LnJlZHVjZShmdW5jdGlvbiAoYWNjLCB1bml0KSB7XG4gICAgdmFyIHRva2VuID0gXCJ4XCIuY29uY2F0KHVuaXQucmVwbGFjZSgvKF4uKS8sIGZ1bmN0aW9uIChtKSB7XG4gICAgICByZXR1cm4gbS50b1VwcGVyQ2FzZSgpO1xuICAgIH0pKTtcbiAgICB2YXIgdmFsdWUgPSBkdXJhdGlvblt1bml0XTtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiAoemVybyB8fCBkdXJhdGlvblt1bml0XSkpIHtcbiAgICAgIHJldHVybiBhY2MuY29uY2F0KGxvY2FsZS5mb3JtYXREaXN0YW5jZSh0b2tlbiwgdmFsdWUpKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pLmpvaW4oZGVsaW1pdGVyKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBhZGRMZWFkaW5nWmVyb3MgZnJvbSBcIi4uL19saWIvYWRkTGVhZGluZ1plcm9zL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBmb3JtYXRJU09cbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgRm9ybWF0IHRoZSBkYXRlIGFjY29yZGluZyB0byB0aGUgSVNPIDg2MDEgc3RhbmRhcmQgKGh0dHBzOi8vc3VwcG9ydC5zYXMuY29tL2RvY3VtZW50YXRpb24vY2RsL2VuL2xyZGljdC82NDMxNi9IVE1ML2RlZmF1bHQvdmlld2VyLmh0bSNhMDAzMTY5ODE0Lmh0bSkuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZyBpbiBJU08gODYwMSBmb3JtYXQuIE9wdGlvbnMgbWF5IGJlIHBhc3NlZCB0byBjb250cm9sIHRoZSBwYXJ0cyBhbmQgbm90YXRpb25zIG9mIHRoZSBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0geydleHRlbmRlZCd8J2Jhc2ljJ30gW29wdGlvbnMuZm9ybWF0PSdleHRlbmRlZCddIC0gaWYgJ2Jhc2ljJywgaGlkZSBkZWxpbWl0ZXJzIGJldHdlZW4gZGF0ZSBhbmQgdGltZSB2YWx1ZXMuXG4gKiBAcGFyYW0geydjb21wbGV0ZSd8J2RhdGUnfCd0aW1lJ30gW29wdGlvbnMucmVwcmVzZW50YXRpb249J2NvbXBsZXRlJ10gLSBmb3JtYXQgZGF0ZSwgdGltZSB3aXRoIGxvY2FsIHRpbWUgem9uZSwgb3IgYm90aC5cbiAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcgKGluIGxvY2FsIHRpbWUgem9uZSlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYGRhdGVgIG11c3Qgbm90IGJlIEludmFsaWQgRGF0ZVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuZm9ybWF0YCBtdXN0IGJlICdleHRlbmRlZCcgb3IgJ2Jhc2ljJ1xuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMucmVwcmVzZW50YXRpb25gIG11c3QgYmUgJ2RhdGUnLCAndGltZScgb3IgJ2NvbXBsZXRlJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTggU2VwdGVtYmVyIDIwMTkgaW4gSVNPIDg2MDEgZm9ybWF0IChsb2NhbCB0aW1lIHpvbmUgaXMgVVRDKTpcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdElTTyhuZXcgRGF0ZSgyMDE5LCA4LCAxOCwgMTksIDAsIDUyKSlcbiAqIC8vPT4gJzIwMTktMDktMThUMTk6MDA6NTJaJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTggU2VwdGVtYmVyIDIwMTkgaW4gSVNPIDg2MDEsIHNob3J0IGZvcm1hdCAobG9jYWwgdGltZSB6b25lIGlzIFVUQyk6XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXRJU08obmV3IERhdGUoMjAxOSwgOCwgMTgsIDE5LCAwLCA1MiksIHsgZm9ybWF0OiAnYmFzaWMnIH0pXG4gKiAvLz0+ICcyMDE5MDkxOFQxOTAwNTInXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxOCBTZXB0ZW1iZXIgMjAxOSBpbiBJU08gODYwMSBmb3JtYXQsIGRhdGUgb25seTpcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdElTTyhuZXcgRGF0ZSgyMDE5LCA4LCAxOCwgMTksIDAsIDUyKSwgeyByZXByZXNlbnRhdGlvbjogJ2RhdGUnIH0pXG4gKiAvLz0+ICcyMDE5LTA5LTE4J1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTggU2VwdGVtYmVyIDIwMTkgaW4gSVNPIDg2MDEgZm9ybWF0LCB0aW1lIG9ubHkgKGxvY2FsIHRpbWUgem9uZSBpcyBVVEMpOlxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0SVNPKG5ldyBEYXRlKDIwMTksIDgsIDE4LCAxOSwgMCwgNTIpLCB7IHJlcHJlc2VudGF0aW9uOiAndGltZScgfSlcbiAqIC8vPT4gJzE5OjAwOjUyWidcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0SVNPKGRhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9vcHRpb25zJGZvcm1hdCwgX29wdGlvbnMkcmVwcmVzZW50YXRpO1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIG9yaWdpbmFsRGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgaWYgKGlzTmFOKG9yaWdpbmFsRGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgdGltZSB2YWx1ZScpO1xuICB9XG4gIHZhciBmb3JtYXQgPSBTdHJpbmcoKF9vcHRpb25zJGZvcm1hdCA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5mb3JtYXQpICE9PSBudWxsICYmIF9vcHRpb25zJGZvcm1hdCAhPT0gdm9pZCAwID8gX29wdGlvbnMkZm9ybWF0IDogJ2V4dGVuZGVkJyk7XG4gIHZhciByZXByZXNlbnRhdGlvbiA9IFN0cmluZygoX29wdGlvbnMkcmVwcmVzZW50YXRpID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnJlcHJlc2VudGF0aW9uKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRyZXByZXNlbnRhdGkgIT09IHZvaWQgMCA/IF9vcHRpb25zJHJlcHJlc2VudGF0aSA6ICdjb21wbGV0ZScpO1xuICBpZiAoZm9ybWF0ICE9PSAnZXh0ZW5kZWQnICYmIGZvcm1hdCAhPT0gJ2Jhc2ljJykge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiZm9ybWF0IG11c3QgYmUgJ2V4dGVuZGVkJyBvciAnYmFzaWMnXCIpO1xuICB9XG4gIGlmIChyZXByZXNlbnRhdGlvbiAhPT0gJ2RhdGUnICYmIHJlcHJlc2VudGF0aW9uICE9PSAndGltZScgJiYgcmVwcmVzZW50YXRpb24gIT09ICdjb21wbGV0ZScpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcInJlcHJlc2VudGF0aW9uIG11c3QgYmUgJ2RhdGUnLCAndGltZScsIG9yICdjb21wbGV0ZSdcIik7XG4gIH1cbiAgdmFyIHJlc3VsdCA9ICcnO1xuICB2YXIgdHpPZmZzZXQgPSAnJztcbiAgdmFyIGRhdGVEZWxpbWl0ZXIgPSBmb3JtYXQgPT09ICdleHRlbmRlZCcgPyAnLScgOiAnJztcbiAgdmFyIHRpbWVEZWxpbWl0ZXIgPSBmb3JtYXQgPT09ICdleHRlbmRlZCcgPyAnOicgOiAnJztcblxuICAvLyBSZXByZXNlbnRhdGlvbiBpcyBlaXRoZXIgJ2RhdGUnIG9yICdjb21wbGV0ZSdcbiAgaWYgKHJlcHJlc2VudGF0aW9uICE9PSAndGltZScpIHtcbiAgICB2YXIgZGF5ID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXREYXRlKCksIDIpO1xuICAgIHZhciBtb250aCA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0TW9udGgoKSArIDEsIDIpO1xuICAgIHZhciB5ZWFyID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXRGdWxsWWVhcigpLCA0KTtcblxuICAgIC8vIHl5eXlNTWRkIG9yIHl5eXktTU0tZGQuXG4gICAgcmVzdWx0ID0gXCJcIi5jb25jYXQoeWVhcikuY29uY2F0KGRhdGVEZWxpbWl0ZXIpLmNvbmNhdChtb250aCkuY29uY2F0KGRhdGVEZWxpbWl0ZXIpLmNvbmNhdChkYXkpO1xuICB9XG5cbiAgLy8gUmVwcmVzZW50YXRpb24gaXMgZWl0aGVyICd0aW1lJyBvciAnY29tcGxldGUnXG4gIGlmIChyZXByZXNlbnRhdGlvbiAhPT0gJ2RhdGUnKSB7XG4gICAgLy8gQWRkIHRoZSB0aW1lem9uZS5cbiAgICB2YXIgb2Zmc2V0ID0gb3JpZ2luYWxEYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gICAgaWYgKG9mZnNldCAhPT0gMCkge1xuICAgICAgdmFyIGFic29sdXRlT2Zmc2V0ID0gTWF0aC5hYnMob2Zmc2V0KTtcbiAgICAgIHZhciBob3VyT2Zmc2V0ID0gYWRkTGVhZGluZ1plcm9zKE1hdGguZmxvb3IoYWJzb2x1dGVPZmZzZXQgLyA2MCksIDIpO1xuICAgICAgdmFyIG1pbnV0ZU9mZnNldCA9IGFkZExlYWRpbmdaZXJvcyhhYnNvbHV0ZU9mZnNldCAlIDYwLCAyKTtcbiAgICAgIC8vIElmIGxlc3MgdGhhbiAwLCB0aGUgc2lnbiBpcyArLCBiZWNhdXNlIGl0IGlzIGFoZWFkIG9mIHRpbWUuXG4gICAgICB2YXIgc2lnbiA9IG9mZnNldCA8IDAgPyAnKycgOiAnLSc7XG4gICAgICB0ek9mZnNldCA9IFwiXCIuY29uY2F0KHNpZ24pLmNvbmNhdChob3VyT2Zmc2V0LCBcIjpcIikuY29uY2F0KG1pbnV0ZU9mZnNldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHR6T2Zmc2V0ID0gJ1onO1xuICAgIH1cbiAgICB2YXIgaG91ciA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0SG91cnMoKSwgMik7XG4gICAgdmFyIG1pbnV0ZSA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0TWludXRlcygpLCAyKTtcbiAgICB2YXIgc2Vjb25kID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXRTZWNvbmRzKCksIDIpO1xuXG4gICAgLy8gSWYgdGhlcmUncyBhbHNvIGRhdGUsIHNlcGFyYXRlIGl0IHdpdGggdGltZSB3aXRoICdUJ1xuICAgIHZhciBzZXBhcmF0b3IgPSByZXN1bHQgPT09ICcnID8gJycgOiAnVCc7XG5cbiAgICAvLyBDcmVhdGVzIGEgdGltZSBzdHJpbmcgY29uc2lzdGluZyBvZiBob3VyLCBtaW51dGUsIGFuZCBzZWNvbmQsIHNlcGFyYXRlZCBieSBkZWxpbWl0ZXJzLCBpZiBkZWZpbmVkLlxuICAgIHZhciB0aW1lID0gW2hvdXIsIG1pbnV0ZSwgc2Vjb25kXS5qb2luKHRpbWVEZWxpbWl0ZXIpO1xuXG4gICAgLy8gSEhtbXNzIG9yIEhIOm1tOnNzLlxuICAgIHJlc3VsdCA9IFwiXCIuY29uY2F0KHJlc3VsdCkuY29uY2F0KHNlcGFyYXRvcikuY29uY2F0KHRpbWUpLmNvbmNhdCh0ek9mZnNldCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBpc1ZhbGlkIGZyb20gXCIuLi9pc1ZhbGlkL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkTGVhZGluZ1plcm9zIGZyb20gXCIuLi9fbGliL2FkZExlYWRpbmdaZXJvcy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBmb3JtYXRJU085MDc1XG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEZvcm1hdCB0aGUgZGF0ZSBhY2NvcmRpbmcgdG8gdGhlIElTTyA5MDc1IHN0YW5kYXJkIChodHRwczovL2Rldi5teXNxbC5jb20vZG9jL3JlZm1hbi81LjcvZW4vZGF0ZS1hbmQtdGltZS1mdW5jdGlvbnMuaHRtbCNmdW5jdGlvbl9nZXQtZm9ybWF0KS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nIGluIElTTyA5MDc1IGZvcm1hdC4gT3B0aW9ucyBtYXkgYmUgcGFzc2VkIHRvIGNvbnRyb2wgdGhlIHBhcnRzIGFuZCBub3RhdGlvbnMgb2YgdGhlIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7J2V4dGVuZGVkJ3wnYmFzaWMnfSBbb3B0aW9ucy5mb3JtYXQ9J2V4dGVuZGVkJ10gLSBpZiAnYmFzaWMnLCBoaWRlIGRlbGltaXRlcnMgYmV0d2VlbiBkYXRlIGFuZCB0aW1lIHZhbHVlcy5cbiAqIEBwYXJhbSB7J2NvbXBsZXRlJ3wnZGF0ZSd8J3RpbWUnfSBbb3B0aW9ucy5yZXByZXNlbnRhdGlvbj0nY29tcGxldGUnXSAtIGZvcm1hdCBkYXRlLCB0aW1lLCBvciBib3RoLlxuICogQHJldHVybnMge1N0cmluZ30gdGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZ1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgZGF0ZWAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5mb3JtYXRgIG11c3QgYmUgJ2V4dGVuZGVkJyBvciAnYmFzaWMnXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5yZXByZXNlbnRhdGlvbmAgbXVzdCBiZSAnZGF0ZScsICd0aW1lJyBvciAnY29tcGxldGUnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxOCBTZXB0ZW1iZXIgMjAxOSBpbiBJU08gOTA3NSBmb3JtYXQ6XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXRJU085MDc1KG5ldyBEYXRlKDIwMTksIDgsIDE4LCAxOSwgMCwgNTIpKVxuICogLy89PiAnMjAxOS0wOS0xOCAxOTowMDo1MidcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDE4IFNlcHRlbWJlciAyMDE5IGluIElTTyA5MDc1LCBzaG9ydCBmb3JtYXQ6XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXRJU085MDc1KG5ldyBEYXRlKDIwMTksIDgsIDE4LCAxOSwgMCwgNTIpLCB7IGZvcm1hdDogJ2Jhc2ljJyB9KVxuICogLy89PiAnMjAxOTA5MTggMTkwMDUyJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTggU2VwdGVtYmVyIDIwMTkgaW4gSVNPIDkwNzUgZm9ybWF0LCBkYXRlIG9ubHk6XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXRJU085MDc1KG5ldyBEYXRlKDIwMTksIDgsIDE4LCAxOSwgMCwgNTIpLCB7IHJlcHJlc2VudGF0aW9uOiAnZGF0ZScgfSlcbiAqIC8vPT4gJzIwMTktMDktMTgnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxOCBTZXB0ZW1iZXIgMjAxOSBpbiBJU08gOTA3NSBmb3JtYXQsIHRpbWUgb25seTpcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdElTTzkwNzUobmV3IERhdGUoMjAxOSwgOCwgMTgsIDE5LCAwLCA1MiksIHsgcmVwcmVzZW50YXRpb246ICd0aW1lJyB9KVxuICogLy89PiAnMTk6MDA6NTInXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdElTTzkwNzUoZGlydHlEYXRlLCBvcHRpb25zKSB7XG4gIHZhciBfb3B0aW9ucyRmb3JtYXQsIF9vcHRpb25zJHJlcHJlc2VudGF0aTtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAxKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIjEgYXJndW1lbnQgcmVxdWlyZWQsIGJ1dCBvbmx5IFwiLmNvbmNhdChhcmd1bWVudHMubGVuZ3RoLCBcIiBwcmVzZW50XCIpKTtcbiAgfVxuICB2YXIgb3JpZ2luYWxEYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIGlmICghaXNWYWxpZChvcmlnaW5hbERhdGUpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgdGltZSB2YWx1ZScpO1xuICB9XG4gIHZhciBmb3JtYXQgPSBTdHJpbmcoKF9vcHRpb25zJGZvcm1hdCA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5mb3JtYXQpICE9PSBudWxsICYmIF9vcHRpb25zJGZvcm1hdCAhPT0gdm9pZCAwID8gX29wdGlvbnMkZm9ybWF0IDogJ2V4dGVuZGVkJyk7XG4gIHZhciByZXByZXNlbnRhdGlvbiA9IFN0cmluZygoX29wdGlvbnMkcmVwcmVzZW50YXRpID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnJlcHJlc2VudGF0aW9uKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRyZXByZXNlbnRhdGkgIT09IHZvaWQgMCA/IF9vcHRpb25zJHJlcHJlc2VudGF0aSA6ICdjb21wbGV0ZScpO1xuICBpZiAoZm9ybWF0ICE9PSAnZXh0ZW5kZWQnICYmIGZvcm1hdCAhPT0gJ2Jhc2ljJykge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiZm9ybWF0IG11c3QgYmUgJ2V4dGVuZGVkJyBvciAnYmFzaWMnXCIpO1xuICB9XG4gIGlmIChyZXByZXNlbnRhdGlvbiAhPT0gJ2RhdGUnICYmIHJlcHJlc2VudGF0aW9uICE9PSAndGltZScgJiYgcmVwcmVzZW50YXRpb24gIT09ICdjb21wbGV0ZScpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcInJlcHJlc2VudGF0aW9uIG11c3QgYmUgJ2RhdGUnLCAndGltZScsIG9yICdjb21wbGV0ZSdcIik7XG4gIH1cbiAgdmFyIHJlc3VsdCA9ICcnO1xuICB2YXIgZGF0ZURlbGltaXRlciA9IGZvcm1hdCA9PT0gJ2V4dGVuZGVkJyA/ICctJyA6ICcnO1xuICB2YXIgdGltZURlbGltaXRlciA9IGZvcm1hdCA9PT0gJ2V4dGVuZGVkJyA/ICc6JyA6ICcnO1xuXG4gIC8vIFJlcHJlc2VudGF0aW9uIGlzIGVpdGhlciAnZGF0ZScgb3IgJ2NvbXBsZXRlJ1xuICBpZiAocmVwcmVzZW50YXRpb24gIT09ICd0aW1lJykge1xuICAgIHZhciBkYXkgPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldERhdGUoKSwgMik7XG4gICAgdmFyIG1vbnRoID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXRNb250aCgpICsgMSwgMik7XG4gICAgdmFyIHllYXIgPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldEZ1bGxZZWFyKCksIDQpO1xuXG4gICAgLy8geXl5eU1NZGQgb3IgeXl5eS1NTS1kZC5cbiAgICByZXN1bHQgPSBcIlwiLmNvbmNhdCh5ZWFyKS5jb25jYXQoZGF0ZURlbGltaXRlcikuY29uY2F0KG1vbnRoKS5jb25jYXQoZGF0ZURlbGltaXRlcikuY29uY2F0KGRheSk7XG4gIH1cblxuICAvLyBSZXByZXNlbnRhdGlvbiBpcyBlaXRoZXIgJ3RpbWUnIG9yICdjb21wbGV0ZSdcbiAgaWYgKHJlcHJlc2VudGF0aW9uICE9PSAnZGF0ZScpIHtcbiAgICB2YXIgaG91ciA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0SG91cnMoKSwgMik7XG4gICAgdmFyIG1pbnV0ZSA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0TWludXRlcygpLCAyKTtcbiAgICB2YXIgc2Vjb25kID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXRTZWNvbmRzKCksIDIpO1xuXG4gICAgLy8gSWYgdGhlcmUncyBhbHNvIGRhdGUsIHNlcGFyYXRlIGl0IHdpdGggdGltZSB3aXRoIGEgc3BhY2VcbiAgICB2YXIgc2VwYXJhdG9yID0gcmVzdWx0ID09PSAnJyA/ICcnIDogJyAnO1xuXG4gICAgLy8gSEhtbXNzIG9yIEhIOm1tOnNzLlxuICAgIHJlc3VsdCA9IFwiXCIuY29uY2F0KHJlc3VsdCkuY29uY2F0KHNlcGFyYXRvcikuY29uY2F0KGhvdXIpLmNvbmNhdCh0aW1lRGVsaW1pdGVyKS5jb25jYXQobWludXRlKS5jb25jYXQodGltZURlbGltaXRlcikuY29uY2F0KHNlY29uZCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn0iLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBmb3JtYXRJU09EdXJhdGlvblxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBGb3JtYXQgYSBkdXJhdGlvbiBvYmplY3QgYWNjb3JkaW5nIGFzIElTTyA4NjAxIGR1cmF0aW9uIHN0cmluZ1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogRm9ybWF0IGEgZHVyYXRpb24gb2JqZWN0IGFjY29yZGluZyB0byB0aGUgSVNPIDg2MDEgZHVyYXRpb24gc3RhbmRhcmQgKGh0dHBzOi8vd3d3LmRpZ2kuY29tL3Jlc291cmNlcy9kb2N1bWVudGF0aW9uL2RpZ2lkb2NzLzkwMDAxNDM3LTEzL3JlZmVyZW5jZS9yX2lzb184NjAxX2R1cmF0aW9uX2Zvcm1hdC5odG0pXG4gKlxuICogQHBhcmFtIHtEdXJhdGlvbn0gZHVyYXRpb24gLSB0aGUgZHVyYXRpb24gdG8gZm9ybWF0XG4gKlxuICogQHJldHVybnMge1N0cmluZ30gVGhlIElTTyA4NjAxIGR1cmF0aW9uIHN0cmluZ1xuICogQHRocm93cyB7VHlwZUVycm9yfSBSZXF1aXJlcyAxIGFyZ3VtZW50XG4gKiBAdGhyb3dzIHtFcnJvcn0gQXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3RcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9ybWF0IHRoZSBnaXZlbiBkdXJhdGlvbiBhcyBJU08gODYwMSBzdHJpbmdcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdElTT0R1cmF0aW9uKHtcbiAqICAgeWVhcnM6IDM5LFxuICogICBtb250aHM6IDIsXG4gKiAgIGRheXM6IDIwLFxuICogICBob3VyczogNyxcbiAqICAgbWludXRlczogNSxcbiAqICAgc2Vjb25kczogMFxuICogfSlcbiAqIC8vPT4gJ1AzOVkyTTIwRFQwSDBNMFMnXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdElTT0R1cmF0aW9uKGR1cmF0aW9uKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICBpZiAoX3R5cGVvZihkdXJhdGlvbikgIT09ICdvYmplY3QnKSB0aHJvdyBuZXcgRXJyb3IoJ0R1cmF0aW9uIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIHZhciBfZHVyYXRpb24keWVhcnMgPSBkdXJhdGlvbi55ZWFycyxcbiAgICB5ZWFycyA9IF9kdXJhdGlvbiR5ZWFycyA9PT0gdm9pZCAwID8gMCA6IF9kdXJhdGlvbiR5ZWFycyxcbiAgICBfZHVyYXRpb24kbW9udGhzID0gZHVyYXRpb24ubW9udGhzLFxuICAgIG1vbnRocyA9IF9kdXJhdGlvbiRtb250aHMgPT09IHZvaWQgMCA/IDAgOiBfZHVyYXRpb24kbW9udGhzLFxuICAgIF9kdXJhdGlvbiRkYXlzID0gZHVyYXRpb24uZGF5cyxcbiAgICBkYXlzID0gX2R1cmF0aW9uJGRheXMgPT09IHZvaWQgMCA/IDAgOiBfZHVyYXRpb24kZGF5cyxcbiAgICBfZHVyYXRpb24kaG91cnMgPSBkdXJhdGlvbi5ob3VycyxcbiAgICBob3VycyA9IF9kdXJhdGlvbiRob3VycyA9PT0gdm9pZCAwID8gMCA6IF9kdXJhdGlvbiRob3VycyxcbiAgICBfZHVyYXRpb24kbWludXRlcyA9IGR1cmF0aW9uLm1pbnV0ZXMsXG4gICAgbWludXRlcyA9IF9kdXJhdGlvbiRtaW51dGVzID09PSB2b2lkIDAgPyAwIDogX2R1cmF0aW9uJG1pbnV0ZXMsXG4gICAgX2R1cmF0aW9uJHNlY29uZHMgPSBkdXJhdGlvbi5zZWNvbmRzLFxuICAgIHNlY29uZHMgPSBfZHVyYXRpb24kc2Vjb25kcyA9PT0gdm9pZCAwID8gMCA6IF9kdXJhdGlvbiRzZWNvbmRzO1xuICByZXR1cm4gXCJQXCIuY29uY2F0KHllYXJzLCBcIllcIikuY29uY2F0KG1vbnRocywgXCJNXCIpLmNvbmNhdChkYXlzLCBcIkRUXCIpLmNvbmNhdChob3VycywgXCJIXCIpLmNvbmNhdChtaW51dGVzLCBcIk1cIikuY29uY2F0KHNlY29uZHMsIFwiU1wiKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBpc1ZhbGlkIGZyb20gXCIuLi9pc1ZhbGlkL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkTGVhZGluZ1plcm9zIGZyb20gXCIuLi9fbGliL2FkZExlYWRpbmdaZXJvcy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZm9ybWF0UkZDMzMzOVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBGb3JtYXQgdGhlIGRhdGUgYWNjb3JkaW5nIHRvIHRoZSBSRkMgMzMzOSBzdGFuZGFyZCAoaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkjc2VjdGlvbi01LjYpLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcgaW4gUkZDIDMzMzkgZm9ybWF0LiBPcHRpb25zIG1heSBiZSBwYXNzZWQgdG8gY29udHJvbCB0aGUgcGFydHMgYW5kIG5vdGF0aW9ucyBvZiB0aGUgZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHswfDF8MnwzfSBbb3B0aW9ucy5mcmFjdGlvbkRpZ2l0cz0wXSAtIG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQgYWZ0ZXIgc2Vjb25kc1xuICogQHJldHVybnMge1N0cmluZ30gdGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZ1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgZGF0ZWAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5mcmFjdGlvbkRpZ2l0c2AgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDNcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDE4IFNlcHRlbWJlciAyMDE5IGluIFJGQyAzMzM5IGZvcm1hdDpcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdFJGQzMzMzkobmV3IERhdGUoMjAxOSwgOCwgMTgsIDE5LCAwLCA1MikpXG4gKiAvLz0+ICcyMDE5LTA5LTE4VDE5OjAwOjUyWidcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDE4IFNlcHRlbWJlciAyMDE5IGluIFJGQyAzMzM5IGZvcm1hdCwgMiBkaWdpdHMgb2Ygc2Vjb25kIGZyYWN0aW9uOlxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0UkZDMzMzOShuZXcgRGF0ZSgyMDE5LCA4LCAxOCwgMTksIDAsIDUyLCAyMzQpLCB7IGZyYWN0aW9uRGlnaXRzOiAyIH0pXG4gKiAvLz0+ICcyMDE5LTA5LTE4VDE5OjAwOjUyLjIzWidcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDE4IFNlcHRlbWJlciAyMDE5IGluIFJGQyAzMzM5IGZvcm1hdCwgMyBkaWdpdHMgb2Ygc2Vjb25kIGZyYWN0aW9uXG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXRSRkMzMzM5KG5ldyBEYXRlKDIwMTksIDgsIDE4LCAxOSwgMCwgNTIsIDIzNCksIHsgZnJhY3Rpb25EaWdpdHM6IDMgfSlcbiAqIC8vPT4gJzIwMTktMDktMThUMTk6MDA6NTIuMjM0WidcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0UkZDMzMzOShkaXJ0eURhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9vcHRpb25zJGZyYWN0aW9uRGlnaTtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAxKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIjEgYXJndW1lbnRzIHJlcXVpcmVkLCBidXQgb25seSBcIi5jb25jYXQoYXJndW1lbnRzLmxlbmd0aCwgXCIgcHJlc2VudFwiKSk7XG4gIH1cbiAgdmFyIG9yaWdpbmFsRGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICBpZiAoIWlzVmFsaWQob3JpZ2luYWxEYXRlKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHRpbWUgdmFsdWUnKTtcbiAgfVxuICB2YXIgZnJhY3Rpb25EaWdpdHMgPSBOdW1iZXIoKF9vcHRpb25zJGZyYWN0aW9uRGlnaSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5mcmFjdGlvbkRpZ2l0cykgIT09IG51bGwgJiYgX29wdGlvbnMkZnJhY3Rpb25EaWdpICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRmcmFjdGlvbkRpZ2kgOiAwKTtcblxuICAvLyBUZXN0IGlmIGZyYWN0aW9uRGlnaXRzIGlzIGJldHdlZW4gMCBhbmQgMyBfYW5kXyBpcyBub3QgTmFOXG4gIGlmICghKGZyYWN0aW9uRGlnaXRzID49IDAgJiYgZnJhY3Rpb25EaWdpdHMgPD0gMykpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignZnJhY3Rpb25EaWdpdHMgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDMgaW5jbHVzaXZlbHknKTtcbiAgfVxuICB2YXIgZGF5ID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXREYXRlKCksIDIpO1xuICB2YXIgbW9udGggPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldE1vbnRoKCkgKyAxLCAyKTtcbiAgdmFyIHllYXIgPSBvcmlnaW5hbERhdGUuZ2V0RnVsbFllYXIoKTtcbiAgdmFyIGhvdXIgPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldEhvdXJzKCksIDIpO1xuICB2YXIgbWludXRlID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXRNaW51dGVzKCksIDIpO1xuICB2YXIgc2Vjb25kID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXRTZWNvbmRzKCksIDIpO1xuICB2YXIgZnJhY3Rpb25hbFNlY29uZCA9ICcnO1xuICBpZiAoZnJhY3Rpb25EaWdpdHMgPiAwKSB7XG4gICAgdmFyIG1pbGxpc2Vjb25kcyA9IG9yaWdpbmFsRGF0ZS5nZXRNaWxsaXNlY29uZHMoKTtcbiAgICB2YXIgZnJhY3Rpb25hbFNlY29uZHMgPSBNYXRoLmZsb29yKG1pbGxpc2Vjb25kcyAqIE1hdGgucG93KDEwLCBmcmFjdGlvbkRpZ2l0cyAtIDMpKTtcbiAgICBmcmFjdGlvbmFsU2Vjb25kID0gJy4nICsgYWRkTGVhZGluZ1plcm9zKGZyYWN0aW9uYWxTZWNvbmRzLCBmcmFjdGlvbkRpZ2l0cyk7XG4gIH1cbiAgdmFyIG9mZnNldCA9ICcnO1xuICB2YXIgdHpPZmZzZXQgPSBvcmlnaW5hbERhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKTtcbiAgaWYgKHR6T2Zmc2V0ICE9PSAwKSB7XG4gICAgdmFyIGFic29sdXRlT2Zmc2V0ID0gTWF0aC5hYnModHpPZmZzZXQpO1xuICAgIHZhciBob3VyT2Zmc2V0ID0gYWRkTGVhZGluZ1plcm9zKHRvSW50ZWdlcihhYnNvbHV0ZU9mZnNldCAvIDYwKSwgMik7XG4gICAgdmFyIG1pbnV0ZU9mZnNldCA9IGFkZExlYWRpbmdaZXJvcyhhYnNvbHV0ZU9mZnNldCAlIDYwLCAyKTtcbiAgICAvLyBJZiBsZXNzIHRoYW4gMCwgdGhlIHNpZ24gaXMgKywgYmVjYXVzZSBpdCBpcyBhaGVhZCBvZiB0aW1lLlxuICAgIHZhciBzaWduID0gdHpPZmZzZXQgPCAwID8gJysnIDogJy0nO1xuICAgIG9mZnNldCA9IFwiXCIuY29uY2F0KHNpZ24pLmNvbmNhdChob3VyT2Zmc2V0LCBcIjpcIikuY29uY2F0KG1pbnV0ZU9mZnNldCk7XG4gIH0gZWxzZSB7XG4gICAgb2Zmc2V0ID0gJ1onO1xuICB9XG4gIHJldHVybiBcIlwiLmNvbmNhdCh5ZWFyLCBcIi1cIikuY29uY2F0KG1vbnRoLCBcIi1cIikuY29uY2F0KGRheSwgXCJUXCIpLmNvbmNhdChob3VyLCBcIjpcIikuY29uY2F0KG1pbnV0ZSwgXCI6XCIpLmNvbmNhdChzZWNvbmQpLmNvbmNhdChmcmFjdGlvbmFsU2Vjb25kKS5jb25jYXQob2Zmc2V0KTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBpc1ZhbGlkIGZyb20gXCIuLi9pc1ZhbGlkL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkTGVhZGluZ1plcm9zIGZyb20gXCIuLi9fbGliL2FkZExlYWRpbmdaZXJvcy9pbmRleC5qc1wiO1xudmFyIGRheXMgPSBbJ1N1bicsICdNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCddO1xudmFyIG1vbnRocyA9IFsnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLCAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXTtcblxuLyoqXG4gKiBAbmFtZSBmb3JtYXRSRkM3MjMxXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEZvcm1hdCB0aGUgZGF0ZSBhY2NvcmRpbmcgdG8gdGhlIFJGQyA3MjMxIHN0YW5kYXJkIChodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTcuMS4xLjEpLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcgaW4gUkZDIDcyMzEgZm9ybWF0LlxuICogVGhlIHJlc3VsdCB3aWxsIGFsd2F5cyBiZSBpbiBVVEMgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBkYXRlYCBtdXN0IG5vdCBiZSBJbnZhbGlkIERhdGVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDE4IFNlcHRlbWJlciAyMDE5IGluIFJGQyA3MjMxIGZvcm1hdDpcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdFJGQzcyMzEobmV3IERhdGUoMjAxOSwgOCwgMTgsIDE5LCAwLCA1MikpXG4gKiAvLz0+ICdXZWQsIDE4IFNlcCAyMDE5IDE5OjAwOjUyIEdNVCdcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0UkZDNzIzMShkaXJ0eURhdGUpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAxKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIjEgYXJndW1lbnRzIHJlcXVpcmVkLCBidXQgb25seSBcIi5jb25jYXQoYXJndW1lbnRzLmxlbmd0aCwgXCIgcHJlc2VudFwiKSk7XG4gIH1cbiAgdmFyIG9yaWdpbmFsRGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICBpZiAoIWlzVmFsaWQob3JpZ2luYWxEYXRlKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHRpbWUgdmFsdWUnKTtcbiAgfVxuICB2YXIgZGF5TmFtZSA9IGRheXNbb3JpZ2luYWxEYXRlLmdldFVUQ0RheSgpXTtcbiAgdmFyIGRheU9mTW9udGggPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldFVUQ0RhdGUoKSwgMik7XG4gIHZhciBtb250aE5hbWUgPSBtb250aHNbb3JpZ2luYWxEYXRlLmdldFVUQ01vbnRoKCldO1xuICB2YXIgeWVhciA9IG9yaWdpbmFsRGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICB2YXIgaG91ciA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0VVRDSG91cnMoKSwgMik7XG4gIHZhciBtaW51dGUgPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldFVUQ01pbnV0ZXMoKSwgMik7XG4gIHZhciBzZWNvbmQgPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldFVUQ1NlY29uZHMoKSwgMik7XG5cbiAgLy8gUmVzdWx0IHZhcmlhYmxlcy5cbiAgcmV0dXJuIFwiXCIuY29uY2F0KGRheU5hbWUsIFwiLCBcIikuY29uY2F0KGRheU9mTW9udGgsIFwiIFwiKS5jb25jYXQobW9udGhOYW1lLCBcIiBcIikuY29uY2F0KHllYXIsIFwiIFwiKS5jb25jYXQoaG91ciwgXCI6XCIpLmNvbmNhdChtaW51dGUsIFwiOlwiKS5jb25jYXQoc2Vjb25kLCBcIiBHTVRcIik7XG59IiwiaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgZm9ybWF0IGZyb20gXCIuLi9mb3JtYXQvaW5kZXguanNcIjtcbmltcG9ydCBkZWZhdWx0TG9jYWxlIGZyb20gXCIuLi9fbGliL2RlZmF1bHRMb2NhbGUvaW5kZXguanNcIjtcbmltcG9ydCBzdWJNaWxsaXNlY29uZHMgZnJvbSBcIi4uL3N1Yk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vX2xpYi9nZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZm9ybWF0UmVsYXRpdmVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgUmVwcmVzZW50IHRoZSBkYXRlIGluIHdvcmRzIHJlbGF0aXZlIHRvIHRoZSBnaXZlbiBiYXNlIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXByZXNlbnQgdGhlIGRhdGUgaW4gd29yZHMgcmVsYXRpdmUgdG8gdGhlIGdpdmVuIGJhc2UgZGF0ZS5cbiAqXG4gKiB8IERpc3RhbmNlIHRvIHRoZSBiYXNlIGRhdGUgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCBQcmV2aW91cyA2IGRheXMgICAgICAgICAgIHwgbGFzdCBTdW5kYXkgYXQgMDQ6MzAgQU0gICB8XG4gKiB8IExhc3QgZGF5ICAgICAgICAgICAgICAgICAgfCB5ZXN0ZXJkYXkgYXQgMDQ6MzAgQU0gICAgIHxcbiAqIHwgU2FtZSBkYXkgICAgICAgICAgICAgICAgICB8IHRvZGF5IGF0IDA0OjMwIEFNICAgICAgICAgfFxuICogfCBOZXh0IGRheSAgICAgICAgICAgICAgICAgIHwgdG9tb3Jyb3cgYXQgMDQ6MzAgQU0gICAgICB8XG4gKiB8IE5leHQgNiBkYXlzICAgICAgICAgICAgICAgfCBTdW5kYXkgYXQgMDQ6MzAgQU0gICAgICAgIHxcbiAqIHwgT3RoZXIgICAgICAgICAgICAgICAgICAgICB8IDEyLzMxLzIwMTcgICAgICAgICAgICAgICAgfFxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBmb3JtYXRcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGJhc2VEYXRlIC0gdGhlIGRhdGUgdG8gY29tcGFyZSB3aXRoXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBkYXRlIGluIHdvcmRzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgZGF0ZWAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgYmFzZURhdGVgIG11c3Qgbm90IGJlIEludmFsaWQgRGF0ZVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNlxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMubG9jYWxlYCBtdXN0IGNvbnRhaW4gYGxvY2FsaXplYCBwcm9wZXJ0eVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMubG9jYWxlYCBtdXN0IGNvbnRhaW4gYGZvcm1hdExvbmdgIHByb3BlcnR5XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5sb2NhbGVgIG11c3QgY29udGFpbiBgZm9ybWF0UmVsYXRpdmVgIHByb3BlcnR5XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCB0aGUgZGF0ZSBvZiA2IGRheXMgYWdvIGluIHdvcmRzIHJlbGF0aXZlIHRvIHRoZSBnaXZlbiBiYXNlIGRhdGUuIEluIHRoaXMgZXhhbXBsZSwgdG9kYXkgaXMgV2VkbmVzZGF5XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXRSZWxhdGl2ZShhZGREYXlzKG5ldyBEYXRlKCksIC02KSwgbmV3IERhdGUoKSlcbiAqIC8vPT4gXCJsYXN0IFRodXJzZGF5IGF0IDEyOjQ1IEFNXCJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0UmVsYXRpdmUoZGlydHlEYXRlLCBkaXJ0eUJhc2VEYXRlLCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfb3B0aW9ucyRsb2NhbGUsIF9yZWYyLCBfcmVmMywgX3JlZjQsIF9vcHRpb25zJHdlZWtTdGFydHNPbiwgX29wdGlvbnMkbG9jYWxlMiwgX29wdGlvbnMkbG9jYWxlMiRvcHRpLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDI7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgYmFzZURhdGUgPSB0b0RhdGUoZGlydHlCYXNlRGF0ZSk7XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIHZhciBsb2NhbGUgPSAoX3JlZiA9IChfb3B0aW9ucyRsb2NhbGUgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMubG9jYWxlKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRsb2NhbGUgIT09IHZvaWQgMCA/IF9vcHRpb25zJGxvY2FsZSA6IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IGRlZmF1bHRMb2NhbGU7XG4gIHZhciB3ZWVrU3RhcnRzT24gPSB0b0ludGVnZXIoKF9yZWYyID0gKF9yZWYzID0gKF9yZWY0ID0gKF9vcHRpb25zJHdlZWtTdGFydHNPbiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9vcHRpb25zJHdlZWtTdGFydHNPbiAhPT0gdm9pZCAwID8gX29wdGlvbnMkd2Vla1N0YXJ0c09uIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlMiA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUyID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlMiRvcHRpID0gX29wdGlvbnMkbG9jYWxlMi5vcHRpb25zKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUyJG9wdGkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb25zJGxvY2FsZTIkb3B0aS53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWY0ICE9PSB2b2lkIDAgPyBfcmVmNCA6IGRlZmF1bHRPcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjMgIT09IHZvaWQgMCA/IF9yZWYzIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjIgIT09IHZvaWQgMCA/IF9yZWYyIDogMCk7XG4gIGlmICghbG9jYWxlLmxvY2FsaXplKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2xvY2FsZSBtdXN0IGNvbnRhaW4gbG9jYWxpemUgcHJvcGVydHknKTtcbiAgfVxuICBpZiAoIWxvY2FsZS5mb3JtYXRMb25nKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2xvY2FsZSBtdXN0IGNvbnRhaW4gZm9ybWF0TG9uZyBwcm9wZXJ0eScpO1xuICB9XG4gIGlmICghbG9jYWxlLmZvcm1hdFJlbGF0aXZlKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2xvY2FsZSBtdXN0IGNvbnRhaW4gZm9ybWF0UmVsYXRpdmUgcHJvcGVydHknKTtcbiAgfVxuICB2YXIgZGlmZiA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhkYXRlLCBiYXNlRGF0ZSk7XG4gIGlmIChpc05hTihkaWZmKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHRpbWUgdmFsdWUnKTtcbiAgfVxuICB2YXIgdG9rZW47XG4gIGlmIChkaWZmIDwgLTYpIHtcbiAgICB0b2tlbiA9ICdvdGhlcic7XG4gIH0gZWxzZSBpZiAoZGlmZiA8IC0xKSB7XG4gICAgdG9rZW4gPSAnbGFzdFdlZWsnO1xuICB9IGVsc2UgaWYgKGRpZmYgPCAwKSB7XG4gICAgdG9rZW4gPSAneWVzdGVyZGF5JztcbiAgfSBlbHNlIGlmIChkaWZmIDwgMSkge1xuICAgIHRva2VuID0gJ3RvZGF5JztcbiAgfSBlbHNlIGlmIChkaWZmIDwgMikge1xuICAgIHRva2VuID0gJ3RvbW9ycm93JztcbiAgfSBlbHNlIGlmIChkaWZmIDwgNykge1xuICAgIHRva2VuID0gJ25leHRXZWVrJztcbiAgfSBlbHNlIHtcbiAgICB0b2tlbiA9ICdvdGhlcic7XG4gIH1cbiAgdmFyIHV0Y0RhdGUgPSBzdWJNaWxsaXNlY29uZHMoZGF0ZSwgZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhkYXRlKSk7XG4gIHZhciB1dGNCYXNlRGF0ZSA9IHN1Yk1pbGxpc2Vjb25kcyhiYXNlRGF0ZSwgZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhiYXNlRGF0ZSkpO1xuICB2YXIgZm9ybWF0U3RyID0gbG9jYWxlLmZvcm1hdFJlbGF0aXZlKHRva2VuLCB1dGNEYXRlLCB1dGNCYXNlRGF0ZSwge1xuICAgIGxvY2FsZTogbG9jYWxlLFxuICAgIHdlZWtTdGFydHNPbjogd2Vla1N0YXJ0c09uXG4gIH0pO1xuICByZXR1cm4gZm9ybWF0KGRhdGUsIGZvcm1hdFN0ciwge1xuICAgIGxvY2FsZTogbG9jYWxlLFxuICAgIHdlZWtTdGFydHNPbjogd2Vla1N0YXJ0c09uXG4gIH0pO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGZyb21Vbml4VGltZVxuICogQGNhdGVnb3J5IFRpbWVzdGFtcCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDcmVhdGUgYSBkYXRlIGZyb20gYSBVbml4IHRpbWVzdGFtcC5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENyZWF0ZSBhIGRhdGUgZnJvbSBhIFVuaXggdGltZXN0YW1wIChpbiBzZWNvbmRzKS4gRGVjaW1hbCB2YWx1ZXMgd2lsbCBiZSBkaXNjYXJkZWQuXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IHVuaXhUaW1lIC0gdGhlIGdpdmVuIFVuaXggdGltZXN0YW1wIChpbiBzZWNvbmRzKVxuICogQHJldHVybnMge0RhdGV9IHRoZSBkYXRlXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ3JlYXRlIHRoZSBkYXRlIDI5IEZlYnJ1YXJ5IDIwMTIgMTE6NDU6MDU6XG4gKiBjb25zdCByZXN1bHQgPSBmcm9tVW5peFRpbWUoMTMzMDUxNTkwNSlcbiAqIC8vPT4gV2VkIEZlYiAyOSAyMDEyIDExOjQ1OjA1XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZyb21Vbml4VGltZShkaXJ0eVVuaXhUaW1lKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgdW5peFRpbWUgPSB0b0ludGVnZXIoZGlydHlVbml4VGltZSk7XG4gIHJldHVybiB0b0RhdGUodW5peFRpbWUgKiAxMDAwKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldERhdGVcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBkYXkgb2YgdGhlIG1vbnRoIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBkYXkgb2YgdGhlIG1vbnRoIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIGRheSBvZiBtb250aFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIGRheSBvZiB0aGUgbW9udGggaXMgMjkgRmVicnVhcnkgMjAxMj9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldERhdGUobmV3IERhdGUoMjAxMiwgMSwgMjkpKVxuICogLy89PiAyOVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREYXRlKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRheU9mTW9udGggPSBkYXRlLmdldERhdGUoKTtcbiAgcmV0dXJuIGRheU9mTW9udGg7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXREYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgZGF5IG9mIHRoZSB3ZWVrIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBkYXkgb2YgdGhlIHdlZWsgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7MHwxfDJ8M3w0fDV8Nn0gdGhlIGRheSBvZiB3ZWVrLCAwIHJlcHJlc2VudHMgU3VuZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggZGF5IG9mIHRoZSB3ZWVrIGlzIDI5IEZlYnJ1YXJ5IDIwMTI/XG4gKiBjb25zdCByZXN1bHQgPSBnZXREYXkobmV3IERhdGUoMjAxMiwgMSwgMjkpKVxuICogLy89PiAzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERheShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkYXkgPSBkYXRlLmdldERheSgpO1xuICByZXR1cm4gZGF5O1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZZZWFyIGZyb20gXCIuLi9zdGFydE9mWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXREYXlPZlllYXJcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBkYXkgb2YgdGhlIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIGRheSBvZiB0aGUgeWVhciBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBkYXkgb2YgeWVhclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIGRheSBvZiB0aGUgeWVhciBpcyAyIEp1bHkgMjAxND9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldERheU9mWWVhcihuZXcgRGF0ZSgyMDE0LCA2LCAyKSlcbiAqIC8vPT4gMTgzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERheU9mWWVhcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkaWZmID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKGRhdGUsIHN0YXJ0T2ZZZWFyKGRhdGUpKTtcbiAgdmFyIGRheU9mWWVhciA9IGRpZmYgKyAxO1xuICByZXR1cm4gZGF5T2ZZZWFyO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0RGF5c0luTW9udGhcbiAqIEBjYXRlZ29yeSBNb250aCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBkYXlzIGluIGEgbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBkYXlzIGluIGEgbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGRheXMgaW4gYSBtb250aFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGRheXMgYXJlIGluIEZlYnJ1YXJ5IDIwMDA/XG4gKiBjb25zdCByZXN1bHQgPSBnZXREYXlzSW5Nb250aChuZXcgRGF0ZSgyMDAwLCAxKSlcbiAqIC8vPT4gMjlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RGF5c0luTW9udGgoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgdmFyIG1vbnRoSW5kZXggPSBkYXRlLmdldE1vbnRoKCk7XG4gIHZhciBsYXN0RGF5T2ZNb250aCA9IG5ldyBEYXRlKDApO1xuICBsYXN0RGF5T2ZNb250aC5zZXRGdWxsWWVhcih5ZWFyLCBtb250aEluZGV4ICsgMSwgMCk7XG4gIGxhc3REYXlPZk1vbnRoLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gbGFzdERheU9mTW9udGguZ2V0RGF0ZSgpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGlzTGVhcFllYXIgZnJvbSBcIi4uL2lzTGVhcFllYXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldERheXNJblllYXJcbiAqIEBjYXRlZ29yeSBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGRheXMgaW4gYSB5ZWFyIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgZGF5cyBpbiBhIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGRheXMgaW4gYSB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgZGF5cyBhcmUgaW4gMjAxMj9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldERheXNJblllYXIobmV3IERhdGUoMjAxMiwgMCwgMSkpXG4gKiAvLz0+IDM2NlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREYXlzSW5ZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgaWYgKFN0cmluZyhuZXcgRGF0ZShkYXRlKSkgPT09ICdJbnZhbGlkIERhdGUnKSB7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxuICByZXR1cm4gaXNMZWFwWWVhcihkYXRlKSA/IDM2NiA6IDM2NTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldERlY2FkZVxuICogQGNhdGVnb3J5IERlY2FkZSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIGRlY2FkZSBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgZGVjYWRlIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIHllYXIgb2YgZGVjYWRlXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggZGVjYWRlIGJlbG9uZ3MgMjcgTm92ZW1iZXIgMTk0Mj9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldERlY2FkZShuZXcgRGF0ZSgxOTQyLCAxMCwgMjcpKVxuICogLy89PiAxOTQwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERlY2FkZShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICB2YXIgZGVjYWRlID0gTWF0aC5mbG9vcih5ZWFyIC8gMTApICogMTA7XG4gIHJldHVybiBkZWNhZGU7XG59IiwiaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgYXMgZ2V0SW50ZXJuYWxEZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuLi9fbGliL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG5pbXBvcnQgYXNzaWduIGZyb20gXCIuLi9fbGliL2Fzc2lnbi9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXREZWZhdWx0T3B0aW9uc1xuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgZGVmYXVsdCBvcHRpb25zLlxuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybnMgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMgZGVmYXVsdHMgZm9yXG4gKiBgb3B0aW9ucy5sb2NhbGVgLCBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIGFuZCBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgXG4gKiBhcmd1bWVudHMgZm9yIGFsbCBmdW5jdGlvbnMuXG4gKlxuICogWW91IGNhbiBjaGFuZ2UgdGhlc2Ugd2l0aCBbc2V0RGVmYXVsdE9wdGlvbnNde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3Mvc2V0RGVmYXVsdE9wdGlvbnN9LlxuICpcbiAqIEByZXR1cm5zIHtPYmplY3R9IGRlZmF1bHQgb3B0aW9uc1xuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByZXN1bHQgPSBnZXREZWZhdWx0T3B0aW9ucygpXG4gKiAvLz0+IHt9XG4gKlxuICogQGV4YW1wbGVcbiAqIHNldERlZmF1bHRPcHRpb25zKHsgd2Vla1N0YXJzT246IDEsIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZTogNCB9KVxuICogY29uc3QgcmVzdWx0ID0gZ2V0RGVmYXVsdE9wdGlvbnMoKVxuICogLy89PiB7IHdlZWtTdGFyc09uOiAxLCBmaXJzdFdlZWtDb250YWluc0RhdGU6IDQgfVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREZWZhdWx0T3B0aW9ucygpIHtcbiAgcmV0dXJuIGFzc2lnbih7fSwgZ2V0SW50ZXJuYWxEZWZhdWx0T3B0aW9ucygpKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldEhvdXJzXG4gKiBAY2F0ZWdvcnkgSG91ciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIGhvdXJzIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBob3VycyBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBob3Vyc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEdldCB0aGUgaG91cnMgb2YgMjkgRmVicnVhcnkgMjAxMiAxMTo0NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGdldEhvdXJzKG5ldyBEYXRlKDIwMTIsIDEsIDI5LCAxMSwgNDUpKVxuICogLy89PiAxMVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRIb3VycyhkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBob3VycyA9IGRhdGUuZ2V0SG91cnMoKTtcbiAgcmV0dXJuIGhvdXJzO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0SVNPRGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIGRheSBvZiB0aGUgSVNPIHdlZWsgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIGRheSBvZiB0aGUgSVNPIHdlZWsgb2YgdGhlIGdpdmVuIGRhdGUsXG4gKiB3aGljaCBpcyA3IGZvciBTdW5kYXksIDEgZm9yIE1vbmRheSBldGMuXG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIGRheSBvZiBJU08gd2Vla1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIGRheSBvZiB0aGUgSVNPIHdlZWsgaXMgMjYgRmVicnVhcnkgMjAxMj9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldElTT0RheShuZXcgRGF0ZSgyMDEyLCAxLCAyNikpXG4gKiAvLz0+IDdcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0SVNPRGF5KGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRheSA9IGRhdGUuZ2V0RGF5KCk7XG4gIGlmIChkYXkgPT09IDApIHtcbiAgICBkYXkgPSA3O1xuICB9XG4gIHJldHVybiBkYXk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZklTT1dlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZJU09XZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZklTT1dlZWtZZWFyIGZyb20gXCIuLi9zdGFydE9mSVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG52YXIgTUlMTElTRUNPTkRTX0lOX1dFRUsgPSA2MDQ4MDAwMDA7XG5cbi8qKlxuICogQG5hbWUgZ2V0SVNPV2Vla1xuICogQGNhdGVnb3J5IElTTyBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgSVNPIHdlZWsgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIElTTyB3ZWVrIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBJU08gd2Vla1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHdlZWsgb2YgdGhlIElTTy13ZWVrIG51bWJlcmluZyB5ZWFyIGlzIDIgSmFudWFyeSAyMDA1P1xuICogY29uc3QgcmVzdWx0ID0gZ2V0SVNPV2VlayhuZXcgRGF0ZSgyMDA1LCAwLCAyKSlcbiAqIC8vPT4gNTNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0SVNPV2VlayhkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkaWZmID0gc3RhcnRPZklTT1dlZWsoZGF0ZSkuZ2V0VGltZSgpIC0gc3RhcnRPZklTT1dlZWtZZWFyKGRhdGUpLmdldFRpbWUoKTtcblxuICAvLyBSb3VuZCB0aGUgbnVtYmVyIG9mIGRheXMgdG8gdGhlIG5lYXJlc3QgaW50ZWdlclxuICAvLyBiZWNhdXNlIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGluIGEgd2VlayBpcyBub3QgY29uc3RhbnRcbiAgLy8gKGUuZy4gaXQncyBkaWZmZXJlbnQgaW4gdGhlIHdlZWsgb2YgdGhlIGRheWxpZ2h0IHNhdmluZyB0aW1lIGNsb2NrIHNoaWZ0KVxuICByZXR1cm4gTWF0aC5yb3VuZChkaWZmIC8gTUlMTElTRUNPTkRTX0lOX1dFRUspICsgMTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mSVNPV2VlayBmcm9tIFwiLi4vc3RhcnRPZklTT1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldElTT1dlZWtZZWFyXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBJU08gd2Vlay1udW1iZXJpbmcgeWVhciBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUsXG4gKiB3aGljaCBhbHdheXMgc3RhcnRzIDMgZGF5cyBiZWZvcmUgdGhlIHllYXIncyBmaXJzdCBUaHVyc2RheS5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCBJU08td2VlayBudW1iZXJpbmcgeWVhciBpcyAyIEphbnVhcnkgMjAwNT9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldElTT1dlZWtZZWFyKG5ldyBEYXRlKDIwMDUsIDAsIDIpKVxuICogLy89PiAyMDA0XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldElTT1dlZWtZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIHZhciBmb3VydGhPZkphbnVhcnlPZk5leHRZZWFyID0gbmV3IERhdGUoMCk7XG4gIGZvdXJ0aE9mSmFudWFyeU9mTmV4dFllYXIuc2V0RnVsbFllYXIoeWVhciArIDEsIDAsIDQpO1xuICBmb3VydGhPZkphbnVhcnlPZk5leHRZZWFyLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgc3RhcnRPZk5leHRZZWFyID0gc3RhcnRPZklTT1dlZWsoZm91cnRoT2ZKYW51YXJ5T2ZOZXh0WWVhcik7XG4gIHZhciBmb3VydGhPZkphbnVhcnlPZlRoaXNZZWFyID0gbmV3IERhdGUoMCk7XG4gIGZvdXJ0aE9mSmFudWFyeU9mVGhpc1llYXIuc2V0RnVsbFllYXIoeWVhciwgMCwgNCk7XG4gIGZvdXJ0aE9mSmFudWFyeU9mVGhpc1llYXIuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBzdGFydE9mVGhpc1llYXIgPSBzdGFydE9mSVNPV2Vlayhmb3VydGhPZkphbnVhcnlPZlRoaXNZZWFyKTtcbiAgaWYgKGRhdGUuZ2V0VGltZSgpID49IHN0YXJ0T2ZOZXh0WWVhci5nZXRUaW1lKCkpIHtcbiAgICByZXR1cm4geWVhciArIDE7XG4gIH0gZWxzZSBpZiAoZGF0ZS5nZXRUaW1lKCkgPj0gc3RhcnRPZlRoaXNZZWFyLmdldFRpbWUoKSkge1xuICAgIHJldHVybiB5ZWFyO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB5ZWFyIC0gMTtcbiAgfVxufSIsImltcG9ydCBzdGFydE9mSVNPV2Vla1llYXIgZnJvbSBcIi4uL3N0YXJ0T2ZJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IGFkZFdlZWtzIGZyb20gXCIuLi9hZGRXZWVrcy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbnZhciBNSUxMSVNFQ09ORFNfSU5fV0VFSyA9IDYwNDgwMDAwMDtcblxuLyoqXG4gKiBAbmFtZSBnZXRJU09XZWVrc0luWWVhclxuICogQGNhdGVnb3J5IElTTyBXZWVrLU51bWJlcmluZyBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIHdlZWtzIGluIGFuIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2Ygd2Vla3MgaW4gYW4gSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBJU08gd2Vla3MgaW4gYSB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgd2Vla3MgYXJlIGluIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyIDIwMTU/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRJU09XZWVrc0luWWVhcihuZXcgRGF0ZSgyMDE1LCAxLCAxMSkpXG4gKiAvLz0+IDUzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldElTT1dlZWtzSW5ZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIHRoaXNZZWFyID0gc3RhcnRPZklTT1dlZWtZZWFyKGRpcnR5RGF0ZSk7XG4gIHZhciBuZXh0WWVhciA9IHN0YXJ0T2ZJU09XZWVrWWVhcihhZGRXZWVrcyh0aGlzWWVhciwgNjApKTtcbiAgdmFyIGRpZmYgPSBuZXh0WWVhci52YWx1ZU9mKCkgLSB0aGlzWWVhci52YWx1ZU9mKCk7XG4gIC8vIFJvdW5kIHRoZSBudW1iZXIgb2Ygd2Vla3MgdG8gdGhlIG5lYXJlc3QgaW50ZWdlclxuICAvLyBiZWNhdXNlIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGluIGEgd2VlayBpcyBub3QgY29uc3RhbnRcbiAgLy8gKGUuZy4gaXQncyBkaWZmZXJlbnQgaW4gdGhlIHdlZWsgb2YgdGhlIGRheWxpZ2h0IHNhdmluZyB0aW1lIGNsb2NrIHNoaWZ0KVxuICByZXR1cm4gTWF0aC5yb3VuZChkaWZmIC8gTUlMTElTRUNPTkRTX0lOX1dFRUspO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0TWlsbGlzZWNvbmRzXG4gKiBAY2F0ZWdvcnkgTWlsbGlzZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBtaWxsaXNlY29uZHMgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG1pbGxpc2Vjb25kcyBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBtaWxsaXNlY29uZHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBHZXQgdGhlIG1pbGxpc2Vjb25kcyBvZiAyOSBGZWJydWFyeSAyMDEyIDExOjQ1OjA1LjEyMzpcbiAqIGNvbnN0IHJlc3VsdCA9IGdldE1pbGxpc2Vjb25kcyhuZXcgRGF0ZSgyMDEyLCAxLCAyOSwgMTEsIDQ1LCA1LCAxMjMpKVxuICogLy89PiAxMjNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0TWlsbGlzZWNvbmRzKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIG1pbGxpc2Vjb25kcyA9IGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCk7XG4gIHJldHVybiBtaWxsaXNlY29uZHM7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXRNaW51dGVzXG4gKiBAY2F0ZWdvcnkgTWludXRlIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbWludXRlcyBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbWludXRlcyBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBtaW51dGVzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gR2V0IHRoZSBtaW51dGVzIG9mIDI5IEZlYnJ1YXJ5IDIwMTIgMTE6NDU6MDU6XG4gKiBjb25zdCByZXN1bHQgPSBnZXRNaW51dGVzKG5ldyBEYXRlKDIwMTIsIDEsIDI5LCAxMSwgNDUsIDUpKVxuICogLy89PiA0NVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRNaW51dGVzKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIG1pbnV0ZXMgPSBkYXRlLmdldE1pbnV0ZXMoKTtcbiAgcmV0dXJuIG1pbnV0ZXM7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXRNb250aFxuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG1vbnRoIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG1vbnRoXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggbW9udGggaXMgMjkgRmVicnVhcnkgMjAxMj9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldE1vbnRoKG5ldyBEYXRlKDIwMTIsIDEsIDI5KSlcbiAqIC8vPT4gMVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRNb250aChkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBtb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgcmV0dXJuIG1vbnRoO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbnZhciBNSUxMSVNFQ09ORFNfSU5fREFZID0gMjQgKiA2MCAqIDYwICogMTAwMDtcblxuLyoqXG4gKiBAbmFtZSBnZXRPdmVybGFwcGluZ0RheXNJbkludGVydmFsc1xuICogQGNhdGVnb3J5IEludGVydmFsIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGRheXMgdGhhdCBvdmVybGFwIGluIHR3byB0aW1lIGludGVydmFsc1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgZGF5cyB0aGF0IG92ZXJsYXAgaW4gdHdvIHRpbWUgaW50ZXJ2YWxzXG4gKlxuICogQHBhcmFtIHtJbnRlcnZhbH0gaW50ZXJ2YWxMZWZ0IC0gdGhlIGZpcnN0IGludGVydmFsIHRvIGNvbXBhcmUuIFNlZSBbSW50ZXJ2YWxde0BsaW5rIGRvY3MvSW50ZXJ2YWx9XG4gKiBAcGFyYW0ge0ludGVydmFsfSBpbnRlcnZhbFJpZ2h0IC0gdGhlIHNlY29uZCBpbnRlcnZhbCB0byBjb21wYXJlLiBTZWUgW0ludGVydmFsXXtAbGluayBkb2NzL0ludGVydmFsfVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBkYXlzIHRoYXQgb3ZlcmxhcCBpbiB0d28gdGltZSBpbnRlcnZhbHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IFRoZSBzdGFydCBvZiBhbiBpbnRlcnZhbCBjYW5ub3QgYmUgYWZ0ZXIgaXRzIGVuZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gRGF0ZSBpbiBpbnRlcnZhbCBjYW5ub3QgYmUgYEludmFsaWQgRGF0ZWBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIG92ZXJsYXBwaW5nIHRpbWUgaW50ZXJ2YWxzIGFkZHMgMSBmb3IgZWFjaCBzdGFydGVkIG92ZXJsYXBwaW5nIGRheTpcbiAqIGdldE92ZXJsYXBwaW5nRGF5c0luSW50ZXJ2YWxzKFxuICogICB7IHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAwLCAxMCksIGVuZDogbmV3IERhdGUoMjAxNCwgMCwgMjApIH0sXG4gKiAgIHsgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDAsIDE3KSwgZW5kOiBuZXcgRGF0ZSgyMDE0LCAwLCAyMSkgfVxuICogKVxuICogLy89PiAzXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciBub24tb3ZlcmxhcHBpbmcgdGltZSBpbnRlcnZhbHMgcmV0dXJucyAwOlxuICogZ2V0T3ZlcmxhcHBpbmdEYXlzSW5JbnRlcnZhbHMoXG4gKiAgIHsgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDAsIDEwKSwgZW5kOiBuZXcgRGF0ZSgyMDE0LCAwLCAyMCkgfSxcbiAqICAgeyBzdGFydDogbmV3IERhdGUoMjAxNCwgMCwgMjEpLCBlbmQ6IG5ldyBEYXRlKDIwMTQsIDAsIDIyKSB9XG4gKiApXG4gKiAvLz0+IDBcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPdmVybGFwcGluZ0RheXNJbkludGVydmFscyhkaXJ0eUludGVydmFsTGVmdCwgZGlydHlJbnRlcnZhbFJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgaW50ZXJ2YWxMZWZ0ID0gZGlydHlJbnRlcnZhbExlZnQgfHwge307XG4gIHZhciBpbnRlcnZhbFJpZ2h0ID0gZGlydHlJbnRlcnZhbFJpZ2h0IHx8IHt9O1xuICB2YXIgbGVmdFN0YXJ0VGltZSA9IHRvRGF0ZShpbnRlcnZhbExlZnQuc3RhcnQpLmdldFRpbWUoKTtcbiAgdmFyIGxlZnRFbmRUaW1lID0gdG9EYXRlKGludGVydmFsTGVmdC5lbmQpLmdldFRpbWUoKTtcbiAgdmFyIHJpZ2h0U3RhcnRUaW1lID0gdG9EYXRlKGludGVydmFsUmlnaHQuc3RhcnQpLmdldFRpbWUoKTtcbiAgdmFyIHJpZ2h0RW5kVGltZSA9IHRvRGF0ZShpbnRlcnZhbFJpZ2h0LmVuZCkuZ2V0VGltZSgpO1xuXG4gIC8vIFRocm93IGFuIGV4Y2VwdGlvbiBpZiBzdGFydCBkYXRlIGlzIGFmdGVyIGVuZCBkYXRlIG9yIGlmIGFueSBkYXRlIGlzIGBJbnZhbGlkIERhdGVgXG4gIGlmICghKGxlZnRTdGFydFRpbWUgPD0gbGVmdEVuZFRpbWUgJiYgcmlnaHRTdGFydFRpbWUgPD0gcmlnaHRFbmRUaW1lKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIGludGVydmFsJyk7XG4gIH1cbiAgdmFyIGlzT3ZlcmxhcHBpbmcgPSBsZWZ0U3RhcnRUaW1lIDwgcmlnaHRFbmRUaW1lICYmIHJpZ2h0U3RhcnRUaW1lIDwgbGVmdEVuZFRpbWU7XG4gIGlmICghaXNPdmVybGFwcGluZykge1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciBvdmVybGFwU3RhcnREYXRlID0gcmlnaHRTdGFydFRpbWUgPCBsZWZ0U3RhcnRUaW1lID8gbGVmdFN0YXJ0VGltZSA6IHJpZ2h0U3RhcnRUaW1lO1xuICB2YXIgb3ZlcmxhcEVuZERhdGUgPSByaWdodEVuZFRpbWUgPiBsZWZ0RW5kVGltZSA/IGxlZnRFbmRUaW1lIDogcmlnaHRFbmRUaW1lO1xuICB2YXIgZGlmZmVyZW5jZUluTXMgPSBvdmVybGFwRW5kRGF0ZSAtIG92ZXJsYXBTdGFydERhdGU7XG4gIHJldHVybiBNYXRoLmNlaWwoZGlmZmVyZW5jZUluTXMgLyBNSUxMSVNFQ09ORFNfSU5fREFZKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldFF1YXJ0ZXJcbiAqIEBjYXRlZ29yeSBRdWFydGVyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgeWVhciBxdWFydGVyIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSB5ZWFyIHF1YXJ0ZXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgcXVhcnRlclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHF1YXJ0ZXIgaXMgMiBKdWx5IDIwMTQ/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRRdWFydGVyKG5ldyBEYXRlKDIwMTQsIDYsIDIpKVxuICogLy89PiAzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFF1YXJ0ZXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgcXVhcnRlciA9IE1hdGguZmxvb3IoZGF0ZS5nZXRNb250aCgpIC8gMykgKyAxO1xuICByZXR1cm4gcXVhcnRlcjtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldFNlY29uZHNcbiAqIEBjYXRlZ29yeSBTZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBzZWNvbmRzIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBzZWNvbmRzIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIHNlY29uZHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBHZXQgdGhlIHNlY29uZHMgb2YgMjkgRmVicnVhcnkgMjAxMiAxMTo0NTowNS4xMjM6XG4gKiBjb25zdCByZXN1bHQgPSBnZXRTZWNvbmRzKG5ldyBEYXRlKDIwMTIsIDEsIDI5LCAxMSwgNDUsIDUsIDEyMykpXG4gKiAvLz0+IDVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0U2Vjb25kcyhkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBzZWNvbmRzID0gZGF0ZS5nZXRTZWNvbmRzKCk7XG4gIHJldHVybiBzZWNvbmRzO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0VGltZVxuICogQGNhdGVnb3J5IFRpbWVzdGFtcCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG1pbGxpc2Vjb25kcyB0aW1lc3RhbXAgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG1pbGxpc2Vjb25kcyB0aW1lc3RhbXAgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgdGltZXN0YW1wXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gR2V0IHRoZSB0aW1lc3RhbXAgb2YgMjkgRmVicnVhcnkgMjAxMiAxMTo0NTowNS4xMjM6XG4gKiBjb25zdCByZXN1bHQgPSBnZXRUaW1lKG5ldyBEYXRlKDIwMTIsIDEsIDI5LCAxMSwgNDUsIDUsIDEyMykpXG4gKiAvLz0+IDEzMzA1MTU5MDUxMjNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VGltZShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciB0aW1lc3RhbXAgPSBkYXRlLmdldFRpbWUoKTtcbiAgcmV0dXJuIHRpbWVzdGFtcDtcbn0iLCJpbXBvcnQgZ2V0VGltZSBmcm9tIFwiLi4vZ2V0VGltZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0VW5peFRpbWVcbiAqIEBjYXRlZ29yeSBUaW1lc3RhbXAgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBzZWNvbmRzIHRpbWVzdGFtcCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgc2Vjb25kcyB0aW1lc3RhbXAgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgdGltZXN0YW1wXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gR2V0IHRoZSB0aW1lc3RhbXAgb2YgMjkgRmVicnVhcnkgMjAxMiAxMTo0NTowNSBDRVQ6XG4gKiBjb25zdCByZXN1bHQgPSBnZXRVbml4VGltZShuZXcgRGF0ZSgyMDEyLCAxLCAyOSwgMTEsIDQ1LCA1KSlcbiAqIC8vPT4gMTMzMDUxMjMwNVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRVbml4VGltZShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBNYXRoLmZsb29yKGdldFRpbWUoZGlydHlEYXRlKSAvIDEwMDApO1xufSIsImltcG9ydCBzdGFydE9mV2VlayBmcm9tIFwiLi4vc3RhcnRPZldlZWsvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mV2Vla1llYXIgZnJvbSBcIi4uL3N0YXJ0T2ZXZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xudmFyIE1JTExJU0VDT05EU19JTl9XRUVLID0gNjA0ODAwMDAwO1xuXG4vKipcbiAqIEBuYW1lIGdldFdlZWtcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbG9jYWwgd2VlayBpbmRleCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbG9jYWwgd2VlayBpbmRleCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSBleGFjdCBjYWxjdWxhdGlvbiBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2ZcbiAqIGBvcHRpb25zLndlZWtTdGFydHNPbmAgKHdoaWNoIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrKVxuICogYW5kIGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgKHdoaWNoIGlzIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluXG4gKiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgd2Vlay1udW1iZXJpbmcgeWVhcilcbiAqXG4gKiBXZWVrIG51bWJlcmluZzogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2VlayNXZWVrX251bWJlcmluZ1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcGFyYW0gezF8MnwzfDR8NXw2fDd9IFtvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZT0xXSAtIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgd2Vla1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHdlZWsgb2YgdGhlIGxvY2FsIHdlZWsgbnVtYmVyaW5nIHllYXIgaXMgMiBKYW51YXJ5IDIwMDUgd2l0aCBkZWZhdWx0IG9wdGlvbnM/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRXZWVrKG5ldyBEYXRlKDIwMDUsIDAsIDIpKVxuICogLy89PiAyXG4gKlxuICogLy8gV2hpY2ggd2VlayBvZiB0aGUgbG9jYWwgd2VlayBudW1iZXJpbmcgeWVhciBpcyAyIEphbnVhcnkgMjAwNSxcbiAqIC8vIGlmIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLFxuICogLy8gYW5kIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyIGFsd2F5cyBjb250YWlucyA0IEphbnVhcnk/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRXZWVrKG5ldyBEYXRlKDIwMDUsIDAsIDIpLCB7XG4gKiAgIHdlZWtTdGFydHNPbjogMSxcbiAqICAgZmlyc3RXZWVrQ29udGFpbnNEYXRlOiA0XG4gKiB9KVxuICogLy89PiA1M1xuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdlZWsoZGlydHlEYXRlLCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGlmZiA9IHN0YXJ0T2ZXZWVrKGRhdGUsIG9wdGlvbnMpLmdldFRpbWUoKSAtIHN0YXJ0T2ZXZWVrWWVhcihkYXRlLCBvcHRpb25zKS5nZXRUaW1lKCk7XG5cbiAgLy8gUm91bmQgdGhlIG51bWJlciBvZiBkYXlzIHRvIHRoZSBuZWFyZXN0IGludGVnZXJcbiAgLy8gYmVjYXVzZSB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiBhIHdlZWsgaXMgbm90IGNvbnN0YW50XG4gIC8vIChlLmcuIGl0J3MgZGlmZmVyZW50IGluIHRoZSB3ZWVrIG9mIHRoZSBkYXlsaWdodCBzYXZpbmcgdGltZSBjbG9jayBzaGlmdClcbiAgcmV0dXJuIE1hdGgucm91bmQoZGlmZiAvIE1JTExJU0VDT05EU19JTl9XRUVLKSArIDE7XG59IiwiaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuaW1wb3J0IGdldERhdGUgZnJvbSBcIi4uL2dldERhdGUvaW5kZXguanNcIjtcbmltcG9ydCBnZXREYXkgZnJvbSBcIi4uL2dldERheS9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZNb250aCBmcm9tIFwiLi4vc3RhcnRPZk1vbnRoL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0V2Vla09mTW9udGhcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgd2VlayBvZiB0aGUgbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIHdlZWsgb2YgdGhlIG1vbnRoIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgd2VlayBvZiBtb250aFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2IGluY2x1c2l2ZWx5XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHdlZWsgb2YgdGhlIG1vbnRoIGlzIDkgTm92ZW1iZXIgMjAxNz9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldFdlZWtPZk1vbnRoKG5ldyBEYXRlKDIwMTcsIDEwLCA5KSlcbiAqIC8vPT4gMlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXZWVrT2ZNb250aChkYXRlLCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfcmVmMiwgX3JlZjMsIF9vcHRpb25zJHdlZWtTdGFydHNPbiwgX29wdGlvbnMkbG9jYWxlLCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8sIF9kZWZhdWx0T3B0aW9ucyRsb2NhbCwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMjtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIHZhciB3ZWVrU3RhcnRzT24gPSB0b0ludGVnZXIoKF9yZWYgPSAoX3JlZjIgPSAoX3JlZjMgPSAoX29wdGlvbnMkd2Vla1N0YXJ0c09uID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX29wdGlvbnMkd2Vla1N0YXJ0c09uICE9PSB2b2lkIDAgPyBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUgPSBvcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlJG9wdGlvID0gX29wdGlvbnMkbG9jYWxlLm9wdGlvbnMpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX29wdGlvbnMkbG9jYWxlJG9wdGlvLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjMgIT09IHZvaWQgMCA/IF9yZWYzIDogZGVmYXVsdE9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdm9pZCAwID8gX3JlZjIgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsID0gZGVmYXVsdE9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID0gX2RlZmF1bHRPcHRpb25zJGxvY2FsLm9wdGlvbnMpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB2b2lkIDAgPyBfcmVmIDogMCk7XG4gIGlmICghKHdlZWtTdGFydHNPbiA+PSAwICYmIHdlZWtTdGFydHNPbiA8PSA2KSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd3ZWVrU3RhcnRzT24gbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYgaW5jbHVzaXZlbHknKTtcbiAgfVxuICB2YXIgY3VycmVudERheU9mTW9udGggPSBnZXREYXRlKGRhdGUpO1xuICBpZiAoaXNOYU4oY3VycmVudERheU9mTW9udGgpKSByZXR1cm4gTmFOO1xuICB2YXIgc3RhcnRXZWVrRGF5ID0gZ2V0RGF5KHN0YXJ0T2ZNb250aChkYXRlKSk7XG4gIHZhciBsYXN0RGF5T2ZGaXJzdFdlZWsgPSB3ZWVrU3RhcnRzT24gLSBzdGFydFdlZWtEYXk7XG4gIGlmIChsYXN0RGF5T2ZGaXJzdFdlZWsgPD0gMCkgbGFzdERheU9mRmlyc3RXZWVrICs9IDc7XG4gIHZhciByZW1haW5pbmdEYXlzQWZ0ZXJGaXJzdFdlZWsgPSBjdXJyZW50RGF5T2ZNb250aCAtIGxhc3REYXlPZkZpcnN0V2VlaztcbiAgcmV0dXJuIE1hdGguY2VpbChyZW1haW5pbmdEYXlzQWZ0ZXJGaXJzdFdlZWsgLyA3KSArIDE7XG59IiwiaW1wb3J0IHN0YXJ0T2ZXZWVrIGZyb20gXCIuLi9zdGFydE9mV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL19saWIvZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0V2Vla1llYXJcbiAqIEBjYXRlZ29yeSBXZWVrLU51bWJlcmluZyBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhciBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhciBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSBleGFjdCBjYWxjdWxhdGlvbiBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2ZcbiAqIGBvcHRpb25zLndlZWtTdGFydHNPbmAgKHdoaWNoIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrKVxuICogYW5kIGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgKHdoaWNoIGlzIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluXG4gKiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgd2Vlay1udW1iZXJpbmcgeWVhcilcbiAqXG4gKiBXZWVrIG51bWJlcmluZzogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2VlayNXZWVrX251bWJlcmluZ1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcGFyYW0gezF8MnwzfDR8NXw2fDd9IFtvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZT0xXSAtIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHdlZWsgbnVtYmVyaW5nIHllYXIgaXMgMjYgRGVjZW1iZXIgMjAwNCB3aXRoIHRoZSBkZWZhdWx0IHNldHRpbmdzP1xuICogY29uc3QgcmVzdWx0ID0gZ2V0V2Vla1llYXIobmV3IERhdGUoMjAwNCwgMTEsIDI2KSlcbiAqIC8vPT4gMjAwNVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCB3ZWVrIG51bWJlcmluZyB5ZWFyIGlzIDI2IERlY2VtYmVyIDIwMDQgaWYgd2VlayBzdGFydHMgb24gU2F0dXJkYXk/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRXZWVrWWVhcihuZXcgRGF0ZSgyMDA0LCAxMSwgMjYpLCB7IHdlZWtTdGFydHNPbjogNiB9KVxuICogLy89PiAyMDA0XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHdlZWsgbnVtYmVyaW5nIHllYXIgaXMgMjYgRGVjZW1iZXIgMjAwNCBpZiB0aGUgZmlyc3Qgd2VlayBjb250YWlucyA0IEphbnVhcnk/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRXZWVrWWVhcihuZXcgRGF0ZSgyMDA0LCAxMSwgMjYpLCB7IGZpcnN0V2Vla0NvbnRhaW5zRGF0ZTogNCB9KVxuICogLy89PiAyMDA0XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdlZWtZZWFyKGRpcnR5RGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX3JlZjIsIF9yZWYzLCBfb3B0aW9ucyRmaXJzdFdlZWtDb24sIF9vcHRpb25zJGxvY2FsZSwgX29wdGlvbnMkbG9jYWxlJG9wdGlvLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDI7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9IHRvSW50ZWdlcigoX3JlZiA9IChfcmVmMiA9IChfcmVmMyA9IChfb3B0aW9ucyRmaXJzdFdlZWtDb24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRmaXJzdFdlZWtDb24gIT09IHZvaWQgMCA/IF9vcHRpb25zJGZpcnN0V2Vla0NvbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPSBfb3B0aW9ucyRsb2NhbGUub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlJG9wdGlvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUkb3B0aW8uZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiBkZWZhdWx0T3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDAgPyBfcmVmMiA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsMi5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiAxKTtcblxuICAvLyBUZXN0IGlmIHdlZWtTdGFydHNPbiBpcyBiZXR3ZWVuIDEgYW5kIDcgX2FuZF8gaXMgbm90IE5hTlxuICBpZiAoIShmaXJzdFdlZWtDb250YWluc0RhdGUgPj0gMSAmJiBmaXJzdFdlZWtDb250YWluc0RhdGUgPD0gNykpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignZmlyc3RXZWVrQ29udGFpbnNEYXRlIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3IGluY2x1c2l2ZWx5Jyk7XG4gIH1cbiAgdmFyIGZpcnN0V2Vla09mTmV4dFllYXIgPSBuZXcgRGF0ZSgwKTtcbiAgZmlyc3RXZWVrT2ZOZXh0WWVhci5zZXRGdWxsWWVhcih5ZWFyICsgMSwgMCwgZmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgZmlyc3RXZWVrT2ZOZXh0WWVhci5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgdmFyIHN0YXJ0T2ZOZXh0WWVhciA9IHN0YXJ0T2ZXZWVrKGZpcnN0V2Vla09mTmV4dFllYXIsIG9wdGlvbnMpO1xuICB2YXIgZmlyc3RXZWVrT2ZUaGlzWWVhciA9IG5ldyBEYXRlKDApO1xuICBmaXJzdFdlZWtPZlRoaXNZZWFyLnNldEZ1bGxZZWFyKHllYXIsIDAsIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSk7XG4gIGZpcnN0V2Vla09mVGhpc1llYXIuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBzdGFydE9mVGhpc1llYXIgPSBzdGFydE9mV2VlayhmaXJzdFdlZWtPZlRoaXNZZWFyLCBvcHRpb25zKTtcbiAgaWYgKGRhdGUuZ2V0VGltZSgpID49IHN0YXJ0T2ZOZXh0WWVhci5nZXRUaW1lKCkpIHtcbiAgICByZXR1cm4geWVhciArIDE7XG4gIH0gZWxzZSBpZiAoZGF0ZS5nZXRUaW1lKCkgPj0gc3RhcnRPZlRoaXNZZWFyLmdldFRpbWUoKSkge1xuICAgIHJldHVybiB5ZWFyO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB5ZWFyIC0gMTtcbiAgfVxufSIsImltcG9ydCBkaWZmZXJlbmNlSW5DYWxlbmRhcldlZWtzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5DYWxlbmRhcldlZWtzL2luZGV4LmpzXCI7XG5pbXBvcnQgbGFzdERheU9mTW9udGggZnJvbSBcIi4uL2xhc3REYXlPZk1vbnRoL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZk1vbnRoIGZyb20gXCIuLi9zdGFydE9mTW9udGgvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldFdlZWtzSW5Nb250aFxuICogQGNhdGVnb3J5IFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgd2Vla3MgYSBtb250aCBzcGFucy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIHdlZWtzIHRoZSBtb250aCBpbiB0aGUgZ2l2ZW4gZGF0ZSBzcGFucy5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBjYWxlbmRhciB3ZWVrc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBjYWxlbmRhciB3ZWVrcyBkb2VzIEZlYnJ1YXJ5IDIwMTUgc3Bhbj9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldFdlZWtzSW5Nb250aChuZXcgRGF0ZSgyMDE1LCAxLCA4KSlcbiAqIC8vPT4gNFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0aGUgd2VlayBzdGFydHMgb24gTW9uZGF5LFxuICogLy8gaG93IG1hbnkgY2FsZW5kYXIgd2Vla3MgZG9lcyBKdWx5IDIwMTcgc3Bhbj9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldFdlZWtzSW5Nb250aChuZXcgRGF0ZSgyMDE3LCA2LCA1KSwgeyB3ZWVrU3RhcnRzT246IDEgfSlcbiAqIC8vPT4gNlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXZWVrc0luTW9udGgoZGF0ZSwgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGRpZmZlcmVuY2VJbkNhbGVuZGFyV2Vla3MobGFzdERheU9mTW9udGgoZGF0ZSksIHN0YXJ0T2ZNb250aChkYXRlKSwgb3B0aW9ucykgKyAxO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0WWVhclxuICogQGNhdGVnb3J5IFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSB5ZWFyIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSB5ZWFyIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIHllYXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCB5ZWFyIGlzIDIgSnVseSAyMDE0P1xuICogY29uc3QgcmVzdWx0ID0gZ2V0WWVhcihuZXcgRGF0ZSgyMDE0LCA2LCAyKSlcbiAqIC8vPT4gMjAxNFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHRvRGF0ZShkaXJ0eURhdGUpLmdldEZ1bGxZZWFyKCk7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IG1pbGxpc2Vjb25kc0luSG91ciB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaG91cnNUb01pbGxpc2Vjb25kc1xuICogQGNhdGVnb3J5ICBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgaG91cnMgdG8gbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiBob3VycyB0byBhIGZ1bGwgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gaG91cnMgLSBudW1iZXIgb2YgaG91cnMgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBob3VycyBjb252ZXJ0ZWQgdG8gbWlsbGlzZWNvbmRzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCAyIGhvdXJzIHRvIG1pbGxpc2Vjb25kczpcbiAqIGNvbnN0IHJlc3VsdCA9IGhvdXJzVG9NaWxsaXNlY29uZHMoMilcbiAqIC8vPT4gNzIwMDAwMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBob3Vyc1RvTWlsbGlzZWNvbmRzKGhvdXJzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gTWF0aC5mbG9vcihob3VycyAqIG1pbGxpc2Vjb25kc0luSG91cik7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IG1pbnV0ZXNJbkhvdXIgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGhvdXJzVG9NaW51dGVzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IGhvdXJzIHRvIG1pbnV0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgbnVtYmVyIG9mIGhvdXJzIHRvIGEgZnVsbCBudW1iZXIgb2YgbWludXRlcy5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gaG91cnMgLSBudW1iZXIgb2YgaG91cnMgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBob3VycyBjb252ZXJ0ZWQgaW4gbWludXRlc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgMiBob3VycyB0byBtaW51dGVzOlxuICogY29uc3QgcmVzdWx0ID0gaG91cnNUb01pbnV0ZXMoMilcbiAqIC8vPT4gMTIwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGhvdXJzVG9NaW51dGVzKGhvdXJzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gTWF0aC5mbG9vcihob3VycyAqIG1pbnV0ZXNJbkhvdXIpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBzZWNvbmRzSW5Ib3VyIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBob3Vyc1RvU2Vjb25kc1xuICogQGNhdGVnb3J5IENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCBob3VycyB0byBzZWNvbmRzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiBob3VycyB0byBhIGZ1bGwgbnVtYmVyIG9mIHNlY29uZHMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGhvdXJzIC0gbnVtYmVyIG9mIGhvdXJzIHRvIGJlIGNvbnZlcnRlZFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBudW1iZXIgb2YgaG91cnMgY29udmVydGVkIGluIHNlY29uZHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDIgaG91cnMgdG8gc2Vjb25kczpcbiAqIGNvbnN0IHJlc3VsdCA9IGhvdXJzVG9TZWNvbmRzKDIpXG4gKiAvLz0+IDcyMDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaG91cnNUb1NlY29uZHMoaG91cnMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBNYXRoLmZsb29yKGhvdXJzICogc2Vjb25kc0luSG91cik7XG59IiwiLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGBzY3JpcHRzL2J1aWxkL2luZGljZXMudHNgLiBQbGVhc2UsIGRvbid0IGNoYW5nZSBpdC5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgYWRkIH0gZnJvbSBcIi4vYWRkL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFkZEJ1c2luZXNzRGF5cyB9IGZyb20gXCIuL2FkZEJ1c2luZXNzRGF5cy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhZGREYXlzIH0gZnJvbSBcIi4vYWRkRGF5cy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhZGRIb3VycyB9IGZyb20gXCIuL2FkZEhvdXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFkZElTT1dlZWtZZWFycyB9IGZyb20gXCIuL2FkZElTT1dlZWtZZWFycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhZGRNaWxsaXNlY29uZHMgfSBmcm9tIFwiLi9hZGRNaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYWRkTWludXRlcyB9IGZyb20gXCIuL2FkZE1pbnV0ZXMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYWRkTW9udGhzIH0gZnJvbSBcIi4vYWRkTW9udGhzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFkZFF1YXJ0ZXJzIH0gZnJvbSBcIi4vYWRkUXVhcnRlcnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYWRkU2Vjb25kcyB9IGZyb20gXCIuL2FkZFNlY29uZHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYWRkV2Vla3MgfSBmcm9tIFwiLi9hZGRXZWVrcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhZGRZZWFycyB9IGZyb20gXCIuL2FkZFllYXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFyZUludGVydmFsc092ZXJsYXBwaW5nIH0gZnJvbSBcIi4vYXJlSW50ZXJ2YWxzT3ZlcmxhcHBpbmcvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY2xhbXAgfSBmcm9tIFwiLi9jbGFtcC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjbG9zZXN0SW5kZXhUbyB9IGZyb20gXCIuL2Nsb3Nlc3RJbmRleFRvL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNsb3Nlc3RUbyB9IGZyb20gXCIuL2Nsb3Nlc3RUby9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjb21wYXJlQXNjIH0gZnJvbSBcIi4vY29tcGFyZUFzYy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjb21wYXJlRGVzYyB9IGZyb20gXCIuL2NvbXBhcmVEZXNjL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRheXNUb1dlZWtzIH0gZnJvbSBcIi4vZGF5c1RvV2Vla3MvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluQnVzaW5lc3NEYXlzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluQnVzaW5lc3NEYXlzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkaWZmZXJlbmNlSW5DYWxlbmRhcklTT1dlZWtZZWFycyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbkNhbGVuZGFySVNPV2Vla1llYXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VJbkNhbGVuZGFySVNPV2Vla3MgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5DYWxlbmRhcklTT1dlZWtzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VJbkNhbGVuZGFyTW9udGhzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluQ2FsZW5kYXJRdWFydGVycyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbkNhbGVuZGFyUXVhcnRlcnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluQ2FsZW5kYXJXZWVrcyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbkNhbGVuZGFyV2Vla3MvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluQ2FsZW5kYXJZZWFycyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbkNhbGVuZGFyWWVhcnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluRGF5cyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbkRheXMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluSG91cnMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5Ib3Vycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkaWZmZXJlbmNlSW5JU09XZWVrWWVhcnMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5JU09XZWVrWWVhcnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VJbk1pbnV0ZXMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5NaW51dGVzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VJbk1vbnRocyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbk1vbnRocy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkaWZmZXJlbmNlSW5RdWFydGVycyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJblF1YXJ0ZXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VJblNlY29uZHMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5TZWNvbmRzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VJbldlZWtzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluV2Vla3MvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluWWVhcnMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5ZZWFycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlYWNoRGF5T2ZJbnRlcnZhbCB9IGZyb20gXCIuL2VhY2hEYXlPZkludGVydmFsL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVhY2hIb3VyT2ZJbnRlcnZhbCB9IGZyb20gXCIuL2VhY2hIb3VyT2ZJbnRlcnZhbC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlYWNoTWludXRlT2ZJbnRlcnZhbCB9IGZyb20gXCIuL2VhY2hNaW51dGVPZkludGVydmFsL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVhY2hNb250aE9mSW50ZXJ2YWwgfSBmcm9tIFwiLi9lYWNoTW9udGhPZkludGVydmFsL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVhY2hRdWFydGVyT2ZJbnRlcnZhbCB9IGZyb20gXCIuL2VhY2hRdWFydGVyT2ZJbnRlcnZhbC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlYWNoV2Vla09mSW50ZXJ2YWwgfSBmcm9tIFwiLi9lYWNoV2Vla09mSW50ZXJ2YWwvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZWFjaFdlZWtlbmRPZkludGVydmFsIH0gZnJvbSBcIi4vZWFjaFdlZWtlbmRPZkludGVydmFsL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVhY2hXZWVrZW5kT2ZNb250aCB9IGZyb20gXCIuL2VhY2hXZWVrZW5kT2ZNb250aC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlYWNoV2Vla2VuZE9mWWVhciB9IGZyb20gXCIuL2VhY2hXZWVrZW5kT2ZZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVhY2hZZWFyT2ZJbnRlcnZhbCB9IGZyb20gXCIuL2VhY2hZZWFyT2ZJbnRlcnZhbC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlbmRPZkRheSB9IGZyb20gXCIuL2VuZE9mRGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuZE9mRGVjYWRlIH0gZnJvbSBcIi4vZW5kT2ZEZWNhZGUvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZW5kT2ZIb3VyIH0gZnJvbSBcIi4vZW5kT2ZIb3VyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuZE9mSVNPV2VlayB9IGZyb20gXCIuL2VuZE9mSVNPV2Vlay9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlbmRPZklTT1dlZWtZZWFyIH0gZnJvbSBcIi4vZW5kT2ZJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlbmRPZk1pbnV0ZSB9IGZyb20gXCIuL2VuZE9mTWludXRlL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuZE9mTW9udGggfSBmcm9tIFwiLi9lbmRPZk1vbnRoL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuZE9mUXVhcnRlciB9IGZyb20gXCIuL2VuZE9mUXVhcnRlci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlbmRPZlNlY29uZCB9IGZyb20gXCIuL2VuZE9mU2Vjb25kL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuZE9mVG9kYXkgfSBmcm9tIFwiLi9lbmRPZlRvZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuZE9mVG9tb3Jyb3cgfSBmcm9tIFwiLi9lbmRPZlRvbW9ycm93L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuZE9mV2VlayB9IGZyb20gXCIuL2VuZE9mV2Vlay9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlbmRPZlllYXIgfSBmcm9tIFwiLi9lbmRPZlllYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZW5kT2ZZZXN0ZXJkYXkgfSBmcm9tIFwiLi9lbmRPZlllc3RlcmRheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmb3JtYXQgfSBmcm9tIFwiLi9mb3JtYXQvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZm9ybWF0RGlzdGFuY2UgfSBmcm9tIFwiLi9mb3JtYXREaXN0YW5jZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmb3JtYXREaXN0YW5jZVN0cmljdCB9IGZyb20gXCIuL2Zvcm1hdERpc3RhbmNlU3RyaWN0L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZvcm1hdERpc3RhbmNlVG9Ob3cgfSBmcm9tIFwiLi9mb3JtYXREaXN0YW5jZVRvTm93L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZvcm1hdERpc3RhbmNlVG9Ob3dTdHJpY3QgfSBmcm9tIFwiLi9mb3JtYXREaXN0YW5jZVRvTm93U3RyaWN0L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZvcm1hdER1cmF0aW9uIH0gZnJvbSBcIi4vZm9ybWF0RHVyYXRpb24vaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZm9ybWF0SVNPIH0gZnJvbSBcIi4vZm9ybWF0SVNPL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZvcm1hdElTTzkwNzUgfSBmcm9tIFwiLi9mb3JtYXRJU085MDc1L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZvcm1hdElTT0R1cmF0aW9uIH0gZnJvbSBcIi4vZm9ybWF0SVNPRHVyYXRpb24vaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZm9ybWF0UkZDMzMzOSB9IGZyb20gXCIuL2Zvcm1hdFJGQzMzMzkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZm9ybWF0UkZDNzIzMSB9IGZyb20gXCIuL2Zvcm1hdFJGQzcyMzEvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZm9ybWF0UmVsYXRpdmUgfSBmcm9tIFwiLi9mb3JtYXRSZWxhdGl2ZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmcm9tVW5peFRpbWUgfSBmcm9tIFwiLi9mcm9tVW5peFRpbWUvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0RGF0ZSB9IGZyb20gXCIuL2dldERhdGUvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0RGF5IH0gZnJvbSBcIi4vZ2V0RGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldERheU9mWWVhciB9IGZyb20gXCIuL2dldERheU9mWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXREYXlzSW5Nb250aCB9IGZyb20gXCIuL2dldERheXNJbk1vbnRoL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldERheXNJblllYXIgfSBmcm9tIFwiLi9nZXREYXlzSW5ZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldERlY2FkZSB9IGZyb20gXCIuL2dldERlY2FkZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuL2dldERlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldEhvdXJzIH0gZnJvbSBcIi4vZ2V0SG91cnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0SVNPRGF5IH0gZnJvbSBcIi4vZ2V0SVNPRGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldElTT1dlZWsgfSBmcm9tIFwiLi9nZXRJU09XZWVrL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldElTT1dlZWtZZWFyIH0gZnJvbSBcIi4vZ2V0SVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0SVNPV2Vla3NJblllYXIgfSBmcm9tIFwiLi9nZXRJU09XZWVrc0luWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRNaWxsaXNlY29uZHMgfSBmcm9tIFwiLi9nZXRNaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0TWludXRlcyB9IGZyb20gXCIuL2dldE1pbnV0ZXMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0TW9udGggfSBmcm9tIFwiLi9nZXRNb250aC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRPdmVybGFwcGluZ0RheXNJbkludGVydmFscyB9IGZyb20gXCIuL2dldE92ZXJsYXBwaW5nRGF5c0luSW50ZXJ2YWxzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldFF1YXJ0ZXIgfSBmcm9tIFwiLi9nZXRRdWFydGVyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldFNlY29uZHMgfSBmcm9tIFwiLi9nZXRTZWNvbmRzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldFRpbWUgfSBmcm9tIFwiLi9nZXRUaW1lL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldFVuaXhUaW1lIH0gZnJvbSBcIi4vZ2V0VW5peFRpbWUvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0V2VlayB9IGZyb20gXCIuL2dldFdlZWsvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0V2Vla09mTW9udGggfSBmcm9tIFwiLi9nZXRXZWVrT2ZNb250aC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRXZWVrWWVhciB9IGZyb20gXCIuL2dldFdlZWtZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldFdlZWtzSW5Nb250aCB9IGZyb20gXCIuL2dldFdlZWtzSW5Nb250aC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRZZWFyIH0gZnJvbSBcIi4vZ2V0WWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBob3Vyc1RvTWlsbGlzZWNvbmRzIH0gZnJvbSBcIi4vaG91cnNUb01pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBob3Vyc1RvTWludXRlcyB9IGZyb20gXCIuL2hvdXJzVG9NaW51dGVzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGhvdXJzVG9TZWNvbmRzIH0gZnJvbSBcIi4vaG91cnNUb1NlY29uZHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaW50ZXJ2YWxUb0R1cmF0aW9uIH0gZnJvbSBcIi4vaW50ZXJ2YWxUb0R1cmF0aW9uL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGludGxGb3JtYXQgfSBmcm9tIFwiLi9pbnRsRm9ybWF0L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGludGxGb3JtYXREaXN0YW5jZSB9IGZyb20gXCIuL2ludGxGb3JtYXREaXN0YW5jZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0FmdGVyIH0gZnJvbSBcIi4vaXNBZnRlci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0JlZm9yZSB9IGZyb20gXCIuL2lzQmVmb3JlL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzRGF0ZSB9IGZyb20gXCIuL2lzRGF0ZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0VxdWFsIH0gZnJvbSBcIi4vaXNFcXVhbC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0V4aXN0cyB9IGZyb20gXCIuL2lzRXhpc3RzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzRmlyc3REYXlPZk1vbnRoIH0gZnJvbSBcIi4vaXNGaXJzdERheU9mTW9udGgvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNGcmlkYXkgfSBmcm9tIFwiLi9pc0ZyaWRheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0Z1dHVyZSB9IGZyb20gXCIuL2lzRnV0dXJlL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzTGFzdERheU9mTW9udGggfSBmcm9tIFwiLi9pc0xhc3REYXlPZk1vbnRoL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzTGVhcFllYXIgfSBmcm9tIFwiLi9pc0xlYXBZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzTWF0Y2ggfSBmcm9tIFwiLi9pc01hdGNoL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzTW9uZGF5IH0gZnJvbSBcIi4vaXNNb25kYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNQYXN0IH0gZnJvbSBcIi4vaXNQYXN0L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzU2FtZURheSB9IGZyb20gXCIuL2lzU2FtZURheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1NhbWVIb3VyIH0gZnJvbSBcIi4vaXNTYW1lSG91ci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1NhbWVJU09XZWVrIH0gZnJvbSBcIi4vaXNTYW1lSVNPV2Vlay9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1NhbWVJU09XZWVrWWVhciB9IGZyb20gXCIuL2lzU2FtZUlTT1dlZWtZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzU2FtZU1pbnV0ZSB9IGZyb20gXCIuL2lzU2FtZU1pbnV0ZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1NhbWVNb250aCB9IGZyb20gXCIuL2lzU2FtZU1vbnRoL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzU2FtZVF1YXJ0ZXIgfSBmcm9tIFwiLi9pc1NhbWVRdWFydGVyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzU2FtZVNlY29uZCB9IGZyb20gXCIuL2lzU2FtZVNlY29uZC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1NhbWVXZWVrIH0gZnJvbSBcIi4vaXNTYW1lV2Vlay9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1NhbWVZZWFyIH0gZnJvbSBcIi4vaXNTYW1lWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1NhdHVyZGF5IH0gZnJvbSBcIi4vaXNTYXR1cmRheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1N1bmRheSB9IGZyb20gXCIuL2lzU3VuZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzVGhpc0hvdXIgfSBmcm9tIFwiLi9pc1RoaXNIb3VyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzVGhpc0lTT1dlZWsgfSBmcm9tIFwiLi9pc1RoaXNJU09XZWVrL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzVGhpc01pbnV0ZSB9IGZyb20gXCIuL2lzVGhpc01pbnV0ZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1RoaXNNb250aCB9IGZyb20gXCIuL2lzVGhpc01vbnRoL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzVGhpc1F1YXJ0ZXIgfSBmcm9tIFwiLi9pc1RoaXNRdWFydGVyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzVGhpc1NlY29uZCB9IGZyb20gXCIuL2lzVGhpc1NlY29uZC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1RoaXNXZWVrIH0gZnJvbSBcIi4vaXNUaGlzV2Vlay9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1RoaXNZZWFyIH0gZnJvbSBcIi4vaXNUaGlzWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1RodXJzZGF5IH0gZnJvbSBcIi4vaXNUaHVyc2RheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1RvZGF5IH0gZnJvbSBcIi4vaXNUb2RheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1RvbW9ycm93IH0gZnJvbSBcIi4vaXNUb21vcnJvdy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1R1ZXNkYXkgfSBmcm9tIFwiLi9pc1R1ZXNkYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNWYWxpZCB9IGZyb20gXCIuL2lzVmFsaWQvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNXZWRuZXNkYXkgfSBmcm9tIFwiLi9pc1dlZG5lc2RheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1dlZWtlbmQgfSBmcm9tIFwiLi9pc1dlZWtlbmQvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNXaXRoaW5JbnRlcnZhbCB9IGZyb20gXCIuL2lzV2l0aGluSW50ZXJ2YWwvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNZZXN0ZXJkYXkgfSBmcm9tIFwiLi9pc1llc3RlcmRheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBsYXN0RGF5T2ZEZWNhZGUgfSBmcm9tIFwiLi9sYXN0RGF5T2ZEZWNhZGUvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbGFzdERheU9mSVNPV2VlayB9IGZyb20gXCIuL2xhc3REYXlPZklTT1dlZWsvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbGFzdERheU9mSVNPV2Vla1llYXIgfSBmcm9tIFwiLi9sYXN0RGF5T2ZJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBsYXN0RGF5T2ZNb250aCB9IGZyb20gXCIuL2xhc3REYXlPZk1vbnRoL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGxhc3REYXlPZlF1YXJ0ZXIgfSBmcm9tIFwiLi9sYXN0RGF5T2ZRdWFydGVyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGxhc3REYXlPZldlZWsgfSBmcm9tIFwiLi9sYXN0RGF5T2ZXZWVrL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGxhc3REYXlPZlllYXIgfSBmcm9tIFwiLi9sYXN0RGF5T2ZZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGxpZ2h0Rm9ybWF0IH0gZnJvbSBcIi4vbGlnaHRGb3JtYXQvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbWF4IH0gZnJvbSBcIi4vbWF4L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1pbGxpc2Vjb25kcyB9IGZyb20gXCIuL21pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtaWxsaXNlY29uZHNUb0hvdXJzIH0gZnJvbSBcIi4vbWlsbGlzZWNvbmRzVG9Ib3Vycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtaWxsaXNlY29uZHNUb01pbnV0ZXMgfSBmcm9tIFwiLi9taWxsaXNlY29uZHNUb01pbnV0ZXMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbWlsbGlzZWNvbmRzVG9TZWNvbmRzIH0gZnJvbSBcIi4vbWlsbGlzZWNvbmRzVG9TZWNvbmRzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1pbiB9IGZyb20gXCIuL21pbi9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtaW51dGVzVG9Ib3VycyB9IGZyb20gXCIuL21pbnV0ZXNUb0hvdXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1pbnV0ZXNUb01pbGxpc2Vjb25kcyB9IGZyb20gXCIuL21pbnV0ZXNUb01pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtaW51dGVzVG9TZWNvbmRzIH0gZnJvbSBcIi4vbWludXRlc1RvU2Vjb25kcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtb250aHNUb1F1YXJ0ZXJzIH0gZnJvbSBcIi4vbW9udGhzVG9RdWFydGVycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtb250aHNUb1llYXJzIH0gZnJvbSBcIi4vbW9udGhzVG9ZZWFycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBuZXh0RGF5IH0gZnJvbSBcIi4vbmV4dERheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBuZXh0RnJpZGF5IH0gZnJvbSBcIi4vbmV4dEZyaWRheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBuZXh0TW9uZGF5IH0gZnJvbSBcIi4vbmV4dE1vbmRheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBuZXh0U2F0dXJkYXkgfSBmcm9tIFwiLi9uZXh0U2F0dXJkYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbmV4dFN1bmRheSB9IGZyb20gXCIuL25leHRTdW5kYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbmV4dFRodXJzZGF5IH0gZnJvbSBcIi4vbmV4dFRodXJzZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG5leHRUdWVzZGF5IH0gZnJvbSBcIi4vbmV4dFR1ZXNkYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbmV4dFdlZG5lc2RheSB9IGZyb20gXCIuL25leHRXZWRuZXNkYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcGFyc2UgfSBmcm9tIFwiLi9wYXJzZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwYXJzZUlTTyB9IGZyb20gXCIuL3BhcnNlSVNPL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHBhcnNlSlNPTiB9IGZyb20gXCIuL3BhcnNlSlNPTi9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwcmV2aW91c0RheSB9IGZyb20gXCIuL3ByZXZpb3VzRGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByZXZpb3VzRnJpZGF5IH0gZnJvbSBcIi4vcHJldmlvdXNGcmlkYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcHJldmlvdXNNb25kYXkgfSBmcm9tIFwiLi9wcmV2aW91c01vbmRheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwcmV2aW91c1NhdHVyZGF5IH0gZnJvbSBcIi4vcHJldmlvdXNTYXR1cmRheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwcmV2aW91c1N1bmRheSB9IGZyb20gXCIuL3ByZXZpb3VzU3VuZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByZXZpb3VzVGh1cnNkYXkgfSBmcm9tIFwiLi9wcmV2aW91c1RodXJzZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByZXZpb3VzVHVlc2RheSB9IGZyb20gXCIuL3ByZXZpb3VzVHVlc2RheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwcmV2aW91c1dlZG5lc2RheSB9IGZyb20gXCIuL3ByZXZpb3VzV2VkbmVzZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHF1YXJ0ZXJzVG9Nb250aHMgfSBmcm9tIFwiLi9xdWFydGVyc1RvTW9udGhzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHF1YXJ0ZXJzVG9ZZWFycyB9IGZyb20gXCIuL3F1YXJ0ZXJzVG9ZZWFycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByb3VuZFRvTmVhcmVzdE1pbnV0ZXMgfSBmcm9tIFwiLi9yb3VuZFRvTmVhcmVzdE1pbnV0ZXMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2Vjb25kc1RvSG91cnMgfSBmcm9tIFwiLi9zZWNvbmRzVG9Ib3Vycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZWNvbmRzVG9NaWxsaXNlY29uZHMgfSBmcm9tIFwiLi9zZWNvbmRzVG9NaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2Vjb25kc1RvTWludXRlcyB9IGZyb20gXCIuL3NlY29uZHNUb01pbnV0ZXMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2V0IH0gZnJvbSBcIi4vc2V0L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldERhdGUgfSBmcm9tIFwiLi9zZXREYXRlL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldERheSB9IGZyb20gXCIuL3NldERheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXREYXlPZlllYXIgfSBmcm9tIFwiLi9zZXREYXlPZlllYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi9zZXREZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXRIb3VycyB9IGZyb20gXCIuL3NldEhvdXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldElTT0RheSB9IGZyb20gXCIuL3NldElTT0RheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXRJU09XZWVrIH0gZnJvbSBcIi4vc2V0SVNPV2Vlay9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXRJU09XZWVrWWVhciB9IGZyb20gXCIuL3NldElTT1dlZWtZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldE1pbGxpc2Vjb25kcyB9IGZyb20gXCIuL3NldE1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXRNaW51dGVzIH0gZnJvbSBcIi4vc2V0TWludXRlcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXRNb250aCB9IGZyb20gXCIuL3NldE1vbnRoL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldFF1YXJ0ZXIgfSBmcm9tIFwiLi9zZXRRdWFydGVyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldFNlY29uZHMgfSBmcm9tIFwiLi9zZXRTZWNvbmRzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldFdlZWsgfSBmcm9tIFwiLi9zZXRXZWVrL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldFdlZWtZZWFyIH0gZnJvbSBcIi4vc2V0V2Vla1llYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2V0WWVhciB9IGZyb20gXCIuL3NldFllYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3RhcnRPZkRheSB9IGZyb20gXCIuL3N0YXJ0T2ZEYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3RhcnRPZkRlY2FkZSB9IGZyb20gXCIuL3N0YXJ0T2ZEZWNhZGUvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3RhcnRPZkhvdXIgfSBmcm9tIFwiLi9zdGFydE9mSG91ci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGFydE9mSVNPV2VlayB9IGZyb20gXCIuL3N0YXJ0T2ZJU09XZWVrL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN0YXJ0T2ZJU09XZWVrWWVhciB9IGZyb20gXCIuL3N0YXJ0T2ZJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGFydE9mTWludXRlIH0gZnJvbSBcIi4vc3RhcnRPZk1pbnV0ZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGFydE9mTW9udGggfSBmcm9tIFwiLi9zdGFydE9mTW9udGgvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3RhcnRPZlF1YXJ0ZXIgfSBmcm9tIFwiLi9zdGFydE9mUXVhcnRlci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGFydE9mU2Vjb25kIH0gZnJvbSBcIi4vc3RhcnRPZlNlY29uZC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGFydE9mVG9kYXkgfSBmcm9tIFwiLi9zdGFydE9mVG9kYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3RhcnRPZlRvbW9ycm93IH0gZnJvbSBcIi4vc3RhcnRPZlRvbW9ycm93L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN0YXJ0T2ZXZWVrIH0gZnJvbSBcIi4vc3RhcnRPZldlZWsvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3RhcnRPZldlZWtZZWFyIH0gZnJvbSBcIi4vc3RhcnRPZldlZWtZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN0YXJ0T2ZZZWFyIH0gZnJvbSBcIi4vc3RhcnRPZlllYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3RhcnRPZlllc3RlcmRheSB9IGZyb20gXCIuL3N0YXJ0T2ZZZXN0ZXJkYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3ViIH0gZnJvbSBcIi4vc3ViL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN1YkJ1c2luZXNzRGF5cyB9IGZyb20gXCIuL3N1YkJ1c2luZXNzRGF5cy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdWJEYXlzIH0gZnJvbSBcIi4vc3ViRGF5cy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdWJIb3VycyB9IGZyb20gXCIuL3N1YkhvdXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN1YklTT1dlZWtZZWFycyB9IGZyb20gXCIuL3N1YklTT1dlZWtZZWFycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdWJNaWxsaXNlY29uZHMgfSBmcm9tIFwiLi9zdWJNaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3ViTWludXRlcyB9IGZyb20gXCIuL3N1Yk1pbnV0ZXMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3ViTW9udGhzIH0gZnJvbSBcIi4vc3ViTW9udGhzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN1YlF1YXJ0ZXJzIH0gZnJvbSBcIi4vc3ViUXVhcnRlcnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3ViU2Vjb25kcyB9IGZyb20gXCIuL3N1YlNlY29uZHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3ViV2Vla3MgfSBmcm9tIFwiLi9zdWJXZWVrcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdWJZZWFycyB9IGZyb20gXCIuL3N1YlllYXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB3ZWVrc1RvRGF5cyB9IGZyb20gXCIuL3dlZWtzVG9EYXlzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHllYXJzVG9Nb250aHMgfSBmcm9tIFwiLi95ZWFyc1RvTW9udGhzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHllYXJzVG9RdWFydGVycyB9IGZyb20gXCIuL3llYXJzVG9RdWFydGVycy9pbmRleC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzL2luZGV4LmpzXCI7IiwiaW1wb3J0IGNvbXBhcmVBc2MgZnJvbSBcIi4uL2NvbXBhcmVBc2MvaW5kZXguanNcIjtcbmltcG9ydCBhZGQgZnJvbSBcIi4uL2FkZC9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbkRheXMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkRheXMvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5Ib3VycyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluSG91cnMvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5NaW51dGVzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5NaW51dGVzL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluTW9udGhzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5Nb250aHMvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5TZWNvbmRzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5TZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluWWVhcnMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJblllYXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGludGVydmFsVG9EdXJhdGlvblxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IGludGVydmFsIHRvIGR1cmF0aW9uXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgaW50ZXJ2YWwgb2JqZWN0IHRvIGEgZHVyYXRpb24gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7SW50ZXJ2YWx9IGludGVydmFsIC0gdGhlIGludGVydmFsIHRvIGNvbnZlcnQgdG8gZHVyYXRpb25cbiAqXG4gKiBAcmV0dXJucyB7RHVyYXRpb259IFRoZSBkdXJhdGlvbiBPYmplY3RcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gUmVxdWlyZXMgMiBhcmd1bWVudHNcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBzdGFydGAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgZW5kYCBtdXN0IG5vdCBiZSBJbnZhbGlkIERhdGVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gR2V0IHRoZSBkdXJhdGlvbiBiZXR3ZWVuIEphbnVhcnkgMTUsIDE5MjkgYW5kIEFwcmlsIDQsIDE5NjguXG4gKiBpbnRlcnZhbFRvRHVyYXRpb24oe1xuICogICBzdGFydDogbmV3IERhdGUoMTkyOSwgMCwgMTUsIDEyLCAwLCAwKSxcbiAqICAgZW5kOiBuZXcgRGF0ZSgxOTY4LCAzLCA0LCAxOSwgNSwgMClcbiAqIH0pXG4gKiAvLyA9PiB7IHllYXJzOiAzOSwgbW9udGhzOiAyLCBkYXlzOiAyMCwgaG91cnM6IDcsIG1pbnV0ZXM6IDUsIHNlY29uZHM6IDAgfVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbnRlcnZhbFRvRHVyYXRpb24oaW50ZXJ2YWwpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBzdGFydCA9IHRvRGF0ZShpbnRlcnZhbC5zdGFydCk7XG4gIHZhciBlbmQgPSB0b0RhdGUoaW50ZXJ2YWwuZW5kKTtcbiAgaWYgKGlzTmFOKHN0YXJ0LmdldFRpbWUoKSkpIHRocm93IG5ldyBSYW5nZUVycm9yKCdTdGFydCBEYXRlIGlzIGludmFsaWQnKTtcbiAgaWYgKGlzTmFOKGVuZC5nZXRUaW1lKCkpKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignRW5kIERhdGUgaXMgaW52YWxpZCcpO1xuICB2YXIgZHVyYXRpb24gPSB7fTtcbiAgZHVyYXRpb24ueWVhcnMgPSBNYXRoLmFicyhkaWZmZXJlbmNlSW5ZZWFycyhlbmQsIHN0YXJ0KSk7XG4gIHZhciBzaWduID0gY29tcGFyZUFzYyhlbmQsIHN0YXJ0KTtcbiAgdmFyIHJlbWFpbmluZ01vbnRocyA9IGFkZChzdGFydCwge1xuICAgIHllYXJzOiBzaWduICogZHVyYXRpb24ueWVhcnNcbiAgfSk7XG4gIGR1cmF0aW9uLm1vbnRocyA9IE1hdGguYWJzKGRpZmZlcmVuY2VJbk1vbnRocyhlbmQsIHJlbWFpbmluZ01vbnRocykpO1xuICB2YXIgcmVtYWluaW5nRGF5cyA9IGFkZChyZW1haW5pbmdNb250aHMsIHtcbiAgICBtb250aHM6IHNpZ24gKiBkdXJhdGlvbi5tb250aHNcbiAgfSk7XG4gIGR1cmF0aW9uLmRheXMgPSBNYXRoLmFicyhkaWZmZXJlbmNlSW5EYXlzKGVuZCwgcmVtYWluaW5nRGF5cykpO1xuICB2YXIgcmVtYWluaW5nSG91cnMgPSBhZGQocmVtYWluaW5nRGF5cywge1xuICAgIGRheXM6IHNpZ24gKiBkdXJhdGlvbi5kYXlzXG4gIH0pO1xuICBkdXJhdGlvbi5ob3VycyA9IE1hdGguYWJzKGRpZmZlcmVuY2VJbkhvdXJzKGVuZCwgcmVtYWluaW5nSG91cnMpKTtcbiAgdmFyIHJlbWFpbmluZ01pbnV0ZXMgPSBhZGQocmVtYWluaW5nSG91cnMsIHtcbiAgICBob3Vyczogc2lnbiAqIGR1cmF0aW9uLmhvdXJzXG4gIH0pO1xuICBkdXJhdGlvbi5taW51dGVzID0gTWF0aC5hYnMoZGlmZmVyZW5jZUluTWludXRlcyhlbmQsIHJlbWFpbmluZ01pbnV0ZXMpKTtcbiAgdmFyIHJlbWFpbmluZ1NlY29uZHMgPSBhZGQocmVtYWluaW5nTWludXRlcywge1xuICAgIG1pbnV0ZXM6IHNpZ24gKiBkdXJhdGlvbi5taW51dGVzXG4gIH0pO1xuICBkdXJhdGlvbi5zZWNvbmRzID0gTWF0aC5hYnMoZGlmZmVyZW5jZUluU2Vjb25kcyhlbmQsIHJlbWFpbmluZ1NlY29uZHMpKTtcbiAgcmV0dXJuIGR1cmF0aW9uO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGludGxGb3JtYXRcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgIEZvcm1hdCB0aGUgZGF0ZSB3aXRoIEludGwuRGF0ZVRpbWVGb3JtYXQgKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0ludGwvRGF0ZVRpbWVGb3JtYXQpLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcgaW4gdGhlIGdpdmVuIGZvcm1hdC5cbiAqIFRoZSBtZXRob2QgdXNlcyBbYEludGwuRGF0ZVRpbWVGb3JtYXRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9JbnRsL0RhdGVUaW1lRm9ybWF0KSBpbnNpZGUuXG4gKiBmb3JtYXRPcHRpb25zIGFyZSB0aGUgc2FtZSBhcyBbYEludGwuRGF0ZVRpbWVGb3JtYXRgIG9wdGlvbnNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0ludGwvRGF0ZVRpbWVGb3JtYXQjdXNpbmdfb3B0aW9ucylcbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IGJlZm9yZSBOb2RlIHZlcnNpb24gMTMuMC4wLCBvbmx5IHRoZSBsb2NhbGUgZGF0YSBmb3IgZW4tVVMgaXMgYXZhaWxhYmxlIGJ5IGRlZmF1bHQuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gYXJndW1lbnQgLSB0aGUgb3JpZ2luYWwgZGF0ZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbZm9ybWF0T3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHsnbG9va3VwJ3wnYmVzdCBmaXQnfSBbZm9ybWF0T3B0aW9ucy5sb2NhbGVNYXRjaGVyPSdiZXN0IGZpdCddIC0gbG9jYWxlIHNlbGVjdGlvbiBhbGdvcml0aG0uXG4gKiBAcGFyYW0geyduYXJyb3cnfCdzaG9ydCd8J2xvbmcnfSBbZm9ybWF0T3B0aW9ucy53ZWVrZGF5XSAtIHJlcHJlc2VudGF0aW9uIHRoZSBkYXlzIG9mIHRoZSB3ZWVrLlxuICogQHBhcmFtIHsnbmFycm93J3wnc2hvcnQnfCdsb25nJ30gW2Zvcm1hdE9wdGlvbnMuZXJhXSAtIHJlcHJlc2VudGF0aW9uIG9mIGVyYXMuXG4gKiBAcGFyYW0geydudW1lcmljJ3wnMi1kaWdpdCd9IFtmb3JtYXRPcHRpb25zLnllYXJdIC0gcmVwcmVzZW50YXRpb24gb2YgeWVhcnMuXG4gKiBAcGFyYW0geydudW1lcmljJ3wnMi1kaWdpdCd8J25hcnJvdyd8J3Nob3J0J3wnbG9uZyd9IFtmb3JtYXRPcHRpb25zLm1vbnRoPSdudW1lcmljJ10gLSByZXByZXNlbnRhdGlvbiBvZiBtb250aC5cbiAqIEBwYXJhbSB7J251bWVyaWMnfCcyLWRpZ2l0J30gW2Zvcm1hdE9wdGlvbnMuZGF5PSdudW1lcmljJ10gLSByZXByZXNlbnRhdGlvbiBvZiBkYXkuXG4gKiBAcGFyYW0geydudW1lcmljJ3wnMi1kaWdpdCd9IFtmb3JtYXRPcHRpb25zLmhvdXI9J251bWVyaWMnXSAtIHJlcHJlc2VudGF0aW9uIG9mIGhvdXJzLlxuICogQHBhcmFtIHsnbnVtZXJpYyd8JzItZGlnaXQnfSBbZm9ybWF0T3B0aW9ucy5taW51dGVdIC0gcmVwcmVzZW50YXRpb24gb2YgbWludXRlcy5cbiAqIEBwYXJhbSB7J251bWVyaWMnfCcyLWRpZ2l0J30gW2Zvcm1hdE9wdGlvbnMuc2Vjb25kXSAtIHJlcHJlc2VudGF0aW9uIG9mIHNlY29uZHMuXG4gKiBAcGFyYW0geydzaG9ydCd8J2xvbmcnfSBbZm9ybWF0T3B0aW9ucy50aW1lWm9uZU5hbWVdIC0gcmVwcmVzZW50YXRpb24gb2YgbmFtZXMgb2YgdGltZSB6b25lcy5cbiAqIEBwYXJhbSB7J2Jhc2ljJ3wnYmVzdCBmaXQnfSBbZm9ybWF0T3B0aW9ucy5mb3JtYXRNYXRjaGVyPSdiZXN0IGZpdCddIC0gZm9ybWF0IHNlbGVjdGlvbiBhbGdvcml0aG0uXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtmb3JtYXRPcHRpb25zLmhvdXIxMl0gLSBkZXRlcm1pbmVzIHdoZXRoZXIgdG8gdXNlIDEyLWhvdXIgdGltZSBmb3JtYXQuXG4gKiBAcGFyYW0ge1N0cmluZ30gW2Zvcm1hdE9wdGlvbnMudGltZVpvbmVdIC0gdGhlIHRpbWUgem9uZSB0byB1c2UuXG4gKiBAcGFyYW0ge09iamVjdH0gW2xvY2FsZU9wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggbG9jYWxlLlxuICogQHBhcmFtIHtTdHJpbmd8U3RyaW5nW119IFtsb2NhbGVPcHRpb25zLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGVcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcuXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWQuXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgZGF0ZWAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxMCBPY3RvYmVyIDIwMTkgaW4gR2VybWFuLlxuICogLy8gQ29udmVydCB0aGUgZGF0ZSB3aXRoIGZvcm1hdCdzIG9wdGlvbnMgYW5kIGxvY2FsZSdzIG9wdGlvbnMuXG4gKiBjb25zdCByZXN1bHQgPSBpbnRsRm9ybWF0KG5ldyBEYXRlKDIwMTksIDksIDQsIDEyLCAzMCwgMTMsIDQ1NiksIHtcbiAqICAgICAgd2Vla2RheTogJ2xvbmcnLFxuICogICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gKiAgICAgIG1vbnRoOiAnbG9uZycsXG4gKiAgICAgIGRheTogJ251bWVyaWMnLFxuICogICAgfSwge1xuICogICAgICBsb2NhbGU6ICdkZS1ERScsXG4gKiAgfSlcbiAqIC8vPT4gRnJlaXRhZywgNC4gT2t0b2JlciAyMDE5XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxMCBPY3RvYmVyIDIwMTkuXG4gKiAvLyBDb252ZXJ0IHRoZSBkYXRlIHdpdGggZm9ybWF0J3Mgb3B0aW9ucy5cbiAqIGNvbnN0IHJlc3VsdCA9IGludGxGb3JtYXQuZGVmYXVsdChuZXcgRGF0ZSgyMDE5LCA5LCA0LCAxMiwgMzAsIDEzLCA0NTYpLCB7XG4gKiAgICAgIHllYXI6ICdudW1lcmljJyxcbiAqICAgICAgbW9udGg6ICdudW1lcmljJyxcbiAqICAgICAgZGF5OiAnbnVtZXJpYycsXG4gKiAgICAgIGhvdXI6ICdudW1lcmljJyxcbiAqICB9KVxuICogLy89PiAxMC80LzIwMTksIDEyIFBNXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxMCBPY3RvYmVyIDIwMTkgaW4gS29yZWFuLlxuICogLy8gQ29udmVydCB0aGUgZGF0ZSB3aXRoIGxvY2FsZSdzIG9wdGlvbnMuXG4gKiBjb25zdCByZXN1bHQgPSBpbnRsRm9ybWF0KG5ldyBEYXRlKDIwMTksIDksIDQsIDEyLCAzMCwgMTMsIDQ1NiksIHtcbiAqICAgICAgbG9jYWxlOiAna28tS1InLFxuICogIH0pXG4gKiAvLz0+IDIwMTkuIDEwLiA0LlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTAgT2N0b2JlciAyMDE5IGluIG1pZGRsZS1lbmRpYW4gZm9ybWF0OlxuICogY29uc3QgcmVzdWx0ID0gaW50bEZvcm1hdChuZXcgRGF0ZSgyMDE5LCA5LCA0LCAxMiwgMzAsIDEzLCA0NTYpKVxuICogLy89PiAxMC80LzIwMTlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW50bEZvcm1hdChkYXRlLCBmb3JtYXRPckxvY2FsZSwgbG9jYWxlT3B0aW9ucykge1xuICB2YXIgX2xvY2FsZU9wdGlvbnM7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZm9ybWF0T3B0aW9ucztcbiAgaWYgKGlzRm9ybWF0T3B0aW9ucyhmb3JtYXRPckxvY2FsZSkpIHtcbiAgICBmb3JtYXRPcHRpb25zID0gZm9ybWF0T3JMb2NhbGU7XG4gIH0gZWxzZSB7XG4gICAgbG9jYWxlT3B0aW9ucyA9IGZvcm1hdE9yTG9jYWxlO1xuICB9XG4gIHJldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgoX2xvY2FsZU9wdGlvbnMgPSBsb2NhbGVPcHRpb25zKSA9PT0gbnVsbCB8fCBfbG9jYWxlT3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2xvY2FsZU9wdGlvbnMubG9jYWxlLCBmb3JtYXRPcHRpb25zKS5mb3JtYXQoZGF0ZSk7XG59XG5mdW5jdGlvbiBpc0Zvcm1hdE9wdGlvbnMob3B0cykge1xuICByZXR1cm4gb3B0cyAhPT0gdW5kZWZpbmVkICYmICEoJ2xvY2FsZScgaW4gb3B0cyk7XG59IiwiaW1wb3J0IHsgc2Vjb25kc0luRGF5LCBzZWNvbmRzSW5Ib3VyLCBzZWNvbmRzSW5NaW51dGUsIHNlY29uZHNJbk1vbnRoLCBzZWNvbmRzSW5RdWFydGVyLCBzZWNvbmRzSW5XZWVrLCBzZWNvbmRzSW5ZZWFyIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkNhbGVuZGFyTW9udGhzL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluQ2FsZW5kYXJRdWFydGVycyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJRdWFydGVycy9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbkNhbGVuZGFyV2Vla3MgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkNhbGVuZGFyV2Vla3MvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluSG91cnMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkhvdXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluTWludXRlcyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluTWludXRlcy9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJblNlY29uZHMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJblNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaW50bEZvcm1hdERpc3RhbmNlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEZvcm1hdHMgZGlzdGFuY2UgYmV0d2VlbiB0d28gZGF0ZXMgaW4gYSBodW1hbi1yZWFkYWJsZSBmb3JtYXRcbiAqIEBkZXNjcmlwdGlvblxuICogVGhlIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gZGF0ZXMgYW5kIGZvcm1hdHMgaXQgYXMgYSBodW1hbi1yZWFkYWJsZSBzdHJpbmcuXG4gKlxuICogVGhlIGZ1bmN0aW9uIHdpbGwgcGljayB0aGUgbW9zdCBhcHByb3ByaWF0ZSB1bml0IGRlcGVuZGluZyBvbiB0aGUgZGlzdGFuY2UgYmV0d2VlbiBkYXRlcy4gRm9yIGV4YW1wbGUsIGlmIHRoZSBkaXN0YW5jZSBpcyBhIGZldyBob3VycywgaXQgbWlnaHQgcmV0dXJuIGB4IGhvdXJzYC4gSWYgdGhlIGRpc3RhbmNlIGlzIGEgZmV3IG1vbnRocywgaXQgbWlnaHQgcmV0dXJuIGB4IG1vbnRoc2AuXG4gKlxuICogWW91IGNhbiBhbHNvIHNwZWNpZnkgYSB1bml0IHRvIGZvcmNlIHVzaW5nIGl0IHJlZ2FyZGxlc3Mgb2YgdGhlIGRpc3RhbmNlIHRvIGdldCBhIHJlc3VsdCBsaWtlIGAxMjM0NTYgaG91cnNgLlxuICpcbiAqIFNlZSB0aGUgdGFibGUgYmVsb3cgZm9yIHRoZSB1bml0IHBpY2tpbmcgbG9naWM6XG4gKlxuICogfCBEaXN0YW5jZSBiZXR3ZWVuIGRhdGVzIHwgUmVzdWx0IChwYXN0KSAgfCBSZXN1bHQgKGZ1dHVyZSkgfFxuICogfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0gfFxuICogfCAwIHNlY29uZHMgICAgICAgICAgICAgIHwgbm93ICAgICAgICAgICAgfCBub3cgICAgICAgICAgICAgfFxuICogfCAxLTU5IHNlY29uZHMgICAgICAgICAgIHwgWCBzZWNvbmRzIGFnbyAgfCBpbiBYIHNlY29uZHMgICAgfFxuICogfCAxLTU5IG1pbnV0ZXMgICAgICAgICAgIHwgWCBtaW51dGVzIGFnbyAgfCBpbiBYIG1pbnV0ZXMgICAgfFxuICogfCAxLTIzIGhvdXJzICAgICAgICAgICAgIHwgWCBob3VycyBhZ28gICAgfCBpbiBYIGhvdXJzICAgICAgfFxuICogfCAxIGRheSAgICAgICAgICAgICAgICAgIHwgeWVzdGVyZGF5ICAgICAgfCB0b21vcnJvdyAgICAgICAgfFxuICogfCAyLTYgZGF5cyAgICAgICAgICAgICAgIHwgWCBkYXlzIGFnbyAgICAgfCBpbiBYIGRheXMgICAgICAgfFxuICogfCA3IGRheXMgICAgICAgICAgICAgICAgIHwgbGFzdCB3ZWVrICAgICAgfCBuZXh0IHdlZWsgICAgICAgfFxuICogfCA4IGRheXMtMSBtb250aCAgICAgICAgIHwgWCB3ZWVrcyBhZ28gICAgfCBpbiBYIHdlZWtzICAgICAgfFxuICogfCAxIG1vbnRoICAgICAgICAgICAgICAgIHwgbGFzdCBtb250aCAgICAgfCBuZXh0IG1vbnRoICAgICAgfFxuICogfCAyLTMgbW9udGhzICAgICAgICAgICAgIHwgWCBtb250aHMgYWdvICAgfCBpbiBYIG1vbnRocyAgICAgfFxuICogfCAxIHF1YXJ0ZXIgICAgICAgICAgICAgIHwgbGFzdCBxdWFydGVyICAgfCBuZXh0IHF1YXJ0ZXIgICAgfFxuICogfCAyLTMgcXVhcnRlcnMgICAgICAgICAgIHwgWCBxdWFydGVycyBhZ28gfCBpbiBYIHF1YXJ0ZXJzICAgfFxuICogfCAxIHllYXIgICAgICAgICAgICAgICAgIHwgbGFzdCB5ZWFyICAgICAgfCBuZXh0IHllYXIgICAgICAgfFxuICogfCAyKyB5ZWFycyAgICAgICAgICAgICAgIHwgWCB5ZWFycyBhZ28gICAgfCBpbiBYIHllYXJzICAgICAgfFxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gYmFzZURhdGUgLSB0aGUgZGF0ZSB0byBjb21wYXJlIHdpdGguXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy51bml0XSAtIGZvcm1hdHMgdGhlIGRpc3RhbmNlIHdpdGggdGhlIGdpdmVuIHVuaXQgKCd5ZWFyJywgJ3F1YXJ0ZXInLCAnbW9udGgnLCAnd2VlaycsICdkYXknLCAnaG91cicsICdtaW51dGUnLCAnc2Vjb25kJykuXG4gKiBAcGFyYW0ge1N0cmluZ3xTdHJpbmdbXX0gW29wdGlvbnMubG9jYWxlXSAtIHRoZSBsb2NhbGUgdG8gdXNlLlxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRpb25zLmxvY2FsZU1hdGNoZXI9J2Jlc3QgZml0J10gLSB0aGUgbG9jYWxlIG1hdGNoaW5nIGFsZ29yaXRobSB0byB1c2UuIE90aGVyIHZhbHVlOiAnbG9va3VwJy5cbiAqIFNlZSBNRE4gZm9yIGRldGFpbHMgW0xvY2FsZSBpZGVudGlmaWNhdGlvbiBhbmQgbmVnb3RpYXRpb25dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0ludGwjbG9jYWxlX2lkZW50aWZpY2F0aW9uX2FuZF9uZWdvdGlhdGlvbilcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5udW1lcmljPSdhdXRvJ10gLSB0aGUgb3V0cHV0IG1lc3NhZ2UgZm9ybWF0LiBUaGUgdmFsdWVzIGFyZSAnYXV0bycgKGUuZy4gYHllc3RlcmRheWApLCAnYWx3YXlzJyhlLmcuIGAxIGRheSBhZ29gKS5cbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5zdHlsZT0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0LiBUaGUgdmFsdWVzIGFyZTogJ2xvbmcnIChlLmcuIGAxIG1vbnRoYCksICdzaG9ydCcgKGUuZy4gJ2luIDEgbW8uJyksICduYXJyb3cnIChlLmcuICdpbiAxIG1vLicpLlxuICogVGhlIG5hcnJvdyBvbmUgY291bGQgYmUgc2ltaWxhciB0byB0aGUgc2hvcnQgb25lIGZvciBzb21lIGxvY2FsZXMuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgZGlzdGFuY2UgaW4gd29yZHMgYWNjb3JkaW5nIHRvIGxhbmd1YWdlLXNlbnNpdGl2ZSByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmcuXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgZGF0ZWAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgYmFzZURhdGVgIG11c3Qgbm90IGJlIEludmFsaWQgRGF0ZVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMudW5pdGAgbXVzdCBub3QgYmUgaW52YWxpZCBVbml0XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5sb2NhbGVgIG11c3Qgbm90IGJlIGludmFsaWQgbG9jYWxlXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5sb2NhbGVNYXRjaGVyYCBtdXN0IG5vdCBiZSBpbnZhbGlkIGxvY2FsZU1hdGNoZXJcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLm51bWVyaWNgIG11c3Qgbm90IGJlIGludmFsaWQgbnVtZXJpY1xuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuc3R5bGVgIG11c3Qgbm90IGJlIGludmFsaWQgc3R5bGVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hhdCBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgZGF0ZXMgd2hlbiB0aGUgZmlzdCBkYXRlIGlzIGFmdGVyIHRoZSBzZWNvbmQ/XG4gKiBpbnRsRm9ybWF0RGlzdGFuY2UoXG4gKiAgIG5ldyBEYXRlKDE5ODYsIDMsIDQsIDExLCAzMCwgMCksXG4gKiAgIG5ldyBEYXRlKDE5ODYsIDMsIDQsIDEwLCAzMCwgMClcbiAqIClcbiAqIC8vPT4gJ2luIDEgaG91cidcbiAqXG4gKiAvLyBXaGF0IGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBkYXRlcyB3aGVuIHRoZSBmaXN0IGRhdGUgaXMgYmVmb3JlIHRoZSBzZWNvbmQ/XG4gKiBpbnRsRm9ybWF0RGlzdGFuY2UoXG4gKiAgIG5ldyBEYXRlKDE5ODYsIDMsIDQsIDEwLCAzMCwgMCksXG4gKiAgIG5ldyBEYXRlKDE5ODYsIDMsIDQsIDExLCAzMCwgMClcbiAqIClcbiAqIC8vPT4gJzEgaG91ciBhZ28nXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFVzZSB0aGUgdW5pdCBvcHRpb24gdG8gZm9yY2UgdGhlIGZ1bmN0aW9uIHRvIG91dHB1dCB0aGUgcmVzdWx0IGluIHF1YXJ0ZXJzLiBXaXRob3V0IHNldHRpbmcgaXQsIHRoZSBleGFtcGxlIHdvdWxkIHJldHVybiBcIm5leHQgeWVhclwiXG4gKiBpbnRsRm9ybWF0RGlzdGFuY2UoXG4gKiAgIG5ldyBEYXRlKDE5ODcsIDYsIDQsIDEwLCAzMCwgMCksXG4gKiAgIG5ldyBEYXRlKDE5ODYsIDMsIDQsIDEwLCAzMCwgMCksXG4gKiAgIHsgdW5pdDogJ3F1YXJ0ZXInIH1cbiAqIClcbiAqIC8vPT4gJ2luIDUgcXVhcnRlcnMnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFVzZSB0aGUgbG9jYWxlIG9wdGlvbiB0byBnZXQgdGhlIHJlc3VsdCBpbiBTcGFuaXNoLiBXaXRob3V0IHNldHRpbmcgaXQsIHRoZSBleGFtcGxlIHdvdWxkIHJldHVybiBcImluIDEgaG91clwiLlxuICogaW50bEZvcm1hdERpc3RhbmNlKFxuICogICBuZXcgRGF0ZSgxOTg2LCAzLCA0LCAxMSwgMzAsIDApLFxuICogICBuZXcgRGF0ZSgxOTg2LCAzLCA0LCAxMCwgMzAsIDApLFxuICogICB7IGxvY2FsZTogJ2VzJyB9XG4gKiApXG4gKiAvLz0+ICdkZW50cm8gZGUgMSBob3JhJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBVc2UgdGhlIG51bWVyaWMgb3B0aW9uIHRvIGZvcmNlIHRoZSBmdW5jdGlvbiB0byB1c2UgbnVtZXJpYyB2YWx1ZXMuIFdpdGhvdXQgc2V0dGluZyBpdCwgdGhlIGV4YW1wbGUgd291bGQgcmV0dXJuIFwidG9tb3Jyb3dcIi5cbiAqIGludGxGb3JtYXREaXN0YW5jZShcbiAqICAgbmV3IERhdGUoMTk4NiwgMywgNSwgMTEsIDMwLCAwKSxcbiAqICAgbmV3IERhdGUoMTk4NiwgMywgNCwgMTEsIDMwLCAwKSxcbiAqICAgeyBudW1lcmljOiAnYWx3YXlzJyB9XG4gKiApXG4gKiAvLz0+ICdpbiAxIGRheSdcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVXNlIHRoZSBzdHlsZSBvcHRpb24gdG8gZm9yY2UgdGhlIGZ1bmN0aW9uIHRvIHVzZSBzaG9ydCB2YWx1ZXMuIFdpdGhvdXQgc2V0dGluZyBpdCwgdGhlIGV4YW1wbGUgd291bGQgcmV0dXJuIFwiaW4gMiB5ZWFyc1wiLlxuICogaW50bEZvcm1hdERpc3RhbmNlKFxuICogICBuZXcgRGF0ZSgxOTg4LCAzLCA0LCAxMSwgMzAsIDApLFxuICogICBuZXcgRGF0ZSgxOTg2LCAzLCA0LCAxMSwgMzAsIDApLFxuICogICB7IHN0eWxlOiAnc2hvcnQnIH1cbiAqIClcbiAqIC8vPT4gJ2luIDIgeXInXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGludGxGb3JtYXREaXN0YW5jZShkYXRlLCBiYXNlRGF0ZSwgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIHZhbHVlID0gMDtcbiAgdmFyIHVuaXQ7XG4gIHZhciBkYXRlTGVmdCA9IHRvRGF0ZShkYXRlKTtcbiAgdmFyIGRhdGVSaWdodCA9IHRvRGF0ZShiYXNlRGF0ZSk7XG4gIGlmICghKG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdm9pZCAwICYmIG9wdGlvbnMudW5pdCkpIHtcbiAgICAvLyBHZXQgdGhlIHVuaXQgYmFzZWQgb24gZGlmZkluU2Vjb25kcyBjYWxjdWxhdGlvbnMgaWYgbm8gdW5pdCBpcyBzcGVjaWZpZWRcbiAgICB2YXIgZGlmZkluU2Vjb25kcyA9IGRpZmZlcmVuY2VJblNlY29uZHMoZGF0ZUxlZnQsIGRhdGVSaWdodCk7IC8vIFRoZSBzbWFsbGVzdCB1bml0XG5cbiAgICBpZiAoTWF0aC5hYnMoZGlmZkluU2Vjb25kcykgPCBzZWNvbmRzSW5NaW51dGUpIHtcbiAgICAgIHZhbHVlID0gZGlmZmVyZW5jZUluU2Vjb25kcyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgICAgIHVuaXQgPSAnc2Vjb25kJztcbiAgICB9IGVsc2UgaWYgKE1hdGguYWJzKGRpZmZJblNlY29uZHMpIDwgc2Vjb25kc0luSG91cikge1xuICAgICAgdmFsdWUgPSBkaWZmZXJlbmNlSW5NaW51dGVzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICAgICAgdW5pdCA9ICdtaW51dGUnO1xuICAgIH0gZWxzZSBpZiAoTWF0aC5hYnMoZGlmZkluU2Vjb25kcykgPCBzZWNvbmRzSW5EYXkgJiYgTWF0aC5hYnMoZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpKSA8IDEpIHtcbiAgICAgIHZhbHVlID0gZGlmZmVyZW5jZUluSG91cnMoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gICAgICB1bml0ID0gJ2hvdXInO1xuICAgIH0gZWxzZSBpZiAoTWF0aC5hYnMoZGlmZkluU2Vjb25kcykgPCBzZWNvbmRzSW5XZWVrICYmICh2YWx1ZSA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSkgJiYgTWF0aC5hYnModmFsdWUpIDwgNykge1xuICAgICAgdW5pdCA9ICdkYXknO1xuICAgIH0gZWxzZSBpZiAoTWF0aC5hYnMoZGlmZkluU2Vjb25kcykgPCBzZWNvbmRzSW5Nb250aCkge1xuICAgICAgdmFsdWUgPSBkaWZmZXJlbmNlSW5DYWxlbmRhcldlZWtzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICAgICAgdW5pdCA9ICd3ZWVrJztcbiAgICB9IGVsc2UgaWYgKE1hdGguYWJzKGRpZmZJblNlY29uZHMpIDwgc2Vjb25kc0luUXVhcnRlcikge1xuICAgICAgdmFsdWUgPSBkaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgICAgIHVuaXQgPSAnbW9udGgnO1xuICAgIH0gZWxzZSBpZiAoTWF0aC5hYnMoZGlmZkluU2Vjb25kcykgPCBzZWNvbmRzSW5ZZWFyKSB7XG4gICAgICBpZiAoZGlmZmVyZW5jZUluQ2FsZW5kYXJRdWFydGVycyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSA8IDQpIHtcbiAgICAgICAgLy8gVG8gZmlsdGVyIG91dCBjYXNlcyB0aGF0IGFyZSBsZXNzIHRoYW4gYSB5ZWFyIGJ1dCBtYXRjaCA0IHF1YXJ0ZXJzXG4gICAgICAgIHZhbHVlID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJRdWFydGVycyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgICAgICAgdW5pdCA9ICdxdWFydGVyJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJZZWFycyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgICAgICAgdW5pdCA9ICd5ZWFyJztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBkaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICAgICAgdW5pdCA9ICd5ZWFyJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gR2V0IHRoZSB2YWx1ZSBpZiB1bml0IGlzIHNwZWNpZmllZFxuICAgIHVuaXQgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMudW5pdDtcbiAgICBpZiAodW5pdCA9PT0gJ3NlY29uZCcpIHtcbiAgICAgIHZhbHVlID0gZGlmZmVyZW5jZUluU2Vjb25kcyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgICB9IGVsc2UgaWYgKHVuaXQgPT09ICdtaW51dGUnKSB7XG4gICAgICB2YWx1ZSA9IGRpZmZlcmVuY2VJbk1pbnV0ZXMoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gICAgfSBlbHNlIGlmICh1bml0ID09PSAnaG91cicpIHtcbiAgICAgIHZhbHVlID0gZGlmZmVyZW5jZUluSG91cnMoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gICAgfSBlbHNlIGlmICh1bml0ID09PSAnZGF5Jykge1xuICAgICAgdmFsdWUgPSBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gICAgfSBlbHNlIGlmICh1bml0ID09PSAnd2VlaycpIHtcbiAgICAgIHZhbHVlID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJXZWVrcyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgICB9IGVsc2UgaWYgKHVuaXQgPT09ICdtb250aCcpIHtcbiAgICAgIHZhbHVlID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gICAgfSBlbHNlIGlmICh1bml0ID09PSAncXVhcnRlcicpIHtcbiAgICAgIHZhbHVlID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJRdWFydGVycyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgICB9IGVsc2UgaWYgKHVuaXQgPT09ICd5ZWFyJykge1xuICAgICAgdmFsdWUgPSBkaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICAgIH1cbiAgfVxuICB2YXIgcnRmID0gbmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5sb2NhbGUsIHtcbiAgICBsb2NhbGVNYXRjaGVyOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMubG9jYWxlTWF0Y2hlcixcbiAgICBudW1lcmljOiAob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLm51bWVyaWMpIHx8ICdhdXRvJyxcbiAgICBzdHlsZTogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnN0eWxlXG4gIH0pO1xuICByZXR1cm4gcnRmLmZvcm1hdCh2YWx1ZSwgdW5pdCk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc0FmdGVyXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBmaXJzdCBkYXRlIGFmdGVyIHRoZSBzZWNvbmQgb25lP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGZpcnN0IGRhdGUgYWZ0ZXIgdGhlIHNlY29uZCBvbmU/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRoYXQgc2hvdWxkIGJlIGFmdGVyIHRoZSBvdGhlciBvbmUgdG8gcmV0dXJuIHRydWVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVUb0NvbXBhcmUgLSB0aGUgZGF0ZSB0byBjb21wYXJlIHdpdGhcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZmlyc3QgZGF0ZSBpcyBhZnRlciB0aGUgc2Vjb25kIGRhdGVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXMgMTAgSnVseSAxOTg5IGFmdGVyIDExIEZlYnJ1YXJ5IDE5ODc/XG4gKiBjb25zdCByZXN1bHQgPSBpc0FmdGVyKG5ldyBEYXRlKDE5ODksIDYsIDEwKSwgbmV3IERhdGUoMTk4NywgMSwgMTEpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzQWZ0ZXIoZGlydHlEYXRlLCBkaXJ0eURhdGVUb0NvbXBhcmUpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkYXRlVG9Db21wYXJlID0gdG9EYXRlKGRpcnR5RGF0ZVRvQ29tcGFyZSk7XG4gIHJldHVybiBkYXRlLmdldFRpbWUoKSA+IGRhdGVUb0NvbXBhcmUuZ2V0VGltZSgpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNCZWZvcmVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGZpcnN0IGRhdGUgYmVmb3JlIHRoZSBzZWNvbmQgb25lP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGZpcnN0IGRhdGUgYmVmb3JlIHRoZSBzZWNvbmQgb25lP1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0aGF0IHNob3VsZCBiZSBiZWZvcmUgdGhlIG90aGVyIG9uZSB0byByZXR1cm4gdHJ1ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVRvQ29tcGFyZSAtIHRoZSBkYXRlIHRvIGNvbXBhcmUgd2l0aFxuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBmaXJzdCBkYXRlIGlzIGJlZm9yZSB0aGUgc2Vjb25kIGRhdGVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXMgMTAgSnVseSAxOTg5IGJlZm9yZSAxMSBGZWJydWFyeSAxOTg3P1xuICogY29uc3QgcmVzdWx0ID0gaXNCZWZvcmUobmV3IERhdGUoMTk4OSwgNiwgMTApLCBuZXcgRGF0ZSgxOTg3LCAxLCAxMSkpXG4gKiAvLz0+IGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzQmVmb3JlKGRpcnR5RGF0ZSwgZGlydHlEYXRlVG9Db21wYXJlKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGF0ZVRvQ29tcGFyZSA9IHRvRGF0ZShkaXJ0eURhdGVUb0NvbXBhcmUpO1xuICByZXR1cm4gZGF0ZS5nZXRUaW1lKCkgPCBkYXRlVG9Db21wYXJlLmdldFRpbWUoKTtcbn0iLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIHZhbHVlIGEgZGF0ZT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZS4gVGhlIGZ1bmN0aW9uIHdvcmtzIGZvciBkYXRlcyB0cmFuc2ZlcnJlZCBhY3Jvc3MgaWZyYW1lcy5cbiAqXG4gKiBAcGFyYW0geyp9IHZhbHVlIC0gdGhlIHZhbHVlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYSBkYXRlXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciBhIHZhbGlkIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSBpc0RhdGUobmV3IERhdGUoKSlcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgYW4gaW52YWxpZCBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gaXNEYXRlKG5ldyBEYXRlKE5hTikpXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIHNvbWUgdmFsdWU6XG4gKiBjb25zdCByZXN1bHQgPSBpc0RhdGUoJzIwMTQtMDItMzEnKVxuICogLy89PiBmYWxzZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgYW4gb2JqZWN0OlxuICogY29uc3QgcmVzdWx0ID0gaXNEYXRlKHt9KVxuICogLy89PiBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0RhdGUodmFsdWUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgfHwgX3R5cGVvZih2YWx1ZSkgPT09ICdvYmplY3QnICYmIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IERhdGVdJztcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzRXF1YWxcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQXJlIHRoZSBnaXZlbiBkYXRlcyBlcXVhbD9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgZXF1YWw/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgZmlyc3QgZGF0ZSB0byBjb21wYXJlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgc2Vjb25kIGRhdGUgdG8gY29tcGFyZVxuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlcyBhcmUgZXF1YWxcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDIgSnVseSAyMDE0IDA2OjMwOjQ1LjAwMCBhbmQgMiBKdWx5IDIwMTQgMDY6MzA6NDUuNTAwIGVxdWFsP1xuICogY29uc3QgcmVzdWx0ID0gaXNFcXVhbChcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgNiwgMzAsIDQ1LCAwKSxcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgNiwgMzAsIDQ1LCA1MDApXG4gKiApXG4gKiAvLz0+IGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzRXF1YWwoZGlydHlMZWZ0RGF0ZSwgZGlydHlSaWdodERhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdCA9IHRvRGF0ZShkaXJ0eUxlZnREYXRlKTtcbiAgdmFyIGRhdGVSaWdodCA9IHRvRGF0ZShkaXJ0eVJpZ2h0RGF0ZSk7XG4gIHJldHVybiBkYXRlTGVmdC5nZXRUaW1lKCkgPT09IGRhdGVSaWdodC5nZXRUaW1lKCk7XG59IiwiLyoqXG4gKiBAbmFtZSBpc0V4aXN0c1xuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBleGlzdHM/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGFyZ3VtZW50cyBjb252ZXJ0IHRvIGFuIGV4aXN0aW5nIGRhdGUuXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IHllYXIgb2YgdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7TnVtYmVyfSBtb250aCBvZiB0aGUgZGF0ZSB0byBjaGVja1xuICogQHBhcmFtIHtOdW1iZXJ9IGRheSBvZiB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGV4aXN0c1xuICogQHRocm93cyB7VHlwZUVycm9yfSAzIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgdGhlIHZhbGlkIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSBpc0V4aXN0cygyMDE4LCAwLCAzMSlcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgdGhlIGludmFsaWQgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzRXhpc3RzKDIwMTgsIDEsIDMxKVxuICogLy89PiBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0V4aXN0cyh5ZWFyLCBtb250aCwgZGF5KSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJzMgYXJndW1lbnQgcmVxdWlyZWQsIGJ1dCBvbmx5ICcgKyBhcmd1bWVudHMubGVuZ3RoICsgJyBwcmVzZW50Jyk7XG4gIH1cbiAgdmFyIGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5KTtcbiAgcmV0dXJuIGRhdGUuZ2V0RnVsbFllYXIoKSA9PT0geWVhciAmJiBkYXRlLmdldE1vbnRoKCkgPT09IG1vbnRoICYmIGRhdGUuZ2V0RGF0ZSgpID09PSBkYXk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc0ZpcnN0RGF5T2ZNb250aFxuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIHRoZSBmaXJzdCBkYXkgb2YgYSBtb250aD9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIHRoZSBmaXJzdCBkYXkgb2YgYSBtb250aD9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyB0aGUgZmlyc3QgZGF5IG9mIGEgbW9udGhcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJcyAxIFNlcHRlbWJlciAyMDE0IHRoZSBmaXJzdCBkYXkgb2YgYSBtb250aD9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzRmlyc3REYXlPZk1vbnRoKG5ldyBEYXRlKDIwMTQsIDgsIDEpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzRmlyc3REYXlPZk1vbnRoKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHRvRGF0ZShkaXJ0eURhdGUpLmdldERhdGUoKSA9PT0gMTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzRnJpZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBGcmlkYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBGcmlkYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgRnJpZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXMgMjYgU2VwdGVtYmVyIDIwMTQgRnJpZGF5P1xuICogY29uc3QgcmVzdWx0ID0gaXNGcmlkYXkobmV3IERhdGUoMjAxNCwgOCwgMjYpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzRnJpZGF5KGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHRvRGF0ZShkaXJ0eURhdGUpLmdldERheSgpID09PSA1O1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNGdXR1cmVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIGZ1dHVyZT9cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgZnV0dXJlP1xuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYERhdGUubm93KClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyBpbiB0aGUgZnV0dXJlXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgNiBPY3RvYmVyIDIwMTQsIGlzIDMxIERlY2VtYmVyIDIwMTQgaW4gdGhlIGZ1dHVyZT9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzRnV0dXJlKG5ldyBEYXRlKDIwMTQsIDExLCAzMSkpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNGdXR1cmUoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gdG9EYXRlKGRpcnR5RGF0ZSkuZ2V0VGltZSgpID4gRGF0ZS5ub3coKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBlbmRPZkRheSBmcm9tIFwiLi4vZW5kT2ZEYXkvaW5kZXguanNcIjtcbmltcG9ydCBlbmRPZk1vbnRoIGZyb20gXCIuLi9lbmRPZk1vbnRoL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc0xhc3REYXlPZk1vbnRoXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgdGhlIGxhc3QgZGF5IG9mIGEgbW9udGg/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSB0aGUgbGFzdCBkYXkgb2YgYSBtb250aD9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyB0aGUgbGFzdCBkYXkgb2YgYSBtb250aFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElzIDI4IEZlYnJ1YXJ5IDIwMTQgdGhlIGxhc3QgZGF5IG9mIGEgbW9udGg/XG4gKiBjb25zdCByZXN1bHQgPSBpc0xhc3REYXlPZk1vbnRoKG5ldyBEYXRlKDIwMTQsIDEsIDI4KSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0xhc3REYXlPZk1vbnRoKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgcmV0dXJuIGVuZE9mRGF5KGRhdGUpLmdldFRpbWUoKSA9PT0gZW5kT2ZNb250aChkYXRlKS5nZXRUaW1lKCk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc0xlYXBZZWFyXG4gKiBAY2F0ZWdvcnkgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgbGVhcCB5ZWFyP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIGxlYXAgeWVhcj9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyBpbiB0aGUgbGVhcCB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXMgMSBTZXB0ZW1iZXIgMjAxMiBpbiB0aGUgbGVhcCB5ZWFyP1xuICogY29uc3QgcmVzdWx0ID0gaXNMZWFwWWVhcihuZXcgRGF0ZSgyMDEyLCA4LCAxKSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0xlYXBZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIHJldHVybiB5ZWFyICUgNDAwID09PSAwIHx8IHllYXIgJSA0ID09PSAwICYmIHllYXIgJSAxMDAgIT09IDA7XG59IiwiaW1wb3J0IHBhcnNlIGZyb20gXCIuLi9wYXJzZS9pbmRleC5qc1wiO1xuaW1wb3J0IGlzVmFsaWQgZnJvbSBcIi4uL2lzVmFsaWQvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzTWF0Y2hcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgdmFsaWRhdGVzIHRoZSBkYXRlIHN0cmluZyBhZ2FpbnN0IGdpdmVuIGZvcm1hdHNcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgdHJ1ZSBpZiBnaXZlbiBkYXRlIGlzIHN0cmluZyBjb3JyZWN0IGFnYWluc3QgdGhlIGdpdmVuIGZvcm1hdCBlbHNlXG4gKiB3aWxsIHJldHVybiBmYWxzZS5cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBgZm9ybWF0YCB0b2tlbnMgZGlmZmVyIGZyb20gTW9tZW50LmpzIGFuZCBvdGhlciBsaWJyYXJpZXMuXG4gKiA+IFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICpcbiAqIFRoZSBjaGFyYWN0ZXJzIGluIHRoZSBmb3JtYXQgc3RyaW5nIHdyYXBwZWQgYmV0d2VlbiB0d28gc2luZ2xlIHF1b3RlcyBjaGFyYWN0ZXJzICgnKSBhcmUgZXNjYXBlZC5cbiAqIFR3byBzaW5nbGUgcXVvdGVzIGluIGEgcm93LCB3aGV0aGVyIGluc2lkZSBvciBvdXRzaWRlIGEgcXVvdGVkIHNlcXVlbmNlLCByZXByZXNlbnQgYSAncmVhbCcgc2luZ2xlIHF1b3RlLlxuICpcbiAqIEZvcm1hdCBvZiB0aGUgZm9ybWF0IHN0cmluZyBpcyBiYXNlZCBvbiBVbmljb2RlIFRlY2huaWNhbCBTdGFuZGFyZCAjMzU6XG4gKiBodHRwczovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMzUvdHIzNS1kYXRlcy5odG1sI0RhdGVfRmllbGRfU3ltYm9sX1RhYmxlXG4gKiB3aXRoIGEgZmV3IGFkZGl0aW9ucyAoc2VlIG5vdGUgNSBiZWxvdyB0aGUgdGFibGUpLlxuICpcbiAqIE5vdCBhbGwgdG9rZW5zIGFyZSBjb21wYXRpYmxlLiBDb21iaW5hdGlvbnMgdGhhdCBkb24ndCBtYWtlIHNlbnNlIG9yIGNvdWxkIGxlYWQgdG8gYnVncyBhcmUgcHJvaGliaXRlZFxuICogYW5kIHdpbGwgdGhyb3cgYFJhbmdlRXJyb3JgLiBGb3IgZXhhbXBsZSB1c2FnZSBvZiAyNC1ob3VyIGZvcm1hdCB0b2tlbiB3aXRoIEFNL1BNIHRva2VuIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uOlxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIGlzTWF0Y2goJzIzIEFNJywgJ0hIIGEnKVxuICogLy89PiBSYW5nZUVycm9yOiBUaGUgZm9ybWF0IHN0cmluZyBtdXN0bid0IGNvbnRhaW4gYEhIYCBhbmQgYGFgIGF0IHRoZSBzYW1lIHRpbWVcbiAqIGBgYFxuICpcbiAqIFNlZSB0aGUgY29tcGF0aWJpbGl0eSB0YWJsZTogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vc3ByZWFkc2hlZXRzL2QvZS8yUEFDWC0xdlFPUFUzeFVocGxsbDZkeW9NbVZVWEhLbF84Q1JEczZfdWVMbWV4M1NvcXdodW9sa3VOM08wNWw0cnF4NWgxZEtYOGViNDZVbC1DQ1NycS9wdWJodG1sP2dpZD0wJnNpbmdsZT10cnVlXG4gKlxuICogQWNjZXB0ZWQgZm9ybWF0IHN0cmluZyBwYXR0ZXJuczpcbiAqIHwgVW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8UHJpb3J8IFBhdHRlcm4gfCBSZXN1bHQgZXhhbXBsZXMgICAgICAgICAgICAgICAgICAgfCBOb3RlcyB8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tfFxuICogfCBFcmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTQwIHwgRy4uR0dHICB8IEFELCBCQyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEdHR0cgICAgfCBBbm5vIERvbWluaSwgQmVmb3JlIENocmlzdCAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBHR0dHRyAgIHwgQSwgQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBDYWxlbmRhciB5ZWFyICAgICAgICAgICAgICAgICAgIHwgMTMwIHwgeSAgICAgICB8IDQ0LCAxLCAxOTAwLCAyMDE3LCA5OTk5ICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHlvICAgICAgfCA0NHRoLCAxc3QsIDE5MDB0aCwgOTk5OTk5OXRoICAgICAgfCA0LDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB5eSAgICAgIHwgNDQsIDAxLCAwMCwgMTcgICAgICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeXl5ICAgICB8IDA0NCwgMDAxLCAxMjMsIDk5OSAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHl5eXkgICAgfCAwMDQ0LCAwMDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB5eXl5eSAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiw0ICAgfFxuICogfCBMb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgIHwgMTMwIHwgWSAgICAgICB8IDQ0LCAxLCAxOTAwLCAyMDE3LCA5MDAwICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFlvICAgICAgfCA0NHRoLCAxc3QsIDE5MDB0aCwgOTk5OTk5OXRoICAgICAgfCA0LDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBZWSAgICAgIHwgNDQsIDAxLCAwMCwgMTcgICAgICAgICAgICAgICAgICAgIHwgNCw2ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWVlZICAgICB8IDA0NCwgMDAxLCAxMjMsIDk5OSAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFlZWVkgICAgfCAwMDQ0LCAwMDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgfCA0LDYgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBZWVlZWSAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiw0ICAgfFxuICogfCBJU08gd2Vlay1udW1iZXJpbmcgeWVhciAgICAgICAgIHwgMTMwIHwgUiAgICAgICB8IC00MywgMSwgMTkwMCwgMjAxNywgOTk5OSwgLTk5OTkgICB8IDQsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFJSICAgICAgfCAtNDMsIDAxLCAwMCwgMTcgICAgICAgICAgICAgICAgICAgfCA0LDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBSUlIgICAgIHwgLTA0MywgMDAxLCAxMjMsIDk5OSwgLTk5OSAgICAgICAgIHwgNCw1ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUlJSUiAgICB8IC0wMDQzLCAwMDAxLCAyMDE3LCA5OTk5LCAtOTk5OSAgICB8IDQsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFJSUlJSICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyLDQsNSB8XG4gKiB8IEV4dGVuZGVkIHllYXIgICAgICAgICAgICAgICAgICAgfCAxMzAgfCB1ICAgICAgIHwgLTQzLCAxLCAxOTAwLCAyMDE3LCA5OTk5LCAtOTk5ICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgdXUgICAgICB8IC00MywgMDEsIDk5LCAtOTkgICAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHV1dSAgICAgfCAtMDQzLCAwMDEsIDEyMywgOTk5LCAtOTk5ICAgICAgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB1dXV1ICAgIHwgLTAwNDMsIDAwMDEsIDIwMTcsIDk5OTksIC05OTk5ICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgdXV1dXUgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIsNCAgIHxcbiAqIHwgUXVhcnRlciAoZm9ybWF0dGluZykgICAgICAgICAgICB8IDEyMCB8IFEgICAgICAgfCAxLCAyLCAzLCA0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBRbyAgICAgIHwgMXN0LCAybmQsIDNyZCwgNHRoICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUVEgICAgICB8IDAxLCAwMiwgMDMsIDA0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFFRUSAgICAgfCBRMSwgUTIsIFEzLCBRNCAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBRUVFRICAgIHwgMXN0IHF1YXJ0ZXIsIDJuZCBxdWFydGVyLCAuLi4gICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUVFRUVEgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgUXVhcnRlciAoc3RhbmQtYWxvbmUpICAgICAgICAgICB8IDEyMCB8IHEgICAgICAgfCAxLCAyLCAzLCA0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBxbyAgICAgIHwgMXN0LCAybmQsIDNyZCwgNHRoICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgcXEgICAgICB8IDAxLCAwMiwgMDMsIDA0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHFxcSAgICAgfCBRMSwgUTIsIFEzLCBRNCAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBxcXFxICAgIHwgMXN0IHF1YXJ0ZXIsIDJuZCBxdWFydGVyLCAuLi4gICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgcXFxcXEgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8IDMgICAgIHxcbiAqIHwgTW9udGggKGZvcm1hdHRpbmcpICAgICAgICAgICAgICB8IDExMCB8IE0gICAgICAgfCAxLCAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBNbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTJ0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTU0gICAgICB8IDAxLCAwMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IE1NTSAgICAgfCBKYW4sIEZlYiwgLi4uLCBEZWMgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBNTU1NICAgIHwgSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXIgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTU1NTU0gICB8IEosIEYsIC4uLiwgRCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgTW9udGggKHN0YW5kLWFsb25lKSAgICAgICAgICAgICB8IDExMCB8IEwgICAgICAgfCAxLCAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBMbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTJ0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTEwgICAgICB8IDAxLCAwMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IExMTCAgICAgfCBKYW4sIEZlYiwgLi4uLCBEZWMgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBMTExMICAgIHwgSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXIgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTExMTEwgICB8IEosIEYsIC4uLiwgRCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgTG9jYWwgd2VlayBvZiB5ZWFyICAgICAgICAgICAgICB8IDEwMCB8IHcgICAgICAgfCAxLCAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB3byAgICAgIHwgMXN0LCAybmQsIC4uLiwgNTN0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgd3cgICAgICB8IDAxLCAwMiwgLi4uLCA1MyAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSVNPIHdlZWsgb2YgeWVhciAgICAgICAgICAgICAgICB8IDEwMCB8IEkgICAgICAgfCAxLCAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBJbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgNTN0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgSUkgICAgICB8IDAxLCAwMiwgLi4uLCA1MyAgICAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgRGF5IG9mIG1vbnRoICAgICAgICAgICAgICAgICAgICB8ICA5MCB8IGQgICAgICAgfCAxLCAyLCAuLi4sIDMxICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBkbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMzFzdCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZGQgICAgICB8IDAxLCAwMiwgLi4uLCAzMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgRGF5IG9mIHllYXIgICAgICAgICAgICAgICAgICAgICB8ICA5MCB8IEQgICAgICAgfCAxLCAyLCAuLi4sIDM2NSwgMzY2ICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBEbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMzY1dGgsIDM2NnRoICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgREQgICAgICB8IDAxLCAwMiwgLi4uLCAzNjUsIDM2NiAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IERERCAgICAgfCAwMDEsIDAwMiwgLi4uLCAzNjUsIDM2NiAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBEREREICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCBEYXkgb2Ygd2VlayAoZm9ybWF0dGluZykgICAgICAgIHwgIDkwIHwgRS4uRUVFICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3UgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEVFRUUgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBFRUVFRSAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgRUVFRUVFICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU2EsIFN1ICAgICAgICB8ICAgICAgIHxcbiAqIHwgSVNPIGRheSBvZiB3ZWVrIChmb3JtYXR0aW5nKSAgICB8ICA5MCB8IGkgICAgICAgfCAxLCAyLCAzLCAuLi4sIDcgICAgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBpbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgN3RoICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaWkgICAgICB8IDAxLCAwMiwgLi4uLCAwNyAgICAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGlpaSAgICAgfCBNb24sIFR1ZSwgV2VkLCAuLi4sIFN1ICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBpaWlpICAgIHwgTW9uZGF5LCBUdWVzZGF5LCAuLi4sIFN1bmRheSAgICAgIHwgMiw1ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaWlpaWkgICB8IE0sIFQsIFcsIFQsIEYsIFMsIFMgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGlpaWlpaSAgfCBNbywgVHUsIFdlLCBUaCwgRnIsIFNhLCBTdSAgICAgICAgfCA1ICAgICB8XG4gKiB8IExvY2FsIGRheSBvZiB3ZWVrIChmb3JtYXR0aW5nKSAgfCAgOTAgfCBlICAgICAgIHwgMiwgMywgNCwgLi4uLCAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZW8gICAgICB8IDJuZCwgM3JkLCAuLi4sIDFzdCAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGVlICAgICAgfCAwMiwgMDMsIC4uLiwgMDEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBlZWUgICAgIHwgTW9uLCBUdWUsIFdlZCwgLi4uLCBTdSAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZWVlZSAgICB8IE1vbmRheSwgVHVlc2RheSwgLi4uLCBTdW5kYXkgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGVlZWVlICAgfCBNLCBULCBXLCBULCBGLCBTLCBTICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBlZWVlZWUgIHwgTW8sIFR1LCBXZSwgVGgsIEZyLCBTYSwgU3UgICAgICAgIHwgICAgICAgfFxuICogfCBMb2NhbCBkYXkgb2Ygd2VlayAoc3RhbmQtYWxvbmUpIHwgIDkwIHwgYyAgICAgICB8IDIsIDMsIDQsIC4uLiwgMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGNvICAgICAgfCAybmQsIDNyZCwgLi4uLCAxc3QgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBjYyAgICAgIHwgMDIsIDAzLCAuLi4sIDAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgY2NjICAgICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3UgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGNjY2MgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBjY2NjYyAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgY2NjY2NjICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU2EsIFN1ICAgICAgICB8ICAgICAgIHxcbiAqIHwgQU0sIFBNICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4MCB8IGEuLmFhYSAgfCBBTSwgUE0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBhYWFhICAgIHwgYS5tLiwgcC5tLiAgICAgICAgICAgICAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgYWFhYWEgICB8IGEsIHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgQU0sIFBNLCBub29uLCBtaWRuaWdodCAgICAgICAgICB8ICA4MCB8IGIuLmJiYiAgfCBBTSwgUE0sIG5vb24sIG1pZG5pZ2h0ICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBiYmJiICAgIHwgYS5tLiwgcC5tLiwgbm9vbiwgbWlkbmlnaHQgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgYmJiYmIgICB8IGEsIHAsIG4sIG1pICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgRmxleGlibGUgZGF5IHBlcmlvZCAgICAgICAgICAgICB8ICA4MCB8IEIuLkJCQiAgfCBhdCBuaWdodCwgaW4gdGhlIG1vcm5pbmcsIC4uLiAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBCQkJCICAgIHwgYXQgbmlnaHQsIGluIHRoZSBtb3JuaW5nLCAuLi4gICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgQkJCQkIgICB8IGF0IG5pZ2h0LCBpbiB0aGUgbW9ybmluZywgLi4uICAgICB8ICAgICAgIHxcbiAqIHwgSG91ciBbMS0xMl0gICAgICAgICAgICAgICAgICAgICB8ICA3MCB8IGggICAgICAgfCAxLCAyLCAuLi4sIDExLCAxMiAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBobyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTF0aCwgMTJ0aCAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaGggICAgICB8IDAxLCAwMiwgLi4uLCAxMSwgMTIgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSG91ciBbMC0yM10gICAgICAgICAgICAgICAgICAgICB8ICA3MCB8IEggICAgICAgfCAwLCAxLCAyLCAuLi4sIDIzICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBIbyAgICAgIHwgMHRoLCAxc3QsIDJuZCwgLi4uLCAyM3JkICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgSEggICAgICB8IDAwLCAwMSwgMDIsIC4uLiwgMjMgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSG91ciBbMC0xMV0gICAgICAgICAgICAgICAgICAgICB8ICA3MCB8IEsgICAgICAgfCAxLCAyLCAuLi4sIDExLCAwICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBLbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTF0aCwgMHRoICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgS0sgICAgICB8IDAxLCAwMiwgLi4uLCAxMSwgMDAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSG91ciBbMS0yNF0gICAgICAgICAgICAgICAgICAgICB8ICA3MCB8IGsgICAgICAgfCAyNCwgMSwgMiwgLi4uLCAyMyAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBrbyAgICAgIHwgMjR0aCwgMXN0LCAybmQsIC4uLiwgMjNyZCAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwga2sgICAgICB8IDI0LCAwMSwgMDIsIC4uLiwgMjMgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgTWludXRlICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2MCB8IG0gICAgICAgfCAwLCAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBtbyAgICAgIHwgMHRoLCAxc3QsIC4uLiwgNTl0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgbW0gICAgICB8IDAwLCAwMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgU2Vjb25kICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1MCB8IHMgICAgICAgfCAwLCAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBzbyAgICAgIHwgMHRoLCAxc3QsIC4uLiwgNTl0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgc3MgICAgICB8IDAwLCAwMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgU2Vjb25kcyB0aW1lc3RhbXAgICAgICAgICAgICAgICB8ICA0MCB8IHQgICAgICAgfCA1MTI5Njk1MjAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB0dCAgICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCBGcmFjdGlvbiBvZiBzZWNvbmQgICAgICAgICAgICAgIHwgIDMwIHwgUyAgICAgICB8IDAsIDEsIC4uLiwgOSAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFNTICAgICAgfCAwMCwgMDEsIC4uLiwgOTkgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBTU1MgICAgIHwgMDAwLCAwMDEsIC4uLiwgOTk5ICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgU1NTUyAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgTWlsbGlzZWNvbmRzIHRpbWVzdGFtcCAgICAgICAgICB8ICAyMCB8IFQgICAgICAgfCA1MTI5Njk1MjA5MDAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBUVCAgICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCBUaW1lem9uZSAoSVNPLTg2MDEgdy8gWikgICAgICAgIHwgIDEwIHwgWCAgICAgICB8IC0wOCwgKzA1MzAsIFogICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFhYICAgICAgfCAtMDgwMCwgKzA1MzAsIFogICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBYWFggICAgIHwgLTA4OjAwLCArMDU6MzAsIFogICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWFhYWCAgICB8IC0wODAwLCArMDUzMCwgWiwgKzEyMzQ1NiAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFhYWFhYICAgfCAtMDg6MDAsICswNTozMCwgWiwgKzEyOjM0OjU2ICAgICAgfCAgICAgICB8XG4gKiB8IFRpbWV6b25lIChJU08tODYwMSB3L28gWikgICAgICAgfCAgMTAgfCB4ICAgICAgIHwgLTA4LCArMDUzMCwgKzAwICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeHggICAgICB8IC0wODAwLCArMDUzMCwgKzAwMDAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHh4eCAgICAgfCAtMDg6MDAsICswNTozMCwgKzAwOjAwICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB4eHh4ICAgIHwgLTA4MDAsICswNTMwLCArMDAwMCwgKzEyMzQ1NiAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeHh4eHggICB8IC0wODowMCwgKzA1OjMwLCArMDA6MDAsICsxMjozNDo1NiB8ICAgICAgIHxcbiAqIHwgTG9uZyBsb2NhbGl6ZWQgZGF0ZSAgICAgICAgICAgICB8ICBOQSB8IFAgICAgICAgfCAwNS8yOS8xNDUzICAgICAgICAgICAgICAgICAgICAgICAgfCA1LDggICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBQUCAgICAgIHwgTWF5IDI5LCAxNDUzICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUFBQICAgICB8IE1heSAyOXRoLCAxNDUzICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFBQUFAgICAgfCBTdW5kYXksIE1heSAyOXRoLCAxNDUzICAgICAgICAgICAgfCAyLDUsOCB8XG4gKiB8IExvbmcgbG9jYWxpemVkIHRpbWUgICAgICAgICAgICAgfCAgTkEgfCBwICAgICAgIHwgMTI6MDAgQU0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgNSw4ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgcHAgICAgICB8IDEyOjAwOjAwIEFNICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgQ29tYmluYXRpb24gb2YgZGF0ZSBhbmQgdGltZSAgICB8ICBOQSB8IFBwICAgICAgfCAwNS8yOS8xNDUzLCAxMjowMCBBTSAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBQUHBwICAgIHwgTWF5IDI5LCAxNDUzLCAxMjowMDowMCBBTSAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUFBQcHAgICB8IE1heSAyOXRoLCAxNDUzIGF0IC4uLiAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFBQUFBwcCAgfCBTdW5kYXksIE1heSAyOXRoLCAxNDUzIGF0IC4uLiAgICAgfCAyLDUsOCB8XG4gKiBOb3RlczpcbiAqIDEuIFwiRm9ybWF0dGluZ1wiIHVuaXRzIChlLmcuIGZvcm1hdHRpbmcgcXVhcnRlcikgaW4gdGhlIGRlZmF1bHQgZW4tVVMgbG9jYWxlXG4gKiAgICBhcmUgdGhlIHNhbWUgYXMgXCJzdGFuZC1hbG9uZVwiIHVuaXRzLCBidXQgYXJlIGRpZmZlcmVudCBpbiBzb21lIGxhbmd1YWdlcy5cbiAqICAgIFwiRm9ybWF0dGluZ1wiIHVuaXRzIGFyZSBkZWNsaW5lZCBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIG9mIHRoZSBsYW5ndWFnZVxuICogICAgaW4gdGhlIGNvbnRleHQgb2YgYSBkYXRlLiBcIlN0YW5kLWFsb25lXCIgdW5pdHMgYXJlIGFsd2F5cyBub21pbmF0aXZlIHNpbmd1bGFyLlxuICogICAgSW4gYGZvcm1hdGAgZnVuY3Rpb24sIHRoZXkgd2lsbCBwcm9kdWNlIGRpZmZlcmVudCByZXN1bHQ6XG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdkbyBMTExMJywge2xvY2FsZTogY3N9KSAvLz0+ICc2LiBsaXN0b3BhZCdgXG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdkbyBNTU1NJywge2xvY2FsZTogY3N9KSAvLz0+ICc2LiBsaXN0b3BhZHUnYFxuICpcbiAqICAgIGBpc01hdGNoYCB3aWxsIHRyeSB0byBtYXRjaCBib3RoIGZvcm1hdHRpbmcgYW5kIHN0YW5kLWFsb25lIHVuaXRzIGludGVyY2hhbmdhYmx5LlxuICpcbiAqIDIuIEFueSBzZXF1ZW5jZSBvZiB0aGUgaWRlbnRpY2FsIGxldHRlcnMgaXMgYSBwYXR0ZXJuLCB1bmxlc3MgaXQgaXMgZXNjYXBlZCBieVxuICogICAgdGhlIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzIChzZWUgYmVsb3cpLlxuICogICAgSWYgdGhlIHNlcXVlbmNlIGlzIGxvbmdlciB0aGFuIGxpc3RlZCBpbiB0YWJsZTpcbiAqICAgIC0gZm9yIG51bWVyaWNhbCB1bml0cyAoYHl5eXl5eXl5YCkgYGlzTWF0Y2hgIHdpbGwgdHJ5IHRvIG1hdGNoIGEgbnVtYmVyXG4gKiAgICAgIGFzIHdpZGUgYXMgdGhlIHNlcXVlbmNlXG4gKiAgICAtIGZvciB0ZXh0IHVuaXRzIChgTU1NTU1NTU1gKSBgaXNNYXRjaGAgd2lsbCB0cnkgdG8gbWF0Y2ggdGhlIHdpZGVzdCB2YXJpYXRpb24gb2YgdGhlIHVuaXQuXG4gKiAgICAgIFRoZXNlIHZhcmlhdGlvbnMgYXJlIG1hcmtlZCB3aXRoIFwiMlwiIGluIHRoZSBsYXN0IGNvbHVtbiBvZiB0aGUgdGFibGUuXG4gKlxuICogMy4gYFFRUVFRYCBhbmQgYHFxcXFxYCBjb3VsZCBiZSBub3Qgc3RyaWN0bHkgbnVtZXJpY2FsIGluIHNvbWUgbG9jYWxlcy5cbiAqICAgIFRoZXNlIHRva2VucyByZXByZXNlbnQgdGhlIHNob3J0ZXN0IGZvcm0gb2YgdGhlIHF1YXJ0ZXIuXG4gKlxuICogNC4gVGhlIG1haW4gZGlmZmVyZW5jZSBiZXR3ZWVuIGB5YCBhbmQgYHVgIHBhdHRlcm5zIGFyZSBCLkMuIHllYXJzOlxuICpcbiAqICAgIHwgWWVhciB8IGB5YCB8IGB1YCB8XG4gKiAgICB8LS0tLS0tfC0tLS0tfC0tLS0tfFxuICogICAgfCBBQyAxIHwgICAxIHwgICAxIHxcbiAqICAgIHwgQkMgMSB8ICAgMSB8ICAgMCB8XG4gKiAgICB8IEJDIDIgfCAgIDIgfCAgLTEgfFxuICpcbiAqICAgIEFsc28gYHl5YCB3aWxsIHRyeSB0byBndWVzcyB0aGUgY2VudHVyeSBvZiB0d28gZGlnaXQgeWVhciBieSBwcm94aW1pdHkgd2l0aCBgcmVmZXJlbmNlRGF0ZWA6XG4gKlxuICogICAgYGlzTWF0Y2goJzUwJywgJ3l5JykgLy89PiB0cnVlYFxuICpcbiAqICAgIGBpc01hdGNoKCc3NScsICd5eScpIC8vPT4gdHJ1ZWBcbiAqXG4gKiAgICB3aGlsZSBgdXVgIHdpbGwgdXNlIHRoZSB5ZWFyIGFzIGlzOlxuICpcbiAqICAgIGBpc01hdGNoKCc1MCcsICd1dScpIC8vPT4gdHJ1ZWBcbiAqXG4gKiAgICBgaXNNYXRjaCgnNzUnLCAndXUnKSAvLz0+IHRydWVgXG4gKlxuICogICAgVGhlIHNhbWUgZGlmZmVyZW5jZSBpcyB0cnVlIGZvciBsb2NhbCBhbmQgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIChgWWAgYW5kIGBSYCksXG4gKiAgICBleGNlcHQgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhcnMgYXJlIGRlcGVuZGVudCBvbiBgb3B0aW9ucy53ZWVrU3RhcnRzT25gXG4gKiAgICBhbmQgYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCAoY29tcGFyZSBbc2V0SVNPV2Vla1llYXJde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3Mvc2V0SVNPV2Vla1llYXJ9XG4gKiAgICBhbmQgW3NldFdlZWtZZWFyXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL3NldFdlZWtZZWFyfSkuXG4gKlxuICogNS4gVGhlc2UgcGF0dGVybnMgYXJlIG5vdCBpbiB0aGUgVW5pY29kZSBUZWNobmljYWwgU3RhbmRhcmQgIzM1OlxuICogICAgLSBgaWA6IElTTyBkYXkgb2Ygd2Vla1xuICogICAgLSBgSWA6IElTTyB3ZWVrIG9mIHllYXJcbiAqICAgIC0gYFJgOiBJU08gd2Vlay1udW1iZXJpbmcgeWVhclxuICogICAgLSBgb2A6IG9yZGluYWwgbnVtYmVyIG1vZGlmaWVyXG4gKiAgICAtIGBQYDogbG9uZyBsb2NhbGl6ZWQgZGF0ZVxuICogICAgLSBgcGA6IGxvbmcgbG9jYWxpemVkIHRpbWVcbiAqXG4gKiA2LiBgWVlgIGFuZCBgWVlZWWAgdG9rZW5zIHJlcHJlc2VudCB3ZWVrLW51bWJlcmluZyB5ZWFycyBidXQgdGhleSBhcmUgb2Z0ZW4gY29uZnVzZWQgd2l0aCB5ZWFycy5cbiAqICAgIFlvdSBzaG91bGQgZW5hYmxlIGBvcHRpb25zLnVzZUFkZGl0aW9uYWxXZWVrWWVhclRva2Vuc2AgdG8gdXNlIHRoZW0uIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICpcbiAqIDcuIGBEYCBhbmQgYEREYCB0b2tlbnMgcmVwcmVzZW50IGRheXMgb2YgdGhlIHllYXIgYnV0IHRoZXkgYXJlIG9mdGhlbiBjb25mdXNlZCB3aXRoIGRheXMgb2YgdGhlIG1vbnRoLlxuICogICAgWW91IHNob3VsZCBlbmFibGUgYG9wdGlvbnMudXNlQWRkaXRpb25hbERheU9mWWVhclRva2Vuc2AgdG8gdXNlIHRoZW0uIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICpcbiAqIDguIGBQK2AgdG9rZW5zIGRvIG5vdCBoYXZlIGEgZGVmaW5lZCBwcmlvcml0eSBzaW5jZSB0aGV5IGFyZSBtZXJlbHkgYWxpYXNlcyB0byBvdGhlciB0b2tlbnMgYmFzZWRcbiAqICAgIG9uIHRoZSBnaXZlbiBsb2NhbGUuXG4gKlxuICogICAgdXNpbmcgYGVuLVVTYCBsb2NhbGU6IGBQYCA9PiBgTU0vZGQveXl5eWBcbiAqICAgIHVzaW5nIGBlbi1VU2AgbG9jYWxlOiBgcGAgPT4gYGhoOm1tIGFgXG4gKiAgICB1c2luZyBgcHQtQlJgIGxvY2FsZTogYFBgID0+IGBkZC9NTS95eXl5YFxuICogICAgdXNpbmcgYHB0LUJSYCBsb2NhbGU6IGBwYCA9PiBgSEg6bW1gXG4gKlxuICogVmFsdWVzIHdpbGwgYmUgY2hlY2tlZCBpbiB0aGUgZGVzY2VuZGluZyBvcmRlciBvZiBpdHMgdW5pdCdzIHByaW9yaXR5LlxuICogVW5pdHMgb2YgYW4gZXF1YWwgcHJpb3JpdHkgb3ZlcndyaXRlIGVhY2ggb3RoZXIgaW4gdGhlIG9yZGVyIG9mIGFwcGVhcmFuY2UuXG4gKlxuICogSWYgbm8gdmFsdWVzIG9mIGhpZ2hlciBwcmlvcml0eSBhcmUgbWF0Y2hlZCAoZS5nLiB3aGVuIG1hdGNoaW5nIHN0cmluZyAnSmFudWFyeSAxc3QnIHdpdGhvdXQgYSB5ZWFyKSxcbiAqIHRoZSB2YWx1ZXMgd2lsbCBiZSB0YWtlbiBmcm9tIHRvZGF5J3MgdXNpbmcgYG5ldyBEYXRlKClgIGRhdGUgd2hpY2ggd29ya3MgYXMgYSBjb250ZXh0IG9mIHBhcnNpbmcuXG4gKlxuICogVGhlIHJlc3VsdCBtYXkgdmFyeSBieSBsb2NhbGUuXG4gKlxuICogSWYgYGZvcm1hdFN0cmluZ2AgbWF0Y2hlcyB3aXRoIGBkYXRlU3RyaW5nYCBidXQgZG9lcyBub3QgcHJvdmlkZXMgdG9rZW5zLCBgcmVmZXJlbmNlRGF0ZWAgd2lsbCBiZSByZXR1cm5lZC5cbiAqXG4gKlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBkYXRlU3RyaW5nIC0gdGhlIGRhdGUgc3RyaW5nIHRvIHZlcmlmeVxuICogQHBhcmFtIHtTdHJpbmd9IGZvcm1hdFN0cmluZyAtIHRoZSBzdHJpbmcgb2YgdG9rZW5zXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEBwYXJhbSB7MXwyfDN8NHw1fDZ8N30gW29wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlPTFdIC0gdGhlIGRheSBvZiBKYW51YXJ5LCB3aGljaCBpcyBhbHdheXMgaW4gdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXJcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMudXNlQWRkaXRpb25hbFdlZWtZZWFyVG9rZW5zPWZhbHNlXSAtIGlmIHRydWUsIGFsbG93cyB1c2FnZSBvZiB0aGUgd2Vlay1udW1iZXJpbmcgeWVhciB0b2tlbnMgYFlZYCBhbmQgYFlZWVlgO1xuICogICBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMudXNlQWRkaXRpb25hbERheU9mWWVhclRva2Vucz1mYWxzZV0gLSBpZiB0cnVlLCBhbGxvd3MgdXNhZ2Ugb2YgdGhlIGRheSBvZiB5ZWFyIHRva2VucyBgRGAgYW5kIGBERGA7XG4gKiAgIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHJldHVybnMge0Jvb2xlYW59XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5sb2NhbGVgIG11c3QgY29udGFpbiBgbWF0Y2hgIHByb3BlcnR5XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSB1c2UgYHl5eXlgIGluc3RlYWQgb2YgYFlZWVlgIGZvciBmb3JtYXR0aW5nIHllYXJzOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IHVzZSBgeXlgIGluc3RlYWQgb2YgYFlZYCBmb3IgZm9ybWF0dGluZyB5ZWFyczsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSB1c2UgYGRgIGluc3RlYWQgb2YgYERgIGZvciBmb3JtYXR0aW5nIGRheXMgb2YgdGhlIG1vbnRoOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IHVzZSBgZGRgIGluc3RlYWQgb2YgYEREYCBmb3IgZm9ybWF0dGluZyBkYXlzIG9mIHRoZSBtb250aDsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBmb3JtYXQgc3RyaW5nIGNvbnRhaW5zIGFuIHVuZXNjYXBlZCBsYXRpbiBhbHBoYWJldCBjaGFyYWN0ZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gTWF0Y2ggMTEgRmVicnVhcnkgMjAxNCBmcm9tIG1pZGRsZS1lbmRpYW4gZm9ybWF0OlxuICogY29uc3QgcmVzdWx0ID0gaXNNYXRjaCgnMDIvMTEvMjAxNCcsICdNTS9kZC95eXl5JylcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBNYXRjaCAyOHRoIG9mIEZlYnJ1YXJ5IGluIEVzcGVyYW50byBsb2NhbGUgaW4gdGhlIGNvbnRleHQgb2YgMjAxMCB5ZWFyOlxuICogaW1wb3J0IGVvIGZyb20gJ2RhdGUtZm5zL2xvY2FsZS9lbydcbiAqIGNvbnN0IHJlc3VsdCA9IGlzTWF0Y2goJzI4LWEgZGUgZmVicnVhcm8nLCBcImRvICdkZScgTU1NTVwiLCB7XG4gKiAgIGxvY2FsZTogZW9cbiAqIH0pXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNNYXRjaChkYXRlU3RyaW5nLCBmb3JtYXRTdHJpbmcsIG9wdGlvbnMpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBpc1ZhbGlkKHBhcnNlKGRhdGVTdHJpbmcsIGZvcm1hdFN0cmluZywgbmV3IERhdGUoKSwgb3B0aW9ucykpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNNb25kYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIE1vbmRheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIE1vbmRheT9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyBNb25kYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJcyAyMiBTZXB0ZW1iZXIgMjAxNCBNb25kYXk/XG4gKiBjb25zdCByZXN1bHQgPSBpc01vbmRheShuZXcgRGF0ZSgyMDE0LCA4LCAyMikpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNNb25kYXkoZGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHRvRGF0ZShkYXRlKS5nZXREYXkoKSA9PT0gMTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzUGFzdFxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgcGFzdD9cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgcGFzdD9cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBEYXRlLm5vdygpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgaW4gdGhlIHBhc3RcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyA2IE9jdG9iZXIgMjAxNCwgaXMgMiBKdWx5IDIwMTQgaW4gdGhlIHBhc3Q/XG4gKiBjb25zdCByZXN1bHQgPSBpc1Bhc3QobmV3IERhdGUoMjAxNCwgNiwgMikpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNQYXN0KGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHRvRGF0ZShkaXJ0eURhdGUpLmdldFRpbWUoKSA8IERhdGUubm93KCk7XG59IiwiaW1wb3J0IHN0YXJ0T2ZEYXkgZnJvbSBcIi4uL3N0YXJ0T2ZEYXkvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzU2FtZURheVxuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIGRheSAoYW5kIHllYXIgYW5kIG1vbnRoKT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgaW4gdGhlIHNhbWUgZGF5IChhbmQgeWVhciBhbmQgbW9udGgpP1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGZpcnN0IGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBzZWNvbmQgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlcyBhcmUgaW4gdGhlIHNhbWUgZGF5IChhbmQgeWVhciBhbmQgbW9udGgpXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSA0IFNlcHRlbWJlciAwNjowMDowMCBhbmQgNCBTZXB0ZW1iZXIgMTg6MDA6MDAgaW4gdGhlIHNhbWUgZGF5P1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lRGF5KG5ldyBEYXRlKDIwMTQsIDgsIDQsIDYsIDApLCBuZXcgRGF0ZSgyMDE0LCA4LCA0LCAxOCwgMCkpXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDQgU2VwdGVtYmVyIGFuZCA0IE9jdG9iZXIgaW4gdGhlIHNhbWUgZGF5P1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lRGF5KG5ldyBEYXRlKDIwMTQsIDgsIDQpLCBuZXcgRGF0ZSgyMDE0LCA5LCA0KSlcbiAqIC8vPT4gZmFsc2VcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDQgU2VwdGVtYmVyLCAyMDE0IGFuZCA0IFNlcHRlbWJlciwgMjAxNSBpbiB0aGUgc2FtZSBkYXk/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVEYXkobmV3IERhdGUoMjAxNCwgOCwgNCksIG5ldyBEYXRlKDIwMTUsIDgsIDQpKVxuICogLy89PiBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1NhbWVEYXkoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdFN0YXJ0T2ZEYXkgPSBzdGFydE9mRGF5KGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgZGF0ZVJpZ2h0U3RhcnRPZkRheSA9IHN0YXJ0T2ZEYXkoZGlydHlEYXRlUmlnaHQpO1xuICByZXR1cm4gZGF0ZUxlZnRTdGFydE9mRGF5LmdldFRpbWUoKSA9PT0gZGF0ZVJpZ2h0U3RhcnRPZkRheS5nZXRUaW1lKCk7XG59IiwiaW1wb3J0IHN0YXJ0T2ZIb3VyIGZyb20gXCIuLi9zdGFydE9mSG91ci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNTYW1lSG91clxuICogQGNhdGVnb3J5IEhvdXIgSGVscGVyc1xuICogQHN1bW1hcnkgQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSBob3VyIChhbmQgc2FtZSBkYXkpP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSBob3VyIChhbmQgc2FtZSBkYXkpP1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGZpcnN0IGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBzZWNvbmQgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlcyBhcmUgaW4gdGhlIHNhbWUgaG91ciAoYW5kIHNhbWUgZGF5KVxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgNCBTZXB0ZW1iZXIgMjAxNCAwNjowMDowMCBhbmQgNCBTZXB0ZW1iZXIgMDY6MzA6MDAgaW4gdGhlIHNhbWUgaG91cj9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZUhvdXIobmV3IERhdGUoMjAxNCwgOCwgNCwgNiwgMCksIG5ldyBEYXRlKDIwMTQsIDgsIDQsIDYsIDMwKSlcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgNCBTZXB0ZW1iZXIgMjAxNCAwNjowMDowMCBhbmQgNSBTZXB0ZW1iZXIgMDY6MDA6MDAgaW4gdGhlIHNhbWUgaG91cj9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZUhvdXIobmV3IERhdGUoMjAxNCwgOCwgNCwgNiwgMCksIG5ldyBEYXRlKDIwMTQsIDgsIDUsIDYsIDApKVxuICogLy89PiBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1NhbWVIb3VyKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnRTdGFydE9mSG91ciA9IHN0YXJ0T2ZIb3VyKGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgZGF0ZVJpZ2h0U3RhcnRPZkhvdXIgPSBzdGFydE9mSG91cihkaXJ0eURhdGVSaWdodCk7XG4gIHJldHVybiBkYXRlTGVmdFN0YXJ0T2ZIb3VyLmdldFRpbWUoKSA9PT0gZGF0ZVJpZ2h0U3RhcnRPZkhvdXIuZ2V0VGltZSgpO1xufSIsImltcG9ydCBpc1NhbWVXZWVrIGZyb20gXCIuLi9pc1NhbWVXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1NhbWVJU09XZWVrXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSBJU08gd2VlayAoYW5kIHllYXIpP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSBJU08gd2VlayAoYW5kIHllYXIpP1xuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBmaXJzdCBkYXRlIHRvIGNoZWNrXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgc2Vjb25kIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZXMgYXJlIGluIHRoZSBzYW1lIElTTyB3ZWVrIChhbmQgeWVhcilcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDEgU2VwdGVtYmVyIDIwMTQgYW5kIDcgU2VwdGVtYmVyIDIwMTQgaW4gdGhlIHNhbWUgSVNPIHdlZWs/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVJU09XZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCBuZXcgRGF0ZSgyMDE0LCA4LCA3KSlcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgMSBTZXB0ZW1iZXIgMjAxNCBhbmQgMSBTZXB0ZW1iZXIgMjAxNSBpbiB0aGUgc2FtZSBJU08gd2Vlaz9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZUlTT1dlZWsobmV3IERhdGUoMjAxNCwgOCwgMSksIG5ldyBEYXRlKDIwMTUsIDgsIDEpKVxuICogLy89PiBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1NhbWVJU09XZWVrKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICByZXR1cm4gaXNTYW1lV2VlayhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCwge1xuICAgIHdlZWtTdGFydHNPbjogMVxuICB9KTtcbn0iLCJpbXBvcnQgc3RhcnRPZklTT1dlZWtZZWFyIGZyb20gXCIuLi9zdGFydE9mSVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzU2FtZUlTT1dlZWtZZWFyXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSBJU08gd2Vlay1udW1iZXJpbmcgeWVhcj9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgaW4gdGhlIHNhbWUgSVNPIHdlZWstbnVtYmVyaW5nIHllYXI/XG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGZpcnN0IGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBzZWNvbmQgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlcyBhcmUgaW4gdGhlIHNhbWUgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDI5IERlY2VtYmVyIDIwMDMgYW5kIDIgSmFudWFyeSAyMDA1IGluIHRoZSBzYW1lIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyP1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lSVNPV2Vla1llYXIobmV3IERhdGUoMjAwMywgMTEsIDI5KSwgbmV3IERhdGUoMjAwNSwgMCwgMikpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNTYW1lSVNPV2Vla1llYXIoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdFN0YXJ0T2ZZZWFyID0gc3RhcnRPZklTT1dlZWtZZWFyKGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgZGF0ZVJpZ2h0U3RhcnRPZlllYXIgPSBzdGFydE9mSVNPV2Vla1llYXIoZGlydHlEYXRlUmlnaHQpO1xuICByZXR1cm4gZGF0ZUxlZnRTdGFydE9mWWVhci5nZXRUaW1lKCkgPT09IGRhdGVSaWdodFN0YXJ0T2ZZZWFyLmdldFRpbWUoKTtcbn0iLCJpbXBvcnQgc3RhcnRPZk1pbnV0ZSBmcm9tIFwiLi4vc3RhcnRPZk1pbnV0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNTYW1lTWludXRlXG4gKiBAY2F0ZWdvcnkgTWludXRlIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgaW4gdGhlIHNhbWUgbWludXRlIChhbmQgaG91ciBhbmQgZGF5KT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgaW4gdGhlIHNhbWUgbWludXRlIChhbmQgaG91ciBhbmQgZGF5KT9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBmaXJzdCBkYXRlIHRvIGNoZWNrXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgc2Vjb25kIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZXMgYXJlIGluIHRoZSBzYW1lIG1pbnV0ZSAoYW5kIGhvdXIgYW5kIGRheSlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDQgU2VwdGVtYmVyIDIwMTQgMDY6MzA6MDAgYW5kIDQgU2VwdGVtYmVyIDIwMTQgMDY6MzA6MTUgaW4gdGhlIHNhbWUgbWludXRlP1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lTWludXRlKFxuICogICBuZXcgRGF0ZSgyMDE0LCA4LCA0LCA2LCAzMCksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDgsIDQsIDYsIDMwLCAxNSlcbiAqIClcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgNCBTZXB0ZW1iZXIgMjAxNCAwNjozMDowMCBhbmQgNSBTZXB0ZW1iZXIgMjAxNCAwNjozMDowMCBpbiB0aGUgc2FtZSBtaW51dGU/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVNaW51dGUoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDgsIDQsIDYsIDMwKSxcbiAqICAgbmV3IERhdGUoMjAxNCwgOCwgNSwgNiwgMzApXG4gKiApXG4gKiAvLz0+IGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzU2FtZU1pbnV0ZShkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0U3RhcnRPZk1pbnV0ZSA9IHN0YXJ0T2ZNaW51dGUoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBkYXRlUmlnaHRTdGFydE9mTWludXRlID0gc3RhcnRPZk1pbnV0ZShkaXJ0eURhdGVSaWdodCk7XG4gIHJldHVybiBkYXRlTGVmdFN0YXJ0T2ZNaW51dGUuZ2V0VGltZSgpID09PSBkYXRlUmlnaHRTdGFydE9mTWludXRlLmdldFRpbWUoKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzU2FtZU1vbnRoXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSBtb250aCAoYW5kIHllYXIpP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSBtb250aCAoYW5kIHllYXIpP1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGZpcnN0IGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBzZWNvbmQgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlcyBhcmUgaW4gdGhlIHNhbWUgbW9udGggKGFuZCB5ZWFyKVxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgMiBTZXB0ZW1iZXIgMjAxNCBhbmQgMjUgU2VwdGVtYmVyIDIwMTQgaW4gdGhlIHNhbWUgbW9udGg/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVNb250aChuZXcgRGF0ZSgyMDE0LCA4LCAyKSwgbmV3IERhdGUoMjAxNCwgOCwgMjUpKVxuICogLy89PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSAyIFNlcHRlbWJlciAyMDE0IGFuZCAyNSBTZXB0ZW1iZXIgMjAxNSBpbiB0aGUgc2FtZSBtb250aD9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZU1vbnRoKG5ldyBEYXRlKDIwMTQsIDgsIDIpLCBuZXcgRGF0ZSgyMDE1LCA4LCAyNSkpXG4gKiAvLz0+IGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzU2FtZU1vbnRoKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnQgPSB0b0RhdGUoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBkYXRlUmlnaHQgPSB0b0RhdGUoZGlydHlEYXRlUmlnaHQpO1xuICByZXR1cm4gZGF0ZUxlZnQuZ2V0RnVsbFllYXIoKSA9PT0gZGF0ZVJpZ2h0LmdldEZ1bGxZZWFyKCkgJiYgZGF0ZUxlZnQuZ2V0TW9udGgoKSA9PT0gZGF0ZVJpZ2h0LmdldE1vbnRoKCk7XG59IiwiaW1wb3J0IHN0YXJ0T2ZRdWFydGVyIGZyb20gXCIuLi9zdGFydE9mUXVhcnRlci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNTYW1lUXVhcnRlclxuICogQGNhdGVnb3J5IFF1YXJ0ZXIgSGVscGVyc1xuICogQHN1bW1hcnkgQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSBxdWFydGVyIChhbmQgeWVhcik/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIHF1YXJ0ZXIgKGFuZCB5ZWFyKT9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBmaXJzdCBkYXRlIHRvIGNoZWNrXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgc2Vjb25kIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZXMgYXJlIGluIHRoZSBzYW1lIHF1YXJ0ZXIgKGFuZCB5ZWFyKVxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgMSBKYW51YXJ5IDIwMTQgYW5kIDggTWFyY2ggMjAxNCBpbiB0aGUgc2FtZSBxdWFydGVyP1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lUXVhcnRlcihuZXcgRGF0ZSgyMDE0LCAwLCAxKSwgbmV3IERhdGUoMjAxNCwgMiwgOCkpXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDEgSmFudWFyeSAyMDE0IGFuZCAxIEphbnVhcnkgMjAxNSBpbiB0aGUgc2FtZSBxdWFydGVyP1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lUXVhcnRlcihuZXcgRGF0ZSgyMDE0LCAwLCAxKSwgbmV3IERhdGUoMjAxNSwgMCwgMSkpXG4gKiAvLz0+IGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzU2FtZVF1YXJ0ZXIoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdFN0YXJ0T2ZRdWFydGVyID0gc3RhcnRPZlF1YXJ0ZXIoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBkYXRlUmlnaHRTdGFydE9mUXVhcnRlciA9IHN0YXJ0T2ZRdWFydGVyKGRpcnR5RGF0ZVJpZ2h0KTtcbiAgcmV0dXJuIGRhdGVMZWZ0U3RhcnRPZlF1YXJ0ZXIuZ2V0VGltZSgpID09PSBkYXRlUmlnaHRTdGFydE9mUXVhcnRlci5nZXRUaW1lKCk7XG59IiwiaW1wb3J0IHN0YXJ0T2ZTZWNvbmQgZnJvbSBcIi4uL3N0YXJ0T2ZTZWNvbmQvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzU2FtZVNlY29uZFxuICogQGNhdGVnb3J5IFNlY29uZCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIHNlY29uZCAoYW5kIGhvdXIgYW5kIGRheSk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIHNlY29uZCAoYW5kIGhvdXIgYW5kIGRheSk/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgZmlyc3QgZGF0ZSB0byBjaGVja1xuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIHNlY29uZCBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGVzIGFyZSBpbiB0aGUgc2FtZSBzZWNvbmQgKGFuZCBob3VyIGFuZCBkYXkpXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSA0IFNlcHRlbWJlciAyMDE0IDA2OjMwOjE1LjAwMCBhbmQgNCBTZXB0ZW1iZXIgMjAxNCAwNjozMC4xNS41MDAgaW4gdGhlIHNhbWUgc2Vjb25kP1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lU2Vjb25kKFxuICogICBuZXcgRGF0ZSgyMDE0LCA4LCA0LCA2LCAzMCwgMTUpLFxuICogICBuZXcgRGF0ZSgyMDE0LCA4LCA0LCA2LCAzMCwgMTUsIDUwMClcbiAqIClcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgNCBTZXB0ZW1iZXIgMjAxNCAwNjowMDoxNS4wMDAgYW5kIDQgU2VwdGVtYmVyIDIwMTQgMDY6MDEuMTUuMDAwIGluIHRoZSBzYW1lIHNlY29uZD9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZVNlY29uZChcbiAqICAgbmV3IERhdGUoMjAxNCwgOCwgNCwgNiwgMCwgMTUpLFxuICogICBuZXcgRGF0ZSgyMDE0LCA4LCA0LCA2LCAxLCAxNSlcbiAqIClcbiAqIC8vPT4gZmFsc2VcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDQgU2VwdGVtYmVyIDIwMTQgMDY6MDA6MTUuMDAwIGFuZCA1IFNlcHRlbWJlciAyMDE0IDA2OjAwLjE1LjAwMCBpbiB0aGUgc2FtZSBzZWNvbmQ/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVTZWNvbmQoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDgsIDQsIDYsIDAsIDE1KSxcbiAqICAgbmV3IERhdGUoMjAxNCwgOCwgNSwgNiwgMCwgMTUpXG4gKiApXG4gKiAvLz0+IGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzU2FtZVNlY29uZChkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0U3RhcnRPZlNlY29uZCA9IHN0YXJ0T2ZTZWNvbmQoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBkYXRlUmlnaHRTdGFydE9mU2Vjb25kID0gc3RhcnRPZlNlY29uZChkaXJ0eURhdGVSaWdodCk7XG4gIHJldHVybiBkYXRlTGVmdFN0YXJ0T2ZTZWNvbmQuZ2V0VGltZSgpID09PSBkYXRlUmlnaHRTdGFydE9mU2Vjb25kLmdldFRpbWUoKTtcbn0iLCJpbXBvcnQgc3RhcnRPZldlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1NhbWVXZWVrXG4gKiBAY2F0ZWdvcnkgV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIHdlZWsgKGFuZCBtb250aCBhbmQgeWVhcik/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIHdlZWsgKGFuZCBtb250aCBhbmQgeWVhcik/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgZmlyc3QgZGF0ZSB0byBjaGVja1xuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIHNlY29uZCBkYXRlIHRvIGNoZWNrXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZXMgYXJlIGluIHRoZSBzYW1lIHdlZWsgKGFuZCBtb250aCBhbmQgeWVhcilcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLndlZWtTdGFydHNPbmAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDZcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDMxIEF1Z3VzdCAyMDE0IGFuZCA0IFNlcHRlbWJlciAyMDE0IGluIHRoZSBzYW1lIHdlZWs/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVXZWVrKG5ldyBEYXRlKDIwMTQsIDcsIDMxKSwgbmV3IERhdGUoMjAxNCwgOCwgNCkpXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgd2VlayBzdGFydHMgd2l0aCBNb25kYXksXG4gKiAvLyBhcmUgMzEgQXVndXN0IDIwMTQgYW5kIDQgU2VwdGVtYmVyIDIwMTQgaW4gdGhlIHNhbWUgd2Vlaz9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZVdlZWsobmV3IERhdGUoMjAxNCwgNywgMzEpLCBuZXcgRGF0ZSgyMDE0LCA4LCA0KSwge1xuICogICB3ZWVrU3RhcnRzT246IDFcbiAqIH0pXG4gKiAvLz0+IGZhbHNlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSAxIEphbnVhcnkgMjAxNCBhbmQgMSBKYW51YXJ5IDIwMTUgaW4gdGhlIHNhbWUgd2Vlaz9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZVdlZWsobmV3IERhdGUoMjAxNCwgMCwgMSksIG5ldyBEYXRlKDIwMTUsIDAsIDEpKVxuICogLy89PiBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1NhbWVXZWVrKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0LCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnRTdGFydE9mV2VlayA9IHN0YXJ0T2ZXZWVrKGRpcnR5RGF0ZUxlZnQsIG9wdGlvbnMpO1xuICB2YXIgZGF0ZVJpZ2h0U3RhcnRPZldlZWsgPSBzdGFydE9mV2VlayhkaXJ0eURhdGVSaWdodCwgb3B0aW9ucyk7XG4gIHJldHVybiBkYXRlTGVmdFN0YXJ0T2ZXZWVrLmdldFRpbWUoKSA9PT0gZGF0ZVJpZ2h0U3RhcnRPZldlZWsuZ2V0VGltZSgpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNTYW1lWWVhclxuICogQGNhdGVnb3J5IFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSB5ZWFyP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSB5ZWFyP1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGZpcnN0IGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBzZWNvbmQgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlcyBhcmUgaW4gdGhlIHNhbWUgeWVhclxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgMiBTZXB0ZW1iZXIgMjAxNCBhbmQgMjUgU2VwdGVtYmVyIDIwMTQgaW4gdGhlIHNhbWUgeWVhcj9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZVllYXIobmV3IERhdGUoMjAxNCwgOCwgMiksIG5ldyBEYXRlKDIwMTQsIDgsIDI1KSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1NhbWVZZWFyKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnQgPSB0b0RhdGUoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBkYXRlUmlnaHQgPSB0b0RhdGUoZGlydHlEYXRlUmlnaHQpO1xuICByZXR1cm4gZGF0ZUxlZnQuZ2V0RnVsbFllYXIoKSA9PT0gZGF0ZVJpZ2h0LmdldEZ1bGxZZWFyKCk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1NhdHVyZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBTYXR1cmRheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIFNhdHVyZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIFNhdHVyZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXMgMjcgU2VwdGVtYmVyIDIwMTQgU2F0dXJkYXk/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhdHVyZGF5KG5ldyBEYXRlKDIwMTQsIDgsIDI3KSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1NhdHVyZGF5KGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHRvRGF0ZShkaXJ0eURhdGUpLmdldERheSgpID09PSA2O1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNTdW5kYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIFN1bmRheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIFN1bmRheT9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyBTdW5kYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJcyAyMSBTZXB0ZW1iZXIgMjAxNCBTdW5kYXk/XG4gKiBjb25zdCByZXN1bHQgPSBpc1N1bmRheShuZXcgRGF0ZSgyMDE0LCA4LCAyMSkpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNTdW5kYXkoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gdG9EYXRlKGRpcnR5RGF0ZSkuZ2V0RGF5KCkgPT09IDA7XG59IiwiaW1wb3J0IGlzU2FtZUhvdXIgZnJvbSBcIi4uL2lzU2FtZUhvdXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzVGhpc0hvdXJcbiAqIEBjYXRlZ29yeSBIb3VyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBzYW1lIGhvdXIgYXMgdGhlIGN1cnJlbnQgZGF0ZT9cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgc2FtZSBob3VyIGFzIHRoZSBjdXJyZW50IGRhdGU/XG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgRGF0ZS5ub3coKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIGluIHRoaXMgaG91clxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIG5vdyBpcyAyNSBTZXB0ZW1iZXIgMjAxNCAxODozMDoxNS41MDAsXG4gKiAvLyBpcyAyNSBTZXB0ZW1iZXIgMjAxNCAxODowMDowMCBpbiB0aGlzIGhvdXI/XG4gKiBjb25zdCByZXN1bHQgPSBpc1RoaXNIb3VyKG5ldyBEYXRlKDIwMTQsIDgsIDI1LCAxOCkpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUaGlzSG91cihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBpc1NhbWVIb3VyKERhdGUubm93KCksIGRpcnR5RGF0ZSk7XG59IiwiaW1wb3J0IGlzU2FtZUlTT1dlZWsgZnJvbSBcIi4uL2lzU2FtZUlTT1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzVGhpc0lTT1dlZWtcbiAqIEBjYXRlZ29yeSBJU08gV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgc2FtZSBJU08gd2VlayBhcyB0aGUgY3VycmVudCBkYXRlP1xuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBzYW1lIElTTyB3ZWVrIGFzIHRoZSBjdXJyZW50IGRhdGU/XG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYERhdGUubm93KClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyBpbiB0aGlzIElTTyB3ZWVrXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgMjUgU2VwdGVtYmVyIDIwMTQsIGlzIDIyIFNlcHRlbWJlciAyMDE0IGluIHRoaXMgSVNPIHdlZWs/XG4gKiBjb25zdCByZXN1bHQgPSBpc1RoaXNJU09XZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIyKSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RoaXNJU09XZWVrKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGlzU2FtZUlTT1dlZWsoZGlydHlEYXRlLCBEYXRlLm5vdygpKTtcbn0iLCJpbXBvcnQgaXNTYW1lTWludXRlIGZyb20gXCIuLi9pc1NhbWVNaW51dGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzVGhpc01pbnV0ZVxuICogQGNhdGVnb3J5IE1pbnV0ZSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgc2FtZSBtaW51dGUgYXMgdGhlIGN1cnJlbnQgZGF0ZT9cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgc2FtZSBtaW51dGUgYXMgdGhlIGN1cnJlbnQgZGF0ZT9cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBEYXRlLm5vdygpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgaW4gdGhpcyBtaW51dGVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiBub3cgaXMgMjUgU2VwdGVtYmVyIDIwMTQgMTg6MzA6MTUuNTAwLFxuICogLy8gaXMgMjUgU2VwdGVtYmVyIDIwMTQgMTg6MzA6MDAgaW4gdGhpcyBtaW51dGU/XG4gKiBjb25zdCByZXN1bHQgPSBpc1RoaXNNaW51dGUobmV3IERhdGUoMjAxNCwgOCwgMjUsIDE4LCAzMCkpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUaGlzTWludXRlKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGlzU2FtZU1pbnV0ZShEYXRlLm5vdygpLCBkaXJ0eURhdGUpO1xufSIsImltcG9ydCBpc1NhbWVNb250aCBmcm9tIFwiLi4vaXNTYW1lTW9udGgvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzVGhpc01vbnRoXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIHNhbWUgbW9udGggYXMgdGhlIGN1cnJlbnQgZGF0ZT9cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgc2FtZSBtb250aCBhcyB0aGUgY3VycmVudCBkYXRlP1xuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYERhdGUubm93KClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyBpbiB0aGlzIG1vbnRoXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgMjUgU2VwdGVtYmVyIDIwMTQsIGlzIDE1IFNlcHRlbWJlciAyMDE0IGluIHRoaXMgbW9udGg/XG4gKiBjb25zdCByZXN1bHQgPSBpc1RoaXNNb250aChuZXcgRGF0ZSgyMDE0LCA4LCAxNSkpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUaGlzTW9udGgoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gaXNTYW1lTW9udGgoRGF0ZS5ub3coKSwgZGlydHlEYXRlKTtcbn0iLCJpbXBvcnQgaXNTYW1lUXVhcnRlciBmcm9tIFwiLi4vaXNTYW1lUXVhcnRlci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNUaGlzUXVhcnRlclxuICogQGNhdGVnb3J5IFF1YXJ0ZXIgSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIHNhbWUgcXVhcnRlciBhcyB0aGUgY3VycmVudCBkYXRlP1xuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBzYW1lIHF1YXJ0ZXIgYXMgdGhlIGN1cnJlbnQgZGF0ZT9cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBEYXRlLm5vdygpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgaW4gdGhpcyBxdWFydGVyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgMjUgU2VwdGVtYmVyIDIwMTQsIGlzIDIgSnVseSAyMDE0IGluIHRoaXMgcXVhcnRlcj9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzVGhpc1F1YXJ0ZXIobmV3IERhdGUoMjAxNCwgNiwgMikpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUaGlzUXVhcnRlcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBpc1NhbWVRdWFydGVyKERhdGUubm93KCksIGRpcnR5RGF0ZSk7XG59IiwiaW1wb3J0IGlzU2FtZVNlY29uZCBmcm9tIFwiLi4vaXNTYW1lU2Vjb25kL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1RoaXNTZWNvbmRcbiAqIEBjYXRlZ29yeSBTZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIHNhbWUgc2Vjb25kIGFzIHRoZSBjdXJyZW50IGRhdGU/XG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIHNhbWUgc2Vjb25kIGFzIHRoZSBjdXJyZW50IGRhdGU/XG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgRGF0ZS5ub3coKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIGluIHRoaXMgc2Vjb25kXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgbm93IGlzIDI1IFNlcHRlbWJlciAyMDE0IDE4OjMwOjE1LjUwMCxcbiAqIC8vIGlzIDI1IFNlcHRlbWJlciAyMDE0IDE4OjMwOjE1LjAwMCBpbiB0aGlzIHNlY29uZD9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzVGhpc1NlY29uZChuZXcgRGF0ZSgyMDE0LCA4LCAyNSwgMTgsIDMwLCAxNSkpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUaGlzU2Vjb25kKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGlzU2FtZVNlY29uZChEYXRlLm5vdygpLCBkaXJ0eURhdGUpO1xufSIsImltcG9ydCBpc1NhbWVXZWVrIGZyb20gXCIuLi9pc1NhbWVXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1RoaXNXZWVrXG4gKiBAY2F0ZWdvcnkgV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgc2FtZSB3ZWVrIGFzIHRoZSBjdXJyZW50IGRhdGU/XG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIHNhbWUgd2VlayBhcyB0aGUgY3VycmVudCBkYXRlP1xuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYERhdGUubm93KClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSB0aGUgb2JqZWN0IHdpdGggb3B0aW9uc1xuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIGluIHRoaXMgd2Vla1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDI1IFNlcHRlbWJlciAyMDE0LCBpcyAyMSBTZXB0ZW1iZXIgMjAxNCBpbiB0aGlzIHdlZWs/XG4gKiBjb25zdCByZXN1bHQgPSBpc1RoaXNXZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIxKSlcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyAyNSBTZXB0ZW1iZXIgMjAxNCBhbmQgd2VlayBzdGFydHMgd2l0aCBNb25kYXlcbiAqIC8vIGlzIDIxIFNlcHRlbWJlciAyMDE0IGluIHRoaXMgd2Vlaz9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzVGhpc1dlZWsobmV3IERhdGUoMjAxNCwgOCwgMjEpLCB7IHdlZWtTdGFydHNPbjogMSB9KVxuICogLy89PiBmYWxzZVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzVGhpc1dlZWsoZGlydHlEYXRlLCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gaXNTYW1lV2VlayhkaXJ0eURhdGUsIERhdGUubm93KCksIG9wdGlvbnMpO1xufSIsImltcG9ydCBpc1NhbWVZZWFyIGZyb20gXCIuLi9pc1NhbWVZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1RoaXNZZWFyXG4gKiBAY2F0ZWdvcnkgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgc2FtZSB5ZWFyIGFzIHRoZSBjdXJyZW50IGRhdGU/XG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIHNhbWUgeWVhciBhcyB0aGUgY3VycmVudCBkYXRlP1xuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYERhdGUubm93KClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyBpbiB0aGlzIHllYXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyAyNSBTZXB0ZW1iZXIgMjAxNCwgaXMgMiBKdWx5IDIwMTQgaW4gdGhpcyB5ZWFyP1xuICogY29uc3QgcmVzdWx0ID0gaXNUaGlzWWVhcihuZXcgRGF0ZSgyMDE0LCA2LCAyKSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RoaXNZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGlzU2FtZVllYXIoZGlydHlEYXRlLCBEYXRlLm5vdygpKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzVGh1cnNkYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIFRodXJzZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgVGh1cnNkYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgVGh1cnNkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJcyAyNSBTZXB0ZW1iZXIgMjAxNCBUaHVyc2RheT9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzVGh1cnNkYXkobmV3IERhdGUoMjAxNCwgOCwgMjUpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzVGh1cnNkYXkoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gdG9EYXRlKGRpcnR5RGF0ZSkuZ2V0RGF5KCkgPT09IDQ7XG59IiwiaW1wb3J0IGlzU2FtZURheSBmcm9tIFwiLi4vaXNTYW1lRGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1RvZGF5XG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIHRvZGF5P1xuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIHRvZGF5P1xuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYERhdGUubm93KClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyB0b2RheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDYgT2N0b2JlciAyMDE0LCBpcyA2IE9jdG9iZXIgMTQ6MDA6MDAgdG9kYXk/XG4gKiBjb25zdCByZXN1bHQgPSBpc1RvZGF5KG5ldyBEYXRlKDIwMTQsIDksIDYsIDE0LCAwKSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RvZGF5KGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGlzU2FtZURheShkaXJ0eURhdGUsIERhdGUubm93KCkpO1xufSIsImltcG9ydCBhZGREYXlzIGZyb20gXCIuLi9hZGREYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgaXNTYW1lRGF5IGZyb20gXCIuLi9pc1NhbWVEYXkvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzVG9tb3Jyb3dcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgdG9tb3Jyb3c/XG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgdG9tb3Jyb3c/XG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgRGF0ZS5ub3coKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIHRvbW9ycm93XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgNiBPY3RvYmVyIDIwMTQsIGlzIDcgT2N0b2JlciAxNDowMDowMCB0b21vcnJvdz9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzVG9tb3Jyb3cobmV3IERhdGUoMjAxNCwgOSwgNywgMTQsIDApKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzVG9tb3Jyb3coZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gaXNTYW1lRGF5KGRpcnR5RGF0ZSwgYWRkRGF5cyhEYXRlLm5vdygpLCAxKSk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1R1ZXNkYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIFR1ZXNkYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBUdWVzZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIFR1ZXNkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJcyAyMyBTZXB0ZW1iZXIgMjAxNCBUdWVzZGF5P1xuICogY29uc3QgcmVzdWx0ID0gaXNUdWVzZGF5KG5ldyBEYXRlKDIwMTQsIDgsIDIzKSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1R1ZXNkYXkoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gdG9EYXRlKGRpcnR5RGF0ZSkuZ2V0RGF5KCkgPT09IDI7XG59IiwiaW1wb3J0IGlzRGF0ZSBmcm9tIFwiLi4vaXNEYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzVmFsaWRcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgdmFsaWQ/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm5zIGZhbHNlIGlmIGFyZ3VtZW50IGlzIEludmFsaWQgRGF0ZSBhbmQgdHJ1ZSBvdGhlcndpc2UuXG4gKiBBcmd1bWVudCBpcyBjb252ZXJ0ZWQgdG8gRGF0ZSB1c2luZyBgdG9EYXRlYC4gU2VlIFt0b0RhdGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvdG9EYXRlfVxuICogSW52YWxpZCBEYXRlIGlzIGEgRGF0ZSwgd2hvc2UgdGltZSB2YWx1ZSBpcyBOYU4uXG4gKlxuICogVGltZSB2YWx1ZSBvZiBEYXRlOiBodHRwOi8vZXM1LmdpdGh1Yi5pby8jeDE1LjkuMS4xXG4gKlxuICogQHBhcmFtIHsqfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyB2YWxpZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciB0aGUgdmFsaWQgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzVmFsaWQobmV3IERhdGUoMjAxNCwgMSwgMzEpKVxuICogLy89PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciB0aGUgdmFsdWUsIGNvbnZlcnRhYmxlIGludG8gYSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gaXNWYWxpZCgxMzkzODA0ODAwMDAwKVxuICogLy89PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciB0aGUgaW52YWxpZCBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gaXNWYWxpZChuZXcgRGF0ZSgnJykpXG4gKiAvLz0+IGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzVmFsaWQoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICBpZiAoIWlzRGF0ZShkaXJ0eURhdGUpICYmIHR5cGVvZiBkaXJ0eURhdGUgIT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHJldHVybiAhaXNOYU4oTnVtYmVyKGRhdGUpKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzV2VkbmVzZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBXZWRuZXNkYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBXZWRuZXNkYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgV2VkbmVzZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXMgMjQgU2VwdGVtYmVyIDIwMTQgV2VkbmVzZGF5P1xuICogY29uc3QgcmVzdWx0ID0gaXNXZWRuZXNkYXkobmV3IERhdGUoMjAxNCwgOCwgMjQpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzV2VkbmVzZGF5KGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHRvRGF0ZShkaXJ0eURhdGUpLmdldERheSgpID09PSAzO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNXZWVrZW5kXG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBEb2VzIHRoZSBnaXZlbiBkYXRlIGZhbGwgb24gYSB3ZWVrZW5kP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogRG9lcyB0aGUgZ2l2ZW4gZGF0ZSBmYWxsIG9uIGEgd2Vla2VuZD9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBmYWxscyBvbiBhIHdlZWtlbmRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBEb2VzIDUgT2N0b2JlciAyMDE0IGZhbGwgb24gYSB3ZWVrZW5kP1xuICogY29uc3QgcmVzdWx0ID0gaXNXZWVrZW5kKG5ldyBEYXRlKDIwMTQsIDksIDUpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzV2Vla2VuZChkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkYXkgPSBkYXRlLmdldERheSgpO1xuICByZXR1cm4gZGF5ID09PSAwIHx8IGRheSA9PT0gNjtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzV2l0aGluSW50ZXJ2YWxcbiAqIEBjYXRlZ29yeSBJbnRlcnZhbCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSB3aXRoaW4gdGhlIGludGVydmFsP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgd2l0aGluIHRoZSBpbnRlcnZhbD8gKEluY2x1ZGluZyBzdGFydCBhbmQgZW5kLilcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7SW50ZXJ2YWx9IGludGVydmFsIC0gdGhlIGludGVydmFsIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgd2l0aGluIHRoZSBpbnRlcnZhbFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gVGhlIHN0YXJ0IG9mIGFuIGludGVydmFsIGNhbm5vdCBiZSBhZnRlciBpdHMgZW5kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBEYXRlIGluIGludGVydmFsIGNhbm5vdCBiZSBgSW52YWxpZCBEYXRlYFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgdGhlIGRhdGUgd2l0aGluIHRoZSBpbnRlcnZhbDpcbiAqIGlzV2l0aGluSW50ZXJ2YWwobmV3IERhdGUoMjAxNCwgMCwgMyksIHtcbiAqICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDAsIDEpLFxuICogICBlbmQ6IG5ldyBEYXRlKDIwMTQsIDAsIDcpXG4gKiB9KVxuICogLy89PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciB0aGUgZGF0ZSBvdXRzaWRlIG9mIHRoZSBpbnRlcnZhbDpcbiAqIGlzV2l0aGluSW50ZXJ2YWwobmV3IERhdGUoMjAxNCwgMCwgMTApLCB7XG4gKiAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAwLCAxKSxcbiAqICAgZW5kOiBuZXcgRGF0ZSgyMDE0LCAwLCA3KVxuICogfSlcbiAqIC8vPT4gZmFsc2VcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIGRhdGUgZXF1YWwgdG8gaW50ZXJ2YWwgc3RhcnQ6XG4gKiBpc1dpdGhpbkludGVydmFsKGRhdGUsIHsgc3RhcnQsIGVuZDogZGF0ZSB9KSAvLyA9PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciBkYXRlIGVxdWFsIHRvIGludGVydmFsIGVuZDpcbiAqIGlzV2l0aGluSW50ZXJ2YWwoZGF0ZSwgeyBzdGFydDogZGF0ZSwgZW5kIH0pIC8vID0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNXaXRoaW5JbnRlcnZhbChkaXJ0eURhdGUsIGludGVydmFsKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgdGltZSA9IHRvRGF0ZShkaXJ0eURhdGUpLmdldFRpbWUoKTtcbiAgdmFyIHN0YXJ0VGltZSA9IHRvRGF0ZShpbnRlcnZhbC5zdGFydCkuZ2V0VGltZSgpO1xuICB2YXIgZW5kVGltZSA9IHRvRGF0ZShpbnRlcnZhbC5lbmQpLmdldFRpbWUoKTtcblxuICAvLyBUaHJvdyBhbiBleGNlcHRpb24gaWYgc3RhcnQgZGF0ZSBpcyBhZnRlciBlbmQgZGF0ZSBvciBpZiBhbnkgZGF0ZSBpcyBgSW52YWxpZCBEYXRlYFxuICBpZiAoIShzdGFydFRpbWUgPD0gZW5kVGltZSkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBpbnRlcnZhbCcpO1xuICB9XG4gIHJldHVybiB0aW1lID49IHN0YXJ0VGltZSAmJiB0aW1lIDw9IGVuZFRpbWU7XG59IiwiaW1wb3J0IGlzU2FtZURheSBmcm9tIFwiLi4vaXNTYW1lRGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgc3ViRGF5cyBmcm9tIFwiLi4vc3ViRGF5cy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNZZXN0ZXJkYXlcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgeWVzdGVyZGF5P1xuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIHllc3RlcmRheT9cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBEYXRlLm5vdygpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgeWVzdGVyZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgNiBPY3RvYmVyIDIwMTQsIGlzIDUgT2N0b2JlciAxNDowMDowMCB5ZXN0ZXJkYXk/XG4gKiBjb25zdCByZXN1bHQgPSBpc1llc3RlcmRheShuZXcgRGF0ZSgyMDE0LCA5LCA1LCAxNCwgMCkpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNZZXN0ZXJkYXkoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gaXNTYW1lRGF5KGRpcnR5RGF0ZSwgc3ViRGF5cyhEYXRlLm5vdygpLCAxKSk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBsYXN0RGF5T2ZEZWNhZGVcbiAqIEBjYXRlZ29yeSBEZWNhZGUgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBsYXN0IGRheSBvZiBhIGRlY2FkZSBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGxhc3QgZGF5IG9mIGEgZGVjYWRlIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbGFzdCBkYXkgb2YgYSBkZWNhZGVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgbGFzdCBkYXkgb2YgYSBkZWNhZGUgZm9yIDIxIERlY2VtYmVyIDIwMTIgMjE6MTI6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBsYXN0RGF5T2ZEZWNhZGUobmV3IERhdGUoMjAxMiwgMTEsIDIxLCAyMSwgMTIsIDAwKSlcbiAqIC8vPT4gV2VkIERlYyAzMSAyMDE5IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxhc3REYXlPZkRlY2FkZShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICB2YXIgZGVjYWRlID0gOSArIE1hdGguZmxvb3IoeWVhciAvIDEwKSAqIDEwO1xuICBkYXRlLnNldEZ1bGxZZWFyKGRlY2FkZSArIDEsIDAsIDApO1xuICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgbGFzdERheU9mV2VlayBmcm9tIFwiLi4vbGFzdERheU9mV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbGFzdERheU9mSVNPV2Vla1xuICogQGNhdGVnb3J5IElTTyBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgbGFzdCBkYXkgb2YgYW4gSVNPIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBsYXN0IGRheSBvZiBhbiBJU08gd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbGFzdCBkYXkgb2YgYW4gSVNPIHdlZWtcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgbGFzdCBkYXkgb2YgYW4gSVNPIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBsYXN0RGF5T2ZJU09XZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz0+IFN1biBTZXAgMDcgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsYXN0RGF5T2ZJU09XZWVrKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGxhc3REYXlPZldlZWsoZGlydHlEYXRlLCB7XG4gICAgd2Vla1N0YXJ0c09uOiAxXG4gIH0pO1xufSIsImltcG9ydCBnZXRJU09XZWVrWWVhciBmcm9tIFwiLi4vZ2V0SVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mSVNPV2VlayBmcm9tIFwiLi4vc3RhcnRPZklTT1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGxhc3REYXlPZklTT1dlZWtZZWFyXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBsYXN0IGRheSBvZiBhbiBJU08gd2Vlay1udW1iZXJpbmcgeWVhciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGxhc3QgZGF5IG9mIGFuIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyLFxuICogd2hpY2ggYWx3YXlzIHN0YXJ0cyAzIGRheXMgYmVmb3JlIHRoZSB5ZWFyJ3MgZmlyc3QgVGh1cnNkYXkuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZW5kIG9mIGFuIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGxhc3QgZGF5IG9mIGFuIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyIGZvciAyIEp1bHkgMjAwNTpcbiAqIGNvbnN0IHJlc3VsdCA9IGxhc3REYXlPZklTT1dlZWtZZWFyKG5ldyBEYXRlKDIwMDUsIDYsIDIpKVxuICogLy89PiBTdW4gSmFuIDAxIDIwMDYgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGFzdERheU9mSVNPV2Vla1llYXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgeWVhciA9IGdldElTT1dlZWtZZWFyKGRpcnR5RGF0ZSk7XG4gIHZhciBmb3VydGhPZkphbnVhcnkgPSBuZXcgRGF0ZSgwKTtcbiAgZm91cnRoT2ZKYW51YXJ5LnNldEZ1bGxZZWFyKHllYXIgKyAxLCAwLCA0KTtcbiAgZm91cnRoT2ZKYW51YXJ5LnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgZGF0ZSA9IHN0YXJ0T2ZJU09XZWVrKGZvdXJ0aE9mSmFudWFyeSk7XG4gIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSAtIDEpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGxhc3REYXlPZk1vbnRoXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBsYXN0IGRheSBvZiBhIG1vbnRoIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgbGFzdCBkYXkgb2YgYSBtb250aCBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBsYXN0IGRheSBvZiBhIG1vbnRoXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGxhc3QgZGF5IG9mIGEgbW9udGggZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBsYXN0RGF5T2ZNb250aChuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89PiBUdWUgU2VwIDMwIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGFzdERheU9mTW9udGgoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgbW9udGggPSBkYXRlLmdldE1vbnRoKCk7XG4gIGRhdGUuc2V0RnVsbFllYXIoZGF0ZS5nZXRGdWxsWWVhcigpLCBtb250aCArIDEsIDApO1xuICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGxhc3REYXlPZlF1YXJ0ZXJcbiAqIEBjYXRlZ29yeSBRdWFydGVyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgbGFzdCBkYXkgb2YgYSB5ZWFyIHF1YXJ0ZXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBsYXN0IGRheSBvZiBhIHllYXIgcXVhcnRlciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0gezB8MXwyfSBbb3B0aW9ucy5hZGRpdGlvbmFsRGlnaXRzPTJdIC0gcGFzc2VkIHRvIGB0b0RhdGVgLiBTZWUgW3RvRGF0ZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy90b0RhdGV9XG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGxhc3QgZGF5IG9mIGEgcXVhcnRlclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5hZGRpdGlvbmFsRGlnaXRzYCBtdXN0IGJlIDAsIDEgb3IgMlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgbGFzdCBkYXkgb2YgYSBxdWFydGVyIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gbGFzdERheU9mUXVhcnRlcihuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89PiBUdWUgU2VwIDMwIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGFzdERheU9mUXVhcnRlcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBjdXJyZW50TW9udGggPSBkYXRlLmdldE1vbnRoKCk7XG4gIHZhciBtb250aCA9IGN1cnJlbnRNb250aCAtIGN1cnJlbnRNb250aCAlIDMgKyAzO1xuICBkYXRlLnNldE1vbnRoKG1vbnRoLCAwKTtcbiAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL19saWIvZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbGFzdERheU9mV2Vla1xuICogQGNhdGVnb3J5IFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBsYXN0IGRheSBvZiBhIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBsYXN0IGRheSBvZiBhIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHJldHVybnMge0RhdGV9IHRoZSBsYXN0IGRheSBvZiBhIHdlZWtcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgbGFzdCBkYXkgb2YgYSB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gbGFzdERheU9mV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89PiBTYXQgU2VwIDA2IDIwMTQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdGhlIHdlZWsgc3RhcnRzIG9uIE1vbmRheSwgdGhlIGxhc3QgZGF5IG9mIHRoZSB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gbGFzdERheU9mV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApLCB7IHdlZWtTdGFydHNPbjogMSB9KVxuICogLy89PiBTdW4gU2VwIDA3IDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGFzdERheU9mV2VlayhkaXJ0eURhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9yZWYyLCBfcmVmMywgX29wdGlvbnMkd2Vla1N0YXJ0c09uLCBfb3B0aW9ucyRsb2NhbGUsIF9vcHRpb25zJGxvY2FsZSRvcHRpbywgX2RlZmF1bHRPcHRpb25zJGxvY2FsLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyO1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIHdlZWtTdGFydHNPbiA9IHRvSW50ZWdlcigoX3JlZiA9IChfcmVmMiA9IChfcmVmMyA9IChfb3B0aW9ucyR3ZWVrU3RhcnRzT24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gIT09IHZvaWQgMCA/IF9vcHRpb25zJHdlZWtTdGFydHNPbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPSBfb3B0aW9ucyRsb2NhbGUub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlJG9wdGlvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUkb3B0aW8ud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiBkZWZhdWx0T3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDAgPyBfcmVmMiA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsMi53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiAwKTtcblxuICAvLyBUZXN0IGlmIHdlZWtTdGFydHNPbiBpcyBiZXR3ZWVuIDAgYW5kIDYgX2FuZF8gaXMgbm90IE5hTlxuICBpZiAoISh3ZWVrU3RhcnRzT24gPj0gMCAmJiB3ZWVrU3RhcnRzT24gPD0gNikpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignd2Vla1N0YXJ0c09uIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2Jyk7XG4gIH1cbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRheSA9IGRhdGUuZ2V0RGF5KCk7XG4gIHZhciBkaWZmID0gKGRheSA8IHdlZWtTdGFydHNPbiA/IC03IDogMCkgKyA2IC0gKGRheSAtIHdlZWtTdGFydHNPbik7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIGRpZmYpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGxhc3REYXlPZlllYXJcbiAqIEBjYXRlZ29yeSBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgbGFzdCBkYXkgb2YgYSB5ZWFyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgbGFzdCBkYXkgb2YgYSB5ZWFyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGxhc3QgZGF5IG9mIGEgeWVhclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBsYXN0IGRheSBvZiBhIHllYXIgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBsYXN0RGF5T2ZZZWFyKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMDApKVxuICogLy89PiBXZWQgRGVjIDMxIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGFzdERheU9mWWVhcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICBkYXRlLnNldEZ1bGxZZWFyKHllYXIgKyAxLCAwLCAwKTtcbiAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgZm9ybWF0dGVycyBmcm9tIFwiLi4vX2xpYi9mb3JtYXQvbGlnaHRGb3JtYXR0ZXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vX2xpYi9nZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgaXNWYWxpZCBmcm9tIFwiLi4vaXNWYWxpZC9pbmRleC5qc1wiO1xuaW1wb3J0IHN1Yk1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vc3ViTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiOyAvLyBUaGlzIFJlZ0V4cCBjb25zaXN0cyBvZiB0aHJlZSBwYXJ0cyBzZXBhcmF0ZWQgYnkgYHxgOlxuLy8gLSAoXFx3KVxcMSogbWF0Y2hlcyBhbnkgc2VxdWVuY2VzIG9mIHRoZSBzYW1lIGxldHRlclxuLy8gLSAnJyBtYXRjaGVzIHR3byBxdW90ZSBjaGFyYWN0ZXJzIGluIGEgcm93XG4vLyAtICcoJyd8W14nXSkrKCd8JCkgbWF0Y2hlcyBhbnl0aGluZyBzdXJyb3VuZGVkIGJ5IHR3byBxdW90ZSBjaGFyYWN0ZXJzICgnKSxcbi8vICAgZXhjZXB0IGEgc2luZ2xlIHF1b3RlIHN5bWJvbCwgd2hpY2ggZW5kcyB0aGUgc2VxdWVuY2UuXG4vLyAgIFR3byBxdW90ZSBjaGFyYWN0ZXJzIGRvIG5vdCBlbmQgdGhlIHNlcXVlbmNlLlxuLy8gICBJZiB0aGVyZSBpcyBubyBtYXRjaGluZyBzaW5nbGUgcXVvdGVcbi8vICAgdGhlbiB0aGUgc2VxdWVuY2Ugd2lsbCBjb250aW51ZSB1bnRpbCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuXG4vLyAtIC4gbWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3RlciB1bm1hdGNoZWQgYnkgcHJldmlvdXMgcGFydHMgb2YgdGhlIFJlZ0V4cHNcbnZhciBmb3JtYXR0aW5nVG9rZW5zUmVnRXhwID0gLyhcXHcpXFwxKnwnJ3wnKCcnfFteJ10pKygnfCQpfC4vZztcbnZhciBlc2NhcGVkU3RyaW5nUmVnRXhwID0gL14nKFteXSo/KSc/JC87XG52YXIgZG91YmxlUXVvdGVSZWdFeHAgPSAvJycvZztcbnZhciB1bmVzY2FwZWRMYXRpbkNoYXJhY3RlclJlZ0V4cCA9IC9bYS16QS1aXS87XG5cbi8qKlxuICogQG5hbWUgbGlnaHRGb3JtYXRcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgRm9ybWF0IHRoZSBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcgaW4gdGhlIGdpdmVuIGZvcm1hdC4gVW5saWtlIGBmb3JtYXRgLFxuICogYGxpZ2h0Rm9ybWF0YCBkb2Vzbid0IHVzZSBsb2NhbGVzIGFuZCBvdXRwdXRzIGRhdGUgdXNpbmcgdGhlIG1vc3QgcG9wdWxhciB0b2tlbnMuXG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYGxpZ2h0Rm9ybWF0YCB0b2tlbnMgZGlmZmVyIGZyb20gTW9tZW50LmpzIGFuZCBvdGhlciBsaWJyYXJpZXMuXG4gKiA+IFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICpcbiAqIFRoZSBjaGFyYWN0ZXJzIHdyYXBwZWQgYmV0d2VlbiB0d28gc2luZ2xlIHF1b3RlcyBjaGFyYWN0ZXJzICgnKSBhcmUgZXNjYXBlZC5cbiAqIFR3byBzaW5nbGUgcXVvdGVzIGluIGEgcm93LCB3aGV0aGVyIGluc2lkZSBvciBvdXRzaWRlIGEgcXVvdGVkIHNlcXVlbmNlLCByZXByZXNlbnQgYSAncmVhbCcgc2luZ2xlIHF1b3RlLlxuICpcbiAqIEZvcm1hdCBvZiB0aGUgc3RyaW5nIGlzIGJhc2VkIG9uIFVuaWNvZGUgVGVjaG5pY2FsIFN0YW5kYXJkICMzNTpcbiAqIGh0dHBzOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIzNS90cjM1LWRhdGVzLmh0bWwjRGF0ZV9GaWVsZF9TeW1ib2xfVGFibGVcbiAqXG4gKiBBY2NlcHRlZCBwYXR0ZXJuczpcbiAqIHwgVW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBhdHRlcm4gfCBSZXN1bHQgZXhhbXBsZXMgICAgICAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8IEFNLCBQTSAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhLi5hYWEgIHwgQU0sIFBNICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFhYWEgICAgfCBhLm0uLCBwLm0uICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWFhYWEgICB8IGEsIHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IENhbGVuZGFyIHllYXIgICAgICAgICAgICAgICAgICAgfCB5ICAgICAgIHwgNDQsIDEsIDE5MDAsIDIwMTcgICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHl5ICAgICAgfCA0NCwgMDEsIDAwLCAxNyAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeXl5ICAgICB8IDA0NCwgMDAxLCAwMDAsIDAxNyAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB5eXl5ICAgIHwgMDA0NCwgMDAwMSwgMTkwMCwgMjAxNyAgICAgICAgICAgIHxcbiAqIHwgTW9udGggKGZvcm1hdHRpbmcpICAgICAgICAgICAgICB8IE0gICAgICAgfCAxLCAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTU0gICAgICB8IDAxLCAwMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICB8XG4gKiB8IERheSBvZiBtb250aCAgICAgICAgICAgICAgICAgICAgfCBkICAgICAgIHwgMSwgMiwgLi4uLCAzMSAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRkICAgICAgfCAwMSwgMDIsIC4uLiwgMzEgICAgICAgICAgICAgICAgICAgfFxuICogfCBIb3VyIFsxLTEyXSAgICAgICAgICAgICAgICAgICAgIHwgaCAgICAgICB8IDEsIDIsIC4uLiwgMTEsIDEyICAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBoaCAgICAgIHwgMDEsIDAyLCAuLi4sIDExLCAxMiAgICAgICAgICAgICAgIHxcbiAqIHwgSG91ciBbMC0yM10gICAgICAgICAgICAgICAgICAgICB8IEggICAgICAgfCAwLCAxLCAyLCAuLi4sIDIzICAgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSEggICAgICB8IDAwLCAwMSwgMDIsIC4uLiwgMjMgICAgICAgICAgICAgICB8XG4gKiB8IE1pbnV0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCBtICAgICAgIHwgMCwgMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG1tICAgICAgfCAwMCwgMDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgfFxuICogfCBTZWNvbmQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcyAgICAgICB8IDAsIDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzcyAgICAgIHwgMDAsIDAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgRnJhY3Rpb24gb2Ygc2Vjb25kICAgICAgICAgICAgICB8IFMgICAgICAgfCAwLCAxLCAuLi4sIDkgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU1MgICAgICB8IDAwLCAwMSwgLi4uLCA5OSAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTU1MgICAgIHwgMDAwLCAwMDEsIC4uLiwgOTk5ICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNTU1MgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHBhcmFtIHtTdHJpbmd9IGZvcm1hdCAtIHRoZSBzdHJpbmcgb2YgdG9rZW5zXG4gKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBmb3JtYXQgc3RyaW5nIGNvbnRhaW5zIGFuIHVuZXNjYXBlZCBsYXRpbiBhbHBoYWJldCBjaGFyYWN0ZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcmVzdWx0ID0gbGlnaHRGb3JtYXQobmV3IERhdGUoMjAxNCwgMSwgMTEpLCAneXl5eS1NTS1kZCcpXG4gKiAvLz0+ICcyMDE0LTAyLTExJ1xuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxpZ2h0Rm9ybWF0KGRpcnR5RGF0ZSwgZm9ybWF0U3RyKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgb3JpZ2luYWxEYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIGlmICghaXNWYWxpZChvcmlnaW5hbERhdGUpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgdGltZSB2YWx1ZScpO1xuICB9XG5cbiAgLy8gQ29udmVydCB0aGUgZGF0ZSBpbiBzeXN0ZW0gdGltZXpvbmUgdG8gdGhlIHNhbWUgZGF0ZSBpbiBVVEMrMDA6MDAgdGltZXpvbmUuXG4gIC8vIFRoaXMgZW5zdXJlcyB0aGF0IHdoZW4gVVRDIGZ1bmN0aW9ucyB3aWxsIGJlIGltcGxlbWVudGVkLCBsb2NhbGVzIHdpbGwgYmUgY29tcGF0aWJsZSB3aXRoIHRoZW0uXG4gIC8vIFNlZSBhbiBpc3N1ZSBhYm91dCBVVEMgZnVuY3Rpb25zOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvaXNzdWVzLzM3NlxuICB2YXIgdGltZXpvbmVPZmZzZXQgPSBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKG9yaWdpbmFsRGF0ZSk7XG4gIHZhciB1dGNEYXRlID0gc3ViTWlsbGlzZWNvbmRzKG9yaWdpbmFsRGF0ZSwgdGltZXpvbmVPZmZzZXQpO1xuICB2YXIgdG9rZW5zID0gZm9ybWF0U3RyLm1hdGNoKGZvcm1hdHRpbmdUb2tlbnNSZWdFeHApO1xuXG4gIC8vIFRoZSBvbmx5IGNhc2Ugd2hlbiBmb3JtYXR0aW5nVG9rZW5zUmVnRXhwIGRvZXNuJ3QgbWF0Y2ggdGhlIHN0cmluZyBpcyB3aGVuIGl0J3MgZW1wdHlcbiAgaWYgKCF0b2tlbnMpIHJldHVybiAnJztcbiAgdmFyIHJlc3VsdCA9IHRva2Vucy5tYXAoZnVuY3Rpb24gKHN1YnN0cmluZykge1xuICAgIC8vIFJlcGxhY2UgdHdvIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzIHdpdGggb25lIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJcbiAgICBpZiAoc3Vic3RyaW5nID09PSBcIicnXCIpIHtcbiAgICAgIHJldHVybiBcIidcIjtcbiAgICB9XG4gICAgdmFyIGZpcnN0Q2hhcmFjdGVyID0gc3Vic3RyaW5nWzBdO1xuICAgIGlmIChmaXJzdENoYXJhY3RlciA9PT0gXCInXCIpIHtcbiAgICAgIHJldHVybiBjbGVhbkVzY2FwZWRTdHJpbmcoc3Vic3RyaW5nKTtcbiAgICB9XG4gICAgdmFyIGZvcm1hdHRlciA9IGZvcm1hdHRlcnNbZmlyc3RDaGFyYWN0ZXJdO1xuICAgIGlmIChmb3JtYXR0ZXIpIHtcbiAgICAgIHJldHVybiBmb3JtYXR0ZXIodXRjRGF0ZSwgc3Vic3RyaW5nKTtcbiAgICB9XG4gICAgaWYgKGZpcnN0Q2hhcmFjdGVyLm1hdGNoKHVuZXNjYXBlZExhdGluQ2hhcmFjdGVyUmVnRXhwKSkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0Zvcm1hdCBzdHJpbmcgY29udGFpbnMgYW4gdW5lc2NhcGVkIGxhdGluIGFscGhhYmV0IGNoYXJhY3RlciBgJyArIGZpcnN0Q2hhcmFjdGVyICsgJ2AnKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1YnN0cmluZztcbiAgfSkuam9pbignJyk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBjbGVhbkVzY2FwZWRTdHJpbmcoaW5wdXQpIHtcbiAgdmFyIG1hdGNoZXMgPSBpbnB1dC5tYXRjaChlc2NhcGVkU3RyaW5nUmVnRXhwKTtcbiAgaWYgKCFtYXRjaGVzKSB7XG4gICAgcmV0dXJuIGlucHV0O1xuICB9XG4gIHJldHVybiBtYXRjaGVzWzFdLnJlcGxhY2UoZG91YmxlUXVvdGVSZWdFeHAsIFwiJ1wiKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBidWlsZEZvcm1hdExvbmdGbihhcmdzKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuICAgIC8vIFRPRE86IFJlbW92ZSBTdHJpbmcoKVxuICAgIHZhciB3aWR0aCA9IG9wdGlvbnMud2lkdGggPyBTdHJpbmcob3B0aW9ucy53aWR0aCkgOiBhcmdzLmRlZmF1bHRXaWR0aDtcbiAgICB2YXIgZm9ybWF0ID0gYXJncy5mb3JtYXRzW3dpZHRoXSB8fCBhcmdzLmZvcm1hdHNbYXJncy5kZWZhdWx0V2lkdGhdO1xuICAgIHJldHVybiBmb3JtYXQ7XG4gIH07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYnVpbGRMb2NhbGl6ZUZuKGFyZ3MpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChkaXJ0eUluZGV4LCBvcHRpb25zKSB7XG4gICAgdmFyIGNvbnRleHQgPSBvcHRpb25zICE9PSBudWxsICYmIG9wdGlvbnMgIT09IHZvaWQgMCAmJiBvcHRpb25zLmNvbnRleHQgPyBTdHJpbmcob3B0aW9ucy5jb250ZXh0KSA6ICdzdGFuZGFsb25lJztcbiAgICB2YXIgdmFsdWVzQXJyYXk7XG4gICAgaWYgKGNvbnRleHQgPT09ICdmb3JtYXR0aW5nJyAmJiBhcmdzLmZvcm1hdHRpbmdWYWx1ZXMpIHtcbiAgICAgIHZhciBkZWZhdWx0V2lkdGggPSBhcmdzLmRlZmF1bHRGb3JtYXR0aW5nV2lkdGggfHwgYXJncy5kZWZhdWx0V2lkdGg7XG4gICAgICB2YXIgd2lkdGggPSBvcHRpb25zICE9PSBudWxsICYmIG9wdGlvbnMgIT09IHZvaWQgMCAmJiBvcHRpb25zLndpZHRoID8gU3RyaW5nKG9wdGlvbnMud2lkdGgpIDogZGVmYXVsdFdpZHRoO1xuICAgICAgdmFsdWVzQXJyYXkgPSBhcmdzLmZvcm1hdHRpbmdWYWx1ZXNbd2lkdGhdIHx8IGFyZ3MuZm9ybWF0dGluZ1ZhbHVlc1tkZWZhdWx0V2lkdGhdO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgX2RlZmF1bHRXaWR0aCA9IGFyZ3MuZGVmYXVsdFdpZHRoO1xuICAgICAgdmFyIF93aWR0aCA9IG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdm9pZCAwICYmIG9wdGlvbnMud2lkdGggPyBTdHJpbmcob3B0aW9ucy53aWR0aCkgOiBhcmdzLmRlZmF1bHRXaWR0aDtcbiAgICAgIHZhbHVlc0FycmF5ID0gYXJncy52YWx1ZXNbX3dpZHRoXSB8fCBhcmdzLnZhbHVlc1tfZGVmYXVsdFdpZHRoXTtcbiAgICB9XG4gICAgdmFyIGluZGV4ID0gYXJncy5hcmd1bWVudENhbGxiYWNrID8gYXJncy5hcmd1bWVudENhbGxiYWNrKGRpcnR5SW5kZXgpIDogZGlydHlJbmRleDtcbiAgICAvLyBAdHMtaWdub3JlOiBGb3Igc29tZSByZWFzb24gVHlwZVNjcmlwdCBqdXN0IGRvbid0IHdhbnQgdG8gbWF0Y2ggaXQsIG5vIG1hdHRlciBob3cgaGFyZCB3ZSB0cnkuIEkgY2hhbGxlbmdlIHlvdSB0byB0cnkgdG8gcmVtb3ZlIGl0IVxuICAgIHJldHVybiB2YWx1ZXNBcnJheVtpbmRleF07XG4gIH07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYnVpbGRNYXRjaEZuKGFyZ3MpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG4gICAgdmFyIHdpZHRoID0gb3B0aW9ucy53aWR0aDtcbiAgICB2YXIgbWF0Y2hQYXR0ZXJuID0gd2lkdGggJiYgYXJncy5tYXRjaFBhdHRlcm5zW3dpZHRoXSB8fCBhcmdzLm1hdGNoUGF0dGVybnNbYXJncy5kZWZhdWx0TWF0Y2hXaWR0aF07XG4gICAgdmFyIG1hdGNoUmVzdWx0ID0gc3RyaW5nLm1hdGNoKG1hdGNoUGF0dGVybik7XG4gICAgaWYgKCFtYXRjaFJlc3VsdCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBtYXRjaGVkU3RyaW5nID0gbWF0Y2hSZXN1bHRbMF07XG4gICAgdmFyIHBhcnNlUGF0dGVybnMgPSB3aWR0aCAmJiBhcmdzLnBhcnNlUGF0dGVybnNbd2lkdGhdIHx8IGFyZ3MucGFyc2VQYXR0ZXJuc1thcmdzLmRlZmF1bHRQYXJzZVdpZHRoXTtcbiAgICB2YXIga2V5ID0gQXJyYXkuaXNBcnJheShwYXJzZVBhdHRlcm5zKSA/IGZpbmRJbmRleChwYXJzZVBhdHRlcm5zLCBmdW5jdGlvbiAocGF0dGVybikge1xuICAgICAgcmV0dXJuIHBhdHRlcm4udGVzdChtYXRjaGVkU3RyaW5nKTtcbiAgICB9KSA6IGZpbmRLZXkocGFyc2VQYXR0ZXJucywgZnVuY3Rpb24gKHBhdHRlcm4pIHtcbiAgICAgIHJldHVybiBwYXR0ZXJuLnRlc3QobWF0Y2hlZFN0cmluZyk7XG4gICAgfSk7XG4gICAgdmFyIHZhbHVlO1xuICAgIHZhbHVlID0gYXJncy52YWx1ZUNhbGxiYWNrID8gYXJncy52YWx1ZUNhbGxiYWNrKGtleSkgOiBrZXk7XG4gICAgdmFsdWUgPSBvcHRpb25zLnZhbHVlQ2FsbGJhY2sgPyBvcHRpb25zLnZhbHVlQ2FsbGJhY2sodmFsdWUpIDogdmFsdWU7XG4gICAgdmFyIHJlc3QgPSBzdHJpbmcuc2xpY2UobWF0Y2hlZFN0cmluZy5sZW5ndGgpO1xuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICByZXN0OiByZXN0XG4gICAgfTtcbiAgfTtcbn1cbmZ1bmN0aW9uIGZpbmRLZXkob2JqZWN0LCBwcmVkaWNhdGUpIHtcbiAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgIGlmIChvYmplY3QuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBwcmVkaWNhdGUob2JqZWN0W2tleV0pKSB7XG4gICAgICByZXR1cm4ga2V5O1xuICAgIH1cbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuZnVuY3Rpb24gZmluZEluZGV4KGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgZm9yICh2YXIga2V5ID0gMDsga2V5IDwgYXJyYXkubGVuZ3RoOyBrZXkrKykge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlba2V5XSkpIHtcbiAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYnVpbGRNYXRjaFBhdHRlcm5GbihhcmdzKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICAgIHZhciBtYXRjaFJlc3VsdCA9IHN0cmluZy5tYXRjaChhcmdzLm1hdGNoUGF0dGVybik7XG4gICAgaWYgKCFtYXRjaFJlc3VsdCkgcmV0dXJuIG51bGw7XG4gICAgdmFyIG1hdGNoZWRTdHJpbmcgPSBtYXRjaFJlc3VsdFswXTtcbiAgICB2YXIgcGFyc2VSZXN1bHQgPSBzdHJpbmcubWF0Y2goYXJncy5wYXJzZVBhdHRlcm4pO1xuICAgIGlmICghcGFyc2VSZXN1bHQpIHJldHVybiBudWxsO1xuICAgIHZhciB2YWx1ZSA9IGFyZ3MudmFsdWVDYWxsYmFjayA/IGFyZ3MudmFsdWVDYWxsYmFjayhwYXJzZVJlc3VsdFswXSkgOiBwYXJzZVJlc3VsdFswXTtcbiAgICB2YWx1ZSA9IG9wdGlvbnMudmFsdWVDYWxsYmFjayA/IG9wdGlvbnMudmFsdWVDYWxsYmFjayh2YWx1ZSkgOiB2YWx1ZTtcbiAgICB2YXIgcmVzdCA9IHN0cmluZy5zbGljZShtYXRjaGVkU3RyaW5nLmxlbmd0aCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIHJlc3Q6IHJlc3RcbiAgICB9O1xuICB9O1xufSIsInZhciBmb3JtYXREaXN0YW5jZUxvY2FsZSA9IHtcbiAgbGVzc1RoYW5YU2Vjb25kczoge1xuICAgIG9uZTogJ2xlc3MgdGhhbiBhIHNlY29uZCcsXG4gICAgb3RoZXI6ICdsZXNzIHRoYW4ge3tjb3VudH19IHNlY29uZHMnXG4gIH0sXG4gIHhTZWNvbmRzOiB7XG4gICAgb25lOiAnMSBzZWNvbmQnLFxuICAgIG90aGVyOiAne3tjb3VudH19IHNlY29uZHMnXG4gIH0sXG4gIGhhbGZBTWludXRlOiAnaGFsZiBhIG1pbnV0ZScsXG4gIGxlc3NUaGFuWE1pbnV0ZXM6IHtcbiAgICBvbmU6ICdsZXNzIHRoYW4gYSBtaW51dGUnLFxuICAgIG90aGVyOiAnbGVzcyB0aGFuIHt7Y291bnR9fSBtaW51dGVzJ1xuICB9LFxuICB4TWludXRlczoge1xuICAgIG9uZTogJzEgbWludXRlJyxcbiAgICBvdGhlcjogJ3t7Y291bnR9fSBtaW51dGVzJ1xuICB9LFxuICBhYm91dFhIb3Vyczoge1xuICAgIG9uZTogJ2Fib3V0IDEgaG91cicsXG4gICAgb3RoZXI6ICdhYm91dCB7e2NvdW50fX0gaG91cnMnXG4gIH0sXG4gIHhIb3Vyczoge1xuICAgIG9uZTogJzEgaG91cicsXG4gICAgb3RoZXI6ICd7e2NvdW50fX0gaG91cnMnXG4gIH0sXG4gIHhEYXlzOiB7XG4gICAgb25lOiAnMSBkYXknLFxuICAgIG90aGVyOiAne3tjb3VudH19IGRheXMnXG4gIH0sXG4gIGFib3V0WFdlZWtzOiB7XG4gICAgb25lOiAnYWJvdXQgMSB3ZWVrJyxcbiAgICBvdGhlcjogJ2Fib3V0IHt7Y291bnR9fSB3ZWVrcydcbiAgfSxcbiAgeFdlZWtzOiB7XG4gICAgb25lOiAnMSB3ZWVrJyxcbiAgICBvdGhlcjogJ3t7Y291bnR9fSB3ZWVrcydcbiAgfSxcbiAgYWJvdXRYTW9udGhzOiB7XG4gICAgb25lOiAnYWJvdXQgMSBtb250aCcsXG4gICAgb3RoZXI6ICdhYm91dCB7e2NvdW50fX0gbW9udGhzJ1xuICB9LFxuICB4TW9udGhzOiB7XG4gICAgb25lOiAnMSBtb250aCcsXG4gICAgb3RoZXI6ICd7e2NvdW50fX0gbW9udGhzJ1xuICB9LFxuICBhYm91dFhZZWFyczoge1xuICAgIG9uZTogJ2Fib3V0IDEgeWVhcicsXG4gICAgb3RoZXI6ICdhYm91dCB7e2NvdW50fX0geWVhcnMnXG4gIH0sXG4gIHhZZWFyczoge1xuICAgIG9uZTogJzEgeWVhcicsXG4gICAgb3RoZXI6ICd7e2NvdW50fX0geWVhcnMnXG4gIH0sXG4gIG92ZXJYWWVhcnM6IHtcbiAgICBvbmU6ICdvdmVyIDEgeWVhcicsXG4gICAgb3RoZXI6ICdvdmVyIHt7Y291bnR9fSB5ZWFycydcbiAgfSxcbiAgYWxtb3N0WFllYXJzOiB7XG4gICAgb25lOiAnYWxtb3N0IDEgeWVhcicsXG4gICAgb3RoZXI6ICdhbG1vc3Qge3tjb3VudH19IHllYXJzJ1xuICB9XG59O1xudmFyIGZvcm1hdERpc3RhbmNlID0gZnVuY3Rpb24gZm9ybWF0RGlzdGFuY2UodG9rZW4sIGNvdW50LCBvcHRpb25zKSB7XG4gIHZhciByZXN1bHQ7XG4gIHZhciB0b2tlblZhbHVlID0gZm9ybWF0RGlzdGFuY2VMb2NhbGVbdG9rZW5dO1xuICBpZiAodHlwZW9mIHRva2VuVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmVzdWx0ID0gdG9rZW5WYWx1ZTtcbiAgfSBlbHNlIGlmIChjb3VudCA9PT0gMSkge1xuICAgIHJlc3VsdCA9IHRva2VuVmFsdWUub25lO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdCA9IHRva2VuVmFsdWUub3RoZXIucmVwbGFjZSgne3tjb3VudH19JywgY291bnQudG9TdHJpbmcoKSk7XG4gIH1cbiAgaWYgKG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdm9pZCAwICYmIG9wdGlvbnMuYWRkU3VmZml4KSB7XG4gICAgaWYgKG9wdGlvbnMuY29tcGFyaXNvbiAmJiBvcHRpb25zLmNvbXBhcmlzb24gPiAwKSB7XG4gICAgICByZXR1cm4gJ2luICcgKyByZXN1bHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByZXN1bHQgKyAnIGFnbyc7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuZXhwb3J0IGRlZmF1bHQgZm9ybWF0RGlzdGFuY2U7IiwiaW1wb3J0IGJ1aWxkRm9ybWF0TG9uZ0ZuIGZyb20gXCIuLi8uLi8uLi9fbGliL2J1aWxkRm9ybWF0TG9uZ0ZuL2luZGV4LmpzXCI7XG52YXIgZGF0ZUZvcm1hdHMgPSB7XG4gIGZ1bGw6ICdFRUVFLCBNTU1NIGRvLCB5JyxcbiAgbG9uZzogJ01NTU0gZG8sIHknLFxuICBtZWRpdW06ICdNTU0gZCwgeScsXG4gIHNob3J0OiAnTU0vZGQveXl5eSdcbn07XG52YXIgdGltZUZvcm1hdHMgPSB7XG4gIGZ1bGw6ICdoOm1tOnNzIGEgenp6eicsXG4gIGxvbmc6ICdoOm1tOnNzIGEgeicsXG4gIG1lZGl1bTogJ2g6bW06c3MgYScsXG4gIHNob3J0OiAnaDptbSBhJ1xufTtcbnZhciBkYXRlVGltZUZvcm1hdHMgPSB7XG4gIGZ1bGw6IFwie3tkYXRlfX0gJ2F0JyB7e3RpbWV9fVwiLFxuICBsb25nOiBcInt7ZGF0ZX19ICdhdCcge3t0aW1lfX1cIixcbiAgbWVkaXVtOiAne3tkYXRlfX0sIHt7dGltZX19JyxcbiAgc2hvcnQ6ICd7e2RhdGV9fSwge3t0aW1lfX0nXG59O1xudmFyIGZvcm1hdExvbmcgPSB7XG4gIGRhdGU6IGJ1aWxkRm9ybWF0TG9uZ0ZuKHtcbiAgICBmb3JtYXRzOiBkYXRlRm9ybWF0cyxcbiAgICBkZWZhdWx0V2lkdGg6ICdmdWxsJ1xuICB9KSxcbiAgdGltZTogYnVpbGRGb3JtYXRMb25nRm4oe1xuICAgIGZvcm1hdHM6IHRpbWVGb3JtYXRzLFxuICAgIGRlZmF1bHRXaWR0aDogJ2Z1bGwnXG4gIH0pLFxuICBkYXRlVGltZTogYnVpbGRGb3JtYXRMb25nRm4oe1xuICAgIGZvcm1hdHM6IGRhdGVUaW1lRm9ybWF0cyxcbiAgICBkZWZhdWx0V2lkdGg6ICdmdWxsJ1xuICB9KVxufTtcbmV4cG9ydCBkZWZhdWx0IGZvcm1hdExvbmc7IiwidmFyIGZvcm1hdFJlbGF0aXZlTG9jYWxlID0ge1xuICBsYXN0V2VlazogXCInbGFzdCcgZWVlZSAnYXQnIHBcIixcbiAgeWVzdGVyZGF5OiBcIid5ZXN0ZXJkYXkgYXQnIHBcIixcbiAgdG9kYXk6IFwiJ3RvZGF5IGF0JyBwXCIsXG4gIHRvbW9ycm93OiBcIid0b21vcnJvdyBhdCcgcFwiLFxuICBuZXh0V2VlazogXCJlZWVlICdhdCcgcFwiLFxuICBvdGhlcjogJ1AnXG59O1xudmFyIGZvcm1hdFJlbGF0aXZlID0gZnVuY3Rpb24gZm9ybWF0UmVsYXRpdmUodG9rZW4sIF9kYXRlLCBfYmFzZURhdGUsIF9vcHRpb25zKSB7XG4gIHJldHVybiBmb3JtYXRSZWxhdGl2ZUxvY2FsZVt0b2tlbl07XG59O1xuZXhwb3J0IGRlZmF1bHQgZm9ybWF0UmVsYXRpdmU7IiwiaW1wb3J0IGJ1aWxkTG9jYWxpemVGbiBmcm9tIFwiLi4vLi4vLi4vX2xpYi9idWlsZExvY2FsaXplRm4vaW5kZXguanNcIjtcbnZhciBlcmFWYWx1ZXMgPSB7XG4gIG5hcnJvdzogWydCJywgJ0EnXSxcbiAgYWJicmV2aWF0ZWQ6IFsnQkMnLCAnQUQnXSxcbiAgd2lkZTogWydCZWZvcmUgQ2hyaXN0JywgJ0Fubm8gRG9taW5pJ11cbn07XG52YXIgcXVhcnRlclZhbHVlcyA9IHtcbiAgbmFycm93OiBbJzEnLCAnMicsICczJywgJzQnXSxcbiAgYWJicmV2aWF0ZWQ6IFsnUTEnLCAnUTInLCAnUTMnLCAnUTQnXSxcbiAgd2lkZTogWycxc3QgcXVhcnRlcicsICcybmQgcXVhcnRlcicsICczcmQgcXVhcnRlcicsICc0dGggcXVhcnRlciddXG59O1xuXG4vLyBOb3RlOiBpbiBFbmdsaXNoLCB0aGUgbmFtZXMgb2YgZGF5cyBvZiB0aGUgd2VlayBhbmQgbW9udGhzIGFyZSBjYXBpdGFsaXplZC5cbi8vIElmIHlvdSBhcmUgbWFraW5nIGEgbmV3IGxvY2FsZSBiYXNlZCBvbiB0aGlzIG9uZSwgY2hlY2sgaWYgdGhlIHNhbWUgaXMgdHJ1ZSBmb3IgdGhlIGxhbmd1YWdlIHlvdSdyZSB3b3JraW5nIG9uLlxuLy8gR2VuZXJhbGx5LCBmb3JtYXR0ZWQgZGF0ZXMgc2hvdWxkIGxvb2sgbGlrZSB0aGV5IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGEgc2VudGVuY2UsXG4vLyBlLmcuIGluIFNwYW5pc2ggbGFuZ3VhZ2UgdGhlIHdlZWtkYXlzIGFuZCBtb250aHMgc2hvdWxkIGJlIGluIHRoZSBsb3dlcmNhc2UuXG52YXIgbW9udGhWYWx1ZXMgPSB7XG4gIG5hcnJvdzogWydKJywgJ0YnLCAnTScsICdBJywgJ00nLCAnSicsICdKJywgJ0EnLCAnUycsICdPJywgJ04nLCAnRCddLFxuICBhYmJyZXZpYXRlZDogWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYyddLFxuICB3aWRlOiBbJ0phbnVhcnknLCAnRmVicnVhcnknLCAnTWFyY2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLCAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInXVxufTtcbnZhciBkYXlWYWx1ZXMgPSB7XG4gIG5hcnJvdzogWydTJywgJ00nLCAnVCcsICdXJywgJ1QnLCAnRicsICdTJ10sXG4gIHNob3J0OiBbJ1N1JywgJ01vJywgJ1R1JywgJ1dlJywgJ1RoJywgJ0ZyJywgJ1NhJ10sXG4gIGFiYnJldmlhdGVkOiBbJ1N1bicsICdNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCddLFxuICB3aWRlOiBbJ1N1bmRheScsICdNb25kYXknLCAnVHVlc2RheScsICdXZWRuZXNkYXknLCAnVGh1cnNkYXknLCAnRnJpZGF5JywgJ1NhdHVyZGF5J11cbn07XG52YXIgZGF5UGVyaW9kVmFsdWVzID0ge1xuICBuYXJyb3c6IHtcbiAgICBhbTogJ2EnLFxuICAgIHBtOiAncCcsXG4gICAgbWlkbmlnaHQ6ICdtaScsXG4gICAgbm9vbjogJ24nLFxuICAgIG1vcm5pbmc6ICdtb3JuaW5nJyxcbiAgICBhZnRlcm5vb246ICdhZnRlcm5vb24nLFxuICAgIGV2ZW5pbmc6ICdldmVuaW5nJyxcbiAgICBuaWdodDogJ25pZ2h0J1xuICB9LFxuICBhYmJyZXZpYXRlZDoge1xuICAgIGFtOiAnQU0nLFxuICAgIHBtOiAnUE0nLFxuICAgIG1pZG5pZ2h0OiAnbWlkbmlnaHQnLFxuICAgIG5vb246ICdub29uJyxcbiAgICBtb3JuaW5nOiAnbW9ybmluZycsXG4gICAgYWZ0ZXJub29uOiAnYWZ0ZXJub29uJyxcbiAgICBldmVuaW5nOiAnZXZlbmluZycsXG4gICAgbmlnaHQ6ICduaWdodCdcbiAgfSxcbiAgd2lkZToge1xuICAgIGFtOiAnYS5tLicsXG4gICAgcG06ICdwLm0uJyxcbiAgICBtaWRuaWdodDogJ21pZG5pZ2h0JyxcbiAgICBub29uOiAnbm9vbicsXG4gICAgbW9ybmluZzogJ21vcm5pbmcnLFxuICAgIGFmdGVybm9vbjogJ2FmdGVybm9vbicsXG4gICAgZXZlbmluZzogJ2V2ZW5pbmcnLFxuICAgIG5pZ2h0OiAnbmlnaHQnXG4gIH1cbn07XG52YXIgZm9ybWF0dGluZ0RheVBlcmlvZFZhbHVlcyA9IHtcbiAgbmFycm93OiB7XG4gICAgYW06ICdhJyxcbiAgICBwbTogJ3AnLFxuICAgIG1pZG5pZ2h0OiAnbWknLFxuICAgIG5vb246ICduJyxcbiAgICBtb3JuaW5nOiAnaW4gdGhlIG1vcm5pbmcnLFxuICAgIGFmdGVybm9vbjogJ2luIHRoZSBhZnRlcm5vb24nLFxuICAgIGV2ZW5pbmc6ICdpbiB0aGUgZXZlbmluZycsXG4gICAgbmlnaHQ6ICdhdCBuaWdodCdcbiAgfSxcbiAgYWJicmV2aWF0ZWQ6IHtcbiAgICBhbTogJ0FNJyxcbiAgICBwbTogJ1BNJyxcbiAgICBtaWRuaWdodDogJ21pZG5pZ2h0JyxcbiAgICBub29uOiAnbm9vbicsXG4gICAgbW9ybmluZzogJ2luIHRoZSBtb3JuaW5nJyxcbiAgICBhZnRlcm5vb246ICdpbiB0aGUgYWZ0ZXJub29uJyxcbiAgICBldmVuaW5nOiAnaW4gdGhlIGV2ZW5pbmcnLFxuICAgIG5pZ2h0OiAnYXQgbmlnaHQnXG4gIH0sXG4gIHdpZGU6IHtcbiAgICBhbTogJ2EubS4nLFxuICAgIHBtOiAncC5tLicsXG4gICAgbWlkbmlnaHQ6ICdtaWRuaWdodCcsXG4gICAgbm9vbjogJ25vb24nLFxuICAgIG1vcm5pbmc6ICdpbiB0aGUgbW9ybmluZycsXG4gICAgYWZ0ZXJub29uOiAnaW4gdGhlIGFmdGVybm9vbicsXG4gICAgZXZlbmluZzogJ2luIHRoZSBldmVuaW5nJyxcbiAgICBuaWdodDogJ2F0IG5pZ2h0J1xuICB9XG59O1xudmFyIG9yZGluYWxOdW1iZXIgPSBmdW5jdGlvbiBvcmRpbmFsTnVtYmVyKGRpcnR5TnVtYmVyLCBfb3B0aW9ucykge1xuICB2YXIgbnVtYmVyID0gTnVtYmVyKGRpcnR5TnVtYmVyKTtcblxuICAvLyBJZiBvcmRpbmFsIG51bWJlcnMgZGVwZW5kIG9uIGNvbnRleHQsIGZvciBleGFtcGxlLFxuICAvLyBpZiB0aGV5IGFyZSBkaWZmZXJlbnQgZm9yIGRpZmZlcmVudCBncmFtbWF0aWNhbCBnZW5kZXJzLFxuICAvLyB1c2UgYG9wdGlvbnMudW5pdGAuXG4gIC8vXG4gIC8vIGB1bml0YCBjYW4gYmUgJ3llYXInLCAncXVhcnRlcicsICdtb250aCcsICd3ZWVrJywgJ2RhdGUnLCAnZGF5T2ZZZWFyJyxcbiAgLy8gJ2RheScsICdob3VyJywgJ21pbnV0ZScsICdzZWNvbmQnLlxuXG4gIHZhciByZW0xMDAgPSBudW1iZXIgJSAxMDA7XG4gIGlmIChyZW0xMDAgPiAyMCB8fCByZW0xMDAgPCAxMCkge1xuICAgIHN3aXRjaCAocmVtMTAwICUgMTApIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgcmV0dXJuIG51bWJlciArICdzdCc7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiBudW1iZXIgKyAnbmQnO1xuICAgICAgY2FzZSAzOlxuICAgICAgICByZXR1cm4gbnVtYmVyICsgJ3JkJztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bWJlciArICd0aCc7XG59O1xudmFyIGxvY2FsaXplID0ge1xuICBvcmRpbmFsTnVtYmVyOiBvcmRpbmFsTnVtYmVyLFxuICBlcmE6IGJ1aWxkTG9jYWxpemVGbih7XG4gICAgdmFsdWVzOiBlcmFWYWx1ZXMsXG4gICAgZGVmYXVsdFdpZHRoOiAnd2lkZSdcbiAgfSksXG4gIHF1YXJ0ZXI6IGJ1aWxkTG9jYWxpemVGbih7XG4gICAgdmFsdWVzOiBxdWFydGVyVmFsdWVzLFxuICAgIGRlZmF1bHRXaWR0aDogJ3dpZGUnLFxuICAgIGFyZ3VtZW50Q2FsbGJhY2s6IGZ1bmN0aW9uIGFyZ3VtZW50Q2FsbGJhY2socXVhcnRlcikge1xuICAgICAgcmV0dXJuIHF1YXJ0ZXIgLSAxO1xuICAgIH1cbiAgfSksXG4gIG1vbnRoOiBidWlsZExvY2FsaXplRm4oe1xuICAgIHZhbHVlczogbW9udGhWYWx1ZXMsXG4gICAgZGVmYXVsdFdpZHRoOiAnd2lkZSdcbiAgfSksXG4gIGRheTogYnVpbGRMb2NhbGl6ZUZuKHtcbiAgICB2YWx1ZXM6IGRheVZhbHVlcyxcbiAgICBkZWZhdWx0V2lkdGg6ICd3aWRlJ1xuICB9KSxcbiAgZGF5UGVyaW9kOiBidWlsZExvY2FsaXplRm4oe1xuICAgIHZhbHVlczogZGF5UGVyaW9kVmFsdWVzLFxuICAgIGRlZmF1bHRXaWR0aDogJ3dpZGUnLFxuICAgIGZvcm1hdHRpbmdWYWx1ZXM6IGZvcm1hdHRpbmdEYXlQZXJpb2RWYWx1ZXMsXG4gICAgZGVmYXVsdEZvcm1hdHRpbmdXaWR0aDogJ3dpZGUnXG4gIH0pXG59O1xuZXhwb3J0IGRlZmF1bHQgbG9jYWxpemU7IiwiaW1wb3J0IGJ1aWxkTWF0Y2hGbiBmcm9tIFwiLi4vLi4vLi4vX2xpYi9idWlsZE1hdGNoRm4vaW5kZXguanNcIjtcbmltcG9ydCBidWlsZE1hdGNoUGF0dGVybkZuIGZyb20gXCIuLi8uLi8uLi9fbGliL2J1aWxkTWF0Y2hQYXR0ZXJuRm4vaW5kZXguanNcIjtcbnZhciBtYXRjaE9yZGluYWxOdW1iZXJQYXR0ZXJuID0gL14oXFxkKykodGh8c3R8bmR8cmQpPy9pO1xudmFyIHBhcnNlT3JkaW5hbE51bWJlclBhdHRlcm4gPSAvXFxkKy9pO1xudmFyIG1hdGNoRXJhUGF0dGVybnMgPSB7XG4gIG5hcnJvdzogL14oYnxhKS9pLFxuICBhYmJyZXZpYXRlZDogL14oYlxcLj9cXHM/Y1xcLj98YlxcLj9cXHM/Y1xcLj9cXHM/ZVxcLj98YVxcLj9cXHM/ZFxcLj98Y1xcLj9cXHM/ZVxcLj8pL2ksXG4gIHdpZGU6IC9eKGJlZm9yZSBjaHJpc3R8YmVmb3JlIGNvbW1vbiBlcmF8YW5ubyBkb21pbml8Y29tbW9uIGVyYSkvaVxufTtcbnZhciBwYXJzZUVyYVBhdHRlcm5zID0ge1xuICBhbnk6IFsvXmIvaSwgL14oYXxjKS9pXVxufTtcbnZhciBtYXRjaFF1YXJ0ZXJQYXR0ZXJucyA9IHtcbiAgbmFycm93OiAvXlsxMjM0XS9pLFxuICBhYmJyZXZpYXRlZDogL15xWzEyMzRdL2ksXG4gIHdpZGU6IC9eWzEyMzRdKHRofHN0fG5kfHJkKT8gcXVhcnRlci9pXG59O1xudmFyIHBhcnNlUXVhcnRlclBhdHRlcm5zID0ge1xuICBhbnk6IFsvMS9pLCAvMi9pLCAvMy9pLCAvNC9pXVxufTtcbnZhciBtYXRjaE1vbnRoUGF0dGVybnMgPSB7XG4gIG5hcnJvdzogL15bamZtYXNvbmRdL2ksXG4gIGFiYnJldmlhdGVkOiAvXihqYW58ZmVifG1hcnxhcHJ8bWF5fGp1bnxqdWx8YXVnfHNlcHxvY3R8bm92fGRlYykvaSxcbiAgd2lkZTogL14oamFudWFyeXxmZWJydWFyeXxtYXJjaHxhcHJpbHxtYXl8anVuZXxqdWx5fGF1Z3VzdHxzZXB0ZW1iZXJ8b2N0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcikvaVxufTtcbnZhciBwYXJzZU1vbnRoUGF0dGVybnMgPSB7XG4gIG5hcnJvdzogWy9eai9pLCAvXmYvaSwgL15tL2ksIC9eYS9pLCAvXm0vaSwgL15qL2ksIC9eai9pLCAvXmEvaSwgL15zL2ksIC9eby9pLCAvXm4vaSwgL15kL2ldLFxuICBhbnk6IFsvXmphL2ksIC9eZi9pLCAvXm1hci9pLCAvXmFwL2ksIC9ebWF5L2ksIC9eanVuL2ksIC9eanVsL2ksIC9eYXUvaSwgL15zL2ksIC9eby9pLCAvXm4vaSwgL15kL2ldXG59O1xudmFyIG1hdGNoRGF5UGF0dGVybnMgPSB7XG4gIG5hcnJvdzogL15bc210d2ZdL2ksXG4gIHNob3J0OiAvXihzdXxtb3x0dXx3ZXx0aHxmcnxzYSkvaSxcbiAgYWJicmV2aWF0ZWQ6IC9eKHN1bnxtb258dHVlfHdlZHx0aHV8ZnJpfHNhdCkvaSxcbiAgd2lkZTogL14oc3VuZGF5fG1vbmRheXx0dWVzZGF5fHdlZG5lc2RheXx0aHVyc2RheXxmcmlkYXl8c2F0dXJkYXkpL2lcbn07XG52YXIgcGFyc2VEYXlQYXR0ZXJucyA9IHtcbiAgbmFycm93OiBbL15zL2ksIC9ebS9pLCAvXnQvaSwgL153L2ksIC9edC9pLCAvXmYvaSwgL15zL2ldLFxuICBhbnk6IFsvXnN1L2ksIC9ebS9pLCAvXnR1L2ksIC9edy9pLCAvXnRoL2ksIC9eZi9pLCAvXnNhL2ldXG59O1xudmFyIG1hdGNoRGF5UGVyaW9kUGF0dGVybnMgPSB7XG4gIG5hcnJvdzogL14oYXxwfG1pfG58KGluIHRoZXxhdCkgKG1vcm5pbmd8YWZ0ZXJub29ufGV2ZW5pbmd8bmlnaHQpKS9pLFxuICBhbnk6IC9eKFthcF1cXC4/XFxzP21cXC4/fG1pZG5pZ2h0fG5vb258KGluIHRoZXxhdCkgKG1vcm5pbmd8YWZ0ZXJub29ufGV2ZW5pbmd8bmlnaHQpKS9pXG59O1xudmFyIHBhcnNlRGF5UGVyaW9kUGF0dGVybnMgPSB7XG4gIGFueToge1xuICAgIGFtOiAvXmEvaSxcbiAgICBwbTogL15wL2ksXG4gICAgbWlkbmlnaHQ6IC9ebWkvaSxcbiAgICBub29uOiAvXm5vL2ksXG4gICAgbW9ybmluZzogL21vcm5pbmcvaSxcbiAgICBhZnRlcm5vb246IC9hZnRlcm5vb24vaSxcbiAgICBldmVuaW5nOiAvZXZlbmluZy9pLFxuICAgIG5pZ2h0OiAvbmlnaHQvaVxuICB9XG59O1xudmFyIG1hdGNoID0ge1xuICBvcmRpbmFsTnVtYmVyOiBidWlsZE1hdGNoUGF0dGVybkZuKHtcbiAgICBtYXRjaFBhdHRlcm46IG1hdGNoT3JkaW5hbE51bWJlclBhdHRlcm4sXG4gICAgcGFyc2VQYXR0ZXJuOiBwYXJzZU9yZGluYWxOdW1iZXJQYXR0ZXJuLFxuICAgIHZhbHVlQ2FsbGJhY2s6IGZ1bmN0aW9uIHZhbHVlQ2FsbGJhY2sodmFsdWUpIHtcbiAgICAgIHJldHVybiBwYXJzZUludCh2YWx1ZSwgMTApO1xuICAgIH1cbiAgfSksXG4gIGVyYTogYnVpbGRNYXRjaEZuKHtcbiAgICBtYXRjaFBhdHRlcm5zOiBtYXRjaEVyYVBhdHRlcm5zLFxuICAgIGRlZmF1bHRNYXRjaFdpZHRoOiAnd2lkZScsXG4gICAgcGFyc2VQYXR0ZXJuczogcGFyc2VFcmFQYXR0ZXJucyxcbiAgICBkZWZhdWx0UGFyc2VXaWR0aDogJ2FueSdcbiAgfSksXG4gIHF1YXJ0ZXI6IGJ1aWxkTWF0Y2hGbih7XG4gICAgbWF0Y2hQYXR0ZXJuczogbWF0Y2hRdWFydGVyUGF0dGVybnMsXG4gICAgZGVmYXVsdE1hdGNoV2lkdGg6ICd3aWRlJyxcbiAgICBwYXJzZVBhdHRlcm5zOiBwYXJzZVF1YXJ0ZXJQYXR0ZXJucyxcbiAgICBkZWZhdWx0UGFyc2VXaWR0aDogJ2FueScsXG4gICAgdmFsdWVDYWxsYmFjazogZnVuY3Rpb24gdmFsdWVDYWxsYmFjayhpbmRleCkge1xuICAgICAgcmV0dXJuIGluZGV4ICsgMTtcbiAgICB9XG4gIH0pLFxuICBtb250aDogYnVpbGRNYXRjaEZuKHtcbiAgICBtYXRjaFBhdHRlcm5zOiBtYXRjaE1vbnRoUGF0dGVybnMsXG4gICAgZGVmYXVsdE1hdGNoV2lkdGg6ICd3aWRlJyxcbiAgICBwYXJzZVBhdHRlcm5zOiBwYXJzZU1vbnRoUGF0dGVybnMsXG4gICAgZGVmYXVsdFBhcnNlV2lkdGg6ICdhbnknXG4gIH0pLFxuICBkYXk6IGJ1aWxkTWF0Y2hGbih7XG4gICAgbWF0Y2hQYXR0ZXJuczogbWF0Y2hEYXlQYXR0ZXJucyxcbiAgICBkZWZhdWx0TWF0Y2hXaWR0aDogJ3dpZGUnLFxuICAgIHBhcnNlUGF0dGVybnM6IHBhcnNlRGF5UGF0dGVybnMsXG4gICAgZGVmYXVsdFBhcnNlV2lkdGg6ICdhbnknXG4gIH0pLFxuICBkYXlQZXJpb2Q6IGJ1aWxkTWF0Y2hGbih7XG4gICAgbWF0Y2hQYXR0ZXJuczogbWF0Y2hEYXlQZXJpb2RQYXR0ZXJucyxcbiAgICBkZWZhdWx0TWF0Y2hXaWR0aDogJ2FueScsXG4gICAgcGFyc2VQYXR0ZXJuczogcGFyc2VEYXlQZXJpb2RQYXR0ZXJucyxcbiAgICBkZWZhdWx0UGFyc2VXaWR0aDogJ2FueSdcbiAgfSlcbn07XG5leHBvcnQgZGVmYXVsdCBtYXRjaDsiLCJpbXBvcnQgZm9ybWF0RGlzdGFuY2UgZnJvbSBcIi4vX2xpYi9mb3JtYXREaXN0YW5jZS9pbmRleC5qc1wiO1xuaW1wb3J0IGZvcm1hdExvbmcgZnJvbSBcIi4vX2xpYi9mb3JtYXRMb25nL2luZGV4LmpzXCI7XG5pbXBvcnQgZm9ybWF0UmVsYXRpdmUgZnJvbSBcIi4vX2xpYi9mb3JtYXRSZWxhdGl2ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGxvY2FsaXplIGZyb20gXCIuL19saWIvbG9jYWxpemUvaW5kZXguanNcIjtcbmltcG9ydCBtYXRjaCBmcm9tIFwiLi9fbGliL21hdGNoL2luZGV4LmpzXCI7XG4vKipcbiAqIEB0eXBlIHtMb2NhbGV9XG4gKiBAY2F0ZWdvcnkgTG9jYWxlc1xuICogQHN1bW1hcnkgRW5nbGlzaCBsb2NhbGUgKFVuaXRlZCBTdGF0ZXMpLlxuICogQGxhbmd1YWdlIEVuZ2xpc2hcbiAqIEBpc28tNjM5LTIgZW5nXG4gKiBAYXV0aG9yIFNhc2hhIEtvc3MgW0Brb3Nzbm9jb3JwXXtAbGluayBodHRwczovL2dpdGh1Yi5jb20va29zc25vY29ycH1cbiAqIEBhdXRob3IgTGVzaGEgS29zcyBbQGxlc2hha29zc117QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2xlc2hha29zc31cbiAqL1xudmFyIGxvY2FsZSA9IHtcbiAgY29kZTogJ2VuLVVTJyxcbiAgZm9ybWF0RGlzdGFuY2U6IGZvcm1hdERpc3RhbmNlLFxuICBmb3JtYXRMb25nOiBmb3JtYXRMb25nLFxuICBmb3JtYXRSZWxhdGl2ZTogZm9ybWF0UmVsYXRpdmUsXG4gIGxvY2FsaXplOiBsb2NhbGl6ZSxcbiAgbWF0Y2g6IG1hdGNoLFxuICBvcHRpb25zOiB7XG4gICAgd2Vla1N0YXJ0c09uOiAwIC8qIFN1bmRheSAqLyxcbiAgICBmaXJzdFdlZWtDb250YWluc0RhdGU6IDFcbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTsiLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG1heFxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGxhdGVzdCBvZiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGxhdGVzdCBvZiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQHBhcmFtIHtEYXRlW118TnVtYmVyW119IGRhdGVzQXJyYXkgLSB0aGUgZGF0ZXMgdG8gY29tcGFyZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBsYXRlc3Qgb2YgdGhlIGRhdGVzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggb2YgdGhlc2UgZGF0ZXMgaXMgdGhlIGxhdGVzdD9cbiAqIGNvbnN0IHJlc3VsdCA9IG1heChbXG4gKiAgIG5ldyBEYXRlKDE5ODksIDYsIDEwKSxcbiAqICAgbmV3IERhdGUoMTk4NywgMSwgMTEpLFxuICogICBuZXcgRGF0ZSgxOTk1LCA2LCAyKSxcbiAqICAgbmV3IERhdGUoMTk5MCwgMCwgMSlcbiAqIF0pXG4gKiAvLz0+IFN1biBKdWwgMDIgMTk5NSAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtYXgoZGlydHlEYXRlc0FycmF5KSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZXNBcnJheTtcbiAgLy8gYGRpcnR5RGF0ZXNBcnJheWAgaXMgQXJyYXksIFNldCBvciBNYXAsIG9yIG9iamVjdCB3aXRoIGN1c3RvbSBgZm9yRWFjaGAgbWV0aG9kXG4gIGlmIChkaXJ0eURhdGVzQXJyYXkgJiYgdHlwZW9mIGRpcnR5RGF0ZXNBcnJheS5mb3JFYWNoID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZGF0ZXNBcnJheSA9IGRpcnR5RGF0ZXNBcnJheTtcblxuICAgIC8vIElmIGBkaXJ0eURhdGVzQXJyYXlgIGlzIEFycmF5LWxpa2UgT2JqZWN0LCBjb252ZXJ0IHRvIEFycmF5LlxuICB9IGVsc2UgaWYgKF90eXBlb2YoZGlydHlEYXRlc0FycmF5KSA9PT0gJ29iamVjdCcgJiYgZGlydHlEYXRlc0FycmF5ICE9PSBudWxsKSB7XG4gICAgZGF0ZXNBcnJheSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGRpcnR5RGF0ZXNBcnJheSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gYGRpcnR5RGF0ZXNBcnJheWAgaXMgbm9uLWl0ZXJhYmxlLCByZXR1cm4gSW52YWxpZCBEYXRlXG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbiAgdmFyIHJlc3VsdDtcbiAgZGF0ZXNBcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChkaXJ0eURhdGUpIHtcbiAgICB2YXIgY3VycmVudERhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQgfHwgcmVzdWx0IDwgY3VycmVudERhdGUgfHwgaXNOYU4oTnVtYmVyKGN1cnJlbnREYXRlKSkpIHtcbiAgICAgIHJlc3VsdCA9IGN1cnJlbnREYXRlO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQgfHwgbmV3IERhdGUoTmFOKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLy8gTGVhcCB5ZWFyIG9jY3VyZXMgZXZlcnkgNCB5ZWFycywgZXhjZXB0IGZvciB5ZWFycyB0aGF0IGFyZSBkaXZpc2FibGUgYnkgMTAwIGFuZCBub3QgZGl2aXNhYmxlIGJ5IDQwMC5cbi8vIDEgbWVhbiB5ZWFyID0gKDM2NSsxLzQtMS8xMDArMS80MDApIGRheXMgPSAzNjUuMjQyNSBkYXlzXG52YXIgZGF5c0luWWVhciA9IDM2NS4yNDI1O1xuXG4vKipcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc1xuICogQGNhdGVnb3J5IE1pbGxpc2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5XG4gKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGluIHRoZSBzcGVjaWZpZWQsIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3VycywgbWludXRlcyBhbmQgc2Vjb25kcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybnMgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaW4gdGhlIHNwZWNpZmllZCwgeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMsIGhvdXJzLCBtaW51dGVzIGFuZCBzZWNvbmRzLlxuICpcbiAqIE9uZSB5ZWFycyBlcXVhbHMgMzY1LjI0MjUgZGF5cyBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6XG4gKlxuICogPiBMZWFwIHllYXIgb2NjdXJlcyBldmVyeSA0IHllYXJzLCBleGNlcHQgZm9yIHllYXJzIHRoYXQgYXJlIGRpdmlzYWJsZSBieSAxMDAgYW5kIG5vdCBkaXZpc2FibGUgYnkgNDAwLlxuICogPiAxIG1lYW4geWVhciA9ICgzNjUrMS80LTEvMTAwKzEvNDAwKSBkYXlzID0gMzY1LjI0MjUgZGF5c1xuICpcbiAqIE9uZSBtb250aCBpcyBhIHllYXIgZGl2aWRlZCBieSAxMi5cbiAqXG4gKiBAcGFyYW0ge0R1cmF0aW9ufSBkdXJhdGlvbiAtIHRoZSBvYmplY3Qgd2l0aCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMgYW5kIHNlY29uZHMgdG8gYmUgYWRkZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBtaWxsaXNlY29uZHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyAxIHllYXIgaW4gbWlsbGlzZWNvbmRzXG4gKiBtaWxsaXNlY29uZHMoeyB5ZWFyczogMSB9KVxuICogLy89PiAzMTU1Njk1MjAwMFxuICpcbiAqIC8vIDMgbW9udGhzIGluIG1pbGxpc2Vjb25kc1xuICogbWlsbGlzZWNvbmRzKHsgbW9udGhzOiAzIH0pXG4gKiAvLz0+IDc4ODkyMzgwMDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWlsbGlzZWNvbmRzKF9yZWYpIHtcbiAgdmFyIHllYXJzID0gX3JlZi55ZWFycyxcbiAgICBtb250aHMgPSBfcmVmLm1vbnRocyxcbiAgICB3ZWVrcyA9IF9yZWYud2Vla3MsXG4gICAgZGF5cyA9IF9yZWYuZGF5cyxcbiAgICBob3VycyA9IF9yZWYuaG91cnMsXG4gICAgbWludXRlcyA9IF9yZWYubWludXRlcyxcbiAgICBzZWNvbmRzID0gX3JlZi5zZWNvbmRzO1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIHRvdGFsRGF5cyA9IDA7XG4gIGlmICh5ZWFycykgdG90YWxEYXlzICs9IHllYXJzICogZGF5c0luWWVhcjtcbiAgaWYgKG1vbnRocykgdG90YWxEYXlzICs9IG1vbnRocyAqIChkYXlzSW5ZZWFyIC8gMTIpO1xuICBpZiAod2Vla3MpIHRvdGFsRGF5cyArPSB3ZWVrcyAqIDc7XG4gIGlmIChkYXlzKSB0b3RhbERheXMgKz0gZGF5cztcbiAgdmFyIHRvdGFsU2Vjb25kcyA9IHRvdGFsRGF5cyAqIDI0ICogNjAgKiA2MDtcbiAgaWYgKGhvdXJzKSB0b3RhbFNlY29uZHMgKz0gaG91cnMgKiA2MCAqIDYwO1xuICBpZiAobWludXRlcykgdG90YWxTZWNvbmRzICs9IG1pbnV0ZXMgKiA2MDtcbiAgaWYgKHNlY29uZHMpIHRvdGFsU2Vjb25kcyArPSBzZWNvbmRzO1xuICByZXR1cm4gTWF0aC5yb3VuZCh0b3RhbFNlY29uZHMgKiAxMDAwKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5Ib3VyIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBtaWxsaXNlY29uZHNUb0hvdXJzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IG1pbGxpc2Vjb25kcyB0byBob3Vycy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGEgZnVsbCBudW1iZXIgb2YgaG91cnMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IG1pbGxpc2Vjb25kcyAtIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgY29udmVydGVkIGluIGhvdXJzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCA3MjAwMDAwIG1pbGxpc2Vjb25kcyB0byBob3VyczpcbiAqIGNvbnN0IHJlc3VsdCA9IG1pbGxpc2Vjb25kc1RvSG91cnMoNzIwMDAwMClcbiAqIC8vPT4gMlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJdCB1c2VzIGZsb29yIHJvdW5kaW5nOlxuICogY29uc3QgcmVzdWx0ID0gbWlsbGlzZWNvbmRzVG9Ib3Vycyg3MTk5OTk5KVxuICogLy89PiAxXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1pbGxpc2Vjb25kc1RvSG91cnMobWlsbGlzZWNvbmRzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgaG91cnMgPSBtaWxsaXNlY29uZHMgLyBtaWxsaXNlY29uZHNJbkhvdXI7XG4gIHJldHVybiBNYXRoLmZsb29yKGhvdXJzKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5NaW51dGUgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc1RvTWludXRlc1xuICogQGNhdGVnb3J5IENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCBtaWxsaXNlY29uZHMgdG8gbWludXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGEgZnVsbCBudW1iZXIgb2YgbWludXRlcy5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gbWlsbGlzZWNvbmRzIC0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBiZSBjb252ZXJ0ZWQuXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgY29udmVydGVkIGluIG1pbnV0ZXNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDYwMDAwIG1pbGxpc2Vjb25kcyB0byBtaW51dGVzOlxuICogY29uc3QgcmVzdWx0ID0gbWlsbGlzZWNvbmRzVG9NaW51dGVzKDYwMDAwKVxuICogLy89PiAxXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEl0IHVzZXMgZmxvb3Igcm91bmRpbmc6XG4gKiBjb25zdCByZXN1bHQgPSBtaWxsaXNlY29uZHNUb01pbnV0ZXMoMTE5OTk5KVxuICogLy89PiAxXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1pbGxpc2Vjb25kc1RvTWludXRlcyhtaWxsaXNlY29uZHMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBtaW51dGVzID0gbWlsbGlzZWNvbmRzIC8gbWlsbGlzZWNvbmRzSW5NaW51dGU7XG4gIHJldHVybiBNYXRoLmZsb29yKG1pbnV0ZXMpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBtaWxsaXNlY29uZHNJblNlY29uZCB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbWlsbGlzZWNvbmRzVG9TZWNvbmRzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IG1pbGxpc2Vjb25kcyB0byBzZWNvbmRzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gYSBmdWxsIG51bWJlciBvZiBzZWNvbmRzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBtaWxsaXNlY29uZHMgLSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGJlIGNvbnZlcnRlZFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGNvbnZlcnRlZCBpbiBzZWNvbmRzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCAxMDAwIG1pbGlzZWNvbmRzIHRvIHNlY29uZHM6XG4gKiBjb25zdCByZXN1bHQgPSBtaWxsaXNlY29uZHNUb1NlY29uZHMoMTAwMClcbiAqIC8vPT4gMVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJdCB1c2VzIGZsb29yIHJvdW5kaW5nOlxuICogY29uc3QgcmVzdWx0ID0gbWlsbGlzZWNvbmRzVG9TZWNvbmRzKDE5OTkpXG4gKiAvLz0+IDFcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWlsbGlzZWNvbmRzVG9TZWNvbmRzKG1pbGxpc2Vjb25kcykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIHNlY29uZHMgPSBtaWxsaXNlY29uZHMgLyBtaWxsaXNlY29uZHNJblNlY29uZDtcbiAgcmV0dXJuIE1hdGguZmxvb3Ioc2Vjb25kcyk7XG59IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZlwiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBtaW5cbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJucyB0aGUgZWFybGllc3Qgb2YgdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJucyB0aGUgZWFybGllc3Qgb2YgdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBwYXJhbSB7RGF0ZVtdfE51bWJlcltdfSBkYXRlc0FycmF5IC0gdGhlIGRhdGVzIHRvIGNvbXBhcmVcbiAqIEByZXR1cm5zIHtEYXRlfSAtIHRoZSBlYXJsaWVzdCBvZiB0aGUgZGF0ZXNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCBvZiB0aGVzZSBkYXRlcyBpcyB0aGUgZWFybGllc3Q/XG4gKiBjb25zdCByZXN1bHQgPSBtaW4oW1xuICogICBuZXcgRGF0ZSgxOTg5LCA2LCAxMCksXG4gKiAgIG5ldyBEYXRlKDE5ODcsIDEsIDExKSxcbiAqICAgbmV3IERhdGUoMTk5NSwgNiwgMiksXG4gKiAgIG5ldyBEYXRlKDE5OTAsIDAsIDEpXG4gKiBdKVxuICogLy89PiBXZWQgRmViIDExIDE5ODcgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWluKGRpcnR5RGF0ZXNBcnJheSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVzQXJyYXk7XG4gIC8vIGBkaXJ0eURhdGVzQXJyYXlgIGlzIEFycmF5LCBTZXQgb3IgTWFwLCBvciBvYmplY3Qgd2l0aCBjdXN0b20gYGZvckVhY2hgIG1ldGhvZFxuICBpZiAoZGlydHlEYXRlc0FycmF5ICYmIHR5cGVvZiBkaXJ0eURhdGVzQXJyYXkuZm9yRWFjaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRhdGVzQXJyYXkgPSBkaXJ0eURhdGVzQXJyYXk7XG4gICAgLy8gSWYgYGRpcnR5RGF0ZXNBcnJheWAgaXMgQXJyYXktbGlrZSBPYmplY3QsIGNvbnZlcnQgdG8gQXJyYXkuXG4gIH0gZWxzZSBpZiAoX3R5cGVvZihkaXJ0eURhdGVzQXJyYXkpID09PSAnb2JqZWN0JyAmJiBkaXJ0eURhdGVzQXJyYXkgIT09IG51bGwpIHtcbiAgICBkYXRlc0FycmF5ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZGlydHlEYXRlc0FycmF5KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBgZGlydHlEYXRlc0FycmF5YCBpcyBub24taXRlcmFibGUsIHJldHVybiBJbnZhbGlkIERhdGVcbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxuICB2YXIgcmVzdWx0O1xuICBkYXRlc0FycmF5LmZvckVhY2goZnVuY3Rpb24gKGRpcnR5RGF0ZSkge1xuICAgIHZhciBjdXJyZW50RGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCB8fCByZXN1bHQgPiBjdXJyZW50RGF0ZSB8fCBpc05hTihjdXJyZW50RGF0ZS5nZXREYXRlKCkpKSB7XG4gICAgICByZXN1bHQgPSBjdXJyZW50RGF0ZTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0IHx8IG5ldyBEYXRlKE5hTik7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IG1pbnV0ZXNJbkhvdXIgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG1pbnV0ZXNUb0hvdXJzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IG1pbnV0ZXMgdG8gaG91cnMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgbnVtYmVyIG9mIG1pbnV0ZXMgdG8gYSBmdWxsIG51bWJlciBvZiBob3Vycy5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gbWludXRlcyAtIG51bWJlciBvZiBtaW51dGVzIHRvIGJlIGNvbnZlcnRlZFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBudW1iZXIgb2YgbWludXRlcyBjb252ZXJ0ZWQgaW4gaG91cnNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDE0MCBtaW51dGVzIHRvIGhvdXJzOlxuICogY29uc3QgcmVzdWx0ID0gbWludXRlc1RvSG91cnMoMTIwKVxuICogLy89PiAyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEl0IHVzZXMgZmxvb3Igcm91bmRpbmc6XG4gKiBjb25zdCByZXN1bHQgPSBtaW51dGVzVG9Ib3VycygxNzkpXG4gKiAvLz0+IDJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWludXRlc1RvSG91cnMobWludXRlcykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGhvdXJzID0gbWludXRlcyAvIG1pbnV0ZXNJbkhvdXI7XG4gIHJldHVybiBNYXRoLmZsb29yKGhvdXJzKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5NaW51dGUgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG1pbnV0ZXNUb01pbGxpc2Vjb25kc1xuICogQGNhdGVnb3J5IENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCBtaW51dGVzIHRvIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2YgbWludXRlcyB0byBhIGZ1bGwgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gbWludXRlcyAtIG51bWJlciBvZiBtaW51dGVzIHRvIGJlIGNvbnZlcnRlZFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBudW1iZXIgb2YgbWludXRlcyBjb252ZXJ0ZWQgaW4gbWlsbGlzZWNvbmRzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCAyIG1pbnV0ZXMgdG8gbWlsbGlzZWNvbmRzXG4gKiBjb25zdCByZXN1bHQgPSBtaW51dGVzVG9NaWxsaXNlY29uZHMoMilcbiAqIC8vPT4gMTIwMDAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1pbnV0ZXNUb01pbGxpc2Vjb25kcyhtaW51dGVzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gTWF0aC5mbG9vcihtaW51dGVzICogbWlsbGlzZWNvbmRzSW5NaW51dGUpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBzZWNvbmRzSW5NaW51dGUgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG1pbnV0ZXNUb1NlY29uZHNcbiAqIEBjYXRlZ29yeSBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgbWludXRlcyB0byBzZWNvbmRzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiBtaW51dGVzIHRvIGEgZnVsbCBudW1iZXIgb2Ygc2Vjb25kcy5cbiAqXG4gKiBAcGFyYW0geyBudW1iZXIgfSBtaW51dGVzIC0gbnVtYmVyIG9mIG1pbnV0ZXMgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBtaW51dGVzIGNvbnZlcnRlZCBpbiBzZWNvbmRzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCAyIG1pbnV0ZXMgdG8gc2Vjb25kc1xuICogY29uc3QgcmVzdWx0ID0gbWludXRlc1RvU2Vjb25kcygyKVxuICogLy89PiAxMjBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWludXRlc1RvU2Vjb25kcyhtaW51dGVzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gTWF0aC5mbG9vcihtaW51dGVzICogc2Vjb25kc0luTWludXRlKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgbW9udGhzSW5RdWFydGVyIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBtb250aHNUb1F1YXJ0ZXJzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IG51bWJlciBvZiBtb250aHMgdG8gcXVhcnRlcnMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgbnVtYmVyIG9mIG1vbnRocyB0byBhIGZ1bGwgbnVtYmVyIG9mIHF1YXJ0ZXJzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBtb250aHMgLSBudW1iZXIgb2YgbW9udGhzIHRvIGJlIGNvbnZlcnRlZC5cbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIG1vbnRocyBjb252ZXJ0ZWQgaW4gcXVhcnRlcnNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDYgbW9udGhzIHRvIHF1YXJ0ZXJzOlxuICogY29uc3QgcmVzdWx0ID0gbW9udGhzVG9RdWFydGVycyg2KVxuICogLy89PiAyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEl0IHVzZXMgZmxvb3Igcm91bmRpbmc6XG4gKiBjb25zdCByZXN1bHQgPSBtb250aHNUb1F1YXJ0ZXJzKDcpXG4gKiAvLz0+IDJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbW9udGhzVG9RdWFydGVycyhtb250aHMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBxdWFydGVycyA9IG1vbnRocyAvIG1vbnRoc0luUXVhcnRlcjtcbiAgcmV0dXJuIE1hdGguZmxvb3IocXVhcnRlcnMpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBtb250aHNJblllYXIgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG1vbnRoc1RvWWVhcnNcbiAqIEBjYXRlZ29yeSBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgbnVtYmVyIG9mIG1vbnRocyB0byB5ZWFycy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2YgbW9udGhzIHRvIGEgZnVsbCBudW1iZXIgb2YgeWVhcnMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IG1vbnRocyAtIG51bWJlciBvZiBtb250aHMgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBtb250aHMgY29udmVydGVkIGluIHllYXJzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCAzNiBtb250aHMgdG8geWVhcnM6XG4gKiBjb25zdCByZXN1bHQgPSBtb250aHNUb1llYXJzKDM2KVxuICogLy89PiAzXG4gKlxuICogLy8gSXQgdXNlcyBmbG9vciByb3VuZGluZzpcbiAqIGNvbnN0IHJlc3VsdCA9IG1vbnRoc1RvWWVhcnMoNDApXG4gKiAvLz0+IDNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbW9udGhzVG9ZZWFycyhtb250aHMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciB5ZWFycyA9IG1vbnRocyAvIG1vbnRoc0luWWVhcjtcbiAgcmV0dXJuIE1hdGguZmxvb3IoeWVhcnMpO1xufSIsImltcG9ydCBhZGREYXlzIGZyb20gXCIuLi9hZGREYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0RGF5IGZyb20gXCIuLi9nZXREYXkvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG5leHREYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFdoZW4gaXMgdGhlIG5leHQgZGF5IG9mIHRoZSB3ZWVrP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogV2hlbiBpcyB0aGUgbmV4dCBkYXkgb2YgdGhlIHdlZWs/IDAtNiB0aGUgZGF5IG9mIHRoZSB3ZWVrLCAwIHJlcHJlc2VudHMgU3VuZGF5LlxuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IG51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcGFyYW0ge0RheX0gZGF5IC0gZGF5IG9mIHRoZSB3ZWVrXG4gKiBAcmV0dXJucyB7RGF0ZX0gLSB0aGUgZGF0ZSBpcyB0aGUgbmV4dCBkYXkgb2Ygd2Vla1xuICogQHRocm93cyB7VHlwZUVycm9yfSAtIDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gaXMgdGhlIG5leHQgTW9uZGF5IGFmdGVyIE1hciwgMjAsIDIwMjA/XG4gKiBjb25zdCByZXN1bHQgPSBuZXh0RGF5KG5ldyBEYXRlKDIwMjAsIDIsIDIwKSwgMSlcbiAqIC8vPT4gTW9uIE1hciAyMyAyMDIwIDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gaXMgdGhlIG5leHQgVHVlc2RheSBhZnRlciBNYXIsIDIxLCAyMDIwP1xuICogY29uc3QgcmVzdWx0ID0gbmV4dERheShuZXcgRGF0ZSgyMDIwLCAyLCAyMSksIDIpXG4gKiAvLz0+IFR1ZSBNYXIgMjQgMjAyMCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBuZXh0RGF5KGRhdGUsIGRheSkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRlbHRhID0gZGF5IC0gZ2V0RGF5KGRhdGUpO1xuICBpZiAoZGVsdGEgPD0gMCkgZGVsdGEgKz0gNztcbiAgcmV0dXJuIGFkZERheXMoZGF0ZSwgZGVsdGEpO1xufSIsImltcG9ydCBuZXh0RGF5IGZyb20gXCIuLi9uZXh0RGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBuZXh0RnJpZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBXaGVuIGlzIHRoZSBuZXh0IEZyaWRheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFdoZW4gaXMgdGhlIG5leHQgRnJpZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IG51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIHN0YXJ0IGNvdW50aW5nIGZyb21cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV4dCBGcmlkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBuZXh0IEZyaWRheSBhZnRlciBNYXIsIDIyLCAyMDIwP1xuICogY29uc3QgcmVzdWx0ID0gbmV4dEZyaWRheShuZXcgRGF0ZSgyMDIwLCAyLCAyMikpXG4gKiAvLz0+IEZyaSBNYXIgMjcgMjAyMCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBuZXh0RnJpZGF5KGRhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBuZXh0RGF5KGRhdGUsIDUpO1xufSIsImltcG9ydCBuZXh0RGF5IGZyb20gXCIuLi9uZXh0RGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBuZXh0TW9uZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBXaGVuIGlzIHRoZSBuZXh0IE1vbmRheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFdoZW4gaXMgdGhlIG5leHQgTW9uZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IG51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIHN0YXJ0IGNvdW50aW5nIGZyb21cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV4dCBNb25kYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBuZXh0IE1vbmRheSBhZnRlciBNYXIsIDIyLCAyMDIwP1xuICogY29uc3QgcmVzdWx0ID0gbmV4dE1vbmRheShuZXcgRGF0ZSgyMDIwLCAyLCAyMikpXG4gKiAvLz0+IE1vbiBNYXIgMjMgMjAyMCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBuZXh0TW9uZGF5KGRhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBuZXh0RGF5KGRhdGUsIDEpO1xufSIsImltcG9ydCBuZXh0RGF5IGZyb20gXCIuLi9uZXh0RGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBuZXh0U2F0dXJkYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFdoZW4gaXMgdGhlIG5leHQgU2F0dXJkYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBXaGVuIGlzIHRoZSBuZXh0IFNhdHVyZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IG51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIHN0YXJ0IGNvdW50aW5nIGZyb21cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV4dCBTYXR1cmRheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gaXMgdGhlIG5leHQgU2F0dXJkYXkgYWZ0ZXIgTWFyLCAyMiwgMjAyMD9cbiAqIGNvbnN0IHJlc3VsdCA9IG5leHRTYXR1cmRheShuZXcgRGF0ZSgyMDIwLCAyLCAyMikpXG4gKiAvLz0+IFNhdCBNYXIgMjggMjAyMCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBuZXh0U2F0dXJkYXkoZGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIG5leHREYXkoZGF0ZSwgNik7XG59IiwiaW1wb3J0IG5leHREYXkgZnJvbSBcIi4uL25leHREYXkvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG5leHRTdW5kYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFdoZW4gaXMgdGhlIG5leHQgU3VuZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogV2hlbiBpcyB0aGUgbmV4dCBTdW5kYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlIHwgbnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gc3RhcnQgY291bnRpbmcgZnJvbVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXh0IFN1bmRheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gaXMgdGhlIG5leHQgU3VuZGF5IGFmdGVyIE1hciwgMjIsIDIwMjA/XG4gKiBjb25zdCByZXN1bHQgPSBuZXh0U3VuZGF5KG5ldyBEYXRlKDIwMjAsIDIsIDIyKSlcbiAqIC8vPT4gU3VuIE1hciAyOSAyMDIwIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5leHRTdW5kYXkoZGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIG5leHREYXkoZGF0ZSwgMCk7XG59IiwiaW1wb3J0IG5leHREYXkgZnJvbSBcIi4uL25leHREYXkvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG5leHRUaHVyc2RheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgV2hlbiBpcyB0aGUgbmV4dCBUaHVyc2RheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFdoZW4gaXMgdGhlIG5leHQgVGh1cnNkYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlIHwgbnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gc3RhcnQgY291bnRpbmcgZnJvbVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXh0IFRodXJzZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hlbiBpcyB0aGUgbmV4dCBUaHVyc2RheSBhZnRlciBNYXIsIDIyLCAyMDIwP1xuICogY29uc3QgcmVzdWx0ID0gbmV4dFRodXJzZGF5KG5ldyBEYXRlKDIwMjAsIDIsIDIyKSlcbiAqIC8vPT4gVGh1ciBNYXIgMjYgMjAyMCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBuZXh0VGh1cnNkYXkoZGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIG5leHREYXkoZGF0ZSwgNCk7XG59IiwiaW1wb3J0IG5leHREYXkgZnJvbSBcIi4uL25leHREYXkvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG5leHRUdWVzZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBXaGVuIGlzIHRoZSBuZXh0IFR1ZXNkYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBXaGVuIGlzIHRoZSBuZXh0IFR1ZXNkYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlIHwgbnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gc3RhcnQgY291bnRpbmcgZnJvbVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXh0IFR1ZXNkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBuZXh0IFR1ZXNkYXkgYWZ0ZXIgTWFyLCAyMiwgMjAyMD9cbiAqIGNvbnN0IHJlc3VsdCA9IG5leHRUdWVzZGF5KG5ldyBEYXRlKDIwMjAsIDIsIDIyKSlcbiAqIC8vPT4gVHVlIE1hciAyNCAyMDIwIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5leHRUdWVzZGF5KGRhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBuZXh0RGF5KGRhdGUsIDIpO1xufSIsImltcG9ydCBuZXh0RGF5IGZyb20gXCIuLi9uZXh0RGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBuZXh0V2VkbmVzZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBXaGVuIGlzIHRoZSBuZXh0IFdlZG5lc2RheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFdoZW4gaXMgdGhlIG5leHQgV2VkbmVzZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IG51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIHN0YXJ0IGNvdW50aW5nIGZyb21cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV4dCBXZWRuZXNkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBuZXh0IFdlZG5lc2RheSBhZnRlciBNYXIsIDIyLCAyMDIwP1xuICogY29uc3QgcmVzdWx0ID0gbmV4dFdlZG5lc2RheShuZXcgRGF0ZSgyMDIwLCAyLCAyMikpXG4gKiAvLz0+IFdlZCBNYXIgMjUgMjAyMCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBuZXh0V2VkbmVzZGF5KGRhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBuZXh0RGF5KGRhdGUsIDMpO1xufSIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFZhbHVlU2V0dGVyIH0gZnJvbSBcIi4vU2V0dGVyLmpzXCI7XG5leHBvcnQgdmFyIFBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFBhcnNlcigpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUGFyc2VyKTtcbiAgICBfZGVmaW5lUHJvcGVydHkodGhpcywgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgdm9pZCAwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkodGhpcywgXCJwcmlvcml0eVwiLCB2b2lkIDApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInN1YlByaW9yaXR5XCIsIHZvaWQgMCk7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKFBhcnNlciwgW3tcbiAgICBrZXk6IFwicnVuXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJ1bihkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gsIG9wdGlvbnMpIHtcbiAgICAgIHZhciByZXN1bHQgPSB0aGlzLnBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCwgb3B0aW9ucyk7XG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNldHRlcjogbmV3IFZhbHVlU2V0dGVyKHJlc3VsdC52YWx1ZSwgdGhpcy52YWxpZGF0ZSwgdGhpcy5zZXQsIHRoaXMucHJpb3JpdHksIHRoaXMuc3ViUHJpb3JpdHkpLFxuICAgICAgICByZXN0OiByZXN1bHQucmVzdFxuICAgICAgfTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX3V0Y0RhdGUsIF92YWx1ZSwgX29wdGlvbnMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gUGFyc2VyO1xufSgpOyIsImltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xudmFyIFRJTUVaT05FX1VOSVRfUFJJT1JJVFkgPSAxMDtcbmV4cG9ydCB2YXIgU2V0dGVyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gU2V0dGVyKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTZXR0ZXIpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInByaW9yaXR5XCIsIHZvaWQgMCk7XG4gICAgX2RlZmluZVByb3BlcnR5KHRoaXMsIFwic3ViUHJpb3JpdHlcIiwgMCk7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKFNldHRlciwgW3tcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX3V0Y0RhdGUsIF9vcHRpb25zKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFNldHRlcjtcbn0oKTtcbmV4cG9ydCB2YXIgVmFsdWVTZXR0ZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9TZXR0ZXIpIHtcbiAgX2luaGVyaXRzKFZhbHVlU2V0dGVyLCBfU2V0dGVyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihWYWx1ZVNldHRlcik7XG4gIGZ1bmN0aW9uIFZhbHVlU2V0dGVyKHZhbHVlLCB2YWxpZGF0ZVZhbHVlLCBzZXRWYWx1ZSwgcHJpb3JpdHksIHN1YlByaW9yaXR5KSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBWYWx1ZVNldHRlcik7XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKTtcbiAgICBfdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIF90aGlzLnZhbGlkYXRlVmFsdWUgPSB2YWxpZGF0ZVZhbHVlO1xuICAgIF90aGlzLnNldFZhbHVlID0gc2V0VmFsdWU7XG4gICAgX3RoaXMucHJpb3JpdHkgPSBwcmlvcml0eTtcbiAgICBpZiAoc3ViUHJpb3JpdHkpIHtcbiAgICAgIF90aGlzLnN1YlByaW9yaXR5ID0gc3ViUHJpb3JpdHk7XG4gICAgfVxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoVmFsdWVTZXR0ZXIsIFt7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKHV0Y0RhdGUsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlVmFsdWUodXRjRGF0ZSwgdGhpcy52YWx1ZSwgb3B0aW9ucyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQodXRjRGF0ZSwgZmxhZ3MsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldFZhbHVlKHV0Y0RhdGUsIGZsYWdzLCB0aGlzLnZhbHVlLCBvcHRpb25zKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFZhbHVlU2V0dGVyO1xufShTZXR0ZXIpO1xuZXhwb3J0IHZhciBEYXRlVG9TeXN0ZW1UaW1lem9uZVNldHRlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1NldHRlcjIpIHtcbiAgX2luaGVyaXRzKERhdGVUb1N5c3RlbVRpbWV6b25lU2V0dGVyLCBfU2V0dGVyMik7XG4gIHZhciBfc3VwZXIyID0gX2NyZWF0ZVN1cGVyKERhdGVUb1N5c3RlbVRpbWV6b25lU2V0dGVyKTtcbiAgZnVuY3Rpb24gRGF0ZVRvU3lzdGVtVGltZXpvbmVTZXR0ZXIoKSB7XG4gICAgdmFyIF90aGlzMjtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRGF0ZVRvU3lzdGVtVGltZXpvbmVTZXR0ZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMyID0gX3N1cGVyMi5jYWxsLmFwcGx5KF9zdXBlcjIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwicHJpb3JpdHlcIiwgVElNRVpPTkVfVU5JVF9QUklPUklUWSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJzdWJQcmlvcml0eVwiLCAtMSk7XG4gICAgcmV0dXJuIF90aGlzMjtcbiAgfVxuICBfY3JlYXRlQ2xhc3MoRGF0ZVRvU3lzdGVtVGltZXpvbmVTZXR0ZXIsIFt7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgZmxhZ3MpIHtcbiAgICAgIGlmIChmbGFncy50aW1lc3RhbXBJc1NldCkge1xuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICAgIH1cbiAgICAgIHZhciBjb252ZXJ0ZWREYXRlID0gbmV3IERhdGUoMCk7XG4gICAgICBjb252ZXJ0ZWREYXRlLnNldEZ1bGxZZWFyKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSwgZGF0ZS5nZXRVVENNb250aCgpLCBkYXRlLmdldFVUQ0RhdGUoKSk7XG4gICAgICBjb252ZXJ0ZWREYXRlLnNldEhvdXJzKGRhdGUuZ2V0VVRDSG91cnMoKSwgZGF0ZS5nZXRVVENNaW51dGVzKCksIGRhdGUuZ2V0VVRDU2Vjb25kcygpLCBkYXRlLmdldFVUQ01pbGxpc2Vjb25kcygpKTtcbiAgICAgIHJldHVybiBjb252ZXJ0ZWREYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gRGF0ZVRvU3lzdGVtVGltZXpvbmVTZXR0ZXI7XG59KFNldHRlcik7IiwiZXhwb3J0IHZhciBudW1lcmljUGF0dGVybnMgPSB7XG4gIG1vbnRoOiAvXigxWzAtMl18MD9cXGQpLyxcbiAgLy8gMCB0byAxMlxuICBkYXRlOiAvXigzWzAtMV18WzAtMl0/XFxkKS8sXG4gIC8vIDAgdG8gMzFcbiAgZGF5T2ZZZWFyOiAvXigzNlswLTZdfDNbMC01XVxcZHxbMC0yXT9cXGQ/XFxkKS8sXG4gIC8vIDAgdG8gMzY2XG4gIHdlZWs6IC9eKDVbMC0zXXxbMC00XT9cXGQpLyxcbiAgLy8gMCB0byA1M1xuICBob3VyMjNoOiAvXigyWzAtM118WzAtMV0/XFxkKS8sXG4gIC8vIDAgdG8gMjNcbiAgaG91cjI0aDogL14oMlswLTRdfFswLTFdP1xcZCkvLFxuICAvLyAwIHRvIDI0XG4gIGhvdXIxMWg6IC9eKDFbMC0xXXwwP1xcZCkvLFxuICAvLyAwIHRvIDExXG4gIGhvdXIxMmg6IC9eKDFbMC0yXXwwP1xcZCkvLFxuICAvLyAwIHRvIDEyXG4gIG1pbnV0ZTogL15bMC01XT9cXGQvLFxuICAvLyAwIHRvIDU5XG4gIHNlY29uZDogL15bMC01XT9cXGQvLFxuICAvLyAwIHRvIDU5XG5cbiAgc2luZ2xlRGlnaXQ6IC9eXFxkLyxcbiAgLy8gMCB0byA5XG4gIHR3b0RpZ2l0czogL15cXGR7MSwyfS8sXG4gIC8vIDAgdG8gOTlcbiAgdGhyZWVEaWdpdHM6IC9eXFxkezEsM30vLFxuICAvLyAwIHRvIDk5OVxuICBmb3VyRGlnaXRzOiAvXlxcZHsxLDR9LyxcbiAgLy8gMCB0byA5OTk5XG5cbiAgYW55RGlnaXRzU2lnbmVkOiAvXi0/XFxkKy8sXG4gIHNpbmdsZURpZ2l0U2lnbmVkOiAvXi0/XFxkLyxcbiAgLy8gMCB0byA5LCAtMCB0byAtOVxuICB0d29EaWdpdHNTaWduZWQ6IC9eLT9cXGR7MSwyfS8sXG4gIC8vIDAgdG8gOTksIC0wIHRvIC05OVxuICB0aHJlZURpZ2l0c1NpZ25lZDogL14tP1xcZHsxLDN9LyxcbiAgLy8gMCB0byA5OTksIC0wIHRvIC05OTlcbiAgZm91ckRpZ2l0c1NpZ25lZDogL14tP1xcZHsxLDR9LyAvLyAwIHRvIDk5OTksIC0wIHRvIC05OTk5XG59O1xuXG5leHBvcnQgdmFyIHRpbWV6b25lUGF0dGVybnMgPSB7XG4gIGJhc2ljT3B0aW9uYWxNaW51dGVzOiAvXihbKy1dKShcXGR7Mn0pKFxcZHsyfSk/fFovLFxuICBiYXNpYzogL14oWystXSkoXFxkezJ9KShcXGR7Mn0pfFovLFxuICBiYXNpY09wdGlvbmFsU2Vjb25kczogL14oWystXSkoXFxkezJ9KShcXGR7Mn0pKChcXGR7Mn0pKT98Wi8sXG4gIGV4dGVuZGVkOiAvXihbKy1dKShcXGR7Mn0pOihcXGR7Mn0pfFovLFxuICBleHRlbmRlZE9wdGlvbmFsU2Vjb25kczogL14oWystXSkoXFxkezJ9KTooXFxkezJ9KSg6KFxcZHsyfSkpP3xaL1xufTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IGRheVBlcmlvZEVudW1Ub0hvdXJzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIEFNUE1NaWRuaWdodFBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoQU1QTU1pZG5pZ2h0UGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihBTVBNTWlkbmlnaHRQYXJzZXIpO1xuICBmdW5jdGlvbiBBTVBNTWlkbmlnaHRQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBBTVBNTWlkbmlnaHRQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCA4MCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ2EnLCAnQicsICdIJywgJ2snLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoQU1QTU1pZG5pZ2h0UGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnYic6XG4gICAgICAgIGNhc2UgJ2JiJzpcbiAgICAgICAgY2FzZSAnYmJiJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgICBjYXNlICdiYmJiYic6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgICAgY2FzZSAnYmJiYic6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoZGF5UGVyaW9kRW51bVRvSG91cnModmFsdWUpLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gQU1QTU1pZG5pZ2h0UGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgZGF5UGVyaW9kRW51bVRvSG91cnMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgQU1QTVBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoQU1QTVBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoQU1QTVBhcnNlcik7XG4gIGZ1bmN0aW9uIEFNUE1QYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBBTVBNUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgODApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydiJywgJ0InLCAnSCcsICdrJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKEFNUE1QYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdhJzpcbiAgICAgICAgY2FzZSAnYWEnOlxuICAgICAgICBjYXNlICdhYWEnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIGNhc2UgJ2FhYWFhJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgICBjYXNlICdhYWFhJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgZGF0ZS5zZXRVVENIb3VycyhkYXlQZXJpb2RFbnVtVG9Ib3Vycyh2YWx1ZSksIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBBTVBNUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgaXNMZWFwWWVhckluZGV4LCBwYXJzZU5EaWdpdHMsIHBhcnNlTnVtZXJpY1BhdHRlcm4gfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbnZhciBEQVlTX0lOX01PTlRIID0gWzMxLCAyOCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdO1xudmFyIERBWVNfSU5fTU9OVEhfTEVBUF9ZRUFSID0gWzMxLCAyOSwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdO1xuXG4vLyBEYXkgb2YgdGhlIG1vbnRoXG5leHBvcnQgdmFyIERhdGVQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKERhdGVQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKERhdGVQYXJzZXIpO1xuICBmdW5jdGlvbiBEYXRlUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRGF0ZVBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDkwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwic3ViUHJpb3JpdHlcIiwgMSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ1knLCAnUicsICdxJywgJ1EnLCAndycsICdJJywgJ0QnLCAnaScsICdlJywgJ2MnLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoRGF0ZVBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5kYXRlLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgY2FzZSAnZG8nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICdkYXRlJ1xuICAgICAgICAgIH0pO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHZhciB5ZWFyID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgICAgdmFyIGlzTGVhcFllYXIgPSBpc0xlYXBZZWFySW5kZXgoeWVhcik7XG4gICAgICB2YXIgbW9udGggPSBkYXRlLmdldFVUQ01vbnRoKCk7XG4gICAgICBpZiAoaXNMZWFwWWVhcikge1xuICAgICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSBEQVlTX0lOX01PTlRIX0xFQVBfWUVBUlttb250aF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSBEQVlTX0lOX01PTlRIW21vbnRoXTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBkYXRlLnNldFVUQ0RhdGUodmFsdWUpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gRGF0ZVBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IHBhcnNlTnVtZXJpY1BhdHRlcm4sIHBhcnNlTkRpZ2l0cywgaXNMZWFwWWVhckluZGV4IH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIERheU9mWWVhclBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoRGF5T2ZZZWFyUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihEYXlPZlllYXJQYXJzZXIpO1xuICBmdW5jdGlvbiBEYXlPZlllYXJQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBEYXlPZlllYXJQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCA5MCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInN1YnByaW9yaXR5XCIsIDEpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydZJywgJ1InLCAncScsICdRJywgJ00nLCAnTCcsICd3JywgJ0knLCAnZCcsICdFJywgJ2knLCAnZScsICdjJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKERheU9mWWVhclBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICBjYXNlICdERCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLmRheU9mWWVhciwgZGF0ZVN0cmluZyk7XG4gICAgICAgIGNhc2UgJ0RvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAnZGF0ZSdcbiAgICAgICAgICB9KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKGRhdGUsIHZhbHVlKSB7XG4gICAgICB2YXIgeWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICAgIHZhciBpc0xlYXBZZWFyID0gaXNMZWFwWWVhckluZGV4KHllYXIpO1xuICAgICAgaWYgKGlzTGVhcFllYXIpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID49IDEgJiYgdmFsdWUgPD0gMzY2O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID49IDEgJiYgdmFsdWUgPD0gMzY1O1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDTW9udGgoMCwgdmFsdWUpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gRGF5T2ZZZWFyUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHNldFVUQ0RheSBmcm9tIFwiLi4vLi4vLi4vX2xpYi9zZXRVVENEYXkvaW5kZXguanNcIjsgLy8gRGF5IG9mIHdlZWtcbmV4cG9ydCB2YXIgRGF5UGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhEYXlQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKERheVBhcnNlcik7XG4gIGZ1bmN0aW9uIERheVBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIERheVBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDkwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnRCcsICdpJywgJ2UnLCAnYycsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhEYXlQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICAvLyBUdWVcbiAgICAgICAgY2FzZSAnRSc6XG4gICAgICAgIGNhc2UgJ0VFJzpcbiAgICAgICAgY2FzZSAnRUVFJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnc2hvcnQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBUXG4gICAgICAgIGNhc2UgJ0VFRUVFJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBUdVxuICAgICAgICBjYXNlICdFRUVFRUUnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIFR1ZXNkYXlcbiAgICAgICAgY2FzZSAnRUVFRSc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnc2hvcnQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDY7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgZGF0ZSA9IHNldFVUQ0RheShkYXRlLCB2YWx1ZSwgb3B0aW9ucyk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBEYXlQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBkYXlQZXJpb2RFbnVtVG9Ib3VycyB9IGZyb20gXCIuLi91dGlscy5qc1wiOyAvLyBpbiB0aGUgbW9ybmluZywgaW4gdGhlIGFmdGVybm9vbiwgaW4gdGhlIGV2ZW5pbmcsIGF0IG5pZ2h0XG5leHBvcnQgdmFyIERheVBlcmlvZFBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoRGF5UGVyaW9kUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihEYXlQZXJpb2RQYXJzZXIpO1xuICBmdW5jdGlvbiBEYXlQZXJpb2RQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBEYXlQZXJpb2RQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCA4MCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ2EnLCAnYicsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhEYXlQZXJpb2RQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdCJzpcbiAgICAgICAgY2FzZSAnQkInOlxuICAgICAgICBjYXNlICdCQkInOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIGNhc2UgJ0JCQkJCJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgICBjYXNlICdCQkJCJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgZGF0ZS5zZXRVVENIb3VycyhkYXlQZXJpb2RFbnVtVG9Ib3Vycyh2YWx1ZSksIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBEYXlQZXJpb2RQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5leHBvcnQgdmFyIEVyYVBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoRXJhUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihFcmFQYXJzZXIpO1xuICBmdW5jdGlvbiBFcmFQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBFcmFQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCAxNDApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydSJywgJ3UnLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoRXJhUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgLy8gQUQsIEJDXG4gICAgICAgIGNhc2UgJ0cnOlxuICAgICAgICBjYXNlICdHRyc6XG4gICAgICAgIGNhc2UgJ0dHRyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmVyYShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmVyYShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdydcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gQSwgQlxuICAgICAgICBjYXNlICdHR0dHRyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmVyYShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdydcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gQW5ubyBEb21pbmksIEJlZm9yZSBDaHJpc3RcbiAgICAgICAgY2FzZSAnR0dHRyc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmVyYShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3dpZGUnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZXJhKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZXJhKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93J1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIGZsYWdzLCB2YWx1ZSkge1xuICAgICAgZmxhZ3MuZXJhID0gdmFsdWU7XG4gICAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHZhbHVlLCAwLCAxKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIEVyYVBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IHBhcnNlTkRpZ2l0c1NpZ25lZCB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBFeHRlbmRlZFllYXJQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKEV4dGVuZGVkWWVhclBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoRXh0ZW5kZWRZZWFyUGFyc2VyKTtcbiAgZnVuY3Rpb24gRXh0ZW5kZWRZZWFyUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRXh0ZW5kZWRZZWFyUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTMwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnRycsICd5JywgJ1knLCAnUicsICd3JywgJ0knLCAnaScsICdlJywgJ2MnLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoRXh0ZW5kZWRZZWFyUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbikge1xuICAgICAgaWYgKHRva2VuID09PSAndScpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0c1NpZ25lZCg0LCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJzZU5EaWdpdHNTaWduZWQodG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHZhbHVlLCAwLCAxKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIEV4dGVuZGVkWWVhclBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG1hcFZhbHVlLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgRnJhY3Rpb25PZlNlY29uZFBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoRnJhY3Rpb25PZlNlY29uZFBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoRnJhY3Rpb25PZlNlY29uZFBhcnNlcik7XG4gIGZ1bmN0aW9uIEZyYWN0aW9uT2ZTZWNvbmRQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBGcmFjdGlvbk9mU2Vjb25kUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMzApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWyd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhGcmFjdGlvbk9mU2Vjb25kUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbikge1xuICAgICAgdmFyIHZhbHVlQ2FsbGJhY2sgPSBmdW5jdGlvbiB2YWx1ZUNhbGxiYWNrKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHZhbHVlICogTWF0aC5wb3coMTAsIC10b2tlbi5sZW5ndGggKyAzKSk7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIG1hcFZhbHVlKHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBkYXRlLnNldFVUQ01pbGxpc2Vjb25kcyh2YWx1ZSk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIEZyYWN0aW9uT2ZTZWNvbmRQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU51bWVyaWNQYXR0ZXJuLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgSG91cjBUbzExUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhIb3VyMFRvMTFQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEhvdXIwVG8xMVBhcnNlcik7XG4gIGZ1bmN0aW9uIEhvdXIwVG8xMVBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEhvdXIwVG8xMVBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDcwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnaCcsICdIJywgJ2snLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoSG91cjBUbzExUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnSyc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLmhvdXIxMWgsIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICdLbyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ2hvdXInXG4gICAgICAgICAgfSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDExO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIHZhciBpc1BNID0gZGF0ZS5nZXRVVENIb3VycygpID49IDEyO1xuICAgICAgaWYgKGlzUE0gJiYgdmFsdWUgPCAxMikge1xuICAgICAgICBkYXRlLnNldFVUQ0hvdXJzKHZhbHVlICsgMTIsIDAsIDAsIDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0ZS5zZXRVVENIb3Vycyh2YWx1ZSwgMCwgMCwgMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIEhvdXIwVG8xMVBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IHBhcnNlTnVtZXJpY1BhdHRlcm4sIHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBIb3VyMHRvMjNQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKEhvdXIwdG8yM1BhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoSG91cjB0bzIzUGFyc2VyKTtcbiAgZnVuY3Rpb24gSG91cjB0bzIzUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgSG91cjB0bzIzUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgNzApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydhJywgJ2InLCAnaCcsICdLJywgJ2snLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoSG91cjB0bzIzUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnSCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLmhvdXIyM2gsIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICdIbyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ2hvdXInXG4gICAgICAgICAgfSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDIzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnModmFsdWUsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBIb3VyMHRvMjNQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU51bWVyaWNQYXR0ZXJuLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgSG91cjFUbzI0UGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhIb3VyMVRvMjRQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEhvdXIxVG8yNFBhcnNlcik7XG4gIGZ1bmN0aW9uIEhvdXIxVG8yNFBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEhvdXIxVG8yNFBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDcwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnYScsICdiJywgJ2gnLCAnSCcsICdLJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKEhvdXIxVG8yNFBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ2snOlxuICAgICAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5ob3VyMjRoLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgY2FzZSAna28nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICdob3VyJ1xuICAgICAgICAgIH0pO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSAyNDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICB2YXIgaG91cnMgPSB2YWx1ZSA8PSAyNCA/IHZhbHVlICUgMjQgOiB2YWx1ZTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoaG91cnMsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBIb3VyMVRvMjRQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU51bWVyaWNQYXR0ZXJuLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgSG91cjF0bzEyUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhIb3VyMXRvMTJQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEhvdXIxdG8xMlBhcnNlcik7XG4gIGZ1bmN0aW9uIEhvdXIxdG8xMlBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEhvdXIxdG8xMlBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDcwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnSCcsICdLJywgJ2snLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoSG91cjF0bzEyUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLmhvdXIxMmgsIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICdobyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ2hvdXInXG4gICAgICAgICAgfSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IDEyO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIHZhciBpc1BNID0gZGF0ZS5nZXRVVENIb3VycygpID49IDEyO1xuICAgICAgaWYgKGlzUE0gJiYgdmFsdWUgPCAxMikge1xuICAgICAgICBkYXRlLnNldFVUQ0hvdXJzKHZhbHVlICsgMTIsIDAsIDAsIDApO1xuICAgICAgfSBlbHNlIGlmICghaXNQTSAmJiB2YWx1ZSA9PT0gMTIpIHtcbiAgICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGUuc2V0VVRDSG91cnModmFsdWUsIDAsIDAsIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBIb3VyMXRvMTJQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBtYXBWYWx1ZSwgcGFyc2VORGlnaXRzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgc2V0VVRDSVNPRGF5IGZyb20gXCIuLi8uLi8uLi9fbGliL3NldFVUQ0lTT0RheS9pbmRleC5qc1wiOyAvLyBJU08gZGF5IG9mIHdlZWtcbmV4cG9ydCB2YXIgSVNPRGF5UGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhJU09EYXlQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKElTT0RheVBhcnNlcik7XG4gIGZ1bmN0aW9uIElTT0RheVBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIElTT0RheVBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDkwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsneScsICdZJywgJ3UnLCAncScsICdRJywgJ00nLCAnTCcsICd3JywgJ2QnLCAnRCcsICdFJywgJ2UnLCAnYycsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhJU09EYXlQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgdmFyIHZhbHVlQ2FsbGJhY2sgPSBmdW5jdGlvbiB2YWx1ZUNhbGxiYWNrKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiA3O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH07XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIC8vIDJcbiAgICAgICAgY2FzZSAnaSc6XG4gICAgICAgIGNhc2UgJ2lpJzpcbiAgICAgICAgICAvLyAwMlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgLy8gMm5kXG4gICAgICAgIGNhc2UgJ2lvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAnZGF5J1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBUdWVcbiAgICAgICAgY2FzZSAnaWlpJzpcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUobWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnc2hvcnQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgICAgLy8gVFxuICAgICAgICBjYXNlICdpaWlpaSc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIFR1XG4gICAgICAgIGNhc2UgJ2lpaWlpaSc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIFR1ZXNkYXlcbiAgICAgICAgY2FzZSAnaWlpaSc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnc2hvcnQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSA3O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUgPSBzZXRVVENJU09EYXkoZGF0ZSwgdmFsdWUpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gSVNPRGF5UGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgdGltZXpvbmVQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IHBhcnNlVGltZXpvbmVQYXR0ZXJuIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7IC8vIFRpbWV6b25lIChJU08tODYwMSlcbmV4cG9ydCB2YXIgSVNPVGltZXpvbmVQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKElTT1RpbWV6b25lUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihJU09UaW1lem9uZVBhcnNlcik7XG4gIGZ1bmN0aW9uIElTT1RpbWV6b25lUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgSVNPVGltZXpvbmVQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCAxMCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ3QnLCAnVCcsICdYJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoSVNPVGltZXpvbmVQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ3gnOlxuICAgICAgICAgIHJldHVybiBwYXJzZVRpbWV6b25lUGF0dGVybih0aW1lem9uZVBhdHRlcm5zLmJhc2ljT3B0aW9uYWxNaW51dGVzLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgY2FzZSAneHgnOlxuICAgICAgICAgIHJldHVybiBwYXJzZVRpbWV6b25lUGF0dGVybih0aW1lem9uZVBhdHRlcm5zLmJhc2ljLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgY2FzZSAneHh4eCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlVGltZXpvbmVQYXR0ZXJuKHRpbWV6b25lUGF0dGVybnMuYmFzaWNPcHRpb25hbFNlY29uZHMsIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICd4eHh4eCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlVGltZXpvbmVQYXR0ZXJuKHRpbWV6b25lUGF0dGVybnMuZXh0ZW5kZWRPcHRpb25hbFNlY29uZHMsIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICd4eHgnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZVRpbWV6b25lUGF0dGVybih0aW1lem9uZVBhdHRlcm5zLmV4dGVuZGVkLCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBmbGFncywgdmFsdWUpIHtcbiAgICAgIGlmIChmbGFncy50aW1lc3RhbXBJc1NldCkge1xuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSAtIHZhbHVlKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIElTT1RpbWV6b25lUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgdGltZXpvbmVQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IHBhcnNlVGltZXpvbmVQYXR0ZXJuIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7IC8vIFRpbWV6b25lIChJU08tODYwMS4gKzAwOjAwIGlzIGAnWidgKVxuZXhwb3J0IHZhciBJU09UaW1lem9uZVdpdGhaUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhJU09UaW1lem9uZVdpdGhaUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihJU09UaW1lem9uZVdpdGhaUGFyc2VyKTtcbiAgZnVuY3Rpb24gSVNPVGltZXpvbmVXaXRoWlBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIElTT1RpbWV6b25lV2l0aFpQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCAxMCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ3QnLCAnVCcsICd4J10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoSVNPVGltZXpvbmVXaXRoWlBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4pIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnWCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlVGltZXpvbmVQYXR0ZXJuKHRpbWV6b25lUGF0dGVybnMuYmFzaWNPcHRpb25hbE1pbnV0ZXMsIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICdYWCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlVGltZXpvbmVQYXR0ZXJuKHRpbWV6b25lUGF0dGVybnMuYmFzaWMsIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICdYWFhYJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VUaW1lem9uZVBhdHRlcm4odGltZXpvbmVQYXR0ZXJucy5iYXNpY09wdGlvbmFsU2Vjb25kcywgZGF0ZVN0cmluZyk7XG4gICAgICAgIGNhc2UgJ1hYWFhYJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VUaW1lem9uZVBhdHRlcm4odGltZXpvbmVQYXR0ZXJucy5leHRlbmRlZE9wdGlvbmFsU2Vjb25kcywgZGF0ZVN0cmluZyk7XG4gICAgICAgIGNhc2UgJ1hYWCc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlVGltZXpvbmVQYXR0ZXJuKHRpbWV6b25lUGF0dGVybnMuZXh0ZW5kZWQsIGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIGZsYWdzLCB2YWx1ZSkge1xuICAgICAgaWYgKGZsYWdzLnRpbWVzdGFtcElzU2V0KSB7XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpIC0gdmFsdWUpO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gSVNPVGltZXpvbmVXaXRoWlBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IHBhcnNlTnVtZXJpY1BhdHRlcm4sIHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuaW1wb3J0IHNldFVUQ0lTT1dlZWsgZnJvbSBcIi4uLy4uLy4uL19saWIvc2V0VVRDSVNPV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZVVENJU09XZWVrIGZyb20gXCIuLi8uLi8uLi9fbGliL3N0YXJ0T2ZVVENJU09XZWVrL2luZGV4LmpzXCI7IC8vIElTTyB3ZWVrIG9mIHllYXJcbmV4cG9ydCB2YXIgSVNPV2Vla1BhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoSVNPV2Vla1BhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoSVNPV2Vla1BhcnNlcik7XG4gIGZ1bmN0aW9uIElTT1dlZWtQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBJU09XZWVrUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTAwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsneScsICdZJywgJ3UnLCAncScsICdRJywgJ00nLCAnTCcsICd3JywgJ2QnLCAnRCcsICdlJywgJ2MnLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoSVNPV2Vla1BhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ0knOlxuICAgICAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy53ZWVrLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgY2FzZSAnSW8nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICd3ZWVrJ1xuICAgICAgICAgIH0pO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSA1MztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gc3RhcnRPZlVUQ0lTT1dlZWsoc2V0VVRDSVNPV2VlayhkYXRlLCB2YWx1ZSkpO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gSVNPV2Vla1BhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IHBhcnNlTkRpZ2l0c1NpZ25lZCB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZVVENJU09XZWVrIGZyb20gXCIuLi8uLi8uLi9fbGliL3N0YXJ0T2ZVVENJU09XZWVrL2luZGV4LmpzXCI7IC8vIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyXG5leHBvcnQgdmFyIElTT1dlZWtZZWFyUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhJU09XZWVrWWVhclBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoSVNPV2Vla1llYXJQYXJzZXIpO1xuICBmdW5jdGlvbiBJU09XZWVrWWVhclBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIElTT1dlZWtZZWFyUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTMwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnRycsICd5JywgJ1knLCAndScsICdRJywgJ3EnLCAnTScsICdMJywgJ3cnLCAnZCcsICdEJywgJ2UnLCAnYycsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhJU09XZWVrWWVhclBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4pIHtcbiAgICAgIGlmICh0b2tlbiA9PT0gJ1InKSB7XG4gICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHNTaWduZWQoNCwgZGF0ZVN0cmluZyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFyc2VORGlnaXRzU2lnbmVkKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoX2RhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIHZhciBmaXJzdFdlZWtPZlllYXIgPSBuZXcgRGF0ZSgwKTtcbiAgICAgIGZpcnN0V2Vla09mWWVhci5zZXRVVENGdWxsWWVhcih2YWx1ZSwgMCwgNCk7XG4gICAgICBmaXJzdFdlZWtPZlllYXIuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gc3RhcnRPZlVUQ0lTT1dlZWsoZmlyc3RXZWVrT2ZZZWFyKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIElTT1dlZWtZZWFyUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbWFwVmFsdWUsIHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuaW1wb3J0IHNldFVUQ0RheSBmcm9tIFwiLi4vLi4vLi4vX2xpYi9zZXRVVENEYXkvaW5kZXguanNcIjsgLy8gTG9jYWwgZGF5IG9mIHdlZWtcbmV4cG9ydCB2YXIgTG9jYWxEYXlQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKExvY2FsRGF5UGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihMb2NhbERheVBhcnNlcik7XG4gIGZ1bmN0aW9uIExvY2FsRGF5UGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTG9jYWxEYXlQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCA5MCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ3knLCAnUicsICd1JywgJ3EnLCAnUScsICdNJywgJ0wnLCAnSScsICdkJywgJ0QnLCAnRScsICdpJywgJ2MnLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoTG9jYWxEYXlQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCwgb3B0aW9ucykge1xuICAgICAgdmFyIHZhbHVlQ2FsbGJhY2sgPSBmdW5jdGlvbiB2YWx1ZUNhbGxiYWNrKHZhbHVlKSB7XG4gICAgICAgIHZhciB3aG9sZVdlZWtEYXlzID0gTWF0aC5mbG9vcigodmFsdWUgLSAxKSAvIDcpICogNztcbiAgICAgICAgcmV0dXJuICh2YWx1ZSArIG9wdGlvbnMud2Vla1N0YXJ0c09uICsgNikgJSA3ICsgd2hvbGVXZWVrRGF5cztcbiAgICAgIH07XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIC8vIDNcbiAgICAgICAgY2FzZSAnZSc6XG4gICAgICAgIGNhc2UgJ2VlJzpcbiAgICAgICAgICAvLyAwM1xuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIDNyZFxuICAgICAgICBjYXNlICdlbyc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ2RheSdcbiAgICAgICAgICB9KSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIFR1ZVxuICAgICAgICBjYXNlICdlZWUnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIFRcbiAgICAgICAgY2FzZSAnZWVlZWUnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIFR1XG4gICAgICAgIGNhc2UgJ2VlZWVlZSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gVHVlc2RheVxuICAgICAgICBjYXNlICdlZWVlJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gNjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICBkYXRlID0gc2V0VVRDRGF5KGRhdGUsIHZhbHVlLCBvcHRpb25zKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIExvY2FsRGF5UGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbnVtZXJpY1BhdHRlcm5zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VOdW1lcmljUGF0dGVybiwgcGFyc2VORGlnaXRzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgc2V0VVRDV2VlayBmcm9tIFwiLi4vLi4vLi4vX2xpYi9zZXRVVENXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZlVUQ1dlZWsgZnJvbSBcIi4uLy4uLy4uL19saWIvc3RhcnRPZlVUQ1dlZWsvaW5kZXguanNcIjsgLy8gTG9jYWwgd2VlayBvZiB5ZWFyXG5leHBvcnQgdmFyIExvY2FsV2Vla1BhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoTG9jYWxXZWVrUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihMb2NhbFdlZWtQYXJzZXIpO1xuICBmdW5jdGlvbiBMb2NhbFdlZWtQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBMb2NhbFdlZWtQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCAxMDApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWyd5JywgJ1InLCAndScsICdxJywgJ1EnLCAnTScsICdMJywgJ0knLCAnZCcsICdEJywgJ2knLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoTG9jYWxXZWVrUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLndlZWssIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICd3byc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ3dlZWsnXG4gICAgICAgICAgfSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IDUzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBzdGFydE9mVVRDV2VlayhzZXRVVENXZWVrKGRhdGUsIHZhbHVlLCBvcHRpb25zKSwgb3B0aW9ucyk7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBMb2NhbFdlZWtQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU5EaWdpdHMsIG5vcm1hbGl6ZVR3b0RpZ2l0WWVhciwgbWFwVmFsdWUgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmltcG9ydCBnZXRVVENXZWVrWWVhciBmcm9tIFwiLi4vLi4vLi4vX2xpYi9nZXRVVENXZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZVVENXZWVrIGZyb20gXCIuLi8uLi8uLi9fbGliL3N0YXJ0T2ZVVENXZWVrL2luZGV4LmpzXCI7XG4vLyBMb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyXG5leHBvcnQgdmFyIExvY2FsV2Vla1llYXJQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKExvY2FsV2Vla1llYXJQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKExvY2FsV2Vla1llYXJQYXJzZXIpO1xuICBmdW5jdGlvbiBMb2NhbFdlZWtZZWFyUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTG9jYWxXZWVrWWVhclBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDEzMCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ3knLCAnUicsICd1JywgJ1EnLCAncScsICdNJywgJ0wnLCAnSScsICdkJywgJ0QnLCAnaScsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhMb2NhbFdlZWtZZWFyUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHZhciB2YWx1ZUNhbGxiYWNrID0gZnVuY3Rpb24gdmFsdWVDYWxsYmFjayh5ZWFyKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeWVhcjogeWVhcixcbiAgICAgICAgICBpc1R3b0RpZ2l0WWVhcjogdG9rZW4gPT09ICdZWSdcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ1knOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShwYXJzZU5EaWdpdHMoNCwgZGF0ZVN0cmluZyksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICBjYXNlICdZbyc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ3llYXInXG4gICAgICAgICAgfSksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlLmlzVHdvRGlnaXRZZWFyIHx8IHZhbHVlLnllYXIgPiAwO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIGZsYWdzLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgdmFyIGN1cnJlbnRZZWFyID0gZ2V0VVRDV2Vla1llYXIoZGF0ZSwgb3B0aW9ucyk7XG4gICAgICBpZiAodmFsdWUuaXNUd29EaWdpdFllYXIpIHtcbiAgICAgICAgdmFyIG5vcm1hbGl6ZWRUd29EaWdpdFllYXIgPSBub3JtYWxpemVUd29EaWdpdFllYXIodmFsdWUueWVhciwgY3VycmVudFllYXIpO1xuICAgICAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKG5vcm1hbGl6ZWRUd29EaWdpdFllYXIsIDAsIG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgICAgcmV0dXJuIHN0YXJ0T2ZVVENXZWVrKGRhdGUsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgICAgdmFyIHllYXIgPSAhKCdlcmEnIGluIGZsYWdzKSB8fCBmbGFncy5lcmEgPT09IDEgPyB2YWx1ZS55ZWFyIDogMSAtIHZhbHVlLnllYXI7XG4gICAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHllYXIsIDAsIG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gc3RhcnRPZlVUQ1dlZWsoZGF0ZSwgb3B0aW9ucyk7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBMb2NhbFdlZWtZZWFyUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbnVtZXJpY1BhdHRlcm5zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VOdW1lcmljUGF0dGVybiwgcGFyc2VORGlnaXRzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIE1pbnV0ZVBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoTWludXRlUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihNaW51dGVQYXJzZXIpO1xuICBmdW5jdGlvbiBNaW51dGVQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBNaW51dGVQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCA2MCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKE1pbnV0ZVBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5taW51dGUsIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICdtbyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ21pbnV0ZSdcbiAgICAgICAgICB9KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gNTk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgZGF0ZS5zZXRVVENNaW51dGVzKHZhbHVlLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gTWludXRlUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgbWFwVmFsdWUsIHBhcnNlTkRpZ2l0cywgcGFyc2VOdW1lcmljUGF0dGVybiB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbnVtZXJpY1BhdHRlcm5zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuZXhwb3J0IHZhciBNb250aFBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoTW9udGhQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKE1vbnRoUGFyc2VyKTtcbiAgZnVuY3Rpb24gTW9udGhQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBNb250aFBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ1knLCAnUicsICdxJywgJ1EnLCAnTCcsICd3JywgJ0knLCAnRCcsICdpJywgJ2UnLCAnYycsICd0JywgJ1QnXSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDExMCk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhNb250aFBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICB2YXIgdmFsdWVDYWxsYmFjayA9IGZ1bmN0aW9uIHZhbHVlQ2FsbGJhY2sodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlIC0gMTtcbiAgICAgIH07XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIC8vIDEsIDIsIC4uLiwgMTJcbiAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLm1vbnRoLCBkYXRlU3RyaW5nKSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIDAxLCAwMiwgLi4uLCAxMlxuICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKHBhcnNlTkRpZ2l0cygyLCBkYXRlU3RyaW5nKSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIDFzdCwgMm5kLCAuLi4sIDEydGhcbiAgICAgICAgY2FzZSAnTW8nOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICdtb250aCdcbiAgICAgICAgICB9KSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIEphbiwgRmViLCAuLi4sIERlY1xuICAgICAgICBjYXNlICdNTU0nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBKLCBGLCAuLi4sIERcbiAgICAgICAgY2FzZSAnTU1NTU0nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXJcbiAgICAgICAgY2FzZSAnTU1NTSc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDExO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDTW9udGgodmFsdWUsIDEpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gTW9udGhQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgUXVhcnRlclBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoUXVhcnRlclBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoUXVhcnRlclBhcnNlcik7XG4gIGZ1bmN0aW9uIFF1YXJ0ZXJQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBRdWFydGVyUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTIwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnWScsICdSJywgJ3EnLCAnTScsICdMJywgJ3cnLCAnSScsICdkJywgJ0QnLCAnaScsICdlJywgJ2MnLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoUXVhcnRlclBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIC8vIDEsIDIsIDMsIDRcbiAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgIGNhc2UgJ1FRJzpcbiAgICAgICAgICAvLyAwMSwgMDIsIDAzLCAwNFxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgLy8gMXN0LCAybmQsIDNyZCwgNHRoXG4gICAgICAgIGNhc2UgJ1FvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAncXVhcnRlcidcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gUTEsIFEyLCBRMywgUTRcbiAgICAgICAgY2FzZSAnUVFRJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gucXVhcnRlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLnF1YXJ0ZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIDEsIDIsIDMsIDQgKG5hcnJvdyBxdWFydGVyOyBjb3VsZCBiZSBub3QgbnVtZXJpY2FsKVxuICAgICAgICBjYXNlICdRUVFRUSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLnF1YXJ0ZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIDFzdCBxdWFydGVyLCAybmQgcXVhcnRlciwgLi4uXG4gICAgICAgIGNhc2UgJ1FRUVEnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXRjaC5xdWFydGVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5xdWFydGVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2gucXVhcnRlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSA0O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDTW9udGgoKHZhbHVlIC0gMSkgKiAzLCAxKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFF1YXJ0ZXJQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU51bWVyaWNQYXR0ZXJuLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgU2Vjb25kUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhTZWNvbmRQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFNlY29uZFBhcnNlcik7XG4gIGZ1bmN0aW9uIFNlY29uZFBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNlY29uZFBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDUwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoU2Vjb25kUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLnNlY29uZCwgZGF0ZVN0cmluZyk7XG4gICAgICAgIGNhc2UgJ3NvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAnc2Vjb25kJ1xuICAgICAgICAgIH0pO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMCAmJiB2YWx1ZSA8PSA1OTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBkYXRlLnNldFVUQ1NlY29uZHModmFsdWUsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBTZWNvbmRQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBtYXBWYWx1ZSwgcGFyc2VORGlnaXRzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgc2V0VVRDRGF5IGZyb20gXCIuLi8uLi8uLi9fbGliL3NldFVUQ0RheS9pbmRleC5qc1wiOyAvLyBTdGFuZC1hbG9uZSBsb2NhbCBkYXkgb2Ygd2Vla1xuZXhwb3J0IHZhciBTdGFuZEFsb25lTG9jYWxEYXlQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKFN0YW5kQWxvbmVMb2NhbERheVBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoU3RhbmRBbG9uZUxvY2FsRGF5UGFyc2VyKTtcbiAgZnVuY3Rpb24gU3RhbmRBbG9uZUxvY2FsRGF5UGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU3RhbmRBbG9uZUxvY2FsRGF5UGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgOTApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWyd5JywgJ1InLCAndScsICdxJywgJ1EnLCAnTScsICdMJywgJ0knLCAnZCcsICdEJywgJ0UnLCAnaScsICdlJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKFN0YW5kQWxvbmVMb2NhbERheVBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoLCBvcHRpb25zKSB7XG4gICAgICB2YXIgdmFsdWVDYWxsYmFjayA9IGZ1bmN0aW9uIHZhbHVlQ2FsbGJhY2sodmFsdWUpIHtcbiAgICAgICAgdmFyIHdob2xlV2Vla0RheXMgPSBNYXRoLmZsb29yKCh2YWx1ZSAtIDEpIC8gNykgKiA3O1xuICAgICAgICByZXR1cm4gKHZhbHVlICsgb3B0aW9ucy53ZWVrU3RhcnRzT24gKyA2KSAlIDcgKyB3aG9sZVdlZWtEYXlzO1xuICAgICAgfTtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgLy8gM1xuICAgICAgICBjYXNlICdjJzpcbiAgICAgICAgY2FzZSAnY2MnOlxuICAgICAgICAgIC8vIDAzXG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgICAgLy8gM3JkXG4gICAgICAgIGNhc2UgJ2NvJzpcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUobWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAnZGF5J1xuICAgICAgICAgIH0pLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgICAgLy8gVHVlXG4gICAgICAgIGNhc2UgJ2NjYyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gVFxuICAgICAgICBjYXNlICdjY2NjYyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gVHVcbiAgICAgICAgY2FzZSAnY2NjY2NjJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnc2hvcnQnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBUdWVzZGF5XG4gICAgICAgIGNhc2UgJ2NjY2MnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMCAmJiB2YWx1ZSA8PSA2O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgIGRhdGUgPSBzZXRVVENEYXkoZGF0ZSwgdmFsdWUsIG9wdGlvbnMpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gU3RhbmRBbG9uZUxvY2FsRGF5UGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbnVtZXJpY1BhdHRlcm5zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VOdW1lcmljUGF0dGVybiwgcGFyc2VORGlnaXRzLCBtYXBWYWx1ZSB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBTdGFuZEFsb25lTW9udGhQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKFN0YW5kQWxvbmVNb250aFBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoU3RhbmRBbG9uZU1vbnRoUGFyc2VyKTtcbiAgZnVuY3Rpb24gU3RhbmRBbG9uZU1vbnRoUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU3RhbmRBbG9uZU1vbnRoUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTEwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnWScsICdSJywgJ3EnLCAnUScsICdNJywgJ3cnLCAnSScsICdEJywgJ2knLCAnZScsICdjJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKFN0YW5kQWxvbmVNb250aFBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICB2YXIgdmFsdWVDYWxsYmFjayA9IGZ1bmN0aW9uIHZhbHVlQ2FsbGJhY2sodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlIC0gMTtcbiAgICAgIH07XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIC8vIDEsIDIsIC4uLiwgMTJcbiAgICAgICAgY2FzZSAnTCc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLm1vbnRoLCBkYXRlU3RyaW5nKSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIDAxLCAwMiwgLi4uLCAxMlxuICAgICAgICBjYXNlICdMTCc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKHBhcnNlTkRpZ2l0cygyLCBkYXRlU3RyaW5nKSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIDFzdCwgMm5kLCAuLi4sIDEydGhcbiAgICAgICAgY2FzZSAnTG8nOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICdtb250aCdcbiAgICAgICAgICB9KSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIEphbiwgRmViLCAuLi4sIERlY1xuICAgICAgICBjYXNlICdMTEwnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBKLCBGLCAuLi4sIERcbiAgICAgICAgY2FzZSAnTExMTEwnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXJcbiAgICAgICAgY2FzZSAnTExMTCc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KSB8fCBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDExO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDTW9udGgodmFsdWUsIDEpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gU3RhbmRBbG9uZU1vbnRoUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgcGFyc2VORGlnaXRzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIFN0YW5kQWxvbmVRdWFydGVyUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhTdGFuZEFsb25lUXVhcnRlclBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoU3RhbmRBbG9uZVF1YXJ0ZXJQYXJzZXIpO1xuICBmdW5jdGlvbiBTdGFuZEFsb25lUXVhcnRlclBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFN0YW5kQWxvbmVRdWFydGVyUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTIwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnWScsICdSJywgJ1EnLCAnTScsICdMJywgJ3cnLCAnSScsICdkJywgJ0QnLCAnaScsICdlJywgJ2MnLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoU3RhbmRBbG9uZVF1YXJ0ZXJQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICAvLyAxLCAyLCAzLCA0XG4gICAgICAgIGNhc2UgJ3EnOlxuICAgICAgICBjYXNlICdxcSc6XG4gICAgICAgICAgLy8gMDEsIDAyLCAwMywgMDRcbiAgICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgICAgIC8vIDFzdCwgMm5kLCAzcmQsIDR0aFxuICAgICAgICBjYXNlICdxbyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ3F1YXJ0ZXInXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIFExLCBRMiwgUTMsIFE0XG4gICAgICAgIGNhc2UgJ3FxcSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLnF1YXJ0ZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KSB8fCBtYXRjaC5xdWFydGVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyAxLCAyLCAzLCA0IChuYXJyb3cgcXVhcnRlcjsgY291bGQgYmUgbm90IG51bWVyaWNhbClcbiAgICAgICAgY2FzZSAncXFxcXEnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5xdWFydGVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyAxc3QgcXVhcnRlciwgMm5kIHF1YXJ0ZXIsIC4uLlxuICAgICAgICBjYXNlICdxcXFxJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gucXVhcnRlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSkgfHwgbWF0Y2gucXVhcnRlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLnF1YXJ0ZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDEgJiYgdmFsdWUgPD0gNDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBkYXRlLnNldFVUQ01vbnRoKCh2YWx1ZSAtIDEpICogMywgMSk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBTdGFuZEFsb25lUXVhcnRlclBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IHBhcnNlQW55RGlnaXRzU2lnbmVkIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIFRpbWVzdGFtcE1pbGxpc2Vjb25kc1BhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoVGltZXN0YW1wTWlsbGlzZWNvbmRzUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihUaW1lc3RhbXBNaWxsaXNlY29uZHNQYXJzZXIpO1xuICBmdW5jdGlvbiBUaW1lc3RhbXBNaWxsaXNlY29uZHNQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUaW1lc3RhbXBNaWxsaXNlY29uZHNQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCAyMCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCAnKicpO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoVGltZXN0YW1wTWlsbGlzZWNvbmRzUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nKSB7XG4gICAgICByZXR1cm4gcGFyc2VBbnlEaWdpdHNTaWduZWQoZGF0ZVN0cmluZyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoX2RhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIHJldHVybiBbbmV3IERhdGUodmFsdWUpLCB7XG4gICAgICAgIHRpbWVzdGFtcElzU2V0OiB0cnVlXG4gICAgICB9XTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFRpbWVzdGFtcE1pbGxpc2Vjb25kc1BhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IHBhcnNlQW55RGlnaXRzU2lnbmVkIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIFRpbWVzdGFtcFNlY29uZHNQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKFRpbWVzdGFtcFNlY29uZHNQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFRpbWVzdGFtcFNlY29uZHNQYXJzZXIpO1xuICBmdW5jdGlvbiBUaW1lc3RhbXBTZWNvbmRzUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVGltZXN0YW1wU2Vjb25kc1BhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDQwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsICcqJyk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhUaW1lc3RhbXBTZWNvbmRzUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nKSB7XG4gICAgICByZXR1cm4gcGFyc2VBbnlEaWdpdHNTaWduZWQoZGF0ZVN0cmluZyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoX2RhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIHJldHVybiBbbmV3IERhdGUodmFsdWUgKiAxMDAwKSwge1xuICAgICAgICB0aW1lc3RhbXBJc1NldDogdHJ1ZVxuICAgICAgfV07XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBUaW1lc3RhbXBTZWNvbmRzUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbWFwVmFsdWUsIG5vcm1hbGl6ZVR3b0RpZ2l0WWVhciwgcGFyc2VORGlnaXRzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG4vLyBGcm9tIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjM1L3RyMzUtMzEvdHIzNS1kYXRlcy5odG1sI0RhdGVfRm9ybWF0X1BhdHRlcm5zXG4vLyB8IFllYXIgICAgIHwgICAgIHkgfCB5eSB8ICAgeXl5IHwgIHl5eXkgfCB5eXl5eSB8XG4vLyB8LS0tLS0tLS0tLXwtLS0tLS0tfC0tLS18LS0tLS0tLXwtLS0tLS0tfC0tLS0tLS18XG4vLyB8IEFEIDEgICAgIHwgICAgIDEgfCAwMSB8ICAgMDAxIHwgIDAwMDEgfCAwMDAwMSB8XG4vLyB8IEFEIDEyICAgIHwgICAgMTIgfCAxMiB8ICAgMDEyIHwgIDAwMTIgfCAwMDAxMiB8XG4vLyB8IEFEIDEyMyAgIHwgICAxMjMgfCAyMyB8ICAgMTIzIHwgIDAxMjMgfCAwMDEyMyB8XG4vLyB8IEFEIDEyMzQgIHwgIDEyMzQgfCAzNCB8ICAxMjM0IHwgIDEyMzQgfCAwMTIzNCB8XG4vLyB8IEFEIDEyMzQ1IHwgMTIzNDUgfCA0NSB8IDEyMzQ1IHwgMTIzNDUgfCAxMjM0NSB8XG5leHBvcnQgdmFyIFllYXJQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKFllYXJQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFllYXJQYXJzZXIpO1xuICBmdW5jdGlvbiBZZWFyUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgWWVhclBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDEzMCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ1knLCAnUicsICd1JywgJ3cnLCAnSScsICdpJywgJ2UnLCAnYycsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhZZWFyUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHZhciB2YWx1ZUNhbGxiYWNrID0gZnVuY3Rpb24gdmFsdWVDYWxsYmFjayh5ZWFyKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeWVhcjogeWVhcixcbiAgICAgICAgICBpc1R3b0RpZ2l0WWVhcjogdG9rZW4gPT09ICd5eSdcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShwYXJzZU5EaWdpdHMoNCwgZGF0ZVN0cmluZyksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICBjYXNlICd5byc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ3llYXInXG4gICAgICAgICAgfSksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlLmlzVHdvRGlnaXRZZWFyIHx8IHZhbHVlLnllYXIgPiAwO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIGZsYWdzLCB2YWx1ZSkge1xuICAgICAgdmFyIGN1cnJlbnRZZWFyID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgICAgaWYgKHZhbHVlLmlzVHdvRGlnaXRZZWFyKSB7XG4gICAgICAgIHZhciBub3JtYWxpemVkVHdvRGlnaXRZZWFyID0gbm9ybWFsaXplVHdvRGlnaXRZZWFyKHZhbHVlLnllYXIsIGN1cnJlbnRZZWFyKTtcbiAgICAgICAgZGF0ZS5zZXRVVENGdWxsWWVhcihub3JtYWxpemVkVHdvRGlnaXRZZWFyLCAwLCAxKTtcbiAgICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgICB9XG4gICAgICB2YXIgeWVhciA9ICEoJ2VyYScgaW4gZmxhZ3MpIHx8IGZsYWdzLmVyYSA9PT0gMSA/IHZhbHVlLnllYXIgOiAxIC0gdmFsdWUueWVhcjtcbiAgICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeWVhciwgMCwgMSk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBZZWFyUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCB7IEVyYVBhcnNlciB9IGZyb20gXCIuL0VyYVBhcnNlci5qc1wiO1xuaW1wb3J0IHsgWWVhclBhcnNlciB9IGZyb20gXCIuL1llYXJQYXJzZXIuanNcIjtcbmltcG9ydCB7IExvY2FsV2Vla1llYXJQYXJzZXIgfSBmcm9tIFwiLi9Mb2NhbFdlZWtZZWFyUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBJU09XZWVrWWVhclBhcnNlciB9IGZyb20gXCIuL0lTT1dlZWtZZWFyUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBFeHRlbmRlZFllYXJQYXJzZXIgfSBmcm9tIFwiLi9FeHRlbmRlZFllYXJQYXJzZXIuanNcIjtcbmltcG9ydCB7IFF1YXJ0ZXJQYXJzZXIgfSBmcm9tIFwiLi9RdWFydGVyUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBTdGFuZEFsb25lUXVhcnRlclBhcnNlciB9IGZyb20gXCIuL1N0YW5kQWxvbmVRdWFydGVyUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBNb250aFBhcnNlciB9IGZyb20gXCIuL01vbnRoUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBTdGFuZEFsb25lTW9udGhQYXJzZXIgfSBmcm9tIFwiLi9TdGFuZEFsb25lTW9udGhQYXJzZXIuanNcIjtcbmltcG9ydCB7IExvY2FsV2Vla1BhcnNlciB9IGZyb20gXCIuL0xvY2FsV2Vla1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgSVNPV2Vla1BhcnNlciB9IGZyb20gXCIuL0lTT1dlZWtQYXJzZXIuanNcIjtcbmltcG9ydCB7IERhdGVQYXJzZXIgfSBmcm9tIFwiLi9EYXRlUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBEYXlPZlllYXJQYXJzZXIgfSBmcm9tIFwiLi9EYXlPZlllYXJQYXJzZXIuanNcIjtcbmltcG9ydCB7IERheVBhcnNlciB9IGZyb20gXCIuL0RheVBhcnNlci5qc1wiO1xuaW1wb3J0IHsgTG9jYWxEYXlQYXJzZXIgfSBmcm9tIFwiLi9Mb2NhbERheVBhcnNlci5qc1wiO1xuaW1wb3J0IHsgU3RhbmRBbG9uZUxvY2FsRGF5UGFyc2VyIH0gZnJvbSBcIi4vU3RhbmRBbG9uZUxvY2FsRGF5UGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBJU09EYXlQYXJzZXIgfSBmcm9tIFwiLi9JU09EYXlQYXJzZXIuanNcIjtcbmltcG9ydCB7IEFNUE1QYXJzZXIgfSBmcm9tIFwiLi9BTVBNUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBBTVBNTWlkbmlnaHRQYXJzZXIgfSBmcm9tIFwiLi9BTVBNTWlkbmlnaHRQYXJzZXIuanNcIjtcbmltcG9ydCB7IERheVBlcmlvZFBhcnNlciB9IGZyb20gXCIuL0RheVBlcmlvZFBhcnNlci5qc1wiO1xuaW1wb3J0IHsgSG91cjF0bzEyUGFyc2VyIH0gZnJvbSBcIi4vSG91cjF0bzEyUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBIb3VyMHRvMjNQYXJzZXIgfSBmcm9tIFwiLi9Ib3VyMHRvMjNQYXJzZXIuanNcIjtcbmltcG9ydCB7IEhvdXIwVG8xMVBhcnNlciB9IGZyb20gXCIuL0hvdXIwVG8xMVBhcnNlci5qc1wiO1xuaW1wb3J0IHsgSG91cjFUbzI0UGFyc2VyIH0gZnJvbSBcIi4vSG91cjFUbzI0UGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBNaW51dGVQYXJzZXIgfSBmcm9tIFwiLi9NaW51dGVQYXJzZXIuanNcIjtcbmltcG9ydCB7IFNlY29uZFBhcnNlciB9IGZyb20gXCIuL1NlY29uZFBhcnNlci5qc1wiO1xuaW1wb3J0IHsgRnJhY3Rpb25PZlNlY29uZFBhcnNlciB9IGZyb20gXCIuL0ZyYWN0aW9uT2ZTZWNvbmRQYXJzZXIuanNcIjtcbmltcG9ydCB7IElTT1RpbWV6b25lV2l0aFpQYXJzZXIgfSBmcm9tIFwiLi9JU09UaW1lem9uZVdpdGhaUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBJU09UaW1lem9uZVBhcnNlciB9IGZyb20gXCIuL0lTT1RpbWV6b25lUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBUaW1lc3RhbXBTZWNvbmRzUGFyc2VyIH0gZnJvbSBcIi4vVGltZXN0YW1wU2Vjb25kc1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgVGltZXN0YW1wTWlsbGlzZWNvbmRzUGFyc2VyIH0gZnJvbSBcIi4vVGltZXN0YW1wTWlsbGlzZWNvbmRzUGFyc2VyLmpzXCI7XG4vKlxuICogfCAgICAgfCBVbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBVbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfC0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCAgYSAgfCBBTSwgUE0gICAgICAgICAgICAgICAgICAgICAgICAgfCAgQSogfCBNaWxsaXNlY29uZHMgaW4gZGF5ICAgICAgICAgICAgfFxuICogfCAgYiAgfCBBTSwgUE0sIG5vb24sIG1pZG5pZ2h0ICAgICAgICAgfCAgQiAgfCBGbGV4aWJsZSBkYXkgcGVyaW9kICAgICAgICAgICAgfFxuICogfCAgYyAgfCBTdGFuZC1hbG9uZSBsb2NhbCBkYXkgb2Ygd2VlayAgfCAgQyogfCBMb2NhbGl6ZWQgaG91ciB3LyBkYXkgcGVyaW9kICAgfFxuICogfCAgZCAgfCBEYXkgb2YgbW9udGggICAgICAgICAgICAgICAgICAgfCAgRCAgfCBEYXkgb2YgeWVhciAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgZSAgfCBMb2NhbCBkYXkgb2Ygd2VlayAgICAgICAgICAgICAgfCAgRSAgfCBEYXkgb2Ygd2VlayAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgZiAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgRiogfCBEYXkgb2Ygd2VlayBpbiBtb250aCAgICAgICAgICAgfFxuICogfCAgZyogfCBNb2RpZmllZCBKdWxpYW4gZGF5ICAgICAgICAgICAgfCAgRyAgfCBFcmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgaCAgfCBIb3VyIFsxLTEyXSAgICAgICAgICAgICAgICAgICAgfCAgSCAgfCBIb3VyIFswLTIzXSAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgaSEgfCBJU08gZGF5IG9mIHdlZWsgICAgICAgICAgICAgICAgfCAgSSEgfCBJU08gd2VlayBvZiB5ZWFyICAgICAgICAgICAgICAgfFxuICogfCAgaiogfCBMb2NhbGl6ZWQgaG91ciB3LyBkYXkgcGVyaW9kICAgfCAgSiogfCBMb2NhbGl6ZWQgaG91ciB3L28gZGF5IHBlcmlvZCAgfFxuICogfCAgayAgfCBIb3VyIFsxLTI0XSAgICAgICAgICAgICAgICAgICAgfCAgSyAgfCBIb3VyIFswLTExXSAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgbCogfCAoZGVwcmVjYXRlZCkgICAgICAgICAgICAgICAgICAgfCAgTCAgfCBTdGFuZC1hbG9uZSBtb250aCAgICAgICAgICAgICAgfFxuICogfCAgbSAgfCBNaW51dGUgICAgICAgICAgICAgICAgICAgICAgICAgfCAgTSAgfCBNb250aCAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgbiAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgTiAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgbyEgfCBPcmRpbmFsIG51bWJlciBtb2RpZmllciAgICAgICAgfCAgTyogfCBUaW1lem9uZSAoR01UKSAgICAgICAgICAgICAgICAgfFxuICogfCAgcCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgUCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgcSAgfCBTdGFuZC1hbG9uZSBxdWFydGVyICAgICAgICAgICAgfCAgUSAgfCBRdWFydGVyICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgciogfCBSZWxhdGVkIEdyZWdvcmlhbiB5ZWFyICAgICAgICAgfCAgUiEgfCBJU08gd2Vlay1udW1iZXJpbmcgeWVhciAgICAgICAgfFxuICogfCAgcyAgfCBTZWNvbmQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgUyAgfCBGcmFjdGlvbiBvZiBzZWNvbmQgICAgICAgICAgICAgfFxuICogfCAgdCEgfCBTZWNvbmRzIHRpbWVzdGFtcCAgICAgICAgICAgICAgfCAgVCEgfCBNaWxsaXNlY29uZHMgdGltZXN0YW1wICAgICAgICAgfFxuICogfCAgdSAgfCBFeHRlbmRlZCB5ZWFyICAgICAgICAgICAgICAgICAgfCAgVSogfCBDeWNsaWMgeWVhciAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgdiogfCBUaW1lem9uZSAoZ2VuZXJpYyBub24tbG9jYXQuKSAgfCAgViogfCBUaW1lem9uZSAobG9jYXRpb24pICAgICAgICAgICAgfFxuICogfCAgdyAgfCBMb2NhbCB3ZWVrIG9mIHllYXIgICAgICAgICAgICAgfCAgVyogfCBXZWVrIG9mIG1vbnRoICAgICAgICAgICAgICAgICAgfFxuICogfCAgeCAgfCBUaW1lem9uZSAoSVNPLTg2MDEgdy9vIFopICAgICAgfCAgWCAgfCBUaW1lem9uZSAoSVNPLTg2MDEpICAgICAgICAgICAgfFxuICogfCAgeSAgfCBZZWFyIChhYnMpICAgICAgICAgICAgICAgICAgICAgfCAgWSAgfCBMb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgfFxuICogfCAgeiogfCBUaW1lem9uZSAoc3BlY2lmaWMgbm9uLWxvY2F0LikgfCAgWiogfCBUaW1lem9uZSAoYWxpYXNlcykgICAgICAgICAgICAgfFxuICpcbiAqIExldHRlcnMgbWFya2VkIGJ5ICogYXJlIG5vdCBpbXBsZW1lbnRlZCBidXQgcmVzZXJ2ZWQgYnkgVW5pY29kZSBzdGFuZGFyZC5cbiAqXG4gKiBMZXR0ZXJzIG1hcmtlZCBieSAhIGFyZSBub24tc3RhbmRhcmQsIGJ1dCBpbXBsZW1lbnRlZCBieSBkYXRlLWZuczpcbiAqIC0gYG9gIG1vZGlmaWVzIHRoZSBwcmV2aW91cyB0b2tlbiB0byB0dXJuIGl0IGludG8gYW4gb3JkaW5hbCAoc2VlIGBwYXJzZWAgZG9jcylcbiAqIC0gYGlgIGlzIElTTyBkYXkgb2Ygd2Vlay4gRm9yIGBpYCBhbmQgYGlpYCBpcyByZXR1cm5zIG51bWVyaWMgSVNPIHdlZWsgZGF5cyxcbiAqICAgaS5lLiA3IGZvciBTdW5kYXksIDEgZm9yIE1vbmRheSwgZXRjLlxuICogLSBgSWAgaXMgSVNPIHdlZWsgb2YgeWVhciwgYXMgb3Bwb3NlZCB0byBgd2Agd2hpY2ggaXMgbG9jYWwgd2VlayBvZiB5ZWFyLlxuICogLSBgUmAgaXMgSVNPIHdlZWstbnVtYmVyaW5nIHllYXIsIGFzIG9wcG9zZWQgdG8gYFlgIHdoaWNoIGlzIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIuXG4gKiAgIGBSYCBpcyBzdXBwb3NlZCB0byBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYElgIGFuZCBgaWBcbiAqICAgZm9yIHVuaXZlcnNhbCBJU08gd2Vlay1udW1iZXJpbmcgZGF0ZSwgd2hlcmVhc1xuICogICBgWWAgaXMgc3VwcG9zZWQgdG8gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGB3YCBhbmQgYGVgXG4gKiAgIGZvciB3ZWVrLW51bWJlcmluZyBkYXRlIHNwZWNpZmljIHRvIHRoZSBsb2NhbGUuXG4gKi9cbmV4cG9ydCB2YXIgcGFyc2VycyA9IHtcbiAgRzogbmV3IEVyYVBhcnNlcigpLFxuICB5OiBuZXcgWWVhclBhcnNlcigpLFxuICBZOiBuZXcgTG9jYWxXZWVrWWVhclBhcnNlcigpLFxuICBSOiBuZXcgSVNPV2Vla1llYXJQYXJzZXIoKSxcbiAgdTogbmV3IEV4dGVuZGVkWWVhclBhcnNlcigpLFxuICBROiBuZXcgUXVhcnRlclBhcnNlcigpLFxuICBxOiBuZXcgU3RhbmRBbG9uZVF1YXJ0ZXJQYXJzZXIoKSxcbiAgTTogbmV3IE1vbnRoUGFyc2VyKCksXG4gIEw6IG5ldyBTdGFuZEFsb25lTW9udGhQYXJzZXIoKSxcbiAgdzogbmV3IExvY2FsV2Vla1BhcnNlcigpLFxuICBJOiBuZXcgSVNPV2Vla1BhcnNlcigpLFxuICBkOiBuZXcgRGF0ZVBhcnNlcigpLFxuICBEOiBuZXcgRGF5T2ZZZWFyUGFyc2VyKCksXG4gIEU6IG5ldyBEYXlQYXJzZXIoKSxcbiAgZTogbmV3IExvY2FsRGF5UGFyc2VyKCksXG4gIGM6IG5ldyBTdGFuZEFsb25lTG9jYWxEYXlQYXJzZXIoKSxcbiAgaTogbmV3IElTT0RheVBhcnNlcigpLFxuICBhOiBuZXcgQU1QTVBhcnNlcigpLFxuICBiOiBuZXcgQU1QTU1pZG5pZ2h0UGFyc2VyKCksXG4gIEI6IG5ldyBEYXlQZXJpb2RQYXJzZXIoKSxcbiAgaDogbmV3IEhvdXIxdG8xMlBhcnNlcigpLFxuICBIOiBuZXcgSG91cjB0bzIzUGFyc2VyKCksXG4gIEs6IG5ldyBIb3VyMFRvMTFQYXJzZXIoKSxcbiAgazogbmV3IEhvdXIxVG8yNFBhcnNlcigpLFxuICBtOiBuZXcgTWludXRlUGFyc2VyKCksXG4gIHM6IG5ldyBTZWNvbmRQYXJzZXIoKSxcbiAgUzogbmV3IEZyYWN0aW9uT2ZTZWNvbmRQYXJzZXIoKSxcbiAgWDogbmV3IElTT1RpbWV6b25lV2l0aFpQYXJzZXIoKSxcbiAgeDogbmV3IElTT1RpbWV6b25lUGFyc2VyKCksXG4gIHQ6IG5ldyBUaW1lc3RhbXBTZWNvbmRzUGFyc2VyKCksXG4gIFQ6IG5ldyBUaW1lc3RhbXBNaWxsaXNlY29uZHNQYXJzZXIoKVxufTsiLCJpbXBvcnQgeyBtaWxsaXNlY29uZHNJbkhvdXIsIG1pbGxpc2Vjb25kc0luTWludXRlLCBtaWxsaXNlY29uZHNJblNlY29uZCB9IGZyb20gXCIuLi8uLi9jb25zdGFudHMvaW5kZXguanNcIjtcbmltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuL2NvbnN0YW50cy5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIG1hcFZhbHVlKHBhcnNlRm5SZXN1bHQsIG1hcEZuKSB7XG4gIGlmICghcGFyc2VGblJlc3VsdCkge1xuICAgIHJldHVybiBwYXJzZUZuUmVzdWx0O1xuICB9XG4gIHJldHVybiB7XG4gICAgdmFsdWU6IG1hcEZuKHBhcnNlRm5SZXN1bHQudmFsdWUpLFxuICAgIHJlc3Q6IHBhcnNlRm5SZXN1bHQucmVzdFxuICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTnVtZXJpY1BhdHRlcm4ocGF0dGVybiwgZGF0ZVN0cmluZykge1xuICB2YXIgbWF0Y2hSZXN1bHQgPSBkYXRlU3RyaW5nLm1hdGNoKHBhdHRlcm4pO1xuICBpZiAoIW1hdGNoUmVzdWx0KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB2YWx1ZTogcGFyc2VJbnQobWF0Y2hSZXN1bHRbMF0sIDEwKSxcbiAgICByZXN0OiBkYXRlU3RyaW5nLnNsaWNlKG1hdGNoUmVzdWx0WzBdLmxlbmd0aClcbiAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVRpbWV6b25lUGF0dGVybihwYXR0ZXJuLCBkYXRlU3RyaW5nKSB7XG4gIHZhciBtYXRjaFJlc3VsdCA9IGRhdGVTdHJpbmcubWF0Y2gocGF0dGVybik7XG4gIGlmICghbWF0Y2hSZXN1bHQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIElucHV0IGlzICdaJ1xuICBpZiAobWF0Y2hSZXN1bHRbMF0gPT09ICdaJykge1xuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogMCxcbiAgICAgIHJlc3Q6IGRhdGVTdHJpbmcuc2xpY2UoMSlcbiAgICB9O1xuICB9XG4gIHZhciBzaWduID0gbWF0Y2hSZXN1bHRbMV0gPT09ICcrJyA/IDEgOiAtMTtcbiAgdmFyIGhvdXJzID0gbWF0Y2hSZXN1bHRbMl0gPyBwYXJzZUludChtYXRjaFJlc3VsdFsyXSwgMTApIDogMDtcbiAgdmFyIG1pbnV0ZXMgPSBtYXRjaFJlc3VsdFszXSA/IHBhcnNlSW50KG1hdGNoUmVzdWx0WzNdLCAxMCkgOiAwO1xuICB2YXIgc2Vjb25kcyA9IG1hdGNoUmVzdWx0WzVdID8gcGFyc2VJbnQobWF0Y2hSZXN1bHRbNV0sIDEwKSA6IDA7XG4gIHJldHVybiB7XG4gICAgdmFsdWU6IHNpZ24gKiAoaG91cnMgKiBtaWxsaXNlY29uZHNJbkhvdXIgKyBtaW51dGVzICogbWlsbGlzZWNvbmRzSW5NaW51dGUgKyBzZWNvbmRzICogbWlsbGlzZWNvbmRzSW5TZWNvbmQpLFxuICAgIHJlc3Q6IGRhdGVTdHJpbmcuc2xpY2UobWF0Y2hSZXN1bHRbMF0ubGVuZ3RoKVxuICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQW55RGlnaXRzU2lnbmVkKGRhdGVTdHJpbmcpIHtcbiAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLmFueURpZ2l0c1NpZ25lZCwgZGF0ZVN0cmluZyk7XG59XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VORGlnaXRzKG4sIGRhdGVTdHJpbmcpIHtcbiAgc3dpdGNoIChuKSB7XG4gICAgY2FzZSAxOlxuICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLnNpbmdsZURpZ2l0LCBkYXRlU3RyaW5nKTtcbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMudHdvRGlnaXRzLCBkYXRlU3RyaW5nKTtcbiAgICBjYXNlIDM6XG4gICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMudGhyZWVEaWdpdHMsIGRhdGVTdHJpbmcpO1xuICAgIGNhc2UgNDpcbiAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5mb3VyRGlnaXRzLCBkYXRlU3RyaW5nKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obmV3IFJlZ0V4cCgnXlxcXFxkezEsJyArIG4gKyAnfScpLCBkYXRlU3RyaW5nKTtcbiAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTkRpZ2l0c1NpZ25lZChuLCBkYXRlU3RyaW5nKSB7XG4gIHN3aXRjaCAobikge1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5zaW5nbGVEaWdpdFNpZ25lZCwgZGF0ZVN0cmluZyk7XG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLnR3b0RpZ2l0c1NpZ25lZCwgZGF0ZVN0cmluZyk7XG4gICAgY2FzZSAzOlxuICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLnRocmVlRGlnaXRzU2lnbmVkLCBkYXRlU3RyaW5nKTtcbiAgICBjYXNlIDQ6XG4gICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuZm91ckRpZ2l0c1NpZ25lZCwgZGF0ZVN0cmluZyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG5ldyBSZWdFeHAoJ14tP1xcXFxkezEsJyArIG4gKyAnfScpLCBkYXRlU3RyaW5nKTtcbiAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGRheVBlcmlvZEVudW1Ub0hvdXJzKGRheVBlcmlvZCkge1xuICBzd2l0Y2ggKGRheVBlcmlvZCkge1xuICAgIGNhc2UgJ21vcm5pbmcnOlxuICAgICAgcmV0dXJuIDQ7XG4gICAgY2FzZSAnZXZlbmluZyc6XG4gICAgICByZXR1cm4gMTc7XG4gICAgY2FzZSAncG0nOlxuICAgIGNhc2UgJ25vb24nOlxuICAgIGNhc2UgJ2FmdGVybm9vbic6XG4gICAgICByZXR1cm4gMTI7XG4gICAgY2FzZSAnYW0nOlxuICAgIGNhc2UgJ21pZG5pZ2h0JzpcbiAgICBjYXNlICduaWdodCc6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAwO1xuICB9XG59XG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVHdvRGlnaXRZZWFyKHR3b0RpZ2l0WWVhciwgY3VycmVudFllYXIpIHtcbiAgdmFyIGlzQ29tbW9uRXJhID0gY3VycmVudFllYXIgPiAwO1xuICAvLyBBYnNvbHV0ZSBudW1iZXIgb2YgdGhlIGN1cnJlbnQgeWVhcjpcbiAgLy8gMSAtPiAxIEFDXG4gIC8vIDAgLT4gMSBCQ1xuICAvLyAtMSAtPiAyIEJDXG4gIHZhciBhYnNDdXJyZW50WWVhciA9IGlzQ29tbW9uRXJhID8gY3VycmVudFllYXIgOiAxIC0gY3VycmVudFllYXI7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChhYnNDdXJyZW50WWVhciA8PSA1MCkge1xuICAgIHJlc3VsdCA9IHR3b0RpZ2l0WWVhciB8fCAxMDA7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHJhbmdlRW5kID0gYWJzQ3VycmVudFllYXIgKyA1MDtcbiAgICB2YXIgcmFuZ2VFbmRDZW50dXJ5ID0gTWF0aC5mbG9vcihyYW5nZUVuZCAvIDEwMCkgKiAxMDA7XG4gICAgdmFyIGlzUHJldmlvdXNDZW50dXJ5ID0gdHdvRGlnaXRZZWFyID49IHJhbmdlRW5kICUgMTAwO1xuICAgIHJlc3VsdCA9IHR3b0RpZ2l0WWVhciArIHJhbmdlRW5kQ2VudHVyeSAtIChpc1ByZXZpb3VzQ2VudHVyeSA/IDEwMCA6IDApO1xuICB9XG4gIHJldHVybiBpc0NvbW1vbkVyYSA/IHJlc3VsdCA6IDEgLSByZXN1bHQ7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNMZWFwWWVhckluZGV4KHllYXIpIHtcbiAgcmV0dXJuIHllYXIgJSA0MDAgPT09IDAgfHwgeWVhciAlIDQgPT09IDAgJiYgeWVhciAlIDEwMCAhPT0gMDtcbn0iLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mXCI7XG5pbXBvcnQgX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXJcIjtcbmltcG9ydCBkZWZhdWx0TG9jYWxlIGZyb20gXCIuLi9fbGliL2RlZmF1bHRMb2NhbGUvaW5kZXguanNcIjtcbmltcG9ydCBzdWJNaWxsaXNlY29uZHMgZnJvbSBcIi4uL3N1Yk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgYXNzaWduIGZyb20gXCIuLi9fbGliL2Fzc2lnbi9pbmRleC5qc1wiO1xuaW1wb3J0IGxvbmdGb3JtYXR0ZXJzIGZyb20gXCIuLi9fbGliL2Zvcm1hdC9sb25nRm9ybWF0dGVycy9pbmRleC5qc1wiO1xuaW1wb3J0IGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMgZnJvbSBcIi4uL19saWIvZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgaXNQcm90ZWN0ZWREYXlPZlllYXJUb2tlbiwgaXNQcm90ZWN0ZWRXZWVrWWVhclRva2VuLCB0aHJvd1Byb3RlY3RlZEVycm9yIH0gZnJvbSBcIi4uL19saWIvcHJvdGVjdGVkVG9rZW5zL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IERhdGVUb1N5c3RlbVRpbWV6b25lU2V0dGVyIH0gZnJvbSBcIi4vX2xpYi9TZXR0ZXIuanNcIjtcbmltcG9ydCB7IHBhcnNlcnMgfSBmcm9tIFwiLi9fbGliL3BhcnNlcnMvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL19saWIvZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjsgLy8gVGhpcyBSZWdFeHAgY29uc2lzdHMgb2YgdGhyZWUgcGFydHMgc2VwYXJhdGVkIGJ5IGB8YDpcbi8vIC0gW3lZUXFNTHdJZERlY2loSEtrbXNdbyBtYXRjaGVzIGFueSBhdmFpbGFibGUgb3JkaW5hbCBudW1iZXIgdG9rZW5cbi8vICAgKG9uZSBvZiB0aGUgY2VydGFpbiBsZXR0ZXJzIGZvbGxvd2VkIGJ5IGBvYClcbi8vIC0gKFxcdylcXDEqIG1hdGNoZXMgYW55IHNlcXVlbmNlcyBvZiB0aGUgc2FtZSBsZXR0ZXJcbi8vIC0gJycgbWF0Y2hlcyB0d28gcXVvdGUgY2hhcmFjdGVycyBpbiBhIHJvd1xuLy8gLSAnKCcnfFteJ10pKygnfCQpIG1hdGNoZXMgYW55dGhpbmcgc3Vycm91bmRlZCBieSB0d28gcXVvdGUgY2hhcmFjdGVycyAoJyksXG4vLyAgIGV4Y2VwdCBhIHNpbmdsZSBxdW90ZSBzeW1ib2wsIHdoaWNoIGVuZHMgdGhlIHNlcXVlbmNlLlxuLy8gICBUd28gcXVvdGUgY2hhcmFjdGVycyBkbyBub3QgZW5kIHRoZSBzZXF1ZW5jZS5cbi8vICAgSWYgdGhlcmUgaXMgbm8gbWF0Y2hpbmcgc2luZ2xlIHF1b3RlXG4vLyAgIHRoZW4gdGhlIHNlcXVlbmNlIHdpbGwgY29udGludWUgdW50aWwgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLlxuLy8gLSAuIG1hdGNoZXMgYW55IHNpbmdsZSBjaGFyYWN0ZXIgdW5tYXRjaGVkIGJ5IHByZXZpb3VzIHBhcnRzIG9mIHRoZSBSZWdFeHBzXG52YXIgZm9ybWF0dGluZ1Rva2Vuc1JlZ0V4cCA9IC9beVlRcU1Md0lkRGVjaWhIS2ttc11vfChcXHcpXFwxKnwnJ3wnKCcnfFteJ10pKygnfCQpfC4vZztcblxuLy8gVGhpcyBSZWdFeHAgY2F0Y2hlcyBzeW1ib2xzIGVzY2FwZWQgYnkgcXVvdGVzLCBhbmQgYWxzb1xuLy8gc2VxdWVuY2VzIG9mIHN5bWJvbHMgUCwgcCwgYW5kIHRoZSBjb21iaW5hdGlvbnMgbGlrZSBgUFBQUFBQUHBwcHBwYFxudmFyIGxvbmdGb3JtYXR0aW5nVG9rZW5zUmVnRXhwID0gL1ArcCt8UCt8cCt8Jyd8JygnJ3xbXiddKSsoJ3wkKXwuL2c7XG52YXIgZXNjYXBlZFN0cmluZ1JlZ0V4cCA9IC9eJyhbXl0qPyknPyQvO1xudmFyIGRvdWJsZVF1b3RlUmVnRXhwID0gLycnL2c7XG52YXIgbm90V2hpdGVzcGFjZVJlZ0V4cCA9IC9cXFMvO1xudmFyIHVuZXNjYXBlZExhdGluQ2hhcmFjdGVyUmVnRXhwID0gL1thLXpBLVpdLztcblxuLyoqXG4gKiBAbmFtZSBwYXJzZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBQYXJzZSB0aGUgZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZGF0ZSBwYXJzZWQgZnJvbSBzdHJpbmcgdXNpbmcgdGhlIGdpdmVuIGZvcm1hdCBzdHJpbmcuXG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYGZvcm1hdGAgdG9rZW5zIGRpZmZlciBmcm9tIE1vbWVudC5qcyBhbmQgb3RoZXIgbGlicmFyaWVzLlxuICogPiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqXG4gKiBUaGUgY2hhcmFjdGVycyBpbiB0aGUgZm9ybWF0IHN0cmluZyB3cmFwcGVkIGJldHdlZW4gdHdvIHNpbmdsZSBxdW90ZXMgY2hhcmFjdGVycyAoJykgYXJlIGVzY2FwZWQuXG4gKiBUd28gc2luZ2xlIHF1b3RlcyBpbiBhIHJvdywgd2hldGhlciBpbnNpZGUgb3Igb3V0c2lkZSBhIHF1b3RlZCBzZXF1ZW5jZSwgcmVwcmVzZW50IGEgJ3JlYWwnIHNpbmdsZSBxdW90ZS5cbiAqXG4gKiBGb3JtYXQgb2YgdGhlIGZvcm1hdCBzdHJpbmcgaXMgYmFzZWQgb24gVW5pY29kZSBUZWNobmljYWwgU3RhbmRhcmQgIzM1OlxuICogaHR0cHM6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjM1L3RyMzUtZGF0ZXMuaHRtbCNEYXRlX0ZpZWxkX1N5bWJvbF9UYWJsZVxuICogd2l0aCBhIGZldyBhZGRpdGlvbnMgKHNlZSBub3RlIDUgYmVsb3cgdGhlIHRhYmxlKS5cbiAqXG4gKiBOb3QgYWxsIHRva2VucyBhcmUgY29tcGF0aWJsZS4gQ29tYmluYXRpb25zIHRoYXQgZG9uJ3QgbWFrZSBzZW5zZSBvciBjb3VsZCBsZWFkIHRvIGJ1Z3MgYXJlIHByb2hpYml0ZWRcbiAqIGFuZCB3aWxsIHRocm93IGBSYW5nZUVycm9yYC4gRm9yIGV4YW1wbGUgdXNhZ2Ugb2YgMjQtaG91ciBmb3JtYXQgdG9rZW4gd2l0aCBBTS9QTSB0b2tlbiB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbjpcbiAqXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiBwYXJzZSgnMjMgQU0nLCAnSEggYScsIG5ldyBEYXRlKCkpXG4gKiAvLz0+IFJhbmdlRXJyb3I6IFRoZSBmb3JtYXQgc3RyaW5nIG11c3RuJ3QgY29udGFpbiBgSEhgIGFuZCBgYWAgYXQgdGhlIHNhbWUgdGltZVxuICogYGBgXG4gKlxuICogU2VlIHRoZSBjb21wYXRpYmlsaXR5IHRhYmxlOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9zcHJlYWRzaGVldHMvZC9lLzJQQUNYLTF2UU9QVTN4VWhwbGxsNmR5b01tVlVYSEtsXzhDUkRzNl91ZUxtZXgzU29xd2h1b2xrdU4zTzA1bDRycXg1aDFkS1g4ZWI0NlVsLUNDU3JxL3B1Ymh0bWw/Z2lkPTAmc2luZ2xlPXRydWVcbiAqXG4gKiBBY2NlcHRlZCBmb3JtYXQgc3RyaW5nIHBhdHRlcm5zOlxuICogfCBVbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxQcmlvcnwgUGF0dGVybiB8IFJlc3VsdCBleGFtcGxlcyAgICAgICAgICAgICAgICAgICB8IE5vdGVzIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS18XG4gKiB8IEVyYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNDAgfCBHLi5HR0cgIHwgQUQsIEJDICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgR0dHRyAgICB8IEFubm8gRG9taW5pLCBCZWZvcmUgQ2hyaXN0ICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEdHR0dHICAgfCBBLCBCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IENhbGVuZGFyIHllYXIgICAgICAgICAgICAgICAgICAgfCAxMzAgfCB5ICAgICAgIHwgNDQsIDEsIDE5MDAsIDIwMTcsIDk5OTkgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeW8gICAgICB8IDQ0dGgsIDFzdCwgMTkwMHRoLCA5OTk5OTk5dGggICAgICB8IDQsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHl5ICAgICAgfCA0NCwgMDEsIDAwLCAxNyAgICAgICAgICAgICAgICAgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB5eXkgICAgIHwgMDQ0LCAwMDEsIDEyMywgOTk5ICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeXl5eSAgICB8IDAwNDQsIDAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHl5eXl5ICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyLDQgICB8XG4gKiB8IExvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgICAgICAgfCAxMzAgfCBZICAgICAgIHwgNDQsIDEsIDE5MDAsIDIwMTcsIDkwMDAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWW8gICAgICB8IDQ0dGgsIDFzdCwgMTkwMHRoLCA5OTk5OTk5dGggICAgICB8IDQsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFlZICAgICAgfCA0NCwgMDEsIDAwLCAxNyAgICAgICAgICAgICAgICAgICAgfCA0LDYgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBZWVkgICAgIHwgMDQ0LCAwMDEsIDEyMywgOTk5ICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWVlZWSAgICB8IDAwNDQsIDAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICB8IDQsNiAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFlZWVlZICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyLDQgICB8XG4gKiB8IElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgICAgfCAxMzAgfCBSICAgICAgIHwgLTQzLCAxLCAxOTAwLCAyMDE3LCA5OTk5LCAtOTk5OSAgIHwgNCw1ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUlIgICAgICB8IC00MywgMDEsIDAwLCAxNyAgICAgICAgICAgICAgICAgICB8IDQsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFJSUiAgICAgfCAtMDQzLCAwMDEsIDEyMywgOTk5LCAtOTk5ICAgICAgICAgfCA0LDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBSUlJSICAgIHwgLTAwNDMsIDAwMDEsIDIwMTcsIDk5OTksIC05OTk5ICAgIHwgNCw1ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUlJSUlIgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIsNCw1IHxcbiAqIHwgRXh0ZW5kZWQgeWVhciAgICAgICAgICAgICAgICAgICB8IDEzMCB8IHUgICAgICAgfCAtNDMsIDEsIDE5MDAsIDIwMTcsIDk5OTksIC05OTkgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB1dSAgICAgIHwgLTQzLCAwMSwgOTksIC05OSAgICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgdXV1ICAgICB8IC0wNDMsIDAwMSwgMTIzLCA5OTksIC05OTkgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHV1dXUgICAgfCAtMDA0MywgMDAwMSwgMjAxNywgOTk5OSwgLTk5OTkgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB1dXV1dSAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiw0ICAgfFxuICogfCBRdWFydGVyIChmb3JtYXR0aW5nKSAgICAgICAgICAgIHwgMTIwIHwgUSAgICAgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFFvICAgICAgfCAxc3QsIDJuZCwgM3JkLCA0dGggICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBRUSAgICAgIHwgMDEsIDAyLCAwMywgMDQgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUVFRICAgICB8IFExLCBRMiwgUTMsIFE0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFFRUVEgICAgfCAxc3QgcXVhcnRlciwgMm5kIHF1YXJ0ZXIsIC4uLiAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBRUVFRUSAgIHwgMSwgMiwgMywgNCAgICAgICAgICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCBRdWFydGVyIChzdGFuZC1hbG9uZSkgICAgICAgICAgIHwgMTIwIHwgcSAgICAgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHFvICAgICAgfCAxc3QsIDJuZCwgM3JkLCA0dGggICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBxcSAgICAgIHwgMDEsIDAyLCAwMywgMDQgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgcXFxICAgICB8IFExLCBRMiwgUTMsIFE0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHFxcXEgICAgfCAxc3QgcXVhcnRlciwgMm5kIHF1YXJ0ZXIsIC4uLiAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBxcXFxcSAgIHwgMSwgMiwgMywgNCAgICAgICAgICAgICAgICAgICAgICAgIHwgMyAgICAgfFxuICogfCBNb250aCAoZm9ybWF0dGluZykgICAgICAgICAgICAgIHwgMTEwIHwgTSAgICAgICB8IDEsIDIsIC4uLiwgMTIgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IE1vICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMnRoICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBNTSAgICAgIHwgMDEsIDAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTU1NICAgICB8IEphbiwgRmViLCAuLi4sIERlYyAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IE1NTU0gICAgfCBKYW51YXJ5LCBGZWJydWFyeSwgLi4uLCBEZWNlbWJlciAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBNTU1NTSAgIHwgSiwgRiwgLi4uLCBEICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBNb250aCAoc3RhbmQtYWxvbmUpICAgICAgICAgICAgIHwgMTEwIHwgTCAgICAgICB8IDEsIDIsIC4uLiwgMTIgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IExvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMnRoICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBMTCAgICAgIHwgMDEsIDAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTExMICAgICB8IEphbiwgRmViLCAuLi4sIERlYyAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IExMTEwgICAgfCBKYW51YXJ5LCBGZWJydWFyeSwgLi4uLCBEZWNlbWJlciAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBMTExMTCAgIHwgSiwgRiwgLi4uLCBEICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBMb2NhbCB3ZWVrIG9mIHllYXIgICAgICAgICAgICAgIHwgMTAwIHwgdyAgICAgICB8IDEsIDIsIC4uLiwgNTMgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHdvICAgICAgfCAxc3QsIDJuZCwgLi4uLCA1M3RoICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB3dyAgICAgIHwgMDEsIDAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBJU08gd2VlayBvZiB5ZWFyICAgICAgICAgICAgICAgIHwgMTAwIHwgSSAgICAgICB8IDEsIDIsIC4uLiwgNTMgICAgICAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IElvICAgICAgfCAxc3QsIDJuZCwgLi4uLCA1M3RoICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBJSSAgICAgIHwgMDEsIDAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCBEYXkgb2YgbW9udGggICAgICAgICAgICAgICAgICAgIHwgIDkwIHwgZCAgICAgICB8IDEsIDIsIC4uLiwgMzEgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGRvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAzMXN0ICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBkZCAgICAgIHwgMDEsIDAyLCAuLi4sIDMxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBEYXkgb2YgeWVhciAgICAgICAgICAgICAgICAgICAgIHwgIDkwIHwgRCAgICAgICB8IDEsIDIsIC4uLiwgMzY1LCAzNjYgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IERvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAzNjV0aCwgMzY2dGggICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBERCAgICAgIHwgMDEsIDAyLCAuLi4sIDM2NSwgMzY2ICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgREREICAgICB8IDAwMSwgMDAyLCAuLi4sIDM2NSwgMzY2ICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEREREQgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8IERheSBvZiB3ZWVrIChmb3JtYXR0aW5nKSAgICAgICAgfCAgOTAgfCBFLi5FRUUgIHwgTW9uLCBUdWUsIFdlZCwgLi4uLCBTdW4gICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgRUVFRSAgICB8IE1vbmRheSwgVHVlc2RheSwgLi4uLCBTdW5kYXkgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEVFRUVFICAgfCBNLCBULCBXLCBULCBGLCBTLCBTICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBFRUVFRUUgIHwgTW8sIFR1LCBXZSwgVGgsIEZyLCBTYSwgU3UgICAgICAgIHwgICAgICAgfFxuICogfCBJU08gZGF5IG9mIHdlZWsgKGZvcm1hdHRpbmcpICAgIHwgIDkwIHwgaSAgICAgICB8IDEsIDIsIDMsIC4uLiwgNyAgICAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGlvICAgICAgfCAxc3QsIDJuZCwgLi4uLCA3dGggICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBpaSAgICAgIHwgMDEsIDAyLCAuLi4sIDA3ICAgICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaWlpICAgICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3VuICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGlpaWkgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyLDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBpaWlpaSAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaWlpaWlpICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU2EsIFN1ICAgICAgICB8IDUgICAgIHxcbiAqIHwgTG9jYWwgZGF5IG9mIHdlZWsgKGZvcm1hdHRpbmcpICB8ICA5MCB8IGUgICAgICAgfCAyLCAzLCA0LCAuLi4sIDEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBlbyAgICAgIHwgMm5kLCAzcmQsIC4uLiwgMXN0ICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZWUgICAgICB8IDAyLCAwMywgLi4uLCAwMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGVlZSAgICAgfCBNb24sIFR1ZSwgV2VkLCAuLi4sIFN1biAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBlZWVlICAgIHwgTW9uZGF5LCBUdWVzZGF5LCAuLi4sIFN1bmRheSAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZWVlZWUgICB8IE0sIFQsIFcsIFQsIEYsIFMsIFMgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGVlZWVlZSAgfCBNbywgVHUsIFdlLCBUaCwgRnIsIFNhLCBTdSAgICAgICAgfCAgICAgICB8XG4gKiB8IExvY2FsIGRheSBvZiB3ZWVrIChzdGFuZC1hbG9uZSkgfCAgOTAgfCBjICAgICAgIHwgMiwgMywgNCwgLi4uLCAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgY28gICAgICB8IDJuZCwgM3JkLCAuLi4sIDFzdCAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGNjICAgICAgfCAwMiwgMDMsIC4uLiwgMDEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBjY2MgICAgIHwgTW9uLCBUdWUsIFdlZCwgLi4uLCBTdW4gICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgY2NjYyAgICB8IE1vbmRheSwgVHVlc2RheSwgLi4uLCBTdW5kYXkgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGNjY2NjICAgfCBNLCBULCBXLCBULCBGLCBTLCBTICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBjY2NjY2MgIHwgTW8sIFR1LCBXZSwgVGgsIEZyLCBTYSwgU3UgICAgICAgIHwgICAgICAgfFxuICogfCBBTSwgUE0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDgwIHwgYS4uYWFhICB8IEFNLCBQTSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGFhYWEgICAgfCBhLm0uLCBwLm0uICAgICAgICAgICAgICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBhYWFhYSAgIHwgYSwgcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBBTSwgUE0sIG5vb24sIG1pZG5pZ2h0ICAgICAgICAgIHwgIDgwIHwgYi4uYmJiICB8IEFNLCBQTSwgbm9vbiwgbWlkbmlnaHQgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGJiYmIgICAgfCBhLm0uLCBwLm0uLCBub29uLCBtaWRuaWdodCAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBiYmJiYiAgIHwgYSwgcCwgbiwgbWkgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBGbGV4aWJsZSBkYXkgcGVyaW9kICAgICAgICAgICAgIHwgIDgwIHwgQi4uQkJCICB8IGF0IG5pZ2h0LCBpbiB0aGUgbW9ybmluZywgLi4uICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEJCQkIgICAgfCBhdCBuaWdodCwgaW4gdGhlIG1vcm5pbmcsIC4uLiAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBCQkJCQiAgIHwgYXQgbmlnaHQsIGluIHRoZSBtb3JuaW5nLCAuLi4gICAgIHwgICAgICAgfFxuICogfCBIb3VyIFsxLTEyXSAgICAgICAgICAgICAgICAgICAgIHwgIDcwIHwgaCAgICAgICB8IDEsIDIsIC4uLiwgMTEsIDEyICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGhvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMXRoLCAxMnRoICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBoaCAgICAgIHwgMDEsIDAyLCAuLi4sIDExLCAxMiAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBIb3VyIFswLTIzXSAgICAgICAgICAgICAgICAgICAgIHwgIDcwIHwgSCAgICAgICB8IDAsIDEsIDIsIC4uLiwgMjMgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEhvICAgICAgfCAwdGgsIDFzdCwgMm5kLCAuLi4sIDIzcmQgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBISCAgICAgIHwgMDAsIDAxLCAwMiwgLi4uLCAyMyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBIb3VyIFswLTExXSAgICAgICAgICAgICAgICAgICAgIHwgIDcwIHwgSyAgICAgICB8IDEsIDIsIC4uLiwgMTEsIDAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEtvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMXRoLCAwdGggICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBLSyAgICAgIHwgMDEsIDAyLCAuLi4sIDExLCAwMCAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBIb3VyIFsxLTI0XSAgICAgICAgICAgICAgICAgICAgIHwgIDcwIHwgayAgICAgICB8IDI0LCAxLCAyLCAuLi4sIDIzICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGtvICAgICAgfCAyNHRoLCAxc3QsIDJuZCwgLi4uLCAyM3JkICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBrayAgICAgIHwgMjQsIDAxLCAwMiwgLi4uLCAyMyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBNaW51dGUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYwIHwgbSAgICAgICB8IDAsIDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IG1vICAgICAgfCAwdGgsIDFzdCwgLi4uLCA1OXRoICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBtbSAgICAgIHwgMDAsIDAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBTZWNvbmQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUwIHwgcyAgICAgICB8IDAsIDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHNvICAgICAgfCAwdGgsIDFzdCwgLi4uLCA1OXRoICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBzcyAgICAgIHwgMDAsIDAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBTZWNvbmRzIHRpbWVzdGFtcCAgICAgICAgICAgICAgIHwgIDQwIHwgdCAgICAgICB8IDUxMjk2OTUyMCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHR0ICAgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8IEZyYWN0aW9uIG9mIHNlY29uZCAgICAgICAgICAgICAgfCAgMzAgfCBTICAgICAgIHwgMCwgMSwgLi4uLCA5ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgU1MgICAgICB8IDAwLCAwMSwgLi4uLCA5OSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFNTUyAgICAgfCAwMDAsIDAwMSwgLi4uLCA5OTkgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBTU1NTICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCBNaWxsaXNlY29uZHMgdGltZXN0YW1wICAgICAgICAgIHwgIDIwIHwgVCAgICAgICB8IDUxMjk2OTUyMDkwMCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFRUICAgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8IFRpbWV6b25lIChJU08tODYwMSB3LyBaKSAgICAgICAgfCAgMTAgfCBYICAgICAgIHwgLTA4LCArMDUzMCwgWiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWFggICAgICB8IC0wODAwLCArMDUzMCwgWiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFhYWCAgICAgfCAtMDg6MDAsICswNTozMCwgWiAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBYWFhYICAgIHwgLTA4MDAsICswNTMwLCBaLCArMTIzNDU2ICAgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWFhYWFggICB8IC0wODowMCwgKzA1OjMwLCBaLCArMTI6MzQ6NTYgICAgICB8ICAgICAgIHxcbiAqIHwgVGltZXpvbmUgKElTTy04NjAxIHcvbyBaKSAgICAgICB8ICAxMCB8IHggICAgICAgfCAtMDgsICswNTMwLCArMDAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB4eCAgICAgIHwgLTA4MDAsICswNTMwLCArMDAwMCAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeHh4ICAgICB8IC0wODowMCwgKzA1OjMwLCArMDA6MDAgICAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHh4eHggICAgfCAtMDgwMCwgKzA1MzAsICswMDAwLCArMTIzNDU2ICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB4eHh4eCAgIHwgLTA4OjAwLCArMDU6MzAsICswMDowMCwgKzEyOjM0OjU2IHwgICAgICAgfFxuICogfCBMb25nIGxvY2FsaXplZCBkYXRlICAgICAgICAgICAgIHwgIE5BIHwgUCAgICAgICB8IDA1LzI5LzE0NTMgICAgICAgICAgICAgICAgICAgICAgICB8IDUsOCAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFBQICAgICAgfCBNYXkgMjksIDE0NTMgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBQUFAgICAgIHwgTWF5IDI5dGgsIDE0NTMgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUFBQUCAgICB8IFN1bmRheSwgTWF5IDI5dGgsIDE0NTMgICAgICAgICAgICB8IDIsNSw4IHxcbiAqIHwgTG9uZyBsb2NhbGl6ZWQgdGltZSAgICAgICAgICAgICB8ICBOQSB8IHAgICAgICAgfCAxMjowMCBBTSAgICAgICAgICAgICAgICAgICAgICAgICAgfCA1LDggICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBwcCAgICAgIHwgMTI6MDA6MDAgQU0gICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBDb21iaW5hdGlvbiBvZiBkYXRlIGFuZCB0aW1lICAgIHwgIE5BIHwgUHAgICAgICB8IDA1LzI5LzE0NTMsIDEyOjAwIEFNICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFBQcHAgICAgfCBNYXkgMjksIDE0NTMsIDEyOjAwOjAwIEFNICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBQUFBwcCAgIHwgTWF5IDI5dGgsIDE0NTMgYXQgLi4uICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUFBQUHBwICB8IFN1bmRheSwgTWF5IDI5dGgsIDE0NTMgYXQgLi4uICAgICB8IDIsNSw4IHxcbiAqIE5vdGVzOlxuICogMS4gXCJGb3JtYXR0aW5nXCIgdW5pdHMgKGUuZy4gZm9ybWF0dGluZyBxdWFydGVyKSBpbiB0aGUgZGVmYXVsdCBlbi1VUyBsb2NhbGVcbiAqICAgIGFyZSB0aGUgc2FtZSBhcyBcInN0YW5kLWFsb25lXCIgdW5pdHMsIGJ1dCBhcmUgZGlmZmVyZW50IGluIHNvbWUgbGFuZ3VhZ2VzLlxuICogICAgXCJGb3JtYXR0aW5nXCIgdW5pdHMgYXJlIGRlY2xpbmVkIGFjY29yZGluZyB0byB0aGUgcnVsZXMgb2YgdGhlIGxhbmd1YWdlXG4gKiAgICBpbiB0aGUgY29udGV4dCBvZiBhIGRhdGUuIFwiU3RhbmQtYWxvbmVcIiB1bml0cyBhcmUgYWx3YXlzIG5vbWluYXRpdmUgc2luZ3VsYXIuXG4gKiAgICBJbiBgZm9ybWF0YCBmdW5jdGlvbiwgdGhleSB3aWxsIHByb2R1Y2UgZGlmZmVyZW50IHJlc3VsdDpcbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ2RvIExMTEwnLCB7bG9jYWxlOiBjc30pIC8vPT4gJzYuIGxpc3RvcGFkJ2BcbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ2RvIE1NTU0nLCB7bG9jYWxlOiBjc30pIC8vPT4gJzYuIGxpc3RvcGFkdSdgXG4gKlxuICogICAgYHBhcnNlYCB3aWxsIHRyeSB0byBtYXRjaCBib3RoIGZvcm1hdHRpbmcgYW5kIHN0YW5kLWFsb25lIHVuaXRzIGludGVyY2hhbmdhYmx5LlxuICpcbiAqIDIuIEFueSBzZXF1ZW5jZSBvZiB0aGUgaWRlbnRpY2FsIGxldHRlcnMgaXMgYSBwYXR0ZXJuLCB1bmxlc3MgaXQgaXMgZXNjYXBlZCBieVxuICogICAgdGhlIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzIChzZWUgYmVsb3cpLlxuICogICAgSWYgdGhlIHNlcXVlbmNlIGlzIGxvbmdlciB0aGFuIGxpc3RlZCBpbiB0YWJsZTpcbiAqICAgIC0gZm9yIG51bWVyaWNhbCB1bml0cyAoYHl5eXl5eXl5YCkgYHBhcnNlYCB3aWxsIHRyeSB0byBtYXRjaCBhIG51bWJlclxuICogICAgICBhcyB3aWRlIGFzIHRoZSBzZXF1ZW5jZVxuICogICAgLSBmb3IgdGV4dCB1bml0cyAoYE1NTU1NTU1NYCkgYHBhcnNlYCB3aWxsIHRyeSB0byBtYXRjaCB0aGUgd2lkZXN0IHZhcmlhdGlvbiBvZiB0aGUgdW5pdC5cbiAqICAgICAgVGhlc2UgdmFyaWF0aW9ucyBhcmUgbWFya2VkIHdpdGggXCIyXCIgaW4gdGhlIGxhc3QgY29sdW1uIG9mIHRoZSB0YWJsZS5cbiAqXG4gKiAzLiBgUVFRUVFgIGFuZCBgcXFxcXFgIGNvdWxkIGJlIG5vdCBzdHJpY3RseSBudW1lcmljYWwgaW4gc29tZSBsb2NhbGVzLlxuICogICAgVGhlc2UgdG9rZW5zIHJlcHJlc2VudCB0aGUgc2hvcnRlc3QgZm9ybSBvZiB0aGUgcXVhcnRlci5cbiAqXG4gKiA0LiBUaGUgbWFpbiBkaWZmZXJlbmNlIGJldHdlZW4gYHlgIGFuZCBgdWAgcGF0dGVybnMgYXJlIEIuQy4geWVhcnM6XG4gKlxuICogICAgfCBZZWFyIHwgYHlgIHwgYHVgIHxcbiAqICAgIHwtLS0tLS18LS0tLS18LS0tLS18XG4gKiAgICB8IEFDIDEgfCAgIDEgfCAgIDEgfFxuICogICAgfCBCQyAxIHwgICAxIHwgICAwIHxcbiAqICAgIHwgQkMgMiB8ICAgMiB8ICAtMSB8XG4gKlxuICogICAgQWxzbyBgeXlgIHdpbGwgdHJ5IHRvIGd1ZXNzIHRoZSBjZW50dXJ5IG9mIHR3byBkaWdpdCB5ZWFyIGJ5IHByb3hpbWl0eSB3aXRoIGByZWZlcmVuY2VEYXRlYDpcbiAqXG4gKiAgICBgcGFyc2UoJzUwJywgJ3l5JywgbmV3IERhdGUoMjAxOCwgMCwgMSkpIC8vPT4gU2F0IEphbiAwMSAyMDUwIDAwOjAwOjAwYFxuICpcbiAqICAgIGBwYXJzZSgnNzUnLCAneXknLCBuZXcgRGF0ZSgyMDE4LCAwLCAxKSkgLy89PiBXZWQgSmFuIDAxIDE5NzUgMDA6MDA6MDBgXG4gKlxuICogICAgd2hpbGUgYHV1YCB3aWxsIGp1c3QgYXNzaWduIHRoZSB5ZWFyIGFzIGlzOlxuICpcbiAqICAgIGBwYXJzZSgnNTAnLCAndXUnLCBuZXcgRGF0ZSgyMDE4LCAwLCAxKSkgLy89PiBTYXQgSmFuIDAxIDAwNTAgMDA6MDA6MDBgXG4gKlxuICogICAgYHBhcnNlKCc3NScsICd1dScsIG5ldyBEYXRlKDIwMTgsIDAsIDEpKSAvLz0+IFR1ZSBKYW4gMDEgMDA3NSAwMDowMDowMGBcbiAqXG4gKiAgICBUaGUgc2FtZSBkaWZmZXJlbmNlIGlzIHRydWUgZm9yIGxvY2FsIGFuZCBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgKGBZYCBhbmQgYFJgKSxcbiAqICAgIGV4Y2VwdCBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFycyBhcmUgZGVwZW5kZW50IG9uIGBvcHRpb25zLndlZWtTdGFydHNPbmBcbiAqICAgIGFuZCBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgIChjb21wYXJlIFtzZXRJU09XZWVrWWVhcl17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9zZXRJU09XZWVrWWVhcn1cbiAqICAgIGFuZCBbc2V0V2Vla1llYXJde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3Mvc2V0V2Vla1llYXJ9KS5cbiAqXG4gKiA1LiBUaGVzZSBwYXR0ZXJucyBhcmUgbm90IGluIHRoZSBVbmljb2RlIFRlY2huaWNhbCBTdGFuZGFyZCAjMzU6XG4gKiAgICAtIGBpYDogSVNPIGRheSBvZiB3ZWVrXG4gKiAgICAtIGBJYDogSVNPIHdlZWsgb2YgeWVhclxuICogICAgLSBgUmA6IElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gKiAgICAtIGBvYDogb3JkaW5hbCBudW1iZXIgbW9kaWZpZXJcbiAqICAgIC0gYFBgOiBsb25nIGxvY2FsaXplZCBkYXRlXG4gKiAgICAtIGBwYDogbG9uZyBsb2NhbGl6ZWQgdGltZVxuICpcbiAqIDYuIGBZWWAgYW5kIGBZWVlZYCB0b2tlbnMgcmVwcmVzZW50IHdlZWstbnVtYmVyaW5nIHllYXJzIGJ1dCB0aGV5IGFyZSBvZnRlbiBjb25mdXNlZCB3aXRoIHllYXJzLlxuICogICAgWW91IHNob3VsZCBlbmFibGUgYG9wdGlvbnMudXNlQWRkaXRpb25hbFdlZWtZZWFyVG9rZW5zYCB0byB1c2UgdGhlbS4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKlxuICogNy4gYERgIGFuZCBgRERgIHRva2VucyByZXByZXNlbnQgZGF5cyBvZiB0aGUgeWVhciBidXQgdGhleSBhcmUgb2Z0aGVuIGNvbmZ1c2VkIHdpdGggZGF5cyBvZiB0aGUgbW9udGguXG4gKiAgICBZb3Ugc2hvdWxkIGVuYWJsZSBgb3B0aW9ucy51c2VBZGRpdGlvbmFsRGF5T2ZZZWFyVG9rZW5zYCB0byB1c2UgdGhlbS4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKlxuICogOC4gYFArYCB0b2tlbnMgZG8gbm90IGhhdmUgYSBkZWZpbmVkIHByaW9yaXR5IHNpbmNlIHRoZXkgYXJlIG1lcmVseSBhbGlhc2VzIHRvIG90aGVyIHRva2VucyBiYXNlZFxuICogICAgb24gdGhlIGdpdmVuIGxvY2FsZS5cbiAqXG4gKiAgICB1c2luZyBgZW4tVVNgIGxvY2FsZTogYFBgID0+IGBNTS9kZC95eXl5YFxuICogICAgdXNpbmcgYGVuLVVTYCBsb2NhbGU6IGBwYCA9PiBgaGg6bW0gYWBcbiAqICAgIHVzaW5nIGBwdC1CUmAgbG9jYWxlOiBgUGAgPT4gYGRkL01NL3l5eXlgXG4gKiAgICB1c2luZyBgcHQtQlJgIGxvY2FsZTogYHBgID0+IGBISDptbWBcbiAqXG4gKiBWYWx1ZXMgd2lsbCBiZSBhc3NpZ25lZCB0byB0aGUgZGF0ZSBpbiB0aGUgZGVzY2VuZGluZyBvcmRlciBvZiBpdHMgdW5pdCdzIHByaW9yaXR5LlxuICogVW5pdHMgb2YgYW4gZXF1YWwgcHJpb3JpdHkgb3ZlcndyaXRlIGVhY2ggb3RoZXIgaW4gdGhlIG9yZGVyIG9mIGFwcGVhcmFuY2UuXG4gKlxuICogSWYgbm8gdmFsdWVzIG9mIGhpZ2hlciBwcmlvcml0eSBhcmUgcGFyc2VkIChlLmcuIHdoZW4gcGFyc2luZyBzdHJpbmcgJ0phbnVhcnkgMXN0JyB3aXRob3V0IGEgeWVhciksXG4gKiB0aGUgdmFsdWVzIHdpbGwgYmUgdGFrZW4gZnJvbSAzcmQgYXJndW1lbnQgYHJlZmVyZW5jZURhdGVgIHdoaWNoIHdvcmtzIGFzIGEgY29udGV4dCBvZiBwYXJzaW5nLlxuICpcbiAqIGByZWZlcmVuY2VEYXRlYCBtdXN0IGJlIHBhc3NlZCBmb3IgY29ycmVjdCB3b3JrIG9mIHRoZSBmdW5jdGlvbi5cbiAqIElmIHlvdSdyZSBub3Qgc3VyZSB3aGljaCBgcmVmZXJlbmNlRGF0ZWAgdG8gc3VwcGx5LCBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgRGF0ZTpcbiAqIGBwYXJzZSgnMDIvMTEvMjAxNCcsICdNTS9kZC95eXl5JywgbmV3IERhdGUoKSlgXG4gKiBJbiB0aGlzIGNhc2UgcGFyc2luZyB3aWxsIGJlIGRvbmUgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgZGF0ZS5cbiAqIElmIGByZWZlcmVuY2VEYXRlYCBpcyBgSW52YWxpZCBEYXRlYCBvciBhIHZhbHVlIG5vdCBjb252ZXJ0aWJsZSB0byB2YWxpZCBgRGF0ZWAsXG4gKiB0aGVuIGBJbnZhbGlkIERhdGVgIHdpbGwgYmUgcmV0dXJuZWQuXG4gKlxuICogVGhlIHJlc3VsdCBtYXkgdmFyeSBieSBsb2NhbGUuXG4gKlxuICogSWYgYGZvcm1hdFN0cmluZ2AgbWF0Y2hlcyB3aXRoIGBkYXRlU3RyaW5nYCBidXQgZG9lcyBub3QgcHJvdmlkZXMgdG9rZW5zLCBgcmVmZXJlbmNlRGF0ZWAgd2lsbCBiZSByZXR1cm5lZC5cbiAqXG4gKiBJZiBwYXJzaW5nIGZhaWxlZCwgYEludmFsaWQgRGF0ZWAgd2lsbCBiZSByZXR1cm5lZC5cbiAqIEludmFsaWQgRGF0ZSBpcyBhIERhdGUsIHdob3NlIHRpbWUgdmFsdWUgaXMgTmFOLlxuICogVGltZSB2YWx1ZSBvZiBEYXRlOiBodHRwOi8vZXM1LmdpdGh1Yi5pby8jeDE1LjkuMS4xXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGRhdGVTdHJpbmcgLSB0aGUgc3RyaW5nIHRvIHBhcnNlXG4gKiBAcGFyYW0ge1N0cmluZ30gZm9ybWF0U3RyaW5nIC0gdGhlIHN0cmluZyBvZiB0b2tlbnNcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IHJlZmVyZW5jZURhdGUgLSBkZWZpbmVzIHZhbHVlcyBtaXNzaW5nIGZyb20gdGhlIHBhcnNlZCBkYXRlU3RyaW5nXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEBwYXJhbSB7MXwyfDN8NHw1fDZ8N30gW29wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlPTFdIC0gdGhlIGRheSBvZiBKYW51YXJ5LCB3aGljaCBpcyBhbHdheXMgaW4gdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXJcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMudXNlQWRkaXRpb25hbFdlZWtZZWFyVG9rZW5zPWZhbHNlXSAtIGlmIHRydWUsIGFsbG93cyB1c2FnZSBvZiB0aGUgd2Vlay1udW1iZXJpbmcgeWVhciB0b2tlbnMgYFlZYCBhbmQgYFlZWVlgO1xuICogICBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMudXNlQWRkaXRpb25hbERheU9mWWVhclRva2Vucz1mYWxzZV0gLSBpZiB0cnVlLCBhbGxvd3MgdXNhZ2Ugb2YgdGhlIGRheSBvZiB5ZWFyIHRva2VucyBgRGAgYW5kIGBERGA7XG4gKiAgIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHJldHVybnMge0RhdGV9IHRoZSBwYXJzZWQgZGF0ZVxuICogQHRocm93cyB7VHlwZUVycm9yfSAzIGFyZ3VtZW50cyByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNlxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgN1xuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMubG9jYWxlYCBtdXN0IGNvbnRhaW4gYG1hdGNoYCBwcm9wZXJ0eVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gdXNlIGB5eXl5YCBpbnN0ZWFkIG9mIGBZWVlZYCBmb3IgZm9ybWF0dGluZyB5ZWFycyB1c2luZyBbZm9ybWF0IHByb3ZpZGVkXSB0byB0aGUgaW5wdXQgW2lucHV0IHByb3ZpZGVkXTsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSB1c2UgYHl5YCBpbnN0ZWFkIG9mIGBZWWAgZm9yIGZvcm1hdHRpbmcgeWVhcnMgdXNpbmcgW2Zvcm1hdCBwcm92aWRlZF0gdG8gdGhlIGlucHV0IFtpbnB1dCBwcm92aWRlZF07IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gdXNlIGBkYCBpbnN0ZWFkIG9mIGBEYCBmb3IgZm9ybWF0dGluZyBkYXlzIG9mIHRoZSBtb250aCB1c2luZyBbZm9ybWF0IHByb3ZpZGVkXSB0byB0aGUgaW5wdXQgW2lucHV0IHByb3ZpZGVkXTsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSB1c2UgYGRkYCBpbnN0ZWFkIG9mIGBERGAgZm9yIGZvcm1hdHRpbmcgZGF5cyBvZiB0aGUgbW9udGggdXNpbmcgW2Zvcm1hdCBwcm92aWRlZF0gdG8gdGhlIGlucHV0IFtpbnB1dCBwcm92aWRlZF07IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gZm9ybWF0IHN0cmluZyBjb250YWlucyBhbiB1bmVzY2FwZWQgbGF0aW4gYWxwaGFiZXQgY2hhcmFjdGVyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFBhcnNlIDExIEZlYnJ1YXJ5IDIwMTQgZnJvbSBtaWRkbGUtZW5kaWFuIGZvcm1hdDpcbiAqIHZhciByZXN1bHQgPSBwYXJzZSgnMDIvMTEvMjAxNCcsICdNTS9kZC95eXl5JywgbmV3IERhdGUoKSlcbiAqIC8vPT4gVHVlIEZlYiAxMSAyMDE0IDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFBhcnNlIDI4dGggb2YgRmVicnVhcnkgaW4gRXNwZXJhbnRvIGxvY2FsZSBpbiB0aGUgY29udGV4dCBvZiAyMDEwIHllYXI6XG4gKiBpbXBvcnQgZW8gZnJvbSAnZGF0ZS1mbnMvbG9jYWxlL2VvJ1xuICogdmFyIHJlc3VsdCA9IHBhcnNlKCcyOC1hIGRlIGZlYnJ1YXJvJywgXCJkbyAnZGUnIE1NTU1cIiwgbmV3IERhdGUoMjAxMCwgMCwgMSksIHtcbiAqICAgbG9jYWxlOiBlb1xuICogfSlcbiAqIC8vPT4gU3VuIEZlYiAyOCAyMDEwIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBhcnNlKGRpcnR5RGF0ZVN0cmluZywgZGlydHlGb3JtYXRTdHJpbmcsIGRpcnR5UmVmZXJlbmNlRGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX29wdGlvbnMkbG9jYWxlLCBfcmVmMiwgX3JlZjMsIF9yZWY0LCBfb3B0aW9ucyRmaXJzdFdlZWtDb24sIF9vcHRpb25zJGxvY2FsZTIsIF9vcHRpb25zJGxvY2FsZTIkb3B0aSwgX2RlZmF1bHRPcHRpb25zJGxvY2FsLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLCBfcmVmNSwgX3JlZjYsIF9yZWY3LCBfb3B0aW9ucyR3ZWVrU3RhcnRzT24sIF9vcHRpb25zJGxvY2FsZTMsIF9vcHRpb25zJGxvY2FsZTMkb3B0aSwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMywgX2RlZmF1bHRPcHRpb25zJGxvY2FsNDtcbiAgcmVxdWlyZWRBcmdzKDMsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlU3RyaW5nID0gU3RyaW5nKGRpcnR5RGF0ZVN0cmluZyk7XG4gIHZhciBmb3JtYXRTdHJpbmcgPSBTdHJpbmcoZGlydHlGb3JtYXRTdHJpbmcpO1xuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICB2YXIgbG9jYWxlID0gKF9yZWYgPSAoX29wdGlvbnMkbG9jYWxlID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmxvY2FsZSkgIT09IG51bGwgJiYgX29wdGlvbnMkbG9jYWxlICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRsb2NhbGUgOiBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiBkZWZhdWx0TG9jYWxlO1xuICBpZiAoIWxvY2FsZS5tYXRjaCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdsb2NhbGUgbXVzdCBjb250YWluIG1hdGNoIHByb3BlcnR5Jyk7XG4gIH1cbiAgdmFyIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9IHRvSW50ZWdlcigoX3JlZjIgPSAoX3JlZjMgPSAoX3JlZjQgPSAoX29wdGlvbnMkZmlyc3RXZWVrQ29uID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX29wdGlvbnMkZmlyc3RXZWVrQ29uICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRmaXJzdFdlZWtDb24gOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUyID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZTIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUyJG9wdGkgPSBfb3B0aW9ucyRsb2NhbGUyLm9wdGlvbnMpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZTIkb3B0aSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX29wdGlvbnMkbG9jYWxlMiRvcHRpLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZjQgIT09IHZvaWQgMCA/IF9yZWY0IDogZGVmYXVsdE9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsID0gZGVmYXVsdE9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID0gX2RlZmF1bHRPcHRpb25zJGxvY2FsLm9wdGlvbnMpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdm9pZCAwID8gX3JlZjIgOiAxKTtcblxuICAvLyBUZXN0IGlmIHdlZWtTdGFydHNPbiBpcyBiZXR3ZWVuIDEgYW5kIDcgX2FuZF8gaXMgbm90IE5hTlxuICBpZiAoIShmaXJzdFdlZWtDb250YWluc0RhdGUgPj0gMSAmJiBmaXJzdFdlZWtDb250YWluc0RhdGUgPD0gNykpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignZmlyc3RXZWVrQ29udGFpbnNEYXRlIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3IGluY2x1c2l2ZWx5Jyk7XG4gIH1cbiAgdmFyIHdlZWtTdGFydHNPbiA9IHRvSW50ZWdlcigoX3JlZjUgPSAoX3JlZjYgPSAoX3JlZjcgPSAoX29wdGlvbnMkd2Vla1N0YXJ0c09uID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX29wdGlvbnMkd2Vla1N0YXJ0c09uICE9PSB2b2lkIDAgPyBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUzID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZTMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUzJG9wdGkgPSBfb3B0aW9ucyRsb2NhbGUzLm9wdGlvbnMpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZTMkb3B0aSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX29wdGlvbnMkbG9jYWxlMyRvcHRpLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjcgIT09IHZvaWQgMCA/IF9yZWY3IDogZGVmYXVsdE9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmNiAhPT0gdm9pZCAwID8gX3JlZjYgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsMyA9IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDQgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwzLm9wdGlvbnMpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDQud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmNSAhPT0gdm9pZCAwID8gX3JlZjUgOiAwKTtcblxuICAvLyBUZXN0IGlmIHdlZWtTdGFydHNPbiBpcyBiZXR3ZWVuIDAgYW5kIDYgX2FuZF8gaXMgbm90IE5hTlxuICBpZiAoISh3ZWVrU3RhcnRzT24gPj0gMCAmJiB3ZWVrU3RhcnRzT24gPD0gNikpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignd2Vla1N0YXJ0c09uIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2IGluY2x1c2l2ZWx5Jyk7XG4gIH1cbiAgaWYgKGZvcm1hdFN0cmluZyA9PT0gJycpIHtcbiAgICBpZiAoZGF0ZVN0cmluZyA9PT0gJycpIHtcbiAgICAgIHJldHVybiB0b0RhdGUoZGlydHlSZWZlcmVuY2VEYXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gICAgfVxuICB9XG4gIHZhciBzdWJGbk9wdGlvbnMgPSB7XG4gICAgZmlyc3RXZWVrQ29udGFpbnNEYXRlOiBmaXJzdFdlZWtDb250YWluc0RhdGUsXG4gICAgd2Vla1N0YXJ0c09uOiB3ZWVrU3RhcnRzT24sXG4gICAgbG9jYWxlOiBsb2NhbGVcbiAgfTtcblxuICAvLyBJZiB0aW1lem9uZSBpc24ndCBzcGVjaWZpZWQsIGl0IHdpbGwgYmUgc2V0IHRvIHRoZSBzeXN0ZW0gdGltZXpvbmVcbiAgdmFyIHNldHRlcnMgPSBbbmV3IERhdGVUb1N5c3RlbVRpbWV6b25lU2V0dGVyKCldO1xuICB2YXIgdG9rZW5zID0gZm9ybWF0U3RyaW5nLm1hdGNoKGxvbmdGb3JtYXR0aW5nVG9rZW5zUmVnRXhwKS5tYXAoZnVuY3Rpb24gKHN1YnN0cmluZykge1xuICAgIHZhciBmaXJzdENoYXJhY3RlciA9IHN1YnN0cmluZ1swXTtcbiAgICBpZiAoZmlyc3RDaGFyYWN0ZXIgaW4gbG9uZ0Zvcm1hdHRlcnMpIHtcbiAgICAgIHZhciBsb25nRm9ybWF0dGVyID0gbG9uZ0Zvcm1hdHRlcnNbZmlyc3RDaGFyYWN0ZXJdO1xuICAgICAgcmV0dXJuIGxvbmdGb3JtYXR0ZXIoc3Vic3RyaW5nLCBsb2NhbGUuZm9ybWF0TG9uZyk7XG4gICAgfVxuICAgIHJldHVybiBzdWJzdHJpbmc7XG4gIH0pLmpvaW4oJycpLm1hdGNoKGZvcm1hdHRpbmdUb2tlbnNSZWdFeHApO1xuICB2YXIgdXNlZFRva2VucyA9IFtdO1xuICB2YXIgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIodG9rZW5zKSxcbiAgICBfc3RlcDtcbiAgdHJ5IHtcbiAgICB2YXIgX2xvb3AgPSBmdW5jdGlvbiBfbG9vcCgpIHtcbiAgICAgIHZhciB0b2tlbiA9IF9zdGVwLnZhbHVlO1xuICAgICAgaWYgKCEob3B0aW9ucyAhPT0gbnVsbCAmJiBvcHRpb25zICE9PSB2b2lkIDAgJiYgb3B0aW9ucy51c2VBZGRpdGlvbmFsV2Vla1llYXJUb2tlbnMpICYmIGlzUHJvdGVjdGVkV2Vla1llYXJUb2tlbih0b2tlbikpIHtcbiAgICAgICAgdGhyb3dQcm90ZWN0ZWRFcnJvcih0b2tlbiwgZm9ybWF0U3RyaW5nLCBkaXJ0eURhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgICAgaWYgKCEob3B0aW9ucyAhPT0gbnVsbCAmJiBvcHRpb25zICE9PSB2b2lkIDAgJiYgb3B0aW9ucy51c2VBZGRpdGlvbmFsRGF5T2ZZZWFyVG9rZW5zKSAmJiBpc1Byb3RlY3RlZERheU9mWWVhclRva2VuKHRva2VuKSkge1xuICAgICAgICB0aHJvd1Byb3RlY3RlZEVycm9yKHRva2VuLCBmb3JtYXRTdHJpbmcsIGRpcnR5RGF0ZVN0cmluZyk7XG4gICAgICB9XG4gICAgICB2YXIgZmlyc3RDaGFyYWN0ZXIgPSB0b2tlblswXTtcbiAgICAgIHZhciBwYXJzZXIgPSBwYXJzZXJzW2ZpcnN0Q2hhcmFjdGVyXTtcbiAgICAgIGlmIChwYXJzZXIpIHtcbiAgICAgICAgdmFyIGluY29tcGF0aWJsZVRva2VucyA9IHBhcnNlci5pbmNvbXBhdGlibGVUb2tlbnM7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGluY29tcGF0aWJsZVRva2VucykpIHtcbiAgICAgICAgICB2YXIgaW5jb21wYXRpYmxlVG9rZW4gPSB1c2VkVG9rZW5zLmZpbmQoZnVuY3Rpb24gKHVzZWRUb2tlbikge1xuICAgICAgICAgICAgcmV0dXJuIGluY29tcGF0aWJsZVRva2Vucy5pbmNsdWRlcyh1c2VkVG9rZW4udG9rZW4pIHx8IHVzZWRUb2tlbi50b2tlbiA9PT0gZmlyc3RDaGFyYWN0ZXI7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKGluY29tcGF0aWJsZVRva2VuKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIlRoZSBmb3JtYXQgc3RyaW5nIG11c3RuJ3QgY29udGFpbiBgXCIuY29uY2F0KGluY29tcGF0aWJsZVRva2VuLmZ1bGxUb2tlbiwgXCJgIGFuZCBgXCIpLmNvbmNhdCh0b2tlbiwgXCJgIGF0IHRoZSBzYW1lIHRpbWVcIikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChwYXJzZXIuaW5jb21wYXRpYmxlVG9rZW5zID09PSAnKicgJiYgdXNlZFRva2Vucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJUaGUgZm9ybWF0IHN0cmluZyBtdXN0bid0IGNvbnRhaW4gYFwiLmNvbmNhdCh0b2tlbiwgXCJgIGFuZCBhbnkgb3RoZXIgdG9rZW4gYXQgdGhlIHNhbWUgdGltZVwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgdXNlZFRva2Vucy5wdXNoKHtcbiAgICAgICAgICB0b2tlbjogZmlyc3RDaGFyYWN0ZXIsXG4gICAgICAgICAgZnVsbFRva2VuOiB0b2tlblxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHBhcnNlUmVzdWx0ID0gcGFyc2VyLnJ1bihkYXRlU3RyaW5nLCB0b2tlbiwgbG9jYWxlLm1hdGNoLCBzdWJGbk9wdGlvbnMpO1xuICAgICAgICBpZiAoIXBhcnNlUmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHY6IG5ldyBEYXRlKE5hTilcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHNldHRlcnMucHVzaChwYXJzZVJlc3VsdC5zZXR0ZXIpO1xuICAgICAgICBkYXRlU3RyaW5nID0gcGFyc2VSZXN1bHQucmVzdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChmaXJzdENoYXJhY3Rlci5tYXRjaCh1bmVzY2FwZWRMYXRpbkNoYXJhY3RlclJlZ0V4cCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignRm9ybWF0IHN0cmluZyBjb250YWlucyBhbiB1bmVzY2FwZWQgbGF0aW4gYWxwaGFiZXQgY2hhcmFjdGVyIGAnICsgZmlyc3RDaGFyYWN0ZXIgKyAnYCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVwbGFjZSB0d28gc2luZ2xlIHF1b3RlIGNoYXJhY3RlcnMgd2l0aCBvbmUgc2luZ2xlIHF1b3RlIGNoYXJhY3RlclxuICAgICAgICBpZiAodG9rZW4gPT09IFwiJydcIikge1xuICAgICAgICAgIHRva2VuID0gXCInXCI7XG4gICAgICAgIH0gZWxzZSBpZiAoZmlyc3RDaGFyYWN0ZXIgPT09IFwiJ1wiKSB7XG4gICAgICAgICAgdG9rZW4gPSBjbGVhbkVzY2FwZWRTdHJpbmcodG9rZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3V0IHRva2VuIGZyb20gc3RyaW5nLCBvciwgaWYgc3RyaW5nIGRvZXNuJ3QgbWF0Y2ggdGhlIHRva2VuLCByZXR1cm4gSW52YWxpZCBEYXRlXG4gICAgICAgIGlmIChkYXRlU3RyaW5nLmluZGV4T2YodG9rZW4pID09PSAwKSB7XG4gICAgICAgICAgZGF0ZVN0cmluZyA9IGRhdGVTdHJpbmcuc2xpY2UodG9rZW4ubGVuZ3RoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdjogbmV3IERhdGUoTmFOKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIGZvciAoX2l0ZXJhdG9yLnMoKTsgIShfc3RlcCA9IF9pdGVyYXRvci5uKCkpLmRvbmU7KSB7XG4gICAgICB2YXIgX3JldCA9IF9sb29wKCk7XG4gICAgICBpZiAoX3R5cGVvZihfcmV0KSA9PT0gXCJvYmplY3RcIikgcmV0dXJuIF9yZXQudjtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgcmVtYWluaW5nIGlucHV0IGNvbnRhaW5zIHNvbWV0aGluZyBvdGhlciB0aGFuIHdoaXRlc3BhY2VcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgX2l0ZXJhdG9yLmUoZXJyKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBfaXRlcmF0b3IuZigpO1xuICB9XG4gIGlmIChkYXRlU3RyaW5nLmxlbmd0aCA+IDAgJiYgbm90V2hpdGVzcGFjZVJlZ0V4cC50ZXN0KGRhdGVTdHJpbmcpKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbiAgdmFyIHVuaXF1ZVByaW9yaXR5U2V0dGVycyA9IHNldHRlcnMubWFwKGZ1bmN0aW9uIChzZXR0ZXIpIHtcbiAgICByZXR1cm4gc2V0dGVyLnByaW9yaXR5O1xuICB9KS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIGIgLSBhO1xuICB9KS5maWx0ZXIoZnVuY3Rpb24gKHByaW9yaXR5LCBpbmRleCwgYXJyYXkpIHtcbiAgICByZXR1cm4gYXJyYXkuaW5kZXhPZihwcmlvcml0eSkgPT09IGluZGV4O1xuICB9KS5tYXAoZnVuY3Rpb24gKHByaW9yaXR5KSB7XG4gICAgcmV0dXJuIHNldHRlcnMuZmlsdGVyKGZ1bmN0aW9uIChzZXR0ZXIpIHtcbiAgICAgIHJldHVybiBzZXR0ZXIucHJpb3JpdHkgPT09IHByaW9yaXR5O1xuICAgIH0pLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBiLnN1YlByaW9yaXR5IC0gYS5zdWJQcmlvcml0eTtcbiAgICB9KTtcbiAgfSkubWFwKGZ1bmN0aW9uIChzZXR0ZXJBcnJheSkge1xuICAgIHJldHVybiBzZXR0ZXJBcnJheVswXTtcbiAgfSk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5UmVmZXJlbmNlRGF0ZSk7XG4gIGlmIChpc05hTihkYXRlLmdldFRpbWUoKSkpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxuXG4gIC8vIENvbnZlcnQgdGhlIGRhdGUgaW4gc3lzdGVtIHRpbWV6b25lIHRvIHRoZSBzYW1lIGRhdGUgaW4gVVRDKzAwOjAwIHRpbWV6b25lLlxuICB2YXIgdXRjRGF0ZSA9IHN1Yk1pbGxpc2Vjb25kcyhkYXRlLCBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKGRhdGUpKTtcbiAgdmFyIGZsYWdzID0ge307XG4gIHZhciBfaXRlcmF0b3IyID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIodW5pcXVlUHJpb3JpdHlTZXR0ZXJzKSxcbiAgICBfc3RlcDI7XG4gIHRyeSB7XG4gICAgZm9yIChfaXRlcmF0b3IyLnMoKTsgIShfc3RlcDIgPSBfaXRlcmF0b3IyLm4oKSkuZG9uZTspIHtcbiAgICAgIHZhciBzZXR0ZXIgPSBfc3RlcDIudmFsdWU7XG4gICAgICBpZiAoIXNldHRlci52YWxpZGF0ZSh1dGNEYXRlLCBzdWJGbk9wdGlvbnMpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IHNldHRlci5zZXQodXRjRGF0ZSwgZmxhZ3MsIHN1YkZuT3B0aW9ucyk7XG4gICAgICAvLyBSZXN1bHQgaXMgdHVwbGUgKGRhdGUsIGZsYWdzKVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xuICAgICAgICB1dGNEYXRlID0gcmVzdWx0WzBdO1xuICAgICAgICBhc3NpZ24oZmxhZ3MsIHJlc3VsdFsxXSk7XG4gICAgICAgIC8vIFJlc3VsdCBpcyBkYXRlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1dGNEYXRlID0gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgX2l0ZXJhdG9yMi5lKGVycik7XG4gIH0gZmluYWxseSB7XG4gICAgX2l0ZXJhdG9yMi5mKCk7XG4gIH1cbiAgcmV0dXJuIHV0Y0RhdGU7XG59XG5mdW5jdGlvbiBjbGVhbkVzY2FwZWRTdHJpbmcoaW5wdXQpIHtcbiAgcmV0dXJuIGlucHV0Lm1hdGNoKGVzY2FwZWRTdHJpbmdSZWdFeHApWzFdLnJlcGxhY2UoZG91YmxlUXVvdGVSZWdFeHAsIFwiJ1wiKTtcbn0iLCJpbXBvcnQgeyBtaWxsaXNlY29uZHNJbkhvdXIsIG1pbGxpc2Vjb25kc0luTWludXRlIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHBhcnNlSVNPXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFBhcnNlIElTTyBzdHJpbmdcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFBhcnNlIHRoZSBnaXZlbiBzdHJpbmcgaW4gSVNPIDg2MDEgZm9ybWF0IGFuZCByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBGdW5jdGlvbiBhY2NlcHRzIGNvbXBsZXRlIElTTyA4NjAxIGZvcm1hdHMgYXMgd2VsbCBhcyBwYXJ0aWFsIGltcGxlbWVudGF0aW9ucy5cbiAqIElTTyA4NjAxOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzbid0IGEgc3RyaW5nLCB0aGUgZnVuY3Rpb24gY2Fubm90IHBhcnNlIHRoZSBzdHJpbmcgb3JcbiAqIHRoZSB2YWx1ZXMgYXJlIGludmFsaWQsIGl0IHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBhcmd1bWVudCAtIHRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7MHwxfDJ9IFtvcHRpb25zLmFkZGl0aW9uYWxEaWdpdHM9Ml0gLSB0aGUgYWRkaXRpb25hbCBudW1iZXIgb2YgZGlnaXRzIGluIHRoZSBleHRlbmRlZCB5ZWFyIGZvcm1hdFxuICogQHJldHVybnMge0RhdGV9IHRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmFkZGl0aW9uYWxEaWdpdHNgIG11c3QgYmUgMCwgMSBvciAyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgc3RyaW5nICcyMDE0LTAyLTExVDExOjMwOjMwJyB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gcGFyc2VJU08oJzIwMTQtMDItMTFUMTE6MzA6MzAnKVxuICogLy89PiBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCBzdHJpbmcgJyswMjAxNDEwMScgdG8gZGF0ZSxcbiAqIC8vIGlmIHRoZSBhZGRpdGlvbmFsIG51bWJlciBvZiBkaWdpdHMgaW4gdGhlIGV4dGVuZGVkIHllYXIgZm9ybWF0IGlzIDE6XG4gKiBjb25zdCByZXN1bHQgPSBwYXJzZUlTTygnKzAyMDE0MTAxJywgeyBhZGRpdGlvbmFsRGlnaXRzOiAxIH0pXG4gKiAvLz0+IEZyaSBBcHIgMTEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwYXJzZUlTTyhhcmd1bWVudCwgb3B0aW9ucykge1xuICB2YXIgX29wdGlvbnMkYWRkaXRpb25hbERpO1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGFkZGl0aW9uYWxEaWdpdHMgPSB0b0ludGVnZXIoKF9vcHRpb25zJGFkZGl0aW9uYWxEaSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5hZGRpdGlvbmFsRGlnaXRzKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRhZGRpdGlvbmFsRGkgIT09IHZvaWQgMCA/IF9vcHRpb25zJGFkZGl0aW9uYWxEaSA6IDIpO1xuICBpZiAoYWRkaXRpb25hbERpZ2l0cyAhPT0gMiAmJiBhZGRpdGlvbmFsRGlnaXRzICE9PSAxICYmIGFkZGl0aW9uYWxEaWdpdHMgIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYWRkaXRpb25hbERpZ2l0cyBtdXN0IGJlIDAsIDEgb3IgMicpO1xuICB9XG4gIGlmICghKHR5cGVvZiBhcmd1bWVudCA9PT0gJ3N0cmluZycgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KSA9PT0gJ1tvYmplY3QgU3RyaW5nXScpKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbiAgdmFyIGRhdGVTdHJpbmdzID0gc3BsaXREYXRlU3RyaW5nKGFyZ3VtZW50KTtcbiAgdmFyIGRhdGU7XG4gIGlmIChkYXRlU3RyaW5ncy5kYXRlKSB7XG4gICAgdmFyIHBhcnNlWWVhclJlc3VsdCA9IHBhcnNlWWVhcihkYXRlU3RyaW5ncy5kYXRlLCBhZGRpdGlvbmFsRGlnaXRzKTtcbiAgICBkYXRlID0gcGFyc2VEYXRlKHBhcnNlWWVhclJlc3VsdC5yZXN0RGF0ZVN0cmluZywgcGFyc2VZZWFyUmVzdWx0LnllYXIpO1xuICB9XG4gIGlmICghZGF0ZSB8fCBpc05hTihkYXRlLmdldFRpbWUoKSkpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxuICB2YXIgdGltZXN0YW1wID0gZGF0ZS5nZXRUaW1lKCk7XG4gIHZhciB0aW1lID0gMDtcbiAgdmFyIG9mZnNldDtcbiAgaWYgKGRhdGVTdHJpbmdzLnRpbWUpIHtcbiAgICB0aW1lID0gcGFyc2VUaW1lKGRhdGVTdHJpbmdzLnRpbWUpO1xuICAgIGlmIChpc05hTih0aW1lKSkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gICAgfVxuICB9XG4gIGlmIChkYXRlU3RyaW5ncy50aW1lem9uZSkge1xuICAgIG9mZnNldCA9IHBhcnNlVGltZXpvbmUoZGF0ZVN0cmluZ3MudGltZXpvbmUpO1xuICAgIGlmIChpc05hTihvZmZzZXQpKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGRpcnR5RGF0ZSA9IG5ldyBEYXRlKHRpbWVzdGFtcCArIHRpbWUpO1xuICAgIC8vIGpzIHBhcnNlZCBzdHJpbmcgYXNzdW1pbmcgaXQncyBpbiBVVEMgdGltZXpvbmVcbiAgICAvLyBidXQgd2UgbmVlZCBpdCB0byBiZSBwYXJzZWQgaW4gb3VyIHRpbWV6b25lXG4gICAgLy8gc28gd2UgdXNlIHV0YyB2YWx1ZXMgdG8gYnVpbGQgZGF0ZSBpbiBvdXIgdGltZXpvbmUuXG4gICAgLy8gWWVhciB2YWx1ZXMgZnJvbSAwIHRvIDk5IG1hcCB0byB0aGUgeWVhcnMgMTkwMCB0byAxOTk5XG4gICAgLy8gc28gc2V0IHllYXIgZXhwbGljaXRseSB3aXRoIHNldEZ1bGxZZWFyLlxuICAgIHZhciByZXN1bHQgPSBuZXcgRGF0ZSgwKTtcbiAgICByZXN1bHQuc2V0RnVsbFllYXIoZGlydHlEYXRlLmdldFVUQ0Z1bGxZZWFyKCksIGRpcnR5RGF0ZS5nZXRVVENNb250aCgpLCBkaXJ0eURhdGUuZ2V0VVRDRGF0ZSgpKTtcbiAgICByZXN1bHQuc2V0SG91cnMoZGlydHlEYXRlLmdldFVUQ0hvdXJzKCksIGRpcnR5RGF0ZS5nZXRVVENNaW51dGVzKCksIGRpcnR5RGF0ZS5nZXRVVENTZWNvbmRzKCksIGRpcnR5RGF0ZS5nZXRVVENNaWxsaXNlY29uZHMoKSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICByZXR1cm4gbmV3IERhdGUodGltZXN0YW1wICsgdGltZSArIG9mZnNldCk7XG59XG52YXIgcGF0dGVybnMgPSB7XG4gIGRhdGVUaW1lRGVsaW1pdGVyOiAvW1QgXS8sXG4gIHRpbWVab25lRGVsaW1pdGVyOiAvW1ogXS9pLFxuICB0aW1lem9uZTogLyhbWistXS4qKSQvXG59O1xudmFyIGRhdGVSZWdleCA9IC9eLT8oPzooXFxkezN9KXwoXFxkezJ9KSg/Oi0/KFxcZHsyfSkpP3xXKFxcZHsyfSkoPzotPyhcXGR7MX0pKT98KSQvO1xudmFyIHRpbWVSZWdleCA9IC9eKFxcZHsyfSg/OlsuLF1cXGQqKT8pKD86Oj8oXFxkezJ9KD86Wy4sXVxcZCopPykpPyg/Ojo/KFxcZHsyfSg/OlsuLF1cXGQqKT8pKT8kLztcbnZhciB0aW1lem9uZVJlZ2V4ID0gL14oWystXSkoXFxkezJ9KSg/Ojo/KFxcZHsyfSkpPyQvO1xuZnVuY3Rpb24gc3BsaXREYXRlU3RyaW5nKGRhdGVTdHJpbmcpIHtcbiAgdmFyIGRhdGVTdHJpbmdzID0ge307XG4gIHZhciBhcnJheSA9IGRhdGVTdHJpbmcuc3BsaXQocGF0dGVybnMuZGF0ZVRpbWVEZWxpbWl0ZXIpO1xuICB2YXIgdGltZVN0cmluZztcblxuICAvLyBUaGUgcmVnZXggbWF0Y2ggc2hvdWxkIG9ubHkgcmV0dXJuIGF0IG1heGltdW0gdHdvIGFycmF5IGVsZW1lbnRzLlxuICAvLyBbZGF0ZV0sIFt0aW1lXSwgb3IgW2RhdGUsIHRpbWVdLlxuICBpZiAoYXJyYXkubGVuZ3RoID4gMikge1xuICAgIHJldHVybiBkYXRlU3RyaW5ncztcbiAgfVxuICBpZiAoLzovLnRlc3QoYXJyYXlbMF0pKSB7XG4gICAgdGltZVN0cmluZyA9IGFycmF5WzBdO1xuICB9IGVsc2Uge1xuICAgIGRhdGVTdHJpbmdzLmRhdGUgPSBhcnJheVswXTtcbiAgICB0aW1lU3RyaW5nID0gYXJyYXlbMV07XG4gICAgaWYgKHBhdHRlcm5zLnRpbWVab25lRGVsaW1pdGVyLnRlc3QoZGF0ZVN0cmluZ3MuZGF0ZSkpIHtcbiAgICAgIGRhdGVTdHJpbmdzLmRhdGUgPSBkYXRlU3RyaW5nLnNwbGl0KHBhdHRlcm5zLnRpbWVab25lRGVsaW1pdGVyKVswXTtcbiAgICAgIHRpbWVTdHJpbmcgPSBkYXRlU3RyaW5nLnN1YnN0cihkYXRlU3RyaW5ncy5kYXRlLmxlbmd0aCwgZGF0ZVN0cmluZy5sZW5ndGgpO1xuICAgIH1cbiAgfVxuICBpZiAodGltZVN0cmluZykge1xuICAgIHZhciB0b2tlbiA9IHBhdHRlcm5zLnRpbWV6b25lLmV4ZWModGltZVN0cmluZyk7XG4gICAgaWYgKHRva2VuKSB7XG4gICAgICBkYXRlU3RyaW5ncy50aW1lID0gdGltZVN0cmluZy5yZXBsYWNlKHRva2VuWzFdLCAnJyk7XG4gICAgICBkYXRlU3RyaW5ncy50aW1lem9uZSA9IHRva2VuWzFdO1xuICAgIH0gZWxzZSB7XG4gICAgICBkYXRlU3RyaW5ncy50aW1lID0gdGltZVN0cmluZztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRhdGVTdHJpbmdzO1xufVxuZnVuY3Rpb24gcGFyc2VZZWFyKGRhdGVTdHJpbmcsIGFkZGl0aW9uYWxEaWdpdHMpIHtcbiAgdmFyIHJlZ2V4ID0gbmV3IFJlZ0V4cCgnXig/OihcXFxcZHs0fXxbKy1dXFxcXGR7JyArICg0ICsgYWRkaXRpb25hbERpZ2l0cykgKyAnfSl8KFxcXFxkezJ9fFsrLV1cXFxcZHsnICsgKDIgKyBhZGRpdGlvbmFsRGlnaXRzKSArICd9KSQpJyk7XG4gIHZhciBjYXB0dXJlcyA9IGRhdGVTdHJpbmcubWF0Y2gocmVnZXgpO1xuICAvLyBJbnZhbGlkIElTTy1mb3JtYXR0ZWQgeWVhclxuICBpZiAoIWNhcHR1cmVzKSByZXR1cm4ge1xuICAgIHllYXI6IE5hTixcbiAgICByZXN0RGF0ZVN0cmluZzogJydcbiAgfTtcbiAgdmFyIHllYXIgPSBjYXB0dXJlc1sxXSA/IHBhcnNlSW50KGNhcHR1cmVzWzFdKSA6IG51bGw7XG4gIHZhciBjZW50dXJ5ID0gY2FwdHVyZXNbMl0gPyBwYXJzZUludChjYXB0dXJlc1syXSkgOiBudWxsO1xuXG4gIC8vIGVpdGhlciB5ZWFyIG9yIGNlbnR1cnkgaXMgbnVsbCwgbm90IGJvdGhcbiAgcmV0dXJuIHtcbiAgICB5ZWFyOiBjZW50dXJ5ID09PSBudWxsID8geWVhciA6IGNlbnR1cnkgKiAxMDAsXG4gICAgcmVzdERhdGVTdHJpbmc6IGRhdGVTdHJpbmcuc2xpY2UoKGNhcHR1cmVzWzFdIHx8IGNhcHR1cmVzWzJdKS5sZW5ndGgpXG4gIH07XG59XG5mdW5jdGlvbiBwYXJzZURhdGUoZGF0ZVN0cmluZywgeWVhcikge1xuICAvLyBJbnZhbGlkIElTTy1mb3JtYXR0ZWQgeWVhclxuICBpZiAoeWVhciA9PT0gbnVsbCkgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIHZhciBjYXB0dXJlcyA9IGRhdGVTdHJpbmcubWF0Y2goZGF0ZVJlZ2V4KTtcbiAgLy8gSW52YWxpZCBJU08tZm9ybWF0dGVkIHN0cmluZ1xuICBpZiAoIWNhcHR1cmVzKSByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgdmFyIGlzV2Vla0RhdGUgPSAhIWNhcHR1cmVzWzRdO1xuICB2YXIgZGF5T2ZZZWFyID0gcGFyc2VEYXRlVW5pdChjYXB0dXJlc1sxXSk7XG4gIHZhciBtb250aCA9IHBhcnNlRGF0ZVVuaXQoY2FwdHVyZXNbMl0pIC0gMTtcbiAgdmFyIGRheSA9IHBhcnNlRGF0ZVVuaXQoY2FwdHVyZXNbM10pO1xuICB2YXIgd2VlayA9IHBhcnNlRGF0ZVVuaXQoY2FwdHVyZXNbNF0pO1xuICB2YXIgZGF5T2ZXZWVrID0gcGFyc2VEYXRlVW5pdChjYXB0dXJlc1s1XSkgLSAxO1xuICBpZiAoaXNXZWVrRGF0ZSkge1xuICAgIGlmICghdmFsaWRhdGVXZWVrRGF0ZSh5ZWFyLCB3ZWVrLCBkYXlPZldlZWspKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgICB9XG4gICAgcmV0dXJuIGRheU9mSVNPV2Vla1llYXIoeWVhciwgd2VlaywgZGF5T2ZXZWVrKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKDApO1xuICAgIGlmICghdmFsaWRhdGVEYXRlKHllYXIsIG1vbnRoLCBkYXkpIHx8ICF2YWxpZGF0ZURheU9mWWVhckRhdGUoeWVhciwgZGF5T2ZZZWFyKSkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gICAgfVxuICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeWVhciwgbW9udGgsIE1hdGgubWF4KGRheU9mWWVhciwgZGF5KSk7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cbn1cbmZ1bmN0aW9uIHBhcnNlRGF0ZVVuaXQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID8gcGFyc2VJbnQodmFsdWUpIDogMTtcbn1cbmZ1bmN0aW9uIHBhcnNlVGltZSh0aW1lU3RyaW5nKSB7XG4gIHZhciBjYXB0dXJlcyA9IHRpbWVTdHJpbmcubWF0Y2godGltZVJlZ2V4KTtcbiAgaWYgKCFjYXB0dXJlcykgcmV0dXJuIE5hTjsgLy8gSW52YWxpZCBJU08tZm9ybWF0dGVkIHRpbWVcblxuICB2YXIgaG91cnMgPSBwYXJzZVRpbWVVbml0KGNhcHR1cmVzWzFdKTtcbiAgdmFyIG1pbnV0ZXMgPSBwYXJzZVRpbWVVbml0KGNhcHR1cmVzWzJdKTtcbiAgdmFyIHNlY29uZHMgPSBwYXJzZVRpbWVVbml0KGNhcHR1cmVzWzNdKTtcbiAgaWYgKCF2YWxpZGF0ZVRpbWUoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpKSB7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxuICByZXR1cm4gaG91cnMgKiBtaWxsaXNlY29uZHNJbkhvdXIgKyBtaW51dGVzICogbWlsbGlzZWNvbmRzSW5NaW51dGUgKyBzZWNvbmRzICogMTAwMDtcbn1cbmZ1bmN0aW9uIHBhcnNlVGltZVVuaXQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICYmIHBhcnNlRmxvYXQodmFsdWUucmVwbGFjZSgnLCcsICcuJykpIHx8IDA7XG59XG5mdW5jdGlvbiBwYXJzZVRpbWV6b25lKHRpbWV6b25lU3RyaW5nKSB7XG4gIGlmICh0aW1lem9uZVN0cmluZyA9PT0gJ1onKSByZXR1cm4gMDtcbiAgdmFyIGNhcHR1cmVzID0gdGltZXpvbmVTdHJpbmcubWF0Y2godGltZXpvbmVSZWdleCk7XG4gIGlmICghY2FwdHVyZXMpIHJldHVybiAwO1xuICB2YXIgc2lnbiA9IGNhcHR1cmVzWzFdID09PSAnKycgPyAtMSA6IDE7XG4gIHZhciBob3VycyA9IHBhcnNlSW50KGNhcHR1cmVzWzJdKTtcbiAgdmFyIG1pbnV0ZXMgPSBjYXB0dXJlc1szXSAmJiBwYXJzZUludChjYXB0dXJlc1szXSkgfHwgMDtcbiAgaWYgKCF2YWxpZGF0ZVRpbWV6b25lKGhvdXJzLCBtaW51dGVzKSkge1xuICAgIHJldHVybiBOYU47XG4gIH1cbiAgcmV0dXJuIHNpZ24gKiAoaG91cnMgKiBtaWxsaXNlY29uZHNJbkhvdXIgKyBtaW51dGVzICogbWlsbGlzZWNvbmRzSW5NaW51dGUpO1xufVxuZnVuY3Rpb24gZGF5T2ZJU09XZWVrWWVhcihpc29XZWVrWWVhciwgd2VlaywgZGF5KSB7XG4gIHZhciBkYXRlID0gbmV3IERhdGUoMCk7XG4gIGRhdGUuc2V0VVRDRnVsbFllYXIoaXNvV2Vla1llYXIsIDAsIDQpO1xuICB2YXIgZm91cnRoT2ZKYW51YXJ5RGF5ID0gZGF0ZS5nZXRVVENEYXkoKSB8fCA3O1xuICB2YXIgZGlmZiA9ICh3ZWVrIC0gMSkgKiA3ICsgZGF5ICsgMSAtIGZvdXJ0aE9mSmFudWFyeURheTtcbiAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpICsgZGlmZik7XG4gIHJldHVybiBkYXRlO1xufVxuXG4vLyBWYWxpZGF0aW9uIGZ1bmN0aW9uc1xuXG4vLyBGZWJydWFyeSBpcyBudWxsIHRvIGhhbmRsZSB0aGUgbGVhcCB5ZWFyICh1c2luZyB8fClcbnZhciBkYXlzSW5Nb250aHMgPSBbMzEsIG51bGwsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXTtcbmZ1bmN0aW9uIGlzTGVhcFllYXJJbmRleCh5ZWFyKSB7XG4gIHJldHVybiB5ZWFyICUgNDAwID09PSAwIHx8IHllYXIgJSA0ID09PSAwICYmIHllYXIgJSAxMDAgIT09IDA7XG59XG5mdW5jdGlvbiB2YWxpZGF0ZURhdGUoeWVhciwgbW9udGgsIGRhdGUpIHtcbiAgcmV0dXJuIG1vbnRoID49IDAgJiYgbW9udGggPD0gMTEgJiYgZGF0ZSA+PSAxICYmIGRhdGUgPD0gKGRheXNJbk1vbnRoc1ttb250aF0gfHwgKGlzTGVhcFllYXJJbmRleCh5ZWFyKSA/IDI5IDogMjgpKTtcbn1cbmZ1bmN0aW9uIHZhbGlkYXRlRGF5T2ZZZWFyRGF0ZSh5ZWFyLCBkYXlPZlllYXIpIHtcbiAgcmV0dXJuIGRheU9mWWVhciA+PSAxICYmIGRheU9mWWVhciA8PSAoaXNMZWFwWWVhckluZGV4KHllYXIpID8gMzY2IDogMzY1KTtcbn1cbmZ1bmN0aW9uIHZhbGlkYXRlV2Vla0RhdGUoX3llYXIsIHdlZWssIGRheSkge1xuICByZXR1cm4gd2VlayA+PSAxICYmIHdlZWsgPD0gNTMgJiYgZGF5ID49IDAgJiYgZGF5IDw9IDY7XG59XG5mdW5jdGlvbiB2YWxpZGF0ZVRpbWUoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpIHtcbiAgaWYgKGhvdXJzID09PSAyNCkge1xuICAgIHJldHVybiBtaW51dGVzID09PSAwICYmIHNlY29uZHMgPT09IDA7XG4gIH1cbiAgcmV0dXJuIHNlY29uZHMgPj0gMCAmJiBzZWNvbmRzIDwgNjAgJiYgbWludXRlcyA+PSAwICYmIG1pbnV0ZXMgPCA2MCAmJiBob3VycyA+PSAwICYmIGhvdXJzIDwgMjU7XG59XG5mdW5jdGlvbiB2YWxpZGF0ZVRpbWV6b25lKF9ob3VycywgbWludXRlcykge1xuICByZXR1cm4gbWludXRlcyA+PSAwICYmIG1pbnV0ZXMgPD0gNTk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBwYXJzZUpTT05cbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgUGFyc2UgYSBKU09OIGRhdGUgc3RyaW5nXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0cyBhIGNvbXBsZXRlIElTTyBkYXRlIHN0cmluZyBpbiBVVEMgdGltZSwgdGhlIHR5cGljYWwgZm9ybWF0IGZvciB0cmFuc21pdHRpbmdcbiAqIGEgZGF0ZSBpbiBKU09OLCB0byBhIEphdmFTY3JpcHQgYERhdGVgIGluc3RhbmNlLlxuICpcbiAqIFRoaXMgaXMgYSBtaW5pbWFsIGltcGxlbWVudGF0aW9uIGZvciBjb252ZXJ0aW5nIGRhdGVzIHJldHJpZXZlZCBmcm9tIGEgSlNPTiBBUEkgdG9cbiAqIGEgYERhdGVgIGluc3RhbmNlIHdoaWNoIGNhbiBiZSB1c2VkIHdpdGggb3RoZXIgZnVuY3Rpb25zIGluIHRoZSBgZGF0ZS1mbnNgIGxpYnJhcnkuXG4gKiBUaGUgZm9sbG93aW5nIGZvcm1hdHMgYXJlIHN1cHBvcnRlZDpcbiAqXG4gKiAtIGAyMDAwLTAzLTE1VDA1OjIwOjEwLjEyM1pgOiBUaGUgb3V0cHV0IG9mIGAudG9JU09TdHJpbmcoKWAgYW5kIGBKU09OLnN0cmluZ2lmeShuZXcgRGF0ZSgpKWBcbiAqIC0gYDIwMDAtMDMtMTVUMDU6MjA6MTBaYDogV2l0aG91dCBtaWxsaXNlY29uZHNcbiAqIC0gYDIwMDAtMDMtMTVUMDU6MjA6MTArMDA6MDBgOiBXaXRoIGEgemVybyBvZmZzZXQsIHRoZSBkZWZhdWx0IEpTT04gZW5jb2RlZCBmb3JtYXQgaW4gc29tZSBvdGhlciBsYW5ndWFnZXNcbiAqIC0gYDIwMDAtMDMtMTVUMDU6MjA6MTArMDU6NDVgOiBXaXRoIGEgcG9zaXRpdmUgb3IgbmVnYXRpdmUgb2Zmc2V0LCB0aGUgZGVmYXVsdCBKU09OIGVuY29kZWQgZm9ybWF0IGluIHNvbWUgb3RoZXIgbGFuZ3VhZ2VzXG4gKiAtIGAyMDAwLTAzLTE1VDA1OjIwOjEwKzAwMDBgOiBXaXRoIGEgemVybyBvZmZzZXQgd2l0aG91dCBhIGNvbG9uXG4gKiAtIGAyMDAwLTAzLTE1VDA1OjIwOjEwYDogV2l0aG91dCBhIHRyYWlsaW5nICdaJyBzeW1ib2xcbiAqIC0gYDIwMDAtMDMtMTVUMDU6MjA6MTAuMTIzNDU2N2A6IFVwIHRvIDcgZGlnaXRzIGluIG1pbGxpc2Vjb25kcyBmaWVsZC4gT25seSBmaXJzdCAzIGFyZSB0YWtlbiBpbnRvIGFjY291bnQgc2luY2UgSlMgZG9lcyBub3QgYWxsb3cgZnJhY3Rpb25hbCBtaWxsaXNlY29uZHNcbiAqIC0gYDIwMDAtMDMtMTUgMDU6MjA6MTBgOiBXaXRoIGEgc3BhY2UgaW5zdGVhZCBvZiBhICdUJyBzZXBhcmF0b3IgZm9yIEFQSXMgcmV0dXJuaW5nIGEgU1FMIGRhdGUgd2l0aG91dCByZWZvcm1hdHRpbmdcbiAqXG4gKiBGb3IgY29udmVuaWVuY2UgYW5kIGVhc2Ugb2YgdXNlIHRoZXNlIG90aGVyIGlucHV0IHR5cGVzIGFyZSBhbHNvIHN1cHBvcnRlZFxuICogdmlhIFt0b0RhdGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvdG9EYXRlfTpcbiAqXG4gKiAtIEEgYERhdGVgIGluc3RhbmNlIHdpbGwgYmUgY2xvbmVkXG4gKiAtIEEgYG51bWJlcmAgd2lsbCBiZSB0cmVhdGVkIGFzIGEgdGltZXN0YW1wXG4gKlxuICogQW55IG90aGVyIGlucHV0IHR5cGUgb3IgaW52YWxpZCBkYXRlIHN0cmluZ3Mgd2lsbCByZXR1cm4gYW4gYEludmFsaWQgRGF0ZWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8TnVtYmVyfERhdGV9IGFyZ3VtZW50IEEgZnVsbHkgZm9ybWVkIElTTzg2MDEgZGF0ZSBzdHJpbmcgdG8gY29udmVydFxuICogQHJldHVybnMge0RhdGV9IHRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGFyc2VKU09OKGFyZ3VtZW50KSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICBpZiAodHlwZW9mIGFyZ3VtZW50ID09PSAnc3RyaW5nJykge1xuICAgIHZhciBwYXJ0cyA9IGFyZ3VtZW50Lm1hdGNoKC8oXFxkezR9KS0oXFxkezJ9KS0oXFxkezJ9KVtUIF0oXFxkezJ9KTooXFxkezJ9KTooXFxkezJ9KSg/OlxcLihcXGR7MCw3fSkpPyg/Olp8KC4pKFxcZHsyfSk6PyhcXGR7Mn0pPyk/Lyk7XG4gICAgaWYgKHBhcnRzKSB7XG4gICAgICAvLyBHcm91cCA4IG1hdGNoZXMgdGhlIHNpZ25cbiAgICAgIHJldHVybiBuZXcgRGF0ZShEYXRlLlVUQygrcGFydHNbMV0sICtwYXJ0c1syXSAtIDEsICtwYXJ0c1szXSwgK3BhcnRzWzRdIC0gKCtwYXJ0c1s5XSB8fCAwKSAqIChwYXJ0c1s4XSA9PSAnLScgPyAtMSA6IDEpLCArcGFydHNbNV0gLSAoK3BhcnRzWzEwXSB8fCAwKSAqIChwYXJ0c1s4XSA9PSAnLScgPyAtMSA6IDEpLCArcGFydHNbNl0sICsoKHBhcnRzWzddIHx8ICcwJykgKyAnMDAnKS5zdWJzdHJpbmcoMCwgMykpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbiAgcmV0dXJuIHRvRGF0ZShhcmd1bWVudCk7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCBnZXREYXkgZnJvbSBcIi4uL2dldERheS9pbmRleC5qc1wiO1xuaW1wb3J0IHN1YkRheXMgZnJvbSBcIi4uL3N1YkRheXMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgcHJldmlvdXNEYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFdoZW4gaXMgdGhlIHByZXZpb3VzIGRheSBvZiB0aGUgd2Vlaz9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFdoZW4gaXMgdGhlIHByZXZpb3VzIGRheSBvZiB0aGUgd2Vlaz8gMC02IHRoZSBkYXkgb2YgdGhlIHdlZWssIDAgcmVwcmVzZW50cyBTdW5kYXkuXG4gKlxuICogQHBhcmFtIHtEYXRlIHwgbnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7bnVtYmVyfSBkYXkgLSBkYXkgb2YgdGhlIHdlZWtcbiAqIEByZXR1cm5zIHtEYXRlfSAtIHRoZSBkYXRlIGlzIHRoZSBwcmV2aW91cyBkYXkgb2Ygd2Vla1xuICogQHRocm93cyB7VHlwZUVycm9yfSAtIDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gaXMgdGhlIHByZXZpb3VzIE1vbmRheSBiZWZvcmUgTWFyLCAyMCwgMjAyMD9cbiAqIGNvbnN0IHJlc3VsdCA9IHByZXZpb3VzRGF5KG5ldyBEYXRlKDIwMjAsIDIsIDIwKSwgMSlcbiAqIC8vPT4gTW9uIE1hciAxNiAyMDIwIDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gaXMgdGhlIHByZXZpb3VzIFR1ZXNkYXkgYmVmb3JlIE1hciwgMjEsIDIwMjA/XG4gKiBjb25zdCByZXN1bHQgPSBwcmV2aW91c0RheShuZXcgRGF0ZSgyMDIwLCAyLCAyMSksIDIpXG4gKiAvLz0+IFR1ZSBNYXIgMTcgMjAyMCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwcmV2aW91c0RheShkYXRlLCBkYXkpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkZWx0YSA9IGdldERheShkYXRlKSAtIGRheTtcbiAgaWYgKGRlbHRhIDw9IDApIGRlbHRhICs9IDc7XG4gIHJldHVybiBzdWJEYXlzKGRhdGUsIGRlbHRhKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHByZXZpb3VzRGF5IGZyb20gXCIuLi9wcmV2aW91c0RheS9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBwcmV2aW91c0ZyaWRheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgV2hlbiBpcyB0aGUgcHJldmlvdXMgRnJpZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogV2hlbiBpcyB0aGUgcHJldmlvdXMgRnJpZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IG51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIHN0YXJ0IGNvdW50aW5nIGZyb21cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgcHJldmlvdXMgRnJpZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hlbiBpcyB0aGUgcHJldmlvdXMgRnJpZGF5IGJlZm9yZSBKdW4sIDE5LCAyMDIxP1xuICogY29uc3QgcmVzdWx0ID0gcHJldmlvdXNGcmlkYXkobmV3IERhdGUoMjAyMSwgNSwgMTkpKVxuICogLy89PiBGcmkgSnVuZSAxOCAyMDIxIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHByZXZpb3VzRnJpZGF5KGRhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBwcmV2aW91c0RheShkYXRlLCA1KTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHByZXZpb3VzRGF5IGZyb20gXCIuLi9wcmV2aW91c0RheS9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBwcmV2aW91c01vbmRheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgV2hlbiBpcyB0aGUgcHJldmlvdXMgTW9uZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogV2hlbiBpcyB0aGUgcHJldmlvdXMgTW9uZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IG51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIHN0YXJ0IGNvdW50aW5nIGZyb21cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgcHJldmlvdXMgTW9uZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hlbiBpcyB0aGUgcHJldmlvdXMgTW9uZGF5IGJlZm9yZSBKdW4sIDE4LCAyMDIxP1xuICogY29uc3QgcmVzdWx0ID0gcHJldmlvdXNNb25kYXkobmV3IERhdGUoMjAyMSwgNSwgMTgpKVxuICogLy89PiBNb24gSnVuZSAxNCAyMDIxIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHByZXZpb3VzTW9uZGF5KGRhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBwcmV2aW91c0RheShkYXRlLCAxKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHByZXZpb3VzRGF5IGZyb20gXCIuLi9wcmV2aW91c0RheS9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBwcmV2aW91c1NhdHVyZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBXaGVuIGlzIHRoZSBwcmV2aW91cyBTYXR1cmRheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFdoZW4gaXMgdGhlIHByZXZpb3VzIFNhdHVyZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IG51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIHN0YXJ0IGNvdW50aW5nIGZyb21cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgcHJldmlvdXMgU2F0dXJkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBwcmV2aW91cyBTYXR1cmRheSBiZWZvcmUgSnVuLCAyMCwgMjAyMT9cbiAqIGNvbnN0IHJlc3VsdCA9IHByZXZpb3VzU2F0dXJkYXkobmV3IERhdGUoMjAyMSwgNSwgMjApKVxuICogLy89PiBTYXQgSnVuZSAxOSAyMDIxIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHByZXZpb3VzU2F0dXJkYXkoZGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHByZXZpb3VzRGF5KGRhdGUsIDYpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgcHJldmlvdXNEYXkgZnJvbSBcIi4uL3ByZXZpb3VzRGF5L2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHByZXZpb3VzU3VuZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBXaGVuIGlzIHRoZSBwcmV2aW91cyBTdW5kYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBXaGVuIGlzIHRoZSBwcmV2aW91cyBTdW5kYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlIHwgbnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gc3RhcnQgY291bnRpbmcgZnJvbVxuICogQHJldHVybnMge0RhdGV9IHRoZSBwcmV2aW91cyBTdW5kYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBwcmV2aW91cyBTdW5kYXkgYmVmb3JlIEp1biwgMjEsIDIwMjE/XG4gKiBjb25zdCByZXN1bHQgPSBwcmV2aW91c1N1bmRheShuZXcgRGF0ZSgyMDIxLCA1LCAyMSkpXG4gKiAvLz0+IFN1biBKdW5lIDIwIDIwMjEgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcHJldmlvdXNTdW5kYXkoZGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHByZXZpb3VzRGF5KGRhdGUsIDApO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgcHJldmlvdXNEYXkgZnJvbSBcIi4uL3ByZXZpb3VzRGF5L2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHByZXZpb3VzVGh1cnNkYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFdoZW4gaXMgdGhlIHByZXZpb3VzIFRodXJzZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogV2hlbiBpcyB0aGUgcHJldmlvdXMgVGh1cnNkYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlIHwgbnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gc3RhcnQgY291bnRpbmcgZnJvbVxuICogQHJldHVybnMge0RhdGV9IHRoZSBwcmV2aW91cyBUaHVyc2RheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gaXMgdGhlIHByZXZpb3VzIFRodXJzZGF5IGJlZm9yZSBKdW4sIDE4LCAyMDIxP1xuICogY29uc3QgcmVzdWx0ID0gcHJldmlvdXNUaHVyc2RheShuZXcgRGF0ZSgyMDIxLCA1LCAxOCkpXG4gKiAvLz0+IFRodSBKdW5lIDE3IDIwMjEgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcHJldmlvdXNUaHVyc2RheShkYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gcHJldmlvdXNEYXkoZGF0ZSwgNCk7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCBwcmV2aW91c0RheSBmcm9tIFwiLi4vcHJldmlvdXNEYXkvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgcHJldmlvdXNUdWVzZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBXaGVuIGlzIHRoZSBwcmV2aW91cyBUdWVzZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogV2hlbiBpcyB0aGUgcHJldmlvdXMgVHVlc2RheT9cbiAqXG4gKiBAcGFyYW0ge0RhdGUgfCBudW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBzdGFydCBjb3VudGluZyBmcm9tXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHByZXZpb3VzIFR1ZXNkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBwcmV2aW91cyBUdWVzZGF5IGJlZm9yZSBKdW4sIDE4LCAyMDIxP1xuICogY29uc3QgcmVzdWx0ID0gcHJldmlvdXNUdWVzZGF5KG5ldyBEYXRlKDIwMjEsIDUsIDE4KSlcbiAqIC8vPT4gVHVlIEp1bmUgMTUgMjAyMSAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwcmV2aW91c1R1ZXNkYXkoZGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHByZXZpb3VzRGF5KGRhdGUsIDIpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgcHJldmlvdXNEYXkgZnJvbSBcIi4uL3ByZXZpb3VzRGF5L2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHByZXZpb3VzV2VkbmVzZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBXaGVuIGlzIHRoZSBwcmV2aW91cyBXZWRuZXNkYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBXaGVuIGlzIHRoZSBwcmV2aW91cyBXZWRuZXNkYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlIHwgbnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gc3RhcnQgY291bnRpbmcgZnJvbVxuICogQHJldHVybnMge0RhdGV9IHRoZSBwcmV2aW91cyBXZWRuZXNkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBwcmV2aW91cyBXZWRuZXNkYXkgYmVmb3JlIEp1biwgMTgsIDIwMjE/XG4gKiBjb25zdCByZXN1bHQgPSBwcmV2aW91c1dlZG5lc2RheShuZXcgRGF0ZSgyMDIxLCA1LCAxOCkpXG4gKiAvLz0+IFdlZCBKdW5lIDE2IDIwMjEgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcHJldmlvdXNXZWRuZXNkYXkoZGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHByZXZpb3VzRGF5KGRhdGUsIDMpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBtb250aHNJblF1YXJ0ZXIgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHF1YXJ0ZXJzVG9Nb250aHNcbiAqIEBjYXRlZ29yeSBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgbnVtYmVyIG9mIHF1YXJ0ZXJzIHRvIG1vbnRocy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2YgcXVhcnRlcnMgdG8gYSBmdWxsIG51bWJlciBvZiBtb250aHMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IHF1YXJ0ZXJzIC0gbnVtYmVyIG9mIHF1YXJ0ZXJzIHRvIGJlIGNvbnZlcnRlZFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBudW1iZXIgb2YgcXVhcnRlcnMgY29udmVydGVkIGluIG1vbnRoc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgMiBxdWFydGVycyB0byBtb250aHNcbiAqIGNvbnN0IHJlc3VsdCA9IHF1YXJ0ZXJzVG9Nb250aHMoMilcbiAqIC8vPT4gNlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBxdWFydGVyc1RvTW9udGhzKHF1YXJ0ZXJzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gTWF0aC5mbG9vcihxdWFydGVycyAqIG1vbnRoc0luUXVhcnRlcik7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IHF1YXJ0ZXJzSW5ZZWFyIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBxdWFydGVyc1RvWWVhcnNcbiAqIEBjYXRlZ29yeSBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgbnVtYmVyIG9mIHF1YXJ0ZXJzIHRvIHllYXJzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiBxdWFydGVycyB0byBhIGZ1bGwgbnVtYmVyIG9mIHllYXJzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBxdWFydGVycyAtIG51bWJlciBvZiBxdWFydGVycyB0byBiZSBjb252ZXJ0ZWRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIHF1YXJ0ZXJzIGNvbnZlcnRlZCBpbiB5ZWFyc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgOCBxdWFydGVycyB0byB5ZWFyc1xuICogY29uc3QgcmVzdWx0ID0gcXVhcnRlcnNUb1llYXJzKDgpXG4gKiAvLz0+IDJcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXQgdXNlcyBmbG9vciByb3VuZGluZzpcbiAqIGNvbnN0IHJlc3VsdCA9IHF1YXJ0ZXJzVG9ZZWFycygxMSlcbiAqIC8vPT4gMlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBxdWFydGVyc1RvWWVhcnMocXVhcnRlcnMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciB5ZWFycyA9IHF1YXJ0ZXJzIC8gcXVhcnRlcnNJblllYXI7XG4gIHJldHVybiBNYXRoLmZsb29yKHllYXJzKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldFJvdW5kaW5nTWV0aG9kIH0gZnJvbSBcIi4uL19saWIvcm91bmRpbmdNZXRob2RzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSByb3VuZFRvTmVhcmVzdE1pbnV0ZXNcbiAqIEBjYXRlZ29yeSBNaW51dGUgSGVscGVyc1xuICogQHN1bW1hcnkgUm91bmRzIHRoZSBnaXZlbiBkYXRlIHRvIHRoZSBuZWFyZXN0IG1pbnV0ZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUm91bmRzIHRoZSBnaXZlbiBkYXRlIHRvIHRoZSBuZWFyZXN0IG1pbnV0ZSAob3IgbnVtYmVyIG9mIG1pbnV0ZXMpLlxuICogUm91bmRzIHVwIHdoZW4gdGhlIGdpdmVuIGRhdGUgaXMgZXhhY3RseSBiZXR3ZWVuIHRoZSBuZWFyZXN0IHJvdW5kIG1pbnV0ZXMuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIHJvdW5kXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy5uZWFyZXN0VG89MV0gLSBuZWFyZXN0IG51bWJlciBvZiBtaW51dGVzIHRvIHJvdW5kIHRvLiBFLmcuIGAxNWAgdG8gcm91bmQgdG8gcXVhcnRlciBob3Vycy5cbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5yb3VuZGluZ01ldGhvZD0ndHJ1bmMnXSAtIGEgcm91bmRpbmcgbWV0aG9kIChgY2VpbGAsIGBmbG9vcmAsIGByb3VuZGAgb3IgYHRydW5jYClcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgcm91bmRlZCB0byB0aGUgY2xvc2VzdCBtaW51dGVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMubmVhcmVzdFRvYCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUm91bmQgMTAgSnVseSAyMDE0IDEyOjEyOjM0IHRvIG5lYXJlc3QgbWludXRlOlxuICogY29uc3QgcmVzdWx0ID0gcm91bmRUb05lYXJlc3RNaW51dGVzKG5ldyBEYXRlKDIwMTQsIDYsIDEwLCAxMiwgMTIsIDM0KSlcbiAqIC8vPT4gVGh1IEp1bCAxMCAyMDE0IDEyOjEzOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJvdW5kIDEwIEp1bHkgMjAxNCAxMjowNzozMCB0byBuZWFyZXN0IHF1YXJ0ZXIgaG91cjpcbiAqIGNvbnN0IHJlc3VsdCA9IHJvdW5kVG9OZWFyZXN0TWludXRlcyhuZXcgRGF0ZSgyMDE0LCA2LCAxMCwgMTIsIDEyLCAzNCksIHsgbmVhcmVzdFRvOiAxNSB9KVxuICogLy8gcm91bmRzIHVwIGJlY2F1c2UgZ2l2ZW4gZGF0ZSBpcyBleGFjdGx5IGJldHdlZW4gMTI6MDA6MDAgYW5kIDEyOjE1OjAwXG4gKiAvLz0+IFRodSBKdWwgMTAgMjAxNCAxMjoxNTowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByb3VuZFRvTmVhcmVzdE1pbnV0ZXMoZGlydHlEYXRlLCBvcHRpb25zKSB7XG4gIHZhciBfb3B0aW9ucyRuZWFyZXN0VG87XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJzEgYXJndW1lbnQgcmVxdWlyZWQsIGJ1dCBvbmx5IG5vbmUgcHJvdmlkZWQgcHJlc2VudCcpO1xuICB9XG4gIHZhciBuZWFyZXN0VG8gPSB0b0ludGVnZXIoKF9vcHRpb25zJG5lYXJlc3RUbyA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5uZWFyZXN0VG8pICE9PSBudWxsICYmIF9vcHRpb25zJG5lYXJlc3RUbyAhPT0gdm9pZCAwID8gX29wdGlvbnMkbmVhcmVzdFRvIDogMSk7XG4gIGlmIChuZWFyZXN0VG8gPCAxIHx8IG5lYXJlc3RUbyA+IDMwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2BvcHRpb25zLm5lYXJlc3RUb2AgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDMwJyk7XG4gIH1cbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHNlY29uZHMgPSBkYXRlLmdldFNlY29uZHMoKTsgLy8gcmVsZXZhbnQgaWYgbmVhcmVzdFRvIGlzIDEsIHdoaWNoIGlzIHRoZSBkZWZhdWx0IGNhc2VcbiAgdmFyIG1pbnV0ZXMgPSBkYXRlLmdldE1pbnV0ZXMoKSArIHNlY29uZHMgLyA2MDtcbiAgdmFyIHJvdW5kaW5nTWV0aG9kID0gZ2V0Um91bmRpbmdNZXRob2Qob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnJvdW5kaW5nTWV0aG9kKTtcbiAgdmFyIHJvdW5kZWRNaW51dGVzID0gcm91bmRpbmdNZXRob2QobWludXRlcyAvIG5lYXJlc3RUbykgKiBuZWFyZXN0VG87XG4gIHZhciByZW1haW5kZXJNaW51dGVzID0gbWludXRlcyAlIG5lYXJlc3RUbztcbiAgdmFyIGFkZGVkTWludXRlcyA9IE1hdGgucm91bmQocmVtYWluZGVyTWludXRlcyAvIG5lYXJlc3RUbykgKiBuZWFyZXN0VG87XG4gIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCksIGRhdGUuZ2V0SG91cnMoKSwgcm91bmRlZE1pbnV0ZXMgKyBhZGRlZE1pbnV0ZXMpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBzZWNvbmRzSW5Ib3VyIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZWNvbmRzVG9Ib3Vyc1xuICogQGNhdGVnb3J5IENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCBzZWNvbmRzIHRvIGhvdXJzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiBzZWNvbmRzIHRvIGEgZnVsbCBudW1iZXIgb2YgaG91cnMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IHNlY29uZHMgLSBudW1iZXIgb2Ygc2Vjb25kcyB0byBiZSBjb252ZXJ0ZWRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIHNlY29uZHMgY29udmVydGVkIGluIGhvdXJzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCA3MjAwIHNlY29uZHMgaW50byBob3Vyc1xuICogY29uc3QgcmVzdWx0ID0gc2Vjb25kc1RvSG91cnMoNzIwMClcbiAqIC8vPT4gMlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJdCB1c2VzIGZsb29yIHJvdW5kaW5nOlxuICogY29uc3QgcmVzdWx0ID0gc2Vjb25kc1RvSG91cnMoNzE5OSlcbiAqIC8vPT4gMVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZWNvbmRzVG9Ib3VycyhzZWNvbmRzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgaG91cnMgPSBzZWNvbmRzIC8gc2Vjb25kc0luSG91cjtcbiAgcmV0dXJuIE1hdGguZmxvb3IoaG91cnMpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBtaWxsaXNlY29uZHNJblNlY29uZCB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2Vjb25kc1RvTWlsbGlzZWNvbmRzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHNlY29uZHMgdG8gbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiBzZWNvbmRzIHRvIGEgZnVsbCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBzZWNvbmRzIC0gbnVtYmVyIG9mIHNlY29uZHMgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBzZWNvbmRzIGNvbnZlcnRlZCBpbiBtaWxsaXNlY29uZHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDIgc2Vjb25kcyBpbnRvIG1pbGxpc2Vjb25kc1xuICogY29uc3QgcmVzdWx0ID0gc2Vjb25kc1RvTWlsbGlzZWNvbmRzKDIpXG4gKiAvLz0+IDIwMDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2Vjb25kc1RvTWlsbGlzZWNvbmRzKHNlY29uZHMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBzZWNvbmRzICogbWlsbGlzZWNvbmRzSW5TZWNvbmQ7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IHNlY29uZHNJbk1pbnV0ZSB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2Vjb25kc1RvTWludXRlc1xuICogQGNhdGVnb3J5IENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCBzZWNvbmRzIHRvIG1pbnV0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHNlY29uZHMgdG8gYSBmdWxsIG51bWJlciBvZiBtaW51dGVzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBzZWNvbmRzIC0gbnVtYmVyIG9mIHNlY29uZHMgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBzZWNvbmRzIGNvbnZlcnRlZCBpbiBtaW51dGVzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCAxMjAgc2Vjb25kcyBpbnRvIG1pbnV0ZXNcbiAqIGNvbnN0IHJlc3VsdCA9IHNlY29uZHNUb01pbnV0ZXMoMTIwKVxuICogLy89PiAyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEl0IHVzZXMgZmxvb3Igcm91bmRpbmc6XG4gKiBjb25zdCByZXN1bHQgPSBzZWNvbmRzVG9NaW51dGVzKDExOSlcbiAqIC8vPT4gMVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZWNvbmRzVG9NaW51dGVzKHNlY29uZHMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBtaW51dGVzID0gc2Vjb25kcyAvIHNlY29uZHNJbk1pbnV0ZTtcbiAgcmV0dXJuIE1hdGguZmxvb3IobWludXRlcyk7XG59IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZlwiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgc2V0TW9udGggZnJvbSBcIi4uL3NldE1vbnRoL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2V0XG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCBkYXRlIHZhbHVlcyB0byBhIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZXQgZGF0ZSB2YWx1ZXMgdG8gYSBnaXZlbiBkYXRlLlxuICpcbiAqIFNldHMgdGltZSB2YWx1ZXMgdG8gZGF0ZSBmcm9tIG9iamVjdCBgdmFsdWVzYC5cbiAqIEEgdmFsdWUgaXMgbm90IHNldCBpZiBpdCBpcyB1bmRlZmluZWQgb3IgbnVsbCBvciBkb2Vzbid0IGV4aXN0IGluIGB2YWx1ZXNgLlxuICpcbiAqIE5vdGUgYWJvdXQgYnVuZGxlIHNpemU6IGBzZXRgIGRvZXMgbm90IGludGVybmFsbHkgdXNlIGBzZXRYYCBmdW5jdGlvbnMgZnJvbSBkYXRlLWZucyBidXQgaW5zdGVhZCBvcHRzXG4gKiB0byB1c2UgbmF0aXZlIGBEYXRlI3NldFhgIG1ldGhvZHMuIElmIHlvdSB1c2UgdGhpcyBmdW5jdGlvbiwgeW91IG1heSBub3Qgd2FudCB0byBpbmNsdWRlIHRoZVxuICogb3RoZXIgYHNldFhgIGZ1bmN0aW9ucyB0aGF0IGRhdGUtZm5zIHByb3ZpZGVzIGlmIHlvdSBhcmUgY29uY2VybmVkIGFib3V0IHRoZSBidW5kbGUgc2l6ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtPYmplY3R9IHZhbHVlcyAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnNcbiAqIEBwYXJhbSB7TnVtYmVyfSBbdmFsdWVzLnllYXJdIC0gdGhlIG51bWJlciBvZiB5ZWFycyB0byBiZSBzZXRcbiAqIEBwYXJhbSB7TnVtYmVyfSBbdmFsdWVzLm1vbnRoXSAtIHRoZSBudW1iZXIgb2YgbW9udGhzIHRvIGJlIHNldFxuICogQHBhcmFtIHtOdW1iZXJ9IFt2YWx1ZXMuZGF0ZV0gLSB0aGUgbnVtYmVyIG9mIGRheXMgdG8gYmUgc2V0XG4gKiBAcGFyYW0ge051bWJlcn0gW3ZhbHVlcy5ob3Vyc10gLSB0aGUgbnVtYmVyIG9mIGhvdXJzIHRvIGJlIHNldFxuICogQHBhcmFtIHtOdW1iZXJ9IFt2YWx1ZXMubWludXRlc10gLSB0aGUgbnVtYmVyIG9mIG1pbnV0ZXMgdG8gYmUgc2V0XG4gKiBAcGFyYW0ge051bWJlcn0gW3ZhbHVlcy5zZWNvbmRzXSAtIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyB0byBiZSBzZXRcbiAqIEBwYXJhbSB7TnVtYmVyfSBbdmFsdWVzLm1pbGxpc2Vjb25kc10gLSB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBiZSBzZXRcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCBvcHRpb25zIHNldFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYHZhbHVlc2AgbXVzdCBiZSBhbiBvYmplY3RcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVHJhbnNmb3JtIDEgU2VwdGVtYmVyIDIwMTQgaW50byAyMCBPY3RvYmVyIDIwMTUgaW4gYSBzaW5nbGUgbGluZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldChuZXcgRGF0ZSgyMDE0LCA4LCAyMCksIHsgeWVhcjogMjAxNSwgbW9udGg6IDksIGRhdGU6IDIwIH0pXG4gKiAvLz0+IFR1ZSBPY3QgMjAgMjAxNSAwMDowMDowMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgMTIgUE0gdG8gMSBTZXB0ZW1iZXIgMjAxNCAwMToyMzo0NSB0byAxIFNlcHRlbWJlciAyMDE0IDEyOjAwOjAwOlxuICogY29uc3QgcmVzdWx0ID0gc2V0KG5ldyBEYXRlKDIwMTQsIDgsIDEsIDEsIDIzLCA0NSksIHsgaG91cnM6IDEyIH0pXG4gKiAvLz0+IE1vbiBTZXAgMDEgMjAxNCAxMjoyMzo0NVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXQoZGlydHlEYXRlLCB2YWx1ZXMpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIGlmIChfdHlwZW9mKHZhbHVlcykgIT09ICdvYmplY3QnIHx8IHZhbHVlcyA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd2YWx1ZXMgcGFyYW1ldGVyIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIH1cbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcblxuICAvLyBDaGVjayBpZiBkYXRlIGlzIEludmFsaWQgRGF0ZSBiZWNhdXNlIERhdGUucHJvdG90eXBlLnNldEZ1bGxZZWFyIGlnbm9yZXMgdGhlIHZhbHVlIG9mIEludmFsaWQgRGF0ZVxuICBpZiAoaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbiAgaWYgKHZhbHVlcy55ZWFyICE9IG51bGwpIHtcbiAgICBkYXRlLnNldEZ1bGxZZWFyKHZhbHVlcy55ZWFyKTtcbiAgfVxuICBpZiAodmFsdWVzLm1vbnRoICE9IG51bGwpIHtcbiAgICBkYXRlID0gc2V0TW9udGgoZGF0ZSwgdmFsdWVzLm1vbnRoKTtcbiAgfVxuICBpZiAodmFsdWVzLmRhdGUgIT0gbnVsbCkge1xuICAgIGRhdGUuc2V0RGF0ZSh0b0ludGVnZXIodmFsdWVzLmRhdGUpKTtcbiAgfVxuICBpZiAodmFsdWVzLmhvdXJzICE9IG51bGwpIHtcbiAgICBkYXRlLnNldEhvdXJzKHRvSW50ZWdlcih2YWx1ZXMuaG91cnMpKTtcbiAgfVxuICBpZiAodmFsdWVzLm1pbnV0ZXMgIT0gbnVsbCkge1xuICAgIGRhdGUuc2V0TWludXRlcyh0b0ludGVnZXIodmFsdWVzLm1pbnV0ZXMpKTtcbiAgfVxuICBpZiAodmFsdWVzLnNlY29uZHMgIT0gbnVsbCkge1xuICAgIGRhdGUuc2V0U2Vjb25kcyh0b0ludGVnZXIodmFsdWVzLnNlY29uZHMpKTtcbiAgfVxuICBpZiAodmFsdWVzLm1pbGxpc2Vjb25kcyAhPSBudWxsKSB7XG4gICAgZGF0ZS5zZXRNaWxsaXNlY29uZHModG9JbnRlZ2VyKHZhbHVlcy5taWxsaXNlY29uZHMpKTtcbiAgfVxuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZXREYXRlXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgZGF5IG9mIHRoZSBtb250aCB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgZGF5IG9mIHRoZSBtb250aCB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGRheU9mTW9udGggLSB0aGUgZGF5IG9mIHRoZSBtb250aCBvZiB0aGUgbmV3IGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgZGF5IG9mIHRoZSBtb250aCBzZXRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IHRoZSAzMHRoIGRheSBvZiB0aGUgbW9udGggdG8gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldERhdGUobmV3IERhdGUoMjAxNCwgOCwgMSksIDMwKVxuICogLy89PiBUdWUgU2VwIDMwIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0RGF0ZShkaXJ0eURhdGUsIGRpcnR5RGF5T2ZNb250aCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRheU9mTW9udGggPSB0b0ludGVnZXIoZGlydHlEYXlPZk1vbnRoKTtcbiAgZGF0ZS5zZXREYXRlKGRheU9mTW9udGgpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgYWRkRGF5cyBmcm9tIFwiLi4vYWRkRGF5cy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL19saWIvZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2V0RGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTZXQgdGhlIGRheSBvZiB0aGUgd2VlayB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgZGF5IG9mIHRoZSB3ZWVrIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gZGF5IC0gdGhlIGRheSBvZiB0aGUgd2VlayBvZiB0aGUgbmV3IGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBkYXkgb2YgdGhlIHdlZWsgc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCB3ZWVrIGRheSB0byBTdW5kYXksIHdpdGggdGhlIGRlZmF1bHQgd2Vla1N0YXJ0c09uIG9mIFN1bmRheTpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldERheShuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgMClcbiAqIC8vPT4gU3VuIEF1ZyAzMSAyMDE0IDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCB3ZWVrIGRheSB0byBTdW5kYXksIHdpdGggYSB3ZWVrU3RhcnRzT24gb2YgTW9uZGF5OlxuICogY29uc3QgcmVzdWx0ID0gc2V0RGF5KG5ldyBEYXRlKDIwMTQsIDgsIDEpLCAwLCB7IHdlZWtTdGFydHNPbjogMSB9KVxuICogLy89PiBTdW4gU2VwIDA3IDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0RGF5KGRpcnR5RGF0ZSwgZGlydHlEYXksIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9yZWYyLCBfcmVmMywgX29wdGlvbnMkd2Vla1N0YXJ0c09uLCBfb3B0aW9ucyRsb2NhbGUsIF9vcHRpb25zJGxvY2FsZSRvcHRpbywgX2RlZmF1bHRPcHRpb25zJGxvY2FsLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyO1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIHdlZWtTdGFydHNPbiA9IHRvSW50ZWdlcigoX3JlZiA9IChfcmVmMiA9IChfcmVmMyA9IChfb3B0aW9ucyR3ZWVrU3RhcnRzT24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gIT09IHZvaWQgMCA/IF9vcHRpb25zJHdlZWtTdGFydHNPbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPSBfb3B0aW9ucyRsb2NhbGUub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlJG9wdGlvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUkb3B0aW8ud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiBkZWZhdWx0T3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDAgPyBfcmVmMiA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsMi53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiAwKTtcblxuICAvLyBUZXN0IGlmIHdlZWtTdGFydHNPbiBpcyBiZXR3ZWVuIDAgYW5kIDYgX2FuZF8gaXMgbm90IE5hTlxuICBpZiAoISh3ZWVrU3RhcnRzT24gPj0gMCAmJiB3ZWVrU3RhcnRzT24gPD0gNikpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignd2Vla1N0YXJ0c09uIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2IGluY2x1c2l2ZWx5Jyk7XG4gIH1cbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRheSA9IHRvSW50ZWdlcihkaXJ0eURheSk7XG4gIHZhciBjdXJyZW50RGF5ID0gZGF0ZS5nZXREYXkoKTtcbiAgdmFyIHJlbWFpbmRlciA9IGRheSAlIDc7XG4gIHZhciBkYXlJbmRleCA9IChyZW1haW5kZXIgKyA3KSAlIDc7XG4gIHZhciBkZWx0YSA9IDcgLSB3ZWVrU3RhcnRzT247XG4gIHZhciBkaWZmID0gZGF5IDwgMCB8fCBkYXkgPiA2ID8gZGF5IC0gKGN1cnJlbnREYXkgKyBkZWx0YSkgJSA3IDogKGRheUluZGV4ICsgZGVsdGEpICUgNyAtIChjdXJyZW50RGF5ICsgZGVsdGEpICUgNztcbiAgcmV0dXJuIGFkZERheXMoZGF0ZSwgZGlmZik7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2V0RGF5T2ZZZWFyXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgZGF5IG9mIHRoZSB5ZWFyIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU2V0IHRoZSBkYXkgb2YgdGhlIHllYXIgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBkYXlPZlllYXIgLSB0aGUgZGF5IG9mIHRoZSB5ZWFyIG9mIHRoZSBuZXcgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBkYXkgb2YgdGhlIHllYXIgc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCB0aGUgMm5kIGRheSBvZiB0aGUgeWVhciB0byAyIEp1bHkgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldERheU9mWWVhcihuZXcgRGF0ZSgyMDE0LCA2LCAyKSwgMilcbiAqIC8vPT4gVGh1IEphbiAwMiAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldERheU9mWWVhcihkaXJ0eURhdGUsIGRpcnR5RGF5T2ZZZWFyKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGF5T2ZZZWFyID0gdG9JbnRlZ2VyKGRpcnR5RGF5T2ZZZWFyKTtcbiAgZGF0ZS5zZXRNb250aCgwKTtcbiAgZGF0ZS5zZXREYXRlKGRheU9mWWVhcik7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zLCBzZXREZWZhdWx0T3B0aW9ucyBhcyBzZXRJbnRlcm5hbERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL19saWIvZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHNldERlZmF1bHRPcHRpb25zXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCBkZWZhdWx0IG9wdGlvbnMgaW5jbHVkaW5nIGxvY2FsZS5cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZXRzIHRoZSBkZWZhdWx0cyBmb3JcbiAqIGBvcHRpb25zLmxvY2FsZWAsIGBvcHRpb25zLndlZWtTdGFydHNPbmAgYW5kIGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWBcbiAqIGFyZ3VtZW50cyBmb3IgYWxsIGZ1bmN0aW9ucy5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gbmV3T3B0aW9ucyAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW25ld09wdGlvbnMubG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtuZXdPcHRpb25zLndlZWtTdGFydHNPbl0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEBwYXJhbSB7MXwyfDN8NHw1fDZ8N30gW25ld09wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlXSAtIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IGdsb2JhbCBsb2NhbGU6XG4gKiBpbXBvcnQgeyBlcyB9IGZyb20gJ2RhdGUtZm5zL2xvY2FsZSdcbiAqIHNldERlZmF1bHRPcHRpb25zKHsgbG9jYWxlOiBlcyB9KVxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0KG5ldyBEYXRlKDIwMTQsIDgsIDIpLCAnUFBQUCcpXG4gKiAvLz0+ICdtYXJ0ZXMsIDIgZGUgc2VwdGllbWJyZSBkZSAyMDE0J1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdGFydCBvZiB0aGUgd2VlayBmb3IgMiBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZXZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIpKVxuICogLy89PiBTdW4gQXVnIDMxIDIwMTQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3RhcnQgb2YgdGhlIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQsXG4gKiAvLyB3aGVuIHdlIHNldCB0aGF0IHdlZWsgc3RhcnRzIG9uIE1vbmRheSBieSBkZWZhdWx0OlxuICogc2V0RGVmYXVsdE9wdGlvbnMoeyB3ZWVrU3RhcnRzT246IDEgfSlcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZXZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIpKVxuICogLy89PiBNb24gU2VwIDAxIDIwMTQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gTWFudWFsbHkgc2V0IG9wdGlvbnMgdGFrZSBwcmlvcml0eSBvdmVyIGRlZmF1bHQgb3B0aW9uczpcbiAqIHNldERlZmF1bHRPcHRpb25zKHsgd2Vla1N0YXJ0c09uOiAxIH0pXG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyKSwgeyB3ZWVrU3RhcnRzT246IDAgfSlcbiAqIC8vPT4gU3VuIEF1ZyAzMSAyMDE0IDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlbW92ZSB0aGUgb3B0aW9uIGJ5IHNldHRpbmcgaXQgdG8gYHVuZGVmaW5lZGA6XG4gKiBzZXREZWZhdWx0T3B0aW9ucyh7IHdlZWtTdGFydHNPbjogMSB9KVxuICogc2V0RGVmYXVsdE9wdGlvbnMoeyB3ZWVrU3RhcnRzT246IHVuZGVmaW5lZCB9KVxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZldlZWsobmV3IERhdGUoMjAxNCwgOCwgMikpXG4gKiAvLz0+IFN1biBBdWcgMzEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXREZWZhdWx0T3B0aW9ucyhuZXdPcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgcmVzdWx0ID0ge307XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIGZvciAodmFyIHByb3BlcnR5IGluIGRlZmF1bHRPcHRpb25zKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkZWZhdWx0T3B0aW9ucywgcHJvcGVydHkpKSB7XG4gICAgICA7XG4gICAgICByZXN1bHRbcHJvcGVydHldID0gZGVmYXVsdE9wdGlvbnNbcHJvcGVydHldO1xuICAgIH1cbiAgfVxuICBmb3IgKHZhciBfcHJvcGVydHkgaW4gbmV3T3B0aW9ucykge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobmV3T3B0aW9ucywgX3Byb3BlcnR5KSkge1xuICAgICAgaWYgKG5ld09wdGlvbnNbX3Byb3BlcnR5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRlbGV0ZSByZXN1bHRbX3Byb3BlcnR5XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIDtcbiAgICAgICAgcmVzdWx0W19wcm9wZXJ0eV0gPSBuZXdPcHRpb25zW19wcm9wZXJ0eV07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHNldEludGVybmFsRGVmYXVsdE9wdGlvbnMocmVzdWx0KTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZXRIb3Vyc1xuICogQGNhdGVnb3J5IEhvdXIgSGVscGVyc1xuICogQHN1bW1hcnkgU2V0IHRoZSBob3VycyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgaG91cnMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBob3VycyAtIHRoZSBob3VycyBvZiB0aGUgbmV3IGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgaG91cnMgc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCA0IGhvdXJzIHRvIDEgU2VwdGVtYmVyIDIwMTQgMTE6MzA6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzZXRIb3VycyhuZXcgRGF0ZSgyMDE0LCA4LCAxLCAxMSwgMzApLCA0KVxuICogLy89PiBNb24gU2VwIDAxIDIwMTQgMDQ6MzA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0SG91cnMoZGlydHlEYXRlLCBkaXJ0eUhvdXJzKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgaG91cnMgPSB0b0ludGVnZXIoZGlydHlIb3Vycyk7XG4gIGRhdGUuc2V0SG91cnMoaG91cnMpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkRGF5cyBmcm9tIFwiLi4vYWRkRGF5cy9pbmRleC5qc1wiO1xuaW1wb3J0IGdldElTT0RheSBmcm9tIFwiLi4vZ2V0SVNPRGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZXRJU09EYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgZGF5IG9mIHRoZSBJU08gd2VlayB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgZGF5IG9mIHRoZSBJU08gd2VlayB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIElTTyB3ZWVrIHN0YXJ0cyB3aXRoIE1vbmRheS5cbiAqIDcgaXMgdGhlIGluZGV4IG9mIFN1bmRheSwgMSBpcyB0aGUgaW5kZXggb2YgTW9uZGF5IGV0Yy5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGRheSAtIHRoZSBkYXkgb2YgdGhlIElTTyB3ZWVrIG9mIHRoZSBuZXcgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBkYXkgb2YgdGhlIElTTyB3ZWVrIHNldFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgU3VuZGF5IHRvIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBzZXRJU09EYXkobmV3IERhdGUoMjAxNCwgOCwgMSksIDcpXG4gKiAvLz0+IFN1biBTZXAgMDcgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRJU09EYXkoZGlydHlEYXRlLCBkaXJ0eURheSkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRheSA9IHRvSW50ZWdlcihkaXJ0eURheSk7XG4gIHZhciBjdXJyZW50RGF5ID0gZ2V0SVNPRGF5KGRhdGUpO1xuICB2YXIgZGlmZiA9IGRheSAtIGN1cnJlbnREYXk7XG4gIHJldHVybiBhZGREYXlzKGRhdGUsIGRpZmYpO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBnZXRJU09XZWVrIGZyb20gXCIuLi9nZXRJU09XZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZXRJU09XZWVrXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgU2V0IHRoZSBJU08gd2VlayB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgSVNPIHdlZWsgdG8gdGhlIGdpdmVuIGRhdGUsIHNhdmluZyB0aGUgd2Vla2RheSBudW1iZXIuXG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gaXNvV2VlayAtIHRoZSBJU08gd2VlayBvZiB0aGUgbmV3IGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgSVNPIHdlZWsgc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCB0aGUgNTNyZCBJU08gd2VlayB0byA3IEF1Z3VzdCAyMDA0OlxuICogY29uc3QgcmVzdWx0ID0gc2V0SVNPV2VlayhuZXcgRGF0ZSgyMDA0LCA3LCA3KSwgNTMpXG4gKiAvLz0+IFNhdCBKYW4gMDEgMjAwNSAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRJU09XZWVrKGRpcnR5RGF0ZSwgZGlydHlJU09XZWVrKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgaXNvV2VlayA9IHRvSW50ZWdlcihkaXJ0eUlTT1dlZWspO1xuICB2YXIgZGlmZiA9IGdldElTT1dlZWsoZGF0ZSkgLSBpc29XZWVrO1xuICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgLSBkaWZmICogNyk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mSVNPV2Vla1llYXIgZnJvbSBcIi4uL3N0YXJ0T2ZJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZXRJU09XZWVrWWVhclxuICogQGNhdGVnb3J5IElTTyBXZWVrLU51bWJlcmluZyBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZXQgdGhlIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyIHRvIHRoZSBnaXZlbiBkYXRlLFxuICogc2F2aW5nIHRoZSB3ZWVrIG51bWJlciBhbmQgdGhlIHdlZWtkYXkgbnVtYmVyLlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGlzb1dlZWtZZWFyIC0gdGhlIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyIG9mIHRoZSBuZXcgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBJU08gd2Vlay1udW1iZXJpbmcgeWVhciBzZXRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyIDIwMDcgdG8gMjkgRGVjZW1iZXIgMjAwODpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldElTT1dlZWtZZWFyKG5ldyBEYXRlKDIwMDgsIDExLCAyOSksIDIwMDcpXG4gKiAvLz0+IE1vbiBKYW4gMDEgMjAwNyAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRJU09XZWVrWWVhcihkaXJ0eURhdGUsIGRpcnR5SVNPV2Vla1llYXIpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBpc29XZWVrWWVhciA9IHRvSW50ZWdlcihkaXJ0eUlTT1dlZWtZZWFyKTtcbiAgdmFyIGRpZmYgPSBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMoZGF0ZSwgc3RhcnRPZklTT1dlZWtZZWFyKGRhdGUpKTtcbiAgdmFyIGZvdXJ0aE9mSmFudWFyeSA9IG5ldyBEYXRlKDApO1xuICBmb3VydGhPZkphbnVhcnkuc2V0RnVsbFllYXIoaXNvV2Vla1llYXIsIDAsIDQpO1xuICBmb3VydGhPZkphbnVhcnkuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIGRhdGUgPSBzdGFydE9mSVNPV2Vla1llYXIoZm91cnRoT2ZKYW51YXJ5KTtcbiAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgZGlmZik7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHNldE1pbGxpc2Vjb25kc1xuICogQGNhdGVnb3J5IE1pbGxpc2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgbWlsbGlzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU2V0IHRoZSBtaWxsaXNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBtaWxsaXNlY29uZHMgLSB0aGUgbWlsbGlzZWNvbmRzIG9mIHRoZSBuZXcgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBtaWxsaXNlY29uZHMgc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCAzMDAgbWlsbGlzZWNvbmRzIHRvIDEgU2VwdGVtYmVyIDIwMTQgMTE6MzA6NDAuNTAwOlxuICogY29uc3QgcmVzdWx0ID0gc2V0TWlsbGlzZWNvbmRzKG5ldyBEYXRlKDIwMTQsIDgsIDEsIDExLCAzMCwgNDAsIDUwMCksIDMwMClcbiAqIC8vPT4gTW9uIFNlcCAwMSAyMDE0IDExOjMwOjQwLjMwMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRNaWxsaXNlY29uZHMoZGlydHlEYXRlLCBkaXJ0eU1pbGxpc2Vjb25kcykge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIG1pbGxpc2Vjb25kcyA9IHRvSW50ZWdlcihkaXJ0eU1pbGxpc2Vjb25kcyk7XG4gIGRhdGUuc2V0TWlsbGlzZWNvbmRzKG1pbGxpc2Vjb25kcyk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHNldE1pbnV0ZXNcbiAqIEBjYXRlZ29yeSBNaW51dGUgSGVscGVyc1xuICogQHN1bW1hcnkgU2V0IHRoZSBtaW51dGVzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU2V0IHRoZSBtaW51dGVzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gbWludXRlcyAtIHRoZSBtaW51dGVzIG9mIHRoZSBuZXcgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBtaW51dGVzIHNldFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgNDUgbWludXRlcyB0byAxIFNlcHRlbWJlciAyMDE0IDExOjMwOjQwOlxuICogY29uc3QgcmVzdWx0ID0gc2V0TWludXRlcyhuZXcgRGF0ZSgyMDE0LCA4LCAxLCAxMSwgMzAsIDQwKSwgNDUpXG4gKiAvLz0+IE1vbiBTZXAgMDEgMjAxNCAxMTo0NTo0MFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRNaW51dGVzKGRpcnR5RGF0ZSwgZGlydHlNaW51dGVzKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgbWludXRlcyA9IHRvSW50ZWdlcihkaXJ0eU1pbnV0ZXMpO1xuICBkYXRlLnNldE1pbnV0ZXMobWludXRlcyk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBnZXREYXlzSW5Nb250aCBmcm9tIFwiLi4vZ2V0RGF5c0luTW9udGgvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHNldE1vbnRoXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgU2V0IHRoZSBtb250aCB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgbW9udGggdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBtb250aCAtIHRoZSBtb250aCBvZiB0aGUgbmV3IGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgbW9udGggc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCBGZWJydWFyeSB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gc2V0TW9udGgobmV3IERhdGUoMjAxNCwgOCwgMSksIDEpXG4gKiAvLz0+IFNhdCBGZWIgMDEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRNb250aChkaXJ0eURhdGUsIGRpcnR5TW9udGgpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBtb250aCA9IHRvSW50ZWdlcihkaXJ0eU1vbnRoKTtcbiAgdmFyIHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIHZhciBkYXkgPSBkYXRlLmdldERhdGUoKTtcbiAgdmFyIGRhdGVXaXRoRGVzaXJlZE1vbnRoID0gbmV3IERhdGUoMCk7XG4gIGRhdGVXaXRoRGVzaXJlZE1vbnRoLnNldEZ1bGxZZWFyKHllYXIsIG1vbnRoLCAxNSk7XG4gIGRhdGVXaXRoRGVzaXJlZE1vbnRoLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgZGF5c0luTW9udGggPSBnZXREYXlzSW5Nb250aChkYXRlV2l0aERlc2lyZWRNb250aCk7XG4gIC8vIFNldCB0aGUgbGFzdCBkYXkgb2YgdGhlIG5ldyBtb250aFxuICAvLyBpZiB0aGUgb3JpZ2luYWwgZGF0ZSB3YXMgdGhlIGxhc3QgZGF5IG9mIHRoZSBsb25nZXIgbW9udGhcbiAgZGF0ZS5zZXRNb250aChtb250aCwgTWF0aC5taW4oZGF5LCBkYXlzSW5Nb250aCkpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgc2V0TW9udGggZnJvbSBcIi4uL3NldE1vbnRoL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZXRRdWFydGVyXG4gKiBAY2F0ZWdvcnkgUXVhcnRlciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTZXQgdGhlIHllYXIgcXVhcnRlciB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgeWVhciBxdWFydGVyIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gcXVhcnRlciAtIHRoZSBxdWFydGVyIG9mIHRoZSBuZXcgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBxdWFydGVyIHNldFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgdGhlIDJuZCBxdWFydGVyIHRvIDIgSnVseSAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gc2V0UXVhcnRlcihuZXcgRGF0ZSgyMDE0LCA2LCAyKSwgMilcbiAqIC8vPT4gV2VkIEFwciAwMiAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldFF1YXJ0ZXIoZGlydHlEYXRlLCBkaXJ0eVF1YXJ0ZXIpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBxdWFydGVyID0gdG9JbnRlZ2VyKGRpcnR5UXVhcnRlcik7XG4gIHZhciBvbGRRdWFydGVyID0gTWF0aC5mbG9vcihkYXRlLmdldE1vbnRoKCkgLyAzKSArIDE7XG4gIHZhciBkaWZmID0gcXVhcnRlciAtIG9sZFF1YXJ0ZXI7XG4gIHJldHVybiBzZXRNb250aChkYXRlLCBkYXRlLmdldE1vbnRoKCkgKyBkaWZmICogMyk7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2V0U2Vjb25kc1xuICogQGNhdGVnb3J5IFNlY29uZCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTZXQgdGhlIHNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZXQgdGhlIHNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBzZWNvbmRzIC0gdGhlIHNlY29uZHMgb2YgdGhlIG5ldyBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIHNlY29uZHMgc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCA0NSBzZWNvbmRzIHRvIDEgU2VwdGVtYmVyIDIwMTQgMTE6MzA6NDA6XG4gKiBjb25zdCByZXN1bHQgPSBzZXRTZWNvbmRzKG5ldyBEYXRlKDIwMTQsIDgsIDEsIDExLCAzMCwgNDApLCA0NSlcbiAqIC8vPT4gTW9uIFNlcCAwMSAyMDE0IDExOjMwOjQ1XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldFNlY29uZHMoZGlydHlEYXRlLCBkaXJ0eVNlY29uZHMpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBzZWNvbmRzID0gdG9JbnRlZ2VyKGRpcnR5U2Vjb25kcyk7XG4gIGRhdGUuc2V0U2Vjb25kcyhzZWNvbmRzKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IGdldFdlZWsgZnJvbSBcIi4uL2dldFdlZWsvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHNldFdlZWtcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgbG9jYWwgd2VlayB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgbG9jYWwgd2VlayB0byB0aGUgZ2l2ZW4gZGF0ZSwgc2F2aW5nIHRoZSB3ZWVrZGF5IG51bWJlci5cbiAqIFRoZSBleGFjdCBjYWxjdWxhdGlvbiBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2ZcbiAqIGBvcHRpb25zLndlZWtTdGFydHNPbmAgKHdoaWNoIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrKVxuICogYW5kIGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgKHdoaWNoIGlzIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluXG4gKiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgd2Vlay1udW1iZXJpbmcgeWVhcilcbiAqXG4gKiBXZWVrIG51bWJlcmluZzogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2VlayNXZWVrX251bWJlcmluZ1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gd2VlayAtIHRoZSB3ZWVrIG9mIHRoZSBuZXcgZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcGFyYW0gezF8MnwzfDR8NXw2fDd9IFtvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZT0xXSAtIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIGxvY2FsIHdlZWsgc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCB0aGUgMXN0IHdlZWsgdG8gMiBKYW51YXJ5IDIwMDUgd2l0aCBkZWZhdWx0IG9wdGlvbnM6XG4gKiBjb25zdCByZXN1bHQgPSBzZXRXZWVrKG5ldyBEYXRlKDIwMDUsIDAsIDIpLCAxKVxuICogLy89PiBTdW4gRGVjIDI2IDIwMDQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IHRoZSAxc3Qgd2VlayB0byAyIEphbnVhcnkgMjAwNSxcbiAqIC8vIGlmIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLFxuICogLy8gYW5kIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyIGFsd2F5cyBjb250YWlucyA0IEphbnVhcnk6XG4gKiBjb25zdCByZXN1bHQgPSBzZXRXZWVrKG5ldyBEYXRlKDIwMDUsIDAsIDIpLCAxLCB7XG4gKiAgIHdlZWtTdGFydHNPbjogMSxcbiAqICAgZmlyc3RXZWVrQ29udGFpbnNEYXRlOiA0XG4gKiB9KVxuICogLy89PiBTdW4gSmFuIDQgMjAwNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRXZWVrKGRpcnR5RGF0ZSwgZGlydHlXZWVrLCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgd2VlayA9IHRvSW50ZWdlcihkaXJ0eVdlZWspO1xuICB2YXIgZGlmZiA9IGdldFdlZWsoZGF0ZSwgb3B0aW9ucykgLSB3ZWVrO1xuICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgLSBkaWZmICogNyk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cy9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZXZWVrWWVhciBmcm9tIFwiLi4vc3RhcnRPZldlZWtZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZXRXZWVrWWVhclxuICogQGNhdGVnb3J5IFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgU2V0IHRoZSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU2V0IHRoZSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyIHRvIHRoZSBnaXZlbiBkYXRlLFxuICogc2F2aW5nIHRoZSB3ZWVrIG51bWJlciBhbmQgdGhlIHdlZWtkYXkgbnVtYmVyLlxuICogVGhlIGV4YWN0IGNhbGN1bGF0aW9uIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZlxuICogYG9wdGlvbnMud2Vla1N0YXJ0c09uYCAod2hpY2ggaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWspXG4gKiBhbmQgYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCAod2hpY2ggaXMgdGhlIGRheSBvZiBKYW51YXJ5LCB3aGljaCBpcyBhbHdheXMgaW5cbiAqIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB3ZWVrLW51bWJlcmluZyB5ZWFyKVxuICpcbiAqIFdlZWsgbnVtYmVyaW5nOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XZWVrI1dlZWtfbnVtYmVyaW5nXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSB3ZWVrWWVhciAtIHRoZSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyIG9mIHRoZSBuZXcgZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcGFyYW0gezF8MnwzfDR8NXw2fDd9IFtvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZT0xXSAtIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCB0aGUgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhciAyMDA0IHRvIDIgSmFudWFyeSAyMDEwIHdpdGggZGVmYXVsdCBvcHRpb25zOlxuICogY29uc3QgcmVzdWx0ID0gc2V0V2Vla1llYXIobmV3IERhdGUoMjAxMCwgMCwgMiksIDIwMDQpXG4gKiAvLz0+IFNhdCBKYW4gMDMgMjAwNCAwMDowMDowMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgdGhlIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgMjAwNCB0byAyIEphbnVhcnkgMjAxMCxcbiAqIC8vIGlmIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHdlZWtcbiAqIC8vIGFuZCA0IEphbnVhcnkgaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyOlxuICogY29uc3QgcmVzdWx0ID0gc2V0V2Vla1llYXIobmV3IERhdGUoMjAxMCwgMCwgMiksIDIwMDQsIHtcbiAqICAgd2Vla1N0YXJ0c09uOiAxLFxuICogICBmaXJzdFdlZWtDb250YWluc0RhdGU6IDRcbiAqIH0pXG4gKiAvLz0+IFNhdCBKYW4gMDEgMjAwNSAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRXZWVrWWVhcihkaXJ0eURhdGUsIGRpcnR5V2Vla1llYXIsIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9yZWYyLCBfcmVmMywgX29wdGlvbnMkZmlyc3RXZWVrQ29uLCBfb3B0aW9ucyRsb2NhbGUsIF9vcHRpb25zJGxvY2FsZSRvcHRpbywgX2RlZmF1bHRPcHRpb25zJGxvY2FsLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyO1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9IHRvSW50ZWdlcigoX3JlZiA9IChfcmVmMiA9IChfcmVmMyA9IChfb3B0aW9ucyRmaXJzdFdlZWtDb24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRmaXJzdFdlZWtDb24gIT09IHZvaWQgMCA/IF9vcHRpb25zJGZpcnN0V2Vla0NvbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPSBfb3B0aW9ucyRsb2NhbGUub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlJG9wdGlvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUkb3B0aW8uZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiBkZWZhdWx0T3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDAgPyBfcmVmMiA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsMi5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiAxKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHdlZWtZZWFyID0gdG9JbnRlZ2VyKGRpcnR5V2Vla1llYXIpO1xuICB2YXIgZGlmZiA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhkYXRlLCBzdGFydE9mV2Vla1llYXIoZGF0ZSwgb3B0aW9ucykpO1xuICB2YXIgZmlyc3RXZWVrID0gbmV3IERhdGUoMCk7XG4gIGZpcnN0V2Vlay5zZXRGdWxsWWVhcih3ZWVrWWVhciwgMCwgZmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgZmlyc3RXZWVrLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICBkYXRlID0gc3RhcnRPZldlZWtZZWFyKGZpcnN0V2Vlaywgb3B0aW9ucyk7XG4gIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIGRpZmYpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZXRZZWFyXG4gKiBAY2F0ZWdvcnkgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTZXQgdGhlIHllYXIgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZXQgdGhlIHllYXIgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSB5ZWFyIC0gdGhlIHllYXIgb2YgdGhlIG5ldyBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIHllYXIgc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCB5ZWFyIDIwMTMgdG8gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldFllYXIobmV3IERhdGUoMjAxNCwgOCwgMSksIDIwMTMpXG4gKiAvLz0+IFN1biBTZXAgMDEgMjAxMyAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRZZWFyKGRpcnR5RGF0ZSwgZGlydHlZZWFyKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgeWVhciA9IHRvSW50ZWdlcihkaXJ0eVllYXIpO1xuXG4gIC8vIENoZWNrIGlmIGRhdGUgaXMgSW52YWxpZCBEYXRlIGJlY2F1c2UgRGF0ZS5wcm90b3R5cGUuc2V0RnVsbFllYXIgaWdub3JlcyB0aGUgdmFsdWUgb2YgSW52YWxpZCBEYXRlXG4gIGlmIChpc05hTihkYXRlLmdldFRpbWUoKSkpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxuICBkYXRlLnNldEZ1bGxZZWFyKHllYXIpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZEYXlcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhIGRheSBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgZGF5IGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHN0YXJ0IG9mIGEgZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGEgZGF5IGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZkRheShuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89PiBUdWUgU2VwIDAyIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZkRheShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3RhcnRPZkRlY2FkZVxuICogQGNhdGVnb3J5IERlY2FkZSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgZGVjYWRlIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYSBkZWNhZGUgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBzdGFydCBvZiBhIGRlY2FkZVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhIGRlY2FkZSBmb3IgMjEgT2N0b2JlciAyMDE1IDAwOjAwOjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZkRlY2FkZShuZXcgRGF0ZSgyMDE1LCA5LCAyMSwgMDAsIDAwLCAwMCkpXG4gKiAvLz0+IEphbiAwMSAyMDEwIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZEZWNhZGUoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgdmFyIGRlY2FkZSA9IE1hdGguZmxvb3IoeWVhciAvIDEwKSAqIDEwO1xuICBkYXRlLnNldEZ1bGxZZWFyKGRlY2FkZSwgMCwgMSk7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3RhcnRPZkhvdXJcbiAqIEBjYXRlZ29yeSBIb3VyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgYW4gaG91ciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGFuIGhvdXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgc3RhcnQgb2YgYW4gaG91clxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhbiBob3VyIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZkhvdXIobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1KSlcbiAqIC8vPT4gVHVlIFNlcCAwMiAyMDE0IDExOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZIb3VyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgZGF0ZS5zZXRNaW51dGVzKDAsIDAsIDApO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgc3RhcnRPZldlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdGFydE9mSVNPV2Vla1xuICogQGNhdGVnb3J5IElTTyBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgYW4gSVNPIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiBhbiBJU08gd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgc3RhcnQgb2YgYW4gSVNPIHdlZWtcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYW4gSVNPIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mSVNPV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89PiBNb24gU2VwIDAxIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZklTT1dlZWsoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gc3RhcnRPZldlZWsoZGlydHlEYXRlLCB7XG4gICAgd2Vla1N0YXJ0c09uOiAxXG4gIH0pO1xufSIsImltcG9ydCBnZXRJU09XZWVrWWVhciBmcm9tIFwiLi4vZ2V0SVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mSVNPV2VlayBmcm9tIFwiLi4vc3RhcnRPZklTT1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZJU09XZWVrWWVhclxuICogQGNhdGVnb3J5IElTTyBXZWVrLU51bWJlcmluZyBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgYW4gSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiBhbiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcixcbiAqIHdoaWNoIGFsd2F5cyBzdGFydHMgMyBkYXlzIGJlZm9yZSB0aGUgeWVhcidzIGZpcnN0IFRodXJzZGF5LlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHN0YXJ0IG9mIGFuIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGFuIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyIGZvciAyIEp1bHkgMjAwNTpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZJU09XZWVrWWVhcihuZXcgRGF0ZSgyMDA1LCA2LCAyKSlcbiAqIC8vPT4gTW9uIEphbiAwMyAyMDA1IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZJU09XZWVrWWVhcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciB5ZWFyID0gZ2V0SVNPV2Vla1llYXIoZGlydHlEYXRlKTtcbiAgdmFyIGZvdXJ0aE9mSmFudWFyeSA9IG5ldyBEYXRlKDApO1xuICBmb3VydGhPZkphbnVhcnkuc2V0RnVsbFllYXIoeWVhciwgMCwgNCk7XG4gIGZvdXJ0aE9mSmFudWFyeS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgdmFyIGRhdGUgPSBzdGFydE9mSVNPV2Vlayhmb3VydGhPZkphbnVhcnkpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZNaW51dGVcbiAqIEBjYXRlZ29yeSBNaW51dGUgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhIG1pbnV0ZSBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgbWludXRlIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHN0YXJ0IG9mIGEgbWludXRlXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGEgbWludXRlIGZvciAxIERlY2VtYmVyIDIwMTQgMjI6MTU6NDUuNDAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZk1pbnV0ZShuZXcgRGF0ZSgyMDE0LCAxMSwgMSwgMjIsIDE1LCA0NSwgNDAwKSlcbiAqIC8vPT4gTW9uIERlYyAwMSAyMDE0IDIyOjE1OjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZNaW51dGUoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICBkYXRlLnNldFNlY29uZHMoMCwgMCk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3RhcnRPZk1vbnRoXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhIG1vbnRoIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYSBtb250aCBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBzdGFydCBvZiBhIG1vbnRoXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGEgbW9udGggZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mTW9udGgobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPT4gTW9uIFNlcCAwMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZNb250aChkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIGRhdGUuc2V0RGF0ZSgxKTtcbiAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdGFydE9mUXVhcnRlclxuICogQGNhdGVnb3J5IFF1YXJ0ZXIgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhIHllYXIgcXVhcnRlciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgeWVhciBxdWFydGVyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHN0YXJ0IG9mIGEgcXVhcnRlclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhIHF1YXJ0ZXIgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mUXVhcnRlcihuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89PiBUdWUgSnVsIDAxIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZlF1YXJ0ZXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgY3VycmVudE1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xuICB2YXIgbW9udGggPSBjdXJyZW50TW9udGggLSBjdXJyZW50TW9udGggJSAzO1xuICBkYXRlLnNldE1vbnRoKG1vbnRoLCAxKTtcbiAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdGFydE9mU2Vjb25kXG4gKiBAY2F0ZWdvcnkgU2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgYSBzZWNvbmQgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiBhIHNlY29uZCBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBzdGFydCBvZiBhIHNlY29uZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhIHNlY29uZCBmb3IgMSBEZWNlbWJlciAyMDE0IDIyOjE1OjQ1LjQwMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZTZWNvbmQobmV3IERhdGUoMjAxNCwgMTEsIDEsIDIyLCAxNSwgNDUsIDQwMCkpXG4gKiAvLz0+IE1vbiBEZWMgMDEgMjAxNCAyMjoxNTo0NS4wMDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZlNlY29uZChkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIGRhdGUuc2V0TWlsbGlzZWNvbmRzKDApO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgc3RhcnRPZkRheSBmcm9tIFwiLi4vc3RhcnRPZkRheS9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdGFydE9mVG9kYXlcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiB0b2RheS5cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIHRvZGF5LlxuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYERhdGUubm93KClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHN0YXJ0IG9mIHRvZGF5XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDYgT2N0b2JlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZlRvZGF5KClcbiAqIC8vPT4gTW9uIE9jdCA2IDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZlRvZGF5KCkge1xuICByZXR1cm4gc3RhcnRPZkRheShEYXRlLm5vdygpKTtcbn0iLCIvKipcbiAqIEBuYW1lIHN0YXJ0T2ZUb21vcnJvd1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIHRvbW9ycm93LlxuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgdG9tb3Jyb3cuXG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgbmV3IERhdGUoKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgc3RhcnQgb2YgdG9tb3Jyb3dcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgNiBPY3RvYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mVG9tb3Jyb3coKVxuICogLy89PiBUdWUgT2N0IDcgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mVG9tb3Jyb3coKSB7XG4gIHZhciBub3cgPSBuZXcgRGF0ZSgpO1xuICB2YXIgeWVhciA9IG5vdy5nZXRGdWxsWWVhcigpO1xuICB2YXIgbW9udGggPSBub3cuZ2V0TW9udGgoKTtcbiAgdmFyIGRheSA9IG5vdy5nZXREYXRlKCk7XG4gIHZhciBkYXRlID0gbmV3IERhdGUoMCk7XG4gIGRhdGUuc2V0RnVsbFllYXIoeWVhciwgbW9udGgsIGRheSArIDEpO1xuICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdGFydE9mV2Vla1xuICogQGNhdGVnb3J5IFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiBhIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHJldHVybnMge0RhdGV9IHRoZSBzdGFydCBvZiBhIHdlZWtcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYSB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZldlZWsobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPT4gU3VuIEF1ZyAzMSAyMDE0IDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRoZSB3ZWVrIHN0YXJ0cyBvbiBNb25kYXksIHRoZSBzdGFydCBvZiB0aGUgd2VlayBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZXZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCksIHsgd2Vla1N0YXJ0c09uOiAxIH0pXG4gKiAvLz0+IE1vbiBTZXAgMDEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mV2VlayhkaXJ0eURhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9yZWYyLCBfcmVmMywgX29wdGlvbnMkd2Vla1N0YXJ0c09uLCBfb3B0aW9ucyRsb2NhbGUsIF9vcHRpb25zJGxvY2FsZSRvcHRpbywgX2RlZmF1bHRPcHRpb25zJGxvY2FsLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyO1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIHdlZWtTdGFydHNPbiA9IHRvSW50ZWdlcigoX3JlZiA9IChfcmVmMiA9IChfcmVmMyA9IChfb3B0aW9ucyR3ZWVrU3RhcnRzT24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gIT09IHZvaWQgMCA/IF9vcHRpb25zJHdlZWtTdGFydHNPbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPSBfb3B0aW9ucyRsb2NhbGUub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlJG9wdGlvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUkb3B0aW8ud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiBkZWZhdWx0T3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDAgPyBfcmVmMiA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsMi53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiAwKTtcblxuICAvLyBUZXN0IGlmIHdlZWtTdGFydHNPbiBpcyBiZXR3ZWVuIDAgYW5kIDYgX2FuZF8gaXMgbm90IE5hTlxuICBpZiAoISh3ZWVrU3RhcnRzT24gPj0gMCAmJiB3ZWVrU3RhcnRzT24gPD0gNikpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignd2Vla1N0YXJ0c09uIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2IGluY2x1c2l2ZWx5Jyk7XG4gIH1cbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRheSA9IGRhdGUuZ2V0RGF5KCk7XG4gIHZhciBkaWZmID0gKGRheSA8IHdlZWtTdGFydHNPbiA/IDcgOiAwKSArIGRheSAtIHdlZWtTdGFydHNPbjtcbiAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpIC0gZGlmZik7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCBnZXRXZWVrWWVhciBmcm9tIFwiLi4vZ2V0V2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mV2VlayBmcm9tIFwiLi4vc3RhcnRPZldlZWsvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdGFydE9mV2Vla1llYXJcbiAqIEBjYXRlZ29yeSBXZWVrLU51bWJlcmluZyBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgYSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyLlxuICogVGhlIGV4YWN0IGNhbGN1bGF0aW9uIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZlxuICogYG9wdGlvbnMud2Vla1N0YXJ0c09uYCAod2hpY2ggaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWspXG4gKiBhbmQgYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCAod2hpY2ggaXMgdGhlIGRheSBvZiBKYW51YXJ5LCB3aGljaCBpcyBhbHdheXMgaW5cbiAqIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB3ZWVrLW51bWJlcmluZyB5ZWFyKVxuICpcbiAqIFdlZWsgbnVtYmVyaW5nOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XZWVrI1dlZWtfbnVtYmVyaW5nXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEBwYXJhbSB7MXwyfDN8NHw1fDZ8N30gW29wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlPTFdIC0gdGhlIGRheSBvZiBKYW51YXJ5LCB3aGljaCBpcyBhbHdheXMgaW4gdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXJcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgc3RhcnQgb2YgYSB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLndlZWtTdGFydHNPbmAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDZcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDdcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGFuIGEgd2Vlay1udW1iZXJpbmcgeWVhciBmb3IgMiBKdWx5IDIwMDUgd2l0aCBkZWZhdWx0IHNldHRpbmdzOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZldlZWtZZWFyKG5ldyBEYXRlKDIwMDUsIDYsIDIpKVxuICogLy89PiBTdW4gRGVjIDI2IDIwMDQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGEgd2Vlay1udW1iZXJpbmcgeWVhciBmb3IgMiBKdWx5IDIwMDVcbiAqIC8vIGlmIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHdlZWtcbiAqIC8vIGFuZCA0IEphbnVhcnkgaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZldlZWtZZWFyKG5ldyBEYXRlKDIwMDUsIDYsIDIpLCB7XG4gKiAgIHdlZWtTdGFydHNPbjogMSxcbiAqICAgZmlyc3RXZWVrQ29udGFpbnNEYXRlOiA0XG4gKiB9KVxuICogLy89PiBNb24gSmFuIDAzIDIwMDUgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZldlZWtZZWFyKGRpcnR5RGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX3JlZjIsIF9yZWYzLCBfb3B0aW9ucyRmaXJzdFdlZWtDb24sIF9vcHRpb25zJGxvY2FsZSwgX29wdGlvbnMkbG9jYWxlJG9wdGlvLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDI7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICB2YXIgZmlyc3RXZWVrQ29udGFpbnNEYXRlID0gdG9JbnRlZ2VyKChfcmVmID0gKF9yZWYyID0gKF9yZWYzID0gKF9vcHRpb25zJGZpcnN0V2Vla0NvbiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9vcHRpb25zJGZpcnN0V2Vla0NvbiAhPT0gdm9pZCAwID8gX29wdGlvbnMkZmlyc3RXZWVrQ29uIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9IF9vcHRpb25zJGxvY2FsZS5vcHRpb25zKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb25zJGxvY2FsZSRvcHRpby5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYzICE9PSB2b2lkIDAgPyBfcmVmMyA6IGRlZmF1bHRPcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZjIgIT09IHZvaWQgMCA/IF9yZWYyIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IDEpO1xuICB2YXIgeWVhciA9IGdldFdlZWtZZWFyKGRpcnR5RGF0ZSwgb3B0aW9ucyk7XG4gIHZhciBmaXJzdFdlZWsgPSBuZXcgRGF0ZSgwKTtcbiAgZmlyc3RXZWVrLnNldEZ1bGxZZWFyKHllYXIsIDAsIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSk7XG4gIGZpcnN0V2Vlay5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgdmFyIGRhdGUgPSBzdGFydE9mV2VlayhmaXJzdFdlZWssIG9wdGlvbnMpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZZZWFyXG4gKiBAY2F0ZWdvcnkgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgeWVhciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgeWVhciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBzdGFydCBvZiBhIHllYXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYSB5ZWFyIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZlllYXIobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwMCkpXG4gKiAvLz0+IFdlZCBKYW4gMDEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mWWVhcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBjbGVhbkRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgwKTtcbiAgZGF0ZS5zZXRGdWxsWWVhcihjbGVhbkRhdGUuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBkYXRlO1xufSIsIi8qKlxuICogQG5hbWUgc3RhcnRPZlllc3RlcmRheVxuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIHllc3RlcmRheS5cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIHllc3RlcmRheS5cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBuZXcgRGF0ZSgpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHJldHVybnMge0RhdGV9IHRoZSBzdGFydCBvZiB5ZXN0ZXJkYXlcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgNiBPY3RvYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mWWVzdGVyZGF5KClcbiAqIC8vPT4gU3VuIE9jdCA1IDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZlllc3RlcmRheSgpIHtcbiAgdmFyIG5vdyA9IG5ldyBEYXRlKCk7XG4gIHZhciB5ZWFyID0gbm93LmdldEZ1bGxZZWFyKCk7XG4gIHZhciBtb250aCA9IG5vdy5nZXRNb250aCgpO1xuICB2YXIgZGF5ID0gbm93LmdldERhdGUoKTtcbiAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgwKTtcbiAgZGF0ZS5zZXRGdWxsWWVhcih5ZWFyLCBtb250aCwgZGF5IC0gMSk7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2ZcIjtcbmltcG9ydCBzdWJEYXlzIGZyb20gXCIuLi9zdWJEYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgc3ViTW9udGhzIGZyb20gXCIuLi9zdWJNb250aHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdWJcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgU3VidHJhY3QgdGhlIHNwZWNpZmllZCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMgYW5kIHNlY29uZHMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMsIGhvdXJzLCBtaW51dGVzIGFuZCBzZWNvbmRzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7RHVyYXRpb259IGR1cmF0aW9uIC0gdGhlIG9iamVjdCB3aXRoIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3VycywgbWludXRlcyBhbmQgc2Vjb25kcyB0byBiZSBzdWJ0cmFjdGVkXG4gKlxuICogfCBLZXkgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgeWVhcnMgICB8IEFtb3VudCBvZiB5ZWFycyB0byBiZSBzdWJ0cmFjdGVkICAgfFxuICogfCBtb250aHMgIHwgQW1vdW50IG9mIG1vbnRocyB0byBiZSBzdWJ0cmFjdGVkICB8XG4gKiB8IHdlZWtzICAgfCBBbW91bnQgb2Ygd2Vla3MgdG8gYmUgc3VidHJhY3RlZCAgIHxcbiAqIHwgZGF5cyAgICB8IEFtb3VudCBvZiBkYXlzIHRvIGJlIHN1YnRyYWN0ZWQgICAgfFxuICogfCBob3VycyAgIHwgQW1vdW50IG9mIGhvdXJzIHRvIGJlIHN1YnRyYWN0ZWQgICB8XG4gKiB8IG1pbnV0ZXMgfCBBbW91bnQgb2YgbWludXRlcyB0byBiZSBzdWJ0cmFjdGVkIHxcbiAqIHwgc2Vjb25kcyB8IEFtb3VudCBvZiBzZWNvbmRzIHRvIGJlIHN1YnRyYWN0ZWQgfFxuICpcbiAqIEFsbCB2YWx1ZXMgZGVmYXVsdCB0byAwXG4gKlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBzZWNvbmRzIHN1YnRyYWN0ZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3VidHJhY3QgdGhlIGZvbGxvd2luZyBkdXJhdGlvbiBmcm9tIDE1IEp1bmUgMjAxNyAxNToyOToyMFxuICogY29uc3QgcmVzdWx0ID0gc3ViKG5ldyBEYXRlKDIwMTcsIDUsIDE1LCAxNSwgMjksIDIwKSwge1xuICogICB5ZWFyczogMixcbiAqICAgbW9udGhzOiA5LFxuICogICB3ZWVrczogMSxcbiAqICAgZGF5czogNyxcbiAqICAgaG91cnM6IDUsXG4gKiAgIG1pbnV0ZXM6IDksXG4gKiAgIHNlY29uZHM6IDMwXG4gKiB9KVxuICogLy89PiBNb24gU2VwIDEgMjAxNCAxMDoxOTo1MFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdWIoZGF0ZSwgZHVyYXRpb24pIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIGlmICghZHVyYXRpb24gfHwgX3R5cGVvZihkdXJhdGlvbikgIT09ICdvYmplY3QnKSByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgdmFyIHllYXJzID0gZHVyYXRpb24ueWVhcnMgPyB0b0ludGVnZXIoZHVyYXRpb24ueWVhcnMpIDogMDtcbiAgdmFyIG1vbnRocyA9IGR1cmF0aW9uLm1vbnRocyA/IHRvSW50ZWdlcihkdXJhdGlvbi5tb250aHMpIDogMDtcbiAgdmFyIHdlZWtzID0gZHVyYXRpb24ud2Vla3MgPyB0b0ludGVnZXIoZHVyYXRpb24ud2Vla3MpIDogMDtcbiAgdmFyIGRheXMgPSBkdXJhdGlvbi5kYXlzID8gdG9JbnRlZ2VyKGR1cmF0aW9uLmRheXMpIDogMDtcbiAgdmFyIGhvdXJzID0gZHVyYXRpb24uaG91cnMgPyB0b0ludGVnZXIoZHVyYXRpb24uaG91cnMpIDogMDtcbiAgdmFyIG1pbnV0ZXMgPSBkdXJhdGlvbi5taW51dGVzID8gdG9JbnRlZ2VyKGR1cmF0aW9uLm1pbnV0ZXMpIDogMDtcbiAgdmFyIHNlY29uZHMgPSBkdXJhdGlvbi5zZWNvbmRzID8gdG9JbnRlZ2VyKGR1cmF0aW9uLnNlY29uZHMpIDogMDtcblxuICAvLyBTdWJ0cmFjdCB5ZWFycyBhbmQgbW9udGhzXG4gIHZhciBkYXRlV2l0aG91dE1vbnRocyA9IHN1Yk1vbnRocyhkYXRlLCBtb250aHMgKyB5ZWFycyAqIDEyKTtcblxuICAvLyBTdWJ0cmFjdCB3ZWVrcyBhbmQgZGF5c1xuICB2YXIgZGF0ZVdpdGhvdXREYXlzID0gc3ViRGF5cyhkYXRlV2l0aG91dE1vbnRocywgZGF5cyArIHdlZWtzICogNyk7XG5cbiAgLy8gU3VidHJhY3QgaG91cnMsIG1pbnV0ZXMgYW5kIHNlY29uZHNcbiAgdmFyIG1pbnV0ZXN0b1N1YiA9IG1pbnV0ZXMgKyBob3VycyAqIDYwO1xuICB2YXIgc2Vjb25kc3RvU3ViID0gc2Vjb25kcyArIG1pbnV0ZXN0b1N1YiAqIDYwO1xuICB2YXIgbXN0b1N1YiA9IHNlY29uZHN0b1N1YiAqIDEwMDA7XG4gIHZhciBmaW5hbERhdGUgPSBuZXcgRGF0ZShkYXRlV2l0aG91dERheXMuZ2V0VGltZSgpIC0gbXN0b1N1Yik7XG4gIHJldHVybiBmaW5hbERhdGU7XG59IiwiaW1wb3J0IGFkZEJ1c2luZXNzRGF5cyBmcm9tIFwiLi4vYWRkQnVzaW5lc3NEYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3ViQnVzaW5lc3NEYXlzXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnN0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBidXNpbmVzcyBkYXlzIChtb24gLSBmcmkpIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU3Vic3RyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJ1c2luZXNzIGRheXMgKG1vbiAtIGZyaSkgdG8gdGhlIGdpdmVuIGRhdGUsIGlnbm9yaW5nIHdlZWtlbmRzLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiBidXNpbmVzcyBkYXlzIHRvIGJlIHN1YnRyYWN0ZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgYnVzaW5lc3MgZGF5cyBzdWJ0cmFjdGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN1YnN0cmFjdCAxMCBidXNpbmVzcyBkYXlzIGZyb20gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN1YkJ1c2luZXNzRGF5cyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgMTApXG4gKiAvLz0+IE1vbiBBdWcgMTggMjAxNCAwMDowMDowMCAoc2tpcHBlZCB3ZWVrZW5kIGRheXMpXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN1YkJ1c2luZXNzRGF5cyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIGFkZEJ1c2luZXNzRGF5cyhkaXJ0eURhdGUsIC1hbW91bnQpO1xufSIsImltcG9ydCBhZGREYXlzIGZyb20gXCIuLi9hZGREYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3ViRGF5c1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIGRheXMgdG8gYmUgc3VidHJhY3RlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBkYXlzIHN1YnRyYWN0ZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3VidHJhY3QgMTAgZGF5cyBmcm9tIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBzdWJEYXlzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCAxMClcbiAqIC8vPT4gRnJpIEF1ZyAyMiAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN1YkRheXMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIHJldHVybiBhZGREYXlzKGRpcnR5RGF0ZSwgLWFtb3VudCk7XG59IiwiaW1wb3J0IGFkZEhvdXJzIGZyb20gXCIuLi9hZGRIb3Vycy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN1YkhvdXJzXG4gKiBAY2F0ZWdvcnkgSG91ciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBob3VycyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgaG91cnMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2YgaG91cnMgdG8gYmUgc3VidHJhY3RlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBob3VycyBzdWJ0cmFjdGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN1YnRyYWN0IDIgaG91cnMgZnJvbSAxMSBKdWx5IDIwMTQgMDE6MDA6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdWJIb3VycyhuZXcgRGF0ZSgyMDE0LCA2LCAxMSwgMSwgMCksIDIpXG4gKiAvLz0+IFRodSBKdWwgMTAgMjAxNCAyMzowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdWJIb3VycyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIGFkZEhvdXJzKGRpcnR5RGF0ZSwgLWFtb3VudCk7XG59IiwiaW1wb3J0IGFkZElTT1dlZWtZZWFycyBmcm9tIFwiLi4vYWRkSVNPV2Vla1llYXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3ViSVNPV2Vla1llYXJzXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFycyB0byBiZSBzdWJ0cmFjdGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFycyBzdWJ0cmFjdGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN1YnRyYWN0IDUgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIGZyb20gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN1YklTT1dlZWtZZWFycyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgNSlcbiAqIC8vPT4gTW9uIEF1ZyAzMSAyMDA5IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN1YklTT1dlZWtZZWFycyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIGFkZElTT1dlZWtZZWFycyhkaXJ0eURhdGUsIC1hbW91bnQpO1xufSIsImltcG9ydCBhZGRNaWxsaXNlY29uZHMgZnJvbSBcIi4uL2FkZE1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN1Yk1pbGxpc2Vjb25kc1xuICogQGNhdGVnb3J5IE1pbGxpc2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIG1pbGxpc2Vjb25kcyB0byBiZSBzdWJ0cmFjdGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIG1pbGxpc2Vjb25kcyBzdWJ0cmFjdGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN1YnRyYWN0IDc1MCBtaWxsaXNlY29uZHMgZnJvbSAxMCBKdWx5IDIwMTQgMTI6NDU6MzAuMDAwOlxuICogY29uc3QgcmVzdWx0ID0gc3ViTWlsbGlzZWNvbmRzKG5ldyBEYXRlKDIwMTQsIDYsIDEwLCAxMiwgNDUsIDMwLCAwKSwgNzUwKVxuICogLy89PiBUaHUgSnVsIDEwIDIwMTQgMTI6NDU6MjkuMjUwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN1Yk1pbGxpc2Vjb25kcyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIGFkZE1pbGxpc2Vjb25kcyhkaXJ0eURhdGUsIC1hbW91bnQpO1xufSIsImltcG9ydCBhZGRNaW51dGVzIGZyb20gXCIuLi9hZGRNaW51dGVzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3ViTWludXRlc1xuICogQGNhdGVnb3J5IE1pbnV0ZSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaW51dGVzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaW51dGVzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIG1pbnV0ZXMgdG8gYmUgc3VidHJhY3RlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBtaW51dGVzIHN1YnRyYWN0ZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3VidHJhY3QgMzAgbWludXRlcyBmcm9tIDEwIEp1bHkgMjAxNCAxMjowMDowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN1Yk1pbnV0ZXMobmV3IERhdGUoMjAxNCwgNiwgMTAsIDEyLCAwKSwgMzApXG4gKiAvLz0+IFRodSBKdWwgMTAgMjAxNCAxMTozMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdWJNaW51dGVzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gYWRkTWludXRlcyhkaXJ0eURhdGUsIC1hbW91bnQpO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkTW9udGhzIGZyb20gXCIuLi9hZGRNb250aHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN1Yk1vbnRoc1xuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1vbnRocyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbW9udGhzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIG1vbnRocyB0byBiZSBzdWJ0cmFjdGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIG1vbnRocyBzdWJ0cmFjdGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN1YnRyYWN0IDUgbW9udGhzIGZyb20gMSBGZWJydWFyeSAyMDE1OlxuICogY29uc3QgcmVzdWx0ID0gc3ViTW9udGhzKG5ldyBEYXRlKDIwMTUsIDEsIDEpLCA1KVxuICogLy89PiBNb24gU2VwIDAxIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3ViTW9udGhzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gYWRkTW9udGhzKGRpcnR5RGF0ZSwgLWFtb3VudCk7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCBhZGRRdWFydGVycyBmcm9tIFwiLi4vYWRkUXVhcnRlcnMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN1YlF1YXJ0ZXJzXG4gKiBAY2F0ZWdvcnkgUXVhcnRlciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB5ZWFyIHF1YXJ0ZXJzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB5ZWFyIHF1YXJ0ZXJzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIHF1YXJ0ZXJzIHRvIGJlIHN1YnRyYWN0ZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgcXVhcnRlcnMgc3VidHJhY3RlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdWJ0cmFjdCAzIHF1YXJ0ZXJzIGZyb20gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN1YlF1YXJ0ZXJzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCAzKVxuICogLy89PiBTdW4gRGVjIDAxIDIwMTMgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3ViUXVhcnRlcnMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIHJldHVybiBhZGRRdWFydGVycyhkaXJ0eURhdGUsIC1hbW91bnQpO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkU2Vjb25kcyBmcm9tIFwiLi4vYWRkU2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3ViU2Vjb25kc1xuICogQGNhdGVnb3J5IFNlY29uZCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBzZWNvbmRzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBzZWNvbmRzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIHNlY29uZHMgdG8gYmUgc3VidHJhY3RlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBzZWNvbmRzIHN1YnRyYWN0ZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3VidHJhY3QgMzAgc2Vjb25kcyBmcm9tIDEwIEp1bHkgMjAxNCAxMjo0NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN1YlNlY29uZHMobmV3IERhdGUoMjAxNCwgNiwgMTAsIDEyLCA0NSwgMCksIDMwKVxuICogLy89PiBUaHUgSnVsIDEwIDIwMTQgMTI6NDQ6MzBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3ViU2Vjb25kcyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIGFkZFNlY29uZHMoZGlydHlEYXRlLCAtYW1vdW50KTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IGFkZFdlZWtzIGZyb20gXCIuLi9hZGRXZWVrcy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3ViV2Vla3NcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHdlZWtzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB3ZWVrcyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiB3ZWVrcyB0byBiZSBzdWJ0cmFjdGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIHdlZWtzIHN1YnRyYWN0ZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3VidHJhY3QgNCB3ZWVrcyBmcm9tIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBzdWJXZWVrcyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgNClcbiAqIC8vPT4gTW9uIEF1ZyAwNCAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN1YldlZWtzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gYWRkV2Vla3MoZGlydHlEYXRlLCAtYW1vdW50KTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IGFkZFllYXJzIGZyb20gXCIuLi9hZGRZZWFycy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3ViWWVhcnNcbiAqIEBjYXRlZ29yeSBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHllYXJzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB5ZWFycyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiB5ZWFycyB0byBiZSBzdWJ0cmFjdGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIHllYXJzIHN1YnRyYWN0ZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3VidHJhY3QgNSB5ZWFycyBmcm9tIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBzdWJZZWFycyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgNSlcbiAqIC8vPT4gVHVlIFNlcCAwMSAyMDA5IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN1YlllYXJzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gYWRkWWVhcnMoZGlydHlEYXRlLCAtYW1vdW50KTtcbn0iLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIG5vbmUgb2YgdGhlIGFib3ZlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gYXJndW1lbnQgLSB0aGUgdmFsdWUgdG8gY29udmVydFxuICogQHJldHVybnMge0RhdGV9IHRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2xvbmUgdGhlIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUobmV3IERhdGUoMjAxNCwgMSwgMTEsIDExLCAzMCwgMzApKVxuICogLy89PiBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPT4gVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGFyZ1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCk7XG5cbiAgLy8gQ2xvbmUgdGhlIGRhdGVcbiAgaWYgKGFyZ3VtZW50IGluc3RhbmNlb2YgRGF0ZSB8fCBfdHlwZW9mKGFyZ3VtZW50KSA9PT0gJ29iamVjdCcgJiYgYXJnU3RyID09PSAnW29iamVjdCBEYXRlXScpIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQuZ2V0VGltZSgpKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgYXJndW1lbnQgPT09ICdudW1iZXInIHx8IGFyZ1N0ciA9PT0gJ1tvYmplY3QgTnVtYmVyXScpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIGlmICgodHlwZW9mIGFyZ3VtZW50ID09PSAnc3RyaW5nJyB8fCBhcmdTdHIgPT09ICdbb2JqZWN0IFN0cmluZ10nKSAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLndhcm4oXCJTdGFydGluZyB3aXRoIHYyLjAuMC1iZXRhLjEgZGF0ZS1mbnMgZG9lc24ndCBhY2NlcHQgc3RyaW5ncyBhcyBkYXRlIGFyZ3VtZW50cy4gUGxlYXNlIHVzZSBgcGFyc2VJU09gIHRvIHBhcnNlIHN0cmluZ3MuIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdXBncmFkZUd1aWRlLm1kI3N0cmluZy1hcmd1bWVudHNcIik7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKG5ldyBFcnJvcigpLnN0YWNrKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZGF5c0luV2VlayB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgd2Vla3NUb0RheXNcbiAqIEBjYXRlZ29yeSBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgd2Vla3MgdG8gZGF5cy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2Ygd2Vla3MgdG8gYSBmdWxsIG51bWJlciBvZiBkYXlzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSB3ZWVrcyAtIG51bWJlciBvZiB3ZWVrcyB0byBiZSBjb252ZXJ0ZWRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIHdlZWtzIGNvbnZlcnRlZCBpbiBkYXlzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCAyIHdlZWtzIGludG8gZGF5c1xuICogY29uc3QgcmVzdWx0ID0gd2Vla3NUb0RheXMoMilcbiAqIC8vPT4gMTRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gd2Vla3NUb0RheXMod2Vla3MpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBNYXRoLmZsb29yKHdlZWtzICogZGF5c0luV2Vlayk7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IG1vbnRoc0luWWVhciB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgeWVhcnNUb01vbnRoc1xuICogQGNhdGVnb3J5IENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB5ZWFycyB0byBtb250aHMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHllYXJzIHRvIGEgZnVsbCBudW1iZXIgb2YgbW9udGhzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSB5ZWFycyAtIG51bWJlciBvZiB5ZWFycyB0byBiZSBjb252ZXJ0ZWRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIHllYXJzIGNvbnZlcnRlZCBpbiBtb250aHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDIgeWVhcnMgaW50byBtb250aHNcbiAqIGNvbnN0IHJlc3VsdCA9IHllYXJzVG9Nb250aHMoMilcbiAqIC8vPT4gMjRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24geWVhcnNUb01vbnRocyh5ZWFycykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIE1hdGguZmxvb3IoeWVhcnMgKiBtb250aHNJblllYXIpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBxdWFydGVyc0luWWVhciB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgeWVhcnNUb1F1YXJ0ZXJzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHllYXJzIHRvIHF1YXJ0ZXJzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiB5ZWFycyB0byBhIGZ1bGwgbnVtYmVyIG9mIHF1YXJ0ZXJzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSB5ZWFycyAtIG51bWJlciBvZiB5ZWFycyB0byBiZSBjb252ZXJ0ZWRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIHllYXJzIGNvbnZlcnRlZCBpbiBxdWFydGVyc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgMiB5ZWFycyB0byBxdWFydGVyc1xuICogY29uc3QgcmVzdWx0ID0geWVhcnNUb1F1YXJ0ZXJzKDIpXG4gKiAvLz0+IDhcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24geWVhcnNUb1F1YXJ0ZXJzKHllYXJzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gTWF0aC5mbG9vcih5ZWFycyAqIHF1YXJ0ZXJzSW5ZZWFyKTtcbn0iLCIvKiFcbiAqIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkgdjMuNi4xXG4gKiBodHRwczovL2pxdWVyeS5jb20vXG4gKlxuICogSW5jbHVkZXMgU2l6emxlLmpzXG4gKiBodHRwczovL3NpenpsZWpzLmNvbS9cbiAqXG4gKiBDb3B5cmlnaHQgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlXG4gKiBodHRwczovL2pxdWVyeS5vcmcvbGljZW5zZVxuICpcbiAqIERhdGU6IDIwMjItMDgtMjZUMTc6NTJaXG4gKi9cbiggZnVuY3Rpb24oIGdsb2JhbCwgZmFjdG9yeSApIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHRpZiAoIHR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG1vZHVsZS5leHBvcnRzID09PSBcIm9iamVjdFwiICkge1xuXG5cdFx0Ly8gRm9yIENvbW1vbkpTIGFuZCBDb21tb25KUy1saWtlIGVudmlyb25tZW50cyB3aGVyZSBhIHByb3BlciBgd2luZG93YFxuXHRcdC8vIGlzIHByZXNlbnQsIGV4ZWN1dGUgdGhlIGZhY3RvcnkgYW5kIGdldCBqUXVlcnkuXG5cdFx0Ly8gRm9yIGVudmlyb25tZW50cyB0aGF0IGRvIG5vdCBoYXZlIGEgYHdpbmRvd2Agd2l0aCBhIGBkb2N1bWVudGBcblx0XHQvLyAoc3VjaCBhcyBOb2RlLmpzKSwgZXhwb3NlIGEgZmFjdG9yeSBhcyBtb2R1bGUuZXhwb3J0cy5cblx0XHQvLyBUaGlzIGFjY2VudHVhdGVzIHRoZSBuZWVkIGZvciB0aGUgY3JlYXRpb24gb2YgYSByZWFsIGB3aW5kb3dgLlxuXHRcdC8vIGUuZy4gdmFyIGpRdWVyeSA9IHJlcXVpcmUoXCJqcXVlcnlcIikod2luZG93KTtcblx0XHQvLyBTZWUgdGlja2V0IHRyYWMtMTQ1NDkgZm9yIG1vcmUgaW5mby5cblx0XHRtb2R1bGUuZXhwb3J0cyA9IGdsb2JhbC5kb2N1bWVudCA/XG5cdFx0XHRmYWN0b3J5KCBnbG9iYWwsIHRydWUgKSA6XG5cdFx0XHRmdW5jdGlvbiggdyApIHtcblx0XHRcdFx0aWYgKCAhdy5kb2N1bWVudCApIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoIFwialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudFwiICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGZhY3RvcnkoIHcgKTtcblx0XHRcdH07XG5cdH0gZWxzZSB7XG5cdFx0ZmFjdG9yeSggZ2xvYmFsICk7XG5cdH1cblxuLy8gUGFzcyB0aGlzIGlmIHdpbmRvdyBpcyBub3QgZGVmaW5lZCB5ZXRcbn0gKSggdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHRoaXMsIGZ1bmN0aW9uKCB3aW5kb3csIG5vR2xvYmFsICkge1xuXG4vLyBFZGdlIDw9IDEyIC0gMTMrLCBGaXJlZm94IDw9MTggLSA0NSssIElFIDEwIC0gMTEsIFNhZmFyaSA1LjEgLSA5KywgaU9TIDYgLSA5LjFcbi8vIHRocm93IGV4Y2VwdGlvbnMgd2hlbiBub24tc3RyaWN0IGNvZGUgKGUuZy4sIEFTUC5ORVQgNC41KSBhY2Nlc3NlcyBzdHJpY3QgbW9kZVxuLy8gYXJndW1lbnRzLmNhbGxlZS5jYWxsZXIgKHRyYWMtMTMzMzUpLiBCdXQgYXMgb2YgalF1ZXJ5IDMuMCAoMjAxNiksIHN0cmljdCBtb2RlIHNob3VsZCBiZSBjb21tb25cbi8vIGVub3VnaCB0aGF0IGFsbCBzdWNoIGF0dGVtcHRzIGFyZSBndWFyZGVkIGluIGEgdHJ5IGJsb2NrLlxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBhcnIgPSBbXTtcblxudmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuXG52YXIgc2xpY2UgPSBhcnIuc2xpY2U7XG5cbnZhciBmbGF0ID0gYXJyLmZsYXQgPyBmdW5jdGlvbiggYXJyYXkgKSB7XG5cdHJldHVybiBhcnIuZmxhdC5jYWxsKCBhcnJheSApO1xufSA6IGZ1bmN0aW9uKCBhcnJheSApIHtcblx0cmV0dXJuIGFyci5jb25jYXQuYXBwbHkoIFtdLCBhcnJheSApO1xufTtcblxuXG52YXIgcHVzaCA9IGFyci5wdXNoO1xuXG52YXIgaW5kZXhPZiA9IGFyci5pbmRleE9mO1xuXG52YXIgY2xhc3MydHlwZSA9IHt9O1xuXG52YXIgdG9TdHJpbmcgPSBjbGFzczJ0eXBlLnRvU3RyaW5nO1xuXG52YXIgaGFzT3duID0gY2xhc3MydHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxudmFyIGZuVG9TdHJpbmcgPSBoYXNPd24udG9TdHJpbmc7XG5cbnZhciBPYmplY3RGdW5jdGlvblN0cmluZyA9IGZuVG9TdHJpbmcuY2FsbCggT2JqZWN0ICk7XG5cbnZhciBzdXBwb3J0ID0ge307XG5cbnZhciBpc0Z1bmN0aW9uID0gZnVuY3Rpb24gaXNGdW5jdGlvbiggb2JqICkge1xuXG5cdFx0Ly8gU3VwcG9ydDogQ2hyb21lIDw9NTcsIEZpcmVmb3ggPD01MlxuXHRcdC8vIEluIHNvbWUgYnJvd3NlcnMsIHR5cGVvZiByZXR1cm5zIFwiZnVuY3Rpb25cIiBmb3IgSFRNTCA8b2JqZWN0PiBlbGVtZW50c1xuXHRcdC8vIChpLmUuLCBgdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwib2JqZWN0XCIgKSA9PT0gXCJmdW5jdGlvblwiYCkuXG5cdFx0Ly8gV2UgZG9uJ3Qgd2FudCB0byBjbGFzc2lmeSAqYW55KiBET00gbm9kZSBhcyBhIGZ1bmN0aW9uLlxuXHRcdC8vIFN1cHBvcnQ6IFF0V2ViIDw9My44LjUsIFdlYktpdCA8PTUzNC4zNCwgd2todG1sdG9wZGYgdG9vbCA8PTAuMTIuNVxuXHRcdC8vIFBsdXMgZm9yIG9sZCBXZWJLaXQsIHR5cGVvZiByZXR1cm5zIFwiZnVuY3Rpb25cIiBmb3IgSFRNTCBjb2xsZWN0aW9uc1xuXHRcdC8vIChlLmcuLCBgdHlwZW9mIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiZGl2XCIpID09PSBcImZ1bmN0aW9uXCJgKS4gKGdoLTQ3NTYpXG5cdFx0cmV0dXJuIHR5cGVvZiBvYmogPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2Ygb2JqLm5vZGVUeXBlICE9PSBcIm51bWJlclwiICYmXG5cdFx0XHR0eXBlb2Ygb2JqLml0ZW0gIT09IFwiZnVuY3Rpb25cIjtcblx0fTtcblxuXG52YXIgaXNXaW5kb3cgPSBmdW5jdGlvbiBpc1dpbmRvdyggb2JqICkge1xuXHRcdHJldHVybiBvYmogIT0gbnVsbCAmJiBvYmogPT09IG9iai53aW5kb3c7XG5cdH07XG5cblxudmFyIGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50O1xuXG5cblxuXHR2YXIgcHJlc2VydmVkU2NyaXB0QXR0cmlidXRlcyA9IHtcblx0XHR0eXBlOiB0cnVlLFxuXHRcdHNyYzogdHJ1ZSxcblx0XHRub25jZTogdHJ1ZSxcblx0XHRub01vZHVsZTogdHJ1ZVxuXHR9O1xuXG5cdGZ1bmN0aW9uIERPTUV2YWwoIGNvZGUsIG5vZGUsIGRvYyApIHtcblx0XHRkb2MgPSBkb2MgfHwgZG9jdW1lbnQ7XG5cblx0XHR2YXIgaSwgdmFsLFxuXHRcdFx0c2NyaXB0ID0gZG9jLmNyZWF0ZUVsZW1lbnQoIFwic2NyaXB0XCIgKTtcblxuXHRcdHNjcmlwdC50ZXh0ID0gY29kZTtcblx0XHRpZiAoIG5vZGUgKSB7XG5cdFx0XHRmb3IgKCBpIGluIHByZXNlcnZlZFNjcmlwdEF0dHJpYnV0ZXMgKSB7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogRmlyZWZveCA2NCssIEVkZ2UgMTgrXG5cdFx0XHRcdC8vIFNvbWUgYnJvd3NlcnMgZG9uJ3Qgc3VwcG9ydCB0aGUgXCJub25jZVwiIHByb3BlcnR5IG9uIHNjcmlwdHMuXG5cdFx0XHRcdC8vIE9uIHRoZSBvdGhlciBoYW5kLCBqdXN0IHVzaW5nIGBnZXRBdHRyaWJ1dGVgIGlzIG5vdCBlbm91Z2ggYXNcblx0XHRcdFx0Ly8gdGhlIGBub25jZWAgYXR0cmlidXRlIGlzIHJlc2V0IHRvIGFuIGVtcHR5IHN0cmluZyB3aGVuZXZlciBpdFxuXHRcdFx0XHQvLyBiZWNvbWVzIGJyb3dzaW5nLWNvbnRleHQgY29ubmVjdGVkLlxuXHRcdFx0XHQvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9odG1sL2lzc3Vlcy8yMzY5XG5cdFx0XHRcdC8vIFNlZSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNub25jZS1hdHRyaWJ1dGVzXG5cdFx0XHRcdC8vIFRoZSBgbm9kZS5nZXRBdHRyaWJ1dGVgIGNoZWNrIHdhcyBhZGRlZCBmb3IgdGhlIHNha2Ugb2Zcblx0XHRcdFx0Ly8gYGpRdWVyeS5nbG9iYWxFdmFsYCBzbyB0aGF0IGl0IGNhbiBmYWtlIGEgbm9uY2UtY29udGFpbmluZyBub2RlXG5cdFx0XHRcdC8vIHZpYSBhbiBvYmplY3QuXG5cdFx0XHRcdHZhbCA9IG5vZGVbIGkgXSB8fCBub2RlLmdldEF0dHJpYnV0ZSAmJiBub2RlLmdldEF0dHJpYnV0ZSggaSApO1xuXHRcdFx0XHRpZiAoIHZhbCApIHtcblx0XHRcdFx0XHRzY3JpcHQuc2V0QXR0cmlidXRlKCBpLCB2YWwgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRkb2MuaGVhZC5hcHBlbmRDaGlsZCggc2NyaXB0ICkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggc2NyaXB0ICk7XG5cdH1cblxuXG5mdW5jdGlvbiB0b1R5cGUoIG9iaiApIHtcblx0aWYgKCBvYmogPT0gbnVsbCApIHtcblx0XHRyZXR1cm4gb2JqICsgXCJcIjtcblx0fVxuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD0yLjMgb25seSAoZnVuY3Rpb25pc2ggUmVnRXhwKVxuXHRyZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2Ygb2JqID09PSBcImZ1bmN0aW9uXCIgP1xuXHRcdGNsYXNzMnR5cGVbIHRvU3RyaW5nLmNhbGwoIG9iaiApIF0gfHwgXCJvYmplY3RcIiA6XG5cdFx0dHlwZW9mIG9iajtcbn1cbi8qIGdsb2JhbCBTeW1ib2wgKi9cbi8vIERlZmluaW5nIHRoaXMgZ2xvYmFsIGluIC5lc2xpbnRyYy5qc29uIHdvdWxkIGNyZWF0ZSBhIGRhbmdlciBvZiB1c2luZyB0aGUgZ2xvYmFsXG4vLyB1bmd1YXJkZWQgaW4gYW5vdGhlciBwbGFjZSwgaXQgc2VlbXMgc2FmZXIgdG8gZGVmaW5lIGdsb2JhbCBvbmx5IGZvciB0aGlzIG1vZHVsZVxuXG5cblxudmFyXG5cdHZlcnNpb24gPSBcIjMuNi4xXCIsXG5cblx0Ly8gRGVmaW5lIGEgbG9jYWwgY29weSBvZiBqUXVlcnlcblx0alF1ZXJ5ID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0ICkge1xuXG5cdFx0Ly8gVGhlIGpRdWVyeSBvYmplY3QgaXMgYWN0dWFsbHkganVzdCB0aGUgaW5pdCBjb25zdHJ1Y3RvciAnZW5oYW5jZWQnXG5cdFx0Ly8gTmVlZCBpbml0IGlmIGpRdWVyeSBpcyBjYWxsZWQgKGp1c3QgYWxsb3cgZXJyb3IgdG8gYmUgdGhyb3duIGlmIG5vdCBpbmNsdWRlZClcblx0XHRyZXR1cm4gbmV3IGpRdWVyeS5mbi5pbml0KCBzZWxlY3RvciwgY29udGV4dCApO1xuXHR9O1xuXG5qUXVlcnkuZm4gPSBqUXVlcnkucHJvdG90eXBlID0ge1xuXG5cdC8vIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgalF1ZXJ5IGJlaW5nIHVzZWRcblx0anF1ZXJ5OiB2ZXJzaW9uLFxuXG5cdGNvbnN0cnVjdG9yOiBqUXVlcnksXG5cblx0Ly8gVGhlIGRlZmF1bHQgbGVuZ3RoIG9mIGEgalF1ZXJ5IG9iamVjdCBpcyAwXG5cdGxlbmd0aDogMCxcblxuXHR0b0FycmF5OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gc2xpY2UuY2FsbCggdGhpcyApO1xuXHR9LFxuXG5cdC8vIEdldCB0aGUgTnRoIGVsZW1lbnQgaW4gdGhlIG1hdGNoZWQgZWxlbWVudCBzZXQgT1Jcblx0Ly8gR2V0IHRoZSB3aG9sZSBtYXRjaGVkIGVsZW1lbnQgc2V0IGFzIGEgY2xlYW4gYXJyYXlcblx0Z2V0OiBmdW5jdGlvbiggbnVtICkge1xuXG5cdFx0Ly8gUmV0dXJuIGFsbCB0aGUgZWxlbWVudHMgaW4gYSBjbGVhbiBhcnJheVxuXHRcdGlmICggbnVtID09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gc2xpY2UuY2FsbCggdGhpcyApO1xuXHRcdH1cblxuXHRcdC8vIFJldHVybiBqdXN0IHRoZSBvbmUgZWxlbWVudCBmcm9tIHRoZSBzZXRcblx0XHRyZXR1cm4gbnVtIDwgMCA/IHRoaXNbIG51bSArIHRoaXMubGVuZ3RoIF0gOiB0aGlzWyBudW0gXTtcblx0fSxcblxuXHQvLyBUYWtlIGFuIGFycmF5IG9mIGVsZW1lbnRzIGFuZCBwdXNoIGl0IG9udG8gdGhlIHN0YWNrXG5cdC8vIChyZXR1cm5pbmcgdGhlIG5ldyBtYXRjaGVkIGVsZW1lbnQgc2V0KVxuXHRwdXNoU3RhY2s6IGZ1bmN0aW9uKCBlbGVtcyApIHtcblxuXHRcdC8vIEJ1aWxkIGEgbmV3IGpRdWVyeSBtYXRjaGVkIGVsZW1lbnQgc2V0XG5cdFx0dmFyIHJldCA9IGpRdWVyeS5tZXJnZSggdGhpcy5jb25zdHJ1Y3RvcigpLCBlbGVtcyApO1xuXG5cdFx0Ly8gQWRkIHRoZSBvbGQgb2JqZWN0IG9udG8gdGhlIHN0YWNrIChhcyBhIHJlZmVyZW5jZSlcblx0XHRyZXQucHJldk9iamVjdCA9IHRoaXM7XG5cblx0XHQvLyBSZXR1cm4gdGhlIG5ld2x5LWZvcm1lZCBlbGVtZW50IHNldFxuXHRcdHJldHVybiByZXQ7XG5cdH0sXG5cblx0Ly8gRXhlY3V0ZSBhIGNhbGxiYWNrIGZvciBldmVyeSBlbGVtZW50IGluIHRoZSBtYXRjaGVkIHNldC5cblx0ZWFjaDogZnVuY3Rpb24oIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBqUXVlcnkuZWFjaCggdGhpcywgY2FsbGJhY2sgKTtcblx0fSxcblxuXHRtYXA6IGZ1bmN0aW9uKCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGpRdWVyeS5tYXAoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBpICkge1xuXHRcdFx0cmV0dXJuIGNhbGxiYWNrLmNhbGwoIGVsZW0sIGksIGVsZW0gKTtcblx0XHR9ICkgKTtcblx0fSxcblxuXHRzbGljZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBzbGljZS5hcHBseSggdGhpcywgYXJndW1lbnRzICkgKTtcblx0fSxcblxuXHRmaXJzdDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuZXEoIDAgKTtcblx0fSxcblxuXHRsYXN0OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5lcSggLTEgKTtcblx0fSxcblxuXHRldmVuOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGpRdWVyeS5ncmVwKCB0aGlzLCBmdW5jdGlvbiggX2VsZW0sIGkgKSB7XG5cdFx0XHRyZXR1cm4gKCBpICsgMSApICUgMjtcblx0XHR9ICkgKTtcblx0fSxcblxuXHRvZGQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggalF1ZXJ5LmdyZXAoIHRoaXMsIGZ1bmN0aW9uKCBfZWxlbSwgaSApIHtcblx0XHRcdHJldHVybiBpICUgMjtcblx0XHR9ICkgKTtcblx0fSxcblxuXHRlcTogZnVuY3Rpb24oIGkgKSB7XG5cdFx0dmFyIGxlbiA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0aiA9ICtpICsgKCBpIDwgMCA/IGxlbiA6IDAgKTtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGogPj0gMCAmJiBqIDwgbGVuID8gWyB0aGlzWyBqIF0gXSA6IFtdICk7XG5cdH0sXG5cblx0ZW5kOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5wcmV2T2JqZWN0IHx8IHRoaXMuY29uc3RydWN0b3IoKTtcblx0fSxcblxuXHQvLyBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuXG5cdC8vIEJlaGF2ZXMgbGlrZSBhbiBBcnJheSdzIG1ldGhvZCwgbm90IGxpa2UgYSBqUXVlcnkgbWV0aG9kLlxuXHRwdXNoOiBwdXNoLFxuXHRzb3J0OiBhcnIuc29ydCxcblx0c3BsaWNlOiBhcnIuc3BsaWNlXG59O1xuXG5qUXVlcnkuZXh0ZW5kID0galF1ZXJ5LmZuLmV4dGVuZCA9IGZ1bmN0aW9uKCkge1xuXHR2YXIgb3B0aW9ucywgbmFtZSwgc3JjLCBjb3B5LCBjb3B5SXNBcnJheSwgY2xvbmUsXG5cdFx0dGFyZ2V0ID0gYXJndW1lbnRzWyAwIF0gfHwge30sXG5cdFx0aSA9IDEsXG5cdFx0bGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCxcblx0XHRkZWVwID0gZmFsc2U7XG5cblx0Ly8gSGFuZGxlIGEgZGVlcCBjb3B5IHNpdHVhdGlvblxuXHRpZiAoIHR5cGVvZiB0YXJnZXQgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdGRlZXAgPSB0YXJnZXQ7XG5cblx0XHQvLyBTa2lwIHRoZSBib29sZWFuIGFuZCB0aGUgdGFyZ2V0XG5cdFx0dGFyZ2V0ID0gYXJndW1lbnRzWyBpIF0gfHwge307XG5cdFx0aSsrO1xuXHR9XG5cblx0Ly8gSGFuZGxlIGNhc2Ugd2hlbiB0YXJnZXQgaXMgYSBzdHJpbmcgb3Igc29tZXRoaW5nIChwb3NzaWJsZSBpbiBkZWVwIGNvcHkpXG5cdGlmICggdHlwZW9mIHRhcmdldCAhPT0gXCJvYmplY3RcIiAmJiAhaXNGdW5jdGlvbiggdGFyZ2V0ICkgKSB7XG5cdFx0dGFyZ2V0ID0ge307XG5cdH1cblxuXHQvLyBFeHRlbmQgalF1ZXJ5IGl0c2VsZiBpZiBvbmx5IG9uZSBhcmd1bWVudCBpcyBwYXNzZWRcblx0aWYgKCBpID09PSBsZW5ndGggKSB7XG5cdFx0dGFyZ2V0ID0gdGhpcztcblx0XHRpLS07XG5cdH1cblxuXHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblxuXHRcdC8vIE9ubHkgZGVhbCB3aXRoIG5vbi1udWxsL3VuZGVmaW5lZCB2YWx1ZXNcblx0XHRpZiAoICggb3B0aW9ucyA9IGFyZ3VtZW50c1sgaSBdICkgIT0gbnVsbCApIHtcblxuXHRcdFx0Ly8gRXh0ZW5kIHRoZSBiYXNlIG9iamVjdFxuXHRcdFx0Zm9yICggbmFtZSBpbiBvcHRpb25zICkge1xuXHRcdFx0XHRjb3B5ID0gb3B0aW9uc1sgbmFtZSBdO1xuXG5cdFx0XHRcdC8vIFByZXZlbnQgT2JqZWN0LnByb3RvdHlwZSBwb2xsdXRpb25cblx0XHRcdFx0Ly8gUHJldmVudCBuZXZlci1lbmRpbmcgbG9vcFxuXHRcdFx0XHRpZiAoIG5hbWUgPT09IFwiX19wcm90b19fXCIgfHwgdGFyZ2V0ID09PSBjb3B5ICkge1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUmVjdXJzZSBpZiB3ZSdyZSBtZXJnaW5nIHBsYWluIG9iamVjdHMgb3IgYXJyYXlzXG5cdFx0XHRcdGlmICggZGVlcCAmJiBjb3B5ICYmICggalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNvcHkgKSB8fFxuXHRcdFx0XHRcdCggY29weUlzQXJyYXkgPSBBcnJheS5pc0FycmF5KCBjb3B5ICkgKSApICkge1xuXHRcdFx0XHRcdHNyYyA9IHRhcmdldFsgbmFtZSBdO1xuXG5cdFx0XHRcdFx0Ly8gRW5zdXJlIHByb3BlciB0eXBlIGZvciB0aGUgc291cmNlIHZhbHVlXG5cdFx0XHRcdFx0aWYgKCBjb3B5SXNBcnJheSAmJiAhQXJyYXkuaXNBcnJheSggc3JjICkgKSB7XG5cdFx0XHRcdFx0XHRjbG9uZSA9IFtdO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoICFjb3B5SXNBcnJheSAmJiAhalF1ZXJ5LmlzUGxhaW5PYmplY3QoIHNyYyApICkge1xuXHRcdFx0XHRcdFx0Y2xvbmUgPSB7fTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y2xvbmUgPSBzcmM7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvcHlJc0FycmF5ID0gZmFsc2U7XG5cblx0XHRcdFx0XHQvLyBOZXZlciBtb3ZlIG9yaWdpbmFsIG9iamVjdHMsIGNsb25lIHRoZW1cblx0XHRcdFx0XHR0YXJnZXRbIG5hbWUgXSA9IGpRdWVyeS5leHRlbmQoIGRlZXAsIGNsb25lLCBjb3B5ICk7XG5cblx0XHRcdFx0Ly8gRG9uJ3QgYnJpbmcgaW4gdW5kZWZpbmVkIHZhbHVlc1xuXHRcdFx0XHR9IGVsc2UgaWYgKCBjb3B5ICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0dGFyZ2V0WyBuYW1lIF0gPSBjb3B5O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmV0dXJuIHRoZSBtb2RpZmllZCBvYmplY3Rcblx0cmV0dXJuIHRhcmdldDtcbn07XG5cbmpRdWVyeS5leHRlbmQoIHtcblxuXHQvLyBVbmlxdWUgZm9yIGVhY2ggY29weSBvZiBqUXVlcnkgb24gdGhlIHBhZ2Vcblx0ZXhwYW5kbzogXCJqUXVlcnlcIiArICggdmVyc2lvbiArIE1hdGgucmFuZG9tKCkgKS5yZXBsYWNlKCAvXFxEL2csIFwiXCIgKSxcblxuXHQvLyBBc3N1bWUgalF1ZXJ5IGlzIHJlYWR5IHdpdGhvdXQgdGhlIHJlYWR5IG1vZHVsZVxuXHRpc1JlYWR5OiB0cnVlLFxuXG5cdGVycm9yOiBmdW5jdGlvbiggbXNnICkge1xuXHRcdHRocm93IG5ldyBFcnJvciggbXNnICk7XG5cdH0sXG5cblx0bm9vcDogZnVuY3Rpb24oKSB7fSxcblxuXHRpc1BsYWluT2JqZWN0OiBmdW5jdGlvbiggb2JqICkge1xuXHRcdHZhciBwcm90bywgQ3RvcjtcblxuXHRcdC8vIERldGVjdCBvYnZpb3VzIG5lZ2F0aXZlc1xuXHRcdC8vIFVzZSB0b1N0cmluZyBpbnN0ZWFkIG9mIGpRdWVyeS50eXBlIHRvIGNhdGNoIGhvc3Qgb2JqZWN0c1xuXHRcdGlmICggIW9iaiB8fCB0b1N0cmluZy5jYWxsKCBvYmogKSAhPT0gXCJbb2JqZWN0IE9iamVjdF1cIiApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRwcm90byA9IGdldFByb3RvKCBvYmogKTtcblxuXHRcdC8vIE9iamVjdHMgd2l0aCBubyBwcm90b3R5cGUgKGUuZy4sIGBPYmplY3QuY3JlYXRlKCBudWxsIClgKSBhcmUgcGxhaW5cblx0XHRpZiAoICFwcm90byApIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdC8vIE9iamVjdHMgd2l0aCBwcm90b3R5cGUgYXJlIHBsYWluIGlmZiB0aGV5IHdlcmUgY29uc3RydWN0ZWQgYnkgYSBnbG9iYWwgT2JqZWN0IGZ1bmN0aW9uXG5cdFx0Q3RvciA9IGhhc093bi5jYWxsKCBwcm90bywgXCJjb25zdHJ1Y3RvclwiICkgJiYgcHJvdG8uY29uc3RydWN0b3I7XG5cdFx0cmV0dXJuIHR5cGVvZiBDdG9yID09PSBcImZ1bmN0aW9uXCIgJiYgZm5Ub1N0cmluZy5jYWxsKCBDdG9yICkgPT09IE9iamVjdEZ1bmN0aW9uU3RyaW5nO1xuXHR9LFxuXG5cdGlzRW1wdHlPYmplY3Q6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0dmFyIG5hbWU7XG5cblx0XHRmb3IgKCBuYW1lIGluIG9iaiApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIHRydWU7XG5cdH0sXG5cblx0Ly8gRXZhbHVhdGVzIGEgc2NyaXB0IGluIGEgcHJvdmlkZWQgY29udGV4dDsgZmFsbHMgYmFjayB0byB0aGUgZ2xvYmFsIG9uZVxuXHQvLyBpZiBub3Qgc3BlY2lmaWVkLlxuXHRnbG9iYWxFdmFsOiBmdW5jdGlvbiggY29kZSwgb3B0aW9ucywgZG9jICkge1xuXHRcdERPTUV2YWwoIGNvZGUsIHsgbm9uY2U6IG9wdGlvbnMgJiYgb3B0aW9ucy5ub25jZSB9LCBkb2MgKTtcblx0fSxcblxuXHRlYWNoOiBmdW5jdGlvbiggb2JqLCBjYWxsYmFjayApIHtcblx0XHR2YXIgbGVuZ3RoLCBpID0gMDtcblxuXHRcdGlmICggaXNBcnJheUxpa2UoIG9iaiApICkge1xuXHRcdFx0bGVuZ3RoID0gb2JqLmxlbmd0aDtcblx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrLmNhbGwoIG9ialsgaSBdLCBpLCBvYmpbIGkgXSApID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRmb3IgKCBpIGluIG9iaiApIHtcblx0XHRcdFx0aWYgKCBjYWxsYmFjay5jYWxsKCBvYmpbIGkgXSwgaSwgb2JqWyBpIF0gKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gb2JqO1xuXHR9LFxuXG5cdC8vIHJlc3VsdHMgaXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHlcblx0bWFrZUFycmF5OiBmdW5jdGlvbiggYXJyLCByZXN1bHRzICkge1xuXHRcdHZhciByZXQgPSByZXN1bHRzIHx8IFtdO1xuXG5cdFx0aWYgKCBhcnIgIT0gbnVsbCApIHtcblx0XHRcdGlmICggaXNBcnJheUxpa2UoIE9iamVjdCggYXJyICkgKSApIHtcblx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCByZXQsXG5cdFx0XHRcdFx0dHlwZW9mIGFyciA9PT0gXCJzdHJpbmdcIiA/XG5cdFx0XHRcdFx0XHRbIGFyciBdIDogYXJyXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRwdXNoLmNhbGwoIHJldCwgYXJyICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJldDtcblx0fSxcblxuXHRpbkFycmF5OiBmdW5jdGlvbiggZWxlbSwgYXJyLCBpICkge1xuXHRcdHJldHVybiBhcnIgPT0gbnVsbCA/IC0xIDogaW5kZXhPZi5jYWxsKCBhcnIsIGVsZW0sIGkgKTtcblx0fSxcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0Ly8gcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdFxuXHRtZXJnZTogZnVuY3Rpb24oIGZpcnN0LCBzZWNvbmQgKSB7XG5cdFx0dmFyIGxlbiA9ICtzZWNvbmQubGVuZ3RoLFxuXHRcdFx0aiA9IDAsXG5cdFx0XHRpID0gZmlyc3QubGVuZ3RoO1xuXG5cdFx0Zm9yICggOyBqIDwgbGVuOyBqKysgKSB7XG5cdFx0XHRmaXJzdFsgaSsrIF0gPSBzZWNvbmRbIGogXTtcblx0XHR9XG5cblx0XHRmaXJzdC5sZW5ndGggPSBpO1xuXG5cdFx0cmV0dXJuIGZpcnN0O1xuXHR9LFxuXG5cdGdyZXA6IGZ1bmN0aW9uKCBlbGVtcywgY2FsbGJhY2ssIGludmVydCApIHtcblx0XHR2YXIgY2FsbGJhY2tJbnZlcnNlLFxuXHRcdFx0bWF0Y2hlcyA9IFtdLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRsZW5ndGggPSBlbGVtcy5sZW5ndGgsXG5cdFx0XHRjYWxsYmFja0V4cGVjdCA9ICFpbnZlcnQ7XG5cblx0XHQvLyBHbyB0aHJvdWdoIHRoZSBhcnJheSwgb25seSBzYXZpbmcgdGhlIGl0ZW1zXG5cdFx0Ly8gdGhhdCBwYXNzIHRoZSB2YWxpZGF0b3IgZnVuY3Rpb25cblx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblx0XHRcdGNhbGxiYWNrSW52ZXJzZSA9ICFjYWxsYmFjayggZWxlbXNbIGkgXSwgaSApO1xuXHRcdFx0aWYgKCBjYWxsYmFja0ludmVyc2UgIT09IGNhbGxiYWNrRXhwZWN0ICkge1xuXHRcdFx0XHRtYXRjaGVzLnB1c2goIGVsZW1zWyBpIF0gKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gbWF0Y2hlcztcblx0fSxcblxuXHQvLyBhcmcgaXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHlcblx0bWFwOiBmdW5jdGlvbiggZWxlbXMsIGNhbGxiYWNrLCBhcmcgKSB7XG5cdFx0dmFyIGxlbmd0aCwgdmFsdWUsXG5cdFx0XHRpID0gMCxcblx0XHRcdHJldCA9IFtdO1xuXG5cdFx0Ly8gR28gdGhyb3VnaCB0aGUgYXJyYXksIHRyYW5zbGF0aW5nIGVhY2ggb2YgdGhlIGl0ZW1zIHRvIHRoZWlyIG5ldyB2YWx1ZXNcblx0XHRpZiAoIGlzQXJyYXlMaWtlKCBlbGVtcyApICkge1xuXHRcdFx0bGVuZ3RoID0gZWxlbXMubGVuZ3RoO1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdHZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBpIF0sIGksIGFyZyApO1xuXG5cdFx0XHRcdGlmICggdmFsdWUgIT0gbnVsbCApIHtcblx0XHRcdFx0XHRyZXQucHVzaCggdmFsdWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0Ly8gR28gdGhyb3VnaCBldmVyeSBrZXkgb24gdGhlIG9iamVjdCxcblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9yICggaSBpbiBlbGVtcyApIHtcblx0XHRcdFx0dmFsdWUgPSBjYWxsYmFjayggZWxlbXNbIGkgXSwgaSwgYXJnICk7XG5cblx0XHRcdFx0aWYgKCB2YWx1ZSAhPSBudWxsICkge1xuXHRcdFx0XHRcdHJldC5wdXNoKCB2YWx1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gRmxhdHRlbiBhbnkgbmVzdGVkIGFycmF5c1xuXHRcdHJldHVybiBmbGF0KCByZXQgKTtcblx0fSxcblxuXHQvLyBBIGdsb2JhbCBHVUlEIGNvdW50ZXIgZm9yIG9iamVjdHNcblx0Z3VpZDogMSxcblxuXHQvLyBqUXVlcnkuc3VwcG9ydCBpcyBub3QgdXNlZCBpbiBDb3JlIGJ1dCBvdGhlciBwcm9qZWN0cyBhdHRhY2ggdGhlaXJcblx0Ly8gcHJvcGVydGllcyB0byBpdCBzbyBpdCBuZWVkcyB0byBleGlzdC5cblx0c3VwcG9ydDogc3VwcG9ydFxufSApO1xuXG5pZiAoIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiApIHtcblx0alF1ZXJ5LmZuWyBTeW1ib2wuaXRlcmF0b3IgXSA9IGFyclsgU3ltYm9sLml0ZXJhdG9yIF07XG59XG5cbi8vIFBvcHVsYXRlIHRoZSBjbGFzczJ0eXBlIG1hcFxualF1ZXJ5LmVhY2goIFwiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2xcIi5zcGxpdCggXCIgXCIgKSxcblx0ZnVuY3Rpb24oIF9pLCBuYW1lICkge1xuXHRcdGNsYXNzMnR5cGVbIFwiW29iamVjdCBcIiArIG5hbWUgKyBcIl1cIiBdID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuXHR9ICk7XG5cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlKCBvYmogKSB7XG5cblx0Ly8gU3VwcG9ydDogcmVhbCBpT1MgOC4yIG9ubHkgKG5vdCByZXByb2R1Y2libGUgaW4gc2ltdWxhdG9yKVxuXHQvLyBgaW5gIGNoZWNrIHVzZWQgdG8gcHJldmVudCBKSVQgZXJyb3IgKGdoLTIxNDUpXG5cdC8vIGhhc093biBpc24ndCB1c2VkIGhlcmUgZHVlIHRvIGZhbHNlIG5lZ2F0aXZlc1xuXHQvLyByZWdhcmRpbmcgTm9kZWxpc3QgbGVuZ3RoIGluIElFXG5cdHZhciBsZW5ndGggPSAhIW9iaiAmJiBcImxlbmd0aFwiIGluIG9iaiAmJiBvYmoubGVuZ3RoLFxuXHRcdHR5cGUgPSB0b1R5cGUoIG9iaiApO1xuXG5cdGlmICggaXNGdW5jdGlvbiggb2JqICkgfHwgaXNXaW5kb3coIG9iaiApICkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHJldHVybiB0eXBlID09PSBcImFycmF5XCIgfHwgbGVuZ3RoID09PSAwIHx8XG5cdFx0dHlwZW9mIGxlbmd0aCA9PT0gXCJudW1iZXJcIiAmJiBsZW5ndGggPiAwICYmICggbGVuZ3RoIC0gMSApIGluIG9iajtcbn1cbnZhciBTaXp6bGUgPVxuLyohXG4gKiBTaXp6bGUgQ1NTIFNlbGVjdG9yIEVuZ2luZSB2Mi4zLjZcbiAqIGh0dHBzOi8vc2l6emxlanMuY29tL1xuICpcbiAqIENvcHlyaWdodCBKUyBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZVxuICogaHR0cHM6Ly9qcy5mb3VuZGF0aW9uL1xuICpcbiAqIERhdGU6IDIwMjEtMDItMTZcbiAqL1xuKCBmdW5jdGlvbiggd2luZG93ICkge1xudmFyIGksXG5cdHN1cHBvcnQsXG5cdEV4cHIsXG5cdGdldFRleHQsXG5cdGlzWE1MLFxuXHR0b2tlbml6ZSxcblx0Y29tcGlsZSxcblx0c2VsZWN0LFxuXHRvdXRlcm1vc3RDb250ZXh0LFxuXHRzb3J0SW5wdXQsXG5cdGhhc0R1cGxpY2F0ZSxcblxuXHQvLyBMb2NhbCBkb2N1bWVudCB2YXJzXG5cdHNldERvY3VtZW50LFxuXHRkb2N1bWVudCxcblx0ZG9jRWxlbSxcblx0ZG9jdW1lbnRJc0hUTUwsXG5cdHJidWdneVFTQSxcblx0cmJ1Z2d5TWF0Y2hlcyxcblx0bWF0Y2hlcyxcblx0Y29udGFpbnMsXG5cblx0Ly8gSW5zdGFuY2Utc3BlY2lmaWMgZGF0YVxuXHRleHBhbmRvID0gXCJzaXp6bGVcIiArIDEgKiBuZXcgRGF0ZSgpLFxuXHRwcmVmZXJyZWREb2MgPSB3aW5kb3cuZG9jdW1lbnQsXG5cdGRpcnJ1bnMgPSAwLFxuXHRkb25lID0gMCxcblx0Y2xhc3NDYWNoZSA9IGNyZWF0ZUNhY2hlKCksXG5cdHRva2VuQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLFxuXHRjb21waWxlckNhY2hlID0gY3JlYXRlQ2FjaGUoKSxcblx0bm9ubmF0aXZlU2VsZWN0b3JDYWNoZSA9IGNyZWF0ZUNhY2hlKCksXG5cdHNvcnRPcmRlciA9IGZ1bmN0aW9uKCBhLCBiICkge1xuXHRcdGlmICggYSA9PT0gYiApIHtcblx0XHRcdGhhc0R1cGxpY2F0ZSA9IHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiAwO1xuXHR9LFxuXG5cdC8vIEluc3RhbmNlIG1ldGhvZHNcblx0aGFzT3duID0gKCB7fSApLmhhc093blByb3BlcnR5LFxuXHRhcnIgPSBbXSxcblx0cG9wID0gYXJyLnBvcCxcblx0cHVzaE5hdGl2ZSA9IGFyci5wdXNoLFxuXHRwdXNoID0gYXJyLnB1c2gsXG5cdHNsaWNlID0gYXJyLnNsaWNlLFxuXG5cdC8vIFVzZSBhIHN0cmlwcGVkLWRvd24gaW5kZXhPZiBhcyBpdCdzIGZhc3RlciB0aGFuIG5hdGl2ZVxuXHQvLyBodHRwczovL2pzcGVyZi5jb20vdGhvci1pbmRleG9mLXZzLWZvci81XG5cdGluZGV4T2YgPSBmdW5jdGlvbiggbGlzdCwgZWxlbSApIHtcblx0XHR2YXIgaSA9IDAsXG5cdFx0XHRsZW4gPSBsaXN0Lmxlbmd0aDtcblx0XHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdGlmICggbGlzdFsgaSBdID09PSBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gaTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIC0xO1xuXHR9LFxuXG5cdGJvb2xlYW5zID0gXCJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58XCIgK1xuXHRcdFwiaXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZFwiLFxuXG5cdC8vIFJlZ3VsYXIgZXhwcmVzc2lvbnNcblxuXHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXNlbGVjdG9ycy8jd2hpdGVzcGFjZVxuXHR3aGl0ZXNwYWNlID0gXCJbXFxcXHgyMFxcXFx0XFxcXHJcXFxcblxcXFxmXVwiLFxuXG5cdC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc3ludGF4LTMvI2lkZW50LXRva2VuLWRpYWdyYW1cblx0aWRlbnRpZmllciA9IFwiKD86XFxcXFxcXFxbXFxcXGRhLWZBLUZdezEsNn1cIiArIHdoaXRlc3BhY2UgK1xuXHRcdFwiP3xcXFxcXFxcXFteXFxcXHJcXFxcblxcXFxmXXxbXFxcXHctXXxbXlxcMC1cXFxceDdmXSkrXCIsXG5cblx0Ly8gQXR0cmlidXRlIHNlbGVjdG9yczogaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNhdHRyaWJ1dGUtc2VsZWN0b3JzXG5cdGF0dHJpYnV0ZXMgPSBcIlxcXFxbXCIgKyB3aGl0ZXNwYWNlICsgXCIqKFwiICsgaWRlbnRpZmllciArIFwiKSg/OlwiICsgd2hpdGVzcGFjZSArXG5cblx0XHQvLyBPcGVyYXRvciAoY2FwdHVyZSAyKVxuXHRcdFwiKihbKl4kfCF+XT89KVwiICsgd2hpdGVzcGFjZSArXG5cblx0XHQvLyBcIkF0dHJpYnV0ZSB2YWx1ZXMgbXVzdCBiZSBDU1MgaWRlbnRpZmllcnMgW2NhcHR1cmUgNV1cblx0XHQvLyBvciBzdHJpbmdzIFtjYXB0dXJlIDMgb3IgY2FwdHVyZSA0XVwiXG5cdFx0XCIqKD86JygoPzpcXFxcXFxcXC58W15cXFxcXFxcXCddKSopJ3xcXFwiKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcXFxcIl0pKilcXFwifChcIiArIGlkZW50aWZpZXIgKyBcIikpfClcIiArXG5cdFx0d2hpdGVzcGFjZSArIFwiKlxcXFxdXCIsXG5cblx0cHNldWRvcyA9IFwiOihcIiArIGlkZW50aWZpZXIgKyBcIikoPzpcXFxcKChcIiArXG5cblx0XHQvLyBUbyByZWR1Y2UgdGhlIG51bWJlciBvZiBzZWxlY3RvcnMgbmVlZGluZyB0b2tlbml6ZSBpbiB0aGUgcHJlRmlsdGVyLCBwcmVmZXIgYXJndW1lbnRzOlxuXHRcdC8vIDEuIHF1b3RlZCAoY2FwdHVyZSAzOyBjYXB0dXJlIDQgb3IgY2FwdHVyZSA1KVxuXHRcdFwiKCcoKD86XFxcXFxcXFwufFteXFxcXFxcXFwnXSkqKSd8XFxcIigoPzpcXFxcXFxcXC58W15cXFxcXFxcXFxcXCJdKSopXFxcIil8XCIgK1xuXG5cdFx0Ly8gMi4gc2ltcGxlIChjYXB0dXJlIDYpXG5cdFx0XCIoKD86XFxcXFxcXFwufFteXFxcXFxcXFwoKVtcXFxcXV18XCIgKyBhdHRyaWJ1dGVzICsgXCIpKil8XCIgK1xuXG5cdFx0Ly8gMy4gYW55dGhpbmcgZWxzZSAoY2FwdHVyZSAyKVxuXHRcdFwiLipcIiArXG5cdFx0XCIpXFxcXCl8KVwiLFxuXG5cdC8vIExlYWRpbmcgYW5kIG5vbi1lc2NhcGVkIHRyYWlsaW5nIHdoaXRlc3BhY2UsIGNhcHR1cmluZyBzb21lIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlcnMgcHJlY2VkaW5nIHRoZSBsYXR0ZXJcblx0cndoaXRlc3BhY2UgPSBuZXcgUmVnRXhwKCB3aGl0ZXNwYWNlICsgXCIrXCIsIFwiZ1wiICksXG5cdHJ0cmltID0gbmV3IFJlZ0V4cCggXCJeXCIgKyB3aGl0ZXNwYWNlICsgXCIrfCgoPzpefFteXFxcXFxcXFxdKSg/OlxcXFxcXFxcLikqKVwiICtcblx0XHR3aGl0ZXNwYWNlICsgXCIrJFwiLCBcImdcIiApLFxuXG5cdHJjb21tYSA9IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiKixcIiArIHdoaXRlc3BhY2UgKyBcIipcIiApLFxuXHRyY29tYmluYXRvcnMgPSBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIiooWz4rfl18XCIgKyB3aGl0ZXNwYWNlICsgXCIpXCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcIipcIiApLFxuXHRyZGVzY2VuZCA9IG5ldyBSZWdFeHAoIHdoaXRlc3BhY2UgKyBcInw+XCIgKSxcblxuXHRycHNldWRvID0gbmV3IFJlZ0V4cCggcHNldWRvcyApLFxuXHRyaWRlbnRpZmllciA9IG5ldyBSZWdFeHAoIFwiXlwiICsgaWRlbnRpZmllciArIFwiJFwiICksXG5cblx0bWF0Y2hFeHByID0ge1xuXHRcdFwiSURcIjogbmV3IFJlZ0V4cCggXCJeIyhcIiArIGlkZW50aWZpZXIgKyBcIilcIiApLFxuXHRcdFwiQ0xBU1NcIjogbmV3IFJlZ0V4cCggXCJeXFxcXC4oXCIgKyBpZGVudGlmaWVyICsgXCIpXCIgKSxcblx0XHRcIlRBR1wiOiBuZXcgUmVnRXhwKCBcIl4oXCIgKyBpZGVudGlmaWVyICsgXCJ8WypdKVwiICksXG5cdFx0XCJBVFRSXCI6IG5ldyBSZWdFeHAoIFwiXlwiICsgYXR0cmlidXRlcyApLFxuXHRcdFwiUFNFVURPXCI6IG5ldyBSZWdFeHAoIFwiXlwiICsgcHNldWRvcyApLFxuXHRcdFwiQ0hJTERcIjogbmV3IFJlZ0V4cCggXCJeOihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXFxcKFwiICtcblx0XHRcdHdoaXRlc3BhY2UgKyBcIiooZXZlbnxvZGR8KChbKy1dfCkoXFxcXGQqKW58KVwiICsgd2hpdGVzcGFjZSArIFwiKig/OihbKy1dfClcIiArXG5cdFx0XHR3aGl0ZXNwYWNlICsgXCIqKFxcXFxkKyl8KSlcIiArIHdoaXRlc3BhY2UgKyBcIipcXFxcKXwpXCIsIFwiaVwiICksXG5cdFx0XCJib29sXCI6IG5ldyBSZWdFeHAoIFwiXig/OlwiICsgYm9vbGVhbnMgKyBcIikkXCIsIFwiaVwiICksXG5cblx0XHQvLyBGb3IgdXNlIGluIGxpYnJhcmllcyBpbXBsZW1lbnRpbmcgLmlzKClcblx0XHQvLyBXZSB1c2UgdGhpcyBmb3IgUE9TIG1hdGNoaW5nIGluIGBzZWxlY3RgXG5cdFx0XCJuZWVkc0NvbnRleHRcIjogbmV3IFJlZ0V4cCggXCJeXCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcdFwiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFxcXChcIiArIHdoaXRlc3BhY2UgK1xuXHRcdFx0XCIqKCg/Oi1cXFxcZCk/XFxcXGQqKVwiICsgd2hpdGVzcGFjZSArIFwiKlxcXFwpfCkoPz1bXi1dfCQpXCIsIFwiaVwiIClcblx0fSxcblxuXHRyaHRtbCA9IC9IVE1MJC9pLFxuXHRyaW5wdXRzID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxcblx0cmhlYWRlciA9IC9eaFxcZCQvaSxcblxuXHRybmF0aXZlID0gL15bXntdK1xce1xccypcXFtuYXRpdmUgXFx3LyxcblxuXHQvLyBFYXNpbHktcGFyc2VhYmxlL3JldHJpZXZhYmxlIElEIG9yIFRBRyBvciBDTEFTUyBzZWxlY3RvcnNcblx0cnF1aWNrRXhwciA9IC9eKD86IyhbXFx3LV0rKXwoXFx3Kyl8XFwuKFtcXHctXSspKSQvLFxuXG5cdHJzaWJsaW5nID0gL1srfl0vLFxuXG5cdC8vIENTUyBlc2NhcGVzXG5cdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCNlc2NhcGVkLWNoYXJhY3RlcnNcblx0cnVuZXNjYXBlID0gbmV3IFJlZ0V4cCggXCJcXFxcXFxcXFtcXFxcZGEtZkEtRl17MSw2fVwiICsgd2hpdGVzcGFjZSArIFwiP3xcXFxcXFxcXChbXlxcXFxyXFxcXG5cXFxcZl0pXCIsIFwiZ1wiICksXG5cdGZ1bmVzY2FwZSA9IGZ1bmN0aW9uKCBlc2NhcGUsIG5vbkhleCApIHtcblx0XHR2YXIgaGlnaCA9IFwiMHhcIiArIGVzY2FwZS5zbGljZSggMSApIC0gMHgxMDAwMDtcblxuXHRcdHJldHVybiBub25IZXggP1xuXG5cdFx0XHQvLyBTdHJpcCB0aGUgYmFja3NsYXNoIHByZWZpeCBmcm9tIGEgbm9uLWhleCBlc2NhcGUgc2VxdWVuY2Vcblx0XHRcdG5vbkhleCA6XG5cblx0XHRcdC8vIFJlcGxhY2UgYSBoZXhhZGVjaW1hbCBlc2NhcGUgc2VxdWVuY2Ugd2l0aCB0aGUgZW5jb2RlZCBVbmljb2RlIGNvZGUgcG9pbnRcblx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9MTErXG5cdFx0XHQvLyBGb3IgdmFsdWVzIG91dHNpZGUgdGhlIEJhc2ljIE11bHRpbGluZ3VhbCBQbGFuZSAoQk1QKSwgbWFudWFsbHkgY29uc3RydWN0IGFcblx0XHRcdC8vIHN1cnJvZ2F0ZSBwYWlyXG5cdFx0XHRoaWdoIDwgMCA/XG5cdFx0XHRcdFN0cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggKyAweDEwMDAwICkgOlxuXHRcdFx0XHRTdHJpbmcuZnJvbUNoYXJDb2RlKCBoaWdoID4+IDEwIHwgMHhEODAwLCBoaWdoICYgMHgzRkYgfCAweERDMDAgKTtcblx0fSxcblxuXHQvLyBDU1Mgc3RyaW5nL2lkZW50aWZpZXIgc2VyaWFsaXphdGlvblxuXHQvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI2NvbW1vbi1zZXJpYWxpemluZy1pZGlvbXNcblx0cmNzc2VzY2FwZSA9IC8oW1xcMC1cXHgxZlxceDdmXXxeLT9cXGQpfF4tJHxbXlxcMC1cXHgxZlxceDdmLVxcdUZGRkZcXHctXS9nLFxuXHRmY3NzZXNjYXBlID0gZnVuY3Rpb24oIGNoLCBhc0NvZGVQb2ludCApIHtcblx0XHRpZiAoIGFzQ29kZVBvaW50ICkge1xuXG5cdFx0XHQvLyBVKzAwMDAgTlVMTCBiZWNvbWVzIFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFSQUNURVJcblx0XHRcdGlmICggY2ggPT09IFwiXFwwXCIgKSB7XG5cdFx0XHRcdHJldHVybiBcIlxcdUZGRkRcIjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ29udHJvbCBjaGFyYWN0ZXJzIGFuZCAoZGVwZW5kZW50IHVwb24gcG9zaXRpb24pIG51bWJlcnMgZ2V0IGVzY2FwZWQgYXMgY29kZSBwb2ludHNcblx0XHRcdHJldHVybiBjaC5zbGljZSggMCwgLTEgKSArIFwiXFxcXFwiICtcblx0XHRcdFx0Y2guY2hhckNvZGVBdCggY2gubGVuZ3RoIC0gMSApLnRvU3RyaW5nKCAxNiApICsgXCIgXCI7XG5cdFx0fVxuXG5cdFx0Ly8gT3RoZXIgcG90ZW50aWFsbHktc3BlY2lhbCBBU0NJSSBjaGFyYWN0ZXJzIGdldCBiYWNrc2xhc2gtZXNjYXBlZFxuXHRcdHJldHVybiBcIlxcXFxcIiArIGNoO1xuXHR9LFxuXG5cdC8vIFVzZWQgZm9yIGlmcmFtZXNcblx0Ly8gU2VlIHNldERvY3VtZW50KClcblx0Ly8gUmVtb3ZpbmcgdGhlIGZ1bmN0aW9uIHdyYXBwZXIgY2F1c2VzIGEgXCJQZXJtaXNzaW9uIERlbmllZFwiXG5cdC8vIGVycm9yIGluIElFXG5cdHVubG9hZEhhbmRsZXIgPSBmdW5jdGlvbigpIHtcblx0XHRzZXREb2N1bWVudCgpO1xuXHR9LFxuXG5cdGluRGlzYWJsZWRGaWVsZHNldCA9IGFkZENvbWJpbmF0b3IoXG5cdFx0ZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gdHJ1ZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiZmllbGRzZXRcIjtcblx0XHR9LFxuXHRcdHsgZGlyOiBcInBhcmVudE5vZGVcIiwgbmV4dDogXCJsZWdlbmRcIiB9XG5cdCk7XG5cbi8vIE9wdGltaXplIGZvciBwdXNoLmFwcGx5KCBfLCBOb2RlTGlzdCApXG50cnkge1xuXHRwdXNoLmFwcGx5KFxuXHRcdCggYXJyID0gc2xpY2UuY2FsbCggcHJlZmVycmVkRG9jLmNoaWxkTm9kZXMgKSApLFxuXHRcdHByZWZlcnJlZERvYy5jaGlsZE5vZGVzXG5cdCk7XG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZDw0LjBcblx0Ly8gRGV0ZWN0IHNpbGVudGx5IGZhaWxpbmcgcHVzaC5hcHBseVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLWV4cHJlc3Npb25zXG5cdGFyclsgcHJlZmVycmVkRG9jLmNoaWxkTm9kZXMubGVuZ3RoIF0ubm9kZVR5cGU7XG59IGNhdGNoICggZSApIHtcblx0cHVzaCA9IHsgYXBwbHk6IGFyci5sZW5ndGggP1xuXG5cdFx0Ly8gTGV2ZXJhZ2Ugc2xpY2UgaWYgcG9zc2libGVcblx0XHRmdW5jdGlvbiggdGFyZ2V0LCBlbHMgKSB7XG5cdFx0XHRwdXNoTmF0aXZlLmFwcGx5KCB0YXJnZXQsIHNsaWNlLmNhbGwoIGVscyApICk7XG5cdFx0fSA6XG5cblx0XHQvLyBTdXBwb3J0OiBJRTw5XG5cdFx0Ly8gT3RoZXJ3aXNlIGFwcGVuZCBkaXJlY3RseVxuXHRcdGZ1bmN0aW9uKCB0YXJnZXQsIGVscyApIHtcblx0XHRcdHZhciBqID0gdGFyZ2V0Lmxlbmd0aCxcblx0XHRcdFx0aSA9IDA7XG5cblx0XHRcdC8vIENhbid0IHRydXN0IE5vZGVMaXN0Lmxlbmd0aFxuXHRcdFx0d2hpbGUgKCAoIHRhcmdldFsgaisrIF0gPSBlbHNbIGkrKyBdICkgKSB7fVxuXHRcdFx0dGFyZ2V0Lmxlbmd0aCA9IGogLSAxO1xuXHRcdH1cblx0fTtcbn1cblxuZnVuY3Rpb24gU2l6emxlKCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHtcblx0dmFyIG0sIGksIGVsZW0sIG5pZCwgbWF0Y2gsIGdyb3VwcywgbmV3U2VsZWN0b3IsXG5cdFx0bmV3Q29udGV4dCA9IGNvbnRleHQgJiYgY29udGV4dC5vd25lckRvY3VtZW50LFxuXG5cdFx0Ly8gbm9kZVR5cGUgZGVmYXVsdHMgdG8gOSwgc2luY2UgY29udGV4dCBkZWZhdWx0cyB0byBkb2N1bWVudFxuXHRcdG5vZGVUeXBlID0gY29udGV4dCA/IGNvbnRleHQubm9kZVR5cGUgOiA5O1xuXG5cdHJlc3VsdHMgPSByZXN1bHRzIHx8IFtdO1xuXG5cdC8vIFJldHVybiBlYXJseSBmcm9tIGNhbGxzIHdpdGggaW52YWxpZCBzZWxlY3RvciBvciBjb250ZXh0XG5cdGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSBcInN0cmluZ1wiIHx8ICFzZWxlY3RvciB8fFxuXHRcdG5vZGVUeXBlICE9PSAxICYmIG5vZGVUeXBlICE9PSA5ICYmIG5vZGVUeXBlICE9PSAxMSApIHtcblxuXHRcdHJldHVybiByZXN1bHRzO1xuXHR9XG5cblx0Ly8gVHJ5IHRvIHNob3J0Y3V0IGZpbmQgb3BlcmF0aW9ucyAoYXMgb3Bwb3NlZCB0byBmaWx0ZXJzKSBpbiBIVE1MIGRvY3VtZW50c1xuXHRpZiAoICFzZWVkICkge1xuXHRcdHNldERvY3VtZW50KCBjb250ZXh0ICk7XG5cdFx0Y29udGV4dCA9IGNvbnRleHQgfHwgZG9jdW1lbnQ7XG5cblx0XHRpZiAoIGRvY3VtZW50SXNIVE1MICkge1xuXG5cdFx0XHQvLyBJZiB0aGUgc2VsZWN0b3IgaXMgc3VmZmljaWVudGx5IHNpbXBsZSwgdHJ5IHVzaW5nIGEgXCJnZXQqQnkqXCIgRE9NIG1ldGhvZFxuXHRcdFx0Ly8gKGV4Y2VwdGluZyBEb2N1bWVudEZyYWdtZW50IGNvbnRleHQsIHdoZXJlIHRoZSBtZXRob2RzIGRvbid0IGV4aXN0KVxuXHRcdFx0aWYgKCBub2RlVHlwZSAhPT0gMTEgJiYgKCBtYXRjaCA9IHJxdWlja0V4cHIuZXhlYyggc2VsZWN0b3IgKSApICkge1xuXG5cdFx0XHRcdC8vIElEIHNlbGVjdG9yXG5cdFx0XHRcdGlmICggKCBtID0gbWF0Y2hbIDEgXSApICkge1xuXG5cdFx0XHRcdFx0Ly8gRG9jdW1lbnQgY29udGV4dFxuXHRcdFx0XHRcdGlmICggbm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdFx0XHRpZiAoICggZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIG0gKSApICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFLCBPcGVyYSwgV2Via2l0XG5cdFx0XHRcdFx0XHRcdC8vIFRPRE86IGlkZW50aWZ5IHZlcnNpb25zXG5cdFx0XHRcdFx0XHRcdC8vIGdldEVsZW1lbnRCeUlkIGNhbiBtYXRjaCBlbGVtZW50cyBieSBuYW1lIGluc3RlYWQgb2YgSURcblx0XHRcdFx0XHRcdFx0aWYgKCBlbGVtLmlkID09PSBtICkge1xuXHRcdFx0XHRcdFx0XHRcdHJlc3VsdHMucHVzaCggZWxlbSApO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIEVsZW1lbnQgY29udGV4dFxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFLCBPcGVyYSwgV2Via2l0XG5cdFx0XHRcdFx0XHQvLyBUT0RPOiBpZGVudGlmeSB2ZXJzaW9uc1xuXHRcdFx0XHRcdFx0Ly8gZ2V0RWxlbWVudEJ5SWQgY2FuIG1hdGNoIGVsZW1lbnRzIGJ5IG5hbWUgaW5zdGVhZCBvZiBJRFxuXHRcdFx0XHRcdFx0aWYgKCBuZXdDb250ZXh0ICYmICggZWxlbSA9IG5ld0NvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIG0gKSApICYmXG5cdFx0XHRcdFx0XHRcdGNvbnRhaW5zKCBjb250ZXh0LCBlbGVtICkgJiZcblx0XHRcdFx0XHRcdFx0ZWxlbS5pZCA9PT0gbSApIHtcblxuXHRcdFx0XHRcdFx0XHRyZXN1bHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFR5cGUgc2VsZWN0b3Jcblx0XHRcdFx0fSBlbHNlIGlmICggbWF0Y2hbIDIgXSApIHtcblx0XHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCBzZWxlY3RvciApICk7XG5cdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cblx0XHRcdFx0Ly8gQ2xhc3Mgc2VsZWN0b3Jcblx0XHRcdFx0fSBlbHNlIGlmICggKCBtID0gbWF0Y2hbIDMgXSApICYmIHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJlxuXHRcdFx0XHRcdGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSApIHtcblxuXHRcdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggbSApICk7XG5cdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gVGFrZSBhZHZhbnRhZ2Ugb2YgcXVlcnlTZWxlY3RvckFsbFxuXHRcdFx0aWYgKCBzdXBwb3J0LnFzYSAmJlxuXHRcdFx0XHQhbm9ubmF0aXZlU2VsZWN0b3JDYWNoZVsgc2VsZWN0b3IgKyBcIiBcIiBdICYmXG5cdFx0XHRcdCggIXJidWdneVFTQSB8fCAhcmJ1Z2d5UVNBLnRlc3QoIHNlbGVjdG9yICkgKSAmJlxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDggb25seVxuXHRcdFx0XHQvLyBFeGNsdWRlIG9iamVjdCBlbGVtZW50c1xuXHRcdFx0XHQoIG5vZGVUeXBlICE9PSAxIHx8IGNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPT0gXCJvYmplY3RcIiApICkge1xuXG5cdFx0XHRcdG5ld1NlbGVjdG9yID0gc2VsZWN0b3I7XG5cdFx0XHRcdG5ld0NvbnRleHQgPSBjb250ZXh0O1xuXG5cdFx0XHRcdC8vIHFTQSBjb25zaWRlcnMgZWxlbWVudHMgb3V0c2lkZSBhIHNjb3Bpbmcgcm9vdCB3aGVuIGV2YWx1YXRpbmcgY2hpbGQgb3Jcblx0XHRcdFx0Ly8gZGVzY2VuZGFudCBjb21iaW5hdG9ycywgd2hpY2ggaXMgbm90IHdoYXQgd2Ugd2FudC5cblx0XHRcdFx0Ly8gSW4gc3VjaCBjYXNlcywgd2Ugd29yayBhcm91bmQgdGhlIGJlaGF2aW9yIGJ5IHByZWZpeGluZyBldmVyeSBzZWxlY3RvciBpbiB0aGVcblx0XHRcdFx0Ly8gbGlzdCB3aXRoIGFuIElEIHNlbGVjdG9yIHJlZmVyZW5jaW5nIHRoZSBzY29wZSBjb250ZXh0LlxuXHRcdFx0XHQvLyBUaGUgdGVjaG5pcXVlIGhhcyB0byBiZSB1c2VkIGFzIHdlbGwgd2hlbiBhIGxlYWRpbmcgY29tYmluYXRvciBpcyB1c2VkXG5cdFx0XHRcdC8vIGFzIHN1Y2ggc2VsZWN0b3JzIGFyZSBub3QgcmVjb2duaXplZCBieSBxdWVyeVNlbGVjdG9yQWxsLlxuXHRcdFx0XHQvLyBUaGFua3MgdG8gQW5kcmV3IER1cG9udCBmb3IgdGhpcyB0ZWNobmlxdWUuXG5cdFx0XHRcdGlmICggbm9kZVR5cGUgPT09IDEgJiZcblx0XHRcdFx0XHQoIHJkZXNjZW5kLnRlc3QoIHNlbGVjdG9yICkgfHwgcmNvbWJpbmF0b3JzLnRlc3QoIHNlbGVjdG9yICkgKSApIHtcblxuXHRcdFx0XHRcdC8vIEV4cGFuZCBjb250ZXh0IGZvciBzaWJsaW5nIHNlbGVjdG9yc1xuXHRcdFx0XHRcdG5ld0NvbnRleHQgPSByc2libGluZy50ZXN0KCBzZWxlY3RvciApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8fFxuXHRcdFx0XHRcdFx0Y29udGV4dDtcblxuXHRcdFx0XHRcdC8vIFdlIGNhbiB1c2UgOnNjb3BlIGluc3RlYWQgb2YgdGhlIElEIGhhY2sgaWYgdGhlIGJyb3dzZXJcblx0XHRcdFx0XHQvLyBzdXBwb3J0cyBpdCAmIGlmIHdlJ3JlIG5vdCBjaGFuZ2luZyB0aGUgY29udGV4dC5cblx0XHRcdFx0XHRpZiAoIG5ld0NvbnRleHQgIT09IGNvbnRleHQgfHwgIXN1cHBvcnQuc2NvcGUgKSB7XG5cblx0XHRcdFx0XHRcdC8vIENhcHR1cmUgdGhlIGNvbnRleHQgSUQsIHNldHRpbmcgaXQgZmlyc3QgaWYgbmVjZXNzYXJ5XG5cdFx0XHRcdFx0XHRpZiAoICggbmlkID0gY29udGV4dC5nZXRBdHRyaWJ1dGUoIFwiaWRcIiApICkgKSB7XG5cdFx0XHRcdFx0XHRcdG5pZCA9IG5pZC5yZXBsYWNlKCByY3NzZXNjYXBlLCBmY3NzZXNjYXBlICk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRjb250ZXh0LnNldEF0dHJpYnV0ZSggXCJpZFwiLCAoIG5pZCA9IGV4cGFuZG8gKSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFByZWZpeCBldmVyeSBzZWxlY3RvciBpbiB0aGUgbGlzdFxuXHRcdFx0XHRcdGdyb3VwcyA9IHRva2VuaXplKCBzZWxlY3RvciApO1xuXHRcdFx0XHRcdGkgPSBncm91cHMubGVuZ3RoO1xuXHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0Z3JvdXBzWyBpIF0gPSAoIG5pZCA/IFwiI1wiICsgbmlkIDogXCI6c2NvcGVcIiApICsgXCIgXCIgK1xuXHRcdFx0XHRcdFx0XHR0b1NlbGVjdG9yKCBncm91cHNbIGkgXSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRuZXdTZWxlY3RvciA9IGdyb3Vwcy5qb2luKCBcIixcIiApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLFxuXHRcdFx0XHRcdFx0bmV3Q29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCBuZXdTZWxlY3RvciApXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0fSBjYXRjaCAoIHFzYUVycm9yICkge1xuXHRcdFx0XHRcdG5vbm5hdGl2ZVNlbGVjdG9yQ2FjaGUoIHNlbGVjdG9yLCB0cnVlICk7XG5cdFx0XHRcdH0gZmluYWxseSB7XG5cdFx0XHRcdFx0aWYgKCBuaWQgPT09IGV4cGFuZG8gKSB7XG5cdFx0XHRcdFx0XHRjb250ZXh0LnJlbW92ZUF0dHJpYnV0ZSggXCJpZFwiICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQWxsIG90aGVyc1xuXHRyZXR1cm4gc2VsZWN0KCBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgXCIkMVwiICksIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUga2V5LXZhbHVlIGNhY2hlcyBvZiBsaW1pdGVkIHNpemVcbiAqIEByZXR1cm5zIHtmdW5jdGlvbihzdHJpbmcsIG9iamVjdCl9IFJldHVybnMgdGhlIE9iamVjdCBkYXRhIGFmdGVyIHN0b3JpbmcgaXQgb24gaXRzZWxmIHdpdGhcbiAqXHRwcm9wZXJ0eSBuYW1lIHRoZSAoc3BhY2Utc3VmZml4ZWQpIHN0cmluZyBhbmQgKGlmIHRoZSBjYWNoZSBpcyBsYXJnZXIgdGhhbiBFeHByLmNhY2hlTGVuZ3RoKVxuICpcdGRlbGV0aW5nIHRoZSBvbGRlc3QgZW50cnlcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQ2FjaGUoKSB7XG5cdHZhciBrZXlzID0gW107XG5cblx0ZnVuY3Rpb24gY2FjaGUoIGtleSwgdmFsdWUgKSB7XG5cblx0XHQvLyBVc2UgKGtleSArIFwiIFwiKSB0byBhdm9pZCBjb2xsaXNpb24gd2l0aCBuYXRpdmUgcHJvdG90eXBlIHByb3BlcnRpZXMgKHNlZSBJc3N1ZSAjMTU3KVxuXHRcdGlmICgga2V5cy5wdXNoKCBrZXkgKyBcIiBcIiApID4gRXhwci5jYWNoZUxlbmd0aCApIHtcblxuXHRcdFx0Ly8gT25seSBrZWVwIHRoZSBtb3N0IHJlY2VudCBlbnRyaWVzXG5cdFx0XHRkZWxldGUgY2FjaGVbIGtleXMuc2hpZnQoKSBdO1xuXHRcdH1cblx0XHRyZXR1cm4gKCBjYWNoZVsga2V5ICsgXCIgXCIgXSA9IHZhbHVlICk7XG5cdH1cblx0cmV0dXJuIGNhY2hlO1xufVxuXG4vKipcbiAqIE1hcmsgYSBmdW5jdGlvbiBmb3Igc3BlY2lhbCB1c2UgYnkgU2l6emxlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgZnVuY3Rpb24gdG8gbWFya1xuICovXG5mdW5jdGlvbiBtYXJrRnVuY3Rpb24oIGZuICkge1xuXHRmblsgZXhwYW5kbyBdID0gdHJ1ZTtcblx0cmV0dXJuIGZuO1xufVxuXG4vKipcbiAqIFN1cHBvcnQgdGVzdGluZyB1c2luZyBhbiBlbGVtZW50XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBQYXNzZWQgdGhlIGNyZWF0ZWQgZWxlbWVudCBhbmQgcmV0dXJucyBhIGJvb2xlYW4gcmVzdWx0XG4gKi9cbmZ1bmN0aW9uIGFzc2VydCggZm4gKSB7XG5cdHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiZmllbGRzZXRcIiApO1xuXG5cdHRyeSB7XG5cdFx0cmV0dXJuICEhZm4oIGVsICk7XG5cdH0gY2F0Y2ggKCBlICkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fSBmaW5hbGx5IHtcblxuXHRcdC8vIFJlbW92ZSBmcm9tIGl0cyBwYXJlbnQgYnkgZGVmYXVsdFxuXHRcdGlmICggZWwucGFyZW50Tm9kZSApIHtcblx0XHRcdGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIGVsICk7XG5cdFx0fVxuXG5cdFx0Ly8gcmVsZWFzZSBtZW1vcnkgaW4gSUVcblx0XHRlbCA9IG51bGw7XG5cdH1cbn1cblxuLyoqXG4gKiBBZGRzIHRoZSBzYW1lIGhhbmRsZXIgZm9yIGFsbCBvZiB0aGUgc3BlY2lmaWVkIGF0dHJzXG4gKiBAcGFyYW0ge1N0cmluZ30gYXR0cnMgUGlwZS1zZXBhcmF0ZWQgbGlzdCBvZiBhdHRyaWJ1dGVzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIFRoZSBtZXRob2QgdGhhdCB3aWxsIGJlIGFwcGxpZWRcbiAqL1xuZnVuY3Rpb24gYWRkSGFuZGxlKCBhdHRycywgaGFuZGxlciApIHtcblx0dmFyIGFyciA9IGF0dHJzLnNwbGl0KCBcInxcIiApLFxuXHRcdGkgPSBhcnIubGVuZ3RoO1xuXG5cdHdoaWxlICggaS0tICkge1xuXHRcdEV4cHIuYXR0ckhhbmRsZVsgYXJyWyBpIF0gXSA9IGhhbmRsZXI7XG5cdH1cbn1cblxuLyoqXG4gKiBDaGVja3MgZG9jdW1lbnQgb3JkZXIgb2YgdHdvIHNpYmxpbmdzXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGFcbiAqIEBwYXJhbSB7RWxlbWVudH0gYlxuICogQHJldHVybnMge051bWJlcn0gUmV0dXJucyBsZXNzIHRoYW4gMCBpZiBhIHByZWNlZGVzIGIsIGdyZWF0ZXIgdGhhbiAwIGlmIGEgZm9sbG93cyBiXG4gKi9cbmZ1bmN0aW9uIHNpYmxpbmdDaGVjayggYSwgYiApIHtcblx0dmFyIGN1ciA9IGIgJiYgYSxcblx0XHRkaWZmID0gY3VyICYmIGEubm9kZVR5cGUgPT09IDEgJiYgYi5ub2RlVHlwZSA9PT0gMSAmJlxuXHRcdFx0YS5zb3VyY2VJbmRleCAtIGIuc291cmNlSW5kZXg7XG5cblx0Ly8gVXNlIElFIHNvdXJjZUluZGV4IGlmIGF2YWlsYWJsZSBvbiBib3RoIG5vZGVzXG5cdGlmICggZGlmZiApIHtcblx0XHRyZXR1cm4gZGlmZjtcblx0fVxuXG5cdC8vIENoZWNrIGlmIGIgZm9sbG93cyBhXG5cdGlmICggY3VyICkge1xuXHRcdHdoaWxlICggKCBjdXIgPSBjdXIubmV4dFNpYmxpbmcgKSApIHtcblx0XHRcdGlmICggY3VyID09PSBiICkge1xuXHRcdFx0XHRyZXR1cm4gLTE7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGEgPyAxIDogLTE7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBpbnB1dCB0eXBlc1xuICogQHBhcmFtIHtTdHJpbmd9IHR5cGVcbiAqL1xuZnVuY3Rpb24gY3JlYXRlSW5wdXRQc2V1ZG8oIHR5cGUgKSB7XG5cdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHR2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRyZXR1cm4gbmFtZSA9PT0gXCJpbnB1dFwiICYmIGVsZW0udHlwZSA9PT0gdHlwZTtcblx0fTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVkb3MgZm9yIGJ1dHRvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUJ1dHRvblBzZXVkbyggdHlwZSApIHtcblx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdHJldHVybiAoIG5hbWUgPT09IFwiaW5wdXRcIiB8fCBuYW1lID09PSBcImJ1dHRvblwiICkgJiYgZWxlbS50eXBlID09PSB0eXBlO1xuXHR9O1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgOmVuYWJsZWQvOmRpc2FibGVkXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGRpc2FibGVkIHRydWUgZm9yIDpkaXNhYmxlZDsgZmFsc2UgZm9yIDplbmFibGVkXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZURpc2FibGVkUHNldWRvKCBkaXNhYmxlZCApIHtcblxuXHQvLyBLbm93biA6ZGlzYWJsZWQgZmFsc2UgcG9zaXRpdmVzOiBmaWVsZHNldFtkaXNhYmxlZF0gPiBsZWdlbmQ6bnRoLW9mLXR5cGUobisyKSA6Y2FuLWRpc2FibGVcblx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdFx0Ly8gT25seSBjZXJ0YWluIGVsZW1lbnRzIGNhbiBtYXRjaCA6ZW5hYmxlZCBvciA6ZGlzYWJsZWRcblx0XHQvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNzZWxlY3Rvci1lbmFibGVkXG5cdFx0Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc2NyaXB0aW5nLmh0bWwjc2VsZWN0b3ItZGlzYWJsZWRcblx0XHRpZiAoIFwiZm9ybVwiIGluIGVsZW0gKSB7XG5cblx0XHRcdC8vIENoZWNrIGZvciBpbmhlcml0ZWQgZGlzYWJsZWRuZXNzIG9uIHJlbGV2YW50IG5vbi1kaXNhYmxlZCBlbGVtZW50czpcblx0XHRcdC8vICogbGlzdGVkIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50cyBpbiBhIGRpc2FibGVkIGZpZWxkc2V0XG5cdFx0XHQvLyAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm1zLmh0bWwjY2F0ZWdvcnktbGlzdGVkXG5cdFx0XHQvLyAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm1zLmh0bWwjY29uY2VwdC1mZS1kaXNhYmxlZFxuXHRcdFx0Ly8gKiBvcHRpb24gZWxlbWVudHMgaW4gYSBkaXNhYmxlZCBvcHRncm91cFxuXHRcdFx0Ly8gICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI2NvbmNlcHQtb3B0aW9uLWRpc2FibGVkXG5cdFx0XHQvLyBBbGwgc3VjaCBlbGVtZW50cyBoYXZlIGEgXCJmb3JtXCIgcHJvcGVydHkuXG5cdFx0XHRpZiAoIGVsZW0ucGFyZW50Tm9kZSAmJiBlbGVtLmRpc2FibGVkID09PSBmYWxzZSApIHtcblxuXHRcdFx0XHQvLyBPcHRpb24gZWxlbWVudHMgZGVmZXIgdG8gYSBwYXJlbnQgb3B0Z3JvdXAgaWYgcHJlc2VudFxuXHRcdFx0XHRpZiAoIFwibGFiZWxcIiBpbiBlbGVtICkge1xuXHRcdFx0XHRcdGlmICggXCJsYWJlbFwiIGluIGVsZW0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0XHRcdHJldHVybiBlbGVtLnBhcmVudE5vZGUuZGlzYWJsZWQgPT09IGRpc2FibGVkO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgNiAtIDExXG5cdFx0XHRcdC8vIFVzZSB0aGUgaXNEaXNhYmxlZCBzaG9ydGN1dCBwcm9wZXJ0eSB0byBjaGVjayBmb3IgZGlzYWJsZWQgZmllbGRzZXQgYW5jZXN0b3JzXG5cdFx0XHRcdHJldHVybiBlbGVtLmlzRGlzYWJsZWQgPT09IGRpc2FibGVkIHx8XG5cblx0XHRcdFx0XHQvLyBXaGVyZSB0aGVyZSBpcyBubyBpc0Rpc2FibGVkLCBjaGVjayBtYW51YWxseVxuXHRcdFx0XHRcdC8qIGpzaGludCAtVzAxOCAqL1xuXHRcdFx0XHRcdGVsZW0uaXNEaXNhYmxlZCAhPT0gIWRpc2FibGVkICYmXG5cdFx0XHRcdFx0aW5EaXNhYmxlZEZpZWxkc2V0KCBlbGVtICkgPT09IGRpc2FibGVkO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7XG5cblx0XHQvLyBUcnkgdG8gd2lubm93IG91dCBlbGVtZW50cyB0aGF0IGNhbid0IGJlIGRpc2FibGVkIGJlZm9yZSB0cnVzdGluZyB0aGUgZGlzYWJsZWQgcHJvcGVydHkuXG5cdFx0Ly8gU29tZSB2aWN0aW1zIGdldCBjYXVnaHQgaW4gb3VyIG5ldCAobGFiZWwsIGxlZ2VuZCwgbWVudSwgdHJhY2spLCBidXQgaXQgc2hvdWxkbid0XG5cdFx0Ly8gZXZlbiBleGlzdCBvbiB0aGVtLCBsZXQgYWxvbmUgaGF2ZSBhIGJvb2xlYW4gdmFsdWUuXG5cdFx0fSBlbHNlIGlmICggXCJsYWJlbFwiIGluIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7XG5cdFx0fVxuXG5cdFx0Ly8gUmVtYWluaW5nIGVsZW1lbnRzIGFyZSBuZWl0aGVyIDplbmFibGVkIG5vciA6ZGlzYWJsZWRcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBwb3NpdGlvbmFsc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gZm5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlUG9zaXRpb25hbFBzZXVkbyggZm4gKSB7XG5cdHJldHVybiBtYXJrRnVuY3Rpb24oIGZ1bmN0aW9uKCBhcmd1bWVudCApIHtcblx0XHRhcmd1bWVudCA9ICthcmd1bWVudDtcblx0XHRyZXR1cm4gbWFya0Z1bmN0aW9uKCBmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcyApIHtcblx0XHRcdHZhciBqLFxuXHRcdFx0XHRtYXRjaEluZGV4ZXMgPSBmbiggW10sIHNlZWQubGVuZ3RoLCBhcmd1bWVudCApLFxuXHRcdFx0XHRpID0gbWF0Y2hJbmRleGVzLmxlbmd0aDtcblxuXHRcdFx0Ly8gTWF0Y2ggZWxlbWVudHMgZm91bmQgYXQgdGhlIHNwZWNpZmllZCBpbmRleGVzXG5cdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0aWYgKCBzZWVkWyAoIGogPSBtYXRjaEluZGV4ZXNbIGkgXSApIF0gKSB7XG5cdFx0XHRcdFx0c2VlZFsgaiBdID0gISggbWF0Y2hlc1sgaiBdID0gc2VlZFsgaiBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9ICk7XG5cdH0gKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgYSBub2RlIGZvciB2YWxpZGl0eSBhcyBhIFNpenpsZSBjb250ZXh0XG4gKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0PX0gY29udGV4dFxuICogQHJldHVybnMge0VsZW1lbnR8T2JqZWN0fEJvb2xlYW59IFRoZSBpbnB1dCBub2RlIGlmIGFjY2VwdGFibGUsIG90aGVyd2lzZSBhIGZhbHN5IHZhbHVlXG4gKi9cbmZ1bmN0aW9uIHRlc3RDb250ZXh0KCBjb250ZXh0ICkge1xuXHRyZXR1cm4gY29udGV4dCAmJiB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBjb250ZXh0O1xufVxuXG4vLyBFeHBvc2Ugc3VwcG9ydCB2YXJzIGZvciBjb252ZW5pZW5jZVxuc3VwcG9ydCA9IFNpenpsZS5zdXBwb3J0ID0ge307XG5cbi8qKlxuICogRGV0ZWN0cyBYTUwgbm9kZXNcbiAqIEBwYXJhbSB7RWxlbWVudHxPYmplY3R9IGVsZW0gQW4gZWxlbWVudCBvciBhIGRvY3VtZW50XG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZmYgZWxlbSBpcyBhIG5vbi1IVE1MIFhNTCBub2RlXG4gKi9cbmlzWE1MID0gU2l6emxlLmlzWE1MID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdHZhciBuYW1lc3BhY2UgPSBlbGVtICYmIGVsZW0ubmFtZXNwYWNlVVJJLFxuXHRcdGRvY0VsZW0gPSBlbGVtICYmICggZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0gKS5kb2N1bWVudEVsZW1lbnQ7XG5cblx0Ly8gU3VwcG9ydDogSUUgPD04XG5cdC8vIEFzc3VtZSBIVE1MIHdoZW4gZG9jdW1lbnRFbGVtZW50IGRvZXNuJ3QgeWV0IGV4aXN0LCBzdWNoIGFzIGluc2lkZSBsb2FkaW5nIGlmcmFtZXNcblx0Ly8gaHR0cHM6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzQ4MzNcblx0cmV0dXJuICFyaHRtbC50ZXN0KCBuYW1lc3BhY2UgfHwgZG9jRWxlbSAmJiBkb2NFbGVtLm5vZGVOYW1lIHx8IFwiSFRNTFwiICk7XG59O1xuXG4vKipcbiAqIFNldHMgZG9jdW1lbnQtcmVsYXRlZCB2YXJpYWJsZXMgb25jZSBiYXNlZCBvbiB0aGUgY3VycmVudCBkb2N1bWVudFxuICogQHBhcmFtIHtFbGVtZW50fE9iamVjdH0gW2RvY10gQW4gZWxlbWVudCBvciBkb2N1bWVudCBvYmplY3QgdG8gdXNlIHRvIHNldCB0aGUgZG9jdW1lbnRcbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGN1cnJlbnQgZG9jdW1lbnRcbiAqL1xuc2V0RG9jdW1lbnQgPSBTaXp6bGUuc2V0RG9jdW1lbnQgPSBmdW5jdGlvbiggbm9kZSApIHtcblx0dmFyIGhhc0NvbXBhcmUsIHN1YldpbmRvdyxcblx0XHRkb2MgPSBub2RlID8gbm9kZS5vd25lckRvY3VtZW50IHx8IG5vZGUgOiBwcmVmZXJyZWREb2M7XG5cblx0Ly8gUmV0dXJuIGVhcmx5IGlmIGRvYyBpcyBpbnZhbGlkIG9yIGFscmVhZHkgc2VsZWN0ZWRcblx0Ly8gU3VwcG9ydDogSUUgMTErLCBFZGdlIDE3IC0gMTgrXG5cdC8vIElFL0VkZ2Ugc29tZXRpbWVzIHRocm93IGEgXCJQZXJtaXNzaW9uIGRlbmllZFwiIGVycm9yIHdoZW4gc3RyaWN0LWNvbXBhcmluZ1xuXHQvLyB0d28gZG9jdW1lbnRzOyBzaGFsbG93IGNvbXBhcmlzb25zIHdvcmsuXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcblx0aWYgKCBkb2MgPT0gZG9jdW1lbnQgfHwgZG9jLm5vZGVUeXBlICE9PSA5IHx8ICFkb2MuZG9jdW1lbnRFbGVtZW50ICkge1xuXHRcdHJldHVybiBkb2N1bWVudDtcblx0fVxuXG5cdC8vIFVwZGF0ZSBnbG9iYWwgdmFyaWFibGVzXG5cdGRvY3VtZW50ID0gZG9jO1xuXHRkb2NFbGVtID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXHRkb2N1bWVudElzSFRNTCA9ICFpc1hNTCggZG9jdW1lbnQgKTtcblxuXHQvLyBTdXBwb3J0OiBJRSA5IC0gMTErLCBFZGdlIDEyIC0gMTgrXG5cdC8vIEFjY2Vzc2luZyBpZnJhbWUgZG9jdW1lbnRzIGFmdGVyIHVubG9hZCB0aHJvd3MgXCJwZXJtaXNzaW9uIGRlbmllZFwiIGVycm9ycyAoalF1ZXJ5ICMxMzkzNilcblx0Ly8gU3VwcG9ydDogSUUgMTErLCBFZGdlIDE3IC0gMTgrXG5cdC8vIElFL0VkZ2Ugc29tZXRpbWVzIHRocm93IGEgXCJQZXJtaXNzaW9uIGRlbmllZFwiIGVycm9yIHdoZW4gc3RyaWN0LWNvbXBhcmluZ1xuXHQvLyB0d28gZG9jdW1lbnRzOyBzaGFsbG93IGNvbXBhcmlzb25zIHdvcmsuXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcblx0aWYgKCBwcmVmZXJyZWREb2MgIT0gZG9jdW1lbnQgJiZcblx0XHQoIHN1YldpbmRvdyA9IGRvY3VtZW50LmRlZmF1bHRWaWV3ICkgJiYgc3ViV2luZG93LnRvcCAhPT0gc3ViV2luZG93ICkge1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgMTEsIEVkZ2Vcblx0XHRpZiAoIHN1YldpbmRvdy5hZGRFdmVudExpc3RlbmVyICkge1xuXHRcdFx0c3ViV2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIFwidW5sb2FkXCIsIHVubG9hZEhhbmRsZXIsIGZhbHNlICk7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA5IC0gMTAgb25seVxuXHRcdH0gZWxzZSBpZiAoIHN1YldpbmRvdy5hdHRhY2hFdmVudCApIHtcblx0XHRcdHN1YldpbmRvdy5hdHRhY2hFdmVudCggXCJvbnVubG9hZFwiLCB1bmxvYWRIYW5kbGVyICk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gU3VwcG9ydDogSUUgOCAtIDExKywgRWRnZSAxMiAtIDE4KywgQ2hyb21lIDw9MTYgLSAyNSBvbmx5LCBGaXJlZm94IDw9My42IC0gMzEgb25seSxcblx0Ly8gU2FmYXJpIDQgLSA1IG9ubHksIE9wZXJhIDw9MTEuNiAtIDEyLnggb25seVxuXHQvLyBJRS9FZGdlICYgb2xkZXIgYnJvd3NlcnMgZG9uJ3Qgc3VwcG9ydCB0aGUgOnNjb3BlIHBzZXVkby1jbGFzcy5cblx0Ly8gU3VwcG9ydDogU2FmYXJpIDYuMCBvbmx5XG5cdC8vIFNhZmFyaSA2LjAgc3VwcG9ydHMgOnNjb3BlIGJ1dCBpdCdzIGFuIGFsaWFzIG9mIDpyb290IHRoZXJlLlxuXHRzdXBwb3J0LnNjb3BlID0gYXNzZXJ0KCBmdW5jdGlvbiggZWwgKSB7XG5cdFx0ZG9jRWxlbS5hcHBlbmRDaGlsZCggZWwgKS5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApICk7XG5cdFx0cmV0dXJuIHR5cGVvZiBlbC5xdWVyeVNlbGVjdG9yQWxsICE9PSBcInVuZGVmaW5lZFwiICYmXG5cdFx0XHQhZWwucXVlcnlTZWxlY3RvckFsbCggXCI6c2NvcGUgZmllbGRzZXQgZGl2XCIgKS5sZW5ndGg7XG5cdH0gKTtcblxuXHQvKiBBdHRyaWJ1dGVzXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvLyBTdXBwb3J0OiBJRTw4XG5cdC8vIFZlcmlmeSB0aGF0IGdldEF0dHJpYnV0ZSByZWFsbHkgcmV0dXJucyBhdHRyaWJ1dGVzIGFuZCBub3QgcHJvcGVydGllc1xuXHQvLyAoZXhjZXB0aW5nIElFOCBib29sZWFucylcblx0c3VwcG9ydC5hdHRyaWJ1dGVzID0gYXNzZXJ0KCBmdW5jdGlvbiggZWwgKSB7XG5cdFx0ZWwuY2xhc3NOYW1lID0gXCJpXCI7XG5cdFx0cmV0dXJuICFlbC5nZXRBdHRyaWJ1dGUoIFwiY2xhc3NOYW1lXCIgKTtcblx0fSApO1xuXG5cdC8qIGdldEVsZW1lbnQocylCeSpcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC8vIENoZWNrIGlmIGdldEVsZW1lbnRzQnlUYWdOYW1lKFwiKlwiKSByZXR1cm5zIG9ubHkgZWxlbWVudHNcblx0c3VwcG9ydC5nZXRFbGVtZW50c0J5VGFnTmFtZSA9IGFzc2VydCggZnVuY3Rpb24oIGVsICkge1xuXHRcdGVsLmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVDb21tZW50KCBcIlwiICkgKTtcblx0XHRyZXR1cm4gIWVsLmdldEVsZW1lbnRzQnlUYWdOYW1lKCBcIipcIiApLmxlbmd0aDtcblx0fSApO1xuXG5cdC8vIFN1cHBvcnQ6IElFPDlcblx0c3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lID0gcm5hdGl2ZS50ZXN0KCBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICk7XG5cblx0Ly8gU3VwcG9ydDogSUU8MTBcblx0Ly8gQ2hlY2sgaWYgZ2V0RWxlbWVudEJ5SWQgcmV0dXJucyBlbGVtZW50cyBieSBuYW1lXG5cdC8vIFRoZSBicm9rZW4gZ2V0RWxlbWVudEJ5SWQgbWV0aG9kcyBkb24ndCBwaWNrIHVwIHByb2dyYW1tYXRpY2FsbHktc2V0IG5hbWVzLFxuXHQvLyBzbyB1c2UgYSByb3VuZGFib3V0IGdldEVsZW1lbnRzQnlOYW1lIHRlc3Rcblx0c3VwcG9ydC5nZXRCeUlkID0gYXNzZXJ0KCBmdW5jdGlvbiggZWwgKSB7XG5cdFx0ZG9jRWxlbS5hcHBlbmRDaGlsZCggZWwgKS5pZCA9IGV4cGFuZG87XG5cdFx0cmV0dXJuICFkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSB8fCAhZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoIGV4cGFuZG8gKS5sZW5ndGg7XG5cdH0gKTtcblxuXHQvLyBJRCBmaWx0ZXIgYW5kIGZpbmRcblx0aWYgKCBzdXBwb3J0LmdldEJ5SWQgKSB7XG5cdFx0RXhwci5maWx0ZXJbIFwiSURcIiBdID0gZnVuY3Rpb24oIGlkICkge1xuXHRcdFx0dmFyIGF0dHJJZCA9IGlkLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSggXCJpZFwiICkgPT09IGF0dHJJZDtcblx0XHRcdH07XG5cdFx0fTtcblx0XHRFeHByLmZpbmRbIFwiSURcIiBdID0gZnVuY3Rpb24oIGlkLCBjb250ZXh0ICkge1xuXHRcdFx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50QnlJZCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkb2N1bWVudElzSFRNTCApIHtcblx0XHRcdFx0dmFyIGVsZW0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKCBpZCApO1xuXHRcdFx0XHRyZXR1cm4gZWxlbSA/IFsgZWxlbSBdIDogW107XG5cdFx0XHR9XG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHRFeHByLmZpbHRlclsgXCJJRFwiIF0gPSAgZnVuY3Rpb24oIGlkICkge1xuXHRcdFx0dmFyIGF0dHJJZCA9IGlkLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciBub2RlID0gdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlTm9kZSAhPT0gXCJ1bmRlZmluZWRcIiAmJlxuXHRcdFx0XHRcdGVsZW0uZ2V0QXR0cmlidXRlTm9kZSggXCJpZFwiICk7XG5cdFx0XHRcdHJldHVybiBub2RlICYmIG5vZGUudmFsdWUgPT09IGF0dHJJZDtcblx0XHRcdH07XG5cdFx0fTtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDYgLSA3IG9ubHlcblx0XHQvLyBnZXRFbGVtZW50QnlJZCBpcyBub3QgcmVsaWFibGUgYXMgYSBmaW5kIHNob3J0Y3V0XG5cdFx0RXhwci5maW5kWyBcIklEXCIgXSA9IGZ1bmN0aW9uKCBpZCwgY29udGV4dCApIHtcblx0XHRcdGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQgIT09IFwidW5kZWZpbmVkXCIgJiYgZG9jdW1lbnRJc0hUTUwgKSB7XG5cdFx0XHRcdHZhciBub2RlLCBpLCBlbGVtcyxcblx0XHRcdFx0XHRlbGVtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggaWQgKTtcblxuXHRcdFx0XHRpZiAoIGVsZW0gKSB7XG5cblx0XHRcdFx0XHQvLyBWZXJpZnkgdGhlIGlkIGF0dHJpYnV0ZVxuXHRcdFx0XHRcdG5vZGUgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoIFwiaWRcIiApO1xuXHRcdFx0XHRcdGlmICggbm9kZSAmJiBub2RlLnZhbHVlID09PSBpZCApIHtcblx0XHRcdFx0XHRcdHJldHVybiBbIGVsZW0gXTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBGYWxsIGJhY2sgb24gZ2V0RWxlbWVudHNCeU5hbWVcblx0XHRcdFx0XHRlbGVtcyA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeU5hbWUoIGlkICk7XG5cdFx0XHRcdFx0aSA9IDA7XG5cdFx0XHRcdFx0d2hpbGUgKCAoIGVsZW0gPSBlbGVtc1sgaSsrIF0gKSApIHtcblx0XHRcdFx0XHRcdG5vZGUgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoIFwiaWRcIiApO1xuXHRcdFx0XHRcdFx0aWYgKCBub2RlICYmIG5vZGUudmFsdWUgPT09IGlkICkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gWyBlbGVtIF07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIFtdO1xuXHRcdFx0fVxuXHRcdH07XG5cdH1cblxuXHQvLyBUYWdcblx0RXhwci5maW5kWyBcIlRBR1wiIF0gPSBzdXBwb3J0LmdldEVsZW1lbnRzQnlUYWdOYW1lID9cblx0XHRmdW5jdGlvbiggdGFnLCBjb250ZXh0ICkge1xuXHRcdFx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gXCJ1bmRlZmluZWRcIiApIHtcblx0XHRcdFx0cmV0dXJuIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApO1xuXG5cdFx0XHQvLyBEb2N1bWVudEZyYWdtZW50IG5vZGVzIGRvbid0IGhhdmUgZ0VCVE5cblx0XHRcdH0gZWxzZSBpZiAoIHN1cHBvcnQucXNhICkge1xuXHRcdFx0XHRyZXR1cm4gY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCB0YWcgKTtcblx0XHRcdH1cblx0XHR9IDpcblxuXHRcdGZ1bmN0aW9uKCB0YWcsIGNvbnRleHQgKSB7XG5cdFx0XHR2YXIgZWxlbSxcblx0XHRcdFx0dG1wID0gW10sXG5cdFx0XHRcdGkgPSAwLFxuXG5cdFx0XHRcdC8vIEJ5IGhhcHB5IGNvaW5jaWRlbmNlLCBhIChicm9rZW4pIGdFQlROIGFwcGVhcnMgb24gRG9jdW1lbnRGcmFnbWVudCBub2RlcyB0b29cblx0XHRcdFx0cmVzdWx0cyA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApO1xuXG5cdFx0XHQvLyBGaWx0ZXIgb3V0IHBvc3NpYmxlIGNvbW1lbnRzXG5cdFx0XHRpZiAoIHRhZyA9PT0gXCIqXCIgKSB7XG5cdFx0XHRcdHdoaWxlICggKCBlbGVtID0gcmVzdWx0c1sgaSsrIF0gKSApIHtcblx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdFx0XHR0bXAucHVzaCggZWxlbSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiB0bXA7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHR9O1xuXG5cdC8vIENsYXNzXG5cdEV4cHIuZmluZFsgXCJDTEFTU1wiIF0gPSBzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgJiYgZnVuY3Rpb24oIGNsYXNzTmFtZSwgY29udGV4dCApIHtcblx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgIT09IFwidW5kZWZpbmVkXCIgJiYgZG9jdW1lbnRJc0hUTUwgKSB7XG5cdFx0XHRyZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCBjbGFzc05hbWUgKTtcblx0XHR9XG5cdH07XG5cblx0LyogUVNBL21hdGNoZXNTZWxlY3RvclxuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gUVNBIGFuZCBtYXRjaGVzU2VsZWN0b3Igc3VwcG9ydFxuXG5cdC8vIG1hdGNoZXNTZWxlY3Rvcig6YWN0aXZlKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoSUU5L09wZXJhIDExLjUpXG5cdHJidWdneU1hdGNoZXMgPSBbXTtcblxuXHQvLyBxU2EoOmZvY3VzKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoQ2hyb21lIDIxKVxuXHQvLyBXZSBhbGxvdyB0aGlzIGJlY2F1c2Ugb2YgYSBidWcgaW4gSUU4LzkgdGhhdCB0aHJvd3MgYW4gZXJyb3Jcblx0Ly8gd2hlbmV2ZXIgYGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRgIGlzIGFjY2Vzc2VkIG9uIGFuIGlmcmFtZVxuXHQvLyBTbywgd2UgYWxsb3cgOmZvY3VzIHRvIHBhc3MgdGhyb3VnaCBRU0EgYWxsIHRoZSB0aW1lIHRvIGF2b2lkIHRoZSBJRSBlcnJvclxuXHQvLyBTZWUgaHR0cHM6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzEzMzc4XG5cdHJidWdneVFTQSA9IFtdO1xuXG5cdGlmICggKCBzdXBwb3J0LnFzYSA9IHJuYXRpdmUudGVzdCggZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCApICkgKSB7XG5cblx0XHQvLyBCdWlsZCBRU0EgcmVnZXhcblx0XHQvLyBSZWdleCBzdHJhdGVneSBhZG9wdGVkIGZyb20gRGllZ28gUGVyaW5pXG5cdFx0YXNzZXJ0KCBmdW5jdGlvbiggZWwgKSB7XG5cblx0XHRcdHZhciBpbnB1dDtcblxuXHRcdFx0Ly8gU2VsZWN0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcgb24gcHVycG9zZVxuXHRcdFx0Ly8gVGhpcyBpcyB0byB0ZXN0IElFJ3MgdHJlYXRtZW50IG9mIG5vdCBleHBsaWNpdGx5XG5cdFx0XHQvLyBzZXR0aW5nIGEgYm9vbGVhbiBjb250ZW50IGF0dHJpYnV0ZSxcblx0XHRcdC8vIHNpbmNlIGl0cyBwcmVzZW5jZSBzaG91bGQgYmUgZW5vdWdoXG5cdFx0XHQvLyBodHRwczovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTIzNTlcblx0XHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGVsICkuaW5uZXJIVE1MID0gXCI8YSBpZD0nXCIgKyBleHBhbmRvICsgXCInPjwvYT5cIiArXG5cdFx0XHRcdFwiPHNlbGVjdCBpZD0nXCIgKyBleHBhbmRvICsgXCItXFxyXFxcXCcgbXNhbGxvd2NhcHR1cmU9Jyc+XCIgK1xuXHRcdFx0XHRcIjxvcHRpb24gc2VsZWN0ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+XCI7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOCwgT3BlcmEgMTEtMTIuMTZcblx0XHRcdC8vIE5vdGhpbmcgc2hvdWxkIGJlIHNlbGVjdGVkIHdoZW4gZW1wdHkgc3RyaW5ncyBmb2xsb3cgXj0gb3IgJD0gb3IgKj1cblx0XHRcdC8vIFRoZSB0ZXN0IGF0dHJpYnV0ZSBtdXN0IGJlIHVua25vd24gaW4gT3BlcmEgYnV0IFwic2FmZVwiIGZvciBXaW5SVFxuXHRcdFx0Ly8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9pZS9oaDQ2NTM4OC5hc3B4I2F0dHJpYnV0ZV9zZWN0aW9uXG5cdFx0XHRpZiAoIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiW21zYWxsb3djYXB0dXJlXj0nJ11cIiApLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiWypeJF09XCIgKyB3aGl0ZXNwYWNlICsgXCIqKD86Jyd8XFxcIlxcXCIpXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogSUU4XG5cdFx0XHQvLyBCb29sZWFuIGF0dHJpYnV0ZXMgYW5kIFwidmFsdWVcIiBhcmUgbm90IHRyZWF0ZWQgY29ycmVjdGx5XG5cdFx0XHRpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKCBcIltzZWxlY3RlZF1cIiApLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiXFxcXFtcIiArIHdoaXRlc3BhY2UgKyBcIiooPzp2YWx1ZXxcIiArIGJvb2xlYW5zICsgXCIpXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogQ2hyb21lPDI5LCBBbmRyb2lkPDQuNCwgU2FmYXJpPDcuMCssIGlPUzw3LjArLCBQaGFudG9tSlM8MS45LjgrXG5cdFx0XHRpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKCBcIltpZH49XCIgKyBleHBhbmRvICsgXCItXVwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCJ+PVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFIDExKywgRWRnZSAxNSAtIDE4K1xuXHRcdFx0Ly8gSUUgMTEvRWRnZSBkb24ndCBmaW5kIGVsZW1lbnRzIG9uIGEgYFtuYW1lPScnXWAgcXVlcnkgaW4gc29tZSBjYXNlcy5cblx0XHRcdC8vIEFkZGluZyBhIHRlbXBvcmFyeSBhdHRyaWJ1dGUgdG8gdGhlIGRvY3VtZW50IGJlZm9yZSB0aGUgc2VsZWN0aW9uIHdvcmtzXG5cdFx0XHQvLyBhcm91bmQgdGhlIGlzc3VlLlxuXHRcdFx0Ly8gSW50ZXJlc3RpbmdseSwgSUUgMTAgJiBvbGRlciBkb24ndCBzZWVtIHRvIGhhdmUgdGhlIGlzc3VlLlxuXHRcdFx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImlucHV0XCIgKTtcblx0XHRcdGlucHV0LnNldEF0dHJpYnV0ZSggXCJuYW1lXCIsIFwiXCIgKTtcblx0XHRcdGVsLmFwcGVuZENoaWxkKCBpbnB1dCApO1xuXHRcdFx0aWYgKCAhZWwucXVlcnlTZWxlY3RvckFsbCggXCJbbmFtZT0nJ11cIiApLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiXFxcXFtcIiArIHdoaXRlc3BhY2UgKyBcIipuYW1lXCIgKyB3aGl0ZXNwYWNlICsgXCIqPVwiICtcblx0XHRcdFx0XHR3aGl0ZXNwYWNlICsgXCIqKD86Jyd8XFxcIlxcXCIpXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gV2Via2l0L09wZXJhIC0gOmNoZWNrZWQgc2hvdWxkIHJldHVybiBzZWxlY3RlZCBvcHRpb24gZWxlbWVudHNcblx0XHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTEvUkVDLWNzczMtc2VsZWN0b3JzLTIwMTEwOTI5LyNjaGVja2VkXG5cdFx0XHQvLyBJRTggdGhyb3dzIGVycm9yIGhlcmUgYW5kIHdpbGwgbm90IHNlZSBsYXRlciB0ZXN0c1xuXHRcdFx0aWYgKCAhZWwucXVlcnlTZWxlY3RvckFsbCggXCI6Y2hlY2tlZFwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCI6Y2hlY2tlZFwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IFNhZmFyaSA4KywgaU9TIDgrXG5cdFx0XHQvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2ODUxXG5cdFx0XHQvLyBJbi1wYWdlIGBzZWxlY3RvciNpZCBzaWJsaW5nLWNvbWJpbmF0b3Igc2VsZWN0b3JgIGZhaWxzXG5cdFx0XHRpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKCBcImEjXCIgKyBleHBhbmRvICsgXCIrKlwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCIuIy4rWyt+XVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggPD0zLjYgLSA1IG9ubHlcblx0XHRcdC8vIE9sZCBGaXJlZm94IGRvZXNuJ3QgdGhyb3cgb24gYSBiYWRseS1lc2NhcGVkIGlkZW50aWZpZXIuXG5cdFx0XHRlbC5xdWVyeVNlbGVjdG9yQWxsKCBcIlxcXFxcXGZcIiApO1xuXHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiW1xcXFxyXFxcXG5cXFxcZl1cIiApO1xuXHRcdH0gKTtcblxuXHRcdGFzc2VydCggZnVuY3Rpb24oIGVsICkge1xuXHRcdFx0ZWwuaW5uZXJIVE1MID0gXCI8YSBocmVmPScnIGRpc2FibGVkPSdkaXNhYmxlZCc+PC9hPlwiICtcblx0XHRcdFx0XCI8c2VsZWN0IGRpc2FibGVkPSdkaXNhYmxlZCc+PG9wdGlvbi8+PC9zZWxlY3Q+XCI7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IFdpbmRvd3MgOCBOYXRpdmUgQXBwc1xuXHRcdFx0Ly8gVGhlIHR5cGUgYW5kIG5hbWUgYXR0cmlidXRlcyBhcmUgcmVzdHJpY3RlZCBkdXJpbmcgLmlubmVySFRNTCBhc3NpZ25tZW50XG5cdFx0XHR2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImlucHV0XCIgKTtcblx0XHRcdGlucHV0LnNldEF0dHJpYnV0ZSggXCJ0eXBlXCIsIFwiaGlkZGVuXCIgKTtcblx0XHRcdGVsLmFwcGVuZENoaWxkKCBpbnB1dCApLnNldEF0dHJpYnV0ZSggXCJuYW1lXCIsIFwiRFwiICk7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOFxuXHRcdFx0Ly8gRW5mb3JjZSBjYXNlLXNlbnNpdGl2aXR5IG9mIG5hbWUgYXR0cmlidXRlXG5cdFx0XHRpZiAoIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiW25hbWU9ZF1cIiApLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwibmFtZVwiICsgd2hpdGVzcGFjZSArIFwiKlsqXiR8IX5dPz1cIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBGRiAzLjUgLSA6ZW5hYmxlZC86ZGlzYWJsZWQgYW5kIGhpZGRlbiBlbGVtZW50cyAoaGlkZGVuIGVsZW1lbnRzIGFyZSBzdGlsbCBlbmFibGVkKVxuXHRcdFx0Ly8gSUU4IHRocm93cyBlcnJvciBoZXJlIGFuZCB3aWxsIG5vdCBzZWUgbGF0ZXIgdGVzdHNcblx0XHRcdGlmICggZWwucXVlcnlTZWxlY3RvckFsbCggXCI6ZW5hYmxlZFwiICkubGVuZ3RoICE9PSAyICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCI6ZW5hYmxlZFwiLCBcIjpkaXNhYmxlZFwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOS0xMStcblx0XHRcdC8vIElFJ3MgOmRpc2FibGVkIHNlbGVjdG9yIGRvZXMgbm90IHBpY2sgdXAgdGhlIGNoaWxkcmVuIG9mIGRpc2FibGVkIGZpZWxkc2V0c1xuXHRcdFx0ZG9jRWxlbS5hcHBlbmRDaGlsZCggZWwgKS5kaXNhYmxlZCA9IHRydWU7XG5cdFx0XHRpZiAoIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiOmRpc2FibGVkXCIgKS5sZW5ndGggIT09IDIgKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIjplbmFibGVkXCIsIFwiOmRpc2FibGVkXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogT3BlcmEgMTAgLSAxMSBvbmx5XG5cdFx0XHQvLyBPcGVyYSAxMC0xMSBkb2VzIG5vdCB0aHJvdyBvbiBwb3N0LWNvbW1hIGludmFsaWQgcHNldWRvc1xuXHRcdFx0ZWwucXVlcnlTZWxlY3RvckFsbCggXCIqLDp4XCIgKTtcblx0XHRcdHJidWdneVFTQS5wdXNoKCBcIiwuKjpcIiApO1xuXHRcdH0gKTtcblx0fVxuXG5cdGlmICggKCBzdXBwb3J0Lm1hdGNoZXNTZWxlY3RvciA9IHJuYXRpdmUudGVzdCggKCBtYXRjaGVzID0gZG9jRWxlbS5tYXRjaGVzIHx8XG5cdFx0ZG9jRWxlbS53ZWJraXRNYXRjaGVzU2VsZWN0b3IgfHxcblx0XHRkb2NFbGVtLm1vek1hdGNoZXNTZWxlY3RvciB8fFxuXHRcdGRvY0VsZW0ub01hdGNoZXNTZWxlY3RvciB8fFxuXHRcdGRvY0VsZW0ubXNNYXRjaGVzU2VsZWN0b3IgKSApICkgKSB7XG5cblx0XHRhc3NlcnQoIGZ1bmN0aW9uKCBlbCApIHtcblxuXHRcdFx0Ly8gQ2hlY2sgdG8gc2VlIGlmIGl0J3MgcG9zc2libGUgdG8gZG8gbWF0Y2hlc1NlbGVjdG9yXG5cdFx0XHQvLyBvbiBhIGRpc2Nvbm5lY3RlZCBub2RlIChJRSA5KVxuXHRcdFx0c3VwcG9ydC5kaXNjb25uZWN0ZWRNYXRjaCA9IG1hdGNoZXMuY2FsbCggZWwsIFwiKlwiICk7XG5cblx0XHRcdC8vIFRoaXMgc2hvdWxkIGZhaWwgd2l0aCBhbiBleGNlcHRpb25cblx0XHRcdC8vIEdlY2tvIGRvZXMgbm90IGVycm9yLCByZXR1cm5zIGZhbHNlIGluc3RlYWRcblx0XHRcdG1hdGNoZXMuY2FsbCggZWwsIFwiW3MhPScnXTp4XCIgKTtcblx0XHRcdHJidWdneU1hdGNoZXMucHVzaCggXCIhPVwiLCBwc2V1ZG9zICk7XG5cdFx0fSApO1xuXHR9XG5cblx0cmJ1Z2d5UVNBID0gcmJ1Z2d5UVNBLmxlbmd0aCAmJiBuZXcgUmVnRXhwKCByYnVnZ3lRU0Euam9pbiggXCJ8XCIgKSApO1xuXHRyYnVnZ3lNYXRjaGVzID0gcmJ1Z2d5TWF0Y2hlcy5sZW5ndGggJiYgbmV3IFJlZ0V4cCggcmJ1Z2d5TWF0Y2hlcy5qb2luKCBcInxcIiApICk7XG5cblx0LyogQ29udGFpbnNcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHRoYXNDb21wYXJlID0gcm5hdGl2ZS50ZXN0KCBkb2NFbGVtLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uICk7XG5cblx0Ly8gRWxlbWVudCBjb250YWlucyBhbm90aGVyXG5cdC8vIFB1cnBvc2VmdWxseSBzZWxmLWV4Y2x1c2l2ZVxuXHQvLyBBcyBpbiwgYW4gZWxlbWVudCBkb2VzIG5vdCBjb250YWluIGl0c2VsZlxuXHRjb250YWlucyA9IGhhc0NvbXBhcmUgfHwgcm5hdGl2ZS50ZXN0KCBkb2NFbGVtLmNvbnRhaW5zICkgP1xuXHRcdGZ1bmN0aW9uKCBhLCBiICkge1xuXHRcdFx0dmFyIGFkb3duID0gYS5ub2RlVHlwZSA9PT0gOSA/IGEuZG9jdW1lbnRFbGVtZW50IDogYSxcblx0XHRcdFx0YnVwID0gYiAmJiBiLnBhcmVudE5vZGU7XG5cdFx0XHRyZXR1cm4gYSA9PT0gYnVwIHx8ICEhKCBidXAgJiYgYnVwLm5vZGVUeXBlID09PSAxICYmIChcblx0XHRcdFx0YWRvd24uY29udGFpbnMgP1xuXHRcdFx0XHRcdGFkb3duLmNvbnRhaW5zKCBidXAgKSA6XG5cdFx0XHRcdFx0YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAmJiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBidXAgKSAmIDE2XG5cdFx0XHQpICk7XG5cdFx0fSA6XG5cdFx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0XHRpZiAoIGIgKSB7XG5cdFx0XHRcdHdoaWxlICggKCBiID0gYi5wYXJlbnROb2RlICkgKSB7XG5cdFx0XHRcdFx0aWYgKCBiID09PSBhICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fTtcblxuXHQvKiBTb3J0aW5nXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvLyBEb2N1bWVudCBvcmRlciBzb3J0aW5nXG5cdHNvcnRPcmRlciA9IGhhc0NvbXBhcmUgP1xuXHRmdW5jdGlvbiggYSwgYiApIHtcblxuXHRcdC8vIEZsYWcgZm9yIGR1cGxpY2F0ZSByZW1vdmFsXG5cdFx0aWYgKCBhID09PSBiICkge1xuXHRcdFx0aGFzRHVwbGljYXRlID0gdHJ1ZTtcblx0XHRcdHJldHVybiAwO1xuXHRcdH1cblxuXHRcdC8vIFNvcnQgb24gbWV0aG9kIGV4aXN0ZW5jZSBpZiBvbmx5IG9uZSBpbnB1dCBoYXMgY29tcGFyZURvY3VtZW50UG9zaXRpb25cblx0XHR2YXIgY29tcGFyZSA9ICFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIC0gIWIuY29tcGFyZURvY3VtZW50UG9zaXRpb247XG5cdFx0aWYgKCBjb21wYXJlICkge1xuXHRcdFx0cmV0dXJuIGNvbXBhcmU7XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsY3VsYXRlIHBvc2l0aW9uIGlmIGJvdGggaW5wdXRzIGJlbG9uZyB0byB0aGUgc2FtZSBkb2N1bWVudFxuXHRcdC8vIFN1cHBvcnQ6IElFIDExKywgRWRnZSAxNyAtIDE4K1xuXHRcdC8vIElFL0VkZ2Ugc29tZXRpbWVzIHRocm93IGEgXCJQZXJtaXNzaW9uIGRlbmllZFwiIGVycm9yIHdoZW4gc3RyaWN0LWNvbXBhcmluZ1xuXHRcdC8vIHR3byBkb2N1bWVudHM7IHNoYWxsb3cgY29tcGFyaXNvbnMgd29yay5cblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG5cdFx0Y29tcGFyZSA9ICggYS5vd25lckRvY3VtZW50IHx8IGEgKSA9PSAoIGIub3duZXJEb2N1bWVudCB8fCBiICkgP1xuXHRcdFx0YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYiApIDpcblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIHdlIGtub3cgdGhleSBhcmUgZGlzY29ubmVjdGVkXG5cdFx0XHQxO1xuXG5cdFx0Ly8gRGlzY29ubmVjdGVkIG5vZGVzXG5cdFx0aWYgKCBjb21wYXJlICYgMSB8fFxuXHRcdFx0KCAhc3VwcG9ydC5zb3J0RGV0YWNoZWQgJiYgYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYSApID09PSBjb21wYXJlICkgKSB7XG5cblx0XHRcdC8vIENob29zZSB0aGUgZmlyc3QgZWxlbWVudCB0aGF0IGlzIHJlbGF0ZWQgdG8gb3VyIHByZWZlcnJlZCBkb2N1bWVudFxuXHRcdFx0Ly8gU3VwcG9ydDogSUUgMTErLCBFZGdlIDE3IC0gMTgrXG5cdFx0XHQvLyBJRS9FZGdlIHNvbWV0aW1lcyB0aHJvdyBhIFwiUGVybWlzc2lvbiBkZW5pZWRcIiBlcnJvciB3aGVuIHN0cmljdC1jb21wYXJpbmdcblx0XHRcdC8vIHR3byBkb2N1bWVudHM7IHNoYWxsb3cgY29tcGFyaXNvbnMgd29yay5cblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcblx0XHRcdGlmICggYSA9PSBkb2N1bWVudCB8fCBhLm93bmVyRG9jdW1lbnQgPT0gcHJlZmVycmVkRG9jICYmXG5cdFx0XHRcdGNvbnRhaW5zKCBwcmVmZXJyZWREb2MsIGEgKSApIHtcblx0XHRcdFx0cmV0dXJuIC0xO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRSAxMSssIEVkZ2UgMTcgLSAxOCtcblx0XHRcdC8vIElFL0VkZ2Ugc29tZXRpbWVzIHRocm93IGEgXCJQZXJtaXNzaW9uIGRlbmllZFwiIGVycm9yIHdoZW4gc3RyaWN0LWNvbXBhcmluZ1xuXHRcdFx0Ly8gdHdvIGRvY3VtZW50czsgc2hhbGxvdyBjb21wYXJpc29ucyB3b3JrLlxuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVxZXFlcVxuXHRcdFx0aWYgKCBiID09IGRvY3VtZW50IHx8IGIub3duZXJEb2N1bWVudCA9PSBwcmVmZXJyZWREb2MgJiZcblx0XHRcdFx0Y29udGFpbnMoIHByZWZlcnJlZERvYywgYiApICkge1xuXHRcdFx0XHRyZXR1cm4gMTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTWFpbnRhaW4gb3JpZ2luYWwgb3JkZXJcblx0XHRcdHJldHVybiBzb3J0SW5wdXQgP1xuXHRcdFx0XHQoIGluZGV4T2YoIHNvcnRJbnB1dCwgYSApIC0gaW5kZXhPZiggc29ydElucHV0LCBiICkgKSA6XG5cdFx0XHRcdDA7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNvbXBhcmUgJiA0ID8gLTEgOiAxO1xuXHR9IDpcblx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cblx0XHQvLyBFeGl0IGVhcmx5IGlmIHRoZSBub2RlcyBhcmUgaWRlbnRpY2FsXG5cdFx0aWYgKCBhID09PSBiICkge1xuXHRcdFx0aGFzRHVwbGljYXRlID0gdHJ1ZTtcblx0XHRcdHJldHVybiAwO1xuXHRcdH1cblxuXHRcdHZhciBjdXIsXG5cdFx0XHRpID0gMCxcblx0XHRcdGF1cCA9IGEucGFyZW50Tm9kZSxcblx0XHRcdGJ1cCA9IGIucGFyZW50Tm9kZSxcblx0XHRcdGFwID0gWyBhIF0sXG5cdFx0XHRicCA9IFsgYiBdO1xuXG5cdFx0Ly8gUGFyZW50bGVzcyBub2RlcyBhcmUgZWl0aGVyIGRvY3VtZW50cyBvciBkaXNjb25uZWN0ZWRcblx0XHRpZiAoICFhdXAgfHwgIWJ1cCApIHtcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUUgMTErLCBFZGdlIDE3IC0gMTgrXG5cdFx0XHQvLyBJRS9FZGdlIHNvbWV0aW1lcyB0aHJvdyBhIFwiUGVybWlzc2lvbiBkZW5pZWRcIiBlcnJvciB3aGVuIHN0cmljdC1jb21wYXJpbmdcblx0XHRcdC8vIHR3byBkb2N1bWVudHM7IHNoYWxsb3cgY29tcGFyaXNvbnMgd29yay5cblx0XHRcdC8qIGVzbGludC1kaXNhYmxlIGVxZXFlcSAqL1xuXHRcdFx0cmV0dXJuIGEgPT0gZG9jdW1lbnQgPyAtMSA6XG5cdFx0XHRcdGIgPT0gZG9jdW1lbnQgPyAxIDpcblx0XHRcdFx0LyogZXNsaW50LWVuYWJsZSBlcWVxZXEgKi9cblx0XHRcdFx0YXVwID8gLTEgOlxuXHRcdFx0XHRidXAgPyAxIDpcblx0XHRcdFx0c29ydElucHV0ID9cblx0XHRcdFx0KCBpbmRleE9mKCBzb3J0SW5wdXQsIGEgKSAtIGluZGV4T2YoIHNvcnRJbnB1dCwgYiApICkgOlxuXHRcdFx0XHQwO1xuXG5cdFx0Ly8gSWYgdGhlIG5vZGVzIGFyZSBzaWJsaW5ncywgd2UgY2FuIGRvIGEgcXVpY2sgY2hlY2tcblx0XHR9IGVsc2UgaWYgKCBhdXAgPT09IGJ1cCApIHtcblx0XHRcdHJldHVybiBzaWJsaW5nQ2hlY2soIGEsIGIgKTtcblx0XHR9XG5cblx0XHQvLyBPdGhlcndpc2Ugd2UgbmVlZCBmdWxsIGxpc3RzIG9mIHRoZWlyIGFuY2VzdG9ycyBmb3IgY29tcGFyaXNvblxuXHRcdGN1ciA9IGE7XG5cdFx0d2hpbGUgKCAoIGN1ciA9IGN1ci5wYXJlbnROb2RlICkgKSB7XG5cdFx0XHRhcC51bnNoaWZ0KCBjdXIgKTtcblx0XHR9XG5cdFx0Y3VyID0gYjtcblx0XHR3aGlsZSAoICggY3VyID0gY3VyLnBhcmVudE5vZGUgKSApIHtcblx0XHRcdGJwLnVuc2hpZnQoIGN1ciApO1xuXHRcdH1cblxuXHRcdC8vIFdhbGsgZG93biB0aGUgdHJlZSBsb29raW5nIGZvciBhIGRpc2NyZXBhbmN5XG5cdFx0d2hpbGUgKCBhcFsgaSBdID09PSBicFsgaSBdICkge1xuXHRcdFx0aSsrO1xuXHRcdH1cblxuXHRcdHJldHVybiBpID9cblxuXHRcdFx0Ly8gRG8gYSBzaWJsaW5nIGNoZWNrIGlmIHRoZSBub2RlcyBoYXZlIGEgY29tbW9uIGFuY2VzdG9yXG5cdFx0XHRzaWJsaW5nQ2hlY2soIGFwWyBpIF0sIGJwWyBpIF0gKSA6XG5cblx0XHRcdC8vIE90aGVyd2lzZSBub2RlcyBpbiBvdXIgZG9jdW1lbnQgc29ydCBmaXJzdFxuXHRcdFx0Ly8gU3VwcG9ydDogSUUgMTErLCBFZGdlIDE3IC0gMTgrXG5cdFx0XHQvLyBJRS9FZGdlIHNvbWV0aW1lcyB0aHJvdyBhIFwiUGVybWlzc2lvbiBkZW5pZWRcIiBlcnJvciB3aGVuIHN0cmljdC1jb21wYXJpbmdcblx0XHRcdC8vIHR3byBkb2N1bWVudHM7IHNoYWxsb3cgY29tcGFyaXNvbnMgd29yay5cblx0XHRcdC8qIGVzbGludC1kaXNhYmxlIGVxZXFlcSAqL1xuXHRcdFx0YXBbIGkgXSA9PSBwcmVmZXJyZWREb2MgPyAtMSA6XG5cdFx0XHRicFsgaSBdID09IHByZWZlcnJlZERvYyA/IDEgOlxuXHRcdFx0LyogZXNsaW50LWVuYWJsZSBlcWVxZXEgKi9cblx0XHRcdDA7XG5cdH07XG5cblx0cmV0dXJuIGRvY3VtZW50O1xufTtcblxuU2l6emxlLm1hdGNoZXMgPSBmdW5jdGlvbiggZXhwciwgZWxlbWVudHMgKSB7XG5cdHJldHVybiBTaXp6bGUoIGV4cHIsIG51bGwsIG51bGwsIGVsZW1lbnRzICk7XG59O1xuXG5TaXp6bGUubWF0Y2hlc1NlbGVjdG9yID0gZnVuY3Rpb24oIGVsZW0sIGV4cHIgKSB7XG5cdHNldERvY3VtZW50KCBlbGVtICk7XG5cblx0aWYgKCBzdXBwb3J0Lm1hdGNoZXNTZWxlY3RvciAmJiBkb2N1bWVudElzSFRNTCAmJlxuXHRcdCFub25uYXRpdmVTZWxlY3RvckNhY2hlWyBleHByICsgXCIgXCIgXSAmJlxuXHRcdCggIXJidWdneU1hdGNoZXMgfHwgIXJidWdneU1hdGNoZXMudGVzdCggZXhwciApICkgJiZcblx0XHQoICFyYnVnZ3lRU0EgICAgIHx8ICFyYnVnZ3lRU0EudGVzdCggZXhwciApICkgKSB7XG5cblx0XHR0cnkge1xuXHRcdFx0dmFyIHJldCA9IG1hdGNoZXMuY2FsbCggZWxlbSwgZXhwciApO1xuXG5cdFx0XHQvLyBJRSA5J3MgbWF0Y2hlc1NlbGVjdG9yIHJldHVybnMgZmFsc2Ugb24gZGlzY29ubmVjdGVkIG5vZGVzXG5cdFx0XHRpZiAoIHJldCB8fCBzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoIHx8XG5cblx0XHRcdFx0Ly8gQXMgd2VsbCwgZGlzY29ubmVjdGVkIG5vZGVzIGFyZSBzYWlkIHRvIGJlIGluIGEgZG9jdW1lbnRcblx0XHRcdFx0Ly8gZnJhZ21lbnQgaW4gSUUgOVxuXHRcdFx0XHRlbGVtLmRvY3VtZW50ICYmIGVsZW0uZG9jdW1lbnQubm9kZVR5cGUgIT09IDExICkge1xuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKCBlICkge1xuXHRcdFx0bm9ubmF0aXZlU2VsZWN0b3JDYWNoZSggZXhwciwgdHJ1ZSApO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBTaXp6bGUoIGV4cHIsIGRvY3VtZW50LCBudWxsLCBbIGVsZW0gXSApLmxlbmd0aCA+IDA7XG59O1xuXG5TaXp6bGUuY29udGFpbnMgPSBmdW5jdGlvbiggY29udGV4dCwgZWxlbSApIHtcblxuXHQvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWRcblx0Ly8gU3VwcG9ydDogSUUgMTErLCBFZGdlIDE3IC0gMTgrXG5cdC8vIElFL0VkZ2Ugc29tZXRpbWVzIHRocm93IGEgXCJQZXJtaXNzaW9uIGRlbmllZFwiIGVycm9yIHdoZW4gc3RyaWN0LWNvbXBhcmluZ1xuXHQvLyB0d28gZG9jdW1lbnRzOyBzaGFsbG93IGNvbXBhcmlzb25zIHdvcmsuXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcblx0aWYgKCAoIGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0ICkgIT0gZG9jdW1lbnQgKSB7XG5cdFx0c2V0RG9jdW1lbnQoIGNvbnRleHQgKTtcblx0fVxuXHRyZXR1cm4gY29udGFpbnMoIGNvbnRleHQsIGVsZW0gKTtcbn07XG5cblNpenpsZS5hdHRyID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7XG5cblx0Ly8gU2V0IGRvY3VtZW50IHZhcnMgaWYgbmVlZGVkXG5cdC8vIFN1cHBvcnQ6IElFIDExKywgRWRnZSAxNyAtIDE4K1xuXHQvLyBJRS9FZGdlIHNvbWV0aW1lcyB0aHJvdyBhIFwiUGVybWlzc2lvbiBkZW5pZWRcIiBlcnJvciB3aGVuIHN0cmljdC1jb21wYXJpbmdcblx0Ly8gdHdvIGRvY3VtZW50czsgc2hhbGxvdyBjb21wYXJpc29ucyB3b3JrLlxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG5cdGlmICggKCBlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxlbSApICE9IGRvY3VtZW50ICkge1xuXHRcdHNldERvY3VtZW50KCBlbGVtICk7XG5cdH1cblxuXHR2YXIgZm4gPSBFeHByLmF0dHJIYW5kbGVbIG5hbWUudG9Mb3dlckNhc2UoKSBdLFxuXG5cdFx0Ly8gRG9uJ3QgZ2V0IGZvb2xlZCBieSBPYmplY3QucHJvdG90eXBlIHByb3BlcnRpZXMgKGpRdWVyeSAjMTM4MDcpXG5cdFx0dmFsID0gZm4gJiYgaGFzT3duLmNhbGwoIEV4cHIuYXR0ckhhbmRsZSwgbmFtZS50b0xvd2VyQ2FzZSgpICkgP1xuXHRcdFx0Zm4oIGVsZW0sIG5hbWUsICFkb2N1bWVudElzSFRNTCApIDpcblx0XHRcdHVuZGVmaW5lZDtcblxuXHRyZXR1cm4gdmFsICE9PSB1bmRlZmluZWQgP1xuXHRcdHZhbCA6XG5cdFx0c3VwcG9ydC5hdHRyaWJ1dGVzIHx8ICFkb2N1bWVudElzSFRNTCA/XG5cdFx0XHRlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApIDpcblx0XHRcdCggdmFsID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCBuYW1lICkgKSAmJiB2YWwuc3BlY2lmaWVkID9cblx0XHRcdFx0dmFsLnZhbHVlIDpcblx0XHRcdFx0bnVsbDtcbn07XG5cblNpenpsZS5lc2NhcGUgPSBmdW5jdGlvbiggc2VsICkge1xuXHRyZXR1cm4gKCBzZWwgKyBcIlwiICkucmVwbGFjZSggcmNzc2VzY2FwZSwgZmNzc2VzY2FwZSApO1xufTtcblxuU2l6emxlLmVycm9yID0gZnVuY3Rpb24oIG1zZyApIHtcblx0dGhyb3cgbmV3IEVycm9yKCBcIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246IFwiICsgbXNnICk7XG59O1xuXG4vKipcbiAqIERvY3VtZW50IHNvcnRpbmcgYW5kIHJlbW92aW5nIGR1cGxpY2F0ZXNcbiAqIEBwYXJhbSB7QXJyYXlMaWtlfSByZXN1bHRzXG4gKi9cblNpenpsZS51bmlxdWVTb3J0ID0gZnVuY3Rpb24oIHJlc3VsdHMgKSB7XG5cdHZhciBlbGVtLFxuXHRcdGR1cGxpY2F0ZXMgPSBbXSxcblx0XHRqID0gMCxcblx0XHRpID0gMDtcblxuXHQvLyBVbmxlc3Mgd2UgKmtub3cqIHdlIGNhbiBkZXRlY3QgZHVwbGljYXRlcywgYXNzdW1lIHRoZWlyIHByZXNlbmNlXG5cdGhhc0R1cGxpY2F0ZSA9ICFzdXBwb3J0LmRldGVjdER1cGxpY2F0ZXM7XG5cdHNvcnRJbnB1dCA9ICFzdXBwb3J0LnNvcnRTdGFibGUgJiYgcmVzdWx0cy5zbGljZSggMCApO1xuXHRyZXN1bHRzLnNvcnQoIHNvcnRPcmRlciApO1xuXG5cdGlmICggaGFzRHVwbGljYXRlICkge1xuXHRcdHdoaWxlICggKCBlbGVtID0gcmVzdWx0c1sgaSsrIF0gKSApIHtcblx0XHRcdGlmICggZWxlbSA9PT0gcmVzdWx0c1sgaSBdICkge1xuXHRcdFx0XHRqID0gZHVwbGljYXRlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHdoaWxlICggai0tICkge1xuXHRcdFx0cmVzdWx0cy5zcGxpY2UoIGR1cGxpY2F0ZXNbIGogXSwgMSApO1xuXHRcdH1cblx0fVxuXG5cdC8vIENsZWFyIGlucHV0IGFmdGVyIHNvcnRpbmcgdG8gcmVsZWFzZSBvYmplY3RzXG5cdC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L3NpenpsZS9wdWxsLzIyNVxuXHRzb3J0SW5wdXQgPSBudWxsO1xuXG5cdHJldHVybiByZXN1bHRzO1xufTtcblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIGZvciByZXRyaWV2aW5nIHRoZSB0ZXh0IHZhbHVlIG9mIGFuIGFycmF5IG9mIERPTSBub2Rlc1xuICogQHBhcmFtIHtBcnJheXxFbGVtZW50fSBlbGVtXG4gKi9cbmdldFRleHQgPSBTaXp6bGUuZ2V0VGV4dCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHR2YXIgbm9kZSxcblx0XHRyZXQgPSBcIlwiLFxuXHRcdGkgPSAwLFxuXHRcdG5vZGVUeXBlID0gZWxlbS5ub2RlVHlwZTtcblxuXHRpZiAoICFub2RlVHlwZSApIHtcblxuXHRcdC8vIElmIG5vIG5vZGVUeXBlLCB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIGFuIGFycmF5XG5cdFx0d2hpbGUgKCAoIG5vZGUgPSBlbGVtWyBpKysgXSApICkge1xuXG5cdFx0XHQvLyBEbyBub3QgdHJhdmVyc2UgY29tbWVudCBub2Rlc1xuXHRcdFx0cmV0ICs9IGdldFRleHQoIG5vZGUgKTtcblx0XHR9XG5cdH0gZWxzZSBpZiAoIG5vZGVUeXBlID09PSAxIHx8IG5vZGVUeXBlID09PSA5IHx8IG5vZGVUeXBlID09PSAxMSApIHtcblxuXHRcdC8vIFVzZSB0ZXh0Q29udGVudCBmb3IgZWxlbWVudHNcblx0XHQvLyBpbm5lclRleHQgdXNhZ2UgcmVtb3ZlZCBmb3IgY29uc2lzdGVuY3kgb2YgbmV3IGxpbmVzIChqUXVlcnkgIzExMTUzKVxuXHRcdGlmICggdHlwZW9mIGVsZW0udGV4dENvbnRlbnQgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS50ZXh0Q29udGVudDtcblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyBUcmF2ZXJzZSBpdHMgY2hpbGRyZW5cblx0XHRcdGZvciAoIGVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7IGVsZW07IGVsZW0gPSBlbGVtLm5leHRTaWJsaW5nICkge1xuXHRcdFx0XHRyZXQgKz0gZ2V0VGV4dCggZWxlbSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIGlmICggbm9kZVR5cGUgPT09IDMgfHwgbm9kZVR5cGUgPT09IDQgKSB7XG5cdFx0cmV0dXJuIGVsZW0ubm9kZVZhbHVlO1xuXHR9XG5cblx0Ly8gRG8gbm90IGluY2x1ZGUgY29tbWVudCBvciBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGVzXG5cblx0cmV0dXJuIHJldDtcbn07XG5cbkV4cHIgPSBTaXp6bGUuc2VsZWN0b3JzID0ge1xuXG5cdC8vIENhbiBiZSBhZGp1c3RlZCBieSB0aGUgdXNlclxuXHRjYWNoZUxlbmd0aDogNTAsXG5cblx0Y3JlYXRlUHNldWRvOiBtYXJrRnVuY3Rpb24sXG5cblx0bWF0Y2g6IG1hdGNoRXhwcixcblxuXHRhdHRySGFuZGxlOiB7fSxcblxuXHRmaW5kOiB7fSxcblxuXHRyZWxhdGl2ZToge1xuXHRcdFwiPlwiOiB7IGRpcjogXCJwYXJlbnROb2RlXCIsIGZpcnN0OiB0cnVlIH0sXG5cdFx0XCIgXCI6IHsgZGlyOiBcInBhcmVudE5vZGVcIiB9LFxuXHRcdFwiK1wiOiB7IGRpcjogXCJwcmV2aW91c1NpYmxpbmdcIiwgZmlyc3Q6IHRydWUgfSxcblx0XHRcIn5cIjogeyBkaXI6IFwicHJldmlvdXNTaWJsaW5nXCIgfVxuXHR9LFxuXG5cdHByZUZpbHRlcjoge1xuXHRcdFwiQVRUUlwiOiBmdW5jdGlvbiggbWF0Y2ggKSB7XG5cdFx0XHRtYXRjaFsgMSBdID0gbWF0Y2hbIDEgXS5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXG5cdFx0XHQvLyBNb3ZlIHRoZSBnaXZlbiB2YWx1ZSB0byBtYXRjaFszXSB3aGV0aGVyIHF1b3RlZCBvciB1bnF1b3RlZFxuXHRcdFx0bWF0Y2hbIDMgXSA9ICggbWF0Y2hbIDMgXSB8fCBtYXRjaFsgNCBdIHx8XG5cdFx0XHRcdG1hdGNoWyA1IF0gfHwgXCJcIiApLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cblx0XHRcdGlmICggbWF0Y2hbIDIgXSA9PT0gXCJ+PVwiICkge1xuXHRcdFx0XHRtYXRjaFsgMyBdID0gXCIgXCIgKyBtYXRjaFsgMyBdICsgXCIgXCI7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBtYXRjaC5zbGljZSggMCwgNCApO1xuXHRcdH0sXG5cblx0XHRcIkNISUxEXCI6IGZ1bmN0aW9uKCBtYXRjaCApIHtcblxuXHRcdFx0LyogbWF0Y2hlcyBmcm9tIG1hdGNoRXhwcltcIkNISUxEXCJdXG5cdFx0XHRcdDEgdHlwZSAob25seXxudGh8Li4uKVxuXHRcdFx0XHQyIHdoYXQgKGNoaWxkfG9mLXR5cGUpXG5cdFx0XHRcdDMgYXJndW1lbnQgKGV2ZW58b2RkfFxcZCp8XFxkKm4oWystXVxcZCspP3wuLi4pXG5cdFx0XHRcdDQgeG4tY29tcG9uZW50IG9mIHhuK3kgYXJndW1lbnQgKFsrLV0/XFxkKm58KVxuXHRcdFx0XHQ1IHNpZ24gb2YgeG4tY29tcG9uZW50XG5cdFx0XHRcdDYgeCBvZiB4bi1jb21wb25lbnRcblx0XHRcdFx0NyBzaWduIG9mIHktY29tcG9uZW50XG5cdFx0XHRcdDggeSBvZiB5LWNvbXBvbmVudFxuXHRcdFx0Ki9cblx0XHRcdG1hdGNoWyAxIF0gPSBtYXRjaFsgMSBdLnRvTG93ZXJDYXNlKCk7XG5cblx0XHRcdGlmICggbWF0Y2hbIDEgXS5zbGljZSggMCwgMyApID09PSBcIm50aFwiICkge1xuXG5cdFx0XHRcdC8vIG50aC0qIHJlcXVpcmVzIGFyZ3VtZW50XG5cdFx0XHRcdGlmICggIW1hdGNoWyAzIF0gKSB7XG5cdFx0XHRcdFx0U2l6emxlLmVycm9yKCBtYXRjaFsgMCBdICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBudW1lcmljIHggYW5kIHkgcGFyYW1ldGVycyBmb3IgRXhwci5maWx0ZXIuQ0hJTERcblx0XHRcdFx0Ly8gcmVtZW1iZXIgdGhhdCBmYWxzZS90cnVlIGNhc3QgcmVzcGVjdGl2ZWx5IHRvIDAvMVxuXHRcdFx0XHRtYXRjaFsgNCBdID0gKyggbWF0Y2hbIDQgXSA/XG5cdFx0XHRcdFx0bWF0Y2hbIDUgXSArICggbWF0Y2hbIDYgXSB8fCAxICkgOlxuXHRcdFx0XHRcdDIgKiAoIG1hdGNoWyAzIF0gPT09IFwiZXZlblwiIHx8IG1hdGNoWyAzIF0gPT09IFwib2RkXCIgKSApO1xuXHRcdFx0XHRtYXRjaFsgNSBdID0gKyggKCBtYXRjaFsgNyBdICsgbWF0Y2hbIDggXSApIHx8IG1hdGNoWyAzIF0gPT09IFwib2RkXCIgKTtcblxuXHRcdFx0XHQvLyBvdGhlciB0eXBlcyBwcm9oaWJpdCBhcmd1bWVudHNcblx0XHRcdH0gZWxzZSBpZiAoIG1hdGNoWyAzIF0gKSB7XG5cdFx0XHRcdFNpenpsZS5lcnJvciggbWF0Y2hbIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gbWF0Y2g7XG5cdFx0fSxcblxuXHRcdFwiUFNFVURPXCI6IGZ1bmN0aW9uKCBtYXRjaCApIHtcblx0XHRcdHZhciBleGNlc3MsXG5cdFx0XHRcdHVucXVvdGVkID0gIW1hdGNoWyA2IF0gJiYgbWF0Y2hbIDIgXTtcblxuXHRcdFx0aWYgKCBtYXRjaEV4cHJbIFwiQ0hJTERcIiBdLnRlc3QoIG1hdGNoWyAwIF0gKSApIHtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFjY2VwdCBxdW90ZWQgYXJndW1lbnRzIGFzLWlzXG5cdFx0XHRpZiAoIG1hdGNoWyAzIF0gKSB7XG5cdFx0XHRcdG1hdGNoWyAyIF0gPSBtYXRjaFsgNCBdIHx8IG1hdGNoWyA1IF0gfHwgXCJcIjtcblxuXHRcdFx0Ly8gU3RyaXAgZXhjZXNzIGNoYXJhY3RlcnMgZnJvbSB1bnF1b3RlZCBhcmd1bWVudHNcblx0XHRcdH0gZWxzZSBpZiAoIHVucXVvdGVkICYmIHJwc2V1ZG8udGVzdCggdW5xdW90ZWQgKSAmJlxuXG5cdFx0XHRcdC8vIEdldCBleGNlc3MgZnJvbSB0b2tlbml6ZSAocmVjdXJzaXZlbHkpXG5cdFx0XHRcdCggZXhjZXNzID0gdG9rZW5pemUoIHVucXVvdGVkLCB0cnVlICkgKSAmJlxuXG5cdFx0XHRcdC8vIGFkdmFuY2UgdG8gdGhlIG5leHQgY2xvc2luZyBwYXJlbnRoZXNpc1xuXHRcdFx0XHQoIGV4Y2VzcyA9IHVucXVvdGVkLmluZGV4T2YoIFwiKVwiLCB1bnF1b3RlZC5sZW5ndGggLSBleGNlc3MgKSAtIHVucXVvdGVkLmxlbmd0aCApICkge1xuXG5cdFx0XHRcdC8vIGV4Y2VzcyBpcyBhIG5lZ2F0aXZlIGluZGV4XG5cdFx0XHRcdG1hdGNoWyAwIF0gPSBtYXRjaFsgMCBdLnNsaWNlKCAwLCBleGNlc3MgKTtcblx0XHRcdFx0bWF0Y2hbIDIgXSA9IHVucXVvdGVkLnNsaWNlKCAwLCBleGNlc3MgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUmV0dXJuIG9ubHkgY2FwdHVyZXMgbmVlZGVkIGJ5IHRoZSBwc2V1ZG8gZmlsdGVyIG1ldGhvZCAodHlwZSBhbmQgYXJndW1lbnQpXG5cdFx0XHRyZXR1cm4gbWF0Y2guc2xpY2UoIDAsIDMgKTtcblx0XHR9XG5cdH0sXG5cblx0ZmlsdGVyOiB7XG5cblx0XHRcIlRBR1wiOiBmdW5jdGlvbiggbm9kZU5hbWVTZWxlY3RvciApIHtcblx0XHRcdHZhciBub2RlTmFtZSA9IG5vZGVOYW1lU2VsZWN0b3IucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0cmV0dXJuIG5vZGVOYW1lU2VsZWN0b3IgPT09IFwiKlwiID9cblx0XHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH0gOlxuXHRcdFx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRyZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5vZGVOYW1lO1xuXHRcdFx0XHR9O1xuXHRcdH0sXG5cblx0XHRcIkNMQVNTXCI6IGZ1bmN0aW9uKCBjbGFzc05hbWUgKSB7XG5cdFx0XHR2YXIgcGF0dGVybiA9IGNsYXNzQ2FjaGVbIGNsYXNzTmFtZSArIFwiIFwiIF07XG5cblx0XHRcdHJldHVybiBwYXR0ZXJuIHx8XG5cdFx0XHRcdCggcGF0dGVybiA9IG5ldyBSZWdFeHAoIFwiKF58XCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcdFx0XHRcIilcIiArIGNsYXNzTmFtZSArIFwiKFwiICsgd2hpdGVzcGFjZSArIFwifCQpXCIgKSApICYmIGNsYXNzQ2FjaGUoXG5cdFx0XHRcdFx0XHRjbGFzc05hbWUsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gcGF0dGVybi50ZXN0KFxuXHRcdFx0XHRcdFx0XHRcdHR5cGVvZiBlbGVtLmNsYXNzTmFtZSA9PT0gXCJzdHJpbmdcIiAmJiBlbGVtLmNsYXNzTmFtZSB8fFxuXHRcdFx0XHRcdFx0XHRcdHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSAhPT0gXCJ1bmRlZmluZWRcIiAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0ZWxlbS5nZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIiApIHx8XG5cdFx0XHRcdFx0XHRcdFx0XCJcIlxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9ICk7XG5cdFx0fSxcblxuXHRcdFwiQVRUUlwiOiBmdW5jdGlvbiggbmFtZSwgb3BlcmF0b3IsIGNoZWNrICkge1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgcmVzdWx0ID0gU2l6emxlLmF0dHIoIGVsZW0sIG5hbWUgKTtcblxuXHRcdFx0XHRpZiAoIHJlc3VsdCA9PSBudWxsICkge1xuXHRcdFx0XHRcdHJldHVybiBvcGVyYXRvciA9PT0gXCIhPVwiO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICggIW9wZXJhdG9yICkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmVzdWx0ICs9IFwiXCI7XG5cblx0XHRcdFx0LyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuXG5cdFx0XHRcdHJldHVybiBvcGVyYXRvciA9PT0gXCI9XCIgPyByZXN1bHQgPT09IGNoZWNrIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCIhPVwiID8gcmVzdWx0ICE9PSBjaGVjayA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwiXj1cIiA/IGNoZWNrICYmIHJlc3VsdC5pbmRleE9mKCBjaGVjayApID09PSAwIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCIqPVwiID8gY2hlY2sgJiYgcmVzdWx0LmluZGV4T2YoIGNoZWNrICkgPiAtMSA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwiJD1cIiA/IGNoZWNrICYmIHJlc3VsdC5zbGljZSggLWNoZWNrLmxlbmd0aCApID09PSBjaGVjayA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwifj1cIiA/ICggXCIgXCIgKyByZXN1bHQucmVwbGFjZSggcndoaXRlc3BhY2UsIFwiIFwiICkgKyBcIiBcIiApLmluZGV4T2YoIGNoZWNrICkgPiAtMSA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwifD1cIiA/IHJlc3VsdCA9PT0gY2hlY2sgfHwgcmVzdWx0LnNsaWNlKCAwLCBjaGVjay5sZW5ndGggKyAxICkgPT09IGNoZWNrICsgXCItXCIgOlxuXHRcdFx0XHRcdGZhbHNlO1xuXHRcdFx0XHQvKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4gKi9cblxuXHRcdFx0fTtcblx0XHR9LFxuXG5cdFx0XCJDSElMRFwiOiBmdW5jdGlvbiggdHlwZSwgd2hhdCwgX2FyZ3VtZW50LCBmaXJzdCwgbGFzdCApIHtcblx0XHRcdHZhciBzaW1wbGUgPSB0eXBlLnNsaWNlKCAwLCAzICkgIT09IFwibnRoXCIsXG5cdFx0XHRcdGZvcndhcmQgPSB0eXBlLnNsaWNlKCAtNCApICE9PSBcImxhc3RcIixcblx0XHRcdFx0b2ZUeXBlID0gd2hhdCA9PT0gXCJvZi10eXBlXCI7XG5cblx0XHRcdHJldHVybiBmaXJzdCA9PT0gMSAmJiBsYXN0ID09PSAwID9cblxuXHRcdFx0XHQvLyBTaG9ydGN1dCBmb3IgOm50aC0qKG4pXG5cdFx0XHRcdGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRcdHJldHVybiAhIWVsZW0ucGFyZW50Tm9kZTtcblx0XHRcdFx0fSA6XG5cblx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0sIF9jb250ZXh0LCB4bWwgKSB7XG5cdFx0XHRcdFx0dmFyIGNhY2hlLCB1bmlxdWVDYWNoZSwgb3V0ZXJDYWNoZSwgbm9kZSwgbm9kZUluZGV4LCBzdGFydCxcblx0XHRcdFx0XHRcdGRpciA9IHNpbXBsZSAhPT0gZm9yd2FyZCA/IFwibmV4dFNpYmxpbmdcIiA6IFwicHJldmlvdXNTaWJsaW5nXCIsXG5cdFx0XHRcdFx0XHRwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGUsXG5cdFx0XHRcdFx0XHRuYW1lID0gb2ZUeXBlICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxcblx0XHRcdFx0XHRcdHVzZUNhY2hlID0gIXhtbCAmJiAhb2ZUeXBlLFxuXHRcdFx0XHRcdFx0ZGlmZiA9IGZhbHNlO1xuXG5cdFx0XHRcdFx0aWYgKCBwYXJlbnQgKSB7XG5cblx0XHRcdFx0XHRcdC8vIDooZmlyc3R8bGFzdHxvbmx5KS0oY2hpbGR8b2YtdHlwZSlcblx0XHRcdFx0XHRcdGlmICggc2ltcGxlICkge1xuXHRcdFx0XHRcdFx0XHR3aGlsZSAoIGRpciApIHtcblx0XHRcdFx0XHRcdFx0XHRub2RlID0gZWxlbTtcblx0XHRcdFx0XHRcdFx0XHR3aGlsZSAoICggbm9kZSA9IG5vZGVbIGRpciBdICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIG9mVHlwZSA/XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZSA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vZGUubm9kZVR5cGUgPT09IDEgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdC8vIFJldmVyc2UgZGlyZWN0aW9uIGZvciA6b25seS0qIChpZiB3ZSBoYXZlbid0IHlldCBkb25lIHNvKVxuXHRcdFx0XHRcdFx0XHRcdHN0YXJ0ID0gZGlyID0gdHlwZSA9PT0gXCJvbmx5XCIgJiYgIXN0YXJ0ICYmIFwibmV4dFNpYmxpbmdcIjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0c3RhcnQgPSBbIGZvcndhcmQgPyBwYXJlbnQuZmlyc3RDaGlsZCA6IHBhcmVudC5sYXN0Q2hpbGQgXTtcblxuXHRcdFx0XHRcdFx0Ly8gbm9uLXhtbCA6bnRoLWNoaWxkKC4uLikgc3RvcmVzIGNhY2hlIGRhdGEgb24gYHBhcmVudGBcblx0XHRcdFx0XHRcdGlmICggZm9yd2FyZCAmJiB1c2VDYWNoZSApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBTZWVrIGBlbGVtYCBmcm9tIGEgcHJldmlvdXNseS1jYWNoZWQgaW5kZXhcblxuXHRcdFx0XHRcdFx0XHQvLyAuLi5pbiBhIGd6aXAtZnJpZW5kbHkgd2F5XG5cdFx0XHRcdFx0XHRcdG5vZGUgPSBwYXJlbnQ7XG5cdFx0XHRcdFx0XHRcdG91dGVyQ2FjaGUgPSBub2RlWyBleHBhbmRvIF0gfHwgKCBub2RlWyBleHBhbmRvIF0gPSB7fSApO1xuXG5cdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw5IG9ubHlcblx0XHRcdFx0XHRcdFx0Ly8gRGVmZW5kIGFnYWluc3QgY2xvbmVkIGF0dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkpXG5cdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0KCBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gPSB7fSApO1xuXG5cdFx0XHRcdFx0XHRcdGNhY2hlID0gdW5pcXVlQ2FjaGVbIHR5cGUgXSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0bm9kZUluZGV4ID0gY2FjaGVbIDAgXSA9PT0gZGlycnVucyAmJiBjYWNoZVsgMSBdO1xuXHRcdFx0XHRcdFx0XHRkaWZmID0gbm9kZUluZGV4ICYmIGNhY2hlWyAyIF07XG5cdFx0XHRcdFx0XHRcdG5vZGUgPSBub2RlSW5kZXggJiYgcGFyZW50LmNoaWxkTm9kZXNbIG5vZGVJbmRleCBdO1xuXG5cdFx0XHRcdFx0XHRcdHdoaWxlICggKCBub2RlID0gKytub2RlSW5kZXggJiYgbm9kZSAmJiBub2RlWyBkaXIgXSB8fFxuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gRmFsbGJhY2sgdG8gc2Vla2luZyBgZWxlbWAgZnJvbSB0aGUgc3RhcnRcblx0XHRcdFx0XHRcdFx0XHQoIGRpZmYgPSBub2RlSW5kZXggPSAwICkgfHwgc3RhcnQucG9wKCkgKSApIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIFdoZW4gZm91bmQsIGNhY2hlIGluZGV4ZXMgb24gYHBhcmVudGAgYW5kIGJyZWFrXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBub2RlLm5vZGVUeXBlID09PSAxICYmICsrZGlmZiAmJiBub2RlID09PSBlbGVtICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGVbIHR5cGUgXSA9IFsgZGlycnVucywgbm9kZUluZGV4LCBkaWZmIF07XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBVc2UgcHJldmlvdXNseS1jYWNoZWQgZWxlbWVudCBpbmRleCBpZiBhdmFpbGFibGVcblx0XHRcdFx0XHRcdFx0aWYgKCB1c2VDYWNoZSApIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIC4uLmluIGEgZ3ppcC1mcmllbmRseSB3YXlcblx0XHRcdFx0XHRcdFx0XHRub2RlID0gZWxlbTtcblx0XHRcdFx0XHRcdFx0XHRvdXRlckNhY2hlID0gbm9kZVsgZXhwYW5kbyBdIHx8ICggbm9kZVsgZXhwYW5kbyBdID0ge30gKTtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw5IG9ubHlcblx0XHRcdFx0XHRcdFx0XHQvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSlcblx0XHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZSA9IG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0KCBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gPSB7fSApO1xuXG5cdFx0XHRcdFx0XHRcdFx0Y2FjaGUgPSB1bmlxdWVDYWNoZVsgdHlwZSBdIHx8IFtdO1xuXHRcdFx0XHRcdFx0XHRcdG5vZGVJbmRleCA9IGNhY2hlWyAwIF0gPT09IGRpcnJ1bnMgJiYgY2FjaGVbIDEgXTtcblx0XHRcdFx0XHRcdFx0XHRkaWZmID0gbm9kZUluZGV4O1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0Ly8geG1sIDpudGgtY2hpbGQoLi4uKVxuXHRcdFx0XHRcdFx0XHQvLyBvciA6bnRoLWxhc3QtY2hpbGQoLi4uKSBvciA6bnRoKC1sYXN0KT8tb2YtdHlwZSguLi4pXG5cdFx0XHRcdFx0XHRcdGlmICggZGlmZiA9PT0gZmFsc2UgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBVc2UgdGhlIHNhbWUgbG9vcCBhcyBhYm92ZSB0byBzZWVrIGBlbGVtYCBmcm9tIHRoZSBzdGFydFxuXHRcdFx0XHRcdFx0XHRcdHdoaWxlICggKCBub2RlID0gKytub2RlSW5kZXggJiYgbm9kZSAmJiBub2RlWyBkaXIgXSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0KCBkaWZmID0gbm9kZUluZGV4ID0gMCApIHx8IHN0YXJ0LnBvcCgpICkgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdGlmICggKCBvZlR5cGUgP1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUgOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRub2RlLm5vZGVUeXBlID09PSAxICkgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0KytkaWZmICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIENhY2hlIHRoZSBpbmRleCBvZiBlYWNoIGVuY291bnRlcmVkIGVsZW1lbnRcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCB1c2VDYWNoZSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvdXRlckNhY2hlID0gbm9kZVsgZXhwYW5kbyBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoIG5vZGVbIGV4cGFuZG8gXSA9IHt9ICk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8OSBvbmx5XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gRGVmZW5kIGFnYWluc3QgY2xvbmVkIGF0dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCggb3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdID0ge30gKTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlWyB0eXBlIF0gPSBbIGRpcnJ1bnMsIGRpZmYgXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggbm9kZSA9PT0gZWxlbSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHQvLyBJbmNvcnBvcmF0ZSB0aGUgb2Zmc2V0LCB0aGVuIGNoZWNrIGFnYWluc3QgY3ljbGUgc2l6ZVxuXHRcdFx0XHRcdFx0ZGlmZiAtPSBsYXN0O1xuXHRcdFx0XHRcdFx0cmV0dXJuIGRpZmYgPT09IGZpcnN0IHx8ICggZGlmZiAlIGZpcnN0ID09PSAwICYmIGRpZmYgLyBmaXJzdCA+PSAwICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdH0sXG5cblx0XHRcIlBTRVVET1wiOiBmdW5jdGlvbiggcHNldWRvLCBhcmd1bWVudCApIHtcblxuXHRcdFx0Ly8gcHNldWRvLWNsYXNzIG5hbWVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlXG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI3BzZXVkby1jbGFzc2VzXG5cdFx0XHQvLyBQcmlvcml0aXplIGJ5IGNhc2Ugc2Vuc2l0aXZpdHkgaW4gY2FzZSBjdXN0b20gcHNldWRvcyBhcmUgYWRkZWQgd2l0aCB1cHBlcmNhc2UgbGV0dGVyc1xuXHRcdFx0Ly8gUmVtZW1iZXIgdGhhdCBzZXRGaWx0ZXJzIGluaGVyaXRzIGZyb20gcHNldWRvc1xuXHRcdFx0dmFyIGFyZ3MsXG5cdFx0XHRcdGZuID0gRXhwci5wc2V1ZG9zWyBwc2V1ZG8gXSB8fCBFeHByLnNldEZpbHRlcnNbIHBzZXVkby50b0xvd2VyQ2FzZSgpIF0gfHxcblx0XHRcdFx0XHRTaXp6bGUuZXJyb3IoIFwidW5zdXBwb3J0ZWQgcHNldWRvOiBcIiArIHBzZXVkbyApO1xuXG5cdFx0XHQvLyBUaGUgdXNlciBtYXkgdXNlIGNyZWF0ZVBzZXVkbyB0byBpbmRpY2F0ZSB0aGF0XG5cdFx0XHQvLyBhcmd1bWVudHMgYXJlIG5lZWRlZCB0byBjcmVhdGUgdGhlIGZpbHRlciBmdW5jdGlvblxuXHRcdFx0Ly8ganVzdCBhcyBTaXp6bGUgZG9lc1xuXHRcdFx0aWYgKCBmblsgZXhwYW5kbyBdICkge1xuXHRcdFx0XHRyZXR1cm4gZm4oIGFyZ3VtZW50ICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEJ1dCBtYWludGFpbiBzdXBwb3J0IGZvciBvbGQgc2lnbmF0dXJlc1xuXHRcdFx0aWYgKCBmbi5sZW5ndGggPiAxICkge1xuXHRcdFx0XHRhcmdzID0gWyBwc2V1ZG8sIHBzZXVkbywgXCJcIiwgYXJndW1lbnQgXTtcblx0XHRcdFx0cmV0dXJuIEV4cHIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eSggcHNldWRvLnRvTG93ZXJDYXNlKCkgKSA/XG5cdFx0XHRcdFx0bWFya0Z1bmN0aW9uKCBmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcyApIHtcblx0XHRcdFx0XHRcdHZhciBpZHgsXG5cdFx0XHRcdFx0XHRcdG1hdGNoZWQgPSBmbiggc2VlZCwgYXJndW1lbnQgKSxcblx0XHRcdFx0XHRcdFx0aSA9IG1hdGNoZWQubGVuZ3RoO1xuXHRcdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRcdGlkeCA9IGluZGV4T2YoIHNlZWQsIG1hdGNoZWRbIGkgXSApO1xuXHRcdFx0XHRcdFx0XHRzZWVkWyBpZHggXSA9ICEoIG1hdGNoZXNbIGlkeCBdID0gbWF0Y2hlZFsgaSBdICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSApIDpcblx0XHRcdFx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRcdHJldHVybiBmbiggZWxlbSwgMCwgYXJncyApO1xuXHRcdFx0XHRcdH07XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBmbjtcblx0XHR9XG5cdH0sXG5cblx0cHNldWRvczoge1xuXG5cdFx0Ly8gUG90ZW50aWFsbHkgY29tcGxleCBwc2V1ZG9zXG5cdFx0XCJub3RcIjogbWFya0Z1bmN0aW9uKCBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cblx0XHRcdC8vIFRyaW0gdGhlIHNlbGVjdG9yIHBhc3NlZCB0byBjb21waWxlXG5cdFx0XHQvLyB0byBhdm9pZCB0cmVhdGluZyBsZWFkaW5nIGFuZCB0cmFpbGluZ1xuXHRcdFx0Ly8gc3BhY2VzIGFzIGNvbWJpbmF0b3JzXG5cdFx0XHR2YXIgaW5wdXQgPSBbXSxcblx0XHRcdFx0cmVzdWx0cyA9IFtdLFxuXHRcdFx0XHRtYXRjaGVyID0gY29tcGlsZSggc2VsZWN0b3IucmVwbGFjZSggcnRyaW0sIFwiJDFcIiApICk7XG5cblx0XHRcdHJldHVybiBtYXRjaGVyWyBleHBhbmRvIF0gP1xuXHRcdFx0XHRtYXJrRnVuY3Rpb24oIGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzLCBfY29udGV4dCwgeG1sICkge1xuXHRcdFx0XHRcdHZhciBlbGVtLFxuXHRcdFx0XHRcdFx0dW5tYXRjaGVkID0gbWF0Y2hlciggc2VlZCwgbnVsbCwgeG1sLCBbXSApLFxuXHRcdFx0XHRcdFx0aSA9IHNlZWQubGVuZ3RoO1xuXG5cdFx0XHRcdFx0Ly8gTWF0Y2ggZWxlbWVudHMgdW5tYXRjaGVkIGJ5IGBtYXRjaGVyYFxuXHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoIGVsZW0gPSB1bm1hdGNoZWRbIGkgXSApICkge1xuXHRcdFx0XHRcdFx0XHRzZWVkWyBpIF0gPSAhKCBtYXRjaGVzWyBpIF0gPSBlbGVtICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9ICkgOlxuXHRcdFx0XHRmdW5jdGlvbiggZWxlbSwgX2NvbnRleHQsIHhtbCApIHtcblx0XHRcdFx0XHRpbnB1dFsgMCBdID0gZWxlbTtcblx0XHRcdFx0XHRtYXRjaGVyKCBpbnB1dCwgbnVsbCwgeG1sLCByZXN1bHRzICk7XG5cblx0XHRcdFx0XHQvLyBEb24ndCBrZWVwIHRoZSBlbGVtZW50IChpc3N1ZSAjMjk5KVxuXHRcdFx0XHRcdGlucHV0WyAwIF0gPSBudWxsO1xuXHRcdFx0XHRcdHJldHVybiAhcmVzdWx0cy5wb3AoKTtcblx0XHRcdFx0fTtcblx0XHR9ICksXG5cblx0XHRcImhhc1wiOiBtYXJrRnVuY3Rpb24oIGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0cmV0dXJuIFNpenpsZSggc2VsZWN0b3IsIGVsZW0gKS5sZW5ndGggPiAwO1xuXHRcdFx0fTtcblx0XHR9ICksXG5cblx0XHRcImNvbnRhaW5zXCI6IG1hcmtGdW5jdGlvbiggZnVuY3Rpb24oIHRleHQgKSB7XG5cdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gKCBlbGVtLnRleHRDb250ZW50IHx8IGdldFRleHQoIGVsZW0gKSApLmluZGV4T2YoIHRleHQgKSA+IC0xO1xuXHRcdFx0fTtcblx0XHR9ICksXG5cblx0XHQvLyBcIldoZXRoZXIgYW4gZWxlbWVudCBpcyByZXByZXNlbnRlZCBieSBhIDpsYW5nKCkgc2VsZWN0b3Jcblx0XHQvLyBpcyBiYXNlZCBzb2xlbHkgb24gdGhlIGVsZW1lbnQncyBsYW5ndWFnZSB2YWx1ZVxuXHRcdC8vIGJlaW5nIGVxdWFsIHRvIHRoZSBpZGVudGlmaWVyIEMsXG5cdFx0Ly8gb3IgYmVnaW5uaW5nIHdpdGggdGhlIGlkZW50aWZpZXIgQyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBcIi1cIi5cblx0XHQvLyBUaGUgbWF0Y2hpbmcgb2YgQyBhZ2FpbnN0IHRoZSBlbGVtZW50J3MgbGFuZ3VhZ2UgdmFsdWUgaXMgcGVyZm9ybWVkIGNhc2UtaW5zZW5zaXRpdmVseS5cblx0XHQvLyBUaGUgaWRlbnRpZmllciBDIGRvZXMgbm90IGhhdmUgdG8gYmUgYSB2YWxpZCBsYW5ndWFnZSBuYW1lLlwiXG5cdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNsYW5nLXBzZXVkb1xuXHRcdFwibGFuZ1wiOiBtYXJrRnVuY3Rpb24oIGZ1bmN0aW9uKCBsYW5nICkge1xuXG5cdFx0XHQvLyBsYW5nIHZhbHVlIG11c3QgYmUgYSB2YWxpZCBpZGVudGlmaWVyXG5cdFx0XHRpZiAoICFyaWRlbnRpZmllci50ZXN0KCBsYW5nIHx8IFwiXCIgKSApIHtcblx0XHRcdFx0U2l6emxlLmVycm9yKCBcInVuc3VwcG9ydGVkIGxhbmc6IFwiICsgbGFuZyApO1xuXHRcdFx0fVxuXHRcdFx0bGFuZyA9IGxhbmcucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgZWxlbUxhbmc7XG5cdFx0XHRcdGRvIHtcblx0XHRcdFx0XHRpZiAoICggZWxlbUxhbmcgPSBkb2N1bWVudElzSFRNTCA/XG5cdFx0XHRcdFx0XHRlbGVtLmxhbmcgOlxuXHRcdFx0XHRcdFx0ZWxlbS5nZXRBdHRyaWJ1dGUoIFwieG1sOmxhbmdcIiApIHx8IGVsZW0uZ2V0QXR0cmlidXRlKCBcImxhbmdcIiApICkgKSB7XG5cblx0XHRcdFx0XHRcdGVsZW1MYW5nID0gZWxlbUxhbmcudG9Mb3dlckNhc2UoKTtcblx0XHRcdFx0XHRcdHJldHVybiBlbGVtTGFuZyA9PT0gbGFuZyB8fCBlbGVtTGFuZy5pbmRleE9mKCBsYW5nICsgXCItXCIgKSA9PT0gMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gd2hpbGUgKCAoIGVsZW0gPSBlbGVtLnBhcmVudE5vZGUgKSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH07XG5cdFx0fSApLFxuXG5cdFx0Ly8gTWlzY2VsbGFuZW91c1xuXHRcdFwidGFyZ2V0XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIGhhc2ggPSB3aW5kb3cubG9jYXRpb24gJiYgd2luZG93LmxvY2F0aW9uLmhhc2g7XG5cdFx0XHRyZXR1cm4gaGFzaCAmJiBoYXNoLnNsaWNlKCAxICkgPT09IGVsZW0uaWQ7XG5cdFx0fSxcblxuXHRcdFwicm9vdFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtID09PSBkb2NFbGVtO1xuXHRcdH0sXG5cblx0XHRcImZvY3VzXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0gPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiZcblx0XHRcdFx0KCAhZG9jdW1lbnQuaGFzRm9jdXMgfHwgZG9jdW1lbnQuaGFzRm9jdXMoKSApICYmXG5cdFx0XHRcdCEhKCBlbGVtLnR5cGUgfHwgZWxlbS5ocmVmIHx8IH5lbGVtLnRhYkluZGV4ICk7XG5cdFx0fSxcblxuXHRcdC8vIEJvb2xlYW4gcHJvcGVydGllc1xuXHRcdFwiZW5hYmxlZFwiOiBjcmVhdGVEaXNhYmxlZFBzZXVkbyggZmFsc2UgKSxcblx0XHRcImRpc2FibGVkXCI6IGNyZWF0ZURpc2FibGVkUHNldWRvKCB0cnVlICksXG5cblx0XHRcImNoZWNrZWRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdC8vIEluIENTUzMsIDpjaGVja2VkIHNob3VsZCByZXR1cm4gYm90aCBjaGVja2VkIGFuZCBzZWxlY3RlZCBlbGVtZW50c1xuXHRcdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMS9SRUMtY3NzMy1zZWxlY3RvcnMtMjAxMTA5MjkvI2NoZWNrZWRcblx0XHRcdHZhciBub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRcdHJldHVybiAoIG5vZGVOYW1lID09PSBcImlucHV0XCIgJiYgISFlbGVtLmNoZWNrZWQgKSB8fFxuXHRcdFx0XHQoIG5vZGVOYW1lID09PSBcIm9wdGlvblwiICYmICEhZWxlbS5zZWxlY3RlZCApO1xuXHRcdH0sXG5cblx0XHRcInNlbGVjdGVkXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdFx0XHQvLyBBY2Nlc3NpbmcgdGhpcyBwcm9wZXJ0eSBtYWtlcyBzZWxlY3RlZC1ieS1kZWZhdWx0XG5cdFx0XHQvLyBvcHRpb25zIGluIFNhZmFyaSB3b3JrIHByb3Blcmx5XG5cdFx0XHRpZiAoIGVsZW0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC1leHByZXNzaW9uc1xuXHRcdFx0XHRlbGVtLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGVsZW0uc2VsZWN0ZWQgPT09IHRydWU7XG5cdFx0fSxcblxuXHRcdC8vIENvbnRlbnRzXG5cdFx0XCJlbXB0eVwiOiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNlbXB0eS1wc2V1ZG9cblx0XHRcdC8vIDplbXB0eSBpcyBuZWdhdGVkIGJ5IGVsZW1lbnQgKDEpIG9yIGNvbnRlbnQgbm9kZXMgKHRleHQ6IDM7IGNkYXRhOiA0OyBlbnRpdHkgcmVmOiA1KSxcblx0XHRcdC8vICAgYnV0IG5vdCBieSBvdGhlcnMgKGNvbW1lbnQ6IDg7IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb246IDc7IGV0Yy4pXG5cdFx0XHQvLyBub2RlVHlwZSA8IDYgd29ya3MgYmVjYXVzZSBhdHRyaWJ1dGVzICgyKSBkbyBub3QgYXBwZWFyIGFzIGNoaWxkcmVuXG5cdFx0XHRmb3IgKCBlbGVtID0gZWxlbS5maXJzdENoaWxkOyBlbGVtOyBlbGVtID0gZWxlbS5uZXh0U2libGluZyApIHtcblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlIDwgNiApIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0sXG5cblx0XHRcInBhcmVudFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiAhRXhwci5wc2V1ZG9zWyBcImVtcHR5XCIgXSggZWxlbSApO1xuXHRcdH0sXG5cblx0XHQvLyBFbGVtZW50L2lucHV0IHR5cGVzXG5cdFx0XCJoZWFkZXJcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gcmhlYWRlci50ZXN0KCBlbGVtLm5vZGVOYW1lICk7XG5cdFx0fSxcblxuXHRcdFwiaW5wdXRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gcmlucHV0cy50ZXN0KCBlbGVtLm5vZGVOYW1lICk7XG5cdFx0fSxcblxuXHRcdFwiYnV0dG9uXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRyZXR1cm4gbmFtZSA9PT0gXCJpbnB1dFwiICYmIGVsZW0udHlwZSA9PT0gXCJidXR0b25cIiB8fCBuYW1lID09PSBcImJ1dHRvblwiO1xuXHRcdH0sXG5cblx0XHRcInRleHRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgYXR0cjtcblx0XHRcdHJldHVybiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiaW5wdXRcIiAmJlxuXHRcdFx0XHRlbGVtLnR5cGUgPT09IFwidGV4dFwiICYmXG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUU8OFxuXHRcdFx0XHQvLyBOZXcgSFRNTDUgYXR0cmlidXRlIHZhbHVlcyAoZS5nLiwgXCJzZWFyY2hcIikgYXBwZWFyIHdpdGggZWxlbS50eXBlID09PSBcInRleHRcIlxuXHRcdFx0XHQoICggYXR0ciA9IGVsZW0uZ2V0QXR0cmlidXRlKCBcInR5cGVcIiApICkgPT0gbnVsbCB8fFxuXHRcdFx0XHRcdGF0dHIudG9Mb3dlckNhc2UoKSA9PT0gXCJ0ZXh0XCIgKTtcblx0XHR9LFxuXG5cdFx0Ly8gUG9zaXRpb24taW4tY29sbGVjdGlvblxuXHRcdFwiZmlyc3RcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyggZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gWyAwIF07XG5cdFx0fSApLFxuXG5cdFx0XCJsYXN0XCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oIGZ1bmN0aW9uKCBfbWF0Y2hJbmRleGVzLCBsZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4gWyBsZW5ndGggLSAxIF07XG5cdFx0fSApLFxuXG5cdFx0XCJlcVwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKCBmdW5jdGlvbiggX21hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHtcblx0XHRcdHJldHVybiBbIGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDogYXJndW1lbnQgXTtcblx0XHR9ICksXG5cblx0XHRcImV2ZW5cIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyggZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkge1xuXHRcdFx0dmFyIGkgPSAwO1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpICs9IDIgKSB7XG5cdFx0XHRcdG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWF0Y2hJbmRleGVzO1xuXHRcdH0gKSxcblxuXHRcdFwib2RkXCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oIGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHtcblx0XHRcdHZhciBpID0gMTtcblx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSArPSAyICkge1xuXHRcdFx0XHRtYXRjaEluZGV4ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoSW5kZXhlcztcblx0XHR9ICksXG5cblx0XHRcImx0XCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oIGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7XG5cdFx0XHR2YXIgaSA9IGFyZ3VtZW50IDwgMCA/XG5cdFx0XHRcdGFyZ3VtZW50ICsgbGVuZ3RoIDpcblx0XHRcdFx0YXJndW1lbnQgPiBsZW5ndGggP1xuXHRcdFx0XHRcdGxlbmd0aCA6XG5cdFx0XHRcdFx0YXJndW1lbnQ7XG5cdFx0XHRmb3IgKCA7IC0taSA+PSAwOyApIHtcblx0XHRcdFx0bWF0Y2hJbmRleGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtYXRjaEluZGV4ZXM7XG5cdFx0fSApLFxuXG5cdFx0XCJndFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKCBmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkge1xuXHRcdFx0dmFyIGkgPSBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6IGFyZ3VtZW50O1xuXHRcdFx0Zm9yICggOyArK2kgPCBsZW5ndGg7ICkge1xuXHRcdFx0XHRtYXRjaEluZGV4ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoSW5kZXhlcztcblx0XHR9IClcblx0fVxufTtcblxuRXhwci5wc2V1ZG9zWyBcIm50aFwiIF0gPSBFeHByLnBzZXVkb3NbIFwiZXFcIiBdO1xuXG4vLyBBZGQgYnV0dG9uL2lucHV0IHR5cGUgcHNldWRvc1xuZm9yICggaSBpbiB7IHJhZGlvOiB0cnVlLCBjaGVja2JveDogdHJ1ZSwgZmlsZTogdHJ1ZSwgcGFzc3dvcmQ6IHRydWUsIGltYWdlOiB0cnVlIH0gKSB7XG5cdEV4cHIucHNldWRvc1sgaSBdID0gY3JlYXRlSW5wdXRQc2V1ZG8oIGkgKTtcbn1cbmZvciAoIGkgaW4geyBzdWJtaXQ6IHRydWUsIHJlc2V0OiB0cnVlIH0gKSB7XG5cdEV4cHIucHNldWRvc1sgaSBdID0gY3JlYXRlQnV0dG9uUHNldWRvKCBpICk7XG59XG5cbi8vIEVhc3kgQVBJIGZvciBjcmVhdGluZyBuZXcgc2V0RmlsdGVyc1xuZnVuY3Rpb24gc2V0RmlsdGVycygpIHt9XG5zZXRGaWx0ZXJzLnByb3RvdHlwZSA9IEV4cHIuZmlsdGVycyA9IEV4cHIucHNldWRvcztcbkV4cHIuc2V0RmlsdGVycyA9IG5ldyBzZXRGaWx0ZXJzKCk7XG5cbnRva2VuaXplID0gU2l6emxlLnRva2VuaXplID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBwYXJzZU9ubHkgKSB7XG5cdHZhciBtYXRjaGVkLCBtYXRjaCwgdG9rZW5zLCB0eXBlLFxuXHRcdHNvRmFyLCBncm91cHMsIHByZUZpbHRlcnMsXG5cdFx0Y2FjaGVkID0gdG9rZW5DYWNoZVsgc2VsZWN0b3IgKyBcIiBcIiBdO1xuXG5cdGlmICggY2FjaGVkICkge1xuXHRcdHJldHVybiBwYXJzZU9ubHkgPyAwIDogY2FjaGVkLnNsaWNlKCAwICk7XG5cdH1cblxuXHRzb0ZhciA9IHNlbGVjdG9yO1xuXHRncm91cHMgPSBbXTtcblx0cHJlRmlsdGVycyA9IEV4cHIucHJlRmlsdGVyO1xuXG5cdHdoaWxlICggc29GYXIgKSB7XG5cblx0XHQvLyBDb21tYSBhbmQgZmlyc3QgcnVuXG5cdFx0aWYgKCAhbWF0Y2hlZCB8fCAoIG1hdGNoID0gcmNvbW1hLmV4ZWMoIHNvRmFyICkgKSApIHtcblx0XHRcdGlmICggbWF0Y2ggKSB7XG5cblx0XHRcdFx0Ly8gRG9uJ3QgY29uc3VtZSB0cmFpbGluZyBjb21tYXMgYXMgdmFsaWRcblx0XHRcdFx0c29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hbIDAgXS5sZW5ndGggKSB8fCBzb0Zhcjtcblx0XHRcdH1cblx0XHRcdGdyb3Vwcy5wdXNoKCAoIHRva2VucyA9IFtdICkgKTtcblx0XHR9XG5cblx0XHRtYXRjaGVkID0gZmFsc2U7XG5cblx0XHQvLyBDb21iaW5hdG9yc1xuXHRcdGlmICggKCBtYXRjaCA9IHJjb21iaW5hdG9ycy5leGVjKCBzb0ZhciApICkgKSB7XG5cdFx0XHRtYXRjaGVkID0gbWF0Y2guc2hpZnQoKTtcblx0XHRcdHRva2Vucy5wdXNoKCB7XG5cdFx0XHRcdHZhbHVlOiBtYXRjaGVkLFxuXG5cdFx0XHRcdC8vIENhc3QgZGVzY2VuZGFudCBjb21iaW5hdG9ycyB0byBzcGFjZVxuXHRcdFx0XHR0eXBlOiBtYXRjaFsgMCBdLnJlcGxhY2UoIHJ0cmltLCBcIiBcIiApXG5cdFx0XHR9ICk7XG5cdFx0XHRzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaGVkLmxlbmd0aCApO1xuXHRcdH1cblxuXHRcdC8vIEZpbHRlcnNcblx0XHRmb3IgKCB0eXBlIGluIEV4cHIuZmlsdGVyICkge1xuXHRcdFx0aWYgKCAoIG1hdGNoID0gbWF0Y2hFeHByWyB0eXBlIF0uZXhlYyggc29GYXIgKSApICYmICggIXByZUZpbHRlcnNbIHR5cGUgXSB8fFxuXHRcdFx0XHQoIG1hdGNoID0gcHJlRmlsdGVyc1sgdHlwZSBdKCBtYXRjaCApICkgKSApIHtcblx0XHRcdFx0bWF0Y2hlZCA9IG1hdGNoLnNoaWZ0KCk7XG5cdFx0XHRcdHRva2Vucy5wdXNoKCB7XG5cdFx0XHRcdFx0dmFsdWU6IG1hdGNoZWQsXG5cdFx0XHRcdFx0dHlwZTogdHlwZSxcblx0XHRcdFx0XHRtYXRjaGVzOiBtYXRjaFxuXHRcdFx0XHR9ICk7XG5cdFx0XHRcdHNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoZWQubGVuZ3RoICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCAhbWF0Y2hlZCApIHtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdC8vIFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBpbnZhbGlkIGV4Y2Vzc1xuXHQvLyBpZiB3ZSdyZSBqdXN0IHBhcnNpbmdcblx0Ly8gT3RoZXJ3aXNlLCB0aHJvdyBhbiBlcnJvciBvciByZXR1cm4gdG9rZW5zXG5cdHJldHVybiBwYXJzZU9ubHkgP1xuXHRcdHNvRmFyLmxlbmd0aCA6XG5cdFx0c29GYXIgP1xuXHRcdFx0U2l6emxlLmVycm9yKCBzZWxlY3RvciApIDpcblxuXHRcdFx0Ly8gQ2FjaGUgdGhlIHRva2Vuc1xuXHRcdFx0dG9rZW5DYWNoZSggc2VsZWN0b3IsIGdyb3VwcyApLnNsaWNlKCAwICk7XG59O1xuXG5mdW5jdGlvbiB0b1NlbGVjdG9yKCB0b2tlbnMgKSB7XG5cdHZhciBpID0gMCxcblx0XHRsZW4gPSB0b2tlbnMubGVuZ3RoLFxuXHRcdHNlbGVjdG9yID0gXCJcIjtcblx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0c2VsZWN0b3IgKz0gdG9rZW5zWyBpIF0udmFsdWU7XG5cdH1cblx0cmV0dXJuIHNlbGVjdG9yO1xufVxuXG5mdW5jdGlvbiBhZGRDb21iaW5hdG9yKCBtYXRjaGVyLCBjb21iaW5hdG9yLCBiYXNlICkge1xuXHR2YXIgZGlyID0gY29tYmluYXRvci5kaXIsXG5cdFx0c2tpcCA9IGNvbWJpbmF0b3IubmV4dCxcblx0XHRrZXkgPSBza2lwIHx8IGRpcixcblx0XHRjaGVja05vbkVsZW1lbnRzID0gYmFzZSAmJiBrZXkgPT09IFwicGFyZW50Tm9kZVwiLFxuXHRcdGRvbmVOYW1lID0gZG9uZSsrO1xuXG5cdHJldHVybiBjb21iaW5hdG9yLmZpcnN0ID9cblxuXHRcdC8vIENoZWNrIGFnYWluc3QgY2xvc2VzdCBhbmNlc3Rvci9wcmVjZWRpbmcgZWxlbWVudFxuXHRcdGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHR3aGlsZSAoICggZWxlbSA9IGVsZW1bIGRpciBdICkgKSB7XG5cdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkge1xuXHRcdFx0XHRcdHJldHVybiBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0gOlxuXG5cdFx0Ly8gQ2hlY2sgYWdhaW5zdCBhbGwgYW5jZXN0b3IvcHJlY2VkaW5nIGVsZW1lbnRzXG5cdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHZhciBvbGRDYWNoZSwgdW5pcXVlQ2FjaGUsIG91dGVyQ2FjaGUsXG5cdFx0XHRcdG5ld0NhY2hlID0gWyBkaXJydW5zLCBkb25lTmFtZSBdO1xuXG5cdFx0XHQvLyBXZSBjYW4ndCBzZXQgYXJiaXRyYXJ5IGRhdGEgb24gWE1MIG5vZGVzLCBzbyB0aGV5IGRvbid0IGJlbmVmaXQgZnJvbSBjb21iaW5hdG9yIGNhY2hpbmdcblx0XHRcdGlmICggeG1sICkge1xuXHRcdFx0XHR3aGlsZSAoICggZWxlbSA9IGVsZW1bIGRpciBdICkgKSB7XG5cdFx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApICkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHdoaWxlICggKCBlbGVtID0gZWxlbVsgZGlyIF0gKSApIHtcblx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50cyApIHtcblx0XHRcdFx0XHRcdG91dGVyQ2FjaGUgPSBlbGVtWyBleHBhbmRvIF0gfHwgKCBlbGVtWyBleHBhbmRvIF0gPSB7fSApO1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8OSBvbmx5XG5cdFx0XHRcdFx0XHQvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSlcblx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgZWxlbS51bmlxdWVJRCBdIHx8XG5cdFx0XHRcdFx0XHRcdCggb3V0ZXJDYWNoZVsgZWxlbS51bmlxdWVJRCBdID0ge30gKTtcblxuXHRcdFx0XHRcdFx0aWYgKCBza2lwICYmIHNraXAgPT09IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSApIHtcblx0XHRcdFx0XHRcdFx0ZWxlbSA9IGVsZW1bIGRpciBdIHx8IGVsZW07XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCAoIG9sZENhY2hlID0gdW5pcXVlQ2FjaGVbIGtleSBdICkgJiZcblx0XHRcdFx0XHRcdFx0b2xkQ2FjaGVbIDAgXSA9PT0gZGlycnVucyAmJiBvbGRDYWNoZVsgMSBdID09PSBkb25lTmFtZSApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBBc3NpZ24gdG8gbmV3Q2FjaGUgc28gcmVzdWx0cyBiYWNrLXByb3BhZ2F0ZSB0byBwcmV2aW91cyBlbGVtZW50c1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKCBuZXdDYWNoZVsgMiBdID0gb2xkQ2FjaGVbIDIgXSApO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBSZXVzZSBuZXdjYWNoZSBzbyByZXN1bHRzIGJhY2stcHJvcGFnYXRlIHRvIHByZXZpb3VzIGVsZW1lbnRzXG5cdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlWyBrZXkgXSA9IG5ld0NhY2hlO1xuXG5cdFx0XHRcdFx0XHRcdC8vIEEgbWF0Y2ggbWVhbnMgd2UncmUgZG9uZTsgYSBmYWlsIG1lYW5zIHdlIGhhdmUgdG8ga2VlcCBjaGVja2luZ1xuXHRcdFx0XHRcdFx0XHRpZiAoICggbmV3Q2FjaGVbIDIgXSA9IG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9O1xufVxuXG5mdW5jdGlvbiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSB7XG5cdHJldHVybiBtYXRjaGVycy5sZW5ndGggPiAxID9cblx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0dmFyIGkgPSBtYXRjaGVycy5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0aWYgKCAhbWF0Y2hlcnNbIGkgXSggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IDpcblx0XHRtYXRjaGVyc1sgMCBdO1xufVxuXG5mdW5jdGlvbiBtdWx0aXBsZUNvbnRleHRzKCBzZWxlY3RvciwgY29udGV4dHMsIHJlc3VsdHMgKSB7XG5cdHZhciBpID0gMCxcblx0XHRsZW4gPSBjb250ZXh0cy5sZW5ndGg7XG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFNpenpsZSggc2VsZWN0b3IsIGNvbnRleHRzWyBpIF0sIHJlc3VsdHMgKTtcblx0fVxuXHRyZXR1cm4gcmVzdWx0cztcbn1cblxuZnVuY3Rpb24gY29uZGVuc2UoIHVubWF0Y2hlZCwgbWFwLCBmaWx0ZXIsIGNvbnRleHQsIHhtbCApIHtcblx0dmFyIGVsZW0sXG5cdFx0bmV3VW5tYXRjaGVkID0gW10sXG5cdFx0aSA9IDAsXG5cdFx0bGVuID0gdW5tYXRjaGVkLmxlbmd0aCxcblx0XHRtYXBwZWQgPSBtYXAgIT0gbnVsbDtcblxuXHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRpZiAoICggZWxlbSA9IHVubWF0Y2hlZFsgaSBdICkgKSB7XG5cdFx0XHRpZiAoICFmaWx0ZXIgfHwgZmlsdGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHtcblx0XHRcdFx0bmV3VW5tYXRjaGVkLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0aWYgKCBtYXBwZWQgKSB7XG5cdFx0XHRcdFx0bWFwLnB1c2goIGkgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBuZXdVbm1hdGNoZWQ7XG59XG5cbmZ1bmN0aW9uIHNldE1hdGNoZXIoIHByZUZpbHRlciwgc2VsZWN0b3IsIG1hdGNoZXIsIHBvc3RGaWx0ZXIsIHBvc3RGaW5kZXIsIHBvc3RTZWxlY3RvciApIHtcblx0aWYgKCBwb3N0RmlsdGVyICYmICFwb3N0RmlsdGVyWyBleHBhbmRvIF0gKSB7XG5cdFx0cG9zdEZpbHRlciA9IHNldE1hdGNoZXIoIHBvc3RGaWx0ZXIgKTtcblx0fVxuXHRpZiAoIHBvc3RGaW5kZXIgJiYgIXBvc3RGaW5kZXJbIGV4cGFuZG8gXSApIHtcblx0XHRwb3N0RmluZGVyID0gc2V0TWF0Y2hlciggcG9zdEZpbmRlciwgcG9zdFNlbGVjdG9yICk7XG5cdH1cblx0cmV0dXJuIG1hcmtGdW5jdGlvbiggZnVuY3Rpb24oIHNlZWQsIHJlc3VsdHMsIGNvbnRleHQsIHhtbCApIHtcblx0XHR2YXIgdGVtcCwgaSwgZWxlbSxcblx0XHRcdHByZU1hcCA9IFtdLFxuXHRcdFx0cG9zdE1hcCA9IFtdLFxuXHRcdFx0cHJlZXhpc3RpbmcgPSByZXN1bHRzLmxlbmd0aCxcblxuXHRcdFx0Ly8gR2V0IGluaXRpYWwgZWxlbWVudHMgZnJvbSBzZWVkIG9yIGNvbnRleHRcblx0XHRcdGVsZW1zID0gc2VlZCB8fCBtdWx0aXBsZUNvbnRleHRzKFxuXHRcdFx0XHRzZWxlY3RvciB8fCBcIipcIixcblx0XHRcdFx0Y29udGV4dC5ub2RlVHlwZSA/IFsgY29udGV4dCBdIDogY29udGV4dCxcblx0XHRcdFx0W11cblx0XHRcdCksXG5cblx0XHRcdC8vIFByZWZpbHRlciB0byBnZXQgbWF0Y2hlciBpbnB1dCwgcHJlc2VydmluZyBhIG1hcCBmb3Igc2VlZC1yZXN1bHRzIHN5bmNocm9uaXphdGlvblxuXHRcdFx0bWF0Y2hlckluID0gcHJlRmlsdGVyICYmICggc2VlZCB8fCAhc2VsZWN0b3IgKSA/XG5cdFx0XHRcdGNvbmRlbnNlKCBlbGVtcywgcHJlTWFwLCBwcmVGaWx0ZXIsIGNvbnRleHQsIHhtbCApIDpcblx0XHRcdFx0ZWxlbXMsXG5cblx0XHRcdG1hdGNoZXJPdXQgPSBtYXRjaGVyID9cblxuXHRcdFx0XHQvLyBJZiB3ZSBoYXZlIGEgcG9zdEZpbmRlciwgb3IgZmlsdGVyZWQgc2VlZCwgb3Igbm9uLXNlZWQgcG9zdEZpbHRlciBvciBwcmVleGlzdGluZyByZXN1bHRzLFxuXHRcdFx0XHRwb3N0RmluZGVyIHx8ICggc2VlZCA/IHByZUZpbHRlciA6IHByZWV4aXN0aW5nIHx8IHBvc3RGaWx0ZXIgKSA/XG5cblx0XHRcdFx0XHQvLyAuLi5pbnRlcm1lZGlhdGUgcHJvY2Vzc2luZyBpcyBuZWNlc3Nhcnlcblx0XHRcdFx0XHRbXSA6XG5cblx0XHRcdFx0XHQvLyAuLi5vdGhlcndpc2UgdXNlIHJlc3VsdHMgZGlyZWN0bHlcblx0XHRcdFx0XHRyZXN1bHRzIDpcblx0XHRcdFx0bWF0Y2hlckluO1xuXG5cdFx0Ly8gRmluZCBwcmltYXJ5IG1hdGNoZXNcblx0XHRpZiAoIG1hdGNoZXIgKSB7XG5cdFx0XHRtYXRjaGVyKCBtYXRjaGVySW4sIG1hdGNoZXJPdXQsIGNvbnRleHQsIHhtbCApO1xuXHRcdH1cblxuXHRcdC8vIEFwcGx5IHBvc3RGaWx0ZXJcblx0XHRpZiAoIHBvc3RGaWx0ZXIgKSB7XG5cdFx0XHR0ZW1wID0gY29uZGVuc2UoIG1hdGNoZXJPdXQsIHBvc3RNYXAgKTtcblx0XHRcdHBvc3RGaWx0ZXIoIHRlbXAsIFtdLCBjb250ZXh0LCB4bWwgKTtcblxuXHRcdFx0Ly8gVW4tbWF0Y2ggZmFpbGluZyBlbGVtZW50cyBieSBtb3ZpbmcgdGhlbSBiYWNrIHRvIG1hdGNoZXJJblxuXHRcdFx0aSA9IHRlbXAubGVuZ3RoO1xuXHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdGlmICggKCBlbGVtID0gdGVtcFsgaSBdICkgKSB7XG5cdFx0XHRcdFx0bWF0Y2hlck91dFsgcG9zdE1hcFsgaSBdIF0gPSAhKCBtYXRjaGVySW5bIHBvc3RNYXBbIGkgXSBdID0gZWxlbSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCBzZWVkICkge1xuXHRcdFx0aWYgKCBwb3N0RmluZGVyIHx8IHByZUZpbHRlciApIHtcblx0XHRcdFx0aWYgKCBwb3N0RmluZGVyICkge1xuXG5cdFx0XHRcdFx0Ly8gR2V0IHRoZSBmaW5hbCBtYXRjaGVyT3V0IGJ5IGNvbmRlbnNpbmcgdGhpcyBpbnRlcm1lZGlhdGUgaW50byBwb3N0RmluZGVyIGNvbnRleHRzXG5cdFx0XHRcdFx0dGVtcCA9IFtdO1xuXHRcdFx0XHRcdGkgPSBtYXRjaGVyT3V0Lmxlbmd0aDtcblx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdGlmICggKCBlbGVtID0gbWF0Y2hlck91dFsgaSBdICkgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gUmVzdG9yZSBtYXRjaGVySW4gc2luY2UgZWxlbSBpcyBub3QgeWV0IGEgZmluYWwgbWF0Y2hcblx0XHRcdFx0XHRcdFx0dGVtcC5wdXNoKCAoIG1hdGNoZXJJblsgaSBdID0gZWxlbSApICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHBvc3RGaW5kZXIoIG51bGwsICggbWF0Y2hlck91dCA9IFtdICksIHRlbXAsIHhtbCApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gTW92ZSBtYXRjaGVkIGVsZW1lbnRzIGZyb20gc2VlZCB0byByZXN1bHRzIHRvIGtlZXAgdGhlbSBzeW5jaHJvbml6ZWRcblx0XHRcdFx0aSA9IG1hdGNoZXJPdXQubGVuZ3RoO1xuXHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRpZiAoICggZWxlbSA9IG1hdGNoZXJPdXRbIGkgXSApICYmXG5cdFx0XHRcdFx0XHQoIHRlbXAgPSBwb3N0RmluZGVyID8gaW5kZXhPZiggc2VlZCwgZWxlbSApIDogcHJlTWFwWyBpIF0gKSA+IC0xICkge1xuXG5cdFx0XHRcdFx0XHRzZWVkWyB0ZW1wIF0gPSAhKCByZXN1bHRzWyB0ZW1wIF0gPSBlbGVtICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHQvLyBBZGQgZWxlbWVudHMgdG8gcmVzdWx0cywgdGhyb3VnaCBwb3N0RmluZGVyIGlmIGRlZmluZWRcblx0XHR9IGVsc2Uge1xuXHRcdFx0bWF0Y2hlck91dCA9IGNvbmRlbnNlKFxuXHRcdFx0XHRtYXRjaGVyT3V0ID09PSByZXN1bHRzID9cblx0XHRcdFx0XHRtYXRjaGVyT3V0LnNwbGljZSggcHJlZXhpc3RpbmcsIG1hdGNoZXJPdXQubGVuZ3RoICkgOlxuXHRcdFx0XHRcdG1hdGNoZXJPdXRcblx0XHRcdCk7XG5cdFx0XHRpZiAoIHBvc3RGaW5kZXIgKSB7XG5cdFx0XHRcdHBvc3RGaW5kZXIoIG51bGwsIHJlc3VsdHMsIG1hdGNoZXJPdXQsIHhtbCApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgbWF0Y2hlck91dCApO1xuXHRcdFx0fVxuXHRcdH1cblx0fSApO1xufVxuXG5mdW5jdGlvbiBtYXRjaGVyRnJvbVRva2VucyggdG9rZW5zICkge1xuXHR2YXIgY2hlY2tDb250ZXh0LCBtYXRjaGVyLCBqLFxuXHRcdGxlbiA9IHRva2Vucy5sZW5ndGgsXG5cdFx0bGVhZGluZ1JlbGF0aXZlID0gRXhwci5yZWxhdGl2ZVsgdG9rZW5zWyAwIF0udHlwZSBdLFxuXHRcdGltcGxpY2l0UmVsYXRpdmUgPSBsZWFkaW5nUmVsYXRpdmUgfHwgRXhwci5yZWxhdGl2ZVsgXCIgXCIgXSxcblx0XHRpID0gbGVhZGluZ1JlbGF0aXZlID8gMSA6IDAsXG5cblx0XHQvLyBUaGUgZm91bmRhdGlvbmFsIG1hdGNoZXIgZW5zdXJlcyB0aGF0IGVsZW1lbnRzIGFyZSByZWFjaGFibGUgZnJvbSB0b3AtbGV2ZWwgY29udGV4dChzKVxuXHRcdG1hdGNoQ29udGV4dCA9IGFkZENvbWJpbmF0b3IoIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0gPT09IGNoZWNrQ29udGV4dDtcblx0XHR9LCBpbXBsaWNpdFJlbGF0aXZlLCB0cnVlICksXG5cdFx0bWF0Y2hBbnlDb250ZXh0ID0gYWRkQ29tYmluYXRvciggZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gaW5kZXhPZiggY2hlY2tDb250ZXh0LCBlbGVtICkgPiAtMTtcblx0XHR9LCBpbXBsaWNpdFJlbGF0aXZlLCB0cnVlICksXG5cdFx0bWF0Y2hlcnMgPSBbIGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHR2YXIgcmV0ID0gKCAhbGVhZGluZ1JlbGF0aXZlICYmICggeG1sIHx8IGNvbnRleHQgIT09IG91dGVybW9zdENvbnRleHQgKSApIHx8IChcblx0XHRcdFx0KCBjaGVja0NvbnRleHQgPSBjb250ZXh0ICkubm9kZVR5cGUgP1xuXHRcdFx0XHRcdG1hdGNoQ29udGV4dCggZWxlbSwgY29udGV4dCwgeG1sICkgOlxuXHRcdFx0XHRcdG1hdGNoQW55Q29udGV4dCggZWxlbSwgY29udGV4dCwgeG1sICkgKTtcblxuXHRcdFx0Ly8gQXZvaWQgaGFuZ2luZyBvbnRvIGVsZW1lbnQgKGlzc3VlICMyOTkpXG5cdFx0XHRjaGVja0NvbnRleHQgPSBudWxsO1xuXHRcdFx0cmV0dXJuIHJldDtcblx0XHR9IF07XG5cblx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0aWYgKCAoIG1hdGNoZXIgPSBFeHByLnJlbGF0aXZlWyB0b2tlbnNbIGkgXS50eXBlIF0gKSApIHtcblx0XHRcdG1hdGNoZXJzID0gWyBhZGRDb21iaW5hdG9yKCBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSwgbWF0Y2hlciApIF07XG5cdFx0fSBlbHNlIHtcblx0XHRcdG1hdGNoZXIgPSBFeHByLmZpbHRlclsgdG9rZW5zWyBpIF0udHlwZSBdLmFwcGx5KCBudWxsLCB0b2tlbnNbIGkgXS5tYXRjaGVzICk7XG5cblx0XHRcdC8vIFJldHVybiBzcGVjaWFsIHVwb24gc2VlaW5nIGEgcG9zaXRpb25hbCBtYXRjaGVyXG5cdFx0XHRpZiAoIG1hdGNoZXJbIGV4cGFuZG8gXSApIHtcblxuXHRcdFx0XHQvLyBGaW5kIHRoZSBuZXh0IHJlbGF0aXZlIG9wZXJhdG9yIChpZiBhbnkpIGZvciBwcm9wZXIgaGFuZGxpbmdcblx0XHRcdFx0aiA9ICsraTtcblx0XHRcdFx0Zm9yICggOyBqIDwgbGVuOyBqKysgKSB7XG5cdFx0XHRcdFx0aWYgKCBFeHByLnJlbGF0aXZlWyB0b2tlbnNbIGogXS50eXBlIF0gKSB7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHNldE1hdGNoZXIoXG5cdFx0XHRcdFx0aSA+IDEgJiYgZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICksXG5cdFx0XHRcdFx0aSA+IDEgJiYgdG9TZWxlY3RvcihcblxuXHRcdFx0XHRcdC8vIElmIHRoZSBwcmVjZWRpbmcgdG9rZW4gd2FzIGEgZGVzY2VuZGFudCBjb21iaW5hdG9yLCBpbnNlcnQgYW4gaW1wbGljaXQgYW55LWVsZW1lbnQgYCpgXG5cdFx0XHRcdFx0dG9rZW5zXG5cdFx0XHRcdFx0XHQuc2xpY2UoIDAsIGkgLSAxIClcblx0XHRcdFx0XHRcdC5jb25jYXQoIHsgdmFsdWU6IHRva2Vuc1sgaSAtIDIgXS50eXBlID09PSBcIiBcIiA/IFwiKlwiIDogXCJcIiB9IClcblx0XHRcdFx0XHQpLnJlcGxhY2UoIHJ0cmltLCBcIiQxXCIgKSxcblx0XHRcdFx0XHRtYXRjaGVyLFxuXHRcdFx0XHRcdGkgPCBqICYmIG1hdGNoZXJGcm9tVG9rZW5zKCB0b2tlbnMuc2xpY2UoIGksIGogKSApLFxuXHRcdFx0XHRcdGogPCBsZW4gJiYgbWF0Y2hlckZyb21Ub2tlbnMoICggdG9rZW5zID0gdG9rZW5zLnNsaWNlKCBqICkgKSApLFxuXHRcdFx0XHRcdGogPCBsZW4gJiYgdG9TZWxlY3RvciggdG9rZW5zIClcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdG1hdGNoZXJzLnB1c2goIG1hdGNoZXIgKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICk7XG59XG5cbmZ1bmN0aW9uIG1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyggZWxlbWVudE1hdGNoZXJzLCBzZXRNYXRjaGVycyApIHtcblx0dmFyIGJ5U2V0ID0gc2V0TWF0Y2hlcnMubGVuZ3RoID4gMCxcblx0XHRieUVsZW1lbnQgPSBlbGVtZW50TWF0Y2hlcnMubGVuZ3RoID4gMCxcblx0XHRzdXBlck1hdGNoZXIgPSBmdW5jdGlvbiggc2VlZCwgY29udGV4dCwgeG1sLCByZXN1bHRzLCBvdXRlcm1vc3QgKSB7XG5cdFx0XHR2YXIgZWxlbSwgaiwgbWF0Y2hlcixcblx0XHRcdFx0bWF0Y2hlZENvdW50ID0gMCxcblx0XHRcdFx0aSA9IFwiMFwiLFxuXHRcdFx0XHR1bm1hdGNoZWQgPSBzZWVkICYmIFtdLFxuXHRcdFx0XHRzZXRNYXRjaGVkID0gW10sXG5cdFx0XHRcdGNvbnRleHRCYWNrdXAgPSBvdXRlcm1vc3RDb250ZXh0LFxuXG5cdFx0XHRcdC8vIFdlIG11c3QgYWx3YXlzIGhhdmUgZWl0aGVyIHNlZWQgZWxlbWVudHMgb3Igb3V0ZXJtb3N0IGNvbnRleHRcblx0XHRcdFx0ZWxlbXMgPSBzZWVkIHx8IGJ5RWxlbWVudCAmJiBFeHByLmZpbmRbIFwiVEFHXCIgXSggXCIqXCIsIG91dGVybW9zdCApLFxuXG5cdFx0XHRcdC8vIFVzZSBpbnRlZ2VyIGRpcnJ1bnMgaWZmIHRoaXMgaXMgdGhlIG91dGVybW9zdCBtYXRjaGVyXG5cdFx0XHRcdGRpcnJ1bnNVbmlxdWUgPSAoIGRpcnJ1bnMgKz0gY29udGV4dEJhY2t1cCA9PSBudWxsID8gMSA6IE1hdGgucmFuZG9tKCkgfHwgMC4xICksXG5cdFx0XHRcdGxlbiA9IGVsZW1zLmxlbmd0aDtcblxuXHRcdFx0aWYgKCBvdXRlcm1vc3QgKSB7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgMTErLCBFZGdlIDE3IC0gMTgrXG5cdFx0XHRcdC8vIElFL0VkZ2Ugc29tZXRpbWVzIHRocm93IGEgXCJQZXJtaXNzaW9uIGRlbmllZFwiIGVycm9yIHdoZW4gc3RyaWN0LWNvbXBhcmluZ1xuXHRcdFx0XHQvLyB0d28gZG9jdW1lbnRzOyBzaGFsbG93IGNvbXBhcmlzb25zIHdvcmsuXG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcblx0XHRcdFx0b3V0ZXJtb3N0Q29udGV4dCA9IGNvbnRleHQgPT0gZG9jdW1lbnQgfHwgY29udGV4dCB8fCBvdXRlcm1vc3Q7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFkZCBlbGVtZW50cyBwYXNzaW5nIGVsZW1lbnRNYXRjaGVycyBkaXJlY3RseSB0byByZXN1bHRzXG5cdFx0XHQvLyBTdXBwb3J0OiBJRTw5LCBTYWZhcmlcblx0XHRcdC8vIFRvbGVyYXRlIE5vZGVMaXN0IHByb3BlcnRpZXMgKElFOiBcImxlbmd0aFwiOyBTYWZhcmk6IDxudW1iZXI+KSBtYXRjaGluZyBlbGVtZW50cyBieSBpZFxuXHRcdFx0Zm9yICggOyBpICE9PSBsZW4gJiYgKCBlbGVtID0gZWxlbXNbIGkgXSApICE9IG51bGw7IGkrKyApIHtcblx0XHRcdFx0aWYgKCBieUVsZW1lbnQgJiYgZWxlbSApIHtcblx0XHRcdFx0XHRqID0gMDtcblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDExKywgRWRnZSAxNyAtIDE4K1xuXHRcdFx0XHRcdC8vIElFL0VkZ2Ugc29tZXRpbWVzIHRocm93IGEgXCJQZXJtaXNzaW9uIGRlbmllZFwiIGVycm9yIHdoZW4gc3RyaWN0LWNvbXBhcmluZ1xuXHRcdFx0XHRcdC8vIHR3byBkb2N1bWVudHM7IHNoYWxsb3cgY29tcGFyaXNvbnMgd29yay5cblx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG5cdFx0XHRcdFx0aWYgKCAhY29udGV4dCAmJiBlbGVtLm93bmVyRG9jdW1lbnQgIT0gZG9jdW1lbnQgKSB7XG5cdFx0XHRcdFx0XHRzZXREb2N1bWVudCggZWxlbSApO1xuXHRcdFx0XHRcdFx0eG1sID0gIWRvY3VtZW50SXNIVE1MO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR3aGlsZSAoICggbWF0Y2hlciA9IGVsZW1lbnRNYXRjaGVyc1sgaisrIF0gKSApIHtcblx0XHRcdFx0XHRcdGlmICggbWF0Y2hlciggZWxlbSwgY29udGV4dCB8fCBkb2N1bWVudCwgeG1sICkgKSB7XG5cdFx0XHRcdFx0XHRcdHJlc3VsdHMucHVzaCggZWxlbSApO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCBvdXRlcm1vc3QgKSB7XG5cdFx0XHRcdFx0XHRkaXJydW5zID0gZGlycnVuc1VuaXF1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBUcmFjayB1bm1hdGNoZWQgZWxlbWVudHMgZm9yIHNldCBmaWx0ZXJzXG5cdFx0XHRcdGlmICggYnlTZXQgKSB7XG5cblx0XHRcdFx0XHQvLyBUaGV5IHdpbGwgaGF2ZSBnb25lIHRocm91Z2ggYWxsIHBvc3NpYmxlIG1hdGNoZXJzXG5cdFx0XHRcdFx0aWYgKCAoIGVsZW0gPSAhbWF0Y2hlciAmJiBlbGVtICkgKSB7XG5cdFx0XHRcdFx0XHRtYXRjaGVkQ291bnQtLTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBMZW5ndGhlbiB0aGUgYXJyYXkgZm9yIGV2ZXJ5IGVsZW1lbnQsIG1hdGNoZWQgb3Igbm90XG5cdFx0XHRcdFx0aWYgKCBzZWVkICkge1xuXHRcdFx0XHRcdFx0dW5tYXRjaGVkLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gYGlgIGlzIG5vdyB0aGUgY291bnQgb2YgZWxlbWVudHMgdmlzaXRlZCBhYm92ZSwgYW5kIGFkZGluZyBpdCB0byBgbWF0Y2hlZENvdW50YFxuXHRcdFx0Ly8gbWFrZXMgdGhlIGxhdHRlciBub25uZWdhdGl2ZS5cblx0XHRcdG1hdGNoZWRDb3VudCArPSBpO1xuXG5cdFx0XHQvLyBBcHBseSBzZXQgZmlsdGVycyB0byB1bm1hdGNoZWQgZWxlbWVudHNcblx0XHRcdC8vIE5PVEU6IFRoaXMgY2FuIGJlIHNraXBwZWQgaWYgdGhlcmUgYXJlIG5vIHVubWF0Y2hlZCBlbGVtZW50cyAoaS5lLiwgYG1hdGNoZWRDb3VudGBcblx0XHRcdC8vIGVxdWFscyBgaWApLCB1bmxlc3Mgd2UgZGlkbid0IHZpc2l0IF9hbnlfIGVsZW1lbnRzIGluIHRoZSBhYm92ZSBsb29wIGJlY2F1c2Ugd2UgaGF2ZVxuXHRcdFx0Ly8gbm8gZWxlbWVudCBtYXRjaGVycyBhbmQgbm8gc2VlZC5cblx0XHRcdC8vIEluY3JlbWVudGluZyBhbiBpbml0aWFsbHktc3RyaW5nIFwiMFwiIGBpYCBhbGxvd3MgYGlgIHRvIHJlbWFpbiBhIHN0cmluZyBvbmx5IGluIHRoYXRcblx0XHRcdC8vIGNhc2UsIHdoaWNoIHdpbGwgcmVzdWx0IGluIGEgXCIwMFwiIGBtYXRjaGVkQ291bnRgIHRoYXQgZGlmZmVycyBmcm9tIGBpYCBidXQgaXMgYWxzb1xuXHRcdFx0Ly8gbnVtZXJpY2FsbHkgemVyby5cblx0XHRcdGlmICggYnlTZXQgJiYgaSAhPT0gbWF0Y2hlZENvdW50ICkge1xuXHRcdFx0XHRqID0gMDtcblx0XHRcdFx0d2hpbGUgKCAoIG1hdGNoZXIgPSBzZXRNYXRjaGVyc1sgaisrIF0gKSApIHtcblx0XHRcdFx0XHRtYXRjaGVyKCB1bm1hdGNoZWQsIHNldE1hdGNoZWQsIGNvbnRleHQsIHhtbCApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCBzZWVkICkge1xuXG5cdFx0XHRcdFx0Ly8gUmVpbnRlZ3JhdGUgZWxlbWVudCBtYXRjaGVzIHRvIGVsaW1pbmF0ZSB0aGUgbmVlZCBmb3Igc29ydGluZ1xuXHRcdFx0XHRcdGlmICggbWF0Y2hlZENvdW50ID4gMCApIHtcblx0XHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0XHRpZiAoICEoIHVubWF0Y2hlZFsgaSBdIHx8IHNldE1hdGNoZWRbIGkgXSApICkge1xuXHRcdFx0XHRcdFx0XHRcdHNldE1hdGNoZWRbIGkgXSA9IHBvcC5jYWxsKCByZXN1bHRzICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBEaXNjYXJkIGluZGV4IHBsYWNlaG9sZGVyIHZhbHVlcyB0byBnZXQgb25seSBhY3R1YWwgbWF0Y2hlc1xuXHRcdFx0XHRcdHNldE1hdGNoZWQgPSBjb25kZW5zZSggc2V0TWF0Y2hlZCApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQWRkIG1hdGNoZXMgdG8gcmVzdWx0c1xuXHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBzZXRNYXRjaGVkICk7XG5cblx0XHRcdFx0Ly8gU2VlZGxlc3Mgc2V0IG1hdGNoZXMgc3VjY2VlZGluZyBtdWx0aXBsZSBzdWNjZXNzZnVsIG1hdGNoZXJzIHN0aXB1bGF0ZSBzb3J0aW5nXG5cdFx0XHRcdGlmICggb3V0ZXJtb3N0ICYmICFzZWVkICYmIHNldE1hdGNoZWQubGVuZ3RoID4gMCAmJlxuXHRcdFx0XHRcdCggbWF0Y2hlZENvdW50ICsgc2V0TWF0Y2hlcnMubGVuZ3RoICkgPiAxICkge1xuXG5cdFx0XHRcdFx0U2l6emxlLnVuaXF1ZVNvcnQoIHJlc3VsdHMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBPdmVycmlkZSBtYW5pcHVsYXRpb24gb2YgZ2xvYmFscyBieSBuZXN0ZWQgbWF0Y2hlcnNcblx0XHRcdGlmICggb3V0ZXJtb3N0ICkge1xuXHRcdFx0XHRkaXJydW5zID0gZGlycnVuc1VuaXF1ZTtcblx0XHRcdFx0b3V0ZXJtb3N0Q29udGV4dCA9IGNvbnRleHRCYWNrdXA7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiB1bm1hdGNoZWQ7XG5cdFx0fTtcblxuXHRyZXR1cm4gYnlTZXQgP1xuXHRcdG1hcmtGdW5jdGlvbiggc3VwZXJNYXRjaGVyICkgOlxuXHRcdHN1cGVyTWF0Y2hlcjtcbn1cblxuY29tcGlsZSA9IFNpenpsZS5jb21waWxlID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBtYXRjaCAvKiBJbnRlcm5hbCBVc2UgT25seSAqLyApIHtcblx0dmFyIGksXG5cdFx0c2V0TWF0Y2hlcnMgPSBbXSxcblx0XHRlbGVtZW50TWF0Y2hlcnMgPSBbXSxcblx0XHRjYWNoZWQgPSBjb21waWxlckNhY2hlWyBzZWxlY3RvciArIFwiIFwiIF07XG5cblx0aWYgKCAhY2FjaGVkICkge1xuXG5cdFx0Ly8gR2VuZXJhdGUgYSBmdW5jdGlvbiBvZiByZWN1cnNpdmUgZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgdG8gY2hlY2sgZWFjaCBlbGVtZW50XG5cdFx0aWYgKCAhbWF0Y2ggKSB7XG5cdFx0XHRtYXRjaCA9IHRva2VuaXplKCBzZWxlY3RvciApO1xuXHRcdH1cblx0XHRpID0gbWF0Y2gubGVuZ3RoO1xuXHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0Y2FjaGVkID0gbWF0Y2hlckZyb21Ub2tlbnMoIG1hdGNoWyBpIF0gKTtcblx0XHRcdGlmICggY2FjaGVkWyBleHBhbmRvIF0gKSB7XG5cdFx0XHRcdHNldE1hdGNoZXJzLnB1c2goIGNhY2hlZCApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZWxlbWVudE1hdGNoZXJzLnB1c2goIGNhY2hlZCApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENhY2hlIHRoZSBjb21waWxlZCBmdW5jdGlvblxuXHRcdGNhY2hlZCA9IGNvbXBpbGVyQ2FjaGUoXG5cdFx0XHRzZWxlY3Rvcixcblx0XHRcdG1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyggZWxlbWVudE1hdGNoZXJzLCBzZXRNYXRjaGVycyApXG5cdFx0KTtcblxuXHRcdC8vIFNhdmUgc2VsZWN0b3IgYW5kIHRva2VuaXphdGlvblxuXHRcdGNhY2hlZC5zZWxlY3RvciA9IHNlbGVjdG9yO1xuXHR9XG5cdHJldHVybiBjYWNoZWQ7XG59O1xuXG4vKipcbiAqIEEgbG93LWxldmVsIHNlbGVjdGlvbiBmdW5jdGlvbiB0aGF0IHdvcmtzIHdpdGggU2l6emxlJ3MgY29tcGlsZWRcbiAqICBzZWxlY3RvciBmdW5jdGlvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfEZ1bmN0aW9ufSBzZWxlY3RvciBBIHNlbGVjdG9yIG9yIGEgcHJlLWNvbXBpbGVkXG4gKiAgc2VsZWN0b3IgZnVuY3Rpb24gYnVpbHQgd2l0aCBTaXp6bGUuY29tcGlsZVxuICogQHBhcmFtIHtFbGVtZW50fSBjb250ZXh0XG4gKiBAcGFyYW0ge0FycmF5fSBbcmVzdWx0c11cbiAqIEBwYXJhbSB7QXJyYXl9IFtzZWVkXSBBIHNldCBvZiBlbGVtZW50cyB0byBtYXRjaCBhZ2FpbnN0XG4gKi9cbnNlbGVjdCA9IFNpenpsZS5zZWxlY3QgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKSB7XG5cdHZhciBpLCB0b2tlbnMsIHRva2VuLCB0eXBlLCBmaW5kLFxuXHRcdGNvbXBpbGVkID0gdHlwZW9mIHNlbGVjdG9yID09PSBcImZ1bmN0aW9uXCIgJiYgc2VsZWN0b3IsXG5cdFx0bWF0Y2ggPSAhc2VlZCAmJiB0b2tlbml6ZSggKCBzZWxlY3RvciA9IGNvbXBpbGVkLnNlbGVjdG9yIHx8IHNlbGVjdG9yICkgKTtcblxuXHRyZXN1bHRzID0gcmVzdWx0cyB8fCBbXTtcblxuXHQvLyBUcnkgdG8gbWluaW1pemUgb3BlcmF0aW9ucyBpZiB0aGVyZSBpcyBvbmx5IG9uZSBzZWxlY3RvciBpbiB0aGUgbGlzdCBhbmQgbm8gc2VlZFxuXHQvLyAodGhlIGxhdHRlciBvZiB3aGljaCBndWFyYW50ZWVzIHVzIGNvbnRleHQpXG5cdGlmICggbWF0Y2gubGVuZ3RoID09PSAxICkge1xuXG5cdFx0Ly8gUmVkdWNlIGNvbnRleHQgaWYgdGhlIGxlYWRpbmcgY29tcG91bmQgc2VsZWN0b3IgaXMgYW4gSURcblx0XHR0b2tlbnMgPSBtYXRjaFsgMCBdID0gbWF0Y2hbIDAgXS5zbGljZSggMCApO1xuXHRcdGlmICggdG9rZW5zLmxlbmd0aCA+IDIgJiYgKCB0b2tlbiA9IHRva2Vuc1sgMCBdICkudHlwZSA9PT0gXCJJRFwiICYmXG5cdFx0XHRjb250ZXh0Lm5vZGVUeXBlID09PSA5ICYmIGRvY3VtZW50SXNIVE1MICYmIEV4cHIucmVsYXRpdmVbIHRva2Vuc1sgMSBdLnR5cGUgXSApIHtcblxuXHRcdFx0Y29udGV4dCA9ICggRXhwci5maW5kWyBcIklEXCIgXSggdG9rZW4ubWF0Y2hlc1sgMCBdXG5cdFx0XHRcdC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLCBjb250ZXh0ICkgfHwgW10gKVsgMCBdO1xuXHRcdFx0aWYgKCAhY29udGV4dCApIHtcblx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cblx0XHRcdC8vIFByZWNvbXBpbGVkIG1hdGNoZXJzIHdpbGwgc3RpbGwgdmVyaWZ5IGFuY2VzdHJ5LCBzbyBzdGVwIHVwIGEgbGV2ZWxcblx0XHRcdH0gZWxzZSBpZiAoIGNvbXBpbGVkICkge1xuXHRcdFx0XHRjb250ZXh0ID0gY29udGV4dC5wYXJlbnROb2RlO1xuXHRcdFx0fVxuXG5cdFx0XHRzZWxlY3RvciA9IHNlbGVjdG9yLnNsaWNlKCB0b2tlbnMuc2hpZnQoKS52YWx1ZS5sZW5ndGggKTtcblx0XHR9XG5cblx0XHQvLyBGZXRjaCBhIHNlZWQgc2V0IGZvciByaWdodC10by1sZWZ0IG1hdGNoaW5nXG5cdFx0aSA9IG1hdGNoRXhwclsgXCJuZWVkc0NvbnRleHRcIiBdLnRlc3QoIHNlbGVjdG9yICkgPyAwIDogdG9rZW5zLmxlbmd0aDtcblx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdHRva2VuID0gdG9rZW5zWyBpIF07XG5cblx0XHRcdC8vIEFib3J0IGlmIHdlIGhpdCBhIGNvbWJpbmF0b3Jcblx0XHRcdGlmICggRXhwci5yZWxhdGl2ZVsgKCB0eXBlID0gdG9rZW4udHlwZSApIF0gKSB7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCAoIGZpbmQgPSBFeHByLmZpbmRbIHR5cGUgXSApICkge1xuXG5cdFx0XHRcdC8vIFNlYXJjaCwgZXhwYW5kaW5nIGNvbnRleHQgZm9yIGxlYWRpbmcgc2libGluZyBjb21iaW5hdG9yc1xuXHRcdFx0XHRpZiAoICggc2VlZCA9IGZpbmQoXG5cdFx0XHRcdFx0dG9rZW4ubWF0Y2hlc1sgMCBdLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICksXG5cdFx0XHRcdFx0cnNpYmxpbmcudGVzdCggdG9rZW5zWyAwIF0udHlwZSApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8fFxuXHRcdFx0XHRcdFx0Y29udGV4dFxuXHRcdFx0XHQpICkgKSB7XG5cblx0XHRcdFx0XHQvLyBJZiBzZWVkIGlzIGVtcHR5IG9yIG5vIHRva2VucyByZW1haW4sIHdlIGNhbiByZXR1cm4gZWFybHlcblx0XHRcdFx0XHR0b2tlbnMuc3BsaWNlKCBpLCAxICk7XG5cdFx0XHRcdFx0c2VsZWN0b3IgPSBzZWVkLmxlbmd0aCAmJiB0b1NlbGVjdG9yKCB0b2tlbnMgKTtcblx0XHRcdFx0XHRpZiAoICFzZWxlY3RvciApIHtcblx0XHRcdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIHNlZWQgKTtcblx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ29tcGlsZSBhbmQgZXhlY3V0ZSBhIGZpbHRlcmluZyBmdW5jdGlvbiBpZiBvbmUgaXMgbm90IHByb3ZpZGVkXG5cdC8vIFByb3ZpZGUgYG1hdGNoYCB0byBhdm9pZCByZXRva2VuaXphdGlvbiBpZiB3ZSBtb2RpZmllZCB0aGUgc2VsZWN0b3IgYWJvdmVcblx0KCBjb21waWxlZCB8fCBjb21waWxlKCBzZWxlY3RvciwgbWF0Y2ggKSApKFxuXHRcdHNlZWQsXG5cdFx0Y29udGV4dCxcblx0XHQhZG9jdW1lbnRJc0hUTUwsXG5cdFx0cmVzdWx0cyxcblx0XHQhY29udGV4dCB8fCByc2libGluZy50ZXN0KCBzZWxlY3RvciApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8fCBjb250ZXh0XG5cdCk7XG5cdHJldHVybiByZXN1bHRzO1xufTtcblxuLy8gT25lLXRpbWUgYXNzaWdubWVudHNcblxuLy8gU29ydCBzdGFiaWxpdHlcbnN1cHBvcnQuc29ydFN0YWJsZSA9IGV4cGFuZG8uc3BsaXQoIFwiXCIgKS5zb3J0KCBzb3J0T3JkZXIgKS5qb2luKCBcIlwiICkgPT09IGV4cGFuZG87XG5cbi8vIFN1cHBvcnQ6IENocm9tZSAxNC0zNStcbi8vIEFsd2F5cyBhc3N1bWUgZHVwbGljYXRlcyBpZiB0aGV5IGFyZW4ndCBwYXNzZWQgdG8gdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25cbnN1cHBvcnQuZGV0ZWN0RHVwbGljYXRlcyA9ICEhaGFzRHVwbGljYXRlO1xuXG4vLyBJbml0aWFsaXplIGFnYWluc3QgdGhlIGRlZmF1bHQgZG9jdW1lbnRcbnNldERvY3VtZW50KCk7XG5cbi8vIFN1cHBvcnQ6IFdlYmtpdDw1MzcuMzIgLSBTYWZhcmkgNi4wLjMvQ2hyb21lIDI1IChmaXhlZCBpbiBDaHJvbWUgMjcpXG4vLyBEZXRhY2hlZCBub2RlcyBjb25mb3VuZGluZ2x5IGZvbGxvdyAqZWFjaCBvdGhlcipcbnN1cHBvcnQuc29ydERldGFjaGVkID0gYXNzZXJ0KCBmdW5jdGlvbiggZWwgKSB7XG5cblx0Ly8gU2hvdWxkIHJldHVybiAxLCBidXQgcmV0dXJucyA0IChmb2xsb3dpbmcpXG5cdHJldHVybiBlbC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJmaWVsZHNldFwiICkgKSAmIDE7XG59ICk7XG5cbi8vIFN1cHBvcnQ6IElFPDhcbi8vIFByZXZlbnQgYXR0cmlidXRlL3Byb3BlcnR5IFwiaW50ZXJwb2xhdGlvblwiXG4vLyBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNTM2NDI5JTI4VlMuODUlMjkuYXNweFxuaWYgKCAhYXNzZXJ0KCBmdW5jdGlvbiggZWwgKSB7XG5cdGVsLmlubmVySFRNTCA9IFwiPGEgaHJlZj0nIyc+PC9hPlwiO1xuXHRyZXR1cm4gZWwuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoIFwiaHJlZlwiICkgPT09IFwiI1wiO1xufSApICkge1xuXHRhZGRIYW5kbGUoIFwidHlwZXxocmVmfGhlaWdodHx3aWR0aFwiLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7XG5cdFx0aWYgKCAhaXNYTUwgKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUsIG5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJ0eXBlXCIgPyAxIDogMiApO1xuXHRcdH1cblx0fSApO1xufVxuXG4vLyBTdXBwb3J0OiBJRTw5XG4vLyBVc2UgZGVmYXVsdFZhbHVlIGluIHBsYWNlIG9mIGdldEF0dHJpYnV0ZShcInZhbHVlXCIpXG5pZiAoICFzdXBwb3J0LmF0dHJpYnV0ZXMgfHwgIWFzc2VydCggZnVuY3Rpb24oIGVsICkge1xuXHRlbC5pbm5lckhUTUwgPSBcIjxpbnB1dC8+XCI7XG5cdGVsLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCBcInZhbHVlXCIsIFwiXCIgKTtcblx0cmV0dXJuIGVsLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCBcInZhbHVlXCIgKSA9PT0gXCJcIjtcbn0gKSApIHtcblx0YWRkSGFuZGxlKCBcInZhbHVlXCIsIGZ1bmN0aW9uKCBlbGVtLCBfbmFtZSwgaXNYTUwgKSB7XG5cdFx0aWYgKCAhaXNYTUwgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImlucHV0XCIgKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5kZWZhdWx0VmFsdWU7XG5cdFx0fVxuXHR9ICk7XG59XG5cbi8vIFN1cHBvcnQ6IElFPDlcbi8vIFVzZSBnZXRBdHRyaWJ1dGVOb2RlIHRvIGZldGNoIGJvb2xlYW5zIHdoZW4gZ2V0QXR0cmlidXRlIGxpZXNcbmlmICggIWFzc2VydCggZnVuY3Rpb24oIGVsICkge1xuXHRyZXR1cm4gZWwuZ2V0QXR0cmlidXRlKCBcImRpc2FibGVkXCIgKSA9PSBudWxsO1xufSApICkge1xuXHRhZGRIYW5kbGUoIGJvb2xlYW5zLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7XG5cdFx0dmFyIHZhbDtcblx0XHRpZiAoICFpc1hNTCApIHtcblx0XHRcdHJldHVybiBlbGVtWyBuYW1lIF0gPT09IHRydWUgPyBuYW1lLnRvTG93ZXJDYXNlKCkgOlxuXHRcdFx0XHQoIHZhbCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSggbmFtZSApICkgJiYgdmFsLnNwZWNpZmllZCA/XG5cdFx0XHRcdFx0dmFsLnZhbHVlIDpcblx0XHRcdFx0XHRudWxsO1xuXHRcdH1cblx0fSApO1xufVxuXG5yZXR1cm4gU2l6emxlO1xuXG59ICkoIHdpbmRvdyApO1xuXG5cblxualF1ZXJ5LmZpbmQgPSBTaXp6bGU7XG5qUXVlcnkuZXhwciA9IFNpenpsZS5zZWxlY3RvcnM7XG5cbi8vIERlcHJlY2F0ZWRcbmpRdWVyeS5leHByWyBcIjpcIiBdID0galF1ZXJ5LmV4cHIucHNldWRvcztcbmpRdWVyeS51bmlxdWVTb3J0ID0galF1ZXJ5LnVuaXF1ZSA9IFNpenpsZS51bmlxdWVTb3J0O1xualF1ZXJ5LnRleHQgPSBTaXp6bGUuZ2V0VGV4dDtcbmpRdWVyeS5pc1hNTERvYyA9IFNpenpsZS5pc1hNTDtcbmpRdWVyeS5jb250YWlucyA9IFNpenpsZS5jb250YWlucztcbmpRdWVyeS5lc2NhcGVTZWxlY3RvciA9IFNpenpsZS5lc2NhcGU7XG5cblxuXG5cbnZhciBkaXIgPSBmdW5jdGlvbiggZWxlbSwgZGlyLCB1bnRpbCApIHtcblx0dmFyIG1hdGNoZWQgPSBbXSxcblx0XHR0cnVuY2F0ZSA9IHVudGlsICE9PSB1bmRlZmluZWQ7XG5cblx0d2hpbGUgKCAoIGVsZW0gPSBlbGVtWyBkaXIgXSApICYmIGVsZW0ubm9kZVR5cGUgIT09IDkgKSB7XG5cdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0aWYgKCB0cnVuY2F0ZSAmJiBqUXVlcnkoIGVsZW0gKS5pcyggdW50aWwgKSApIHtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRtYXRjaGVkLnB1c2goIGVsZW0gKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG1hdGNoZWQ7XG59O1xuXG5cbnZhciBzaWJsaW5ncyA9IGZ1bmN0aW9uKCBuLCBlbGVtICkge1xuXHR2YXIgbWF0Y2hlZCA9IFtdO1xuXG5cdGZvciAoIDsgbjsgbiA9IG4ubmV4dFNpYmxpbmcgKSB7XG5cdFx0aWYgKCBuLm5vZGVUeXBlID09PSAxICYmIG4gIT09IGVsZW0gKSB7XG5cdFx0XHRtYXRjaGVkLnB1c2goIG4gKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gbWF0Y2hlZDtcbn07XG5cblxudmFyIHJuZWVkc0NvbnRleHQgPSBqUXVlcnkuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQ7XG5cblxuXG5mdW5jdGlvbiBub2RlTmFtZSggZWxlbSwgbmFtZSApIHtcblxuXHRyZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUudG9Mb3dlckNhc2UoKTtcblxufVxudmFyIHJzaW5nbGVUYWcgPSAoIC9ePChbYS16XVteXFwvXFwwPjpcXHgyMFxcdFxcclxcblxcZl0qKVtcXHgyMFxcdFxcclxcblxcZl0qXFwvPz4oPzo8XFwvXFwxPnwpJC9pICk7XG5cblxuXG4vLyBJbXBsZW1lbnQgdGhlIGlkZW50aWNhbCBmdW5jdGlvbmFsaXR5IGZvciBmaWx0ZXIgYW5kIG5vdFxuZnVuY3Rpb24gd2lubm93KCBlbGVtZW50cywgcXVhbGlmaWVyLCBub3QgKSB7XG5cdGlmICggaXNGdW5jdGlvbiggcXVhbGlmaWVyICkgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0sIGkgKSB7XG5cdFx0XHRyZXR1cm4gISFxdWFsaWZpZXIuY2FsbCggZWxlbSwgaSwgZWxlbSApICE9PSBub3Q7XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gU2luZ2xlIGVsZW1lbnRcblx0aWYgKCBxdWFsaWZpZXIubm9kZVR5cGUgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gKCBlbGVtID09PSBxdWFsaWZpZXIgKSAhPT0gbm90O1xuXHRcdH0gKTtcblx0fVxuXG5cdC8vIEFycmF5bGlrZSBvZiBlbGVtZW50cyAoalF1ZXJ5LCBhcmd1bWVudHMsIEFycmF5KVxuXHRpZiAoIHR5cGVvZiBxdWFsaWZpZXIgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gKCBpbmRleE9mLmNhbGwoIHF1YWxpZmllciwgZWxlbSApID4gLTEgKSAhPT0gbm90O1xuXHRcdH0gKTtcblx0fVxuXG5cdC8vIEZpbHRlcmVkIGRpcmVjdGx5IGZvciBib3RoIHNpbXBsZSBhbmQgY29tcGxleCBzZWxlY3RvcnNcblx0cmV0dXJuIGpRdWVyeS5maWx0ZXIoIHF1YWxpZmllciwgZWxlbWVudHMsIG5vdCApO1xufVxuXG5qUXVlcnkuZmlsdGVyID0gZnVuY3Rpb24oIGV4cHIsIGVsZW1zLCBub3QgKSB7XG5cdHZhciBlbGVtID0gZWxlbXNbIDAgXTtcblxuXHRpZiAoIG5vdCApIHtcblx0XHRleHByID0gXCI6bm90KFwiICsgZXhwciArIFwiKVwiO1xuXHR9XG5cblx0aWYgKCBlbGVtcy5sZW5ndGggPT09IDEgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKCBlbGVtLCBleHByICkgPyBbIGVsZW0gXSA6IFtdO1xuXHR9XG5cblx0cmV0dXJuIGpRdWVyeS5maW5kLm1hdGNoZXMoIGV4cHIsIGpRdWVyeS5ncmVwKCBlbGVtcywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGVsZW0ubm9kZVR5cGUgPT09IDE7XG5cdH0gKSApO1xufTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRmaW5kOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0dmFyIGksIHJldCxcblx0XHRcdGxlbiA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0c2VsZiA9IHRoaXM7XG5cblx0XHRpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggalF1ZXJ5KCBzZWxlY3RvciApLmZpbHRlciggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRcdFx0aWYgKCBqUXVlcnkuY29udGFpbnMoIHNlbGZbIGkgXSwgdGhpcyApICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9ICkgKTtcblx0XHR9XG5cblx0XHRyZXQgPSB0aGlzLnB1c2hTdGFjayggW10gKTtcblxuXHRcdGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRqUXVlcnkuZmluZCggc2VsZWN0b3IsIHNlbGZbIGkgXSwgcmV0ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGxlbiA+IDEgPyBqUXVlcnkudW5pcXVlU29ydCggcmV0ICkgOiByZXQ7XG5cdH0sXG5cdGZpbHRlcjogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggd2lubm93KCB0aGlzLCBzZWxlY3RvciB8fCBbXSwgZmFsc2UgKSApO1xuXHR9LFxuXHRub3Q6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHdpbm5vdyggdGhpcywgc2VsZWN0b3IgfHwgW10sIHRydWUgKSApO1xuXHR9LFxuXHRpczogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiAhIXdpbm5vdyhcblx0XHRcdHRoaXMsXG5cblx0XHRcdC8vIElmIHRoaXMgaXMgYSBwb3NpdGlvbmFsL3JlbGF0aXZlIHNlbGVjdG9yLCBjaGVjayBtZW1iZXJzaGlwIGluIHRoZSByZXR1cm5lZCBzZXRcblx0XHRcdC8vIHNvICQoXCJwOmZpcnN0XCIpLmlzKFwicDpsYXN0XCIpIHdvbid0IHJldHVybiB0cnVlIGZvciBhIGRvYyB3aXRoIHR3byBcInBcIi5cblx0XHRcdHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiAmJiBybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9yICkgP1xuXHRcdFx0XHRqUXVlcnkoIHNlbGVjdG9yICkgOlxuXHRcdFx0XHRzZWxlY3RvciB8fCBbXSxcblx0XHRcdGZhbHNlXG5cdFx0KS5sZW5ndGg7XG5cdH1cbn0gKTtcblxuXG4vLyBJbml0aWFsaXplIGEgalF1ZXJ5IG9iamVjdFxuXG5cbi8vIEEgY2VudHJhbCByZWZlcmVuY2UgdG8gdGhlIHJvb3QgalF1ZXJ5KGRvY3VtZW50KVxudmFyIHJvb3RqUXVlcnksXG5cblx0Ly8gQSBzaW1wbGUgd2F5IHRvIGNoZWNrIGZvciBIVE1MIHN0cmluZ3Ncblx0Ly8gUHJpb3JpdGl6ZSAjaWQgb3ZlciA8dGFnPiB0byBhdm9pZCBYU1MgdmlhIGxvY2F0aW9uLmhhc2ggKHRyYWMtOTUyMSlcblx0Ly8gU3RyaWN0IEhUTUwgcmVjb2duaXRpb24gKHRyYWMtMTEyOTA6IG11c3Qgc3RhcnQgd2l0aCA8KVxuXHQvLyBTaG9ydGN1dCBzaW1wbGUgI2lkIGNhc2UgZm9yIHNwZWVkXG5cdHJxdWlja0V4cHIgPSAvXig/OlxccyooPFtcXHdcXFddKz4pW14+XSp8IyhbXFx3LV0rKSkkLyxcblxuXHRpbml0ID0galF1ZXJ5LmZuLmluaXQgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHJvb3QgKSB7XG5cdFx0dmFyIG1hdGNoLCBlbGVtO1xuXG5cdFx0Ly8gSEFORExFOiAkKFwiXCIpLCAkKG51bGwpLCAkKHVuZGVmaW5lZCksICQoZmFsc2UpXG5cdFx0aWYgKCAhc2VsZWN0b3IgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9XG5cblx0XHQvLyBNZXRob2QgaW5pdCgpIGFjY2VwdHMgYW4gYWx0ZXJuYXRlIHJvb3RqUXVlcnlcblx0XHQvLyBzbyBtaWdyYXRlIGNhbiBzdXBwb3J0IGpRdWVyeS5zdWIgKGdoLTIxMDEpXG5cdFx0cm9vdCA9IHJvb3QgfHwgcm9vdGpRdWVyeTtcblxuXHRcdC8vIEhhbmRsZSBIVE1MIHN0cmluZ3Ncblx0XHRpZiAoIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGlmICggc2VsZWN0b3JbIDAgXSA9PT0gXCI8XCIgJiZcblx0XHRcdFx0c2VsZWN0b3JbIHNlbGVjdG9yLmxlbmd0aCAtIDEgXSA9PT0gXCI+XCIgJiZcblx0XHRcdFx0c2VsZWN0b3IubGVuZ3RoID49IDMgKSB7XG5cblx0XHRcdFx0Ly8gQXNzdW1lIHRoYXQgc3RyaW5ncyB0aGF0IHN0YXJ0IGFuZCBlbmQgd2l0aCA8PiBhcmUgSFRNTCBhbmQgc2tpcCB0aGUgcmVnZXggY2hlY2tcblx0XHRcdFx0bWF0Y2ggPSBbIG51bGwsIHNlbGVjdG9yLCBudWxsIF07XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG1hdGNoID0gcnF1aWNrRXhwci5leGVjKCBzZWxlY3RvciApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBNYXRjaCBodG1sIG9yIG1ha2Ugc3VyZSBubyBjb250ZXh0IGlzIHNwZWNpZmllZCBmb3IgI2lkXG5cdFx0XHRpZiAoIG1hdGNoICYmICggbWF0Y2hbIDEgXSB8fCAhY29udGV4dCApICkge1xuXG5cdFx0XHRcdC8vIEhBTkRMRTogJChodG1sKSAtPiAkKGFycmF5KVxuXHRcdFx0XHRpZiAoIG1hdGNoWyAxIF0gKSB7XG5cdFx0XHRcdFx0Y29udGV4dCA9IGNvbnRleHQgaW5zdGFuY2VvZiBqUXVlcnkgPyBjb250ZXh0WyAwIF0gOiBjb250ZXh0O1xuXG5cdFx0XHRcdFx0Ly8gT3B0aW9uIHRvIHJ1biBzY3JpcHRzIGlzIHRydWUgZm9yIGJhY2stY29tcGF0XG5cdFx0XHRcdFx0Ly8gSW50ZW50aW9uYWxseSBsZXQgdGhlIGVycm9yIGJlIHRocm93biBpZiBwYXJzZUhUTUwgaXMgbm90IHByZXNlbnRcblx0XHRcdFx0XHRqUXVlcnkubWVyZ2UoIHRoaXMsIGpRdWVyeS5wYXJzZUhUTUwoXG5cdFx0XHRcdFx0XHRtYXRjaFsgMSBdLFxuXHRcdFx0XHRcdFx0Y29udGV4dCAmJiBjb250ZXh0Lm5vZGVUeXBlID8gY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgOiBkb2N1bWVudCxcblx0XHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHQpICk7XG5cblx0XHRcdFx0XHQvLyBIQU5ETEU6ICQoaHRtbCwgcHJvcHMpXG5cdFx0XHRcdFx0aWYgKCByc2luZ2xlVGFnLnRlc3QoIG1hdGNoWyAxIF0gKSAmJiBqUXVlcnkuaXNQbGFpbk9iamVjdCggY29udGV4dCApICkge1xuXHRcdFx0XHRcdFx0Zm9yICggbWF0Y2ggaW4gY29udGV4dCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBQcm9wZXJ0aWVzIG9mIGNvbnRleHQgYXJlIGNhbGxlZCBhcyBtZXRob2RzIGlmIHBvc3NpYmxlXG5cdFx0XHRcdFx0XHRcdGlmICggaXNGdW5jdGlvbiggdGhpc1sgbWF0Y2ggXSApICkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXNbIG1hdGNoIF0oIGNvbnRleHRbIG1hdGNoIF0gKTtcblxuXHRcdFx0XHRcdFx0XHQvLyAuLi5hbmQgb3RoZXJ3aXNlIHNldCBhcyBhdHRyaWJ1dGVzXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5hdHRyKCBtYXRjaCwgY29udGV4dFsgbWF0Y2ggXSApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cblx0XHRcdFx0Ly8gSEFORExFOiAkKCNpZClcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIG1hdGNoWyAyIF0gKTtcblxuXHRcdFx0XHRcdGlmICggZWxlbSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gSW5qZWN0IHRoZSBlbGVtZW50IGRpcmVjdGx5IGludG8gdGhlIGpRdWVyeSBvYmplY3Rcblx0XHRcdFx0XHRcdHRoaXNbIDAgXSA9IGVsZW07XG5cdFx0XHRcdFx0XHR0aGlzLmxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9XG5cblx0XHRcdC8vIEhBTkRMRTogJChleHByLCAkKC4uLikpXG5cdFx0XHR9IGVsc2UgaWYgKCAhY29udGV4dCB8fCBjb250ZXh0LmpxdWVyeSApIHtcblx0XHRcdFx0cmV0dXJuICggY29udGV4dCB8fCByb290ICkuZmluZCggc2VsZWN0b3IgKTtcblxuXHRcdFx0Ly8gSEFORExFOiAkKGV4cHIsIGNvbnRleHQpXG5cdFx0XHQvLyAod2hpY2ggaXMganVzdCBlcXVpdmFsZW50IHRvOiAkKGNvbnRleHQpLmZpbmQoZXhwcilcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLmNvbnN0cnVjdG9yKCBjb250ZXh0ICkuZmluZCggc2VsZWN0b3IgKTtcblx0XHRcdH1cblxuXHRcdC8vIEhBTkRMRTogJChET01FbGVtZW50KVxuXHRcdH0gZWxzZSBpZiAoIHNlbGVjdG9yLm5vZGVUeXBlICkge1xuXHRcdFx0dGhpc1sgMCBdID0gc2VsZWN0b3I7XG5cdFx0XHR0aGlzLmxlbmd0aCA9IDE7XG5cdFx0XHRyZXR1cm4gdGhpcztcblxuXHRcdC8vIEhBTkRMRTogJChmdW5jdGlvbilcblx0XHQvLyBTaG9ydGN1dCBmb3IgZG9jdW1lbnQgcmVhZHlcblx0XHR9IGVsc2UgaWYgKCBpc0Z1bmN0aW9uKCBzZWxlY3RvciApICkge1xuXHRcdFx0cmV0dXJuIHJvb3QucmVhZHkgIT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdHJvb3QucmVhZHkoIHNlbGVjdG9yICkgOlxuXG5cdFx0XHRcdC8vIEV4ZWN1dGUgaW1tZWRpYXRlbHkgaWYgcmVhZHkgaXMgbm90IHByZXNlbnRcblx0XHRcdFx0c2VsZWN0b3IoIGpRdWVyeSApO1xuXHRcdH1cblxuXHRcdHJldHVybiBqUXVlcnkubWFrZUFycmF5KCBzZWxlY3RvciwgdGhpcyApO1xuXHR9O1xuXG4vLyBHaXZlIHRoZSBpbml0IGZ1bmN0aW9uIHRoZSBqUXVlcnkgcHJvdG90eXBlIGZvciBsYXRlciBpbnN0YW50aWF0aW9uXG5pbml0LnByb3RvdHlwZSA9IGpRdWVyeS5mbjtcblxuLy8gSW5pdGlhbGl6ZSBjZW50cmFsIHJlZmVyZW5jZVxucm9vdGpRdWVyeSA9IGpRdWVyeSggZG9jdW1lbnQgKTtcblxuXG52YXIgcnBhcmVudHNwcmV2ID0gL14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sXG5cblx0Ly8gTWV0aG9kcyBndWFyYW50ZWVkIHRvIHByb2R1Y2UgYSB1bmlxdWUgc2V0IHdoZW4gc3RhcnRpbmcgZnJvbSBhIHVuaXF1ZSBzZXRcblx0Z3VhcmFudGVlZFVuaXF1ZSA9IHtcblx0XHRjaGlsZHJlbjogdHJ1ZSxcblx0XHRjb250ZW50czogdHJ1ZSxcblx0XHRuZXh0OiB0cnVlLFxuXHRcdHByZXY6IHRydWVcblx0fTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRoYXM6IGZ1bmN0aW9uKCB0YXJnZXQgKSB7XG5cdFx0dmFyIHRhcmdldHMgPSBqUXVlcnkoIHRhcmdldCwgdGhpcyApLFxuXHRcdFx0bCA9IHRhcmdldHMubGVuZ3RoO1xuXG5cdFx0cmV0dXJuIHRoaXMuZmlsdGVyKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBpID0gMDtcblx0XHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0aWYgKCBqUXVlcnkuY29udGFpbnMoIHRoaXMsIHRhcmdldHNbIGkgXSApICkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGNsb3Nlc3Q6IGZ1bmN0aW9uKCBzZWxlY3RvcnMsIGNvbnRleHQgKSB7XG5cdFx0dmFyIGN1cixcblx0XHRcdGkgPSAwLFxuXHRcdFx0bCA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0bWF0Y2hlZCA9IFtdLFxuXHRcdFx0dGFyZ2V0cyA9IHR5cGVvZiBzZWxlY3RvcnMgIT09IFwic3RyaW5nXCIgJiYgalF1ZXJ5KCBzZWxlY3RvcnMgKTtcblxuXHRcdC8vIFBvc2l0aW9uYWwgc2VsZWN0b3JzIG5ldmVyIG1hdGNoLCBzaW5jZSB0aGVyZSdzIG5vIF9zZWxlY3Rpb25fIGNvbnRleHRcblx0XHRpZiAoICFybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9ycyApICkge1xuXHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRmb3IgKCBjdXIgPSB0aGlzWyBpIF07IGN1ciAmJiBjdXIgIT09IGNvbnRleHQ7IGN1ciA9IGN1ci5wYXJlbnROb2RlICkge1xuXG5cdFx0XHRcdFx0Ly8gQWx3YXlzIHNraXAgZG9jdW1lbnQgZnJhZ21lbnRzXG5cdFx0XHRcdFx0aWYgKCBjdXIubm9kZVR5cGUgPCAxMSAmJiAoIHRhcmdldHMgP1xuXHRcdFx0XHRcdFx0dGFyZ2V0cy5pbmRleCggY3VyICkgPiAtMSA6XG5cblx0XHRcdFx0XHRcdC8vIERvbid0IHBhc3Mgbm9uLWVsZW1lbnRzIHRvIFNpenpsZVxuXHRcdFx0XHRcdFx0Y3VyLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHRcdFx0XHRcdGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggY3VyLCBzZWxlY3RvcnMgKSApICkge1xuXG5cdFx0XHRcdFx0XHRtYXRjaGVkLnB1c2goIGN1ciApO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBtYXRjaGVkLmxlbmd0aCA+IDEgPyBqUXVlcnkudW5pcXVlU29ydCggbWF0Y2hlZCApIDogbWF0Y2hlZCApO1xuXHR9LFxuXG5cdC8vIERldGVybWluZSB0aGUgcG9zaXRpb24gb2YgYW4gZWxlbWVudCB3aXRoaW4gdGhlIHNldFxuXHRpbmRleDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHQvLyBObyBhcmd1bWVudCwgcmV0dXJuIGluZGV4IGluIHBhcmVudFxuXHRcdGlmICggIWVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gKCB0aGlzWyAwIF0gJiYgdGhpc1sgMCBdLnBhcmVudE5vZGUgKSA/IHRoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoIDogLTE7XG5cdFx0fVxuXG5cdFx0Ly8gSW5kZXggaW4gc2VsZWN0b3Jcblx0XHRpZiAoIHR5cGVvZiBlbGVtID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIGluZGV4T2YuY2FsbCggalF1ZXJ5KCBlbGVtICksIHRoaXNbIDAgXSApO1xuXHRcdH1cblxuXHRcdC8vIExvY2F0ZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRlc2lyZWQgZWxlbWVudFxuXHRcdHJldHVybiBpbmRleE9mLmNhbGwoIHRoaXMsXG5cblx0XHRcdC8vIElmIGl0IHJlY2VpdmVzIGEgalF1ZXJ5IG9iamVjdCwgdGhlIGZpcnN0IGVsZW1lbnQgaXMgdXNlZFxuXHRcdFx0ZWxlbS5qcXVlcnkgPyBlbGVtWyAwIF0gOiBlbGVtXG5cdFx0KTtcblx0fSxcblxuXHRhZGQ6IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soXG5cdFx0XHRqUXVlcnkudW5pcXVlU29ydChcblx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCB0aGlzLmdldCgpLCBqUXVlcnkoIHNlbGVjdG9yLCBjb250ZXh0ICkgKVxuXHRcdFx0KVxuXHRcdCk7XG5cdH0sXG5cblx0YWRkQmFjazogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiB0aGlzLmFkZCggc2VsZWN0b3IgPT0gbnVsbCA/XG5cdFx0XHR0aGlzLnByZXZPYmplY3QgOiB0aGlzLnByZXZPYmplY3QuZmlsdGVyKCBzZWxlY3RvciApXG5cdFx0KTtcblx0fVxufSApO1xuXG5mdW5jdGlvbiBzaWJsaW5nKCBjdXIsIGRpciApIHtcblx0d2hpbGUgKCAoIGN1ciA9IGN1clsgZGlyIF0gKSAmJiBjdXIubm9kZVR5cGUgIT09IDEgKSB7fVxuXHRyZXR1cm4gY3VyO1xufVxuXG5qUXVlcnkuZWFjaCgge1xuXHRwYXJlbnQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7XG5cdFx0cmV0dXJuIHBhcmVudCAmJiBwYXJlbnQubm9kZVR5cGUgIT09IDExID8gcGFyZW50IDogbnVsbDtcblx0fSxcblx0cGFyZW50czogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJwYXJlbnROb2RlXCIgKTtcblx0fSxcblx0cGFyZW50c1VudGlsOiBmdW5jdGlvbiggZWxlbSwgX2ksIHVudGlsICkge1xuXHRcdHJldHVybiBkaXIoIGVsZW0sIFwicGFyZW50Tm9kZVwiLCB1bnRpbCApO1xuXHR9LFxuXHRuZXh0OiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gc2libGluZyggZWxlbSwgXCJuZXh0U2libGluZ1wiICk7XG5cdH0sXG5cdHByZXY6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBzaWJsaW5nKCBlbGVtLCBcInByZXZpb3VzU2libGluZ1wiICk7XG5cdH0sXG5cdG5leHRBbGw6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBkaXIoIGVsZW0sIFwibmV4dFNpYmxpbmdcIiApO1xuXHR9LFxuXHRwcmV2QWxsOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZGlyKCBlbGVtLCBcInByZXZpb3VzU2libGluZ1wiICk7XG5cdH0sXG5cdG5leHRVbnRpbDogZnVuY3Rpb24oIGVsZW0sIF9pLCB1bnRpbCApIHtcblx0XHRyZXR1cm4gZGlyKCBlbGVtLCBcIm5leHRTaWJsaW5nXCIsIHVudGlsICk7XG5cdH0sXG5cdHByZXZVbnRpbDogZnVuY3Rpb24oIGVsZW0sIF9pLCB1bnRpbCApIHtcblx0XHRyZXR1cm4gZGlyKCBlbGVtLCBcInByZXZpb3VzU2libGluZ1wiLCB1bnRpbCApO1xuXHR9LFxuXHRzaWJsaW5nczogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIHNpYmxpbmdzKCAoIGVsZW0ucGFyZW50Tm9kZSB8fCB7fSApLmZpcnN0Q2hpbGQsIGVsZW0gKTtcblx0fSxcblx0Y2hpbGRyZW46IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBzaWJsaW5ncyggZWxlbS5maXJzdENoaWxkICk7XG5cdH0sXG5cdGNvbnRlbnRzOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRpZiAoIGVsZW0uY29udGVudERvY3VtZW50ICE9IG51bGwgJiZcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUUgMTErXG5cdFx0XHQvLyA8b2JqZWN0PiBlbGVtZW50cyB3aXRoIG5vIGBkYXRhYCBhdHRyaWJ1dGUgaGFzIGFuIG9iamVjdFxuXHRcdFx0Ly8gYGNvbnRlbnREb2N1bWVudGAgd2l0aCBhIGBudWxsYCBwcm90b3R5cGUuXG5cdFx0XHRnZXRQcm90byggZWxlbS5jb250ZW50RG9jdW1lbnQgKSApIHtcblxuXHRcdFx0cmV0dXJuIGVsZW0uY29udGVudERvY3VtZW50O1xuXHRcdH1cblxuXHRcdC8vIFN1cHBvcnQ6IElFIDkgLSAxMSBvbmx5LCBpT1MgNyBvbmx5LCBBbmRyb2lkIEJyb3dzZXIgPD00LjMgb25seVxuXHRcdC8vIFRyZWF0IHRoZSB0ZW1wbGF0ZSBlbGVtZW50IGFzIGEgcmVndWxhciBvbmUgaW4gYnJvd3NlcnMgdGhhdFxuXHRcdC8vIGRvbid0IHN1cHBvcnQgaXQuXG5cdFx0aWYgKCBub2RlTmFtZSggZWxlbSwgXCJ0ZW1wbGF0ZVwiICkgKSB7XG5cdFx0XHRlbGVtID0gZWxlbS5jb250ZW50IHx8IGVsZW07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGpRdWVyeS5tZXJnZSggW10sIGVsZW0uY2hpbGROb2RlcyApO1xuXHR9XG59LCBmdW5jdGlvbiggbmFtZSwgZm4gKSB7XG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHVudGlsLCBzZWxlY3RvciApIHtcblx0XHR2YXIgbWF0Y2hlZCA9IGpRdWVyeS5tYXAoIHRoaXMsIGZuLCB1bnRpbCApO1xuXG5cdFx0aWYgKCBuYW1lLnNsaWNlKCAtNSApICE9PSBcIlVudGlsXCIgKSB7XG5cdFx0XHRzZWxlY3RvciA9IHVudGlsO1xuXHRcdH1cblxuXHRcdGlmICggc2VsZWN0b3IgJiYgdHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0bWF0Y2hlZCA9IGpRdWVyeS5maWx0ZXIoIHNlbGVjdG9yLCBtYXRjaGVkICk7XG5cdFx0fVxuXG5cdFx0aWYgKCB0aGlzLmxlbmd0aCA+IDEgKSB7XG5cblx0XHRcdC8vIFJlbW92ZSBkdXBsaWNhdGVzXG5cdFx0XHRpZiAoICFndWFyYW50ZWVkVW5pcXVlWyBuYW1lIF0gKSB7XG5cdFx0XHRcdGpRdWVyeS51bmlxdWVTb3J0KCBtYXRjaGVkICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJldmVyc2Ugb3JkZXIgZm9yIHBhcmVudHMqIGFuZCBwcmV2LWRlcml2YXRpdmVzXG5cdFx0XHRpZiAoIHJwYXJlbnRzcHJldi50ZXN0KCBuYW1lICkgKSB7XG5cdFx0XHRcdG1hdGNoZWQucmV2ZXJzZSgpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggbWF0Y2hlZCApO1xuXHR9O1xufSApO1xudmFyIHJub3RodG1sd2hpdGUgPSAoIC9bXlxceDIwXFx0XFxyXFxuXFxmXSsvZyApO1xuXG5cblxuLy8gQ29udmVydCBTdHJpbmctZm9ybWF0dGVkIG9wdGlvbnMgaW50byBPYmplY3QtZm9ybWF0dGVkIG9uZXNcbmZ1bmN0aW9uIGNyZWF0ZU9wdGlvbnMoIG9wdGlvbnMgKSB7XG5cdHZhciBvYmplY3QgPSB7fTtcblx0alF1ZXJ5LmVhY2goIG9wdGlvbnMubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXSwgZnVuY3Rpb24oIF8sIGZsYWcgKSB7XG5cdFx0b2JqZWN0WyBmbGFnIF0gPSB0cnVlO1xuXHR9ICk7XG5cdHJldHVybiBvYmplY3Q7XG59XG5cbi8qXG4gKiBDcmVhdGUgYSBjYWxsYmFjayBsaXN0IHVzaW5nIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczpcbiAqXG4gKlx0b3B0aW9uczogYW4gb3B0aW9uYWwgbGlzdCBvZiBzcGFjZS1zZXBhcmF0ZWQgb3B0aW9ucyB0aGF0IHdpbGwgY2hhbmdlIGhvd1xuICpcdFx0XHR0aGUgY2FsbGJhY2sgbGlzdCBiZWhhdmVzIG9yIGEgbW9yZSB0cmFkaXRpb25hbCBvcHRpb24gb2JqZWN0XG4gKlxuICogQnkgZGVmYXVsdCBhIGNhbGxiYWNrIGxpc3Qgd2lsbCBhY3QgbGlrZSBhbiBldmVudCBjYWxsYmFjayBsaXN0IGFuZCBjYW4gYmVcbiAqIFwiZmlyZWRcIiBtdWx0aXBsZSB0aW1lcy5cbiAqXG4gKiBQb3NzaWJsZSBvcHRpb25zOlxuICpcbiAqXHRvbmNlOlx0XHRcdHdpbGwgZW5zdXJlIHRoZSBjYWxsYmFjayBsaXN0IGNhbiBvbmx5IGJlIGZpcmVkIG9uY2UgKGxpa2UgYSBEZWZlcnJlZClcbiAqXG4gKlx0bWVtb3J5Olx0XHRcdHdpbGwga2VlcCB0cmFjayBvZiBwcmV2aW91cyB2YWx1ZXMgYW5kIHdpbGwgY2FsbCBhbnkgY2FsbGJhY2sgYWRkZWRcbiAqXHRcdFx0XHRcdGFmdGVyIHRoZSBsaXN0IGhhcyBiZWVuIGZpcmVkIHJpZ2h0IGF3YXkgd2l0aCB0aGUgbGF0ZXN0IFwibWVtb3JpemVkXCJcbiAqXHRcdFx0XHRcdHZhbHVlcyAobGlrZSBhIERlZmVycmVkKVxuICpcbiAqXHR1bmlxdWU6XHRcdFx0d2lsbCBlbnN1cmUgYSBjYWxsYmFjayBjYW4gb25seSBiZSBhZGRlZCBvbmNlIChubyBkdXBsaWNhdGUgaW4gdGhlIGxpc3QpXG4gKlxuICpcdHN0b3BPbkZhbHNlOlx0aW50ZXJydXB0IGNhbGxpbmdzIHdoZW4gYSBjYWxsYmFjayByZXR1cm5zIGZhbHNlXG4gKlxuICovXG5qUXVlcnkuQ2FsbGJhY2tzID0gZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG5cblx0Ly8gQ29udmVydCBvcHRpb25zIGZyb20gU3RyaW5nLWZvcm1hdHRlZCB0byBPYmplY3QtZm9ybWF0dGVkIGlmIG5lZWRlZFxuXHQvLyAod2UgY2hlY2sgaW4gY2FjaGUgZmlyc3QpXG5cdG9wdGlvbnMgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gXCJzdHJpbmdcIiA/XG5cdFx0Y3JlYXRlT3B0aW9ucyggb3B0aW9ucyApIDpcblx0XHRqUXVlcnkuZXh0ZW5kKCB7fSwgb3B0aW9ucyApO1xuXG5cdHZhciAvLyBGbGFnIHRvIGtub3cgaWYgbGlzdCBpcyBjdXJyZW50bHkgZmlyaW5nXG5cdFx0ZmlyaW5nLFxuXG5cdFx0Ly8gTGFzdCBmaXJlIHZhbHVlIGZvciBub24tZm9yZ2V0dGFibGUgbGlzdHNcblx0XHRtZW1vcnksXG5cblx0XHQvLyBGbGFnIHRvIGtub3cgaWYgbGlzdCB3YXMgYWxyZWFkeSBmaXJlZFxuXHRcdGZpcmVkLFxuXG5cdFx0Ly8gRmxhZyB0byBwcmV2ZW50IGZpcmluZ1xuXHRcdGxvY2tlZCxcblxuXHRcdC8vIEFjdHVhbCBjYWxsYmFjayBsaXN0XG5cdFx0bGlzdCA9IFtdLFxuXG5cdFx0Ly8gUXVldWUgb2YgZXhlY3V0aW9uIGRhdGEgZm9yIHJlcGVhdGFibGUgbGlzdHNcblx0XHRxdWV1ZSA9IFtdLFxuXG5cdFx0Ly8gSW5kZXggb2YgY3VycmVudGx5IGZpcmluZyBjYWxsYmFjayAobW9kaWZpZWQgYnkgYWRkL3JlbW92ZSBhcyBuZWVkZWQpXG5cdFx0ZmlyaW5nSW5kZXggPSAtMSxcblxuXHRcdC8vIEZpcmUgY2FsbGJhY2tzXG5cdFx0ZmlyZSA9IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBFbmZvcmNlIHNpbmdsZS1maXJpbmdcblx0XHRcdGxvY2tlZCA9IGxvY2tlZCB8fCBvcHRpb25zLm9uY2U7XG5cblx0XHRcdC8vIEV4ZWN1dGUgY2FsbGJhY2tzIGZvciBhbGwgcGVuZGluZyBleGVjdXRpb25zLFxuXHRcdFx0Ly8gcmVzcGVjdGluZyBmaXJpbmdJbmRleCBvdmVycmlkZXMgYW5kIHJ1bnRpbWUgY2hhbmdlc1xuXHRcdFx0ZmlyZWQgPSBmaXJpbmcgPSB0cnVlO1xuXHRcdFx0Zm9yICggOyBxdWV1ZS5sZW5ndGg7IGZpcmluZ0luZGV4ID0gLTEgKSB7XG5cdFx0XHRcdG1lbW9yeSA9IHF1ZXVlLnNoaWZ0KCk7XG5cdFx0XHRcdHdoaWxlICggKytmaXJpbmdJbmRleCA8IGxpc3QubGVuZ3RoICkge1xuXG5cdFx0XHRcdFx0Ly8gUnVuIGNhbGxiYWNrIGFuZCBjaGVjayBmb3IgZWFybHkgdGVybWluYXRpb25cblx0XHRcdFx0XHRpZiAoIGxpc3RbIGZpcmluZ0luZGV4IF0uYXBwbHkoIG1lbW9yeVsgMCBdLCBtZW1vcnlbIDEgXSApID09PSBmYWxzZSAmJlxuXHRcdFx0XHRcdFx0b3B0aW9ucy5zdG9wT25GYWxzZSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gSnVtcCB0byBlbmQgYW5kIGZvcmdldCB0aGUgZGF0YSBzbyAuYWRkIGRvZXNuJ3QgcmUtZmlyZVxuXHRcdFx0XHRcdFx0ZmlyaW5nSW5kZXggPSBsaXN0Lmxlbmd0aDtcblx0XHRcdFx0XHRcdG1lbW9yeSA9IGZhbHNlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBGb3JnZXQgdGhlIGRhdGEgaWYgd2UncmUgZG9uZSB3aXRoIGl0XG5cdFx0XHRpZiAoICFvcHRpb25zLm1lbW9yeSApIHtcblx0XHRcdFx0bWVtb3J5ID0gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdGZpcmluZyA9IGZhbHNlO1xuXG5cdFx0XHQvLyBDbGVhbiB1cCBpZiB3ZSdyZSBkb25lIGZpcmluZyBmb3IgZ29vZFxuXHRcdFx0aWYgKCBsb2NrZWQgKSB7XG5cblx0XHRcdFx0Ly8gS2VlcCBhbiBlbXB0eSBsaXN0IGlmIHdlIGhhdmUgZGF0YSBmb3IgZnV0dXJlIGFkZCBjYWxsc1xuXHRcdFx0XHRpZiAoIG1lbW9yeSApIHtcblx0XHRcdFx0XHRsaXN0ID0gW107XG5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlLCB0aGlzIG9iamVjdCBpcyBzcGVudFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGxpc3QgPSBcIlwiO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdC8vIEFjdHVhbCBDYWxsYmFja3Mgb2JqZWN0XG5cdFx0c2VsZiA9IHtcblxuXHRcdFx0Ly8gQWRkIGEgY2FsbGJhY2sgb3IgYSBjb2xsZWN0aW9uIG9mIGNhbGxiYWNrcyB0byB0aGUgbGlzdFxuXHRcdFx0YWRkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCBsaXN0ICkge1xuXG5cdFx0XHRcdFx0Ly8gSWYgd2UgaGF2ZSBtZW1vcnkgZnJvbSBhIHBhc3QgcnVuLCB3ZSBzaG91bGQgZmlyZSBhZnRlciBhZGRpbmdcblx0XHRcdFx0XHRpZiAoIG1lbW9yeSAmJiAhZmlyaW5nICkge1xuXHRcdFx0XHRcdFx0ZmlyaW5nSW5kZXggPSBsaXN0Lmxlbmd0aCAtIDE7XG5cdFx0XHRcdFx0XHRxdWV1ZS5wdXNoKCBtZW1vcnkgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQoIGZ1bmN0aW9uIGFkZCggYXJncyApIHtcblx0XHRcdFx0XHRcdGpRdWVyeS5lYWNoKCBhcmdzLCBmdW5jdGlvbiggXywgYXJnICkge1xuXHRcdFx0XHRcdFx0XHRpZiAoIGlzRnVuY3Rpb24oIGFyZyApICkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICggIW9wdGlvbnMudW5pcXVlIHx8ICFzZWxmLmhhcyggYXJnICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRsaXN0LnB1c2goIGFyZyApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICggYXJnICYmIGFyZy5sZW5ndGggJiYgdG9UeXBlKCBhcmcgKSAhPT0gXCJzdHJpbmdcIiApIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIEluc3BlY3QgcmVjdXJzaXZlbHlcblx0XHRcdFx0XHRcdFx0XHRhZGQoIGFyZyApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0fSApKCBhcmd1bWVudHMgKTtcblxuXHRcdFx0XHRcdGlmICggbWVtb3J5ICYmICFmaXJpbmcgKSB7XG5cdFx0XHRcdFx0XHRmaXJlKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gUmVtb3ZlIGEgY2FsbGJhY2sgZnJvbSB0aGUgbGlzdFxuXHRcdFx0cmVtb3ZlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0alF1ZXJ5LmVhY2goIGFyZ3VtZW50cywgZnVuY3Rpb24oIF8sIGFyZyApIHtcblx0XHRcdFx0XHR2YXIgaW5kZXg7XG5cdFx0XHRcdFx0d2hpbGUgKCAoIGluZGV4ID0galF1ZXJ5LmluQXJyYXkoIGFyZywgbGlzdCwgaW5kZXggKSApID4gLTEgKSB7XG5cdFx0XHRcdFx0XHRsaXN0LnNwbGljZSggaW5kZXgsIDEgKTtcblxuXHRcdFx0XHRcdFx0Ly8gSGFuZGxlIGZpcmluZyBpbmRleGVzXG5cdFx0XHRcdFx0XHRpZiAoIGluZGV4IDw9IGZpcmluZ0luZGV4ICkge1xuXHRcdFx0XHRcdFx0XHRmaXJpbmdJbmRleC0tO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSApO1xuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIENoZWNrIGlmIGEgZ2l2ZW4gY2FsbGJhY2sgaXMgaW4gdGhlIGxpc3QuXG5cdFx0XHQvLyBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgcmV0dXJuIHdoZXRoZXIgb3Igbm90IGxpc3QgaGFzIGNhbGxiYWNrcyBhdHRhY2hlZC5cblx0XHRcdGhhczogZnVuY3Rpb24oIGZuICkge1xuXHRcdFx0XHRyZXR1cm4gZm4gP1xuXHRcdFx0XHRcdGpRdWVyeS5pbkFycmF5KCBmbiwgbGlzdCApID4gLTEgOlxuXHRcdFx0XHRcdGxpc3QubGVuZ3RoID4gMDtcblx0XHRcdH0sXG5cblx0XHRcdC8vIFJlbW92ZSBhbGwgY2FsbGJhY2tzIGZyb20gdGhlIGxpc3Rcblx0XHRcdGVtcHR5OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCBsaXN0ICkge1xuXHRcdFx0XHRcdGxpc3QgPSBbXTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIERpc2FibGUgLmZpcmUgYW5kIC5hZGRcblx0XHRcdC8vIEFib3J0IGFueSBjdXJyZW50L3BlbmRpbmcgZXhlY3V0aW9uc1xuXHRcdFx0Ly8gQ2xlYXIgYWxsIGNhbGxiYWNrcyBhbmQgdmFsdWVzXG5cdFx0XHRkaXNhYmxlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0bG9ja2VkID0gcXVldWUgPSBbXTtcblx0XHRcdFx0bGlzdCA9IG1lbW9yeSA9IFwiXCI7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblx0XHRcdGRpc2FibGVkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuICFsaXN0O1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gRGlzYWJsZSAuZmlyZVxuXHRcdFx0Ly8gQWxzbyBkaXNhYmxlIC5hZGQgdW5sZXNzIHdlIGhhdmUgbWVtb3J5IChzaW5jZSBpdCB3b3VsZCBoYXZlIG5vIGVmZmVjdClcblx0XHRcdC8vIEFib3J0IGFueSBwZW5kaW5nIGV4ZWN1dGlvbnNcblx0XHRcdGxvY2s6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRsb2NrZWQgPSBxdWV1ZSA9IFtdO1xuXHRcdFx0XHRpZiAoICFtZW1vcnkgJiYgIWZpcmluZyApIHtcblx0XHRcdFx0XHRsaXN0ID0gbWVtb3J5ID0gXCJcIjtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cdFx0XHRsb2NrZWQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gISFsb2NrZWQ7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBDYWxsIGFsbCBjYWxsYmFja3Mgd2l0aCB0aGUgZ2l2ZW4gY29udGV4dCBhbmQgYXJndW1lbnRzXG5cdFx0XHRmaXJlV2l0aDogZnVuY3Rpb24oIGNvbnRleHQsIGFyZ3MgKSB7XG5cdFx0XHRcdGlmICggIWxvY2tlZCApIHtcblx0XHRcdFx0XHRhcmdzID0gYXJncyB8fCBbXTtcblx0XHRcdFx0XHRhcmdzID0gWyBjb250ZXh0LCBhcmdzLnNsaWNlID8gYXJncy5zbGljZSgpIDogYXJncyBdO1xuXHRcdFx0XHRcdHF1ZXVlLnB1c2goIGFyZ3MgKTtcblx0XHRcdFx0XHRpZiAoICFmaXJpbmcgKSB7XG5cdFx0XHRcdFx0XHRmaXJlKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gQ2FsbCBhbGwgdGhlIGNhbGxiYWNrcyB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHNcblx0XHRcdGZpcmU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRzZWxmLmZpcmVXaXRoKCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBUbyBrbm93IGlmIHRoZSBjYWxsYmFja3MgaGF2ZSBhbHJlYWR5IGJlZW4gY2FsbGVkIGF0IGxlYXN0IG9uY2Vcblx0XHRcdGZpcmVkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuICEhZmlyZWQ7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRyZXR1cm4gc2VsZjtcbn07XG5cblxuZnVuY3Rpb24gSWRlbnRpdHkoIHYgKSB7XG5cdHJldHVybiB2O1xufVxuZnVuY3Rpb24gVGhyb3dlciggZXggKSB7XG5cdHRocm93IGV4O1xufVxuXG5mdW5jdGlvbiBhZG9wdFZhbHVlKCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0LCBub1ZhbHVlICkge1xuXHR2YXIgbWV0aG9kO1xuXG5cdHRyeSB7XG5cblx0XHQvLyBDaGVjayBmb3IgcHJvbWlzZSBhc3BlY3QgZmlyc3QgdG8gcHJpdmlsZWdlIHN5bmNocm9ub3VzIGJlaGF2aW9yXG5cdFx0aWYgKCB2YWx1ZSAmJiBpc0Z1bmN0aW9uKCAoIG1ldGhvZCA9IHZhbHVlLnByb21pc2UgKSApICkge1xuXHRcdFx0bWV0aG9kLmNhbGwoIHZhbHVlICkuZG9uZSggcmVzb2x2ZSApLmZhaWwoIHJlamVjdCApO1xuXG5cdFx0Ly8gT3RoZXIgdGhlbmFibGVzXG5cdFx0fSBlbHNlIGlmICggdmFsdWUgJiYgaXNGdW5jdGlvbiggKCBtZXRob2QgPSB2YWx1ZS50aGVuICkgKSApIHtcblx0XHRcdG1ldGhvZC5jYWxsKCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0ICk7XG5cblx0XHQvLyBPdGhlciBub24tdGhlbmFibGVzXG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gQ29udHJvbCBgcmVzb2x2ZWAgYXJndW1lbnRzIGJ5IGxldHRpbmcgQXJyYXkjc2xpY2UgY2FzdCBib29sZWFuIGBub1ZhbHVlYCB0byBpbnRlZ2VyOlxuXHRcdFx0Ly8gKiBmYWxzZTogWyB2YWx1ZSBdLnNsaWNlKCAwICkgPT4gcmVzb2x2ZSggdmFsdWUgKVxuXHRcdFx0Ly8gKiB0cnVlOiBbIHZhbHVlIF0uc2xpY2UoIDEgKSA9PiByZXNvbHZlKClcblx0XHRcdHJlc29sdmUuYXBwbHkoIHVuZGVmaW5lZCwgWyB2YWx1ZSBdLnNsaWNlKCBub1ZhbHVlICkgKTtcblx0XHR9XG5cblx0Ly8gRm9yIFByb21pc2VzL0ErLCBjb252ZXJ0IGV4Y2VwdGlvbnMgaW50byByZWplY3Rpb25zXG5cdC8vIFNpbmNlIGpRdWVyeS53aGVuIGRvZXNuJ3QgdW53cmFwIHRoZW5hYmxlcywgd2UgY2FuIHNraXAgdGhlIGV4dHJhIGNoZWNrcyBhcHBlYXJpbmcgaW5cblx0Ly8gRGVmZXJyZWQjdGhlbiB0byBjb25kaXRpb25hbGx5IHN1cHByZXNzIHJlamVjdGlvbi5cblx0fSBjYXRjaCAoIHZhbHVlICkge1xuXG5cdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA0LjAgb25seVxuXHRcdC8vIFN0cmljdCBtb2RlIGZ1bmN0aW9ucyBpbnZva2VkIHdpdGhvdXQgLmNhbGwvLmFwcGx5IGdldCBnbG9iYWwtb2JqZWN0IGNvbnRleHRcblx0XHRyZWplY3QuYXBwbHkoIHVuZGVmaW5lZCwgWyB2YWx1ZSBdICk7XG5cdH1cbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdERlZmVycmVkOiBmdW5jdGlvbiggZnVuYyApIHtcblx0XHR2YXIgdHVwbGVzID0gW1xuXG5cdFx0XHRcdC8vIGFjdGlvbiwgYWRkIGxpc3RlbmVyLCBjYWxsYmFja3MsXG5cdFx0XHRcdC8vIC4uLiAudGhlbiBoYW5kbGVycywgYXJndW1lbnQgaW5kZXgsIFtmaW5hbCBzdGF0ZV1cblx0XHRcdFx0WyBcIm5vdGlmeVwiLCBcInByb2dyZXNzXCIsIGpRdWVyeS5DYWxsYmFja3MoIFwibWVtb3J5XCIgKSxcblx0XHRcdFx0XHRqUXVlcnkuQ2FsbGJhY2tzKCBcIm1lbW9yeVwiICksIDIgXSxcblx0XHRcdFx0WyBcInJlc29sdmVcIiwgXCJkb25lXCIsIGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLFxuXHRcdFx0XHRcdGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLCAwLCBcInJlc29sdmVkXCIgXSxcblx0XHRcdFx0WyBcInJlamVjdFwiLCBcImZhaWxcIiwgalF1ZXJ5LkNhbGxiYWNrcyggXCJvbmNlIG1lbW9yeVwiICksXG5cdFx0XHRcdFx0alF1ZXJ5LkNhbGxiYWNrcyggXCJvbmNlIG1lbW9yeVwiICksIDEsIFwicmVqZWN0ZWRcIiBdXG5cdFx0XHRdLFxuXHRcdFx0c3RhdGUgPSBcInBlbmRpbmdcIixcblx0XHRcdHByb21pc2UgPSB7XG5cdFx0XHRcdHN0YXRlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gc3RhdGU7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGFsd2F5czogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0ZGVmZXJyZWQuZG9uZSggYXJndW1lbnRzICkuZmFpbCggYXJndW1lbnRzICk7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdFwiY2F0Y2hcIjogZnVuY3Rpb24oIGZuICkge1xuXHRcdFx0XHRcdHJldHVybiBwcm9taXNlLnRoZW4oIG51bGwsIGZuICk7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gS2VlcCBwaXBlIGZvciBiYWNrLWNvbXBhdFxuXHRcdFx0XHRwaXBlOiBmdW5jdGlvbiggLyogZm5Eb25lLCBmbkZhaWwsIGZuUHJvZ3Jlc3MgKi8gKSB7XG5cdFx0XHRcdFx0dmFyIGZucyA9IGFyZ3VtZW50cztcblxuXHRcdFx0XHRcdHJldHVybiBqUXVlcnkuRGVmZXJyZWQoIGZ1bmN0aW9uKCBuZXdEZWZlciApIHtcblx0XHRcdFx0XHRcdGpRdWVyeS5lYWNoKCB0dXBsZXMsIGZ1bmN0aW9uKCBfaSwgdHVwbGUgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gTWFwIHR1cGxlcyAocHJvZ3Jlc3MsIGRvbmUsIGZhaWwpIHRvIGFyZ3VtZW50cyAoZG9uZSwgZmFpbCwgcHJvZ3Jlc3MpXG5cdFx0XHRcdFx0XHRcdHZhciBmbiA9IGlzRnVuY3Rpb24oIGZuc1sgdHVwbGVbIDQgXSBdICkgJiYgZm5zWyB0dXBsZVsgNCBdIF07XG5cblx0XHRcdFx0XHRcdFx0Ly8gZGVmZXJyZWQucHJvZ3Jlc3MoZnVuY3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3RGVmZXIubm90aWZ5IH0pXG5cdFx0XHRcdFx0XHRcdC8vIGRlZmVycmVkLmRvbmUoZnVuY3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3RGVmZXIucmVzb2x2ZSB9KVxuXHRcdFx0XHRcdFx0XHQvLyBkZWZlcnJlZC5mYWlsKGZ1bmN0aW9uKCkgeyBiaW5kIHRvIG5ld0RlZmVyIG9yIG5ld0RlZmVyLnJlamVjdCB9KVxuXHRcdFx0XHRcdFx0XHRkZWZlcnJlZFsgdHVwbGVbIDEgXSBdKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgcmV0dXJuZWQgPSBmbiAmJiBmbi5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCByZXR1cm5lZCAmJiBpc0Z1bmN0aW9uKCByZXR1cm5lZC5wcm9taXNlICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5lZC5wcm9taXNlKClcblx0XHRcdFx0XHRcdFx0XHRcdFx0LnByb2dyZXNzKCBuZXdEZWZlci5ub3RpZnkgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQuZG9uZSggbmV3RGVmZXIucmVzb2x2ZSApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC5mYWlsKCBuZXdEZWZlci5yZWplY3QgKTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0bmV3RGVmZXJbIHR1cGxlWyAwIF0gKyBcIldpdGhcIiBdKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmbiA/IFsgcmV0dXJuZWQgXSA6IGFyZ3VtZW50c1xuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRcdGZucyA9IG51bGw7XG5cdFx0XHRcdFx0fSApLnByb21pc2UoKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0dGhlbjogZnVuY3Rpb24oIG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCBvblByb2dyZXNzICkge1xuXHRcdFx0XHRcdHZhciBtYXhEZXB0aCA9IDA7XG5cdFx0XHRcdFx0ZnVuY3Rpb24gcmVzb2x2ZSggZGVwdGgsIGRlZmVycmVkLCBoYW5kbGVyLCBzcGVjaWFsICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgdGhhdCA9IHRoaXMsXG5cdFx0XHRcdFx0XHRcdFx0YXJncyA9IGFyZ3VtZW50cyxcblx0XHRcdFx0XHRcdFx0XHRtaWdodFRocm93ID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgcmV0dXJuZWQsIHRoZW47XG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjMuMy4zXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC01OVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gSWdub3JlIGRvdWJsZS1yZXNvbHV0aW9uIGF0dGVtcHRzXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGRlcHRoIDwgbWF4RGVwdGggKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuZWQgPSBoYW5kbGVyLmFwcGx5KCB0aGF0LCBhcmdzICk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjFcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTQ4XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIHJldHVybmVkID09PSBkZWZlcnJlZC5wcm9taXNlKCkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoIFwiVGhlbmFibGUgc2VsZi1yZXNvbHV0aW9uXCIgKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbnMgMi4zLjMuMSwgMy41XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC01NFxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNzVcblx0XHRcdFx0XHRcdFx0XHRcdC8vIFJldHJpZXZlIGB0aGVuYCBvbmx5IG9uY2Vcblx0XHRcdFx0XHRcdFx0XHRcdHRoZW4gPSByZXR1cm5lZCAmJlxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjRcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNjRcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gT25seSBjaGVjayBvYmplY3RzIGFuZCBmdW5jdGlvbnMgZm9yIHRoZW5hYmlsaXR5XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCggdHlwZW9mIHJldHVybmVkID09PSBcIm9iamVjdFwiIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZW9mIHJldHVybmVkID09PSBcImZ1bmN0aW9uXCIgKSAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5lZC50aGVuO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBIYW5kbGUgYSByZXR1cm5lZCB0aGVuYWJsZVxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBpc0Z1bmN0aW9uKCB0aGVuICkgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3BlY2lhbCBwcm9jZXNzb3JzIChub3RpZnkpIGp1c3Qgd2FpdCBmb3IgcmVzb2x1dGlvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIHNwZWNpYWwgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhlbi5jYWxsKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuZWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIElkZW50aXR5LCBzcGVjaWFsICksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIFRocm93ZXIsIHNwZWNpYWwgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gTm9ybWFsIHByb2Nlc3NvcnMgKHJlc29sdmUpIGFsc28gaG9vayBpbnRvIHByb2dyZXNzXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyAuLi5hbmQgZGlzcmVnYXJkIG9sZGVyIHJlc29sdXRpb24gdmFsdWVzXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWF4RGVwdGgrKztcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoZW4uY2FsbChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybmVkLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBJZGVudGl0eSwgc3BlY2lhbCApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBUaHJvd2VyLCBzcGVjaWFsICksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIElkZW50aXR5LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkZWZlcnJlZC5ub3RpZnlXaXRoIClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIEhhbmRsZSBhbGwgb3RoZXIgcmV0dXJuZWQgdmFsdWVzXG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIE9ubHkgc3Vic3RpdHV0ZSBoYW5kbGVycyBwYXNzIG9uIGNvbnRleHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYW5kIG11bHRpcGxlIHZhbHVlcyAobm9uLXNwZWMgYmVoYXZpb3IpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggaGFuZGxlciAhPT0gSWRlbnRpdHkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhhdCA9IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmdzID0gWyByZXR1cm5lZCBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gUHJvY2VzcyB0aGUgdmFsdWUocylcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gRGVmYXVsdCBwcm9jZXNzIGlzIHJlc29sdmVcblx0XHRcdFx0XHRcdFx0XHRcdFx0KCBzcGVjaWFsIHx8IGRlZmVycmVkLnJlc29sdmVXaXRoICkoIHRoYXQsIGFyZ3MgKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9LFxuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gT25seSBub3JtYWwgcHJvY2Vzc29ycyAocmVzb2x2ZSkgY2F0Y2ggYW5kIHJlamVjdCBleGNlcHRpb25zXG5cdFx0XHRcdFx0XHRcdFx0cHJvY2VzcyA9IHNwZWNpYWwgP1xuXHRcdFx0XHRcdFx0XHRcdFx0bWlnaHRUaHJvdyA6XG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtaWdodFRocm93KCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBqUXVlcnkuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5EZWZlcnJlZC5leGNlcHRpb25Ib29rKCBlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcm9jZXNzLnN0YWNrVHJhY2UgKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4zLjMuNC4xXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNjFcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBJZ25vcmUgcG9zdC1yZXNvbHV0aW9uIGV4Y2VwdGlvbnNcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGRlcHRoICsgMSA+PSBtYXhEZXB0aCApIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gT25seSBzdWJzdGl0dXRlIGhhbmRsZXJzIHBhc3Mgb24gY29udGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYW5kIG11bHRpcGxlIHZhbHVlcyAobm9uLXNwZWMgYmVoYXZpb3IpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGhhbmRsZXIgIT09IFRocm93ZXIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MgPSBbIGUgXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVmZXJyZWQucmVqZWN0V2l0aCggdGhhdCwgYXJncyApO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fTtcblxuXHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4zLjMuMVxuXHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC01N1xuXHRcdFx0XHRcdFx0XHQvLyBSZS1yZXNvbHZlIHByb21pc2VzIGltbWVkaWF0ZWx5IHRvIGRvZGdlIGZhbHNlIHJlamVjdGlvbiBmcm9tXG5cdFx0XHRcdFx0XHRcdC8vIHN1YnNlcXVlbnQgZXJyb3JzXG5cdFx0XHRcdFx0XHRcdGlmICggZGVwdGggKSB7XG5cdFx0XHRcdFx0XHRcdFx0cHJvY2VzcygpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gQ2FsbCBhbiBvcHRpb25hbCBob29rIHRvIHJlY29yZCB0aGUgc3RhY2ssIGluIGNhc2Ugb2YgZXhjZXB0aW9uXG5cdFx0XHRcdFx0XHRcdFx0Ly8gc2luY2UgaXQncyBvdGhlcndpc2UgbG9zdCB3aGVuIGV4ZWN1dGlvbiBnb2VzIGFzeW5jXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBqUXVlcnkuRGVmZXJyZWQuZ2V0U3RhY2tIb29rICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cHJvY2Vzcy5zdGFja1RyYWNlID0galF1ZXJ5LkRlZmVycmVkLmdldFN0YWNrSG9vaygpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cuc2V0VGltZW91dCggcHJvY2VzcyApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHJldHVybiBqUXVlcnkuRGVmZXJyZWQoIGZ1bmN0aW9uKCBuZXdEZWZlciApIHtcblxuXHRcdFx0XHRcdFx0Ly8gcHJvZ3Jlc3NfaGFuZGxlcnMuYWRkKCAuLi4gKVxuXHRcdFx0XHRcdFx0dHVwbGVzWyAwIF1bIDMgXS5hZGQoXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUoXG5cdFx0XHRcdFx0XHRcdFx0MCxcblx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlcixcblx0XHRcdFx0XHRcdFx0XHRpc0Z1bmN0aW9uKCBvblByb2dyZXNzICkgP1xuXHRcdFx0XHRcdFx0XHRcdFx0b25Qcm9ncmVzcyA6XG5cdFx0XHRcdFx0XHRcdFx0XHRJZGVudGl0eSxcblx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlci5ub3RpZnlXaXRoXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRcdC8vIGZ1bGZpbGxlZF9oYW5kbGVycy5hZGQoIC4uLiApXG5cdFx0XHRcdFx0XHR0dXBsZXNbIDEgXVsgMyBdLmFkZChcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShcblx0XHRcdFx0XHRcdFx0XHQwLFxuXHRcdFx0XHRcdFx0XHRcdG5ld0RlZmVyLFxuXHRcdFx0XHRcdFx0XHRcdGlzRnVuY3Rpb24oIG9uRnVsZmlsbGVkICkgP1xuXHRcdFx0XHRcdFx0XHRcdFx0b25GdWxmaWxsZWQgOlxuXHRcdFx0XHRcdFx0XHRcdFx0SWRlbnRpdHlcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdFx0Ly8gcmVqZWN0ZWRfaGFuZGxlcnMuYWRkKCAuLi4gKVxuXHRcdFx0XHRcdFx0dHVwbGVzWyAyIF1bIDMgXS5hZGQoXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUoXG5cdFx0XHRcdFx0XHRcdFx0MCxcblx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlcixcblx0XHRcdFx0XHRcdFx0XHRpc0Z1bmN0aW9uKCBvblJlamVjdGVkICkgP1xuXHRcdFx0XHRcdFx0XHRcdFx0b25SZWplY3RlZCA6XG5cdFx0XHRcdFx0XHRcdFx0XHRUaHJvd2VyXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSApLnByb21pc2UoKTtcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBHZXQgYSBwcm9taXNlIGZvciB0aGlzIGRlZmVycmVkXG5cdFx0XHRcdC8vIElmIG9iaiBpcyBwcm92aWRlZCwgdGhlIHByb21pc2UgYXNwZWN0IGlzIGFkZGVkIHRvIHRoZSBvYmplY3Rcblx0XHRcdFx0cHJvbWlzZTogZnVuY3Rpb24oIG9iaiApIHtcblx0XHRcdFx0XHRyZXR1cm4gb2JqICE9IG51bGwgPyBqUXVlcnkuZXh0ZW5kKCBvYmosIHByb21pc2UgKSA6IHByb21pc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkZWZlcnJlZCA9IHt9O1xuXG5cdFx0Ly8gQWRkIGxpc3Qtc3BlY2lmaWMgbWV0aG9kc1xuXHRcdGpRdWVyeS5lYWNoKCB0dXBsZXMsIGZ1bmN0aW9uKCBpLCB0dXBsZSApIHtcblx0XHRcdHZhciBsaXN0ID0gdHVwbGVbIDIgXSxcblx0XHRcdFx0c3RhdGVTdHJpbmcgPSB0dXBsZVsgNSBdO1xuXG5cdFx0XHQvLyBwcm9taXNlLnByb2dyZXNzID0gbGlzdC5hZGRcblx0XHRcdC8vIHByb21pc2UuZG9uZSA9IGxpc3QuYWRkXG5cdFx0XHQvLyBwcm9taXNlLmZhaWwgPSBsaXN0LmFkZFxuXHRcdFx0cHJvbWlzZVsgdHVwbGVbIDEgXSBdID0gbGlzdC5hZGQ7XG5cblx0XHRcdC8vIEhhbmRsZSBzdGF0ZVxuXHRcdFx0aWYgKCBzdGF0ZVN0cmluZyApIHtcblx0XHRcdFx0bGlzdC5hZGQoXG5cdFx0XHRcdFx0ZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0XHRcdC8vIHN0YXRlID0gXCJyZXNvbHZlZFwiIChpLmUuLCBmdWxmaWxsZWQpXG5cdFx0XHRcdFx0XHQvLyBzdGF0ZSA9IFwicmVqZWN0ZWRcIlxuXHRcdFx0XHRcdFx0c3RhdGUgPSBzdGF0ZVN0cmluZztcblx0XHRcdFx0XHR9LFxuXG5cdFx0XHRcdFx0Ly8gcmVqZWN0ZWRfY2FsbGJhY2tzLmRpc2FibGVcblx0XHRcdFx0XHQvLyBmdWxmaWxsZWRfY2FsbGJhY2tzLmRpc2FibGVcblx0XHRcdFx0XHR0dXBsZXNbIDMgLSBpIF1bIDIgXS5kaXNhYmxlLFxuXG5cdFx0XHRcdFx0Ly8gcmVqZWN0ZWRfaGFuZGxlcnMuZGlzYWJsZVxuXHRcdFx0XHRcdC8vIGZ1bGZpbGxlZF9oYW5kbGVycy5kaXNhYmxlXG5cdFx0XHRcdFx0dHVwbGVzWyAzIC0gaSBdWyAzIF0uZGlzYWJsZSxcblxuXHRcdFx0XHRcdC8vIHByb2dyZXNzX2NhbGxiYWNrcy5sb2NrXG5cdFx0XHRcdFx0dHVwbGVzWyAwIF1bIDIgXS5sb2NrLFxuXG5cdFx0XHRcdFx0Ly8gcHJvZ3Jlc3NfaGFuZGxlcnMubG9ja1xuXHRcdFx0XHRcdHR1cGxlc1sgMCBdWyAzIF0ubG9ja1xuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBwcm9ncmVzc19oYW5kbGVycy5maXJlXG5cdFx0XHQvLyBmdWxmaWxsZWRfaGFuZGxlcnMuZmlyZVxuXHRcdFx0Ly8gcmVqZWN0ZWRfaGFuZGxlcnMuZmlyZVxuXHRcdFx0bGlzdC5hZGQoIHR1cGxlWyAzIF0uZmlyZSApO1xuXG5cdFx0XHQvLyBkZWZlcnJlZC5ub3RpZnkgPSBmdW5jdGlvbigpIHsgZGVmZXJyZWQubm90aWZ5V2l0aCguLi4pIH1cblx0XHRcdC8vIGRlZmVycmVkLnJlc29sdmUgPSBmdW5jdGlvbigpIHsgZGVmZXJyZWQucmVzb2x2ZVdpdGgoLi4uKSB9XG5cdFx0XHQvLyBkZWZlcnJlZC5yZWplY3QgPSBmdW5jdGlvbigpIHsgZGVmZXJyZWQucmVqZWN0V2l0aCguLi4pIH1cblx0XHRcdGRlZmVycmVkWyB0dXBsZVsgMCBdIF0gPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0ZGVmZXJyZWRbIHR1cGxlWyAwIF0gKyBcIldpdGhcIiBdKCB0aGlzID09PSBkZWZlcnJlZCA/IHVuZGVmaW5lZCA6IHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH07XG5cblx0XHRcdC8vIGRlZmVycmVkLm5vdGlmeVdpdGggPSBsaXN0LmZpcmVXaXRoXG5cdFx0XHQvLyBkZWZlcnJlZC5yZXNvbHZlV2l0aCA9IGxpc3QuZmlyZVdpdGhcblx0XHRcdC8vIGRlZmVycmVkLnJlamVjdFdpdGggPSBsaXN0LmZpcmVXaXRoXG5cdFx0XHRkZWZlcnJlZFsgdHVwbGVbIDAgXSArIFwiV2l0aFwiIF0gPSBsaXN0LmZpcmVXaXRoO1xuXHRcdH0gKTtcblxuXHRcdC8vIE1ha2UgdGhlIGRlZmVycmVkIGEgcHJvbWlzZVxuXHRcdHByb21pc2UucHJvbWlzZSggZGVmZXJyZWQgKTtcblxuXHRcdC8vIENhbGwgZ2l2ZW4gZnVuYyBpZiBhbnlcblx0XHRpZiAoIGZ1bmMgKSB7XG5cdFx0XHRmdW5jLmNhbGwoIGRlZmVycmVkLCBkZWZlcnJlZCApO1xuXHRcdH1cblxuXHRcdC8vIEFsbCBkb25lIVxuXHRcdHJldHVybiBkZWZlcnJlZDtcblx0fSxcblxuXHQvLyBEZWZlcnJlZCBoZWxwZXJcblx0d2hlbjogZnVuY3Rpb24oIHNpbmdsZVZhbHVlICkge1xuXHRcdHZhclxuXG5cdFx0XHQvLyBjb3VudCBvZiB1bmNvbXBsZXRlZCBzdWJvcmRpbmF0ZXNcblx0XHRcdHJlbWFpbmluZyA9IGFyZ3VtZW50cy5sZW5ndGgsXG5cblx0XHRcdC8vIGNvdW50IG9mIHVucHJvY2Vzc2VkIGFyZ3VtZW50c1xuXHRcdFx0aSA9IHJlbWFpbmluZyxcblxuXHRcdFx0Ly8gc3Vib3JkaW5hdGUgZnVsZmlsbG1lbnQgZGF0YVxuXHRcdFx0cmVzb2x2ZUNvbnRleHRzID0gQXJyYXkoIGkgKSxcblx0XHRcdHJlc29sdmVWYWx1ZXMgPSBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSxcblxuXHRcdFx0Ly8gdGhlIHByaW1hcnkgRGVmZXJyZWRcblx0XHRcdHByaW1hcnkgPSBqUXVlcnkuRGVmZXJyZWQoKSxcblxuXHRcdFx0Ly8gc3Vib3JkaW5hdGUgY2FsbGJhY2sgZmFjdG9yeVxuXHRcdFx0dXBkYXRlRnVuYyA9IGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0XHRcdHJlc29sdmVDb250ZXh0c1sgaSBdID0gdGhpcztcblx0XHRcdFx0XHRyZXNvbHZlVmFsdWVzWyBpIF0gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApIDogdmFsdWU7XG5cdFx0XHRcdFx0aWYgKCAhKCAtLXJlbWFpbmluZyApICkge1xuXHRcdFx0XHRcdFx0cHJpbWFyeS5yZXNvbHZlV2l0aCggcmVzb2x2ZUNvbnRleHRzLCByZXNvbHZlVmFsdWVzICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0fTtcblxuXHRcdC8vIFNpbmdsZS0gYW5kIGVtcHR5IGFyZ3VtZW50cyBhcmUgYWRvcHRlZCBsaWtlIFByb21pc2UucmVzb2x2ZVxuXHRcdGlmICggcmVtYWluaW5nIDw9IDEgKSB7XG5cdFx0XHRhZG9wdFZhbHVlKCBzaW5nbGVWYWx1ZSwgcHJpbWFyeS5kb25lKCB1cGRhdGVGdW5jKCBpICkgKS5yZXNvbHZlLCBwcmltYXJ5LnJlamVjdCxcblx0XHRcdFx0IXJlbWFpbmluZyApO1xuXG5cdFx0XHQvLyBVc2UgLnRoZW4oKSB0byB1bndyYXAgc2Vjb25kYXJ5IHRoZW5hYmxlcyAoY2YuIGdoLTMwMDApXG5cdFx0XHRpZiAoIHByaW1hcnkuc3RhdGUoKSA9PT0gXCJwZW5kaW5nXCIgfHxcblx0XHRcdFx0aXNGdW5jdGlvbiggcmVzb2x2ZVZhbHVlc1sgaSBdICYmIHJlc29sdmVWYWx1ZXNbIGkgXS50aGVuICkgKSB7XG5cblx0XHRcdFx0cmV0dXJuIHByaW1hcnkudGhlbigpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIE11bHRpcGxlIGFyZ3VtZW50cyBhcmUgYWdncmVnYXRlZCBsaWtlIFByb21pc2UuYWxsIGFycmF5IGVsZW1lbnRzXG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRhZG9wdFZhbHVlKCByZXNvbHZlVmFsdWVzWyBpIF0sIHVwZGF0ZUZ1bmMoIGkgKSwgcHJpbWFyeS5yZWplY3QgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcHJpbWFyeS5wcm9taXNlKCk7XG5cdH1cbn0gKTtcblxuXG4vLyBUaGVzZSB1c3VhbGx5IGluZGljYXRlIGEgcHJvZ3JhbW1lciBtaXN0YWtlIGR1cmluZyBkZXZlbG9wbWVudCxcbi8vIHdhcm4gYWJvdXQgdGhlbSBBU0FQIHJhdGhlciB0aGFuIHN3YWxsb3dpbmcgdGhlbSBieSBkZWZhdWx0LlxudmFyIHJlcnJvck5hbWVzID0gL14oRXZhbHxJbnRlcm5hbHxSYW5nZXxSZWZlcmVuY2V8U3ludGF4fFR5cGV8VVJJKUVycm9yJC87XG5cbmpRdWVyeS5EZWZlcnJlZC5leGNlcHRpb25Ib29rID0gZnVuY3Rpb24oIGVycm9yLCBzdGFjayApIHtcblxuXHQvLyBTdXBwb3J0OiBJRSA4IC0gOSBvbmx5XG5cdC8vIENvbnNvbGUgZXhpc3RzIHdoZW4gZGV2IHRvb2xzIGFyZSBvcGVuLCB3aGljaCBjYW4gaGFwcGVuIGF0IGFueSB0aW1lXG5cdGlmICggd2luZG93LmNvbnNvbGUgJiYgd2luZG93LmNvbnNvbGUud2FybiAmJiBlcnJvciAmJiByZXJyb3JOYW1lcy50ZXN0KCBlcnJvci5uYW1lICkgKSB7XG5cdFx0d2luZG93LmNvbnNvbGUud2FybiggXCJqUXVlcnkuRGVmZXJyZWQgZXhjZXB0aW9uOiBcIiArIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBzdGFjayApO1xuXHR9XG59O1xuXG5cblxuXG5qUXVlcnkucmVhZHlFeGNlcHRpb24gPSBmdW5jdGlvbiggZXJyb3IgKSB7XG5cdHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHtcblx0XHR0aHJvdyBlcnJvcjtcblx0fSApO1xufTtcblxuXG5cblxuLy8gVGhlIGRlZmVycmVkIHVzZWQgb24gRE9NIHJlYWR5XG52YXIgcmVhZHlMaXN0ID0galF1ZXJ5LkRlZmVycmVkKCk7XG5cbmpRdWVyeS5mbi5yZWFkeSA9IGZ1bmN0aW9uKCBmbiApIHtcblxuXHRyZWFkeUxpc3Rcblx0XHQudGhlbiggZm4gKVxuXG5cdFx0Ly8gV3JhcCBqUXVlcnkucmVhZHlFeGNlcHRpb24gaW4gYSBmdW5jdGlvbiBzbyB0aGF0IHRoZSBsb29rdXBcblx0XHQvLyBoYXBwZW5zIGF0IHRoZSB0aW1lIG9mIGVycm9yIGhhbmRsaW5nIGluc3RlYWQgb2YgY2FsbGJhY2tcblx0XHQvLyByZWdpc3RyYXRpb24uXG5cdFx0LmNhdGNoKCBmdW5jdGlvbiggZXJyb3IgKSB7XG5cdFx0XHRqUXVlcnkucmVhZHlFeGNlcHRpb24oIGVycm9yICk7XG5cdFx0fSApO1xuXG5cdHJldHVybiB0aGlzO1xufTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdC8vIElzIHRoZSBET00gcmVhZHkgdG8gYmUgdXNlZD8gU2V0IHRvIHRydWUgb25jZSBpdCBvY2N1cnMuXG5cdGlzUmVhZHk6IGZhbHNlLFxuXG5cdC8vIEEgY291bnRlciB0byB0cmFjayBob3cgbWFueSBpdGVtcyB0byB3YWl0IGZvciBiZWZvcmVcblx0Ly8gdGhlIHJlYWR5IGV2ZW50IGZpcmVzLiBTZWUgdHJhYy02NzgxXG5cdHJlYWR5V2FpdDogMSxcblxuXHQvLyBIYW5kbGUgd2hlbiB0aGUgRE9NIGlzIHJlYWR5XG5cdHJlYWR5OiBmdW5jdGlvbiggd2FpdCApIHtcblxuXHRcdC8vIEFib3J0IGlmIHRoZXJlIGFyZSBwZW5kaW5nIGhvbGRzIG9yIHdlJ3JlIGFscmVhZHkgcmVhZHlcblx0XHRpZiAoIHdhaXQgPT09IHRydWUgPyAtLWpRdWVyeS5yZWFkeVdhaXQgOiBqUXVlcnkuaXNSZWFkeSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBSZW1lbWJlciB0aGF0IHRoZSBET00gaXMgcmVhZHlcblx0XHRqUXVlcnkuaXNSZWFkeSA9IHRydWU7XG5cblx0XHQvLyBJZiBhIG5vcm1hbCBET00gUmVhZHkgZXZlbnQgZmlyZWQsIGRlY3JlbWVudCwgYW5kIHdhaXQgaWYgbmVlZCBiZVxuXHRcdGlmICggd2FpdCAhPT0gdHJ1ZSAmJiAtLWpRdWVyeS5yZWFkeVdhaXQgPiAwICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIElmIHRoZXJlIGFyZSBmdW5jdGlvbnMgYm91bmQsIHRvIGV4ZWN1dGVcblx0XHRyZWFkeUxpc3QucmVzb2x2ZVdpdGgoIGRvY3VtZW50LCBbIGpRdWVyeSBdICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LnJlYWR5LnRoZW4gPSByZWFkeUxpc3QudGhlbjtcblxuLy8gVGhlIHJlYWR5IGV2ZW50IGhhbmRsZXIgYW5kIHNlbGYgY2xlYW51cCBtZXRob2RcbmZ1bmN0aW9uIGNvbXBsZXRlZCgpIHtcblx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciggXCJET01Db250ZW50TG9hZGVkXCIsIGNvbXBsZXRlZCApO1xuXHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lciggXCJsb2FkXCIsIGNvbXBsZXRlZCApO1xuXHRqUXVlcnkucmVhZHkoKTtcbn1cblxuLy8gQ2F0Y2ggY2FzZXMgd2hlcmUgJChkb2N1bWVudCkucmVhZHkoKSBpcyBjYWxsZWRcbi8vIGFmdGVyIHRoZSBicm93c2VyIGV2ZW50IGhhcyBhbHJlYWR5IG9jY3VycmVkLlxuLy8gU3VwcG9ydDogSUUgPD05IC0gMTAgb25seVxuLy8gT2xkZXIgSUUgc29tZXRpbWVzIHNpZ25hbHMgXCJpbnRlcmFjdGl2ZVwiIHRvbyBzb29uXG5pZiAoIGRvY3VtZW50LnJlYWR5U3RhdGUgPT09IFwiY29tcGxldGVcIiB8fFxuXHQoIGRvY3VtZW50LnJlYWR5U3RhdGUgIT09IFwibG9hZGluZ1wiICYmICFkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwgKSApIHtcblxuXHQvLyBIYW5kbGUgaXQgYXN5bmNocm9ub3VzbHkgdG8gYWxsb3cgc2NyaXB0cyB0aGUgb3Bwb3J0dW5pdHkgdG8gZGVsYXkgcmVhZHlcblx0d2luZG93LnNldFRpbWVvdXQoIGpRdWVyeS5yZWFkeSApO1xuXG59IGVsc2Uge1xuXG5cdC8vIFVzZSB0aGUgaGFuZHkgZXZlbnQgY2FsbGJhY2tcblx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggXCJET01Db250ZW50TG9hZGVkXCIsIGNvbXBsZXRlZCApO1xuXG5cdC8vIEEgZmFsbGJhY2sgdG8gd2luZG93Lm9ubG9hZCwgdGhhdCB3aWxsIGFsd2F5cyB3b3JrXG5cdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCBcImxvYWRcIiwgY29tcGxldGVkICk7XG59XG5cblxuXG5cbi8vIE11bHRpZnVuY3Rpb25hbCBtZXRob2QgdG8gZ2V0IGFuZCBzZXQgdmFsdWVzIG9mIGEgY29sbGVjdGlvblxuLy8gVGhlIHZhbHVlL3MgY2FuIG9wdGlvbmFsbHkgYmUgZXhlY3V0ZWQgaWYgaXQncyBhIGZ1bmN0aW9uXG52YXIgYWNjZXNzID0gZnVuY3Rpb24oIGVsZW1zLCBmbiwga2V5LCB2YWx1ZSwgY2hhaW5hYmxlLCBlbXB0eUdldCwgcmF3ICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bGVuID0gZWxlbXMubGVuZ3RoLFxuXHRcdGJ1bGsgPSBrZXkgPT0gbnVsbDtcblxuXHQvLyBTZXRzIG1hbnkgdmFsdWVzXG5cdGlmICggdG9UeXBlKCBrZXkgKSA9PT0gXCJvYmplY3RcIiApIHtcblx0XHRjaGFpbmFibGUgPSB0cnVlO1xuXHRcdGZvciAoIGkgaW4ga2V5ICkge1xuXHRcdFx0YWNjZXNzKCBlbGVtcywgZm4sIGksIGtleVsgaSBdLCB0cnVlLCBlbXB0eUdldCwgcmF3ICk7XG5cdFx0fVxuXG5cdC8vIFNldHMgb25lIHZhbHVlXG5cdH0gZWxzZSBpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0Y2hhaW5hYmxlID0gdHJ1ZTtcblxuXHRcdGlmICggIWlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRyYXcgPSB0cnVlO1xuXHRcdH1cblxuXHRcdGlmICggYnVsayApIHtcblxuXHRcdFx0Ly8gQnVsayBvcGVyYXRpb25zIHJ1biBhZ2FpbnN0IHRoZSBlbnRpcmUgc2V0XG5cdFx0XHRpZiAoIHJhdyApIHtcblx0XHRcdFx0Zm4uY2FsbCggZWxlbXMsIHZhbHVlICk7XG5cdFx0XHRcdGZuID0gbnVsbDtcblxuXHRcdFx0Ly8gLi4uZXhjZXB0IHdoZW4gZXhlY3V0aW5nIGZ1bmN0aW9uIHZhbHVlc1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YnVsayA9IGZuO1xuXHRcdFx0XHRmbiA9IGZ1bmN0aW9uKCBlbGVtLCBfa2V5LCB2YWx1ZSApIHtcblx0XHRcdFx0XHRyZXR1cm4gYnVsay5jYWxsKCBqUXVlcnkoIGVsZW0gKSwgdmFsdWUgKTtcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoIGZuICkge1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRcdGZuKFxuXHRcdFx0XHRcdGVsZW1zWyBpIF0sIGtleSwgcmF3ID9cblx0XHRcdFx0XHRcdHZhbHVlIDpcblx0XHRcdFx0XHRcdHZhbHVlLmNhbGwoIGVsZW1zWyBpIF0sIGksIGZuKCBlbGVtc1sgaSBdLCBrZXkgKSApXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aWYgKCBjaGFpbmFibGUgKSB7XG5cdFx0cmV0dXJuIGVsZW1zO1xuXHR9XG5cblx0Ly8gR2V0c1xuXHRpZiAoIGJ1bGsgKSB7XG5cdFx0cmV0dXJuIGZuLmNhbGwoIGVsZW1zICk7XG5cdH1cblxuXHRyZXR1cm4gbGVuID8gZm4oIGVsZW1zWyAwIF0sIGtleSApIDogZW1wdHlHZXQ7XG59O1xuXG5cbi8vIE1hdGNoZXMgZGFzaGVkIHN0cmluZyBmb3IgY2FtZWxpemluZ1xudmFyIHJtc1ByZWZpeCA9IC9eLW1zLS8sXG5cdHJkYXNoQWxwaGEgPSAvLShbYS16XSkvZztcblxuLy8gVXNlZCBieSBjYW1lbENhc2UgYXMgY2FsbGJhY2sgdG8gcmVwbGFjZSgpXG5mdW5jdGlvbiBmY2FtZWxDYXNlKCBfYWxsLCBsZXR0ZXIgKSB7XG5cdHJldHVybiBsZXR0ZXIudG9VcHBlckNhc2UoKTtcbn1cblxuLy8gQ29udmVydCBkYXNoZWQgdG8gY2FtZWxDYXNlOyB1c2VkIGJ5IHRoZSBjc3MgYW5kIGRhdGEgbW9kdWxlc1xuLy8gU3VwcG9ydDogSUUgPD05IC0gMTEsIEVkZ2UgMTIgLSAxNVxuLy8gTWljcm9zb2Z0IGZvcmdvdCB0byBodW1wIHRoZWlyIHZlbmRvciBwcmVmaXggKHRyYWMtOTU3MilcbmZ1bmN0aW9uIGNhbWVsQ2FzZSggc3RyaW5nICkge1xuXHRyZXR1cm4gc3RyaW5nLnJlcGxhY2UoIHJtc1ByZWZpeCwgXCJtcy1cIiApLnJlcGxhY2UoIHJkYXNoQWxwaGEsIGZjYW1lbENhc2UgKTtcbn1cbnZhciBhY2NlcHREYXRhID0gZnVuY3Rpb24oIG93bmVyICkge1xuXG5cdC8vIEFjY2VwdHMgb25seTpcblx0Ly8gIC0gTm9kZVxuXHQvLyAgICAtIE5vZGUuRUxFTUVOVF9OT0RFXG5cdC8vICAgIC0gTm9kZS5ET0NVTUVOVF9OT0RFXG5cdC8vICAtIE9iamVjdFxuXHQvLyAgICAtIEFueVxuXHRyZXR1cm4gb3duZXIubm9kZVR5cGUgPT09IDEgfHwgb3duZXIubm9kZVR5cGUgPT09IDkgfHwgISggK293bmVyLm5vZGVUeXBlICk7XG59O1xuXG5cblxuXG5mdW5jdGlvbiBEYXRhKCkge1xuXHR0aGlzLmV4cGFuZG8gPSBqUXVlcnkuZXhwYW5kbyArIERhdGEudWlkKys7XG59XG5cbkRhdGEudWlkID0gMTtcblxuRGF0YS5wcm90b3R5cGUgPSB7XG5cblx0Y2FjaGU6IGZ1bmN0aW9uKCBvd25lciApIHtcblxuXHRcdC8vIENoZWNrIGlmIHRoZSBvd25lciBvYmplY3QgYWxyZWFkeSBoYXMgYSBjYWNoZVxuXHRcdHZhciB2YWx1ZSA9IG93bmVyWyB0aGlzLmV4cGFuZG8gXTtcblxuXHRcdC8vIElmIG5vdCwgY3JlYXRlIG9uZVxuXHRcdGlmICggIXZhbHVlICkge1xuXHRcdFx0dmFsdWUgPSB7fTtcblxuXHRcdFx0Ly8gV2UgY2FuIGFjY2VwdCBkYXRhIGZvciBub24tZWxlbWVudCBub2RlcyBpbiBtb2Rlcm4gYnJvd3NlcnMsXG5cdFx0XHQvLyBidXQgd2Ugc2hvdWxkIG5vdCwgc2VlIHRyYWMtODMzNS5cblx0XHRcdC8vIEFsd2F5cyByZXR1cm4gYW4gZW1wdHkgb2JqZWN0LlxuXHRcdFx0aWYgKCBhY2NlcHREYXRhKCBvd25lciApICkge1xuXG5cdFx0XHRcdC8vIElmIGl0IGlzIGEgbm9kZSB1bmxpa2VseSB0byBiZSBzdHJpbmdpZnktZWQgb3IgbG9vcGVkIG92ZXJcblx0XHRcdFx0Ly8gdXNlIHBsYWluIGFzc2lnbm1lbnRcblx0XHRcdFx0aWYgKCBvd25lci5ub2RlVHlwZSApIHtcblx0XHRcdFx0XHRvd25lclsgdGhpcy5leHBhbmRvIF0gPSB2YWx1ZTtcblxuXHRcdFx0XHQvLyBPdGhlcndpc2Ugc2VjdXJlIGl0IGluIGEgbm9uLWVudW1lcmFibGUgcHJvcGVydHlcblx0XHRcdFx0Ly8gY29uZmlndXJhYmxlIG11c3QgYmUgdHJ1ZSB0byBhbGxvdyB0aGUgcHJvcGVydHkgdG8gYmVcblx0XHRcdFx0Ly8gZGVsZXRlZCB3aGVuIGRhdGEgaXMgcmVtb3ZlZFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggb3duZXIsIHRoaXMuZXhwYW5kbywge1xuXHRcdFx0XHRcdFx0dmFsdWU6IHZhbHVlLFxuXHRcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlXG5cdFx0XHRcdFx0fSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHZhbHVlO1xuXHR9LFxuXHRzZXQ6IGZ1bmN0aW9uKCBvd25lciwgZGF0YSwgdmFsdWUgKSB7XG5cdFx0dmFyIHByb3AsXG5cdFx0XHRjYWNoZSA9IHRoaXMuY2FjaGUoIG93bmVyICk7XG5cblx0XHQvLyBIYW5kbGU6IFsgb3duZXIsIGtleSwgdmFsdWUgXSBhcmdzXG5cdFx0Ly8gQWx3YXlzIHVzZSBjYW1lbENhc2Uga2V5IChnaC0yMjU3KVxuXHRcdGlmICggdHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRjYWNoZVsgY2FtZWxDYXNlKCBkYXRhICkgXSA9IHZhbHVlO1xuXG5cdFx0Ly8gSGFuZGxlOiBbIG93bmVyLCB7IHByb3BlcnRpZXMgfSBdIGFyZ3Ncblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyBDb3B5IHRoZSBwcm9wZXJ0aWVzIG9uZS1ieS1vbmUgdG8gdGhlIGNhY2hlIG9iamVjdFxuXHRcdFx0Zm9yICggcHJvcCBpbiBkYXRhICkge1xuXHRcdFx0XHRjYWNoZVsgY2FtZWxDYXNlKCBwcm9wICkgXSA9IGRhdGFbIHByb3AgXTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGNhY2hlO1xuXHR9LFxuXHRnZXQ6IGZ1bmN0aW9uKCBvd25lciwga2V5ICkge1xuXHRcdHJldHVybiBrZXkgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHR0aGlzLmNhY2hlKCBvd25lciApIDpcblxuXHRcdFx0Ly8gQWx3YXlzIHVzZSBjYW1lbENhc2Uga2V5IChnaC0yMjU3KVxuXHRcdFx0b3duZXJbIHRoaXMuZXhwYW5kbyBdICYmIG93bmVyWyB0aGlzLmV4cGFuZG8gXVsgY2FtZWxDYXNlKCBrZXkgKSBdO1xuXHR9LFxuXHRhY2Nlc3M6IGZ1bmN0aW9uKCBvd25lciwga2V5LCB2YWx1ZSApIHtcblxuXHRcdC8vIEluIGNhc2VzIHdoZXJlIGVpdGhlcjpcblx0XHQvL1xuXHRcdC8vICAgMS4gTm8ga2V5IHdhcyBzcGVjaWZpZWRcblx0XHQvLyAgIDIuIEEgc3RyaW5nIGtleSB3YXMgc3BlY2lmaWVkLCBidXQgbm8gdmFsdWUgcHJvdmlkZWRcblx0XHQvL1xuXHRcdC8vIFRha2UgdGhlIFwicmVhZFwiIHBhdGggYW5kIGFsbG93IHRoZSBnZXQgbWV0aG9kIHRvIGRldGVybWluZVxuXHRcdC8vIHdoaWNoIHZhbHVlIHRvIHJldHVybiwgcmVzcGVjdGl2ZWx5IGVpdGhlcjpcblx0XHQvL1xuXHRcdC8vICAgMS4gVGhlIGVudGlyZSBjYWNoZSBvYmplY3Rcblx0XHQvLyAgIDIuIFRoZSBkYXRhIHN0b3JlZCBhdCB0aGUga2V5XG5cdFx0Ly9cblx0XHRpZiAoIGtleSA9PT0gdW5kZWZpbmVkIHx8XG5cdFx0XHRcdCggKCBrZXkgJiYgdHlwZW9mIGtleSA9PT0gXCJzdHJpbmdcIiApICYmIHZhbHVlID09PSB1bmRlZmluZWQgKSApIHtcblxuXHRcdFx0cmV0dXJuIHRoaXMuZ2V0KCBvd25lciwga2V5ICk7XG5cdFx0fVxuXG5cdFx0Ly8gV2hlbiB0aGUga2V5IGlzIG5vdCBhIHN0cmluZywgb3IgYm90aCBhIGtleSBhbmQgdmFsdWVcblx0XHQvLyBhcmUgc3BlY2lmaWVkLCBzZXQgb3IgZXh0ZW5kIChleGlzdGluZyBvYmplY3RzKSB3aXRoIGVpdGhlcjpcblx0XHQvL1xuXHRcdC8vICAgMS4gQW4gb2JqZWN0IG9mIHByb3BlcnRpZXNcblx0XHQvLyAgIDIuIEEga2V5IGFuZCB2YWx1ZVxuXHRcdC8vXG5cdFx0dGhpcy5zZXQoIG93bmVyLCBrZXksIHZhbHVlICk7XG5cblx0XHQvLyBTaW5jZSB0aGUgXCJzZXRcIiBwYXRoIGNhbiBoYXZlIHR3byBwb3NzaWJsZSBlbnRyeSBwb2ludHNcblx0XHQvLyByZXR1cm4gdGhlIGV4cGVjdGVkIGRhdGEgYmFzZWQgb24gd2hpY2ggcGF0aCB3YXMgdGFrZW5bKl1cblx0XHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoga2V5O1xuXHR9LFxuXHRyZW1vdmU6IGZ1bmN0aW9uKCBvd25lciwga2V5ICkge1xuXHRcdHZhciBpLFxuXHRcdFx0Y2FjaGUgPSBvd25lclsgdGhpcy5leHBhbmRvIF07XG5cblx0XHRpZiAoIGNhY2hlID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCBrZXkgIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0Ly8gU3VwcG9ydCBhcnJheSBvciBzcGFjZSBzZXBhcmF0ZWQgc3RyaW5nIG9mIGtleXNcblx0XHRcdGlmICggQXJyYXkuaXNBcnJheSgga2V5ICkgKSB7XG5cblx0XHRcdFx0Ly8gSWYga2V5IGlzIGFuIGFycmF5IG9mIGtleXMuLi5cblx0XHRcdFx0Ly8gV2UgYWx3YXlzIHNldCBjYW1lbENhc2Uga2V5cywgc28gcmVtb3ZlIHRoYXQuXG5cdFx0XHRcdGtleSA9IGtleS5tYXAoIGNhbWVsQ2FzZSApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0a2V5ID0gY2FtZWxDYXNlKCBrZXkgKTtcblxuXHRcdFx0XHQvLyBJZiBhIGtleSB3aXRoIHRoZSBzcGFjZXMgZXhpc3RzLCB1c2UgaXQuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSwgY3JlYXRlIGFuIGFycmF5IGJ5IG1hdGNoaW5nIG5vbi13aGl0ZXNwYWNlXG5cdFx0XHRcdGtleSA9IGtleSBpbiBjYWNoZSA/XG5cdFx0XHRcdFx0WyBrZXkgXSA6XG5cdFx0XHRcdFx0KCBrZXkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXSApO1xuXHRcdFx0fVxuXG5cdFx0XHRpID0ga2V5Lmxlbmd0aDtcblxuXHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdGRlbGV0ZSBjYWNoZVsga2V5WyBpIF0gXTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBSZW1vdmUgdGhlIGV4cGFuZG8gaWYgdGhlcmUncyBubyBtb3JlIGRhdGFcblx0XHRpZiAoIGtleSA9PT0gdW5kZWZpbmVkIHx8IGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBjYWNoZSApICkge1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBDaHJvbWUgPD0zNSAtIDQ1XG5cdFx0XHQvLyBXZWJraXQgJiBCbGluayBwZXJmb3JtYW5jZSBzdWZmZXJzIHdoZW4gZGVsZXRpbmcgcHJvcGVydGllc1xuXHRcdFx0Ly8gZnJvbSBET00gbm9kZXMsIHNvIHNldCB0byB1bmRlZmluZWQgaW5zdGVhZFxuXHRcdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9Mzc4NjA3IChidWcgcmVzdHJpY3RlZClcblx0XHRcdGlmICggb3duZXIubm9kZVR5cGUgKSB7XG5cdFx0XHRcdG93bmVyWyB0aGlzLmV4cGFuZG8gXSA9IHVuZGVmaW5lZDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRlbGV0ZSBvd25lclsgdGhpcy5leHBhbmRvIF07XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRoYXNEYXRhOiBmdW5jdGlvbiggb3duZXIgKSB7XG5cdFx0dmFyIGNhY2hlID0gb3duZXJbIHRoaXMuZXhwYW5kbyBdO1xuXHRcdHJldHVybiBjYWNoZSAhPT0gdW5kZWZpbmVkICYmICFqUXVlcnkuaXNFbXB0eU9iamVjdCggY2FjaGUgKTtcblx0fVxufTtcbnZhciBkYXRhUHJpdiA9IG5ldyBEYXRhKCk7XG5cbnZhciBkYXRhVXNlciA9IG5ldyBEYXRhKCk7XG5cblxuXG4vL1x0SW1wbGVtZW50YXRpb24gU3VtbWFyeVxuLy9cbi8vXHQxLiBFbmZvcmNlIEFQSSBzdXJmYWNlIGFuZCBzZW1hbnRpYyBjb21wYXRpYmlsaXR5IHdpdGggMS45LnggYnJhbmNoXG4vL1x0Mi4gSW1wcm92ZSB0aGUgbW9kdWxlJ3MgbWFpbnRhaW5hYmlsaXR5IGJ5IHJlZHVjaW5nIHRoZSBzdG9yYWdlXG4vL1x0XHRwYXRocyB0byBhIHNpbmdsZSBtZWNoYW5pc20uXG4vL1x0My4gVXNlIHRoZSBzYW1lIHNpbmdsZSBtZWNoYW5pc20gdG8gc3VwcG9ydCBcInByaXZhdGVcIiBhbmQgXCJ1c2VyXCIgZGF0YS5cbi8vXHQ0LiBfTmV2ZXJfIGV4cG9zZSBcInByaXZhdGVcIiBkYXRhIHRvIHVzZXIgY29kZSAoVE9ETzogRHJvcCBfZGF0YSwgX3JlbW92ZURhdGEpXG4vL1x0NS4gQXZvaWQgZXhwb3NpbmcgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvbiB1c2VyIG9iamVjdHMgKGVnLiBleHBhbmRvIHByb3BlcnRpZXMpXG4vL1x0Ni4gUHJvdmlkZSBhIGNsZWFyIHBhdGggZm9yIGltcGxlbWVudGF0aW9uIHVwZ3JhZGUgdG8gV2Vha01hcCBpbiAyMDE0XG5cbnZhciByYnJhY2UgPSAvXig/Olxce1tcXHdcXFddKlxcfXxcXFtbXFx3XFxXXSpcXF0pJC8sXG5cdHJtdWx0aURhc2ggPSAvW0EtWl0vZztcblxuZnVuY3Rpb24gZ2V0RGF0YSggZGF0YSApIHtcblx0aWYgKCBkYXRhID09PSBcInRydWVcIiApIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdGlmICggZGF0YSA9PT0gXCJmYWxzZVwiICkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGlmICggZGF0YSA9PT0gXCJudWxsXCIgKSB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHQvLyBPbmx5IGNvbnZlcnQgdG8gYSBudW1iZXIgaWYgaXQgZG9lc24ndCBjaGFuZ2UgdGhlIHN0cmluZ1xuXHRpZiAoIGRhdGEgPT09ICtkYXRhICsgXCJcIiApIHtcblx0XHRyZXR1cm4gK2RhdGE7XG5cdH1cblxuXHRpZiAoIHJicmFjZS50ZXN0KCBkYXRhICkgKSB7XG5cdFx0cmV0dXJuIEpTT04ucGFyc2UoIGRhdGEgKTtcblx0fVxuXG5cdHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiBkYXRhQXR0ciggZWxlbSwga2V5LCBkYXRhICkge1xuXHR2YXIgbmFtZTtcblxuXHQvLyBJZiBub3RoaW5nIHdhcyBmb3VuZCBpbnRlcm5hbGx5LCB0cnkgdG8gZmV0Y2ggYW55XG5cdC8vIGRhdGEgZnJvbSB0aGUgSFRNTDUgZGF0YS0qIGF0dHJpYnV0ZVxuXHRpZiAoIGRhdGEgPT09IHVuZGVmaW5lZCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdG5hbWUgPSBcImRhdGEtXCIgKyBrZXkucmVwbGFjZSggcm11bHRpRGFzaCwgXCItJCZcIiApLnRvTG93ZXJDYXNlKCk7XG5cdFx0ZGF0YSA9IGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICk7XG5cblx0XHRpZiAoIHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0ZGF0YSA9IGdldERhdGEoIGRhdGEgKTtcblx0XHRcdH0gY2F0Y2ggKCBlICkge31cblxuXHRcdFx0Ly8gTWFrZSBzdXJlIHdlIHNldCB0aGUgZGF0YSBzbyBpdCBpc24ndCBjaGFuZ2VkIGxhdGVyXG5cdFx0XHRkYXRhVXNlci5zZXQoIGVsZW0sIGtleSwgZGF0YSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRkYXRhID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gZGF0YTtcbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXHRoYXNEYXRhOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZGF0YVVzZXIuaGFzRGF0YSggZWxlbSApIHx8IGRhdGFQcml2Lmhhc0RhdGEoIGVsZW0gKTtcblx0fSxcblxuXHRkYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSApIHtcblx0XHRyZXR1cm4gZGF0YVVzZXIuYWNjZXNzKCBlbGVtLCBuYW1lLCBkYXRhICk7XG5cdH0sXG5cblx0cmVtb3ZlRGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7XG5cdFx0ZGF0YVVzZXIucmVtb3ZlKCBlbGVtLCBuYW1lICk7XG5cdH0sXG5cblx0Ly8gVE9ETzogTm93IHRoYXQgYWxsIGNhbGxzIHRvIF9kYXRhIGFuZCBfcmVtb3ZlRGF0YSBoYXZlIGJlZW4gcmVwbGFjZWRcblx0Ly8gd2l0aCBkaXJlY3QgY2FsbHMgdG8gZGF0YVByaXYgbWV0aG9kcywgdGhlc2UgY2FuIGJlIGRlcHJlY2F0ZWQuXG5cdF9kYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSApIHtcblx0XHRyZXR1cm4gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCBuYW1lLCBkYXRhICk7XG5cdH0sXG5cblx0X3JlbW92ZURhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkge1xuXHRcdGRhdGFQcml2LnJlbW92ZSggZWxlbSwgbmFtZSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0ZGF0YTogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7XG5cdFx0dmFyIGksIG5hbWUsIGRhdGEsXG5cdFx0XHRlbGVtID0gdGhpc1sgMCBdLFxuXHRcdFx0YXR0cnMgPSBlbGVtICYmIGVsZW0uYXR0cmlidXRlcztcblxuXHRcdC8vIEdldHMgYWxsIHZhbHVlc1xuXHRcdGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRpZiAoIHRoaXMubGVuZ3RoICkge1xuXHRcdFx0XHRkYXRhID0gZGF0YVVzZXIuZ2V0KCBlbGVtICk7XG5cblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmICFkYXRhUHJpdi5nZXQoIGVsZW0sIFwiaGFzRGF0YUF0dHJzXCIgKSApIHtcblx0XHRcdFx0XHRpID0gYXR0cnMubGVuZ3RoO1xuXHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSAxMSBvbmx5XG5cdFx0XHRcdFx0XHQvLyBUaGUgYXR0cnMgZWxlbWVudHMgY2FuIGJlIG51bGwgKHRyYWMtMTQ4OTQpXG5cdFx0XHRcdFx0XHRpZiAoIGF0dHJzWyBpIF0gKSB7XG5cdFx0XHRcdFx0XHRcdG5hbWUgPSBhdHRyc1sgaSBdLm5hbWU7XG5cdFx0XHRcdFx0XHRcdGlmICggbmFtZS5pbmRleE9mKCBcImRhdGEtXCIgKSA9PT0gMCApIHtcblx0XHRcdFx0XHRcdFx0XHRuYW1lID0gY2FtZWxDYXNlKCBuYW1lLnNsaWNlKCA1ICkgKTtcblx0XHRcdFx0XHRcdFx0XHRkYXRhQXR0ciggZWxlbSwgbmFtZSwgZGF0YVsgbmFtZSBdICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZGF0YVByaXYuc2V0KCBlbGVtLCBcImhhc0RhdGFBdHRyc1wiLCB0cnVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0fVxuXG5cdFx0Ly8gU2V0cyBtdWx0aXBsZSB2YWx1ZXNcblx0XHRpZiAoIHR5cGVvZiBrZXkgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0ZGF0YVVzZXIuc2V0KCB0aGlzLCBrZXkgKTtcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHR2YXIgZGF0YTtcblxuXHRcdFx0Ly8gVGhlIGNhbGxpbmcgalF1ZXJ5IG9iamVjdCAoZWxlbWVudCBtYXRjaGVzKSBpcyBub3QgZW1wdHlcblx0XHRcdC8vIChhbmQgdGhlcmVmb3JlIGhhcyBhbiBlbGVtZW50IGFwcGVhcnMgYXQgdGhpc1sgMCBdKSBhbmQgdGhlXG5cdFx0XHQvLyBgdmFsdWVgIHBhcmFtZXRlciB3YXMgbm90IHVuZGVmaW5lZC4gQW4gZW1wdHkgalF1ZXJ5IG9iamVjdFxuXHRcdFx0Ly8gd2lsbCByZXN1bHQgaW4gYHVuZGVmaW5lZGAgZm9yIGVsZW0gPSB0aGlzWyAwIF0gd2hpY2ggd2lsbFxuXHRcdFx0Ly8gdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFuIGF0dGVtcHQgdG8gcmVhZCBhIGRhdGEgY2FjaGUgaXMgbWFkZS5cblx0XHRcdGlmICggZWxlbSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkICkge1xuXG5cdFx0XHRcdC8vIEF0dGVtcHQgdG8gZ2V0IGRhdGEgZnJvbSB0aGUgY2FjaGVcblx0XHRcdFx0Ly8gVGhlIGtleSB3aWxsIGFsd2F5cyBiZSBjYW1lbENhc2VkIGluIERhdGFcblx0XHRcdFx0ZGF0YSA9IGRhdGFVc2VyLmdldCggZWxlbSwga2V5ICk7XG5cdFx0XHRcdGlmICggZGF0YSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQXR0ZW1wdCB0byBcImRpc2NvdmVyXCIgdGhlIGRhdGEgaW5cblx0XHRcdFx0Ly8gSFRNTDUgY3VzdG9tIGRhdGEtKiBhdHRyc1xuXHRcdFx0XHRkYXRhID0gZGF0YUF0dHIoIGVsZW0sIGtleSApO1xuXHRcdFx0XHRpZiAoIGRhdGEgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRyZXR1cm4gZGF0YTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFdlIHRyaWVkIHJlYWxseSBoYXJkLCBidXQgdGhlIGRhdGEgZG9lc24ndCBleGlzdC5cblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTZXQgdGhlIGRhdGEuLi5cblx0XHRcdHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0Ly8gV2UgYWx3YXlzIHN0b3JlIHRoZSBjYW1lbENhc2VkIGtleVxuXHRcdFx0XHRkYXRhVXNlci5zZXQoIHRoaXMsIGtleSwgdmFsdWUgKTtcblx0XHRcdH0gKTtcblx0XHR9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEsIG51bGwsIHRydWUgKTtcblx0fSxcblxuXHRyZW1vdmVEYXRhOiBmdW5jdGlvbigga2V5ICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0ZGF0YVVzZXIucmVtb3ZlKCB0aGlzLCBrZXkgKTtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cdHF1ZXVlOiBmdW5jdGlvbiggZWxlbSwgdHlwZSwgZGF0YSApIHtcblx0XHR2YXIgcXVldWU7XG5cblx0XHRpZiAoIGVsZW0gKSB7XG5cdFx0XHR0eXBlID0gKCB0eXBlIHx8IFwiZnhcIiApICsgXCJxdWV1ZVwiO1xuXHRcdFx0cXVldWUgPSBkYXRhUHJpdi5nZXQoIGVsZW0sIHR5cGUgKTtcblxuXHRcdFx0Ly8gU3BlZWQgdXAgZGVxdWV1ZSBieSBnZXR0aW5nIG91dCBxdWlja2x5IGlmIHRoaXMgaXMganVzdCBhIGxvb2t1cFxuXHRcdFx0aWYgKCBkYXRhICkge1xuXHRcdFx0XHRpZiAoICFxdWV1ZSB8fCBBcnJheS5pc0FycmF5KCBkYXRhICkgKSB7XG5cdFx0XHRcdFx0cXVldWUgPSBkYXRhUHJpdi5hY2Nlc3MoIGVsZW0sIHR5cGUsIGpRdWVyeS5tYWtlQXJyYXkoIGRhdGEgKSApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHF1ZXVlLnB1c2goIGRhdGEgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHF1ZXVlIHx8IFtdO1xuXHRcdH1cblx0fSxcblxuXHRkZXF1ZXVlOiBmdW5jdGlvbiggZWxlbSwgdHlwZSApIHtcblx0XHR0eXBlID0gdHlwZSB8fCBcImZ4XCI7XG5cblx0XHR2YXIgcXVldWUgPSBqUXVlcnkucXVldWUoIGVsZW0sIHR5cGUgKSxcblx0XHRcdHN0YXJ0TGVuZ3RoID0gcXVldWUubGVuZ3RoLFxuXHRcdFx0Zm4gPSBxdWV1ZS5zaGlmdCgpLFxuXHRcdFx0aG9va3MgPSBqUXVlcnkuX3F1ZXVlSG9va3MoIGVsZW0sIHR5cGUgKSxcblx0XHRcdG5leHQgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0alF1ZXJ5LmRlcXVldWUoIGVsZW0sIHR5cGUgKTtcblx0XHRcdH07XG5cblx0XHQvLyBJZiB0aGUgZnggcXVldWUgaXMgZGVxdWV1ZWQsIGFsd2F5cyByZW1vdmUgdGhlIHByb2dyZXNzIHNlbnRpbmVsXG5cdFx0aWYgKCBmbiA9PT0gXCJpbnByb2dyZXNzXCIgKSB7XG5cdFx0XHRmbiA9IHF1ZXVlLnNoaWZ0KCk7XG5cdFx0XHRzdGFydExlbmd0aC0tO1xuXHRcdH1cblxuXHRcdGlmICggZm4gKSB7XG5cblx0XHRcdC8vIEFkZCBhIHByb2dyZXNzIHNlbnRpbmVsIHRvIHByZXZlbnQgdGhlIGZ4IHF1ZXVlIGZyb20gYmVpbmdcblx0XHRcdC8vIGF1dG9tYXRpY2FsbHkgZGVxdWV1ZWRcblx0XHRcdGlmICggdHlwZSA9PT0gXCJmeFwiICkge1xuXHRcdFx0XHRxdWV1ZS51bnNoaWZ0KCBcImlucHJvZ3Jlc3NcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDbGVhciB1cCB0aGUgbGFzdCBxdWV1ZSBzdG9wIGZ1bmN0aW9uXG5cdFx0XHRkZWxldGUgaG9va3Muc3RvcDtcblx0XHRcdGZuLmNhbGwoIGVsZW0sIG5leHQsIGhvb2tzICk7XG5cdFx0fVxuXG5cdFx0aWYgKCAhc3RhcnRMZW5ndGggJiYgaG9va3MgKSB7XG5cdFx0XHRob29rcy5lbXB0eS5maXJlKCk7XG5cdFx0fVxuXHR9LFxuXG5cdC8vIE5vdCBwdWJsaWMgLSBnZW5lcmF0ZSBhIHF1ZXVlSG9va3Mgb2JqZWN0LCBvciByZXR1cm4gdGhlIGN1cnJlbnQgb25lXG5cdF9xdWV1ZUhvb2tzOiBmdW5jdGlvbiggZWxlbSwgdHlwZSApIHtcblx0XHR2YXIga2V5ID0gdHlwZSArIFwicXVldWVIb29rc1wiO1xuXHRcdHJldHVybiBkYXRhUHJpdi5nZXQoIGVsZW0sIGtleSApIHx8IGRhdGFQcml2LmFjY2VzcyggZWxlbSwga2V5LCB7XG5cdFx0XHRlbXB0eTogalF1ZXJ5LkNhbGxiYWNrcyggXCJvbmNlIG1lbW9yeVwiICkuYWRkKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0ZGF0YVByaXYucmVtb3ZlKCBlbGVtLCBbIHR5cGUgKyBcInF1ZXVlXCIsIGtleSBdICk7XG5cdFx0XHR9IClcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRxdWV1ZTogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7XG5cdFx0dmFyIHNldHRlciA9IDI7XG5cblx0XHRpZiAoIHR5cGVvZiB0eXBlICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0ZGF0YSA9IHR5cGU7XG5cdFx0XHR0eXBlID0gXCJmeFwiO1xuXHRcdFx0c2V0dGVyLS07XG5cdFx0fVxuXG5cdFx0aWYgKCBhcmd1bWVudHMubGVuZ3RoIDwgc2V0dGVyICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5xdWV1ZSggdGhpc1sgMCBdLCB0eXBlICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGRhdGEgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHR0aGlzIDpcblx0XHRcdHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBxdWV1ZSA9IGpRdWVyeS5xdWV1ZSggdGhpcywgdHlwZSwgZGF0YSApO1xuXG5cdFx0XHRcdC8vIEVuc3VyZSBhIGhvb2tzIGZvciB0aGlzIHF1ZXVlXG5cdFx0XHRcdGpRdWVyeS5fcXVldWVIb29rcyggdGhpcywgdHlwZSApO1xuXG5cdFx0XHRcdGlmICggdHlwZSA9PT0gXCJmeFwiICYmIHF1ZXVlWyAwIF0gIT09IFwiaW5wcm9ncmVzc1wiICkge1xuXHRcdFx0XHRcdGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0fSxcblx0ZGVxdWV1ZTogZnVuY3Rpb24oIHR5cGUgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApO1xuXHRcdH0gKTtcblx0fSxcblx0Y2xlYXJRdWV1ZTogZnVuY3Rpb24oIHR5cGUgKSB7XG5cdFx0cmV0dXJuIHRoaXMucXVldWUoIHR5cGUgfHwgXCJmeFwiLCBbXSApO1xuXHR9LFxuXG5cdC8vIEdldCBhIHByb21pc2UgcmVzb2x2ZWQgd2hlbiBxdWV1ZXMgb2YgYSBjZXJ0YWluIHR5cGVcblx0Ly8gYXJlIGVtcHRpZWQgKGZ4IGlzIHRoZSB0eXBlIGJ5IGRlZmF1bHQpXG5cdHByb21pc2U6IGZ1bmN0aW9uKCB0eXBlLCBvYmogKSB7XG5cdFx0dmFyIHRtcCxcblx0XHRcdGNvdW50ID0gMSxcblx0XHRcdGRlZmVyID0galF1ZXJ5LkRlZmVycmVkKCksXG5cdFx0XHRlbGVtZW50cyA9IHRoaXMsXG5cdFx0XHRpID0gdGhpcy5sZW5ndGgsXG5cdFx0XHRyZXNvbHZlID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggISggLS1jb3VudCApICkge1xuXHRcdFx0XHRcdGRlZmVyLnJlc29sdmVXaXRoKCBlbGVtZW50cywgWyBlbGVtZW50cyBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cblx0XHRpZiAoIHR5cGVvZiB0eXBlICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0b2JqID0gdHlwZTtcblx0XHRcdHR5cGUgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblxuXHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0dG1wID0gZGF0YVByaXYuZ2V0KCBlbGVtZW50c1sgaSBdLCB0eXBlICsgXCJxdWV1ZUhvb2tzXCIgKTtcblx0XHRcdGlmICggdG1wICYmIHRtcC5lbXB0eSApIHtcblx0XHRcdFx0Y291bnQrKztcblx0XHRcdFx0dG1wLmVtcHR5LmFkZCggcmVzb2x2ZSApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXNvbHZlKCk7XG5cdFx0cmV0dXJuIGRlZmVyLnByb21pc2UoIG9iaiApO1xuXHR9XG59ICk7XG52YXIgcG51bSA9ICggL1srLV0/KD86XFxkKlxcLnwpXFxkKyg/OltlRV1bKy1dP1xcZCt8KS8gKS5zb3VyY2U7XG5cbnZhciByY3NzTnVtID0gbmV3IFJlZ0V4cCggXCJeKD86KFsrLV0pPXwpKFwiICsgcG51bSArIFwiKShbYS16JV0qKSRcIiwgXCJpXCIgKTtcblxuXG52YXIgY3NzRXhwYW5kID0gWyBcIlRvcFwiLCBcIlJpZ2h0XCIsIFwiQm90dG9tXCIsIFwiTGVmdFwiIF07XG5cbnZhciBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cblxuXG5cdHZhciBpc0F0dGFjaGVkID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKTtcblx0XHR9LFxuXHRcdGNvbXBvc2VkID0geyBjb21wb3NlZDogdHJ1ZSB9O1xuXG5cdC8vIFN1cHBvcnQ6IElFIDkgLSAxMSssIEVkZ2UgMTIgLSAxOCssIGlPUyAxMC4wIC0gMTAuMiBvbmx5XG5cdC8vIENoZWNrIGF0dGFjaG1lbnQgYWNyb3NzIHNoYWRvdyBET00gYm91bmRhcmllcyB3aGVuIHBvc3NpYmxlIChnaC0zNTA0KVxuXHQvLyBTdXBwb3J0OiBpT1MgMTAuMC0xMC4yIG9ubHlcblx0Ly8gRWFybHkgaU9TIDEwIHZlcnNpb25zIHN1cHBvcnQgYGF0dGFjaFNoYWRvd2AgYnV0IG5vdCBgZ2V0Um9vdE5vZGVgLFxuXHQvLyBsZWFkaW5nIHRvIGVycm9ycy4gV2UgbmVlZCB0byBjaGVjayBmb3IgYGdldFJvb3ROb2RlYC5cblx0aWYgKCBkb2N1bWVudEVsZW1lbnQuZ2V0Um9vdE5vZGUgKSB7XG5cdFx0aXNBdHRhY2hlZCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICkgfHxcblx0XHRcdFx0ZWxlbS5nZXRSb290Tm9kZSggY29tcG9zZWQgKSA9PT0gZWxlbS5vd25lckRvY3VtZW50O1xuXHRcdH07XG5cdH1cbnZhciBpc0hpZGRlbldpdGhpblRyZWUgPSBmdW5jdGlvbiggZWxlbSwgZWwgKSB7XG5cblx0XHQvLyBpc0hpZGRlbldpdGhpblRyZWUgbWlnaHQgYmUgY2FsbGVkIGZyb20galF1ZXJ5I2ZpbHRlciBmdW5jdGlvbjtcblx0XHQvLyBpbiB0aGF0IGNhc2UsIGVsZW1lbnQgd2lsbCBiZSBzZWNvbmQgYXJndW1lbnRcblx0XHRlbGVtID0gZWwgfHwgZWxlbTtcblxuXHRcdC8vIElubGluZSBzdHlsZSB0cnVtcHMgYWxsXG5cdFx0cmV0dXJuIGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gXCJub25lXCIgfHxcblx0XHRcdGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gXCJcIiAmJlxuXG5cdFx0XHQvLyBPdGhlcndpc2UsIGNoZWNrIGNvbXB1dGVkIHN0eWxlXG5cdFx0XHQvLyBTdXBwb3J0OiBGaXJlZm94IDw9NDMgLSA0NVxuXHRcdFx0Ly8gRGlzY29ubmVjdGVkIGVsZW1lbnRzIGNhbiBoYXZlIGNvbXB1dGVkIGRpc3BsYXk6IG5vbmUsIHNvIGZpcnN0IGNvbmZpcm0gdGhhdCBlbGVtIGlzXG5cdFx0XHQvLyBpbiB0aGUgZG9jdW1lbnQuXG5cdFx0XHRpc0F0dGFjaGVkKCBlbGVtICkgJiZcblxuXHRcdFx0alF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKSA9PT0gXCJub25lXCI7XG5cdH07XG5cblxuXG5mdW5jdGlvbiBhZGp1c3RDU1MoIGVsZW0sIHByb3AsIHZhbHVlUGFydHMsIHR3ZWVuICkge1xuXHR2YXIgYWRqdXN0ZWQsIHNjYWxlLFxuXHRcdG1heEl0ZXJhdGlvbnMgPSAyMCxcblx0XHRjdXJyZW50VmFsdWUgPSB0d2VlbiA/XG5cdFx0XHRmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuIHR3ZWVuLmN1cigpO1xuXHRcdFx0fSA6XG5cdFx0XHRmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuIGpRdWVyeS5jc3MoIGVsZW0sIHByb3AsIFwiXCIgKTtcblx0XHRcdH0sXG5cdFx0aW5pdGlhbCA9IGN1cnJlbnRWYWx1ZSgpLFxuXHRcdHVuaXQgPSB2YWx1ZVBhcnRzICYmIHZhbHVlUGFydHNbIDMgXSB8fCAoIGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSA/IFwiXCIgOiBcInB4XCIgKSxcblxuXHRcdC8vIFN0YXJ0aW5nIHZhbHVlIGNvbXB1dGF0aW9uIGlzIHJlcXVpcmVkIGZvciBwb3RlbnRpYWwgdW5pdCBtaXNtYXRjaGVzXG5cdFx0aW5pdGlhbEluVW5pdCA9IGVsZW0ubm9kZVR5cGUgJiZcblx0XHRcdCggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdIHx8IHVuaXQgIT09IFwicHhcIiAmJiAraW5pdGlhbCApICYmXG5cdFx0XHRyY3NzTnVtLmV4ZWMoIGpRdWVyeS5jc3MoIGVsZW0sIHByb3AgKSApO1xuXG5cdGlmICggaW5pdGlhbEluVW5pdCAmJiBpbml0aWFsSW5Vbml0WyAzIF0gIT09IHVuaXQgKSB7XG5cblx0XHQvLyBTdXBwb3J0OiBGaXJlZm94IDw9NTRcblx0XHQvLyBIYWx2ZSB0aGUgaXRlcmF0aW9uIHRhcmdldCB2YWx1ZSB0byBwcmV2ZW50IGludGVyZmVyZW5jZSBmcm9tIENTUyB1cHBlciBib3VuZHMgKGdoLTIxNDQpXG5cdFx0aW5pdGlhbCA9IGluaXRpYWwgLyAyO1xuXG5cdFx0Ly8gVHJ1c3QgdW5pdHMgcmVwb3J0ZWQgYnkgalF1ZXJ5LmNzc1xuXHRcdHVuaXQgPSB1bml0IHx8IGluaXRpYWxJblVuaXRbIDMgXTtcblxuXHRcdC8vIEl0ZXJhdGl2ZWx5IGFwcHJveGltYXRlIGZyb20gYSBub256ZXJvIHN0YXJ0aW5nIHBvaW50XG5cdFx0aW5pdGlhbEluVW5pdCA9ICtpbml0aWFsIHx8IDE7XG5cblx0XHR3aGlsZSAoIG1heEl0ZXJhdGlvbnMtLSApIHtcblxuXHRcdFx0Ly8gRXZhbHVhdGUgYW5kIHVwZGF0ZSBvdXIgYmVzdCBndWVzcyAoZG91YmxpbmcgZ3Vlc3NlcyB0aGF0IHplcm8gb3V0KS5cblx0XHRcdC8vIEZpbmlzaCBpZiB0aGUgc2NhbGUgZXF1YWxzIG9yIGNyb3NzZXMgMSAobWFraW5nIHRoZSBvbGQqbmV3IHByb2R1Y3Qgbm9uLXBvc2l0aXZlKS5cblx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCwgaW5pdGlhbEluVW5pdCArIHVuaXQgKTtcblx0XHRcdGlmICggKCAxIC0gc2NhbGUgKSAqICggMSAtICggc2NhbGUgPSBjdXJyZW50VmFsdWUoKSAvIGluaXRpYWwgfHwgMC41ICkgKSA8PSAwICkge1xuXHRcdFx0XHRtYXhJdGVyYXRpb25zID0gMDtcblx0XHRcdH1cblx0XHRcdGluaXRpYWxJblVuaXQgPSBpbml0aWFsSW5Vbml0IC8gc2NhbGU7XG5cblx0XHR9XG5cblx0XHRpbml0aWFsSW5Vbml0ID0gaW5pdGlhbEluVW5pdCAqIDI7XG5cdFx0alF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9wLCBpbml0aWFsSW5Vbml0ICsgdW5pdCApO1xuXG5cdFx0Ly8gTWFrZSBzdXJlIHdlIHVwZGF0ZSB0aGUgdHdlZW4gcHJvcGVydGllcyBsYXRlciBvblxuXHRcdHZhbHVlUGFydHMgPSB2YWx1ZVBhcnRzIHx8IFtdO1xuXHR9XG5cblx0aWYgKCB2YWx1ZVBhcnRzICkge1xuXHRcdGluaXRpYWxJblVuaXQgPSAraW5pdGlhbEluVW5pdCB8fCAraW5pdGlhbCB8fCAwO1xuXG5cdFx0Ly8gQXBwbHkgcmVsYXRpdmUgb2Zmc2V0ICgrPS8tPSkgaWYgc3BlY2lmaWVkXG5cdFx0YWRqdXN0ZWQgPSB2YWx1ZVBhcnRzWyAxIF0gP1xuXHRcdFx0aW5pdGlhbEluVW5pdCArICggdmFsdWVQYXJ0c1sgMSBdICsgMSApICogdmFsdWVQYXJ0c1sgMiBdIDpcblx0XHRcdCt2YWx1ZVBhcnRzWyAyIF07XG5cdFx0aWYgKCB0d2VlbiApIHtcblx0XHRcdHR3ZWVuLnVuaXQgPSB1bml0O1xuXHRcdFx0dHdlZW4uc3RhcnQgPSBpbml0aWFsSW5Vbml0O1xuXHRcdFx0dHdlZW4uZW5kID0gYWRqdXN0ZWQ7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBhZGp1c3RlZDtcbn1cblxuXG52YXIgZGVmYXVsdERpc3BsYXlNYXAgPSB7fTtcblxuZnVuY3Rpb24gZ2V0RGVmYXVsdERpc3BsYXkoIGVsZW0gKSB7XG5cdHZhciB0ZW1wLFxuXHRcdGRvYyA9IGVsZW0ub3duZXJEb2N1bWVudCxcblx0XHRub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWUsXG5cdFx0ZGlzcGxheSA9IGRlZmF1bHREaXNwbGF5TWFwWyBub2RlTmFtZSBdO1xuXG5cdGlmICggZGlzcGxheSApIHtcblx0XHRyZXR1cm4gZGlzcGxheTtcblx0fVxuXG5cdHRlbXAgPSBkb2MuYm9keS5hcHBlbmRDaGlsZCggZG9jLmNyZWF0ZUVsZW1lbnQoIG5vZGVOYW1lICkgKTtcblx0ZGlzcGxheSA9IGpRdWVyeS5jc3MoIHRlbXAsIFwiZGlzcGxheVwiICk7XG5cblx0dGVtcC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCB0ZW1wICk7XG5cblx0aWYgKCBkaXNwbGF5ID09PSBcIm5vbmVcIiApIHtcblx0XHRkaXNwbGF5ID0gXCJibG9ja1wiO1xuXHR9XG5cdGRlZmF1bHREaXNwbGF5TWFwWyBub2RlTmFtZSBdID0gZGlzcGxheTtcblxuXHRyZXR1cm4gZGlzcGxheTtcbn1cblxuZnVuY3Rpb24gc2hvd0hpZGUoIGVsZW1lbnRzLCBzaG93ICkge1xuXHR2YXIgZGlzcGxheSwgZWxlbSxcblx0XHR2YWx1ZXMgPSBbXSxcblx0XHRpbmRleCA9IDAsXG5cdFx0bGVuZ3RoID0gZWxlbWVudHMubGVuZ3RoO1xuXG5cdC8vIERldGVybWluZSBuZXcgZGlzcGxheSB2YWx1ZSBmb3IgZWxlbWVudHMgdGhhdCBuZWVkIHRvIGNoYW5nZVxuXHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdGVsZW0gPSBlbGVtZW50c1sgaW5kZXggXTtcblx0XHRpZiAoICFlbGVtLnN0eWxlICkge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0ZGlzcGxheSA9IGVsZW0uc3R5bGUuZGlzcGxheTtcblx0XHRpZiAoIHNob3cgKSB7XG5cblx0XHRcdC8vIFNpbmNlIHdlIGZvcmNlIHZpc2liaWxpdHkgdXBvbiBjYXNjYWRlLWhpZGRlbiBlbGVtZW50cywgYW4gaW1tZWRpYXRlIChhbmQgc2xvdylcblx0XHRcdC8vIGNoZWNrIGlzIHJlcXVpcmVkIGluIHRoaXMgZmlyc3QgbG9vcCB1bmxlc3Mgd2UgaGF2ZSBhIG5vbmVtcHR5IGRpc3BsYXkgdmFsdWUgKGVpdGhlclxuXHRcdFx0Ly8gaW5saW5lIG9yIGFib3V0LXRvLWJlLXJlc3RvcmVkKVxuXHRcdFx0aWYgKCBkaXNwbGF5ID09PSBcIm5vbmVcIiApIHtcblx0XHRcdFx0dmFsdWVzWyBpbmRleCBdID0gZGF0YVByaXYuZ2V0KCBlbGVtLCBcImRpc3BsYXlcIiApIHx8IG51bGw7XG5cdFx0XHRcdGlmICggIXZhbHVlc1sgaW5kZXggXSApIHtcblx0XHRcdFx0XHRlbGVtLnN0eWxlLmRpc3BsYXkgPSBcIlwiO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoIGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gXCJcIiAmJiBpc0hpZGRlbldpdGhpblRyZWUoIGVsZW0gKSApIHtcblx0XHRcdFx0dmFsdWVzWyBpbmRleCBdID0gZ2V0RGVmYXVsdERpc3BsYXkoIGVsZW0gKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKCBkaXNwbGF5ICE9PSBcIm5vbmVcIiApIHtcblx0XHRcdFx0dmFsdWVzWyBpbmRleCBdID0gXCJub25lXCI7XG5cblx0XHRcdFx0Ly8gUmVtZW1iZXIgd2hhdCB3ZSdyZSBvdmVyd3JpdGluZ1xuXHRcdFx0XHRkYXRhUHJpdi5zZXQoIGVsZW0sIFwiZGlzcGxheVwiLCBkaXNwbGF5ICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gU2V0IHRoZSBkaXNwbGF5IG9mIHRoZSBlbGVtZW50cyBpbiBhIHNlY29uZCBsb29wIHRvIGF2b2lkIGNvbnN0YW50IHJlZmxvd1xuXHRmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdGlmICggdmFsdWVzWyBpbmRleCBdICE9IG51bGwgKSB7XG5cdFx0XHRlbGVtZW50c1sgaW5kZXggXS5zdHlsZS5kaXNwbGF5ID0gdmFsdWVzWyBpbmRleCBdO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBlbGVtZW50cztcbn1cblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRzaG93OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gc2hvd0hpZGUoIHRoaXMsIHRydWUgKTtcblx0fSxcblx0aGlkZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHNob3dIaWRlKCB0aGlzICk7XG5cdH0sXG5cdHRvZ2dsZTogZnVuY3Rpb24oIHN0YXRlICkge1xuXHRcdGlmICggdHlwZW9mIHN0YXRlID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRcdHJldHVybiBzdGF0ZSA/IHRoaXMuc2hvdygpIDogdGhpcy5oaWRlKCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoIGlzSGlkZGVuV2l0aGluVHJlZSggdGhpcyApICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5zaG93KCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5oaWRlKCk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9XG59ICk7XG52YXIgcmNoZWNrYWJsZVR5cGUgPSAoIC9eKD86Y2hlY2tib3h8cmFkaW8pJC9pICk7XG5cbnZhciBydGFnTmFtZSA9ICggLzwoW2Etel1bXlxcL1xcMD5cXHgyMFxcdFxcclxcblxcZl0qKS9pICk7XG5cbnZhciByc2NyaXB0VHlwZSA9ICggL14kfF5tb2R1bGUkfFxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaSApO1xuXG5cblxuKCBmdW5jdGlvbigpIHtcblx0dmFyIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLFxuXHRcdGRpdiA9IGZyYWdtZW50LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICkgKSxcblx0XHRpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiaW5wdXRcIiApO1xuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIC0gNC4zIG9ubHlcblx0Ly8gQ2hlY2sgc3RhdGUgbG9zdCBpZiB0aGUgbmFtZSBpcyBzZXQgKHRyYWMtMTEyMTcpXG5cdC8vIFN1cHBvcnQ6IFdpbmRvd3MgV2ViIEFwcHMgKFdXQSlcblx0Ly8gYG5hbWVgIGFuZCBgdHlwZWAgbXVzdCB1c2UgLnNldEF0dHJpYnV0ZSBmb3IgV1dBICh0cmFjLTE0OTAxKVxuXHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwidHlwZVwiLCBcInJhZGlvXCIgKTtcblx0aW5wdXQuc2V0QXR0cmlidXRlKCBcImNoZWNrZWRcIiwgXCJjaGVja2VkXCIgKTtcblx0aW5wdXQuc2V0QXR0cmlidXRlKCBcIm5hbWVcIiwgXCJ0XCIgKTtcblxuXHRkaXYuYXBwZW5kQ2hpbGQoIGlucHV0ICk7XG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMSBvbmx5XG5cdC8vIE9sZGVyIFdlYktpdCBkb2Vzbid0IGNsb25lIGNoZWNrZWQgc3RhdGUgY29ycmVjdGx5IGluIGZyYWdtZW50c1xuXHRzdXBwb3J0LmNoZWNrQ2xvbmUgPSBkaXYuY2xvbmVOb2RlKCB0cnVlICkuY2xvbmVOb2RlKCB0cnVlICkubGFzdENoaWxkLmNoZWNrZWQ7XG5cblx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG5cdC8vIE1ha2Ugc3VyZSB0ZXh0YXJlYSAoYW5kIGNoZWNrYm94KSBkZWZhdWx0VmFsdWUgaXMgcHJvcGVybHkgY2xvbmVkXG5cdGRpdi5pbm5lckhUTUwgPSBcIjx0ZXh0YXJlYT54PC90ZXh0YXJlYT5cIjtcblx0c3VwcG9ydC5ub0Nsb25lQ2hlY2tlZCA9ICEhZGl2LmNsb25lTm9kZSggdHJ1ZSApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWU7XG5cblx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0Ly8gSUUgPD05IHJlcGxhY2VzIDxvcHRpb24+IHRhZ3Mgd2l0aCB0aGVpciBjb250ZW50cyB3aGVuIGluc2VydGVkIG91dHNpZGUgb2Zcblx0Ly8gdGhlIHNlbGVjdCBlbGVtZW50LlxuXHRkaXYuaW5uZXJIVE1MID0gXCI8b3B0aW9uPjwvb3B0aW9uPlwiO1xuXHRzdXBwb3J0Lm9wdGlvbiA9ICEhZGl2Lmxhc3RDaGlsZDtcbn0gKSgpO1xuXG5cbi8vIFdlIGhhdmUgdG8gY2xvc2UgdGhlc2UgdGFncyB0byBzdXBwb3J0IFhIVE1MICh0cmFjLTEzMjAwKVxudmFyIHdyYXBNYXAgPSB7XG5cblx0Ly8gWEhUTUwgcGFyc2VycyBkbyBub3QgbWFnaWNhbGx5IGluc2VydCBlbGVtZW50cyBpbiB0aGVcblx0Ly8gc2FtZSB3YXkgdGhhdCB0YWcgc291cCBwYXJzZXJzIGRvLiBTbyB3ZSBjYW5ub3Qgc2hvcnRlblxuXHQvLyB0aGlzIGJ5IG9taXR0aW5nIDx0Ym9keT4gb3Igb3RoZXIgcmVxdWlyZWQgZWxlbWVudHMuXG5cdHRoZWFkOiBbIDEsIFwiPHRhYmxlPlwiLCBcIjwvdGFibGU+XCIgXSxcblx0Y29sOiBbIDIsIFwiPHRhYmxlPjxjb2xncm91cD5cIiwgXCI8L2NvbGdyb3VwPjwvdGFibGU+XCIgXSxcblx0dHI6IFsgMiwgXCI8dGFibGU+PHRib2R5PlwiLCBcIjwvdGJvZHk+PC90YWJsZT5cIiBdLFxuXHR0ZDogWyAzLCBcIjx0YWJsZT48dGJvZHk+PHRyPlwiLCBcIjwvdHI+PC90Ym9keT48L3RhYmxlPlwiIF0sXG5cblx0X2RlZmF1bHQ6IFsgMCwgXCJcIiwgXCJcIiBdXG59O1xuXG53cmFwTWFwLnRib2R5ID0gd3JhcE1hcC50Zm9vdCA9IHdyYXBNYXAuY29sZ3JvdXAgPSB3cmFwTWFwLmNhcHRpb24gPSB3cmFwTWFwLnRoZWFkO1xud3JhcE1hcC50aCA9IHdyYXBNYXAudGQ7XG5cbi8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG5pZiAoICFzdXBwb3J0Lm9wdGlvbiApIHtcblx0d3JhcE1hcC5vcHRncm91cCA9IHdyYXBNYXAub3B0aW9uID0gWyAxLCBcIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz5cIiwgXCI8L3NlbGVjdD5cIiBdO1xufVxuXG5cbmZ1bmN0aW9uIGdldEFsbCggY29udGV4dCwgdGFnICkge1xuXG5cdC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHlcblx0Ly8gVXNlIHR5cGVvZiB0byBhdm9pZCB6ZXJvLWFyZ3VtZW50IG1ldGhvZCBpbnZvY2F0aW9uIG9uIGhvc3Qgb2JqZWN0cyAodHJhYy0xNTE1MSlcblx0dmFyIHJldDtcblxuXHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSBcInVuZGVmaW5lZFwiICkge1xuXHRcdHJldCA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyB8fCBcIipcIiApO1xuXG5cdH0gZWxzZSBpZiAoIHR5cGVvZiBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwgIT09IFwidW5kZWZpbmVkXCIgKSB7XG5cdFx0cmV0ID0gY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCB0YWcgfHwgXCIqXCIgKTtcblxuXHR9IGVsc2Uge1xuXHRcdHJldCA9IFtdO1xuXHR9XG5cblx0aWYgKCB0YWcgPT09IHVuZGVmaW5lZCB8fCB0YWcgJiYgbm9kZU5hbWUoIGNvbnRleHQsIHRhZyApICkge1xuXHRcdHJldHVybiBqUXVlcnkubWVyZ2UoIFsgY29udGV4dCBdLCByZXQgKTtcblx0fVxuXG5cdHJldHVybiByZXQ7XG59XG5cblxuLy8gTWFyayBzY3JpcHRzIGFzIGhhdmluZyBhbHJlYWR5IGJlZW4gZXZhbHVhdGVkXG5mdW5jdGlvbiBzZXRHbG9iYWxFdmFsKCBlbGVtcywgcmVmRWxlbWVudHMgKSB7XG5cdHZhciBpID0gMCxcblx0XHRsID0gZWxlbXMubGVuZ3RoO1xuXG5cdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRkYXRhUHJpdi5zZXQoXG5cdFx0XHRlbGVtc1sgaSBdLFxuXHRcdFx0XCJnbG9iYWxFdmFsXCIsXG5cdFx0XHQhcmVmRWxlbWVudHMgfHwgZGF0YVByaXYuZ2V0KCByZWZFbGVtZW50c1sgaSBdLCBcImdsb2JhbEV2YWxcIiApXG5cdFx0KTtcblx0fVxufVxuXG5cbnZhciByaHRtbCA9IC88fCYjP1xcdys7LztcblxuZnVuY3Rpb24gYnVpbGRGcmFnbWVudCggZWxlbXMsIGNvbnRleHQsIHNjcmlwdHMsIHNlbGVjdGlvbiwgaWdub3JlZCApIHtcblx0dmFyIGVsZW0sIHRtcCwgdGFnLCB3cmFwLCBhdHRhY2hlZCwgaixcblx0XHRmcmFnbWVudCA9IGNvbnRleHQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLFxuXHRcdG5vZGVzID0gW10sXG5cdFx0aSA9IDAsXG5cdFx0bCA9IGVsZW1zLmxlbmd0aDtcblxuXHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0ZWxlbSA9IGVsZW1zWyBpIF07XG5cblx0XHRpZiAoIGVsZW0gfHwgZWxlbSA9PT0gMCApIHtcblxuXHRcdFx0Ly8gQWRkIG5vZGVzIGRpcmVjdGx5XG5cdFx0XHRpZiAoIHRvVHlwZSggZWxlbSApID09PSBcIm9iamVjdFwiICkge1xuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seVxuXHRcdFx0XHQvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdFx0XHRcdGpRdWVyeS5tZXJnZSggbm9kZXMsIGVsZW0ubm9kZVR5cGUgPyBbIGVsZW0gXSA6IGVsZW0gKTtcblxuXHRcdFx0Ly8gQ29udmVydCBub24taHRtbCBpbnRvIGEgdGV4dCBub2RlXG5cdFx0XHR9IGVsc2UgaWYgKCAhcmh0bWwudGVzdCggZWxlbSApICkge1xuXHRcdFx0XHRub2Rlcy5wdXNoKCBjb250ZXh0LmNyZWF0ZVRleHROb2RlKCBlbGVtICkgKTtcblxuXHRcdFx0Ly8gQ29udmVydCBodG1sIGludG8gRE9NIG5vZGVzXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0bXAgPSB0bXAgfHwgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoIGNvbnRleHQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApICk7XG5cblx0XHRcdFx0Ly8gRGVzZXJpYWxpemUgYSBzdGFuZGFyZCByZXByZXNlbnRhdGlvblxuXHRcdFx0XHR0YWcgPSAoIHJ0YWdOYW1lLmV4ZWMoIGVsZW0gKSB8fCBbIFwiXCIsIFwiXCIgXSApWyAxIF0udG9Mb3dlckNhc2UoKTtcblx0XHRcdFx0d3JhcCA9IHdyYXBNYXBbIHRhZyBdIHx8IHdyYXBNYXAuX2RlZmF1bHQ7XG5cdFx0XHRcdHRtcC5pbm5lckhUTUwgPSB3cmFwWyAxIF0gKyBqUXVlcnkuaHRtbFByZWZpbHRlciggZWxlbSApICsgd3JhcFsgMiBdO1xuXG5cdFx0XHRcdC8vIERlc2NlbmQgdGhyb3VnaCB3cmFwcGVycyB0byB0aGUgcmlnaHQgY29udGVudFxuXHRcdFx0XHRqID0gd3JhcFsgMCBdO1xuXHRcdFx0XHR3aGlsZSAoIGotLSApIHtcblx0XHRcdFx0XHR0bXAgPSB0bXAubGFzdENoaWxkO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5XG5cdFx0XHRcdC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXRcblx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCBub2RlcywgdG1wLmNoaWxkTm9kZXMgKTtcblxuXHRcdFx0XHQvLyBSZW1lbWJlciB0aGUgdG9wLWxldmVsIGNvbnRhaW5lclxuXHRcdFx0XHR0bXAgPSBmcmFnbWVudC5maXJzdENoaWxkO1xuXG5cdFx0XHRcdC8vIEVuc3VyZSB0aGUgY3JlYXRlZCBub2RlcyBhcmUgb3JwaGFuZWQgKHRyYWMtMTIzOTIpXG5cdFx0XHRcdHRtcC50ZXh0Q29udGVudCA9IFwiXCI7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmVtb3ZlIHdyYXBwZXIgZnJvbSBmcmFnbWVudFxuXHRmcmFnbWVudC50ZXh0Q29udGVudCA9IFwiXCI7XG5cblx0aSA9IDA7XG5cdHdoaWxlICggKCBlbGVtID0gbm9kZXNbIGkrKyBdICkgKSB7XG5cblx0XHQvLyBTa2lwIGVsZW1lbnRzIGFscmVhZHkgaW4gdGhlIGNvbnRleHQgY29sbGVjdGlvbiAodHJhYy00MDg3KVxuXHRcdGlmICggc2VsZWN0aW9uICYmIGpRdWVyeS5pbkFycmF5KCBlbGVtLCBzZWxlY3Rpb24gKSA+IC0xICkge1xuXHRcdFx0aWYgKCBpZ25vcmVkICkge1xuXHRcdFx0XHRpZ25vcmVkLnB1c2goIGVsZW0gKTtcblx0XHRcdH1cblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdGF0dGFjaGVkID0gaXNBdHRhY2hlZCggZWxlbSApO1xuXG5cdFx0Ly8gQXBwZW5kIHRvIGZyYWdtZW50XG5cdFx0dG1wID0gZ2V0QWxsKCBmcmFnbWVudC5hcHBlbmRDaGlsZCggZWxlbSApLCBcInNjcmlwdFwiICk7XG5cblx0XHQvLyBQcmVzZXJ2ZSBzY3JpcHQgZXZhbHVhdGlvbiBoaXN0b3J5XG5cdFx0aWYgKCBhdHRhY2hlZCApIHtcblx0XHRcdHNldEdsb2JhbEV2YWwoIHRtcCApO1xuXHRcdH1cblxuXHRcdC8vIENhcHR1cmUgZXhlY3V0YWJsZXNcblx0XHRpZiAoIHNjcmlwdHMgKSB7XG5cdFx0XHRqID0gMDtcblx0XHRcdHdoaWxlICggKCBlbGVtID0gdG1wWyBqKysgXSApICkge1xuXHRcdFx0XHRpZiAoIHJzY3JpcHRUeXBlLnRlc3QoIGVsZW0udHlwZSB8fCBcIlwiICkgKSB7XG5cdFx0XHRcdFx0c2NyaXB0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZnJhZ21lbnQ7XG59XG5cblxudmFyIHJ0eXBlbmFtZXNwYWNlID0gL14oW14uXSopKD86XFwuKC4rKXwpLztcblxuZnVuY3Rpb24gcmV0dXJuVHJ1ZSgpIHtcblx0cmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIHJldHVybkZhbHNlKCkge1xuXHRyZXR1cm4gZmFsc2U7XG59XG5cbi8vIFN1cHBvcnQ6IElFIDw9OSAtIDExK1xuLy8gZm9jdXMoKSBhbmQgYmx1cigpIGFyZSBhc3luY2hyb25vdXMsIGV4Y2VwdCB3aGVuIHRoZXkgYXJlIG5vLW9wLlxuLy8gU28gZXhwZWN0IGZvY3VzIHRvIGJlIHN5bmNocm9ub3VzIHdoZW4gdGhlIGVsZW1lbnQgaXMgYWxyZWFkeSBhY3RpdmUsXG4vLyBhbmQgYmx1ciB0byBiZSBzeW5jaHJvbm91cyB3aGVuIHRoZSBlbGVtZW50IGlzIG5vdCBhbHJlYWR5IGFjdGl2ZS5cbi8vIChmb2N1cyBhbmQgYmx1ciBhcmUgYWx3YXlzIHN5bmNocm9ub3VzIGluIG90aGVyIHN1cHBvcnRlZCBicm93c2Vycyxcbi8vIHRoaXMganVzdCBkZWZpbmVzIHdoZW4gd2UgY2FuIGNvdW50IG9uIGl0KS5cbmZ1bmN0aW9uIGV4cGVjdFN5bmMoIGVsZW0sIHR5cGUgKSB7XG5cdHJldHVybiAoIGVsZW0gPT09IHNhZmVBY3RpdmVFbGVtZW50KCkgKSA9PT0gKCB0eXBlID09PSBcImZvY3VzXCIgKTtcbn1cblxuLy8gU3VwcG9ydDogSUUgPD05IG9ubHlcbi8vIEFjY2Vzc2luZyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGNhbiB0aHJvdyB1bmV4cGVjdGVkbHlcbi8vIGh0dHBzOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMzM5M1xuZnVuY3Rpb24gc2FmZUFjdGl2ZUVsZW1lbnQoKSB7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG5cdH0gY2F0Y2ggKCBlcnIgKSB7IH1cbn1cblxuZnVuY3Rpb24gb24oIGVsZW0sIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4sIG9uZSApIHtcblx0dmFyIG9yaWdGbiwgdHlwZTtcblxuXHQvLyBUeXBlcyBjYW4gYmUgYSBtYXAgb2YgdHlwZXMvaGFuZGxlcnNcblx0aWYgKCB0eXBlb2YgdHlwZXMgPT09IFwib2JqZWN0XCIgKSB7XG5cblx0XHQvLyAoIHR5cGVzLU9iamVjdCwgc2VsZWN0b3IsIGRhdGEgKVxuXHRcdGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSBcInN0cmluZ1wiICkge1xuXG5cdFx0XHQvLyAoIHR5cGVzLU9iamVjdCwgZGF0YSApXG5cdFx0XHRkYXRhID0gZGF0YSB8fCBzZWxlY3Rvcjtcblx0XHRcdHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRmb3IgKCB0eXBlIGluIHR5cGVzICkge1xuXHRcdFx0b24oIGVsZW0sIHR5cGUsIHNlbGVjdG9yLCBkYXRhLCB0eXBlc1sgdHlwZSBdLCBvbmUgKTtcblx0XHR9XG5cdFx0cmV0dXJuIGVsZW07XG5cdH1cblxuXHRpZiAoIGRhdGEgPT0gbnVsbCAmJiBmbiA9PSBudWxsICkge1xuXG5cdFx0Ly8gKCB0eXBlcywgZm4gKVxuXHRcdGZuID0gc2VsZWN0b3I7XG5cdFx0ZGF0YSA9IHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHR9IGVsc2UgaWYgKCBmbiA9PSBudWxsICkge1xuXHRcdGlmICggdHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiICkge1xuXG5cdFx0XHQvLyAoIHR5cGVzLCBzZWxlY3RvciwgZm4gKVxuXHRcdFx0Zm4gPSBkYXRhO1xuXHRcdFx0ZGF0YSA9IHVuZGVmaW5lZDtcblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyAoIHR5cGVzLCBkYXRhLCBmbiApXG5cdFx0XHRmbiA9IGRhdGE7XG5cdFx0XHRkYXRhID0gc2VsZWN0b3I7XG5cdFx0XHRzZWxlY3RvciA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblx0aWYgKCBmbiA9PT0gZmFsc2UgKSB7XG5cdFx0Zm4gPSByZXR1cm5GYWxzZTtcblx0fSBlbHNlIGlmICggIWZuICkge1xuXHRcdHJldHVybiBlbGVtO1xuXHR9XG5cblx0aWYgKCBvbmUgPT09IDEgKSB7XG5cdFx0b3JpZ0ZuID0gZm47XG5cdFx0Zm4gPSBmdW5jdGlvbiggZXZlbnQgKSB7XG5cblx0XHRcdC8vIENhbiB1c2UgYW4gZW1wdHkgc2V0LCBzaW5jZSBldmVudCBjb250YWlucyB0aGUgaW5mb1xuXHRcdFx0alF1ZXJ5KCkub2ZmKCBldmVudCApO1xuXHRcdFx0cmV0dXJuIG9yaWdGbi5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0fTtcblxuXHRcdC8vIFVzZSBzYW1lIGd1aWQgc28gY2FsbGVyIGNhbiByZW1vdmUgdXNpbmcgb3JpZ0ZuXG5cdFx0Zm4uZ3VpZCA9IG9yaWdGbi5ndWlkIHx8ICggb3JpZ0ZuLmd1aWQgPSBqUXVlcnkuZ3VpZCsrICk7XG5cdH1cblx0cmV0dXJuIGVsZW0uZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0alF1ZXJ5LmV2ZW50LmFkZCggdGhpcywgdHlwZXMsIGZuLCBkYXRhLCBzZWxlY3RvciApO1xuXHR9ICk7XG59XG5cbi8qXG4gKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBtYW5hZ2luZyBldmVudHMgLS0gbm90IHBhcnQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuXG4gKiBQcm9wcyB0byBEZWFuIEVkd2FyZHMnIGFkZEV2ZW50IGxpYnJhcnkgZm9yIG1hbnkgb2YgdGhlIGlkZWFzLlxuICovXG5qUXVlcnkuZXZlbnQgPSB7XG5cblx0Z2xvYmFsOiB7fSxcblxuXHRhZGQ6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxlciwgZGF0YSwgc2VsZWN0b3IgKSB7XG5cblx0XHR2YXIgaGFuZGxlT2JqSW4sIGV2ZW50SGFuZGxlLCB0bXAsXG5cdFx0XHRldmVudHMsIHQsIGhhbmRsZU9iaixcblx0XHRcdHNwZWNpYWwsIGhhbmRsZXJzLCB0eXBlLCBuYW1lc3BhY2VzLCBvcmlnVHlwZSxcblx0XHRcdGVsZW1EYXRhID0gZGF0YVByaXYuZ2V0KCBlbGVtICk7XG5cblx0XHQvLyBPbmx5IGF0dGFjaCBldmVudHMgdG8gb2JqZWN0cyB0aGF0IGFjY2VwdCBkYXRhXG5cdFx0aWYgKCAhYWNjZXB0RGF0YSggZWxlbSApICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIENhbGxlciBjYW4gcGFzcyBpbiBhbiBvYmplY3Qgb2YgY3VzdG9tIGRhdGEgaW4gbGlldSBvZiB0aGUgaGFuZGxlclxuXHRcdGlmICggaGFuZGxlci5oYW5kbGVyICkge1xuXHRcdFx0aGFuZGxlT2JqSW4gPSBoYW5kbGVyO1xuXHRcdFx0aGFuZGxlciA9IGhhbmRsZU9iakluLmhhbmRsZXI7XG5cdFx0XHRzZWxlY3RvciA9IGhhbmRsZU9iakluLnNlbGVjdG9yO1xuXHRcdH1cblxuXHRcdC8vIEVuc3VyZSB0aGF0IGludmFsaWQgc2VsZWN0b3JzIHRocm93IGV4Y2VwdGlvbnMgYXQgYXR0YWNoIHRpbWVcblx0XHQvLyBFdmFsdWF0ZSBhZ2FpbnN0IGRvY3VtZW50RWxlbWVudCBpbiBjYXNlIGVsZW0gaXMgYSBub24tZWxlbWVudCBub2RlIChlLmcuLCBkb2N1bWVudClcblx0XHRpZiAoIHNlbGVjdG9yICkge1xuXHRcdFx0alF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKCBkb2N1bWVudEVsZW1lbnQsIHNlbGVjdG9yICk7XG5cdFx0fVxuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgdGhlIGhhbmRsZXIgaGFzIGEgdW5pcXVlIElELCB1c2VkIHRvIGZpbmQvcmVtb3ZlIGl0IGxhdGVyXG5cdFx0aWYgKCAhaGFuZGxlci5ndWlkICkge1xuXHRcdFx0aGFuZGxlci5ndWlkID0galF1ZXJ5Lmd1aWQrKztcblx0XHR9XG5cblx0XHQvLyBJbml0IHRoZSBlbGVtZW50J3MgZXZlbnQgc3RydWN0dXJlIGFuZCBtYWluIGhhbmRsZXIsIGlmIHRoaXMgaXMgdGhlIGZpcnN0XG5cdFx0aWYgKCAhKCBldmVudHMgPSBlbGVtRGF0YS5ldmVudHMgKSApIHtcblx0XHRcdGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cyA9IE9iamVjdC5jcmVhdGUoIG51bGwgKTtcblx0XHR9XG5cdFx0aWYgKCAhKCBldmVudEhhbmRsZSA9IGVsZW1EYXRhLmhhbmRsZSApICkge1xuXHRcdFx0ZXZlbnRIYW5kbGUgPSBlbGVtRGF0YS5oYW5kbGUgPSBmdW5jdGlvbiggZSApIHtcblxuXHRcdFx0XHQvLyBEaXNjYXJkIHRoZSBzZWNvbmQgZXZlbnQgb2YgYSBqUXVlcnkuZXZlbnQudHJpZ2dlcigpIGFuZFxuXHRcdFx0XHQvLyB3aGVuIGFuIGV2ZW50IGlzIGNhbGxlZCBhZnRlciBhIHBhZ2UgaGFzIHVubG9hZGVkXG5cdFx0XHRcdHJldHVybiB0eXBlb2YgalF1ZXJ5ICE9PSBcInVuZGVmaW5lZFwiICYmIGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgIT09IGUudHlwZSA/XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LmRpc3BhdGNoLmFwcGx5KCBlbGVtLCBhcmd1bWVudHMgKSA6IHVuZGVmaW5lZDtcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0Ly8gSGFuZGxlIG11bHRpcGxlIGV2ZW50cyBzZXBhcmF0ZWQgYnkgYSBzcGFjZVxuXHRcdHR5cGVzID0gKCB0eXBlcyB8fCBcIlwiICkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbIFwiXCIgXTtcblx0XHR0ID0gdHlwZXMubGVuZ3RoO1xuXHRcdHdoaWxlICggdC0tICkge1xuXHRcdFx0dG1wID0gcnR5cGVuYW1lc3BhY2UuZXhlYyggdHlwZXNbIHQgXSApIHx8IFtdO1xuXHRcdFx0dHlwZSA9IG9yaWdUeXBlID0gdG1wWyAxIF07XG5cdFx0XHRuYW1lc3BhY2VzID0gKCB0bXBbIDIgXSB8fCBcIlwiICkuc3BsaXQoIFwiLlwiICkuc29ydCgpO1xuXG5cdFx0XHQvLyBUaGVyZSAqbXVzdCogYmUgYSB0eXBlLCBubyBhdHRhY2hpbmcgbmFtZXNwYWNlLW9ubHkgaGFuZGxlcnNcblx0XHRcdGlmICggIXR5cGUgKSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiBldmVudCBjaGFuZ2VzIGl0cyB0eXBlLCB1c2UgdGhlIHNwZWNpYWwgZXZlbnQgaGFuZGxlcnMgZm9yIHRoZSBjaGFuZ2VkIHR5cGVcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xuXG5cdFx0XHQvLyBJZiBzZWxlY3RvciBkZWZpbmVkLCBkZXRlcm1pbmUgc3BlY2lhbCBldmVudCBhcGkgdHlwZSwgb3RoZXJ3aXNlIGdpdmVuIHR5cGVcblx0XHRcdHR5cGUgPSAoIHNlbGVjdG9yID8gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgOiBzcGVjaWFsLmJpbmRUeXBlICkgfHwgdHlwZTtcblxuXHRcdFx0Ly8gVXBkYXRlIHNwZWNpYWwgYmFzZWQgb24gbmV3bHkgcmVzZXQgdHlwZVxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cblx0XHRcdC8vIGhhbmRsZU9iaiBpcyBwYXNzZWQgdG8gYWxsIGV2ZW50IGhhbmRsZXJzXG5cdFx0XHRoYW5kbGVPYmogPSBqUXVlcnkuZXh0ZW5kKCB7XG5cdFx0XHRcdHR5cGU6IHR5cGUsXG5cdFx0XHRcdG9yaWdUeXBlOiBvcmlnVHlwZSxcblx0XHRcdFx0ZGF0YTogZGF0YSxcblx0XHRcdFx0aGFuZGxlcjogaGFuZGxlcixcblx0XHRcdFx0Z3VpZDogaGFuZGxlci5ndWlkLFxuXHRcdFx0XHRzZWxlY3Rvcjogc2VsZWN0b3IsXG5cdFx0XHRcdG5lZWRzQ29udGV4dDogc2VsZWN0b3IgJiYgalF1ZXJ5LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9yICksXG5cdFx0XHRcdG5hbWVzcGFjZTogbmFtZXNwYWNlcy5qb2luKCBcIi5cIiApXG5cdFx0XHR9LCBoYW5kbGVPYmpJbiApO1xuXG5cdFx0XHQvLyBJbml0IHRoZSBldmVudCBoYW5kbGVyIHF1ZXVlIGlmIHdlJ3JlIHRoZSBmaXJzdFxuXHRcdFx0aWYgKCAhKCBoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdICkgKSB7XG5cdFx0XHRcdGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0gPSBbXTtcblx0XHRcdFx0aGFuZGxlcnMuZGVsZWdhdGVDb3VudCA9IDA7XG5cblx0XHRcdFx0Ly8gT25seSB1c2UgYWRkRXZlbnRMaXN0ZW5lciBpZiB0aGUgc3BlY2lhbCBldmVudHMgaGFuZGxlciByZXR1cm5zIGZhbHNlXG5cdFx0XHRcdGlmICggIXNwZWNpYWwuc2V0dXAgfHxcblx0XHRcdFx0XHRzcGVjaWFsLnNldHVwLmNhbGwoIGVsZW0sIGRhdGEsIG5hbWVzcGFjZXMsIGV2ZW50SGFuZGxlICkgPT09IGZhbHNlICkge1xuXG5cdFx0XHRcdFx0aWYgKCBlbGVtLmFkZEV2ZW50TGlzdGVuZXIgKSB7XG5cdFx0XHRcdFx0XHRlbGVtLmFkZEV2ZW50TGlzdGVuZXIoIHR5cGUsIGV2ZW50SGFuZGxlICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmICggc3BlY2lhbC5hZGQgKSB7XG5cdFx0XHRcdHNwZWNpYWwuYWRkLmNhbGwoIGVsZW0sIGhhbmRsZU9iaiApO1xuXG5cdFx0XHRcdGlmICggIWhhbmRsZU9iai5oYW5kbGVyLmd1aWQgKSB7XG5cdFx0XHRcdFx0aGFuZGxlT2JqLmhhbmRsZXIuZ3VpZCA9IGhhbmRsZXIuZ3VpZDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBBZGQgdG8gdGhlIGVsZW1lbnQncyBoYW5kbGVyIGxpc3QsIGRlbGVnYXRlcyBpbiBmcm9udFxuXHRcdFx0aWYgKCBzZWxlY3RvciApIHtcblx0XHRcdFx0aGFuZGxlcnMuc3BsaWNlKCBoYW5kbGVycy5kZWxlZ2F0ZUNvdW50KyssIDAsIGhhbmRsZU9iaiApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aGFuZGxlcnMucHVzaCggaGFuZGxlT2JqICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEtlZXAgdHJhY2sgb2Ygd2hpY2ggZXZlbnRzIGhhdmUgZXZlciBiZWVuIHVzZWQsIGZvciBldmVudCBvcHRpbWl6YXRpb25cblx0XHRcdGpRdWVyeS5ldmVudC5nbG9iYWxbIHR5cGUgXSA9IHRydWU7XG5cdFx0fVxuXG5cdH0sXG5cblx0Ly8gRGV0YWNoIGFuIGV2ZW50IG9yIHNldCBvZiBldmVudHMgZnJvbSBhbiBlbGVtZW50XG5cdHJlbW92ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGVzLCBoYW5kbGVyLCBzZWxlY3RvciwgbWFwcGVkVHlwZXMgKSB7XG5cblx0XHR2YXIgaiwgb3JpZ0NvdW50LCB0bXAsXG5cdFx0XHRldmVudHMsIHQsIGhhbmRsZU9iaixcblx0XHRcdHNwZWNpYWwsIGhhbmRsZXJzLCB0eXBlLCBuYW1lc3BhY2VzLCBvcmlnVHlwZSxcblx0XHRcdGVsZW1EYXRhID0gZGF0YVByaXYuaGFzRGF0YSggZWxlbSApICYmIGRhdGFQcml2LmdldCggZWxlbSApO1xuXG5cdFx0aWYgKCAhZWxlbURhdGEgfHwgISggZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzICkgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gT25jZSBmb3IgZWFjaCB0eXBlLm5hbWVzcGFjZSBpbiB0eXBlczsgdHlwZSBtYXkgYmUgb21pdHRlZFxuXHRcdHR5cGVzID0gKCB0eXBlcyB8fCBcIlwiICkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbIFwiXCIgXTtcblx0XHR0ID0gdHlwZXMubGVuZ3RoO1xuXHRcdHdoaWxlICggdC0tICkge1xuXHRcdFx0dG1wID0gcnR5cGVuYW1lc3BhY2UuZXhlYyggdHlwZXNbIHQgXSApIHx8IFtdO1xuXHRcdFx0dHlwZSA9IG9yaWdUeXBlID0gdG1wWyAxIF07XG5cdFx0XHRuYW1lc3BhY2VzID0gKCB0bXBbIDIgXSB8fCBcIlwiICkuc3BsaXQoIFwiLlwiICkuc29ydCgpO1xuXG5cdFx0XHQvLyBVbmJpbmQgYWxsIGV2ZW50cyAob24gdGhpcyBuYW1lc3BhY2UsIGlmIHByb3ZpZGVkKSBmb3IgdGhlIGVsZW1lbnRcblx0XHRcdGlmICggIXR5cGUgKSB7XG5cdFx0XHRcdGZvciAoIHR5cGUgaW4gZXZlbnRzICkge1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5yZW1vdmUoIGVsZW0sIHR5cGUgKyB0eXBlc1sgdCBdLCBoYW5kbGVyLCBzZWxlY3RvciwgdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTtcblx0XHRcdHR5cGUgPSAoIHNlbGVjdG9yID8gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgOiBzcGVjaWFsLmJpbmRUeXBlICkgfHwgdHlwZTtcblx0XHRcdGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0gfHwgW107XG5cdFx0XHR0bXAgPSB0bXBbIDIgXSAmJlxuXHRcdFx0XHRuZXcgUmVnRXhwKCBcIihefFxcXFwuKVwiICsgbmFtZXNwYWNlcy5qb2luKCBcIlxcXFwuKD86LipcXFxcLnwpXCIgKSArIFwiKFxcXFwufCQpXCIgKTtcblxuXHRcdFx0Ly8gUmVtb3ZlIG1hdGNoaW5nIGV2ZW50c1xuXHRcdFx0b3JpZ0NvdW50ID0gaiA9IGhhbmRsZXJzLmxlbmd0aDtcblx0XHRcdHdoaWxlICggai0tICkge1xuXHRcdFx0XHRoYW5kbGVPYmogPSBoYW5kbGVyc1sgaiBdO1xuXG5cdFx0XHRcdGlmICggKCBtYXBwZWRUeXBlcyB8fCBvcmlnVHlwZSA9PT0gaGFuZGxlT2JqLm9yaWdUeXBlICkgJiZcblx0XHRcdFx0XHQoICFoYW5kbGVyIHx8IGhhbmRsZXIuZ3VpZCA9PT0gaGFuZGxlT2JqLmd1aWQgKSAmJlxuXHRcdFx0XHRcdCggIXRtcCB8fCB0bXAudGVzdCggaGFuZGxlT2JqLm5hbWVzcGFjZSApICkgJiZcblx0XHRcdFx0XHQoICFzZWxlY3RvciB8fCBzZWxlY3RvciA9PT0gaGFuZGxlT2JqLnNlbGVjdG9yIHx8XG5cdFx0XHRcdFx0XHRzZWxlY3RvciA9PT0gXCIqKlwiICYmIGhhbmRsZU9iai5zZWxlY3RvciApICkge1xuXHRcdFx0XHRcdGhhbmRsZXJzLnNwbGljZSggaiwgMSApO1xuXG5cdFx0XHRcdFx0aWYgKCBoYW5kbGVPYmouc2VsZWN0b3IgKSB7XG5cdFx0XHRcdFx0XHRoYW5kbGVycy5kZWxlZ2F0ZUNvdW50LS07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICggc3BlY2lhbC5yZW1vdmUgKSB7XG5cdFx0XHRcdFx0XHRzcGVjaWFsLnJlbW92ZS5jYWxsKCBlbGVtLCBoYW5kbGVPYmogKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gUmVtb3ZlIGdlbmVyaWMgZXZlbnQgaGFuZGxlciBpZiB3ZSByZW1vdmVkIHNvbWV0aGluZyBhbmQgbm8gbW9yZSBoYW5kbGVycyBleGlzdFxuXHRcdFx0Ly8gKGF2b2lkcyBwb3RlbnRpYWwgZm9yIGVuZGxlc3MgcmVjdXJzaW9uIGR1cmluZyByZW1vdmFsIG9mIHNwZWNpYWwgZXZlbnQgaGFuZGxlcnMpXG5cdFx0XHRpZiAoIG9yaWdDb3VudCAmJiAhaGFuZGxlcnMubGVuZ3RoICkge1xuXHRcdFx0XHRpZiAoICFzcGVjaWFsLnRlYXJkb3duIHx8XG5cdFx0XHRcdFx0c3BlY2lhbC50ZWFyZG93bi5jYWxsKCBlbGVtLCBuYW1lc3BhY2VzLCBlbGVtRGF0YS5oYW5kbGUgKSA9PT0gZmFsc2UgKSB7XG5cblx0XHRcdFx0XHRqUXVlcnkucmVtb3ZlRXZlbnQoIGVsZW0sIHR5cGUsIGVsZW1EYXRhLmhhbmRsZSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0ZGVsZXRlIGV2ZW50c1sgdHlwZSBdO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFJlbW92ZSBkYXRhIGFuZCB0aGUgZXhwYW5kbyBpZiBpdCdzIG5vIGxvbmdlciB1c2VkXG5cdFx0aWYgKCBqUXVlcnkuaXNFbXB0eU9iamVjdCggZXZlbnRzICkgKSB7XG5cdFx0XHRkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIFwiaGFuZGxlIGV2ZW50c1wiICk7XG5cdFx0fVxuXHR9LFxuXG5cdGRpc3BhdGNoOiBmdW5jdGlvbiggbmF0aXZlRXZlbnQgKSB7XG5cblx0XHR2YXIgaSwgaiwgcmV0LCBtYXRjaGVkLCBoYW5kbGVPYmosIGhhbmRsZXJRdWV1ZSxcblx0XHRcdGFyZ3MgPSBuZXcgQXJyYXkoIGFyZ3VtZW50cy5sZW5ndGggKSxcblxuXHRcdFx0Ly8gTWFrZSBhIHdyaXRhYmxlIGpRdWVyeS5FdmVudCBmcm9tIHRoZSBuYXRpdmUgZXZlbnQgb2JqZWN0XG5cdFx0XHRldmVudCA9IGpRdWVyeS5ldmVudC5maXgoIG5hdGl2ZUV2ZW50ICksXG5cblx0XHRcdGhhbmRsZXJzID0gKFxuXHRcdFx0XHRkYXRhUHJpdi5nZXQoIHRoaXMsIFwiZXZlbnRzXCIgKSB8fCBPYmplY3QuY3JlYXRlKCBudWxsIClcblx0XHRcdClbIGV2ZW50LnR5cGUgXSB8fCBbXSxcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgZXZlbnQudHlwZSBdIHx8IHt9O1xuXG5cdFx0Ly8gVXNlIHRoZSBmaXgtZWQgalF1ZXJ5LkV2ZW50IHJhdGhlciB0aGFuIHRoZSAocmVhZC1vbmx5KSBuYXRpdmUgZXZlbnRcblx0XHRhcmdzWyAwIF0gPSBldmVudDtcblxuXHRcdGZvciAoIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkge1xuXHRcdFx0YXJnc1sgaSBdID0gYXJndW1lbnRzWyBpIF07XG5cdFx0fVxuXG5cdFx0ZXZlbnQuZGVsZWdhdGVUYXJnZXQgPSB0aGlzO1xuXG5cdFx0Ly8gQ2FsbCB0aGUgcHJlRGlzcGF0Y2ggaG9vayBmb3IgdGhlIG1hcHBlZCB0eXBlLCBhbmQgbGV0IGl0IGJhaWwgaWYgZGVzaXJlZFxuXHRcdGlmICggc3BlY2lhbC5wcmVEaXNwYXRjaCAmJiBzcGVjaWFsLnByZURpc3BhdGNoLmNhbGwoIHRoaXMsIGV2ZW50ICkgPT09IGZhbHNlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIERldGVybWluZSBoYW5kbGVyc1xuXHRcdGhhbmRsZXJRdWV1ZSA9IGpRdWVyeS5ldmVudC5oYW5kbGVycy5jYWxsKCB0aGlzLCBldmVudCwgaGFuZGxlcnMgKTtcblxuXHRcdC8vIFJ1biBkZWxlZ2F0ZXMgZmlyc3Q7IHRoZXkgbWF5IHdhbnQgdG8gc3RvcCBwcm9wYWdhdGlvbiBiZW5lYXRoIHVzXG5cdFx0aSA9IDA7XG5cdFx0d2hpbGUgKCAoIG1hdGNoZWQgPSBoYW5kbGVyUXVldWVbIGkrKyBdICkgJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cdFx0XHRldmVudC5jdXJyZW50VGFyZ2V0ID0gbWF0Y2hlZC5lbGVtO1xuXG5cdFx0XHRqID0gMDtcblx0XHRcdHdoaWxlICggKCBoYW5kbGVPYmogPSBtYXRjaGVkLmhhbmRsZXJzWyBqKysgXSApICYmXG5cdFx0XHRcdCFldmVudC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXG5cdFx0XHRcdC8vIElmIHRoZSBldmVudCBpcyBuYW1lc3BhY2VkLCB0aGVuIGVhY2ggaGFuZGxlciBpcyBvbmx5IGludm9rZWQgaWYgaXQgaXNcblx0XHRcdFx0Ly8gc3BlY2lhbGx5IHVuaXZlcnNhbCBvciBpdHMgbmFtZXNwYWNlcyBhcmUgYSBzdXBlcnNldCBvZiB0aGUgZXZlbnQncy5cblx0XHRcdFx0aWYgKCAhZXZlbnQucm5hbWVzcGFjZSB8fCBoYW5kbGVPYmoubmFtZXNwYWNlID09PSBmYWxzZSB8fFxuXHRcdFx0XHRcdGV2ZW50LnJuYW1lc3BhY2UudGVzdCggaGFuZGxlT2JqLm5hbWVzcGFjZSApICkge1xuXG5cdFx0XHRcdFx0ZXZlbnQuaGFuZGxlT2JqID0gaGFuZGxlT2JqO1xuXHRcdFx0XHRcdGV2ZW50LmRhdGEgPSBoYW5kbGVPYmouZGF0YTtcblxuXHRcdFx0XHRcdHJldCA9ICggKCBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgaGFuZGxlT2JqLm9yaWdUeXBlIF0gfHwge30gKS5oYW5kbGUgfHxcblx0XHRcdFx0XHRcdGhhbmRsZU9iai5oYW5kbGVyICkuYXBwbHkoIG1hdGNoZWQuZWxlbSwgYXJncyApO1xuXG5cdFx0XHRcdFx0aWYgKCByZXQgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRcdGlmICggKCBldmVudC5yZXN1bHQgPSByZXQgKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENhbGwgdGhlIHBvc3REaXNwYXRjaCBob29rIGZvciB0aGUgbWFwcGVkIHR5cGVcblx0XHRpZiAoIHNwZWNpYWwucG9zdERpc3BhdGNoICkge1xuXHRcdFx0c3BlY2lhbC5wb3N0RGlzcGF0Y2guY2FsbCggdGhpcywgZXZlbnQgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZXZlbnQucmVzdWx0O1xuXHR9LFxuXG5cdGhhbmRsZXJzOiBmdW5jdGlvbiggZXZlbnQsIGhhbmRsZXJzICkge1xuXHRcdHZhciBpLCBoYW5kbGVPYmosIHNlbCwgbWF0Y2hlZEhhbmRsZXJzLCBtYXRjaGVkU2VsZWN0b3JzLFxuXHRcdFx0aGFuZGxlclF1ZXVlID0gW10sXG5cdFx0XHRkZWxlZ2F0ZUNvdW50ID0gaGFuZGxlcnMuZGVsZWdhdGVDb3VudCxcblx0XHRcdGN1ciA9IGV2ZW50LnRhcmdldDtcblxuXHRcdC8vIEZpbmQgZGVsZWdhdGUgaGFuZGxlcnNcblx0XHRpZiAoIGRlbGVnYXRlQ291bnQgJiZcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05XG5cdFx0XHQvLyBCbGFjay1ob2xlIFNWRyA8dXNlPiBpbnN0YW5jZSB0cmVlcyAodHJhYy0xMzE4MClcblx0XHRcdGN1ci5ub2RlVHlwZSAmJlxuXG5cdFx0XHQvLyBTdXBwb3J0OiBGaXJlZm94IDw9NDJcblx0XHRcdC8vIFN1cHByZXNzIHNwZWMtdmlvbGF0aW5nIGNsaWNrcyBpbmRpY2F0aW5nIGEgbm9uLXByaW1hcnkgcG9pbnRlciBidXR0b24gKHRyYWMtMzg2MSlcblx0XHRcdC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvI2V2ZW50LXR5cGUtY2xpY2tcblx0XHRcdC8vIFN1cHBvcnQ6IElFIDExIG9ubHlcblx0XHRcdC8vIC4uLmJ1dCBub3QgYXJyb3cga2V5IFwiY2xpY2tzXCIgb2YgcmFkaW8gaW5wdXRzLCB3aGljaCBjYW4gaGF2ZSBgYnV0dG9uYCAtMSAoZ2gtMjM0Mylcblx0XHRcdCEoIGV2ZW50LnR5cGUgPT09IFwiY2xpY2tcIiAmJiBldmVudC5idXR0b24gPj0gMSApICkge1xuXG5cdFx0XHRmb3IgKCA7IGN1ciAhPT0gdGhpczsgY3VyID0gY3VyLnBhcmVudE5vZGUgfHwgdGhpcyApIHtcblxuXHRcdFx0XHQvLyBEb24ndCBjaGVjayBub24tZWxlbWVudHMgKHRyYWMtMTMyMDgpXG5cdFx0XHRcdC8vIERvbid0IHByb2Nlc3MgY2xpY2tzIG9uIGRpc2FibGVkIGVsZW1lbnRzICh0cmFjLTY5MTEsIHRyYWMtODE2NSwgdHJhYy0xMTM4MiwgdHJhYy0xMTc2NClcblx0XHRcdFx0aWYgKCBjdXIubm9kZVR5cGUgPT09IDEgJiYgISggZXZlbnQudHlwZSA9PT0gXCJjbGlja1wiICYmIGN1ci5kaXNhYmxlZCA9PT0gdHJ1ZSApICkge1xuXHRcdFx0XHRcdG1hdGNoZWRIYW5kbGVycyA9IFtdO1xuXHRcdFx0XHRcdG1hdGNoZWRTZWxlY3RvcnMgPSB7fTtcblx0XHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IGRlbGVnYXRlQ291bnQ7IGkrKyApIHtcblx0XHRcdFx0XHRcdGhhbmRsZU9iaiA9IGhhbmRsZXJzWyBpIF07XG5cblx0XHRcdFx0XHRcdC8vIERvbid0IGNvbmZsaWN0IHdpdGggT2JqZWN0LnByb3RvdHlwZSBwcm9wZXJ0aWVzICh0cmFjLTEzMjAzKVxuXHRcdFx0XHRcdFx0c2VsID0gaGFuZGxlT2JqLnNlbGVjdG9yICsgXCIgXCI7XG5cblx0XHRcdFx0XHRcdGlmICggbWF0Y2hlZFNlbGVjdG9yc1sgc2VsIF0gPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRcdFx0bWF0Y2hlZFNlbGVjdG9yc1sgc2VsIF0gPSBoYW5kbGVPYmoubmVlZHNDb250ZXh0ID9cblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkoIHNlbCwgdGhpcyApLmluZGV4KCBjdXIgKSA+IC0xIDpcblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkuZmluZCggc2VsLCB0aGlzLCBudWxsLCBbIGN1ciBdICkubGVuZ3RoO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVkU2VsZWN0b3JzWyBzZWwgXSApIHtcblx0XHRcdFx0XHRcdFx0bWF0Y2hlZEhhbmRsZXJzLnB1c2goIGhhbmRsZU9iaiApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIG1hdGNoZWRIYW5kbGVycy5sZW5ndGggKSB7XG5cdFx0XHRcdFx0XHRoYW5kbGVyUXVldWUucHVzaCggeyBlbGVtOiBjdXIsIGhhbmRsZXJzOiBtYXRjaGVkSGFuZGxlcnMgfSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEFkZCB0aGUgcmVtYWluaW5nIChkaXJlY3RseS1ib3VuZCkgaGFuZGxlcnNcblx0XHRjdXIgPSB0aGlzO1xuXHRcdGlmICggZGVsZWdhdGVDb3VudCA8IGhhbmRsZXJzLmxlbmd0aCApIHtcblx0XHRcdGhhbmRsZXJRdWV1ZS5wdXNoKCB7IGVsZW06IGN1ciwgaGFuZGxlcnM6IGhhbmRsZXJzLnNsaWNlKCBkZWxlZ2F0ZUNvdW50ICkgfSApO1xuXHRcdH1cblxuXHRcdHJldHVybiBoYW5kbGVyUXVldWU7XG5cdH0sXG5cblx0YWRkUHJvcDogZnVuY3Rpb24oIG5hbWUsIGhvb2sgKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KCBqUXVlcnkuRXZlbnQucHJvdG90eXBlLCBuYW1lLCB7XG5cdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuXHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXG5cdFx0XHRnZXQ6IGlzRnVuY3Rpb24oIGhvb2sgKSA/XG5cdFx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGlmICggdGhpcy5vcmlnaW5hbEV2ZW50ICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGhvb2soIHRoaXMub3JpZ2luYWxFdmVudCApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSA6XG5cdFx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGlmICggdGhpcy5vcmlnaW5hbEV2ZW50ICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFsgbmFtZSBdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblxuXHRcdFx0c2V0OiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggdGhpcywgbmFtZSwge1xuXHRcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHdyaXRhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHZhbHVlOiB2YWx1ZVxuXHRcdFx0XHR9ICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGZpeDogZnVuY3Rpb24oIG9yaWdpbmFsRXZlbnQgKSB7XG5cdFx0cmV0dXJuIG9yaWdpbmFsRXZlbnRbIGpRdWVyeS5leHBhbmRvIF0gP1xuXHRcdFx0b3JpZ2luYWxFdmVudCA6XG5cdFx0XHRuZXcgalF1ZXJ5LkV2ZW50KCBvcmlnaW5hbEV2ZW50ICk7XG5cdH0sXG5cblx0c3BlY2lhbDoge1xuXHRcdGxvYWQ6IHtcblxuXHRcdFx0Ly8gUHJldmVudCB0cmlnZ2VyZWQgaW1hZ2UubG9hZCBldmVudHMgZnJvbSBidWJibGluZyB0byB3aW5kb3cubG9hZFxuXHRcdFx0bm9CdWJibGU6IHRydWVcblx0XHR9LFxuXHRcdGNsaWNrOiB7XG5cblx0XHRcdC8vIFV0aWxpemUgbmF0aXZlIGV2ZW50IHRvIGVuc3VyZSBjb3JyZWN0IHN0YXRlIGZvciBjaGVja2FibGUgaW5wdXRzXG5cdFx0XHRzZXR1cDogZnVuY3Rpb24oIGRhdGEgKSB7XG5cblx0XHRcdFx0Ly8gRm9yIG11dHVhbCBjb21wcmVzc2liaWxpdHkgd2l0aCBfZGVmYXVsdCwgcmVwbGFjZSBgdGhpc2AgYWNjZXNzIHdpdGggYSBsb2NhbCB2YXIuXG5cdFx0XHRcdC8vIGB8fCBkYXRhYCBpcyBkZWFkIGNvZGUgbWVhbnQgb25seSB0byBwcmVzZXJ2ZSB0aGUgdmFyaWFibGUgdGhyb3VnaCBtaW5pZmljYXRpb24uXG5cdFx0XHRcdHZhciBlbCA9IHRoaXMgfHwgZGF0YTtcblxuXHRcdFx0XHQvLyBDbGFpbSB0aGUgZmlyc3QgaGFuZGxlclxuXHRcdFx0XHRpZiAoIHJjaGVja2FibGVUeXBlLnRlc3QoIGVsLnR5cGUgKSAmJlxuXHRcdFx0XHRcdGVsLmNsaWNrICYmIG5vZGVOYW1lKCBlbCwgXCJpbnB1dFwiICkgKSB7XG5cblx0XHRcdFx0XHQvLyBkYXRhUHJpdi5zZXQoIGVsLCBcImNsaWNrXCIsIC4uLiApXG5cdFx0XHRcdFx0bGV2ZXJhZ2VOYXRpdmUoIGVsLCBcImNsaWNrXCIsIHJldHVyblRydWUgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFJldHVybiBmYWxzZSB0byBhbGxvdyBub3JtYWwgcHJvY2Vzc2luZyBpbiB0aGUgY2FsbGVyXG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0sXG5cdFx0XHR0cmlnZ2VyOiBmdW5jdGlvbiggZGF0YSApIHtcblxuXHRcdFx0XHQvLyBGb3IgbXV0dWFsIGNvbXByZXNzaWJpbGl0eSB3aXRoIF9kZWZhdWx0LCByZXBsYWNlIGB0aGlzYCBhY2Nlc3Mgd2l0aCBhIGxvY2FsIHZhci5cblx0XHRcdFx0Ly8gYHx8IGRhdGFgIGlzIGRlYWQgY29kZSBtZWFudCBvbmx5IHRvIHByZXNlcnZlIHRoZSB2YXJpYWJsZSB0aHJvdWdoIG1pbmlmaWNhdGlvbi5cblx0XHRcdFx0dmFyIGVsID0gdGhpcyB8fCBkYXRhO1xuXG5cdFx0XHRcdC8vIEZvcmNlIHNldHVwIGJlZm9yZSB0cmlnZ2VyaW5nIGEgY2xpY2tcblx0XHRcdFx0aWYgKCByY2hlY2thYmxlVHlwZS50ZXN0KCBlbC50eXBlICkgJiZcblx0XHRcdFx0XHRlbC5jbGljayAmJiBub2RlTmFtZSggZWwsIFwiaW5wdXRcIiApICkge1xuXG5cdFx0XHRcdFx0bGV2ZXJhZ2VOYXRpdmUoIGVsLCBcImNsaWNrXCIgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFJldHVybiBub24tZmFsc2UgdG8gYWxsb3cgbm9ybWFsIGV2ZW50LXBhdGggcHJvcGFnYXRpb25cblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBGb3IgY3Jvc3MtYnJvd3NlciBjb25zaXN0ZW5jeSwgc3VwcHJlc3MgbmF0aXZlIC5jbGljaygpIG9uIGxpbmtzXG5cdFx0XHQvLyBBbHNvIHByZXZlbnQgaXQgaWYgd2UncmUgY3VycmVudGx5IGluc2lkZSBhIGxldmVyYWdlZCBuYXRpdmUtZXZlbnQgc3RhY2tcblx0XHRcdF9kZWZhdWx0OiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRcdHZhciB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG5cdFx0XHRcdHJldHVybiByY2hlY2thYmxlVHlwZS50ZXN0KCB0YXJnZXQudHlwZSApICYmXG5cdFx0XHRcdFx0dGFyZ2V0LmNsaWNrICYmIG5vZGVOYW1lKCB0YXJnZXQsIFwiaW5wdXRcIiApICYmXG5cdFx0XHRcdFx0ZGF0YVByaXYuZ2V0KCB0YXJnZXQsIFwiY2xpY2tcIiApIHx8XG5cdFx0XHRcdFx0bm9kZU5hbWUoIHRhcmdldCwgXCJhXCIgKTtcblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0YmVmb3JldW5sb2FkOiB7XG5cdFx0XHRwb3N0RGlzcGF0Y2g6IGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBGaXJlZm94IDIwK1xuXHRcdFx0XHQvLyBGaXJlZm94IGRvZXNuJ3QgYWxlcnQgaWYgdGhlIHJldHVyblZhbHVlIGZpZWxkIGlzIG5vdCBzZXQuXG5cdFx0XHRcdGlmICggZXZlbnQucmVzdWx0ICE9PSB1bmRlZmluZWQgJiYgZXZlbnQub3JpZ2luYWxFdmVudCApIHtcblx0XHRcdFx0XHRldmVudC5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlID0gZXZlbnQucmVzdWx0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59O1xuXG4vLyBFbnN1cmUgdGhlIHByZXNlbmNlIG9mIGFuIGV2ZW50IGxpc3RlbmVyIHRoYXQgaGFuZGxlcyBtYW51YWxseS10cmlnZ2VyZWRcbi8vIHN5bnRoZXRpYyBldmVudHMgYnkgaW50ZXJydXB0aW5nIHByb2dyZXNzIHVudGlsIHJlaW52b2tlZCBpbiByZXNwb25zZSB0b1xuLy8gKm5hdGl2ZSogZXZlbnRzIHRoYXQgaXQgZmlyZXMgZGlyZWN0bHksIGVuc3VyaW5nIHRoYXQgc3RhdGUgY2hhbmdlcyBoYXZlXG4vLyBhbHJlYWR5IG9jY3VycmVkIGJlZm9yZSBvdGhlciBsaXN0ZW5lcnMgYXJlIGludm9rZWQuXG5mdW5jdGlvbiBsZXZlcmFnZU5hdGl2ZSggZWwsIHR5cGUsIGV4cGVjdFN5bmMgKSB7XG5cblx0Ly8gTWlzc2luZyBleHBlY3RTeW5jIGluZGljYXRlcyBhIHRyaWdnZXIgY2FsbCwgd2hpY2ggbXVzdCBmb3JjZSBzZXR1cCB0aHJvdWdoIGpRdWVyeS5ldmVudC5hZGRcblx0aWYgKCAhZXhwZWN0U3luYyApIHtcblx0XHRpZiAoIGRhdGFQcml2LmdldCggZWwsIHR5cGUgKSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LmFkZCggZWwsIHR5cGUsIHJldHVyblRydWUgKTtcblx0XHR9XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gUmVnaXN0ZXIgdGhlIGNvbnRyb2xsZXIgYXMgYSBzcGVjaWFsIHVuaXZlcnNhbCBoYW5kbGVyIGZvciBhbGwgZXZlbnQgbmFtZXNwYWNlc1xuXHRkYXRhUHJpdi5zZXQoIGVsLCB0eXBlLCBmYWxzZSApO1xuXHRqUXVlcnkuZXZlbnQuYWRkKCBlbCwgdHlwZSwge1xuXHRcdG5hbWVzcGFjZTogZmFsc2UsXG5cdFx0aGFuZGxlcjogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0dmFyIG5vdEFzeW5jLCByZXN1bHQsXG5cdFx0XHRcdHNhdmVkID0gZGF0YVByaXYuZ2V0KCB0aGlzLCB0eXBlICk7XG5cblx0XHRcdGlmICggKCBldmVudC5pc1RyaWdnZXIgJiAxICkgJiYgdGhpc1sgdHlwZSBdICkge1xuXG5cdFx0XHRcdC8vIEludGVycnVwdCBwcm9jZXNzaW5nIG9mIHRoZSBvdXRlciBzeW50aGV0aWMgLnRyaWdnZXIoKWVkIGV2ZW50XG5cdFx0XHRcdC8vIFNhdmVkIGRhdGEgc2hvdWxkIGJlIGZhbHNlIGluIHN1Y2ggY2FzZXMsIGJ1dCBtaWdodCBiZSBhIGxlZnRvdmVyIGNhcHR1cmUgb2JqZWN0XG5cdFx0XHRcdC8vIGZyb20gYW4gYXN5bmMgbmF0aXZlIGhhbmRsZXIgKGdoLTQzNTApXG5cdFx0XHRcdGlmICggIXNhdmVkLmxlbmd0aCApIHtcblxuXHRcdFx0XHRcdC8vIFN0b3JlIGFyZ3VtZW50cyBmb3IgdXNlIHdoZW4gaGFuZGxpbmcgdGhlIGlubmVyIG5hdGl2ZSBldmVudFxuXHRcdFx0XHRcdC8vIFRoZXJlIHdpbGwgYWx3YXlzIGJlIGF0IGxlYXN0IG9uZSBhcmd1bWVudCAoYW4gZXZlbnQgb2JqZWN0KSwgc28gdGhpcyBhcnJheVxuXHRcdFx0XHRcdC8vIHdpbGwgbm90IGJlIGNvbmZ1c2VkIHdpdGggYSBsZWZ0b3ZlciBjYXB0dXJlIG9iamVjdC5cblx0XHRcdFx0XHRzYXZlZCA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRcdGRhdGFQcml2LnNldCggdGhpcywgdHlwZSwgc2F2ZWQgKTtcblxuXHRcdFx0XHRcdC8vIFRyaWdnZXIgdGhlIG5hdGl2ZSBldmVudCBhbmQgY2FwdHVyZSBpdHMgcmVzdWx0XG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTErXG5cdFx0XHRcdFx0Ly8gZm9jdXMoKSBhbmQgYmx1cigpIGFyZSBhc3luY2hyb25vdXNcblx0XHRcdFx0XHRub3RBc3luYyA9IGV4cGVjdFN5bmMoIHRoaXMsIHR5cGUgKTtcblx0XHRcdFx0XHR0aGlzWyB0eXBlIF0oKTtcblx0XHRcdFx0XHRyZXN1bHQgPSBkYXRhUHJpdi5nZXQoIHRoaXMsIHR5cGUgKTtcblx0XHRcdFx0XHRpZiAoIHNhdmVkICE9PSByZXN1bHQgfHwgbm90QXN5bmMgKSB7XG5cdFx0XHRcdFx0XHRkYXRhUHJpdi5zZXQoIHRoaXMsIHR5cGUsIGZhbHNlICk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHJlc3VsdCA9IHt9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIHNhdmVkICE9PSByZXN1bHQgKSB7XG5cblx0XHRcdFx0XHRcdC8vIENhbmNlbCB0aGUgb3V0ZXIgc3ludGhldGljIGV2ZW50XG5cdFx0XHRcdFx0XHRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cblx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IENocm9tZSA4Nitcblx0XHRcdFx0XHRcdC8vIEluIENocm9tZSwgaWYgYW4gZWxlbWVudCBoYXZpbmcgYSBmb2N1c291dCBoYW5kbGVyIGlzIGJsdXJyZWQgYnlcblx0XHRcdFx0XHRcdC8vIGNsaWNraW5nIG91dHNpZGUgb2YgaXQsIGl0IGludm9rZXMgdGhlIGhhbmRsZXIgc3luY2hyb25vdXNseS4gSWZcblx0XHRcdFx0XHRcdC8vIHRoYXQgaGFuZGxlciBjYWxscyBgLnJlbW92ZSgpYCBvbiB0aGUgZWxlbWVudCwgdGhlIGRhdGEgaXMgY2xlYXJlZCxcblx0XHRcdFx0XHRcdC8vIGxlYXZpbmcgYHJlc3VsdGAgdW5kZWZpbmVkLiBXZSBuZWVkIHRvIGd1YXJkIGFnYWluc3QgdGhpcy5cblx0XHRcdFx0XHRcdHJldHVybiByZXN1bHQgJiYgcmVzdWx0LnZhbHVlO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBJZiB0aGlzIGlzIGFuIGlubmVyIHN5bnRoZXRpYyBldmVudCBmb3IgYW4gZXZlbnQgd2l0aCBhIGJ1YmJsaW5nIHN1cnJvZ2F0ZVxuXHRcdFx0XHQvLyAoZm9jdXMgb3IgYmx1ciksIGFzc3VtZSB0aGF0IHRoZSBzdXJyb2dhdGUgYWxyZWFkeSBwcm9wYWdhdGVkIGZyb20gdHJpZ2dlcmluZyB0aGVcblx0XHRcdFx0Ly8gbmF0aXZlIGV2ZW50IGFuZCBwcmV2ZW50IHRoYXQgZnJvbSBoYXBwZW5pbmcgYWdhaW4gaGVyZS5cblx0XHRcdFx0Ly8gVGhpcyB0ZWNobmljYWxseSBnZXRzIHRoZSBvcmRlcmluZyB3cm9uZyB3LnIudC4gdG8gYC50cmlnZ2VyKClgIChpbiB3aGljaCB0aGVcblx0XHRcdFx0Ly8gYnViYmxpbmcgc3Vycm9nYXRlIHByb3BhZ2F0ZXMgKmFmdGVyKiB0aGUgbm9uLWJ1YmJsaW5nIGJhc2UpLCBidXQgdGhhdCBzZWVtc1xuXHRcdFx0XHQvLyBsZXNzIGJhZCB0aGFuIGR1cGxpY2F0aW9uLlxuXHRcdFx0XHR9IGVsc2UgaWYgKCAoIGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge30gKS5kZWxlZ2F0ZVR5cGUgKSB7XG5cdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgdGhpcyBpcyBhIG5hdGl2ZSBldmVudCB0cmlnZ2VyZWQgYWJvdmUsIGV2ZXJ5dGhpbmcgaXMgbm93IGluIG9yZGVyXG5cdFx0XHQvLyBGaXJlIGFuIGlubmVyIHN5bnRoZXRpYyBldmVudCB3aXRoIHRoZSBvcmlnaW5hbCBhcmd1bWVudHNcblx0XHRcdH0gZWxzZSBpZiAoIHNhdmVkLmxlbmd0aCApIHtcblxuXHRcdFx0XHQvLyAuLi5hbmQgY2FwdHVyZSB0aGUgcmVzdWx0XG5cdFx0XHRcdGRhdGFQcml2LnNldCggdGhpcywgdHlwZSwge1xuXHRcdFx0XHRcdHZhbHVlOiBqUXVlcnkuZXZlbnQudHJpZ2dlcihcblxuXHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTErXG5cdFx0XHRcdFx0XHQvLyBFeHRlbmQgd2l0aCB0aGUgcHJvdG90eXBlIHRvIHJlc2V0IHRoZSBhYm92ZSBzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKVxuXHRcdFx0XHRcdFx0alF1ZXJ5LmV4dGVuZCggc2F2ZWRbIDAgXSwgalF1ZXJ5LkV2ZW50LnByb3RvdHlwZSApLFxuXHRcdFx0XHRcdFx0c2F2ZWQuc2xpY2UoIDEgKSxcblx0XHRcdFx0XHRcdHRoaXNcblx0XHRcdFx0XHQpXG5cdFx0XHRcdH0gKTtcblxuXHRcdFx0XHQvLyBBYm9ydCBoYW5kbGluZyBvZiB0aGUgbmF0aXZlIGV2ZW50XG5cdFx0XHRcdGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSApO1xufVxuXG5qUXVlcnkucmVtb3ZlRXZlbnQgPSBmdW5jdGlvbiggZWxlbSwgdHlwZSwgaGFuZGxlICkge1xuXG5cdC8vIFRoaXMgXCJpZlwiIGlzIG5lZWRlZCBmb3IgcGxhaW4gb2JqZWN0c1xuXHRpZiAoIGVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lciApIHtcblx0XHRlbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIoIHR5cGUsIGhhbmRsZSApO1xuXHR9XG59O1xuXG5qUXVlcnkuRXZlbnQgPSBmdW5jdGlvbiggc3JjLCBwcm9wcyApIHtcblxuXHQvLyBBbGxvdyBpbnN0YW50aWF0aW9uIHdpdGhvdXQgdGhlICduZXcnIGtleXdvcmRcblx0aWYgKCAhKCB0aGlzIGluc3RhbmNlb2YgalF1ZXJ5LkV2ZW50ICkgKSB7XG5cdFx0cmV0dXJuIG5ldyBqUXVlcnkuRXZlbnQoIHNyYywgcHJvcHMgKTtcblx0fVxuXG5cdC8vIEV2ZW50IG9iamVjdFxuXHRpZiAoIHNyYyAmJiBzcmMudHlwZSApIHtcblx0XHR0aGlzLm9yaWdpbmFsRXZlbnQgPSBzcmM7XG5cdFx0dGhpcy50eXBlID0gc3JjLnR5cGU7XG5cblx0XHQvLyBFdmVudHMgYnViYmxpbmcgdXAgdGhlIGRvY3VtZW50IG1heSBoYXZlIGJlZW4gbWFya2VkIGFzIHByZXZlbnRlZFxuXHRcdC8vIGJ5IGEgaGFuZGxlciBsb3dlciBkb3duIHRoZSB0cmVlOyByZWZsZWN0IHRoZSBjb3JyZWN0IHZhbHVlLlxuXHRcdHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gc3JjLmRlZmF1bHRQcmV2ZW50ZWQgfHxcblx0XHRcdFx0c3JjLmRlZmF1bHRQcmV2ZW50ZWQgPT09IHVuZGVmaW5lZCAmJlxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD0yLjMgb25seVxuXHRcdFx0XHRzcmMucmV0dXJuVmFsdWUgPT09IGZhbHNlID9cblx0XHRcdHJldHVyblRydWUgOlxuXHRcdFx0cmV0dXJuRmFsc2U7XG5cblx0XHQvLyBDcmVhdGUgdGFyZ2V0IHByb3BlcnRpZXNcblx0XHQvLyBTdXBwb3J0OiBTYWZhcmkgPD02IC0gNyBvbmx5XG5cdFx0Ly8gVGFyZ2V0IHNob3VsZCBub3QgYmUgYSB0ZXh0IG5vZGUgKHRyYWMtNTA0LCB0cmFjLTEzMTQzKVxuXHRcdHRoaXMudGFyZ2V0ID0gKCBzcmMudGFyZ2V0ICYmIHNyYy50YXJnZXQubm9kZVR5cGUgPT09IDMgKSA/XG5cdFx0XHRzcmMudGFyZ2V0LnBhcmVudE5vZGUgOlxuXHRcdFx0c3JjLnRhcmdldDtcblxuXHRcdHRoaXMuY3VycmVudFRhcmdldCA9IHNyYy5jdXJyZW50VGFyZ2V0O1xuXHRcdHRoaXMucmVsYXRlZFRhcmdldCA9IHNyYy5yZWxhdGVkVGFyZ2V0O1xuXG5cdC8vIEV2ZW50IHR5cGVcblx0fSBlbHNlIHtcblx0XHR0aGlzLnR5cGUgPSBzcmM7XG5cdH1cblxuXHQvLyBQdXQgZXhwbGljaXRseSBwcm92aWRlZCBwcm9wZXJ0aWVzIG9udG8gdGhlIGV2ZW50IG9iamVjdFxuXHRpZiAoIHByb3BzICkge1xuXHRcdGpRdWVyeS5leHRlbmQoIHRoaXMsIHByb3BzICk7XG5cdH1cblxuXHQvLyBDcmVhdGUgYSB0aW1lc3RhbXAgaWYgaW5jb21pbmcgZXZlbnQgZG9lc24ndCBoYXZlIG9uZVxuXHR0aGlzLnRpbWVTdGFtcCA9IHNyYyAmJiBzcmMudGltZVN0YW1wIHx8IERhdGUubm93KCk7XG5cblx0Ly8gTWFyayBpdCBhcyBmaXhlZFxuXHR0aGlzWyBqUXVlcnkuZXhwYW5kbyBdID0gdHJ1ZTtcbn07XG5cbi8vIGpRdWVyeS5FdmVudCBpcyBiYXNlZCBvbiBET00zIEV2ZW50cyBhcyBzcGVjaWZpZWQgYnkgdGhlIEVDTUFTY3JpcHQgTGFuZ3VhZ2UgQmluZGluZ1xuLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSLzIwMDMvV0QtRE9NLUxldmVsLTMtRXZlbnRzLTIwMDMwMzMxL2VjbWEtc2NyaXB0LWJpbmRpbmcuaHRtbFxualF1ZXJ5LkV2ZW50LnByb3RvdHlwZSA9IHtcblx0Y29uc3RydWN0b3I6IGpRdWVyeS5FdmVudCxcblx0aXNEZWZhdWx0UHJldmVudGVkOiByZXR1cm5GYWxzZSxcblx0aXNQcm9wYWdhdGlvblN0b3BwZWQ6IHJldHVybkZhbHNlLFxuXHRpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UsXG5cdGlzU2ltdWxhdGVkOiBmYWxzZSxcblxuXHRwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7XG5cblx0XHR0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IHJldHVyblRydWU7XG5cblx0XHRpZiAoIGUgJiYgIXRoaXMuaXNTaW11bGF0ZWQgKSB7XG5cdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0fVxuXHR9LFxuXHRzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50O1xuXG5cdFx0dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7XG5cblx0XHRpZiAoIGUgJiYgIXRoaXMuaXNTaW11bGF0ZWQgKSB7XG5cdFx0XHRlLnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdH1cblx0fSxcblx0c3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDtcblxuXHRcdHRoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQgPSByZXR1cm5UcnVlO1xuXG5cdFx0aWYgKCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICkge1xuXHRcdFx0ZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcblx0XHR9XG5cblx0XHR0aGlzLnN0b3BQcm9wYWdhdGlvbigpO1xuXHR9XG59O1xuXG4vLyBJbmNsdWRlcyBhbGwgY29tbW9uIGV2ZW50IHByb3BzIGluY2x1ZGluZyBLZXlFdmVudCBhbmQgTW91c2VFdmVudCBzcGVjaWZpYyBwcm9wc1xualF1ZXJ5LmVhY2goIHtcblx0YWx0S2V5OiB0cnVlLFxuXHRidWJibGVzOiB0cnVlLFxuXHRjYW5jZWxhYmxlOiB0cnVlLFxuXHRjaGFuZ2VkVG91Y2hlczogdHJ1ZSxcblx0Y3RybEtleTogdHJ1ZSxcblx0ZGV0YWlsOiB0cnVlLFxuXHRldmVudFBoYXNlOiB0cnVlLFxuXHRtZXRhS2V5OiB0cnVlLFxuXHRwYWdlWDogdHJ1ZSxcblx0cGFnZVk6IHRydWUsXG5cdHNoaWZ0S2V5OiB0cnVlLFxuXHR2aWV3OiB0cnVlLFxuXHRcImNoYXJcIjogdHJ1ZSxcblx0Y29kZTogdHJ1ZSxcblx0Y2hhckNvZGU6IHRydWUsXG5cdGtleTogdHJ1ZSxcblx0a2V5Q29kZTogdHJ1ZSxcblx0YnV0dG9uOiB0cnVlLFxuXHRidXR0b25zOiB0cnVlLFxuXHRjbGllbnRYOiB0cnVlLFxuXHRjbGllbnRZOiB0cnVlLFxuXHRvZmZzZXRYOiB0cnVlLFxuXHRvZmZzZXRZOiB0cnVlLFxuXHRwb2ludGVySWQ6IHRydWUsXG5cdHBvaW50ZXJUeXBlOiB0cnVlLFxuXHRzY3JlZW5YOiB0cnVlLFxuXHRzY3JlZW5ZOiB0cnVlLFxuXHR0YXJnZXRUb3VjaGVzOiB0cnVlLFxuXHR0b0VsZW1lbnQ6IHRydWUsXG5cdHRvdWNoZXM6IHRydWUsXG5cdHdoaWNoOiB0cnVlXG59LCBqUXVlcnkuZXZlbnQuYWRkUHJvcCApO1xuXG5qUXVlcnkuZWFjaCggeyBmb2N1czogXCJmb2N1c2luXCIsIGJsdXI6IFwiZm9jdXNvdXRcIiB9LCBmdW5jdGlvbiggdHlwZSwgZGVsZWdhdGVUeXBlICkge1xuXHRqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdID0ge1xuXG5cdFx0Ly8gVXRpbGl6ZSBuYXRpdmUgZXZlbnQgaWYgcG9zc2libGUgc28gYmx1ci9mb2N1cyBzZXF1ZW5jZSBpcyBjb3JyZWN0XG5cdFx0c2V0dXA6IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBDbGFpbSB0aGUgZmlyc3QgaGFuZGxlclxuXHRcdFx0Ly8gZGF0YVByaXYuc2V0KCB0aGlzLCBcImZvY3VzXCIsIC4uLiApXG5cdFx0XHQvLyBkYXRhUHJpdi5zZXQoIHRoaXMsIFwiYmx1clwiLCAuLi4gKVxuXHRcdFx0bGV2ZXJhZ2VOYXRpdmUoIHRoaXMsIHR5cGUsIGV4cGVjdFN5bmMgKTtcblxuXHRcdFx0Ly8gUmV0dXJuIGZhbHNlIHRvIGFsbG93IG5vcm1hbCBwcm9jZXNzaW5nIGluIHRoZSBjYWxsZXJcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9LFxuXHRcdHRyaWdnZXI6IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBGb3JjZSBzZXR1cCBiZWZvcmUgdHJpZ2dlclxuXHRcdFx0bGV2ZXJhZ2VOYXRpdmUoIHRoaXMsIHR5cGUgKTtcblxuXHRcdFx0Ly8gUmV0dXJuIG5vbi1mYWxzZSB0byBhbGxvdyBub3JtYWwgZXZlbnQtcGF0aCBwcm9wYWdhdGlvblxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSxcblxuXHRcdC8vIFN1cHByZXNzIG5hdGl2ZSBmb2N1cyBvciBibHVyIGlmIHdlJ3JlIGN1cnJlbnRseSBpbnNpZGVcblx0XHQvLyBhIGxldmVyYWdlZCBuYXRpdmUtZXZlbnQgc3RhY2tcblx0XHRfZGVmYXVsdDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0cmV0dXJuIGRhdGFQcml2LmdldCggZXZlbnQudGFyZ2V0LCB0eXBlICk7XG5cdFx0fSxcblxuXHRcdGRlbGVnYXRlVHlwZTogZGVsZWdhdGVUeXBlXG5cdH07XG59ICk7XG5cbi8vIENyZWF0ZSBtb3VzZWVudGVyL2xlYXZlIGV2ZW50cyB1c2luZyBtb3VzZW92ZXIvb3V0IGFuZCBldmVudC10aW1lIGNoZWNrc1xuLy8gc28gdGhhdCBldmVudCBkZWxlZ2F0aW9uIHdvcmtzIGluIGpRdWVyeS5cbi8vIERvIHRoZSBzYW1lIGZvciBwb2ludGVyZW50ZXIvcG9pbnRlcmxlYXZlIGFuZCBwb2ludGVyb3Zlci9wb2ludGVyb3V0XG4vL1xuLy8gU3VwcG9ydDogU2FmYXJpIDcgb25seVxuLy8gU2FmYXJpIHNlbmRzIG1vdXNlZW50ZXIgdG9vIG9mdGVuOyBzZWU6XG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00NzAyNThcbi8vIGZvciB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGJ1ZyAoaXQgZXhpc3RlZCBpbiBvbGRlciBDaHJvbWUgdmVyc2lvbnMgYXMgd2VsbCkuXG5qUXVlcnkuZWFjaCgge1xuXHRtb3VzZWVudGVyOiBcIm1vdXNlb3ZlclwiLFxuXHRtb3VzZWxlYXZlOiBcIm1vdXNlb3V0XCIsXG5cdHBvaW50ZXJlbnRlcjogXCJwb2ludGVyb3ZlclwiLFxuXHRwb2ludGVybGVhdmU6IFwicG9pbnRlcm91dFwiXG59LCBmdW5jdGlvbiggb3JpZywgZml4ICkge1xuXHRqUXVlcnkuZXZlbnQuc3BlY2lhbFsgb3JpZyBdID0ge1xuXHRcdGRlbGVnYXRlVHlwZTogZml4LFxuXHRcdGJpbmRUeXBlOiBmaXgsXG5cblx0XHRoYW5kbGU6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdHZhciByZXQsXG5cdFx0XHRcdHRhcmdldCA9IHRoaXMsXG5cdFx0XHRcdHJlbGF0ZWQgPSBldmVudC5yZWxhdGVkVGFyZ2V0LFxuXHRcdFx0XHRoYW5kbGVPYmogPSBldmVudC5oYW5kbGVPYmo7XG5cblx0XHRcdC8vIEZvciBtb3VzZWVudGVyL2xlYXZlIGNhbGwgdGhlIGhhbmRsZXIgaWYgcmVsYXRlZCBpcyBvdXRzaWRlIHRoZSB0YXJnZXQuXG5cdFx0XHQvLyBOQjogTm8gcmVsYXRlZFRhcmdldCBpZiB0aGUgbW91c2UgbGVmdC9lbnRlcmVkIHRoZSBicm93c2VyIHdpbmRvd1xuXHRcdFx0aWYgKCAhcmVsYXRlZCB8fCAoIHJlbGF0ZWQgIT09IHRhcmdldCAmJiAhalF1ZXJ5LmNvbnRhaW5zKCB0YXJnZXQsIHJlbGF0ZWQgKSApICkge1xuXHRcdFx0XHRldmVudC50eXBlID0gaGFuZGxlT2JqLm9yaWdUeXBlO1xuXHRcdFx0XHRyZXQgPSBoYW5kbGVPYmouaGFuZGxlci5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdGV2ZW50LnR5cGUgPSBmaXg7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblx0fTtcbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXG5cdG9uOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gb24oIHRoaXMsIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKTtcblx0fSxcblx0b25lOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gb24oIHRoaXMsIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4sIDEgKTtcblx0fSxcblx0b2ZmOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBmbiApIHtcblx0XHR2YXIgaGFuZGxlT2JqLCB0eXBlO1xuXHRcdGlmICggdHlwZXMgJiYgdHlwZXMucHJldmVudERlZmF1bHQgJiYgdHlwZXMuaGFuZGxlT2JqICkge1xuXG5cdFx0XHQvLyAoIGV2ZW50ICkgIGRpc3BhdGNoZWQgalF1ZXJ5LkV2ZW50XG5cdFx0XHRoYW5kbGVPYmogPSB0eXBlcy5oYW5kbGVPYmo7XG5cdFx0XHRqUXVlcnkoIHR5cGVzLmRlbGVnYXRlVGFyZ2V0ICkub2ZmKFxuXHRcdFx0XHRoYW5kbGVPYmoubmFtZXNwYWNlID9cblx0XHRcdFx0XHRoYW5kbGVPYmoub3JpZ1R5cGUgKyBcIi5cIiArIGhhbmRsZU9iai5uYW1lc3BhY2UgOlxuXHRcdFx0XHRcdGhhbmRsZU9iai5vcmlnVHlwZSxcblx0XHRcdFx0aGFuZGxlT2JqLnNlbGVjdG9yLFxuXHRcdFx0XHRoYW5kbGVPYmouaGFuZGxlclxuXHRcdFx0KTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblx0XHRpZiAoIHR5cGVvZiB0eXBlcyA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdFx0Ly8gKCB0eXBlcy1vYmplY3QgWywgc2VsZWN0b3JdIClcblx0XHRcdGZvciAoIHR5cGUgaW4gdHlwZXMgKSB7XG5cdFx0XHRcdHRoaXMub2ZmKCB0eXBlLCBzZWxlY3RvciwgdHlwZXNbIHR5cGUgXSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXHRcdGlmICggc2VsZWN0b3IgPT09IGZhbHNlIHx8IHR5cGVvZiBzZWxlY3RvciA9PT0gXCJmdW5jdGlvblwiICkge1xuXG5cdFx0XHQvLyAoIHR5cGVzIFssIGZuXSApXG5cdFx0XHRmbiA9IHNlbGVjdG9yO1xuXHRcdFx0c2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICggZm4gPT09IGZhbHNlICkge1xuXHRcdFx0Zm4gPSByZXR1cm5GYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCB0aGlzLCB0eXBlcywgZm4sIHNlbGVjdG9yICk7XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cblxudmFyXG5cblx0Ly8gU3VwcG9ydDogSUUgPD0xMCAtIDExLCBFZGdlIDEyIC0gMTMgb25seVxuXHQvLyBJbiBJRS9FZGdlIHVzaW5nIHJlZ2V4IGdyb3VwcyBoZXJlIGNhdXNlcyBzZXZlcmUgc2xvd2Rvd25zLlxuXHQvLyBTZWUgaHR0cHM6Ly9jb25uZWN0Lm1pY3Jvc29mdC5jb20vSUUvZmVlZGJhY2svZGV0YWlscy8xNzM2NTEyL1xuXHRybm9Jbm5lcmh0bWwgPSAvPHNjcmlwdHw8c3R5bGV8PGxpbmsvaSxcblxuXHQvLyBjaGVja2VkPVwiY2hlY2tlZFwiIG9yIGNoZWNrZWRcblx0cmNoZWNrZWQgPSAvY2hlY2tlZFxccyooPzpbXj1dfD1cXHMqLmNoZWNrZWQuKS9pLFxuXG5cdHJjbGVhblNjcmlwdCA9IC9eXFxzKjwhXFxbQ0RBVEFcXFt8XFxdXFxdPlxccyokL2c7XG5cbi8vIFByZWZlciBhIHRib2R5IG92ZXIgaXRzIHBhcmVudCB0YWJsZSBmb3IgY29udGFpbmluZyBuZXcgcm93c1xuZnVuY3Rpb24gbWFuaXB1bGF0aW9uVGFyZ2V0KCBlbGVtLCBjb250ZW50ICkge1xuXHRpZiAoIG5vZGVOYW1lKCBlbGVtLCBcInRhYmxlXCIgKSAmJlxuXHRcdG5vZGVOYW1lKCBjb250ZW50Lm5vZGVUeXBlICE9PSAxMSA/IGNvbnRlbnQgOiBjb250ZW50LmZpcnN0Q2hpbGQsIFwidHJcIiApICkge1xuXG5cdFx0cmV0dXJuIGpRdWVyeSggZWxlbSApLmNoaWxkcmVuKCBcInRib2R5XCIgKVsgMCBdIHx8IGVsZW07XG5cdH1cblxuXHRyZXR1cm4gZWxlbTtcbn1cblxuLy8gUmVwbGFjZS9yZXN0b3JlIHRoZSB0eXBlIGF0dHJpYnV0ZSBvZiBzY3JpcHQgZWxlbWVudHMgZm9yIHNhZmUgRE9NIG1hbmlwdWxhdGlvblxuZnVuY3Rpb24gZGlzYWJsZVNjcmlwdCggZWxlbSApIHtcblx0ZWxlbS50eXBlID0gKCBlbGVtLmdldEF0dHJpYnV0ZSggXCJ0eXBlXCIgKSAhPT0gbnVsbCApICsgXCIvXCIgKyBlbGVtLnR5cGU7XG5cdHJldHVybiBlbGVtO1xufVxuZnVuY3Rpb24gcmVzdG9yZVNjcmlwdCggZWxlbSApIHtcblx0aWYgKCAoIGVsZW0udHlwZSB8fCBcIlwiICkuc2xpY2UoIDAsIDUgKSA9PT0gXCJ0cnVlL1wiICkge1xuXHRcdGVsZW0udHlwZSA9IGVsZW0udHlwZS5zbGljZSggNSApO1xuXHR9IGVsc2Uge1xuXHRcdGVsZW0ucmVtb3ZlQXR0cmlidXRlKCBcInR5cGVcIiApO1xuXHR9XG5cblx0cmV0dXJuIGVsZW07XG59XG5cbmZ1bmN0aW9uIGNsb25lQ29weUV2ZW50KCBzcmMsIGRlc3QgKSB7XG5cdHZhciBpLCBsLCB0eXBlLCBwZGF0YU9sZCwgdWRhdGFPbGQsIHVkYXRhQ3VyLCBldmVudHM7XG5cblx0aWYgKCBkZXN0Lm5vZGVUeXBlICE9PSAxICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIDEuIENvcHkgcHJpdmF0ZSBkYXRhOiBldmVudHMsIGhhbmRsZXJzLCBldGMuXG5cdGlmICggZGF0YVByaXYuaGFzRGF0YSggc3JjICkgKSB7XG5cdFx0cGRhdGFPbGQgPSBkYXRhUHJpdi5nZXQoIHNyYyApO1xuXHRcdGV2ZW50cyA9IHBkYXRhT2xkLmV2ZW50cztcblxuXHRcdGlmICggZXZlbnRzICkge1xuXHRcdFx0ZGF0YVByaXYucmVtb3ZlKCBkZXN0LCBcImhhbmRsZSBldmVudHNcIiApO1xuXG5cdFx0XHRmb3IgKCB0eXBlIGluIGV2ZW50cyApIHtcblx0XHRcdFx0Zm9yICggaSA9IDAsIGwgPSBldmVudHNbIHR5cGUgXS5sZW5ndGg7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LmFkZCggZGVzdCwgdHlwZSwgZXZlbnRzWyB0eXBlIF1bIGkgXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gMi4gQ29weSB1c2VyIGRhdGFcblx0aWYgKCBkYXRhVXNlci5oYXNEYXRhKCBzcmMgKSApIHtcblx0XHR1ZGF0YU9sZCA9IGRhdGFVc2VyLmFjY2Vzcyggc3JjICk7XG5cdFx0dWRhdGFDdXIgPSBqUXVlcnkuZXh0ZW5kKCB7fSwgdWRhdGFPbGQgKTtcblxuXHRcdGRhdGFVc2VyLnNldCggZGVzdCwgdWRhdGFDdXIgKTtcblx0fVxufVxuXG4vLyBGaXggSUUgYnVncywgc2VlIHN1cHBvcnQgdGVzdHNcbmZ1bmN0aW9uIGZpeElucHV0KCBzcmMsIGRlc3QgKSB7XG5cdHZhciBub2RlTmFtZSA9IGRlc3Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblxuXHQvLyBGYWlscyB0byBwZXJzaXN0IHRoZSBjaGVja2VkIHN0YXRlIG9mIGEgY2xvbmVkIGNoZWNrYm94IG9yIHJhZGlvIGJ1dHRvbi5cblx0aWYgKCBub2RlTmFtZSA9PT0gXCJpbnB1dFwiICYmIHJjaGVja2FibGVUeXBlLnRlc3QoIHNyYy50eXBlICkgKSB7XG5cdFx0ZGVzdC5jaGVja2VkID0gc3JjLmNoZWNrZWQ7XG5cblx0Ly8gRmFpbHMgdG8gcmV0dXJuIHRoZSBzZWxlY3RlZCBvcHRpb24gdG8gdGhlIGRlZmF1bHQgc2VsZWN0ZWQgc3RhdGUgd2hlbiBjbG9uaW5nIG9wdGlvbnNcblx0fSBlbHNlIGlmICggbm9kZU5hbWUgPT09IFwiaW5wdXRcIiB8fCBub2RlTmFtZSA9PT0gXCJ0ZXh0YXJlYVwiICkge1xuXHRcdGRlc3QuZGVmYXVsdFZhbHVlID0gc3JjLmRlZmF1bHRWYWx1ZTtcblx0fVxufVxuXG5mdW5jdGlvbiBkb21NYW5pcCggY29sbGVjdGlvbiwgYXJncywgY2FsbGJhY2ssIGlnbm9yZWQgKSB7XG5cblx0Ly8gRmxhdHRlbiBhbnkgbmVzdGVkIGFycmF5c1xuXHRhcmdzID0gZmxhdCggYXJncyApO1xuXG5cdHZhciBmcmFnbWVudCwgZmlyc3QsIHNjcmlwdHMsIGhhc1NjcmlwdHMsIG5vZGUsIGRvYyxcblx0XHRpID0gMCxcblx0XHRsID0gY29sbGVjdGlvbi5sZW5ndGgsXG5cdFx0aU5vQ2xvbmUgPSBsIC0gMSxcblx0XHR2YWx1ZSA9IGFyZ3NbIDAgXSxcblx0XHR2YWx1ZUlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uKCB2YWx1ZSApO1xuXG5cdC8vIFdlIGNhbid0IGNsb25lTm9kZSBmcmFnbWVudHMgdGhhdCBjb250YWluIGNoZWNrZWQsIGluIFdlYktpdFxuXHRpZiAoIHZhbHVlSXNGdW5jdGlvbiB8fFxuXHRcdFx0KCBsID4gMSAmJiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiZcblx0XHRcdFx0IXN1cHBvcnQuY2hlY2tDbG9uZSAmJiByY2hlY2tlZC50ZXN0KCB2YWx1ZSApICkgKSB7XG5cdFx0cmV0dXJuIGNvbGxlY3Rpb24uZWFjaCggZnVuY3Rpb24oIGluZGV4ICkge1xuXHRcdFx0dmFyIHNlbGYgPSBjb2xsZWN0aW9uLmVxKCBpbmRleCApO1xuXHRcdFx0aWYgKCB2YWx1ZUlzRnVuY3Rpb24gKSB7XG5cdFx0XHRcdGFyZ3NbIDAgXSA9IHZhbHVlLmNhbGwoIHRoaXMsIGluZGV4LCBzZWxmLmh0bWwoKSApO1xuXHRcdFx0fVxuXHRcdFx0ZG9tTWFuaXAoIHNlbGYsIGFyZ3MsIGNhbGxiYWNrLCBpZ25vcmVkICk7XG5cdFx0fSApO1xuXHR9XG5cblx0aWYgKCBsICkge1xuXHRcdGZyYWdtZW50ID0gYnVpbGRGcmFnbWVudCggYXJncywgY29sbGVjdGlvblsgMCBdLm93bmVyRG9jdW1lbnQsIGZhbHNlLCBjb2xsZWN0aW9uLCBpZ25vcmVkICk7XG5cdFx0Zmlyc3QgPSBmcmFnbWVudC5maXJzdENoaWxkO1xuXG5cdFx0aWYgKCBmcmFnbWVudC5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSApIHtcblx0XHRcdGZyYWdtZW50ID0gZmlyc3Q7XG5cdFx0fVxuXG5cdFx0Ly8gUmVxdWlyZSBlaXRoZXIgbmV3IGNvbnRlbnQgb3IgYW4gaW50ZXJlc3QgaW4gaWdub3JlZCBlbGVtZW50cyB0byBpbnZva2UgdGhlIGNhbGxiYWNrXG5cdFx0aWYgKCBmaXJzdCB8fCBpZ25vcmVkICkge1xuXHRcdFx0c2NyaXB0cyA9IGpRdWVyeS5tYXAoIGdldEFsbCggZnJhZ21lbnQsIFwic2NyaXB0XCIgKSwgZGlzYWJsZVNjcmlwdCApO1xuXHRcdFx0aGFzU2NyaXB0cyA9IHNjcmlwdHMubGVuZ3RoO1xuXG5cdFx0XHQvLyBVc2UgdGhlIG9yaWdpbmFsIGZyYWdtZW50IGZvciB0aGUgbGFzdCBpdGVtXG5cdFx0XHQvLyBpbnN0ZWFkIG9mIHRoZSBmaXJzdCBiZWNhdXNlIGl0IGNhbiBlbmQgdXBcblx0XHRcdC8vIGJlaW5nIGVtcHRpZWQgaW5jb3JyZWN0bHkgaW4gY2VydGFpbiBzaXR1YXRpb25zICh0cmFjLTgwNzApLlxuXHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRub2RlID0gZnJhZ21lbnQ7XG5cblx0XHRcdFx0aWYgKCBpICE9PSBpTm9DbG9uZSApIHtcblx0XHRcdFx0XHRub2RlID0galF1ZXJ5LmNsb25lKCBub2RlLCB0cnVlLCB0cnVlICk7XG5cblx0XHRcdFx0XHQvLyBLZWVwIHJlZmVyZW5jZXMgdG8gY2xvbmVkIHNjcmlwdHMgZm9yIGxhdGVyIHJlc3RvcmF0aW9uXG5cdFx0XHRcdFx0aWYgKCBoYXNTY3JpcHRzICkge1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0XHRcdFx0XHRcdC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXRcblx0XHRcdFx0XHRcdGpRdWVyeS5tZXJnZSggc2NyaXB0cywgZ2V0QWxsKCBub2RlLCBcInNjcmlwdFwiICkgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjYWxsYmFjay5jYWxsKCBjb2xsZWN0aW9uWyBpIF0sIG5vZGUsIGkgKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBoYXNTY3JpcHRzICkge1xuXHRcdFx0XHRkb2MgPSBzY3JpcHRzWyBzY3JpcHRzLmxlbmd0aCAtIDEgXS5vd25lckRvY3VtZW50O1xuXG5cdFx0XHRcdC8vIFJlZW5hYmxlIHNjcmlwdHNcblx0XHRcdFx0alF1ZXJ5Lm1hcCggc2NyaXB0cywgcmVzdG9yZVNjcmlwdCApO1xuXG5cdFx0XHRcdC8vIEV2YWx1YXRlIGV4ZWN1dGFibGUgc2NyaXB0cyBvbiBmaXJzdCBkb2N1bWVudCBpbnNlcnRpb25cblx0XHRcdFx0Zm9yICggaSA9IDA7IGkgPCBoYXNTY3JpcHRzOyBpKysgKSB7XG5cdFx0XHRcdFx0bm9kZSA9IHNjcmlwdHNbIGkgXTtcblx0XHRcdFx0XHRpZiAoIHJzY3JpcHRUeXBlLnRlc3QoIG5vZGUudHlwZSB8fCBcIlwiICkgJiZcblx0XHRcdFx0XHRcdCFkYXRhUHJpdi5hY2Nlc3MoIG5vZGUsIFwiZ2xvYmFsRXZhbFwiICkgJiZcblx0XHRcdFx0XHRcdGpRdWVyeS5jb250YWlucyggZG9jLCBub2RlICkgKSB7XG5cblx0XHRcdFx0XHRcdGlmICggbm9kZS5zcmMgJiYgKCBub2RlLnR5cGUgfHwgXCJcIiApLnRvTG93ZXJDYXNlKCkgICE9PSBcIm1vZHVsZVwiICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIE9wdGlvbmFsIEFKQVggZGVwZW5kZW5jeSwgYnV0IHdvbid0IHJ1biBzY3JpcHRzIGlmIG5vdCBwcmVzZW50XG5cdFx0XHRcdFx0XHRcdGlmICggalF1ZXJ5Ll9ldmFsVXJsICYmICFub2RlLm5vTW9kdWxlICkge1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5fZXZhbFVybCggbm9kZS5zcmMsIHtcblx0XHRcdFx0XHRcdFx0XHRcdG5vbmNlOiBub2RlLm5vbmNlIHx8IG5vZGUuZ2V0QXR0cmlidXRlKCBcIm5vbmNlXCIgKVxuXHRcdFx0XHRcdFx0XHRcdH0sIGRvYyApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdC8vIFVud3JhcCBhIENEQVRBIHNlY3Rpb24gY29udGFpbmluZyBzY3JpcHQgY29udGVudHMuIFRoaXMgc2hvdWxkbid0IGJlXG5cdFx0XHRcdFx0XHRcdC8vIG5lZWRlZCBhcyBpbiBYTUwgZG9jdW1lbnRzIHRoZXkncmUgYWxyZWFkeSBub3QgdmlzaWJsZSB3aGVuXG5cdFx0XHRcdFx0XHRcdC8vIGluc3BlY3RpbmcgZWxlbWVudCBjb250ZW50cyBhbmQgaW4gSFRNTCBkb2N1bWVudHMgdGhleSBoYXZlIG5vXG5cdFx0XHRcdFx0XHRcdC8vIG1lYW5pbmcgYnV0IHdlJ3JlIHByZXNlcnZpbmcgdGhhdCBsb2dpYyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG5cdFx0XHRcdFx0XHRcdC8vIFRoaXMgd2lsbCBiZSByZW1vdmVkIGNvbXBsZXRlbHkgaW4gNC4wLiBTZWUgZ2gtNDkwNC5cblx0XHRcdFx0XHRcdFx0RE9NRXZhbCggbm9kZS50ZXh0Q29udGVudC5yZXBsYWNlKCByY2xlYW5TY3JpcHQsIFwiXCIgKSwgbm9kZSwgZG9jICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGNvbGxlY3Rpb247XG59XG5cbmZ1bmN0aW9uIHJlbW92ZSggZWxlbSwgc2VsZWN0b3IsIGtlZXBEYXRhICkge1xuXHR2YXIgbm9kZSxcblx0XHRub2RlcyA9IHNlbGVjdG9yID8galF1ZXJ5LmZpbHRlciggc2VsZWN0b3IsIGVsZW0gKSA6IGVsZW0sXG5cdFx0aSA9IDA7XG5cblx0Zm9yICggOyAoIG5vZGUgPSBub2Rlc1sgaSBdICkgIT0gbnVsbDsgaSsrICkge1xuXHRcdGlmICggIWtlZXBEYXRhICYmIG5vZGUubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIG5vZGUgKSApO1xuXHRcdH1cblxuXHRcdGlmICggbm9kZS5wYXJlbnROb2RlICkge1xuXHRcdFx0aWYgKCBrZWVwRGF0YSAmJiBpc0F0dGFjaGVkKCBub2RlICkgKSB7XG5cdFx0XHRcdHNldEdsb2JhbEV2YWwoIGdldEFsbCggbm9kZSwgXCJzY3JpcHRcIiApICk7XG5cdFx0XHR9XG5cdFx0XHRub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIG5vZGUgKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZWxlbTtcbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXHRodG1sUHJlZmlsdGVyOiBmdW5jdGlvbiggaHRtbCApIHtcblx0XHRyZXR1cm4gaHRtbDtcblx0fSxcblxuXHRjbG9uZTogZnVuY3Rpb24oIGVsZW0sIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkge1xuXHRcdHZhciBpLCBsLCBzcmNFbGVtZW50cywgZGVzdEVsZW1lbnRzLFxuXHRcdFx0Y2xvbmUgPSBlbGVtLmNsb25lTm9kZSggdHJ1ZSApLFxuXHRcdFx0aW5QYWdlID0gaXNBdHRhY2hlZCggZWxlbSApO1xuXG5cdFx0Ly8gRml4IElFIGNsb25pbmcgaXNzdWVzXG5cdFx0aWYgKCAhc3VwcG9ydC5ub0Nsb25lQ2hlY2tlZCAmJiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgZWxlbS5ub2RlVHlwZSA9PT0gMTEgKSAmJlxuXHRcdFx0XHQhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7XG5cblx0XHRcdC8vIFdlIGVzY2hldyBTaXp6bGUgaGVyZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29uczogaHR0cHM6Ly9qc3BlcmYuY29tL2dldGFsbC12cy1zaXp6bGUvMlxuXHRcdFx0ZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9uZSApO1xuXHRcdFx0c3JjRWxlbWVudHMgPSBnZXRBbGwoIGVsZW0gKTtcblxuXHRcdFx0Zm9yICggaSA9IDAsIGwgPSBzcmNFbGVtZW50cy5sZW5ndGg7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdGZpeElucHV0KCBzcmNFbGVtZW50c1sgaSBdLCBkZXN0RWxlbWVudHNbIGkgXSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENvcHkgdGhlIGV2ZW50cyBmcm9tIHRoZSBvcmlnaW5hbCB0byB0aGUgY2xvbmVcblx0XHRpZiAoIGRhdGFBbmRFdmVudHMgKSB7XG5cdFx0XHRpZiAoIGRlZXBEYXRhQW5kRXZlbnRzICkge1xuXHRcdFx0XHRzcmNFbGVtZW50cyA9IHNyY0VsZW1lbnRzIHx8IGdldEFsbCggZWxlbSApO1xuXHRcdFx0XHRkZXN0RWxlbWVudHMgPSBkZXN0RWxlbWVudHMgfHwgZ2V0QWxsKCBjbG9uZSApO1xuXG5cdFx0XHRcdGZvciAoIGkgPSAwLCBsID0gc3JjRWxlbWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdGNsb25lQ29weUV2ZW50KCBzcmNFbGVtZW50c1sgaSBdLCBkZXN0RWxlbWVudHNbIGkgXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjbG9uZUNvcHlFdmVudCggZWxlbSwgY2xvbmUgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBQcmVzZXJ2ZSBzY3JpcHQgZXZhbHVhdGlvbiBoaXN0b3J5XG5cdFx0ZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9uZSwgXCJzY3JpcHRcIiApO1xuXHRcdGlmICggZGVzdEVsZW1lbnRzLmxlbmd0aCA+IDAgKSB7XG5cdFx0XHRzZXRHbG9iYWxFdmFsKCBkZXN0RWxlbWVudHMsICFpblBhZ2UgJiYgZ2V0QWxsKCBlbGVtLCBcInNjcmlwdFwiICkgKTtcblx0XHR9XG5cblx0XHQvLyBSZXR1cm4gdGhlIGNsb25lZCBzZXRcblx0XHRyZXR1cm4gY2xvbmU7XG5cdH0sXG5cblx0Y2xlYW5EYXRhOiBmdW5jdGlvbiggZWxlbXMgKSB7XG5cdFx0dmFyIGRhdGEsIGVsZW0sIHR5cGUsXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWwsXG5cdFx0XHRpID0gMDtcblxuXHRcdGZvciAoIDsgKCBlbGVtID0gZWxlbXNbIGkgXSApICE9PSB1bmRlZmluZWQ7IGkrKyApIHtcblx0XHRcdGlmICggYWNjZXB0RGF0YSggZWxlbSApICkge1xuXHRcdFx0XHRpZiAoICggZGF0YSA9IGVsZW1bIGRhdGFQcml2LmV4cGFuZG8gXSApICkge1xuXHRcdFx0XHRcdGlmICggZGF0YS5ldmVudHMgKSB7XG5cdFx0XHRcdFx0XHRmb3IgKCB0eXBlIGluIGRhdGEuZXZlbnRzICkge1xuXHRcdFx0XHRcdFx0XHRpZiAoIHNwZWNpYWxbIHR5cGUgXSApIHtcblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCBlbGVtLCB0eXBlICk7XG5cblx0XHRcdFx0XHRcdFx0Ly8gVGhpcyBpcyBhIHNob3J0Y3V0IHRvIGF2b2lkIGpRdWVyeS5ldmVudC5yZW1vdmUncyBvdmVyaGVhZFxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5yZW1vdmVFdmVudCggZWxlbSwgdHlwZSwgZGF0YS5oYW5kbGUgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IENocm9tZSA8PTM1IC0gNDUrXG5cdFx0XHRcdFx0Ly8gQXNzaWduIHVuZGVmaW5lZCBpbnN0ZWFkIG9mIHVzaW5nIGRlbGV0ZSwgc2VlIERhdGEjcmVtb3ZlXG5cdFx0XHRcdFx0ZWxlbVsgZGF0YVByaXYuZXhwYW5kbyBdID0gdW5kZWZpbmVkO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICggZWxlbVsgZGF0YVVzZXIuZXhwYW5kbyBdICkge1xuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogQ2hyb21lIDw9MzUgLSA0NStcblx0XHRcdFx0XHQvLyBBc3NpZ24gdW5kZWZpbmVkIGluc3RlYWQgb2YgdXNpbmcgZGVsZXRlLCBzZWUgRGF0YSNyZW1vdmVcblx0XHRcdFx0XHRlbGVtWyBkYXRhVXNlci5leHBhbmRvIF0gPSB1bmRlZmluZWQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRkZXRhY2g6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gcmVtb3ZlKCB0aGlzLCBzZWxlY3RvciwgdHJ1ZSApO1xuXHR9LFxuXG5cdHJlbW92ZTogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiByZW1vdmUoIHRoaXMsIHNlbGVjdG9yICk7XG5cdH0sXG5cblx0dGV4dDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID9cblx0XHRcdFx0alF1ZXJ5LnRleHQoIHRoaXMgKSA6XG5cdFx0XHRcdHRoaXMuZW1wdHkoKS5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0XHRcdHRoaXMudGV4dENvbnRlbnQgPSB2YWx1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gKTtcblx0XHR9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCApO1xuXHR9LFxuXG5cdGFwcGVuZDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdHZhciB0YXJnZXQgPSBtYW5pcHVsYXRpb25UYXJnZXQoIHRoaXMsIGVsZW0gKTtcblx0XHRcdFx0dGFyZ2V0LmFwcGVuZENoaWxkKCBlbGVtICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdHByZXBlbmQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHR2YXIgdGFyZ2V0ID0gbWFuaXB1bGF0aW9uVGFyZ2V0KCB0aGlzLCBlbGVtICk7XG5cdFx0XHRcdHRhcmdldC5pbnNlcnRCZWZvcmUoIGVsZW0sIHRhcmdldC5maXJzdENoaWxkICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGJlZm9yZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0YWZ0ZXI6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdGlmICggdGhpcy5wYXJlbnROb2RlICkge1xuXHRcdFx0XHR0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0aGlzLm5leHRTaWJsaW5nICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGVtcHR5OiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZWxlbSxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Zm9yICggOyAoIGVsZW0gPSB0aGlzWyBpIF0gKSAhPSBudWxsOyBpKysgKSB7XG5cdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cblx0XHRcdFx0Ly8gUHJldmVudCBtZW1vcnkgbGVha3Ncblx0XHRcdFx0alF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCBlbGVtLCBmYWxzZSApICk7XG5cblx0XHRcdFx0Ly8gUmVtb3ZlIGFueSByZW1haW5pbmcgbm9kZXNcblx0XHRcdFx0ZWxlbS50ZXh0Q29udGVudCA9IFwiXCI7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH0sXG5cblx0Y2xvbmU6IGZ1bmN0aW9uKCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApIHtcblx0XHRkYXRhQW5kRXZlbnRzID0gZGF0YUFuZEV2ZW50cyA9PSBudWxsID8gZmFsc2UgOiBkYXRhQW5kRXZlbnRzO1xuXHRcdGRlZXBEYXRhQW5kRXZlbnRzID0gZGVlcERhdGFBbmRFdmVudHMgPT0gbnVsbCA/IGRhdGFBbmRFdmVudHMgOiBkZWVwRGF0YUFuZEV2ZW50cztcblxuXHRcdHJldHVybiB0aGlzLm1hcCggZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LmNsb25lKCB0aGlzLCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApO1xuXHRcdH0gKTtcblx0fSxcblxuXHRodG1sOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0dmFyIGVsZW0gPSB0aGlzWyAwIF0gfHwge30sXG5cdFx0XHRcdGkgPSAwLFxuXHRcdFx0XHRsID0gdGhpcy5sZW5ndGg7XG5cblx0XHRcdGlmICggdmFsdWUgPT09IHVuZGVmaW5lZCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0XHRyZXR1cm4gZWxlbS5pbm5lckhUTUw7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNlZSBpZiB3ZSBjYW4gdGFrZSBhIHNob3J0Y3V0IGFuZCBqdXN0IHVzZSBpbm5lckhUTUxcblx0XHRcdGlmICggdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmICFybm9Jbm5lcmh0bWwudGVzdCggdmFsdWUgKSAmJlxuXHRcdFx0XHQhd3JhcE1hcFsgKCBydGFnTmFtZS5leGVjKCB2YWx1ZSApIHx8IFsgXCJcIiwgXCJcIiBdIClbIDEgXS50b0xvd2VyQ2FzZSgpIF0gKSB7XG5cblx0XHRcdFx0dmFsdWUgPSBqUXVlcnkuaHRtbFByZWZpbHRlciggdmFsdWUgKTtcblxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0XHRcdGVsZW0gPSB0aGlzWyBpIF0gfHwge307XG5cblx0XHRcdFx0XHRcdC8vIFJlbW92ZSBlbGVtZW50IG5vZGVzIGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFrc1xuXHRcdFx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0XHRcdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIGVsZW0sIGZhbHNlICkgKTtcblx0XHRcdFx0XHRcdFx0ZWxlbS5pbm5lckhUTUwgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRlbGVtID0gMDtcblxuXHRcdFx0XHQvLyBJZiB1c2luZyBpbm5lckhUTUwgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgdXNlIHRoZSBmYWxsYmFjayBtZXRob2Rcblx0XHRcdFx0fSBjYXRjaCAoIGUgKSB7fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGVsZW0gKSB7XG5cdFx0XHRcdHRoaXMuZW1wdHkoKS5hcHBlbmQoIHZhbHVlICk7XG5cdFx0XHR9XG5cdFx0fSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggKTtcblx0fSxcblxuXHRyZXBsYWNlV2l0aDogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGlnbm9yZWQgPSBbXTtcblxuXHRcdC8vIE1ha2UgdGhlIGNoYW5nZXMsIHJlcGxhY2luZyBlYWNoIG5vbi1pZ25vcmVkIGNvbnRleHQgZWxlbWVudCB3aXRoIHRoZSBuZXcgY29udGVudFxuXHRcdHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHZhciBwYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7XG5cblx0XHRcdGlmICggalF1ZXJ5LmluQXJyYXkoIHRoaXMsIGlnbm9yZWQgKSA8IDAgKSB7XG5cdFx0XHRcdGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggdGhpcyApICk7XG5cdFx0XHRcdGlmICggcGFyZW50ICkge1xuXHRcdFx0XHRcdHBhcmVudC5yZXBsYWNlQ2hpbGQoIGVsZW0sIHRoaXMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0Ly8gRm9yY2UgY2FsbGJhY2sgaW52b2NhdGlvblxuXHRcdH0sIGlnbm9yZWQgKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZWFjaCgge1xuXHRhcHBlbmRUbzogXCJhcHBlbmRcIixcblx0cHJlcGVuZFRvOiBcInByZXBlbmRcIixcblx0aW5zZXJ0QmVmb3JlOiBcImJlZm9yZVwiLFxuXHRpbnNlcnRBZnRlcjogXCJhZnRlclwiLFxuXHRyZXBsYWNlQWxsOiBcInJlcGxhY2VXaXRoXCJcbn0sIGZ1bmN0aW9uKCBuYW1lLCBvcmlnaW5hbCApIHtcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0dmFyIGVsZW1zLFxuXHRcdFx0cmV0ID0gW10sXG5cdFx0XHRpbnNlcnQgPSBqUXVlcnkoIHNlbGVjdG9yICksXG5cdFx0XHRsYXN0ID0gaW5zZXJ0Lmxlbmd0aCAtIDEsXG5cdFx0XHRpID0gMDtcblxuXHRcdGZvciAoIDsgaSA8PSBsYXN0OyBpKysgKSB7XG5cdFx0XHRlbGVtcyA9IGkgPT09IGxhc3QgPyB0aGlzIDogdGhpcy5jbG9uZSggdHJ1ZSApO1xuXHRcdFx0alF1ZXJ5KCBpbnNlcnRbIGkgXSApWyBvcmlnaW5hbCBdKCBlbGVtcyApO1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0XHRcdC8vIC5nZXQoKSBiZWNhdXNlIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXRcblx0XHRcdHB1c2guYXBwbHkoIHJldCwgZWxlbXMuZ2V0KCkgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHJldCApO1xuXHR9O1xufSApO1xudmFyIHJudW1ub25weCA9IG5ldyBSZWdFeHAoIFwiXihcIiArIHBudW0gKyBcIikoPyFweClbYS16JV0rJFwiLCBcImlcIiApO1xuXG52YXIgcmN1c3RvbVByb3AgPSAvXi0tLztcblxuXG52YXIgZ2V0U3R5bGVzID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHksIEZpcmVmb3ggPD0zMCAodHJhYy0xNTA5OCwgdHJhYy0xNDE1MClcblx0XHQvLyBJRSB0aHJvd3Mgb24gZWxlbWVudHMgY3JlYXRlZCBpbiBwb3B1cHNcblx0XHQvLyBGRiBtZWFud2hpbGUgdGhyb3dzIG9uIGZyYW1lIGVsZW1lbnRzIHRocm91Z2ggXCJkZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlXCJcblx0XHR2YXIgdmlldyA9IGVsZW0ub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldztcblxuXHRcdGlmICggIXZpZXcgfHwgIXZpZXcub3BlbmVyICkge1xuXHRcdFx0dmlldyA9IHdpbmRvdztcblx0XHR9XG5cblx0XHRyZXR1cm4gdmlldy5nZXRDb21wdXRlZFN0eWxlKCBlbGVtICk7XG5cdH07XG5cbnZhciBzd2FwID0gZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIGNhbGxiYWNrICkge1xuXHR2YXIgcmV0LCBuYW1lLFxuXHRcdG9sZCA9IHt9O1xuXG5cdC8vIFJlbWVtYmVyIHRoZSBvbGQgdmFsdWVzLCBhbmQgaW5zZXJ0IHRoZSBuZXcgb25lc1xuXHRmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7XG5cdFx0b2xkWyBuYW1lIF0gPSBlbGVtLnN0eWxlWyBuYW1lIF07XG5cdFx0ZWxlbS5zdHlsZVsgbmFtZSBdID0gb3B0aW9uc1sgbmFtZSBdO1xuXHR9XG5cblx0cmV0ID0gY2FsbGJhY2suY2FsbCggZWxlbSApO1xuXG5cdC8vIFJldmVydCB0aGUgb2xkIHZhbHVlc1xuXHRmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7XG5cdFx0ZWxlbS5zdHlsZVsgbmFtZSBdID0gb2xkWyBuYW1lIF07XG5cdH1cblxuXHRyZXR1cm4gcmV0O1xufTtcblxuXG52YXIgcmJveFN0eWxlID0gbmV3IFJlZ0V4cCggY3NzRXhwYW5kLmpvaW4oIFwifFwiICksIFwiaVwiICk7XG5cbnZhciB3aGl0ZXNwYWNlID0gXCJbXFxcXHgyMFxcXFx0XFxcXHJcXFxcblxcXFxmXVwiO1xuXG5cbnZhciBydHJpbUNTUyA9IG5ldyBSZWdFeHAoXG5cdFwiXlwiICsgd2hpdGVzcGFjZSArIFwiK3woKD86XnxbXlxcXFxcXFxcXSkoPzpcXFxcXFxcXC4pKilcIiArIHdoaXRlc3BhY2UgKyBcIiskXCIsXG5cdFwiZ1wiXG4pO1xuXG5cblxuXG4oIGZ1bmN0aW9uKCkge1xuXG5cdC8vIEV4ZWN1dGluZyBib3RoIHBpeGVsUG9zaXRpb24gJiBib3hTaXppbmdSZWxpYWJsZSB0ZXN0cyByZXF1aXJlIG9ubHkgb25lIGxheW91dFxuXHQvLyBzbyB0aGV5J3JlIGV4ZWN1dGVkIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSB0aGUgc2Vjb25kIGNvbXB1dGF0aW9uLlxuXHRmdW5jdGlvbiBjb21wdXRlU3R5bGVUZXN0cygpIHtcblxuXHRcdC8vIFRoaXMgaXMgYSBzaW5nbGV0b24sIHdlIG5lZWQgdG8gZXhlY3V0ZSBpdCBvbmx5IG9uY2Vcblx0XHRpZiAoICFkaXYgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29udGFpbmVyLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTExMTExcHg7d2lkdGg6NjBweDtcIiArXG5cdFx0XHRcIm1hcmdpbi10b3A6MXB4O3BhZGRpbmc6MDtib3JkZXI6MFwiO1xuXHRcdGRpdi5zdHlsZS5jc3NUZXh0ID1cblx0XHRcdFwicG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3g7b3ZlcmZsb3c6c2Nyb2xsO1wiICtcblx0XHRcdFwibWFyZ2luOmF1dG87Ym9yZGVyOjFweDtwYWRkaW5nOjFweDtcIiArXG5cdFx0XHRcIndpZHRoOjYwJTt0b3A6MSVcIjtcblx0XHRkb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoIGNvbnRhaW5lciApLmFwcGVuZENoaWxkKCBkaXYgKTtcblxuXHRcdHZhciBkaXZTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKCBkaXYgKTtcblx0XHRwaXhlbFBvc2l0aW9uVmFsID0gZGl2U3R5bGUudG9wICE9PSBcIjElXCI7XG5cblx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAtIDQuMyBvbmx5LCBGaXJlZm94IDw9MyAtIDQ0XG5cdFx0cmVsaWFibGVNYXJnaW5MZWZ0VmFsID0gcm91bmRQaXhlbE1lYXN1cmVzKCBkaXZTdHlsZS5tYXJnaW5MZWZ0ICkgPT09IDEyO1xuXG5cdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA0LjAgLSA0LjMgb25seSwgU2FmYXJpIDw9OS4xIC0gMTAuMSwgaU9TIDw9Ny4wIC0gOS4zXG5cdFx0Ly8gU29tZSBzdHlsZXMgY29tZSBiYWNrIHdpdGggcGVyY2VudGFnZSB2YWx1ZXMsIGV2ZW4gdGhvdWdoIHRoZXkgc2hvdWxkbid0XG5cdFx0ZGl2LnN0eWxlLnJpZ2h0ID0gXCI2MCVcIjtcblx0XHRwaXhlbEJveFN0eWxlc1ZhbCA9IHJvdW5kUGl4ZWxNZWFzdXJlcyggZGl2U3R5bGUucmlnaHQgKSA9PT0gMzY7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA5IC0gMTEgb25seVxuXHRcdC8vIERldGVjdCBtaXNyZXBvcnRpbmcgb2YgY29udGVudCBkaW1lbnNpb25zIGZvciBib3gtc2l6aW5nOmJvcmRlci1ib3ggZWxlbWVudHNcblx0XHRib3hTaXppbmdSZWxpYWJsZVZhbCA9IHJvdW5kUGl4ZWxNZWFzdXJlcyggZGl2U3R5bGUud2lkdGggKSA9PT0gMzY7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA5IG9ubHlcblx0XHQvLyBEZXRlY3Qgb3ZlcmZsb3c6c2Nyb2xsIHNjcmV3aW5lc3MgKGdoLTM2OTkpXG5cdFx0Ly8gU3VwcG9ydDogQ2hyb21lIDw9NjRcblx0XHQvLyBEb24ndCBnZXQgdHJpY2tlZCB3aGVuIHpvb20gYWZmZWN0cyBvZmZzZXRXaWR0aCAoZ2gtNDAyOSlcblx0XHRkaXYuc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XG5cdFx0c2Nyb2xsYm94U2l6ZVZhbCA9IHJvdW5kUGl4ZWxNZWFzdXJlcyggZGl2Lm9mZnNldFdpZHRoIC8gMyApID09PSAxMjtcblxuXHRcdGRvY3VtZW50RWxlbWVudC5yZW1vdmVDaGlsZCggY29udGFpbmVyICk7XG5cblx0XHQvLyBOdWxsaWZ5IHRoZSBkaXYgc28gaXQgd291bGRuJ3QgYmUgc3RvcmVkIGluIHRoZSBtZW1vcnkgYW5kXG5cdFx0Ly8gaXQgd2lsbCBhbHNvIGJlIGEgc2lnbiB0aGF0IGNoZWNrcyBhbHJlYWR5IHBlcmZvcm1lZFxuXHRcdGRpdiA9IG51bGw7XG5cdH1cblxuXHRmdW5jdGlvbiByb3VuZFBpeGVsTWVhc3VyZXMoIG1lYXN1cmUgKSB7XG5cdFx0cmV0dXJuIE1hdGgucm91bmQoIHBhcnNlRmxvYXQoIG1lYXN1cmUgKSApO1xuXHR9XG5cblx0dmFyIHBpeGVsUG9zaXRpb25WYWwsIGJveFNpemluZ1JlbGlhYmxlVmFsLCBzY3JvbGxib3hTaXplVmFsLCBwaXhlbEJveFN0eWxlc1ZhbCxcblx0XHRyZWxpYWJsZVRyRGltZW5zaW9uc1ZhbCwgcmVsaWFibGVNYXJnaW5MZWZ0VmFsLFxuXHRcdGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKSxcblx0XHRkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICk7XG5cblx0Ly8gRmluaXNoIGVhcmx5IGluIGxpbWl0ZWQgKG5vbi1icm93c2VyKSBlbnZpcm9ubWVudHNcblx0aWYgKCAhZGl2LnN0eWxlICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHlcblx0Ly8gU3R5bGUgb2YgY2xvbmVkIGVsZW1lbnQgYWZmZWN0cyBzb3VyY2UgZWxlbWVudCBjbG9uZWQgKHRyYWMtODkwOClcblx0ZGl2LnN0eWxlLmJhY2tncm91bmRDbGlwID0gXCJjb250ZW50LWJveFwiO1xuXHRkaXYuY2xvbmVOb2RlKCB0cnVlICkuc3R5bGUuYmFja2dyb3VuZENsaXAgPSBcIlwiO1xuXHRzdXBwb3J0LmNsZWFyQ2xvbmVTdHlsZSA9IGRpdi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9PT0gXCJjb250ZW50LWJveFwiO1xuXG5cdGpRdWVyeS5leHRlbmQoIHN1cHBvcnQsIHtcblx0XHRib3hTaXppbmdSZWxpYWJsZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRjb21wdXRlU3R5bGVUZXN0cygpO1xuXHRcdFx0cmV0dXJuIGJveFNpemluZ1JlbGlhYmxlVmFsO1xuXHRcdH0sXG5cdFx0cGl4ZWxCb3hTdHlsZXM6IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29tcHV0ZVN0eWxlVGVzdHMoKTtcblx0XHRcdHJldHVybiBwaXhlbEJveFN0eWxlc1ZhbDtcblx0XHR9LFxuXHRcdHBpeGVsUG9zaXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29tcHV0ZVN0eWxlVGVzdHMoKTtcblx0XHRcdHJldHVybiBwaXhlbFBvc2l0aW9uVmFsO1xuXHRcdH0sXG5cdFx0cmVsaWFibGVNYXJnaW5MZWZ0OiBmdW5jdGlvbigpIHtcblx0XHRcdGNvbXB1dGVTdHlsZVRlc3RzKCk7XG5cdFx0XHRyZXR1cm4gcmVsaWFibGVNYXJnaW5MZWZ0VmFsO1xuXHRcdH0sXG5cdFx0c2Nyb2xsYm94U2l6ZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRjb21wdXRlU3R5bGVUZXN0cygpO1xuXHRcdFx0cmV0dXJuIHNjcm9sbGJveFNpemVWYWw7XG5cdFx0fSxcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDkgLSAxMSssIEVkZ2UgMTUgLSAxOCtcblx0XHQvLyBJRS9FZGdlIG1pc3JlcG9ydCBgZ2V0Q29tcHV0ZWRTdHlsZWAgb2YgdGFibGUgcm93cyB3aXRoIHdpZHRoL2hlaWdodFxuXHRcdC8vIHNldCBpbiBDU1Mgd2hpbGUgYG9mZnNldCpgIHByb3BlcnRpZXMgcmVwb3J0IGNvcnJlY3QgdmFsdWVzLlxuXHRcdC8vIEJlaGF2aW9yIGluIElFIDkgaXMgbW9yZSBzdWJ0bGUgdGhhbiBpbiBuZXdlciB2ZXJzaW9ucyAmIGl0IHBhc3Nlc1xuXHRcdC8vIHNvbWUgdmVyc2lvbnMgb2YgdGhpcyB0ZXN0OyBtYWtlIHN1cmUgbm90IHRvIG1ha2UgaXQgcGFzcyB0aGVyZSFcblx0XHQvL1xuXHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggNzArXG5cdFx0Ly8gT25seSBGaXJlZm94IGluY2x1ZGVzIGJvcmRlciB3aWR0aHNcblx0XHQvLyBpbiBjb21wdXRlZCBkaW1lbnNpb25zLiAoZ2gtNDUyOSlcblx0XHRyZWxpYWJsZVRyRGltZW5zaW9uczogZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgdGFibGUsIHRyLCB0ckNoaWxkLCB0clN0eWxlO1xuXHRcdFx0aWYgKCByZWxpYWJsZVRyRGltZW5zaW9uc1ZhbCA9PSBudWxsICkge1xuXHRcdFx0XHR0YWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwidGFibGVcIiApO1xuXHRcdFx0XHR0ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwidHJcIiApO1xuXHRcdFx0XHR0ckNoaWxkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApO1xuXG5cdFx0XHRcdHRhYmxlLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTExMTExcHg7Ym9yZGVyLWNvbGxhcHNlOnNlcGFyYXRlXCI7XG5cdFx0XHRcdHRyLnN0eWxlLmNzc1RleHQgPSBcImJvcmRlcjoxcHggc29saWRcIjtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBDaHJvbWUgODYrXG5cdFx0XHRcdC8vIEhlaWdodCBzZXQgdGhyb3VnaCBjc3NUZXh0IGRvZXMgbm90IGdldCBhcHBsaWVkLlxuXHRcdFx0XHQvLyBDb21wdXRlZCBoZWlnaHQgdGhlbiBjb21lcyBiYWNrIGFzIDAuXG5cdFx0XHRcdHRyLnN0eWxlLmhlaWdodCA9IFwiMXB4XCI7XG5cdFx0XHRcdHRyQ2hpbGQuc3R5bGUuaGVpZ2h0ID0gXCI5cHhcIjtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDggQ2hyb21lIDg2K1xuXHRcdFx0XHQvLyBJbiBvdXIgYm9keUJhY2tncm91bmQuaHRtbCBpZnJhbWUsXG5cdFx0XHRcdC8vIGRpc3BsYXkgZm9yIGFsbCBkaXYgZWxlbWVudHMgaXMgc2V0IHRvIFwiaW5saW5lXCIsXG5cdFx0XHRcdC8vIHdoaWNoIGNhdXNlcyBhIHByb2JsZW0gb25seSBpbiBBbmRyb2lkIDggQ2hyb21lIDg2LlxuXHRcdFx0XHQvLyBFbnN1cmluZyB0aGUgZGl2IGlzIGRpc3BsYXk6IGJsb2NrXG5cdFx0XHRcdC8vIGdldHMgYXJvdW5kIHRoaXMgaXNzdWUuXG5cdFx0XHRcdHRyQ2hpbGQuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcblxuXHRcdFx0XHRkb2N1bWVudEVsZW1lbnRcblx0XHRcdFx0XHQuYXBwZW5kQ2hpbGQoIHRhYmxlIClcblx0XHRcdFx0XHQuYXBwZW5kQ2hpbGQoIHRyIClcblx0XHRcdFx0XHQuYXBwZW5kQ2hpbGQoIHRyQ2hpbGQgKTtcblxuXHRcdFx0XHR0clN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoIHRyICk7XG5cdFx0XHRcdHJlbGlhYmxlVHJEaW1lbnNpb25zVmFsID0gKCBwYXJzZUludCggdHJTdHlsZS5oZWlnaHQsIDEwICkgK1xuXHRcdFx0XHRcdHBhcnNlSW50KCB0clN0eWxlLmJvcmRlclRvcFdpZHRoLCAxMCApICtcblx0XHRcdFx0XHRwYXJzZUludCggdHJTdHlsZS5ib3JkZXJCb3R0b21XaWR0aCwgMTAgKSApID09PSB0ci5vZmZzZXRIZWlnaHQ7XG5cblx0XHRcdFx0ZG9jdW1lbnRFbGVtZW50LnJlbW92ZUNoaWxkKCB0YWJsZSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlbGlhYmxlVHJEaW1lbnNpb25zVmFsO1xuXHRcdH1cblx0fSApO1xufSApKCk7XG5cblxuZnVuY3Rpb24gY3VyQ1NTKCBlbGVtLCBuYW1lLCBjb21wdXRlZCApIHtcblx0dmFyIHdpZHRoLCBtaW5XaWR0aCwgbWF4V2lkdGgsIHJldCxcblx0XHRpc0N1c3RvbVByb3AgPSByY3VzdG9tUHJvcC50ZXN0KCBuYW1lICksXG5cblx0XHQvLyBTdXBwb3J0OiBGaXJlZm94IDUxK1xuXHRcdC8vIFJldHJpZXZpbmcgc3R5bGUgYmVmb3JlIGNvbXB1dGVkIHNvbWVob3dcblx0XHQvLyBmaXhlcyBhbiBpc3N1ZSB3aXRoIGdldHRpbmcgd3JvbmcgdmFsdWVzXG5cdFx0Ly8gb24gZGV0YWNoZWQgZWxlbWVudHNcblx0XHRzdHlsZSA9IGVsZW0uc3R5bGU7XG5cblx0Y29tcHV0ZWQgPSBjb21wdXRlZCB8fCBnZXRTdHlsZXMoIGVsZW0gKTtcblxuXHQvLyBnZXRQcm9wZXJ0eVZhbHVlIGlzIG5lZWRlZCBmb3I6XG5cdC8vICAgLmNzcygnZmlsdGVyJykgKElFIDkgb25seSwgdHJhYy0xMjUzNylcblx0Ly8gICAuY3NzKCctLWN1c3RvbVByb3BlcnR5KSAoZ2gtMzE0NClcblx0aWYgKCBjb21wdXRlZCApIHtcblx0XHRyZXQgPSBjb21wdXRlZC5nZXRQcm9wZXJ0eVZhbHVlKCBuYW1lICkgfHwgY29tcHV0ZWRbIG5hbWUgXTtcblxuXHRcdC8vIHRyaW0gd2hpdGVzcGFjZSBmb3IgY3VzdG9tIHByb3BlcnR5IChpc3N1ZSBnaC00OTI2KVxuXHRcdGlmICggaXNDdXN0b21Qcm9wICkge1xuXG5cdFx0XHQvLyBydHJpbSB0cmVhdHMgVSswMDBEIENBUlJJQUdFIFJFVFVSTiBhbmQgVSswMDBDIEZPUk0gRkVFRFxuXHRcdFx0Ly8gYXMgd2hpdGVzcGFjZSB3aGlsZSBDU1MgZG9lcyBub3QsIGJ1dCB0aGlzIGlzIG5vdCBhIHByb2JsZW1cblx0XHRcdC8vIGJlY2F1c2UgQ1NTIHByZXByb2Nlc3NpbmcgcmVwbGFjZXMgdGhlbSB3aXRoIFUrMDAwQSBMSU5FIEZFRURcblx0XHRcdC8vICh3aGljaCAqaXMqIENTUyB3aGl0ZXNwYWNlKVxuXHRcdFx0Ly8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zeW50YXgtMy8jaW5wdXQtcHJlcHJvY2Vzc2luZ1xuXHRcdFx0cmV0ID0gcmV0LnJlcGxhY2UoIHJ0cmltQ1NTLCBcIiQxXCIgKTtcblx0XHR9XG5cblx0XHRpZiAoIHJldCA9PT0gXCJcIiAmJiAhaXNBdHRhY2hlZCggZWxlbSApICkge1xuXHRcdFx0cmV0ID0galF1ZXJ5LnN0eWxlKCBlbGVtLCBuYW1lICk7XG5cdFx0fVxuXG5cdFx0Ly8gQSB0cmlidXRlIHRvIHRoZSBcImF3ZXNvbWUgaGFjayBieSBEZWFuIEVkd2FyZHNcIlxuXHRcdC8vIEFuZHJvaWQgQnJvd3NlciByZXR1cm5zIHBlcmNlbnRhZ2UgZm9yIHNvbWUgdmFsdWVzLFxuXHRcdC8vIGJ1dCB3aWR0aCBzZWVtcyB0byBiZSByZWxpYWJseSBwaXhlbHMuXG5cdFx0Ly8gVGhpcyBpcyBhZ2FpbnN0IHRoZSBDU1NPTSBkcmFmdCBzcGVjOlxuXHRcdC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8jcmVzb2x2ZWQtdmFsdWVzXG5cdFx0aWYgKCAhc3VwcG9ydC5waXhlbEJveFN0eWxlcygpICYmIHJudW1ub25weC50ZXN0KCByZXQgKSAmJiByYm94U3R5bGUudGVzdCggbmFtZSApICkge1xuXG5cdFx0XHQvLyBSZW1lbWJlciB0aGUgb3JpZ2luYWwgdmFsdWVzXG5cdFx0XHR3aWR0aCA9IHN0eWxlLndpZHRoO1xuXHRcdFx0bWluV2lkdGggPSBzdHlsZS5taW5XaWR0aDtcblx0XHRcdG1heFdpZHRoID0gc3R5bGUubWF4V2lkdGg7XG5cblx0XHRcdC8vIFB1dCBpbiB0aGUgbmV3IHZhbHVlcyB0byBnZXQgYSBjb21wdXRlZCB2YWx1ZSBvdXRcblx0XHRcdHN0eWxlLm1pbldpZHRoID0gc3R5bGUubWF4V2lkdGggPSBzdHlsZS53aWR0aCA9IHJldDtcblx0XHRcdHJldCA9IGNvbXB1dGVkLndpZHRoO1xuXG5cdFx0XHQvLyBSZXZlcnQgdGhlIGNoYW5nZWQgdmFsdWVzXG5cdFx0XHRzdHlsZS53aWR0aCA9IHdpZHRoO1xuXHRcdFx0c3R5bGUubWluV2lkdGggPSBtaW5XaWR0aDtcblx0XHRcdHN0eWxlLm1heFdpZHRoID0gbWF4V2lkdGg7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHJldCAhPT0gdW5kZWZpbmVkID9cblxuXHRcdC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHlcblx0XHQvLyBJRSByZXR1cm5zIHpJbmRleCB2YWx1ZSBhcyBhbiBpbnRlZ2VyLlxuXHRcdHJldCArIFwiXCIgOlxuXHRcdHJldDtcbn1cblxuXG5mdW5jdGlvbiBhZGRHZXRIb29rSWYoIGNvbmRpdGlvbkZuLCBob29rRm4gKSB7XG5cblx0Ly8gRGVmaW5lIHRoZSBob29rLCB3ZSdsbCBjaGVjayBvbiB0aGUgZmlyc3QgcnVuIGlmIGl0J3MgcmVhbGx5IG5lZWRlZC5cblx0cmV0dXJuIHtcblx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCBjb25kaXRpb25GbigpICkge1xuXG5cdFx0XHRcdC8vIEhvb2sgbm90IG5lZWRlZCAob3IgaXQncyBub3QgcG9zc2libGUgdG8gdXNlIGl0IGR1ZVxuXHRcdFx0XHQvLyB0byBtaXNzaW5nIGRlcGVuZGVuY3kpLCByZW1vdmUgaXQuXG5cdFx0XHRcdGRlbGV0ZSB0aGlzLmdldDtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBIb29rIG5lZWRlZDsgcmVkZWZpbmUgaXQgc28gdGhhdCB0aGUgc3VwcG9ydCB0ZXN0IGlzIG5vdCBleGVjdXRlZCBhZ2Fpbi5cblx0XHRcdHJldHVybiAoIHRoaXMuZ2V0ID0gaG9va0ZuICkuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdH1cblx0fTtcbn1cblxuXG52YXIgY3NzUHJlZml4ZXMgPSBbIFwiV2Via2l0XCIsIFwiTW96XCIsIFwibXNcIiBdLFxuXHRlbXB0eVN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApLnN0eWxlLFxuXHR2ZW5kb3JQcm9wcyA9IHt9O1xuXG4vLyBSZXR1cm4gYSB2ZW5kb3ItcHJlZml4ZWQgcHJvcGVydHkgb3IgdW5kZWZpbmVkXG5mdW5jdGlvbiB2ZW5kb3JQcm9wTmFtZSggbmFtZSApIHtcblxuXHQvLyBDaGVjayBmb3IgdmVuZG9yIHByZWZpeGVkIG5hbWVzXG5cdHZhciBjYXBOYW1lID0gbmFtZVsgMCBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKCAxICksXG5cdFx0aSA9IGNzc1ByZWZpeGVzLmxlbmd0aDtcblxuXHR3aGlsZSAoIGktLSApIHtcblx0XHRuYW1lID0gY3NzUHJlZml4ZXNbIGkgXSArIGNhcE5hbWU7XG5cdFx0aWYgKCBuYW1lIGluIGVtcHR5U3R5bGUgKSB7XG5cdFx0XHRyZXR1cm4gbmFtZTtcblx0XHR9XG5cdH1cbn1cblxuLy8gUmV0dXJuIGEgcG90ZW50aWFsbHktbWFwcGVkIGpRdWVyeS5jc3NQcm9wcyBvciB2ZW5kb3IgcHJlZml4ZWQgcHJvcGVydHlcbmZ1bmN0aW9uIGZpbmFsUHJvcE5hbWUoIG5hbWUgKSB7XG5cdHZhciBmaW5hbCA9IGpRdWVyeS5jc3NQcm9wc1sgbmFtZSBdIHx8IHZlbmRvclByb3BzWyBuYW1lIF07XG5cblx0aWYgKCBmaW5hbCApIHtcblx0XHRyZXR1cm4gZmluYWw7XG5cdH1cblx0aWYgKCBuYW1lIGluIGVtcHR5U3R5bGUgKSB7XG5cdFx0cmV0dXJuIG5hbWU7XG5cdH1cblx0cmV0dXJuIHZlbmRvclByb3BzWyBuYW1lIF0gPSB2ZW5kb3JQcm9wTmFtZSggbmFtZSApIHx8IG5hbWU7XG59XG5cblxudmFyXG5cblx0Ly8gU3dhcHBhYmxlIGlmIGRpc3BsYXkgaXMgbm9uZSBvciBzdGFydHMgd2l0aCB0YWJsZVxuXHQvLyBleGNlcHQgXCJ0YWJsZVwiLCBcInRhYmxlLWNlbGxcIiwgb3IgXCJ0YWJsZS1jYXB0aW9uXCJcblx0Ly8gU2VlIGhlcmUgZm9yIGRpc3BsYXkgdmFsdWVzOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUy9kaXNwbGF5XG5cdHJkaXNwbGF5c3dhcCA9IC9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxcblx0Y3NzU2hvdyA9IHsgcG9zaXRpb246IFwiYWJzb2x1dGVcIiwgdmlzaWJpbGl0eTogXCJoaWRkZW5cIiwgZGlzcGxheTogXCJibG9ja1wiIH0sXG5cdGNzc05vcm1hbFRyYW5zZm9ybSA9IHtcblx0XHRsZXR0ZXJTcGFjaW5nOiBcIjBcIixcblx0XHRmb250V2VpZ2h0OiBcIjQwMFwiXG5cdH07XG5cbmZ1bmN0aW9uIHNldFBvc2l0aXZlTnVtYmVyKCBfZWxlbSwgdmFsdWUsIHN1YnRyYWN0ICkge1xuXG5cdC8vIEFueSByZWxhdGl2ZSAoKy8tKSB2YWx1ZXMgaGF2ZSBhbHJlYWR5IGJlZW5cblx0Ly8gbm9ybWFsaXplZCBhdCB0aGlzIHBvaW50XG5cdHZhciBtYXRjaGVzID0gcmNzc051bS5leGVjKCB2YWx1ZSApO1xuXHRyZXR1cm4gbWF0Y2hlcyA/XG5cblx0XHQvLyBHdWFyZCBhZ2FpbnN0IHVuZGVmaW5lZCBcInN1YnRyYWN0XCIsIGUuZy4sIHdoZW4gdXNlZCBhcyBpbiBjc3NIb29rc1xuXHRcdE1hdGgubWF4KCAwLCBtYXRjaGVzWyAyIF0gLSAoIHN1YnRyYWN0IHx8IDAgKSApICsgKCBtYXRjaGVzWyAzIF0gfHwgXCJweFwiICkgOlxuXHRcdHZhbHVlO1xufVxuXG5mdW5jdGlvbiBib3hNb2RlbEFkanVzdG1lbnQoIGVsZW0sIGRpbWVuc2lvbiwgYm94LCBpc0JvcmRlckJveCwgc3R5bGVzLCBjb21wdXRlZFZhbCApIHtcblx0dmFyIGkgPSBkaW1lbnNpb24gPT09IFwid2lkdGhcIiA/IDEgOiAwLFxuXHRcdGV4dHJhID0gMCxcblx0XHRkZWx0YSA9IDA7XG5cblx0Ly8gQWRqdXN0bWVudCBtYXkgbm90IGJlIG5lY2Vzc2FyeVxuXHRpZiAoIGJveCA9PT0gKCBpc0JvcmRlckJveCA/IFwiYm9yZGVyXCIgOiBcImNvbnRlbnRcIiApICkge1xuXHRcdHJldHVybiAwO1xuXHR9XG5cblx0Zm9yICggOyBpIDwgNDsgaSArPSAyICkge1xuXG5cdFx0Ly8gQm90aCBib3ggbW9kZWxzIGV4Y2x1ZGUgbWFyZ2luXG5cdFx0aWYgKCBib3ggPT09IFwibWFyZ2luXCIgKSB7XG5cdFx0XHRkZWx0YSArPSBqUXVlcnkuY3NzKCBlbGVtLCBib3ggKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7XG5cdFx0fVxuXG5cdFx0Ly8gSWYgd2UgZ2V0IGhlcmUgd2l0aCBhIGNvbnRlbnQtYm94LCB3ZSdyZSBzZWVraW5nIFwicGFkZGluZ1wiIG9yIFwiYm9yZGVyXCIgb3IgXCJtYXJnaW5cIlxuXHRcdGlmICggIWlzQm9yZGVyQm94ICkge1xuXG5cdFx0XHQvLyBBZGQgcGFkZGluZ1xuXHRcdFx0ZGVsdGEgKz0galF1ZXJ5LmNzcyggZWxlbSwgXCJwYWRkaW5nXCIgKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7XG5cblx0XHRcdC8vIEZvciBcImJvcmRlclwiIG9yIFwibWFyZ2luXCIsIGFkZCBib3JkZXJcblx0XHRcdGlmICggYm94ICE9PSBcInBhZGRpbmdcIiApIHtcblx0XHRcdFx0ZGVsdGEgKz0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3JkZXJcIiArIGNzc0V4cGFuZFsgaSBdICsgXCJXaWR0aFwiLCB0cnVlLCBzdHlsZXMgKTtcblxuXHRcdFx0Ly8gQnV0IHN0aWxsIGtlZXAgdHJhY2sgb2YgaXQgb3RoZXJ3aXNlXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRleHRyYSArPSBqUXVlcnkuY3NzKCBlbGVtLCBcImJvcmRlclwiICsgY3NzRXhwYW5kWyBpIF0gKyBcIldpZHRoXCIsIHRydWUsIHN0eWxlcyApO1xuXHRcdFx0fVxuXG5cdFx0Ly8gSWYgd2UgZ2V0IGhlcmUgd2l0aCBhIGJvcmRlci1ib3ggKGNvbnRlbnQgKyBwYWRkaW5nICsgYm9yZGVyKSwgd2UncmUgc2Vla2luZyBcImNvbnRlbnRcIiBvclxuXHRcdC8vIFwicGFkZGluZ1wiIG9yIFwibWFyZ2luXCJcblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyBGb3IgXCJjb250ZW50XCIsIHN1YnRyYWN0IHBhZGRpbmdcblx0XHRcdGlmICggYm94ID09PSBcImNvbnRlbnRcIiApIHtcblx0XHRcdFx0ZGVsdGEgLT0galF1ZXJ5LmNzcyggZWxlbSwgXCJwYWRkaW5nXCIgKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEZvciBcImNvbnRlbnRcIiBvciBcInBhZGRpbmdcIiwgc3VidHJhY3QgYm9yZGVyXG5cdFx0XHRpZiAoIGJveCAhPT0gXCJtYXJnaW5cIiApIHtcblx0XHRcdFx0ZGVsdGEgLT0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3JkZXJcIiArIGNzc0V4cGFuZFsgaSBdICsgXCJXaWR0aFwiLCB0cnVlLCBzdHlsZXMgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBBY2NvdW50IGZvciBwb3NpdGl2ZSBjb250ZW50LWJveCBzY3JvbGwgZ3V0dGVyIHdoZW4gcmVxdWVzdGVkIGJ5IHByb3ZpZGluZyBjb21wdXRlZFZhbFxuXHRpZiAoICFpc0JvcmRlckJveCAmJiBjb21wdXRlZFZhbCA+PSAwICkge1xuXG5cdFx0Ly8gb2Zmc2V0V2lkdGgvb2Zmc2V0SGVpZ2h0IGlzIGEgcm91bmRlZCBzdW0gb2YgY29udGVudCwgcGFkZGluZywgc2Nyb2xsIGd1dHRlciwgYW5kIGJvcmRlclxuXHRcdC8vIEFzc3VtaW5nIGludGVnZXIgc2Nyb2xsIGd1dHRlciwgc3VidHJhY3QgdGhlIHJlc3QgYW5kIHJvdW5kIGRvd25cblx0XHRkZWx0YSArPSBNYXRoLm1heCggMCwgTWF0aC5jZWlsKFxuXHRcdFx0ZWxlbVsgXCJvZmZzZXRcIiArIGRpbWVuc2lvblsgMCBdLnRvVXBwZXJDYXNlKCkgKyBkaW1lbnNpb24uc2xpY2UoIDEgKSBdIC1cblx0XHRcdGNvbXB1dGVkVmFsIC1cblx0XHRcdGRlbHRhIC1cblx0XHRcdGV4dHJhIC1cblx0XHRcdDAuNVxuXG5cdFx0Ly8gSWYgb2Zmc2V0V2lkdGgvb2Zmc2V0SGVpZ2h0IGlzIHVua25vd24sIHRoZW4gd2UgY2FuJ3QgZGV0ZXJtaW5lIGNvbnRlbnQtYm94IHNjcm9sbCBndXR0ZXJcblx0XHQvLyBVc2UgYW4gZXhwbGljaXQgemVybyB0byBhdm9pZCBOYU4gKGdoLTM5NjQpXG5cdFx0KSApIHx8IDA7XG5cdH1cblxuXHRyZXR1cm4gZGVsdGE7XG59XG5cbmZ1bmN0aW9uIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIGRpbWVuc2lvbiwgZXh0cmEgKSB7XG5cblx0Ly8gU3RhcnQgd2l0aCBjb21wdXRlZCBzdHlsZVxuXHR2YXIgc3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICksXG5cblx0XHQvLyBUbyBhdm9pZCBmb3JjaW5nIGEgcmVmbG93LCBvbmx5IGZldGNoIGJveFNpemluZyBpZiB3ZSBuZWVkIGl0IChnaC00MzIyKS5cblx0XHQvLyBGYWtlIGNvbnRlbnQtYm94IHVudGlsIHdlIGtub3cgaXQncyBuZWVkZWQgdG8ga25vdyB0aGUgdHJ1ZSB2YWx1ZS5cblx0XHRib3hTaXppbmdOZWVkZWQgPSAhc3VwcG9ydC5ib3hTaXppbmdSZWxpYWJsZSgpIHx8IGV4dHJhLFxuXHRcdGlzQm9yZGVyQm94ID0gYm94U2l6aW5nTmVlZGVkICYmXG5cdFx0XHRqUXVlcnkuY3NzKCBlbGVtLCBcImJveFNpemluZ1wiLCBmYWxzZSwgc3R5bGVzICkgPT09IFwiYm9yZGVyLWJveFwiLFxuXHRcdHZhbHVlSXNCb3JkZXJCb3ggPSBpc0JvcmRlckJveCxcblxuXHRcdHZhbCA9IGN1ckNTUyggZWxlbSwgZGltZW5zaW9uLCBzdHlsZXMgKSxcblx0XHRvZmZzZXRQcm9wID0gXCJvZmZzZXRcIiArIGRpbWVuc2lvblsgMCBdLnRvVXBwZXJDYXNlKCkgKyBkaW1lbnNpb24uc2xpY2UoIDEgKTtcblxuXHQvLyBTdXBwb3J0OiBGaXJlZm94IDw9NTRcblx0Ly8gUmV0dXJuIGEgY29uZm91bmRpbmcgbm9uLXBpeGVsIHZhbHVlIG9yIGZlaWduIGlnbm9yYW5jZSwgYXMgYXBwcm9wcmlhdGUuXG5cdGlmICggcm51bW5vbnB4LnRlc3QoIHZhbCApICkge1xuXHRcdGlmICggIWV4dHJhICkge1xuXHRcdFx0cmV0dXJuIHZhbDtcblx0XHR9XG5cdFx0dmFsID0gXCJhdXRvXCI7XG5cdH1cblxuXG5cdC8vIFN1cHBvcnQ6IElFIDkgLSAxMSBvbmx5XG5cdC8vIFVzZSBvZmZzZXRXaWR0aC9vZmZzZXRIZWlnaHQgZm9yIHdoZW4gYm94IHNpemluZyBpcyB1bnJlbGlhYmxlLlxuXHQvLyBJbiB0aG9zZSBjYXNlcywgdGhlIGNvbXB1dGVkIHZhbHVlIGNhbiBiZSB0cnVzdGVkIHRvIGJlIGJvcmRlci1ib3guXG5cdGlmICggKCAhc3VwcG9ydC5ib3hTaXppbmdSZWxpYWJsZSgpICYmIGlzQm9yZGVyQm94IHx8XG5cblx0XHQvLyBTdXBwb3J0OiBJRSAxMCAtIDExKywgRWRnZSAxNSAtIDE4K1xuXHRcdC8vIElFL0VkZ2UgbWlzcmVwb3J0IGBnZXRDb21wdXRlZFN0eWxlYCBvZiB0YWJsZSByb3dzIHdpdGggd2lkdGgvaGVpZ2h0XG5cdFx0Ly8gc2V0IGluIENTUyB3aGlsZSBgb2Zmc2V0KmAgcHJvcGVydGllcyByZXBvcnQgY29ycmVjdCB2YWx1ZXMuXG5cdFx0Ly8gSW50ZXJlc3RpbmdseSwgaW4gc29tZSBjYXNlcyBJRSA5IGRvZXNuJ3Qgc3VmZmVyIGZyb20gdGhpcyBpc3N1ZS5cblx0XHQhc3VwcG9ydC5yZWxpYWJsZVRyRGltZW5zaW9ucygpICYmIG5vZGVOYW1lKCBlbGVtLCBcInRyXCIgKSB8fFxuXG5cdFx0Ly8gRmFsbCBiYWNrIHRvIG9mZnNldFdpZHRoL29mZnNldEhlaWdodCB3aGVuIHZhbHVlIGlzIFwiYXV0b1wiXG5cdFx0Ly8gVGhpcyBoYXBwZW5zIGZvciBpbmxpbmUgZWxlbWVudHMgd2l0aCBubyBleHBsaWNpdCBzZXR0aW5nIChnaC0zNTcxKVxuXHRcdHZhbCA9PT0gXCJhdXRvXCIgfHxcblxuXHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjEgLSA0LjMgb25seVxuXHRcdC8vIEFsc28gdXNlIG9mZnNldFdpZHRoL29mZnNldEhlaWdodCBmb3IgbWlzcmVwb3J0ZWQgaW5saW5lIGRpbWVuc2lvbnMgKGdoLTM2MDIpXG5cdFx0IXBhcnNlRmxvYXQoIHZhbCApICYmIGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiLCBmYWxzZSwgc3R5bGVzICkgPT09IFwiaW5saW5lXCIgKSAmJlxuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoZSBlbGVtZW50IGlzIHZpc2libGUgJiBjb25uZWN0ZWRcblx0XHRlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoICkge1xuXG5cdFx0aXNCb3JkZXJCb3ggPSBqUXVlcnkuY3NzKCBlbGVtLCBcImJveFNpemluZ1wiLCBmYWxzZSwgc3R5bGVzICkgPT09IFwiYm9yZGVyLWJveFwiO1xuXG5cdFx0Ly8gV2hlcmUgYXZhaWxhYmxlLCBvZmZzZXRXaWR0aC9vZmZzZXRIZWlnaHQgYXBwcm94aW1hdGUgYm9yZGVyIGJveCBkaW1lbnNpb25zLlxuXHRcdC8vIFdoZXJlIG5vdCBhdmFpbGFibGUgKGUuZy4sIFNWRyksIGFzc3VtZSB1bnJlbGlhYmxlIGJveC1zaXppbmcgYW5kIGludGVycHJldCB0aGVcblx0XHQvLyByZXRyaWV2ZWQgdmFsdWUgYXMgYSBjb250ZW50IGJveCBkaW1lbnNpb24uXG5cdFx0dmFsdWVJc0JvcmRlckJveCA9IG9mZnNldFByb3AgaW4gZWxlbTtcblx0XHRpZiAoIHZhbHVlSXNCb3JkZXJCb3ggKSB7XG5cdFx0XHR2YWwgPSBlbGVtWyBvZmZzZXRQcm9wIF07XG5cdFx0fVxuXHR9XG5cblx0Ly8gTm9ybWFsaXplIFwiXCIgYW5kIGF1dG9cblx0dmFsID0gcGFyc2VGbG9hdCggdmFsICkgfHwgMDtcblxuXHQvLyBBZGp1c3QgZm9yIHRoZSBlbGVtZW50J3MgYm94IG1vZGVsXG5cdHJldHVybiAoIHZhbCArXG5cdFx0Ym94TW9kZWxBZGp1c3RtZW50KFxuXHRcdFx0ZWxlbSxcblx0XHRcdGRpbWVuc2lvbixcblx0XHRcdGV4dHJhIHx8ICggaXNCb3JkZXJCb3ggPyBcImJvcmRlclwiIDogXCJjb250ZW50XCIgKSxcblx0XHRcdHZhbHVlSXNCb3JkZXJCb3gsXG5cdFx0XHRzdHlsZXMsXG5cblx0XHRcdC8vIFByb3ZpZGUgdGhlIGN1cnJlbnQgY29tcHV0ZWQgc2l6ZSB0byByZXF1ZXN0IHNjcm9sbCBndXR0ZXIgY2FsY3VsYXRpb24gKGdoLTM1ODkpXG5cdFx0XHR2YWxcblx0XHQpXG5cdCkgKyBcInB4XCI7XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblxuXHQvLyBBZGQgaW4gc3R5bGUgcHJvcGVydHkgaG9va3MgZm9yIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHRcblx0Ly8gYmVoYXZpb3Igb2YgZ2V0dGluZyBhbmQgc2V0dGluZyBhIHN0eWxlIHByb3BlcnR5XG5cdGNzc0hvb2tzOiB7XG5cdFx0b3BhY2l0eToge1xuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XG5cdFx0XHRcdGlmICggY29tcHV0ZWQgKSB7XG5cblx0XHRcdFx0XHQvLyBXZSBzaG91bGQgYWx3YXlzIGdldCBhIG51bWJlciBiYWNrIGZyb20gb3BhY2l0eVxuXHRcdFx0XHRcdHZhciByZXQgPSBjdXJDU1MoIGVsZW0sIFwib3BhY2l0eVwiICk7XG5cdFx0XHRcdFx0cmV0dXJuIHJldCA9PT0gXCJcIiA/IFwiMVwiIDogcmV0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdC8vIERvbid0IGF1dG9tYXRpY2FsbHkgYWRkIFwicHhcIiB0byB0aGVzZSBwb3NzaWJseS11bml0bGVzcyBwcm9wZXJ0aWVzXG5cdGNzc051bWJlcjoge1xuXHRcdFwiYW5pbWF0aW9uSXRlcmF0aW9uQ291bnRcIjogdHJ1ZSxcblx0XHRcImNvbHVtbkNvdW50XCI6IHRydWUsXG5cdFx0XCJmaWxsT3BhY2l0eVwiOiB0cnVlLFxuXHRcdFwiZmxleEdyb3dcIjogdHJ1ZSxcblx0XHRcImZsZXhTaHJpbmtcIjogdHJ1ZSxcblx0XHRcImZvbnRXZWlnaHRcIjogdHJ1ZSxcblx0XHRcImdyaWRBcmVhXCI6IHRydWUsXG5cdFx0XCJncmlkQ29sdW1uXCI6IHRydWUsXG5cdFx0XCJncmlkQ29sdW1uRW5kXCI6IHRydWUsXG5cdFx0XCJncmlkQ29sdW1uU3RhcnRcIjogdHJ1ZSxcblx0XHRcImdyaWRSb3dcIjogdHJ1ZSxcblx0XHRcImdyaWRSb3dFbmRcIjogdHJ1ZSxcblx0XHRcImdyaWRSb3dTdGFydFwiOiB0cnVlLFxuXHRcdFwibGluZUhlaWdodFwiOiB0cnVlLFxuXHRcdFwib3BhY2l0eVwiOiB0cnVlLFxuXHRcdFwib3JkZXJcIjogdHJ1ZSxcblx0XHRcIm9ycGhhbnNcIjogdHJ1ZSxcblx0XHRcIndpZG93c1wiOiB0cnVlLFxuXHRcdFwiekluZGV4XCI6IHRydWUsXG5cdFx0XCJ6b29tXCI6IHRydWVcblx0fSxcblxuXHQvLyBBZGQgaW4gcHJvcGVydGllcyB3aG9zZSBuYW1lcyB5b3Ugd2lzaCB0byBmaXggYmVmb3JlXG5cdC8vIHNldHRpbmcgb3IgZ2V0dGluZyB0aGUgdmFsdWVcblx0Y3NzUHJvcHM6IHt9LFxuXG5cdC8vIEdldCBhbmQgc2V0IHRoZSBzdHlsZSBwcm9wZXJ0eSBvbiBhIERPTSBOb2RlXG5cdHN0eWxlOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUsIGV4dHJhICkge1xuXG5cdFx0Ly8gRG9uJ3Qgc2V0IHN0eWxlcyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzXG5cdFx0aWYgKCAhZWxlbSB8fCBlbGVtLm5vZGVUeXBlID09PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT09IDggfHwgIWVsZW0uc3R5bGUgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lXG5cdFx0dmFyIHJldCwgdHlwZSwgaG9va3MsXG5cdFx0XHRvcmlnTmFtZSA9IGNhbWVsQ2FzZSggbmFtZSApLFxuXHRcdFx0aXNDdXN0b21Qcm9wID0gcmN1c3RvbVByb3AudGVzdCggbmFtZSApLFxuXHRcdFx0c3R5bGUgPSBlbGVtLnN0eWxlO1xuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lLiBXZSBkb24ndFxuXHRcdC8vIHdhbnQgdG8gcXVlcnkgdGhlIHZhbHVlIGlmIGl0IGlzIGEgQ1NTIGN1c3RvbSBwcm9wZXJ0eVxuXHRcdC8vIHNpbmNlIHRoZXkgYXJlIHVzZXItZGVmaW5lZC5cblx0XHRpZiAoICFpc0N1c3RvbVByb3AgKSB7XG5cdFx0XHRuYW1lID0gZmluYWxQcm9wTmFtZSggb3JpZ05hbWUgKTtcblx0XHR9XG5cblx0XHQvLyBHZXRzIGhvb2sgZm9yIHRoZSBwcmVmaXhlZCB2ZXJzaW9uLCB0aGVuIHVucHJlZml4ZWQgdmVyc2lvblxuXHRcdGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gfHwgalF1ZXJ5LmNzc0hvb2tzWyBvcmlnTmFtZSBdO1xuXG5cdFx0Ly8gQ2hlY2sgaWYgd2UncmUgc2V0dGluZyBhIHZhbHVlXG5cdFx0aWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0dHlwZSA9IHR5cGVvZiB2YWx1ZTtcblxuXHRcdFx0Ly8gQ29udmVydCBcIis9XCIgb3IgXCItPVwiIHRvIHJlbGF0aXZlIG51bWJlcnMgKHRyYWMtNzM0NSlcblx0XHRcdGlmICggdHlwZSA9PT0gXCJzdHJpbmdcIiAmJiAoIHJldCA9IHJjc3NOdW0uZXhlYyggdmFsdWUgKSApICYmIHJldFsgMSBdICkge1xuXHRcdFx0XHR2YWx1ZSA9IGFkanVzdENTUyggZWxlbSwgbmFtZSwgcmV0ICk7XG5cblx0XHRcdFx0Ly8gRml4ZXMgYnVnIHRyYWMtOTIzN1xuXHRcdFx0XHR0eXBlID0gXCJudW1iZXJcIjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTWFrZSBzdXJlIHRoYXQgbnVsbCBhbmQgTmFOIHZhbHVlcyBhcmVuJ3Qgc2V0ICh0cmFjLTcxMTYpXG5cdFx0XHRpZiAoIHZhbHVlID09IG51bGwgfHwgdmFsdWUgIT09IHZhbHVlICkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIGEgbnVtYmVyIHdhcyBwYXNzZWQgaW4sIGFkZCB0aGUgdW5pdCAoZXhjZXB0IGZvciBjZXJ0YWluIENTUyBwcm9wZXJ0aWVzKVxuXHRcdFx0Ly8gVGhlIGlzQ3VzdG9tUHJvcCBjaGVjayBjYW4gYmUgcmVtb3ZlZCBpbiBqUXVlcnkgNC4wIHdoZW4gd2Ugb25seSBhdXRvLWFwcGVuZFxuXHRcdFx0Ly8gXCJweFwiIHRvIGEgZmV3IGhhcmRjb2RlZCB2YWx1ZXMuXG5cdFx0XHRpZiAoIHR5cGUgPT09IFwibnVtYmVyXCIgJiYgIWlzQ3VzdG9tUHJvcCApIHtcblx0XHRcdFx0dmFsdWUgKz0gcmV0ICYmIHJldFsgMyBdIHx8ICggalF1ZXJ5LmNzc051bWJlclsgb3JpZ05hbWUgXSA/IFwiXCIgOiBcInB4XCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gYmFja2dyb3VuZC0qIHByb3BzIGFmZmVjdCBvcmlnaW5hbCBjbG9uZSdzIHZhbHVlc1xuXHRcdFx0aWYgKCAhc3VwcG9ydC5jbGVhckNsb25lU3R5bGUgJiYgdmFsdWUgPT09IFwiXCIgJiYgbmFtZS5pbmRleE9mKCBcImJhY2tncm91bmRcIiApID09PSAwICkge1xuXHRcdFx0XHRzdHlsZVsgbmFtZSBdID0gXCJpbmhlcml0XCI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQsIHVzZSB0aGF0IHZhbHVlLCBvdGhlcndpc2UganVzdCBzZXQgdGhlIHNwZWNpZmllZCB2YWx1ZVxuXHRcdFx0aWYgKCAhaG9va3MgfHwgISggXCJzZXRcIiBpbiBob29rcyApIHx8XG5cdFx0XHRcdCggdmFsdWUgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBleHRyYSApICkgIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0XHRpZiAoIGlzQ3VzdG9tUHJvcCApIHtcblx0XHRcdFx0XHRzdHlsZS5zZXRQcm9wZXJ0eSggbmFtZSwgdmFsdWUgKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzdHlsZVsgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQgZ2V0IHRoZSBub24tY29tcHV0ZWQgdmFsdWUgZnJvbSB0aGVyZVxuXHRcdFx0aWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICYmXG5cdFx0XHRcdCggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBmYWxzZSwgZXh0cmEgKSApICE9PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIGp1c3QgZ2V0IHRoZSB2YWx1ZSBmcm9tIHRoZSBzdHlsZSBvYmplY3Rcblx0XHRcdHJldHVybiBzdHlsZVsgbmFtZSBdO1xuXHRcdH1cblx0fSxcblxuXHRjc3M6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBleHRyYSwgc3R5bGVzICkge1xuXHRcdHZhciB2YWwsIG51bSwgaG9va3MsXG5cdFx0XHRvcmlnTmFtZSA9IGNhbWVsQ2FzZSggbmFtZSApLFxuXHRcdFx0aXNDdXN0b21Qcm9wID0gcmN1c3RvbVByb3AudGVzdCggbmFtZSApO1xuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lLiBXZSBkb24ndFxuXHRcdC8vIHdhbnQgdG8gbW9kaWZ5IHRoZSB2YWx1ZSBpZiBpdCBpcyBhIENTUyBjdXN0b20gcHJvcGVydHlcblx0XHQvLyBzaW5jZSB0aGV5IGFyZSB1c2VyLWRlZmluZWQuXG5cdFx0aWYgKCAhaXNDdXN0b21Qcm9wICkge1xuXHRcdFx0bmFtZSA9IGZpbmFsUHJvcE5hbWUoIG9yaWdOYW1lICk7XG5cdFx0fVxuXG5cdFx0Ly8gVHJ5IHByZWZpeGVkIG5hbWUgZm9sbG93ZWQgYnkgdGhlIHVucHJlZml4ZWQgbmFtZVxuXHRcdGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gfHwgalF1ZXJ5LmNzc0hvb2tzWyBvcmlnTmFtZSBdO1xuXG5cdFx0Ly8gSWYgYSBob29rIHdhcyBwcm92aWRlZCBnZXQgdGhlIGNvbXB1dGVkIHZhbHVlIGZyb20gdGhlcmVcblx0XHRpZiAoIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgKSB7XG5cdFx0XHR2YWwgPSBob29rcy5nZXQoIGVsZW0sIHRydWUsIGV4dHJhICk7XG5cdFx0fVxuXG5cdFx0Ly8gT3RoZXJ3aXNlLCBpZiBhIHdheSB0byBnZXQgdGhlIGNvbXB1dGVkIHZhbHVlIGV4aXN0cywgdXNlIHRoYXRcblx0XHRpZiAoIHZhbCA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0dmFsID0gY3VyQ1NTKCBlbGVtLCBuYW1lLCBzdHlsZXMgKTtcblx0XHR9XG5cblx0XHQvLyBDb252ZXJ0IFwibm9ybWFsXCIgdG8gY29tcHV0ZWQgdmFsdWVcblx0XHRpZiAoIHZhbCA9PT0gXCJub3JtYWxcIiAmJiBuYW1lIGluIGNzc05vcm1hbFRyYW5zZm9ybSApIHtcblx0XHRcdHZhbCA9IGNzc05vcm1hbFRyYW5zZm9ybVsgbmFtZSBdO1xuXHRcdH1cblxuXHRcdC8vIE1ha2UgbnVtZXJpYyBpZiBmb3JjZWQgb3IgYSBxdWFsaWZpZXIgd2FzIHByb3ZpZGVkIGFuZCB2YWwgbG9va3MgbnVtZXJpY1xuXHRcdGlmICggZXh0cmEgPT09IFwiXCIgfHwgZXh0cmEgKSB7XG5cdFx0XHRudW0gPSBwYXJzZUZsb2F0KCB2YWwgKTtcblx0XHRcdHJldHVybiBleHRyYSA9PT0gdHJ1ZSB8fCBpc0Zpbml0ZSggbnVtICkgPyBudW0gfHwgMCA6IHZhbDtcblx0XHR9XG5cblx0XHRyZXR1cm4gdmFsO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5lYWNoKCBbIFwiaGVpZ2h0XCIsIFwid2lkdGhcIiBdLCBmdW5jdGlvbiggX2ksIGRpbWVuc2lvbiApIHtcblx0alF1ZXJ5LmNzc0hvb2tzWyBkaW1lbnNpb24gXSA9IHtcblx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCwgZXh0cmEgKSB7XG5cdFx0XHRpZiAoIGNvbXB1dGVkICkge1xuXG5cdFx0XHRcdC8vIENlcnRhaW4gZWxlbWVudHMgY2FuIGhhdmUgZGltZW5zaW9uIGluZm8gaWYgd2UgaW52aXNpYmx5IHNob3cgdGhlbVxuXHRcdFx0XHQvLyBidXQgaXQgbXVzdCBoYXZlIGEgY3VycmVudCBkaXNwbGF5IHN0eWxlIHRoYXQgd291bGQgYmVuZWZpdFxuXHRcdFx0XHRyZXR1cm4gcmRpc3BsYXlzd2FwLnRlc3QoIGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICkgKSAmJlxuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogU2FmYXJpIDgrXG5cdFx0XHRcdFx0Ly8gVGFibGUgY29sdW1ucyBpbiBTYWZhcmkgaGF2ZSBub24temVybyBvZmZzZXRXaWR0aCAmIHplcm9cblx0XHRcdFx0XHQvLyBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCB1bmxlc3MgZGlzcGxheSBpcyBjaGFuZ2VkLlxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seVxuXHRcdFx0XHRcdC8vIFJ1bm5pbmcgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IG9uIGEgZGlzY29ubmVjdGVkIG5vZGVcblx0XHRcdFx0XHQvLyBpbiBJRSB0aHJvd3MgYW4gZXJyb3IuXG5cdFx0XHRcdFx0KCAhZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCB8fCAhZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCApID9cblx0XHRcdFx0XHRzd2FwKCBlbGVtLCBjc3NTaG93LCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHJldHVybiBnZXRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBkaW1lbnNpb24sIGV4dHJhICk7XG5cdFx0XHRcdFx0fSApIDpcblx0XHRcdFx0XHRnZXRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBkaW1lbnNpb24sIGV4dHJhICk7XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBleHRyYSApIHtcblx0XHRcdHZhciBtYXRjaGVzLFxuXHRcdFx0XHRzdHlsZXMgPSBnZXRTdHlsZXMoIGVsZW0gKSxcblxuXHRcdFx0XHQvLyBPbmx5IHJlYWQgc3R5bGVzLnBvc2l0aW9uIGlmIHRoZSB0ZXN0IGhhcyBhIGNoYW5jZSB0byBmYWlsXG5cdFx0XHRcdC8vIHRvIGF2b2lkIGZvcmNpbmcgYSByZWZsb3cuXG5cdFx0XHRcdHNjcm9sbGJveFNpemVCdWdneSA9ICFzdXBwb3J0LnNjcm9sbGJveFNpemUoKSAmJlxuXHRcdFx0XHRcdHN0eWxlcy5wb3NpdGlvbiA9PT0gXCJhYnNvbHV0ZVwiLFxuXG5cdFx0XHRcdC8vIFRvIGF2b2lkIGZvcmNpbmcgYSByZWZsb3csIG9ubHkgZmV0Y2ggYm94U2l6aW5nIGlmIHdlIG5lZWQgaXQgKGdoLTM5OTEpXG5cdFx0XHRcdGJveFNpemluZ05lZWRlZCA9IHNjcm9sbGJveFNpemVCdWdneSB8fCBleHRyYSxcblx0XHRcdFx0aXNCb3JkZXJCb3ggPSBib3hTaXppbmdOZWVkZWQgJiZcblx0XHRcdFx0XHRqUXVlcnkuY3NzKCBlbGVtLCBcImJveFNpemluZ1wiLCBmYWxzZSwgc3R5bGVzICkgPT09IFwiYm9yZGVyLWJveFwiLFxuXHRcdFx0XHRzdWJ0cmFjdCA9IGV4dHJhID9cblx0XHRcdFx0XHRib3hNb2RlbEFkanVzdG1lbnQoXG5cdFx0XHRcdFx0XHRlbGVtLFxuXHRcdFx0XHRcdFx0ZGltZW5zaW9uLFxuXHRcdFx0XHRcdFx0ZXh0cmEsXG5cdFx0XHRcdFx0XHRpc0JvcmRlckJveCxcblx0XHRcdFx0XHRcdHN0eWxlc1xuXHRcdFx0XHRcdCkgOlxuXHRcdFx0XHRcdDA7XG5cblx0XHRcdC8vIEFjY291bnQgZm9yIHVucmVsaWFibGUgYm9yZGVyLWJveCBkaW1lbnNpb25zIGJ5IGNvbXBhcmluZyBvZmZzZXQqIHRvIGNvbXB1dGVkIGFuZFxuXHRcdFx0Ly8gZmFraW5nIGEgY29udGVudC1ib3ggdG8gZ2V0IGJvcmRlciBhbmQgcGFkZGluZyAoZ2gtMzY5OSlcblx0XHRcdGlmICggaXNCb3JkZXJCb3ggJiYgc2Nyb2xsYm94U2l6ZUJ1Z2d5ICkge1xuXHRcdFx0XHRzdWJ0cmFjdCAtPSBNYXRoLmNlaWwoXG5cdFx0XHRcdFx0ZWxlbVsgXCJvZmZzZXRcIiArIGRpbWVuc2lvblsgMCBdLnRvVXBwZXJDYXNlKCkgKyBkaW1lbnNpb24uc2xpY2UoIDEgKSBdIC1cblx0XHRcdFx0XHRwYXJzZUZsb2F0KCBzdHlsZXNbIGRpbWVuc2lvbiBdICkgLVxuXHRcdFx0XHRcdGJveE1vZGVsQWRqdXN0bWVudCggZWxlbSwgZGltZW5zaW9uLCBcImJvcmRlclwiLCBmYWxzZSwgc3R5bGVzICkgLVxuXHRcdFx0XHRcdDAuNVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDb252ZXJ0IHRvIHBpeGVscyBpZiB2YWx1ZSBhZGp1c3RtZW50IGlzIG5lZWRlZFxuXHRcdFx0aWYgKCBzdWJ0cmFjdCAmJiAoIG1hdGNoZXMgPSByY3NzTnVtLmV4ZWMoIHZhbHVlICkgKSAmJlxuXHRcdFx0XHQoIG1hdGNoZXNbIDMgXSB8fCBcInB4XCIgKSAhPT0gXCJweFwiICkge1xuXG5cdFx0XHRcdGVsZW0uc3R5bGVbIGRpbWVuc2lvbiBdID0gdmFsdWU7XG5cdFx0XHRcdHZhbHVlID0galF1ZXJ5LmNzcyggZWxlbSwgZGltZW5zaW9uICk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBzZXRQb3NpdGl2ZU51bWJlciggZWxlbSwgdmFsdWUsIHN1YnRyYWN0ICk7XG5cdFx0fVxuXHR9O1xufSApO1xuXG5qUXVlcnkuY3NzSG9va3MubWFyZ2luTGVmdCA9IGFkZEdldEhvb2tJZiggc3VwcG9ydC5yZWxpYWJsZU1hcmdpbkxlZnQsXG5cdGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHtcblx0XHRpZiAoIGNvbXB1dGVkICkge1xuXHRcdFx0cmV0dXJuICggcGFyc2VGbG9hdCggY3VyQ1NTKCBlbGVtLCBcIm1hcmdpbkxlZnRcIiApICkgfHxcblx0XHRcdFx0ZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IC1cblx0XHRcdFx0XHRzd2FwKCBlbGVtLCB7IG1hcmdpbkxlZnQ6IDAgfSwgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xuXHRcdFx0XHRcdH0gKVxuXHRcdFx0KSArIFwicHhcIjtcblx0XHR9XG5cdH1cbik7XG5cbi8vIFRoZXNlIGhvb2tzIGFyZSB1c2VkIGJ5IGFuaW1hdGUgdG8gZXhwYW5kIHByb3BlcnRpZXNcbmpRdWVyeS5lYWNoKCB7XG5cdG1hcmdpbjogXCJcIixcblx0cGFkZGluZzogXCJcIixcblx0Ym9yZGVyOiBcIldpZHRoXCJcbn0sIGZ1bmN0aW9uKCBwcmVmaXgsIHN1ZmZpeCApIHtcblx0alF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXggKyBzdWZmaXggXSA9IHtcblx0XHRleHBhbmQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdHZhciBpID0gMCxcblx0XHRcdFx0ZXhwYW5kZWQgPSB7fSxcblxuXHRcdFx0XHQvLyBBc3N1bWVzIGEgc2luZ2xlIG51bWJlciBpZiBub3QgYSBzdHJpbmdcblx0XHRcdFx0cGFydHMgPSB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyB2YWx1ZS5zcGxpdCggXCIgXCIgKSA6IFsgdmFsdWUgXTtcblxuXHRcdFx0Zm9yICggOyBpIDwgNDsgaSsrICkge1xuXHRcdFx0XHRleHBhbmRlZFsgcHJlZml4ICsgY3NzRXhwYW5kWyBpIF0gKyBzdWZmaXggXSA9XG5cdFx0XHRcdFx0cGFydHNbIGkgXSB8fCBwYXJ0c1sgaSAtIDIgXSB8fCBwYXJ0c1sgMCBdO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZXhwYW5kZWQ7XG5cdFx0fVxuXHR9O1xuXG5cdGlmICggcHJlZml4ICE9PSBcIm1hcmdpblwiICkge1xuXHRcdGpRdWVyeS5jc3NIb29rc1sgcHJlZml4ICsgc3VmZml4IF0uc2V0ID0gc2V0UG9zaXRpdmVOdW1iZXI7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRjc3M6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7XG5cdFx0XHR2YXIgc3R5bGVzLCBsZW4sXG5cdFx0XHRcdG1hcCA9IHt9LFxuXHRcdFx0XHRpID0gMDtcblxuXHRcdFx0aWYgKCBBcnJheS5pc0FycmF5KCBuYW1lICkgKSB7XG5cdFx0XHRcdHN0eWxlcyA9IGdldFN0eWxlcyggZWxlbSApO1xuXHRcdFx0XHRsZW4gPSBuYW1lLmxlbmd0aDtcblxuXHRcdFx0XHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0XHRtYXBbIG5hbWVbIGkgXSBdID0galF1ZXJ5LmNzcyggZWxlbSwgbmFtZVsgaSBdLCBmYWxzZSwgc3R5bGVzICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gbWFwO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSwgdmFsdWUgKSA6XG5cdFx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIG5hbWUgKTtcblx0XHR9LCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTtcblx0fVxufSApO1xuXG5cbmZ1bmN0aW9uIFR3ZWVuKCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZyApIHtcblx0cmV0dXJuIG5ldyBUd2Vlbi5wcm90b3R5cGUuaW5pdCggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNpbmcgKTtcbn1cbmpRdWVyeS5Ud2VlbiA9IFR3ZWVuO1xuXG5Ud2Vlbi5wcm90b3R5cGUgPSB7XG5cdGNvbnN0cnVjdG9yOiBUd2Vlbixcblx0aW5pdDogZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nLCB1bml0ICkge1xuXHRcdHRoaXMuZWxlbSA9IGVsZW07XG5cdFx0dGhpcy5wcm9wID0gcHJvcDtcblx0XHR0aGlzLmVhc2luZyA9IGVhc2luZyB8fCBqUXVlcnkuZWFzaW5nLl9kZWZhdWx0O1xuXHRcdHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cdFx0dGhpcy5zdGFydCA9IHRoaXMubm93ID0gdGhpcy5jdXIoKTtcblx0XHR0aGlzLmVuZCA9IGVuZDtcblx0XHR0aGlzLnVuaXQgPSB1bml0IHx8ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdID8gXCJcIiA6IFwicHhcIiApO1xuXHR9LFxuXHRjdXI6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBob29rcyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07XG5cblx0XHRyZXR1cm4gaG9va3MgJiYgaG9va3MuZ2V0ID9cblx0XHRcdGhvb2tzLmdldCggdGhpcyApIDpcblx0XHRcdFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5nZXQoIHRoaXMgKTtcblx0fSxcblx0cnVuOiBmdW5jdGlvbiggcGVyY2VudCApIHtcblx0XHR2YXIgZWFzZWQsXG5cdFx0XHRob29rcyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5kdXJhdGlvbiApIHtcblx0XHRcdHRoaXMucG9zID0gZWFzZWQgPSBqUXVlcnkuZWFzaW5nWyB0aGlzLmVhc2luZyBdKFxuXHRcdFx0XHRwZXJjZW50LCB0aGlzLm9wdGlvbnMuZHVyYXRpb24gKiBwZXJjZW50LCAwLCAxLCB0aGlzLm9wdGlvbnMuZHVyYXRpb25cblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucG9zID0gZWFzZWQgPSBwZXJjZW50O1xuXHRcdH1cblx0XHR0aGlzLm5vdyA9ICggdGhpcy5lbmQgLSB0aGlzLnN0YXJ0ICkgKiBlYXNlZCArIHRoaXMuc3RhcnQ7XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5zdGVwICkge1xuXHRcdFx0dGhpcy5vcHRpb25zLnN0ZXAuY2FsbCggdGhpcy5lbGVtLCB0aGlzLm5vdywgdGhpcyApO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgaG9va3Muc2V0ICkge1xuXHRcdFx0aG9va3Muc2V0KCB0aGlzICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5zZXQoIHRoaXMgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn07XG5cblR3ZWVuLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZSA9IFR3ZWVuLnByb3RvdHlwZTtcblxuVHdlZW4ucHJvcEhvb2tzID0ge1xuXHRfZGVmYXVsdDoge1xuXHRcdGdldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXHRcdFx0dmFyIHJlc3VsdDtcblxuXHRcdFx0Ly8gVXNlIGEgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgZGlyZWN0bHkgd2hlbiBpdCBpcyBub3QgYSBET00gZWxlbWVudCxcblx0XHRcdC8vIG9yIHdoZW4gdGhlcmUgaXMgbm8gbWF0Y2hpbmcgc3R5bGUgcHJvcGVydHkgdGhhdCBleGlzdHMuXG5cdFx0XHRpZiAoIHR3ZWVuLmVsZW0ubm9kZVR5cGUgIT09IDEgfHxcblx0XHRcdFx0dHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdICE9IG51bGwgJiYgdHdlZW4uZWxlbS5zdHlsZVsgdHdlZW4ucHJvcCBdID09IG51bGwgKSB7XG5cdFx0XHRcdHJldHVybiB0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF07XG5cdFx0XHR9XG5cblx0XHRcdC8vIFBhc3NpbmcgYW4gZW1wdHkgc3RyaW5nIGFzIGEgM3JkIHBhcmFtZXRlciB0byAuY3NzIHdpbGwgYXV0b21hdGljYWxseVxuXHRcdFx0Ly8gYXR0ZW1wdCBhIHBhcnNlRmxvYXQgYW5kIGZhbGxiYWNrIHRvIGEgc3RyaW5nIGlmIHRoZSBwYXJzZSBmYWlscy5cblx0XHRcdC8vIFNpbXBsZSB2YWx1ZXMgc3VjaCBhcyBcIjEwcHhcIiBhcmUgcGFyc2VkIHRvIEZsb2F0O1xuXHRcdFx0Ly8gY29tcGxleCB2YWx1ZXMgc3VjaCBhcyBcInJvdGF0ZSgxcmFkKVwiIGFyZSByZXR1cm5lZCBhcy1pcy5cblx0XHRcdHJlc3VsdCA9IGpRdWVyeS5jc3MoIHR3ZWVuLmVsZW0sIHR3ZWVuLnByb3AsIFwiXCIgKTtcblxuXHRcdFx0Ly8gRW1wdHkgc3RyaW5ncywgbnVsbCwgdW5kZWZpbmVkIGFuZCBcImF1dG9cIiBhcmUgY29udmVydGVkIHRvIDAuXG5cdFx0XHRyZXR1cm4gIXJlc3VsdCB8fCByZXN1bHQgPT09IFwiYXV0b1wiID8gMCA6IHJlc3VsdDtcblx0XHR9LFxuXHRcdHNldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXG5cdFx0XHQvLyBVc2Ugc3RlcCBob29rIGZvciBiYWNrIGNvbXBhdC5cblx0XHRcdC8vIFVzZSBjc3NIb29rIGlmIGl0cyB0aGVyZS5cblx0XHRcdC8vIFVzZSAuc3R5bGUgaWYgYXZhaWxhYmxlIGFuZCB1c2UgcGxhaW4gcHJvcGVydGllcyB3aGVyZSBhdmFpbGFibGUuXG5cdFx0XHRpZiAoIGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0gKSB7XG5cdFx0XHRcdGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0oIHR3ZWVuICk7XG5cdFx0XHR9IGVsc2UgaWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBlID09PSAxICYmIChcblx0XHRcdFx0alF1ZXJ5LmNzc0hvb2tzWyB0d2Vlbi5wcm9wIF0gfHxcblx0XHRcdFx0XHR0d2Vlbi5lbGVtLnN0eWxlWyBmaW5hbFByb3BOYW1lKCB0d2Vlbi5wcm9wICkgXSAhPSBudWxsICkgKSB7XG5cdFx0XHRcdGpRdWVyeS5zdHlsZSggdHdlZW4uZWxlbSwgdHdlZW4ucHJvcCwgdHdlZW4ubm93ICsgdHdlZW4udW5pdCApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdID0gdHdlZW4ubm93O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufTtcblxuLy8gU3VwcG9ydDogSUUgPD05IG9ubHlcbi8vIFBhbmljIGJhc2VkIGFwcHJvYWNoIHRvIHNldHRpbmcgdGhpbmdzIG9uIGRpc2Nvbm5lY3RlZCBub2Rlc1xuVHdlZW4ucHJvcEhvb2tzLnNjcm9sbFRvcCA9IFR3ZWVuLnByb3BIb29rcy5zY3JvbGxMZWZ0ID0ge1xuXHRzZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHtcblx0XHRpZiAoIHR3ZWVuLmVsZW0ubm9kZVR5cGUgJiYgdHdlZW4uZWxlbS5wYXJlbnROb2RlICkge1xuXHRcdFx0dHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdID0gdHdlZW4ubm93O1xuXHRcdH1cblx0fVxufTtcblxualF1ZXJ5LmVhc2luZyA9IHtcblx0bGluZWFyOiBmdW5jdGlvbiggcCApIHtcblx0XHRyZXR1cm4gcDtcblx0fSxcblx0c3dpbmc6IGZ1bmN0aW9uKCBwICkge1xuXHRcdHJldHVybiAwLjUgLSBNYXRoLmNvcyggcCAqIE1hdGguUEkgKSAvIDI7XG5cdH0sXG5cdF9kZWZhdWx0OiBcInN3aW5nXCJcbn07XG5cbmpRdWVyeS5meCA9IFR3ZWVuLnByb3RvdHlwZS5pbml0O1xuXG4vLyBCYWNrIGNvbXBhdCA8MS44IGV4dGVuc2lvbiBwb2ludFxualF1ZXJ5LmZ4LnN0ZXAgPSB7fTtcblxuXG5cblxudmFyXG5cdGZ4Tm93LCBpblByb2dyZXNzLFxuXHRyZnh0eXBlcyA9IC9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxcblx0cnJ1biA9IC9xdWV1ZUhvb2tzJC87XG5cbmZ1bmN0aW9uIHNjaGVkdWxlKCkge1xuXHRpZiAoIGluUHJvZ3Jlc3MgKSB7XG5cdFx0aWYgKCBkb2N1bWVudC5oaWRkZW4gPT09IGZhbHNlICYmIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgKSB7XG5cdFx0XHR3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCBzY2hlZHVsZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR3aW5kb3cuc2V0VGltZW91dCggc2NoZWR1bGUsIGpRdWVyeS5meC5pbnRlcnZhbCApO1xuXHRcdH1cblxuXHRcdGpRdWVyeS5meC50aWNrKCk7XG5cdH1cbn1cblxuLy8gQW5pbWF0aW9ucyBjcmVhdGVkIHN5bmNocm9ub3VzbHkgd2lsbCBydW4gc3luY2hyb25vdXNseVxuZnVuY3Rpb24gY3JlYXRlRnhOb3coKSB7XG5cdHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHtcblx0XHRmeE5vdyA9IHVuZGVmaW5lZDtcblx0fSApO1xuXHRyZXR1cm4gKCBmeE5vdyA9IERhdGUubm93KCkgKTtcbn1cblxuLy8gR2VuZXJhdGUgcGFyYW1ldGVycyB0byBjcmVhdGUgYSBzdGFuZGFyZCBhbmltYXRpb25cbmZ1bmN0aW9uIGdlbkZ4KCB0eXBlLCBpbmNsdWRlV2lkdGggKSB7XG5cdHZhciB3aGljaCxcblx0XHRpID0gMCxcblx0XHRhdHRycyA9IHsgaGVpZ2h0OiB0eXBlIH07XG5cblx0Ly8gSWYgd2UgaW5jbHVkZSB3aWR0aCwgc3RlcCB2YWx1ZSBpcyAxIHRvIGRvIGFsbCBjc3NFeHBhbmQgdmFsdWVzLFxuXHQvLyBvdGhlcndpc2Ugc3RlcCB2YWx1ZSBpcyAyIHRvIHNraXAgb3ZlciBMZWZ0IGFuZCBSaWdodFxuXHRpbmNsdWRlV2lkdGggPSBpbmNsdWRlV2lkdGggPyAxIDogMDtcblx0Zm9yICggOyBpIDwgNDsgaSArPSAyIC0gaW5jbHVkZVdpZHRoICkge1xuXHRcdHdoaWNoID0gY3NzRXhwYW5kWyBpIF07XG5cdFx0YXR0cnNbIFwibWFyZ2luXCIgKyB3aGljaCBdID0gYXR0cnNbIFwicGFkZGluZ1wiICsgd2hpY2ggXSA9IHR5cGU7XG5cdH1cblxuXHRpZiAoIGluY2x1ZGVXaWR0aCApIHtcblx0XHRhdHRycy5vcGFjaXR5ID0gYXR0cnMud2lkdGggPSB0eXBlO1xuXHR9XG5cblx0cmV0dXJuIGF0dHJzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVUd2VlbiggdmFsdWUsIHByb3AsIGFuaW1hdGlvbiApIHtcblx0dmFyIHR3ZWVuLFxuXHRcdGNvbGxlY3Rpb24gPSAoIEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdIHx8IFtdICkuY29uY2F0KCBBbmltYXRpb24udHdlZW5lcnNbIFwiKlwiIF0gKSxcblx0XHRpbmRleCA9IDAsXG5cdFx0bGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGg7XG5cdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0aWYgKCAoIHR3ZWVuID0gY29sbGVjdGlvblsgaW5kZXggXS5jYWxsKCBhbmltYXRpb24sIHByb3AsIHZhbHVlICkgKSApIHtcblxuXHRcdFx0Ly8gV2UncmUgZG9uZSB3aXRoIHRoaXMgcHJvcGVydHlcblx0XHRcdHJldHVybiB0d2Vlbjtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gZGVmYXVsdFByZWZpbHRlciggZWxlbSwgcHJvcHMsIG9wdHMgKSB7XG5cdHZhciBwcm9wLCB2YWx1ZSwgdG9nZ2xlLCBob29rcywgb2xkZmlyZSwgcHJvcFR3ZWVuLCByZXN0b3JlRGlzcGxheSwgZGlzcGxheSxcblx0XHRpc0JveCA9IFwid2lkdGhcIiBpbiBwcm9wcyB8fCBcImhlaWdodFwiIGluIHByb3BzLFxuXHRcdGFuaW0gPSB0aGlzLFxuXHRcdG9yaWcgPSB7fSxcblx0XHRzdHlsZSA9IGVsZW0uc3R5bGUsXG5cdFx0aGlkZGVuID0gZWxlbS5ub2RlVHlwZSAmJiBpc0hpZGRlbldpdGhpblRyZWUoIGVsZW0gKSxcblx0XHRkYXRhU2hvdyA9IGRhdGFQcml2LmdldCggZWxlbSwgXCJmeHNob3dcIiApO1xuXG5cdC8vIFF1ZXVlLXNraXBwaW5nIGFuaW1hdGlvbnMgaGlqYWNrIHRoZSBmeCBob29rc1xuXHRpZiAoICFvcHRzLnF1ZXVlICkge1xuXHRcdGhvb2tzID0galF1ZXJ5Ll9xdWV1ZUhvb2tzKCBlbGVtLCBcImZ4XCIgKTtcblx0XHRpZiAoIGhvb2tzLnVucXVldWVkID09IG51bGwgKSB7XG5cdFx0XHRob29rcy51bnF1ZXVlZCA9IDA7XG5cdFx0XHRvbGRmaXJlID0gaG9va3MuZW1wdHkuZmlyZTtcblx0XHRcdGhvb2tzLmVtcHR5LmZpcmUgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCAhaG9va3MudW5xdWV1ZWQgKSB7XG5cdFx0XHRcdFx0b2xkZmlyZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdH1cblx0XHRob29rcy51bnF1ZXVlZCsrO1xuXG5cdFx0YW5pbS5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBFbnN1cmUgdGhlIGNvbXBsZXRlIGhhbmRsZXIgaXMgY2FsbGVkIGJlZm9yZSB0aGlzIGNvbXBsZXRlc1xuXHRcdFx0YW5pbS5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRob29rcy51bnF1ZXVlZC0tO1xuXHRcdFx0XHRpZiAoICFqUXVlcnkucXVldWUoIGVsZW0sIFwiZnhcIiApLmxlbmd0aCApIHtcblx0XHRcdFx0XHRob29rcy5lbXB0eS5maXJlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9ICk7XG5cdH1cblxuXHQvLyBEZXRlY3Qgc2hvdy9oaWRlIGFuaW1hdGlvbnNcblx0Zm9yICggcHJvcCBpbiBwcm9wcyApIHtcblx0XHR2YWx1ZSA9IHByb3BzWyBwcm9wIF07XG5cdFx0aWYgKCByZnh0eXBlcy50ZXN0KCB2YWx1ZSApICkge1xuXHRcdFx0ZGVsZXRlIHByb3BzWyBwcm9wIF07XG5cdFx0XHR0b2dnbGUgPSB0b2dnbGUgfHwgdmFsdWUgPT09IFwidG9nZ2xlXCI7XG5cdFx0XHRpZiAoIHZhbHVlID09PSAoIGhpZGRlbiA/IFwiaGlkZVwiIDogXCJzaG93XCIgKSApIHtcblxuXHRcdFx0XHQvLyBQcmV0ZW5kIHRvIGJlIGhpZGRlbiBpZiB0aGlzIGlzIGEgXCJzaG93XCIgYW5kXG5cdFx0XHRcdC8vIHRoZXJlIGlzIHN0aWxsIGRhdGEgZnJvbSBhIHN0b3BwZWQgc2hvdy9oaWRlXG5cdFx0XHRcdGlmICggdmFsdWUgPT09IFwic2hvd1wiICYmIGRhdGFTaG93ICYmIGRhdGFTaG93WyBwcm9wIF0gIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRoaWRkZW4gPSB0cnVlO1xuXG5cdFx0XHRcdC8vIElnbm9yZSBhbGwgb3RoZXIgbm8tb3Agc2hvdy9oaWRlIGRhdGFcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0b3JpZ1sgcHJvcCBdID0gZGF0YVNob3cgJiYgZGF0YVNob3dbIHByb3AgXSB8fCBqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AgKTtcblx0XHR9XG5cdH1cblxuXHQvLyBCYWlsIG91dCBpZiB0aGlzIGlzIGEgbm8tb3AgbGlrZSAuaGlkZSgpLmhpZGUoKVxuXHRwcm9wVHdlZW4gPSAhalF1ZXJ5LmlzRW1wdHlPYmplY3QoIHByb3BzICk7XG5cdGlmICggIXByb3BUd2VlbiAmJiBqUXVlcnkuaXNFbXB0eU9iamVjdCggb3JpZyApICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIFJlc3RyaWN0IFwib3ZlcmZsb3dcIiBhbmQgXCJkaXNwbGF5XCIgc3R5bGVzIGR1cmluZyBib3ggYW5pbWF0aW9uc1xuXHRpZiAoIGlzQm94ICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSwgRWRnZSAxMiAtIDE1XG5cdFx0Ly8gUmVjb3JkIGFsbCAzIG92ZXJmbG93IGF0dHJpYnV0ZXMgYmVjYXVzZSBJRSBkb2VzIG5vdCBpbmZlciB0aGUgc2hvcnRoYW5kXG5cdFx0Ly8gZnJvbSBpZGVudGljYWxseS12YWx1ZWQgb3ZlcmZsb3dYIGFuZCBvdmVyZmxvd1kgYW5kIEVkZ2UganVzdCBtaXJyb3JzXG5cdFx0Ly8gdGhlIG92ZXJmbG93WCB2YWx1ZSB0aGVyZS5cblx0XHRvcHRzLm92ZXJmbG93ID0gWyBzdHlsZS5vdmVyZmxvdywgc3R5bGUub3ZlcmZsb3dYLCBzdHlsZS5vdmVyZmxvd1kgXTtcblxuXHRcdC8vIElkZW50aWZ5IGEgZGlzcGxheSB0eXBlLCBwcmVmZXJyaW5nIG9sZCBzaG93L2hpZGUgZGF0YSBvdmVyIHRoZSBDU1MgY2FzY2FkZVxuXHRcdHJlc3RvcmVEaXNwbGF5ID0gZGF0YVNob3cgJiYgZGF0YVNob3cuZGlzcGxheTtcblx0XHRpZiAoIHJlc3RvcmVEaXNwbGF5ID09IG51bGwgKSB7XG5cdFx0XHRyZXN0b3JlRGlzcGxheSA9IGRhdGFQcml2LmdldCggZWxlbSwgXCJkaXNwbGF5XCIgKTtcblx0XHR9XG5cdFx0ZGlzcGxheSA9IGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICk7XG5cdFx0aWYgKCBkaXNwbGF5ID09PSBcIm5vbmVcIiApIHtcblx0XHRcdGlmICggcmVzdG9yZURpc3BsYXkgKSB7XG5cdFx0XHRcdGRpc3BsYXkgPSByZXN0b3JlRGlzcGxheTtcblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0Ly8gR2V0IG5vbmVtcHR5IHZhbHVlKHMpIGJ5IHRlbXBvcmFyaWx5IGZvcmNpbmcgdmlzaWJpbGl0eVxuXHRcdFx0XHRzaG93SGlkZSggWyBlbGVtIF0sIHRydWUgKTtcblx0XHRcdFx0cmVzdG9yZURpc3BsYXkgPSBlbGVtLnN0eWxlLmRpc3BsYXkgfHwgcmVzdG9yZURpc3BsYXk7XG5cdFx0XHRcdGRpc3BsYXkgPSBqUXVlcnkuY3NzKCBlbGVtLCBcImRpc3BsYXlcIiApO1xuXHRcdFx0XHRzaG93SGlkZSggWyBlbGVtIF0gKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBBbmltYXRlIGlubGluZSBlbGVtZW50cyBhcyBpbmxpbmUtYmxvY2tcblx0XHRpZiAoIGRpc3BsYXkgPT09IFwiaW5saW5lXCIgfHwgZGlzcGxheSA9PT0gXCJpbmxpbmUtYmxvY2tcIiAmJiByZXN0b3JlRGlzcGxheSAhPSBudWxsICkge1xuXHRcdFx0aWYgKCBqUXVlcnkuY3NzKCBlbGVtLCBcImZsb2F0XCIgKSA9PT0gXCJub25lXCIgKSB7XG5cblx0XHRcdFx0Ly8gUmVzdG9yZSB0aGUgb3JpZ2luYWwgZGlzcGxheSB2YWx1ZSBhdCB0aGUgZW5kIG9mIHB1cmUgc2hvdy9oaWRlIGFuaW1hdGlvbnNcblx0XHRcdFx0aWYgKCAhcHJvcFR3ZWVuICkge1xuXHRcdFx0XHRcdGFuaW0uZG9uZSggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRzdHlsZS5kaXNwbGF5ID0gcmVzdG9yZURpc3BsYXk7XG5cdFx0XHRcdFx0fSApO1xuXHRcdFx0XHRcdGlmICggcmVzdG9yZURpc3BsYXkgPT0gbnVsbCApIHtcblx0XHRcdFx0XHRcdGRpc3BsYXkgPSBzdHlsZS5kaXNwbGF5O1xuXHRcdFx0XHRcdFx0cmVzdG9yZURpc3BsYXkgPSBkaXNwbGF5ID09PSBcIm5vbmVcIiA/IFwiXCIgOiBkaXNwbGF5O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRzdHlsZS5kaXNwbGF5ID0gXCJpbmxpbmUtYmxvY2tcIjtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpZiAoIG9wdHMub3ZlcmZsb3cgKSB7XG5cdFx0c3R5bGUub3ZlcmZsb3cgPSBcImhpZGRlblwiO1xuXHRcdGFuaW0uYWx3YXlzKCBmdW5jdGlvbigpIHtcblx0XHRcdHN0eWxlLm92ZXJmbG93ID0gb3B0cy5vdmVyZmxvd1sgMCBdO1xuXHRcdFx0c3R5bGUub3ZlcmZsb3dYID0gb3B0cy5vdmVyZmxvd1sgMSBdO1xuXHRcdFx0c3R5bGUub3ZlcmZsb3dZID0gb3B0cy5vdmVyZmxvd1sgMiBdO1xuXHRcdH0gKTtcblx0fVxuXG5cdC8vIEltcGxlbWVudCBzaG93L2hpZGUgYW5pbWF0aW9uc1xuXHRwcm9wVHdlZW4gPSBmYWxzZTtcblx0Zm9yICggcHJvcCBpbiBvcmlnICkge1xuXG5cdFx0Ly8gR2VuZXJhbCBzaG93L2hpZGUgc2V0dXAgZm9yIHRoaXMgZWxlbWVudCBhbmltYXRpb25cblx0XHRpZiAoICFwcm9wVHdlZW4gKSB7XG5cdFx0XHRpZiAoIGRhdGFTaG93ICkge1xuXHRcdFx0XHRpZiAoIFwiaGlkZGVuXCIgaW4gZGF0YVNob3cgKSB7XG5cdFx0XHRcdFx0aGlkZGVuID0gZGF0YVNob3cuaGlkZGVuO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkYXRhU2hvdyA9IGRhdGFQcml2LmFjY2VzcyggZWxlbSwgXCJmeHNob3dcIiwgeyBkaXNwbGF5OiByZXN0b3JlRGlzcGxheSB9ICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN0b3JlIGhpZGRlbi92aXNpYmxlIGZvciB0b2dnbGUgc28gYC5zdG9wKCkudG9nZ2xlKClgIFwicmV2ZXJzZXNcIlxuXHRcdFx0aWYgKCB0b2dnbGUgKSB7XG5cdFx0XHRcdGRhdGFTaG93LmhpZGRlbiA9ICFoaWRkZW47XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNob3cgZWxlbWVudHMgYmVmb3JlIGFuaW1hdGluZyB0aGVtXG5cdFx0XHRpZiAoIGhpZGRlbiApIHtcblx0XHRcdFx0c2hvd0hpZGUoIFsgZWxlbSBdLCB0cnVlICk7XG5cdFx0XHR9XG5cblx0XHRcdC8qIGVzbGludC1kaXNhYmxlIG5vLWxvb3AtZnVuYyAqL1xuXG5cdFx0XHRhbmltLmRvbmUoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHRcdC8qIGVzbGludC1lbmFibGUgbm8tbG9vcC1mdW5jICovXG5cblx0XHRcdFx0Ly8gVGhlIGZpbmFsIHN0ZXAgb2YgYSBcImhpZGVcIiBhbmltYXRpb24gaXMgYWN0dWFsbHkgaGlkaW5nIHRoZSBlbGVtZW50XG5cdFx0XHRcdGlmICggIWhpZGRlbiApIHtcblx0XHRcdFx0XHRzaG93SGlkZSggWyBlbGVtIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIFwiZnhzaG93XCIgKTtcblx0XHRcdFx0Zm9yICggcHJvcCBpbiBvcmlnICkge1xuXHRcdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCwgb3JpZ1sgcHJvcCBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHQvLyBQZXItcHJvcGVydHkgc2V0dXBcblx0XHRwcm9wVHdlZW4gPSBjcmVhdGVUd2VlbiggaGlkZGVuID8gZGF0YVNob3dbIHByb3AgXSA6IDAsIHByb3AsIGFuaW0gKTtcblx0XHRpZiAoICEoIHByb3AgaW4gZGF0YVNob3cgKSApIHtcblx0XHRcdGRhdGFTaG93WyBwcm9wIF0gPSBwcm9wVHdlZW4uc3RhcnQ7XG5cdFx0XHRpZiAoIGhpZGRlbiApIHtcblx0XHRcdFx0cHJvcFR3ZWVuLmVuZCA9IHByb3BUd2Vlbi5zdGFydDtcblx0XHRcdFx0cHJvcFR3ZWVuLnN0YXJ0ID0gMDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gcHJvcEZpbHRlciggcHJvcHMsIHNwZWNpYWxFYXNpbmcgKSB7XG5cdHZhciBpbmRleCwgbmFtZSwgZWFzaW5nLCB2YWx1ZSwgaG9va3M7XG5cblx0Ly8gY2FtZWxDYXNlLCBzcGVjaWFsRWFzaW5nIGFuZCBleHBhbmQgY3NzSG9vayBwYXNzXG5cdGZvciAoIGluZGV4IGluIHByb3BzICkge1xuXHRcdG5hbWUgPSBjYW1lbENhc2UoIGluZGV4ICk7XG5cdFx0ZWFzaW5nID0gc3BlY2lhbEVhc2luZ1sgbmFtZSBdO1xuXHRcdHZhbHVlID0gcHJvcHNbIGluZGV4IF07XG5cdFx0aWYgKCBBcnJheS5pc0FycmF5KCB2YWx1ZSApICkge1xuXHRcdFx0ZWFzaW5nID0gdmFsdWVbIDEgXTtcblx0XHRcdHZhbHVlID0gcHJvcHNbIGluZGV4IF0gPSB2YWx1ZVsgMCBdO1xuXHRcdH1cblxuXHRcdGlmICggaW5kZXggIT09IG5hbWUgKSB7XG5cdFx0XHRwcm9wc1sgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHRkZWxldGUgcHJvcHNbIGluZGV4IF07XG5cdFx0fVxuXG5cdFx0aG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXTtcblx0XHRpZiAoIGhvb2tzICYmIFwiZXhwYW5kXCIgaW4gaG9va3MgKSB7XG5cdFx0XHR2YWx1ZSA9IGhvb2tzLmV4cGFuZCggdmFsdWUgKTtcblx0XHRcdGRlbGV0ZSBwcm9wc1sgbmFtZSBdO1xuXG5cdFx0XHQvLyBOb3QgcXVpdGUgJC5leHRlbmQsIHRoaXMgd29uJ3Qgb3ZlcndyaXRlIGV4aXN0aW5nIGtleXMuXG5cdFx0XHQvLyBSZXVzaW5nICdpbmRleCcgYmVjYXVzZSB3ZSBoYXZlIHRoZSBjb3JyZWN0IFwibmFtZVwiXG5cdFx0XHRmb3IgKCBpbmRleCBpbiB2YWx1ZSApIHtcblx0XHRcdFx0aWYgKCAhKCBpbmRleCBpbiBwcm9wcyApICkge1xuXHRcdFx0XHRcdHByb3BzWyBpbmRleCBdID0gdmFsdWVbIGluZGV4IF07XG5cdFx0XHRcdFx0c3BlY2lhbEVhc2luZ1sgaW5kZXggXSA9IGVhc2luZztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRzcGVjaWFsRWFzaW5nWyBuYW1lIF0gPSBlYXNpbmc7XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIEFuaW1hdGlvbiggZWxlbSwgcHJvcGVydGllcywgb3B0aW9ucyApIHtcblx0dmFyIHJlc3VsdCxcblx0XHRzdG9wcGVkLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBBbmltYXRpb24ucHJlZmlsdGVycy5sZW5ndGgsXG5cdFx0ZGVmZXJyZWQgPSBqUXVlcnkuRGVmZXJyZWQoKS5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBEb24ndCBtYXRjaCBlbGVtIGluIHRoZSA6YW5pbWF0ZWQgc2VsZWN0b3Jcblx0XHRcdGRlbGV0ZSB0aWNrLmVsZW07XG5cdFx0fSApLFxuXHRcdHRpY2sgPSBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggc3RvcHBlZCApIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGN1cnJlbnRUaW1lID0gZnhOb3cgfHwgY3JlYXRlRnhOb3coKSxcblx0XHRcdFx0cmVtYWluaW5nID0gTWF0aC5tYXgoIDAsIGFuaW1hdGlvbi5zdGFydFRpbWUgKyBhbmltYXRpb24uZHVyYXRpb24gLSBjdXJyZW50VGltZSApLFxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgMi4zIG9ubHlcblx0XHRcdFx0Ly8gQXJjaGFpYyBjcmFzaCBidWcgd29uJ3QgYWxsb3cgdXMgdG8gdXNlIGAxIC0gKCAwLjUgfHwgMCApYCAodHJhYy0xMjQ5Nylcblx0XHRcdFx0dGVtcCA9IHJlbWFpbmluZyAvIGFuaW1hdGlvbi5kdXJhdGlvbiB8fCAwLFxuXHRcdFx0XHRwZXJjZW50ID0gMSAtIHRlbXAsXG5cdFx0XHRcdGluZGV4ID0gMCxcblx0XHRcdFx0bGVuZ3RoID0gYW5pbWF0aW9uLnR3ZWVucy5sZW5ndGg7XG5cblx0XHRcdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0XHRcdGFuaW1hdGlvbi50d2VlbnNbIGluZGV4IF0ucnVuKCBwZXJjZW50ICk7XG5cdFx0XHR9XG5cblx0XHRcdGRlZmVycmVkLm5vdGlmeVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBwZXJjZW50LCByZW1haW5pbmcgXSApO1xuXG5cdFx0XHQvLyBJZiB0aGVyZSdzIG1vcmUgdG8gZG8sIHlpZWxkXG5cdFx0XHRpZiAoIHBlcmNlbnQgPCAxICYmIGxlbmd0aCApIHtcblx0XHRcdFx0cmV0dXJuIHJlbWFpbmluZztcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgdGhpcyB3YXMgYW4gZW1wdHkgYW5pbWF0aW9uLCBzeW50aGVzaXplIGEgZmluYWwgcHJvZ3Jlc3Mgbm90aWZpY2F0aW9uXG5cdFx0XHRpZiAoICFsZW5ndGggKSB7XG5cdFx0XHRcdGRlZmVycmVkLm5vdGlmeVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCAxLCAwIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUmVzb2x2ZSB0aGUgYW5pbWF0aW9uIGFuZCByZXBvcnQgaXRzIGNvbmNsdXNpb25cblx0XHRcdGRlZmVycmVkLnJlc29sdmVXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiBdICk7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSxcblx0XHRhbmltYXRpb24gPSBkZWZlcnJlZC5wcm9taXNlKCB7XG5cdFx0XHRlbGVtOiBlbGVtLFxuXHRcdFx0cHJvcHM6IGpRdWVyeS5leHRlbmQoIHt9LCBwcm9wZXJ0aWVzICksXG5cdFx0XHRvcHRzOiBqUXVlcnkuZXh0ZW5kKCB0cnVlLCB7XG5cdFx0XHRcdHNwZWNpYWxFYXNpbmc6IHt9LFxuXHRcdFx0XHRlYXNpbmc6IGpRdWVyeS5lYXNpbmcuX2RlZmF1bHRcblx0XHRcdH0sIG9wdGlvbnMgKSxcblx0XHRcdG9yaWdpbmFsUHJvcGVydGllczogcHJvcGVydGllcyxcblx0XHRcdG9yaWdpbmFsT3B0aW9uczogb3B0aW9ucyxcblx0XHRcdHN0YXJ0VGltZTogZnhOb3cgfHwgY3JlYXRlRnhOb3coKSxcblx0XHRcdGR1cmF0aW9uOiBvcHRpb25zLmR1cmF0aW9uLFxuXHRcdFx0dHdlZW5zOiBbXSxcblx0XHRcdGNyZWF0ZVR3ZWVuOiBmdW5jdGlvbiggcHJvcCwgZW5kICkge1xuXHRcdFx0XHR2YXIgdHdlZW4gPSBqUXVlcnkuVHdlZW4oIGVsZW0sIGFuaW1hdGlvbi5vcHRzLCBwcm9wLCBlbmQsXG5cdFx0XHRcdFx0YW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVhc2luZ1sgcHJvcCBdIHx8IGFuaW1hdGlvbi5vcHRzLmVhc2luZyApO1xuXHRcdFx0XHRhbmltYXRpb24udHdlZW5zLnB1c2goIHR3ZWVuICk7XG5cdFx0XHRcdHJldHVybiB0d2Vlbjtcblx0XHRcdH0sXG5cdFx0XHRzdG9wOiBmdW5jdGlvbiggZ290b0VuZCApIHtcblx0XHRcdFx0dmFyIGluZGV4ID0gMCxcblxuXHRcdFx0XHRcdC8vIElmIHdlIGFyZSBnb2luZyB0byB0aGUgZW5kLCB3ZSB3YW50IHRvIHJ1biBhbGwgdGhlIHR3ZWVuc1xuXHRcdFx0XHRcdC8vIG90aGVyd2lzZSB3ZSBza2lwIHRoaXMgcGFydFxuXHRcdFx0XHRcdGxlbmd0aCA9IGdvdG9FbmQgPyBhbmltYXRpb24udHdlZW5zLmxlbmd0aCA6IDA7XG5cdFx0XHRcdGlmICggc3RvcHBlZCApIHtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fVxuXHRcdFx0XHRzdG9wcGVkID0gdHJ1ZTtcblx0XHRcdFx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRcdFx0XHRhbmltYXRpb24udHdlZW5zWyBpbmRleCBdLnJ1biggMSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUmVzb2x2ZSB3aGVuIHdlIHBsYXllZCB0aGUgbGFzdCBmcmFtZTsgb3RoZXJ3aXNlLCByZWplY3Rcblx0XHRcdFx0aWYgKCBnb3RvRW5kICkge1xuXHRcdFx0XHRcdGRlZmVycmVkLm5vdGlmeVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCAxLCAwIF0gKTtcblx0XHRcdFx0XHRkZWZlcnJlZC5yZXNvbHZlV2l0aCggZWxlbSwgWyBhbmltYXRpb24sIGdvdG9FbmQgXSApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGRlZmVycmVkLnJlamVjdFdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBnb3RvRW5kIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH1cblx0XHR9ICksXG5cdFx0cHJvcHMgPSBhbmltYXRpb24ucHJvcHM7XG5cblx0cHJvcEZpbHRlciggcHJvcHMsIGFuaW1hdGlvbi5vcHRzLnNwZWNpYWxFYXNpbmcgKTtcblxuXHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdHJlc3VsdCA9IEFuaW1hdGlvbi5wcmVmaWx0ZXJzWyBpbmRleCBdLmNhbGwoIGFuaW1hdGlvbiwgZWxlbSwgcHJvcHMsIGFuaW1hdGlvbi5vcHRzICk7XG5cdFx0aWYgKCByZXN1bHQgKSB7XG5cdFx0XHRpZiAoIGlzRnVuY3Rpb24oIHJlc3VsdC5zdG9wICkgKSB7XG5cdFx0XHRcdGpRdWVyeS5fcXVldWVIb29rcyggYW5pbWF0aW9uLmVsZW0sIGFuaW1hdGlvbi5vcHRzLnF1ZXVlICkuc3RvcCA9XG5cdFx0XHRcdFx0cmVzdWx0LnN0b3AuYmluZCggcmVzdWx0ICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH1cblx0fVxuXG5cdGpRdWVyeS5tYXAoIHByb3BzLCBjcmVhdGVUd2VlbiwgYW5pbWF0aW9uICk7XG5cblx0aWYgKCBpc0Z1bmN0aW9uKCBhbmltYXRpb24ub3B0cy5zdGFydCApICkge1xuXHRcdGFuaW1hdGlvbi5vcHRzLnN0YXJ0LmNhbGwoIGVsZW0sIGFuaW1hdGlvbiApO1xuXHR9XG5cblx0Ly8gQXR0YWNoIGNhbGxiYWNrcyBmcm9tIG9wdGlvbnNcblx0YW5pbWF0aW9uXG5cdFx0LnByb2dyZXNzKCBhbmltYXRpb24ub3B0cy5wcm9ncmVzcyApXG5cdFx0LmRvbmUoIGFuaW1hdGlvbi5vcHRzLmRvbmUsIGFuaW1hdGlvbi5vcHRzLmNvbXBsZXRlIClcblx0XHQuZmFpbCggYW5pbWF0aW9uLm9wdHMuZmFpbCApXG5cdFx0LmFsd2F5cyggYW5pbWF0aW9uLm9wdHMuYWx3YXlzICk7XG5cblx0alF1ZXJ5LmZ4LnRpbWVyKFxuXHRcdGpRdWVyeS5leHRlbmQoIHRpY2ssIHtcblx0XHRcdGVsZW06IGVsZW0sXG5cdFx0XHRhbmltOiBhbmltYXRpb24sXG5cdFx0XHRxdWV1ZTogYW5pbWF0aW9uLm9wdHMucXVldWVcblx0XHR9IClcblx0KTtcblxuXHRyZXR1cm4gYW5pbWF0aW9uO1xufVxuXG5qUXVlcnkuQW5pbWF0aW9uID0galF1ZXJ5LmV4dGVuZCggQW5pbWF0aW9uLCB7XG5cblx0dHdlZW5lcnM6IHtcblx0XHRcIipcIjogWyBmdW5jdGlvbiggcHJvcCwgdmFsdWUgKSB7XG5cdFx0XHR2YXIgdHdlZW4gPSB0aGlzLmNyZWF0ZVR3ZWVuKCBwcm9wLCB2YWx1ZSApO1xuXHRcdFx0YWRqdXN0Q1NTKCB0d2Vlbi5lbGVtLCBwcm9wLCByY3NzTnVtLmV4ZWMoIHZhbHVlICksIHR3ZWVuICk7XG5cdFx0XHRyZXR1cm4gdHdlZW47XG5cdFx0fSBdXG5cdH0sXG5cblx0dHdlZW5lcjogZnVuY3Rpb24oIHByb3BzLCBjYWxsYmFjayApIHtcblx0XHRpZiAoIGlzRnVuY3Rpb24oIHByb3BzICkgKSB7XG5cdFx0XHRjYWxsYmFjayA9IHByb3BzO1xuXHRcdFx0cHJvcHMgPSBbIFwiKlwiIF07XG5cdFx0fSBlbHNlIHtcblx0XHRcdHByb3BzID0gcHJvcHMubWF0Y2goIHJub3RodG1sd2hpdGUgKTtcblx0XHR9XG5cblx0XHR2YXIgcHJvcCxcblx0XHRcdGluZGV4ID0gMCxcblx0XHRcdGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuXHRcdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0XHRwcm9wID0gcHJvcHNbIGluZGV4IF07XG5cdFx0XHRBbmltYXRpb24udHdlZW5lcnNbIHByb3AgXSA9IEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdIHx8IFtdO1xuXHRcdFx0QW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0udW5zaGlmdCggY2FsbGJhY2sgKTtcblx0XHR9XG5cdH0sXG5cblx0cHJlZmlsdGVyczogWyBkZWZhdWx0UHJlZmlsdGVyIF0sXG5cblx0cHJlZmlsdGVyOiBmdW5jdGlvbiggY2FsbGJhY2ssIHByZXBlbmQgKSB7XG5cdFx0aWYgKCBwcmVwZW5kICkge1xuXHRcdFx0QW5pbWF0aW9uLnByZWZpbHRlcnMudW5zaGlmdCggY2FsbGJhY2sgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0QW5pbWF0aW9uLnByZWZpbHRlcnMucHVzaCggY2FsbGJhY2sgKTtcblx0XHR9XG5cdH1cbn0gKTtcblxualF1ZXJ5LnNwZWVkID0gZnVuY3Rpb24oIHNwZWVkLCBlYXNpbmcsIGZuICkge1xuXHR2YXIgb3B0ID0gc3BlZWQgJiYgdHlwZW9mIHNwZWVkID09PSBcIm9iamVjdFwiID8galF1ZXJ5LmV4dGVuZCgge30sIHNwZWVkICkgOiB7XG5cdFx0Y29tcGxldGU6IGZuIHx8ICFmbiAmJiBlYXNpbmcgfHxcblx0XHRcdGlzRnVuY3Rpb24oIHNwZWVkICkgJiYgc3BlZWQsXG5cdFx0ZHVyYXRpb246IHNwZWVkLFxuXHRcdGVhc2luZzogZm4gJiYgZWFzaW5nIHx8IGVhc2luZyAmJiAhaXNGdW5jdGlvbiggZWFzaW5nICkgJiYgZWFzaW5nXG5cdH07XG5cblx0Ly8gR28gdG8gdGhlIGVuZCBzdGF0ZSBpZiBmeCBhcmUgb2ZmXG5cdGlmICggalF1ZXJ5LmZ4Lm9mZiApIHtcblx0XHRvcHQuZHVyYXRpb24gPSAwO1xuXG5cdH0gZWxzZSB7XG5cdFx0aWYgKCB0eXBlb2Ygb3B0LmR1cmF0aW9uICE9PSBcIm51bWJlclwiICkge1xuXHRcdFx0aWYgKCBvcHQuZHVyYXRpb24gaW4galF1ZXJ5LmZ4LnNwZWVkcyApIHtcblx0XHRcdFx0b3B0LmR1cmF0aW9uID0galF1ZXJ5LmZ4LnNwZWVkc1sgb3B0LmR1cmF0aW9uIF07XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG9wdC5kdXJhdGlvbiA9IGpRdWVyeS5meC5zcGVlZHMuX2RlZmF1bHQ7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gTm9ybWFsaXplIG9wdC5xdWV1ZSAtIHRydWUvdW5kZWZpbmVkL251bGwgLT4gXCJmeFwiXG5cdGlmICggb3B0LnF1ZXVlID09IG51bGwgfHwgb3B0LnF1ZXVlID09PSB0cnVlICkge1xuXHRcdG9wdC5xdWV1ZSA9IFwiZnhcIjtcblx0fVxuXG5cdC8vIFF1ZXVlaW5nXG5cdG9wdC5vbGQgPSBvcHQuY29tcGxldGU7XG5cblx0b3B0LmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBvcHQub2xkICkgKSB7XG5cdFx0XHRvcHQub2xkLmNhbGwoIHRoaXMgKTtcblx0XHR9XG5cblx0XHRpZiAoIG9wdC5xdWV1ZSApIHtcblx0XHRcdGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCBvcHQucXVldWUgKTtcblx0XHR9XG5cdH07XG5cblx0cmV0dXJuIG9wdDtcbn07XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0ZmFkZVRvOiBmdW5jdGlvbiggc3BlZWQsIHRvLCBlYXNpbmcsIGNhbGxiYWNrICkge1xuXG5cdFx0Ly8gU2hvdyBhbnkgaGlkZGVuIGVsZW1lbnRzIGFmdGVyIHNldHRpbmcgb3BhY2l0eSB0byAwXG5cdFx0cmV0dXJuIHRoaXMuZmlsdGVyKCBpc0hpZGRlbldpdGhpblRyZWUgKS5jc3MoIFwib3BhY2l0eVwiLCAwICkuc2hvdygpXG5cblx0XHRcdC8vIEFuaW1hdGUgdG8gdGhlIHZhbHVlIHNwZWNpZmllZFxuXHRcdFx0LmVuZCgpLmFuaW1hdGUoIHsgb3BhY2l0eTogdG8gfSwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKTtcblx0fSxcblx0YW5pbWF0ZTogZnVuY3Rpb24oIHByb3AsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkge1xuXHRcdHZhciBlbXB0eSA9IGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBwcm9wICksXG5cdFx0XHRvcHRhbGwgPSBqUXVlcnkuc3BlZWQoIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICksXG5cdFx0XHRkb0FuaW1hdGlvbiA9IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHRcdC8vIE9wZXJhdGUgb24gYSBjb3B5IG9mIHByb3Agc28gcGVyLXByb3BlcnR5IGVhc2luZyB3b24ndCBiZSBsb3N0XG5cdFx0XHRcdHZhciBhbmltID0gQW5pbWF0aW9uKCB0aGlzLCBqUXVlcnkuZXh0ZW5kKCB7fSwgcHJvcCApLCBvcHRhbGwgKTtcblxuXHRcdFx0XHQvLyBFbXB0eSBhbmltYXRpb25zLCBvciBmaW5pc2hpbmcgcmVzb2x2ZXMgaW1tZWRpYXRlbHlcblx0XHRcdFx0aWYgKCBlbXB0eSB8fCBkYXRhUHJpdi5nZXQoIHRoaXMsIFwiZmluaXNoXCIgKSApIHtcblx0XHRcdFx0XHRhbmltLnN0b3AoIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdGRvQW5pbWF0aW9uLmZpbmlzaCA9IGRvQW5pbWF0aW9uO1xuXG5cdFx0cmV0dXJuIGVtcHR5IHx8IG9wdGFsbC5xdWV1ZSA9PT0gZmFsc2UgP1xuXHRcdFx0dGhpcy5lYWNoKCBkb0FuaW1hdGlvbiApIDpcblx0XHRcdHRoaXMucXVldWUoIG9wdGFsbC5xdWV1ZSwgZG9BbmltYXRpb24gKTtcblx0fSxcblx0c3RvcDogZnVuY3Rpb24oIHR5cGUsIGNsZWFyUXVldWUsIGdvdG9FbmQgKSB7XG5cdFx0dmFyIHN0b3BRdWV1ZSA9IGZ1bmN0aW9uKCBob29rcyApIHtcblx0XHRcdHZhciBzdG9wID0gaG9va3Muc3RvcDtcblx0XHRcdGRlbGV0ZSBob29rcy5zdG9wO1xuXHRcdFx0c3RvcCggZ290b0VuZCApO1xuXHRcdH07XG5cblx0XHRpZiAoIHR5cGVvZiB0eXBlICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0Z290b0VuZCA9IGNsZWFyUXVldWU7XG5cdFx0XHRjbGVhclF1ZXVlID0gdHlwZTtcblx0XHRcdHR5cGUgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICggY2xlYXJRdWV1ZSApIHtcblx0XHRcdHRoaXMucXVldWUoIHR5cGUgfHwgXCJmeFwiLCBbXSApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGRlcXVldWUgPSB0cnVlLFxuXHRcdFx0XHRpbmRleCA9IHR5cGUgIT0gbnVsbCAmJiB0eXBlICsgXCJxdWV1ZUhvb2tzXCIsXG5cdFx0XHRcdHRpbWVycyA9IGpRdWVyeS50aW1lcnMsXG5cdFx0XHRcdGRhdGEgPSBkYXRhUHJpdi5nZXQoIHRoaXMgKTtcblxuXHRcdFx0aWYgKCBpbmRleCApIHtcblx0XHRcdFx0aWYgKCBkYXRhWyBpbmRleCBdICYmIGRhdGFbIGluZGV4IF0uc3RvcCApIHtcblx0XHRcdFx0XHRzdG9wUXVldWUoIGRhdGFbIGluZGV4IF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Zm9yICggaW5kZXggaW4gZGF0YSApIHtcblx0XHRcdFx0XHRpZiAoIGRhdGFbIGluZGV4IF0gJiYgZGF0YVsgaW5kZXggXS5zdG9wICYmIHJydW4udGVzdCggaW5kZXggKSApIHtcblx0XHRcdFx0XHRcdHN0b3BRdWV1ZSggZGF0YVsgaW5kZXggXSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKCBpbmRleCA9IHRpbWVycy5sZW5ndGg7IGluZGV4LS07ICkge1xuXHRcdFx0XHRpZiAoIHRpbWVyc1sgaW5kZXggXS5lbGVtID09PSB0aGlzICYmXG5cdFx0XHRcdFx0KCB0eXBlID09IG51bGwgfHwgdGltZXJzWyBpbmRleCBdLnF1ZXVlID09PSB0eXBlICkgKSB7XG5cblx0XHRcdFx0XHR0aW1lcnNbIGluZGV4IF0uYW5pbS5zdG9wKCBnb3RvRW5kICk7XG5cdFx0XHRcdFx0ZGVxdWV1ZSA9IGZhbHNlO1xuXHRcdFx0XHRcdHRpbWVycy5zcGxpY2UoIGluZGV4LCAxICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gU3RhcnQgdGhlIG5leHQgaW4gdGhlIHF1ZXVlIGlmIHRoZSBsYXN0IHN0ZXAgd2Fzbid0IGZvcmNlZC5cblx0XHRcdC8vIFRpbWVycyBjdXJyZW50bHkgd2lsbCBjYWxsIHRoZWlyIGNvbXBsZXRlIGNhbGxiYWNrcywgd2hpY2hcblx0XHRcdC8vIHdpbGwgZGVxdWV1ZSBidXQgb25seSBpZiB0aGV5IHdlcmUgZ290b0VuZC5cblx0XHRcdGlmICggZGVxdWV1ZSB8fCAhZ290b0VuZCApIHtcblx0XHRcdFx0alF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cdGZpbmlzaDogZnVuY3Rpb24oIHR5cGUgKSB7XG5cdFx0aWYgKCB0eXBlICE9PSBmYWxzZSApIHtcblx0XHRcdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgaW5kZXgsXG5cdFx0XHRcdGRhdGEgPSBkYXRhUHJpdi5nZXQoIHRoaXMgKSxcblx0XHRcdFx0cXVldWUgPSBkYXRhWyB0eXBlICsgXCJxdWV1ZVwiIF0sXG5cdFx0XHRcdGhvb2tzID0gZGF0YVsgdHlwZSArIFwicXVldWVIb29rc1wiIF0sXG5cdFx0XHRcdHRpbWVycyA9IGpRdWVyeS50aW1lcnMsXG5cdFx0XHRcdGxlbmd0aCA9IHF1ZXVlID8gcXVldWUubGVuZ3RoIDogMDtcblxuXHRcdFx0Ly8gRW5hYmxlIGZpbmlzaGluZyBmbGFnIG9uIHByaXZhdGUgZGF0YVxuXHRcdFx0ZGF0YS5maW5pc2ggPSB0cnVlO1xuXG5cdFx0XHQvLyBFbXB0eSB0aGUgcXVldWUgZmlyc3Rcblx0XHRcdGpRdWVyeS5xdWV1ZSggdGhpcywgdHlwZSwgW10gKTtcblxuXHRcdFx0aWYgKCBob29rcyAmJiBob29rcy5zdG9wICkge1xuXHRcdFx0XHRob29rcy5zdG9wLmNhbGwoIHRoaXMsIHRydWUgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTG9vayBmb3IgYW55IGFjdGl2ZSBhbmltYXRpb25zLCBhbmQgZmluaXNoIHRoZW1cblx0XHRcdGZvciAoIGluZGV4ID0gdGltZXJzLmxlbmd0aDsgaW5kZXgtLTsgKSB7XG5cdFx0XHRcdGlmICggdGltZXJzWyBpbmRleCBdLmVsZW0gPT09IHRoaXMgJiYgdGltZXJzWyBpbmRleCBdLnF1ZXVlID09PSB0eXBlICkge1xuXHRcdFx0XHRcdHRpbWVyc1sgaW5kZXggXS5hbmltLnN0b3AoIHRydWUgKTtcblx0XHRcdFx0XHR0aW1lcnMuc3BsaWNlKCBpbmRleCwgMSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIExvb2sgZm9yIGFueSBhbmltYXRpb25zIGluIHRoZSBvbGQgcXVldWUgYW5kIGZpbmlzaCB0aGVtXG5cdFx0XHRmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdFx0XHRpZiAoIHF1ZXVlWyBpbmRleCBdICYmIHF1ZXVlWyBpbmRleCBdLmZpbmlzaCApIHtcblx0XHRcdFx0XHRxdWV1ZVsgaW5kZXggXS5maW5pc2guY2FsbCggdGhpcyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFR1cm4gb2ZmIGZpbmlzaGluZyBmbGFnXG5cdFx0XHRkZWxldGUgZGF0YS5maW5pc2g7XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5lYWNoKCBbIFwidG9nZ2xlXCIsIFwic2hvd1wiLCBcImhpZGVcIiBdLCBmdW5jdGlvbiggX2ksIG5hbWUgKSB7XG5cdHZhciBjc3NGbiA9IGpRdWVyeS5mblsgbmFtZSBdO1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4gc3BlZWQgPT0gbnVsbCB8fCB0eXBlb2Ygc3BlZWQgPT09IFwiYm9vbGVhblwiID9cblx0XHRcdGNzc0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSA6XG5cdFx0XHR0aGlzLmFuaW1hdGUoIGdlbkZ4KCBuYW1lLCB0cnVlICksIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XG5cdH07XG59ICk7XG5cbi8vIEdlbmVyYXRlIHNob3J0Y3V0cyBmb3IgY3VzdG9tIGFuaW1hdGlvbnNcbmpRdWVyeS5lYWNoKCB7XG5cdHNsaWRlRG93bjogZ2VuRngoIFwic2hvd1wiICksXG5cdHNsaWRlVXA6IGdlbkZ4KCBcImhpZGVcIiApLFxuXHRzbGlkZVRvZ2dsZTogZ2VuRngoIFwidG9nZ2xlXCIgKSxcblx0ZmFkZUluOiB7IG9wYWNpdHk6IFwic2hvd1wiIH0sXG5cdGZhZGVPdXQ6IHsgb3BhY2l0eTogXCJoaWRlXCIgfSxcblx0ZmFkZVRvZ2dsZTogeyBvcGFjaXR5OiBcInRvZ2dsZVwiIH1cbn0sIGZ1bmN0aW9uKCBuYW1lLCBwcm9wcyApIHtcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIHRoaXMuYW5pbWF0ZSggcHJvcHMsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XG5cdH07XG59ICk7XG5cbmpRdWVyeS50aW1lcnMgPSBbXTtcbmpRdWVyeS5meC50aWNrID0gZnVuY3Rpb24oKSB7XG5cdHZhciB0aW1lcixcblx0XHRpID0gMCxcblx0XHR0aW1lcnMgPSBqUXVlcnkudGltZXJzO1xuXG5cdGZ4Tm93ID0gRGF0ZS5ub3coKTtcblxuXHRmb3IgKCA7IGkgPCB0aW1lcnMubGVuZ3RoOyBpKysgKSB7XG5cdFx0dGltZXIgPSB0aW1lcnNbIGkgXTtcblxuXHRcdC8vIFJ1biB0aGUgdGltZXIgYW5kIHNhZmVseSByZW1vdmUgaXQgd2hlbiBkb25lIChhbGxvd2luZyBmb3IgZXh0ZXJuYWwgcmVtb3ZhbClcblx0XHRpZiAoICF0aW1lcigpICYmIHRpbWVyc1sgaSBdID09PSB0aW1lciApIHtcblx0XHRcdHRpbWVycy5zcGxpY2UoIGktLSwgMSApO1xuXHRcdH1cblx0fVxuXG5cdGlmICggIXRpbWVycy5sZW5ndGggKSB7XG5cdFx0alF1ZXJ5LmZ4LnN0b3AoKTtcblx0fVxuXHRmeE5vdyA9IHVuZGVmaW5lZDtcbn07XG5cbmpRdWVyeS5meC50aW1lciA9IGZ1bmN0aW9uKCB0aW1lciApIHtcblx0alF1ZXJ5LnRpbWVycy5wdXNoKCB0aW1lciApO1xuXHRqUXVlcnkuZnguc3RhcnQoKTtcbn07XG5cbmpRdWVyeS5meC5pbnRlcnZhbCA9IDEzO1xualF1ZXJ5LmZ4LnN0YXJ0ID0gZnVuY3Rpb24oKSB7XG5cdGlmICggaW5Qcm9ncmVzcyApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRpblByb2dyZXNzID0gdHJ1ZTtcblx0c2NoZWR1bGUoKTtcbn07XG5cbmpRdWVyeS5meC5zdG9wID0gZnVuY3Rpb24oKSB7XG5cdGluUHJvZ3Jlc3MgPSBudWxsO1xufTtcblxualF1ZXJ5LmZ4LnNwZWVkcyA9IHtcblx0c2xvdzogNjAwLFxuXHRmYXN0OiAyMDAsXG5cblx0Ly8gRGVmYXVsdCBzcGVlZFxuXHRfZGVmYXVsdDogNDAwXG59O1xuXG5cbi8vIEJhc2VkIG9mZiBvZiB0aGUgcGx1Z2luIGJ5IENsaW50IEhlbGZlcnMsIHdpdGggcGVybWlzc2lvbi5cbmpRdWVyeS5mbi5kZWxheSA9IGZ1bmN0aW9uKCB0aW1lLCB0eXBlICkge1xuXHR0aW1lID0galF1ZXJ5LmZ4ID8galF1ZXJ5LmZ4LnNwZWVkc1sgdGltZSBdIHx8IHRpbWUgOiB0aW1lO1xuXHR0eXBlID0gdHlwZSB8fCBcImZ4XCI7XG5cblx0cmV0dXJuIHRoaXMucXVldWUoIHR5cGUsIGZ1bmN0aW9uKCBuZXh0LCBob29rcyApIHtcblx0XHR2YXIgdGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCBuZXh0LCB0aW1lICk7XG5cdFx0aG9va3Muc3RvcCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0d2luZG93LmNsZWFyVGltZW91dCggdGltZW91dCApO1xuXHRcdH07XG5cdH0gKTtcbn07XG5cblxuKCBmdW5jdGlvbigpIHtcblx0dmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJpbnB1dFwiICksXG5cdFx0c2VsZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJzZWxlY3RcIiApLFxuXHRcdG9wdCA9IHNlbGVjdC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJvcHRpb25cIiApICk7XG5cblx0aW5wdXQudHlwZSA9IFwiY2hlY2tib3hcIjtcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4zIG9ubHlcblx0Ly8gRGVmYXVsdCB2YWx1ZSBmb3IgYSBjaGVja2JveCBzaG91bGQgYmUgXCJvblwiXG5cdHN1cHBvcnQuY2hlY2tPbiA9IGlucHV0LnZhbHVlICE9PSBcIlwiO1xuXG5cdC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seVxuXHQvLyBNdXN0IGFjY2VzcyBzZWxlY3RlZEluZGV4IHRvIG1ha2UgZGVmYXVsdCBvcHRpb25zIHNlbGVjdFxuXHRzdXBwb3J0Lm9wdFNlbGVjdGVkID0gb3B0LnNlbGVjdGVkO1xuXG5cdC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seVxuXHQvLyBBbiBpbnB1dCBsb3NlcyBpdHMgdmFsdWUgYWZ0ZXIgYmVjb21pbmcgYSByYWRpb1xuXHRpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiaW5wdXRcIiApO1xuXHRpbnB1dC52YWx1ZSA9IFwidFwiO1xuXHRpbnB1dC50eXBlID0gXCJyYWRpb1wiO1xuXHRzdXBwb3J0LnJhZGlvVmFsdWUgPSBpbnB1dC52YWx1ZSA9PT0gXCJ0XCI7XG59ICkoKTtcblxuXG52YXIgYm9vbEhvb2ssXG5cdGF0dHJIYW5kbGUgPSBqUXVlcnkuZXhwci5hdHRySGFuZGxlO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGF0dHI6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBqUXVlcnkuYXR0ciwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7XG5cdH0sXG5cblx0cmVtb3ZlQXR0cjogZnVuY3Rpb24oIG5hbWUgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkucmVtb3ZlQXR0ciggdGhpcywgbmFtZSApO1xuXHRcdH0gKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cdGF0dHI6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSApIHtcblx0XHR2YXIgcmV0LCBob29rcyxcblx0XHRcdG5UeXBlID0gZWxlbS5ub2RlVHlwZTtcblxuXHRcdC8vIERvbid0IGdldC9zZXQgYXR0cmlidXRlcyBvbiB0ZXh0LCBjb21tZW50IGFuZCBhdHRyaWJ1dGUgbm9kZXNcblx0XHRpZiAoIG5UeXBlID09PSAzIHx8IG5UeXBlID09PSA4IHx8IG5UeXBlID09PSAyICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIEZhbGxiYWNrIHRvIHByb3Agd2hlbiBhdHRyaWJ1dGVzIGFyZSBub3Qgc3VwcG9ydGVkXG5cdFx0aWYgKCB0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGUgPT09IFwidW5kZWZpbmVkXCIgKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LnByb3AoIGVsZW0sIG5hbWUsIHZhbHVlICk7XG5cdFx0fVxuXG5cdFx0Ly8gQXR0cmlidXRlIGhvb2tzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBsb3dlcmNhc2UgdmVyc2lvblxuXHRcdC8vIEdyYWIgbmVjZXNzYXJ5IGhvb2sgaWYgb25lIGlzIGRlZmluZWRcblx0XHRpZiAoIG5UeXBlICE9PSAxIHx8ICFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKSApIHtcblx0XHRcdGhvb2tzID0galF1ZXJ5LmF0dHJIb29rc1sgbmFtZS50b0xvd2VyQ2FzZSgpIF0gfHxcblx0XHRcdFx0KCBqUXVlcnkuZXhwci5tYXRjaC5ib29sLnRlc3QoIG5hbWUgKSA/IGJvb2xIb29rIDogdW5kZWZpbmVkICk7XG5cdFx0fVxuXG5cdFx0aWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0aWYgKCB2YWx1ZSA9PT0gbnVsbCApIHtcblx0XHRcdFx0alF1ZXJ5LnJlbW92ZUF0dHIoIGVsZW0sIG5hbWUgKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGhvb2tzICYmIFwic2V0XCIgaW4gaG9va3MgJiZcblx0XHRcdFx0KCByZXQgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBuYW1lICkgKSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXG5cdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggbmFtZSwgdmFsdWUgKyBcIlwiICk7XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fVxuXG5cdFx0aWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICYmICggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBuYW1lICkgKSAhPT0gbnVsbCApIHtcblx0XHRcdHJldHVybiByZXQ7XG5cdFx0fVxuXG5cdFx0cmV0ID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgbmFtZSApO1xuXG5cdFx0Ly8gTm9uLWV4aXN0ZW50IGF0dHJpYnV0ZXMgcmV0dXJuIG51bGwsIHdlIG5vcm1hbGl6ZSB0byB1bmRlZmluZWRcblx0XHRyZXR1cm4gcmV0ID09IG51bGwgPyB1bmRlZmluZWQgOiByZXQ7XG5cdH0sXG5cblx0YXR0ckhvb2tzOiB7XG5cdFx0dHlwZToge1xuXHRcdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7XG5cdFx0XHRcdGlmICggIXN1cHBvcnQucmFkaW9WYWx1ZSAmJiB2YWx1ZSA9PT0gXCJyYWRpb1wiICYmXG5cdFx0XHRcdFx0bm9kZU5hbWUoIGVsZW0sIFwiaW5wdXRcIiApICkge1xuXHRcdFx0XHRcdHZhciB2YWwgPSBlbGVtLnZhbHVlO1xuXHRcdFx0XHRcdGVsZW0uc2V0QXR0cmlidXRlKCBcInR5cGVcIiwgdmFsdWUgKTtcblx0XHRcdFx0XHRpZiAoIHZhbCApIHtcblx0XHRcdFx0XHRcdGVsZW0udmFsdWUgPSB2YWw7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHRyZW1vdmVBdHRyOiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7XG5cdFx0dmFyIG5hbWUsXG5cdFx0XHRpID0gMCxcblxuXHRcdFx0Ly8gQXR0cmlidXRlIG5hbWVzIGNhbiBjb250YWluIG5vbi1IVE1MIHdoaXRlc3BhY2UgY2hhcmFjdGVyc1xuXHRcdFx0Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjYXR0cmlidXRlcy0yXG5cdFx0XHRhdHRyTmFtZXMgPSB2YWx1ZSAmJiB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApO1xuXG5cdFx0aWYgKCBhdHRyTmFtZXMgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdHdoaWxlICggKCBuYW1lID0gYXR0ck5hbWVzWyBpKysgXSApICkge1xuXHRcdFx0XHRlbGVtLnJlbW92ZUF0dHJpYnV0ZSggbmFtZSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufSApO1xuXG4vLyBIb29rcyBmb3IgYm9vbGVhbiBhdHRyaWJ1dGVzXG5ib29sSG9vayA9IHtcblx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUsIG5hbWUgKSB7XG5cdFx0aWYgKCB2YWx1ZSA9PT0gZmFsc2UgKSB7XG5cblx0XHRcdC8vIFJlbW92ZSBib29sZWFuIGF0dHJpYnV0ZXMgd2hlbiBzZXQgdG8gZmFsc2Vcblx0XHRcdGpRdWVyeS5yZW1vdmVBdHRyKCBlbGVtLCBuYW1lICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGVsZW0uc2V0QXR0cmlidXRlKCBuYW1lLCBuYW1lICk7XG5cdFx0fVxuXHRcdHJldHVybiBuYW1lO1xuXHR9XG59O1xuXG5qUXVlcnkuZWFjaCggalF1ZXJ5LmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goIC9cXHcrL2cgKSwgZnVuY3Rpb24oIF9pLCBuYW1lICkge1xuXHR2YXIgZ2V0dGVyID0gYXR0ckhhbmRsZVsgbmFtZSBdIHx8IGpRdWVyeS5maW5kLmF0dHI7XG5cblx0YXR0ckhhbmRsZVsgbmFtZSBdID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkge1xuXHRcdHZhciByZXQsIGhhbmRsZSxcblx0XHRcdGxvd2VyY2FzZU5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG5cblx0XHRpZiAoICFpc1hNTCApIHtcblxuXHRcdFx0Ly8gQXZvaWQgYW4gaW5maW5pdGUgbG9vcCBieSB0ZW1wb3JhcmlseSByZW1vdmluZyB0aGlzIGZ1bmN0aW9uIGZyb20gdGhlIGdldHRlclxuXHRcdFx0aGFuZGxlID0gYXR0ckhhbmRsZVsgbG93ZXJjYXNlTmFtZSBdO1xuXHRcdFx0YXR0ckhhbmRsZVsgbG93ZXJjYXNlTmFtZSBdID0gcmV0O1xuXHRcdFx0cmV0ID0gZ2V0dGVyKCBlbGVtLCBuYW1lLCBpc1hNTCApICE9IG51bGwgP1xuXHRcdFx0XHRsb3dlcmNhc2VOYW1lIDpcblx0XHRcdFx0bnVsbDtcblx0XHRcdGF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXSA9IGhhbmRsZTtcblx0XHR9XG5cdFx0cmV0dXJuIHJldDtcblx0fTtcbn0gKTtcblxuXG5cblxudmFyIHJmb2N1c2FibGUgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLFxuXHRyY2xpY2thYmxlID0gL14oPzphfGFyZWEpJC9pO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHByb3A6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBqUXVlcnkucHJvcCwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7XG5cdH0sXG5cblx0cmVtb3ZlUHJvcDogZnVuY3Rpb24oIG5hbWUgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRkZWxldGUgdGhpc1sgalF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1lIF07XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0cHJvcDogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkge1xuXHRcdHZhciByZXQsIGhvb2tzLFxuXHRcdFx0blR5cGUgPSBlbGVtLm5vZGVUeXBlO1xuXG5cdFx0Ly8gRG9uJ3QgZ2V0L3NldCBwcm9wZXJ0aWVzIG9uIHRleHQsIGNvbW1lbnQgYW5kIGF0dHJpYnV0ZSBub2Rlc1xuXHRcdGlmICggblR5cGUgPT09IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7XG5cblx0XHRcdC8vIEZpeCBuYW1lIGFuZCBhdHRhY2ggaG9va3Ncblx0XHRcdG5hbWUgPSBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWU7XG5cdFx0XHRob29rcyA9IGpRdWVyeS5wcm9wSG9va3NbIG5hbWUgXTtcblx0XHR9XG5cblx0XHRpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRpZiAoIGhvb2tzICYmIFwic2V0XCIgaW4gaG9va3MgJiZcblx0XHRcdFx0KCByZXQgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBuYW1lICkgKSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gKCBlbGVtWyBuYW1lIF0gPSB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyAmJiAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApICkgIT09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblxuXHRcdHJldHVybiBlbGVtWyBuYW1lIF07XG5cdH0sXG5cblx0cHJvcEhvb2tzOiB7XG5cdFx0dGFiSW5kZXg6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seVxuXHRcdFx0XHQvLyBlbGVtLnRhYkluZGV4IGRvZXNuJ3QgYWx3YXlzIHJldHVybiB0aGVcblx0XHRcdFx0Ly8gY29ycmVjdCB2YWx1ZSB3aGVuIGl0IGhhc24ndCBiZWVuIGV4cGxpY2l0bHkgc2V0XG5cdFx0XHRcdC8vIFVzZSBwcm9wZXIgYXR0cmlidXRlIHJldHJpZXZhbCAodHJhYy0xMjA3Milcblx0XHRcdFx0dmFyIHRhYmluZGV4ID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgXCJ0YWJpbmRleFwiICk7XG5cblx0XHRcdFx0aWYgKCB0YWJpbmRleCApIHtcblx0XHRcdFx0XHRyZXR1cm4gcGFyc2VJbnQoIHRhYmluZGV4LCAxMCApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHJmb2N1c2FibGUudGVzdCggZWxlbS5ub2RlTmFtZSApIHx8XG5cdFx0XHRcdFx0cmNsaWNrYWJsZS50ZXN0KCBlbGVtLm5vZGVOYW1lICkgJiZcblx0XHRcdFx0XHRlbGVtLmhyZWZcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIDA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gLTE7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdHByb3BGaXg6IHtcblx0XHRcImZvclwiOiBcImh0bWxGb3JcIixcblx0XHRcImNsYXNzXCI6IFwiY2xhc3NOYW1lXCJcblx0fVxufSApO1xuXG4vLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcbi8vIEFjY2Vzc2luZyB0aGUgc2VsZWN0ZWRJbmRleCBwcm9wZXJ0eVxuLy8gZm9yY2VzIHRoZSBicm93c2VyIHRvIHJlc3BlY3Qgc2V0dGluZyBzZWxlY3RlZFxuLy8gb24gdGhlIG9wdGlvblxuLy8gVGhlIGdldHRlciBlbnN1cmVzIGEgZGVmYXVsdCBvcHRpb24gaXMgc2VsZWN0ZWRcbi8vIHdoZW4gaW4gYW4gb3B0Z3JvdXBcbi8vIGVzbGludCBydWxlIFwibm8tdW51c2VkLWV4cHJlc3Npb25zXCIgaXMgZGlzYWJsZWQgZm9yIHRoaXMgY29kZVxuLy8gc2luY2UgaXQgY29uc2lkZXJzIHN1Y2ggYWNjZXNzaW9ucyBub29wXG5pZiAoICFzdXBwb3J0Lm9wdFNlbGVjdGVkICkge1xuXHRqUXVlcnkucHJvcEhvb2tzLnNlbGVjdGVkID0ge1xuXHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdC8qIGVzbGludCBuby11bnVzZWQtZXhwcmVzc2lvbnM6IFwib2ZmXCIgKi9cblxuXHRcdFx0dmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTtcblx0XHRcdGlmICggcGFyZW50ICYmIHBhcmVudC5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRwYXJlbnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fSxcblx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdFx0XHQvKiBlc2xpbnQgbm8tdW51c2VkLWV4cHJlc3Npb25zOiBcIm9mZlwiICovXG5cblx0XHRcdHZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7XG5cdFx0XHRpZiAoIHBhcmVudCApIHtcblx0XHRcdFx0cGFyZW50LnNlbGVjdGVkSW5kZXg7XG5cblx0XHRcdFx0aWYgKCBwYXJlbnQucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0XHRwYXJlbnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xufVxuXG5qUXVlcnkuZWFjaCggW1xuXHRcInRhYkluZGV4XCIsXG5cdFwicmVhZE9ubHlcIixcblx0XCJtYXhMZW5ndGhcIixcblx0XCJjZWxsU3BhY2luZ1wiLFxuXHRcImNlbGxQYWRkaW5nXCIsXG5cdFwicm93U3BhblwiLFxuXHRcImNvbFNwYW5cIixcblx0XCJ1c2VNYXBcIixcblx0XCJmcmFtZUJvcmRlclwiLFxuXHRcImNvbnRlbnRFZGl0YWJsZVwiXG5dLCBmdW5jdGlvbigpIHtcblx0alF1ZXJ5LnByb3BGaXhbIHRoaXMudG9Mb3dlckNhc2UoKSBdID0gdGhpcztcbn0gKTtcblxuXG5cblxuXHQvLyBTdHJpcCBhbmQgY29sbGFwc2Ugd2hpdGVzcGFjZSBhY2NvcmRpbmcgdG8gSFRNTCBzcGVjXG5cdC8vIGh0dHBzOi8vaW5mcmEuc3BlYy53aGF0d2cub3JnLyNzdHJpcC1hbmQtY29sbGFwc2UtYXNjaWktd2hpdGVzcGFjZVxuXHRmdW5jdGlvbiBzdHJpcEFuZENvbGxhcHNlKCB2YWx1ZSApIHtcblx0XHR2YXIgdG9rZW5zID0gdmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTtcblx0XHRyZXR1cm4gdG9rZW5zLmpvaW4oIFwiIFwiICk7XG5cdH1cblxuXG5mdW5jdGlvbiBnZXRDbGFzcyggZWxlbSApIHtcblx0cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlICYmIGVsZW0uZ2V0QXR0cmlidXRlKCBcImNsYXNzXCIgKSB8fCBcIlwiO1xufVxuXG5mdW5jdGlvbiBjbGFzc2VzVG9BcnJheSggdmFsdWUgKSB7XG5cdGlmICggQXJyYXkuaXNBcnJheSggdmFsdWUgKSApIHtcblx0XHRyZXR1cm4gdmFsdWU7XG5cdH1cblx0aWYgKCB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0cmV0dXJuIHZhbHVlLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107XG5cdH1cblx0cmV0dXJuIFtdO1xufVxuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGFkZENsYXNzOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0dmFyIGNsYXNzTmFtZXMsIGN1ciwgY3VyVmFsdWUsIGNsYXNzTmFtZSwgaSwgZmluYWxWYWx1ZTtcblxuXHRcdGlmICggaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBqICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5hZGRDbGFzcyggdmFsdWUuY2FsbCggdGhpcywgaiwgZ2V0Q2xhc3MoIHRoaXMgKSApICk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0Y2xhc3NOYW1lcyA9IGNsYXNzZXNUb0FycmF5KCB2YWx1ZSApO1xuXG5cdFx0aWYgKCBjbGFzc05hbWVzLmxlbmd0aCApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRjdXJWYWx1ZSA9IGdldENsYXNzKCB0aGlzICk7XG5cdFx0XHRcdGN1ciA9IHRoaXMubm9kZVR5cGUgPT09IDEgJiYgKCBcIiBcIiArIHN0cmlwQW5kQ29sbGFwc2UoIGN1clZhbHVlICkgKyBcIiBcIiApO1xuXG5cdFx0XHRcdGlmICggY3VyICkge1xuXHRcdFx0XHRcdGZvciAoIGkgPSAwOyBpIDwgY2xhc3NOYW1lcy5sZW5ndGg7IGkrKyApIHtcblx0XHRcdFx0XHRcdGNsYXNzTmFtZSA9IGNsYXNzTmFtZXNbIGkgXTtcblx0XHRcdFx0XHRcdGlmICggY3VyLmluZGV4T2YoIFwiIFwiICsgY2xhc3NOYW1lICsgXCIgXCIgKSA8IDAgKSB7XG5cdFx0XHRcdFx0XHRcdGN1ciArPSBjbGFzc05hbWUgKyBcIiBcIjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBPbmx5IGFzc2lnbiBpZiBkaWZmZXJlbnQgdG8gYXZvaWQgdW5uZWVkZWQgcmVuZGVyaW5nLlxuXHRcdFx0XHRcdGZpbmFsVmFsdWUgPSBzdHJpcEFuZENvbGxhcHNlKCBjdXIgKTtcblx0XHRcdFx0XHRpZiAoIGN1clZhbHVlICE9PSBmaW5hbFZhbHVlICkge1xuXHRcdFx0XHRcdFx0dGhpcy5zZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIiwgZmluYWxWYWx1ZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdHJlbW92ZUNsYXNzOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0dmFyIGNsYXNzTmFtZXMsIGN1ciwgY3VyVmFsdWUsIGNsYXNzTmFtZSwgaSwgZmluYWxWYWx1ZTtcblxuXHRcdGlmICggaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBqICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5yZW1vdmVDbGFzcyggdmFsdWUuY2FsbCggdGhpcywgaiwgZ2V0Q2xhc3MoIHRoaXMgKSApICk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0aWYgKCAhYXJndW1lbnRzLmxlbmd0aCApIHtcblx0XHRcdHJldHVybiB0aGlzLmF0dHIoIFwiY2xhc3NcIiwgXCJcIiApO1xuXHRcdH1cblxuXHRcdGNsYXNzTmFtZXMgPSBjbGFzc2VzVG9BcnJheSggdmFsdWUgKTtcblxuXHRcdGlmICggY2xhc3NOYW1lcy5sZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0Y3VyVmFsdWUgPSBnZXRDbGFzcyggdGhpcyApO1xuXG5cdFx0XHRcdC8vIFRoaXMgZXhwcmVzc2lvbiBpcyBoZXJlIGZvciBiZXR0ZXIgY29tcHJlc3NpYmlsaXR5IChzZWUgYWRkQ2xhc3MpXG5cdFx0XHRcdGN1ciA9IHRoaXMubm9kZVR5cGUgPT09IDEgJiYgKCBcIiBcIiArIHN0cmlwQW5kQ29sbGFwc2UoIGN1clZhbHVlICkgKyBcIiBcIiApO1xuXG5cdFx0XHRcdGlmICggY3VyICkge1xuXHRcdFx0XHRcdGZvciAoIGkgPSAwOyBpIDwgY2xhc3NOYW1lcy5sZW5ndGg7IGkrKyApIHtcblx0XHRcdFx0XHRcdGNsYXNzTmFtZSA9IGNsYXNzTmFtZXNbIGkgXTtcblxuXHRcdFx0XHRcdFx0Ly8gUmVtb3ZlICphbGwqIGluc3RhbmNlc1xuXHRcdFx0XHRcdFx0d2hpbGUgKCBjdXIuaW5kZXhPZiggXCIgXCIgKyBjbGFzc05hbWUgKyBcIiBcIiApID4gLTEgKSB7XG5cdFx0XHRcdFx0XHRcdGN1ciA9IGN1ci5yZXBsYWNlKCBcIiBcIiArIGNsYXNzTmFtZSArIFwiIFwiLCBcIiBcIiApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIE9ubHkgYXNzaWduIGlmIGRpZmZlcmVudCB0byBhdm9pZCB1bm5lZWRlZCByZW5kZXJpbmcuXG5cdFx0XHRcdFx0ZmluYWxWYWx1ZSA9IHN0cmlwQW5kQ29sbGFwc2UoIGN1ciApO1xuXHRcdFx0XHRcdGlmICggY3VyVmFsdWUgIT09IGZpbmFsVmFsdWUgKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnNldEF0dHJpYnV0ZSggXCJjbGFzc1wiLCBmaW5hbFZhbHVlICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH0sXG5cblx0dG9nZ2xlQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSwgc3RhdGVWYWwgKSB7XG5cdFx0dmFyIGNsYXNzTmFtZXMsIGNsYXNzTmFtZSwgaSwgc2VsZixcblx0XHRcdHR5cGUgPSB0eXBlb2YgdmFsdWUsXG5cdFx0XHRpc1ZhbGlkVmFsdWUgPSB0eXBlID09PSBcInN0cmluZ1wiIHx8IEFycmF5LmlzQXJyYXkoIHZhbHVlICk7XG5cblx0XHRpZiAoIGlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkudG9nZ2xlQ2xhc3MoXG5cdFx0XHRcdFx0dmFsdWUuY2FsbCggdGhpcywgaSwgZ2V0Q2xhc3MoIHRoaXMgKSwgc3RhdGVWYWwgKSxcblx0XHRcdFx0XHRzdGF0ZVZhbFxuXHRcdFx0XHQpO1xuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdGlmICggdHlwZW9mIHN0YXRlVmFsID09PSBcImJvb2xlYW5cIiAmJiBpc1ZhbGlkVmFsdWUgKSB7XG5cdFx0XHRyZXR1cm4gc3RhdGVWYWwgPyB0aGlzLmFkZENsYXNzKCB2YWx1ZSApIDogdGhpcy5yZW1vdmVDbGFzcyggdmFsdWUgKTtcblx0XHR9XG5cblx0XHRjbGFzc05hbWVzID0gY2xhc3Nlc1RvQXJyYXkoIHZhbHVlICk7XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggaXNWYWxpZFZhbHVlICkge1xuXG5cdFx0XHRcdC8vIFRvZ2dsZSBpbmRpdmlkdWFsIGNsYXNzIG5hbWVzXG5cdFx0XHRcdHNlbGYgPSBqUXVlcnkoIHRoaXMgKTtcblxuXHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IGNsYXNzTmFtZXMubGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdFx0Y2xhc3NOYW1lID0gY2xhc3NOYW1lc1sgaSBdO1xuXG5cdFx0XHRcdFx0Ly8gQ2hlY2sgZWFjaCBjbGFzc05hbWUgZ2l2ZW4sIHNwYWNlIHNlcGFyYXRlZCBsaXN0XG5cdFx0XHRcdFx0aWYgKCBzZWxmLmhhc0NsYXNzKCBjbGFzc05hbWUgKSApIHtcblx0XHRcdFx0XHRcdHNlbGYucmVtb3ZlQ2xhc3MoIGNsYXNzTmFtZSApO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzZWxmLmFkZENsYXNzKCBjbGFzc05hbWUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0Ly8gVG9nZ2xlIHdob2xlIGNsYXNzIG5hbWVcblx0XHRcdH0gZWxzZSBpZiAoIHZhbHVlID09PSB1bmRlZmluZWQgfHwgdHlwZSA9PT0gXCJib29sZWFuXCIgKSB7XG5cdFx0XHRcdGNsYXNzTmFtZSA9IGdldENsYXNzKCB0aGlzICk7XG5cdFx0XHRcdGlmICggY2xhc3NOYW1lICkge1xuXG5cdFx0XHRcdFx0Ly8gU3RvcmUgY2xhc3NOYW1lIGlmIHNldFxuXHRcdFx0XHRcdGRhdGFQcml2LnNldCggdGhpcywgXCJfX2NsYXNzTmFtZV9fXCIsIGNsYXNzTmFtZSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gSWYgdGhlIGVsZW1lbnQgaGFzIGEgY2xhc3MgbmFtZSBvciBpZiB3ZSdyZSBwYXNzZWQgYGZhbHNlYCxcblx0XHRcdFx0Ly8gdGhlbiByZW1vdmUgdGhlIHdob2xlIGNsYXNzbmFtZSAoaWYgdGhlcmUgd2FzIG9uZSwgdGhlIGFib3ZlIHNhdmVkIGl0KS5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlIGJyaW5nIGJhY2sgd2hhdGV2ZXIgd2FzIHByZXZpb3VzbHkgc2F2ZWQgKGlmIGFueXRoaW5nKSxcblx0XHRcdFx0Ly8gZmFsbGluZyBiYWNrIHRvIHRoZSBlbXB0eSBzdHJpbmcgaWYgbm90aGluZyB3YXMgc3RvcmVkLlxuXHRcdFx0XHRpZiAoIHRoaXMuc2V0QXR0cmlidXRlICkge1xuXHRcdFx0XHRcdHRoaXMuc2V0QXR0cmlidXRlKCBcImNsYXNzXCIsXG5cdFx0XHRcdFx0XHRjbGFzc05hbWUgfHwgdmFsdWUgPT09IGZhbHNlID9cblx0XHRcdFx0XHRcdFx0XCJcIiA6XG5cdFx0XHRcdFx0XHRcdGRhdGFQcml2LmdldCggdGhpcywgXCJfX2NsYXNzTmFtZV9fXCIgKSB8fCBcIlwiXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRoYXNDbGFzczogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHZhciBjbGFzc05hbWUsIGVsZW0sXG5cdFx0XHRpID0gMDtcblxuXHRcdGNsYXNzTmFtZSA9IFwiIFwiICsgc2VsZWN0b3IgKyBcIiBcIjtcblx0XHR3aGlsZSAoICggZWxlbSA9IHRoaXNbIGkrKyBdICkgKSB7XG5cdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgJiZcblx0XHRcdFx0KCBcIiBcIiArIHN0cmlwQW5kQ29sbGFwc2UoIGdldENsYXNzKCBlbGVtICkgKSArIFwiIFwiICkuaW5kZXhPZiggY2xhc3NOYW1lICkgPiAtMSApIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59ICk7XG5cblxuXG5cbnZhciBycmV0dXJuID0gL1xcci9nO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHZhbDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHZhciBob29rcywgcmV0LCB2YWx1ZUlzRnVuY3Rpb24sXG5cdFx0XHRlbGVtID0gdGhpc1sgMCBdO1xuXG5cdFx0aWYgKCAhYXJndW1lbnRzLmxlbmd0aCApIHtcblx0XHRcdGlmICggZWxlbSApIHtcblx0XHRcdFx0aG9va3MgPSBqUXVlcnkudmFsSG9va3NbIGVsZW0udHlwZSBdIHx8XG5cdFx0XHRcdFx0alF1ZXJ5LnZhbEhvb2tzWyBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTtcblxuXHRcdFx0XHRpZiAoIGhvb2tzICYmXG5cdFx0XHRcdFx0XCJnZXRcIiBpbiBob29rcyAmJlxuXHRcdFx0XHRcdCggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBcInZhbHVlXCIgKSApICE9PSB1bmRlZmluZWRcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldCA9IGVsZW0udmFsdWU7XG5cblx0XHRcdFx0Ly8gSGFuZGxlIG1vc3QgY29tbW9uIHN0cmluZyBjYXNlc1xuXHRcdFx0XHRpZiAoIHR5cGVvZiByZXQgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJldC5yZXBsYWNlKCBycmV0dXJuLCBcIlwiICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBIYW5kbGUgY2FzZXMgd2hlcmUgdmFsdWUgaXMgbnVsbC91bmRlZiBvciBudW1iZXJcblx0XHRcdFx0cmV0dXJuIHJldCA9PSBudWxsID8gXCJcIiA6IHJldDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHZhbHVlSXNGdW5jdGlvbiA9IGlzRnVuY3Rpb24oIHZhbHVlICk7XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdHZhciB2YWw7XG5cblx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSAhPT0gMSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHZhbHVlSXNGdW5jdGlvbiApIHtcblx0XHRcdFx0dmFsID0gdmFsdWUuY2FsbCggdGhpcywgaSwgalF1ZXJ5KCB0aGlzICkudmFsKCkgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHZhbCA9IHZhbHVlO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBUcmVhdCBudWxsL3VuZGVmaW5lZCBhcyBcIlwiOyBjb252ZXJ0IG51bWJlcnMgdG8gc3RyaW5nXG5cdFx0XHRpZiAoIHZhbCA9PSBudWxsICkge1xuXHRcdFx0XHR2YWwgPSBcIlwiO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCB0eXBlb2YgdmFsID09PSBcIm51bWJlclwiICkge1xuXHRcdFx0XHR2YWwgKz0gXCJcIjtcblxuXHRcdFx0fSBlbHNlIGlmICggQXJyYXkuaXNBcnJheSggdmFsICkgKSB7XG5cdFx0XHRcdHZhbCA9IGpRdWVyeS5tYXAoIHZhbCwgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0XHRcdHJldHVybiB2YWx1ZSA9PSBudWxsID8gXCJcIiA6IHZhbHVlICsgXCJcIjtcblx0XHRcdFx0fSApO1xuXHRcdFx0fVxuXG5cdFx0XHRob29rcyA9IGpRdWVyeS52YWxIb29rc1sgdGhpcy50eXBlIF0gfHwgalF1ZXJ5LnZhbEhvb2tzWyB0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTtcblxuXHRcdFx0Ly8gSWYgc2V0IHJldHVybnMgdW5kZWZpbmVkLCBmYWxsIGJhY2sgdG8gbm9ybWFsIHNldHRpbmdcblx0XHRcdGlmICggIWhvb2tzIHx8ICEoIFwic2V0XCIgaW4gaG9va3MgKSB8fCBob29rcy5zZXQoIHRoaXMsIHZhbCwgXCJ2YWx1ZVwiICkgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0dGhpcy52YWx1ZSA9IHZhbDtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXHR2YWxIb29rczoge1xuXHRcdG9wdGlvbjoge1xuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdFx0XHR2YXIgdmFsID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgXCJ2YWx1ZVwiICk7XG5cdFx0XHRcdHJldHVybiB2YWwgIT0gbnVsbCA/XG5cdFx0XHRcdFx0dmFsIDpcblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9MTAgLSAxMSBvbmx5XG5cdFx0XHRcdFx0Ly8gb3B0aW9uLnRleHQgdGhyb3dzIGV4Y2VwdGlvbnMgKHRyYWMtMTQ2ODYsIHRyYWMtMTQ4NTgpXG5cdFx0XHRcdFx0Ly8gU3RyaXAgYW5kIGNvbGxhcHNlIHdoaXRlc3BhY2Vcblx0XHRcdFx0XHQvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNzdHJpcC1hbmQtY29sbGFwc2Utd2hpdGVzcGFjZVxuXHRcdFx0XHRcdHN0cmlwQW5kQ29sbGFwc2UoIGpRdWVyeS50ZXh0KCBlbGVtICkgKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdHNlbGVjdDoge1xuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0dmFyIHZhbHVlLCBvcHRpb24sIGksXG5cdFx0XHRcdFx0b3B0aW9ucyA9IGVsZW0ub3B0aW9ucyxcblx0XHRcdFx0XHRpbmRleCA9IGVsZW0uc2VsZWN0ZWRJbmRleCxcblx0XHRcdFx0XHRvbmUgPSBlbGVtLnR5cGUgPT09IFwic2VsZWN0LW9uZVwiLFxuXHRcdFx0XHRcdHZhbHVlcyA9IG9uZSA/IG51bGwgOiBbXSxcblx0XHRcdFx0XHRtYXggPSBvbmUgPyBpbmRleCArIDEgOiBvcHRpb25zLmxlbmd0aDtcblxuXHRcdFx0XHRpZiAoIGluZGV4IDwgMCApIHtcblx0XHRcdFx0XHRpID0gbWF4O1xuXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aSA9IG9uZSA/IGluZGV4IDogMDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIHNlbGVjdGVkIG9wdGlvbnNcblx0XHRcdFx0Zm9yICggOyBpIDwgbWF4OyBpKysgKSB7XG5cdFx0XHRcdFx0b3B0aW9uID0gb3B0aW9uc1sgaSBdO1xuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0XHRcdFx0XHQvLyBJRTgtOSBkb2Vzbid0IHVwZGF0ZSBzZWxlY3RlZCBhZnRlciBmb3JtIHJlc2V0ICh0cmFjLTI1NTEpXG5cdFx0XHRcdFx0aWYgKCAoIG9wdGlvbi5zZWxlY3RlZCB8fCBpID09PSBpbmRleCApICYmXG5cblx0XHRcdFx0XHRcdFx0Ly8gRG9uJ3QgcmV0dXJuIG9wdGlvbnMgdGhhdCBhcmUgZGlzYWJsZWQgb3IgaW4gYSBkaXNhYmxlZCBvcHRncm91cFxuXHRcdFx0XHRcdFx0XHQhb3B0aW9uLmRpc2FibGVkICYmXG5cdFx0XHRcdFx0XHRcdCggIW9wdGlvbi5wYXJlbnROb2RlLmRpc2FibGVkIHx8XG5cdFx0XHRcdFx0XHRcdFx0IW5vZGVOYW1lKCBvcHRpb24ucGFyZW50Tm9kZSwgXCJvcHRncm91cFwiICkgKSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gR2V0IHRoZSBzcGVjaWZpYyB2YWx1ZSBmb3IgdGhlIG9wdGlvblxuXHRcdFx0XHRcdFx0dmFsdWUgPSBqUXVlcnkoIG9wdGlvbiApLnZhbCgpO1xuXG5cdFx0XHRcdFx0XHQvLyBXZSBkb24ndCBuZWVkIGFuIGFycmF5IGZvciBvbmUgc2VsZWN0c1xuXHRcdFx0XHRcdFx0aWYgKCBvbmUgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gTXVsdGktU2VsZWN0cyByZXR1cm4gYW4gYXJyYXlcblx0XHRcdFx0XHRcdHZhbHVlcy5wdXNoKCB2YWx1ZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiB2YWx1ZXM7XG5cdFx0XHR9LFxuXG5cdFx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHtcblx0XHRcdFx0dmFyIG9wdGlvblNldCwgb3B0aW9uLFxuXHRcdFx0XHRcdG9wdGlvbnMgPSBlbGVtLm9wdGlvbnMsXG5cdFx0XHRcdFx0dmFsdWVzID0galF1ZXJ5Lm1ha2VBcnJheSggdmFsdWUgKSxcblx0XHRcdFx0XHRpID0gb3B0aW9ucy5sZW5ndGg7XG5cblx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0b3B0aW9uID0gb3B0aW9uc1sgaSBdO1xuXG5cdFx0XHRcdFx0LyogZXNsaW50LWRpc2FibGUgbm8tY29uZC1hc3NpZ24gKi9cblxuXHRcdFx0XHRcdGlmICggb3B0aW9uLnNlbGVjdGVkID1cblx0XHRcdFx0XHRcdGpRdWVyeS5pbkFycmF5KCBqUXVlcnkudmFsSG9va3Mub3B0aW9uLmdldCggb3B0aW9uICksIHZhbHVlcyApID4gLTFcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdG9wdGlvblNldCA9IHRydWU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0LyogZXNsaW50LWVuYWJsZSBuby1jb25kLWFzc2lnbiAqL1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gRm9yY2UgYnJvd3NlcnMgdG8gYmVoYXZlIGNvbnNpc3RlbnRseSB3aGVuIG5vbi1tYXRjaGluZyB2YWx1ZSBpcyBzZXRcblx0XHRcdFx0aWYgKCAhb3B0aW9uU2V0ICkge1xuXHRcdFx0XHRcdGVsZW0uc2VsZWN0ZWRJbmRleCA9IC0xO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB2YWx1ZXM7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59ICk7XG5cbi8vIFJhZGlvcyBhbmQgY2hlY2tib3hlcyBnZXR0ZXIvc2V0dGVyXG5qUXVlcnkuZWFjaCggWyBcInJhZGlvXCIsIFwiY2hlY2tib3hcIiBdLCBmdW5jdGlvbigpIHtcblx0alF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0gPSB7XG5cdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7XG5cdFx0XHRpZiAoIEFycmF5LmlzQXJyYXkoIHZhbHVlICkgKSB7XG5cdFx0XHRcdHJldHVybiAoIGVsZW0uY2hlY2tlZCA9IGpRdWVyeS5pbkFycmF5KCBqUXVlcnkoIGVsZW0gKS52YWwoKSwgdmFsdWUgKSA+IC0xICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRpZiAoICFzdXBwb3J0LmNoZWNrT24gKSB7XG5cdFx0alF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0uZ2V0ID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoIFwidmFsdWVcIiApID09PSBudWxsID8gXCJvblwiIDogZWxlbS52YWx1ZTtcblx0XHR9O1xuXHR9XG59ICk7XG5cblxuXG5cbi8vIFJldHVybiBqUXVlcnkgZm9yIGF0dHJpYnV0ZXMtb25seSBpbmNsdXNpb25cblxuXG5zdXBwb3J0LmZvY3VzaW4gPSBcIm9uZm9jdXNpblwiIGluIHdpbmRvdztcblxuXG52YXIgcmZvY3VzTW9ycGggPSAvXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8sXG5cdHN0b3BQcm9wYWdhdGlvbkNhbGxiYWNrID0gZnVuY3Rpb24oIGUgKSB7XG5cdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcblx0fTtcblxualF1ZXJ5LmV4dGVuZCggalF1ZXJ5LmV2ZW50LCB7XG5cblx0dHJpZ2dlcjogZnVuY3Rpb24oIGV2ZW50LCBkYXRhLCBlbGVtLCBvbmx5SGFuZGxlcnMgKSB7XG5cblx0XHR2YXIgaSwgY3VyLCB0bXAsIGJ1YmJsZVR5cGUsIG9udHlwZSwgaGFuZGxlLCBzcGVjaWFsLCBsYXN0RWxlbWVudCxcblx0XHRcdGV2ZW50UGF0aCA9IFsgZWxlbSB8fCBkb2N1bWVudCBdLFxuXHRcdFx0dHlwZSA9IGhhc093bi5jYWxsKCBldmVudCwgXCJ0eXBlXCIgKSA/IGV2ZW50LnR5cGUgOiBldmVudCxcblx0XHRcdG5hbWVzcGFjZXMgPSBoYXNPd24uY2FsbCggZXZlbnQsIFwibmFtZXNwYWNlXCIgKSA/IGV2ZW50Lm5hbWVzcGFjZS5zcGxpdCggXCIuXCIgKSA6IFtdO1xuXG5cdFx0Y3VyID0gbGFzdEVsZW1lbnQgPSB0bXAgPSBlbGVtID0gZWxlbSB8fCBkb2N1bWVudDtcblxuXHRcdC8vIERvbid0IGRvIGV2ZW50cyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzXG5cdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT09IDggKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gZm9jdXMvYmx1ciBtb3JwaHMgdG8gZm9jdXNpbi9vdXQ7IGVuc3VyZSB3ZSdyZSBub3QgZmlyaW5nIHRoZW0gcmlnaHQgbm93XG5cdFx0aWYgKCByZm9jdXNNb3JwaC50ZXN0KCB0eXBlICsgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCApICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICggdHlwZS5pbmRleE9mKCBcIi5cIiApID4gLTEgKSB7XG5cblx0XHRcdC8vIE5hbWVzcGFjZWQgdHJpZ2dlcjsgY3JlYXRlIGEgcmVnZXhwIHRvIG1hdGNoIGV2ZW50IHR5cGUgaW4gaGFuZGxlKClcblx0XHRcdG5hbWVzcGFjZXMgPSB0eXBlLnNwbGl0KCBcIi5cIiApO1xuXHRcdFx0dHlwZSA9IG5hbWVzcGFjZXMuc2hpZnQoKTtcblx0XHRcdG5hbWVzcGFjZXMuc29ydCgpO1xuXHRcdH1cblx0XHRvbnR5cGUgPSB0eXBlLmluZGV4T2YoIFwiOlwiICkgPCAwICYmIFwib25cIiArIHR5cGU7XG5cblx0XHQvLyBDYWxsZXIgY2FuIHBhc3MgaW4gYSBqUXVlcnkuRXZlbnQgb2JqZWN0LCBPYmplY3QsIG9yIGp1c3QgYW4gZXZlbnQgdHlwZSBzdHJpbmdcblx0XHRldmVudCA9IGV2ZW50WyBqUXVlcnkuZXhwYW5kbyBdID9cblx0XHRcdGV2ZW50IDpcblx0XHRcdG5ldyBqUXVlcnkuRXZlbnQoIHR5cGUsIHR5cGVvZiBldmVudCA9PT0gXCJvYmplY3RcIiAmJiBldmVudCApO1xuXG5cdFx0Ly8gVHJpZ2dlciBiaXRtYXNrOiAmIDEgZm9yIG5hdGl2ZSBoYW5kbGVyczsgJiAyIGZvciBqUXVlcnkgKGFsd2F5cyB0cnVlKVxuXHRcdGV2ZW50LmlzVHJpZ2dlciA9IG9ubHlIYW5kbGVycyA/IDIgOiAzO1xuXHRcdGV2ZW50Lm5hbWVzcGFjZSA9IG5hbWVzcGFjZXMuam9pbiggXCIuXCIgKTtcblx0XHRldmVudC5ybmFtZXNwYWNlID0gZXZlbnQubmFtZXNwYWNlID9cblx0XHRcdG5ldyBSZWdFeHAoIFwiKF58XFxcXC4pXCIgKyBuYW1lc3BhY2VzLmpvaW4oIFwiXFxcXC4oPzouKlxcXFwufClcIiApICsgXCIoXFxcXC58JClcIiApIDpcblx0XHRcdG51bGw7XG5cblx0XHQvLyBDbGVhbiB1cCB0aGUgZXZlbnQgaW4gY2FzZSBpdCBpcyBiZWluZyByZXVzZWRcblx0XHRldmVudC5yZXN1bHQgPSB1bmRlZmluZWQ7XG5cdFx0aWYgKCAhZXZlbnQudGFyZ2V0ICkge1xuXHRcdFx0ZXZlbnQudGFyZ2V0ID0gZWxlbTtcblx0XHR9XG5cblx0XHQvLyBDbG9uZSBhbnkgaW5jb21pbmcgZGF0YSBhbmQgcHJlcGVuZCB0aGUgZXZlbnQsIGNyZWF0aW5nIHRoZSBoYW5kbGVyIGFyZyBsaXN0XG5cdFx0ZGF0YSA9IGRhdGEgPT0gbnVsbCA/XG5cdFx0XHRbIGV2ZW50IF0gOlxuXHRcdFx0alF1ZXJ5Lm1ha2VBcnJheSggZGF0YSwgWyBldmVudCBdICk7XG5cblx0XHQvLyBBbGxvdyBzcGVjaWFsIGV2ZW50cyB0byBkcmF3IG91dHNpZGUgdGhlIGxpbmVzXG5cdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cdFx0aWYgKCAhb25seUhhbmRsZXJzICYmIHNwZWNpYWwudHJpZ2dlciAmJiBzcGVjaWFsLnRyaWdnZXIuYXBwbHkoIGVsZW0sIGRhdGEgKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gRGV0ZXJtaW5lIGV2ZW50IHByb3BhZ2F0aW9uIHBhdGggaW4gYWR2YW5jZSwgcGVyIFczQyBldmVudHMgc3BlYyAodHJhYy05OTUxKVxuXHRcdC8vIEJ1YmJsZSB1cCB0byBkb2N1bWVudCwgdGhlbiB0byB3aW5kb3c7IHdhdGNoIGZvciBhIGdsb2JhbCBvd25lckRvY3VtZW50IHZhciAodHJhYy05NzI0KVxuXHRcdGlmICggIW9ubHlIYW5kbGVycyAmJiAhc3BlY2lhbC5ub0J1YmJsZSAmJiAhaXNXaW5kb3coIGVsZW0gKSApIHtcblxuXHRcdFx0YnViYmxlVHlwZSA9IHNwZWNpYWwuZGVsZWdhdGVUeXBlIHx8IHR5cGU7XG5cdFx0XHRpZiAoICFyZm9jdXNNb3JwaC50ZXN0KCBidWJibGVUeXBlICsgdHlwZSApICkge1xuXHRcdFx0XHRjdXIgPSBjdXIucGFyZW50Tm9kZTtcblx0XHRcdH1cblx0XHRcdGZvciAoIDsgY3VyOyBjdXIgPSBjdXIucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0ZXZlbnRQYXRoLnB1c2goIGN1ciApO1xuXHRcdFx0XHR0bXAgPSBjdXI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE9ubHkgYWRkIHdpbmRvdyBpZiB3ZSBnb3QgdG8gZG9jdW1lbnQgKGUuZy4sIG5vdCBwbGFpbiBvYmogb3IgZGV0YWNoZWQgRE9NKVxuXHRcdFx0aWYgKCB0bXAgPT09ICggZWxlbS5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50ICkgKSB7XG5cdFx0XHRcdGV2ZW50UGF0aC5wdXNoKCB0bXAuZGVmYXVsdFZpZXcgfHwgdG1wLnBhcmVudFdpbmRvdyB8fCB3aW5kb3cgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBGaXJlIGhhbmRsZXJzIG9uIHRoZSBldmVudCBwYXRoXG5cdFx0aSA9IDA7XG5cdFx0d2hpbGUgKCAoIGN1ciA9IGV2ZW50UGF0aFsgaSsrIF0gKSAmJiAhZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHtcblx0XHRcdGxhc3RFbGVtZW50ID0gY3VyO1xuXHRcdFx0ZXZlbnQudHlwZSA9IGkgPiAxID9cblx0XHRcdFx0YnViYmxlVHlwZSA6XG5cdFx0XHRcdHNwZWNpYWwuYmluZFR5cGUgfHwgdHlwZTtcblxuXHRcdFx0Ly8galF1ZXJ5IGhhbmRsZXJcblx0XHRcdGhhbmRsZSA9ICggZGF0YVByaXYuZ2V0KCBjdXIsIFwiZXZlbnRzXCIgKSB8fCBPYmplY3QuY3JlYXRlKCBudWxsICkgKVsgZXZlbnQudHlwZSBdICYmXG5cdFx0XHRcdGRhdGFQcml2LmdldCggY3VyLCBcImhhbmRsZVwiICk7XG5cdFx0XHRpZiAoIGhhbmRsZSApIHtcblx0XHRcdFx0aGFuZGxlLmFwcGx5KCBjdXIsIGRhdGEgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTmF0aXZlIGhhbmRsZXJcblx0XHRcdGhhbmRsZSA9IG9udHlwZSAmJiBjdXJbIG9udHlwZSBdO1xuXHRcdFx0aWYgKCBoYW5kbGUgJiYgaGFuZGxlLmFwcGx5ICYmIGFjY2VwdERhdGEoIGN1ciApICkge1xuXHRcdFx0XHRldmVudC5yZXN1bHQgPSBoYW5kbGUuYXBwbHkoIGN1ciwgZGF0YSApO1xuXHRcdFx0XHRpZiAoIGV2ZW50LnJlc3VsdCA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRldmVudC50eXBlID0gdHlwZTtcblxuXHRcdC8vIElmIG5vYm9keSBwcmV2ZW50ZWQgdGhlIGRlZmF1bHQgYWN0aW9uLCBkbyBpdCBub3dcblx0XHRpZiAoICFvbmx5SGFuZGxlcnMgJiYgIWV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpICkge1xuXG5cdFx0XHRpZiAoICggIXNwZWNpYWwuX2RlZmF1bHQgfHxcblx0XHRcdFx0c3BlY2lhbC5fZGVmYXVsdC5hcHBseSggZXZlbnRQYXRoLnBvcCgpLCBkYXRhICkgPT09IGZhbHNlICkgJiZcblx0XHRcdFx0YWNjZXB0RGF0YSggZWxlbSApICkge1xuXG5cdFx0XHRcdC8vIENhbGwgYSBuYXRpdmUgRE9NIG1ldGhvZCBvbiB0aGUgdGFyZ2V0IHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgZXZlbnQuXG5cdFx0XHRcdC8vIERvbid0IGRvIGRlZmF1bHQgYWN0aW9ucyBvbiB3aW5kb3csIHRoYXQncyB3aGVyZSBnbG9iYWwgdmFyaWFibGVzIGJlICh0cmFjLTYxNzApXG5cdFx0XHRcdGlmICggb250eXBlICYmIGlzRnVuY3Rpb24oIGVsZW1bIHR5cGUgXSApICYmICFpc1dpbmRvdyggZWxlbSApICkge1xuXG5cdFx0XHRcdFx0Ly8gRG9uJ3QgcmUtdHJpZ2dlciBhbiBvbkZPTyBldmVudCB3aGVuIHdlIGNhbGwgaXRzIEZPTygpIG1ldGhvZFxuXHRcdFx0XHRcdHRtcCA9IGVsZW1bIG9udHlwZSBdO1xuXG5cdFx0XHRcdFx0aWYgKCB0bXAgKSB7XG5cdFx0XHRcdFx0XHRlbGVtWyBvbnR5cGUgXSA9IG51bGw7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gUHJldmVudCByZS10cmlnZ2VyaW5nIG9mIHRoZSBzYW1lIGV2ZW50LCBzaW5jZSB3ZSBhbHJlYWR5IGJ1YmJsZWQgaXQgYWJvdmVcblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlcmVkID0gdHlwZTtcblxuXHRcdFx0XHRcdGlmICggZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHtcblx0XHRcdFx0XHRcdGxhc3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIHR5cGUsIHN0b3BQcm9wYWdhdGlvbkNhbGxiYWNrICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0ZWxlbVsgdHlwZSBdKCk7XG5cblx0XHRcdFx0XHRpZiAoIGV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cdFx0XHRcdFx0XHRsYXN0RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCB0eXBlLCBzdG9wUHJvcGFnYXRpb25DYWxsYmFjayApO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgPSB1bmRlZmluZWQ7XG5cblx0XHRcdFx0XHRpZiAoIHRtcCApIHtcblx0XHRcdFx0XHRcdGVsZW1bIG9udHlwZSBdID0gdG1wO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBldmVudC5yZXN1bHQ7XG5cdH0sXG5cblx0Ly8gUGlnZ3liYWNrIG9uIGEgZG9ub3IgZXZlbnQgdG8gc2ltdWxhdGUgYSBkaWZmZXJlbnQgb25lXG5cdC8vIFVzZWQgb25seSBmb3IgYGZvY3VzKGluIHwgb3V0KWAgZXZlbnRzXG5cdHNpbXVsYXRlOiBmdW5jdGlvbiggdHlwZSwgZWxlbSwgZXZlbnQgKSB7XG5cdFx0dmFyIGUgPSBqUXVlcnkuZXh0ZW5kKFxuXHRcdFx0bmV3IGpRdWVyeS5FdmVudCgpLFxuXHRcdFx0ZXZlbnQsXG5cdFx0XHR7XG5cdFx0XHRcdHR5cGU6IHR5cGUsXG5cdFx0XHRcdGlzU2ltdWxhdGVkOiB0cnVlXG5cdFx0XHR9XG5cdFx0KTtcblxuXHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyKCBlLCBudWxsLCBlbGVtICk7XG5cdH1cblxufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cblx0dHJpZ2dlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwgZGF0YSwgdGhpcyApO1xuXHRcdH0gKTtcblx0fSxcblx0dHJpZ2dlckhhbmRsZXI6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkge1xuXHRcdHZhciBlbGVtID0gdGhpc1sgMCBdO1xuXHRcdGlmICggZWxlbSApIHtcblx0XHRcdHJldHVybiBqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwgZGF0YSwgZWxlbSwgdHJ1ZSApO1xuXHRcdH1cblx0fVxufSApO1xuXG5cbi8vIFN1cHBvcnQ6IEZpcmVmb3ggPD00NFxuLy8gRmlyZWZveCBkb2Vzbid0IGhhdmUgZm9jdXMoaW4gfCBvdXQpIGV2ZW50c1xuLy8gUmVsYXRlZCB0aWNrZXQgLSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02ODc3ODdcbi8vXG4vLyBTdXBwb3J0OiBDaHJvbWUgPD00OCAtIDQ5LCBTYWZhcmkgPD05LjAgLSA5LjFcbi8vIGZvY3VzKGluIHwgb3V0KSBldmVudHMgZmlyZSBhZnRlciBmb2N1cyAmIGJsdXIgZXZlbnRzLFxuLy8gd2hpY2ggaXMgc3BlYyB2aW9sYXRpb24gLSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvI2V2ZW50cy1mb2N1c2V2ZW50LWV2ZW50LW9yZGVyXG4vLyBSZWxhdGVkIHRpY2tldCAtIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTQ0OTg1N1xuaWYgKCAhc3VwcG9ydC5mb2N1c2luICkge1xuXHRqUXVlcnkuZWFjaCggeyBmb2N1czogXCJmb2N1c2luXCIsIGJsdXI6IFwiZm9jdXNvdXRcIiB9LCBmdW5jdGlvbiggb3JpZywgZml4ICkge1xuXG5cdFx0Ly8gQXR0YWNoIGEgc2luZ2xlIGNhcHR1cmluZyBoYW5kbGVyIG9uIHRoZSBkb2N1bWVudCB3aGlsZSBzb21lb25lIHdhbnRzIGZvY3VzaW4vZm9jdXNvdXRcblx0XHR2YXIgaGFuZGxlciA9IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdGpRdWVyeS5ldmVudC5zaW11bGF0ZSggZml4LCBldmVudC50YXJnZXQsIGpRdWVyeS5ldmVudC5maXgoIGV2ZW50ICkgKTtcblx0XHR9O1xuXG5cdFx0alF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGZpeCBdID0ge1xuXHRcdFx0c2V0dXA6IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHRcdC8vIEhhbmRsZTogcmVndWxhciBub2RlcyAodmlhIGB0aGlzLm93bmVyRG9jdW1lbnRgKSwgd2luZG93XG5cdFx0XHRcdC8vICh2aWEgYHRoaXMuZG9jdW1lbnRgKSAmIGRvY3VtZW50ICh2aWEgYHRoaXNgKS5cblx0XHRcdFx0dmFyIGRvYyA9IHRoaXMub3duZXJEb2N1bWVudCB8fCB0aGlzLmRvY3VtZW50IHx8IHRoaXMsXG5cdFx0XHRcdFx0YXR0YWNoZXMgPSBkYXRhUHJpdi5hY2Nlc3MoIGRvYywgZml4ICk7XG5cblx0XHRcdFx0aWYgKCAhYXR0YWNoZXMgKSB7XG5cdFx0XHRcdFx0ZG9jLmFkZEV2ZW50TGlzdGVuZXIoIG9yaWcsIGhhbmRsZXIsIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRkYXRhUHJpdi5hY2Nlc3MoIGRvYywgZml4LCAoIGF0dGFjaGVzIHx8IDAgKSArIDEgKTtcblx0XHRcdH0sXG5cdFx0XHR0ZWFyZG93bjogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBkb2MgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcy5kb2N1bWVudCB8fCB0aGlzLFxuXHRcdFx0XHRcdGF0dGFjaGVzID0gZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCApIC0gMTtcblxuXHRcdFx0XHRpZiAoICFhdHRhY2hlcyApIHtcblx0XHRcdFx0XHRkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApO1xuXHRcdFx0XHRcdGRhdGFQcml2LnJlbW92ZSggZG9jLCBmaXggKTtcblxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXgsIGF0dGFjaGVzICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9ICk7XG59XG52YXIgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG5cbnZhciBub25jZSA9IHsgZ3VpZDogRGF0ZS5ub3coKSB9O1xuXG52YXIgcnF1ZXJ5ID0gKCAvXFw/LyApO1xuXG5cblxuLy8gQ3Jvc3MtYnJvd3NlciB4bWwgcGFyc2luZ1xualF1ZXJ5LnBhcnNlWE1MID0gZnVuY3Rpb24oIGRhdGEgKSB7XG5cdHZhciB4bWwsIHBhcnNlckVycm9yRWxlbTtcblx0aWYgKCAhZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdC8vIFN1cHBvcnQ6IElFIDkgLSAxMSBvbmx5XG5cdC8vIElFIHRocm93cyBvbiBwYXJzZUZyb21TdHJpbmcgd2l0aCBpbnZhbGlkIGlucHV0LlxuXHR0cnkge1xuXHRcdHhtbCA9ICggbmV3IHdpbmRvdy5ET01QYXJzZXIoKSApLnBhcnNlRnJvbVN0cmluZyggZGF0YSwgXCJ0ZXh0L3htbFwiICk7XG5cdH0gY2F0Y2ggKCBlICkge31cblxuXHRwYXJzZXJFcnJvckVsZW0gPSB4bWwgJiYgeG1sLmdldEVsZW1lbnRzQnlUYWdOYW1lKCBcInBhcnNlcmVycm9yXCIgKVsgMCBdO1xuXHRpZiAoICF4bWwgfHwgcGFyc2VyRXJyb3JFbGVtICkge1xuXHRcdGpRdWVyeS5lcnJvciggXCJJbnZhbGlkIFhNTDogXCIgKyAoXG5cdFx0XHRwYXJzZXJFcnJvckVsZW0gP1xuXHRcdFx0XHRqUXVlcnkubWFwKCBwYXJzZXJFcnJvckVsZW0uY2hpbGROb2RlcywgZnVuY3Rpb24oIGVsICkge1xuXHRcdFx0XHRcdHJldHVybiBlbC50ZXh0Q29udGVudDtcblx0XHRcdFx0fSApLmpvaW4oIFwiXFxuXCIgKSA6XG5cdFx0XHRcdGRhdGFcblx0XHQpICk7XG5cdH1cblx0cmV0dXJuIHhtbDtcbn07XG5cblxudmFyXG5cdHJicmFja2V0ID0gL1xcW1xcXSQvLFxuXHRyQ1JMRiA9IC9cXHI/XFxuL2csXG5cdHJzdWJtaXR0ZXJUeXBlcyA9IC9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSxcblx0cnN1Ym1pdHRhYmxlID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO1xuXG5mdW5jdGlvbiBidWlsZFBhcmFtcyggcHJlZml4LCBvYmosIHRyYWRpdGlvbmFsLCBhZGQgKSB7XG5cdHZhciBuYW1lO1xuXG5cdGlmICggQXJyYXkuaXNBcnJheSggb2JqICkgKSB7XG5cblx0XHQvLyBTZXJpYWxpemUgYXJyYXkgaXRlbS5cblx0XHRqUXVlcnkuZWFjaCggb2JqLCBmdW5jdGlvbiggaSwgdiApIHtcblx0XHRcdGlmICggdHJhZGl0aW9uYWwgfHwgcmJyYWNrZXQudGVzdCggcHJlZml4ICkgKSB7XG5cblx0XHRcdFx0Ly8gVHJlYXQgZWFjaCBhcnJheSBpdGVtIGFzIGEgc2NhbGFyLlxuXHRcdFx0XHRhZGQoIHByZWZpeCwgdiApO1xuXG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdC8vIEl0ZW0gaXMgbm9uLXNjYWxhciAoYXJyYXkgb3Igb2JqZWN0KSwgZW5jb2RlIGl0cyBudW1lcmljIGluZGV4LlxuXHRcdFx0XHRidWlsZFBhcmFtcyhcblx0XHRcdFx0XHRwcmVmaXggKyBcIltcIiArICggdHlwZW9mIHYgPT09IFwib2JqZWN0XCIgJiYgdiAhPSBudWxsID8gaSA6IFwiXCIgKSArIFwiXVwiLFxuXHRcdFx0XHRcdHYsXG5cdFx0XHRcdFx0dHJhZGl0aW9uYWwsXG5cdFx0XHRcdFx0YWRkXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXG5cdH0gZWxzZSBpZiAoICF0cmFkaXRpb25hbCAmJiB0b1R5cGUoIG9iaiApID09PSBcIm9iamVjdFwiICkge1xuXG5cdFx0Ly8gU2VyaWFsaXplIG9iamVjdCBpdGVtLlxuXHRcdGZvciAoIG5hbWUgaW4gb2JqICkge1xuXHRcdFx0YnVpbGRQYXJhbXMoIHByZWZpeCArIFwiW1wiICsgbmFtZSArIFwiXVwiLCBvYmpbIG5hbWUgXSwgdHJhZGl0aW9uYWwsIGFkZCApO1xuXHRcdH1cblxuXHR9IGVsc2Uge1xuXG5cdFx0Ly8gU2VyaWFsaXplIHNjYWxhciBpdGVtLlxuXHRcdGFkZCggcHJlZml4LCBvYmogKTtcblx0fVxufVxuXG4vLyBTZXJpYWxpemUgYW4gYXJyYXkgb2YgZm9ybSBlbGVtZW50cyBvciBhIHNldCBvZlxuLy8ga2V5L3ZhbHVlcyBpbnRvIGEgcXVlcnkgc3RyaW5nXG5qUXVlcnkucGFyYW0gPSBmdW5jdGlvbiggYSwgdHJhZGl0aW9uYWwgKSB7XG5cdHZhciBwcmVmaXgsXG5cdFx0cyA9IFtdLFxuXHRcdGFkZCA9IGZ1bmN0aW9uKCBrZXksIHZhbHVlT3JGdW5jdGlvbiApIHtcblxuXHRcdFx0Ly8gSWYgdmFsdWUgaXMgYSBmdW5jdGlvbiwgaW52b2tlIGl0IGFuZCB1c2UgaXRzIHJldHVybiB2YWx1ZVxuXHRcdFx0dmFyIHZhbHVlID0gaXNGdW5jdGlvbiggdmFsdWVPckZ1bmN0aW9uICkgP1xuXHRcdFx0XHR2YWx1ZU9yRnVuY3Rpb24oKSA6XG5cdFx0XHRcdHZhbHVlT3JGdW5jdGlvbjtcblxuXHRcdFx0c1sgcy5sZW5ndGggXSA9IGVuY29kZVVSSUNvbXBvbmVudCgga2V5ICkgKyBcIj1cIiArXG5cdFx0XHRcdGVuY29kZVVSSUNvbXBvbmVudCggdmFsdWUgPT0gbnVsbCA/IFwiXCIgOiB2YWx1ZSApO1xuXHRcdH07XG5cblx0aWYgKCBhID09IG51bGwgKSB7XG5cdFx0cmV0dXJuIFwiXCI7XG5cdH1cblxuXHQvLyBJZiBhbiBhcnJheSB3YXMgcGFzc2VkIGluLCBhc3N1bWUgdGhhdCBpdCBpcyBhbiBhcnJheSBvZiBmb3JtIGVsZW1lbnRzLlxuXHRpZiAoIEFycmF5LmlzQXJyYXkoIGEgKSB8fCAoIGEuanF1ZXJ5ICYmICFqUXVlcnkuaXNQbGFpbk9iamVjdCggYSApICkgKSB7XG5cblx0XHQvLyBTZXJpYWxpemUgdGhlIGZvcm0gZWxlbWVudHNcblx0XHRqUXVlcnkuZWFjaCggYSwgZnVuY3Rpb24oKSB7XG5cdFx0XHRhZGQoIHRoaXMubmFtZSwgdGhpcy52YWx1ZSApO1xuXHRcdH0gKTtcblxuXHR9IGVsc2Uge1xuXG5cdFx0Ly8gSWYgdHJhZGl0aW9uYWwsIGVuY29kZSB0aGUgXCJvbGRcIiB3YXkgKHRoZSB3YXkgMS4zLjIgb3Igb2xkZXJcblx0XHQvLyBkaWQgaXQpLCBvdGhlcndpc2UgZW5jb2RlIHBhcmFtcyByZWN1cnNpdmVseS5cblx0XHRmb3IgKCBwcmVmaXggaW4gYSApIHtcblx0XHRcdGJ1aWxkUGFyYW1zKCBwcmVmaXgsIGFbIHByZWZpeCBdLCB0cmFkaXRpb25hbCwgYWRkICk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmV0dXJuIHRoZSByZXN1bHRpbmcgc2VyaWFsaXphdGlvblxuXHRyZXR1cm4gcy5qb2luKCBcIiZcIiApO1xufTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRzZXJpYWxpemU6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBqUXVlcnkucGFyYW0oIHRoaXMuc2VyaWFsaXplQXJyYXkoKSApO1xuXHR9LFxuXHRzZXJpYWxpemVBcnJheTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMubWFwKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gQ2FuIGFkZCBwcm9wSG9vayBmb3IgXCJlbGVtZW50c1wiIHRvIGZpbHRlciBvciBhZGQgZm9ybSBlbGVtZW50c1xuXHRcdFx0dmFyIGVsZW1lbnRzID0galF1ZXJ5LnByb3AoIHRoaXMsIFwiZWxlbWVudHNcIiApO1xuXHRcdFx0cmV0dXJuIGVsZW1lbnRzID8galF1ZXJ5Lm1ha2VBcnJheSggZWxlbWVudHMgKSA6IHRoaXM7XG5cdFx0fSApLmZpbHRlciggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgdHlwZSA9IHRoaXMudHlwZTtcblxuXHRcdFx0Ly8gVXNlIC5pcyggXCI6ZGlzYWJsZWRcIiApIHNvIHRoYXQgZmllbGRzZXRbZGlzYWJsZWRdIHdvcmtzXG5cdFx0XHRyZXR1cm4gdGhpcy5uYW1lICYmICFqUXVlcnkoIHRoaXMgKS5pcyggXCI6ZGlzYWJsZWRcIiApICYmXG5cdFx0XHRcdHJzdWJtaXR0YWJsZS50ZXN0KCB0aGlzLm5vZGVOYW1lICkgJiYgIXJzdWJtaXR0ZXJUeXBlcy50ZXN0KCB0eXBlICkgJiZcblx0XHRcdFx0KCB0aGlzLmNoZWNrZWQgfHwgIXJjaGVja2FibGVUeXBlLnRlc3QoIHR5cGUgKSApO1xuXHRcdH0gKS5tYXAoIGZ1bmN0aW9uKCBfaSwgZWxlbSApIHtcblx0XHRcdHZhciB2YWwgPSBqUXVlcnkoIHRoaXMgKS52YWwoKTtcblxuXHRcdFx0aWYgKCB2YWwgPT0gbnVsbCApIHtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggQXJyYXkuaXNBcnJheSggdmFsICkgKSB7XG5cdFx0XHRcdHJldHVybiBqUXVlcnkubWFwKCB2YWwsIGZ1bmN0aW9uKCB2YWwgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHsgbmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCBcIlxcclxcblwiICkgfTtcblx0XHRcdFx0fSApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4geyBuYW1lOiBlbGVtLm5hbWUsIHZhbHVlOiB2YWwucmVwbGFjZSggckNSTEYsIFwiXFxyXFxuXCIgKSB9O1xuXHRcdH0gKS5nZXQoKTtcblx0fVxufSApO1xuXG5cbnZhclxuXHRyMjAgPSAvJTIwL2csXG5cdHJoYXNoID0gLyMuKiQvLFxuXHRyYW50aUNhY2hlID0gLyhbPyZdKV89W14mXSovLFxuXHRyaGVhZGVycyA9IC9eKC4qPyk6WyBcXHRdKihbXlxcclxcbl0qKSQvbWcsXG5cblx0Ly8gdHJhYy03NjUzLCB0cmFjLTgxMjUsIHRyYWMtODE1MjogbG9jYWwgcHJvdG9jb2wgZGV0ZWN0aW9uXG5cdHJsb2NhbFByb3RvY29sID0gL14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8sXG5cdHJub0NvbnRlbnQgPSAvXig/OkdFVHxIRUFEKSQvLFxuXHRycHJvdG9jb2wgPSAvXlxcL1xcLy8sXG5cblx0LyogUHJlZmlsdGVyc1xuXHQgKiAxKSBUaGV5IGFyZSB1c2VmdWwgdG8gaW50cm9kdWNlIGN1c3RvbSBkYXRhVHlwZXMgKHNlZSBhamF4L2pzb25wLmpzIGZvciBhbiBleGFtcGxlKVxuXHQgKiAyKSBUaGVzZSBhcmUgY2FsbGVkOlxuXHQgKiAgICAtIEJFRk9SRSBhc2tpbmcgZm9yIGEgdHJhbnNwb3J0XG5cdCAqICAgIC0gQUZURVIgcGFyYW0gc2VyaWFsaXphdGlvbiAocy5kYXRhIGlzIGEgc3RyaW5nIGlmIHMucHJvY2Vzc0RhdGEgaXMgdHJ1ZSlcblx0ICogMykga2V5IGlzIHRoZSBkYXRhVHlwZVxuXHQgKiA0KSB0aGUgY2F0Y2hhbGwgc3ltYm9sIFwiKlwiIGNhbiBiZSB1c2VkXG5cdCAqIDUpIGV4ZWN1dGlvbiB3aWxsIHN0YXJ0IHdpdGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGNvbnRpbnVlIGRvd24gdG8gXCIqXCIgaWYgbmVlZGVkXG5cdCAqL1xuXHRwcmVmaWx0ZXJzID0ge30sXG5cblx0LyogVHJhbnNwb3J0cyBiaW5kaW5nc1xuXHQgKiAxKSBrZXkgaXMgdGhlIGRhdGFUeXBlXG5cdCAqIDIpIHRoZSBjYXRjaGFsbCBzeW1ib2wgXCIqXCIgY2FuIGJlIHVzZWRcblx0ICogMykgc2VsZWN0aW9uIHdpbGwgc3RhcnQgd2l0aCB0cmFuc3BvcnQgZGF0YVR5cGUgYW5kIFRIRU4gZ28gdG8gXCIqXCIgaWYgbmVlZGVkXG5cdCAqL1xuXHR0cmFuc3BvcnRzID0ge30sXG5cblx0Ly8gQXZvaWQgY29tbWVudC1wcm9sb2cgY2hhciBzZXF1ZW5jZSAodHJhYy0xMDA5OCk7IG11c3QgYXBwZWFzZSBsaW50IGFuZCBldmFkZSBjb21wcmVzc2lvblxuXHRhbGxUeXBlcyA9IFwiKi9cIi5jb25jYXQoIFwiKlwiICksXG5cblx0Ly8gQW5jaG9yIHRhZyBmb3IgcGFyc2luZyB0aGUgZG9jdW1lbnQgb3JpZ2luXG5cdG9yaWdpbkFuY2hvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiYVwiICk7XG5cbm9yaWdpbkFuY2hvci5ocmVmID0gbG9jYXRpb24uaHJlZjtcblxuLy8gQmFzZSBcImNvbnN0cnVjdG9yXCIgZm9yIGpRdWVyeS5hamF4UHJlZmlsdGVyIGFuZCBqUXVlcnkuYWpheFRyYW5zcG9ydFxuZnVuY3Rpb24gYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBzdHJ1Y3R1cmUgKSB7XG5cblx0Ly8gZGF0YVR5cGVFeHByZXNzaW9uIGlzIG9wdGlvbmFsIGFuZCBkZWZhdWx0cyB0byBcIipcIlxuXHRyZXR1cm4gZnVuY3Rpb24oIGRhdGFUeXBlRXhwcmVzc2lvbiwgZnVuYyApIHtcblxuXHRcdGlmICggdHlwZW9mIGRhdGFUeXBlRXhwcmVzc2lvbiAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGZ1bmMgPSBkYXRhVHlwZUV4cHJlc3Npb247XG5cdFx0XHRkYXRhVHlwZUV4cHJlc3Npb24gPSBcIipcIjtcblx0XHR9XG5cblx0XHR2YXIgZGF0YVR5cGUsXG5cdFx0XHRpID0gMCxcblx0XHRcdGRhdGFUeXBlcyA9IGRhdGFUeXBlRXhwcmVzc2lvbi50b0xvd2VyQ2FzZSgpLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107XG5cblx0XHRpZiAoIGlzRnVuY3Rpb24oIGZ1bmMgKSApIHtcblxuXHRcdFx0Ly8gRm9yIGVhY2ggZGF0YVR5cGUgaW4gdGhlIGRhdGFUeXBlRXhwcmVzc2lvblxuXHRcdFx0d2hpbGUgKCAoIGRhdGFUeXBlID0gZGF0YVR5cGVzWyBpKysgXSApICkge1xuXG5cdFx0XHRcdC8vIFByZXBlbmQgaWYgcmVxdWVzdGVkXG5cdFx0XHRcdGlmICggZGF0YVR5cGVbIDAgXSA9PT0gXCIrXCIgKSB7XG5cdFx0XHRcdFx0ZGF0YVR5cGUgPSBkYXRhVHlwZS5zbGljZSggMSApIHx8IFwiKlwiO1xuXHRcdFx0XHRcdCggc3RydWN0dXJlWyBkYXRhVHlwZSBdID0gc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdICkudW5zaGlmdCggZnVuYyApO1xuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSBhcHBlbmRcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQoIHN0cnVjdHVyZVsgZGF0YVR5cGUgXSA9IHN0cnVjdHVyZVsgZGF0YVR5cGUgXSB8fCBbXSApLnB1c2goIGZ1bmMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fTtcbn1cblxuLy8gQmFzZSBpbnNwZWN0aW9uIGZ1bmN0aW9uIGZvciBwcmVmaWx0ZXJzIGFuZCB0cmFuc3BvcnRzXG5mdW5jdGlvbiBpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggc3RydWN0dXJlLCBvcHRpb25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSICkge1xuXG5cdHZhciBpbnNwZWN0ZWQgPSB7fSxcblx0XHRzZWVraW5nVHJhbnNwb3J0ID0gKCBzdHJ1Y3R1cmUgPT09IHRyYW5zcG9ydHMgKTtcblxuXHRmdW5jdGlvbiBpbnNwZWN0KCBkYXRhVHlwZSApIHtcblx0XHR2YXIgc2VsZWN0ZWQ7XG5cdFx0aW5zcGVjdGVkWyBkYXRhVHlwZSBdID0gdHJ1ZTtcblx0XHRqUXVlcnkuZWFjaCggc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdLCBmdW5jdGlvbiggXywgcHJlZmlsdGVyT3JGYWN0b3J5ICkge1xuXHRcdFx0dmFyIGRhdGFUeXBlT3JUcmFuc3BvcnQgPSBwcmVmaWx0ZXJPckZhY3RvcnkoIG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFYSFIgKTtcblx0XHRcdGlmICggdHlwZW9mIGRhdGFUeXBlT3JUcmFuc3BvcnQgPT09IFwic3RyaW5nXCIgJiZcblx0XHRcdFx0IXNlZWtpbmdUcmFuc3BvcnQgJiYgIWluc3BlY3RlZFsgZGF0YVR5cGVPclRyYW5zcG9ydCBdICkge1xuXG5cdFx0XHRcdG9wdGlvbnMuZGF0YVR5cGVzLnVuc2hpZnQoIGRhdGFUeXBlT3JUcmFuc3BvcnQgKTtcblx0XHRcdFx0aW5zcGVjdCggZGF0YVR5cGVPclRyYW5zcG9ydCApO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9IGVsc2UgaWYgKCBzZWVraW5nVHJhbnNwb3J0ICkge1xuXHRcdFx0XHRyZXR1cm4gISggc2VsZWN0ZWQgPSBkYXRhVHlwZU9yVHJhbnNwb3J0ICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHRcdHJldHVybiBzZWxlY3RlZDtcblx0fVxuXG5cdHJldHVybiBpbnNwZWN0KCBvcHRpb25zLmRhdGFUeXBlc1sgMCBdICkgfHwgIWluc3BlY3RlZFsgXCIqXCIgXSAmJiBpbnNwZWN0KCBcIipcIiApO1xufVxuXG4vLyBBIHNwZWNpYWwgZXh0ZW5kIGZvciBhamF4IG9wdGlvbnNcbi8vIHRoYXQgdGFrZXMgXCJmbGF0XCIgb3B0aW9ucyAobm90IHRvIGJlIGRlZXAgZXh0ZW5kZWQpXG4vLyBGaXhlcyB0cmFjLTk4ODdcbmZ1bmN0aW9uIGFqYXhFeHRlbmQoIHRhcmdldCwgc3JjICkge1xuXHR2YXIga2V5LCBkZWVwLFxuXHRcdGZsYXRPcHRpb25zID0galF1ZXJ5LmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9ucyB8fCB7fTtcblxuXHRmb3IgKCBrZXkgaW4gc3JjICkge1xuXHRcdGlmICggc3JjWyBrZXkgXSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0KCBmbGF0T3B0aW9uc1sga2V5IF0gPyB0YXJnZXQgOiAoIGRlZXAgfHwgKCBkZWVwID0ge30gKSApIClbIGtleSBdID0gc3JjWyBrZXkgXTtcblx0XHR9XG5cdH1cblx0aWYgKCBkZWVwICkge1xuXHRcdGpRdWVyeS5leHRlbmQoIHRydWUsIHRhcmdldCwgZGVlcCApO1xuXHR9XG5cblx0cmV0dXJuIHRhcmdldDtcbn1cblxuLyogSGFuZGxlcyByZXNwb25zZXMgdG8gYW4gYWpheCByZXF1ZXN0OlxuICogLSBmaW5kcyB0aGUgcmlnaHQgZGF0YVR5cGUgKG1lZGlhdGVzIGJldHdlZW4gY29udGVudC10eXBlIGFuZCBleHBlY3RlZCBkYXRhVHlwZSlcbiAqIC0gcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyByZXNwb25zZVxuICovXG5mdW5jdGlvbiBhamF4SGFuZGxlUmVzcG9uc2VzKCBzLCBqcVhIUiwgcmVzcG9uc2VzICkge1xuXG5cdHZhciBjdCwgdHlwZSwgZmluYWxEYXRhVHlwZSwgZmlyc3REYXRhVHlwZSxcblx0XHRjb250ZW50cyA9IHMuY29udGVudHMsXG5cdFx0ZGF0YVR5cGVzID0gcy5kYXRhVHlwZXM7XG5cblx0Ly8gUmVtb3ZlIGF1dG8gZGF0YVR5cGUgYW5kIGdldCBjb250ZW50LXR5cGUgaW4gdGhlIHByb2Nlc3Ncblx0d2hpbGUgKCBkYXRhVHlwZXNbIDAgXSA9PT0gXCIqXCIgKSB7XG5cdFx0ZGF0YVR5cGVzLnNoaWZ0KCk7XG5cdFx0aWYgKCBjdCA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0Y3QgPSBzLm1pbWVUeXBlIHx8IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCBcIkNvbnRlbnQtVHlwZVwiICk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ2hlY2sgaWYgd2UncmUgZGVhbGluZyB3aXRoIGEga25vd24gY29udGVudC10eXBlXG5cdGlmICggY3QgKSB7XG5cdFx0Zm9yICggdHlwZSBpbiBjb250ZW50cyApIHtcblx0XHRcdGlmICggY29udGVudHNbIHR5cGUgXSAmJiBjb250ZW50c1sgdHlwZSBdLnRlc3QoIGN0ICkgKSB7XG5cdFx0XHRcdGRhdGFUeXBlcy51bnNoaWZ0KCB0eXBlICk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIENoZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIGEgcmVzcG9uc2UgZm9yIHRoZSBleHBlY3RlZCBkYXRhVHlwZVxuXHRpZiAoIGRhdGFUeXBlc1sgMCBdIGluIHJlc3BvbnNlcyApIHtcblx0XHRmaW5hbERhdGFUeXBlID0gZGF0YVR5cGVzWyAwIF07XG5cdH0gZWxzZSB7XG5cblx0XHQvLyBUcnkgY29udmVydGlibGUgZGF0YVR5cGVzXG5cdFx0Zm9yICggdHlwZSBpbiByZXNwb25zZXMgKSB7XG5cdFx0XHRpZiAoICFkYXRhVHlwZXNbIDAgXSB8fCBzLmNvbnZlcnRlcnNbIHR5cGUgKyBcIiBcIiArIGRhdGFUeXBlc1sgMCBdIF0gKSB7XG5cdFx0XHRcdGZpbmFsRGF0YVR5cGUgPSB0eXBlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGlmICggIWZpcnN0RGF0YVR5cGUgKSB7XG5cdFx0XHRcdGZpcnN0RGF0YVR5cGUgPSB0eXBlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIE9yIGp1c3QgdXNlIGZpcnN0IG9uZVxuXHRcdGZpbmFsRGF0YVR5cGUgPSBmaW5hbERhdGFUeXBlIHx8IGZpcnN0RGF0YVR5cGU7XG5cdH1cblxuXHQvLyBJZiB3ZSBmb3VuZCBhIGRhdGFUeXBlXG5cdC8vIFdlIGFkZCB0aGUgZGF0YVR5cGUgdG8gdGhlIGxpc3QgaWYgbmVlZGVkXG5cdC8vIGFuZCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgcmVzcG9uc2Vcblx0aWYgKCBmaW5hbERhdGFUeXBlICkge1xuXHRcdGlmICggZmluYWxEYXRhVHlwZSAhPT0gZGF0YVR5cGVzWyAwIF0gKSB7XG5cdFx0XHRkYXRhVHlwZXMudW5zaGlmdCggZmluYWxEYXRhVHlwZSApO1xuXHRcdH1cblx0XHRyZXR1cm4gcmVzcG9uc2VzWyBmaW5hbERhdGFUeXBlIF07XG5cdH1cbn1cblxuLyogQ2hhaW4gY29udmVyc2lvbnMgZ2l2ZW4gdGhlIHJlcXVlc3QgYW5kIHRoZSBvcmlnaW5hbCByZXNwb25zZVxuICogQWxzbyBzZXRzIHRoZSByZXNwb25zZVhYWCBmaWVsZHMgb24gdGhlIGpxWEhSIGluc3RhbmNlXG4gKi9cbmZ1bmN0aW9uIGFqYXhDb252ZXJ0KCBzLCByZXNwb25zZSwganFYSFIsIGlzU3VjY2VzcyApIHtcblx0dmFyIGNvbnYyLCBjdXJyZW50LCBjb252LCB0bXAsIHByZXYsXG5cdFx0Y29udmVydGVycyA9IHt9LFxuXG5cdFx0Ly8gV29yayB3aXRoIGEgY29weSBvZiBkYXRhVHlwZXMgaW4gY2FzZSB3ZSBuZWVkIHRvIG1vZGlmeSBpdCBmb3IgY29udmVyc2lvblxuXHRcdGRhdGFUeXBlcyA9IHMuZGF0YVR5cGVzLnNsaWNlKCk7XG5cblx0Ly8gQ3JlYXRlIGNvbnZlcnRlcnMgbWFwIHdpdGggbG93ZXJjYXNlZCBrZXlzXG5cdGlmICggZGF0YVR5cGVzWyAxIF0gKSB7XG5cdFx0Zm9yICggY29udiBpbiBzLmNvbnZlcnRlcnMgKSB7XG5cdFx0XHRjb252ZXJ0ZXJzWyBjb252LnRvTG93ZXJDYXNlKCkgXSA9IHMuY29udmVydGVyc1sgY29udiBdO1xuXHRcdH1cblx0fVxuXG5cdGN1cnJlbnQgPSBkYXRhVHlwZXMuc2hpZnQoKTtcblxuXHQvLyBDb252ZXJ0IHRvIGVhY2ggc2VxdWVudGlhbCBkYXRhVHlwZVxuXHR3aGlsZSAoIGN1cnJlbnQgKSB7XG5cblx0XHRpZiAoIHMucmVzcG9uc2VGaWVsZHNbIGN1cnJlbnQgXSApIHtcblx0XHRcdGpxWEhSWyBzLnJlc3BvbnNlRmllbGRzWyBjdXJyZW50IF0gXSA9IHJlc3BvbnNlO1xuXHRcdH1cblxuXHRcdC8vIEFwcGx5IHRoZSBkYXRhRmlsdGVyIGlmIHByb3ZpZGVkXG5cdFx0aWYgKCAhcHJldiAmJiBpc1N1Y2Nlc3MgJiYgcy5kYXRhRmlsdGVyICkge1xuXHRcdFx0cmVzcG9uc2UgPSBzLmRhdGFGaWx0ZXIoIHJlc3BvbnNlLCBzLmRhdGFUeXBlICk7XG5cdFx0fVxuXG5cdFx0cHJldiA9IGN1cnJlbnQ7XG5cdFx0Y3VycmVudCA9IGRhdGFUeXBlcy5zaGlmdCgpO1xuXG5cdFx0aWYgKCBjdXJyZW50ICkge1xuXG5cdFx0XHQvLyBUaGVyZSdzIG9ubHkgd29yayB0byBkbyBpZiBjdXJyZW50IGRhdGFUeXBlIGlzIG5vbi1hdXRvXG5cdFx0XHRpZiAoIGN1cnJlbnQgPT09IFwiKlwiICkge1xuXG5cdFx0XHRcdGN1cnJlbnQgPSBwcmV2O1xuXG5cdFx0XHQvLyBDb252ZXJ0IHJlc3BvbnNlIGlmIHByZXYgZGF0YVR5cGUgaXMgbm9uLWF1dG8gYW5kIGRpZmZlcnMgZnJvbSBjdXJyZW50XG5cdFx0XHR9IGVsc2UgaWYgKCBwcmV2ICE9PSBcIipcIiAmJiBwcmV2ICE9PSBjdXJyZW50ICkge1xuXG5cdFx0XHRcdC8vIFNlZWsgYSBkaXJlY3QgY29udmVydGVyXG5cdFx0XHRcdGNvbnYgPSBjb252ZXJ0ZXJzWyBwcmV2ICsgXCIgXCIgKyBjdXJyZW50IF0gfHwgY29udmVydGVyc1sgXCIqIFwiICsgY3VycmVudCBdO1xuXG5cdFx0XHRcdC8vIElmIG5vbmUgZm91bmQsIHNlZWsgYSBwYWlyXG5cdFx0XHRcdGlmICggIWNvbnYgKSB7XG5cdFx0XHRcdFx0Zm9yICggY29udjIgaW4gY29udmVydGVycyApIHtcblxuXHRcdFx0XHRcdFx0Ly8gSWYgY29udjIgb3V0cHV0cyBjdXJyZW50XG5cdFx0XHRcdFx0XHR0bXAgPSBjb252Mi5zcGxpdCggXCIgXCIgKTtcblx0XHRcdFx0XHRcdGlmICggdG1wWyAxIF0gPT09IGN1cnJlbnQgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gSWYgcHJldiBjYW4gYmUgY29udmVydGVkIHRvIGFjY2VwdGVkIGlucHV0XG5cdFx0XHRcdFx0XHRcdGNvbnYgPSBjb252ZXJ0ZXJzWyBwcmV2ICsgXCIgXCIgKyB0bXBbIDAgXSBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0Y29udmVydGVyc1sgXCIqIFwiICsgdG1wWyAwIF0gXTtcblx0XHRcdFx0XHRcdFx0aWYgKCBjb252ICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gQ29uZGVuc2UgZXF1aXZhbGVuY2UgY29udmVydGVyc1xuXHRcdFx0XHRcdFx0XHRcdGlmICggY29udiA9PT0gdHJ1ZSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnYgPSBjb252ZXJ0ZXJzWyBjb252MiBdO1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gT3RoZXJ3aXNlLCBpbnNlcnQgdGhlIGludGVybWVkaWF0ZSBkYXRhVHlwZVxuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoIGNvbnZlcnRlcnNbIGNvbnYyIF0gIT09IHRydWUgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjdXJyZW50ID0gdG1wWyAwIF07XG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhVHlwZXMudW5zaGlmdCggdG1wWyAxIF0gKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBBcHBseSBjb252ZXJ0ZXIgKGlmIG5vdCBhbiBlcXVpdmFsZW5jZSlcblx0XHRcdFx0aWYgKCBjb252ICE9PSB0cnVlICkge1xuXG5cdFx0XHRcdFx0Ly8gVW5sZXNzIGVycm9ycyBhcmUgYWxsb3dlZCB0byBidWJibGUsIGNhdGNoIGFuZCByZXR1cm4gdGhlbVxuXHRcdFx0XHRcdGlmICggY29udiAmJiBzLnRocm93cyApIHtcblx0XHRcdFx0XHRcdHJlc3BvbnNlID0gY29udiggcmVzcG9uc2UgKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0cmVzcG9uc2UgPSBjb252KCByZXNwb25zZSApO1xuXHRcdFx0XHRcdFx0fSBjYXRjaCAoIGUgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdFx0c3RhdGU6IFwicGFyc2VyZXJyb3JcIixcblx0XHRcdFx0XHRcdFx0XHRlcnJvcjogY29udiA/IGUgOiBcIk5vIGNvbnZlcnNpb24gZnJvbSBcIiArIHByZXYgKyBcIiB0byBcIiArIGN1cnJlbnRcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4geyBzdGF0ZTogXCJzdWNjZXNzXCIsIGRhdGE6IHJlc3BvbnNlIH07XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblxuXHQvLyBDb3VudGVyIGZvciBob2xkaW5nIHRoZSBudW1iZXIgb2YgYWN0aXZlIHF1ZXJpZXNcblx0YWN0aXZlOiAwLFxuXG5cdC8vIExhc3QtTW9kaWZpZWQgaGVhZGVyIGNhY2hlIGZvciBuZXh0IHJlcXVlc3Rcblx0bGFzdE1vZGlmaWVkOiB7fSxcblx0ZXRhZzoge30sXG5cblx0YWpheFNldHRpbmdzOiB7XG5cdFx0dXJsOiBsb2NhdGlvbi5ocmVmLFxuXHRcdHR5cGU6IFwiR0VUXCIsXG5cdFx0aXNMb2NhbDogcmxvY2FsUHJvdG9jb2wudGVzdCggbG9jYXRpb24ucHJvdG9jb2wgKSxcblx0XHRnbG9iYWw6IHRydWUsXG5cdFx0cHJvY2Vzc0RhdGE6IHRydWUsXG5cdFx0YXN5bmM6IHRydWUsXG5cdFx0Y29udGVudFR5cGU6IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04XCIsXG5cblx0XHQvKlxuXHRcdHRpbWVvdXQ6IDAsXG5cdFx0ZGF0YTogbnVsbCxcblx0XHRkYXRhVHlwZTogbnVsbCxcblx0XHR1c2VybmFtZTogbnVsbCxcblx0XHRwYXNzd29yZDogbnVsbCxcblx0XHRjYWNoZTogbnVsbCxcblx0XHR0aHJvd3M6IGZhbHNlLFxuXHRcdHRyYWRpdGlvbmFsOiBmYWxzZSxcblx0XHRoZWFkZXJzOiB7fSxcblx0XHQqL1xuXG5cdFx0YWNjZXB0czoge1xuXHRcdFx0XCIqXCI6IGFsbFR5cGVzLFxuXHRcdFx0dGV4dDogXCJ0ZXh0L3BsYWluXCIsXG5cdFx0XHRodG1sOiBcInRleHQvaHRtbFwiLFxuXHRcdFx0eG1sOiBcImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWxcIixcblx0XHRcdGpzb246IFwiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0XCJcblx0XHR9LFxuXG5cdFx0Y29udGVudHM6IHtcblx0XHRcdHhtbDogL1xcYnhtbFxcYi8sXG5cdFx0XHRodG1sOiAvXFxiaHRtbC8sXG5cdFx0XHRqc29uOiAvXFxianNvblxcYi9cblx0XHR9LFxuXG5cdFx0cmVzcG9uc2VGaWVsZHM6IHtcblx0XHRcdHhtbDogXCJyZXNwb25zZVhNTFwiLFxuXHRcdFx0dGV4dDogXCJyZXNwb25zZVRleHRcIixcblx0XHRcdGpzb246IFwicmVzcG9uc2VKU09OXCJcblx0XHR9LFxuXG5cdFx0Ly8gRGF0YSBjb252ZXJ0ZXJzXG5cdFx0Ly8gS2V5cyBzZXBhcmF0ZSBzb3VyY2UgKG9yIGNhdGNoYWxsIFwiKlwiKSBhbmQgZGVzdGluYXRpb24gdHlwZXMgd2l0aCBhIHNpbmdsZSBzcGFjZVxuXHRcdGNvbnZlcnRlcnM6IHtcblxuXHRcdFx0Ly8gQ29udmVydCBhbnl0aGluZyB0byB0ZXh0XG5cdFx0XHRcIiogdGV4dFwiOiBTdHJpbmcsXG5cblx0XHRcdC8vIFRleHQgdG8gaHRtbCAodHJ1ZSA9IG5vIHRyYW5zZm9ybWF0aW9uKVxuXHRcdFx0XCJ0ZXh0IGh0bWxcIjogdHJ1ZSxcblxuXHRcdFx0Ly8gRXZhbHVhdGUgdGV4dCBhcyBhIGpzb24gZXhwcmVzc2lvblxuXHRcdFx0XCJ0ZXh0IGpzb25cIjogSlNPTi5wYXJzZSxcblxuXHRcdFx0Ly8gUGFyc2UgdGV4dCBhcyB4bWxcblx0XHRcdFwidGV4dCB4bWxcIjogalF1ZXJ5LnBhcnNlWE1MXG5cdFx0fSxcblxuXHRcdC8vIEZvciBvcHRpb25zIHRoYXQgc2hvdWxkbid0IGJlIGRlZXAgZXh0ZW5kZWQ6XG5cdFx0Ly8geW91IGNhbiBhZGQgeW91ciBvd24gY3VzdG9tIG9wdGlvbnMgaGVyZSBpZlxuXHRcdC8vIGFuZCB3aGVuIHlvdSBjcmVhdGUgb25lIHRoYXQgc2hvdWxkbid0IGJlXG5cdFx0Ly8gZGVlcCBleHRlbmRlZCAoc2VlIGFqYXhFeHRlbmQpXG5cdFx0ZmxhdE9wdGlvbnM6IHtcblx0XHRcdHVybDogdHJ1ZSxcblx0XHRcdGNvbnRleHQ6IHRydWVcblx0XHR9XG5cdH0sXG5cblx0Ly8gQ3JlYXRlcyBhIGZ1bGwgZmxlZGdlZCBzZXR0aW5ncyBvYmplY3QgaW50byB0YXJnZXRcblx0Ly8gd2l0aCBib3RoIGFqYXhTZXR0aW5ncyBhbmQgc2V0dGluZ3MgZmllbGRzLlxuXHQvLyBJZiB0YXJnZXQgaXMgb21pdHRlZCwgd3JpdGVzIGludG8gYWpheFNldHRpbmdzLlxuXHRhamF4U2V0dXA6IGZ1bmN0aW9uKCB0YXJnZXQsIHNldHRpbmdzICkge1xuXHRcdHJldHVybiBzZXR0aW5ncyA/XG5cblx0XHRcdC8vIEJ1aWxkaW5nIGEgc2V0dGluZ3Mgb2JqZWN0XG5cdFx0XHRhamF4RXh0ZW5kKCBhamF4RXh0ZW5kKCB0YXJnZXQsIGpRdWVyeS5hamF4U2V0dGluZ3MgKSwgc2V0dGluZ3MgKSA6XG5cblx0XHRcdC8vIEV4dGVuZGluZyBhamF4U2V0dGluZ3Ncblx0XHRcdGFqYXhFeHRlbmQoIGpRdWVyeS5hamF4U2V0dGluZ3MsIHRhcmdldCApO1xuXHR9LFxuXG5cdGFqYXhQcmVmaWx0ZXI6IGFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyggcHJlZmlsdGVycyApLFxuXHRhamF4VHJhbnNwb3J0OiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHRyYW5zcG9ydHMgKSxcblxuXHQvLyBNYWluIG1ldGhvZFxuXHRhamF4OiBmdW5jdGlvbiggdXJsLCBvcHRpb25zICkge1xuXG5cdFx0Ly8gSWYgdXJsIGlzIGFuIG9iamVjdCwgc2ltdWxhdGUgcHJlLTEuNSBzaWduYXR1cmVcblx0XHRpZiAoIHR5cGVvZiB1cmwgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0XHRvcHRpb25zID0gdXJsO1xuXHRcdFx0dXJsID0gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdC8vIEZvcmNlIG9wdGlvbnMgdG8gYmUgYW4gb2JqZWN0XG5cdFx0b3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cblx0XHR2YXIgdHJhbnNwb3J0LFxuXG5cdFx0XHQvLyBVUkwgd2l0aG91dCBhbnRpLWNhY2hlIHBhcmFtXG5cdFx0XHRjYWNoZVVSTCxcblxuXHRcdFx0Ly8gUmVzcG9uc2UgaGVhZGVyc1xuXHRcdFx0cmVzcG9uc2VIZWFkZXJzU3RyaW5nLFxuXHRcdFx0cmVzcG9uc2VIZWFkZXJzLFxuXG5cdFx0XHQvLyB0aW1lb3V0IGhhbmRsZVxuXHRcdFx0dGltZW91dFRpbWVyLFxuXG5cdFx0XHQvLyBVcmwgY2xlYW51cCB2YXJcblx0XHRcdHVybEFuY2hvcixcblxuXHRcdFx0Ly8gUmVxdWVzdCBzdGF0ZSAoYmVjb21lcyBmYWxzZSB1cG9uIHNlbmQgYW5kIHRydWUgdXBvbiBjb21wbGV0aW9uKVxuXHRcdFx0Y29tcGxldGVkLFxuXG5cdFx0XHQvLyBUbyBrbm93IGlmIGdsb2JhbCBldmVudHMgYXJlIHRvIGJlIGRpc3BhdGNoZWRcblx0XHRcdGZpcmVHbG9iYWxzLFxuXG5cdFx0XHQvLyBMb29wIHZhcmlhYmxlXG5cdFx0XHRpLFxuXG5cdFx0XHQvLyB1bmNhY2hlZCBwYXJ0IG9mIHRoZSB1cmxcblx0XHRcdHVuY2FjaGVkLFxuXG5cdFx0XHQvLyBDcmVhdGUgdGhlIGZpbmFsIG9wdGlvbnMgb2JqZWN0XG5cdFx0XHRzID0galF1ZXJ5LmFqYXhTZXR1cCgge30sIG9wdGlvbnMgKSxcblxuXHRcdFx0Ly8gQ2FsbGJhY2tzIGNvbnRleHRcblx0XHRcdGNhbGxiYWNrQ29udGV4dCA9IHMuY29udGV4dCB8fCBzLFxuXG5cdFx0XHQvLyBDb250ZXh0IGZvciBnbG9iYWwgZXZlbnRzIGlzIGNhbGxiYWNrQ29udGV4dCBpZiBpdCBpcyBhIERPTSBub2RlIG9yIGpRdWVyeSBjb2xsZWN0aW9uXG5cdFx0XHRnbG9iYWxFdmVudENvbnRleHQgPSBzLmNvbnRleHQgJiZcblx0XHRcdFx0KCBjYWxsYmFja0NvbnRleHQubm9kZVR5cGUgfHwgY2FsbGJhY2tDb250ZXh0LmpxdWVyeSApID9cblx0XHRcdFx0alF1ZXJ5KCBjYWxsYmFja0NvbnRleHQgKSA6XG5cdFx0XHRcdGpRdWVyeS5ldmVudCxcblxuXHRcdFx0Ly8gRGVmZXJyZWRzXG5cdFx0XHRkZWZlcnJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpLFxuXHRcdFx0Y29tcGxldGVEZWZlcnJlZCA9IGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLFxuXG5cdFx0XHQvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrc1xuXHRcdFx0c3RhdHVzQ29kZSA9IHMuc3RhdHVzQ29kZSB8fCB7fSxcblxuXHRcdFx0Ly8gSGVhZGVycyAodGhleSBhcmUgc2VudCBhbGwgYXQgb25jZSlcblx0XHRcdHJlcXVlc3RIZWFkZXJzID0ge30sXG5cdFx0XHRyZXF1ZXN0SGVhZGVyc05hbWVzID0ge30sXG5cblx0XHRcdC8vIERlZmF1bHQgYWJvcnQgbWVzc2FnZVxuXHRcdFx0c3RyQWJvcnQgPSBcImNhbmNlbGVkXCIsXG5cblx0XHRcdC8vIEZha2UgeGhyXG5cdFx0XHRqcVhIUiA9IHtcblx0XHRcdFx0cmVhZHlTdGF0ZTogMCxcblxuXHRcdFx0XHQvLyBCdWlsZHMgaGVhZGVycyBoYXNodGFibGUgaWYgbmVlZGVkXG5cdFx0XHRcdGdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbigga2V5ICkge1xuXHRcdFx0XHRcdHZhciBtYXRjaDtcblx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblx0XHRcdFx0XHRcdGlmICggIXJlc3BvbnNlSGVhZGVycyApIHtcblx0XHRcdFx0XHRcdFx0cmVzcG9uc2VIZWFkZXJzID0ge307XG5cdFx0XHRcdFx0XHRcdHdoaWxlICggKCBtYXRjaCA9IHJoZWFkZXJzLmV4ZWMoIHJlc3BvbnNlSGVhZGVyc1N0cmluZyApICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzcG9uc2VIZWFkZXJzWyBtYXRjaFsgMSBdLnRvTG93ZXJDYXNlKCkgKyBcIiBcIiBdID1cblx0XHRcdFx0XHRcdFx0XHRcdCggcmVzcG9uc2VIZWFkZXJzWyBtYXRjaFsgMSBdLnRvTG93ZXJDYXNlKCkgKyBcIiBcIiBdIHx8IFtdIClcblx0XHRcdFx0XHRcdFx0XHRcdFx0LmNvbmNhdCggbWF0Y2hbIDIgXSApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRtYXRjaCA9IHJlc3BvbnNlSGVhZGVyc1sga2V5LnRvTG93ZXJDYXNlKCkgKyBcIiBcIiBdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gbWF0Y2ggPT0gbnVsbCA/IG51bGwgOiBtYXRjaC5qb2luKCBcIiwgXCIgKTtcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBSYXcgc3RyaW5nXG5cdFx0XHRcdGdldEFsbFJlc3BvbnNlSGVhZGVyczogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGNvbXBsZXRlZCA/IHJlc3BvbnNlSGVhZGVyc1N0cmluZyA6IG51bGw7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gQ2FjaGVzIHRoZSBoZWFkZXJcblx0XHRcdFx0c2V0UmVxdWVzdEhlYWRlcjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xuXHRcdFx0XHRcdGlmICggY29tcGxldGVkID09IG51bGwgKSB7XG5cdFx0XHRcdFx0XHRuYW1lID0gcmVxdWVzdEhlYWRlcnNOYW1lc1sgbmFtZS50b0xvd2VyQ2FzZSgpIF0gPVxuXHRcdFx0XHRcdFx0XHRyZXF1ZXN0SGVhZGVyc05hbWVzWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSB8fCBuYW1lO1xuXHRcdFx0XHRcdFx0cmVxdWVzdEhlYWRlcnNbIG5hbWUgXSA9IHZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBPdmVycmlkZXMgcmVzcG9uc2UgY29udGVudC10eXBlIGhlYWRlclxuXHRcdFx0XHRvdmVycmlkZU1pbWVUeXBlOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCA9PSBudWxsICkge1xuXHRcdFx0XHRcdFx0cy5taW1lVHlwZSA9IHR5cGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzXG5cdFx0XHRcdHN0YXR1c0NvZGU6IGZ1bmN0aW9uKCBtYXAgKSB7XG5cdFx0XHRcdFx0dmFyIGNvZGU7XG5cdFx0XHRcdFx0aWYgKCBtYXAgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBFeGVjdXRlIHRoZSBhcHByb3ByaWF0ZSBjYWxsYmFja3Ncblx0XHRcdFx0XHRcdFx0anFYSFIuYWx3YXlzKCBtYXBbIGpxWEhSLnN0YXR1cyBdICk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdC8vIExhenktYWRkIHRoZSBuZXcgY2FsbGJhY2tzIGluIGEgd2F5IHRoYXQgcHJlc2VydmVzIG9sZCBvbmVzXG5cdFx0XHRcdFx0XHRcdGZvciAoIGNvZGUgaW4gbWFwICkge1xuXHRcdFx0XHRcdFx0XHRcdHN0YXR1c0NvZGVbIGNvZGUgXSA9IFsgc3RhdHVzQ29kZVsgY29kZSBdLCBtYXBbIGNvZGUgXSBdO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIENhbmNlbCB0aGUgcmVxdWVzdFxuXHRcdFx0XHRhYm9ydDogZnVuY3Rpb24oIHN0YXR1c1RleHQgKSB7XG5cdFx0XHRcdFx0dmFyIGZpbmFsVGV4dCA9IHN0YXR1c1RleHQgfHwgc3RyQWJvcnQ7XG5cdFx0XHRcdFx0aWYgKCB0cmFuc3BvcnQgKSB7XG5cdFx0XHRcdFx0XHR0cmFuc3BvcnQuYWJvcnQoIGZpbmFsVGV4dCApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRkb25lKCAwLCBmaW5hbFRleHQgKTtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdC8vIEF0dGFjaCBkZWZlcnJlZHNcblx0XHRkZWZlcnJlZC5wcm9taXNlKCBqcVhIUiApO1xuXG5cdFx0Ly8gQWRkIHByb3RvY29sIGlmIG5vdCBwcm92aWRlZCAocHJlZmlsdGVycyBtaWdodCBleHBlY3QgaXQpXG5cdFx0Ly8gSGFuZGxlIGZhbHN5IHVybCBpbiB0aGUgc2V0dGluZ3Mgb2JqZWN0ICh0cmFjLTEwMDkzOiBjb25zaXN0ZW5jeSB3aXRoIG9sZCBzaWduYXR1cmUpXG5cdFx0Ly8gV2UgYWxzbyB1c2UgdGhlIHVybCBwYXJhbWV0ZXIgaWYgYXZhaWxhYmxlXG5cdFx0cy51cmwgPSAoICggdXJsIHx8IHMudXJsIHx8IGxvY2F0aW9uLmhyZWYgKSArIFwiXCIgKVxuXHRcdFx0LnJlcGxhY2UoIHJwcm90b2NvbCwgbG9jYXRpb24ucHJvdG9jb2wgKyBcIi8vXCIgKTtcblxuXHRcdC8vIEFsaWFzIG1ldGhvZCBvcHRpb24gdG8gdHlwZSBhcyBwZXIgdGlja2V0IHRyYWMtMTIwMDRcblx0XHRzLnR5cGUgPSBvcHRpb25zLm1ldGhvZCB8fCBvcHRpb25zLnR5cGUgfHwgcy5tZXRob2QgfHwgcy50eXBlO1xuXG5cdFx0Ly8gRXh0cmFjdCBkYXRhVHlwZXMgbGlzdFxuXHRcdHMuZGF0YVR5cGVzID0gKCBzLmRhdGFUeXBlIHx8IFwiKlwiICkudG9Mb3dlckNhc2UoKS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFsgXCJcIiBdO1xuXG5cdFx0Ly8gQSBjcm9zcy1kb21haW4gcmVxdWVzdCBpcyBpbiBvcmRlciB3aGVuIHRoZSBvcmlnaW4gZG9lc24ndCBtYXRjaCB0aGUgY3VycmVudCBvcmlnaW4uXG5cdFx0aWYgKCBzLmNyb3NzRG9tYWluID09IG51bGwgKSB7XG5cdFx0XHR1cmxBbmNob3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImFcIiApO1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTggLSAxMSwgRWRnZSAxMiAtIDE1XG5cdFx0XHQvLyBJRSB0aHJvd3MgZXhjZXB0aW9uIG9uIGFjY2Vzc2luZyB0aGUgaHJlZiBwcm9wZXJ0eSBpZiB1cmwgaXMgbWFsZm9ybWVkLFxuXHRcdFx0Ly8gZS5nLiBodHRwOi8vZXhhbXBsZS5jb206ODB4L1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0dXJsQW5jaG9yLmhyZWYgPSBzLnVybDtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTggLSAxMSBvbmx5XG5cdFx0XHRcdC8vIEFuY2hvcidzIGhvc3QgcHJvcGVydHkgaXNuJ3QgY29ycmVjdGx5IHNldCB3aGVuIHMudXJsIGlzIHJlbGF0aXZlXG5cdFx0XHRcdHVybEFuY2hvci5ocmVmID0gdXJsQW5jaG9yLmhyZWY7XG5cdFx0XHRcdHMuY3Jvc3NEb21haW4gPSBvcmlnaW5BbmNob3IucHJvdG9jb2wgKyBcIi8vXCIgKyBvcmlnaW5BbmNob3IuaG9zdCAhPT1cblx0XHRcdFx0XHR1cmxBbmNob3IucHJvdG9jb2wgKyBcIi8vXCIgKyB1cmxBbmNob3IuaG9zdDtcblx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXG5cdFx0XHRcdC8vIElmIHRoZXJlIGlzIGFuIGVycm9yIHBhcnNpbmcgdGhlIFVSTCwgYXNzdW1lIGl0IGlzIGNyb3NzRG9tYWluLFxuXHRcdFx0XHQvLyBpdCBjYW4gYmUgcmVqZWN0ZWQgYnkgdGhlIHRyYW5zcG9ydCBpZiBpdCBpcyBpbnZhbGlkXG5cdFx0XHRcdHMuY3Jvc3NEb21haW4gPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENvbnZlcnQgZGF0YSBpZiBub3QgYWxyZWFkeSBhIHN0cmluZ1xuXHRcdGlmICggcy5kYXRhICYmIHMucHJvY2Vzc0RhdGEgJiYgdHlwZW9mIHMuZGF0YSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHMuZGF0YSA9IGpRdWVyeS5wYXJhbSggcy5kYXRhLCBzLnRyYWRpdGlvbmFsICk7XG5cdFx0fVxuXG5cdFx0Ly8gQXBwbHkgcHJlZmlsdGVyc1xuXHRcdGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBwcmVmaWx0ZXJzLCBzLCBvcHRpb25zLCBqcVhIUiApO1xuXG5cdFx0Ly8gSWYgcmVxdWVzdCB3YXMgYWJvcnRlZCBpbnNpZGUgYSBwcmVmaWx0ZXIsIHN0b3AgdGhlcmVcblx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblx0XHRcdHJldHVybiBqcVhIUjtcblx0XHR9XG5cblx0XHQvLyBXZSBjYW4gZmlyZSBnbG9iYWwgZXZlbnRzIGFzIG9mIG5vdyBpZiBhc2tlZCB0b1xuXHRcdC8vIERvbid0IGZpcmUgZXZlbnRzIGlmIGpRdWVyeS5ldmVudCBpcyB1bmRlZmluZWQgaW4gYW4gQU1ELXVzYWdlIHNjZW5hcmlvICh0cmFjLTE1MTE4KVxuXHRcdGZpcmVHbG9iYWxzID0galF1ZXJ5LmV2ZW50ICYmIHMuZ2xvYmFsO1xuXG5cdFx0Ly8gV2F0Y2ggZm9yIGEgbmV3IHNldCBvZiByZXF1ZXN0c1xuXHRcdGlmICggZmlyZUdsb2JhbHMgJiYgalF1ZXJ5LmFjdGl2ZSsrID09PSAwICkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIFwiYWpheFN0YXJ0XCIgKTtcblx0XHR9XG5cblx0XHQvLyBVcHBlcmNhc2UgdGhlIHR5cGVcblx0XHRzLnR5cGUgPSBzLnR5cGUudG9VcHBlckNhc2UoKTtcblxuXHRcdC8vIERldGVybWluZSBpZiByZXF1ZXN0IGhhcyBjb250ZW50XG5cdFx0cy5oYXNDb250ZW50ID0gIXJub0NvbnRlbnQudGVzdCggcy50eXBlICk7XG5cblx0XHQvLyBTYXZlIHRoZSBVUkwgaW4gY2FzZSB3ZSdyZSB0b3lpbmcgd2l0aCB0aGUgSWYtTW9kaWZpZWQtU2luY2Vcblx0XHQvLyBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIgbGF0ZXIgb25cblx0XHQvLyBSZW1vdmUgaGFzaCB0byBzaW1wbGlmeSB1cmwgbWFuaXB1bGF0aW9uXG5cdFx0Y2FjaGVVUkwgPSBzLnVybC5yZXBsYWNlKCByaGFzaCwgXCJcIiApO1xuXG5cdFx0Ly8gTW9yZSBvcHRpb25zIGhhbmRsaW5nIGZvciByZXF1ZXN0cyB3aXRoIG5vIGNvbnRlbnRcblx0XHRpZiAoICFzLmhhc0NvbnRlbnQgKSB7XG5cblx0XHRcdC8vIFJlbWVtYmVyIHRoZSBoYXNoIHNvIHdlIGNhbiBwdXQgaXQgYmFja1xuXHRcdFx0dW5jYWNoZWQgPSBzLnVybC5zbGljZSggY2FjaGVVUkwubGVuZ3RoICk7XG5cblx0XHRcdC8vIElmIGRhdGEgaXMgYXZhaWxhYmxlIGFuZCBzaG91bGQgYmUgcHJvY2Vzc2VkLCBhcHBlbmQgZGF0YSB0byB1cmxcblx0XHRcdGlmICggcy5kYXRhICYmICggcy5wcm9jZXNzRGF0YSB8fCB0eXBlb2Ygcy5kYXRhID09PSBcInN0cmluZ1wiICkgKSB7XG5cdFx0XHRcdGNhY2hlVVJMICs9ICggcnF1ZXJ5LnRlc3QoIGNhY2hlVVJMICkgPyBcIiZcIiA6IFwiP1wiICkgKyBzLmRhdGE7XG5cblx0XHRcdFx0Ly8gdHJhYy05NjgyOiByZW1vdmUgZGF0YSBzbyB0aGF0IGl0J3Mgbm90IHVzZWQgaW4gYW4gZXZlbnR1YWwgcmV0cnlcblx0XHRcdFx0ZGVsZXRlIHMuZGF0YTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQWRkIG9yIHVwZGF0ZSBhbnRpLWNhY2hlIHBhcmFtIGlmIG5lZWRlZFxuXHRcdFx0aWYgKCBzLmNhY2hlID09PSBmYWxzZSApIHtcblx0XHRcdFx0Y2FjaGVVUkwgPSBjYWNoZVVSTC5yZXBsYWNlKCByYW50aUNhY2hlLCBcIiQxXCIgKTtcblx0XHRcdFx0dW5jYWNoZWQgPSAoIHJxdWVyeS50ZXN0KCBjYWNoZVVSTCApID8gXCImXCIgOiBcIj9cIiApICsgXCJfPVwiICsgKCBub25jZS5ndWlkKysgKSArXG5cdFx0XHRcdFx0dW5jYWNoZWQ7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFB1dCBoYXNoIGFuZCBhbnRpLWNhY2hlIG9uIHRoZSBVUkwgdGhhdCB3aWxsIGJlIHJlcXVlc3RlZCAoZ2gtMTczMilcblx0XHRcdHMudXJsID0gY2FjaGVVUkwgKyB1bmNhY2hlZDtcblxuXHRcdC8vIENoYW5nZSAnJTIwJyB0byAnKycgaWYgdGhpcyBpcyBlbmNvZGVkIGZvcm0gYm9keSBjb250ZW50IChnaC0yNjU4KVxuXHRcdH0gZWxzZSBpZiAoIHMuZGF0YSAmJiBzLnByb2Nlc3NEYXRhICYmXG5cdFx0XHQoIHMuY29udGVudFR5cGUgfHwgXCJcIiApLmluZGV4T2YoIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIgKSA9PT0gMCApIHtcblx0XHRcdHMuZGF0YSA9IHMuZGF0YS5yZXBsYWNlKCByMjAsIFwiK1wiICk7XG5cdFx0fVxuXG5cdFx0Ly8gU2V0IHRoZSBJZi1Nb2RpZmllZC1TaW5jZSBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIsIGlmIGluIGlmTW9kaWZpZWQgbW9kZS5cblx0XHRpZiAoIHMuaWZNb2RpZmllZCApIHtcblx0XHRcdGlmICggalF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSApIHtcblx0XHRcdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlciggXCJJZi1Nb2RpZmllZC1TaW5jZVwiLCBqUXVlcnkubGFzdE1vZGlmaWVkWyBjYWNoZVVSTCBdICk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdICkge1xuXHRcdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBcIklmLU5vbmUtTWF0Y2hcIiwgalF1ZXJ5LmV0YWdbIGNhY2hlVVJMIF0gKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBTZXQgdGhlIGNvcnJlY3QgaGVhZGVyLCBpZiBkYXRhIGlzIGJlaW5nIHNlbnRcblx0XHRpZiAoIHMuZGF0YSAmJiBzLmhhc0NvbnRlbnQgJiYgcy5jb250ZW50VHlwZSAhPT0gZmFsc2UgfHwgb3B0aW9ucy5jb250ZW50VHlwZSApIHtcblx0XHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIFwiQ29udGVudC1UeXBlXCIsIHMuY29udGVudFR5cGUgKTtcblx0XHR9XG5cblx0XHQvLyBTZXQgdGhlIEFjY2VwdHMgaGVhZGVyIGZvciB0aGUgc2VydmVyLCBkZXBlbmRpbmcgb24gdGhlIGRhdGFUeXBlXG5cdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlcihcblx0XHRcdFwiQWNjZXB0XCIsXG5cdFx0XHRzLmRhdGFUeXBlc1sgMCBdICYmIHMuYWNjZXB0c1sgcy5kYXRhVHlwZXNbIDAgXSBdID9cblx0XHRcdFx0cy5hY2NlcHRzWyBzLmRhdGFUeXBlc1sgMCBdIF0gK1xuXHRcdFx0XHRcdCggcy5kYXRhVHlwZXNbIDAgXSAhPT0gXCIqXCIgPyBcIiwgXCIgKyBhbGxUeXBlcyArIFwiOyBxPTAuMDFcIiA6IFwiXCIgKSA6XG5cdFx0XHRcdHMuYWNjZXB0c1sgXCIqXCIgXVxuXHRcdCk7XG5cblx0XHQvLyBDaGVjayBmb3IgaGVhZGVycyBvcHRpb25cblx0XHRmb3IgKCBpIGluIHMuaGVhZGVycyApIHtcblx0XHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIGksIHMuaGVhZGVyc1sgaSBdICk7XG5cdFx0fVxuXG5cdFx0Ly8gQWxsb3cgY3VzdG9tIGhlYWRlcnMvbWltZXR5cGVzIGFuZCBlYXJseSBhYm9ydFxuXHRcdGlmICggcy5iZWZvcmVTZW5kICYmXG5cdFx0XHQoIHMuYmVmb3JlU2VuZC5jYWxsKCBjYWxsYmFja0NvbnRleHQsIGpxWEhSLCBzICkgPT09IGZhbHNlIHx8IGNvbXBsZXRlZCApICkge1xuXG5cdFx0XHQvLyBBYm9ydCBpZiBub3QgZG9uZSBhbHJlYWR5IGFuZCByZXR1cm5cblx0XHRcdHJldHVybiBqcVhIUi5hYm9ydCgpO1xuXHRcdH1cblxuXHRcdC8vIEFib3J0aW5nIGlzIG5vIGxvbmdlciBhIGNhbmNlbGxhdGlvblxuXHRcdHN0ckFib3J0ID0gXCJhYm9ydFwiO1xuXG5cdFx0Ly8gSW5zdGFsbCBjYWxsYmFja3Mgb24gZGVmZXJyZWRzXG5cdFx0Y29tcGxldGVEZWZlcnJlZC5hZGQoIHMuY29tcGxldGUgKTtcblx0XHRqcVhIUi5kb25lKCBzLnN1Y2Nlc3MgKTtcblx0XHRqcVhIUi5mYWlsKCBzLmVycm9yICk7XG5cblx0XHQvLyBHZXQgdHJhbnNwb3J0XG5cdFx0dHJhbnNwb3J0ID0gaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHRyYW5zcG9ydHMsIHMsIG9wdGlvbnMsIGpxWEhSICk7XG5cblx0XHQvLyBJZiBubyB0cmFuc3BvcnQsIHdlIGF1dG8tYWJvcnRcblx0XHRpZiAoICF0cmFuc3BvcnQgKSB7XG5cdFx0XHRkb25lKCAtMSwgXCJObyBUcmFuc3BvcnRcIiApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRqcVhIUi5yZWFkeVN0YXRlID0gMTtcblxuXHRcdFx0Ly8gU2VuZCBnbG9iYWwgZXZlbnRcblx0XHRcdGlmICggZmlyZUdsb2JhbHMgKSB7XG5cdFx0XHRcdGdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKCBcImFqYXhTZW5kXCIsIFsganFYSFIsIHMgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiByZXF1ZXN0IHdhcyBhYm9ydGVkIGluc2lkZSBhamF4U2VuZCwgc3RvcCB0aGVyZVxuXHRcdFx0aWYgKCBjb21wbGV0ZWQgKSB7XG5cdFx0XHRcdHJldHVybiBqcVhIUjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gVGltZW91dFxuXHRcdFx0aWYgKCBzLmFzeW5jICYmIHMudGltZW91dCA+IDAgKSB7XG5cdFx0XHRcdHRpbWVvdXRUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRqcVhIUi5hYm9ydCggXCJ0aW1lb3V0XCIgKTtcblx0XHRcdFx0fSwgcy50aW1lb3V0ICk7XG5cdFx0XHR9XG5cblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbXBsZXRlZCA9IGZhbHNlO1xuXHRcdFx0XHR0cmFuc3BvcnQuc2VuZCggcmVxdWVzdEhlYWRlcnMsIGRvbmUgKTtcblx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXG5cdFx0XHRcdC8vIFJldGhyb3cgcG9zdC1jb21wbGV0aW9uIGV4Y2VwdGlvbnNcblx0XHRcdFx0aWYgKCBjb21wbGV0ZWQgKSB7XG5cdFx0XHRcdFx0dGhyb3cgZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFByb3BhZ2F0ZSBvdGhlcnMgYXMgcmVzdWx0c1xuXHRcdFx0XHRkb25lKCAtMSwgZSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENhbGxiYWNrIGZvciB3aGVuIGV2ZXJ5dGhpbmcgaXMgZG9uZVxuXHRcdGZ1bmN0aW9uIGRvbmUoIHN0YXR1cywgbmF0aXZlU3RhdHVzVGV4dCwgcmVzcG9uc2VzLCBoZWFkZXJzICkge1xuXHRcdFx0dmFyIGlzU3VjY2Vzcywgc3VjY2VzcywgZXJyb3IsIHJlc3BvbnNlLCBtb2RpZmllZCxcblx0XHRcdFx0c3RhdHVzVGV4dCA9IG5hdGl2ZVN0YXR1c1RleHQ7XG5cblx0XHRcdC8vIElnbm9yZSByZXBlYXQgaW52b2NhdGlvbnNcblx0XHRcdGlmICggY29tcGxldGVkICkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGNvbXBsZXRlZCA9IHRydWU7XG5cblx0XHRcdC8vIENsZWFyIHRpbWVvdXQgaWYgaXQgZXhpc3RzXG5cdFx0XHRpZiAoIHRpbWVvdXRUaW1lciApIHtcblx0XHRcdFx0d2luZG93LmNsZWFyVGltZW91dCggdGltZW91dFRpbWVyICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIERlcmVmZXJlbmNlIHRyYW5zcG9ydCBmb3IgZWFybHkgZ2FyYmFnZSBjb2xsZWN0aW9uXG5cdFx0XHQvLyAobm8gbWF0dGVyIGhvdyBsb25nIHRoZSBqcVhIUiBvYmplY3Qgd2lsbCBiZSB1c2VkKVxuXHRcdFx0dHJhbnNwb3J0ID0gdW5kZWZpbmVkO1xuXG5cdFx0XHQvLyBDYWNoZSByZXNwb25zZSBoZWFkZXJzXG5cdFx0XHRyZXNwb25zZUhlYWRlcnNTdHJpbmcgPSBoZWFkZXJzIHx8IFwiXCI7XG5cblx0XHRcdC8vIFNldCByZWFkeVN0YXRlXG5cdFx0XHRqcVhIUi5yZWFkeVN0YXRlID0gc3RhdHVzID4gMCA/IDQgOiAwO1xuXG5cdFx0XHQvLyBEZXRlcm1pbmUgaWYgc3VjY2Vzc2Z1bFxuXHRcdFx0aXNTdWNjZXNzID0gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDAgfHwgc3RhdHVzID09PSAzMDQ7XG5cblx0XHRcdC8vIEdldCByZXNwb25zZSBkYXRhXG5cdFx0XHRpZiAoIHJlc3BvbnNlcyApIHtcblx0XHRcdFx0cmVzcG9uc2UgPSBhamF4SGFuZGxlUmVzcG9uc2VzKCBzLCBqcVhIUiwgcmVzcG9uc2VzICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFVzZSBhIG5vb3AgY29udmVydGVyIGZvciBtaXNzaW5nIHNjcmlwdCBidXQgbm90IGlmIGpzb25wXG5cdFx0XHRpZiAoICFpc1N1Y2Nlc3MgJiZcblx0XHRcdFx0alF1ZXJ5LmluQXJyYXkoIFwic2NyaXB0XCIsIHMuZGF0YVR5cGVzICkgPiAtMSAmJlxuXHRcdFx0XHRqUXVlcnkuaW5BcnJheSggXCJqc29uXCIsIHMuZGF0YVR5cGVzICkgPCAwICkge1xuXHRcdFx0XHRzLmNvbnZlcnRlcnNbIFwidGV4dCBzY3JpcHRcIiBdID0gZnVuY3Rpb24oKSB7fTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ29udmVydCBubyBtYXR0ZXIgd2hhdCAodGhhdCB3YXkgcmVzcG9uc2VYWFggZmllbGRzIGFyZSBhbHdheXMgc2V0KVxuXHRcdFx0cmVzcG9uc2UgPSBhamF4Q29udmVydCggcywgcmVzcG9uc2UsIGpxWEhSLCBpc1N1Y2Nlc3MgKTtcblxuXHRcdFx0Ly8gSWYgc3VjY2Vzc2Z1bCwgaGFuZGxlIHR5cGUgY2hhaW5pbmdcblx0XHRcdGlmICggaXNTdWNjZXNzICkge1xuXG5cdFx0XHRcdC8vIFNldCB0aGUgSWYtTW9kaWZpZWQtU2luY2UgYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyLCBpZiBpbiBpZk1vZGlmaWVkIG1vZGUuXG5cdFx0XHRcdGlmICggcy5pZk1vZGlmaWVkICkge1xuXHRcdFx0XHRcdG1vZGlmaWVkID0ganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoIFwiTGFzdC1Nb2RpZmllZFwiICk7XG5cdFx0XHRcdFx0aWYgKCBtb2RpZmllZCApIHtcblx0XHRcdFx0XHRcdGpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gPSBtb2RpZmllZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0bW9kaWZpZWQgPSBqcVhIUi5nZXRSZXNwb25zZUhlYWRlciggXCJldGFnXCIgKTtcblx0XHRcdFx0XHRpZiAoIG1vZGlmaWVkICkge1xuXHRcdFx0XHRcdFx0alF1ZXJ5LmV0YWdbIGNhY2hlVVJMIF0gPSBtb2RpZmllZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBpZiBubyBjb250ZW50XG5cdFx0XHRcdGlmICggc3RhdHVzID09PSAyMDQgfHwgcy50eXBlID09PSBcIkhFQURcIiApIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gXCJub2NvbnRlbnRcIjtcblxuXHRcdFx0XHQvLyBpZiBub3QgbW9kaWZpZWRcblx0XHRcdFx0fSBlbHNlIGlmICggc3RhdHVzID09PSAzMDQgKSB7XG5cdFx0XHRcdFx0c3RhdHVzVGV4dCA9IFwibm90bW9kaWZpZWRcIjtcblxuXHRcdFx0XHQvLyBJZiB3ZSBoYXZlIGRhdGEsIGxldCdzIGNvbnZlcnQgaXRcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gcmVzcG9uc2Uuc3RhdGU7XG5cdFx0XHRcdFx0c3VjY2VzcyA9IHJlc3BvbnNlLmRhdGE7XG5cdFx0XHRcdFx0ZXJyb3IgPSByZXNwb25zZS5lcnJvcjtcblx0XHRcdFx0XHRpc1N1Y2Nlc3MgPSAhZXJyb3I7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0Ly8gRXh0cmFjdCBlcnJvciBmcm9tIHN0YXR1c1RleHQgYW5kIG5vcm1hbGl6ZSBmb3Igbm9uLWFib3J0c1xuXHRcdFx0XHRlcnJvciA9IHN0YXR1c1RleHQ7XG5cdFx0XHRcdGlmICggc3RhdHVzIHx8ICFzdGF0dXNUZXh0ICkge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSBcImVycm9yXCI7XG5cdFx0XHRcdFx0aWYgKCBzdGF0dXMgPCAwICkge1xuXHRcdFx0XHRcdFx0c3RhdHVzID0gMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gU2V0IGRhdGEgZm9yIHRoZSBmYWtlIHhociBvYmplY3Rcblx0XHRcdGpxWEhSLnN0YXR1cyA9IHN0YXR1cztcblx0XHRcdGpxWEhSLnN0YXR1c1RleHQgPSAoIG5hdGl2ZVN0YXR1c1RleHQgfHwgc3RhdHVzVGV4dCApICsgXCJcIjtcblxuXHRcdFx0Ly8gU3VjY2Vzcy9FcnJvclxuXHRcdFx0aWYgKCBpc1N1Y2Nlc3MgKSB7XG5cdFx0XHRcdGRlZmVycmVkLnJlc29sdmVXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsgc3VjY2Vzcywgc3RhdHVzVGV4dCwganFYSFIgXSApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZGVmZXJyZWQucmVqZWN0V2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIGpxWEhSLCBzdGF0dXNUZXh0LCBlcnJvciBdICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzXG5cdFx0XHRqcVhIUi5zdGF0dXNDb2RlKCBzdGF0dXNDb2RlICk7XG5cdFx0XHRzdGF0dXNDb2RlID0gdW5kZWZpbmVkO1xuXG5cdFx0XHRpZiAoIGZpcmVHbG9iYWxzICkge1xuXHRcdFx0XHRnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggaXNTdWNjZXNzID8gXCJhamF4U3VjY2Vzc1wiIDogXCJhamF4RXJyb3JcIixcblx0XHRcdFx0XHRbIGpxWEhSLCBzLCBpc1N1Y2Nlc3MgPyBzdWNjZXNzIDogZXJyb3IgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDb21wbGV0ZVxuXHRcdFx0Y29tcGxldGVEZWZlcnJlZC5maXJlV2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIGpxWEhSLCBzdGF0dXNUZXh0IF0gKTtcblxuXHRcdFx0aWYgKCBmaXJlR2xvYmFscyApIHtcblx0XHRcdFx0Z2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoIFwiYWpheENvbXBsZXRlXCIsIFsganFYSFIsIHMgXSApO1xuXG5cdFx0XHRcdC8vIEhhbmRsZSB0aGUgZ2xvYmFsIEFKQVggY291bnRlclxuXHRcdFx0XHRpZiAoICEoIC0talF1ZXJ5LmFjdGl2ZSApICkge1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyKCBcImFqYXhTdG9wXCIgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBqcVhIUjtcblx0fSxcblxuXHRnZXRKU09OOiBmdW5jdGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdldCggdXJsLCBkYXRhLCBjYWxsYmFjaywgXCJqc29uXCIgKTtcblx0fSxcblxuXHRnZXRTY3JpcHQ6IGZ1bmN0aW9uKCB1cmwsIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBqUXVlcnkuZ2V0KCB1cmwsIHVuZGVmaW5lZCwgY2FsbGJhY2ssIFwic2NyaXB0XCIgKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZWFjaCggWyBcImdldFwiLCBcInBvc3RcIiBdLCBmdW5jdGlvbiggX2ksIG1ldGhvZCApIHtcblx0alF1ZXJ5WyBtZXRob2QgXSA9IGZ1bmN0aW9uKCB1cmwsIGRhdGEsIGNhbGxiYWNrLCB0eXBlICkge1xuXG5cdFx0Ly8gU2hpZnQgYXJndW1lbnRzIGlmIGRhdGEgYXJndW1lbnQgd2FzIG9taXR0ZWRcblx0XHRpZiAoIGlzRnVuY3Rpb24oIGRhdGEgKSApIHtcblx0XHRcdHR5cGUgPSB0eXBlIHx8IGNhbGxiYWNrO1xuXHRcdFx0Y2FsbGJhY2sgPSBkYXRhO1xuXHRcdFx0ZGF0YSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHQvLyBUaGUgdXJsIGNhbiBiZSBhbiBvcHRpb25zIG9iamVjdCAod2hpY2ggdGhlbiBtdXN0IGhhdmUgLnVybClcblx0XHRyZXR1cm4galF1ZXJ5LmFqYXgoIGpRdWVyeS5leHRlbmQoIHtcblx0XHRcdHVybDogdXJsLFxuXHRcdFx0dHlwZTogbWV0aG9kLFxuXHRcdFx0ZGF0YVR5cGU6IHR5cGUsXG5cdFx0XHRkYXRhOiBkYXRhLFxuXHRcdFx0c3VjY2VzczogY2FsbGJhY2tcblx0XHR9LCBqUXVlcnkuaXNQbGFpbk9iamVjdCggdXJsICkgJiYgdXJsICkgKTtcblx0fTtcbn0gKTtcblxualF1ZXJ5LmFqYXhQcmVmaWx0ZXIoIGZ1bmN0aW9uKCBzICkge1xuXHR2YXIgaTtcblx0Zm9yICggaSBpbiBzLmhlYWRlcnMgKSB7XG5cdFx0aWYgKCBpLnRvTG93ZXJDYXNlKCkgPT09IFwiY29udGVudC10eXBlXCIgKSB7XG5cdFx0XHRzLmNvbnRlbnRUeXBlID0gcy5oZWFkZXJzWyBpIF0gfHwgXCJcIjtcblx0XHR9XG5cdH1cbn0gKTtcblxuXG5qUXVlcnkuX2V2YWxVcmwgPSBmdW5jdGlvbiggdXJsLCBvcHRpb25zLCBkb2MgKSB7XG5cdHJldHVybiBqUXVlcnkuYWpheCgge1xuXHRcdHVybDogdXJsLFxuXG5cdFx0Ly8gTWFrZSB0aGlzIGV4cGxpY2l0LCBzaW5jZSB1c2VyIGNhbiBvdmVycmlkZSB0aGlzIHRocm91Z2ggYWpheFNldHVwICh0cmFjLTExMjY0KVxuXHRcdHR5cGU6IFwiR0VUXCIsXG5cdFx0ZGF0YVR5cGU6IFwic2NyaXB0XCIsXG5cdFx0Y2FjaGU6IHRydWUsXG5cdFx0YXN5bmM6IGZhbHNlLFxuXHRcdGdsb2JhbDogZmFsc2UsXG5cblx0XHQvLyBPbmx5IGV2YWx1YXRlIHRoZSByZXNwb25zZSBpZiBpdCBpcyBzdWNjZXNzZnVsIChnaC00MTI2KVxuXHRcdC8vIGRhdGFGaWx0ZXIgaXMgbm90IGludm9rZWQgZm9yIGZhaWx1cmUgcmVzcG9uc2VzLCBzbyB1c2luZyBpdCBpbnN0ZWFkXG5cdFx0Ly8gb2YgdGhlIGRlZmF1bHQgY29udmVydGVyIGlzIGtsdWRneSBidXQgaXQgd29ya3MuXG5cdFx0Y29udmVydGVyczoge1xuXHRcdFx0XCJ0ZXh0IHNjcmlwdFwiOiBmdW5jdGlvbigpIHt9XG5cdFx0fSxcblx0XHRkYXRhRmlsdGVyOiBmdW5jdGlvbiggcmVzcG9uc2UgKSB7XG5cdFx0XHRqUXVlcnkuZ2xvYmFsRXZhbCggcmVzcG9uc2UsIG9wdGlvbnMsIGRvYyApO1xuXHRcdH1cblx0fSApO1xufTtcblxuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHdyYXBBbGw6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdHZhciB3cmFwO1xuXG5cdFx0aWYgKCB0aGlzWyAwIF0gKSB7XG5cdFx0XHRpZiAoIGlzRnVuY3Rpb24oIGh0bWwgKSApIHtcblx0XHRcdFx0aHRtbCA9IGh0bWwuY2FsbCggdGhpc1sgMCBdICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFRoZSBlbGVtZW50cyB0byB3cmFwIHRoZSB0YXJnZXQgYXJvdW5kXG5cdFx0XHR3cmFwID0galF1ZXJ5KCBodG1sLCB0aGlzWyAwIF0ub3duZXJEb2N1bWVudCApLmVxKCAwICkuY2xvbmUoIHRydWUgKTtcblxuXHRcdFx0aWYgKCB0aGlzWyAwIF0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0d3JhcC5pbnNlcnRCZWZvcmUoIHRoaXNbIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHR3cmFwLm1hcCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBlbGVtID0gdGhpcztcblxuXHRcdFx0XHR3aGlsZSAoIGVsZW0uZmlyc3RFbGVtZW50Q2hpbGQgKSB7XG5cdFx0XHRcdFx0ZWxlbSA9IGVsZW0uZmlyc3RFbGVtZW50Q2hpbGQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gZWxlbTtcblx0XHRcdH0gKS5hcHBlbmQoIHRoaXMgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHR3cmFwSW5uZXI6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdGlmICggaXNGdW5jdGlvbiggaHRtbCApICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLndyYXBJbm5lciggaHRtbC5jYWxsKCB0aGlzLCBpICkgKTtcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBzZWxmID0galF1ZXJ5KCB0aGlzICksXG5cdFx0XHRcdGNvbnRlbnRzID0gc2VsZi5jb250ZW50cygpO1xuXG5cdFx0XHRpZiAoIGNvbnRlbnRzLmxlbmd0aCApIHtcblx0XHRcdFx0Y29udGVudHMud3JhcEFsbCggaHRtbCApO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzZWxmLmFwcGVuZCggaHRtbCApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHR3cmFwOiBmdW5jdGlvbiggaHRtbCApIHtcblx0XHR2YXIgaHRtbElzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uKCBodG1sICk7XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdGpRdWVyeSggdGhpcyApLndyYXBBbGwoIGh0bWxJc0Z1bmN0aW9uID8gaHRtbC5jYWxsKCB0aGlzLCBpICkgOiBodG1sICk7XG5cdFx0fSApO1xuXHR9LFxuXG5cdHVud3JhcDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHRoaXMucGFyZW50KCBzZWxlY3RvciApLm5vdCggXCJib2R5XCIgKS5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeSggdGhpcyApLnJlcGxhY2VXaXRoKCB0aGlzLmNoaWxkTm9kZXMgKTtcblx0XHR9ICk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn0gKTtcblxuXG5qUXVlcnkuZXhwci5wc2V1ZG9zLmhpZGRlbiA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRyZXR1cm4gIWpRdWVyeS5leHByLnBzZXVkb3MudmlzaWJsZSggZWxlbSApO1xufTtcbmpRdWVyeS5leHByLnBzZXVkb3MudmlzaWJsZSA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRyZXR1cm4gISEoIGVsZW0ub2Zmc2V0V2lkdGggfHwgZWxlbS5vZmZzZXRIZWlnaHQgfHwgZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCApO1xufTtcblxuXG5cblxualF1ZXJ5LmFqYXhTZXR0aW5ncy54aHIgPSBmdW5jdGlvbigpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gbmV3IHdpbmRvdy5YTUxIdHRwUmVxdWVzdCgpO1xuXHR9IGNhdGNoICggZSApIHt9XG59O1xuXG52YXIgeGhyU3VjY2Vzc1N0YXR1cyA9IHtcblxuXHRcdC8vIEZpbGUgcHJvdG9jb2wgYWx3YXlzIHlpZWxkcyBzdGF0dXMgY29kZSAwLCBhc3N1bWUgMjAwXG5cdFx0MDogMjAwLFxuXG5cdFx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0XHQvLyB0cmFjLTE0NTA6IHNvbWV0aW1lcyBJRSByZXR1cm5zIDEyMjMgd2hlbiBpdCBzaG91bGQgYmUgMjA0XG5cdFx0MTIyMzogMjA0XG5cdH0sXG5cdHhoclN1cHBvcnRlZCA9IGpRdWVyeS5hamF4U2V0dGluZ3MueGhyKCk7XG5cbnN1cHBvcnQuY29ycyA9ICEheGhyU3VwcG9ydGVkICYmICggXCJ3aXRoQ3JlZGVudGlhbHNcIiBpbiB4aHJTdXBwb3J0ZWQgKTtcbnN1cHBvcnQuYWpheCA9IHhoclN1cHBvcnRlZCA9ICEheGhyU3VwcG9ydGVkO1xuXG5qUXVlcnkuYWpheFRyYW5zcG9ydCggZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG5cdHZhciBjYWxsYmFjaywgZXJyb3JDYWxsYmFjaztcblxuXHQvLyBDcm9zcyBkb21haW4gb25seSBhbGxvd2VkIGlmIHN1cHBvcnRlZCB0aHJvdWdoIFhNTEh0dHBSZXF1ZXN0XG5cdGlmICggc3VwcG9ydC5jb3JzIHx8IHhoclN1cHBvcnRlZCAmJiAhb3B0aW9ucy5jcm9zc0RvbWFpbiApIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0c2VuZDogZnVuY3Rpb24oIGhlYWRlcnMsIGNvbXBsZXRlICkge1xuXHRcdFx0XHR2YXIgaSxcblx0XHRcdFx0XHR4aHIgPSBvcHRpb25zLnhocigpO1xuXG5cdFx0XHRcdHhoci5vcGVuKFxuXHRcdFx0XHRcdG9wdGlvbnMudHlwZSxcblx0XHRcdFx0XHRvcHRpb25zLnVybCxcblx0XHRcdFx0XHRvcHRpb25zLmFzeW5jLFxuXHRcdFx0XHRcdG9wdGlvbnMudXNlcm5hbWUsXG5cdFx0XHRcdFx0b3B0aW9ucy5wYXNzd29yZFxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdC8vIEFwcGx5IGN1c3RvbSBmaWVsZHMgaWYgcHJvdmlkZWRcblx0XHRcdFx0aWYgKCBvcHRpb25zLnhockZpZWxkcyApIHtcblx0XHRcdFx0XHRmb3IgKCBpIGluIG9wdGlvbnMueGhyRmllbGRzICkge1xuXHRcdFx0XHRcdFx0eGhyWyBpIF0gPSBvcHRpb25zLnhockZpZWxkc1sgaSBdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIE92ZXJyaWRlIG1pbWUgdHlwZSBpZiBuZWVkZWRcblx0XHRcdFx0aWYgKCBvcHRpb25zLm1pbWVUeXBlICYmIHhoci5vdmVycmlkZU1pbWVUeXBlICkge1xuXHRcdFx0XHRcdHhoci5vdmVycmlkZU1pbWVUeXBlKCBvcHRpb25zLm1pbWVUeXBlICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBYLVJlcXVlc3RlZC1XaXRoIGhlYWRlclxuXHRcdFx0XHQvLyBGb3IgY3Jvc3MtZG9tYWluIHJlcXVlc3RzLCBzZWVpbmcgYXMgY29uZGl0aW9ucyBmb3IgYSBwcmVmbGlnaHQgYXJlXG5cdFx0XHRcdC8vIGFraW4gdG8gYSBqaWdzYXcgcHV6emxlLCB3ZSBzaW1wbHkgbmV2ZXIgc2V0IGl0IHRvIGJlIHN1cmUuXG5cdFx0XHRcdC8vIChpdCBjYW4gYWx3YXlzIGJlIHNldCBvbiBhIHBlci1yZXF1ZXN0IGJhc2lzIG9yIGV2ZW4gdXNpbmcgYWpheFNldHVwKVxuXHRcdFx0XHQvLyBGb3Igc2FtZS1kb21haW4gcmVxdWVzdHMsIHdvbid0IGNoYW5nZSBoZWFkZXIgaWYgYWxyZWFkeSBwcm92aWRlZC5cblx0XHRcdFx0aWYgKCAhb3B0aW9ucy5jcm9zc0RvbWFpbiAmJiAhaGVhZGVyc1sgXCJYLVJlcXVlc3RlZC1XaXRoXCIgXSApIHtcblx0XHRcdFx0XHRoZWFkZXJzWyBcIlgtUmVxdWVzdGVkLVdpdGhcIiBdID0gXCJYTUxIdHRwUmVxdWVzdFwiO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gU2V0IGhlYWRlcnNcblx0XHRcdFx0Zm9yICggaSBpbiBoZWFkZXJzICkge1xuXHRcdFx0XHRcdHhoci5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBoZWFkZXJzWyBpIF0gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIENhbGxiYWNrXG5cdFx0XHRcdGNhbGxiYWNrID0gZnVuY3Rpb24oIHR5cGUgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRcdFx0Y2FsbGJhY2sgPSBlcnJvckNhbGxiYWNrID0geGhyLm9ubG9hZCA9XG5cdFx0XHRcdFx0XHRcdFx0eGhyLm9uZXJyb3IgPSB4aHIub25hYm9ydCA9IHhoci5vbnRpbWVvdXQgPVxuXHRcdFx0XHRcdFx0XHRcdFx0eGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7XG5cblx0XHRcdFx0XHRcdFx0aWYgKCB0eXBlID09PSBcImFib3J0XCIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0eGhyLmFib3J0KCk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoIHR5cGUgPT09IFwiZXJyb3JcIiApIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG5cdFx0XHRcdFx0XHRcdFx0Ly8gT24gYSBtYW51YWwgbmF0aXZlIGFib3J0LCBJRTkgdGhyb3dzXG5cdFx0XHRcdFx0XHRcdFx0Ly8gZXJyb3JzIG9uIGFueSBwcm9wZXJ0eSBhY2Nlc3MgdGhhdCBpcyBub3QgcmVhZHlTdGF0ZVxuXHRcdFx0XHRcdFx0XHRcdGlmICggdHlwZW9mIHhoci5zdGF0dXMgIT09IFwibnVtYmVyXCIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb21wbGV0ZSggMCwgXCJlcnJvclwiICk7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbXBsZXRlKFxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIEZpbGU6IHByb3RvY29sIGFsd2F5cyB5aWVsZHMgc3RhdHVzIDA7IHNlZSB0cmFjLTg2MDUsIHRyYWMtMTQyMDdcblx0XHRcdFx0XHRcdFx0XHRcdFx0eGhyLnN0YXR1cyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0eGhyLnN0YXR1c1RleHRcblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGNvbXBsZXRlKFxuXHRcdFx0XHRcdFx0XHRcdFx0eGhyU3VjY2Vzc1N0YXR1c1sgeGhyLnN0YXR1cyBdIHx8IHhoci5zdGF0dXMsXG5cdFx0XHRcdFx0XHRcdFx0XHR4aHIuc3RhdHVzVGV4dCxcblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0XHRcdFx0XHRcdFx0XHRcdC8vIElFOSBoYXMgbm8gWEhSMiBidXQgdGhyb3dzIG9uIGJpbmFyeSAodHJhYy0xMTQyNilcblx0XHRcdFx0XHRcdFx0XHRcdC8vIEZvciBYSFIyIG5vbi10ZXh0LCBsZXQgdGhlIGNhbGxlciBoYW5kbGUgaXQgKGdoLTI0OTgpXG5cdFx0XHRcdFx0XHRcdFx0XHQoIHhoci5yZXNwb25zZVR5cGUgfHwgXCJ0ZXh0XCIgKSAhPT0gXCJ0ZXh0XCIgIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlb2YgeGhyLnJlc3BvbnNlVGV4dCAhPT0gXCJzdHJpbmdcIiA/XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHsgYmluYXJ5OiB4aHIucmVzcG9uc2UgfSA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHsgdGV4dDogeGhyLnJlc3BvbnNlVGV4dCB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0eGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH07XG5cblx0XHRcdFx0Ly8gTGlzdGVuIHRvIGV2ZW50c1xuXHRcdFx0XHR4aHIub25sb2FkID0gY2FsbGJhY2soKTtcblx0XHRcdFx0ZXJyb3JDYWxsYmFjayA9IHhoci5vbmVycm9yID0geGhyLm9udGltZW91dCA9IGNhbGxiYWNrKCBcImVycm9yXCIgKTtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA5IG9ubHlcblx0XHRcdFx0Ly8gVXNlIG9ucmVhZHlzdGF0ZWNoYW5nZSB0byByZXBsYWNlIG9uYWJvcnRcblx0XHRcdFx0Ly8gdG8gaGFuZGxlIHVuY2F1Z2h0IGFib3J0c1xuXHRcdFx0XHRpZiAoIHhoci5vbmFib3J0ICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0eGhyLm9uYWJvcnQgPSBlcnJvckNhbGxiYWNrO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHRcdFx0Ly8gQ2hlY2sgcmVhZHlTdGF0ZSBiZWZvcmUgdGltZW91dCBhcyBpdCBjaGFuZ2VzXG5cdFx0XHRcdFx0XHRpZiAoIHhoci5yZWFkeVN0YXRlID09PSA0ICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIEFsbG93IG9uZXJyb3IgdG8gYmUgY2FsbGVkIGZpcnN0LFxuXHRcdFx0XHRcdFx0XHQvLyBidXQgdGhhdCB3aWxsIG5vdCBoYW5kbGUgYSBuYXRpdmUgYWJvcnRcblx0XHRcdFx0XHRcdFx0Ly8gQWxzbywgc2F2ZSBlcnJvckNhbGxiYWNrIHRvIGEgdmFyaWFibGVcblx0XHRcdFx0XHRcdFx0Ly8gYXMgeGhyLm9uZXJyb3IgY2Fubm90IGJlIGFjY2Vzc2VkXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZXJyb3JDYWxsYmFjaygpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBDcmVhdGUgdGhlIGFib3J0IGNhbGxiYWNrXG5cdFx0XHRcdGNhbGxiYWNrID0gY2FsbGJhY2soIFwiYWJvcnRcIiApO1xuXG5cdFx0XHRcdHRyeSB7XG5cblx0XHRcdFx0XHQvLyBEbyBzZW5kIHRoZSByZXF1ZXN0ICh0aGlzIG1heSByYWlzZSBhbiBleGNlcHRpb24pXG5cdFx0XHRcdFx0eGhyLnNlbmQoIG9wdGlvbnMuaGFzQ29udGVudCAmJiBvcHRpb25zLmRhdGEgfHwgbnVsbCApO1xuXHRcdFx0XHR9IGNhdGNoICggZSApIHtcblxuXHRcdFx0XHRcdC8vIHRyYWMtMTQ2ODM6IE9ubHkgcmV0aHJvdyBpZiB0aGlzIGhhc24ndCBiZWVuIG5vdGlmaWVkIGFzIGFuIGVycm9yIHlldFxuXHRcdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSxcblxuXHRcdFx0YWJvcnQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9XG59ICk7XG5cblxuXG5cbi8vIFByZXZlbnQgYXV0by1leGVjdXRpb24gb2Ygc2NyaXB0cyB3aGVuIG5vIGV4cGxpY2l0IGRhdGFUeXBlIHdhcyBwcm92aWRlZCAoU2VlIGdoLTI0MzIpXG5qUXVlcnkuYWpheFByZWZpbHRlciggZnVuY3Rpb24oIHMgKSB7XG5cdGlmICggcy5jcm9zc0RvbWFpbiApIHtcblx0XHRzLmNvbnRlbnRzLnNjcmlwdCA9IGZhbHNlO1xuXHR9XG59ICk7XG5cbi8vIEluc3RhbGwgc2NyaXB0IGRhdGFUeXBlXG5qUXVlcnkuYWpheFNldHVwKCB7XG5cdGFjY2VwdHM6IHtcblx0XHRzY3JpcHQ6IFwidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCBcIiArXG5cdFx0XHRcImFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdFwiXG5cdH0sXG5cdGNvbnRlbnRzOiB7XG5cdFx0c2NyaXB0OiAvXFxiKD86amF2YXxlY21hKXNjcmlwdFxcYi9cblx0fSxcblx0Y29udmVydGVyczoge1xuXHRcdFwidGV4dCBzY3JpcHRcIjogZnVuY3Rpb24oIHRleHQgKSB7XG5cdFx0XHRqUXVlcnkuZ2xvYmFsRXZhbCggdGV4dCApO1xuXHRcdFx0cmV0dXJuIHRleHQ7XG5cdFx0fVxuXHR9XG59ICk7XG5cbi8vIEhhbmRsZSBjYWNoZSdzIHNwZWNpYWwgY2FzZSBhbmQgY3Jvc3NEb21haW5cbmpRdWVyeS5hamF4UHJlZmlsdGVyKCBcInNjcmlwdFwiLCBmdW5jdGlvbiggcyApIHtcblx0aWYgKCBzLmNhY2hlID09PSB1bmRlZmluZWQgKSB7XG5cdFx0cy5jYWNoZSA9IGZhbHNlO1xuXHR9XG5cdGlmICggcy5jcm9zc0RvbWFpbiApIHtcblx0XHRzLnR5cGUgPSBcIkdFVFwiO1xuXHR9XG59ICk7XG5cbi8vIEJpbmQgc2NyaXB0IHRhZyBoYWNrIHRyYW5zcG9ydFxualF1ZXJ5LmFqYXhUcmFuc3BvcnQoIFwic2NyaXB0XCIsIGZ1bmN0aW9uKCBzICkge1xuXG5cdC8vIFRoaXMgdHJhbnNwb3J0IG9ubHkgZGVhbHMgd2l0aCBjcm9zcyBkb21haW4gb3IgZm9yY2VkLWJ5LWF0dHJzIHJlcXVlc3RzXG5cdGlmICggcy5jcm9zc0RvbWFpbiB8fCBzLnNjcmlwdEF0dHJzICkge1xuXHRcdHZhciBzY3JpcHQsIGNhbGxiYWNrO1xuXHRcdHJldHVybiB7XG5cdFx0XHRzZW5kOiBmdW5jdGlvbiggXywgY29tcGxldGUgKSB7XG5cdFx0XHRcdHNjcmlwdCA9IGpRdWVyeSggXCI8c2NyaXB0PlwiIClcblx0XHRcdFx0XHQuYXR0ciggcy5zY3JpcHRBdHRycyB8fCB7fSApXG5cdFx0XHRcdFx0LnByb3AoIHsgY2hhcnNldDogcy5zY3JpcHRDaGFyc2V0LCBzcmM6IHMudXJsIH0gKVxuXHRcdFx0XHRcdC5vbiggXCJsb2FkIGVycm9yXCIsIGNhbGxiYWNrID0gZnVuY3Rpb24oIGV2dCApIHtcblx0XHRcdFx0XHRcdHNjcmlwdC5yZW1vdmUoKTtcblx0XHRcdFx0XHRcdGNhbGxiYWNrID0gbnVsbDtcblx0XHRcdFx0XHRcdGlmICggZXZ0ICkge1xuXHRcdFx0XHRcdFx0XHRjb21wbGV0ZSggZXZ0LnR5cGUgPT09IFwiZXJyb3JcIiA/IDQwNCA6IDIwMCwgZXZ0LnR5cGUgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9ICk7XG5cblx0XHRcdFx0Ly8gVXNlIG5hdGl2ZSBET00gbWFuaXB1bGF0aW9uIHRvIGF2b2lkIG91ciBkb21NYW5pcCBBSkFYIHRyaWNrZXJ5XG5cdFx0XHRcdGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoIHNjcmlwdFsgMCBdICk7XG5cdFx0XHR9LFxuXHRcdFx0YWJvcnQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9XG59ICk7XG5cblxuXG5cbnZhciBvbGRDYWxsYmFja3MgPSBbXSxcblx0cmpzb25wID0gLyg9KVxcPyg/PSZ8JCl8XFw/XFw/LztcblxuLy8gRGVmYXVsdCBqc29ucCBzZXR0aW5nc1xualF1ZXJ5LmFqYXhTZXR1cCgge1xuXHRqc29ucDogXCJjYWxsYmFja1wiLFxuXHRqc29ucENhbGxiYWNrOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgY2FsbGJhY2sgPSBvbGRDYWxsYmFja3MucG9wKCkgfHwgKCBqUXVlcnkuZXhwYW5kbyArIFwiX1wiICsgKCBub25jZS5ndWlkKysgKSApO1xuXHRcdHRoaXNbIGNhbGxiYWNrIF0gPSB0cnVlO1xuXHRcdHJldHVybiBjYWxsYmFjaztcblx0fVxufSApO1xuXG4vLyBEZXRlY3QsIG5vcm1hbGl6ZSBvcHRpb25zIGFuZCBpbnN0YWxsIGNhbGxiYWNrcyBmb3IganNvbnAgcmVxdWVzdHNcbmpRdWVyeS5hamF4UHJlZmlsdGVyKCBcImpzb24ganNvbnBcIiwgZnVuY3Rpb24oIHMsIG9yaWdpbmFsU2V0dGluZ3MsIGpxWEhSICkge1xuXG5cdHZhciBjYWxsYmFja05hbWUsIG92ZXJ3cml0dGVuLCByZXNwb25zZUNvbnRhaW5lcixcblx0XHRqc29uUHJvcCA9IHMuanNvbnAgIT09IGZhbHNlICYmICggcmpzb25wLnRlc3QoIHMudXJsICkgP1xuXHRcdFx0XCJ1cmxcIiA6XG5cdFx0XHR0eXBlb2Ygcy5kYXRhID09PSBcInN0cmluZ1wiICYmXG5cdFx0XHRcdCggcy5jb250ZW50VHlwZSB8fCBcIlwiIClcblx0XHRcdFx0XHQuaW5kZXhPZiggXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIiApID09PSAwICYmXG5cdFx0XHRcdHJqc29ucC50ZXN0KCBzLmRhdGEgKSAmJiBcImRhdGFcIlxuXHRcdCk7XG5cblx0Ly8gSGFuZGxlIGlmZiB0aGUgZXhwZWN0ZWQgZGF0YSB0eXBlIGlzIFwianNvbnBcIiBvciB3ZSBoYXZlIGEgcGFyYW1ldGVyIHRvIHNldFxuXHRpZiAoIGpzb25Qcm9wIHx8IHMuZGF0YVR5cGVzWyAwIF0gPT09IFwianNvbnBcIiApIHtcblxuXHRcdC8vIEdldCBjYWxsYmFjayBuYW1lLCByZW1lbWJlcmluZyBwcmVleGlzdGluZyB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggaXRcblx0XHRjYWxsYmFja05hbWUgPSBzLmpzb25wQ2FsbGJhY2sgPSBpc0Z1bmN0aW9uKCBzLmpzb25wQ2FsbGJhY2sgKSA/XG5cdFx0XHRzLmpzb25wQ2FsbGJhY2soKSA6XG5cdFx0XHRzLmpzb25wQ2FsbGJhY2s7XG5cblx0XHQvLyBJbnNlcnQgY2FsbGJhY2sgaW50byB1cmwgb3IgZm9ybSBkYXRhXG5cdFx0aWYgKCBqc29uUHJvcCApIHtcblx0XHRcdHNbIGpzb25Qcm9wIF0gPSBzWyBqc29uUHJvcCBdLnJlcGxhY2UoIHJqc29ucCwgXCIkMVwiICsgY2FsbGJhY2tOYW1lICk7XG5cdFx0fSBlbHNlIGlmICggcy5qc29ucCAhPT0gZmFsc2UgKSB7XG5cdFx0XHRzLnVybCArPSAoIHJxdWVyeS50ZXN0KCBzLnVybCApID8gXCImXCIgOiBcIj9cIiApICsgcy5qc29ucCArIFwiPVwiICsgY2FsbGJhY2tOYW1lO1xuXHRcdH1cblxuXHRcdC8vIFVzZSBkYXRhIGNvbnZlcnRlciB0byByZXRyaWV2ZSBqc29uIGFmdGVyIHNjcmlwdCBleGVjdXRpb25cblx0XHRzLmNvbnZlcnRlcnNbIFwic2NyaXB0IGpzb25cIiBdID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoICFyZXNwb25zZUNvbnRhaW5lciApIHtcblx0XHRcdFx0alF1ZXJ5LmVycm9yKCBjYWxsYmFja05hbWUgKyBcIiB3YXMgbm90IGNhbGxlZFwiICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVzcG9uc2VDb250YWluZXJbIDAgXTtcblx0XHR9O1xuXG5cdFx0Ly8gRm9yY2UganNvbiBkYXRhVHlwZVxuXHRcdHMuZGF0YVR5cGVzWyAwIF0gPSBcImpzb25cIjtcblxuXHRcdC8vIEluc3RhbGwgY2FsbGJhY2tcblx0XHRvdmVyd3JpdHRlbiA9IHdpbmRvd1sgY2FsbGJhY2tOYW1lIF07XG5cdFx0d2luZG93WyBjYWxsYmFja05hbWUgXSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0cmVzcG9uc2VDb250YWluZXIgPSBhcmd1bWVudHM7XG5cdFx0fTtcblxuXHRcdC8vIENsZWFuLXVwIGZ1bmN0aW9uIChmaXJlcyBhZnRlciBjb252ZXJ0ZXJzKVxuXHRcdGpxWEhSLmFsd2F5cyggZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8vIElmIHByZXZpb3VzIHZhbHVlIGRpZG4ndCBleGlzdCAtIHJlbW92ZSBpdFxuXHRcdFx0aWYgKCBvdmVyd3JpdHRlbiA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRqUXVlcnkoIHdpbmRvdyApLnJlbW92ZVByb3AoIGNhbGxiYWNrTmFtZSApO1xuXG5cdFx0XHQvLyBPdGhlcndpc2UgcmVzdG9yZSBwcmVleGlzdGluZyB2YWx1ZVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0d2luZG93WyBjYWxsYmFja05hbWUgXSA9IG92ZXJ3cml0dGVuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTYXZlIGJhY2sgYXMgZnJlZVxuXHRcdFx0aWYgKCBzWyBjYWxsYmFja05hbWUgXSApIHtcblxuXHRcdFx0XHQvLyBNYWtlIHN1cmUgdGhhdCByZS11c2luZyB0aGUgb3B0aW9ucyBkb2Vzbid0IHNjcmV3IHRoaW5ncyBhcm91bmRcblx0XHRcdFx0cy5qc29ucENhbGxiYWNrID0gb3JpZ2luYWxTZXR0aW5ncy5qc29ucENhbGxiYWNrO1xuXG5cdFx0XHRcdC8vIFNhdmUgdGhlIGNhbGxiYWNrIG5hbWUgZm9yIGZ1dHVyZSB1c2Vcblx0XHRcdFx0b2xkQ2FsbGJhY2tzLnB1c2goIGNhbGxiYWNrTmFtZSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDYWxsIGlmIGl0IHdhcyBhIGZ1bmN0aW9uIGFuZCB3ZSBoYXZlIGEgcmVzcG9uc2Vcblx0XHRcdGlmICggcmVzcG9uc2VDb250YWluZXIgJiYgaXNGdW5jdGlvbiggb3ZlcndyaXR0ZW4gKSApIHtcblx0XHRcdFx0b3ZlcndyaXR0ZW4oIHJlc3BvbnNlQ29udGFpbmVyWyAwIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0cmVzcG9uc2VDb250YWluZXIgPSBvdmVyd3JpdHRlbiA9IHVuZGVmaW5lZDtcblx0XHR9ICk7XG5cblx0XHQvLyBEZWxlZ2F0ZSB0byBzY3JpcHRcblx0XHRyZXR1cm4gXCJzY3JpcHRcIjtcblx0fVxufSApO1xuXG5cblxuXG4vLyBTdXBwb3J0OiBTYWZhcmkgOCBvbmx5XG4vLyBJbiBTYWZhcmkgOCBkb2N1bWVudHMgY3JlYXRlZCB2aWEgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50XG4vLyBjb2xsYXBzZSBzaWJsaW5nIGZvcm1zOiB0aGUgc2Vjb25kIG9uZSBiZWNvbWVzIGEgY2hpbGQgb2YgdGhlIGZpcnN0IG9uZS5cbi8vIEJlY2F1c2Ugb2YgdGhhdCwgdGhpcyBzZWN1cml0eSBtZWFzdXJlIGhhcyB0byBiZSBkaXNhYmxlZCBpbiBTYWZhcmkgOC5cbi8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzczMzdcbnN1cHBvcnQuY3JlYXRlSFRNTERvY3VtZW50ID0gKCBmdW5jdGlvbigpIHtcblx0dmFyIGJvZHkgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIFwiXCIgKS5ib2R5O1xuXHRib2R5LmlubmVySFRNTCA9IFwiPGZvcm0+PC9mb3JtPjxmb3JtPjwvZm9ybT5cIjtcblx0cmV0dXJuIGJvZHkuY2hpbGROb2Rlcy5sZW5ndGggPT09IDI7XG59ICkoKTtcblxuXG4vLyBBcmd1bWVudCBcImRhdGFcIiBzaG91bGQgYmUgc3RyaW5nIG9mIGh0bWxcbi8vIGNvbnRleHQgKG9wdGlvbmFsKTogSWYgc3BlY2lmaWVkLCB0aGUgZnJhZ21lbnQgd2lsbCBiZSBjcmVhdGVkIGluIHRoaXMgY29udGV4dCxcbi8vIGRlZmF1bHRzIHRvIGRvY3VtZW50XG4vLyBrZWVwU2NyaXB0cyAob3B0aW9uYWwpOiBJZiB0cnVlLCB3aWxsIGluY2x1ZGUgc2NyaXB0cyBwYXNzZWQgaW4gdGhlIGh0bWwgc3RyaW5nXG5qUXVlcnkucGFyc2VIVE1MID0gZnVuY3Rpb24oIGRhdGEsIGNvbnRleHQsIGtlZXBTY3JpcHRzICkge1xuXHRpZiAoIHR5cGVvZiBkYXRhICE9PSBcInN0cmluZ1wiICkge1xuXHRcdHJldHVybiBbXTtcblx0fVxuXHRpZiAoIHR5cGVvZiBjb250ZXh0ID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRrZWVwU2NyaXB0cyA9IGNvbnRleHQ7XG5cdFx0Y29udGV4dCA9IGZhbHNlO1xuXHR9XG5cblx0dmFyIGJhc2UsIHBhcnNlZCwgc2NyaXB0cztcblxuXHRpZiAoICFjb250ZXh0ICkge1xuXG5cdFx0Ly8gU3RvcCBzY3JpcHRzIG9yIGlubGluZSBldmVudCBoYW5kbGVycyBmcm9tIGJlaW5nIGV4ZWN1dGVkIGltbWVkaWF0ZWx5XG5cdFx0Ly8gYnkgdXNpbmcgZG9jdW1lbnQuaW1wbGVtZW50YXRpb25cblx0XHRpZiAoIHN1cHBvcnQuY3JlYXRlSFRNTERvY3VtZW50ICkge1xuXHRcdFx0Y29udGV4dCA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCggXCJcIiApO1xuXG5cdFx0XHQvLyBTZXQgdGhlIGJhc2UgaHJlZiBmb3IgdGhlIGNyZWF0ZWQgZG9jdW1lbnRcblx0XHRcdC8vIHNvIGFueSBwYXJzZWQgZWxlbWVudHMgd2l0aCBVUkxzXG5cdFx0XHQvLyBhcmUgYmFzZWQgb24gdGhlIGRvY3VtZW50J3MgVVJMIChnaC0yOTY1KVxuXHRcdFx0YmFzZSA9IGNvbnRleHQuY3JlYXRlRWxlbWVudCggXCJiYXNlXCIgKTtcblx0XHRcdGJhc2UuaHJlZiA9IGRvY3VtZW50LmxvY2F0aW9uLmhyZWY7XG5cdFx0XHRjb250ZXh0LmhlYWQuYXBwZW5kQ2hpbGQoIGJhc2UgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29udGV4dCA9IGRvY3VtZW50O1xuXHRcdH1cblx0fVxuXG5cdHBhcnNlZCA9IHJzaW5nbGVUYWcuZXhlYyggZGF0YSApO1xuXHRzY3JpcHRzID0gIWtlZXBTY3JpcHRzICYmIFtdO1xuXG5cdC8vIFNpbmdsZSB0YWdcblx0aWYgKCBwYXJzZWQgKSB7XG5cdFx0cmV0dXJuIFsgY29udGV4dC5jcmVhdGVFbGVtZW50KCBwYXJzZWRbIDEgXSApIF07XG5cdH1cblxuXHRwYXJzZWQgPSBidWlsZEZyYWdtZW50KCBbIGRhdGEgXSwgY29udGV4dCwgc2NyaXB0cyApO1xuXG5cdGlmICggc2NyaXB0cyAmJiBzY3JpcHRzLmxlbmd0aCApIHtcblx0XHRqUXVlcnkoIHNjcmlwdHMgKS5yZW1vdmUoKTtcblx0fVxuXG5cdHJldHVybiBqUXVlcnkubWVyZ2UoIFtdLCBwYXJzZWQuY2hpbGROb2RlcyApO1xufTtcblxuXG4vKipcbiAqIExvYWQgYSB1cmwgaW50byBhIHBhZ2VcbiAqL1xualF1ZXJ5LmZuLmxvYWQgPSBmdW5jdGlvbiggdXJsLCBwYXJhbXMsIGNhbGxiYWNrICkge1xuXHR2YXIgc2VsZWN0b3IsIHR5cGUsIHJlc3BvbnNlLFxuXHRcdHNlbGYgPSB0aGlzLFxuXHRcdG9mZiA9IHVybC5pbmRleE9mKCBcIiBcIiApO1xuXG5cdGlmICggb2ZmID4gLTEgKSB7XG5cdFx0c2VsZWN0b3IgPSBzdHJpcEFuZENvbGxhcHNlKCB1cmwuc2xpY2UoIG9mZiApICk7XG5cdFx0dXJsID0gdXJsLnNsaWNlKCAwLCBvZmYgKTtcblx0fVxuXG5cdC8vIElmIGl0J3MgYSBmdW5jdGlvblxuXHRpZiAoIGlzRnVuY3Rpb24oIHBhcmFtcyApICkge1xuXG5cdFx0Ly8gV2UgYXNzdW1lIHRoYXQgaXQncyB0aGUgY2FsbGJhY2tcblx0XHRjYWxsYmFjayA9IHBhcmFtcztcblx0XHRwYXJhbXMgPSB1bmRlZmluZWQ7XG5cblx0Ly8gT3RoZXJ3aXNlLCBidWlsZCBhIHBhcmFtIHN0cmluZ1xuXHR9IGVsc2UgaWYgKCBwYXJhbXMgJiYgdHlwZW9mIHBhcmFtcyA9PT0gXCJvYmplY3RcIiApIHtcblx0XHR0eXBlID0gXCJQT1NUXCI7XG5cdH1cblxuXHQvLyBJZiB3ZSBoYXZlIGVsZW1lbnRzIHRvIG1vZGlmeSwgbWFrZSB0aGUgcmVxdWVzdFxuXHRpZiAoIHNlbGYubGVuZ3RoID4gMCApIHtcblx0XHRqUXVlcnkuYWpheCgge1xuXHRcdFx0dXJsOiB1cmwsXG5cblx0XHRcdC8vIElmIFwidHlwZVwiIHZhcmlhYmxlIGlzIHVuZGVmaW5lZCwgdGhlbiBcIkdFVFwiIG1ldGhvZCB3aWxsIGJlIHVzZWQuXG5cdFx0XHQvLyBNYWtlIHZhbHVlIG9mIHRoaXMgZmllbGQgZXhwbGljaXQgc2luY2Vcblx0XHRcdC8vIHVzZXIgY2FuIG92ZXJyaWRlIGl0IHRocm91Z2ggYWpheFNldHVwIG1ldGhvZFxuXHRcdFx0dHlwZTogdHlwZSB8fCBcIkdFVFwiLFxuXHRcdFx0ZGF0YVR5cGU6IFwiaHRtbFwiLFxuXHRcdFx0ZGF0YTogcGFyYW1zXG5cdFx0fSApLmRvbmUoIGZ1bmN0aW9uKCByZXNwb25zZVRleHQgKSB7XG5cblx0XHRcdC8vIFNhdmUgcmVzcG9uc2UgZm9yIHVzZSBpbiBjb21wbGV0ZSBjYWxsYmFja1xuXHRcdFx0cmVzcG9uc2UgPSBhcmd1bWVudHM7XG5cblx0XHRcdHNlbGYuaHRtbCggc2VsZWN0b3IgP1xuXG5cdFx0XHRcdC8vIElmIGEgc2VsZWN0b3Igd2FzIHNwZWNpZmllZCwgbG9jYXRlIHRoZSByaWdodCBlbGVtZW50cyBpbiBhIGR1bW15IGRpdlxuXHRcdFx0XHQvLyBFeGNsdWRlIHNjcmlwdHMgdG8gYXZvaWQgSUUgJ1Blcm1pc3Npb24gRGVuaWVkJyBlcnJvcnNcblx0XHRcdFx0alF1ZXJ5KCBcIjxkaXY+XCIgKS5hcHBlbmQoIGpRdWVyeS5wYXJzZUhUTUwoIHJlc3BvbnNlVGV4dCApICkuZmluZCggc2VsZWN0b3IgKSA6XG5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlIHVzZSB0aGUgZnVsbCByZXN1bHRcblx0XHRcdFx0cmVzcG9uc2VUZXh0ICk7XG5cblx0XHQvLyBJZiB0aGUgcmVxdWVzdCBzdWNjZWVkcywgdGhpcyBmdW5jdGlvbiBnZXRzIFwiZGF0YVwiLCBcInN0YXR1c1wiLCBcImpxWEhSXCJcblx0XHQvLyBidXQgdGhleSBhcmUgaWdub3JlZCBiZWNhdXNlIHJlc3BvbnNlIHdhcyBzZXQgYWJvdmUuXG5cdFx0Ly8gSWYgaXQgZmFpbHMsIHRoaXMgZnVuY3Rpb24gZ2V0cyBcImpxWEhSXCIsIFwic3RhdHVzXCIsIFwiZXJyb3JcIlxuXHRcdH0gKS5hbHdheXMoIGNhbGxiYWNrICYmIGZ1bmN0aW9uKCBqcVhIUiwgc3RhdHVzICkge1xuXHRcdFx0c2VsZi5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0Y2FsbGJhY2suYXBwbHkoIHRoaXMsIHJlc3BvbnNlIHx8IFsganFYSFIucmVzcG9uc2VUZXh0LCBzdGF0dXMsIGpxWEhSIF0gKTtcblx0XHRcdH0gKTtcblx0XHR9ICk7XG5cdH1cblxuXHRyZXR1cm4gdGhpcztcbn07XG5cblxuXG5cbmpRdWVyeS5leHByLnBzZXVkb3MuYW5pbWF0ZWQgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0cmV0dXJuIGpRdWVyeS5ncmVwKCBqUXVlcnkudGltZXJzLCBmdW5jdGlvbiggZm4gKSB7XG5cdFx0cmV0dXJuIGVsZW0gPT09IGZuLmVsZW07XG5cdH0gKS5sZW5ndGg7XG59O1xuXG5cblxuXG5qUXVlcnkub2Zmc2V0ID0ge1xuXHRzZXRPZmZzZXQ6IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBpICkge1xuXHRcdHZhciBjdXJQb3NpdGlvbiwgY3VyTGVmdCwgY3VyQ1NTVG9wLCBjdXJUb3AsIGN1ck9mZnNldCwgY3VyQ1NTTGVmdCwgY2FsY3VsYXRlUG9zaXRpb24sXG5cdFx0XHRwb3NpdGlvbiA9IGpRdWVyeS5jc3MoIGVsZW0sIFwicG9zaXRpb25cIiApLFxuXHRcdFx0Y3VyRWxlbSA9IGpRdWVyeSggZWxlbSApLFxuXHRcdFx0cHJvcHMgPSB7fTtcblxuXHRcdC8vIFNldCBwb3NpdGlvbiBmaXJzdCwgaW4tY2FzZSB0b3AvbGVmdCBhcmUgc2V0IGV2ZW4gb24gc3RhdGljIGVsZW1cblx0XHRpZiAoIHBvc2l0aW9uID09PSBcInN0YXRpY1wiICkge1xuXHRcdFx0ZWxlbS5zdHlsZS5wb3NpdGlvbiA9IFwicmVsYXRpdmVcIjtcblx0XHR9XG5cblx0XHRjdXJPZmZzZXQgPSBjdXJFbGVtLm9mZnNldCgpO1xuXHRcdGN1ckNTU1RvcCA9IGpRdWVyeS5jc3MoIGVsZW0sIFwidG9wXCIgKTtcblx0XHRjdXJDU1NMZWZ0ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJsZWZ0XCIgKTtcblx0XHRjYWxjdWxhdGVQb3NpdGlvbiA9ICggcG9zaXRpb24gPT09IFwiYWJzb2x1dGVcIiB8fCBwb3NpdGlvbiA9PT0gXCJmaXhlZFwiICkgJiZcblx0XHRcdCggY3VyQ1NTVG9wICsgY3VyQ1NTTGVmdCApLmluZGV4T2YoIFwiYXV0b1wiICkgPiAtMTtcblxuXHRcdC8vIE5lZWQgdG8gYmUgYWJsZSB0byBjYWxjdWxhdGUgcG9zaXRpb24gaWYgZWl0aGVyXG5cdFx0Ly8gdG9wIG9yIGxlZnQgaXMgYXV0byBhbmQgcG9zaXRpb24gaXMgZWl0aGVyIGFic29sdXRlIG9yIGZpeGVkXG5cdFx0aWYgKCBjYWxjdWxhdGVQb3NpdGlvbiApIHtcblx0XHRcdGN1clBvc2l0aW9uID0gY3VyRWxlbS5wb3NpdGlvbigpO1xuXHRcdFx0Y3VyVG9wID0gY3VyUG9zaXRpb24udG9wO1xuXHRcdFx0Y3VyTGVmdCA9IGN1clBvc2l0aW9uLmxlZnQ7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y3VyVG9wID0gcGFyc2VGbG9hdCggY3VyQ1NTVG9wICkgfHwgMDtcblx0XHRcdGN1ckxlZnQgPSBwYXJzZUZsb2F0KCBjdXJDU1NMZWZ0ICkgfHwgMDtcblx0XHR9XG5cblx0XHRpZiAoIGlzRnVuY3Rpb24oIG9wdGlvbnMgKSApIHtcblxuXHRcdFx0Ly8gVXNlIGpRdWVyeS5leHRlbmQgaGVyZSB0byBhbGxvdyBtb2RpZmljYXRpb24gb2YgY29vcmRpbmF0ZXMgYXJndW1lbnQgKGdoLTE4NDgpXG5cdFx0XHRvcHRpb25zID0gb3B0aW9ucy5jYWxsKCBlbGVtLCBpLCBqUXVlcnkuZXh0ZW5kKCB7fSwgY3VyT2Zmc2V0ICkgKTtcblx0XHR9XG5cblx0XHRpZiAoIG9wdGlvbnMudG9wICE9IG51bGwgKSB7XG5cdFx0XHRwcm9wcy50b3AgPSAoIG9wdGlvbnMudG9wIC0gY3VyT2Zmc2V0LnRvcCApICsgY3VyVG9wO1xuXHRcdH1cblx0XHRpZiAoIG9wdGlvbnMubGVmdCAhPSBudWxsICkge1xuXHRcdFx0cHJvcHMubGVmdCA9ICggb3B0aW9ucy5sZWZ0IC0gY3VyT2Zmc2V0LmxlZnQgKSArIGN1ckxlZnQ7XG5cdFx0fVxuXG5cdFx0aWYgKCBcInVzaW5nXCIgaW4gb3B0aW9ucyApIHtcblx0XHRcdG9wdGlvbnMudXNpbmcuY2FsbCggZWxlbSwgcHJvcHMgKTtcblxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjdXJFbGVtLmNzcyggcHJvcHMgKTtcblx0XHR9XG5cdH1cbn07XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblxuXHQvLyBvZmZzZXQoKSByZWxhdGVzIGFuIGVsZW1lbnQncyBib3JkZXIgYm94IHRvIHRoZSBkb2N1bWVudCBvcmlnaW5cblx0b2Zmc2V0OiBmdW5jdGlvbiggb3B0aW9ucyApIHtcblxuXHRcdC8vIFByZXNlcnZlIGNoYWluaW5nIGZvciBzZXR0ZXJcblx0XHRpZiAoIGFyZ3VtZW50cy5sZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4gb3B0aW9ucyA9PT0gdW5kZWZpbmVkID9cblx0XHRcdFx0dGhpcyA6XG5cdFx0XHRcdHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5Lm9mZnNldC5zZXRPZmZzZXQoIHRoaXMsIG9wdGlvbnMsIGkgKTtcblx0XHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdHZhciByZWN0LCB3aW4sXG5cdFx0XHRlbGVtID0gdGhpc1sgMCBdO1xuXG5cdFx0aWYgKCAhZWxlbSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBSZXR1cm4gemVyb3MgZm9yIGRpc2Nvbm5lY3RlZCBhbmQgaGlkZGVuIChkaXNwbGF5OiBub25lKSBlbGVtZW50cyAoZ2gtMjMxMClcblx0XHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0XHQvLyBSdW5uaW5nIGdldEJvdW5kaW5nQ2xpZW50UmVjdCBvbiBhXG5cdFx0Ly8gZGlzY29ubmVjdGVkIG5vZGUgaW4gSUUgdGhyb3dzIGFuIGVycm9yXG5cdFx0aWYgKCAhZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCApIHtcblx0XHRcdHJldHVybiB7IHRvcDogMCwgbGVmdDogMCB9O1xuXHRcdH1cblxuXHRcdC8vIEdldCBkb2N1bWVudC1yZWxhdGl2ZSBwb3NpdGlvbiBieSBhZGRpbmcgdmlld3BvcnQgc2Nyb2xsIHRvIHZpZXdwb3J0LXJlbGF0aXZlIGdCQ1Jcblx0XHRyZWN0ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblx0XHR3aW4gPSBlbGVtLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHRvcDogcmVjdC50b3AgKyB3aW4ucGFnZVlPZmZzZXQsXG5cdFx0XHRsZWZ0OiByZWN0LmxlZnQgKyB3aW4ucGFnZVhPZmZzZXRcblx0XHR9O1xuXHR9LFxuXG5cdC8vIHBvc2l0aW9uKCkgcmVsYXRlcyBhbiBlbGVtZW50J3MgbWFyZ2luIGJveCB0byBpdHMgb2Zmc2V0IHBhcmVudCdzIHBhZGRpbmcgYm94XG5cdC8vIFRoaXMgY29ycmVzcG9uZHMgdG8gdGhlIGJlaGF2aW9yIG9mIENTUyBhYnNvbHV0ZSBwb3NpdGlvbmluZ1xuXHRwb3NpdGlvbjogZnVuY3Rpb24oKSB7XG5cdFx0aWYgKCAhdGhpc1sgMCBdICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHZhciBvZmZzZXRQYXJlbnQsIG9mZnNldCwgZG9jLFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXSxcblx0XHRcdHBhcmVudE9mZnNldCA9IHsgdG9wOiAwLCBsZWZ0OiAwIH07XG5cblx0XHQvLyBwb3NpdGlvbjpmaXhlZCBlbGVtZW50cyBhcmUgb2Zmc2V0IGZyb20gdGhlIHZpZXdwb3J0LCB3aGljaCBpdHNlbGYgYWx3YXlzIGhhcyB6ZXJvIG9mZnNldFxuXHRcdGlmICggalF1ZXJ5LmNzcyggZWxlbSwgXCJwb3NpdGlvblwiICkgPT09IFwiZml4ZWRcIiApIHtcblxuXHRcdFx0Ly8gQXNzdW1lIHBvc2l0aW9uOmZpeGVkIGltcGxpZXMgYXZhaWxhYmlsaXR5IG9mIGdldEJvdW5kaW5nQ2xpZW50UmVjdFxuXHRcdFx0b2Zmc2V0ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuXHRcdH0gZWxzZSB7XG5cdFx0XHRvZmZzZXQgPSB0aGlzLm9mZnNldCgpO1xuXG5cdFx0XHQvLyBBY2NvdW50IGZvciB0aGUgKnJlYWwqIG9mZnNldCBwYXJlbnQsIHdoaWNoIGNhbiBiZSB0aGUgZG9jdW1lbnQgb3IgaXRzIHJvb3QgZWxlbWVudFxuXHRcdFx0Ly8gd2hlbiBhIHN0YXRpY2FsbHkgcG9zaXRpb25lZCBlbGVtZW50IGlzIGlkZW50aWZpZWRcblx0XHRcdGRvYyA9IGVsZW0ub3duZXJEb2N1bWVudDtcblx0XHRcdG9mZnNldFBhcmVudCA9IGVsZW0ub2Zmc2V0UGFyZW50IHx8IGRvYy5kb2N1bWVudEVsZW1lbnQ7XG5cdFx0XHR3aGlsZSAoIG9mZnNldFBhcmVudCAmJlxuXHRcdFx0XHQoIG9mZnNldFBhcmVudCA9PT0gZG9jLmJvZHkgfHwgb2Zmc2V0UGFyZW50ID09PSBkb2MuZG9jdW1lbnRFbGVtZW50ICkgJiZcblx0XHRcdFx0alF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50LCBcInBvc2l0aW9uXCIgKSA9PT0gXCJzdGF0aWNcIiApIHtcblxuXHRcdFx0XHRvZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQucGFyZW50Tm9kZTtcblx0XHRcdH1cblx0XHRcdGlmICggb2Zmc2V0UGFyZW50ICYmIG9mZnNldFBhcmVudCAhPT0gZWxlbSAmJiBvZmZzZXRQYXJlbnQubm9kZVR5cGUgPT09IDEgKSB7XG5cblx0XHRcdFx0Ly8gSW5jb3Jwb3JhdGUgYm9yZGVycyBpbnRvIGl0cyBvZmZzZXQsIHNpbmNlIHRoZXkgYXJlIG91dHNpZGUgaXRzIGNvbnRlbnQgb3JpZ2luXG5cdFx0XHRcdHBhcmVudE9mZnNldCA9IGpRdWVyeSggb2Zmc2V0UGFyZW50ICkub2Zmc2V0KCk7XG5cdFx0XHRcdHBhcmVudE9mZnNldC50b3AgKz0galF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50LCBcImJvcmRlclRvcFdpZHRoXCIsIHRydWUgKTtcblx0XHRcdFx0cGFyZW50T2Zmc2V0LmxlZnQgKz0galF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50LCBcImJvcmRlckxlZnRXaWR0aFwiLCB0cnVlICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gU3VidHJhY3QgcGFyZW50IG9mZnNldHMgYW5kIGVsZW1lbnQgbWFyZ2luc1xuXHRcdHJldHVybiB7XG5cdFx0XHR0b3A6IG9mZnNldC50b3AgLSBwYXJlbnRPZmZzZXQudG9wIC0galF1ZXJ5LmNzcyggZWxlbSwgXCJtYXJnaW5Ub3BcIiwgdHJ1ZSApLFxuXHRcdFx0bGVmdDogb2Zmc2V0LmxlZnQgLSBwYXJlbnRPZmZzZXQubGVmdCAtIGpRdWVyeS5jc3MoIGVsZW0sIFwibWFyZ2luTGVmdFwiLCB0cnVlIClcblx0XHR9O1xuXHR9LFxuXG5cdC8vIFRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGRvY3VtZW50RWxlbWVudCBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuXHQvLyAxKSBGb3IgdGhlIGVsZW1lbnQgaW5zaWRlIHRoZSBpZnJhbWUgd2l0aG91dCBvZmZzZXRQYXJlbnQsIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuXG5cdC8vICAgIGRvY3VtZW50RWxlbWVudCBvZiB0aGUgcGFyZW50IHdpbmRvd1xuXHQvLyAyKSBGb3IgdGhlIGhpZGRlbiBvciBkZXRhY2hlZCBlbGVtZW50XG5cdC8vIDMpIEZvciBib2R5IG9yIGh0bWwgZWxlbWVudCwgaS5lLiBpbiBjYXNlIG9mIHRoZSBodG1sIG5vZGUgLSBpdCB3aWxsIHJldHVybiBpdHNlbGZcblx0Ly9cblx0Ly8gYnV0IHRob3NlIGV4Y2VwdGlvbnMgd2VyZSBuZXZlciBwcmVzZW50ZWQgYXMgYSByZWFsIGxpZmUgdXNlLWNhc2VzXG5cdC8vIGFuZCBtaWdodCBiZSBjb25zaWRlcmVkIGFzIG1vcmUgcHJlZmVyYWJsZSByZXN1bHRzLlxuXHQvL1xuXHQvLyBUaGlzIGxvZ2ljLCBob3dldmVyLCBpcyBub3QgZ3VhcmFudGVlZCBhbmQgY2FuIGNoYW5nZSBhdCBhbnkgcG9pbnQgaW4gdGhlIGZ1dHVyZVxuXHRvZmZzZXRQYXJlbnQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLm1hcCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgb2Zmc2V0UGFyZW50ID0gdGhpcy5vZmZzZXRQYXJlbnQ7XG5cblx0XHRcdHdoaWxlICggb2Zmc2V0UGFyZW50ICYmIGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgXCJwb3NpdGlvblwiICkgPT09IFwic3RhdGljXCIgKSB7XG5cdFx0XHRcdG9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVudC5vZmZzZXRQYXJlbnQ7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZG9jdW1lbnRFbGVtZW50O1xuXHRcdH0gKTtcblx0fVxufSApO1xuXG4vLyBDcmVhdGUgc2Nyb2xsTGVmdCBhbmQgc2Nyb2xsVG9wIG1ldGhvZHNcbmpRdWVyeS5lYWNoKCB7IHNjcm9sbExlZnQ6IFwicGFnZVhPZmZzZXRcIiwgc2Nyb2xsVG9wOiBcInBhZ2VZT2Zmc2V0XCIgfSwgZnVuY3Rpb24oIG1ldGhvZCwgcHJvcCApIHtcblx0dmFyIHRvcCA9IFwicGFnZVlPZmZzZXRcIiA9PT0gcHJvcDtcblxuXHRqUXVlcnkuZm5bIG1ldGhvZCBdID0gZnVuY3Rpb24oIHZhbCApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgbWV0aG9kLCB2YWwgKSB7XG5cblx0XHRcdC8vIENvYWxlc2NlIGRvY3VtZW50cyBhbmQgd2luZG93c1xuXHRcdFx0dmFyIHdpbjtcblx0XHRcdGlmICggaXNXaW5kb3coIGVsZW0gKSApIHtcblx0XHRcdFx0d2luID0gZWxlbTtcblx0XHRcdH0gZWxzZSBpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdHdpbiA9IGVsZW0uZGVmYXVsdFZpZXc7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggdmFsID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdHJldHVybiB3aW4gPyB3aW5bIHByb3AgXSA6IGVsZW1bIG1ldGhvZCBdO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHdpbiApIHtcblx0XHRcdFx0d2luLnNjcm9sbFRvKFxuXHRcdFx0XHRcdCF0b3AgPyB2YWwgOiB3aW4ucGFnZVhPZmZzZXQsXG5cdFx0XHRcdFx0dG9wID8gdmFsIDogd2luLnBhZ2VZT2Zmc2V0XG5cdFx0XHRcdCk7XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGVsZW1bIG1ldGhvZCBdID0gdmFsO1xuXHRcdFx0fVxuXHRcdH0sIG1ldGhvZCwgdmFsLCBhcmd1bWVudHMubGVuZ3RoICk7XG5cdH07XG59ICk7XG5cbi8vIFN1cHBvcnQ6IFNhZmFyaSA8PTcgLSA5LjEsIENocm9tZSA8PTM3IC0gNDlcbi8vIEFkZCB0aGUgdG9wL2xlZnQgY3NzSG9va3MgdXNpbmcgalF1ZXJ5LmZuLnBvc2l0aW9uXG4vLyBXZWJraXQgYnVnOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkwODRcbi8vIEJsaW5rIGJ1ZzogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NTg5MzQ3XG4vLyBnZXRDb21wdXRlZFN0eWxlIHJldHVybnMgcGVyY2VudCB3aGVuIHNwZWNpZmllZCBmb3IgdG9wL2xlZnQvYm90dG9tL3JpZ2h0O1xuLy8gcmF0aGVyIHRoYW4gbWFrZSB0aGUgY3NzIG1vZHVsZSBkZXBlbmQgb24gdGhlIG9mZnNldCBtb2R1bGUsIGp1c3QgY2hlY2sgZm9yIGl0IGhlcmVcbmpRdWVyeS5lYWNoKCBbIFwidG9wXCIsIFwibGVmdFwiIF0sIGZ1bmN0aW9uKCBfaSwgcHJvcCApIHtcblx0alF1ZXJ5LmNzc0hvb2tzWyBwcm9wIF0gPSBhZGRHZXRIb29rSWYoIHN1cHBvcnQucGl4ZWxQb3NpdGlvbixcblx0XHRmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XG5cdFx0XHRpZiAoIGNvbXB1dGVkICkge1xuXHRcdFx0XHRjb21wdXRlZCA9IGN1ckNTUyggZWxlbSwgcHJvcCApO1xuXG5cdFx0XHRcdC8vIElmIGN1ckNTUyByZXR1cm5zIHBlcmNlbnRhZ2UsIGZhbGxiYWNrIHRvIG9mZnNldFxuXHRcdFx0XHRyZXR1cm4gcm51bW5vbnB4LnRlc3QoIGNvbXB1dGVkICkgP1xuXHRcdFx0XHRcdGpRdWVyeSggZWxlbSApLnBvc2l0aW9uKClbIHByb3AgXSArIFwicHhcIiA6XG5cdFx0XHRcdFx0Y29tcHV0ZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXHQpO1xufSApO1xuXG5cbi8vIENyZWF0ZSBpbm5lckhlaWdodCwgaW5uZXJXaWR0aCwgaGVpZ2h0LCB3aWR0aCwgb3V0ZXJIZWlnaHQgYW5kIG91dGVyV2lkdGggbWV0aG9kc1xualF1ZXJ5LmVhY2goIHsgSGVpZ2h0OiBcImhlaWdodFwiLCBXaWR0aDogXCJ3aWR0aFwiIH0sIGZ1bmN0aW9uKCBuYW1lLCB0eXBlICkge1xuXHRqUXVlcnkuZWFjaCgge1xuXHRcdHBhZGRpbmc6IFwiaW5uZXJcIiArIG5hbWUsXG5cdFx0Y29udGVudDogdHlwZSxcblx0XHRcIlwiOiBcIm91dGVyXCIgKyBuYW1lXG5cdH0sIGZ1bmN0aW9uKCBkZWZhdWx0RXh0cmEsIGZ1bmNOYW1lICkge1xuXG5cdFx0Ly8gTWFyZ2luIGlzIG9ubHkgZm9yIG91dGVySGVpZ2h0LCBvdXRlcldpZHRoXG5cdFx0alF1ZXJ5LmZuWyBmdW5jTmFtZSBdID0gZnVuY3Rpb24oIG1hcmdpbiwgdmFsdWUgKSB7XG5cdFx0XHR2YXIgY2hhaW5hYmxlID0gYXJndW1lbnRzLmxlbmd0aCAmJiAoIGRlZmF1bHRFeHRyYSB8fCB0eXBlb2YgbWFyZ2luICE9PSBcImJvb2xlYW5cIiApLFxuXHRcdFx0XHRleHRyYSA9IGRlZmF1bHRFeHRyYSB8fCAoIG1hcmdpbiA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gdHJ1ZSA/IFwibWFyZ2luXCIgOiBcImJvcmRlclwiICk7XG5cblx0XHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCB2YWx1ZSApIHtcblx0XHRcdFx0dmFyIGRvYztcblxuXHRcdFx0XHRpZiAoIGlzV2luZG93KCBlbGVtICkgKSB7XG5cblx0XHRcdFx0XHQvLyAkKCB3aW5kb3cgKS5vdXRlcldpZHRoL0hlaWdodCByZXR1cm4gdy9oIGluY2x1ZGluZyBzY3JvbGxiYXJzIChnaC0xNzI5KVxuXHRcdFx0XHRcdHJldHVybiBmdW5jTmFtZS5pbmRleE9mKCBcIm91dGVyXCIgKSA9PT0gMCA/XG5cdFx0XHRcdFx0XHRlbGVtWyBcImlubmVyXCIgKyBuYW1lIF0gOlxuXHRcdFx0XHRcdFx0ZWxlbS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbIFwiY2xpZW50XCIgKyBuYW1lIF07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBHZXQgZG9jdW1lbnQgd2lkdGggb3IgaGVpZ2h0XG5cdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0XHRkb2MgPSBlbGVtLmRvY3VtZW50RWxlbWVudDtcblxuXHRcdFx0XHRcdC8vIEVpdGhlciBzY3JvbGxbV2lkdGgvSGVpZ2h0XSBvciBvZmZzZXRbV2lkdGgvSGVpZ2h0XSBvciBjbGllbnRbV2lkdGgvSGVpZ2h0XSxcblx0XHRcdFx0XHQvLyB3aGljaGV2ZXIgaXMgZ3JlYXRlc3Rcblx0XHRcdFx0XHRyZXR1cm4gTWF0aC5tYXgoXG5cdFx0XHRcdFx0XHRlbGVtLmJvZHlbIFwic2Nyb2xsXCIgKyBuYW1lIF0sIGRvY1sgXCJzY3JvbGxcIiArIG5hbWUgXSxcblx0XHRcdFx0XHRcdGVsZW0uYm9keVsgXCJvZmZzZXRcIiArIG5hbWUgXSwgZG9jWyBcIm9mZnNldFwiICsgbmFtZSBdLFxuXHRcdFx0XHRcdFx0ZG9jWyBcImNsaWVudFwiICsgbmFtZSBdXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID9cblxuXHRcdFx0XHRcdC8vIEdldCB3aWR0aCBvciBoZWlnaHQgb24gdGhlIGVsZW1lbnQsIHJlcXVlc3RpbmcgYnV0IG5vdCBmb3JjaW5nIHBhcnNlRmxvYXRcblx0XHRcdFx0XHRqUXVlcnkuY3NzKCBlbGVtLCB0eXBlLCBleHRyYSApIDpcblxuXHRcdFx0XHRcdC8vIFNldCB3aWR0aCBvciBoZWlnaHQgb24gdGhlIGVsZW1lbnRcblx0XHRcdFx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIHR5cGUsIHZhbHVlLCBleHRyYSApO1xuXHRcdFx0fSwgdHlwZSwgY2hhaW5hYmxlID8gbWFyZ2luIDogdW5kZWZpbmVkLCBjaGFpbmFibGUgKTtcblx0XHR9O1xuXHR9ICk7XG59ICk7XG5cblxualF1ZXJ5LmVhY2goIFtcblx0XCJhamF4U3RhcnRcIixcblx0XCJhamF4U3RvcFwiLFxuXHRcImFqYXhDb21wbGV0ZVwiLFxuXHRcImFqYXhFcnJvclwiLFxuXHRcImFqYXhTdWNjZXNzXCIsXG5cdFwiYWpheFNlbmRcIlxuXSwgZnVuY3Rpb24oIF9pLCB0eXBlICkge1xuXHRqUXVlcnkuZm5bIHR5cGUgXSA9IGZ1bmN0aW9uKCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZSwgZm4gKTtcblx0fTtcbn0gKTtcblxuXG5cblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXG5cdGJpbmQ6IGZ1bmN0aW9uKCB0eXBlcywgZGF0YSwgZm4gKSB7XG5cdFx0cmV0dXJuIHRoaXMub24oIHR5cGVzLCBudWxsLCBkYXRhLCBmbiApO1xuXHR9LFxuXHR1bmJpbmQ6IGZ1bmN0aW9uKCB0eXBlcywgZm4gKSB7XG5cdFx0cmV0dXJuIHRoaXMub2ZmKCB0eXBlcywgbnVsbCwgZm4gKTtcblx0fSxcblxuXHRkZWxlZ2F0ZTogZnVuY3Rpb24oIHNlbGVjdG9yLCB0eXBlcywgZGF0YSwgZm4gKSB7XG5cdFx0cmV0dXJuIHRoaXMub24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKTtcblx0fSxcblx0dW5kZWxlZ2F0ZTogZnVuY3Rpb24oIHNlbGVjdG9yLCB0eXBlcywgZm4gKSB7XG5cblx0XHQvLyAoIG5hbWVzcGFjZSApIG9yICggc2VsZWN0b3IsIHR5cGVzIFssIGZuXSApXG5cdFx0cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgP1xuXHRcdFx0dGhpcy5vZmYoIHNlbGVjdG9yLCBcIioqXCIgKSA6XG5cdFx0XHR0aGlzLm9mZiggdHlwZXMsIHNlbGVjdG9yIHx8IFwiKipcIiwgZm4gKTtcblx0fSxcblxuXHRob3ZlcjogZnVuY3Rpb24oIGZuT3ZlciwgZm5PdXQgKSB7XG5cdFx0cmV0dXJuIHRoaXMubW91c2VlbnRlciggZm5PdmVyICkubW91c2VsZWF2ZSggZm5PdXQgfHwgZm5PdmVyICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmVhY2goXG5cdCggXCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayBcIiArXG5cdFwibW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgXCIgK1xuXHRcImNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgY29udGV4dG1lbnVcIiApLnNwbGl0KCBcIiBcIiApLFxuXHRmdW5jdGlvbiggX2ksIG5hbWUgKSB7XG5cblx0XHQvLyBIYW5kbGUgZXZlbnQgYmluZGluZ1xuXHRcdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIGRhdGEsIGZuICkge1xuXHRcdFx0cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAwID9cblx0XHRcdFx0dGhpcy5vbiggbmFtZSwgbnVsbCwgZGF0YSwgZm4gKSA6XG5cdFx0XHRcdHRoaXMudHJpZ2dlciggbmFtZSApO1xuXHRcdH07XG5cdH1cbik7XG5cblxuXG5cbi8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seVxuLy8gTWFrZSBzdXJlIHdlIHRyaW0gQk9NIGFuZCBOQlNQXG4vLyBSZXF1aXJlIHRoYXQgdGhlIFwid2hpdGVzcGFjZSBydW5cIiBzdGFydHMgZnJvbSBhIG5vbi13aGl0ZXNwYWNlXG4vLyB0byBhdm9pZCBPKE5eMikgYmVoYXZpb3Igd2hlbiB0aGUgZW5naW5lIHdvdWxkIHRyeSBtYXRjaGluZyBcIlxccyskXCIgYXQgZWFjaCBzcGFjZSBwb3NpdGlvbi5cbnZhciBydHJpbSA9IC9eW1xcc1xcdUZFRkZcXHhBMF0rfChbXlxcc1xcdUZFRkZcXHhBMF0pW1xcc1xcdUZFRkZcXHhBMF0rJC9nO1xuXG4vLyBCaW5kIGEgZnVuY3Rpb24gdG8gYSBjb250ZXh0LCBvcHRpb25hbGx5IHBhcnRpYWxseSBhcHBseWluZyBhbnlcbi8vIGFyZ3VtZW50cy5cbi8vIGpRdWVyeS5wcm94eSBpcyBkZXByZWNhdGVkIHRvIHByb21vdGUgc3RhbmRhcmRzIChzcGVjaWZpY2FsbHkgRnVuY3Rpb24jYmluZClcbi8vIEhvd2V2ZXIsIGl0IGlzIG5vdCBzbGF0ZWQgZm9yIHJlbW92YWwgYW55IHRpbWUgc29vblxualF1ZXJ5LnByb3h5ID0gZnVuY3Rpb24oIGZuLCBjb250ZXh0ICkge1xuXHR2YXIgdG1wLCBhcmdzLCBwcm94eTtcblxuXHRpZiAoIHR5cGVvZiBjb250ZXh0ID09PSBcInN0cmluZ1wiICkge1xuXHRcdHRtcCA9IGZuWyBjb250ZXh0IF07XG5cdFx0Y29udGV4dCA9IGZuO1xuXHRcdGZuID0gdG1wO1xuXHR9XG5cblx0Ly8gUXVpY2sgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIHRhcmdldCBpcyBjYWxsYWJsZSwgaW4gdGhlIHNwZWNcblx0Ly8gdGhpcyB0aHJvd3MgYSBUeXBlRXJyb3IsIGJ1dCB3ZSB3aWxsIGp1c3QgcmV0dXJuIHVuZGVmaW5lZC5cblx0aWYgKCAhaXNGdW5jdGlvbiggZm4gKSApIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0Ly8gU2ltdWxhdGVkIGJpbmRcblx0YXJncyA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50cywgMiApO1xuXHRwcm94eSA9IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBmbi5hcHBseSggY29udGV4dCB8fCB0aGlzLCBhcmdzLmNvbmNhdCggc2xpY2UuY2FsbCggYXJndW1lbnRzICkgKSApO1xuXHR9O1xuXG5cdC8vIFNldCB0aGUgZ3VpZCBvZiB1bmlxdWUgaGFuZGxlciB0byB0aGUgc2FtZSBvZiBvcmlnaW5hbCBoYW5kbGVyLCBzbyBpdCBjYW4gYmUgcmVtb3ZlZFxuXHRwcm94eS5ndWlkID0gZm4uZ3VpZCA9IGZuLmd1aWQgfHwgalF1ZXJ5Lmd1aWQrKztcblxuXHRyZXR1cm4gcHJveHk7XG59O1xuXG5qUXVlcnkuaG9sZFJlYWR5ID0gZnVuY3Rpb24oIGhvbGQgKSB7XG5cdGlmICggaG9sZCApIHtcblx0XHRqUXVlcnkucmVhZHlXYWl0Kys7XG5cdH0gZWxzZSB7XG5cdFx0alF1ZXJ5LnJlYWR5KCB0cnVlICk7XG5cdH1cbn07XG5qUXVlcnkuaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5qUXVlcnkucGFyc2VKU09OID0gSlNPTi5wYXJzZTtcbmpRdWVyeS5ub2RlTmFtZSA9IG5vZGVOYW1lO1xualF1ZXJ5LmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uO1xualF1ZXJ5LmlzV2luZG93ID0gaXNXaW5kb3c7XG5qUXVlcnkuY2FtZWxDYXNlID0gY2FtZWxDYXNlO1xualF1ZXJ5LnR5cGUgPSB0b1R5cGU7XG5cbmpRdWVyeS5ub3cgPSBEYXRlLm5vdztcblxualF1ZXJ5LmlzTnVtZXJpYyA9IGZ1bmN0aW9uKCBvYmogKSB7XG5cblx0Ly8gQXMgb2YgalF1ZXJ5IDMuMCwgaXNOdW1lcmljIGlzIGxpbWl0ZWQgdG9cblx0Ly8gc3RyaW5ncyBhbmQgbnVtYmVycyAocHJpbWl0aXZlcyBvciBvYmplY3RzKVxuXHQvLyB0aGF0IGNhbiBiZSBjb2VyY2VkIHRvIGZpbml0ZSBudW1iZXJzIChnaC0yNjYyKVxuXHR2YXIgdHlwZSA9IGpRdWVyeS50eXBlKCBvYmogKTtcblx0cmV0dXJuICggdHlwZSA9PT0gXCJudW1iZXJcIiB8fCB0eXBlID09PSBcInN0cmluZ1wiICkgJiZcblxuXHRcdC8vIHBhcnNlRmxvYXQgTmFOcyBudW1lcmljLWNhc3QgZmFsc2UgcG9zaXRpdmVzIChcIlwiKVxuXHRcdC8vIC4uLmJ1dCBtaXNpbnRlcnByZXRzIGxlYWRpbmctbnVtYmVyIHN0cmluZ3MsIHBhcnRpY3VsYXJseSBoZXggbGl0ZXJhbHMgKFwiMHguLi5cIilcblx0XHQvLyBzdWJ0cmFjdGlvbiBmb3JjZXMgaW5maW5pdGllcyB0byBOYU5cblx0XHQhaXNOYU4oIG9iaiAtIHBhcnNlRmxvYXQoIG9iaiApICk7XG59O1xuXG5qUXVlcnkudHJpbSA9IGZ1bmN0aW9uKCB0ZXh0ICkge1xuXHRyZXR1cm4gdGV4dCA9PSBudWxsID9cblx0XHRcIlwiIDpcblx0XHQoIHRleHQgKyBcIlwiICkucmVwbGFjZSggcnRyaW0sIFwiJDFcIiApO1xufTtcblxuXG5cbi8vIFJlZ2lzdGVyIGFzIGEgbmFtZWQgQU1EIG1vZHVsZSwgc2luY2UgalF1ZXJ5IGNhbiBiZSBjb25jYXRlbmF0ZWQgd2l0aCBvdGhlclxuLy8gZmlsZXMgdGhhdCBtYXkgdXNlIGRlZmluZSwgYnV0IG5vdCB2aWEgYSBwcm9wZXIgY29uY2F0ZW5hdGlvbiBzY3JpcHQgdGhhdFxuLy8gdW5kZXJzdGFuZHMgYW5vbnltb3VzIEFNRCBtb2R1bGVzLiBBIG5hbWVkIEFNRCBpcyBzYWZlc3QgYW5kIG1vc3Qgcm9idXN0XG4vLyB3YXkgdG8gcmVnaXN0ZXIuIExvd2VyY2FzZSBqcXVlcnkgaXMgdXNlZCBiZWNhdXNlIEFNRCBtb2R1bGUgbmFtZXMgYXJlXG4vLyBkZXJpdmVkIGZyb20gZmlsZSBuYW1lcywgYW5kIGpRdWVyeSBpcyBub3JtYWxseSBkZWxpdmVyZWQgaW4gYSBsb3dlcmNhc2Vcbi8vIGZpbGUgbmFtZS4gRG8gdGhpcyBhZnRlciBjcmVhdGluZyB0aGUgZ2xvYmFsIHNvIHRoYXQgaWYgYW4gQU1EIG1vZHVsZSB3YW50c1xuLy8gdG8gY2FsbCBub0NvbmZsaWN0IHRvIGhpZGUgdGhpcyB2ZXJzaW9uIG9mIGpRdWVyeSwgaXQgd2lsbCB3b3JrLlxuXG4vLyBOb3RlIHRoYXQgZm9yIG1heGltdW0gcG9ydGFiaWxpdHksIGxpYnJhcmllcyB0aGF0IGFyZSBub3QgalF1ZXJ5IHNob3VsZFxuLy8gZGVjbGFyZSB0aGVtc2VsdmVzIGFzIGFub255bW91cyBtb2R1bGVzLCBhbmQgYXZvaWQgc2V0dGluZyBhIGdsb2JhbCBpZiBhblxuLy8gQU1EIGxvYWRlciBpcyBwcmVzZW50LiBqUXVlcnkgaXMgYSBzcGVjaWFsIGNhc2UuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qcmJ1cmtlL3JlcXVpcmVqcy93aWtpL1VwZGF0aW5nLWV4aXN0aW5nLWxpYnJhcmllcyN3aWtpLWFub25cblxuaWYgKCB0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCApIHtcblx0ZGVmaW5lKCBcImpxdWVyeVwiLCBbXSwgZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGpRdWVyeTtcblx0fSApO1xufVxuXG5cblxuXG52YXJcblxuXHQvLyBNYXAgb3ZlciBqUXVlcnkgaW4gY2FzZSBvZiBvdmVyd3JpdGVcblx0X2pRdWVyeSA9IHdpbmRvdy5qUXVlcnksXG5cblx0Ly8gTWFwIG92ZXIgdGhlICQgaW4gY2FzZSBvZiBvdmVyd3JpdGVcblx0XyQgPSB3aW5kb3cuJDtcblxualF1ZXJ5Lm5vQ29uZmxpY3QgPSBmdW5jdGlvbiggZGVlcCApIHtcblx0aWYgKCB3aW5kb3cuJCA9PT0galF1ZXJ5ICkge1xuXHRcdHdpbmRvdy4kID0gXyQ7XG5cdH1cblxuXHRpZiAoIGRlZXAgJiYgd2luZG93LmpRdWVyeSA9PT0galF1ZXJ5ICkge1xuXHRcdHdpbmRvdy5qUXVlcnkgPSBfalF1ZXJ5O1xuXHR9XG5cblx0cmV0dXJuIGpRdWVyeTtcbn07XG5cbi8vIEV4cG9zZSBqUXVlcnkgYW5kICQgaWRlbnRpZmllcnMsIGV2ZW4gaW4gQU1EXG4vLyAodHJhYy03MTAyI2NvbW1lbnQ6MTAsIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5L3B1bGwvNTU3KVxuLy8gYW5kIENvbW1vbkpTIGZvciBicm93c2VyIGVtdWxhdG9ycyAodHJhYy0xMzU2NilcbmlmICggdHlwZW9mIG5vR2xvYmFsID09PSBcInVuZGVmaW5lZFwiICkge1xuXHR3aW5kb3cualF1ZXJ5ID0gd2luZG93LiQgPSBqUXVlcnk7XG59XG5cblxuXG5cbnJldHVybiBqUXVlcnk7XG59ICk7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIERhdGFWaWV3ID0gZ2V0TmF0aXZlKHJvb3QsICdEYXRhVmlldycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERhdGFWaWV3O1xuIiwidmFyIGhhc2hDbGVhciA9IHJlcXVpcmUoJy4vX2hhc2hDbGVhcicpLFxuICAgIGhhc2hEZWxldGUgPSByZXF1aXJlKCcuL19oYXNoRGVsZXRlJyksXG4gICAgaGFzaEdldCA9IHJlcXVpcmUoJy4vX2hhc2hHZXQnKSxcbiAgICBoYXNoSGFzID0gcmVxdWlyZSgnLi9faGFzaEhhcycpLFxuICAgIGhhc2hTZXQgPSByZXF1aXJlKCcuL19oYXNoU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGhhc2ggb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBIYXNoKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYEhhc2hgLlxuSGFzaC5wcm90b3R5cGUuY2xlYXIgPSBoYXNoQ2xlYXI7XG5IYXNoLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBoYXNoRGVsZXRlO1xuSGFzaC5wcm90b3R5cGUuZ2V0ID0gaGFzaEdldDtcbkhhc2gucHJvdG90eXBlLmhhcyA9IGhhc2hIYXM7XG5IYXNoLnByb3RvdHlwZS5zZXQgPSBoYXNoU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEhhc2g7XG4iLCJ2YXIgbGlzdENhY2hlQ2xlYXIgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVDbGVhcicpLFxuICAgIGxpc3RDYWNoZURlbGV0ZSA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZURlbGV0ZScpLFxuICAgIGxpc3RDYWNoZUdldCA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUdldCcpLFxuICAgIGxpc3RDYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUhhcycpLFxuICAgIGxpc3RDYWNoZVNldCA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZVNldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gbGlzdCBjYWNoZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIExpc3RDYWNoZShlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBMaXN0Q2FjaGVgLlxuTGlzdENhY2hlLnByb3RvdHlwZS5jbGVhciA9IGxpc3RDYWNoZUNsZWFyO1xuTGlzdENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBsaXN0Q2FjaGVEZWxldGU7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmdldCA9IGxpc3RDYWNoZUdldDtcbkxpc3RDYWNoZS5wcm90b3R5cGUuaGFzID0gbGlzdENhY2hlSGFzO1xuTGlzdENhY2hlLnByb3RvdHlwZS5zZXQgPSBsaXN0Q2FjaGVTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gTGlzdENhY2hlO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBNYXAgPSBnZXROYXRpdmUocm9vdCwgJ01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcDtcbiIsInZhciBtYXBDYWNoZUNsZWFyID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVDbGVhcicpLFxuICAgIG1hcENhY2hlRGVsZXRlID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVEZWxldGUnKSxcbiAgICBtYXBDYWNoZUdldCA9IHJlcXVpcmUoJy4vX21hcENhY2hlR2V0JyksXG4gICAgbWFwQ2FjaGVIYXMgPSByZXF1aXJlKCcuL19tYXBDYWNoZUhhcycpLFxuICAgIG1hcENhY2hlU2V0ID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbWFwIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIE1hcENhY2hlKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYE1hcENhY2hlYC5cbk1hcENhY2hlLnByb3RvdHlwZS5jbGVhciA9IG1hcENhY2hlQ2xlYXI7XG5NYXBDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbWFwQ2FjaGVEZWxldGU7XG5NYXBDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbWFwQ2FjaGVHZXQ7XG5NYXBDYWNoZS5wcm90b3R5cGUuaGFzID0gbWFwQ2FjaGVIYXM7XG5NYXBDYWNoZS5wcm90b3R5cGUuc2V0ID0gbWFwQ2FjaGVTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gTWFwQ2FjaGU7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFByb21pc2UgPSBnZXROYXRpdmUocm9vdCwgJ1Byb21pc2UnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBQcm9taXNlO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBTZXQgPSBnZXROYXRpdmUocm9vdCwgJ1NldCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNldDtcbiIsInZhciBNYXBDYWNoZSA9IHJlcXVpcmUoJy4vX01hcENhY2hlJyksXG4gICAgc2V0Q2FjaGVBZGQgPSByZXF1aXJlKCcuL19zZXRDYWNoZUFkZCcpLFxuICAgIHNldENhY2hlSGFzID0gcmVxdWlyZSgnLi9fc2V0Q2FjaGVIYXMnKTtcblxuLyoqXG4gKlxuICogQ3JlYXRlcyBhbiBhcnJheSBjYWNoZSBvYmplY3QgdG8gc3RvcmUgdW5pcXVlIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBTZXRDYWNoZSh2YWx1ZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMgPT0gbnVsbCA/IDAgOiB2YWx1ZXMubGVuZ3RoO1xuXG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGU7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdGhpcy5hZGQodmFsdWVzW2luZGV4XSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYFNldENhY2hlYC5cblNldENhY2hlLnByb3RvdHlwZS5hZGQgPSBTZXRDYWNoZS5wcm90b3R5cGUucHVzaCA9IHNldENhY2hlQWRkO1xuU2V0Q2FjaGUucHJvdG90eXBlLmhhcyA9IHNldENhY2hlSGFzO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNldENhY2hlO1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIHN0YWNrQ2xlYXIgPSByZXF1aXJlKCcuL19zdGFja0NsZWFyJyksXG4gICAgc3RhY2tEZWxldGUgPSByZXF1aXJlKCcuL19zdGFja0RlbGV0ZScpLFxuICAgIHN0YWNrR2V0ID0gcmVxdWlyZSgnLi9fc3RhY2tHZXQnKSxcbiAgICBzdGFja0hhcyA9IHJlcXVpcmUoJy4vX3N0YWNrSGFzJyksXG4gICAgc3RhY2tTZXQgPSByZXF1aXJlKCcuL19zdGFja1NldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzdGFjayBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBTdGFjayhlbnRyaWVzKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGUoZW50cmllcyk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYFN0YWNrYC5cblN0YWNrLnByb3RvdHlwZS5jbGVhciA9IHN0YWNrQ2xlYXI7XG5TdGFjay5wcm90b3R5cGVbJ2RlbGV0ZSddID0gc3RhY2tEZWxldGU7XG5TdGFjay5wcm90b3R5cGUuZ2V0ID0gc3RhY2tHZXQ7XG5TdGFjay5wcm90b3R5cGUuaGFzID0gc3RhY2tIYXM7XG5TdGFjay5wcm90b3R5cGUuc2V0ID0gc3RhY2tTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gU3RhY2s7XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgU3ltYm9sID0gcm9vdC5TeW1ib2w7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ltYm9sO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFVpbnQ4QXJyYXkgPSByb290LlVpbnQ4QXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gVWludDhBcnJheTtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgV2Vha01hcCA9IGdldE5hdGl2ZShyb290LCAnV2Vha01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFdlYWtNYXA7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5mb3JFYWNoYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlFYWNoKGFycmF5LCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSA9PT0gZmFsc2UpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlFYWNoO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZmlsdGVyYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGFycmF5RmlsdGVyKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBhcnJheSkpIHtcbiAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5RmlsdGVyO1xuIiwidmFyIGJhc2VUaW1lcyA9IHJlcXVpcmUoJy4vX2Jhc2VUaW1lcycpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgYXJyYXktbGlrZSBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5oZXJpdGVkIFNwZWNpZnkgcmV0dXJuaW5nIGluaGVyaXRlZCBwcm9wZXJ0eSBuYW1lcy5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGFycmF5TGlrZUtleXModmFsdWUsIGluaGVyaXRlZCkge1xuICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKSxcbiAgICAgIGlzQXJnID0gIWlzQXJyICYmIGlzQXJndW1lbnRzKHZhbHVlKSxcbiAgICAgIGlzQnVmZiA9ICFpc0FyciAmJiAhaXNBcmcgJiYgaXNCdWZmZXIodmFsdWUpLFxuICAgICAgaXNUeXBlID0gIWlzQXJyICYmICFpc0FyZyAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheSh2YWx1ZSksXG4gICAgICBza2lwSW5kZXhlcyA9IGlzQXJyIHx8IGlzQXJnIHx8IGlzQnVmZiB8fCBpc1R5cGUsXG4gICAgICByZXN1bHQgPSBza2lwSW5kZXhlcyA/IGJhc2VUaW1lcyh2YWx1ZS5sZW5ndGgsIFN0cmluZykgOiBbXSxcbiAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgaWYgKChpbmhlcml0ZWQgfHwgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkgJiZcbiAgICAgICAgIShza2lwSW5kZXhlcyAmJiAoXG4gICAgICAgICAgIC8vIFNhZmFyaSA5IGhhcyBlbnVtZXJhYmxlIGBhcmd1bWVudHMubGVuZ3RoYCBpbiBzdHJpY3QgbW9kZS5cbiAgICAgICAgICAga2V5ID09ICdsZW5ndGgnIHx8XG4gICAgICAgICAgIC8vIE5vZGUuanMgMC4xMCBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiBidWZmZXJzLlxuICAgICAgICAgICAoaXNCdWZmICYmIChrZXkgPT0gJ29mZnNldCcgfHwga2V5ID09ICdwYXJlbnQnKSkgfHxcbiAgICAgICAgICAgLy8gUGhhbnRvbUpTIDIgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gdHlwZWQgYXJyYXlzLlxuICAgICAgICAgICAoaXNUeXBlICYmIChrZXkgPT0gJ2J1ZmZlcicgfHwga2V5ID09ICdieXRlTGVuZ3RoJyB8fCBrZXkgPT0gJ2J5dGVPZmZzZXQnKSkgfHxcbiAgICAgICAgICAgLy8gU2tpcCBpbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgICAgICBpc0luZGV4KGtleSwgbGVuZ3RoKVxuICAgICAgICApKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUxpa2VLZXlzO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWFwYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAqIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGFycmF5TWFwKGFycmF5LCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheU1hcDtcbiIsIi8qKlxuICogQXBwZW5kcyB0aGUgZWxlbWVudHMgb2YgYHZhbHVlc2AgdG8gYGFycmF5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGFwcGVuZC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBhcnJheVB1c2goYXJyYXksIHZhbHVlcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICBvZmZzZXQgPSBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBhcnJheVtvZmZzZXQgKyBpbmRleF0gPSB2YWx1ZXNbaW5kZXhdO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheVB1c2g7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zb21lYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAqIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlTb21lKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5U29tZTtcbiIsIi8qKlxuICogQ29udmVydHMgYW4gQVNDSUkgYHN0cmluZ2AgdG8gYW4gYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGFzY2lpVG9BcnJheShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5zcGxpdCgnJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNjaWlUb0FycmF5O1xuIiwidmFyIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEFzc2lnbnMgYHZhbHVlYCB0byBga2V5YCBvZiBgb2JqZWN0YCBpZiB0aGUgZXhpc3RpbmcgdmFsdWUgaXMgbm90IGVxdWl2YWxlbnRcbiAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHZhciBvYmpWYWx1ZSA9IG9iamVjdFtrZXldO1xuICBpZiAoIShoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBlcShvYmpWYWx1ZSwgdmFsdWUpKSB8fFxuICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc2lnblZhbHVlO1xuIiwidmFyIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuXG4vKipcbiAqIEdldHMgdGhlIGluZGV4IGF0IHdoaWNoIHRoZSBga2V5YCBpcyBmb3VuZCBpbiBgYXJyYXlgIG9mIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IGtleSBUaGUga2V5IHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBhc3NvY0luZGV4T2YoYXJyYXksIGtleSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICBpZiAoZXEoYXJyYXlbbGVuZ3RoXVswXSwga2V5KSkge1xuICAgICAgcmV0dXJuIGxlbmd0aDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc29jSW5kZXhPZjtcbiIsInZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlc1xuICogb3IgYGN1c3RvbWl6ZXJgIGZ1bmN0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VBc3NpZ24ob2JqZWN0LCBzb3VyY2UpIHtcbiAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5cyhzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VBc3NpZ247XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbkluYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXNcbiAqIG9yIGBjdXN0b21pemVyYCBmdW5jdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlQXNzaWduSW4ob2JqZWN0LCBzb3VyY2UpIHtcbiAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5c0luKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUFzc2lnbkluO1xuIiwidmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fZGVmaW5lUHJvcGVydHknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYXNzaWduVmFsdWVgIGFuZCBgYXNzaWduTWVyZ2VWYWx1ZWAgd2l0aG91dFxuICogdmFsdWUgY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgaWYgKGtleSA9PSAnX19wcm90b19fJyAmJiBkZWZpbmVQcm9wZXJ0eSkge1xuICAgIGRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCB7XG4gICAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAgICdlbnVtZXJhYmxlJzogdHJ1ZSxcbiAgICAgICd2YWx1ZSc6IHZhbHVlLFxuICAgICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQXNzaWduVmFsdWU7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNsYW1wYCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byBjbGFtcC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbG93ZXJdIFRoZSBsb3dlciBib3VuZC5cbiAqIEBwYXJhbSB7bnVtYmVyfSB1cHBlciBUaGUgdXBwZXIgYm91bmQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjbGFtcGVkIG51bWJlci5cbiAqL1xuZnVuY3Rpb24gYmFzZUNsYW1wKG51bWJlciwgbG93ZXIsIHVwcGVyKSB7XG4gIGlmIChudW1iZXIgPT09IG51bWJlcikge1xuICAgIGlmICh1cHBlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBudW1iZXIgPSBudW1iZXIgPD0gdXBwZXIgPyBudW1iZXIgOiB1cHBlcjtcbiAgICB9XG4gICAgaWYgKGxvd2VyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG51bWJlciA9IG51bWJlciA+PSBsb3dlciA/IG51bWJlciA6IGxvd2VyO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVtYmVyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VDbGFtcDtcbiIsInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgYXJyYXlFYWNoID0gcmVxdWlyZSgnLi9fYXJyYXlFYWNoJyksXG4gICAgYXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25WYWx1ZScpLFxuICAgIGJhc2VBc3NpZ24gPSByZXF1aXJlKCcuL19iYXNlQXNzaWduJyksXG4gICAgYmFzZUFzc2lnbkluID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnbkluJyksXG4gICAgY2xvbmVCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUJ1ZmZlcicpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLFxuICAgIGNvcHlTeW1ib2xzID0gcmVxdWlyZSgnLi9fY29weVN5bWJvbHMnKSxcbiAgICBjb3B5U3ltYm9sc0luID0gcmVxdWlyZSgnLi9fY29weVN5bWJvbHNJbicpLFxuICAgIGdldEFsbEtleXMgPSByZXF1aXJlKCcuL19nZXRBbGxLZXlzJyksXG4gICAgZ2V0QWxsS2V5c0luID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5c0luJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaW5pdENsb25lQXJyYXkgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVBcnJheScpLFxuICAgIGluaXRDbG9uZUJ5VGFnID0gcmVxdWlyZSgnLi9faW5pdENsb25lQnlUYWcnKSxcbiAgICBpbml0Q2xvbmVPYmplY3QgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVPYmplY3QnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNNYXAgPSByZXF1aXJlKCcuL2lzTWFwJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNTZXQgPSByZXF1aXJlKCcuL2lzU2V0JyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfREVFUF9GTEFHID0gMSxcbiAgICBDTE9ORV9GTEFUX0ZMQUcgPSAyLFxuICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgc3VwcG9ydGVkIGJ5IGBfLmNsb25lYC4gKi9cbnZhciBjbG9uZWFibGVUYWdzID0ge307XG5jbG9uZWFibGVUYWdzW2FyZ3NUYWddID0gY2xvbmVhYmxlVGFnc1thcnJheVRhZ10gPVxuY2xvbmVhYmxlVGFnc1thcnJheUJ1ZmZlclRhZ10gPSBjbG9uZWFibGVUYWdzW2RhdGFWaWV3VGFnXSA9XG5jbG9uZWFibGVUYWdzW2Jvb2xUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRlVGFnXSA9XG5jbG9uZWFibGVUYWdzW2Zsb2F0MzJUYWddID0gY2xvbmVhYmxlVGFnc1tmbG9hdDY0VGFnXSA9XG5jbG9uZWFibGVUYWdzW2ludDhUYWddID0gY2xvbmVhYmxlVGFnc1tpbnQxNlRhZ10gPVxuY2xvbmVhYmxlVGFnc1tpbnQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW21hcFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tudW1iZXJUYWddID0gY2xvbmVhYmxlVGFnc1tvYmplY3RUYWddID1cbmNsb25lYWJsZVRhZ3NbcmVnZXhwVGFnXSA9IGNsb25lYWJsZVRhZ3Nbc2V0VGFnXSA9XG5jbG9uZWFibGVUYWdzW3N0cmluZ1RhZ10gPSBjbG9uZWFibGVUYWdzW3N5bWJvbFRhZ10gPVxuY2xvbmVhYmxlVGFnc1t1aW50OFRhZ10gPSBjbG9uZWFibGVUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPVxuY2xvbmVhYmxlVGFnc1t1aW50MTZUYWddID0gY2xvbmVhYmxlVGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbmNsb25lYWJsZVRhZ3NbZXJyb3JUYWddID0gY2xvbmVhYmxlVGFnc1tmdW5jVGFnXSA9XG5jbG9uZWFibGVUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY2xvbmVgIGFuZCBgXy5jbG9uZURlZXBgIHdoaWNoIHRyYWNrc1xuICogdHJhdmVyc2VkIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICogIDEgLSBEZWVwIGNsb25lXG4gKiAgMiAtIEZsYXR0ZW4gaW5oZXJpdGVkIHByb3BlcnRpZXNcbiAqICA0IC0gQ2xvbmUgc3ltYm9sc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBba2V5XSBUaGUga2V5IG9mIGB2YWx1ZWAuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIHBhcmVudCBvYmplY3Qgb2YgYHZhbHVlYC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBhbmQgdGhlaXIgY2xvbmUgY291bnRlcnBhcnRzLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGNsb25lZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUNsb25lKHZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIG9iamVjdCwgc3RhY2spIHtcbiAgdmFyIHJlc3VsdCxcbiAgICAgIGlzRGVlcCA9IGJpdG1hc2sgJiBDTE9ORV9ERUVQX0ZMQUcsXG4gICAgICBpc0ZsYXQgPSBiaXRtYXNrICYgQ0xPTkVfRkxBVF9GTEFHLFxuICAgICAgaXNGdWxsID0gYml0bWFzayAmIENMT05FX1NZTUJPTFNfRkxBRztcblxuICBpZiAoY3VzdG9taXplcikge1xuICAgIHJlc3VsdCA9IG9iamVjdCA/IGN1c3RvbWl6ZXIodmFsdWUsIGtleSwgb2JqZWN0LCBzdGFjaykgOiBjdXN0b21pemVyKHZhbHVlKTtcbiAgfVxuICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHZhciBpc0FyciA9IGlzQXJyYXkodmFsdWUpO1xuICBpZiAoaXNBcnIpIHtcbiAgICByZXN1bHQgPSBpbml0Q2xvbmVBcnJheSh2YWx1ZSk7XG4gICAgaWYgKCFpc0RlZXApIHtcbiAgICAgIHJldHVybiBjb3B5QXJyYXkodmFsdWUsIHJlc3VsdCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpLFxuICAgICAgICBpc0Z1bmMgPSB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnO1xuXG4gICAgaWYgKGlzQnVmZmVyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGNsb25lQnVmZmVyKHZhbHVlLCBpc0RlZXApO1xuICAgIH1cbiAgICBpZiAodGFnID09IG9iamVjdFRhZyB8fCB0YWcgPT0gYXJnc1RhZyB8fCAoaXNGdW5jICYmICFvYmplY3QpKSB7XG4gICAgICByZXN1bHQgPSAoaXNGbGF0IHx8IGlzRnVuYykgPyB7fSA6IGluaXRDbG9uZU9iamVjdCh2YWx1ZSk7XG4gICAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgICByZXR1cm4gaXNGbGF0XG4gICAgICAgICAgPyBjb3B5U3ltYm9sc0luKHZhbHVlLCBiYXNlQXNzaWduSW4ocmVzdWx0LCB2YWx1ZSkpXG4gICAgICAgICAgOiBjb3B5U3ltYm9scyh2YWx1ZSwgYmFzZUFzc2lnbihyZXN1bHQsIHZhbHVlKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghY2xvbmVhYmxlVGFnc1t0YWddKSB7XG4gICAgICAgIHJldHVybiBvYmplY3QgPyB2YWx1ZSA6IHt9O1xuICAgICAgfVxuICAgICAgcmVzdWx0ID0gaW5pdENsb25lQnlUYWcodmFsdWUsIHRhZywgaXNEZWVwKTtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMgYW5kIHJldHVybiBpdHMgY29ycmVzcG9uZGluZyBjbG9uZS5cbiAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQodmFsdWUpO1xuICBpZiAoc3RhY2tlZCkge1xuICAgIHJldHVybiBzdGFja2VkO1xuICB9XG4gIHN0YWNrLnNldCh2YWx1ZSwgcmVzdWx0KTtcblxuICBpZiAoaXNTZXQodmFsdWUpKSB7XG4gICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSkge1xuICAgICAgcmVzdWx0LmFkZChiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN1YlZhbHVlLCB2YWx1ZSwgc3RhY2spKTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChpc01hcCh2YWx1ZSkpIHtcbiAgICB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICAgIHJlc3VsdC5zZXQoa2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgfSk7XG4gIH1cblxuICB2YXIga2V5c0Z1bmMgPSBpc0Z1bGxcbiAgICA/IChpc0ZsYXQgPyBnZXRBbGxLZXlzSW4gOiBnZXRBbGxLZXlzKVxuICAgIDogKGlzRmxhdCA/IGtleXNJbiA6IGtleXMpO1xuXG4gIHZhciBwcm9wcyA9IGlzQXJyID8gdW5kZWZpbmVkIDoga2V5c0Z1bmModmFsdWUpO1xuICBhcnJheUVhY2gocHJvcHMgfHwgdmFsdWUsIGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICBpZiAocHJvcHMpIHtcbiAgICAgIGtleSA9IHN1YlZhbHVlO1xuICAgICAgc3ViVmFsdWUgPSB2YWx1ZVtrZXldO1xuICAgIH1cbiAgICAvLyBSZWN1cnNpdmVseSBwb3B1bGF0ZSBjbG9uZSAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VDbG9uZTtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY29uZm9ybXNUb2Agd2hpY2ggYWNjZXB0cyBgcHJvcHNgIHRvIGNoZWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSBwcmVkaWNhdGVzIHRvIGNvbmZvcm0gdG8uXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgY29uZm9ybXMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUNvbmZvcm1zVG8ob2JqZWN0LCBzb3VyY2UsIHByb3BzKSB7XG4gIHZhciBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG4gIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgIHJldHVybiAhbGVuZ3RoO1xuICB9XG4gIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICB2YXIga2V5ID0gcHJvcHNbbGVuZ3RoXSxcbiAgICAgICAgcHJlZGljYXRlID0gc291cmNlW2tleV0sXG4gICAgICAgIHZhbHVlID0gb2JqZWN0W2tleV07XG5cbiAgICBpZiAoKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkgfHwgIXByZWRpY2F0ZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUNvbmZvcm1zVG87XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdENyZWF0ZSA9IE9iamVjdC5jcmVhdGU7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY3JlYXRlYCB3aXRob3V0IHN1cHBvcnQgZm9yIGFzc2lnbmluZ1xuICogcHJvcGVydGllcyB0byB0aGUgY3JlYXRlZCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm90byBUaGUgb2JqZWN0IHRvIGluaGVyaXQgZnJvbS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKi9cbnZhciBiYXNlQ3JlYXRlID0gKGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBvYmplY3QoKSB7fVxuICByZXR1cm4gZnVuY3Rpb24ocHJvdG8pIHtcbiAgICBpZiAoIWlzT2JqZWN0KHByb3RvKSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBpZiAob2JqZWN0Q3JlYXRlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0Q3JlYXRlKHByb3RvKTtcbiAgICB9XG4gICAgb2JqZWN0LnByb3RvdHlwZSA9IHByb3RvO1xuICAgIHZhciByZXN1bHQgPSBuZXcgb2JqZWN0O1xuICAgIG9iamVjdC5wcm90b3R5cGUgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn0oKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUNyZWF0ZTtcbiIsInZhciBhcnJheVB1c2ggPSByZXF1aXJlKCcuL19hcnJheVB1c2gnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldEFsbEtleXNgIGFuZCBgZ2V0QWxsS2V5c0luYCB3aGljaCB1c2VzXG4gKiBga2V5c0Z1bmNgIGFuZCBgc3ltYm9sc0Z1bmNgIHRvIGdldCB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmRcbiAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzeW1ib2xzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzRnVuYywgc3ltYm9sc0Z1bmMpIHtcbiAgdmFyIHJlc3VsdCA9IGtleXNGdW5jKG9iamVjdCk7XG4gIHJldHVybiBpc0FycmF5KG9iamVjdCkgPyByZXN1bHQgOiBhcnJheVB1c2gocmVzdWx0LCBzeW1ib2xzRnVuYyhvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0QWxsS2V5cztcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKSxcbiAgICBnZXRSYXdUYWcgPSByZXF1aXJlKCcuL19nZXRSYXdUYWcnKSxcbiAgICBvYmplY3RUb1N0cmluZyA9IHJlcXVpcmUoJy4vX29iamVjdFRvU3RyaW5nJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBudWxsVGFnID0gJ1tvYmplY3QgTnVsbF0nLFxuICAgIHVuZGVmaW5lZFRhZyA9ICdbb2JqZWN0IFVuZGVmaW5lZF0nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0VGFnYCB3aXRob3V0IGZhbGxiYWNrcyBmb3IgYnVnZ3kgZW52aXJvbm1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXRUYWcodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZFRhZyA6IG51bGxUYWc7XG4gIH1cbiAgcmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiBPYmplY3QodmFsdWUpKVxuICAgID8gZ2V0UmF3VGFnKHZhbHVlKVxuICAgIDogb2JqZWN0VG9TdHJpbmcodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHZXRUYWc7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmd0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlR3QodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA+IG90aGVyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHdDtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcmd1bWVudHNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqL1xuZnVuY3Rpb24gYmFzZUlzQXJndW1lbnRzKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGFyZ3NUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzQXJndW1lbnRzO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0FycmF5QnVmZmVyYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzQXJyYXlCdWZmZXIodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYXJyYXlCdWZmZXJUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzQXJyYXlCdWZmZXI7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0RhdGVgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZGF0ZSBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzRGF0ZSh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBkYXRlVGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0RhdGU7XG4iLCJ2YXIgYmFzZUlzRXF1YWxEZWVwID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWxEZWVwJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0VxdWFsYCB3aGljaCBzdXBwb3J0cyBwYXJ0aWFsIGNvbXBhcmlzb25zXG4gKiBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAqICAxIC0gVW5vcmRlcmVkIGNvbXBhcmlzb25cbiAqICAyIC0gUGFydGlhbCBjb21wYXJpc29uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgYHZhbHVlYCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzRXF1YWwodmFsdWUsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykge1xuICBpZiAodmFsdWUgPT09IG90aGVyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHZhbHVlID09IG51bGwgfHwgb3RoZXIgPT0gbnVsbCB8fCAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgIWlzT2JqZWN0TGlrZShvdGhlcikpKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXI7XG4gIH1cbiAgcmV0dXJuIGJhc2VJc0VxdWFsRGVlcCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGJhc2VJc0VxdWFsLCBzdGFjayk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzRXF1YWw7XG4iLCJ2YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLFxuICAgIGVxdWFsQXJyYXlzID0gcmVxdWlyZSgnLi9fZXF1YWxBcnJheXMnKSxcbiAgICBlcXVhbEJ5VGFnID0gcmVxdWlyZSgnLi9fZXF1YWxCeVRhZycpLFxuICAgIGVxdWFsT2JqZWN0cyA9IHJlcXVpcmUoJy4vX2VxdWFsT2JqZWN0cycpLFxuICAgIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDE7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxgIGZvciBhcnJheXMgYW5kIG9iamVjdHMgd2hpY2ggcGVyZm9ybXNcbiAqIGRlZXAgY29tcGFyaXNvbnMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAqIHJlZmVyZW5jZXMgdG8gYmUgY29tcGFyZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0VxdWFsRGVlcChvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHZhciBvYmpJc0FyciA9IGlzQXJyYXkob2JqZWN0KSxcbiAgICAgIG90aElzQXJyID0gaXNBcnJheShvdGhlciksXG4gICAgICBvYmpUYWcgPSBvYmpJc0FyciA/IGFycmF5VGFnIDogZ2V0VGFnKG9iamVjdCksXG4gICAgICBvdGhUYWcgPSBvdGhJc0FyciA/IGFycmF5VGFnIDogZ2V0VGFnKG90aGVyKTtcblxuICBvYmpUYWcgPSBvYmpUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG9ialRhZztcbiAgb3RoVGFnID0gb3RoVGFnID09IGFyZ3NUYWcgPyBvYmplY3RUYWcgOiBvdGhUYWc7XG5cbiAgdmFyIG9iaklzT2JqID0gb2JqVGFnID09IG9iamVjdFRhZyxcbiAgICAgIG90aElzT2JqID0gb3RoVGFnID09IG9iamVjdFRhZyxcbiAgICAgIGlzU2FtZVRhZyA9IG9ialRhZyA9PSBvdGhUYWc7XG5cbiAgaWYgKGlzU2FtZVRhZyAmJiBpc0J1ZmZlcihvYmplY3QpKSB7XG4gICAgaWYgKCFpc0J1ZmZlcihvdGhlcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgb2JqSXNBcnIgPSB0cnVlO1xuICAgIG9iaklzT2JqID0gZmFsc2U7XG4gIH1cbiAgaWYgKGlzU2FtZVRhZyAmJiAhb2JqSXNPYmopIHtcbiAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgIHJldHVybiAob2JqSXNBcnIgfHwgaXNUeXBlZEFycmF5KG9iamVjdCkpXG4gICAgICA/IGVxdWFsQXJyYXlzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spXG4gICAgICA6IGVxdWFsQnlUYWcob2JqZWN0LCBvdGhlciwgb2JqVGFnLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgfVxuICBpZiAoIShiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcpKSB7XG4gICAgdmFyIG9iaklzV3JhcHBlZCA9IG9iaklzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCAnX193cmFwcGVkX18nKSxcbiAgICAgICAgb3RoSXNXcmFwcGVkID0gb3RoSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwgJ19fd3JhcHBlZF9fJyk7XG5cbiAgICBpZiAob2JqSXNXcmFwcGVkIHx8IG90aElzV3JhcHBlZCkge1xuICAgICAgdmFyIG9ialVud3JhcHBlZCA9IG9iaklzV3JhcHBlZCA/IG9iamVjdC52YWx1ZSgpIDogb2JqZWN0LFxuICAgICAgICAgIG90aFVud3JhcHBlZCA9IG90aElzV3JhcHBlZCA/IG90aGVyLnZhbHVlKCkgOiBvdGhlcjtcblxuICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgIHJldHVybiBlcXVhbEZ1bmMob2JqVW53cmFwcGVkLCBvdGhVbndyYXBwZWQsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFpc1NhbWVUYWcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgcmV0dXJuIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNFcXVhbERlZXA7XG4iLCJ2YXIgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTWFwYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG1hcCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNNYXAodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBtYXBUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTWFwO1xuIiwidmFyIFN0YWNrID0gcmVxdWlyZSgnLi9fU3RhY2snKSxcbiAgICBiYXNlSXNFcXVhbCA9IHJlcXVpcmUoJy4vX2Jhc2VJc0VxdWFsJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc01hdGNoYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAqIEBwYXJhbSB7QXJyYXl9IG1hdGNoRGF0YSBUaGUgcHJvcGVydHkgbmFtZXMsIHZhbHVlcywgYW5kIGNvbXBhcmUgZmxhZ3MgdG8gbWF0Y2guXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBtYXRjaERhdGEsIGN1c3RvbWl6ZXIpIHtcbiAgdmFyIGluZGV4ID0gbWF0Y2hEYXRhLmxlbmd0aCxcbiAgICAgIGxlbmd0aCA9IGluZGV4LFxuICAgICAgbm9DdXN0b21pemVyID0gIWN1c3RvbWl6ZXI7XG5cbiAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuICFsZW5ndGg7XG4gIH1cbiAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgdmFyIGRhdGEgPSBtYXRjaERhdGFbaW5kZXhdO1xuICAgIGlmICgobm9DdXN0b21pemVyICYmIGRhdGFbMl0pXG4gICAgICAgICAgPyBkYXRhWzFdICE9PSBvYmplY3RbZGF0YVswXV1cbiAgICAgICAgICA6ICEoZGF0YVswXSBpbiBvYmplY3QpXG4gICAgICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGRhdGEgPSBtYXRjaERhdGFbaW5kZXhdO1xuICAgIHZhciBrZXkgPSBkYXRhWzBdLFxuICAgICAgICBvYmpWYWx1ZSA9IG9iamVjdFtrZXldLFxuICAgICAgICBzcmNWYWx1ZSA9IGRhdGFbMV07XG5cbiAgICBpZiAobm9DdXN0b21pemVyICYmIGRhdGFbMl0pIHtcbiAgICAgIGlmIChvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc3RhY2sgPSBuZXcgU3RhY2s7XG4gICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICB2YXIgcmVzdWx0ID0gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKTtcbiAgICAgIH1cbiAgICAgIGlmICghKHJlc3VsdCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgICAgIDogcmVzdWx0XG4gICAgICAgICAgKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc01hdGNoO1xuIiwidmFyIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc01hc2tlZCA9IHJlcXVpcmUoJy4vX2lzTWFza2VkJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgdG9Tb3VyY2UgPSByZXF1aXJlKCcuL190b1NvdXJjZScpO1xuXG4vKipcbiAqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGBcbiAqIFtzeW50YXggY2hhcmFjdGVyc10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcGF0dGVybnMpLlxuICovXG52YXIgcmVSZWdFeHBDaGFyID0gL1tcXFxcXiQuKis/KClbXFxde318XS9nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaG9zdCBjb25zdHJ1Y3RvcnMgKFNhZmFyaSkuICovXG52YXIgcmVJc0hvc3RDdG9yID0gL15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcbiAgICBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBpZiBhIG1ldGhvZCBpcyBuYXRpdmUuICovXG52YXIgcmVJc05hdGl2ZSA9IFJlZ0V4cCgnXicgK1xuICBmdW5jVG9TdHJpbmcuY2FsbChoYXNPd25Qcm9wZXJ0eSkucmVwbGFjZShyZVJlZ0V4cENoYXIsICdcXFxcJCYnKVxuICAucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXFxcXCgpfCBmb3IgLis/KD89XFxcXFxcXSkvZywgJyQxLio/JykgKyAnJCdcbik7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNOYXRpdmVgIHdpdGhvdXQgYmFkIHNoaW0gY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTmF0aXZlKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpIHx8IGlzTWFza2VkKHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcGF0dGVybiA9IGlzRnVuY3Rpb24odmFsdWUpID8gcmVJc05hdGl2ZSA6IHJlSXNIb3N0Q3RvcjtcbiAgcmV0dXJuIHBhdHRlcm4udGVzdCh0b1NvdXJjZSh2YWx1ZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc05hdGl2ZTtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1JlZ0V4cGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSByZWdleHAsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzUmVnRXhwKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHJlZ2V4cFRhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNSZWdFeHA7XG4iLCJ2YXIgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzU2V0YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNTZXQodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBzZXRUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzU2V0O1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xudmFyIHR5cGVkQXJyYXlUYWdzID0ge307XG50eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbnR5cGVkQXJyYXlUYWdzW2FyZ3NUYWddID0gdHlwZWRBcnJheVRhZ3NbYXJyYXlUYWddID1cbnR5cGVkQXJyYXlUYWdzW2FycmF5QnVmZmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Jvb2xUYWddID1cbnR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID1cbnR5cGVkQXJyYXlUYWdzW2Vycm9yVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Z1bmNUYWddID1cbnR5cGVkQXJyYXlUYWdzW21hcFRhZ10gPSB0eXBlZEFycmF5VGFnc1tudW1iZXJUYWddID1cbnR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPSB0eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID1cbnR5cGVkQXJyYXlUYWdzW3NldFRhZ10gPSB0eXBlZEFycmF5VGFnc1tzdHJpbmdUYWddID1cbnR5cGVkQXJyYXlUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNUeXBlZEFycmF5YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc1R5cGVkQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiZcbiAgICBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3NbYmFzZUdldFRhZyh2YWx1ZSldO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc1R5cGVkQXJyYXk7XG4iLCJ2YXIgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpLFxuICAgIG5hdGl2ZUtleXMgPSByZXF1aXJlKCcuL19uYXRpdmVLZXlzJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ua2V5c2Agd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBiYXNlS2V5cyhvYmplY3QpIHtcbiAgaWYgKCFpc1Byb3RvdHlwZShvYmplY3QpKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUtleXMob2JqZWN0KTtcbiAgfVxuICB2YXIgcmVzdWx0ID0gW107XG4gIGZvciAodmFyIGtleSBpbiBPYmplY3Qob2JqZWN0KSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBrZXkgIT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlS2V5cztcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBpc1Byb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2lzUHJvdG90eXBlJyksXG4gICAgbmF0aXZlS2V5c0luID0gcmVxdWlyZSgnLi9fbmF0aXZlS2V5c0luJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ua2V5c0luYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VLZXlzSW4ob2JqZWN0KSB7XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIHJldHVybiBuYXRpdmVLZXlzSW4ob2JqZWN0KTtcbiAgfVxuICB2YXIgaXNQcm90byA9IGlzUHJvdG90eXBlKG9iamVjdCksXG4gICAgICByZXN1bHQgPSBbXTtcblxuICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgaWYgKCEoa2V5ID09ICdjb25zdHJ1Y3RvcicgJiYgKGlzUHJvdG8gfHwgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUtleXNJbjtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubHRgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gYG90aGVyYCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VMdCh2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIHZhbHVlIDwgb3RoZXI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUx0O1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50aW1lc2Agd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzXG4gKiBvciBtYXggYXJyYXkgbGVuZ3RoIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUaW1lcyhuLCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG4pO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShpbmRleCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVGltZXM7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFRvU3RyaW5nID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by50b1N0cmluZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1N0cmluZ2Agd2hpY2ggZG9lc24ndCBjb252ZXJ0IG51bGxpc2hcbiAqIHZhbHVlcyB0byBlbXB0eSBzdHJpbmdzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVG9TdHJpbmcodmFsdWUpIHtcbiAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5ncyB0byBhdm9pZCBhIHBlcmZvcm1hbmNlIGhpdCBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAvLyBSZWN1cnNpdmVseSBjb252ZXJ0IHZhbHVlcyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgYmFzZVRvU3RyaW5nKSArICcnO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gc3ltYm9sVG9TdHJpbmcgPyBzeW1ib2xUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICB9XG4gIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVG9TdHJpbmc7XG4iLCJ2YXIgdHJpbW1lZEVuZEluZGV4ID0gcmVxdWlyZSgnLi9fdHJpbW1lZEVuZEluZGV4Jyk7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIGxlYWRpbmcgd2hpdGVzcGFjZS4gKi9cbnZhciByZVRyaW1TdGFydCA9IC9eXFxzKy87XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udHJpbWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byB0cmltLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUcmltKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nXG4gICAgPyBzdHJpbmcuc2xpY2UoMCwgdHJpbW1lZEVuZEluZGV4KHN0cmluZykgKyAxKS5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJylcbiAgICA6IHN0cmluZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVHJpbTtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5hcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3Igc3RvcmluZyBtZXRhZGF0YS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VVbmFyeShmdW5jKSB7XG4gIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiBmdW5jKHZhbHVlKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVW5hcnk7XG4iLCJ2YXIgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnZhbHVlc2AgYW5kIGBfLnZhbHVlc0luYCB3aGljaCBjcmVhdGVzIGFuXG4gKiBhcnJheSBvZiBgb2JqZWN0YCBwcm9wZXJ0eSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvcGVydHkgbmFtZXNcbiAqIG9mIGBwcm9wc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBnZXQgdmFsdWVzIGZvci5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gYmFzZVZhbHVlcyhvYmplY3QsIHByb3BzKSB7XG4gIHJldHVybiBhcnJheU1hcChwcm9wcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgcmV0dXJuIG9iamVjdFtrZXldO1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVmFsdWVzO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYSBgY2FjaGVgIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBjYWNoZSBUaGUgY2FjaGUgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gY2FjaGVIYXMoY2FjaGUsIGtleSkge1xuICByZXR1cm4gY2FjaGUuaGFzKGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2FjaGVIYXM7XG4iLCJ2YXIgVWludDhBcnJheSA9IHJlcXVpcmUoJy4vX1VpbnQ4QXJyYXknKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGFycmF5QnVmZmVyYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheUJ1ZmZlcn0gYXJyYXlCdWZmZXIgVGhlIGFycmF5IGJ1ZmZlciB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtBcnJheUJ1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGFycmF5IGJ1ZmZlci5cbiAqL1xuZnVuY3Rpb24gY2xvbmVBcnJheUJ1ZmZlcihhcnJheUJ1ZmZlcikge1xuICB2YXIgcmVzdWx0ID0gbmV3IGFycmF5QnVmZmVyLmNvbnN0cnVjdG9yKGFycmF5QnVmZmVyLmJ5dGVMZW5ndGgpO1xuICBuZXcgVWludDhBcnJheShyZXN1bHQpLnNldChuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcikpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lQXJyYXlCdWZmZXI7XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBCdWZmZXIgPSBtb2R1bGVFeHBvcnRzID8gcm9vdC5CdWZmZXIgOiB1bmRlZmluZWQsXG4gICAgYWxsb2NVbnNhZmUgPSBCdWZmZXIgPyBCdWZmZXIuYWxsb2NVbnNhZmUgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mICBgYnVmZmVyYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtCdWZmZXJ9IGJ1ZmZlciBUaGUgYnVmZmVyIHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtCdWZmZXJ9IFJldHVybnMgdGhlIGNsb25lZCBidWZmZXIuXG4gKi9cbmZ1bmN0aW9uIGNsb25lQnVmZmVyKGJ1ZmZlciwgaXNEZWVwKSB7XG4gIGlmIChpc0RlZXApIHtcbiAgICByZXR1cm4gYnVmZmVyLnNsaWNlKCk7XG4gIH1cbiAgdmFyIGxlbmd0aCA9IGJ1ZmZlci5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBhbGxvY1Vuc2FmZSA/IGFsbG9jVW5zYWZlKGxlbmd0aCkgOiBuZXcgYnVmZmVyLmNvbnN0cnVjdG9yKGxlbmd0aCk7XG5cbiAgYnVmZmVyLmNvcHkocmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZUJ1ZmZlcjtcbiIsInZhciBjbG9uZUFycmF5QnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVBcnJheUJ1ZmZlcicpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgZGF0YVZpZXdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gZGF0YVZpZXcgVGhlIGRhdGEgdmlldyB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgZGF0YSB2aWV3LlxuICovXG5mdW5jdGlvbiBjbG9uZURhdGFWaWV3KGRhdGFWaWV3LCBpc0RlZXApIHtcbiAgdmFyIGJ1ZmZlciA9IGlzRGVlcCA/IGNsb25lQXJyYXlCdWZmZXIoZGF0YVZpZXcuYnVmZmVyKSA6IGRhdGFWaWV3LmJ1ZmZlcjtcbiAgcmV0dXJuIG5ldyBkYXRhVmlldy5jb25zdHJ1Y3RvcihidWZmZXIsIGRhdGFWaWV3LmJ5dGVPZmZzZXQsIGRhdGFWaWV3LmJ5dGVMZW5ndGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lRGF0YVZpZXc7XG4iLCIvKiogVXNlZCB0byBtYXRjaCBgUmVnRXhwYCBmbGFncyBmcm9tIHRoZWlyIGNvZXJjZWQgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUZsYWdzID0gL1xcdyokLztcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHJlZ2V4cGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSByZWdleHAgVGhlIHJlZ2V4cCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCByZWdleHAuXG4gKi9cbmZ1bmN0aW9uIGNsb25lUmVnRXhwKHJlZ2V4cCkge1xuICB2YXIgcmVzdWx0ID0gbmV3IHJlZ2V4cC5jb25zdHJ1Y3RvcihyZWdleHAuc291cmNlLCByZUZsYWdzLmV4ZWMocmVnZXhwKSk7XG4gIHJlc3VsdC5sYXN0SW5kZXggPSByZWdleHAubGFzdEluZGV4O1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lUmVnRXhwO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpO1xuXG4vKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbnZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgc3ltYm9sVmFsdWVPZiA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udmFsdWVPZiA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgdGhlIGBzeW1ib2xgIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHN5bWJvbCBUaGUgc3ltYm9sIG9iamVjdCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBzeW1ib2wgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBjbG9uZVN5bWJvbChzeW1ib2wpIHtcbiAgcmV0dXJuIHN5bWJvbFZhbHVlT2YgPyBPYmplY3Qoc3ltYm9sVmFsdWVPZi5jYWxsKHN5bWJvbCkpIDoge307XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVTeW1ib2w7XG4iLCJ2YXIgY2xvbmVBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQXJyYXlCdWZmZXInKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHR5cGVkQXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gdHlwZWRBcnJheSBUaGUgdHlwZWQgYXJyYXkgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHR5cGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBjbG9uZVR5cGVkQXJyYXkodHlwZWRBcnJheSwgaXNEZWVwKSB7XG4gIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKHR5cGVkQXJyYXkuYnVmZmVyKSA6IHR5cGVkQXJyYXkuYnVmZmVyO1xuICByZXR1cm4gbmV3IHR5cGVkQXJyYXkuY29uc3RydWN0b3IoYnVmZmVyLCB0eXBlZEFycmF5LmJ5dGVPZmZzZXQsIHR5cGVkQXJyYXkubGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZVR5cGVkQXJyYXk7XG4iLCIvKipcbiAqIENvcGllcyB0aGUgdmFsdWVzIG9mIGBzb3VyY2VgIHRvIGBhcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IHNvdXJjZSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgZnJvbS5cbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheT1bXV0gVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIHRvLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlBcnJheShzb3VyY2UsIGFycmF5KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gc291cmNlLmxlbmd0aDtcblxuICBhcnJheSB8fCAoYXJyYXkgPSBBcnJheShsZW5ndGgpKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBhcnJheVtpbmRleF0gPSBzb3VyY2VbaW5kZXhdO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3B5QXJyYXk7XG4iLCJ2YXIgYXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25WYWx1ZScpLFxuICAgIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpO1xuXG4vKipcbiAqIENvcGllcyBwcm9wZXJ0aWVzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMgdG8gY29weS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyB0by5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvcGllZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb3B5T2JqZWN0KHNvdXJjZSwgcHJvcHMsIG9iamVjdCwgY3VzdG9taXplcikge1xuICB2YXIgaXNOZXcgPSAhb2JqZWN0O1xuICBvYmplY3QgfHwgKG9iamVjdCA9IHt9KTtcblxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBrZXkgPSBwcm9wc1tpbmRleF07XG5cbiAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICA/IGN1c3RvbWl6ZXIob2JqZWN0W2tleV0sIHNvdXJjZVtrZXldLCBrZXksIG9iamVjdCwgc291cmNlKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbmV3VmFsdWUgPSBzb3VyY2Vba2V5XTtcbiAgICB9XG4gICAgaWYgKGlzTmV3KSB7XG4gICAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3B5T2JqZWN0O1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKTtcblxuLyoqXG4gKiBDb3BpZXMgb3duIHN5bWJvbHMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgZnJvbS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyB0by5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlTeW1ib2xzKHNvdXJjZSwgb2JqZWN0KSB7XG4gIHJldHVybiBjb3B5T2JqZWN0KHNvdXJjZSwgZ2V0U3ltYm9scyhzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlTeW1ib2xzO1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAgZ2V0U3ltYm9sc0luID0gcmVxdWlyZSgnLi9fZ2V0U3ltYm9sc0luJyk7XG5cbi8qKlxuICogQ29waWVzIG93biBhbmQgaW5oZXJpdGVkIHN5bWJvbHMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgZnJvbS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyB0by5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlTeW1ib2xzSW4oc291cmNlLCBvYmplY3QpIHtcbiAgcmV0dXJuIGNvcHlPYmplY3Qoc291cmNlLCBnZXRTeW1ib2xzSW4oc291cmNlKSwgb2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3B5U3ltYm9sc0luO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvdmVycmVhY2hpbmcgY29yZS1qcyBzaGltcy4gKi9cbnZhciBjb3JlSnNEYXRhID0gcm9vdFsnX19jb3JlLWpzX3NoYXJlZF9fJ107XG5cbm1vZHVsZS5leHBvcnRzID0gY29yZUpzRGF0YTtcbiIsInZhciB0b051bWJlciA9IHJlcXVpcmUoJy4vdG9OdW1iZXInKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhIHJlbGF0aW9uYWwgb3BlcmF0aW9uIG9uIHR3byB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IG9wZXJhdG9yIFRoZSBmdW5jdGlvbiB0byBwZXJmb3JtIHRoZSBvcGVyYXRpb24uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZWxhdGlvbmFsIG9wZXJhdGlvbiBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihvcGVyYXRvcikge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7XG4gICAgaWYgKCEodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnICYmIHR5cGVvZiBvdGhlciA9PSAnc3RyaW5nJykpIHtcbiAgICAgIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICAgICAgb3RoZXIgPSB0b051bWJlcihvdGhlcik7XG4gICAgfVxuICAgIHJldHVybiBvcGVyYXRvcih2YWx1ZSwgb3RoZXIpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb247XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyk7XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICB2YXIgZnVuYyA9IGdldE5hdGl2ZShPYmplY3QsICdkZWZpbmVQcm9wZXJ0eScpO1xuICAgIGZ1bmMoe30sICcnLCB7fSk7XG4gICAgcmV0dXJuIGZ1bmM7XG4gIH0gY2F0Y2ggKGUpIHt9XG59KCkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmluZVByb3BlcnR5O1xuIiwidmFyIFNldENhY2hlID0gcmVxdWlyZSgnLi9fU2V0Q2FjaGUnKSxcbiAgICBhcnJheVNvbWUgPSByZXF1aXJlKCcuL19hcnJheVNvbWUnKSxcbiAgICBjYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2NhY2hlSGFzJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIGFycmF5cyB3aXRoIHN1cHBvcnQgZm9yXG4gKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtBcnJheX0gb3RoZXIgVGhlIG90aGVyIGFycmF5IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBhcnJheWAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJyYXlzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsQXJyYXlzKGFycmF5LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgYXJyTGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgb3RoTGVuZ3RoID0gb3RoZXIubGVuZ3RoO1xuXG4gIGlmIChhcnJMZW5ndGggIT0gb3RoTGVuZ3RoICYmICEoaXNQYXJ0aWFsICYmIG90aExlbmd0aCA+IGFyckxlbmd0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gQ2hlY2sgdGhhdCBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgdmFyIGFyclN0YWNrZWQgPSBzdGFjay5nZXQoYXJyYXkpO1xuICB2YXIgb3RoU3RhY2tlZCA9IHN0YWNrLmdldChvdGhlcik7XG4gIGlmIChhcnJTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICByZXR1cm4gYXJyU3RhY2tlZCA9PSBvdGhlciAmJiBvdGhTdGFja2VkID09IGFycmF5O1xuICB9XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gdHJ1ZSxcbiAgICAgIHNlZW4gPSAoYml0bWFzayAmIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcpID8gbmV3IFNldENhY2hlIDogdW5kZWZpbmVkO1xuXG4gIHN0YWNrLnNldChhcnJheSwgb3RoZXIpO1xuICBzdGFjay5zZXQob3RoZXIsIGFycmF5KTtcblxuICAvLyBJZ25vcmUgbm9uLWluZGV4IHByb3BlcnRpZXMuXG4gIHdoaWxlICgrK2luZGV4IDwgYXJyTGVuZ3RoKSB7XG4gICAgdmFyIGFyclZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICBvdGhWYWx1ZSA9IG90aGVyW2luZGV4XTtcblxuICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBhcnJWYWx1ZSwgaW5kZXgsIG90aGVyLCBhcnJheSwgc3RhY2spXG4gICAgICAgIDogY3VzdG9taXplcihhcnJWYWx1ZSwgb3RoVmFsdWUsIGluZGV4LCBhcnJheSwgb3RoZXIsIHN0YWNrKTtcbiAgICB9XG4gICAgaWYgKGNvbXBhcmVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChjb21wYXJlZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgaWYgKHNlZW4pIHtcbiAgICAgIGlmICghYXJyYXlTb21lKG90aGVyLCBmdW5jdGlvbihvdGhWYWx1ZSwgb3RoSW5kZXgpIHtcbiAgICAgICAgICAgIGlmICghY2FjaGVIYXMoc2Vlbiwgb3RoSW5kZXgpICYmXG4gICAgICAgICAgICAgICAgKGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBzZWVuLnB1c2gob3RoSW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pKSB7XG4gICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCEoXG4gICAgICAgICAgYXJyVmFsdWUgPT09IG90aFZhbHVlIHx8XG4gICAgICAgICAgICBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgKSkge1xuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgc3RhY2tbJ2RlbGV0ZSddKGFycmF5KTtcbiAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcXVhbEFycmF5cztcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKSxcbiAgICBVaW50OEFycmF5ID0gcmVxdWlyZSgnLi9fVWludDhBcnJheScpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpLFxuICAgIGVxdWFsQXJyYXlzID0gcmVxdWlyZSgnLi9fZXF1YWxBcnJheXMnKSxcbiAgICBtYXBUb0FycmF5ID0gcmVxdWlyZSgnLi9fbWFwVG9BcnJheScpLFxuICAgIHNldFRvQXJyYXkgPSByZXF1aXJlKCcuL19zZXRUb0FycmF5Jyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nO1xuXG4vKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbnZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgc3ltYm9sVmFsdWVPZiA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udmFsdWVPZiA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIGNvbXBhcmluZyBvYmplY3RzIG9mXG4gKiB0aGUgc2FtZSBgdG9TdHJpbmdUYWdgLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY29tcGFyaW5nIHZhbHVlcyB3aXRoIHRhZ3Mgb2ZcbiAqIGBCb29sZWFuYCwgYERhdGVgLCBgRXJyb3JgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIG9yIGBTdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFnIFRoZSBgdG9TdHJpbmdUYWdgIG9mIHRoZSBvYmplY3RzIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCB0YWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgc3dpdGNoICh0YWcpIHtcbiAgICBjYXNlIGRhdGFWaWV3VGFnOlxuICAgICAgaWYgKChvYmplY3QuYnl0ZUxlbmd0aCAhPSBvdGhlci5ieXRlTGVuZ3RoKSB8fFxuICAgICAgICAgIChvYmplY3QuYnl0ZU9mZnNldCAhPSBvdGhlci5ieXRlT2Zmc2V0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBvYmplY3QgPSBvYmplY3QuYnVmZmVyO1xuICAgICAgb3RoZXIgPSBvdGhlci5idWZmZXI7XG5cbiAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgaWYgKChvYmplY3QuYnl0ZUxlbmd0aCAhPSBvdGhlci5ieXRlTGVuZ3RoKSB8fFxuICAgICAgICAgICFlcXVhbEZ1bmMobmV3IFVpbnQ4QXJyYXkob2JqZWN0KSwgbmV3IFVpbnQ4QXJyYXkob3RoZXIpKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcblxuICAgIGNhc2UgYm9vbFRhZzpcbiAgICBjYXNlIGRhdGVUYWc6XG4gICAgY2FzZSBudW1iZXJUYWc6XG4gICAgICAvLyBDb2VyY2UgYm9vbGVhbnMgdG8gYDFgIG9yIGAwYCBhbmQgZGF0ZXMgdG8gbWlsbGlzZWNvbmRzLlxuICAgICAgLy8gSW52YWxpZCBkYXRlcyBhcmUgY29lcmNlZCB0byBgTmFOYC5cbiAgICAgIHJldHVybiBlcSgrb2JqZWN0LCArb3RoZXIpO1xuXG4gICAgY2FzZSBlcnJvclRhZzpcbiAgICAgIHJldHVybiBvYmplY3QubmFtZSA9PSBvdGhlci5uYW1lICYmIG9iamVjdC5tZXNzYWdlID09IG90aGVyLm1lc3NhZ2U7XG5cbiAgICBjYXNlIHJlZ2V4cFRhZzpcbiAgICBjYXNlIHN0cmluZ1RhZzpcbiAgICAgIC8vIENvZXJjZSByZWdleGVzIHRvIHN0cmluZ3MgYW5kIHRyZWF0IHN0cmluZ3MsIHByaW1pdGl2ZXMgYW5kIG9iamVjdHMsXG4gICAgICAvLyBhcyBlcXVhbC4gU2VlIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1yZWdleHAucHJvdG90eXBlLnRvc3RyaW5nXG4gICAgICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgcmV0dXJuIG9iamVjdCA9PSAob3RoZXIgKyAnJyk7XG5cbiAgICBjYXNlIG1hcFRhZzpcbiAgICAgIHZhciBjb252ZXJ0ID0gbWFwVG9BcnJheTtcblxuICAgIGNhc2Ugc2V0VGFnOlxuICAgICAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRztcbiAgICAgIGNvbnZlcnQgfHwgKGNvbnZlcnQgPSBzZXRUb0FycmF5KTtcblxuICAgICAgaWYgKG9iamVjdC5zaXplICE9IG90aGVyLnNpemUgJiYgIWlzUGFydGlhbCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBBc3N1bWUgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gICAgICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgcmV0dXJuIHN0YWNrZWQgPT0gb3RoZXI7XG4gICAgICB9XG4gICAgICBiaXRtYXNrIHw9IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUc7XG5cbiAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICAgICAgdmFyIHJlc3VsdCA9IGVxdWFsQXJyYXlzKGNvbnZlcnQob2JqZWN0KSwgY29udmVydChvdGhlciksIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICAgICAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuXG4gICAgY2FzZSBzeW1ib2xUYWc6XG4gICAgICBpZiAoc3ltYm9sVmFsdWVPZikge1xuICAgICAgICByZXR1cm4gc3ltYm9sVmFsdWVPZi5jYWxsKG9iamVjdCkgPT0gc3ltYm9sVmFsdWVPZi5jYWxsKG90aGVyKTtcbiAgICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxCeVRhZztcbiIsInZhciBnZXRBbGxLZXlzID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5cycpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDE7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBvYmplY3RzIHdpdGggc3VwcG9ydCBmb3JcbiAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICBvYmpQcm9wcyA9IGdldEFsbEtleXMob2JqZWN0KSxcbiAgICAgIG9iakxlbmd0aCA9IG9ialByb3BzLmxlbmd0aCxcbiAgICAgIG90aFByb3BzID0gZ2V0QWxsS2V5cyhvdGhlciksXG4gICAgICBvdGhMZW5ndGggPSBvdGhQcm9wcy5sZW5ndGg7XG5cbiAgaWYgKG9iakxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIWlzUGFydGlhbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgaW5kZXggPSBvYmpMZW5ndGg7XG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgdmFyIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICBpZiAoIShpc1BhcnRpYWwgPyBrZXkgaW4gb3RoZXIgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCBrZXkpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICAvLyBDaGVjayB0aGF0IGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICB2YXIgb2JqU3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICB2YXIgb3RoU3RhY2tlZCA9IHN0YWNrLmdldChvdGhlcik7XG4gIGlmIChvYmpTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICByZXR1cm4gb2JqU3RhY2tlZCA9PSBvdGhlciAmJiBvdGhTdGFja2VkID09IG9iamVjdDtcbiAgfVxuICB2YXIgcmVzdWx0ID0gdHJ1ZTtcbiAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICBzdGFjay5zZXQob3RoZXIsIG9iamVjdCk7XG5cbiAgdmFyIHNraXBDdG9yID0gaXNQYXJ0aWFsO1xuICB3aGlsZSAoKytpbmRleCA8IG9iakxlbmd0aCkge1xuICAgIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSxcbiAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltrZXldO1xuXG4gICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBjb21wYXJlZCA9IGlzUGFydGlhbFxuICAgICAgICA/IGN1c3RvbWl6ZXIob3RoVmFsdWUsIG9ialZhbHVlLCBrZXksIG90aGVyLCBvYmplY3QsIHN0YWNrKVxuICAgICAgICA6IGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlLCBrZXksIG9iamVjdCwgb3RoZXIsIHN0YWNrKTtcbiAgICB9XG4gICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgaWYgKCEoY29tcGFyZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gKG9ialZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMob2JqVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpXG4gICAgICAgICAgOiBjb21wYXJlZFxuICAgICAgICApKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBza2lwQ3RvciB8fCAoc2tpcEN0b3IgPSBrZXkgPT0gJ2NvbnN0cnVjdG9yJyk7XG4gIH1cbiAgaWYgKHJlc3VsdCAmJiAhc2tpcEN0b3IpIHtcbiAgICB2YXIgb2JqQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcixcbiAgICAgICAgb3RoQ3RvciA9IG90aGVyLmNvbnN0cnVjdG9yO1xuXG4gICAgLy8gTm9uIGBPYmplY3RgIG9iamVjdCBpbnN0YW5jZXMgd2l0aCBkaWZmZXJlbnQgY29uc3RydWN0b3JzIGFyZSBub3QgZXF1YWwuXG4gICAgaWYgKG9iakN0b3IgIT0gb3RoQ3RvciAmJlxuICAgICAgICAoJ2NvbnN0cnVjdG9yJyBpbiBvYmplY3QgJiYgJ2NvbnN0cnVjdG9yJyBpbiBvdGhlcikgJiZcbiAgICAgICAgISh0eXBlb2Ygb2JqQ3RvciA9PSAnZnVuY3Rpb24nICYmIG9iakN0b3IgaW5zdGFuY2VvZiBvYmpDdG9yICYmXG4gICAgICAgICAgdHlwZW9mIG90aEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvdGhDdG9yIGluc3RhbmNlb2Ygb3RoQ3RvcikpIHtcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcXVhbE9iamVjdHM7XG4iLCIvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCAmJiBnbG9iYWwuT2JqZWN0ID09PSBPYmplY3QgJiYgZ2xvYmFsO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZyZWVHbG9iYWw7XG4iLCJ2YXIgYmFzZUdldEFsbEtleXMgPSByZXF1aXJlKCcuL19iYXNlR2V0QWxsS2V5cycpLFxuICAgIGdldFN5bWJvbHMgPSByZXF1aXJlKCcuL19nZXRTeW1ib2xzJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gKi9cbmZ1bmN0aW9uIGdldEFsbEtleXMob2JqZWN0KSB7XG4gIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXMsIGdldFN5bWJvbHMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEFsbEtleXM7XG4iLCJ2YXIgYmFzZUdldEFsbEtleXMgPSByZXF1aXJlKCcuL19iYXNlR2V0QWxsS2V5cycpLFxuICAgIGdldFN5bWJvbHNJbiA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHNJbicpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICogc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gZ2V0QWxsS2V5c0luKG9iamVjdCkge1xuICByZXR1cm4gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzSW4sIGdldFN5bWJvbHNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QWxsS2V5c0luO1xuIiwidmFyIGlzS2V5YWJsZSA9IHJlcXVpcmUoJy4vX2lzS2V5YWJsZScpO1xuXG4vKipcbiAqIEdldHMgdGhlIGRhdGEgZm9yIGBtYXBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSByZWZlcmVuY2Uga2V5LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hcCBkYXRhLlxuICovXG5mdW5jdGlvbiBnZXRNYXBEYXRhKG1hcCwga2V5KSB7XG4gIHZhciBkYXRhID0gbWFwLl9fZGF0YV9fO1xuICByZXR1cm4gaXNLZXlhYmxlKGtleSlcbiAgICA/IGRhdGFbdHlwZW9mIGtleSA9PSAnc3RyaW5nJyA/ICdzdHJpbmcnIDogJ2hhc2gnXVxuICAgIDogZGF0YS5tYXA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TWFwRGF0YTtcbiIsInZhciBpc1N0cmljdENvbXBhcmFibGUgPSByZXF1aXJlKCcuL19pc1N0cmljdENvbXBhcmFibGUnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgcHJvcGVydHkgbmFtZXMsIHZhbHVlcywgYW5kIGNvbXBhcmUgZmxhZ3Mgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbWF0Y2ggZGF0YSBvZiBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gZ2V0TWF0Y2hEYXRhKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0ga2V5cyhvYmplY3QpLFxuICAgICAgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDtcblxuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICB2YXIga2V5ID0gcmVzdWx0W2xlbmd0aF0sXG4gICAgICAgIHZhbHVlID0gb2JqZWN0W2tleV07XG5cbiAgICByZXN1bHRbbGVuZ3RoXSA9IFtrZXksIHZhbHVlLCBpc1N0cmljdENvbXBhcmFibGUodmFsdWUpXTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE1hdGNoRGF0YTtcbiIsInZhciBiYXNlSXNOYXRpdmUgPSByZXF1aXJlKCcuL19iYXNlSXNOYXRpdmUnKSxcbiAgICBnZXRWYWx1ZSA9IHJlcXVpcmUoJy4vX2dldFZhbHVlJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbmF0aXZlIGZ1bmN0aW9uIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZnVuY3Rpb24gaWYgaXQncyBuYXRpdmUsIGVsc2UgYHVuZGVmaW5lZGAuXG4gKi9cbmZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICB2YXIgdmFsdWUgPSBnZXRWYWx1ZShvYmplY3QsIGtleSk7XG4gIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TmF0aXZlO1xuIiwidmFyIG92ZXJBcmcgPSByZXF1aXJlKCcuL19vdmVyQXJnJyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIGdldFByb3RvdHlwZSA9IG92ZXJBcmcoT2JqZWN0LmdldFByb3RvdHlwZU9mLCBPYmplY3QpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFByb3RvdHlwZTtcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Agd2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGdldFJhd1RhZyh2YWx1ZSkge1xuICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgdHJ5IHtcbiAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIGlmICh1bm1hc2tlZCkge1xuICAgIGlmIChpc093bikge1xuICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFJhd1RhZztcbiIsInZhciBhcnJheUZpbHRlciA9IHJlcXVpcmUoJy4vX2FycmF5RmlsdGVyJyksXG4gICAgc3R1YkFycmF5ID0gcmVxdWlyZSgnLi9zdHViQXJyYXknKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUdldFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2Ygc3ltYm9scy5cbiAqL1xudmFyIGdldFN5bWJvbHMgPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gIHJldHVybiBhcnJheUZpbHRlcihuYXRpdmVHZXRTeW1ib2xzKG9iamVjdCksIGZ1bmN0aW9uKHN5bWJvbCkge1xuICAgIHJldHVybiBwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKG9iamVjdCwgc3ltYm9sKTtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFN5bWJvbHM7XG4iLCJ2YXIgYXJyYXlQdXNoID0gcmVxdWlyZSgnLi9fYXJyYXlQdXNoJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKSxcbiAgICBzdHViQXJyYXkgPSByZXF1aXJlKCcuL3N0dWJBcnJheScpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlR2V0U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gKi9cbnZhciBnZXRTeW1ib2xzSW4gPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHdoaWxlIChvYmplY3QpIHtcbiAgICBhcnJheVB1c2gocmVzdWx0LCBnZXRTeW1ib2xzKG9iamVjdCkpO1xuICAgIG9iamVjdCA9IGdldFByb3RvdHlwZShvYmplY3QpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFN5bWJvbHNJbjtcbiIsInZhciBEYXRhVmlldyA9IHJlcXVpcmUoJy4vX0RhdGFWaWV3JyksXG4gICAgTWFwID0gcmVxdWlyZSgnLi9fTWFwJyksXG4gICAgUHJvbWlzZSA9IHJlcXVpcmUoJy4vX1Byb21pc2UnKSxcbiAgICBTZXQgPSByZXF1aXJlKCcuL19TZXQnKSxcbiAgICBXZWFrTWFwID0gcmVxdWlyZSgnLi9fV2Vha01hcCcpLFxuICAgIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgdG9Tb3VyY2UgPSByZXF1aXJlKCcuL190b1NvdXJjZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgcHJvbWlzZVRhZyA9ICdbb2JqZWN0IFByb21pc2VdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWFwcywgc2V0cywgYW5kIHdlYWttYXBzLiAqL1xudmFyIGRhdGFWaWV3Q3RvclN0cmluZyA9IHRvU291cmNlKERhdGFWaWV3KSxcbiAgICBtYXBDdG9yU3RyaW5nID0gdG9Tb3VyY2UoTWFwKSxcbiAgICBwcm9taXNlQ3RvclN0cmluZyA9IHRvU291cmNlKFByb21pc2UpLFxuICAgIHNldEN0b3JTdHJpbmcgPSB0b1NvdXJjZShTZXQpLFxuICAgIHdlYWtNYXBDdG9yU3RyaW5nID0gdG9Tb3VyY2UoV2Vha01hcCk7XG5cbi8qKlxuICogR2V0cyB0aGUgYHRvU3RyaW5nVGFnYCBvZiBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbnZhciBnZXRUYWcgPSBiYXNlR2V0VGFnO1xuXG4vLyBGYWxsYmFjayBmb3IgZGF0YSB2aWV3cywgbWFwcywgc2V0cywgYW5kIHdlYWsgbWFwcyBpbiBJRSAxMSBhbmQgcHJvbWlzZXMgaW4gTm9kZS5qcyA8IDYuXG5pZiAoKERhdGFWaWV3ICYmIGdldFRhZyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEpKSkgIT0gZGF0YVZpZXdUYWcpIHx8XG4gICAgKE1hcCAmJiBnZXRUYWcobmV3IE1hcCkgIT0gbWFwVGFnKSB8fFxuICAgIChQcm9taXNlICYmIGdldFRhZyhQcm9taXNlLnJlc29sdmUoKSkgIT0gcHJvbWlzZVRhZykgfHxcbiAgICAoU2V0ICYmIGdldFRhZyhuZXcgU2V0KSAhPSBzZXRUYWcpIHx8XG4gICAgKFdlYWtNYXAgJiYgZ2V0VGFnKG5ldyBXZWFrTWFwKSAhPSB3ZWFrTWFwVGFnKSkge1xuICBnZXRUYWcgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHZhciByZXN1bHQgPSBiYXNlR2V0VGFnKHZhbHVlKSxcbiAgICAgICAgQ3RvciA9IHJlc3VsdCA9PSBvYmplY3RUYWcgPyB2YWx1ZS5jb25zdHJ1Y3RvciA6IHVuZGVmaW5lZCxcbiAgICAgICAgY3RvclN0cmluZyA9IEN0b3IgPyB0b1NvdXJjZShDdG9yKSA6ICcnO1xuXG4gICAgaWYgKGN0b3JTdHJpbmcpIHtcbiAgICAgIHN3aXRjaCAoY3RvclN0cmluZykge1xuICAgICAgICBjYXNlIGRhdGFWaWV3Q3RvclN0cmluZzogcmV0dXJuIGRhdGFWaWV3VGFnO1xuICAgICAgICBjYXNlIG1hcEN0b3JTdHJpbmc6IHJldHVybiBtYXBUYWc7XG4gICAgICAgIGNhc2UgcHJvbWlzZUN0b3JTdHJpbmc6IHJldHVybiBwcm9taXNlVGFnO1xuICAgICAgICBjYXNlIHNldEN0b3JTdHJpbmc6IHJldHVybiBzZXRUYWc7XG4gICAgICAgIGNhc2Ugd2Vha01hcEN0b3JTdHJpbmc6IHJldHVybiB3ZWFrTWFwVGFnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFRhZztcbiIsIi8qKlxuICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcHJvcGVydHkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGdldFZhbHVlKG9iamVjdCwga2V5KSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFZhbHVlO1xuIiwiLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIGNoYXJhY3RlciBjbGFzc2VzLiAqL1xudmFyIHJzQXN0cmFsUmFuZ2UgPSAnXFxcXHVkODAwLVxcXFx1ZGZmZicsXG4gICAgcnNDb21ib01hcmtzUmFuZ2UgPSAnXFxcXHUwMzAwLVxcXFx1MDM2ZicsXG4gICAgcmVDb21ib0hhbGZNYXJrc1JhbmdlID0gJ1xcXFx1ZmUyMC1cXFxcdWZlMmYnLFxuICAgIHJzQ29tYm9TeW1ib2xzUmFuZ2UgPSAnXFxcXHUyMGQwLVxcXFx1MjBmZicsXG4gICAgcnNDb21ib1JhbmdlID0gcnNDb21ib01hcmtzUmFuZ2UgKyByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgKyByc0NvbWJvU3ltYm9sc1JhbmdlLFxuICAgIHJzVmFyUmFuZ2UgPSAnXFxcXHVmZTBlXFxcXHVmZTBmJztcblxuLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIGNhcHR1cmUgZ3JvdXBzLiAqL1xudmFyIHJzWldKID0gJ1xcXFx1MjAwZCc7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBzdHJpbmdzIHdpdGggW3plcm8td2lkdGggam9pbmVycyBvciBjb2RlIHBvaW50cyBmcm9tIHRoZSBhc3RyYWwgcGxhbmVzXShodHRwOi8vZWV2LmVlL2Jsb2cvMjAxNS8wOS8xMi9kYXJrLWNvcm5lcnMtb2YtdW5pY29kZS8pLiAqL1xudmFyIHJlSGFzVW5pY29kZSA9IFJlZ0V4cCgnWycgKyByc1pXSiArIHJzQXN0cmFsUmFuZ2UgICsgcnNDb21ib1JhbmdlICsgcnNWYXJSYW5nZSArICddJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBzdHJpbmdgIGNvbnRhaW5zIFVuaWNvZGUgc3ltYm9scy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYSBzeW1ib2wgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzVW5pY29kZShzdHJpbmcpIHtcbiAgcmV0dXJuIHJlSGFzVW5pY29kZS50ZXN0KHN0cmluZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzVW5pY29kZTtcbiIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBoYXNoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIEhhc2hcbiAqL1xuZnVuY3Rpb24gaGFzaENsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0gbmF0aXZlQ3JlYXRlID8gbmF0aXZlQ3JlYXRlKG51bGwpIDoge307XG4gIHRoaXMuc2l6ZSA9IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaENsZWFyO1xuIiwiLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgaGFzaC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtPYmplY3R9IGhhc2ggVGhlIGhhc2ggdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hEZWxldGUoa2V5KSB7XG4gIHZhciByZXN1bHQgPSB0aGlzLmhhcyhrZXkpICYmIGRlbGV0ZSB0aGlzLl9fZGF0YV9fW2tleV07XG4gIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoRGVsZXRlO1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogR2V0cyB0aGUgaGFzaCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBoYXNoR2V0KGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChuYXRpdmVDcmVhdGUpIHtcbiAgICB2YXIgcmVzdWx0ID0gZGF0YVtrZXldO1xuICAgIHJldHVybiByZXN1bHQgPT09IEhBU0hfVU5ERUZJTkVEID8gdW5kZWZpbmVkIDogcmVzdWx0O1xuICB9XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSkgPyBkYXRhW2tleV0gOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaEdldDtcbiIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBoYXNoIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNoSGFzKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIHJldHVybiBuYXRpdmVDcmVhdGUgPyAoZGF0YVtrZXldICE9PSB1bmRlZmluZWQpIDogaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hIYXM7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqXG4gKiBTZXRzIHRoZSBoYXNoIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaGFzaCBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gaGFzaFNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgdGhpcy5zaXplICs9IHRoaXMuaGFzKGtleSkgPyAwIDogMTtcbiAgZGF0YVtrZXldID0gKG5hdGl2ZUNyZWF0ZSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSA/IEhBU0hfVU5ERUZJTkVEIDogdmFsdWU7XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hTZXQ7XG4iLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIGFycmF5IGNsb25lLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICovXG5mdW5jdGlvbiBpbml0Q2xvbmVBcnJheShhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gbmV3IGFycmF5LmNvbnN0cnVjdG9yKGxlbmd0aCk7XG5cbiAgLy8gQWRkIHByb3BlcnRpZXMgYXNzaWduZWQgYnkgYFJlZ0V4cCNleGVjYC5cbiAgaWYgKGxlbmd0aCAmJiB0eXBlb2YgYXJyYXlbMF0gPT0gJ3N0cmluZycgJiYgaGFzT3duUHJvcGVydHkuY2FsbChhcnJheSwgJ2luZGV4JykpIHtcbiAgICByZXN1bHQuaW5kZXggPSBhcnJheS5pbmRleDtcbiAgICByZXN1bHQuaW5wdXQgPSBhcnJheS5pbnB1dDtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluaXRDbG9uZUFycmF5O1xuIiwidmFyIGNsb25lQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUFycmF5QnVmZmVyJyksXG4gICAgY2xvbmVEYXRhVmlldyA9IHJlcXVpcmUoJy4vX2Nsb25lRGF0YVZpZXcnKSxcbiAgICBjbG9uZVJlZ0V4cCA9IHJlcXVpcmUoJy4vX2Nsb25lUmVnRXhwJyksXG4gICAgY2xvbmVTeW1ib2wgPSByZXF1aXJlKCcuL19jbG9uZVN5bWJvbCcpLFxuICAgIGNsb25lVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vX2Nsb25lVHlwZWRBcnJheScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUgYmFzZWQgb24gaXRzIGB0b1N0cmluZ1RhZ2AuXG4gKlxuICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjbG9uaW5nIHZhbHVlcyB3aXRoIHRhZ3Mgb2ZcbiAqIGBCb29sZWFuYCwgYERhdGVgLCBgRXJyb3JgLCBgTWFwYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBgU2V0YCwgb3IgYFN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAqL1xuZnVuY3Rpb24gaW5pdENsb25lQnlUYWcob2JqZWN0LCB0YWcsIGlzRGVlcCkge1xuICB2YXIgQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcjtcbiAgc3dpdGNoICh0YWcpIHtcbiAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgcmV0dXJuIGNsb25lQXJyYXlCdWZmZXIob2JqZWN0KTtcblxuICAgIGNhc2UgYm9vbFRhZzpcbiAgICBjYXNlIGRhdGVUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3IoK29iamVjdCk7XG5cbiAgICBjYXNlIGRhdGFWaWV3VGFnOlxuICAgICAgcmV0dXJuIGNsb25lRGF0YVZpZXcob2JqZWN0LCBpc0RlZXApO1xuXG4gICAgY2FzZSBmbG9hdDMyVGFnOiBjYXNlIGZsb2F0NjRUYWc6XG4gICAgY2FzZSBpbnQ4VGFnOiBjYXNlIGludDE2VGFnOiBjYXNlIGludDMyVGFnOlxuICAgIGNhc2UgdWludDhUYWc6IGNhc2UgdWludDhDbGFtcGVkVGFnOiBjYXNlIHVpbnQxNlRhZzogY2FzZSB1aW50MzJUYWc6XG4gICAgICByZXR1cm4gY2xvbmVUeXBlZEFycmF5KG9iamVjdCwgaXNEZWVwKTtcblxuICAgIGNhc2UgbWFwVGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yO1xuXG4gICAgY2FzZSBudW1iZXJUYWc6XG4gICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3Iob2JqZWN0KTtcblxuICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgICAgcmV0dXJuIGNsb25lUmVnRXhwKG9iamVjdCk7XG5cbiAgICBjYXNlIHNldFRhZzpcbiAgICAgIHJldHVybiBuZXcgQ3RvcjtcblxuICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgcmV0dXJuIGNsb25lU3ltYm9sKG9iamVjdCk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbml0Q2xvbmVCeVRhZztcbiIsInZhciBiYXNlQ3JlYXRlID0gcmVxdWlyZSgnLi9fYmFzZUNyZWF0ZScpLFxuICAgIGdldFByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2dldFByb3RvdHlwZScpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKTtcblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICovXG5mdW5jdGlvbiBpbml0Q2xvbmVPYmplY3Qob2JqZWN0KSB7XG4gIHJldHVybiAodHlwZW9mIG9iamVjdC5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmICFpc1Byb3RvdHlwZShvYmplY3QpKVxuICAgID8gYmFzZUNyZWF0ZShnZXRQcm90b3R5cGUob2JqZWN0KSlcbiAgICA6IHt9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluaXRDbG9uZU9iamVjdDtcbiIsIi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMuICovXG52YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBpbmRleC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD1NQVhfU0FGRV9JTlRFR0VSXSBUaGUgdXBwZXIgYm91bmRzIG9mIGEgdmFsaWQgaW5kZXguXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGluZGV4LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSW5kZXgodmFsdWUsIGxlbmd0aCkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgbGVuZ3RoID0gbGVuZ3RoID09IG51bGwgPyBNQVhfU0FGRV9JTlRFR0VSIDogbGVuZ3RoO1xuXG4gIHJldHVybiAhIWxlbmd0aCAmJlxuICAgICh0eXBlID09ICdudW1iZXInIHx8XG4gICAgICAodHlwZSAhPSAnc3ltYm9sJyAmJiByZUlzVWludC50ZXN0KHZhbHVlKSkpICYmXG4gICAgICAgICh2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDwgbGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0luZGV4O1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3IgdXNlIGFzIHVuaXF1ZSBvYmplY3Qga2V5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzS2V5YWJsZSh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuICh0eXBlID09ICdzdHJpbmcnIHx8IHR5cGUgPT0gJ251bWJlcicgfHwgdHlwZSA9PSAnc3ltYm9sJyB8fCB0eXBlID09ICdib29sZWFuJylcbiAgICA/ICh2YWx1ZSAhPT0gJ19fcHJvdG9fXycpXG4gICAgOiAodmFsdWUgPT09IG51bGwpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzS2V5YWJsZTtcbiIsInZhciBjb3JlSnNEYXRhID0gcmVxdWlyZSgnLi9fY29yZUpzRGF0YScpLFxuICAgIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBzdHViRmFsc2UgPSByZXF1aXJlKCcuL3N0dWJGYWxzZScpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgZnVuY2AgaXMgY2FwYWJsZSBvZiBiZWluZyBtYXNrZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBpcyBtYXNrYWJsZSwgZWxzZSBgZmFsc2VgLlxuICovXG52YXIgaXNNYXNrYWJsZSA9IGNvcmVKc0RhdGEgPyBpc0Z1bmN0aW9uIDogc3R1YkZhbHNlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTWFza2FibGU7XG4iLCJ2YXIgY29yZUpzRGF0YSA9IHJlcXVpcmUoJy4vX2NvcmVKc0RhdGEnKTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG1ldGhvZHMgbWFzcXVlcmFkaW5nIGFzIG5hdGl2ZS4gKi9cbnZhciBtYXNrU3JjS2V5ID0gKGZ1bmN0aW9uKCkge1xuICB2YXIgdWlkID0gL1teLl0rJC8uZXhlYyhjb3JlSnNEYXRhICYmIGNvcmVKc0RhdGEua2V5cyAmJiBjb3JlSnNEYXRhLmtleXMuSUVfUFJPVE8gfHwgJycpO1xuICByZXR1cm4gdWlkID8gKCdTeW1ib2woc3JjKV8xLicgKyB1aWQpIDogJyc7XG59KCkpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgZnVuY2AgaGFzIGl0cyBzb3VyY2UgbWFza2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2VkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzTWFza2VkKGZ1bmMpIHtcbiAgcmV0dXJuICEhbWFza1NyY0tleSAmJiAobWFza1NyY0tleSBpbiBmdW5jKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc01hc2tlZDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGEgcHJvdG90eXBlIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3RvdHlwZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc1Byb3RvdHlwZSh2YWx1ZSkge1xuICB2YXIgQ3RvciA9IHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yLFxuICAgICAgcHJvdG8gPSAodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSkgfHwgb2JqZWN0UHJvdG87XG5cbiAgcmV0dXJuIHZhbHVlID09PSBwcm90bztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1Byb3RvdHlwZTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3Igc3RyaWN0IGVxdWFsaXR5IGNvbXBhcmlzb25zLCBpLmUuIGA9PT1gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlmIHN1aXRhYmxlIGZvciBzdHJpY3RcbiAqICBlcXVhbGl0eSBjb21wYXJpc29ucywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc1N0cmljdENvbXBhcmFibGUodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSAmJiAhaXNPYmplY3QodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3RyaWN0Q29tcGFyYWJsZTtcbiIsIi8qKlxuICogQ29udmVydHMgYGl0ZXJhdG9yYCB0byBhbiBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGl0ZXJhdG9yIFRoZSBpdGVyYXRvciB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGl0ZXJhdG9yVG9BcnJheShpdGVyYXRvcikge1xuICB2YXIgZGF0YSxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIHdoaWxlICghKGRhdGEgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcbiAgICByZXN1bHQucHVzaChkYXRhLnZhbHVlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGl0ZXJhdG9yVG9BcnJheTtcbiIsIi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbGlzdCBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBbXTtcbiAgdGhpcy5zaXplID0gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVDbGVhcjtcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHNwbGljZSA9IGFycmF5UHJvdG8uc3BsaWNlO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgbGFzdEluZGV4ID0gZGF0YS5sZW5ndGggLSAxO1xuICBpZiAoaW5kZXggPT0gbGFzdEluZGV4KSB7XG4gICAgZGF0YS5wb3AoKTtcbiAgfSBlbHNlIHtcbiAgICBzcGxpY2UuY2FsbChkYXRhLCBpbmRleCwgMSk7XG4gIH1cbiAgLS10aGlzLnNpemU7XG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZURlbGV0ZTtcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlR2V0KGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIHJldHVybiBpbmRleCA8IDAgPyB1bmRlZmluZWQgOiBkYXRhW2luZGV4XVsxXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVHZXQ7XG4iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVIYXMoa2V5KSB7XG4gIHJldHVybiBhc3NvY0luZGV4T2YodGhpcy5fX2RhdGFfXywga2V5KSA+IC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZUhhcztcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBTZXRzIHRoZSBsaXN0IGNhY2hlIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBsaXN0IGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIGlmIChpbmRleCA8IDApIHtcbiAgICArK3RoaXMuc2l6ZTtcbiAgICBkYXRhLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgfSBlbHNlIHtcbiAgICBkYXRhW2luZGV4XVsxXSA9IHZhbHVlO1xuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZVNldDtcbiIsInZhciBIYXNoID0gcmVxdWlyZSgnLi9fSGFzaCcpLFxuICAgIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUNsZWFyKCkge1xuICB0aGlzLnNpemUgPSAwO1xuICB0aGlzLl9fZGF0YV9fID0ge1xuICAgICdoYXNoJzogbmV3IEhhc2gsXG4gICAgJ21hcCc6IG5ldyAoTWFwIHx8IExpc3RDYWNoZSksXG4gICAgJ3N0cmluZyc6IG5ldyBIYXNoXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVDbGVhcjtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBtYXAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciByZXN1bHQgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSlbJ2RlbGV0ZSddKGtleSk7XG4gIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZURlbGV0ZTtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIEdldHMgdGhlIG1hcCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuZ2V0KGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVHZXQ7XG4iLCJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBtYXAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUhhcyhrZXkpIHtcbiAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5oYXMoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZUhhcztcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBtYXAgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSksXG4gICAgICBzaXplID0gZGF0YS5zaXplO1xuXG4gIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICB0aGlzLnNpemUgKz0gZGF0YS5zaXplID09IHNpemUgPyAwIDogMTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVTZXQ7XG4iLCIvKipcbiAqIENvbnZlcnRzIGBtYXBgIHRvIGl0cyBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXAgVGhlIG1hcCB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gKi9cbmZ1bmN0aW9uIG1hcFRvQXJyYXkobWFwKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobWFwLnNpemUpO1xuXG4gIG1hcC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSBba2V5LCB2YWx1ZV07XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcFRvQXJyYXk7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBuYXRpdmVDcmVhdGUgPSBnZXROYXRpdmUoT2JqZWN0LCAnY3JlYXRlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlQ3JlYXRlO1xuIiwidmFyIG92ZXJBcmcgPSByZXF1aXJlKCcuL19vdmVyQXJnJyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVLZXlzID0gb3ZlckFyZyhPYmplY3Qua2V5cywgT2JqZWN0KTtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVLZXlzO1xuIiwiLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VcbiAqIFtgT2JqZWN0LmtleXNgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGV4Y2VwdCB0aGF0IGl0IGluY2x1ZGVzIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIG5hdGl2ZUtleXNJbihvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAob2JqZWN0ICE9IG51bGwpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlS2V5c0luO1xuIiwidmFyIGZyZWVHbG9iYWwgPSByZXF1aXJlKCcuL19mcmVlR2xvYmFsJyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBwcm9jZXNzYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZVByb2Nlc3MgPSBtb2R1bGVFeHBvcnRzICYmIGZyZWVHbG9iYWwucHJvY2VzcztcblxuLyoqIFVzZWQgdG8gYWNjZXNzIGZhc3RlciBOb2RlLmpzIGhlbHBlcnMuICovXG52YXIgbm9kZVV0aWwgPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgLy8gVXNlIGB1dGlsLnR5cGVzYCBmb3IgTm9kZS5qcyAxMCsuXG4gICAgdmFyIHR5cGVzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlKCd1dGlsJykudHlwZXM7XG5cbiAgICBpZiAodHlwZXMpIHtcbiAgICAgIHJldHVybiB0eXBlcztcbiAgICB9XG5cbiAgICAvLyBMZWdhY3kgYHByb2Nlc3MuYmluZGluZygndXRpbCcpYCBmb3IgTm9kZS5qcyA8IDEwLlxuICAgIHJldHVybiBmcmVlUHJvY2VzcyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKTtcbiAgfSBjYXRjaCAoZSkge31cbn0oKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gbm9kZVV0aWw7XG4iLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIHVzaW5nIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvYmplY3RUb1N0cmluZztcbiIsIi8qKlxuICogQ3JlYXRlcyBhIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBpdHMgYXJndW1lbnQgdHJhbnNmb3JtZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIGFyZ3VtZW50IHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBvdmVyQXJnKGZ1bmMsIHRyYW5zZm9ybSkge1xuICByZXR1cm4gZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIGZ1bmModHJhbnNmb3JtKGFyZykpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG92ZXJBcmc7XG4iLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvb3Q7XG4iLCIvKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKlxuICogQWRkcyBgdmFsdWVgIHRvIHRoZSBhcnJheSBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgYWRkXG4gKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAqIEBhbGlhcyBwdXNoXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjYWNoZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBzZXRDYWNoZUFkZCh2YWx1ZSkge1xuICB0aGlzLl9fZGF0YV9fLnNldCh2YWx1ZSwgSEFTSF9VTkRFRklORUQpO1xuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRDYWNoZUFkZDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgaW4gdGhlIGFycmF5IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc2V0Q2FjaGVIYXModmFsdWUpIHtcbiAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRDYWNoZUhhcztcbiIsIi8qKlxuICogQ29udmVydHMgYHNldGAgdG8gYW4gYXJyYXkgb2YgaXRzIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNldCBUaGUgc2V0IHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gc2V0VG9BcnJheShzZXQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShzZXQuc2l6ZSk7XG5cbiAgc2V0LmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0VG9BcnJheTtcbiIsInZhciBMaXN0Q2FjaGUgPSByZXF1aXJlKCcuL19MaXN0Q2FjaGUnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBzdGFjay5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBTdGFja1xuICovXG5mdW5jdGlvbiBzdGFja0NsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0gbmV3IExpc3RDYWNoZTtcbiAgdGhpcy5zaXplID0gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja0NsZWFyO1xuIiwiLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgc3RhY2suXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc3RhY2tEZWxldGUoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIHJlc3VsdCA9IGRhdGFbJ2RlbGV0ZSddKGtleSk7XG5cbiAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrRGVsZXRlO1xuIiwiLyoqXG4gKiBHZXRzIHRoZSBzdGFjayB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gc3RhY2tHZXQoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmdldChrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrR2V0O1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYSBzdGFjayB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrSGFzKGtleSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja0hhcztcbiIsInZhciBMaXN0Q2FjaGUgPSByZXF1aXJlKCcuL19MaXN0Q2FjaGUnKSxcbiAgICBNYXAgPSByZXF1aXJlKCcuL19NYXAnKSxcbiAgICBNYXBDYWNoZSA9IHJlcXVpcmUoJy4vX01hcENhY2hlJyk7XG5cbi8qKiBVc2VkIGFzIHRoZSBzaXplIHRvIGVuYWJsZSBsYXJnZSBhcnJheSBvcHRpbWl6YXRpb25zLiAqL1xudmFyIExBUkdFX0FSUkFZX1NJWkUgPSAyMDA7XG5cbi8qKlxuICogU2V0cyB0aGUgc3RhY2sgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgc3RhY2sgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICBpZiAoZGF0YSBpbnN0YW5jZW9mIExpc3RDYWNoZSkge1xuICAgIHZhciBwYWlycyA9IGRhdGEuX19kYXRhX187XG4gICAgaWYgKCFNYXAgfHwgKHBhaXJzLmxlbmd0aCA8IExBUkdFX0FSUkFZX1NJWkUgLSAxKSkge1xuICAgICAgcGFpcnMucHVzaChba2V5LCB2YWx1ZV0pO1xuICAgICAgdGhpcy5zaXplID0gKytkYXRhLnNpemU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgZGF0YSA9IHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGUocGFpcnMpO1xuICB9XG4gIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrU2V0O1xuIiwidmFyIGFzY2lpVG9BcnJheSA9IHJlcXVpcmUoJy4vX2FzY2lpVG9BcnJheScpLFxuICAgIGhhc1VuaWNvZGUgPSByZXF1aXJlKCcuL19oYXNVbmljb2RlJyksXG4gICAgdW5pY29kZVRvQXJyYXkgPSByZXF1aXJlKCcuL191bmljb2RlVG9BcnJheScpO1xuXG4vKipcbiAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBzdHJpbmdUb0FycmF5KHN0cmluZykge1xuICByZXR1cm4gaGFzVW5pY29kZShzdHJpbmcpXG4gICAgPyB1bmljb2RlVG9BcnJheShzdHJpbmcpXG4gICAgOiBhc2NpaVRvQXJyYXkoc3RyaW5nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHJpbmdUb0FycmF5O1xuIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqXG4gKiBDb252ZXJ0cyBgZnVuY2AgdG8gaXRzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc291cmNlIGNvZGUuXG4gKi9cbmZ1bmN0aW9uIHRvU291cmNlKGZ1bmMpIHtcbiAgaWYgKGZ1bmMgIT0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZnVuY1RvU3RyaW5nLmNhbGwoZnVuYyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIChmdW5jICsgJycpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvU291cmNlO1xuIiwiLyoqIFVzZWQgdG8gbWF0Y2ggYSBzaW5nbGUgd2hpdGVzcGFjZSBjaGFyYWN0ZXIuICovXG52YXIgcmVXaGl0ZXNwYWNlID0gL1xccy87XG5cbi8qKlxuICogVXNlZCBieSBgXy50cmltYCBhbmQgYF8udHJpbUVuZGAgdG8gZ2V0IHRoZSBpbmRleCBvZiB0aGUgbGFzdCBub24td2hpdGVzcGFjZVxuICogY2hhcmFjdGVyIG9mIGBzdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG5vbi13aGl0ZXNwYWNlIGNoYXJhY3Rlci5cbiAqL1xuZnVuY3Rpb24gdHJpbW1lZEVuZEluZGV4KHN0cmluZykge1xuICB2YXIgaW5kZXggPSBzdHJpbmcubGVuZ3RoO1xuXG4gIHdoaWxlIChpbmRleC0tICYmIHJlV2hpdGVzcGFjZS50ZXN0KHN0cmluZy5jaGFyQXQoaW5kZXgpKSkge31cbiAgcmV0dXJuIGluZGV4O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRyaW1tZWRFbmRJbmRleDtcbiIsIi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjaGFyYWN0ZXIgY2xhc3Nlcy4gKi9cbnZhciByc0FzdHJhbFJhbmdlID0gJ1xcXFx1ZDgwMC1cXFxcdWRmZmYnLFxuICAgIHJzQ29tYm9NYXJrc1JhbmdlID0gJ1xcXFx1MDMwMC1cXFxcdTAzNmYnLFxuICAgIHJlQ29tYm9IYWxmTWFya3NSYW5nZSA9ICdcXFxcdWZlMjAtXFxcXHVmZTJmJyxcbiAgICByc0NvbWJvU3ltYm9sc1JhbmdlID0gJ1xcXFx1MjBkMC1cXFxcdTIwZmYnLFxuICAgIHJzQ29tYm9SYW5nZSA9IHJzQ29tYm9NYXJrc1JhbmdlICsgcmVDb21ib0hhbGZNYXJrc1JhbmdlICsgcnNDb21ib1N5bWJvbHNSYW5nZSxcbiAgICByc1ZhclJhbmdlID0gJ1xcXFx1ZmUwZVxcXFx1ZmUwZic7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbnZhciByc0FzdHJhbCA9ICdbJyArIHJzQXN0cmFsUmFuZ2UgKyAnXScsXG4gICAgcnNDb21ibyA9ICdbJyArIHJzQ29tYm9SYW5nZSArICddJyxcbiAgICByc0ZpdHogPSAnXFxcXHVkODNjW1xcXFx1ZGZmYi1cXFxcdWRmZmZdJyxcbiAgICByc01vZGlmaWVyID0gJyg/OicgKyByc0NvbWJvICsgJ3wnICsgcnNGaXR6ICsgJyknLFxuICAgIHJzTm9uQXN0cmFsID0gJ1teJyArIHJzQXN0cmFsUmFuZ2UgKyAnXScsXG4gICAgcnNSZWdpb25hbCA9ICcoPzpcXFxcdWQ4M2NbXFxcXHVkZGU2LVxcXFx1ZGRmZl0pezJ9JyxcbiAgICByc1N1cnJQYWlyID0gJ1tcXFxcdWQ4MDAtXFxcXHVkYmZmXVtcXFxcdWRjMDAtXFxcXHVkZmZmXScsXG4gICAgcnNaV0ogPSAnXFxcXHUyMDBkJztcblxuLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIHJlZ2V4ZXMuICovXG52YXIgcmVPcHRNb2QgPSByc01vZGlmaWVyICsgJz8nLFxuICAgIHJzT3B0VmFyID0gJ1snICsgcnNWYXJSYW5nZSArICddPycsXG4gICAgcnNPcHRKb2luID0gJyg/OicgKyByc1pXSiArICcoPzonICsgW3JzTm9uQXN0cmFsLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyXS5qb2luKCd8JykgKyAnKScgKyByc09wdFZhciArIHJlT3B0TW9kICsgJykqJyxcbiAgICByc1NlcSA9IHJzT3B0VmFyICsgcmVPcHRNb2QgKyByc09wdEpvaW4sXG4gICAgcnNTeW1ib2wgPSAnKD86JyArIFtyc05vbkFzdHJhbCArIHJzQ29tYm8gKyAnPycsIHJzQ29tYm8sIHJzUmVnaW9uYWwsIHJzU3VyclBhaXIsIHJzQXN0cmFsXS5qb2luKCd8JykgKyAnKSc7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIFtzdHJpbmcgc3ltYm9sc10oaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtdW5pY29kZSkuICovXG52YXIgcmVVbmljb2RlID0gUmVnRXhwKHJzRml0eiArICcoPz0nICsgcnNGaXR6ICsgJyl8JyArIHJzU3ltYm9sICsgcnNTZXEsICdnJyk7XG5cbi8qKlxuICogQ29udmVydHMgYSBVbmljb2RlIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiB1bmljb2RlVG9BcnJheShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5tYXRjaChyZVVuaWNvZGUpIHx8IFtdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHVuaWNvZGVUb0FycmF5O1xuIiwidmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqXG4gKiBDYXN0cyBgdmFsdWVgIGFzIGFuIGFycmF5IGlmIGl0J3Mgbm90IG9uZS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuNC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY2FzdCBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5jYXN0QXJyYXkoMSk7XG4gKiAvLyA9PiBbMV1cbiAqXG4gKiBfLmNhc3RBcnJheSh7ICdhJzogMSB9KTtcbiAqIC8vID0+IFt7ICdhJzogMSB9XVxuICpcbiAqIF8uY2FzdEFycmF5KCdhYmMnKTtcbiAqIC8vID0+IFsnYWJjJ11cbiAqXG4gKiBfLmNhc3RBcnJheShudWxsKTtcbiAqIC8vID0+IFtudWxsXVxuICpcbiAqIF8uY2FzdEFycmF5KHVuZGVmaW5lZCk7XG4gKiAvLyA9PiBbdW5kZWZpbmVkXVxuICpcbiAqIF8uY2FzdEFycmF5KCk7XG4gKiAvLyA9PiBbXVxuICpcbiAqIHZhciBhcnJheSA9IFsxLCAyLCAzXTtcbiAqIGNvbnNvbGUubG9nKF8uY2FzdEFycmF5KGFycmF5KSA9PT0gYXJyYXkpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBjYXN0QXJyYXkoKSB7XG4gIGlmICghYXJndW1lbnRzLmxlbmd0aCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICB2YXIgdmFsdWUgPSBhcmd1bWVudHNbMF07XG4gIHJldHVybiBpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYXN0QXJyYXk7XG4iLCJ2YXIgYmFzZUNsb25lID0gcmVxdWlyZSgnLi9fYmFzZUNsb25lJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfU1lNQk9MU19GTEFHID0gNDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgc2hhbGxvdyBjbG9uZSBvZiBgdmFsdWVgLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uIHRoZVxuICogW3N0cnVjdHVyZWQgY2xvbmUgYWxnb3JpdGhtXShodHRwczovL21kbi5pby9TdHJ1Y3R1cmVkX2Nsb25lX2FsZ29yaXRobSlcbiAqIGFuZCBzdXBwb3J0cyBjbG9uaW5nIGFycmF5cywgYXJyYXkgYnVmZmVycywgYm9vbGVhbnMsIGRhdGUgb2JqZWN0cywgbWFwcyxcbiAqIG51bWJlcnMsIGBPYmplY3RgIG9iamVjdHMsIHJlZ2V4ZXMsIHNldHMsIHN0cmluZ3MsIHN5bWJvbHMsIGFuZCB0eXBlZFxuICogYXJyYXlzLiBUaGUgb3duIGVudW1lcmFibGUgcHJvcGVydGllcyBvZiBgYXJndW1lbnRzYCBvYmplY3RzIGFyZSBjbG9uZWRcbiAqIGFzIHBsYWluIG9iamVjdHMuIEFuIGVtcHR5IG9iamVjdCBpcyByZXR1cm5lZCBmb3IgdW5jbG9uZWFibGUgdmFsdWVzIHN1Y2hcbiAqIGFzIGVycm9yIG9iamVjdHMsIGZ1bmN0aW9ucywgRE9NIG5vZGVzLCBhbmQgV2Vha01hcHMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGNsb25lZCB2YWx1ZS5cbiAqIEBzZWUgXy5jbG9uZURlZXBcbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBbeyAnYSc6IDEgfSwgeyAnYic6IDIgfV07XG4gKlxuICogdmFyIHNoYWxsb3cgPSBfLmNsb25lKG9iamVjdHMpO1xuICogY29uc29sZS5sb2coc2hhbGxvd1swXSA9PT0gb2JqZWN0c1swXSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGNsb25lKHZhbHVlKSB7XG4gIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX1NZTUJPTFNfRkxBRyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmU7XG4iLCJ2YXIgYmFzZUNsb25lID0gcmVxdWlyZSgnLi9fYmFzZUNsb25lJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfREVFUF9GTEFHID0gMSxcbiAgICBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY2xvbmVgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGNsb25lcyBgdmFsdWVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZWN1cnNpdmVseSBjbG9uZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBkZWVwIGNsb25lZCB2YWx1ZS5cbiAqIEBzZWUgXy5jbG9uZVxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFt7ICdhJzogMSB9LCB7ICdiJzogMiB9XTtcbiAqXG4gKiB2YXIgZGVlcCA9IF8uY2xvbmVEZWVwKG9iamVjdHMpO1xuICogY29uc29sZS5sb2coZGVlcFswXSA9PT0gb2JqZWN0c1swXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBjbG9uZURlZXAodmFsdWUpIHtcbiAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfREVFUF9GTEFHIHwgQ0xPTkVfU1lNQk9MU19GTEFHKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZURlZXA7XG4iLCJ2YXIgYmFzZUNsb25lID0gcmVxdWlyZSgnLi9fYmFzZUNsb25lJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfREVFUF9GTEFHID0gMSxcbiAgICBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY2xvbmVXaXRoYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBjbG9uZXMgYHZhbHVlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmVjdXJzaXZlbHkgY2xvbmUuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGRlZXAgY2xvbmVkIHZhbHVlLlxuICogQHNlZSBfLmNsb25lV2l0aFxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBjdXN0b21pemVyKHZhbHVlKSB7XG4gKiAgIGlmIChfLmlzRWxlbWVudCh2YWx1ZSkpIHtcbiAqICAgICByZXR1cm4gdmFsdWUuY2xvbmVOb2RlKHRydWUpO1xuICogICB9XG4gKiB9XG4gKlxuICogdmFyIGVsID0gXy5jbG9uZURlZXBXaXRoKGRvY3VtZW50LmJvZHksIGN1c3RvbWl6ZXIpO1xuICpcbiAqIGNvbnNvbGUubG9nKGVsID09PSBkb2N1bWVudC5ib2R5KTtcbiAqIC8vID0+IGZhbHNlXG4gKiBjb25zb2xlLmxvZyhlbC5ub2RlTmFtZSk7XG4gKiAvLyA9PiAnQk9EWSdcbiAqIGNvbnNvbGUubG9nKGVsLmNoaWxkTm9kZXMubGVuZ3RoKTtcbiAqIC8vID0+IDIwXG4gKi9cbmZ1bmN0aW9uIGNsb25lRGVlcFdpdGgodmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9ERUVQX0ZMQUcgfCBDTE9ORV9TWU1CT0xTX0ZMQUcsIGN1c3RvbWl6ZXIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lRGVlcFdpdGg7XG4iLCJ2YXIgYmFzZUNsb25lID0gcmVxdWlyZSgnLi9fYmFzZUNsb25lJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfU1lNQk9MU19GTEFHID0gNDtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmNsb25lYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaFxuICogaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBjbG9uZWQgdmFsdWUuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLFxuICogY2xvbmluZyBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGhcbiAqIHVwIHRvIGZvdXIgYXJndW1lbnRzOyAodmFsdWUgWywgaW5kZXh8a2V5LCBvYmplY3QsIHN0YWNrXSkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gKiBAc2VlIF8uY2xvbmVEZWVwV2l0aFxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBjdXN0b21pemVyKHZhbHVlKSB7XG4gKiAgIGlmIChfLmlzRWxlbWVudCh2YWx1ZSkpIHtcbiAqICAgICByZXR1cm4gdmFsdWUuY2xvbmVOb2RlKGZhbHNlKTtcbiAqICAgfVxuICogfVxuICpcbiAqIHZhciBlbCA9IF8uY2xvbmVXaXRoKGRvY3VtZW50LmJvZHksIGN1c3RvbWl6ZXIpO1xuICpcbiAqIGNvbnNvbGUubG9nKGVsID09PSBkb2N1bWVudC5ib2R5KTtcbiAqIC8vID0+IGZhbHNlXG4gKiBjb25zb2xlLmxvZyhlbC5ub2RlTmFtZSk7XG4gKiAvLyA9PiAnQk9EWSdcbiAqIGNvbnNvbGUubG9nKGVsLmNoaWxkTm9kZXMubGVuZ3RoKTtcbiAqIC8vID0+IDBcbiAqL1xuZnVuY3Rpb24gY2xvbmVXaXRoKHZhbHVlLCBjdXN0b21pemVyKSB7XG4gIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfU1lNQk9MU19GTEFHLCBjdXN0b21pemVyKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZVdpdGg7XG4iLCJ2YXIgYmFzZUNvbmZvcm1zVG8gPSByZXF1aXJlKCcuL19iYXNlQ29uZm9ybXNUbycpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYG9iamVjdGAgY29uZm9ybXMgdG8gYHNvdXJjZWAgYnkgaW52b2tpbmcgdGhlIHByZWRpY2F0ZVxuICogcHJvcGVydGllcyBvZiBgc291cmNlYCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IHZhbHVlcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgZXF1aXZhbGVudCB0byBgXy5jb25mb3Jtc2Agd2hlbiBgc291cmNlYCBpc1xuICogcGFydGlhbGx5IGFwcGxpZWQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjE0LjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSBwcmVkaWNhdGVzIHRvIGNvbmZvcm0gdG8uXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgY29uZm9ybXMsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAqXG4gKiBfLmNvbmZvcm1zVG8ob2JqZWN0LCB7ICdiJzogZnVuY3Rpb24obikgeyByZXR1cm4gbiA+IDE7IH0gfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5jb25mb3Jtc1RvKG9iamVjdCwgeyAnYic6IGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG4gPiAyOyB9IH0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gY29uZm9ybXNUbyhvYmplY3QsIHNvdXJjZSkge1xuICByZXR1cm4gc291cmNlID09IG51bGwgfHwgYmFzZUNvbmZvcm1zVG8ob2JqZWN0LCBzb3VyY2UsIGtleXMoc291cmNlKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29uZm9ybXNUbztcbiIsIi8qKlxuICogUGVyZm9ybXMgYVxuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBlcXVpdmFsZW50LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAqXG4gKiBfLmVxKG9iamVjdCwgb2JqZWN0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKCdhJywgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKCdhJywgT2JqZWN0KCdhJykpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKE5hTiwgTmFOKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gZXEodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gb3RoZXIgfHwgKHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxO1xuIiwidmFyIGJhc2VHdCA9IHJlcXVpcmUoJy4vX2Jhc2VHdCcpLFxuICAgIGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24gPSByZXF1aXJlKCcuL19jcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjkuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQHNlZSBfLmx0XG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZ3QoMywgMSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5ndCgzLCAzKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5ndCgxLCAzKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBndCA9IGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24oYmFzZUd0KTtcblxubW9kdWxlLmV4cG9ydHMgPSBndDtcbiIsInZhciBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uID0gcmVxdWlyZSgnLi9fY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbicpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgb3RoZXJgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy45LjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0b1xuICogIGBvdGhlcmAsIGVsc2UgYGZhbHNlYC5cbiAqIEBzZWUgXy5sdGVcbiAqIEBleGFtcGxlXG4gKlxuICogXy5ndGUoMywgMSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5ndGUoMywgMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5ndGUoMSwgMyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgZ3RlID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihmdW5jdGlvbih2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIHZhbHVlID49IG90aGVyO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ3RlO1xuIiwidmFyIGJhc2VJc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vX2Jhc2VJc0FyZ3VtZW50cycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FyZ3VtZW50cyA9IGJhc2VJc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA/IGJhc2VJc0FyZ3VtZW50cyA6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCAnY2FsbGVlJyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJndW1lbnRzO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheWAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheTtcbiIsInZhciBiYXNlSXNBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Jhc2VJc0FycmF5QnVmZmVyJyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc0FycmF5QnVmZmVyID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNBcnJheUJ1ZmZlcjtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheUJ1ZmZlcmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4zLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5IGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlCdWZmZXIobmV3IEFycmF5QnVmZmVyKDIpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlCdWZmZXIobmV3IEFycmF5KDIpKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FycmF5QnVmZmVyID0gbm9kZUlzQXJyYXlCdWZmZXIgPyBiYXNlVW5hcnkobm9kZUlzQXJyYXlCdWZmZXIpIDogYmFzZUlzQXJyYXlCdWZmZXI7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheUJ1ZmZlcjtcbiIsInZhciBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZS4gQSB2YWx1ZSBpcyBjb25zaWRlcmVkIGFycmF5LWxpa2UgaWYgaXQnc1xuICogbm90IGEgZnVuY3Rpb24gYW5kIGhhcyBhIGB2YWx1ZS5sZW5ndGhgIHRoYXQncyBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvclxuICogZXF1YWwgdG8gYDBgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE51bWJlci5NQVhfU0FGRV9JTlRFR0VSYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgIWlzRnVuY3Rpb24odmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXlMaWtlO1xuIiwidmFyIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0FycmF5TGlrZWAgZXhjZXB0IHRoYXQgaXQgYWxzbyBjaGVja3MgaWYgYHZhbHVlYFxuICogaXMgYW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LWxpa2Ugb2JqZWN0LFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGlzQXJyYXlMaWtlKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5TGlrZU9iamVjdDtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBib29sZWFuIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBib29sZWFuLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNCb29sZWFuKGZhbHNlKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQm9vbGVhbihudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQm9vbGVhbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IGZhbHNlIHx8XG4gICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYm9vbFRhZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNCb29sZWFuO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290JyksXG4gICAgc3R1YkZhbHNlID0gcmVxdWlyZSgnLi9zdHViRmFsc2UnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBCdWZmZXIgPSBtb2R1bGVFeHBvcnRzID8gcm9vdC5CdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVJc0J1ZmZlciA9IEJ1ZmZlciA/IEJ1ZmZlci5pc0J1ZmZlciA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBCdWZmZXIoMikpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNCdWZmZXIobmV3IFVpbnQ4QXJyYXkoMikpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQnVmZmVyID0gbmF0aXZlSXNCdWZmZXIgfHwgc3R1YkZhbHNlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQnVmZmVyO1xuIiwidmFyIGJhc2VJc0RhdGUgPSByZXF1aXJlKCcuL19iYXNlSXNEYXRlJyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc0RhdGUgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc0RhdGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBEYXRlYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBkYXRlIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRGF0ZShuZXcgRGF0ZSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0RhdGUoJ01vbiBBcHJpbCAyMyAyMDEyJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNEYXRlID0gbm9kZUlzRGF0ZSA/IGJhc2VVbmFyeShub2RlSXNEYXRlKSA6IGJhc2VJc0RhdGU7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNEYXRlO1xuIiwidmFyIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyksXG4gICAgaXNQbGFpbk9iamVjdCA9IHJlcXVpcmUoJy4vaXNQbGFpbk9iamVjdCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIERPTSBlbGVtZW50LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgRE9NIGVsZW1lbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0VsZW1lbnQoZG9jdW1lbnQuYm9keSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0VsZW1lbnQoJzxib2R5PicpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNFbGVtZW50KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIHZhbHVlLm5vZGVUeXBlID09PSAxICYmICFpc1BsYWluT2JqZWN0KHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0VsZW1lbnQ7XG4iLCJ2YXIgYmFzZUtleXMgPSByZXF1aXJlKCcuL19iYXNlS2V5cycpLFxuICAgIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc1Byb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2lzUHJvdG90eXBlJyksXG4gICAgaXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9pc1R5cGVkQXJyYXknKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGVtcHR5IG9iamVjdCwgY29sbGVjdGlvbiwgbWFwLCBvciBzZXQuXG4gKlxuICogT2JqZWN0cyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgbm8gb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkXG4gKiBwcm9wZXJ0aWVzLlxuICpcbiAqIEFycmF5LWxpa2UgdmFsdWVzIHN1Y2ggYXMgYGFyZ3VtZW50c2Agb2JqZWN0cywgYXJyYXlzLCBidWZmZXJzLCBzdHJpbmdzLCBvclxuICogalF1ZXJ5LWxpa2UgY29sbGVjdGlvbnMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIGEgYGxlbmd0aGAgb2YgYDBgLlxuICogU2ltaWxhcmx5LCBtYXBzIGFuZCBzZXRzIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBhIGBzaXplYCBvZiBgMGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZW1wdHksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0VtcHR5KG51bGwpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNFbXB0eSh0cnVlKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRW1wdHkoMSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0VtcHR5KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNFbXB0eSh7ICdhJzogMSB9KTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoaXNBcnJheUxpa2UodmFsdWUpICYmXG4gICAgICAoaXNBcnJheSh2YWx1ZSkgfHwgdHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZS5zcGxpY2UgPT0gJ2Z1bmN0aW9uJyB8fFxuICAgICAgICBpc0J1ZmZlcih2YWx1ZSkgfHwgaXNUeXBlZEFycmF5KHZhbHVlKSB8fCBpc0FyZ3VtZW50cyh2YWx1ZSkpKSB7XG4gICAgcmV0dXJuICF2YWx1ZS5sZW5ndGg7XG4gIH1cbiAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSk7XG4gIGlmICh0YWcgPT0gbWFwVGFnIHx8IHRhZyA9PSBzZXRUYWcpIHtcbiAgICByZXR1cm4gIXZhbHVlLnNpemU7XG4gIH1cbiAgaWYgKGlzUHJvdG90eXBlKHZhbHVlKSkge1xuICAgIHJldHVybiAhYmFzZUtleXModmFsdWUpLmxlbmd0aDtcbiAgfVxuICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0VtcHR5O1xuIiwidmFyIGJhc2VJc0VxdWFsID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWwnKTtcblxuLyoqXG4gKiBQZXJmb3JtcyBhIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlXG4gKiBlcXVpdmFsZW50LlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBzdXBwb3J0cyBjb21wYXJpbmcgYXJyYXlzLCBhcnJheSBidWZmZXJzLCBib29sZWFucyxcbiAqIGRhdGUgb2JqZWN0cywgZXJyb3Igb2JqZWN0cywgbWFwcywgbnVtYmVycywgYE9iamVjdGAgb2JqZWN0cywgcmVnZXhlcyxcbiAqIHNldHMsIHN0cmluZ3MsIHN5bWJvbHMsIGFuZCB0eXBlZCBhcnJheXMuIGBPYmplY3RgIG9iamVjdHMgYXJlIGNvbXBhcmVkXG4gKiBieSB0aGVpciBvd24sIG5vdCBpbmhlcml0ZWQsIGVudW1lcmFibGUgcHJvcGVydGllcy4gRnVuY3Rpb25zIGFuZCBET01cbiAqIG5vZGVzIGFyZSBjb21wYXJlZCBieSBzdHJpY3QgZXF1YWxpdHksIGkuZS4gYD09PWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICpcbiAqIF8uaXNFcXVhbChvYmplY3QsIG90aGVyKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBvYmplY3QgPT09IG90aGVyO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNFcXVhbCh2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlcik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNFcXVhbDtcbiIsInZhciBiYXNlSXNFcXVhbCA9IHJlcXVpcmUoJy4vX2Jhc2VJc0VxdWFsJyk7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0VxdWFsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaFxuICogaXMgaW52b2tlZCB0byBjb21wYXJlIHZhbHVlcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsIGNvbXBhcmlzb25zXG4gKiBhcmUgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoIHVwIHRvXG4gKiBzaXggYXJndW1lbnRzOiAob2JqVmFsdWUsIG90aFZhbHVlIFssIGluZGV4fGtleSwgb2JqZWN0LCBvdGhlciwgc3RhY2tdKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIGlzR3JlZXRpbmcodmFsdWUpIHtcbiAqICAgcmV0dXJuIC9eaCg/Oml8ZWxsbykkLy50ZXN0KHZhbHVlKTtcbiAqIH1cbiAqXG4gKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBvdGhWYWx1ZSkge1xuICogICBpZiAoaXNHcmVldGluZyhvYmpWYWx1ZSkgJiYgaXNHcmVldGluZyhvdGhWYWx1ZSkpIHtcbiAqICAgICByZXR1cm4gdHJ1ZTtcbiAqICAgfVxuICogfVxuICpcbiAqIHZhciBhcnJheSA9IFsnaGVsbG8nLCAnZ29vZGJ5ZSddO1xuICogdmFyIG90aGVyID0gWydoaScsICdnb29kYnllJ107XG4gKlxuICogXy5pc0VxdWFsV2l0aChhcnJheSwgb3RoZXIsIGN1c3RvbWl6ZXIpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc0VxdWFsV2l0aCh2YWx1ZSwgb3RoZXIsIGN1c3RvbWl6ZXIpIHtcbiAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICB2YXIgcmVzdWx0ID0gY3VzdG9taXplciA/IGN1c3RvbWl6ZXIodmFsdWUsIG90aGVyKSA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIHJlc3VsdCA9PT0gdW5kZWZpbmVkID8gYmFzZUlzRXF1YWwodmFsdWUsIG90aGVyLCB1bmRlZmluZWQsIGN1c3RvbWl6ZXIpIDogISFyZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNFcXVhbFdpdGg7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpLFxuICAgIGlzUGxhaW5PYmplY3QgPSByZXF1aXJlKCcuL2lzUGxhaW5PYmplY3QnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGRvbUV4Y1RhZyA9ICdbb2JqZWN0IERPTUV4Y2VwdGlvbl0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBgRXJyb3JgLCBgRXZhbEVycm9yYCwgYFJhbmdlRXJyb3JgLCBgUmVmZXJlbmNlRXJyb3JgLFxuICogYFN5bnRheEVycm9yYCwgYFR5cGVFcnJvcmAsIG9yIGBVUklFcnJvcmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGVycm9yIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRXJyb3IobmV3IEVycm9yKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRXJyb3IoRXJyb3IpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNFcnJvcih2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICByZXR1cm4gdGFnID09IGVycm9yVGFnIHx8IHRhZyA9PSBkb21FeGNUYWcgfHxcbiAgICAodHlwZW9mIHZhbHVlLm1lc3NhZ2UgPT0gJ3N0cmluZycgJiYgdHlwZW9mIHZhbHVlLm5hbWUgPT0gJ3N0cmluZycgJiYgIWlzUGxhaW5PYmplY3QodmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0Vycm9yO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVJc0Zpbml0ZSA9IHJvb3QuaXNGaW5pdGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBmaW5pdGUgcHJpbWl0aXZlIG51bWJlci5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAqIFtgTnVtYmVyLmlzRmluaXRlYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzRmluaXRlKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGZpbml0ZSBudW1iZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Zpbml0ZSgzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRmluaXRlKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGaW5pdGUoSW5maW5pdHkpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzRmluaXRlKCczJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Zpbml0ZSh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmIG5hdGl2ZUlzRmluaXRlKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0Zpbml0ZTtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXN5bmNUYWcgPSAnW29iamVjdCBBc3luY0Z1bmN0aW9uXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICBwcm94eVRhZyA9ICdbb2JqZWN0IFByb3h5XSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBGdW5jdGlvbmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Z1bmN0aW9uKF8pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAvLyBpbiBTYWZhcmkgOSB3aGljaCByZXR1cm5zICdvYmplY3QnIGZvciB0eXBlZCBhcnJheXMgYW5kIG90aGVyIGNvbnN0cnVjdG9ycy5cbiAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICByZXR1cm4gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZyB8fCB0YWcgPT0gYXN5bmNUYWcgfHwgdGFnID09IHByb3h5VGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRnVuY3Rpb247XG4iLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi90b0ludGVnZXInKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBpbnRlZ2VyLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICogW2BOdW1iZXIuaXNJbnRlZ2VyYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzSW50ZWdlcikuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gaW50ZWdlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzSW50ZWdlcigzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0ludGVnZXIoSW5maW5pdHkpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzSW50ZWdlcignMycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNJbnRlZ2VyKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiYgdmFsdWUgPT0gdG9JbnRlZ2VyKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0ludGVnZXI7XG4iLCIvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNMZW5ndGgoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNMZW5ndGg7XG4iLCJ2YXIgYmFzZUlzTWFwID0gcmVxdWlyZSgnLi9fYmFzZUlzTWFwJyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc01hcCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzTWFwO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgTWFwYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBtYXAsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc01hcChuZXcgTWFwKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTWFwKG5ldyBXZWFrTWFwKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc01hcCA9IG5vZGVJc01hcCA/IGJhc2VVbmFyeShub2RlSXNNYXApIDogYmFzZUlzTWFwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTWFwO1xuIiwidmFyIGJhc2VJc01hdGNoID0gcmVxdWlyZSgnLi9fYmFzZUlzTWF0Y2gnKSxcbiAgICBnZXRNYXRjaERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXRjaERhdGEnKTtcblxuLyoqXG4gKiBQZXJmb3JtcyBhIHBhcnRpYWwgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gYG9iamVjdGAgYW5kIGBzb3VyY2VgIHRvXG4gKiBkZXRlcm1pbmUgaWYgYG9iamVjdGAgY29udGFpbnMgZXF1aXZhbGVudCBwcm9wZXJ0eSB2YWx1ZXMuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQgdG8gYF8ubWF0Y2hlc2Agd2hlbiBgc291cmNlYCBpc1xuICogcGFydGlhbGx5IGFwcGxpZWQuXG4gKlxuICogUGFydGlhbCBjb21wYXJpc29ucyB3aWxsIG1hdGNoIGVtcHR5IGFycmF5IGFuZCBlbXB0eSBvYmplY3QgYHNvdXJjZWBcbiAqIHZhbHVlcyBhZ2FpbnN0IGFueSBhcnJheSBvciBvYmplY3QgdmFsdWUsIHJlc3BlY3RpdmVseS4gU2VlIGBfLmlzRXF1YWxgXG4gKiBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCB2YWx1ZSBjb21wYXJpc29ucy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGlzIGEgbWF0Y2gsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAqXG4gKiBfLmlzTWF0Y2gob2JqZWN0LCB7ICdiJzogMiB9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTWF0Y2gob2JqZWN0LCB7ICdiJzogMSB9KTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTWF0Y2gob2JqZWN0LCBzb3VyY2UpIHtcbiAgcmV0dXJuIG9iamVjdCA9PT0gc291cmNlIHx8IGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBnZXRNYXRjaERhdGEoc291cmNlKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNNYXRjaDtcbiIsInZhciBiYXNlSXNNYXRjaCA9IHJlcXVpcmUoJy4vX2Jhc2VJc01hdGNoJyksXG4gICAgZ2V0TWF0Y2hEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWF0Y2hEYXRhJyk7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc01hdGNoYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaFxuICogaXMgaW52b2tlZCB0byBjb21wYXJlIHZhbHVlcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsIGNvbXBhcmlzb25zXG4gKiBhcmUgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoIGZpdmVcbiAqIGFyZ3VtZW50czogKG9ialZhbHVlLCBzcmNWYWx1ZSwgaW5kZXh8a2V5LCBvYmplY3QsIHNvdXJjZSkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGlzIGEgbWF0Y2gsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gaXNHcmVldGluZyh2YWx1ZSkge1xuICogICByZXR1cm4gL15oKD86aXxlbGxvKSQvLnRlc3QodmFsdWUpO1xuICogfVxuICpcbiAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gKiAgIGlmIChpc0dyZWV0aW5nKG9ialZhbHVlKSAmJiBpc0dyZWV0aW5nKHNyY1ZhbHVlKSkge1xuICogICAgIHJldHVybiB0cnVlO1xuICogICB9XG4gKiB9XG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2dyZWV0aW5nJzogJ2hlbGxvJyB9O1xuICogdmFyIHNvdXJjZSA9IHsgJ2dyZWV0aW5nJzogJ2hpJyB9O1xuICpcbiAqIF8uaXNNYXRjaFdpdGgob2JqZWN0LCBzb3VyY2UsIGN1c3RvbWl6ZXIpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc01hdGNoV2l0aChvYmplY3QsIHNvdXJjZSwgY3VzdG9taXplcikge1xuICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gIHJldHVybiBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgZ2V0TWF0Y2hEYXRhKHNvdXJjZSksIGN1c3RvbWl6ZXIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTWF0Y2hXaXRoO1xuIiwidmFyIGlzTnVtYmVyID0gcmVxdWlyZSgnLi9pc051bWJlcicpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGBOYU5gLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICogW2BOdW1iZXIuaXNOYU5gXShodHRwczovL21kbi5pby9OdW1iZXIvaXNOYU4pIGFuZCBpcyBub3QgdGhlIHNhbWUgYXNcbiAqIGdsb2JhbCBbYGlzTmFOYF0oaHR0cHM6Ly9tZG4uaW8vaXNOYU4pIHdoaWNoIHJldHVybnMgYHRydWVgIGZvclxuICogYHVuZGVmaW5lZGAgYW5kIG90aGVyIG5vbi1udW1iZXIgdmFsdWVzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGBOYU5gLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNOYU4oTmFOKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTmFOKG5ldyBOdW1iZXIoTmFOKSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNOYU4odW5kZWZpbmVkKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTmFOKHVuZGVmaW5lZCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc05hTih2YWx1ZSkge1xuICAvLyBBbiBgTmFOYCBwcmltaXRpdmUgaXMgdGhlIG9ubHkgdmFsdWUgdGhhdCBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLlxuICAvLyBQZXJmb3JtIHRoZSBgdG9TdHJpbmdUYWdgIGNoZWNrIGZpcnN0IHRvIGF2b2lkIGVycm9ycyB3aXRoIHNvbWVcbiAgLy8gQWN0aXZlWCBvYmplY3RzIGluIElFLlxuICByZXR1cm4gaXNOdW1iZXIodmFsdWUpICYmIHZhbHVlICE9ICt2YWx1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc05hTjtcbiIsInZhciBiYXNlSXNOYXRpdmUgPSByZXF1aXJlKCcuL19iYXNlSXNOYXRpdmUnKSxcbiAgICBpc01hc2thYmxlID0gcmVxdWlyZSgnLi9faXNNYXNrYWJsZScpO1xuXG4vKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG52YXIgQ09SRV9FUlJPUl9URVhUID0gJ1Vuc3VwcG9ydGVkIGNvcmUtanMgdXNlLiBUcnkgaHR0cHM6Ly9ucG1zLmlvL3NlYXJjaD9xPXBvbnlmaWxsLic7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwcmlzdGluZSBuYXRpdmUgZnVuY3Rpb24uXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGNhbid0IHJlbGlhYmx5IGRldGVjdCBuYXRpdmUgZnVuY3Rpb25zIGluIHRoZSBwcmVzZW5jZVxuICogb2YgdGhlIGNvcmUtanMgcGFja2FnZSBiZWNhdXNlIGNvcmUtanMgY2lyY3VtdmVudHMgdGhpcyBraW5kIG9mIGRldGVjdGlvbi5cbiAqIERlc3BpdGUgbXVsdGlwbGUgcmVxdWVzdHMsIHRoZSBjb3JlLWpzIG1haW50YWluZXIgaGFzIG1hZGUgaXQgY2xlYXI6IGFueVxuICogYXR0ZW1wdCB0byBmaXggdGhlIGRldGVjdGlvbiB3aWxsIGJlIG9ic3RydWN0ZWQuIEFzIGEgcmVzdWx0LCB3ZSdyZSBsZWZ0XG4gKiB3aXRoIGxpdHRsZSBjaG9pY2UgYnV0IHRvIHRocm93IGFuIGVycm9yLiBVbmZvcnR1bmF0ZWx5LCB0aGlzIGFsc28gYWZmZWN0c1xuICogcGFja2FnZXMsIGxpa2UgW2JhYmVsLXBvbHlmaWxsXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iYWJlbC1wb2x5ZmlsbCksXG4gKiB3aGljaCByZWx5IG9uIGNvcmUtanMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTmF0aXZlKEFycmF5LnByb3RvdHlwZS5wdXNoKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTmF0aXZlKF8pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNOYXRpdmUodmFsdWUpIHtcbiAgaWYgKGlzTWFza2FibGUodmFsdWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKENPUkVfRVJST1JfVEVYVCk7XG4gIH1cbiAgcmV0dXJuIGJhc2VJc05hdGl2ZSh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNOYXRpdmU7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBudWxsaXNoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNOaWwobnVsbCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc05pbCh2b2lkIDApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOaWwoTmFOKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTmlsKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTmlsO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgbnVsbGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYG51bGxgLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNOdWxsKG51bGwpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOdWxsKHZvaWQgMCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc051bGwodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTnVsbDtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYE51bWJlcmAgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiAqKk5vdGU6KiogVG8gZXhjbHVkZSBgSW5maW5pdHlgLCBgLUluZmluaXR5YCwgYW5kIGBOYU5gLCB3aGljaCBhcmVcbiAqIGNsYXNzaWZpZWQgYXMgbnVtYmVycywgdXNlIHRoZSBgXy5pc0Zpbml0ZWAgbWV0aG9kLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbnVtYmVyLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNOdW1iZXIoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTnVtYmVyKEluZmluaXR5KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTnVtYmVyKCczJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc051bWJlcih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInIHx8XG4gICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gbnVtYmVyVGFnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc051bWJlcjtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0O1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcbiAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZSh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNPYmplY3RMaWtlO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gaW5mZXIgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xudmFyIG9iamVjdEN0b3JTdHJpbmcgPSBmdW5jVG9TdHJpbmcuY2FsbChPYmplY3QpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCB0aGF0IGlzLCBhbiBvYmplY3QgY3JlYXRlZCBieSB0aGVcbiAqIGBPYmplY3RgIGNvbnN0cnVjdG9yIG9yIG9uZSB3aXRoIGEgYFtbUHJvdG90eXBlXV1gIG9mIGBudWxsYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuOC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiB9XG4gKlxuICogXy5pc1BsYWluT2JqZWN0KG5ldyBGb28pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KHsgJ3gnOiAwLCAneSc6IDAgfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fCBiYXNlR2V0VGFnKHZhbHVlKSAhPSBvYmplY3RUYWcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHByb3RvID0gZ2V0UHJvdG90eXBlKHZhbHVlKTtcbiAgaWYgKHByb3RvID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIEN0b3IgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3RvLCAnY29uc3RydWN0b3InKSAmJiBwcm90by5jb25zdHJ1Y3RvcjtcbiAgcmV0dXJuIHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3RvciBpbnN0YW5jZW9mIEN0b3IgJiZcbiAgICBmdW5jVG9TdHJpbmcuY2FsbChDdG9yKSA9PSBvYmplY3RDdG9yU3RyaW5nO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzUGxhaW5PYmplY3Q7XG4iLCJ2YXIgYmFzZUlzUmVnRXhwID0gcmVxdWlyZSgnLi9fYmFzZUlzUmVnRXhwJyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1JlZ0V4cCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzUmVnRXhwO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgUmVnRXhwYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSByZWdleHAsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1JlZ0V4cCgvYWJjLyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1JlZ0V4cCgnL2FiYy8nKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1JlZ0V4cCA9IG5vZGVJc1JlZ0V4cCA/IGJhc2VVbmFyeShub2RlSXNSZWdFeHApIDogYmFzZUlzUmVnRXhwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzUmVnRXhwO1xuIiwidmFyIGlzSW50ZWdlciA9IHJlcXVpcmUoJy4vaXNJbnRlZ2VyJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgc2FmZSBpbnRlZ2VyLiBBbiBpbnRlZ2VyIGlzIHNhZmUgaWYgaXQncyBhbiBJRUVFLTc1NFxuICogZG91YmxlIHByZWNpc2lvbiBudW1iZXIgd2hpY2ggaXNuJ3QgdGhlIHJlc3VsdCBvZiBhIHJvdW5kZWQgdW5zYWZlIGludGVnZXIuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gKiBbYE51bWJlci5pc1NhZmVJbnRlZ2VyYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzU2FmZUludGVnZXIpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2FmZSBpbnRlZ2VyLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTYWZlSW50ZWdlcigzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU2FmZUludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNTYWZlSW50ZWdlcihJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNTYWZlSW50ZWdlcignMycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTYWZlSW50ZWdlcih2YWx1ZSkge1xuICByZXR1cm4gaXNJbnRlZ2VyKHZhbHVlKSAmJiB2YWx1ZSA+PSAtTUFYX1NBRkVfSU5URUdFUiAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU2FmZUludGVnZXI7XG4iLCJ2YXIgYmFzZUlzU2V0ID0gcmVxdWlyZSgnLi9fYmFzZUlzU2V0JyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1NldCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzU2V0O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU2V0YCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzZXQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1NldChuZXcgU2V0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU2V0KG5ldyBXZWFrU2V0KTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1NldCA9IG5vZGVJc1NldCA/IGJhc2VVbmFyeShub2RlSXNTZXQpIDogYmFzZUlzU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU2V0O1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN0cmluZ2AgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN0cmluZywgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3RyaW5nKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3RyaW5nKDEpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fFxuICAgICghaXNBcnJheSh2YWx1ZSkgJiYgaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzdHJpbmdUYWcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3RyaW5nO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3ltYm9sYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3ltYm9sLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTeW1ib2woU3ltYm9sLml0ZXJhdG9yKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3ltYm9sKCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N5bWJvbCcgfHxcbiAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzeW1ib2xUYWcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3ltYm9sO1xuIiwidmFyIGJhc2VJc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL19iYXNlSXNUeXBlZEFycmF5JyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1R5cGVkQXJyYXkgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1R5cGVkQXJyYXk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkobmV3IFVpbnQ4QXJyYXkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KFtdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1R5cGVkQXJyYXkgPSBub2RlSXNUeXBlZEFycmF5ID8gYmFzZVVuYXJ5KG5vZGVJc1R5cGVkQXJyYXkpIDogYmFzZUlzVHlwZWRBcnJheTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc1R5cGVkQXJyYXk7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGB1bmRlZmluZWRgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGB1bmRlZmluZWRgLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNVbmRlZmluZWQodm9pZCAwKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVW5kZWZpbmVkKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNVbmRlZmluZWQ7XG4iLCJ2YXIgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBXZWFrTWFwYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB3ZWFrIG1hcCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzV2Vha01hcChuZXcgV2Vha01hcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1dlYWtNYXAobmV3IE1hcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1dlYWtNYXAodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSB3ZWFrTWFwVGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzV2Vha01hcDtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciB3ZWFrU2V0VGFnID0gJ1tvYmplY3QgV2Vha1NldF0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgV2Vha1NldGAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4zLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgd2VhayBzZXQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1dlYWtTZXQobmV3IFdlYWtTZXQpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNXZWFrU2V0KG5ldyBTZXQpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNXZWFrU2V0KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHdlYWtTZXRUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNXZWFrU2V0O1xuIiwidmFyIGFycmF5TGlrZUtleXMgPSByZXF1aXJlKCcuL19hcnJheUxpa2VLZXlzJyksXG4gICAgYmFzZUtleXMgPSByZXF1aXJlKCcuL19iYXNlS2V5cycpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLiBTZWUgdGhlXG4gKiBbRVMgc3BlY10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gKiBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8ua2V5cyhuZXcgRm9vKTtcbiAqIC8vID0+IFsnYScsICdiJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqXG4gKiBfLmtleXMoJ2hpJyk7XG4gKiAvLyA9PiBbJzAnLCAnMSddXG4gKi9cbmZ1bmN0aW9uIGtleXMob2JqZWN0KSB7XG4gIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QpIDogYmFzZUtleXMob2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBrZXlzO1xuIiwidmFyIGFycmF5TGlrZUtleXMgPSByZXF1aXJlKCcuL19hcnJheUxpa2VLZXlzJyksXG4gICAgYmFzZUtleXNJbiA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzSW4nKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8ua2V5c0luKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InLCAnYyddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKi9cbmZ1bmN0aW9uIGtleXNJbihvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCwgdHJ1ZSkgOiBiYXNlS2V5c0luKG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ga2V5c0luO1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7XG4gICdjYXN0QXJyYXknOiByZXF1aXJlKCcuL2Nhc3RBcnJheScpLFxuICAnY2xvbmUnOiByZXF1aXJlKCcuL2Nsb25lJyksXG4gICdjbG9uZURlZXAnOiByZXF1aXJlKCcuL2Nsb25lRGVlcCcpLFxuICAnY2xvbmVEZWVwV2l0aCc6IHJlcXVpcmUoJy4vY2xvbmVEZWVwV2l0aCcpLFxuICAnY2xvbmVXaXRoJzogcmVxdWlyZSgnLi9jbG9uZVdpdGgnKSxcbiAgJ2NvbmZvcm1zVG8nOiByZXF1aXJlKCcuL2NvbmZvcm1zVG8nKSxcbiAgJ2VxJzogcmVxdWlyZSgnLi9lcScpLFxuICAnZ3QnOiByZXF1aXJlKCcuL2d0JyksXG4gICdndGUnOiByZXF1aXJlKCcuL2d0ZScpLFxuICAnaXNBcmd1bWVudHMnOiByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICdpc0FycmF5JzogcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICdpc0FycmF5QnVmZmVyJzogcmVxdWlyZSgnLi9pc0FycmF5QnVmZmVyJyksXG4gICdpc0FycmF5TGlrZSc6IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgJ2lzQXJyYXlMaWtlT2JqZWN0JzogcmVxdWlyZSgnLi9pc0FycmF5TGlrZU9iamVjdCcpLFxuICAnaXNCb29sZWFuJzogcmVxdWlyZSgnLi9pc0Jvb2xlYW4nKSxcbiAgJ2lzQnVmZmVyJzogcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAnaXNEYXRlJzogcmVxdWlyZSgnLi9pc0RhdGUnKSxcbiAgJ2lzRWxlbWVudCc6IHJlcXVpcmUoJy4vaXNFbGVtZW50JyksXG4gICdpc0VtcHR5JzogcmVxdWlyZSgnLi9pc0VtcHR5JyksXG4gICdpc0VxdWFsJzogcmVxdWlyZSgnLi9pc0VxdWFsJyksXG4gICdpc0VxdWFsV2l0aCc6IHJlcXVpcmUoJy4vaXNFcXVhbFdpdGgnKSxcbiAgJ2lzRXJyb3InOiByZXF1aXJlKCcuL2lzRXJyb3InKSxcbiAgJ2lzRmluaXRlJzogcmVxdWlyZSgnLi9pc0Zpbml0ZScpLFxuICAnaXNGdW5jdGlvbic6IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAnaXNJbnRlZ2VyJzogcmVxdWlyZSgnLi9pc0ludGVnZXInKSxcbiAgJ2lzTGVuZ3RoJzogcmVxdWlyZSgnLi9pc0xlbmd0aCcpLFxuICAnaXNNYXAnOiByZXF1aXJlKCcuL2lzTWFwJyksXG4gICdpc01hdGNoJzogcmVxdWlyZSgnLi9pc01hdGNoJyksXG4gICdpc01hdGNoV2l0aCc6IHJlcXVpcmUoJy4vaXNNYXRjaFdpdGgnKSxcbiAgJ2lzTmFOJzogcmVxdWlyZSgnLi9pc05hTicpLFxuICAnaXNOYXRpdmUnOiByZXF1aXJlKCcuL2lzTmF0aXZlJyksXG4gICdpc05pbCc6IHJlcXVpcmUoJy4vaXNOaWwnKSxcbiAgJ2lzTnVsbCc6IHJlcXVpcmUoJy4vaXNOdWxsJyksXG4gICdpc051bWJlcic6IHJlcXVpcmUoJy4vaXNOdW1iZXInKSxcbiAgJ2lzT2JqZWN0JzogcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAnaXNPYmplY3RMaWtlJzogcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKSxcbiAgJ2lzUGxhaW5PYmplY3QnOiByZXF1aXJlKCcuL2lzUGxhaW5PYmplY3QnKSxcbiAgJ2lzUmVnRXhwJzogcmVxdWlyZSgnLi9pc1JlZ0V4cCcpLFxuICAnaXNTYWZlSW50ZWdlcic6IHJlcXVpcmUoJy4vaXNTYWZlSW50ZWdlcicpLFxuICAnaXNTZXQnOiByZXF1aXJlKCcuL2lzU2V0JyksXG4gICdpc1N0cmluZyc6IHJlcXVpcmUoJy4vaXNTdHJpbmcnKSxcbiAgJ2lzU3ltYm9sJzogcmVxdWlyZSgnLi9pc1N5bWJvbCcpLFxuICAnaXNUeXBlZEFycmF5JzogcmVxdWlyZSgnLi9pc1R5cGVkQXJyYXknKSxcbiAgJ2lzVW5kZWZpbmVkJzogcmVxdWlyZSgnLi9pc1VuZGVmaW5lZCcpLFxuICAnaXNXZWFrTWFwJzogcmVxdWlyZSgnLi9pc1dlYWtNYXAnKSxcbiAgJ2lzV2Vha1NldCc6IHJlcXVpcmUoJy4vaXNXZWFrU2V0JyksXG4gICdsdCc6IHJlcXVpcmUoJy4vbHQnKSxcbiAgJ2x0ZSc6IHJlcXVpcmUoJy4vbHRlJyksXG4gICd0b0FycmF5JzogcmVxdWlyZSgnLi90b0FycmF5JyksXG4gICd0b0Zpbml0ZSc6IHJlcXVpcmUoJy4vdG9GaW5pdGUnKSxcbiAgJ3RvSW50ZWdlcic6IHJlcXVpcmUoJy4vdG9JbnRlZ2VyJyksXG4gICd0b0xlbmd0aCc6IHJlcXVpcmUoJy4vdG9MZW5ndGgnKSxcbiAgJ3RvTnVtYmVyJzogcmVxdWlyZSgnLi90b051bWJlcicpLFxuICAndG9QbGFpbk9iamVjdCc6IHJlcXVpcmUoJy4vdG9QbGFpbk9iamVjdCcpLFxuICAndG9TYWZlSW50ZWdlcic6IHJlcXVpcmUoJy4vdG9TYWZlSW50ZWdlcicpLFxuICAndG9TdHJpbmcnOiByZXF1aXJlKCcuL3RvU3RyaW5nJylcbn07XG4iLCJ2YXIgYmFzZUx0ID0gcmVxdWlyZSgnLi9fYmFzZUx0JyksXG4gICAgY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbiA9IHJlcXVpcmUoJy4vX2NyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24nKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gYG90aGVyYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuOS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gYG90aGVyYCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAc2VlIF8uZ3RcbiAqIEBleGFtcGxlXG4gKlxuICogXy5sdCgxLCAzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmx0KDMsIDMpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmx0KDMsIDEpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGx0ID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihiYXNlTHQpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGx0O1xuIiwidmFyIGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24gPSByZXF1aXJlKCcuL19jcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBvdGhlcmAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjkuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvXG4gKiAgYG90aGVyYCwgZWxzZSBgZmFsc2VgLlxuICogQHNlZSBfLmd0ZVxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmx0ZSgxLCAzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmx0ZSgzLCAzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmx0ZSgzLCAxKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBsdGUgPSBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKGZ1bmN0aW9uKHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gdmFsdWUgPD0gb3RoZXI7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBsdGU7XG4iLCIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgZW1wdHkgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEzLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBlbXB0eSBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIGFycmF5cyA9IF8udGltZXMoMiwgXy5zdHViQXJyYXkpO1xuICpcbiAqIGNvbnNvbGUubG9nKGFycmF5cyk7XG4gKiAvLyA9PiBbW10sIFtdXVxuICpcbiAqIGNvbnNvbGUubG9nKGFycmF5c1swXSA9PT0gYXJyYXlzWzFdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIHN0dWJBcnJheSgpIHtcbiAgcmV0dXJuIFtdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0dWJBcnJheTtcbiIsIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBgZmFsc2VgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMy4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50aW1lcygyLCBfLnN0dWJGYWxzZSk7XG4gKiAvLyA9PiBbZmFsc2UsIGZhbHNlXVxuICovXG5mdW5jdGlvbiBzdHViRmFsc2UoKSB7XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHViRmFsc2U7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgY29weUFycmF5ID0gcmVxdWlyZSgnLi9fY29weUFycmF5JyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyksXG4gICAgaXNTdHJpbmcgPSByZXF1aXJlKCcuL2lzU3RyaW5nJyksXG4gICAgaXRlcmF0b3JUb0FycmF5ID0gcmVxdWlyZSgnLi9faXRlcmF0b3JUb0FycmF5JyksXG4gICAgbWFwVG9BcnJheSA9IHJlcXVpcmUoJy4vX21hcFRvQXJyYXknKSxcbiAgICBzZXRUb0FycmF5ID0gcmVxdWlyZSgnLi9fc2V0VG9BcnJheScpLFxuICAgIHN0cmluZ1RvQXJyYXkgPSByZXF1aXJlKCcuL19zdHJpbmdUb0FycmF5JyksXG4gICAgdmFsdWVzID0gcmVxdWlyZSgnLi92YWx1ZXMnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1JdGVyYXRvciA9IFN5bWJvbCA/IFN5bWJvbC5pdGVyYXRvciA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9BcnJheSh7ICdhJzogMSwgJ2InOiAyIH0pO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogXy50b0FycmF5KCdhYmMnKTtcbiAqIC8vID0+IFsnYScsICdiJywgJ2MnXVxuICpcbiAqIF8udG9BcnJheSgxKTtcbiAqIC8vID0+IFtdXG4gKlxuICogXy50b0FycmF5KG51bGwpO1xuICogLy8gPT4gW11cbiAqL1xuZnVuY3Rpb24gdG9BcnJheSh2YWx1ZSkge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGlmIChpc0FycmF5TGlrZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gaXNTdHJpbmcodmFsdWUpID8gc3RyaW5nVG9BcnJheSh2YWx1ZSkgOiBjb3B5QXJyYXkodmFsdWUpO1xuICB9XG4gIGlmIChzeW1JdGVyYXRvciAmJiB2YWx1ZVtzeW1JdGVyYXRvcl0pIHtcbiAgICByZXR1cm4gaXRlcmF0b3JUb0FycmF5KHZhbHVlW3N5bUl0ZXJhdG9yXSgpKTtcbiAgfVxuICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKSxcbiAgICAgIGZ1bmMgPSB0YWcgPT0gbWFwVGFnID8gbWFwVG9BcnJheSA6ICh0YWcgPT0gc2V0VGFnID8gc2V0VG9BcnJheSA6IHZhbHVlcyk7XG5cbiAgcmV0dXJuIGZ1bmModmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvQXJyYXk7XG4iLCJ2YXIgdG9OdW1iZXIgPSByZXF1aXJlKCcuL3RvTnVtYmVyJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDAsXG4gICAgTUFYX0lOVEVHRVIgPSAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwODtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgZmluaXRlIG51bWJlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTIuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgbnVtYmVyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvRmluaXRlKDMuMik7XG4gKiAvLyA9PiAzLjJcbiAqXG4gKiBfLnRvRmluaXRlKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gNWUtMzI0XG4gKlxuICogXy50b0Zpbml0ZShJbmZpbml0eSk7XG4gKiAvLyA9PiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOFxuICpcbiAqIF8udG9GaW5pdGUoJzMuMicpO1xuICogLy8gPT4gMy4yXG4gKi9cbmZ1bmN0aW9uIHRvRmluaXRlKHZhbHVlKSB7XG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6IDA7XG4gIH1cbiAgdmFsdWUgPSB0b051bWJlcih2YWx1ZSk7XG4gIGlmICh2YWx1ZSA9PT0gSU5GSU5JVFkgfHwgdmFsdWUgPT09IC1JTkZJTklUWSkge1xuICAgIHZhciBzaWduID0gKHZhbHVlIDwgMCA/IC0xIDogMSk7XG4gICAgcmV0dXJuIHNpZ24gKiBNQVhfSU5URUdFUjtcbiAgfVxuICByZXR1cm4gdmFsdWUgPT09IHZhbHVlID8gdmFsdWUgOiAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvRmluaXRlO1xuIiwidmFyIHRvRmluaXRlID0gcmVxdWlyZSgnLi90b0Zpbml0ZScpO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYW4gaW50ZWdlci5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICogW2BUb0ludGVnZXJgXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9pbnRlZ2VyKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvSW50ZWdlcigzLjIpO1xuICogLy8gPT4gM1xuICpcbiAqIF8udG9JbnRlZ2VyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gMFxuICpcbiAqIF8udG9JbnRlZ2VyKEluZmluaXR5KTtcbiAqIC8vID0+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4XG4gKlxuICogXy50b0ludGVnZXIoJzMuMicpO1xuICogLy8gPT4gM1xuICovXG5mdW5jdGlvbiB0b0ludGVnZXIodmFsdWUpIHtcbiAgdmFyIHJlc3VsdCA9IHRvRmluaXRlKHZhbHVlKSxcbiAgICAgIHJlbWFpbmRlciA9IHJlc3VsdCAlIDE7XG5cbiAgcmV0dXJuIHJlc3VsdCA9PT0gcmVzdWx0ID8gKHJlbWFpbmRlciA/IHJlc3VsdCAtIHJlbWFpbmRlciA6IHJlc3VsdCkgOiAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvSW50ZWdlcjtcbiIsInZhciBiYXNlQ2xhbXAgPSByZXF1aXJlKCcuL19iYXNlQ2xhbXAnKSxcbiAgICB0b0ludGVnZXIgPSByZXF1aXJlKCcuL3RvSW50ZWdlcicpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB0aGUgbWF4aW11bSBsZW5ndGggYW5kIGluZGV4IG9mIGFuIGFycmF5LiAqL1xudmFyIE1BWF9BUlJBWV9MRU5HVEggPSA0Mjk0OTY3Mjk1O1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYW4gaW50ZWdlciBzdWl0YWJsZSBmb3IgdXNlIGFzIHRoZSBsZW5ndGggb2YgYW5cbiAqIGFycmF5LWxpa2Ugb2JqZWN0LlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvTGVuZ3RoKDMuMik7XG4gKiAvLyA9PiAzXG4gKlxuICogXy50b0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDBcbiAqXG4gKiBfLnRvTGVuZ3RoKEluZmluaXR5KTtcbiAqIC8vID0+IDQyOTQ5NjcyOTVcbiAqXG4gKiBfLnRvTGVuZ3RoKCczLjInKTtcbiAqIC8vID0+IDNcbiAqL1xuZnVuY3Rpb24gdG9MZW5ndGgodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID8gYmFzZUNsYW1wKHRvSW50ZWdlcih2YWx1ZSksIDAsIE1BWF9BUlJBWV9MRU5HVEgpIDogMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0xlbmd0aDtcbiIsInZhciBiYXNlVHJpbSA9IHJlcXVpcmUoJy4vX2Jhc2VUcmltJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE5BTiA9IDAgLyAwO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCYWRIZXggPSAvXlstK10weFswLTlhLWZdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJpbmFyeSBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvY3RhbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbi8qKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB3aXRob3V0IGEgZGVwZW5kZW5jeSBvbiBgcm9vdGAuICovXG52YXIgZnJlZVBhcnNlSW50ID0gcGFyc2VJbnQ7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIG51bWJlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b051bWJlcigzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9OdW1iZXIoSW5maW5pdHkpO1xuICogLy8gPT4gSW5maW5pdHlcbiAqXG4gKiBfLnRvTnVtYmVyKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b051bWJlcih2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gTkFOO1xuICB9XG4gIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICB2YXIgb3RoZXIgPSB0eXBlb2YgdmFsdWUudmFsdWVPZiA9PSAnZnVuY3Rpb24nID8gdmFsdWUudmFsdWVPZigpIDogdmFsdWU7XG4gICAgdmFsdWUgPSBpc09iamVjdChvdGhlcikgPyAob3RoZXIgKyAnJykgOiBvdGhlcjtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiArdmFsdWU7XG4gIH1cbiAgdmFsdWUgPSBiYXNlVHJpbSh2YWx1ZSk7XG4gIHZhciBpc0JpbmFyeSA9IHJlSXNCaW5hcnkudGVzdCh2YWx1ZSk7XG4gIHJldHVybiAoaXNCaW5hcnkgfHwgcmVJc09jdGFsLnRlc3QodmFsdWUpKVxuICAgID8gZnJlZVBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCBpc0JpbmFyeSA/IDIgOiA4KVxuICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvTnVtYmVyO1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgcGxhaW4gb2JqZWN0IGZsYXR0ZW5pbmcgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nXG4gKiBrZXllZCBwcm9wZXJ0aWVzIG9mIGB2YWx1ZWAgdG8gb3duIHByb3BlcnRpZXMgb2YgdGhlIHBsYWluIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBwbGFpbiBvYmplY3QuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8uYXNzaWduKHsgJ2EnOiAxIH0sIG5ldyBGb28pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKlxuICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgXy50b1BsYWluT2JqZWN0KG5ldyBGb28pKTtcbiAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMyB9XG4gKi9cbmZ1bmN0aW9uIHRvUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIGNvcHlPYmplY3QodmFsdWUsIGtleXNJbih2YWx1ZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvUGxhaW5PYmplY3Q7XG4iLCJ2YXIgYmFzZUNsYW1wID0gcmVxdWlyZSgnLi9fYmFzZUNsYW1wJyksXG4gICAgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi90b0ludGVnZXInKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHNhZmUgaW50ZWdlci4gQSBzYWZlIGludGVnZXIgY2FuIGJlIGNvbXBhcmVkIGFuZFxuICogcmVwcmVzZW50ZWQgY29ycmVjdGx5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9TYWZlSW50ZWdlcigzLjIpO1xuICogLy8gPT4gM1xuICpcbiAqIF8udG9TYWZlSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDBcbiAqXG4gKiBfLnRvU2FmZUludGVnZXIoSW5maW5pdHkpO1xuICogLy8gPT4gOTAwNzE5OTI1NDc0MDk5MVxuICpcbiAqIF8udG9TYWZlSW50ZWdlcignMy4yJyk7XG4gKiAvLyA9PiAzXG4gKi9cbmZ1bmN0aW9uIHRvU2FmZUludGVnZXIodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlXG4gICAgPyBiYXNlQ2xhbXAodG9JbnRlZ2VyKHZhbHVlKSwgLU1BWF9TQUZFX0lOVEVHRVIsIE1BWF9TQUZFX0lOVEVHRVIpXG4gICAgOiAodmFsdWUgPT09IDAgPyB2YWx1ZSA6IDApO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvU2FmZUludGVnZXI7XG4iLCJ2YXIgYmFzZVRvU3RyaW5nID0gcmVxdWlyZSgnLi9fYmFzZVRvU3RyaW5nJyk7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZy4gQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGZvciBgbnVsbGBcbiAqIGFuZCBgdW5kZWZpbmVkYCB2YWx1ZXMuIFRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b1N0cmluZyhudWxsKTtcbiAqIC8vID0+ICcnXG4gKlxuICogXy50b1N0cmluZygtMCk7XG4gKiAvLyA9PiAnLTAnXG4gKlxuICogXy50b1N0cmluZyhbMSwgMiwgM10pO1xuICogLy8gPT4gJzEsMiwzJ1xuICovXG5mdW5jdGlvbiB0b1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogYmFzZVRvU3RyaW5nKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1N0cmluZztcbiIsInZhciBiYXNlVmFsdWVzID0gcmVxdWlyZSgnLi9fYmFzZVZhbHVlcycpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydHkgdmFsdWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLnZhbHVlcyhuZXcgRm9vKTtcbiAqIC8vID0+IFsxLCAyXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIF8udmFsdWVzKCdoaScpO1xuICogLy8gPT4gWydoJywgJ2knXVxuICovXG5mdW5jdGlvbiB2YWx1ZXMob2JqZWN0KSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IFtdIDogYmFzZVZhbHVlcyhvYmplY3QsIGtleXMob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdmFsdWVzO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEFmcmlrYWFucyBbYWZdXG4vLyEgYXV0aG9yIDogV2VybmVyIE1vbGxlbnR6ZSA6IGh0dHBzOi8vZ2l0aHViLmNvbS93ZXJuZXJtXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgYWYgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhZicsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyaWVfRmVicnVhcmllX01hYXJ0X0FwcmlsX01laV9KdW5pZV9KdWxpZV9BdWd1c3R1c19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01ydF9BcHJfTWVpX0p1bl9KdWxfQXVnX1NlcF9Pa3RfTm92X0Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdTb25kYWdfTWFhbmRhZ19EaW5zZGFnX1dvZW5zZGFnX0RvbmRlcmRhZ19WcnlkYWdfU2F0ZXJkYWcnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTb25fTWFhX0Rpbl9Xb2VfRG9uX1ZyeV9TYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU29fTWFfRGlfV29fRG9fVnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC92bXxubS9pLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAvXm5tJC9pLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ3ZtJyA6ICdWTSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ25tJyA6ICdOTSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbVmFuZGFnIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW03DtHJlIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0dpc3RlciBvbV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbTGFhc10gZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnb29yICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBnZWxlZGUnLFxuICAgICAgICAgICAgczogXCInbiBwYWFyIHNla29uZGVzXCIsXG4gICAgICAgICAgICBzczogJyVkIHNla29uZGVzJyxcbiAgICAgICAgICAgIG06IFwiJ24gbWludXV0XCIsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0ZScsXG4gICAgICAgICAgICBoOiBcIiduIHV1clwiLFxuICAgICAgICAgICAgaGg6ICclZCB1cmUnLFxuICAgICAgICAgICAgZDogXCInbiBkYWdcIixcbiAgICAgICAgICAgIGRkOiAnJWQgZGFlJyxcbiAgICAgICAgICAgIE06IFwiJ24gbWFhbmRcIixcbiAgICAgICAgICAgIE1NOiAnJWQgbWFhbmRlJyxcbiAgICAgICAgICAgIHk6IFwiJ24gamFhclwiLFxuICAgICAgICAgICAgeXk6ICclZCBqYWFyJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0ZXxkZSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIG51bWJlciArXG4gICAgICAgICAgICAgICAgKG51bWJlciA9PT0gMSB8fCBudW1iZXIgPT09IDggfHwgbnVtYmVyID49IDIwID8gJ3N0ZScgOiAnZGUnKVxuICAgICAgICAgICAgKTsgLy8gVGhhbmtzIHRvIEpvcmlzIFLDtmxpbmcgOiBodHRwczovL2dpdGh1Yi5jb20vamp1cGl0ZXJcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNYWFuZGFnIGlzIGRpZSBlZXJzdGUgZGFnIHZhbiBkaWUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gRGllIHdlZWsgd2F0IGRpZSA0ZGUgSmFudWFyaWUgYmV2YXQgaXMgZGllIGVlcnN0ZSB3ZWVrIHZhbiBkaWUgamFhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBhZjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBBcmFiaWMgKEFsZ2VyaWEpIFthci1kel1cbi8vISBhdXRob3IgOiBBbWluZSBSb3VraDogaHR0cHM6Ly9naXRodWIuY29tL0FtaW5lMjdcbi8vISBhdXRob3IgOiBBYmRlbCBTYWlkOiBodHRwczovL2dpdGh1Yi5jb20vYWJkZWxzYWlkXG4vLyEgYXV0aG9yIDogQWhtZWQgRWxraGF0aWJcbi8vISBhdXRob3IgOiBmb3JhYmkgaHR0cHM6Ly9naXRodWIuY29tL2ZvcmFiaVxuLy8hIGF1dGhvciA6IE5vdXJlZGRpbmUgTE9VQUhFREogOiBodHRwczovL2dpdGh1Yi5jb20vbm91cmVkZGluZW1cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBwbHVyYWxGb3JtID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICAgIHJldHVybiBuID09PSAwXG4gICAgICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICAgICAgOiBuID09PSAxXG4gICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgOiBuID09PSAyXG4gICAgICAgICAgICAgICAgPyAyXG4gICAgICAgICAgICAgICAgOiBuICUgMTAwID49IDMgJiYgbiAlIDEwMCA8PSAxMFxuICAgICAgICAgICAgICAgID8gM1xuICAgICAgICAgICAgICAgIDogbiAlIDEwMCA+PSAxMVxuICAgICAgICAgICAgICAgID8gNFxuICAgICAgICAgICAgICAgIDogNTtcbiAgICAgICAgfSxcbiAgICAgICAgcGx1cmFscyA9IHtcbiAgICAgICAgICAgIHM6IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICAgICAgJ9ir2KfZhtmK2Kkg2YjYp9it2K/YqScsXG4gICAgICAgICAgICAgICAgWyfYq9in2YbZitiq2KfZhicsICfYq9in2YbZitiq2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYq9mI2KfZhicsXG4gICAgICAgICAgICAgICAgJyVkINir2KfZhtmK2KknLFxuICAgICAgICAgICAgICAgICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBtOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINiv2YLZitmC2KknLFxuICAgICAgICAgICAgICAgICfYr9mC2YrZgtipINmI2KfYrdiv2KknLFxuICAgICAgICAgICAgICAgIFsn2K/ZgtmK2YLYqtin2YYnLCAn2K/ZgtmK2YLYqtmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2K/Zgtin2KbZgicsXG4gICAgICAgICAgICAgICAgJyVkINiv2YLZitmC2KknLFxuICAgICAgICAgICAgICAgICclZCDYr9mC2YrZgtipJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBoOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINiz2KfYudipJyxcbiAgICAgICAgICAgICAgICAn2LPYp9i52Kkg2YjYp9it2K/YqScsXG4gICAgICAgICAgICAgICAgWyfYs9in2LnYqtin2YYnLCAn2LPYp9i52KrZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINiz2KfYudin2KonLFxuICAgICAgICAgICAgICAgICclZCDYs9in2LnYqScsXG4gICAgICAgICAgICAgICAgJyVkINiz2KfYudipJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBkOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINmK2YjZhScsXG4gICAgICAgICAgICAgICAgJ9mK2YjZhSDZiNin2K3YrycsXG4gICAgICAgICAgICAgICAgWyfZitmI2YXYp9mGJywgJ9mK2YjZhdmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2KPZitin2YUnLFxuICAgICAgICAgICAgICAgICclZCDZitmI2YXZi9inJyxcbiAgICAgICAgICAgICAgICAnJWQg2YrZiNmFJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBNOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINi02YfYsScsXG4gICAgICAgICAgICAgICAgJ9i02YfYsSDZiNin2K3YrycsXG4gICAgICAgICAgICAgICAgWyfYtNmH2LHYp9mGJywgJ9i02YfYsdmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2KPYtNmH2LEnLFxuICAgICAgICAgICAgICAgICclZCDYtNmH2LHYpycsXG4gICAgICAgICAgICAgICAgJyVkINi02YfYsScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgeTogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYudin2YUnLFxuICAgICAgICAgICAgICAgICfYudin2YUg2YjYp9it2K8nLFxuICAgICAgICAgICAgICAgIFsn2LnYp9mF2KfZhicsICfYudin2YXZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINij2LnZiNin2YUnLFxuICAgICAgICAgICAgICAgICclZCDYudin2YXZi9inJyxcbiAgICAgICAgICAgICAgICAnJWQg2LnYp9mFJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHBsdXJhbGl6ZSA9IGZ1bmN0aW9uICh1KSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgIHZhciBmID0gcGx1cmFsRm9ybShudW1iZXIpLFxuICAgICAgICAgICAgICAgICAgICBzdHIgPSBwbHVyYWxzW3VdW3BsdXJhbEZvcm0obnVtYmVyKV07XG4gICAgICAgICAgICAgICAgaWYgKGYgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gc3RyW3dpdGhvdXRTdWZmaXggPyAwIDogMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvJWQvaSwgbnVtYmVyKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRocyA9IFtcbiAgICAgICAgICAgICfYrNin2YbZgdmKJyxcbiAgICAgICAgICAgICfZgdmK2YHYsdmKJyxcbiAgICAgICAgICAgICfZhdin2LHYsycsXG4gICAgICAgICAgICAn2KPZgdix2YrZhCcsXG4gICAgICAgICAgICAn2YXYp9mKJyxcbiAgICAgICAgICAgICfYrNmI2KfZhicsXG4gICAgICAgICAgICAn2KzZiNmK2YTZitipJyxcbiAgICAgICAgICAgICfYo9mI2KonLFxuICAgICAgICAgICAgJ9iz2KjYqtmF2KjYsScsXG4gICAgICAgICAgICAn2KPZg9iq2YjYqNixJyxcbiAgICAgICAgICAgICfZhtmI2YHZhdio2LEnLFxuICAgICAgICAgICAgJ9iv2YrYs9mF2KjYsScsXG4gICAgICAgIF07XG5cbiAgICB2YXIgYXJEeiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FyLWR6Jywge1xuICAgICAgICBtb250aHM6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IG1vbnRocyxcbiAgICAgICAgd2Vla2RheXM6ICfYp9mE2KPYrdivX9in2YTYpdir2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfYo9it2K9f2KXYq9mG2YrZhl/Yq9mE2KfYq9in2KFf2KPYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfYrV/Zhl/Yq1/YsV/Yrl/YrF/Ysycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnRC9cXHUyMDBGTS9cXHUyMDBGWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9i1fNmFLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ9mFJyA9PT0gaW5wdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYtSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2YUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9mL2Kcg2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9ij2YXYsyDYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW9i52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn2KjYudivICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICfZhdmG2LAgJXMnLFxuICAgICAgICAgICAgczogcGx1cmFsaXplKCdzJyksXG4gICAgICAgICAgICBzczogcGx1cmFsaXplKCdzJyksXG4gICAgICAgICAgICBtOiBwbHVyYWxpemUoJ20nKSxcbiAgICAgICAgICAgIG1tOiBwbHVyYWxpemUoJ20nKSxcbiAgICAgICAgICAgIGg6IHBsdXJhbGl6ZSgnaCcpLFxuICAgICAgICAgICAgaGg6IHBsdXJhbGl6ZSgnaCcpLFxuICAgICAgICAgICAgZDogcGx1cmFsaXplKCdkJyksXG4gICAgICAgICAgICBkZDogcGx1cmFsaXplKCdkJyksXG4gICAgICAgICAgICBNOiBwbHVyYWxpemUoJ00nKSxcbiAgICAgICAgICAgIE1NOiBwbHVyYWxpemUoJ00nKSxcbiAgICAgICAgICAgIHk6IHBsdXJhbGl6ZSgneScpLFxuICAgICAgICAgICAgeXk6IHBsdXJhbGl6ZSgneScpLFxuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBhckR6O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEFyYWJpYyAoS3V3YWl0KSBbYXIta3ddXG4vLyEgYXV0aG9yIDogTnVzcmV0IFBhcmxhazogaHR0cHM6Ly9naXRodWIuY29tL251c3JldHBhcmxha1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGFyS3cgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhci1rdycsIHtcbiAgICAgICAgbW9udGhzOiAn2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2Ypf2YrZiNmG2YrZiF/ZitmI2YTZitmI2LJf2LrYtNiqX9i02KrZhtio2LFf2KPZg9iq2YjYqNixX9mG2YjZhtio2LFf2K/YrNmG2KjYsScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2Ypf2YrZiNmG2YrZiF/ZitmI2YTZitmI2LJf2LrYtNiqX9i02KrZhtio2LFf2KPZg9iq2YjYqNixX9mG2YjZhtio2LFf2K/YrNmG2KjYsScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ9in2YTYo9it2K9f2KfZhNil2KrZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9in2K3Yr1/Yp9iq2YbZitmGX9ir2YTYp9ir2KfYoV/Yp9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9itX9mGX9irX9ixX9iuX9isX9izJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9inINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9mB2YogJXMnLFxuICAgICAgICAgICAgcGFzdDogJ9mF2YbYsCAlcycsXG4gICAgICAgICAgICBzOiAn2KvZiNin2YYnLFxuICAgICAgICAgICAgc3M6ICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgIG06ICfYr9mC2YrZgtipJyxcbiAgICAgICAgICAgIG1tOiAnJWQg2K/Zgtin2KbZgicsXG4gICAgICAgICAgICBoOiAn2LPYp9i52KknLFxuICAgICAgICAgICAgaGg6ICclZCDYs9in2LnYp9iqJyxcbiAgICAgICAgICAgIGQ6ICfZitmI2YUnLFxuICAgICAgICAgICAgZGQ6ICclZCDYo9mK2KfZhScsXG4gICAgICAgICAgICBNOiAn2LTZh9ixJyxcbiAgICAgICAgICAgIE1NOiAnJWQg2KPYtNmH2LEnLFxuICAgICAgICAgICAgeTogJ9iz2YbYqScsXG4gICAgICAgICAgICB5eTogJyVkINiz2YbZiNin2KonLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiAxMiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBhckt3O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEFyYWJpYyAoTGlieWEpIFthci1seV1cbi8vISBhdXRob3IgOiBBbGkgSG1lcjogaHR0cHM6Ly9naXRodWIuY29tL2tpa29hbmlzXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgMTogJzEnLFxuICAgICAgICAgICAgMjogJzInLFxuICAgICAgICAgICAgMzogJzMnLFxuICAgICAgICAgICAgNDogJzQnLFxuICAgICAgICAgICAgNTogJzUnLFxuICAgICAgICAgICAgNjogJzYnLFxuICAgICAgICAgICAgNzogJzcnLFxuICAgICAgICAgICAgODogJzgnLFxuICAgICAgICAgICAgOTogJzknLFxuICAgICAgICAgICAgMDogJzAnLFxuICAgICAgICB9LFxuICAgICAgICBwbHVyYWxGb3JtID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICAgIHJldHVybiBuID09PSAwXG4gICAgICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICAgICAgOiBuID09PSAxXG4gICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgOiBuID09PSAyXG4gICAgICAgICAgICAgICAgPyAyXG4gICAgICAgICAgICAgICAgOiBuICUgMTAwID49IDMgJiYgbiAlIDEwMCA8PSAxMFxuICAgICAgICAgICAgICAgID8gM1xuICAgICAgICAgICAgICAgIDogbiAlIDEwMCA+PSAxMVxuICAgICAgICAgICAgICAgID8gNFxuICAgICAgICAgICAgICAgIDogNTtcbiAgICAgICAgfSxcbiAgICAgICAgcGx1cmFscyA9IHtcbiAgICAgICAgICAgIHM6IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICAgICAgJ9ir2KfZhtmK2Kkg2YjYp9it2K/YqScsXG4gICAgICAgICAgICAgICAgWyfYq9in2YbZitiq2KfZhicsICfYq9in2YbZitiq2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYq9mI2KfZhicsXG4gICAgICAgICAgICAgICAgJyVkINir2KfZhtmK2KknLFxuICAgICAgICAgICAgICAgICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBtOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINiv2YLZitmC2KknLFxuICAgICAgICAgICAgICAgICfYr9mC2YrZgtipINmI2KfYrdiv2KknLFxuICAgICAgICAgICAgICAgIFsn2K/ZgtmK2YLYqtin2YYnLCAn2K/ZgtmK2YLYqtmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2K/Zgtin2KbZgicsXG4gICAgICAgICAgICAgICAgJyVkINiv2YLZitmC2KknLFxuICAgICAgICAgICAgICAgICclZCDYr9mC2YrZgtipJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBoOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINiz2KfYudipJyxcbiAgICAgICAgICAgICAgICAn2LPYp9i52Kkg2YjYp9it2K/YqScsXG4gICAgICAgICAgICAgICAgWyfYs9in2LnYqtin2YYnLCAn2LPYp9i52KrZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINiz2KfYudin2KonLFxuICAgICAgICAgICAgICAgICclZCDYs9in2LnYqScsXG4gICAgICAgICAgICAgICAgJyVkINiz2KfYudipJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBkOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINmK2YjZhScsXG4gICAgICAgICAgICAgICAgJ9mK2YjZhSDZiNin2K3YrycsXG4gICAgICAgICAgICAgICAgWyfZitmI2YXYp9mGJywgJ9mK2YjZhdmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2KPZitin2YUnLFxuICAgICAgICAgICAgICAgICclZCDZitmI2YXZi9inJyxcbiAgICAgICAgICAgICAgICAnJWQg2YrZiNmFJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBNOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINi02YfYsScsXG4gICAgICAgICAgICAgICAgJ9i02YfYsSDZiNin2K3YrycsXG4gICAgICAgICAgICAgICAgWyfYtNmH2LHYp9mGJywgJ9i02YfYsdmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2KPYtNmH2LEnLFxuICAgICAgICAgICAgICAgICclZCDYtNmH2LHYpycsXG4gICAgICAgICAgICAgICAgJyVkINi02YfYsScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgeTogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYudin2YUnLFxuICAgICAgICAgICAgICAgICfYudin2YUg2YjYp9it2K8nLFxuICAgICAgICAgICAgICAgIFsn2LnYp9mF2KfZhicsICfYudin2YXZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINij2LnZiNin2YUnLFxuICAgICAgICAgICAgICAgICclZCDYudin2YXZi9inJyxcbiAgICAgICAgICAgICAgICAnJWQg2LnYp9mFJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHBsdXJhbGl6ZSA9IGZ1bmN0aW9uICh1KSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgIHZhciBmID0gcGx1cmFsRm9ybShudW1iZXIpLFxuICAgICAgICAgICAgICAgICAgICBzdHIgPSBwbHVyYWxzW3VdW3BsdXJhbEZvcm0obnVtYmVyKV07XG4gICAgICAgICAgICAgICAgaWYgKGYgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gc3RyW3dpdGhvdXRTdWZmaXggPyAwIDogMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvJWQvaSwgbnVtYmVyKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRocyA9IFtcbiAgICAgICAgICAgICfZitmG2KfZitixJyxcbiAgICAgICAgICAgICfZgdio2LHYp9mK2LEnLFxuICAgICAgICAgICAgJ9mF2KfYsdizJyxcbiAgICAgICAgICAgICfYo9io2LHZitmEJyxcbiAgICAgICAgICAgICfZhdin2YrZiCcsXG4gICAgICAgICAgICAn2YrZiNmG2YrZiCcsXG4gICAgICAgICAgICAn2YrZiNmE2YrZiCcsXG4gICAgICAgICAgICAn2KPYutiz2LfYsycsXG4gICAgICAgICAgICAn2LPYqNiq2YXYqNixJyxcbiAgICAgICAgICAgICfYo9mD2KrZiNio2LEnLFxuICAgICAgICAgICAgJ9mG2YjZgdmF2KjYsScsXG4gICAgICAgICAgICAn2K/Zitiz2YXYqNixJyxcbiAgICAgICAgXTtcblxuICAgIHZhciBhckx5ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYXItbHknLCB7XG4gICAgICAgIG1vbnRoczogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydDogbW9udGhzLFxuICAgICAgICB3ZWVrZGF5czogJ9in2YTYo9it2K9f2KfZhNil2KvZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9ij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9itX9mGX9irX9ixX9iuX9isX9izJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdEL1xcdTIwMEZNL1xcdTIwMEZZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv2LV82YUvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAn2YUnID09PSBpbnB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9i1JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfZhSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9in2YTZitmI2YUg2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vYutiv2YvYpyDYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9i52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2KPZhdizINi52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfYqNi52K8gJXMnLFxuICAgICAgICAgICAgcGFzdDogJ9mF2YbYsCAlcycsXG4gICAgICAgICAgICBzOiBwbHVyYWxpemUoJ3MnKSxcbiAgICAgICAgICAgIHNzOiBwbHVyYWxpemUoJ3MnKSxcbiAgICAgICAgICAgIG06IHBsdXJhbGl6ZSgnbScpLFxuICAgICAgICAgICAgbW06IHBsdXJhbGl6ZSgnbScpLFxuICAgICAgICAgICAgaDogcGx1cmFsaXplKCdoJyksXG4gICAgICAgICAgICBoaDogcGx1cmFsaXplKCdoJyksXG4gICAgICAgICAgICBkOiBwbHVyYWxpemUoJ2QnKSxcbiAgICAgICAgICAgIGRkOiBwbHVyYWxpemUoJ2QnKSxcbiAgICAgICAgICAgIE06IHBsdXJhbGl6ZSgnTScpLFxuICAgICAgICAgICAgTU06IHBsdXJhbGl6ZSgnTScpLFxuICAgICAgICAgICAgeTogcGx1cmFsaXplKCd5JyksXG4gICAgICAgICAgICB5eTogcGx1cmFsaXplKCd5JyksXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8sL2csICfYjCcpO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDYsIC8vIFNhdHVyZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDEyLCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxMnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFyTHk7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQXJhYmljIChNb3JvY2NvKSBbYXItbWFdXG4vLyEgYXV0aG9yIDogRWxGYWRpbGkgWWFzc2luZSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9FbEZhZGlsaVlcbi8vISBhdXRob3IgOiBBYmRlbCBTYWlkIDogaHR0cHM6Ly9naXRodWIuY29tL2FiZGVsc2FpZFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGFyTWEgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhci1tYScsIHtcbiAgICAgICAgbW9udGhzOiAn2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2Ypf2YrZiNmG2YrZiF/ZitmI2YTZitmI2LJf2LrYtNiqX9i02KrZhtio2LFf2KPZg9iq2YjYqNixX9mG2YjZhtio2LFf2K/YrNmG2KjYsScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2Ypf2YrZiNmG2YrZiF/ZitmI2YTZitmI2LJf2LrYtNiqX9i02KrZhtio2LFf2KPZg9iq2YjYqNixX9mG2YjZhtio2LFf2K/YrNmG2KjYsScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ9in2YTYo9it2K9f2KfZhNil2KvZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9in2K3Yr1/Yp9ir2YbZitmGX9ir2YTYp9ir2KfYoV/Yp9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9itX9mGX9irX9ixX9iuX9isX9izJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9inINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9mB2YogJXMnLFxuICAgICAgICAgICAgcGFzdDogJ9mF2YbYsCAlcycsXG4gICAgICAgICAgICBzOiAn2KvZiNin2YYnLFxuICAgICAgICAgICAgc3M6ICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgIG06ICfYr9mC2YrZgtipJyxcbiAgICAgICAgICAgIG1tOiAnJWQg2K/Zgtin2KbZgicsXG4gICAgICAgICAgICBoOiAn2LPYp9i52KknLFxuICAgICAgICAgICAgaGg6ICclZCDYs9in2LnYp9iqJyxcbiAgICAgICAgICAgIGQ6ICfZitmI2YUnLFxuICAgICAgICAgICAgZGQ6ICclZCDYo9mK2KfZhScsXG4gICAgICAgICAgICBNOiAn2LTZh9ixJyxcbiAgICAgICAgICAgIE1NOiAnJWQg2KPYtNmH2LEnLFxuICAgICAgICAgICAgeTogJ9iz2YbYqScsXG4gICAgICAgICAgICB5eTogJyVkINiz2YbZiNin2KonLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXJNYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBBcmFiaWMgKFNhdWRpIEFyYWJpYSkgW2FyLXNhXVxuLy8hIGF1dGhvciA6IFN1aGFpbCBBbGtvd2FpbGVldCA6IGh0dHBzOi8vZ2l0aHViLmNvbS94c29oXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgMTogJ9mhJyxcbiAgICAgICAgICAgIDI6ICfZoicsXG4gICAgICAgICAgICAzOiAn2aMnLFxuICAgICAgICAgICAgNDogJ9mkJyxcbiAgICAgICAgICAgIDU6ICfZpScsXG4gICAgICAgICAgICA2OiAn2aYnLFxuICAgICAgICAgICAgNzogJ9mnJyxcbiAgICAgICAgICAgIDg6ICfZqCcsXG4gICAgICAgICAgICA5OiAn2aknLFxuICAgICAgICAgICAgMDogJ9mgJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ9mhJzogJzEnLFxuICAgICAgICAgICAgJ9miJzogJzInLFxuICAgICAgICAgICAgJ9mjJzogJzMnLFxuICAgICAgICAgICAgJ9mkJzogJzQnLFxuICAgICAgICAgICAgJ9mlJzogJzUnLFxuICAgICAgICAgICAgJ9mmJzogJzYnLFxuICAgICAgICAgICAgJ9mnJzogJzcnLFxuICAgICAgICAgICAgJ9moJzogJzgnLFxuICAgICAgICAgICAgJ9mpJzogJzknLFxuICAgICAgICAgICAgJ9mgJzogJzAnLFxuICAgICAgICB9O1xuXG4gICAgdmFyIGFyU2EgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhci1zYScsIHtcbiAgICAgICAgbW9udGhzOiAn2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2YrZiF/ZitmI2YbZitmIX9mK2YjZhNmK2Yhf2KPYutiz2LfYs1/Ys9io2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZgdmF2KjYsV/Yr9mK2LPZhdio2LEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ9mK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mK2Yhf2YrZiNmG2YrZiF/ZitmI2YTZitmIX9ij2LrYs9i32LNf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn2KPYrdivX9il2KvZhtmK2YZf2KvZhNin2KvYp9ihX9ij2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn2K1f2YZf2Ktf2LFf2K5f2Kxf2LMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/YtXzZhS8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICfZhScgPT09IGlucHV0O1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2LUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9mFJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhNmK2YjZhSDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9i62K/YpyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2KPZhdizINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfZgdmKICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICfZhdmG2LAgJXMnLFxuICAgICAgICAgICAgczogJ9ir2YjYp9mGJyxcbiAgICAgICAgICAgIHNzOiAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICBtOiAn2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICBtbTogJyVkINiv2YLYp9im2YInLFxuICAgICAgICAgICAgaDogJ9iz2KfYudipJyxcbiAgICAgICAgICAgIGhoOiAnJWQg2LPYp9i52KfYqicsXG4gICAgICAgICAgICBkOiAn2YrZiNmFJyxcbiAgICAgICAgICAgIGRkOiAnJWQg2KPZitin2YUnLFxuICAgICAgICAgICAgTTogJ9i02YfYsScsXG4gICAgICAgICAgICBNTTogJyVkINij2LTZh9ixJyxcbiAgICAgICAgICAgIHk6ICfYs9mG2KknLFxuICAgICAgICAgICAgeXk6ICclZCDYs9mG2YjYp9iqJyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW9mh2aLZo9mk2aXZptmn2ajZqdmgXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgv2IwvZywgJywnKTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBhclNhO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSAgOiAgQXJhYmljIChUdW5pc2lhKSBbYXItdG5dXG4vLyEgYXV0aG9yIDogTmFkZXIgVG91a2FicmkgOiBodHRwczovL2dpdGh1Yi5jb20vbmFkZXJpb1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGFyVG4gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhci10bicsIHtcbiAgICAgICAgbW9udGhzOiAn2KzYp9mG2YHZil/ZgdmK2YHYsdmKX9mF2KfYsdizX9ij2YHYsdmK2YRf2YXYp9mKX9is2YjYp9mGX9is2YjZitmE2YrYqV/Yo9mI2Kpf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfYrNin2YbZgdmKX9mB2YrZgdix2Ypf2YXYp9ix2LNf2KPZgdix2YrZhF/Zhdin2Ypf2KzZiNin2YZf2KzZiNmK2YTZitipX9ij2YjYql/Ys9io2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZgdmF2KjYsV/Yr9mK2LPZhdio2LEnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfYp9mE2KPYrdivX9in2YTYpdir2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfYo9it2K9f2KXYq9mG2YrZhl/Yq9mE2KfYq9in2KFf2KPYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfYrV/Zhl/Yq1/YsV/Yrl/YrF/Ysycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhNmK2YjZhSDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9i62K/YpyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2KPZhdizINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfZgdmKICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICfZhdmG2LAgJXMnLFxuICAgICAgICAgICAgczogJ9ir2YjYp9mGJyxcbiAgICAgICAgICAgIHNzOiAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICBtOiAn2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICBtbTogJyVkINiv2YLYp9im2YInLFxuICAgICAgICAgICAgaDogJ9iz2KfYudipJyxcbiAgICAgICAgICAgIGhoOiAnJWQg2LPYp9i52KfYqicsXG4gICAgICAgICAgICBkOiAn2YrZiNmFJyxcbiAgICAgICAgICAgIGRkOiAnJWQg2KPZitin2YUnLFxuICAgICAgICAgICAgTTogJ9i02YfYsScsXG4gICAgICAgICAgICBNTTogJyVkINij2LTZh9ixJyxcbiAgICAgICAgICAgIHk6ICfYs9mG2KknLFxuICAgICAgICAgICAgeXk6ICclZCDYs9mG2YjYp9iqJyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFyVG47XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQXJhYmljIFthcl1cbi8vISBhdXRob3IgOiBBYmRlbCBTYWlkOiBodHRwczovL2dpdGh1Yi5jb20vYWJkZWxzYWlkXG4vLyEgYXV0aG9yIDogQWhtZWQgRWxraGF0aWJcbi8vISBhdXRob3IgOiBmb3JhYmkgaHR0cHM6Ly9naXRodWIuY29tL2ZvcmFiaVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICfZoScsXG4gICAgICAgICAgICAyOiAn2aInLFxuICAgICAgICAgICAgMzogJ9mjJyxcbiAgICAgICAgICAgIDQ6ICfZpCcsXG4gICAgICAgICAgICA1OiAn2aUnLFxuICAgICAgICAgICAgNjogJ9mmJyxcbiAgICAgICAgICAgIDc6ICfZpycsXG4gICAgICAgICAgICA4OiAn2agnLFxuICAgICAgICAgICAgOTogJ9mpJyxcbiAgICAgICAgICAgIDA6ICfZoCcsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfZoSc6ICcxJyxcbiAgICAgICAgICAgICfZoic6ICcyJyxcbiAgICAgICAgICAgICfZoyc6ICczJyxcbiAgICAgICAgICAgICfZpCc6ICc0JyxcbiAgICAgICAgICAgICfZpSc6ICc1JyxcbiAgICAgICAgICAgICfZpic6ICc2JyxcbiAgICAgICAgICAgICfZpyc6ICc3JyxcbiAgICAgICAgICAgICfZqCc6ICc4JyxcbiAgICAgICAgICAgICfZqSc6ICc5JyxcbiAgICAgICAgICAgICfZoCc6ICcwJyxcbiAgICAgICAgfSxcbiAgICAgICAgcGx1cmFsRm9ybSA9IGZ1bmN0aW9uIChuKSB7XG4gICAgICAgICAgICByZXR1cm4gbiA9PT0gMFxuICAgICAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgICAgIDogbiA9PT0gMVxuICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgIDogbiA9PT0gMlxuICAgICAgICAgICAgICAgID8gMlxuICAgICAgICAgICAgICAgIDogbiAlIDEwMCA+PSAzICYmIG4gJSAxMDAgPD0gMTBcbiAgICAgICAgICAgICAgICA/IDNcbiAgICAgICAgICAgICAgICA6IG4gJSAxMDAgPj0gMTFcbiAgICAgICAgICAgICAgICA/IDRcbiAgICAgICAgICAgICAgICA6IDU7XG4gICAgICAgIH0sXG4gICAgICAgIHBsdXJhbHMgPSB7XG4gICAgICAgICAgICBzOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINir2KfZhtmK2KknLFxuICAgICAgICAgICAgICAgICfYq9in2YbZitipINmI2KfYrdiv2KknLFxuICAgICAgICAgICAgICAgIFsn2KvYp9mG2YrYqtin2YYnLCAn2KvYp9mG2YrYqtmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2KvZiNin2YYnLFxuICAgICAgICAgICAgICAgICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgICAgICAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbTogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYr9mC2YrZgtipJyxcbiAgICAgICAgICAgICAgICAn2K/ZgtmK2YLYqSDZiNin2K3Yr9ipJyxcbiAgICAgICAgICAgICAgICBbJ9iv2YLZitmC2KrYp9mGJywgJ9iv2YLZitmC2KrZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINiv2YLYp9im2YInLFxuICAgICAgICAgICAgICAgICclZCDYr9mC2YrZgtipJyxcbiAgICAgICAgICAgICAgICAnJWQg2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgaDogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYs9in2LnYqScsXG4gICAgICAgICAgICAgICAgJ9iz2KfYudipINmI2KfYrdiv2KknLFxuICAgICAgICAgICAgICAgIFsn2LPYp9i52KrYp9mGJywgJ9iz2KfYudiq2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYs9in2LnYp9iqJyxcbiAgICAgICAgICAgICAgICAnJWQg2LPYp9i52KknLFxuICAgICAgICAgICAgICAgICclZCDYs9in2LnYqScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgZDogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDZitmI2YUnLFxuICAgICAgICAgICAgICAgICfZitmI2YUg2YjYp9it2K8nLFxuICAgICAgICAgICAgICAgIFsn2YrZiNmF2KfZhicsICfZitmI2YXZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINij2YrYp9mFJyxcbiAgICAgICAgICAgICAgICAnJWQg2YrZiNmF2YvYpycsXG4gICAgICAgICAgICAgICAgJyVkINmK2YjZhScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgTTogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYtNmH2LEnLFxuICAgICAgICAgICAgICAgICfYtNmH2LEg2YjYp9it2K8nLFxuICAgICAgICAgICAgICAgIFsn2LTZh9ix2KfZhicsICfYtNmH2LHZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINij2LTZh9ixJyxcbiAgICAgICAgICAgICAgICAnJWQg2LTZh9ix2KcnLFxuICAgICAgICAgICAgICAgICclZCDYtNmH2LEnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHk6IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2LnYp9mFJyxcbiAgICAgICAgICAgICAgICAn2LnYp9mFINmI2KfYrdivJyxcbiAgICAgICAgICAgICAgICBbJ9i52KfZhdin2YYnLCAn2LnYp9mF2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYo9i52YjYp9mFJyxcbiAgICAgICAgICAgICAgICAnJWQg2LnYp9mF2YvYpycsXG4gICAgICAgICAgICAgICAgJyVkINi52KfZhScsXG4gICAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBwbHVyYWxpemUgPSBmdW5jdGlvbiAodSkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICB2YXIgZiA9IHBsdXJhbEZvcm0obnVtYmVyKSxcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gcGx1cmFsc1t1XVtwbHVyYWxGb3JtKG51bWJlcildO1xuICAgICAgICAgICAgICAgIGlmIChmID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ciA9IHN0clt3aXRob3V0U3VmZml4ID8gMCA6IDFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc3RyLnJlcGxhY2UoLyVkL2ksIG51bWJlcik7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBtb250aHMgPSBbXG4gICAgICAgICAgICAn2YrZhtin2YrYsScsXG4gICAgICAgICAgICAn2YHYqNix2KfZitixJyxcbiAgICAgICAgICAgICfZhdin2LHYsycsXG4gICAgICAgICAgICAn2KPYqNix2YrZhCcsXG4gICAgICAgICAgICAn2YXYp9mK2YgnLFxuICAgICAgICAgICAgJ9mK2YjZhtmK2YgnLFxuICAgICAgICAgICAgJ9mK2YjZhNmK2YgnLFxuICAgICAgICAgICAgJ9ij2LrYs9i32LMnLFxuICAgICAgICAgICAgJ9iz2KjYqtmF2KjYsScsXG4gICAgICAgICAgICAn2KPZg9iq2YjYqNixJyxcbiAgICAgICAgICAgICfZhtmI2YHZhdio2LEnLFxuICAgICAgICAgICAgJ9iv2YrYs9mF2KjYsScsXG4gICAgICAgIF07XG5cbiAgICB2YXIgYXIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhcicsIHtcbiAgICAgICAgbW9udGhzOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0OiBtb250aHMsXG4gICAgICAgIHdlZWtkYXlzOiAn2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn2KPYrdivX9il2KvZhtmK2YZf2KvZhNin2KvYp9ihX9ij2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn2K1f2YZf2Ktf2LFf2K5f2Kxf2LMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0QvXFx1MjAwRk0vXFx1MjAwRllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/YtXzZhS8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICfZhScgPT09IGlucHV0O1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2LUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9mFJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhNmK2YjZhSDYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9i62K/Zi9inINi52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9io2LnYryAlcycsXG4gICAgICAgICAgICBwYXN0OiAn2YXZhtiwICVzJyxcbiAgICAgICAgICAgIHM6IHBsdXJhbGl6ZSgncycpLFxuICAgICAgICAgICAgc3M6IHBsdXJhbGl6ZSgncycpLFxuICAgICAgICAgICAgbTogcGx1cmFsaXplKCdtJyksXG4gICAgICAgICAgICBtbTogcGx1cmFsaXplKCdtJyksXG4gICAgICAgICAgICBoOiBwbHVyYWxpemUoJ2gnKSxcbiAgICAgICAgICAgIGhoOiBwbHVyYWxpemUoJ2gnKSxcbiAgICAgICAgICAgIGQ6IHBsdXJhbGl6ZSgnZCcpLFxuICAgICAgICAgICAgZGQ6IHBsdXJhbGl6ZSgnZCcpLFxuICAgICAgICAgICAgTTogcGx1cmFsaXplKCdNJyksXG4gICAgICAgICAgICBNTTogcGx1cmFsaXplKCdNJyksXG4gICAgICAgICAgICB5OiBwbHVyYWxpemUoJ3knKSxcbiAgICAgICAgICAgIHl5OiBwbHVyYWxpemUoJ3knKSxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW9mh2aLZo9mk2aXZptmn2ajZqdmgXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgv2IwvZywgJywnKTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogNiwgLy8gU2F0dXJkYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogMTIsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXI7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQXplcmJhaWphbmkgW2F6XVxuLy8hIGF1dGhvciA6IHRvcGNoaXlldiA6IGh0dHBzOi8vZ2l0aHViLmNvbS90b3BjaGl5ZXZcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzdWZmaXhlcyA9IHtcbiAgICAgICAgMTogJy1pbmNpJyxcbiAgICAgICAgNTogJy1pbmNpJyxcbiAgICAgICAgODogJy1pbmNpJyxcbiAgICAgICAgNzA6ICctaW5jaScsXG4gICAgICAgIDgwOiAnLWluY2knLFxuICAgICAgICAyOiAnLW5jaScsXG4gICAgICAgIDc6ICctbmNpJyxcbiAgICAgICAgMjA6ICctbmNpJyxcbiAgICAgICAgNTA6ICctbmNpJyxcbiAgICAgICAgMzogJy3DvG5jw7wnLFxuICAgICAgICA0OiAnLcO8bmPDvCcsXG4gICAgICAgIDEwMDogJy3DvG5jw7wnLFxuICAgICAgICA2OiAnLW5jxLEnLFxuICAgICAgICA5OiAnLXVuY3UnLFxuICAgICAgICAxMDogJy11bmN1JyxcbiAgICAgICAgMzA6ICctdW5jdScsXG4gICAgICAgIDYwOiAnLcSxbmPEsScsXG4gICAgICAgIDkwOiAnLcSxbmPEsScsXG4gICAgfTtcblxuICAgIHZhciBheiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2F6Jywge1xuICAgICAgICBtb250aHM6ICd5YW52YXJfZmV2cmFsX21hcnRfYXByZWxfbWF5X2l5dW5faXl1bF9hdnF1c3Rfc2VudHlhYnJfb2t0eWFicl9ub3lhYnJfZGVrYWJyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ3lhbl9mZXZfbWFyX2Fwcl9tYXlfaXluX2l5bF9hdnFfc2VuX29rdF9ub3lfZGVrJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdCYXphcl9CYXphciBlcnTJmXNpX8OHyZlyxZ/JmW5iyZkgYXjFn2FtxLFfw4fJmXLFn8mZbmLJmV9Dw7xtyZkgYXjFn2FtxLFfQ8O8bcmZX8WeyZluYsmZJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdCYXpfQnpFX8OHQXhfw4fJmXJfQ0F4X0PDvG1fxZ7JmW4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnQnpfQkVfw4dBX8OHyZlfQ0FfQ8O8X8WeyZknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tidWfDvG4gc2FhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tzYWJhaCBzYWF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1tnyZlsyZluIGjJmWZ0yZldIGRkZGQgW3NhYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbZMO8bsmZbl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdba2XDp8mZbiBoyZlmdMmZXSBkZGRkIFtzYWF0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIHNvbnJhJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDJmXZ2yZlsJyxcbiAgICAgICAgICAgIHM6ICdiaXIgbmXDp8mZIHNhbml5yZknLFxuICAgICAgICAgICAgc3M6ICclZCBzYW5pecmZJyxcbiAgICAgICAgICAgIG06ICdiaXIgZMmZcWlxyZknLFxuICAgICAgICAgICAgbW06ICclZCBkyZlxaXHJmScsXG4gICAgICAgICAgICBoOiAnYmlyIHNhYXQnLFxuICAgICAgICAgICAgaGg6ICclZCBzYWF0JyxcbiAgICAgICAgICAgIGQ6ICdiaXIgZ8O8bicsXG4gICAgICAgICAgICBkZDogJyVkIGfDvG4nLFxuICAgICAgICAgICAgTTogJ2JpciBheScsXG4gICAgICAgICAgICBNTTogJyVkIGF5JyxcbiAgICAgICAgICAgIHk6ICdiaXIgaWwnLFxuICAgICAgICAgICAgeXk6ICclZCBpbCcsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9nZWPJmXxzyZloyZlyfGfDvG5kw7x6fGF4xZ9hbS8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9eKGfDvG5kw7x6fGF4xZ9hbSkkLy50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZ2VjyZknO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3PJmWjJmXInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2fDvG5kw7x6JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdheMWfYW0nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tKMSxbmPEsXxpbmNpfG5jaXzDvG5jw7x8bmPEsXx1bmN1KS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDApIHtcbiAgICAgICAgICAgICAgICAvLyBzcGVjaWFsIGNhc2UgZm9yIHplcm9cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3EsW5jxLEnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGEgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBiID0gKG51bWJlciAlIDEwMCkgLSBhLFxuICAgICAgICAgICAgICAgIGMgPSBudW1iZXIgPj0gMTAwID8gMTAwIDogbnVsbDtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAoc3VmZml4ZXNbYV0gfHwgc3VmZml4ZXNbYl0gfHwgc3VmZml4ZXNbY10pO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXo7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQmVsYXJ1c2lhbiBbYmVdXG4vLyEgYXV0aG9yIDogRG1pdHJ5IERlbWlkb3YgOiBodHRwczovL2dpdGh1Yi5jb20vZGVtaWRvdjkxXG4vLyEgYXV0aG9yOiBQcmFsZXNrYTogaHR0cDovL3ByYWxlc2thLnByby9cbi8vISBBdXRob3IgOiBNZW5lbGlvbiBFbGVuc8O6bGUgOiBodHRwczovL2dpdGh1Yi5jb20vT2lyZVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gcGx1cmFsKHdvcmQsIG51bSkge1xuICAgICAgICB2YXIgZm9ybXMgPSB3b3JkLnNwbGl0KCdfJyk7XG4gICAgICAgIHJldHVybiBudW0gJSAxMCA9PT0gMSAmJiBudW0gJSAxMDAgIT09IDExXG4gICAgICAgICAgICA/IGZvcm1zWzBdXG4gICAgICAgICAgICA6IG51bSAlIDEwID49IDIgJiYgbnVtICUgMTAgPD0gNCAmJiAobnVtICUgMTAwIDwgMTAgfHwgbnVtICUgMTAwID49IDIwKVxuICAgICAgICAgICAgPyBmb3Jtc1sxXVxuICAgICAgICAgICAgOiBmb3Jtc1syXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lV2l0aFBsdXJhbChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgc3M6IHdpdGhvdXRTdWZmaXggPyAn0YHQtdC60YPQvdC00LBf0YHQtdC60YPQvdC00Ytf0YHQtdC60YPQvdC0JyA6ICfRgdC10LrRg9C90LTRg1/RgdC10LrRg9C90LTRi1/RgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgbW06IHdpdGhvdXRTdWZmaXggPyAn0YXQstGW0LvRltC90LBf0YXQstGW0LvRltC90Ytf0YXQstGW0LvRltC9JyA6ICfRhdCy0ZbQu9GW0L3Rg1/RhdCy0ZbQu9GW0L3Ri1/RhdCy0ZbQu9GW0L0nLFxuICAgICAgICAgICAgaGg6IHdpdGhvdXRTdWZmaXggPyAn0LPQsNC00LfRltC90LBf0LPQsNC00LfRltC90Ytf0LPQsNC00LfRltC9JyA6ICfQs9Cw0LTQt9GW0L3Rg1/Qs9Cw0LTQt9GW0L3Ri1/Qs9Cw0LTQt9GW0L0nLFxuICAgICAgICAgICAgZGQ6ICfQtNC30LXQvdGMX9C00L3Rll/QtNC30ZHQvScsXG4gICAgICAgICAgICBNTTogJ9C80LXRgdGP0YZf0LzQtdGB0Y/RhtGLX9C80LXRgdGP0YbQsNGeJyxcbiAgICAgICAgICAgIHl5OiAn0LPQvtC0X9Cz0LDQtNGLX9Cz0LDQtNC+0Z4nLFxuICAgICAgICB9O1xuICAgICAgICBpZiAoa2V5ID09PSAnbScpIHtcbiAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ9GF0LLRltC70ZbQvdCwJyA6ICfRhdCy0ZbQu9GW0L3Rgyc7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnaCcpIHtcbiAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ9Cz0LDQtNC30ZbQvdCwJyA6ICfQs9Cw0LTQt9GW0L3Rgyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyAnICsgcGx1cmFsKGZvcm1hdFtrZXldLCArbnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBiZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2JlJywge1xuICAgICAgICBtb250aHM6IHtcbiAgICAgICAgICAgIGZvcm1hdDogJ9GB0YLRg9C00LfQtdC90Y9f0LvRjtGC0LDQs9CwX9GB0LDQutCw0LLRltC60LBf0LrRgNCw0YHQsNCy0ZbQutCwX9GC0YDQsNGe0L3Rj1/Rh9GN0YDQstC10L3Rj1/Qu9GW0L/QtdC90Y9f0LbQvdGW0Z7QvdGPX9Cy0LXRgNCw0YHQvdGPX9C60LDRgdGC0YDRi9GH0L3RltC60LBf0LvRltGB0YLQsNC/0LDQtNCwX9GB0L3QtdC20L3Rjycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhbmRhbG9uZTpcbiAgICAgICAgICAgICAgICAn0YHRgtGD0LTQt9C10L3RjF/Qu9GO0YLRi1/RgdCw0LrQsNCy0ZbQul/QutGA0LDRgdCw0LLRltC6X9GC0YDQsNCy0LXQvdGMX9GH0Y3RgNCy0LXQvdGMX9C70ZbQv9C10L3RjF/QttC90ZbQstC10L3RjF/QstC10YDQsNGB0LXQvdGMX9C60LDRgdGC0YDRi9GH0L3RltC6X9C70ZbRgdGC0LDQv9Cw0LRf0YHQvdC10LbQsNC90YwnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfRgdGC0YPQtF/Qu9GO0YJf0YHQsNC6X9C60YDQsNGBX9GC0YDQsNCyX9GH0Y3RgNCyX9C70ZbQv1/QttC90ZbQsl/QstC10YBf0LrQsNGB0YJf0LvRltGB0YJf0YHQvdC10LYnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICfQvdGP0LTQt9C10LvRjl/Qv9Cw0L3Rj9C00LfQtdC70LDQul/QsNGe0YLQvtGA0LDQul/RgdC10YDQsNC00YNf0YfQsNGG0LLQtdGAX9C/0Y/RgtC90ZbRhtGDX9GB0YPQsdC+0YLRgycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhbmRhbG9uZTpcbiAgICAgICAgICAgICAgICAn0L3Rj9C00LfQtdC70Y9f0L/QsNC90Y/QtNC30LXQu9Cw0Lpf0LDRntGC0L7RgNCw0Lpf0YHQtdGA0LDQtNCwX9GH0LDRhtCy0LXRgF/Qv9GP0YLQvdGW0YbQsF/RgdGD0LHQvtGC0LAnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgaXNGb3JtYXQ6IC9cXFsgP1vQo9GD0Z5dID8oPzrQvNGW0L3Rg9C70YPRjnzQvdCw0YHRgtGD0L/QvdGD0Y4pPyA/XFxdID9kZGRkLyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9C90LRf0L/QvV/QsNGCX9GB0YBf0YfRhl/Qv9GCX9GB0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn0L3QtF/Qv9C9X9Cw0YJf0YHRgF/Rh9GGX9C/0YJf0YHQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWSDQsy4nLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkg0LMuLCBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkg0LMuLCBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9Ch0ZHQvdC90Y8g0Z5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb0JfQsNGe0YLRgNCwINGeXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9Cj0YfQvtGA0LAg0Z5dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdb0KNdIGRkZGQgW9GeXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0KMg0LzRltC90YPQu9GD0Y5dIGRkZGQgW9GeXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQoyDQvNGW0L3Rg9C70YtdIGRkZGQgW9GeXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn0L/RgNCw0LcgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzINGC0LDQvNGDJyxcbiAgICAgICAgICAgIHM6ICfQvdC10LrQsNC70YzQutGWINGB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBtOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgbW06IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBoOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgaGg6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBkOiAn0LTQt9C10L3RjCcsXG4gICAgICAgICAgICBkZDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIE06ICfQvNC10YHRj9GGJyxcbiAgICAgICAgICAgIE1NOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgeTogJ9Cz0L7QtCcsXG4gICAgICAgICAgICB5eTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9C90L7Rh9GLfNGA0LDQvdGW0YbRi3zQtNC90Y980LLQtdGH0LDRgNCwLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL14o0LTQvdGPfNCy0LXRh9Cw0YDQsCkkLy50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0L3QvtGH0YsnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9GA0LDQvdGW0YbRiyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0LTQvdGPJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQstC10YfQsNGA0LAnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tKNGWfNGLfNCz0LApLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAobnVtYmVyICUgMTAgPT09IDIgfHwgbnVtYmVyICUgMTAgPT09IDMpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgJSAxMDAgIT09IDEyICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgJSAxMDAgIT09IDEzXG4gICAgICAgICAgICAgICAgICAgICAgICA/IG51bWJlciArICct0ZYnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bWJlciArICct0YsnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3Qs9CwJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYmU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQnVsZ2FyaWFuIFtiZ11cbi8vISBhdXRob3IgOiBLcmFzZW4gQm9yaXNvdiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9rcmF6XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgYmcgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdiZycsIHtcbiAgICAgICAgbW9udGhzOiAn0Y/QvdGD0LDRgNC4X9GE0LXQstGA0YPQsNGA0Lhf0LzQsNGA0YJf0LDQv9GA0LjQu1/QvNCw0Llf0Y7QvdC4X9GO0LvQuF/QsNCy0LPRg9GB0YJf0YHQtdC/0YLQtdC80LLRgNC4X9C+0LrRgtC+0LzQstGA0Lhf0L3QvtC10LzQstGA0Lhf0LTQtdC60LXQvNCy0YDQuCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfRj9C90YNf0YTQtdCyX9C80LDRgF/QsNC/0YBf0LzQsNC5X9GO0L3QuF/RjtC70Lhf0LDQstCzX9GB0LXQv1/QvtC60YJf0L3QvtC1X9C00LXQuicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICfQvdC10LTQtdC70Y9f0L/QvtC90LXQtNC10LvQvdC40Lpf0LLRgtC+0YDQvdC40Lpf0YHRgNGP0LTQsF/Rh9C10YLQstGK0YDRgtGK0Lpf0L/QtdGC0YrQul/RgdGK0LHQvtGC0LAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfQvdC10LRf0L/QvtC9X9Cy0YLQvl/RgdGA0Y9f0YfQtdGCX9C/0LXRgl/RgdGK0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn0L3QtF/Qv9C9X9Cy0YJf0YHRgF/Rh9GCX9C/0YJf0YHQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb0JTQvdC10YEg0LJdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb0KPRgtGA0LUg0LJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb0LJdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb0JLRh9C10YDQsCDQsl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9Cc0LjQvdCw0LvQsNGC0LBdIGRkZGQgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9Cc0LjQvdCw0LvQuNGPXSBkZGRkIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9GB0LvQtdC0ICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICfQv9GA0LXQtNC4ICVzJyxcbiAgICAgICAgICAgIHM6ICfQvdGP0LrQvtC70LrQviDRgdC10LrRg9C90LTQuCcsXG4gICAgICAgICAgICBzczogJyVkINGB0LXQutGD0L3QtNC4JyxcbiAgICAgICAgICAgIG06ICfQvNC40L3Rg9GC0LAnLFxuICAgICAgICAgICAgbW06ICclZCDQvNC40L3Rg9GC0LgnLFxuICAgICAgICAgICAgaDogJ9GH0LDRgScsXG4gICAgICAgICAgICBoaDogJyVkINGH0LDRgdCwJyxcbiAgICAgICAgICAgIGQ6ICfQtNC10L0nLFxuICAgICAgICAgICAgZGQ6ICclZCDQtNC10L3QsCcsXG4gICAgICAgICAgICB3OiAn0YHQtdC00LzQuNGG0LAnLFxuICAgICAgICAgICAgd3c6ICclZCDRgdC10LTQvNC40YbQuCcsXG4gICAgICAgICAgICBNOiAn0LzQtdGB0LXRhicsXG4gICAgICAgICAgICBNTTogJyVkINC80LXRgdC10YbQsCcsXG4gICAgICAgICAgICB5OiAn0LPQvtC00LjQvdCwJyxcbiAgICAgICAgICAgIHl5OiAnJWQg0LPQvtC00LjQvdC4JyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjQtdCyfNC10L180YLQuHzQstC4fNGA0Lh80LzQuCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgbGFzdERpZ2l0ID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgbGFzdDJEaWdpdHMgPSBudW1iZXIgJSAxMDA7XG4gICAgICAgICAgICBpZiAobnVtYmVyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LXQsic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3QyRGlnaXRzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LXQvSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3QyRGlnaXRzID4gMTAgJiYgbGFzdDJEaWdpdHMgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdGC0LgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0RGlnaXQgPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QstC4JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdERpZ2l0ID09PSAyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0YDQuCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3REaWdpdCA9PT0gNyB8fCBsYXN0RGlnaXQgPT09IDgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QvNC4JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0YLQuCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBiZztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBCYW1iYXJhIFtibV1cbi8vISBhdXRob3IgOiBFc3RlbGxlIENvbW1lbnQgOiBodHRwczovL2dpdGh1Yi5jb20vZXN0ZWxsZWNvbW1lbnRcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBibSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2JtJywge1xuICAgICAgICBtb250aHM6ICdaYW53dXlla2Fsb19GZXd1cnV5ZWthbG9fTWFyaXNpa2Fsb19Bd2lyaWxpa2Fsb19NyZtrYWxvX1p1d8mbbmthbG9fWnVsdXlla2Fsb19VdGlrYWxvX1PJm3RhbmJ1cnVrYWxvX8mUa3V0yZRidXJ1a2Fsb19Ob3dhbmJ1cnVrYWxvX0Rlc2FuYnVydWthbG8nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnWmFuX0Zld19NYXJfQXdpX03Jm19adXdfWnVsX1V0aV9TyZt0X8mUa3VfTm93X0Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdLYXJpX050yZtuyZtuX1RhcmF0YV9BcmFiYV9BbGFtaXNhX0p1bWFfU2liaXJpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnS2FyX050yZtfVGFyX0FyYV9BbGFfSnVtX1NpYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdLYV9OdF9UYV9Bcl9BbF9KdV9TaScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdNTU1NIFt0aWxlXSBEIFtzYW5dIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnTU1NTSBbdGlsZV0gRCBbc2FuXSBZWVlZIFtsyZtyyZtdIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIE1NTU0gW3RpbGVdIEQgW3Nhbl0gWVlZWSBbbMmbcsmbXSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0JpIGzJm3LJm10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tTaW5pIGzJm3LJm10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtkb24gbMmbcsmbXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0t1bnUgbMmbcsmbXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW3TJm23Jm25lbiBsyZtyyZtdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMga8mUbsmUJyxcbiAgICAgICAgICAgIHBhc3Q6ICdhIGLJmyAlcyBiyZQnLFxuICAgICAgICAgICAgczogJ3NhbmdhIGRhbWEgZGFtYScsXG4gICAgICAgICAgICBzczogJ3Nla29uZGkgJWQnLFxuICAgICAgICAgICAgbTogJ21pbml0aSBrZWxlbicsXG4gICAgICAgICAgICBtbTogJ21pbml0aSAlZCcsXG4gICAgICAgICAgICBoOiAnbMmbcsmbIGtlbGVuJyxcbiAgICAgICAgICAgIGhoOiAnbMmbcsmbICVkJyxcbiAgICAgICAgICAgIGQ6ICd0aWxlIGtlbGVuJyxcbiAgICAgICAgICAgIGRkOiAndGlsZSAlZCcsXG4gICAgICAgICAgICBNOiAna2FsbyBrZWxlbicsXG4gICAgICAgICAgICBNTTogJ2thbG8gJWQnLFxuICAgICAgICAgICAgeTogJ3NhbiBrZWxlbicsXG4gICAgICAgICAgICB5eTogJ3NhbiAlZCcsXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBibTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBCZW5nYWxpIChCYW5nbGFkZXNoKSBbYm4tYmRdXG4vLyEgYXV0aG9yIDogQXNyYWYgSG9zc2FpbiBQYXRvYXJ5IDogaHR0cHM6Ly9naXRodWIuY29tL2FzaHdvb2xmb3JkXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgMTogJ+CnpycsXG4gICAgICAgICAgICAyOiAn4KeoJyxcbiAgICAgICAgICAgIDM6ICfgp6knLFxuICAgICAgICAgICAgNDogJ+CnqicsXG4gICAgICAgICAgICA1OiAn4KerJyxcbiAgICAgICAgICAgIDY6ICfgp6wnLFxuICAgICAgICAgICAgNzogJ+CnrScsXG4gICAgICAgICAgICA4OiAn4KeuJyxcbiAgICAgICAgICAgIDk6ICfgp68nLFxuICAgICAgICAgICAgMDogJ+CnpicsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfgp6cnOiAnMScsXG4gICAgICAgICAgICAn4KeoJzogJzInLFxuICAgICAgICAgICAgJ+CnqSc6ICczJyxcbiAgICAgICAgICAgICfgp6onOiAnNCcsXG4gICAgICAgICAgICAn4KerJzogJzUnLFxuICAgICAgICAgICAgJ+CnrCc6ICc2JyxcbiAgICAgICAgICAgICfgp60nOiAnNycsXG4gICAgICAgICAgICAn4KeuJzogJzgnLFxuICAgICAgICAgICAgJ+Cnryc6ICc5JyxcbiAgICAgICAgICAgICfgp6YnOiAnMCcsXG4gICAgICAgIH07XG5cbiAgICB2YXIgYm5CZCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2JuLWJkJywge1xuICAgICAgICBtb250aHM6ICfgppzgpr7gpqjgp4Hgp5/gpr7gprDgpr9f4Kar4KeH4Kas4KeN4Kaw4KeB4Kef4Ka+4Kaw4Ka/X+CmruCmvuCmsOCnjeCmml/gpo/gpqrgp43gprDgpr/gprJf4Kau4KeHX+CmnOCngeCmqF/gppzgp4HgprLgpr7gpodf4KaG4KaX4Ka44KeN4KafX+CmuOCnh+CmquCnjeCmn+Cnh+CmruCnjeCmrOCmsF/gpoXgppXgp43gpp/gp4vgpqzgprBf4Kao4Kat4KeH4Kau4KeN4Kas4KawX+CmoeCmv+CmuOCnh+CmruCnjeCmrOCmsCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn4Kac4Ka+4Kao4KeBX+Cmq+Cnh+CmrOCnjeCmsOCngV/gpq7gpr7gprDgp43gpppf4KaP4Kaq4KeN4Kaw4Ka/4KayX+CmruCnh1/gppzgp4Hgpqhf4Kac4KeB4Kay4Ka+4KaHX+CmhuCml+CmuOCnjeCmn1/gprjgp4fgpqrgp43gpp9f4KaF4KaV4KeN4Kaf4KeLX+CmqOCmreCnh1/gpqHgpr/gprjgp4cnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfgprDgpqzgpr/gpqzgpr7gprBf4Ka44KeL4Kau4Kas4Ka+4KawX+CmruCmmeCnjeCml+CmsuCmrOCmvuCmsF/gpqzgp4Hgpqfgpqzgpr7gprBf4Kas4KeD4Ka54Ka44KeN4Kaq4Kak4Ka/4Kas4Ka+4KawX+CmtuCngeCmleCnjeCmsOCmrOCmvuCmsF/gprbgpqjgpr/gpqzgpr7gprAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgprDgpqzgpr9f4Ka44KeL4KauX+CmruCmmeCnjeCml+Cmsl/gpqzgp4Hgpqdf4Kas4KeD4Ka54Ka44KeN4Kaq4Kak4Ka/X+CmtuCngeCmleCnjeCmsF/gprbgpqjgpr8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4Kaw4Kas4Ka/X+CmuOCni+Cmrl/gpq7gppngp43gppfgprJf4Kas4KeB4KanX+CmrOCng+CmuV/gprbgp4HgppXgp43gprBf4Ka24Kao4Ka/Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0g4Ka44Kau4KefJyxcbiAgICAgICAgICAgIExUUzogJ0EgaDptbTpzcyDgprjgpq7gp58nLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSwgQSBoOm1tIOCmuOCmruCnnycsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSDgprjgpq7gp58nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgpobgppxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4KaG4KaX4Ka+4Kau4KeA4KaV4Ka+4KayXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4KaX4Kak4KaV4Ka+4KayXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgppfgpqRdIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg4Kaq4Kaw4KeHJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDgpobgppfgp4cnLFxuICAgICAgICAgICAgczogJ+CmleCnn+Cnh+CmlSDgprjgp4fgppXgp4fgpqjgp43gpqEnLFxuICAgICAgICAgICAgc3M6ICclZCDgprjgp4fgppXgp4fgpqjgp43gpqEnLFxuICAgICAgICAgICAgbTogJ+Cmj+CmlSDgpq7gpr/gpqjgpr/gpp8nLFxuICAgICAgICAgICAgbW06ICclZCDgpq7gpr/gpqjgpr/gpp8nLFxuICAgICAgICAgICAgaDogJ+Cmj+CmlSDgppjgpqjgp43gpp/gpr4nLFxuICAgICAgICAgICAgaGg6ICclZCDgppjgpqjgp43gpp/gpr4nLFxuICAgICAgICAgICAgZDogJ+Cmj+CmlSDgpqbgpr/gpqgnLFxuICAgICAgICAgICAgZGQ6ICclZCDgpqbgpr/gpqgnLFxuICAgICAgICAgICAgTTogJ+Cmj+CmlSDgpq7gpr7gprgnLFxuICAgICAgICAgICAgTU06ICclZCDgpq7gpr7gprgnLFxuICAgICAgICAgICAgeTogJ+Cmj+CmlSDgpqzgppvgprAnLFxuICAgICAgICAgICAgeXk6ICclZCDgpqzgppvgprAnLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4Ken4Keo4Kep4Keq4Ker4Kes4Ket4Keu4Kev4KemXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gprDgpr7gpqR84Kat4KeL4KawfOCmuOCmleCmvuCmsnzgpqbgp4Hgpqrgp4HgprB84Kas4Ka/4KaV4Ka+4KayfOCmuOCmqOCnjeCmp+CnjeCmr+CmvnzgprDgpr7gpqQvLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgprDgpr7gpqQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpq3gp4vgprAnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Ka44KaV4Ka+4KayJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CmpuCngeCmquCngeCmsCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAzID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpqzgpr/gppXgpr7gprInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgprjgpqjgp43gpqfgp43gpq/gpr4nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgprDgpr7gpqQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgNikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kat4KeL4KawJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgprjgppXgpr7gprInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CmpuCngeCmquCngeCmsCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxOCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kas4Ka/4KaV4Ka+4KayJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgprjgpqjgp43gpqfgp43gpq/gpr4nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CmsOCmvuCmpCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBibkJkO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEJlbmdhbGkgW2JuXVxuLy8hIGF1dGhvciA6IEthdXNoaWsgR2FuZGhpIDogaHR0cHM6Ly9naXRodWIuY29tL2thdXNoaWtnYW5kaGlcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICAgICAxOiAn4KenJyxcbiAgICAgICAgICAgIDI6ICfgp6gnLFxuICAgICAgICAgICAgMzogJ+CnqScsXG4gICAgICAgICAgICA0OiAn4KeqJyxcbiAgICAgICAgICAgIDU6ICfgp6snLFxuICAgICAgICAgICAgNjogJ+CnrCcsXG4gICAgICAgICAgICA3OiAn4KetJyxcbiAgICAgICAgICAgIDg6ICfgp64nLFxuICAgICAgICAgICAgOTogJ+CnrycsXG4gICAgICAgICAgICAwOiAn4KemJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ+Cnpyc6ICcxJyxcbiAgICAgICAgICAgICfgp6gnOiAnMicsXG4gICAgICAgICAgICAn4KepJzogJzMnLFxuICAgICAgICAgICAgJ+Cnqic6ICc0JyxcbiAgICAgICAgICAgICfgp6snOiAnNScsXG4gICAgICAgICAgICAn4KesJzogJzYnLFxuICAgICAgICAgICAgJ+CnrSc6ICc3JyxcbiAgICAgICAgICAgICfgp64nOiAnOCcsXG4gICAgICAgICAgICAn4KevJzogJzknLFxuICAgICAgICAgICAgJ+Cnpic6ICcwJyxcbiAgICAgICAgfTtcblxuICAgIHZhciBibiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2JuJywge1xuICAgICAgICBtb250aHM6ICfgppzgpr7gpqjgp4Hgp5/gpr7gprDgpr9f4Kar4KeH4Kas4KeN4Kaw4KeB4Kef4Ka+4Kaw4Ka/X+CmruCmvuCmsOCnjeCmml/gpo/gpqrgp43gprDgpr/gprJf4Kau4KeHX+CmnOCngeCmqF/gppzgp4HgprLgpr7gpodf4KaG4KaX4Ka44KeN4KafX+CmuOCnh+CmquCnjeCmn+Cnh+CmruCnjeCmrOCmsF/gpoXgppXgp43gpp/gp4vgpqzgprBf4Kao4Kat4KeH4Kau4KeN4Kas4KawX+CmoeCmv+CmuOCnh+CmruCnjeCmrOCmsCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn4Kac4Ka+4Kao4KeBX+Cmq+Cnh+CmrOCnjeCmsOCngV/gpq7gpr7gprDgp43gpppf4KaP4Kaq4KeN4Kaw4Ka/4KayX+CmruCnh1/gppzgp4Hgpqhf4Kac4KeB4Kay4Ka+4KaHX+CmhuCml+CmuOCnjeCmn1/gprjgp4fgpqrgp43gpp9f4KaF4KaV4KeN4Kaf4KeLX+CmqOCmreCnh1/gpqHgpr/gprjgp4cnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfgprDgpqzgpr/gpqzgpr7gprBf4Ka44KeL4Kau4Kas4Ka+4KawX+CmruCmmeCnjeCml+CmsuCmrOCmvuCmsF/gpqzgp4Hgpqfgpqzgpr7gprBf4Kas4KeD4Ka54Ka44KeN4Kaq4Kak4Ka/4Kas4Ka+4KawX+CmtuCngeCmleCnjeCmsOCmrOCmvuCmsF/gprbgpqjgpr/gpqzgpr7gprAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgprDgpqzgpr9f4Ka44KeL4KauX+CmruCmmeCnjeCml+Cmsl/gpqzgp4Hgpqdf4Kas4KeD4Ka54Ka44KeN4Kaq4Kak4Ka/X+CmtuCngeCmleCnjeCmsF/gprbgpqjgpr8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4Kaw4Kas4Ka/X+CmuOCni+Cmrl/gpq7gppngp43gppfgprJf4Kas4KeB4KanX+CmrOCng+CmuV/gprbgp4HgppXgp43gprBf4Ka24Kao4Ka/Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0g4Ka44Kau4KefJyxcbiAgICAgICAgICAgIExUUzogJ0EgaDptbTpzcyDgprjgpq7gp58nLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSwgQSBoOm1tIOCmuOCmruCnnycsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSDgprjgpq7gp58nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgpobgppxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4KaG4KaX4Ka+4Kau4KeA4KaV4Ka+4KayXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4KaX4Kak4KaV4Ka+4KayXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgppfgpqRdIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg4Kaq4Kaw4KeHJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDgpobgppfgp4cnLFxuICAgICAgICAgICAgczogJ+CmleCnn+Cnh+CmlSDgprjgp4fgppXgp4fgpqjgp43gpqEnLFxuICAgICAgICAgICAgc3M6ICclZCDgprjgp4fgppXgp4fgpqjgp43gpqEnLFxuICAgICAgICAgICAgbTogJ+Cmj+CmlSDgpq7gpr/gpqjgpr/gpp8nLFxuICAgICAgICAgICAgbW06ICclZCDgpq7gpr/gpqjgpr/gpp8nLFxuICAgICAgICAgICAgaDogJ+Cmj+CmlSDgppjgpqjgp43gpp/gpr4nLFxuICAgICAgICAgICAgaGg6ICclZCDgppjgpqjgp43gpp/gpr4nLFxuICAgICAgICAgICAgZDogJ+Cmj+CmlSDgpqbgpr/gpqgnLFxuICAgICAgICAgICAgZGQ6ICclZCDgpqbgpr/gpqgnLFxuICAgICAgICAgICAgTTogJ+Cmj+CmlSDgpq7gpr7gprgnLFxuICAgICAgICAgICAgTU06ICclZCDgpq7gpr7gprgnLFxuICAgICAgICAgICAgeTogJ+Cmj+CmlSDgpqzgppvgprAnLFxuICAgICAgICAgICAgeXk6ICclZCDgpqzgppvgprAnLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4Ken4Keo4Kep4Keq4Ker4Kes4Ket4Keu4Kev4KemXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4Kaw4Ka+4KakfOCmuOCmleCmvuCmsnzgpqbgp4Hgpqrgp4HgprB84Kas4Ka/4KaV4Ka+4KayfOCmsOCmvuCmpC8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAobWVyaWRpZW0gPT09ICfgprDgpr7gpqQnICYmIGhvdXIgPj0gNCkgfHxcbiAgICAgICAgICAgICAgICAobWVyaWRpZW0gPT09ICfgpqbgp4Hgpqrgp4HgprAnICYmIGhvdXIgPCA1KSB8fFxuICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn4Kas4Ka/4KaV4Ka+4KayJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CmsOCmvuCmpCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Ka44KaV4Ka+4KayJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpqbgp4Hgpqrgp4HgprAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CmrOCmv+CmleCmvuCmsic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kaw4Ka+4KakJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJuO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFRpYmV0YW4gW2JvXVxuLy8hIGF1dGhvciA6IFRodXB0ZW4gTi4gQ2hha3Jpc2hhciA6IGh0dHBzOi8vZ2l0aHViLmNvbS92YWpyYWRvZ1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICfgvKEnLFxuICAgICAgICAgICAgMjogJ+C8oicsXG4gICAgICAgICAgICAzOiAn4LyjJyxcbiAgICAgICAgICAgIDQ6ICfgvKQnLFxuICAgICAgICAgICAgNTogJ+C8pScsXG4gICAgICAgICAgICA2OiAn4LymJyxcbiAgICAgICAgICAgIDc6ICfgvKcnLFxuICAgICAgICAgICAgODogJ+C8qCcsXG4gICAgICAgICAgICA5OiAn4LypJyxcbiAgICAgICAgICAgIDA6ICfgvKAnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn4LyhJzogJzEnLFxuICAgICAgICAgICAgJ+C8oic6ICcyJyxcbiAgICAgICAgICAgICfgvKMnOiAnMycsXG4gICAgICAgICAgICAn4LykJzogJzQnLFxuICAgICAgICAgICAgJ+C8pSc6ICc1JyxcbiAgICAgICAgICAgICfgvKYnOiAnNicsXG4gICAgICAgICAgICAn4LynJzogJzcnLFxuICAgICAgICAgICAgJ+C8qCc6ICc4JyxcbiAgICAgICAgICAgICfgvKknOiAnOScsXG4gICAgICAgICAgICAn4LygJzogJzAnLFxuICAgICAgICB9O1xuXG4gICAgdmFyIGJvID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYm8nLCB7XG4gICAgICAgIG1vbnRoczogJ+C9n+C+s+C8i+C9luC8i+C9keC9hOC8i+C9lOC9vF/gvZ/gvrPgvIvgvZbgvIvgvYLgvYngvbLgvabgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2C4L2m4L204L2Y4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9nuC9suC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvaPgvpTgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2R4L6y4L204L2C4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9keC9tOC9k+C8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvaLgvpLgvrHgvZHgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2R4L2C4L204LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9heC9tOC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvYXgvbTgvIvgvYLgvYXgvbLgvYLgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2F4L204LyL4L2C4L2J4L2y4L2m4LyL4L2UJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfgvZ/gvrPgvIsxX+C9n+C+s+C8izJf4L2f4L6z4LyLM1/gvZ/gvrPgvIs0X+C9n+C+s+C8izVf4L2f4L6z4LyLNl/gvZ/gvrPgvIs3X+C9n+C+s+C8izhf4L2f4L6z4LyLOV/gvZ/gvrPgvIsxMF/gvZ/gvrPgvIsxMV/gvZ/gvrPgvIsxMicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiAvXijgvZ/gvrPgvItcXGR7MSwyfSkvLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICfgvYLgvZ/gvaDgvIvgvYngvbLgvIvgvZjgvItf4L2C4L2f4L2g4LyL4L2f4L6z4LyL4L2W4LyLX+C9guC9n+C9oOC8i+C9mOC9suC9guC8i+C9keC9mOC9ouC8i1/gvYLgvZ/gvaDgvIvgvaPgvrfgvYLgvIvgvZTgvItf4L2C4L2f4L2g4LyL4L2V4L204L2i4LyL4L2W4L20X+C9guC9n+C9oOC8i+C9lOC8i+C9puC9hOC9puC8i1/gvYLgvZ/gvaDgvIvgvabgvqTgvbrgvZPgvIvgvZTgvIsnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+C9ieC9suC8i+C9mOC8i1/gvZ/gvrPgvIvgvZbgvItf4L2Y4L2y4L2C4LyL4L2R4L2Y4L2i4LyLX+C9o+C+t+C9guC8i+C9lOC8i1/gvZXgvbTgvaLgvIvgvZbgvbRf4L2U4LyL4L2m4L2E4L2m4LyLX+C9puC+pOC9uuC9k+C8i+C9lOC8iycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfgvYngvbJf4L2f4L6zX+C9mOC9suC9gl/gvaPgvrfgvYJf4L2V4L204L2iX+C9puC9hOC9pl/gvabgvqTgvbrgvZMnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0EgaDptbScsXG4gICAgICAgICAgICBMVFM6ICdBIGg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSwgQSBoOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4L2R4L2y4LyL4L2i4L2y4L2EXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+C9puC9hOC8i+C9ieC9suC9k10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdb4L2W4L2R4L204L2T4LyL4L2V4L6y4L2C4LyL4L2i4L6X4L264L2m4LyL4L2YXSwgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vgvYHgvIvgvabgvYRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+C9luC9keC9tOC9k+C8i+C9leC+suC9guC8i+C9mOC9kOC9oOC8i+C9mF0gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDgvaPgvIsnLFxuICAgICAgICAgICAgcGFzdDogJyVzIOC9puC+lOC9k+C8i+C9oycsXG4gICAgICAgICAgICBzOiAn4L2j4L2Y4LyL4L2m4L2EJyxcbiAgICAgICAgICAgIHNzOiAnJWQg4L2m4L6Q4L2i4LyL4L2G4LyNJyxcbiAgICAgICAgICAgIG06ICfgvabgvpDgvaLgvIvgvZjgvIvgvYLgvYXgvbLgvYInLFxuICAgICAgICAgICAgbW06ICclZCDgvabgvpDgvaLgvIvgvZgnLFxuICAgICAgICAgICAgaDogJ+C9huC9tOC8i+C9muC9vOC9keC8i+C9guC9heC9suC9gicsXG4gICAgICAgICAgICBoaDogJyVkIOC9huC9tOC8i+C9muC9vOC9kScsXG4gICAgICAgICAgICBkOiAn4L2J4L2y4L2T4LyL4L2C4L2F4L2y4L2CJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4L2J4L2y4L2T4LyLJyxcbiAgICAgICAgICAgIE06ICfgvZ/gvrPgvIvgvZbgvIvgvYLgvYXgvbLgvYInLFxuICAgICAgICAgICAgTU06ICclZCDgvZ/gvrPgvIvgvZYnLFxuICAgICAgICAgICAgeTogJ+C9o+C9vOC8i+C9guC9heC9suC9gicsXG4gICAgICAgICAgICB5eTogJyVkIOC9o+C9vCcsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgvKHgvKLgvKPgvKTgvKXgvKbgvKfgvKjgvKngvKBdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gvZjgvZrgvZPgvIvgvZjgvbx84L2e4L284L2C4L2m4LyL4L2A4L2mfOC9ieC9suC9k+C8i+C9guC9tOC9hHzgvZHgvYLgvbzgvYTgvIvgvZHgvYJ84L2Y4L2a4L2T4LyL4L2Y4L28LyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIChtZXJpZGllbSA9PT0gJ+C9mOC9muC9k+C8i+C9mOC9vCcgJiYgaG91ciA+PSA0KSB8fFxuICAgICAgICAgICAgICAgIChtZXJpZGllbSA9PT0gJ+C9ieC9suC9k+C8i+C9guC9tOC9hCcgJiYgaG91ciA8IDUpIHx8XG4gICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfgvZHgvYLgvbzgvYTgvIvgvZHgvYInXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4L2Y4L2a4L2T4LyL4L2Y4L28JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgvZ7gvbzgvYLgvabgvIvgvYDgvaYnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C9ieC9suC9k+C8i+C9guC9tOC9hCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4L2R4L2C4L284L2E4LyL4L2R4L2CJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgvZjgvZrgvZPgvIvgvZjgvbwnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYm87XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQnJldG9uIFticl1cbi8vISBhdXRob3IgOiBKZWFuLUJhcHRpc3RlIExlIER1aWdvdSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qYmxlZHVpZ291XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWVXaXRoTXV0YXRpb24obnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgIG1tOiAnbXVudXRlbm4nLFxuICAgICAgICAgICAgTU06ICdtaXonLFxuICAgICAgICAgICAgZGQ6ICdkZXZlemgnLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbnVtYmVyICsgJyAnICsgbXV0YXRpb24oZm9ybWF0W2tleV0sIG51bWJlcik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNwZWNpYWxNdXRhdGlvbkZvclllYXJzKG51bWJlcikge1xuICAgICAgICBzd2l0Y2ggKGxhc3ROdW1iZXIobnVtYmVyKSkge1xuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnIGJsb2F6JztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgdmxvYXonO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGxhc3ROdW1iZXIobnVtYmVyKSB7XG4gICAgICAgIGlmIChudW1iZXIgPiA5KSB7XG4gICAgICAgICAgICByZXR1cm4gbGFzdE51bWJlcihudW1iZXIgJSAxMCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9XG4gICAgZnVuY3Rpb24gbXV0YXRpb24odGV4dCwgbnVtYmVyKSB7XG4gICAgICAgIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgIHJldHVybiBzb2Z0TXV0YXRpb24odGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNvZnRNdXRhdGlvbih0ZXh0KSB7XG4gICAgICAgIHZhciBtdXRhdGlvblRhYmxlID0ge1xuICAgICAgICAgICAgbTogJ3YnLFxuICAgICAgICAgICAgYjogJ3YnLFxuICAgICAgICAgICAgZDogJ3onLFxuICAgICAgICB9O1xuICAgICAgICBpZiAobXV0YXRpb25UYWJsZVt0ZXh0LmNoYXJBdCgwKV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG11dGF0aW9uVGFibGVbdGV4dC5jaGFyQXQoMCldICsgdGV4dC5zdWJzdHJpbmcoMSk7XG4gICAgfVxuXG4gICAgdmFyIG1vbnRoc1BhcnNlID0gW1xuICAgICAgICAgICAgL15nZW4vaSxcbiAgICAgICAgICAgIC9eY1vKvFxcJ11od2UvaSxcbiAgICAgICAgICAgIC9ebWV1L2ksXG4gICAgICAgICAgICAvXmVici9pLFxuICAgICAgICAgICAgL15tYWUvaSxcbiAgICAgICAgICAgIC9eKG1lenxldmUpL2ksXG4gICAgICAgICAgICAvXmdvdS9pLFxuICAgICAgICAgICAgL15lb3MvaSxcbiAgICAgICAgICAgIC9eZ3dlL2ksXG4gICAgICAgICAgICAvXmhlci9pLFxuICAgICAgICAgICAgL15kdS9pLFxuICAgICAgICAgICAgL15rZXIvaSxcbiAgICAgICAgXSxcbiAgICAgICAgbW9udGhzUmVnZXggPVxuICAgICAgICAgICAgL14oZ2VudmVyfGNbyrxcXCddaHdldnJlcnxtZXVyemh8ZWJyZWx8bWFlfG1lemhldmVufGdvdWVyZXxlb3N0fGd3ZW5nb2xvfGhlcmV8ZHV8a2VyenV8Z2VufGNbyrxcXCddaHdlfG1ldXxlYnJ8bWFlfGV2ZXxnb3V8ZW9zfGd3ZXxoZXJ8ZHV8a2VyKS9pLFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleCA9XG4gICAgICAgICAgICAvXihnZW52ZXJ8Y1vKvFxcJ11od2V2cmVyfG1ldXJ6aHxlYnJlbHxtYWV8bWV6aGV2ZW58Z291ZXJlfGVvc3R8Z3dlbmdvbG98aGVyZXxkdXxrZXJ6dSkvaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleCA9XG4gICAgICAgICAgICAvXihnZW58Y1vKvFxcJ11od2V8bWV1fGVicnxtYWV8ZXZlfGdvdXxlb3N8Z3dlfGhlcnxkdXxrZXIpL2ksXG4gICAgICAgIGZ1bGxXZWVrZGF5c1BhcnNlID0gW1xuICAgICAgICAgICAgL15zdWwvaSxcbiAgICAgICAgICAgIC9ebHVuL2ksXG4gICAgICAgICAgICAvXm1ldXJ6aC9pLFxuICAgICAgICAgICAgL15tZXJjW8q8XFwnXWhlci9pLFxuICAgICAgICAgICAgL155YW91L2ksXG4gICAgICAgICAgICAvXmd3ZW5lci9pLFxuICAgICAgICAgICAgL15zYWRvcm4vaSxcbiAgICAgICAgXSxcbiAgICAgICAgc2hvcnRXZWVrZGF5c1BhcnNlID0gW1xuICAgICAgICAgICAgL15TdWwvaSxcbiAgICAgICAgICAgIC9eTHVuL2ksXG4gICAgICAgICAgICAvXk1ldS9pLFxuICAgICAgICAgICAgL15NZXIvaSxcbiAgICAgICAgICAgIC9eWWFvL2ksXG4gICAgICAgICAgICAvXkd3ZS9pLFxuICAgICAgICAgICAgL15TYWQvaSxcbiAgICAgICAgXSxcbiAgICAgICAgbWluV2Vla2RheXNQYXJzZSA9IFtcbiAgICAgICAgICAgIC9eU3UvaSxcbiAgICAgICAgICAgIC9eTHUvaSxcbiAgICAgICAgICAgIC9eTWUoW15yXXwkKS9pLFxuICAgICAgICAgICAgL15NZXIvaSxcbiAgICAgICAgICAgIC9eWWEvaSxcbiAgICAgICAgICAgIC9eR3cvaSxcbiAgICAgICAgICAgIC9eU2EvaSxcbiAgICAgICAgXTtcblxuICAgIHZhciBiciA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2JyJywge1xuICAgICAgICBtb250aHM6ICdHZW52ZXJfQ8q8aHdldnJlcl9NZXVyemhfRWJyZWxfTWFlX01lemhldmVuX0dvdWVyZV9Fb3N0X0d3ZW5nb2xvX0hlcmVfRHVfS2VyenUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnR2VuX0PKvGh3ZV9NZXVfRWJyX01hZV9FdmVfR291X0Vvc19Hd2VfSGVyX0R1X0tlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdTdWxfTHVuX01ldXJ6aF9NZXJjyrxoZXJfWWFvdV9Hd2VuZXJfU2Fkb3JuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU3VsX0x1bl9NZXVfTWVyX1lhb19Hd2VfU2FkJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1N1X0x1X01lX01lcl9ZYV9Hd19TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZTogbWluV2Vla2RheXNQYXJzZSxcbiAgICAgICAgZnVsbFdlZWtkYXlzUGFyc2U6IGZ1bGxXZWVrZGF5c1BhcnNlLFxuICAgICAgICBzaG9ydFdlZWtkYXlzUGFyc2U6IHNob3J0V2Vla2RheXNQYXJzZSxcbiAgICAgICAgbWluV2Vla2RheXNQYXJzZTogbWluV2Vla2RheXNQYXJzZSxcblxuICAgICAgICBtb250aHNSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDogbW9udGhzU3RyaWN0UmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6IG1vbnRoc1Nob3J0U3RyaWN0UmVnZXgsXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG5cbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIFthIHZpel0gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgW2Egdml6XSBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgW2Egdml6XSBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tIaXppdiBkYV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tXYXJjyrxob2F6aCBkYV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtkYV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tEZWPKvGggZGFdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbcGFzZXQgZGFdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnYS1iZW5uICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDKvHpvJyxcbiAgICAgICAgICAgIHM6ICd1biBuZWJldWQgc2Vnb25kZW5ub8O5JyxcbiAgICAgICAgICAgIHNzOiAnJWQgZWlsZW5uJyxcbiAgICAgICAgICAgIG06ICd1ciB2dW51dGVubicsXG4gICAgICAgICAgICBtbTogcmVsYXRpdmVUaW1lV2l0aE11dGF0aW9uLFxuICAgICAgICAgICAgaDogJ3VuIGV1cicsXG4gICAgICAgICAgICBoaDogJyVkIGV1cicsXG4gICAgICAgICAgICBkOiAndW4gZGV2ZXpoJyxcbiAgICAgICAgICAgIGRkOiByZWxhdGl2ZVRpbWVXaXRoTXV0YXRpb24sXG4gICAgICAgICAgICBNOiAndXIgbWl6JyxcbiAgICAgICAgICAgIE1NOiByZWxhdGl2ZVRpbWVXaXRoTXV0YXRpb24sXG4gICAgICAgICAgICB5OiAndXIgYmxvYXonLFxuICAgICAgICAgICAgeXk6IHNwZWNpYWxNdXRhdGlvbkZvclllYXJzLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oYcOxfHZldCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgb3V0cHV0ID0gbnVtYmVyID09PSAxID8gJ2HDsScgOiAndmV0JztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL2EubS58Zy5tLi8sIC8vIGdvdWRlIG1lcmVubiB8IGEtcmFvayBtZXJlbm5cbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKHRva2VuKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9rZW4gPT09ICdnLm0uJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBob3VyIDwgMTIgPyAnYS5tLicgOiAnZy5tLic7XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYnI7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQm9zbmlhbiBbYnNdXG4vLyEgYXV0aG9yIDogTmVkaW0gQ2hvbGljaCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9mcm9udHlhcmRcbi8vISBiYXNlZCBvbiAoaHIpIHRyYW5zbGF0aW9uIGJ5IEJvamFuIE1hcmtvdmnEh1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3Nla3VuZGEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzZWt1bmRlJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3Nla3VuZGknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnamVkbmEgbWludXRhJyA6ICdqZWRuZSBtaW51dGUnO1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtaW51dGEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtaW51dGUnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWludXRhJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2plZGFuIHNhdCcgOiAnamVkbm9nIHNhdGEnO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzYXQnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzYXRhJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3NhdGknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdkYW4nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZGFuYSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21qZXNlYyc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21qZXNlY2EnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWplc2VjaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICd5eSc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2dvZGluYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2dvZGluZSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdnb2RpbmEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGJzID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYnMnLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnVhcl9mZWJydWFyX21hcnRfYXByaWxfbWFqX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmFyX29rdG9iYXJfbm92ZW1iYXJfZGVjZW1iYXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ2phbi5fZmViLl9tYXIuX2Fwci5fbWFqLl9qdW4uX2p1bC5fYXVnLl9zZXAuX29rdC5fbm92Ll9kZWMuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnbmVkamVsamFfcG9uZWRqZWxqYWtfdXRvcmFrX3NyaWplZGFfxI1ldHZydGFrX3BldGFrX3N1Ym90YScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ25lZC5fcG9uLl91dG8uX3NyaS5fxI1ldC5fcGV0Ll9zdWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ25lX3BvX3V0X3NyX8SNZV9wZV9zdScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbZGFuYXMgdV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tzdXRyYSB1XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbbmVkamVsanVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtzcmlqZWR1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbc3Vib3R1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBkZGRkIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbanXEjWVyIHVdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJvxaFsdV0gZGRkZCBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcm/FoWxlXSBbc3Vib3RlXSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcm/FoWxpXSBkZGRkIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnemEgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ3ByaWplICVzJyxcbiAgICAgICAgICAgIHM6ICdwYXIgc2VrdW5kaScsXG4gICAgICAgICAgICBzczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiAnZGFuJyxcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiAnbWplc2VjJyxcbiAgICAgICAgICAgIE1NOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5OiAnZ29kaW51JyxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYnM7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQ2F0YWxhbiBbY2FdXG4vLyEgYXV0aG9yIDogSnVhbiBHLiBIdXJ0YWRvIDogaHR0cHM6Ly9naXRodWIuY29tL2p1YW5naHVydGFkb1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGNhID0gbW9tZW50LmRlZmluZUxvY2FsZSgnY2EnLCB7XG4gICAgICAgIG1vbnRoczoge1xuICAgICAgICAgICAgc3RhbmRhbG9uZTpcbiAgICAgICAgICAgICAgICAnZ2VuZXJfZmVicmVyX21hcsOnX2FicmlsX21haWdfanVueV9qdWxpb2xfYWdvc3Rfc2V0ZW1icmVfb2N0dWJyZV9ub3ZlbWJyZV9kZXNlbWJyZScuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBmb3JtYXQ6IFwiZGUgZ2VuZXJfZGUgZmVicmVyX2RlIG1hcsOnX2QnYWJyaWxfZGUgbWFpZ19kZSBqdW55X2RlIGp1bGlvbF9kJ2Fnb3N0X2RlIHNldGVtYnJlX2Qnb2N0dWJyZV9kZSBub3ZlbWJyZV9kZSBkZXNlbWJyZVwiLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGlzRm9ybWF0OiAvRFtvRF0/KFxccykrTU1NTS8sXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ2dlbi5fZmVici5fbWFyw6dfYWJyLl9tYWlnX2p1bnlfanVsLl9hZy5fc2V0Ll9vY3QuX25vdi5fZGVzLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdkaXVtZW5nZV9kaWxsdW5zX2RpbWFydHNfZGltZWNyZXNfZGlqb3VzX2RpdmVuZHJlc19kaXNzYWJ0ZScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZGcuX2RsLl9kdC5fZGMuX2RqLl9kdi5fZHMuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2RnX2RsX2R0X2RjX2RqX2R2X2RzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBbZGVdIFlZWVknLFxuICAgICAgICAgICAgbGw6ICdEIE1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBbZGVdIFlZWVkgW2EgbGVzXSBIOm1tJyxcbiAgICAgICAgICAgIGxsbDogJ0QgTU1NIFlZWVksIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFtkZV0gWVlZWSBbYSBsZXNdIEg6bW0nLFxuICAgICAgICAgICAgbGxsbDogJ2RkZCBEIE1NTSBZWVlZLCBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1thdnVpIGEgJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAnbGVzJyA6ICdsYScpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHREYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tkZW3DoCBhICcgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ2xlcycgOiAnbGEnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBbYSAnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdsZXMnIDogJ2xhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2FoaXIgYSAnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdsZXMnIDogJ2xhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAnW2VsXSBkZGRkIFtwYXNzYXQgYSAnICtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdsZXMnIDogJ2xhJykgK1xuICAgICAgICAgICAgICAgICAgICAnXSBMVCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiBcImQnYXF1w60gJXNcIixcbiAgICAgICAgICAgIHBhc3Q6ICdmYSAlcycsXG4gICAgICAgICAgICBzOiAndW5zIHNlZ29ucycsXG4gICAgICAgICAgICBzczogJyVkIHNlZ29ucycsXG4gICAgICAgICAgICBtOiAndW4gbWludXQnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dHMnLFxuICAgICAgICAgICAgaDogJ3VuYSBob3JhJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG9yZXMnLFxuICAgICAgICAgICAgZDogJ3VuIGRpYScsXG4gICAgICAgICAgICBkZDogJyVkIGRpZXMnLFxuICAgICAgICAgICAgTTogJ3VuIG1lcycsXG4gICAgICAgICAgICBNTTogJyVkIG1lc29zJyxcbiAgICAgICAgICAgIHk6ICd1biBhbnknLFxuICAgICAgICAgICAgeXk6ICclZCBhbnlzJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHJ8bnx0fMOofGEpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICB2YXIgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICBudW1iZXIgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgPyAncidcbiAgICAgICAgICAgICAgICAgICAgOiBudW1iZXIgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgPyAnbidcbiAgICAgICAgICAgICAgICAgICAgOiBudW1iZXIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgPyAncidcbiAgICAgICAgICAgICAgICAgICAgOiBudW1iZXIgPT09IDRcbiAgICAgICAgICAgICAgICAgICAgPyAndCdcbiAgICAgICAgICAgICAgICAgICAgOiAnw6gnO1xuICAgICAgICAgICAgaWYgKHBlcmlvZCA9PT0gJ3cnIHx8IHBlcmlvZCA9PT0gJ1cnKSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gJ2EnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNhO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEN6ZWNoIFtjc11cbi8vISBhdXRob3IgOiBwZXRyYmVsYSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9wZXRyYmVsYVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRocyA9IHtcbiAgICAgICAgICAgIGZvcm1hdDogJ2xlZGVuX8O6bm9yX2LFmWV6ZW5fZHViZW5fa3bEm3Rlbl/EjWVydmVuX8SNZXJ2ZW5lY19zcnBlbl96w6HFmcOtX8WZw61qZW5fbGlzdG9wYWRfcHJvc2luZWMnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6XG4gICAgICAgICAgICAgICAgJ2xlZG5hX8O6bm9yYV9ixZllem5hX2R1Ym5hX2t2xJt0bmFfxI1lcnZuYV/EjWVydmVuY2Vfc3JwbmFfesOhxZnDrV/FmcOtam5hX2xpc3RvcGFkdV9wcm9zaW5jZScuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0ID0gJ2xlZF/Dum5vX2LFmWVfZHViX2t2xJtfxI12bl/EjXZjX3NycF96w6HFmV/FmcOtal9saXNfcHJvJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZSA9IFtcbiAgICAgICAgICAgIC9ebGVkL2ksXG4gICAgICAgICAgICAvXsO6bm8vaSxcbiAgICAgICAgICAgIC9eYsWZZS9pLFxuICAgICAgICAgICAgL15kdWIvaSxcbiAgICAgICAgICAgIC9ea3bEmy9pLFxuICAgICAgICAgICAgL14oxI12bnzEjWVydmVuJHzEjWVydm5hKS9pLFxuICAgICAgICAgICAgL14oxI12Y3zEjWVydmVuZWN8xI1lcnZlbmNlKS9pLFxuICAgICAgICAgICAgL15zcnAvaSxcbiAgICAgICAgICAgIC9eesOhxZkvaSxcbiAgICAgICAgICAgIC9exZnDrWovaSxcbiAgICAgICAgICAgIC9ebGlzL2ksXG4gICAgICAgICAgICAvXnByby9pLFxuICAgICAgICBdLFxuICAgICAgICAvLyBOT1RFOiAnxI1lcnZlbicgaXMgc3Vic3RyaW5nIG9mICfEjWVydmVuZWMnOyB0aGVyZWZvcmUgJ8SNZXJ2ZW5lYycgbXVzdCBwcmVjZWRlICfEjWVydmVuJyBpbiB0aGUgcmVnZXggdG8gYmUgZnVsbHkgbWF0Y2hlZC5cbiAgICAgICAgLy8gT3RoZXJ3aXNlIHBhcnNlciBtYXRjaGVzICcxLiDEjWVydmVuZWMnIGFzICcxLiDEjWVydmVuJyArICdlYycuXG4gICAgICAgIG1vbnRoc1JlZ2V4ID1cbiAgICAgICAgICAgIC9eKGxlZGVufMO6bm9yfGLFmWV6ZW58ZHViZW58a3bEm3RlbnzEjWVydmVuZWN8xI1lcnZlbmNlfMSNZXJ2ZW58xI1lcnZuYXxzcnBlbnx6w6HFmcOtfMWZw61qZW58bGlzdG9wYWR8cHJvc2luZWN8bGVkfMO6bm98YsWZZXxkdWJ8a3bEm3zEjXZufMSNdmN8c3JwfHrDocWZfMWZw61qfGxpc3xwcm8pL2k7XG5cbiAgICBmdW5jdGlvbiBwbHVyYWwobikge1xuICAgICAgICByZXR1cm4gbiA+IDEgJiYgbiA8IDUgJiYgfn4obiAvIDEwKSAhPT0gMTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVtYmVyICsgJyAnO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAncyc6IC8vIGEgZmV3IHNlY29uZHMgLyBpbiBhIGZldyBzZWNvbmRzIC8gYSBmZXcgc2Vjb25kcyBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdww6FyIHNla3VuZCcgOiAncMOhciBzZWt1bmRhbWknO1xuICAgICAgICAgICAgY2FzZSAnc3MnOiAvLyA5IHNlY29uZHMgLyBpbiA5IHNlY29uZHMgLyA5IHNlY29uZHMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdzZWt1bmR5JyA6ICdzZWt1bmQnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ3Nla3VuZGFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnbSc6IC8vIGEgbWludXRlIC8gaW4gYSBtaW51dGUgLyBhIG1pbnV0ZSBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdtaW51dGEnIDogaXNGdXR1cmUgPyAnbWludXR1JyA6ICdtaW51dG91JztcbiAgICAgICAgICAgIGNhc2UgJ21tJzogLy8gOSBtaW51dGVzIC8gaW4gOSBtaW51dGVzIC8gOSBtaW51dGVzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnbWludXR5JyA6ICdtaW51dCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbWludXRhbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2gnOiAvLyBhbiBob3VyIC8gaW4gYW4gaG91ciAvIGFuIGhvdXIgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnaG9kaW5hJyA6IGlzRnV0dXJlID8gJ2hvZGludScgOiAnaG9kaW5vdSc7XG4gICAgICAgICAgICBjYXNlICdoaCc6IC8vIDkgaG91cnMgLyBpbiA5IGhvdXJzIC8gOSBob3VycyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ2hvZGlueScgOiAnaG9kaW4nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ2hvZGluYW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdkJzogLy8gYSBkYXkgLyBpbiBhIGRheSAvIGEgZGF5IGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2RlbicgOiAnZG5lbSc7XG4gICAgICAgICAgICBjYXNlICdkZCc6IC8vIDkgZGF5cyAvIGluIDkgZGF5cyAvIDkgZGF5cyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ2RueScgOiAnZG7DrScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnZG55JztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdNJzogLy8gYSBtb250aCAvIGluIGEgbW9udGggLyBhIG1vbnRoIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ23Em3PDrWMnIDogJ23Em3PDrWNlbSc7XG4gICAgICAgICAgICBjYXNlICdNTSc6IC8vIDkgbW9udGhzIC8gaW4gOSBtb250aHMgLyA5IG1vbnRocyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ23Em3PDrWNlJyA6ICdtxJtzw61jxa8nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ23Em3PDrWNpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICd5JzogLy8gYSB5ZWFyIC8gaW4gYSB5ZWFyIC8gYSB5ZWFyIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ3JvaycgOiAncm9rZW0nO1xuICAgICAgICAgICAgY2FzZSAneXknOiAvLyA5IHllYXJzIC8gaW4gOSB5ZWFycyAvIDkgeWVhcnMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdyb2t5JyA6ICdsZXQnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ2xldHknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBjcyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2NzJywge1xuICAgICAgICBtb250aHM6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IG1vbnRoc1Nob3J0LFxuICAgICAgICBtb250aHNSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICAvLyBOT1RFOiAnxI1lcnZlbicgaXMgc3Vic3RyaW5nIG9mICfEjWVydmVuZWMnOyB0aGVyZWZvcmUgJ8SNZXJ2ZW5lYycgbXVzdCBwcmVjZWRlICfEjWVydmVuJyBpbiB0aGUgcmVnZXggdG8gYmUgZnVsbHkgbWF0Y2hlZC5cbiAgICAgICAgLy8gT3RoZXJ3aXNlIHBhcnNlciBtYXRjaGVzICcxLiDEjWVydmVuZWMnIGFzICcxLiDEjWVydmVuJyArICdlYycuXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4OlxuICAgICAgICAgICAgL14obGVkZW58bGVkbmF8w7pub3JhfMO6bm9yfGLFmWV6ZW58YsWZZXpuYXxkdWJlbnxkdWJuYXxrdsSbdGVufGt2xJt0bmF8xI1lcnZlbmVjfMSNZXJ2ZW5jZXzEjWVydmVufMSNZXJ2bmF8c3JwZW58c3JwbmF8esOhxZnDrXzFmcOtamVufMWZw61qbmF8bGlzdG9wYWR1fGxpc3RvcGFkfHByb3NpbmVjfHByb3NpbmNlKS9pLFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OlxuICAgICAgICAgICAgL14obGVkfMO6bm98YsWZZXxkdWJ8a3bEm3zEjXZufMSNdmN8c3JwfHrDocWZfMWZw61qfGxpc3xwcm8pL2ksXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHdlZWtkYXlzOiAnbmVkxJtsZV9wb25kxJtsw61fw7p0ZXLDvV9zdMWZZWRhX8SNdHZydGVrX3DDoXRla19zb2JvdGEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICduZV9wb1/DunRfc3RfxI10X3DDoV9zbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICduZV9wb1/DunRfc3RfxI10X3DDoV9zbycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIGw6ICdELiBNLiBZWVlZJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbZG5lcyB2XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW3rDrXRyYSB2XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2IG5lZMSbbGkgdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZdIGRkZGQgW3ZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdmUgc3TFmWVkdSB2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZlIMSNdHZydGVrIHZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBww6F0ZWsgdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2IHNvYm90dSB2XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbdsSNZXJhIHZdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsb3UgbmVkxJtsaSB2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWzDqV0gZGRkZCBbdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bG91IHN0xZllZHUgdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsw71dIGRkZGQgW3ZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWxvdSBzb2JvdHUgdl0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdwxZllZCAlcycsXG4gICAgICAgICAgICBzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBzczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkZDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTU06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gY3M7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQ2h1dmFzaCBbY3ZdXG4vLyEgYXV0aG9yIDogQW5hdG9seSBNaXJvbm92IDogaHR0cHM6Ly9naXRodWIuY29tL21pcm9udG9saVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGN2ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnY3YnLCB7XG4gICAgICAgIG1vbnRoczogJ9C605HRgNC70LDRh1/QvdCw0YDTkdGBX9C/0YPRiF/QsNC60LBf0LzQsNC5X9Kr05fRgNGC0LzQtV/Rg9GC05Ff0qvRg9GA0LvQsF/QsNCy05HQvV/RjtC/0LBf0YfTs9C6X9GA0LDRiNGC0LDQsicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfQutOR0YBf0L3QsNGAX9C/0YPRiF/QsNC60LBf0LzQsNC5X9Kr05fRgF/Rg9GC05Ff0qvRg9GAX9Cw0LLQvV/RjtC/0LBf0YfTs9C6X9GA0LDRiCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAn0LLRi9GA0YHQsNGA0L3QuNC60YPQvV/RgtGD0L3RgtC40LrRg9C9X9GL0YLQu9Cw0YDQuNC60YPQvV/RjtC90LrRg9C9X9C605fSq9C90LXRgNC90LjQutGD0L1f0Y3RgNC90LXQutGD0L1f0YjTkdC80LDRgtC60YPQvScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn0LLRi9GAX9GC0YPQvV/Ri9GC0Ltf0Y7QvV/QutOX0qtf0Y3RgNC9X9GI05HQvCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfQstGAX9GC0L1f0YvRgl/RjtC9X9C60qtf0Y3RgF/RiNC8Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQtTU0tWVlZWScsXG4gICAgICAgICAgICBMTDogJ1lZWVkgW9Kr0YPQu9GF0LhdIE1NTU0gW9GD0LnTkdGF05fQvV0gRFst0LzTl9GI05ddJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVkgW9Kr0YPQu9GF0LhdIE1NTU0gW9GD0LnTkdGF05fQvV0gRFst0LzTl9GI05ddLCBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgWVlZWSBb0qvRg9C70YXQuF0gTU1NTSBb0YPQudOR0YXTl9C9XSBEWy3QvNOX0YjTl10sIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb0J/QsNGP0L1dIExUIFvRgdC10YXQtdGC0YDQtV0nLFxuICAgICAgICAgICAgbmV4dERheTogJ1vQq9GA0LDQvV0gTFQgW9GB0LXRhdC10YLRgNC1XScsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9OW0L3QtdGAXSBMVCBb0YHQtdGF0LXRgtGA0LVdJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW9Kq0LjRgtC10YFdIGRkZGQgTFQgW9GB0LXRhdC10YLRgNC1XScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vQmNGA0YLQvdOXXSBkZGRkIExUIFvRgdC10YXQtdGC0YDQtV0nLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6IGZ1bmN0aW9uIChvdXRwdXQpIHtcbiAgICAgICAgICAgICAgICB2YXIgYWZmaXggPSAv0YHQtdGF0LXRgiQvaS5leGVjKG91dHB1dClcbiAgICAgICAgICAgICAgICAgICAgPyAn0YDQtdC9J1xuICAgICAgICAgICAgICAgICAgICA6IC/Sq9GD0LskL2kuZXhlYyhvdXRwdXQpXG4gICAgICAgICAgICAgICAgICAgID8gJ9GC0LDQvSdcbiAgICAgICAgICAgICAgICAgICAgOiAn0YDQsNC9JztcbiAgICAgICAgICAgICAgICByZXR1cm4gb3V0cHV0ICsgYWZmaXg7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFzdDogJyVzINC60LDRj9C70LvQsCcsXG4gICAgICAgICAgICBzOiAn0L/Tl9GALdC40Log0qvQtdC60LrRg9C90YInLFxuICAgICAgICAgICAgc3M6ICclZCDSq9C10LrQutGD0L3RgicsXG4gICAgICAgICAgICBtOiAn0L/Tl9GAINC80LjQvdGD0YInLFxuICAgICAgICAgICAgbW06ICclZCDQvNC40L3Rg9GCJyxcbiAgICAgICAgICAgIGg6ICfQv9OX0YAg0YHQtdGF0LXRgicsXG4gICAgICAgICAgICBoaDogJyVkINGB0LXRhdC10YInLFxuICAgICAgICAgICAgZDogJ9C/05fRgCDQutGD0L0nLFxuICAgICAgICAgICAgZGQ6ICclZCDQutGD0L0nLFxuICAgICAgICAgICAgTTogJ9C/05fRgCDRg9C505HRhScsXG4gICAgICAgICAgICBNTTogJyVkINGD0LnTkdGFJyxcbiAgICAgICAgICAgIHk6ICfQv9OX0YAg0qvRg9C7JyxcbiAgICAgICAgICAgIHl5OiAnJWQg0qvRg9C7JyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LdC805fRiC8sXG4gICAgICAgIG9yZGluYWw6ICclZC3QvNOX0YgnLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gY3Y7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogV2Vsc2ggW2N5XVxuLy8hIGF1dGhvciA6IFJvYmVydCBBbGxlbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9yb2JnYWxsZW5cbi8vISBhdXRob3IgOiBodHRwczovL2dpdGh1Yi5jb20vcnlhbmdyZWF2ZXNcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBjeSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2N5Jywge1xuICAgICAgICBtb250aHM6ICdJb25hd3JfQ2h3ZWZyb3JfTWF3cnRoX0VicmlsbF9NYWlfTWVoZWZpbl9Hb3JmZmVubmFmX0F3c3RfTWVkaV9IeWRyZWZfVGFjaHdlZGRfUmhhZ2Z5cicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdJb25fQ2h3ZV9NYXdfRWJyX01haV9NZWhfR29yX0F3c19NZWRfSHlkX1RhY2hfUmhhZycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnRHlkZCBTdWxfRHlkZCBMbHVuX0R5ZGQgTWF3cnRoX0R5ZGQgTWVyY2hlcl9EeWRkIElhdV9EeWRkIEd3ZW5lcl9EeWRkIFNhZHdybicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU3VsX0xsdW5fTWF3X01lcl9JYXVfR3dlX1NhZCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTdV9MbF9NYV9NZV9JYV9Hd19TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICAvLyB0aW1lIGZvcm1hdHMgYXJlIHRoZSBzYW1lIGFzIGVuLWdiXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSGVkZGl3IGFtXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1lmb3J5IGFtXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2FtXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0Rkb2UgYW1dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbZGl3ZXRoYWYgYW1dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnbWV3biAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgeW4gw7RsJyxcbiAgICAgICAgICAgIHM6ICd5Y2h5ZGlnIGVpbGlhZGF1JyxcbiAgICAgICAgICAgIHNzOiAnJWQgZWlsaWFkJyxcbiAgICAgICAgICAgIG06ICdtdW51ZCcsXG4gICAgICAgICAgICBtbTogJyVkIG11bnVkJyxcbiAgICAgICAgICAgIGg6ICdhd3InLFxuICAgICAgICAgICAgaGg6ICclZCBhd3InLFxuICAgICAgICAgICAgZDogJ2Rpd3Jub2QnLFxuICAgICAgICAgICAgZGQ6ICclZCBkaXdybm9kJyxcbiAgICAgICAgICAgIE06ICdtaXMnLFxuICAgICAgICAgICAgTU06ICclZCBtaXMnLFxuICAgICAgICAgICAgeTogJ2Jsd3lkZHluJyxcbiAgICAgICAgICAgIHl5OiAnJWQgZmx5bmVkZCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShmZWR8YWlufGFmfGlsfHlkZHxlZHxlZykvLFxuICAgICAgICAvLyB0cmFkaXRpb25hbCBvcmRpbmFsIG51bWJlcnMgYWJvdmUgMzEgYXJlIG5vdCBjb21tb25seSB1c2VkIGluIGNvbGxvcXVpYWwgV2Vsc2hcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gJycsXG4gICAgICAgICAgICAgICAgbG9va3VwID0gW1xuICAgICAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAgICAgJ2FmJyxcbiAgICAgICAgICAgICAgICAgICAgJ2lsJyxcbiAgICAgICAgICAgICAgICAgICAgJ3lkZCcsXG4gICAgICAgICAgICAgICAgICAgICd5ZGQnLFxuICAgICAgICAgICAgICAgICAgICAnZWQnLFxuICAgICAgICAgICAgICAgICAgICAnZWQnLFxuICAgICAgICAgICAgICAgICAgICAnZWQnLFxuICAgICAgICAgICAgICAgICAgICAnZmVkJyxcbiAgICAgICAgICAgICAgICAgICAgJ2ZlZCcsXG4gICAgICAgICAgICAgICAgICAgICdmZWQnLCAvLyAxYWYgdG8gMTBmZWRcbiAgICAgICAgICAgICAgICAgICAgJ2VnJyxcbiAgICAgICAgICAgICAgICAgICAgJ2ZlZCcsXG4gICAgICAgICAgICAgICAgICAgICdlZycsXG4gICAgICAgICAgICAgICAgICAgICdlZycsXG4gICAgICAgICAgICAgICAgICAgICdmZWQnLFxuICAgICAgICAgICAgICAgICAgICAnZWcnLFxuICAgICAgICAgICAgICAgICAgICAnZWcnLFxuICAgICAgICAgICAgICAgICAgICAnZmVkJyxcbiAgICAgICAgICAgICAgICAgICAgJ2VnJyxcbiAgICAgICAgICAgICAgICAgICAgJ2ZlZCcsIC8vIDExZWcgdG8gMjBmZWRcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgaWYgKGIgPiAyMCkge1xuICAgICAgICAgICAgICAgIGlmIChiID09PSA0MCB8fCBiID09PSA1MCB8fCBiID09PSA2MCB8fCBiID09PSA4MCB8fCBiID09PSAxMDApIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ2ZlZCc7IC8vIG5vdCAzMGFpbiwgNzBhaW4gb3IgOTBhaW5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnYWluJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGIgPiAwKSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gbG9va3VwW2JdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGN5O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IERhbmlzaCBbZGFdXG4vLyEgYXV0aG9yIDogVWxyaWsgTmllbHNlbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9tcmJhc2VcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBkYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2RhJywge1xuICAgICAgICBtb250aHM6ICdqYW51YXJfZmVicnVhcl9tYXJ0c19hcHJpbF9tYWpfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW5fZmViX21hcl9hcHJfbWFqX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdzw7huZGFnX21hbmRhZ190aXJzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sw7hyZGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnc8O4bl9tYW5fdGlyX29uc190b3JfZnJlX2zDuHInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnc8O4X21hX3RpX29uX3RvX2ZyX2zDuCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIFtkLl0gRC4gTU1NTSBZWVlZIFtrbC5dIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaSBkYWcga2wuXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2kgbW9yZ2VuIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdww6UgZGRkZCBba2wuXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2kgZ8OlciBrbC5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2ldIGRkZGRbcyBrbC5dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnb20gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHNpZGVuJyxcbiAgICAgICAgICAgIHM6ICdmw6Ugc2VrdW5kZXInLFxuICAgICAgICAgICAgc3M6ICclZCBzZWt1bmRlcicsXG4gICAgICAgICAgICBtOiAnZXQgbWludXQnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dHRlcicsXG4gICAgICAgICAgICBoOiAnZW4gdGltZScsXG4gICAgICAgICAgICBoaDogJyVkIHRpbWVyJyxcbiAgICAgICAgICAgIGQ6ICdlbiBkYWcnLFxuICAgICAgICAgICAgZGQ6ICclZCBkYWdlJyxcbiAgICAgICAgICAgIE06ICdlbiBtw6VuZWQnLFxuICAgICAgICAgICAgTU06ICclZCBtw6VuZWRlcicsXG4gICAgICAgICAgICB5OiAnZXQgw6VyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgw6VyJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBkYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBHZXJtYW4gKEF1c3RyaWEpIFtkZS1hdF1cbi8vISBhdXRob3IgOiBsbHVjaHMgOiBodHRwczovL2dpdGh1Yi5jb20vbGx1Y2hzXG4vLyEgYXV0aG9yOiBNZW5lbGlvbiBFbGVuc8O6bGU6IGh0dHBzOi8vZ2l0aHViLmNvbS9PaXJlXG4vLyEgYXV0aG9yIDogTWFydGluIEdyb2xsZXIgOiBodHRwczovL2dpdGh1Yi5jb20vTWFkTUdcbi8vISBhdXRob3IgOiBNaWtvbGFqIERhZGVsYSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWswMWFqXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgbTogWydlaW5lIE1pbnV0ZScsICdlaW5lciBNaW51dGUnXSxcbiAgICAgICAgICAgIGg6IFsnZWluZSBTdHVuZGUnLCAnZWluZXIgU3R1bmRlJ10sXG4gICAgICAgICAgICBkOiBbJ2VpbiBUYWcnLCAnZWluZW0gVGFnJ10sXG4gICAgICAgICAgICBkZDogW251bWJlciArICcgVGFnZScsIG51bWJlciArICcgVGFnZW4nXSxcbiAgICAgICAgICAgIHc6IFsnZWluZSBXb2NoZScsICdlaW5lciBXb2NoZSddLFxuICAgICAgICAgICAgTTogWydlaW4gTW9uYXQnLCAnZWluZW0gTW9uYXQnXSxcbiAgICAgICAgICAgIE1NOiBbbnVtYmVyICsgJyBNb25hdGUnLCBudW1iZXIgKyAnIE1vbmF0ZW4nXSxcbiAgICAgICAgICAgIHk6IFsnZWluIEphaHInLCAnZWluZW0gSmFociddLFxuICAgICAgICAgICAgeXk6IFtudW1iZXIgKyAnIEphaHJlJywgbnVtYmVyICsgJyBKYWhyZW4nXSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyBmb3JtYXRba2V5XVswXSA6IGZvcm1hdFtrZXldWzFdO1xuICAgIH1cblxuICAgIHZhciBkZUF0ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZGUtYXQnLCB7XG4gICAgICAgIG1vbnRoczogJ0rDpG5uZXJfRmVicnVhcl9Nw6Ryel9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnSsOkbi5fRmViLl9Nw6Ryel9BcHIuX01haV9KdW5pX0p1bGlfQXVnLl9TZXAuX09rdC5fTm92Ll9EZXouJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdTb25udGFnX01vbnRhZ19EaWVuc3RhZ19NaXR0d29jaF9Eb25uZXJzdGFnX0ZyZWl0YWdfU2Ftc3RhZycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU28uX01vLl9EaS5fTWkuX0RvLl9Gci5fU2EuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1NvX01vX0RpX01pX0RvX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaGV1dGUgdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW21vcmdlbiB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFt1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1tnZXN0ZXJuIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tsZXR6dGVuXSBkZGRkIFt1bV0gTFQgW1Vocl0nLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICd2b3IgJXMnLFxuICAgICAgICAgICAgczogJ2VpbiBwYWFyIFNla3VuZGVuJyxcbiAgICAgICAgICAgIHNzOiAnJWQgU2VrdW5kZW4nLFxuICAgICAgICAgICAgbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tOiAnJWQgTWludXRlbicsXG4gICAgICAgICAgICBoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGg6ICclZCBTdHVuZGVuJyxcbiAgICAgICAgICAgIGQ6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHc6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB3dzogJyVkIFdvY2hlbicsXG4gICAgICAgICAgICBNOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTU06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeXk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVBdDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBHZXJtYW4gKFN3aXR6ZXJsYW5kKSBbZGUtY2hdXG4vLyEgYXV0aG9yIDogc3NjaHVlbGxlciA6IGh0dHBzOi8vZ2l0aHViLmNvbS9zc2NodWVsbGVyXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgbTogWydlaW5lIE1pbnV0ZScsICdlaW5lciBNaW51dGUnXSxcbiAgICAgICAgICAgIGg6IFsnZWluZSBTdHVuZGUnLCAnZWluZXIgU3R1bmRlJ10sXG4gICAgICAgICAgICBkOiBbJ2VpbiBUYWcnLCAnZWluZW0gVGFnJ10sXG4gICAgICAgICAgICBkZDogW251bWJlciArICcgVGFnZScsIG51bWJlciArICcgVGFnZW4nXSxcbiAgICAgICAgICAgIHc6IFsnZWluZSBXb2NoZScsICdlaW5lciBXb2NoZSddLFxuICAgICAgICAgICAgTTogWydlaW4gTW9uYXQnLCAnZWluZW0gTW9uYXQnXSxcbiAgICAgICAgICAgIE1NOiBbbnVtYmVyICsgJyBNb25hdGUnLCBudW1iZXIgKyAnIE1vbmF0ZW4nXSxcbiAgICAgICAgICAgIHk6IFsnZWluIEphaHInLCAnZWluZW0gSmFociddLFxuICAgICAgICAgICAgeXk6IFtudW1iZXIgKyAnIEphaHJlJywgbnVtYmVyICsgJyBKYWhyZW4nXSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyBmb3JtYXRba2V5XVswXSA6IGZvcm1hdFtrZXldWzFdO1xuICAgIH1cblxuICAgIHZhciBkZUNoID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZGUtY2gnLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcl9GZWJydWFyX03DpHJ6X0FwcmlsX01haV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdKYW4uX0ZlYi5fTcOkcnpfQXByLl9NYWlfSnVuaV9KdWxpX0F1Zy5fU2VwLl9Pa3QuX05vdi5fRGV6Licuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnU29ubnRhZ19Nb250YWdfRGllbnN0YWdfTWl0dHdvY2hfRG9ubmVyc3RhZ19GcmVpdGFnX1NhbXN0YWcnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1NvX01vX0RpX01pX0RvX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1NvX01vX0RpX01pX0RvX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaGV1dGUgdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW21vcmdlbiB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFt1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1tnZXN0ZXJuIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tsZXR6dGVuXSBkZGRkIFt1bV0gTFQgW1Vocl0nLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICd2b3IgJXMnLFxuICAgICAgICAgICAgczogJ2VpbiBwYWFyIFNla3VuZGVuJyxcbiAgICAgICAgICAgIHNzOiAnJWQgU2VrdW5kZW4nLFxuICAgICAgICAgICAgbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tOiAnJWQgTWludXRlbicsXG4gICAgICAgICAgICBoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGg6ICclZCBTdHVuZGVuJyxcbiAgICAgICAgICAgIGQ6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHc6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB3dzogJyVkIFdvY2hlbicsXG4gICAgICAgICAgICBNOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTU06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeXk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVDaDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBHZXJtYW4gW2RlXVxuLy8hIGF1dGhvciA6IGxsdWNocyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9sbHVjaHNcbi8vISBhdXRob3I6IE1lbmVsaW9uIEVsZW5zw7psZTogaHR0cHM6Ly9naXRodWIuY29tL09pcmVcbi8vISBhdXRob3IgOiBNaWtvbGFqIERhZGVsYSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWswMWFqXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgbTogWydlaW5lIE1pbnV0ZScsICdlaW5lciBNaW51dGUnXSxcbiAgICAgICAgICAgIGg6IFsnZWluZSBTdHVuZGUnLCAnZWluZXIgU3R1bmRlJ10sXG4gICAgICAgICAgICBkOiBbJ2VpbiBUYWcnLCAnZWluZW0gVGFnJ10sXG4gICAgICAgICAgICBkZDogW251bWJlciArICcgVGFnZScsIG51bWJlciArICcgVGFnZW4nXSxcbiAgICAgICAgICAgIHc6IFsnZWluZSBXb2NoZScsICdlaW5lciBXb2NoZSddLFxuICAgICAgICAgICAgTTogWydlaW4gTW9uYXQnLCAnZWluZW0gTW9uYXQnXSxcbiAgICAgICAgICAgIE1NOiBbbnVtYmVyICsgJyBNb25hdGUnLCBudW1iZXIgKyAnIE1vbmF0ZW4nXSxcbiAgICAgICAgICAgIHk6IFsnZWluIEphaHInLCAnZWluZW0gSmFociddLFxuICAgICAgICAgICAgeXk6IFtudW1iZXIgKyAnIEphaHJlJywgbnVtYmVyICsgJyBKYWhyZW4nXSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyBmb3JtYXRba2V5XVswXSA6IGZvcm1hdFtrZXldWzFdO1xuICAgIH1cblxuICAgIHZhciBkZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2RlJywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJfRmVicnVhcl9Nw6Ryel9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnSmFuLl9GZWIuX03DpHJ6X0Fwci5fTWFpX0p1bmlfSnVsaV9BdWcuX1NlcC5fT2t0Ll9Ob3YuX0Rlei4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ1Nvbm50YWdfTW9udGFnX0RpZW5zdGFnX01pdHR3b2NoX0Rvbm5lcnN0YWdfRnJlaXRhZ19TYW1zdGFnJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTby5fTW8uX0RpLl9NaS5fRG8uX0ZyLl9TYS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU29fTW9fRGlfTWlfRG9fRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBELiBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1toZXV0ZSB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbbW9yZ2VuIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3VtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2dlc3Rlcm4gdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2xldHp0ZW5dIGRkZGQgW3VtXSBMVCBbVWhyXScsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJ3ZvciAlcycsXG4gICAgICAgICAgICBzOiAnZWluIHBhYXIgU2VrdW5kZW4nLFxuICAgICAgICAgICAgc3M6ICclZCBTZWt1bmRlbicsXG4gICAgICAgICAgICBtOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbW06ICclZCBNaW51dGVuJyxcbiAgICAgICAgICAgIGg6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoaDogJyVkIFN0dW5kZW4nLFxuICAgICAgICAgICAgZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgdzogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHd3OiAnJWQgV29jaGVuJyxcbiAgICAgICAgICAgIE06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5eTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBkZTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBNYWxkaXZpYW4gW2R2XVxuLy8hIGF1dGhvciA6IEphd2lzaCBIYW1lZWQgOiBodHRwczovL2dpdGh1Yi5jb20vamF3aXNoXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzID0gW1xuICAgICAgICAgICAgJ96W3qzegt6q3ofept6D3qknLFxuICAgICAgICAgICAgJ96K3qzehN6w3oPeqt6H3qbeg96pJyxcbiAgICAgICAgICAgICfeid6n3oPeqN6X3qonLFxuICAgICAgICAgICAgJ96H3q3eld6w3oPeqd6N3qonLFxuICAgICAgICAgICAgJ96J3q0nLFxuICAgICAgICAgICAgJ96W3qvegt6wJyxcbiAgICAgICAgICAgICfelt6q3o3ept6H3qgnLFxuICAgICAgICAgICAgJ96H3q/ejt6m3pDesN6T3qonLFxuICAgICAgICAgICAgJ96Q3qzeld6w3pPerN6J3rDehN6m3oPeqicsXG4gICAgICAgICAgICAn3ofert6G3rDek96v3oTept6D3qonLFxuICAgICAgICAgICAgJ96C3q7eiN6s3onesN6E3qbeg96qJyxcbiAgICAgICAgICAgICfekd6o3pDerN6J3rDehN6m3oPeqicsXG4gICAgICAgIF0sXG4gICAgICAgIHdlZWtkYXlzID0gW1xuICAgICAgICAgICAgJ96H3qfei96o3ofesN6M3qYnLFxuICAgICAgICAgICAgJ96A3q/eid6mJyxcbiAgICAgICAgICAgICfeh96m3oLesN6O3qfeg96mJyxcbiAgICAgICAgICAgICfehN6q3ovepicsXG4gICAgICAgICAgICAn3oTeqt6D3qfekN6w3orept6M3qgnLFxuICAgICAgICAgICAgJ96A3qreht6q3oPeqicsXG4gICAgICAgICAgICAn3oDert6C3qjegN6o3oPeqicsXG4gICAgICAgIF07XG5cbiAgICB2YXIgZHYgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdkdicsIHtcbiAgICAgICAgbW9udGhzOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0OiBtb250aHMsXG4gICAgICAgIHdlZWtkYXlzOiB3ZWVrZGF5cyxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogd2Vla2RheXMsXG4gICAgICAgIHdlZWtkYXlzTWluOiAn3ofep96L3qhf3oDer96J3qZf3ofept6C3rBf3oTeqt6L3qZf3oTeqt6D3qdf3oDeqt6G3qpf3oDert6C3qgnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdEL00vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL96J3oZ83oneii8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICfeid6KJyA9PT0gaW5wdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfeid6GJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfeid6KJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb3oneqN6H3qbei96qXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW96J3qfei96m3onep10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb3ofeqN6H3rDelN6sXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1veit6n3ofeqN6M3qreiN6oXSBkZGRkIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn3ozerN6D3q3ejt6m3ofeqCAlcycsXG4gICAgICAgICAgICBwYXN0OiAn3obeqt6D3qjegt6wICVzJyxcbiAgICAgICAgICAgIHM6ICfekN6o3obeqt6C3rDejN6q3obert6F3qzeh96wJyxcbiAgICAgICAgICAgIHNzOiAnZCUg3pDeqN6G3qregt6w3ozeqicsXG4gICAgICAgICAgICBtOiAn3oneqN6C3qjek96s3ofesCcsXG4gICAgICAgICAgICBtbTogJ96J3qjegt6o3pPeqiAlZCcsXG4gICAgICAgICAgICBoOiAn3o7ept6R3qjeh96o3oPerN6H3rAnLFxuICAgICAgICAgICAgaGg6ICfejt6m3pHeqN6H3qjeg96qICVkJyxcbiAgICAgICAgICAgIGQ6ICfei96q3ojept6A3qzeh96wJyxcbiAgICAgICAgICAgIGRkOiAn3oveqt6I3qbekN6wICVkJyxcbiAgICAgICAgICAgIE06ICfeid6m3oDerN6H3rAnLFxuICAgICAgICAgICAgTU06ICfeid6m3pDesCAlZCcsXG4gICAgICAgICAgICB5OiAn3ofept6A3qbeg96s3ofesCcsXG4gICAgICAgICAgICB5eTogJ96H3qbegN6m3oPeqiAlZCcsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiA3LCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogMTIsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZHY7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogR3JlZWsgW2VsXVxuLy8hIGF1dGhvciA6IEFnZ2Vsb3MgS2FyYWxpYXMgOiBodHRwczovL2dpdGh1Yi5jb20vbWVoaWVsXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiBpc0Z1bmN0aW9uKGlucHV0KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAodHlwZW9mIEZ1bmN0aW9uICE9PSAndW5kZWZpbmVkJyAmJiBpbnB1dCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB8fFxuICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHZhciBlbCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VsJywge1xuICAgICAgICBtb250aHNOb21pbmF0aXZlRWw6XG4gICAgICAgICAgICAnzpnOsc69zr/Phc6sz4HOuc6/z4JfzqbOtc6yz4HOv8+FzqzPgc65zr/Pgl/OnM6sz4HPhM65zr/Pgl/Okc+Az4HOr867zrnOv8+CX86czqzOuc6/z4JfzpnOv8+Nzr3Ouc6/z4JfzpnOv8+NzrvOuc6/z4JfzpHPjc6zzr/Phc+Dz4TOv8+CX86jzrXPgM+Ezq3OvM6yz4HOuc6/z4Jfzp/Ous+Ez47Oss+BzrnOv8+CX86dzr/Orc68zrLPgc65zr/Pgl/OlM61zrrOrc68zrLPgc65zr/Pgicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNHZW5pdGl2ZUVsOlxuICAgICAgICAgICAgJ86ZzrHOvc6/z4XOsc+Bzq/Ov8+FX86mzrXOss+Bzr/Phc6xz4HOr86/z4VfzpzOsc+Bz4TOr86/z4VfzpHPgM+BzrnOu86vzr/PhV/OnM6xzpDOv8+FX86Zzr/Phc69zq/Ov8+FX86Zzr/Phc67zq/Ov8+FX86Rz4XOs86/z43Pg8+Ezr/PhV/Oo861z4DPhM61zrzOss+Bzq/Ov8+FX86fzrrPhM+JzrLPgc6vzr/PhV/Onc6/zrXOvM6yz4HOr86/z4VfzpTOtc66zrXOvM6yz4HOr86/z4UnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzOiBmdW5jdGlvbiAobW9tZW50VG9Gb3JtYXQsIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtb21lbnRUb0Zvcm1hdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNOb21pbmF0aXZlRWw7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIHR5cGVvZiBmb3JtYXQgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgICAgL0QvLnRlc3QoZm9ybWF0LnN1YnN0cmluZygwLCBmb3JtYXQuaW5kZXhPZignTU1NTScpKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIGEgZGF5IG51bWJlciBiZWZvcmUgJ01NTU0nXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc0dlbml0aXZlRWxbbW9tZW50VG9Gb3JtYXQubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNOb21pbmF0aXZlRWxbbW9tZW50VG9Gb3JtYXQubW9udGgoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnzpnOsc69X86mzrXOsl/OnM6xz4FfzpHPgM+BX86czrHPil/Omc6/z4XOvV/Omc6/z4XOu1/Okc+FzrNfzqPOtc+AX86fzrrPhF/Onc6/zrVfzpTOtc66Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ86az4XPgc65zrHOus6uX86UzrXPhc+Ezq3Pgc6xX86kz4HOr8+EzrdfzqTOtc+EzqzPgc+EzrdfzqDOrc68z4DPhM63X86gzrHPgc6xz4POus61z4XOrl/Oo86szrLOss6xz4TOvycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ86az4XPgV/OlM61z4VfzqTPgc65X86kzrXPhF/OoM61zrxfzqDOsc+BX86jzrHOsicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfOms+FX86UzrVfzqTPgV/OpM61X86gzrVfzqDOsV/Oo86xJy5zcGxpdCgnXycpLFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPiAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ868zrwnIDogJ86czpwnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICfPgM68JyA6ICfOoM6cJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gKGlucHV0ICsgJycpLnRvTG93ZXJDYXNlKClbMF0gPT09ICfOvCc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9bzqDOnF1cXC4/zpw/XFwuPy9pLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhckVsOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW86jzq7OvM61z4HOsSB7fV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vOkc+Nz4HOuc6/IHt9XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3t9XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW86nzrjOtc+CIHt9XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vPhM6/IM+Az4HOv863zrPOv8+NzrzOtc69zr9dIGRkZGQgW3t9XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vPhM63zr0gz4DPgc6/zrfOs86/z43OvM61zr3Ot10gZGRkZCBbe31dIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IGZ1bmN0aW9uIChrZXksIG1vbSkge1xuICAgICAgICAgICAgdmFyIG91dHB1dCA9IHRoaXMuX2NhbGVuZGFyRWxba2V5XSxcbiAgICAgICAgICAgICAgICBob3VycyA9IG1vbSAmJiBtb20uaG91cnMoKTtcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKG91dHB1dCkpIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQuYXBwbHkobW9tKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvdXRwdXQucmVwbGFjZSgne30nLCBob3VycyAlIDEyID09PSAxID8gJ8+Dz4TOtycgOiAnz4PPhM65z4InKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfPg861ICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDPgM+BzrnOvScsXG4gICAgICAgICAgICBzOiAnzrvOr86zzrEgzrTOtc+Fz4TOtc+Bz4zOu861z4DPhM6xJyxcbiAgICAgICAgICAgIHNzOiAnJWQgzrTOtc+Fz4TOtc+Bz4zOu861z4DPhM6xJyxcbiAgICAgICAgICAgIG06ICfOrc69zrEgzrvOtc+Az4TPjCcsXG4gICAgICAgICAgICBtbTogJyVkIM67zrXPgM+EzqwnLFxuICAgICAgICAgICAgaDogJ868zq/OsSDPjs+BzrEnLFxuICAgICAgICAgICAgaGg6ICclZCDPjs+BzrXPgicsXG4gICAgICAgICAgICBkOiAnzrzOr86xIM68zq3Pgc6xJyxcbiAgICAgICAgICAgIGRkOiAnJWQgzrzOrc+BzrXPgicsXG4gICAgICAgICAgICBNOiAnzq3Ovc6xz4IgzrzOrs69zrHPgicsXG4gICAgICAgICAgICBNTTogJyVkIM68zq7Ovc61z4InLFxuICAgICAgICAgICAgeTogJ86tzr3Osc+CIM+Hz4HPjM69zr/PgicsXG4gICAgICAgICAgICB5eTogJyVkIM+Hz4HPjM69zrnOsScsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfc63LyxcbiAgICAgICAgb3JkaW5hbDogJyVkzrcnLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0c3QgaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZWw7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRW5nbGlzaCAoQXVzdHJhbGlhKSBbZW4tYXVdXG4vLyEgYXV0aG9yIDogSmFyZWQgTW9yc2UgOiBodHRwczovL2dpdGh1Yi5jb20vamFyY29hbFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGVuQXUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbi1hdScsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUzogJ2g6bW06c3MgQScsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgYWdvJyxcbiAgICAgICAgICAgIHM6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vjb25kcycsXG4gICAgICAgICAgICBtOiAnYSBtaW51dGUnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGg6ICdhbiBob3VyJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG91cnMnLFxuICAgICAgICAgICAgZDogJ2EgZGF5JyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGF5cycsXG4gICAgICAgICAgICBNOiAnYSBtb250aCcsXG4gICAgICAgICAgICBNTTogJyVkIG1vbnRocycsXG4gICAgICAgICAgICB5OiAnYSB5ZWFyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgeWVhcnMnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPVxuICAgICAgICAgICAgICAgICAgICB+figobnVtYmVyICUgMTAwKSAvIDEwKSA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAndGgnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3N0J1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAyXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICduZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gM1xuICAgICAgICAgICAgICAgICAgICAgICAgPyAncmQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW5BdTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBFbmdsaXNoIChDYW5hZGEpIFtlbi1jYV1cbi8vISBhdXRob3IgOiBKb25hdGhhbiBBYm91cmJpaCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qb25iY2FcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBlbkNhID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZW4tY2EnLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ2g6bW0gQScsXG4gICAgICAgICAgICBMVFM6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgTEw6ICdNTU1NIEQsIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnTU1NTSBELCBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgTU1NTSBELCBZWVlZIGg6bW0gQScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGFnbycsXG4gICAgICAgICAgICBzOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZHMnLFxuICAgICAgICAgICAgbTogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQ6ICdhIGRheScsXG4gICAgICAgICAgICBkZDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTTogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU06ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeTogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eTogJyVkIHllYXJzJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgICAgfn4oKG51bWJlciAlIDEwMCkgLyAxMCkgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBlbkNhO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEVuZ2xpc2ggKFVuaXRlZCBLaW5nZG9tKSBbZW4tZ2JdXG4vLyEgYXV0aG9yIDogQ2hyaXMgR2VkcmltIDogaHR0cHM6Ly9naXRodWIuY29tL2NocmlzZ2VkcmltXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZW5HYiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLWdiJywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGFnbycsXG4gICAgICAgICAgICBzOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZHMnLFxuICAgICAgICAgICAgbTogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQ6ICdhIGRheScsXG4gICAgICAgICAgICBkZDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTTogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU06ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeTogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eTogJyVkIHllYXJzJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgICAgfn4oKG51bWJlciAlIDEwMCkgLyAxMCkgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVuR2I7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRW5nbGlzaCAoSXJlbGFuZCkgW2VuLWllXVxuLy8hIGF1dGhvciA6IENocmlzIENhcnRsaWRnZSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc2NhcnRsaWRnZVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGVuSWUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbi1pZScsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGFnbycsXG4gICAgICAgICAgICBzOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZHMnLFxuICAgICAgICAgICAgbTogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQ6ICdhIGRheScsXG4gICAgICAgICAgICBkZDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTTogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU06ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeTogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eTogJyVkIHllYXJzJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgICAgfn4oKG51bWJlciAlIDEwMCkgLyAxMCkgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVuSWU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRW5nbGlzaCAoSXNyYWVsKSBbZW4taWxdXG4vLyEgYXV0aG9yIDogQ2hyaXMgR2VkcmltIDogaHR0cHM6Ly9naXRodWIuY29tL2NocmlzZ2VkcmltXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZW5JbCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLWlsJywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGFnbycsXG4gICAgICAgICAgICBzOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZHMnLFxuICAgICAgICAgICAgbTogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQ6ICdhIGRheScsXG4gICAgICAgICAgICBkZDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTTogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU06ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeTogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eTogJyVkIHllYXJzJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgICAgfn4oKG51bWJlciAlIDEwMCkgLyAxMCkgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBlbklsO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEVuZ2xpc2ggKEluZGlhKSBbZW4taW5dXG4vLyEgYXV0aG9yIDogSmF0aW4gQWdyYXdhbCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qYXRpbmFnMjJcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBlbkluID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZW4taW4nLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ2g6bW0gQScsXG4gICAgICAgICAgICBMVFM6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGFnbycsXG4gICAgICAgICAgICBzOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZHMnLFxuICAgICAgICAgICAgbTogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQ6ICdhIGRheScsXG4gICAgICAgICAgICBkZDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTTogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU06ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeTogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eTogJyVkIHllYXJzJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgICAgfn4oKG51bWJlciAlIDEwMCkgLyAxMCkgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMXN0IGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVuSW47XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRW5nbGlzaCAoTmV3IFplYWxhbmQpIFtlbi1uel1cbi8vISBhdXRob3IgOiBMdWtlIE1jR3JlZ29yIDogaHR0cHM6Ly9naXRodWIuY29tL2x1a2VtY2dyZWdvclxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGVuTnogPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbi1ueicsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUzogJ2g6bW06c3MgQScsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgYWdvJyxcbiAgICAgICAgICAgIHM6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vjb25kcycsXG4gICAgICAgICAgICBtOiAnYSBtaW51dGUnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGg6ICdhbiBob3VyJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG91cnMnLFxuICAgICAgICAgICAgZDogJ2EgZGF5JyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGF5cycsXG4gICAgICAgICAgICBNOiAnYSBtb250aCcsXG4gICAgICAgICAgICBNTTogJyVkIG1vbnRocycsXG4gICAgICAgICAgICB5OiAnYSB5ZWFyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgeWVhcnMnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPVxuICAgICAgICAgICAgICAgICAgICB+figobnVtYmVyICUgMTAwKSAvIDEwKSA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAndGgnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3N0J1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAyXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICduZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gM1xuICAgICAgICAgICAgICAgICAgICAgICAgPyAncmQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW5OejtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBFbmdsaXNoIChTaW5nYXBvcmUpIFtlbi1zZ11cbi8vISBhdXRob3IgOiBNYXR0aGV3IENhc3RyaWxsb24tTWFkcmlnYWwgOiBodHRwczovL2dpdGh1Yi5jb20vdGVjaGRpbWVuc2lvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGVuU2cgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbi1zZycsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tUb2RheSBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tUb21vcnJvdyBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tZZXN0ZXJkYXkgYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW0xhc3RdIGRkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBhZ28nLFxuICAgICAgICAgICAgczogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgICAgIG06ICdhIG1pbnV0ZScsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaDogJ2FuIGhvdXInLFxuICAgICAgICAgICAgaGg6ICclZCBob3VycycsXG4gICAgICAgICAgICBkOiAnYSBkYXknLFxuICAgICAgICAgICAgZGQ6ICclZCBkYXlzJyxcbiAgICAgICAgICAgIE06ICdhIG1vbnRoJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbW9udGhzJyxcbiAgICAgICAgICAgIHk6ICdhIHllYXInLFxuICAgICAgICAgICAgeXk6ICclZCB5ZWFycycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdHxuZHxyZHx0aCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9XG4gICAgICAgICAgICAgICAgICAgIH5+KChudW1iZXIgJSAxMDApIC8gMTApID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICd0aCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnc3QnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ25kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAzXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdyZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBlblNnO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEVzcGVyYW50byBbZW9dXG4vLyEgYXV0aG9yIDogQ29saW4gRGVhbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jb2xpbmRlYW5cbi8vISBhdXRob3IgOiBNaWEgTm9yZGVudG9mdCBJbXBlcmF0b3JpIDogaHR0cHM6Ly9naXRodWIuY29tL21pZXN0YXNtaWFcbi8vISBjb21tZW50IDogbWllc3Rhc21pYSBjb3JyZWN0ZWQgdGhlIHRyYW5zbGF0aW9uIGJ5IGNvbGluZGVhblxuLy8hIGNvbW1lbnQgOiBWaXZha3ZvIGNvcnJlY3RlZCB0aGUgdHJhbnNsYXRpb24gYnkgY29saW5kZWFuIGFuZCBtaWVzdGFzbWlhXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZW8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbycsIHtcbiAgICAgICAgbW9udGhzOiAnamFudWFyb19mZWJydWFyb19tYXJ0b19hcHJpbG9fbWFqb19qdW5pb19qdWxpb19hxa1ndXN0b19zZXB0ZW1icm9fb2t0b2Jyb19ub3ZlbWJyb19kZWNlbWJybycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW5fZmViX21hcnRfYXByX21hal9qdW5fanVsX2HFrWdfc2VwdF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdkaW1hbsSJb19sdW5kb19tYXJkb19tZXJrcmVkb1/EtWHFrWRvX3ZlbmRyZWRvX3NhYmF0bycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2RpbV9sdW5fbWFyZF9tZXJrX8S1YcWtX3Zlbl9zYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnZGlfbHVfbWFfbWVfxLVhX3ZlX3NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTDogJ1tsYV0gRFstYW4gZGVdIE1NTU0sIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnW2xhXSBEWy1hbiBkZV0gTU1NTSwgWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZFtuXSwgW2xhXSBEWy1hbiBkZV0gTU1NTSwgWVlZWSBISDptbScsXG4gICAgICAgICAgICBsbGxsOiAnZGRkLCBbbGFdIERbLWFuIGRlXSBNTU0sIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvW2FwXVxcLnRcXC5tL2ksXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0LmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpID09PSAncCc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA+IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAncC50Lm0uJyA6ICdQLlQuTS4nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdhLnQubS4nIDogJ0EuVC5NLic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hvZGlhxa0gamVdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbTW9yZ2HFrSBqZV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkW24gamVdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSGllcmHFrSBqZV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbcGFzaW50YW5dIGRkZGRbbiBqZV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdwb3N0ICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdhbnRhxa0gJXMnLFxuICAgICAgICAgICAgczogJ2tlbGthaiBzZWt1bmRvaicsXG4gICAgICAgICAgICBzczogJyVkIHNla3VuZG9qJyxcbiAgICAgICAgICAgIG06ICd1bnUgbWludXRvJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRvaicsXG4gICAgICAgICAgICBoOiAndW51IGhvcm8nLFxuICAgICAgICAgICAgaGg6ICclZCBob3JvaicsXG4gICAgICAgICAgICBkOiAndW51IHRhZ28nLCAvL25lICdkaXVybm8nLCDEiWFyIGVzdGFzIHV6aXRhIHBvciBwcm9rc2ltdW1vXG4gICAgICAgICAgICBkZDogJyVkIHRhZ29qJyxcbiAgICAgICAgICAgIE06ICd1bnUgbW9uYXRvJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbW9uYXRvaicsXG4gICAgICAgICAgICB5OiAndW51IGphcm8nLFxuICAgICAgICAgICAgeXk6ICclZCBqYXJvaicsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfWEvLFxuICAgICAgICBvcmRpbmFsOiAnJWRhJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVvO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFNwYW5pc2ggKERvbWluaWNhbiBSZXB1YmxpYykgW2VzLWRvXVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRoc1Nob3J0RG90ID1cbiAgICAgICAgICAgICdlbmUuX2ZlYi5fbWFyLl9hYnIuX21heS5fanVuLl9qdWwuX2Fnby5fc2VwLl9vY3QuX25vdi5fZGljLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydCA9ICdlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpYycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXmVuZS9pLFxuICAgICAgICAgICAgL15mZWIvaSxcbiAgICAgICAgICAgIC9ebWFyL2ksXG4gICAgICAgICAgICAvXmFici9pLFxuICAgICAgICAgICAgL15tYXkvaSxcbiAgICAgICAgICAgIC9eanVuL2ksXG4gICAgICAgICAgICAvXmp1bC9pLFxuICAgICAgICAgICAgL15hZ28vaSxcbiAgICAgICAgICAgIC9ec2VwL2ksXG4gICAgICAgICAgICAvXm9jdC9pLFxuICAgICAgICAgICAgL15ub3YvaSxcbiAgICAgICAgICAgIC9eZGljL2ksXG4gICAgICAgIF0sXG4gICAgICAgIG1vbnRoc1JlZ2V4ID1cbiAgICAgICAgICAgIC9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmV8ZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2k7XG5cbiAgICB2YXIgZXNEbyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VzLWRvJywge1xuICAgICAgICBtb250aHM6ICdlbmVyb19mZWJyZXJvX21hcnpvX2FicmlsX21heW9fanVuaW9fanVsaW9fYWdvc3RvX3NlcHRpZW1icmVfb2N0dWJyZV9ub3ZpZW1icmVfZGljaWVtYnJlJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogZnVuY3Rpb24gKG0sIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0RG90O1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvLU1NTS0vLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFttLm1vbnRoKCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnREb3RbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzUmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6XG4gICAgICAgICAgICAvXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlKS9pLFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OlxuICAgICAgICAgICAgL14oZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2ksXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHdlZWtkYXlzOiAnZG9taW5nb19sdW5lc19tYXJ0ZXNfbWnDqXJjb2xlc19qdWV2ZXNfdmllcm5lc19zw6FiYWRvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZG9tLl9sdW4uX21hci5fbWnDqS5fanVlLl92aWUuX3PDoWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2RvX2x1X21hX21pX2p1X3ZpX3PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBoOm1tIEEnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2hveSBhIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dERheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW21hw7FhbmEgYSBsYScgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIFthIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2F5ZXIgYSBsYScgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgJ1tlbF0gZGRkZCBbcGFzYWRvIGEgbGEnICtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAgICddIExUJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdlbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAnaGFjZSAlcycsXG4gICAgICAgICAgICBzOiAndW5vcyBzZWd1bmRvcycsXG4gICAgICAgICAgICBzczogJyVkIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIG06ICd1biBtaW51dG8nLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dG9zJyxcbiAgICAgICAgICAgIGg6ICd1bmEgaG9yYScsXG4gICAgICAgICAgICBoaDogJyVkIGhvcmFzJyxcbiAgICAgICAgICAgIGQ6ICd1biBkw61hJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZMOtYXMnLFxuICAgICAgICAgICAgdzogJ3VuYSBzZW1hbmEnLFxuICAgICAgICAgICAgd3c6ICclZCBzZW1hbmFzJyxcbiAgICAgICAgICAgIE06ICd1biBtZXMnLFxuICAgICAgICAgICAgTU06ICclZCBtZXNlcycsXG4gICAgICAgICAgICB5OiAndW4gYcOxbycsXG4gICAgICAgICAgICB5eTogJyVkIGHDsW9zJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsOiAnJWTCuicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBlc0RvO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFNwYW5pc2ggKE1leGljbykgW2VzLW14XVxuLy8hIGF1dGhvciA6IEpDIEZyYW5jbyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qY2ZyYW5jb1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRoc1Nob3J0RG90ID1cbiAgICAgICAgICAgICdlbmUuX2ZlYi5fbWFyLl9hYnIuX21heS5fanVuLl9qdWwuX2Fnby5fc2VwLl9vY3QuX25vdi5fZGljLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydCA9ICdlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpYycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXmVuZS9pLFxuICAgICAgICAgICAgL15mZWIvaSxcbiAgICAgICAgICAgIC9ebWFyL2ksXG4gICAgICAgICAgICAvXmFici9pLFxuICAgICAgICAgICAgL15tYXkvaSxcbiAgICAgICAgICAgIC9eanVuL2ksXG4gICAgICAgICAgICAvXmp1bC9pLFxuICAgICAgICAgICAgL15hZ28vaSxcbiAgICAgICAgICAgIC9ec2VwL2ksXG4gICAgICAgICAgICAvXm9jdC9pLFxuICAgICAgICAgICAgL15ub3YvaSxcbiAgICAgICAgICAgIC9eZGljL2ksXG4gICAgICAgIF0sXG4gICAgICAgIG1vbnRoc1JlZ2V4ID1cbiAgICAgICAgICAgIC9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmV8ZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2k7XG5cbiAgICB2YXIgZXNNeCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VzLW14Jywge1xuICAgICAgICBtb250aHM6ICdlbmVyb19mZWJyZXJvX21hcnpvX2FicmlsX21heW9fanVuaW9fanVsaW9fYWdvc3RvX3NlcHRpZW1icmVfb2N0dWJyZV9ub3ZpZW1icmVfZGljaWVtYnJlJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogZnVuY3Rpb24gKG0sIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0RG90O1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvLU1NTS0vLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFttLm1vbnRoKCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnREb3RbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzUmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6XG4gICAgICAgICAgICAvXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlKS9pLFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OlxuICAgICAgICAgICAgL14oZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2ksXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHdlZWtkYXlzOiAnZG9taW5nb19sdW5lc19tYXJ0ZXNfbWnDqXJjb2xlc19qdWV2ZXNfdmllcm5lc19zw6FiYWRvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZG9tLl9sdW4uX21hci5fbWnDqS5fanVlLl92aWUuX3PDoWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2RvX2x1X21hX21pX2p1X3ZpX3PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tob3kgYSBsYScgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHREYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1ttYcOxYW5hIGEgbGEnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBbYSBsYScgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1theWVyIGEgbGEnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICdbZWxdIGRkZGQgW3Bhc2FkbyBhIGxhJyArXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgICAnXSBMVCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnZW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJ2hhY2UgJXMnLFxuICAgICAgICAgICAgczogJ3Vub3Mgc2VndW5kb3MnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWd1bmRvcycsXG4gICAgICAgICAgICBtOiAndW4gbWludXRvJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRvcycsXG4gICAgICAgICAgICBoOiAndW5hIGhvcmEnLFxuICAgICAgICAgICAgaGg6ICclZCBob3JhcycsXG4gICAgICAgICAgICBkOiAndW4gZMOtYScsXG4gICAgICAgICAgICBkZDogJyVkIGTDrWFzJyxcbiAgICAgICAgICAgIHc6ICd1bmEgc2VtYW5hJyxcbiAgICAgICAgICAgIHd3OiAnJWQgc2VtYW5hcycsXG4gICAgICAgICAgICBNOiAndW4gbWVzJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWVzZXMnLFxuICAgICAgICAgICAgeTogJ3VuIGHDsW8nLFxuICAgICAgICAgICAgeXk6ICclZCBhw7FvcycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbDogJyVkwronLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgICAgIGludmFsaWREYXRlOiAnRmVjaGEgaW52w6FsaWRhJyxcbiAgICB9KTtcblxuICAgIHJldHVybiBlc014O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFNwYW5pc2ggKFVuaXRlZCBTdGF0ZXMpIFtlcy11c11cbi8vISBhdXRob3IgOiBidXN0dGEgOiBodHRwczovL2dpdGh1Yi5jb20vYnVzdHRhXG4vLyEgYXV0aG9yIDogY2hyaXNyb2R6IDogaHR0cHM6Ly9naXRodWIuY29tL2Nocmlzcm9kelxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRoc1Nob3J0RG90ID1cbiAgICAgICAgICAgICdlbmUuX2ZlYi5fbWFyLl9hYnIuX21heS5fanVuLl9qdWwuX2Fnby5fc2VwLl9vY3QuX25vdi5fZGljLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydCA9ICdlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpYycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXmVuZS9pLFxuICAgICAgICAgICAgL15mZWIvaSxcbiAgICAgICAgICAgIC9ebWFyL2ksXG4gICAgICAgICAgICAvXmFici9pLFxuICAgICAgICAgICAgL15tYXkvaSxcbiAgICAgICAgICAgIC9eanVuL2ksXG4gICAgICAgICAgICAvXmp1bC9pLFxuICAgICAgICAgICAgL15hZ28vaSxcbiAgICAgICAgICAgIC9ec2VwL2ksXG4gICAgICAgICAgICAvXm9jdC9pLFxuICAgICAgICAgICAgL15ub3YvaSxcbiAgICAgICAgICAgIC9eZGljL2ksXG4gICAgICAgIF0sXG4gICAgICAgIG1vbnRoc1JlZ2V4ID1cbiAgICAgICAgICAgIC9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmV8ZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2k7XG5cbiAgICB2YXIgZXNVcyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VzLXVzJywge1xuICAgICAgICBtb250aHM6ICdlbmVyb19mZWJyZXJvX21hcnpvX2FicmlsX21heW9fanVuaW9fanVsaW9fYWdvc3RvX3NlcHRpZW1icmVfb2N0dWJyZV9ub3ZpZW1icmVfZGljaWVtYnJlJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogZnVuY3Rpb24gKG0sIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0RG90O1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvLU1NTS0vLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFttLm1vbnRoKCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnREb3RbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzUmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6XG4gICAgICAgICAgICAvXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlKS9pLFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OlxuICAgICAgICAgICAgL14oZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2ksXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHdlZWtkYXlzOiAnZG9taW5nb19sdW5lc19tYXJ0ZXNfbWnDqXJjb2xlc19qdWV2ZXNfdmllcm5lc19zw6FiYWRvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZG9tLl9sdW4uX21hci5fbWnDqS5fanVlLl92aWUuX3PDoWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2RvX2x1X21hX21pX2p1X3ZpX3PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEw6ICdNTS9ERC9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBoOm1tIEEnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2hveSBhIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dERheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW21hw7FhbmEgYSBsYScgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIFthIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2F5ZXIgYSBsYScgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgJ1tlbF0gZGRkZCBbcGFzYWRvIGEgbGEnICtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAgICddIExUJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdlbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAnaGFjZSAlcycsXG4gICAgICAgICAgICBzOiAndW5vcyBzZWd1bmRvcycsXG4gICAgICAgICAgICBzczogJyVkIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIG06ICd1biBtaW51dG8nLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dG9zJyxcbiAgICAgICAgICAgIGg6ICd1bmEgaG9yYScsXG4gICAgICAgICAgICBoaDogJyVkIGhvcmFzJyxcbiAgICAgICAgICAgIGQ6ICd1biBkw61hJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZMOtYXMnLFxuICAgICAgICAgICAgdzogJ3VuYSBzZW1hbmEnLFxuICAgICAgICAgICAgd3c6ICclZCBzZW1hbmFzJyxcbiAgICAgICAgICAgIE06ICd1biBtZXMnLFxuICAgICAgICAgICAgTU06ICclZCBtZXNlcycsXG4gICAgICAgICAgICB5OiAndW4gYcOxbycsXG4gICAgICAgICAgICB5eTogJyVkIGHDsW9zJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsOiAnJWTCuicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBlc1VzO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFNwYW5pc2ggW2VzXVxuLy8hIGF1dGhvciA6IEp1bGlvIE5hcHVyw60gOiBodHRwczovL2dpdGh1Yi5jb20vanVsaW9uY1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRoc1Nob3J0RG90ID1cbiAgICAgICAgICAgICdlbmUuX2ZlYi5fbWFyLl9hYnIuX21heS5fanVuLl9qdWwuX2Fnby5fc2VwLl9vY3QuX25vdi5fZGljLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydCA9ICdlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpYycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXmVuZS9pLFxuICAgICAgICAgICAgL15mZWIvaSxcbiAgICAgICAgICAgIC9ebWFyL2ksXG4gICAgICAgICAgICAvXmFici9pLFxuICAgICAgICAgICAgL15tYXkvaSxcbiAgICAgICAgICAgIC9eanVuL2ksXG4gICAgICAgICAgICAvXmp1bC9pLFxuICAgICAgICAgICAgL15hZ28vaSxcbiAgICAgICAgICAgIC9ec2VwL2ksXG4gICAgICAgICAgICAvXm9jdC9pLFxuICAgICAgICAgICAgL15ub3YvaSxcbiAgICAgICAgICAgIC9eZGljL2ksXG4gICAgICAgIF0sXG4gICAgICAgIG1vbnRoc1JlZ2V4ID1cbiAgICAgICAgICAgIC9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmV8ZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2k7XG5cbiAgICB2YXIgZXMgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlcycsIHtcbiAgICAgICAgbW9udGhzOiAnZW5lcm9fZmVicmVyb19tYXJ6b19hYnJpbF9tYXlvX2p1bmlvX2p1bGlvX2Fnb3N0b19zZXB0aWVtYnJlX29jdHVicmVfbm92aWVtYnJlX2RpY2llbWJyZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6IGZ1bmN0aW9uIChtLCBmb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydERvdDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoLy1NTU0tLy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0RG90W20ubW9udGgoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1JlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU2hvcnRSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4OlxuICAgICAgICAgICAgL14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZSkvaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDpcbiAgICAgICAgICAgIC9eKGVuZVxcLj98ZmViXFwuP3xtYXJcXC4/fGFiclxcLj98bWF5XFwuP3xqdW5cXC4/fGp1bFxcLj98YWdvXFwuP3xzZXBcXC4/fG9jdFxcLj98bm92XFwuP3xkaWNcXC4/KS9pLFxuICAgICAgICBtb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICB3ZWVrZGF5czogJ2RvbWluZ29fbHVuZXNfbWFydGVzX21pw6lyY29sZXNfanVldmVzX3ZpZXJuZXNfc8OhYmFkbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2RvbS5fbHVuLl9tYXIuX21pw6kuX2p1ZS5fdmllLl9zw6FiLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdkb19sdV9tYV9taV9qdV92aV9zw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbaG95IGEgbGEnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0RGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbbWHDsWFuYSBhIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RkZGQgW2EgbGEnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbYXllciBhIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAnW2VsXSBkZGRkIFtwYXNhZG8gYSBsYScgK1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICtcbiAgICAgICAgICAgICAgICAgICAgJ10gTFQnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2VuICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdoYWNlICVzJyxcbiAgICAgICAgICAgIHM6ICd1bm9zIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VndW5kb3MnLFxuICAgICAgICAgICAgbTogJ3VuIG1pbnV0bycsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0b3MnLFxuICAgICAgICAgICAgaDogJ3VuYSBob3JhJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG9yYXMnLFxuICAgICAgICAgICAgZDogJ3VuIGTDrWEnLFxuICAgICAgICAgICAgZGQ6ICclZCBkw61hcycsXG4gICAgICAgICAgICB3OiAndW5hIHNlbWFuYScsXG4gICAgICAgICAgICB3dzogJyVkIHNlbWFuYXMnLFxuICAgICAgICAgICAgTTogJ3VuIG1lcycsXG4gICAgICAgICAgICBNTTogJyVkIG1lc2VzJyxcbiAgICAgICAgICAgIHk6ICd1biBhw7FvJyxcbiAgICAgICAgICAgIHl5OiAnJWQgYcOxb3MnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWw6ICclZMK6JyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgICAgICBpbnZhbGlkRGF0ZTogJ0ZlY2hhIGludsOhbGlkYScsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZXM7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRXN0b25pYW4gW2V0XVxuLy8hIGF1dGhvciA6IEhlbnJ5IEtlaGxtYW5uIDogaHR0cHM6Ly9naXRodWIuY29tL21hZGhlbnJ5XG4vLyEgaW1wcm92ZW1lbnRzIDogSWxsaW1hciBUYW1iZWsgOiBodHRwczovL2dpdGh1Yi5jb20vcmFndWxrYVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgIHM6IFsnbcO1bmUgc2VrdW5kaScsICdtw7VuaSBzZWt1bmQnLCAncGFhciBzZWt1bmRpdCddLFxuICAgICAgICAgICAgc3M6IFtudW1iZXIgKyAnc2VrdW5kaScsIG51bWJlciArICdzZWt1bmRpdCddLFxuICAgICAgICAgICAgbTogWyfDvGhlIG1pbnV0aScsICfDvGtzIG1pbnV0J10sXG4gICAgICAgICAgICBtbTogW251bWJlciArICcgbWludXRpJywgbnVtYmVyICsgJyBtaW51dGl0J10sXG4gICAgICAgICAgICBoOiBbJ8O8aGUgdHVubmknLCAndHVuZCBhZWdhJywgJ8O8a3MgdHVuZCddLFxuICAgICAgICAgICAgaGg6IFtudW1iZXIgKyAnIHR1bm5pJywgbnVtYmVyICsgJyB0dW5kaSddLFxuICAgICAgICAgICAgZDogWyfDvGhlIHDDpGV2YScsICfDvGtzIHDDpGV2J10sXG4gICAgICAgICAgICBNOiBbJ2t1dSBhamEnLCAna3V1IGFlZ2EnLCAnw7xrcyBrdXUnXSxcbiAgICAgICAgICAgIE1NOiBbbnVtYmVyICsgJyBrdXUnLCBudW1iZXIgKyAnIGt1dWQnXSxcbiAgICAgICAgICAgIHk6IFsnw7xoZSBhYXN0YScsICdhYXN0YScsICfDvGtzIGFhc3RhJ10sXG4gICAgICAgICAgICB5eTogW251bWJlciArICcgYWFzdGEnLCBudW1iZXIgKyAnIGFhc3RhdCddLFxuICAgICAgICB9O1xuICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdFtrZXldWzJdID8gZm9ybWF0W2tleV1bMl0gOiBmb3JtYXRba2V5XVsxXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyBmb3JtYXRba2V5XVswXSA6IGZvcm1hdFtrZXldWzFdO1xuICAgIH1cblxuICAgIHZhciBldCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2V0Jywge1xuICAgICAgICBtb250aHM6ICdqYWFudWFyX3ZlZWJydWFyX23DpHJ0c19hcHJpbGxfbWFpX2p1dW5pX2p1dWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b29iZXJfbm92ZW1iZXJfZGV0c2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdqYWFuX3ZlZWJyX23DpHJ0c19hcHJfbWFpX2p1dW5pX2p1dWxpX2F1Z19zZXB0X29rdF9ub3ZfZGV0cycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAncMO8aGFww6Rldl9lc21hc3DDpGV2X3RlaXNpcMOkZXZfa29sbWFww6Rldl9uZWxqYXDDpGV2X3JlZWRlX2xhdXDDpGV2Jy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdQX0VfVF9LX05fUl9MJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1BfRV9UX0tfTl9SX0wnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tUw6RuYSxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbSG9tbWUsXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1tKw6RyZ21pbmVdIGRkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tFaWxlLF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbRWVsbWluZV0gZGRkZCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIHDDpHJhc3QnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHRhZ2FzaScsXG4gICAgICAgICAgICBzOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgc3M6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbW06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGg6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZGQ6ICclZCBww6RldmEnLFxuICAgICAgICAgICAgTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGV0O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEJhc3F1ZSBbZXVdXG4vLyEgYXV0aG9yIDogRW5la28gSWxsYXJyYW1lbmRpIDogaHR0cHM6Ly9naXRodWIuY29tL2VpbGxhcnJhXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZXUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdldScsIHtcbiAgICAgICAgbW9udGhzOiAndXJ0YXJyaWxhX290c2FpbGFfbWFydHhvYV9hcGlyaWxhX21haWF0emFfZWthaW5hX3V6dGFpbGFfYWJ1enR1YV9pcmFpbGFfdXJyaWFfYXphcm9hX2FiZW5kdWEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ3VydC5fb3RzLl9tYXIuX2FwaS5fbWFpLl9la2EuX3V6dC5fYWJ1Ll9pcmEuX3Vyci5fYXphLl9hYmUuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ2lnYW5kZWFfYXN0ZWxlaGVuYV9hc3RlYXJ0ZWFfYXN0ZWF6a2VuYV9vc3RlZ3VuYV9vc3RpcmFsYV9sYXJ1bmJhdGEnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2lnLl9hbC5fYXIuX2F6Ll9vZy5fb2wuX2xyLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdpZ19hbF9hcl9hel9vZ19vbF9scicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTDogJ1lZWVlba29dIE1NTU1bcmVuXSBEW2FdJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVlba29dIE1NTU1bcmVuXSBEW2FdIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBZWVlZW2tvXSBNTU1NW3Jlbl0gRFthXSBISDptbScsXG4gICAgICAgICAgICBsOiAnWVlZWS1NLUQnLFxuICAgICAgICAgICAgbGw6ICdZWVlZW2tvXSBNTU0gRFthXScsXG4gICAgICAgICAgICBsbGw6ICdZWVlZW2tvXSBNTU0gRFthXSBISDptbScsXG4gICAgICAgICAgICBsbGxsOiAnZGRkLCBZWVlZW2tvXSBNTU0gRFthXSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2dhdXJdIExUW2V0YW5dJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbYmloYXJdIExUW2V0YW5dJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBMVFtldGFuXScsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2F0em9dIExUW2V0YW5dJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2F1cnJla29dIGRkZGQgTFRbZXRhbl0nLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyBiYXJydScsXG4gICAgICAgICAgICBwYXN0OiAnZHVlbGEgJXMnLFxuICAgICAgICAgICAgczogJ3NlZ3VuZG8gYmF0enVrJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VndW5kbycsXG4gICAgICAgICAgICBtOiAnbWludXR1IGJhdCcsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0dScsXG4gICAgICAgICAgICBoOiAnb3JkdSBiYXQnLFxuICAgICAgICAgICAgaGg6ICclZCBvcmR1JyxcbiAgICAgICAgICAgIGQ6ICdlZ3VuIGJhdCcsXG4gICAgICAgICAgICBkZDogJyVkIGVndW4nLFxuICAgICAgICAgICAgTTogJ2hpbGFiZXRlIGJhdCcsXG4gICAgICAgICAgICBNTTogJyVkIGhpbGFiZXRlJyxcbiAgICAgICAgICAgIHk6ICd1cnRlIGJhdCcsXG4gICAgICAgICAgICB5eTogJyVkIHVydGUnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGV1O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFBlcnNpYW4gW2ZhXVxuLy8hIGF1dGhvciA6IEVicmFoaW0gQnlhZ293aSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9lYnJhbWluaW9cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICAgICAxOiAn27EnLFxuICAgICAgICAgICAgMjogJ9uyJyxcbiAgICAgICAgICAgIDM6ICfbsycsXG4gICAgICAgICAgICA0OiAn27QnLFxuICAgICAgICAgICAgNTogJ9u1JyxcbiAgICAgICAgICAgIDY6ICfbticsXG4gICAgICAgICAgICA3OiAn27cnLFxuICAgICAgICAgICAgODogJ9u4JyxcbiAgICAgICAgICAgIDk6ICfbuScsXG4gICAgICAgICAgICAwOiAn27AnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn27EnOiAnMScsXG4gICAgICAgICAgICAn27InOiAnMicsXG4gICAgICAgICAgICAn27MnOiAnMycsXG4gICAgICAgICAgICAn27QnOiAnNCcsXG4gICAgICAgICAgICAn27UnOiAnNScsXG4gICAgICAgICAgICAn27YnOiAnNicsXG4gICAgICAgICAgICAn27cnOiAnNycsXG4gICAgICAgICAgICAn27gnOiAnOCcsXG4gICAgICAgICAgICAn27knOiAnOScsXG4gICAgICAgICAgICAn27AnOiAnMCcsXG4gICAgICAgIH07XG5cbiAgICB2YXIgZmEgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmYScsIHtcbiAgICAgICAgbW9udGhzOiAn2pjYp9mG2YjbjNmHX9mB2YjYsduM2Ydf2YXYp9ix2LNf2KLZiNix24zZhF/ZhdmHX9qY2YjYptmGX9qY2YjYptuM2Ydf2KfZiNiqX9iz2b7Yqtin2YXYqNixX9in2qnYqtio2LFf2YbZiNin2YXYqNixX9iv2LPYp9mF2KjYsScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn2pjYp9mG2YjbjNmHX9mB2YjYsduM2Ydf2YXYp9ix2LNf2KLZiNix24zZhF/ZhdmHX9qY2YjYptmGX9qY2YjYptuM2Ydf2KfZiNiqX9iz2b7Yqtin2YXYqNixX9in2qnYqtio2LFf2YbZiNin2YXYqNixX9iv2LPYp9mF2KjYsScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICfbjNqpXFx1MjAwY9i02YbYqNmHX9iv2YjYtNmG2KjZh1/Ys9mHXFx1MjAwY9i02YbYqNmHX9qG2YfYp9ix2LTZhtio2Ydf2b7ZhtisXFx1MjAwY9i02YbYqNmHX9is2YXYudmHX9i02YbYqNmHJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6XG4gICAgICAgICAgICAn24zaqVxcdTIwMGPYtNmG2KjZh1/Yr9mI2LTZhtio2Ydf2LPZh1xcdTIwMGPYtNmG2KjZh1/ahtmH2KfYsdi02YbYqNmHX9m+2YbYrFxcdTIwMGPYtNmG2KjZh1/YrNmF2LnZh1/YtNmG2KjZhycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9uMX9ivX9izX9qGX9m+X9isX9i0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9mC2KjZhCDYp9iyINi42YfYsXzYqNi52K8g2KfYsiDYuNmH2LEvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAv2KjYudivINin2LIg2LjZh9ixLy50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9mC2KjZhCDYp9iyINi42YfYsSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2KjYudivINin2LIg2LjZh9ixJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhdix2YjYsiDYs9in2LnYql0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vZgdix2K/YpyDYs9in2LnYql0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYs9in2LnYql0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYr9uM2LHZiNiyINiz2KfYudiqXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW9m+24zYtF0gW9iz2KfYudiqXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9iv2LEgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzINm+24zYtCcsXG4gICAgICAgICAgICBzOiAn2obZhtivINir2KfZhtuM2YcnLFxuICAgICAgICAgICAgc3M6ICclZCDYq9in2YbbjNmHJyxcbiAgICAgICAgICAgIG06ICfbjNqpINiv2YLbjNmC2YcnLFxuICAgICAgICAgICAgbW06ICclZCDYr9mC24zZgtmHJyxcbiAgICAgICAgICAgIGg6ICfbjNqpINiz2KfYudiqJyxcbiAgICAgICAgICAgIGhoOiAnJWQg2LPYp9i52KonLFxuICAgICAgICAgICAgZDogJ9uM2qkg2LHZiNiyJyxcbiAgICAgICAgICAgIGRkOiAnJWQg2LHZiNiyJyxcbiAgICAgICAgICAgIE06ICfbjNqpINmF2KfZhycsXG4gICAgICAgICAgICBNTTogJyVkINmF2KfZhycsXG4gICAgICAgICAgICB5OiAn24zaqSDYs9in2YQnLFxuICAgICAgICAgICAgeXk6ICclZCDYs9in2YQnLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9b27At27ldL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ92YUvLFxuICAgICAgICBvcmRpbmFsOiAnJWTZhScsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogNiwgLy8gU2F0dXJkYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogMTIsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmE7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRmlubmlzaCBbZmldXG4vLyEgYXV0aG9yIDogVGFybW8gQWlkYW50YXVzdGEgOiBodHRwczovL2dpdGh1Yi5jb20vYmxlYWRvZlxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG51bWJlcnNQYXN0ID1cbiAgICAgICAgICAgICdub2xsYSB5a3NpIGtha3NpIGtvbG1lIG5lbGrDpCB2aWlzaSBrdXVzaSBzZWl0c2Vtw6RuIGthaGRla3NhbiB5aGRla3PDpG4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICcgJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbnVtYmVyc0Z1dHVyZSA9IFtcbiAgICAgICAgICAgICdub2xsYScsXG4gICAgICAgICAgICAneWhkZW4nLFxuICAgICAgICAgICAgJ2thaGRlbicsXG4gICAgICAgICAgICAna29sbWVuJyxcbiAgICAgICAgICAgICduZWxqw6RuJyxcbiAgICAgICAgICAgICd2aWlkZW4nLFxuICAgICAgICAgICAgJ2t1dWRlbicsXG4gICAgICAgICAgICBudW1iZXJzUGFzdFs3XSxcbiAgICAgICAgICAgIG51bWJlcnNQYXN0WzhdLFxuICAgICAgICAgICAgbnVtYmVyc1Bhc3RbOV0sXG4gICAgICAgIF07XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAnbXV1dGFtYW4gc2VrdW5uaW4nIDogJ211dXRhbWEgc2VrdW50aSc7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXNGdXR1cmUgPyAnc2VrdW5uaW4nIDogJ3Nla3VudGlhJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdtaW51dXRpbicgOiAnbWludXV0dGknO1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGlzRnV0dXJlID8gJ21pbnV1dGluJyA6ICdtaW51dXR0aWEnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ3R1bm5pbicgOiAndHVudGknO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGlzRnV0dXJlID8gJ3R1bm5pbicgOiAndHVudGlhJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdww6RpdsOkbicgOiAncMOkaXbDpCc7XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXNGdXR1cmUgPyAncMOkaXbDpG4nIDogJ3DDpGl2w6TDpCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAna3V1a2F1ZGVuJyA6ICdrdXVrYXVzaSc7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXNGdXR1cmUgPyAna3V1a2F1ZGVuJyA6ICdrdXVrYXV0dGEnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ3Z1b2RlbicgOiAndnVvc2knO1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGlzRnV0dXJlID8gJ3Z1b2RlbicgOiAndnVvdHRhJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSB2ZXJiYWxOdW1iZXIobnVtYmVyLCBpc0Z1dHVyZSkgKyAnICcgKyByZXN1bHQ7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHZlcmJhbE51bWJlcihudW1iZXIsIGlzRnV0dXJlKSB7XG4gICAgICAgIHJldHVybiBudW1iZXIgPCAxMFxuICAgICAgICAgICAgPyBpc0Z1dHVyZVxuICAgICAgICAgICAgICAgID8gbnVtYmVyc0Z1dHVyZVtudW1iZXJdXG4gICAgICAgICAgICAgICAgOiBudW1iZXJzUGFzdFtudW1iZXJdXG4gICAgICAgICAgICA6IG51bWJlcjtcbiAgICB9XG5cbiAgICB2YXIgZmkgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmaScsIHtcbiAgICAgICAgbW9udGhzOiAndGFtbWlrdXVfaGVsbWlrdXVfbWFhbGlza3V1X2h1aHRpa3V1X3RvdWtva3V1X2tlc8Oka3V1X2hlaW7DpGt1dV9lbG9rdXVfc3l5c2t1dV9sb2tha3V1X21hcnJhc2t1dV9qb3VsdWt1dScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAndGFtbWlfaGVsbWlfbWFhbGlzX2h1aHRpX3RvdWtvX2tlc8OkX2hlaW7DpF9lbG9fc3l5c19sb2thX21hcnJhc19qb3VsdScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdzdW5udW50YWlfbWFhbmFudGFpX3RpaXN0YWlfa2Vza2l2aWlra29fdG9yc3RhaV9wZXJqYW50YWlfbGF1YW50YWknLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ3N1X21hX3RpX2tlX3RvX3BlX2xhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ3N1X21hX3RpX2tlX3RvX3BlX2xhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISC5tbScsXG4gICAgICAgICAgICBMVFM6ICdISC5tbS5zcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0RvIE1NTU1bdGFdIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRG8gTU1NTVt0YV0gWVlZWSwgW2tsb10gSEgubW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIERvIE1NTU1bdGFdIFlZWVksIFtrbG9dIEhILm1tJyxcbiAgICAgICAgICAgIGw6ICdELk0uWVlZWScsXG4gICAgICAgICAgICBsbDogJ0RvIE1NTSBZWVlZJyxcbiAgICAgICAgICAgIGxsbDogJ0RvIE1NTSBZWVlZLCBba2xvXSBISC5tbScsXG4gICAgICAgICAgICBsbGxsOiAnZGRkLCBEbyBNTU0gWVlZWSwgW2tsb10gSEgubW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1t0w6Ruw6TDpG5dIFtrbG9dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbaHVvbWVubmFdIFtrbG9dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBba2xvXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2VpbGVuXSBba2xvXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1t2aWltZV0gZGRkZFtuYV0gW2tsb10gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyBww6TDpHN0w6QnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHNpdHRlbicsXG4gICAgICAgICAgICBzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBzczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkZDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTU06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmk7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRmlsaXBpbm8gW2ZpbF1cbi8vISBhdXRob3IgOiBEYW4gSGFnbWFuIDogaHR0cHM6Ly9naXRodWIuY29tL2hhZ21hbmRhblxuLy8hIGF1dGhvciA6IE1hdHRoZXcgQ28gOiBodHRwczovL2dpdGh1Yi5jb20vbWF0dGhld2RlZWNvXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZmlsID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZmlsJywge1xuICAgICAgICBtb250aHM6ICdFbmVyb19QZWJyZXJvX01hcnNvX0FicmlsX01heW9fSHVueW9fSHVseW9fQWdvc3RvX1NldHllbWJyZV9Pa3R1YnJlX05vYnllbWJyZV9EaXN5ZW1icmUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnRW5lX1BlYl9NYXJfQWJyX01heV9IdW5fSHVsX0Fnb19TZXRfT2t0X05vYl9EaXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnTGluZ2dvX0x1bmVzX01hcnRlc19NaXllcmt1bGVzX0h1d2ViZXNfQml5ZXJuZXNfU2FiYWRvJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnTGluX0x1bl9NYXJfTWl5X0h1d19CaXlfU2FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ0xpX0x1X01hX01pX0h1X0JpX1NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ01NL0QvWVlZWScsXG4gICAgICAgICAgICBMTDogJ01NTU0gRCwgWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdNTU1NIEQsIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIE1NTU0gREQsIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ0xUIFtuZ2F5b25nIGFyYXddJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbQnVrYXMgbmddIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnTFQgW3NhIHN1c3Vub2QgbmFdIGRkZGQnLFxuICAgICAgICAgICAgbGFzdERheTogJ0xUIFtrYWhhcG9uXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ0xUIFtub29uZyBuYWthcmFhbmddIGRkZGQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdzYSBsb29iIG5nICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBhbmcgbmFrYWxpcGFzJyxcbiAgICAgICAgICAgIHM6ICdpbGFuZyBzZWd1bmRvJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VndW5kbycsXG4gICAgICAgICAgICBtOiAnaXNhbmcgbWludXRvJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRvJyxcbiAgICAgICAgICAgIGg6ICdpc2FuZyBvcmFzJyxcbiAgICAgICAgICAgIGhoOiAnJWQgb3JhcycsXG4gICAgICAgICAgICBkOiAnaXNhbmcgYXJhdycsXG4gICAgICAgICAgICBkZDogJyVkIGFyYXcnLFxuICAgICAgICAgICAgTTogJ2lzYW5nIGJ1d2FuJyxcbiAgICAgICAgICAgIE1NOiAnJWQgYnV3YW4nLFxuICAgICAgICAgICAgeTogJ2lzYW5nIHRhb24nLFxuICAgICAgICAgICAgeXk6ICclZCB0YW9uJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZpbDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBGYXJvZXNlIFtmb11cbi8vISBhdXRob3IgOiBSYWduYXIgSm9oYW5uZXNlbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9yYWduYXIxMjNcbi8vISBhdXRob3IgOiBLcmlzdGlhbiBTYWthcmlzc29uIDogaHR0cHM6Ly9naXRodWIuY29tL3Nha2FyaXNzb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBmbyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2ZvJywge1xuICAgICAgICBtb250aHM6ICdqYW51YXJfZmVicnVhcl9tYXJzX2FwcsOtbF9tYWlfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZXNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW5fZmViX21hcl9hcHJfbWFpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnc3VubnVkYWd1cl9tw6FuYWRhZ3VyX3TDvXNkYWd1cl9taWt1ZGFndXJfaMOzc2RhZ3VyX2Zyw61nZ2phZGFndXJfbGV5Z2FyZGFndXInLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ3N1bl9tw6FuX3TDvXNfbWlrX2jDs3NfZnLDrV9sZXknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnc3VfbcOhX3TDvV9taV9ow7NfZnJfbGUnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRC4gTU1NTSwgWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW8ONIGRhZyBrbC5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbw40gbW9yZ2luIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtrbC5dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbw40gZ2rDoXIga2wuXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tzw63DsHN0dV0gZGRkZCBba2xdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAndW0gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHPDrcOwYW5pJyxcbiAgICAgICAgICAgIHM6ICdmw6Egc2VrdW5kJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VrdW5kaXInLFxuICAgICAgICAgICAgbTogJ2VpbiBtaW51dHR1cicsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0dGlyJyxcbiAgICAgICAgICAgIGg6ICdlaW4gdMOtbWknLFxuICAgICAgICAgICAgaGg6ICclZCB0w61tYXInLFxuICAgICAgICAgICAgZDogJ2VpbiBkYWd1cicsXG4gICAgICAgICAgICBkZDogJyVkIGRhZ2FyJyxcbiAgICAgICAgICAgIE06ICdlaW4gbcOhbmHDsHVyJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbcOhbmHDsGlyJyxcbiAgICAgICAgICAgIHk6ICdlaXR0IMOhcicsXG4gICAgICAgICAgICB5eTogJyVkIMOhcicsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZm87XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRnJlbmNoIChDYW5hZGEpIFtmci1jYV1cbi8vISBhdXRob3IgOiBKb25hdGhhbiBBYm91cmJpaCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qb25iY2FcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBmckNhID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZnItY2EnLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnZpZXJfZsOpdnJpZXJfbWFyc19hdnJpbF9tYWlfanVpbl9qdWlsbGV0X2Fvw7t0X3NlcHRlbWJyZV9vY3RvYnJlX25vdmVtYnJlX2TDqWNlbWJyZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnamFudi5fZsOpdnIuX21hcnNfYXZyLl9tYWlfanVpbl9qdWlsLl9hb8O7dF9zZXB0Ll9vY3QuX25vdi5fZMOpYy4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdkaW1hbmNoZV9sdW5kaV9tYXJkaV9tZXJjcmVkaV9qZXVkaV92ZW5kcmVkaV9zYW1lZGknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdkaW0uX2x1bi5fbWFyLl9tZXIuX2pldS5fdmVuLl9zYW0uJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2RpX2x1X21hX21lX2plX3ZlX3NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tBdWpvdXJk4oCZaHVpIMOgXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0RlbWFpbiDDoF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvDoF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tIaWVyIMOgXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW2Rlcm5pZXIgw6BdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnZGFucyAlcycsXG4gICAgICAgICAgICBwYXN0OiAnaWwgeSBhICVzJyxcbiAgICAgICAgICAgIHM6ICdxdWVscXVlcyBzZWNvbmRlcycsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZGVzJyxcbiAgICAgICAgICAgIG06ICd1bmUgbWludXRlJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoOiAndW5lIGhldXJlJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaGV1cmVzJyxcbiAgICAgICAgICAgIGQ6ICd1biBqb3VyJyxcbiAgICAgICAgICAgIGRkOiAnJWQgam91cnMnLFxuICAgICAgICAgICAgTTogJ3VuIG1vaXMnLFxuICAgICAgICAgICAgTU06ICclZCBtb2lzJyxcbiAgICAgICAgICAgIHk6ICd1biBhbicsXG4gICAgICAgICAgICB5eTogJyVkIGFucycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShlcnxlKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICAvLyBXb3JkcyB3aXRoIG1hc2N1bGluZSBncmFtbWF0aWNhbCBnZW5kZXI6IG1vaXMsIHRyaW1lc3RyZSwgam91clxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChudW1iZXIgPT09IDEgPyAnZXInIDogJ2UnKTtcblxuICAgICAgICAgICAgICAgIC8vIFdvcmRzIHdpdGggZmVtaW5pbmUgZ3JhbW1hdGljYWwgZ2VuZGVyOiBzZW1haW5lXG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAobnVtYmVyID09PSAxID8gJ3JlJyA6ICdlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZnJDYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBGcmVuY2ggKFN3aXR6ZXJsYW5kKSBbZnItY2hdXG4vLyEgYXV0aG9yIDogR2FzcGFyZCBCdWNoZXIgOiBodHRwczovL2dpdGh1Yi5jb20vZ2FzcGFyZFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGZyQ2ggPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmci1jaCcsIHtcbiAgICAgICAgbW9udGhzOiAnamFudmllcl9mw6l2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRfYW/Du3Rfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZMOpY2VtYnJlJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdqYW52Ll9mw6l2ci5fbWFyc19hdnIuX21haV9qdWluX2p1aWwuX2Fvw7t0X3NlcHQuX29jdC5fbm92Ll9kw6ljLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ2RpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2RpbS5fbHVuLl9tYXIuX21lci5famV1Ll92ZW4uX3NhbS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnZGlfbHVfbWFfbWVfamVfdmVfc2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0F1am91cmTigJlodWkgw6BdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbRGVtYWluIMOgXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW8OgXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0hpZXIgw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbZGVybmllciDDoF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdkYW5zICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdpbCB5IGEgJXMnLFxuICAgICAgICAgICAgczogJ3F1ZWxxdWVzIHNlY29uZGVzJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vjb25kZXMnLFxuICAgICAgICAgICAgbTogJ3VuZSBtaW51dGUnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGg6ICd1bmUgaGV1cmUnLFxuICAgICAgICAgICAgaGg6ICclZCBoZXVyZXMnLFxuICAgICAgICAgICAgZDogJ3VuIGpvdXInLFxuICAgICAgICAgICAgZGQ6ICclZCBqb3VycycsXG4gICAgICAgICAgICBNOiAndW4gbW9pcycsXG4gICAgICAgICAgICBNTTogJyVkIG1vaXMnLFxuICAgICAgICAgICAgeTogJ3VuIGFuJyxcbiAgICAgICAgICAgIHl5OiAnJWQgYW5zJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KGVyfGUpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIC8vIFdvcmRzIHdpdGggbWFzY3VsaW5lIGdyYW1tYXRpY2FsIGdlbmRlcjogbW9pcywgdHJpbWVzdHJlLCBqb3VyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjYXNlICdRJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKG51bWJlciA9PT0gMSA/ICdlcicgOiAnZScpO1xuXG4gICAgICAgICAgICAgICAgLy8gV29yZHMgd2l0aCBmZW1pbmluZSBncmFtbWF0aWNhbCBnZW5kZXI6IHNlbWFpbmVcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChudW1iZXIgPT09IDEgPyAncmUnIDogJ2UnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZyQ2g7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRnJlbmNoIFtmcl1cbi8vISBhdXRob3IgOiBKb2huIEZpc2NoZXIgOiBodHRwczovL2dpdGh1Yi5jb20vamZyb2ZmaWNlXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzU3RyaWN0UmVnZXggPVxuICAgICAgICAgICAgL14oamFudmllcnxmw6l2cmllcnxtYXJzfGF2cmlsfG1haXxqdWlufGp1aWxsZXR8YW/Du3R8c2VwdGVtYnJlfG9jdG9icmV8bm92ZW1icmV8ZMOpY2VtYnJlKS9pLFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4ID1cbiAgICAgICAgICAgIC8oamFudlxcLj98ZsOpdnJcXC4/fG1hcnN8YXZyXFwuP3xtYWl8anVpbnxqdWlsXFwuP3xhb8O7dHxzZXB0XFwuP3xvY3RcXC4/fG5vdlxcLj98ZMOpY1xcLj8pL2ksXG4gICAgICAgIG1vbnRoc1JlZ2V4ID1cbiAgICAgICAgICAgIC8oamFudlxcLj98ZsOpdnJcXC4/fG1hcnN8YXZyXFwuP3xtYWl8anVpbnxqdWlsXFwuP3xhb8O7dHxzZXB0XFwuP3xvY3RcXC4/fG5vdlxcLj98ZMOpY1xcLj98amFudmllcnxmw6l2cmllcnxtYXJzfGF2cmlsfG1haXxqdWlufGp1aWxsZXR8YW/Du3R8c2VwdGVtYnJlfG9jdG9icmV8bm92ZW1icmV8ZMOpY2VtYnJlKS9pLFxuICAgICAgICBtb250aHNQYXJzZSA9IFtcbiAgICAgICAgICAgIC9eamFudi9pLFxuICAgICAgICAgICAgL15mw6l2ci9pLFxuICAgICAgICAgICAgL15tYXJzL2ksXG4gICAgICAgICAgICAvXmF2ci9pLFxuICAgICAgICAgICAgL15tYWkvaSxcbiAgICAgICAgICAgIC9eanVpbi9pLFxuICAgICAgICAgICAgL15qdWlsL2ksXG4gICAgICAgICAgICAvXmFvw7t0L2ksXG4gICAgICAgICAgICAvXnNlcHQvaSxcbiAgICAgICAgICAgIC9eb2N0L2ksXG4gICAgICAgICAgICAvXm5vdi9pLFxuICAgICAgICAgICAgL15kw6ljL2ksXG4gICAgICAgIF07XG5cbiAgICB2YXIgZnIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmcicsIHtcbiAgICAgICAgbW9udGhzOiAnamFudmllcl9mw6l2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRfYW/Du3Rfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZMOpY2VtYnJlJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdqYW52Ll9mw6l2ci5fbWFyc19hdnIuX21haV9qdWluX2p1aWwuX2Fvw7t0X3NlcHQuX29jdC5fbm92Ll9kw6ljLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDogbW9udGhzU3RyaWN0UmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6IG1vbnRoc1Nob3J0U3RyaWN0UmVnZXgsXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHdlZWtkYXlzOiAnZGltYW5jaGVfbHVuZGlfbWFyZGlfbWVyY3JlZGlfamV1ZGlfdmVuZHJlZGlfc2FtZWRpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZGltLl9sdW4uX21hci5fbWVyLl9qZXUuX3Zlbi5fc2FtLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdkaV9sdV9tYV9tZV9qZV92ZV9zYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbQXVqb3VyZOKAmWh1aSDDoF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tEZW1haW4gw6BdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSGllciDDoF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtkZXJuaWVyIMOgXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2RhbnMgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ2lsIHkgYSAlcycsXG4gICAgICAgICAgICBzOiAncXVlbHF1ZXMgc2Vjb25kZXMnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWNvbmRlcycsXG4gICAgICAgICAgICBtOiAndW5lIG1pbnV0ZScsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaDogJ3VuZSBoZXVyZScsXG4gICAgICAgICAgICBoaDogJyVkIGhldXJlcycsXG4gICAgICAgICAgICBkOiAndW4gam91cicsXG4gICAgICAgICAgICBkZDogJyVkIGpvdXJzJyxcbiAgICAgICAgICAgIHc6ICd1bmUgc2VtYWluZScsXG4gICAgICAgICAgICB3dzogJyVkIHNlbWFpbmVzJyxcbiAgICAgICAgICAgIE06ICd1biBtb2lzJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbW9pcycsXG4gICAgICAgICAgICB5OiAndW4gYW4nLFxuICAgICAgICAgICAgeXk6ICclZCBhbnMnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oZXJ8KS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBSZXR1cm4gJ2UnIHdoZW4gZGF5IG9mIG1vbnRoID4gMS4gTW92ZSB0aGlzIGNhc2UgaW5zaWRlXG4gICAgICAgICAgICAgICAgLy8gYmxvY2sgZm9yIG1hc2N1bGluZSB3b3JkcyBiZWxvdy5cbiAgICAgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzMzNzVcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChudW1iZXIgPT09IDEgPyAnZXInIDogJycpO1xuXG4gICAgICAgICAgICAgICAgLy8gV29yZHMgd2l0aCBtYXNjdWxpbmUgZ3JhbW1hdGljYWwgZ2VuZGVyOiBtb2lzLCB0cmltZXN0cmUsIGpvdXJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1EnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAobnVtYmVyID09PSAxID8gJ2VyJyA6ICdlJyk7XG5cbiAgICAgICAgICAgICAgICAvLyBXb3JkcyB3aXRoIGZlbWluaW5lIGdyYW1tYXRpY2FsIGdlbmRlcjogc2VtYWluZVxuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKG51bWJlciA9PT0gMSA/ICdyZScgOiAnZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZnI7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRnJpc2lhbiBbZnldXG4vLyEgYXV0aG9yIDogUm9iaW4gdmFuIGRlciBWbGlldCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9yb2JpbjB2YW4wZGVyMHZcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtb250aHNTaG9ydFdpdGhEb3RzID1cbiAgICAgICAgICAgICdqYW4uX2ZlYi5fbXJ0Ll9hcHIuX21haV9qdW4uX2p1bC5fYXVnLl9zZXAuX29rdC5fbm92Ll9kZXMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydFdpdGhvdXREb3RzID1cbiAgICAgICAgICAgICdqYW5fZmViX21ydF9hcHJfbWFpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2Rlcycuc3BsaXQoJ18nKTtcblxuICAgIHZhciBmeSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2Z5Jywge1xuICAgICAgICBtb250aHM6ICdqYW5uZXdhcmlzX2ZlYnJld2FyaXNfbWFhcnRfYXByaWxfbWFhaWVfanVueV9qdWx5X2F1Z3VzdHVzX3NlcHRpbWJlcl9va3RvYmVyX25vdmltYmVyX2Rlc2ltYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogZnVuY3Rpb24gKG0sIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aERvdHM7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKC8tTU1NLS8udGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aG91dERvdHNbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aERvdHNbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdzbmVpbl9tb2FuZGVpX3RpaXNkZWlfd29hbnNkZWlfdG9uZ2Vyc2RlaV9mcmVlZF9zbmVvbicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ3NpLl9tby5fdGkuX3dvLl90by5fZnIuX3NvLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTaV9Nb19UaV9Xb19Ub19Gcl9Tbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQtTU0tWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaGpvZWQgb21dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbbW9hcm4gb21dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbanVzdGVyIG9tXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vDtGZyw7tuZV0gZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnb2VyICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBseW4nLFxuICAgICAgICAgICAgczogJ2luIHBlYXIgc2Vrb25kZW4nLFxuICAgICAgICAgICAgc3M6ICclZCBzZWtvbmRlbicsXG4gICAgICAgICAgICBtOiAnaWVuIG1pbsO6dCcsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0ZW4nLFxuICAgICAgICAgICAgaDogJ2llbiBvZXJlJyxcbiAgICAgICAgICAgIGhoOiAnJWQgb2VyZW4nLFxuICAgICAgICAgICAgZDogJ2llbiBkZWknLFxuICAgICAgICAgICAgZGQ6ICclZCBkYWdlbicsXG4gICAgICAgICAgICBNOiAnaWVuIG1vYW5uZScsXG4gICAgICAgICAgICBNTTogJyVkIG1vYW5uZW4nLFxuICAgICAgICAgICAgeTogJ2llbiBqaWVyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgamllcnJlbicsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdGV8ZGUpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICBudW1iZXIgK1xuICAgICAgICAgICAgICAgIChudW1iZXIgPT09IDEgfHwgbnVtYmVyID09PSA4IHx8IG51bWJlciA+PSAyMCA/ICdzdGUnIDogJ2RlJylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBmeTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBJcmlzaCBvciBJcmlzaCBHYWVsaWMgW2dhXVxuLy8hIGF1dGhvciA6IEFuZHLDqSBTaWx2YSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hc2twdFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRocyA9IFtcbiAgICAgICAgICAgICdFYW7DoWlyJyxcbiAgICAgICAgICAgICdGZWFiaHJhJyxcbiAgICAgICAgICAgICdNw6FydGEnLFxuICAgICAgICAgICAgJ0FpYnJlw6FuJyxcbiAgICAgICAgICAgICdCZWFsdGFpbmUnLFxuICAgICAgICAgICAgJ01laXRoZWFtaCcsXG4gICAgICAgICAgICAnScO6aWwnLFxuICAgICAgICAgICAgJ0zDum5hc2EnLFxuICAgICAgICAgICAgJ01lw6FuIEbDs21oYWlyJyxcbiAgICAgICAgICAgICdEZWlyZWFkaCBGw7NtaGFpcicsXG4gICAgICAgICAgICAnU2FtaGFpbicsXG4gICAgICAgICAgICAnTm9sbGFpZycsXG4gICAgICAgIF0sXG4gICAgICAgIG1vbnRoc1Nob3J0ID0gW1xuICAgICAgICAgICAgJ0VhbicsXG4gICAgICAgICAgICAnRmVhYmgnLFxuICAgICAgICAgICAgJ03DoXJ0JyxcbiAgICAgICAgICAgICdBaWInLFxuICAgICAgICAgICAgJ0JlYWwnLFxuICAgICAgICAgICAgJ01laXRoJyxcbiAgICAgICAgICAgICdJw7ppbCcsXG4gICAgICAgICAgICAnTMO6bicsXG4gICAgICAgICAgICAnTS5GLicsXG4gICAgICAgICAgICAnRC5GLicsXG4gICAgICAgICAgICAnU2FtaCcsXG4gICAgICAgICAgICAnTm9sbCcsXG4gICAgICAgIF0sXG4gICAgICAgIHdlZWtkYXlzID0gW1xuICAgICAgICAgICAgJ0TDqSBEb21obmFpZ2gnLFxuICAgICAgICAgICAgJ0TDqSBMdWFpbicsXG4gICAgICAgICAgICAnRMOpIE3DoWlydCcsXG4gICAgICAgICAgICAnRMOpIEPDqWFkYW9pbicsXG4gICAgICAgICAgICAnRMOpYXJkYW9pbicsXG4gICAgICAgICAgICAnRMOpIGhBb2luZScsXG4gICAgICAgICAgICAnRMOpIFNhdGhhaXJuJyxcbiAgICAgICAgXSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA9IFsnRG9taCcsICdMdWFuJywgJ03DoWlydCcsICdDw6lhZCcsICdEw6lhcicsICdBb2luZScsICdTYXRoJ10sXG4gICAgICAgIHdlZWtkYXlzTWluID0gWydEbycsICdMdScsICdNw6EnLCAnQ8OpJywgJ0TDqScsICdBJywgJ1NhJ107XG5cbiAgICB2YXIgZ2EgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdnYScsIHtcbiAgICAgICAgbW9udGhzOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0OiBtb250aHNTaG9ydCxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6IHdlZWtkYXlzLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiB3ZWVrZGF5c1Nob3J0LFxuICAgICAgICB3ZWVrZGF5c01pbjogd2Vla2RheXNNaW4sXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSW5uaXUgYWddIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbQW3DoXJhY2ggYWddIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYWddIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSW5uw6kgYWddIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbc2VvIGNhaXRlXSBbYWddIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgw7Mgc2hpbicsXG4gICAgICAgICAgICBzOiAnY8O6cGxhIHNvaWNpbmQnLFxuICAgICAgICAgICAgc3M6ICclZCBzb2ljaW5kJyxcbiAgICAgICAgICAgIG06ICduw7NpbcOpYWQnLFxuICAgICAgICAgICAgbW06ICclZCBuw7NpbcOpYWQnLFxuICAgICAgICAgICAgaDogJ3VhaXIgYW4gY2hsb2lnJyxcbiAgICAgICAgICAgIGhoOiAnJWQgdWFpciBhbiBjaGxvaWcnLFxuICAgICAgICAgICAgZDogJ2zDoScsXG4gICAgICAgICAgICBkZDogJyVkIGzDoScsXG4gICAgICAgICAgICBNOiAnbcOtJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbcOtb25uYScsXG4gICAgICAgICAgICB5OiAnYmxpYWluJyxcbiAgICAgICAgICAgIHl5OiAnJWQgYmxpYWluJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KGR8bmF8bWgpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIG91dHB1dCA9IG51bWJlciA9PT0gMSA/ICdkJyA6IG51bWJlciAlIDEwID09PSAyID8gJ25hJyA6ICdtaCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ2E7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogU2NvdHRpc2ggR2FlbGljIFtnZF1cbi8vISBhdXRob3IgOiBKb24gQXNoZG93biA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qb25hc2hkb3duXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzID0gW1xuICAgICAgICAgICAgJ0FtIEZhb2lsbGVhY2gnLFxuICAgICAgICAgICAgJ0FuIEdlYXJyYW4nLFxuICAgICAgICAgICAgJ0FtIE3DoHJ0JyxcbiAgICAgICAgICAgICdBbiBHaWJsZWFuJyxcbiAgICAgICAgICAgICdBbiBDw6hpdGVhbicsXG4gICAgICAgICAgICAnQW4gdC3DkmdtaGlvcycsXG4gICAgICAgICAgICAnQW4gdC1JdWNoYXInLFxuICAgICAgICAgICAgJ0FuIEzDuW5hc3RhbCcsXG4gICAgICAgICAgICAnQW4gdC1TdWx0YWluJyxcbiAgICAgICAgICAgICdBbiBEw6BtaGFpcicsXG4gICAgICAgICAgICAnQW4gdC1TYW1oYWluJyxcbiAgICAgICAgICAgICdBbiBEw7liaGxhY2hkJyxcbiAgICAgICAgXSxcbiAgICAgICAgbW9udGhzU2hvcnQgPSBbXG4gICAgICAgICAgICAnRmFvaScsXG4gICAgICAgICAgICAnR2VhcicsXG4gICAgICAgICAgICAnTcOgcnQnLFxuICAgICAgICAgICAgJ0dpYmwnLFxuICAgICAgICAgICAgJ0PDqGl0JyxcbiAgICAgICAgICAgICfDkmdtaCcsXG4gICAgICAgICAgICAnSXVjaCcsXG4gICAgICAgICAgICAnTMO5bicsXG4gICAgICAgICAgICAnU3VsdCcsXG4gICAgICAgICAgICAnRMOgbWgnLFxuICAgICAgICAgICAgJ1NhbWgnLFxuICAgICAgICAgICAgJ0TDuWJoJyxcbiAgICAgICAgXSxcbiAgICAgICAgd2Vla2RheXMgPSBbXG4gICAgICAgICAgICAnRGlkw7JtaG5haWNoJyxcbiAgICAgICAgICAgICdEaWx1YWluJyxcbiAgICAgICAgICAgICdEaW3DoGlydCcsXG4gICAgICAgICAgICAnRGljaWFkYWluJyxcbiAgICAgICAgICAgICdEaWFyZGFvaW4nLFxuICAgICAgICAgICAgJ0RpaGFvaW5lJyxcbiAgICAgICAgICAgICdEaXNhdGhhaXJuZScsXG4gICAgICAgIF0sXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgPSBbJ0RpZCcsICdEaWwnLCAnRGltJywgJ0RpYycsICdEaWEnLCAnRGloJywgJ0RpcyddLFxuICAgICAgICB3ZWVrZGF5c01pbiA9IFsnRMOyJywgJ0x1JywgJ03DoCcsICdDaScsICdBcicsICdIYScsICdTYSddO1xuXG4gICAgdmFyIGdkID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZ2QnLCB7XG4gICAgICAgIG1vbnRoczogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydDogbW9udGhzU2hvcnQsXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiB3ZWVrZGF5cyxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogd2Vla2RheXNTaG9ydCxcbiAgICAgICAgd2Vla2RheXNNaW46IHdlZWtkYXlzTWluLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0FuLWRpdWdoIGFpZ10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tBLW3DoGlyZWFjaCBhaWddIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYWlnXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0FuLWTDqCBhaWddIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbc2VvIGNoYWlkaF0gW2FpZ10gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdhbm4gYW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJ2JobyBjaGlvbm4gJXMnLFxuICAgICAgICAgICAgczogJ2JlYWdhbiBkaW9nYW4nLFxuICAgICAgICAgICAgc3M6ICclZCBkaW9nYW4nLFxuICAgICAgICAgICAgbTogJ21pb25haWQnLFxuICAgICAgICAgICAgbW06ICclZCBtaW9uYWlkZWFuJyxcbiAgICAgICAgICAgIGg6ICd1YWlyJyxcbiAgICAgICAgICAgIGhoOiAnJWQgdWFpcmVhbicsXG4gICAgICAgICAgICBkOiAnbGF0aGEnLFxuICAgICAgICAgICAgZGQ6ICclZCBsYXRoYScsXG4gICAgICAgICAgICBNOiAnbcOsb3MnLFxuICAgICAgICAgICAgTU06ICclZCBtw6xvc2FuJyxcbiAgICAgICAgICAgIHk6ICdibGlhZGhuYScsXG4gICAgICAgICAgICB5eTogJyVkIGJsaWFkaG5hJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KGR8bmF8bWgpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIG91dHB1dCA9IG51bWJlciA9PT0gMSA/ICdkJyA6IG51bWJlciAlIDEwID09PSAyID8gJ25hJyA6ICdtaCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ2Q7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogR2FsaWNpYW4gW2dsXVxuLy8hIGF1dGhvciA6IEp1YW4gRy4gSHVydGFkbyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qdWFuZ2h1cnRhZG9cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBnbCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2dsJywge1xuICAgICAgICBtb250aHM6ICd4YW5laXJvX2ZlYnJlaXJvX21hcnpvX2FicmlsX21haW9feHXDsW9feHVsbG9fYWdvc3RvX3NldGVtYnJvX291dHVicm9fbm92ZW1icm9fZGVjZW1icm8nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ3hhbi5fZmViLl9tYXIuX2Fici5fbWFpLl94dcOxLl94dWwuX2Fnby5fc2V0Ll9vdXQuX25vdi5fZGVjLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ2RvbWluZ29fbHVuc19tYXJ0ZXNfbcOpcmNvcmVzX3hvdmVzX3ZlbnJlc19zw6FiYWRvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZG9tLl9sdW4uX21hci5fbcOpci5feG92Ll92ZW4uX3PDoWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2RvX2x1X21hX23DqV94b192ZV9zw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbaG94ZSAnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICfDoXMnIDogJ8OhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dERheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW21hw7HDoSAnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICfDoXMnIDogJ8OhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RkZGQgWycgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ8OhcycgOiAnYScpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tvbnRlICcgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ8OhJyA6ICdhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAnW29dIGRkZGQgW3Bhc2FkbyAnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICfDoXMnIDogJ2EnKSArICddIExUJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6IGZ1bmN0aW9uIChzdHIpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RyLmluZGV4T2YoJ3VuJykgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICduJyArIHN0cjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlbiAnICsgc3RyO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhc3Q6ICdoYWkgJXMnLFxuICAgICAgICAgICAgczogJ3VucyBzZWd1bmRvcycsXG4gICAgICAgICAgICBzczogJyVkIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIG06ICd1biBtaW51dG8nLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dG9zJyxcbiAgICAgICAgICAgIGg6ICd1bmhhIGhvcmEnLFxuICAgICAgICAgICAgaGg6ICclZCBob3JhcycsXG4gICAgICAgICAgICBkOiAndW4gZMOtYScsXG4gICAgICAgICAgICBkZDogJyVkIGTDrWFzJyxcbiAgICAgICAgICAgIE06ICd1biBtZXMnLFxuICAgICAgICAgICAgTU06ICclZCBtZXNlcycsXG4gICAgICAgICAgICB5OiAndW4gYW5vJyxcbiAgICAgICAgICAgIHl5OiAnJWQgYW5vcycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbDogJyVkwronLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ2w7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogS29ua2FuaSBEZXZhbmFnYXJpIHNjcmlwdCBbZ29tLWRldmFdXG4vLyEgYXV0aG9yIDogVGhlIERpc2NvdmVyZXIgOiBodHRwczovL2dpdGh1Yi5jb20vV2lraURpc2NvdmVyZXJcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICBzOiBbJ+CkpeCli+CkoeCkr+CkviDgpLjgpYXgpJXgpILgpKHgpL7gpILgpKjgpYAnLCAn4KSl4KWL4KSh4KWHIOCkuOClheCkleCkguCkoSddLFxuICAgICAgICAgICAgc3M6IFtudW1iZXIgKyAnIOCkuOClheCkleCkguCkoeCkvuCkguCkqOClgCcsIG51bWJlciArICcg4KS44KWF4KSV4KSC4KShJ10sXG4gICAgICAgICAgICBtOiBbJ+Ckj+CkleCkviDgpK7gpL/gpKPgpJ/gpL7gpKgnLCAn4KSP4KSVIOCkruCkv+CkqOClguCknyddLFxuICAgICAgICAgICAgbW06IFtudW1iZXIgKyAnIOCkruCkv+Cko+Ckn+CkvuCkguCkqOClgCcsIG51bWJlciArICcg4KSu4KS/4KSj4KSf4KS+4KSCJ10sXG4gICAgICAgICAgICBoOiBbJ+Ckj+CkleCkviDgpLXgpLDgpL7gpKgnLCAn4KSP4KSVIOCkteCksCddLFxuICAgICAgICAgICAgaGg6IFtudW1iZXIgKyAnIOCkteCksOCkvuCkguCkqOClgCcsIG51bWJlciArICcg4KS14KSw4KS+4KSCJ10sXG4gICAgICAgICAgICBkOiBbJ+Ckj+CkleCkviDgpKbgpL/gpLjgpL7gpKgnLCAn4KSP4KSVIOCkpuClgOCkuCddLFxuICAgICAgICAgICAgZGQ6IFtudW1iZXIgKyAnIOCkpuCkv+CkuOCkvuCkguCkqOClgCcsIG51bWJlciArICcg4KSm4KWA4KS4J10sXG4gICAgICAgICAgICBNOiBbJ+Ckj+CkleCkviDgpK7gpY3gpLngpK/gpKjgpY3gpK/gpL7gpKgnLCAn4KSP4KSVIOCkruCljeCkueCkr+CkqOCliyddLFxuICAgICAgICAgICAgTU06IFtudW1iZXIgKyAnIOCkruCljeCkueCkr+CkqOCljeCkr+CkvuCkqOClgCcsIG51bWJlciArICcg4KSu4KWN4KS54KSv4KSo4KWHJ10sXG4gICAgICAgICAgICB5OiBbJ+Ckj+CkleCkviDgpLXgpLDgpY3gpLjgpL7gpKgnLCAn4KSP4KSVIOCkteCksOCljeCkuCddLFxuICAgICAgICAgICAgeXk6IFtudW1iZXIgKyAnIOCkteCksOCljeCkuOCkvuCkguCkqOClgCcsIG51bWJlciArICcg4KS14KSw4KWN4KS44KS+4KSCJ10sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBpc0Z1dHVyZSA/IGZvcm1hdFtrZXldWzBdIDogZm9ybWF0W2tleV1bMV07XG4gICAgfVxuXG4gICAgdmFyIGdvbURldmEgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdnb20tZGV2YScsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICfgpJzgpL7gpKjgpYfgpLXgpL7gpLDgpYBf4KSr4KWH4KSs4KWN4KSw4KWB4KS14KS+4KSw4KWAX+CkruCkvuCksOCljeCkml/gpI/gpKrgpY3gpLDgpYDgpLJf4KSu4KWHX+CknOClguCkqF/gpJzgpYHgpLLgpK9f4KSR4KSX4KS44KWN4KSfX+CkuOCkquCljeCkn+Clh+CkguCkrOCksF/gpJHgpJXgpY3gpJ/gpYvgpKzgpLBf4KSo4KWL4KS14KWN4KS54KWH4KSC4KSs4KSwX+CkoeCkv+CkuOClh+CkguCkrOCksCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBmb3JtYXQ6ICfgpJzgpL7gpKjgpYfgpLXgpL7gpLDgpYDgpJrgpY3gpK/gpL5f4KSr4KWH4KSs4KWN4KSw4KWB4KS14KS+4KSw4KWA4KSa4KWN4KSv4KS+X+CkruCkvuCksOCljeCkmuCkvuCkmuCljeCkr+Ckvl/gpI/gpKrgpY3gpLDgpYDgpLLgpL7gpJrgpY3gpK/gpL5f4KSu4KWH4KSv4KS+4KSa4KWN4KSv4KS+X+CknOClguCkqOCkvuCkmuCljeCkr+Ckvl/gpJzgpYHgpLLgpK/gpL7gpJrgpY3gpK/gpL5f4KSR4KSX4KS44KWN4KSf4KS+4KSa4KWN4KSv4KS+X+CkuOCkquCljeCkn+Clh+CkguCkrOCksOCkvuCkmuCljeCkr+Ckvl/gpJHgpJXgpY3gpJ/gpYvgpKzgpLDgpL7gpJrgpY3gpK/gpL5f4KSo4KWL4KS14KWN4KS54KWH4KSC4KSs4KSw4KS+4KSa4KWN4KSv4KS+X+CkoeCkv+CkuOClh+CkguCkrOCksOCkvuCkmuCljeCkr+Ckvicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaXNGb3JtYXQ6IC9NTU1NKFxccykrRFtvRF0/LyxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn4KSc4KS+4KSo4KWHLl/gpKvgpYfgpKzgpY3gpLDgpYEuX+CkruCkvuCksOCljeCkml/gpI/gpKrgpY3gpLDgpYAuX+CkruClh1/gpJzgpYLgpKhf4KSc4KWB4KSyLl/gpJHgpJcuX+CkuOCkquCljeCkn+Clh+Ckgi5f4KSR4KSV4KWN4KSf4KWLLl/gpKjgpYvgpLXgpY3gpLngpYfgpIIuX+CkoeCkv+CkuOClh+Ckgi4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICfgpIbgpK/gpKTgpL7gpLBf4KS44KWL4KSu4KS+4KSwX+CkruCkguCkl+Cks+CkvuCksF/gpKzgpYHgpKfgpLXgpL7gpLBf4KSs4KS/4KSw4KWH4KS44KWN4KSk4KS+4KSwX+CkuOClgeCkleCljeCksOCkvuCksF/gpLbgpYfgpKjgpLXgpL7gpLAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgpIbgpK/gpKQuX+CkuOCli+Ckri5f4KSu4KSC4KSX4KSzLl/gpKzgpYHgpKcuX+CkrOCljeCksOClh+CkuOCljeCkpC5f4KS44KWB4KSV4KWN4KSwLl/gpLbgpYfgpKguJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+Ckhl/gpLjgpYtf4KSu4KSCX+CkrOClgV/gpKzgpY3gpLDgpYdf4KS44KWBX+CktuClhycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0gW+CkteCkvuCknOCkpOCkvuCkgl0nLFxuICAgICAgICAgICAgTFRTOiAnQSBoOm1tOnNzIFvgpLXgpL7gpJzgpKTgpL7gpIJdJyxcbiAgICAgICAgICAgIEw6ICdERC1NTS1ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgQSBoOm1tIFvgpLXgpL7gpJzgpKTgpL7gpIJdJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBNTU1NIERvLCBZWVlZLCBBIGg6bW0gW+CkteCkvuCknOCkpOCkvuCkgl0nLFxuICAgICAgICAgICAgbGxsbDogJ2RkZCwgRCBNTU0gWVlZWSwgQSBoOm1tIFvgpLXgpL7gpJzgpKTgpL7gpIJdJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4KSG4KSv4KScXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+Ckq+CkvuCksuCljeCkr+CkvuCkgl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdb4KSr4KWB4KSh4KSy4KWLXSBkZGRkWyxdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4KSV4KS+4KSyXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgpKvgpL7gpJ/gpLLgpYtdIGRkZGRbLF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMg4KSG4KSm4KWA4KSCJyxcbiAgICAgICAgICAgIHM6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBzczogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGg6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGQ6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5eTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KOCkteClh+CksCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhlIG9yZGluYWwgJ+CkteClh+CksCcgb25seSBhcHBsaWVzIHRvIGRheSBvZiB0aGUgbW9udGhcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfgpLXgpYfgpLAnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vla1xuICAgICAgICAgICAgZG95OiAzLCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIgKDcgKyAwIC0gNClcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+CksOCkvuCkpOClgHzgpLjgpJXgpL7gpLPgpYDgpIJ84KSm4KSo4KSq4KS+4KSw4KS+4KSCfOCkuOCkvuCkguCknOClhy8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+CksOCkvuCkpOClgCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDQgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CkuOCkleCkvuCks+ClgOCkgicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpKbgpKjgpKrgpL7gpLDgpL7gpIInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPiAxMiA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KS44KS+4KSC4KSc4KWHJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CksOCkvuCkpOClgCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KS44KSV4KS+4KSz4KWA4KSCJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE2KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpKbgpKjgpKrgpL7gpLDgpL7gpIInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkuOCkvuCkguCknOClhyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSw4KS+4KSk4KWAJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBnb21EZXZhO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEtvbmthbmkgTGF0aW4gc2NyaXB0IFtnb20tbGF0bl1cbi8vISBhdXRob3IgOiBUaGUgRGlzY292ZXJlciA6IGh0dHBzOi8vZ2l0aHViLmNvbS9XaWtpRGlzY292ZXJlclxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgIHM6IFsndGhvZGRlYSBzZWtvbmRhbW5pJywgJ3Rob2RkZSBzZWtvbmQnXSxcbiAgICAgICAgICAgIHNzOiBbbnVtYmVyICsgJyBzZWtvbmRhbW5pJywgbnVtYmVyICsgJyBzZWtvbmQnXSxcbiAgICAgICAgICAgIG06IFsnZWthIG1pbnRhbicsICdlayBtaW51dCddLFxuICAgICAgICAgICAgbW06IFtudW1iZXIgKyAnIG1pbnRhbW5pJywgbnVtYmVyICsgJyBtaW50YW0nXSxcbiAgICAgICAgICAgIGg6IFsnZWthIHZvcmFuJywgJ2VrIHZvciddLFxuICAgICAgICAgICAgaGg6IFtudW1iZXIgKyAnIHZvcmFtbmknLCBudW1iZXIgKyAnIHZvcmFtJ10sXG4gICAgICAgICAgICBkOiBbJ2VrYSBkaXNhbicsICdlayBkaXMnXSxcbiAgICAgICAgICAgIGRkOiBbbnVtYmVyICsgJyBkaXNhbW5pJywgbnVtYmVyICsgJyBkaXMnXSxcbiAgICAgICAgICAgIE06IFsnZWthIG1ob2luZWFuJywgJ2VrIG1ob2lubyddLFxuICAgICAgICAgICAgTU06IFtudW1iZXIgKyAnIG1ob2luZWFtbmknLCBudW1iZXIgKyAnIG1ob2luZSddLFxuICAgICAgICAgICAgeTogWydla2Egdm9yc2FuJywgJ2VrIHZvcm9zJ10sXG4gICAgICAgICAgICB5eTogW251bWJlciArICcgdm9yc2FtbmknLCBudW1iZXIgKyAnIHZvcnNhbSddLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyBmb3JtYXRba2V5XVswXSA6IGZvcm1hdFtrZXldWzFdO1xuICAgIH1cblxuICAgIHZhciBnb21MYXRuID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZ29tLWxhdG4nLCB7XG4gICAgICAgIG1vbnRoczoge1xuICAgICAgICAgICAgc3RhbmRhbG9uZTpcbiAgICAgICAgICAgICAgICAnSmFuZXJfRmVicmVyX01hcnNfQWJyaWxfTWFpX0p1bl9KdWxhaV9BZ29zdF9TZXRlbWJyX090dWJyX05vdmVtYnJfRGV6ZW1icicuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBmb3JtYXQ6ICdKYW5lcmFjaGVhX0ZlYnJlcmFjaGVhX01hcnNhY2hlYV9BYnJpbGFjaGVhX01haWFjaGVhX0p1bmFjaGVhX0p1bGFpYWNoZWFfQWdvc3RhY2hlYV9TZXRlbWJyYWNoZWFfT3R1YnJhY2hlYV9Ob3ZlbWJyYWNoZWFfRGV6ZW1icmFjaGVhJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpc0Zvcm1hdDogL01NTU0oXFxzKStEW29EXT8vLFxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdKYW4uX0ZlYi5fTWFyc19BYnIuX01haV9KdW5fSnVsLl9BZ28uX1NldC5fT3R1Ll9Ob3YuX0Rlei4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiBcIkFpdGFyX1NvbWFyX01vbmdsbGFyX0J1ZGh2YXJfQmlyZXN0YXJfU3VrcmFyX1Nvbid2YXJcIi5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnQWl0Ll9Tb20uX01vbi5fQnVkLl9CcmUuX1N1ay5fU29uLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdBaV9TbV9Nb19CdV9Ccl9TdV9Tbicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0gW3ZhenRhXScsXG4gICAgICAgICAgICBMVFM6ICdBIGg6bW06c3MgW3ZhenRhXScsXG4gICAgICAgICAgICBMOiAnREQtTU0tWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEEgaDptbSBbdmF6dGFdJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBNTU1NIERvLCBZWVlZLCBBIGg6bW0gW3ZhenRhXScsXG4gICAgICAgICAgICBsbGxsOiAnZGRkLCBEIE1NTSBZWVlZLCBBIGg6bW0gW3ZhenRhXScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0Fpel0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tGYWxlYW1dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW0Z1ZGRsb10gZGRkZFssXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0thbF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbRmF0dGxvXSBkZGRkWyxdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGFkaW0nLFxuICAgICAgICAgICAgczogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHNzOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oZXIpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIC8vIHRoZSBvcmRpbmFsICdlcicgb25seSBhcHBsaWVzIHRvIGRheSBvZiB0aGUgbW9udGhcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICdlcic7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjYXNlICdRJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrXG4gICAgICAgICAgICBkb3k6IDMsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhciAoNyArIDAgLSA0KVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvcmF0aXxzb2thbGxpbXxkb25wYXJhbXxzYW5qZS8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ3JhdGknKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdzb2thbGxpbScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdkb25wYXJhbScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+IDEyID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdzYW5qZScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdyYXRpJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzb2thbGxpbSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNikge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZG9ucGFyYW0nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NhbmplJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdyYXRpJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBnb21MYXRuO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEd1amFyYXRpIFtndV1cbi8vISBhdXRob3IgOiBLYXVzaGlrIFRoYW5raSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9LYXVzaGlrMTk4N1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICfgq6cnLFxuICAgICAgICAgICAgMjogJ+CrqCcsXG4gICAgICAgICAgICAzOiAn4KupJyxcbiAgICAgICAgICAgIDQ6ICfgq6onLFxuICAgICAgICAgICAgNTogJ+CrqycsXG4gICAgICAgICAgICA2OiAn4KusJyxcbiAgICAgICAgICAgIDc6ICfgq60nLFxuICAgICAgICAgICAgODogJ+CrricsXG4gICAgICAgICAgICA5OiAn4KuvJyxcbiAgICAgICAgICAgIDA6ICfgq6YnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn4KunJzogJzEnLFxuICAgICAgICAgICAgJ+CrqCc6ICcyJyxcbiAgICAgICAgICAgICfgq6knOiAnMycsXG4gICAgICAgICAgICAn4KuqJzogJzQnLFxuICAgICAgICAgICAgJ+Crqyc6ICc1JyxcbiAgICAgICAgICAgICfgq6wnOiAnNicsXG4gICAgICAgICAgICAn4KutJzogJzcnLFxuICAgICAgICAgICAgJ+Crric6ICc4JyxcbiAgICAgICAgICAgICfgq68nOiAnOScsXG4gICAgICAgICAgICAn4KumJzogJzAnLFxuICAgICAgICB9O1xuXG4gICAgdmFyIGd1ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZ3UnLCB7XG4gICAgICAgIG1vbnRoczogJ+CqnOCqvuCqqOCrjeCqr+CrgeCqhuCqsOCrgF/gqqvgq4fgqqzgq43gqrDgq4HgqobgqrDgq4Bf4Kqu4Kq+4Kqw4KuN4KqaX+Cqj+CqquCrjeCqsOCqv+Cqsl/gqq7gq4df4Kqc4KuC4KqoX+CqnOCrgeCqsuCqvuCqiF/gqpHgqpfgqrjgq43gqp9f4Kq44Kqq4KuN4Kqf4KuH4Kqu4KuN4Kqs4KqwX+CqkeCqleCrjeCqn+CrjeCqrOCqsF/gqqjgqrXgq4fgqq7gq43gqqzgqrBf4Kqh4Kq/4Kq44KuH4Kqu4KuN4Kqs4KqwJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfgqpzgqr7gqqjgq43gqq/gq4EuX+Cqq+Crh+CqrOCrjeCqsOCrgS5f4Kqu4Kq+4Kqw4KuN4KqaX+Cqj+CqquCrjeCqsOCqvy5f4Kqu4KuHX+CqnOCrguCqqF/gqpzgq4HgqrLgqr4uX+CqkeCqly5f4Kq44Kqq4KuN4Kqf4KuHLl/gqpHgqpXgq43gqp/gq40uX+CqqOCqteCrhy5f4Kqh4Kq/4Kq44KuHLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ+CqsOCqteCqv+CqteCqvuCqsF/gqrjgq4vgqq7gqrXgqr7gqrBf4Kqu4KqC4KqX4Kqz4Kq14Kq+4KqwX+CqrOCrgeCqp+CrjeCqteCqvuCqsF/gqpfgq4HgqrDgq4HgqrXgqr7gqrBf4Kq24KuB4KqV4KuN4Kqw4Kq14Kq+4KqwX+CqtuCqqOCqv+CqteCqvuCqsCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+CqsOCqteCqv1/gqrjgq4vgqq5f4Kqu4KqC4KqX4KqzX+CqrOCrgeCqp+CrjV/gqpfgq4HgqrDgq4Ff4Kq24KuB4KqV4KuN4KqwX+CqtuCqqOCqvycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfgqrBf4Kq44KuLX+CqruCqgl/gqqzgq4Ff4KqX4KuBX+CqtuCrgV/gqrYnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0EgaDptbSDgqrXgqr7gqpfgq43gqq/gq4cnLFxuICAgICAgICAgICAgTFRTOiAnQSBoOm1tOnNzIOCqteCqvuCql+CrjeCqr+CrhycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0g4Kq14Kq+4KqX4KuN4Kqv4KuHJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIOCqteCqvuCql+CrjeCqr+CrhycsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+CqhuCqnF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vgqpXgqr7gqrLgq4ddIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCwgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vgqpfgqofgqpXgqr7gqrLgq4ddIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+CqquCqvuCqm+CqsuCqvl0gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDgqq7gqr4nLFxuICAgICAgICAgICAgcGFzdDogJyVzIOCqquCqueCrh+CqsuCqvicsXG4gICAgICAgICAgICBzOiAn4KqF4Kqu4KuB4KqVIOCqquCqs+CriycsXG4gICAgICAgICAgICBzczogJyVkIOCquOCrh+CqleCqguCqoScsXG4gICAgICAgICAgICBtOiAn4KqP4KqVIOCqruCqv+CqqOCqv+CqnycsXG4gICAgICAgICAgICBtbTogJyVkIOCqruCqv+CqqOCqv+CqnycsXG4gICAgICAgICAgICBoOiAn4KqP4KqVIOCqleCqsuCqvuCqlScsXG4gICAgICAgICAgICBoaDogJyVkIOCqleCqsuCqvuCqlScsXG4gICAgICAgICAgICBkOiAn4KqP4KqVIOCqpuCqv+CqteCquCcsXG4gICAgICAgICAgICBkZDogJyVkIOCqpuCqv+CqteCquCcsXG4gICAgICAgICAgICBNOiAn4KqP4KqVIOCqruCqueCqv+CqqOCriycsXG4gICAgICAgICAgICBNTTogJyVkIOCqruCqueCqv+CqqOCriycsXG4gICAgICAgICAgICB5OiAn4KqP4KqVIOCqteCqsOCrjeCqtycsXG4gICAgICAgICAgICB5eTogJyVkIOCqteCqsOCrjeCqtycsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgq6fgq6jgq6ngq6rgq6vgq6zgq63gq67gq6/gq6ZdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIC8vIEd1amFyYXRpIG5vdGF0aW9uIGZvciBtZXJpZGllbXMgYXJlIHF1aXRlIGZ1enp5IGluIHByYWN0aWNlLiBXaGlsZSB0aGVyZSBleGlzdHNcbiAgICAgICAgLy8gYSByaWdpZCBub3Rpb24gb2YgYSAnUGFoYXInIGl0IGlzIG5vdCB1c2VkIGFzIHJpZ2lkbHkgaW4gbW9kZXJuIEd1amFyYXRpLlxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4Kqw4Kq+4KqkfOCqrOCqquCri+CqsHzgqrjgqrXgqr7gqrB84Kq44Kq+4KqC4KqcLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4Kqw4Kq+4KqkJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Kq44Kq14Kq+4KqwJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CqrOCqquCri+CqsCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Kq44Kq+4KqC4KqcJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CqsOCqvuCqpCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kq44Kq14Kq+4KqwJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqqzgqqrgq4vgqrAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CquOCqvuCqguCqnCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kqw4Kq+4KqkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGd1O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEhlYnJldyBbaGVdXG4vLyEgYXV0aG9yIDogVG9tZXIgQ29oZW4gOiBodHRwczovL2dpdGh1Yi5jb20vdG9tZXJcbi8vISBhdXRob3IgOiBNb3NoZSBTaW1hbnRvdiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9EZXZlbG9wbWVudElMXG4vLyEgYXV0aG9yIDogVGFsIEF0ZXIgOiBodHRwczovL2dpdGh1Yi5jb20vVGFsQXRlclxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGhlID0gbW9tZW50LmRlZmluZUxvY2FsZSgnaGUnLCB7XG4gICAgICAgIG1vbnRoczogJ9eZ16DXldeQ16hf16TXkdeo15XXkNeoX9ee16jXpV/XkNek16jXmdecX9ee15DXmV/XmdeV16DXmV/XmdeV15zXmV/XkNeV15LXldeh15hf16HXpNeY157XkdeoX9eQ15XXp9eY15XXkdeoX9eg15XXkdee15HXqF/Xk9em157XkdeoJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfXmdeg15XXs1/XpNeR16jXs1/Xnteo16Vf15DXpNeo17Nf157XkNeZX9eZ15XXoNeZX9eZ15XXnNeZX9eQ15XXktezX9eh16TXmNezX9eQ15XXp9ezX9eg15XXkdezX9eT16bXntezJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ9eo15DXqdeV159f16nXoNeZX9ep15zXmdep15lf16jXkdeZ16LXmV/Xl9ee15nXqdeZX9ep15nXqdeZX9ep15HXqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9eQ17Nf15HXs1/XktezX9eT17Nf15TXs1/XldezX9ep17MnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn15Bf15Ff15Jf15Nf15Rf15Vf16knLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBb15FdTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgW9eRXU1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBb15FdTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIGw6ICdEL00vWVlZWScsXG4gICAgICAgICAgICBsbDogJ0QgTU1NIFlZWVknLFxuICAgICAgICAgICAgbGxsOiAnRCBNTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBsbGxsOiAnZGRkLCBEIE1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb15TXmdeV150g15HWvl1MVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9ee15fXqCDXkda+XUxUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb15HXqdei15RdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb15DXqtee15XXnCDXkda+XUxUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW9eR15nXldedXSBkZGRkIFvXlNeQ15fXqNeV158g15HXqdei15RdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn15HXoteV15MgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ9ec16TXoNeZICVzJyxcbiAgICAgICAgICAgIHM6ICfXnteh16TXqCDXqdeg15nXldeqJyxcbiAgICAgICAgICAgIHNzOiAnJWQg16nXoNeZ15XXqicsXG4gICAgICAgICAgICBtOiAn15PXp9eUJyxcbiAgICAgICAgICAgIG1tOiAnJWQg15PXp9eV16onLFxuICAgICAgICAgICAgaDogJ9ep16LXlCcsXG4gICAgICAgICAgICBoaDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICfXqdei16rXmdeZ150nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDXqdei15XXqic7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZDogJ9eZ15XXnScsXG4gICAgICAgICAgICBkZDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICfXmdeV157XmdeZ150nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDXmdee15nXnSc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgTTogJ9eX15XXk9epJyxcbiAgICAgICAgICAgIE1NOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ9eX15XXk9ep15nXmdedJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcg15fXldeT16nXmdedJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB5OiAn16nXoNeUJyxcbiAgICAgICAgICAgIHl5OiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ9ep16DXqteZ15nXnSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgJSAxMCA9PT0gMCAmJiBudW1iZXIgIT09IDEwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnINep16DXlCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnINep16DXmdedJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6XG4gICAgICAgICAgICAv15DXl9eUXCLXpnzXnNek16DXlFwi16Z815DXl9eo15kg15TXpteU16jXmdeZ151815zXpNeg15kg15TXpteU16jXmdeZ151815zXpNeg15XXqiDXkdeV16fXqHzXkdeR15XXp9eofNeR16LXqNeRL2ksXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9eKNeQ15fXlFwi16Z815DXl9eo15kg15TXpteU16jXmdeZ151815HXoteo15EpJC8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9ec16TXoNeV16og15HXlden16gnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9eR15HXlden16gnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICfXnNek16DXlFwi16YnIDogJ9ec16TXoNeZINeU16bXlNeo15nXmdedJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAn15DXl9eUXCLXpicgOiAn15DXl9eo15kg15TXpteU16jXmdeZ150nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9eR16LXqNeRJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBoZTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBIaW5kaSBbaGldXG4vLyEgYXV0aG9yIDogTWF5YW5rIFNpbmdoYWwgOiBodHRwczovL2dpdGh1Yi5jb20vbWF5YW5rc2luZ2hhbFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICfgpacnLFxuICAgICAgICAgICAgMjogJ+ClqCcsXG4gICAgICAgICAgICAzOiAn4KWpJyxcbiAgICAgICAgICAgIDQ6ICfgpaonLFxuICAgICAgICAgICAgNTogJ+ClqycsXG4gICAgICAgICAgICA2OiAn4KWsJyxcbiAgICAgICAgICAgIDc6ICfgpa0nLFxuICAgICAgICAgICAgODogJ+ClricsXG4gICAgICAgICAgICA5OiAn4KWvJyxcbiAgICAgICAgICAgIDA6ICfgpaYnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn4KWnJzogJzEnLFxuICAgICAgICAgICAgJ+ClqCc6ICcyJyxcbiAgICAgICAgICAgICfgpaknOiAnMycsXG4gICAgICAgICAgICAn4KWqJzogJzQnLFxuICAgICAgICAgICAgJ+Clqyc6ICc1JyxcbiAgICAgICAgICAgICfgpawnOiAnNicsXG4gICAgICAgICAgICAn4KWtJzogJzcnLFxuICAgICAgICAgICAgJ+Clric6ICc4JyxcbiAgICAgICAgICAgICfgpa8nOiAnOScsXG4gICAgICAgICAgICAn4KWmJzogJzAnLFxuICAgICAgICB9LFxuICAgICAgICBtb250aHNQYXJzZSA9IFtcbiAgICAgICAgICAgIC9e4KSc4KSoL2ksXG4gICAgICAgICAgICAvXuCkq+CkvOCksHzgpKvgpLAvaSxcbiAgICAgICAgICAgIC9e4KSu4KS+4KSw4KWN4KSaL2ksXG4gICAgICAgICAgICAvXuCkheCkquCljeCksOCliC9pLFxuICAgICAgICAgICAgL17gpK7gpIgvaSxcbiAgICAgICAgICAgIC9e4KSc4KWC4KSoL2ksXG4gICAgICAgICAgICAvXuCknOClgeCksi9pLFxuICAgICAgICAgICAgL17gpIXgpJcvaSxcbiAgICAgICAgICAgIC9e4KS44KS/4KSk4KSCfOCkuOCkv+CkpC9pLFxuICAgICAgICAgICAgL17gpIXgpJXgpY3gpJ/gpYIvaSxcbiAgICAgICAgICAgIC9e4KSo4KS1fOCkqOCkteCkgi9pLFxuICAgICAgICAgICAgL17gpKbgpL/gpLjgpIJ84KSm4KS/4KS4L2ksXG4gICAgICAgIF0sXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXuCknOCkqC9pLFxuICAgICAgICAgICAgL17gpKvgpLzgpLAvaSxcbiAgICAgICAgICAgIC9e4KSu4KS+4KSw4KWN4KSaL2ksXG4gICAgICAgICAgICAvXuCkheCkquCljeCksOCliC9pLFxuICAgICAgICAgICAgL17gpK7gpIgvaSxcbiAgICAgICAgICAgIC9e4KSc4KWC4KSoL2ksXG4gICAgICAgICAgICAvXuCknOClgeCksi9pLFxuICAgICAgICAgICAgL17gpIXgpJcvaSxcbiAgICAgICAgICAgIC9e4KS44KS/4KSkL2ksXG4gICAgICAgICAgICAvXuCkheCkleCljeCkn+Clgi9pLFxuICAgICAgICAgICAgL17gpKjgpLUvaSxcbiAgICAgICAgICAgIC9e4KSm4KS/4KS4L2ksXG4gICAgICAgIF07XG5cbiAgICB2YXIgaGkgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdoaScsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICfgpJzgpKjgpLXgpLDgpYBf4KSr4KS84KSw4KS14KSw4KWAX+CkruCkvuCksOCljeCkml/gpIXgpKrgpY3gpLDgpYjgpLJf4KSu4KSIX+CknOClguCkqF/gpJzgpYHgpLLgpL7gpIhf4KSF4KSX4KS44KWN4KSkX+CkuOCkv+CkpOCkruCljeCkrOCksF/gpIXgpJXgpY3gpJ/gpYLgpKzgpLBf4KSo4KS14KSu4KWN4KSs4KSwX+CkpuCkv+CkuOCkruCljeCkrOCksCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhbmRhbG9uZTpcbiAgICAgICAgICAgICAgICAn4KSc4KSo4KS14KSw4KWAX+Ckq+CksOCkteCksOClgF/gpK7gpL7gpLDgpY3gpJpf4KSF4KSq4KWN4KSw4KWI4KSyX+CkruCkiF/gpJzgpYLgpKhf4KSc4KWB4KSy4KS+4KSIX+CkheCkl+CkuOCljeCkpF/gpLjgpL/gpKTgpILgpKzgpLBf4KSF4KSV4KWN4KSf4KWC4KSs4KSwX+CkqOCkteCkguCkrOCksF/gpKbgpL/gpLjgpILgpKzgpLAnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfgpJzgpKguX+Ckq+CkvOCksC5f4KSu4KS+4KSw4KWN4KSaX+CkheCkquCljeCksOCliC5f4KSu4KSIX+CknOClguCkqF/gpJzgpYHgpLIuX+CkheCkly5f4KS44KS/4KSkLl/gpIXgpJXgpY3gpJ/gpYIuX+CkqOCktS5f4KSm4KS/4KS4Licuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICfgpLDgpLXgpL/gpLXgpL7gpLBf4KS44KWL4KSu4KS14KS+4KSwX+CkruCkguCkl+CksuCkteCkvuCksF/gpKzgpYHgpKfgpLXgpL7gpLBf4KSX4KWB4KSw4KWC4KS14KS+4KSwX+CktuClgeCkleCljeCksOCkteCkvuCksF/gpLbgpKjgpL/gpLXgpL7gpLAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgpLDgpLXgpL9f4KS44KWL4KSuX+CkruCkguCkl+Cksl/gpKzgpYHgpKdf4KSX4KWB4KSw4KWCX+CktuClgeCkleCljeCksF/gpLbgpKjgpL8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4KSwX+CkuOCli1/gpK7gpIJf4KSs4KWBX+Ckl+ClgV/gpLbgpYFf4KS2Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0g4KSs4KSc4KWHJyxcbiAgICAgICAgICAgIExUUzogJ0EgaDptbTpzcyDgpKzgpJzgpYcnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSwgQSBoOm1tIOCkrOCknOClhycsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSDgpKzgpJzgpYcnLFxuICAgICAgICB9LFxuXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogc2hvcnRNb250aHNQYXJzZSxcblxuICAgICAgICBtb250aHNSZWdleDpcbiAgICAgICAgICAgIC9eKOCknOCkqOCkteCksOClgHzgpJzgpKhcXC4/fOCkq+CkvOCksOCkteCksOClgHzgpKvgpLDgpLXgpLDgpYB84KSr4KS84KSwXFwuP3zgpK7gpL7gpLDgpY3gpJo/fOCkheCkquCljeCksOCliOCksnzgpIXgpKrgpY3gpLDgpYhcXC4/fOCkruCkiD984KSc4KWC4KSoP3zgpJzgpYHgpLLgpL7gpIh84KSc4KWB4KSyXFwuP3zgpIXgpJfgpLjgpY3gpKR84KSF4KSXXFwuP3zgpLjgpL/gpKTgpK7gpY3gpKzgpLB84KS44KS/4KSk4KSC4KSs4KSwfOCkuOCkv+CkpFxcLj984KSF4KSV4KWN4KSf4KWC4KSs4KSwfOCkheCkleCljeCkn+ClglxcLj984KSo4KS14KSu4KWN4KSs4KSwfOCkqOCkteCkguCkrOCksHzgpKjgpLVcXC4/fOCkpuCkv+CkuOCkruCljeCkrOCksHzgpKbgpL/gpLjgpILgpKzgpLB84KSm4KS/4KS4XFwuPykvaSxcblxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OlxuICAgICAgICAgICAgL14o4KSc4KSo4KS14KSw4KWAfOCknOCkqFxcLj984KSr4KS84KSw4KS14KSw4KWAfOCkq+CksOCkteCksOClgHzgpKvgpLzgpLBcXC4/fOCkruCkvuCksOCljeCkmj984KSF4KSq4KWN4KSw4KWI4KSyfOCkheCkquCljeCksOCliFxcLj984KSu4KSIP3zgpJzgpYLgpKg/fOCknOClgeCksuCkvuCkiHzgpJzgpYHgpLJcXC4/fOCkheCkl+CkuOCljeCkpHzgpIXgpJdcXC4/fOCkuOCkv+CkpOCkruCljeCkrOCksHzgpLjgpL/gpKTgpILgpKzgpLB84KS44KS/4KSkXFwuP3zgpIXgpJXgpY3gpJ/gpYLgpKzgpLB84KSF4KSV4KWN4KSf4KWCXFwuP3zgpKjgpLXgpK7gpY3gpKzgpLB84KSo4KS14KSC4KSs4KSwfOCkqOCktVxcLj984KSm4KS/4KS44KSu4KWN4KSs4KSwfOCkpuCkv+CkuOCkguCkrOCksHzgpKbgpL/gpLhcXC4/KS9pLFxuXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4OlxuICAgICAgICAgICAgL14o4KSc4KSo4KS14KSw4KWAP3zgpKvgpLzgpLDgpLXgpLDgpYB84KSr4KSw4KS14KSw4KWAP3zgpK7gpL7gpLDgpY3gpJo/fOCkheCkquCljeCksOCliOCksj984KSu4KSIP3zgpJzgpYLgpKg/fOCknOClgeCksuCkvuCkiD984KSF4KSX4KS44KWN4KSkP3zgpLjgpL/gpKTgpK7gpY3gpKzgpLB84KS44KS/4KSk4KSC4KSs4KSwfOCkuOCkv+CkpD9cXC4/fOCkheCkleCljeCkn+ClguCkrOCksHzgpIXgpJXgpY3gpJ/gpYJcXC4/fOCkqOCkteCkruCljeCkrOCksHzgpKjgpLXgpILgpKzgpLA/fOCkpuCkv+CkuOCkruCljeCkrOCksHzgpKbgpL/gpLjgpILgpKzgpLA/KS9pLFxuXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6XG4gICAgICAgICAgICAvXijgpJzgpKhcXC4/fOCkq+CkvOCksFxcLj984KSu4KS+4KSw4KWN4KSaP3zgpIXgpKrgpY3gpLDgpYhcXC4/fOCkruCkiD984KSc4KWC4KSoP3zgpJzgpYHgpLJcXC4/fOCkheCkl1xcLj984KS44KS/4KSkXFwuP3zgpIXgpJXgpY3gpJ/gpYJcXC4/fOCkqOCktVxcLj984KSm4KS/4KS4XFwuPykvaSxcblxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgpIbgpJxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4KSV4KSyXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4KSV4KSyXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgpKrgpL/gpJvgpLLgpYddIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg4KSu4KWH4KSCJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDgpKrgpLngpLLgpYcnLFxuICAgICAgICAgICAgczogJ+CkleClgeCkmyDgpLngpYAg4KSV4KWN4KS34KSjJyxcbiAgICAgICAgICAgIHNzOiAnJWQg4KS44KWH4KSV4KSC4KShJyxcbiAgICAgICAgICAgIG06ICfgpI/gpJUg4KSu4KS/4KSo4KSfJyxcbiAgICAgICAgICAgIG1tOiAnJWQg4KSu4KS/4KSo4KSfJyxcbiAgICAgICAgICAgIGg6ICfgpI/gpJUg4KSY4KSC4KSf4KS+JyxcbiAgICAgICAgICAgIGhoOiAnJWQg4KSY4KSC4KSf4KWHJyxcbiAgICAgICAgICAgIGQ6ICfgpI/gpJUg4KSm4KS/4KSoJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4KSm4KS/4KSoJyxcbiAgICAgICAgICAgIE06ICfgpI/gpJUg4KSu4KS54KWA4KSo4KWHJyxcbiAgICAgICAgICAgIE1NOiAnJWQg4KSu4KS54KWA4KSo4KWHJyxcbiAgICAgICAgICAgIHk6ICfgpI/gpJUg4KS14KSw4KWN4KS3JyxcbiAgICAgICAgICAgIHl5OiAnJWQg4KS14KSw4KWN4KS3JyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Clp+ClqOClqeClquClq+ClrOClreClruClr+Clpl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gSGluZGkgbm90YXRpb24gZm9yIG1lcmlkaWVtcyBhcmUgcXVpdGUgZnV6enkgaW4gcHJhY3RpY2UuIFdoaWxlIHRoZXJlIGV4aXN0c1xuICAgICAgICAvLyBhIHJpZ2lkIG5vdGlvbiBvZiBhICdQYWhhcicgaXQgaXMgbm90IHVzZWQgYXMgcmlnaWRseSBpbiBtb2Rlcm4gSGluZGkuXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gpLDgpL7gpKR84KS44KWB4KSs4KS5fOCkpuCli+CkquCkueCksHzgpLbgpL7gpK4vLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgpLDgpL7gpKQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpLjgpYHgpKzgpLknKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KSm4KWL4KSq4KS54KSwJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpLbgpL7gpK4nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSw4KS+4KSkJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLjgpYHgpKzgpLknO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkpuCli+CkquCkueCksCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KS24KS+4KSuJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLDgpL7gpKQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gaGk7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQ3JvYXRpYW4gW2hyXVxuLy8hIGF1dGhvciA6IEJvamFuIE1hcmtvdmnEhyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9ibWFya292aWNcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVtYmVyICsgJyAnO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzZWt1bmRhJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2VrdW5kZSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzZWt1bmRpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2plZG5hIG1pbnV0YScgOiAnamVkbmUgbWludXRlJztcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWludXRhJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWludXRlJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21pbnV0YSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdqZWRhbiBzYXQnIDogJ2plZG5vZyBzYXRhJztcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2F0JztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2F0YSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzYXRpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZGFuJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2RhbmEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtamVzZWMnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtamVzZWNhJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21qZXNlY2knO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdnb2RpbmEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdnb2RpbmUnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZ29kaW5hJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBociA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2hyJywge1xuICAgICAgICBtb250aHM6IHtcbiAgICAgICAgICAgIGZvcm1hdDogJ3NpamXEjW5qYV92ZWxqYcSNZV9vxb51amthX3RyYXZuamFfc3ZpYm5qYV9saXBuamFfc3JwbmphX2tvbG92b3phX3J1am5hX2xpc3RvcGFkYV9zdHVkZW5vZ2FfcHJvc2luY2EnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6XG4gICAgICAgICAgICAgICAgJ3NpamXEjWFual92ZWxqYcSNYV9vxb51amFrX3RyYXZhbmpfc3ZpYmFual9saXBhbmpfc3JwYW5qX2tvbG92b3pfcnVqYW5fbGlzdG9wYWRfc3R1ZGVuaV9wcm9zaW5hYycuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ3Npai5fdmVsai5fb8W+dS5fdHJhLl9zdmkuX2xpcC5fc3JwLl9rb2wuX3J1ai5fbGlzLl9zdHUuX3Byby4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICduZWRqZWxqYV9wb25lZGplbGpha191dG9yYWtfc3JpamVkYV/EjWV0dnJ0YWtfcGV0YWtfc3Vib3RhJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnbmVkLl9wb24uX3V0by5fc3JpLl/EjWV0Ll9wZXQuX3N1Yi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnbmVfcG9fdXRfc3JfxI1lX3BlX3N1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0RvIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEbyBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRG8gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tkYW5hcyB1XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW3N1dHJhIHVdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtuZWRqZWxqdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3NyaWplZHVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtzdWJvdHVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIGRkZGQgW3VdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogJ1tqdcSNZXIgdV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJvxaFsdV0gW25lZGplbGp1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcm/FoWx1XSBbc3JpamVkdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJvxaFsZV0gW3N1Ym90ZV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJvxaFsaV0gZGRkZCBbdV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdwcmlqZSAlcycsXG4gICAgICAgICAgICBzOiAncGFyIHNla3VuZGknLFxuICAgICAgICAgICAgc3M6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZDogJ2RhbicsXG4gICAgICAgICAgICBkZDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTTogJ21qZXNlYycsXG4gICAgICAgICAgICBNTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeTogJ2dvZGludScsXG4gICAgICAgICAgICB5eTogdHJhbnNsYXRlLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGhyO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEh1bmdhcmlhbiBbaHVdXG4vLyEgYXV0aG9yIDogQWRhbSBCcnVubmVyIDogaHR0cHM6Ly9naXRodWIuY29tL2FkYW1icnVubmVyXG4vLyEgYXV0aG9yIDogUGV0ZXIgVmlzenQgIDogaHR0cHM6Ly9naXRodWIuY29tL3Bhc3NhdGd0XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgd2Vla0VuZGluZ3MgPVxuICAgICAgICAndmFzw6FybmFwIGjDqXRmxZFuIGtlZGRlbiBzemVyZMOhbiBjc8O8dMO2cnTDtmvDtm4gcMOpbnRla2VuIHN6b21iYXRvbicuc3BsaXQoJyAnKTtcbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBudW0gPSBudW1iZXI7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeFxuICAgICAgICAgICAgICAgICAgICA/ICduw6low6FueSBtw6Fzb2RwZXJjJ1xuICAgICAgICAgICAgICAgICAgICA6ICduw6low6FueSBtw6Fzb2RwZXJjZSc7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bSArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4KVxuICAgICAgICAgICAgICAgICAgICA/ICcgbcOhc29kcGVyYydcbiAgICAgICAgICAgICAgICAgICAgOiAnIG3DoXNvZHBlcmNlJztcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJldHVybiAnZWd5JyArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyBwZXJjJyA6ICcgcGVyY2UnKTtcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIHBlcmMnIDogJyBwZXJjZScpO1xuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlZ3knICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIMOzcmEnIDogJyDDs3LDoWphJyk7XG4gICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bSArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyDDs3JhJyA6ICcgw7Nyw6FqYScpO1xuICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlZ3knICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIG5hcCcgOiAnIG5hcGphJyk7XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bSArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyBuYXAnIDogJyBuYXBqYScpO1xuICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlZ3knICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIGjDs25hcCcgOiAnIGjDs25hcGphJyk7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bSArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyBow7NuYXAnIDogJyBow7NuYXBqYScpO1xuICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlZ3knICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIMOpdicgOiAnIMOpdmUnKTtcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIMOpdicgOiAnIMOpdmUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHdlZWsoaXNGdXR1cmUpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChpc0Z1dHVyZSA/ICcnIDogJ1ttw7psdF0gJykgK1xuICAgICAgICAgICAgJ1snICtcbiAgICAgICAgICAgIHdlZWtFbmRpbmdzW3RoaXMuZGF5KCldICtcbiAgICAgICAgICAgICddIExUWy1rb3JdJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHZhciBodSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2h1Jywge1xuICAgICAgICBtb250aHM6ICdqYW51w6FyX2ZlYnJ1w6FyX23DoXJjaXVzX8OhcHJpbGlzX23DoWp1c19qw7puaXVzX2rDumxpdXNfYXVndXN6dHVzX3N6ZXB0ZW1iZXJfb2t0w7NiZXJfbm92ZW1iZXJfZGVjZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ2phbi5fZmViLl9tw6FyYy5fw6Fwci5fbcOhai5fasO6bi5fasO6bC5fYXVnLl9zemVwdC5fb2t0Ll9ub3YuX2RlYy4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICd2YXPDoXJuYXBfaMOpdGbFkV9rZWRkX3N6ZXJkYV9jc8O8dMO2cnTDtmtfcMOpbnRla19zem9tYmF0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAndmFzX2jDqXRfa2VkZF9zemVfY3PDvHRfcMOpbl9zem8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAndl9oX2tfc3plX2NzX3Bfc3pvJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ1lZWVkuTU0uREQuJyxcbiAgICAgICAgICAgIExMOiAnWVlZWS4gTU1NTSBELicsXG4gICAgICAgICAgICBMTEw6ICdZWVlZLiBNTU1NIEQuIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ1lZWVkuIE1NTU0gRC4sIGRkZGQgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9kZXxkdS9pLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dC5jaGFyQXQoMSkudG9Mb3dlckNhc2UoKSA9PT0gJ3UnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID09PSB0cnVlID8gJ2RlJyA6ICdERSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID09PSB0cnVlID8gJ2R1JyA6ICdEVSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW21hXSBMVFsta29yXScsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2hvbG5hcF0gTFRbLWtvcl0nLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2Vlay5jYWxsKHRoaXMsIHRydWUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbdGVnbmFwXSBMVFsta29yXScsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB3ZWVrLmNhbGwodGhpcywgZmFsc2UpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMgbcO6bHZhJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcycsXG4gICAgICAgICAgICBzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBzczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkZDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTU06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gaHU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQXJtZW5pYW4gW2h5LWFtXVxuLy8hIGF1dGhvciA6IEFybWVuZGFyYWJ5YW4gOiBodHRwczovL2dpdGh1Yi5jb20vYXJtZW5kYXJhYnlhblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGh5QW0gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdoeS1hbScsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICfVsNW41oLVttW+1aHWgNWrX9aD1aXVv9aA1b7VodaA1atf1bTVodaA1b/Vq1/VodW61oDVq9Ws1atf1bTVodW11avVvdWrX9Ww1bjWgtW21avVvdWrX9Ww1bjWgtWs1avVvdWrX9aF1aPVuNW91b/VuNW91atf1b3VpdW61b/VpdW01aLVpdaA1atf1bDVuNWv1b/VpdW01aLVpdaA1atf1bbVuNW11aXVtNWi1aXWgNWrX9Wk1aXVr9W/1aXVtNWi1aXWgNWrJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICfVsNW41oLVttW+1aHWgF/Wg9Wl1b/WgNW+1aHWgF/VtNWh1oDVv1/VodW61oDVq9WsX9W01aHVtdWr1b1f1bDVuNaC1bbVq9W9X9Ww1bjWgtWs1avVvV/WhdWj1bjVvdW/1bjVvV/VvdWl1brVv9Wl1bTVotWl1oBf1bDVuNWv1b/VpdW01aLVpdaAX9W21bjVtdWl1bTVotWl1oBf1aTVpdWv1b/VpdW01aLVpdaAJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfVsNW21b5f1oPVv9aAX9W01oDVv1/VodW61oBf1bTVtdW9X9Ww1bbVvV/VsNWs1b1f1oXVo9W9X9W91brVv1/VsNWv1b9f1bbVtNWiX9Wk1a/Vvycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAn1a/Vq9aA1aHVr9WrX9Wl1oDVr9W41oLVt9Wh1aLVqdWrX9Wl1oDVpdaE1bfVodWi1anVq1/VudW41oDVpdaE1bfVodWi1anVq1/VsNWr1bbVo9W31aHVotWp1atf1bjWgtaA1aLVodWpX9W31aHVotWh1aknLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9Wv1oDVr1/VpdaA1a9f1aXWgNaEX9W51oDWhF/VsNW21aNf1bjWgtaA1aJf1bfVotWpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9Wv1oDVr1/VpdaA1a9f1aXWgNaEX9W51oDWhF/VsNW21aNf1bjWgtaA1aJf1bfVotWpJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZINWpLicsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSDVqS4sIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSDVqS4sIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb1aHVtdW91oXWgF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vVvtWh1bLVqF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vVpdaA1aXVr10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RkZGQgW9aF1oDVqCDVqtWh1bTVqF0gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdb1aHVttaB1aHVrl0gZGRkZCBb1oXWgNWoINWq1aHVtNWoXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDVsNWl1b/VuCcsXG4gICAgICAgICAgICBwYXN0OiAnJXMg1aHVvNWh1bsnLFxuICAgICAgICAgICAgczogJ9W01asg1oTVodW21asg1b7VodW11oDVr9W11aHVticsXG4gICAgICAgICAgICBzczogJyVkINW+1aHVtdaA1a/VtdWh1bYnLFxuICAgICAgICAgICAgbTogJ9aA1bjVutWlJyxcbiAgICAgICAgICAgIG1tOiAnJWQg1oDVuNW61aUnLFxuICAgICAgICAgICAgaDogJ9Wq1aHVtCcsXG4gICAgICAgICAgICBoaDogJyVkINWq1aHVtCcsXG4gICAgICAgICAgICBkOiAn1oXWgCcsXG4gICAgICAgICAgICBkZDogJyVkINaF1oAnLFxuICAgICAgICAgICAgTTogJ9Wh1bTVq9W9JyxcbiAgICAgICAgICAgIE1NOiAnJWQg1aHVtNWr1b0nLFxuICAgICAgICAgICAgeTogJ9W/1aHWgNWrJyxcbiAgICAgICAgICAgIHl5OiAnJWQg1b/VodaA1asnLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv1aPVq9W31aXWgNW+1aF81aHVvNWh1b7VuNW/1b7VoXzWgdWl1oDVpdWv1b7VoXzVpdaA1aXVr9W41bXVodW2LyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL14o1oHVpdaA1aXVr9W+1aF81aXWgNWl1a/VuNW11aHVtikkLy50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Wj1avVt9Wl1oDVvtWhJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfVodW81aHVvtW41b/VvtWhJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfWgdWl1oDVpdWv1b7VoSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn1aXWgNWl1a/VuNW11aHVtic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfXxcXGR7MSwyfS0o1avVtnzWgNWkKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERG8nOlxuICAgICAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3Vq9W2JztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3WgNWkJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gaHlBbTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBJbmRvbmVzaWFuIFtpZF1cbi8vISBhdXRob3IgOiBNb2hhbW1hZCBTYXRyaW8gVXRvbW8gOiBodHRwczovL2dpdGh1Yi5jb20vdHlva1xuLy8hIHJlZmVyZW5jZTogaHR0cDovL2lkLndpa2lzb3VyY2Uub3JnL3dpa2kvUGVkb21hbl9VbXVtX0VqYWFuX0JhaGFzYV9JbmRvbmVzaWFfeWFuZ19EaXNlbXB1cm5ha2FuXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgaWQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdpZCcsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyaV9GZWJydWFyaV9NYXJldF9BcHJpbF9NZWlfSnVuaV9KdWxpX0FndXN0dXNfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGVzZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0ZlYl9NYXJfQXByX01laV9KdW5fSnVsX0FndF9TZXBfT2t0X05vdl9EZXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnTWluZ2d1X1NlbmluX1NlbGFzYV9SYWJ1X0thbWlzX0p1bWF0X1NhYnR1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnTWluX1Nlbl9TZWxfUmFiX0thbV9KdW1fU2FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ01nX1NuX1NsX1JiX0ttX0ptX1NiJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISC5tbScsXG4gICAgICAgICAgICBMVFM6ICdISC5tbS5zcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvcGFnaXxzaWFuZ3xzb3JlfG1hbGFtLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAncGFnaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdzaWFuZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnc29yZScgfHwgbWVyaWRpZW0gPT09ICdtYWxhbScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAncGFnaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NpYW5nJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxOSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnc29yZSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnbWFsYW0nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tIYXJpIGluaSBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tCZXNvayBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tLZW1hcmluIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW2xhbHUgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnZGFsYW0gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHlhbmcgbGFsdScsXG4gICAgICAgICAgICBzOiAnYmViZXJhcGEgZGV0aWsnLFxuICAgICAgICAgICAgc3M6ICclZCBkZXRpaycsXG4gICAgICAgICAgICBtOiAnc2VtZW5pdCcsXG4gICAgICAgICAgICBtbTogJyVkIG1lbml0JyxcbiAgICAgICAgICAgIGg6ICdzZWphbScsXG4gICAgICAgICAgICBoaDogJyVkIGphbScsXG4gICAgICAgICAgICBkOiAnc2VoYXJpJyxcbiAgICAgICAgICAgIGRkOiAnJWQgaGFyaScsXG4gICAgICAgICAgICBNOiAnc2VidWxhbicsXG4gICAgICAgICAgICBNTTogJyVkIGJ1bGFuJyxcbiAgICAgICAgICAgIHk6ICdzZXRhaHVuJyxcbiAgICAgICAgICAgIHl5OiAnJWQgdGFodW4nLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gaWQ7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogSWNlbGFuZGljIFtpc11cbi8vISBhdXRob3IgOiBIaW5yaWsgw5ZybiBTaWd1csOwc3NvbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9oaW5yaWtcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHBsdXJhbChuKSB7XG4gICAgICAgIGlmIChuICUgMTAwID09PSAxMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAobiAlIDEwID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG51bWJlciArICcgJztcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlXG4gICAgICAgICAgICAgICAgICAgID8gJ25va2tyYXIgc2Vrw7puZHVyJ1xuICAgICAgICAgICAgICAgICAgICA6ICdub2trcnVtIHNla8O6bmR1bSc7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgaWYgKHBsdXJhbChudW1iZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnc2Vrw7puZHVyJyA6ICdzZWvDum5kdW0nKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ3Nla8O6bmRhJztcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ23DrW7DunRhJyA6ICdtw61uw7p0dSc7XG4gICAgICAgICAgICBjYXNlICdtbSc6XG4gICAgICAgICAgICAgICAgaWYgKHBsdXJhbChudW1iZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKyAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtw61uw7p0dXInIDogJ23DrW7DunR1bScpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbcOtbsO6dGEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ23DrW7DunR1JztcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICBpZiAocGx1cmFsKG51bWJlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArXG4gICAgICAgICAgICAgICAgICAgICAgICAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2tsdWtrdXN0dW5kaXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAna2x1a2t1c3R1bmR1bScpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAna2x1a2t1c3R1bmQnO1xuICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdkYWd1cic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdkYWcnIDogJ2RlZ2knO1xuICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgIGlmIChwbHVyYWwobnVtYmVyKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdkYWdhcic7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChpc0Z1dHVyZSA/ICdkYWdhJyA6ICdkw7ZndW0nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdkYWd1cic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAoaXNGdXR1cmUgPyAnZGFnJyA6ICdkZWdpJyk7XG4gICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ23DoW51w7B1cic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdtw6FudcOwJyA6ICdtw6FudcOwaSc7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgaWYgKHBsdXJhbChudW1iZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ23DoW51w7Bpcic7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChpc0Z1dHVyZSA/ICdtw6FudcOwaScgOiAnbcOhbnXDsHVtJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbcOhbnXDsHVyJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChpc0Z1dHVyZSA/ICdtw6FudcOwJyA6ICdtw6FudcOwaScpO1xuICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnw6FyJyA6ICfDoXJpJztcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICBpZiAocGx1cmFsKG51bWJlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ8OhcicgOiAnw6FydW0nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ8OhcicgOiAnw6FyaScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGlzID0gbW9tZW50LmRlZmluZUxvY2FsZSgnaXMnLCB7XG4gICAgICAgIG1vbnRoczogJ2phbsO6YXJfZmVicsO6YXJfbWFyc19hcHLDrWxfbWHDrV9qw7puw61fasO6bMOtX8OhZ8O6c3Rfc2VwdGVtYmVyX29rdMOzYmVyX27Ds3ZlbWJlcl9kZXNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW5fZmViX21hcl9hcHJfbWHDrV9qw7puX2rDumxfw6Fnw7pfc2VwX29rdF9uw7N2X2Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnc3VubnVkYWd1cl9tw6FudWRhZ3VyX8O+cmnDsGp1ZGFndXJfbWnDsHZpa3VkYWd1cl9maW1tdHVkYWd1cl9mw7ZzdHVkYWd1cl9sYXVnYXJkYWd1cicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnc3VuX23DoW5fw75yaV9tacOwX2ZpbV9mw7ZzX2xhdScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTdV9Nw6Ffw55yX01pX0ZpX0bDtl9MYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBba2wuXSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBELiBNTU1NIFlZWVkgW2tsLl0gSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW8OtIGRhZyBrbC5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbw6EgbW9yZ3VuIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtrbC5dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbw60gZ8OmciBrbC5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW3PDrcOwYXN0YV0gZGRkZCBba2wuXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2VmdGlyICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdmeXJpciAlcyBzw63DsGFuJyxcbiAgICAgICAgICAgIHM6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHNzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaDogJ2tsdWtrdXN0dW5kJyxcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkZDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTU06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gaXM7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogSXRhbGlhbiAoU3dpdHplcmxhbmQpIFtpdC1jaF1cbi8vISBhdXRob3IgOiB4ZmggOiBodHRwczovL2dpdGh1Yi5jb20veGZoXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgaXRDaCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2l0LWNoJywge1xuICAgICAgICBtb250aHM6ICdnZW5uYWlvX2ZlYmJyYWlvX21hcnpvX2FwcmlsZV9tYWdnaW9fZ2l1Z25vX2x1Z2xpb19hZ29zdG9fc2V0dGVtYnJlX290dG9icmVfbm92ZW1icmVfZGljZW1icmUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnZ2VuX2ZlYl9tYXJfYXByX21hZ19naXVfbHVnX2Fnb19zZXRfb3R0X25vdl9kaWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnZG9tZW5pY2FfbHVuZWTDrF9tYXJ0ZWTDrF9tZXJjb2xlZMOsX2dpb3ZlZMOsX3ZlbmVyZMOsX3NhYmF0bycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2RvbV9sdW5fbWFyX21lcl9naW9fdmVuX3NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdkb19sdV9tYV9tZV9naV92ZV9zYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW09nZ2kgYWxsZV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tEb21hbmkgYWxsZV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthbGxlXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0llcmkgYWxsZV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbGEgc2NvcnNhXSBkZGRkIFthbGxlXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tsbyBzY29yc29dIGRkZGQgW2FsbGVdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6IGZ1bmN0aW9uIChzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgvXlswLTldLiskLy50ZXN0KHMpID8gJ3RyYScgOiAnaW4nKSArICcgJyArIHM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFzdDogJyVzIGZhJyxcbiAgICAgICAgICAgIHM6ICdhbGN1bmkgc2Vjb25kaScsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZGknLFxuICAgICAgICAgICAgbTogJ3VuIG1pbnV0bycsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0aScsXG4gICAgICAgICAgICBoOiBcInVuJ29yYVwiLFxuICAgICAgICAgICAgaGg6ICclZCBvcmUnLFxuICAgICAgICAgICAgZDogJ3VuIGdpb3JubycsXG4gICAgICAgICAgICBkZDogJyVkIGdpb3JuaScsXG4gICAgICAgICAgICBNOiAndW4gbWVzZScsXG4gICAgICAgICAgICBNTTogJyVkIG1lc2knLFxuICAgICAgICAgICAgeTogJ3VuIGFubm8nLFxuICAgICAgICAgICAgeXk6ICclZCBhbm5pJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsOiAnJWTCuicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBpdENoO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEl0YWxpYW4gW2l0XVxuLy8hIGF1dGhvciA6IExvcmVuem8gOiBodHRwczovL2dpdGh1Yi5jb20vYWxpZW1cbi8vISBhdXRob3I6IE1hdHRpYSBMYXJlbnRpczogaHR0cHM6Ly9naXRodWIuY29tL25vc3RhbGdpYXpcbi8vISBhdXRob3I6IE1hcmNvIDogaHR0cHM6Ly9naXRodWIuY29tL01hbmZyZTk4XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgaXQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdpdCcsIHtcbiAgICAgICAgbW9udGhzOiAnZ2VubmFpb19mZWJicmFpb19tYXJ6b19hcHJpbGVfbWFnZ2lvX2dpdWdub19sdWdsaW9fYWdvc3RvX3NldHRlbWJyZV9vdHRvYnJlX25vdmVtYnJlX2RpY2VtYnJlJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ2dlbl9mZWJfbWFyX2Fwcl9tYWdfZ2l1X2x1Z19hZ29fc2V0X290dF9ub3ZfZGljJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ2RvbWVuaWNhX2x1bmVkw6xfbWFydGVkw6xfbWVyY29sZWTDrF9naW92ZWTDrF92ZW5lcmTDrF9zYWJhdG8nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdkb21fbHVuX21hcl9tZXJfZ2lvX3Zlbl9zYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnZG9fbHVfbWFfbWVfZ2lfdmVfc2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICdbT2dnaSBhJyArXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmhvdXJzKCkgPiAxID8gJ2xsZSAnIDogdGhpcy5ob3VycygpID09PSAwID8gJyAnIDogXCJsbCdcIikgK1xuICAgICAgICAgICAgICAgICAgICAnXUxUJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dERheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICdbRG9tYW5pIGEnICtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuaG91cnMoKSA+IDEgPyAnbGxlICcgOiB0aGlzLmhvdXJzKCkgPT09IDAgPyAnICcgOiBcImxsJ1wiKSArXG4gICAgICAgICAgICAgICAgICAgICddTFQnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICdkZGRkIFthJyArXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmhvdXJzKCkgPiAxID8gJ2xsZSAnIDogdGhpcy5ob3VycygpID09PSAwID8gJyAnIDogXCJsbCdcIikgK1xuICAgICAgICAgICAgICAgICAgICAnXUxUJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICdbSWVyaSBhJyArXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmhvdXJzKCkgPiAxID8gJ2xsZSAnIDogdGhpcy5ob3VycygpID09PSAwID8gJyAnIDogXCJsbCdcIikgK1xuICAgICAgICAgICAgICAgICAgICAnXUxUJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnW0xhIHNjb3JzYV0gZGRkZCBbYScgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmhvdXJzKCkgPiAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2xsZSAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5ob3VycygpID09PSAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJyAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJsbCdcIikgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICddTFQnXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnW0xvIHNjb3Jzb10gZGRkZCBbYScgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmhvdXJzKCkgPiAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2xsZSAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5ob3VycygpID09PSAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJyAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJsbCdcIikgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICddTFQnXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3RyYSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgZmEnLFxuICAgICAgICAgICAgczogJ2FsY3VuaSBzZWNvbmRpJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vjb25kaScsXG4gICAgICAgICAgICBtOiAndW4gbWludXRvJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRpJyxcbiAgICAgICAgICAgIGg6IFwidW4nb3JhXCIsXG4gICAgICAgICAgICBoaDogJyVkIG9yZScsXG4gICAgICAgICAgICBkOiAndW4gZ2lvcm5vJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZ2lvcm5pJyxcbiAgICAgICAgICAgIHc6ICd1bmEgc2V0dGltYW5hJyxcbiAgICAgICAgICAgIHd3OiAnJWQgc2V0dGltYW5lJyxcbiAgICAgICAgICAgIE06ICd1biBtZXNlJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWVzaScsXG4gICAgICAgICAgICB5OiAndW4gYW5ubycsXG4gICAgICAgICAgICB5eTogJyVkIGFubmknLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWw6ICclZMK6JyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGl0O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEphcGFuZXNlIFtqYV1cbi8vISBhdXRob3IgOiBMSSBMb25nIDogaHR0cHM6Ly9naXRodWIuY29tL2JhcnlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGphID0gbW9tZW50LmRlZmluZUxvY2FsZSgnamEnLCB7XG4gICAgICAgIGVyYXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaW5jZTogJzIwMTktMDUtMDEnLFxuICAgICAgICAgICAgICAgIG9mZnNldDogMSxcbiAgICAgICAgICAgICAgICBuYW1lOiAn5Luk5ZKMJyxcbiAgICAgICAgICAgICAgICBuYXJyb3c6ICfji78nLFxuICAgICAgICAgICAgICAgIGFiYnI6ICdSJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2luY2U6ICcxOTg5LTAxLTA4JyxcbiAgICAgICAgICAgICAgICB1bnRpbDogJzIwMTktMDQtMzAnLFxuICAgICAgICAgICAgICAgIG9mZnNldDogMSxcbiAgICAgICAgICAgICAgICBuYW1lOiAn5bmz5oiQJyxcbiAgICAgICAgICAgICAgICBuYXJyb3c6ICfjjbsnLFxuICAgICAgICAgICAgICAgIGFiYnI6ICdIJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2luY2U6ICcxOTI2LTEyLTI1JyxcbiAgICAgICAgICAgICAgICB1bnRpbDogJzE5ODktMDEtMDcnLFxuICAgICAgICAgICAgICAgIG9mZnNldDogMSxcbiAgICAgICAgICAgICAgICBuYW1lOiAn5pit5ZKMJyxcbiAgICAgICAgICAgICAgICBuYXJyb3c6ICfjjbwnLFxuICAgICAgICAgICAgICAgIGFiYnI6ICdTJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2luY2U6ICcxOTEyLTA3LTMwJyxcbiAgICAgICAgICAgICAgICB1bnRpbDogJzE5MjYtMTItMjQnLFxuICAgICAgICAgICAgICAgIG9mZnNldDogMSxcbiAgICAgICAgICAgICAgICBuYW1lOiAn5aSn5q2jJyxcbiAgICAgICAgICAgICAgICBuYXJyb3c6ICfjjb0nLFxuICAgICAgICAgICAgICAgIGFiYnI6ICdUJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2luY2U6ICcxODczLTAxLTAxJyxcbiAgICAgICAgICAgICAgICB1bnRpbDogJzE5MTItMDctMjknLFxuICAgICAgICAgICAgICAgIG9mZnNldDogNixcbiAgICAgICAgICAgICAgICBuYW1lOiAn5piO5rK7JyxcbiAgICAgICAgICAgICAgICBuYXJyb3c6ICfjjb4nLFxuICAgICAgICAgICAgICAgIGFiYnI6ICdNJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2luY2U6ICcwMDAxLTAxLTAxJyxcbiAgICAgICAgICAgICAgICB1bnRpbDogJzE4NzMtMTItMzEnLFxuICAgICAgICAgICAgICAgIG9mZnNldDogMSxcbiAgICAgICAgICAgICAgICBuYW1lOiAn6KW/5pqmJyxcbiAgICAgICAgICAgICAgICBuYXJyb3c6ICdBRCcsXG4gICAgICAgICAgICAgICAgYWJicjogJ0FEJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2luY2U6ICcwMDAwLTEyLTMxJyxcbiAgICAgICAgICAgICAgICB1bnRpbDogLUluZmluaXR5LFxuICAgICAgICAgICAgICAgIG9mZnNldDogMSxcbiAgICAgICAgICAgICAgICBuYW1lOiAn57SA5YWD5YmNJyxcbiAgICAgICAgICAgICAgICBuYXJyb3c6ICdCQycsXG4gICAgICAgICAgICAgICAgYWJicjogJ0JDJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGVyYVllYXJPcmRpbmFsUmVnZXg6IC8o5YWDfFxcZCsp5bm0LyxcbiAgICAgICAgZXJhWWVhck9yZGluYWxQYXJzZTogZnVuY3Rpb24gKGlucHV0LCBtYXRjaCkge1xuICAgICAgICAgICAgcmV0dXJuIG1hdGNoWzFdID09PSAn5YWDJyA/IDEgOiBwYXJzZUludChtYXRjaFsxXSB8fCBpbnB1dCwgMTApO1xuICAgICAgICB9LFxuICAgICAgICBtb250aHM6ICcx5pyIXzLmnIhfM+aciF805pyIXzXmnIhfNuaciF835pyIXzjmnIhfOeaciF8xMOaciF8xMeaciF8xMuaciCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICcx5pyIXzLmnIhfM+aciF805pyIXzXmnIhfNuaciF835pyIXzjmnIhfOeaciF8xMOaciF8xMeaciF8xMuaciCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfml6Xmm5zml6Vf5pyI5puc5pelX+eBq+abnOaXpV/msLTmm5zml6Vf5pyo5puc5pelX+mHkeabnOaXpV/lnJ/mm5zml6UnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfml6Vf5pyIX+eBq1/msLRf5pyoX+mHkV/lnJ8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn5pelX+aciF/ngatf5rC0X+acqF/ph5Ff5ZyfJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnWVlZWS9NTS9ERCcsXG4gICAgICAgICAgICBMTDogJ1lZWVnlubRN5pyIROaXpScsXG4gICAgICAgICAgICBMTEw6ICdZWVlZ5bm0TeaciETml6UgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ1lZWVnlubRN5pyIROaXpSBkZGRkIEhIOm1tJyxcbiAgICAgICAgICAgIGw6ICdZWVlZL01NL0REJyxcbiAgICAgICAgICAgIGxsOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIGxsbDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBsbGxsOiAnWVlZWeW5tE3mnIhE5pelKGRkZCkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv5Y2I5YmNfOWNiOW+jC9pLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCA9PT0gJ+WNiOW+jCc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfljYjliY0nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+WNiOW+jCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+S7iuaXpV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vmmI7ml6VdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAobm93KSB7XG4gICAgICAgICAgICAgICAgaWYgKG5vdy53ZWVrKCkgIT09IHRoaXMud2VlaygpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnW+adpemAsV1kZGRkIExUJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2RkZGQgTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+aYqOaXpV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uIChub3cpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy53ZWVrKCkgIT09IG5vdy53ZWVrKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb5YWI6YCxXWRkZGQgTFQnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfeaXpS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciA9PT0gMSA/ICflhYPlubQnIDogbnVtYmVyICsgJ+W5tCc7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfml6UnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXPlvownLFxuICAgICAgICAgICAgcGFzdDogJyVz5YmNJyxcbiAgICAgICAgICAgIHM6ICfmlbDnp5InLFxuICAgICAgICAgICAgc3M6ICclZOenkicsXG4gICAgICAgICAgICBtOiAnMeWIhicsXG4gICAgICAgICAgICBtbTogJyVk5YiGJyxcbiAgICAgICAgICAgIGg6ICcx5pmC6ZaTJyxcbiAgICAgICAgICAgIGhoOiAnJWTmmYLplpMnLFxuICAgICAgICAgICAgZDogJzHml6UnLFxuICAgICAgICAgICAgZGQ6ICclZOaXpScsXG4gICAgICAgICAgICBNOiAnMeODtuaciCcsXG4gICAgICAgICAgICBNTTogJyVk44O25pyIJyxcbiAgICAgICAgICAgIHk6ICcx5bm0JyxcbiAgICAgICAgICAgIHl5OiAnJWTlubQnLFxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGphO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEphdmFuZXNlIFtqdl1cbi8vISBhdXRob3IgOiBSb255IExhbnRpcCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9sYW50aXBcbi8vISByZWZlcmVuY2U6IGh0dHA6Ly9qdi53aWtpcGVkaWEub3JnL3dpa2kvQmFzYV9KYXdhXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIganYgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdqdicsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyaV9GZWJydWFyaV9NYXJldF9BcHJpbF9NZWlfSnVuaV9KdWxpX0FndXN0dXNfU2VwdGVtYmVyX09rdG9iZXJfTm9wZW1iZXJfRGVzZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0ZlYl9NYXJfQXByX01laV9KdW5fSnVsX0Fnc19TZXBfT2t0X05vcF9EZXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnTWluZ2d1X1NlbmVuX1NlbG9zb19SZWJ1X0tlbWlzX0plbXV3YWhfU2VwdHUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdNaW5fU2VuX1NlbF9SZWJfS2VtX0plbV9TZXAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnTWdfU25fU2xfUmJfS21fSm1fU3AnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hILm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hILm1tLnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9lbmppbmd8c2l5YW5nfHNvbnRlbnxuZGFsdS8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ2VuamluZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdzaXlhbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3NvbnRlbicgfHwgbWVyaWRpZW0gPT09ICduZGFsdScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZW5qaW5nJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxNSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnc2l5YW5nJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxOSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnc29udGVuJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICduZGFsdSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0RpbnRlbiBwdW5pa28gcHVrdWxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbTWJlbmphbmcgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbS2FsYSB3aW5naSBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtrZXBlbmdrZXIgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnd29udGVuIGluZyAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgaW5na2FuZyBrZXBlbmdrZXInLFxuICAgICAgICAgICAgczogJ3Nhd2V0YXdpcyBkZXRpaycsXG4gICAgICAgICAgICBzczogJyVkIGRldGlrJyxcbiAgICAgICAgICAgIG06ICdzZXR1bmdnYWwgbWVuaXQnLFxuICAgICAgICAgICAgbW06ICclZCBtZW5pdCcsXG4gICAgICAgICAgICBoOiAnc2V0dW5nZ2FsIGphbScsXG4gICAgICAgICAgICBoaDogJyVkIGphbScsXG4gICAgICAgICAgICBkOiAnc2VkaW50ZW4nLFxuICAgICAgICAgICAgZGQ6ICclZCBkaW50ZW4nLFxuICAgICAgICAgICAgTTogJ3Nld3VsYW4nLFxuICAgICAgICAgICAgTU06ICclZCB3dWxhbicsXG4gICAgICAgICAgICB5OiAnc2V0YXVuJyxcbiAgICAgICAgICAgIHl5OiAnJWQgdGF1bicsXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBqdjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBHZW9yZ2lhbiBba2FdXG4vLyEgYXV0aG9yIDogSXJha2xpIEphbmlhc2h2aWxpIDogaHR0cHM6Ly9naXRodWIuY29tL0lyYWtsaUphbmlcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBrYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2thJywge1xuICAgICAgICBtb250aHM6ICfhg5jhg5Dhg5zhg5Xhg5Dhg6Dhg5hf4YOX4YOU4YOR4YOU4YOg4YOV4YOQ4YOa4YOYX+GDm+GDkOGDoOGDouGDmF/hg5Dhg57hg6Dhg5jhg5rhg5hf4YOb4YOQ4YOY4YOh4YOYX+GDmOGDleGDnOGDmOGDoeGDmF/hg5jhg5Xhg5rhg5jhg6Hhg5hf4YOQ4YOS4YOV4YOY4YOh4YOi4YOdX+GDoeGDlOGDpeGDouGDlOGDm+GDkeGDlOGDoOGDmF/hg53hg6Xhg6Lhg53hg5vhg5Hhg5Thg6Dhg5hf4YOc4YOd4YOU4YOb4YOR4YOU4YOg4YOYX+GDk+GDlOGDmeGDlOGDm+GDkeGDlOGDoOGDmCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfhg5jhg5Dhg5xf4YOX4YOU4YORX+GDm+GDkOGDoF/hg5Dhg57hg6Bf4YOb4YOQ4YOYX+GDmOGDleGDnF/hg5jhg5Xhg5pf4YOQ4YOS4YOVX+GDoeGDlOGDpV/hg53hg6Xhg6Jf4YOc4YOd4YOUX+GDk+GDlOGDmScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6IHtcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6XG4gICAgICAgICAgICAgICAgJ+GDmeGDleGDmOGDoOGDkF/hg53hg6Dhg6jhg5Dhg5Hhg5Dhg5fhg5hf4YOh4YOQ4YOb4YOo4YOQ4YOR4YOQ4YOX4YOYX+GDneGDl+GDruGDqOGDkOGDkeGDkOGDl+GDmF/hg67hg6Phg5fhg6jhg5Dhg5Hhg5Dhg5fhg5hf4YOe4YOQ4YOg4YOQ4YOh4YOZ4YOU4YOV4YOYX+GDqOGDkOGDkeGDkOGDl+GDmCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBmb3JtYXQ6ICfhg5nhg5Xhg5jhg6Dhg5Dhg6Ff4YOd4YOg4YOo4YOQ4YOR4YOQ4YOX4YOhX+GDoeGDkOGDm+GDqOGDkOGDkeGDkOGDl+GDoV/hg53hg5fhg67hg6jhg5Dhg5Hhg5Dhg5fhg6Ff4YOu4YOj4YOX4YOo4YOQ4YOR4YOQ4YOX4YOhX+GDnuGDkOGDoOGDkOGDoeGDmeGDlOGDleGDoV/hg6jhg5Dhg5Hhg5Dhg5fhg6EnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGlzRm9ybWF0OiAvKOGDrOGDmOGDnOGDkHzhg6jhg5Thg5vhg5Phg5Thg5IpLyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+GDmeGDleGDmF/hg53hg6Dhg6hf4YOh4YOQ4YObX+GDneGDl+GDrl/hg67hg6Phg5df4YOe4YOQ4YOgX+GDqOGDkOGDkScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfhg5nhg5Vf4YOd4YOgX+GDoeGDkF/hg53hg5df4YOu4YOjX+GDnuGDkF/hg6jhg5AnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4YOT4YOm4YOU4YOhXSBMVFst4YOW4YOUXScsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+GDruGDleGDkOGDml0gTFRbLeGDluGDlF0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1vhg5Lhg6Phg6jhg5jhg5xdIExUWy3hg5bhg5RdJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW+GDqOGDlOGDm+GDk+GDlOGDkl0gZGRkZCBMVFst4YOW4YOUXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vhg6zhg5jhg5zhg5BdIGRkZGQgTFQt4YOW4YOUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiBmdW5jdGlvbiAocykge1xuICAgICAgICAgICAgICAgIHJldHVybiBzLnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgICAgIC8o4YOs4YOQ4YObfOGDrOGDo+GDl3zhg6Hhg5Dhg5Dhg5d84YOs4YOU4YOafOGDk+GDpnzhg5fhg5UpKOGDmHzhg5QpLyxcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCQwLCAkMSwgJDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkMiA9PT0gJ+GDmCcgPyAkMSArICfhg6jhg5gnIDogJDEgKyAkMiArICfhg6jhg5gnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXN0OiBmdW5jdGlvbiAocykge1xuICAgICAgICAgICAgICAgIGlmICgvKOGDrOGDkOGDm+GDmHzhg6zhg6Phg5fhg5h84YOh4YOQ4YOQ4YOX4YOYfOGDk+GDpuGDlHzhg5fhg5Xhg5QpLy50ZXN0KHMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzLnJlcGxhY2UoLyjhg5h84YOUKSQvLCAn4YOY4YOhIOGDrOGDmOGDnCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoL+GDrOGDlOGDmuGDmC8udGVzdChzKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcy5yZXBsYWNlKC/hg6zhg5Thg5rhg5gkLywgJ+GDrOGDmuGDmOGDoSDhg6zhg5jhg5wnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgczogJ+GDoOGDkOGDm+GDk+GDlOGDnOGDmOGDm+GDlCDhg6zhg5Dhg5vhg5gnLFxuICAgICAgICAgICAgc3M6ICclZCDhg6zhg5Dhg5vhg5gnLFxuICAgICAgICAgICAgbTogJ+GDrOGDo+GDl+GDmCcsXG4gICAgICAgICAgICBtbTogJyVkIOGDrOGDo+GDl+GDmCcsXG4gICAgICAgICAgICBoOiAn4YOh4YOQ4YOQ4YOX4YOYJyxcbiAgICAgICAgICAgIGhoOiAnJWQg4YOh4YOQ4YOQ4YOX4YOYJyxcbiAgICAgICAgICAgIGQ6ICfhg5Phg6bhg5QnLFxuICAgICAgICAgICAgZGQ6ICclZCDhg5Phg6bhg5QnLFxuICAgICAgICAgICAgTTogJ+GDl+GDleGDlCcsXG4gICAgICAgICAgICBNTTogJyVkIOGDl+GDleGDlCcsXG4gICAgICAgICAgICB5OiAn4YOs4YOU4YOa4YOYJyxcbiAgICAgICAgICAgIHl5OiAnJWQg4YOs4YOU4YOa4YOYJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogLzB8MS3hg5rhg5h84YOb4YOULVxcZHsxLDJ9fFxcZHsxLDJ9LeGDlC8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLeGDmuGDmCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbnVtYmVyIDwgMjAgfHxcbiAgICAgICAgICAgICAgICAobnVtYmVyIDw9IDEwMCAmJiBudW1iZXIgJSAyMCA9PT0gMCkgfHxcbiAgICAgICAgICAgICAgICBudW1iZXIgJSAxMDAgPT09IDBcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4YOb4YOULScgKyBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3hg5QnO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsXG4gICAgICAgICAgICBkb3k6IDcsXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4ga2E7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogS2F6YWtoIFtra11cbi8vISBhdXRob3JzIDogTnVybGFuIFJha2hpbXpoYW5vdiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9udXJsYW5cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzdWZmaXhlcyA9IHtcbiAgICAgICAgMDogJy3RiNGWJyxcbiAgICAgICAgMTogJy3RiNGWJyxcbiAgICAgICAgMjogJy3RiNGWJyxcbiAgICAgICAgMzogJy3RiNGWJyxcbiAgICAgICAgNDogJy3RiNGWJyxcbiAgICAgICAgNTogJy3RiNGWJyxcbiAgICAgICAgNjogJy3RiNGLJyxcbiAgICAgICAgNzogJy3RiNGWJyxcbiAgICAgICAgODogJy3RiNGWJyxcbiAgICAgICAgOTogJy3RiNGLJyxcbiAgICAgICAgMTA6ICct0YjRiycsXG4gICAgICAgIDIwOiAnLdGI0YsnLFxuICAgICAgICAzMDogJy3RiNGLJyxcbiAgICAgICAgNDA6ICct0YjRiycsXG4gICAgICAgIDUwOiAnLdGI0ZYnLFxuICAgICAgICA2MDogJy3RiNGLJyxcbiAgICAgICAgNzA6ICct0YjRlicsXG4gICAgICAgIDgwOiAnLdGI0ZYnLFxuICAgICAgICA5MDogJy3RiNGLJyxcbiAgICAgICAgMTAwOiAnLdGI0ZYnLFxuICAgIH07XG5cbiAgICB2YXIga2sgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdraycsIHtcbiAgICAgICAgbW9udGhzOiAn0pvQsNKj0YLQsNGAX9Cw0pvQv9Cw0L1f0L3QsNGD0YDRi9C3X9GB05nRg9GW0YBf0LzQsNC80YvRgF/QvNCw0YPRgdGL0Lxf0YjRltC70LTQtV/RgtCw0LzRi9C3X9Kb0YvRgNC60q/QudC10Lpf0pvQsNC30LDQvV/Sm9Cw0YDQsNGI0LBf0LbQtdC70YLQvtKb0YHQsNC9Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ9Kb0LDSo1/QsNKb0L9f0L3QsNGDX9GB05nRg1/QvNCw0Lxf0LzQsNGDX9GI0ZbQu1/RgtCw0Lxf0pvRi9GAX9Kb0LDQt1/Sm9Cw0YBf0LbQtdC7Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ9C20LXQutGB0LXQvdCx0ZZf0LTSr9C50YHQtdC90LHRll/RgdC10LnRgdC10L3QsdGWX9GB05nRgNGB0LXQvdCx0ZZf0LHQtdC50YHQtdC90LHRll/QttKx0LzQsF/RgdC10L3QsdGWJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn0LbQtdC6X9C00q/QuV/RgdC10Llf0YHTmdGAX9Cx0LXQuV/QttKx0Lxf0YHQtdC9Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9C20Lpf0LTQuV/RgdC5X9GB0YBf0LHQuV/QttC8X9GB0L0nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb0JHSr9Cz0ZbQvSDRgdCw0pPQsNGCXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9CV0YDRgtC10qMg0YHQsNKT0LDRgl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvRgdCw0pPQsNGCXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9Ca0LXRiNC1INGB0LDSk9Cw0YJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW9Oo0YLQutC10L0g0LDQv9GC0LDQvdGL0qNdIGRkZGQgW9GB0LDSk9Cw0YJdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg0ZbRiNGW0L3QtNC1JyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDQsdKx0YDRi9C9JyxcbiAgICAgICAgICAgIHM6ICfQsdGW0YDQvdC10YjQtSDRgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgc3M6ICclZCDRgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgbTogJ9Cx0ZbRgCDQvNC40L3Rg9GCJyxcbiAgICAgICAgICAgIG1tOiAnJWQg0LzQuNC90YPRgicsXG4gICAgICAgICAgICBoOiAn0LHRltGAINGB0LDSk9Cw0YInLFxuICAgICAgICAgICAgaGg6ICclZCDRgdCw0pPQsNGCJyxcbiAgICAgICAgICAgIGQ6ICfQsdGW0YAg0LrSr9C9JyxcbiAgICAgICAgICAgIGRkOiAnJWQg0LrSr9C9JyxcbiAgICAgICAgICAgIE06ICfQsdGW0YAg0LDQuScsXG4gICAgICAgICAgICBNTTogJyVkINCw0LknLFxuICAgICAgICAgICAgeTogJ9Cx0ZbRgCDQttGL0LsnLFxuICAgICAgICAgICAgeXk6ICclZCDQttGL0LsnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tKNGI0ZZ80YjRiykvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYSA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIGIgPSBudW1iZXIgPj0gMTAwID8gMTAwIDogbnVsbDtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAoc3VmZml4ZXNbbnVtYmVyXSB8fCBzdWZmaXhlc1thXSB8fCBzdWZmaXhlc1tiXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBraztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBDYW1ib2RpYW4gW2ttXVxuLy8hIGF1dGhvciA6IEtydXkgVmFubmEgOiBodHRwczovL2dpdGh1Yi5jb20va3J1eXZhbm5hXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgMTogJ+GfoScsXG4gICAgICAgICAgICAyOiAn4Z+iJyxcbiAgICAgICAgICAgIDM6ICfhn6MnLFxuICAgICAgICAgICAgNDogJ+GfpCcsXG4gICAgICAgICAgICA1OiAn4Z+lJyxcbiAgICAgICAgICAgIDY6ICfhn6YnLFxuICAgICAgICAgICAgNzogJ+GfpycsXG4gICAgICAgICAgICA4OiAn4Z+oJyxcbiAgICAgICAgICAgIDk6ICfhn6knLFxuICAgICAgICAgICAgMDogJ+GfoCcsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfhn6EnOiAnMScsXG4gICAgICAgICAgICAn4Z+iJzogJzInLFxuICAgICAgICAgICAgJ+Gfoyc6ICczJyxcbiAgICAgICAgICAgICfhn6QnOiAnNCcsXG4gICAgICAgICAgICAn4Z+lJzogJzUnLFxuICAgICAgICAgICAgJ+Gfpic6ICc2JyxcbiAgICAgICAgICAgICfhn6cnOiAnNycsXG4gICAgICAgICAgICAn4Z+oJzogJzgnLFxuICAgICAgICAgICAgJ+GfqSc6ICc5JyxcbiAgICAgICAgICAgICfhn6AnOiAnMCcsXG4gICAgICAgIH07XG5cbiAgICB2YXIga20gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdrbScsIHtcbiAgICAgICAgbW9udGhzOiAn4Z6Y4Z6A4Z6a4Z62X+GegOGeu+GemOGfkuGel+GfiF/hnpjhnrjhnpPhnrZf4Z6Y4Z+B4Z6f4Z62X+Gep+Gen+Gel+Getl/hnpjhnrfhnpDhnrvhnpPhnrZf4Z6A4Z6A4Z+S4Z6A4Z6K4Z62X+Gen+GeuOGeoOGetl/hnoDhnonhn5LhnonhnrZf4Z6P4Z674Z6b4Z62X+GenOGet+GeheGfkuGehuGet+GegOGetl/hnpLhn5LhnpPhnrwnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+GemOGegOGemuGetl/hnoDhnrvhnpjhn5Lhnpfhn4hf4Z6Y4Z644Z6T4Z62X+GemOGfgeGen+Getl/hnqfhnp/hnpfhnrZf4Z6Y4Z634Z6Q4Z674Z6T4Z62X+GegOGegOGfkuGegOGeiuGetl/hnp/hnrjhnqDhnrZf4Z6A4Z6J4Z+S4Z6J4Z62X+Gej+Geu+Gem+Getl/hnpzhnrfhnoXhn5LhnobhnrfhnoDhnrZf4Z6S4Z+S4Z6T4Z68Jy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn4Z6i4Z624Z6R4Z634Z6P4Z+S4Z6ZX+GeheGfkOGek+GfkuGekV/hnqLhnoThn5LhnoLhnrbhnppf4Z6W4Z674Z6SX+GeluGfkuGemuGeoOGen+GfkuGelOGej+Get+GfjV/hnp/hnrvhnoDhn5Lhnppf4Z6f4Z+F4Z6a4Z+NJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4Z6i4Z62X+GehV/hnqJf4Z6WX+GeluGfkuGeml/hnp/hnrtf4Z6fJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+GeouGetl/hnoVf4Z6iX+Gell/hnpbhn5Lhnppf4Z6f4Z67X+Genycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/hnpbhn5LhnprhnrnhnoB84Z6b4Z+S4Z6E4Z624Z6FLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgPT09ICfhnpvhn5LhnoThnrbhnoUnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Z6W4Z+S4Z6a4Z654Z6AJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfhnpvhn5LhnoThnrbhnoUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vhnpDhn5LhnoThn4PhnpPhn4Hhn4cg4Z6Y4Z+J4Z+E4Z6EXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+Gen+GfkuGeouGfguGegCDhnpjhn4nhn4ThnoRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb4Z6Y4Z+J4Z+E4Z6EXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+GemOGfkuGen+Get+Gem+GemOGet+GeiSDhnpjhn4nhn4ThnoRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb4Z6f4Z6U4Z+S4Z6P4Z624Z6g4Z+N4Z6Y4Z674Z6TXSBb4Z6Y4Z+J4Z+E4Z6EXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVz4Z6R4Z+A4Z6PJyxcbiAgICAgICAgICAgIHBhc3Q6ICclc+GemOGeu+GekycsXG4gICAgICAgICAgICBzOiAn4Z6U4Z+J4Z674Z6T4Z+S4Z6Y4Z624Z6T4Z6c4Z634Z6T4Z624Z6R4Z64JyxcbiAgICAgICAgICAgIHNzOiAnJWQg4Z6c4Z634Z6T4Z624Z6R4Z64JyxcbiAgICAgICAgICAgIG06ICfhnpjhnr3hnpnhnpPhnrbhnpHhnrgnLFxuICAgICAgICAgICAgbW06ICclZCDhnpPhnrbhnpHhnrgnLFxuICAgICAgICAgICAgaDogJ+GemOGeveGemeGemOGfieGfhOGehCcsXG4gICAgICAgICAgICBoaDogJyVkIOGemOGfieGfhOGehCcsXG4gICAgICAgICAgICBkOiAn4Z6Y4Z694Z6Z4Z6Q4Z+S4Z6E4Z+DJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4Z6Q4Z+S4Z6E4Z+DJyxcbiAgICAgICAgICAgIE06ICfhnpjhnr3hnpnhnoHhn4InLFxuICAgICAgICAgICAgTU06ICclZCDhnoHhn4InLFxuICAgICAgICAgICAgeTogJ+GemOGeveGemeGehuGfkuGek+GetuGfhicsXG4gICAgICAgICAgICB5eTogJyVkIOGehuGfkuGek+GetuGfhicsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC/hnpHhnrhcXGR7MSwyfS8sXG4gICAgICAgIG9yZGluYWw6ICfhnpHhnrglZCcsXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vhn6Hhn6Lhn6Phn6Thn6Xhn6bhn6fhn6jhn6nhn6BdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBrbTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBLYW5uYWRhIFtrbl1cbi8vISBhdXRob3IgOiBSYWplZXYgTmFpayA6IGh0dHBzOi8vZ2l0aHViLmNvbS9yYWplZXZuYWlrdGVcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICAgICAxOiAn4LOnJyxcbiAgICAgICAgICAgIDI6ICfgs6gnLFxuICAgICAgICAgICAgMzogJ+CzqScsXG4gICAgICAgICAgICA0OiAn4LOqJyxcbiAgICAgICAgICAgIDU6ICfgs6snLFxuICAgICAgICAgICAgNjogJ+CzrCcsXG4gICAgICAgICAgICA3OiAn4LOtJyxcbiAgICAgICAgICAgIDg6ICfgs64nLFxuICAgICAgICAgICAgOTogJ+CzrycsXG4gICAgICAgICAgICAwOiAn4LOmJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ+Czpyc6ICcxJyxcbiAgICAgICAgICAgICfgs6gnOiAnMicsXG4gICAgICAgICAgICAn4LOpJzogJzMnLFxuICAgICAgICAgICAgJ+Czqic6ICc0JyxcbiAgICAgICAgICAgICfgs6snOiAnNScsXG4gICAgICAgICAgICAn4LOsJzogJzYnLFxuICAgICAgICAgICAgJ+CzrSc6ICc3JyxcbiAgICAgICAgICAgICfgs64nOiAnOCcsXG4gICAgICAgICAgICAn4LOvJzogJzknLFxuICAgICAgICAgICAgJ+Czpic6ICcwJyxcbiAgICAgICAgfTtcblxuICAgIHZhciBrbiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2tuJywge1xuICAgICAgICBtb250aHM6ICfgspzgsqjgsrXgsrDgsr9f4LKr4LOG4LKs4LON4LKw4LK14LKw4LK/X+CyruCyvuCysOCzjeCymuCzjV/gso/gsqrgs43gsrDgsr/gsrLgs41f4LKu4LOG4LOVX+CynOCzguCyqOCzjV/gspzgs4HgsrLgs4bgs5Zf4LKG4LKX4LK44LON4LKf4LONX+CyuOCzhuCyquCzjeCyn+CzhuCyguCyrOCysOCzjV/gsoXgspXgs43gsp/gs4bgs4Lgs5XgsqzgsrDgs41f4LKo4LK14LOG4LKC4LKs4LKw4LONX+CyoeCyv+CyuOCzhuCyguCyrOCysOCzjScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn4LKc4LKoX+Cyq+CzhuCyrOCzjeCysF/gsq7gsr7gsrDgs43gsprgs41f4LKP4LKq4LON4LKw4LK/4LKy4LONX+CyruCzhuCzlV/gspzgs4Lgsqjgs41f4LKc4LOB4LKy4LOG4LOWX+CyhuCyl+CyuOCzjeCyn+CzjV/gsrjgs4bgsqrgs43gsp/gs4bgsoJf4LKF4LKV4LON4LKf4LOG4LOC4LOVX+CyqOCyteCzhuCygl/gsqHgsr/gsrjgs4bgsoInLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICfgsq3gsr7gsqjgs4HgsrXgsr7gsrBf4LK44LOG4LOC4LOV4LKu4LK14LK+4LKwX+CyruCyguCyl+Cys+CyteCyvuCysF/gsqzgs4HgsqfgsrXgsr7gsrBf4LKX4LOB4LKw4LOB4LK14LK+4LKwX+CytuCzgeCyleCzjeCysOCyteCyvuCysF/gsrbgsqjgsr/gsrXgsr7gsrAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgsq3gsr7gsqjgs4Ff4LK44LOG4LOC4LOV4LKuX+CyruCyguCyl+Cys1/gsqzgs4Hgsqdf4LKX4LOB4LKw4LOBX+CytuCzgeCyleCzjeCysF/gsrbgsqjgsr8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4LKt4LK+X+CyuOCzhuCzguCzlV/gsq7gsoJf4LKs4LOBX+Cyl+CzgV/gsrbgs4Ff4LK2Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnQSBoOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVksIEEgaDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+Cyh+CyguCypuCzgV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vgsqjgsr7gsrPgs4ZdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCwgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vgsqjgsr/gsqjgs43gsqjgs4ZdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+CyleCzhuCzguCyqOCzhuCyr10gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDgsqjgsoLgsqTgsrAnLFxuICAgICAgICAgICAgcGFzdDogJyVzIOCyueCyv+CyguCypuCzhicsXG4gICAgICAgICAgICBzOiAn4LKV4LOG4LKy4LK14LOBIOCyleCzjeCyt+Cyo+Cyl+Cys+CzgScsXG4gICAgICAgICAgICBzczogJyVkIOCyuOCzhuCyleCzhuCyguCyoeCzgeCyl+Cys+CzgScsXG4gICAgICAgICAgICBtOiAn4LKS4LKC4LKm4LOBIOCyqOCyv+CyruCyv+CytycsXG4gICAgICAgICAgICBtbTogJyVkIOCyqOCyv+CyruCyv+CytycsXG4gICAgICAgICAgICBoOiAn4LKS4LKC4LKm4LOBIOCyl+CyguCyn+CzhicsXG4gICAgICAgICAgICBoaDogJyVkIOCyl+CyguCyn+CzhicsXG4gICAgICAgICAgICBkOiAn4LKS4LKC4LKm4LOBIOCypuCyv+CyqCcsXG4gICAgICAgICAgICBkZDogJyVkIOCypuCyv+CyqCcsXG4gICAgICAgICAgICBNOiAn4LKS4LKC4LKm4LOBIOCypOCyv+CyguCyl+Cys+CzgScsXG4gICAgICAgICAgICBNTTogJyVkIOCypOCyv+CyguCyl+Cys+CzgScsXG4gICAgICAgICAgICB5OiAn4LKS4LKC4LKm4LOBIOCyteCysOCzjeCytycsXG4gICAgICAgICAgICB5eTogJyVkIOCyteCysOCzjeCytycsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgs6fgs6jgs6ngs6rgs6vgs6zgs63gs67gs6/gs6ZdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gsrDgsr7gsqTgs43gsrDgsr984LKs4LOG4LKz4LK/4LKX4LON4LKX4LOGfOCyruCyp+CzjeCyr+CyvuCyueCzjeCyqHzgsrjgsoLgspzgs4YvLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgsrDgsr7gsqTgs43gsrDgsr8nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgsqzgs4bgsrPgsr/gspfgs43gspfgs4YnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4LKu4LKn4LON4LKv4LK+4LK54LON4LKoJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgsrjgsoLgspzgs4YnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LKw4LK+4LKk4LON4LKw4LK/JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsqzgs4bgsrPgsr/gspfgs43gspfgs4YnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CyruCyp+CzjeCyr+CyvuCyueCzjeCyqCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LK44LKC4LKc4LOGJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsrDgsr7gsqTgs43gsrDgsr8nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0o4LKo4LOG4LOVKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn4LKo4LOG4LOVJztcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGtuO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEtvcmVhbiBba29dXG4vLyEgYXV0aG9yIDogS3l1bmd3b29rLCBQYXJrIDogaHR0cHM6Ly9naXRodWIuY29tL2t5dW5ndzAwa1xuLy8hIGF1dGhvciA6IEplZWV5dWwgTGVlIDxqZWVleXVsQGdtYWlsLmNvbT5cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBrbyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2tvJywge1xuICAgICAgICBtb250aHM6ICcx7JuUXzLsm5RfM+yblF807JuUXzXsm5RfNuyblF837JuUXzjsm5RfOeyblF8xMOyblF8xMeyblF8xMuyblCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICcx7JuUXzLsm5RfM+yblF807JuUXzXsm5RfNuyblF837JuUXzjsm5RfOeyblF8xMOyblF8xMeyblF8xMuyblCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfsnbzsmpTsnbxf7JuU7JqU7J28X+2ZlOyalOydvF/siJjsmpTsnbxf66qp7JqU7J28X+q4iOyalOydvF/thqDsmpTsnbwnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfsnbxf7JuUX+2ZlF/siJhf66qpX+q4iF/thqAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn7J28X+yblF/tmZRf7IiYX+uqqV/quIhf7YagJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnQSBoOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdZWVlZLk1NLkRELicsXG4gICAgICAgICAgICBMTDogJ1lZWVnrhYQgTU1NTSBE7J28JyxcbiAgICAgICAgICAgIExMTDogJ1lZWVnrhYQgTU1NTSBE7J28IEEgaDptbScsXG4gICAgICAgICAgICBMTExMOiAnWVlZWeuFhCBNTU1NIETsnbwgZGRkZCBBIGg6bW0nLFxuICAgICAgICAgICAgbDogJ1lZWVkuTU0uREQuJyxcbiAgICAgICAgICAgIGxsOiAnWVlZWeuFhCBNTU1NIETsnbwnLFxuICAgICAgICAgICAgbGxsOiAnWVlZWeuFhCBNTU1NIETsnbwgQSBoOm1tJyxcbiAgICAgICAgICAgIGxsbGw6ICdZWVlZ64WEIE1NTU0gROydvCBkZGRkIEEgaDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAn7Jik64qYIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICfrgrTsnbwgTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICfslrTsoJwgTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICfsp4Drgpzso7wgZGRkZCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIO2bhCcsXG4gICAgICAgICAgICBwYXN0OiAnJXMg7KCEJyxcbiAgICAgICAgICAgIHM6ICfrqocg7LSIJyxcbiAgICAgICAgICAgIHNzOiAnJWTstIgnLFxuICAgICAgICAgICAgbTogJzHrtoQnLFxuICAgICAgICAgICAgbW06ICclZOu2hCcsXG4gICAgICAgICAgICBoOiAn7ZWcIOyLnOqwhCcsXG4gICAgICAgICAgICBoaDogJyVk7Iuc6rCEJyxcbiAgICAgICAgICAgIGQ6ICftlZjro6gnLFxuICAgICAgICAgICAgZGQ6ICclZOydvCcsXG4gICAgICAgICAgICBNOiAn7ZWcIOuLrCcsXG4gICAgICAgICAgICBNTTogJyVk64usJyxcbiAgICAgICAgICAgIHk6ICfsnbwg64WEJyxcbiAgICAgICAgICAgIHl5OiAnJWTrhYQnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0o7J28fOyblHzso7wpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn7J28JztcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfsm5QnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+yjvCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+yYpOyghHzsmKTtm4QvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAodG9rZW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0b2tlbiA9PT0gJ+yYpO2bhCc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc1VwcGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gaG91ciA8IDEyID8gJ+yYpOyghCcgOiAn7Jik7ZuEJztcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBrbztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBLdXJkaXNoIFtrdV1cbi8vISBhdXRob3IgOiBTaGFocmFtIE1lYmFzaGFyIDogaHR0cHM6Ly9naXRodWIuY29tL1NoYWhyYW1NZWJhc2hhclxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICfZoScsXG4gICAgICAgICAgICAyOiAn2aInLFxuICAgICAgICAgICAgMzogJ9mjJyxcbiAgICAgICAgICAgIDQ6ICfZpCcsXG4gICAgICAgICAgICA1OiAn2aUnLFxuICAgICAgICAgICAgNjogJ9mmJyxcbiAgICAgICAgICAgIDc6ICfZpycsXG4gICAgICAgICAgICA4OiAn2agnLFxuICAgICAgICAgICAgOTogJ9mpJyxcbiAgICAgICAgICAgIDA6ICfZoCcsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfZoSc6ICcxJyxcbiAgICAgICAgICAgICfZoic6ICcyJyxcbiAgICAgICAgICAgICfZoyc6ICczJyxcbiAgICAgICAgICAgICfZpCc6ICc0JyxcbiAgICAgICAgICAgICfZpSc6ICc1JyxcbiAgICAgICAgICAgICfZpic6ICc2JyxcbiAgICAgICAgICAgICfZpyc6ICc3JyxcbiAgICAgICAgICAgICfZqCc6ICc4JyxcbiAgICAgICAgICAgICfZqSc6ICc5JyxcbiAgICAgICAgICAgICfZoCc6ICcwJyxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzID0gW1xuICAgICAgICAgICAgJ9qp2KfZhtmI2YbbjCDYr9mI2YjbldmFJyxcbiAgICAgICAgICAgICfYtNmI2KjYp9iqJyxcbiAgICAgICAgICAgICfYptin2LLYp9ixJyxcbiAgICAgICAgICAgICfZhtuM2LPYp9mGJyxcbiAgICAgICAgICAgICfYptin24zYp9ixJyxcbiAgICAgICAgICAgICfYrdmI2LLblduM2LHYp9mGJyxcbiAgICAgICAgICAgICfYqtuV2YXZhdmI2LInLFxuICAgICAgICAgICAgJ9im2KfYqCcsXG4gICAgICAgICAgICAn2KbblduM2YTZiNmI2YQnLFxuICAgICAgICAgICAgJ9iq2LTYsduM2YbbjCDbjNuV2YPbldmFJyxcbiAgICAgICAgICAgICfYqti02LHbjNmG24wg2K/ZiNmI25XZhScsXG4gICAgICAgICAgICAn2YPYp9mG2YjZhtuMINuM25XaqduV2YUnLFxuICAgICAgICBdO1xuXG4gICAgdmFyIGt1ID0gbW9tZW50LmRlZmluZUxvY2FsZSgna3UnLCB7XG4gICAgICAgIG1vbnRoczogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydDogbW9udGhzLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICfbjNmH4oCM2YPYtNmH4oCM2YXZhdmH4oCMX9iv2YjZiNi02YfigIzZhdmF2YfigIxf2LPbjti02YfigIzZhdmF2YfigIxf2obZiNin2LHYtNmH4oCM2YXZhdmH4oCMX9m+247Zhtis2LTZh+KAjNmF2YXZh+KAjF/Zh9mH4oCM24zZhtuMX9i02YfigIzZhdmF2YfigIwnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDpcbiAgICAgICAgICAgICfbjNmH4oCM2YPYtNmH4oCM2YVf2K/ZiNmI2LTZh+KAjNmFX9iz247YtNmH4oCM2YVf2obZiNin2LHYtNmH4oCM2YVf2b7bjtmG2KzYtNmH4oCM2YVf2YfZh+KAjNuM2YbbjF/YtNmH4oCM2YXZhdmH4oCMJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9uMX9ivX9izX9qGX9m+X9mHX9i0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9im247ZiNin2LHZh+KAjHzYqNmH4oCM24zYp9mG24wvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAv2KbbjtmI2KfYsdmH4oCMLy50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9io2YfigIzbjNin2YbbjCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2KbbjtmI2KfYsdmH4oCMJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KbZh+KAjNmF2LHbhiDZg9in2KramNmF247YsV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vYqNmH4oCM24zYp9mG24wg2YPYp9iq2pjZhduO2LFdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2YPYp9iq2pjZhduO2LFdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2K/ZiNuO2YbbjiDZg9in2KramNmF247YsV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvZg9in2KramNmF247YsV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfZhNmH4oCMICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcycsXG4gICAgICAgICAgICBzOiAn2obZh+KAjNmG2K8g2obYsdmD2YfigIzbjNmH4oCM2YMnLFxuICAgICAgICAgICAgc3M6ICfahtix2YPZh+KAjCAlZCcsXG4gICAgICAgICAgICBtOiAn24zZh+KAjNmDINiu2YjZhNmH4oCM2YMnLFxuICAgICAgICAgICAgbW06ICclZCDYrtmI2YTZh+KAjNmDJyxcbiAgICAgICAgICAgIGg6ICfbjNmH4oCM2YMg2YPYp9iq2pjZhduO2LEnLFxuICAgICAgICAgICAgaGg6ICclZCDZg9in2KramNmF247YsScsXG4gICAgICAgICAgICBkOiAn24zZh+KAjNmDINqV24bamCcsXG4gICAgICAgICAgICBkZDogJyVkINqV24bamCcsXG4gICAgICAgICAgICBNOiAn24zZh+KAjNmDINmF2KfZhtqvJyxcbiAgICAgICAgICAgIE1NOiAnJWQg2YXYp9mG2q8nLFxuICAgICAgICAgICAgeTogJ9uM2YfigIzZgyDYs9in2rUnLFxuICAgICAgICAgICAgeXk6ICclZCDYs9in2rUnLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9b2aHZotmj2aTZpdmm2afZqNmp2aBdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiA2LCAvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiAxMiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBrdTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBLeXJneXogW2t5XVxuLy8hIGF1dGhvciA6IENoeW5neXogQXJ5c3RhbiB1dWx1IDogaHR0cHM6Ly9naXRodWIuY29tL2NoeW5neXpcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzdWZmaXhlcyA9IHtcbiAgICAgICAgMDogJy3Rh9KvJyxcbiAgICAgICAgMTogJy3Rh9C4JyxcbiAgICAgICAgMjogJy3Rh9C4JyxcbiAgICAgICAgMzogJy3Rh9KvJyxcbiAgICAgICAgNDogJy3Rh9KvJyxcbiAgICAgICAgNTogJy3Rh9C4JyxcbiAgICAgICAgNjogJy3Rh9GLJyxcbiAgICAgICAgNzogJy3Rh9C4JyxcbiAgICAgICAgODogJy3Rh9C4JyxcbiAgICAgICAgOTogJy3Rh9GDJyxcbiAgICAgICAgMTA6ICct0YfRgycsXG4gICAgICAgIDIwOiAnLdGH0YsnLFxuICAgICAgICAzMDogJy3Rh9GDJyxcbiAgICAgICAgNDA6ICct0YfRiycsXG4gICAgICAgIDUwOiAnLdGH0q8nLFxuICAgICAgICA2MDogJy3Rh9GLJyxcbiAgICAgICAgNzA6ICct0YfQuCcsXG4gICAgICAgIDgwOiAnLdGH0LgnLFxuICAgICAgICA5MDogJy3Rh9GDJyxcbiAgICAgICAgMTAwOiAnLdGH0q8nLFxuICAgIH07XG5cbiAgICB2YXIga3kgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdreScsIHtcbiAgICAgICAgbW9udGhzOiAn0Y/QvdCy0LDRgNGMX9GE0LXQstGA0LDQu9GMX9C80LDRgNGCX9Cw0L/RgNC10LvRjF/QvNCw0Llf0LjRjtC90Yxf0LjRjtC70Yxf0LDQstCz0YPRgdGCX9GB0LXQvdGC0Y/QsdGA0Yxf0L7QutGC0Y/QsdGA0Yxf0L3QvtGP0LHRgNGMX9C00LXQutCw0LHRgNGMJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ9GP0L3Qsl/RhNC10LJf0LzQsNGA0YJf0LDQv9GAX9C80LDQuV/QuNGO0L3RjF/QuNGO0LvRjF/QsNCy0LNf0YHQtdC9X9C+0LrRgl/QvdC+0Y9f0LTQtdC6Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ9CW0LXQutGI0LXQvNCx0Lhf0JTSr9C50YjTqdC80LHSr1/QqNC10LnRiNC10LzQsdC4X9Co0LDRgNGI0LXQvNCx0Lhf0JHQtdC50YjQtdC80LHQuF/QltGD0LzQsF/QmNGI0LXQvNCx0LgnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfQltC10Lpf0JTSr9C5X9Co0LXQuV/QqNCw0YBf0JHQtdC5X9CW0YPQvF/QmNGI0LUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn0JbQul/QlNC5X9Co0Llf0KjRgF/QkdC5X9CW0Lxf0JjRiCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQkdKv0LPSr9C9INGB0LDQsNGCXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9Ct0YDRgtC10qMg0YHQsNCw0YJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb0YHQsNCw0YJdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb0JrQtdGH0Y3RjSDRgdCw0LDRgl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb06jRgtC606nQvSDQsNC/0YLQsNC90YvQvV0gZGRkZCBb0LrSr9C90q9dIFvRgdCw0LDRgl0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDQuNGH0LjQvdC00LUnLFxuICAgICAgICAgICAgcGFzdDogJyVzINC80YPRgNGD0L0nLFxuICAgICAgICAgICAgczogJ9Cx0LjRgNC90LXRh9C1INGB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBzczogJyVkINGB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBtOiAn0LHQuNGAINC80q/QvdOp0YInLFxuICAgICAgICAgICAgbW06ICclZCDQvNKv0L3TqdGCJyxcbiAgICAgICAgICAgIGg6ICfQsdC40YAg0YHQsNCw0YInLFxuICAgICAgICAgICAgaGg6ICclZCDRgdCw0LDRgicsXG4gICAgICAgICAgICBkOiAn0LHQuNGAINC60q/QvScsXG4gICAgICAgICAgICBkZDogJyVkINC60q/QvScsXG4gICAgICAgICAgICBNOiAn0LHQuNGAINCw0LknLFxuICAgICAgICAgICAgTU06ICclZCDQsNC5JyxcbiAgICAgICAgICAgIHk6ICfQsdC40YAg0LbRi9C7JyxcbiAgICAgICAgICAgIHl5OiAnJWQg0LbRi9C7JyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjRh9C4fNGH0Yt80YfSr3zRh9GDKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBhID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgYiA9IG51bWJlciA+PSAxMDAgPyAxMDAgOiBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChzdWZmaXhlc1tudW1iZXJdIHx8IHN1ZmZpeGVzW2FdIHx8IHN1ZmZpeGVzW2JdKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGt5O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEx1eGVtYm91cmdpc2ggW2xiXVxuLy8hIGF1dGhvciA6IG13ZWltZXJza2lyY2ggOiBodHRwczovL2dpdGh1Yi5jb20vbXdlaW1lcnNraXJjaFxuLy8hIGF1dGhvciA6IERhdmlkIFJhaXNvbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9rd2lzYXR6XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgbTogWydlbmcgTWludXR0JywgJ2VuZ2VyIE1pbnV0dCddLFxuICAgICAgICAgICAgaDogWydlbmcgU3Rvbm4nLCAnZW5nZXIgU3Rvbm4nXSxcbiAgICAgICAgICAgIGQ6IFsnZWVuIERhZycsICdlbmdlbSBEYWcnXSxcbiAgICAgICAgICAgIE06IFsnZWUgTW91bnQnLCAnZW5nZW0gTW91bnQnXSxcbiAgICAgICAgICAgIHk6IFsnZWUgSm9lcicsICdlbmdlbSBKb2VyJ10sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gZm9ybWF0W2tleV1bMF0gOiBmb3JtYXRba2V5XVsxXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJvY2Vzc0Z1dHVyZVRpbWUoc3RyaW5nKSB7XG4gICAgICAgIHZhciBudW1iZXIgPSBzdHJpbmcuc3Vic3RyKDAsIHN0cmluZy5pbmRleE9mKCcgJykpO1xuICAgICAgICBpZiAoZWlmZWxlclJlZ2VsQXBwbGllc1RvTnVtYmVyKG51bWJlcikpIHtcbiAgICAgICAgICAgIHJldHVybiAnYSAnICsgc3RyaW5nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnYW4gJyArIHN0cmluZztcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJvY2Vzc1Bhc3RUaW1lKHN0cmluZykge1xuICAgICAgICB2YXIgbnVtYmVyID0gc3RyaW5nLnN1YnN0cigwLCBzdHJpbmcuaW5kZXhPZignICcpKTtcbiAgICAgICAgaWYgKGVpZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlcihudW1iZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3ZpcnUgJyArIHN0cmluZztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ3ZpcnVuICcgKyBzdHJpbmc7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgd29yZCBiZWZvcmUgdGhlIGdpdmVuIG51bWJlciBsb3NlcyB0aGUgJy1uJyBlbmRpbmcuXG4gICAgICogZS5nLiAnYW4gMTAgRGVlZycgYnV0ICdhIDUgRGVlZydcbiAgICAgKlxuICAgICAqIEBwYXJhbSBudW1iZXIge2ludGVnZXJ9XG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgZnVuY3Rpb24gZWlmZWxlclJlZ2VsQXBwbGllc1RvTnVtYmVyKG51bWJlcikge1xuICAgICAgICBudW1iZXIgPSBwYXJzZUludChudW1iZXIsIDEwKTtcbiAgICAgICAgaWYgKGlzTmFOKG51bWJlcikpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgICAgICAgLy8gTmVnYXRpdmUgTnVtYmVyIC0tPiBhbHdheXMgdHJ1ZVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgMTApIHtcbiAgICAgICAgICAgIC8vIE9ubHkgMSBkaWdpdFxuICAgICAgICAgICAgaWYgKDQgPD0gbnVtYmVyICYmIG51bWJlciA8PSA3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgMTAwKSB7XG4gICAgICAgICAgICAvLyAyIGRpZ2l0c1xuICAgICAgICAgICAgdmFyIGxhc3REaWdpdCA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIGZpcnN0RGlnaXQgPSBudW1iZXIgLyAxMDtcbiAgICAgICAgICAgIGlmIChsYXN0RGlnaXQgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWlmZWxlclJlZ2VsQXBwbGllc1RvTnVtYmVyKGZpcnN0RGlnaXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGVpZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlcihsYXN0RGlnaXQpO1xuICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA8IDEwMDAwKSB7XG4gICAgICAgICAgICAvLyAzIG9yIDQgZGlnaXRzIC0tPiByZWN1cnNpdmVseSBjaGVjayBmaXJzdCBkaWdpdFxuICAgICAgICAgICAgd2hpbGUgKG51bWJlciA+PSAxMCkge1xuICAgICAgICAgICAgICAgIG51bWJlciA9IG51bWJlciAvIDEwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGVpZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlcihudW1iZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQW55dGhpbmcgbGFyZ2VyIHRoYW4gNCBkaWdpdHM6IHJlY3Vyc2l2ZWx5IGNoZWNrIGZpcnN0IG4tMyBkaWdpdHNcbiAgICAgICAgICAgIG51bWJlciA9IG51bWJlciAvIDEwMDA7XG4gICAgICAgICAgICByZXR1cm4gZWlmZWxlclJlZ2VsQXBwbGllc1RvTnVtYmVyKG51bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbGIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdsYicsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyX0ZlYnJ1YXJfTcOkZXJ6X0FicsOrbGxfTWVlX0p1bmlfSnVsaV9BdWd1c3RfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGV6ZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ0phbi5fRmVici5fTXJ6Ll9BYnIuX01lZV9KdW4uX0p1bC5fQXVnLl9TZXB0Ll9Pa3QuX05vdi5fRGV6Licuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdTb25uZGVnX03DqWluZGVnX0TDq25zY2hkZWdfTcOrdHR3b2NoX0Rvbm5lc2NoZGVnX0ZyZWlkZWdfU2Ftc2NoZGVnJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTby5fTcOpLl9Ew6suX03Dqy5fRG8uX0ZyLl9TYS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU29fTcOpX0TDq19Nw6tfRG9fRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbSBbQXVlcl0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcyBbQXVlcl0nLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIEg6bW0gW0F1ZXJdJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBELiBNTU1NIFlZWVkgSDptbSBbQXVlcl0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tIYXV0IHVtXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tNdWVyIHVtXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3VtXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0fDq3NjaHRlciB1bV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAvLyBEaWZmZXJlbnQgZGF0ZSBzdHJpbmcgZm9yICdEw6tuc2NoZGVnJyAoVHVlc2RheSkgYW5kICdEb25uZXNjaGRlZycgKFRodXJzZGF5KSBkdWUgdG8gcGhvbm9sb2dpY2FsIHJ1bGVcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tMZXNjaHRlbl0gZGRkZCBbdW1dIExUJztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW0xlc2NodGVdIGRkZGQgW3VtXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6IHByb2Nlc3NGdXR1cmVUaW1lLFxuICAgICAgICAgICAgcGFzdDogcHJvY2Vzc1Bhc3RUaW1lLFxuICAgICAgICAgICAgczogJ2UgcHVlciBTZWtvbm5lbicsXG4gICAgICAgICAgICBzczogJyVkIFNla29ubmVuJyxcbiAgICAgICAgICAgIG06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbTogJyVkIE1pbnV0dGVuJyxcbiAgICAgICAgICAgIGg6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoaDogJyVkIFN0b25uZW4nLFxuICAgICAgICAgICAgZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkOiAnJWQgRGVlZycsXG4gICAgICAgICAgICBNOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTU06ICclZCBNw6lpbnQnLFxuICAgICAgICAgICAgeTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5OiAnJWQgSm9lcicsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbGI7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogTGFvIFtsb11cbi8vISBhdXRob3IgOiBSeWFuIEhhcnQgOiBodHRwczovL2dpdGh1Yi5jb20vcnlhbmhhcnQyXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbG8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdsbycsIHtcbiAgICAgICAgbW9udGhzOiAn4Lqh4Lqx4LqH4LqB4Lqt4LqZX+C6geC6uOC6oeC6nuC6sl/guqHgurXgupngurJf4LuA4Lqh4Lqq4LqyX+C6nuC6tuC6lOC6quC6sOC6nuC6sl/guqHgurTgupbgurjgupngurJf4LqB4LuN4Lql4Lqw4LqB4Lq74LqUX+C6quC6tOC6h+C6q+C6sl/guoHgurHgupnguo3gurJf4LqV4Lq44Lql4LqyX+C6nuC6sOC6iOC6tOC6gV/gupfgurHgupnguqfgurInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+C6oeC6seC6h+C6geC6reC6mV/guoHgurjguqHgup7gurJf4Lqh4Lq14LqZ4LqyX+C7gOC6oeC6quC6sl/gup7gurbgupTguqrgurDgup7gurJf4Lqh4Lq04LqW4Lq44LqZ4LqyX+C6geC7jeC6peC6sOC6geC6u+C6lF/guqrgurTguofguqvgurJf4LqB4Lqx4LqZ4LqN4LqyX+C6leC6uOC6peC6sl/gup7gurDguojgurTguoFf4LqX4Lqx4LqZ4Lqn4LqyJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn4Lqt4Lqy4LqX4Lq04LqUX+C6iOC6seC6mV/guq3gurHguofguoTgurLguplf4Lqe4Lq44LqUX+C6nuC6sOC6q+C6seC6lF/guqrgurjguoFf4LuA4Lqq4Lq74LqyJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4LqX4Lq04LqUX+C6iOC6seC6mV/guq3gurHguofguoTgurLguplf4Lqe4Lq44LqUX+C6nuC6sOC6q+C6seC6lF/guqrgurjguoFf4LuA4Lqq4Lq74LqyJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+C6l1/guohf4Lqt4LqEX+C6nl/gup7guqtf4Lqq4LqBX+C6qicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICfguqfgurHguplkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+C6leC6reC6meC7gOC6iuC6u+C7ieC6snzgupXguq3gupngu4HguqXguocvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCA9PT0gJ+C6leC6reC6meC7geC6peC6hyc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgupXguq3gupngu4Dguorgurvgu4ngurInO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C6leC6reC6meC7geC6peC6hyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+C6oeC6t+C7ieC6meC6teC7ieC7gOC6p+C6peC6sl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vguqHgurfgu4nguq3gurfgu4jgupngu4DguqfguqXgurJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW+C6p+C6seC6mV1kZGRkW+C7nOC7ieC6suC7gOC6p+C6peC6sl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vguqHgurfgu4nguqfgurLgupngupngurXgu4ngu4DguqfguqXgurJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+C6p+C6seC6mV1kZGRkW+C7geC6peC7ieC6p+C6meC6teC7ieC7gOC6p+C6peC6sl0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfguq3gurXguoEgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVz4Lqc4LuI4Lqy4LqZ4Lqh4LqyJyxcbiAgICAgICAgICAgIHM6ICfguprgu43gu4jgu4Dgupfgurvgu4jgurLgu4PgupTguqfgurTgupngurLgupfgurUnLFxuICAgICAgICAgICAgc3M6ICclZCDguqfgurTgupngurLgupfgurUnLFxuICAgICAgICAgICAgbTogJzEg4LqZ4Lqy4LqX4Lq1JyxcbiAgICAgICAgICAgIG1tOiAnJWQg4LqZ4Lqy4LqX4Lq1JyxcbiAgICAgICAgICAgIGg6ICcxIOC6iuC6u+C7iOC6p+C7guC6oeC6hycsXG4gICAgICAgICAgICBoaDogJyVkIOC6iuC6u+C7iOC6p+C7guC6oeC6hycsXG4gICAgICAgICAgICBkOiAnMSDguqHgurfgu4knLFxuICAgICAgICAgICAgZGQ6ICclZCDguqHgurfgu4knLFxuICAgICAgICAgICAgTTogJzEg4LuA4LqU4Lq34Lqt4LqZJyxcbiAgICAgICAgICAgIE1NOiAnJWQg4LuA4LqU4Lq34Lqt4LqZJyxcbiAgICAgICAgICAgIHk6ICcxIOC6m+C6tScsXG4gICAgICAgICAgICB5eTogJyVkIOC6m+C6tScsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC8o4LqX4Lq14LuIKVxcZHsxLDJ9LyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuICfgupfgurXgu4gnICsgbnVtYmVyO1xuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGxvO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IExpdGh1YW5pYW4gW2x0XVxuLy8hIGF1dGhvciA6IE1pbmRhdWdhcyBNb3rFq3JhcyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9tbW96dXJhc1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHVuaXRzID0ge1xuICAgICAgICBzczogJ3Nla3VuZMSXX3Nla3VuZMW+acWzX3Nla3VuZGVzJyxcbiAgICAgICAgbTogJ21pbnV0xJdfbWludXTEl3NfbWludXTEmScsXG4gICAgICAgIG1tOiAnbWludXTEl3NfbWludcSNacWzX21pbnV0ZXMnLFxuICAgICAgICBoOiAndmFsYW5kYV92YWxhbmRvc192YWxhbmTEhScsXG4gICAgICAgIGhoOiAndmFsYW5kb3NfdmFsYW5kxbNfdmFsYW5kYXMnLFxuICAgICAgICBkOiAnZGllbmFfZGllbm9zX2RpZW7EhScsXG4gICAgICAgIGRkOiAnZGllbm9zX2RpZW7Fs19kaWVuYXMnLFxuICAgICAgICBNOiAnbcSXbnVvX23El25lc2lvX23El25lc8SvJyxcbiAgICAgICAgTU06ICdtxJduZXNpYWlfbcSXbmVzacWzX23El25lc2l1cycsXG4gICAgICAgIHk6ICdtZXRhaV9tZXTFs19tZXR1cycsXG4gICAgICAgIHl5OiAnbWV0YWlfbWV0xbNfbWV0dXMnLFxuICAgIH07XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlU2Vjb25kcyhudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgIHJldHVybiAna2VsaW9zIHNla3VuZMSXcyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAna2VsacWzIHNla3VuZMW+acWzJyA6ICdrZWxpYXMgc2VrdW5kZXMnO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZVNpbmd1bGFyKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeFxuICAgICAgICAgICAgPyBmb3JtcyhrZXkpWzBdXG4gICAgICAgICAgICA6IGlzRnV0dXJlXG4gICAgICAgICAgICA/IGZvcm1zKGtleSlbMV1cbiAgICAgICAgICAgIDogZm9ybXMoa2V5KVsyXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc3BlY2lhbChudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIG51bWJlciAlIDEwID09PSAwIHx8IChudW1iZXIgPiAxMCAmJiBudW1iZXIgPCAyMCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZvcm1zKGtleSkge1xuICAgICAgICByZXR1cm4gdW5pdHNba2V5XS5zcGxpdCgnXycpO1xuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgcmVzdWx0ICsgdHJhbnNsYXRlU2luZ3VsYXIobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXlbMF0sIGlzRnV0dXJlKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHNwZWNpYWwobnVtYmVyKSA/IGZvcm1zKGtleSlbMV0gOiBmb3JtcyhrZXkpWzBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyBmb3JtcyhrZXkpWzFdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHNwZWNpYWwobnVtYmVyKSA/IGZvcm1zKGtleSlbMV0gOiBmb3JtcyhrZXkpWzJdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICB2YXIgbHQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdsdCcsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICdzYXVzaW9fdmFzYXJpb19rb3ZvX2JhbGFuZMW+aW9fZ2VndcW+xJdzX2JpcsW+ZWxpb19saWVwb3NfcnVncGrFq8SNaW9fcnVnc8SXam9fc3BhbGlvX2xhcGtyacSNaW9fZ3J1b2TFvmlvJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICdzYXVzaXNfdmFzYXJpc19rb3Zhc19iYWxhbmRpc19nZWd1xb7El19iaXLFvmVsaXNfbGllcGFfcnVncGrFq3Rpc19ydWdzxJdqaXNfc3BhbGlzX2xhcGtyaXRpc19ncnVvZGlzJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGlzRm9ybWF0OiAvRFtvRF0/KFxcW1teXFxbXFxdXSpcXF18XFxzKStNTU1NP3xNTU1NPyhcXFtbXlxcW1xcXV0qXFxdfFxccykrRFtvRF0/LyxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdzYXVfdmFzX2tvdl9iYWxfZ2VnX2Jpcl9saWVfcmdwX3Jnc19zcGFfbGFwX2dyZCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6IHtcbiAgICAgICAgICAgIGZvcm1hdDogJ3Nla21hZGllbsSvX3Bpcm1hZGllbsSvX2FudHJhZGllbsSvX3RyZcSNaWFkaWVuxK9fa2V0dmlydGFkaWVuxK9fcGVua3RhZGllbsSvX8WhZcWhdGFkaWVuxK8nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6XG4gICAgICAgICAgICAgICAgJ3Nla21hZGllbmlzX3Bpcm1hZGllbmlzX2FudHJhZGllbmlzX3RyZcSNaWFkaWVuaXNfa2V0dmlydGFkaWVuaXNfcGVua3RhZGllbmlzX8WhZcWhdGFkaWVuaXMnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgaXNGb3JtYXQ6IC9kZGRkIEhIOm1tLyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1Nla19QaXJfQW50X1RyZV9LZXRfUGVuX8WgZcWhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1NfUF9BX1RfS19Qbl/FoCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTDogJ1lZWVkgW20uXSBNTU1NIEQgW2QuXScsXG4gICAgICAgICAgICBMTEw6ICdZWVlZIFttLl0gTU1NTSBEIFtkLl0sIEhIOm1tIFt2YWwuXScsXG4gICAgICAgICAgICBMTExMOiAnWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBkZGRkLCBISDptbSBbdmFsLl0nLFxuICAgICAgICAgICAgbDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgbGw6ICdZWVlZIFttLl0gTU1NTSBEIFtkLl0nLFxuICAgICAgICAgICAgbGxsOiAnWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBISDptbSBbdmFsLl0nLFxuICAgICAgICAgICAgbGxsbDogJ1lZWVkgW20uXSBNTU1NIEQgW2QuXSwgZGRkLCBISDptbSBbdmFsLl0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vFoGlhbmRpZW5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbUnl0b2pdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW1Zha2FyXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tQcmHEl2p1c8SvXSBkZGRkIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAncG8gJXMnLFxuICAgICAgICAgICAgcGFzdDogJ3ByaWXFoSAlcycsXG4gICAgICAgICAgICBzOiB0cmFuc2xhdGVTZWNvbmRzLFxuICAgICAgICAgICAgc3M6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG06IHRyYW5zbGF0ZVNpbmd1bGFyLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6IHRyYW5zbGF0ZVNpbmd1bGFyLFxuICAgICAgICAgICAgaGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQ6IHRyYW5zbGF0ZVNpbmd1bGFyLFxuICAgICAgICAgICAgZGQ6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE06IHRyYW5zbGF0ZVNpbmd1bGFyLFxuICAgICAgICAgICAgTU06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6IHRyYW5zbGF0ZVNpbmd1bGFyLFxuICAgICAgICAgICAgeXk6IHRyYW5zbGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LW9qaS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLW9qaSc7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBsdDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBMYXR2aWFuIFtsdl1cbi8vISBhdXRob3IgOiBLcmlzdGFwcyBLYXJsc29ucyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9za2Frcmlcbi8vISBhdXRob3IgOiBKxIFuaXMgRWxtZXJpcyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9KYW5pc0VcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB1bml0cyA9IHtcbiAgICAgICAgc3M6ICdzZWt1bmRlc19zZWt1bmTEk21fc2VrdW5kZV9zZWt1bmRlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgbTogJ21pbsWrdGVzX21pbsWrdMSTbV9taW7Fq3RlX21pbsWrdGVzJy5zcGxpdCgnXycpLFxuICAgICAgICBtbTogJ21pbsWrdGVzX21pbsWrdMSTbV9taW7Fq3RlX21pbsWrdGVzJy5zcGxpdCgnXycpLFxuICAgICAgICBoOiAnc3R1bmRhc19zdHVuZMSBbV9zdHVuZGFfc3R1bmRhcycuc3BsaXQoJ18nKSxcbiAgICAgICAgaGg6ICdzdHVuZGFzX3N0dW5kxIFtX3N0dW5kYV9zdHVuZGFzJy5zcGxpdCgnXycpLFxuICAgICAgICBkOiAnZGllbmFzX2RpZW7EgW1fZGllbmFfZGllbmFzJy5zcGxpdCgnXycpLFxuICAgICAgICBkZDogJ2RpZW5hc19kaWVuxIFtX2RpZW5hX2RpZW5hcycuc3BsaXQoJ18nKSxcbiAgICAgICAgTTogJ23Ek25lxaFhX23Ek25lxaFpZW1fbcSTbmVzaXNfbcSTbmXFoWknLnNwbGl0KCdfJyksXG4gICAgICAgIE1NOiAnbcSTbmXFoWFfbcSTbmXFoWllbV9txJNuZXNpc19txJNuZcWhaScuc3BsaXQoJ18nKSxcbiAgICAgICAgeTogJ2dhZGFfZ2FkaWVtX2dhZHNfZ2FkaScuc3BsaXQoJ18nKSxcbiAgICAgICAgeXk6ICdnYWRhX2dhZGllbV9nYWRzX2dhZGknLnNwbGl0KCdfJyksXG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gd2l0aG91dFN1ZmZpeCBib29sZWFuIHRydWUgPSBhIGxlbmd0aCBvZiB0aW1lOyBmYWxzZSA9IGJlZm9yZS9hZnRlciBhIHBlcmlvZCBvZiB0aW1lLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvcm1hdChmb3JtcywgbnVtYmVyLCB3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICAvLyBFLmcuIFwiMjEgbWluxat0ZVwiLCBcIjMgbWluxat0ZXNcIi5cbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgJSAxMCA9PT0gMSAmJiBudW1iZXIgJSAxMDAgIT09IDExID8gZm9ybXNbMl0gOiBmb3Jtc1szXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEUuZy4gXCIyMSBtaW7Fq3Rlc1wiIGFzIGluIFwicMSTYyAyMSBtaW7Fq3Rlc1wiLlxuICAgICAgICAgICAgLy8gRS5nLiBcIjMgbWluxat0xJNtXCIgYXMgaW4gXCJwxJNjIDMgbWluxat0xJNtXCIuXG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICUgMTAgPT09IDEgJiYgbnVtYmVyICUgMTAwICE9PSAxMSA/IGZvcm1zWzBdIDogZm9ybXNbMV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lV2l0aFBsdXJhbChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICByZXR1cm4gbnVtYmVyICsgJyAnICsgZm9ybWF0KHVuaXRzW2tleV0sIG51bWJlciwgd2l0aG91dFN1ZmZpeCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZVdpdGhTaW5ndWxhcihudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICByZXR1cm4gZm9ybWF0KHVuaXRzW2tleV0sIG51bWJlciwgd2l0aG91dFN1ZmZpeCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlU2Vjb25kcyhudW1iZXIsIHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnZGHFvmFzIHNla3VuZGVzJyA6ICdkYcW+xIFtIHNla3VuZMSTbSc7XG4gICAgfVxuXG4gICAgdmFyIGx2ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbHYnLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnbEgXJpc19mZWJydcSBcmlzX21hcnRzX2FwcsSrbGlzX21haWpzX2rFq25panNfasWrbGlqc19hdWd1c3RzX3NlcHRlbWJyaXNfb2t0b2JyaXNfbm92ZW1icmlzX2RlY2VtYnJpcycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW5fZmViX21hcl9hcHJfbWFpX2rFq25fasWrbF9hdWdfc2VwX29rdF9ub3ZfZGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdzdsSTdGRpZW5hX3Bpcm1kaWVuYV9vdHJkaWVuYV90cmXFoWRpZW5hX2NldHVydGRpZW5hX3BpZWt0ZGllbmFfc2VzdGRpZW5hJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTdl9QX09fVF9DX1BrX1MnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU3ZfUF9PX1RfQ19Qa19TJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZLicsXG4gICAgICAgICAgICBMTDogJ1lZWVkuIFtnYWRhXSBELiBNTU1NJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVkuIFtnYWRhXSBELiBNTU1NLCBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnWVlZWS4gW2dhZGFdIEQuIE1NTU0sIGRkZGQsIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbxaBvZGllbiBwdWxrc3Rlbl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tSxKt0IHB1bGtzdGVuXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3B1bGtzdGVuXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW1Zha2FyIHB1bGtzdGVuXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tQYWfEgWp1xaHEgV0gZGRkZCBbcHVsa3N0ZW5dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAncMSTYyAlcycsXG4gICAgICAgICAgICBwYXN0OiAncGlybXMgJXMnLFxuICAgICAgICAgICAgczogcmVsYXRpdmVTZWNvbmRzLFxuICAgICAgICAgICAgc3M6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBtOiByZWxhdGl2ZVRpbWVXaXRoU2luZ3VsYXIsXG4gICAgICAgICAgICBtbTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGg6IHJlbGF0aXZlVGltZVdpdGhTaW5ndWxhcixcbiAgICAgICAgICAgIGhoOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgZDogcmVsYXRpdmVUaW1lV2l0aFNpbmd1bGFyLFxuICAgICAgICAgICAgZGQ6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBNOiByZWxhdGl2ZVRpbWVXaXRoU2luZ3VsYXIsXG4gICAgICAgICAgICBNTTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIHk6IHJlbGF0aXZlVGltZVdpdGhTaW5ndWxhcixcbiAgICAgICAgICAgIHl5OiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGx2O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE1vbnRlbmVncmluIFttZV1cbi8vISBhdXRob3IgOiBNaW9kcmFnIE5pa2HEjSA8bWlvZHJhZ0ByZXN0YXJ0aXQubWU+IDogaHR0cHM6Ly9naXRodWIuY29tL21pb2RyYWduaWthY1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHRyYW5zbGF0b3IgPSB7XG4gICAgICAgIHdvcmRzOiB7XG4gICAgICAgICAgICAvL0RpZmZlcmVudCBncmFtbWF0aWNhbCBjYXNlc1xuICAgICAgICAgICAgc3M6IFsnc2VrdW5kJywgJ3Nla3VuZGEnLCAnc2VrdW5kaSddLFxuICAgICAgICAgICAgbTogWydqZWRhbiBtaW51dCcsICdqZWRub2cgbWludXRhJ10sXG4gICAgICAgICAgICBtbTogWydtaW51dCcsICdtaW51dGEnLCAnbWludXRhJ10sXG4gICAgICAgICAgICBoOiBbJ2plZGFuIHNhdCcsICdqZWRub2cgc2F0YSddLFxuICAgICAgICAgICAgaGg6IFsnc2F0JywgJ3NhdGEnLCAnc2F0aSddLFxuICAgICAgICAgICAgZGQ6IFsnZGFuJywgJ2RhbmEnLCAnZGFuYSddLFxuICAgICAgICAgICAgTU06IFsnbWplc2VjJywgJ21qZXNlY2EnLCAnbWplc2VjaSddLFxuICAgICAgICAgICAgeXk6IFsnZ29kaW5hJywgJ2dvZGluZScsICdnb2RpbmEnXSxcbiAgICAgICAgfSxcbiAgICAgICAgY29ycmVjdEdyYW1tYXRpY2FsQ2FzZTogZnVuY3Rpb24gKG51bWJlciwgd29yZEtleSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciA9PT0gMVxuICAgICAgICAgICAgICAgID8gd29yZEtleVswXVxuICAgICAgICAgICAgICAgIDogbnVtYmVyID49IDIgJiYgbnVtYmVyIDw9IDRcbiAgICAgICAgICAgICAgICA/IHdvcmRLZXlbMV1cbiAgICAgICAgICAgICAgICA6IHdvcmRLZXlbMl07XG4gICAgICAgIH0sXG4gICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24gKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgICAgICB2YXIgd29yZEtleSA9IHRyYW5zbGF0b3Iud29yZHNba2V5XTtcbiAgICAgICAgICAgIGlmIChrZXkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyB3b3JkS2V5WzBdIDogd29yZEtleVsxXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgbnVtYmVyICtcbiAgICAgICAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRvci5jb3JyZWN0R3JhbW1hdGljYWxDYXNlKG51bWJlciwgd29yZEtleSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH07XG5cbiAgICB2YXIgbWUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdtZScsIHtcbiAgICAgICAgbW9udGhzOiAnamFudWFyX2ZlYnJ1YXJfbWFydF9hcHJpbF9tYWpfanVuX2p1bF9hdmd1c3Rfc2VwdGVtYmFyX29rdG9iYXJfbm92ZW1iYXJfZGVjZW1iYXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ2phbi5fZmViLl9tYXIuX2Fwci5fbWFqX2p1bl9qdWxfYXZnLl9zZXAuX29rdC5fbm92Ll9kZWMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ25lZGplbGphX3BvbmVkamVsamFrX3V0b3Jha19zcmlqZWRhX8SNZXR2cnRha19wZXRha19zdWJvdGEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICduZWQuX3Bvbi5fdXRvLl9zcmkuX8SNZXQuX3BldC5fc3ViLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICduZV9wb191dF9zcl/EjWVfcGVfc3UnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2RhbmFzIHVdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbc2p1dHJhIHVdIExUJyxcblxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW25lZGplbGp1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbc3JpamVkdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3N1Ym90dV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gZGRkZCBbdV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2p1xI1lIHVdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxhc3RXZWVrRGF5cyA9IFtcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxlXSBbbmVkamVsamVdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFtwb25lZGplbGprYV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxvZ10gW3V0b3JrYV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxlXSBbc3JpamVkZV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxvZ10gW8SNZXR2cnRrYV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxvZ10gW3BldGthXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbGVdIFtzdWJvdGVdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGFzdFdlZWtEYXlzW3RoaXMuZGF5KCldO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnemEgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ3ByaWplICVzJyxcbiAgICAgICAgICAgIHM6ICduZWtvbGlrbyBzZWt1bmRpJyxcbiAgICAgICAgICAgIHNzOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG06IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgaDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBoaDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiAnZGFuJyxcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE06ICdtamVzZWMnLFxuICAgICAgICAgICAgTU06IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgeTogJ2dvZGludScsXG4gICAgICAgICAgICB5eTogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogTWFvcmkgW21pXVxuLy8hIGF1dGhvciA6IEpvaG4gQ29ycmlnYW4gPHJvYmJpZWNsb3NldEBnbWFpbC5jb20+IDogaHR0cHM6Ly9naXRodWIuY29tL2pvaG5pZGVhbFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1pID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbWknLCB7XG4gICAgICAgIG1vbnRoczogJ0tvaGktdMSBdGVfSHVpLXRhbmd1cnVfUG91dMWrLXRlLXJhbmdpX1BhZW5nYS13aMSBd2jEgV9IYXJhdHVhX1BpcGlyaV9IxY1uZ29pbmdvaV9IZXJlLXR1cmkta8WNa8SBX01haHVydV9XaGlyaW5nYS3EgS1udWt1X1doaXJpbmdhLcSBLXJhbmdpX0hha2loZWEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ0tvaGlfSHVpX1BvdV9QYWVfSGFyYV9QaXBpX0jFjW5nb2lfSGVyZV9NYWh1X1doaS1udV9XaGktcmFfSGFraScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNSZWdleDogLyg/OlsnYS16XFx1MDEwMVxcdTAxNERcXHUwMTZCXStcXC0/KXsxLDN9L2ksXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4OiAvKD86WydhLXpcXHUwMTAxXFx1MDE0RFxcdTAxNkJdK1xcLT8pezEsM30vaSxcbiAgICAgICAgbW9udGhzU2hvcnRSZWdleDogLyg/OlsnYS16XFx1MDEwMVxcdTAxNERcXHUwMTZCXStcXC0/KXsxLDN9L2ksXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6IC8oPzpbJ2EtelxcdTAxMDFcXHUwMTREXFx1MDE2Ql0rXFwtPyl7MSwyfS9pLFxuICAgICAgICB3ZWVrZGF5czogJ1LEgXRhcHVfTWFuZV9UxatyZWlfV2VuZXJlaV9UxIFpdGVfUGFyYWlyZV9IxIF0YXJlaScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1RhX01hX1TFq19XZV9UxIFpX1BhX0jEgScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdUYV9NYV9UxatfV2VfVMSBaV9QYV9IxIEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgW2ldIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBbaV0gSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tpIHRlaWUgbWFoYW5hLCBpXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2Fwb3BvIGldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbaV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tpbmFuYWhpIGldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbd2hha2FtdXR1bmdhIGldIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaSByb3RvIGkgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGkgbXVhJyxcbiAgICAgICAgICAgIHM6ICd0ZSBoxJNrb25hIHJ1YXJ1YScsXG4gICAgICAgICAgICBzczogJyVkIGjEk2tvbmEnLFxuICAgICAgICAgICAgbTogJ2hlIG1lbmV0aScsXG4gICAgICAgICAgICBtbTogJyVkIG1lbmV0aScsXG4gICAgICAgICAgICBoOiAndGUgaGFvcmEnLFxuICAgICAgICAgICAgaGg6ICclZCBoYW9yYScsXG4gICAgICAgICAgICBkOiAnaGUgcmEnLFxuICAgICAgICAgICAgZGQ6ICclZCByYScsXG4gICAgICAgICAgICBNOiAnaGUgbWFyYW1hJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWFyYW1hJyxcbiAgICAgICAgICAgIHk6ICdoZSB0YXUnLFxuICAgICAgICAgICAgeXk6ICclZCB0YXUnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWw6ICclZMK6JyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1pO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE1hY2Vkb25pYW4gW21rXVxuLy8hIGF1dGhvciA6IEJvcmlzbGF2IE1pY2tvdiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9CMGswXG4vLyEgYXV0aG9yIDogU2FzaGtvIFRvZG9yb3YgOiBodHRwczovL2dpdGh1Yi5jb20vYmt5Y2VoXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbWsgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdtaycsIHtcbiAgICAgICAgbW9udGhzOiAn0ZjQsNC90YPQsNGA0Lhf0YTQtdCy0YDRg9Cw0YDQuF/QvNCw0YDRgl/QsNC/0YDQuNC7X9C80LDRmF/RmNGD0L3QuF/RmNGD0LvQuF/QsNCy0LPRg9GB0YJf0YHQtdC/0YLQtdC80LLRgNC4X9C+0LrRgtC+0LzQstGA0Lhf0L3QvtC10LzQstGA0Lhf0LTQtdC60LXQvNCy0YDQuCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfRmNCw0L1f0YTQtdCyX9C80LDRgF/QsNC/0YBf0LzQsNGYX9GY0YPQvV/RmNGD0Ltf0LDQstCzX9GB0LXQv1/QvtC60YJf0L3QvtC1X9C00LXQuicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICfQvdC10LTQtdC70LBf0L/QvtC90LXQtNC10LvQvdC40Lpf0LLRgtC+0YDQvdC40Lpf0YHRgNC10LTQsF/Rh9C10YLQstGA0YLQvtC6X9C/0LXRgtC+0Lpf0YHQsNCx0L7RgtCwJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn0L3QtdC0X9C/0L7QvV/QstGC0L5f0YHRgNC1X9GH0LXRgl/Qv9C10YJf0YHQsNCxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9C9ZV/Qv29f0LLRgl/RgdGAX9GH0LVf0L/QtV/RgWEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnRC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9CU0LXQvdC10YEg0LLQvl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vQo9GC0YDQtSDQstC+XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vQktC+XSBkZGRkIFvQstC+XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9CS0YfQtdGA0LAg0LLQvl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CY0LfQvNC40L3QsNGC0LDRgtCwXSBkZGRkIFvQstC+XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CY0LfQvNC40L3QsNGC0LjQvtGCXSBkZGRkIFvQstC+XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn0LfQsCAlcycsXG4gICAgICAgICAgICBwYXN0OiAn0L/RgNC10LQgJXMnLFxuICAgICAgICAgICAgczogJ9C90LXQutC+0LvQutGDINGB0LXQutGD0L3QtNC4JyxcbiAgICAgICAgICAgIHNzOiAnJWQg0YHQtdC60YPQvdC00LgnLFxuICAgICAgICAgICAgbTogJ9C10LTQvdCwINC80LjQvdGD0YLQsCcsXG4gICAgICAgICAgICBtbTogJyVkINC80LjQvdGD0YLQuCcsXG4gICAgICAgICAgICBoOiAn0LXQtNC10L0g0YfQsNGBJyxcbiAgICAgICAgICAgIGhoOiAnJWQg0YfQsNGB0LAnLFxuICAgICAgICAgICAgZDogJ9C10LTQtdC9INC00LXQvScsXG4gICAgICAgICAgICBkZDogJyVkINC00LXQvdCwJyxcbiAgICAgICAgICAgIE06ICfQtdC00LXQvSDQvNC10YHQtdGGJyxcbiAgICAgICAgICAgIE1NOiAnJWQg0LzQtdGB0LXRhtC4JyxcbiAgICAgICAgICAgIHk6ICfQtdC00L3QsCDQs9C+0LTQuNC90LAnLFxuICAgICAgICAgICAgeXk6ICclZCDQs9C+0LTQuNC90LgnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tKNC10LJ80LXQvXzRgtC4fNCy0Lh80YDQuHzQvNC4KS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBsYXN0RGlnaXQgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBsYXN0MkRpZ2l0cyA9IG51bWJlciAlIDEwMDtcbiAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QtdCyJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdDJEaWdpdHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QtdC9JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdDJEaWdpdHMgPiAxMCAmJiBsYXN0MkRpZ2l0cyA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0YLQuCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3REaWdpdCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdCy0LgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0RGlnaXQgPT09IDIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3RgNC4JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdERpZ2l0ID09PSA3IHx8IGxhc3REaWdpdCA9PT0gOCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdC80LgnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3RgtC4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1rO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE1hbGF5YWxhbSBbbWxdXG4vLyEgYXV0aG9yIDogRmxveWQgUGluayA6IGh0dHBzOi8vZ2l0aHViLmNvbS9mbG95ZHBpbmtcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtbCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21sJywge1xuICAgICAgICBtb250aHM6ICfgtJzgtKjgtYHgtLXgtLDgtL9f4LSr4LWG4LSs4LWN4LSw4LWB4LS14LSw4LS/X+C0ruC0vuC1vOC0muC1jeC0muC1jV/gtI/gtKrgtY3gtLDgtL/gtb1f4LSu4LWH4LSv4LWNX+C0nOC1guC1ul/gtJzgtYLgtLLgtYhf4LST4LSX4LS44LWN4LSx4LWN4LSx4LWNX+C0uOC1huC0quC1jeC0seC1jeC0seC0guC0rOC1vF/gtJLgtJXgtY3gtJ/gtYvgtKzgtbxf4LSo4LS14LSC4LSs4LW8X+C0oeC0v+C0uOC0guC0rOC1vCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn4LSc4LSo4LWBLl/gtKvgtYbgtKzgtY3gtLDgtYEuX+C0ruC0vuC1vC5f4LSP4LSq4LWN4LSw4LS/Ll/gtK7gtYfgtK/gtY1f4LSc4LWC4LW6X+C0nOC1guC0suC1iC5f4LST4LSXLl/gtLjgtYbgtKrgtY3gtLHgtY3gtLEuX+C0kuC0leC1jeC0n+C1iy5f4LSo4LS14LSCLl/gtKHgtL/gtLjgtIIuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ+C0nuC0vuC0r+C0seC0vuC0tOC1jeC0ml/gtKTgtL/gtJngtY3gtJXgtLPgtL7gtLTgtY3gtJpf4LSa4LWK4LS14LWN4LS14LS+4LS04LWN4LSaX+C0rOC1geC0p+C0qOC0vuC0tOC1jeC0ml/gtLXgtY3gtK/gtL7gtLTgtL7gtLTgtY3gtJpf4LS14LWG4LSz4LWN4LSz4LS/4LSv4LS+4LS04LWN4LSaX+C0tuC0qOC0v+C0r+C0vuC0tOC1jeC0micuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4LSe4LS+4LSv4LW8X+C0pOC0v+C0meC1jeC0leC1vl/gtJrgtYrgtLXgtY3gtLVf4LSs4LWB4LSn4LW7X+C0teC1jeC0r+C0vuC0tOC0gl/gtLXgtYbgtLPgtY3gtLPgtL9f4LS24LSo4LS/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+C0nuC0vl/gtKTgtL9f4LSa4LWKX+C0rOC1gV/gtLXgtY3gtK/gtL5f4LS14LWGX+C0ticuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnQSBoOm1tIC3gtKjgtYEnLFxuICAgICAgICAgICAgTFRTOiAnQSBoOm1tOnNzIC3gtKjgtYEnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSwgQSBoOm1tIC3gtKjgtYEnLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0gLeC0qOC1gScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+C0h+C0qOC1jeC0qOC1jV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vgtKjgtL7gtLPgtYZdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCwgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vgtIfgtKjgtY3gtKjgtLLgtYZdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+C0leC0tOC0v+C0nuC1jeC0nl0gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDgtJXgtLTgtL/gtJ7gtY3gtJ7gtY0nLFxuICAgICAgICAgICAgcGFzdDogJyVzIOC0ruC1geC1u+C0quC1jScsXG4gICAgICAgICAgICBzOiAn4LSF4LW94LSqIOC0qOC0v+C0ruC0v+C0t+C0meC1jeC0meC1vicsXG4gICAgICAgICAgICBzczogJyVkIOC0uOC1huC0leC1jeC0leC1u+C0oeC1jScsXG4gICAgICAgICAgICBtOiAn4LSS4LSw4LWBIOC0ruC0v+C0qOC0v+C0seC1jeC0seC1jScsXG4gICAgICAgICAgICBtbTogJyVkIOC0ruC0v+C0qOC0v+C0seC1jeC0seC1jScsXG4gICAgICAgICAgICBoOiAn4LSS4LSw4LWBIOC0ruC0o+C0v+C0leC1jeC0leC1guC1vCcsXG4gICAgICAgICAgICBoaDogJyVkIOC0ruC0o+C0v+C0leC1jeC0leC1guC1vCcsXG4gICAgICAgICAgICBkOiAn4LSS4LSw4LWBIOC0puC0v+C0teC0uOC0gicsXG4gICAgICAgICAgICBkZDogJyVkIOC0puC0v+C0teC0uOC0gicsXG4gICAgICAgICAgICBNOiAn4LSS4LSw4LWBIOC0ruC0vuC0uOC0gicsXG4gICAgICAgICAgICBNTTogJyVkIOC0ruC0vuC0uOC0gicsXG4gICAgICAgICAgICB5OiAn4LSS4LSw4LWBIOC0teC1vOC0t+C0gicsXG4gICAgICAgICAgICB5eTogJyVkIOC0teC1vOC0t+C0gicsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gtLDgtL7gtKTgtY3gtLDgtL984LSw4LS+4LS14LS/4LSy4LWGfOC0ieC0muC1jeC0miDgtJXgtLTgtL/gtJ7gtY3gtJ7gtY184LS14LWI4LSV4LWB4LSo4LWN4LSo4LWH4LSw4LSCfOC0sOC0vuC0pOC1jeC0sOC0vy9pLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgKG1lcmlkaWVtID09PSAn4LSw4LS+4LSk4LWN4LSw4LS/JyAmJiBob3VyID49IDQpIHx8XG4gICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfgtIngtJrgtY3gtJog4LSV4LS04LS/4LSe4LWN4LSe4LWNJyB8fFxuICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn4LS14LWI4LSV4LWB4LSo4LWN4LSo4LWH4LSw4LSCJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C0sOC0vuC0pOC1jeC0sOC0vyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LSw4LS+4LS14LS/4LSy4LWGJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgtIngtJrgtY3gtJog4LSV4LS04LS/4LSe4LWN4LSe4LWNJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgtLXgtYjgtJXgtYHgtKjgtY3gtKjgtYfgtLDgtIInO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C0sOC0vuC0pOC1jeC0sOC0vyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWw7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogTW9uZ29saWFuIFttbl1cbi8vISBhdXRob3IgOiBKYXZraGxhbnR1Z3MgTnlhbWRvcmogOiBodHRwczovL2dpdGh1Yi5jb20vamF2a2hhYW5qN1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAn0YXRjdC00YXRjdC9INGB0LXQutGD0L3QtCcgOiAn0YXRjdC00YXRjdC9INGB0LXQutGD0L3QtNGL0L0nO1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAod2l0aG91dFN1ZmZpeCA/ICcg0YHQtdC60YPQvdC0JyA6ICcg0YHQtdC60YPQvdC00YvQvScpO1xuICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICBjYXNlICdtbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICh3aXRob3V0U3VmZml4ID8gJyDQvNC40L3Rg9GCJyA6ICcg0LzQuNC90YPRgtGL0L0nKTtcbiAgICAgICAgICAgIGNhc2UgJ2gnOlxuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAod2l0aG91dFN1ZmZpeCA/ICcg0YbQsNCzJyA6ICcg0YbQsNCz0LjQudC9Jyk7XG4gICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHdpdGhvdXRTdWZmaXggPyAnINOp0LTTqdGAJyA6ICcg06nQtNGA0LjQudC9Jyk7XG4gICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHdpdGhvdXRTdWZmaXggPyAnINGB0LDRgCcgOiAnINGB0LDRgNGL0L0nKTtcbiAgICAgICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAod2l0aG91dFN1ZmZpeCA/ICcg0LbQuNC7JyA6ICcg0LbQuNC70LjQudC9Jyk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbW4gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdtbicsIHtcbiAgICAgICAgbW9udGhzOiAn0J3RjdCz0LTSr9Cz0Y3RjdGAINGB0LDRgF/QpdC+0ZHRgNC00YPQs9Cw0LDRgCDRgdCw0YBf0JPRg9GA0LDQstC00YPQs9Cw0LDRgCDRgdCw0YBf0JTTqdGA06nQstC00q/Qs9GN0Y3RgCDRgdCw0YBf0KLQsNCy0LTRg9Cz0LDQsNGAINGB0LDRgF/Ql9GD0YDQs9Cw0LTRg9Cz0LDQsNGAINGB0LDRgF/QlNC+0LvQtNGD0LPQsNCw0YAg0YHQsNGAX9Cd0LDQudC80LTRg9Cz0LDQsNGAINGB0LDRgF/QldGB0LTSr9Cz0Y3RjdGAINGB0LDRgF/QkNGA0LDQstC00YPQs9Cw0LDRgCDRgdCw0YBf0JDRgNCy0LDQvSDQvdGN0LPQtNKv0LPRjdGN0YAg0YHQsNGAX9CQ0YDQstCw0L0g0YXQvtGR0YDQtNGD0LPQsNCw0YAg0YHQsNGAJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICcxINGB0LDRgF8yINGB0LDRgF8zINGB0LDRgF80INGB0LDRgF81INGB0LDRgF82INGB0LDRgF83INGB0LDRgF84INGB0LDRgF85INGB0LDRgF8xMCDRgdCw0YBfMTEg0YHQsNGAXzEyINGB0LDRgCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ9Cd0Y/QvF/QlNCw0LLQsNCwX9Cc0Y/Qs9C80LDRgF/Qm9GF0LDQs9Cy0LBf0J/Sr9GA0Y3Qsl/QkdCw0LDRgdCw0L1f0JHRj9C80LHQsCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9Cd0Y/QvF/QlNCw0LJf0JzRj9CzX9Cb0YXQsF/Qn9Kv0YBf0JHQsNCwX9CR0Y/QvCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfQndGPX9CU0LBf0JzRj1/Qm9GFX9Cf0q9f0JHQsF/QkdGPJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIExMOiAnWVlZWSDQvtC90YsgTU1NTdGL0L0gRCcsXG4gICAgICAgICAgICBMTEw6ICdZWVlZINC+0L3RiyBNTU1N0YvQvSBEIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBZWVlZINC+0L3RiyBNTU1N0YvQvSBEIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9Ku06h80q7QpS9pLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCA9PT0gJ9Ku0KUnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0q7TqCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0q7QpSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9Oo0L3TqdOp0LTTqdGAXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9Cc0LDRgNCz0LDQsNGIXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vQmNGA0Y3RhV0gZGRkZCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9Oo0YfQuNCz0LTTqdGAXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vTqNC90LPTqdGA0YHTqdC9XSBkZGRkIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg0LTQsNGA0LDQsCcsXG4gICAgICAgICAgICBwYXN0OiAnJXMg06nQvNC906knLFxuICAgICAgICAgICAgczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgc3M6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZGQ6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE1NOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5OiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5eTogdHJhbnNsYXRlLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0g06nQtNOp0YAvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcg06nQtNOp0YAnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbW47XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogTWFyYXRoaSBbbXJdXG4vLyEgYXV0aG9yIDogSGFyc2hhZCBLYWxlIDogaHR0cHM6Ly9naXRodWIuY29tL2thbGVodlxuLy8hIGF1dGhvciA6IFZpdmVrIEF0aGFseWUgOiBodHRwczovL2dpdGh1Yi5jb20vdm5hdGhhbHllXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgMTogJ+ClpycsXG4gICAgICAgICAgICAyOiAn4KWoJyxcbiAgICAgICAgICAgIDM6ICfgpaknLFxuICAgICAgICAgICAgNDogJ+ClqicsXG4gICAgICAgICAgICA1OiAn4KWrJyxcbiAgICAgICAgICAgIDY6ICfgpawnLFxuICAgICAgICAgICAgNzogJ+ClrScsXG4gICAgICAgICAgICA4OiAn4KWuJyxcbiAgICAgICAgICAgIDk6ICfgpa8nLFxuICAgICAgICAgICAgMDogJ+ClpicsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfgpacnOiAnMScsXG4gICAgICAgICAgICAn4KWoJzogJzInLFxuICAgICAgICAgICAgJ+ClqSc6ICczJyxcbiAgICAgICAgICAgICfgpaonOiAnNCcsXG4gICAgICAgICAgICAn4KWrJzogJzUnLFxuICAgICAgICAgICAgJ+ClrCc6ICc2JyxcbiAgICAgICAgICAgICfgpa0nOiAnNycsXG4gICAgICAgICAgICAn4KWuJzogJzgnLFxuICAgICAgICAgICAgJ+Clryc6ICc5JyxcbiAgICAgICAgICAgICfgpaYnOiAnMCcsXG4gICAgICAgIH07XG5cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWVNcihudW1iZXIsIHdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIG91dHB1dCA9ICcnO1xuICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgc3dpdGNoIChzdHJpbmcpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ+CkleCkvuCkueClgCDgpLjgpYfgpJXgpILgpKYnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICclZCDgpLjgpYfgpJXgpILgpKYnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ+Ckj+CklSDgpK7gpL/gpKjgpL/gpJ8nO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdtbSc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICclZCDgpK7gpL/gpKjgpL/gpJ/gpYcnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ+Ckj+CklSDgpKTgpL7gpLgnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICclZCDgpKTgpL7gpLgnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ+Ckj+CklSDgpKbgpL/gpLXgpLgnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICclZCDgpKbgpL/gpLXgpLgnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ+Ckj+CklSDgpK7gpLngpL/gpKjgpL4nO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICclZCDgpK7gpLngpL/gpKjgpYcnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ+Ckj+CklSDgpLXgpLDgpY3gpLcnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd5eSc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICclZCDgpLXgpLDgpY3gpLfgpYcnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN3aXRjaCAoc3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICfgpJXgpL7gpLngpYAg4KS44KWH4KSV4KSC4KSm4KS+4KSCJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJWQg4KS44KWH4KSV4KSC4KSm4KS+4KSCJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICfgpI/gpJXgpL4g4KSu4KS/4KSo4KS/4KSf4KS+JztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJWQg4KSu4KS/4KSo4KS/4KSf4KS+4KSCJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICfgpI/gpJXgpL4g4KSk4KS+4KS44KS+JztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJWQg4KSk4KS+4KS44KS+4KSCJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICfgpI/gpJXgpL4g4KSm4KS/4KS14KS44KS+JztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJWQg4KSm4KS/4KS14KS44KS+4KSCJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICfgpI/gpJXgpL4g4KSu4KS54KS/4KSo4KWN4KSv4KS+JztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJWQg4KSu4KS54KS/4KSo4KWN4KSv4KS+4KSCJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICfgpI/gpJXgpL4g4KS14KSw4KWN4KS34KS+JztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJWQg4KS14KSw4KWN4KS34KS+4KSCJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dHB1dC5yZXBsYWNlKC8lZC9pLCBudW1iZXIpO1xuICAgIH1cblxuICAgIHZhciBtciA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21yJywge1xuICAgICAgICBtb250aHM6ICfgpJzgpL7gpKjgpYfgpLXgpL7gpLDgpYBf4KSr4KWH4KSs4KWN4KSw4KWB4KS14KS+4KSw4KWAX+CkruCkvuCksOCljeCkml/gpI/gpKrgpY3gpLDgpL/gpLJf4KSu4KWHX+CknOClguCkqF/gpJzgpYHgpLLgpYhf4KSR4KSX4KS44KWN4KSfX+CkuOCkquCljeCkn+Clh+CkguCkrOCksF/gpJHgpJXgpY3gpJ/gpYvgpKzgpLBf4KSo4KWL4KS14KWN4KS54KWH4KSC4KSs4KSwX+CkoeCkv+CkuOClh+CkguCkrOCksCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn4KSc4KS+4KSo4KWHLl/gpKvgpYfgpKzgpY3gpLDgpYEuX+CkruCkvuCksOCljeCkmi5f4KSP4KSq4KWN4KSw4KS/Ll/gpK7gpYcuX+CknOClguCkqC5f4KSc4KWB4KSy4KWILl/gpJHgpJcuX+CkuOCkquCljeCkn+Clh+Ckgi5f4KSR4KSV4KWN4KSf4KWLLl/gpKjgpYvgpLXgpY3gpLngpYfgpIIuX+CkoeCkv+CkuOClh+Ckgi4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICfgpLDgpLXgpL/gpLXgpL7gpLBf4KS44KWL4KSu4KS14KS+4KSwX+CkruCkguCkl+Cks+CkteCkvuCksF/gpKzgpYHgpKfgpLXgpL7gpLBf4KSX4KWB4KSw4KWC4KS14KS+4KSwX+CktuClgeCkleCljeCksOCkteCkvuCksF/gpLbgpKjgpL/gpLXgpL7gpLAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgpLDgpLXgpL9f4KS44KWL4KSuX+CkruCkguCkl+Cks1/gpKzgpYHgpKdf4KSX4KWB4KSw4KWCX+CktuClgeCkleCljeCksF/gpLbgpKjgpL8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4KSwX+CkuOCli1/gpK7gpIJf4KSs4KWBX+Ckl+ClgV/gpLbgpYFf4KS2Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0g4KS14KS+4KSc4KSk4KS+JyxcbiAgICAgICAgICAgIExUUzogJ0EgaDptbTpzcyDgpLXgpL7gpJzgpKTgpL4nLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSwgQSBoOm1tIOCkteCkvuCknOCkpOCkvicsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSDgpLXgpL7gpJzgpKTgpL4nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgpIbgpJxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4KSJ4KSm4KWN4KSv4KS+XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4KSV4KS+4KSyXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgpK7gpL7gpJfgpYDgpLJdIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXPgpK7gpKfgpY3gpK/gpYcnLFxuICAgICAgICAgICAgcGFzdDogJyVz4KSq4KWC4KSw4KWN4KS14KWAJyxcbiAgICAgICAgICAgIHM6IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgc3M6IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgbTogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBtbTogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBoOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIGhoOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIGQ6IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgZGQ6IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgTTogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBNTTogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICB5OiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIHl5OiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Clp+ClqOClqeClquClq+ClrOClreClruClr+Clpl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+CkquCkueCkvuCkn+Clh3zgpLjgpJXgpL7gpLPgpYB84KSm4KWB4KSq4KS+4KSw4KWAfOCkuOCkvuCkr+CkguCkleCkvuCks+ClgHzgpLDgpL7gpKTgpY3gpLDgpYAvLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgpKrgpLngpL7gpJ/gpYcnIHx8IG1lcmlkaWVtID09PSAn4KS44KSV4KS+4KSz4KWAJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ+CkpuClgeCkquCkvuCksOClgCcgfHxcbiAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ+CkuOCkvuCkr+CkguCkleCkvuCks+ClgCcgfHxcbiAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ+CksOCkvuCkpOCljeCksOClgCdcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEyID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyID49IDAgJiYgaG91ciA8IDYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkquCkueCkvuCkn+Clhyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KS44KSV4KS+4KSz4KWAJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpKbgpYHgpKrgpL7gpLDgpYAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkuOCkvuCkr+CkguCkleCkvuCks+ClgCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSw4KS+4KSk4KWN4KSw4KWAJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1yO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE1hbGF5IFttcy1teV1cbi8vISBub3RlIDogREVQUkVDQVRFRCwgdGhlIGNvcnJlY3Qgb25lIGlzIFttc11cbi8vISBhdXRob3IgOiBXZWxkYW4gSmFtaWxpIDogaHR0cHM6Ly9naXRodWIuY29tL3dlbGRhblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1zTXkgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdtcy1teScsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyaV9GZWJydWFyaV9NYWNfQXByaWxfTWVpX0p1bl9KdWxhaV9PZ29zX1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0Rpc2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbl9GZWJfTWFjX0Fwcl9NZWlfSnVuX0p1bF9PZ3NfU2VwX09rdF9Ob3ZfRGlzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ0FoYWRfSXNuaW5fU2VsYXNhX1JhYnVfS2hhbWlzX0p1bWFhdF9TYWJ0dScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ0FoZF9Jc25fU2VsX1JhYl9LaGFfSnVtX1NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdBaF9Jc19TbF9SYl9LbV9KbV9TYicuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEgubW0nLFxuICAgICAgICAgICAgTFRTOiAnSEgubW0uc3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL3BhZ2l8dGVuZ2FoYXJpfHBldGFuZ3xtYWxhbS8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ3BhZ2knKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAndGVuZ2FoYXJpJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdwZXRhbmcnIHx8IG1lcmlkaWVtID09PSAnbWFsYW0nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzIDwgMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3BhZ2knO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VycyA8IDE1KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICd0ZW5nYWhhcmknO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VycyA8IDE5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwZXRhbmcnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ21hbGFtJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSGFyaSBpbmkgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbRXNvayBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tLZWxtYXJpbiBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtsZXBhcyBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdkYWxhbSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgeWFuZyBsZXBhcycsXG4gICAgICAgICAgICBzOiAnYmViZXJhcGEgc2FhdCcsXG4gICAgICAgICAgICBzczogJyVkIHNhYXQnLFxuICAgICAgICAgICAgbTogJ3NlbWluaXQnLFxuICAgICAgICAgICAgbW06ICclZCBtaW5pdCcsXG4gICAgICAgICAgICBoOiAnc2VqYW0nLFxuICAgICAgICAgICAgaGg6ICclZCBqYW0nLFxuICAgICAgICAgICAgZDogJ3NlaGFyaScsXG4gICAgICAgICAgICBkZDogJyVkIGhhcmknLFxuICAgICAgICAgICAgTTogJ3NlYnVsYW4nLFxuICAgICAgICAgICAgTU06ICclZCBidWxhbicsXG4gICAgICAgICAgICB5OiAnc2V0YWh1bicsXG4gICAgICAgICAgICB5eTogJyVkIHRhaHVuJyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1zTXk7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogTWFsYXkgW21zXVxuLy8hIGF1dGhvciA6IFdlbGRhbiBKYW1pbGkgOiBodHRwczovL2dpdGh1Yi5jb20vd2VsZGFuXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbXMgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdtcycsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyaV9GZWJydWFyaV9NYWNfQXByaWxfTWVpX0p1bl9KdWxhaV9PZ29zX1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0Rpc2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbl9GZWJfTWFjX0Fwcl9NZWlfSnVuX0p1bF9PZ3NfU2VwX09rdF9Ob3ZfRGlzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ0FoYWRfSXNuaW5fU2VsYXNhX1JhYnVfS2hhbWlzX0p1bWFhdF9TYWJ0dScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ0FoZF9Jc25fU2VsX1JhYl9LaGFfSnVtX1NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdBaF9Jc19TbF9SYl9LbV9KbV9TYicuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEgubW0nLFxuICAgICAgICAgICAgTFRTOiAnSEgubW0uc3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL3BhZ2l8dGVuZ2FoYXJpfHBldGFuZ3xtYWxhbS8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ3BhZ2knKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAndGVuZ2FoYXJpJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdwZXRhbmcnIHx8IG1lcmlkaWVtID09PSAnbWFsYW0nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzIDwgMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3BhZ2knO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VycyA8IDE1KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICd0ZW5nYWhhcmknO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VycyA8IDE5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwZXRhbmcnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ21hbGFtJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSGFyaSBpbmkgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbRXNvayBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tLZWxtYXJpbiBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtsZXBhcyBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdkYWxhbSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgeWFuZyBsZXBhcycsXG4gICAgICAgICAgICBzOiAnYmViZXJhcGEgc2FhdCcsXG4gICAgICAgICAgICBzczogJyVkIHNhYXQnLFxuICAgICAgICAgICAgbTogJ3NlbWluaXQnLFxuICAgICAgICAgICAgbW06ICclZCBtaW5pdCcsXG4gICAgICAgICAgICBoOiAnc2VqYW0nLFxuICAgICAgICAgICAgaGg6ICclZCBqYW0nLFxuICAgICAgICAgICAgZDogJ3NlaGFyaScsXG4gICAgICAgICAgICBkZDogJyVkIGhhcmknLFxuICAgICAgICAgICAgTTogJ3NlYnVsYW4nLFxuICAgICAgICAgICAgTU06ICclZCBidWxhbicsXG4gICAgICAgICAgICB5OiAnc2V0YWh1bicsXG4gICAgICAgICAgICB5eTogJyVkIHRhaHVuJyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1zO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE1hbHRlc2UgKE1hbHRhKSBbbXRdXG4vLyEgYXV0aG9yIDogQWxlc3NhbmRybyBNYXJ1Y2NpYSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbGVzbWFcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtdCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ210Jywge1xuICAgICAgICBtb250aHM6ICdKYW5uYXJfRnJhcl9NYXJ6dV9BcHJpbF9NZWpqdV/EoHVuanVfTHVsanVfQXd3aXNzdV9TZXR0ZW1icnVfT3R0dWJydV9Ob3ZlbWJydV9EacSLZW1icnUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0ZyYV9NYXJfQXByX01lal/EoHVuX0x1bF9Bd3dfU2V0X090dF9Ob3ZfRGnEiycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnSWwtxKZhZGRfSXQtVG5lam5fSXQtVGxpZXRhX0wtRXJiZ8SnYV9JbC3EpmFtaXNfSWwtxKBpbWfEp2FfSXMtU2lidCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnxKZhZF9UbmVfVGxpX0VyYl/EpmFtX8SgaW1fU2liJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ8SmYV9Ubl9UbF9Fcl/EpmFfxKBpX1NpJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0lsbHVtIGZpbC1dTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tHxKdhZGEgZmlsLV1MVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2ZpbC1dTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tJbC1iaWVyYcSnIGZpbC1dTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtsaSBnxKdhZGRhXSBbZmlsLV1MVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2bigJkgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGlsdScsXG4gICAgICAgICAgICBzOiAnZnRpdCBzZWtvbmRpJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vrb25kaScsXG4gICAgICAgICAgICBtOiAnbWludXRhJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRpJyxcbiAgICAgICAgICAgIGg6ICdzaWVnxKdhJyxcbiAgICAgICAgICAgIGhoOiAnJWQgc2llZ8SnYXQnLFxuICAgICAgICAgICAgZDogJ8ShdXJuYXRhJyxcbiAgICAgICAgICAgIGRkOiAnJWQgxKFyYW5ldCcsXG4gICAgICAgICAgICBNOiAneGFoYXInLFxuICAgICAgICAgICAgTU06ICclZCB4aHVyJyxcbiAgICAgICAgICAgIHk6ICdzZW5hJyxcbiAgICAgICAgICAgIHl5OiAnJWQgc25pJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsOiAnJWTCuicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtdDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBCdXJtZXNlIFtteV1cbi8vISBhdXRob3IgOiBTcXVhciB0ZWFtLCBteXNxdWFyLmNvbVxuLy8hIGF1dGhvciA6IERhdmlkIFJvc3NlbGxhdCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9naG9sYWRyXG4vLyEgYXV0aG9yIDogVGluIEF1bmcgTGluIDogaHR0cHM6Ly9naXRodWIuY29tL3RoYW55YXd6aW5taW5cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICAgICAxOiAn4YGBJyxcbiAgICAgICAgICAgIDI6ICfhgYInLFxuICAgICAgICAgICAgMzogJ+GBgycsXG4gICAgICAgICAgICA0OiAn4YGEJyxcbiAgICAgICAgICAgIDU6ICfhgYUnLFxuICAgICAgICAgICAgNjogJ+GBhicsXG4gICAgICAgICAgICA3OiAn4YGHJyxcbiAgICAgICAgICAgIDg6ICfhgYgnLFxuICAgICAgICAgICAgOTogJ+GBiScsXG4gICAgICAgICAgICAwOiAn4YGAJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ+GBgSc6ICcxJyxcbiAgICAgICAgICAgICfhgYInOiAnMicsXG4gICAgICAgICAgICAn4YGDJzogJzMnLFxuICAgICAgICAgICAgJ+GBhCc6ICc0JyxcbiAgICAgICAgICAgICfhgYUnOiAnNScsXG4gICAgICAgICAgICAn4YGGJzogJzYnLFxuICAgICAgICAgICAgJ+GBhyc6ICc3JyxcbiAgICAgICAgICAgICfhgYgnOiAnOCcsXG4gICAgICAgICAgICAn4YGJJzogJzknLFxuICAgICAgICAgICAgJ+GBgCc6ICcwJyxcbiAgICAgICAgfTtcblxuICAgIHZhciBteSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ215Jywge1xuICAgICAgICBtb250aHM6ICfhgIfhgJThgLrhgJThgJ3hgKvhgJvhgK5f4YCW4YCx4YCW4YCx4YCs4YC64YCd4YCr4YCb4YCuX+GAmeGAkOGAul/hgKfhgJXhgLzhgK5f4YCZ4YCxX+GAh+GAveGAlOGAul/hgIfhgLDhgJzhgK3hgK/hgIThgLpf4YCe4YC84YCC4YCv4YCQ4YC6X+GAheGAgOGAuuGAkOGAhOGAuuGAmOGArF/hgKHhgLHhgKzhgIDhgLrhgJDhgK3hgK/hgJjhgKxf4YCU4YCt4YCv4YCd4YCE4YC64YCY4YCsX+GAkuGAruGAh+GAhOGAuuGAmOGArCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfhgIfhgJThgLpf4YCW4YCxX+GAmeGAkOGAul/hgJXhgLzhgK5f4YCZ4YCxX+GAh+GAveGAlOGAul/hgJzhgK3hgK/hgIThgLpf4YCe4YC8X+GAheGAgOGAul/hgKHhgLHhgKzhgIDhgLpf4YCU4YCt4YCvX+GAkuGAricuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICfhgJDhgJThgIThgLrhgLnhgILhgJThgL3hgLFf4YCQ4YCU4YCE4YC64YC54YCc4YCsX+GAoeGAhOGAuuGAueGAguGAq1/hgJfhgK/hgJLhgLnhgJPhgJ/hgLDhgLhf4YCA4YC84YCs4YCe4YCV4YCQ4YCx4YC4X+GAnuGAseGArOGAgOGAvOGArF/hgIXhgJThgLEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfhgJThgL3hgLFf4YCc4YCsX+GAguGAq1/hgJ/hgLDhgLhf4YCA4YC84YCsX+GAnuGAseGArF/hgJThgLEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4YCU4YC94YCxX+GAnOGArF/hgILhgKtf4YCf4YCw4YC4X+GAgOGAvOGArF/hgJ7hgLHhgKxf4YCU4YCxJy5zcGxpdCgnXycpLFxuXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vhgJrhgJThgLEuXSBMVCBb4YCZ4YC+4YCsXScsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+GAmeGAlOGAgOGAuuGAluGAvOGAlOGAul0gTFQgW+GAmeGAvuGArF0nLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIExUIFvhgJnhgL7hgKxdJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4YCZ4YCU4YCxLuGAgF0gTFQgW+GAmeGAvuGArF0nLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4YCV4YC84YCu4YC44YCB4YCy4YC34YCe4YCx4YCsXSBkZGRkIExUIFvhgJnhgL7hgKxdJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn4YCc4YCs4YCZ4YCK4YC64YC3ICVzIOGAmeGAvuGArCcsXG4gICAgICAgICAgICBwYXN0OiAn4YCc4YC94YCU4YC64YCB4YCy4YC34YCe4YCx4YCsICVzIOGAgCcsXG4gICAgICAgICAgICBzOiAn4YCF4YCA4YC54YCA4YCU4YC6LuGAoeGAlOGAiuGAuuGAuOGAhOGAmuGAuicsXG4gICAgICAgICAgICBzczogJyVkIOGAheGAgOGAueGAgOGAlOGAt+GAuicsXG4gICAgICAgICAgICBtOiAn4YCQ4YCF4YC64YCZ4YCt4YCU4YCF4YC6JyxcbiAgICAgICAgICAgIG1tOiAnJWQg4YCZ4YCt4YCU4YCF4YC6JyxcbiAgICAgICAgICAgIGg6ICfhgJDhgIXhgLrhgJThgKzhgJvhgK4nLFxuICAgICAgICAgICAgaGg6ICclZCDhgJThgKzhgJvhgK4nLFxuICAgICAgICAgICAgZDogJ+GAkOGAheGAuuGAm+GAgOGAuicsXG4gICAgICAgICAgICBkZDogJyVkIOGAm+GAgOGAuicsXG4gICAgICAgICAgICBNOiAn4YCQ4YCF4YC64YCcJyxcbiAgICAgICAgICAgIE1NOiAnJWQg4YCcJyxcbiAgICAgICAgICAgIHk6ICfhgJDhgIXhgLrhgJThgL7hgIXhgLonLFxuICAgICAgICAgICAgeXk6ICclZCDhgJThgL7hgIXhgLonLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4YGB4YGC4YGD4YGE4YGF4YGG4YGH4YGI4YGJ4YGAXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbXk7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogTm9yd2VnaWFuIEJva23DpWwgW25iXVxuLy8hIGF1dGhvcnMgOiBFc3BlbiBIb3ZsYW5kc2RhbCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9yZXh4YXJzXG4vLyEgICAgICAgICAgIFNpZ3VyZCBHYXJ0bWFubiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9zaWd1cmRnYVxuLy8hICAgICAgICAgICBTdGVwaGVuIFJhbXRodW4gOiBodHRwczovL2dpdGh1Yi5jb20vc3RlcGhlbnJhbXRodW5cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBuYiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ25iJywge1xuICAgICAgICBtb250aHM6ICdqYW51YXJfZmVicnVhcl9tYXJzX2FwcmlsX21haV9qdW5pX2p1bGlfYXVndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2Rlc2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdqYW4uX2ZlYi5fbWFyc19hcHIuX21haV9qdW5pX2p1bGlfYXVnLl9zZXAuX29rdC5fbm92Ll9kZXMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ3PDuG5kYWdfbWFuZGFnX3RpcnNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2zDuHJkYWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdzw7guX21hLl90aS5fb24uX3RvLl9mci5fbMO4Licuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdzw7hfbWFfdGlfb25fdG9fZnJfbMO4Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBba2wuXSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBELiBNTU1NIFlZWVkgW2tsLl0gSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tpIGRhZyBrbC5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbaSBtb3JnZW4ga2wuXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2tsLl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tpIGfDpXIga2wuXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tmb3JyaWdlXSBkZGRkIFtrbC5dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnb20gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHNpZGVuJyxcbiAgICAgICAgICAgIHM6ICdub2VuIHNla3VuZGVyJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VrdW5kZXInLFxuICAgICAgICAgICAgbTogJ2V0dCBtaW51dHQnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dHRlcicsXG4gICAgICAgICAgICBoOiAnZW4gdGltZScsXG4gICAgICAgICAgICBoaDogJyVkIHRpbWVyJyxcbiAgICAgICAgICAgIGQ6ICdlbiBkYWcnLFxuICAgICAgICAgICAgZGQ6ICclZCBkYWdlcicsXG4gICAgICAgICAgICB3OiAnZW4gdWtlJyxcbiAgICAgICAgICAgIHd3OiAnJWQgdWtlcicsXG4gICAgICAgICAgICBNOiAnZW4gbcOlbmVkJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbcOlbmVkZXInLFxuICAgICAgICAgICAgeTogJ2V0dCDDpXInLFxuICAgICAgICAgICAgeXk6ICclZCDDpXInLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5iO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE5lcGFsZXNlIFtuZV1cbi8vISBhdXRob3IgOiBzdXZhc2ggOiBodHRwczovL2dpdGh1Yi5jb20vc3V2YXNoXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgMTogJ+ClpycsXG4gICAgICAgICAgICAyOiAn4KWoJyxcbiAgICAgICAgICAgIDM6ICfgpaknLFxuICAgICAgICAgICAgNDogJ+ClqicsXG4gICAgICAgICAgICA1OiAn4KWrJyxcbiAgICAgICAgICAgIDY6ICfgpawnLFxuICAgICAgICAgICAgNzogJ+ClrScsXG4gICAgICAgICAgICA4OiAn4KWuJyxcbiAgICAgICAgICAgIDk6ICfgpa8nLFxuICAgICAgICAgICAgMDogJ+ClpicsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfgpacnOiAnMScsXG4gICAgICAgICAgICAn4KWoJzogJzInLFxuICAgICAgICAgICAgJ+ClqSc6ICczJyxcbiAgICAgICAgICAgICfgpaonOiAnNCcsXG4gICAgICAgICAgICAn4KWrJzogJzUnLFxuICAgICAgICAgICAgJ+ClrCc6ICc2JyxcbiAgICAgICAgICAgICfgpa0nOiAnNycsXG4gICAgICAgICAgICAn4KWuJzogJzgnLFxuICAgICAgICAgICAgJ+Clryc6ICc5JyxcbiAgICAgICAgICAgICfgpaYnOiAnMCcsXG4gICAgICAgIH07XG5cbiAgICB2YXIgbmUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCduZScsIHtcbiAgICAgICAgbW9udGhzOiAn4KSc4KSo4KS14KSw4KWAX+Ckq+Clh+CkrOCljeCksOClgeCkteCksOClgF/gpK7gpL7gpLDgpY3gpJpf4KSF4KSq4KWN4KSw4KS/4KSyX+CkruCkiF/gpJzgpYHgpKhf4KSc4KWB4KSy4KS+4KSIX+CkheCkl+Ckt+CljeCkn1/gpLjgpYfgpKrgpY3gpJ/gpYfgpK7gpY3gpKzgpLBf4KSF4KSV4KWN4KSf4KWL4KSs4KSwX+CkqOCli+CkreClh+CkruCljeCkrOCksF/gpKHgpL/gpLjgpYfgpK7gpY3gpKzgpLAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+CknOCkqC5f4KSr4KWH4KSs4KWN4KSw4KWBLl/gpK7gpL7gpLDgpY3gpJpf4KSF4KSq4KWN4KSw4KS/Ll/gpK7gpIhf4KSc4KWB4KSoX+CknOClgeCksuCkvuCkiC5f4KSF4KSXLl/gpLjgpYfgpKrgpY3gpJ8uX+CkheCkleCljeCkn+Cliy5f4KSo4KWL4KSt4KWHLl/gpKHgpL/gpLjgpYcuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAn4KSG4KSH4KSk4KSs4KS+4KSwX+CkuOCli+CkruCkrOCkvuCksF/gpK7gpJngpY3gpJfgpLLgpKzgpL7gpLBf4KSs4KWB4KSn4KSs4KS+4KSwX+CkrOCkv+CkueCkv+CkrOCkvuCksF/gpLbgpYHgpJXgpY3gpLDgpKzgpL7gpLBf4KS24KSo4KS/4KSs4KS+4KSwJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4KSG4KSH4KSkLl/gpLjgpYvgpK4uX+CkruCkmeCljeCkl+Cksi5f4KSs4KWB4KSnLl/gpKzgpL/gpLngpL8uX+CktuClgeCkleCljeCksC5f4KS24KSo4KS/Licuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfgpIYuX+CkuOCliy5f4KSu4KSCLl/gpKzgpYEuX+CkrOCkvy5f4KS24KWBLl/gpLYuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0HgpJXgpYsgaDptbSDgpKzgpJzgpYcnLFxuICAgICAgICAgICAgTFRTOiAnQeCkleCliyBoOm1tOnNzIOCkrOCknOClhycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZLCBB4KSV4KWLIGg6bW0g4KSs4KSc4KWHJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQeCkleCliyBoOm1tIOCkrOCknOClhycsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgpafgpajgpangpargpavgpazgpa3gpa7gpa/gpaZdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gpLDgpL7gpKTgpL984KSs4KS/4KS54KS+4KSofOCkpuCkv+CkieCkgeCkuOCli3zgpLjgpL7gpIHgpJ0vLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgpLDgpL7gpKTgpL8nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpKzgpL/gpLngpL7gpKgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KSm4KS/4KSJ4KSB4KS44KWLJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpLjgpL7gpIHgpJ0nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSw4KS+4KSk4KS/JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpKzgpL/gpLngpL7gpKgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkpuCkv+CkieCkgeCkuOCliyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KS44KS+4KSB4KSdJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLDgpL7gpKTgpL8nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgpIbgpJxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4KSt4KWL4KSy4KS/XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vgpIbgpIngpIHgpKbgpYtdIGRkZGRbLF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vgpLngpL/gpJzgpYtdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+Ckl+Ckj+CkleCli10gZGRkZFssXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVz4KSu4KS+JyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDgpIXgpJfgpL7gpKHgpL8nLFxuICAgICAgICAgICAgczogJ+CkleClh+CkueClgCDgpJXgpY3gpLfgpKMnLFxuICAgICAgICAgICAgc3M6ICclZCDgpLjgpYfgpJXgpYfgpKPgpY3gpKEnLFxuICAgICAgICAgICAgbTogJ+Ckj+CklSDgpK7gpL/gpKjgpYfgpJ8nLFxuICAgICAgICAgICAgbW06ICclZCDgpK7gpL/gpKjgpYfgpJ8nLFxuICAgICAgICAgICAgaDogJ+Ckj+CklSDgpJjgpKPgpY3gpJ/gpL4nLFxuICAgICAgICAgICAgaGg6ICclZCDgpJjgpKPgpY3gpJ/gpL4nLFxuICAgICAgICAgICAgZDogJ+Ckj+CklSDgpKbgpL/gpKgnLFxuICAgICAgICAgICAgZGQ6ICclZCDgpKbgpL/gpKgnLFxuICAgICAgICAgICAgTTogJ+Ckj+CklSDgpK7gpLngpL/gpKjgpL4nLFxuICAgICAgICAgICAgTU06ICclZCDgpK7gpLngpL/gpKjgpL4nLFxuICAgICAgICAgICAgeTogJ+Ckj+CklSDgpKzgpLDgpY3gpLcnLFxuICAgICAgICAgICAgeXk6ICclZCDgpKzgpLDgpY3gpLcnLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRHV0Y2ggKEJlbGdpdW0pIFtubC1iZV1cbi8vISBhdXRob3IgOiBKb3JpcyBSw7ZsaW5nIDogaHR0cHM6Ly9naXRodWIuY29tL2pvcmlzcm9saW5nXG4vLyEgYXV0aG9yIDogSmFjb2IgTWlkZGFnIDogaHR0cHM6Ly9naXRodWIuY29tL21pZGRhZ2pcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtb250aHNTaG9ydFdpdGhEb3RzID1cbiAgICAgICAgICAgICdqYW4uX2ZlYi5fbXJ0Ll9hcHIuX21laV9qdW4uX2p1bC5fYXVnLl9zZXAuX29rdC5fbm92Ll9kZWMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydFdpdGhvdXREb3RzID1cbiAgICAgICAgICAgICdqYW5fZmViX21ydF9hcHJfbWVpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXmphbi9pLFxuICAgICAgICAgICAgL15mZWIvaSxcbiAgICAgICAgICAgIC9ebWFhcnR8bXJ0Lj8kL2ksXG4gICAgICAgICAgICAvXmFwci9pLFxuICAgICAgICAgICAgL15tZWkkL2ksXG4gICAgICAgICAgICAvXmp1bltpLl0/JC9pLFxuICAgICAgICAgICAgL15qdWxbaS5dPyQvaSxcbiAgICAgICAgICAgIC9eYXVnL2ksXG4gICAgICAgICAgICAvXnNlcC9pLFxuICAgICAgICAgICAgL15va3QvaSxcbiAgICAgICAgICAgIC9ebm92L2ksXG4gICAgICAgICAgICAvXmRlYy9pLFxuICAgICAgICBdLFxuICAgICAgICBtb250aHNSZWdleCA9XG4gICAgICAgICAgICAvXihqYW51YXJpfGZlYnJ1YXJpfG1hYXJ0fGFwcmlsfG1laXxqdVtubF1pfGF1Z3VzdHVzfHNlcHRlbWJlcnxva3RvYmVyfG5vdmVtYmVyfGRlY2VtYmVyfGphblxcLj98ZmViXFwuP3xtcnRcXC4/fGFwclxcLj98anVbbmxdXFwuP3xhdWdcXC4/fHNlcFxcLj98b2t0XFwuP3xub3ZcXC4/fGRlY1xcLj8pL2k7XG5cbiAgICB2YXIgbmxCZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ25sLWJlJywge1xuICAgICAgICBtb250aHM6ICdqYW51YXJpX2ZlYnJ1YXJpX21hYXJ0X2FwcmlsX21laV9qdW5pX2p1bGlfYXVndXN0dXNfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiBmdW5jdGlvbiAobSwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRXaXRoRG90cztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoLy1NTU0tLy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRXaXRob3V0RG90c1ttLm1vbnRoKCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRXaXRoRG90c1ttLm1vbnRoKCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIG1vbnRoc1JlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU2hvcnRSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4OlxuICAgICAgICAgICAgL14oamFudWFyaXxmZWJydWFyaXxtYWFydHxhcHJpbHxtZWl8anVbbmxdaXxhdWd1c3R1c3xzZXB0ZW1iZXJ8b2t0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcikvaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDpcbiAgICAgICAgICAgIC9eKGphblxcLj98ZmViXFwuP3xtcnRcXC4/fGFwclxcLj98bWVpfGp1W25sXVxcLj98YXVnXFwuP3xzZXBcXC4/fG9rdFxcLj98bm92XFwuP3xkZWNcXC4/KS9pLFxuXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG5cbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnem9uZGFnX21hYW5kYWdfZGluc2RhZ193b2Vuc2RhZ19kb25kZXJkYWdfdnJpamRhZ196YXRlcmRhZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ3pvLl9tYS5fZGkuX3dvLl9kby5fdnIuX3phLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICd6b19tYV9kaV93b19kb192cl96YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbdmFuZGFhZyBvbV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1ttb3JnZW4gb21dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbZ2lzdGVyZW4gb21dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2FmZ2Vsb3Blbl0gZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnb3ZlciAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgZ2VsZWRlbicsXG4gICAgICAgICAgICBzOiAnZWVuIHBhYXIgc2Vjb25kZW4nLFxuICAgICAgICAgICAgc3M6ICclZCBzZWNvbmRlbicsXG4gICAgICAgICAgICBtOiAnw6nDqW4gbWludXV0JyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlbicsXG4gICAgICAgICAgICBoOiAnw6nDqW4gdXVyJyxcbiAgICAgICAgICAgIGhoOiAnJWQgdXVyJyxcbiAgICAgICAgICAgIGQ6ICfDqcOpbiBkYWcnLFxuICAgICAgICAgICAgZGQ6ICclZCBkYWdlbicsXG4gICAgICAgICAgICBNOiAnw6nDqW4gbWFhbmQnLFxuICAgICAgICAgICAgTU06ICclZCBtYWFuZGVuJyxcbiAgICAgICAgICAgIHk6ICfDqcOpbiBqYWFyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgamFhcicsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdGV8ZGUpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICBudW1iZXIgK1xuICAgICAgICAgICAgICAgIChudW1iZXIgPT09IDEgfHwgbnVtYmVyID09PSA4IHx8IG51bWJlciA+PSAyMCA/ICdzdGUnIDogJ2RlJylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBubEJlO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IER1dGNoIFtubF1cbi8vISBhdXRob3IgOiBKb3JpcyBSw7ZsaW5nIDogaHR0cHM6Ly9naXRodWIuY29tL2pvcmlzcm9saW5nXG4vLyEgYXV0aG9yIDogSmFjb2IgTWlkZGFnIDogaHR0cHM6Ly9naXRodWIuY29tL21pZGRhZ2pcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtb250aHNTaG9ydFdpdGhEb3RzID1cbiAgICAgICAgICAgICdqYW4uX2ZlYi5fbXJ0Ll9hcHIuX21laV9qdW4uX2p1bC5fYXVnLl9zZXAuX29rdC5fbm92Ll9kZWMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydFdpdGhvdXREb3RzID1cbiAgICAgICAgICAgICdqYW5fZmViX21ydF9hcHJfbWVpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXmphbi9pLFxuICAgICAgICAgICAgL15mZWIvaSxcbiAgICAgICAgICAgIC9ebWFhcnR8bXJ0Lj8kL2ksXG4gICAgICAgICAgICAvXmFwci9pLFxuICAgICAgICAgICAgL15tZWkkL2ksXG4gICAgICAgICAgICAvXmp1bltpLl0/JC9pLFxuICAgICAgICAgICAgL15qdWxbaS5dPyQvaSxcbiAgICAgICAgICAgIC9eYXVnL2ksXG4gICAgICAgICAgICAvXnNlcC9pLFxuICAgICAgICAgICAgL15va3QvaSxcbiAgICAgICAgICAgIC9ebm92L2ksXG4gICAgICAgICAgICAvXmRlYy9pLFxuICAgICAgICBdLFxuICAgICAgICBtb250aHNSZWdleCA9XG4gICAgICAgICAgICAvXihqYW51YXJpfGZlYnJ1YXJpfG1hYXJ0fGFwcmlsfG1laXxqdVtubF1pfGF1Z3VzdHVzfHNlcHRlbWJlcnxva3RvYmVyfG5vdmVtYmVyfGRlY2VtYmVyfGphblxcLj98ZmViXFwuP3xtcnRcXC4/fGFwclxcLj98anVbbmxdXFwuP3xhdWdcXC4/fHNlcFxcLj98b2t0XFwuP3xub3ZcXC4/fGRlY1xcLj8pL2k7XG5cbiAgICB2YXIgbmwgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdubCcsIHtcbiAgICAgICAgbW9udGhzOiAnamFudWFyaV9mZWJydWFyaV9tYWFydF9hcHJpbF9tZWlfanVuaV9qdWxpX2F1Z3VzdHVzX3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogZnVuY3Rpb24gKG0sIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aERvdHM7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKC8tTU1NLS8udGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aG91dERvdHNbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aERvdHNbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBtb250aHNSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDpcbiAgICAgICAgICAgIC9eKGphbnVhcml8ZmVicnVhcml8bWFhcnR8YXByaWx8bWVpfGp1W25sXWl8YXVndXN0dXN8c2VwdGVtYmVyfG9rdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1iZXIpL2ksXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6XG4gICAgICAgICAgICAvXihqYW5cXC4/fGZlYlxcLj98bXJ0XFwuP3xhcHJcXC4/fG1laXxqdVtubF1cXC4/fGF1Z1xcLj98c2VwXFwuP3xva3RcXC4/fG5vdlxcLj98ZGVjXFwuPykvaSxcblxuICAgICAgICBtb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ3pvbmRhZ19tYWFuZGFnX2RpbnNkYWdfd29lbnNkYWdfZG9uZGVyZGFnX3ZyaWpkYWdfemF0ZXJkYWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICd6by5fbWEuX2RpLl93by5fZG8uX3ZyLl96YS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnem9fbWFfZGlfd29fZG9fdnJfemEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELU1NLVlZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW3ZhbmRhYWcgb21dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbbW9yZ2VuIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2dpc3RlcmVuIG9tXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1thZmdlbG9wZW5dIGRkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ292ZXIgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGdlbGVkZW4nLFxuICAgICAgICAgICAgczogJ2VlbiBwYWFyIHNlY29uZGVuJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vjb25kZW4nLFxuICAgICAgICAgICAgbTogJ8Opw6luIG1pbnV1dCcsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0ZW4nLFxuICAgICAgICAgICAgaDogJ8Opw6luIHV1cicsXG4gICAgICAgICAgICBoaDogJyVkIHV1cicsXG4gICAgICAgICAgICBkOiAnw6nDqW4gZGFnJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGFnZW4nLFxuICAgICAgICAgICAgdzogJ8Opw6luIHdlZWsnLFxuICAgICAgICAgICAgd3c6ICclZCB3ZWtlbicsXG4gICAgICAgICAgICBNOiAnw6nDqW4gbWFhbmQnLFxuICAgICAgICAgICAgTU06ICclZCBtYWFuZGVuJyxcbiAgICAgICAgICAgIHk6ICfDqcOpbiBqYWFyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgamFhcicsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdGV8ZGUpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICBudW1iZXIgK1xuICAgICAgICAgICAgICAgIChudW1iZXIgPT09IDEgfHwgbnVtYmVyID09PSA4IHx8IG51bWJlciA+PSAyMCA/ICdzdGUnIDogJ2RlJylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBubDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBOeW5vcnNrIFtubl1cbi8vISBhdXRob3JzIDogaHR0cHM6Ly9naXRodWIuY29tL21lY2h1d2luZFxuLy8hICAgICAgICAgICBTdGVwaGVuIFJhbXRodW4gOiBodHRwczovL2dpdGh1Yi5jb20vc3RlcGhlbnJhbXRodW5cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBubiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ25uJywge1xuICAgICAgICBtb250aHM6ICdqYW51YXJfZmVicnVhcl9tYXJzX2FwcmlsX21haV9qdW5pX2p1bGlfYXVndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2Rlc2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdqYW4uX2ZlYi5fbWFyc19hcHIuX21haV9qdW5pX2p1bGlfYXVnLl9zZXAuX29rdC5fbm92Ll9kZXMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ3N1bmRhZ19tw6VuZGFnX3R5c2RhZ19vbnNkYWdfdG9yc2RhZ19mcmVkYWdfbGF1cmRhZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ3N1Ll9tw6UuX3R5Ll9vbi5fdG8uX2ZyLl9sYXUuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ3N1X23DpV90eV9vbl90b19mcl9sYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgW2tsLl0gSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBELiBNTU1NIFlZWVkgW2tsLl0gSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tJIGRhZyBrbG9ra2FdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbSSBtb3Jnb24ga2xva2thXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2tsb2trYV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tJIGfDpXIga2xva2thXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tGw7hyZWfDpWFuZGVdIGRkZGQgW2tsb2trYV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdvbSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgc2lkYW4nLFxuICAgICAgICAgICAgczogJ25va3JlIHNla3VuZCcsXG4gICAgICAgICAgICBzczogJyVkIHNla3VuZCcsXG4gICAgICAgICAgICBtOiAnZWl0IG1pbnV0dCcsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0dCcsXG4gICAgICAgICAgICBoOiAnZWluIHRpbWUnLFxuICAgICAgICAgICAgaGg6ICclZCB0aW1hcicsXG4gICAgICAgICAgICBkOiAnZWluIGRhZycsXG4gICAgICAgICAgICBkZDogJyVkIGRhZ2FyJyxcbiAgICAgICAgICAgIHc6ICdlaSB2ZWtlJyxcbiAgICAgICAgICAgIHd3OiAnJWQgdmVrZXInLFxuICAgICAgICAgICAgTTogJ2VpbiBtw6VuYWQnLFxuICAgICAgICAgICAgTU06ICclZCBtw6VuYWRlcicsXG4gICAgICAgICAgICB5OiAnZWl0IMOlcicsXG4gICAgICAgICAgICB5eTogJyVkIMOlcicsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbm47XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogT2NjaXRhbiwgbGVuZ2Fkb2NpYW4gZGlhbGVjdGUgW29jLWxuY11cbi8vISBhdXRob3IgOiBRdWVudGluIFBBR8OIUyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9RdWVudHkzMVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG9jTG5jID0gbW9tZW50LmRlZmluZUxvY2FsZSgnb2MtbG5jJywge1xuICAgICAgICBtb250aHM6IHtcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6XG4gICAgICAgICAgICAgICAgJ2dlbmnDqHJfZmVicmnDqHJfbWFyw6dfYWJyaWxfbWFpX2p1bmhfanVsaGV0X2Fnb3N0X3NldGVtYnJlX29jdMOyYnJlX25vdmVtYnJlX2RlY2VtYnJlJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZvcm1hdDogXCJkZSBnZW5pw6hyX2RlIGZlYnJpw6hyX2RlIG1hcsOnX2QnYWJyaWxfZGUgbWFpX2RlIGp1bmhfZGUganVsaGV0X2QnYWdvc3RfZGUgc2V0ZW1icmVfZCdvY3TDsmJyZV9kZSBub3ZlbWJyZV9kZSBkZWNlbWJyZVwiLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGlzRm9ybWF0OiAvRFtvRF0/KFxccykrTU1NTS8sXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ2dlbi5fZmVici5fbWFyw6dfYWJyLl9tYWlfanVuaF9qdWxoLl9hZ28uX3NldC5fb2N0Ll9ub3YuX2RlYy4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdkaW1lbmdlX2RpbHVuc19kaW1hcnNfZGltw6hjcmVzX2RpasOydXNfZGl2ZW5kcmVzX2Rpc3NhYnRlJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZGcuX2RsLl9kbS5fZGMuX2RqLl9kdi5fZHMuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2RnX2RsX2RtX2RjX2RqX2R2X2RzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBbZGVdIFlZWVknLFxuICAgICAgICAgICAgbGw6ICdEIE1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBbZGVdIFlZWVkgW2FdIEg6bW0nLFxuICAgICAgICAgICAgbGxsOiAnRCBNTU0gWVlZWSwgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gW2RlXSBZWVlZIFthXSBIOm1tJyxcbiAgICAgICAgICAgIGxsbGw6ICdkZGQgRCBNTU0gWVlZWSwgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW3XDqGkgYV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tkZW1hbiBhXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2FdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbacOociBhXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW3Bhc3NhdCBhXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogXCJkJ2FxdcOtICVzXCIsXG4gICAgICAgICAgICBwYXN0OiAnZmEgJXMnLFxuICAgICAgICAgICAgczogJ3VuYXMgc2Vnb25kYXMnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWdvbmRhcycsXG4gICAgICAgICAgICBtOiAndW5hIG1pbnV0YScsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0YXMnLFxuICAgICAgICAgICAgaDogJ3VuYSBvcmEnLFxuICAgICAgICAgICAgaGg6ICclZCBvcmFzJyxcbiAgICAgICAgICAgIGQ6ICd1biBqb3JuJyxcbiAgICAgICAgICAgIGRkOiAnJWQgam9ybnMnLFxuICAgICAgICAgICAgTTogJ3VuIG1lcycsXG4gICAgICAgICAgICBNTTogJyVkIG1lc2VzJyxcbiAgICAgICAgICAgIHk6ICd1biBhbicsXG4gICAgICAgICAgICB5eTogJyVkIGFucycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShyfG58dHzDqHxhKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgdmFyIG91dHB1dCA9XG4gICAgICAgICAgICAgICAgbnVtYmVyID09PSAxXG4gICAgICAgICAgICAgICAgICAgID8gJ3InXG4gICAgICAgICAgICAgICAgICAgIDogbnVtYmVyID09PSAyXG4gICAgICAgICAgICAgICAgICAgID8gJ24nXG4gICAgICAgICAgICAgICAgICAgIDogbnVtYmVyID09PSAzXG4gICAgICAgICAgICAgICAgICAgID8gJ3InXG4gICAgICAgICAgICAgICAgICAgIDogbnVtYmVyID09PSA0XG4gICAgICAgICAgICAgICAgICAgID8gJ3QnXG4gICAgICAgICAgICAgICAgICAgIDogJ8OoJztcbiAgICAgICAgICAgIGlmIChwZXJpb2QgPT09ICd3JyB8fCBwZXJpb2QgPT09ICdXJykge1xuICAgICAgICAgICAgICAgIG91dHB1dCA9ICdhJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gb2NMbmM7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogUHVuamFiaSAoSW5kaWEpIFtwYS1pbl1cbi8vISBhdXRob3IgOiBIYXJwcmVldCBTaW5naCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9oYXJwcmVldGtoYWxzYWd0Yml0XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgMTogJ+CppycsXG4gICAgICAgICAgICAyOiAn4KmoJyxcbiAgICAgICAgICAgIDM6ICfgqaknLFxuICAgICAgICAgICAgNDogJ+CpqicsXG4gICAgICAgICAgICA1OiAn4KmrJyxcbiAgICAgICAgICAgIDY6ICfgqawnLFxuICAgICAgICAgICAgNzogJ+CprScsXG4gICAgICAgICAgICA4OiAn4KmuJyxcbiAgICAgICAgICAgIDk6ICfgqa8nLFxuICAgICAgICAgICAgMDogJ+CppicsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfgqacnOiAnMScsXG4gICAgICAgICAgICAn4KmoJzogJzInLFxuICAgICAgICAgICAgJ+CpqSc6ICczJyxcbiAgICAgICAgICAgICfgqaonOiAnNCcsXG4gICAgICAgICAgICAn4KmrJzogJzUnLFxuICAgICAgICAgICAgJ+CprCc6ICc2JyxcbiAgICAgICAgICAgICfgqa0nOiAnNycsXG4gICAgICAgICAgICAn4KmuJzogJzgnLFxuICAgICAgICAgICAgJ+Cpryc6ICc5JyxcbiAgICAgICAgICAgICfgqaYnOiAnMCcsXG4gICAgICAgIH07XG5cbiAgICB2YXIgcGFJbiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3BhLWluJywge1xuICAgICAgICAvLyBUaGVyZSBhcmUgbW9udGhzIG5hbWUgYXMgcGVyIE5hbmFrc2hhaGkgQ2FsZW5kYXIgYnV0IHRoZXkgYXJlIG5vdCB1c2VkIGFzIHJpZ2lkbHkgaW4gbW9kZXJuIFB1bmphYmkuXG4gICAgICAgIG1vbnRoczogJ+ConOCoqOCoteCosOCpgF/gqKvgqLzgqLDgqLXgqLDgqYBf4Kiu4Ki+4Kiw4KiaX+CoheCoquCpjeCosOCpiOCosl/gqK7gqIhf4Kic4KmC4KioX+ConOCpgeCosuCovuCoiF/gqIXgqJfgqLjgqKRf4Ki44Kik4Kmw4Kis4KiwX+CoheColeCopOCpguCorOCosF/gqKjgqLXgqbDgqKzgqLBf4Kim4Ki44Kmw4Kis4KiwJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfgqJzgqKjgqLXgqLDgqYBf4Kir4Ki84Kiw4Ki14Kiw4KmAX+CoruCovuCosOComl/gqIXgqKrgqY3gqLDgqYjgqLJf4Kiu4KiIX+ConOCpguCoqF/gqJzgqYHgqLLgqL7gqIhf4KiF4KiX4Ki44KikX+CouOCopOCpsOCorOCosF/gqIXgqJXgqKTgqYLgqKzgqLBf4Kio4Ki14Kmw4Kis4KiwX+CopuCouOCpsOCorOCosCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ+CokOCopOCoteCovuCosF/gqLjgqYvgqK7gqLXgqL7gqLBf4Kiu4Kmw4KiX4Kiy4Ki14Ki+4KiwX+CorOCpgeCop+CoteCovuCosF/gqLXgqYDgqLDgqLXgqL7gqLBf4Ki44Ki84KmB4Kmx4KiV4Kiw4Ki14Ki+4KiwX+CouOCovOCoqOCpgOComuCosOCoteCovuCosCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+CokOCopF/gqLjgqYvgqK5f4Kiu4Kmw4KiX4KiyX+CorOCpgeCop1/gqLXgqYDgqLBf4Ki44Ki84KmB4KiV4KiwX+CouOCovOCoqOCpgCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfgqJDgqKRf4Ki44KmL4KiuX+CoruCpsOCol+Cosl/gqKzgqYHgqKdf4Ki14KmA4KiwX+CouOCovOCpgeColeCosF/gqLjgqLzgqKjgqYAnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0EgaDptbSDgqLXgqJzgqYcnLFxuICAgICAgICAgICAgTFRTOiAnQSBoOm1tOnNzIOCoteConOCphycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0g4Ki14Kic4KmHJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIOCoteConOCphycsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+CoheConF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vgqJXgqLJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW+CoheCol+CosuCovl0gZGRkZCwgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vgqJXgqLJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+CoquCov+Com+CosuCph10gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDgqLXgqL/gqbHgqJonLFxuICAgICAgICAgICAgcGFzdDogJyVzIOCoquCov+Com+CosuCphycsXG4gICAgICAgICAgICBzOiAn4KiV4KmB4KidIOCouOColeCov+CpsOConycsXG4gICAgICAgICAgICBzczogJyVkIOCouOColeCov+CpsOConycsXG4gICAgICAgICAgICBtOiAn4KiH4KiVIOCoruCov+CpsOConycsXG4gICAgICAgICAgICBtbTogJyVkIOCoruCov+CpsOConycsXG4gICAgICAgICAgICBoOiAn4KiH4Kmx4KiVIOComOCpsOCon+CovicsXG4gICAgICAgICAgICBoaDogJyVkIOComOCpsOCon+CphycsXG4gICAgICAgICAgICBkOiAn4KiH4Kmx4KiVIOCopuCov+CoqCcsXG4gICAgICAgICAgICBkZDogJyVkIOCopuCov+CoqCcsXG4gICAgICAgICAgICBNOiAn4KiH4Kmx4KiVIOCoruCoueCpgOCoqOCovicsXG4gICAgICAgICAgICBNTTogJyVkIOCoruCoueCpgOCoqOCphycsXG4gICAgICAgICAgICB5OiAn4KiH4Kmx4KiVIOCouOCovuCosicsXG4gICAgICAgICAgICB5eTogJyVkIOCouOCovuCosicsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgqafgqajgqangqargqavgqazgqa3gqa7gqa/gqaZdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIC8vIFB1bmphYmkgbm90YXRpb24gZm9yIG1lcmlkaWVtcyBhcmUgcXVpdGUgZnV6enkgaW4gcHJhY3RpY2UuIFdoaWxlIHRoZXJlIGV4aXN0c1xuICAgICAgICAvLyBhIHJpZ2lkIG5vdGlvbiBvZiBhICdQYWhhcicgaXQgaXMgbm90IHVzZWQgYXMgcmlnaWRseSBpbiBtb2Rlcm4gUHVuamFiaS5cbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+CosOCovuCopHzgqLjgqLXgqYfgqLB84Kim4KmB4Kiq4Ki54Ki/4KiwfOCouOCovOCovuCori8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+CosOCovuCopCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDQgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CouOCoteCph+CosCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgqKbgqYHgqKrgqLngqL/gqLAnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTAgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CouOCovOCovuCoricpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqLDgqL7gqKQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CouOCoteCph+CosCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kim4KmB4Kiq4Ki54Ki/4KiwJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqLjgqLzgqL7gqK4nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CosOCovuCopCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBwYUluO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFBvbGlzaCBbcGxdXG4vLyEgYXV0aG9yIDogUmFmYWwgSGlyc3ogOiBodHRwczovL2dpdGh1Yi5jb20vZXZvTFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRoc05vbWluYXRpdmUgPVxuICAgICAgICAgICAgJ3N0eWN6ZcWEX2x1dHlfbWFyemVjX2t3aWVjaWXFhF9tYWpfY3plcndpZWNfbGlwaWVjX3NpZXJwaWXFhF93cnplc2llxYRfcGHFumR6aWVybmlrX2xpc3RvcGFkX2dydWR6aWXFhCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNTdWJqZWN0aXZlID1cbiAgICAgICAgICAgICdzdHljem5pYV9sdXRlZ29fbWFyY2Ffa3dpZXRuaWFfbWFqYV9jemVyd2NhX2xpcGNhX3NpZXJwbmlhX3dyemXFm25pYV9wYcW6ZHppZXJuaWthX2xpc3RvcGFkYV9ncnVkbmlhJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlID0gW1xuICAgICAgICAgICAgL15zdHkvaSxcbiAgICAgICAgICAgIC9ebHV0L2ksXG4gICAgICAgICAgICAvXm1hci9pLFxuICAgICAgICAgICAgL15rd2kvaSxcbiAgICAgICAgICAgIC9ebWFqL2ksXG4gICAgICAgICAgICAvXmN6ZS9pLFxuICAgICAgICAgICAgL15saXAvaSxcbiAgICAgICAgICAgIC9ec2llL2ksXG4gICAgICAgICAgICAvXndyei9pLFxuICAgICAgICAgICAgL15wYcW6L2ksXG4gICAgICAgICAgICAvXmxpcy9pLFxuICAgICAgICAgICAgL15ncnUvaSxcbiAgICAgICAgXTtcbiAgICBmdW5jdGlvbiBwbHVyYWwobikge1xuICAgICAgICByZXR1cm4gbiAlIDEwIDwgNSAmJiBuICUgMTAgPiAxICYmIH5+KG4gLyAxMCkgJSAxMCAhPT0gMTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdzZWt1bmR5JyA6ICdzZWt1bmQnKTtcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ21pbnV0YScgOiAnbWludXTEmSc7XG4gICAgICAgICAgICBjYXNlICdtbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdtaW51dHknIDogJ21pbnV0Jyk7XG4gICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdnb2R6aW5hJyA6ICdnb2R6aW7EmSc7XG4gICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdnb2R6aW55JyA6ICdnb2R6aW4nKTtcbiAgICAgICAgICAgIGNhc2UgJ3d3JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ3R5Z29kbmllJyA6ICd0eWdvZG5pJyk7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdtaWVzacSFY2UnIDogJ21pZXNpxJljeScpO1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnbGF0YScgOiAnbGF0Jyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcGwgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdwbCcsIHtcbiAgICAgICAgbW9udGhzOiBmdW5jdGlvbiAobW9tZW50VG9Gb3JtYXQsIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtb21lbnRUb0Zvcm1hdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNOb21pbmF0aXZlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvRCBNTU1NLy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU3ViamVjdGl2ZVttb21lbnRUb0Zvcm1hdC5tb250aCgpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc05vbWluYXRpdmVbbW9tZW50VG9Gb3JtYXQubW9udGgoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnc3R5X2x1dF9tYXJfa3dpX21hal9jemVfbGlwX3NpZV93cnpfcGHFul9saXNfZ3J1Jy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICduaWVkemllbGFfcG9uaWVkemlhxYJla193dG9yZWtfxZtyb2RhX2N6d2FydGVrX3BpxIV0ZWtfc29ib3RhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnbmR6X3Bvbl93dF/Fm3JfY3p3X3B0X3NvYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdOZF9Qbl9XdF/FmnJfQ3pfUHRfU28nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbRHppxZsgb10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tKdXRybyBvXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXIG5pZWR6aWVsxJkgb10gTFQnO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1dlIHd0b3JlayBvXSBMVCc7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbVyDFm3JvZMSZIG9dIExUJztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXIHNvYm90xJkgb10gTFQnO1xuXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXXSBkZGRkIFtvXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbV2N6b3JhaiBvXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXIHplc3rFgsSFIG5pZWR6aWVsxJkgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXIHplc3rFgsSFIMWbcm9kxJkgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXIHplc3rFgsSFIHNvYm90xJkgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbVyB6ZXN6xYJ5XSBkZGRkIFtvXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnemEgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHRlbXUnLFxuICAgICAgICAgICAgczogJ2tpbGthIHNla3VuZCcsXG4gICAgICAgICAgICBzczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiAnMSBkemllxYQnLFxuICAgICAgICAgICAgZGQ6ICclZCBkbmknLFxuICAgICAgICAgICAgdzogJ3R5ZHppZcWEJyxcbiAgICAgICAgICAgIHd3OiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiAnbWllc2nEhWMnLFxuICAgICAgICAgICAgTU06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6ICdyb2snLFxuICAgICAgICAgICAgeXk6IHRyYW5zbGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBwbDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBQb3J0dWd1ZXNlIChCcmF6aWwpIFtwdC1icl1cbi8vISBhdXRob3IgOiBDYWlvIFJpYmVpcm8gUGVyZWlyYSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jYWlvLXJpYmVpcm8tcGVyZWlyYVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHB0QnIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdwdC1icicsIHtcbiAgICAgICAgbW9udGhzOiAnamFuZWlyb19mZXZlcmVpcm9fbWFyw6dvX2FicmlsX21haW9fanVuaG9fanVsaG9fYWdvc3RvX3NldGVtYnJvX291dHVicm9fbm92ZW1icm9fZGV6ZW1icm8nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnamFuX2Zldl9tYXJfYWJyX21haV9qdW5fanVsX2Fnb19zZXRfb3V0X25vdl9kZXonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ2RvbWluZ29fc2VndW5kYS1mZWlyYV90ZXLDp2EtZmVpcmFfcXVhcnRhLWZlaXJhX3F1aW50YS1mZWlyYV9zZXh0YS1mZWlyYV9zw6FiYWRvJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdkb21fc2VnX3Rlcl9xdWFfcXVpX3NleF9zw6FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2RvXzLCql8zwqpfNMKqXzXCql82wqpfc8OhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWSBbw6BzXSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIFvDoHNdIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSG9qZSDDoHNdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbQW1hbmjDoyDDoHNdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbw6BzXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW09udGVtIMOgc10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXkoKSA9PT0gMCB8fCB0aGlzLmRheSgpID09PSA2XG4gICAgICAgICAgICAgICAgICAgID8gJ1vDmmx0aW1vXSBkZGRkIFvDoHNdIExUJyAvLyBTYXR1cmRheSArIFN1bmRheVxuICAgICAgICAgICAgICAgICAgICA6ICdbw5psdGltYV0gZGRkZCBbw6BzXSBMVCc7IC8vIE1vbmRheSAtIEZyaWRheVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnZW0gJXMnLFxuICAgICAgICAgICAgcGFzdDogJ2jDoSAlcycsXG4gICAgICAgICAgICBzOiAncG91Y29zIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VndW5kb3MnLFxuICAgICAgICAgICAgbTogJ3VtIG1pbnV0bycsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0b3MnLFxuICAgICAgICAgICAgaDogJ3VtYSBob3JhJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG9yYXMnLFxuICAgICAgICAgICAgZDogJ3VtIGRpYScsXG4gICAgICAgICAgICBkZDogJyVkIGRpYXMnLFxuICAgICAgICAgICAgTTogJ3VtIG3DqnMnLFxuICAgICAgICAgICAgTU06ICclZCBtZXNlcycsXG4gICAgICAgICAgICB5OiAndW0gYW5vJyxcbiAgICAgICAgICAgIHl5OiAnJWQgYW5vcycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbDogJyVkwronLFxuICAgICAgICBpbnZhbGlkRGF0ZTogJ0RhdGEgaW52w6FsaWRhJyxcbiAgICB9KTtcblxuICAgIHJldHVybiBwdEJyO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFBvcnR1Z3Vlc2UgW3B0XVxuLy8hIGF1dGhvciA6IEplZmZlcnNvbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qYWxleDc5XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgcHQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdwdCcsIHtcbiAgICAgICAgbW9udGhzOiAnamFuZWlyb19mZXZlcmVpcm9fbWFyw6dvX2FicmlsX21haW9fanVuaG9fanVsaG9fYWdvc3RvX3NldGVtYnJvX291dHVicm9fbm92ZW1icm9fZGV6ZW1icm8nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnamFuX2Zldl9tYXJfYWJyX21haV9qdW5fanVsX2Fnb19zZXRfb3V0X25vdl9kZXonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ0RvbWluZ29fU2VndW5kYS1mZWlyYV9UZXLDp2EtZmVpcmFfUXVhcnRhLWZlaXJhX1F1aW50YS1mZWlyYV9TZXh0YS1mZWlyYV9Tw6FiYWRvJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdEb21fU2VnX1Rlcl9RdWFfUXVpX1NleF9Tw6FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ0RvXzLCql8zwqpfNMKqXzXCql82wqpfU8OhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSG9qZSDDoHNdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbQW1hbmjDoyDDoHNdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbw6BzXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW09udGVtIMOgc10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXkoKSA9PT0gMCB8fCB0aGlzLmRheSgpID09PSA2XG4gICAgICAgICAgICAgICAgICAgID8gJ1vDmmx0aW1vXSBkZGRkIFvDoHNdIExUJyAvLyBTYXR1cmRheSArIFN1bmRheVxuICAgICAgICAgICAgICAgICAgICA6ICdbw5psdGltYV0gZGRkZCBbw6BzXSBMVCc7IC8vIE1vbmRheSAtIEZyaWRheVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnZW0gJXMnLFxuICAgICAgICAgICAgcGFzdDogJ2jDoSAlcycsXG4gICAgICAgICAgICBzOiAnc2VndW5kb3MnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWd1bmRvcycsXG4gICAgICAgICAgICBtOiAndW0gbWludXRvJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRvcycsXG4gICAgICAgICAgICBoOiAndW1hIGhvcmEnLFxuICAgICAgICAgICAgaGg6ICclZCBob3JhcycsXG4gICAgICAgICAgICBkOiAndW0gZGlhJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGlhcycsXG4gICAgICAgICAgICB3OiAndW1hIHNlbWFuYScsXG4gICAgICAgICAgICB3dzogJyVkIHNlbWFuYXMnLFxuICAgICAgICAgICAgTTogJ3VtIG3DqnMnLFxuICAgICAgICAgICAgTU06ICclZCBtZXNlcycsXG4gICAgICAgICAgICB5OiAndW0gYW5vJyxcbiAgICAgICAgICAgIHl5OiAnJWQgYW5vcycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbDogJyVkwronLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHQ7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogUm9tYW5pYW4gW3JvXVxuLy8hIGF1dGhvciA6IFZsYWQgR3VyZGlnYSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9ndXJkaWdhXG4vLyEgYXV0aG9yIDogVmFsZW50aW4gQWdhY2hpIDogaHR0cHM6Ly9naXRodWIuY29tL2F2YWx5XG4vLyEgYXV0aG9yIDogRW1hbnVlbCBDZXBvaSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jZXBlbVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lV2l0aFBsdXJhbChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgICAgIHNzOiAnc2VjdW5kZScsXG4gICAgICAgICAgICAgICAgbW06ICdtaW51dGUnLFxuICAgICAgICAgICAgICAgIGhoOiAnb3JlJyxcbiAgICAgICAgICAgICAgICBkZDogJ3ppbGUnLFxuICAgICAgICAgICAgICAgIHd3OiAnc8SDcHTEg23Dom5pJyxcbiAgICAgICAgICAgICAgICBNTTogJ2x1bmknLFxuICAgICAgICAgICAgICAgIHl5OiAnYW5pJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXBhcmF0b3IgPSAnICc7XG4gICAgICAgIGlmIChudW1iZXIgJSAxMDAgPj0gMjAgfHwgKG51bWJlciA+PSAxMDAgJiYgbnVtYmVyICUgMTAwID09PSAwKSkge1xuICAgICAgICAgICAgc2VwYXJhdG9yID0gJyBkZSAnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudW1iZXIgKyBzZXBhcmF0b3IgKyBmb3JtYXRba2V5XTtcbiAgICB9XG5cbiAgICB2YXIgcm8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdybycsIHtcbiAgICAgICAgbW9udGhzOiAnaWFudWFyaWVfZmVicnVhcmllX21hcnRpZV9hcHJpbGllX21haV9pdW5pZV9pdWxpZV9hdWd1c3Rfc2VwdGVtYnJpZV9vY3RvbWJyaWVfbm9pZW1icmllX2RlY2VtYnJpZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnaWFuLl9mZWIuX21hcnQuX2Fwci5fbWFpX2l1bi5faXVsLl9hdWcuX3NlcHQuX29jdC5fbm92Ll9kZWMuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnZHVtaW5pY8SDX2x1bmlfbWFyyJtpX21pZXJjdXJpX2pvaV92aW5lcmlfc8OibWLEg3TEgycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ0R1bV9MdW5fTWFyX01pZV9Kb2lfVmluX1PDom0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnRHVfTHVfTWFfTWlfSm9fVmlfU8OiJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbYXppIGxhXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW23DomluZSBsYV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtsYV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tpZXJpIGxhXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tmb3N0YV0gZGRkZCBbbGFdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAncGVzdGUgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIMOubiB1cm3EgycsXG4gICAgICAgICAgICBzOiAnY8OidGV2YSBzZWN1bmRlJyxcbiAgICAgICAgICAgIHNzOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgbTogJ3VuIG1pbnV0JyxcbiAgICAgICAgICAgIG1tOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgaDogJ28gb3LEgycsXG4gICAgICAgICAgICBoaDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGQ6ICdvIHppJyxcbiAgICAgICAgICAgIGRkOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgdzogJ28gc8SDcHTEg23Dom7EgycsXG4gICAgICAgICAgICB3dzogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIE06ICdvIGx1bsSDJyxcbiAgICAgICAgICAgIE1NOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgeTogJ3VuIGFuJyxcbiAgICAgICAgICAgIHl5OiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcm87XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogUnVzc2lhbiBbcnVdXG4vLyEgYXV0aG9yIDogVmlrdG9ybWluYXRvciA6IGh0dHBzOi8vZ2l0aHViLmNvbS9WaWt0b3JtaW5hdG9yXG4vLyEgYXV0aG9yIDogTWVuZWxpb24gRWxlbnPDumxlIDogaHR0cHM6Ly9naXRodWIuY29tL09pcmVcbi8vISBhdXRob3IgOiDQmtC+0YDQtdC90LHQtdGA0LMg0JzQsNGA0LogOiBodHRwczovL2dpdGh1Yi5jb20vc29ja2V0cGFpclxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gcGx1cmFsKHdvcmQsIG51bSkge1xuICAgICAgICB2YXIgZm9ybXMgPSB3b3JkLnNwbGl0KCdfJyk7XG4gICAgICAgIHJldHVybiBudW0gJSAxMCA9PT0gMSAmJiBudW0gJSAxMDAgIT09IDExXG4gICAgICAgICAgICA/IGZvcm1zWzBdXG4gICAgICAgICAgICA6IG51bSAlIDEwID49IDIgJiYgbnVtICUgMTAgPD0gNCAmJiAobnVtICUgMTAwIDwgMTAgfHwgbnVtICUgMTAwID49IDIwKVxuICAgICAgICAgICAgPyBmb3Jtc1sxXVxuICAgICAgICAgICAgOiBmb3Jtc1syXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lV2l0aFBsdXJhbChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgc3M6IHdpdGhvdXRTdWZmaXggPyAn0YHQtdC60YPQvdC00LBf0YHQtdC60YPQvdC00Ytf0YHQtdC60YPQvdC0JyA6ICfRgdC10LrRg9C90LTRg1/RgdC10LrRg9C90LTRi1/RgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgbW06IHdpdGhvdXRTdWZmaXggPyAn0LzQuNC90YPRgtCwX9C80LjQvdGD0YLRi1/QvNC40L3Rg9GCJyA6ICfQvNC40L3Rg9GC0YNf0LzQuNC90YPRgtGLX9C80LjQvdGD0YInLFxuICAgICAgICAgICAgaGg6ICfRh9Cw0YFf0YfQsNGB0LBf0YfQsNGB0L7QsicsXG4gICAgICAgICAgICBkZDogJ9C00LXQvdGMX9C00L3Rj1/QtNC90LXQuScsXG4gICAgICAgICAgICB3dzogJ9C90LXQtNC10LvRj1/QvdC10LTQtdC70Lhf0L3QtdC00LXQu9GMJyxcbiAgICAgICAgICAgIE1NOiAn0LzQtdGB0Y/Rhl/QvNC10YHRj9GG0LBf0LzQtdGB0Y/RhtC10LInLFxuICAgICAgICAgICAgeXk6ICfQs9C+0LRf0LPQvtC00LBf0LvQtdGCJyxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGtleSA9PT0gJ20nKSB7XG4gICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICfQvNC40L3Rg9GC0LAnIDogJ9C80LjQvdGD0YLRgyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyAnICsgcGx1cmFsKGZvcm1hdFtrZXldLCArbnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YXIgbW9udGhzUGFyc2UgPSBbXG4gICAgICAgIC9e0Y/QvdCyL2ksXG4gICAgICAgIC9e0YTQtdCyL2ksXG4gICAgICAgIC9e0LzQsNGAL2ksXG4gICAgICAgIC9e0LDQv9GAL2ksXG4gICAgICAgIC9e0LzQsFvQudGPXS9pLFxuICAgICAgICAvXtC40Y7QvS9pLFxuICAgICAgICAvXtC40Y7Quy9pLFxuICAgICAgICAvXtCw0LLQsy9pLFxuICAgICAgICAvXtGB0LXQvS9pLFxuICAgICAgICAvXtC+0LrRgi9pLFxuICAgICAgICAvXtC90L7Rjy9pLFxuICAgICAgICAvXtC00LXQui9pLFxuICAgIF07XG5cbiAgICAvLyBodHRwOi8vbmV3LmdyYW1vdGEucnUvc3ByYXZrYS9ydWxlcy8xMzktcHJvcCA6IMKnIDEwM1xuICAgIC8vINCh0L7QutGA0LDRidC10L3QuNGPINC80LXRgdGP0YbQtdCyOiBodHRwOi8vbmV3LmdyYW1vdGEucnUvc3ByYXZrYS9idXJvL3NlYXJjaC1hbnN3ZXI/cz0yNDI2MzdcbiAgICAvLyBDTERSIGRhdGE6ICAgICAgICAgIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY2xkci9jaGFydHMvMjgvc3VtbWFyeS9ydS5odG1sIzE3NTNcbiAgICB2YXIgcnUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdydScsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICfRj9C90LLQsNGA0Y9f0YTQtdCy0YDQsNC70Y9f0LzQsNGA0YLQsF/QsNC/0YDQtdC70Y9f0LzQsNGPX9C40Y7QvdGPX9C40Y7Qu9GPX9Cw0LLQs9GD0YHRgtCwX9GB0LXQvdGC0Y/QsdGA0Y9f0L7QutGC0Y/QsdGA0Y9f0L3QvtGP0LHRgNGPX9C00LXQutCw0LHRgNGPJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICfRj9C90LLQsNGA0Yxf0YTQtdCy0YDQsNC70Yxf0LzQsNGA0YJf0LDQv9GA0LXQu9GMX9C80LDQuV/QuNGO0L3RjF/QuNGO0LvRjF/QsNCy0LPRg9GB0YJf0YHQtdC90YLRj9Cx0YDRjF/QvtC60YLRj9Cx0YDRjF/QvdC+0Y/QsdGA0Yxf0LTQtdC60LDQsdGA0YwnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydDoge1xuICAgICAgICAgICAgLy8g0L/QviBDTERSINC40LzQtdC90L3QviBcItC40Y7Quy5cIiDQuCBcItC40Y7QvS5cIiwg0L3QviDQutCw0LrQvtC5INGB0LzRi9GB0Lsg0LzQtdC90Y/RgtGMINCx0YPQutCy0YMg0L3QsCDRgtC+0YfQutGDP1xuICAgICAgICAgICAgZm9ybWF0OiAn0Y/QvdCyLl/RhNC10LLRgC5f0LzQsNGALl/QsNC/0YAuX9C80LDRj1/QuNGO0L3Rj1/QuNGO0LvRj1/QsNCy0LMuX9GB0LXQvdGCLl/QvtC60YIuX9C90L7Rj9CxLl/QtNC10LouJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICfRj9C90LIuX9GE0LXQstGALl/QvNCw0YDRgl/QsNC/0YAuX9C80LDQuV/QuNGO0L3RjF/QuNGO0LvRjF/QsNCy0LMuX9GB0LXQvdGCLl/QvtC60YIuX9C90L7Rj9CxLl/QtNC10LouJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vla2RheXM6IHtcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6XG4gICAgICAgICAgICAgICAgJ9Cy0L7RgdC60YDQtdGB0LXQvdGM0LVf0L/QvtC90LXQtNC10LvRjNC90LjQul/QstGC0L7RgNC90LjQul/RgdGA0LXQtNCwX9GH0LXRgtCy0LXRgNCzX9C/0Y/RgtC90LjRhtCwX9GB0YPQsdCx0L7RgtCwJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZvcm1hdDogJ9Cy0L7RgdC60YDQtdGB0LXQvdGM0LVf0L/QvtC90LXQtNC10LvRjNC90LjQul/QstGC0L7RgNC90LjQul/RgdGA0LXQtNGDX9GH0LXRgtCy0LXRgNCzX9C/0Y/RgtC90LjRhtGDX9GB0YPQsdCx0L7RgtGDJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpc0Zvcm1hdDogL1xcWyA/W9CS0LJdID8oPzrQv9GA0L7RiNC70YPRjnzRgdC70LXQtNGD0Y7RidGD0Y580Y3RgtGDKT8gP10gP2RkZGQvLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn0LLRgV/Qv9C9X9Cy0YJf0YHRgF/Rh9GCX9C/0YJf0YHQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfQstGBX9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuXG4gICAgICAgIC8vINC/0L7Qu9C90YvQtSDQvdCw0LfQstCw0L3QuNGPINGBINC/0LDQtNC10LbQsNC80LgsINC/0L4g0YLRgNC4INCx0YPQutCy0YssINC00LvRjyDQvdC10LrQvtGC0L7RgNGL0YUsINC/0L4gNCDQsdGD0LrQstGLLCDRgdC+0LrRgNCw0YnQtdC90LjRjyDRgSDRgtC+0YfQutC+0Lkg0Lgg0LHQtdC3INGC0L7Rh9C60LhcbiAgICAgICAgbW9udGhzUmVnZXg6XG4gICAgICAgICAgICAvXijRj9C90LLQsNGAW9GM0Y9dfNGP0L3QslxcLj980YTQtdCy0YDQsNC7W9GM0Y9dfNGE0LXQstGAP1xcLj980LzQsNGA0YLQsD980LzQsNGAXFwuP3zQsNC/0YDQtdC7W9GM0Y9dfNCw0L/RgFxcLj980LzQsFvQudGPXXzQuNGO0L1b0YzRj1180LjRjtC9XFwuP3zQuNGO0Ltb0YzRj1180LjRjtC7XFwuP3zQsNCy0LPRg9GB0YLQsD980LDQstCzXFwuP3zRgdC10L3RgtGP0LHRgFvRjNGPXXzRgdC10L3Rgj9cXC4/fNC+0LrRgtGP0LHRgFvRjNGPXXzQvtC60YJcXC4/fNC90L7Rj9Cx0YBb0YzRj1180L3QvtGP0LE/XFwuP3zQtNC10LrQsNCx0YBb0YzRj1180LTQtdC6XFwuPykvaSxcblxuICAgICAgICAvLyDQutC+0L/QuNGPINC/0YDQtdC00YvQtNGD0YnQtdCz0L5cbiAgICAgICAgbW9udGhzU2hvcnRSZWdleDpcbiAgICAgICAgICAgIC9eKNGP0L3QstCw0YBb0YzRj1180Y/QvdCyXFwuP3zRhNC10LLRgNCw0Ltb0YzRj1180YTQtdCy0YA/XFwuP3zQvNCw0YDRgtCwP3zQvNCw0YBcXC4/fNCw0L/RgNC10Ltb0YzRj1180LDQv9GAXFwuP3zQvNCwW9C50Y9dfNC40Y7QvVvRjNGPXXzQuNGO0L1cXC4/fNC40Y7Qu1vRjNGPXXzQuNGO0LtcXC4/fNCw0LLQs9GD0YHRgtCwP3zQsNCy0LNcXC4/fNGB0LXQvdGC0Y/QsdGAW9GM0Y9dfNGB0LXQvdGCP1xcLj980L7QutGC0Y/QsdGAW9GM0Y9dfNC+0LrRglxcLj980L3QvtGP0LHRgFvRjNGPXXzQvdC+0Y/QsT9cXC4/fNC00LXQutCw0LHRgFvRjNGPXXzQtNC10LpcXC4/KS9pLFxuXG4gICAgICAgIC8vINC/0L7Qu9C90YvQtSDQvdCw0LfQstCw0L3QuNGPINGBINC/0LDQtNC10LbQsNC80LhcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6XG4gICAgICAgICAgICAvXijRj9C90LLQsNGAW9GP0YxdfNGE0LXQstGA0LDQu1vRj9GMXXzQvNCw0YDRgtCwP3zQsNC/0YDQtdC7W9GP0YxdfNC80LBb0Y/QuV180LjRjtC9W9GP0YxdfNC40Y7Qu1vRj9GMXXzQsNCy0LPRg9GB0YLQsD980YHQtdC90YLRj9Cx0YBb0Y/RjF180L7QutGC0Y/QsdGAW9GP0YxdfNC90L7Rj9Cx0YBb0Y/RjF180LTQtdC60LDQsdGAW9GP0YxdKS9pLFxuXG4gICAgICAgIC8vINCS0YvRgNCw0LbQtdC90LjQtSwg0LrQvtGC0L7RgNC+0LUg0YHQvtC+0YLQstC10YLRgdGC0LLRg9C10YIg0YLQvtC70YzQutC+INGB0L7QutGA0LDRidGR0L3QvdGL0Lwg0YTQvtGA0LzQsNC8XG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6XG4gICAgICAgICAgICAvXijRj9C90LJcXC580YTQtdCy0YA/XFwufNC80LDRgFvRgi5dfNCw0L/RgFxcLnzQvNCwW9GP0LldfNC40Y7QvVvRjNGPLl180LjRjtC7W9GM0Y8uXXzQsNCy0LNcXC580YHQtdC90YI/XFwufNC+0LrRglxcLnzQvdC+0Y/QsT9cXC580LTQtdC6XFwuKS9pLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWSDQsy4nLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkg0LMuLCBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSDQsy4sIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQodC10LPQvtC00L3Rjywg0LJdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb0JfQsNCy0YLRgNCwLCDQsl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vQktGH0LXRgNCwLCDQsl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uIChub3cpIHtcbiAgICAgICAgICAgICAgICBpZiAobm93LndlZWsoKSAhPT0gdGhpcy53ZWVrKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JIg0YHQu9C10LTRg9GO0YnQtdC1XSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkiDRgdC70LXQtNGD0Y7RidC40LldIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSINGB0LvQtdC00YPRjtGJ0YPRjl0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXkoKSA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JLQvl0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkl0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uIChub3cpIHtcbiAgICAgICAgICAgICAgICBpZiAobm93LndlZWsoKSAhPT0gdGhpcy53ZWVrKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JIg0L/RgNC+0YjQu9C+0LVdIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSINC/0YDQvtGI0LvRi9C5XSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkiDQv9GA0L7RiNC70YPRjl0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXkoKSA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JLQvl0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkl0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfRh9C10YDQtdC3ICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDQvdCw0LfQsNC0JyxcbiAgICAgICAgICAgIHM6ICfQvdC10YHQutC+0LvRjNC60L4g0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgIHNzOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgbTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIG1tOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgaDogJ9GH0LDRgScsXG4gICAgICAgICAgICBoaDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGQ6ICfQtNC10L3RjCcsXG4gICAgICAgICAgICBkZDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIHc6ICfQvdC10LTQtdC70Y8nLFxuICAgICAgICAgICAgd3c6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBNOiAn0LzQtdGB0Y/RhicsXG4gICAgICAgICAgICBNTTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIHk6ICfQs9C+0LQnLFxuICAgICAgICAgICAgeXk6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/QvdC+0YfQuHzRg9GC0YDQsHzQtNC90Y980LLQtdGH0LXRgNCwL2ksXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9eKNC00L3Rj3zQstC10YfQtdGA0LApJC8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9C90L7Rh9C4JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfRg9GC0YDQsCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0LTQvdGPJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQstC10YfQtdGA0LAnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tKNC5fNCz0L580Y8pLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdC5JztcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LPQvic7XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdGPJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcnU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogU2luZGhpIFtzZF1cbi8vISBhdXRob3IgOiBOYXJhaW4gU2FnYXIgOiBodHRwczovL2dpdGh1Yi5jb20vbmFyYWluc2FnYXJcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtb250aHMgPSBbXG4gICAgICAgICAgICAn2KzZhtmI2LHZiicsXG4gICAgICAgICAgICAn2YHZitio2LHZiNix2YonLFxuICAgICAgICAgICAgJ9mF2KfYsdqGJyxcbiAgICAgICAgICAgICfYp9m+2LHZitmEJyxcbiAgICAgICAgICAgICfZhdim2YonLFxuICAgICAgICAgICAgJ9is2YjZhicsXG4gICAgICAgICAgICAn2KzZiNmE2KfYodmQJyxcbiAgICAgICAgICAgICfYotqv2LPZvScsXG4gICAgICAgICAgICAn2LPZitm+2b3Zhdio2LEnLFxuICAgICAgICAgICAgJ9ii2qrZvdmI2KjYsScsXG4gICAgICAgICAgICAn2YbZiNmF2KjYsScsXG4gICAgICAgICAgICAn2orYs9mF2KjYsScsXG4gICAgICAgIF0sXG4gICAgICAgIGRheXMgPSBbJ9ii2obYsScsICfYs9mI2YXYsScsICfYp9qx2KfYsdmIJywgJ9in2LHYqNi5JywgJ9iu2YXZitizJywgJ9is2YXYuScsICfah9mG2ofYsSddO1xuXG4gICAgdmFyIHNkID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc2QnLCB7XG4gICAgICAgIG1vbnRoczogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydDogbW9udGhzLFxuICAgICAgICB3ZWVrZGF5czogZGF5cyxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogZGF5cyxcbiAgICAgICAgd2Vla2RheXNNaW46IGRheXMsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGTYjCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/Ytdio2K182LTYp9mFLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ9i02KfZhScgPT09IGlucHV0O1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2LXYqNitJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAn2LTYp9mFJztcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfahF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vYs9qA2Kfau9mKXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9in2rPZitmGINmH2YHYqtmKINiq2YpdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2qrYp9mE2YfZh10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb2q/Ystix2YrZhCDZh9mB2KrZil0gZGRkZCBb2KrZil0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDZvtmI2KEnLFxuICAgICAgICAgICAgcGFzdDogJyVzINin2rMnLFxuICAgICAgICAgICAgczogJ9qG2YbYryDYs9mK2qrZhtqKJyxcbiAgICAgICAgICAgIHNzOiAnJWQg2LPZitqq2YbaiicsXG4gICAgICAgICAgICBtOiAn2YfaqiDZhdmG2b0nLFxuICAgICAgICAgICAgbW06ICclZCDZhdmG2b0nLFxuICAgICAgICAgICAgaDogJ9mH2qog2qrZhNin2qonLFxuICAgICAgICAgICAgaGg6ICclZCDaqtmE2KfaqicsXG4gICAgICAgICAgICBkOiAn2YfaqiDaj9mK2YbZh9mGJyxcbiAgICAgICAgICAgIGRkOiAnJWQg2o/ZitmG2YfZhicsXG4gICAgICAgICAgICBNOiAn2YfaqiDZhdmH2YrZhtmIJyxcbiAgICAgICAgICAgIE1NOiAnJWQg2YXZh9mK2YbYpycsXG4gICAgICAgICAgICB5OiAn2YfaqiDYs9in2YQnLFxuICAgICAgICAgICAgeXk6ICclZCDYs9in2YQnLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBzZDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBOb3J0aGVybiBTYW1pIFtzZV1cbi8vISBhdXRob3JzIDogQsOlcmQgUm9sc3RhZCBIZW5yaWtzZW4gOiBodHRwczovL2dpdGh1Yi5jb20va2FyYW1lbGxcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NlJywge1xuICAgICAgICBtb250aHM6ICdvxJHEkWFqYWdlbcOhbm51X2d1b3Z2YW3DoW5udV9uanVrxI1hbcOhbm51X2N1b8WLb23DoW5udV9taWVzc2Vtw6FubnVfZ2Vhc3NlbcOhbm51X3N1b2lkbmVtw6FubnVfYm9yZ2Vtw6FubnVfxI1ha8SNYW3DoW5udV9nb2xnZ290bcOhbm51X3Nrw6FibWFtw6FubnVfanVvdmxhbcOhbm51Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdvxJHEkWpfZ3Vvdl9uanVrX2N1b19taWVzX2dlYXNfc3VvaV9ib3JnX8SNYWvEjV9nb2xnX3Nrw6FiX2p1b3YnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ3NvdG5hYmVhaXZpX3Z1b3Nzw6FyZ2FfbWHFi8WLZWLDoXJnYV9nYXNrYXZhaGtrdV9kdW9yYXN0YXRfYmVhcmphZGF0X2zDoXZ2YXJkYXQnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ3NvdG5fdnVvc19tYcWLX2dhc2tfZHVvcl9iZWFyX2zDoXYnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnc192X21fZ19kX2JfTCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdNTU1NIEQuIFtiLl0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdNTU1NIEQuIFtiLl0gWVlZWSBbdGkuXSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgTU1NTSBELiBbYi5dIFlZWVkgW3RpLl0gSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tvdG5lIHRpXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2lodHRpbiB0aV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFt0aV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tpa3RlIHRpXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tvdmRkaXRdIGRkZGQgW3RpXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIGdlYcW+ZXMnLFxuICAgICAgICAgICAgcGFzdDogJ21hxYtpdCAlcycsXG4gICAgICAgICAgICBzOiAnbW9hZGRlIHNla3VuZGRhdCcsXG4gICAgICAgICAgICBzczogJyVkIHNla3VuZGRhdCcsXG4gICAgICAgICAgICBtOiAnb2t0YSBtaW51aHRhJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludWh0YXQnLFxuICAgICAgICAgICAgaDogJ29rdGEgZGlpbW11JyxcbiAgICAgICAgICAgIGhoOiAnJWQgZGlpbW11dCcsXG4gICAgICAgICAgICBkOiAnb2t0YSBiZWFpdmknLFxuICAgICAgICAgICAgZGQ6ICclZCBiZWFpdnZpdCcsXG4gICAgICAgICAgICBNOiAnb2t0YSBtw6FubnUnLFxuICAgICAgICAgICAgTU06ICclZCBtw6FudXQnLFxuICAgICAgICAgICAgeTogJ29rdGEgamFoa2knLFxuICAgICAgICAgICAgeXk6ICclZCBqYWdpdCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2U7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogU2luaGFsZXNlIFtzaV1cbi8vISBhdXRob3IgOiBTYW1wYXRoIFNpdGluYW1hbHV3YSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9zYW1wYXRoc3Jpc1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgLypqc2hpbnQgLVcxMDAqL1xuICAgIHZhciBzaSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NpJywge1xuICAgICAgICBtb250aHM6ICfgtqLgtrHgt4Dgt4/gtrvgt5Jf4La04LeZ4La24La74LeA4LeP4La74LeSX+C2uOC3j+C2u+C3iuC2reC3lF/gtoXgtrTgt4rigI3gtrvgt5rgtr3gt4pf4La44LeQ4La64LeSX+C2ouC3luC2seC3kl/gtqLgt5bgtr3gt5Jf4LaF4Lac4Led4LeD4LeK4Lat4LeUX+C3g+C3kOC2tOC3iuC2reC3kOC2uOC3iuC2tuC2u+C3il/gtpTgtprgt4rgtq3gt53gtrbgtrvgt4pf4Lax4Lec4LeA4LeQ4La44LeK4La24La74LeKX+C2r+C3meC3g+C3kOC2uOC3iuC2tuC2u+C3iicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfgtqLgtrFf4La04LeZ4La2X+C2uOC3j+C2u+C3il/gtoXgtrTgt4pf4La44LeQ4La64LeSX+C2ouC3luC2seC3kl/gtqLgt5bgtr3gt5Jf4LaF4Lac4LedX+C3g+C3kOC2tOC3il/gtpTgtprgt4pf4Lax4Lec4LeA4LeQX+C2r+C3meC3g+C3kCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAn4LaJ4La74LeS4Lav4LePX+C3g+C2s+C3lOC2r+C3j1/gtoXgtp/gt4Tgtrvgt5Tgt4Dgt4/gtq/gt49f4La24Lav4LeP4Lav4LePX+C2tuC3iuKAjeC2u+C3hOC3g+C3iuC2tOC2reC3kuC2seC3iuC2r+C3j1/gt4Pgt5Lgtprgt5Tgtrvgt4/gtq/gt49f4LeD4LeZ4Lax4LeD4LeU4La74LeP4Lav4LePJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgtongtrvgt5Jf4LeD4Laz4LeUX+C2heC2n1/gtrbgtq/gt49f4La24LeK4oCN4La74LeEX+C3g+C3kuC2muC3lF/gt4Pgt5ngtrEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4LaJX+C3g1/gtoVf4La2X+C2tuC3iuKAjeC2u1/gt4Pgt5Jf4LeD4LeZJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ2EgaDptbScsXG4gICAgICAgICAgICBMVFM6ICdhIGg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ1lZWVkvTU0vREQnLFxuICAgICAgICAgICAgTEw6ICdZWVlZIE1NTU0gRCcsXG4gICAgICAgICAgICBMTEw6ICdZWVlZIE1NTU0gRCwgYSBoOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdZWVlZIE1NTU0gRCBb4LeA4LeQ4Lax4LeSXSBkZGRkLCBhIGg6bW06c3MnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgtoXgtq9dIExUW+C2p10nLFxuICAgICAgICAgICAgbmV4dERheTogJ1vgt4Tgt5ngtqddIExUW+C2p10nLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIExUW+C2p10nLFxuICAgICAgICAgICAgbGFzdERheTogJ1vgtorgtrrgt5pdIExUW+C2p10nLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4La04LeD4LeU4Lac4LeS4La6XSBkZGRkIExUW+C2p10nLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclc+C2muC3kuC2seC3iicsXG4gICAgICAgICAgICBwYXN0OiAnJXPgtprgtqcg4La04LeZ4La7JyxcbiAgICAgICAgICAgIHM6ICfgtq3gtq3gt4rgtrTgtrsg4Laa4LeS4LeE4LeS4La04La6JyxcbiAgICAgICAgICAgIHNzOiAn4Lat4Lat4LeK4La04La7ICVkJyxcbiAgICAgICAgICAgIG06ICfgtrjgt5LgtrHgt5Lgtq3gt4rgtq3gt5Tgt4AnLFxuICAgICAgICAgICAgbW06ICfgtrjgt5LgtrHgt5Lgtq3gt4rgtq3gt5QgJWQnLFxuICAgICAgICAgICAgaDogJ+C2tOC3kOC2uicsXG4gICAgICAgICAgICBoaDogJ+C2tOC3kOC2uiAlZCcsXG4gICAgICAgICAgICBkOiAn4Lav4LeS4Lax4La6JyxcbiAgICAgICAgICAgIGRkOiAn4Lav4LeS4LaxICVkJyxcbiAgICAgICAgICAgIE06ICfgtrjgt4/gt4PgtronLFxuICAgICAgICAgICAgTU06ICfgtrjgt4/gt4MgJWQnLFxuICAgICAgICAgICAgeTogJ+C3gOC3g+C2uycsXG4gICAgICAgICAgICB5eTogJ+C3gOC3g+C2uyAlZCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSDgt4Dgt5DgtrHgt5IvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDgt4Dgt5DgtrHgt5InO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4La04LeZ4La7IOC3gOC2u+C3lHzgtrTgt4Pgt4og4LeA4La74LeUfOC2tOC3mS7gt4B84La0LuC3gC4vLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCA9PT0gJ+C2tC7gt4AuJyB8fCBpbnB1dCA9PT0gJ+C2tOC3g+C3iiDgt4Dgtrvgt5QnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPiAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ+C2tC7gt4AuJyA6ICfgtrTgt4Pgt4og4LeA4La74LeUJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAn4La04LeZLuC3gC4nIDogJ+C2tOC3meC2uyDgt4Dgtrvgt5QnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNpO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFNsb3ZhayBbc2tdXG4vLyEgYXV0aG9yIDogTWFydGluIE1pbmthIDogaHR0cHM6Ly9naXRodWIuY29tL2syc1xuLy8hIGJhc2VkIG9uIHdvcmsgb2YgcGV0cmJlbGEgOiBodHRwczovL2dpdGh1Yi5jb20vcGV0cmJlbGFcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtb250aHMgPVxuICAgICAgICAgICAgJ2phbnXDoXJfZmVicnXDoXJfbWFyZWNfYXByw61sX23DoWpfasO6bl9qw7psX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0w7NiZXJfbm92ZW1iZXJfZGVjZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQgPSAnamFuX2ZlYl9tYXJfYXByX23DoWpfasO6bl9qw7psX2F1Z19zZXBfb2t0X25vdl9kZWMnLnNwbGl0KCdfJyk7XG4gICAgZnVuY3Rpb24gcGx1cmFsKG4pIHtcbiAgICAgICAgcmV0dXJuIG4gPiAxICYmIG4gPCA1O1xuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzogLy8gYSBmZXcgc2Vjb25kcyAvIGluIGEgZmV3IHNlY29uZHMgLyBhIGZldyBzZWNvbmRzIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ3DDoXIgc2Vrw7puZCcgOiAncMOhciBzZWt1bmRhbWknO1xuICAgICAgICAgICAgY2FzZSAnc3MnOiAvLyA5IHNlY29uZHMgLyBpbiA5IHNlY29uZHMgLyA5IHNlY29uZHMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdzZWt1bmR5JyA6ICdzZWvDum5kJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdzZWt1bmRhbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ20nOiAvLyBhIG1pbnV0ZSAvIGluIGEgbWludXRlIC8gYSBtaW51dGUgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnbWluw7p0YScgOiBpc0Z1dHVyZSA/ICdtaW7DunR1JyA6ICdtaW7DunRvdSc7XG4gICAgICAgICAgICBjYXNlICdtbSc6IC8vIDkgbWludXRlcyAvIGluIDkgbWludXRlcyAvIDkgbWludXRlcyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ21pbsO6dHknIDogJ21pbsO6dCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbWluw7p0YW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdoJzogLy8gYW4gaG91ciAvIGluIGFuIGhvdXIgLyBhbiBob3VyIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2hvZGluYScgOiBpc0Z1dHVyZSA/ICdob2RpbnUnIDogJ2hvZGlub3UnO1xuICAgICAgICAgICAgY2FzZSAnaGgnOiAvLyA5IGhvdXJzIC8gaW4gOSBob3VycyAvIDkgaG91cnMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdob2RpbnknIDogJ2hvZMOtbicpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnaG9kaW5hbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2QnOiAvLyBhIGRheSAvIGluIGEgZGF5IC8gYSBkYXkgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZGXFiCcgOiAnZMWIb20nO1xuICAgICAgICAgICAgY2FzZSAnZGQnOiAvLyA5IGRheXMgLyBpbiA5IGRheXMgLyA5IGRheXMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdkbmknIDogJ2Ruw60nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ2TFiGFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnTSc6IC8vIGEgbW9udGggLyBpbiBhIG1vbnRoIC8gYSBtb250aCBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtZXNpYWMnIDogJ21lc2lhY29tJztcbiAgICAgICAgICAgIGNhc2UgJ01NJzogLy8gOSBtb250aHMgLyBpbiA5IG1vbnRocyAvIDkgbW9udGhzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnbWVzaWFjZScgOiAnbWVzaWFjb3YnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ21lc2lhY21pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICd5JzogLy8gYSB5ZWFyIC8gaW4gYSB5ZWFyIC8gYSB5ZWFyIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ3JvaycgOiAncm9rb20nO1xuICAgICAgICAgICAgY2FzZSAneXknOiAvLyA5IHllYXJzIC8gaW4gOSB5ZWFycyAvIDkgeWVhcnMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdyb2t5JyA6ICdyb2tvdicpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAncm9rbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBzayA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NrJywge1xuICAgICAgICBtb250aHM6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IG1vbnRoc1Nob3J0LFxuICAgICAgICB3ZWVrZGF5czogJ25lZGXEvmFfcG9uZGVsb2tfdXRvcm9rX3N0cmVkYV/FoXR2cnRva19waWF0b2tfc29ib3RhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnbmVfcG9fdXRfc3RfxaF0X3BpX3NvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ25lX3BvX3V0X3N0X8WhdF9waV9zbycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbZG5lcyBvXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW3phanRyYSBvXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2IG5lZGXEvnUgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZdIGRkZGQgW29dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBzdHJlZHUgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2byDFoXR2cnRvayBvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3YgcGlhdG9rIG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBzb2JvdHUgb10gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiAnW3bEjWVyYSBvXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bMO6IG5lZGXEvnUgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsw71dIGRkZGQgW29dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWzDuiBzdHJlZHUgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsw71dIGRkZGQgW29dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWzDuiBzb2JvdHUgb10gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdwcmVkICVzJyxcbiAgICAgICAgICAgIHM6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHNzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQ6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeXk6IHRyYW5zbGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBzaztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBTbG92ZW5pYW4gW3NsXVxuLy8hIGF1dGhvciA6IFJvYmVydCBTZWRvdsWhZWsgOiBodHRwczovL2dpdGh1Yi5jb20vc2Vkb3ZzZWtcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZVxuICAgICAgICAgICAgICAgICAgICA/ICduZWthaiBzZWt1bmQnXG4gICAgICAgICAgICAgICAgICAgIDogJ25la2FqIHNla3VuZGFtaSc7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCA/ICdzZWt1bmRvJyA6ICdzZWt1bmRpJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdzZWt1bmRpJyA6ICdzZWt1bmRhaCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCA1KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ3Nla3VuZGUnIDogJ3Nla3VuZGFoJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3Nla3VuZCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdlbmEgbWludXRhJyA6ICdlbm8gbWludXRvJztcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4ID8gJ21pbnV0YScgOiAnbWludXRvJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtaW51dGknIDogJ21pbnV0YW1hJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA8IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWludXRlJyA6ICdtaW51dGFtaSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWludXQnIDogJ21pbnV0YW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2VuYSB1cmEnIDogJ2VubyB1cm8nO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggPyAndXJhJyA6ICd1cm8nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ3VyaScgOiAndXJhbWEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgNSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICd1cmUnIDogJ3VyYW1pJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICd1cicgOiAndXJhbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZW4gZGFuJyA6ICdlbmltIGRuZW0nO1xuICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZGFuJyA6ICdkbmVtJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdkbmknIDogJ2RuZXZvbWEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2RuaScgOiAnZG5ldmknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZW4gbWVzZWMnIDogJ2VuaW0gbWVzZWNlbSc7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtZXNlYycgOiAnbWVzZWNlbSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWVzZWNhJyA6ICdtZXNlY2VtYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCA1KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ21lc2VjZScgOiAnbWVzZWNpJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtZXNlY2V2JyA6ICdtZXNlY2knO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZW5vIGxldG8nIDogJ2VuaW0gbGV0b20nO1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbGV0bycgOiAnbGV0b20nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2xldGknIDogJ2xldG9tYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCA1KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2xldGEnIDogJ2xldGknO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2xldCcgOiAnbGV0aSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc2wgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzbCcsIHtcbiAgICAgICAgbW9udGhzOiAnamFudWFyX2ZlYnJ1YXJfbWFyZWNfYXByaWxfbWFqX2p1bmlqX2p1bGlqX2F2Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnamFuLl9mZWIuX21hci5fYXByLl9tYWouX2p1bi5fanVsLl9hdmcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICduZWRlbGphX3BvbmVkZWxqZWtfdG9yZWtfc3JlZGFfxI1ldHJ0ZWtfcGV0ZWtfc29ib3RhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnbmVkLl9wb24uX3Rvci5fc3JlLl/EjWV0Ll9wZXQuX3NvYi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnbmVfcG9fdG9fc3JfxI1lX3BlX3NvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuIE1NLiBZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2RhbmVzIG9iXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2p1dHJpIG9iXSBMVCcsXG5cbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZdIFtuZWRlbGpvXSBbb2JdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdl0gW3NyZWRvXSBbb2JdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdl0gW3NvYm90b10gW29iXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZdIGRkZGQgW29iXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbdsSNZXJhaiBvYl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJlasWhbmpvXSBbbmVkZWxqb10gW29iXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ByZWrFoW5qb10gW3NyZWRvXSBbb2JdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJlasWhbmpvXSBbc29ib3RvXSBbb2JdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJlasWhbmppXSBkZGRkIFtvYl0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ8SNZXogJXMnLFxuICAgICAgICAgICAgcGFzdDogJ3ByZWQgJXMnLFxuICAgICAgICAgICAgczogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHNzOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNsO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEFsYmFuaWFuIFtzcV1cbi8vISBhdXRob3IgOiBGbGFrw6tyaW0gSXNtYW5pIDogaHR0cHM6Ly9naXRodWIuY29tL2ZsYWtlcmltaVxuLy8hIGF1dGhvciA6IE1lbmVsaW9uIEVsZW5zw7psZSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9PaXJlXG4vLyEgYXV0aG9yIDogT2VyZCBDdWthbGxhIDogaHR0cHM6Ly9naXRodWIuY29tL29lcmRcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzcSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NxJywge1xuICAgICAgICBtb250aHM6ICdKYW5hcl9TaGt1cnRfTWFyc19QcmlsbF9NYWpfUWVyc2hvcl9Lb3JyaWtfR3VzaHRfU2h0YXRvcl9UZXRvcl9Ow6tudG9yX0RoamV0b3InLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX1Noa19NYXJfUHJpX01hal9RZXJfS29yX0d1c19TaHRfVGV0X07Dq25fRGhqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ0UgRGllbF9FIEjDq27Dq19FIE1hcnTDq19FIE3Dq3JrdXLDq19FIEVuanRlX0UgUHJlbXRlX0UgU2h0dW7Dqycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ0RpZV9Iw6tuX01hcl9Nw6tyX0Vual9QcmVfU2h0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ0RfSF9NYV9Nw6tfRV9QX1NoJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9QRHxNRC8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0LmNoYXJBdCgwKSA9PT0gJ00nO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICByZXR1cm4gaG91cnMgPCAxMiA/ICdQRCcgOiAnTUQnO1xuICAgICAgICB9LFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1NvdCBuw6tdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbTmVzw6tyIG7Dq10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtuw6tdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbRGplIG7Dq10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtlIGthbHVhciBuw6tdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnbsOrICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBtw6sgcGFyw6snLFxuICAgICAgICAgICAgczogJ2Rpc2Egc2Vrb25kYScsXG4gICAgICAgICAgICBzczogJyVkIHNla29uZGEnLFxuICAgICAgICAgICAgbTogJ25qw6sgbWludXTDqycsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0YScsXG4gICAgICAgICAgICBoOiAnbmrDqyBvcsOrJyxcbiAgICAgICAgICAgIGhoOiAnJWQgb3LDqycsXG4gICAgICAgICAgICBkOiAnbmrDqyBkaXTDqycsXG4gICAgICAgICAgICBkZDogJyVkIGRpdMOrJyxcbiAgICAgICAgICAgIE06ICduasOrIG11YWonLFxuICAgICAgICAgICAgTU06ICclZCBtdWFqJyxcbiAgICAgICAgICAgIHk6ICduasOrIHZpdCcsXG4gICAgICAgICAgICB5eTogJyVkIHZpdGUnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNxO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFNlcmJpYW4gQ3lyaWxsaWMgW3NyLWN5cmxdXG4vLyEgYXV0aG9yIDogTWlsYW4gSmFuYcSNa292acSHPG1pbGFuamFuYWNrb3ZpY0BnbWFpbC5jb20+IDogaHR0cHM6Ly9naXRodWIuY29tL21pbGFuLWpcbi8vISBhdXRob3IgOiBTdGVmYW4gQ3JuamFrb3ZpxIcgPHN0ZWZhbkBob3RtYWlsLnJzPiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jcm5qYWtvdmljXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdHJhbnNsYXRvciA9IHtcbiAgICAgICAgd29yZHM6IHtcbiAgICAgICAgICAgIC8vRGlmZmVyZW50IGdyYW1tYXRpY2FsIGNhc2VzXG4gICAgICAgICAgICBzczogWyfRgdC10LrRg9C90LTQsCcsICfRgdC10LrRg9C90LTQtScsICfRgdC10LrRg9C90LTQuCddLFxuICAgICAgICAgICAgbTogWyfRmNC10LTQsNC9INC80LjQvdGD0YInLCAn0ZjQtdC00L3QvtCzINC80LjQvdGD0YLQsCddLFxuICAgICAgICAgICAgbW06IFsn0LzQuNC90YPRgicsICfQvNC40L3Rg9GC0LAnLCAn0LzQuNC90YPRgtCwJ10sXG4gICAgICAgICAgICBoOiBbJ9GY0LXQtNCw0L0g0YHQsNGCJywgJ9GY0LXQtNC90L7QsyDRgdCw0YLQsCddLFxuICAgICAgICAgICAgaGg6IFsn0YHQsNGCJywgJ9GB0LDRgtCwJywgJ9GB0LDRgtC4J10sXG4gICAgICAgICAgICBkOiBbJ9GY0LXQtNCw0L0g0LTQsNC9JywgJ9GY0LXQtNC90L7QsyDQtNCw0L3QsCddLFxuICAgICAgICAgICAgZGQ6IFsn0LTQsNC9JywgJ9C00LDQvdCwJywgJ9C00LDQvdCwJ10sXG4gICAgICAgICAgICBNOiBbJ9GY0LXQtNCw0L0g0LzQtdGB0LXRhicsICfRmNC10LTQvdC+0LMg0LzQtdGB0LXRhtCwJ10sXG4gICAgICAgICAgICBNTTogWyfQvNC10YHQtdGGJywgJ9C80LXRgdC10YbQsCcsICfQvNC10YHQtdGG0LgnXSxcbiAgICAgICAgICAgIHk6IFsn0ZjQtdC00L3RgyDQs9C+0LTQuNC90YMnLCAn0ZjQtdC00L3QtSDQs9C+0LTQuNC90LUnXSxcbiAgICAgICAgICAgIHl5OiBbJ9Cz0L7QtNC40L3RgycsICfQs9C+0LTQuNC90LUnLCAn0LPQvtC00LjQvdCwJ10sXG4gICAgICAgIH0sXG4gICAgICAgIGNvcnJlY3RHcmFtbWF0aWNhbENhc2U6IGZ1bmN0aW9uIChudW1iZXIsIHdvcmRLZXkpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBudW1iZXIgJSAxMCA+PSAxICYmXG4gICAgICAgICAgICAgICAgbnVtYmVyICUgMTAgPD0gNCAmJlxuICAgICAgICAgICAgICAgIChudW1iZXIgJSAxMDAgPCAxMCB8fCBudW1iZXIgJSAxMDAgPj0gMjApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICUgMTAgPT09IDEgPyB3b3JkS2V5WzBdIDogd29yZEtleVsxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB3b3JkS2V5WzJdO1xuICAgICAgICB9LFxuICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uIChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgIHZhciB3b3JkS2V5ID0gdHJhbnNsYXRvci53b3Jkc1trZXldLFxuICAgICAgICAgICAgICAgIHdvcmQ7XG5cbiAgICAgICAgICAgIGlmIChrZXkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgLy8gTm9taW5hdGl2XG4gICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gJ3knICYmIHdpdGhvdXRTdWZmaXgpIHJldHVybiAn0ZjQtdC00L3QsCDQs9C+0LTQuNC90LAnO1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gd29yZEtleVswXSA6IHdvcmRLZXlbMV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdvcmQgPSB0cmFuc2xhdG9yLmNvcnJlY3RHcmFtbWF0aWNhbENhc2UobnVtYmVyLCB3b3JkS2V5KTtcbiAgICAgICAgICAgIC8vIE5vbWluYXRpdlxuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ3l5JyAmJiB3aXRob3V0U3VmZml4ICYmIHdvcmQgPT09ICfQs9C+0LTQuNC90YMnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcg0LPQvtC00LjQvdCwJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIHdvcmQ7XG4gICAgICAgIH0sXG4gICAgfTtcblxuICAgIHZhciBzckN5cmwgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzci1jeXJsJywge1xuICAgICAgICBtb250aHM6ICfRmNCw0L3Rg9Cw0YBf0YTQtdCx0YDRg9Cw0YBf0LzQsNGA0YJf0LDQv9GA0LjQu1/QvNCw0Zhf0ZjRg9C9X9GY0YPQu1/QsNCy0LPRg9GB0YJf0YHQtdC/0YLQtdC80LHQsNGAX9C+0LrRgtC+0LHQsNGAX9C90L7QstC10LzQsdCw0YBf0LTQtdGG0LXQvNCx0LDRgCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn0ZjQsNC9Ll/RhNC10LEuX9C80LDRgC5f0LDQv9GALl/QvNCw0Zhf0ZjRg9C9X9GY0YPQu1/QsNCy0LMuX9GB0LXQvy5f0L7QutGCLl/QvdC+0LIuX9C00LXRhi4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAn0L3QtdC00LXRmdCwX9C/0L7QvdC10LTQtdGZ0LDQul/Rg9GC0L7RgNCw0Lpf0YHRgNC10LTQsF/Rh9C10YLQstGA0YLQsNC6X9C/0LXRgtCw0Lpf0YHRg9Cx0L7RgtCwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn0L3QtdC0Ll/Qv9C+0L0uX9GD0YLQvi5f0YHRgNC1Ll/Rh9C10YIuX9C/0LXRgi5f0YHRg9CxLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfQvdC1X9C/0L5f0YPRgl/RgdGAX9GH0LVf0L/QtV/RgdGDJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnRC4gTS4gWVlZWS4nLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVkuJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWS4gSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZLiBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb0LTQsNC90LDRgSDRg10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vRgdGD0YLRgNCwINGDXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vRg10gW9C90LXQtNC10ZnRg10gW9GDXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9GDXSBb0YHRgNC10LTRg10gW9GDXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9GDXSBb0YHRg9Cx0L7RgtGDXSBb0YNdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0YNdIGRkZGQgW9GDXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb0ZjRg9GH0LUg0YNdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxhc3RXZWVrRGF5cyA9IFtcbiAgICAgICAgICAgICAgICAgICAgJ1vQv9GA0L7RiNC70LVdIFvQvdC10LTQtdGZ0LVdIFvRg10gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW9C/0YDQvtGI0LvQvtCzXSBb0L/QvtC90LXQtNC10ZnQutCwXSBb0YNdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1vQv9GA0L7RiNC70L7Qs10gW9GD0YLQvtGA0LrQsF0gW9GDXSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdb0L/RgNC+0YjQu9C1XSBb0YHRgNC10LTQtV0gW9GDXSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdb0L/RgNC+0YjQu9C+0LNdIFvRh9C10YLQstGA0YLQutCwXSBb0YNdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1vQv9GA0L7RiNC70L7Qs10gW9C/0LXRgtC60LBdIFvRg10gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW9C/0YDQvtGI0LvQtV0gW9GB0YPQsdC+0YLQtV0gW9GDXSBMVCcsXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGFzdFdlZWtEYXlzW3RoaXMuZGF5KCldO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn0LfQsCAlcycsXG4gICAgICAgICAgICBwYXN0OiAn0L/RgNC1ICVzJyxcbiAgICAgICAgICAgIHM6ICfQvdC10LrQvtC70LjQutC+INGB0LXQutGD0L3QtNC4JyxcbiAgICAgICAgICAgIHNzOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG06IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgaDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBoaDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE06IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgTU06IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgeTogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICB5eTogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxc3QgaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3JDeXJsO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFNlcmJpYW4gW3NyXVxuLy8hIGF1dGhvciA6IE1pbGFuIEphbmHEjWtvdmnEhzxtaWxhbmphbmFja292aWNAZ21haWwuY29tPiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWxhbi1qXG4vLyEgYXV0aG9yIDogU3RlZmFuIENybmpha292acSHIDxzdGVmYW5AaG90bWFpbC5ycz4gOiBodHRwczovL2dpdGh1Yi5jb20vY3JuamFrb3ZpY1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHRyYW5zbGF0b3IgPSB7XG4gICAgICAgIHdvcmRzOiB7XG4gICAgICAgICAgICAvL0RpZmZlcmVudCBncmFtbWF0aWNhbCBjYXNlc1xuICAgICAgICAgICAgc3M6IFsnc2VrdW5kYScsICdzZWt1bmRlJywgJ3Nla3VuZGknXSxcbiAgICAgICAgICAgIG06IFsnamVkYW4gbWludXQnLCAnamVkbm9nIG1pbnV0YSddLFxuICAgICAgICAgICAgbW06IFsnbWludXQnLCAnbWludXRhJywgJ21pbnV0YSddLFxuICAgICAgICAgICAgaDogWydqZWRhbiBzYXQnLCAnamVkbm9nIHNhdGEnXSxcbiAgICAgICAgICAgIGhoOiBbJ3NhdCcsICdzYXRhJywgJ3NhdGknXSxcbiAgICAgICAgICAgIGQ6IFsnamVkYW4gZGFuJywgJ2plZG5vZyBkYW5hJ10sXG4gICAgICAgICAgICBkZDogWydkYW4nLCAnZGFuYScsICdkYW5hJ10sXG4gICAgICAgICAgICBNOiBbJ2plZGFuIG1lc2VjJywgJ2plZG5vZyBtZXNlY2EnXSxcbiAgICAgICAgICAgIE1NOiBbJ21lc2VjJywgJ21lc2VjYScsICdtZXNlY2knXSxcbiAgICAgICAgICAgIHk6IFsnamVkbnUgZ29kaW51JywgJ2plZG5lIGdvZGluZSddLFxuICAgICAgICAgICAgeXk6IFsnZ29kaW51JywgJ2dvZGluZScsICdnb2RpbmEnXSxcbiAgICAgICAgfSxcbiAgICAgICAgY29ycmVjdEdyYW1tYXRpY2FsQ2FzZTogZnVuY3Rpb24gKG51bWJlciwgd29yZEtleSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIG51bWJlciAlIDEwID49IDEgJiZcbiAgICAgICAgICAgICAgICBudW1iZXIgJSAxMCA8PSA0ICYmXG4gICAgICAgICAgICAgICAgKG51bWJlciAlIDEwMCA8IDEwIHx8IG51bWJlciAlIDEwMCA+PSAyMClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgJSAxMCA9PT0gMSA/IHdvcmRLZXlbMF0gOiB3b3JkS2V5WzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHdvcmRLZXlbMl07XG4gICAgICAgIH0sXG4gICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24gKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgdmFyIHdvcmRLZXkgPSB0cmFuc2xhdG9yLndvcmRzW2tleV0sXG4gICAgICAgICAgICAgICAgd29yZDtcblxuICAgICAgICAgICAgaWYgKGtleS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAvLyBOb21pbmF0aXZcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSAneScgJiYgd2l0aG91dFN1ZmZpeCkgcmV0dXJuICdqZWRuYSBnb2RpbmEnO1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gd29yZEtleVswXSA6IHdvcmRLZXlbMV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdvcmQgPSB0cmFuc2xhdG9yLmNvcnJlY3RHcmFtbWF0aWNhbENhc2UobnVtYmVyLCB3b3JkS2V5KTtcbiAgICAgICAgICAgIC8vIE5vbWluYXRpdlxuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ3l5JyAmJiB3aXRob3V0U3VmZml4ICYmIHdvcmQgPT09ICdnb2RpbnUnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgZ29kaW5hJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIHdvcmQ7XG4gICAgICAgIH0sXG4gICAgfTtcblxuICAgIHZhciBzciA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NyJywge1xuICAgICAgICBtb250aHM6ICdqYW51YXJfZmVicnVhcl9tYXJ0X2FwcmlsX21hal9qdW5fanVsX2F2Z3VzdF9zZXB0ZW1iYXJfb2t0b2Jhcl9ub3ZlbWJhcl9kZWNlbWJhcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnamFuLl9mZWIuX21hci5fYXByLl9tYWpfanVuX2p1bF9hdmcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnbmVkZWxqYV9wb25lZGVsamFrX3V0b3Jha19zcmVkYV/EjWV0dnJ0YWtfcGV0YWtfc3Vib3RhJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnbmVkLl9wb24uX3V0by5fc3JlLl/EjWV0Ll9wZXQuX3N1Yi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnbmVfcG9fdXRfc3JfxI1lX3BlX3N1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnRC4gTS4gWVlZWS4nLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVkuJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWS4gSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZLiBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbZGFuYXMgdV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tzdXRyYSB1XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbbmVkZWxqdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3NyZWR1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbc3Vib3R1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBkZGRkIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbanXEjWUgdV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgbGFzdFdlZWtEYXlzID0gW1xuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbGVdIFtuZWRlbGplXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbG9nXSBbcG9uZWRlbGprYV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxvZ10gW3V0b3JrYV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxlXSBbc3JlZGVdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFvEjWV0dnJ0a2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFtwZXRrYV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxlXSBbc3Vib3RlXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RXZWVrRGF5c1t0aGlzLmRheSgpXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdwcmUgJXMnLFxuICAgICAgICAgICAgczogJ25la29saWtvIHNla3VuZGknLFxuICAgICAgICAgICAgc3M6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgbTogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBtbTogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBoOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQ6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgZGQ6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgTTogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBNTTogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICB5OiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBzcjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBzaVN3YXRpIFtzc11cbi8vISBhdXRob3IgOiBOaWNvbGFpIERhdmllczxtYWlsQG5pY29sYWkuaW8+IDogaHR0cHM6Ly9naXRodWIuY29tL25pY29sYWlkYXZpZXNcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzcyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NzJywge1xuICAgICAgICBtb250aHM6IFwiQmhpbWJpZHZ3YW5lX0luZGxvdmFuYV9JbmRsb3YnbGVua2h1bHVfTWFiYXNhX0lua2h3ZWtod2V0aV9JbmhsYWJhX0tob2x3YW5lX0luZ2NpX0lueW9uaV9JbXBoYWxhX0x3ZXRpX0luZ29uZ29uaVwiLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnQmhpX0luYV9JbnVfTWFiX0lua19JbmhfS2hvX0lnY19JbnlfSW1wX0x3ZV9JZ28nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ0xpc29udGZvX1Vtc29tYnVsdWtvX0xlc2liaWxpX0xlc2l0c2F0ZnVfTGVzaW5lX0xlc2lobGFudV9VbWdjaWJlbG8nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ0xpc19VbWJfTHNiX0xlc19Mc2lfTHNoX1VtZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdMaV9Vc19MYl9MdF9Mc19MaF9VZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tOYW11aGxhIG5nYV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tLdXNhc2EgbmdhXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW25nYV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tJdG9sbyBuZ2FdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbbGVsaXBoZWxpbGVdIFtuZ2FdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnbmdhICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICd3ZW50ZWthIG5nYSAlcycsXG4gICAgICAgICAgICBzOiAnZW1penV6d2FuYSBsb21jYW5lJyxcbiAgICAgICAgICAgIHNzOiAnJWQgbXp1endhbmEnLFxuICAgICAgICAgICAgbTogJ3VtenV6dScsXG4gICAgICAgICAgICBtbTogJyVkIGVtaXp1enUnLFxuICAgICAgICAgICAgaDogJ2xpaG9yYScsXG4gICAgICAgICAgICBoaDogJyVkIGVtYWhvcmEnLFxuICAgICAgICAgICAgZDogJ2xpbGFuZ2EnLFxuICAgICAgICAgICAgZGQ6ICclZCBlbWFsYW5nYScsXG4gICAgICAgICAgICBNOiAnaW55YW5nYScsXG4gICAgICAgICAgICBNTTogJyVkIHRpbnlhbmdhJyxcbiAgICAgICAgICAgIHk6ICd1bW55YWthJyxcbiAgICAgICAgICAgIHl5OiAnJWQgaW1pbnlha2EnLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvZWt1c2VuaXxlbWluaXxlbnRzYW1iYW1hfGVidXN1a3UvLFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZWt1c2VuaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VtaW5pJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxOSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZW50c2FtYmFtYSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZWJ1c3VrdSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ2VrdXNlbmknKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnZW1pbmknKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ2VudHNhbWJhbWEnIHx8IG1lcmlkaWVtID09PSAnZWJ1c3VrdScpIHtcbiAgICAgICAgICAgICAgICBpZiAoaG91ciA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LyxcbiAgICAgICAgb3JkaW5hbDogJyVkJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNzO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFN3ZWRpc2ggW3N2XVxuLy8hIGF1dGhvciA6IEplbnMgQWxtIDogaHR0cHM6Ly9naXRodWIuY29tL3VsbXVzXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3YgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzdicsIHtcbiAgICAgICAgbW9udGhzOiAnamFudWFyaV9mZWJydWFyaV9tYXJzX2FwcmlsX21hal9qdW5pX2p1bGlfYXVndXN0aV9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW5fZmViX21hcl9hcHJfbWFqX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdzw7ZuZGFnX23DpW5kYWdfdGlzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sw7ZyZGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnc8O2bl9tw6VuX3Rpc19vbnNfdG9yX2ZyZV9sw7ZyJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ3PDtl9tw6VfdGlfb25fdG9fZnJfbMO2Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIFtrbC5dIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIFtrbC5dIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbDogJ0QgTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgbGxsbDogJ2RkZCBEIE1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSWRhZ10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tJbW9yZ29uXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0lnw6VyXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1tQw6VdIGRkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbSV0gZGRkZFtzXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ29tICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdmw7ZyICVzIHNlZGFuJyxcbiAgICAgICAgICAgIHM6ICduw6VncmEgc2VrdW5kZXInLFxuICAgICAgICAgICAgc3M6ICclZCBzZWt1bmRlcicsXG4gICAgICAgICAgICBtOiAnZW4gbWludXQnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGVyJyxcbiAgICAgICAgICAgIGg6ICdlbiB0aW1tZScsXG4gICAgICAgICAgICBoaDogJyVkIHRpbW1hcicsXG4gICAgICAgICAgICBkOiAnZW4gZGFnJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGFnYXInLFxuICAgICAgICAgICAgTTogJ2VuIG3DpW5hZCcsXG4gICAgICAgICAgICBNTTogJyVkIG3DpW5hZGVyJyxcbiAgICAgICAgICAgIHk6ICdldHQgw6VyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgw6VyJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KFxcOmV8XFw6YSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9XG4gICAgICAgICAgICAgICAgICAgIH5+KChudW1iZXIgJSAxMDApIC8gMTApID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICc6ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnOmEnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJzphJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAzXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICc6ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJzplJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBzdjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBTd2FoaWxpIFtzd11cbi8vISBhdXRob3IgOiBGYWhhZCBLYXNzaW0gOiBodHRwczovL2dpdGh1Yi5jb20vZmFkc2VsXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3cgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzdycsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyaV9GZWJydWFyaV9NYWNoaV9BcHJpbGlfTWVpX0p1bmlfSnVsYWlfQWdvc3RpX1NlcHRlbWJhX09rdG9iYV9Ob3ZlbWJhX0Rlc2VtYmEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0ZlYl9NYWNfQXByX01laV9KdW5fSnVsX0Fnb19TZXBfT2t0X05vdl9EZXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ0p1bWFwaWxpX0p1bWF0YXR1X0p1bWFubmVfSnVtYXRhbm9fQWxoYW1pc2lfSWp1bWFhX0p1bWFtb3NpJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdKcGxfSnRhdF9Kbm5lX0p0YW5fQWxoX0lqbV9KbW9zJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ0oyX0ozX0o0X0o1X0FsX0lqX0oxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ2hoOm1tIEEnLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tsZW8gc2FhXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2tlc2hvIHNhYV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdbd2lraSBpamF5b10gZGRkZCBbc2FhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tqYW5hXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1t3aWtpIGlsaXlvcGl0YV0gZGRkZCBbc2FhdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyBiYWFkYXllJyxcbiAgICAgICAgICAgIHBhc3Q6ICd0b2tlYSAlcycsXG4gICAgICAgICAgICBzOiAnaGl2aSBwdW5kZScsXG4gICAgICAgICAgICBzczogJ3Nla3VuZGUgJWQnLFxuICAgICAgICAgICAgbTogJ2Rha2lrYSBtb2phJyxcbiAgICAgICAgICAgIG1tOiAnZGFraWthICVkJyxcbiAgICAgICAgICAgIGg6ICdzYWEgbGltb2phJyxcbiAgICAgICAgICAgIGhoOiAnbWFzYWEgJWQnLFxuICAgICAgICAgICAgZDogJ3Npa3UgbW9qYScsXG4gICAgICAgICAgICBkZDogJ3Npa3UgJWQnLFxuICAgICAgICAgICAgTTogJ213ZXppIG1tb2phJyxcbiAgICAgICAgICAgIE1NOiAnbWllemkgJWQnLFxuICAgICAgICAgICAgeTogJ213YWthIG1tb2phJyxcbiAgICAgICAgICAgIHl5OiAnbWlha2EgJWQnLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3c7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVGFtaWwgW3RhXVxuLy8hIGF1dGhvciA6IEFyanVua3VtYXIgS3Jpc2huYW1vb3J0aHkgOiBodHRwczovL2dpdGh1Yi5jb20vdGsxMjA0MDRcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICAgICAxOiAn4K+nJyxcbiAgICAgICAgICAgIDI6ICfgr6gnLFxuICAgICAgICAgICAgMzogJ+CvqScsXG4gICAgICAgICAgICA0OiAn4K+qJyxcbiAgICAgICAgICAgIDU6ICfgr6snLFxuICAgICAgICAgICAgNjogJ+CvrCcsXG4gICAgICAgICAgICA3OiAn4K+tJyxcbiAgICAgICAgICAgIDg6ICfgr64nLFxuICAgICAgICAgICAgOTogJ+CvrycsXG4gICAgICAgICAgICAwOiAn4K+mJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ+Cvpyc6ICcxJyxcbiAgICAgICAgICAgICfgr6gnOiAnMicsXG4gICAgICAgICAgICAn4K+pJzogJzMnLFxuICAgICAgICAgICAgJ+Cvqic6ICc0JyxcbiAgICAgICAgICAgICfgr6snOiAnNScsXG4gICAgICAgICAgICAn4K+sJzogJzYnLFxuICAgICAgICAgICAgJ+CvrSc6ICc3JyxcbiAgICAgICAgICAgICfgr64nOiAnOCcsXG4gICAgICAgICAgICAn4K+vJzogJzknLFxuICAgICAgICAgICAgJ+Cvpic6ICcwJyxcbiAgICAgICAgfTtcblxuICAgIHZhciB0YSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RhJywge1xuICAgICAgICBtb250aHM6ICfgrpzgrqngrrXgrrDgrr9f4K6q4K6/4K6q4K+N4K6w4K614K6w4K6/X+CuruCuvuCusOCvjeCumuCvjV/gro/grqrgr43grrDgrrLgr41f4K6u4K+HX+CunOCvguCuqeCvjV/grpzgr4LgrrLgr4hf4K6G4K6V4K644K+N4K6f4K+NX+CumuCvhuCuquCvjeCun+CvhuCuruCvjeCuquCusOCvjV/groXgrpXgr43grp/gr4fgrr7grqrgrrDgr41f4K6o4K614K6u4K+N4K6q4K6w4K+NX+Cun+Cuv+CumuCuruCvjeCuquCusOCvjScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn4K6c4K6p4K614K6w4K6/X+CuquCuv+CuquCvjeCusOCuteCusOCuv1/grq7grr7grrDgr43grprgr41f4K6P4K6q4K+N4K6w4K6y4K+NX+CuruCvh1/grpzgr4Lgrqngr41f4K6c4K+C4K6y4K+IX+CuhuCuleCuuOCvjeCun+CvjV/grprgr4bgrqrgr43grp/gr4bgrq7gr43grqrgrrDgr41f4K6F4K6V4K+N4K6f4K+H4K6+4K6q4K6w4K+NX+CuqOCuteCuruCvjeCuquCusOCvjV/grp/grr/grprgrq7gr43grqrgrrDgr40nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAn4K6e4K6+4K6v4K6/4K6x4K+N4K6x4K+B4K6V4K+N4K6V4K6/4K604K6u4K+IX+CupOCuv+CumeCvjeCuleCun+CvjeCuleCuv+CutOCuruCviF/grprgr4bgrrXgr43grrXgrr7grq/gr43grpXgrr/grrTgrq7gr4hf4K6q4K+B4K6k4K6p4K+N4K6V4K6/4K604K6u4K+IX+CuteCuv+Cur+CuvuCutOCuleCvjeCuleCuv+CutOCuruCviF/grrXgr4bgrrPgr43grrPgrr/grpXgr43grpXgrr/grrTgrq7gr4hf4K6a4K6p4K6/4K6V4K+N4K6V4K6/4K604K6u4K+IJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgrp7grr7grq/grr/grrHgr4Ff4K6k4K6/4K6Z4K+N4K6V4K6z4K+NX+CumuCvhuCuteCvjeCuteCuvuCur+CvjV/grqrgr4HgrqTgrqngr41f4K614K6/4K6v4K6+4K604K6p4K+NX+CuteCvhuCus+CvjeCus+Cuv1/grprgrqngrr8nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4K6e4K6+X+CupOCuv1/grprgr4Zf4K6q4K+BX+CuteCuv1/grrXgr4Zf4K6aJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZLCBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVksIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4K6H4K6p4K+N4K6x4K+BXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+CuqOCuvuCus+CviF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+CuqOCvh+CuseCvjeCuseCvgV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4K6V4K6f4K6o4K+N4K6kIOCuteCuvuCusOCuruCvjV0gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDgrofgrrLgr40nLFxuICAgICAgICAgICAgcGFzdDogJyVzIOCuruCvgeCuqeCvjScsXG4gICAgICAgICAgICBzOiAn4K6S4K6w4K+BIOCumuCuv+CusiDgrrXgrr/grqjgrr7grp/grr/grpXgrrPgr40nLFxuICAgICAgICAgICAgc3M6ICclZCDgrrXgrr/grqjgrr7grp/grr/grpXgrrPgr40nLFxuICAgICAgICAgICAgbTogJ+CukuCusOCvgSDgrqjgrr/grq7grr/grp/grq7gr40nLFxuICAgICAgICAgICAgbW06ICclZCDgrqjgrr/grq7grr/grp/grpngr43grpXgrrPgr40nLFxuICAgICAgICAgICAgaDogJ+CukuCusOCvgSDgrq7grqPgrr8g4K6o4K+H4K6w4K6u4K+NJyxcbiAgICAgICAgICAgIGhoOiAnJWQg4K6u4K6j4K6/IOCuqOCvh+CusOCuruCvjScsXG4gICAgICAgICAgICBkOiAn4K6S4K6w4K+BIOCuqOCuvuCus+CvjScsXG4gICAgICAgICAgICBkZDogJyVkIOCuqOCuvuCun+CvjeCuleCus+CvjScsXG4gICAgICAgICAgICBNOiAn4K6S4K6w4K+BIOCuruCuvuCupOCuruCvjScsXG4gICAgICAgICAgICBNTTogJyVkIOCuruCuvuCupOCumeCvjeCuleCus+CvjScsXG4gICAgICAgICAgICB5OiAn4K6S4K6w4K+BIOCuteCusOCvgeCun+CuruCvjScsXG4gICAgICAgICAgICB5eTogJyVkIOCuhuCuo+CvjeCun+CvgeCuleCus+CvjScsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfeCuteCupOCvgS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn4K614K6k4K+BJztcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Cvp+CvqOCvqeCvquCvq+CvrOCvreCvruCvr+Cvpl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gcmVmZXIgaHR0cDovL3RhLndpa2lwZWRpYS5vcmcvcy8xZXIxXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/grq/grr7grq7grq7gr4184K614K+I4K6V4K6x4K+IfOCuleCuvuCusuCviHzgrqjgrqPgr43grqrgrpXgrrLgr4184K6O4K6x4K+N4K6q4K6+4K6f4K+BfOCuruCuvuCusuCviC8sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyDgrq/grr7grq7grq7gr40nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgNikge1xuICAgICAgICAgICAgICAgIHJldHVybiAnIOCuteCviOCuleCuseCviCc7IC8vIOCuteCviOCuleCuseCviFxuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyDgrpXgrr7grrLgr4gnOyAvLyDgrpXgrr7grrLgr4hcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcg4K6o4K6j4K+N4K6q4K6V4K6y4K+NJzsgLy8g4K6o4K6j4K+N4K6q4K6V4K6y4K+NXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxOCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnIOCujuCuseCvjeCuquCuvuCun+CvgSc7IC8vIOCujuCuseCvjeCuquCuvuCun+CvgVxuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyDgrq7grr7grrLgr4gnOyAvLyDgrq7grr7grrLgr4hcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcg4K6v4K6+4K6u4K6u4K+NJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4K6v4K6+4K6u4K6u4K+NJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgMiA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4K614K+I4K6V4K6x4K+IJyB8fCBtZXJpZGllbSA9PT0gJ+CuleCuvuCusuCviCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgrqjgrqPgr43grqrgrpXgrrLgr40nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTAgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGE7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVGVsdWd1IFt0ZV1cbi8vISBhdXRob3IgOiBLcmlzaG5hIENoYWl0YW55YSBUaG90YSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9rY3Rob3RhXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdGUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0ZScsIHtcbiAgICAgICAgbW9udGhzOiAn4LCc4LCo4LC14LCw4LC/X+Cwq+Cwv+CwrOCxjeCwsOCwteCwsOCwv1/gsK7gsL7gsLDgsY3gsJrgsL9f4LCP4LCq4LGN4LCw4LC/4LCy4LGNX+CwruCxh1/gsJzgsYLgsKjgsY1f4LCc4LGB4LCy4LGIX+CwhuCwl+CwuOCxjeCwn+CxgV/gsLjgsYbgsKrgsY3gsJ/gsYbgsILgsKzgsLDgsY1f4LCF4LCV4LGN4LCf4LGL4LCs4LCw4LGNX+CwqOCwteCwguCwrOCwsOCxjV/gsKHgsL/gsLjgsYbgsILgsKzgsLDgsY0nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+CwnOCwqC5f4LCr4LC/4LCs4LGN4LCwLl/gsK7gsL7gsLDgsY3gsJrgsL9f4LCP4LCq4LGN4LCw4LC/Ll/gsK7gsYdf4LCc4LGC4LCo4LGNX+CwnOCxgeCwsuCxiF/gsIbgsJcuX+CwuOCxhuCwquCxjS5f4LCF4LCV4LGN4LCf4LGLLl/gsKjgsLUuX+CwoeCwv+CwuOCxhi4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAn4LCG4LCm4LC/4LC14LC+4LCw4LCCX+CwuOCxi+CwruCwteCwvuCwsOCwgl/gsK7gsILgsJfgsLPgsLXgsL7gsLDgsIJf4LCs4LGB4LCn4LC14LC+4LCw4LCCX+Cwl+CxgeCwsOCxgeCwteCwvuCwsOCwgl/gsLbgsYHgsJXgsY3gsLDgsLXgsL7gsLDgsIJf4LC24LCo4LC/4LC14LC+4LCw4LCCJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgsIbgsKbgsL9f4LC44LGL4LCuX+CwruCwguCwl+Cws1/gsKzgsYHgsKdf4LCX4LGB4LCw4LGBX+CwtuCxgeCwleCxjeCwsF/gsLbgsKjgsL8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4LCGX+CwuOCxi1/gsK7gsIJf4LCs4LGBX+Cwl+CxgV/gsLbgsYFf4LC2Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnQSBoOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVksIEEgaDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+CwqOCxh+CwoeCxgV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vgsLDgsYfgsKrgsYFdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCwgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vgsKjgsL/gsKjgsY3gsKhdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+Cwl+CwpF0gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDgsLLgsYsnLFxuICAgICAgICAgICAgcGFzdDogJyVzIOCwleCxjeCwsOCwv+CwpOCwgicsXG4gICAgICAgICAgICBzOiAn4LCV4LGK4LCo4LGN4LCo4LC/IOCwleCxjeCwt+Cwo+CwvuCwsuCxgScsXG4gICAgICAgICAgICBzczogJyVkIOCwuOCxhuCwleCwqOCxjeCwsuCxgScsXG4gICAgICAgICAgICBtOiAn4LCS4LCVIOCwqOCwv+CwruCwv+Cwt+CwgicsXG4gICAgICAgICAgICBtbTogJyVkIOCwqOCwv+CwruCwv+Cwt+CwvuCwsuCxgScsXG4gICAgICAgICAgICBoOiAn4LCS4LCVIOCwl+CwguCwnycsXG4gICAgICAgICAgICBoaDogJyVkIOCwl+CwguCwn+CwsuCxgScsXG4gICAgICAgICAgICBkOiAn4LCS4LCVIOCwsOCxi+CwnOCxgScsXG4gICAgICAgICAgICBkZDogJyVkIOCwsOCxi+CwnOCxgeCwsuCxgScsXG4gICAgICAgICAgICBNOiAn4LCS4LCVIOCwqOCxhuCwsicsXG4gICAgICAgICAgICBNTTogJyVkIOCwqOCxhuCwsuCwsuCxgScsXG4gICAgICAgICAgICB5OiAn4LCS4LCVIOCwuOCwguCwteCwpOCxjeCwuOCwsOCwgicsXG4gICAgICAgICAgICB5eTogJyVkIOCwuOCwguCwteCwpOCxjeCwuOCwsOCwvuCwsuCxgScsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfeCwtS8sXG4gICAgICAgIG9yZGluYWw6ICclZOCwtScsXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gsLDgsL7gsKTgsY3gsLDgsL984LCJ4LCm4LCv4LCCfOCwruCwp+CxjeCwr+CwvuCwueCxjeCwqOCwgnzgsLjgsL7gsK/gsILgsKTgsY3gsLDgsIIvLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgsLDgsL7gsKTgsY3gsLDgsL8nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgsIngsKbgsK/gsIInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4LCu4LCn4LGN4LCv4LC+4LC54LGN4LCo4LCCJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgsLjgsL7gsK/gsILgsKTgsY3gsLDgsIInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LCw4LC+4LCk4LGN4LCw4LC/JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsIngsKbgsK/gsIInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CwruCwp+CxjeCwr+CwvuCwueCxjeCwqOCwgic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LC44LC+4LCv4LCC4LCk4LGN4LCw4LCCJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsLDgsL7gsKTgsY3gsLDgsL8nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVGV0dW4gRGlsaSAoRWFzdCBUaW1vcikgW3RldF1cbi8vISBhdXRob3IgOiBKb3NodWEgQnJvb2tzIDogaHR0cHM6Ly9naXRodWIuY29tL2pvc2hicm9va3Ncbi8vISBhdXRob3IgOiBPbm9yaW8gRGUgSi4gQWZvbnNvIDogaHR0cHM6Ly9naXRodWIuY29tL21hcm9ib1xuLy8hIGF1dGhvciA6IFNvbmlhIFNpbW9lcyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9zb25pYXNpbW9lc1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHRldCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RldCcsIHtcbiAgICAgICAgbW9udGhzOiAnSmFuZWlydV9GZXZlcmVpcnVfTWFyc3VfQWJyaWxfTWFpdV9KdcOxdV9KdWxsdV9BZ3VzdHVfU2V0ZW1icnVfT3V0dWJydV9Ob3ZlbWJydV9EZXplbWJydScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmV2X01hcl9BYnJfTWFpX0p1bl9KdWxfQWdvX1NldF9PdXRfTm92X0Rleicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdEb21pbmd1X1NlZ3VuZGFfVGVyc2FfS3VhcnRhX0tpbnRhX1Nlc3RhX1NhYmFkdScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ0RvbV9TZWdfVGVyc19LdWFfS2ludF9TZXN0X1NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdEb19TZWdfVGVfS3VfS2lfU2VzX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW09oaW4gaWhhXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0FiYW4gaWhhXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2loYV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tIb3Jpc2VpayBpaGFdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbc2VtYW5hIGtvdHVrXSBbaWhhXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2loYSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgbGl1YmEnLFxuICAgICAgICAgICAgczogJ3NlZ3VuZHUgYmFsdW4nLFxuICAgICAgICAgICAgc3M6ICdzZWd1bmR1ICVkJyxcbiAgICAgICAgICAgIG06ICdtaW51dHUgaWRhJyxcbiAgICAgICAgICAgIG1tOiAnbWludXR1ICVkJyxcbiAgICAgICAgICAgIGg6ICdvcmFzIGlkYScsXG4gICAgICAgICAgICBoaDogJ29yYXMgJWQnLFxuICAgICAgICAgICAgZDogJ2xvcm9uIGlkYScsXG4gICAgICAgICAgICBkZDogJ2xvcm9uICVkJyxcbiAgICAgICAgICAgIE06ICdmdWxhbiBpZGEnLFxuICAgICAgICAgICAgTU06ICdmdWxhbiAlZCcsXG4gICAgICAgICAgICB5OiAndGluYW4gaWRhJyxcbiAgICAgICAgICAgIHl5OiAndGluYW4gJWQnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPVxuICAgICAgICAgICAgICAgICAgICB+figobnVtYmVyICUgMTAwKSAvIDEwKSA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAndGgnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3N0J1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAyXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICduZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gM1xuICAgICAgICAgICAgICAgICAgICAgICAgPyAncmQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGV0O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFRhamlrIFt0Z11cbi8vISBhdXRob3IgOiBPcmlmIE4uIEpyLiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9vcmlmLWpyXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3VmZml4ZXMgPSB7XG4gICAgICAgIDA6ICct0YPQvCcsXG4gICAgICAgIDE6ICct0YPQvCcsXG4gICAgICAgIDI6ICct0Y7QvCcsXG4gICAgICAgIDM6ICct0Y7QvCcsXG4gICAgICAgIDQ6ICct0YPQvCcsXG4gICAgICAgIDU6ICct0YPQvCcsXG4gICAgICAgIDY6ICct0YPQvCcsXG4gICAgICAgIDc6ICct0YPQvCcsXG4gICAgICAgIDg6ICct0YPQvCcsXG4gICAgICAgIDk6ICct0YPQvCcsXG4gICAgICAgIDEwOiAnLdGD0LwnLFxuICAgICAgICAxMjogJy3Rg9C8JyxcbiAgICAgICAgMTM6ICct0YPQvCcsXG4gICAgICAgIDIwOiAnLdGD0LwnLFxuICAgICAgICAzMDogJy3RjtC8JyxcbiAgICAgICAgNDA6ICct0YPQvCcsXG4gICAgICAgIDUwOiAnLdGD0LwnLFxuICAgICAgICA2MDogJy3Rg9C8JyxcbiAgICAgICAgNzA6ICct0YPQvCcsXG4gICAgICAgIDgwOiAnLdGD0LwnLFxuICAgICAgICA5MDogJy3Rg9C8JyxcbiAgICAgICAgMTAwOiAnLdGD0LwnLFxuICAgIH07XG5cbiAgICB2YXIgdGcgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0ZycsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICfRj9C90LLQsNGA0Lhf0YTQtdCy0YDQsNC70Lhf0LzQsNGA0YLQuF/QsNC/0YDQtdC70Lhf0LzQsNC50Lhf0LjRjtC90Lhf0LjRjtC70Lhf0LDQstCz0YPRgdGC0Lhf0YHQtdC90YLRj9Cx0YDQuF/QvtC60YLRj9Cx0YDQuF/QvdC+0Y/QsdGA0Lhf0LTQtdC60LDQsdGA0LgnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6XG4gICAgICAgICAgICAgICAgJ9GP0L3QstCw0YBf0YTQtdCy0YDQsNC7X9C80LDRgNGCX9Cw0L/RgNC10Ltf0LzQsNC5X9C40Y7QvV/QuNGO0Ltf0LDQstCz0YPRgdGCX9GB0LXQvdGC0Y/QsdGAX9C+0LrRgtGP0LHRgF/QvdC+0Y/QsdGAX9C00LXQutCw0LHRgCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn0Y/QvdCyX9GE0LXQsl/QvNCw0YBf0LDQv9GAX9C80LDQuV/QuNGO0L1f0LjRjtC7X9Cw0LLQs1/RgdC10L1f0L7QutGCX9C90L7Rj1/QtNC10LonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAn0Y/QutGI0LDQvdCx0LVf0LTRg9GI0LDQvdCx0LVf0YHQtdGI0LDQvdCx0LVf0YfQvtGA0YjQsNC90LHQtV/Qv9Cw0L3St9GI0LDQvdCx0LVf0rfRg9C80YrQsF/RiNCw0L3QsdC1Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn0Y/RiNCxX9C00YjQsV/RgdGI0LFf0YfRiNCxX9C/0YjQsV/St9GD0Lxf0YjQvdCxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9GP0Yhf0LTRiF/RgdGIX9GH0Yhf0L/RiF/St9C8X9GI0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb0JjQvNGA06/QtyDRgdC+0LDRgtC4XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9Ck0LDRgNC00L4g0YHQvtCw0YLQuF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vQlNC40YDTr9C3INGB0L7QsNGC0LhdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZFvQuF0gW9Kz0LDRhNGC0LDQuCDQvtGP0L3QtNCwINGB0L7QsNGC0LhdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZFvQuF0gW9Kz0LDRhNGC0LDQuCDQs9GD0LfQsNGI0YLQsCDRgdC+0LDRgtC4XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9Cx0LDRitC00LggJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzINC/0LXRiCcsXG4gICAgICAgICAgICBzOiAn0Y/QutGH0LDQvdC0INGB0L7QvdC40Y8nLFxuICAgICAgICAgICAgbTogJ9GP0Log0LTQsNKb0LjSm9CwJyxcbiAgICAgICAgICAgIG1tOiAnJWQg0LTQsNKb0LjSm9CwJyxcbiAgICAgICAgICAgIGg6ICfRj9C6INGB0L7QsNGCJyxcbiAgICAgICAgICAgIGhoOiAnJWQg0YHQvtCw0YInLFxuICAgICAgICAgICAgZDogJ9GP0Log0YDTr9C3JyxcbiAgICAgICAgICAgIGRkOiAnJWQg0YDTr9C3JyxcbiAgICAgICAgICAgIE06ICfRj9C6INC80L7SsycsXG4gICAgICAgICAgICBNTTogJyVkINC80L7SsycsXG4gICAgICAgICAgICB5OiAn0Y/QuiDRgdC+0LsnLFxuICAgICAgICAgICAgeXk6ICclZCDRgdC+0LsnLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv0YjQsNCxfNGB0YPQsdKzfNGA06/Qt3zQsdC10LPQvtKzLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn0YjQsNCxJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn0YHRg9Cx0rMnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn0YDTr9C3Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfQsdC10LPQvtKzJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9GI0LDQsSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0YHRg9Cx0rMnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9GA06/Qtyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxOSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0LHQtdCz0L7Ssyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0YjQsNCxJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjRg9C8fNGO0LwpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGEgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBiID0gbnVtYmVyID49IDEwMCA/IDEwMCA6IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHN1ZmZpeGVzW251bWJlcl0gfHwgc3VmZml4ZXNbYV0gfHwgc3VmZml4ZXNbYl0pO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxdGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGc7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVGhhaSBbdGhdXG4vLyEgYXV0aG9yIDogS3JpZHNhZGEgVGhhbmFidWxwb25nIDogaHR0cHM6Ly9naXRodWIuY29tL3Npcm5cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB0aCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RoJywge1xuICAgICAgICBtb250aHM6ICfguKHguIHguKPguLLguITguKFf4LiB4Li44Lih4Lig4Liy4Lie4Lix4LiZ4LiY4LmMX+C4oeC4teC4meC4suC4hOC4oV/guYDguKHguKnguLLguKLguJlf4Lie4Lik4Lip4Lig4Liy4LiE4LihX+C4oeC4tOC4luC4uOC4meC4suC4ouC4mV/guIHguKPguIHguI7guLLguITguKFf4Liq4Li04LiH4Lir4Liy4LiE4LihX+C4geC4seC4meC4ouC4suC4ouC4mV/guJXguLjguKXguLLguITguKFf4Lie4Lik4Lio4LiI4Li04LiB4Liy4Lii4LiZX+C4mOC4seC4meC4p+C4suC4hOC4oScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn4LihLuC4hC5f4LiBLuC4ni5f4Lih4Li1LuC4hC5f4LmA4LihLuC4oi5f4LieLuC4hC5f4Lih4Li0LuC4oi5f4LiBLuC4hC5f4LiqLuC4hC5f4LiBLuC4oi5f4LiVLuC4hC5f4LieLuC4oi5f4LiYLuC4hC4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICfguK3guLLguJfguLTguJXguKLguYxf4LiI4Lix4LiZ4LiX4Lij4LmMX+C4reC4seC4h+C4hOC4suC4o1/guJ7guLjguJhf4Lie4Lik4Lir4Lix4Liq4Lia4LiU4Li1X+C4qOC4uOC4geC4o+C5jF/guYDguKrguLLguKPguYwnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfguK3guLLguJfguLTguJXguKLguYxf4LiI4Lix4LiZ4LiX4Lij4LmMX+C4reC4seC4h+C4hOC4suC4o1/guJ7guLjguJhf4Lie4Lik4Lir4Lix4LiqX+C4qOC4uOC4geC4o+C5jF/guYDguKrguLLguKPguYwnLnNwbGl0KCdfJyksIC8vIHllcywgdGhyZWUgY2hhcmFjdGVycyBkaWZmZXJlbmNlXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4Lit4LiyLl/guIguX+C4rS5f4LieLl/guJ7guKQuX+C4qC5f4LiqLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSDguYDguKfguKXguLIgSDptbScsXG4gICAgICAgICAgICBMTExMOiAn4Lin4Lix4LiZZGRkZOC4l+C4teC5iCBEIE1NTU0gWVlZWSDguYDguKfguKXguLIgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/guIHguYjguK3guJnguYDguJfguLXguYjguKLguId84Lir4Lil4Lix4LiH4LmA4LiX4Li14LmI4Lii4LiHLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgPT09ICfguKvguKXguLHguIfguYDguJfguLXguYjguKLguIcnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LiB4LmI4Lit4LiZ4LmA4LiX4Li14LmI4Lii4LiHJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfguKvguKXguLHguIfguYDguJfguLXguYjguKLguIcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vguKfguLHguJnguJnguLXguYkg4LmA4Lin4Lil4LiyXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+C4nuC4o+C4uOC5iOC4h+C4meC4teC5iSDguYDguKfguKXguLJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZFvguKvguJnguYnguLIg4LmA4Lin4Lil4LiyXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+C5gOC4oeC4t+C5iOC4reC4p+C4suC4meC4meC4teC5iSDguYDguKfguKXguLJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+C4p+C4seC4mV1kZGRkW+C4l+C4teC5iOC5geC4peC5ieC4pyDguYDguKfguKXguLJdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn4Lit4Li14LiBICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclc+C4l+C4teC5iOC5geC4peC5ieC4pycsXG4gICAgICAgICAgICBzOiAn4LmE4Lih4LmI4LiB4Li14LmI4Lin4Li04LiZ4Liy4LiX4Li1JyxcbiAgICAgICAgICAgIHNzOiAnJWQg4Lin4Li04LiZ4Liy4LiX4Li1JyxcbiAgICAgICAgICAgIG06ICcxIOC4meC4suC4l+C4tScsXG4gICAgICAgICAgICBtbTogJyVkIOC4meC4suC4l+C4tScsXG4gICAgICAgICAgICBoOiAnMSDguIrguLHguYjguKfguYLguKHguIcnLFxuICAgICAgICAgICAgaGg6ICclZCDguIrguLHguYjguKfguYLguKHguIcnLFxuICAgICAgICAgICAgZDogJzEg4Lin4Lix4LiZJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4Lin4Lix4LiZJyxcbiAgICAgICAgICAgIHc6ICcxIOC4quC4seC4m+C4lOC4suC4q+C5jCcsXG4gICAgICAgICAgICB3dzogJyVkIOC4quC4seC4m+C4lOC4suC4q+C5jCcsXG4gICAgICAgICAgICBNOiAnMSDguYDguJTguLfguK3guJknLFxuICAgICAgICAgICAgTU06ICclZCDguYDguJTguLfguK3guJknLFxuICAgICAgICAgICAgeTogJzEg4Lib4Li1JyxcbiAgICAgICAgICAgIHl5OiAnJWQg4Lib4Li1JyxcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0aDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBUdXJrbWVuIFt0a11cbi8vISBhdXRob3IgOiBBdGFteXJhdCBBYmR5cmFobWFub3YgOiBodHRwczovL2dpdGh1Yi5jb20vYXRhbXlyYXRhYmR5XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3VmZml4ZXMgPSB7XG4gICAgICAgIDE6IFwiJ2luamlcIixcbiAgICAgICAgNTogXCInaW5qaVwiLFxuICAgICAgICA4OiBcIidpbmppXCIsXG4gICAgICAgIDcwOiBcIidpbmppXCIsXG4gICAgICAgIDgwOiBcIidpbmppXCIsXG4gICAgICAgIDI6IFwiJ25qaVwiLFxuICAgICAgICA3OiBcIiduamlcIixcbiAgICAgICAgMjA6IFwiJ25qaVwiLFxuICAgICAgICA1MDogXCInbmppXCIsXG4gICAgICAgIDM6IFwiJ8O8bmppXCIsXG4gICAgICAgIDQ6IFwiJ8O8bmppXCIsXG4gICAgICAgIDEwMDogXCInw7xuamlcIixcbiAgICAgICAgNjogXCInbmp5XCIsXG4gICAgICAgIDk6IFwiJ3VuanlcIixcbiAgICAgICAgMTA6IFwiJ3VuanlcIixcbiAgICAgICAgMzA6IFwiJ3VuanlcIixcbiAgICAgICAgNjA6IFwiJ3luanlcIixcbiAgICAgICAgOTA6IFwiJ3luanlcIixcbiAgICB9O1xuXG4gICAgdmFyIHRrID0gbW9tZW50LmRlZmluZUxvY2FsZSgndGsnLCB7XG4gICAgICAgIG1vbnRoczogJ8OdYW53YXJfRmV3cmFsX01hcnRfQXByZWxfTWHDvV9Jw711bl9Jw711bF9Bd2d1c3RfU2VudMO9YWJyX09rdMO9YWJyX05vw71hYnJfRGVrYWJyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ8OdYW5fRmV3X01hcl9BcHJfTWHDvV9Jw71uX0nDvWxfQXdnX1Nlbl9Pa3RfTm/DvV9EZWsnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnw51la8WfZW5iZV9EdcWfZW5iZV9TacWfZW5iZV/Dh2FyxZ9lbmJlX1BlbsWfZW5iZV9Bbm5hX8WeZW5iZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ8OdZWtfRHXFn19TacWfX8OHYXJfUGVuX0Fubl/FnmVuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ8Oda19ExZ9fU8WfX8OHcl9Qbl9Bbl/Fnm4nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbYnVnw7xuIHNhZ2F0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2VydGlyIHNhZ2F0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1tpbmRpa2ldIGRkZGQgW3NhZ2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2TDvMO9bl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbZ2XDp2VuXSBkZGRkIFtzYWdhdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyBzb8WIJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDDtsWIJyxcbiAgICAgICAgICAgIHM6ICdiaXJuw6TDp2Ugc2VrdW50JyxcbiAgICAgICAgICAgIG06ICdiaXIgbWludXQnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dCcsXG4gICAgICAgICAgICBoOiAnYmlyIHNhZ2F0JyxcbiAgICAgICAgICAgIGhoOiAnJWQgc2FnYXQnLFxuICAgICAgICAgICAgZDogJ2JpciBnw7xuJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZ8O8bicsXG4gICAgICAgICAgICBNOiAnYmlyIGHDvScsXG4gICAgICAgICAgICBNTTogJyVkIGHDvScsXG4gICAgICAgICAgICB5OiAnYmlyIMO9eWwnLFxuICAgICAgICAgICAgeXk6ICclZCDDvXlsJyxcbiAgICAgICAgfSxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RvJzpcbiAgICAgICAgICAgICAgICBjYXNlICdERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlIGZvciB6ZXJvXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgXCIndW5qeVwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBhID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgICAgICAgICBiID0gKG51bWJlciAlIDEwMCkgLSBhLFxuICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG51bWJlciA+PSAxMDAgPyAxMDAgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHN1ZmZpeGVzW2FdIHx8IHN1ZmZpeGVzW2JdIHx8IHN1ZmZpeGVzW2NdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRrO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFRhZ2Fsb2cgKFBoaWxpcHBpbmVzKSBbdGwtcGhdXG4vLyEgYXV0aG9yIDogRGFuIEhhZ21hbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9oYWdtYW5kYW5cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB0bFBoID0gbW9tZW50LmRlZmluZUxvY2FsZSgndGwtcGgnLCB7XG4gICAgICAgIG1vbnRoczogJ0VuZXJvX1BlYnJlcm9fTWFyc29fQWJyaWxfTWF5b19IdW55b19IdWx5b19BZ29zdG9fU2V0eWVtYnJlX09rdHVicmVfTm9ieWVtYnJlX0Rpc3llbWJyZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdFbmVfUGViX01hcl9BYnJfTWF5X0h1bl9IdWxfQWdvX1NldF9Pa3RfTm9iX0Rpcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdMaW5nZ29fTHVuZXNfTWFydGVzX01peWVya3VsZXNfSHV3ZWJlc19CaXllcm5lc19TYWJhZG8nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdMaW5fTHVuX01hcl9NaXlfSHV3X0JpeV9TYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnTGlfTHVfTWFfTWlfSHVfQmlfU2FiJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnTU0vRC9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnTU1NTSBELCBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ01NTU0gRCwgWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgTU1NTSBERCwgWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnTFQgW25nYXlvbmcgYXJhd10nLFxuICAgICAgICAgICAgbmV4dERheTogJ1tCdWthcyBuZ10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdMVCBbc2Egc3VzdW5vZCBuYV0gZGRkZCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnTFQgW2thaGFwb25dJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnTFQgW25vb25nIG5ha2FyYWFuZ10gZGRkZCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3NhIGxvb2IgbmcgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGFuZyBuYWthbGlwYXMnLFxuICAgICAgICAgICAgczogJ2lsYW5nIHNlZ3VuZG8nLFxuICAgICAgICAgICAgc3M6ICclZCBzZWd1bmRvJyxcbiAgICAgICAgICAgIG06ICdpc2FuZyBtaW51dG8nLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dG8nLFxuICAgICAgICAgICAgaDogJ2lzYW5nIG9yYXMnLFxuICAgICAgICAgICAgaGg6ICclZCBvcmFzJyxcbiAgICAgICAgICAgIGQ6ICdpc2FuZyBhcmF3JyxcbiAgICAgICAgICAgIGRkOiAnJWQgYXJhdycsXG4gICAgICAgICAgICBNOiAnaXNhbmcgYnV3YW4nLFxuICAgICAgICAgICAgTU06ICclZCBidXdhbicsXG4gICAgICAgICAgICB5OiAnaXNhbmcgdGFvbicsXG4gICAgICAgICAgICB5eTogJyVkIHRhb24nLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0vLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGxQaDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBLbGluZ29uIFt0bGhdXG4vLyEgYXV0aG9yIDogRG9taW5pa2EgS3J1ayA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbWFyYW50aHJvc2VcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBudW1iZXJzTm91bnMgPSAncGFnaF93YeKAmV9jaGHigJlfd2VqX2xvU192YWdoX2phdl9Tb2NoX2Nob3JnaF9IdXQnLnNwbGl0KCdfJyk7XG5cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGVGdXR1cmUob3V0cHV0KSB7XG4gICAgICAgIHZhciB0aW1lID0gb3V0cHV0O1xuICAgICAgICB0aW1lID1cbiAgICAgICAgICAgIG91dHB1dC5pbmRleE9mKCdqYWonKSAhPT0gLTFcbiAgICAgICAgICAgICAgICA/IHRpbWUuc2xpY2UoMCwgLTMpICsgJ2xlUydcbiAgICAgICAgICAgICAgICA6IG91dHB1dC5pbmRleE9mKCdqYXInKSAhPT0gLTFcbiAgICAgICAgICAgICAgICA/IHRpbWUuc2xpY2UoMCwgLTMpICsgJ3dhUSdcbiAgICAgICAgICAgICAgICA6IG91dHB1dC5pbmRleE9mKCdESVMnKSAhPT0gLTFcbiAgICAgICAgICAgICAgICA/IHRpbWUuc2xpY2UoMCwgLTMpICsgJ25lbSdcbiAgICAgICAgICAgICAgICA6IHRpbWUgKyAnIHBJcSc7XG4gICAgICAgIHJldHVybiB0aW1lO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZVBhc3Qob3V0cHV0KSB7XG4gICAgICAgIHZhciB0aW1lID0gb3V0cHV0O1xuICAgICAgICB0aW1lID1cbiAgICAgICAgICAgIG91dHB1dC5pbmRleE9mKCdqYWonKSAhPT0gLTFcbiAgICAgICAgICAgICAgICA/IHRpbWUuc2xpY2UoMCwgLTMpICsgJ0h14oCZJ1xuICAgICAgICAgICAgICAgIDogb3V0cHV0LmluZGV4T2YoJ2phcicpICE9PSAtMVxuICAgICAgICAgICAgICAgID8gdGltZS5zbGljZSgwLCAtMykgKyAnd2VuJ1xuICAgICAgICAgICAgICAgIDogb3V0cHV0LmluZGV4T2YoJ0RJUycpICE9PSAtMVxuICAgICAgICAgICAgICAgID8gdGltZS5zbGljZSgwLCAtMykgKyAnYmVuJ1xuICAgICAgICAgICAgICAgIDogdGltZSArICcgcmV0JztcbiAgICAgICAgcmV0dXJuIHRpbWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgbnVtYmVyTm91biA9IG51bWJlckFzTm91bihudW1iZXIpO1xuICAgICAgICBzd2l0Y2ggKHN0cmluZykge1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJOb3VuICsgJyBsdXAnO1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJOb3VuICsgJyB0dXAnO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJOb3VuICsgJyByZXAnO1xuICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJOb3VuICsgJyBqYWonO1xuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJOb3VuICsgJyBqYXInO1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJOb3VuICsgJyBESVMnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbnVtYmVyQXNOb3VuKG51bWJlcikge1xuICAgICAgICB2YXIgaHVuZHJlZCA9IE1hdGguZmxvb3IoKG51bWJlciAlIDEwMDApIC8gMTAwKSxcbiAgICAgICAgICAgIHRlbiA9IE1hdGguZmxvb3IoKG51bWJlciAlIDEwMCkgLyAxMCksXG4gICAgICAgICAgICBvbmUgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgIHdvcmQgPSAnJztcbiAgICAgICAgaWYgKGh1bmRyZWQgPiAwKSB7XG4gICAgICAgICAgICB3b3JkICs9IG51bWJlcnNOb3Vuc1todW5kcmVkXSArICd2YXRsaCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRlbiA+IDApIHtcbiAgICAgICAgICAgIHdvcmQgKz0gKHdvcmQgIT09ICcnID8gJyAnIDogJycpICsgbnVtYmVyc05vdW5zW3Rlbl0gKyAnbWFIJztcbiAgICAgICAgfVxuICAgICAgICBpZiAob25lID4gMCkge1xuICAgICAgICAgICAgd29yZCArPSAod29yZCAhPT0gJycgPyAnICcgOiAnJykgKyBudW1iZXJzTm91bnNbb25lXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gd29yZCA9PT0gJycgPyAncGFnaCcgOiB3b3JkO1xuICAgIH1cblxuICAgIHZhciB0bGggPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0bGgnLCB7XG4gICAgICAgIG1vbnRoczogJ3RlcmHigJkgamFyIHdh4oCZX3RlcmHigJkgamFyIGNoYeKAmV90ZXJh4oCZIGphciB3ZWpfdGVyYeKAmSBqYXIgbG9TX3RlcmHigJkgamFyIHZhZ2hfdGVyYeKAmSBqYXIgamF2X3RlcmHigJkgamFyIFNvY2hfdGVyYeKAmSBqYXIgY2hvcmdoX3RlcmHigJkgamFyIEh1dF90ZXJh4oCZIGphciB3YeKAmW1hSF90ZXJh4oCZIGphciB3YeKAmW1hSCB3YeKAmV90ZXJh4oCZIGphciB3YeKAmW1hSCBjaGHigJknLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ2phciB3YeKAmV9qYXIgY2hh4oCZX2phciB3ZWpfamFyIGxvU19qYXIgdmFnaF9qYXIgamF2X2phciBTb2NoX2phciBjaG9yZ2hfamFyIEh1dF9qYXIgd2HigJltYUhfamFyIHdh4oCZbWFIIHdh4oCZX2phciB3YeKAmW1hSCBjaGHigJknLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdsb2ptSXRqYWpfRGFTamFqX3Bvdmphal9naEl0bGhqYWpfbG9naGphal9idXFqYWpfZ2hJbmphaicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDpcbiAgICAgICAgICAgICdsb2ptSXRqYWpfRGFTamFqX3Bvdmphal9naEl0bGhqYWpfbG9naGphal9idXFqYWpfZ2hJbmphaicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46XG4gICAgICAgICAgICAnbG9qbUl0amFqX0RhU2phal9wb3ZqYWpfZ2hJdGxoamFqX2xvZ2hqYWpfYnVxamFqX2doSW5qYWonLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbRGFIamFqXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW3dh4oCZbGVTXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ0xMTCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW3dh4oCZSHXigJldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnTExMJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiB0cmFuc2xhdGVGdXR1cmUsXG4gICAgICAgICAgICBwYXN0OiB0cmFuc2xhdGVQYXN0LFxuICAgICAgICAgICAgczogJ3B1UyBsdXAnLFxuICAgICAgICAgICAgc3M6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG06ICd3YeKAmSB0dXAnLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6ICd3YeKAmSByZXAnLFxuICAgICAgICAgICAgaGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQ6ICd3YeKAmSBqYWonLFxuICAgICAgICAgICAgZGQ6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE06ICd3YeKAmSBqYXInLFxuICAgICAgICAgICAgTU06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6ICd3YeKAmSBESVMnLFxuICAgICAgICAgICAgeXk6IHRyYW5zbGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0bGg7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVHVya2lzaCBbdHJdXG4vLyEgYXV0aG9ycyA6IEVyaGFuIEd1bmRvZ2FuIDogaHR0cHM6Ly9naXRodWIuY29tL2VyaGFuZ3VuZG9nYW4sXG4vLyEgICAgICAgICAgIEJ1cmFrIFlpxJ9pdCBLYXlhOiBodHRwczovL2dpdGh1Yi5jb20vQllLXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3VmZml4ZXMgPSB7XG4gICAgICAgIDE6IFwiJ2luY2lcIixcbiAgICAgICAgNTogXCInaW5jaVwiLFxuICAgICAgICA4OiBcIidpbmNpXCIsXG4gICAgICAgIDcwOiBcIidpbmNpXCIsXG4gICAgICAgIDgwOiBcIidpbmNpXCIsXG4gICAgICAgIDI6IFwiJ25jaVwiLFxuICAgICAgICA3OiBcIiduY2lcIixcbiAgICAgICAgMjA6IFwiJ25jaVwiLFxuICAgICAgICA1MDogXCInbmNpXCIsXG4gICAgICAgIDM6IFwiJ8O8bmPDvFwiLFxuICAgICAgICA0OiBcIifDvG5jw7xcIixcbiAgICAgICAgMTAwOiBcIifDvG5jw7xcIixcbiAgICAgICAgNjogXCInbmPEsVwiLFxuICAgICAgICA5OiBcIid1bmN1XCIsXG4gICAgICAgIDEwOiBcIid1bmN1XCIsXG4gICAgICAgIDMwOiBcIid1bmN1XCIsXG4gICAgICAgIDYwOiBcIifEsW5jxLFcIixcbiAgICAgICAgOTA6IFwiJ8SxbmPEsVwiLFxuICAgIH07XG5cbiAgICB2YXIgdHIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0cicsIHtcbiAgICAgICAgbW9udGhzOiAnT2Nha1/FnnViYXRfTWFydF9OaXNhbl9NYXnEsXNfSGF6aXJhbl9UZW1tdXpfQcSfdXN0b3NfRXlsw7xsX0VraW1fS2FzxLFtX0FyYWzEsWsnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnT2NhX8WedWJfTWFyX05pc19NYXlfSGF6X1RlbV9BxJ91X0V5bF9Fa2lfS2FzX0FyYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdQYXphcl9QYXphcnRlc2lfU2FsxLFfw4dhcsWfYW1iYV9QZXLFn2VtYmVfQ3VtYV9DdW1hcnRlc2knLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdQYXpfUHp0X1NhbF/Dh2FyX1Blcl9DdW1fQ210Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1B6X1B0X1NhX8OHYV9QZV9DdV9DdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICfDtsO2JyA6ICfDlsOWJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnw7ZzJyA6ICfDllMnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvw7bDtnzDlsOWfMO2c3zDllMvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCA9PT0gJ8O2cycgfHwgaW5wdXQgPT09ICfDllMnO1xuICAgICAgICB9LFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2J1Z8O8biBzYWF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW3lhcsSxbiBzYWF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1tnZWxlY2VrXSBkZGRkIFtzYWF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2TDvG5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2dlw6dlbl0gZGRkZCBbc2FhdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyBzb25yYScsXG4gICAgICAgICAgICBwYXN0OiAnJXMgw7ZuY2UnLFxuICAgICAgICAgICAgczogJ2Jpcmthw6cgc2FuaXllJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2FuaXllJyxcbiAgICAgICAgICAgIG06ICdiaXIgZGFraWthJyxcbiAgICAgICAgICAgIG1tOiAnJWQgZGFraWthJyxcbiAgICAgICAgICAgIGg6ICdiaXIgc2FhdCcsXG4gICAgICAgICAgICBoaDogJyVkIHNhYXQnLFxuICAgICAgICAgICAgZDogJ2JpciBnw7xuJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZ8O8bicsXG4gICAgICAgICAgICB3OiAnYmlyIGhhZnRhJyxcbiAgICAgICAgICAgIHd3OiAnJWQgaGFmdGEnLFxuICAgICAgICAgICAgTTogJ2JpciBheScsXG4gICAgICAgICAgICBNTTogJyVkIGF5JyxcbiAgICAgICAgICAgIHk6ICdiaXIgecSxbCcsXG4gICAgICAgICAgICB5eTogJyVkIHnEsWwnLFxuICAgICAgICB9LFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRG8nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0REJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzcGVjaWFsIGNhc2UgZm9yIHplcm9cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBcIifEsW5jxLFcIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYiA9IChudW1iZXIgJSAxMDApIC0gYSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBudW1iZXIgPj0gMTAwID8gMTAwIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChzdWZmaXhlc1thXSB8fCBzdWZmaXhlc1tiXSB8fCBzdWZmaXhlc1tjXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0cjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBUYWxvc3NhbiBbdHpsXVxuLy8hIGF1dGhvciA6IFJvYmluIHZhbiBkZXIgVmxpZXQgOiBodHRwczovL2dpdGh1Yi5jb20vcm9iaW4wdmFuMGRlcjB2XG4vLyEgYXV0aG9yIDogSXVzdMOsIENhbnVuXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICAvLyBBZnRlciB0aGUgeWVhciB0aGVyZSBzaG91bGQgYmUgYSBzbGFzaCBhbmQgdGhlIGFtb3VudCBvZiB5ZWFycyBzaW5jZSBEZWNlbWJlciAyNiwgMTk3OSBpbiBSb21hbiBudW1lcmFscy5cbiAgICAvLyBUaGlzIGlzIGN1cnJlbnRseSB0b28gZGlmZmljdWx0IChtYXliZSBldmVuIGltcG9zc2libGUpIHRvIGFkZC5cbiAgICB2YXIgdHpsID0gbW9tZW50LmRlZmluZUxvY2FsZSgndHpsJywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJfRmV2cmFnbGhfTWFyw6dfQXZyw691X01haV9Hw7xuX0p1bGlhX0d1c2NodF9TZXRlbXZhcl9MaXN0b3DDpHRzX05vZW12YXJfWmVjZW12YXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0Zldl9NYXJfQXZyX01haV9Hw7xuX0p1bF9HdXNfU2V0X0xpc19Ob2VfWmVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ1PDumxhZGlfTMO6bmXDp2lfTWFpdHppX03DoXJjdXJpX1how7phZGlfVmnDqW5lcsOnaV9Tw6F0dXJpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU8O6bF9Mw7puX01haV9Nw6FyX1how7pfVmnDqV9Tw6F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1PDul9Mw7pfTWFfTcOhX1hoX1ZpX1PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEgubW0nLFxuICAgICAgICAgICAgTFRTOiAnSEgubW0uc3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFtkYWxsYXNdIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBbZGFsbGFzXSBZWVlZIEhILm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBbbGldIEQuIE1NTU0gW2RhbGxhc10gWVlZWSBISC5tbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9kXFwnb3xkXFwnYS9pLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBcImQnb1wiID09PSBpbnB1dC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPiAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gXCJkJ29cIiA6IFwiRCdPXCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gXCJkJ2FcIiA6IFwiRCdBXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW294aGkgw6BdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbZGVtw6Agw6BdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbaWVpcmkgw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW3PDvHIgZWxdIGRkZGQgW2xhc3RldSDDoF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdvc3ByZWkgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ2phJXMnLFxuICAgICAgICAgICAgczogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHNzOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgIHM6IFsndmllbnNhcyBzZWN1bmRzJywgXCInaWVuc2FzIHNlY3VuZHNcIl0sXG4gICAgICAgICAgICBzczogW251bWJlciArICcgc2VjdW5kcycsICcnICsgbnVtYmVyICsgJyBzZWN1bmRzJ10sXG4gICAgICAgICAgICBtOiBbXCInbiBtw611dFwiLCBcIidpZW5zIG3DrXV0XCJdLFxuICAgICAgICAgICAgbW06IFtudW1iZXIgKyAnIG3DrXV0cycsICcnICsgbnVtYmVyICsgJyBtw611dHMnXSxcbiAgICAgICAgICAgIGg6IFtcIiduIMO+b3JhXCIsIFwiJ2llbnNhIMO+b3JhXCJdLFxuICAgICAgICAgICAgaGg6IFtudW1iZXIgKyAnIMO+b3JhcycsICcnICsgbnVtYmVyICsgJyDDvm9yYXMnXSxcbiAgICAgICAgICAgIGQ6IFtcIiduIHppdWFcIiwgXCInaWVuc2Egeml1YVwiXSxcbiAgICAgICAgICAgIGRkOiBbbnVtYmVyICsgJyB6aXVhcycsICcnICsgbnVtYmVyICsgJyB6aXVhcyddLFxuICAgICAgICAgICAgTTogW1wiJ24gbWVzXCIsIFwiJ2llbnMgbWVzXCJdLFxuICAgICAgICAgICAgTU06IFtudW1iZXIgKyAnIG1lc2VuJywgJycgKyBudW1iZXIgKyAnIG1lc2VuJ10sXG4gICAgICAgICAgICB5OiBbXCInbiBhclwiLCBcIidpZW5zIGFyXCJdLFxuICAgICAgICAgICAgeXk6IFtudW1iZXIgKyAnIGFycycsICcnICsgbnVtYmVyICsgJyBhcnMnXSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGlzRnV0dXJlXG4gICAgICAgICAgICA/IGZvcm1hdFtrZXldWzBdXG4gICAgICAgICAgICA6IHdpdGhvdXRTdWZmaXhcbiAgICAgICAgICAgID8gZm9ybWF0W2tleV1bMF1cbiAgICAgICAgICAgIDogZm9ybWF0W2tleV1bMV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHR6bDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBDZW50cmFsIEF0bGFzIFRhbWF6aWdodCBMYXRpbiBbdHptLWxhdG5dXG4vLyEgYXV0aG9yIDogQWJkZWwgU2FpZCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hYmRlbHNhaWRcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB0em1MYXRuID0gbW9tZW50LmRlZmluZUxvY2FsZSgndHptLWxhdG4nLCB7XG4gICAgICAgIG1vbnRoczogJ2lubmF5cl9icsukYXlyy6RfbWFyy6Rzy6RfaWJyaXJfbWF5eXdfeXdueXdfeXdseXd6X8mjd8WhdF/FoXd0YW5iaXJfa3TLpHdicsukX253d2FuYmlyX2R3am5iaXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ2lubmF5cl9icsukYXlyy6RfbWFyy6Rzy6RfaWJyaXJfbWF5eXdfeXdueXdfeXdseXd6X8mjd8WhdF/FoXd0YW5iaXJfa3TLpHdicsukX253d2FuYmlyX2R3am5iaXInLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICdhc2FtYXNfYXluYXNfYXNpbmFzX2FrcmFzX2Frd2FzX2FzaW13YXNfYXNp4biNeWFzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnYXNhbWFzX2F5bmFzX2FzaW5hc19ha3Jhc19ha3dhc19hc2ltd2FzX2FzaeG4jXlhcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdhc2FtYXNfYXluYXNfYXNpbmFzX2FrcmFzX2Frd2FzX2FzaW13YXNfYXNp4biNeWFzJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbYXNka2ggZ10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1thc2thIGddIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbZ10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1thc3NhbnQgZ10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtnXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2RhZGtoIHMgeWFuICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICd5YW4gJXMnLFxuICAgICAgICAgICAgczogJ2ltaWsnLFxuICAgICAgICAgICAgc3M6ICclZCBpbWlrJyxcbiAgICAgICAgICAgIG06ICdtaW514biNJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludeG4jScsXG4gICAgICAgICAgICBoOiAnc2HJm2EnLFxuICAgICAgICAgICAgaGg6ICclZCB0YXNzYcmbaW4nLFxuICAgICAgICAgICAgZDogJ2FzcycsXG4gICAgICAgICAgICBkZDogJyVkIG9zc2FuJyxcbiAgICAgICAgICAgIE06ICdheW93cicsXG4gICAgICAgICAgICBNTTogJyVkIGl5eWlybicsXG4gICAgICAgICAgICB5OiAnYXNnYXMnLFxuICAgICAgICAgICAgeXk6ICclZCBpc2dhc24nLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDYsIC8vIFNhdHVyZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDEyLCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxMnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHR6bUxhdG47XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQ2VudHJhbCBBdGxhcyBUYW1hemlnaHQgW3R6bV1cbi8vISBhdXRob3IgOiBBYmRlbCBTYWlkIDogaHR0cHM6Ly9naXRodWIuY29tL2FiZGVsc2FpZFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHR6bSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3R6bScsIHtcbiAgICAgICAgbW9udGhzOiAn4rWJ4rWP4rWP4rSw4rWi4rWUX+K0seK1leK0sOK1ouK1lV/itY7itLDitZXitZpf4rWJ4rSx4rWU4rWJ4rWUX+K1juK0sOK1ouK1ouK1k1/itaLitZPitY/itaLitZNf4rWi4rWT4rWN4rWi4rWT4rWjX+K1luK1k+K1m+K1nF/itZvitZPitZzitLDitY/itLHitYnitZRf4rS94rWf4rWT4rSx4rWVX+K1j+K1k+K1oeK0sOK1j+K0seK1ieK1lF/itLfitZPitYritY/itLHitYnitZQnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+K1ieK1j+K1j+K0sOK1ouK1lF/itLHitZXitLDitaLitZVf4rWO4rSw4rWV4rWaX+K1ieK0seK1lOK1ieK1lF/itY7itLDitaLitaLitZNf4rWi4rWT4rWP4rWi4rWTX+K1ouK1k+K1jeK1ouK1k+K1o1/itZbitZPitZvitZxf4rWb4rWT4rWc4rSw4rWP4rSx4rWJ4rWUX+K0veK1n+K1k+K0seK1lV/itY/itZPitaHitLDitY/itLHitYnitZRf4rS34rWT4rWK4rWP4rSx4rWJ4rWUJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn4rSw4rWZ4rSw4rWO4rSw4rWZX+K0sOK1ouK1j+K0sOK1mV/itLDitZnitYnitY/itLDitZlf4rSw4rS94rWU4rSw4rWZX+K0sOK0veK1oeK0sOK1mV/itLDitZnitYnitY7itaHitLDitZlf4rSw4rWZ4rWJ4rS54rWi4rSw4rWZJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4rSw4rWZ4rSw4rWO4rSw4rWZX+K0sOK1ouK1j+K0sOK1mV/itLDitZnitYnitY/itLDitZlf4rSw4rS94rWU4rSw4rWZX+K0sOK0veK1oeK0sOK1mV/itLDitZnitYnitY7itaHitLDitZlf4rSw4rWZ4rWJ4rS54rWi4rSw4rWZJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+K0sOK1meK0sOK1juK0sOK1mV/itLDitaLitY/itLDitZlf4rSw4rWZ4rWJ4rWP4rSw4rWZX+K0sOK0veK1lOK0sOK1mV/itLDitL3itaHitLDitZlf4rSw4rWZ4rWJ4rWO4rWh4rSw4rWZX+K0sOK1meK1ieK0ueK1ouK0sOK1mScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+K0sOK1meK0t+K1hSDitLRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4rSw4rWZ4rS94rSwIOK0tF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvitLRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4rSw4rWa4rSw4rWP4rWcIOK0tF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvitLRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn4rS34rSw4rS34rWFIOK1mSDitaLitLDitY8gJXMnLFxuICAgICAgICAgICAgcGFzdDogJ+K1ouK0sOK1jyAlcycsXG4gICAgICAgICAgICBzOiAn4rWJ4rWO4rWJ4rS9JyxcbiAgICAgICAgICAgIHNzOiAnJWQg4rWJ4rWO4rWJ4rS9JyxcbiAgICAgICAgICAgIG06ICfitY7itYnitY/itZPitLonLFxuICAgICAgICAgICAgbW06ICclZCDitY7itYnitY/itZPitLonLFxuICAgICAgICAgICAgaDogJ+K1meK0sOK1hOK0sCcsXG4gICAgICAgICAgICBoaDogJyVkIOK1nOK0sOK1meK1meK0sOK1hOK1ieK1jycsXG4gICAgICAgICAgICBkOiAn4rSw4rWZ4rWZJyxcbiAgICAgICAgICAgIGRkOiAnJWQgb+K1meK1meK0sOK1jycsXG4gICAgICAgICAgICBNOiAn4rSw4rWib+K1k+K1lCcsXG4gICAgICAgICAgICBNTTogJyVkIOK1ieK1ouK1ouK1ieK1lOK1jycsXG4gICAgICAgICAgICB5OiAn4rSw4rWZ4rSz4rSw4rWZJyxcbiAgICAgICAgICAgIHl5OiAnJWQg4rWJ4rWZ4rSz4rSw4rWZ4rWPJyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiA2LCAvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiAxMiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0em07XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVXlnaHVyIChDaGluYSkgW3VnLWNuXVxuLy8hIGF1dGhvcjogYm95YXEgOiBodHRwczovL2dpdGh1Yi5jb20vYm95YXFcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB1Z0NuID0gbW9tZW50LmRlZmluZUxvY2FsZSgndWctY24nLCB7XG4gICAgICAgIG1vbnRoczogJ9mK2KfZhtuL2KfYsV/ZgduQ24vYsdin2YRf2YXYp9ix2Kpf2KbYp9m+2LHbkNmEX9mF2KfZil/YptmJ2Yrbh9mGX9im2YnZituH2YRf2KbYp9uL2Lrbh9iz2Kpf2LPbkNmG2Krbldio2YnYsV/YptuG2YPYqtuV2KjZidixX9mG2YjZitin2KjZidixX9iv25DZg9in2KjZidixJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfZitin2Ybbi9in2LFf2YHbkNuL2LHYp9mEX9mF2KfYsdiqX9im2KfZvtix25DZhF/Zhdin2Ypf2KbZidmK24fZhl/YptmJ2Yrbh9mEX9im2Kfbi9i624fYs9iqX9iz25DZhtiq25XYqNmJ2LFf2KbbhtmD2Krbldio2YnYsV/ZhtmI2YrYp9io2YnYsV/Yr9uQ2YPYp9io2YnYsScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ9mK25XZg9i025XZhtio25Vf2K/biNi025XZhtio25Vf2LPbldmK2LTbldmG2KjblV/ahtin2LHYtNuV2YbYqNuVX9m+25XZiti025XZhtio25Vf2KzbiNmF25Vf2LTbldmG2KjblScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9mK25Vf2K/biF/Ys9uVX9qG2Kdf2b7blV/YrNuIX9i025UnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn2YrblV/Yr9uIX9iz25Vf2obYp1/ZvtuVX9is24hf2LTblScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgTEw6ICdZWVlZLdmK2YnZhNmJTS3Yptin2YrZhtmJ2q1ELdmD24jZhtmJJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVkt2YrZidmE2YlNLdim2KfZitmG2YnarUQt2YPbiNmG2YnYjCBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZNiMIFlZWVkt2YrZidmE2YlNLdim2KfZitmG2YnarUQt2YPbiNmG2YnYjCBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/ZituQ2LHZidmFINmD25DahtuVfNiz25XavtuV2LF82obbiNi02KrZidmGINio24fYsduH2YZ82obbiNi0fNqG24jYtNiq2YnZhiDZg9uQ2YrZidmGfNmD25Xahi8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ9mK25DYsdmJ2YUg2YPbkNqG25UnIHx8XG4gICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfYs9uV2r7bldixJyB8fFxuICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn2obbiNi02KrZidmGINio24fYsduH2YYnXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfahtuI2LTYqtmJ2YYg2YPbkNmK2YnZhicgfHwgbWVyaWRpZW0gPT09ICfZg9uV2oYnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgdmFyIGhtID0gaG91ciAqIDEwMCArIG1pbnV0ZTtcbiAgICAgICAgICAgIGlmIChobSA8IDYwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2YrbkNix2YnZhSDZg9uQ2obblSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgOTAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYs9uV2r7bldixJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMTMwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfahtuI2LTYqtmJ2YYg2Kjbh9ix24fZhic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTIzMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2obbiNi0JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxODAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfahtuI2LTYqtmJ2YYg2YPbkNmK2YnZhic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2YPbldqGJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KjbiNqv24jZhiDYs9in2KbbldiqXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9im25XYqtuVINiz2KfYptuV2KpdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW9mD25DZhNuV2LHZg9mJXSBkZGRkIFvYs9in2KbbldiqXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9iq24bZhtuI2q/biNmGXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vYptin2YTYr9mJ2YbZgtmJXSBkZGRkIFvYs9in2KbbldiqXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzINmD25DZitmJ2YYnLFxuICAgICAgICAgICAgcGFzdDogJyVzINio24fYsduH2YYnLFxuICAgICAgICAgICAgczogJ9mG25XahtqG25Ug2LPbkNmD2YjZhtiqJyxcbiAgICAgICAgICAgIHNzOiAnJWQg2LPbkNmD2YjZhtiqJyxcbiAgICAgICAgICAgIG06ICfYqNmJ2LEg2YXZidmG24fYqicsXG4gICAgICAgICAgICBtbTogJyVkINmF2YnZhtuH2KonLFxuICAgICAgICAgICAgaDogJ9io2YnYsSDYs9in2KbbldiqJyxcbiAgICAgICAgICAgIGhoOiAnJWQg2LPYp9im25XYqicsXG4gICAgICAgICAgICBkOiAn2KjZidixINmD24jZhicsXG4gICAgICAgICAgICBkZDogJyVkINmD24jZhicsXG4gICAgICAgICAgICBNOiAn2KjZidixINim2KfZiicsXG4gICAgICAgICAgICBNTTogJyVkINim2KfZiicsXG4gICAgICAgICAgICB5OiAn2KjZidixINmK2YnZhCcsXG4gICAgICAgICAgICB5eTogJyVkINmK2YnZhCcsXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KC3Zg9uI2YbZiXwt2KbYp9mKfC3avtuV2b7YqtuVKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3Zg9uI2YbZiSc7XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdq+25XZvtiq25UnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgLy8gR0IvVCA3NDA4LTE5OTTjgIrmlbDmja7lhYPlkozkuqTmjaLmoLzlvI/Ct+S/oeaBr+S6pOaNosK35pel5pyf5ZKM5pe26Ze06KGo56S65rOV44CL5LiOSVNPIDg2MDE6MTk4OOetieaViFxuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMXN0IGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVnQ247XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVWtyYWluaWFuIFt1a11cbi8vISBhdXRob3IgOiB6ZW1sYW5pbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS96ZW1sYW5pblxuLy8hIEF1dGhvciA6IE1lbmVsaW9uIEVsZW5zw7psZSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9PaXJlXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiBwbHVyYWwod29yZCwgbnVtKSB7XG4gICAgICAgIHZhciBmb3JtcyA9IHdvcmQuc3BsaXQoJ18nKTtcbiAgICAgICAgcmV0dXJuIG51bSAlIDEwID09PSAxICYmIG51bSAlIDEwMCAhPT0gMTFcbiAgICAgICAgICAgID8gZm9ybXNbMF1cbiAgICAgICAgICAgIDogbnVtICUgMTAgPj0gMiAmJiBudW0gJSAxMCA8PSA0ICYmIChudW0gJSAxMDAgPCAxMCB8fCBudW0gJSAxMDAgPj0gMjApXG4gICAgICAgICAgICA/IGZvcm1zWzFdXG4gICAgICAgICAgICA6IGZvcm1zWzJdO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICBzczogd2l0aG91dFN1ZmZpeCA/ICfRgdC10LrRg9C90LTQsF/RgdC10LrRg9C90LTQuF/RgdC10LrRg9C90LQnIDogJ9GB0LXQutGD0L3QtNGDX9GB0LXQutGD0L3QtNC4X9GB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBtbTogd2l0aG91dFN1ZmZpeCA/ICfRhdCy0LjQu9C40L3QsF/RhdCy0LjQu9C40L3QuF/RhdCy0LjQu9C40L0nIDogJ9GF0LLQuNC70LjQvdGDX9GF0LLQuNC70LjQvdC4X9GF0LLQuNC70LjQvScsXG4gICAgICAgICAgICBoaDogd2l0aG91dFN1ZmZpeCA/ICfQs9C+0LTQuNC90LBf0LPQvtC00LjQvdC4X9Cz0L7QtNC40L0nIDogJ9Cz0L7QtNC40L3Rg1/Qs9C+0LTQuNC90Lhf0LPQvtC00LjQvScsXG4gICAgICAgICAgICBkZDogJ9C00LXQvdGMX9C00L3Rll/QtNC90ZbQsicsXG4gICAgICAgICAgICBNTTogJ9C80ZbRgdGP0YbRjF/QvNGW0YHRj9GG0ZZf0LzRltGB0Y/RhtGW0LInLFxuICAgICAgICAgICAgeXk6ICfRgNGW0Lpf0YDQvtC60Lhf0YDQvtC60ZbQsicsXG4gICAgICAgIH07XG4gICAgICAgIGlmIChrZXkgPT09ICdtJykge1xuICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAn0YXQstC40LvQuNC90LAnIDogJ9GF0LLQuNC70LjQvdGDJztcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdoJykge1xuICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAn0LPQvtC00LjQvdCwJyA6ICfQs9C+0LTQuNC90YMnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIHBsdXJhbChmb3JtYXRba2V5XSwgK251bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gd2Vla2RheXNDYXNlUmVwbGFjZShtLCBmb3JtYXQpIHtcbiAgICAgICAgdmFyIHdlZWtkYXlzID0ge1xuICAgICAgICAgICAgICAgIG5vbWluYXRpdmU6XG4gICAgICAgICAgICAgICAgICAgICfQvdC10LTRltC70Y9f0L/QvtC90LXQtNGW0LvQvtC6X9Cy0ZbQstGC0L7RgNC+0Lpf0YHQtdGA0LXQtNCwX9GH0LXRgtCy0LXRgF/Qv+KAmdGP0YLQvdC40YbRj1/RgdGD0LHQvtGC0LAnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYWNjdXNhdGl2ZTpcbiAgICAgICAgICAgICAgICAgICAgJ9C90LXQtNGW0LvRjl/Qv9C+0L3QtdC00ZbQu9C+0Lpf0LLRltCy0YLQvtGA0L7Qul/RgdC10YDQtdC00YNf0YfQtdGC0LLQtdGAX9C/4oCZ0Y/RgtC90LjRhtGOX9GB0YPQsdC+0YLRgycuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBnZW5pdGl2ZTpcbiAgICAgICAgICAgICAgICAgICAgJ9C90LXQtNGW0LvRll/Qv9C+0L3QtdC00ZbQu9C60LBf0LLRltCy0YLQvtGA0LrQsF/RgdC10YDQtdC00Lhf0YfQtdGC0LLQtdGA0LPQsF/Qv+KAmdGP0YLQvdC40YbRll/RgdGD0LHQvtGC0LgnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbm91bkNhc2U7XG5cbiAgICAgICAgaWYgKG0gPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5c1snbm9taW5hdGl2ZSddXG4gICAgICAgICAgICAgICAgLnNsaWNlKDEsIDcpXG4gICAgICAgICAgICAgICAgLmNvbmNhdCh3ZWVrZGF5c1snbm9taW5hdGl2ZSddLnNsaWNlKDAsIDEpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5c1snbm9taW5hdGl2ZSddO1xuICAgICAgICB9XG5cbiAgICAgICAgbm91bkNhc2UgPSAvKFxcW1vQktCy0KPRg11cXF0pID9kZGRkLy50ZXN0KGZvcm1hdClcbiAgICAgICAgICAgID8gJ2FjY3VzYXRpdmUnXG4gICAgICAgICAgICA6IC9cXFs/KD860LzQuNC90YPQu9C+0Zd80L3QsNGB0YLRg9C/0L3QvtGXKT8gP1xcXSA/ZGRkZC8udGVzdChmb3JtYXQpXG4gICAgICAgICAgICA/ICdnZW5pdGl2ZSdcbiAgICAgICAgICAgIDogJ25vbWluYXRpdmUnO1xuICAgICAgICByZXR1cm4gd2Vla2RheXNbbm91bkNhc2VdW20uZGF5KCldO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcm9jZXNzSG91cnNGdW5jdGlvbihzdHIpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHIgKyAn0L4nICsgKHRoaXMuaG91cnMoKSA9PT0gMTEgPyAn0LEnIDogJycpICsgJ10gTFQnO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciB1ayA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3VrJywge1xuICAgICAgICBtb250aHM6IHtcbiAgICAgICAgICAgIGZvcm1hdDogJ9GB0ZbRh9C90Y9f0LvRjtGC0L7Qs9C+X9Cx0LXRgNC10LfQvdGPX9C60LLRltGC0L3Rj1/RgtGA0LDQstC90Y9f0YfQtdGA0LLQvdGPX9C70LjQv9C90Y9f0YHQtdGA0L/QvdGPX9Cy0LXRgNC10YHQvdGPX9C20L7QstGC0L3Rj1/Qu9C40YHRgtC+0L/QsNC00LBf0LPRgNGD0LTQvdGPJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICfRgdGW0YfQtdC90Yxf0LvRjtGC0LjQuV/QsdC10YDQtdC30LXQvdGMX9C60LLRltGC0LXQvdGMX9GC0YDQsNCy0LXQvdGMX9GH0LXRgNCy0LXQvdGMX9C70LjQv9C10L3RjF/RgdC10YDQv9C10L3RjF/QstC10YDQtdGB0LXQvdGMX9C20L7QstGC0LXQvdGMX9C70LjRgdGC0L7Qv9Cw0LRf0LPRgNGD0LTQtdC90YwnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydDogJ9GB0ZbRh1/Qu9GO0YJf0LHQtdGAX9C60LLRltGCX9GC0YDQsNCyX9GH0LXRgNCyX9C70LjQv1/RgdC10YDQv1/QstC10YBf0LbQvtCy0YJf0LvQuNGB0YJf0LPRgNGD0LQnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiB3ZWVrZGF5c0Nhc2VSZXBsYWNlLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn0L3QtF/Qv9C9X9Cy0YJf0YHRgF/Rh9GCX9C/0YJf0YHQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfQvdC0X9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZINGALicsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSDRgC4sIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSDRgC4sIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6IHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0KHRjNC+0LPQvtC00L3RliAnKSxcbiAgICAgICAgICAgIG5leHREYXk6IHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0JfQsNCy0YLRgNCwICcpLFxuICAgICAgICAgICAgbGFzdERheTogcHJvY2Vzc0hvdXJzRnVuY3Rpb24oJ1vQktGH0L7RgNCwICcpLFxuICAgICAgICAgICAgbmV4dFdlZWs6IHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0KNdIGRkZGQgWycpLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0JzQuNC90YPQu9C+0ZddIGRkZGQgWycpLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvY2Vzc0hvdXJzRnVuY3Rpb24oJ1vQnNC40L3Rg9C70L7Qs9C+XSBkZGRkIFsnKS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9C30LAgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzINGC0L7QvNGDJyxcbiAgICAgICAgICAgIHM6ICfQtNC10LrRltC70YzQutCwINGB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBzczogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIG06IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBtbTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGg6ICfQs9C+0LTQuNC90YMnLFxuICAgICAgICAgICAgaGg6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBkOiAn0LTQtdC90YwnLFxuICAgICAgICAgICAgZGQ6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBNOiAn0LzRltGB0Y/RhtGMJyxcbiAgICAgICAgICAgIE1NOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgeTogJ9GA0ZbQuicsXG4gICAgICAgICAgICB5eTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gTS4gRS46IHRob3NlIHR3byBhcmUgdmlydHVhbGx5IHVudXNlZCBidXQgYSB1c2VyIG1pZ2h0IHdhbnQgdG8gaW1wbGVtZW50IHRoZW0gZm9yIGhpcy9oZXIgd2Vic2l0ZSBmb3Igc29tZSByZWFzb25cbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9C90L7Rh9GWfNGA0LDQvdC60YN80LTQvdGPfNCy0LXRh9C+0YDQsC8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9eKNC00L3Rj3zQstC10YfQvtGA0LApJC8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9C90L7Rh9GWJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfRgNCw0L3QutGDJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQtNC90Y8nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Cy0LXRh9C+0YDQsCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS0o0Ll80LPQvikvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LknO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3Qs9C+JztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdWs7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVXJkdSBbdXJdXG4vLyEgYXV0aG9yIDogU2F3b29kIEFsYW0gOiBodHRwczovL2dpdGh1Yi5jb20vaWJuZXNheWVlZFxuLy8hIGF1dGhvciA6IFphY2sgOiBodHRwczovL2dpdGh1Yi5jb20vWmFja1Zpc2lvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRocyA9IFtcbiAgICAgICAgICAgICfYrNmG2YjYsduMJyxcbiAgICAgICAgICAgICfZgdix2YjYsduMJyxcbiAgICAgICAgICAgICfZhdin2LHahicsXG4gICAgICAgICAgICAn2KfZvtix24zZhCcsXG4gICAgICAgICAgICAn2YXYptuMJyxcbiAgICAgICAgICAgICfYrNmI2YYnLFxuICAgICAgICAgICAgJ9is2YjZhNin2KbbjCcsXG4gICAgICAgICAgICAn2Kfar9iz2KonLFxuICAgICAgICAgICAgJ9iz2KrZhdio2LEnLFxuICAgICAgICAgICAgJ9in2qnYqtmI2KjYsScsXG4gICAgICAgICAgICAn2YbZiNmF2KjYsScsXG4gICAgICAgICAgICAn2K/Ys9mF2KjYsScsXG4gICAgICAgIF0sXG4gICAgICAgIGRheXMgPSBbJ9in2KrZiNin2LEnLCAn2b7bjNixJywgJ9mF2Ybar9mEJywgJ9io2K/avicsICfYrNmF2LnYsdin2KonLCAn2KzZhdi524EnLCAn24HZgdiq24EnXTtcblxuICAgIHZhciB1ciA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3VyJywge1xuICAgICAgICBtb250aHM6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IG1vbnRocyxcbiAgICAgICAgd2Vla2RheXM6IGRheXMsXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6IGRheXMsXG4gICAgICAgIHdlZWtkYXlzTWluOiBkYXlzLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRk2IwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv2LXYqNitfNi02KfZhS8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICfYtNin2YUnID09PSBpbnB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9i12KjYrSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJ9i02KfZhSc7XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9ii2Kwg2KjZiNmC2KpdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2qnZhCDYqNmI2YLYql0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYqNmI2YLYql0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1var9iw2LTYqtuBINix2YjYsiDYqNmI2YLYql0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb2q/YsNi02KrbgV0gZGRkZCBb2KjZiNmC2KpdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg2KjYudivJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDZgtio2YQnLFxuICAgICAgICAgICAgczogJ9qG2YbYryDYs9uM2qnZhtqIJyxcbiAgICAgICAgICAgIHNzOiAnJWQg2LPbjNqp2YbaiCcsXG4gICAgICAgICAgICBtOiAn2KfbjNqpINmF2YbZuScsXG4gICAgICAgICAgICBtbTogJyVkINmF2YbZuScsXG4gICAgICAgICAgICBoOiAn2KfbjNqpINqv2r7Zhtm524EnLFxuICAgICAgICAgICAgaGg6ICclZCDar9q+2YbZuduSJyxcbiAgICAgICAgICAgIGQ6ICfYp9uM2qkg2K/ZhicsXG4gICAgICAgICAgICBkZDogJyVkINiv2YYnLFxuICAgICAgICAgICAgTTogJ9in24zaqSDZhdin24EnLFxuICAgICAgICAgICAgTU06ICclZCDZhdin24EnLFxuICAgICAgICAgICAgeTogJ9in24zaqSDYs9in2YQnLFxuICAgICAgICAgICAgeXk6ICclZCDYs9in2YQnLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB1cjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBVemJlayBMYXRpbiBbdXotbGF0bl1cbi8vISBhdXRob3IgOiBSYXN1bGJlayBNaXJ6YXlldiA6IGdpdGh1Yi5jb20vUmFzdWxiZWVla1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHV6TGF0biA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3V6LWxhdG4nLCB7XG4gICAgICAgIG1vbnRoczogJ1lhbnZhcl9GZXZyYWxfTWFydF9BcHJlbF9NYXlfSXl1bl9JeXVsX0F2Z3VzdF9TZW50YWJyX09rdGFicl9Ob3lhYnJfRGVrYWJyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ1lhbl9GZXZfTWFyX0Fwcl9NYXlfSXl1bl9JeXVsX0F2Z19TZW5fT2t0X05veV9EZWsnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ1lha3NoYW5iYV9EdXNoYW5iYV9TZXNoYW5iYV9DaG9yc2hhbmJhX1BheXNoYW5iYV9KdW1hX1NoYW5iYScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnWWFrX0R1c2hfU2VzaF9DaG9yX1BheV9KdW1fU2hhbicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdZYV9EdV9TZV9DaG9fUGFfSnVfU2hhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdEIE1NTU0gWVlZWSwgZGRkZCBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0J1Z3VuIHNvYXRdIExUIFtkYV0nLFxuICAgICAgICAgICAgbmV4dERheTogJ1tFcnRhZ2FdIExUIFtkYV0nLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtrdW5pIHNvYXRdIExUIFtkYV0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1tLZWNoYSBzb2F0XSBMVCBbZGFdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBcIltPJ3RnYW5dIGRkZGQgW2t1bmkgc29hdF0gTFQgW2RhXVwiLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdZYXFpbiAlcyBpY2hpZGEnLFxuICAgICAgICAgICAgcGFzdDogJ0JpciBuZWNoYSAlcyBvbGRpbicsXG4gICAgICAgICAgICBzOiAnc29uaXlhJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc29uaXlhJyxcbiAgICAgICAgICAgIG06ICdiaXIgZGFxaXFhJyxcbiAgICAgICAgICAgIG1tOiAnJWQgZGFxaXFhJyxcbiAgICAgICAgICAgIGg6ICdiaXIgc29hdCcsXG4gICAgICAgICAgICBoaDogJyVkIHNvYXQnLFxuICAgICAgICAgICAgZDogJ2JpciBrdW4nLFxuICAgICAgICAgICAgZGQ6ICclZCBrdW4nLFxuICAgICAgICAgICAgTTogJ2JpciBveScsXG4gICAgICAgICAgICBNTTogJyVkIG95JyxcbiAgICAgICAgICAgIHk6ICdiaXIgeWlsJyxcbiAgICAgICAgICAgIHl5OiAnJWQgeWlsJyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHV6TGF0bjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBVemJlayBbdXpdXG4vLyEgYXV0aG9yIDogU2FyZG9yIE11bWlub3YgOiBodHRwczovL2dpdGh1Yi5jb20vbXVtaW5vZmZcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB1eiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3V6Jywge1xuICAgICAgICBtb250aHM6ICfRj9C90LLQsNGAX9GE0LXQstGA0LDQu1/QvNCw0YDRgl/QsNC/0YDQtdC7X9C80LDQuV/QuNGO0L1f0LjRjtC7X9Cw0LLQs9GD0YHRgl/RgdC10L3RgtGP0LHRgF/QvtC60YLRj9Cx0YBf0L3QvtGP0LHRgF/QtNC10LrQsNCx0YAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn0Y/QvdCyX9GE0LXQsl/QvNCw0YBf0LDQv9GAX9C80LDQuV/QuNGO0L1f0LjRjtC7X9Cw0LLQs1/RgdC10L1f0L7QutGCX9C90L7Rj1/QtNC10LonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAn0K/QutGI0LDQvdCx0LBf0JTRg9GI0LDQvdCx0LBf0KHQtdGI0LDQvdCx0LBf0KfQvtGA0YjQsNC90LHQsF/Qn9Cw0LnRiNCw0L3QsdCwX9CW0YPQvNCwX9Co0LDQvdCx0LAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfQr9C60Yhf0JTRg9GIX9Ch0LXRiF/Qp9C+0YBf0J/QsNC5X9CW0YPQvF/QqNCw0L0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn0K/Qul/QlNGDX9Ch0LVf0KfQvl/Qn9CwX9CW0YNf0KjQsCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnRCBNTU1NIFlZWVksIGRkZGQgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQkdGD0LPRg9C9INGB0L7QsNGCXSBMVCBb0LTQsF0nLFxuICAgICAgICAgICAgbmV4dERheTogJ1vQrdGA0YLQsNCz0LBdIExUIFvQtNCwXScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9C60YPQvdC4INGB0L7QsNGCXSBMVCBb0LTQsF0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1vQmtC10YfQsCDRgdC+0LDRgl0gTFQgW9C00LBdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW9Cj0YLQs9Cw0L1dIGRkZGQgW9C60YPQvdC4INGB0L7QsNGCXSBMVCBb0LTQsF0nLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfQr9C60LjQvSAlcyDQuNGH0LjQtNCwJyxcbiAgICAgICAgICAgIHBhc3Q6ICfQkdC40YAg0L3QtdGH0LAgJXMg0L7Qu9C00LjQvScsXG4gICAgICAgICAgICBzOiAn0YTRg9GA0YHQsNGCJyxcbiAgICAgICAgICAgIHNzOiAnJWQg0YTRg9GA0YHQsNGCJyxcbiAgICAgICAgICAgIG06ICfQsdC40YAg0LTQsNC60LjQutCwJyxcbiAgICAgICAgICAgIG1tOiAnJWQg0LTQsNC60LjQutCwJyxcbiAgICAgICAgICAgIGg6ICfQsdC40YAg0YHQvtCw0YInLFxuICAgICAgICAgICAgaGg6ICclZCDRgdC+0LDRgicsXG4gICAgICAgICAgICBkOiAn0LHQuNGAINC60YPQvScsXG4gICAgICAgICAgICBkZDogJyVkINC60YPQvScsXG4gICAgICAgICAgICBNOiAn0LHQuNGAINC+0LknLFxuICAgICAgICAgICAgTU06ICclZCDQvtC5JyxcbiAgICAgICAgICAgIHk6ICfQsdC40YAg0LnQuNC7JyxcbiAgICAgICAgICAgIHl5OiAnJWQg0LnQuNC7JyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHV6O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFZpZXRuYW1lc2UgW3ZpXVxuLy8hIGF1dGhvciA6IEJhbmcgTmd1eWVuIDogaHR0cHM6Ly9naXRodWIuY29tL2Jhbmdua1xuLy8hIGF1dGhvciA6IENoaWVuIEtpcmEgOiBodHRwczovL2dpdGh1Yi5jb20vY2hpZW5raXJhXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdmkgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd2aScsIHtcbiAgICAgICAgbW9udGhzOiAndGjDoW5nIDFfdGjDoW5nIDJfdGjDoW5nIDNfdGjDoW5nIDRfdGjDoW5nIDVfdGjDoW5nIDZfdGjDoW5nIDdfdGjDoW5nIDhfdGjDoW5nIDlfdGjDoW5nIDEwX3Row6FuZyAxMV90aMOhbmcgMTInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ1RoZyAwMV9UaGcgMDJfVGhnIDAzX1RoZyAwNF9UaGcgMDVfVGhnIDA2X1RoZyAwN19UaGcgMDhfVGhnIDA5X1RoZyAxMF9UaGcgMTFfVGhnIDEyJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnY2jhu6cgbmjhuq10X3Ro4bupIGhhaV90aOG7qSBiYV90aOG7qSB0xrBfdGjhu6kgbsSDbV90aOG7qSBzw6F1X3Ro4bupIGLhuqN5Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnQ05fVDJfVDNfVDRfVDVfVDZfVDcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnQ05fVDJfVDNfVDRfVDVfVDZfVDcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL3NhfGNoL2ksXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9eY2gkL2kudGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnc2EnIDogJ1NBJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnY2gnIDogJ0NIJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gW27Eg21dIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFtuxINtXSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gW27Eg21dIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgbDogJ0REL00vWVlZWScsXG4gICAgICAgICAgICBsbDogJ0QgTU1NIFlZWVknLFxuICAgICAgICAgICAgbGxsOiAnRCBNTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBsbGxsOiAnZGRkLCBEIE1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSMO0bSBuYXkgbMO6Y10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tOZ8OgeSBtYWkgbMO6Y10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFt0deG6p24gdOG7m2kgbMO6Y10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tIw7RtIHF1YSBsw7pjXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW3R14bqnbiB0csaw4bubYyBsw7pjXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIHThu5tpJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyB0csaw4bubYycsXG4gICAgICAgICAgICBzOiAndsOgaSBnacOieScsXG4gICAgICAgICAgICBzczogJyVkIGdpw6J5JyxcbiAgICAgICAgICAgIG06ICdt4buZdCBwaMO6dCcsXG4gICAgICAgICAgICBtbTogJyVkIHBow7p0JyxcbiAgICAgICAgICAgIGg6ICdt4buZdCBnaeG7nScsXG4gICAgICAgICAgICBoaDogJyVkIGdp4budJyxcbiAgICAgICAgICAgIGQ6ICdt4buZdCBuZ8OgeScsXG4gICAgICAgICAgICBkZDogJyVkIG5nw6B5JyxcbiAgICAgICAgICAgIHc6ICdt4buZdCB0deG6p24nLFxuICAgICAgICAgICAgd3c6ICclZCB0deG6p24nLFxuICAgICAgICAgICAgTTogJ23hu5l0IHRow6FuZycsXG4gICAgICAgICAgICBNTTogJyVkIHRow6FuZycsXG4gICAgICAgICAgICB5OiAnbeG7mXQgbsSDbScsXG4gICAgICAgICAgICB5eTogJyVkIG7Eg20nLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0vLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmk7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogUHNldWRvIFt4LXBzZXVkb11cbi8vISBhdXRob3IgOiBBbmRyZXcgSG9vZCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmRyZXdob29kMTI1XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgeFBzZXVkbyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3gtcHNldWRvJywge1xuICAgICAgICBtb250aHM6ICdKfsOhw7HDusOhfnLDvV9GfsOpYnLDun7DoXLDvV9+TcOhcmN+aF/DgXB+csOtbF9+TcOhw71ffkrDusOxw6l+X0rDumx+w71fw4HDun5nw7pzdH5fU8OpcH50w6ltYn7DqXJfw5N+Y3TDs2J+w6lyX8ORfsOzdsOpbX5iw6lyX35Ew6ljw6l+bWLDqXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ0p+w6HDsV9+RsOpYl9+TcOhcl9+w4Fwcl9+TcOhw71ffkrDusOxX35Kw7psX37DgcO6Z19+U8OpcF9+w5NjdF9+w5HDs3ZffkTDqWMnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnU37DusOxZMOhfsO9X03Ds37DsWTDocO9fl9Uw7rDqX5zZMOhw71+X1fDqWR+w7HDqXNkfsOhw71fVH5ow7pyc35kw6HDvV9+RnLDrWR+w6HDvV9TfsOhdMO6cn5kw6HDvScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU37DusOxX35Nw7PDsV9+VMO6w6lfflfDqWRfflRow7pffkZyw61fflPDoXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU37Dul9Nw7N+X1TDul9+V8OpX1R+aF9Gcn5fU8OhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbVH7Ds2TDoX7DvSDDoXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbVH7Ds23Ds35ycsOzfncgw6F0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW8OhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vDnX7DqXN0fsOpcmTDoX7DvSDDoXRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW0x+w6FzdF0gZGRkZCBbw6F0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ8OtfsOxICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDDoX5nw7MnLFxuICAgICAgICAgICAgczogJ8OhIH5mw6l3IH5zw6ljw7N+w7FkcycsXG4gICAgICAgICAgICBzczogJyVkIHN+w6ljw7PDsX5kcycsXG4gICAgICAgICAgICBtOiAnw6Egfm3DrcOxfsO6dMOpJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbX7DrcOxw7p+dMOpcycsXG4gICAgICAgICAgICBoOiAnw6F+w7EgaMOzfsO6cicsXG4gICAgICAgICAgICBoaDogJyVkIGh+w7PDunJzJyxcbiAgICAgICAgICAgIGQ6ICfDoSB+ZMOhw70nLFxuICAgICAgICAgICAgZGQ6ICclZCBkfsOhw71zJyxcbiAgICAgICAgICAgIE06ICfDoSB+bcOzw7F+dGgnLFxuICAgICAgICAgICAgTU06ICclZCBtfsOzw7F0fmhzJyxcbiAgICAgICAgICAgIHk6ICfDoSB+w73DqcOhcicsXG4gICAgICAgICAgICB5eTogJyVkIMO9fsOpw6FycycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSh0aHxzdHxuZHxyZCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9XG4gICAgICAgICAgICAgICAgICAgIH5+KChudW1iZXIgJSAxMDApIC8gMTApID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICd0aCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnc3QnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ25kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAzXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdyZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB4UHNldWRvO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFlvcnViYSBOaWdlcmlhIFt5b11cbi8vISBhdXRob3IgOiBBdG9sYWdiZSBBYmlzb3llIDogaHR0cHM6Ly9naXRodWIuY29tL2FuZGVsYS1iYXRvbGFnYmVcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB5byA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3lvJywge1xuICAgICAgICBtb250aHM6ICdT4bq5zIFy4bq5zIFfRcyAcmXMgGxlzIBf4bq4cuG6ucyAbmHMgF9JzIBnYmXMgV9FzIBiaWJpX0/MgGt1zIBkdV9BZ+G6uW1vX0/MgGd1zIFuX093ZXdlX+G7jMyAd2HMgHJhzIBfQmXMgWx1zIFf4buMzIBw4bq5zIDMgCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdT4bq5zIFyX0XMgHJsX+G6uHJuX0nMgGdiX0XMgGJpX0/MgGt1zIBfQWfhurlfT8yAZ3XMgV9Pd2Vf4buMzIB3YcyAX0JlzIFsX+G7jMyAcOG6ucyAzIAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnQcyAacyAa3XMgV9BamXMgV9JzIBz4bq5zIFndW5f4buMauG7jcyBcnXMgV/hu4xq4buNzIFi4buNX+G6uHRpzIBfQcyAYmHMgW3hurnMgXRhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnQcyAacyAa19BamXMgV9JzIBz4bq5zIFf4buManJf4buMamJf4bq4dGnMgF9BzIBiYcyBJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ0HMgGnMgF9Bal9JzIBzX+G7jHJf4buMYl/hurh0X0HMgGInLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ2g6bW0gQScsXG4gICAgICAgICAgICBMVFM6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0/MgG5pzIAgbmldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4buMzIBsYSBuaV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IFwiZGRkZCBb4buMc+G6ucyAIHRvzIFuJ2Lhu41dIFtuaV0gTFRcIixcbiAgICAgICAgICAgIGxhc3REYXk6ICdbQcyAbmEgbmldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb4buMc+G6ucyAIHRvzIFs4buNzIFdIFtuaV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICduacyBICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBr4buNamHMgScsXG4gICAgICAgICAgICBzOiAnacyAc+G6uWp1zIEgYWF5YcyBIGRpZScsXG4gICAgICAgICAgICBzczogJ2FheWHMgSAlZCcsXG4gICAgICAgICAgICBtOiAnacyAc+G6uWp1zIEga2FuJyxcbiAgICAgICAgICAgIG1tOiAnacyAc+G6uWp1zIEgJWQnLFxuICAgICAgICAgICAgaDogJ3dhzIFrYXRpIGthbicsXG4gICAgICAgICAgICBoaDogJ3dhzIFrYXRpICVkJyxcbiAgICAgICAgICAgIGQ6ICfhu41q4buNzIEga2FuJyxcbiAgICAgICAgICAgIGRkOiAn4buNauG7jcyBICVkJyxcbiAgICAgICAgICAgIE06ICdvc3XMgCBrYW4nLFxuICAgICAgICAgICAgTU06ICdvc3XMgCAlZCcsXG4gICAgICAgICAgICB5OiAn4buNZHXMgW4ga2FuJyxcbiAgICAgICAgICAgIHl5OiAn4buNZHXMgW4gJWQnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAv4buNauG7jcyBXFxzXFxkezEsMn0vLFxuICAgICAgICBvcmRpbmFsOiAn4buNauG7jcyBICVkJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHlvO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IENoaW5lc2UgKENoaW5hKSBbemgtY25dXG4vLyEgYXV0aG9yIDogc3V1cGljIDogaHR0cHM6Ly9naXRodWIuY29tL3N1dXBpY1xuLy8hIGF1dGhvciA6IFplbm8gWmVuZyA6IGh0dHBzOi8vZ2l0aHViLmNvbS96ZW5vemVuZ1xuLy8hIGF1dGhvciA6IHV1MTA5IDogaHR0cHM6Ly9naXRodWIuY29tL3V1MTA5XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgemhDbiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3poLWNuJywge1xuICAgICAgICBtb250aHM6ICfkuIDmnIhf5LqM5pyIX+S4ieaciF/lm5vmnIhf5LqU5pyIX+WFreaciF/kuIPmnIhf5YWr5pyIX+S5neaciF/ljYHmnIhf5Y2B5LiA5pyIX+WNgeS6jOaciCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICcx5pyIXzLmnIhfM+aciF805pyIXzXmnIhfNuaciF835pyIXzjmnIhfOeaciF8xMOaciF8xMeaciF8xMuaciCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfmmJ/mnJ/ml6Vf5pif5pyf5LiAX+aYn+acn+S6jF/mmJ/mnJ/kuIlf5pif5pyf5ZubX+aYn+acn+S6lF/mmJ/mnJ/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICflkajml6Vf5ZGo5LiAX+WRqOS6jF/lkajkuIlf5ZGo5ZubX+WRqOS6lF/lkajlha0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn5pelX+S4gF/kuoxf5LiJX+Wbm1/kupRf5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnWVlZWS9NTS9ERCcsXG4gICAgICAgICAgICBMTDogJ1lZWVnlubRN5pyIROaXpScsXG4gICAgICAgICAgICBMTEw6ICdZWVlZ5bm0TeaciETml6VBaOeCuW1t5YiGJyxcbiAgICAgICAgICAgIExMTEw6ICdZWVlZ5bm0TeaciETml6VkZGRkQWjngrltbeWIhicsXG4gICAgICAgICAgICBsOiAnWVlZWS9NL0QnLFxuICAgICAgICAgICAgbGw6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgbGxsOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGw6ICdZWVlZ5bm0TeaciETml6VkZGRkIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+WHjOaZqHzml6nkuIp85LiK5Y2IfOS4reWNiHzkuIvljYh85pma5LiKLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn5YeM5pmoJyB8fCBtZXJpZGllbSA9PT0gJ+aXqeS4iicgfHwgbWVyaWRpZW0gPT09ICfkuIrljYgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn5LiL5Y2IJyB8fCBtZXJpZGllbSA9PT0gJ+aZmuS4iicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyAn5Lit5Y2IJ1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIHZhciBobSA9IGhvdXIgKiAxMDAgKyBtaW51dGU7XG4gICAgICAgICAgICBpZiAoaG0gPCA2MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+WHjOaZqCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgOTAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfml6nkuIonO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDExMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4iuWNiCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTIzMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5Lit5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxODAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIvljYgnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+aZmuS4iic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+S7iuWkqV1MVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+aYjuWkqV1MVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKG5vdykge1xuICAgICAgICAgICAgICAgIGlmIChub3cud2VlaygpICE9PSB0aGlzLndlZWsoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vkuItdZGRkTFQnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnW+acrF1kZGRMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb5pio5aSpXUxUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAobm93KSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMud2VlaygpICE9PSBub3cud2VlaygpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnW+S4il1kZGRMVCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb5pysXWRkZExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KOaXpXzmnIh85ZGoKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+aXpSc7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pyIJztcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICflkagnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXPlkI4nLFxuICAgICAgICAgICAgcGFzdDogJyVz5YmNJyxcbiAgICAgICAgICAgIHM6ICflh6Dnp5InLFxuICAgICAgICAgICAgc3M6ICclZCDnp5InLFxuICAgICAgICAgICAgbTogJzEg5YiG6ZKfJyxcbiAgICAgICAgICAgIG1tOiAnJWQg5YiG6ZKfJyxcbiAgICAgICAgICAgIGg6ICcxIOWwj+aXticsXG4gICAgICAgICAgICBoaDogJyVkIOWwj+aXticsXG4gICAgICAgICAgICBkOiAnMSDlpKknLFxuICAgICAgICAgICAgZGQ6ICclZCDlpKknLFxuICAgICAgICAgICAgdzogJzEg5ZGoJyxcbiAgICAgICAgICAgIHd3OiAnJWQg5ZGoJyxcbiAgICAgICAgICAgIE06ICcxIOS4quaciCcsXG4gICAgICAgICAgICBNTTogJyVkIOS4quaciCcsXG4gICAgICAgICAgICB5OiAnMSDlubQnLFxuICAgICAgICAgICAgeXk6ICclZCDlubQnLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICAvLyBHQi9UIDc0MDgtMTk5NOOAiuaVsOaNruWFg+WSjOS6pOaNouagvOW8j8K35L+h5oGv5Lqk5o2iwrfml6XmnJ/lkozml7bpl7TooajnpLrms5XjgIvkuI5JU08gODYwMToxOTg4562J5pWIXG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gemhDbjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBDaGluZXNlIChIb25nIEtvbmcpIFt6aC1oa11cbi8vISBhdXRob3IgOiBCZW4gOiBodHRwczovL2dpdGh1Yi5jb20vYmVuLWxpblxuLy8hIGF1dGhvciA6IENocmlzIExhbSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9oZWhhY2hyaXNcbi8vISBhdXRob3IgOiBLb25zdGFudGluIDogaHR0cHM6Ly9naXRodWIuY29tL3NrZmRcbi8vISBhdXRob3IgOiBBbnRob255IDogaHR0cHM6Ly9naXRodWIuY29tL2FudGhvbnlsYXVcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB6aEhrID0gbW9tZW50LmRlZmluZUxvY2FsZSgnemgtaGsnLCB7XG4gICAgICAgIG1vbnRoczogJ+S4gOaciF/kuozmnIhf5LiJ5pyIX+Wbm+aciF/kupTmnIhf5YWt5pyIX+S4g+aciF/lhavmnIhf5Lmd5pyIX+WNgeaciF/ljYHkuIDmnIhf5Y2B5LqM5pyIJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJzHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ+aYn+acn+aXpV/mmJ/mnJ/kuIBf5pif5pyf5LqMX+aYn+acn+S4iV/mmJ/mnJ/lm5tf5pif5pyf5LqUX+aYn+acn+WFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+mAseaXpV/pgLHkuIBf6YCx5LqMX+mAseS4iV/pgLHlm5tf6YCx5LqUX+mAseWFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfml6Vf5LiAX+S6jF/kuIlf5ZubX+S6lF/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdZWVlZL01NL0REJyxcbiAgICAgICAgICAgIExMOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnWVlZWeW5tE3mnIhE5pelZGRkZCBISDptbScsXG4gICAgICAgICAgICBsOiAnWVlZWS9NL0QnLFxuICAgICAgICAgICAgbGw6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgbGxsOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGw6ICdZWVlZ5bm0TeaciETml6VkZGRkIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+WHjOaZqHzml6nkuIp85LiK5Y2IfOS4reWNiHzkuIvljYh85pma5LiKLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn5YeM5pmoJyB8fCBtZXJpZGllbSA9PT0gJ+aXqeS4iicgfHwgbWVyaWRpZW0gPT09ICfkuIrljYgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn5Lit5Y2IJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfkuIvljYgnIHx8IG1lcmlkaWVtID09PSAn5pma5LiKJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBob3VyICogMTAwICsgbWludXRlO1xuICAgICAgICAgICAgaWYgKGhtIDwgNjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICflh4zmmagnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDkwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5pep5LiKJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIrljYgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA9PT0gMTIwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5Lit5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxODAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIvljYgnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+aZmuS4iic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+S7iuWkqV1MVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+aYjuWkqV1MVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vkuItdZGRkZExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb5pio5aSpXUxUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+S4il1kZGRkTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KOaXpXzmnIh86YCxKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+aXpSc7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pyIJztcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfpgLEnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXPlvownLFxuICAgICAgICAgICAgcGFzdDogJyVz5YmNJyxcbiAgICAgICAgICAgIHM6ICflub7np5InLFxuICAgICAgICAgICAgc3M6ICclZCDnp5InLFxuICAgICAgICAgICAgbTogJzEg5YiG6ZCYJyxcbiAgICAgICAgICAgIG1tOiAnJWQg5YiG6ZCYJyxcbiAgICAgICAgICAgIGg6ICcxIOWwj+aZgicsXG4gICAgICAgICAgICBoaDogJyVkIOWwj+aZgicsXG4gICAgICAgICAgICBkOiAnMSDlpKknLFxuICAgICAgICAgICAgZGQ6ICclZCDlpKknLFxuICAgICAgICAgICAgTTogJzEg5YCL5pyIJyxcbiAgICAgICAgICAgIE1NOiAnJWQg5YCL5pyIJyxcbiAgICAgICAgICAgIHk6ICcxIOW5tCcsXG4gICAgICAgICAgICB5eTogJyVkIOW5tCcsXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gemhIaztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBDaGluZXNlIChNYWNhdSkgW3poLW1vXVxuLy8hIGF1dGhvciA6IEJlbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9iZW4tbGluXG4vLyEgYXV0aG9yIDogQ2hyaXMgTGFtIDogaHR0cHM6Ly9naXRodWIuY29tL2hlaGFjaHJpc1xuLy8hIGF1dGhvciA6IFRhbiBZdWFuaG9uZyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9sZTB0YW5cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB6aE1vID0gbW9tZW50LmRlZmluZUxvY2FsZSgnemgtbW8nLCB7XG4gICAgICAgIG1vbnRoczogJ+S4gOaciF/kuozmnIhf5LiJ5pyIX+Wbm+aciF/kupTmnIhf5YWt5pyIX+S4g+aciF/lhavmnIhf5Lmd5pyIX+WNgeaciF/ljYHkuIDmnIhf5Y2B5LqM5pyIJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJzHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ+aYn+acn+aXpV/mmJ/mnJ/kuIBf5pif5pyf5LqMX+aYn+acn+S4iV/mmJ/mnJ/lm5tf5pif5pyf5LqUX+aYn+acn+WFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+mAseaXpV/pgLHkuIBf6YCx5LqMX+mAseS4iV/pgLHlm5tf6YCx5LqUX+mAseWFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfml6Vf5LiAX+S6jF/kuIlf5ZubX+S6lF/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnWVlZWeW5tE3mnIhE5pelZGRkZCBISDptbScsXG4gICAgICAgICAgICBsOiAnRC9NL1lZWVknLFxuICAgICAgICAgICAgbGw6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgbGxsOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGw6ICdZWVlZ5bm0TeaciETml6VkZGRkIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+WHjOaZqHzml6nkuIp85LiK5Y2IfOS4reWNiHzkuIvljYh85pma5LiKLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn5YeM5pmoJyB8fCBtZXJpZGllbSA9PT0gJ+aXqeS4iicgfHwgbWVyaWRpZW0gPT09ICfkuIrljYgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn5Lit5Y2IJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfkuIvljYgnIHx8IG1lcmlkaWVtID09PSAn5pma5LiKJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBob3VyICogMTAwICsgbWludXRlO1xuICAgICAgICAgICAgaWYgKGhtIDwgNjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICflh4zmmagnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDkwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5pep5LiKJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMTMwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIrljYgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDEyMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4reWNiCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTgwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5LiL5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfmmZrkuIonO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vku4rlpKldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb5piO5aSpXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vkuItdZGRkZCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+aYqOWkqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb5LiKXWRkZGQgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KOaXpXzmnIh86YCxKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+aXpSc7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pyIJztcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfpgLEnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXPlhacnLFxuICAgICAgICAgICAgcGFzdDogJyVz5YmNJyxcbiAgICAgICAgICAgIHM6ICflub7np5InLFxuICAgICAgICAgICAgc3M6ICclZCDnp5InLFxuICAgICAgICAgICAgbTogJzEg5YiG6ZCYJyxcbiAgICAgICAgICAgIG1tOiAnJWQg5YiG6ZCYJyxcbiAgICAgICAgICAgIGg6ICcxIOWwj+aZgicsXG4gICAgICAgICAgICBoaDogJyVkIOWwj+aZgicsXG4gICAgICAgICAgICBkOiAnMSDlpKknLFxuICAgICAgICAgICAgZGQ6ICclZCDlpKknLFxuICAgICAgICAgICAgTTogJzEg5YCL5pyIJyxcbiAgICAgICAgICAgIE1NOiAnJWQg5YCL5pyIJyxcbiAgICAgICAgICAgIHk6ICcxIOW5tCcsXG4gICAgICAgICAgICB5eTogJyVkIOW5tCcsXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gemhNbztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBDaGluZXNlIChUYWl3YW4pIFt6aC10d11cbi8vISBhdXRob3IgOiBCZW4gOiBodHRwczovL2dpdGh1Yi5jb20vYmVuLWxpblxuLy8hIGF1dGhvciA6IENocmlzIExhbSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9oZWhhY2hyaXNcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB6aFR3ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnemgtdHcnLCB7XG4gICAgICAgIG1vbnRoczogJ+S4gOaciF/kuozmnIhf5LiJ5pyIX+Wbm+aciF/kupTmnIhf5YWt5pyIX+S4g+aciF/lhavmnIhf5Lmd5pyIX+WNgeaciF/ljYHkuIDmnIhf5Y2B5LqM5pyIJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJzHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ+aYn+acn+aXpV/mmJ/mnJ/kuIBf5pif5pyf5LqMX+aYn+acn+S4iV/mmJ/mnJ/lm5tf5pif5pyf5LqUX+aYn+acn+WFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+mAseaXpV/pgLHkuIBf6YCx5LqMX+mAseS4iV/pgLHlm5tf6YCx5LqUX+mAseWFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfml6Vf5LiAX+S6jF/kuIlf5ZubX+S6lF/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdZWVlZL01NL0REJyxcbiAgICAgICAgICAgIExMOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnWVlZWeW5tE3mnIhE5pelZGRkZCBISDptbScsXG4gICAgICAgICAgICBsOiAnWVlZWS9NL0QnLFxuICAgICAgICAgICAgbGw6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgbGxsOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGw6ICdZWVlZ5bm0TeaciETml6VkZGRkIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+WHjOaZqHzml6nkuIp85LiK5Y2IfOS4reWNiHzkuIvljYh85pma5LiKLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn5YeM5pmoJyB8fCBtZXJpZGllbSA9PT0gJ+aXqeS4iicgfHwgbWVyaWRpZW0gPT09ICfkuIrljYgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn5Lit5Y2IJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfkuIvljYgnIHx8IG1lcmlkaWVtID09PSAn5pma5LiKJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBob3VyICogMTAwICsgbWludXRlO1xuICAgICAgICAgICAgaWYgKGhtIDwgNjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICflh4zmmagnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDkwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5pep5LiKJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMTMwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIrljYgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDEyMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4reWNiCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTgwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5LiL5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfmmZrkuIonO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vku4rlpKldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb5piO5aSpXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vkuItdZGRkZCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+aYqOWkqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb5LiKXWRkZGQgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KOaXpXzmnIh86YCxKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+aXpSc7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pyIJztcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfpgLEnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXPlvownLFxuICAgICAgICAgICAgcGFzdDogJyVz5YmNJyxcbiAgICAgICAgICAgIHM6ICflub7np5InLFxuICAgICAgICAgICAgc3M6ICclZCDnp5InLFxuICAgICAgICAgICAgbTogJzEg5YiG6ZCYJyxcbiAgICAgICAgICAgIG1tOiAnJWQg5YiG6ZCYJyxcbiAgICAgICAgICAgIGg6ICcxIOWwj+aZgicsXG4gICAgICAgICAgICBoaDogJyVkIOWwj+aZgicsXG4gICAgICAgICAgICBkOiAnMSDlpKknLFxuICAgICAgICAgICAgZGQ6ICclZCDlpKknLFxuICAgICAgICAgICAgTTogJzEg5YCL5pyIJyxcbiAgICAgICAgICAgIE1NOiAnJWQg5YCL5pyIJyxcbiAgICAgICAgICAgIHk6ICcxIOW5tCcsXG4gICAgICAgICAgICB5eTogJyVkIOW5tCcsXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gemhUdztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanNcbi8vISB2ZXJzaW9uIDogMi4yOS40XG4vLyEgYXV0aG9ycyA6IFRpbSBXb29kLCBJc2tyZW4gQ2hlcm5ldiwgTW9tZW50LmpzIGNvbnRyaWJ1dG9yc1xuLy8hIGxpY2Vuc2UgOiBNSVRcbi8vISBtb21lbnRqcy5jb21cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCkgOlxuICAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShmYWN0b3J5KSA6XG4gICAgZ2xvYmFsLm1vbWVudCA9IGZhY3RvcnkoKVxufSh0aGlzLCAoZnVuY3Rpb24gKCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICB2YXIgaG9va0NhbGxiYWNrO1xuXG4gICAgZnVuY3Rpb24gaG9va3MoKSB7XG4gICAgICAgIHJldHVybiBob29rQ2FsbGJhY2suYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGlzIGRvbmUgdG8gcmVnaXN0ZXIgdGhlIG1ldGhvZCBjYWxsZWQgd2l0aCBtb21lbnQoKVxuICAgIC8vIHdpdGhvdXQgY3JlYXRpbmcgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLlxuICAgIGZ1bmN0aW9uIHNldEhvb2tDYWxsYmFjayhjYWxsYmFjaykge1xuICAgICAgICBob29rQ2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0FycmF5KGlucHV0KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBpbnB1dCBpbnN0YW5jZW9mIEFycmF5IHx8XG4gICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBBcnJheV0nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPYmplY3QoaW5wdXQpIHtcbiAgICAgICAgLy8gSUU4IHdpbGwgdHJlYXQgdW5kZWZpbmVkIGFuZCBudWxsIGFzIG9iamVjdCBpZiBpdCB3YXNuJ3QgZm9yXG4gICAgICAgIC8vIGlucHV0ICE9IG51bGxcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGlucHV0ICE9IG51bGwgJiZcbiAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IE9iamVjdF0nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFzT3duUHJvcChhLCBiKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSwgYik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPYmplY3RFbXB0eShvYmopIHtcbiAgICAgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKSB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKS5sZW5ndGggPT09IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgaztcbiAgICAgICAgICAgIGZvciAoayBpbiBvYmopIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFzT3duUHJvcChvYmosIGspKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVW5kZWZpbmVkKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBpbnB1dCA9PT0gdm9pZCAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzTnVtYmVyKGlucHV0KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInIHx8XG4gICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBOdW1iZXJdJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzRGF0ZShpbnB1dCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgaW5wdXQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBEYXRlXSdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYXAoYXJyLCBmbikge1xuICAgICAgICB2YXIgcmVzID0gW10sXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgYXJyTGVuID0gYXJyLmxlbmd0aDtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGFyckxlbjsgKytpKSB7XG4gICAgICAgICAgICByZXMucHVzaChmbihhcnJbaV0sIGkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4dGVuZChhLCBiKSB7XG4gICAgICAgIGZvciAodmFyIGkgaW4gYikge1xuICAgICAgICAgICAgaWYgKGhhc093blByb3AoYiwgaSkpIHtcbiAgICAgICAgICAgICAgICBhW2ldID0gYltpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNPd25Qcm9wKGIsICd0b1N0cmluZycpKSB7XG4gICAgICAgICAgICBhLnRvU3RyaW5nID0gYi50b1N0cmluZztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNPd25Qcm9wKGIsICd2YWx1ZU9mJykpIHtcbiAgICAgICAgICAgIGEudmFsdWVPZiA9IGIudmFsdWVPZjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZVVUQyhpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWxPclVUQyhpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCwgdHJ1ZSkudXRjKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVmYXVsdFBhcnNpbmdGbGFncygpIHtcbiAgICAgICAgLy8gV2UgbmVlZCB0byBkZWVwIGNsb25lIHRoaXMgb2JqZWN0LlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZW1wdHk6IGZhbHNlLFxuICAgICAgICAgICAgdW51c2VkVG9rZW5zOiBbXSxcbiAgICAgICAgICAgIHVudXNlZElucHV0OiBbXSxcbiAgICAgICAgICAgIG92ZXJmbG93OiAtMixcbiAgICAgICAgICAgIGNoYXJzTGVmdE92ZXI6IDAsXG4gICAgICAgICAgICBudWxsSW5wdXQ6IGZhbHNlLFxuICAgICAgICAgICAgaW52YWxpZEVyYTogbnVsbCxcbiAgICAgICAgICAgIGludmFsaWRNb250aDogbnVsbCxcbiAgICAgICAgICAgIGludmFsaWRGb3JtYXQ6IGZhbHNlLFxuICAgICAgICAgICAgdXNlckludmFsaWRhdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGlzbzogZmFsc2UsXG4gICAgICAgICAgICBwYXJzZWREYXRlUGFydHM6IFtdLFxuICAgICAgICAgICAgZXJhOiBudWxsLFxuICAgICAgICAgICAgbWVyaWRpZW06IG51bGwsXG4gICAgICAgICAgICByZmMyODIyOiBmYWxzZSxcbiAgICAgICAgICAgIHdlZWtkYXlNaXNtYXRjaDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UGFyc2luZ0ZsYWdzKG0pIHtcbiAgICAgICAgaWYgKG0uX3BmID09IG51bGwpIHtcbiAgICAgICAgICAgIG0uX3BmID0gZGVmYXVsdFBhcnNpbmdGbGFncygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtLl9wZjtcbiAgICB9XG5cbiAgICB2YXIgc29tZTtcbiAgICBpZiAoQXJyYXkucHJvdG90eXBlLnNvbWUpIHtcbiAgICAgICAgc29tZSA9IEFycmF5LnByb3RvdHlwZS5zb21lO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNvbWUgPSBmdW5jdGlvbiAoZnVuKSB7XG4gICAgICAgICAgICB2YXIgdCA9IE9iamVjdCh0aGlzKSxcbiAgICAgICAgICAgICAgICBsZW4gPSB0Lmxlbmd0aCA+Pj4gMCxcbiAgICAgICAgICAgICAgICBpO1xuXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaSBpbiB0ICYmIGZ1bi5jYWxsKHRoaXMsIHRbaV0sIGksIHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVmFsaWQobSkge1xuICAgICAgICBpZiAobS5faXNWYWxpZCA9PSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgZmxhZ3MgPSBnZXRQYXJzaW5nRmxhZ3MobSksXG4gICAgICAgICAgICAgICAgcGFyc2VkUGFydHMgPSBzb21lLmNhbGwoZmxhZ3MucGFyc2VkRGF0ZVBhcnRzLCBmdW5jdGlvbiAoaSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSAhPSBudWxsO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGlzTm93VmFsaWQgPVxuICAgICAgICAgICAgICAgICAgICAhaXNOYU4obS5fZC5nZXRUaW1lKCkpICYmXG4gICAgICAgICAgICAgICAgICAgIGZsYWdzLm92ZXJmbG93IDwgMCAmJlxuICAgICAgICAgICAgICAgICAgICAhZmxhZ3MuZW1wdHkgJiZcbiAgICAgICAgICAgICAgICAgICAgIWZsYWdzLmludmFsaWRFcmEgJiZcbiAgICAgICAgICAgICAgICAgICAgIWZsYWdzLmludmFsaWRNb250aCAmJlxuICAgICAgICAgICAgICAgICAgICAhZmxhZ3MuaW52YWxpZFdlZWtkYXkgJiZcbiAgICAgICAgICAgICAgICAgICAgIWZsYWdzLndlZWtkYXlNaXNtYXRjaCAmJlxuICAgICAgICAgICAgICAgICAgICAhZmxhZ3MubnVsbElucHV0ICYmXG4gICAgICAgICAgICAgICAgICAgICFmbGFncy5pbnZhbGlkRm9ybWF0ICYmXG4gICAgICAgICAgICAgICAgICAgICFmbGFncy51c2VySW52YWxpZGF0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgKCFmbGFncy5tZXJpZGllbSB8fCAoZmxhZ3MubWVyaWRpZW0gJiYgcGFyc2VkUGFydHMpKTtcblxuICAgICAgICAgICAgaWYgKG0uX3N0cmljdCkge1xuICAgICAgICAgICAgICAgIGlzTm93VmFsaWQgPVxuICAgICAgICAgICAgICAgICAgICBpc05vd1ZhbGlkICYmXG4gICAgICAgICAgICAgICAgICAgIGZsYWdzLmNoYXJzTGVmdE92ZXIgPT09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3MudW51c2VkVG9rZW5zLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgICAgICAgICBmbGFncy5iaWdIb3VyID09PSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChPYmplY3QuaXNGcm96ZW4gPT0gbnVsbCB8fCAhT2JqZWN0LmlzRnJvemVuKG0pKSB7XG4gICAgICAgICAgICAgICAgbS5faXNWYWxpZCA9IGlzTm93VmFsaWQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc05vd1ZhbGlkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtLl9pc1ZhbGlkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUludmFsaWQoZmxhZ3MpIHtcbiAgICAgICAgdmFyIG0gPSBjcmVhdGVVVEMoTmFOKTtcbiAgICAgICAgaWYgKGZsYWdzICE9IG51bGwpIHtcbiAgICAgICAgICAgIGV4dGVuZChnZXRQYXJzaW5nRmxhZ3MobSksIGZsYWdzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhtKS51c2VySW52YWxpZGF0ZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgLy8gUGx1Z2lucyB0aGF0IGFkZCBwcm9wZXJ0aWVzIHNob3VsZCBhbHNvIGFkZCB0aGUga2V5IGhlcmUgKG51bGwgdmFsdWUpLFxuICAgIC8vIHNvIHdlIGNhbiBwcm9wZXJseSBjbG9uZSBvdXJzZWx2ZXMuXG4gICAgdmFyIG1vbWVudFByb3BlcnRpZXMgPSAoaG9va3MubW9tZW50UHJvcGVydGllcyA9IFtdKSxcbiAgICAgICAgdXBkYXRlSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gICAgZnVuY3Rpb24gY29weUNvbmZpZyh0bywgZnJvbSkge1xuICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgIHByb3AsXG4gICAgICAgICAgICB2YWwsXG4gICAgICAgICAgICBtb21lbnRQcm9wZXJ0aWVzTGVuID0gbW9tZW50UHJvcGVydGllcy5sZW5ndGg7XG5cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9pc0FNb21lbnRPYmplY3QpKSB7XG4gICAgICAgICAgICB0by5faXNBTW9tZW50T2JqZWN0ID0gZnJvbS5faXNBTW9tZW50T2JqZWN0O1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5faSkpIHtcbiAgICAgICAgICAgIHRvLl9pID0gZnJvbS5faTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2YpKSB7XG4gICAgICAgICAgICB0by5fZiA9IGZyb20uX2Y7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9sKSkge1xuICAgICAgICAgICAgdG8uX2wgPSBmcm9tLl9sO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fc3RyaWN0KSkge1xuICAgICAgICAgICAgdG8uX3N0cmljdCA9IGZyb20uX3N0cmljdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX3R6bSkpIHtcbiAgICAgICAgICAgIHRvLl90em0gPSBmcm9tLl90em07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9pc1VUQykpIHtcbiAgICAgICAgICAgIHRvLl9pc1VUQyA9IGZyb20uX2lzVVRDO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fb2Zmc2V0KSkge1xuICAgICAgICAgICAgdG8uX29mZnNldCA9IGZyb20uX29mZnNldDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX3BmKSkge1xuICAgICAgICAgICAgdG8uX3BmID0gZ2V0UGFyc2luZ0ZsYWdzKGZyb20pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fbG9jYWxlKSkge1xuICAgICAgICAgICAgdG8uX2xvY2FsZSA9IGZyb20uX2xvY2FsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb21lbnRQcm9wZXJ0aWVzTGVuID4gMCkge1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1vbWVudFByb3BlcnRpZXNMZW47IGkrKykge1xuICAgICAgICAgICAgICAgIHByb3AgPSBtb21lbnRQcm9wZXJ0aWVzW2ldO1xuICAgICAgICAgICAgICAgIHZhbCA9IGZyb21bcHJvcF07XG4gICAgICAgICAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh2YWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvW3Byb3BdID0gdmFsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0bztcbiAgICB9XG5cbiAgICAvLyBNb21lbnQgcHJvdG90eXBlIG9iamVjdFxuICAgIGZ1bmN0aW9uIE1vbWVudChjb25maWcpIHtcbiAgICAgICAgY29weUNvbmZpZyh0aGlzLCBjb25maWcpO1xuICAgICAgICB0aGlzLl9kID0gbmV3IERhdGUoY29uZmlnLl9kICE9IG51bGwgPyBjb25maWcuX2QuZ2V0VGltZSgpIDogTmFOKTtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhpcy5fZCA9IG5ldyBEYXRlKE5hTik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUHJldmVudCBpbmZpbml0ZSBsb29wIGluIGNhc2UgdXBkYXRlT2Zmc2V0IGNyZWF0ZXMgbmV3IG1vbWVudFxuICAgICAgICAvLyBvYmplY3RzLlxuICAgICAgICBpZiAodXBkYXRlSW5Qcm9ncmVzcyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHVwZGF0ZUluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHRoaXMpO1xuICAgICAgICAgICAgdXBkYXRlSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNNb21lbnQob2JqKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBvYmogaW5zdGFuY2VvZiBNb21lbnQgfHwgKG9iaiAhPSBudWxsICYmIG9iai5faXNBTW9tZW50T2JqZWN0ICE9IG51bGwpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd2Fybihtc2cpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgaG9va3Muc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzID09PSBmYWxzZSAmJlxuICAgICAgICAgICAgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgICBjb25zb2xlLndhcm5cbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ0RlcHJlY2F0aW9uIHdhcm5pbmc6ICcgKyBtc2cpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlKG1zZywgZm4pIHtcbiAgICAgICAgdmFyIGZpcnN0VGltZSA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIGV4dGVuZChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBob29rcy5kZXByZWNhdGlvbkhhbmRsZXIobnVsbCwgbXNnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmaXJzdFRpbWUpIHtcbiAgICAgICAgICAgICAgICB2YXIgYXJncyA9IFtdLFxuICAgICAgICAgICAgICAgICAgICBhcmcsXG4gICAgICAgICAgICAgICAgICAgIGksXG4gICAgICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICAgICAgYXJnTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJnTGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYXJnID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYXJndW1lbnRzW2ldID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJnICs9ICdcXG5bJyArIGkgKyAnXSAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChrZXkgaW4gYXJndW1lbnRzWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc093blByb3AoYXJndW1lbnRzWzBdLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZyArPSBrZXkgKyAnOiAnICsgYXJndW1lbnRzWzBdW2tleV0gKyAnLCAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IGFyZy5zbGljZSgwLCAtMik7IC8vIFJlbW92ZSB0cmFpbGluZyBjb21tYSBhbmQgc3BhY2VcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmdzLnB1c2goYXJnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2FybihcbiAgICAgICAgICAgICAgICAgICAgbXNnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdcXG5Bcmd1bWVudHM6ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJncykuam9pbignJykgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1xcbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEVycm9yKCkuc3RhY2tcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGZpcnN0VGltZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0sIGZuKTtcbiAgICB9XG5cbiAgICB2YXIgZGVwcmVjYXRpb25zID0ge307XG5cbiAgICBmdW5jdGlvbiBkZXByZWNhdGVTaW1wbGUobmFtZSwgbXNnKSB7XG4gICAgICAgIGlmIChob29rcy5kZXByZWNhdGlvbkhhbmRsZXIgIT0gbnVsbCkge1xuICAgICAgICAgICAgaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyKG5hbWUsIG1zZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFkZXByZWNhdGlvbnNbbmFtZV0pIHtcbiAgICAgICAgICAgIHdhcm4obXNnKTtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uc1tuYW1lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBob29rcy5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MgPSBmYWxzZTtcbiAgICBob29rcy5kZXByZWNhdGlvbkhhbmRsZXIgPSBudWxsO1xuXG4gICAgZnVuY3Rpb24gaXNGdW5jdGlvbihpbnB1dCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKHR5cGVvZiBGdW5jdGlvbiAhPT0gJ3VuZGVmaW5lZCcgJiYgaW5wdXQgaW5zdGFuY2VvZiBGdW5jdGlvbikgfHxcbiAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXQoY29uZmlnKSB7XG4gICAgICAgIHZhciBwcm9wLCBpO1xuICAgICAgICBmb3IgKGkgaW4gY29uZmlnKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcChjb25maWcsIGkpKSB7XG4gICAgICAgICAgICAgICAgcHJvcCA9IGNvbmZpZ1tpXTtcbiAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihwcm9wKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzW2ldID0gcHJvcDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzWydfJyArIGldID0gcHJvcDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgICAgICAvLyBMZW5pZW50IG9yZGluYWwgcGFyc2luZyBhY2NlcHRzIGp1c3QgYSBudW1iZXIgaW4gYWRkaXRpb24gdG9cbiAgICAgICAgLy8gbnVtYmVyICsgKHBvc3NpYmx5KSBzdHVmZiBjb21pbmcgZnJvbSBfZGF5T2ZNb250aE9yZGluYWxQYXJzZS5cbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIFwib3JkaW5hbFBhcnNlXCIgZmFsbGJhY2sgaW4gbmV4dCBtYWpvciByZWxlYXNlLlxuICAgICAgICB0aGlzLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlTGVuaWVudCA9IG5ldyBSZWdFeHAoXG4gICAgICAgICAgICAodGhpcy5fZGF5T2ZNb250aE9yZGluYWxQYXJzZS5zb3VyY2UgfHwgdGhpcy5fb3JkaW5hbFBhcnNlLnNvdXJjZSkgK1xuICAgICAgICAgICAgICAgICd8JyArXG4gICAgICAgICAgICAgICAgL1xcZHsxLDJ9Ly5zb3VyY2VcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtZXJnZUNvbmZpZ3MocGFyZW50Q29uZmlnLCBjaGlsZENvbmZpZykge1xuICAgICAgICB2YXIgcmVzID0gZXh0ZW5kKHt9LCBwYXJlbnRDb25maWcpLFxuICAgICAgICAgICAgcHJvcDtcbiAgICAgICAgZm9yIChwcm9wIGluIGNoaWxkQ29uZmlnKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcChjaGlsZENvbmZpZywgcHJvcCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNPYmplY3QocGFyZW50Q29uZmlnW3Byb3BdKSAmJiBpc09iamVjdChjaGlsZENvbmZpZ1twcm9wXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzW3Byb3BdID0ge307XG4gICAgICAgICAgICAgICAgICAgIGV4dGVuZChyZXNbcHJvcF0sIHBhcmVudENvbmZpZ1twcm9wXSk7XG4gICAgICAgICAgICAgICAgICAgIGV4dGVuZChyZXNbcHJvcF0sIGNoaWxkQ29uZmlnW3Byb3BdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkQ29uZmlnW3Byb3BdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzW3Byb3BdID0gY2hpbGRDb25maWdbcHJvcF07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlc1twcm9wXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChwcm9wIGluIHBhcmVudENvbmZpZykge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGhhc093blByb3AocGFyZW50Q29uZmlnLCBwcm9wKSAmJlxuICAgICAgICAgICAgICAgICFoYXNPd25Qcm9wKGNoaWxkQ29uZmlnLCBwcm9wKSAmJlxuICAgICAgICAgICAgICAgIGlzT2JqZWN0KHBhcmVudENvbmZpZ1twcm9wXSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSBjaGFuZ2VzIHRvIHByb3BlcnRpZXMgZG9uJ3QgbW9kaWZ5IHBhcmVudCBjb25maWdcbiAgICAgICAgICAgICAgICByZXNbcHJvcF0gPSBleHRlbmQoe30sIHJlc1twcm9wXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBMb2NhbGUoY29uZmlnKSB7XG4gICAgICAgIGlmIChjb25maWcgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5zZXQoY29uZmlnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBrZXlzO1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKSB7XG4gICAgICAgIGtleXMgPSBPYmplY3Qua2V5cztcbiAgICB9IGVsc2Uge1xuICAgICAgICBrZXlzID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgICAgICAgdmFyIGksXG4gICAgICAgICAgICAgICAgcmVzID0gW107XG4gICAgICAgICAgICBmb3IgKGkgaW4gb2JqKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhhc093blByb3Aob2JqLCBpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXMucHVzaChpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0Q2FsZW5kYXIgPSB7XG4gICAgICAgIHNhbWVEYXk6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgbmV4dERheTogJ1tUb21vcnJvdyBhdF0gTFQnLFxuICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgIGxhc3REYXk6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgIGxhc3RXZWVrOiAnW0xhc3RdIGRkZGQgW2F0XSBMVCcsXG4gICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGNhbGVuZGFyKGtleSwgbW9tLCBub3cpIHtcbiAgICAgICAgdmFyIG91dHB1dCA9IHRoaXMuX2NhbGVuZGFyW2tleV0gfHwgdGhpcy5fY2FsZW5kYXJbJ3NhbWVFbHNlJ107XG4gICAgICAgIHJldHVybiBpc0Z1bmN0aW9uKG91dHB1dCkgPyBvdXRwdXQuY2FsbChtb20sIG5vdykgOiBvdXRwdXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gemVyb0ZpbGwobnVtYmVyLCB0YXJnZXRMZW5ndGgsIGZvcmNlU2lnbikge1xuICAgICAgICB2YXIgYWJzTnVtYmVyID0gJycgKyBNYXRoLmFicyhudW1iZXIpLFxuICAgICAgICAgICAgemVyb3NUb0ZpbGwgPSB0YXJnZXRMZW5ndGggLSBhYnNOdW1iZXIubGVuZ3RoLFxuICAgICAgICAgICAgc2lnbiA9IG51bWJlciA+PSAwO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKHNpZ24gPyAoZm9yY2VTaWduID8gJysnIDogJycpIDogJy0nKSArXG4gICAgICAgICAgICBNYXRoLnBvdygxMCwgTWF0aC5tYXgoMCwgemVyb3NUb0ZpbGwpKS50b1N0cmluZygpLnN1YnN0cigxKSArXG4gICAgICAgICAgICBhYnNOdW1iZXJcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB2YXIgZm9ybWF0dGluZ1Rva2VucyA9XG4gICAgICAgICAgICAvKFxcW1teXFxbXSpcXF0pfChcXFxcKT8oW0hoXW1tKHNzKT98TW98TU0/TT9NP3xEb3xERERvfEREP0Q/RD98ZGRkP2Q/fGRvP3x3W298d10/fFdbb3xXXT98UW8/fE57MSw1fXxZWVlZWVl8WVlZWVl8WVlZWXxZWXx5ezIsNH18eW8/fGdnKGdnZz8pP3xHRyhHR0c/KT98ZXxFfGF8QXxoaD98SEg/fGtrP3xtbT98c3M/fFN7MSw5fXx4fFh8eno/fFpaP3wuKS9nLFxuICAgICAgICBsb2NhbEZvcm1hdHRpbmdUb2tlbnMgPSAvKFxcW1teXFxbXSpcXF0pfChcXFxcKT8oTFRTfExUfExMP0w/TD98bHsxLDR9KS9nLFxuICAgICAgICBmb3JtYXRGdW5jdGlvbnMgPSB7fSxcbiAgICAgICAgZm9ybWF0VG9rZW5GdW5jdGlvbnMgPSB7fTtcblxuICAgIC8vIHRva2VuOiAgICAnTSdcbiAgICAvLyBwYWRkZWQ6ICAgWydNTScsIDJdXG4gICAgLy8gb3JkaW5hbDogICdNbydcbiAgICAvLyBjYWxsYmFjazogZnVuY3Rpb24gKCkgeyB0aGlzLm1vbnRoKCkgKyAxIH1cbiAgICBmdW5jdGlvbiBhZGRGb3JtYXRUb2tlbih0b2tlbiwgcGFkZGVkLCBvcmRpbmFsLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgZnVuYyA9IGNhbGxiYWNrO1xuICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgZnVuYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpc1tjYWxsYmFja10oKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgICBmb3JtYXRUb2tlbkZ1bmN0aW9uc1t0b2tlbl0gPSBmdW5jO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYWRkZWQpIHtcbiAgICAgICAgICAgIGZvcm1hdFRva2VuRnVuY3Rpb25zW3BhZGRlZFswXV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHplcm9GaWxsKGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgcGFkZGVkWzFdLCBwYWRkZWRbMl0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3JkaW5hbCkge1xuICAgICAgICAgICAgZm9ybWF0VG9rZW5GdW5jdGlvbnNbb3JkaW5hbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm9yZGluYWwoXG4gICAgICAgICAgICAgICAgICAgIGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKSxcbiAgICAgICAgICAgICAgICAgICAgdG9rZW5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZUZvcm1hdHRpbmdUb2tlbnMoaW5wdXQpIHtcbiAgICAgICAgaWYgKGlucHV0Lm1hdGNoKC9cXFtbXFxzXFxTXS8pKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQucmVwbGFjZSgvXlxcW3xcXF0kL2csICcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5wdXQucmVwbGFjZSgvXFxcXC9nLCAnJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUZvcm1hdEZ1bmN0aW9uKGZvcm1hdCkge1xuICAgICAgICB2YXIgYXJyYXkgPSBmb3JtYXQubWF0Y2goZm9ybWF0dGluZ1Rva2VucyksXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgbGVuZ3RoO1xuXG4gICAgICAgIGZvciAoaSA9IDAsIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZm9ybWF0VG9rZW5GdW5jdGlvbnNbYXJyYXlbaV1dKSB7XG4gICAgICAgICAgICAgICAgYXJyYXlbaV0gPSBmb3JtYXRUb2tlbkZ1bmN0aW9uc1thcnJheVtpXV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFycmF5W2ldID0gcmVtb3ZlRm9ybWF0dGluZ1Rva2VucyhhcnJheVtpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG1vbSkge1xuICAgICAgICAgICAgdmFyIG91dHB1dCA9ICcnLFxuICAgICAgICAgICAgICAgIGk7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgKz0gaXNGdW5jdGlvbihhcnJheVtpXSlcbiAgICAgICAgICAgICAgICAgICAgPyBhcnJheVtpXS5jYWxsKG1vbSwgZm9ybWF0KVxuICAgICAgICAgICAgICAgICAgICA6IGFycmF5W2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBmb3JtYXQgZGF0ZSB1c2luZyBuYXRpdmUgZGF0ZSBvYmplY3RcbiAgICBmdW5jdGlvbiBmb3JtYXRNb21lbnQobSwgZm9ybWF0KSB7XG4gICAgICAgIGlmICghbS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBtLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9ybWF0ID0gZXhwYW5kRm9ybWF0KGZvcm1hdCwgbS5sb2NhbGVEYXRhKCkpO1xuICAgICAgICBmb3JtYXRGdW5jdGlvbnNbZm9ybWF0XSA9XG4gICAgICAgICAgICBmb3JtYXRGdW5jdGlvbnNbZm9ybWF0XSB8fCBtYWtlRm9ybWF0RnVuY3Rpb24oZm9ybWF0KTtcblxuICAgICAgICByZXR1cm4gZm9ybWF0RnVuY3Rpb25zW2Zvcm1hdF0obSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXhwYW5kRm9ybWF0KGZvcm1hdCwgbG9jYWxlKSB7XG4gICAgICAgIHZhciBpID0gNTtcblxuICAgICAgICBmdW5jdGlvbiByZXBsYWNlTG9uZ0RhdGVGb3JtYXRUb2tlbnMoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBsb2NhbGUubG9uZ0RhdGVGb3JtYXQoaW5wdXQpIHx8IGlucHV0O1xuICAgICAgICB9XG5cbiAgICAgICAgbG9jYWxGb3JtYXR0aW5nVG9rZW5zLmxhc3RJbmRleCA9IDA7XG4gICAgICAgIHdoaWxlIChpID49IDAgJiYgbG9jYWxGb3JtYXR0aW5nVG9rZW5zLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgbG9jYWxGb3JtYXR0aW5nVG9rZW5zLFxuICAgICAgICAgICAgICAgIHJlcGxhY2VMb25nRGF0ZUZvcm1hdFRva2Vuc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgaSAtPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdDtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvbmdEYXRlRm9ybWF0ID0ge1xuICAgICAgICBMVFM6ICdoOm1tOnNzIEEnLFxuICAgICAgICBMVDogJ2g6bW0gQScsXG4gICAgICAgIEw6ICdNTS9ERC9ZWVlZJyxcbiAgICAgICAgTEw6ICdNTU1NIEQsIFlZWVknLFxuICAgICAgICBMTEw6ICdNTU1NIEQsIFlZWVkgaDptbSBBJyxcbiAgICAgICAgTExMTDogJ2RkZGQsIE1NTU0gRCwgWVlZWSBoOm1tIEEnLFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBsb25nRGF0ZUZvcm1hdChrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV0sXG4gICAgICAgICAgICBmb3JtYXRVcHBlciA9IHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleS50b1VwcGVyQ2FzZSgpXTtcblxuICAgICAgICBpZiAoZm9ybWF0IHx8ICFmb3JtYXRVcHBlcikge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV0gPSBmb3JtYXRVcHBlclxuICAgICAgICAgICAgLm1hdGNoKGZvcm1hdHRpbmdUb2tlbnMpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uICh0b2spIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHRvayA9PT0gJ01NTU0nIHx8XG4gICAgICAgICAgICAgICAgICAgIHRvayA9PT0gJ01NJyB8fFxuICAgICAgICAgICAgICAgICAgICB0b2sgPT09ICdERCcgfHxcbiAgICAgICAgICAgICAgICAgICAgdG9rID09PSAnZGRkZCdcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvay5zbGljZSgxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvaztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuam9pbignJyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV07XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRJbnZhbGlkRGF0ZSA9ICdJbnZhbGlkIGRhdGUnO1xuXG4gICAgZnVuY3Rpb24gaW52YWxpZERhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnZhbGlkRGF0ZTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdE9yZGluYWwgPSAnJWQnLFxuICAgICAgICBkZWZhdWx0RGF5T2ZNb250aE9yZGluYWxQYXJzZSA9IC9cXGR7MSwyfS87XG5cbiAgICBmdW5jdGlvbiBvcmRpbmFsKG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3JkaW5hbC5yZXBsYWNlKCclZCcsIG51bWJlcik7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRSZWxhdGl2ZVRpbWUgPSB7XG4gICAgICAgIGZ1dHVyZTogJ2luICVzJyxcbiAgICAgICAgcGFzdDogJyVzIGFnbycsXG4gICAgICAgIHM6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgc3M6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgbTogJ2EgbWludXRlJyxcbiAgICAgICAgbW06ICclZCBtaW51dGVzJyxcbiAgICAgICAgaDogJ2FuIGhvdXInLFxuICAgICAgICBoaDogJyVkIGhvdXJzJyxcbiAgICAgICAgZDogJ2EgZGF5JyxcbiAgICAgICAgZGQ6ICclZCBkYXlzJyxcbiAgICAgICAgdzogJ2Egd2VlaycsXG4gICAgICAgIHd3OiAnJWQgd2Vla3MnLFxuICAgICAgICBNOiAnYSBtb250aCcsXG4gICAgICAgIE1NOiAnJWQgbW9udGhzJyxcbiAgICAgICAgeTogJ2EgeWVhcicsXG4gICAgICAgIHl5OiAnJWQgeWVhcnMnLFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBvdXRwdXQgPSB0aGlzLl9yZWxhdGl2ZVRpbWVbc3RyaW5nXTtcbiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24ob3V0cHV0KVxuICAgICAgICAgICAgPyBvdXRwdXQobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKVxuICAgICAgICAgICAgOiBvdXRwdXQucmVwbGFjZSgvJWQvaSwgbnVtYmVyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXN0RnV0dXJlKGRpZmYsIG91dHB1dCkge1xuICAgICAgICB2YXIgZm9ybWF0ID0gdGhpcy5fcmVsYXRpdmVUaW1lW2RpZmYgPiAwID8gJ2Z1dHVyZScgOiAncGFzdCddO1xuICAgICAgICByZXR1cm4gaXNGdW5jdGlvbihmb3JtYXQpID8gZm9ybWF0KG91dHB1dCkgOiBmb3JtYXQucmVwbGFjZSgvJXMvaSwgb3V0cHV0KTtcbiAgICB9XG5cbiAgICB2YXIgYWxpYXNlcyA9IHt9O1xuXG4gICAgZnVuY3Rpb24gYWRkVW5pdEFsaWFzKHVuaXQsIHNob3J0aGFuZCkge1xuICAgICAgICB2YXIgbG93ZXJDYXNlID0gdW5pdC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBhbGlhc2VzW2xvd2VyQ2FzZV0gPSBhbGlhc2VzW2xvd2VyQ2FzZSArICdzJ10gPSBhbGlhc2VzW3Nob3J0aGFuZF0gPSB1bml0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZVVuaXRzKHVuaXRzKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdW5pdHMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICA/IGFsaWFzZXNbdW5pdHNdIHx8IGFsaWFzZXNbdW5pdHMudG9Mb3dlckNhc2UoKV1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZU9iamVjdFVuaXRzKGlucHV0T2JqZWN0KSB7XG4gICAgICAgIHZhciBub3JtYWxpemVkSW5wdXQgPSB7fSxcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRQcm9wLFxuICAgICAgICAgICAgcHJvcDtcblxuICAgICAgICBmb3IgKHByb3AgaW4gaW5wdXRPYmplY3QpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKGlucHV0T2JqZWN0LCBwcm9wKSkge1xuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRQcm9wID0gbm9ybWFsaXplVW5pdHMocHJvcCk7XG4gICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRQcm9wKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRJbnB1dFtub3JtYWxpemVkUHJvcF0gPSBpbnB1dE9iamVjdFtwcm9wXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9ybWFsaXplZElucHV0O1xuICAgIH1cblxuICAgIHZhciBwcmlvcml0aWVzID0ge307XG5cbiAgICBmdW5jdGlvbiBhZGRVbml0UHJpb3JpdHkodW5pdCwgcHJpb3JpdHkpIHtcbiAgICAgICAgcHJpb3JpdGllc1t1bml0XSA9IHByaW9yaXR5O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFByaW9yaXRpemVkVW5pdHModW5pdHNPYmopIHtcbiAgICAgICAgdmFyIHVuaXRzID0gW10sXG4gICAgICAgICAgICB1O1xuICAgICAgICBmb3IgKHUgaW4gdW5pdHNPYmopIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKHVuaXRzT2JqLCB1KSkge1xuICAgICAgICAgICAgICAgIHVuaXRzLnB1c2goeyB1bml0OiB1LCBwcmlvcml0eTogcHJpb3JpdGllc1t1XSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB1bml0cy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5wcmlvcml0eSAtIGIucHJpb3JpdHk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdW5pdHM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNMZWFwWWVhcih5ZWFyKSB7XG4gICAgICAgIHJldHVybiAoeWVhciAlIDQgPT09IDAgJiYgeWVhciAlIDEwMCAhPT0gMCkgfHwgeWVhciAlIDQwMCA9PT0gMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhYnNGbG9vcihudW1iZXIpIHtcbiAgICAgICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgICAgICAgIC8vIC0wIC0+IDBcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwobnVtYmVyKSB8fCAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvSW50KGFyZ3VtZW50Rm9yQ29lcmNpb24pIHtcbiAgICAgICAgdmFyIGNvZXJjZWROdW1iZXIgPSArYXJndW1lbnRGb3JDb2VyY2lvbixcbiAgICAgICAgICAgIHZhbHVlID0gMDtcblxuICAgICAgICBpZiAoY29lcmNlZE51bWJlciAhPT0gMCAmJiBpc0Zpbml0ZShjb2VyY2VkTnVtYmVyKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBhYnNGbG9vcihjb2VyY2VkTnVtYmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWtlR2V0U2V0KHVuaXQsIGtlZXBUaW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc2V0JDEodGhpcywgdW5pdCwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCBrZWVwVGltZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXQodGhpcywgdW5pdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0KG1vbSwgdW5pdCkge1xuICAgICAgICByZXR1cm4gbW9tLmlzVmFsaWQoKVxuICAgICAgICAgICAgPyBtb20uX2RbJ2dldCcgKyAobW9tLl9pc1VUQyA/ICdVVEMnIDogJycpICsgdW5pdF0oKVxuICAgICAgICAgICAgOiBOYU47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0JDEobW9tLCB1bml0LCB2YWx1ZSkge1xuICAgICAgICBpZiAobW9tLmlzVmFsaWQoKSAmJiAhaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdW5pdCA9PT0gJ0Z1bGxZZWFyJyAmJlxuICAgICAgICAgICAgICAgIGlzTGVhcFllYXIobW9tLnllYXIoKSkgJiZcbiAgICAgICAgICAgICAgICBtb20ubW9udGgoKSA9PT0gMSAmJlxuICAgICAgICAgICAgICAgIG1vbS5kYXRlKCkgPT09IDI5XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHRvSW50KHZhbHVlKTtcbiAgICAgICAgICAgICAgICBtb20uX2RbJ3NldCcgKyAobW9tLl9pc1VUQyA/ICdVVEMnIDogJycpICsgdW5pdF0oXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBtb20ubW9udGgoKSxcbiAgICAgICAgICAgICAgICAgICAgZGF5c0luTW9udGgodmFsdWUsIG1vbS5tb250aCgpKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1vbS5fZFsnc2V0JyArIChtb20uX2lzVVRDID8gJ1VUQycgOiAnJykgKyB1bml0XSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBzdHJpbmdHZXQodW5pdHMpIHtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHRoaXNbdW5pdHNdKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXNbdW5pdHNdKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RyaW5nU2V0KHVuaXRzLCB2YWx1ZSkge1xuICAgICAgICBpZiAodHlwZW9mIHVuaXRzID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgdW5pdHMgPSBub3JtYWxpemVPYmplY3RVbml0cyh1bml0cyk7XG4gICAgICAgICAgICB2YXIgcHJpb3JpdGl6ZWQgPSBnZXRQcmlvcml0aXplZFVuaXRzKHVuaXRzKSxcbiAgICAgICAgICAgICAgICBpLFxuICAgICAgICAgICAgICAgIHByaW9yaXRpemVkTGVuID0gcHJpb3JpdGl6ZWQubGVuZ3RoO1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHByaW9yaXRpemVkTGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzW3ByaW9yaXRpemVkW2ldLnVuaXRdKHVuaXRzW3ByaW9yaXRpemVkW2ldLnVuaXRdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24odGhpc1t1bml0c10pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbdW5pdHNdKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgbWF0Y2gxID0gL1xcZC8sIC8vICAgICAgIDAgLSA5XG4gICAgICAgIG1hdGNoMiA9IC9cXGRcXGQvLCAvLyAgICAgIDAwIC0gOTlcbiAgICAgICAgbWF0Y2gzID0gL1xcZHszfS8sIC8vICAgICAwMDAgLSA5OTlcbiAgICAgICAgbWF0Y2g0ID0gL1xcZHs0fS8sIC8vICAgIDAwMDAgLSA5OTk5XG4gICAgICAgIG1hdGNoNiA9IC9bKy1dP1xcZHs2fS8sIC8vIC05OTk5OTkgLSA5OTk5OTlcbiAgICAgICAgbWF0Y2gxdG8yID0gL1xcZFxcZD8vLCAvLyAgICAgICAwIC0gOTlcbiAgICAgICAgbWF0Y2gzdG80ID0gL1xcZFxcZFxcZFxcZD8vLCAvLyAgICAgOTk5IC0gOTk5OVxuICAgICAgICBtYXRjaDV0bzYgPSAvXFxkXFxkXFxkXFxkXFxkXFxkPy8sIC8vICAgOTk5OTkgLSA5OTk5OTlcbiAgICAgICAgbWF0Y2gxdG8zID0gL1xcZHsxLDN9LywgLy8gICAgICAgMCAtIDk5OVxuICAgICAgICBtYXRjaDF0bzQgPSAvXFxkezEsNH0vLCAvLyAgICAgICAwIC0gOTk5OVxuICAgICAgICBtYXRjaDF0bzYgPSAvWystXT9cXGR7MSw2fS8sIC8vIC05OTk5OTkgLSA5OTk5OTlcbiAgICAgICAgbWF0Y2hVbnNpZ25lZCA9IC9cXGQrLywgLy8gICAgICAgMCAtIGluZlxuICAgICAgICBtYXRjaFNpZ25lZCA9IC9bKy1dP1xcZCsvLCAvLyAgICAtaW5mIC0gaW5mXG4gICAgICAgIG1hdGNoT2Zmc2V0ID0gL1p8WystXVxcZFxcZDo/XFxkXFxkL2dpLCAvLyArMDA6MDAgLTAwOjAwICswMDAwIC0wMDAwIG9yIFpcbiAgICAgICAgbWF0Y2hTaG9ydE9mZnNldCA9IC9afFsrLV1cXGRcXGQoPzo6P1xcZFxcZCk/L2dpLCAvLyArMDAgLTAwICswMDowMCAtMDA6MDAgKzAwMDAgLTAwMDAgb3IgWlxuICAgICAgICBtYXRjaFRpbWVzdGFtcCA9IC9bKy1dP1xcZCsoXFwuXFxkezEsM30pPy8sIC8vIDEyMzQ1Njc4OSAxMjM0NTY3ODkuMTIzXG4gICAgICAgIC8vIGFueSB3b3JkIChvciB0d28pIGNoYXJhY3RlcnMgb3IgbnVtYmVycyBpbmNsdWRpbmcgdHdvL3RocmVlIHdvcmQgbW9udGggaW4gYXJhYmljLlxuICAgICAgICAvLyBpbmNsdWRlcyBzY290dGlzaCBnYWVsaWMgdHdvIHdvcmQgYW5kIGh5cGhlbmF0ZWQgbW9udGhzXG4gICAgICAgIG1hdGNoV29yZCA9XG4gICAgICAgICAgICAvWzAtOV17MCwyNTZ9WydhLXpcXHUwMEEwLVxcdTA1RkZcXHUwNzAwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGMDdcXHVGRjEwLVxcdUZGRUZdezEsMjU2fXxbXFx1MDYwMC1cXHUwNkZGXFwvXXsxLDI1Nn0oXFxzKj9bXFx1MDYwMC1cXHUwNkZGXXsxLDI1Nn0pezEsMn0vaSxcbiAgICAgICAgcmVnZXhlcztcblxuICAgIHJlZ2V4ZXMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGFkZFJlZ2V4VG9rZW4odG9rZW4sIHJlZ2V4LCBzdHJpY3RSZWdleCkge1xuICAgICAgICByZWdleGVzW3Rva2VuXSA9IGlzRnVuY3Rpb24ocmVnZXgpXG4gICAgICAgICAgICA/IHJlZ2V4XG4gICAgICAgICAgICA6IGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlRGF0YSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGlzU3RyaWN0ICYmIHN0cmljdFJlZ2V4ID8gc3RyaWN0UmVnZXggOiByZWdleDtcbiAgICAgICAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRQYXJzZVJlZ2V4Rm9yVG9rZW4odG9rZW4sIGNvbmZpZykge1xuICAgICAgICBpZiAoIWhhc093blByb3AocmVnZXhlcywgdG9rZW4pKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cCh1bmVzY2FwZUZvcm1hdCh0b2tlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlZ2V4ZXNbdG9rZW5dKGNvbmZpZy5fc3RyaWN0LCBjb25maWcuX2xvY2FsZSk7XG4gICAgfVxuXG4gICAgLy8gQ29kZSBmcm9tIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzU2MTQ5My9pcy10aGVyZS1hLXJlZ2V4cC1lc2NhcGUtZnVuY3Rpb24taW4tamF2YXNjcmlwdFxuICAgIGZ1bmN0aW9uIHVuZXNjYXBlRm9ybWF0KHMpIHtcbiAgICAgICAgcmV0dXJuIHJlZ2V4RXNjYXBlKFxuICAgICAgICAgICAgc1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKCdcXFxcJywgJycpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgICAgIC9cXFxcKFxcWyl8XFxcXChcXF0pfFxcWyhbXlxcXVxcW10qKVxcXXxcXFxcKC4pL2csXG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChtYXRjaGVkLCBwMSwgcDIsIHAzLCBwNCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHAxIHx8IHAyIHx8IHAzIHx8IHA0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlZ2V4RXNjYXBlKHMpIHtcbiAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy1cXC9cXFxcXiQqKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG4gICAgfVxuXG4gICAgdmFyIHRva2VucyA9IHt9O1xuXG4gICAgZnVuY3Rpb24gYWRkUGFyc2VUb2tlbih0b2tlbiwgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBmdW5jID0gY2FsbGJhY2ssXG4gICAgICAgICAgICB0b2tlbkxlbjtcbiAgICAgICAgaWYgKHR5cGVvZiB0b2tlbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRva2VuID0gW3Rva2VuXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOdW1iZXIoY2FsbGJhY2spKSB7XG4gICAgICAgICAgICBmdW5jID0gZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICAgICAgICAgIGFycmF5W2NhbGxiYWNrXSA9IHRvSW50KGlucHV0KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgdG9rZW5MZW4gPSB0b2tlbi5sZW5ndGg7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0b2tlbkxlbjsgaSsrKSB7XG4gICAgICAgICAgICB0b2tlbnNbdG9rZW5baV1dID0gZnVuYztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZFdlZWtQYXJzZVRva2VuKHRva2VuLCBjYWxsYmFjaykge1xuICAgICAgICBhZGRQYXJzZVRva2VuKHRva2VuLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgICAgICBjb25maWcuX3cgPSBjb25maWcuX3cgfHwge307XG4gICAgICAgICAgICBjYWxsYmFjayhpbnB1dCwgY29uZmlnLl93LCBjb25maWcsIHRva2VuKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkVGltZVRvQXJyYXlGcm9tVG9rZW4odG9rZW4sIGlucHV0LCBjb25maWcpIHtcbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwgJiYgaGFzT3duUHJvcCh0b2tlbnMsIHRva2VuKSkge1xuICAgICAgICAgICAgdG9rZW5zW3Rva2VuXShpbnB1dCwgY29uZmlnLl9hLCBjb25maWcsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBZRUFSID0gMCxcbiAgICAgICAgTU9OVEggPSAxLFxuICAgICAgICBEQVRFID0gMixcbiAgICAgICAgSE9VUiA9IDMsXG4gICAgICAgIE1JTlVURSA9IDQsXG4gICAgICAgIFNFQ09ORCA9IDUsXG4gICAgICAgIE1JTExJU0VDT05EID0gNixcbiAgICAgICAgV0VFSyA9IDcsXG4gICAgICAgIFdFRUtEQVkgPSA4O1xuXG4gICAgZnVuY3Rpb24gbW9kKG4sIHgpIHtcbiAgICAgICAgcmV0dXJuICgobiAlIHgpICsgeCkgJSB4O1xuICAgIH1cblxuICAgIHZhciBpbmRleE9mO1xuXG4gICAgaWYgKEFycmF5LnByb3RvdHlwZS5pbmRleE9mKSB7XG4gICAgICAgIGluZGV4T2YgPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZjtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpbmRleE9mID0gZnVuY3Rpb24gKG8pIHtcbiAgICAgICAgICAgIC8vIEkga25vd1xuICAgICAgICAgICAgdmFyIGk7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzW2ldID09PSBvKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkYXlzSW5Nb250aCh5ZWFyLCBtb250aCkge1xuICAgICAgICBpZiAoaXNOYU4oeWVhcikgfHwgaXNOYU4obW9udGgpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIHZhciBtb2RNb250aCA9IG1vZChtb250aCwgMTIpO1xuICAgICAgICB5ZWFyICs9IChtb250aCAtIG1vZE1vbnRoKSAvIDEyO1xuICAgICAgICByZXR1cm4gbW9kTW9udGggPT09IDFcbiAgICAgICAgICAgID8gaXNMZWFwWWVhcih5ZWFyKVxuICAgICAgICAgICAgICAgID8gMjlcbiAgICAgICAgICAgICAgICA6IDI4XG4gICAgICAgICAgICA6IDMxIC0gKChtb2RNb250aCAlIDcpICUgMik7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ00nLCBbJ01NJywgMl0sICdNbycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9udGgoKSArIDE7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignTU1NJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubW9udGhzU2hvcnQodGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdNTU1NJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubW9udGhzKHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ21vbnRoJywgJ00nKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ21vbnRoJywgOCk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdNJywgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdNTScsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdNTU0nLCBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLm1vbnRoc1Nob3J0UmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ01NTU0nLCBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLm1vbnRoc1JlZ2V4KGlzU3RyaWN0KTtcbiAgICB9KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydNJywgJ01NJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbTU9OVEhdID0gdG9JbnQoaW5wdXQpIC0gMTtcbiAgICB9KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydNTU0nLCAnTU1NTSddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgIHZhciBtb250aCA9IGNvbmZpZy5fbG9jYWxlLm1vbnRoc1BhcnNlKGlucHV0LCB0b2tlbiwgY29uZmlnLl9zdHJpY3QpO1xuICAgICAgICAvLyBpZiB3ZSBkaWRuJ3QgZmluZCBhIG1vbnRoIG5hbWUsIG1hcmsgdGhlIGRhdGUgYXMgaW52YWxpZC5cbiAgICAgICAgaWYgKG1vbnRoICE9IG51bGwpIHtcbiAgICAgICAgICAgIGFycmF5W01PTlRIXSA9IG1vbnRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuaW52YWxpZE1vbnRoID0gaW5wdXQ7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIExPQ0FMRVNcblxuICAgIHZhciBkZWZhdWx0TG9jYWxlTW9udGhzID1cbiAgICAgICAgICAgICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIGRlZmF1bHRMb2NhbGVNb250aHNTaG9ydCA9XG4gICAgICAgICAgICAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIE1PTlRIU19JTl9GT1JNQVQgPSAvRFtvRF0/KFxcW1teXFxbXFxdXSpcXF18XFxzKStNTU1NPy8sXG4gICAgICAgIGRlZmF1bHRNb250aHNTaG9ydFJlZ2V4ID0gbWF0Y2hXb3JkLFxuICAgICAgICBkZWZhdWx0TW9udGhzUmVnZXggPSBtYXRjaFdvcmQ7XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVNb250aHMobSwgZm9ybWF0KSB7XG4gICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgcmV0dXJuIGlzQXJyYXkodGhpcy5fbW9udGhzKVxuICAgICAgICAgICAgICAgID8gdGhpcy5fbW9udGhzXG4gICAgICAgICAgICAgICAgOiB0aGlzLl9tb250aHNbJ3N0YW5kYWxvbmUnXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHMpXG4gICAgICAgICAgICA/IHRoaXMuX21vbnRoc1ttLm1vbnRoKCldXG4gICAgICAgICAgICA6IHRoaXMuX21vbnRoc1tcbiAgICAgICAgICAgICAgICAgICh0aGlzLl9tb250aHMuaXNGb3JtYXQgfHwgTU9OVEhTX0lOX0ZPUk1BVCkudGVzdChmb3JtYXQpXG4gICAgICAgICAgICAgICAgICAgICAgPyAnZm9ybWF0J1xuICAgICAgICAgICAgICAgICAgICAgIDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgICAgIF1bbS5tb250aCgpXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVNb250aHNTaG9ydChtLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHNTaG9ydClcbiAgICAgICAgICAgICAgICA/IHRoaXMuX21vbnRoc1Nob3J0XG4gICAgICAgICAgICAgICAgOiB0aGlzLl9tb250aHNTaG9ydFsnc3RhbmRhbG9uZSddO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX21vbnRoc1Nob3J0KVxuICAgICAgICAgICAgPyB0aGlzLl9tb250aHNTaG9ydFttLm1vbnRoKCldXG4gICAgICAgICAgICA6IHRoaXMuX21vbnRoc1Nob3J0W1xuICAgICAgICAgICAgICAgICAgTU9OVEhTX0lOX0ZPUk1BVC50ZXN0KGZvcm1hdCkgPyAnZm9ybWF0JyA6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgICAgICBdW20ubW9udGgoKV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlU3RyaWN0UGFyc2UobW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCkge1xuICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgIGlpLFxuICAgICAgICAgICAgbW9tLFxuICAgICAgICAgICAgbGxjID0gbW9udGhOYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICghdGhpcy5fbW9udGhzUGFyc2UpIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgbm90IHVzZWRcbiAgICAgICAgICAgIHRoaXMuX21vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3J0TW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgKytpKSB7XG4gICAgICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCBpXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZVtpXSA9IHRoaXMubW9udGhzU2hvcnQoXG4gICAgICAgICAgICAgICAgICAgIG1vbSxcbiAgICAgICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICAgICApLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9uZ01vbnRoc1BhcnNlW2ldID0gdGhpcy5tb250aHMobW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdHJpY3QpIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdNTU0nKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdNTU0nKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxlTW9udGhzUGFyc2UobW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCkge1xuICAgICAgICB2YXIgaSwgbW9tLCByZWdleDtcblxuICAgICAgICBpZiAodGhpcy5fbW9udGhzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVN0cmljdFBhcnNlLmNhbGwodGhpcywgbW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX21vbnRoc1BhcnNlKSB7XG4gICAgICAgICAgICB0aGlzLl9tb250aHNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbG9uZ01vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlID0gW107XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUT0RPOiBhZGQgc29ydGluZ1xuICAgICAgICAvLyBTb3J0aW5nIG1ha2VzIHN1cmUgaWYgb25lIG1vbnRoIChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyXG4gICAgICAgIC8vIHNlZSBzb3J0aW5nIGluIGNvbXB1dGVNb250aHNQYXJzZVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgICAgLy8gbWFrZSB0aGUgcmVnZXggaWYgd2UgZG9uJ3QgaGF2ZSBpdCBhbHJlYWR5XG4gICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIGldKTtcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgIXRoaXMuX2xvbmdNb250aHNQYXJzZVtpXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvbmdNb250aHNQYXJzZVtpXSA9IG5ldyBSZWdFeHAoXG4gICAgICAgICAgICAgICAgICAgICdeJyArIHRoaXMubW9udGhzKG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnJykgKyAnJCcsXG4gICAgICAgICAgICAgICAgICAgICdpJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZVtpXSA9IG5ldyBSZWdFeHAoXG4gICAgICAgICAgICAgICAgICAgICdeJyArIHRoaXMubW9udGhzU2hvcnQobW9tLCAnJykucmVwbGFjZSgnLicsICcnKSArICckJyxcbiAgICAgICAgICAgICAgICAgICAgJ2knXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc3RyaWN0ICYmICF0aGlzLl9tb250aHNQYXJzZVtpXSkge1xuICAgICAgICAgICAgICAgIHJlZ2V4ID1cbiAgICAgICAgICAgICAgICAgICAgJ14nICsgdGhpcy5tb250aHMobW9tLCAnJykgKyAnfF4nICsgdGhpcy5tb250aHNTaG9ydChtb20sICcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb250aHNQYXJzZVtpXSA9IG5ldyBSZWdFeHAocmVnZXgucmVwbGFjZSgnLicsICcnKSwgJ2knKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHRlc3QgdGhlIHJlZ2V4XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc3RyaWN0ICYmXG4gICAgICAgICAgICAgICAgZm9ybWF0ID09PSAnTU1NTScgJiZcbiAgICAgICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0udGVzdChtb250aE5hbWUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgc3RyaWN0ICYmXG4gICAgICAgICAgICAgICAgZm9ybWF0ID09PSAnTU1NJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuX3Nob3J0TW9udGhzUGFyc2VbaV0udGVzdChtb250aE5hbWUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cmljdCAmJiB0aGlzLl9tb250aHNQYXJzZVtpXS50ZXN0KG1vbnRoTmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIHNldE1vbnRoKG1vbSwgdmFsdWUpIHtcbiAgICAgICAgdmFyIGRheU9mTW9udGg7XG5cbiAgICAgICAgaWYgKCFtb20uaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAvLyBObyBvcFxuICAgICAgICAgICAgcmV0dXJuIG1vbTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAoL15cXGQrJC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHRvSW50KHZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBtb20ubG9jYWxlRGF0YSgpLm1vbnRoc1BhcnNlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBBbm90aGVyIHNpbGVudCBmYWlsdXJlP1xuICAgICAgICAgICAgICAgIGlmICghaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtb207XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZGF5T2ZNb250aCA9IE1hdGgubWluKG1vbS5kYXRlKCksIGRheXNJbk1vbnRoKG1vbS55ZWFyKCksIHZhbHVlKSk7XG4gICAgICAgIG1vbS5fZFsnc2V0JyArIChtb20uX2lzVVRDID8gJ1VUQycgOiAnJykgKyAnTW9udGgnXSh2YWx1ZSwgZGF5T2ZNb250aCk7XG4gICAgICAgIHJldHVybiBtb207XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0TW9udGgodmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIHNldE1vbnRoKHRoaXMsIHZhbHVlKTtcbiAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCB0cnVlKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGdldCh0aGlzLCAnTW9udGgnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldERheXNJbk1vbnRoKCkge1xuICAgICAgICByZXR1cm4gZGF5c0luTW9udGgodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbW9udGhzU2hvcnRSZWdleChpc1N0cmljdCkge1xuICAgICAgICBpZiAodGhpcy5fbW9udGhzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVNb250aHNQYXJzZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzU3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzU2hvcnRSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzU2hvcnRSZWdleCA9IGRlZmF1bHRNb250aHNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXggJiYgaXNTdHJpY3RcbiAgICAgICAgICAgICAgICA/IHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXhcbiAgICAgICAgICAgICAgICA6IHRoaXMuX21vbnRoc1Nob3J0UmVnZXg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb250aHNSZWdleChpc1N0cmljdCkge1xuICAgICAgICBpZiAodGhpcy5fbW9udGhzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVNb250aHNQYXJzZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzU3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ19tb250aHNSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzUmVnZXggPSBkZWZhdWx0TW9udGhzUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzU3RyaWN0UmVnZXggJiYgaXNTdHJpY3RcbiAgICAgICAgICAgICAgICA/IHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4XG4gICAgICAgICAgICAgICAgOiB0aGlzLl9tb250aHNSZWdleDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbXB1dGVNb250aHNQYXJzZSgpIHtcbiAgICAgICAgZnVuY3Rpb24gY21wTGVuUmV2KGEsIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBiLmxlbmd0aCAtIGEubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHNob3J0UGllY2VzID0gW10sXG4gICAgICAgICAgICBsb25nUGllY2VzID0gW10sXG4gICAgICAgICAgICBtaXhlZFBpZWNlcyA9IFtdLFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIG1vbTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCBpXSk7XG4gICAgICAgICAgICBzaG9ydFBpZWNlcy5wdXNoKHRoaXMubW9udGhzU2hvcnQobW9tLCAnJykpO1xuICAgICAgICAgICAgbG9uZ1BpZWNlcy5wdXNoKHRoaXMubW9udGhzKG1vbSwgJycpKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2godGhpcy5tb250aHMobW9tLCAnJykpO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaCh0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBTb3J0aW5nIG1ha2VzIHN1cmUgaWYgb25lIG1vbnRoIChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyIGl0XG4gICAgICAgIC8vIHdpbGwgbWF0Y2ggdGhlIGxvbmdlciBwaWVjZS5cbiAgICAgICAgc2hvcnRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBsb25nUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbWl4ZWRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgICAgc2hvcnRQaWVjZXNbaV0gPSByZWdleEVzY2FwZShzaG9ydFBpZWNlc1tpXSk7XG4gICAgICAgICAgICBsb25nUGllY2VzW2ldID0gcmVnZXhFc2NhcGUobG9uZ1BpZWNlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDI0OyBpKyspIHtcbiAgICAgICAgICAgIG1peGVkUGllY2VzW2ldID0gcmVnZXhFc2NhcGUobWl4ZWRQaWVjZXNbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbW9udGhzUmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBtaXhlZFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX21vbnRoc1Nob3J0UmVnZXggPSB0aGlzLl9tb250aHNSZWdleDtcbiAgICAgICAgdGhpcy5fbW9udGhzU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgJ14oJyArIGxvbmdQaWVjZXMuam9pbignfCcpICsgJyknLFxuICAgICAgICAgICAgJ2knXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgJ14oJyArIHNob3J0UGllY2VzLmpvaW4oJ3wnKSArICcpJyxcbiAgICAgICAgICAgICdpJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdZJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgeSA9IHRoaXMueWVhcigpO1xuICAgICAgICByZXR1cm4geSA8PSA5OTk5ID8gemVyb0ZpbGwoeSwgNCkgOiAnKycgKyB5O1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydZWScsIDJdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnllYXIoKSAlIDEwMDtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnWVlZWScsIDRdLCAwLCAneWVhcicpO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnWVlZWVknLCA1XSwgMCwgJ3llYXInKTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1lZWVlZWScsIDYsIHRydWVdLCAwLCAneWVhcicpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCd5ZWFyJywgJ3knKTtcblxuICAgIC8vIFBSSU9SSVRJRVNcblxuICAgIGFkZFVuaXRQcmlvcml0eSgneWVhcicsIDEpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignWScsIG1hdGNoU2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCdZWScsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdZWVlZJywgbWF0Y2gxdG80LCBtYXRjaDQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1lZWVlZJywgbWF0Y2gxdG82LCBtYXRjaDYpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1lZWVlZWScsIG1hdGNoMXRvNiwgbWF0Y2g2KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydZWVlZWScsICdZWVlZWVknXSwgWUVBUik7XG4gICAgYWRkUGFyc2VUb2tlbignWVlZWScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbWUVBUl0gPVxuICAgICAgICAgICAgaW5wdXQubGVuZ3RoID09PSAyID8gaG9va3MucGFyc2VUd29EaWdpdFllYXIoaW5wdXQpIDogdG9JbnQoaW5wdXQpO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1lZJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtZRUFSXSA9IGhvb2tzLnBhcnNlVHdvRGlnaXRZZWFyKGlucHV0KTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdZJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtZRUFSXSA9IHBhcnNlSW50KGlucHV0LCAxMCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICBmdW5jdGlvbiBkYXlzSW5ZZWFyKHllYXIpIHtcbiAgICAgICAgcmV0dXJuIGlzTGVhcFllYXIoeWVhcikgPyAzNjYgOiAzNjU7XG4gICAgfVxuXG4gICAgLy8gSE9PS1NcblxuICAgIGhvb2tzLnBhcnNlVHdvRGlnaXRZZWFyID0gZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgIHJldHVybiB0b0ludChpbnB1dCkgKyAodG9JbnQoaW5wdXQpID4gNjggPyAxOTAwIDogMjAwMCk7XG4gICAgfTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIHZhciBnZXRTZXRZZWFyID0gbWFrZUdldFNldCgnRnVsbFllYXInLCB0cnVlKTtcblxuICAgIGZ1bmN0aW9uIGdldElzTGVhcFllYXIoKSB7XG4gICAgICAgIHJldHVybiBpc0xlYXBZZWFyKHRoaXMueWVhcigpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVEYXRlKHksIG0sIGQsIGgsIE0sIHMsIG1zKSB7XG4gICAgICAgIC8vIGNhbid0IGp1c3QgYXBwbHkoKSB0byBjcmVhdGUgYSBkYXRlOlxuICAgICAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3EvMTgxMzQ4XG4gICAgICAgIHZhciBkYXRlO1xuICAgICAgICAvLyB0aGUgZGF0ZSBjb25zdHJ1Y3RvciByZW1hcHMgeWVhcnMgMC05OSB0byAxOTAwLTE5OTlcbiAgICAgICAgaWYgKHkgPCAxMDAgJiYgeSA+PSAwKSB7XG4gICAgICAgICAgICAvLyBwcmVzZXJ2ZSBsZWFwIHllYXJzIHVzaW5nIGEgZnVsbCA0MDAgeWVhciBjeWNsZSwgdGhlbiByZXNldFxuICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKHkgKyA0MDAsIG0sIGQsIGgsIE0sIHMsIG1zKTtcbiAgICAgICAgICAgIGlmIChpc0Zpbml0ZShkYXRlLmdldEZ1bGxZZWFyKCkpKSB7XG4gICAgICAgICAgICAgICAgZGF0ZS5zZXRGdWxsWWVhcih5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZSh5LCBtLCBkLCBoLCBNLCBzLCBtcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVVVENEYXRlKHkpIHtcbiAgICAgICAgdmFyIGRhdGUsIGFyZ3M7XG4gICAgICAgIC8vIHRoZSBEYXRlLlVUQyBmdW5jdGlvbiByZW1hcHMgeWVhcnMgMC05OSB0byAxOTAwLTE5OTlcbiAgICAgICAgaWYgKHkgPCAxMDAgJiYgeSA+PSAwKSB7XG4gICAgICAgICAgICBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgICAgICAgICAgIC8vIHByZXNlcnZlIGxlYXAgeWVhcnMgdXNpbmcgYSBmdWxsIDQwMCB5ZWFyIGN5Y2xlLCB0aGVuIHJlc2V0XG4gICAgICAgICAgICBhcmdzWzBdID0geSArIDQwMDtcbiAgICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZShEYXRlLlVUQy5hcHBseShudWxsLCBhcmdzKSk7XG4gICAgICAgICAgICBpZiAoaXNGaW5pdGUoZGF0ZS5nZXRVVENGdWxsWWVhcigpKSkge1xuICAgICAgICAgICAgICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkYXRlID0gbmV3IERhdGUoRGF0ZS5VVEMuYXBwbHkobnVsbCwgYXJndW1lbnRzKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG5cbiAgICAvLyBzdGFydC1vZi1maXJzdC13ZWVrIC0gc3RhcnQtb2YteWVhclxuICAgIGZ1bmN0aW9uIGZpcnN0V2Vla09mZnNldCh5ZWFyLCBkb3csIGRveSkge1xuICAgICAgICB2YXIgLy8gZmlyc3Qtd2VlayBkYXkgLS0gd2hpY2ggamFudWFyeSBpcyBhbHdheXMgaW4gdGhlIGZpcnN0IHdlZWsgKDQgZm9yIGlzbywgMSBmb3Igb3RoZXIpXG4gICAgICAgICAgICBmd2QgPSA3ICsgZG93IC0gZG95LFxuICAgICAgICAgICAgLy8gZmlyc3Qtd2VlayBkYXkgbG9jYWwgd2Vla2RheSAtLSB3aGljaCBsb2NhbCB3ZWVrZGF5IGlzIGZ3ZFxuICAgICAgICAgICAgZndkbHcgPSAoNyArIGNyZWF0ZVVUQ0RhdGUoeWVhciwgMCwgZndkKS5nZXRVVENEYXkoKSAtIGRvdykgJSA3O1xuXG4gICAgICAgIHJldHVybiAtZndkbHcgKyBmd2QgLSAxO1xuICAgIH1cblxuICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGUjQ2FsY3VsYXRpbmdfYV9kYXRlX2dpdmVuX3RoZV95ZWFyLjJDX3dlZWtfbnVtYmVyX2FuZF93ZWVrZGF5XG4gICAgZnVuY3Rpb24gZGF5T2ZZZWFyRnJvbVdlZWtzKHllYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KSB7XG4gICAgICAgIHZhciBsb2NhbFdlZWtkYXkgPSAoNyArIHdlZWtkYXkgLSBkb3cpICUgNyxcbiAgICAgICAgICAgIHdlZWtPZmZzZXQgPSBmaXJzdFdlZWtPZmZzZXQoeWVhciwgZG93LCBkb3kpLFxuICAgICAgICAgICAgZGF5T2ZZZWFyID0gMSArIDcgKiAod2VlayAtIDEpICsgbG9jYWxXZWVrZGF5ICsgd2Vla09mZnNldCxcbiAgICAgICAgICAgIHJlc1llYXIsXG4gICAgICAgICAgICByZXNEYXlPZlllYXI7XG5cbiAgICAgICAgaWYgKGRheU9mWWVhciA8PSAwKSB7XG4gICAgICAgICAgICByZXNZZWFyID0geWVhciAtIDE7XG4gICAgICAgICAgICByZXNEYXlPZlllYXIgPSBkYXlzSW5ZZWFyKHJlc1llYXIpICsgZGF5T2ZZZWFyO1xuICAgICAgICB9IGVsc2UgaWYgKGRheU9mWWVhciA+IGRheXNJblllYXIoeWVhcikpIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSB5ZWFyICsgMTtcbiAgICAgICAgICAgIHJlc0RheU9mWWVhciA9IGRheU9mWWVhciAtIGRheXNJblllYXIoeWVhcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNZZWFyID0geWVhcjtcbiAgICAgICAgICAgIHJlc0RheU9mWWVhciA9IGRheU9mWWVhcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB5ZWFyOiByZXNZZWFyLFxuICAgICAgICAgICAgZGF5T2ZZZWFyOiByZXNEYXlPZlllYXIsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd2Vla09mWWVhcihtb20sIGRvdywgZG95KSB7XG4gICAgICAgIHZhciB3ZWVrT2Zmc2V0ID0gZmlyc3RXZWVrT2Zmc2V0KG1vbS55ZWFyKCksIGRvdywgZG95KSxcbiAgICAgICAgICAgIHdlZWsgPSBNYXRoLmZsb29yKChtb20uZGF5T2ZZZWFyKCkgLSB3ZWVrT2Zmc2V0IC0gMSkgLyA3KSArIDEsXG4gICAgICAgICAgICByZXNXZWVrLFxuICAgICAgICAgICAgcmVzWWVhcjtcblxuICAgICAgICBpZiAod2VlayA8IDEpIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSBtb20ueWVhcigpIC0gMTtcbiAgICAgICAgICAgIHJlc1dlZWsgPSB3ZWVrICsgd2Vla3NJblllYXIocmVzWWVhciwgZG93LCBkb3kpO1xuICAgICAgICB9IGVsc2UgaWYgKHdlZWsgPiB3ZWVrc0luWWVhcihtb20ueWVhcigpLCBkb3csIGRveSkpIHtcbiAgICAgICAgICAgIHJlc1dlZWsgPSB3ZWVrIC0gd2Vla3NJblllYXIobW9tLnllYXIoKSwgZG93LCBkb3kpO1xuICAgICAgICAgICAgcmVzWWVhciA9IG1vbS55ZWFyKCkgKyAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzWWVhciA9IG1vbS55ZWFyKCk7XG4gICAgICAgICAgICByZXNXZWVrID0gd2VlaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB3ZWVrOiByZXNXZWVrLFxuICAgICAgICAgICAgeWVhcjogcmVzWWVhcixcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3ZWVrc0luWWVhcih5ZWFyLCBkb3csIGRveSkge1xuICAgICAgICB2YXIgd2Vla09mZnNldCA9IGZpcnN0V2Vla09mZnNldCh5ZWFyLCBkb3csIGRveSksXG4gICAgICAgICAgICB3ZWVrT2Zmc2V0TmV4dCA9IGZpcnN0V2Vla09mZnNldCh5ZWFyICsgMSwgZG93LCBkb3kpO1xuICAgICAgICByZXR1cm4gKGRheXNJblllYXIoeWVhcikgLSB3ZWVrT2Zmc2V0ICsgd2Vla09mZnNldE5leHQpIC8gNztcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigndycsIFsnd3cnLCAyXSwgJ3dvJywgJ3dlZWsnKTtcbiAgICBhZGRGb3JtYXRUb2tlbignVycsIFsnV1cnLCAyXSwgJ1dvJywgJ2lzb1dlZWsnKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnd2VlaycsICd3Jyk7XG4gICAgYWRkVW5pdEFsaWFzKCdpc29XZWVrJywgJ1cnKTtcblxuICAgIC8vIFBSSU9SSVRJRVNcblxuICAgIGFkZFVuaXRQcmlvcml0eSgnd2VlaycsIDUpO1xuICAgIGFkZFVuaXRQcmlvcml0eSgnaXNvV2VlaycsIDUpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbigndycsIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignd3cnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignVycsIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignV1cnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihcbiAgICAgICAgWyd3JywgJ3d3JywgJ1cnLCAnV1cnXSxcbiAgICAgICAgZnVuY3Rpb24gKGlucHV0LCB3ZWVrLCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgICAgICB3ZWVrW3Rva2VuLnN1YnN0cigwLCAxKV0gPSB0b0ludChpbnB1dCk7XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gSEVMUEVSU1xuXG4gICAgLy8gTE9DQUxFU1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vlayhtb20pIHtcbiAgICAgICAgcmV0dXJuIHdlZWtPZlllYXIobW9tLCB0aGlzLl93ZWVrLmRvdywgdGhpcy5fd2Vlay5kb3kpLndlZWs7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVXZWVrID0ge1xuICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlRmlyc3REYXlPZldlZWsoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93ZWVrLmRvdztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVGaXJzdERheU9mWWVhcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWsuZG95O1xuICAgIH1cblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldFdlZWsoaW5wdXQpIHtcbiAgICAgICAgdmFyIHdlZWsgPSB0aGlzLmxvY2FsZURhdGEoKS53ZWVrKHRoaXMpO1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IHdlZWsgOiB0aGlzLmFkZCgoaW5wdXQgLSB3ZWVrKSAqIDcsICdkJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0SVNPV2VlayhpbnB1dCkge1xuICAgICAgICB2YXIgd2VlayA9IHdlZWtPZlllYXIodGhpcywgMSwgNCkud2VlaztcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyB3ZWVrIDogdGhpcy5hZGQoKGlucHV0IC0gd2VlaykgKiA3LCAnZCcpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdkJywgMCwgJ2RvJywgJ2RheScpO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2RkJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXNNaW4odGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdkZGQnLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5c1Nob3J0KHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignZGRkZCcsIDAsIDAsIGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzKHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignZScsIDAsIDAsICd3ZWVrZGF5Jyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ0UnLCAwLCAwLCAnaXNvV2Vla2RheScpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdkYXknLCAnZCcpO1xuICAgIGFkZFVuaXRBbGlhcygnd2Vla2RheScsICdlJyk7XG4gICAgYWRkVW5pdEFsaWFzKCdpc29XZWVrZGF5JywgJ0UnKTtcblxuICAgIC8vIFBSSU9SSVRZXG4gICAgYWRkVW5pdFByaW9yaXR5KCdkYXknLCAxMSk7XG4gICAgYWRkVW5pdFByaW9yaXR5KCd3ZWVrZGF5JywgMTEpO1xuICAgIGFkZFVuaXRQcmlvcml0eSgnaXNvV2Vla2RheScsIDExKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ2QnLCBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2UnLCBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0UnLCBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2RkJywgZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c01pblJlZ2V4KGlzU3RyaWN0KTtcbiAgICB9KTtcbiAgICBhZGRSZWdleFRva2VuKCdkZGQnLCBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLndlZWtkYXlzU2hvcnRSZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG4gICAgYWRkUmVnZXhUb2tlbignZGRkZCcsIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUud2Vla2RheXNSZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihbJ2RkJywgJ2RkZCcsICdkZGRkJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB2YXIgd2Vla2RheSA9IGNvbmZpZy5fbG9jYWxlLndlZWtkYXlzUGFyc2UoaW5wdXQsIHRva2VuLCBjb25maWcuX3N0cmljdCk7XG4gICAgICAgIC8vIGlmIHdlIGRpZG4ndCBnZXQgYSB3ZWVrZGF5IG5hbWUsIG1hcmsgdGhlIGRhdGUgYXMgaW52YWxpZFxuICAgICAgICBpZiAod2Vla2RheSAhPSBudWxsKSB7XG4gICAgICAgICAgICB3ZWVrLmQgPSB3ZWVrZGF5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuaW52YWxpZFdlZWtkYXkgPSBpbnB1dDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgYWRkV2Vla1BhcnNlVG9rZW4oWydkJywgJ2UnLCAnRSddLCBmdW5jdGlvbiAoaW5wdXQsIHdlZWssIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgd2Vla1t0b2tlbl0gPSB0b0ludChpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICBmdW5jdGlvbiBwYXJzZVdlZWtkYXkoaW5wdXQsIGxvY2FsZSkge1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc05hTihpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUludChpbnB1dCwgMTApO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5wdXQgPSBsb2NhbGUud2Vla2RheXNQYXJzZShpbnB1dCk7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZUlzb1dlZWtkYXkoaW5wdXQsIGxvY2FsZSkge1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c1BhcnNlKGlucHV0KSAlIDcgfHwgNztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNOYU4oaW5wdXQpID8gbnVsbCA6IGlucHV0O1xuICAgIH1cblxuICAgIC8vIExPQ0FMRVNcbiAgICBmdW5jdGlvbiBzaGlmdFdlZWtkYXlzKHdzLCBuKSB7XG4gICAgICAgIHJldHVybiB3cy5zbGljZShuLCA3KS5jb25jYXQod3Muc2xpY2UoMCwgbikpO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TG9jYWxlV2Vla2RheXMgPVxuICAgICAgICAgICAgJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpLFxuICAgICAgICBkZWZhdWx0TG9jYWxlV2Vla2RheXNTaG9ydCA9ICdTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIGRlZmF1bHRMb2NhbGVXZWVrZGF5c01pbiA9ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgZGVmYXVsdFdlZWtkYXlzUmVnZXggPSBtYXRjaFdvcmQsXG4gICAgICAgIGRlZmF1bHRXZWVrZGF5c1Nob3J0UmVnZXggPSBtYXRjaFdvcmQsXG4gICAgICAgIGRlZmF1bHRXZWVrZGF5c01pblJlZ2V4ID0gbWF0Y2hXb3JkO1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXMobSwgZm9ybWF0KSB7XG4gICAgICAgIHZhciB3ZWVrZGF5cyA9IGlzQXJyYXkodGhpcy5fd2Vla2RheXMpXG4gICAgICAgICAgICA/IHRoaXMuX3dlZWtkYXlzXG4gICAgICAgICAgICA6IHRoaXMuX3dlZWtkYXlzW1xuICAgICAgICAgICAgICAgICAgbSAmJiBtICE9PSB0cnVlICYmIHRoaXMuX3dlZWtkYXlzLmlzRm9ybWF0LnRlc3QoZm9ybWF0KVxuICAgICAgICAgICAgICAgICAgICAgID8gJ2Zvcm1hdCdcbiAgICAgICAgICAgICAgICAgICAgICA6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgICAgICBdO1xuICAgICAgICByZXR1cm4gbSA9PT0gdHJ1ZVxuICAgICAgICAgICAgPyBzaGlmdFdlZWtkYXlzKHdlZWtkYXlzLCB0aGlzLl93ZWVrLmRvdylcbiAgICAgICAgICAgIDogbVxuICAgICAgICAgICAgPyB3ZWVrZGF5c1ttLmRheSgpXVxuICAgICAgICAgICAgOiB3ZWVrZGF5cztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVXZWVrZGF5c1Nob3J0KG0pIHtcbiAgICAgICAgcmV0dXJuIG0gPT09IHRydWVcbiAgICAgICAgICAgID8gc2hpZnRXZWVrZGF5cyh0aGlzLl93ZWVrZGF5c1Nob3J0LCB0aGlzLl93ZWVrLmRvdylcbiAgICAgICAgICAgIDogbVxuICAgICAgICAgICAgPyB0aGlzLl93ZWVrZGF5c1Nob3J0W20uZGF5KCldXG4gICAgICAgICAgICA6IHRoaXMuX3dlZWtkYXlzU2hvcnQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXNNaW4obSkge1xuICAgICAgICByZXR1cm4gbSA9PT0gdHJ1ZVxuICAgICAgICAgICAgPyBzaGlmdFdlZWtkYXlzKHRoaXMuX3dlZWtkYXlzTWluLCB0aGlzLl93ZWVrLmRvdylcbiAgICAgICAgICAgIDogbVxuICAgICAgICAgICAgPyB0aGlzLl93ZWVrZGF5c01pblttLmRheSgpXVxuICAgICAgICAgICAgOiB0aGlzLl93ZWVrZGF5c01pbjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVTdHJpY3RQYXJzZSQxKHdlZWtkYXlOYW1lLCBmb3JtYXQsIHN0cmljdCkge1xuICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgIGlpLFxuICAgICAgICAgICAgbW9tLFxuICAgICAgICAgICAgbGxjID0gd2Vla2RheU5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKCF0aGlzLl93ZWVrZGF5c1BhcnNlKSB7XG4gICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX21pbldlZWtkYXlzUGFyc2UgPSBbXTtcblxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7ICsraSkge1xuICAgICAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgMV0pLmRheShpKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9taW5XZWVrZGF5c1BhcnNlW2ldID0gdGhpcy53ZWVrZGF5c01pbihcbiAgICAgICAgICAgICAgICAgICAgbW9tLFxuICAgICAgICAgICAgICAgICAgICAnJ1xuICAgICAgICAgICAgICAgICkudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbaV0gPSB0aGlzLndlZWtkYXlzU2hvcnQoXG4gICAgICAgICAgICAgICAgICAgIG1vbSxcbiAgICAgICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICAgICApLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZVtpXSA9IHRoaXMud2Vla2RheXMobW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdHJpY3QpIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdkZGRkJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnZGRkJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnZGRkZCcpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnZGRkJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWtkYXlzUGFyc2Uod2Vla2RheU5hbWUsIGZvcm1hdCwgc3RyaWN0KSB7XG4gICAgICAgIHZhciBpLCBtb20sIHJlZ2V4O1xuXG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGVTdHJpY3RQYXJzZSQxLmNhbGwodGhpcywgd2Vla2RheU5hbWUsIGZvcm1hdCwgc3RyaWN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fd2Vla2RheXNQYXJzZSkge1xuICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9mdWxsV2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgLy8gbWFrZSB0aGUgcmVnZXggaWYgd2UgZG9uJ3QgaGF2ZSBpdCBhbHJlYWR5XG5cbiAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgMV0pLmRheShpKTtcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgIXRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW2ldKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgICAgICAgICAnXicgKyB0aGlzLndlZWtkYXlzKG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnXFxcXC4/JykgKyAnJCcsXG4gICAgICAgICAgICAgICAgICAgICdpJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW2ldID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgICAgICAgICAgJ14nICsgdGhpcy53ZWVrZGF5c1Nob3J0KG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnXFxcXC4/JykgKyAnJCcsXG4gICAgICAgICAgICAgICAgICAgICdpJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZVtpXSA9IG5ldyBSZWdFeHAoXG4gICAgICAgICAgICAgICAgICAgICdeJyArIHRoaXMud2Vla2RheXNNaW4obW9tLCAnJykucmVwbGFjZSgnLicsICdcXFxcLj8nKSArICckJyxcbiAgICAgICAgICAgICAgICAgICAgJ2knXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5fd2Vla2RheXNQYXJzZVtpXSkge1xuICAgICAgICAgICAgICAgIHJlZ2V4ID1cbiAgICAgICAgICAgICAgICAgICAgJ14nICtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53ZWVrZGF5cyhtb20sICcnKSArXG4gICAgICAgICAgICAgICAgICAgICd8XicgK1xuICAgICAgICAgICAgICAgICAgICB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJykgK1xuICAgICAgICAgICAgICAgICAgICAnfF4nICtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53ZWVrZGF5c01pbihtb20sICcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1BhcnNlW2ldID0gbmV3IFJlZ0V4cChyZWdleC5yZXBsYWNlKCcuJywgJycpLCAnaScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdGVzdCB0aGUgcmVnZXhcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBzdHJpY3QgJiZcbiAgICAgICAgICAgICAgICBmb3JtYXQgPT09ICdkZGRkJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW2ldLnRlc3Qod2Vla2RheU5hbWUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgc3RyaWN0ICYmXG4gICAgICAgICAgICAgICAgZm9ybWF0ID09PSAnZGRkJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZVtpXS50ZXN0KHdlZWtkYXlOYW1lKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIHN0cmljdCAmJlxuICAgICAgICAgICAgICAgIGZvcm1hdCA9PT0gJ2RkJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuX21pbldlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVrZGF5TmFtZSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyaWN0ICYmIHRoaXMuX3dlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVrZGF5TmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldERheU9mV2VlayhpbnB1dCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgIT0gbnVsbCA/IHRoaXMgOiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRheSA9IHRoaXMuX2lzVVRDID8gdGhpcy5fZC5nZXRVVENEYXkoKSA6IHRoaXMuX2QuZ2V0RGF5KCk7XG4gICAgICAgIGlmIChpbnB1dCAhPSBudWxsKSB7XG4gICAgICAgICAgICBpbnB1dCA9IHBhcnNlV2Vla2RheShpbnB1dCwgdGhpcy5sb2NhbGVEYXRhKCkpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkKGlucHV0IC0gZGF5LCAnZCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGRheTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldExvY2FsZURheU9mV2VlayhpbnB1dCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgIT0gbnVsbCA/IHRoaXMgOiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHdlZWtkYXkgPSAodGhpcy5kYXkoKSArIDcgLSB0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3cpICUgNztcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyB3ZWVrZGF5IDogdGhpcy5hZGQoaW5wdXQgLSB3ZWVrZGF5LCAnZCcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldElTT0RheU9mV2VlayhpbnB1dCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgIT0gbnVsbCA/IHRoaXMgOiBOYU47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBiZWhhdmVzIHRoZSBzYW1lIGFzIG1vbWVudCNkYXkgZXhjZXB0XG4gICAgICAgIC8vIGFzIGEgZ2V0dGVyLCByZXR1cm5zIDcgaW5zdGVhZCBvZiAwICgxLTcgcmFuZ2UgaW5zdGVhZCBvZiAwLTYpXG4gICAgICAgIC8vIGFzIGEgc2V0dGVyLCBzdW5kYXkgc2hvdWxkIGJlbG9uZyB0byB0aGUgcHJldmlvdXMgd2Vlay5cblxuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIHdlZWtkYXkgPSBwYXJzZUlzb1dlZWtkYXkoaW5wdXQsIHRoaXMubG9jYWxlRGF0YSgpKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRheSh0aGlzLmRheSgpICUgNyA/IHdlZWtkYXkgOiB3ZWVrZGF5IC0gNyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXkoKSB8fCA3O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd2Vla2RheXNSZWdleChpc1N0cmljdCkge1xuICAgICAgICBpZiAodGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0KSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlV2Vla2RheXNQYXJzZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzU3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNSZWdleCA9IGRlZmF1bHRXZWVrZGF5c1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXggJiYgaXNTdHJpY3RcbiAgICAgICAgICAgICAgICA/IHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXhcbiAgICAgICAgICAgICAgICA6IHRoaXMuX3dlZWtkYXlzUmVnZXg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3ZWVrZGF5c1Nob3J0UmVnZXgoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKHRoaXMuX3dlZWtkYXlzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgY29tcHV0ZVdlZWtkYXlzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cmljdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c1Nob3J0UmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleCA9IGRlZmF1bHRXZWVrZGF5c1Nob3J0UmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4ICYmIGlzU3RyaWN0XG4gICAgICAgICAgICAgICAgPyB0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXhcbiAgICAgICAgICAgICAgICA6IHRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdlZWtkYXlzTWluUmVnZXgoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKHRoaXMuX3dlZWtkYXlzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgY29tcHV0ZVdlZWtkYXlzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cmljdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNNaW5SZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzTWluUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzTWluUmVnZXggPSBkZWZhdWx0V2Vla2RheXNNaW5SZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4ICYmIGlzU3RyaWN0XG4gICAgICAgICAgICAgICAgPyB0aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4XG4gICAgICAgICAgICAgICAgOiB0aGlzLl93ZWVrZGF5c01pblJlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcHV0ZVdlZWtkYXlzUGFyc2UoKSB7XG4gICAgICAgIGZ1bmN0aW9uIGNtcExlblJldihhLCBiKSB7XG4gICAgICAgICAgICByZXR1cm4gYi5sZW5ndGggLSBhLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBtaW5QaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIHNob3J0UGllY2VzID0gW10sXG4gICAgICAgICAgICBsb25nUGllY2VzID0gW10sXG4gICAgICAgICAgICBtaXhlZFBpZWNlcyA9IFtdLFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIG1vbSxcbiAgICAgICAgICAgIG1pbnAsXG4gICAgICAgICAgICBzaG9ydHAsXG4gICAgICAgICAgICBsb25ncDtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgLy8gbWFrZSB0aGUgcmVnZXggaWYgd2UgZG9uJ3QgaGF2ZSBpdCBhbHJlYWR5XG4gICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIDFdKS5kYXkoaSk7XG4gICAgICAgICAgICBtaW5wID0gcmVnZXhFc2NhcGUodGhpcy53ZWVrZGF5c01pbihtb20sICcnKSk7XG4gICAgICAgICAgICBzaG9ydHAgPSByZWdleEVzY2FwZSh0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJykpO1xuICAgICAgICAgICAgbG9uZ3AgPSByZWdleEVzY2FwZSh0aGlzLndlZWtkYXlzKG1vbSwgJycpKTtcbiAgICAgICAgICAgIG1pblBpZWNlcy5wdXNoKG1pbnApO1xuICAgICAgICAgICAgc2hvcnRQaWVjZXMucHVzaChzaG9ydHApO1xuICAgICAgICAgICAgbG9uZ1BpZWNlcy5wdXNoKGxvbmdwKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2gobWlucCk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKHNob3J0cCk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKGxvbmdwKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBTb3J0aW5nIG1ha2VzIHN1cmUgaWYgb25lIHdlZWtkYXkgKG9yIGFiYnIpIGlzIGEgcHJlZml4IG9mIGFub3RoZXIgaXRcbiAgICAgICAgLy8gd2lsbCBtYXRjaCB0aGUgbG9uZ2VyIHBpZWNlLlxuICAgICAgICBtaW5QaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBzaG9ydFBpZWNlcy5zb3J0KGNtcExlblJldik7XG4gICAgICAgIGxvbmdQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBtaXhlZFBpZWNlcy5zb3J0KGNtcExlblJldik7XG5cbiAgICAgICAgdGhpcy5fd2Vla2RheXNSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIG1peGVkUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICAgICAgdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4ID0gdGhpcy5fd2Vla2RheXNSZWdleDtcbiAgICAgICAgdGhpcy5fd2Vla2RheXNNaW5SZWdleCA9IHRoaXMuX3dlZWtkYXlzUmVnZXg7XG5cbiAgICAgICAgdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleCA9IG5ldyBSZWdFeHAoXG4gICAgICAgICAgICAnXignICsgbG9uZ1BpZWNlcy5qb2luKCd8JykgKyAnKScsXG4gICAgICAgICAgICAnaSdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4ID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgICdeKCcgKyBzaG9ydFBpZWNlcy5qb2luKCd8JykgKyAnKScsXG4gICAgICAgICAgICAnaSdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleCA9IG5ldyBSZWdFeHAoXG4gICAgICAgICAgICAnXignICsgbWluUGllY2VzLmpvaW4oJ3wnKSArICcpJyxcbiAgICAgICAgICAgICdpJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGZ1bmN0aW9uIGhGb3JtYXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvdXJzKCkgJSAxMiB8fCAxMjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBrRm9ybWF0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3VycygpIHx8IDI0O1xuICAgIH1cblxuICAgIGFkZEZvcm1hdFRva2VuKCdIJywgWydISCcsIDJdLCAwLCAnaG91cicpO1xuICAgIGFkZEZvcm1hdFRva2VuKCdoJywgWydoaCcsIDJdLCAwLCBoRm9ybWF0KTtcbiAgICBhZGRGb3JtYXRUb2tlbignaycsIFsna2snLCAyXSwgMCwga0Zvcm1hdCk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignaG1tJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gJycgKyBoRm9ybWF0LmFwcGx5KHRoaXMpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2htbXNzJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgJycgK1xuICAgICAgICAgICAgaEZvcm1hdC5hcHBseSh0aGlzKSArXG4gICAgICAgICAgICB6ZXJvRmlsbCh0aGlzLm1pbnV0ZXMoKSwgMikgK1xuICAgICAgICAgICAgemVyb0ZpbGwodGhpcy5zZWNvbmRzKCksIDIpXG4gICAgICAgICk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignSG1tJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gJycgKyB0aGlzLmhvdXJzKCkgKyB6ZXJvRmlsbCh0aGlzLm1pbnV0ZXMoKSwgMik7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignSG1tc3MnLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAnJyArXG4gICAgICAgICAgICB0aGlzLmhvdXJzKCkgK1xuICAgICAgICAgICAgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpICtcbiAgICAgICAgICAgIHplcm9GaWxsKHRoaXMuc2Vjb25kcygpLCAyKVxuICAgICAgICApO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gbWVyaWRpZW0odG9rZW4sIGxvd2VyY2FzZSkge1xuICAgICAgICBhZGRGb3JtYXRUb2tlbih0b2tlbiwgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm1lcmlkaWVtKFxuICAgICAgICAgICAgICAgIHRoaXMuaG91cnMoKSxcbiAgICAgICAgICAgICAgICB0aGlzLm1pbnV0ZXMoKSxcbiAgICAgICAgICAgICAgICBsb3dlcmNhc2VcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG1lcmlkaWVtKCdhJywgdHJ1ZSk7XG4gICAgbWVyaWRpZW0oJ0EnLCBmYWxzZSk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ2hvdXInLCAnaCcpO1xuXG4gICAgLy8gUFJJT1JJVFlcbiAgICBhZGRVbml0UHJpb3JpdHkoJ2hvdXInLCAxMyk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBmdW5jdGlvbiBtYXRjaE1lcmlkaWVtKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5fbWVyaWRpZW1QYXJzZTtcbiAgICB9XG5cbiAgICBhZGRSZWdleFRva2VuKCdhJywgbWF0Y2hNZXJpZGllbSk7XG4gICAgYWRkUmVnZXhUb2tlbignQScsIG1hdGNoTWVyaWRpZW0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0gnLCBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2gnLCBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2snLCBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0hIJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2hoJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2trJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuXG4gICAgYWRkUmVnZXhUb2tlbignaG1tJywgbWF0Y2gzdG80KTtcbiAgICBhZGRSZWdleFRva2VuKCdobW1zcycsIG1hdGNoNXRvNik7XG4gICAgYWRkUmVnZXhUb2tlbignSG1tJywgbWF0Y2gzdG80KTtcbiAgICBhZGRSZWdleFRva2VuKCdIbW1zcycsIG1hdGNoNXRvNik7XG5cbiAgICBhZGRQYXJzZVRva2VuKFsnSCcsICdISCddLCBIT1VSKTtcbiAgICBhZGRQYXJzZVRva2VuKFsnaycsICdrayddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIGtJbnB1dCA9IHRvSW50KGlucHV0KTtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSBrSW5wdXQgPT09IDI0ID8gMCA6IGtJbnB1dDtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKFsnYScsICdBJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX2lzUG0gPSBjb25maWcuX2xvY2FsZS5pc1BNKGlucHV0KTtcbiAgICAgICAgY29uZmlnLl9tZXJpZGllbSA9IGlucHV0O1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oWydoJywgJ2hoJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBhcnJheVtIT1VSXSA9IHRvSW50KGlucHV0KTtcbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91ciA9IHRydWU7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignaG1tJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIHZhciBwb3MgPSBpbnB1dC5sZW5ndGggLSAyO1xuICAgICAgICBhcnJheVtIT1VSXSA9IHRvSW50KGlucHV0LnN1YnN0cigwLCBwb3MpKTtcbiAgICAgICAgYXJyYXlbTUlOVVRFXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MpKTtcbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91ciA9IHRydWU7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignaG1tc3MnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIHBvczEgPSBpbnB1dC5sZW5ndGggLSA0LFxuICAgICAgICAgICAgcG9zMiA9IGlucHV0Lmxlbmd0aCAtIDI7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQuc3Vic3RyKDAsIHBvczEpKTtcbiAgICAgICAgYXJyYXlbTUlOVVRFXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MxLCAyKSk7XG4gICAgICAgIGFycmF5W1NFQ09ORF0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zMikpO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5iaWdIb3VyID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdIbW0nLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIHBvcyA9IGlucHV0Lmxlbmd0aCAtIDI7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQuc3Vic3RyKDAsIHBvcykpO1xuICAgICAgICBhcnJheVtNSU5VVEVdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvcykpO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ0htbXNzJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIHZhciBwb3MxID0gaW5wdXQubGVuZ3RoIC0gNCxcbiAgICAgICAgICAgIHBvczIgPSBpbnB1dC5sZW5ndGggLSAyO1xuICAgICAgICBhcnJheVtIT1VSXSA9IHRvSW50KGlucHV0LnN1YnN0cigwLCBwb3MxKSk7XG4gICAgICAgIGFycmF5W01JTlVURV0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zMSwgMikpO1xuICAgICAgICBhcnJheVtTRUNPTkRdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvczIpKTtcbiAgICB9KTtcblxuICAgIC8vIExPQ0FMRVNcblxuICAgIGZ1bmN0aW9uIGxvY2FsZUlzUE0oaW5wdXQpIHtcbiAgICAgICAgLy8gSUU4IFF1aXJrcyBNb2RlICYgSUU3IFN0YW5kYXJkcyBNb2RlIGRvIG5vdCBhbGxvdyBhY2Nlc3Npbmcgc3RyaW5ncyBsaWtlIGFycmF5c1xuICAgICAgICAvLyBVc2luZyBjaGFyQXQgc2hvdWxkIGJlIG1vcmUgY29tcGF0aWJsZS5cbiAgICAgICAgcmV0dXJuIChpbnB1dCArICcnKS50b0xvd2VyQ2FzZSgpLmNoYXJBdCgwKSA9PT0gJ3AnO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TG9jYWxlTWVyaWRpZW1QYXJzZSA9IC9bYXBdXFwuP20/XFwuPy9pLFxuICAgICAgICAvLyBTZXR0aW5nIHRoZSBob3VyIHNob3VsZCBrZWVwIHRoZSB0aW1lLCBiZWNhdXNlIHRoZSB1c2VyIGV4cGxpY2l0bHlcbiAgICAgICAgLy8gc3BlY2lmaWVkIHdoaWNoIGhvdXIgdGhleSB3YW50LiBTbyB0cnlpbmcgdG8gbWFpbnRhaW4gdGhlIHNhbWUgaG91ciAoaW5cbiAgICAgICAgLy8gYSBuZXcgdGltZXpvbmUpIG1ha2VzIHNlbnNlLiBBZGRpbmcvc3VidHJhY3RpbmcgaG91cnMgZG9lcyBub3QgZm9sbG93XG4gICAgICAgIC8vIHRoaXMgcnVsZS5cbiAgICAgICAgZ2V0U2V0SG91ciA9IG1ha2VHZXRTZXQoJ0hvdXJzJywgdHJ1ZSk7XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVNZXJpZGllbShob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICBpZiAoaG91cnMgPiAxMSkge1xuICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAncG0nIDogJ1BNJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ2FtJyA6ICdBTSc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgYmFzZUNvbmZpZyA9IHtcbiAgICAgICAgY2FsZW5kYXI6IGRlZmF1bHRDYWxlbmRhcixcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IGRlZmF1bHRMb25nRGF0ZUZvcm1hdCxcbiAgICAgICAgaW52YWxpZERhdGU6IGRlZmF1bHRJbnZhbGlkRGF0ZSxcbiAgICAgICAgb3JkaW5hbDogZGVmYXVsdE9yZGluYWwsXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IGRlZmF1bHREYXlPZk1vbnRoT3JkaW5hbFBhcnNlLFxuICAgICAgICByZWxhdGl2ZVRpbWU6IGRlZmF1bHRSZWxhdGl2ZVRpbWUsXG5cbiAgICAgICAgbW9udGhzOiBkZWZhdWx0TG9jYWxlTW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydDogZGVmYXVsdExvY2FsZU1vbnRoc1Nob3J0LFxuXG4gICAgICAgIHdlZWs6IGRlZmF1bHRMb2NhbGVXZWVrLFxuXG4gICAgICAgIHdlZWtkYXlzOiBkZWZhdWx0TG9jYWxlV2Vla2RheXMsXG4gICAgICAgIHdlZWtkYXlzTWluOiBkZWZhdWx0TG9jYWxlV2Vla2RheXNNaW4sXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6IGRlZmF1bHRMb2NhbGVXZWVrZGF5c1Nob3J0LFxuXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IGRlZmF1bHRMb2NhbGVNZXJpZGllbVBhcnNlLFxuICAgIH07XG5cbiAgICAvLyBpbnRlcm5hbCBzdG9yYWdlIGZvciBsb2NhbGUgY29uZmlnIGZpbGVzXG4gICAgdmFyIGxvY2FsZXMgPSB7fSxcbiAgICAgICAgbG9jYWxlRmFtaWxpZXMgPSB7fSxcbiAgICAgICAgZ2xvYmFsTG9jYWxlO1xuXG4gICAgZnVuY3Rpb24gY29tbW9uUHJlZml4KGFycjEsIGFycjIpIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBtaW5sID0gTWF0aC5taW4oYXJyMS5sZW5ndGgsIGFycjIubGVuZ3RoKTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IG1pbmw7IGkgKz0gMSkge1xuICAgICAgICAgICAgaWYgKGFycjFbaV0gIT09IGFycjJbaV0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWlubDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBub3JtYWxpemVMb2NhbGUoa2V5KSB7XG4gICAgICAgIHJldHVybiBrZXkgPyBrZXkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKCdfJywgJy0nKSA6IGtleTtcbiAgICB9XG5cbiAgICAvLyBwaWNrIHRoZSBsb2NhbGUgZnJvbSB0aGUgYXJyYXlcbiAgICAvLyB0cnkgWydlbi1hdScsICdlbi1nYiddIGFzICdlbi1hdScsICdlbi1nYicsICdlbicsIGFzIGluIG1vdmUgdGhyb3VnaCB0aGUgbGlzdCB0cnlpbmcgZWFjaFxuICAgIC8vIHN1YnN0cmluZyBmcm9tIG1vc3Qgc3BlY2lmaWMgdG8gbGVhc3QsIGJ1dCBtb3ZlIHRvIHRoZSBuZXh0IGFycmF5IGl0ZW0gaWYgaXQncyBhIG1vcmUgc3BlY2lmaWMgdmFyaWFudCB0aGFuIHRoZSBjdXJyZW50IHJvb3RcbiAgICBmdW5jdGlvbiBjaG9vc2VMb2NhbGUobmFtZXMpIHtcbiAgICAgICAgdmFyIGkgPSAwLFxuICAgICAgICAgICAgaixcbiAgICAgICAgICAgIG5leHQsXG4gICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICBzcGxpdDtcblxuICAgICAgICB3aGlsZSAoaSA8IG5hbWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgc3BsaXQgPSBub3JtYWxpemVMb2NhbGUobmFtZXNbaV0pLnNwbGl0KCctJyk7XG4gICAgICAgICAgICBqID0gc3BsaXQubGVuZ3RoO1xuICAgICAgICAgICAgbmV4dCA9IG5vcm1hbGl6ZUxvY2FsZShuYW1lc1tpICsgMV0pO1xuICAgICAgICAgICAgbmV4dCA9IG5leHQgPyBuZXh0LnNwbGl0KCctJykgOiBudWxsO1xuICAgICAgICAgICAgd2hpbGUgKGogPiAwKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxlID0gbG9hZExvY2FsZShzcGxpdC5zbGljZSgwLCBqKS5qb2luKCctJykpO1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBuZXh0ICYmXG4gICAgICAgICAgICAgICAgICAgIG5leHQubGVuZ3RoID49IGogJiZcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uUHJlZml4KHNwbGl0LCBuZXh0KSA+PSBqIC0gMVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAvL3RoZSBuZXh0IGFycmF5IGl0ZW0gaXMgYmV0dGVyIHRoYW4gYSBzaGFsbG93ZXIgc3Vic3RyaW5nIG9mIHRoaXMgb25lXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBqLS07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdsb2JhbExvY2FsZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0xvY2FsZU5hbWVTYW5lKG5hbWUpIHtcbiAgICAgICAgLy8gUHJldmVudCBuYW1lcyB0aGF0IGxvb2sgbGlrZSBmaWxlc3lzdGVtIHBhdGhzLCBpLmUgY29udGFpbiAnLycgb3IgJ1xcJ1xuICAgICAgICByZXR1cm4gbmFtZS5tYXRjaCgnXlteL1xcXFxcXFxcXSokJykgIT0gbnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2FkTG9jYWxlKG5hbWUpIHtcbiAgICAgICAgdmFyIG9sZExvY2FsZSA9IG51bGwsXG4gICAgICAgICAgICBhbGlhc2VkUmVxdWlyZTtcbiAgICAgICAgLy8gVE9ETzogRmluZCBhIGJldHRlciB3YXkgdG8gcmVnaXN0ZXIgYW5kIGxvYWQgYWxsIHRoZSBsb2NhbGVzIGluIE5vZGVcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgbG9jYWxlc1tuYW1lXSA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgICAgbW9kdWxlICYmXG4gICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyAmJlxuICAgICAgICAgICAgaXNMb2NhbGVOYW1lU2FuZShuYW1lKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgb2xkTG9jYWxlID0gZ2xvYmFsTG9jYWxlLl9hYmJyO1xuICAgICAgICAgICAgICAgIGFsaWFzZWRSZXF1aXJlID0gcmVxdWlyZTtcbiAgICAgICAgICAgICAgICBhbGlhc2VkUmVxdWlyZSgnLi9sb2NhbGUvJyArIG5hbWUpO1xuICAgICAgICAgICAgICAgIGdldFNldEdsb2JhbExvY2FsZShvbGRMb2NhbGUpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIC8vIG1hcmsgYXMgbm90IGZvdW5kIHRvIGF2b2lkIHJlcGVhdGluZyBleHBlbnNpdmUgZmlsZSByZXF1aXJlIGNhbGwgY2F1c2luZyBoaWdoIENQVVxuICAgICAgICAgICAgICAgIC8vIHdoZW4gdHJ5aW5nIHRvIGZpbmQgZW4tVVMsIGVuX1VTLCBlbi11cyBmb3IgZXZlcnkgZm9ybWF0IGNhbGxcbiAgICAgICAgICAgICAgICBsb2NhbGVzW25hbWVdID0gbnVsbDsgLy8gbnVsbCBtZWFucyBub3QgZm91bmRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbG9jYWxlc1tuYW1lXTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgbG9hZCBsb2NhbGUgYW5kIHRoZW4gc2V0IHRoZSBnbG9iYWwgbG9jYWxlLiAgSWZcbiAgICAvLyBubyBhcmd1bWVudHMgYXJlIHBhc3NlZCBpbiwgaXQgd2lsbCBzaW1wbHkgcmV0dXJuIHRoZSBjdXJyZW50IGdsb2JhbFxuICAgIC8vIGxvY2FsZSBrZXkuXG4gICAgZnVuY3Rpb24gZ2V0U2V0R2xvYmFsTG9jYWxlKGtleSwgdmFsdWVzKSB7XG4gICAgICAgIHZhciBkYXRhO1xuICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWVzKSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBnZXRMb2NhbGUoa2V5KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGF0YSA9IGRlZmluZUxvY2FsZShrZXksIHZhbHVlcyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgLy8gbW9tZW50LmR1cmF0aW9uLl9sb2NhbGUgPSBtb21lbnQuX2xvY2FsZSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgZ2xvYmFsTG9jYWxlID0gZGF0YTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiBjb25zb2xlLndhcm4pIHtcbiAgICAgICAgICAgICAgICAgICAgLy93YXJuIHVzZXIgaWYgYXJndW1lbnRzIGFyZSBwYXNzZWQgYnV0IHRoZSBsb2NhbGUgY291bGQgbm90IGJlIHNldFxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgICAgICAgICAnTG9jYWxlICcgKyBrZXkgKyAnIG5vdCBmb3VuZC4gRGlkIHlvdSBmb3JnZXQgdG8gbG9hZCBpdD8nXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdsb2JhbExvY2FsZS5fYWJicjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWZpbmVMb2NhbGUobmFtZSwgY29uZmlnKSB7XG4gICAgICAgIGlmIChjb25maWcgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHZhciBsb2NhbGUsXG4gICAgICAgICAgICAgICAgcGFyZW50Q29uZmlnID0gYmFzZUNvbmZpZztcbiAgICAgICAgICAgIGNvbmZpZy5hYmJyID0gbmFtZTtcbiAgICAgICAgICAgIGlmIChsb2NhbGVzW25hbWVdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBkZXByZWNhdGVTaW1wbGUoXG4gICAgICAgICAgICAgICAgICAgICdkZWZpbmVMb2NhbGVPdmVycmlkZScsXG4gICAgICAgICAgICAgICAgICAgICd1c2UgbW9tZW50LnVwZGF0ZUxvY2FsZShsb2NhbGVOYW1lLCBjb25maWcpIHRvIGNoYW5nZSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhbiBleGlzdGluZyBsb2NhbGUuIG1vbWVudC5kZWZpbmVMb2NhbGUobG9jYWxlTmFtZSwgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29uZmlnKSBzaG91bGQgb25seSBiZSB1c2VkIGZvciBjcmVhdGluZyBhIG5ldyBsb2NhbGUgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvZGVmaW5lLWxvY2FsZS8gZm9yIG1vcmUgaW5mby4nXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSBsb2NhbGVzW25hbWVdLl9jb25maWc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbmZpZy5wYXJlbnRMb2NhbGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29uZmlnID0gbG9jYWxlc1tjb25maWcucGFyZW50TG9jYWxlXS5fY29uZmlnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZSA9IGxvYWRMb2NhbGUoY29uZmlnLnBhcmVudExvY2FsZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29uZmlnID0gbG9jYWxlLl9jb25maWc7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxvY2FsZUZhbWlsaWVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlRmFtaWxpZXNbY29uZmlnLnBhcmVudExvY2FsZV0gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZUZhbWlsaWVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnOiBjb25maWcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbG9jYWxlc1tuYW1lXSA9IG5ldyBMb2NhbGUobWVyZ2VDb25maWdzKHBhcmVudENvbmZpZywgY29uZmlnKSk7XG5cbiAgICAgICAgICAgIGlmIChsb2NhbGVGYW1pbGllc1tuYW1lXSkge1xuICAgICAgICAgICAgICAgIGxvY2FsZUZhbWlsaWVzW25hbWVdLmZvckVhY2goZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVmaW5lTG9jYWxlKHgubmFtZSwgeC5jb25maWcpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBiYWNrd2FyZHMgY29tcGF0IGZvciBub3c6IGFsc28gc2V0IHRoZSBsb2NhbGVcbiAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB3ZSBzZXQgdGhlIGxvY2FsZSBBRlRFUiBhbGwgY2hpbGQgbG9jYWxlcyBoYXZlIGJlZW5cbiAgICAgICAgICAgIC8vIGNyZWF0ZWQsIHNvIHdlIHdvbid0IGVuZCB1cCB3aXRoIHRoZSBjaGlsZCBsb2NhbGUgc2V0LlxuICAgICAgICAgICAgZ2V0U2V0R2xvYmFsTG9jYWxlKG5hbWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlc1tuYW1lXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHVzZWZ1bCBmb3IgdGVzdGluZ1xuICAgICAgICAgICAgZGVsZXRlIGxvY2FsZXNbbmFtZV07XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVwZGF0ZUxvY2FsZShuYW1lLCBjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgbG9jYWxlLFxuICAgICAgICAgICAgICAgIHRtcExvY2FsZSxcbiAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSBiYXNlQ29uZmlnO1xuXG4gICAgICAgICAgICBpZiAobG9jYWxlc1tuYW1lXSAhPSBudWxsICYmIGxvY2FsZXNbbmFtZV0ucGFyZW50TG9jYWxlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgZXhpc3RpbmcgY2hpbGQgbG9jYWxlIGluLXBsYWNlIHRvIGF2b2lkIG1lbW9yeS1sZWFrc1xuICAgICAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0uc2V0KG1lcmdlQ29uZmlncyhsb2NhbGVzW25hbWVdLl9jb25maWcsIGNvbmZpZykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBNRVJHRVxuICAgICAgICAgICAgICAgIHRtcExvY2FsZSA9IGxvYWRMb2NhbGUobmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKHRtcExvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IHRtcExvY2FsZS5fY29uZmlnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25maWcgPSBtZXJnZUNvbmZpZ3MocGFyZW50Q29uZmlnLCBjb25maWcpO1xuICAgICAgICAgICAgICAgIGlmICh0bXBMb2NhbGUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGVMb2NhbGUgaXMgY2FsbGVkIGZvciBjcmVhdGluZyBhIG5ldyBsb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgLy8gU2V0IGFiYnIgc28gaXQgd2lsbCBoYXZlIGEgbmFtZSAoZ2V0dGVycyByZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgLy8gdW5kZWZpbmVkIG90aGVyd2lzZSkuXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5hYmJyID0gbmFtZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbG9jYWxlID0gbmV3IExvY2FsZShjb25maWcpO1xuICAgICAgICAgICAgICAgIGxvY2FsZS5wYXJlbnRMb2NhbGUgPSBsb2NhbGVzW25hbWVdO1xuICAgICAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0gPSBsb2NhbGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGJhY2t3YXJkcyBjb21wYXQgZm9yIG5vdzogYWxzbyBzZXQgdGhlIGxvY2FsZVxuICAgICAgICAgICAgZ2V0U2V0R2xvYmFsTG9jYWxlKG5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gcGFzcyBudWxsIGZvciBjb25maWcgdG8gdW51cGRhdGUsIHVzZWZ1bCBmb3IgdGVzdHNcbiAgICAgICAgICAgIGlmIChsb2NhbGVzW25hbWVdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAobG9jYWxlc1tuYW1lXS5wYXJlbnRMb2NhbGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBsb2NhbGVzW25hbWVdID0gbG9jYWxlc1tuYW1lXS5wYXJlbnRMb2NhbGU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuYW1lID09PSBnZXRTZXRHbG9iYWxMb2NhbGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U2V0R2xvYmFsTG9jYWxlKG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsb2NhbGVzW25hbWVdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGxvY2FsZXNbbmFtZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2NhbGVzW25hbWVdO1xuICAgIH1cblxuICAgIC8vIHJldHVybnMgbG9jYWxlIGRhdGFcbiAgICBmdW5jdGlvbiBnZXRMb2NhbGUoa2V5KSB7XG4gICAgICAgIHZhciBsb2NhbGU7XG5cbiAgICAgICAgaWYgKGtleSAmJiBrZXkuX2xvY2FsZSAmJiBrZXkuX2xvY2FsZS5fYWJicikge1xuICAgICAgICAgICAga2V5ID0ga2V5Ll9sb2NhbGUuX2FiYnI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWtleSkge1xuICAgICAgICAgICAgcmV0dXJuIGdsb2JhbExvY2FsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNBcnJheShrZXkpKSB7XG4gICAgICAgICAgICAvL3Nob3J0LWNpcmN1aXQgZXZlcnl0aGluZyBlbHNlXG4gICAgICAgICAgICBsb2NhbGUgPSBsb2FkTG9jYWxlKGtleSk7XG4gICAgICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGtleSA9IFtrZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNob29zZUxvY2FsZShrZXkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RMb2NhbGVzKCkge1xuICAgICAgICByZXR1cm4ga2V5cyhsb2NhbGVzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja092ZXJmbG93KG0pIHtcbiAgICAgICAgdmFyIG92ZXJmbG93LFxuICAgICAgICAgICAgYSA9IG0uX2E7XG5cbiAgICAgICAgaWYgKGEgJiYgZ2V0UGFyc2luZ0ZsYWdzKG0pLm92ZXJmbG93ID09PSAtMikge1xuICAgICAgICAgICAgb3ZlcmZsb3cgPVxuICAgICAgICAgICAgICAgIGFbTU9OVEhdIDwgMCB8fCBhW01PTlRIXSA+IDExXG4gICAgICAgICAgICAgICAgICAgID8gTU9OVEhcbiAgICAgICAgICAgICAgICAgICAgOiBhW0RBVEVdIDwgMSB8fCBhW0RBVEVdID4gZGF5c0luTW9udGgoYVtZRUFSXSwgYVtNT05USF0pXG4gICAgICAgICAgICAgICAgICAgID8gREFURVxuICAgICAgICAgICAgICAgICAgICA6IGFbSE9VUl0gPCAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgYVtIT1VSXSA+IDI0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgKGFbSE9VUl0gPT09IDI0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChhW01JTlVURV0gIT09IDAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFbU0VDT05EXSAhPT0gMCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYVtNSUxMSVNFQ09ORF0gIT09IDApKVxuICAgICAgICAgICAgICAgICAgICA/IEhPVVJcbiAgICAgICAgICAgICAgICAgICAgOiBhW01JTlVURV0gPCAwIHx8IGFbTUlOVVRFXSA+IDU5XG4gICAgICAgICAgICAgICAgICAgID8gTUlOVVRFXG4gICAgICAgICAgICAgICAgICAgIDogYVtTRUNPTkRdIDwgMCB8fCBhW1NFQ09ORF0gPiA1OVxuICAgICAgICAgICAgICAgICAgICA/IFNFQ09ORFxuICAgICAgICAgICAgICAgICAgICA6IGFbTUlMTElTRUNPTkRdIDwgMCB8fCBhW01JTExJU0VDT05EXSA+IDk5OVxuICAgICAgICAgICAgICAgICAgICA/IE1JTExJU0VDT05EXG4gICAgICAgICAgICAgICAgICAgIDogLTE7XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MobSkuX292ZXJmbG93RGF5T2ZZZWFyICYmXG4gICAgICAgICAgICAgICAgKG92ZXJmbG93IDwgWUVBUiB8fCBvdmVyZmxvdyA+IERBVEUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IERBVEU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZ2V0UGFyc2luZ0ZsYWdzKG0pLl9vdmVyZmxvd1dlZWtzICYmIG92ZXJmbG93ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIG92ZXJmbG93ID0gV0VFSztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChnZXRQYXJzaW5nRmxhZ3MobSkuX292ZXJmbG93V2Vla2RheSAmJiBvdmVyZmxvdyA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IFdFRUtEQVk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhtKS5vdmVyZmxvdyA9IG92ZXJmbG93O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgLy8gaXNvIDg2MDEgcmVnZXhcbiAgICAvLyAwMDAwLTAwLTAwIDAwMDAtVzAwIG9yIDAwMDAtVzAwLTAgKyBUICsgMDAgb3IgMDA6MDAgb3IgMDA6MDA6MDAgb3IgMDA6MDA6MDAuMDAwICsgKzAwOjAwIG9yICswMDAwIG9yICswMClcbiAgICB2YXIgZXh0ZW5kZWRJc29SZWdleCA9XG4gICAgICAgICAgICAvXlxccyooKD86WystXVxcZHs2fXxcXGR7NH0pLSg/OlxcZFxcZC1cXGRcXGR8V1xcZFxcZC1cXGR8V1xcZFxcZHxcXGRcXGRcXGR8XFxkXFxkKSkoPzooVHwgKShcXGRcXGQoPzo6XFxkXFxkKD86OlxcZFxcZCg/OlsuLF1cXGQrKT8pPyk/KShbKy1dXFxkXFxkKD86Oj9cXGRcXGQpP3xcXHMqWik/KT8kLyxcbiAgICAgICAgYmFzaWNJc29SZWdleCA9XG4gICAgICAgICAgICAvXlxccyooKD86WystXVxcZHs2fXxcXGR7NH0pKD86XFxkXFxkXFxkXFxkfFdcXGRcXGRcXGR8V1xcZFxcZHxcXGRcXGRcXGR8XFxkXFxkfCkpKD86KFR8ICkoXFxkXFxkKD86XFxkXFxkKD86XFxkXFxkKD86Wy4sXVxcZCspPyk/KT8pKFsrLV1cXGRcXGQoPzo6P1xcZFxcZCk/fFxccypaKT8pPyQvLFxuICAgICAgICB0elJlZ2V4ID0gL1p8WystXVxcZFxcZCg/Ojo/XFxkXFxkKT8vLFxuICAgICAgICBpc29EYXRlcyA9IFtcbiAgICAgICAgICAgIFsnWVlZWVlZLU1NLUREJywgL1srLV1cXGR7Nn0tXFxkXFxkLVxcZFxcZC9dLFxuICAgICAgICAgICAgWydZWVlZLU1NLUREJywgL1xcZHs0fS1cXGRcXGQtXFxkXFxkL10sXG4gICAgICAgICAgICBbJ0dHR0ctW1ddV1ctRScsIC9cXGR7NH0tV1xcZFxcZC1cXGQvXSxcbiAgICAgICAgICAgIFsnR0dHRy1bV11XVycsIC9cXGR7NH0tV1xcZFxcZC8sIGZhbHNlXSxcbiAgICAgICAgICAgIFsnWVlZWS1EREQnLCAvXFxkezR9LVxcZHszfS9dLFxuICAgICAgICAgICAgWydZWVlZLU1NJywgL1xcZHs0fS1cXGRcXGQvLCBmYWxzZV0sXG4gICAgICAgICAgICBbJ1lZWVlZWU1NREQnLCAvWystXVxcZHsxMH0vXSxcbiAgICAgICAgICAgIFsnWVlZWU1NREQnLCAvXFxkezh9L10sXG4gICAgICAgICAgICBbJ0dHR0dbV11XV0UnLCAvXFxkezR9V1xcZHszfS9dLFxuICAgICAgICAgICAgWydHR0dHW1ddV1cnLCAvXFxkezR9V1xcZHsyfS8sIGZhbHNlXSxcbiAgICAgICAgICAgIFsnWVlZWURERCcsIC9cXGR7N30vXSxcbiAgICAgICAgICAgIFsnWVlZWU1NJywgL1xcZHs2fS8sIGZhbHNlXSxcbiAgICAgICAgICAgIFsnWVlZWScsIC9cXGR7NH0vLCBmYWxzZV0sXG4gICAgICAgIF0sXG4gICAgICAgIC8vIGlzbyB0aW1lIGZvcm1hdHMgYW5kIHJlZ2V4ZXNcbiAgICAgICAgaXNvVGltZXMgPSBbXG4gICAgICAgICAgICBbJ0hIOm1tOnNzLlNTU1MnLCAvXFxkXFxkOlxcZFxcZDpcXGRcXGRcXC5cXGQrL10sXG4gICAgICAgICAgICBbJ0hIOm1tOnNzLFNTU1MnLCAvXFxkXFxkOlxcZFxcZDpcXGRcXGQsXFxkKy9dLFxuICAgICAgICAgICAgWydISDptbTpzcycsIC9cXGRcXGQ6XFxkXFxkOlxcZFxcZC9dLFxuICAgICAgICAgICAgWydISDptbScsIC9cXGRcXGQ6XFxkXFxkL10sXG4gICAgICAgICAgICBbJ0hIbW1zcy5TU1NTJywgL1xcZFxcZFxcZFxcZFxcZFxcZFxcLlxcZCsvXSxcbiAgICAgICAgICAgIFsnSEhtbXNzLFNTU1MnLCAvXFxkXFxkXFxkXFxkXFxkXFxkLFxcZCsvXSxcbiAgICAgICAgICAgIFsnSEhtbXNzJywgL1xcZFxcZFxcZFxcZFxcZFxcZC9dLFxuICAgICAgICAgICAgWydISG1tJywgL1xcZFxcZFxcZFxcZC9dLFxuICAgICAgICAgICAgWydISCcsIC9cXGRcXGQvXSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNwTmV0SnNvblJlZ2V4ID0gL15cXC8/RGF0ZVxcKCgtP1xcZCspL2ksXG4gICAgICAgIC8vIFJGQyAyODIyIHJlZ2V4OiBGb3IgZGV0YWlscyBzZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI4MjIjc2VjdGlvbi0zLjNcbiAgICAgICAgcmZjMjgyMiA9XG4gICAgICAgICAgICAvXig/OihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLD9cXHMpPyhcXGR7MSwyfSlcXHMoSmFufEZlYnxNYXJ8QXByfE1heXxKdW58SnVsfEF1Z3xTZXB8T2N0fE5vdnxEZWMpXFxzKFxcZHsyLDR9KVxccyhcXGRcXGQpOihcXGRcXGQpKD86OihcXGRcXGQpKT9cXHMoPzooVVR8R01UfFtFQ01QXVtTRF1UKXwoW1p6XSl8KFsrLV1cXGR7NH0pKSQvLFxuICAgICAgICBvYnNPZmZzZXRzID0ge1xuICAgICAgICAgICAgVVQ6IDAsXG4gICAgICAgICAgICBHTVQ6IDAsXG4gICAgICAgICAgICBFRFQ6IC00ICogNjAsXG4gICAgICAgICAgICBFU1Q6IC01ICogNjAsXG4gICAgICAgICAgICBDRFQ6IC01ICogNjAsXG4gICAgICAgICAgICBDU1Q6IC02ICogNjAsXG4gICAgICAgICAgICBNRFQ6IC02ICogNjAsXG4gICAgICAgICAgICBNU1Q6IC03ICogNjAsXG4gICAgICAgICAgICBQRFQ6IC03ICogNjAsXG4gICAgICAgICAgICBQU1Q6IC04ICogNjAsXG4gICAgICAgIH07XG5cbiAgICAvLyBkYXRlIGZyb20gaXNvIGZvcm1hdFxuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21JU08oY29uZmlnKSB7XG4gICAgICAgIHZhciBpLFxuICAgICAgICAgICAgbCxcbiAgICAgICAgICAgIHN0cmluZyA9IGNvbmZpZy5faSxcbiAgICAgICAgICAgIG1hdGNoID0gZXh0ZW5kZWRJc29SZWdleC5leGVjKHN0cmluZykgfHwgYmFzaWNJc29SZWdleC5leGVjKHN0cmluZyksXG4gICAgICAgICAgICBhbGxvd1RpbWUsXG4gICAgICAgICAgICBkYXRlRm9ybWF0LFxuICAgICAgICAgICAgdGltZUZvcm1hdCxcbiAgICAgICAgICAgIHR6Rm9ybWF0LFxuICAgICAgICAgICAgaXNvRGF0ZXNMZW4gPSBpc29EYXRlcy5sZW5ndGgsXG4gICAgICAgICAgICBpc29UaW1lc0xlbiA9IGlzb1RpbWVzLmxlbmd0aDtcblxuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmlzbyA9IHRydWU7XG4gICAgICAgICAgICBmb3IgKGkgPSAwLCBsID0gaXNvRGF0ZXNMZW47IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNvRGF0ZXNbaV1bMV0uZXhlYyhtYXRjaFsxXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdCA9IGlzb0RhdGVzW2ldWzBdO1xuICAgICAgICAgICAgICAgICAgICBhbGxvd1RpbWUgPSBpc29EYXRlc1tpXVsyXSAhPT0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkYXRlRm9ybWF0ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWF0Y2hbM10pIHtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBsID0gaXNvVGltZXNMZW47IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzb1RpbWVzW2ldWzFdLmV4ZWMobWF0Y2hbM10pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXRjaFsyXSBzaG91bGQgYmUgJ1QnIG9yIHNwYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lRm9ybWF0ID0gKG1hdGNoWzJdIHx8ICcgJykgKyBpc29UaW1lc1tpXVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aW1lRm9ybWF0ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWFsbG93VGltZSAmJiB0aW1lRm9ybWF0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWF0Y2hbNF0pIHtcbiAgICAgICAgICAgICAgICBpZiAodHpSZWdleC5leGVjKG1hdGNoWzRdKSkge1xuICAgICAgICAgICAgICAgICAgICB0ekZvcm1hdCA9ICdaJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbmZpZy5fZiA9IGRhdGVGb3JtYXQgKyAodGltZUZvcm1hdCB8fCAnJykgKyAodHpGb3JtYXQgfHwgJycpO1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZ0FuZEZvcm1hdChjb25maWcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBleHRyYWN0RnJvbVJGQzI4MjJTdHJpbmdzKFxuICAgICAgICB5ZWFyU3RyLFxuICAgICAgICBtb250aFN0cixcbiAgICAgICAgZGF5U3RyLFxuICAgICAgICBob3VyU3RyLFxuICAgICAgICBtaW51dGVTdHIsXG4gICAgICAgIHNlY29uZFN0clxuICAgICkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gW1xuICAgICAgICAgICAgdW50cnVuY2F0ZVllYXIoeWVhclN0ciksXG4gICAgICAgICAgICBkZWZhdWx0TG9jYWxlTW9udGhzU2hvcnQuaW5kZXhPZihtb250aFN0ciksXG4gICAgICAgICAgICBwYXJzZUludChkYXlTdHIsIDEwKSxcbiAgICAgICAgICAgIHBhcnNlSW50KGhvdXJTdHIsIDEwKSxcbiAgICAgICAgICAgIHBhcnNlSW50KG1pbnV0ZVN0ciwgMTApLFxuICAgICAgICBdO1xuXG4gICAgICAgIGlmIChzZWNvbmRTdHIpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHBhcnNlSW50KHNlY29uZFN0ciwgMTApKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdW50cnVuY2F0ZVllYXIoeWVhclN0cikge1xuICAgICAgICB2YXIgeWVhciA9IHBhcnNlSW50KHllYXJTdHIsIDEwKTtcbiAgICAgICAgaWYgKHllYXIgPD0gNDkpIHtcbiAgICAgICAgICAgIHJldHVybiAyMDAwICsgeWVhcjtcbiAgICAgICAgfSBlbHNlIGlmICh5ZWFyIDw9IDk5OSkge1xuICAgICAgICAgICAgcmV0dXJuIDE5MDAgKyB5ZWFyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB5ZWFyO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByZXByb2Nlc3NSRkMyODIyKHMpIHtcbiAgICAgICAgLy8gUmVtb3ZlIGNvbW1lbnRzIGFuZCBmb2xkaW5nIHdoaXRlc3BhY2UgYW5kIHJlcGxhY2UgbXVsdGlwbGUtc3BhY2VzIHdpdGggYSBzaW5nbGUgc3BhY2VcbiAgICAgICAgcmV0dXJuIHNcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXChbXigpXSpcXCl8W1xcblxcdF0vZywgJyAnKVxuICAgICAgICAgICAgLnJlcGxhY2UoLyhcXHNcXHMrKS9nLCAnICcpXG4gICAgICAgICAgICAucmVwbGFjZSgvXlxcc1xccyovLCAnJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXHNcXHMqJC8sICcnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja1dlZWtkYXkod2Vla2RheVN0ciwgcGFyc2VkSW5wdXQsIGNvbmZpZykge1xuICAgICAgICBpZiAod2Vla2RheVN0cikge1xuICAgICAgICAgICAgLy8gVE9ETzogUmVwbGFjZSB0aGUgdmFuaWxsYSBKUyBEYXRlIG9iamVjdCB3aXRoIGFuIGluZGVwZW5kZW50IGRheS1vZi13ZWVrIGNoZWNrLlxuICAgICAgICAgICAgdmFyIHdlZWtkYXlQcm92aWRlZCA9IGRlZmF1bHRMb2NhbGVXZWVrZGF5c1Nob3J0LmluZGV4T2Yod2Vla2RheVN0ciksXG4gICAgICAgICAgICAgICAgd2Vla2RheUFjdHVhbCA9IG5ldyBEYXRlKFxuICAgICAgICAgICAgICAgICAgICBwYXJzZWRJbnB1dFswXSxcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkSW5wdXRbMV0sXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZElucHV0WzJdXG4gICAgICAgICAgICAgICAgKS5nZXREYXkoKTtcbiAgICAgICAgICAgIGlmICh3ZWVrZGF5UHJvdmlkZWQgIT09IHdlZWtkYXlBY3R1YWwpIHtcbiAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS53ZWVrZGF5TWlzbWF0Y2ggPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjYWxjdWxhdGVPZmZzZXQob2JzT2Zmc2V0LCBtaWxpdGFyeU9mZnNldCwgbnVtT2Zmc2V0KSB7XG4gICAgICAgIGlmIChvYnNPZmZzZXQpIHtcbiAgICAgICAgICAgIHJldHVybiBvYnNPZmZzZXRzW29ic09mZnNldF07XG4gICAgICAgIH0gZWxzZSBpZiAobWlsaXRhcnlPZmZzZXQpIHtcbiAgICAgICAgICAgIC8vIHRoZSBvbmx5IGFsbG93ZWQgbWlsaXRhcnkgdHogaXMgWlxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBwYXJzZUludChudW1PZmZzZXQsIDEwKSxcbiAgICAgICAgICAgICAgICBtID0gaG0gJSAxMDAsXG4gICAgICAgICAgICAgICAgaCA9IChobSAtIG0pIC8gMTAwO1xuICAgICAgICAgICAgcmV0dXJuIGggKiA2MCArIG07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkYXRlIGFuZCB0aW1lIGZyb20gcmVmIDI4MjIgZm9ybWF0XG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbVJGQzI4MjIoY29uZmlnKSB7XG4gICAgICAgIHZhciBtYXRjaCA9IHJmYzI4MjIuZXhlYyhwcmVwcm9jZXNzUkZDMjgyMihjb25maWcuX2kpKSxcbiAgICAgICAgICAgIHBhcnNlZEFycmF5O1xuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIHBhcnNlZEFycmF5ID0gZXh0cmFjdEZyb21SRkMyODIyU3RyaW5ncyhcbiAgICAgICAgICAgICAgICBtYXRjaFs0XSxcbiAgICAgICAgICAgICAgICBtYXRjaFszXSxcbiAgICAgICAgICAgICAgICBtYXRjaFsyXSxcbiAgICAgICAgICAgICAgICBtYXRjaFs1XSxcbiAgICAgICAgICAgICAgICBtYXRjaFs2XSxcbiAgICAgICAgICAgICAgICBtYXRjaFs3XVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICghY2hlY2tXZWVrZGF5KG1hdGNoWzFdLCBwYXJzZWRBcnJheSwgY29uZmlnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uZmlnLl9hID0gcGFyc2VkQXJyYXk7XG4gICAgICAgICAgICBjb25maWcuX3R6bSA9IGNhbGN1bGF0ZU9mZnNldChtYXRjaFs4XSwgbWF0Y2hbOV0sIG1hdGNoWzEwXSk7XG5cbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IGNyZWF0ZVVUQ0RhdGUuYXBwbHkobnVsbCwgY29uZmlnLl9hKTtcbiAgICAgICAgICAgIGNvbmZpZy5fZC5zZXRVVENNaW51dGVzKGNvbmZpZy5fZC5nZXRVVENNaW51dGVzKCkgLSBjb25maWcuX3R6bSk7XG5cbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnJmYzI4MjIgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkYXRlIGZyb20gMSkgQVNQLk5FVCwgMikgSVNPLCAzKSBSRkMgMjgyMiBmb3JtYXRzLCBvciA0KSBvcHRpb25hbCBmYWxsYmFjayBpZiBwYXJzaW5nIGlzbid0IHN0cmljdFxuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21TdHJpbmcoY29uZmlnKSB7XG4gICAgICAgIHZhciBtYXRjaGVkID0gYXNwTmV0SnNvblJlZ2V4LmV4ZWMoY29uZmlnLl9pKTtcbiAgICAgICAgaWYgKG1hdGNoZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKCttYXRjaGVkWzFdKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbmZpZ0Zyb21JU08oY29uZmlnKTtcbiAgICAgICAgaWYgKGNvbmZpZy5faXNWYWxpZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBjb25maWcuX2lzVmFsaWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25maWdGcm9tUkZDMjgyMihjb25maWcpO1xuICAgICAgICBpZiAoY29uZmlnLl9pc1ZhbGlkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgZGVsZXRlIGNvbmZpZy5faXNWYWxpZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcuX3N0cmljdCkge1xuICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBGaW5hbCBhdHRlbXB0LCB1c2UgSW5wdXQgRmFsbGJhY2tcbiAgICAgICAgICAgIGhvb2tzLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKGNvbmZpZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBob29rcy5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjayA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ3ZhbHVlIHByb3ZpZGVkIGlzIG5vdCBpbiBhIHJlY29nbml6ZWQgUkZDMjgyMiBvciBJU08gZm9ybWF0LiBtb21lbnQgY29uc3RydWN0aW9uIGZhbGxzIGJhY2sgdG8ganMgRGF0ZSgpLCAnICtcbiAgICAgICAgICAgICd3aGljaCBpcyBub3QgcmVsaWFibGUgYWNyb3NzIGFsbCBicm93c2VycyBhbmQgdmVyc2lvbnMuIE5vbiBSRkMyODIyL0lTTyBkYXRlIGZvcm1hdHMgYXJlICcgK1xuICAgICAgICAgICAgJ2Rpc2NvdXJhZ2VkLiBQbGVhc2UgcmVmZXIgdG8gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9qcy1kYXRlLyBmb3IgbW9yZSBpbmZvLicsXG4gICAgICAgIGZ1bmN0aW9uIChjb25maWcpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKGNvbmZpZy5faSArIChjb25maWcuX3VzZVVUQyA/ICcgVVRDJyA6ICcnKSk7XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gUGljayB0aGUgZmlyc3QgZGVmaW5lZCBvZiB0d28gb3IgdGhyZWUgYXJndW1lbnRzLlxuICAgIGZ1bmN0aW9uIGRlZmF1bHRzKGEsIGIsIGMpIHtcbiAgICAgICAgaWYgKGEgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGIgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3VycmVudERhdGVBcnJheShjb25maWcpIHtcbiAgICAgICAgLy8gaG9va3MgaXMgYWN0dWFsbHkgdGhlIGV4cG9ydGVkIG1vbWVudCBvYmplY3RcbiAgICAgICAgdmFyIG5vd1ZhbHVlID0gbmV3IERhdGUoaG9va3Mubm93KCkpO1xuICAgICAgICBpZiAoY29uZmlnLl91c2VVVEMpIHtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgbm93VmFsdWUuZ2V0VVRDRnVsbFllYXIoKSxcbiAgICAgICAgICAgICAgICBub3dWYWx1ZS5nZXRVVENNb250aCgpLFxuICAgICAgICAgICAgICAgIG5vd1ZhbHVlLmdldFVUQ0RhdGUoKSxcbiAgICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtub3dWYWx1ZS5nZXRGdWxsWWVhcigpLCBub3dWYWx1ZS5nZXRNb250aCgpLCBub3dWYWx1ZS5nZXREYXRlKCldO1xuICAgIH1cblxuICAgIC8vIGNvbnZlcnQgYW4gYXJyYXkgdG8gYSBkYXRlLlxuICAgIC8vIHRoZSBhcnJheSBzaG91bGQgbWlycm9yIHRoZSBwYXJhbWV0ZXJzIGJlbG93XG4gICAgLy8gbm90ZTogYWxsIHZhbHVlcyBwYXN0IHRoZSB5ZWFyIGFyZSBvcHRpb25hbCBhbmQgd2lsbCBkZWZhdWx0IHRvIHRoZSBsb3dlc3QgcG9zc2libGUgdmFsdWUuXG4gICAgLy8gW3llYXIsIG1vbnRoLCBkYXkgLCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmRdXG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbUFycmF5KGNvbmZpZykge1xuICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgICBpbnB1dCA9IFtdLFxuICAgICAgICAgICAgY3VycmVudERhdGUsXG4gICAgICAgICAgICBleHBlY3RlZFdlZWtkYXksXG4gICAgICAgICAgICB5ZWFyVG9Vc2U7XG5cbiAgICAgICAgaWYgKGNvbmZpZy5fZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudERhdGUgPSBjdXJyZW50RGF0ZUFycmF5KGNvbmZpZyk7XG5cbiAgICAgICAgLy9jb21wdXRlIGRheSBvZiB0aGUgeWVhciBmcm9tIHdlZWtzIGFuZCB3ZWVrZGF5c1xuICAgICAgICBpZiAoY29uZmlnLl93ICYmIGNvbmZpZy5fYVtEQVRFXSA9PSBudWxsICYmIGNvbmZpZy5fYVtNT05USF0gPT0gbnVsbCkge1xuICAgICAgICAgICAgZGF5T2ZZZWFyRnJvbVdlZWtJbmZvKGNvbmZpZyk7XG4gICAgICAgIH1cblxuICAgICAgICAvL2lmIHRoZSBkYXkgb2YgdGhlIHllYXIgaXMgc2V0LCBmaWd1cmUgb3V0IHdoYXQgaXQgaXNcbiAgICAgICAgaWYgKGNvbmZpZy5fZGF5T2ZZZWFyICE9IG51bGwpIHtcbiAgICAgICAgICAgIHllYXJUb1VzZSA9IGRlZmF1bHRzKGNvbmZpZy5fYVtZRUFSXSwgY3VycmVudERhdGVbWUVBUl0pO1xuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgY29uZmlnLl9kYXlPZlllYXIgPiBkYXlzSW5ZZWFyKHllYXJUb1VzZSkgfHxcbiAgICAgICAgICAgICAgICBjb25maWcuX2RheU9mWWVhciA9PT0gMFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuX292ZXJmbG93RGF5T2ZZZWFyID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGF0ZSA9IGNyZWF0ZVVUQ0RhdGUoeWVhclRvVXNlLCAwLCBjb25maWcuX2RheU9mWWVhcik7XG4gICAgICAgICAgICBjb25maWcuX2FbTU9OVEhdID0gZGF0ZS5nZXRVVENNb250aCgpO1xuICAgICAgICAgICAgY29uZmlnLl9hW0RBVEVdID0gZGF0ZS5nZXRVVENEYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZWZhdWx0IHRvIGN1cnJlbnQgZGF0ZS5cbiAgICAgICAgLy8gKiBpZiBubyB5ZWFyLCBtb250aCwgZGF5IG9mIG1vbnRoIGFyZSBnaXZlbiwgZGVmYXVsdCB0byB0b2RheVxuICAgICAgICAvLyAqIGlmIGRheSBvZiBtb250aCBpcyBnaXZlbiwgZGVmYXVsdCBtb250aCBhbmQgeWVhclxuICAgICAgICAvLyAqIGlmIG1vbnRoIGlzIGdpdmVuLCBkZWZhdWx0IG9ubHkgeWVhclxuICAgICAgICAvLyAqIGlmIHllYXIgaXMgZ2l2ZW4sIGRvbid0IGRlZmF1bHQgYW55dGhpbmdcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDMgJiYgY29uZmlnLl9hW2ldID09IG51bGw7ICsraSkge1xuICAgICAgICAgICAgY29uZmlnLl9hW2ldID0gaW5wdXRbaV0gPSBjdXJyZW50RGF0ZVtpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFplcm8gb3V0IHdoYXRldmVyIHdhcyBub3QgZGVmYXVsdGVkLCBpbmNsdWRpbmcgdGltZVxuICAgICAgICBmb3IgKDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgY29uZmlnLl9hW2ldID0gaW5wdXRbaV0gPVxuICAgICAgICAgICAgICAgIGNvbmZpZy5fYVtpXSA9PSBudWxsID8gKGkgPT09IDIgPyAxIDogMCkgOiBjb25maWcuX2FbaV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBmb3IgMjQ6MDA6MDAuMDAwXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSA9PT0gMjQgJiZcbiAgICAgICAgICAgIGNvbmZpZy5fYVtNSU5VVEVdID09PSAwICYmXG4gICAgICAgICAgICBjb25maWcuX2FbU0VDT05EXSA9PT0gMCAmJlxuICAgICAgICAgICAgY29uZmlnLl9hW01JTExJU0VDT05EXSA9PT0gMFxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbmZpZy5fbmV4dERheSA9IHRydWU7XG4gICAgICAgICAgICBjb25maWcuX2FbSE9VUl0gPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uZmlnLl9kID0gKGNvbmZpZy5fdXNlVVRDID8gY3JlYXRlVVRDRGF0ZSA6IGNyZWF0ZURhdGUpLmFwcGx5KFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIGlucHV0XG4gICAgICAgICk7XG4gICAgICAgIGV4cGVjdGVkV2Vla2RheSA9IGNvbmZpZy5fdXNlVVRDXG4gICAgICAgICAgICA/IGNvbmZpZy5fZC5nZXRVVENEYXkoKVxuICAgICAgICAgICAgOiBjb25maWcuX2QuZ2V0RGF5KCk7XG5cbiAgICAgICAgLy8gQXBwbHkgdGltZXpvbmUgb2Zmc2V0IGZyb20gaW5wdXQuIFRoZSBhY3R1YWwgdXRjT2Zmc2V0IGNhbiBiZSBjaGFuZ2VkXG4gICAgICAgIC8vIHdpdGggcGFyc2Vab25lLlxuICAgICAgICBpZiAoY29uZmlnLl90em0gIT0gbnVsbCkge1xuICAgICAgICAgICAgY29uZmlnLl9kLnNldFVUQ01pbnV0ZXMoY29uZmlnLl9kLmdldFVUQ01pbnV0ZXMoKSAtIGNvbmZpZy5fdHptKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcuX25leHREYXkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSA9IDI0O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY2hlY2sgZm9yIG1pc21hdGNoaW5nIGRheSBvZiB3ZWVrXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGNvbmZpZy5fdyAmJlxuICAgICAgICAgICAgdHlwZW9mIGNvbmZpZy5fdy5kICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgICAgY29uZmlnLl93LmQgIT09IGV4cGVjdGVkV2Vla2RheVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLndlZWtkYXlNaXNtYXRjaCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkYXlPZlllYXJGcm9tV2Vla0luZm8oY29uZmlnKSB7XG4gICAgICAgIHZhciB3LCB3ZWVrWWVhciwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3ksIHRlbXAsIHdlZWtkYXlPdmVyZmxvdywgY3VyV2VlaztcblxuICAgICAgICB3ID0gY29uZmlnLl93O1xuICAgICAgICBpZiAody5HRyAhPSBudWxsIHx8IHcuVyAhPSBudWxsIHx8IHcuRSAhPSBudWxsKSB7XG4gICAgICAgICAgICBkb3cgPSAxO1xuICAgICAgICAgICAgZG95ID0gNDtcblxuICAgICAgICAgICAgLy8gVE9ETzogV2UgbmVlZCB0byB0YWtlIHRoZSBjdXJyZW50IGlzb1dlZWtZZWFyLCBidXQgdGhhdCBkZXBlbmRzIG9uXG4gICAgICAgICAgICAvLyBob3cgd2UgaW50ZXJwcmV0IG5vdyAobG9jYWwsIHV0YywgZml4ZWQgb2Zmc2V0KS4gU28gY3JlYXRlXG4gICAgICAgICAgICAvLyBhIG5vdyB2ZXJzaW9uIG9mIGN1cnJlbnQgY29uZmlnICh0YWtlIGxvY2FsL3V0Yy9vZmZzZXQgZmxhZ3MsIGFuZFxuICAgICAgICAgICAgLy8gY3JlYXRlIG5vdykuXG4gICAgICAgICAgICB3ZWVrWWVhciA9IGRlZmF1bHRzKFxuICAgICAgICAgICAgICAgIHcuR0csXG4gICAgICAgICAgICAgICAgY29uZmlnLl9hW1lFQVJdLFxuICAgICAgICAgICAgICAgIHdlZWtPZlllYXIoY3JlYXRlTG9jYWwoKSwgMSwgNCkueWVhclxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHdlZWsgPSBkZWZhdWx0cyh3LlcsIDEpO1xuICAgICAgICAgICAgd2Vla2RheSA9IGRlZmF1bHRzKHcuRSwgMSk7XG4gICAgICAgICAgICBpZiAod2Vla2RheSA8IDEgfHwgd2Vla2RheSA+IDcpIHtcbiAgICAgICAgICAgICAgICB3ZWVrZGF5T3ZlcmZsb3cgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZG93ID0gY29uZmlnLl9sb2NhbGUuX3dlZWsuZG93O1xuICAgICAgICAgICAgZG95ID0gY29uZmlnLl9sb2NhbGUuX3dlZWsuZG95O1xuXG4gICAgICAgICAgICBjdXJXZWVrID0gd2Vla09mWWVhcihjcmVhdGVMb2NhbCgpLCBkb3csIGRveSk7XG5cbiAgICAgICAgICAgIHdlZWtZZWFyID0gZGVmYXVsdHMody5nZywgY29uZmlnLl9hW1lFQVJdLCBjdXJXZWVrLnllYXIpO1xuXG4gICAgICAgICAgICAvLyBEZWZhdWx0IHRvIGN1cnJlbnQgd2Vlay5cbiAgICAgICAgICAgIHdlZWsgPSBkZWZhdWx0cyh3LncsIGN1cldlZWsud2Vlayk7XG5cbiAgICAgICAgICAgIGlmICh3LmQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIC8vIHdlZWtkYXkgLS0gbG93IGRheSBudW1iZXJzIGFyZSBjb25zaWRlcmVkIG5leHQgd2Vla1xuICAgICAgICAgICAgICAgIHdlZWtkYXkgPSB3LmQ7XG4gICAgICAgICAgICAgICAgaWYgKHdlZWtkYXkgPCAwIHx8IHdlZWtkYXkgPiA2KSB7XG4gICAgICAgICAgICAgICAgICAgIHdlZWtkYXlPdmVyZmxvdyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh3LmUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIC8vIGxvY2FsIHdlZWtkYXkgLS0gY291bnRpbmcgc3RhcnRzIGZyb20gYmVnaW5uaW5nIG9mIHdlZWtcbiAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gdy5lICsgZG93O1xuICAgICAgICAgICAgICAgIGlmICh3LmUgPCAwIHx8IHcuZSA+IDYpIHtcbiAgICAgICAgICAgICAgICAgICAgd2Vla2RheU92ZXJmbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGRlZmF1bHQgdG8gYmVnaW5uaW5nIG9mIHdlZWtcbiAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gZG93O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh3ZWVrIDwgMSB8fCB3ZWVrID4gd2Vla3NJblllYXIod2Vla1llYXIsIGRvdywgZG95KSkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuX292ZXJmbG93V2Vla3MgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHdlZWtkYXlPdmVyZmxvdyAhPSBudWxsKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5fb3ZlcmZsb3dXZWVrZGF5ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRlbXAgPSBkYXlPZlllYXJGcm9tV2Vla3Mod2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KTtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtZRUFSXSA9IHRlbXAueWVhcjtcbiAgICAgICAgICAgIGNvbmZpZy5fZGF5T2ZZZWFyID0gdGVtcC5kYXlPZlllYXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBjb25zdGFudCB0aGF0IHJlZmVycyB0byB0aGUgSVNPIHN0YW5kYXJkXG4gICAgaG9va3MuSVNPXzg2MDEgPSBmdW5jdGlvbiAoKSB7fTtcblxuICAgIC8vIGNvbnN0YW50IHRoYXQgcmVmZXJzIHRvIHRoZSBSRkMgMjgyMiBmb3JtXG4gICAgaG9va3MuUkZDXzI4MjIgPSBmdW5jdGlvbiAoKSB7fTtcblxuICAgIC8vIGRhdGUgZnJvbSBzdHJpbmcgYW5kIGZvcm1hdCBzdHJpbmdcbiAgICBmdW5jdGlvbiBjb25maWdGcm9tU3RyaW5nQW5kRm9ybWF0KGNvbmZpZykge1xuICAgICAgICAvLyBUT0RPOiBNb3ZlIHRoaXMgdG8gYW5vdGhlciBwYXJ0IG9mIHRoZSBjcmVhdGlvbiBmbG93IHRvIHByZXZlbnQgY2lyY3VsYXIgZGVwc1xuICAgICAgICBpZiAoY29uZmlnLl9mID09PSBob29rcy5JU09fODYwMSkge1xuICAgICAgICAgICAgY29uZmlnRnJvbUlTTyhjb25maWcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25maWcuX2YgPT09IGhvb2tzLlJGQ18yODIyKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tUkZDMjgyMihjb25maWcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbmZpZy5fYSA9IFtdO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5lbXB0eSA9IHRydWU7XG5cbiAgICAgICAgLy8gVGhpcyBhcnJheSBpcyB1c2VkIHRvIG1ha2UgYSBEYXRlLCBlaXRoZXIgd2l0aCBgbmV3IERhdGVgIG9yIGBEYXRlLlVUQ2BcbiAgICAgICAgdmFyIHN0cmluZyA9ICcnICsgY29uZmlnLl9pLFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIHBhcnNlZElucHV0LFxuICAgICAgICAgICAgdG9rZW5zLFxuICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgICBza2lwcGVkLFxuICAgICAgICAgICAgc3RyaW5nTGVuZ3RoID0gc3RyaW5nLmxlbmd0aCxcbiAgICAgICAgICAgIHRvdGFsUGFyc2VkSW5wdXRMZW5ndGggPSAwLFxuICAgICAgICAgICAgZXJhLFxuICAgICAgICAgICAgdG9rZW5MZW47XG5cbiAgICAgICAgdG9rZW5zID1cbiAgICAgICAgICAgIGV4cGFuZEZvcm1hdChjb25maWcuX2YsIGNvbmZpZy5fbG9jYWxlKS5tYXRjaChmb3JtYXR0aW5nVG9rZW5zKSB8fCBbXTtcbiAgICAgICAgdG9rZW5MZW4gPSB0b2tlbnMubGVuZ3RoO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdG9rZW5MZW47IGkrKykge1xuICAgICAgICAgICAgdG9rZW4gPSB0b2tlbnNbaV07XG4gICAgICAgICAgICBwYXJzZWRJbnB1dCA9IChzdHJpbmcubWF0Y2goZ2V0UGFyc2VSZWdleEZvclRva2VuKHRva2VuLCBjb25maWcpKSB8fFxuICAgICAgICAgICAgICAgIFtdKVswXTtcbiAgICAgICAgICAgIGlmIChwYXJzZWRJbnB1dCkge1xuICAgICAgICAgICAgICAgIHNraXBwZWQgPSBzdHJpbmcuc3Vic3RyKDAsIHN0cmluZy5pbmRleE9mKHBhcnNlZElucHV0KSk7XG4gICAgICAgICAgICAgICAgaWYgKHNraXBwZWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS51bnVzZWRJbnB1dC5wdXNoKHNraXBwZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdHJpbmcgPSBzdHJpbmcuc2xpY2UoXG4gICAgICAgICAgICAgICAgICAgIHN0cmluZy5pbmRleE9mKHBhcnNlZElucHV0KSArIHBhcnNlZElucHV0Lmxlbmd0aFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdG90YWxQYXJzZWRJbnB1dExlbmd0aCArPSBwYXJzZWRJbnB1dC5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBkb24ndCBwYXJzZSBpZiBpdCdzIG5vdCBhIGtub3duIHRva2VuXG4gICAgICAgICAgICBpZiAoZm9ybWF0VG9rZW5GdW5jdGlvbnNbdG9rZW5dKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcnNlZElucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmVtcHR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykudW51c2VkVG9rZW5zLnB1c2godG9rZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhZGRUaW1lVG9BcnJheUZyb21Ub2tlbih0b2tlbiwgcGFyc2VkSW5wdXQsIGNvbmZpZyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbmZpZy5fc3RyaWN0ICYmICFwYXJzZWRJbnB1dCkge1xuICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnVudXNlZFRva2Vucy5wdXNoKHRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGFkZCByZW1haW5pbmcgdW5wYXJzZWQgaW5wdXQgbGVuZ3RoIHRvIHRoZSBzdHJpbmdcbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuY2hhcnNMZWZ0T3ZlciA9XG4gICAgICAgICAgICBzdHJpbmdMZW5ndGggLSB0b3RhbFBhcnNlZElucHV0TGVuZ3RoO1xuICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnVudXNlZElucHV0LnB1c2goc3RyaW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNsZWFyIF8xMmggZmxhZyBpZiBob3VyIGlzIDw9IDEyXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSA8PSAxMiAmJlxuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91ciA9PT0gdHJ1ZSAmJlxuICAgICAgICAgICAgY29uZmlnLl9hW0hPVVJdID4gMFxuICAgICAgICApIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5wYXJzZWREYXRlUGFydHMgPSBjb25maWcuX2Euc2xpY2UoMCk7XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLm1lcmlkaWVtID0gY29uZmlnLl9tZXJpZGllbTtcbiAgICAgICAgLy8gaGFuZGxlIG1lcmlkaWVtXG4gICAgICAgIGNvbmZpZy5fYVtIT1VSXSA9IG1lcmlkaWVtRml4V3JhcChcbiAgICAgICAgICAgIGNvbmZpZy5fbG9jYWxlLFxuICAgICAgICAgICAgY29uZmlnLl9hW0hPVVJdLFxuICAgICAgICAgICAgY29uZmlnLl9tZXJpZGllbVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIGhhbmRsZSBlcmFcbiAgICAgICAgZXJhID0gZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuZXJhO1xuICAgICAgICBpZiAoZXJhICE9PSBudWxsKSB7XG4gICAgICAgICAgICBjb25maWcuX2FbWUVBUl0gPSBjb25maWcuX2xvY2FsZS5lcmFzQ29udmVydFllYXIoZXJhLCBjb25maWcuX2FbWUVBUl0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uZmlnRnJvbUFycmF5KGNvbmZpZyk7XG4gICAgICAgIGNoZWNrT3ZlcmZsb3coY29uZmlnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtZXJpZGllbUZpeFdyYXAobG9jYWxlLCBob3VyLCBtZXJpZGllbSkge1xuICAgICAgICB2YXIgaXNQbTtcblxuICAgICAgICBpZiAobWVyaWRpZW0gPT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gbm90aGluZyB0byBkb1xuICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxvY2FsZS5tZXJpZGllbUhvdXIgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGxvY2FsZS5tZXJpZGllbUhvdXIoaG91ciwgbWVyaWRpZW0pO1xuICAgICAgICB9IGVsc2UgaWYgKGxvY2FsZS5pc1BNICE9IG51bGwpIHtcbiAgICAgICAgICAgIC8vIEZhbGxiYWNrXG4gICAgICAgICAgICBpc1BtID0gbG9jYWxlLmlzUE0obWVyaWRpZW0pO1xuICAgICAgICAgICAgaWYgKGlzUG0gJiYgaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciArPSAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXNQbSAmJiBob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyB0aGlzIGlzIG5vdCBzdXBwb3NlZCB0byBoYXBwZW5cbiAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZGF0ZSBmcm9tIHN0cmluZyBhbmQgYXJyYXkgb2YgZm9ybWF0IHN0cmluZ3NcbiAgICBmdW5jdGlvbiBjb25maWdGcm9tU3RyaW5nQW5kQXJyYXkoY29uZmlnKSB7XG4gICAgICAgIHZhciB0ZW1wQ29uZmlnLFxuICAgICAgICAgICAgYmVzdE1vbWVudCxcbiAgICAgICAgICAgIHNjb3JlVG9CZWF0LFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIGN1cnJlbnRTY29yZSxcbiAgICAgICAgICAgIHZhbGlkRm9ybWF0Rm91bmQsXG4gICAgICAgICAgICBiZXN0Rm9ybWF0SXNWYWxpZCA9IGZhbHNlLFxuICAgICAgICAgICAgY29uZmlnZkxlbiA9IGNvbmZpZy5fZi5sZW5ndGg7XG5cbiAgICAgICAgaWYgKGNvbmZpZ2ZMZW4gPT09IDApIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmludmFsaWRGb3JtYXQgPSB0cnVlO1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoTmFOKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb25maWdmTGVuOyBpKyspIHtcbiAgICAgICAgICAgIGN1cnJlbnRTY29yZSA9IDA7XG4gICAgICAgICAgICB2YWxpZEZvcm1hdEZvdW5kID0gZmFsc2U7XG4gICAgICAgICAgICB0ZW1wQ29uZmlnID0gY29weUNvbmZpZyh7fSwgY29uZmlnKTtcbiAgICAgICAgICAgIGlmIChjb25maWcuX3VzZVVUQyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGVtcENvbmZpZy5fdXNlVVRDID0gY29uZmlnLl91c2VVVEM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ZW1wQ29uZmlnLl9mID0gY29uZmlnLl9mW2ldO1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZ0FuZEZvcm1hdCh0ZW1wQ29uZmlnKTtcblxuICAgICAgICAgICAgaWYgKGlzVmFsaWQodGVtcENvbmZpZykpIHtcbiAgICAgICAgICAgICAgICB2YWxpZEZvcm1hdEZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgYW55IGlucHV0IHRoYXQgd2FzIG5vdCBwYXJzZWQgYWRkIGEgcGVuYWx0eSBmb3IgdGhhdCBmb3JtYXRcbiAgICAgICAgICAgIGN1cnJlbnRTY29yZSArPSBnZXRQYXJzaW5nRmxhZ3ModGVtcENvbmZpZykuY2hhcnNMZWZ0T3ZlcjtcblxuICAgICAgICAgICAgLy9vciB0b2tlbnNcbiAgICAgICAgICAgIGN1cnJlbnRTY29yZSArPSBnZXRQYXJzaW5nRmxhZ3ModGVtcENvbmZpZykudW51c2VkVG9rZW5zLmxlbmd0aCAqIDEwO1xuXG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3ModGVtcENvbmZpZykuc2NvcmUgPSBjdXJyZW50U2NvcmU7XG5cbiAgICAgICAgICAgIGlmICghYmVzdEZvcm1hdElzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHNjb3JlVG9CZWF0ID09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFNjb3JlIDwgc2NvcmVUb0JlYXQgfHxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRGb3JtYXRGb3VuZFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBzY29yZVRvQmVhdCA9IGN1cnJlbnRTY29yZTtcbiAgICAgICAgICAgICAgICAgICAgYmVzdE1vbWVudCA9IHRlbXBDb25maWc7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWxpZEZvcm1hdEZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZXN0Rm9ybWF0SXNWYWxpZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U2NvcmUgPCBzY29yZVRvQmVhdCkge1xuICAgICAgICAgICAgICAgICAgICBzY29yZVRvQmVhdCA9IGN1cnJlbnRTY29yZTtcbiAgICAgICAgICAgICAgICAgICAgYmVzdE1vbWVudCA9IHRlbXBDb25maWc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZXh0ZW5kKGNvbmZpZywgYmVzdE1vbWVudCB8fCB0ZW1wQ29uZmlnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb25maWdGcm9tT2JqZWN0KGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnLl9kKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaSA9IG5vcm1hbGl6ZU9iamVjdFVuaXRzKGNvbmZpZy5faSksXG4gICAgICAgICAgICBkYXlPckRhdGUgPSBpLmRheSA9PT0gdW5kZWZpbmVkID8gaS5kYXRlIDogaS5kYXk7XG4gICAgICAgIGNvbmZpZy5fYSA9IG1hcChcbiAgICAgICAgICAgIFtpLnllYXIsIGkubW9udGgsIGRheU9yRGF0ZSwgaS5ob3VyLCBpLm1pbnV0ZSwgaS5zZWNvbmQsIGkubWlsbGlzZWNvbmRdLFxuICAgICAgICAgICAgZnVuY3Rpb24gKG9iaikge1xuICAgICAgICAgICAgICAgIHJldHVybiBvYmogJiYgcGFyc2VJbnQob2JqLCAxMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgY29uZmlnRnJvbUFycmF5KGNvbmZpZyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlRnJvbUNvbmZpZyhjb25maWcpIHtcbiAgICAgICAgdmFyIHJlcyA9IG5ldyBNb21lbnQoY2hlY2tPdmVyZmxvdyhwcmVwYXJlQ29uZmlnKGNvbmZpZykpKTtcbiAgICAgICAgaWYgKHJlcy5fbmV4dERheSkge1xuICAgICAgICAgICAgLy8gQWRkaW5nIGlzIHNtYXJ0IGVub3VnaCBhcm91bmQgRFNUXG4gICAgICAgICAgICByZXMuYWRkKDEsICdkJyk7XG4gICAgICAgICAgICByZXMuX25leHREYXkgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByZXBhcmVDb25maWcoY29uZmlnKSB7XG4gICAgICAgIHZhciBpbnB1dCA9IGNvbmZpZy5faSxcbiAgICAgICAgICAgIGZvcm1hdCA9IGNvbmZpZy5fZjtcblxuICAgICAgICBjb25maWcuX2xvY2FsZSA9IGNvbmZpZy5fbG9jYWxlIHx8IGdldExvY2FsZShjb25maWcuX2wpO1xuXG4gICAgICAgIGlmIChpbnB1dCA9PT0gbnVsbCB8fCAoZm9ybWF0ID09PSB1bmRlZmluZWQgJiYgaW5wdXQgPT09ICcnKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUludmFsaWQoeyBudWxsSW5wdXQ6IHRydWUgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uZmlnLl9pID0gaW5wdXQgPSBjb25maWcuX2xvY2FsZS5wcmVwYXJzZShpbnB1dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNNb21lbnQoaW5wdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE1vbWVudChjaGVja092ZXJmbG93KGlucHV0KSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEYXRlKGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gaW5wdXQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheShmb3JtYXQpKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tU3RyaW5nQW5kQXJyYXkoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21JbnB1dChjb25maWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc1ZhbGlkKGNvbmZpZykpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29uZmlnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21JbnB1dChjb25maWcpIHtcbiAgICAgICAgdmFyIGlucHV0ID0gY29uZmlnLl9pO1xuICAgICAgICBpZiAoaXNVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShob29rcy5ub3coKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEYXRlKGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoaW5wdXQudmFsdWVPZigpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tU3RyaW5nKGNvbmZpZyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheShpbnB1dCkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fYSA9IG1hcChpbnB1dC5zbGljZSgwKSwgZnVuY3Rpb24gKG9iaikge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUludChvYmosIDEwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uZmlnRnJvbUFycmF5KGNvbmZpZyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoaW5wdXQpKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tT2JqZWN0KGNvbmZpZyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNOdW1iZXIoaW5wdXQpKSB7XG4gICAgICAgICAgICAvLyBmcm9tIG1pbGxpc2Vjb25kc1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoaW5wdXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaG9va3MuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2soY29uZmlnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUxvY2FsT3JVVEMoaW5wdXQsIGZvcm1hdCwgbG9jYWxlLCBzdHJpY3QsIGlzVVRDKSB7XG4gICAgICAgIHZhciBjID0ge307XG5cbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gdHJ1ZSB8fCBmb3JtYXQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBzdHJpY3QgPSBmb3JtYXQ7XG4gICAgICAgICAgICBmb3JtYXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobG9jYWxlID09PSB0cnVlIHx8IGxvY2FsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHN0cmljdCA9IGxvY2FsZTtcbiAgICAgICAgICAgIGxvY2FsZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIChpc09iamVjdChpbnB1dCkgJiYgaXNPYmplY3RFbXB0eShpbnB1dCkpIHx8XG4gICAgICAgICAgICAoaXNBcnJheShpbnB1dCkgJiYgaW5wdXQubGVuZ3RoID09PSAwKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGlucHV0ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIC8vIG9iamVjdCBjb25zdHJ1Y3Rpb24gbXVzdCBiZSBkb25lIHRoaXMgd2F5LlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMTQyM1xuICAgICAgICBjLl9pc0FNb21lbnRPYmplY3QgPSB0cnVlO1xuICAgICAgICBjLl91c2VVVEMgPSBjLl9pc1VUQyA9IGlzVVRDO1xuICAgICAgICBjLl9sID0gbG9jYWxlO1xuICAgICAgICBjLl9pID0gaW5wdXQ7XG4gICAgICAgIGMuX2YgPSBmb3JtYXQ7XG4gICAgICAgIGMuX3N0cmljdCA9IHN0cmljdDtcblxuICAgICAgICByZXR1cm4gY3JlYXRlRnJvbUNvbmZpZyhjKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVMb2NhbChpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWxPclVUQyhpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCwgZmFsc2UpO1xuICAgIH1cblxuICAgIHZhciBwcm90b3R5cGVNaW4gPSBkZXByZWNhdGUoXG4gICAgICAgICAgICAnbW9tZW50KCkubWluIGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQubWF4IGluc3RlYWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvbWluLW1heC8nLFxuICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBvdGhlciA9IGNyZWF0ZUxvY2FsLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZCgpICYmIG90aGVyLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIgPCB0aGlzID8gdGhpcyA6IG90aGVyO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVJbnZhbGlkKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApLFxuICAgICAgICBwcm90b3R5cGVNYXggPSBkZXByZWNhdGUoXG4gICAgICAgICAgICAnbW9tZW50KCkubWF4IGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQubWluIGluc3RlYWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvbWluLW1heC8nLFxuICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBvdGhlciA9IGNyZWF0ZUxvY2FsLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZCgpICYmIG90aGVyLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIgPiB0aGlzID8gdGhpcyA6IG90aGVyO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVJbnZhbGlkKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgLy8gUGljayBhIG1vbWVudCBtIGZyb20gbW9tZW50cyBzbyB0aGF0IG1bZm5dKG90aGVyKSBpcyB0cnVlIGZvciBhbGxcbiAgICAvLyBvdGhlci4gVGhpcyByZWxpZXMgb24gdGhlIGZ1bmN0aW9uIGZuIHRvIGJlIHRyYW5zaXRpdmUuXG4gICAgLy9cbiAgICAvLyBtb21lbnRzIHNob3VsZCBlaXRoZXIgYmUgYW4gYXJyYXkgb2YgbW9tZW50IG9iamVjdHMgb3IgYW4gYXJyYXksIHdob3NlXG4gICAgLy8gZmlyc3QgZWxlbWVudCBpcyBhbiBhcnJheSBvZiBtb21lbnQgb2JqZWN0cy5cbiAgICBmdW5jdGlvbiBwaWNrQnkoZm4sIG1vbWVudHMpIHtcbiAgICAgICAgdmFyIHJlcywgaTtcbiAgICAgICAgaWYgKG1vbWVudHMubGVuZ3RoID09PSAxICYmIGlzQXJyYXkobW9tZW50c1swXSkpIHtcbiAgICAgICAgICAgIG1vbWVudHMgPSBtb21lbnRzWzBdO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbW9tZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVMb2NhbCgpO1xuICAgICAgICB9XG4gICAgICAgIHJlcyA9IG1vbWVudHNbMF07XG4gICAgICAgIGZvciAoaSA9IDE7IGkgPCBtb21lbnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBpZiAoIW1vbWVudHNbaV0uaXNWYWxpZCgpIHx8IG1vbWVudHNbaV1bZm5dKHJlcykpIHtcbiAgICAgICAgICAgICAgICByZXMgPSBtb21lbnRzW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogVXNlIFtdLnNvcnQgaW5zdGVhZD9cbiAgICBmdW5jdGlvbiBtaW4oKSB7XG4gICAgICAgIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuXG4gICAgICAgIHJldHVybiBwaWNrQnkoJ2lzQmVmb3JlJywgYXJncyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWF4KCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKTtcblxuICAgICAgICByZXR1cm4gcGlja0J5KCdpc0FmdGVyJywgYXJncyk7XG4gICAgfVxuXG4gICAgdmFyIG5vdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIERhdGUubm93ID8gRGF0ZS5ub3coKSA6ICtuZXcgRGF0ZSgpO1xuICAgIH07XG5cbiAgICB2YXIgb3JkZXJpbmcgPSBbXG4gICAgICAgICd5ZWFyJyxcbiAgICAgICAgJ3F1YXJ0ZXInLFxuICAgICAgICAnbW9udGgnLFxuICAgICAgICAnd2VlaycsXG4gICAgICAgICdkYXknLFxuICAgICAgICAnaG91cicsXG4gICAgICAgICdtaW51dGUnLFxuICAgICAgICAnc2Vjb25kJyxcbiAgICAgICAgJ21pbGxpc2Vjb25kJyxcbiAgICBdO1xuXG4gICAgZnVuY3Rpb24gaXNEdXJhdGlvblZhbGlkKG0pIHtcbiAgICAgICAgdmFyIGtleSxcbiAgICAgICAgICAgIHVuaXRIYXNEZWNpbWFsID0gZmFsc2UsXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgb3JkZXJMZW4gPSBvcmRlcmluZy5sZW5ndGg7XG4gICAgICAgIGZvciAoa2V5IGluIG0pIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBoYXNPd25Qcm9wKG0sIGtleSkgJiZcbiAgICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgICAgICBpbmRleE9mLmNhbGwob3JkZXJpbmcsIGtleSkgIT09IC0xICYmXG4gICAgICAgICAgICAgICAgICAgIChtW2tleV0gPT0gbnVsbCB8fCAhaXNOYU4obVtrZXldKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb3JkZXJMZW47ICsraSkge1xuICAgICAgICAgICAgaWYgKG1bb3JkZXJpbmdbaV1dKSB7XG4gICAgICAgICAgICAgICAgaWYgKHVuaXRIYXNEZWNpbWFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gb25seSBhbGxvdyBub24taW50ZWdlcnMgZm9yIHNtYWxsZXN0IHVuaXRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHBhcnNlRmxvYXQobVtvcmRlcmluZ1tpXV0pICE9PSB0b0ludChtW29yZGVyaW5nW2ldXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdW5pdEhhc0RlY2ltYWwgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVmFsaWQkMSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVmFsaWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlSW52YWxpZCQxKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlRHVyYXRpb24oTmFOKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBEdXJhdGlvbihkdXJhdGlvbikge1xuICAgICAgICB2YXIgbm9ybWFsaXplZElucHV0ID0gbm9ybWFsaXplT2JqZWN0VW5pdHMoZHVyYXRpb24pLFxuICAgICAgICAgICAgeWVhcnMgPSBub3JtYWxpemVkSW5wdXQueWVhciB8fCAwLFxuICAgICAgICAgICAgcXVhcnRlcnMgPSBub3JtYWxpemVkSW5wdXQucXVhcnRlciB8fCAwLFxuICAgICAgICAgICAgbW9udGhzID0gbm9ybWFsaXplZElucHV0Lm1vbnRoIHx8IDAsXG4gICAgICAgICAgICB3ZWVrcyA9IG5vcm1hbGl6ZWRJbnB1dC53ZWVrIHx8IG5vcm1hbGl6ZWRJbnB1dC5pc29XZWVrIHx8IDAsXG4gICAgICAgICAgICBkYXlzID0gbm9ybWFsaXplZElucHV0LmRheSB8fCAwLFxuICAgICAgICAgICAgaG91cnMgPSBub3JtYWxpemVkSW5wdXQuaG91ciB8fCAwLFxuICAgICAgICAgICAgbWludXRlcyA9IG5vcm1hbGl6ZWRJbnB1dC5taW51dGUgfHwgMCxcbiAgICAgICAgICAgIHNlY29uZHMgPSBub3JtYWxpemVkSW5wdXQuc2Vjb25kIHx8IDAsXG4gICAgICAgICAgICBtaWxsaXNlY29uZHMgPSBub3JtYWxpemVkSW5wdXQubWlsbGlzZWNvbmQgfHwgMDtcblxuICAgICAgICB0aGlzLl9pc1ZhbGlkID0gaXNEdXJhdGlvblZhbGlkKG5vcm1hbGl6ZWRJbnB1dCk7XG5cbiAgICAgICAgLy8gcmVwcmVzZW50YXRpb24gZm9yIGRhdGVBZGRSZW1vdmVcbiAgICAgICAgdGhpcy5fbWlsbGlzZWNvbmRzID1cbiAgICAgICAgICAgICttaWxsaXNlY29uZHMgK1xuICAgICAgICAgICAgc2Vjb25kcyAqIDFlMyArIC8vIDEwMDBcbiAgICAgICAgICAgIG1pbnV0ZXMgKiA2ZTQgKyAvLyAxMDAwICogNjBcbiAgICAgICAgICAgIGhvdXJzICogMTAwMCAqIDYwICogNjA7IC8vdXNpbmcgMTAwMCAqIDYwICogNjAgaW5zdGVhZCBvZiAzNmU1IHRvIGF2b2lkIGZsb2F0aW5nIHBvaW50IHJvdW5kaW5nIGVycm9ycyBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMjk3OFxuICAgICAgICAvLyBCZWNhdXNlIG9mIGRhdGVBZGRSZW1vdmUgdHJlYXRzIDI0IGhvdXJzIGFzIGRpZmZlcmVudCBmcm9tIGFcbiAgICAgICAgLy8gZGF5IHdoZW4gd29ya2luZyBhcm91bmQgRFNULCB3ZSBuZWVkIHRvIHN0b3JlIHRoZW0gc2VwYXJhdGVseVxuICAgICAgICB0aGlzLl9kYXlzID0gK2RheXMgKyB3ZWVrcyAqIDc7XG4gICAgICAgIC8vIEl0IGlzIGltcG9zc2libGUgdG8gdHJhbnNsYXRlIG1vbnRocyBpbnRvIGRheXMgd2l0aG91dCBrbm93aW5nXG4gICAgICAgIC8vIHdoaWNoIG1vbnRocyB5b3UgYXJlIGFyZSB0YWxraW5nIGFib3V0LCBzbyB3ZSBoYXZlIHRvIHN0b3JlXG4gICAgICAgIC8vIGl0IHNlcGFyYXRlbHkuXG4gICAgICAgIHRoaXMuX21vbnRocyA9ICttb250aHMgKyBxdWFydGVycyAqIDMgKyB5ZWFycyAqIDEyO1xuXG4gICAgICAgIHRoaXMuX2RhdGEgPSB7fTtcblxuICAgICAgICB0aGlzLl9sb2NhbGUgPSBnZXRMb2NhbGUoKTtcblxuICAgICAgICB0aGlzLl9idWJibGUoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0R1cmF0aW9uKG9iaikge1xuICAgICAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgRHVyYXRpb247XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWJzUm91bmQobnVtYmVyKSB7XG4gICAgICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCgtMSAqIG51bWJlcikgKiAtMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKG51bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBjb21wYXJlIHR3byBhcnJheXMsIHJldHVybiB0aGUgbnVtYmVyIG9mIGRpZmZlcmVuY2VzXG4gICAgZnVuY3Rpb24gY29tcGFyZUFycmF5cyhhcnJheTEsIGFycmF5MiwgZG9udENvbnZlcnQpIHtcbiAgICAgICAgdmFyIGxlbiA9IE1hdGgubWluKGFycmF5MS5sZW5ndGgsIGFycmF5Mi5sZW5ndGgpLFxuICAgICAgICAgICAgbGVuZ3RoRGlmZiA9IE1hdGguYWJzKGFycmF5MS5sZW5ndGggLSBhcnJheTIubGVuZ3RoKSxcbiAgICAgICAgICAgIGRpZmZzID0gMCxcbiAgICAgICAgICAgIGk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIChkb250Q29udmVydCAmJiBhcnJheTFbaV0gIT09IGFycmF5MltpXSkgfHxcbiAgICAgICAgICAgICAgICAoIWRvbnRDb252ZXJ0ICYmIHRvSW50KGFycmF5MVtpXSkgIT09IHRvSW50KGFycmF5MltpXSkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBkaWZmcysrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkaWZmcyArIGxlbmd0aERpZmY7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgZnVuY3Rpb24gb2Zmc2V0KHRva2VuLCBzZXBhcmF0b3IpIHtcbiAgICAgICAgYWRkRm9ybWF0VG9rZW4odG9rZW4sIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBvZmZzZXQgPSB0aGlzLnV0Y09mZnNldCgpLFxuICAgICAgICAgICAgICAgIHNpZ24gPSAnKyc7XG4gICAgICAgICAgICBpZiAob2Zmc2V0IDwgMCkge1xuICAgICAgICAgICAgICAgIG9mZnNldCA9IC1vZmZzZXQ7XG4gICAgICAgICAgICAgICAgc2lnbiA9ICctJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgc2lnbiArXG4gICAgICAgICAgICAgICAgemVyb0ZpbGwofn4ob2Zmc2V0IC8gNjApLCAyKSArXG4gICAgICAgICAgICAgICAgc2VwYXJhdG9yICtcbiAgICAgICAgICAgICAgICB6ZXJvRmlsbCh+fm9mZnNldCAlIDYwLCAyKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb2Zmc2V0KCdaJywgJzonKTtcbiAgICBvZmZzZXQoJ1paJywgJycpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignWicsIG1hdGNoU2hvcnRPZmZzZXQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1paJywgbWF0Y2hTaG9ydE9mZnNldCk7XG4gICAgYWRkUGFyc2VUb2tlbihbJ1onLCAnWlonXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGNvbmZpZy5fdXNlVVRDID0gdHJ1ZTtcbiAgICAgICAgY29uZmlnLl90em0gPSBvZmZzZXRGcm9tU3RyaW5nKG1hdGNoU2hvcnRPZmZzZXQsIGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIC8vIHRpbWV6b25lIGNodW5rZXJcbiAgICAvLyAnKzEwOjAwJyA+IFsnMTAnLCAgJzAwJ11cbiAgICAvLyAnLTE1MzAnICA+IFsnLTE1JywgJzMwJ11cbiAgICB2YXIgY2h1bmtPZmZzZXQgPSAvKFtcXCtcXC1dfFxcZFxcZCkvZ2k7XG5cbiAgICBmdW5jdGlvbiBvZmZzZXRGcm9tU3RyaW5nKG1hdGNoZXIsIHN0cmluZykge1xuICAgICAgICB2YXIgbWF0Y2hlcyA9IChzdHJpbmcgfHwgJycpLm1hdGNoKG1hdGNoZXIpLFxuICAgICAgICAgICAgY2h1bmssXG4gICAgICAgICAgICBwYXJ0cyxcbiAgICAgICAgICAgIG1pbnV0ZXM7XG5cbiAgICAgICAgaWYgKG1hdGNoZXMgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY2h1bmsgPSBtYXRjaGVzW21hdGNoZXMubGVuZ3RoIC0gMV0gfHwgW107XG4gICAgICAgIHBhcnRzID0gKGNodW5rICsgJycpLm1hdGNoKGNodW5rT2Zmc2V0KSB8fCBbJy0nLCAwLCAwXTtcbiAgICAgICAgbWludXRlcyA9ICsocGFydHNbMV0gKiA2MCkgKyB0b0ludChwYXJ0c1syXSk7XG5cbiAgICAgICAgcmV0dXJuIG1pbnV0ZXMgPT09IDAgPyAwIDogcGFydHNbMF0gPT09ICcrJyA/IG1pbnV0ZXMgOiAtbWludXRlcztcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gYSBtb21lbnQgZnJvbSBpbnB1dCwgdGhhdCBpcyBsb2NhbC91dGMvem9uZSBlcXVpdmFsZW50IHRvIG1vZGVsLlxuICAgIGZ1bmN0aW9uIGNsb25lV2l0aE9mZnNldChpbnB1dCwgbW9kZWwpIHtcbiAgICAgICAgdmFyIHJlcywgZGlmZjtcbiAgICAgICAgaWYgKG1vZGVsLl9pc1VUQykge1xuICAgICAgICAgICAgcmVzID0gbW9kZWwuY2xvbmUoKTtcbiAgICAgICAgICAgIGRpZmYgPVxuICAgICAgICAgICAgICAgIChpc01vbWVudChpbnB1dCkgfHwgaXNEYXRlKGlucHV0KVxuICAgICAgICAgICAgICAgICAgICA/IGlucHV0LnZhbHVlT2YoKVxuICAgICAgICAgICAgICAgICAgICA6IGNyZWF0ZUxvY2FsKGlucHV0KS52YWx1ZU9mKCkpIC0gcmVzLnZhbHVlT2YoKTtcbiAgICAgICAgICAgIC8vIFVzZSBsb3ctbGV2ZWwgYXBpLCBiZWNhdXNlIHRoaXMgZm4gaXMgbG93LWxldmVsIGFwaS5cbiAgICAgICAgICAgIHJlcy5fZC5zZXRUaW1lKHJlcy5fZC52YWx1ZU9mKCkgKyBkaWZmKTtcbiAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldChyZXMsIGZhbHNlKTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwoaW5wdXQpLmxvY2FsKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXREYXRlT2Zmc2V0KG0pIHtcbiAgICAgICAgLy8gT24gRmlyZWZveC4yNCBEYXRlI2dldFRpbWV6b25lT2Zmc2V0IHJldHVybnMgYSBmbG9hdGluZyBwb2ludC5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvcHVsbC8xODcxXG4gICAgICAgIHJldHVybiAtTWF0aC5yb3VuZChtLl9kLmdldFRpbWV6b25lT2Zmc2V0KCkpO1xuICAgIH1cblxuICAgIC8vIEhPT0tTXG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIGEgbW9tZW50IGlzIG11dGF0ZWQuXG4gICAgLy8gSXQgaXMgaW50ZW5kZWQgdG8ga2VlcCB0aGUgb2Zmc2V0IGluIHN5bmMgd2l0aCB0aGUgdGltZXpvbmUuXG4gICAgaG9va3MudXBkYXRlT2Zmc2V0ID0gZnVuY3Rpb24gKCkge307XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICAvLyBrZWVwTG9jYWxUaW1lID0gdHJ1ZSBtZWFucyBvbmx5IGNoYW5nZSB0aGUgdGltZXpvbmUsIHdpdGhvdXRcbiAgICAvLyBhZmZlY3RpbmcgdGhlIGxvY2FsIGhvdXIuIFNvIDU6MzE6MjYgKzAzMDAgLS1bdXRjT2Zmc2V0KDIsIHRydWUpXS0tPlxuICAgIC8vIDU6MzE6MjYgKzAyMDAgSXQgaXMgcG9zc2libGUgdGhhdCA1OjMxOjI2IGRvZXNuJ3QgZXhpc3Qgd2l0aCBvZmZzZXRcbiAgICAvLyArMDIwMCwgc28gd2UgYWRqdXN0IHRoZSB0aW1lIGFzIG5lZWRlZCwgdG8gYmUgdmFsaWQuXG4gICAgLy9cbiAgICAvLyBLZWVwaW5nIHRoZSB0aW1lIGFjdHVhbGx5IGFkZHMvc3VidHJhY3RzIChvbmUgaG91cilcbiAgICAvLyBmcm9tIHRoZSBhY3R1YWwgcmVwcmVzZW50ZWQgdGltZS4gVGhhdCBpcyB3aHkgd2UgY2FsbCB1cGRhdGVPZmZzZXRcbiAgICAvLyBhIHNlY29uZCB0aW1lLiBJbiBjYXNlIGl0IHdhbnRzIHVzIHRvIGNoYW5nZSB0aGUgb2Zmc2V0IGFnYWluXG4gICAgLy8gX2NoYW5nZUluUHJvZ3Jlc3MgPT0gdHJ1ZSBjYXNlLCB0aGVuIHdlIGhhdmUgdG8gYWRqdXN0LCBiZWNhdXNlXG4gICAgLy8gdGhlcmUgaXMgbm8gc3VjaCB0aW1lIGluIHRoZSBnaXZlbiB0aW1lem9uZS5cbiAgICBmdW5jdGlvbiBnZXRTZXRPZmZzZXQoaW5wdXQsIGtlZXBMb2NhbFRpbWUsIGtlZXBNaW51dGVzKSB7XG4gICAgICAgIHZhciBvZmZzZXQgPSB0aGlzLl9vZmZzZXQgfHwgMCxcbiAgICAgICAgICAgIGxvY2FsQWRqdXN0O1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgIT0gbnVsbCA/IHRoaXMgOiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaW5wdXQgPSBvZmZzZXRGcm9tU3RyaW5nKG1hdGNoU2hvcnRPZmZzZXQsIGlucHV0KTtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChNYXRoLmFicyhpbnB1dCkgPCAxNiAmJiAha2VlcE1pbnV0ZXMpIHtcbiAgICAgICAgICAgICAgICBpbnB1dCA9IGlucHV0ICogNjA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzVVRDICYmIGtlZXBMb2NhbFRpbWUpIHtcbiAgICAgICAgICAgICAgICBsb2NhbEFkanVzdCA9IGdldERhdGVPZmZzZXQodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9vZmZzZXQgPSBpbnB1dDtcbiAgICAgICAgICAgIHRoaXMuX2lzVVRDID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChsb2NhbEFkanVzdCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGQobG9jYWxBZGp1c3QsICdtJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob2Zmc2V0ICE9PSBpbnB1dCkge1xuICAgICAgICAgICAgICAgIGlmICgha2VlcExvY2FsVGltZSB8fCB0aGlzLl9jaGFuZ2VJblByb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZFN1YnRyYWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUR1cmF0aW9uKGlucHV0IC0gb2Zmc2V0LCAnbScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5fY2hhbmdlSW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VJblByb2dyZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHRoaXMsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VJblByb2dyZXNzID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc1VUQyA/IG9mZnNldCA6IGdldERhdGVPZmZzZXQodGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRab25lKGlucHV0LCBrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgIGlmIChpbnB1dCAhPSBudWxsKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlucHV0ID0gLWlucHV0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldChpbnB1dCwga2VlcExvY2FsVGltZSk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIC10aGlzLnV0Y09mZnNldCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0T2Zmc2V0VG9VVEMoa2VlcExvY2FsVGltZSkge1xuICAgICAgICByZXR1cm4gdGhpcy51dGNPZmZzZXQoMCwga2VlcExvY2FsVGltZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0T2Zmc2V0VG9Mb2NhbChrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgIGlmICh0aGlzLl9pc1VUQykge1xuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoMCwga2VlcExvY2FsVGltZSk7XG4gICAgICAgICAgICB0aGlzLl9pc1VUQyA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoa2VlcExvY2FsVGltZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3VidHJhY3QoZ2V0RGF0ZU9mZnNldCh0aGlzKSwgJ20nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRPZmZzZXRUb1BhcnNlZE9mZnNldCgpIHtcbiAgICAgICAgaWYgKHRoaXMuX3R6bSAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCh0aGlzLl90em0sIGZhbHNlLCB0cnVlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5faSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHZhciB0Wm9uZSA9IG9mZnNldEZyb21TdHJpbmcobWF0Y2hPZmZzZXQsIHRoaXMuX2kpO1xuICAgICAgICAgICAgaWYgKHRab25lICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnV0Y09mZnNldCh0Wm9uZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudXRjT2Zmc2V0KDAsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhc0FsaWduZWRIb3VyT2Zmc2V0KGlucHV0KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpbnB1dCA9IGlucHV0ID8gY3JlYXRlTG9jYWwoaW5wdXQpLnV0Y09mZnNldCgpIDogMDtcblxuICAgICAgICByZXR1cm4gKHRoaXMudXRjT2Zmc2V0KCkgLSBpbnB1dCkgJSA2MCA9PT0gMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0RheWxpZ2h0U2F2aW5nVGltZSgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMudXRjT2Zmc2V0KCkgPiB0aGlzLmNsb25lKCkubW9udGgoMCkudXRjT2Zmc2V0KCkgfHxcbiAgICAgICAgICAgIHRoaXMudXRjT2Zmc2V0KCkgPiB0aGlzLmNsb25lKCkubW9udGgoNSkudXRjT2Zmc2V0KClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0RheWxpZ2h0U2F2aW5nVGltZVNoaWZ0ZWQoKSB7XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQodGhpcy5faXNEU1RTaGlmdGVkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lzRFNUU2hpZnRlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjID0ge30sXG4gICAgICAgICAgICBvdGhlcjtcblxuICAgICAgICBjb3B5Q29uZmlnKGMsIHRoaXMpO1xuICAgICAgICBjID0gcHJlcGFyZUNvbmZpZyhjKTtcblxuICAgICAgICBpZiAoYy5fYSkge1xuICAgICAgICAgICAgb3RoZXIgPSBjLl9pc1VUQyA/IGNyZWF0ZVVUQyhjLl9hKSA6IGNyZWF0ZUxvY2FsKGMuX2EpO1xuICAgICAgICAgICAgdGhpcy5faXNEU1RTaGlmdGVkID1cbiAgICAgICAgICAgICAgICB0aGlzLmlzVmFsaWQoKSAmJiBjb21wYXJlQXJyYXlzKGMuX2EsIG90aGVyLnRvQXJyYXkoKSkgPiAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faXNEU1RTaGlmdGVkID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5faXNEU1RTaGlmdGVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzTG9jYWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/ICF0aGlzLl9pc1VUQyA6IGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVXRjT2Zmc2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLl9pc1VUQyA6IGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVXRjKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLl9pc1VUQyAmJiB0aGlzLl9vZmZzZXQgPT09IDAgOiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBBU1AuTkVUIGpzb24gZGF0ZSBmb3JtYXQgcmVnZXhcbiAgICB2YXIgYXNwTmV0UmVnZXggPSAvXigtfFxcKyk/KD86KFxcZCopWy4gXSk/KFxcZCspOihcXGQrKSg/OjooXFxkKykoXFwuXFxkKik/KT8kLyxcbiAgICAgICAgLy8gZnJvbSBodHRwOi8vZG9jcy5jbG9zdXJlLWxpYnJhcnkuZ29vZ2xlY29kZS5jb20vZ2l0L2Nsb3N1cmVfZ29vZ19kYXRlX2RhdGUuanMuc291cmNlLmh0bWxcbiAgICAgICAgLy8gc29tZXdoYXQgbW9yZSBpbiBsaW5lIHdpdGggNC40LjMuMiAyMDA0IHNwZWMsIGJ1dCBhbGxvd3MgZGVjaW1hbCBhbnl3aGVyZVxuICAgICAgICAvLyBhbmQgZnVydGhlciBtb2RpZmllZCB0byBhbGxvdyBmb3Igc3RyaW5ncyBjb250YWluaW5nIGJvdGggd2VlayBhbmQgZGF5XG4gICAgICAgIGlzb1JlZ2V4ID1cbiAgICAgICAgICAgIC9eKC18XFwrKT9QKD86KFstK10/WzAtOSwuXSopWSk/KD86KFstK10/WzAtOSwuXSopTSk/KD86KFstK10/WzAtOSwuXSopVyk/KD86KFstK10/WzAtOSwuXSopRCk/KD86VCg/OihbLStdP1swLTksLl0qKUgpPyg/OihbLStdP1swLTksLl0qKU0pPyg/OihbLStdP1swLTksLl0qKVMpPyk/JC87XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVEdXJhdGlvbihpbnB1dCwga2V5KSB7XG4gICAgICAgIHZhciBkdXJhdGlvbiA9IGlucHV0LFxuICAgICAgICAgICAgLy8gbWF0Y2hpbmcgYWdhaW5zdCByZWdleHAgaXMgZXhwZW5zaXZlLCBkbyBpdCBvbiBkZW1hbmRcbiAgICAgICAgICAgIG1hdGNoID0gbnVsbCxcbiAgICAgICAgICAgIHNpZ24sXG4gICAgICAgICAgICByZXQsXG4gICAgICAgICAgICBkaWZmUmVzO1xuXG4gICAgICAgIGlmIChpc0R1cmF0aW9uKGlucHV0KSkge1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgbXM6IGlucHV0Ll9taWxsaXNlY29uZHMsXG4gICAgICAgICAgICAgICAgZDogaW5wdXQuX2RheXMsXG4gICAgICAgICAgICAgICAgTTogaW5wdXQuX21vbnRocyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAoaXNOdW1iZXIoaW5wdXQpIHx8ICFpc05hTigraW5wdXQpKSB7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IHt9O1xuICAgICAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uW2tleV0gPSAraW5wdXQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uLm1pbGxpc2Vjb25kcyA9ICtpbnB1dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICgobWF0Y2ggPSBhc3BOZXRSZWdleC5leGVjKGlucHV0KSkpIHtcbiAgICAgICAgICAgIHNpZ24gPSBtYXRjaFsxXSA9PT0gJy0nID8gLTEgOiAxO1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgICAgICBkOiB0b0ludChtYXRjaFtEQVRFXSkgKiBzaWduLFxuICAgICAgICAgICAgICAgIGg6IHRvSW50KG1hdGNoW0hPVVJdKSAqIHNpZ24sXG4gICAgICAgICAgICAgICAgbTogdG9JbnQobWF0Y2hbTUlOVVRFXSkgKiBzaWduLFxuICAgICAgICAgICAgICAgIHM6IHRvSW50KG1hdGNoW1NFQ09ORF0pICogc2lnbixcbiAgICAgICAgICAgICAgICBtczogdG9JbnQoYWJzUm91bmQobWF0Y2hbTUlMTElTRUNPTkRdICogMTAwMCkpICogc2lnbiwgLy8gdGhlIG1pbGxpc2Vjb25kIGRlY2ltYWwgcG9pbnQgaXMgaW5jbHVkZWQgaW4gdGhlIG1hdGNoXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKChtYXRjaCA9IGlzb1JlZ2V4LmV4ZWMoaW5wdXQpKSkge1xuICAgICAgICAgICAgc2lnbiA9IG1hdGNoWzFdID09PSAnLScgPyAtMSA6IDE7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IHtcbiAgICAgICAgICAgICAgICB5OiBwYXJzZUlzbyhtYXRjaFsyXSwgc2lnbiksXG4gICAgICAgICAgICAgICAgTTogcGFyc2VJc28obWF0Y2hbM10sIHNpZ24pLFxuICAgICAgICAgICAgICAgIHc6IHBhcnNlSXNvKG1hdGNoWzRdLCBzaWduKSxcbiAgICAgICAgICAgICAgICBkOiBwYXJzZUlzbyhtYXRjaFs1XSwgc2lnbiksXG4gICAgICAgICAgICAgICAgaDogcGFyc2VJc28obWF0Y2hbNl0sIHNpZ24pLFxuICAgICAgICAgICAgICAgIG06IHBhcnNlSXNvKG1hdGNoWzddLCBzaWduKSxcbiAgICAgICAgICAgICAgICBzOiBwYXJzZUlzbyhtYXRjaFs4XSwgc2lnbiksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKGR1cmF0aW9uID09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIGNoZWNrcyBmb3IgbnVsbCBvciB1bmRlZmluZWRcbiAgICAgICAgICAgIGR1cmF0aW9uID0ge307XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICB0eXBlb2YgZHVyYXRpb24gPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAoJ2Zyb20nIGluIGR1cmF0aW9uIHx8ICd0bycgaW4gZHVyYXRpb24pXG4gICAgICAgICkge1xuICAgICAgICAgICAgZGlmZlJlcyA9IG1vbWVudHNEaWZmZXJlbmNlKFxuICAgICAgICAgICAgICAgIGNyZWF0ZUxvY2FsKGR1cmF0aW9uLmZyb20pLFxuICAgICAgICAgICAgICAgIGNyZWF0ZUxvY2FsKGR1cmF0aW9uLnRvKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgZHVyYXRpb24gPSB7fTtcbiAgICAgICAgICAgIGR1cmF0aW9uLm1zID0gZGlmZlJlcy5taWxsaXNlY29uZHM7XG4gICAgICAgICAgICBkdXJhdGlvbi5NID0gZGlmZlJlcy5tb250aHM7XG4gICAgICAgIH1cblxuICAgICAgICByZXQgPSBuZXcgRHVyYXRpb24oZHVyYXRpb24pO1xuXG4gICAgICAgIGlmIChpc0R1cmF0aW9uKGlucHV0KSAmJiBoYXNPd25Qcm9wKGlucHV0LCAnX2xvY2FsZScpKSB7XG4gICAgICAgICAgICByZXQuX2xvY2FsZSA9IGlucHV0Ll9sb2NhbGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNEdXJhdGlvbihpbnB1dCkgJiYgaGFzT3duUHJvcChpbnB1dCwgJ19pc1ZhbGlkJykpIHtcbiAgICAgICAgICAgIHJldC5faXNWYWxpZCA9IGlucHV0Ll9pc1ZhbGlkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG5cbiAgICBjcmVhdGVEdXJhdGlvbi5mbiA9IER1cmF0aW9uLnByb3RvdHlwZTtcbiAgICBjcmVhdGVEdXJhdGlvbi5pbnZhbGlkID0gY3JlYXRlSW52YWxpZCQxO1xuXG4gICAgZnVuY3Rpb24gcGFyc2VJc28oaW5wLCBzaWduKSB7XG4gICAgICAgIC8vIFdlJ2Qgbm9ybWFsbHkgdXNlIH5+aW5wIGZvciB0aGlzLCBidXQgdW5mb3J0dW5hdGVseSBpdCBhbHNvXG4gICAgICAgIC8vIGNvbnZlcnRzIGZsb2F0cyB0byBpbnRzLlxuICAgICAgICAvLyBpbnAgbWF5IGJlIHVuZGVmaW5lZCwgc28gY2FyZWZ1bCBjYWxsaW5nIHJlcGxhY2Ugb24gaXQuXG4gICAgICAgIHZhciByZXMgPSBpbnAgJiYgcGFyc2VGbG9hdChpbnAucmVwbGFjZSgnLCcsICcuJykpO1xuICAgICAgICAvLyBhcHBseSBzaWduIHdoaWxlIHdlJ3JlIGF0IGl0XG4gICAgICAgIHJldHVybiAoaXNOYU4ocmVzKSA/IDAgOiByZXMpICogc2lnbjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwb3NpdGl2ZU1vbWVudHNEaWZmZXJlbmNlKGJhc2UsIG90aGVyKSB7XG4gICAgICAgIHZhciByZXMgPSB7fTtcblxuICAgICAgICByZXMubW9udGhzID1cbiAgICAgICAgICAgIG90aGVyLm1vbnRoKCkgLSBiYXNlLm1vbnRoKCkgKyAob3RoZXIueWVhcigpIC0gYmFzZS55ZWFyKCkpICogMTI7XG4gICAgICAgIGlmIChiYXNlLmNsb25lKCkuYWRkKHJlcy5tb250aHMsICdNJykuaXNBZnRlcihvdGhlcikpIHtcbiAgICAgICAgICAgIC0tcmVzLm1vbnRocztcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcy5taWxsaXNlY29uZHMgPSArb3RoZXIgLSArYmFzZS5jbG9uZSgpLmFkZChyZXMubW9udGhzLCAnTScpO1xuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbW9tZW50c0RpZmZlcmVuY2UoYmFzZSwgb3RoZXIpIHtcbiAgICAgICAgdmFyIHJlcztcbiAgICAgICAgaWYgKCEoYmFzZS5pc1ZhbGlkKCkgJiYgb3RoZXIuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIHsgbWlsbGlzZWNvbmRzOiAwLCBtb250aHM6IDAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIG90aGVyID0gY2xvbmVXaXRoT2Zmc2V0KG90aGVyLCBiYXNlKTtcbiAgICAgICAgaWYgKGJhc2UuaXNCZWZvcmUob3RoZXIpKSB7XG4gICAgICAgICAgICByZXMgPSBwb3NpdGl2ZU1vbWVudHNEaWZmZXJlbmNlKGJhc2UsIG90aGVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcyA9IHBvc2l0aXZlTW9tZW50c0RpZmZlcmVuY2Uob3RoZXIsIGJhc2UpO1xuICAgICAgICAgICAgcmVzLm1pbGxpc2Vjb25kcyA9IC1yZXMubWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgcmVzLm1vbnRocyA9IC1yZXMubW9udGhzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvLyBUT0RPOiByZW1vdmUgJ25hbWUnIGFyZyBhZnRlciBkZXByZWNhdGlvbiBpcyByZW1vdmVkXG4gICAgZnVuY3Rpb24gY3JlYXRlQWRkZXIoZGlyZWN0aW9uLCBuYW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHZhciBkdXIsIHRtcDtcbiAgICAgICAgICAgIC8vaW52ZXJ0IHRoZSBhcmd1bWVudHMsIGJ1dCBjb21wbGFpbiBhYm91dCBpdFxuICAgICAgICAgICAgaWYgKHBlcmlvZCAhPT0gbnVsbCAmJiAhaXNOYU4oK3BlcmlvZCkpIHtcbiAgICAgICAgICAgICAgICBkZXByZWNhdGVTaW1wbGUoXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICdtb21lbnQoKS4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJyhwZXJpb2QsIG51bWJlcikgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBtb21lbnQoKS4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJyhudW1iZXIsIHBlcmlvZCkuICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1NlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2FkZC1pbnZlcnRlZC1wYXJhbS8gZm9yIG1vcmUgaW5mby4nXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0bXAgPSB2YWw7XG4gICAgICAgICAgICAgICAgdmFsID0gcGVyaW9kO1xuICAgICAgICAgICAgICAgIHBlcmlvZCA9IHRtcDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZHVyID0gY3JlYXRlRHVyYXRpb24odmFsLCBwZXJpb2QpO1xuICAgICAgICAgICAgYWRkU3VidHJhY3QodGhpcywgZHVyLCBkaXJlY3Rpb24pO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkU3VidHJhY3QobW9tLCBkdXJhdGlvbiwgaXNBZGRpbmcsIHVwZGF0ZU9mZnNldCkge1xuICAgICAgICB2YXIgbWlsbGlzZWNvbmRzID0gZHVyYXRpb24uX21pbGxpc2Vjb25kcyxcbiAgICAgICAgICAgIGRheXMgPSBhYnNSb3VuZChkdXJhdGlvbi5fZGF5cyksXG4gICAgICAgICAgICBtb250aHMgPSBhYnNSb3VuZChkdXJhdGlvbi5fbW9udGhzKTtcblxuICAgICAgICBpZiAoIW1vbS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIC8vIE5vIG9wXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB1cGRhdGVPZmZzZXQgPSB1cGRhdGVPZmZzZXQgPT0gbnVsbCA/IHRydWUgOiB1cGRhdGVPZmZzZXQ7XG5cbiAgICAgICAgaWYgKG1vbnRocykge1xuICAgICAgICAgICAgc2V0TW9udGgobW9tLCBnZXQobW9tLCAnTW9udGgnKSArIG1vbnRocyAqIGlzQWRkaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF5cykge1xuICAgICAgICAgICAgc2V0JDEobW9tLCAnRGF0ZScsIGdldChtb20sICdEYXRlJykgKyBkYXlzICogaXNBZGRpbmcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtaWxsaXNlY29uZHMpIHtcbiAgICAgICAgICAgIG1vbS5fZC5zZXRUaW1lKG1vbS5fZC52YWx1ZU9mKCkgKyBtaWxsaXNlY29uZHMgKiBpc0FkZGluZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVwZGF0ZU9mZnNldCkge1xuICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KG1vbSwgZGF5cyB8fCBtb250aHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGFkZCA9IGNyZWF0ZUFkZGVyKDEsICdhZGQnKSxcbiAgICAgICAgc3VidHJhY3QgPSBjcmVhdGVBZGRlcigtMSwgJ3N1YnRyYWN0Jyk7XG5cbiAgICBmdW5jdGlvbiBpc1N0cmluZyhpbnB1dCkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJyB8fCBpbnB1dCBpbnN0YW5jZW9mIFN0cmluZztcbiAgICB9XG5cbiAgICAvLyB0eXBlIE1vbWVudElucHV0ID0gTW9tZW50IHwgRGF0ZSB8IHN0cmluZyB8IG51bWJlciB8IChudW1iZXIgfCBzdHJpbmcpW10gfCBNb21lbnRJbnB1dE9iamVjdCB8IHZvaWQ7IC8vIG51bGwgfCB1bmRlZmluZWRcbiAgICBmdW5jdGlvbiBpc01vbWVudElucHV0KGlucHV0KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBpc01vbWVudChpbnB1dCkgfHxcbiAgICAgICAgICAgIGlzRGF0ZShpbnB1dCkgfHxcbiAgICAgICAgICAgIGlzU3RyaW5nKGlucHV0KSB8fFxuICAgICAgICAgICAgaXNOdW1iZXIoaW5wdXQpIHx8XG4gICAgICAgICAgICBpc051bWJlck9yU3RyaW5nQXJyYXkoaW5wdXQpIHx8XG4gICAgICAgICAgICBpc01vbWVudElucHV0T2JqZWN0KGlucHV0KSB8fFxuICAgICAgICAgICAgaW5wdXQgPT09IG51bGwgfHxcbiAgICAgICAgICAgIGlucHV0ID09PSB1bmRlZmluZWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc01vbWVudElucHV0T2JqZWN0KGlucHV0KSB7XG4gICAgICAgIHZhciBvYmplY3RUZXN0ID0gaXNPYmplY3QoaW5wdXQpICYmICFpc09iamVjdEVtcHR5KGlucHV0KSxcbiAgICAgICAgICAgIHByb3BlcnR5VGVzdCA9IGZhbHNlLFxuICAgICAgICAgICAgcHJvcGVydGllcyA9IFtcbiAgICAgICAgICAgICAgICAneWVhcnMnLFxuICAgICAgICAgICAgICAgICd5ZWFyJyxcbiAgICAgICAgICAgICAgICAneScsXG4gICAgICAgICAgICAgICAgJ21vbnRocycsXG4gICAgICAgICAgICAgICAgJ21vbnRoJyxcbiAgICAgICAgICAgICAgICAnTScsXG4gICAgICAgICAgICAgICAgJ2RheXMnLFxuICAgICAgICAgICAgICAgICdkYXknLFxuICAgICAgICAgICAgICAgICdkJyxcbiAgICAgICAgICAgICAgICAnZGF0ZXMnLFxuICAgICAgICAgICAgICAgICdkYXRlJyxcbiAgICAgICAgICAgICAgICAnRCcsXG4gICAgICAgICAgICAgICAgJ2hvdXJzJyxcbiAgICAgICAgICAgICAgICAnaG91cicsXG4gICAgICAgICAgICAgICAgJ2gnLFxuICAgICAgICAgICAgICAgICdtaW51dGVzJyxcbiAgICAgICAgICAgICAgICAnbWludXRlJyxcbiAgICAgICAgICAgICAgICAnbScsXG4gICAgICAgICAgICAgICAgJ3NlY29uZHMnLFxuICAgICAgICAgICAgICAgICdzZWNvbmQnLFxuICAgICAgICAgICAgICAgICdzJyxcbiAgICAgICAgICAgICAgICAnbWlsbGlzZWNvbmRzJyxcbiAgICAgICAgICAgICAgICAnbWlsbGlzZWNvbmQnLFxuICAgICAgICAgICAgICAgICdtcycsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIHByb3BlcnR5LFxuICAgICAgICAgICAgcHJvcGVydHlMZW4gPSBwcm9wZXJ0aWVzLmxlbmd0aDtcblxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcHJvcGVydHlMZW47IGkgKz0gMSkge1xuICAgICAgICAgICAgcHJvcGVydHkgPSBwcm9wZXJ0aWVzW2ldO1xuICAgICAgICAgICAgcHJvcGVydHlUZXN0ID0gcHJvcGVydHlUZXN0IHx8IGhhc093blByb3AoaW5wdXQsIHByb3BlcnR5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvYmplY3RUZXN0ICYmIHByb3BlcnR5VGVzdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc051bWJlck9yU3RyaW5nQXJyYXkoaW5wdXQpIHtcbiAgICAgICAgdmFyIGFycmF5VGVzdCA9IGlzQXJyYXkoaW5wdXQpLFxuICAgICAgICAgICAgZGF0YVR5cGVUZXN0ID0gZmFsc2U7XG4gICAgICAgIGlmIChhcnJheVRlc3QpIHtcbiAgICAgICAgICAgIGRhdGFUeXBlVGVzdCA9XG4gICAgICAgICAgICAgICAgaW5wdXQuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAhaXNOdW1iZXIoaXRlbSkgJiYgaXNTdHJpbmcoaW5wdXQpO1xuICAgICAgICAgICAgICAgIH0pLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXJyYXlUZXN0ICYmIGRhdGFUeXBlVGVzdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0NhbGVuZGFyU3BlYyhpbnB1dCkge1xuICAgICAgICB2YXIgb2JqZWN0VGVzdCA9IGlzT2JqZWN0KGlucHV0KSAmJiAhaXNPYmplY3RFbXB0eShpbnB1dCksXG4gICAgICAgICAgICBwcm9wZXJ0eVRlc3QgPSBmYWxzZSxcbiAgICAgICAgICAgIHByb3BlcnRpZXMgPSBbXG4gICAgICAgICAgICAgICAgJ3NhbWVEYXknLFxuICAgICAgICAgICAgICAgICduZXh0RGF5JyxcbiAgICAgICAgICAgICAgICAnbGFzdERheScsXG4gICAgICAgICAgICAgICAgJ25leHRXZWVrJyxcbiAgICAgICAgICAgICAgICAnbGFzdFdlZWsnLFxuICAgICAgICAgICAgICAgICdzYW1lRWxzZScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIHByb3BlcnR5O1xuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBwcm9wZXJ0aWVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICBwcm9wZXJ0eSA9IHByb3BlcnRpZXNbaV07XG4gICAgICAgICAgICBwcm9wZXJ0eVRlc3QgPSBwcm9wZXJ0eVRlc3QgfHwgaGFzT3duUHJvcChpbnB1dCwgcHJvcGVydHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9iamVjdFRlc3QgJiYgcHJvcGVydHlUZXN0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldENhbGVuZGFyRm9ybWF0KG15TW9tZW50LCBub3cpIHtcbiAgICAgICAgdmFyIGRpZmYgPSBteU1vbWVudC5kaWZmKG5vdywgJ2RheXMnLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIGRpZmYgPCAtNlxuICAgICAgICAgICAgPyAnc2FtZUVsc2UnXG4gICAgICAgICAgICA6IGRpZmYgPCAtMVxuICAgICAgICAgICAgPyAnbGFzdFdlZWsnXG4gICAgICAgICAgICA6IGRpZmYgPCAwXG4gICAgICAgICAgICA/ICdsYXN0RGF5J1xuICAgICAgICAgICAgOiBkaWZmIDwgMVxuICAgICAgICAgICAgPyAnc2FtZURheSdcbiAgICAgICAgICAgIDogZGlmZiA8IDJcbiAgICAgICAgICAgID8gJ25leHREYXknXG4gICAgICAgICAgICA6IGRpZmYgPCA3XG4gICAgICAgICAgICA/ICduZXh0V2VlaydcbiAgICAgICAgICAgIDogJ3NhbWVFbHNlJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjYWxlbmRhciQxKHRpbWUsIGZvcm1hdHMpIHtcbiAgICAgICAgLy8gU3VwcG9ydCBmb3Igc2luZ2xlIHBhcmFtZXRlciwgZm9ybWF0cyBvbmx5IG92ZXJsb2FkIHRvIHRoZSBjYWxlbmRhciBmdW5jdGlvblxuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgaWYgKCFhcmd1bWVudHNbMF0pIHtcbiAgICAgICAgICAgICAgICB0aW1lID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGZvcm1hdHMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzTW9tZW50SW5wdXQoYXJndW1lbnRzWzBdKSkge1xuICAgICAgICAgICAgICAgIHRpbWUgPSBhcmd1bWVudHNbMF07XG4gICAgICAgICAgICAgICAgZm9ybWF0cyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNDYWxlbmRhclNwZWMoYXJndW1lbnRzWzBdKSkge1xuICAgICAgICAgICAgICAgIGZvcm1hdHMgPSBhcmd1bWVudHNbMF07XG4gICAgICAgICAgICAgICAgdGltZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBXZSB3YW50IHRvIGNvbXBhcmUgdGhlIHN0YXJ0IG9mIHRvZGF5LCB2cyB0aGlzLlxuICAgICAgICAvLyBHZXR0aW5nIHN0YXJ0LW9mLXRvZGF5IGRlcGVuZHMgb24gd2hldGhlciB3ZSdyZSBsb2NhbC91dGMvb2Zmc2V0IG9yIG5vdC5cbiAgICAgICAgdmFyIG5vdyA9IHRpbWUgfHwgY3JlYXRlTG9jYWwoKSxcbiAgICAgICAgICAgIHNvZCA9IGNsb25lV2l0aE9mZnNldChub3csIHRoaXMpLnN0YXJ0T2YoJ2RheScpLFxuICAgICAgICAgICAgZm9ybWF0ID0gaG9va3MuY2FsZW5kYXJGb3JtYXQodGhpcywgc29kKSB8fCAnc2FtZUVsc2UnLFxuICAgICAgICAgICAgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICBmb3JtYXRzICYmXG4gICAgICAgICAgICAgICAgKGlzRnVuY3Rpb24oZm9ybWF0c1tmb3JtYXRdKVxuICAgICAgICAgICAgICAgICAgICA/IGZvcm1hdHNbZm9ybWF0XS5jYWxsKHRoaXMsIG5vdylcbiAgICAgICAgICAgICAgICAgICAgOiBmb3JtYXRzW2Zvcm1hdF0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdChcbiAgICAgICAgICAgIG91dHB1dCB8fCB0aGlzLmxvY2FsZURhdGEoKS5jYWxlbmRhcihmb3JtYXQsIHRoaXMsIGNyZWF0ZUxvY2FsKG5vdykpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2xvbmUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgTW9tZW50KHRoaXMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQWZ0ZXIoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHZhciBsb2NhbElucHV0ID0gaXNNb21lbnQoaW5wdXQpID8gaW5wdXQgOiBjcmVhdGVMb2NhbChpbnB1dCk7XG4gICAgICAgIGlmICghKHRoaXMuaXNWYWxpZCgpICYmIGxvY2FsSW5wdXQuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpIHx8ICdtaWxsaXNlY29uZCc7XG4gICAgICAgIGlmICh1bml0cyA9PT0gJ21pbGxpc2Vjb25kJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVPZigpID4gbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxJbnB1dC52YWx1ZU9mKCkgPCB0aGlzLmNsb25lKCkuc3RhcnRPZih1bml0cykudmFsdWVPZigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNCZWZvcmUoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHZhciBsb2NhbElucHV0ID0gaXNNb21lbnQoaW5wdXQpID8gaW5wdXQgOiBjcmVhdGVMb2NhbChpbnB1dCk7XG4gICAgICAgIGlmICghKHRoaXMuaXNWYWxpZCgpICYmIGxvY2FsSW5wdXQuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpIHx8ICdtaWxsaXNlY29uZCc7XG4gICAgICAgIGlmICh1bml0cyA9PT0gJ21pbGxpc2Vjb25kJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVPZigpIDwgbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmVuZE9mKHVuaXRzKS52YWx1ZU9mKCkgPCBsb2NhbElucHV0LnZhbHVlT2YoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQmV0d2Vlbihmcm9tLCB0bywgdW5pdHMsIGluY2x1c2l2aXR5KSB7XG4gICAgICAgIHZhciBsb2NhbEZyb20gPSBpc01vbWVudChmcm9tKSA/IGZyb20gOiBjcmVhdGVMb2NhbChmcm9tKSxcbiAgICAgICAgICAgIGxvY2FsVG8gPSBpc01vbWVudCh0bykgPyB0byA6IGNyZWF0ZUxvY2FsKHRvKTtcbiAgICAgICAgaWYgKCEodGhpcy5pc1ZhbGlkKCkgJiYgbG9jYWxGcm9tLmlzVmFsaWQoKSAmJiBsb2NhbFRvLmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpbmNsdXNpdml0eSA9IGluY2x1c2l2aXR5IHx8ICcoKSc7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAoaW5jbHVzaXZpdHlbMF0gPT09ICcoJ1xuICAgICAgICAgICAgICAgID8gdGhpcy5pc0FmdGVyKGxvY2FsRnJvbSwgdW5pdHMpXG4gICAgICAgICAgICAgICAgOiAhdGhpcy5pc0JlZm9yZShsb2NhbEZyb20sIHVuaXRzKSkgJiZcbiAgICAgICAgICAgIChpbmNsdXNpdml0eVsxXSA9PT0gJyknXG4gICAgICAgICAgICAgICAgPyB0aGlzLmlzQmVmb3JlKGxvY2FsVG8sIHVuaXRzKVxuICAgICAgICAgICAgICAgIDogIXRoaXMuaXNBZnRlcihsb2NhbFRvLCB1bml0cykpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNTYW1lKGlucHV0LCB1bml0cykge1xuICAgICAgICB2YXIgbG9jYWxJbnB1dCA9IGlzTW9tZW50KGlucHV0KSA/IGlucHV0IDogY3JlYXRlTG9jYWwoaW5wdXQpLFxuICAgICAgICAgICAgaW5wdXRNcztcbiAgICAgICAgaWYgKCEodGhpcy5pc1ZhbGlkKCkgJiYgbG9jYWxJbnB1dC5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cykgfHwgJ21pbGxpc2Vjb25kJztcbiAgICAgICAgaWYgKHVuaXRzID09PSAnbWlsbGlzZWNvbmQnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZU9mKCkgPT09IGxvY2FsSW5wdXQudmFsdWVPZigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW5wdXRNcyA9IGxvY2FsSW5wdXQudmFsdWVPZigpO1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICB0aGlzLmNsb25lKCkuc3RhcnRPZih1bml0cykudmFsdWVPZigpIDw9IGlucHV0TXMgJiZcbiAgICAgICAgICAgICAgICBpbnB1dE1zIDw9IHRoaXMuY2xvbmUoKS5lbmRPZih1bml0cykudmFsdWVPZigpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNTYW1lT3JBZnRlcihpbnB1dCwgdW5pdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNTYW1lKGlucHV0LCB1bml0cykgfHwgdGhpcy5pc0FmdGVyKGlucHV0LCB1bml0cyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNTYW1lT3JCZWZvcmUoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzU2FtZShpbnB1dCwgdW5pdHMpIHx8IHRoaXMuaXNCZWZvcmUoaW5wdXQsIHVuaXRzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkaWZmKGlucHV0LCB1bml0cywgYXNGbG9hdCkge1xuICAgICAgICB2YXIgdGhhdCwgem9uZURlbHRhLCBvdXRwdXQ7XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoYXQgPSBjbG9uZVdpdGhPZmZzZXQoaW5wdXQsIHRoaXMpO1xuXG4gICAgICAgIGlmICghdGhhdC5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cblxuICAgICAgICB6b25lRGVsdGEgPSAodGhhdC51dGNPZmZzZXQoKSAtIHRoaXMudXRjT2Zmc2V0KCkpICogNmU0O1xuXG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuXG4gICAgICAgIHN3aXRjaCAodW5pdHMpIHtcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgIG91dHB1dCA9IG1vbnRoRGlmZih0aGlzLCB0aGF0KSAvIDEyO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgICAgICAgIG91dHB1dCA9IG1vbnRoRGlmZih0aGlzLCB0aGF0KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3F1YXJ0ZXInOlxuICAgICAgICAgICAgICAgIG91dHB1dCA9IG1vbnRoRGlmZih0aGlzLCB0aGF0KSAvIDM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICh0aGlzIC0gdGhhdCkgLyAxZTM7XG4gICAgICAgICAgICAgICAgYnJlYWs7IC8vIDEwMDBcbiAgICAgICAgICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gKHRoaXMgLSB0aGF0KSAvIDZlNDtcbiAgICAgICAgICAgICAgICBicmVhazsgLy8gMTAwMCAqIDYwXG4gICAgICAgICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAodGhpcyAtIHRoYXQpIC8gMzZlNTtcbiAgICAgICAgICAgICAgICBicmVhazsgLy8gMTAwMCAqIDYwICogNjBcbiAgICAgICAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gKHRoaXMgLSB0aGF0IC0gem9uZURlbHRhKSAvIDg2NGU1O1xuICAgICAgICAgICAgICAgIGJyZWFrOyAvLyAxMDAwICogNjAgKiA2MCAqIDI0LCBuZWdhdGUgZHN0XG4gICAgICAgICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAodGhpcyAtIHRoYXQgLSB6b25lRGVsdGEpIC8gNjA0OGU1O1xuICAgICAgICAgICAgICAgIGJyZWFrOyAvLyAxMDAwICogNjAgKiA2MCAqIDI0ICogNywgbmVnYXRlIGRzdFxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSB0aGlzIC0gdGhhdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhc0Zsb2F0ID8gb3V0cHV0IDogYWJzRmxvb3Iob3V0cHV0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb250aERpZmYoYSwgYikge1xuICAgICAgICBpZiAoYS5kYXRlKCkgPCBiLmRhdGUoKSkge1xuICAgICAgICAgICAgLy8gZW5kLW9mLW1vbnRoIGNhbGN1bGF0aW9ucyB3b3JrIGNvcnJlY3Qgd2hlbiB0aGUgc3RhcnQgbW9udGggaGFzIG1vcmVcbiAgICAgICAgICAgIC8vIGRheXMgdGhhbiB0aGUgZW5kIG1vbnRoLlxuICAgICAgICAgICAgcmV0dXJuIC1tb250aERpZmYoYiwgYSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZGlmZmVyZW5jZSBpbiBtb250aHNcbiAgICAgICAgdmFyIHdob2xlTW9udGhEaWZmID0gKGIueWVhcigpIC0gYS55ZWFyKCkpICogMTIgKyAoYi5tb250aCgpIC0gYS5tb250aCgpKSxcbiAgICAgICAgICAgIC8vIGIgaXMgaW4gKGFuY2hvciAtIDEgbW9udGgsIGFuY2hvciArIDEgbW9udGgpXG4gICAgICAgICAgICBhbmNob3IgPSBhLmNsb25lKCkuYWRkKHdob2xlTW9udGhEaWZmLCAnbW9udGhzJyksXG4gICAgICAgICAgICBhbmNob3IyLFxuICAgICAgICAgICAgYWRqdXN0O1xuXG4gICAgICAgIGlmIChiIC0gYW5jaG9yIDwgMCkge1xuICAgICAgICAgICAgYW5jaG9yMiA9IGEuY2xvbmUoKS5hZGQod2hvbGVNb250aERpZmYgLSAxLCAnbW9udGhzJyk7XG4gICAgICAgICAgICAvLyBsaW5lYXIgYWNyb3NzIHRoZSBtb250aFxuICAgICAgICAgICAgYWRqdXN0ID0gKGIgLSBhbmNob3IpIC8gKGFuY2hvciAtIGFuY2hvcjIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYW5jaG9yMiA9IGEuY2xvbmUoKS5hZGQod2hvbGVNb250aERpZmYgKyAxLCAnbW9udGhzJyk7XG4gICAgICAgICAgICAvLyBsaW5lYXIgYWNyb3NzIHRoZSBtb250aFxuICAgICAgICAgICAgYWRqdXN0ID0gKGIgLSBhbmNob3IpIC8gKGFuY2hvcjIgLSBhbmNob3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9jaGVjayBmb3IgbmVnYXRpdmUgemVybywgcmV0dXJuIHplcm8gaWYgbmVnYXRpdmUgemVyb1xuICAgICAgICByZXR1cm4gLSh3aG9sZU1vbnRoRGlmZiArIGFkanVzdCkgfHwgMDtcbiAgICB9XG5cbiAgICBob29rcy5kZWZhdWx0Rm9ybWF0ID0gJ1lZWVktTU0tRERUSEg6bW06c3NaJztcbiAgICBob29rcy5kZWZhdWx0Rm9ybWF0VXRjID0gJ1lZWVktTU0tRERUSEg6bW06c3NbWl0nO1xuXG4gICAgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNsb25lKCkubG9jYWxlKCdlbicpLmZvcm1hdCgnZGRkIE1NTSBERCBZWVlZIEhIOm1tOnNzIFtHTVRdWlonKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0lTT1N0cmluZyhrZWVwT2Zmc2V0KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciB1dGMgPSBrZWVwT2Zmc2V0ICE9PSB0cnVlLFxuICAgICAgICAgICAgbSA9IHV0YyA/IHRoaXMuY2xvbmUoKS51dGMoKSA6IHRoaXM7XG4gICAgICAgIGlmIChtLnllYXIoKSA8IDAgfHwgbS55ZWFyKCkgPiA5OTk5KSB7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0TW9tZW50KFxuICAgICAgICAgICAgICAgIG0sXG4gICAgICAgICAgICAgICAgdXRjXG4gICAgICAgICAgICAgICAgICAgID8gJ1lZWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1taXSdcbiAgICAgICAgICAgICAgICAgICAgOiAnWVlZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTWidcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRnVuY3Rpb24oRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcpKSB7XG4gICAgICAgICAgICAvLyBuYXRpdmUgaW1wbGVtZW50YXRpb24gaXMgfjUweCBmYXN0ZXIsIHVzZSBpdCB3aGVuIHdlIGNhblxuICAgICAgICAgICAgaWYgKHV0Yykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLnZhbHVlT2YoKSArIHRoaXMudXRjT2Zmc2V0KCkgKiA2MCAqIDEwMDApXG4gICAgICAgICAgICAgICAgICAgIC50b0lTT1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKCdaJywgZm9ybWF0TW9tZW50KG0sICdaJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtYXRNb21lbnQoXG4gICAgICAgICAgICBtLFxuICAgICAgICAgICAgdXRjID8gJ1lZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0nIDogJ1lZWVktTU0tRERbVF1ISDptbTpzcy5TU1NaJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybiBhIGh1bWFuIHJlYWRhYmxlIHJlcHJlc2VudGF0aW9uIG9mIGEgbW9tZW50IHRoYXQgY2FuXG4gICAgICogYWxzbyBiZSBldmFsdWF0ZWQgdG8gZ2V0IGEgbmV3IG1vbWVudCB3aGljaCBpcyB0aGUgc2FtZVxuICAgICAqXG4gICAgICogQGxpbmsgaHR0cHM6Ly9ub2RlanMub3JnL2Rpc3QvbGF0ZXN0L2RvY3MvYXBpL3V0aWwuaHRtbCN1dGlsX2N1c3RvbV9pbnNwZWN0X2Z1bmN0aW9uX29uX29iamVjdHNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ21vbWVudC5pbnZhbGlkKC8qICcgKyB0aGlzLl9pICsgJyAqLyknO1xuICAgICAgICB9XG4gICAgICAgIHZhciBmdW5jID0gJ21vbWVudCcsXG4gICAgICAgICAgICB6b25lID0gJycsXG4gICAgICAgICAgICBwcmVmaXgsXG4gICAgICAgICAgICB5ZWFyLFxuICAgICAgICAgICAgZGF0ZXRpbWUsXG4gICAgICAgICAgICBzdWZmaXg7XG4gICAgICAgIGlmICghdGhpcy5pc0xvY2FsKCkpIHtcbiAgICAgICAgICAgIGZ1bmMgPSB0aGlzLnV0Y09mZnNldCgpID09PSAwID8gJ21vbWVudC51dGMnIDogJ21vbWVudC5wYXJzZVpvbmUnO1xuICAgICAgICAgICAgem9uZSA9ICdaJztcbiAgICAgICAgfVxuICAgICAgICBwcmVmaXggPSAnWycgKyBmdW5jICsgJyhcIl0nO1xuICAgICAgICB5ZWFyID0gMCA8PSB0aGlzLnllYXIoKSAmJiB0aGlzLnllYXIoKSA8PSA5OTk5ID8gJ1lZWVknIDogJ1lZWVlZWSc7XG4gICAgICAgIGRhdGV0aW1lID0gJy1NTS1ERFtUXUhIOm1tOnNzLlNTUyc7XG4gICAgICAgIHN1ZmZpeCA9IHpvbmUgKyAnW1wiKV0nO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdChwcmVmaXggKyB5ZWFyICsgZGF0ZXRpbWUgKyBzdWZmaXgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZvcm1hdChpbnB1dFN0cmluZykge1xuICAgICAgICBpZiAoIWlucHV0U3RyaW5nKSB7XG4gICAgICAgICAgICBpbnB1dFN0cmluZyA9IHRoaXMuaXNVdGMoKVxuICAgICAgICAgICAgICAgID8gaG9va3MuZGVmYXVsdEZvcm1hdFV0Y1xuICAgICAgICAgICAgICAgIDogaG9va3MuZGVmYXVsdEZvcm1hdDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgb3V0cHV0ID0gZm9ybWF0TW9tZW50KHRoaXMsIGlucHV0U3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLnBvc3Rmb3JtYXQob3V0cHV0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmcm9tKHRpbWUsIHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5pc1ZhbGlkKCkgJiZcbiAgICAgICAgICAgICgoaXNNb21lbnQodGltZSkgJiYgdGltZS5pc1ZhbGlkKCkpIHx8IGNyZWF0ZUxvY2FsKHRpbWUpLmlzVmFsaWQoKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlRHVyYXRpb24oeyB0bzogdGhpcywgZnJvbTogdGltZSB9KVxuICAgICAgICAgICAgICAgIC5sb2NhbGUodGhpcy5sb2NhbGUoKSlcbiAgICAgICAgICAgICAgICAuaHVtYW5pemUoIXdpdGhvdXRTdWZmaXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmcm9tTm93KHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbShjcmVhdGVMb2NhbCgpLCB3aXRob3V0U3VmZml4KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0byh0aW1lLCB3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuaXNWYWxpZCgpICYmXG4gICAgICAgICAgICAoKGlzTW9tZW50KHRpbWUpICYmIHRpbWUuaXNWYWxpZCgpKSB8fCBjcmVhdGVMb2NhbCh0aW1lKS5pc1ZhbGlkKCkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKHsgZnJvbTogdGhpcywgdG86IHRpbWUgfSlcbiAgICAgICAgICAgICAgICAubG9jYWxlKHRoaXMubG9jYWxlKCkpXG4gICAgICAgICAgICAgICAgLmh1bWFuaXplKCF3aXRob3V0U3VmZml4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9Ob3cod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICByZXR1cm4gdGhpcy50byhjcmVhdGVMb2NhbCgpLCB3aXRob3V0U3VmZml4KTtcbiAgICB9XG5cbiAgICAvLyBJZiBwYXNzZWQgYSBsb2NhbGUga2V5LCBpdCB3aWxsIHNldCB0aGUgbG9jYWxlIGZvciB0aGlzXG4gICAgLy8gaW5zdGFuY2UuICBPdGhlcndpc2UsIGl0IHdpbGwgcmV0dXJuIHRoZSBsb2NhbGUgY29uZmlndXJhdGlvblxuICAgIC8vIHZhcmlhYmxlcyBmb3IgdGhpcyBpbnN0YW5jZS5cbiAgICBmdW5jdGlvbiBsb2NhbGUoa2V5KSB7XG4gICAgICAgIHZhciBuZXdMb2NhbGVEYXRhO1xuXG4gICAgICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsZS5fYWJicjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld0xvY2FsZURhdGEgPSBnZXRMb2NhbGUoa2V5KTtcbiAgICAgICAgICAgIGlmIChuZXdMb2NhbGVEYXRhICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2NhbGUgPSBuZXdMb2NhbGVEYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbGFuZyA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ21vbWVudCgpLmxhbmcoKSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2UgbW9tZW50KCkubG9jYWxlRGF0YSgpIHRvIGdldCB0aGUgbGFuZ3VhZ2UgY29uZmlndXJhdGlvbi4gVXNlIG1vbWVudCgpLmxvY2FsZSgpIHRvIGNoYW5nZSBsYW5ndWFnZXMuJyxcbiAgICAgICAgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGUoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVEYXRhKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlO1xuICAgIH1cblxuICAgIHZhciBNU19QRVJfU0VDT05EID0gMTAwMCxcbiAgICAgICAgTVNfUEVSX01JTlVURSA9IDYwICogTVNfUEVSX1NFQ09ORCxcbiAgICAgICAgTVNfUEVSX0hPVVIgPSA2MCAqIE1TX1BFUl9NSU5VVEUsXG4gICAgICAgIE1TX1BFUl80MDBfWUVBUlMgPSAoMzY1ICogNDAwICsgOTcpICogMjQgKiBNU19QRVJfSE9VUjtcblxuICAgIC8vIGFjdHVhbCBtb2R1bG8gLSBoYW5kbGVzIG5lZ2F0aXZlIG51bWJlcnMgKGZvciBkYXRlcyBiZWZvcmUgMTk3MCk6XG4gICAgZnVuY3Rpb24gbW9kJDEoZGl2aWRlbmQsIGRpdmlzb3IpIHtcbiAgICAgICAgcmV0dXJuICgoZGl2aWRlbmQgJSBkaXZpc29yKSArIGRpdmlzb3IpICUgZGl2aXNvcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbFN0YXJ0T2ZEYXRlKHksIG0sIGQpIHtcbiAgICAgICAgLy8gdGhlIGRhdGUgY29uc3RydWN0b3IgcmVtYXBzIHllYXJzIDAtOTkgdG8gMTkwMC0xOTk5XG4gICAgICAgIGlmICh5IDwgMTAwICYmIHkgPj0gMCkge1xuICAgICAgICAgICAgLy8gcHJlc2VydmUgbGVhcCB5ZWFycyB1c2luZyBhIGZ1bGwgNDAwIHllYXIgY3ljbGUsIHRoZW4gcmVzZXRcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSh5ICsgNDAwLCBtLCBkKSAtIE1TX1BFUl80MDBfWUVBUlM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoeSwgbSwgZCkudmFsdWVPZigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdXRjU3RhcnRPZkRhdGUoeSwgbSwgZCkge1xuICAgICAgICAvLyBEYXRlLlVUQyByZW1hcHMgeWVhcnMgMC05OSB0byAxOTAwLTE5OTlcbiAgICAgICAgaWYgKHkgPCAxMDAgJiYgeSA+PSAwKSB7XG4gICAgICAgICAgICAvLyBwcmVzZXJ2ZSBsZWFwIHllYXJzIHVzaW5nIGEgZnVsbCA0MDAgeWVhciBjeWNsZSwgdGhlbiByZXNldFxuICAgICAgICAgICAgcmV0dXJuIERhdGUuVVRDKHkgKyA0MDAsIG0sIGQpIC0gTVNfUEVSXzQwMF9ZRUFSUztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBEYXRlLlVUQyh5LCBtLCBkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0YXJ0T2YodW5pdHMpIHtcbiAgICAgICAgdmFyIHRpbWUsIHN0YXJ0T2ZEYXRlO1xuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcbiAgICAgICAgaWYgKHVuaXRzID09PSB1bmRlZmluZWQgfHwgdW5pdHMgPT09ICdtaWxsaXNlY29uZCcgfHwgIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXJ0T2ZEYXRlID0gdGhpcy5faXNVVEMgPyB1dGNTdGFydE9mRGF0ZSA6IGxvY2FsU3RhcnRPZkRhdGU7XG5cbiAgICAgICAgc3dpdGNoICh1bml0cykge1xuICAgICAgICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgICAgICAgICAgdGltZSA9IHN0YXJ0T2ZEYXRlKHRoaXMueWVhcigpLCAwLCAxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3F1YXJ0ZXInOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZShcbiAgICAgICAgICAgICAgICAgICAgdGhpcy55ZWFyKCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGgoKSAtICh0aGlzLm1vbnRoKCkgJSAzKSxcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgICAgICAgdGltZSA9IHN0YXJ0T2ZEYXRlKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCksIDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgICAgICAgICAgdGltZSA9IHN0YXJ0T2ZEYXRlKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnllYXIoKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250aCgpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGUoKSAtIHRoaXMud2Vla2RheSgpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2lzb1dlZWsnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZShcbiAgICAgICAgICAgICAgICAgICAgdGhpcy55ZWFyKCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGgoKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlKCkgLSAodGhpcy5pc29XZWVrZGF5KCkgLSAxKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkYXknOlxuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICAgICAgdGltZSA9IHN0YXJ0T2ZEYXRlKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCksIHRoaXMuZGF0ZSgpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2hvdXInOlxuICAgICAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9kLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICB0aW1lIC09IG1vZCQxKFxuICAgICAgICAgICAgICAgICAgICB0aW1lICsgKHRoaXMuX2lzVVRDID8gMCA6IHRoaXMudXRjT2Zmc2V0KCkgKiBNU19QRVJfTUlOVVRFKSxcbiAgICAgICAgICAgICAgICAgICAgTVNfUEVSX0hPVVJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gdGhpcy5fZC52YWx1ZU9mKCk7XG4gICAgICAgICAgICAgICAgdGltZSAtPSBtb2QkMSh0aW1lLCBNU19QRVJfTUlOVVRFKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgICAgICAgICAgICAgdGltZSA9IHRoaXMuX2QudmFsdWVPZigpO1xuICAgICAgICAgICAgICAgIHRpbWUgLT0gbW9kJDEodGltZSwgTVNfUEVSX1NFQ09ORCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kLnNldFRpbWUodGltZSk7XG4gICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZW5kT2YodW5pdHMpIHtcbiAgICAgICAgdmFyIHRpbWUsIHN0YXJ0T2ZEYXRlO1xuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcbiAgICAgICAgaWYgKHVuaXRzID09PSB1bmRlZmluZWQgfHwgdW5pdHMgPT09ICdtaWxsaXNlY29uZCcgfHwgIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXJ0T2ZEYXRlID0gdGhpcy5faXNVVEMgPyB1dGNTdGFydE9mRGF0ZSA6IGxvY2FsU3RhcnRPZkRhdGU7XG5cbiAgICAgICAgc3dpdGNoICh1bml0cykge1xuICAgICAgICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgICAgICAgICAgdGltZSA9IHN0YXJ0T2ZEYXRlKHRoaXMueWVhcigpICsgMSwgMCwgMSkgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgICAgICAgICAgdGltZSA9XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0T2ZEYXRlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy55ZWFyKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRoKCkgLSAodGhpcy5tb250aCgpICUgMykgKyAzLFxuICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICApIC0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSArIDEsIDEpIC0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgICAgICAgICAgIHRpbWUgPVxuICAgICAgICAgICAgICAgICAgICBzdGFydE9mRGF0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMueWVhcigpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250aCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlKCkgLSB0aGlzLndlZWtkYXkoKSArIDdcbiAgICAgICAgICAgICAgICAgICAgKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdpc29XZWVrJzpcbiAgICAgICAgICAgICAgICB0aW1lID1cbiAgICAgICAgICAgICAgICAgICAgc3RhcnRPZkRhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnllYXIoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGgoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZSgpIC0gKHRoaXMuaXNvV2Vla2RheSgpIC0gMSkgKyA3XG4gICAgICAgICAgICAgICAgICAgICkgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZGF5JzpcbiAgICAgICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZSh0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpLCB0aGlzLmRhdGUoKSArIDEpIC0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2hvdXInOlxuICAgICAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9kLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICB0aW1lICs9XG4gICAgICAgICAgICAgICAgICAgIE1TX1BFUl9IT1VSIC1cbiAgICAgICAgICAgICAgICAgICAgbW9kJDEoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lICsgKHRoaXMuX2lzVVRDID8gMCA6IHRoaXMudXRjT2Zmc2V0KCkgKiBNU19QRVJfTUlOVVRFKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIE1TX1BFUl9IT1VSXG4gICAgICAgICAgICAgICAgICAgICkgLVxuICAgICAgICAgICAgICAgICAgICAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gdGhpcy5fZC52YWx1ZU9mKCk7XG4gICAgICAgICAgICAgICAgdGltZSArPSBNU19QRVJfTUlOVVRFIC0gbW9kJDEodGltZSwgTVNfUEVSX01JTlVURSkgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gdGhpcy5fZC52YWx1ZU9mKCk7XG4gICAgICAgICAgICAgICAgdGltZSArPSBNU19QRVJfU0VDT05EIC0gbW9kJDEodGltZSwgTVNfUEVSX1NFQ09ORCkgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZC5zZXRUaW1lKHRpbWUpO1xuICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcywgdHJ1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZhbHVlT2YoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kLnZhbHVlT2YoKSAtICh0aGlzLl9vZmZzZXQgfHwgMCkgKiA2MDAwMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1bml4KCkge1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcih0aGlzLnZhbHVlT2YoKSAvIDEwMDApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvRGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMudmFsdWVPZigpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0FycmF5KCkge1xuICAgICAgICB2YXIgbSA9IHRoaXM7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBtLnllYXIoKSxcbiAgICAgICAgICAgIG0ubW9udGgoKSxcbiAgICAgICAgICAgIG0uZGF0ZSgpLFxuICAgICAgICAgICAgbS5ob3VyKCksXG4gICAgICAgICAgICBtLm1pbnV0ZSgpLFxuICAgICAgICAgICAgbS5zZWNvbmQoKSxcbiAgICAgICAgICAgIG0ubWlsbGlzZWNvbmQoKSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b09iamVjdCgpIHtcbiAgICAgICAgdmFyIG0gPSB0aGlzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeWVhcnM6IG0ueWVhcigpLFxuICAgICAgICAgICAgbW9udGhzOiBtLm1vbnRoKCksXG4gICAgICAgICAgICBkYXRlOiBtLmRhdGUoKSxcbiAgICAgICAgICAgIGhvdXJzOiBtLmhvdXJzKCksXG4gICAgICAgICAgICBtaW51dGVzOiBtLm1pbnV0ZXMoKSxcbiAgICAgICAgICAgIHNlY29uZHM6IG0uc2Vjb25kcygpLFxuICAgICAgICAgICAgbWlsbGlzZWNvbmRzOiBtLm1pbGxpc2Vjb25kcygpLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvSlNPTigpIHtcbiAgICAgICAgLy8gbmV3IERhdGUoTmFOKS50b0pTT04oKSA9PT0gbnVsbFxuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLnRvSVNPU3RyaW5nKCkgOiBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVmFsaWQkMigpIHtcbiAgICAgICAgcmV0dXJuIGlzVmFsaWQodGhpcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2luZ0ZsYWdzKCkge1xuICAgICAgICByZXR1cm4gZXh0ZW5kKHt9LCBnZXRQYXJzaW5nRmxhZ3ModGhpcykpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGludmFsaWRBdCgpIHtcbiAgICAgICAgcmV0dXJuIGdldFBhcnNpbmdGbGFncyh0aGlzKS5vdmVyZmxvdztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGlvbkRhdGEoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbnB1dDogdGhpcy5faSxcbiAgICAgICAgICAgIGZvcm1hdDogdGhpcy5fZixcbiAgICAgICAgICAgIGxvY2FsZTogdGhpcy5fbG9jYWxlLFxuICAgICAgICAgICAgaXNVVEM6IHRoaXMuX2lzVVRDLFxuICAgICAgICAgICAgc3RyaWN0OiB0aGlzLl9zdHJpY3QsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ04nLCAwLCAwLCAnZXJhQWJicicpO1xuICAgIGFkZEZvcm1hdFRva2VuKCdOTicsIDAsIDAsICdlcmFBYmJyJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ05OTicsIDAsIDAsICdlcmFBYmJyJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ05OTk4nLCAwLCAwLCAnZXJhTmFtZScpO1xuICAgIGFkZEZvcm1hdFRva2VuKCdOTk5OTicsIDAsIDAsICdlcmFOYXJyb3cnKTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCd5JywgWyd5JywgMV0sICd5bycsICdlcmFZZWFyJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ3knLCBbJ3l5JywgMl0sIDAsICdlcmFZZWFyJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ3knLCBbJ3l5eScsIDNdLCAwLCAnZXJhWWVhcicpO1xuICAgIGFkZEZvcm1hdFRva2VuKCd5JywgWyd5eXl5JywgNF0sIDAsICdlcmFZZWFyJyk7XG5cbiAgICBhZGRSZWdleFRva2VuKCdOJywgbWF0Y2hFcmFBYmJyKTtcbiAgICBhZGRSZWdleFRva2VuKCdOTicsIG1hdGNoRXJhQWJicik7XG4gICAgYWRkUmVnZXhUb2tlbignTk5OJywgbWF0Y2hFcmFBYmJyKTtcbiAgICBhZGRSZWdleFRva2VuKCdOTk5OJywgbWF0Y2hFcmFOYW1lKTtcbiAgICBhZGRSZWdleFRva2VuKCdOTk5OTicsIG1hdGNoRXJhTmFycm93KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oXG4gICAgICAgIFsnTicsICdOTicsICdOTk4nLCAnTk5OTicsICdOTk5OTiddLFxuICAgICAgICBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgICAgICB2YXIgZXJhID0gY29uZmlnLl9sb2NhbGUuZXJhc1BhcnNlKGlucHV0LCB0b2tlbiwgY29uZmlnLl9zdHJpY3QpO1xuICAgICAgICAgICAgaWYgKGVyYSkge1xuICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmVyYSA9IGVyYTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuaW52YWxpZEVyYSA9IGlucHV0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgKTtcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ3knLCBtYXRjaFVuc2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCd5eScsIG1hdGNoVW5zaWduZWQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ3l5eScsIG1hdGNoVW5zaWduZWQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ3l5eXknLCBtYXRjaFVuc2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCd5bycsIG1hdGNoRXJhWWVhck9yZGluYWwpO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ3knLCAneXknLCAneXl5JywgJ3l5eXknXSwgWUVBUik7XG4gICAgYWRkUGFyc2VUb2tlbihbJ3lvJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgdmFyIG1hdGNoO1xuICAgICAgICBpZiAoY29uZmlnLl9sb2NhbGUuX2VyYVllYXJPcmRpbmFsUmVnZXgpIHtcbiAgICAgICAgICAgIG1hdGNoID0gaW5wdXQubWF0Y2goY29uZmlnLl9sb2NhbGUuX2VyYVllYXJPcmRpbmFsUmVnZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbmZpZy5fbG9jYWxlLmVyYVllYXJPcmRpbmFsUGFyc2UpIHtcbiAgICAgICAgICAgIGFycmF5W1lFQVJdID0gY29uZmlnLl9sb2NhbGUuZXJhWWVhck9yZGluYWxQYXJzZShpbnB1dCwgbWF0Y2gpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXJyYXlbWUVBUl0gPSBwYXJzZUludChpbnB1dCwgMTApO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVFcmFzKG0sIGZvcm1hdCkge1xuICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgIGwsXG4gICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgZXJhcyA9IHRoaXMuX2VyYXMgfHwgZ2V0TG9jYWxlKCdlbicpLl9lcmFzO1xuICAgICAgICBmb3IgKGkgPSAwLCBsID0gZXJhcy5sZW5ndGg7IGkgPCBsOyArK2kpIHtcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZW9mIGVyYXNbaV0uc2luY2UpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgICAgICAgICAvLyB0cnVuY2F0ZSB0aW1lXG4gICAgICAgICAgICAgICAgICAgIGRhdGUgPSBob29rcyhlcmFzW2ldLnNpbmNlKS5zdGFydE9mKCdkYXknKTtcbiAgICAgICAgICAgICAgICAgICAgZXJhc1tpXS5zaW5jZSA9IGRhdGUudmFsdWVPZigpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3dpdGNoICh0eXBlb2YgZXJhc1tpXS51bnRpbCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAgICAgICAgICAgICAgICAgIGVyYXNbaV0udW50aWwgPSArSW5maW5pdHk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICAgICAgICAgIC8vIHRydW5jYXRlIHRpbWVcbiAgICAgICAgICAgICAgICAgICAgZGF0ZSA9IGhvb2tzKGVyYXNbaV0udW50aWwpLnN0YXJ0T2YoJ2RheScpLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICAgICAgZXJhc1tpXS51bnRpbCA9IGRhdGUudmFsdWVPZigpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZXJhcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVFcmFzUGFyc2UoZXJhTmFtZSwgZm9ybWF0LCBzdHJpY3QpIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBsLFxuICAgICAgICAgICAgZXJhcyA9IHRoaXMuZXJhcygpLFxuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIGFiYnIsXG4gICAgICAgICAgICBuYXJyb3c7XG4gICAgICAgIGVyYU5hbWUgPSBlcmFOYW1lLnRvVXBwZXJDYXNlKCk7XG5cbiAgICAgICAgZm9yIChpID0gMCwgbCA9IGVyYXMubGVuZ3RoOyBpIDwgbDsgKytpKSB7XG4gICAgICAgICAgICBuYW1lID0gZXJhc1tpXS5uYW1lLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICBhYmJyID0gZXJhc1tpXS5hYmJyLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICBuYXJyb3cgPSBlcmFzW2ldLm5hcnJvdy50b1VwcGVyQ2FzZSgpO1xuXG4gICAgICAgICAgICBpZiAoc3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnTic6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ05OJzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnTk5OJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhYmJyID09PSBlcmFOYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVyYXNbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlICdOTk5OJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuYW1lID09PSBlcmFOYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVyYXNbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlICdOTk5OTic6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmFycm93ID09PSBlcmFOYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVyYXNbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFtuYW1lLCBhYmJyLCBuYXJyb3ddLmluZGV4T2YoZXJhTmFtZSkgPj0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlcmFzW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxlRXJhc0NvbnZlcnRZZWFyKGVyYSwgeWVhcikge1xuICAgICAgICB2YXIgZGlyID0gZXJhLnNpbmNlIDw9IGVyYS51bnRpbCA/ICsxIDogLTE7XG4gICAgICAgIGlmICh5ZWFyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBob29rcyhlcmEuc2luY2UpLnllYXIoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBob29rcyhlcmEuc2luY2UpLnllYXIoKSArICh5ZWFyIC0gZXJhLm9mZnNldCkgKiBkaXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRFcmFOYW1lKCkge1xuICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgIGwsXG4gICAgICAgICAgICB2YWwsXG4gICAgICAgICAgICBlcmFzID0gdGhpcy5sb2NhbGVEYXRhKCkuZXJhcygpO1xuICAgICAgICBmb3IgKGkgPSAwLCBsID0gZXJhcy5sZW5ndGg7IGkgPCBsOyArK2kpIHtcbiAgICAgICAgICAgIC8vIHRydW5jYXRlIHRpbWVcbiAgICAgICAgICAgIHZhbCA9IHRoaXMuY2xvbmUoKS5zdGFydE9mKCdkYXknKS52YWx1ZU9mKCk7XG5cbiAgICAgICAgICAgIGlmIChlcmFzW2ldLnNpbmNlIDw9IHZhbCAmJiB2YWwgPD0gZXJhc1tpXS51bnRpbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlcmFzW2ldLm5hbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJhc1tpXS51bnRpbCA8PSB2YWwgJiYgdmFsIDw9IGVyYXNbaV0uc2luY2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJhc1tpXS5uYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEVyYU5hcnJvdygpIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBsLFxuICAgICAgICAgICAgdmFsLFxuICAgICAgICAgICAgZXJhcyA9IHRoaXMubG9jYWxlRGF0YSgpLmVyYXMoKTtcbiAgICAgICAgZm9yIChpID0gMCwgbCA9IGVyYXMubGVuZ3RoOyBpIDwgbDsgKytpKSB7XG4gICAgICAgICAgICAvLyB0cnVuY2F0ZSB0aW1lXG4gICAgICAgICAgICB2YWwgPSB0aGlzLmNsb25lKCkuc3RhcnRPZignZGF5JykudmFsdWVPZigpO1xuXG4gICAgICAgICAgICBpZiAoZXJhc1tpXS5zaW5jZSA8PSB2YWwgJiYgdmFsIDw9IGVyYXNbaV0udW50aWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJhc1tpXS5uYXJyb3c7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJhc1tpXS51bnRpbCA8PSB2YWwgJiYgdmFsIDw9IGVyYXNbaV0uc2luY2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJhc1tpXS5uYXJyb3c7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0RXJhQWJicigpIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBsLFxuICAgICAgICAgICAgdmFsLFxuICAgICAgICAgICAgZXJhcyA9IHRoaXMubG9jYWxlRGF0YSgpLmVyYXMoKTtcbiAgICAgICAgZm9yIChpID0gMCwgbCA9IGVyYXMubGVuZ3RoOyBpIDwgbDsgKytpKSB7XG4gICAgICAgICAgICAvLyB0cnVuY2F0ZSB0aW1lXG4gICAgICAgICAgICB2YWwgPSB0aGlzLmNsb25lKCkuc3RhcnRPZignZGF5JykudmFsdWVPZigpO1xuXG4gICAgICAgICAgICBpZiAoZXJhc1tpXS5zaW5jZSA8PSB2YWwgJiYgdmFsIDw9IGVyYXNbaV0udW50aWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJhc1tpXS5hYmJyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVyYXNbaV0udW50aWwgPD0gdmFsICYmIHZhbCA8PSBlcmFzW2ldLnNpbmNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVyYXNbaV0uYWJicjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRFcmFZZWFyKCkge1xuICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgIGwsXG4gICAgICAgICAgICBkaXIsXG4gICAgICAgICAgICB2YWwsXG4gICAgICAgICAgICBlcmFzID0gdGhpcy5sb2NhbGVEYXRhKCkuZXJhcygpO1xuICAgICAgICBmb3IgKGkgPSAwLCBsID0gZXJhcy5sZW5ndGg7IGkgPCBsOyArK2kpIHtcbiAgICAgICAgICAgIGRpciA9IGVyYXNbaV0uc2luY2UgPD0gZXJhc1tpXS51bnRpbCA/ICsxIDogLTE7XG5cbiAgICAgICAgICAgIC8vIHRydW5jYXRlIHRpbWVcbiAgICAgICAgICAgIHZhbCA9IHRoaXMuY2xvbmUoKS5zdGFydE9mKCdkYXknKS52YWx1ZU9mKCk7XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAoZXJhc1tpXS5zaW5jZSA8PSB2YWwgJiYgdmFsIDw9IGVyYXNbaV0udW50aWwpIHx8XG4gICAgICAgICAgICAgICAgKGVyYXNbaV0udW50aWwgPD0gdmFsICYmIHZhbCA8PSBlcmFzW2ldLnNpbmNlKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMueWVhcigpIC0gaG9va3MoZXJhc1tpXS5zaW5jZSkueWVhcigpKSAqIGRpciArXG4gICAgICAgICAgICAgICAgICAgIGVyYXNbaV0ub2Zmc2V0XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnllYXIoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlcmFzTmFtZVJlZ2V4KGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX2VyYXNOYW1lUmVnZXgnKSkge1xuICAgICAgICAgICAgY29tcHV0ZUVyYXNQYXJzZS5jYWxsKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc1N0cmljdCA/IHRoaXMuX2VyYXNOYW1lUmVnZXggOiB0aGlzLl9lcmFzUmVnZXg7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXJhc0FiYnJSZWdleChpc1N0cmljdCkge1xuICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ19lcmFzQWJiclJlZ2V4JykpIHtcbiAgICAgICAgICAgIGNvbXB1dGVFcmFzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNTdHJpY3QgPyB0aGlzLl9lcmFzQWJiclJlZ2V4IDogdGhpcy5fZXJhc1JlZ2V4O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVyYXNOYXJyb3dSZWdleChpc1N0cmljdCkge1xuICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ19lcmFzTmFycm93UmVnZXgnKSkge1xuICAgICAgICAgICAgY29tcHV0ZUVyYXNQYXJzZS5jYWxsKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc1N0cmljdCA/IHRoaXMuX2VyYXNOYXJyb3dSZWdleCA6IHRoaXMuX2VyYXNSZWdleDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYXRjaEVyYUFiYnIoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLmVyYXNBYmJyUmVnZXgoaXNTdHJpY3QpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1hdGNoRXJhTmFtZShpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUuZXJhc05hbWVSZWdleChpc1N0cmljdCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWF0Y2hFcmFOYXJyb3coaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLmVyYXNOYXJyb3dSZWdleChpc1N0cmljdCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWF0Y2hFcmFZZWFyT3JkaW5hbChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUuX2VyYVllYXJPcmRpbmFsUmVnZXggfHwgbWF0Y2hVbnNpZ25lZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb21wdXRlRXJhc1BhcnNlKCkge1xuICAgICAgICB2YXIgYWJiclBpZWNlcyA9IFtdLFxuICAgICAgICAgICAgbmFtZVBpZWNlcyA9IFtdLFxuICAgICAgICAgICAgbmFycm93UGllY2VzID0gW10sXG4gICAgICAgICAgICBtaXhlZFBpZWNlcyA9IFtdLFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIGwsXG4gICAgICAgICAgICBlcmFzID0gdGhpcy5lcmFzKCk7XG5cbiAgICAgICAgZm9yIChpID0gMCwgbCA9IGVyYXMubGVuZ3RoOyBpIDwgbDsgKytpKSB7XG4gICAgICAgICAgICBuYW1lUGllY2VzLnB1c2gocmVnZXhFc2NhcGUoZXJhc1tpXS5uYW1lKSk7XG4gICAgICAgICAgICBhYmJyUGllY2VzLnB1c2gocmVnZXhFc2NhcGUoZXJhc1tpXS5hYmJyKSk7XG4gICAgICAgICAgICBuYXJyb3dQaWVjZXMucHVzaChyZWdleEVzY2FwZShlcmFzW2ldLm5hcnJvdykpO1xuXG4gICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKHJlZ2V4RXNjYXBlKGVyYXNbaV0ubmFtZSkpO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChyZWdleEVzY2FwZShlcmFzW2ldLmFiYnIpKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2gocmVnZXhFc2NhcGUoZXJhc1tpXS5uYXJyb3cpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2VyYXNSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIG1peGVkUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICAgICAgdGhpcy5fZXJhc05hbWVSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIG5hbWVQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgICAgICB0aGlzLl9lcmFzQWJiclJlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgYWJiclBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX2VyYXNOYXJyb3dSZWdleCA9IG5ldyBSZWdFeHAoXG4gICAgICAgICAgICAnXignICsgbmFycm93UGllY2VzLmpvaW4oJ3wnKSArICcpJyxcbiAgICAgICAgICAgICdpJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnZ2cnLCAyXSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy53ZWVrWWVhcigpICUgMTAwO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydHRycsIDJdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzb1dlZWtZZWFyKCkgJSAxMDA7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBhZGRXZWVrWWVhckZvcm1hdFRva2VuKHRva2VuLCBnZXR0ZXIpIHtcbiAgICAgICAgYWRkRm9ybWF0VG9rZW4oMCwgW3Rva2VuLCB0b2tlbi5sZW5ndGhdLCAwLCBnZXR0ZXIpO1xuICAgIH1cblxuICAgIGFkZFdlZWtZZWFyRm9ybWF0VG9rZW4oJ2dnZ2cnLCAnd2Vla1llYXInKTtcbiAgICBhZGRXZWVrWWVhckZvcm1hdFRva2VuKCdnZ2dnZycsICd3ZWVrWWVhcicpO1xuICAgIGFkZFdlZWtZZWFyRm9ybWF0VG9rZW4oJ0dHR0cnLCAnaXNvV2Vla1llYXInKTtcbiAgICBhZGRXZWVrWWVhckZvcm1hdFRva2VuKCdHR0dHRycsICdpc29XZWVrWWVhcicpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCd3ZWVrWWVhcicsICdnZycpO1xuICAgIGFkZFVuaXRBbGlhcygnaXNvV2Vla1llYXInLCAnR0cnKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ3dlZWtZZWFyJywgMSk7XG4gICAgYWRkVW5pdFByaW9yaXR5KCdpc29XZWVrWWVhcicsIDEpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignRycsIG1hdGNoU2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCdnJywgbWF0Y2hTaWduZWQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0dHJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2dnJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0dHR0cnLCBtYXRjaDF0bzQsIG1hdGNoNCk7XG4gICAgYWRkUmVnZXhUb2tlbignZ2dnZycsIG1hdGNoMXRvNCwgbWF0Y2g0KTtcbiAgICBhZGRSZWdleFRva2VuKCdHR0dHRycsIG1hdGNoMXRvNiwgbWF0Y2g2KTtcbiAgICBhZGRSZWdleFRva2VuKCdnZ2dnZycsIG1hdGNoMXRvNiwgbWF0Y2g2KTtcblxuICAgIGFkZFdlZWtQYXJzZVRva2VuKFxuICAgICAgICBbJ2dnZ2cnLCAnZ2dnZ2cnLCAnR0dHRycsICdHR0dHRyddLFxuICAgICAgICBmdW5jdGlvbiAoaW5wdXQsIHdlZWssIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgICAgIHdlZWtbdG9rZW4uc3Vic3RyKDAsIDIpXSA9IHRvSW50KGlucHV0KTtcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihbJ2dnJywgJ0dHJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB3ZWVrW3Rva2VuXSA9IGhvb2tzLnBhcnNlVHdvRGlnaXRZZWFyKGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldFdlZWtZZWFyKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBnZXRTZXRXZWVrWWVhckhlbHBlci5jYWxsKFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgdGhpcy53ZWVrKCksXG4gICAgICAgICAgICB0aGlzLndlZWtkYXkoKSxcbiAgICAgICAgICAgIHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdyxcbiAgICAgICAgICAgIHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRveVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldElTT1dlZWtZZWFyKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBnZXRTZXRXZWVrWWVhckhlbHBlci5jYWxsKFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgdGhpcy5pc29XZWVrKCksXG4gICAgICAgICAgICB0aGlzLmlzb1dlZWtkYXkoKSxcbiAgICAgICAgICAgIDEsXG4gICAgICAgICAgICA0XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0SVNPV2Vla3NJblllYXIoKSB7XG4gICAgICAgIHJldHVybiB3ZWVrc0luWWVhcih0aGlzLnllYXIoKSwgMSwgNCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0SVNPV2Vla3NJbklTT1dlZWtZZWFyKCkge1xuICAgICAgICByZXR1cm4gd2Vla3NJblllYXIodGhpcy5pc29XZWVrWWVhcigpLCAxLCA0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRXZWVrc0luWWVhcigpIHtcbiAgICAgICAgdmFyIHdlZWtJbmZvID0gdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWs7XG4gICAgICAgIHJldHVybiB3ZWVrc0luWWVhcih0aGlzLnllYXIoKSwgd2Vla0luZm8uZG93LCB3ZWVrSW5mby5kb3kpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFdlZWtzSW5XZWVrWWVhcigpIHtcbiAgICAgICAgdmFyIHdlZWtJbmZvID0gdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWs7XG4gICAgICAgIHJldHVybiB3ZWVrc0luWWVhcih0aGlzLndlZWtZZWFyKCksIHdlZWtJbmZvLmRvdywgd2Vla0luZm8uZG95KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRXZWVrWWVhckhlbHBlcihpbnB1dCwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIHdlZWtzVGFyZ2V0O1xuICAgICAgICBpZiAoaW5wdXQgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtPZlllYXIodGhpcywgZG93LCBkb3kpLnllYXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3ZWVrc1RhcmdldCA9IHdlZWtzSW5ZZWFyKGlucHV0LCBkb3csIGRveSk7XG4gICAgICAgICAgICBpZiAod2VlayA+IHdlZWtzVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgd2VlayA9IHdlZWtzVGFyZ2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNldFdlZWtBbGwuY2FsbCh0aGlzLCBpbnB1dCwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0V2Vla0FsbCh3ZWVrWWVhciwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIGRheU9mWWVhckRhdGEgPSBkYXlPZlllYXJGcm9tV2Vla3Mod2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KSxcbiAgICAgICAgICAgIGRhdGUgPSBjcmVhdGVVVENEYXRlKGRheU9mWWVhckRhdGEueWVhciwgMCwgZGF5T2ZZZWFyRGF0YS5kYXlPZlllYXIpO1xuXG4gICAgICAgIHRoaXMueWVhcihkYXRlLmdldFVUQ0Z1bGxZZWFyKCkpO1xuICAgICAgICB0aGlzLm1vbnRoKGRhdGUuZ2V0VVRDTW9udGgoKSk7XG4gICAgICAgIHRoaXMuZGF0ZShkYXRlLmdldFVUQ0RhdGUoKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdRJywgMCwgJ1FvJywgJ3F1YXJ0ZXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygncXVhcnRlcicsICdRJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdxdWFydGVyJywgNyk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdRJywgbWF0Y2gxKTtcbiAgICBhZGRQYXJzZVRva2VuKCdRJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtNT05USF0gPSAodG9JbnQoaW5wdXQpIC0gMSkgKiAzO1xuICAgIH0pO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gZ2V0U2V0UXVhcnRlcihpbnB1dCkge1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbFxuICAgICAgICAgICAgPyBNYXRoLmNlaWwoKHRoaXMubW9udGgoKSArIDEpIC8gMylcbiAgICAgICAgICAgIDogdGhpcy5tb250aCgoaW5wdXQgLSAxKSAqIDMgKyAodGhpcy5tb250aCgpICUgMykpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdEJywgWydERCcsIDJdLCAnRG8nLCAnZGF0ZScpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdkYXRlJywgJ0QnKTtcblxuICAgIC8vIFBSSU9SSVRZXG4gICAgYWRkVW5pdFByaW9yaXR5KCdkYXRlJywgOSk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdEJywgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdERCcsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdEbycsIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBcIm9yZGluYWxQYXJzZVwiIGZhbGxiYWNrIGluIG5leHQgbWFqb3IgcmVsZWFzZS5cbiAgICAgICAgcmV0dXJuIGlzU3RyaWN0XG4gICAgICAgICAgICA/IGxvY2FsZS5fZGF5T2ZNb250aE9yZGluYWxQYXJzZSB8fCBsb2NhbGUuX29yZGluYWxQYXJzZVxuICAgICAgICAgICAgOiBsb2NhbGUuX2RheU9mTW9udGhPcmRpbmFsUGFyc2VMZW5pZW50O1xuICAgIH0pO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ0QnLCAnREQnXSwgREFURSk7XG4gICAgYWRkUGFyc2VUb2tlbignRG8nLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W0RBVEVdID0gdG9JbnQoaW5wdXQubWF0Y2gobWF0Y2gxdG8yKVswXSk7XG4gICAgfSk7XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICB2YXIgZ2V0U2V0RGF5T2ZNb250aCA9IG1ha2VHZXRTZXQoJ0RhdGUnLCB0cnVlKTtcblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdEREQnLCBbJ0REREQnLCAzXSwgJ0RERG8nLCAnZGF5T2ZZZWFyJyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ2RheU9mWWVhcicsICdEREQnKTtcblxuICAgIC8vIFBSSU9SSVRZXG4gICAgYWRkVW5pdFByaW9yaXR5KCdkYXlPZlllYXInLCA0KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ0RERCcsIG1hdGNoMXRvMyk7XG4gICAgYWRkUmVnZXhUb2tlbignRERERCcsIG1hdGNoMyk7XG4gICAgYWRkUGFyc2VUb2tlbihbJ0RERCcsICdEREREJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX2RheU9mWWVhciA9IHRvSW50KGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldERheU9mWWVhcihpbnB1dCkge1xuICAgICAgICB2YXIgZGF5T2ZZZWFyID1cbiAgICAgICAgICAgIE1hdGgucm91bmQoXG4gICAgICAgICAgICAgICAgKHRoaXMuY2xvbmUoKS5zdGFydE9mKCdkYXknKSAtIHRoaXMuY2xvbmUoKS5zdGFydE9mKCd5ZWFyJykpIC8gODY0ZTVcbiAgICAgICAgICAgICkgKyAxO1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IGRheU9mWWVhciA6IHRoaXMuYWRkKGlucHV0IC0gZGF5T2ZZZWFyLCAnZCcpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdtJywgWydtbScsIDJdLCAwLCAnbWludXRlJyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ21pbnV0ZScsICdtJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdtaW51dGUnLCAxNCk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdtJywgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdtbScsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRQYXJzZVRva2VuKFsnbScsICdtbSddLCBNSU5VVEUpO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgdmFyIGdldFNldE1pbnV0ZSA9IG1ha2VHZXRTZXQoJ01pbnV0ZXMnLCBmYWxzZSk7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigncycsIFsnc3MnLCAyXSwgMCwgJ3NlY29uZCcpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdzZWNvbmQnLCAncycpO1xuXG4gICAgLy8gUFJJT1JJVFlcblxuICAgIGFkZFVuaXRQcmlvcml0eSgnc2Vjb25kJywgMTUpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbigncycsIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignc3MnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUGFyc2VUb2tlbihbJ3MnLCAnc3MnXSwgU0VDT05EKTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIHZhciBnZXRTZXRTZWNvbmQgPSBtYWtlR2V0U2V0KCdTZWNvbmRzJywgZmFsc2UpO1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ1MnLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB+fih0aGlzLm1pbGxpc2Vjb25kKCkgLyAxMDApO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTUycsIDJdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB+fih0aGlzLm1pbGxpc2Vjb25kKCkgLyAxMCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTUycsIDNdLCAwLCAnbWlsbGlzZWNvbmQnKTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1MnLCA0XSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTA7XG4gICAgfSk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTUycsIDVdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDA7XG4gICAgfSk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTU1MnLCA2XSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTAwMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTU1MnLCA3XSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTAwMDA7XG4gICAgfSk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTU1NTUycsIDhdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwMDA7XG4gICAgfSk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTU1NTU1MnLCA5XSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTAwMDAwMDtcbiAgICB9KTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnbWlsbGlzZWNvbmQnLCAnbXMnKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ21pbGxpc2Vjb25kJywgMTYpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignUycsIG1hdGNoMXRvMywgbWF0Y2gxKTtcbiAgICBhZGRSZWdleFRva2VuKCdTUycsIG1hdGNoMXRvMywgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdTU1MnLCBtYXRjaDF0bzMsIG1hdGNoMyk7XG5cbiAgICB2YXIgdG9rZW4sIGdldFNldE1pbGxpc2Vjb25kO1xuICAgIGZvciAodG9rZW4gPSAnU1NTUyc7IHRva2VuLmxlbmd0aCA8PSA5OyB0b2tlbiArPSAnUycpIHtcbiAgICAgICAgYWRkUmVnZXhUb2tlbih0b2tlbiwgbWF0Y2hVbnNpZ25lZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VNcyhpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbTUlMTElTRUNPTkRdID0gdG9JbnQoKCcwLicgKyBpbnB1dCkgKiAxMDAwKTtcbiAgICB9XG5cbiAgICBmb3IgKHRva2VuID0gJ1MnOyB0b2tlbi5sZW5ndGggPD0gOTsgdG9rZW4gKz0gJ1MnKSB7XG4gICAgICAgIGFkZFBhcnNlVG9rZW4odG9rZW4sIHBhcnNlTXMpO1xuICAgIH1cblxuICAgIGdldFNldE1pbGxpc2Vjb25kID0gbWFrZUdldFNldCgnTWlsbGlzZWNvbmRzJywgZmFsc2UpO1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ3onLCAwLCAwLCAnem9uZUFiYnInKTtcbiAgICBhZGRGb3JtYXRUb2tlbignenonLCAwLCAwLCAnem9uZU5hbWUnKTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFpvbmVBYmJyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNVVEMgPyAnVVRDJyA6ICcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFpvbmVOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNVVEMgPyAnQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWUnIDogJyc7XG4gICAgfVxuXG4gICAgdmFyIHByb3RvID0gTW9tZW50LnByb3RvdHlwZTtcblxuICAgIHByb3RvLmFkZCA9IGFkZDtcbiAgICBwcm90by5jYWxlbmRhciA9IGNhbGVuZGFyJDE7XG4gICAgcHJvdG8uY2xvbmUgPSBjbG9uZTtcbiAgICBwcm90by5kaWZmID0gZGlmZjtcbiAgICBwcm90by5lbmRPZiA9IGVuZE9mO1xuICAgIHByb3RvLmZvcm1hdCA9IGZvcm1hdDtcbiAgICBwcm90by5mcm9tID0gZnJvbTtcbiAgICBwcm90by5mcm9tTm93ID0gZnJvbU5vdztcbiAgICBwcm90by50byA9IHRvO1xuICAgIHByb3RvLnRvTm93ID0gdG9Ob3c7XG4gICAgcHJvdG8uZ2V0ID0gc3RyaW5nR2V0O1xuICAgIHByb3RvLmludmFsaWRBdCA9IGludmFsaWRBdDtcbiAgICBwcm90by5pc0FmdGVyID0gaXNBZnRlcjtcbiAgICBwcm90by5pc0JlZm9yZSA9IGlzQmVmb3JlO1xuICAgIHByb3RvLmlzQmV0d2VlbiA9IGlzQmV0d2VlbjtcbiAgICBwcm90by5pc1NhbWUgPSBpc1NhbWU7XG4gICAgcHJvdG8uaXNTYW1lT3JBZnRlciA9IGlzU2FtZU9yQWZ0ZXI7XG4gICAgcHJvdG8uaXNTYW1lT3JCZWZvcmUgPSBpc1NhbWVPckJlZm9yZTtcbiAgICBwcm90by5pc1ZhbGlkID0gaXNWYWxpZCQyO1xuICAgIHByb3RvLmxhbmcgPSBsYW5nO1xuICAgIHByb3RvLmxvY2FsZSA9IGxvY2FsZTtcbiAgICBwcm90by5sb2NhbGVEYXRhID0gbG9jYWxlRGF0YTtcbiAgICBwcm90by5tYXggPSBwcm90b3R5cGVNYXg7XG4gICAgcHJvdG8ubWluID0gcHJvdG90eXBlTWluO1xuICAgIHByb3RvLnBhcnNpbmdGbGFncyA9IHBhcnNpbmdGbGFncztcbiAgICBwcm90by5zZXQgPSBzdHJpbmdTZXQ7XG4gICAgcHJvdG8uc3RhcnRPZiA9IHN0YXJ0T2Y7XG4gICAgcHJvdG8uc3VidHJhY3QgPSBzdWJ0cmFjdDtcbiAgICBwcm90by50b0FycmF5ID0gdG9BcnJheTtcbiAgICBwcm90by50b09iamVjdCA9IHRvT2JqZWN0O1xuICAgIHByb3RvLnRvRGF0ZSA9IHRvRGF0ZTtcbiAgICBwcm90by50b0lTT1N0cmluZyA9IHRvSVNPU3RyaW5nO1xuICAgIHByb3RvLmluc3BlY3QgPSBpbnNwZWN0O1xuICAgIGlmICh0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wuZm9yICE9IG51bGwpIHtcbiAgICAgICAgcHJvdG9bU3ltYm9sLmZvcignbm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20nKV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gJ01vbWVudDwnICsgdGhpcy5mb3JtYXQoKSArICc+JztcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcHJvdG8udG9KU09OID0gdG9KU09OO1xuICAgIHByb3RvLnRvU3RyaW5nID0gdG9TdHJpbmc7XG4gICAgcHJvdG8udW5peCA9IHVuaXg7XG4gICAgcHJvdG8udmFsdWVPZiA9IHZhbHVlT2Y7XG4gICAgcHJvdG8uY3JlYXRpb25EYXRhID0gY3JlYXRpb25EYXRhO1xuICAgIHByb3RvLmVyYU5hbWUgPSBnZXRFcmFOYW1lO1xuICAgIHByb3RvLmVyYU5hcnJvdyA9IGdldEVyYU5hcnJvdztcbiAgICBwcm90by5lcmFBYmJyID0gZ2V0RXJhQWJicjtcbiAgICBwcm90by5lcmFZZWFyID0gZ2V0RXJhWWVhcjtcbiAgICBwcm90by55ZWFyID0gZ2V0U2V0WWVhcjtcbiAgICBwcm90by5pc0xlYXBZZWFyID0gZ2V0SXNMZWFwWWVhcjtcbiAgICBwcm90by53ZWVrWWVhciA9IGdldFNldFdlZWtZZWFyO1xuICAgIHByb3RvLmlzb1dlZWtZZWFyID0gZ2V0U2V0SVNPV2Vla1llYXI7XG4gICAgcHJvdG8ucXVhcnRlciA9IHByb3RvLnF1YXJ0ZXJzID0gZ2V0U2V0UXVhcnRlcjtcbiAgICBwcm90by5tb250aCA9IGdldFNldE1vbnRoO1xuICAgIHByb3RvLmRheXNJbk1vbnRoID0gZ2V0RGF5c0luTW9udGg7XG4gICAgcHJvdG8ud2VlayA9IHByb3RvLndlZWtzID0gZ2V0U2V0V2VlaztcbiAgICBwcm90by5pc29XZWVrID0gcHJvdG8uaXNvV2Vla3MgPSBnZXRTZXRJU09XZWVrO1xuICAgIHByb3RvLndlZWtzSW5ZZWFyID0gZ2V0V2Vla3NJblllYXI7XG4gICAgcHJvdG8ud2Vla3NJbldlZWtZZWFyID0gZ2V0V2Vla3NJbldlZWtZZWFyO1xuICAgIHByb3RvLmlzb1dlZWtzSW5ZZWFyID0gZ2V0SVNPV2Vla3NJblllYXI7XG4gICAgcHJvdG8uaXNvV2Vla3NJbklTT1dlZWtZZWFyID0gZ2V0SVNPV2Vla3NJbklTT1dlZWtZZWFyO1xuICAgIHByb3RvLmRhdGUgPSBnZXRTZXREYXlPZk1vbnRoO1xuICAgIHByb3RvLmRheSA9IHByb3RvLmRheXMgPSBnZXRTZXREYXlPZldlZWs7XG4gICAgcHJvdG8ud2Vla2RheSA9IGdldFNldExvY2FsZURheU9mV2VlaztcbiAgICBwcm90by5pc29XZWVrZGF5ID0gZ2V0U2V0SVNPRGF5T2ZXZWVrO1xuICAgIHByb3RvLmRheU9mWWVhciA9IGdldFNldERheU9mWWVhcjtcbiAgICBwcm90by5ob3VyID0gcHJvdG8uaG91cnMgPSBnZXRTZXRIb3VyO1xuICAgIHByb3RvLm1pbnV0ZSA9IHByb3RvLm1pbnV0ZXMgPSBnZXRTZXRNaW51dGU7XG4gICAgcHJvdG8uc2Vjb25kID0gcHJvdG8uc2Vjb25kcyA9IGdldFNldFNlY29uZDtcbiAgICBwcm90by5taWxsaXNlY29uZCA9IHByb3RvLm1pbGxpc2Vjb25kcyA9IGdldFNldE1pbGxpc2Vjb25kO1xuICAgIHByb3RvLnV0Y09mZnNldCA9IGdldFNldE9mZnNldDtcbiAgICBwcm90by51dGMgPSBzZXRPZmZzZXRUb1VUQztcbiAgICBwcm90by5sb2NhbCA9IHNldE9mZnNldFRvTG9jYWw7XG4gICAgcHJvdG8ucGFyc2Vab25lID0gc2V0T2Zmc2V0VG9QYXJzZWRPZmZzZXQ7XG4gICAgcHJvdG8uaGFzQWxpZ25lZEhvdXJPZmZzZXQgPSBoYXNBbGlnbmVkSG91ck9mZnNldDtcbiAgICBwcm90by5pc0RTVCA9IGlzRGF5bGlnaHRTYXZpbmdUaW1lO1xuICAgIHByb3RvLmlzTG9jYWwgPSBpc0xvY2FsO1xuICAgIHByb3RvLmlzVXRjT2Zmc2V0ID0gaXNVdGNPZmZzZXQ7XG4gICAgcHJvdG8uaXNVdGMgPSBpc1V0YztcbiAgICBwcm90by5pc1VUQyA9IGlzVXRjO1xuICAgIHByb3RvLnpvbmVBYmJyID0gZ2V0Wm9uZUFiYnI7XG4gICAgcHJvdG8uem9uZU5hbWUgPSBnZXRab25lTmFtZTtcbiAgICBwcm90by5kYXRlcyA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ2RhdGVzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSBkYXRlIGluc3RlYWQuJyxcbiAgICAgICAgZ2V0U2V0RGF5T2ZNb250aFxuICAgICk7XG4gICAgcHJvdG8ubW9udGhzID0gZGVwcmVjYXRlKFxuICAgICAgICAnbW9udGhzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSBtb250aCBpbnN0ZWFkJyxcbiAgICAgICAgZ2V0U2V0TW9udGhcbiAgICApO1xuICAgIHByb3RvLnllYXJzID0gZGVwcmVjYXRlKFxuICAgICAgICAneWVhcnMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIHllYXIgaW5zdGVhZCcsXG4gICAgICAgIGdldFNldFllYXJcbiAgICApO1xuICAgIHByb3RvLnpvbmUgPSBkZXByZWNhdGUoXG4gICAgICAgICdtb21lbnQoKS56b25lIGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQoKS51dGNPZmZzZXQgaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy96b25lLycsXG4gICAgICAgIGdldFNldFpvbmVcbiAgICApO1xuICAgIHByb3RvLmlzRFNUU2hpZnRlZCA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ2lzRFNUU2hpZnRlZCBpcyBkZXByZWNhdGVkLiBTZWUgaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9kc3Qtc2hpZnRlZC8gZm9yIG1vcmUgaW5mb3JtYXRpb24nLFxuICAgICAgICBpc0RheWxpZ2h0U2F2aW5nVGltZVNoaWZ0ZWRcbiAgICApO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlVW5peChpbnB1dCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwoaW5wdXQgKiAxMDAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVJblpvbmUoKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2NhbC5hcHBseShudWxsLCBhcmd1bWVudHMpLnBhcnNlWm9uZSgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByZVBhcnNlUG9zdEZvcm1hdChzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICB9XG5cbiAgICB2YXIgcHJvdG8kMSA9IExvY2FsZS5wcm90b3R5cGU7XG5cbiAgICBwcm90byQxLmNhbGVuZGFyID0gY2FsZW5kYXI7XG4gICAgcHJvdG8kMS5sb25nRGF0ZUZvcm1hdCA9IGxvbmdEYXRlRm9ybWF0O1xuICAgIHByb3RvJDEuaW52YWxpZERhdGUgPSBpbnZhbGlkRGF0ZTtcbiAgICBwcm90byQxLm9yZGluYWwgPSBvcmRpbmFsO1xuICAgIHByb3RvJDEucHJlcGFyc2UgPSBwcmVQYXJzZVBvc3RGb3JtYXQ7XG4gICAgcHJvdG8kMS5wb3N0Zm9ybWF0ID0gcHJlUGFyc2VQb3N0Rm9ybWF0O1xuICAgIHByb3RvJDEucmVsYXRpdmVUaW1lID0gcmVsYXRpdmVUaW1lO1xuICAgIHByb3RvJDEucGFzdEZ1dHVyZSA9IHBhc3RGdXR1cmU7XG4gICAgcHJvdG8kMS5zZXQgPSBzZXQ7XG4gICAgcHJvdG8kMS5lcmFzID0gbG9jYWxlRXJhcztcbiAgICBwcm90byQxLmVyYXNQYXJzZSA9IGxvY2FsZUVyYXNQYXJzZTtcbiAgICBwcm90byQxLmVyYXNDb252ZXJ0WWVhciA9IGxvY2FsZUVyYXNDb252ZXJ0WWVhcjtcbiAgICBwcm90byQxLmVyYXNBYmJyUmVnZXggPSBlcmFzQWJiclJlZ2V4O1xuICAgIHByb3RvJDEuZXJhc05hbWVSZWdleCA9IGVyYXNOYW1lUmVnZXg7XG4gICAgcHJvdG8kMS5lcmFzTmFycm93UmVnZXggPSBlcmFzTmFycm93UmVnZXg7XG5cbiAgICBwcm90byQxLm1vbnRocyA9IGxvY2FsZU1vbnRocztcbiAgICBwcm90byQxLm1vbnRoc1Nob3J0ID0gbG9jYWxlTW9udGhzU2hvcnQ7XG4gICAgcHJvdG8kMS5tb250aHNQYXJzZSA9IGxvY2FsZU1vbnRoc1BhcnNlO1xuICAgIHByb3RvJDEubW9udGhzUmVnZXggPSBtb250aHNSZWdleDtcbiAgICBwcm90byQxLm1vbnRoc1Nob3J0UmVnZXggPSBtb250aHNTaG9ydFJlZ2V4O1xuICAgIHByb3RvJDEud2VlayA9IGxvY2FsZVdlZWs7XG4gICAgcHJvdG8kMS5maXJzdERheU9mWWVhciA9IGxvY2FsZUZpcnN0RGF5T2ZZZWFyO1xuICAgIHByb3RvJDEuZmlyc3REYXlPZldlZWsgPSBsb2NhbGVGaXJzdERheU9mV2VlaztcblxuICAgIHByb3RvJDEud2Vla2RheXMgPSBsb2NhbGVXZWVrZGF5cztcbiAgICBwcm90byQxLndlZWtkYXlzTWluID0gbG9jYWxlV2Vla2RheXNNaW47XG4gICAgcHJvdG8kMS53ZWVrZGF5c1Nob3J0ID0gbG9jYWxlV2Vla2RheXNTaG9ydDtcbiAgICBwcm90byQxLndlZWtkYXlzUGFyc2UgPSBsb2NhbGVXZWVrZGF5c1BhcnNlO1xuXG4gICAgcHJvdG8kMS53ZWVrZGF5c1JlZ2V4ID0gd2Vla2RheXNSZWdleDtcbiAgICBwcm90byQxLndlZWtkYXlzU2hvcnRSZWdleCA9IHdlZWtkYXlzU2hvcnRSZWdleDtcbiAgICBwcm90byQxLndlZWtkYXlzTWluUmVnZXggPSB3ZWVrZGF5c01pblJlZ2V4O1xuXG4gICAgcHJvdG8kMS5pc1BNID0gbG9jYWxlSXNQTTtcbiAgICBwcm90byQxLm1lcmlkaWVtID0gbG9jYWxlTWVyaWRpZW07XG5cbiAgICBmdW5jdGlvbiBnZXQkMShmb3JtYXQsIGluZGV4LCBmaWVsZCwgc2V0dGVyKSB7XG4gICAgICAgIHZhciBsb2NhbGUgPSBnZXRMb2NhbGUoKSxcbiAgICAgICAgICAgIHV0YyA9IGNyZWF0ZVVUQygpLnNldChzZXR0ZXIsIGluZGV4KTtcbiAgICAgICAgcmV0dXJuIGxvY2FsZVtmaWVsZF0odXRjLCBmb3JtYXQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RNb250aHNJbXBsKGZvcm1hdCwgaW5kZXgsIGZpZWxkKSB7XG4gICAgICAgIGlmIChpc051bWJlcihmb3JtYXQpKSB7XG4gICAgICAgICAgICBpbmRleCA9IGZvcm1hdDtcbiAgICAgICAgICAgIGZvcm1hdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcm1hdCA9IGZvcm1hdCB8fCAnJztcblxuICAgICAgICBpZiAoaW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldCQxKGZvcm1hdCwgaW5kZXgsIGZpZWxkLCAnbW9udGgnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpLFxuICAgICAgICAgICAgb3V0ID0gW107XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICBvdXRbaV0gPSBnZXQkMShmb3JtYXQsIGksIGZpZWxkLCAnbW9udGgnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIC8vICgpXG4gICAgLy8gKDUpXG4gICAgLy8gKGZtdCwgNSlcbiAgICAvLyAoZm10KVxuICAgIC8vICh0cnVlKVxuICAgIC8vICh0cnVlLCA1KVxuICAgIC8vICh0cnVlLCBmbXQsIDUpXG4gICAgLy8gKHRydWUsIGZtdClcbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXNJbXBsKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCwgZmllbGQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBsb2NhbGVTb3J0ZWQgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgaWYgKGlzTnVtYmVyKGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICBpbmRleCA9IGZvcm1hdDtcbiAgICAgICAgICAgICAgICBmb3JtYXQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdCB8fCAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1hdCA9IGxvY2FsZVNvcnRlZDtcbiAgICAgICAgICAgIGluZGV4ID0gZm9ybWF0O1xuICAgICAgICAgICAgbG9jYWxlU29ydGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChpc051bWJlcihmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBmb3JtYXQ7XG4gICAgICAgICAgICAgICAgZm9ybWF0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXQgfHwgJyc7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbG9jYWxlID0gZ2V0TG9jYWxlKCksXG4gICAgICAgICAgICBzaGlmdCA9IGxvY2FsZVNvcnRlZCA/IGxvY2FsZS5fd2Vlay5kb3cgOiAwLFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIG91dCA9IFtdO1xuXG4gICAgICAgIGlmIChpbmRleCAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0JDEoZm9ybWF0LCAoaW5kZXggKyBzaGlmdCkgJSA3LCBmaWVsZCwgJ2RheScpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgb3V0W2ldID0gZ2V0JDEoZm9ybWF0LCAoaSArIHNoaWZ0KSAlIDcsIGZpZWxkLCAnZGF5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0TW9udGhzKGZvcm1hdCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RNb250aHNJbXBsKGZvcm1hdCwgaW5kZXgsICdtb250aHMnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0TW9udGhzU2hvcnQoZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdE1vbnRoc0ltcGwoZm9ybWF0LCBpbmRleCwgJ21vbnRoc1Nob3J0Jyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdFdlZWtkYXlzKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdFdlZWtkYXlzSW1wbChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsICd3ZWVrZGF5cycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RXZWVrZGF5c1Nob3J0KGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdFdlZWtkYXlzSW1wbChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsICd3ZWVrZGF5c1Nob3J0Jyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdFdlZWtkYXlzTWluKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdFdlZWtkYXlzSW1wbChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsICd3ZWVrZGF5c01pbicpO1xuICAgIH1cblxuICAgIGdldFNldEdsb2JhbExvY2FsZSgnZW4nLCB7XG4gICAgICAgIGVyYXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaW5jZTogJzAwMDEtMDEtMDEnLFxuICAgICAgICAgICAgICAgIHVudGlsOiArSW5maW5pdHksXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdBbm5vIERvbWluaScsXG4gICAgICAgICAgICAgICAgbmFycm93OiAnQUQnLFxuICAgICAgICAgICAgICAgIGFiYnI6ICdBRCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpbmNlOiAnMDAwMC0xMi0zMScsXG4gICAgICAgICAgICAgICAgdW50aWw6IC1JbmZpbml0eSxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0JlZm9yZSBDaHJpc3QnLFxuICAgICAgICAgICAgICAgIG5hcnJvdzogJ0JDJyxcbiAgICAgICAgICAgICAgICBhYmJyOiAnQkMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHRofHN0fG5kfHJkKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgICAgdG9JbnQoKG51bWJlciAlIDEwMCkgLyAxMCkgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIFNpZGUgZWZmZWN0IGltcG9ydHNcblxuICAgIGhvb2tzLmxhbmcgPSBkZXByZWNhdGUoXG4gICAgICAgICdtb21lbnQubGFuZyBpcyBkZXByZWNhdGVkLiBVc2UgbW9tZW50LmxvY2FsZSBpbnN0ZWFkLicsXG4gICAgICAgIGdldFNldEdsb2JhbExvY2FsZVxuICAgICk7XG4gICAgaG9va3MubGFuZ0RhdGEgPSBkZXByZWNhdGUoXG4gICAgICAgICdtb21lbnQubGFuZ0RhdGEgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGVEYXRhIGluc3RlYWQuJyxcbiAgICAgICAgZ2V0TG9jYWxlXG4gICAgKTtcblxuICAgIHZhciBtYXRoQWJzID0gTWF0aC5hYnM7XG5cbiAgICBmdW5jdGlvbiBhYnMoKSB7XG4gICAgICAgIHZhciBkYXRhID0gdGhpcy5fZGF0YTtcblxuICAgICAgICB0aGlzLl9taWxsaXNlY29uZHMgPSBtYXRoQWJzKHRoaXMuX21pbGxpc2Vjb25kcyk7XG4gICAgICAgIHRoaXMuX2RheXMgPSBtYXRoQWJzKHRoaXMuX2RheXMpO1xuICAgICAgICB0aGlzLl9tb250aHMgPSBtYXRoQWJzKHRoaXMuX21vbnRocyk7XG5cbiAgICAgICAgZGF0YS5taWxsaXNlY29uZHMgPSBtYXRoQWJzKGRhdGEubWlsbGlzZWNvbmRzKTtcbiAgICAgICAgZGF0YS5zZWNvbmRzID0gbWF0aEFicyhkYXRhLnNlY29uZHMpO1xuICAgICAgICBkYXRhLm1pbnV0ZXMgPSBtYXRoQWJzKGRhdGEubWludXRlcyk7XG4gICAgICAgIGRhdGEuaG91cnMgPSBtYXRoQWJzKGRhdGEuaG91cnMpO1xuICAgICAgICBkYXRhLm1vbnRocyA9IG1hdGhBYnMoZGF0YS5tb250aHMpO1xuICAgICAgICBkYXRhLnllYXJzID0gbWF0aEFicyhkYXRhLnllYXJzKTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRTdWJ0cmFjdCQxKGR1cmF0aW9uLCBpbnB1dCwgdmFsdWUsIGRpcmVjdGlvbikge1xuICAgICAgICB2YXIgb3RoZXIgPSBjcmVhdGVEdXJhdGlvbihpbnB1dCwgdmFsdWUpO1xuXG4gICAgICAgIGR1cmF0aW9uLl9taWxsaXNlY29uZHMgKz0gZGlyZWN0aW9uICogb3RoZXIuX21pbGxpc2Vjb25kcztcbiAgICAgICAgZHVyYXRpb24uX2RheXMgKz0gZGlyZWN0aW9uICogb3RoZXIuX2RheXM7XG4gICAgICAgIGR1cmF0aW9uLl9tb250aHMgKz0gZGlyZWN0aW9uICogb3RoZXIuX21vbnRocztcblxuICAgICAgICByZXR1cm4gZHVyYXRpb24uX2J1YmJsZSgpO1xuICAgIH1cblxuICAgIC8vIHN1cHBvcnRzIG9ubHkgMi4wLXN0eWxlIGFkZCgxLCAncycpIG9yIGFkZChkdXJhdGlvbilcbiAgICBmdW5jdGlvbiBhZGQkMShpbnB1dCwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGFkZFN1YnRyYWN0JDEodGhpcywgaW5wdXQsIHZhbHVlLCAxKTtcbiAgICB9XG5cbiAgICAvLyBzdXBwb3J0cyBvbmx5IDIuMC1zdHlsZSBzdWJ0cmFjdCgxLCAncycpIG9yIHN1YnRyYWN0KGR1cmF0aW9uKVxuICAgIGZ1bmN0aW9uIHN1YnRyYWN0JDEoaW5wdXQsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBhZGRTdWJ0cmFjdCQxKHRoaXMsIGlucHV0LCB2YWx1ZSwgLTEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFic0NlaWwobnVtYmVyKSB7XG4gICAgICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihudW1iZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguY2VpbChudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnViYmxlKCkge1xuICAgICAgICB2YXIgbWlsbGlzZWNvbmRzID0gdGhpcy5fbWlsbGlzZWNvbmRzLFxuICAgICAgICAgICAgZGF5cyA9IHRoaXMuX2RheXMsXG4gICAgICAgICAgICBtb250aHMgPSB0aGlzLl9tb250aHMsXG4gICAgICAgICAgICBkYXRhID0gdGhpcy5fZGF0YSxcbiAgICAgICAgICAgIHNlY29uZHMsXG4gICAgICAgICAgICBtaW51dGVzLFxuICAgICAgICAgICAgaG91cnMsXG4gICAgICAgICAgICB5ZWFycyxcbiAgICAgICAgICAgIG1vbnRoc0Zyb21EYXlzO1xuXG4gICAgICAgIC8vIGlmIHdlIGhhdmUgYSBtaXggb2YgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIHZhbHVlcywgYnViYmxlIGRvd24gZmlyc3RcbiAgICAgICAgLy8gY2hlY2s6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L2lzc3Vlcy8yMTY2XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgKG1pbGxpc2Vjb25kcyA+PSAwICYmIGRheXMgPj0gMCAmJiBtb250aHMgPj0gMCkgfHxcbiAgICAgICAgICAgICAgICAobWlsbGlzZWNvbmRzIDw9IDAgJiYgZGF5cyA8PSAwICYmIG1vbnRocyA8PSAwKVxuICAgICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIG1pbGxpc2Vjb25kcyArPSBhYnNDZWlsKG1vbnRoc1RvRGF5cyhtb250aHMpICsgZGF5cykgKiA4NjRlNTtcbiAgICAgICAgICAgIGRheXMgPSAwO1xuICAgICAgICAgICAgbW9udGhzID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgY29kZSBidWJibGVzIHVwIHZhbHVlcywgc2VlIHRoZSB0ZXN0cyBmb3JcbiAgICAgICAgLy8gZXhhbXBsZXMgb2Ygd2hhdCB0aGF0IG1lYW5zLlxuICAgICAgICBkYXRhLm1pbGxpc2Vjb25kcyA9IG1pbGxpc2Vjb25kcyAlIDEwMDA7XG5cbiAgICAgICAgc2Vjb25kcyA9IGFic0Zsb29yKG1pbGxpc2Vjb25kcyAvIDEwMDApO1xuICAgICAgICBkYXRhLnNlY29uZHMgPSBzZWNvbmRzICUgNjA7XG5cbiAgICAgICAgbWludXRlcyA9IGFic0Zsb29yKHNlY29uZHMgLyA2MCk7XG4gICAgICAgIGRhdGEubWludXRlcyA9IG1pbnV0ZXMgJSA2MDtcblxuICAgICAgICBob3VycyA9IGFic0Zsb29yKG1pbnV0ZXMgLyA2MCk7XG4gICAgICAgIGRhdGEuaG91cnMgPSBob3VycyAlIDI0O1xuXG4gICAgICAgIGRheXMgKz0gYWJzRmxvb3IoaG91cnMgLyAyNCk7XG5cbiAgICAgICAgLy8gY29udmVydCBkYXlzIHRvIG1vbnRoc1xuICAgICAgICBtb250aHNGcm9tRGF5cyA9IGFic0Zsb29yKGRheXNUb01vbnRocyhkYXlzKSk7XG4gICAgICAgIG1vbnRocyArPSBtb250aHNGcm9tRGF5cztcbiAgICAgICAgZGF5cyAtPSBhYnNDZWlsKG1vbnRoc1RvRGF5cyhtb250aHNGcm9tRGF5cykpO1xuXG4gICAgICAgIC8vIDEyIG1vbnRocyAtPiAxIHllYXJcbiAgICAgICAgeWVhcnMgPSBhYnNGbG9vcihtb250aHMgLyAxMik7XG4gICAgICAgIG1vbnRocyAlPSAxMjtcblxuICAgICAgICBkYXRhLmRheXMgPSBkYXlzO1xuICAgICAgICBkYXRhLm1vbnRocyA9IG1vbnRocztcbiAgICAgICAgZGF0YS55ZWFycyA9IHllYXJzO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRheXNUb01vbnRocyhkYXlzKSB7XG4gICAgICAgIC8vIDQwMCB5ZWFycyBoYXZlIDE0NjA5NyBkYXlzICh0YWtpbmcgaW50byBhY2NvdW50IGxlYXAgeWVhciBydWxlcylcbiAgICAgICAgLy8gNDAwIHllYXJzIGhhdmUgMTIgbW9udGhzID09PSA0ODAwXG4gICAgICAgIHJldHVybiAoZGF5cyAqIDQ4MDApIC8gMTQ2MDk3O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vbnRoc1RvRGF5cyhtb250aHMpIHtcbiAgICAgICAgLy8gdGhlIHJldmVyc2Ugb2YgZGF5c1RvTW9udGhzXG4gICAgICAgIHJldHVybiAobW9udGhzICogMTQ2MDk3KSAvIDQ4MDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXModW5pdHMpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGF5cyxcbiAgICAgICAgICAgIG1vbnRocyxcbiAgICAgICAgICAgIG1pbGxpc2Vjb25kcyA9IHRoaXMuX21pbGxpc2Vjb25kcztcblxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcblxuICAgICAgICBpZiAodW5pdHMgPT09ICdtb250aCcgfHwgdW5pdHMgPT09ICdxdWFydGVyJyB8fCB1bml0cyA9PT0gJ3llYXInKSB7XG4gICAgICAgICAgICBkYXlzID0gdGhpcy5fZGF5cyArIG1pbGxpc2Vjb25kcyAvIDg2NGU1O1xuICAgICAgICAgICAgbW9udGhzID0gdGhpcy5fbW9udGhzICsgZGF5c1RvTW9udGhzKGRheXMpO1xuICAgICAgICAgICAgc3dpdGNoICh1bml0cykge1xuICAgICAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRocztcbiAgICAgICAgICAgICAgICBjYXNlICdxdWFydGVyJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRocyAvIDM7XG4gICAgICAgICAgICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtb250aHMgLyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGhhbmRsZSBtaWxsaXNlY29uZHMgc2VwYXJhdGVseSBiZWNhdXNlIG9mIGZsb2F0aW5nIHBvaW50IG1hdGggZXJyb3JzIChpc3N1ZSAjMTg2NylcbiAgICAgICAgICAgIGRheXMgPSB0aGlzLl9kYXlzICsgTWF0aC5yb3VuZChtb250aHNUb0RheXModGhpcy5fbW9udGhzKSk7XG4gICAgICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXlzIC8gNyArIG1pbGxpc2Vjb25kcyAvIDYwNDhlNTtcbiAgICAgICAgICAgICAgICBjYXNlICdkYXknOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF5cyArIG1pbGxpc2Vjb25kcyAvIDg2NGU1O1xuICAgICAgICAgICAgICAgIGNhc2UgJ2hvdXInOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF5cyAqIDI0ICsgbWlsbGlzZWNvbmRzIC8gMzZlNTtcbiAgICAgICAgICAgICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF5cyAqIDE0NDAgKyBtaWxsaXNlY29uZHMgLyA2ZTQ7XG4gICAgICAgICAgICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRheXMgKiA4NjQwMCArIG1pbGxpc2Vjb25kcyAvIDEwMDA7XG4gICAgICAgICAgICAgICAgLy8gTWF0aC5mbG9vciBwcmV2ZW50cyBmbG9hdGluZyBwb2ludCBtYXRoIGVycm9ycyBoZXJlXG4gICAgICAgICAgICAgICAgY2FzZSAnbWlsbGlzZWNvbmQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihkYXlzICogODY0ZTUpICsgbWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biB1bml0ICcgKyB1bml0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPOiBVc2UgdGhpcy5hcygnbXMnKT9cbiAgICBmdW5jdGlvbiB2YWx1ZU9mJDEoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuX21pbGxpc2Vjb25kcyArXG4gICAgICAgICAgICB0aGlzLl9kYXlzICogODY0ZTUgK1xuICAgICAgICAgICAgKHRoaXMuX21vbnRocyAlIDEyKSAqIDI1OTJlNiArXG4gICAgICAgICAgICB0b0ludCh0aGlzLl9tb250aHMgLyAxMikgKiAzMTUzNmU2XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUFzKGFsaWFzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hcyhhbGlhcyk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGFzTWlsbGlzZWNvbmRzID0gbWFrZUFzKCdtcycpLFxuICAgICAgICBhc1NlY29uZHMgPSBtYWtlQXMoJ3MnKSxcbiAgICAgICAgYXNNaW51dGVzID0gbWFrZUFzKCdtJyksXG4gICAgICAgIGFzSG91cnMgPSBtYWtlQXMoJ2gnKSxcbiAgICAgICAgYXNEYXlzID0gbWFrZUFzKCdkJyksXG4gICAgICAgIGFzV2Vla3MgPSBtYWtlQXMoJ3cnKSxcbiAgICAgICAgYXNNb250aHMgPSBtYWtlQXMoJ00nKSxcbiAgICAgICAgYXNRdWFydGVycyA9IG1ha2VBcygnUScpLFxuICAgICAgICBhc1llYXJzID0gbWFrZUFzKCd5Jyk7XG5cbiAgICBmdW5jdGlvbiBjbG9uZSQxKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlRHVyYXRpb24odGhpcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0JDIodW5pdHMpIHtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXNbdW5pdHMgKyAncyddKCkgOiBOYU47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUdldHRlcihuYW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLl9kYXRhW25hbWVdIDogTmFOO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciBtaWxsaXNlY29uZHMgPSBtYWtlR2V0dGVyKCdtaWxsaXNlY29uZHMnKSxcbiAgICAgICAgc2Vjb25kcyA9IG1ha2VHZXR0ZXIoJ3NlY29uZHMnKSxcbiAgICAgICAgbWludXRlcyA9IG1ha2VHZXR0ZXIoJ21pbnV0ZXMnKSxcbiAgICAgICAgaG91cnMgPSBtYWtlR2V0dGVyKCdob3VycycpLFxuICAgICAgICBkYXlzID0gbWFrZUdldHRlcignZGF5cycpLFxuICAgICAgICBtb250aHMgPSBtYWtlR2V0dGVyKCdtb250aHMnKSxcbiAgICAgICAgeWVhcnMgPSBtYWtlR2V0dGVyKCd5ZWFycycpO1xuXG4gICAgZnVuY3Rpb24gd2Vla3MoKSB7XG4gICAgICAgIHJldHVybiBhYnNGbG9vcih0aGlzLmRheXMoKSAvIDcpO1xuICAgIH1cblxuICAgIHZhciByb3VuZCA9IE1hdGgucm91bmQsXG4gICAgICAgIHRocmVzaG9sZHMgPSB7XG4gICAgICAgICAgICBzczogNDQsIC8vIGEgZmV3IHNlY29uZHMgdG8gc2Vjb25kc1xuICAgICAgICAgICAgczogNDUsIC8vIHNlY29uZHMgdG8gbWludXRlXG4gICAgICAgICAgICBtOiA0NSwgLy8gbWludXRlcyB0byBob3VyXG4gICAgICAgICAgICBoOiAyMiwgLy8gaG91cnMgdG8gZGF5XG4gICAgICAgICAgICBkOiAyNiwgLy8gZGF5cyB0byBtb250aC93ZWVrXG4gICAgICAgICAgICB3OiBudWxsLCAvLyB3ZWVrcyB0byBtb250aFxuICAgICAgICAgICAgTTogMTEsIC8vIG1vbnRocyB0byB5ZWFyXG4gICAgICAgIH07XG5cbiAgICAvLyBoZWxwZXIgZnVuY3Rpb24gZm9yIG1vbWVudC5mbi5mcm9tLCBtb21lbnQuZm4uZnJvbU5vdywgYW5kIG1vbWVudC5kdXJhdGlvbi5mbi5odW1hbml6ZVxuICAgIGZ1bmN0aW9uIHN1YnN0aXR1dGVUaW1lQWdvKHN0cmluZywgbnVtYmVyLCB3aXRob3V0U3VmZml4LCBpc0Z1dHVyZSwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUucmVsYXRpdmVUaW1lKG51bWJlciB8fCAxLCAhIXdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZSQxKHBvc05lZ0R1cmF0aW9uLCB3aXRob3V0U3VmZml4LCB0aHJlc2hvbGRzLCBsb2NhbGUpIHtcbiAgICAgICAgdmFyIGR1cmF0aW9uID0gY3JlYXRlRHVyYXRpb24ocG9zTmVnRHVyYXRpb24pLmFicygpLFxuICAgICAgICAgICAgc2Vjb25kcyA9IHJvdW5kKGR1cmF0aW9uLmFzKCdzJykpLFxuICAgICAgICAgICAgbWludXRlcyA9IHJvdW5kKGR1cmF0aW9uLmFzKCdtJykpLFxuICAgICAgICAgICAgaG91cnMgPSByb3VuZChkdXJhdGlvbi5hcygnaCcpKSxcbiAgICAgICAgICAgIGRheXMgPSByb3VuZChkdXJhdGlvbi5hcygnZCcpKSxcbiAgICAgICAgICAgIG1vbnRocyA9IHJvdW5kKGR1cmF0aW9uLmFzKCdNJykpLFxuICAgICAgICAgICAgd2Vla3MgPSByb3VuZChkdXJhdGlvbi5hcygndycpKSxcbiAgICAgICAgICAgIHllYXJzID0gcm91bmQoZHVyYXRpb24uYXMoJ3knKSksXG4gICAgICAgICAgICBhID1cbiAgICAgICAgICAgICAgICAoc2Vjb25kcyA8PSB0aHJlc2hvbGRzLnNzICYmIFsncycsIHNlY29uZHNdKSB8fFxuICAgICAgICAgICAgICAgIChzZWNvbmRzIDwgdGhyZXNob2xkcy5zICYmIFsnc3MnLCBzZWNvbmRzXSkgfHxcbiAgICAgICAgICAgICAgICAobWludXRlcyA8PSAxICYmIFsnbSddKSB8fFxuICAgICAgICAgICAgICAgIChtaW51dGVzIDwgdGhyZXNob2xkcy5tICYmIFsnbW0nLCBtaW51dGVzXSkgfHxcbiAgICAgICAgICAgICAgICAoaG91cnMgPD0gMSAmJiBbJ2gnXSkgfHxcbiAgICAgICAgICAgICAgICAoaG91cnMgPCB0aHJlc2hvbGRzLmggJiYgWydoaCcsIGhvdXJzXSkgfHxcbiAgICAgICAgICAgICAgICAoZGF5cyA8PSAxICYmIFsnZCddKSB8fFxuICAgICAgICAgICAgICAgIChkYXlzIDwgdGhyZXNob2xkcy5kICYmIFsnZGQnLCBkYXlzXSk7XG5cbiAgICAgICAgaWYgKHRocmVzaG9sZHMudyAhPSBudWxsKSB7XG4gICAgICAgICAgICBhID1cbiAgICAgICAgICAgICAgICBhIHx8XG4gICAgICAgICAgICAgICAgKHdlZWtzIDw9IDEgJiYgWyd3J10pIHx8XG4gICAgICAgICAgICAgICAgKHdlZWtzIDwgdGhyZXNob2xkcy53ICYmIFsnd3cnLCB3ZWVrc10pO1xuICAgICAgICB9XG4gICAgICAgIGEgPSBhIHx8XG4gICAgICAgICAgICAobW9udGhzIDw9IDEgJiYgWydNJ10pIHx8XG4gICAgICAgICAgICAobW9udGhzIDwgdGhyZXNob2xkcy5NICYmIFsnTU0nLCBtb250aHNdKSB8fFxuICAgICAgICAgICAgKHllYXJzIDw9IDEgJiYgWyd5J10pIHx8IFsneXknLCB5ZWFyc107XG5cbiAgICAgICAgYVsyXSA9IHdpdGhvdXRTdWZmaXg7XG4gICAgICAgIGFbM10gPSArcG9zTmVnRHVyYXRpb24gPiAwO1xuICAgICAgICBhWzRdID0gbG9jYWxlO1xuICAgICAgICByZXR1cm4gc3Vic3RpdHV0ZVRpbWVBZ28uYXBwbHkobnVsbCwgYSk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIHNldCB0aGUgcm91bmRpbmcgZnVuY3Rpb24gZm9yIHJlbGF0aXZlIHRpbWUgc3RyaW5nc1xuICAgIGZ1bmN0aW9uIGdldFNldFJlbGF0aXZlVGltZVJvdW5kaW5nKHJvdW5kaW5nRnVuY3Rpb24pIHtcbiAgICAgICAgaWYgKHJvdW5kaW5nRnVuY3Rpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHJvdW5kO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2Ygcm91bmRpbmdGdW5jdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcm91bmQgPSByb3VuZGluZ0Z1bmN0aW9uO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSB0byBzZXQgYSB0aHJlc2hvbGQgZm9yIHJlbGF0aXZlIHRpbWUgc3RyaW5nc1xuICAgIGZ1bmN0aW9uIGdldFNldFJlbGF0aXZlVGltZVRocmVzaG9sZCh0aHJlc2hvbGQsIGxpbWl0KSB7XG4gICAgICAgIGlmICh0aHJlc2hvbGRzW3RocmVzaG9sZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsaW1pdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhyZXNob2xkc1t0aHJlc2hvbGRdO1xuICAgICAgICB9XG4gICAgICAgIHRocmVzaG9sZHNbdGhyZXNob2xkXSA9IGxpbWl0O1xuICAgICAgICBpZiAodGhyZXNob2xkID09PSAncycpIHtcbiAgICAgICAgICAgIHRocmVzaG9sZHMuc3MgPSBsaW1pdCAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaHVtYW5pemUoYXJnV2l0aFN1ZmZpeCwgYXJnVGhyZXNob2xkcykge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB3aXRoU3VmZml4ID0gZmFsc2UsXG4gICAgICAgICAgICB0aCA9IHRocmVzaG9sZHMsXG4gICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICBvdXRwdXQ7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBhcmdXaXRoU3VmZml4ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgYXJnVGhyZXNob2xkcyA9IGFyZ1dpdGhTdWZmaXg7XG4gICAgICAgICAgICBhcmdXaXRoU3VmZml4ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBhcmdXaXRoU3VmZml4ID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHdpdGhTdWZmaXggPSBhcmdXaXRoU3VmZml4O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgYXJnVGhyZXNob2xkcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHRoID0gT2JqZWN0LmFzc2lnbih7fSwgdGhyZXNob2xkcywgYXJnVGhyZXNob2xkcyk7XG4gICAgICAgICAgICBpZiAoYXJnVGhyZXNob2xkcy5zICE9IG51bGwgJiYgYXJnVGhyZXNob2xkcy5zcyA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGguc3MgPSBhcmdUaHJlc2hvbGRzLnMgLSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbG9jYWxlID0gdGhpcy5sb2NhbGVEYXRhKCk7XG4gICAgICAgIG91dHB1dCA9IHJlbGF0aXZlVGltZSQxKHRoaXMsICF3aXRoU3VmZml4LCB0aCwgbG9jYWxlKTtcblxuICAgICAgICBpZiAod2l0aFN1ZmZpeCkge1xuICAgICAgICAgICAgb3V0cHV0ID0gbG9jYWxlLnBhc3RGdXR1cmUoK3RoaXMsIG91dHB1dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbG9jYWxlLnBvc3Rmb3JtYXQob3V0cHV0KTtcbiAgICB9XG5cbiAgICB2YXIgYWJzJDEgPSBNYXRoLmFicztcblxuICAgIGZ1bmN0aW9uIHNpZ24oeCkge1xuICAgICAgICByZXR1cm4gKHggPiAwKSAtICh4IDwgMCkgfHwgK3g7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9JU09TdHJpbmckMSgpIHtcbiAgICAgICAgLy8gZm9yIElTTyBzdHJpbmdzIHdlIGRvIG5vdCB1c2UgdGhlIG5vcm1hbCBidWJibGluZyBydWxlczpcbiAgICAgICAgLy8gICogbWlsbGlzZWNvbmRzIGJ1YmJsZSB1cCB1bnRpbCB0aGV5IGJlY29tZSBob3Vyc1xuICAgICAgICAvLyAgKiBkYXlzIGRvIG5vdCBidWJibGUgYXQgYWxsXG4gICAgICAgIC8vICAqIG1vbnRocyBidWJibGUgdXAgdW50aWwgdGhleSBiZWNvbWUgeWVhcnNcbiAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIHRoZXJlIGlzIG5vIGNvbnRleHQtZnJlZSBjb252ZXJzaW9uIGJldHdlZW4gaG91cnMgYW5kIGRheXNcbiAgICAgICAgLy8gKHRoaW5rIG9mIGNsb2NrIGNoYW5nZXMpXG4gICAgICAgIC8vIGFuZCBhbHNvIG5vdCBiZXR3ZWVuIGRheXMgYW5kIG1vbnRocyAoMjgtMzEgZGF5cyBwZXIgbW9udGgpXG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHNlY29uZHMgPSBhYnMkMSh0aGlzLl9taWxsaXNlY29uZHMpIC8gMTAwMCxcbiAgICAgICAgICAgIGRheXMgPSBhYnMkMSh0aGlzLl9kYXlzKSxcbiAgICAgICAgICAgIG1vbnRocyA9IGFicyQxKHRoaXMuX21vbnRocyksXG4gICAgICAgICAgICBtaW51dGVzLFxuICAgICAgICAgICAgaG91cnMsXG4gICAgICAgICAgICB5ZWFycyxcbiAgICAgICAgICAgIHMsXG4gICAgICAgICAgICB0b3RhbCA9IHRoaXMuYXNTZWNvbmRzKCksXG4gICAgICAgICAgICB0b3RhbFNpZ24sXG4gICAgICAgICAgICB5bVNpZ24sXG4gICAgICAgICAgICBkYXlzU2lnbixcbiAgICAgICAgICAgIGhtc1NpZ247XG5cbiAgICAgICAgaWYgKCF0b3RhbCkge1xuICAgICAgICAgICAgLy8gdGhpcyBpcyB0aGUgc2FtZSBhcyBDIydzIChOb2RhKSBhbmQgcHl0aG9uIChpc29kYXRlKS4uLlxuICAgICAgICAgICAgLy8gYnV0IG5vdCBvdGhlciBKUyAoZ29vZy5kYXRlKVxuICAgICAgICAgICAgcmV0dXJuICdQMEQnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMzYwMCBzZWNvbmRzIC0+IDYwIG1pbnV0ZXMgLT4gMSBob3VyXG4gICAgICAgIG1pbnV0ZXMgPSBhYnNGbG9vcihzZWNvbmRzIC8gNjApO1xuICAgICAgICBob3VycyA9IGFic0Zsb29yKG1pbnV0ZXMgLyA2MCk7XG4gICAgICAgIHNlY29uZHMgJT0gNjA7XG4gICAgICAgIG1pbnV0ZXMgJT0gNjA7XG5cbiAgICAgICAgLy8gMTIgbW9udGhzIC0+IDEgeWVhclxuICAgICAgICB5ZWFycyA9IGFic0Zsb29yKG1vbnRocyAvIDEyKTtcbiAgICAgICAgbW9udGhzICU9IDEyO1xuXG4gICAgICAgIC8vIGluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9kb3JkaWxsZS9tb21lbnQtaXNvZHVyYXRpb24vYmxvYi9tYXN0ZXIvbW9tZW50Lmlzb2R1cmF0aW9uLmpzXG4gICAgICAgIHMgPSBzZWNvbmRzID8gc2Vjb25kcy50b0ZpeGVkKDMpLnJlcGxhY2UoL1xcLj8wKyQvLCAnJykgOiAnJztcblxuICAgICAgICB0b3RhbFNpZ24gPSB0b3RhbCA8IDAgPyAnLScgOiAnJztcbiAgICAgICAgeW1TaWduID0gc2lnbih0aGlzLl9tb250aHMpICE9PSBzaWduKHRvdGFsKSA/ICctJyA6ICcnO1xuICAgICAgICBkYXlzU2lnbiA9IHNpZ24odGhpcy5fZGF5cykgIT09IHNpZ24odG90YWwpID8gJy0nIDogJyc7XG4gICAgICAgIGhtc1NpZ24gPSBzaWduKHRoaXMuX21pbGxpc2Vjb25kcykgIT09IHNpZ24odG90YWwpID8gJy0nIDogJyc7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRvdGFsU2lnbiArXG4gICAgICAgICAgICAnUCcgK1xuICAgICAgICAgICAgKHllYXJzID8geW1TaWduICsgeWVhcnMgKyAnWScgOiAnJykgK1xuICAgICAgICAgICAgKG1vbnRocyA/IHltU2lnbiArIG1vbnRocyArICdNJyA6ICcnKSArXG4gICAgICAgICAgICAoZGF5cyA/IGRheXNTaWduICsgZGF5cyArICdEJyA6ICcnKSArXG4gICAgICAgICAgICAoaG91cnMgfHwgbWludXRlcyB8fCBzZWNvbmRzID8gJ1QnIDogJycpICtcbiAgICAgICAgICAgIChob3VycyA/IGhtc1NpZ24gKyBob3VycyArICdIJyA6ICcnKSArXG4gICAgICAgICAgICAobWludXRlcyA/IGhtc1NpZ24gKyBtaW51dGVzICsgJ00nIDogJycpICtcbiAgICAgICAgICAgIChzZWNvbmRzID8gaG1zU2lnbiArIHMgKyAnUycgOiAnJylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB2YXIgcHJvdG8kMiA9IER1cmF0aW9uLnByb3RvdHlwZTtcblxuICAgIHByb3RvJDIuaXNWYWxpZCA9IGlzVmFsaWQkMTtcbiAgICBwcm90byQyLmFicyA9IGFicztcbiAgICBwcm90byQyLmFkZCA9IGFkZCQxO1xuICAgIHByb3RvJDIuc3VidHJhY3QgPSBzdWJ0cmFjdCQxO1xuICAgIHByb3RvJDIuYXMgPSBhcztcbiAgICBwcm90byQyLmFzTWlsbGlzZWNvbmRzID0gYXNNaWxsaXNlY29uZHM7XG4gICAgcHJvdG8kMi5hc1NlY29uZHMgPSBhc1NlY29uZHM7XG4gICAgcHJvdG8kMi5hc01pbnV0ZXMgPSBhc01pbnV0ZXM7XG4gICAgcHJvdG8kMi5hc0hvdXJzID0gYXNIb3VycztcbiAgICBwcm90byQyLmFzRGF5cyA9IGFzRGF5cztcbiAgICBwcm90byQyLmFzV2Vla3MgPSBhc1dlZWtzO1xuICAgIHByb3RvJDIuYXNNb250aHMgPSBhc01vbnRocztcbiAgICBwcm90byQyLmFzUXVhcnRlcnMgPSBhc1F1YXJ0ZXJzO1xuICAgIHByb3RvJDIuYXNZZWFycyA9IGFzWWVhcnM7XG4gICAgcHJvdG8kMi52YWx1ZU9mID0gdmFsdWVPZiQxO1xuICAgIHByb3RvJDIuX2J1YmJsZSA9IGJ1YmJsZTtcbiAgICBwcm90byQyLmNsb25lID0gY2xvbmUkMTtcbiAgICBwcm90byQyLmdldCA9IGdldCQyO1xuICAgIHByb3RvJDIubWlsbGlzZWNvbmRzID0gbWlsbGlzZWNvbmRzO1xuICAgIHByb3RvJDIuc2Vjb25kcyA9IHNlY29uZHM7XG4gICAgcHJvdG8kMi5taW51dGVzID0gbWludXRlcztcbiAgICBwcm90byQyLmhvdXJzID0gaG91cnM7XG4gICAgcHJvdG8kMi5kYXlzID0gZGF5cztcbiAgICBwcm90byQyLndlZWtzID0gd2Vla3M7XG4gICAgcHJvdG8kMi5tb250aHMgPSBtb250aHM7XG4gICAgcHJvdG8kMi55ZWFycyA9IHllYXJzO1xuICAgIHByb3RvJDIuaHVtYW5pemUgPSBodW1hbml6ZTtcbiAgICBwcm90byQyLnRvSVNPU3RyaW5nID0gdG9JU09TdHJpbmckMTtcbiAgICBwcm90byQyLnRvU3RyaW5nID0gdG9JU09TdHJpbmckMTtcbiAgICBwcm90byQyLnRvSlNPTiA9IHRvSVNPU3RyaW5nJDE7XG4gICAgcHJvdG8kMi5sb2NhbGUgPSBsb2NhbGU7XG4gICAgcHJvdG8kMi5sb2NhbGVEYXRhID0gbG9jYWxlRGF0YTtcblxuICAgIHByb3RvJDIudG9Jc29TdHJpbmcgPSBkZXByZWNhdGUoXG4gICAgICAgICd0b0lzb1N0cmluZygpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgdG9JU09TdHJpbmcoKSBpbnN0ZWFkIChub3RpY2UgdGhlIGNhcGl0YWxzKScsXG4gICAgICAgIHRvSVNPU3RyaW5nJDFcbiAgICApO1xuICAgIHByb3RvJDIubGFuZyA9IGxhbmc7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignWCcsIDAsIDAsICd1bml4Jyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ3gnLCAwLCAwLCAndmFsdWVPZicpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbigneCcsIG1hdGNoU2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCdYJywgbWF0Y2hUaW1lc3RhbXApO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1gnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUocGFyc2VGbG9hdChpbnB1dCkgKiAxMDAwKTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCd4JywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKHRvSW50KGlucHV0KSk7XG4gICAgfSk7XG5cbiAgICAvLyEgbW9tZW50LmpzXG5cbiAgICBob29rcy52ZXJzaW9uID0gJzIuMjkuNCc7XG5cbiAgICBzZXRIb29rQ2FsbGJhY2soY3JlYXRlTG9jYWwpO1xuXG4gICAgaG9va3MuZm4gPSBwcm90bztcbiAgICBob29rcy5taW4gPSBtaW47XG4gICAgaG9va3MubWF4ID0gbWF4O1xuICAgIGhvb2tzLm5vdyA9IG5vdztcbiAgICBob29rcy51dGMgPSBjcmVhdGVVVEM7XG4gICAgaG9va3MudW5peCA9IGNyZWF0ZVVuaXg7XG4gICAgaG9va3MubW9udGhzID0gbGlzdE1vbnRocztcbiAgICBob29rcy5pc0RhdGUgPSBpc0RhdGU7XG4gICAgaG9va3MubG9jYWxlID0gZ2V0U2V0R2xvYmFsTG9jYWxlO1xuICAgIGhvb2tzLmludmFsaWQgPSBjcmVhdGVJbnZhbGlkO1xuICAgIGhvb2tzLmR1cmF0aW9uID0gY3JlYXRlRHVyYXRpb247XG4gICAgaG9va3MuaXNNb21lbnQgPSBpc01vbWVudDtcbiAgICBob29rcy53ZWVrZGF5cyA9IGxpc3RXZWVrZGF5cztcbiAgICBob29rcy5wYXJzZVpvbmUgPSBjcmVhdGVJblpvbmU7XG4gICAgaG9va3MubG9jYWxlRGF0YSA9IGdldExvY2FsZTtcbiAgICBob29rcy5pc0R1cmF0aW9uID0gaXNEdXJhdGlvbjtcbiAgICBob29rcy5tb250aHNTaG9ydCA9IGxpc3RNb250aHNTaG9ydDtcbiAgICBob29rcy53ZWVrZGF5c01pbiA9IGxpc3RXZWVrZGF5c01pbjtcbiAgICBob29rcy5kZWZpbmVMb2NhbGUgPSBkZWZpbmVMb2NhbGU7XG4gICAgaG9va3MudXBkYXRlTG9jYWxlID0gdXBkYXRlTG9jYWxlO1xuICAgIGhvb2tzLmxvY2FsZXMgPSBsaXN0TG9jYWxlcztcbiAgICBob29rcy53ZWVrZGF5c1Nob3J0ID0gbGlzdFdlZWtkYXlzU2hvcnQ7XG4gICAgaG9va3Mubm9ybWFsaXplVW5pdHMgPSBub3JtYWxpemVVbml0cztcbiAgICBob29rcy5yZWxhdGl2ZVRpbWVSb3VuZGluZyA9IGdldFNldFJlbGF0aXZlVGltZVJvdW5kaW5nO1xuICAgIGhvb2tzLnJlbGF0aXZlVGltZVRocmVzaG9sZCA9IGdldFNldFJlbGF0aXZlVGltZVRocmVzaG9sZDtcbiAgICBob29rcy5jYWxlbmRhckZvcm1hdCA9IGdldENhbGVuZGFyRm9ybWF0O1xuICAgIGhvb2tzLnByb3RvdHlwZSA9IHByb3RvO1xuXG4gICAgLy8gY3VycmVudGx5IEhUTUw1IGlucHV0IHR5cGUgb25seSBzdXBwb3J0cyAyNC1ob3VyIGZvcm1hdHNcbiAgICBob29rcy5IVE1MNV9GTVQgPSB7XG4gICAgICAgIERBVEVUSU1FX0xPQ0FMOiAnWVlZWS1NTS1ERFRISDptbScsIC8vIDxpbnB1dCB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIiAvPlxuICAgICAgICBEQVRFVElNRV9MT0NBTF9TRUNPTkRTOiAnWVlZWS1NTS1ERFRISDptbTpzcycsIC8vIDxpbnB1dCB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIiBzdGVwPVwiMVwiIC8+XG4gICAgICAgIERBVEVUSU1FX0xPQ0FMX01TOiAnWVlZWS1NTS1ERFRISDptbTpzcy5TU1MnLCAvLyA8aW5wdXQgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgc3RlcD1cIjAuMDAxXCIgLz5cbiAgICAgICAgREFURTogJ1lZWVktTU0tREQnLCAvLyA8aW5wdXQgdHlwZT1cImRhdGVcIiAvPlxuICAgICAgICBUSU1FOiAnSEg6bW0nLCAvLyA8aW5wdXQgdHlwZT1cInRpbWVcIiAvPlxuICAgICAgICBUSU1FX1NFQ09ORFM6ICdISDptbTpzcycsIC8vIDxpbnB1dCB0eXBlPVwidGltZVwiIHN0ZXA9XCIxXCIgLz5cbiAgICAgICAgVElNRV9NUzogJ0hIOm1tOnNzLlNTUycsIC8vIDxpbnB1dCB0eXBlPVwidGltZVwiIHN0ZXA9XCIwLjAwMVwiIC8+XG4gICAgICAgIFdFRUs6ICdHR0dHLVtXXVdXJywgLy8gPGlucHV0IHR5cGU9XCJ3ZWVrXCIgLz5cbiAgICAgICAgTU9OVEg6ICdZWVlZLU1NJywgLy8gPGlucHV0IHR5cGU9XCJtb250aFwiIC8+XG4gICAgfTtcblxuICAgIHJldHVybiBob29rcztcblxufSkpKTtcbiIsIi8vIHNoaW0gZm9yIHVzaW5nIHByb2Nlc3MgaW4gYnJvd3NlclxudmFyIHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vLyBjYWNoZWQgZnJvbSB3aGF0ZXZlciBnbG9iYWwgaXMgcHJlc2VudCBzbyB0aGF0IHRlc3QgcnVubmVycyB0aGF0IHN0dWIgaXRcbi8vIGRvbid0IGJyZWFrIHRoaW5ncy4gIEJ1dCB3ZSBuZWVkIHRvIHdyYXAgaXQgaW4gYSB0cnkgY2F0Y2ggaW4gY2FzZSBpdCBpc1xuLy8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRvZXNuJ3QgZGVmaW5lIGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYVxuLy8gZnVuY3Rpb24gYmVjYXVzZSB0cnkvY2F0Y2hlcyBkZW9wdGltaXplIGluIGNlcnRhaW4gZW5naW5lcy5cblxudmFyIGNhY2hlZFNldFRpbWVvdXQ7XG52YXIgY2FjaGVkQ2xlYXJUaW1lb3V0O1xuXG5mdW5jdGlvbiBkZWZhdWx0U2V0VGltb3V0KCkge1xuICAgIHRocm93IG5ldyBFcnJvcignc2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuZnVuY3Rpb24gZGVmYXVsdENsZWFyVGltZW91dCAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbihmdW5jdGlvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzZXRUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjbGVhclRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgfVxufSAoKSlcbmZ1bmN0aW9uIHJ1blRpbWVvdXQoZnVuKSB7XG4gICAgaWYgKGNhY2hlZFNldFRpbWVvdXQgPT09IHNldFRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIC8vIGlmIHNldFRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRTZXRUaW1lb3V0ID09PSBkZWZhdWx0U2V0VGltb3V0IHx8ICFjYWNoZWRTZXRUaW1lb3V0KSAmJiBzZXRUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfSBjYXRjaChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbChudWxsLCBmdW4sIDApO1xuICAgICAgICB9IGNhdGNoKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3JcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwodGhpcywgZnVuLCAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG59XG5mdW5jdGlvbiBydW5DbGVhclRpbWVvdXQobWFya2VyKSB7XG4gICAgaWYgKGNhY2hlZENsZWFyVGltZW91dCA9PT0gY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIC8vIGlmIGNsZWFyVGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZENsZWFyVGltZW91dCA9PT0gZGVmYXVsdENsZWFyVGltZW91dCB8fCAhY2FjaGVkQ2xlYXJUaW1lb3V0KSAmJiBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0ICB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKG51bGwsIG1hcmtlcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3IuXG4gICAgICAgICAgICAvLyBTb21lIHZlcnNpb25zIG9mIEkuRS4gaGF2ZSBkaWZmZXJlbnQgcnVsZXMgZm9yIGNsZWFyVGltZW91dCB2cyBzZXRUaW1lb3V0XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwodGhpcywgbWFya2VyKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG5cbn1cbnZhciBxdWV1ZSA9IFtdO1xudmFyIGRyYWluaW5nID0gZmFsc2U7XG52YXIgY3VycmVudFF1ZXVlO1xudmFyIHF1ZXVlSW5kZXggPSAtMTtcblxuZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuICAgIGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgcXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgfVxuICAgIGlmIChxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgZHJhaW5RdWV1ZSgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcbiAgICBpZiAoZHJhaW5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgdGltZW91dCA9IHJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcbiAgICBkcmFpbmluZyA9IHRydWU7XG5cbiAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIHdoaWxlKGxlbikge1xuICAgICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTtcbiAgICAgICAgcXVldWUgPSBbXTtcbiAgICAgICAgd2hpbGUgKCsrcXVldWVJbmRleCA8IGxlbikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRRdWV1ZSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB9XG4gICAgY3VycmVudFF1ZXVlID0gbnVsbDtcbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIHJ1bkNsZWFyVGltZW91dCh0aW1lb3V0KTtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBxdWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpO1xuICAgIGlmIChxdWV1ZS5sZW5ndGggPT09IDEgJiYgIWRyYWluaW5nKSB7XG4gICAgICAgIHJ1blRpbWVvdXQoZHJhaW5RdWV1ZSk7XG4gICAgfVxufTtcblxuLy8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0c1xuZnVuY3Rpb24gSXRlbShmdW4sIGFycmF5KSB7XG4gICAgdGhpcy5mdW4gPSBmdW47XG4gICAgdGhpcy5hcnJheSA9IGFycmF5O1xufVxuSXRlbS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZnVuLmFwcGx5KG51bGwsIHRoaXMuYXJyYXkpO1xufTtcbnByb2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7XG5wcm9jZXNzLmJyb3dzZXIgPSB0cnVlO1xucHJvY2Vzcy5lbnYgPSB7fTtcbnByb2Nlc3MuYXJndiA9IFtdO1xucHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5wcm9jZXNzLnZlcnNpb25zID0ge307XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5wcm9jZXNzLm9uID0gbm9vcDtcbnByb2Nlc3MuYWRkTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5vbmNlID0gbm9vcDtcbnByb2Nlc3Mub2ZmID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xucHJvY2Vzcy5lbWl0ID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZE9uY2VMaXN0ZW5lciA9IG5vb3A7XG5cbnByb2Nlc3MubGlzdGVuZXJzID0gZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIFtdIH1cblxucHJvY2Vzcy5iaW5kaW5nID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xuXG5wcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvJyB9O1xucHJvY2Vzcy5jaGRpciA9IGZ1bmN0aW9uIChkaXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcbnByb2Nlc3MudW1hc2sgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH07XG4iLCIvKiFcbiAqIFNlbGVjdDIgNC4xLjAtcmMuMFxuICogaHR0cHM6Ly9zZWxlY3QyLmdpdGh1Yi5pb1xuICpcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZVxuICogaHR0cHM6Ly9naXRodWIuY29tL3NlbGVjdDIvc2VsZWN0Mi9ibG9iL21hc3Rlci9MSUNFTlNFLm1kXG4gKi9cbjsoZnVuY3Rpb24gKGZhY3RvcnkpIHtcbiAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuICAgIC8vIEFNRC4gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIG1vZHVsZS5cbiAgICBkZWZpbmUoWydqcXVlcnknXSwgZmFjdG9yeSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcbiAgICAvLyBOb2RlL0NvbW1vbkpTXG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocm9vdCwgalF1ZXJ5KSB7XG4gICAgICBpZiAoalF1ZXJ5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gcmVxdWlyZSgnalF1ZXJ5JykgcmV0dXJucyBhIGZhY3RvcnkgdGhhdCByZXF1aXJlcyB3aW5kb3cgdG9cbiAgICAgICAgLy8gYnVpbGQgYSBqUXVlcnkgaW5zdGFuY2UsIHdlIG5vcm1hbGl6ZSBob3cgd2UgdXNlIG1vZHVsZXNcbiAgICAgICAgLy8gdGhhdCByZXF1aXJlIHRoaXMgcGF0dGVybiBidXQgdGhlIHdpbmRvdyBwcm92aWRlZCBpcyBhIG5vb3BcbiAgICAgICAgLy8gaWYgaXQncyBkZWZpbmVkIChob3cganF1ZXJ5IHdvcmtzKVxuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBqUXVlcnkgPSByZXF1aXJlKCdqcXVlcnknKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBqUXVlcnkgPSByZXF1aXJlKCdqcXVlcnknKShyb290KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZmFjdG9yeShqUXVlcnkpO1xuICAgICAgcmV0dXJuIGpRdWVyeTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIC8vIEJyb3dzZXIgZ2xvYmFsc1xuICAgIGZhY3RvcnkoalF1ZXJ5KTtcbiAgfVxufSAoZnVuY3Rpb24gKGpRdWVyeSkge1xuICAvLyBUaGlzIGlzIG5lZWRlZCBzbyB3ZSBjYW4gY2F0Y2ggdGhlIEFNRCBsb2FkZXIgY29uZmlndXJhdGlvbiBhbmQgdXNlIGl0XG4gIC8vIFRoZSBpbm5lciBmaWxlIHNob3VsZCBiZSB3cmFwcGVkIChieSBgYmFubmVyLnN0YXJ0LmpzYCkgaW4gYSBmdW5jdGlvbiB0aGF0XG4gIC8vIHJldHVybnMgdGhlIEFNRCBsb2FkZXIgcmVmZXJlbmNlcy5cbiAgdmFyIFMyID0oZnVuY3Rpb24gKCkge1xuICAvLyBSZXN0b3JlIHRoZSBTZWxlY3QyIEFNRCBsb2FkZXIgc28gaXQgY2FuIGJlIHVzZWRcbiAgLy8gTmVlZGVkIG1vc3RseSBpbiB0aGUgbGFuZ3VhZ2UgZmlsZXMsIHdoZXJlIHRoZSBsb2FkZXIgaXMgbm90IGluc2VydGVkXG4gIGlmIChqUXVlcnkgJiYgalF1ZXJ5LmZuICYmIGpRdWVyeS5mbi5zZWxlY3QyICYmIGpRdWVyeS5mbi5zZWxlY3QyLmFtZCkge1xuICAgIHZhciBTMiA9IGpRdWVyeS5mbi5zZWxlY3QyLmFtZDtcbiAgfVxudmFyIFMyOyhmdW5jdGlvbiAoKSB7IGlmICghUzIgfHwgIVMyLnJlcXVpcmVqcykge1xuaWYgKCFTMikgeyBTMiA9IHt9OyB9IGVsc2UgeyByZXF1aXJlID0gUzI7IH1cbi8qKlxuICogQGxpY2Vuc2UgYWxtb25kIDAuMy4zIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzLlxuICogUmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UsIGh0dHA6Ly9naXRodWIuY29tL3JlcXVpcmVqcy9hbG1vbmQvTElDRU5TRVxuICovXG4vL0dvaW5nIHNsb3BweSB0byBhdm9pZCAndXNlIHN0cmljdCcgc3RyaW5nIGNvc3QsIGJ1dCBzdHJpY3QgcHJhY3RpY2VzIHNob3VsZFxuLy9iZSBmb2xsb3dlZC5cbi8qZ2xvYmFsIHNldFRpbWVvdXQ6IGZhbHNlICovXG5cbnZhciByZXF1aXJlanMsIHJlcXVpcmUsIGRlZmluZTtcbihmdW5jdGlvbiAodW5kZWYpIHtcbiAgICB2YXIgbWFpbiwgcmVxLCBtYWtlTWFwLCBoYW5kbGVycyxcbiAgICAgICAgZGVmaW5lZCA9IHt9LFxuICAgICAgICB3YWl0aW5nID0ge30sXG4gICAgICAgIGNvbmZpZyA9IHt9LFxuICAgICAgICBkZWZpbmluZyA9IHt9LFxuICAgICAgICBoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LFxuICAgICAgICBhcHMgPSBbXS5zbGljZSxcbiAgICAgICAganNTdWZmaXhSZWdFeHAgPSAvXFwuanMkLztcblxuICAgIGZ1bmN0aW9uIGhhc1Byb3Aob2JqLCBwcm9wKSB7XG4gICAgICAgIHJldHVybiBoYXNPd24uY2FsbChvYmosIHByb3ApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdpdmVuIGEgcmVsYXRpdmUgbW9kdWxlIG5hbWUsIGxpa2UgLi9zb21ldGhpbmcsIG5vcm1hbGl6ZSBpdCB0b1xuICAgICAqIGEgcmVhbCBuYW1lIHRoYXQgY2FuIGJlIG1hcHBlZCB0byBhIHBhdGguXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgdGhlIHJlbGF0aXZlIG5hbWVcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gYmFzZU5hbWUgYSByZWFsIG5hbWUgdGhhdCB0aGUgbmFtZSBhcmcgaXMgcmVsYXRpdmVcbiAgICAgKiB0by5cbiAgICAgKiBAcmV0dXJucyB7U3RyaW5nfSBub3JtYWxpemVkIG5hbWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBub3JtYWxpemUobmFtZSwgYmFzZU5hbWUpIHtcbiAgICAgICAgdmFyIG5hbWVQYXJ0cywgbmFtZVNlZ21lbnQsIG1hcFZhbHVlLCBmb3VuZE1hcCwgbGFzdEluZGV4LFxuICAgICAgICAgICAgZm91bmRJLCBmb3VuZFN0YXJNYXAsIHN0YXJJLCBpLCBqLCBwYXJ0LCBub3JtYWxpemVkQmFzZVBhcnRzLFxuICAgICAgICAgICAgYmFzZVBhcnRzID0gYmFzZU5hbWUgJiYgYmFzZU5hbWUuc3BsaXQoXCIvXCIpLFxuICAgICAgICAgICAgbWFwID0gY29uZmlnLm1hcCxcbiAgICAgICAgICAgIHN0YXJNYXAgPSAobWFwICYmIG1hcFsnKiddKSB8fCB7fTtcblxuICAgICAgICAvL0FkanVzdCBhbnkgcmVsYXRpdmUgcGF0aHMuXG4gICAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgICAgICBuYW1lID0gbmFtZS5zcGxpdCgnLycpO1xuICAgICAgICAgICAgbGFzdEluZGV4ID0gbmFtZS5sZW5ndGggLSAxO1xuXG4gICAgICAgICAgICAvLyBJZiB3YW50aW5nIG5vZGUgSUQgY29tcGF0aWJpbGl0eSwgc3RyaXAgLmpzIGZyb20gZW5kXG4gICAgICAgICAgICAvLyBvZiBJRHMuIEhhdmUgdG8gZG8gdGhpcyBoZXJlLCBhbmQgbm90IGluIG5hbWVUb1VybFxuICAgICAgICAgICAgLy8gYmVjYXVzZSBub2RlIGFsbG93cyBlaXRoZXIgLmpzIG9yIG5vbiAuanMgdG8gbWFwXG4gICAgICAgICAgICAvLyB0byBzYW1lIGZpbGUuXG4gICAgICAgICAgICBpZiAoY29uZmlnLm5vZGVJZENvbXBhdCAmJiBqc1N1ZmZpeFJlZ0V4cC50ZXN0KG5hbWVbbGFzdEluZGV4XSkpIHtcbiAgICAgICAgICAgICAgICBuYW1lW2xhc3RJbmRleF0gPSBuYW1lW2xhc3RJbmRleF0ucmVwbGFjZShqc1N1ZmZpeFJlZ0V4cCwgJycpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTdGFydHMgd2l0aCBhICcuJyBzbyBuZWVkIHRoZSBiYXNlTmFtZVxuICAgICAgICAgICAgaWYgKG5hbWVbMF0uY2hhckF0KDApID09PSAnLicgJiYgYmFzZVBhcnRzKSB7XG4gICAgICAgICAgICAgICAgLy9Db252ZXJ0IGJhc2VOYW1lIHRvIGFycmF5LCBhbmQgbG9wIG9mZiB0aGUgbGFzdCBwYXJ0LFxuICAgICAgICAgICAgICAgIC8vc28gdGhhdCAuIG1hdGNoZXMgdGhhdCAnZGlyZWN0b3J5JyBhbmQgbm90IG5hbWUgb2YgdGhlIGJhc2VOYW1lJ3NcbiAgICAgICAgICAgICAgICAvL21vZHVsZS4gRm9yIGluc3RhbmNlLCBiYXNlTmFtZSBvZiAnb25lL3R3by90aHJlZScsIG1hcHMgdG9cbiAgICAgICAgICAgICAgICAvLydvbmUvdHdvL3RocmVlLmpzJywgYnV0IHdlIHdhbnQgdGhlIGRpcmVjdG9yeSwgJ29uZS90d28nIGZvclxuICAgICAgICAgICAgICAgIC8vdGhpcyBub3JtYWxpemF0aW9uLlxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRCYXNlUGFydHMgPSBiYXNlUGFydHMuc2xpY2UoMCwgYmFzZVBhcnRzLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgICAgIG5hbWUgPSBub3JtYWxpemVkQmFzZVBhcnRzLmNvbmNhdChuYW1lKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9zdGFydCB0cmltRG90c1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBwYXJ0ID0gbmFtZVtpXTtcbiAgICAgICAgICAgICAgICBpZiAocGFydCA9PT0gJy4nKSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWUuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICAgICAgICBpIC09IDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJ0ID09PSAnLi4nKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIGF0IHRoZSBzdGFydCwgb3IgcHJldmlvdXMgdmFsdWUgaXMgc3RpbGwgLi4sXG4gICAgICAgICAgICAgICAgICAgIC8vIGtlZXAgdGhlbSBzbyB0aGF0IHdoZW4gY29udmVydGVkIHRvIGEgcGF0aCBpdCBtYXlcbiAgICAgICAgICAgICAgICAgICAgLy8gc3RpbGwgd29yayB3aGVuIGNvbnZlcnRlZCB0byBhIHBhdGgsIGV2ZW4gdGhvdWdoXG4gICAgICAgICAgICAgICAgICAgIC8vIGFzIGFuIElEIGl0IGlzIGxlc3MgdGhhbiBpZGVhbC4gSW4gbGFyZ2VyIHBvaW50XG4gICAgICAgICAgICAgICAgICAgIC8vIHJlbGVhc2VzLCBtYXkgYmUgYmV0dGVyIHRvIGp1c3Qga2ljayBvdXQgYW4gZXJyb3IuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSAwIHx8IChpID09PSAxICYmIG5hbWVbMl0gPT09ICcuLicpIHx8IG5hbWVbaSAtIDFdID09PSAnLi4nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5zcGxpY2UoaSAtIDEsIDIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaSAtPSAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9lbmQgdHJpbURvdHNcblxuICAgICAgICAgICAgbmFtZSA9IG5hbWUuam9pbignLycpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9BcHBseSBtYXAgY29uZmlnIGlmIGF2YWlsYWJsZS5cbiAgICAgICAgaWYgKChiYXNlUGFydHMgfHwgc3Rhck1hcCkgJiYgbWFwKSB7XG4gICAgICAgICAgICBuYW1lUGFydHMgPSBuYW1lLnNwbGl0KCcvJyk7XG5cbiAgICAgICAgICAgIGZvciAoaSA9IG5hbWVQYXJ0cy5sZW5ndGg7IGkgPiAwOyBpIC09IDEpIHtcbiAgICAgICAgICAgICAgICBuYW1lU2VnbWVudCA9IG5hbWVQYXJ0cy5zbGljZSgwLCBpKS5qb2luKFwiL1wiKTtcblxuICAgICAgICAgICAgICAgIGlmIChiYXNlUGFydHMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy9GaW5kIHRoZSBsb25nZXN0IGJhc2VOYW1lIHNlZ21lbnQgbWF0Y2ggaW4gdGhlIGNvbmZpZy5cbiAgICAgICAgICAgICAgICAgICAgLy9TbywgZG8gam9pbnMgb24gdGhlIGJpZ2dlc3QgdG8gc21hbGxlc3QgbGVuZ3RocyBvZiBiYXNlUGFydHMuXG4gICAgICAgICAgICAgICAgICAgIGZvciAoaiA9IGJhc2VQYXJ0cy5sZW5ndGg7IGogPiAwOyBqIC09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcFZhbHVlID0gbWFwW2Jhc2VQYXJ0cy5zbGljZSgwLCBqKS5qb2luKCcvJyldO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2Jhc2VOYW1lIHNlZ21lbnQgaGFzICBjb25maWcsIGZpbmQgaWYgaXQgaGFzIG9uZSBmb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcyBuYW1lLlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwVmFsdWUgPSBtYXBWYWx1ZVtuYW1lU2VnbWVudF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTWF0Y2gsIHVwZGF0ZSBuYW1lIHRvIHRoZSBuZXcgdmFsdWUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kTWFwID0gbWFwVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kSSA9IGk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChmb3VuZE1hcCkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvL0NoZWNrIGZvciBhIHN0YXIgbWFwIG1hdGNoLCBidXQganVzdCBob2xkIG9uIHRvIGl0LFxuICAgICAgICAgICAgICAgIC8vaWYgdGhlcmUgaXMgYSBzaG9ydGVyIHNlZ21lbnQgbWF0Y2ggbGF0ZXIgaW4gYSBtYXRjaGluZ1xuICAgICAgICAgICAgICAgIC8vY29uZmlnLCB0aGVuIGZhdm9yIG92ZXIgdGhpcyBzdGFyIG1hcC5cbiAgICAgICAgICAgICAgICBpZiAoIWZvdW5kU3Rhck1hcCAmJiBzdGFyTWFwICYmIHN0YXJNYXBbbmFtZVNlZ21lbnRdKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvdW5kU3Rhck1hcCA9IHN0YXJNYXBbbmFtZVNlZ21lbnRdO1xuICAgICAgICAgICAgICAgICAgICBzdGFySSA9IGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWZvdW5kTWFwICYmIGZvdW5kU3Rhck1hcCkge1xuICAgICAgICAgICAgICAgIGZvdW5kTWFwID0gZm91bmRTdGFyTWFwO1xuICAgICAgICAgICAgICAgIGZvdW5kSSA9IHN0YXJJO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZm91bmRNYXApIHtcbiAgICAgICAgICAgICAgICBuYW1lUGFydHMuc3BsaWNlKDAsIGZvdW5kSSwgZm91bmRNYXApO1xuICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lUGFydHMuam9pbignLycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZVJlcXVpcmUocmVsTmFtZSwgZm9yY2VTeW5jKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAvL0EgdmVyc2lvbiBvZiBhIHJlcXVpcmUgZnVuY3Rpb24gdGhhdCBwYXNzZXMgYSBtb2R1bGVOYW1lXG4gICAgICAgICAgICAvL3ZhbHVlIGZvciBpdGVtcyB0aGF0IG1heSBuZWVkIHRvXG4gICAgICAgICAgICAvL2xvb2sgdXAgcGF0aHMgcmVsYXRpdmUgdG8gdGhlIG1vZHVsZU5hbWVcbiAgICAgICAgICAgIHZhciBhcmdzID0gYXBzLmNhbGwoYXJndW1lbnRzLCAwKTtcblxuICAgICAgICAgICAgLy9JZiBmaXJzdCBhcmcgaXMgbm90IHJlcXVpcmUoJ3N0cmluZycpLCBhbmQgdGhlcmUgaXMgb25seVxuICAgICAgICAgICAgLy9vbmUgYXJnLCBpdCBpcyB0aGUgYXJyYXkgZm9ybSB3aXRob3V0IGEgY2FsbGJhY2suIEluc2VydFxuICAgICAgICAgICAgLy9hIG51bGwgc28gdGhhdCB0aGUgZm9sbG93aW5nIGNvbmNhdCBpcyBjb3JyZWN0LlxuICAgICAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdICE9PSAnc3RyaW5nJyAmJiBhcmdzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIGFyZ3MucHVzaChudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXEuYXBwbHkodW5kZWYsIGFyZ3MuY29uY2F0KFtyZWxOYW1lLCBmb3JjZVN5bmNdKSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZU5vcm1hbGl6ZShyZWxOYW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZShuYW1lLCByZWxOYW1lKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWtlTG9hZChkZXBOYW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGRlZmluZWRbZGVwTmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjYWxsRGVwKG5hbWUpIHtcbiAgICAgICAgaWYgKGhhc1Byb3Aod2FpdGluZywgbmFtZSkpIHtcbiAgICAgICAgICAgIHZhciBhcmdzID0gd2FpdGluZ1tuYW1lXTtcbiAgICAgICAgICAgIGRlbGV0ZSB3YWl0aW5nW25hbWVdO1xuICAgICAgICAgICAgZGVmaW5pbmdbbmFtZV0gPSB0cnVlO1xuICAgICAgICAgICAgbWFpbi5hcHBseSh1bmRlZiwgYXJncyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWhhc1Byb3AoZGVmaW5lZCwgbmFtZSkgJiYgIWhhc1Byb3AoZGVmaW5pbmcsIG5hbWUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vICcgKyBuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVmaW5lZFtuYW1lXTtcbiAgICB9XG5cbiAgICAvL1R1cm5zIGEgcGx1Z2luIXJlc291cmNlIHRvIFtwbHVnaW4sIHJlc291cmNlXVxuICAgIC8vd2l0aCB0aGUgcGx1Z2luIGJlaW5nIHVuZGVmaW5lZCBpZiB0aGUgbmFtZVxuICAgIC8vZGlkIG5vdCBoYXZlIGEgcGx1Z2luIHByZWZpeC5cbiAgICBmdW5jdGlvbiBzcGxpdFByZWZpeChuYW1lKSB7XG4gICAgICAgIHZhciBwcmVmaXgsXG4gICAgICAgICAgICBpbmRleCA9IG5hbWUgPyBuYW1lLmluZGV4T2YoJyEnKSA6IC0xO1xuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgcHJlZml4ID0gbmFtZS5zdWJzdHJpbmcoMCwgaW5kZXgpO1xuICAgICAgICAgICAgbmFtZSA9IG5hbWUuc3Vic3RyaW5nKGluZGV4ICsgMSwgbmFtZS5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbcHJlZml4LCBuYW1lXTtcbiAgICB9XG5cbiAgICAvL0NyZWF0ZXMgYSBwYXJ0cyBhcnJheSBmb3IgYSByZWxOYW1lIHdoZXJlIGZpcnN0IHBhcnQgaXMgcGx1Z2luIElELFxuICAgIC8vc2Vjb25kIHBhcnQgaXMgcmVzb3VyY2UgSUQuIEFzc3VtZXMgcmVsTmFtZSBoYXMgYWxyZWFkeSBiZWVuIG5vcm1hbGl6ZWQuXG4gICAgZnVuY3Rpb24gbWFrZVJlbFBhcnRzKHJlbE5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHJlbE5hbWUgPyBzcGxpdFByZWZpeChyZWxOYW1lKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ha2VzIGEgbmFtZSBtYXAsIG5vcm1hbGl6aW5nIHRoZSBuYW1lLCBhbmQgdXNpbmcgYSBwbHVnaW5cbiAgICAgKiBmb3Igbm9ybWFsaXphdGlvbiBpZiBuZWNlc3NhcnkuIEdyYWJzIGEgcmVmIHRvIHBsdWdpblxuICAgICAqIHRvbywgYXMgYW4gb3B0aW1pemF0aW9uLlxuICAgICAqL1xuICAgIG1ha2VNYXAgPSBmdW5jdGlvbiAobmFtZSwgcmVsUGFydHMpIHtcbiAgICAgICAgdmFyIHBsdWdpbixcbiAgICAgICAgICAgIHBhcnRzID0gc3BsaXRQcmVmaXgobmFtZSksXG4gICAgICAgICAgICBwcmVmaXggPSBwYXJ0c1swXSxcbiAgICAgICAgICAgIHJlbFJlc291cmNlTmFtZSA9IHJlbFBhcnRzWzFdO1xuXG4gICAgICAgIG5hbWUgPSBwYXJ0c1sxXTtcblxuICAgICAgICBpZiAocHJlZml4KSB7XG4gICAgICAgICAgICBwcmVmaXggPSBub3JtYWxpemUocHJlZml4LCByZWxSZXNvdXJjZU5hbWUpO1xuICAgICAgICAgICAgcGx1Z2luID0gY2FsbERlcChwcmVmaXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9Ob3JtYWxpemUgYWNjb3JkaW5nXG4gICAgICAgIGlmIChwcmVmaXgpIHtcbiAgICAgICAgICAgIGlmIChwbHVnaW4gJiYgcGx1Z2luLm5vcm1hbGl6ZSkge1xuICAgICAgICAgICAgICAgIG5hbWUgPSBwbHVnaW4ubm9ybWFsaXplKG5hbWUsIG1ha2VOb3JtYWxpemUocmVsUmVzb3VyY2VOYW1lKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5hbWUgPSBub3JtYWxpemUobmFtZSwgcmVsUmVzb3VyY2VOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5hbWUgPSBub3JtYWxpemUobmFtZSwgcmVsUmVzb3VyY2VOYW1lKTtcbiAgICAgICAgICAgIHBhcnRzID0gc3BsaXRQcmVmaXgobmFtZSk7XG4gICAgICAgICAgICBwcmVmaXggPSBwYXJ0c1swXTtcbiAgICAgICAgICAgIG5hbWUgPSBwYXJ0c1sxXTtcbiAgICAgICAgICAgIGlmIChwcmVmaXgpIHtcbiAgICAgICAgICAgICAgICBwbHVnaW4gPSBjYWxsRGVwKHByZWZpeCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvL1VzaW5nIHJpZGljdWxvdXMgcHJvcGVydHkgbmFtZXMgZm9yIHNwYWNlIHJlYXNvbnNcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGY6IHByZWZpeCA/IHByZWZpeCArICchJyArIG5hbWUgOiBuYW1lLCAvL2Z1bGxOYW1lXG4gICAgICAgICAgICBuOiBuYW1lLFxuICAgICAgICAgICAgcHI6IHByZWZpeCxcbiAgICAgICAgICAgIHA6IHBsdWdpblxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBtYWtlQ29uZmlnKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiAoY29uZmlnICYmIGNvbmZpZy5jb25maWcgJiYgY29uZmlnLmNvbmZpZ1tuYW1lXSkgfHwge307XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaGFuZGxlcnMgPSB7XG4gICAgICAgIHJlcXVpcmU6IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFrZVJlcXVpcmUobmFtZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGV4cG9ydHM6IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgICB2YXIgZSA9IGRlZmluZWRbbmFtZV07XG4gICAgICAgICAgICBpZiAodHlwZW9mIGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAoZGVmaW5lZFtuYW1lXSA9IHt9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW9kdWxlOiBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpZDogbmFtZSxcbiAgICAgICAgICAgICAgICB1cmk6ICcnLFxuICAgICAgICAgICAgICAgIGV4cG9ydHM6IGRlZmluZWRbbmFtZV0sXG4gICAgICAgICAgICAgICAgY29uZmlnOiBtYWtlQ29uZmlnKG5hbWUpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIG1haW4gPSBmdW5jdGlvbiAobmFtZSwgZGVwcywgY2FsbGJhY2ssIHJlbE5hbWUpIHtcbiAgICAgICAgdmFyIGNqc01vZHVsZSwgZGVwTmFtZSwgcmV0LCBtYXAsIGksIHJlbFBhcnRzLFxuICAgICAgICAgICAgYXJncyA9IFtdLFxuICAgICAgICAgICAgY2FsbGJhY2tUeXBlID0gdHlwZW9mIGNhbGxiYWNrLFxuICAgICAgICAgICAgdXNpbmdFeHBvcnRzO1xuXG4gICAgICAgIC8vVXNlIG5hbWUgaWYgbm8gcmVsTmFtZVxuICAgICAgICByZWxOYW1lID0gcmVsTmFtZSB8fCBuYW1lO1xuICAgICAgICByZWxQYXJ0cyA9IG1ha2VSZWxQYXJ0cyhyZWxOYW1lKTtcblxuICAgICAgICAvL0NhbGwgdGhlIGNhbGxiYWNrIHRvIGRlZmluZSB0aGUgbW9kdWxlLCBpZiBuZWNlc3NhcnkuXG4gICAgICAgIGlmIChjYWxsYmFja1R5cGUgPT09ICd1bmRlZmluZWQnIHx8IGNhbGxiYWNrVHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgLy9QdWxsIG91dCB0aGUgZGVmaW5lZCBkZXBlbmRlbmNpZXMgYW5kIHBhc3MgdGhlIG9yZGVyZWRcbiAgICAgICAgICAgIC8vdmFsdWVzIHRvIHRoZSBjYWxsYmFjay5cbiAgICAgICAgICAgIC8vRGVmYXVsdCB0byBbcmVxdWlyZSwgZXhwb3J0cywgbW9kdWxlXSBpZiBubyBkZXBzXG4gICAgICAgICAgICBkZXBzID0gIWRlcHMubGVuZ3RoICYmIGNhbGxiYWNrLmxlbmd0aCA/IFsncmVxdWlyZScsICdleHBvcnRzJywgJ21vZHVsZSddIDogZGVwcztcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBkZXBzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgbWFwID0gbWFrZU1hcChkZXBzW2ldLCByZWxQYXJ0cyk7XG4gICAgICAgICAgICAgICAgZGVwTmFtZSA9IG1hcC5mO1xuXG4gICAgICAgICAgICAgICAgLy9GYXN0IHBhdGggQ29tbW9uSlMgc3RhbmRhcmQgZGVwZW5kZW5jaWVzLlxuICAgICAgICAgICAgICAgIGlmIChkZXBOYW1lID09PSBcInJlcXVpcmVcIikge1xuICAgICAgICAgICAgICAgICAgICBhcmdzW2ldID0gaGFuZGxlcnMucmVxdWlyZShuYW1lKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRlcE5hbWUgPT09IFwiZXhwb3J0c1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vQ29tbW9uSlMgbW9kdWxlIHNwZWMgMS4xXG4gICAgICAgICAgICAgICAgICAgIGFyZ3NbaV0gPSBoYW5kbGVycy5leHBvcnRzKG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB1c2luZ0V4cG9ydHMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGVwTmFtZSA9PT0gXCJtb2R1bGVcIikge1xuICAgICAgICAgICAgICAgICAgICAvL0NvbW1vbkpTIG1vZHVsZSBzcGVjIDEuMVxuICAgICAgICAgICAgICAgICAgICBjanNNb2R1bGUgPSBhcmdzW2ldID0gaGFuZGxlcnMubW9kdWxlKG5hbWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaGFzUHJvcChkZWZpbmVkLCBkZXBOYW1lKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzUHJvcCh3YWl0aW5nLCBkZXBOYW1lKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzUHJvcChkZWZpbmluZywgZGVwTmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYXJnc1tpXSA9IGNhbGxEZXAoZGVwTmFtZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtYXAucCkge1xuICAgICAgICAgICAgICAgICAgICBtYXAucC5sb2FkKG1hcC5uLCBtYWtlUmVxdWlyZShyZWxOYW1lLCB0cnVlKSwgbWFrZUxvYWQoZGVwTmFtZSksIHt9KTtcbiAgICAgICAgICAgICAgICAgICAgYXJnc1tpXSA9IGRlZmluZWRbZGVwTmFtZV07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG5hbWUgKyAnIG1pc3NpbmcgJyArIGRlcE5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0ID0gY2FsbGJhY2sgPyBjYWxsYmFjay5hcHBseShkZWZpbmVkW25hbWVdLCBhcmdzKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgICAgICAgICAvL0lmIHNldHRpbmcgZXhwb3J0cyB2aWEgXCJtb2R1bGVcIiBpcyBpbiBwbGF5LFxuICAgICAgICAgICAgICAgIC8vZmF2b3IgdGhhdCBvdmVyIHJldHVybiB2YWx1ZSBhbmQgZXhwb3J0cy4gQWZ0ZXIgdGhhdCxcbiAgICAgICAgICAgICAgICAvL2Zhdm9yIGEgbm9uLXVuZGVmaW5lZCByZXR1cm4gdmFsdWUgb3ZlciBleHBvcnRzIHVzZS5cbiAgICAgICAgICAgICAgICBpZiAoY2pzTW9kdWxlICYmIGNqc01vZHVsZS5leHBvcnRzICE9PSB1bmRlZiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgY2pzTW9kdWxlLmV4cG9ydHMgIT09IGRlZmluZWRbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgZGVmaW5lZFtuYW1lXSA9IGNqc01vZHVsZS5leHBvcnRzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmV0ICE9PSB1bmRlZiB8fCAhdXNpbmdFeHBvcnRzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vVXNlIHRoZSByZXR1cm4gdmFsdWUgZnJvbSB0aGUgZnVuY3Rpb24uXG4gICAgICAgICAgICAgICAgICAgIGRlZmluZWRbbmFtZV0gPSByZXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG5hbWUpIHtcbiAgICAgICAgICAgIC8vTWF5IGp1c3QgYmUgYW4gb2JqZWN0IGRlZmluaXRpb24gZm9yIHRoZSBtb2R1bGUuIE9ubHlcbiAgICAgICAgICAgIC8vd29ycnkgYWJvdXQgZGVmaW5pbmcgaWYgaGF2ZSBhIG1vZHVsZSBuYW1lLlxuICAgICAgICAgICAgZGVmaW5lZFtuYW1lXSA9IGNhbGxiYWNrO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJlcXVpcmVqcyA9IHJlcXVpcmUgPSByZXEgPSBmdW5jdGlvbiAoZGVwcywgY2FsbGJhY2ssIHJlbE5hbWUsIGZvcmNlU3luYywgYWx0KSB7XG4gICAgICAgIGlmICh0eXBlb2YgZGVwcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgaWYgKGhhbmRsZXJzW2RlcHNdKSB7XG4gICAgICAgICAgICAgICAgLy9jYWxsYmFjayBpbiB0aGlzIGNhc2UgaXMgcmVhbGx5IHJlbE5hbWVcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlcnNbZGVwc10oY2FsbGJhY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9KdXN0IHJldHVybiB0aGUgbW9kdWxlIHdhbnRlZC4gSW4gdGhpcyBzY2VuYXJpbywgdGhlXG4gICAgICAgICAgICAvL2RlcHMgYXJnIGlzIHRoZSBtb2R1bGUgbmFtZSwgYW5kIHNlY29uZCBhcmcgKGlmIHBhc3NlZClcbiAgICAgICAgICAgIC8vaXMganVzdCB0aGUgcmVsTmFtZS5cbiAgICAgICAgICAgIC8vTm9ybWFsaXplIG1vZHVsZSBuYW1lLCBpZiBpdCBjb250YWlucyAuIG9yIC4uXG4gICAgICAgICAgICByZXR1cm4gY2FsbERlcChtYWtlTWFwKGRlcHMsIG1ha2VSZWxQYXJ0cyhjYWxsYmFjaykpLmYpO1xuICAgICAgICB9IGVsc2UgaWYgKCFkZXBzLnNwbGljZSkge1xuICAgICAgICAgICAgLy9kZXBzIGlzIGEgY29uZmlnIG9iamVjdCwgbm90IGFuIGFycmF5LlxuICAgICAgICAgICAgY29uZmlnID0gZGVwcztcbiAgICAgICAgICAgIGlmIChjb25maWcuZGVwcykge1xuICAgICAgICAgICAgICAgIHJlcShjb25maWcuZGVwcywgY29uZmlnLmNhbGxiYWNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjYWxsYmFjay5zcGxpY2UpIHtcbiAgICAgICAgICAgICAgICAvL2NhbGxiYWNrIGlzIGFuIGFycmF5LCB3aGljaCBtZWFucyBpdCBpcyBhIGRlcGVuZGVuY3kgbGlzdC5cbiAgICAgICAgICAgICAgICAvL0FkanVzdCBhcmdzIGlmIHRoZXJlIGFyZSBkZXBlbmRlbmNpZXNcbiAgICAgICAgICAgICAgICBkZXBzID0gY2FsbGJhY2s7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sgPSByZWxOYW1lO1xuICAgICAgICAgICAgICAgIHJlbE5hbWUgPSBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkZXBzID0gdW5kZWY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvL1N1cHBvcnQgcmVxdWlyZShbJ2EnXSlcbiAgICAgICAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbiAoKSB7fTtcblxuICAgICAgICAvL0lmIHJlbE5hbWUgaXMgYSBmdW5jdGlvbiwgaXQgaXMgYW4gZXJyYmFjayBoYW5kbGVyLFxuICAgICAgICAvL3NvIHJlbW92ZSBpdC5cbiAgICAgICAgaWYgKHR5cGVvZiByZWxOYW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZWxOYW1lID0gZm9yY2VTeW5jO1xuICAgICAgICAgICAgZm9yY2VTeW5jID0gYWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgLy9TaW11bGF0ZSBhc3luYyBjYWxsYmFjaztcbiAgICAgICAgaWYgKGZvcmNlU3luYykge1xuICAgICAgICAgICAgbWFpbih1bmRlZiwgZGVwcywgY2FsbGJhY2ssIHJlbE5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy9Vc2luZyBhIG5vbi16ZXJvIHZhbHVlIGJlY2F1c2Ugb2YgY29uY2VybiBmb3Igd2hhdCBvbGQgYnJvd3NlcnNcbiAgICAgICAgICAgIC8vZG8sIGFuZCBsYXRlc3QgYnJvd3NlcnMgXCJ1cGdyYWRlXCIgdG8gNCBpZiBsb3dlciB2YWx1ZSBpcyB1c2VkOlxuICAgICAgICAgICAgLy9odHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aW1lcnMuaHRtbCNkb20td2luZG93dGltZXJzLXNldHRpbWVvdXQ6XG4gICAgICAgICAgICAvL0lmIHdhbnQgYSB2YWx1ZSBpbW1lZGlhdGVseSwgdXNlIHJlcXVpcmUoJ2lkJykgaW5zdGVhZCAtLSBzb21ldGhpbmdcbiAgICAgICAgICAgIC8vdGhhdCB3b3JrcyBpbiBhbG1vbmQgb24gdGhlIGdsb2JhbCBsZXZlbCwgYnV0IG5vdCBndWFyYW50ZWVkIGFuZFxuICAgICAgICAgICAgLy91bmxpa2VseSB0byB3b3JrIGluIG90aGVyIEFNRCBpbXBsZW1lbnRhdGlvbnMuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBtYWluKHVuZGVmLCBkZXBzLCBjYWxsYmFjaywgcmVsTmFtZSk7XG4gICAgICAgICAgICB9LCA0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXE7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEp1c3QgZHJvcHMgdGhlIGNvbmZpZyBvbiB0aGUgZmxvb3IsIGJ1dCByZXR1cm5zIHJlcSBpbiBjYXNlXG4gICAgICogdGhlIGNvbmZpZyByZXR1cm4gdmFsdWUgaXMgdXNlZC5cbiAgICAgKi9cbiAgICByZXEuY29uZmlnID0gZnVuY3Rpb24gKGNmZykge1xuICAgICAgICByZXR1cm4gcmVxKGNmZyk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEV4cG9zZSBtb2R1bGUgcmVnaXN0cnkgZm9yIGRlYnVnZ2luZyBhbmQgdG9vbGluZ1xuICAgICAqL1xuICAgIHJlcXVpcmVqcy5fZGVmaW5lZCA9IGRlZmluZWQ7XG5cbiAgICBkZWZpbmUgPSBmdW5jdGlvbiAobmFtZSwgZGVwcywgY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZWUgYWxtb25kIFJFQURNRTogaW5jb3JyZWN0IG1vZHVsZSBidWlsZCwgbm8gbW9kdWxlIG5hbWUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vVGhpcyBtb2R1bGUgbWF5IG5vdCBoYXZlIGRlcGVuZGVuY2llc1xuICAgICAgICBpZiAoIWRlcHMuc3BsaWNlKSB7XG4gICAgICAgICAgICAvL2RlcHMgaXMgbm90IGFuIGFycmF5LCBzbyBwcm9iYWJseSBtZWFuc1xuICAgICAgICAgICAgLy9hbiBvYmplY3QgbGl0ZXJhbCBvciBmYWN0b3J5IGZ1bmN0aW9uIGZvclxuICAgICAgICAgICAgLy90aGUgdmFsdWUuIEFkanVzdCBhcmdzLlxuICAgICAgICAgICAgY2FsbGJhY2sgPSBkZXBzO1xuICAgICAgICAgICAgZGVwcyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFoYXNQcm9wKGRlZmluZWQsIG5hbWUpICYmICFoYXNQcm9wKHdhaXRpbmcsIG5hbWUpKSB7XG4gICAgICAgICAgICB3YWl0aW5nW25hbWVdID0gW25hbWUsIGRlcHMsIGNhbGxiYWNrXTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBkZWZpbmUuYW1kID0ge1xuICAgICAgICBqUXVlcnk6IHRydWVcbiAgICB9O1xufSgpKTtcblxuUzIucmVxdWlyZWpzID0gcmVxdWlyZWpzO1MyLnJlcXVpcmUgPSByZXF1aXJlO1MyLmRlZmluZSA9IGRlZmluZTtcbn1cbn0oKSk7XG5TMi5kZWZpbmUoXCJhbG1vbmRcIiwgZnVuY3Rpb24oKXt9KTtcblxuLyogZ2xvYmFsIGpRdWVyeTpmYWxzZSwgJDpmYWxzZSAqL1xuUzIuZGVmaW5lKCdqcXVlcnknLFtdLGZ1bmN0aW9uICgpIHtcbiAgdmFyIF8kID0galF1ZXJ5IHx8ICQ7XG5cbiAgaWYgKF8kID09IG51bGwgJiYgY29uc29sZSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgICdTZWxlY3QyOiBBbiBpbnN0YW5jZSBvZiBqUXVlcnkgb3IgYSBqUXVlcnktY29tcGF0aWJsZSBsaWJyYXJ5IHdhcyBub3QgJyArXG4gICAgICAnZm91bmQuIE1ha2Ugc3VyZSB0aGF0IHlvdSBhcmUgaW5jbHVkaW5nIGpRdWVyeSBiZWZvcmUgU2VsZWN0MiBvbiB5b3VyICcgK1xuICAgICAgJ3dlYiBwYWdlLidcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIF8kO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi91dGlscycsW1xuICAnanF1ZXJ5J1xuXSwgZnVuY3Rpb24gKCQpIHtcbiAgdmFyIFV0aWxzID0ge307XG5cbiAgVXRpbHMuRXh0ZW5kID0gZnVuY3Rpb24gKENoaWxkQ2xhc3MsIFN1cGVyQ2xhc3MpIHtcbiAgICB2YXIgX19oYXNQcm9wID0ge30uaGFzT3duUHJvcGVydHk7XG5cbiAgICBmdW5jdGlvbiBCYXNlQ29uc3RydWN0b3IgKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IENoaWxkQ2xhc3M7XG4gICAgfVxuXG4gICAgZm9yICh2YXIga2V5IGluIFN1cGVyQ2xhc3MpIHtcbiAgICAgIGlmIChfX2hhc1Byb3AuY2FsbChTdXBlckNsYXNzLCBrZXkpKSB7XG4gICAgICAgIENoaWxkQ2xhc3Nba2V5XSA9IFN1cGVyQ2xhc3Nba2V5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBCYXNlQ29uc3RydWN0b3IucHJvdG90eXBlID0gU3VwZXJDbGFzcy5wcm90b3R5cGU7XG4gICAgQ2hpbGRDbGFzcy5wcm90b3R5cGUgPSBuZXcgQmFzZUNvbnN0cnVjdG9yKCk7XG4gICAgQ2hpbGRDbGFzcy5fX3N1cGVyX18gPSBTdXBlckNsYXNzLnByb3RvdHlwZTtcblxuICAgIHJldHVybiBDaGlsZENsYXNzO1xuICB9O1xuXG4gIGZ1bmN0aW9uIGdldE1ldGhvZHMgKHRoZUNsYXNzKSB7XG4gICAgdmFyIHByb3RvID0gdGhlQ2xhc3MucHJvdG90eXBlO1xuXG4gICAgdmFyIG1ldGhvZHMgPSBbXTtcblxuICAgIGZvciAodmFyIG1ldGhvZE5hbWUgaW4gcHJvdG8pIHtcbiAgICAgIHZhciBtID0gcHJvdG9bbWV0aG9kTmFtZV07XG5cbiAgICAgIGlmICh0eXBlb2YgbSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1ldGhvZE5hbWUgPT09ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIG1ldGhvZHMucHVzaChtZXRob2ROYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0aG9kcztcbiAgfVxuXG4gIFV0aWxzLkRlY29yYXRlID0gZnVuY3Rpb24gKFN1cGVyQ2xhc3MsIERlY29yYXRvckNsYXNzKSB7XG4gICAgdmFyIGRlY29yYXRlZE1ldGhvZHMgPSBnZXRNZXRob2RzKERlY29yYXRvckNsYXNzKTtcbiAgICB2YXIgc3VwZXJNZXRob2RzID0gZ2V0TWV0aG9kcyhTdXBlckNsYXNzKTtcblxuICAgIGZ1bmN0aW9uIERlY29yYXRlZENsYXNzICgpIHtcbiAgICAgIHZhciB1bnNoaWZ0ID0gQXJyYXkucHJvdG90eXBlLnVuc2hpZnQ7XG5cbiAgICAgIHZhciBhcmdDb3VudCA9IERlY29yYXRvckNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5sZW5ndGg7XG5cbiAgICAgIHZhciBjYWxsZWRDb25zdHJ1Y3RvciA9IFN1cGVyQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yO1xuXG4gICAgICBpZiAoYXJnQ291bnQgPiAwKSB7XG4gICAgICAgIHVuc2hpZnQuY2FsbChhcmd1bWVudHMsIFN1cGVyQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yKTtcblxuICAgICAgICBjYWxsZWRDb25zdHJ1Y3RvciA9IERlY29yYXRvckNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvcjtcbiAgICAgIH1cblxuICAgICAgY2FsbGVkQ29uc3RydWN0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBEZWNvcmF0b3JDbGFzcy5kaXNwbGF5TmFtZSA9IFN1cGVyQ2xhc3MuZGlzcGxheU5hbWU7XG5cbiAgICBmdW5jdGlvbiBjdHIgKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IERlY29yYXRlZENsYXNzO1xuICAgIH1cblxuICAgIERlY29yYXRlZENsYXNzLnByb3RvdHlwZSA9IG5ldyBjdHIoKTtcblxuICAgIGZvciAodmFyIG0gPSAwOyBtIDwgc3VwZXJNZXRob2RzLmxlbmd0aDsgbSsrKSB7XG4gICAgICB2YXIgc3VwZXJNZXRob2QgPSBzdXBlck1ldGhvZHNbbV07XG5cbiAgICAgIERlY29yYXRlZENsYXNzLnByb3RvdHlwZVtzdXBlck1ldGhvZF0gPVxuICAgICAgICBTdXBlckNsYXNzLnByb3RvdHlwZVtzdXBlck1ldGhvZF07XG4gICAgfVxuXG4gICAgdmFyIGNhbGxlZE1ldGhvZCA9IGZ1bmN0aW9uIChtZXRob2ROYW1lKSB7XG4gICAgICAvLyBTdHViIG91dCB0aGUgb3JpZ2luYWwgbWV0aG9kIGlmIGl0J3Mgbm90IGRlY29yYXRpbmcgYW4gYWN0dWFsIG1ldGhvZFxuICAgICAgdmFyIG9yaWdpbmFsTWV0aG9kID0gZnVuY3Rpb24gKCkge307XG5cbiAgICAgIGlmIChtZXRob2ROYW1lIGluIERlY29yYXRlZENsYXNzLnByb3RvdHlwZSkge1xuICAgICAgICBvcmlnaW5hbE1ldGhvZCA9IERlY29yYXRlZENsYXNzLnByb3RvdHlwZVttZXRob2ROYW1lXTtcbiAgICAgIH1cblxuICAgICAgdmFyIGRlY29yYXRlZE1ldGhvZCA9IERlY29yYXRvckNsYXNzLnByb3RvdHlwZVttZXRob2ROYW1lXTtcblxuICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHVuc2hpZnQgPSBBcnJheS5wcm90b3R5cGUudW5zaGlmdDtcblxuICAgICAgICB1bnNoaWZ0LmNhbGwoYXJndW1lbnRzLCBvcmlnaW5hbE1ldGhvZCk7XG5cbiAgICAgICAgcmV0dXJuIGRlY29yYXRlZE1ldGhvZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICB9O1xuXG4gICAgZm9yICh2YXIgZCA9IDA7IGQgPCBkZWNvcmF0ZWRNZXRob2RzLmxlbmd0aDsgZCsrKSB7XG4gICAgICB2YXIgZGVjb3JhdGVkTWV0aG9kID0gZGVjb3JhdGVkTWV0aG9kc1tkXTtcblxuICAgICAgRGVjb3JhdGVkQ2xhc3MucHJvdG90eXBlW2RlY29yYXRlZE1ldGhvZF0gPSBjYWxsZWRNZXRob2QoZGVjb3JhdGVkTWV0aG9kKTtcbiAgICB9XG5cbiAgICByZXR1cm4gRGVjb3JhdGVkQ2xhc3M7XG4gIH07XG5cbiAgdmFyIE9ic2VydmFibGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5saXN0ZW5lcnMgPSB7fTtcbiAgfTtcblxuICBPYnNlcnZhYmxlLnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uIChldmVudCwgY2FsbGJhY2spIHtcbiAgICB0aGlzLmxpc3RlbmVycyA9IHRoaXMubGlzdGVuZXJzIHx8IHt9O1xuXG4gICAgaWYgKGV2ZW50IGluIHRoaXMubGlzdGVuZXJzKSB7XG4gICAgICB0aGlzLmxpc3RlbmVyc1tldmVudF0ucHVzaChjYWxsYmFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGlzdGVuZXJzW2V2ZW50XSA9IFtjYWxsYmFja107XG4gICAgfVxuICB9O1xuXG4gIE9ic2VydmFibGUucHJvdG90eXBlLnRyaWdnZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICB2YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG4gICAgdmFyIHBhcmFtcyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcblxuICAgIHRoaXMubGlzdGVuZXJzID0gdGhpcy5saXN0ZW5lcnMgfHwge307XG5cbiAgICAvLyBQYXJhbXMgc2hvdWxkIGFsd2F5cyBjb21lIGluIGFzIGFuIGFycmF5XG4gICAgaWYgKHBhcmFtcyA9PSBudWxsKSB7XG4gICAgICBwYXJhbXMgPSBbXTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgbm8gYXJndW1lbnRzIHRvIHRoZSBldmVudCwgdXNlIGEgdGVtcG9yYXJ5IG9iamVjdFxuICAgIGlmIChwYXJhbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICBwYXJhbXMucHVzaCh7fSk7XG4gICAgfVxuXG4gICAgLy8gU2V0IHRoZSBgX3R5cGVgIG9mIHRoZSBmaXJzdCBvYmplY3QgdG8gdGhlIGV2ZW50XG4gICAgcGFyYW1zWzBdLl90eXBlID0gZXZlbnQ7XG5cbiAgICBpZiAoZXZlbnQgaW4gdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIHRoaXMuaW52b2tlKHRoaXMubGlzdGVuZXJzW2V2ZW50XSwgc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTtcbiAgICB9XG5cbiAgICBpZiAoJyonIGluIHRoaXMubGlzdGVuZXJzKSB7XG4gICAgICB0aGlzLmludm9rZSh0aGlzLmxpc3RlbmVyc1snKiddLCBhcmd1bWVudHMpO1xuICAgIH1cbiAgfTtcblxuICBPYnNlcnZhYmxlLnByb3RvdHlwZS5pbnZva2UgPSBmdW5jdGlvbiAobGlzdGVuZXJzLCBwYXJhbXMpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gbGlzdGVuZXJzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBsaXN0ZW5lcnNbaV0uYXBwbHkodGhpcywgcGFyYW1zKTtcbiAgICB9XG4gIH07XG5cbiAgVXRpbHMuT2JzZXJ2YWJsZSA9IE9ic2VydmFibGU7XG5cbiAgVXRpbHMuZ2VuZXJhdGVDaGFycyA9IGZ1bmN0aW9uIChsZW5ndGgpIHtcbiAgICB2YXIgY2hhcnMgPSAnJztcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciByYW5kb21DaGFyID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMzYpO1xuICAgICAgY2hhcnMgKz0gcmFuZG9tQ2hhci50b1N0cmluZygzNik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoYXJzO1xuICB9O1xuXG4gIFV0aWxzLmJpbmQgPSBmdW5jdGlvbiAoZnVuYywgY29udGV4dCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfTtcblxuICBVdGlscy5fY29udmVydERhdGEgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIGZvciAodmFyIG9yaWdpbmFsS2V5IGluIGRhdGEpIHtcbiAgICAgIHZhciBrZXlzID0gb3JpZ2luYWxLZXkuc3BsaXQoJy0nKTtcblxuICAgICAgdmFyIGRhdGFMZXZlbCA9IGRhdGE7XG5cbiAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBrZXlzLmxlbmd0aDsgaysrKSB7XG4gICAgICAgIHZhciBrZXkgPSBrZXlzW2tdO1xuXG4gICAgICAgIC8vIExvd2VyY2FzZSB0aGUgZmlyc3QgbGV0dGVyXG4gICAgICAgIC8vIEJ5IGRlZmF1bHQsIGRhc2gtc2VwYXJhdGVkIGJlY29tZXMgY2FtZWxDYXNlXG4gICAgICAgIGtleSA9IGtleS5zdWJzdHJpbmcoMCwgMSkudG9Mb3dlckNhc2UoKSArIGtleS5zdWJzdHJpbmcoMSk7XG5cbiAgICAgICAgaWYgKCEoa2V5IGluIGRhdGFMZXZlbCkpIHtcbiAgICAgICAgICBkYXRhTGV2ZWxba2V5XSA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGsgPT0ga2V5cy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgZGF0YUxldmVsW2tleV0gPSBkYXRhW29yaWdpbmFsS2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRhdGFMZXZlbCA9IGRhdGFMZXZlbFtrZXldO1xuICAgICAgfVxuXG4gICAgICBkZWxldGUgZGF0YVtvcmlnaW5hbEtleV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH07XG5cbiAgVXRpbHMuaGFzU2Nyb2xsID0gZnVuY3Rpb24gKGluZGV4LCBlbCkge1xuICAgIC8vIEFkYXB0ZWQgZnJvbSB0aGUgZnVuY3Rpb24gY3JlYXRlZCBieSBAU2hhZG93U2NyaXB0ZXJcbiAgICAvLyBhbmQgYWRhcHRlZCBieSBAQmlsbEJhcnJ5IG9uIHRoZSBTdGFjayBFeGNoYW5nZSBDb2RlIFJldmlldyB3ZWJzaXRlLlxuICAgIC8vIFRoZSBvcmlnaW5hbCBjb2RlIGNhbiBiZSBmb3VuZCBhdFxuICAgIC8vIGh0dHA6Ly9jb2RlcmV2aWV3LnN0YWNrZXhjaGFuZ2UuY29tL3EvMTMzMzhcbiAgICAvLyBhbmQgd2FzIGRlc2lnbmVkIHRvIGJlIHVzZWQgd2l0aCB0aGUgU2l6emxlIHNlbGVjdG9yIGVuZ2luZS5cblxuICAgIHZhciAkZWwgPSAkKGVsKTtcbiAgICB2YXIgb3ZlcmZsb3dYID0gZWwuc3R5bGUub3ZlcmZsb3dYO1xuICAgIHZhciBvdmVyZmxvd1kgPSBlbC5zdHlsZS5vdmVyZmxvd1k7XG5cbiAgICAvL0NoZWNrIGJvdGggeCBhbmQgeSBkZWNsYXJhdGlvbnNcbiAgICBpZiAob3ZlcmZsb3dYID09PSBvdmVyZmxvd1kgJiZcbiAgICAgICAgKG92ZXJmbG93WSA9PT0gJ2hpZGRlbicgfHwgb3ZlcmZsb3dZID09PSAndmlzaWJsZScpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKG92ZXJmbG93WCA9PT0gJ3Njcm9sbCcgfHwgb3ZlcmZsb3dZID09PSAnc2Nyb2xsJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuICgkZWwuaW5uZXJIZWlnaHQoKSA8IGVsLnNjcm9sbEhlaWdodCB8fFxuICAgICAgJGVsLmlubmVyV2lkdGgoKSA8IGVsLnNjcm9sbFdpZHRoKTtcbiAgfTtcblxuICBVdGlscy5lc2NhcGVNYXJrdXAgPSBmdW5jdGlvbiAobWFya3VwKSB7XG4gICAgdmFyIHJlcGxhY2VNYXAgPSB7XG4gICAgICAnXFxcXCc6ICcmIzkyOycsXG4gICAgICAnJic6ICcmYW1wOycsXG4gICAgICAnPCc6ICcmbHQ7JyxcbiAgICAgICc+JzogJyZndDsnLFxuICAgICAgJ1wiJzogJyZxdW90OycsXG4gICAgICAnXFwnJzogJyYjMzk7JyxcbiAgICAgICcvJzogJyYjNDc7J1xuICAgIH07XG5cbiAgICAvLyBEbyBub3QgdHJ5IHRvIGVzY2FwZSB0aGUgbWFya3VwIGlmIGl0J3Mgbm90IGEgc3RyaW5nXG4gICAgaWYgKHR5cGVvZiBtYXJrdXAgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gbWFya3VwO1xuICAgIH1cblxuICAgIHJldHVybiBTdHJpbmcobWFya3VwKS5yZXBsYWNlKC9bJjw+XCInXFwvXFxcXF0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICByZXR1cm4gcmVwbGFjZU1hcFttYXRjaF07XG4gICAgfSk7XG4gIH07XG5cbiAgLy8gQ2FjaGUgb2JqZWN0cyBpbiBVdGlscy5fX2NhY2hlIGluc3RlYWQgb2YgJC5kYXRhIChzZWUgIzQzNDYpXG4gIFV0aWxzLl9fY2FjaGUgPSB7fTtcblxuICB2YXIgaWQgPSAwO1xuICBVdGlscy5HZXRVbmlxdWVFbGVtZW50SWQgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIC8vIEdldCBhIHVuaXF1ZSBlbGVtZW50IElkLiBJZiBlbGVtZW50IGhhcyBubyBpZCxcbiAgICAvLyBjcmVhdGVzIGEgbmV3IHVuaXF1ZSBudW1iZXIsIHN0b3JlcyBpdCBpbiB0aGUgaWRcbiAgICAvLyBhdHRyaWJ1dGUgYW5kIHJldHVybnMgdGhlIG5ldyBpZCB3aXRoIGEgcHJlZml4LlxuICAgIC8vIElmIGFuIGlkIGFscmVhZHkgZXhpc3RzLCBpdCBzaW1wbHkgcmV0dXJucyBpdCB3aXRoIGEgcHJlZml4LlxuXG4gICAgdmFyIHNlbGVjdDJJZCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXNlbGVjdDItaWQnKTtcblxuICAgIGlmIChzZWxlY3QySWQgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHNlbGVjdDJJZDtcbiAgICB9XG5cbiAgICAvLyBJZiBlbGVtZW50IGhhcyBpZCwgdXNlIGl0LlxuICAgIGlmIChlbGVtZW50LmlkKSB7XG4gICAgICBzZWxlY3QySWQgPSAnc2VsZWN0Mi1kYXRhLScgKyBlbGVtZW50LmlkO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxlY3QySWQgPSAnc2VsZWN0Mi1kYXRhLScgKyAoKytpZCkudG9TdHJpbmcoKSArXG4gICAgICAgICctJyArIFV0aWxzLmdlbmVyYXRlQ2hhcnMoNCk7XG4gICAgfVxuXG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2VsZWN0Mi1pZCcsIHNlbGVjdDJJZCk7XG5cbiAgICByZXR1cm4gc2VsZWN0MklkO1xuICB9O1xuXG4gIFV0aWxzLlN0b3JlRGF0YSA9IGZ1bmN0aW9uIChlbGVtZW50LCBuYW1lLCB2YWx1ZSkge1xuICAgIC8vIFN0b3JlcyBhbiBpdGVtIGluIHRoZSBjYWNoZSBmb3IgYSBzcGVjaWZpZWQgZWxlbWVudC5cbiAgICAvLyBuYW1lIGlzIHRoZSBjYWNoZSBrZXkuXG4gICAgdmFyIGlkID0gVXRpbHMuR2V0VW5pcXVlRWxlbWVudElkKGVsZW1lbnQpO1xuICAgIGlmICghVXRpbHMuX19jYWNoZVtpZF0pIHtcbiAgICAgIFV0aWxzLl9fY2FjaGVbaWRdID0ge307XG4gICAgfVxuXG4gICAgVXRpbHMuX19jYWNoZVtpZF1bbmFtZV0gPSB2YWx1ZTtcbiAgfTtcblxuICBVdGlscy5HZXREYXRhID0gZnVuY3Rpb24gKGVsZW1lbnQsIG5hbWUpIHtcbiAgICAvLyBSZXRyaWV2ZXMgYSB2YWx1ZSBmcm9tIHRoZSBjYWNoZSBieSBpdHMga2V5IChuYW1lKVxuICAgIC8vIG5hbWUgaXMgb3B0aW9uYWwuIElmIG5vIG5hbWUgc3BlY2lmaWVkLCByZXR1cm5cbiAgICAvLyBhbGwgY2FjaGUgaXRlbXMgZm9yIHRoZSBzcGVjaWZpZWQgZWxlbWVudC5cbiAgICAvLyBhbmQgZm9yIGEgc3BlY2lmaWVkIGVsZW1lbnQuXG4gICAgdmFyIGlkID0gVXRpbHMuR2V0VW5pcXVlRWxlbWVudElkKGVsZW1lbnQpO1xuICAgIGlmIChuYW1lKSB7XG4gICAgICBpZiAoVXRpbHMuX19jYWNoZVtpZF0pIHtcbiAgICAgICAgaWYgKFV0aWxzLl9fY2FjaGVbaWRdW25hbWVdICE9IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gVXRpbHMuX19jYWNoZVtpZF1bbmFtZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICQoZWxlbWVudCkuZGF0YShuYW1lKTsgLy8gRmFsbGJhY2sgdG8gSFRNTDUgZGF0YSBhdHRyaWJzLlxuICAgICAgfVxuICAgICAgcmV0dXJuICQoZWxlbWVudCkuZGF0YShuYW1lKTsgLy8gRmFsbGJhY2sgdG8gSFRNTDUgZGF0YSBhdHRyaWJzLlxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gVXRpbHMuX19jYWNoZVtpZF07XG4gICAgfVxuICB9O1xuXG4gIFV0aWxzLlJlbW92ZURhdGEgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIC8vIFJlbW92ZXMgYWxsIGNhY2hlZCBpdGVtcyBmb3IgYSBzcGVjaWZpZWQgZWxlbWVudC5cbiAgICB2YXIgaWQgPSBVdGlscy5HZXRVbmlxdWVFbGVtZW50SWQoZWxlbWVudCk7XG4gICAgaWYgKFV0aWxzLl9fY2FjaGVbaWRdICE9IG51bGwpIHtcbiAgICAgIGRlbGV0ZSBVdGlscy5fX2NhY2hlW2lkXTtcbiAgICB9XG5cbiAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1zZWxlY3QyLWlkJyk7XG4gIH07XG5cbiAgVXRpbHMuY29weU5vbkludGVybmFsQ3NzQ2xhc3NlcyA9IGZ1bmN0aW9uIChkZXN0LCBzcmMpIHtcbiAgICB2YXIgY2xhc3NlcztcblxuICAgIHZhciBkZXN0aW5hdGlvbkNsYXNzZXMgPSBkZXN0LmdldEF0dHJpYnV0ZSgnY2xhc3MnKS50cmltKCkuc3BsaXQoL1xccysvKTtcblxuICAgIGRlc3RpbmF0aW9uQ2xhc3NlcyA9IGRlc3RpbmF0aW9uQ2xhc3Nlcy5maWx0ZXIoZnVuY3Rpb24gKGNsYXp6KSB7XG4gICAgICAvLyBTYXZlIGFsbCBTZWxlY3QyIGNsYXNzZXNcbiAgICAgIHJldHVybiBjbGF6ei5pbmRleE9mKCdzZWxlY3QyLScpID09PSAwO1xuICAgIH0pO1xuXG4gICAgdmFyIHNvdXJjZUNsYXNzZXMgPSBzcmMuZ2V0QXR0cmlidXRlKCdjbGFzcycpLnRyaW0oKS5zcGxpdCgvXFxzKy8pO1xuXG4gICAgc291cmNlQ2xhc3NlcyA9IHNvdXJjZUNsYXNzZXMuZmlsdGVyKGZ1bmN0aW9uIChjbGF6eikge1xuICAgICAgLy8gT25seSBjb3B5IG5vbi1TZWxlY3QyIGNsYXNzZXNcbiAgICAgIHJldHVybiBjbGF6ei5pbmRleE9mKCdzZWxlY3QyLScpICE9PSAwO1xuICAgIH0pO1xuXG4gICAgdmFyIHJlcGxhY2VtZW50cyA9IGRlc3RpbmF0aW9uQ2xhc3Nlcy5jb25jYXQoc291cmNlQ2xhc3Nlcyk7XG5cbiAgICBkZXN0LnNldEF0dHJpYnV0ZSgnY2xhc3MnLCByZXBsYWNlbWVudHMuam9pbignICcpKTtcbiAgfTtcblxuICByZXR1cm4gVXRpbHM7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL3Jlc3VsdHMnLFtcbiAgJ2pxdWVyeScsXG4gICcuL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKCQsIFV0aWxzKSB7XG4gIGZ1bmN0aW9uIFJlc3VsdHMgKCRlbGVtZW50LCBvcHRpb25zLCBkYXRhQWRhcHRlcikge1xuICAgIHRoaXMuJGVsZW1lbnQgPSAkZWxlbWVudDtcbiAgICB0aGlzLmRhdGEgPSBkYXRhQWRhcHRlcjtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgUmVzdWx0cy5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzKTtcbiAgfVxuXG4gIFV0aWxzLkV4dGVuZChSZXN1bHRzLCBVdGlscy5PYnNlcnZhYmxlKTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRyZXN1bHRzID0gJChcbiAgICAgICc8dWwgY2xhc3M9XCJzZWxlY3QyLXJlc3VsdHNfX29wdGlvbnNcIiByb2xlPVwibGlzdGJveFwiPjwvdWw+J1xuICAgICk7XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmdldCgnbXVsdGlwbGUnKSkge1xuICAgICAgJHJlc3VsdHMuYXR0cignYXJpYS1tdWx0aXNlbGVjdGFibGUnLCAndHJ1ZScpO1xuICAgIH1cblxuICAgIHRoaXMuJHJlc3VsdHMgPSAkcmVzdWx0cztcblxuICAgIHJldHVybiAkcmVzdWx0cztcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLiRyZXN1bHRzLmVtcHR5KCk7XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUuZGlzcGxheU1lc3NhZ2UgPSBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgdmFyIGVzY2FwZU1hcmt1cCA9IHRoaXMub3B0aW9ucy5nZXQoJ2VzY2FwZU1hcmt1cCcpO1xuXG4gICAgdGhpcy5jbGVhcigpO1xuICAgIHRoaXMuaGlkZUxvYWRpbmcoKTtcblxuICAgIHZhciAkbWVzc2FnZSA9ICQoXG4gICAgICAnPGxpIHJvbGU9XCJhbGVydFwiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiJyArXG4gICAgICAnIGNsYXNzPVwic2VsZWN0Mi1yZXN1bHRzX19vcHRpb25cIj48L2xpPidcbiAgICApO1xuXG4gICAgdmFyIG1lc3NhZ2UgPSB0aGlzLm9wdGlvbnMuZ2V0KCd0cmFuc2xhdGlvbnMnKS5nZXQocGFyYW1zLm1lc3NhZ2UpO1xuXG4gICAgJG1lc3NhZ2UuYXBwZW5kKFxuICAgICAgZXNjYXBlTWFya3VwKFxuICAgICAgICBtZXNzYWdlKHBhcmFtcy5hcmdzKVxuICAgICAgKVxuICAgICk7XG5cbiAgICAkbWVzc2FnZVswXS5jbGFzc05hbWUgKz0gJyBzZWxlY3QyLXJlc3VsdHNfX21lc3NhZ2UnO1xuXG4gICAgdGhpcy4kcmVzdWx0cy5hcHBlbmQoJG1lc3NhZ2UpO1xuICB9O1xuXG4gIFJlc3VsdHMucHJvdG90eXBlLmhpZGVNZXNzYWdlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLiRyZXN1bHRzLmZpbmQoJy5zZWxlY3QyLXJlc3VsdHNfX21lc3NhZ2UnKS5yZW1vdmUoKTtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHRoaXMuaGlkZUxvYWRpbmcoKTtcblxuICAgIHZhciAkb3B0aW9ucyA9IFtdO1xuXG4gICAgaWYgKGRhdGEucmVzdWx0cyA9PSBudWxsIHx8IGRhdGEucmVzdWx0cy5sZW5ndGggPT09IDApIHtcbiAgICAgIGlmICh0aGlzLiRyZXN1bHRzLmNoaWxkcmVuKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMudHJpZ2dlcigncmVzdWx0czptZXNzYWdlJywge1xuICAgICAgICAgIG1lc3NhZ2U6ICdub1Jlc3VsdHMnXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZGF0YS5yZXN1bHRzID0gdGhpcy5zb3J0KGRhdGEucmVzdWx0cyk7XG5cbiAgICBmb3IgKHZhciBkID0gMDsgZCA8IGRhdGEucmVzdWx0cy5sZW5ndGg7IGQrKykge1xuICAgICAgdmFyIGl0ZW0gPSBkYXRhLnJlc3VsdHNbZF07XG5cbiAgICAgIHZhciAkb3B0aW9uID0gdGhpcy5vcHRpb24oaXRlbSk7XG5cbiAgICAgICRvcHRpb25zLnB1c2goJG9wdGlvbik7XG4gICAgfVxuXG4gICAgdGhpcy4kcmVzdWx0cy5hcHBlbmQoJG9wdGlvbnMpO1xuICB9O1xuXG4gIFJlc3VsdHMucHJvdG90eXBlLnBvc2l0aW9uID0gZnVuY3Rpb24gKCRyZXN1bHRzLCAkZHJvcGRvd24pIHtcbiAgICB2YXIgJHJlc3VsdHNDb250YWluZXIgPSAkZHJvcGRvd24uZmluZCgnLnNlbGVjdDItcmVzdWx0cycpO1xuICAgICRyZXN1bHRzQ29udGFpbmVyLmFwcGVuZCgkcmVzdWx0cyk7XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUuc29ydCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdmFyIHNvcnRlciA9IHRoaXMub3B0aW9ucy5nZXQoJ3NvcnRlcicpO1xuXG4gICAgcmV0dXJuIHNvcnRlcihkYXRhKTtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5oaWdobGlnaHRGaXJzdEl0ZW0gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRvcHRpb25zID0gdGhpcy4kcmVzdWx0c1xuICAgICAgLmZpbmQoJy5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0YWJsZScpO1xuXG4gICAgdmFyICRzZWxlY3RlZCA9ICRvcHRpb25zLmZpbHRlcignLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RlZCcpO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzZWxlY3RlZCBvcHRpb25zXG4gICAgaWYgKCRzZWxlY3RlZC5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBJZiB0aGVyZSBhcmUgc2VsZWN0ZWQgb3B0aW9ucywgaGlnaGxpZ2h0IHRoZSBmaXJzdFxuICAgICAgJHNlbGVjdGVkLmZpcnN0KCkudHJpZ2dlcignbW91c2VlbnRlcicpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gc2VsZWN0ZWQgb3B0aW9ucywgaGlnaGxpZ2h0IHRoZSBmaXJzdCBvcHRpb25cbiAgICAgIC8vIGluIHRoZSBkcm9wZG93blxuICAgICAgJG9wdGlvbnMuZmlyc3QoKS50cmlnZ2VyKCdtb3VzZWVudGVyJyk7XG4gICAgfVxuXG4gICAgdGhpcy5lbnN1cmVIaWdobGlnaHRWaXNpYmxlKCk7XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUuc2V0Q2xhc3NlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0aGlzLmRhdGEuY3VycmVudChmdW5jdGlvbiAoc2VsZWN0ZWQpIHtcbiAgICAgIHZhciBzZWxlY3RlZElkcyA9IHNlbGVjdGVkLm1hcChmdW5jdGlvbiAocykge1xuICAgICAgICByZXR1cm4gcy5pZC50b1N0cmluZygpO1xuICAgICAgfSk7XG5cbiAgICAgIHZhciAkb3B0aW9ucyA9IHNlbGYuJHJlc3VsdHNcbiAgICAgICAgLmZpbmQoJy5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0YWJsZScpO1xuXG4gICAgICAkb3B0aW9ucy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyICRvcHRpb24gPSAkKHRoaXMpO1xuXG4gICAgICAgIHZhciBpdGVtID0gVXRpbHMuR2V0RGF0YSh0aGlzLCAnZGF0YScpO1xuXG4gICAgICAgIC8vIGlkIG5lZWRzIHRvIGJlIGNvbnZlcnRlZCB0byBhIHN0cmluZyB3aGVuIGNvbXBhcmluZ1xuICAgICAgICB2YXIgaWQgPSAnJyArIGl0ZW0uaWQ7XG5cbiAgICAgICAgaWYgKChpdGVtLmVsZW1lbnQgIT0gbnVsbCAmJiBpdGVtLmVsZW1lbnQuc2VsZWN0ZWQpIHx8XG4gICAgICAgICAgICAoaXRlbS5lbGVtZW50ID09IG51bGwgJiYgc2VsZWN0ZWRJZHMuaW5kZXhPZihpZCkgPiAtMSkpIHtcbiAgICAgICAgICB0aGlzLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RlZCcpO1xuICAgICAgICAgICRvcHRpb24uYXR0cignYXJpYS1zZWxlY3RlZCcsICd0cnVlJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0ZWQnKTtcbiAgICAgICAgICAkb3B0aW9uLmF0dHIoJ2FyaWEtc2VsZWN0ZWQnLCAnZmFsc2UnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB9KTtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5zaG93TG9hZGluZyA9IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICB0aGlzLmhpZGVMb2FkaW5nKCk7XG5cbiAgICB2YXIgbG9hZGluZ01vcmUgPSB0aGlzLm9wdGlvbnMuZ2V0KCd0cmFuc2xhdGlvbnMnKS5nZXQoJ3NlYXJjaGluZycpO1xuXG4gICAgdmFyIGxvYWRpbmcgPSB7XG4gICAgICBkaXNhYmxlZDogdHJ1ZSxcbiAgICAgIGxvYWRpbmc6IHRydWUsXG4gICAgICB0ZXh0OiBsb2FkaW5nTW9yZShwYXJhbXMpXG4gICAgfTtcbiAgICB2YXIgJGxvYWRpbmcgPSB0aGlzLm9wdGlvbihsb2FkaW5nKTtcbiAgICAkbG9hZGluZy5jbGFzc05hbWUgKz0gJyBsb2FkaW5nLXJlc3VsdHMnO1xuXG4gICAgdGhpcy4kcmVzdWx0cy5wcmVwZW5kKCRsb2FkaW5nKTtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5oaWRlTG9hZGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLiRyZXN1bHRzLmZpbmQoJy5sb2FkaW5nLXJlc3VsdHMnKS5yZW1vdmUoKTtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5vcHRpb24gPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHZhciBvcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpO1xuICAgIG9wdGlvbi5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbicpO1xuICAgIG9wdGlvbi5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0YWJsZScpO1xuXG4gICAgdmFyIGF0dHJzID0ge1xuICAgICAgJ3JvbGUnOiAnb3B0aW9uJ1xuICAgIH07XG5cbiAgICB2YXIgbWF0Y2hlcyA9IHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzIHx8XG4gICAgICB3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUubXNNYXRjaGVzU2VsZWN0b3IgfHxcbiAgICAgIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS53ZWJraXRNYXRjaGVzU2VsZWN0b3I7XG5cbiAgICBpZiAoKGRhdGEuZWxlbWVudCAhPSBudWxsICYmIG1hdGNoZXMuY2FsbChkYXRhLmVsZW1lbnQsICc6ZGlzYWJsZWQnKSkgfHxcbiAgICAgICAgKGRhdGEuZWxlbWVudCA9PSBudWxsICYmIGRhdGEuZGlzYWJsZWQpKSB7XG4gICAgICBhdHRyc1snYXJpYS1kaXNhYmxlZCddID0gJ3RydWUnO1xuXG4gICAgICBvcHRpb24uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGFibGUnKTtcbiAgICAgIG9wdGlvbi5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tZGlzYWJsZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5pZCA9PSBudWxsKSB7XG4gICAgICBvcHRpb24uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGFibGUnKTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5fcmVzdWx0SWQgIT0gbnVsbCkge1xuICAgICAgb3B0aW9uLmlkID0gZGF0YS5fcmVzdWx0SWQ7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEudGl0bGUpIHtcbiAgICAgIG9wdGlvbi50aXRsZSA9IGRhdGEudGl0bGU7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuY2hpbGRyZW4pIHtcbiAgICAgIGF0dHJzLnJvbGUgPSAnZ3JvdXAnO1xuICAgICAgYXR0cnNbJ2FyaWEtbGFiZWwnXSA9IGRhdGEudGV4dDtcblxuICAgICAgb3B0aW9uLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RhYmxlJyk7XG4gICAgICBvcHRpb24uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLWdyb3VwJyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgYXR0ciBpbiBhdHRycykge1xuICAgICAgdmFyIHZhbCA9IGF0dHJzW2F0dHJdO1xuXG4gICAgICBvcHRpb24uc2V0QXR0cmlidXRlKGF0dHIsIHZhbCk7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuY2hpbGRyZW4pIHtcbiAgICAgIHZhciAkb3B0aW9uID0gJChvcHRpb24pO1xuXG4gICAgICB2YXIgbGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHJvbmcnKTtcbiAgICAgIGxhYmVsLmNsYXNzTmFtZSA9ICdzZWxlY3QyLXJlc3VsdHNfX2dyb3VwJztcblxuICAgICAgdGhpcy50ZW1wbGF0ZShkYXRhLCBsYWJlbCk7XG5cbiAgICAgIHZhciAkY2hpbGRyZW4gPSBbXTtcblxuICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCBkYXRhLmNoaWxkcmVuLmxlbmd0aDsgYysrKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IGRhdGEuY2hpbGRyZW5bY107XG5cbiAgICAgICAgdmFyICRjaGlsZCA9IHRoaXMub3B0aW9uKGNoaWxkKTtcblxuICAgICAgICAkY2hpbGRyZW4ucHVzaCgkY2hpbGQpO1xuICAgICAgfVxuXG4gICAgICB2YXIgJGNoaWxkcmVuQ29udGFpbmVyID0gJCgnPHVsPjwvdWw+Jywge1xuICAgICAgICAnY2xhc3MnOiAnc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25zIHNlbGVjdDItcmVzdWx0c19fb3B0aW9ucy0tbmVzdGVkJyxcbiAgICAgICAgJ3JvbGUnOiAnbm9uZSdcbiAgICAgIH0pO1xuXG4gICAgICAkY2hpbGRyZW5Db250YWluZXIuYXBwZW5kKCRjaGlsZHJlbik7XG5cbiAgICAgICRvcHRpb24uYXBwZW5kKGxhYmVsKTtcbiAgICAgICRvcHRpb24uYXBwZW5kKCRjaGlsZHJlbkNvbnRhaW5lcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGVtcGxhdGUoZGF0YSwgb3B0aW9uKTtcbiAgICB9XG5cbiAgICBVdGlscy5TdG9yZURhdGEob3B0aW9uLCAnZGF0YScsIGRhdGEpO1xuXG4gICAgcmV0dXJuIG9wdGlvbjtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHZhciBpZCA9IGNvbnRhaW5lci5pZCArICctcmVzdWx0cyc7XG5cbiAgICB0aGlzLiRyZXN1bHRzLmF0dHIoJ2lkJywgaWQpO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOmFsbCcsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIHNlbGYuY2xlYXIoKTtcbiAgICAgIHNlbGYuYXBwZW5kKHBhcmFtcy5kYXRhKTtcblxuICAgICAgaWYgKGNvbnRhaW5lci5pc09wZW4oKSkge1xuICAgICAgICBzZWxmLnNldENsYXNzZXMoKTtcbiAgICAgICAgc2VsZi5oaWdobGlnaHRGaXJzdEl0ZW0oKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czphcHBlbmQnLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBzZWxmLmFwcGVuZChwYXJhbXMuZGF0YSk7XG5cbiAgICAgIGlmIChjb250YWluZXIuaXNPcGVuKCkpIHtcbiAgICAgICAgc2VsZi5zZXRDbGFzc2VzKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3F1ZXJ5JywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgc2VsZi5oaWRlTWVzc2FnZXMoKTtcbiAgICAgIHNlbGYuc2hvd0xvYWRpbmcocGFyYW1zKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignc2VsZWN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFjb250YWluZXIuaXNPcGVuKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzZWxmLnNldENsYXNzZXMoKTtcblxuICAgICAgaWYgKHNlbGYub3B0aW9ucy5nZXQoJ3Njcm9sbEFmdGVyU2VsZWN0JykpIHtcbiAgICAgICAgc2VsZi5oaWdobGlnaHRGaXJzdEl0ZW0oKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigndW5zZWxlY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIWNvbnRhaW5lci5pc09wZW4oKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHNlbGYuc2V0Q2xhc3NlcygpO1xuXG4gICAgICBpZiAoc2VsZi5vcHRpb25zLmdldCgnc2Nyb2xsQWZ0ZXJTZWxlY3QnKSkge1xuICAgICAgICBzZWxmLmhpZ2hsaWdodEZpcnN0SXRlbSgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdvcGVuJywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gV2hlbiB0aGUgZHJvcGRvd24gaXMgb3BlbiwgYXJpYS1leHBlbmRlZD1cInRydWVcIlxuICAgICAgc2VsZi4kcmVzdWx0cy5hdHRyKCdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTtcbiAgICAgIHNlbGYuJHJlc3VsdHMuYXR0cignYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcblxuICAgICAgc2VsZi5zZXRDbGFzc2VzKCk7XG4gICAgICBzZWxmLmVuc3VyZUhpZ2hsaWdodFZpc2libGUoKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignY2xvc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBXaGVuIHRoZSBkcm9wZG93biBpcyBjbG9zZWQsIGFyaWEtZXhwZW5kZWQ9XCJmYWxzZVwiXG4gICAgICBzZWxmLiRyZXN1bHRzLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTtcbiAgICAgIHNlbGYuJHJlc3VsdHMuYXR0cignYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgc2VsZi4kcmVzdWx0cy5yZW1vdmVBdHRyKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czp0b2dnbGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgJGhpZ2hsaWdodGVkID0gc2VsZi5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKTtcblxuICAgICAgaWYgKCRoaWdobGlnaHRlZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAkaGlnaGxpZ2h0ZWQudHJpZ2dlcignbW91c2V1cCcpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOnNlbGVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciAkaGlnaGxpZ2h0ZWQgPSBzZWxmLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpO1xuXG4gICAgICBpZiAoJGhpZ2hsaWdodGVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBkYXRhID0gVXRpbHMuR2V0RGF0YSgkaGlnaGxpZ2h0ZWRbMF0sICdkYXRhJyk7XG5cbiAgICAgIGlmICgkaGlnaGxpZ2h0ZWQuaGFzQ2xhc3MoJ3NlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RlZCcpKSB7XG4gICAgICAgIHNlbGYudHJpZ2dlcignY2xvc2UnLCB7fSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxmLnRyaWdnZXIoJ3NlbGVjdCcsIHtcbiAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOnByZXZpb3VzJywgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyICRoaWdobGlnaHRlZCA9IHNlbGYuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzKCk7XG5cbiAgICAgIHZhciAkb3B0aW9ucyA9IHNlbGYuJHJlc3VsdHMuZmluZCgnLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RhYmxlJyk7XG5cbiAgICAgIHZhciBjdXJyZW50SW5kZXggPSAkb3B0aW9ucy5pbmRleCgkaGlnaGxpZ2h0ZWQpO1xuXG4gICAgICAvLyBJZiB3ZSBhcmUgYWxyZWFkeSBhdCB0aGUgdG9wLCBkb24ndCBtb3ZlIGZ1cnRoZXJcbiAgICAgIC8vIElmIG5vIG9wdGlvbnMsIGN1cnJlbnRJbmRleCB3aWxsIGJlIC0xXG4gICAgICBpZiAoY3VycmVudEluZGV4IDw9IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgbmV4dEluZGV4ID0gY3VycmVudEluZGV4IC0gMTtcblxuICAgICAgLy8gSWYgbm9uZSBhcmUgaGlnaGxpZ2h0ZWQsIGhpZ2hsaWdodCB0aGUgZmlyc3RcbiAgICAgIGlmICgkaGlnaGxpZ2h0ZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIG5leHRJbmRleCA9IDA7XG4gICAgICB9XG5cbiAgICAgIHZhciAkbmV4dCA9ICRvcHRpb25zLmVxKG5leHRJbmRleCk7XG5cbiAgICAgICRuZXh0LnRyaWdnZXIoJ21vdXNlZW50ZXInKTtcblxuICAgICAgdmFyIGN1cnJlbnRPZmZzZXQgPSBzZWxmLiRyZXN1bHRzLm9mZnNldCgpLnRvcDtcbiAgICAgIHZhciBuZXh0VG9wID0gJG5leHQub2Zmc2V0KCkudG9wO1xuICAgICAgdmFyIG5leHRPZmZzZXQgPSBzZWxmLiRyZXN1bHRzLnNjcm9sbFRvcCgpICsgKG5leHRUb3AgLSBjdXJyZW50T2Zmc2V0KTtcblxuICAgICAgaWYgKG5leHRJbmRleCA9PT0gMCkge1xuICAgICAgICBzZWxmLiRyZXN1bHRzLnNjcm9sbFRvcCgwKTtcbiAgICAgIH0gZWxzZSBpZiAobmV4dFRvcCAtIGN1cnJlbnRPZmZzZXQgPCAwKSB7XG4gICAgICAgIHNlbGYuJHJlc3VsdHMuc2Nyb2xsVG9wKG5leHRPZmZzZXQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOm5leHQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgJGhpZ2hsaWdodGVkID0gc2VsZi5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKTtcblxuICAgICAgdmFyICRvcHRpb25zID0gc2VsZi4kcmVzdWx0cy5maW5kKCcuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGFibGUnKTtcblxuICAgICAgdmFyIGN1cnJlbnRJbmRleCA9ICRvcHRpb25zLmluZGV4KCRoaWdobGlnaHRlZCk7XG5cbiAgICAgIHZhciBuZXh0SW5kZXggPSBjdXJyZW50SW5kZXggKyAxO1xuXG4gICAgICAvLyBJZiB3ZSBhcmUgYXQgdGhlIGxhc3Qgb3B0aW9uLCBzdGF5IHRoZXJlXG4gICAgICBpZiAobmV4dEluZGV4ID49ICRvcHRpb25zLmxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciAkbmV4dCA9ICRvcHRpb25zLmVxKG5leHRJbmRleCk7XG5cbiAgICAgICRuZXh0LnRyaWdnZXIoJ21vdXNlZW50ZXInKTtcblxuICAgICAgdmFyIGN1cnJlbnRPZmZzZXQgPSBzZWxmLiRyZXN1bHRzLm9mZnNldCgpLnRvcCArXG4gICAgICAgIHNlbGYuJHJlc3VsdHMub3V0ZXJIZWlnaHQoZmFsc2UpO1xuICAgICAgdmFyIG5leHRCb3R0b20gPSAkbmV4dC5vZmZzZXQoKS50b3AgKyAkbmV4dC5vdXRlckhlaWdodChmYWxzZSk7XG4gICAgICB2YXIgbmV4dE9mZnNldCA9IHNlbGYuJHJlc3VsdHMuc2Nyb2xsVG9wKCkgKyBuZXh0Qm90dG9tIC0gY3VycmVudE9mZnNldDtcblxuICAgICAgaWYgKG5leHRJbmRleCA9PT0gMCkge1xuICAgICAgICBzZWxmLiRyZXN1bHRzLnNjcm9sbFRvcCgwKTtcbiAgICAgIH0gZWxzZSBpZiAobmV4dEJvdHRvbSA+IGN1cnJlbnRPZmZzZXQpIHtcbiAgICAgICAgc2VsZi4kcmVzdWx0cy5zY3JvbGxUb3AobmV4dE9mZnNldCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6Zm9jdXMnLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBwYXJhbXMuZWxlbWVudFswXS5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0taGlnaGxpZ2h0ZWQnKTtcbiAgICAgIHBhcmFtcy5lbGVtZW50WzBdLnNldEF0dHJpYnV0ZSgnYXJpYS1zZWxlY3RlZCcsICd0cnVlJyk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6bWVzc2FnZScsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIHNlbGYuZGlzcGxheU1lc3NhZ2UocGFyYW1zKTtcbiAgICB9KTtcblxuICAgIGlmICgkLmZuLm1vdXNld2hlZWwpIHtcbiAgICAgIHRoaXMuJHJlc3VsdHMub24oJ21vdXNld2hlZWwnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICB2YXIgdG9wID0gc2VsZi4kcmVzdWx0cy5zY3JvbGxUb3AoKTtcblxuICAgICAgICB2YXIgYm90dG9tID0gc2VsZi4kcmVzdWx0cy5nZXQoMCkuc2Nyb2xsSGVpZ2h0IC0gdG9wICsgZS5kZWx0YVk7XG5cbiAgICAgICAgdmFyIGlzQXRUb3AgPSBlLmRlbHRhWSA+IDAgJiYgdG9wIC0gZS5kZWx0YVkgPD0gMDtcbiAgICAgICAgdmFyIGlzQXRCb3R0b20gPSBlLmRlbHRhWSA8IDAgJiYgYm90dG9tIDw9IHNlbGYuJHJlc3VsdHMuaGVpZ2h0KCk7XG5cbiAgICAgICAgaWYgKGlzQXRUb3ApIHtcbiAgICAgICAgICBzZWxmLiRyZXN1bHRzLnNjcm9sbFRvcCgwKTtcblxuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXRCb3R0b20pIHtcbiAgICAgICAgICBzZWxmLiRyZXN1bHRzLnNjcm9sbFRvcChcbiAgICAgICAgICAgIHNlbGYuJHJlc3VsdHMuZ2V0KDApLnNjcm9sbEhlaWdodCAtIHNlbGYuJHJlc3VsdHMuaGVpZ2h0KClcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuJHJlc3VsdHMub24oJ21vdXNldXAnLCAnLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RhYmxlJyxcbiAgICAgIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7XG5cbiAgICAgIHZhciBkYXRhID0gVXRpbHMuR2V0RGF0YSh0aGlzLCAnZGF0YScpO1xuXG4gICAgICBpZiAoJHRoaXMuaGFzQ2xhc3MoJ3NlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RlZCcpKSB7XG4gICAgICAgIGlmIChzZWxmLm9wdGlvbnMuZ2V0KCdtdWx0aXBsZScpKSB7XG4gICAgICAgICAgc2VsZi50cmlnZ2VyKCd1bnNlbGVjdCcsIHtcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2dCxcbiAgICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZWxmLnRyaWdnZXIoJ2Nsb3NlJywge30pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzZWxmLnRyaWdnZXIoJ3NlbGVjdCcsIHtcbiAgICAgICAgb3JpZ2luYWxFdmVudDogZXZ0LFxuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuJHJlc3VsdHMub24oJ21vdXNlZW50ZXInLCAnLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RhYmxlJyxcbiAgICAgIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHZhciBkYXRhID0gVXRpbHMuR2V0RGF0YSh0aGlzLCAnZGF0YScpO1xuXG4gICAgICBzZWxmLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpXG4gICAgICAgICAgLnJlbW92ZUNsYXNzKCdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0taGlnaGxpZ2h0ZWQnKVxuICAgICAgICAgIC5hdHRyKCdhcmlhLXNlbGVjdGVkJywgJ2ZhbHNlJyk7XG5cbiAgICAgIHNlbGYudHJpZ2dlcigncmVzdWx0czpmb2N1cycsIHtcbiAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgZWxlbWVudDogJCh0aGlzKVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkaGlnaGxpZ2h0ZWQgPSB0aGlzLiRyZXN1bHRzXG4gICAgLmZpbmQoJy5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0taGlnaGxpZ2h0ZWQnKTtcblxuICAgIHJldHVybiAkaGlnaGxpZ2h0ZWQ7XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLiRyZXN1bHRzLnJlbW92ZSgpO1xuICB9O1xuXG4gIFJlc3VsdHMucHJvdG90eXBlLmVuc3VyZUhpZ2hsaWdodFZpc2libGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRoaWdobGlnaHRlZCA9IHRoaXMuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzKCk7XG5cbiAgICBpZiAoJGhpZ2hsaWdodGVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciAkb3B0aW9ucyA9IHRoaXMuJHJlc3VsdHMuZmluZCgnLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RhYmxlJyk7XG5cbiAgICB2YXIgY3VycmVudEluZGV4ID0gJG9wdGlvbnMuaW5kZXgoJGhpZ2hsaWdodGVkKTtcblxuICAgIHZhciBjdXJyZW50T2Zmc2V0ID0gdGhpcy4kcmVzdWx0cy5vZmZzZXQoKS50b3A7XG4gICAgdmFyIG5leHRUb3AgPSAkaGlnaGxpZ2h0ZWQub2Zmc2V0KCkudG9wO1xuICAgIHZhciBuZXh0T2Zmc2V0ID0gdGhpcy4kcmVzdWx0cy5zY3JvbGxUb3AoKSArIChuZXh0VG9wIC0gY3VycmVudE9mZnNldCk7XG5cbiAgICB2YXIgb2Zmc2V0RGVsdGEgPSBuZXh0VG9wIC0gY3VycmVudE9mZnNldDtcbiAgICBuZXh0T2Zmc2V0IC09ICRoaWdobGlnaHRlZC5vdXRlckhlaWdodChmYWxzZSkgKiAyO1xuXG4gICAgaWYgKGN1cnJlbnRJbmRleCA8PSAyKSB7XG4gICAgICB0aGlzLiRyZXN1bHRzLnNjcm9sbFRvcCgwKTtcbiAgICB9IGVsc2UgaWYgKG9mZnNldERlbHRhID4gdGhpcy4kcmVzdWx0cy5vdXRlckhlaWdodCgpIHx8IG9mZnNldERlbHRhIDwgMCkge1xuICAgICAgdGhpcy4kcmVzdWx0cy5zY3JvbGxUb3AobmV4dE9mZnNldCk7XG4gICAgfVxuICB9O1xuXG4gIFJlc3VsdHMucHJvdG90eXBlLnRlbXBsYXRlID0gZnVuY3Rpb24gKHJlc3VsdCwgY29udGFpbmVyKSB7XG4gICAgdmFyIHRlbXBsYXRlID0gdGhpcy5vcHRpb25zLmdldCgndGVtcGxhdGVSZXN1bHQnKTtcbiAgICB2YXIgZXNjYXBlTWFya3VwID0gdGhpcy5vcHRpb25zLmdldCgnZXNjYXBlTWFya3VwJyk7XG5cbiAgICB2YXIgY29udGVudCA9IHRlbXBsYXRlKHJlc3VsdCwgY29udGFpbmVyKTtcblxuICAgIGlmIChjb250ZW50ID09IG51bGwpIHtcbiAgICAgIGNvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gZXNjYXBlTWFya3VwKGNvbnRlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAkKGNvbnRhaW5lcikuYXBwZW5kKGNvbnRlbnQpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gUmVzdWx0cztcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIva2V5cycsW1xuXG5dLCBmdW5jdGlvbiAoKSB7XG4gIHZhciBLRVlTID0ge1xuICAgIEJBQ0tTUEFDRTogOCxcbiAgICBUQUI6IDksXG4gICAgRU5URVI6IDEzLFxuICAgIFNISUZUOiAxNixcbiAgICBDVFJMOiAxNyxcbiAgICBBTFQ6IDE4LFxuICAgIEVTQzogMjcsXG4gICAgU1BBQ0U6IDMyLFxuICAgIFBBR0VfVVA6IDMzLFxuICAgIFBBR0VfRE9XTjogMzQsXG4gICAgRU5EOiAzNSxcbiAgICBIT01FOiAzNixcbiAgICBMRUZUOiAzNyxcbiAgICBVUDogMzgsXG4gICAgUklHSFQ6IDM5LFxuICAgIERPV046IDQwLFxuICAgIERFTEVURTogNDZcbiAgfTtcblxuICByZXR1cm4gS0VZUztcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvc2VsZWN0aW9uL2Jhc2UnLFtcbiAgJ2pxdWVyeScsXG4gICcuLi91dGlscycsXG4gICcuLi9rZXlzJ1xuXSwgZnVuY3Rpb24gKCQsIFV0aWxzLCBLRVlTKSB7XG4gIGZ1bmN0aW9uIEJhc2VTZWxlY3Rpb24gKCRlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgdGhpcy4kZWxlbWVudCA9ICRlbGVtZW50O1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBCYXNlU2VsZWN0aW9uLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpO1xuICB9XG5cbiAgVXRpbHMuRXh0ZW5kKEJhc2VTZWxlY3Rpb24sIFV0aWxzLk9ic2VydmFibGUpO1xuXG4gIEJhc2VTZWxlY3Rpb24ucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgJHNlbGVjdGlvbiA9ICQoXG4gICAgICAnPHNwYW4gY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGlvblwiIHJvbGU9XCJjb21ib2JveFwiICcgK1xuICAgICAgJyBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiPicgK1xuICAgICAgJzwvc3Bhbj4nXG4gICAgKTtcblxuICAgIHRoaXMuX3RhYmluZGV4ID0gMDtcblxuICAgIGlmIChVdGlscy5HZXREYXRhKHRoaXMuJGVsZW1lbnRbMF0sICdvbGQtdGFiaW5kZXgnKSAhPSBudWxsKSB7XG4gICAgICB0aGlzLl90YWJpbmRleCA9IFV0aWxzLkdldERhdGEodGhpcy4kZWxlbWVudFswXSwgJ29sZC10YWJpbmRleCcpO1xuICAgIH0gZWxzZSBpZiAodGhpcy4kZWxlbWVudC5hdHRyKCd0YWJpbmRleCcpICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX3RhYmluZGV4ID0gdGhpcy4kZWxlbWVudC5hdHRyKCd0YWJpbmRleCcpO1xuICAgIH1cblxuICAgICRzZWxlY3Rpb24uYXR0cigndGl0bGUnLCB0aGlzLiRlbGVtZW50LmF0dHIoJ3RpdGxlJykpO1xuICAgICRzZWxlY3Rpb24uYXR0cigndGFiaW5kZXgnLCB0aGlzLl90YWJpbmRleCk7XG4gICAgJHNlbGVjdGlvbi5hdHRyKCdhcmlhLWRpc2FibGVkJywgJ2ZhbHNlJyk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24gPSAkc2VsZWN0aW9uO1xuXG4gICAgcmV0dXJuICRzZWxlY3Rpb247XG4gIH07XG5cbiAgQmFzZVNlbGVjdGlvbi5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgcmVzdWx0c0lkID0gY29udGFpbmVyLmlkICsgJy1yZXN1bHRzJztcblxuICAgIHRoaXMuY29udGFpbmVyID0gY29udGFpbmVyO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdmb2N1cycsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYudHJpZ2dlcignZm9jdXMnLCBldnQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdibHVyJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgc2VsZi5faGFuZGxlQmx1cihldnQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdrZXlkb3duJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgc2VsZi50cmlnZ2VyKCdrZXlwcmVzcycsIGV2dCk7XG5cbiAgICAgIGlmIChldnQud2hpY2ggPT09IEtFWVMuU1BBQ0UpIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6Zm9jdXMnLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBzZWxmLiRzZWxlY3Rpb24uYXR0cignYXJpYS1hY3RpdmVkZXNjZW5kYW50JywgcGFyYW1zLmRhdGEuX3Jlc3VsdElkKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignc2VsZWN0aW9uOnVwZGF0ZScsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIHNlbGYudXBkYXRlKHBhcmFtcy5kYXRhKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignb3BlbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFdoZW4gdGhlIGRyb3Bkb3duIGlzIG9wZW4sIGFyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJcbiAgICAgIHNlbGYuJHNlbGVjdGlvbi5hdHRyKCdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTtcbiAgICAgIHNlbGYuJHNlbGVjdGlvbi5hdHRyKCdhcmlhLW93bnMnLCByZXN1bHRzSWQpO1xuXG4gICAgICBzZWxmLl9hdHRhY2hDbG9zZUhhbmRsZXIoY29udGFpbmVyKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignY2xvc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBXaGVuIHRoZSBkcm9wZG93biBpcyBjbG9zZWQsIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXG4gICAgICBzZWxmLiRzZWxlY3Rpb24uYXR0cignYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xuICAgICAgc2VsZi4kc2VsZWN0aW9uLnJlbW92ZUF0dHIoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcpO1xuICAgICAgc2VsZi4kc2VsZWN0aW9uLnJlbW92ZUF0dHIoJ2FyaWEtb3ducycpO1xuXG4gICAgICBzZWxmLiRzZWxlY3Rpb24udHJpZ2dlcignZm9jdXMnKTtcblxuICAgICAgc2VsZi5fZGV0YWNoQ2xvc2VIYW5kbGVyKGNvbnRhaW5lcik7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ2VuYWJsZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuJHNlbGVjdGlvbi5hdHRyKCd0YWJpbmRleCcsIHNlbGYuX3RhYmluZGV4KTtcbiAgICAgIHNlbGYuJHNlbGVjdGlvbi5hdHRyKCdhcmlhLWRpc2FibGVkJywgJ2ZhbHNlJyk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ2Rpc2FibGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLiRzZWxlY3Rpb24uYXR0cigndGFiaW5kZXgnLCAnLTEnKTtcbiAgICAgIHNlbGYuJHNlbGVjdGlvbi5hdHRyKCdhcmlhLWRpc2FibGVkJywgJ3RydWUnKTtcbiAgICB9KTtcbiAgfTtcblxuICBCYXNlU2VsZWN0aW9uLnByb3RvdHlwZS5faGFuZGxlQmx1ciA9IGZ1bmN0aW9uIChldnQpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICAvLyBUaGlzIG5lZWRzIHRvIGJlIGRlbGF5ZWQgYXMgdGhlIGFjdGl2ZSBlbGVtZW50IGlzIHRoZSBib2R5IHdoZW4gdGhlIHRhYlxuICAgIC8vIGtleSBpcyBwcmVzc2VkLCBwb3NzaWJseSBhbG9uZyB3aXRoIG90aGVycy5cbiAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBEb24ndCB0cmlnZ2VyIGBibHVyYCBpZiB0aGUgZm9jdXMgaXMgc3RpbGwgaW4gdGhlIHNlbGVjdGlvblxuICAgICAgaWYgKFxuICAgICAgICAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBzZWxmLiRzZWxlY3Rpb25bMF0pIHx8XG4gICAgICAgICgkLmNvbnRhaW5zKHNlbGYuJHNlbGVjdGlvblswXSwgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzZWxmLnRyaWdnZXIoJ2JsdXInLCBldnQpO1xuICAgIH0sIDEpO1xuICB9O1xuXG4gIEJhc2VTZWxlY3Rpb24ucHJvdG90eXBlLl9hdHRhY2hDbG9zZUhhbmRsZXIgPSBmdW5jdGlvbiAoY29udGFpbmVyKSB7XG5cbiAgICAkKGRvY3VtZW50LmJvZHkpLm9uKCdtb3VzZWRvd24uc2VsZWN0Mi4nICsgY29udGFpbmVyLmlkLCBmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyICR0YXJnZXQgPSAkKGUudGFyZ2V0KTtcblxuICAgICAgdmFyICRzZWxlY3QgPSAkdGFyZ2V0LmNsb3Nlc3QoJy5zZWxlY3QyJyk7XG5cbiAgICAgIHZhciAkYWxsID0gJCgnLnNlbGVjdDIuc2VsZWN0Mi1jb250YWluZXItLW9wZW4nKTtcblxuICAgICAgJGFsbC5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMgPT0gJHNlbGVjdFswXSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciAkZWxlbWVudCA9IFV0aWxzLkdldERhdGEodGhpcywgJ2VsZW1lbnQnKTtcblxuICAgICAgICAkZWxlbWVudC5zZWxlY3QyKCdjbG9zZScpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG5cbiAgQmFzZVNlbGVjdGlvbi5wcm90b3R5cGUuX2RldGFjaENsb3NlSGFuZGxlciA9IGZ1bmN0aW9uIChjb250YWluZXIpIHtcbiAgICAkKGRvY3VtZW50LmJvZHkpLm9mZignbW91c2Vkb3duLnNlbGVjdDIuJyArIGNvbnRhaW5lci5pZCk7XG4gIH07XG5cbiAgQmFzZVNlbGVjdGlvbi5wcm90b3R5cGUucG9zaXRpb24gPSBmdW5jdGlvbiAoJHNlbGVjdGlvbiwgJGNvbnRhaW5lcikge1xuICAgIHZhciAkc2VsZWN0aW9uQ29udGFpbmVyID0gJGNvbnRhaW5lci5maW5kKCcuc2VsZWN0aW9uJyk7XG4gICAgJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQoJHNlbGVjdGlvbik7XG4gIH07XG5cbiAgQmFzZVNlbGVjdGlvbi5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLl9kZXRhY2hDbG9zZUhhbmRsZXIodGhpcy5jb250YWluZXIpO1xuICB9O1xuXG4gIEJhc2VTZWxlY3Rpb24ucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgYHVwZGF0ZWAgbWV0aG9kIG11c3QgYmUgZGVmaW5lZCBpbiBjaGlsZCBjbGFzc2VzLicpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGFic3RyYWN0IHRoZSBcImVuYWJsZWRcIiAobm90IFwiZGlzYWJsZWRcIikgc3RhdGUgb2YgdGhpc1xuICAgKiBvYmplY3QuXG4gICAqXG4gICAqIEByZXR1cm4ge3RydWV9IGlmIHRoZSBpbnN0YW5jZSBpcyBub3QgZGlzYWJsZWQuXG4gICAqIEByZXR1cm4ge2ZhbHNlfSBpZiB0aGUgaW5zdGFuY2UgaXMgZGlzYWJsZWQuXG4gICAqL1xuICBCYXNlU2VsZWN0aW9uLnByb3RvdHlwZS5pc0VuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICF0aGlzLmlzRGlzYWJsZWQoKTtcbiAgfTtcblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBhYnN0cmFjdCB0aGUgXCJkaXNhYmxlZFwiIHN0YXRlIG9mIHRoaXMgb2JqZWN0LlxuICAgKlxuICAgKiBAcmV0dXJuIHt0cnVlfSBpZiB0aGUgZGlzYWJsZWQgb3B0aW9uIGlzIHRydWUuXG4gICAqIEByZXR1cm4ge2ZhbHNlfSBpZiB0aGUgZGlzYWJsZWQgb3B0aW9uIGlzIGZhbHNlLlxuICAgKi9cbiAgQmFzZVNlbGVjdGlvbi5wcm90b3R5cGUuaXNEaXNhYmxlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmdldCgnZGlzYWJsZWQnKTtcbiAgfTtcblxuICByZXR1cm4gQmFzZVNlbGVjdGlvbjtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvc2VsZWN0aW9uL3NpbmdsZScsW1xuICAnanF1ZXJ5JyxcbiAgJy4vYmFzZScsXG4gICcuLi91dGlscycsXG4gICcuLi9rZXlzJ1xuXSwgZnVuY3Rpb24gKCQsIEJhc2VTZWxlY3Rpb24sIFV0aWxzLCBLRVlTKSB7XG4gIGZ1bmN0aW9uIFNpbmdsZVNlbGVjdGlvbiAoKSB7XG4gICAgU2luZ2xlU2VsZWN0aW9uLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgVXRpbHMuRXh0ZW5kKFNpbmdsZVNlbGVjdGlvbiwgQmFzZVNlbGVjdGlvbik7XG5cbiAgU2luZ2xlU2VsZWN0aW9uLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRzZWxlY3Rpb24gPSBTaW5nbGVTZWxlY3Rpb24uX19zdXBlcl9fLnJlbmRlci5jYWxsKHRoaXMpO1xuXG4gICAgJHNlbGVjdGlvblswXS5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlJyk7XG5cbiAgICAkc2VsZWN0aW9uLmh0bWwoXG4gICAgICAnPHNwYW4gY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWRcIj48L3NwYW4+JyArXG4gICAgICAnPHNwYW4gY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3dcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+JyArXG4gICAgICAgICc8YiByb2xlPVwicHJlc2VudGF0aW9uXCI+PC9iPicgK1xuICAgICAgJzwvc3Bhbj4nXG4gICAgKTtcblxuICAgIHJldHVybiAkc2VsZWN0aW9uO1xuICB9O1xuXG4gIFNpbmdsZVNlbGVjdGlvbi5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBTaW5nbGVTZWxlY3Rpb24uX19zdXBlcl9fLmJpbmQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblxuICAgIHZhciBpZCA9IGNvbnRhaW5lci5pZCArICctY29udGFpbmVyJztcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkJylcbiAgICAgIC5hdHRyKCdpZCcsIGlkKVxuICAgICAgLmF0dHIoJ3JvbGUnLCAndGV4dGJveCcpXG4gICAgICAuYXR0cignYXJpYS1yZWFkb25seScsICd0cnVlJyk7XG4gICAgdGhpcy4kc2VsZWN0aW9uLmF0dHIoJ2FyaWEtbGFiZWxsZWRieScsIGlkKTtcbiAgICB0aGlzLiRzZWxlY3Rpb24uYXR0cignYXJpYS1jb250cm9scycsIGlkKTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbignbW91c2Vkb3duJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgLy8gT25seSByZXNwb25kIHRvIGxlZnQgY2xpY2tzXG4gICAgICBpZiAoZXZ0LndoaWNoICE9PSAxKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2VsZi50cmlnZ2VyKCd0b2dnbGUnLCB7XG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2dFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24ub24oJ2ZvY3VzJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgLy8gVXNlciBmb2N1c2VzIG9uIHRoZSBjb250YWluZXJcbiAgICB9KTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbignYmx1cicsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIC8vIFVzZXIgZXhpdHMgdGhlIGNvbnRhaW5lclxuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdmb2N1cycsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGlmICghY29udGFpbmVyLmlzT3BlbigpKSB7XG4gICAgICAgIHNlbGYuJHNlbGVjdGlvbi50cmlnZ2VyKCdmb2N1cycpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIFNpbmdsZVNlbGVjdGlvbi5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRyZW5kZXJlZCA9IHRoaXMuJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkJyk7XG4gICAgJHJlbmRlcmVkLmVtcHR5KCk7XG4gICAgJHJlbmRlcmVkLnJlbW92ZUF0dHIoJ3RpdGxlJyk7IC8vIGNsZWFyIHRvb2x0aXAgb24gZW1wdHlcbiAgfTtcblxuICBTaW5nbGVTZWxlY3Rpb24ucHJvdG90eXBlLmRpc3BsYXkgPSBmdW5jdGlvbiAoZGF0YSwgY29udGFpbmVyKSB7XG4gICAgdmFyIHRlbXBsYXRlID0gdGhpcy5vcHRpb25zLmdldCgndGVtcGxhdGVTZWxlY3Rpb24nKTtcbiAgICB2YXIgZXNjYXBlTWFya3VwID0gdGhpcy5vcHRpb25zLmdldCgnZXNjYXBlTWFya3VwJyk7XG5cbiAgICByZXR1cm4gZXNjYXBlTWFya3VwKHRlbXBsYXRlKGRhdGEsIGNvbnRhaW5lcikpO1xuICB9O1xuXG4gIFNpbmdsZVNlbGVjdGlvbi5wcm90b3R5cGUuc2VsZWN0aW9uQ29udGFpbmVyID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAkKCc8c3Bhbj48L3NwYW4+Jyk7XG4gIH07XG5cbiAgU2luZ2xlU2VsZWN0aW9uLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIGlmIChkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBzZWxlY3Rpb24gPSBkYXRhWzBdO1xuXG4gICAgdmFyICRyZW5kZXJlZCA9IHRoaXMuJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkJyk7XG4gICAgdmFyIGZvcm1hdHRlZCA9IHRoaXMuZGlzcGxheShzZWxlY3Rpb24sICRyZW5kZXJlZCk7XG5cbiAgICAkcmVuZGVyZWQuZW1wdHkoKS5hcHBlbmQoZm9ybWF0dGVkKTtcblxuICAgIHZhciB0aXRsZSA9IHNlbGVjdGlvbi50aXRsZSB8fCBzZWxlY3Rpb24udGV4dDtcblxuICAgIGlmICh0aXRsZSkge1xuICAgICAgJHJlbmRlcmVkLmF0dHIoJ3RpdGxlJywgdGl0bGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAkcmVuZGVyZWQucmVtb3ZlQXR0cigndGl0bGUnKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIFNpbmdsZVNlbGVjdGlvbjtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvc2VsZWN0aW9uL211bHRpcGxlJyxbXG4gICdqcXVlcnknLFxuICAnLi9iYXNlJyxcbiAgJy4uL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKCQsIEJhc2VTZWxlY3Rpb24sIFV0aWxzKSB7XG4gIGZ1bmN0aW9uIE11bHRpcGxlU2VsZWN0aW9uICgkZWxlbWVudCwgb3B0aW9ucykge1xuICAgIE11bHRpcGxlU2VsZWN0aW9uLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgVXRpbHMuRXh0ZW5kKE11bHRpcGxlU2VsZWN0aW9uLCBCYXNlU2VsZWN0aW9uKTtcblxuICBNdWx0aXBsZVNlbGVjdGlvbi5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkc2VsZWN0aW9uID0gTXVsdGlwbGVTZWxlY3Rpb24uX19zdXBlcl9fLnJlbmRlci5jYWxsKHRoaXMpO1xuXG4gICAgJHNlbGVjdGlvblswXS5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGUnKTtcblxuICAgICRzZWxlY3Rpb24uaHRtbChcbiAgICAgICc8dWwgY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWRcIj48L3VsPidcbiAgICApO1xuXG4gICAgcmV0dXJuICRzZWxlY3Rpb247XG4gIH07XG5cbiAgTXVsdGlwbGVTZWxlY3Rpb24ucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgTXVsdGlwbGVTZWxlY3Rpb24uX19zdXBlcl9fLmJpbmQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblxuICAgIHZhciBpZCA9IGNvbnRhaW5lci5pZCArICctY29udGFpbmVyJztcbiAgICB0aGlzLiRzZWxlY3Rpb24uZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCcpLmF0dHIoJ2lkJywgaWQpO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdjbGljaycsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYudHJpZ2dlcigndG9nZ2xlJywge1xuICAgICAgICBvcmlnaW5hbEV2ZW50OiBldnRcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKFxuICAgICAgJ2NsaWNrJyxcbiAgICAgICcuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZV9fcmVtb3ZlJyxcbiAgICAgIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgLy8gSWdub3JlIHRoZSBldmVudCBpZiBpdCBpcyBkaXNhYmxlZFxuICAgICAgICBpZiAoc2VsZi5pc0Rpc2FibGVkKCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgJHJlbW92ZSA9ICQodGhpcyk7XG4gICAgICAgIHZhciAkc2VsZWN0aW9uID0gJHJlbW92ZS5wYXJlbnQoKTtcblxuICAgICAgICB2YXIgZGF0YSA9IFV0aWxzLkdldERhdGEoJHNlbGVjdGlvblswXSwgJ2RhdGEnKTtcblxuICAgICAgICBzZWxmLnRyaWdnZXIoJ3Vuc2VsZWN0Jywge1xuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2dCxcbiAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24ub24oXG4gICAgICAna2V5ZG93bicsXG4gICAgICAnLnNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2VfX3JlbW92ZScsXG4gICAgICBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIC8vIElnbm9yZSB0aGUgZXZlbnQgaWYgaXQgaXMgZGlzYWJsZWRcbiAgICAgICAgaWYgKHNlbGYuaXNEaXNhYmxlZCgpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuICAgICk7XG4gIH07XG5cbiAgTXVsdGlwbGVTZWxlY3Rpb24ucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkcmVuZGVyZWQgPSB0aGlzLiRzZWxlY3Rpb24uZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCcpO1xuICAgICRyZW5kZXJlZC5lbXB0eSgpO1xuICAgICRyZW5kZXJlZC5yZW1vdmVBdHRyKCd0aXRsZScpO1xuICB9O1xuXG4gIE11bHRpcGxlU2VsZWN0aW9uLnByb3RvdHlwZS5kaXNwbGF5ID0gZnVuY3Rpb24gKGRhdGEsIGNvbnRhaW5lcikge1xuICAgIHZhciB0ZW1wbGF0ZSA9IHRoaXMub3B0aW9ucy5nZXQoJ3RlbXBsYXRlU2VsZWN0aW9uJyk7XG4gICAgdmFyIGVzY2FwZU1hcmt1cCA9IHRoaXMub3B0aW9ucy5nZXQoJ2VzY2FwZU1hcmt1cCcpO1xuXG4gICAgcmV0dXJuIGVzY2FwZU1hcmt1cCh0ZW1wbGF0ZShkYXRhLCBjb250YWluZXIpKTtcbiAgfTtcblxuICBNdWx0aXBsZVNlbGVjdGlvbi5wcm90b3R5cGUuc2VsZWN0aW9uQ29udGFpbmVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkY29udGFpbmVyID0gJChcbiAgICAgICc8bGkgY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlXCI+JyArXG4gICAgICAgICc8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2VfX3JlbW92ZVwiICcgK1xuICAgICAgICAndGFiaW5kZXg9XCItMVwiPicgK1xuICAgICAgICAgICc8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPicgK1xuICAgICAgICAnPC9idXR0b24+JyArXG4gICAgICAgICc8c3BhbiBjbGFzcz1cInNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2VfX2Rpc3BsYXlcIj48L3NwYW4+JyArXG4gICAgICAnPC9saT4nXG4gICAgKTtcblxuICAgIHJldHVybiAkY29udGFpbmVyO1xuICB9O1xuXG4gIE11bHRpcGxlU2VsZWN0aW9uLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHRoaXMuY2xlYXIoKTtcblxuICAgIGlmIChkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciAkc2VsZWN0aW9ucyA9IFtdO1xuXG4gICAgdmFyIHNlbGVjdGlvbklkUHJlZml4ID0gdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQnKVxuICAgICAgLmF0dHIoJ2lkJykgKyAnLWNob2ljZS0nO1xuXG4gICAgZm9yICh2YXIgZCA9IDA7IGQgPCBkYXRhLmxlbmd0aDsgZCsrKSB7XG4gICAgICB2YXIgc2VsZWN0aW9uID0gZGF0YVtkXTtcblxuICAgICAgdmFyICRzZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbkNvbnRhaW5lcigpO1xuICAgICAgdmFyIGZvcm1hdHRlZCA9IHRoaXMuZGlzcGxheShzZWxlY3Rpb24sICRzZWxlY3Rpb24pO1xuXG4gICAgICB2YXIgc2VsZWN0aW9uSWQgPSBzZWxlY3Rpb25JZFByZWZpeCArIFV0aWxzLmdlbmVyYXRlQ2hhcnMoNCkgKyAnLSc7XG5cbiAgICAgIGlmIChzZWxlY3Rpb24uaWQpIHtcbiAgICAgICAgc2VsZWN0aW9uSWQgKz0gc2VsZWN0aW9uLmlkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0aW9uSWQgKz0gVXRpbHMuZ2VuZXJhdGVDaGFycyg0KTtcbiAgICAgIH1cblxuICAgICAgJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZV9fZGlzcGxheScpXG4gICAgICAgIC5hcHBlbmQoZm9ybWF0dGVkKVxuICAgICAgICAuYXR0cignaWQnLCBzZWxlY3Rpb25JZCk7XG5cbiAgICAgIHZhciB0aXRsZSA9IHNlbGVjdGlvbi50aXRsZSB8fCBzZWxlY3Rpb24udGV4dDtcblxuICAgICAgaWYgKHRpdGxlKSB7XG4gICAgICAgICRzZWxlY3Rpb24uYXR0cigndGl0bGUnLCB0aXRsZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciByZW1vdmVJdGVtID0gdGhpcy5vcHRpb25zLmdldCgndHJhbnNsYXRpb25zJykuZ2V0KCdyZW1vdmVJdGVtJyk7XG5cbiAgICAgIHZhciAkcmVtb3ZlID0gJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZV9fcmVtb3ZlJyk7XG5cbiAgICAgICRyZW1vdmUuYXR0cigndGl0bGUnLCByZW1vdmVJdGVtKCkpO1xuICAgICAgJHJlbW92ZS5hdHRyKCdhcmlhLWxhYmVsJywgcmVtb3ZlSXRlbSgpKTtcbiAgICAgICRyZW1vdmUuYXR0cignYXJpYS1kZXNjcmliZWRieScsIHNlbGVjdGlvbklkKTtcblxuICAgICAgVXRpbHMuU3RvcmVEYXRhKCRzZWxlY3Rpb25bMF0sICdkYXRhJywgc2VsZWN0aW9uKTtcblxuICAgICAgJHNlbGVjdGlvbnMucHVzaCgkc2VsZWN0aW9uKTtcbiAgICB9XG5cbiAgICB2YXIgJHJlbmRlcmVkID0gdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQnKTtcblxuICAgICRyZW5kZXJlZC5hcHBlbmQoJHNlbGVjdGlvbnMpO1xuICB9O1xuXG4gIHJldHVybiBNdWx0aXBsZVNlbGVjdGlvbjtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvc2VsZWN0aW9uL3BsYWNlaG9sZGVyJyxbXG5cbl0sIGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUGxhY2Vob2xkZXIgKGRlY29yYXRlZCwgJGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5ub3JtYWxpemVQbGFjZWhvbGRlcihvcHRpb25zLmdldCgncGxhY2Vob2xkZXInKSk7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZWxlbWVudCwgb3B0aW9ucyk7XG4gIH1cblxuICBQbGFjZWhvbGRlci5wcm90b3R5cGUubm9ybWFsaXplUGxhY2Vob2xkZXIgPSBmdW5jdGlvbiAoXywgcGxhY2Vob2xkZXIpIHtcbiAgICBpZiAodHlwZW9mIHBsYWNlaG9sZGVyID09PSAnc3RyaW5nJykge1xuICAgICAgcGxhY2Vob2xkZXIgPSB7XG4gICAgICAgIGlkOiAnJyxcbiAgICAgICAgdGV4dDogcGxhY2Vob2xkZXJcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHBsYWNlaG9sZGVyO1xuICB9O1xuXG4gIFBsYWNlaG9sZGVyLnByb3RvdHlwZS5jcmVhdGVQbGFjZWhvbGRlciA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIHBsYWNlaG9sZGVyKSB7XG4gICAgdmFyICRwbGFjZWhvbGRlciA9IHRoaXMuc2VsZWN0aW9uQ29udGFpbmVyKCk7XG5cbiAgICAkcGxhY2Vob2xkZXIuaHRtbCh0aGlzLmRpc3BsYXkocGxhY2Vob2xkZXIpKTtcbiAgICAkcGxhY2Vob2xkZXJbMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1zZWxlY3Rpb25fX3BsYWNlaG9sZGVyJyk7XG4gICAgJHBsYWNlaG9sZGVyWzBdLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDItc2VsZWN0aW9uX19jaG9pY2UnKTtcblxuICAgIHZhciBwbGFjZWhvbGRlclRpdGxlID0gcGxhY2Vob2xkZXIudGl0bGUgfHxcbiAgICAgIHBsYWNlaG9sZGVyLnRleHQgfHxcbiAgICAgICRwbGFjZWhvbGRlci50ZXh0KCk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24uZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCcpLmF0dHIoXG4gICAgICAndGl0bGUnLFxuICAgICAgcGxhY2Vob2xkZXJUaXRsZVxuICAgICk7XG5cbiAgICByZXR1cm4gJHBsYWNlaG9sZGVyO1xuICB9O1xuXG4gIFBsYWNlaG9sZGVyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBkYXRhKSB7XG4gICAgdmFyIHNpbmdsZVBsYWNlaG9sZGVyID0gKFxuICAgICAgZGF0YS5sZW5ndGggPT0gMSAmJiBkYXRhWzBdLmlkICE9IHRoaXMucGxhY2Vob2xkZXIuaWRcbiAgICApO1xuICAgIHZhciBtdWx0aXBsZVNlbGVjdGlvbnMgPSBkYXRhLmxlbmd0aCA+IDE7XG5cbiAgICBpZiAobXVsdGlwbGVTZWxlY3Rpb25zIHx8IHNpbmdsZVBsYWNlaG9sZGVyKSB7XG4gICAgICByZXR1cm4gZGVjb3JhdGVkLmNhbGwodGhpcywgZGF0YSk7XG4gICAgfVxuXG4gICAgdGhpcy5jbGVhcigpO1xuXG4gICAgdmFyICRwbGFjZWhvbGRlciA9IHRoaXMuY3JlYXRlUGxhY2Vob2xkZXIodGhpcy5wbGFjZWhvbGRlcik7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24uZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCcpLmFwcGVuZCgkcGxhY2Vob2xkZXIpO1xuICB9O1xuXG4gIHJldHVybiBQbGFjZWhvbGRlcjtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvc2VsZWN0aW9uL2FsbG93Q2xlYXInLFtcbiAgJ2pxdWVyeScsXG4gICcuLi9rZXlzJyxcbiAgJy4uL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKCQsIEtFWVMsIFV0aWxzKSB7XG4gIGZ1bmN0aW9uIEFsbG93Q2xlYXIgKCkgeyB9XG5cbiAgQWxsb3dDbGVhci5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIGNvbnRhaW5lciwgJGNvbnRhaW5lcik7XG5cbiAgICBpZiAodGhpcy5wbGFjZWhvbGRlciA9PSBudWxsKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmdldCgnZGVidWcnKSAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgJ1NlbGVjdDI6IFRoZSBgYWxsb3dDbGVhcmAgb3B0aW9uIHNob3VsZCBiZSB1c2VkIGluIGNvbWJpbmF0aW9uICcgK1xuICAgICAgICAgICd3aXRoIHRoZSBgcGxhY2Vob2xkZXJgIG9wdGlvbi4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdtb3VzZWRvd24nLCAnLnNlbGVjdDItc2VsZWN0aW9uX19jbGVhcicsXG4gICAgICBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIHNlbGYuX2hhbmRsZUNsZWFyKGV2dCk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ2tleXByZXNzJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgc2VsZi5faGFuZGxlS2V5Ym9hcmRDbGVhcihldnQsIGNvbnRhaW5lcik7XG4gICAgfSk7XG4gIH07XG5cbiAgQWxsb3dDbGVhci5wcm90b3R5cGUuX2hhbmRsZUNsZWFyID0gZnVuY3Rpb24gKF8sIGV2dCkge1xuICAgIC8vIElnbm9yZSB0aGUgZXZlbnQgaWYgaXQgaXMgZGlzYWJsZWRcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgJGNsZWFyID0gdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fY2xlYXInKTtcblxuICAgIC8vIElnbm9yZSB0aGUgZXZlbnQgaWYgbm90aGluZyBoYXMgYmVlbiBzZWxlY3RlZFxuICAgIGlmICgkY2xlYXIubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdmFyIGRhdGEgPSBVdGlscy5HZXREYXRhKCRjbGVhclswXSwgJ2RhdGEnKTtcblxuICAgIHZhciBwcmV2aW91c1ZhbCA9IHRoaXMuJGVsZW1lbnQudmFsKCk7XG4gICAgdGhpcy4kZWxlbWVudC52YWwodGhpcy5wbGFjZWhvbGRlci5pZCk7XG5cbiAgICB2YXIgdW5zZWxlY3REYXRhID0ge1xuICAgICAgZGF0YTogZGF0YVxuICAgIH07XG4gICAgdGhpcy50cmlnZ2VyKCdjbGVhcicsIHVuc2VsZWN0RGF0YSk7XG4gICAgaWYgKHVuc2VsZWN0RGF0YS5wcmV2ZW50ZWQpIHtcbiAgICAgIHRoaXMuJGVsZW1lbnQudmFsKHByZXZpb3VzVmFsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBkID0gMDsgZCA8IGRhdGEubGVuZ3RoOyBkKyspIHtcbiAgICAgIHVuc2VsZWN0RGF0YSA9IHtcbiAgICAgICAgZGF0YTogZGF0YVtkXVxuICAgICAgfTtcblxuICAgICAgLy8gVHJpZ2dlciB0aGUgYHVuc2VsZWN0YCBldmVudCwgc28gcGVvcGxlIGNhbiBwcmV2ZW50IGl0IGZyb20gYmVpbmdcbiAgICAgIC8vIGNsZWFyZWQuXG4gICAgICB0aGlzLnRyaWdnZXIoJ3Vuc2VsZWN0JywgdW5zZWxlY3REYXRhKTtcblxuICAgICAgLy8gSWYgdGhlIGV2ZW50IHdhcyBwcmV2ZW50ZWQsIGRvbid0IGNsZWFyIGl0IG91dC5cbiAgICAgIGlmICh1bnNlbGVjdERhdGEucHJldmVudGVkKSB7XG4gICAgICAgIHRoaXMuJGVsZW1lbnQudmFsKHByZXZpb3VzVmFsKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcignaW5wdXQnKS50cmlnZ2VyKCdjaGFuZ2UnKTtcblxuICAgIHRoaXMudHJpZ2dlcigndG9nZ2xlJywge30pO1xuICB9O1xuXG4gIEFsbG93Q2xlYXIucHJvdG90eXBlLl9oYW5kbGVLZXlib2FyZENsZWFyID0gZnVuY3Rpb24gKF8sIGV2dCwgY29udGFpbmVyKSB7XG4gICAgaWYgKGNvbnRhaW5lci5pc09wZW4oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldnQud2hpY2ggPT0gS0VZUy5ERUxFVEUgfHwgZXZ0LndoaWNoID09IEtFWVMuQkFDS1NQQUNFKSB7XG4gICAgICB0aGlzLl9oYW5kbGVDbGVhcihldnQpO1xuICAgIH1cbiAgfTtcblxuICBBbGxvd0NsZWFyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBkYXRhKSB7XG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgZGF0YSk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24uZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19jbGVhcicpLnJlbW92ZSgpO1xuICAgIHRoaXMuJHNlbGVjdGlvblswXS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLXNlbGVjdGlvbi0tY2xlYXJhYmxlJyk7XG5cbiAgICBpZiAodGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcGxhY2Vob2xkZXInKS5sZW5ndGggPiAwIHx8XG4gICAgICAgIGRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHNlbGVjdGlvbklkID0gdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQnKVxuICAgICAgLmF0dHIoJ2lkJyk7XG5cbiAgICB2YXIgcmVtb3ZlQWxsID0gdGhpcy5vcHRpb25zLmdldCgndHJhbnNsYXRpb25zJykuZ2V0KCdyZW1vdmVBbGxJdGVtcycpO1xuXG4gICAgdmFyICRyZW1vdmUgPSAkKFxuICAgICAgJzxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwic2VsZWN0Mi1zZWxlY3Rpb25fX2NsZWFyXCIgdGFiaW5kZXg9XCItMVwiPicgK1xuICAgICAgICAnPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj4nICtcbiAgICAgICc8L2J1dHRvbj4nXG4gICAgKTtcbiAgICAkcmVtb3ZlLmF0dHIoJ3RpdGxlJywgcmVtb3ZlQWxsKCkpO1xuICAgICRyZW1vdmUuYXR0cignYXJpYS1sYWJlbCcsIHJlbW92ZUFsbCgpKTtcbiAgICAkcmVtb3ZlLmF0dHIoJ2FyaWEtZGVzY3JpYmVkYnknLCBzZWxlY3Rpb25JZCk7XG4gICAgVXRpbHMuU3RvcmVEYXRhKCRyZW1vdmVbMF0sICdkYXRhJywgZGF0YSk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24ucHJlcGVuZCgkcmVtb3ZlKTtcbiAgICB0aGlzLiRzZWxlY3Rpb25bMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1zZWxlY3Rpb24tLWNsZWFyYWJsZScpO1xuICB9O1xuXG4gIHJldHVybiBBbGxvd0NsZWFyO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9zZWxlY3Rpb24vc2VhcmNoJyxbXG4gICdqcXVlcnknLFxuICAnLi4vdXRpbHMnLFxuICAnLi4va2V5cydcbl0sIGZ1bmN0aW9uICgkLCBVdGlscywgS0VZUykge1xuICBmdW5jdGlvbiBTZWFyY2ggKGRlY29yYXRlZCwgJGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZWxlbWVudCwgb3B0aW9ucyk7XG4gIH1cblxuICBTZWFyY2gucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQpIHtcbiAgICB2YXIgc2VhcmNoTGFiZWwgPSB0aGlzLm9wdGlvbnMuZ2V0KCd0cmFuc2xhdGlvbnMnKS5nZXQoJ3NlYXJjaCcpO1xuICAgIHZhciAkc2VhcmNoID0gJChcbiAgICAgICc8c3BhbiBjbGFzcz1cInNlbGVjdDItc2VhcmNoIHNlbGVjdDItc2VhcmNoLS1pbmxpbmVcIj4nICtcbiAgICAgICAgJzx0ZXh0YXJlYSBjbGFzcz1cInNlbGVjdDItc2VhcmNoX19maWVsZFwiJytcbiAgICAgICAgJyB0eXBlPVwic2VhcmNoXCIgdGFiaW5kZXg9XCItMVwiJyArXG4gICAgICAgICcgYXV0b2NvcnJlY3Q9XCJvZmZcIiBhdXRvY2FwaXRhbGl6ZT1cIm5vbmVcIicgK1xuICAgICAgICAnIHNwZWxsY2hlY2s9XCJmYWxzZVwiIHJvbGU9XCJzZWFyY2hib3hcIiBhcmlhLWF1dG9jb21wbGV0ZT1cImxpc3RcIiA+JyArXG4gICAgICAgICc8L3RleHRhcmVhPicgK1xuICAgICAgJzwvc3Bhbj4nXG4gICAgKTtcblxuICAgIHRoaXMuJHNlYXJjaENvbnRhaW5lciA9ICRzZWFyY2g7XG4gICAgdGhpcy4kc2VhcmNoID0gJHNlYXJjaC5maW5kKCd0ZXh0YXJlYScpO1xuXG4gICAgdGhpcy4kc2VhcmNoLnByb3AoJ2F1dG9jb21wbGV0ZScsIHRoaXMub3B0aW9ucy5nZXQoJ2F1dG9jb21wbGV0ZScpKTtcbiAgICB0aGlzLiRzZWFyY2guYXR0cignYXJpYS1sYWJlbCcsIHNlYXJjaExhYmVsKCkpO1xuXG4gICAgdmFyICRyZW5kZXJlZCA9IGRlY29yYXRlZC5jYWxsKHRoaXMpO1xuXG4gICAgdGhpcy5fdHJhbnNmZXJUYWJJbmRleCgpO1xuICAgICRyZW5kZXJlZC5hcHBlbmQodGhpcy4kc2VhcmNoQ29udGFpbmVyKTtcblxuICAgIHJldHVybiAkcmVuZGVyZWQ7XG4gIH07XG5cbiAgU2VhcmNoLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyIHJlc3VsdHNJZCA9IGNvbnRhaW5lci5pZCArICctcmVzdWx0cyc7XG4gICAgdmFyIHNlbGVjdGlvbklkID0gY29udGFpbmVyLmlkICsgJy1jb250YWluZXInO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcblxuICAgIHNlbGYuJHNlYXJjaC5hdHRyKCdhcmlhLWRlc2NyaWJlZGJ5Jywgc2VsZWN0aW9uSWQpO1xuXG4gICAgY29udGFpbmVyLm9uKCdvcGVuJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi4kc2VhcmNoLmF0dHIoJ2FyaWEtY29udHJvbHMnLCByZXN1bHRzSWQpO1xuICAgICAgc2VsZi4kc2VhcmNoLnRyaWdnZXIoJ2ZvY3VzJyk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi4kc2VhcmNoLnZhbCgnJyk7XG4gICAgICBzZWxmLnJlc2l6ZVNlYXJjaCgpO1xuICAgICAgc2VsZi4kc2VhcmNoLnJlbW92ZUF0dHIoJ2FyaWEtY29udHJvbHMnKTtcbiAgICAgIHNlbGYuJHNlYXJjaC5yZW1vdmVBdHRyKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcbiAgICAgIHNlbGYuJHNlYXJjaC50cmlnZ2VyKCdmb2N1cycpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdlbmFibGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLiRzZWFyY2gucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7XG5cbiAgICAgIHNlbGYuX3RyYW5zZmVyVGFiSW5kZXgoKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignZGlzYWJsZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuJHNlYXJjaC5wcm9wKCdkaXNhYmxlZCcsIHRydWUpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdmb2N1cycsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYuJHNlYXJjaC50cmlnZ2VyKCdmb2N1cycpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOmZvY3VzJywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgaWYgKHBhcmFtcy5kYXRhLl9yZXN1bHRJZCkge1xuICAgICAgICBzZWxmLiRzZWFyY2guYXR0cignYXJpYS1hY3RpdmVkZXNjZW5kYW50JywgcGFyYW1zLmRhdGEuX3Jlc3VsdElkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbGYuJHNlYXJjaC5yZW1vdmVBdHRyKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbignZm9jdXNpbicsICcuc2VsZWN0Mi1zZWFyY2gtLWlubGluZScsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYudHJpZ2dlcignZm9jdXMnLCBldnQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdmb2N1c291dCcsICcuc2VsZWN0Mi1zZWFyY2gtLWlubGluZScsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYuX2hhbmRsZUJsdXIoZXZ0KTtcbiAgICB9KTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbigna2V5ZG93bicsICcuc2VsZWN0Mi1zZWFyY2gtLWlubGluZScsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgc2VsZi50cmlnZ2VyKCdrZXlwcmVzcycsIGV2dCk7XG5cbiAgICAgIHNlbGYuX2tleVVwUHJldmVudGVkID0gZXZ0LmlzRGVmYXVsdFByZXZlbnRlZCgpO1xuXG4gICAgICB2YXIga2V5ID0gZXZ0LndoaWNoO1xuXG4gICAgICBpZiAoa2V5ID09PSBLRVlTLkJBQ0tTUEFDRSAmJiBzZWxmLiRzZWFyY2gudmFsKCkgPT09ICcnKSB7XG4gICAgICAgIHZhciAkcHJldmlvdXNDaG9pY2UgPSBzZWxmLiRzZWxlY3Rpb25cbiAgICAgICAgICAuZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2UnKS5sYXN0KCk7XG5cbiAgICAgICAgaWYgKCRwcmV2aW91c0Nob2ljZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdmFyIGl0ZW0gPSBVdGlscy5HZXREYXRhKCRwcmV2aW91c0Nob2ljZVswXSwgJ2RhdGEnKTtcblxuICAgICAgICAgIHNlbGYuc2VhcmNoUmVtb3ZlQ2hvaWNlKGl0ZW0pO1xuXG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbignY2xpY2snLCAnLnNlbGVjdDItc2VhcmNoLS1pbmxpbmUnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBpZiAoc2VsZi4kc2VhcmNoLnZhbCgpKSB7XG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFRyeSB0byBkZXRlY3QgdGhlIElFIHZlcnNpb24gc2hvdWxkIHRoZSBgZG9jdW1lbnRNb2RlYCBwcm9wZXJ0eSB0aGF0XG4gICAgLy8gaXMgc3RvcmVkIG9uIHRoZSBkb2N1bWVudC4gVGhpcyBpcyBvbmx5IGltcGxlbWVudGVkIGluIElFIGFuZCBpc1xuICAgIC8vIHNsaWdodGx5IGNsZWFuZXIgdGhhbiBkb2luZyBhIHVzZXIgYWdlbnQgY2hlY2suXG4gICAgLy8gVGhpcyBwcm9wZXJ0eSBpcyBub3QgYXZhaWxhYmxlIGluIEVkZ2UsIGJ1dCBFZGdlIGFsc28gZG9lc24ndCBoYXZlXG4gICAgLy8gdGhpcyBidWcuXG4gICAgdmFyIG1zaWUgPSBkb2N1bWVudC5kb2N1bWVudE1vZGU7XG4gICAgdmFyIGRpc2FibGVJbnB1dEV2ZW50cyA9IG1zaWUgJiYgbXNpZSA8PSAxMTtcblxuICAgIC8vIFdvcmthcm91bmQgZm9yIGJyb3dzZXJzIHdoaWNoIGRvIG5vdCBzdXBwb3J0IHRoZSBgaW5wdXRgIGV2ZW50XG4gICAgLy8gVGhpcyB3aWxsIHByZXZlbnQgZG91YmxlLXRyaWdnZXJpbmcgb2YgZXZlbnRzIGZvciBicm93c2VycyB3aGljaCBzdXBwb3J0XG4gICAgLy8gYm90aCB0aGUgYGtleXVwYCBhbmQgYGlucHV0YCBldmVudHMuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKFxuICAgICAgJ2lucHV0LnNlYXJjaGNoZWNrJyxcbiAgICAgICcuc2VsZWN0Mi1zZWFyY2gtLWlubGluZScsXG4gICAgICBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIC8vIElFIHdpbGwgdHJpZ2dlciB0aGUgYGlucHV0YCBldmVudCB3aGVuIGEgcGxhY2Vob2xkZXIgaXMgdXNlZCBvbiBhXG4gICAgICAgIC8vIHNlYXJjaCBib3guIFRvIGdldCBhcm91bmQgdGhpcyBpc3N1ZSwgd2UgYXJlIGZvcmNlZCB0byBpZ25vcmUgYWxsXG4gICAgICAgIC8vIGBpbnB1dGAgZXZlbnRzIGluIElFIGFuZCBrZWVwIHVzaW5nIGBrZXl1cGAuXG4gICAgICAgIGlmIChkaXNhYmxlSW5wdXRFdmVudHMpIHtcbiAgICAgICAgICBzZWxmLiRzZWxlY3Rpb24ub2ZmKCdpbnB1dC5zZWFyY2ggaW5wdXQuc2VhcmNoY2hlY2snKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVbmJpbmQgdGhlIGR1cGxpY2F0ZWQgYGtleXVwYCBldmVudFxuICAgICAgICBzZWxmLiRzZWxlY3Rpb24ub2ZmKCdrZXl1cC5zZWFyY2gnKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKFxuICAgICAgJ2tleXVwLnNlYXJjaCBpbnB1dC5zZWFyY2gnLFxuICAgICAgJy5zZWxlY3QyLXNlYXJjaC0taW5saW5lJyxcbiAgICAgIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgLy8gSUUgd2lsbCB0cmlnZ2VyIHRoZSBgaW5wdXRgIGV2ZW50IHdoZW4gYSBwbGFjZWhvbGRlciBpcyB1c2VkIG9uIGFcbiAgICAgICAgLy8gc2VhcmNoIGJveC4gVG8gZ2V0IGFyb3VuZCB0aGlzIGlzc3VlLCB3ZSBhcmUgZm9yY2VkIHRvIGlnbm9yZSBhbGxcbiAgICAgICAgLy8gYGlucHV0YCBldmVudHMgaW4gSUUgYW5kIGtlZXAgdXNpbmcgYGtleXVwYC5cbiAgICAgICAgaWYgKGRpc2FibGVJbnB1dEV2ZW50cyAmJiBldnQudHlwZSA9PT0gJ2lucHV0Jykge1xuICAgICAgICAgIHNlbGYuJHNlbGVjdGlvbi5vZmYoJ2lucHV0LnNlYXJjaCBpbnB1dC5zZWFyY2hjaGVjaycpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBrZXkgPSBldnQud2hpY2g7XG5cbiAgICAgICAgLy8gV2UgY2FuIGZyZWVseSBpZ25vcmUgZXZlbnRzIGZyb20gbW9kaWZpZXIga2V5c1xuICAgICAgICBpZiAoa2V5ID09IEtFWVMuU0hJRlQgfHwga2V5ID09IEtFWVMuQ1RSTCB8fCBrZXkgPT0gS0VZUy5BTFQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUYWJiaW5nIHdpbGwgYmUgaGFuZGxlZCBkdXJpbmcgdGhlIGBrZXlkb3duYCBwaGFzZVxuICAgICAgICBpZiAoa2V5ID09IEtFWVMuVEFCKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VsZi5oYW5kbGVTZWFyY2goZXZ0KTtcbiAgICAgIH1cbiAgICApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCB3aWxsIHRyYW5zZmVyIHRoZSB0YWJpbmRleCBhdHRyaWJ1dGUgZnJvbSB0aGUgcmVuZGVyZWRcbiAgICogc2VsZWN0aW9uIHRvIHRoZSBzZWFyY2ggYm94LiBUaGlzIGFsbG93cyBmb3IgdGhlIHNlYXJjaCBib3ggdG8gYmUgdXNlZCBhc1xuICAgKiB0aGUgcHJpbWFyeSBmb2N1cyBpbnN0ZWFkIG9mIHRoZSBzZWxlY3Rpb24gY29udGFpbmVyLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgU2VhcmNoLnByb3RvdHlwZS5fdHJhbnNmZXJUYWJJbmRleCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQpIHtcbiAgICB0aGlzLiRzZWFyY2guYXR0cigndGFiaW5kZXgnLCB0aGlzLiRzZWxlY3Rpb24uYXR0cigndGFiaW5kZXgnKSk7XG4gICAgdGhpcy4kc2VsZWN0aW9uLmF0dHIoJ3RhYmluZGV4JywgJy0xJyk7XG4gIH07XG5cbiAgU2VhcmNoLnByb3RvdHlwZS5jcmVhdGVQbGFjZWhvbGRlciA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIHBsYWNlaG9sZGVyKSB7XG4gICAgdGhpcy4kc2VhcmNoLmF0dHIoJ3BsYWNlaG9sZGVyJywgcGxhY2Vob2xkZXIudGV4dCk7XG4gIH07XG5cbiAgU2VhcmNoLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBkYXRhKSB7XG4gICAgdmFyIHNlYXJjaEhhZEZvY3VzID0gdGhpcy4kc2VhcmNoWzBdID09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG5cbiAgICB0aGlzLiRzZWFyY2guYXR0cigncGxhY2Vob2xkZXInLCAnJyk7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBkYXRhKTtcblxuICAgIHRoaXMucmVzaXplU2VhcmNoKCk7XG4gICAgaWYgKHNlYXJjaEhhZEZvY3VzKSB7XG4gICAgICB0aGlzLiRzZWFyY2gudHJpZ2dlcignZm9jdXMnKTtcbiAgICB9XG4gIH07XG5cbiAgU2VhcmNoLnByb3RvdHlwZS5oYW5kbGVTZWFyY2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5yZXNpemVTZWFyY2goKTtcblxuICAgIGlmICghdGhpcy5fa2V5VXBQcmV2ZW50ZWQpIHtcbiAgICAgIHZhciBpbnB1dCA9IHRoaXMuJHNlYXJjaC52YWwoKTtcblxuICAgICAgdGhpcy50cmlnZ2VyKCdxdWVyeScsIHtcbiAgICAgICAgdGVybTogaW5wdXRcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX2tleVVwUHJldmVudGVkID0gZmFsc2U7XG4gIH07XG5cbiAgU2VhcmNoLnByb3RvdHlwZS5zZWFyY2hSZW1vdmVDaG9pY2UgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBpdGVtKSB7XG4gICAgdGhpcy50cmlnZ2VyKCd1bnNlbGVjdCcsIHtcbiAgICAgIGRhdGE6IGl0ZW1cbiAgICB9KTtcblxuICAgIHRoaXMuJHNlYXJjaC52YWwoaXRlbS50ZXh0KTtcbiAgICB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICB9O1xuXG4gIFNlYXJjaC5wcm90b3R5cGUucmVzaXplU2VhcmNoID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuJHNlYXJjaC5jc3MoJ3dpZHRoJywgJzI1cHgnKTtcblxuICAgIHZhciB3aWR0aCA9ICcxMDAlJztcblxuICAgIGlmICh0aGlzLiRzZWFyY2guYXR0cigncGxhY2Vob2xkZXInKSA9PT0gJycpIHtcbiAgICAgIHZhciBtaW5pbXVtV2lkdGggPSB0aGlzLiRzZWFyY2gudmFsKCkubGVuZ3RoICsgMTtcblxuICAgICAgd2lkdGggPSAobWluaW11bVdpZHRoICogMC43NSkgKyAnZW0nO1xuICAgIH1cblxuICAgIHRoaXMuJHNlYXJjaC5jc3MoJ3dpZHRoJywgd2lkdGgpO1xuICB9O1xuXG4gIHJldHVybiBTZWFyY2g7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL3NlbGVjdGlvbi9zZWxlY3Rpb25Dc3MnLFtcbiAgJy4uL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKFV0aWxzKSB7XG4gIGZ1bmN0aW9uIFNlbGVjdGlvbkNTUyAoKSB7IH1cblxuICBTZWxlY3Rpb25DU1MucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQpIHtcbiAgICB2YXIgJHNlbGVjdGlvbiA9IGRlY29yYXRlZC5jYWxsKHRoaXMpO1xuXG4gICAgdmFyIHNlbGVjdGlvbkNzc0NsYXNzID0gdGhpcy5vcHRpb25zLmdldCgnc2VsZWN0aW9uQ3NzQ2xhc3MnKSB8fCAnJztcblxuICAgIGlmIChzZWxlY3Rpb25Dc3NDbGFzcy5pbmRleE9mKCc6YWxsOicpICE9PSAtMSkge1xuICAgICAgc2VsZWN0aW9uQ3NzQ2xhc3MgPSBzZWxlY3Rpb25Dc3NDbGFzcy5yZXBsYWNlKCc6YWxsOicsICcnKTtcblxuICAgICAgVXRpbHMuY29weU5vbkludGVybmFsQ3NzQ2xhc3Nlcygkc2VsZWN0aW9uWzBdLCB0aGlzLiRlbGVtZW50WzBdKTtcbiAgICB9XG5cbiAgICAkc2VsZWN0aW9uLmFkZENsYXNzKHNlbGVjdGlvbkNzc0NsYXNzKTtcblxuICAgIHJldHVybiAkc2VsZWN0aW9uO1xuICB9O1xuXG4gIHJldHVybiBTZWxlY3Rpb25DU1M7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL3NlbGVjdGlvbi9ldmVudFJlbGF5JyxbXG4gICdqcXVlcnknXG5dLCBmdW5jdGlvbiAoJCkge1xuICBmdW5jdGlvbiBFdmVudFJlbGF5ICgpIHsgfVxuXG4gIEV2ZW50UmVsYXkucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHJlbGF5RXZlbnRzID0gW1xuICAgICAgJ29wZW4nLCAnb3BlbmluZycsXG4gICAgICAnY2xvc2UnLCAnY2xvc2luZycsXG4gICAgICAnc2VsZWN0JywgJ3NlbGVjdGluZycsXG4gICAgICAndW5zZWxlY3QnLCAndW5zZWxlY3RpbmcnLFxuICAgICAgJ2NsZWFyJywgJ2NsZWFyaW5nJ1xuICAgIF07XG5cbiAgICB2YXIgcHJldmVudGFibGVFdmVudHMgPSBbXG4gICAgICAnb3BlbmluZycsICdjbG9zaW5nJywgJ3NlbGVjdGluZycsICd1bnNlbGVjdGluZycsICdjbGVhcmluZydcbiAgICBdO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcblxuICAgIGNvbnRhaW5lci5vbignKicsIGZ1bmN0aW9uIChuYW1lLCBwYXJhbXMpIHtcbiAgICAgIC8vIElnbm9yZSBldmVudHMgdGhhdCBzaG91bGQgbm90IGJlIHJlbGF5ZWRcbiAgICAgIGlmIChyZWxheUV2ZW50cy5pbmRleE9mKG5hbWUpID09PSAtMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBwYXJhbWV0ZXJzIHNob3VsZCBhbHdheXMgYmUgYW4gb2JqZWN0XG4gICAgICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG5cbiAgICAgIC8vIEdlbmVyYXRlIHRoZSBqUXVlcnkgZXZlbnQgZm9yIHRoZSBTZWxlY3QyIGV2ZW50XG4gICAgICB2YXIgZXZ0ID0gJC5FdmVudCgnc2VsZWN0MjonICsgbmFtZSwge1xuICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgfSk7XG5cbiAgICAgIHNlbGYuJGVsZW1lbnQudHJpZ2dlcihldnQpO1xuXG4gICAgICAvLyBPbmx5IGhhbmRsZSBwcmV2ZW50YWJsZSBldmVudHMgaWYgaXQgd2FzIG9uZVxuICAgICAgaWYgKHByZXZlbnRhYmxlRXZlbnRzLmluZGV4T2YobmFtZSkgPT09IC0xKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcGFyYW1zLnByZXZlbnRlZCA9IGV2dC5pc0RlZmF1bHRQcmV2ZW50ZWQoKTtcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gRXZlbnRSZWxheTtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvdHJhbnNsYXRpb24nLFtcbiAgJ2pxdWVyeScsXG4gICdyZXF1aXJlJ1xuXSwgZnVuY3Rpb24gKCQsIHJlcXVpcmUpIHtcbiAgZnVuY3Rpb24gVHJhbnNsYXRpb24gKGRpY3QpIHtcbiAgICB0aGlzLmRpY3QgPSBkaWN0IHx8IHt9O1xuICB9XG5cbiAgVHJhbnNsYXRpb24ucHJvdG90eXBlLmFsbCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5kaWN0O1xuICB9O1xuXG4gIFRyYW5zbGF0aW9uLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIHRoaXMuZGljdFtrZXldO1xuICB9O1xuXG4gIFRyYW5zbGF0aW9uLnByb3RvdHlwZS5leHRlbmQgPSBmdW5jdGlvbiAodHJhbnNsYXRpb24pIHtcbiAgICB0aGlzLmRpY3QgPSAkLmV4dGVuZCh7fSwgdHJhbnNsYXRpb24uYWxsKCksIHRoaXMuZGljdCk7XG4gIH07XG5cbiAgLy8gU3RhdGljIGZ1bmN0aW9uc1xuXG4gIFRyYW5zbGF0aW9uLl9jYWNoZSA9IHt9O1xuXG4gIFRyYW5zbGF0aW9uLmxvYWRQYXRoID0gZnVuY3Rpb24gKHBhdGgpIHtcbiAgICBpZiAoIShwYXRoIGluIFRyYW5zbGF0aW9uLl9jYWNoZSkpIHtcbiAgICAgIHZhciB0cmFuc2xhdGlvbnMgPSByZXF1aXJlKHBhdGgpO1xuXG4gICAgICBUcmFuc2xhdGlvbi5fY2FjaGVbcGF0aF0gPSB0cmFuc2xhdGlvbnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBUcmFuc2xhdGlvbihUcmFuc2xhdGlvbi5fY2FjaGVbcGF0aF0pO1xuICB9O1xuXG4gIHJldHVybiBUcmFuc2xhdGlvbjtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZGlhY3JpdGljcycsW1xuXG5dLCBmdW5jdGlvbiAoKSB7XG4gIHZhciBkaWFjcml0aWNzID0ge1xuICAgICdcXHUyNEI2JzogJ0EnLFxuICAgICdcXHVGRjIxJzogJ0EnLFxuICAgICdcXHUwMEMwJzogJ0EnLFxuICAgICdcXHUwMEMxJzogJ0EnLFxuICAgICdcXHUwMEMyJzogJ0EnLFxuICAgICdcXHUxRUE2JzogJ0EnLFxuICAgICdcXHUxRUE0JzogJ0EnLFxuICAgICdcXHUxRUFBJzogJ0EnLFxuICAgICdcXHUxRUE4JzogJ0EnLFxuICAgICdcXHUwMEMzJzogJ0EnLFxuICAgICdcXHUwMTAwJzogJ0EnLFxuICAgICdcXHUwMTAyJzogJ0EnLFxuICAgICdcXHUxRUIwJzogJ0EnLFxuICAgICdcXHUxRUFFJzogJ0EnLFxuICAgICdcXHUxRUI0JzogJ0EnLFxuICAgICdcXHUxRUIyJzogJ0EnLFxuICAgICdcXHUwMjI2JzogJ0EnLFxuICAgICdcXHUwMUUwJzogJ0EnLFxuICAgICdcXHUwMEM0JzogJ0EnLFxuICAgICdcXHUwMURFJzogJ0EnLFxuICAgICdcXHUxRUEyJzogJ0EnLFxuICAgICdcXHUwMEM1JzogJ0EnLFxuICAgICdcXHUwMUZBJzogJ0EnLFxuICAgICdcXHUwMUNEJzogJ0EnLFxuICAgICdcXHUwMjAwJzogJ0EnLFxuICAgICdcXHUwMjAyJzogJ0EnLFxuICAgICdcXHUxRUEwJzogJ0EnLFxuICAgICdcXHUxRUFDJzogJ0EnLFxuICAgICdcXHUxRUI2JzogJ0EnLFxuICAgICdcXHUxRTAwJzogJ0EnLFxuICAgICdcXHUwMTA0JzogJ0EnLFxuICAgICdcXHUwMjNBJzogJ0EnLFxuICAgICdcXHUyQzZGJzogJ0EnLFxuICAgICdcXHVBNzMyJzogJ0FBJyxcbiAgICAnXFx1MDBDNic6ICdBRScsXG4gICAgJ1xcdTAxRkMnOiAnQUUnLFxuICAgICdcXHUwMUUyJzogJ0FFJyxcbiAgICAnXFx1QTczNCc6ICdBTycsXG4gICAgJ1xcdUE3MzYnOiAnQVUnLFxuICAgICdcXHVBNzM4JzogJ0FWJyxcbiAgICAnXFx1QTczQSc6ICdBVicsXG4gICAgJ1xcdUE3M0MnOiAnQVknLFxuICAgICdcXHUyNEI3JzogJ0InLFxuICAgICdcXHVGRjIyJzogJ0InLFxuICAgICdcXHUxRTAyJzogJ0InLFxuICAgICdcXHUxRTA0JzogJ0InLFxuICAgICdcXHUxRTA2JzogJ0InLFxuICAgICdcXHUwMjQzJzogJ0InLFxuICAgICdcXHUwMTgyJzogJ0InLFxuICAgICdcXHUwMTgxJzogJ0InLFxuICAgICdcXHUyNEI4JzogJ0MnLFxuICAgICdcXHVGRjIzJzogJ0MnLFxuICAgICdcXHUwMTA2JzogJ0MnLFxuICAgICdcXHUwMTA4JzogJ0MnLFxuICAgICdcXHUwMTBBJzogJ0MnLFxuICAgICdcXHUwMTBDJzogJ0MnLFxuICAgICdcXHUwMEM3JzogJ0MnLFxuICAgICdcXHUxRTA4JzogJ0MnLFxuICAgICdcXHUwMTg3JzogJ0MnLFxuICAgICdcXHUwMjNCJzogJ0MnLFxuICAgICdcXHVBNzNFJzogJ0MnLFxuICAgICdcXHUyNEI5JzogJ0QnLFxuICAgICdcXHVGRjI0JzogJ0QnLFxuICAgICdcXHUxRTBBJzogJ0QnLFxuICAgICdcXHUwMTBFJzogJ0QnLFxuICAgICdcXHUxRTBDJzogJ0QnLFxuICAgICdcXHUxRTEwJzogJ0QnLFxuICAgICdcXHUxRTEyJzogJ0QnLFxuICAgICdcXHUxRTBFJzogJ0QnLFxuICAgICdcXHUwMTEwJzogJ0QnLFxuICAgICdcXHUwMThCJzogJ0QnLFxuICAgICdcXHUwMThBJzogJ0QnLFxuICAgICdcXHUwMTg5JzogJ0QnLFxuICAgICdcXHVBNzc5JzogJ0QnLFxuICAgICdcXHUwMUYxJzogJ0RaJyxcbiAgICAnXFx1MDFDNCc6ICdEWicsXG4gICAgJ1xcdTAxRjInOiAnRHonLFxuICAgICdcXHUwMUM1JzogJ0R6JyxcbiAgICAnXFx1MjRCQSc6ICdFJyxcbiAgICAnXFx1RkYyNSc6ICdFJyxcbiAgICAnXFx1MDBDOCc6ICdFJyxcbiAgICAnXFx1MDBDOSc6ICdFJyxcbiAgICAnXFx1MDBDQSc6ICdFJyxcbiAgICAnXFx1MUVDMCc6ICdFJyxcbiAgICAnXFx1MUVCRSc6ICdFJyxcbiAgICAnXFx1MUVDNCc6ICdFJyxcbiAgICAnXFx1MUVDMic6ICdFJyxcbiAgICAnXFx1MUVCQyc6ICdFJyxcbiAgICAnXFx1MDExMic6ICdFJyxcbiAgICAnXFx1MUUxNCc6ICdFJyxcbiAgICAnXFx1MUUxNic6ICdFJyxcbiAgICAnXFx1MDExNCc6ICdFJyxcbiAgICAnXFx1MDExNic6ICdFJyxcbiAgICAnXFx1MDBDQic6ICdFJyxcbiAgICAnXFx1MUVCQSc6ICdFJyxcbiAgICAnXFx1MDExQSc6ICdFJyxcbiAgICAnXFx1MDIwNCc6ICdFJyxcbiAgICAnXFx1MDIwNic6ICdFJyxcbiAgICAnXFx1MUVCOCc6ICdFJyxcbiAgICAnXFx1MUVDNic6ICdFJyxcbiAgICAnXFx1MDIyOCc6ICdFJyxcbiAgICAnXFx1MUUxQyc6ICdFJyxcbiAgICAnXFx1MDExOCc6ICdFJyxcbiAgICAnXFx1MUUxOCc6ICdFJyxcbiAgICAnXFx1MUUxQSc6ICdFJyxcbiAgICAnXFx1MDE5MCc6ICdFJyxcbiAgICAnXFx1MDE4RSc6ICdFJyxcbiAgICAnXFx1MjRCQic6ICdGJyxcbiAgICAnXFx1RkYyNic6ICdGJyxcbiAgICAnXFx1MUUxRSc6ICdGJyxcbiAgICAnXFx1MDE5MSc6ICdGJyxcbiAgICAnXFx1QTc3Qic6ICdGJyxcbiAgICAnXFx1MjRCQyc6ICdHJyxcbiAgICAnXFx1RkYyNyc6ICdHJyxcbiAgICAnXFx1MDFGNCc6ICdHJyxcbiAgICAnXFx1MDExQyc6ICdHJyxcbiAgICAnXFx1MUUyMCc6ICdHJyxcbiAgICAnXFx1MDExRSc6ICdHJyxcbiAgICAnXFx1MDEyMCc6ICdHJyxcbiAgICAnXFx1MDFFNic6ICdHJyxcbiAgICAnXFx1MDEyMic6ICdHJyxcbiAgICAnXFx1MDFFNCc6ICdHJyxcbiAgICAnXFx1MDE5Myc6ICdHJyxcbiAgICAnXFx1QTdBMCc6ICdHJyxcbiAgICAnXFx1QTc3RCc6ICdHJyxcbiAgICAnXFx1QTc3RSc6ICdHJyxcbiAgICAnXFx1MjRCRCc6ICdIJyxcbiAgICAnXFx1RkYyOCc6ICdIJyxcbiAgICAnXFx1MDEyNCc6ICdIJyxcbiAgICAnXFx1MUUyMic6ICdIJyxcbiAgICAnXFx1MUUyNic6ICdIJyxcbiAgICAnXFx1MDIxRSc6ICdIJyxcbiAgICAnXFx1MUUyNCc6ICdIJyxcbiAgICAnXFx1MUUyOCc6ICdIJyxcbiAgICAnXFx1MUUyQSc6ICdIJyxcbiAgICAnXFx1MDEyNic6ICdIJyxcbiAgICAnXFx1MkM2Nyc6ICdIJyxcbiAgICAnXFx1MkM3NSc6ICdIJyxcbiAgICAnXFx1QTc4RCc6ICdIJyxcbiAgICAnXFx1MjRCRSc6ICdJJyxcbiAgICAnXFx1RkYyOSc6ICdJJyxcbiAgICAnXFx1MDBDQyc6ICdJJyxcbiAgICAnXFx1MDBDRCc6ICdJJyxcbiAgICAnXFx1MDBDRSc6ICdJJyxcbiAgICAnXFx1MDEyOCc6ICdJJyxcbiAgICAnXFx1MDEyQSc6ICdJJyxcbiAgICAnXFx1MDEyQyc6ICdJJyxcbiAgICAnXFx1MDEzMCc6ICdJJyxcbiAgICAnXFx1MDBDRic6ICdJJyxcbiAgICAnXFx1MUUyRSc6ICdJJyxcbiAgICAnXFx1MUVDOCc6ICdJJyxcbiAgICAnXFx1MDFDRic6ICdJJyxcbiAgICAnXFx1MDIwOCc6ICdJJyxcbiAgICAnXFx1MDIwQSc6ICdJJyxcbiAgICAnXFx1MUVDQSc6ICdJJyxcbiAgICAnXFx1MDEyRSc6ICdJJyxcbiAgICAnXFx1MUUyQyc6ICdJJyxcbiAgICAnXFx1MDE5Nyc6ICdJJyxcbiAgICAnXFx1MjRCRic6ICdKJyxcbiAgICAnXFx1RkYyQSc6ICdKJyxcbiAgICAnXFx1MDEzNCc6ICdKJyxcbiAgICAnXFx1MDI0OCc6ICdKJyxcbiAgICAnXFx1MjRDMCc6ICdLJyxcbiAgICAnXFx1RkYyQic6ICdLJyxcbiAgICAnXFx1MUUzMCc6ICdLJyxcbiAgICAnXFx1MDFFOCc6ICdLJyxcbiAgICAnXFx1MUUzMic6ICdLJyxcbiAgICAnXFx1MDEzNic6ICdLJyxcbiAgICAnXFx1MUUzNCc6ICdLJyxcbiAgICAnXFx1MDE5OCc6ICdLJyxcbiAgICAnXFx1MkM2OSc6ICdLJyxcbiAgICAnXFx1QTc0MCc6ICdLJyxcbiAgICAnXFx1QTc0Mic6ICdLJyxcbiAgICAnXFx1QTc0NCc6ICdLJyxcbiAgICAnXFx1QTdBMic6ICdLJyxcbiAgICAnXFx1MjRDMSc6ICdMJyxcbiAgICAnXFx1RkYyQyc6ICdMJyxcbiAgICAnXFx1MDEzRic6ICdMJyxcbiAgICAnXFx1MDEzOSc6ICdMJyxcbiAgICAnXFx1MDEzRCc6ICdMJyxcbiAgICAnXFx1MUUzNic6ICdMJyxcbiAgICAnXFx1MUUzOCc6ICdMJyxcbiAgICAnXFx1MDEzQic6ICdMJyxcbiAgICAnXFx1MUUzQyc6ICdMJyxcbiAgICAnXFx1MUUzQSc6ICdMJyxcbiAgICAnXFx1MDE0MSc6ICdMJyxcbiAgICAnXFx1MDIzRCc6ICdMJyxcbiAgICAnXFx1MkM2Mic6ICdMJyxcbiAgICAnXFx1MkM2MCc6ICdMJyxcbiAgICAnXFx1QTc0OCc6ICdMJyxcbiAgICAnXFx1QTc0Nic6ICdMJyxcbiAgICAnXFx1QTc4MCc6ICdMJyxcbiAgICAnXFx1MDFDNyc6ICdMSicsXG4gICAgJ1xcdTAxQzgnOiAnTGonLFxuICAgICdcXHUyNEMyJzogJ00nLFxuICAgICdcXHVGRjJEJzogJ00nLFxuICAgICdcXHUxRTNFJzogJ00nLFxuICAgICdcXHUxRTQwJzogJ00nLFxuICAgICdcXHUxRTQyJzogJ00nLFxuICAgICdcXHUyQzZFJzogJ00nLFxuICAgICdcXHUwMTlDJzogJ00nLFxuICAgICdcXHUyNEMzJzogJ04nLFxuICAgICdcXHVGRjJFJzogJ04nLFxuICAgICdcXHUwMUY4JzogJ04nLFxuICAgICdcXHUwMTQzJzogJ04nLFxuICAgICdcXHUwMEQxJzogJ04nLFxuICAgICdcXHUxRTQ0JzogJ04nLFxuICAgICdcXHUwMTQ3JzogJ04nLFxuICAgICdcXHUxRTQ2JzogJ04nLFxuICAgICdcXHUwMTQ1JzogJ04nLFxuICAgICdcXHUxRTRBJzogJ04nLFxuICAgICdcXHUxRTQ4JzogJ04nLFxuICAgICdcXHUwMjIwJzogJ04nLFxuICAgICdcXHUwMTlEJzogJ04nLFxuICAgICdcXHVBNzkwJzogJ04nLFxuICAgICdcXHVBN0E0JzogJ04nLFxuICAgICdcXHUwMUNBJzogJ05KJyxcbiAgICAnXFx1MDFDQic6ICdOaicsXG4gICAgJ1xcdTI0QzQnOiAnTycsXG4gICAgJ1xcdUZGMkYnOiAnTycsXG4gICAgJ1xcdTAwRDInOiAnTycsXG4gICAgJ1xcdTAwRDMnOiAnTycsXG4gICAgJ1xcdTAwRDQnOiAnTycsXG4gICAgJ1xcdTFFRDInOiAnTycsXG4gICAgJ1xcdTFFRDAnOiAnTycsXG4gICAgJ1xcdTFFRDYnOiAnTycsXG4gICAgJ1xcdTFFRDQnOiAnTycsXG4gICAgJ1xcdTAwRDUnOiAnTycsXG4gICAgJ1xcdTFFNEMnOiAnTycsXG4gICAgJ1xcdTAyMkMnOiAnTycsXG4gICAgJ1xcdTFFNEUnOiAnTycsXG4gICAgJ1xcdTAxNEMnOiAnTycsXG4gICAgJ1xcdTFFNTAnOiAnTycsXG4gICAgJ1xcdTFFNTInOiAnTycsXG4gICAgJ1xcdTAxNEUnOiAnTycsXG4gICAgJ1xcdTAyMkUnOiAnTycsXG4gICAgJ1xcdTAyMzAnOiAnTycsXG4gICAgJ1xcdTAwRDYnOiAnTycsXG4gICAgJ1xcdTAyMkEnOiAnTycsXG4gICAgJ1xcdTFFQ0UnOiAnTycsXG4gICAgJ1xcdTAxNTAnOiAnTycsXG4gICAgJ1xcdTAxRDEnOiAnTycsXG4gICAgJ1xcdTAyMEMnOiAnTycsXG4gICAgJ1xcdTAyMEUnOiAnTycsXG4gICAgJ1xcdTAxQTAnOiAnTycsXG4gICAgJ1xcdTFFREMnOiAnTycsXG4gICAgJ1xcdTFFREEnOiAnTycsXG4gICAgJ1xcdTFFRTAnOiAnTycsXG4gICAgJ1xcdTFFREUnOiAnTycsXG4gICAgJ1xcdTFFRTInOiAnTycsXG4gICAgJ1xcdTFFQ0MnOiAnTycsXG4gICAgJ1xcdTFFRDgnOiAnTycsXG4gICAgJ1xcdTAxRUEnOiAnTycsXG4gICAgJ1xcdTAxRUMnOiAnTycsXG4gICAgJ1xcdTAwRDgnOiAnTycsXG4gICAgJ1xcdTAxRkUnOiAnTycsXG4gICAgJ1xcdTAxODYnOiAnTycsXG4gICAgJ1xcdTAxOUYnOiAnTycsXG4gICAgJ1xcdUE3NEEnOiAnTycsXG4gICAgJ1xcdUE3NEMnOiAnTycsXG4gICAgJ1xcdTAxNTInOiAnT0UnLFxuICAgICdcXHUwMUEyJzogJ09JJyxcbiAgICAnXFx1QTc0RSc6ICdPTycsXG4gICAgJ1xcdTAyMjInOiAnT1UnLFxuICAgICdcXHUyNEM1JzogJ1AnLFxuICAgICdcXHVGRjMwJzogJ1AnLFxuICAgICdcXHUxRTU0JzogJ1AnLFxuICAgICdcXHUxRTU2JzogJ1AnLFxuICAgICdcXHUwMUE0JzogJ1AnLFxuICAgICdcXHUyQzYzJzogJ1AnLFxuICAgICdcXHVBNzUwJzogJ1AnLFxuICAgICdcXHVBNzUyJzogJ1AnLFxuICAgICdcXHVBNzU0JzogJ1AnLFxuICAgICdcXHUyNEM2JzogJ1EnLFxuICAgICdcXHVGRjMxJzogJ1EnLFxuICAgICdcXHVBNzU2JzogJ1EnLFxuICAgICdcXHVBNzU4JzogJ1EnLFxuICAgICdcXHUwMjRBJzogJ1EnLFxuICAgICdcXHUyNEM3JzogJ1InLFxuICAgICdcXHVGRjMyJzogJ1InLFxuICAgICdcXHUwMTU0JzogJ1InLFxuICAgICdcXHUxRTU4JzogJ1InLFxuICAgICdcXHUwMTU4JzogJ1InLFxuICAgICdcXHUwMjEwJzogJ1InLFxuICAgICdcXHUwMjEyJzogJ1InLFxuICAgICdcXHUxRTVBJzogJ1InLFxuICAgICdcXHUxRTVDJzogJ1InLFxuICAgICdcXHUwMTU2JzogJ1InLFxuICAgICdcXHUxRTVFJzogJ1InLFxuICAgICdcXHUwMjRDJzogJ1InLFxuICAgICdcXHUyQzY0JzogJ1InLFxuICAgICdcXHVBNzVBJzogJ1InLFxuICAgICdcXHVBN0E2JzogJ1InLFxuICAgICdcXHVBNzgyJzogJ1InLFxuICAgICdcXHUyNEM4JzogJ1MnLFxuICAgICdcXHVGRjMzJzogJ1MnLFxuICAgICdcXHUxRTlFJzogJ1MnLFxuICAgICdcXHUwMTVBJzogJ1MnLFxuICAgICdcXHUxRTY0JzogJ1MnLFxuICAgICdcXHUwMTVDJzogJ1MnLFxuICAgICdcXHUxRTYwJzogJ1MnLFxuICAgICdcXHUwMTYwJzogJ1MnLFxuICAgICdcXHUxRTY2JzogJ1MnLFxuICAgICdcXHUxRTYyJzogJ1MnLFxuICAgICdcXHUxRTY4JzogJ1MnLFxuICAgICdcXHUwMjE4JzogJ1MnLFxuICAgICdcXHUwMTVFJzogJ1MnLFxuICAgICdcXHUyQzdFJzogJ1MnLFxuICAgICdcXHVBN0E4JzogJ1MnLFxuICAgICdcXHVBNzg0JzogJ1MnLFxuICAgICdcXHUyNEM5JzogJ1QnLFxuICAgICdcXHVGRjM0JzogJ1QnLFxuICAgICdcXHUxRTZBJzogJ1QnLFxuICAgICdcXHUwMTY0JzogJ1QnLFxuICAgICdcXHUxRTZDJzogJ1QnLFxuICAgICdcXHUwMjFBJzogJ1QnLFxuICAgICdcXHUwMTYyJzogJ1QnLFxuICAgICdcXHUxRTcwJzogJ1QnLFxuICAgICdcXHUxRTZFJzogJ1QnLFxuICAgICdcXHUwMTY2JzogJ1QnLFxuICAgICdcXHUwMUFDJzogJ1QnLFxuICAgICdcXHUwMUFFJzogJ1QnLFxuICAgICdcXHUwMjNFJzogJ1QnLFxuICAgICdcXHVBNzg2JzogJ1QnLFxuICAgICdcXHVBNzI4JzogJ1RaJyxcbiAgICAnXFx1MjRDQSc6ICdVJyxcbiAgICAnXFx1RkYzNSc6ICdVJyxcbiAgICAnXFx1MDBEOSc6ICdVJyxcbiAgICAnXFx1MDBEQSc6ICdVJyxcbiAgICAnXFx1MDBEQic6ICdVJyxcbiAgICAnXFx1MDE2OCc6ICdVJyxcbiAgICAnXFx1MUU3OCc6ICdVJyxcbiAgICAnXFx1MDE2QSc6ICdVJyxcbiAgICAnXFx1MUU3QSc6ICdVJyxcbiAgICAnXFx1MDE2Qyc6ICdVJyxcbiAgICAnXFx1MDBEQyc6ICdVJyxcbiAgICAnXFx1MDFEQic6ICdVJyxcbiAgICAnXFx1MDFENyc6ICdVJyxcbiAgICAnXFx1MDFENSc6ICdVJyxcbiAgICAnXFx1MDFEOSc6ICdVJyxcbiAgICAnXFx1MUVFNic6ICdVJyxcbiAgICAnXFx1MDE2RSc6ICdVJyxcbiAgICAnXFx1MDE3MCc6ICdVJyxcbiAgICAnXFx1MDFEMyc6ICdVJyxcbiAgICAnXFx1MDIxNCc6ICdVJyxcbiAgICAnXFx1MDIxNic6ICdVJyxcbiAgICAnXFx1MDFBRic6ICdVJyxcbiAgICAnXFx1MUVFQSc6ICdVJyxcbiAgICAnXFx1MUVFOCc6ICdVJyxcbiAgICAnXFx1MUVFRSc6ICdVJyxcbiAgICAnXFx1MUVFQyc6ICdVJyxcbiAgICAnXFx1MUVGMCc6ICdVJyxcbiAgICAnXFx1MUVFNCc6ICdVJyxcbiAgICAnXFx1MUU3Mic6ICdVJyxcbiAgICAnXFx1MDE3Mic6ICdVJyxcbiAgICAnXFx1MUU3Nic6ICdVJyxcbiAgICAnXFx1MUU3NCc6ICdVJyxcbiAgICAnXFx1MDI0NCc6ICdVJyxcbiAgICAnXFx1MjRDQic6ICdWJyxcbiAgICAnXFx1RkYzNic6ICdWJyxcbiAgICAnXFx1MUU3Qyc6ICdWJyxcbiAgICAnXFx1MUU3RSc6ICdWJyxcbiAgICAnXFx1MDFCMic6ICdWJyxcbiAgICAnXFx1QTc1RSc6ICdWJyxcbiAgICAnXFx1MDI0NSc6ICdWJyxcbiAgICAnXFx1QTc2MCc6ICdWWScsXG4gICAgJ1xcdTI0Q0MnOiAnVycsXG4gICAgJ1xcdUZGMzcnOiAnVycsXG4gICAgJ1xcdTFFODAnOiAnVycsXG4gICAgJ1xcdTFFODInOiAnVycsXG4gICAgJ1xcdTAxNzQnOiAnVycsXG4gICAgJ1xcdTFFODYnOiAnVycsXG4gICAgJ1xcdTFFODQnOiAnVycsXG4gICAgJ1xcdTFFODgnOiAnVycsXG4gICAgJ1xcdTJDNzInOiAnVycsXG4gICAgJ1xcdTI0Q0QnOiAnWCcsXG4gICAgJ1xcdUZGMzgnOiAnWCcsXG4gICAgJ1xcdTFFOEEnOiAnWCcsXG4gICAgJ1xcdTFFOEMnOiAnWCcsXG4gICAgJ1xcdTI0Q0UnOiAnWScsXG4gICAgJ1xcdUZGMzknOiAnWScsXG4gICAgJ1xcdTFFRjInOiAnWScsXG4gICAgJ1xcdTAwREQnOiAnWScsXG4gICAgJ1xcdTAxNzYnOiAnWScsXG4gICAgJ1xcdTFFRjgnOiAnWScsXG4gICAgJ1xcdTAyMzInOiAnWScsXG4gICAgJ1xcdTFFOEUnOiAnWScsXG4gICAgJ1xcdTAxNzgnOiAnWScsXG4gICAgJ1xcdTFFRjYnOiAnWScsXG4gICAgJ1xcdTFFRjQnOiAnWScsXG4gICAgJ1xcdTAxQjMnOiAnWScsXG4gICAgJ1xcdTAyNEUnOiAnWScsXG4gICAgJ1xcdTFFRkUnOiAnWScsXG4gICAgJ1xcdTI0Q0YnOiAnWicsXG4gICAgJ1xcdUZGM0EnOiAnWicsXG4gICAgJ1xcdTAxNzknOiAnWicsXG4gICAgJ1xcdTFFOTAnOiAnWicsXG4gICAgJ1xcdTAxN0InOiAnWicsXG4gICAgJ1xcdTAxN0QnOiAnWicsXG4gICAgJ1xcdTFFOTInOiAnWicsXG4gICAgJ1xcdTFFOTQnOiAnWicsXG4gICAgJ1xcdTAxQjUnOiAnWicsXG4gICAgJ1xcdTAyMjQnOiAnWicsXG4gICAgJ1xcdTJDN0YnOiAnWicsXG4gICAgJ1xcdTJDNkInOiAnWicsXG4gICAgJ1xcdUE3NjInOiAnWicsXG4gICAgJ1xcdTI0RDAnOiAnYScsXG4gICAgJ1xcdUZGNDEnOiAnYScsXG4gICAgJ1xcdTFFOUEnOiAnYScsXG4gICAgJ1xcdTAwRTAnOiAnYScsXG4gICAgJ1xcdTAwRTEnOiAnYScsXG4gICAgJ1xcdTAwRTInOiAnYScsXG4gICAgJ1xcdTFFQTcnOiAnYScsXG4gICAgJ1xcdTFFQTUnOiAnYScsXG4gICAgJ1xcdTFFQUInOiAnYScsXG4gICAgJ1xcdTFFQTknOiAnYScsXG4gICAgJ1xcdTAwRTMnOiAnYScsXG4gICAgJ1xcdTAxMDEnOiAnYScsXG4gICAgJ1xcdTAxMDMnOiAnYScsXG4gICAgJ1xcdTFFQjEnOiAnYScsXG4gICAgJ1xcdTFFQUYnOiAnYScsXG4gICAgJ1xcdTFFQjUnOiAnYScsXG4gICAgJ1xcdTFFQjMnOiAnYScsXG4gICAgJ1xcdTAyMjcnOiAnYScsXG4gICAgJ1xcdTAxRTEnOiAnYScsXG4gICAgJ1xcdTAwRTQnOiAnYScsXG4gICAgJ1xcdTAxREYnOiAnYScsXG4gICAgJ1xcdTFFQTMnOiAnYScsXG4gICAgJ1xcdTAwRTUnOiAnYScsXG4gICAgJ1xcdTAxRkInOiAnYScsXG4gICAgJ1xcdTAxQ0UnOiAnYScsXG4gICAgJ1xcdTAyMDEnOiAnYScsXG4gICAgJ1xcdTAyMDMnOiAnYScsXG4gICAgJ1xcdTFFQTEnOiAnYScsXG4gICAgJ1xcdTFFQUQnOiAnYScsXG4gICAgJ1xcdTFFQjcnOiAnYScsXG4gICAgJ1xcdTFFMDEnOiAnYScsXG4gICAgJ1xcdTAxMDUnOiAnYScsXG4gICAgJ1xcdTJDNjUnOiAnYScsXG4gICAgJ1xcdTAyNTAnOiAnYScsXG4gICAgJ1xcdUE3MzMnOiAnYWEnLFxuICAgICdcXHUwMEU2JzogJ2FlJyxcbiAgICAnXFx1MDFGRCc6ICdhZScsXG4gICAgJ1xcdTAxRTMnOiAnYWUnLFxuICAgICdcXHVBNzM1JzogJ2FvJyxcbiAgICAnXFx1QTczNyc6ICdhdScsXG4gICAgJ1xcdUE3MzknOiAnYXYnLFxuICAgICdcXHVBNzNCJzogJ2F2JyxcbiAgICAnXFx1QTczRCc6ICdheScsXG4gICAgJ1xcdTI0RDEnOiAnYicsXG4gICAgJ1xcdUZGNDInOiAnYicsXG4gICAgJ1xcdTFFMDMnOiAnYicsXG4gICAgJ1xcdTFFMDUnOiAnYicsXG4gICAgJ1xcdTFFMDcnOiAnYicsXG4gICAgJ1xcdTAxODAnOiAnYicsXG4gICAgJ1xcdTAxODMnOiAnYicsXG4gICAgJ1xcdTAyNTMnOiAnYicsXG4gICAgJ1xcdTI0RDInOiAnYycsXG4gICAgJ1xcdUZGNDMnOiAnYycsXG4gICAgJ1xcdTAxMDcnOiAnYycsXG4gICAgJ1xcdTAxMDknOiAnYycsXG4gICAgJ1xcdTAxMEInOiAnYycsXG4gICAgJ1xcdTAxMEQnOiAnYycsXG4gICAgJ1xcdTAwRTcnOiAnYycsXG4gICAgJ1xcdTFFMDknOiAnYycsXG4gICAgJ1xcdTAxODgnOiAnYycsXG4gICAgJ1xcdTAyM0MnOiAnYycsXG4gICAgJ1xcdUE3M0YnOiAnYycsXG4gICAgJ1xcdTIxODQnOiAnYycsXG4gICAgJ1xcdTI0RDMnOiAnZCcsXG4gICAgJ1xcdUZGNDQnOiAnZCcsXG4gICAgJ1xcdTFFMEInOiAnZCcsXG4gICAgJ1xcdTAxMEYnOiAnZCcsXG4gICAgJ1xcdTFFMEQnOiAnZCcsXG4gICAgJ1xcdTFFMTEnOiAnZCcsXG4gICAgJ1xcdTFFMTMnOiAnZCcsXG4gICAgJ1xcdTFFMEYnOiAnZCcsXG4gICAgJ1xcdTAxMTEnOiAnZCcsXG4gICAgJ1xcdTAxOEMnOiAnZCcsXG4gICAgJ1xcdTAyNTYnOiAnZCcsXG4gICAgJ1xcdTAyNTcnOiAnZCcsXG4gICAgJ1xcdUE3N0EnOiAnZCcsXG4gICAgJ1xcdTAxRjMnOiAnZHonLFxuICAgICdcXHUwMUM2JzogJ2R6JyxcbiAgICAnXFx1MjRENCc6ICdlJyxcbiAgICAnXFx1RkY0NSc6ICdlJyxcbiAgICAnXFx1MDBFOCc6ICdlJyxcbiAgICAnXFx1MDBFOSc6ICdlJyxcbiAgICAnXFx1MDBFQSc6ICdlJyxcbiAgICAnXFx1MUVDMSc6ICdlJyxcbiAgICAnXFx1MUVCRic6ICdlJyxcbiAgICAnXFx1MUVDNSc6ICdlJyxcbiAgICAnXFx1MUVDMyc6ICdlJyxcbiAgICAnXFx1MUVCRCc6ICdlJyxcbiAgICAnXFx1MDExMyc6ICdlJyxcbiAgICAnXFx1MUUxNSc6ICdlJyxcbiAgICAnXFx1MUUxNyc6ICdlJyxcbiAgICAnXFx1MDExNSc6ICdlJyxcbiAgICAnXFx1MDExNyc6ICdlJyxcbiAgICAnXFx1MDBFQic6ICdlJyxcbiAgICAnXFx1MUVCQic6ICdlJyxcbiAgICAnXFx1MDExQic6ICdlJyxcbiAgICAnXFx1MDIwNSc6ICdlJyxcbiAgICAnXFx1MDIwNyc6ICdlJyxcbiAgICAnXFx1MUVCOSc6ICdlJyxcbiAgICAnXFx1MUVDNyc6ICdlJyxcbiAgICAnXFx1MDIyOSc6ICdlJyxcbiAgICAnXFx1MUUxRCc6ICdlJyxcbiAgICAnXFx1MDExOSc6ICdlJyxcbiAgICAnXFx1MUUxOSc6ICdlJyxcbiAgICAnXFx1MUUxQic6ICdlJyxcbiAgICAnXFx1MDI0Nyc6ICdlJyxcbiAgICAnXFx1MDI1Qic6ICdlJyxcbiAgICAnXFx1MDFERCc6ICdlJyxcbiAgICAnXFx1MjRENSc6ICdmJyxcbiAgICAnXFx1RkY0Nic6ICdmJyxcbiAgICAnXFx1MUUxRic6ICdmJyxcbiAgICAnXFx1MDE5Mic6ICdmJyxcbiAgICAnXFx1QTc3Qyc6ICdmJyxcbiAgICAnXFx1MjRENic6ICdnJyxcbiAgICAnXFx1RkY0Nyc6ICdnJyxcbiAgICAnXFx1MDFGNSc6ICdnJyxcbiAgICAnXFx1MDExRCc6ICdnJyxcbiAgICAnXFx1MUUyMSc6ICdnJyxcbiAgICAnXFx1MDExRic6ICdnJyxcbiAgICAnXFx1MDEyMSc6ICdnJyxcbiAgICAnXFx1MDFFNyc6ICdnJyxcbiAgICAnXFx1MDEyMyc6ICdnJyxcbiAgICAnXFx1MDFFNSc6ICdnJyxcbiAgICAnXFx1MDI2MCc6ICdnJyxcbiAgICAnXFx1QTdBMSc6ICdnJyxcbiAgICAnXFx1MUQ3OSc6ICdnJyxcbiAgICAnXFx1QTc3Ric6ICdnJyxcbiAgICAnXFx1MjRENyc6ICdoJyxcbiAgICAnXFx1RkY0OCc6ICdoJyxcbiAgICAnXFx1MDEyNSc6ICdoJyxcbiAgICAnXFx1MUUyMyc6ICdoJyxcbiAgICAnXFx1MUUyNyc6ICdoJyxcbiAgICAnXFx1MDIxRic6ICdoJyxcbiAgICAnXFx1MUUyNSc6ICdoJyxcbiAgICAnXFx1MUUyOSc6ICdoJyxcbiAgICAnXFx1MUUyQic6ICdoJyxcbiAgICAnXFx1MUU5Nic6ICdoJyxcbiAgICAnXFx1MDEyNyc6ICdoJyxcbiAgICAnXFx1MkM2OCc6ICdoJyxcbiAgICAnXFx1MkM3Nic6ICdoJyxcbiAgICAnXFx1MDI2NSc6ICdoJyxcbiAgICAnXFx1MDE5NSc6ICdodicsXG4gICAgJ1xcdTI0RDgnOiAnaScsXG4gICAgJ1xcdUZGNDknOiAnaScsXG4gICAgJ1xcdTAwRUMnOiAnaScsXG4gICAgJ1xcdTAwRUQnOiAnaScsXG4gICAgJ1xcdTAwRUUnOiAnaScsXG4gICAgJ1xcdTAxMjknOiAnaScsXG4gICAgJ1xcdTAxMkInOiAnaScsXG4gICAgJ1xcdTAxMkQnOiAnaScsXG4gICAgJ1xcdTAwRUYnOiAnaScsXG4gICAgJ1xcdTFFMkYnOiAnaScsXG4gICAgJ1xcdTFFQzknOiAnaScsXG4gICAgJ1xcdTAxRDAnOiAnaScsXG4gICAgJ1xcdTAyMDknOiAnaScsXG4gICAgJ1xcdTAyMEInOiAnaScsXG4gICAgJ1xcdTFFQ0InOiAnaScsXG4gICAgJ1xcdTAxMkYnOiAnaScsXG4gICAgJ1xcdTFFMkQnOiAnaScsXG4gICAgJ1xcdTAyNjgnOiAnaScsXG4gICAgJ1xcdTAxMzEnOiAnaScsXG4gICAgJ1xcdTI0RDknOiAnaicsXG4gICAgJ1xcdUZGNEEnOiAnaicsXG4gICAgJ1xcdTAxMzUnOiAnaicsXG4gICAgJ1xcdTAxRjAnOiAnaicsXG4gICAgJ1xcdTAyNDknOiAnaicsXG4gICAgJ1xcdTI0REEnOiAnaycsXG4gICAgJ1xcdUZGNEInOiAnaycsXG4gICAgJ1xcdTFFMzEnOiAnaycsXG4gICAgJ1xcdTAxRTknOiAnaycsXG4gICAgJ1xcdTFFMzMnOiAnaycsXG4gICAgJ1xcdTAxMzcnOiAnaycsXG4gICAgJ1xcdTFFMzUnOiAnaycsXG4gICAgJ1xcdTAxOTknOiAnaycsXG4gICAgJ1xcdTJDNkEnOiAnaycsXG4gICAgJ1xcdUE3NDEnOiAnaycsXG4gICAgJ1xcdUE3NDMnOiAnaycsXG4gICAgJ1xcdUE3NDUnOiAnaycsXG4gICAgJ1xcdUE3QTMnOiAnaycsXG4gICAgJ1xcdTI0REInOiAnbCcsXG4gICAgJ1xcdUZGNEMnOiAnbCcsXG4gICAgJ1xcdTAxNDAnOiAnbCcsXG4gICAgJ1xcdTAxM0EnOiAnbCcsXG4gICAgJ1xcdTAxM0UnOiAnbCcsXG4gICAgJ1xcdTFFMzcnOiAnbCcsXG4gICAgJ1xcdTFFMzknOiAnbCcsXG4gICAgJ1xcdTAxM0MnOiAnbCcsXG4gICAgJ1xcdTFFM0QnOiAnbCcsXG4gICAgJ1xcdTFFM0InOiAnbCcsXG4gICAgJ1xcdTAxN0YnOiAnbCcsXG4gICAgJ1xcdTAxNDInOiAnbCcsXG4gICAgJ1xcdTAxOUEnOiAnbCcsXG4gICAgJ1xcdTAyNkInOiAnbCcsXG4gICAgJ1xcdTJDNjEnOiAnbCcsXG4gICAgJ1xcdUE3NDknOiAnbCcsXG4gICAgJ1xcdUE3ODEnOiAnbCcsXG4gICAgJ1xcdUE3NDcnOiAnbCcsXG4gICAgJ1xcdTAxQzknOiAnbGonLFxuICAgICdcXHUyNERDJzogJ20nLFxuICAgICdcXHVGRjREJzogJ20nLFxuICAgICdcXHUxRTNGJzogJ20nLFxuICAgICdcXHUxRTQxJzogJ20nLFxuICAgICdcXHUxRTQzJzogJ20nLFxuICAgICdcXHUwMjcxJzogJ20nLFxuICAgICdcXHUwMjZGJzogJ20nLFxuICAgICdcXHUyNEREJzogJ24nLFxuICAgICdcXHVGRjRFJzogJ24nLFxuICAgICdcXHUwMUY5JzogJ24nLFxuICAgICdcXHUwMTQ0JzogJ24nLFxuICAgICdcXHUwMEYxJzogJ24nLFxuICAgICdcXHUxRTQ1JzogJ24nLFxuICAgICdcXHUwMTQ4JzogJ24nLFxuICAgICdcXHUxRTQ3JzogJ24nLFxuICAgICdcXHUwMTQ2JzogJ24nLFxuICAgICdcXHUxRTRCJzogJ24nLFxuICAgICdcXHUxRTQ5JzogJ24nLFxuICAgICdcXHUwMTlFJzogJ24nLFxuICAgICdcXHUwMjcyJzogJ24nLFxuICAgICdcXHUwMTQ5JzogJ24nLFxuICAgICdcXHVBNzkxJzogJ24nLFxuICAgICdcXHVBN0E1JzogJ24nLFxuICAgICdcXHUwMUNDJzogJ25qJyxcbiAgICAnXFx1MjRERSc6ICdvJyxcbiAgICAnXFx1RkY0Ric6ICdvJyxcbiAgICAnXFx1MDBGMic6ICdvJyxcbiAgICAnXFx1MDBGMyc6ICdvJyxcbiAgICAnXFx1MDBGNCc6ICdvJyxcbiAgICAnXFx1MUVEMyc6ICdvJyxcbiAgICAnXFx1MUVEMSc6ICdvJyxcbiAgICAnXFx1MUVENyc6ICdvJyxcbiAgICAnXFx1MUVENSc6ICdvJyxcbiAgICAnXFx1MDBGNSc6ICdvJyxcbiAgICAnXFx1MUU0RCc6ICdvJyxcbiAgICAnXFx1MDIyRCc6ICdvJyxcbiAgICAnXFx1MUU0Ric6ICdvJyxcbiAgICAnXFx1MDE0RCc6ICdvJyxcbiAgICAnXFx1MUU1MSc6ICdvJyxcbiAgICAnXFx1MUU1Myc6ICdvJyxcbiAgICAnXFx1MDE0Ric6ICdvJyxcbiAgICAnXFx1MDIyRic6ICdvJyxcbiAgICAnXFx1MDIzMSc6ICdvJyxcbiAgICAnXFx1MDBGNic6ICdvJyxcbiAgICAnXFx1MDIyQic6ICdvJyxcbiAgICAnXFx1MUVDRic6ICdvJyxcbiAgICAnXFx1MDE1MSc6ICdvJyxcbiAgICAnXFx1MDFEMic6ICdvJyxcbiAgICAnXFx1MDIwRCc6ICdvJyxcbiAgICAnXFx1MDIwRic6ICdvJyxcbiAgICAnXFx1MDFBMSc6ICdvJyxcbiAgICAnXFx1MUVERCc6ICdvJyxcbiAgICAnXFx1MUVEQic6ICdvJyxcbiAgICAnXFx1MUVFMSc6ICdvJyxcbiAgICAnXFx1MUVERic6ICdvJyxcbiAgICAnXFx1MUVFMyc6ICdvJyxcbiAgICAnXFx1MUVDRCc6ICdvJyxcbiAgICAnXFx1MUVEOSc6ICdvJyxcbiAgICAnXFx1MDFFQic6ICdvJyxcbiAgICAnXFx1MDFFRCc6ICdvJyxcbiAgICAnXFx1MDBGOCc6ICdvJyxcbiAgICAnXFx1MDFGRic6ICdvJyxcbiAgICAnXFx1MDI1NCc6ICdvJyxcbiAgICAnXFx1QTc0Qic6ICdvJyxcbiAgICAnXFx1QTc0RCc6ICdvJyxcbiAgICAnXFx1MDI3NSc6ICdvJyxcbiAgICAnXFx1MDE1Myc6ICdvZScsXG4gICAgJ1xcdTAxQTMnOiAnb2knLFxuICAgICdcXHUwMjIzJzogJ291JyxcbiAgICAnXFx1QTc0Ric6ICdvbycsXG4gICAgJ1xcdTI0REYnOiAncCcsXG4gICAgJ1xcdUZGNTAnOiAncCcsXG4gICAgJ1xcdTFFNTUnOiAncCcsXG4gICAgJ1xcdTFFNTcnOiAncCcsXG4gICAgJ1xcdTAxQTUnOiAncCcsXG4gICAgJ1xcdTFEN0QnOiAncCcsXG4gICAgJ1xcdUE3NTEnOiAncCcsXG4gICAgJ1xcdUE3NTMnOiAncCcsXG4gICAgJ1xcdUE3NTUnOiAncCcsXG4gICAgJ1xcdTI0RTAnOiAncScsXG4gICAgJ1xcdUZGNTEnOiAncScsXG4gICAgJ1xcdTAyNEInOiAncScsXG4gICAgJ1xcdUE3NTcnOiAncScsXG4gICAgJ1xcdUE3NTknOiAncScsXG4gICAgJ1xcdTI0RTEnOiAncicsXG4gICAgJ1xcdUZGNTInOiAncicsXG4gICAgJ1xcdTAxNTUnOiAncicsXG4gICAgJ1xcdTFFNTknOiAncicsXG4gICAgJ1xcdTAxNTknOiAncicsXG4gICAgJ1xcdTAyMTEnOiAncicsXG4gICAgJ1xcdTAyMTMnOiAncicsXG4gICAgJ1xcdTFFNUInOiAncicsXG4gICAgJ1xcdTFFNUQnOiAncicsXG4gICAgJ1xcdTAxNTcnOiAncicsXG4gICAgJ1xcdTFFNUYnOiAncicsXG4gICAgJ1xcdTAyNEQnOiAncicsXG4gICAgJ1xcdTAyN0QnOiAncicsXG4gICAgJ1xcdUE3NUInOiAncicsXG4gICAgJ1xcdUE3QTcnOiAncicsXG4gICAgJ1xcdUE3ODMnOiAncicsXG4gICAgJ1xcdTI0RTInOiAncycsXG4gICAgJ1xcdUZGNTMnOiAncycsXG4gICAgJ1xcdTAwREYnOiAncycsXG4gICAgJ1xcdTAxNUInOiAncycsXG4gICAgJ1xcdTFFNjUnOiAncycsXG4gICAgJ1xcdTAxNUQnOiAncycsXG4gICAgJ1xcdTFFNjEnOiAncycsXG4gICAgJ1xcdTAxNjEnOiAncycsXG4gICAgJ1xcdTFFNjcnOiAncycsXG4gICAgJ1xcdTFFNjMnOiAncycsXG4gICAgJ1xcdTFFNjknOiAncycsXG4gICAgJ1xcdTAyMTknOiAncycsXG4gICAgJ1xcdTAxNUYnOiAncycsXG4gICAgJ1xcdTAyM0YnOiAncycsXG4gICAgJ1xcdUE3QTknOiAncycsXG4gICAgJ1xcdUE3ODUnOiAncycsXG4gICAgJ1xcdTFFOUInOiAncycsXG4gICAgJ1xcdTI0RTMnOiAndCcsXG4gICAgJ1xcdUZGNTQnOiAndCcsXG4gICAgJ1xcdTFFNkInOiAndCcsXG4gICAgJ1xcdTFFOTcnOiAndCcsXG4gICAgJ1xcdTAxNjUnOiAndCcsXG4gICAgJ1xcdTFFNkQnOiAndCcsXG4gICAgJ1xcdTAyMUInOiAndCcsXG4gICAgJ1xcdTAxNjMnOiAndCcsXG4gICAgJ1xcdTFFNzEnOiAndCcsXG4gICAgJ1xcdTFFNkYnOiAndCcsXG4gICAgJ1xcdTAxNjcnOiAndCcsXG4gICAgJ1xcdTAxQUQnOiAndCcsXG4gICAgJ1xcdTAyODgnOiAndCcsXG4gICAgJ1xcdTJDNjYnOiAndCcsXG4gICAgJ1xcdUE3ODcnOiAndCcsXG4gICAgJ1xcdUE3MjknOiAndHonLFxuICAgICdcXHUyNEU0JzogJ3UnLFxuICAgICdcXHVGRjU1JzogJ3UnLFxuICAgICdcXHUwMEY5JzogJ3UnLFxuICAgICdcXHUwMEZBJzogJ3UnLFxuICAgICdcXHUwMEZCJzogJ3UnLFxuICAgICdcXHUwMTY5JzogJ3UnLFxuICAgICdcXHUxRTc5JzogJ3UnLFxuICAgICdcXHUwMTZCJzogJ3UnLFxuICAgICdcXHUxRTdCJzogJ3UnLFxuICAgICdcXHUwMTZEJzogJ3UnLFxuICAgICdcXHUwMEZDJzogJ3UnLFxuICAgICdcXHUwMURDJzogJ3UnLFxuICAgICdcXHUwMUQ4JzogJ3UnLFxuICAgICdcXHUwMUQ2JzogJ3UnLFxuICAgICdcXHUwMURBJzogJ3UnLFxuICAgICdcXHUxRUU3JzogJ3UnLFxuICAgICdcXHUwMTZGJzogJ3UnLFxuICAgICdcXHUwMTcxJzogJ3UnLFxuICAgICdcXHUwMUQ0JzogJ3UnLFxuICAgICdcXHUwMjE1JzogJ3UnLFxuICAgICdcXHUwMjE3JzogJ3UnLFxuICAgICdcXHUwMUIwJzogJ3UnLFxuICAgICdcXHUxRUVCJzogJ3UnLFxuICAgICdcXHUxRUU5JzogJ3UnLFxuICAgICdcXHUxRUVGJzogJ3UnLFxuICAgICdcXHUxRUVEJzogJ3UnLFxuICAgICdcXHUxRUYxJzogJ3UnLFxuICAgICdcXHUxRUU1JzogJ3UnLFxuICAgICdcXHUxRTczJzogJ3UnLFxuICAgICdcXHUwMTczJzogJ3UnLFxuICAgICdcXHUxRTc3JzogJ3UnLFxuICAgICdcXHUxRTc1JzogJ3UnLFxuICAgICdcXHUwMjg5JzogJ3UnLFxuICAgICdcXHUyNEU1JzogJ3YnLFxuICAgICdcXHVGRjU2JzogJ3YnLFxuICAgICdcXHUxRTdEJzogJ3YnLFxuICAgICdcXHUxRTdGJzogJ3YnLFxuICAgICdcXHUwMjhCJzogJ3YnLFxuICAgICdcXHVBNzVGJzogJ3YnLFxuICAgICdcXHUwMjhDJzogJ3YnLFxuICAgICdcXHVBNzYxJzogJ3Z5JyxcbiAgICAnXFx1MjRFNic6ICd3JyxcbiAgICAnXFx1RkY1Nyc6ICd3JyxcbiAgICAnXFx1MUU4MSc6ICd3JyxcbiAgICAnXFx1MUU4Myc6ICd3JyxcbiAgICAnXFx1MDE3NSc6ICd3JyxcbiAgICAnXFx1MUU4Nyc6ICd3JyxcbiAgICAnXFx1MUU4NSc6ICd3JyxcbiAgICAnXFx1MUU5OCc6ICd3JyxcbiAgICAnXFx1MUU4OSc6ICd3JyxcbiAgICAnXFx1MkM3Myc6ICd3JyxcbiAgICAnXFx1MjRFNyc6ICd4JyxcbiAgICAnXFx1RkY1OCc6ICd4JyxcbiAgICAnXFx1MUU4Qic6ICd4JyxcbiAgICAnXFx1MUU4RCc6ICd4JyxcbiAgICAnXFx1MjRFOCc6ICd5JyxcbiAgICAnXFx1RkY1OSc6ICd5JyxcbiAgICAnXFx1MUVGMyc6ICd5JyxcbiAgICAnXFx1MDBGRCc6ICd5JyxcbiAgICAnXFx1MDE3Nyc6ICd5JyxcbiAgICAnXFx1MUVGOSc6ICd5JyxcbiAgICAnXFx1MDIzMyc6ICd5JyxcbiAgICAnXFx1MUU4Ric6ICd5JyxcbiAgICAnXFx1MDBGRic6ICd5JyxcbiAgICAnXFx1MUVGNyc6ICd5JyxcbiAgICAnXFx1MUU5OSc6ICd5JyxcbiAgICAnXFx1MUVGNSc6ICd5JyxcbiAgICAnXFx1MDFCNCc6ICd5JyxcbiAgICAnXFx1MDI0Ric6ICd5JyxcbiAgICAnXFx1MUVGRic6ICd5JyxcbiAgICAnXFx1MjRFOSc6ICd6JyxcbiAgICAnXFx1RkY1QSc6ICd6JyxcbiAgICAnXFx1MDE3QSc6ICd6JyxcbiAgICAnXFx1MUU5MSc6ICd6JyxcbiAgICAnXFx1MDE3Qyc6ICd6JyxcbiAgICAnXFx1MDE3RSc6ICd6JyxcbiAgICAnXFx1MUU5Myc6ICd6JyxcbiAgICAnXFx1MUU5NSc6ICd6JyxcbiAgICAnXFx1MDFCNic6ICd6JyxcbiAgICAnXFx1MDIyNSc6ICd6JyxcbiAgICAnXFx1MDI0MCc6ICd6JyxcbiAgICAnXFx1MkM2Qyc6ICd6JyxcbiAgICAnXFx1QTc2Myc6ICd6JyxcbiAgICAnXFx1MDM4Nic6ICdcXHUwMzkxJyxcbiAgICAnXFx1MDM4OCc6ICdcXHUwMzk1JyxcbiAgICAnXFx1MDM4OSc6ICdcXHUwMzk3JyxcbiAgICAnXFx1MDM4QSc6ICdcXHUwMzk5JyxcbiAgICAnXFx1MDNBQSc6ICdcXHUwMzk5JyxcbiAgICAnXFx1MDM4Qyc6ICdcXHUwMzlGJyxcbiAgICAnXFx1MDM4RSc6ICdcXHUwM0E1JyxcbiAgICAnXFx1MDNBQic6ICdcXHUwM0E1JyxcbiAgICAnXFx1MDM4Ric6ICdcXHUwM0E5JyxcbiAgICAnXFx1MDNBQyc6ICdcXHUwM0IxJyxcbiAgICAnXFx1MDNBRCc6ICdcXHUwM0I1JyxcbiAgICAnXFx1MDNBRSc6ICdcXHUwM0I3JyxcbiAgICAnXFx1MDNBRic6ICdcXHUwM0I5JyxcbiAgICAnXFx1MDNDQSc6ICdcXHUwM0I5JyxcbiAgICAnXFx1MDM5MCc6ICdcXHUwM0I5JyxcbiAgICAnXFx1MDNDQyc6ICdcXHUwM0JGJyxcbiAgICAnXFx1MDNDRCc6ICdcXHUwM0M1JyxcbiAgICAnXFx1MDNDQic6ICdcXHUwM0M1JyxcbiAgICAnXFx1MDNCMCc6ICdcXHUwM0M1JyxcbiAgICAnXFx1MDNDRSc6ICdcXHUwM0M5JyxcbiAgICAnXFx1MDNDMic6ICdcXHUwM0MzJyxcbiAgICAnXFx1MjAxOSc6ICdcXCcnXG4gIH07XG5cbiAgcmV0dXJuIGRpYWNyaXRpY3M7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2RhdGEvYmFzZScsW1xuICAnLi4vdXRpbHMnXG5dLCBmdW5jdGlvbiAoVXRpbHMpIHtcbiAgZnVuY3Rpb24gQmFzZUFkYXB0ZXIgKCRlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgQmFzZUFkYXB0ZXIuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcyk7XG4gIH1cblxuICBVdGlscy5FeHRlbmQoQmFzZUFkYXB0ZXIsIFV0aWxzLk9ic2VydmFibGUpO1xuXG4gIEJhc2VBZGFwdGVyLnByb3RvdHlwZS5jdXJyZW50ID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgYGN1cnJlbnRgIG1ldGhvZCBtdXN0IGJlIGRlZmluZWQgaW4gY2hpbGQgY2xhc3Nlcy4nKTtcbiAgfTtcblxuICBCYXNlQWRhcHRlci5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIGBxdWVyeWAgbWV0aG9kIG11c3QgYmUgZGVmaW5lZCBpbiBjaGlsZCBjbGFzc2VzLicpO1xuICB9O1xuXG4gIEJhc2VBZGFwdGVyLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIC8vIENhbiBiZSBpbXBsZW1lbnRlZCBpbiBzdWJjbGFzc2VzXG4gIH07XG5cbiAgQmFzZUFkYXB0ZXIucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgLy8gQ2FuIGJlIGltcGxlbWVudGVkIGluIHN1YmNsYXNzZXNcbiAgfTtcblxuICBCYXNlQWRhcHRlci5wcm90b3R5cGUuZ2VuZXJhdGVSZXN1bHRJZCA9IGZ1bmN0aW9uIChjb250YWluZXIsIGRhdGEpIHtcbiAgICB2YXIgaWQgPSBjb250YWluZXIuaWQgKyAnLXJlc3VsdC0nO1xuXG4gICAgaWQgKz0gVXRpbHMuZ2VuZXJhdGVDaGFycyg0KTtcblxuICAgIGlmIChkYXRhLmlkICE9IG51bGwpIHtcbiAgICAgIGlkICs9ICctJyArIGRhdGEuaWQudG9TdHJpbmcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWQgKz0gJy0nICsgVXRpbHMuZ2VuZXJhdGVDaGFycyg0KTtcbiAgICB9XG4gICAgcmV0dXJuIGlkO1xuICB9O1xuXG4gIHJldHVybiBCYXNlQWRhcHRlcjtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZGF0YS9zZWxlY3QnLFtcbiAgJy4vYmFzZScsXG4gICcuLi91dGlscycsXG4gICdqcXVlcnknXG5dLCBmdW5jdGlvbiAoQmFzZUFkYXB0ZXIsIFV0aWxzLCAkKSB7XG4gIGZ1bmN0aW9uIFNlbGVjdEFkYXB0ZXIgKCRlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgdGhpcy4kZWxlbWVudCA9ICRlbGVtZW50O1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBTZWxlY3RBZGFwdGVyLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpO1xuICB9XG5cbiAgVXRpbHMuRXh0ZW5kKFNlbGVjdEFkYXB0ZXIsIEJhc2VBZGFwdGVyKTtcblxuICBTZWxlY3RBZGFwdGVyLnByb3RvdHlwZS5jdXJyZW50ID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyIGRhdGEgPSBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoXG4gICAgICB0aGlzLiRlbGVtZW50WzBdLnF1ZXJ5U2VsZWN0b3JBbGwoJzpjaGVja2VkJyksXG4gICAgICBmdW5jdGlvbiAoc2VsZWN0ZWRFbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBzZWxmLml0ZW0oJChzZWxlY3RlZEVsZW1lbnQpKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY2FsbGJhY2soZGF0YSk7XG4gIH07XG5cbiAgU2VsZWN0QWRhcHRlci5wcm90b3R5cGUuc2VsZWN0ID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBkYXRhLnNlbGVjdGVkID0gdHJ1ZTtcblxuICAgIC8vIElmIGRhdGEuZWxlbWVudCBpcyBhIERPTSBub2RlLCB1c2UgaXQgaW5zdGVhZFxuICAgIGlmIChcbiAgICAgIGRhdGEuZWxlbWVudCAhPSBudWxsICYmIGRhdGEuZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdvcHRpb24nXG4gICAgKSB7XG4gICAgICBkYXRhLmVsZW1lbnQuc2VsZWN0ZWQgPSB0cnVlO1xuXG4gICAgICB0aGlzLiRlbGVtZW50LnRyaWdnZXIoJ2lucHV0JykudHJpZ2dlcignY2hhbmdlJyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy4kZWxlbWVudC5wcm9wKCdtdWx0aXBsZScpKSB7XG4gICAgICB0aGlzLmN1cnJlbnQoZnVuY3Rpb24gKGN1cnJlbnREYXRhKSB7XG4gICAgICAgIHZhciB2YWwgPSBbXTtcblxuICAgICAgICBkYXRhID0gW2RhdGFdO1xuICAgICAgICBkYXRhLnB1c2guYXBwbHkoZGF0YSwgY3VycmVudERhdGEpO1xuXG4gICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZGF0YS5sZW5ndGg7IGQrKykge1xuICAgICAgICAgIHZhciBpZCA9IGRhdGFbZF0uaWQ7XG5cbiAgICAgICAgICBpZiAodmFsLmluZGV4T2YoaWQpID09PSAtMSkge1xuICAgICAgICAgICAgdmFsLnB1c2goaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGYuJGVsZW1lbnQudmFsKHZhbCk7XG4gICAgICAgIHNlbGYuJGVsZW1lbnQudHJpZ2dlcignaW5wdXQnKS50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgdmFsID0gZGF0YS5pZDtcblxuICAgICAgdGhpcy4kZWxlbWVudC52YWwodmFsKTtcbiAgICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcignaW5wdXQnKS50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICB9XG4gIH07XG5cbiAgU2VsZWN0QWRhcHRlci5wcm90b3R5cGUudW5zZWxlY3QgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGlmICghdGhpcy4kZWxlbWVudC5wcm9wKCdtdWx0aXBsZScpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZGF0YS5zZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgaWYgKFxuICAgICAgZGF0YS5lbGVtZW50ICE9IG51bGwgJiZcbiAgICAgIGRhdGEuZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdvcHRpb24nXG4gICAgKSB7XG4gICAgICBkYXRhLmVsZW1lbnQuc2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdpbnB1dCcpLnRyaWdnZXIoJ2NoYW5nZScpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50KGZ1bmN0aW9uIChjdXJyZW50RGF0YSkge1xuICAgICAgdmFyIHZhbCA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBkID0gMDsgZCA8IGN1cnJlbnREYXRhLmxlbmd0aDsgZCsrKSB7XG4gICAgICAgIHZhciBpZCA9IGN1cnJlbnREYXRhW2RdLmlkO1xuXG4gICAgICAgIGlmIChpZCAhPT0gZGF0YS5pZCAmJiB2YWwuaW5kZXhPZihpZCkgPT09IC0xKSB7XG4gICAgICAgICAgdmFsLnB1c2goaWQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHNlbGYuJGVsZW1lbnQudmFsKHZhbCk7XG5cbiAgICAgIHNlbGYuJGVsZW1lbnQudHJpZ2dlcignaW5wdXQnKS50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICB9KTtcbiAgfTtcblxuICBTZWxlY3RBZGFwdGVyLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHRoaXMuY29udGFpbmVyID0gY29udGFpbmVyO1xuXG4gICAgY29udGFpbmVyLm9uKCdzZWxlY3QnLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBzZWxmLnNlbGVjdChwYXJhbXMuZGF0YSk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Vuc2VsZWN0JywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgc2VsZi51bnNlbGVjdChwYXJhbXMuZGF0YSk7XG4gICAgfSk7XG4gIH07XG5cbiAgU2VsZWN0QWRhcHRlci5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICAvLyBSZW1vdmUgYW55dGhpbmcgYWRkZWQgdG8gY2hpbGQgZWxlbWVudHNcbiAgICB0aGlzLiRlbGVtZW50LmZpbmQoJyonKS5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFJlbW92ZSBhbnkgY3VzdG9tIGRhdGEgc2V0IGJ5IFNlbGVjdDJcbiAgICAgIFV0aWxzLlJlbW92ZURhdGEodGhpcyk7XG4gICAgfSk7XG4gIH07XG5cbiAgU2VsZWN0QWRhcHRlci5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICAgIHZhciBkYXRhID0gW107XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyICRvcHRpb25zID0gdGhpcy4kZWxlbWVudC5jaGlsZHJlbigpO1xuXG4gICAgJG9wdGlvbnMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMudGFnTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAnb3B0aW9uJyAmJlxuICAgICAgICB0aGlzLnRhZ05hbWUudG9Mb3dlckNhc2UoKSAhPT0gJ29wdGdyb3VwJ1xuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyICRvcHRpb24gPSAkKHRoaXMpO1xuXG4gICAgICB2YXIgb3B0aW9uID0gc2VsZi5pdGVtKCRvcHRpb24pO1xuXG4gICAgICB2YXIgbWF0Y2hlcyA9IHNlbGYubWF0Y2hlcyhwYXJhbXMsIG9wdGlvbik7XG5cbiAgICAgIGlmIChtYXRjaGVzICE9PSBudWxsKSB7XG4gICAgICAgIGRhdGEucHVzaChtYXRjaGVzKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNhbGxiYWNrKHtcbiAgICAgIHJlc3VsdHM6IGRhdGFcbiAgICB9KTtcbiAgfTtcblxuICBTZWxlY3RBZGFwdGVyLnByb3RvdHlwZS5hZGRPcHRpb25zID0gZnVuY3Rpb24gKCRvcHRpb25zKSB7XG4gICAgdGhpcy4kZWxlbWVudC5hcHBlbmQoJG9wdGlvbnMpO1xuICB9O1xuXG4gIFNlbGVjdEFkYXB0ZXIucHJvdG90eXBlLm9wdGlvbiA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdmFyIG9wdGlvbjtcblxuICAgIGlmIChkYXRhLmNoaWxkcmVuKSB7XG4gICAgICBvcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRncm91cCcpO1xuICAgICAgb3B0aW9uLmxhYmVsID0gZGF0YS50ZXh0O1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTtcblxuICAgICAgaWYgKG9wdGlvbi50ZXh0Q29udGVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG9wdGlvbi50ZXh0Q29udGVudCA9IGRhdGEudGV4dDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdGlvbi5pbm5lclRleHQgPSBkYXRhLnRleHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb3B0aW9uLnZhbHVlID0gZGF0YS5pZDtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5kaXNhYmxlZCkge1xuICAgICAgb3B0aW9uLmRpc2FibGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5zZWxlY3RlZCkge1xuICAgICAgb3B0aW9uLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS50aXRsZSkge1xuICAgICAgb3B0aW9uLnRpdGxlID0gZGF0YS50aXRsZTtcbiAgICB9XG5cbiAgICB2YXIgbm9ybWFsaXplZERhdGEgPSB0aGlzLl9ub3JtYWxpemVJdGVtKGRhdGEpO1xuICAgIG5vcm1hbGl6ZWREYXRhLmVsZW1lbnQgPSBvcHRpb247XG5cbiAgICAvLyBPdmVycmlkZSB0aGUgb3B0aW9uJ3MgZGF0YSB3aXRoIHRoZSBjb21iaW5lZCBkYXRhXG4gICAgVXRpbHMuU3RvcmVEYXRhKG9wdGlvbiwgJ2RhdGEnLCBub3JtYWxpemVkRGF0YSk7XG5cbiAgICByZXR1cm4gJChvcHRpb24pO1xuICB9O1xuXG4gIFNlbGVjdEFkYXB0ZXIucHJvdG90eXBlLml0ZW0gPSBmdW5jdGlvbiAoJG9wdGlvbikge1xuICAgIHZhciBkYXRhID0ge307XG5cbiAgICBkYXRhID0gVXRpbHMuR2V0RGF0YSgkb3B0aW9uWzBdLCAnZGF0YScpO1xuXG4gICAgaWYgKGRhdGEgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgdmFyIG9wdGlvbiA9ICRvcHRpb25bMF07XG5cbiAgICBpZiAob3B0aW9uLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ29wdGlvbicpIHtcbiAgICAgIGRhdGEgPSB7XG4gICAgICAgIGlkOiAkb3B0aW9uLnZhbCgpLFxuICAgICAgICB0ZXh0OiAkb3B0aW9uLnRleHQoKSxcbiAgICAgICAgZGlzYWJsZWQ6ICRvcHRpb24ucHJvcCgnZGlzYWJsZWQnKSxcbiAgICAgICAgc2VsZWN0ZWQ6ICRvcHRpb24ucHJvcCgnc2VsZWN0ZWQnKSxcbiAgICAgICAgdGl0bGU6ICRvcHRpb24ucHJvcCgndGl0bGUnKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbi50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdvcHRncm91cCcpIHtcbiAgICAgIGRhdGEgPSB7XG4gICAgICAgIHRleHQ6ICRvcHRpb24ucHJvcCgnbGFiZWwnKSxcbiAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICB0aXRsZTogJG9wdGlvbi5wcm9wKCd0aXRsZScpXG4gICAgICB9O1xuXG4gICAgICB2YXIgJGNoaWxkcmVuID0gJG9wdGlvbi5jaGlsZHJlbignb3B0aW9uJyk7XG4gICAgICB2YXIgY2hpbGRyZW4gPSBbXTtcblxuICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCAkY2hpbGRyZW4ubGVuZ3RoOyBjKyspIHtcbiAgICAgICAgdmFyICRjaGlsZCA9ICQoJGNoaWxkcmVuW2NdKTtcblxuICAgICAgICB2YXIgY2hpbGQgPSB0aGlzLml0ZW0oJGNoaWxkKTtcblxuICAgICAgICBjaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgIH1cblxuICAgICAgZGF0YS5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgIH1cblxuICAgIGRhdGEgPSB0aGlzLl9ub3JtYWxpemVJdGVtKGRhdGEpO1xuICAgIGRhdGEuZWxlbWVudCA9ICRvcHRpb25bMF07XG5cbiAgICBVdGlscy5TdG9yZURhdGEoJG9wdGlvblswXSwgJ2RhdGEnLCBkYXRhKTtcblxuICAgIHJldHVybiBkYXRhO1xuICB9O1xuXG4gIFNlbGVjdEFkYXB0ZXIucHJvdG90eXBlLl9ub3JtYWxpemVJdGVtID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICBpZiAoaXRlbSAhPT0gT2JqZWN0KGl0ZW0pKSB7XG4gICAgICBpdGVtID0ge1xuICAgICAgICBpZDogaXRlbSxcbiAgICAgICAgdGV4dDogaXRlbVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpdGVtID0gJC5leHRlbmQoe30sIHtcbiAgICAgIHRleHQ6ICcnXG4gICAgfSwgaXRlbSk7XG5cbiAgICB2YXIgZGVmYXVsdHMgPSB7XG4gICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICB9O1xuXG4gICAgaWYgKGl0ZW0uaWQgIT0gbnVsbCkge1xuICAgICAgaXRlbS5pZCA9IGl0ZW0uaWQudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpZiAoaXRlbS50ZXh0ICE9IG51bGwpIHtcbiAgICAgIGl0ZW0udGV4dCA9IGl0ZW0udGV4dC50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGlmIChpdGVtLl9yZXN1bHRJZCA9PSBudWxsICYmIGl0ZW0uaWQgJiYgdGhpcy5jb250YWluZXIgIT0gbnVsbCkge1xuICAgICAgaXRlbS5fcmVzdWx0SWQgPSB0aGlzLmdlbmVyYXRlUmVzdWx0SWQodGhpcy5jb250YWluZXIsIGl0ZW0pO1xuICAgIH1cblxuICAgIHJldHVybiAkLmV4dGVuZCh7fSwgZGVmYXVsdHMsIGl0ZW0pO1xuICB9O1xuXG4gIFNlbGVjdEFkYXB0ZXIucHJvdG90eXBlLm1hdGNoZXMgPSBmdW5jdGlvbiAocGFyYW1zLCBkYXRhKSB7XG4gICAgdmFyIG1hdGNoZXIgPSB0aGlzLm9wdGlvbnMuZ2V0KCdtYXRjaGVyJyk7XG5cbiAgICByZXR1cm4gbWF0Y2hlcihwYXJhbXMsIGRhdGEpO1xuICB9O1xuXG4gIHJldHVybiBTZWxlY3RBZGFwdGVyO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kYXRhL2FycmF5JyxbXG4gICcuL3NlbGVjdCcsXG4gICcuLi91dGlscycsXG4gICdqcXVlcnknXG5dLCBmdW5jdGlvbiAoU2VsZWN0QWRhcHRlciwgVXRpbHMsICQpIHtcbiAgZnVuY3Rpb24gQXJyYXlBZGFwdGVyICgkZWxlbWVudCwgb3B0aW9ucykge1xuICAgIHRoaXMuX2RhdGFUb0NvbnZlcnQgPSBvcHRpb25zLmdldCgnZGF0YScpIHx8IFtdO1xuXG4gICAgQXJyYXlBZGFwdGVyLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsICRlbGVtZW50LCBvcHRpb25zKTtcbiAgfVxuXG4gIFV0aWxzLkV4dGVuZChBcnJheUFkYXB0ZXIsIFNlbGVjdEFkYXB0ZXIpO1xuXG4gIEFycmF5QWRhcHRlci5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICBBcnJheUFkYXB0ZXIuX19zdXBlcl9fLmJpbmQuY2FsbCh0aGlzLCBjb250YWluZXIsICRjb250YWluZXIpO1xuXG4gICAgdGhpcy5hZGRPcHRpb25zKHRoaXMuY29udmVydFRvT3B0aW9ucyh0aGlzLl9kYXRhVG9Db252ZXJ0KSk7XG4gIH07XG5cbiAgQXJyYXlBZGFwdGVyLnByb3RvdHlwZS5zZWxlY3QgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHZhciAkb3B0aW9uID0gdGhpcy4kZWxlbWVudC5maW5kKCdvcHRpb24nKS5maWx0ZXIoZnVuY3Rpb24gKGksIGVsbSkge1xuICAgICAgcmV0dXJuIGVsbS52YWx1ZSA9PSBkYXRhLmlkLnRvU3RyaW5nKCk7XG4gICAgfSk7XG5cbiAgICBpZiAoJG9wdGlvbi5sZW5ndGggPT09IDApIHtcbiAgICAgICRvcHRpb24gPSB0aGlzLm9wdGlvbihkYXRhKTtcblxuICAgICAgdGhpcy5hZGRPcHRpb25zKCRvcHRpb24pO1xuICAgIH1cblxuICAgIEFycmF5QWRhcHRlci5fX3N1cGVyX18uc2VsZWN0LmNhbGwodGhpcywgZGF0YSk7XG4gIH07XG5cbiAgQXJyYXlBZGFwdGVyLnByb3RvdHlwZS5jb252ZXJ0VG9PcHRpb25zID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgJGV4aXN0aW5nID0gdGhpcy4kZWxlbWVudC5maW5kKCdvcHRpb24nKTtcbiAgICB2YXIgZXhpc3RpbmdJZHMgPSAkZXhpc3RpbmcubWFwKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBzZWxmLml0ZW0oJCh0aGlzKSkuaWQ7XG4gICAgfSkuZ2V0KCk7XG5cbiAgICB2YXIgJG9wdGlvbnMgPSBbXTtcblxuICAgIC8vIEZpbHRlciBvdXQgYWxsIGl0ZW1zIGV4Y2VwdCBmb3IgdGhlIG9uZSBwYXNzZWQgaW4gdGhlIGFyZ3VtZW50XG4gICAgZnVuY3Rpb24gb25seUl0ZW0gKGl0ZW0pIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAkKHRoaXMpLnZhbCgpID09IGl0ZW0uaWQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZGF0YS5sZW5ndGg7IGQrKykge1xuICAgICAgdmFyIGl0ZW0gPSB0aGlzLl9ub3JtYWxpemVJdGVtKGRhdGFbZF0pO1xuXG4gICAgICAvLyBTa2lwIGl0ZW1zIHdoaWNoIHdlcmUgcHJlLWxvYWRlZCwgb25seSBtZXJnZSB0aGUgZGF0YVxuICAgICAgaWYgKGV4aXN0aW5nSWRzLmluZGV4T2YoaXRlbS5pZCkgPj0gMCkge1xuICAgICAgICB2YXIgJGV4aXN0aW5nT3B0aW9uID0gJGV4aXN0aW5nLmZpbHRlcihvbmx5SXRlbShpdGVtKSk7XG5cbiAgICAgICAgdmFyIGV4aXN0aW5nRGF0YSA9IHRoaXMuaXRlbSgkZXhpc3RpbmdPcHRpb24pO1xuICAgICAgICB2YXIgbmV3RGF0YSA9ICQuZXh0ZW5kKHRydWUsIHt9LCBpdGVtLCBleGlzdGluZ0RhdGEpO1xuXG4gICAgICAgIHZhciAkbmV3T3B0aW9uID0gdGhpcy5vcHRpb24obmV3RGF0YSk7XG5cbiAgICAgICAgJGV4aXN0aW5nT3B0aW9uLnJlcGxhY2VXaXRoKCRuZXdPcHRpb24pO1xuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgJG9wdGlvbiA9IHRoaXMub3B0aW9uKGl0ZW0pO1xuXG4gICAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xuICAgICAgICB2YXIgJGNoaWxkcmVuID0gdGhpcy5jb252ZXJ0VG9PcHRpb25zKGl0ZW0uY2hpbGRyZW4pO1xuXG4gICAgICAgICRvcHRpb24uYXBwZW5kKCRjaGlsZHJlbik7XG4gICAgICB9XG5cbiAgICAgICRvcHRpb25zLnB1c2goJG9wdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuICRvcHRpb25zO1xuICB9O1xuXG4gIHJldHVybiBBcnJheUFkYXB0ZXI7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2RhdGEvYWpheCcsW1xuICAnLi9hcnJheScsXG4gICcuLi91dGlscycsXG4gICdqcXVlcnknXG5dLCBmdW5jdGlvbiAoQXJyYXlBZGFwdGVyLCBVdGlscywgJCkge1xuICBmdW5jdGlvbiBBamF4QWRhcHRlciAoJGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLmFqYXhPcHRpb25zID0gdGhpcy5fYXBwbHlEZWZhdWx0cyhvcHRpb25zLmdldCgnYWpheCcpKTtcblxuICAgIGlmICh0aGlzLmFqYXhPcHRpb25zLnByb2Nlc3NSZXN1bHRzICE9IG51bGwpIHtcbiAgICAgIHRoaXMucHJvY2Vzc1Jlc3VsdHMgPSB0aGlzLmFqYXhPcHRpb25zLnByb2Nlc3NSZXN1bHRzO1xuICAgIH1cblxuICAgIEFqYXhBZGFwdGVyLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsICRlbGVtZW50LCBvcHRpb25zKTtcbiAgfVxuXG4gIFV0aWxzLkV4dGVuZChBamF4QWRhcHRlciwgQXJyYXlBZGFwdGVyKTtcblxuICBBamF4QWRhcHRlci5wcm90b3R5cGUuX2FwcGx5RGVmYXVsdHMgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgIHZhciBkZWZhdWx0cyA9IHtcbiAgICAgIGRhdGE6IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuICQuZXh0ZW5kKHt9LCBwYXJhbXMsIHtcbiAgICAgICAgICBxOiBwYXJhbXMudGVybVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICB0cmFuc3BvcnQ6IGZ1bmN0aW9uIChwYXJhbXMsIHN1Y2Nlc3MsIGZhaWx1cmUpIHtcbiAgICAgICAgdmFyICRyZXF1ZXN0ID0gJC5hamF4KHBhcmFtcyk7XG5cbiAgICAgICAgJHJlcXVlc3QudGhlbihzdWNjZXNzKTtcbiAgICAgICAgJHJlcXVlc3QuZmFpbChmYWlsdXJlKTtcblxuICAgICAgICByZXR1cm4gJHJlcXVlc3Q7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiAkLmV4dGVuZCh7fSwgZGVmYXVsdHMsIG9wdGlvbnMsIHRydWUpO1xuICB9O1xuXG4gIEFqYXhBZGFwdGVyLnByb3RvdHlwZS5wcm9jZXNzUmVzdWx0cyA9IGZ1bmN0aW9uIChyZXN1bHRzKSB7XG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH07XG5cbiAgQWpheEFkYXB0ZXIucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICB2YXIgbWF0Y2hlcyA9IFtdO1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGlmICh0aGlzLl9yZXF1ZXN0ICE9IG51bGwpIHtcbiAgICAgIC8vIEpTT05QIHJlcXVlc3RzIGNhbm5vdCBhbHdheXMgYmUgYWJvcnRlZFxuICAgICAgaWYgKHR5cGVvZiB0aGlzLl9yZXF1ZXN0LmFib3J0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMuX3JlcXVlc3QuYWJvcnQoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcmVxdWVzdCA9IG51bGw7XG4gICAgfVxuXG4gICAgdmFyIG9wdGlvbnMgPSAkLmV4dGVuZCh7XG4gICAgICB0eXBlOiAnR0VUJ1xuICAgIH0sIHRoaXMuYWpheE9wdGlvbnMpO1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLnVybCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgb3B0aW9ucy51cmwgPSBvcHRpb25zLnVybC5jYWxsKHRoaXMuJGVsZW1lbnQsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIG9wdGlvbnMuZGF0YSA9IG9wdGlvbnMuZGF0YS5jYWxsKHRoaXMuJGVsZW1lbnQsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVxdWVzdCAoKSB7XG4gICAgICB2YXIgJHJlcXVlc3QgPSBvcHRpb25zLnRyYW5zcG9ydChvcHRpb25zLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICB2YXIgcmVzdWx0cyA9IHNlbGYucHJvY2Vzc1Jlc3VsdHMoZGF0YSwgcGFyYW1zKTtcblxuICAgICAgICBpZiAoc2VsZi5vcHRpb25zLmdldCgnZGVidWcnKSAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgICAgICAgLy8gQ2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHJlc3BvbnNlIGluY2x1ZGVkIGEgYHJlc3VsdHNgIGtleS5cbiAgICAgICAgICBpZiAoIXJlc3VsdHMgfHwgIXJlc3VsdHMucmVzdWx0cyB8fCAhQXJyYXkuaXNBcnJheShyZXN1bHRzLnJlc3VsdHMpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAnU2VsZWN0MjogVGhlIEFKQVggcmVzdWx0cyBkaWQgbm90IHJldHVybiBhbiBhcnJheSBpbiB0aGUgJyArXG4gICAgICAgICAgICAgICdgcmVzdWx0c2Aga2V5IG9mIHRoZSByZXNwb25zZS4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNhbGxiYWNrKHJlc3VsdHMpO1xuICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBBdHRlbXB0IHRvIGRldGVjdCBpZiBhIHJlcXVlc3Qgd2FzIGFib3J0ZWRcbiAgICAgICAgLy8gT25seSB3b3JrcyBpZiB0aGUgdHJhbnNwb3J0IGV4cG9zZXMgYSBzdGF0dXMgcHJvcGVydHlcbiAgICAgICAgaWYgKCdzdGF0dXMnIGluICRyZXF1ZXN0ICYmXG4gICAgICAgICAgICAoJHJlcXVlc3Quc3RhdHVzID09PSAwIHx8ICRyZXF1ZXN0LnN0YXR1cyA9PT0gJzAnKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGYudHJpZ2dlcigncmVzdWx0czptZXNzYWdlJywge1xuICAgICAgICAgIG1lc3NhZ2U6ICdlcnJvckxvYWRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHNlbGYuX3JlcXVlc3QgPSAkcmVxdWVzdDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hamF4T3B0aW9ucy5kZWxheSAmJiBwYXJhbXMudGVybSAhPSBudWxsKSB7XG4gICAgICBpZiAodGhpcy5fcXVlcnlUaW1lb3V0KSB7XG4gICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5fcXVlcnlUaW1lb3V0KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcXVlcnlUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQocmVxdWVzdCwgdGhpcy5hamF4T3B0aW9ucy5kZWxheSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3QoKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIEFqYXhBZGFwdGVyO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kYXRhL3RhZ3MnLFtcbiAgJ2pxdWVyeSdcbl0sIGZ1bmN0aW9uICgkKSB7XG4gIGZ1bmN0aW9uIFRhZ3MgKGRlY29yYXRlZCwgJGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB2YXIgdGFncyA9IG9wdGlvbnMuZ2V0KCd0YWdzJyk7XG5cbiAgICB2YXIgY3JlYXRlVGFnID0gb3B0aW9ucy5nZXQoJ2NyZWF0ZVRhZycpO1xuXG4gICAgaWYgKGNyZWF0ZVRhZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNyZWF0ZVRhZyA9IGNyZWF0ZVRhZztcbiAgICB9XG5cbiAgICB2YXIgaW5zZXJ0VGFnID0gb3B0aW9ucy5nZXQoJ2luc2VydFRhZycpO1xuXG4gICAgaWYgKGluc2VydFRhZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuaW5zZXJ0VGFnID0gaW5zZXJ0VGFnO1xuICAgIH1cblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsICRlbGVtZW50LCBvcHRpb25zKTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KHRhZ3MpKSB7XG4gICAgICBmb3IgKHZhciB0ID0gMDsgdCA8IHRhZ3MubGVuZ3RoOyB0KyspIHtcbiAgICAgICAgdmFyIHRhZyA9IHRhZ3NbdF07XG4gICAgICAgIHZhciBpdGVtID0gdGhpcy5fbm9ybWFsaXplSXRlbSh0YWcpO1xuXG4gICAgICAgIHZhciAkb3B0aW9uID0gdGhpcy5vcHRpb24oaXRlbSk7XG5cbiAgICAgICAgdGhpcy4kZWxlbWVudC5hcHBlbmQoJG9wdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgVGFncy5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdGhpcy5fcmVtb3ZlT2xkVGFncygpO1xuXG4gICAgaWYgKHBhcmFtcy50ZXJtID09IG51bGwgfHwgcGFyYW1zLnBhZ2UgIT0gbnVsbCkge1xuICAgICAgZGVjb3JhdGVkLmNhbGwodGhpcywgcGFyYW1zLCBjYWxsYmFjayk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd3JhcHBlciAob2JqLCBjaGlsZCkge1xuICAgICAgdmFyIGRhdGEgPSBvYmoucmVzdWx0cztcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBvcHRpb24gPSBkYXRhW2ldO1xuXG4gICAgICAgIHZhciBjaGVja0NoaWxkcmVuID0gKFxuICAgICAgICAgIG9wdGlvbi5jaGlsZHJlbiAhPSBudWxsICYmXG4gICAgICAgICAgIXdyYXBwZXIoe1xuICAgICAgICAgICAgcmVzdWx0czogb3B0aW9uLmNoaWxkcmVuXG4gICAgICAgICAgfSwgdHJ1ZSlcbiAgICAgICAgKTtcblxuICAgICAgICB2YXIgb3B0aW9uVGV4dCA9IChvcHRpb24udGV4dCB8fCAnJykudG9VcHBlckNhc2UoKTtcbiAgICAgICAgdmFyIHBhcmFtc1Rlcm0gPSAocGFyYW1zLnRlcm0gfHwgJycpLnRvVXBwZXJDYXNlKCk7XG5cbiAgICAgICAgdmFyIGNoZWNrVGV4dCA9IG9wdGlvblRleHQgPT09IHBhcmFtc1Rlcm07XG5cbiAgICAgICAgaWYgKGNoZWNrVGV4dCB8fCBjaGVja0NoaWxkcmVuKSB7XG4gICAgICAgICAgaWYgKGNoaWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgb2JqLmRhdGEgPSBkYXRhO1xuICAgICAgICAgIGNhbGxiYWNrKG9iaik7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNoaWxkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgdGFnID0gc2VsZi5jcmVhdGVUYWcocGFyYW1zKTtcblxuICAgICAgaWYgKHRhZyAhPSBudWxsKSB7XG4gICAgICAgIHZhciAkb3B0aW9uID0gc2VsZi5vcHRpb24odGFnKTtcbiAgICAgICAgJG9wdGlvbi5hdHRyKCdkYXRhLXNlbGVjdDItdGFnJywgJ3RydWUnKTtcblxuICAgICAgICBzZWxmLmFkZE9wdGlvbnMoWyRvcHRpb25dKTtcblxuICAgICAgICBzZWxmLmluc2VydFRhZyhkYXRhLCB0YWcpO1xuICAgICAgfVxuXG4gICAgICBvYmoucmVzdWx0cyA9IGRhdGE7XG5cbiAgICAgIGNhbGxiYWNrKG9iaik7XG4gICAgfVxuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgcGFyYW1zLCB3cmFwcGVyKTtcbiAgfTtcblxuICBUYWdzLnByb3RvdHlwZS5jcmVhdGVUYWcgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBwYXJhbXMpIHtcbiAgICBpZiAocGFyYW1zLnRlcm0gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIHRlcm0gPSBwYXJhbXMudGVybS50cmltKCk7XG5cbiAgICBpZiAodGVybSA9PT0gJycpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBpZDogdGVybSxcbiAgICAgIHRleHQ6IHRlcm1cbiAgICB9O1xuICB9O1xuXG4gIFRhZ3MucHJvdG90eXBlLmluc2VydFRhZyA9IGZ1bmN0aW9uIChfLCBkYXRhLCB0YWcpIHtcbiAgICBkYXRhLnVuc2hpZnQodGFnKTtcbiAgfTtcblxuICBUYWdzLnByb3RvdHlwZS5fcmVtb3ZlT2xkVGFncyA9IGZ1bmN0aW9uIChfKSB7XG4gICAgdmFyICRvcHRpb25zID0gdGhpcy4kZWxlbWVudC5maW5kKCdvcHRpb25bZGF0YS1zZWxlY3QyLXRhZ10nKTtcblxuICAgICRvcHRpb25zLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAkKHRoaXMpLnJlbW92ZSgpO1xuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiBUYWdzO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kYXRhL3Rva2VuaXplcicsW1xuICAnanF1ZXJ5J1xuXSwgZnVuY3Rpb24gKCQpIHtcbiAgZnVuY3Rpb24gVG9rZW5pemVyIChkZWNvcmF0ZWQsICRlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgdmFyIHRva2VuaXplciA9IG9wdGlvbnMuZ2V0KCd0b2tlbml6ZXInKTtcblxuICAgIGlmICh0b2tlbml6ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy50b2tlbml6ZXIgPSB0b2tlbml6ZXI7XG4gICAgfVxuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgJGVsZW1lbnQsIG9wdGlvbnMpO1xuICB9XG5cbiAgVG9rZW5pemVyLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcblxuICAgIHRoaXMuJHNlYXJjaCA9ICBjb250YWluZXIuZHJvcGRvd24uJHNlYXJjaCB8fCBjb250YWluZXIuc2VsZWN0aW9uLiRzZWFyY2ggfHxcbiAgICAgICRjb250YWluZXIuZmluZCgnLnNlbGVjdDItc2VhcmNoX19maWVsZCcpO1xuICB9O1xuXG4gIFRva2VuaXplci5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlQW5kU2VsZWN0IChkYXRhKSB7XG4gICAgICAvLyBOb3JtYWxpemUgdGhlIGRhdGEgb2JqZWN0IHNvIHdlIGNhbiB1c2UgaXQgZm9yIGNoZWNrc1xuICAgICAgdmFyIGl0ZW0gPSBzZWxmLl9ub3JtYWxpemVJdGVtKGRhdGEpO1xuXG4gICAgICAvLyBDaGVjayBpZiB0aGUgZGF0YSBvYmplY3QgYWxyZWFkeSBleGlzdHMgYXMgYSB0YWdcbiAgICAgIC8vIFNlbGVjdCBpdCBpZiBpdCBkb2Vzbid0XG4gICAgICB2YXIgJGV4aXN0aW5nT3B0aW9ucyA9IHNlbGYuJGVsZW1lbnQuZmluZCgnb3B0aW9uJykuZmlsdGVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICQodGhpcykudmFsKCkgPT09IGl0ZW0uaWQ7XG4gICAgICB9KTtcblxuICAgICAgLy8gSWYgYW4gZXhpc3Rpbmcgb3B0aW9uIHdhc24ndCBmb3VuZCBmb3IgaXQsIGNyZWF0ZSB0aGUgb3B0aW9uXG4gICAgICBpZiAoISRleGlzdGluZ09wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIHZhciAkb3B0aW9uID0gc2VsZi5vcHRpb24oaXRlbSk7XG4gICAgICAgICRvcHRpb24uYXR0cignZGF0YS1zZWxlY3QyLXRhZycsIHRydWUpO1xuXG4gICAgICAgIHNlbGYuX3JlbW92ZU9sZFRhZ3MoKTtcbiAgICAgICAgc2VsZi5hZGRPcHRpb25zKFskb3B0aW9uXSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNlbGVjdCB0aGUgaXRlbSwgbm93IHRoYXQgd2Uga25vdyB0aGVyZSBpcyBhbiBvcHRpb24gZm9yIGl0XG4gICAgICBzZWxlY3QoaXRlbSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2VsZWN0IChkYXRhKSB7XG4gICAgICBzZWxmLnRyaWdnZXIoJ3NlbGVjdCcsIHtcbiAgICAgICAgZGF0YTogZGF0YVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcGFyYW1zLnRlcm0gPSBwYXJhbXMudGVybSB8fCAnJztcblxuICAgIHZhciB0b2tlbkRhdGEgPSB0aGlzLnRva2VuaXplcihwYXJhbXMsIHRoaXMub3B0aW9ucywgY3JlYXRlQW5kU2VsZWN0KTtcblxuICAgIGlmICh0b2tlbkRhdGEudGVybSAhPT0gcGFyYW1zLnRlcm0pIHtcbiAgICAgIC8vIFJlcGxhY2UgdGhlIHNlYXJjaCB0ZXJtIGlmIHdlIGhhdmUgdGhlIHNlYXJjaCBib3hcbiAgICAgIGlmICh0aGlzLiRzZWFyY2gubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuJHNlYXJjaC52YWwodG9rZW5EYXRhLnRlcm0pO1xuICAgICAgICB0aGlzLiRzZWFyY2gudHJpZ2dlcignZm9jdXMnKTtcbiAgICAgIH1cblxuICAgICAgcGFyYW1zLnRlcm0gPSB0b2tlbkRhdGEudGVybTtcbiAgICB9XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBwYXJhbXMsIGNhbGxiYWNrKTtcbiAgfTtcblxuICBUb2tlbml6ZXIucHJvdG90eXBlLnRva2VuaXplciA9IGZ1bmN0aW9uIChfLCBwYXJhbXMsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlcGFyYXRvcnMgPSBvcHRpb25zLmdldCgndG9rZW5TZXBhcmF0b3JzJykgfHwgW107XG4gICAgdmFyIHRlcm0gPSBwYXJhbXMudGVybTtcbiAgICB2YXIgaSA9IDA7XG5cbiAgICB2YXIgY3JlYXRlVGFnID0gdGhpcy5jcmVhdGVUYWcgfHwgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHBhcmFtcy50ZXJtLFxuICAgICAgICB0ZXh0OiBwYXJhbXMudGVybVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgd2hpbGUgKGkgPCB0ZXJtLmxlbmd0aCkge1xuICAgICAgdmFyIHRlcm1DaGFyID0gdGVybVtpXTtcblxuICAgICAgaWYgKHNlcGFyYXRvcnMuaW5kZXhPZih0ZXJtQ2hhcikgPT09IC0xKSB7XG4gICAgICAgIGkrKztcblxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIHBhcnQgPSB0ZXJtLnN1YnN0cigwLCBpKTtcbiAgICAgIHZhciBwYXJ0UGFyYW1zID0gJC5leHRlbmQoe30sIHBhcmFtcywge1xuICAgICAgICB0ZXJtOiBwYXJ0XG4gICAgICB9KTtcblxuICAgICAgdmFyIGRhdGEgPSBjcmVhdGVUYWcocGFydFBhcmFtcyk7XG5cbiAgICAgIGlmIChkYXRhID09IG51bGwpIHtcbiAgICAgICAgaSsrO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY2FsbGJhY2soZGF0YSk7XG5cbiAgICAgIC8vIFJlc2V0IHRoZSB0ZXJtIHRvIG5vdCBpbmNsdWRlIHRoZSB0b2tlbml6ZWQgcG9ydGlvblxuICAgICAgdGVybSA9IHRlcm0uc3Vic3RyKGkgKyAxKSB8fCAnJztcbiAgICAgIGkgPSAwO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0ZXJtOiB0ZXJtXG4gICAgfTtcbiAgfTtcblxuICByZXR1cm4gVG9rZW5pemVyO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kYXRhL21pbmltdW1JbnB1dExlbmd0aCcsW1xuXG5dLCBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE1pbmltdW1JbnB1dExlbmd0aCAoZGVjb3JhdGVkLCAkZSwgb3B0aW9ucykge1xuICAgIHRoaXMubWluaW11bUlucHV0TGVuZ3RoID0gb3B0aW9ucy5nZXQoJ21pbmltdW1JbnB1dExlbmd0aCcpO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgJGUsIG9wdGlvbnMpO1xuICB9XG5cbiAgTWluaW11bUlucHV0TGVuZ3RoLnByb3RvdHlwZS5xdWVyeSA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICBwYXJhbXMudGVybSA9IHBhcmFtcy50ZXJtIHx8ICcnO1xuXG4gICAgaWYgKHBhcmFtcy50ZXJtLmxlbmd0aCA8IHRoaXMubWluaW11bUlucHV0TGVuZ3RoKSB7XG4gICAgICB0aGlzLnRyaWdnZXIoJ3Jlc3VsdHM6bWVzc2FnZScsIHtcbiAgICAgICAgbWVzc2FnZTogJ2lucHV0VG9vU2hvcnQnLFxuICAgICAgICBhcmdzOiB7XG4gICAgICAgICAgbWluaW11bTogdGhpcy5taW5pbXVtSW5wdXRMZW5ndGgsXG4gICAgICAgICAgaW5wdXQ6IHBhcmFtcy50ZXJtLFxuICAgICAgICAgIHBhcmFtczogcGFyYW1zXG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgcGFyYW1zLCBjYWxsYmFjayk7XG4gIH07XG5cbiAgcmV0dXJuIE1pbmltdW1JbnB1dExlbmd0aDtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZGF0YS9tYXhpbXVtSW5wdXRMZW5ndGgnLFtcblxuXSwgZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBNYXhpbXVtSW5wdXRMZW5ndGggKGRlY29yYXRlZCwgJGUsIG9wdGlvbnMpIHtcbiAgICB0aGlzLm1heGltdW1JbnB1dExlbmd0aCA9IG9wdGlvbnMuZ2V0KCdtYXhpbXVtSW5wdXRMZW5ndGgnKTtcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsICRlLCBvcHRpb25zKTtcbiAgfVxuXG4gIE1heGltdW1JbnB1dExlbmd0aC5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgcGFyYW1zLnRlcm0gPSBwYXJhbXMudGVybSB8fCAnJztcblxuICAgIGlmICh0aGlzLm1heGltdW1JbnB1dExlbmd0aCA+IDAgJiZcbiAgICAgICAgcGFyYW1zLnRlcm0ubGVuZ3RoID4gdGhpcy5tYXhpbXVtSW5wdXRMZW5ndGgpIHtcbiAgICAgIHRoaXMudHJpZ2dlcigncmVzdWx0czptZXNzYWdlJywge1xuICAgICAgICBtZXNzYWdlOiAnaW5wdXRUb29Mb25nJyxcbiAgICAgICAgYXJnczoge1xuICAgICAgICAgIG1heGltdW06IHRoaXMubWF4aW11bUlucHV0TGVuZ3RoLFxuICAgICAgICAgIGlucHV0OiBwYXJhbXMudGVybSxcbiAgICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIHBhcmFtcywgY2FsbGJhY2spO1xuICB9O1xuXG4gIHJldHVybiBNYXhpbXVtSW5wdXRMZW5ndGg7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2RhdGEvbWF4aW11bVNlbGVjdGlvbkxlbmd0aCcsW1xuXG5dLCBmdW5jdGlvbiAoKXtcbiAgZnVuY3Rpb24gTWF4aW11bVNlbGVjdGlvbkxlbmd0aCAoZGVjb3JhdGVkLCAkZSwgb3B0aW9ucykge1xuICAgIHRoaXMubWF4aW11bVNlbGVjdGlvbkxlbmd0aCA9IG9wdGlvbnMuZ2V0KCdtYXhpbXVtU2VsZWN0aW9uTGVuZ3RoJyk7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZSwgb3B0aW9ucyk7XG4gIH1cblxuICBNYXhpbXVtU2VsZWN0aW9uTGVuZ3RoLnByb3RvdHlwZS5iaW5kID1cbiAgICBmdW5jdGlvbiAoZGVjb3JhdGVkLCBjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgICAgZGVjb3JhdGVkLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcblxuICAgICAgY29udGFpbmVyLm9uKCdzZWxlY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNlbGYuX2NoZWNrSWZNYXhpbXVtU2VsZWN0ZWQoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIE1heGltdW1TZWxlY3Rpb25MZW5ndGgucHJvdG90eXBlLnF1ZXJ5ID1cbiAgICBmdW5jdGlvbiAoZGVjb3JhdGVkLCBwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICAgIHRoaXMuX2NoZWNrSWZNYXhpbXVtU2VsZWN0ZWQoZnVuY3Rpb24gKCkge1xuICAgICAgICBkZWNvcmF0ZWQuY2FsbChzZWxmLCBwYXJhbXMsIGNhbGxiYWNrKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIE1heGltdW1TZWxlY3Rpb25MZW5ndGgucHJvdG90eXBlLl9jaGVja0lmTWF4aW11bVNlbGVjdGVkID1cbiAgICBmdW5jdGlvbiAoXywgc3VjY2Vzc0NhbGxiYWNrKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICAgIHRoaXMuY3VycmVudChmdW5jdGlvbiAoY3VycmVudERhdGEpIHtcbiAgICAgICAgdmFyIGNvdW50ID0gY3VycmVudERhdGEgIT0gbnVsbCA/IGN1cnJlbnREYXRhLmxlbmd0aCA6IDA7XG4gICAgICAgIGlmIChzZWxmLm1heGltdW1TZWxlY3Rpb25MZW5ndGggPiAwICYmXG4gICAgICAgICAgY291bnQgPj0gc2VsZi5tYXhpbXVtU2VsZWN0aW9uTGVuZ3RoKSB7XG4gICAgICAgICAgc2VsZi50cmlnZ2VyKCdyZXN1bHRzOm1lc3NhZ2UnLCB7XG4gICAgICAgICAgICBtZXNzYWdlOiAnbWF4aW11bVNlbGVjdGVkJyxcbiAgICAgICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICAgICAgbWF4aW11bTogc2VsZi5tYXhpbXVtU2VsZWN0aW9uTGVuZ3RoXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN1Y2Nlc3NDYWxsYmFjaykge1xuICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gTWF4aW11bVNlbGVjdGlvbkxlbmd0aDtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZHJvcGRvd24nLFtcbiAgJ2pxdWVyeScsXG4gICcuL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKCQsIFV0aWxzKSB7XG4gIGZ1bmN0aW9uIERyb3Bkb3duICgkZWxlbWVudCwgb3B0aW9ucykge1xuICAgIHRoaXMuJGVsZW1lbnQgPSAkZWxlbWVudDtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgRHJvcGRvd24uX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcyk7XG4gIH1cblxuICBVdGlscy5FeHRlbmQoRHJvcGRvd24sIFV0aWxzLk9ic2VydmFibGUpO1xuXG4gIERyb3Bkb3duLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRkcm9wZG93biA9ICQoXG4gICAgICAnPHNwYW4gY2xhc3M9XCJzZWxlY3QyLWRyb3Bkb3duXCI+JyArXG4gICAgICAgICc8c3BhbiBjbGFzcz1cInNlbGVjdDItcmVzdWx0c1wiPjwvc3Bhbj4nICtcbiAgICAgICc8L3NwYW4+J1xuICAgICk7XG5cbiAgICAkZHJvcGRvd24uYXR0cignZGlyJywgdGhpcy5vcHRpb25zLmdldCgnZGlyJykpO1xuXG4gICAgdGhpcy4kZHJvcGRvd24gPSAkZHJvcGRvd247XG5cbiAgICByZXR1cm4gJGRyb3Bkb3duO1xuICB9O1xuXG4gIERyb3Bkb3duLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKCkge1xuICAgIC8vIFNob3VsZCBiZSBpbXBsZW1lbnRlZCBpbiBzdWJjbGFzc2VzXG4gIH07XG5cbiAgRHJvcGRvd24ucHJvdG90eXBlLnBvc2l0aW9uID0gZnVuY3Rpb24gKCRkcm9wZG93biwgJGNvbnRhaW5lcikge1xuICAgIC8vIFNob3VsZCBiZSBpbXBsZW1lbnRlZCBpbiBzdWJjbGFzc2VzXG4gIH07XG5cbiAgRHJvcGRvd24ucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgLy8gUmVtb3ZlIHRoZSBkcm9wZG93biBmcm9tIHRoZSBET01cbiAgICB0aGlzLiRkcm9wZG93bi5yZW1vdmUoKTtcbiAgfTtcblxuICByZXR1cm4gRHJvcGRvd247XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2Ryb3Bkb3duL3NlYXJjaCcsW1xuICAnanF1ZXJ5J1xuXSwgZnVuY3Rpb24gKCQpIHtcbiAgZnVuY3Rpb24gU2VhcmNoICgpIHsgfVxuXG4gIFNlYXJjaC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKGRlY29yYXRlZCkge1xuICAgIHZhciAkcmVuZGVyZWQgPSBkZWNvcmF0ZWQuY2FsbCh0aGlzKTtcbiAgICB2YXIgc2VhcmNoTGFiZWwgPSB0aGlzLm9wdGlvbnMuZ2V0KCd0cmFuc2xhdGlvbnMnKS5nZXQoJ3NlYXJjaCcpO1xuXG4gICAgdmFyICRzZWFyY2ggPSAkKFxuICAgICAgJzxzcGFuIGNsYXNzPVwic2VsZWN0Mi1zZWFyY2ggc2VsZWN0Mi1zZWFyY2gtLWRyb3Bkb3duXCI+JyArXG4gICAgICAgICc8aW5wdXQgY2xhc3M9XCJzZWxlY3QyLXNlYXJjaF9fZmllbGRcIiB0eXBlPVwic2VhcmNoXCIgdGFiaW5kZXg9XCItMVwiJyArXG4gICAgICAgICcgYXV0b2NvcnJlY3Q9XCJvZmZcIiBhdXRvY2FwaXRhbGl6ZT1cIm5vbmVcIicgK1xuICAgICAgICAnIHNwZWxsY2hlY2s9XCJmYWxzZVwiIHJvbGU9XCJzZWFyY2hib3hcIiBhcmlhLWF1dG9jb21wbGV0ZT1cImxpc3RcIiAvPicgK1xuICAgICAgJzwvc3Bhbj4nXG4gICAgKTtcblxuICAgIHRoaXMuJHNlYXJjaENvbnRhaW5lciA9ICRzZWFyY2g7XG4gICAgdGhpcy4kc2VhcmNoID0gJHNlYXJjaC5maW5kKCdpbnB1dCcpO1xuXG4gICAgdGhpcy4kc2VhcmNoLnByb3AoJ2F1dG9jb21wbGV0ZScsIHRoaXMub3B0aW9ucy5nZXQoJ2F1dG9jb21wbGV0ZScpKTtcbiAgICB0aGlzLiRzZWFyY2guYXR0cignYXJpYS1sYWJlbCcsIHNlYXJjaExhYmVsKCkpO1xuXG4gICAgJHJlbmRlcmVkLnByZXBlbmQoJHNlYXJjaCk7XG5cbiAgICByZXR1cm4gJHJlbmRlcmVkO1xuICB9O1xuXG4gIFNlYXJjaC5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHZhciByZXN1bHRzSWQgPSBjb250YWluZXIuaWQgKyAnLXJlc3VsdHMnO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcblxuICAgIHRoaXMuJHNlYXJjaC5vbigna2V5ZG93bicsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYudHJpZ2dlcigna2V5cHJlc3MnLCBldnQpO1xuXG4gICAgICBzZWxmLl9rZXlVcFByZXZlbnRlZCA9IGV2dC5pc0RlZmF1bHRQcmV2ZW50ZWQoKTtcbiAgICB9KTtcblxuICAgIC8vIFdvcmthcm91bmQgZm9yIGJyb3dzZXJzIHdoaWNoIGRvIG5vdCBzdXBwb3J0IHRoZSBgaW5wdXRgIGV2ZW50XG4gICAgLy8gVGhpcyB3aWxsIHByZXZlbnQgZG91YmxlLXRyaWdnZXJpbmcgb2YgZXZlbnRzIGZvciBicm93c2VycyB3aGljaCBzdXBwb3J0XG4gICAgLy8gYm90aCB0aGUgYGtleXVwYCBhbmQgYGlucHV0YCBldmVudHMuXG4gICAgdGhpcy4kc2VhcmNoLm9uKCdpbnB1dCcsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIC8vIFVuYmluZCB0aGUgZHVwbGljYXRlZCBga2V5dXBgIGV2ZW50XG4gICAgICAkKHRoaXMpLm9mZigna2V5dXAnKTtcbiAgICB9KTtcblxuICAgIHRoaXMuJHNlYXJjaC5vbigna2V5dXAgaW5wdXQnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBzZWxmLmhhbmRsZVNlYXJjaChldnQpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdvcGVuJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi4kc2VhcmNoLmF0dHIoJ3RhYmluZGV4JywgMCk7XG4gICAgICBzZWxmLiRzZWFyY2guYXR0cignYXJpYS1jb250cm9scycsIHJlc3VsdHNJZCk7XG5cbiAgICAgIHNlbGYuJHNlYXJjaC50cmlnZ2VyKCdmb2N1cycpO1xuXG4gICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNlbGYuJHNlYXJjaC50cmlnZ2VyKCdmb2N1cycpO1xuICAgICAgfSwgMCk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi4kc2VhcmNoLmF0dHIoJ3RhYmluZGV4JywgLTEpO1xuICAgICAgc2VsZi4kc2VhcmNoLnJlbW92ZUF0dHIoJ2FyaWEtY29udHJvbHMnKTtcbiAgICAgIHNlbGYuJHNlYXJjaC5yZW1vdmVBdHRyKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcblxuICAgICAgc2VsZi4kc2VhcmNoLnZhbCgnJyk7XG4gICAgICBzZWxmLiRzZWFyY2gudHJpZ2dlcignYmx1cicpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdmb2N1cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghY29udGFpbmVyLmlzT3BlbigpKSB7XG4gICAgICAgIHNlbGYuJHNlYXJjaC50cmlnZ2VyKCdmb2N1cycpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOmFsbCcsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIGlmIChwYXJhbXMucXVlcnkudGVybSA9PSBudWxsIHx8IHBhcmFtcy5xdWVyeS50ZXJtID09PSAnJykge1xuICAgICAgICB2YXIgc2hvd1NlYXJjaCA9IHNlbGYuc2hvd1NlYXJjaChwYXJhbXMpO1xuXG4gICAgICAgIGlmIChzaG93U2VhcmNoKSB7XG4gICAgICAgICAgc2VsZi4kc2VhcmNoQ29udGFpbmVyWzBdLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDItc2VhcmNoLS1oaWRlJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VsZi4kc2VhcmNoQ29udGFpbmVyWzBdLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdDItc2VhcmNoLS1oaWRlJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czpmb2N1cycsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIGlmIChwYXJhbXMuZGF0YS5fcmVzdWx0SWQpIHtcbiAgICAgICAgc2VsZi4kc2VhcmNoLmF0dHIoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcsIHBhcmFtcy5kYXRhLl9yZXN1bHRJZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxmLiRzZWFyY2gucmVtb3ZlQXR0cignYXJpYS1hY3RpdmVkZXNjZW5kYW50Jyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgU2VhcmNoLnByb3RvdHlwZS5oYW5kbGVTZWFyY2ggPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgaWYgKCF0aGlzLl9rZXlVcFByZXZlbnRlZCkge1xuICAgICAgdmFyIGlucHV0ID0gdGhpcy4kc2VhcmNoLnZhbCgpO1xuXG4gICAgICB0aGlzLnRyaWdnZXIoJ3F1ZXJ5Jywge1xuICAgICAgICB0ZXJtOiBpbnB1dFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fa2V5VXBQcmV2ZW50ZWQgPSBmYWxzZTtcbiAgfTtcblxuICBTZWFyY2gucHJvdG90eXBlLnNob3dTZWFyY2ggPSBmdW5jdGlvbiAoXywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgcmV0dXJuIFNlYXJjaDtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZHJvcGRvd24vaGlkZVBsYWNlaG9sZGVyJyxbXG5cbl0sIGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gSGlkZVBsYWNlaG9sZGVyIChkZWNvcmF0ZWQsICRlbGVtZW50LCBvcHRpb25zLCBkYXRhQWRhcHRlcikge1xuICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLm5vcm1hbGl6ZVBsYWNlaG9sZGVyKG9wdGlvbnMuZ2V0KCdwbGFjZWhvbGRlcicpKTtcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsICRlbGVtZW50LCBvcHRpb25zLCBkYXRhQWRhcHRlcik7XG4gIH1cblxuICBIaWRlUGxhY2Vob2xkZXIucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGRhdGEpIHtcbiAgICBkYXRhLnJlc3VsdHMgPSB0aGlzLnJlbW92ZVBsYWNlaG9sZGVyKGRhdGEucmVzdWx0cyk7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBkYXRhKTtcbiAgfTtcblxuICBIaWRlUGxhY2Vob2xkZXIucHJvdG90eXBlLm5vcm1hbGl6ZVBsYWNlaG9sZGVyID0gZnVuY3Rpb24gKF8sIHBsYWNlaG9sZGVyKSB7XG4gICAgaWYgKHR5cGVvZiBwbGFjZWhvbGRlciA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHBsYWNlaG9sZGVyID0ge1xuICAgICAgICBpZDogJycsXG4gICAgICAgIHRleHQ6IHBsYWNlaG9sZGVyXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBwbGFjZWhvbGRlcjtcbiAgfTtcblxuICBIaWRlUGxhY2Vob2xkZXIucHJvdG90eXBlLnJlbW92ZVBsYWNlaG9sZGVyID0gZnVuY3Rpb24gKF8sIGRhdGEpIHtcbiAgICB2YXIgbW9kaWZpZWREYXRhID0gZGF0YS5zbGljZSgwKTtcblxuICAgIGZvciAodmFyIGQgPSBkYXRhLmxlbmd0aCAtIDE7IGQgPj0gMDsgZC0tKSB7XG4gICAgICB2YXIgaXRlbSA9IGRhdGFbZF07XG5cbiAgICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyLmlkID09PSBpdGVtLmlkKSB7XG4gICAgICAgIG1vZGlmaWVkRGF0YS5zcGxpY2UoZCwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZGlmaWVkRGF0YTtcbiAgfTtcblxuICByZXR1cm4gSGlkZVBsYWNlaG9sZGVyO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kcm9wZG93bi9pbmZpbml0ZVNjcm9sbCcsW1xuICAnanF1ZXJ5J1xuXSwgZnVuY3Rpb24gKCQpIHtcbiAgZnVuY3Rpb24gSW5maW5pdGVTY3JvbGwgKGRlY29yYXRlZCwgJGVsZW1lbnQsIG9wdGlvbnMsIGRhdGFBZGFwdGVyKSB7XG4gICAgdGhpcy5sYXN0UGFyYW1zID0ge307XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZWxlbWVudCwgb3B0aW9ucywgZGF0YUFkYXB0ZXIpO1xuXG4gICAgdGhpcy4kbG9hZGluZ01vcmUgPSB0aGlzLmNyZWF0ZUxvYWRpbmdNb3JlKCk7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gIH1cblxuICBJbmZpbml0ZVNjcm9sbC5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgZGF0YSkge1xuICAgIHRoaXMuJGxvYWRpbmdNb3JlLnJlbW92ZSgpO1xuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgZGF0YSk7XG5cbiAgICBpZiAodGhpcy5zaG93TG9hZGluZ01vcmUoZGF0YSkpIHtcbiAgICAgIHRoaXMuJHJlc3VsdHMuYXBwZW5kKHRoaXMuJGxvYWRpbmdNb3JlKTtcbiAgICAgIHRoaXMubG9hZE1vcmVJZk5lZWRlZCgpO1xuICAgIH1cbiAgfTtcblxuICBJbmZpbml0ZVNjcm9sbC5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIGNvbnRhaW5lciwgJGNvbnRhaW5lcik7XG5cbiAgICBjb250YWluZXIub24oJ3F1ZXJ5JywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgc2VsZi5sYXN0UGFyYW1zID0gcGFyYW1zO1xuICAgICAgc2VsZi5sb2FkaW5nID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigncXVlcnk6YXBwZW5kJywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgc2VsZi5sYXN0UGFyYW1zID0gcGFyYW1zO1xuICAgICAgc2VsZi5sb2FkaW5nID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIHRoaXMuJHJlc3VsdHMub24oJ3Njcm9sbCcsIHRoaXMubG9hZE1vcmVJZk5lZWRlZC5iaW5kKHRoaXMpKTtcbiAgfTtcblxuICBJbmZpbml0ZVNjcm9sbC5wcm90b3R5cGUubG9hZE1vcmVJZk5lZWRlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaXNMb2FkTW9yZVZpc2libGUgPSAkLmNvbnRhaW5zKFxuICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFxuICAgICAgdGhpcy4kbG9hZGluZ01vcmVbMF1cbiAgICApO1xuXG4gICAgaWYgKHRoaXMubG9hZGluZyB8fCAhaXNMb2FkTW9yZVZpc2libGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY3VycmVudE9mZnNldCA9IHRoaXMuJHJlc3VsdHMub2Zmc2V0KCkudG9wICtcbiAgICAgIHRoaXMuJHJlc3VsdHMub3V0ZXJIZWlnaHQoZmFsc2UpO1xuICAgIHZhciBsb2FkaW5nTW9yZU9mZnNldCA9IHRoaXMuJGxvYWRpbmdNb3JlLm9mZnNldCgpLnRvcCArXG4gICAgICB0aGlzLiRsb2FkaW5nTW9yZS5vdXRlckhlaWdodChmYWxzZSk7XG5cbiAgICBpZiAoY3VycmVudE9mZnNldCArIDUwID49IGxvYWRpbmdNb3JlT2Zmc2V0KSB7XG4gICAgICB0aGlzLmxvYWRNb3JlKCk7XG4gICAgfVxuICB9O1xuXG4gIEluZmluaXRlU2Nyb2xsLnByb3RvdHlwZS5sb2FkTW9yZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuXG4gICAgdmFyIHBhcmFtcyA9ICQuZXh0ZW5kKHt9LCB7cGFnZTogMX0sIHRoaXMubGFzdFBhcmFtcyk7XG5cbiAgICBwYXJhbXMucGFnZSsrO1xuXG4gICAgdGhpcy50cmlnZ2VyKCdxdWVyeTphcHBlbmQnLCBwYXJhbXMpO1xuICB9O1xuXG4gIEluZmluaXRlU2Nyb2xsLnByb3RvdHlwZS5zaG93TG9hZGluZ01vcmUgPSBmdW5jdGlvbiAoXywgZGF0YSkge1xuICAgIHJldHVybiBkYXRhLnBhZ2luYXRpb24gJiYgZGF0YS5wYWdpbmF0aW9uLm1vcmU7XG4gIH07XG5cbiAgSW5maW5pdGVTY3JvbGwucHJvdG90eXBlLmNyZWF0ZUxvYWRpbmdNb3JlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkb3B0aW9uID0gJChcbiAgICAgICc8bGkgJyArXG4gICAgICAnY2xhc3M9XCJzZWxlY3QyLXJlc3VsdHNfX29wdGlvbiBzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tbG9hZC1tb3JlXCInICtcbiAgICAgICdyb2xlPVwib3B0aW9uXCIgYXJpYS1kaXNhYmxlZD1cInRydWVcIj48L2xpPidcbiAgICApO1xuXG4gICAgdmFyIG1lc3NhZ2UgPSB0aGlzLm9wdGlvbnMuZ2V0KCd0cmFuc2xhdGlvbnMnKS5nZXQoJ2xvYWRpbmdNb3JlJyk7XG5cbiAgICAkb3B0aW9uLmh0bWwobWVzc2FnZSh0aGlzLmxhc3RQYXJhbXMpKTtcblxuICAgIHJldHVybiAkb3B0aW9uO1xuICB9O1xuXG4gIHJldHVybiBJbmZpbml0ZVNjcm9sbDtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZHJvcGRvd24vYXR0YWNoQm9keScsW1xuICAnanF1ZXJ5JyxcbiAgJy4uL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKCQsIFV0aWxzKSB7XG4gIGZ1bmN0aW9uIEF0dGFjaEJvZHkgKGRlY29yYXRlZCwgJGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLiRkcm9wZG93blBhcmVudCA9ICQob3B0aW9ucy5nZXQoJ2Ryb3Bkb3duUGFyZW50JykgfHwgZG9jdW1lbnQuYm9keSk7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZWxlbWVudCwgb3B0aW9ucyk7XG4gIH1cblxuICBBdHRhY2hCb2R5LnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcblxuICAgIGNvbnRhaW5lci5vbignb3BlbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuX3Nob3dEcm9wZG93bigpO1xuICAgICAgc2VsZi5fYXR0YWNoUG9zaXRpb25pbmdIYW5kbGVyKGNvbnRhaW5lcik7XG5cbiAgICAgIC8vIE11c3QgYmluZCBhZnRlciB0aGUgcmVzdWx0cyBoYW5kbGVycyB0byBlbnN1cmUgY29ycmVjdCBzaXppbmdcbiAgICAgIHNlbGYuX2JpbmRDb250YWluZXJSZXN1bHRIYW5kbGVycyhjb250YWluZXIpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuX2hpZGVEcm9wZG93bigpO1xuICAgICAgc2VsZi5fZGV0YWNoUG9zaXRpb25pbmdIYW5kbGVyKGNvbnRhaW5lcik7XG4gICAgfSk7XG5cbiAgICB0aGlzLiRkcm9wZG93bkNvbnRhaW5lci5vbignbW91c2Vkb3duJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0pO1xuICB9O1xuXG4gIEF0dGFjaEJvZHkucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoZGVjb3JhdGVkKSB7XG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcyk7XG5cbiAgICB0aGlzLiRkcm9wZG93bkNvbnRhaW5lci5yZW1vdmUoKTtcbiAgfTtcblxuICBBdHRhY2hCb2R5LnByb3RvdHlwZS5wb3NpdGlvbiA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsICRkcm9wZG93biwgJGNvbnRhaW5lcikge1xuICAgIC8vIENsb25lIGFsbCBvZiB0aGUgY29udGFpbmVyIGNsYXNzZXNcbiAgICAkZHJvcGRvd24uYXR0cignY2xhc3MnLCAkY29udGFpbmVyLmF0dHIoJ2NsYXNzJykpO1xuXG4gICAgJGRyb3Bkb3duWzBdLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDInKTtcbiAgICAkZHJvcGRvd25bMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1jb250YWluZXItLW9wZW4nKTtcblxuICAgICRkcm9wZG93bi5jc3Moe1xuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICB0b3A6IC05OTk5OTlcbiAgICB9KTtcblxuICAgIHRoaXMuJGNvbnRhaW5lciA9ICRjb250YWluZXI7XG4gIH07XG5cbiAgQXR0YWNoQm9keS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKGRlY29yYXRlZCkge1xuICAgIHZhciAkY29udGFpbmVyID0gJCgnPHNwYW4+PC9zcGFuPicpO1xuXG4gICAgdmFyICRkcm9wZG93biA9IGRlY29yYXRlZC5jYWxsKHRoaXMpO1xuICAgICRjb250YWluZXIuYXBwZW5kKCRkcm9wZG93bik7XG5cbiAgICB0aGlzLiRkcm9wZG93bkNvbnRhaW5lciA9ICRjb250YWluZXI7XG5cbiAgICByZXR1cm4gJGNvbnRhaW5lcjtcbiAgfTtcblxuICBBdHRhY2hCb2R5LnByb3RvdHlwZS5faGlkZURyb3Bkb3duID0gZnVuY3Rpb24gKGRlY29yYXRlZCkge1xuICAgIHRoaXMuJGRyb3Bkb3duQ29udGFpbmVyLmRldGFjaCgpO1xuICB9O1xuXG4gIEF0dGFjaEJvZHkucHJvdG90eXBlLl9iaW5kQ29udGFpbmVyUmVzdWx0SGFuZGxlcnMgPVxuICAgICAgZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyKSB7XG5cbiAgICAvLyBUaGVzZSBzaG91bGQgb25seSBiZSBib3VuZCBvbmNlXG4gICAgaWYgKHRoaXMuX2NvbnRhaW5lclJlc3VsdHNIYW5kbGVyc0JvdW5kKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOmFsbCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuX3Bvc2l0aW9uRHJvcGRvd24oKTtcbiAgICAgIHNlbGYuX3Jlc2l6ZURyb3Bkb3duKCk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6YXBwZW5kJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi5fcG9zaXRpb25Ecm9wZG93bigpO1xuICAgICAgc2VsZi5fcmVzaXplRHJvcGRvd24oKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czptZXNzYWdlJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi5fcG9zaXRpb25Ecm9wZG93bigpO1xuICAgICAgc2VsZi5fcmVzaXplRHJvcGRvd24oKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignc2VsZWN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi5fcG9zaXRpb25Ecm9wZG93bigpO1xuICAgICAgc2VsZi5fcmVzaXplRHJvcGRvd24oKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigndW5zZWxlY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLl9wb3NpdGlvbkRyb3Bkb3duKCk7XG4gICAgICBzZWxmLl9yZXNpemVEcm9wZG93bigpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fY29udGFpbmVyUmVzdWx0c0hhbmRsZXJzQm91bmQgPSB0cnVlO1xuICB9O1xuXG4gIEF0dGFjaEJvZHkucHJvdG90eXBlLl9hdHRhY2hQb3NpdGlvbmluZ0hhbmRsZXIgPVxuICAgICAgZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyIHNjcm9sbEV2ZW50ID0gJ3Njcm9sbC5zZWxlY3QyLicgKyBjb250YWluZXIuaWQ7XG4gICAgdmFyIHJlc2l6ZUV2ZW50ID0gJ3Jlc2l6ZS5zZWxlY3QyLicgKyBjb250YWluZXIuaWQ7XG4gICAgdmFyIG9yaWVudGF0aW9uRXZlbnQgPSAnb3JpZW50YXRpb25jaGFuZ2Uuc2VsZWN0Mi4nICsgY29udGFpbmVyLmlkO1xuXG4gICAgdmFyICR3YXRjaGVycyA9IHRoaXMuJGNvbnRhaW5lci5wYXJlbnRzKCkuZmlsdGVyKFV0aWxzLmhhc1Njcm9sbCk7XG4gICAgJHdhdGNoZXJzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgVXRpbHMuU3RvcmVEYXRhKHRoaXMsICdzZWxlY3QyLXNjcm9sbC1wb3NpdGlvbicsIHtcbiAgICAgICAgeDogJCh0aGlzKS5zY3JvbGxMZWZ0KCksXG4gICAgICAgIHk6ICQodGhpcykuc2Nyb2xsVG9wKClcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgJHdhdGNoZXJzLm9uKHNjcm9sbEV2ZW50LCBmdW5jdGlvbiAoZXYpIHtcbiAgICAgIHZhciBwb3NpdGlvbiA9IFV0aWxzLkdldERhdGEodGhpcywgJ3NlbGVjdDItc2Nyb2xsLXBvc2l0aW9uJyk7XG4gICAgICAkKHRoaXMpLnNjcm9sbFRvcChwb3NpdGlvbi55KTtcbiAgICB9KTtcblxuICAgICQod2luZG93KS5vbihzY3JvbGxFdmVudCArICcgJyArIHJlc2l6ZUV2ZW50ICsgJyAnICsgb3JpZW50YXRpb25FdmVudCxcbiAgICAgIGZ1bmN0aW9uIChlKSB7XG4gICAgICBzZWxmLl9wb3NpdGlvbkRyb3Bkb3duKCk7XG4gICAgICBzZWxmLl9yZXNpemVEcm9wZG93bigpO1xuICAgIH0pO1xuICB9O1xuXG4gIEF0dGFjaEJvZHkucHJvdG90eXBlLl9kZXRhY2hQb3NpdGlvbmluZ0hhbmRsZXIgPVxuICAgICAgZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyKSB7XG4gICAgdmFyIHNjcm9sbEV2ZW50ID0gJ3Njcm9sbC5zZWxlY3QyLicgKyBjb250YWluZXIuaWQ7XG4gICAgdmFyIHJlc2l6ZUV2ZW50ID0gJ3Jlc2l6ZS5zZWxlY3QyLicgKyBjb250YWluZXIuaWQ7XG4gICAgdmFyIG9yaWVudGF0aW9uRXZlbnQgPSAnb3JpZW50YXRpb25jaGFuZ2Uuc2VsZWN0Mi4nICsgY29udGFpbmVyLmlkO1xuXG4gICAgdmFyICR3YXRjaGVycyA9IHRoaXMuJGNvbnRhaW5lci5wYXJlbnRzKCkuZmlsdGVyKFV0aWxzLmhhc1Njcm9sbCk7XG4gICAgJHdhdGNoZXJzLm9mZihzY3JvbGxFdmVudCk7XG5cbiAgICAkKHdpbmRvdykub2ZmKHNjcm9sbEV2ZW50ICsgJyAnICsgcmVzaXplRXZlbnQgKyAnICcgKyBvcmllbnRhdGlvbkV2ZW50KTtcbiAgfTtcblxuICBBdHRhY2hCb2R5LnByb3RvdHlwZS5fcG9zaXRpb25Ecm9wZG93biA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgJHdpbmRvdyA9ICQod2luZG93KTtcblxuICAgIHZhciBpc0N1cnJlbnRseUFib3ZlID0gdGhpcy4kZHJvcGRvd25bMF0uY2xhc3NMaXN0XG4gICAgICAuY29udGFpbnMoJ3NlbGVjdDItZHJvcGRvd24tLWFib3ZlJyk7XG4gICAgdmFyIGlzQ3VycmVudGx5QmVsb3cgPSB0aGlzLiRkcm9wZG93blswXS5jbGFzc0xpc3RcbiAgICAgIC5jb250YWlucygnc2VsZWN0Mi1kcm9wZG93bi0tYmVsb3cnKTtcblxuICAgIHZhciBuZXdEaXJlY3Rpb24gPSBudWxsO1xuXG4gICAgdmFyIG9mZnNldCA9IHRoaXMuJGNvbnRhaW5lci5vZmZzZXQoKTtcblxuICAgIG9mZnNldC5ib3R0b20gPSBvZmZzZXQudG9wICsgdGhpcy4kY29udGFpbmVyLm91dGVySGVpZ2h0KGZhbHNlKTtcblxuICAgIHZhciBjb250YWluZXIgPSB7XG4gICAgICBoZWlnaHQ6IHRoaXMuJGNvbnRhaW5lci5vdXRlckhlaWdodChmYWxzZSlcbiAgICB9O1xuXG4gICAgY29udGFpbmVyLnRvcCA9IG9mZnNldC50b3A7XG4gICAgY29udGFpbmVyLmJvdHRvbSA9IG9mZnNldC50b3AgKyBjb250YWluZXIuaGVpZ2h0O1xuXG4gICAgdmFyIGRyb3Bkb3duID0ge1xuICAgICAgaGVpZ2h0OiB0aGlzLiRkcm9wZG93bi5vdXRlckhlaWdodChmYWxzZSlcbiAgICB9O1xuXG4gICAgdmFyIHZpZXdwb3J0ID0ge1xuICAgICAgdG9wOiAkd2luZG93LnNjcm9sbFRvcCgpLFxuICAgICAgYm90dG9tOiAkd2luZG93LnNjcm9sbFRvcCgpICsgJHdpbmRvdy5oZWlnaHQoKVxuICAgIH07XG5cbiAgICB2YXIgZW5vdWdoUm9vbUFib3ZlID0gdmlld3BvcnQudG9wIDwgKG9mZnNldC50b3AgLSBkcm9wZG93bi5oZWlnaHQpO1xuICAgIHZhciBlbm91Z2hSb29tQmVsb3cgPSB2aWV3cG9ydC5ib3R0b20gPiAob2Zmc2V0LmJvdHRvbSArIGRyb3Bkb3duLmhlaWdodCk7XG5cbiAgICB2YXIgY3NzID0ge1xuICAgICAgbGVmdDogb2Zmc2V0LmxlZnQsXG4gICAgICB0b3A6IGNvbnRhaW5lci5ib3R0b21cbiAgICB9O1xuXG4gICAgLy8gRGV0ZXJtaW5lIHdoYXQgdGhlIHBhcmVudCBlbGVtZW50IGlzIHRvIHVzZSBmb3IgY2FsY3VsYXRpbmcgdGhlIG9mZnNldFxuICAgIHZhciAkb2Zmc2V0UGFyZW50ID0gdGhpcy4kZHJvcGRvd25QYXJlbnQ7XG5cbiAgICAvLyBGb3Igc3RhdGljYWxseSBwb3NpdGlvbmVkIGVsZW1lbnRzLCB3ZSBuZWVkIHRvIGdldCB0aGUgZWxlbWVudFxuICAgIC8vIHRoYXQgaXMgZGV0ZXJtaW5pbmcgdGhlIG9mZnNldFxuICAgIGlmICgkb2Zmc2V0UGFyZW50LmNzcygncG9zaXRpb24nKSA9PT0gJ3N0YXRpYycpIHtcbiAgICAgICRvZmZzZXRQYXJlbnQgPSAkb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVudCgpO1xuICAgIH1cblxuICAgIHZhciBwYXJlbnRPZmZzZXQgPSB7XG4gICAgICB0b3A6IDAsXG4gICAgICBsZWZ0OiAwXG4gICAgfTtcblxuICAgIGlmIChcbiAgICAgICQuY29udGFpbnMoZG9jdW1lbnQuYm9keSwgJG9mZnNldFBhcmVudFswXSkgfHxcbiAgICAgICRvZmZzZXRQYXJlbnRbMF0uaXNDb25uZWN0ZWRcbiAgICAgICkge1xuICAgICAgcGFyZW50T2Zmc2V0ID0gJG9mZnNldFBhcmVudC5vZmZzZXQoKTtcbiAgICB9XG5cbiAgICBjc3MudG9wIC09IHBhcmVudE9mZnNldC50b3A7XG4gICAgY3NzLmxlZnQgLT0gcGFyZW50T2Zmc2V0LmxlZnQ7XG5cbiAgICBpZiAoIWlzQ3VycmVudGx5QWJvdmUgJiYgIWlzQ3VycmVudGx5QmVsb3cpIHtcbiAgICAgIG5ld0RpcmVjdGlvbiA9ICdiZWxvdyc7XG4gICAgfVxuXG4gICAgaWYgKCFlbm91Z2hSb29tQmVsb3cgJiYgZW5vdWdoUm9vbUFib3ZlICYmICFpc0N1cnJlbnRseUFib3ZlKSB7XG4gICAgICBuZXdEaXJlY3Rpb24gPSAnYWJvdmUnO1xuICAgIH0gZWxzZSBpZiAoIWVub3VnaFJvb21BYm92ZSAmJiBlbm91Z2hSb29tQmVsb3cgJiYgaXNDdXJyZW50bHlBYm92ZSkge1xuICAgICAgbmV3RGlyZWN0aW9uID0gJ2JlbG93JztcbiAgICB9XG5cbiAgICBpZiAobmV3RGlyZWN0aW9uID09ICdhYm92ZScgfHxcbiAgICAgIChpc0N1cnJlbnRseUFib3ZlICYmIG5ld0RpcmVjdGlvbiAhPT0gJ2JlbG93JykpIHtcbiAgICAgIGNzcy50b3AgPSBjb250YWluZXIudG9wIC0gcGFyZW50T2Zmc2V0LnRvcCAtIGRyb3Bkb3duLmhlaWdodDtcbiAgICB9XG5cbiAgICBpZiAobmV3RGlyZWN0aW9uICE9IG51bGwpIHtcbiAgICAgIHRoaXMuJGRyb3Bkb3duWzBdLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDItZHJvcGRvd24tLWJlbG93Jyk7XG4gICAgICB0aGlzLiRkcm9wZG93blswXS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLWRyb3Bkb3duLS1hYm92ZScpO1xuICAgICAgdGhpcy4kZHJvcGRvd25bMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1kcm9wZG93bi0tJyArIG5ld0RpcmVjdGlvbik7XG5cbiAgICAgIHRoaXMuJGNvbnRhaW5lclswXS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLWNvbnRhaW5lci0tYmVsb3cnKTtcbiAgICAgIHRoaXMuJGNvbnRhaW5lclswXS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLWNvbnRhaW5lci0tYWJvdmUnKTtcbiAgICAgIHRoaXMuJGNvbnRhaW5lclswXS5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLWNvbnRhaW5lci0tJyArIG5ld0RpcmVjdGlvbik7XG4gICAgfVxuXG4gICAgdGhpcy4kZHJvcGRvd25Db250YWluZXIuY3NzKGNzcyk7XG4gIH07XG5cbiAgQXR0YWNoQm9keS5wcm90b3R5cGUuX3Jlc2l6ZURyb3Bkb3duID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBjc3MgPSB7XG4gICAgICB3aWR0aDogdGhpcy4kY29udGFpbmVyLm91dGVyV2lkdGgoZmFsc2UpICsgJ3B4J1xuICAgIH07XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmdldCgnZHJvcGRvd25BdXRvV2lkdGgnKSkge1xuICAgICAgY3NzLm1pbldpZHRoID0gY3NzLndpZHRoO1xuICAgICAgY3NzLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICAgIGNzcy53aWR0aCA9ICdhdXRvJztcbiAgICB9XG5cbiAgICB0aGlzLiRkcm9wZG93bi5jc3MoY3NzKTtcbiAgfTtcblxuICBBdHRhY2hCb2R5LnByb3RvdHlwZS5fc2hvd0Ryb3Bkb3duID0gZnVuY3Rpb24gKGRlY29yYXRlZCkge1xuICAgIHRoaXMuJGRyb3Bkb3duQ29udGFpbmVyLmFwcGVuZFRvKHRoaXMuJGRyb3Bkb3duUGFyZW50KTtcblxuICAgIHRoaXMuX3Bvc2l0aW9uRHJvcGRvd24oKTtcbiAgICB0aGlzLl9yZXNpemVEcm9wZG93bigpO1xuICB9O1xuXG4gIHJldHVybiBBdHRhY2hCb2R5O1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kcm9wZG93bi9taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCcsW1xuXG5dLCBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGNvdW50UmVzdWx0cyAoZGF0YSkge1xuICAgIHZhciBjb3VudCA9IDA7XG5cbiAgICBmb3IgKHZhciBkID0gMDsgZCA8IGRhdGEubGVuZ3RoOyBkKyspIHtcbiAgICAgIHZhciBpdGVtID0gZGF0YVtkXTtcblxuICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgY291bnQgKz0gY291bnRSZXN1bHRzKGl0ZW0uY2hpbGRyZW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY291bnQrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICBmdW5jdGlvbiBNaW5pbXVtUmVzdWx0c0ZvclNlYXJjaCAoZGVjb3JhdGVkLCAkZWxlbWVudCwgb3B0aW9ucywgZGF0YUFkYXB0ZXIpIHtcbiAgICB0aGlzLm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoID0gb3B0aW9ucy5nZXQoJ21pbmltdW1SZXN1bHRzRm9yU2VhcmNoJyk7XG5cbiAgICBpZiAodGhpcy5taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCA8IDApIHtcbiAgICAgIHRoaXMubWluaW11bVJlc3VsdHNGb3JTZWFyY2ggPSBJbmZpbml0eTtcbiAgICB9XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZWxlbWVudCwgb3B0aW9ucywgZGF0YUFkYXB0ZXIpO1xuICB9XG5cbiAgTWluaW11bVJlc3VsdHNGb3JTZWFyY2gucHJvdG90eXBlLnNob3dTZWFyY2ggPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBwYXJhbXMpIHtcbiAgICBpZiAoY291bnRSZXN1bHRzKHBhcmFtcy5kYXRhLnJlc3VsdHMpIDwgdGhpcy5taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBwYXJhbXMpO1xuICB9O1xuXG4gIHJldHVybiBNaW5pbXVtUmVzdWx0c0ZvclNlYXJjaDtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZHJvcGRvd24vc2VsZWN0T25DbG9zZScsW1xuICAnLi4vdXRpbHMnXG5dLCBmdW5jdGlvbiAoVXRpbHMpIHtcbiAgZnVuY3Rpb24gU2VsZWN0T25DbG9zZSAoKSB7IH1cblxuICBTZWxlY3RPbkNsb3NlLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcblxuICAgIGNvbnRhaW5lci5vbignY2xvc2UnLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBzZWxmLl9oYW5kbGVTZWxlY3RPbkNsb3NlKHBhcmFtcyk7XG4gICAgfSk7XG4gIH07XG5cbiAgU2VsZWN0T25DbG9zZS5wcm90b3R5cGUuX2hhbmRsZVNlbGVjdE9uQ2xvc2UgPSBmdW5jdGlvbiAoXywgcGFyYW1zKSB7XG4gICAgaWYgKHBhcmFtcyAmJiBwYXJhbXMub3JpZ2luYWxTZWxlY3QyRXZlbnQgIT0gbnVsbCkge1xuICAgICAgdmFyIGV2ZW50ID0gcGFyYW1zLm9yaWdpbmFsU2VsZWN0MkV2ZW50O1xuXG4gICAgICAvLyBEb24ndCBzZWxlY3QgYW4gaXRlbSBpZiB0aGUgY2xvc2UgZXZlbnQgd2FzIHRyaWdnZXJlZCBmcm9tIGEgc2VsZWN0IG9yXG4gICAgICAvLyB1bnNlbGVjdCBldmVudFxuICAgICAgaWYgKGV2ZW50Ll90eXBlID09PSAnc2VsZWN0JyB8fCBldmVudC5fdHlwZSA9PT0gJ3Vuc2VsZWN0Jykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyICRoaWdobGlnaHRlZFJlc3VsdHMgPSB0aGlzLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpO1xuXG4gICAgLy8gT25seSBzZWxlY3QgaGlnaGxpZ2h0ZWQgcmVzdWx0c1xuICAgIGlmICgkaGlnaGxpZ2h0ZWRSZXN1bHRzLmxlbmd0aCA8IDEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgZGF0YSA9IFV0aWxzLkdldERhdGEoJGhpZ2hsaWdodGVkUmVzdWx0c1swXSwgJ2RhdGEnKTtcblxuICAgIC8vIERvbid0IHJlLXNlbGVjdCBhbHJlYWR5IHNlbGVjdGVkIHJlc3VsdGVcbiAgICBpZiAoXG4gICAgICAoZGF0YS5lbGVtZW50ICE9IG51bGwgJiYgZGF0YS5lbGVtZW50LnNlbGVjdGVkKSB8fFxuICAgICAgKGRhdGEuZWxlbWVudCA9PSBudWxsICYmIGRhdGEuc2VsZWN0ZWQpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50cmlnZ2VyKCdzZWxlY3QnLCB7XG4gICAgICAgIGRhdGE6IGRhdGFcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gU2VsZWN0T25DbG9zZTtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZHJvcGRvd24vY2xvc2VPblNlbGVjdCcsW1xuXG5dLCBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIENsb3NlT25TZWxlY3QgKCkgeyB9XG5cbiAgQ2xvc2VPblNlbGVjdC5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIGNvbnRhaW5lciwgJGNvbnRhaW5lcik7XG5cbiAgICBjb250YWluZXIub24oJ3NlbGVjdCcsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYuX3NlbGVjdFRyaWdnZXJlZChldnQpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCd1bnNlbGVjdCcsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYuX3NlbGVjdFRyaWdnZXJlZChldnQpO1xuICAgIH0pO1xuICB9O1xuXG4gIENsb3NlT25TZWxlY3QucHJvdG90eXBlLl9zZWxlY3RUcmlnZ2VyZWQgPSBmdW5jdGlvbiAoXywgZXZ0KSB7XG4gICAgdmFyIG9yaWdpbmFsRXZlbnQgPSBldnQub3JpZ2luYWxFdmVudDtcblxuICAgIC8vIERvbid0IGNsb3NlIGlmIHRoZSBjb250cm9sIGtleSBpcyBiZWluZyBoZWxkXG4gICAgaWYgKG9yaWdpbmFsRXZlbnQgJiYgKG9yaWdpbmFsRXZlbnQuY3RybEtleSB8fCBvcmlnaW5hbEV2ZW50Lm1ldGFLZXkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50cmlnZ2VyKCdjbG9zZScsIHtcbiAgICAgIG9yaWdpbmFsRXZlbnQ6IG9yaWdpbmFsRXZlbnQsXG4gICAgICBvcmlnaW5hbFNlbGVjdDJFdmVudDogZXZ0XG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIENsb3NlT25TZWxlY3Q7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2Ryb3Bkb3duL2Ryb3Bkb3duQ3NzJyxbXG4gICcuLi91dGlscydcbl0sIGZ1bmN0aW9uIChVdGlscykge1xuICBmdW5jdGlvbiBEcm9wZG93bkNTUyAoKSB7IH1cblxuICBEcm9wZG93bkNTUy5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKGRlY29yYXRlZCkge1xuICAgIHZhciAkZHJvcGRvd24gPSBkZWNvcmF0ZWQuY2FsbCh0aGlzKTtcblxuICAgIHZhciBkcm9wZG93bkNzc0NsYXNzID0gdGhpcy5vcHRpb25zLmdldCgnZHJvcGRvd25Dc3NDbGFzcycpIHx8ICcnO1xuXG4gICAgaWYgKGRyb3Bkb3duQ3NzQ2xhc3MuaW5kZXhPZignOmFsbDonKSAhPT0gLTEpIHtcbiAgICAgIGRyb3Bkb3duQ3NzQ2xhc3MgPSBkcm9wZG93bkNzc0NsYXNzLnJlcGxhY2UoJzphbGw6JywgJycpO1xuXG4gICAgICBVdGlscy5jb3B5Tm9uSW50ZXJuYWxDc3NDbGFzc2VzKCRkcm9wZG93blswXSwgdGhpcy4kZWxlbWVudFswXSk7XG4gICAgfVxuXG4gICAgJGRyb3Bkb3duLmFkZENsYXNzKGRyb3Bkb3duQ3NzQ2xhc3MpO1xuXG4gICAgcmV0dXJuICRkcm9wZG93bjtcbiAgfTtcblxuICByZXR1cm4gRHJvcGRvd25DU1M7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2Ryb3Bkb3duL3RhZ3NTZWFyY2hIaWdobGlnaHQnLFtcbiAgJy4uL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKFV0aWxzKSB7XG4gIGZ1bmN0aW9uIFRhZ3NTZWFyY2hIaWdobGlnaHQgKCkgeyB9XG5cbiAgVGFnc1NlYXJjaEhpZ2hsaWdodC5wcm90b3R5cGUuaGlnaGxpZ2h0Rmlyc3RJdGVtID0gZnVuY3Rpb24gKGRlY29yYXRlZCkge1xuICAgIHZhciAkb3B0aW9ucyA9IHRoaXMuJHJlc3VsdHNcbiAgICAuZmluZChcbiAgICAgICcuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGFibGUnICtcbiAgICAgICc6bm90KC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0ZWQpJ1xuICAgICk7XG5cbiAgICBpZiAoJG9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgdmFyICRmaXJzdE9wdGlvbiA9ICRvcHRpb25zLmZpcnN0KCk7XG4gICAgICB2YXIgZGF0YSA9IFV0aWxzLkdldERhdGEoJGZpcnN0T3B0aW9uWzBdLCAnZGF0YScpO1xuICAgICAgdmFyIGZpcnN0RWxlbWVudCA9IGRhdGEuZWxlbWVudDtcblxuICAgICAgaWYgKGZpcnN0RWxlbWVudCAmJiBmaXJzdEVsZW1lbnQuZ2V0QXR0cmlidXRlKSB7XG4gICAgICAgIGlmIChmaXJzdEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXNlbGVjdDItdGFnJykgPT09ICd0cnVlJykge1xuICAgICAgICAgICRmaXJzdE9wdGlvbi50cmlnZ2VyKCdtb3VzZWVudGVyJyk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzKTtcbiAgfTtcblxuICByZXR1cm4gVGFnc1NlYXJjaEhpZ2hsaWdodDtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvaTE4bi9lbicsW10sZnVuY3Rpb24gKCkge1xuICAvLyBFbmdsaXNoXG4gIHJldHVybiB7XG4gICAgZXJyb3JMb2FkaW5nOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gJ1RoZSByZXN1bHRzIGNvdWxkIG5vdCBiZSBsb2FkZWQuJztcbiAgICB9LFxuICAgIGlucHV0VG9vTG9uZzogZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgIHZhciBvdmVyQ2hhcnMgPSBhcmdzLmlucHV0Lmxlbmd0aCAtIGFyZ3MubWF4aW11bTtcblxuICAgICAgdmFyIG1lc3NhZ2UgPSAnUGxlYXNlIGRlbGV0ZSAnICsgb3ZlckNoYXJzICsgJyBjaGFyYWN0ZXInO1xuXG4gICAgICBpZiAob3ZlckNoYXJzICE9IDEpIHtcbiAgICAgICAgbWVzc2FnZSArPSAncyc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH0sXG4gICAgaW5wdXRUb29TaG9ydDogZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgIHZhciByZW1haW5pbmdDaGFycyA9IGFyZ3MubWluaW11bSAtIGFyZ3MuaW5wdXQubGVuZ3RoO1xuXG4gICAgICB2YXIgbWVzc2FnZSA9ICdQbGVhc2UgZW50ZXIgJyArIHJlbWFpbmluZ0NoYXJzICsgJyBvciBtb3JlIGNoYXJhY3RlcnMnO1xuXG4gICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICB9LFxuICAgIGxvYWRpbmdNb3JlOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gJ0xvYWRpbmcgbW9yZSByZXN1bHRz4oCmJztcbiAgICB9LFxuICAgIG1heGltdW1TZWxlY3RlZDogZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgIHZhciBtZXNzYWdlID0gJ1lvdSBjYW4gb25seSBzZWxlY3QgJyArIGFyZ3MubWF4aW11bSArICcgaXRlbSc7XG5cbiAgICAgIGlmIChhcmdzLm1heGltdW0gIT0gMSkge1xuICAgICAgICBtZXNzYWdlICs9ICdzJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgfSxcbiAgICBub1Jlc3VsdHM6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAnTm8gcmVzdWx0cyBmb3VuZCc7XG4gICAgfSxcbiAgICBzZWFyY2hpbmc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAnU2VhcmNoaW5n4oCmJztcbiAgICB9LFxuICAgIHJlbW92ZUFsbEl0ZW1zOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gJ1JlbW92ZSBhbGwgaXRlbXMnO1xuICAgIH0sXG4gICAgcmVtb3ZlSXRlbTogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuICdSZW1vdmUgaXRlbSc7XG4gICAgfSxcbiAgICBzZWFyY2g6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuICdTZWFyY2gnO1xuICAgIH1cbiAgfTtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZGVmYXVsdHMnLFtcbiAgJ2pxdWVyeScsXG5cbiAgJy4vcmVzdWx0cycsXG5cbiAgJy4vc2VsZWN0aW9uL3NpbmdsZScsXG4gICcuL3NlbGVjdGlvbi9tdWx0aXBsZScsXG4gICcuL3NlbGVjdGlvbi9wbGFjZWhvbGRlcicsXG4gICcuL3NlbGVjdGlvbi9hbGxvd0NsZWFyJyxcbiAgJy4vc2VsZWN0aW9uL3NlYXJjaCcsXG4gICcuL3NlbGVjdGlvbi9zZWxlY3Rpb25Dc3MnLFxuICAnLi9zZWxlY3Rpb24vZXZlbnRSZWxheScsXG5cbiAgJy4vdXRpbHMnLFxuICAnLi90cmFuc2xhdGlvbicsXG4gICcuL2RpYWNyaXRpY3MnLFxuXG4gICcuL2RhdGEvc2VsZWN0JyxcbiAgJy4vZGF0YS9hcnJheScsXG4gICcuL2RhdGEvYWpheCcsXG4gICcuL2RhdGEvdGFncycsXG4gICcuL2RhdGEvdG9rZW5pemVyJyxcbiAgJy4vZGF0YS9taW5pbXVtSW5wdXRMZW5ndGgnLFxuICAnLi9kYXRhL21heGltdW1JbnB1dExlbmd0aCcsXG4gICcuL2RhdGEvbWF4aW11bVNlbGVjdGlvbkxlbmd0aCcsXG5cbiAgJy4vZHJvcGRvd24nLFxuICAnLi9kcm9wZG93bi9zZWFyY2gnLFxuICAnLi9kcm9wZG93bi9oaWRlUGxhY2Vob2xkZXInLFxuICAnLi9kcm9wZG93bi9pbmZpbml0ZVNjcm9sbCcsXG4gICcuL2Ryb3Bkb3duL2F0dGFjaEJvZHknLFxuICAnLi9kcm9wZG93bi9taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCcsXG4gICcuL2Ryb3Bkb3duL3NlbGVjdE9uQ2xvc2UnLFxuICAnLi9kcm9wZG93bi9jbG9zZU9uU2VsZWN0JyxcbiAgJy4vZHJvcGRvd24vZHJvcGRvd25Dc3MnLFxuICAnLi9kcm9wZG93bi90YWdzU2VhcmNoSGlnaGxpZ2h0JyxcblxuICAnLi9pMThuL2VuJ1xuXSwgZnVuY3Rpb24gKCQsXG5cbiAgICAgICAgICAgICBSZXN1bHRzTGlzdCxcblxuICAgICAgICAgICAgIFNpbmdsZVNlbGVjdGlvbiwgTXVsdGlwbGVTZWxlY3Rpb24sIFBsYWNlaG9sZGVyLCBBbGxvd0NsZWFyLFxuICAgICAgICAgICAgIFNlbGVjdGlvblNlYXJjaCwgU2VsZWN0aW9uQ1NTLCBFdmVudFJlbGF5LFxuXG4gICAgICAgICAgICAgVXRpbHMsIFRyYW5zbGF0aW9uLCBESUFDUklUSUNTLFxuXG4gICAgICAgICAgICAgU2VsZWN0RGF0YSwgQXJyYXlEYXRhLCBBamF4RGF0YSwgVGFncywgVG9rZW5pemVyLFxuICAgICAgICAgICAgIE1pbmltdW1JbnB1dExlbmd0aCwgTWF4aW11bUlucHV0TGVuZ3RoLCBNYXhpbXVtU2VsZWN0aW9uTGVuZ3RoLFxuXG4gICAgICAgICAgICAgRHJvcGRvd24sIERyb3Bkb3duU2VhcmNoLCBIaWRlUGxhY2Vob2xkZXIsIEluZmluaXRlU2Nyb2xsLFxuICAgICAgICAgICAgIEF0dGFjaEJvZHksIE1pbmltdW1SZXN1bHRzRm9yU2VhcmNoLCBTZWxlY3RPbkNsb3NlLCBDbG9zZU9uU2VsZWN0LFxuICAgICAgICAgICAgIERyb3Bkb3duQ1NTLCBUYWdzU2VhcmNoSGlnaGxpZ2h0LFxuXG4gICAgICAgICAgICAgRW5nbGlzaFRyYW5zbGF0aW9uKSB7XG4gIGZ1bmN0aW9uIERlZmF1bHRzICgpIHtcbiAgICB0aGlzLnJlc2V0KCk7XG4gIH1cblxuICBEZWZhdWx0cy5wcm90b3R5cGUuYXBwbHkgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgdGhpcy5kZWZhdWx0cywgb3B0aW9ucyk7XG5cbiAgICBpZiAob3B0aW9ucy5kYXRhQWRhcHRlciA9PSBudWxsKSB7XG4gICAgICBpZiAob3B0aW9ucy5hamF4ICE9IG51bGwpIHtcbiAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlciA9IEFqYXhEYXRhO1xuICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmRhdGEgIT0gbnVsbCkge1xuICAgICAgICBvcHRpb25zLmRhdGFBZGFwdGVyID0gQXJyYXlEYXRhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlciA9IFNlbGVjdERhdGE7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLm1pbmltdW1JbnB1dExlbmd0aCA+IDApIHtcbiAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YUFkYXB0ZXIsXG4gICAgICAgICAgTWluaW11bUlucHV0TGVuZ3RoXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLm1heGltdW1JbnB1dExlbmd0aCA+IDApIHtcbiAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YUFkYXB0ZXIsXG4gICAgICAgICAgTWF4aW11bUlucHV0TGVuZ3RoXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLm1heGltdW1TZWxlY3Rpb25MZW5ndGggPiAwKSB7XG4gICAgICAgIG9wdGlvbnMuZGF0YUFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcbiAgICAgICAgICBvcHRpb25zLmRhdGFBZGFwdGVyLFxuICAgICAgICAgIE1heGltdW1TZWxlY3Rpb25MZW5ndGhcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMudGFncykge1xuICAgICAgICBvcHRpb25zLmRhdGFBZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUob3B0aW9ucy5kYXRhQWRhcHRlciwgVGFncyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLnRva2VuU2VwYXJhdG9ycyAhPSBudWxsIHx8IG9wdGlvbnMudG9rZW5pemVyICE9IG51bGwpIHtcbiAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YUFkYXB0ZXIsXG4gICAgICAgICAgVG9rZW5pemVyXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMucmVzdWx0c0FkYXB0ZXIgPT0gbnVsbCkge1xuICAgICAgb3B0aW9ucy5yZXN1bHRzQWRhcHRlciA9IFJlc3VsdHNMaXN0O1xuXG4gICAgICBpZiAob3B0aW9ucy5hamF4ICE9IG51bGwpIHtcbiAgICAgICAgb3B0aW9ucy5yZXN1bHRzQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMucmVzdWx0c0FkYXB0ZXIsXG4gICAgICAgICAgSW5maW5pdGVTY3JvbGxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMucGxhY2Vob2xkZXIgIT0gbnVsbCkge1xuICAgICAgICBvcHRpb25zLnJlc3VsdHNBZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5yZXN1bHRzQWRhcHRlcixcbiAgICAgICAgICBIaWRlUGxhY2Vob2xkZXJcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuc2VsZWN0T25DbG9zZSkge1xuICAgICAgICBvcHRpb25zLnJlc3VsdHNBZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5yZXN1bHRzQWRhcHRlcixcbiAgICAgICAgICBTZWxlY3RPbkNsb3NlXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLnRhZ3MpIHtcbiAgICAgICAgb3B0aW9ucy5yZXN1bHRzQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMucmVzdWx0c0FkYXB0ZXIsXG4gICAgICAgICAgVGFnc1NlYXJjaEhpZ2hsaWdodFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmRyb3Bkb3duQWRhcHRlciA9PSBudWxsKSB7XG4gICAgICBpZiAob3B0aW9ucy5tdWx0aXBsZSkge1xuICAgICAgICBvcHRpb25zLmRyb3Bkb3duQWRhcHRlciA9IERyb3Bkb3duO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIFNlYXJjaGFibGVEcm9wZG93biA9IFV0aWxzLkRlY29yYXRlKERyb3Bkb3duLCBEcm9wZG93blNlYXJjaCk7XG5cbiAgICAgICAgb3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIgPSBTZWFyY2hhYmxlRHJvcGRvd247XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoICE9PSAwKSB7XG4gICAgICAgIG9wdGlvbnMuZHJvcGRvd25BZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIsXG4gICAgICAgICAgTWluaW11bVJlc3VsdHNGb3JTZWFyY2hcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY2xvc2VPblNlbGVjdCkge1xuICAgICAgICBvcHRpb25zLmRyb3Bkb3duQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMuZHJvcGRvd25BZGFwdGVyLFxuICAgICAgICAgIENsb3NlT25TZWxlY3RcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuZHJvcGRvd25Dc3NDbGFzcyAhPSBudWxsKSB7XG4gICAgICAgIG9wdGlvbnMuZHJvcGRvd25BZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIsXG4gICAgICAgICAgRHJvcGRvd25DU1NcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgb3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcbiAgICAgICAgb3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIsXG4gICAgICAgIEF0dGFjaEJvZHlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlciA9PSBudWxsKSB7XG4gICAgICBpZiAob3B0aW9ucy5tdWx0aXBsZSkge1xuICAgICAgICBvcHRpb25zLnNlbGVjdGlvbkFkYXB0ZXIgPSBNdWx0aXBsZVNlbGVjdGlvbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlciA9IFNpbmdsZVNlbGVjdGlvbjtcbiAgICAgIH1cblxuICAgICAgLy8gQWRkIHRoZSBwbGFjZWhvbGRlciBtaXhpbiBpZiBhIHBsYWNlaG9sZGVyIHdhcyBzcGVjaWZpZWRcbiAgICAgIGlmIChvcHRpb25zLnBsYWNlaG9sZGVyICE9IG51bGwpIHtcbiAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyLFxuICAgICAgICAgIFBsYWNlaG9sZGVyXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmFsbG93Q2xlYXIpIHtcbiAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyLFxuICAgICAgICAgIEFsbG93Q2xlYXJcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMubXVsdGlwbGUpIHtcbiAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyLFxuICAgICAgICAgIFNlbGVjdGlvblNlYXJjaFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5zZWxlY3Rpb25Dc3NDbGFzcyAhPSBudWxsKSB7XG4gICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlcixcbiAgICAgICAgICBTZWxlY3Rpb25DU1NcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlcixcbiAgICAgICAgRXZlbnRSZWxheVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgZGVmYXVsdHMgd2VyZSBub3QgcHJldmlvdXNseSBhcHBsaWVkIGZyb20gYW4gZWxlbWVudCwgaXQgaXNcbiAgICAvLyBwb3NzaWJsZSBmb3IgdGhlIGxhbmd1YWdlIG9wdGlvbiB0byBoYXZlIG5vdCBiZWVuIHJlc29sdmVkXG4gICAgb3B0aW9ucy5sYW5ndWFnZSA9IHRoaXMuX3Jlc29sdmVMYW5ndWFnZShvcHRpb25zLmxhbmd1YWdlKTtcblxuICAgIC8vIEFsd2F5cyBmYWxsIGJhY2sgdG8gRW5nbGlzaCBzaW5jZSBpdCB3aWxsIGFsd2F5cyBiZSBjb21wbGV0ZVxuICAgIG9wdGlvbnMubGFuZ3VhZ2UucHVzaCgnZW4nKTtcblxuICAgIHZhciB1bmlxdWVMYW5ndWFnZXMgPSBbXTtcblxuICAgIGZvciAodmFyIGwgPSAwOyBsIDwgb3B0aW9ucy5sYW5ndWFnZS5sZW5ndGg7IGwrKykge1xuICAgICAgdmFyIGxhbmd1YWdlID0gb3B0aW9ucy5sYW5ndWFnZVtsXTtcblxuICAgICAgaWYgKHVuaXF1ZUxhbmd1YWdlcy5pbmRleE9mKGxhbmd1YWdlKSA9PT0gLTEpIHtcbiAgICAgICAgdW5pcXVlTGFuZ3VhZ2VzLnB1c2gobGFuZ3VhZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIG9wdGlvbnMubGFuZ3VhZ2UgPSB1bmlxdWVMYW5ndWFnZXM7XG5cbiAgICBvcHRpb25zLnRyYW5zbGF0aW9ucyA9IHRoaXMuX3Byb2Nlc3NUcmFuc2xhdGlvbnMoXG4gICAgICBvcHRpb25zLmxhbmd1YWdlLFxuICAgICAgb3B0aW9ucy5kZWJ1Z1xuICAgICk7XG5cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfTtcblxuICBEZWZhdWx0cy5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gc3RyaXBEaWFjcml0aWNzICh0ZXh0KSB7XG4gICAgICAvLyBVc2VkICd1bmkgcmFuZ2UgKyBuYW1lZCBmdW5jdGlvbicgZnJvbSBodHRwOi8vanNwZXJmLmNvbS9kaWFjcml0aWNzLzE4XG4gICAgICBmdW5jdGlvbiBtYXRjaChhKSB7XG4gICAgICAgIHJldHVybiBESUFDUklUSUNTW2FdIHx8IGE7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0ZXh0LnJlcGxhY2UoL1teXFx1MDAwMC1cXHUwMDdFXS9nLCBtYXRjaCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWF0Y2hlciAocGFyYW1zLCBkYXRhKSB7XG4gICAgICAvLyBBbHdheXMgcmV0dXJuIHRoZSBvYmplY3QgaWYgdGhlcmUgaXMgbm90aGluZyB0byBjb21wYXJlXG4gICAgICBpZiAocGFyYW1zLnRlcm0gPT0gbnVsbCB8fCBwYXJhbXMudGVybS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgfVxuXG4gICAgICAvLyBEbyBhIHJlY3Vyc2l2ZSBjaGVjayBmb3Igb3B0aW9ucyB3aXRoIGNoaWxkcmVuXG4gICAgICBpZiAoZGF0YS5jaGlsZHJlbiAmJiBkYXRhLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gQ2xvbmUgdGhlIGRhdGEgb2JqZWN0IGlmIHRoZXJlIGFyZSBjaGlsZHJlblxuICAgICAgICAvLyBUaGlzIGlzIHJlcXVpcmVkIGFzIHdlIG1vZGlmeSB0aGUgb2JqZWN0IHRvIHJlbW92ZSBhbnkgbm9uLW1hdGNoZXNcbiAgICAgICAgdmFyIG1hdGNoID0gJC5leHRlbmQodHJ1ZSwge30sIGRhdGEpO1xuXG4gICAgICAgIC8vIENoZWNrIGVhY2ggY2hpbGQgb2YgdGhlIG9wdGlvblxuICAgICAgICBmb3IgKHZhciBjID0gZGF0YS5jaGlsZHJlbi5sZW5ndGggLSAxOyBjID49IDA7IGMtLSkge1xuICAgICAgICAgIHZhciBjaGlsZCA9IGRhdGEuY2hpbGRyZW5bY107XG5cbiAgICAgICAgICB2YXIgbWF0Y2hlcyA9IG1hdGNoZXIocGFyYW1zLCBjaGlsZCk7XG5cbiAgICAgICAgICAvLyBJZiB0aGVyZSB3YXNuJ3QgYSBtYXRjaCwgcmVtb3ZlIHRoZSBvYmplY3QgaW4gdGhlIGFycmF5XG4gICAgICAgICAgaWYgKG1hdGNoZXMgPT0gbnVsbCkge1xuICAgICAgICAgICAgbWF0Y2guY2hpbGRyZW4uc3BsaWNlKGMsIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIGFueSBjaGlsZHJlbiBtYXRjaGVkLCByZXR1cm4gdGhlIG5ldyBvYmplY3RcbiAgICAgICAgaWYgKG1hdGNoLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiB0aGVyZSB3ZXJlIG5vIG1hdGNoaW5nIGNoaWxkcmVuLCBjaGVjayBqdXN0IHRoZSBwbGFpbiBvYmplY3RcbiAgICAgICAgcmV0dXJuIG1hdGNoZXIocGFyYW1zLCBtYXRjaCk7XG4gICAgICB9XG5cbiAgICAgIHZhciBvcmlnaW5hbCA9IHN0cmlwRGlhY3JpdGljcyhkYXRhLnRleHQpLnRvVXBwZXJDYXNlKCk7XG4gICAgICB2YXIgdGVybSA9IHN0cmlwRGlhY3JpdGljcyhwYXJhbXMudGVybSkudG9VcHBlckNhc2UoKTtcblxuICAgICAgLy8gQ2hlY2sgaWYgdGhlIHRleHQgY29udGFpbnMgdGhlIHRlcm1cbiAgICAgIGlmIChvcmlnaW5hbC5pbmRleE9mKHRlcm0pID4gLTEpIHtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIGl0IGRvZXNuJ3QgY29udGFpbiB0aGUgdGVybSwgZG9uJ3QgcmV0dXJuIGFueXRoaW5nXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLmRlZmF1bHRzID0ge1xuICAgICAgYW1kTGFuZ3VhZ2VCYXNlOiAnLi9pMThuLycsXG4gICAgICBhdXRvY29tcGxldGU6ICdvZmYnLFxuICAgICAgY2xvc2VPblNlbGVjdDogdHJ1ZSxcbiAgICAgIGRlYnVnOiBmYWxzZSxcbiAgICAgIGRyb3Bkb3duQXV0b1dpZHRoOiBmYWxzZSxcbiAgICAgIGVzY2FwZU1hcmt1cDogVXRpbHMuZXNjYXBlTWFya3VwLFxuICAgICAgbGFuZ3VhZ2U6IHt9LFxuICAgICAgbWF0Y2hlcjogbWF0Y2hlcixcbiAgICAgIG1pbmltdW1JbnB1dExlbmd0aDogMCxcbiAgICAgIG1heGltdW1JbnB1dExlbmd0aDogMCxcbiAgICAgIG1heGltdW1TZWxlY3Rpb25MZW5ndGg6IDAsXG4gICAgICBtaW5pbXVtUmVzdWx0c0ZvclNlYXJjaDogMCxcbiAgICAgIHNlbGVjdE9uQ2xvc2U6IGZhbHNlLFxuICAgICAgc2Nyb2xsQWZ0ZXJTZWxlY3Q6IGZhbHNlLFxuICAgICAgc29ydGVyOiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgIH0sXG4gICAgICB0ZW1wbGF0ZVJlc3VsdDogZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0LnRleHQ7XG4gICAgICB9LFxuICAgICAgdGVtcGxhdGVTZWxlY3Rpb246IGZ1bmN0aW9uIChzZWxlY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGlvbi50ZXh0O1xuICAgICAgfSxcbiAgICAgIHRoZW1lOiAnZGVmYXVsdCcsXG4gICAgICB3aWR0aDogJ3Jlc29sdmUnXG4gICAgfTtcbiAgfTtcblxuICBEZWZhdWx0cy5wcm90b3R5cGUuYXBwbHlGcm9tRWxlbWVudCA9IGZ1bmN0aW9uIChvcHRpb25zLCAkZWxlbWVudCkge1xuICAgIHZhciBvcHRpb25MYW5ndWFnZSA9IG9wdGlvbnMubGFuZ3VhZ2U7XG4gICAgdmFyIGRlZmF1bHRMYW5ndWFnZSA9IHRoaXMuZGVmYXVsdHMubGFuZ3VhZ2U7XG4gICAgdmFyIGVsZW1lbnRMYW5ndWFnZSA9ICRlbGVtZW50LnByb3AoJ2xhbmcnKTtcbiAgICB2YXIgcGFyZW50TGFuZ3VhZ2UgPSAkZWxlbWVudC5jbG9zZXN0KCdbbGFuZ10nKS5wcm9wKCdsYW5nJyk7XG5cbiAgICB2YXIgbGFuZ3VhZ2VzID0gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5jYWxsKFxuICAgICAgdGhpcy5fcmVzb2x2ZUxhbmd1YWdlKGVsZW1lbnRMYW5ndWFnZSksXG4gICAgICB0aGlzLl9yZXNvbHZlTGFuZ3VhZ2Uob3B0aW9uTGFuZ3VhZ2UpLFxuICAgICAgdGhpcy5fcmVzb2x2ZUxhbmd1YWdlKGRlZmF1bHRMYW5ndWFnZSksXG4gICAgICB0aGlzLl9yZXNvbHZlTGFuZ3VhZ2UocGFyZW50TGFuZ3VhZ2UpXG4gICAgKTtcblxuICAgIG9wdGlvbnMubGFuZ3VhZ2UgPSBsYW5ndWFnZXM7XG5cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfTtcblxuICBEZWZhdWx0cy5wcm90b3R5cGUuX3Jlc29sdmVMYW5ndWFnZSA9IGZ1bmN0aW9uIChsYW5ndWFnZSkge1xuICAgIGlmICghbGFuZ3VhZ2UpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBpZiAoJC5pc0VtcHR5T2JqZWN0KGxhbmd1YWdlKSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGlmICgkLmlzUGxhaW5PYmplY3QobGFuZ3VhZ2UpKSB7XG4gICAgICByZXR1cm4gW2xhbmd1YWdlXTtcbiAgICB9XG5cbiAgICB2YXIgbGFuZ3VhZ2VzO1xuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGxhbmd1YWdlKSkge1xuICAgICAgbGFuZ3VhZ2VzID0gW2xhbmd1YWdlXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGFuZ3VhZ2VzID0gbGFuZ3VhZ2U7XG4gICAgfVxuXG4gICAgdmFyIHJlc29sdmVkTGFuZ3VhZ2VzID0gW107XG5cbiAgICBmb3IgKHZhciBsID0gMDsgbCA8IGxhbmd1YWdlcy5sZW5ndGg7IGwrKykge1xuICAgICAgcmVzb2x2ZWRMYW5ndWFnZXMucHVzaChsYW5ndWFnZXNbbF0pO1xuXG4gICAgICBpZiAodHlwZW9mIGxhbmd1YWdlc1tsXSA9PT0gJ3N0cmluZycgJiYgbGFuZ3VhZ2VzW2xdLmluZGV4T2YoJy0nKSA+IDApIHtcbiAgICAgICAgLy8gRXh0cmFjdCB0aGUgcmVnaW9uIGluZm9ybWF0aW9uIGlmIGl0IGlzIGluY2x1ZGVkXG4gICAgICAgIHZhciBsYW5ndWFnZVBhcnRzID0gbGFuZ3VhZ2VzW2xdLnNwbGl0KCctJyk7XG4gICAgICAgIHZhciBiYXNlTGFuZ3VhZ2UgPSBsYW5ndWFnZVBhcnRzWzBdO1xuXG4gICAgICAgIHJlc29sdmVkTGFuZ3VhZ2VzLnB1c2goYmFzZUxhbmd1YWdlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzb2x2ZWRMYW5ndWFnZXM7XG4gIH07XG5cbiAgRGVmYXVsdHMucHJvdG90eXBlLl9wcm9jZXNzVHJhbnNsYXRpb25zID0gZnVuY3Rpb24gKGxhbmd1YWdlcywgZGVidWcpIHtcbiAgICB2YXIgdHJhbnNsYXRpb25zID0gbmV3IFRyYW5zbGF0aW9uKCk7XG5cbiAgICBmb3IgKHZhciBsID0gMDsgbCA8IGxhbmd1YWdlcy5sZW5ndGg7IGwrKykge1xuICAgICAgdmFyIGxhbmd1YWdlRGF0YSA9IG5ldyBUcmFuc2xhdGlvbigpO1xuXG4gICAgICB2YXIgbGFuZ3VhZ2UgPSBsYW5ndWFnZXNbbF07XG5cbiAgICAgIGlmICh0eXBlb2YgbGFuZ3VhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gVHJ5IHRvIGxvYWQgaXQgd2l0aCB0aGUgb3JpZ2luYWwgbmFtZVxuICAgICAgICAgIGxhbmd1YWdlRGF0YSA9IFRyYW5zbGF0aW9uLmxvYWRQYXRoKGxhbmd1YWdlKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBJZiB3ZSBjb3VsZG4ndCBsb2FkIGl0LCBjaGVjayBpZiBpdCB3YXNuJ3QgdGhlIGZ1bGwgcGF0aFxuICAgICAgICAgICAgbGFuZ3VhZ2UgPSB0aGlzLmRlZmF1bHRzLmFtZExhbmd1YWdlQmFzZSArIGxhbmd1YWdlO1xuICAgICAgICAgICAgbGFuZ3VhZ2VEYXRhID0gVHJhbnNsYXRpb24ubG9hZFBhdGgobGFuZ3VhZ2UpO1xuICAgICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgICAvLyBUaGUgdHJhbnNsYXRpb24gY291bGQgbm90IGJlIGxvYWRlZCBhdCBhbGwuIFNvbWV0aW1lcyB0aGlzIGlzXG4gICAgICAgICAgICAvLyBiZWNhdXNlIG9mIGEgY29uZmlndXJhdGlvbiBwcm9ibGVtLCBvdGhlciB0aW1lcyB0aGlzIGNhbiBiZVxuICAgICAgICAgICAgLy8gYmVjYXVzZSBvZiBob3cgU2VsZWN0MiBoZWxwcyBsb2FkIGFsbCBwb3NzaWJsZSB0cmFuc2xhdGlvbiBmaWxlc1xuICAgICAgICAgICAgaWYgKGRlYnVnICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgJ1NlbGVjdDI6IFRoZSBsYW5ndWFnZSBmaWxlIGZvciBcIicgKyBsYW5ndWFnZSArICdcIiBjb3VsZCAnICtcbiAgICAgICAgICAgICAgICAnbm90IGJlIGF1dG9tYXRpY2FsbHkgbG9hZGVkLiBBIGZhbGxiYWNrIHdpbGwgYmUgdXNlZCBpbnN0ZWFkLidcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoJC5pc1BsYWluT2JqZWN0KGxhbmd1YWdlKSkge1xuICAgICAgICBsYW5ndWFnZURhdGEgPSBuZXcgVHJhbnNsYXRpb24obGFuZ3VhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGFuZ3VhZ2VEYXRhID0gbGFuZ3VhZ2U7XG4gICAgICB9XG5cbiAgICAgIHRyYW5zbGF0aW9ucy5leHRlbmQobGFuZ3VhZ2VEYXRhKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJhbnNsYXRpb25zO1xuICB9O1xuXG4gIERlZmF1bHRzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgIHZhciBjYW1lbEtleSA9ICQuY2FtZWxDYXNlKGtleSk7XG5cbiAgICB2YXIgZGF0YSA9IHt9O1xuICAgIGRhdGFbY2FtZWxLZXldID0gdmFsdWU7XG5cbiAgICB2YXIgY29udmVydGVkRGF0YSA9IFV0aWxzLl9jb252ZXJ0RGF0YShkYXRhKTtcblxuICAgICQuZXh0ZW5kKHRydWUsIHRoaXMuZGVmYXVsdHMsIGNvbnZlcnRlZERhdGEpO1xuICB9O1xuXG4gIHZhciBkZWZhdWx0cyA9IG5ldyBEZWZhdWx0cygpO1xuXG4gIHJldHVybiBkZWZhdWx0cztcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvb3B0aW9ucycsW1xuICAnanF1ZXJ5JyxcbiAgJy4vZGVmYXVsdHMnLFxuICAnLi91dGlscydcbl0sIGZ1bmN0aW9uICgkLCBEZWZhdWx0cywgVXRpbHMpIHtcbiAgZnVuY3Rpb24gT3B0aW9ucyAob3B0aW9ucywgJGVsZW1lbnQpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgaWYgKCRlbGVtZW50ICE9IG51bGwpIHtcbiAgICAgIHRoaXMuZnJvbUVsZW1lbnQoJGVsZW1lbnQpO1xuICAgIH1cblxuICAgIGlmICgkZWxlbWVudCAhPSBudWxsKSB7XG4gICAgICB0aGlzLm9wdGlvbnMgPSBEZWZhdWx0cy5hcHBseUZyb21FbGVtZW50KHRoaXMub3B0aW9ucywgJGVsZW1lbnQpO1xuICAgIH1cblxuICAgIHRoaXMub3B0aW9ucyA9IERlZmF1bHRzLmFwcGx5KHRoaXMub3B0aW9ucyk7XG4gIH1cblxuICBPcHRpb25zLnByb3RvdHlwZS5mcm9tRWxlbWVudCA9IGZ1bmN0aW9uICgkZSkge1xuICAgIHZhciBleGNsdWRlZERhdGEgPSBbJ3NlbGVjdDInXTtcblxuICAgIGlmICh0aGlzLm9wdGlvbnMubXVsdGlwbGUgPT0gbnVsbCkge1xuICAgICAgdGhpcy5vcHRpb25zLm11bHRpcGxlID0gJGUucHJvcCgnbXVsdGlwbGUnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmRpc2FibGVkID09IG51bGwpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5kaXNhYmxlZCA9ICRlLnByb3AoJ2Rpc2FibGVkJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hdXRvY29tcGxldGUgPT0gbnVsbCAmJiAkZS5wcm9wKCdhdXRvY29tcGxldGUnKSkge1xuICAgICAgdGhpcy5vcHRpb25zLmF1dG9jb21wbGV0ZSA9ICRlLnByb3AoJ2F1dG9jb21wbGV0ZScpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZGlyID09IG51bGwpIHtcbiAgICAgIGlmICgkZS5wcm9wKCdkaXInKSkge1xuICAgICAgICB0aGlzLm9wdGlvbnMuZGlyID0gJGUucHJvcCgnZGlyJyk7XG4gICAgICB9IGVsc2UgaWYgKCRlLmNsb3Nlc3QoJ1tkaXJdJykucHJvcCgnZGlyJykpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmRpciA9ICRlLmNsb3Nlc3QoJ1tkaXJdJykucHJvcCgnZGlyJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMuZGlyID0gJ2x0cic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJGUucHJvcCgnZGlzYWJsZWQnLCB0aGlzLm9wdGlvbnMuZGlzYWJsZWQpO1xuICAgICRlLnByb3AoJ211bHRpcGxlJywgdGhpcy5vcHRpb25zLm11bHRpcGxlKTtcblxuICAgIGlmIChVdGlscy5HZXREYXRhKCRlWzBdLCAnc2VsZWN0MlRhZ3MnKSkge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWJ1ZyAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLndhcm4pIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdTZWxlY3QyOiBUaGUgYGRhdGEtc2VsZWN0Mi10YWdzYCBhdHRyaWJ1dGUgaGFzIGJlZW4gY2hhbmdlZCB0byAnICtcbiAgICAgICAgICAndXNlIHRoZSBgZGF0YS1kYXRhYCBhbmQgYGRhdGEtdGFncz1cInRydWVcImAgYXR0cmlidXRlcyBhbmQgd2lsbCBiZSAnICtcbiAgICAgICAgICAncmVtb3ZlZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgU2VsZWN0Mi4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIFV0aWxzLlN0b3JlRGF0YSgkZVswXSwgJ2RhdGEnLCBVdGlscy5HZXREYXRhKCRlWzBdLCAnc2VsZWN0MlRhZ3MnKSk7XG4gICAgICBVdGlscy5TdG9yZURhdGEoJGVbMF0sICd0YWdzJywgdHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYgKFV0aWxzLkdldERhdGEoJGVbMF0sICdhamF4VXJsJykpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS53YXJuKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnU2VsZWN0MjogVGhlIGBkYXRhLWFqYXgtdXJsYCBhdHRyaWJ1dGUgaGFzIGJlZW4gY2hhbmdlZCB0byAnICtcbiAgICAgICAgICAnYGRhdGEtYWpheC0tdXJsYCBhbmQgc3VwcG9ydCBmb3IgdGhlIG9sZCBhdHRyaWJ1dGUgd2lsbCBiZSByZW1vdmVkJyArXG4gICAgICAgICAgJyBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgU2VsZWN0Mi4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgICRlLmF0dHIoJ2FqYXgtLXVybCcsIFV0aWxzLkdldERhdGEoJGVbMF0sICdhamF4VXJsJykpO1xuICAgICAgVXRpbHMuU3RvcmVEYXRhKCRlWzBdLCAnYWpheC1VcmwnLCBVdGlscy5HZXREYXRhKCRlWzBdLCAnYWpheFVybCcpKTtcbiAgICB9XG5cbiAgICB2YXIgZGF0YXNldCA9IHt9O1xuXG4gICAgZnVuY3Rpb24gdXBwZXJDYXNlTGV0dGVyKF8sIGxldHRlcikge1xuICAgICAgcmV0dXJuIGxldHRlci50b1VwcGVyQ2FzZSgpO1xuICAgIH1cblxuICAgIC8vIFByZS1sb2FkIGFsbCBvZiB0aGUgYXR0cmlidXRlcyB3aGljaCBhcmUgcHJlZml4ZWQgd2l0aCBgZGF0YS1gXG4gICAgZm9yICh2YXIgYXR0ciA9IDA7IGF0dHIgPCAkZVswXS5hdHRyaWJ1dGVzLmxlbmd0aDsgYXR0cisrKSB7XG4gICAgICB2YXIgYXR0cmlidXRlTmFtZSA9ICRlWzBdLmF0dHJpYnV0ZXNbYXR0cl0ubmFtZTtcbiAgICAgIHZhciBwcmVmaXggPSAnZGF0YS0nO1xuXG4gICAgICBpZiAoYXR0cmlidXRlTmFtZS5zdWJzdHIoMCwgcHJlZml4Lmxlbmd0aCkgPT0gcHJlZml4KSB7XG4gICAgICAgIC8vIEdldCB0aGUgY29udGVudHMgb2YgdGhlIGF0dHJpYnV0ZSBhZnRlciBgZGF0YS1gXG4gICAgICAgIHZhciBkYXRhTmFtZSA9IGF0dHJpYnV0ZU5hbWUuc3Vic3RyaW5nKHByZWZpeC5sZW5ndGgpO1xuXG4gICAgICAgIC8vIEdldCB0aGUgZGF0YSBjb250ZW50cyBmcm9tIHRoZSBjb25zaXN0ZW50IHNvdXJjZVxuICAgICAgICAvLyBUaGlzIGlzIG1vcmUgdGhhbiBsaWtlbHkgdGhlIGpRdWVyeSBkYXRhIGhlbHBlclxuICAgICAgICB2YXIgZGF0YVZhbHVlID0gVXRpbHMuR2V0RGF0YSgkZVswXSwgZGF0YU5hbWUpO1xuXG4gICAgICAgIC8vIGNhbWVsQ2FzZSB0aGUgYXR0cmlidXRlIG5hbWUgdG8gbWF0Y2ggdGhlIHNwZWNcbiAgICAgICAgdmFyIGNhbWVsRGF0YU5hbWUgPSBkYXRhTmFtZS5yZXBsYWNlKC8tKFthLXpdKS9nLCB1cHBlckNhc2VMZXR0ZXIpO1xuXG4gICAgICAgIC8vIFN0b3JlIHRoZSBkYXRhIGF0dHJpYnV0ZSBjb250ZW50cyBpbnRvIHRoZSBkYXRhc2V0IHNpbmNlXG4gICAgICAgIGRhdGFzZXRbY2FtZWxEYXRhTmFtZV0gPSBkYXRhVmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUHJlZmVyIHRoZSBlbGVtZW50J3MgYGRhdGFzZXRgIGF0dHJpYnV0ZSBpZiBpdCBleGlzdHNcbiAgICAvLyBqUXVlcnkgMS54IGRvZXMgbm90IGNvcnJlY3RseSBoYW5kbGUgZGF0YSBhdHRyaWJ1dGVzIHdpdGggbXVsdGlwbGUgZGFzaGVzXG4gICAgaWYgKCQuZm4uanF1ZXJ5ICYmICQuZm4uanF1ZXJ5LnN1YnN0cigwLCAyKSA9PSAnMS4nICYmICRlWzBdLmRhdGFzZXQpIHtcbiAgICAgIGRhdGFzZXQgPSAkLmV4dGVuZCh0cnVlLCB7fSwgJGVbMF0uZGF0YXNldCwgZGF0YXNldCk7XG4gICAgfVxuXG4gICAgLy8gUHJlZmVyIG91ciBpbnRlcm5hbCBkYXRhIGNhY2hlIGlmIGl0IGV4aXN0c1xuICAgIHZhciBkYXRhID0gJC5leHRlbmQodHJ1ZSwge30sIFV0aWxzLkdldERhdGEoJGVbMF0pLCBkYXRhc2V0KTtcblxuICAgIGRhdGEgPSBVdGlscy5fY29udmVydERhdGEoZGF0YSk7XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gZGF0YSkge1xuICAgICAgaWYgKGV4Y2x1ZGVkRGF0YS5pbmRleE9mKGtleSkgPiAtMSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCQuaXNQbGFpbk9iamVjdCh0aGlzLm9wdGlvbnNba2V5XSkpIHtcbiAgICAgICAgJC5leHRlbmQodGhpcy5vcHRpb25zW2tleV0sIGRhdGFba2V5XSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnNba2V5XSA9IGRhdGFba2V5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBPcHRpb25zLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uc1trZXldO1xuICB9O1xuXG4gIE9wdGlvbnMucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChrZXksIHZhbCkge1xuICAgIHRoaXMub3B0aW9uc1trZXldID0gdmFsO1xuICB9O1xuXG4gIHJldHVybiBPcHRpb25zO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9jb3JlJyxbXG4gICdqcXVlcnknLFxuICAnLi9vcHRpb25zJyxcbiAgJy4vdXRpbHMnLFxuICAnLi9rZXlzJ1xuXSwgZnVuY3Rpb24gKCQsIE9wdGlvbnMsIFV0aWxzLCBLRVlTKSB7XG4gIHZhciBTZWxlY3QyID0gZnVuY3Rpb24gKCRlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgaWYgKFV0aWxzLkdldERhdGEoJGVsZW1lbnRbMF0sICdzZWxlY3QyJykgIT0gbnVsbCkge1xuICAgICAgVXRpbHMuR2V0RGF0YSgkZWxlbWVudFswXSwgJ3NlbGVjdDInKS5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgdGhpcy4kZWxlbWVudCA9ICRlbGVtZW50O1xuXG4gICAgdGhpcy5pZCA9IHRoaXMuX2dlbmVyYXRlSWQoJGVsZW1lbnQpO1xuXG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICB0aGlzLm9wdGlvbnMgPSBuZXcgT3B0aW9ucyhvcHRpb25zLCAkZWxlbWVudCk7XG5cbiAgICBTZWxlY3QyLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpO1xuXG4gICAgLy8gU2V0IHVwIHRoZSB0YWJpbmRleFxuXG4gICAgdmFyIHRhYmluZGV4ID0gJGVsZW1lbnQuYXR0cigndGFiaW5kZXgnKSB8fCAwO1xuICAgIFV0aWxzLlN0b3JlRGF0YSgkZWxlbWVudFswXSwgJ29sZC10YWJpbmRleCcsIHRhYmluZGV4KTtcbiAgICAkZWxlbWVudC5hdHRyKCd0YWJpbmRleCcsICctMScpO1xuXG4gICAgLy8gU2V0IHVwIGNvbnRhaW5lcnMgYW5kIGFkYXB0ZXJzXG5cbiAgICB2YXIgRGF0YUFkYXB0ZXIgPSB0aGlzLm9wdGlvbnMuZ2V0KCdkYXRhQWRhcHRlcicpO1xuICAgIHRoaXMuZGF0YUFkYXB0ZXIgPSBuZXcgRGF0YUFkYXB0ZXIoJGVsZW1lbnQsIHRoaXMub3B0aW9ucyk7XG5cbiAgICB2YXIgJGNvbnRhaW5lciA9IHRoaXMucmVuZGVyKCk7XG5cbiAgICB0aGlzLl9wbGFjZUNvbnRhaW5lcigkY29udGFpbmVyKTtcblxuICAgIHZhciBTZWxlY3Rpb25BZGFwdGVyID0gdGhpcy5vcHRpb25zLmdldCgnc2VsZWN0aW9uQWRhcHRlcicpO1xuICAgIHRoaXMuc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbkFkYXB0ZXIoJGVsZW1lbnQsIHRoaXMub3B0aW9ucyk7XG4gICAgdGhpcy4kc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24ucmVuZGVyKCk7XG5cbiAgICB0aGlzLnNlbGVjdGlvbi5wb3NpdGlvbih0aGlzLiRzZWxlY3Rpb24sICRjb250YWluZXIpO1xuXG4gICAgdmFyIERyb3Bkb3duQWRhcHRlciA9IHRoaXMub3B0aW9ucy5nZXQoJ2Ryb3Bkb3duQWRhcHRlcicpO1xuICAgIHRoaXMuZHJvcGRvd24gPSBuZXcgRHJvcGRvd25BZGFwdGVyKCRlbGVtZW50LCB0aGlzLm9wdGlvbnMpO1xuICAgIHRoaXMuJGRyb3Bkb3duID0gdGhpcy5kcm9wZG93bi5yZW5kZXIoKTtcblxuICAgIHRoaXMuZHJvcGRvd24ucG9zaXRpb24odGhpcy4kZHJvcGRvd24sICRjb250YWluZXIpO1xuXG4gICAgdmFyIFJlc3VsdHNBZGFwdGVyID0gdGhpcy5vcHRpb25zLmdldCgncmVzdWx0c0FkYXB0ZXInKTtcbiAgICB0aGlzLnJlc3VsdHMgPSBuZXcgUmVzdWx0c0FkYXB0ZXIoJGVsZW1lbnQsIHRoaXMub3B0aW9ucywgdGhpcy5kYXRhQWRhcHRlcik7XG4gICAgdGhpcy4kcmVzdWx0cyA9IHRoaXMucmVzdWx0cy5yZW5kZXIoKTtcblxuICAgIHRoaXMucmVzdWx0cy5wb3NpdGlvbih0aGlzLiRyZXN1bHRzLCB0aGlzLiRkcm9wZG93bik7XG5cbiAgICAvLyBCaW5kIGV2ZW50c1xuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgLy8gQmluZCB0aGUgY29udGFpbmVyIHRvIGFsbCBvZiB0aGUgYWRhcHRlcnNcbiAgICB0aGlzLl9iaW5kQWRhcHRlcnMoKTtcblxuICAgIC8vIFJlZ2lzdGVyIGFueSBET00gZXZlbnQgaGFuZGxlcnNcbiAgICB0aGlzLl9yZWdpc3RlckRvbUV2ZW50cygpO1xuXG4gICAgLy8gUmVnaXN0ZXIgYW55IGludGVybmFsIGV2ZW50IGhhbmRsZXJzXG4gICAgdGhpcy5fcmVnaXN0ZXJEYXRhRXZlbnRzKCk7XG4gICAgdGhpcy5fcmVnaXN0ZXJTZWxlY3Rpb25FdmVudHMoKTtcbiAgICB0aGlzLl9yZWdpc3RlckRyb3Bkb3duRXZlbnRzKCk7XG4gICAgdGhpcy5fcmVnaXN0ZXJSZXN1bHRzRXZlbnRzKCk7XG4gICAgdGhpcy5fcmVnaXN0ZXJFdmVudHMoKTtcblxuICAgIC8vIFNldCB0aGUgaW5pdGlhbCBzdGF0ZVxuICAgIHRoaXMuZGF0YUFkYXB0ZXIuY3VycmVudChmdW5jdGlvbiAoaW5pdGlhbERhdGEpIHtcbiAgICAgIHNlbGYudHJpZ2dlcignc2VsZWN0aW9uOnVwZGF0ZScsIHtcbiAgICAgICAgZGF0YTogaW5pdGlhbERhdGFcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gSGlkZSB0aGUgb3JpZ2luYWwgc2VsZWN0XG4gICAgJGVsZW1lbnRbMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1oaWRkZW4tYWNjZXNzaWJsZScpO1xuICAgICRlbGVtZW50LmF0dHIoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcblxuICAgIC8vIFN5bmNocm9uaXplIGFueSBtb25pdG9yZWQgYXR0cmlidXRlc1xuICAgIHRoaXMuX3N5bmNBdHRyaWJ1dGVzKCk7XG5cbiAgICBVdGlscy5TdG9yZURhdGEoJGVsZW1lbnRbMF0sICdzZWxlY3QyJywgdGhpcyk7XG5cbiAgICAvLyBFbnN1cmUgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCAkZWxlbWVudC5kYXRhKCdzZWxlY3QyJykuXG4gICAgJGVsZW1lbnQuZGF0YSgnc2VsZWN0MicsIHRoaXMpO1xuICB9O1xuXG4gIFV0aWxzLkV4dGVuZChTZWxlY3QyLCBVdGlscy5PYnNlcnZhYmxlKTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5fZ2VuZXJhdGVJZCA9IGZ1bmN0aW9uICgkZWxlbWVudCkge1xuICAgIHZhciBpZCA9ICcnO1xuXG4gICAgaWYgKCRlbGVtZW50LmF0dHIoJ2lkJykgIT0gbnVsbCkge1xuICAgICAgaWQgPSAkZWxlbWVudC5hdHRyKCdpZCcpO1xuICAgIH0gZWxzZSBpZiAoJGVsZW1lbnQuYXR0cignbmFtZScpICE9IG51bGwpIHtcbiAgICAgIGlkID0gJGVsZW1lbnQuYXR0cignbmFtZScpICsgJy0nICsgVXRpbHMuZ2VuZXJhdGVDaGFycygyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWQgPSBVdGlscy5nZW5lcmF0ZUNoYXJzKDQpO1xuICAgIH1cblxuICAgIGlkID0gaWQucmVwbGFjZSgvKDp8XFwufFxcW3xcXF18LCkvZywgJycpO1xuICAgIGlkID0gJ3NlbGVjdDItJyArIGlkO1xuXG4gICAgcmV0dXJuIGlkO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLl9wbGFjZUNvbnRhaW5lciA9IGZ1bmN0aW9uICgkY29udGFpbmVyKSB7XG4gICAgJGNvbnRhaW5lci5pbnNlcnRBZnRlcih0aGlzLiRlbGVtZW50KTtcblxuICAgIHZhciB3aWR0aCA9IHRoaXMuX3Jlc29sdmVXaWR0aCh0aGlzLiRlbGVtZW50LCB0aGlzLm9wdGlvbnMuZ2V0KCd3aWR0aCcpKTtcblxuICAgIGlmICh3aWR0aCAhPSBudWxsKSB7XG4gICAgICAkY29udGFpbmVyLmNzcygnd2lkdGgnLCB3aWR0aCk7XG4gICAgfVxuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLl9yZXNvbHZlV2lkdGggPSBmdW5jdGlvbiAoJGVsZW1lbnQsIG1ldGhvZCkge1xuICAgIHZhciBXSURUSCA9IC9ed2lkdGg6KChbLStdPyhbMC05XSpcXC4pP1swLTldKykocHh8ZW18ZXh8JXxpbnxjbXxtbXxwdHxwYykpL2k7XG5cbiAgICBpZiAobWV0aG9kID09ICdyZXNvbHZlJykge1xuICAgICAgdmFyIHN0eWxlV2lkdGggPSB0aGlzLl9yZXNvbHZlV2lkdGgoJGVsZW1lbnQsICdzdHlsZScpO1xuXG4gICAgICBpZiAoc3R5bGVXaWR0aCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBzdHlsZVdpZHRoO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5fcmVzb2x2ZVdpZHRoKCRlbGVtZW50LCAnZWxlbWVudCcpO1xuICAgIH1cblxuICAgIGlmIChtZXRob2QgPT0gJ2VsZW1lbnQnKSB7XG4gICAgICB2YXIgZWxlbWVudFdpZHRoID0gJGVsZW1lbnQub3V0ZXJXaWR0aChmYWxzZSk7XG5cbiAgICAgIGlmIChlbGVtZW50V2lkdGggPD0gMCkge1xuICAgICAgICByZXR1cm4gJ2F1dG8nO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZWxlbWVudFdpZHRoICsgJ3B4JztcbiAgICB9XG5cbiAgICBpZiAobWV0aG9kID09ICdzdHlsZScpIHtcbiAgICAgIHZhciBzdHlsZSA9ICRlbGVtZW50LmF0dHIoJ3N0eWxlJyk7XG5cbiAgICAgIGlmICh0eXBlb2Yoc3R5bGUpICE9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdmFyIGF0dHJzID0gc3R5bGUuc3BsaXQoJzsnKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBhdHRycy5sZW5ndGg7IGkgPCBsOyBpID0gaSArIDEpIHtcbiAgICAgICAgdmFyIGF0dHIgPSBhdHRyc1tpXS5yZXBsYWNlKC9cXHMvZywgJycpO1xuICAgICAgICB2YXIgbWF0Y2hlcyA9IGF0dHIubWF0Y2goV0lEVEgpO1xuXG4gICAgICAgIGlmIChtYXRjaGVzICE9PSBudWxsICYmIG1hdGNoZXMubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICByZXR1cm4gbWF0Y2hlc1sxXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAobWV0aG9kID09ICdjb21wdXRlZHN0eWxlJykge1xuICAgICAgdmFyIGNvbXB1dGVkU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSgkZWxlbWVudFswXSk7XG5cbiAgICAgIHJldHVybiBjb21wdXRlZFN0eWxlLndpZHRoO1xuICAgIH1cblxuICAgIHJldHVybiBtZXRob2Q7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuX2JpbmRBZGFwdGVycyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmRhdGFBZGFwdGVyLmJpbmQodGhpcywgdGhpcy4kY29udGFpbmVyKTtcbiAgICB0aGlzLnNlbGVjdGlvbi5iaW5kKHRoaXMsIHRoaXMuJGNvbnRhaW5lcik7XG5cbiAgICB0aGlzLmRyb3Bkb3duLmJpbmQodGhpcywgdGhpcy4kY29udGFpbmVyKTtcbiAgICB0aGlzLnJlc3VsdHMuYmluZCh0aGlzLCB0aGlzLiRjb250YWluZXIpO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLl9yZWdpc3RlckRvbUV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0aGlzLiRlbGVtZW50Lm9uKCdjaGFuZ2Uuc2VsZWN0MicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuZGF0YUFkYXB0ZXIuY3VycmVudChmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICBzZWxmLnRyaWdnZXIoJ3NlbGVjdGlvbjp1cGRhdGUnLCB7XG4gICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kZWxlbWVudC5vbignZm9jdXMuc2VsZWN0MicsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYudHJpZ2dlcignZm9jdXMnLCBldnQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fc3luY0EgPSBVdGlscy5iaW5kKHRoaXMuX3N5bmNBdHRyaWJ1dGVzLCB0aGlzKTtcbiAgICB0aGlzLl9zeW5jUyA9IFV0aWxzLmJpbmQodGhpcy5fc3luY1N1YnRyZWUsIHRoaXMpO1xuXG4gICAgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgd2luZG93Lk11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24gKG11dGF0aW9ucykge1xuICAgICAgc2VsZi5fc3luY0EoKTtcbiAgICAgIHNlbGYuX3N5bmNTKG11dGF0aW9ucyk7XG4gICAgfSk7XG4gICAgdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLiRlbGVtZW50WzBdLCB7XG4gICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogZmFsc2VcbiAgICB9KTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5fcmVnaXN0ZXJEYXRhRXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHRoaXMuZGF0YUFkYXB0ZXIub24oJyonLCBmdW5jdGlvbiAobmFtZSwgcGFyYW1zKSB7XG4gICAgICBzZWxmLnRyaWdnZXIobmFtZSwgcGFyYW1zKTtcbiAgICB9KTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5fcmVnaXN0ZXJTZWxlY3Rpb25FdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBub25SZWxheUV2ZW50cyA9IFsndG9nZ2xlJywgJ2ZvY3VzJ107XG5cbiAgICB0aGlzLnNlbGVjdGlvbi5vbigndG9nZ2xlJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi50b2dnbGVEcm9wZG93bigpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZWxlY3Rpb24ub24oJ2ZvY3VzJywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgc2VsZi5mb2N1cyhwYXJhbXMpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZWxlY3Rpb24ub24oJyonLCBmdW5jdGlvbiAobmFtZSwgcGFyYW1zKSB7XG4gICAgICBpZiAobm9uUmVsYXlFdmVudHMuaW5kZXhPZihuYW1lKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzZWxmLnRyaWdnZXIobmFtZSwgcGFyYW1zKTtcbiAgICB9KTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5fcmVnaXN0ZXJEcm9wZG93bkV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0aGlzLmRyb3Bkb3duLm9uKCcqJywgZnVuY3Rpb24gKG5hbWUsIHBhcmFtcykge1xuICAgICAgc2VsZi50cmlnZ2VyKG5hbWUsIHBhcmFtcyk7XG4gICAgfSk7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuX3JlZ2lzdGVyUmVzdWx0c0V2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0aGlzLnJlc3VsdHMub24oJyonLCBmdW5jdGlvbiAobmFtZSwgcGFyYW1zKSB7XG4gICAgICBzZWxmLnRyaWdnZXIobmFtZSwgcGFyYW1zKTtcbiAgICB9KTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5fcmVnaXN0ZXJFdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdGhpcy5vbignb3BlbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuJGNvbnRhaW5lclswXS5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLWNvbnRhaW5lci0tb3BlbicpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vbignY2xvc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLiRjb250YWluZXJbMF0uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0Mi1jb250YWluZXItLW9wZW4nKTtcbiAgICB9KTtcblxuICAgIHRoaXMub24oJ2VuYWJsZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuJGNvbnRhaW5lclswXS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLWNvbnRhaW5lci0tZGlzYWJsZWQnKTtcbiAgICB9KTtcblxuICAgIHRoaXMub24oJ2Rpc2FibGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLiRjb250YWluZXJbMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1jb250YWluZXItLWRpc2FibGVkJyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm9uKCdibHVyJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi4kY29udGFpbmVyWzBdLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDItY29udGFpbmVyLS1mb2N1cycpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vbigncXVlcnknLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBpZiAoIXNlbGYuaXNPcGVuKCkpIHtcbiAgICAgICAgc2VsZi50cmlnZ2VyKCdvcGVuJywge30pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRhdGFBZGFwdGVyLnF1ZXJ5KHBhcmFtcywgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgc2VsZi50cmlnZ2VyKCdyZXN1bHRzOmFsbCcsIHtcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIHF1ZXJ5OiBwYXJhbXNcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMub24oJ3F1ZXJ5OmFwcGVuZCcsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIHRoaXMuZGF0YUFkYXB0ZXIucXVlcnkocGFyYW1zLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICBzZWxmLnRyaWdnZXIoJ3Jlc3VsdHM6YXBwZW5kJywge1xuICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgcXVlcnk6IHBhcmFtc1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vbigna2V5cHJlc3MnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICB2YXIga2V5ID0gZXZ0LndoaWNoO1xuXG4gICAgICBpZiAoc2VsZi5pc09wZW4oKSkge1xuICAgICAgICBpZiAoa2V5ID09PSBLRVlTLkVTQyB8fCAoa2V5ID09PSBLRVlTLlVQICYmIGV2dC5hbHRLZXkpKSB7XG4gICAgICAgICAgc2VsZi5jbG9zZShldnQpO1xuXG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSBLRVlTLkVOVEVSIHx8IGtleSA9PT0gS0VZUy5UQUIpIHtcbiAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3Jlc3VsdHM6c2VsZWN0Jywge30pO1xuXG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoKGtleSA9PT0gS0VZUy5TUEFDRSAmJiBldnQuY3RybEtleSkpIHtcbiAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3Jlc3VsdHM6dG9nZ2xlJywge30pO1xuXG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSBLRVlTLlVQKSB7XG4gICAgICAgICAgc2VsZi50cmlnZ2VyKCdyZXN1bHRzOnByZXZpb3VzJywge30pO1xuXG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSBLRVlTLkRPV04pIHtcbiAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3Jlc3VsdHM6bmV4dCcsIHt9KTtcblxuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoa2V5ID09PSBLRVlTLkVOVEVSIHx8IGtleSA9PT0gS0VZUy5TUEFDRSB8fFxuICAgICAgICAgICAgKGtleSA9PT0gS0VZUy5ET1dOICYmIGV2dC5hbHRLZXkpKSB7XG4gICAgICAgICAgc2VsZi5vcGVuKCk7XG5cbiAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLl9zeW5jQXR0cmlidXRlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLm9wdGlvbnMuc2V0KCdkaXNhYmxlZCcsIHRoaXMuJGVsZW1lbnQucHJvcCgnZGlzYWJsZWQnKSk7XG5cbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKCkpIHtcbiAgICAgIGlmICh0aGlzLmlzT3BlbigpKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50cmlnZ2VyKCdkaXNhYmxlJywge30pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyaWdnZXIoJ2VuYWJsZScsIHt9KTtcbiAgICB9XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuX2lzQ2hhbmdlTXV0YXRpb24gPSBmdW5jdGlvbiAobXV0YXRpb25zKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgaWYgKG11dGF0aW9ucy5hZGRlZE5vZGVzICYmIG11dGF0aW9ucy5hZGRlZE5vZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbXV0YXRpb25zLmFkZGVkTm9kZXMubGVuZ3RoOyBuKyspIHtcbiAgICAgICAgdmFyIG5vZGUgPSBtdXRhdGlvbnMuYWRkZWROb2Rlc1tuXTtcblxuICAgICAgICBpZiAobm9kZS5zZWxlY3RlZCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChtdXRhdGlvbnMucmVtb3ZlZE5vZGVzICYmIG11dGF0aW9ucy5yZW1vdmVkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG11dGF0aW9ucykpIHtcbiAgICAgIHJldHVybiBtdXRhdGlvbnMuc29tZShmdW5jdGlvbiAobXV0YXRpb24pIHtcbiAgICAgICAgcmV0dXJuIHNlbGYuX2lzQ2hhbmdlTXV0YXRpb24obXV0YXRpb24pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLl9zeW5jU3VidHJlZSA9IGZ1bmN0aW9uIChtdXRhdGlvbnMpIHtcbiAgICB2YXIgY2hhbmdlZCA9IHRoaXMuX2lzQ2hhbmdlTXV0YXRpb24obXV0YXRpb25zKTtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICAvLyBPbmx5IHJlLXB1bGwgdGhlIGRhdGEgaWYgd2UgdGhpbmsgdGhlcmUgaXMgYSBjaGFuZ2VcbiAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgdGhpcy5kYXRhQWRhcHRlci5jdXJyZW50KGZ1bmN0aW9uIChjdXJyZW50RGF0YSkge1xuICAgICAgICBzZWxmLnRyaWdnZXIoJ3NlbGVjdGlvbjp1cGRhdGUnLCB7XG4gICAgICAgICAgZGF0YTogY3VycmVudERhdGFcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlIHRoZSB0cmlnZ2VyIG1ldGhvZCB0byBhdXRvbWF0aWNhbGx5IHRyaWdnZXIgcHJlLWV2ZW50cyB3aGVuXG4gICAqIHRoZXJlIGFyZSBldmVudHMgdGhhdCBjYW4gYmUgcHJldmVudGVkLlxuICAgKi9cbiAgU2VsZWN0Mi5wcm90b3R5cGUudHJpZ2dlciA9IGZ1bmN0aW9uIChuYW1lLCBhcmdzKSB7XG4gICAgdmFyIGFjdHVhbFRyaWdnZXIgPSBTZWxlY3QyLl9fc3VwZXJfXy50cmlnZ2VyO1xuICAgIHZhciBwcmVUcmlnZ2VyTWFwID0ge1xuICAgICAgJ29wZW4nOiAnb3BlbmluZycsXG4gICAgICAnY2xvc2UnOiAnY2xvc2luZycsXG4gICAgICAnc2VsZWN0JzogJ3NlbGVjdGluZycsXG4gICAgICAndW5zZWxlY3QnOiAndW5zZWxlY3RpbmcnLFxuICAgICAgJ2NsZWFyJzogJ2NsZWFyaW5nJ1xuICAgIH07XG5cbiAgICBpZiAoYXJncyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBhcmdzID0ge307XG4gICAgfVxuXG4gICAgaWYgKG5hbWUgaW4gcHJlVHJpZ2dlck1hcCkge1xuICAgICAgdmFyIHByZVRyaWdnZXJOYW1lID0gcHJlVHJpZ2dlck1hcFtuYW1lXTtcbiAgICAgIHZhciBwcmVUcmlnZ2VyQXJncyA9IHtcbiAgICAgICAgcHJldmVudGVkOiBmYWxzZSxcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgYXJnczogYXJnc1xuICAgICAgfTtcblxuICAgICAgYWN0dWFsVHJpZ2dlci5jYWxsKHRoaXMsIHByZVRyaWdnZXJOYW1lLCBwcmVUcmlnZ2VyQXJncyk7XG5cbiAgICAgIGlmIChwcmVUcmlnZ2VyQXJncy5wcmV2ZW50ZWQpIHtcbiAgICAgICAgYXJncy5wcmV2ZW50ZWQgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhY3R1YWxUcmlnZ2VyLmNhbGwodGhpcywgbmFtZSwgYXJncyk7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUudG9nZ2xlRHJvcGRvd24gPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuKCk7XG4gICAgfVxuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRyaWdnZXIoJ3F1ZXJ5Jywge30pO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24gKGV2dCkge1xuICAgIGlmICghdGhpcy5pc09wZW4oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudHJpZ2dlcignY2xvc2UnLCB7IG9yaWdpbmFsRXZlbnQgOiBldnQgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gYWJzdHJhY3QgdGhlIFwiZW5hYmxlZFwiIChub3QgXCJkaXNhYmxlZFwiKSBzdGF0ZSBvZiB0aGlzXG4gICAqIG9iamVjdC5cbiAgICpcbiAgICogQHJldHVybiB7dHJ1ZX0gaWYgdGhlIGluc3RhbmNlIGlzIG5vdCBkaXNhYmxlZC5cbiAgICogQHJldHVybiB7ZmFsc2V9IGlmIHRoZSBpbnN0YW5jZSBpcyBkaXNhYmxlZC5cbiAgICovXG4gIFNlbGVjdDIucHJvdG90eXBlLmlzRW5hYmxlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gIXRoaXMuaXNEaXNhYmxlZCgpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGFic3RyYWN0IHRoZSBcImRpc2FibGVkXCIgc3RhdGUgb2YgdGhpcyBvYmplY3QuXG4gICAqXG4gICAqIEByZXR1cm4ge3RydWV9IGlmIHRoZSBkaXNhYmxlZCBvcHRpb24gaXMgdHJ1ZS5cbiAgICogQHJldHVybiB7ZmFsc2V9IGlmIHRoZSBkaXNhYmxlZCBvcHRpb24gaXMgZmFsc2UuXG4gICAqL1xuICBTZWxlY3QyLnByb3RvdHlwZS5pc0Rpc2FibGVkID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZ2V0KCdkaXNhYmxlZCcpO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLmlzT3BlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy4kY29udGFpbmVyWzBdLmNsYXNzTGlzdC5jb250YWlucygnc2VsZWN0Mi1jb250YWluZXItLW9wZW4nKTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5oYXNGb2N1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy4kY29udGFpbmVyWzBdLmNsYXNzTGlzdC5jb250YWlucygnc2VsZWN0Mi1jb250YWluZXItLWZvY3VzJyk7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIC8vIE5vIG5lZWQgdG8gcmUtdHJpZ2dlciBmb2N1cyBldmVudHMgaWYgd2UgYXJlIGFscmVhZHkgZm9jdXNlZFxuICAgIGlmICh0aGlzLmhhc0ZvY3VzKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLiRjb250YWluZXJbMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1jb250YWluZXItLWZvY3VzJyk7XG4gICAgdGhpcy50cmlnZ2VyKCdmb2N1cycsIHt9KTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5lbmFibGUgPSBmdW5jdGlvbiAoYXJncykge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZ2V0KCdkZWJ1ZycpICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnU2VsZWN0MjogVGhlIGBzZWxlY3QyKFwiZW5hYmxlXCIpYCBtZXRob2QgaGFzIGJlZW4gZGVwcmVjYXRlZCBhbmQgd2lsbCcgK1xuICAgICAgICAnIGJlIHJlbW92ZWQgaW4gbGF0ZXIgU2VsZWN0MiB2ZXJzaW9ucy4gVXNlICRlbGVtZW50LnByb3AoXCJkaXNhYmxlZFwiKScgK1xuICAgICAgICAnIGluc3RlYWQuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoYXJncyA9PSBudWxsIHx8IGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICBhcmdzID0gW3RydWVdO1xuICAgIH1cblxuICAgIHZhciBkaXNhYmxlZCA9ICFhcmdzWzBdO1xuXG4gICAgdGhpcy4kZWxlbWVudC5wcm9wKCdkaXNhYmxlZCcsIGRpc2FibGVkKTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5kYXRhID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZ2V0KCdkZWJ1ZycpICYmXG4gICAgICAgIGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnU2VsZWN0MjogRGF0YSBjYW4gbm8gbG9uZ2VyIGJlIHNldCB1c2luZyBgc2VsZWN0MihcImRhdGFcIilgLiBZb3UgJyArXG4gICAgICAgICdzaG91bGQgY29uc2lkZXIgc2V0dGluZyB0aGUgdmFsdWUgaW5zdGVhZCB1c2luZyBgJGVsZW1lbnQudmFsKClgLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdmFyIGRhdGEgPSBbXTtcblxuICAgIHRoaXMuZGF0YUFkYXB0ZXIuY3VycmVudChmdW5jdGlvbiAoY3VycmVudERhdGEpIHtcbiAgICAgIGRhdGEgPSBjdXJyZW50RGF0YTtcbiAgICB9KTtcblxuICAgIHJldHVybiBkYXRhO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLnZhbCA9IGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5nZXQoJ2RlYnVnJykgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS53YXJuKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdTZWxlY3QyOiBUaGUgYHNlbGVjdDIoXCJ2YWxcIilgIG1ldGhvZCBoYXMgYmVlbiBkZXByZWNhdGVkIGFuZCB3aWxsIGJlJyArXG4gICAgICAgICcgcmVtb3ZlZCBpbiBsYXRlciBTZWxlY3QyIHZlcnNpb25zLiBVc2UgJGVsZW1lbnQudmFsKCkgaW5zdGVhZC4nXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChhcmdzID09IG51bGwgfHwgYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLiRlbGVtZW50LnZhbCgpO1xuICAgIH1cblxuICAgIHZhciBuZXdWYWwgPSBhcmdzWzBdO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobmV3VmFsKSkge1xuICAgICAgbmV3VmFsID0gbmV3VmFsLm1hcChmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgIHJldHVybiBvYmoudG9TdHJpbmcoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuJGVsZW1lbnQudmFsKG5ld1ZhbCkudHJpZ2dlcignaW5wdXQnKS50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIFV0aWxzLlJlbW92ZURhdGEodGhpcy4kY29udGFpbmVyWzBdKTtcbiAgICB0aGlzLiRjb250YWluZXIucmVtb3ZlKCk7XG5cbiAgICB0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5fb2JzZXJ2ZXIgPSBudWxsO1xuXG4gICAgdGhpcy5fc3luY0EgPSBudWxsO1xuICAgIHRoaXMuX3N5bmNTID0gbnVsbDtcblxuICAgIHRoaXMuJGVsZW1lbnQub2ZmKCcuc2VsZWN0MicpO1xuICAgIHRoaXMuJGVsZW1lbnQuYXR0cigndGFiaW5kZXgnLFxuICAgIFV0aWxzLkdldERhdGEodGhpcy4kZWxlbWVudFswXSwgJ29sZC10YWJpbmRleCcpKTtcblxuICAgIHRoaXMuJGVsZW1lbnRbMF0uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0Mi1oaWRkZW4tYWNjZXNzaWJsZScpO1xuICAgIHRoaXMuJGVsZW1lbnQuYXR0cignYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcbiAgICBVdGlscy5SZW1vdmVEYXRhKHRoaXMuJGVsZW1lbnRbMF0pO1xuICAgIHRoaXMuJGVsZW1lbnQucmVtb3ZlRGF0YSgnc2VsZWN0MicpO1xuXG4gICAgdGhpcy5kYXRhQWRhcHRlci5kZXN0cm95KCk7XG4gICAgdGhpcy5zZWxlY3Rpb24uZGVzdHJveSgpO1xuICAgIHRoaXMuZHJvcGRvd24uZGVzdHJveSgpO1xuICAgIHRoaXMucmVzdWx0cy5kZXN0cm95KCk7XG5cbiAgICB0aGlzLmRhdGFBZGFwdGVyID0gbnVsbDtcbiAgICB0aGlzLnNlbGVjdGlvbiA9IG51bGw7XG4gICAgdGhpcy5kcm9wZG93biA9IG51bGw7XG4gICAgdGhpcy5yZXN1bHRzID0gbnVsbDtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRjb250YWluZXIgPSAkKFxuICAgICAgJzxzcGFuIGNsYXNzPVwic2VsZWN0MiBzZWxlY3QyLWNvbnRhaW5lclwiPicgK1xuICAgICAgICAnPHNwYW4gY2xhc3M9XCJzZWxlY3Rpb25cIj48L3NwYW4+JyArXG4gICAgICAgICc8c3BhbiBjbGFzcz1cImRyb3Bkb3duLXdyYXBwZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+JyArXG4gICAgICAnPC9zcGFuPidcbiAgICApO1xuXG4gICAgJGNvbnRhaW5lci5hdHRyKCdkaXInLCB0aGlzLm9wdGlvbnMuZ2V0KCdkaXInKSk7XG5cbiAgICB0aGlzLiRjb250YWluZXIgPSAkY29udGFpbmVyO1xuXG4gICAgdGhpcy4kY29udGFpbmVyWzBdLmNsYXNzTGlzdFxuICAgICAgLmFkZCgnc2VsZWN0Mi1jb250YWluZXItLScgKyB0aGlzLm9wdGlvbnMuZ2V0KCd0aGVtZScpKTtcblxuICAgIFV0aWxzLlN0b3JlRGF0YSgkY29udGFpbmVyWzBdLCAnZWxlbWVudCcsIHRoaXMuJGVsZW1lbnQpO1xuXG4gICAgcmV0dXJuICRjb250YWluZXI7XG4gIH07XG5cbiAgcmV0dXJuIFNlbGVjdDI7XG59KTtcblxuUzIuZGVmaW5lKCdqcXVlcnktbW91c2V3aGVlbCcsW1xuICAnanF1ZXJ5J1xuXSwgZnVuY3Rpb24gKCQpIHtcbiAgLy8gVXNlZCB0byBzaGltIGpRdWVyeS5tb3VzZXdoZWVsIGZvciBub24tZnVsbCBidWlsZHMuXG4gIHJldHVybiAkO1xufSk7XG5cblMyLmRlZmluZSgnanF1ZXJ5LnNlbGVjdDInLFtcbiAgJ2pxdWVyeScsXG4gICdqcXVlcnktbW91c2V3aGVlbCcsXG5cbiAgJy4vc2VsZWN0Mi9jb3JlJyxcbiAgJy4vc2VsZWN0Mi9kZWZhdWx0cycsXG4gICcuL3NlbGVjdDIvdXRpbHMnXG5dLCBmdW5jdGlvbiAoJCwgXywgU2VsZWN0MiwgRGVmYXVsdHMsIFV0aWxzKSB7XG4gIGlmICgkLmZuLnNlbGVjdDIgPT0gbnVsbCkge1xuICAgIC8vIEFsbCBtZXRob2RzIHRoYXQgc2hvdWxkIHJldHVybiB0aGUgZWxlbWVudFxuICAgIHZhciB0aGlzTWV0aG9kcyA9IFsnb3BlbicsICdjbG9zZScsICdkZXN0cm95J107XG5cbiAgICAkLmZuLnNlbGVjdDIgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB2YXIgaW5zdGFuY2VPcHRpb25zID0gJC5leHRlbmQodHJ1ZSwge30sIG9wdGlvbnMpO1xuXG4gICAgICAgICAgdmFyIGluc3RhbmNlID0gbmV3IFNlbGVjdDIoJCh0aGlzKSwgaW5zdGFuY2VPcHRpb25zKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJykge1xuICAgICAgICB2YXIgcmV0O1xuICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG5cbiAgICAgICAgdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB2YXIgaW5zdGFuY2UgPSBVdGlscy5HZXREYXRhKHRoaXMsICdzZWxlY3QyJyk7XG5cbiAgICAgICAgICBpZiAoaW5zdGFuY2UgPT0gbnVsbCAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAnVGhlIHNlbGVjdDIoXFwnJyArIG9wdGlvbnMgKyAnXFwnKSBtZXRob2Qgd2FzIGNhbGxlZCBvbiBhbiAnICtcbiAgICAgICAgICAgICAgJ2VsZW1lbnQgdGhhdCBpcyBub3QgdXNpbmcgU2VsZWN0Mi4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldCA9IGluc3RhbmNlW29wdGlvbnNdLmFwcGx5KGluc3RhbmNlLCBhcmdzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgd2Ugc2hvdWxkIGJlIHJldHVybmluZyBgdGhpc2BcbiAgICAgICAgaWYgKHRoaXNNZXRob2RzLmluZGV4T2Yob3B0aW9ucykgPiAtMSkge1xuICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBhcmd1bWVudHMgZm9yIFNlbGVjdDI6ICcgKyBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgaWYgKCQuZm4uc2VsZWN0Mi5kZWZhdWx0cyA9PSBudWxsKSB7XG4gICAgJC5mbi5zZWxlY3QyLmRlZmF1bHRzID0gRGVmYXVsdHM7XG4gIH1cblxuICByZXR1cm4gU2VsZWN0Mjtcbn0pO1xuXG4gIC8vIFJldHVybiB0aGUgQU1EIGxvYWRlciBjb25maWd1cmF0aW9uIHNvIGl0IGNhbiBiZSB1c2VkIG91dHNpZGUgb2YgdGhpcyBmaWxlXG4gIHJldHVybiB7XG4gICAgZGVmaW5lOiBTMi5kZWZpbmUsXG4gICAgcmVxdWlyZTogUzIucmVxdWlyZVxuICB9O1xufSgpKTtcblxuICAvLyBBdXRvbG9hZCB0aGUgalF1ZXJ5IGJpbmRpbmdzXG4gIC8vIFdlIGtub3cgdGhhdCBhbGwgb2YgdGhlIG1vZHVsZXMgZXhpc3QgYWJvdmUgdGhpcywgc28gd2UncmUgc2FmZVxuICB2YXIgc2VsZWN0MiA9IFMyLnJlcXVpcmUoJ2pxdWVyeS5zZWxlY3QyJyk7XG5cbiAgLy8gSG9sZCB0aGUgQU1EIG1vZHVsZSByZWZlcmVuY2VzIG9uIHRoZSBqUXVlcnkgZnVuY3Rpb24gdGhhdCB3YXMganVzdCBsb2FkZWRcbiAgLy8gVGhpcyBhbGxvd3MgU2VsZWN0MiB0byB1c2UgdGhlIGludGVybmFsIGxvYWRlciBvdXRzaWRlIG9mIHRoaXMgZmlsZSwgc3VjaFxuICAvLyBhcyBpbiB0aGUgbGFuZ3VhZ2UgZmlsZXMuXG4gIGpRdWVyeS5mbi5zZWxlY3QyLmFtZCA9IFMyO1xuXG4gIC8vIFJldHVybiB0aGUgU2VsZWN0MiBpbnN0YW5jZSBmb3IgYW55b25lIHdobyBpcyBpbXBvcnRpbmcgaXQuXG4gIHJldHVybiBzZWxlY3QyO1xufSkpO1xuIiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi9tYWluLmNzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi9kZWZhdWx0LmNzcz92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9Y3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBpc09sZElFID0gZnVuY3Rpb24gaXNPbGRJRSgpIHtcbiAgdmFyIG1lbW87XG4gIHJldHVybiBmdW5jdGlvbiBtZW1vcml6ZSgpIHtcbiAgICBpZiAodHlwZW9mIG1lbW8gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBUZXN0IGZvciBJRSA8PSA5IGFzIHByb3Bvc2VkIGJ5IEJyb3dzZXJoYWNrc1xuICAgICAgLy8gQHNlZSBodHRwOi8vYnJvd3NlcmhhY2tzLmNvbS8jaGFjay1lNzFkODY5MmY2NTMzNDE3M2ZlZTcxNWMyMjJjYjgwNVxuICAgICAgLy8gVGVzdHMgZm9yIGV4aXN0ZW5jZSBvZiBzdGFuZGFyZCBnbG9iYWxzIGlzIHRvIGFsbG93IHN0eWxlLWxvYWRlclxuICAgICAgLy8gdG8gb3BlcmF0ZSBjb3JyZWN0bHkgaW50byBub24tc3RhbmRhcmQgZW52aXJvbm1lbnRzXG4gICAgICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrLWNvbnRyaWIvc3R5bGUtbG9hZGVyL2lzc3Vlcy8xNzdcbiAgICAgIG1lbW8gPSBCb29sZWFuKHdpbmRvdyAmJiBkb2N1bWVudCAmJiBkb2N1bWVudC5hbGwgJiYgIXdpbmRvdy5hdG9iKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVtbztcbiAgfTtcbn0oKTtcblxudmFyIGdldFRhcmdldCA9IGZ1bmN0aW9uIGdldFRhcmdldCgpIHtcbiAgdmFyIG1lbW8gPSB7fTtcbiAgcmV0dXJuIGZ1bmN0aW9uIG1lbW9yaXplKHRhcmdldCkge1xuICAgIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpOyAvLyBTcGVjaWFsIGNhc2UgdG8gcmV0dXJuIGhlYWQgb2YgaWZyYW1lIGluc3RlYWQgb2YgaWZyYW1lIGl0c2VsZlxuXG4gICAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhY2Nlc3MgdG8gaWZyYW1lIGlzIGJsb2NrZWRcbiAgICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICAgIHN0eWxlVGFyZ2V0ID0gc3R5bGVUYXJnZXQuY29udGVudERvY3VtZW50LmhlYWQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICAgIHN0eWxlVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBtZW1vW3RhcmdldF0gPSBzdHlsZVRhcmdldDtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVtb1t0YXJnZXRdO1xuICB9O1xufSgpO1xuXG52YXIgc3R5bGVzSW5Eb20gPSBbXTtcblxuZnVuY3Rpb24gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcikge1xuICB2YXIgcmVzdWx0ID0gLTE7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXNJbkRvbS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzdHlsZXNJbkRvbVtpXS5pZGVudGlmaWVyID09PSBpZGVudGlmaWVyKSB7XG4gICAgICByZXN1bHQgPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpIHtcbiAgdmFyIGlkQ291bnRNYXAgPSB7fTtcbiAgdmFyIGlkZW50aWZpZXJzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldO1xuICAgIHZhciBpZCA9IG9wdGlvbnMuYmFzZSA/IGl0ZW1bMF0gKyBvcHRpb25zLmJhc2UgOiBpdGVtWzBdO1xuICAgIHZhciBjb3VudCA9IGlkQ291bnRNYXBbaWRdIHx8IDA7XG4gICAgdmFyIGlkZW50aWZpZXIgPSBcIlwiLmNvbmNhdChpZCwgXCIgXCIpLmNvbmNhdChjb3VudCk7XG4gICAgaWRDb3VudE1hcFtpZF0gPSBjb3VudCArIDE7XG4gICAgdmFyIGluZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgdmFyIG9iaiA9IHtcbiAgICAgIGNzczogaXRlbVsxXSxcbiAgICAgIG1lZGlhOiBpdGVtWzJdLFxuICAgICAgc291cmNlTWFwOiBpdGVtWzNdXG4gICAgfTtcblxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHN0eWxlc0luRG9tW2luZGV4XS5yZWZlcmVuY2VzKys7XG4gICAgICBzdHlsZXNJbkRvbVtpbmRleF0udXBkYXRlcihvYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZXNJbkRvbS5wdXNoKHtcbiAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgdXBkYXRlcjogYWRkU3R5bGUob2JqLCBvcHRpb25zKSxcbiAgICAgICAgcmVmZXJlbmNlczogMVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuXG4gIHJldHVybiBpZGVudGlmaWVycztcbn1cblxuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgdmFyIGF0dHJpYnV0ZXMgPSBvcHRpb25zLmF0dHJpYnV0ZXMgfHwge307XG5cbiAgaWYgKHR5cGVvZiBhdHRyaWJ1dGVzLm5vbmNlID09PSAndW5kZWZpbmVkJykge1xuICAgIHZhciBub25jZSA9IHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gJ3VuZGVmaW5lZCcgPyBfX3dlYnBhY2tfbm9uY2VfXyA6IG51bGw7XG5cbiAgICBpZiAobm9uY2UpIHtcbiAgICAgIGF0dHJpYnV0ZXMubm9uY2UgPSBub25jZTtcbiAgICB9XG4gIH1cblxuICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBzdHlsZS5zZXRBdHRyaWJ1dGUoa2V5LCBhdHRyaWJ1dGVzW2tleV0pO1xuICB9KTtcblxuICBpZiAodHlwZW9mIG9wdGlvbnMuaW5zZXJ0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgb3B0aW9ucy5pbnNlcnQoc3R5bGUpO1xuICB9IGVsc2Uge1xuICAgIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQob3B0aW9ucy5pbnNlcnQgfHwgJ2hlYWQnKTtcblxuICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICAgIH1cblxuICAgIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gIH1cblxuICByZXR1cm4gc3R5bGU7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZSkge1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgaWZcbiAgaWYgKHN0eWxlLnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdHlsZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlKTtcbn1cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5cbnZhciByZXBsYWNlVGV4dCA9IGZ1bmN0aW9uIHJlcGxhY2VUZXh0KCkge1xuICB2YXIgdGV4dFN0b3JlID0gW107XG4gIHJldHVybiBmdW5jdGlvbiByZXBsYWNlKGluZGV4LCByZXBsYWNlbWVudCkge1xuICAgIHRleHRTdG9yZVtpbmRleF0gPSByZXBsYWNlbWVudDtcbiAgICByZXR1cm4gdGV4dFN0b3JlLmZpbHRlcihCb29sZWFuKS5qb2luKCdcXG4nKTtcbiAgfTtcbn0oKTtcblxuZnVuY3Rpb24gYXBwbHlUb1NpbmdsZXRvblRhZyhzdHlsZSwgaW5kZXgsIHJlbW92ZSwgb2JqKSB7XG4gIHZhciBjc3MgPSByZW1vdmUgPyAnJyA6IG9iai5tZWRpYSA/IFwiQG1lZGlhIFwiLmNvbmNhdChvYmoubWVkaWEsIFwiIHtcIikuY29uY2F0KG9iai5jc3MsIFwifVwiKSA6IG9iai5jc3M7IC8vIEZvciBvbGQgSUVcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSByZXBsYWNlVGV4dChpbmRleCwgY3NzKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgY3NzTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcyk7XG4gICAgdmFyIGNoaWxkTm9kZXMgPSBzdHlsZS5jaGlsZE5vZGVzO1xuXG4gICAgaWYgKGNoaWxkTm9kZXNbaW5kZXhdKSB7XG4gICAgICBzdHlsZS5yZW1vdmVDaGlsZChjaGlsZE5vZGVzW2luZGV4XSk7XG4gICAgfVxuXG4gICAgaWYgKGNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICBzdHlsZS5pbnNlcnRCZWZvcmUoY3NzTm9kZSwgY2hpbGROb2Rlc1tpbmRleF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZS5hcHBlbmRDaGlsZChjc3NOb2RlKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlUb1RhZyhzdHlsZSwgb3B0aW9ucywgb2JqKSB7XG4gIHZhciBjc3MgPSBvYmouY3NzO1xuICB2YXIgbWVkaWEgPSBvYmoubWVkaWE7XG4gIHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwO1xuXG4gIGlmIChtZWRpYSkge1xuICAgIHN0eWxlLnNldEF0dHJpYnV0ZSgnbWVkaWEnLCBtZWRpYSk7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUucmVtb3ZlQXR0cmlidXRlKCdtZWRpYScpO1xuICB9XG5cbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjc3MgKz0gXCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiLmNvbmNhdChidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpLCBcIiAqL1wiKTtcbiAgfSAvLyBGb3Igb2xkIElFXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuXG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlLmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlLnJlbW92ZUNoaWxkKHN0eWxlLmZpcnN0Q2hpbGQpO1xuICAgIH1cblxuICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5cbnZhciBzaW5nbGV0b24gPSBudWxsO1xudmFyIHNpbmdsZXRvbkNvdW50ZXIgPSAwO1xuXG5mdW5jdGlvbiBhZGRTdHlsZShvYmosIG9wdGlvbnMpIHtcbiAgdmFyIHN0eWxlO1xuICB2YXIgdXBkYXRlO1xuICB2YXIgcmVtb3ZlO1xuXG4gIGlmIChvcHRpb25zLnNpbmdsZXRvbikge1xuICAgIHZhciBzdHlsZUluZGV4ID0gc2luZ2xldG9uQ291bnRlcisrO1xuICAgIHN0eWxlID0gc2luZ2xldG9uIHx8IChzaW5nbGV0b24gPSBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykpO1xuICAgIHVwZGF0ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZSwgc3R5bGVJbmRleCwgZmFsc2UpO1xuICAgIHJlbW92ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZSwgc3R5bGVJbmRleCwgdHJ1ZSk7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUgPSBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gICAgdXBkYXRlID0gYXBwbHlUb1RhZy5iaW5kKG51bGwsIHN0eWxlLCBvcHRpb25zKTtcblxuICAgIHJlbW92ZSA9IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZSk7XG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZShvYmopO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlU3R5bGUobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZShvYmogPSBuZXdPYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICByZW1vdmUoKTtcbiAgICB9XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGxpc3QsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307IC8vIEZvcmNlIHNpbmdsZS10YWcgc29sdXRpb24gb24gSUU2LTksIHdoaWNoIGhhcyBhIGhhcmQgbGltaXQgb24gdGhlICMgb2YgPHN0eWxlPlxuICAvLyB0YWdzIGl0IHdpbGwgYWxsb3cgb24gYSBwYWdlXG5cbiAgaWYgKCFvcHRpb25zLnNpbmdsZXRvbiAmJiB0eXBlb2Ygb3B0aW9ucy5zaW5nbGV0b24gIT09ICdib29sZWFuJykge1xuICAgIG9wdGlvbnMuc2luZ2xldG9uID0gaXNPbGRJRSgpO1xuICB9XG5cbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuXG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXdMaXN0KSAhPT0gJ1tvYmplY3QgQXJyYXldJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5Eb21baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG5cbiAgICB2YXIgbmV3TGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKG5ld0xpc3QsIG9wdGlvbnMpO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tfaV07XG5cbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG5cbiAgICAgIGlmIChzdHlsZXNJbkRvbVtfaW5kZXhdLnJlZmVyZW5jZXMgPT09IDApIHtcbiAgICAgICAgc3R5bGVzSW5Eb21bX2luZGV4XS51cGRhdGVyKCk7XG5cbiAgICAgICAgc3R5bGVzSW5Eb20uc3BsaWNlKF9pbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJpbXBvcnQgeyBjb21wdXRlZCwgb3BlbkJsb2NrLCBjcmVhdGVCbG9jaywgbWVyZ2VQcm9wcyB9IGZyb20gJ3Z1ZSc7XG5cbnZhciBzY3JpcHQgPSB7XG4gIG5hbWU6ICdTdmdWdWUnLFxuICBwcm9wczoge1xuICAgIGljb246IFN0cmluZ1xuICB9LFxuXG4gIHNldHVwKHByb3BzKSB7XG4gICAgY29uc3QgaWNvblBhdGggPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5pY29uLnJlcGxhY2UobmV3IFJlZ0V4cCgnLicucmVwbGFjZSgvKFsuKis/Xj0hOiR7fSgpfFxcW1xcXVxcL1xcXFxdKS9nLCAnXFxcXCQxJyksICdnJyksICcvJykgKyAnLnN2ZycpO1xuICAgIGNvbnN0IHN2Z1N0cmluZyA9IGNvbXB1dGVkKCgpID0+IHJlcXVpcmUoYHN2Zy1maWxlcy1wYXRoLyR7aWNvblBhdGgudmFsdWV9YCkuZGVmYXVsdCk7XG4gICAgY29uc3Qgc3ZnQXR0cmlidXRlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGlmICghc3ZnU3RyaW5nKSByZXR1cm4ge307XG4gICAgICBsZXQgd3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgd3JhcHBlci5pbm5lckhUTUwgPSBzdmdTdHJpbmcudmFsdWU7XG4gICAgICBsZXQgYXR0cmlidXRlc0xpc3QgPSB3cmFwcGVyLmZpcnN0RWxlbWVudENoaWxkLmF0dHJpYnV0ZXM7XG4gICAgICBsZXQgYXR0cmlidXRlcyA9IHt9O1xuICAgICAgT2JqZWN0LmtleXMoYXR0cmlidXRlc0xpc3QpLm1hcChpID0+IGF0dHJpYnV0ZXNbYXR0cmlidXRlc0xpc3RbaV0ubmFtZV0gPSBhdHRyaWJ1dGVzTGlzdFtpXS52YWx1ZSk7XG4gICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9KTtcbiAgICBjb25zdCBzdmdDb250ZW50ID0gY29tcHV0ZWQoKCkgPT4gc3ZnU3RyaW5nID8gc3ZnU3RyaW5nLnZhbHVlLnJlcGxhY2UoL148c3ZnW14+XSo+fDxcXC9zdmc+JC9nLCAnJykgOiBudWxsKTtcbiAgICByZXR1cm4ge1xuICAgICAgc3ZnQXR0cmlidXRlcyxcbiAgICAgIHN2Z0NvbnRlbnRcbiAgICB9O1xuICB9XG5cbn07XG5cbmZ1bmN0aW9uIHJlbmRlcihfY3R4LCBfY2FjaGUsICRwcm9wcywgJHNldHVwLCAkZGF0YSwgJG9wdGlvbnMpIHtcbiAgcmV0dXJuIG9wZW5CbG9jaygpLCBjcmVhdGVCbG9jayhcInN2Z1wiLCBtZXJnZVByb3BzKCRzZXR1cC5zdmdBdHRyaWJ1dGVzLCB7XG4gICAgaW5uZXJIVE1MOiAkc2V0dXAuc3ZnQ29udGVudFxuICB9KSwgbnVsbCwgMTYsIFtcImlubmVySFRNTFwiXSk7XG59XG5cbnNjcmlwdC5yZW5kZXIgPSByZW5kZXI7XG5cbi8vIEltcG9ydCB2dWUgY29tcG9uZW50XG4vLyBJSUZFIGluamVjdHMgaW5zdGFsbCBmdW5jdGlvbiBpbnRvIGNvbXBvbmVudCwgYWxsb3dpbmcgY29tcG9uZW50XG4vLyB0byBiZSByZWdpc3RlcmVkIHZpYSBWdWUudXNlKCkgYXMgd2VsbCBhcyBWdWUuY29tcG9uZW50KCksXG5cbnZhciBlbnRyeV9lc20gPSAvKiNfX1BVUkVfXyovKCgpID0+IHtcbiAgLy8gR2V0IGNvbXBvbmVudCBpbnN0YW5jZVxuICBjb25zdCBpbnN0YWxsYWJsZSA9IHNjcmlwdDsgLy8gQXR0YWNoIGluc3RhbGwgZnVuY3Rpb24gZXhlY3V0ZWQgYnkgVnVlLnVzZSgpXG5cbiAgaW5zdGFsbGFibGUuaW5zdGFsbCA9IGFwcCA9PiB7XG4gICAgYXBwLmNvbXBvbmVudCgnU3ZnVnVlJywgaW5zdGFsbGFibGUpO1xuICB9O1xuXG4gIHJldHVybiBpbnN0YWxsYWJsZTtcbn0pKCk7IC8vIEl0J3MgcG9zc2libGUgdG8gZXhwb3NlIG5hbWVkIGV4cG9ydHMgd2hlbiB3cml0aW5nIGNvbXBvbmVudHMgdGhhdCBjYW5cbi8vIGFsc28gYmUgdXNlZCBhcyBkaXJlY3RpdmVzLCBldGMuIC0gZWcuIGltcG9ydCB7IFJvbGx1cERlbW9EaXJlY3RpdmUgfSBmcm9tICdyb2xsdXAtZGVtbyc7XG4vLyBleHBvcnQgY29uc3QgUm9sbHVwRGVtb0RpcmVjdGl2ZSA9IGRpcmVjdGl2ZTtcblxuZXhwb3J0IGRlZmF1bHQgZW50cnlfZXNtO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vLyBydW50aW1lIGhlbHBlciBmb3Igc2V0dGluZyBwcm9wZXJ0aWVzIG9uIGNvbXBvbmVudHNcbi8vIGluIGEgdHJlZS1zaGFrYWJsZSB3YXlcbmV4cG9ydHMuZGVmYXVsdCA9IChzZmMsIHByb3BzKSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gc2ZjLl9fdmNjT3B0cyB8fCBzZmM7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWxdIG9mIHByb3BzKSB7XG4gICAgICAgIHRhcmdldFtrZXldID0gdmFsO1xuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xufTtcbiIsImltcG9ydCAqIGFzIHJ1bnRpbWVEb20gZnJvbSAnQHZ1ZS9ydW50aW1lLWRvbSc7XG5pbXBvcnQgeyBpbml0Q3VzdG9tRm9ybWF0dGVyLCB3YXJuLCByZWdpc3RlclJ1bnRpbWVDb21waWxlciB9IGZyb20gJ0B2dWUvcnVudGltZS1kb20nO1xuZXhwb3J0ICogZnJvbSAnQHZ1ZS9ydW50aW1lLWRvbSc7XG5pbXBvcnQgeyBjb21waWxlIH0gZnJvbSAnQHZ1ZS9jb21waWxlci1kb20nO1xuaW1wb3J0IHsgaXNTdHJpbmcsIE5PT1AsIGV4dGVuZCwgZ2VuZXJhdGVDb2RlRnJhbWUgfSBmcm9tICdAdnVlL3NoYXJlZCc7XG5cbmZ1bmN0aW9uIGluaXREZXYoKSB7XHJcbiAgICB7XHJcbiAgICAgICAgaW5pdEN1c3RvbUZvcm1hdHRlcigpO1xyXG4gICAgfVxyXG59XG5cbi8vIFRoaXMgZW50cnkgaXMgdGhlIFwiZnVsbC1idWlsZFwiIHRoYXQgaW5jbHVkZXMgYm90aCB0aGUgcnVudGltZVxyXG5pZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICBpbml0RGV2KCk7XHJcbn1cclxuY29uc3QgY29tcGlsZUNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuZnVuY3Rpb24gY29tcGlsZVRvRnVuY3Rpb24odGVtcGxhdGUsIG9wdGlvbnMpIHtcclxuICAgIGlmICghaXNTdHJpbmcodGVtcGxhdGUpKSB7XHJcbiAgICAgICAgaWYgKHRlbXBsYXRlLm5vZGVUeXBlKSB7XHJcbiAgICAgICAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGUuaW5uZXJIVE1MO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHdhcm4oYGludmFsaWQgdGVtcGxhdGUgb3B0aW9uOiBgLCB0ZW1wbGF0ZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBOT09QO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGtleSA9IHRlbXBsYXRlO1xyXG4gICAgY29uc3QgY2FjaGVkID0gY29tcGlsZUNhY2hlW2tleV07XHJcbiAgICBpZiAoY2FjaGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIGNhY2hlZDtcclxuICAgIH1cclxuICAgIGlmICh0ZW1wbGF0ZVswXSA9PT0gJyMnKSB7XHJcbiAgICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRlbXBsYXRlKTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFlbCkge1xyXG4gICAgICAgICAgICB3YXJuKGBUZW1wbGF0ZSBlbGVtZW50IG5vdCBmb3VuZCBvciBpcyBlbXB0eTogJHt0ZW1wbGF0ZX1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gX19VTlNBRkVfX1xyXG4gICAgICAgIC8vIFJlYXNvbjogcG90ZW50aWFsIGV4ZWN1dGlvbiBvZiBKUyBleHByZXNzaW9ucyBpbiBpbi1ET00gdGVtcGxhdGUuXHJcbiAgICAgICAgLy8gVGhlIHVzZXIgbXVzdCBtYWtlIHN1cmUgdGhlIGluLURPTSB0ZW1wbGF0ZSBpcyB0cnVzdGVkLiBJZiBpdCdzIHJlbmRlcmVkXHJcbiAgICAgICAgLy8gYnkgdGhlIHNlcnZlciwgdGhlIHRlbXBsYXRlIHNob3VsZCBub3QgY29udGFpbiBhbnkgdXNlciBkYXRhLlxyXG4gICAgICAgIHRlbXBsYXRlID0gZWwgPyBlbC5pbm5lckhUTUwgOiBgYDtcclxuICAgIH1cclxuICAgIGNvbnN0IG9wdHMgPSBleHRlbmQoe1xyXG4gICAgICAgIGhvaXN0U3RhdGljOiB0cnVlLFxyXG4gICAgICAgIG9uRXJyb3I6IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IG9uRXJyb3IgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgb25XYXJuOiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBlID0+IG9uRXJyb3IoZSwgdHJ1ZSkgOiBOT09QXHJcbiAgICB9LCBvcHRpb25zKTtcclxuICAgIGlmICghb3B0cy5pc0N1c3RvbUVsZW1lbnQgJiYgdHlwZW9mIGN1c3RvbUVsZW1lbnRzICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgIG9wdHMuaXNDdXN0b21FbGVtZW50ID0gdGFnID0+ICEhY3VzdG9tRWxlbWVudHMuZ2V0KHRhZyk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IGNvZGUgfSA9IGNvbXBpbGUodGVtcGxhdGUsIG9wdHMpO1xyXG4gICAgZnVuY3Rpb24gb25FcnJvcihlcnIsIGFzV2FybmluZyA9IGZhbHNlKSB7XHJcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGFzV2FybmluZ1xyXG4gICAgICAgICAgICA/IGVyci5tZXNzYWdlXHJcbiAgICAgICAgICAgIDogYFRlbXBsYXRlIGNvbXBpbGF0aW9uIGVycm9yOiAke2Vyci5tZXNzYWdlfWA7XHJcbiAgICAgICAgY29uc3QgY29kZUZyYW1lID0gZXJyLmxvYyAmJlxyXG4gICAgICAgICAgICBnZW5lcmF0ZUNvZGVGcmFtZSh0ZW1wbGF0ZSwgZXJyLmxvYy5zdGFydC5vZmZzZXQsIGVyci5sb2MuZW5kLm9mZnNldCk7XHJcbiAgICAgICAgd2Fybihjb2RlRnJhbWUgPyBgJHttZXNzYWdlfVxcbiR7Y29kZUZyYW1lfWAgOiBtZXNzYWdlKTtcclxuICAgIH1cclxuICAgIC8vIFRoZSB3aWxkY2FyZCBpbXBvcnQgcmVzdWx0cyBpbiBhIGh1Z2Ugb2JqZWN0IHdpdGggZXZlcnkgZXhwb3J0XHJcbiAgICAvLyB3aXRoIGtleXMgdGhhdCBjYW5ub3QgYmUgbWFuZ2xlZCwgYW5kIGNhbiBiZSBxdWl0ZSBoZWF2eSBzaXplLXdpc2UuXHJcbiAgICAvLyBJbiB0aGUgZ2xvYmFsIGJ1aWxkIHdlIGtub3cgYFZ1ZWAgaXMgYXZhaWxhYmxlIGdsb2JhbGx5IHNvIHdlIGNhbiBhdm9pZFxyXG4gICAgLy8gdGhlIHdpbGRjYXJkIG9iamVjdC5cclxuICAgIGNvbnN0IHJlbmRlciA9IChuZXcgRnVuY3Rpb24oJ1Z1ZScsIGNvZGUpKHJ1bnRpbWVEb20pKTtcclxuICAgIHJlbmRlci5fcmMgPSB0cnVlO1xyXG4gICAgcmV0dXJuIChjb21waWxlQ2FjaGVba2V5XSA9IHJlbmRlcik7XHJcbn1cclxucmVnaXN0ZXJSdW50aW1lQ29tcGlsZXIoY29tcGlsZVRvRnVuY3Rpb24pO1xuXG5leHBvcnQgeyBjb21waWxlVG9GdW5jdGlvbiBhcyBjb21waWxlIH07XG4iLCJtb2R1bGUuZXhwb3J0cyA9XG4vKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGk6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bDogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuLyoqKioqKi8gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuLyoqKioqKi8gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3Rcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4vKioqKioqLyBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuLyoqKioqKi8gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3Rcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbi8qKioqKiovIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4vKioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gbnM7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbi8qKioqKiovIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gZ2V0dGVyO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiZmIxNVwiKTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKHtcblxuLyoqKi8gXCI4ODc1XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBfX1dFQlBBQ0tfQU1EX0RFRklORV9GQUNUT1JZX18sIF9fV0VCUEFDS19BTURfREVGSU5FX0FSUkFZX18sIF9fV0VCUEFDS19BTURfREVGSU5FX1JFU1VMVF9fOy8vIGFkZGFwdGVkIGZyb20gdGhlIGRvY3VtZW50LmN1cnJlbnRTY3JpcHQgcG9seWZpbGwgYnkgQWRhbSBNaWxsZXJcbi8vIE1JVCBsaWNlbnNlXG4vLyBzb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbWlsbGVyLWdoL2N1cnJlbnRTY3JpcHQtcG9seWZpbGxcblxuLy8gYWRkZWQgc3VwcG9ydCBmb3IgRmlyZWZveCBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIwNTA1XG5cbihmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSkge1xuICBpZiAodHJ1ZSkge1xuICAgICEoX19XRUJQQUNLX0FNRF9ERUZJTkVfQVJSQVlfXyA9IFtdLCBfX1dFQlBBQ0tfQU1EX0RFRklORV9GQUNUT1JZX18gPSAoZmFjdG9yeSksXG5cdFx0XHRcdF9fV0VCUEFDS19BTURfREVGSU5FX1JFU1VMVF9fID0gKHR5cGVvZiBfX1dFQlBBQ0tfQU1EX0RFRklORV9GQUNUT1JZX18gPT09ICdmdW5jdGlvbicgP1xuXHRcdFx0XHQoX19XRUJQQUNLX0FNRF9ERUZJTkVfRkFDVE9SWV9fLmFwcGx5KGV4cG9ydHMsIF9fV0VCUEFDS19BTURfREVGSU5FX0FSUkFZX18pKSA6IF9fV0VCUEFDS19BTURfREVGSU5FX0ZBQ1RPUllfXyksXG5cdFx0XHRcdF9fV0VCUEFDS19BTURfREVGSU5FX1JFU1VMVF9fICE9PSB1bmRlZmluZWQgJiYgKG1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0FNRF9ERUZJTkVfUkVTVUxUX18pKTtcbiAgfSBlbHNlIHt9XG59KHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB0aGlzLCBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGdldEN1cnJlbnRTY3JpcHQgKCkge1xuICAgIHZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkb2N1bWVudCwgJ2N1cnJlbnRTY3JpcHQnKVxuICAgIC8vIGZvciBjaHJvbWVcbiAgICBpZiAoIWRlc2NyaXB0b3IgJiYgJ2N1cnJlbnRTY3JpcHQnIGluIGRvY3VtZW50ICYmIGRvY3VtZW50LmN1cnJlbnRTY3JpcHQpIHtcbiAgICAgIHJldHVybiBkb2N1bWVudC5jdXJyZW50U2NyaXB0XG4gICAgfVxuXG4gICAgLy8gZm9yIG90aGVyIGJyb3dzZXJzIHdpdGggbmF0aXZlIHN1cHBvcnQgZm9yIGN1cnJlbnRTY3JpcHRcbiAgICBpZiAoZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLmdldCAhPT0gZ2V0Q3VycmVudFNjcmlwdCAmJiBkb2N1bWVudC5jdXJyZW50U2NyaXB0KSB7XG4gICAgICByZXR1cm4gZG9jdW1lbnQuY3VycmVudFNjcmlwdFxuICAgIH1cbiAgXG4gICAgLy8gSUUgOC0xMCBzdXBwb3J0IHNjcmlwdCByZWFkeVN0YXRlXG4gICAgLy8gSUUgMTErICYgRmlyZWZveCBzdXBwb3J0IHN0YWNrIHRyYWNlXG4gICAgdHJ5IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBGaW5kIHRoZSBzZWNvbmQgbWF0Y2ggZm9yIHRoZSBcImF0XCIgc3RyaW5nIHRvIGdldCBmaWxlIHNyYyB1cmwgZnJvbSBzdGFjay5cbiAgICAgIHZhciBpZVN0YWNrUmVnRXhwID0gLy4qYXQgW14oXSpcXCgoLiopOiguKyk6KC4rKVxcKSQvaWcsXG4gICAgICAgIGZmU3RhY2tSZWdFeHAgPSAvQChbXkBdKik6KFxcZCspOihcXGQrKVxccyokL2lnLFxuICAgICAgICBzdGFja0RldGFpbHMgPSBpZVN0YWNrUmVnRXhwLmV4ZWMoZXJyLnN0YWNrKSB8fCBmZlN0YWNrUmVnRXhwLmV4ZWMoZXJyLnN0YWNrKSxcbiAgICAgICAgc2NyaXB0TG9jYXRpb24gPSAoc3RhY2tEZXRhaWxzICYmIHN0YWNrRGV0YWlsc1sxXSkgfHwgZmFsc2UsXG4gICAgICAgIGxpbmUgPSAoc3RhY2tEZXRhaWxzICYmIHN0YWNrRGV0YWlsc1syXSkgfHwgZmFsc2UsXG4gICAgICAgIGN1cnJlbnRMb2NhdGlvbiA9IGRvY3VtZW50LmxvY2F0aW9uLmhyZWYucmVwbGFjZShkb2N1bWVudC5sb2NhdGlvbi5oYXNoLCAnJyksXG4gICAgICAgIHBhZ2VTb3VyY2UsXG4gICAgICAgIGlubGluZVNjcmlwdFNvdXJjZVJlZ0V4cCxcbiAgICAgICAgaW5saW5lU2NyaXB0U291cmNlLFxuICAgICAgICBzY3JpcHRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpOyAvLyBMaXZlIE5vZGVMaXN0IGNvbGxlY3Rpb25cbiAgXG4gICAgICBpZiAoc2NyaXB0TG9jYXRpb24gPT09IGN1cnJlbnRMb2NhdGlvbikge1xuICAgICAgICBwYWdlU291cmNlID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm91dGVySFRNTDtcbiAgICAgICAgaW5saW5lU2NyaXB0U291cmNlUmVnRXhwID0gbmV3IFJlZ0V4cCgnKD86W15cXFxcbl0rP1xcXFxuKXswLCcgKyAobGluZSAtIDIpICsgJ31bXjxdKjxzY3JpcHQ+KFtcXFxcZFxcXFxEXSo/KTxcXFxcL3NjcmlwdD5bXFxcXGRcXFxcRF0qJywgJ2knKTtcbiAgICAgICAgaW5saW5lU2NyaXB0U291cmNlID0gcGFnZVNvdXJjZS5yZXBsYWNlKGlubGluZVNjcmlwdFNvdXJjZVJlZ0V4cCwgJyQxJykudHJpbSgpO1xuICAgICAgfVxuICBcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAvLyBJZiByZWFkeSBzdGF0ZSBpcyBpbnRlcmFjdGl2ZSwgcmV0dXJuIHRoZSBzY3JpcHQgdGFnXG4gICAgICAgIGlmIChzY3JpcHRzW2ldLnJlYWR5U3RhdGUgPT09ICdpbnRlcmFjdGl2ZScpIHtcbiAgICAgICAgICByZXR1cm4gc2NyaXB0c1tpXTtcbiAgICAgICAgfVxuICBcbiAgICAgICAgLy8gSWYgc3JjIG1hdGNoZXMsIHJldHVybiB0aGUgc2NyaXB0IHRhZ1xuICAgICAgICBpZiAoc2NyaXB0c1tpXS5zcmMgPT09IHNjcmlwdExvY2F0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIHNjcmlwdHNbaV07XG4gICAgICAgIH1cbiAgXG4gICAgICAgIC8vIElmIGlubGluZSBzb3VyY2UgbWF0Y2hlcywgcmV0dXJuIHRoZSBzY3JpcHQgdGFnXG4gICAgICAgIGlmIChcbiAgICAgICAgICBzY3JpcHRMb2NhdGlvbiA9PT0gY3VycmVudExvY2F0aW9uICYmXG4gICAgICAgICAgc2NyaXB0c1tpXS5pbm5lckhUTUwgJiZcbiAgICAgICAgICBzY3JpcHRzW2ldLmlubmVySFRNTC50cmltKCkgPT09IGlubGluZVNjcmlwdFNvdXJjZVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gc2NyaXB0c1tpXTtcbiAgICAgICAgfVxuICAgICAgfVxuICBcbiAgICAgIC8vIElmIG5vIG1hdGNoLCByZXR1cm4gbnVsbFxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBnZXRDdXJyZW50U2NyaXB0XG59KSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiOGJiZlwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ2dWVcIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjk1ZTZcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYXBleGNoYXJ0c1wiKTtcblxuLyoqKi8gfSksXG5cbi8qKiovIFwiZmIxNVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8vIEVTTSBDT01QQVQgRkxBR1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL25vZGVfbW9kdWxlcy9AdnVlL2NsaS1zZXJ2aWNlL2xpYi9jb21tYW5kcy9idWlsZC9zZXRQdWJsaWNQYXRoLmpzXG4vLyBUaGlzIGZpbGUgaXMgaW1wb3J0ZWQgaW50byBsaWIvd2MgY2xpZW50IGJ1bmRsZXMuXG5cbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICB2YXIgY3VycmVudFNjcmlwdCA9IHdpbmRvdy5kb2N1bWVudC5jdXJyZW50U2NyaXB0XG4gIGlmICh0cnVlKSB7XG4gICAgdmFyIGdldEN1cnJlbnRTY3JpcHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiODg3NVwiKVxuICAgIGN1cnJlbnRTY3JpcHQgPSBnZXRDdXJyZW50U2NyaXB0KClcblxuICAgIC8vIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCBiZWNhdXNlIHByZXZpb3VzbHkgd2UgZGlyZWN0bHkgaW5jbHVkZWQgdGhlIHBvbHlmaWxsXG4gICAgaWYgKCEoJ2N1cnJlbnRTY3JpcHQnIGluIGRvY3VtZW50KSkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnY3VycmVudFNjcmlwdCcsIHsgZ2V0OiBnZXRDdXJyZW50U2NyaXB0IH0pXG4gICAgfVxuICB9XG5cbiAgdmFyIHNyYyA9IGN1cnJlbnRTY3JpcHQgJiYgY3VycmVudFNjcmlwdC5zcmMubWF0Y2goLyguK1xcLylbXi9dK1xcLmpzKFxcPy4qKT8kLylcbiAgaWYgKHNyYykge1xuICAgIF9fd2VicGFja19yZXF1aXJlX18ucCA9IHNyY1sxXSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gIH1cbn1cblxuLy8gSW5kaWNhdGUgdG8gd2VicGFjayB0aGF0IHRoaXMgZmlsZSBjYW4gYmUgY29uY2F0ZW5hdGVkXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBzZXRQdWJsaWNQYXRoID0gKG51bGwpO1xuXG4vLyBFWFRFUk5BTCBNT0RVTEU6IGV4dGVybmFsIHtcImNvbW1vbmpzXCI6XCJ2dWVcIixcImNvbW1vbmpzMlwiOlwidnVlXCIsXCJyb290XCI6XCJWdWVcIn1cbnZhciBleHRlcm5hbF9jb21tb25qc192dWVfY29tbW9uanMyX3Z1ZV9yb290X1Z1ZV8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiOGJiZlwiKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCB7XCJyb290XCI6XCJBcGV4Q2hhcnRzXCIsXCJjb21tb25qc1wiOlwiYXBleGNoYXJ0c1wiLFwiY29tbW9uanMyXCI6XCJhcGV4Y2hhcnRzXCJ9XG52YXIgZXh0ZXJuYWxfcm9vdF9BcGV4Q2hhcnRzX2NvbW1vbmpzX2FwZXhjaGFydHNfY29tbW9uanMyX2FwZXhjaGFydHNfID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjk1ZTZcIik7XG52YXIgZXh0ZXJuYWxfcm9vdF9BcGV4Q2hhcnRzX2NvbW1vbmpzX2FwZXhjaGFydHNfY29tbW9uanMyX2FwZXhjaGFydHNfZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oZXh0ZXJuYWxfcm9vdF9BcGV4Q2hhcnRzX2NvbW1vbmpzX2FwZXhjaGFydHNfY29tbW9uanMyX2FwZXhjaGFydHNfKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvdnVlMy1hcGV4Y2hhcnRzLmpzXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG5cblxuLy8gZGVmaW5lIGFsbCBlbWl0dGVkIGV2ZW50cyBpbiBvcmRlciB0byBiZXR0ZXJcbi8vIGRvY3VtZW50IGhvdyB0aGUgY29tcG9uZW50IHNob3VsZCB3b3JrXG5jb25zdCBldmVudHMgPSBbXG4gIFwiYW5pbWF0aW9uRW5kXCIsXG4gIFwiYmVmb3JlTW91bnRcIixcbiAgXCJtb3VudGVkXCIsXG4gIFwidXBkYXRlZFwiLFxuICBcImNsaWNrXCIsXG4gIFwibW91c2VNb3ZlXCIsXG4gIFwibGVnZW5kQ2xpY2tcIixcbiAgXCJtYXJrZXJDbGlja1wiLFxuICBcInNlbGVjdGlvblwiLFxuICBcImRhdGFQb2ludFNlbGVjdGlvblwiLFxuICBcImRhdGFQb2ludE1vdXNlRW50ZXJcIixcbiAgXCJkYXRhUG9pbnRNb3VzZUxlYXZlXCIsXG4gIFwiYmVmb3JlWm9vbVwiLFxuICBcImJlZm9yZVJlc2V0Wm9vbVwiLFxuICBcInpvb21lZFwiLFxuICBcInNjcm9sbGVkXCIsXG4gIFwic2Nyb2xsZWRcIlxuXTtcblxuY29uc3QgdnVlQXBleGNoYXJ0cyA9IE9iamVjdChleHRlcm5hbF9jb21tb25qc192dWVfY29tbW9uanMyX3Z1ZV9yb290X1Z1ZV9bXCJkZWZpbmVDb21wb25lbnRcIl0pKHtcbiAgbmFtZTogXCJhcGV4Y2hhcnRcIixcbiAgcHJvcHM6IHtcbiAgICBvcHRpb25zOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuICAgIHR5cGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgc2VyaWVzOiB7XG4gICAgICB0eXBlOiBBcnJheSxcbiAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgfSxcbiAgICB3aWR0aDoge1xuICAgICAgZGVmYXVsdDogXCIxMDAlXCJcbiAgICB9LFxuICAgIGhlaWdodDoge1xuICAgICAgZGVmYXVsdDogXCJhdXRvXCJcbiAgICB9XG4gIH0sXG5cbiAgLy8gZXZlbnRzIGVtaXR0ZWQgYnkgdGhpcyBjb21wb25lbnRcbiAgZW1pdHM6IGV2ZW50cyxcblxuICBzZXR1cChwcm9wcywgeyBlbWl0IH0pIHtcbiAgICBjb25zdCBfX2VsID0gT2JqZWN0KGV4dGVybmFsX2NvbW1vbmpzX3Z1ZV9jb21tb25qczJfdnVlX3Jvb3RfVnVlX1tcInJlZlwiXSkobnVsbCk7XG4gICAgY29uc3QgY2hhcnQgPSBPYmplY3QoZXh0ZXJuYWxfY29tbW9uanNfdnVlX2NvbW1vbmpzMl92dWVfcm9vdF9WdWVfW1wicmVmXCJdKShudWxsKTtcblxuICAgIGNvbnN0IGlzT2JqZWN0ID0gaXRlbSA9PiB7XG4gICAgICByZXR1cm4gaXRlbSAmJiB0eXBlb2YgaXRlbSA9PT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheShpdGVtKSAmJiBpdGVtICE9IG51bGw7XG4gICAgfTtcblxuICAgIGNvbnN0IGV4dGVuZCA9ICh0YXJnZXQsIHNvdXJjZSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBPYmplY3QuYXNzaWduICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgKGZ1bmN0aW9uKCkge1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24gPSBmdW5jdGlvbih0YXJnZXQpIHtcbiAgICAgICAgICAgIC8vIFdlIG11c3QgY2hlY2sgYWdhaW5zdCB0aGVzZSBzcGVjaWZpYyBjYXNlcy5cbiAgICAgICAgICAgIGlmICh0YXJnZXQgPT09IHVuZGVmaW5lZCB8fCB0YXJnZXQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IG91dHB1dCA9IE9iamVjdCh0YXJnZXQpO1xuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAxOyBpbmRleCA8IGFyZ3VtZW50cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgICAgbGV0IHNvdXJjZSA9IGFyZ3VtZW50c1tpbmRleF07XG4gICAgICAgICAgICAgIGlmIChzb3VyY2UgIT09IHVuZGVmaW5lZCAmJiBzb3VyY2UgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBuZXh0S2V5IGluIHNvdXJjZSkge1xuICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShuZXh0S2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXRbbmV4dEtleV0gPSBzb3VyY2VbbmV4dEtleV07XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgICAgICAgIH07XG4gICAgICAgIH0pKCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBvdXRwdXQgPSBPYmplY3QuYXNzaWduKHt9LCB0YXJnZXQpO1xuICAgICAgaWYgKGlzT2JqZWN0KHRhcmdldCkgJiYgaXNPYmplY3Qoc291cmNlKSkge1xuICAgICAgICBPYmplY3Qua2V5cyhzb3VyY2UpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICBpZiAoaXNPYmplY3Qoc291cmNlW2tleV0pKSB7XG4gICAgICAgICAgICBpZiAoIShrZXkgaW4gdGFyZ2V0KSkge1xuICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKG91dHB1dCwge1xuICAgICAgICAgICAgICAgIFtrZXldOiBzb3VyY2Vba2V5XVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG91dHB1dFtrZXldID0gZXh0ZW5kKHRhcmdldFtrZXldLCBzb3VyY2Vba2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ob3V0cHV0LCB7XG4gICAgICAgICAgICAgIFtrZXldOiBzb3VyY2Vba2V5XVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgfTtcblxuICAgIGNvbnN0IGluaXQgPSBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBPYmplY3QoZXh0ZXJuYWxfY29tbW9uanNfdnVlX2NvbW1vbmpzMl92dWVfcm9vdF9WdWVfW1wibmV4dFRpY2tcIl0pKCk7XG5cbiAgICAgIGNvbnN0IG5ld09wdGlvbnMgPSB7XG4gICAgICAgIGNoYXJ0OiB7XG4gICAgICAgICAgdHlwZTogcHJvcHMudHlwZSB8fCBwcm9wcy5vcHRpb25zLmNoYXJ0LnR5cGUgfHwgXCJsaW5lXCIsXG4gICAgICAgICAgaGVpZ2h0OiBwcm9wcy5oZWlnaHQsXG4gICAgICAgICAgd2lkdGg6IHByb3BzLndpZHRoLFxuICAgICAgICAgIGV2ZW50czoge31cbiAgICAgICAgfSxcbiAgICAgICAgc2VyaWVzOiBwcm9wcy5zZXJpZXNcbiAgICAgIH07XG5cbiAgICAgIC8vIGVtaXQgZXZlbnRzIHRvIHRoZSBwYXJlbnQgY29tcG9uZW50XG4gICAgICAvLyB0byBhbGxvdyBmb3IgdHdvLXdheSBkYXRhIGJpbmRpbmdcbiAgICAgIGV2ZW50cy5mb3JFYWNoKGV2ZW50ID0+IHtcbiAgICAgICAgbGV0IGNhbGxiYWNrID0gKC4uLmFyZ3MpID0+IGVtaXQoZXZlbnQsIC4uLmFyZ3MpOyAvLyBhcmdzID0+IGNoYXJ0Q29udGV4dCwgb3B0aW9uc1xuICAgICAgICBuZXdPcHRpb25zLmNoYXJ0LmV2ZW50c1tldmVudF0gPSBjYWxsYmFjaztcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjb25maWcgPSBleHRlbmQocHJvcHMub3B0aW9ucywgbmV3T3B0aW9ucyk7XG4gICAgICBjaGFydC52YWx1ZSA9IG5ldyBleHRlcm5hbF9yb290X0FwZXhDaGFydHNfY29tbW9uanNfYXBleGNoYXJ0c19jb21tb25qczJfYXBleGNoYXJ0c19kZWZhdWx0LmEoX19lbC52YWx1ZSwgY29uZmlnKTtcbiAgICAgIHJldHVybiBjaGFydC52YWx1ZS5yZW5kZXIoKTtcbiAgICB9O1xuXG4gICAgY29uc3QgcmVmcmVzaCA9ICgpID0+IHtcbiAgICAgIGRlc3Ryb3koKTtcbiAgICAgIHJldHVybiBpbml0KCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGRlc3Ryb3kgPSAoKSA9PiB7XG4gICAgICBjaGFydC52YWx1ZS5kZXN0cm95KCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZVNlcmllcyA9IChuZXdTZXJpZXMsIGFuaW1hdGUpID0+IHtcbiAgICAgIHJldHVybiBjaGFydC52YWx1ZS51cGRhdGVTZXJpZXMobmV3U2VyaWVzLCBhbmltYXRlKTtcbiAgICB9O1xuXG4gICAgY29uc3QgdXBkYXRlT3B0aW9ucyA9IChuZXdPcHRpb25zLCByZWRyYXdQYXRocywgYW5pbWF0ZSwgdXBkYXRlU3luY2VkQ2hhcnRzKSA9PiB7XG4gICAgICByZXR1cm4gY2hhcnQudmFsdWUudXBkYXRlT3B0aW9ucyhuZXdPcHRpb25zLCByZWRyYXdQYXRocywgYW5pbWF0ZSwgdXBkYXRlU3luY2VkQ2hhcnRzKTtcbiAgICB9O1xuXG4gICAgY29uc3QgdG9nZ2xlU2VyaWVzID0gc2VyaWVzTmFtZSA9PiB7XG4gICAgICByZXR1cm4gY2hhcnQudmFsdWUudG9nZ2xlU2VyaWVzKHNlcmllc05hbWUpO1xuICAgIH07XG5cbiAgICBjb25zdCBzaG93U2VyaWVzID0gc2VyaWVzTmFtZSA9PiB7XG4gICAgICBjaGFydC52YWx1ZS5zaG93U2VyaWVzKHNlcmllc05hbWUpO1xuICAgIH07XG5cbiAgICBjb25zdCBoaWRlU2VyaWVzID0gc2VyaWVzTmFtZSA9PiB7XG4gICAgICBjaGFydC52YWx1ZS5oaWRlU2VyaWVzKHNlcmllc05hbWUpO1xuICAgIH07XG5cbiAgICBjb25zdCBhcHBlbmRTZXJpZXMgPSAobmV3U2VyaWVzLCBhbmltYXRlKSA9PiB7XG4gICAgICByZXR1cm4gY2hhcnQudmFsdWUuYXBwZW5kU2VyaWVzKG5ld1NlcmllcywgYW5pbWF0ZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlc2V0U2VyaWVzID0gKCkgPT4ge1xuICAgICAgY2hhcnQudmFsdWUucmVzZXRTZXJpZXMoKTtcbiAgICB9O1xuXG4gICAgY29uc3QgdG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uID0gKHNlcmllc0luZGV4LCBkYXRhUG9pbnRJbmRleCkgPT4ge1xuICAgICAgY2hhcnQudmFsdWUudG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uKHNlcmllc0luZGV4LCBkYXRhUG9pbnRJbmRleCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGFwcGVuZERhdGEgPSBuZXdEYXRhID0+IHtcbiAgICAgIHJldHVybiBjaGFydC52YWx1ZS5hcHBlbmREYXRhKG5ld0RhdGEpO1xuICAgIH07XG5cbiAgICBjb25zdCB6b29tWCA9IChzdGFydCwgZW5kKSA9PiB7XG4gICAgICByZXR1cm4gY2hhcnQudmFsdWUuem9vbVgoc3RhcnQsIGVuZCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGRhdGFVUkkgPSAoKSA9PiB7XG4gICAgICByZXR1cm4gY2hhcnQudmFsdWUuZGF0YVVSSSgpO1xuICAgIH07XG5cbiAgICBjb25zdCBzZXRMb2NhbGUgPSBsb2NhbGVOYW1lID0+IHtcbiAgICAgIHJldHVybiBjaGFydC52YWx1ZS5zZXRMb2NhbGUobG9jYWxlTmFtZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGFkZFhheGlzQW5ub3RhdGlvbiA9IChvcHRpb25zLCBwdXNoVG9NZW1vcnkpID0+IHtcbiAgICAgIGNoYXJ0LnZhbHVlLmFkZFhheGlzQW5ub3RhdGlvbihvcHRpb25zLCBwdXNoVG9NZW1vcnkpO1xuICAgIH07XG5cbiAgICBjb25zdCBhZGRZYXhpc0Fubm90YXRpb24gPSAob3B0aW9ucywgcHVzaFRvTWVtb3J5KSA9PiB7XG4gICAgICBjaGFydC52YWx1ZS5hZGRZYXhpc0Fubm90YXRpb24ob3B0aW9ucywgcHVzaFRvTWVtb3J5KTtcbiAgICB9O1xuXG4gICAgY29uc3QgYWRkUG9pbnRBbm5vdGF0aW9uID0gKG9wdGlvbnMsIHB1c2hUb01lbW9yeSkgPT4ge1xuICAgICAgY2hhcnQudmFsdWUuYWRkUG9pbnRBbm5vdGF0aW9uKG9wdGlvbnMsIHB1c2hUb01lbW9yeSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlbW92ZUFubm90YXRpb24gPSAoaWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIGNoYXJ0LnZhbHVlLnJlbW92ZUFubm90YXRpb24oaWQsIG9wdGlvbnMpO1xuICAgIH07XG5cbiAgICBjb25zdCBjbGVhckFubm90YXRpb25zID0gKCkgPT4ge1xuICAgICAgY2hhcnQudmFsdWUuY2xlYXJBbm5vdGF0aW9ucygpO1xuICAgIH07XG5cbiAgICBPYmplY3QoZXh0ZXJuYWxfY29tbW9uanNfdnVlX2NvbW1vbmpzMl92dWVfcm9vdF9WdWVfW1wib25CZWZvcmVNb3VudFwiXSkoKCkgPT4ge1xuICAgICAgd2luZG93LkFwZXhDaGFydHMgPSBleHRlcm5hbF9yb290X0FwZXhDaGFydHNfY29tbW9uanNfYXBleGNoYXJ0c19jb21tb25qczJfYXBleGNoYXJ0c19kZWZhdWx0LmE7XG4gICAgfSk7XG5cbiAgICBPYmplY3QoZXh0ZXJuYWxfY29tbW9uanNfdnVlX2NvbW1vbmpzMl92dWVfcm9vdF9WdWVfW1wib25Nb3VudGVkXCJdKSgoKSA9PiB7XG4gICAgICBfX2VsLnZhbHVlID0gT2JqZWN0KGV4dGVybmFsX2NvbW1vbmpzX3Z1ZV9jb21tb25qczJfdnVlX3Jvb3RfVnVlX1tcImdldEN1cnJlbnRJbnN0YW5jZVwiXSkoKS5wcm94eS4kZWw7XG4gICAgICBpbml0KCk7XG4gICAgfSk7XG5cbiAgICBPYmplY3QoZXh0ZXJuYWxfY29tbW9uanNfdnVlX2NvbW1vbmpzMl92dWVfcm9vdF9WdWVfW1wib25CZWZvcmVVbm1vdW50XCJdKSgoKSA9PiB7XG4gICAgICBpZiAoIWNoYXJ0LnZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGRlc3Ryb3koKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlYWN0aXZlUHJvcHMgPSBPYmplY3QoZXh0ZXJuYWxfY29tbW9uanNfdnVlX2NvbW1vbmpzMl92dWVfcm9vdF9WdWVfW1widG9SZWZzXCJdKShwcm9wcyk7XG4gICAgT2JqZWN0KGV4dGVybmFsX2NvbW1vbmpzX3Z1ZV9jb21tb25qczJfdnVlX3Jvb3RfVnVlX1tcIndhdGNoXCJdKShyZWFjdGl2ZVByb3BzLm9wdGlvbnMsICgpID0+IHtcbiAgICAgIGlmICghY2hhcnQudmFsdWUgJiYgcHJvcHMub3B0aW9ucykge1xuICAgICAgICBpbml0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGFydC52YWx1ZS51cGRhdGVPcHRpb25zKHByb3BzLm9wdGlvbnMpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgT2JqZWN0KGV4dGVybmFsX2NvbW1vbmpzX3Z1ZV9jb21tb25qczJfdnVlX3Jvb3RfVnVlX1tcIndhdGNoXCJdKShcbiAgICAgIHJlYWN0aXZlUHJvcHMuc2VyaWVzLFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAoIWNoYXJ0LnZhbHVlICYmIHByb3BzLnNlcmllcykge1xuICAgICAgICAgIGluaXQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjaGFydC52YWx1ZS51cGRhdGVTZXJpZXMocHJvcHMuc2VyaWVzKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgZGVlcDogdHJ1ZSB9XG4gICAgKTtcblxuICAgIE9iamVjdChleHRlcm5hbF9jb21tb25qc192dWVfY29tbW9uanMyX3Z1ZV9yb290X1Z1ZV9bXCJ3YXRjaFwiXSkocmVhY3RpdmVQcm9wcy50eXBlLCAoKSA9PiB7XG4gICAgICByZWZyZXNoKCk7XG4gICAgfSk7XG5cbiAgICBPYmplY3QoZXh0ZXJuYWxfY29tbW9uanNfdnVlX2NvbW1vbmpzMl92dWVfcm9vdF9WdWVfW1wid2F0Y2hcIl0pKHJlYWN0aXZlUHJvcHMud2lkdGgsICgpID0+IHtcbiAgICAgIHJlZnJlc2goKTtcbiAgICB9KTtcblxuICAgIE9iamVjdChleHRlcm5hbF9jb21tb25qc192dWVfY29tbW9uanMyX3Z1ZV9yb290X1Z1ZV9bXCJ3YXRjaFwiXSkocmVhY3RpdmVQcm9wcy5oZWlnaHQsICgpID0+IHtcbiAgICAgIHJlZnJlc2goKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBjaGFydCxcbiAgICAgIGluaXQsXG4gICAgICByZWZyZXNoLFxuICAgICAgZGVzdHJveSxcbiAgICAgIHVwZGF0ZU9wdGlvbnMsXG4gICAgICB1cGRhdGVTZXJpZXMsXG4gICAgICB0b2dnbGVTZXJpZXMsXG4gICAgICBzaG93U2VyaWVzLFxuICAgICAgaGlkZVNlcmllcyxcbiAgICAgIHJlc2V0U2VyaWVzLFxuICAgICAgem9vbVgsXG4gICAgICB0b2dnbGVEYXRhUG9pbnRTZWxlY3Rpb24sXG4gICAgICBhcHBlbmREYXRhLFxuICAgICAgYXBwZW5kU2VyaWVzLFxuICAgICAgYWRkWGF4aXNBbm5vdGF0aW9uLFxuICAgICAgYWRkWWF4aXNBbm5vdGF0aW9uLFxuICAgICAgYWRkUG9pbnRBbm5vdGF0aW9uLFxuICAgICAgcmVtb3ZlQW5ub3RhdGlvbixcbiAgICAgIGNsZWFyQW5ub3RhdGlvbnMsXG4gICAgICBkYXRhVVJJXG4gICAgfTtcbiAgfSxcblxuICByZW5kZXIoKSB7XG4gICAgcmV0dXJuIE9iamVjdChleHRlcm5hbF9jb21tb25qc192dWVfY29tbW9uanMyX3Z1ZV9yb290X1Z1ZV9bXCJoXCJdKShcImRpdlwiLCB7XG4gICAgICBjbGFzczogXCJ2dWUtYXBleGNoYXJ0c1wiLFxuICAgIH0pO1xuICB9XG59KTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgdnVlM19hcGV4Y2hhcnRzID0gKHZ1ZUFwZXhjaGFydHMpO1xuXG4vLyBDT05DQVRFTkFURUQgTU9EVUxFOiAuL3NyYy9pbmRleC5qc1xuLyogZXNsaW50LWRpc2FibGUgKi9cblxuXG5jb25zdCBpbnN0YWxsID0gYXBwID0+IHtcbiAgYXBwLmNvbXBvbmVudCh2dWUzX2FwZXhjaGFydHMubmFtZSwgdnVlM19hcGV4Y2hhcnRzKTtcbn07XG5cbnZ1ZTNfYXBleGNoYXJ0cy5pbnN0YWxsID0gaW5zdGFsbDtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc3JjXzAgPSAodnVlM19hcGV4Y2hhcnRzKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS9saWIvY29tbWFuZHMvYnVpbGQvZW50cnktbGliLmpzXG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgZW50cnlfbGliID0gX193ZWJwYWNrX2V4cG9ydHNfX1tcImRlZmF1bHRcIl0gPSAoc3JjXzApO1xuXG5cblxuLyoqKi8gfSlcblxuLyoqKioqKi8gfSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD12dWUzLWFwZXhjaGFydHMuY29tbW9uLmpzLm1hcCIsImltcG9ydCB7IGRlZmluZUNvbXBvbmVudCwgcmVhY3RpdmUsIHJlZiwgY29tcHV0ZWQsIHdhdGNoLCBvcGVuQmxvY2ssIGNyZWF0ZUVsZW1lbnRCbG9jaywgbm9ybWFsaXplU3R5bGUsIGNyZWF0ZUVsZW1lbnRWTm9kZSwgcmVuZGVyU2xvdCB9IGZyb20gJ3Z1ZSc7XG5cbmZ1bmN0aW9uIHJhbmRvbVN0cmluZygpIHtcbiAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMTYpLnN1YnN0cmluZygyKTtcbn1cblxudmFyIHNjcmlwdCA9IGRlZmluZUNvbXBvbmVudCh7XG4gIHByb3BzOiB7XG4gICAgLy8gU2V0cyB3aWR0aC9kaWFtZXRlciBvZiB0aGUgaW5uZXIgc3Ryb2tlLlxuICAgIGRpYW1ldGVyOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0OiAyMDBcbiAgICB9LFxuICAgIC8vIFNldHMgdGhlIHRvdGFsIHN0ZXBzL3Byb2dyZXNzIHRvIHRoZSBlbmQuXG4gICAgdG90YWxTdGVwczoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBkZWZhdWx0OiAxMFxuICAgIH0sXG4gICAgLy8gU2V0cyB0aGUgY3VycmVudCBwcm9ncmVzcyBvZiB0aGUgaW5uZXIgc3Ryb2tlLlxuICAgIGNvbXBsZXRlZFN0ZXBzOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIGRlZmF1bHQ6IDBcbiAgICB9LFxuICAgIC8vIFNldHMgdGhlIHN0YXJ0IGNvbG9yIG9mIHRoZSBpbm5lciBzdHJva2UgKGdyYWRpZW50KS5cbiAgICBzdGFydENvbG9yOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0OiBcIiMwMEM1OEVcIlxuICAgIH0sXG4gICAgLy8gU2V0cyB0aGUgZW5kIGNvbG9yIG9mIHRoZSBpbm5lciBzdHJva2UgKGdyYWRpZW50KS5cbiAgICBzdG9wQ29sb3I6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IFwiIzAwRTBBMVwiXG4gICAgfSxcbiAgICAvLyBTZXRzIHRoZSBjb2xvciBvZiB0aGUgaW5uZXIgc3Ryb2tlIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHNoYXBlLlxuICAgIGlubmVyU3Ryb2tlQ29sb3I6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IFwiIzJGNDk1RVwiXG4gICAgfSxcbiAgICAvLyBTZXRzIHRoZSB3aWR0aCBvZiB0aGUgc3Ryb2tlIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHNoYXBlLlxuICAgIC8vIFJlYWQgbW9yZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU1ZHL0F0dHJpYnV0ZS9zdHJva2Utd2lkdGhcbiAgICBzdHJva2VXaWR0aDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogMTBcbiAgICB9LFxuICAgIC8vIFNldHMgdGhlICB3aWR0aCBvZiB0aGUgaW5uZXIgc3Ryb2tlIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHNoYXBlLlxuICAgIGlubmVyU3Ryb2tlV2lkdGg6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IDEwXG4gICAgfSxcbiAgICAvLyBTZXRzIHRoZSBzaGFwZSB0byBiZSB1c2VkIGF0IHRoZSBlbmQgb2Ygc3Ryb2tlZC5cbiAgICAvLyBSZWFkIG1vcmU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NWRy9BdHRyaWJ1dGUvc3Ryb2tlLWxpbmVjYXBcbiAgICBzdHJva2VMaW5lY2FwOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0OiBcInJvdW5kXCJcbiAgICB9LFxuICAgIC8vIFNldHMgaG93IGxvbmcgdGhlIGFuaW1hdGlvbiBzaG91bGQgdGFrZSB0byBjb21wbGV0ZSBvbmUgY3ljbGUuXG4gICAgLy8gUmVhZCBtb3JlOiBodHRwczovL3d3dy53M3NjaG9vbHMuY29tL2Nzc3JlZi9jc3MzX3ByX2FuaW1hdGlvbi1kdXJhdGlvbi5hc3BcbiAgICBhbmltYXRlU3BlZWQ6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IDEwMDBcbiAgICB9LFxuICAgIC8vIFNldHMgdGhlIGZyYW1lcyBwZXIgc2Vjb25kcyB0byB1cGRhdGUgaW5uZXIgc3Ryb2tlIGFuaW1hdGlvbi5cbiAgICBmcHM6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IDYwXG4gICAgfSxcbiAgICAvLyBTZXRzIGhvdyB0aGUgYW5pbWF0aW9uIHByb2dyZXNzZXMgdGhyb3VnaCB0aGUgZHVyYXRpb24gb2YgZWFjaCBjeWNsZS5cbiAgICAvLyBSZWFkIG1vcmU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uXG4gICAgdGltaW5nRnVuYzoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogXCJsaW5lYXJcIlxuICAgIH0sXG4gICAgLy8gU2V0cyB0aGUgaW5uZXIgc3Ryb2tlIGRpcmVjdGlvbi5cbiAgICBpc0Nsb2Nrd2lzZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9XG4gIH0sXG5cbiAgc2V0dXAocHJvcHMpIHtcbiAgICBjb25zdCBncmFkaWVudCA9IHJlYWN0aXZlKHtcbiAgICAgIGZ4OiAwLjk5LFxuICAgICAgZnk6IDAuNSxcbiAgICAgIGN4OiAwLjUsXG4gICAgICBjeTogMC41LFxuICAgICAgcjogMC42NVxuICAgIH0pO1xuICAgIGNvbnN0IHJhZGlhbEdyYWRpZW50SWQgPSBgcmctJHtyYW5kb21TdHJpbmcoKX1gO1xuICAgIGNvbnN0IHN0cm9rZURhc2hvZmZzZXQgPSByZWYoMCk7XG4gICAgY29uc3QgY3VycmVudEFuZ2xlID0gcmVmKDApO1xuICAgIGNvbnN0IGdyYWRpZW50QW5pbWF0aW9uID0gcmVmKG51bGwpO1xuICAgIGNvbnN0IHJhZGl1cyA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmRpYW1ldGVyIC8gMik7XG4gICAgY29uc3QgaW5uZXJDaXJjbGVEaWFtZXRlciA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmRpYW1ldGVyIC0gcHJvcHMuaW5uZXJTdHJva2VXaWR0aCAqIDIpO1xuICAgIGNvbnN0IGNpcmN1bWZlcmVuY2UgPSBjb21wdXRlZCgoKSA9PiBNYXRoLlBJICogaW5uZXJDaXJjbGVEaWFtZXRlci52YWx1ZSk7XG4gICAgY29uc3Qgc3RlcFNpemUgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy50b3RhbFN0ZXBzID09PSAwID8gMCA6IDEwMCAvIHByb3BzLnRvdGFsU3RlcHMpO1xuICAgIGNvbnN0IGZpbmlzaGVkUGVyY2VudGFnZSA9IGNvbXB1dGVkKCgpID0+IHN0ZXBTaXplLnZhbHVlICogcHJvcHMuY29tcGxldGVkU3RlcHMpO1xuICAgIGNvbnN0IGNpcmNsZVNsaWNlID0gY29tcHV0ZWQoKCkgPT4gMiAqIE1hdGguUEkgLyBwcm9wcy50b3RhbFN0ZXBzKTtcbiAgICBjb25zdCBhbmltYXRpb25JbmNyZW1lbnRzID0gY29tcHV0ZWQoKCkgPT4gMTAwIC8gcHJvcHMuZnBzKTtcbiAgICBjb25zdCB0b3RhbFBvaW50cyA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmFuaW1hdGVTcGVlZCAvIGFuaW1hdGlvbkluY3JlbWVudHMudmFsdWUpO1xuICAgIGNvbnN0IGFuaW1hdGVTbGljZSA9IGNvbXB1dGVkKCgpID0+IGNpcmNsZVNsaWNlLnZhbHVlIC8gdG90YWxQb2ludHMudmFsdWUpO1xuICAgIGNvbnN0IGlubmVyQ2lyY2xlUmFkaXVzID0gY29tcHV0ZWQoKCkgPT4gaW5uZXJDaXJjbGVEaWFtZXRlci52YWx1ZSAvIDIpO1xuICAgIGNvbnN0IGNvbnRhaW5lclN0eWxlID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICAgIGhlaWdodDogYCR7cHJvcHMuZGlhbWV0ZXJ9cHhgLFxuICAgICAgd2lkdGg6IGAke3Byb3BzLmRpYW1ldGVyfXB4YFxuICAgIH0pKTtcbiAgICBjb25zdCBwcm9ncmVzc1N0eWxlID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICAgIGhlaWdodDogYCR7cHJvcHMuZGlhbWV0ZXJ9cHhgLFxuICAgICAgd2lkdGg6IGAke3Byb3BzLmRpYW1ldGVyfXB4YCxcbiAgICAgIHN0cm9rZVdpZHRoOiBgJHtwcm9wcy5zdHJva2VXaWR0aH1weGAsXG4gICAgICBzdHJva2VEYXNob2Zmc2V0OiBzdHJva2VEYXNob2Zmc2V0LnZhbHVlLFxuICAgICAgdHJhbnNpdGlvbjogYHN0cm9rZS1kYXNob2Zmc2V0ICR7cHJvcHMuYW5pbWF0ZVNwZWVkfW1zICR7cHJvcHMudGltaW5nRnVuY31gXG4gICAgfSkpO1xuICAgIGNvbnN0IHN0cm9rZVN0eWxlID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICAgIGhlaWdodDogYCR7cHJvcHMuZGlhbWV0ZXJ9cHhgLFxuICAgICAgd2lkdGg6IGAke3Byb3BzLmRpYW1ldGVyfXB4YCxcbiAgICAgIHN0cm9rZVdpZHRoOiBgJHtwcm9wcy5pbm5lclN0cm9rZVdpZHRofXB4YFxuICAgIH0pKTtcbiAgICBjb25zdCBpbm5lckNpcmNsZVN0eWxlID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICAgIHdpZHRoOiBgJHtpbm5lckNpcmNsZURpYW1ldGVyLnZhbHVlfXB4YFxuICAgIH0pKTtcbiAgICB3YXRjaCgoKSA9PiBbcHJvcHMuZGlhbWV0ZXIsIHByb3BzLnRvdGFsU3RlcHMsIHByb3BzLmNvbXBsZXRlZFN0ZXBzLCBwcm9wcy5zdHJva2VXaWR0aF0sIGNoYW5nZVByb2dyZXNzLCB7XG4gICAgICBpbW1lZGlhdGU6IHRydWVcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGdldFBvaW50T2ZDaXJjbGUoYW5nbGUpIHtcbiAgICAgIGNvbnN0IHJhZGl1cyA9IDAuNTtcbiAgICAgIGNvbnN0IHggPSByYWRpdXMgKyByYWRpdXMgKiBNYXRoLmNvcyhhbmdsZSk7XG4gICAgICBjb25zdCB5ID0gcmFkaXVzICsgcmFkaXVzICogTWF0aC5zaW4oYW5nbGUpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnb3RvUG9pbnQoKSB7XG4gICAgICBjb25zdCBwb2ludCA9IGdldFBvaW50T2ZDaXJjbGUoY3VycmVudEFuZ2xlLnZhbHVlKTtcblxuICAgICAgaWYgKHBvaW50LnggJiYgcG9pbnQueSkge1xuICAgICAgICBncmFkaWVudC5meCA9IHBvaW50Lng7XG4gICAgICAgIGdyYWRpZW50LmZ5ID0gcG9pbnQueTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkaXJlY3Rpb24oKSB7XG4gICAgICByZXR1cm4gcHJvcHMuaXNDbG9ja3dpc2UgPyAxIDogLTE7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2hhbmdlUHJvZ3Jlc3MoKSB7XG4gICAgICBzdHJva2VEYXNob2Zmc2V0LnZhbHVlID0gKDEwMCAtIGZpbmlzaGVkUGVyY2VudGFnZS52YWx1ZSkgLyAxMDAgKiBjaXJjdW1mZXJlbmNlLnZhbHVlICogZGlyZWN0aW9uKCk7XG5cbiAgICAgIGlmIChncmFkaWVudEFuaW1hdGlvbi52YWx1ZSkge1xuICAgICAgICBjbGVhckludGVydmFsKGdyYWRpZW50QW5pbWF0aW9uLnZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYW5nbGVPZmZzZXQgPSAocHJvcHMuY29tcGxldGVkU3RlcHMgLSAxKSAqIGNpcmNsZVNsaWNlLnZhbHVlO1xuICAgICAgbGV0IGkgPSAoY3VycmVudEFuZ2xlLnZhbHVlIC0gYW5nbGVPZmZzZXQpIC8gYW5pbWF0ZVNsaWNlLnZhbHVlO1xuICAgICAgY29uc3QgaW5jcmVtZW50ZXIgPSBNYXRoLmFicyhpIC0gdG90YWxQb2ludHMudmFsdWUpIC8gdG90YWxQb2ludHMudmFsdWU7XG4gICAgICBjb25zdCBpc01vdmVGb3J3YXJkID0gaSA8IHRvdGFsUG9pbnRzLnZhbHVlO1xuICAgICAgZ3JhZGllbnRBbmltYXRpb24udmFsdWUgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIGlmIChpc01vdmVGb3J3YXJkICYmIGkgPj0gdG90YWxQb2ludHMudmFsdWUgfHwgIWlzTW92ZUZvcndhcmQgJiYgaSA8IHRvdGFsUG9pbnRzLnZhbHVlKSB7XG4gICAgICAgICAgZ3JhZGllbnRBbmltYXRpb24udmFsdWUgJiYgY2xlYXJJbnRlcnZhbChncmFkaWVudEFuaW1hdGlvbi52YWx1ZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudEFuZ2xlLnZhbHVlID0gYW5nbGVPZmZzZXQgKyBhbmltYXRlU2xpY2UudmFsdWUgKiBpO1xuICAgICAgICBnb3RvUG9pbnQoKTtcbiAgICAgICAgaSArPSBpc01vdmVGb3J3YXJkID8gaW5jcmVtZW50ZXIgOiAtaW5jcmVtZW50ZXI7XG4gICAgICB9LCBhbmltYXRpb25JbmNyZW1lbnRzLnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ3JhZGllbnRBbmltYXRpb24sXG4gICAgICBpbm5lckNpcmNsZVJhZGl1cyxcbiAgICAgIHJhZGlhbEdyYWRpZW50SWQsXG4gICAgICBzdHJva2VEYXNob2Zmc2V0LFxuICAgICAgaW5uZXJDaXJjbGVTdHlsZSxcbiAgICAgIGNvbnRhaW5lclN0eWxlLFxuICAgICAgY2lyY3VtZmVyZW5jZSxcbiAgICAgIHByb2dyZXNzU3R5bGUsXG4gICAgICBjdXJyZW50QW5nbGUsXG4gICAgICBzdHJva2VTdHlsZSxcbiAgICAgIGdyYWRpZW50LFxuICAgICAgcmFkaXVzXG4gICAgfTtcbiAgfVxuXG59KTtcblxuY29uc3QgX2hvaXN0ZWRfMSA9IFtcIndpZHRoXCIsIFwiaGVpZ2h0XCJdO1xuY29uc3QgX2hvaXN0ZWRfMiA9IFtcImlkXCIsIFwiZnhcIiwgXCJmeVwiLCBcImN4XCIsIFwiY3lcIiwgXCJyXCJdO1xuY29uc3QgX2hvaXN0ZWRfMyA9IFtcInN0b3AtY29sb3JcIl07XG5jb25zdCBfaG9pc3RlZF80ID0gW1wic3RvcC1jb2xvclwiXTtcbmNvbnN0IF9ob2lzdGVkXzUgPSBbXCJyXCIsIFwiY3hcIiwgXCJjeVwiLCBcInN0cm9rZVwiLCBcInN0cm9rZS1kYXNoYXJyYXlcIiwgXCJzdHJva2UtbGluZWNhcFwiXTtcbmNvbnN0IF9ob2lzdGVkXzYgPSBbXCJ0cmFuc2Zvcm1cIiwgXCJyXCIsIFwiY3hcIiwgXCJjeVwiLCBcInN0cm9rZVwiLCBcInN0cm9rZS1kYXNoYXJyYXlcIiwgXCJzdHJva2UtZGFzaG9mZnNldFwiLCBcInN0cm9rZS1saW5lY2FwXCJdO1xuZnVuY3Rpb24gcmVuZGVyKF9jdHgsIF9jYWNoZSwgJHByb3BzLCAkc2V0dXAsICRkYXRhLCAkb3B0aW9ucykge1xuICByZXR1cm4gb3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLCB7XG4gICAgY2xhc3M6IFwidnJwX193cmFwcGVyXCIsXG4gICAgc3R5bGU6IG5vcm1hbGl6ZVN0eWxlKF9jdHguY29udGFpbmVyU3R5bGUpXG4gIH0sIFtjcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIiwge1xuICAgIGNsYXNzOiBcInZycF9faW5uZXJcIixcbiAgICBzdHlsZTogbm9ybWFsaXplU3R5bGUoX2N0eC5pbm5lckNpcmNsZVN0eWxlKVxuICB9LCBbcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJkZWZhdWx0XCIpXSwgNCksIChvcGVuQmxvY2soKSwgY3JlYXRlRWxlbWVudEJsb2NrKFwic3ZnXCIsIHtcbiAgICB3aWR0aDogX2N0eC5kaWFtZXRlcixcbiAgICBoZWlnaHQ6IF9jdHguZGlhbWV0ZXIsXG4gICAgdmVyc2lvbjogXCIxLjFcIixcbiAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gIH0sIFtjcmVhdGVFbGVtZW50Vk5vZGUoXCJkZWZzXCIsIG51bGwsIFtjcmVhdGVFbGVtZW50Vk5vZGUoXCJyYWRpYWxHcmFkaWVudFwiLCB7XG4gICAgaWQ6IF9jdHgucmFkaWFsR3JhZGllbnRJZCxcbiAgICBmeDogX2N0eC5ncmFkaWVudC5meCxcbiAgICBmeTogX2N0eC5ncmFkaWVudC5meSxcbiAgICBjeDogX2N0eC5ncmFkaWVudC5jeCxcbiAgICBjeTogX2N0eC5ncmFkaWVudC5jeSxcbiAgICByOiBfY3R4LmdyYWRpZW50LnJcbiAgfSwgW2NyZWF0ZUVsZW1lbnRWTm9kZShcInN0b3BcIiwge1xuICAgIG9mZnNldDogXCIzMCVcIixcbiAgICBcInN0b3AtY29sb3JcIjogX2N0eC5zdGFydENvbG9yXG4gIH0sIG51bGwsIDgsIF9ob2lzdGVkXzMpLCBjcmVhdGVFbGVtZW50Vk5vZGUoXCJzdG9wXCIsIHtcbiAgICBvZmZzZXQ6IFwiMTAwJVwiLFxuICAgIFwic3RvcC1jb2xvclwiOiBfY3R4LnN0b3BDb2xvclxuICB9LCBudWxsLCA4LCBfaG9pc3RlZF80KV0sIDgsIF9ob2lzdGVkXzIpXSksIGNyZWF0ZUVsZW1lbnRWTm9kZShcImNpcmNsZVwiLCB7XG4gICAgcjogX2N0eC5pbm5lckNpcmNsZVJhZGl1cyxcbiAgICBjeDogX2N0eC5yYWRpdXMsXG4gICAgY3k6IF9jdHgucmFkaXVzLFxuICAgIGZpbGw6IFwidHJhbnNwYXJlbnRcIixcbiAgICBzdHJva2U6IF9jdHguaW5uZXJTdHJva2VDb2xvcixcbiAgICBcInN0cm9rZS1kYXNoYXJyYXlcIjogX2N0eC5jaXJjdW1mZXJlbmNlLFxuICAgIFwic3Ryb2tlLWRhc2hvZmZzZXRcIjogXCIwXCIsXG4gICAgXCJzdHJva2UtbGluZWNhcFwiOiBfY3R4LnN0cm9rZUxpbmVjYXAsXG4gICAgc3R5bGU6IG5vcm1hbGl6ZVN0eWxlKF9jdHguc3Ryb2tlU3R5bGUpXG4gIH0sIG51bGwsIDEyLCBfaG9pc3RlZF81KSwgY3JlYXRlRWxlbWVudFZOb2RlKFwiY2lyY2xlXCIsIHtcbiAgICB0cmFuc2Zvcm06ICdyb3RhdGUoMjcwLCAnICsgX2N0eC5yYWRpdXMgKyAnLCcgKyBfY3R4LnJhZGl1cyArICcpJyxcbiAgICByOiBfY3R4LmlubmVyQ2lyY2xlUmFkaXVzLFxuICAgIGN4OiBfY3R4LnJhZGl1cyxcbiAgICBjeTogX2N0eC5yYWRpdXMsXG4gICAgZmlsbDogXCJ0cmFuc3BhcmVudFwiLFxuICAgIHN0cm9rZTogYHVybCgnIyR7X2N0eC5yYWRpYWxHcmFkaWVudElkfScpYCxcbiAgICBcInN0cm9rZS1kYXNoYXJyYXlcIjogX2N0eC5jaXJjdW1mZXJlbmNlLFxuICAgIFwic3Ryb2tlLWRhc2hvZmZzZXRcIjogX2N0eC5jaXJjdW1mZXJlbmNlLFxuICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogX2N0eC5zdHJva2VMaW5lY2FwLFxuICAgIHN0eWxlOiBub3JtYWxpemVTdHlsZShfY3R4LnByb2dyZXNzU3R5bGUpXG4gIH0sIG51bGwsIDEyLCBfaG9pc3RlZF82KV0sIDgsIF9ob2lzdGVkXzEpKV0sIDQpO1xufVxuXG5mdW5jdGlvbiBzdHlsZUluamVjdChjc3MsIHJlZikge1xuICBpZiAoIHJlZiA9PT0gdm9pZCAwICkgcmVmID0ge307XG4gIHZhciBpbnNlcnRBdCA9IHJlZi5pbnNlcnRBdDtcblxuICBpZiAoIWNzcyB8fCB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7IHJldHVybjsgfVxuXG4gIHZhciBoZWFkID0gZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICBzdHlsZS50eXBlID0gJ3RleHQvY3NzJztcblxuICBpZiAoaW5zZXJ0QXQgPT09ICd0b3AnKSB7XG4gICAgaWYgKGhlYWQuZmlyc3RDaGlsZCkge1xuICAgICAgaGVhZC5pbnNlcnRCZWZvcmUoc3R5bGUsIGhlYWQuZmlyc3RDaGlsZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgfVxuXG4gIGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5cbnZhciBjc3NfMjQ4eiA9IFwiXFxuLnZycF9fd3JhcHBlcltkYXRhLXYtNmEwY2YxZjZdIHtcXHJcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuLnZycF9faW5uZXJbZGF0YS12LTZhMGNmMWY2XSB7XFxyXFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICB0b3A6IDA7XFxyXFxuICByaWdodDogMDtcXHJcXG4gIGJvdHRvbTogMDtcXHJcXG4gIGxlZnQ6IDA7XFxyXFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxyXFxuICBtYXJnaW46IDAgYXV0bztcXHJcXG4gIGRpc3BsYXk6IGZsZXg7XFxyXFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcclxcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXHJcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbn1cXHJcXG5cIjtcbnN0eWxlSW5qZWN0KGNzc18yNDh6KTtcblxuc2NyaXB0LnJlbmRlciA9IHJlbmRlcjtcbnNjcmlwdC5fX3Njb3BlSWQgPSBcImRhdGEtdi02YTBjZjFmNlwiO1xuXG4vLyBJSUZFIGluamVjdHMgaW5zdGFsbCBmdW5jdGlvbiBpbnRvIGNvbXBvbmVudCwgYWxsb3dpbmcgY29tcG9uZW50XG4vLyB0byBiZSByZWdpc3RlcmVkIHZpYSBWdWUudXNlKCkgYXMgd2VsbCBhcyBWdWUuY29tcG9uZW50KCksXG5cbnZhciBlbnRyeV9lc20gPSAvKiNfX1BVUkVfXyovKCgpID0+IHtcbiAgLy8gQXNzaWduIEluc3RhbGxhYmxlQ29tcG9uZW50IHR5cGVcbiAgY29uc3QgaW5zdGFsbGFibGUgPSBzY3JpcHQ7IC8vIEF0dGFjaCBpbnN0YWxsIGZ1bmN0aW9uIGV4ZWN1dGVkIGJ5IFZ1ZS51c2UoKVxuXG4gIGluc3RhbGxhYmxlLmluc3RhbGwgPSBhcHAgPT4ge1xuICAgIGFwcC5jb21wb25lbnQoXCJSYWRpYWxQcm9ncmVzc0JhclwiLCBpbnN0YWxsYWJsZSk7XG4gIH07XG5cbiAgcmV0dXJuIGluc3RhbGxhYmxlO1xufSkoKTsgLy8gSXQncyBwb3NzaWJsZSB0byBleHBvc2UgbmFtZWQgZXhwb3J0cyB3aGVuIHdyaXRpbmcgY29tcG9uZW50cyB0aGF0IGNhblxuLy8gYWxzbyBiZSB1c2VkIGFzIGRpcmVjdGl2ZXMsIGV0Yy4gLSBlZy4gaW1wb3J0IHsgUm9sbHVwRGVtb0RpcmVjdGl2ZSB9IGZyb20gJ3JvbGx1cC1kZW1vJztcbi8vIGV4cG9ydCBjb25zdCBSb2xsdXBEZW1vRGlyZWN0aXZlID0gZGlyZWN0aXZlO1xuXG5leHBvcnQgeyBlbnRyeV9lc20gYXMgZGVmYXVsdCB9O1xuIiwiIWZ1bmN0aW9uKGUsdCl7XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwib2JqZWN0XCI9PXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9dCgpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sdCk6XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHM/ZXhwb3J0cy5WdWVTbW9vdGhTY3JvbGw9dCgpOmUuVnVlU21vb3RoU2Nyb2xsPXQoKX0odGhpcywoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9e307ZnVuY3Rpb24gbihvKXtpZih0W29dKXJldHVybiB0W29dLmV4cG9ydHM7dmFyIHI9dFtvXT17aTpvLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIGVbb10uY2FsbChyLmV4cG9ydHMscixyLmV4cG9ydHMsbiksci5sPSEwLHIuZXhwb3J0c31yZXR1cm4gbi5tPWUsbi5jPXQsbi5kPWZ1bmN0aW9uKGUsdCxvKXtuLm8oZSx0KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7ZW51bWVyYWJsZTohMCxnZXQ6b30pfSxuLnI9ZnVuY3Rpb24oZSl7XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOlwiTW9kdWxlXCJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sbi50PWZ1bmN0aW9uKGUsdCl7aWYoMSZ0JiYoZT1uKGUpKSw4JnQpcmV0dXJuIGU7aWYoNCZ0JiZcIm9iamVjdFwiPT10eXBlb2YgZSYmZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciBvPU9iamVjdC5jcmVhdGUobnVsbCk7aWYobi5yKG8pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOmV9KSwyJnQmJlwic3RyaW5nXCIhPXR5cGVvZiBlKWZvcih2YXIgciBpbiBlKW4uZChvLHIsZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19LmJpbmQobnVsbCxyKSk7cmV0dXJuIG99LG4ubj1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gZS5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBlfTtyZXR1cm4gbi5kKHQsXCJhXCIsdCksdH0sbi5vPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfSxuLnA9XCJcIixuKG4ucz0wKX0oW2Z1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBvKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiByKGUpe3JldHVybihyPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9KShlKX12YXIgaTtuLnIodCk7dmFyIHU9ZnVuY3Rpb24oZSl7cmV0dXJuIGU8LjU/NCplKmUqZTooZS0xKSooMiplLTIpKigyKmUtMikrMX0sYz1mdW5jdGlvbigpe3JldHVybntkdXJhdGlvbjo1MDAsb2Zmc2V0OjAsY29udGFpbmVyOndpbmRvdyx1cGRhdGVIaXN0b3J5OiEwLGVhc2luZ0Z1bmN0aW9uOm51bGx9fSxsPVN5bWJvbChcInNtb290aFNjcm9sbEN0eFwiKSxmPWZ1bmN0aW9uKGUpe3ZhciB0PWUuc2Nyb2xsVG8sbj1lLm9mZnNldCxvPWUuZHVyYXRpb24scj1lLmNvbnRhaW5lcixjPWUudXBkYXRlSGlzdG9yeSxsPWUuaGFzaCxmPWUuZWFzaW5nRnVuY3Rpb247aXx8KGk9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZXx8ZnVuY3Rpb24oZSl7cmV0dXJuIHdpbmRvdy5zZXRUaW1lb3V0KGUsMTYpfSksYyYmd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlJiZsb2NhdGlvbi5oYXNoIT09bCYmd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKFwiXCIsXCJcIixsKTt2YXIgYSxzLGQ9XCJudW1iZXJcIj09dHlwZW9mIHQscD1yLnNjcm9sbFRvcHx8d2luZG93LnBhZ2VZT2Zmc2V0LHk9KGQ/dDoocz1wLFwiSFRNTFwiPT09KGE9dCkubm9kZU5hbWU/LXM6YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3ArcykpK24sYj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBmP2Y6dSxtPURhdGUubm93KCk7IWZ1bmN0aW9uIGUoKXt2YXIgbj1EYXRlLm5vdygpLW0sdT1uPG8sbD11P3ArKHktcCkqYihuL28pOnk7dT9pKGUpOmMmJiFkJiZsb2NhdGlvbi5yZXBsYWNlKFwiI1wiK3QuaWQpLHI9PT13aW5kb3c/ci5zY3JvbGxUbygwLGwpOnIuc2Nyb2xsVG9wPWx9KCl9LGE9e2luc3RhbGw6ZnVuY3Rpb24oZSx0KXt2YXIgbixpPSFlLnZlcnNpb24uc3RhcnRzV2l0aChcIjNcIiksdT1mdW5jdGlvbigpe3JldHVybiB0P09iamVjdC5hc3NpZ24oYygpLHQpOmMoKX07ZS5kaXJlY3RpdmUoXCJzbW9vdGgtc2Nyb2xsXCIsKG8obj17fSxpP1wiaW5zZXJ0ZWRcIjpcIm1vdW50ZWRcIiwoZnVuY3Rpb24oZSx0LG4pe2lmKFwib2JqZWN0XCI9PT0oXCJ1bmRlZmluZWRcIj09dHlwZW9mIHdpbmRvdz9cInVuZGVmaW5lZFwiOnIod2luZG93KSkmJnZvaWQgMCE9PXdpbmRvdy5wYWdlWU9mZnNldCl7dmFyIG89T2JqZWN0LmFzc2lnbih1KCksdC52YWx1ZSk7XCJzdHJpbmdcIj09dHlwZW9mIG8uY29udGFpbmVyJiYoby5jb250YWluZXI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihvLmNvbnRhaW5lcikpO3ZhciBjPWZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKTt2YXIgdD1pP24uZGF0YS5hdHRycy5ocmVmOm4ucHJvcHMuaHJlZixyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQuc3Vic3RyaW5nKDEpKTtyJiZmKE9iamVjdC5hc3NpZ24obyx7c2Nyb2xsVG86cixoYXNoOnR9KSl9O2UuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsYyksZVtsXT17Y2xpY2tIYW5kbGVyOmN9fX0pKSxvKG4saT9cInVuYmluZFwiOlwidW5tb3VudGVkXCIsKGZ1bmN0aW9uKGUpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsZVtsXS5jbGlja0hhbmRsZXIpLGVbbF09bnVsbH0pKSxuKSk7dmFyIGE9ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0LmFzc2lnbih1KCksZSk7cmV0dXJuIGYodCl9OyhpP2UucHJvdG90eXBlOmUuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMpLiRzbW9vdGhTY3JvbGw9YSxpfHxlLnByb3ZpZGUoXCJzbW9vdGhTY3JvbGxcIixhKX19O3QuZGVmYXVsdD1hfV0pLmRlZmF1bHR9KSk7IiwiLyohXG4gKiB2dWV4IHY0LjAuMlxuICogKGMpIDIwMjEgRXZhbiBZb3VcbiAqIEBsaWNlbnNlIE1JVFxuICovXG5pbXBvcnQgeyBpbmplY3QsIHJlYWN0aXZlLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5pbXBvcnQgeyBzZXR1cERldnRvb2xzUGx1Z2luIH0gZnJvbSAnQHZ1ZS9kZXZ0b29scy1hcGknO1xuXG52YXIgc3RvcmVLZXkgPSAnc3RvcmUnO1xuXG5mdW5jdGlvbiB1c2VTdG9yZSAoa2V5KSB7XG4gIGlmICgga2V5ID09PSB2b2lkIDAgKSBrZXkgPSBudWxsO1xuXG4gIHJldHVybiBpbmplY3Qoa2V5ICE9PSBudWxsID8ga2V5IDogc3RvcmVLZXkpXG59XG5cbi8qKlxuICogR2V0IHRoZSBmaXJzdCBpdGVtIHRoYXQgcGFzcyB0aGUgdGVzdFxuICogYnkgc2Vjb25kIGFyZ3VtZW50IGZ1bmN0aW9uXG4gKlxuICogQHBhcmFtIHtBcnJheX0gbGlzdFxuICogQHBhcmFtIHtGdW5jdGlvbn0gZlxuICogQHJldHVybiB7Kn1cbiAqL1xuZnVuY3Rpb24gZmluZCAobGlzdCwgZikge1xuICByZXR1cm4gbGlzdC5maWx0ZXIoZilbMF1cbn1cblxuLyoqXG4gKiBEZWVwIGNvcHkgdGhlIGdpdmVuIG9iamVjdCBjb25zaWRlcmluZyBjaXJjdWxhciBzdHJ1Y3R1cmUuXG4gKiBUaGlzIGZ1bmN0aW9uIGNhY2hlcyBhbGwgbmVzdGVkIG9iamVjdHMgYW5kIGl0cyBjb3BpZXMuXG4gKiBJZiBpdCBkZXRlY3RzIGNpcmN1bGFyIHN0cnVjdHVyZSwgdXNlIGNhY2hlZCBjb3B5IHRvIGF2b2lkIGluZmluaXRlIGxvb3AuXG4gKlxuICogQHBhcmFtIHsqfSBvYmpcbiAqIEBwYXJhbSB7QXJyYXk8T2JqZWN0Pn0gY2FjaGVcbiAqIEByZXR1cm4geyp9XG4gKi9cbmZ1bmN0aW9uIGRlZXBDb3B5IChvYmosIGNhY2hlKSB7XG4gIGlmICggY2FjaGUgPT09IHZvaWQgMCApIGNhY2hlID0gW107XG5cbiAgLy8ganVzdCByZXR1cm4gaWYgb2JqIGlzIGltbXV0YWJsZSB2YWx1ZVxuICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG9ialxuICB9XG5cbiAgLy8gaWYgb2JqIGlzIGhpdCwgaXQgaXMgaW4gY2lyY3VsYXIgc3RydWN0dXJlXG4gIHZhciBoaXQgPSBmaW5kKGNhY2hlLCBmdW5jdGlvbiAoYykgeyByZXR1cm4gYy5vcmlnaW5hbCA9PT0gb2JqOyB9KTtcbiAgaWYgKGhpdCkge1xuICAgIHJldHVybiBoaXQuY29weVxuICB9XG5cbiAgdmFyIGNvcHkgPSBBcnJheS5pc0FycmF5KG9iaikgPyBbXSA6IHt9O1xuICAvLyBwdXQgdGhlIGNvcHkgaW50byBjYWNoZSBhdCBmaXJzdFxuICAvLyBiZWNhdXNlIHdlIHdhbnQgdG8gcmVmZXIgaXQgaW4gcmVjdXJzaXZlIGRlZXBDb3B5XG4gIGNhY2hlLnB1c2goe1xuICAgIG9yaWdpbmFsOiBvYmosXG4gICAgY29weTogY29weVxuICB9KTtcblxuICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIGNvcHlba2V5XSA9IGRlZXBDb3B5KG9ialtrZXldLCBjYWNoZSk7XG4gIH0pO1xuXG4gIHJldHVybiBjb3B5XG59XG5cbi8qKlxuICogZm9yRWFjaCBmb3Igb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIGZvckVhY2hWYWx1ZSAob2JqLCBmbikge1xuICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gZm4ob2JqW2tleV0sIGtleSk7IH0pO1xufVxuXG5mdW5jdGlvbiBpc09iamVjdCAob2JqKSB7XG4gIHJldHVybiBvYmogIT09IG51bGwgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCdcbn1cblxuZnVuY3Rpb24gaXNQcm9taXNlICh2YWwpIHtcbiAgcmV0dXJuIHZhbCAmJiB0eXBlb2YgdmFsLnRoZW4gPT09ICdmdW5jdGlvbidcbn1cblxuZnVuY3Rpb24gYXNzZXJ0IChjb25kaXRpb24sIG1zZykge1xuICBpZiAoIWNvbmRpdGlvbikgeyB0aHJvdyBuZXcgRXJyb3IoKFwiW3Z1ZXhdIFwiICsgbXNnKSkgfVxufVxuXG5mdW5jdGlvbiBwYXJ0aWFsIChmbiwgYXJnKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZuKGFyZylcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5lcmljU3Vic2NyaWJlIChmbiwgc3Vicywgb3B0aW9ucykge1xuICBpZiAoc3Vicy5pbmRleE9mKGZuKSA8IDApIHtcbiAgICBvcHRpb25zICYmIG9wdGlvbnMucHJlcGVuZFxuICAgICAgPyBzdWJzLnVuc2hpZnQoZm4pXG4gICAgICA6IHN1YnMucHVzaChmbik7XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaSA9IHN1YnMuaW5kZXhPZihmbik7XG4gICAgaWYgKGkgPiAtMSkge1xuICAgICAgc3Vicy5zcGxpY2UoaSwgMSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlc2V0U3RvcmUgKHN0b3JlLCBob3QpIHtcbiAgc3RvcmUuX2FjdGlvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBzdG9yZS5fbXV0YXRpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgc3RvcmUuX3dyYXBwZWRHZXR0ZXJzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgc3RvcmUuX21vZHVsZXNOYW1lc3BhY2VNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB2YXIgc3RhdGUgPSBzdG9yZS5zdGF0ZTtcbiAgLy8gaW5pdCBhbGwgbW9kdWxlc1xuICBpbnN0YWxsTW9kdWxlKHN0b3JlLCBzdGF0ZSwgW10sIHN0b3JlLl9tb2R1bGVzLnJvb3QsIHRydWUpO1xuICAvLyByZXNldCBzdGF0ZVxuICByZXNldFN0b3JlU3RhdGUoc3RvcmUsIHN0YXRlLCBob3QpO1xufVxuXG5mdW5jdGlvbiByZXNldFN0b3JlU3RhdGUgKHN0b3JlLCBzdGF0ZSwgaG90KSB7XG4gIHZhciBvbGRTdGF0ZSA9IHN0b3JlLl9zdGF0ZTtcblxuICAvLyBiaW5kIHN0b3JlIHB1YmxpYyBnZXR0ZXJzXG4gIHN0b3JlLmdldHRlcnMgPSB7fTtcbiAgLy8gcmVzZXQgbG9jYWwgZ2V0dGVycyBjYWNoZVxuICBzdG9yZS5fbWFrZUxvY2FsR2V0dGVyc0NhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdmFyIHdyYXBwZWRHZXR0ZXJzID0gc3RvcmUuX3dyYXBwZWRHZXR0ZXJzO1xuICB2YXIgY29tcHV0ZWRPYmogPSB7fTtcbiAgZm9yRWFjaFZhbHVlKHdyYXBwZWRHZXR0ZXJzLCBmdW5jdGlvbiAoZm4sIGtleSkge1xuICAgIC8vIHVzZSBjb21wdXRlZCB0byBsZXZlcmFnZSBpdHMgbGF6eS1jYWNoaW5nIG1lY2hhbmlzbVxuICAgIC8vIGRpcmVjdCBpbmxpbmUgZnVuY3Rpb24gdXNlIHdpbGwgbGVhZCB0byBjbG9zdXJlIHByZXNlcnZpbmcgb2xkU3RhdGUuXG4gICAgLy8gdXNpbmcgcGFydGlhbCB0byByZXR1cm4gZnVuY3Rpb24gd2l0aCBvbmx5IGFyZ3VtZW50cyBwcmVzZXJ2ZWQgaW4gY2xvc3VyZSBlbnZpcm9ubWVudC5cbiAgICBjb21wdXRlZE9ialtrZXldID0gcGFydGlhbChmbiwgc3RvcmUpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdG9yZS5nZXR0ZXJzLCBrZXksIHtcbiAgICAgIC8vIFRPRE86IHVzZSBgY29tcHV0ZWRgIHdoZW4gaXQncyBwb3NzaWJsZS4gYXQgdGhlIG1vbWVudCB3ZSBjYW4ndCBkdWUgdG9cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS92dWVqcy92dWV4L3B1bGwvMTg4M1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBjb21wdXRlZE9ialtrZXldKCk7IH0sXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlIC8vIGZvciBsb2NhbCBnZXR0ZXJzXG4gICAgfSk7XG4gIH0pO1xuXG4gIHN0b3JlLl9zdGF0ZSA9IHJlYWN0aXZlKHtcbiAgICBkYXRhOiBzdGF0ZVxuICB9KTtcblxuICAvLyBlbmFibGUgc3RyaWN0IG1vZGUgZm9yIG5ldyBzdGF0ZVxuICBpZiAoc3RvcmUuc3RyaWN0KSB7XG4gICAgZW5hYmxlU3RyaWN0TW9kZShzdG9yZSk7XG4gIH1cblxuICBpZiAob2xkU3RhdGUpIHtcbiAgICBpZiAoaG90KSB7XG4gICAgICAvLyBkaXNwYXRjaCBjaGFuZ2VzIGluIGFsbCBzdWJzY3JpYmVkIHdhdGNoZXJzXG4gICAgICAvLyB0byBmb3JjZSBnZXR0ZXIgcmUtZXZhbHVhdGlvbiBmb3IgaG90IHJlbG9hZGluZy5cbiAgICAgIHN0b3JlLl93aXRoQ29tbWl0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgb2xkU3RhdGUuZGF0YSA9IG51bGw7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5zdGFsbE1vZHVsZSAoc3RvcmUsIHJvb3RTdGF0ZSwgcGF0aCwgbW9kdWxlLCBob3QpIHtcbiAgdmFyIGlzUm9vdCA9ICFwYXRoLmxlbmd0aDtcbiAgdmFyIG5hbWVzcGFjZSA9IHN0b3JlLl9tb2R1bGVzLmdldE5hbWVzcGFjZShwYXRoKTtcblxuICAvLyByZWdpc3RlciBpbiBuYW1lc3BhY2UgbWFwXG4gIGlmIChtb2R1bGUubmFtZXNwYWNlZCkge1xuICAgIGlmIChzdG9yZS5fbW9kdWxlc05hbWVzcGFjZU1hcFtuYW1lc3BhY2VdICYmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgY29uc29sZS5lcnJvcigoXCJbdnVleF0gZHVwbGljYXRlIG5hbWVzcGFjZSBcIiArIG5hbWVzcGFjZSArIFwiIGZvciB0aGUgbmFtZXNwYWNlZCBtb2R1bGUgXCIgKyAocGF0aC5qb2luKCcvJykpKSk7XG4gICAgfVxuICAgIHN0b3JlLl9tb2R1bGVzTmFtZXNwYWNlTWFwW25hbWVzcGFjZV0gPSBtb2R1bGU7XG4gIH1cblxuICAvLyBzZXQgc3RhdGVcbiAgaWYgKCFpc1Jvb3QgJiYgIWhvdCkge1xuICAgIHZhciBwYXJlbnRTdGF0ZSA9IGdldE5lc3RlZFN0YXRlKHJvb3RTdGF0ZSwgcGF0aC5zbGljZSgwLCAtMSkpO1xuICAgIHZhciBtb2R1bGVOYW1lID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuICAgIHN0b3JlLl93aXRoQ29tbWl0KGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgICAgaWYgKG1vZHVsZU5hbWUgaW4gcGFyZW50U3RhdGUpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAoXCJbdnVleF0gc3RhdGUgZmllbGQgXFxcIlwiICsgbW9kdWxlTmFtZSArIFwiXFxcIiB3YXMgb3ZlcnJpZGRlbiBieSBhIG1vZHVsZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXQgXFxcIlwiICsgKHBhdGguam9pbignLicpKSArIFwiXFxcIlwiKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHBhcmVudFN0YXRlW21vZHVsZU5hbWVdID0gbW9kdWxlLnN0YXRlO1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIGxvY2FsID0gbW9kdWxlLmNvbnRleHQgPSBtYWtlTG9jYWxDb250ZXh0KHN0b3JlLCBuYW1lc3BhY2UsIHBhdGgpO1xuXG4gIG1vZHVsZS5mb3JFYWNoTXV0YXRpb24oZnVuY3Rpb24gKG11dGF0aW9uLCBrZXkpIHtcbiAgICB2YXIgbmFtZXNwYWNlZFR5cGUgPSBuYW1lc3BhY2UgKyBrZXk7XG4gICAgcmVnaXN0ZXJNdXRhdGlvbihzdG9yZSwgbmFtZXNwYWNlZFR5cGUsIG11dGF0aW9uLCBsb2NhbCk7XG4gIH0pO1xuXG4gIG1vZHVsZS5mb3JFYWNoQWN0aW9uKGZ1bmN0aW9uIChhY3Rpb24sIGtleSkge1xuICAgIHZhciB0eXBlID0gYWN0aW9uLnJvb3QgPyBrZXkgOiBuYW1lc3BhY2UgKyBrZXk7XG4gICAgdmFyIGhhbmRsZXIgPSBhY3Rpb24uaGFuZGxlciB8fCBhY3Rpb247XG4gICAgcmVnaXN0ZXJBY3Rpb24oc3RvcmUsIHR5cGUsIGhhbmRsZXIsIGxvY2FsKTtcbiAgfSk7XG5cbiAgbW9kdWxlLmZvckVhY2hHZXR0ZXIoZnVuY3Rpb24gKGdldHRlciwga2V5KSB7XG4gICAgdmFyIG5hbWVzcGFjZWRUeXBlID0gbmFtZXNwYWNlICsga2V5O1xuICAgIHJlZ2lzdGVyR2V0dGVyKHN0b3JlLCBuYW1lc3BhY2VkVHlwZSwgZ2V0dGVyLCBsb2NhbCk7XG4gIH0pO1xuXG4gIG1vZHVsZS5mb3JFYWNoQ2hpbGQoZnVuY3Rpb24gKGNoaWxkLCBrZXkpIHtcbiAgICBpbnN0YWxsTW9kdWxlKHN0b3JlLCByb290U3RhdGUsIHBhdGguY29uY2F0KGtleSksIGNoaWxkLCBob3QpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBtYWtlIGxvY2FsaXplZCBkaXNwYXRjaCwgY29tbWl0LCBnZXR0ZXJzIGFuZCBzdGF0ZVxuICogaWYgdGhlcmUgaXMgbm8gbmFtZXNwYWNlLCBqdXN0IHVzZSByb290IG9uZXNcbiAqL1xuZnVuY3Rpb24gbWFrZUxvY2FsQ29udGV4dCAoc3RvcmUsIG5hbWVzcGFjZSwgcGF0aCkge1xuICB2YXIgbm9OYW1lc3BhY2UgPSBuYW1lc3BhY2UgPT09ICcnO1xuXG4gIHZhciBsb2NhbCA9IHtcbiAgICBkaXNwYXRjaDogbm9OYW1lc3BhY2UgPyBzdG9yZS5kaXNwYXRjaCA6IGZ1bmN0aW9uIChfdHlwZSwgX3BheWxvYWQsIF9vcHRpb25zKSB7XG4gICAgICB2YXIgYXJncyA9IHVuaWZ5T2JqZWN0U3R5bGUoX3R5cGUsIF9wYXlsb2FkLCBfb3B0aW9ucyk7XG4gICAgICB2YXIgcGF5bG9hZCA9IGFyZ3MucGF5bG9hZDtcbiAgICAgIHZhciBvcHRpb25zID0gYXJncy5vcHRpb25zO1xuICAgICAgdmFyIHR5cGUgPSBhcmdzLnR5cGU7XG5cbiAgICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5yb290KSB7XG4gICAgICAgIHR5cGUgPSBuYW1lc3BhY2UgKyB0eXBlO1xuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFzdG9yZS5fYWN0aW9uc1t0eXBlXSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoKFwiW3Z1ZXhdIHVua25vd24gbG9jYWwgYWN0aW9uIHR5cGU6IFwiICsgKGFyZ3MudHlwZSkgKyBcIiwgZ2xvYmFsIHR5cGU6IFwiICsgdHlwZSkpO1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzdG9yZS5kaXNwYXRjaCh0eXBlLCBwYXlsb2FkKVxuICAgIH0sXG5cbiAgICBjb21taXQ6IG5vTmFtZXNwYWNlID8gc3RvcmUuY29tbWl0IDogZnVuY3Rpb24gKF90eXBlLCBfcGF5bG9hZCwgX29wdGlvbnMpIHtcbiAgICAgIHZhciBhcmdzID0gdW5pZnlPYmplY3RTdHlsZShfdHlwZSwgX3BheWxvYWQsIF9vcHRpb25zKTtcbiAgICAgIHZhciBwYXlsb2FkID0gYXJncy5wYXlsb2FkO1xuICAgICAgdmFyIG9wdGlvbnMgPSBhcmdzLm9wdGlvbnM7XG4gICAgICB2YXIgdHlwZSA9IGFyZ3MudHlwZTtcblxuICAgICAgaWYgKCFvcHRpb25zIHx8ICFvcHRpb25zLnJvb3QpIHtcbiAgICAgICAgdHlwZSA9IG5hbWVzcGFjZSArIHR5cGU7XG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIXN0b3JlLl9tdXRhdGlvbnNbdHlwZV0pIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSB1bmtub3duIGxvY2FsIG11dGF0aW9uIHR5cGU6IFwiICsgKGFyZ3MudHlwZSkgKyBcIiwgZ2xvYmFsIHR5cGU6IFwiICsgdHlwZSkpO1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHN0b3JlLmNvbW1pdCh0eXBlLCBwYXlsb2FkLCBvcHRpb25zKTtcbiAgICB9XG4gIH07XG5cbiAgLy8gZ2V0dGVycyBhbmQgc3RhdGUgb2JqZWN0IG11c3QgYmUgZ290dGVuIGxhemlseVxuICAvLyBiZWNhdXNlIHRoZXkgd2lsbCBiZSBjaGFuZ2VkIGJ5IHN0YXRlIHVwZGF0ZVxuICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhsb2NhbCwge1xuICAgIGdldHRlcnM6IHtcbiAgICAgIGdldDogbm9OYW1lc3BhY2VcbiAgICAgICAgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5nZXR0ZXJzOyB9XG4gICAgICAgIDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbWFrZUxvY2FsR2V0dGVycyhzdG9yZSwgbmFtZXNwYWNlKTsgfVxuICAgIH0sXG4gICAgc3RhdGU6IHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZ2V0TmVzdGVkU3RhdGUoc3RvcmUuc3RhdGUsIHBhdGgpOyB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbG9jYWxcbn1cblxuZnVuY3Rpb24gbWFrZUxvY2FsR2V0dGVycyAoc3RvcmUsIG5hbWVzcGFjZSkge1xuICBpZiAoIXN0b3JlLl9tYWtlTG9jYWxHZXR0ZXJzQ2FjaGVbbmFtZXNwYWNlXSkge1xuICAgIHZhciBnZXR0ZXJzUHJveHkgPSB7fTtcbiAgICB2YXIgc3BsaXRQb3MgPSBuYW1lc3BhY2UubGVuZ3RoO1xuICAgIE9iamVjdC5rZXlzKHN0b3JlLmdldHRlcnMpLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICAgIC8vIHNraXAgaWYgdGhlIHRhcmdldCBnZXR0ZXIgaXMgbm90IG1hdGNoIHRoaXMgbmFtZXNwYWNlXG4gICAgICBpZiAodHlwZS5zbGljZSgwLCBzcGxpdFBvcykgIT09IG5hbWVzcGFjZSkgeyByZXR1cm4gfVxuXG4gICAgICAvLyBleHRyYWN0IGxvY2FsIGdldHRlciB0eXBlXG4gICAgICB2YXIgbG9jYWxUeXBlID0gdHlwZS5zbGljZShzcGxpdFBvcyk7XG5cbiAgICAgIC8vIEFkZCBhIHBvcnQgdG8gdGhlIGdldHRlcnMgcHJveHkuXG4gICAgICAvLyBEZWZpbmUgYXMgZ2V0dGVyIHByb3BlcnR5IGJlY2F1c2VcbiAgICAgIC8vIHdlIGRvIG5vdCB3YW50IHRvIGV2YWx1YXRlIHRoZSBnZXR0ZXJzIGluIHRoaXMgdGltZS5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShnZXR0ZXJzUHJveHksIGxvY2FsVHlwZSwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLmdldHRlcnNbdHlwZV07IH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHN0b3JlLl9tYWtlTG9jYWxHZXR0ZXJzQ2FjaGVbbmFtZXNwYWNlXSA9IGdldHRlcnNQcm94eTtcbiAgfVxuXG4gIHJldHVybiBzdG9yZS5fbWFrZUxvY2FsR2V0dGVyc0NhY2hlW25hbWVzcGFjZV1cbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJNdXRhdGlvbiAoc3RvcmUsIHR5cGUsIGhhbmRsZXIsIGxvY2FsKSB7XG4gIHZhciBlbnRyeSA9IHN0b3JlLl9tdXRhdGlvbnNbdHlwZV0gfHwgKHN0b3JlLl9tdXRhdGlvbnNbdHlwZV0gPSBbXSk7XG4gIGVudHJ5LnB1c2goZnVuY3Rpb24gd3JhcHBlZE11dGF0aW9uSGFuZGxlciAocGF5bG9hZCkge1xuICAgIGhhbmRsZXIuY2FsbChzdG9yZSwgbG9jYWwuc3RhdGUsIHBheWxvYWQpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJBY3Rpb24gKHN0b3JlLCB0eXBlLCBoYW5kbGVyLCBsb2NhbCkge1xuICB2YXIgZW50cnkgPSBzdG9yZS5fYWN0aW9uc1t0eXBlXSB8fCAoc3RvcmUuX2FjdGlvbnNbdHlwZV0gPSBbXSk7XG4gIGVudHJ5LnB1c2goZnVuY3Rpb24gd3JhcHBlZEFjdGlvbkhhbmRsZXIgKHBheWxvYWQpIHtcbiAgICB2YXIgcmVzID0gaGFuZGxlci5jYWxsKHN0b3JlLCB7XG4gICAgICBkaXNwYXRjaDogbG9jYWwuZGlzcGF0Y2gsXG4gICAgICBjb21taXQ6IGxvY2FsLmNvbW1pdCxcbiAgICAgIGdldHRlcnM6IGxvY2FsLmdldHRlcnMsXG4gICAgICBzdGF0ZTogbG9jYWwuc3RhdGUsXG4gICAgICByb290R2V0dGVyczogc3RvcmUuZ2V0dGVycyxcbiAgICAgIHJvb3RTdGF0ZTogc3RvcmUuc3RhdGVcbiAgICB9LCBwYXlsb2FkKTtcbiAgICBpZiAoIWlzUHJvbWlzZShyZXMpKSB7XG4gICAgICByZXMgPSBQcm9taXNlLnJlc29sdmUocmVzKTtcbiAgICB9XG4gICAgaWYgKHN0b3JlLl9kZXZ0b29sSG9vaykge1xuICAgICAgcmV0dXJuIHJlcy5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHN0b3JlLl9kZXZ0b29sSG9vay5lbWl0KCd2dWV4OmVycm9yJywgZXJyKTtcbiAgICAgICAgdGhyb3cgZXJyXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmVzXG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJHZXR0ZXIgKHN0b3JlLCB0eXBlLCByYXdHZXR0ZXIsIGxvY2FsKSB7XG4gIGlmIChzdG9yZS5fd3JhcHBlZEdldHRlcnNbdHlwZV0pIHtcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSBkdXBsaWNhdGUgZ2V0dGVyIGtleTogXCIgKyB0eXBlKSk7XG4gICAgfVxuICAgIHJldHVyblxuICB9XG4gIHN0b3JlLl93cmFwcGVkR2V0dGVyc1t0eXBlXSA9IGZ1bmN0aW9uIHdyYXBwZWRHZXR0ZXIgKHN0b3JlKSB7XG4gICAgcmV0dXJuIHJhd0dldHRlcihcbiAgICAgIGxvY2FsLnN0YXRlLCAvLyBsb2NhbCBzdGF0ZVxuICAgICAgbG9jYWwuZ2V0dGVycywgLy8gbG9jYWwgZ2V0dGVyc1xuICAgICAgc3RvcmUuc3RhdGUsIC8vIHJvb3Qgc3RhdGVcbiAgICAgIHN0b3JlLmdldHRlcnMgLy8gcm9vdCBnZXR0ZXJzXG4gICAgKVxuICB9O1xufVxuXG5mdW5jdGlvbiBlbmFibGVTdHJpY3RNb2RlIChzdG9yZSkge1xuICB3YXRjaChmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5fc3RhdGUuZGF0YTsgfSwgZnVuY3Rpb24gKCkge1xuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgIGFzc2VydChzdG9yZS5fY29tbWl0dGluZywgXCJkbyBub3QgbXV0YXRlIHZ1ZXggc3RvcmUgc3RhdGUgb3V0c2lkZSBtdXRhdGlvbiBoYW5kbGVycy5cIik7XG4gICAgfVxuICB9LCB7IGRlZXA6IHRydWUsIGZsdXNoOiAnc3luYycgfSk7XG59XG5cbmZ1bmN0aW9uIGdldE5lc3RlZFN0YXRlIChzdGF0ZSwgcGF0aCkge1xuICByZXR1cm4gcGF0aC5yZWR1Y2UoZnVuY3Rpb24gKHN0YXRlLCBrZXkpIHsgcmV0dXJuIHN0YXRlW2tleV07IH0sIHN0YXRlKVxufVxuXG5mdW5jdGlvbiB1bmlmeU9iamVjdFN0eWxlICh0eXBlLCBwYXlsb2FkLCBvcHRpb25zKSB7XG4gIGlmIChpc09iamVjdCh0eXBlKSAmJiB0eXBlLnR5cGUpIHtcbiAgICBvcHRpb25zID0gcGF5bG9hZDtcbiAgICBwYXlsb2FkID0gdHlwZTtcbiAgICB0eXBlID0gdHlwZS50eXBlO1xuICB9XG5cbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgIGFzc2VydCh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycsIChcImV4cGVjdHMgc3RyaW5nIGFzIHRoZSB0eXBlLCBidXQgZm91bmQgXCIgKyAodHlwZW9mIHR5cGUpICsgXCIuXCIpKTtcbiAgfVxuXG4gIHJldHVybiB7IHR5cGU6IHR5cGUsIHBheWxvYWQ6IHBheWxvYWQsIG9wdGlvbnM6IG9wdGlvbnMgfVxufVxuXG52YXIgTEFCRUxfVlVFWF9CSU5ESU5HUyA9ICd2dWV4IGJpbmRpbmdzJztcbnZhciBNVVRBVElPTlNfTEFZRVJfSUQgPSAndnVleDptdXRhdGlvbnMnO1xudmFyIEFDVElPTlNfTEFZRVJfSUQgPSAndnVleDphY3Rpb25zJztcbnZhciBJTlNQRUNUT1JfSUQgPSAndnVleCc7XG5cbnZhciBhY3Rpb25JZCA9IDA7XG5cbmZ1bmN0aW9uIGFkZERldnRvb2xzIChhcHAsIHN0b3JlKSB7XG4gIHNldHVwRGV2dG9vbHNQbHVnaW4oXG4gICAge1xuICAgICAgaWQ6ICdvcmcudnVlanMudnVleCcsXG4gICAgICBhcHA6IGFwcCxcbiAgICAgIGxhYmVsOiAnVnVleCcsXG4gICAgICBob21lcGFnZTogJ2h0dHBzOi8vbmV4dC52dWV4LnZ1ZWpzLm9yZy8nLFxuICAgICAgbG9nbzogJ2h0dHBzOi8vdnVlanMub3JnL2ltYWdlcy9pY29ucy9mYXZpY29uLTk2eDk2LnBuZycsXG4gICAgICBwYWNrYWdlTmFtZTogJ3Z1ZXgnLFxuICAgICAgY29tcG9uZW50U3RhdGVUeXBlczogW0xBQkVMX1ZVRVhfQklORElOR1NdXG4gICAgfSxcbiAgICBmdW5jdGlvbiAoYXBpKSB7XG4gICAgICBhcGkuYWRkVGltZWxpbmVMYXllcih7XG4gICAgICAgIGlkOiBNVVRBVElPTlNfTEFZRVJfSUQsXG4gICAgICAgIGxhYmVsOiAnVnVleCBNdXRhdGlvbnMnLFxuICAgICAgICBjb2xvcjogQ09MT1JfTElNRV81MDBcbiAgICAgIH0pO1xuXG4gICAgICBhcGkuYWRkVGltZWxpbmVMYXllcih7XG4gICAgICAgIGlkOiBBQ1RJT05TX0xBWUVSX0lELFxuICAgICAgICBsYWJlbDogJ1Z1ZXggQWN0aW9ucycsXG4gICAgICAgIGNvbG9yOiBDT0xPUl9MSU1FXzUwMFxuICAgICAgfSk7XG5cbiAgICAgIGFwaS5hZGRJbnNwZWN0b3Ioe1xuICAgICAgICBpZDogSU5TUEVDVE9SX0lELFxuICAgICAgICBsYWJlbDogJ1Z1ZXgnLFxuICAgICAgICBpY29uOiAnc3RvcmFnZScsXG4gICAgICAgIHRyZWVGaWx0ZXJQbGFjZWhvbGRlcjogJ0ZpbHRlciBzdG9yZXMuLi4nXG4gICAgICB9KTtcblxuICAgICAgYXBpLm9uLmdldEluc3BlY3RvclRyZWUoZnVuY3Rpb24gKHBheWxvYWQpIHtcbiAgICAgICAgaWYgKHBheWxvYWQuYXBwID09PSBhcHAgJiYgcGF5bG9hZC5pbnNwZWN0b3JJZCA9PT0gSU5TUEVDVE9SX0lEKSB7XG4gICAgICAgICAgaWYgKHBheWxvYWQuZmlsdGVyKSB7XG4gICAgICAgICAgICB2YXIgbm9kZXMgPSBbXTtcbiAgICAgICAgICAgIGZsYXR0ZW5TdG9yZUZvckluc3BlY3RvclRyZWUobm9kZXMsIHN0b3JlLl9tb2R1bGVzLnJvb3QsIHBheWxvYWQuZmlsdGVyLCAnJyk7XG4gICAgICAgICAgICBwYXlsb2FkLnJvb3ROb2RlcyA9IG5vZGVzO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXlsb2FkLnJvb3ROb2RlcyA9IFtcbiAgICAgICAgICAgICAgZm9ybWF0U3RvcmVGb3JJbnNwZWN0b3JUcmVlKHN0b3JlLl9tb2R1bGVzLnJvb3QsICcnKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBhcGkub24uZ2V0SW5zcGVjdG9yU3RhdGUoZnVuY3Rpb24gKHBheWxvYWQpIHtcbiAgICAgICAgaWYgKHBheWxvYWQuYXBwID09PSBhcHAgJiYgcGF5bG9hZC5pbnNwZWN0b3JJZCA9PT0gSU5TUEVDVE9SX0lEKSB7XG4gICAgICAgICAgdmFyIG1vZHVsZVBhdGggPSBwYXlsb2FkLm5vZGVJZDtcbiAgICAgICAgICBtYWtlTG9jYWxHZXR0ZXJzKHN0b3JlLCBtb2R1bGVQYXRoKTtcbiAgICAgICAgICBwYXlsb2FkLnN0YXRlID0gZm9ybWF0U3RvcmVGb3JJbnNwZWN0b3JTdGF0ZShcbiAgICAgICAgICAgIGdldFN0b3JlTW9kdWxlKHN0b3JlLl9tb2R1bGVzLCBtb2R1bGVQYXRoKSxcbiAgICAgICAgICAgIG1vZHVsZVBhdGggPT09ICdyb290JyA/IHN0b3JlLmdldHRlcnMgOiBzdG9yZS5fbWFrZUxvY2FsR2V0dGVyc0NhY2hlLFxuICAgICAgICAgICAgbW9kdWxlUGF0aFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBhcGkub24uZWRpdEluc3BlY3RvclN0YXRlKGZ1bmN0aW9uIChwYXlsb2FkKSB7XG4gICAgICAgIGlmIChwYXlsb2FkLmFwcCA9PT0gYXBwICYmIHBheWxvYWQuaW5zcGVjdG9ySWQgPT09IElOU1BFQ1RPUl9JRCkge1xuICAgICAgICAgIHZhciBtb2R1bGVQYXRoID0gcGF5bG9hZC5ub2RlSWQ7XG4gICAgICAgICAgdmFyIHBhdGggPSBwYXlsb2FkLnBhdGg7XG4gICAgICAgICAgaWYgKG1vZHVsZVBhdGggIT09ICdyb290Jykge1xuICAgICAgICAgICAgcGF0aCA9IG1vZHVsZVBhdGguc3BsaXQoJy8nKS5maWx0ZXIoQm9vbGVhbikuY29uY2F0KCBwYXRoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3RvcmUuX3dpdGhDb21taXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcGF5bG9hZC5zZXQoc3RvcmUuX3N0YXRlLmRhdGEsIHBhdGgsIHBheWxvYWQuc3RhdGUudmFsdWUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgc3RvcmUuc3Vic2NyaWJlKGZ1bmN0aW9uIChtdXRhdGlvbiwgc3RhdGUpIHtcbiAgICAgICAgdmFyIGRhdGEgPSB7fTtcblxuICAgICAgICBpZiAobXV0YXRpb24ucGF5bG9hZCkge1xuICAgICAgICAgIGRhdGEucGF5bG9hZCA9IG11dGF0aW9uLnBheWxvYWQ7XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhLnN0YXRlID0gc3RhdGU7XG5cbiAgICAgICAgYXBpLm5vdGlmeUNvbXBvbmVudFVwZGF0ZSgpO1xuICAgICAgICBhcGkuc2VuZEluc3BlY3RvclRyZWUoSU5TUEVDVE9SX0lEKTtcbiAgICAgICAgYXBpLnNlbmRJbnNwZWN0b3JTdGF0ZShJTlNQRUNUT1JfSUQpO1xuXG4gICAgICAgIGFwaS5hZGRUaW1lbGluZUV2ZW50KHtcbiAgICAgICAgICBsYXllcklkOiBNVVRBVElPTlNfTEFZRVJfSUQsXG4gICAgICAgICAgZXZlbnQ6IHtcbiAgICAgICAgICAgIHRpbWU6IERhdGUubm93KCksXG4gICAgICAgICAgICB0aXRsZTogbXV0YXRpb24udHlwZSxcbiAgICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHN0b3JlLnN1YnNjcmliZUFjdGlvbih7XG4gICAgICAgIGJlZm9yZTogZnVuY3Rpb24gKGFjdGlvbiwgc3RhdGUpIHtcbiAgICAgICAgICB2YXIgZGF0YSA9IHt9O1xuICAgICAgICAgIGlmIChhY3Rpb24ucGF5bG9hZCkge1xuICAgICAgICAgICAgZGF0YS5wYXlsb2FkID0gYWN0aW9uLnBheWxvYWQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFjdGlvbi5faWQgPSBhY3Rpb25JZCsrO1xuICAgICAgICAgIGFjdGlvbi5fdGltZSA9IERhdGUubm93KCk7XG4gICAgICAgICAgZGF0YS5zdGF0ZSA9IHN0YXRlO1xuXG4gICAgICAgICAgYXBpLmFkZFRpbWVsaW5lRXZlbnQoe1xuICAgICAgICAgICAgbGF5ZXJJZDogQUNUSU9OU19MQVlFUl9JRCxcbiAgICAgICAgICAgIGV2ZW50OiB7XG4gICAgICAgICAgICAgIHRpbWU6IGFjdGlvbi5fdGltZSxcbiAgICAgICAgICAgICAgdGl0bGU6IGFjdGlvbi50eXBlLFxuICAgICAgICAgICAgICBncm91cElkOiBhY3Rpb24uX2lkLFxuICAgICAgICAgICAgICBzdWJ0aXRsZTogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBhZnRlcjogZnVuY3Rpb24gKGFjdGlvbiwgc3RhdGUpIHtcbiAgICAgICAgICB2YXIgZGF0YSA9IHt9O1xuICAgICAgICAgIHZhciBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBhY3Rpb24uX3RpbWU7XG4gICAgICAgICAgZGF0YS5kdXJhdGlvbiA9IHtcbiAgICAgICAgICAgIF9jdXN0b206IHtcbiAgICAgICAgICAgICAgdHlwZTogJ2R1cmF0aW9uJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogKGR1cmF0aW9uICsgXCJtc1wiKSxcbiAgICAgICAgICAgICAgdG9vbHRpcDogJ0FjdGlvbiBkdXJhdGlvbicsXG4gICAgICAgICAgICAgIHZhbHVlOiBkdXJhdGlvblxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKGFjdGlvbi5wYXlsb2FkKSB7XG4gICAgICAgICAgICBkYXRhLnBheWxvYWQgPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGF0YS5zdGF0ZSA9IHN0YXRlO1xuXG4gICAgICAgICAgYXBpLmFkZFRpbWVsaW5lRXZlbnQoe1xuICAgICAgICAgICAgbGF5ZXJJZDogQUNUSU9OU19MQVlFUl9JRCxcbiAgICAgICAgICAgIGV2ZW50OiB7XG4gICAgICAgICAgICAgIHRpbWU6IERhdGUubm93KCksXG4gICAgICAgICAgICAgIHRpdGxlOiBhY3Rpb24udHlwZSxcbiAgICAgICAgICAgICAgZ3JvdXBJZDogYWN0aW9uLl9pZCxcbiAgICAgICAgICAgICAgc3VidGl0bGU6ICdlbmQnLFxuICAgICAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcbn1cblxuLy8gZXh0cmFjdGVkIGZyb20gdGFpbHdpbmQgcGFsZXR0ZVxudmFyIENPTE9SX0xJTUVfNTAwID0gMHg4NGNjMTY7XG52YXIgQ09MT1JfREFSSyA9IDB4NjY2NjY2O1xudmFyIENPTE9SX1dISVRFID0gMHhmZmZmZmY7XG5cbnZhciBUQUdfTkFNRVNQQUNFRCA9IHtcbiAgbGFiZWw6ICduYW1lc3BhY2VkJyxcbiAgdGV4dENvbG9yOiBDT0xPUl9XSElURSxcbiAgYmFja2dyb3VuZENvbG9yOiBDT0xPUl9EQVJLXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3ROYW1lRnJvbVBhdGggKHBhdGgpIHtcbiAgcmV0dXJuIHBhdGggJiYgcGF0aCAhPT0gJ3Jvb3QnID8gcGF0aC5zcGxpdCgnLycpLnNsaWNlKC0yLCAtMSlbMF0gOiAnUm9vdCdcbn1cblxuLyoqXG4gKiBAcGFyYW0geyp9IG1vZHVsZVxuICogQHJldHVybiB7aW1wb3J0KCdAdnVlL2RldnRvb2xzLWFwaScpLkN1c3RvbUluc3BlY3Rvck5vZGV9XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdFN0b3JlRm9ySW5zcGVjdG9yVHJlZSAobW9kdWxlLCBwYXRoKSB7XG4gIHJldHVybiB7XG4gICAgaWQ6IHBhdGggfHwgJ3Jvb3QnLFxuICAgIC8vIGFsbCBtb2R1bGVzIGVuZCB3aXRoIGEgYC9gLCB3ZSB3YW50IHRoZSBsYXN0IHNlZ21lbnQgb25seVxuICAgIC8vIGNhcnQvIC0+IGNhcnRcbiAgICAvLyBuZXN0ZWQvY2FydC8gLT4gY2FydFxuICAgIGxhYmVsOiBleHRyYWN0TmFtZUZyb21QYXRoKHBhdGgpLFxuICAgIHRhZ3M6IG1vZHVsZS5uYW1lc3BhY2VkID8gW1RBR19OQU1FU1BBQ0VEXSA6IFtdLFxuICAgIGNoaWxkcmVuOiBPYmplY3Qua2V5cyhtb2R1bGUuX2NoaWxkcmVuKS5tYXAoZnVuY3Rpb24gKG1vZHVsZU5hbWUpIHsgcmV0dXJuIGZvcm1hdFN0b3JlRm9ySW5zcGVjdG9yVHJlZShcbiAgICAgICAgbW9kdWxlLl9jaGlsZHJlblttb2R1bGVOYW1lXSxcbiAgICAgICAgcGF0aCArIG1vZHVsZU5hbWUgKyAnLydcbiAgICAgICk7IH1cbiAgICApXG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnQHZ1ZS9kZXZ0b29scy1hcGknKS5DdXN0b21JbnNwZWN0b3JOb2RlW119IHJlc3VsdFxuICogQHBhcmFtIHsqfSBtb2R1bGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBmaWx0ZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gKi9cbmZ1bmN0aW9uIGZsYXR0ZW5TdG9yZUZvckluc3BlY3RvclRyZWUgKHJlc3VsdCwgbW9kdWxlLCBmaWx0ZXIsIHBhdGgpIHtcbiAgaWYgKHBhdGguaW5jbHVkZXMoZmlsdGVyKSkge1xuICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgIGlkOiBwYXRoIHx8ICdyb290JyxcbiAgICAgIGxhYmVsOiBwYXRoLmVuZHNXaXRoKCcvJykgPyBwYXRoLnNsaWNlKDAsIHBhdGgubGVuZ3RoIC0gMSkgOiBwYXRoIHx8ICdSb290JyxcbiAgICAgIHRhZ3M6IG1vZHVsZS5uYW1lc3BhY2VkID8gW1RBR19OQU1FU1BBQ0VEXSA6IFtdXG4gICAgfSk7XG4gIH1cbiAgT2JqZWN0LmtleXMobW9kdWxlLl9jaGlsZHJlbikuZm9yRWFjaChmdW5jdGlvbiAobW9kdWxlTmFtZSkge1xuICAgIGZsYXR0ZW5TdG9yZUZvckluc3BlY3RvclRyZWUocmVzdWx0LCBtb2R1bGUuX2NoaWxkcmVuW21vZHVsZU5hbWVdLCBmaWx0ZXIsIHBhdGggKyBtb2R1bGVOYW1lICsgJy8nKTtcbiAgfSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHsqfSBtb2R1bGVcbiAqIEByZXR1cm4ge2ltcG9ydCgnQHZ1ZS9kZXZ0b29scy1hcGknKS5DdXN0b21JbnNwZWN0b3JTdGF0ZX1cbiAqL1xuZnVuY3Rpb24gZm9ybWF0U3RvcmVGb3JJbnNwZWN0b3JTdGF0ZSAobW9kdWxlLCBnZXR0ZXJzLCBwYXRoKSB7XG4gIGdldHRlcnMgPSBwYXRoID09PSAncm9vdCcgPyBnZXR0ZXJzIDogZ2V0dGVyc1twYXRoXTtcbiAgdmFyIGdldHRlcnNLZXlzID0gT2JqZWN0LmtleXMoZ2V0dGVycyk7XG4gIHZhciBzdG9yZVN0YXRlID0ge1xuICAgIHN0YXRlOiBPYmplY3Qua2V5cyhtb2R1bGUuc3RhdGUpLm1hcChmdW5jdGlvbiAoa2V5KSB7IHJldHVybiAoe1xuICAgICAga2V5OiBrZXksXG4gICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiBtb2R1bGUuc3RhdGVba2V5XVxuICAgIH0pOyB9KVxuICB9O1xuXG4gIGlmIChnZXR0ZXJzS2V5cy5sZW5ndGgpIHtcbiAgICB2YXIgdHJlZSA9IHRyYW5zZm9ybVBhdGhzVG9PYmplY3RUcmVlKGdldHRlcnMpO1xuICAgIHN0b3JlU3RhdGUuZ2V0dGVycyA9IE9iamVjdC5rZXlzKHRyZWUpLm1hcChmdW5jdGlvbiAoa2V5KSB7IHJldHVybiAoe1xuICAgICAga2V5OiBrZXkuZW5kc1dpdGgoJy8nKSA/IGV4dHJhY3ROYW1lRnJvbVBhdGgoa2V5KSA6IGtleSxcbiAgICAgIGVkaXRhYmxlOiBmYWxzZSxcbiAgICAgIHZhbHVlOiBjYW5UaHJvdyhmdW5jdGlvbiAoKSB7IHJldHVybiB0cmVlW2tleV07IH0pXG4gICAgfSk7IH0pO1xuICB9XG5cbiAgcmV0dXJuIHN0b3JlU3RhdGVcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtUGF0aHNUb09iamVjdFRyZWUgKGdldHRlcnMpIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBPYmplY3Qua2V5cyhnZXR0ZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgcGF0aCA9IGtleS5zcGxpdCgnLycpO1xuICAgIGlmIChwYXRoLmxlbmd0aCA+IDEpIHtcbiAgICAgIHZhciB0YXJnZXQgPSByZXN1bHQ7XG4gICAgICB2YXIgbGVhZktleSA9IHBhdGgucG9wKCk7XG4gICAgICBwYXRoLmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICAgICAgaWYgKCF0YXJnZXRbcF0pIHtcbiAgICAgICAgICB0YXJnZXRbcF0gPSB7XG4gICAgICAgICAgICBfY3VzdG9tOiB7XG4gICAgICAgICAgICAgIHZhbHVlOiB7fSxcbiAgICAgICAgICAgICAgZGlzcGxheTogcCxcbiAgICAgICAgICAgICAgdG9vbHRpcDogJ01vZHVsZScsXG4gICAgICAgICAgICAgIGFic3RyYWN0OiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB0YXJnZXQgPSB0YXJnZXRbcF0uX2N1c3RvbS52YWx1ZTtcbiAgICAgIH0pO1xuICAgICAgdGFyZ2V0W2xlYWZLZXldID0gY2FuVGhyb3coZnVuY3Rpb24gKCkgeyByZXR1cm4gZ2V0dGVyc1trZXldOyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0W2tleV0gPSBjYW5UaHJvdyhmdW5jdGlvbiAoKSB7IHJldHVybiBnZXR0ZXJzW2tleV07IH0pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHRcbn1cblxuZnVuY3Rpb24gZ2V0U3RvcmVNb2R1bGUgKG1vZHVsZU1hcCwgcGF0aCkge1xuICB2YXIgbmFtZXMgPSBwYXRoLnNwbGl0KCcvJykuZmlsdGVyKGZ1bmN0aW9uIChuKSB7IHJldHVybiBuOyB9KTtcbiAgcmV0dXJuIG5hbWVzLnJlZHVjZShcbiAgICBmdW5jdGlvbiAobW9kdWxlLCBtb2R1bGVOYW1lLCBpKSB7XG4gICAgICB2YXIgY2hpbGQgPSBtb2R1bGVbbW9kdWxlTmFtZV07XG4gICAgICBpZiAoIWNoaWxkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigoXCJNaXNzaW5nIG1vZHVsZSBcXFwiXCIgKyBtb2R1bGVOYW1lICsgXCJcXFwiIGZvciBwYXRoIFxcXCJcIiArIHBhdGggKyBcIlxcXCIuXCIpKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGkgPT09IG5hbWVzLmxlbmd0aCAtIDEgPyBjaGlsZCA6IGNoaWxkLl9jaGlsZHJlblxuICAgIH0sXG4gICAgcGF0aCA9PT0gJ3Jvb3QnID8gbW9kdWxlTWFwIDogbW9kdWxlTWFwLnJvb3QuX2NoaWxkcmVuXG4gIClcbn1cblxuZnVuY3Rpb24gY2FuVGhyb3cgKGNiKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGNiKClcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBlXG4gIH1cbn1cblxuLy8gQmFzZSBkYXRhIHN0cnVjdCBmb3Igc3RvcmUncyBtb2R1bGUsIHBhY2thZ2Ugd2l0aCBzb21lIGF0dHJpYnV0ZSBhbmQgbWV0aG9kXG52YXIgTW9kdWxlID0gZnVuY3Rpb24gTW9kdWxlIChyYXdNb2R1bGUsIHJ1bnRpbWUpIHtcbiAgdGhpcy5ydW50aW1lID0gcnVudGltZTtcbiAgLy8gU3RvcmUgc29tZSBjaGlsZHJlbiBpdGVtXG4gIHRoaXMuX2NoaWxkcmVuID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgLy8gU3RvcmUgdGhlIG9yaWdpbiBtb2R1bGUgb2JqZWN0IHdoaWNoIHBhc3NlZCBieSBwcm9ncmFtbWVyXG4gIHRoaXMuX3Jhd01vZHVsZSA9IHJhd01vZHVsZTtcbiAgdmFyIHJhd1N0YXRlID0gcmF3TW9kdWxlLnN0YXRlO1xuXG4gIC8vIFN0b3JlIHRoZSBvcmlnaW4gbW9kdWxlJ3Mgc3RhdGVcbiAgdGhpcy5zdGF0ZSA9ICh0eXBlb2YgcmF3U3RhdGUgPT09ICdmdW5jdGlvbicgPyByYXdTdGF0ZSgpIDogcmF3U3RhdGUpIHx8IHt9O1xufTtcblxudmFyIHByb3RvdHlwZUFjY2Vzc29ycyQxID0geyBuYW1lc3BhY2VkOiB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH07XG5cbnByb3RvdHlwZUFjY2Vzc29ycyQxLm5hbWVzcGFjZWQuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gISF0aGlzLl9yYXdNb2R1bGUubmFtZXNwYWNlZFxufTtcblxuTW9kdWxlLnByb3RvdHlwZS5hZGRDaGlsZCA9IGZ1bmN0aW9uIGFkZENoaWxkIChrZXksIG1vZHVsZSkge1xuICB0aGlzLl9jaGlsZHJlbltrZXldID0gbW9kdWxlO1xufTtcblxuTW9kdWxlLnByb3RvdHlwZS5yZW1vdmVDaGlsZCA9IGZ1bmN0aW9uIHJlbW92ZUNoaWxkIChrZXkpIHtcbiAgZGVsZXRlIHRoaXMuX2NoaWxkcmVuW2tleV07XG59O1xuXG5Nb2R1bGUucHJvdG90eXBlLmdldENoaWxkID0gZnVuY3Rpb24gZ2V0Q2hpbGQgKGtleSkge1xuICByZXR1cm4gdGhpcy5fY2hpbGRyZW5ba2V5XVxufTtcblxuTW9kdWxlLnByb3RvdHlwZS5oYXNDaGlsZCA9IGZ1bmN0aW9uIGhhc0NoaWxkIChrZXkpIHtcbiAgcmV0dXJuIGtleSBpbiB0aGlzLl9jaGlsZHJlblxufTtcblxuTW9kdWxlLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKHJhd01vZHVsZSkge1xuICB0aGlzLl9yYXdNb2R1bGUubmFtZXNwYWNlZCA9IHJhd01vZHVsZS5uYW1lc3BhY2VkO1xuICBpZiAocmF3TW9kdWxlLmFjdGlvbnMpIHtcbiAgICB0aGlzLl9yYXdNb2R1bGUuYWN0aW9ucyA9IHJhd01vZHVsZS5hY3Rpb25zO1xuICB9XG4gIGlmIChyYXdNb2R1bGUubXV0YXRpb25zKSB7XG4gICAgdGhpcy5fcmF3TW9kdWxlLm11dGF0aW9ucyA9IHJhd01vZHVsZS5tdXRhdGlvbnM7XG4gIH1cbiAgaWYgKHJhd01vZHVsZS5nZXR0ZXJzKSB7XG4gICAgdGhpcy5fcmF3TW9kdWxlLmdldHRlcnMgPSByYXdNb2R1bGUuZ2V0dGVycztcbiAgfVxufTtcblxuTW9kdWxlLnByb3RvdHlwZS5mb3JFYWNoQ2hpbGQgPSBmdW5jdGlvbiBmb3JFYWNoQ2hpbGQgKGZuKSB7XG4gIGZvckVhY2hWYWx1ZSh0aGlzLl9jaGlsZHJlbiwgZm4pO1xufTtcblxuTW9kdWxlLnByb3RvdHlwZS5mb3JFYWNoR2V0dGVyID0gZnVuY3Rpb24gZm9yRWFjaEdldHRlciAoZm4pIHtcbiAgaWYgKHRoaXMuX3Jhd01vZHVsZS5nZXR0ZXJzKSB7XG4gICAgZm9yRWFjaFZhbHVlKHRoaXMuX3Jhd01vZHVsZS5nZXR0ZXJzLCBmbik7XG4gIH1cbn07XG5cbk1vZHVsZS5wcm90b3R5cGUuZm9yRWFjaEFjdGlvbiA9IGZ1bmN0aW9uIGZvckVhY2hBY3Rpb24gKGZuKSB7XG4gIGlmICh0aGlzLl9yYXdNb2R1bGUuYWN0aW9ucykge1xuICAgIGZvckVhY2hWYWx1ZSh0aGlzLl9yYXdNb2R1bGUuYWN0aW9ucywgZm4pO1xuICB9XG59O1xuXG5Nb2R1bGUucHJvdG90eXBlLmZvckVhY2hNdXRhdGlvbiA9IGZ1bmN0aW9uIGZvckVhY2hNdXRhdGlvbiAoZm4pIHtcbiAgaWYgKHRoaXMuX3Jhd01vZHVsZS5tdXRhdGlvbnMpIHtcbiAgICBmb3JFYWNoVmFsdWUodGhpcy5fcmF3TW9kdWxlLm11dGF0aW9ucywgZm4pO1xuICB9XG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyggTW9kdWxlLnByb3RvdHlwZSwgcHJvdG90eXBlQWNjZXNzb3JzJDEgKTtcblxudmFyIE1vZHVsZUNvbGxlY3Rpb24gPSBmdW5jdGlvbiBNb2R1bGVDb2xsZWN0aW9uIChyYXdSb290TW9kdWxlKSB7XG4gIC8vIHJlZ2lzdGVyIHJvb3QgbW9kdWxlIChWdWV4LlN0b3JlIG9wdGlvbnMpXG4gIHRoaXMucmVnaXN0ZXIoW10sIHJhd1Jvb3RNb2R1bGUsIGZhbHNlKTtcbn07XG5cbk1vZHVsZUNvbGxlY3Rpb24ucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIGdldCAocGF0aCkge1xuICByZXR1cm4gcGF0aC5yZWR1Y2UoZnVuY3Rpb24gKG1vZHVsZSwga2V5KSB7XG4gICAgcmV0dXJuIG1vZHVsZS5nZXRDaGlsZChrZXkpXG4gIH0sIHRoaXMucm9vdClcbn07XG5cbk1vZHVsZUNvbGxlY3Rpb24ucHJvdG90eXBlLmdldE5hbWVzcGFjZSA9IGZ1bmN0aW9uIGdldE5hbWVzcGFjZSAocGF0aCkge1xuICB2YXIgbW9kdWxlID0gdGhpcy5yb290O1xuICByZXR1cm4gcGF0aC5yZWR1Y2UoZnVuY3Rpb24gKG5hbWVzcGFjZSwga2V5KSB7XG4gICAgbW9kdWxlID0gbW9kdWxlLmdldENoaWxkKGtleSk7XG4gICAgcmV0dXJuIG5hbWVzcGFjZSArIChtb2R1bGUubmFtZXNwYWNlZCA/IGtleSArICcvJyA6ICcnKVxuICB9LCAnJylcbn07XG5cbk1vZHVsZUNvbGxlY3Rpb24ucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZSQxIChyYXdSb290TW9kdWxlKSB7XG4gIHVwZGF0ZShbXSwgdGhpcy5yb290LCByYXdSb290TW9kdWxlKTtcbn07XG5cbk1vZHVsZUNvbGxlY3Rpb24ucHJvdG90eXBlLnJlZ2lzdGVyID0gZnVuY3Rpb24gcmVnaXN0ZXIgKHBhdGgsIHJhd01vZHVsZSwgcnVudGltZSkge1xuICAgIHZhciB0aGlzJDEkMSA9IHRoaXM7XG4gICAgaWYgKCBydW50aW1lID09PSB2b2lkIDAgKSBydW50aW1lID0gdHJ1ZTtcblxuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgYXNzZXJ0UmF3TW9kdWxlKHBhdGgsIHJhd01vZHVsZSk7XG4gIH1cblxuICB2YXIgbmV3TW9kdWxlID0gbmV3IE1vZHVsZShyYXdNb2R1bGUsIHJ1bnRpbWUpO1xuICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcbiAgICB0aGlzLnJvb3QgPSBuZXdNb2R1bGU7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHBhcmVudCA9IHRoaXMuZ2V0KHBhdGguc2xpY2UoMCwgLTEpKTtcbiAgICBwYXJlbnQuYWRkQ2hpbGQocGF0aFtwYXRoLmxlbmd0aCAtIDFdLCBuZXdNb2R1bGUpO1xuICB9XG5cbiAgLy8gcmVnaXN0ZXIgbmVzdGVkIG1vZHVsZXNcbiAgaWYgKHJhd01vZHVsZS5tb2R1bGVzKSB7XG4gICAgZm9yRWFjaFZhbHVlKHJhd01vZHVsZS5tb2R1bGVzLCBmdW5jdGlvbiAocmF3Q2hpbGRNb2R1bGUsIGtleSkge1xuICAgICAgdGhpcyQxJDEucmVnaXN0ZXIocGF0aC5jb25jYXQoa2V5KSwgcmF3Q2hpbGRNb2R1bGUsIHJ1bnRpbWUpO1xuICAgIH0pO1xuICB9XG59O1xuXG5Nb2R1bGVDb2xsZWN0aW9uLnByb3RvdHlwZS51bnJlZ2lzdGVyID0gZnVuY3Rpb24gdW5yZWdpc3RlciAocGF0aCkge1xuICB2YXIgcGFyZW50ID0gdGhpcy5nZXQocGF0aC5zbGljZSgwLCAtMSkpO1xuICB2YXIga2V5ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuICB2YXIgY2hpbGQgPSBwYXJlbnQuZ2V0Q2hpbGQoa2V5KTtcblxuICBpZiAoIWNoaWxkKSB7XG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBcIlt2dWV4XSB0cnlpbmcgdG8gdW5yZWdpc3RlciBtb2R1bGUgJ1wiICsga2V5ICsgXCInLCB3aGljaCBpcyBcIiArXG4gICAgICAgIFwibm90IHJlZ2lzdGVyZWRcIlxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoIWNoaWxkLnJ1bnRpbWUpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHBhcmVudC5yZW1vdmVDaGlsZChrZXkpO1xufTtcblxuTW9kdWxlQ29sbGVjdGlvbi5wcm90b3R5cGUuaXNSZWdpc3RlcmVkID0gZnVuY3Rpb24gaXNSZWdpc3RlcmVkIChwYXRoKSB7XG4gIHZhciBwYXJlbnQgPSB0aGlzLmdldChwYXRoLnNsaWNlKDAsIC0xKSk7XG4gIHZhciBrZXkgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG5cbiAgaWYgKHBhcmVudCkge1xuICAgIHJldHVybiBwYXJlbnQuaGFzQ2hpbGQoa2V5KVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59O1xuXG5mdW5jdGlvbiB1cGRhdGUgKHBhdGgsIHRhcmdldE1vZHVsZSwgbmV3TW9kdWxlKSB7XG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICBhc3NlcnRSYXdNb2R1bGUocGF0aCwgbmV3TW9kdWxlKTtcbiAgfVxuXG4gIC8vIHVwZGF0ZSB0YXJnZXQgbW9kdWxlXG4gIHRhcmdldE1vZHVsZS51cGRhdGUobmV3TW9kdWxlKTtcblxuICAvLyB1cGRhdGUgbmVzdGVkIG1vZHVsZXNcbiAgaWYgKG5ld01vZHVsZS5tb2R1bGVzKSB7XG4gICAgZm9yICh2YXIga2V5IGluIG5ld01vZHVsZS5tb2R1bGVzKSB7XG4gICAgICBpZiAoIXRhcmdldE1vZHVsZS5nZXRDaGlsZChrZXkpKSB7XG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBcIlt2dWV4XSB0cnlpbmcgdG8gYWRkIGEgbmV3IG1vZHVsZSAnXCIgKyBrZXkgKyBcIicgb24gaG90IHJlbG9hZGluZywgXCIgK1xuICAgICAgICAgICAgJ21hbnVhbCByZWxvYWQgaXMgbmVlZGVkJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICB1cGRhdGUoXG4gICAgICAgIHBhdGguY29uY2F0KGtleSksXG4gICAgICAgIHRhcmdldE1vZHVsZS5nZXRDaGlsZChrZXkpLFxuICAgICAgICBuZXdNb2R1bGUubW9kdWxlc1trZXldXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG52YXIgZnVuY3Rpb25Bc3NlcnQgPSB7XG4gIGFzc2VydDogZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbic7IH0sXG4gIGV4cGVjdGVkOiAnZnVuY3Rpb24nXG59O1xuXG52YXIgb2JqZWN0QXNzZXJ0ID0ge1xuICBhc3NlcnQ6IGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nIHx8XG4gICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHZhbHVlLmhhbmRsZXIgPT09ICdmdW5jdGlvbicpOyB9LFxuICBleHBlY3RlZDogJ2Z1bmN0aW9uIG9yIG9iamVjdCB3aXRoIFwiaGFuZGxlclwiIGZ1bmN0aW9uJ1xufTtcblxudmFyIGFzc2VydFR5cGVzID0ge1xuICBnZXR0ZXJzOiBmdW5jdGlvbkFzc2VydCxcbiAgbXV0YXRpb25zOiBmdW5jdGlvbkFzc2VydCxcbiAgYWN0aW9uczogb2JqZWN0QXNzZXJ0XG59O1xuXG5mdW5jdGlvbiBhc3NlcnRSYXdNb2R1bGUgKHBhdGgsIHJhd01vZHVsZSkge1xuICBPYmplY3Qua2V5cyhhc3NlcnRUeXBlcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgaWYgKCFyYXdNb2R1bGVba2V5XSkgeyByZXR1cm4gfVxuXG4gICAgdmFyIGFzc2VydE9wdGlvbnMgPSBhc3NlcnRUeXBlc1trZXldO1xuXG4gICAgZm9yRWFjaFZhbHVlKHJhd01vZHVsZVtrZXldLCBmdW5jdGlvbiAodmFsdWUsIHR5cGUpIHtcbiAgICAgIGFzc2VydChcbiAgICAgICAgYXNzZXJ0T3B0aW9ucy5hc3NlcnQodmFsdWUpLFxuICAgICAgICBtYWtlQXNzZXJ0aW9uTWVzc2FnZShwYXRoLCBrZXksIHR5cGUsIHZhbHVlLCBhc3NlcnRPcHRpb25zLmV4cGVjdGVkKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG1ha2VBc3NlcnRpb25NZXNzYWdlIChwYXRoLCBrZXksIHR5cGUsIHZhbHVlLCBleHBlY3RlZCkge1xuICB2YXIgYnVmID0ga2V5ICsgXCIgc2hvdWxkIGJlIFwiICsgZXhwZWN0ZWQgKyBcIiBidXQgXFxcIlwiICsga2V5ICsgXCIuXCIgKyB0eXBlICsgXCJcXFwiXCI7XG4gIGlmIChwYXRoLmxlbmd0aCA+IDApIHtcbiAgICBidWYgKz0gXCIgaW4gbW9kdWxlIFxcXCJcIiArIChwYXRoLmpvaW4oJy4nKSkgKyBcIlxcXCJcIjtcbiAgfVxuICBidWYgKz0gXCIgaXMgXCIgKyAoSlNPTi5zdHJpbmdpZnkodmFsdWUpKSArIFwiLlwiO1xuICByZXR1cm4gYnVmXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN0b3JlIChvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgU3RvcmUob3B0aW9ucylcbn1cblxudmFyIFN0b3JlID0gZnVuY3Rpb24gU3RvcmUgKG9wdGlvbnMpIHtcbiAgdmFyIHRoaXMkMSQxID0gdGhpcztcbiAgaWYgKCBvcHRpb25zID09PSB2b2lkIDAgKSBvcHRpb25zID0ge307XG5cbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgIGFzc2VydCh0eXBlb2YgUHJvbWlzZSAhPT0gJ3VuZGVmaW5lZCcsIFwidnVleCByZXF1aXJlcyBhIFByb21pc2UgcG9seWZpbGwgaW4gdGhpcyBicm93c2VyLlwiKTtcbiAgICBhc3NlcnQodGhpcyBpbnN0YW5jZW9mIFN0b3JlLCBcInN0b3JlIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIG5ldyBvcGVyYXRvci5cIik7XG4gIH1cblxuICB2YXIgcGx1Z2lucyA9IG9wdGlvbnMucGx1Z2luczsgaWYgKCBwbHVnaW5zID09PSB2b2lkIDAgKSBwbHVnaW5zID0gW107XG4gIHZhciBzdHJpY3QgPSBvcHRpb25zLnN0cmljdDsgaWYgKCBzdHJpY3QgPT09IHZvaWQgMCApIHN0cmljdCA9IGZhbHNlO1xuICB2YXIgZGV2dG9vbHMgPSBvcHRpb25zLmRldnRvb2xzO1xuXG4gIC8vIHN0b3JlIGludGVybmFsIHN0YXRlXG4gIHRoaXMuX2NvbW1pdHRpbmcgPSBmYWxzZTtcbiAgdGhpcy5fYWN0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHRoaXMuX2FjdGlvblN1YnNjcmliZXJzID0gW107XG4gIHRoaXMuX211dGF0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHRoaXMuX3dyYXBwZWRHZXR0ZXJzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdGhpcy5fbW9kdWxlcyA9IG5ldyBNb2R1bGVDb2xsZWN0aW9uKG9wdGlvbnMpO1xuICB0aGlzLl9tb2R1bGVzTmFtZXNwYWNlTWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdGhpcy5fc3Vic2NyaWJlcnMgPSBbXTtcbiAgdGhpcy5fbWFrZUxvY2FsR2V0dGVyc0NhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdGhpcy5fZGV2dG9vbHMgPSBkZXZ0b29scztcblxuICAvLyBiaW5kIGNvbW1pdCBhbmQgZGlzcGF0Y2ggdG8gc2VsZlxuICB2YXIgc3RvcmUgPSB0aGlzO1xuICB2YXIgcmVmID0gdGhpcztcbiAgdmFyIGRpc3BhdGNoID0gcmVmLmRpc3BhdGNoO1xuICB2YXIgY29tbWl0ID0gcmVmLmNvbW1pdDtcbiAgdGhpcy5kaXNwYXRjaCA9IGZ1bmN0aW9uIGJvdW5kRGlzcGF0Y2ggKHR5cGUsIHBheWxvYWQpIHtcbiAgICByZXR1cm4gZGlzcGF0Y2guY2FsbChzdG9yZSwgdHlwZSwgcGF5bG9hZClcbiAgfTtcbiAgdGhpcy5jb21taXQgPSBmdW5jdGlvbiBib3VuZENvbW1pdCAodHlwZSwgcGF5bG9hZCwgb3B0aW9ucykge1xuICAgIHJldHVybiBjb21taXQuY2FsbChzdG9yZSwgdHlwZSwgcGF5bG9hZCwgb3B0aW9ucylcbiAgfTtcblxuICAvLyBzdHJpY3QgbW9kZVxuICB0aGlzLnN0cmljdCA9IHN0cmljdDtcblxuICB2YXIgc3RhdGUgPSB0aGlzLl9tb2R1bGVzLnJvb3Quc3RhdGU7XG5cbiAgLy8gaW5pdCByb290IG1vZHVsZS5cbiAgLy8gdGhpcyBhbHNvIHJlY3Vyc2l2ZWx5IHJlZ2lzdGVycyBhbGwgc3ViLW1vZHVsZXNcbiAgLy8gYW5kIGNvbGxlY3RzIGFsbCBtb2R1bGUgZ2V0dGVycyBpbnNpZGUgdGhpcy5fd3JhcHBlZEdldHRlcnNcbiAgaW5zdGFsbE1vZHVsZSh0aGlzLCBzdGF0ZSwgW10sIHRoaXMuX21vZHVsZXMucm9vdCk7XG5cbiAgLy8gaW5pdGlhbGl6ZSB0aGUgc3RvcmUgc3RhdGUsIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgcmVhY3Rpdml0eVxuICAvLyAoYWxzbyByZWdpc3RlcnMgX3dyYXBwZWRHZXR0ZXJzIGFzIGNvbXB1dGVkIHByb3BlcnRpZXMpXG4gIHJlc2V0U3RvcmVTdGF0ZSh0aGlzLCBzdGF0ZSk7XG5cbiAgLy8gYXBwbHkgcGx1Z2luc1xuICBwbHVnaW5zLmZvckVhY2goZnVuY3Rpb24gKHBsdWdpbikgeyByZXR1cm4gcGx1Z2luKHRoaXMkMSQxKTsgfSk7XG59O1xuXG52YXIgcHJvdG90eXBlQWNjZXNzb3JzID0geyBzdGF0ZTogeyBjb25maWd1cmFibGU6IHRydWUgfSB9O1xuXG5TdG9yZS5wcm90b3R5cGUuaW5zdGFsbCA9IGZ1bmN0aW9uIGluc3RhbGwgKGFwcCwgaW5qZWN0S2V5KSB7XG4gIGFwcC5wcm92aWRlKGluamVjdEtleSB8fCBzdG9yZUtleSwgdGhpcyk7XG4gIGFwcC5jb25maWcuZ2xvYmFsUHJvcGVydGllcy4kc3RvcmUgPSB0aGlzO1xuXG4gIHZhciB1c2VEZXZ0b29scyA9IHRoaXMuX2RldnRvb2xzICE9PSB1bmRlZmluZWRcbiAgICA/IHRoaXMuX2RldnRvb2xzXG4gICAgOiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fO1xuXG4gIGlmICh1c2VEZXZ0b29scykge1xuICAgIGFkZERldnRvb2xzKGFwcCwgdGhpcyk7XG4gIH1cbn07XG5cbnByb3RvdHlwZUFjY2Vzc29ycy5zdGF0ZS5nZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLl9zdGF0ZS5kYXRhXG59O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMuc3RhdGUuc2V0ID0gZnVuY3Rpb24gKHYpIHtcbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgIGFzc2VydChmYWxzZSwgXCJ1c2Ugc3RvcmUucmVwbGFjZVN0YXRlKCkgdG8gZXhwbGljaXQgcmVwbGFjZSBzdG9yZSBzdGF0ZS5cIik7XG4gIH1cbn07XG5cblN0b3JlLnByb3RvdHlwZS5jb21taXQgPSBmdW5jdGlvbiBjb21taXQgKF90eXBlLCBfcGF5bG9hZCwgX29wdGlvbnMpIHtcbiAgICB2YXIgdGhpcyQxJDEgPSB0aGlzO1xuXG4gIC8vIGNoZWNrIG9iamVjdC1zdHlsZSBjb21taXRcbiAgdmFyIHJlZiA9IHVuaWZ5T2JqZWN0U3R5bGUoX3R5cGUsIF9wYXlsb2FkLCBfb3B0aW9ucyk7XG4gICAgdmFyIHR5cGUgPSByZWYudHlwZTtcbiAgICB2YXIgcGF5bG9hZCA9IHJlZi5wYXlsb2FkO1xuICAgIHZhciBvcHRpb25zID0gcmVmLm9wdGlvbnM7XG5cbiAgdmFyIG11dGF0aW9uID0geyB0eXBlOiB0eXBlLCBwYXlsb2FkOiBwYXlsb2FkIH07XG4gIHZhciBlbnRyeSA9IHRoaXMuX211dGF0aW9uc1t0eXBlXTtcbiAgaWYgKCFlbnRyeSkge1xuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoKFwiW3Z1ZXhdIHVua25vd24gbXV0YXRpb24gdHlwZTogXCIgKyB0eXBlKSk7XG4gICAgfVxuICAgIHJldHVyblxuICB9XG4gIHRoaXMuX3dpdGhDb21taXQoZnVuY3Rpb24gKCkge1xuICAgIGVudHJ5LmZvckVhY2goZnVuY3Rpb24gY29tbWl0SXRlcmF0b3IgKGhhbmRsZXIpIHtcbiAgICAgIGhhbmRsZXIocGF5bG9hZCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHRoaXMuX3N1YnNjcmliZXJzXG4gICAgLnNsaWNlKCkgLy8gc2hhbGxvdyBjb3B5IHRvIHByZXZlbnQgaXRlcmF0b3IgaW52YWxpZGF0aW9uIGlmIHN1YnNjcmliZXIgc3luY2hyb25vdXNseSBjYWxscyB1bnN1YnNjcmliZVxuICAgIC5mb3JFYWNoKGZ1bmN0aW9uIChzdWIpIHsgcmV0dXJuIHN1YihtdXRhdGlvbiwgdGhpcyQxJDEuc3RhdGUpOyB9KTtcblxuICBpZiAoXG4gICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXG4gICAgb3B0aW9ucyAmJiBvcHRpb25zLnNpbGVudFxuICApIHtcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICBcIlt2dWV4XSBtdXRhdGlvbiB0eXBlOiBcIiArIHR5cGUgKyBcIi4gU2lsZW50IG9wdGlvbiBoYXMgYmVlbiByZW1vdmVkLiBcIiArXG4gICAgICAnVXNlIHRoZSBmaWx0ZXIgZnVuY3Rpb25hbGl0eSBpbiB0aGUgdnVlLWRldnRvb2xzJ1xuICAgICk7XG4gIH1cbn07XG5cblN0b3JlLnByb3RvdHlwZS5kaXNwYXRjaCA9IGZ1bmN0aW9uIGRpc3BhdGNoIChfdHlwZSwgX3BheWxvYWQpIHtcbiAgICB2YXIgdGhpcyQxJDEgPSB0aGlzO1xuXG4gIC8vIGNoZWNrIG9iamVjdC1zdHlsZSBkaXNwYXRjaFxuICB2YXIgcmVmID0gdW5pZnlPYmplY3RTdHlsZShfdHlwZSwgX3BheWxvYWQpO1xuICAgIHZhciB0eXBlID0gcmVmLnR5cGU7XG4gICAgdmFyIHBheWxvYWQgPSByZWYucGF5bG9hZDtcblxuICB2YXIgYWN0aW9uID0geyB0eXBlOiB0eXBlLCBwYXlsb2FkOiBwYXlsb2FkIH07XG4gIHZhciBlbnRyeSA9IHRoaXMuX2FjdGlvbnNbdHlwZV07XG4gIGlmICghZW50cnkpIHtcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSB1bmtub3duIGFjdGlvbiB0eXBlOiBcIiArIHR5cGUpKTtcbiAgICB9XG4gICAgcmV0dXJuXG4gIH1cblxuICB0cnkge1xuICAgIHRoaXMuX2FjdGlvblN1YnNjcmliZXJzXG4gICAgICAuc2xpY2UoKSAvLyBzaGFsbG93IGNvcHkgdG8gcHJldmVudCBpdGVyYXRvciBpbnZhbGlkYXRpb24gaWYgc3Vic2NyaWJlciBzeW5jaHJvbm91c2x5IGNhbGxzIHVuc3Vic2NyaWJlXG4gICAgICAuZmlsdGVyKGZ1bmN0aW9uIChzdWIpIHsgcmV0dXJuIHN1Yi5iZWZvcmU7IH0pXG4gICAgICAuZm9yRWFjaChmdW5jdGlvbiAoc3ViKSB7IHJldHVybiBzdWIuYmVmb3JlKGFjdGlvbiwgdGhpcyQxJDEuc3RhdGUpOyB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIlt2dWV4XSBlcnJvciBpbiBiZWZvcmUgYWN0aW9uIHN1YnNjcmliZXJzOiBcIik7XG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbiAgfVxuXG4gIHZhciByZXN1bHQgPSBlbnRyeS5sZW5ndGggPiAxXG4gICAgPyBQcm9taXNlLmFsbChlbnRyeS5tYXAoZnVuY3Rpb24gKGhhbmRsZXIpIHsgcmV0dXJuIGhhbmRsZXIocGF5bG9hZCk7IH0pKVxuICAgIDogZW50cnlbMF0ocGF5bG9hZCk7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICByZXN1bHQudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzJDEkMS5fYWN0aW9uU3Vic2NyaWJlcnNcbiAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChzdWIpIHsgcmV0dXJuIHN1Yi5hZnRlcjsgfSlcbiAgICAgICAgICAuZm9yRWFjaChmdW5jdGlvbiAoc3ViKSB7IHJldHVybiBzdWIuYWZ0ZXIoYWN0aW9uLCB0aGlzJDEkMS5zdGF0ZSk7IH0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiW3Z1ZXhdIGVycm9yIGluIGFmdGVyIGFjdGlvbiBzdWJzY3JpYmVyczogXCIpO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJlc29sdmUocmVzKTtcbiAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMkMSQxLl9hY3Rpb25TdWJzY3JpYmVyc1xuICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHN1YikgeyByZXR1cm4gc3ViLmVycm9yOyB9KVxuICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uIChzdWIpIHsgcmV0dXJuIHN1Yi5lcnJvcihhY3Rpb24sIHRoaXMkMSQxLnN0YXRlLCBlcnJvcik7IH0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiW3Z1ZXhdIGVycm9yIGluIGVycm9yIGFjdGlvbiBzdWJzY3JpYmVyczogXCIpO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJlamVjdChlcnJvcik7XG4gICAgfSk7XG4gIH0pXG59O1xuXG5TdG9yZS5wcm90b3R5cGUuc3Vic2NyaWJlID0gZnVuY3Rpb24gc3Vic2NyaWJlIChmbiwgb3B0aW9ucykge1xuICByZXR1cm4gZ2VuZXJpY1N1YnNjcmliZShmbiwgdGhpcy5fc3Vic2NyaWJlcnMsIG9wdGlvbnMpXG59O1xuXG5TdG9yZS5wcm90b3R5cGUuc3Vic2NyaWJlQWN0aW9uID0gZnVuY3Rpb24gc3Vic2NyaWJlQWN0aW9uIChmbiwgb3B0aW9ucykge1xuICB2YXIgc3VicyA9IHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJyA/IHsgYmVmb3JlOiBmbiB9IDogZm47XG4gIHJldHVybiBnZW5lcmljU3Vic2NyaWJlKHN1YnMsIHRoaXMuX2FjdGlvblN1YnNjcmliZXJzLCBvcHRpb25zKVxufTtcblxuU3RvcmUucHJvdG90eXBlLndhdGNoID0gZnVuY3Rpb24gd2F0Y2gkMSAoZ2V0dGVyLCBjYiwgb3B0aW9ucykge1xuICAgIHZhciB0aGlzJDEkMSA9IHRoaXM7XG5cbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgIGFzc2VydCh0eXBlb2YgZ2V0dGVyID09PSAnZnVuY3Rpb24nLCBcInN0b3JlLndhdGNoIG9ubHkgYWNjZXB0cyBhIGZ1bmN0aW9uLlwiKTtcbiAgfVxuICByZXR1cm4gd2F0Y2goZnVuY3Rpb24gKCkgeyByZXR1cm4gZ2V0dGVyKHRoaXMkMSQxLnN0YXRlLCB0aGlzJDEkMS5nZXR0ZXJzKTsgfSwgY2IsIE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMpKVxufTtcblxuU3RvcmUucHJvdG90eXBlLnJlcGxhY2VTdGF0ZSA9IGZ1bmN0aW9uIHJlcGxhY2VTdGF0ZSAoc3RhdGUpIHtcbiAgICB2YXIgdGhpcyQxJDEgPSB0aGlzO1xuXG4gIHRoaXMuX3dpdGhDb21taXQoZnVuY3Rpb24gKCkge1xuICAgIHRoaXMkMSQxLl9zdGF0ZS5kYXRhID0gc3RhdGU7XG4gIH0pO1xufTtcblxuU3RvcmUucHJvdG90eXBlLnJlZ2lzdGVyTW9kdWxlID0gZnVuY3Rpb24gcmVnaXN0ZXJNb2R1bGUgKHBhdGgsIHJhd01vZHVsZSwgb3B0aW9ucykge1xuICAgIGlmICggb3B0aW9ucyA9PT0gdm9pZCAwICkgb3B0aW9ucyA9IHt9O1xuXG4gIGlmICh0eXBlb2YgcGF0aCA9PT0gJ3N0cmluZycpIHsgcGF0aCA9IFtwYXRoXTsgfVxuXG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICBhc3NlcnQoQXJyYXkuaXNBcnJheShwYXRoKSwgXCJtb2R1bGUgcGF0aCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFuIEFycmF5LlwiKTtcbiAgICBhc3NlcnQocGF0aC5sZW5ndGggPiAwLCAnY2Fubm90IHJlZ2lzdGVyIHRoZSByb290IG1vZHVsZSBieSB1c2luZyByZWdpc3Rlck1vZHVsZS4nKTtcbiAgfVxuXG4gIHRoaXMuX21vZHVsZXMucmVnaXN0ZXIocGF0aCwgcmF3TW9kdWxlKTtcbiAgaW5zdGFsbE1vZHVsZSh0aGlzLCB0aGlzLnN0YXRlLCBwYXRoLCB0aGlzLl9tb2R1bGVzLmdldChwYXRoKSwgb3B0aW9ucy5wcmVzZXJ2ZVN0YXRlKTtcbiAgLy8gcmVzZXQgc3RvcmUgdG8gdXBkYXRlIGdldHRlcnMuLi5cbiAgcmVzZXRTdG9yZVN0YXRlKHRoaXMsIHRoaXMuc3RhdGUpO1xufTtcblxuU3RvcmUucHJvdG90eXBlLnVucmVnaXN0ZXJNb2R1bGUgPSBmdW5jdGlvbiB1bnJlZ2lzdGVyTW9kdWxlIChwYXRoKSB7XG4gICAgdmFyIHRoaXMkMSQxID0gdGhpcztcblxuICBpZiAodHlwZW9mIHBhdGggPT09ICdzdHJpbmcnKSB7IHBhdGggPSBbcGF0aF07IH1cblxuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgYXNzZXJ0KEFycmF5LmlzQXJyYXkocGF0aCksIFwibW9kdWxlIHBhdGggbXVzdCBiZSBhIHN0cmluZyBvciBhbiBBcnJheS5cIik7XG4gIH1cblxuICB0aGlzLl9tb2R1bGVzLnVucmVnaXN0ZXIocGF0aCk7XG4gIHRoaXMuX3dpdGhDb21taXQoZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYXJlbnRTdGF0ZSA9IGdldE5lc3RlZFN0YXRlKHRoaXMkMSQxLnN0YXRlLCBwYXRoLnNsaWNlKDAsIC0xKSk7XG4gICAgZGVsZXRlIHBhcmVudFN0YXRlW3BhdGhbcGF0aC5sZW5ndGggLSAxXV07XG4gIH0pO1xuICByZXNldFN0b3JlKHRoaXMpO1xufTtcblxuU3RvcmUucHJvdG90eXBlLmhhc01vZHVsZSA9IGZ1bmN0aW9uIGhhc01vZHVsZSAocGF0aCkge1xuICBpZiAodHlwZW9mIHBhdGggPT09ICdzdHJpbmcnKSB7IHBhdGggPSBbcGF0aF07IH1cblxuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgYXNzZXJ0KEFycmF5LmlzQXJyYXkocGF0aCksIFwibW9kdWxlIHBhdGggbXVzdCBiZSBhIHN0cmluZyBvciBhbiBBcnJheS5cIik7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fbW9kdWxlcy5pc1JlZ2lzdGVyZWQocGF0aClcbn07XG5cblN0b3JlLnByb3RvdHlwZS5ob3RVcGRhdGUgPSBmdW5jdGlvbiBob3RVcGRhdGUgKG5ld09wdGlvbnMpIHtcbiAgdGhpcy5fbW9kdWxlcy51cGRhdGUobmV3T3B0aW9ucyk7XG4gIHJlc2V0U3RvcmUodGhpcywgdHJ1ZSk7XG59O1xuXG5TdG9yZS5wcm90b3R5cGUuX3dpdGhDb21taXQgPSBmdW5jdGlvbiBfd2l0aENvbW1pdCAoZm4pIHtcbiAgdmFyIGNvbW1pdHRpbmcgPSB0aGlzLl9jb21taXR0aW5nO1xuICB0aGlzLl9jb21taXR0aW5nID0gdHJ1ZTtcbiAgZm4oKTtcbiAgdGhpcy5fY29tbWl0dGluZyA9IGNvbW1pdHRpbmc7XG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyggU3RvcmUucHJvdG90eXBlLCBwcm90b3R5cGVBY2Nlc3NvcnMgKTtcblxuLyoqXG4gKiBSZWR1Y2UgdGhlIGNvZGUgd2hpY2ggd3JpdHRlbiBpbiBWdWUuanMgZm9yIGdldHRpbmcgdGhlIHN0YXRlLlxuICogQHBhcmFtIHtTdHJpbmd9IFtuYW1lc3BhY2VdIC0gTW9kdWxlJ3MgbmFtZXNwYWNlXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gc3RhdGVzICMgT2JqZWN0J3MgaXRlbSBjYW4gYmUgYSBmdW5jdGlvbiB3aGljaCBhY2NlcHQgc3RhdGUgYW5kIGdldHRlcnMgZm9yIHBhcmFtLCB5b3UgY2FuIGRvIHNvbWV0aGluZyBmb3Igc3RhdGUgYW5kIGdldHRlcnMgaW4gaXQuXG4gKiBAcGFyYW0ge09iamVjdH1cbiAqL1xudmFyIG1hcFN0YXRlID0gbm9ybWFsaXplTmFtZXNwYWNlKGZ1bmN0aW9uIChuYW1lc3BhY2UsIHN0YXRlcykge1xuICB2YXIgcmVzID0ge307XG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzVmFsaWRNYXAoc3RhdGVzKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1t2dWV4XSBtYXBTdGF0ZTogbWFwcGVyIHBhcmFtZXRlciBtdXN0IGJlIGVpdGhlciBhbiBBcnJheSBvciBhbiBPYmplY3QnKTtcbiAgfVxuICBub3JtYWxpemVNYXAoc3RhdGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChyZWYpIHtcbiAgICB2YXIga2V5ID0gcmVmLmtleTtcbiAgICB2YXIgdmFsID0gcmVmLnZhbDtcblxuICAgIHJlc1trZXldID0gZnVuY3Rpb24gbWFwcGVkU3RhdGUgKCkge1xuICAgICAgdmFyIHN0YXRlID0gdGhpcy4kc3RvcmUuc3RhdGU7XG4gICAgICB2YXIgZ2V0dGVycyA9IHRoaXMuJHN0b3JlLmdldHRlcnM7XG4gICAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICAgIHZhciBtb2R1bGUgPSBnZXRNb2R1bGVCeU5hbWVzcGFjZSh0aGlzLiRzdG9yZSwgJ21hcFN0YXRlJywgbmFtZXNwYWNlKTtcbiAgICAgICAgaWYgKCFtb2R1bGUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBzdGF0ZSA9IG1vZHVsZS5jb250ZXh0LnN0YXRlO1xuICAgICAgICBnZXR0ZXJzID0gbW9kdWxlLmNvbnRleHQuZ2V0dGVycztcbiAgICAgIH1cbiAgICAgIHJldHVybiB0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gdmFsLmNhbGwodGhpcywgc3RhdGUsIGdldHRlcnMpXG4gICAgICAgIDogc3RhdGVbdmFsXVxuICAgIH07XG4gICAgLy8gbWFyayB2dWV4IGdldHRlciBmb3IgZGV2dG9vbHNcbiAgICByZXNba2V5XS52dWV4ID0gdHJ1ZTtcbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vKipcbiAqIFJlZHVjZSB0aGUgY29kZSB3aGljaCB3cml0dGVuIGluIFZ1ZS5qcyBmb3IgY29tbWl0dGluZyB0aGUgbXV0YXRpb25cbiAqIEBwYXJhbSB7U3RyaW5nfSBbbmFtZXNwYWNlXSAtIE1vZHVsZSdzIG5hbWVzcGFjZVxuICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IG11dGF0aW9ucyAjIE9iamVjdCdzIGl0ZW0gY2FuIGJlIGEgZnVuY3Rpb24gd2hpY2ggYWNjZXB0IGBjb21taXRgIGZ1bmN0aW9uIGFzIHRoZSBmaXJzdCBwYXJhbSwgaXQgY2FuIGFjY2VwdCBhbm90aGVyIHBhcmFtcy4gWW91IGNhbiBjb21taXQgbXV0YXRpb24gYW5kIGRvIGFueSBvdGhlciB0aGluZ3MgaW4gdGhpcyBmdW5jdGlvbi4gc3BlY2lhbGx5LCBZb3UgbmVlZCB0byBwYXNzIGFudGhvciBwYXJhbXMgZnJvbSB0aGUgbWFwcGVkIGZ1bmN0aW9uLlxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG52YXIgbWFwTXV0YXRpb25zID0gbm9ybWFsaXplTmFtZXNwYWNlKGZ1bmN0aW9uIChuYW1lc3BhY2UsIG11dGF0aW9ucykge1xuICB2YXIgcmVzID0ge307XG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzVmFsaWRNYXAobXV0YXRpb25zKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1t2dWV4XSBtYXBNdXRhdGlvbnM6IG1hcHBlciBwYXJhbWV0ZXIgbXVzdCBiZSBlaXRoZXIgYW4gQXJyYXkgb3IgYW4gT2JqZWN0Jyk7XG4gIH1cbiAgbm9ybWFsaXplTWFwKG11dGF0aW9ucykuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgdmFyIGtleSA9IHJlZi5rZXk7XG4gICAgdmFyIHZhbCA9IHJlZi52YWw7XG5cbiAgICByZXNba2V5XSA9IGZ1bmN0aW9uIG1hcHBlZE11dGF0aW9uICgpIHtcbiAgICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICB3aGlsZSAoIGxlbi0tICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiBdO1xuXG4gICAgICAvLyBHZXQgdGhlIGNvbW1pdCBtZXRob2QgZnJvbSBzdG9yZVxuICAgICAgdmFyIGNvbW1pdCA9IHRoaXMuJHN0b3JlLmNvbW1pdDtcbiAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgdmFyIG1vZHVsZSA9IGdldE1vZHVsZUJ5TmFtZXNwYWNlKHRoaXMuJHN0b3JlLCAnbWFwTXV0YXRpb25zJywgbmFtZXNwYWNlKTtcbiAgICAgICAgaWYgKCFtb2R1bGUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBjb21taXQgPSBtb2R1bGUuY29udGV4dC5jb21taXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IHZhbC5hcHBseSh0aGlzLCBbY29tbWl0XS5jb25jYXQoYXJncykpXG4gICAgICAgIDogY29tbWl0LmFwcGx5KHRoaXMuJHN0b3JlLCBbdmFsXS5jb25jYXQoYXJncykpXG4gICAgfTtcbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vKipcbiAqIFJlZHVjZSB0aGUgY29kZSB3aGljaCB3cml0dGVuIGluIFZ1ZS5qcyBmb3IgZ2V0dGluZyB0aGUgZ2V0dGVyc1xuICogQHBhcmFtIHtTdHJpbmd9IFtuYW1lc3BhY2VdIC0gTW9kdWxlJ3MgbmFtZXNwYWNlXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gZ2V0dGVyc1xuICogQHJldHVybiB7T2JqZWN0fVxuICovXG52YXIgbWFwR2V0dGVycyA9IG5vcm1hbGl6ZU5hbWVzcGFjZShmdW5jdGlvbiAobmFtZXNwYWNlLCBnZXR0ZXJzKSB7XG4gIHZhciByZXMgPSB7fTtcbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaXNWYWxpZE1hcChnZXR0ZXJzKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1t2dWV4XSBtYXBHZXR0ZXJzOiBtYXBwZXIgcGFyYW1ldGVyIG11c3QgYmUgZWl0aGVyIGFuIEFycmF5IG9yIGFuIE9iamVjdCcpO1xuICB9XG4gIG5vcm1hbGl6ZU1hcChnZXR0ZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChyZWYpIHtcbiAgICB2YXIga2V5ID0gcmVmLmtleTtcbiAgICB2YXIgdmFsID0gcmVmLnZhbDtcblxuICAgIC8vIFRoZSBuYW1lc3BhY2UgaGFzIGJlZW4gbXV0YXRlZCBieSBub3JtYWxpemVOYW1lc3BhY2VcbiAgICB2YWwgPSBuYW1lc3BhY2UgKyB2YWw7XG4gICAgcmVzW2tleV0gPSBmdW5jdGlvbiBtYXBwZWRHZXR0ZXIgKCkge1xuICAgICAgaWYgKG5hbWVzcGFjZSAmJiAhZ2V0TW9kdWxlQnlOYW1lc3BhY2UodGhpcy4kc3RvcmUsICdtYXBHZXR0ZXJzJywgbmFtZXNwYWNlKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgISh2YWwgaW4gdGhpcy4kc3RvcmUuZ2V0dGVycykpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcigoXCJbdnVleF0gdW5rbm93biBnZXR0ZXI6IFwiICsgdmFsKSk7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbdmFsXVxuICAgIH07XG4gICAgLy8gbWFyayB2dWV4IGdldHRlciBmb3IgZGV2dG9vbHNcbiAgICByZXNba2V5XS52dWV4ID0gdHJ1ZTtcbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vKipcbiAqIFJlZHVjZSB0aGUgY29kZSB3aGljaCB3cml0dGVuIGluIFZ1ZS5qcyBmb3IgZGlzcGF0Y2ggdGhlIGFjdGlvblxuICogQHBhcmFtIHtTdHJpbmd9IFtuYW1lc3BhY2VdIC0gTW9kdWxlJ3MgbmFtZXNwYWNlXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gYWN0aW9ucyAjIE9iamVjdCdzIGl0ZW0gY2FuIGJlIGEgZnVuY3Rpb24gd2hpY2ggYWNjZXB0IGBkaXNwYXRjaGAgZnVuY3Rpb24gYXMgdGhlIGZpcnN0IHBhcmFtLCBpdCBjYW4gYWNjZXB0IGFudGhvciBwYXJhbXMuIFlvdSBjYW4gZGlzcGF0Y2ggYWN0aW9uIGFuZCBkbyBhbnkgb3RoZXIgdGhpbmdzIGluIHRoaXMgZnVuY3Rpb24uIHNwZWNpYWxseSwgWW91IG5lZWQgdG8gcGFzcyBhbnRob3IgcGFyYW1zIGZyb20gdGhlIG1hcHBlZCBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xudmFyIG1hcEFjdGlvbnMgPSBub3JtYWxpemVOYW1lc3BhY2UoZnVuY3Rpb24gKG5hbWVzcGFjZSwgYWN0aW9ucykge1xuICB2YXIgcmVzID0ge307XG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzVmFsaWRNYXAoYWN0aW9ucykpIHtcbiAgICBjb25zb2xlLmVycm9yKCdbdnVleF0gbWFwQWN0aW9uczogbWFwcGVyIHBhcmFtZXRlciBtdXN0IGJlIGVpdGhlciBhbiBBcnJheSBvciBhbiBPYmplY3QnKTtcbiAgfVxuICBub3JtYWxpemVNYXAoYWN0aW9ucykuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgdmFyIGtleSA9IHJlZi5rZXk7XG4gICAgdmFyIHZhbCA9IHJlZi52YWw7XG5cbiAgICByZXNba2V5XSA9IGZ1bmN0aW9uIG1hcHBlZEFjdGlvbiAoKSB7XG4gICAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgICAgd2hpbGUgKCBsZW4tLSApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gXTtcblxuICAgICAgLy8gZ2V0IGRpc3BhdGNoIGZ1bmN0aW9uIGZyb20gc3RvcmVcbiAgICAgIHZhciBkaXNwYXRjaCA9IHRoaXMuJHN0b3JlLmRpc3BhdGNoO1xuICAgICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgICB2YXIgbW9kdWxlID0gZ2V0TW9kdWxlQnlOYW1lc3BhY2UodGhpcy4kc3RvcmUsICdtYXBBY3Rpb25zJywgbmFtZXNwYWNlKTtcbiAgICAgICAgaWYgKCFtb2R1bGUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBkaXNwYXRjaCA9IG1vZHVsZS5jb250ZXh0LmRpc3BhdGNoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyB2YWwuYXBwbHkodGhpcywgW2Rpc3BhdGNoXS5jb25jYXQoYXJncykpXG4gICAgICAgIDogZGlzcGF0Y2guYXBwbHkodGhpcy4kc3RvcmUsIFt2YWxdLmNvbmNhdChhcmdzKSlcbiAgICB9O1xuICB9KTtcbiAgcmV0dXJuIHJlc1xufSk7XG5cbi8qKlxuICogUmViaW5kaW5nIG5hbWVzcGFjZSBwYXJhbSBmb3IgbWFwWFhYIGZ1bmN0aW9uIGluIHNwZWNpYWwgc2NvcGVkLCBhbmQgcmV0dXJuIHRoZW0gYnkgc2ltcGxlIG9iamVjdFxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZVxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG52YXIgY3JlYXRlTmFtZXNwYWNlZEhlbHBlcnMgPSBmdW5jdGlvbiAobmFtZXNwYWNlKSB7IHJldHVybiAoe1xuICBtYXBTdGF0ZTogbWFwU3RhdGUuYmluZChudWxsLCBuYW1lc3BhY2UpLFxuICBtYXBHZXR0ZXJzOiBtYXBHZXR0ZXJzLmJpbmQobnVsbCwgbmFtZXNwYWNlKSxcbiAgbWFwTXV0YXRpb25zOiBtYXBNdXRhdGlvbnMuYmluZChudWxsLCBuYW1lc3BhY2UpLFxuICBtYXBBY3Rpb25zOiBtYXBBY3Rpb25zLmJpbmQobnVsbCwgbmFtZXNwYWNlKVxufSk7IH07XG5cbi8qKlxuICogTm9ybWFsaXplIHRoZSBtYXBcbiAqIG5vcm1hbGl6ZU1hcChbMSwgMiwgM10pID0+IFsgeyBrZXk6IDEsIHZhbDogMSB9LCB7IGtleTogMiwgdmFsOiAyIH0sIHsga2V5OiAzLCB2YWw6IDMgfSBdXG4gKiBub3JtYWxpemVNYXAoe2E6IDEsIGI6IDIsIGM6IDN9KSA9PiBbIHsga2V5OiAnYScsIHZhbDogMSB9LCB7IGtleTogJ2InLCB2YWw6IDIgfSwgeyBrZXk6ICdjJywgdmFsOiAzIH0gXVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IG1hcFxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG5mdW5jdGlvbiBub3JtYWxpemVNYXAgKG1hcCkge1xuICBpZiAoIWlzVmFsaWRNYXAobWFwKSkge1xuICAgIHJldHVybiBbXVxuICB9XG4gIHJldHVybiBBcnJheS5pc0FycmF5KG1hcClcbiAgICA/IG1hcC5tYXAoZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gKHsga2V5OiBrZXksIHZhbDoga2V5IH0pOyB9KVxuICAgIDogT2JqZWN0LmtleXMobWFwKS5tYXAoZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gKHsga2V5OiBrZXksIHZhbDogbWFwW2tleV0gfSk7IH0pXG59XG5cbi8qKlxuICogVmFsaWRhdGUgd2hldGhlciBnaXZlbiBtYXAgaXMgdmFsaWQgb3Igbm90XG4gKiBAcGFyYW0geyp9IG1hcFxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNWYWxpZE1hcCAobWFwKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KG1hcCkgfHwgaXNPYmplY3QobWFwKVxufVxuXG4vKipcbiAqIFJldHVybiBhIGZ1bmN0aW9uIGV4cGVjdCB0d28gcGFyYW0gY29udGFpbnMgbmFtZXNwYWNlIGFuZCBtYXAuIGl0IHdpbGwgbm9ybWFsaXplIHRoZSBuYW1lc3BhY2UgYW5kIHRoZW4gdGhlIHBhcmFtJ3MgZnVuY3Rpb24gd2lsbCBoYW5kbGUgdGhlIG5ldyBuYW1lc3BhY2UgYW5kIHRoZSBtYXAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmblxuICogQHJldHVybiB7RnVuY3Rpb259XG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZU5hbWVzcGFjZSAoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChuYW1lc3BhY2UsIG1hcCkge1xuICAgIGlmICh0eXBlb2YgbmFtZXNwYWNlICE9PSAnc3RyaW5nJykge1xuICAgICAgbWFwID0gbmFtZXNwYWNlO1xuICAgICAgbmFtZXNwYWNlID0gJyc7XG4gICAgfSBlbHNlIGlmIChuYW1lc3BhY2UuY2hhckF0KG5hbWVzcGFjZS5sZW5ndGggLSAxKSAhPT0gJy8nKSB7XG4gICAgICBuYW1lc3BhY2UgKz0gJy8nO1xuICAgIH1cbiAgICByZXR1cm4gZm4obmFtZXNwYWNlLCBtYXApXG4gIH1cbn1cblxuLyoqXG4gKiBTZWFyY2ggYSBzcGVjaWFsIG1vZHVsZSBmcm9tIHN0b3JlIGJ5IG5hbWVzcGFjZS4gaWYgbW9kdWxlIG5vdCBleGlzdCwgcHJpbnQgZXJyb3IgbWVzc2FnZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzdG9yZVxuICogQHBhcmFtIHtTdHJpbmd9IGhlbHBlclxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZVxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG5mdW5jdGlvbiBnZXRNb2R1bGVCeU5hbWVzcGFjZSAoc3RvcmUsIGhlbHBlciwgbmFtZXNwYWNlKSB7XG4gIHZhciBtb2R1bGUgPSBzdG9yZS5fbW9kdWxlc05hbWVzcGFjZU1hcFtuYW1lc3BhY2VdO1xuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFtb2R1bGUpIHtcbiAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSBtb2R1bGUgbmFtZXNwYWNlIG5vdCBmb3VuZCBpbiBcIiArIGhlbHBlciArIFwiKCk6IFwiICsgbmFtZXNwYWNlKSk7XG4gIH1cbiAgcmV0dXJuIG1vZHVsZVxufVxuXG4vLyBDcmVkaXRzOiBib3Jyb3dlZCBjb2RlIGZyb20gZmNvbWIvcmVkdXgtbG9nZ2VyXG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2dlciAocmVmKSB7XG4gIGlmICggcmVmID09PSB2b2lkIDAgKSByZWYgPSB7fTtcbiAgdmFyIGNvbGxhcHNlZCA9IHJlZi5jb2xsYXBzZWQ7IGlmICggY29sbGFwc2VkID09PSB2b2lkIDAgKSBjb2xsYXBzZWQgPSB0cnVlO1xuICB2YXIgZmlsdGVyID0gcmVmLmZpbHRlcjsgaWYgKCBmaWx0ZXIgPT09IHZvaWQgMCApIGZpbHRlciA9IGZ1bmN0aW9uIChtdXRhdGlvbiwgc3RhdGVCZWZvcmUsIHN0YXRlQWZ0ZXIpIHsgcmV0dXJuIHRydWU7IH07XG4gIHZhciB0cmFuc2Zvcm1lciA9IHJlZi50cmFuc2Zvcm1lcjsgaWYgKCB0cmFuc2Zvcm1lciA9PT0gdm9pZCAwICkgdHJhbnNmb3JtZXIgPSBmdW5jdGlvbiAoc3RhdGUpIHsgcmV0dXJuIHN0YXRlOyB9O1xuICB2YXIgbXV0YXRpb25UcmFuc2Zvcm1lciA9IHJlZi5tdXRhdGlvblRyYW5zZm9ybWVyOyBpZiAoIG11dGF0aW9uVHJhbnNmb3JtZXIgPT09IHZvaWQgMCApIG11dGF0aW9uVHJhbnNmb3JtZXIgPSBmdW5jdGlvbiAobXV0KSB7IHJldHVybiBtdXQ7IH07XG4gIHZhciBhY3Rpb25GaWx0ZXIgPSByZWYuYWN0aW9uRmlsdGVyOyBpZiAoIGFjdGlvbkZpbHRlciA9PT0gdm9pZCAwICkgYWN0aW9uRmlsdGVyID0gZnVuY3Rpb24gKGFjdGlvbiwgc3RhdGUpIHsgcmV0dXJuIHRydWU7IH07XG4gIHZhciBhY3Rpb25UcmFuc2Zvcm1lciA9IHJlZi5hY3Rpb25UcmFuc2Zvcm1lcjsgaWYgKCBhY3Rpb25UcmFuc2Zvcm1lciA9PT0gdm9pZCAwICkgYWN0aW9uVHJhbnNmb3JtZXIgPSBmdW5jdGlvbiAoYWN0KSB7IHJldHVybiBhY3Q7IH07XG4gIHZhciBsb2dNdXRhdGlvbnMgPSByZWYubG9nTXV0YXRpb25zOyBpZiAoIGxvZ011dGF0aW9ucyA9PT0gdm9pZCAwICkgbG9nTXV0YXRpb25zID0gdHJ1ZTtcbiAgdmFyIGxvZ0FjdGlvbnMgPSByZWYubG9nQWN0aW9uczsgaWYgKCBsb2dBY3Rpb25zID09PSB2b2lkIDAgKSBsb2dBY3Rpb25zID0gdHJ1ZTtcbiAgdmFyIGxvZ2dlciA9IHJlZi5sb2dnZXI7IGlmICggbG9nZ2VyID09PSB2b2lkIDAgKSBsb2dnZXIgPSBjb25zb2xlO1xuXG4gIHJldHVybiBmdW5jdGlvbiAoc3RvcmUpIHtcbiAgICB2YXIgcHJldlN0YXRlID0gZGVlcENvcHkoc3RvcmUuc3RhdGUpO1xuXG4gICAgaWYgKHR5cGVvZiBsb2dnZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAobG9nTXV0YXRpb25zKSB7XG4gICAgICBzdG9yZS5zdWJzY3JpYmUoZnVuY3Rpb24gKG11dGF0aW9uLCBzdGF0ZSkge1xuICAgICAgICB2YXIgbmV4dFN0YXRlID0gZGVlcENvcHkoc3RhdGUpO1xuXG4gICAgICAgIGlmIChmaWx0ZXIobXV0YXRpb24sIHByZXZTdGF0ZSwgbmV4dFN0YXRlKSkge1xuICAgICAgICAgIHZhciBmb3JtYXR0ZWRUaW1lID0gZ2V0Rm9ybWF0dGVkVGltZSgpO1xuICAgICAgICAgIHZhciBmb3JtYXR0ZWRNdXRhdGlvbiA9IG11dGF0aW9uVHJhbnNmb3JtZXIobXV0YXRpb24pO1xuICAgICAgICAgIHZhciBtZXNzYWdlID0gXCJtdXRhdGlvbiBcIiArIChtdXRhdGlvbi50eXBlKSArIGZvcm1hdHRlZFRpbWU7XG5cbiAgICAgICAgICBzdGFydE1lc3NhZ2UobG9nZ2VyLCBtZXNzYWdlLCBjb2xsYXBzZWQpO1xuICAgICAgICAgIGxvZ2dlci5sb2coJyVjIHByZXYgc3RhdGUnLCAnY29sb3I6ICM5RTlFOUU7IGZvbnQtd2VpZ2h0OiBib2xkJywgdHJhbnNmb3JtZXIocHJldlN0YXRlKSk7XG4gICAgICAgICAgbG9nZ2VyLmxvZygnJWMgbXV0YXRpb24nLCAnY29sb3I6ICMwM0E5RjQ7IGZvbnQtd2VpZ2h0OiBib2xkJywgZm9ybWF0dGVkTXV0YXRpb24pO1xuICAgICAgICAgIGxvZ2dlci5sb2coJyVjIG5leHQgc3RhdGUnLCAnY29sb3I6ICM0Q0FGNTA7IGZvbnQtd2VpZ2h0OiBib2xkJywgdHJhbnNmb3JtZXIobmV4dFN0YXRlKSk7XG4gICAgICAgICAgZW5kTWVzc2FnZShsb2dnZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJldlN0YXRlID0gbmV4dFN0YXRlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGxvZ0FjdGlvbnMpIHtcbiAgICAgIHN0b3JlLnN1YnNjcmliZUFjdGlvbihmdW5jdGlvbiAoYWN0aW9uLCBzdGF0ZSkge1xuICAgICAgICBpZiAoYWN0aW9uRmlsdGVyKGFjdGlvbiwgc3RhdGUpKSB7XG4gICAgICAgICAgdmFyIGZvcm1hdHRlZFRpbWUgPSBnZXRGb3JtYXR0ZWRUaW1lKCk7XG4gICAgICAgICAgdmFyIGZvcm1hdHRlZEFjdGlvbiA9IGFjdGlvblRyYW5zZm9ybWVyKGFjdGlvbik7XG4gICAgICAgICAgdmFyIG1lc3NhZ2UgPSBcImFjdGlvbiBcIiArIChhY3Rpb24udHlwZSkgKyBmb3JtYXR0ZWRUaW1lO1xuXG4gICAgICAgICAgc3RhcnRNZXNzYWdlKGxvZ2dlciwgbWVzc2FnZSwgY29sbGFwc2VkKTtcbiAgICAgICAgICBsb2dnZXIubG9nKCclYyBhY3Rpb24nLCAnY29sb3I6ICMwM0E5RjQ7IGZvbnQtd2VpZ2h0OiBib2xkJywgZm9ybWF0dGVkQWN0aW9uKTtcbiAgICAgICAgICBlbmRNZXNzYWdlKGxvZ2dlcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzdGFydE1lc3NhZ2UgKGxvZ2dlciwgbWVzc2FnZSwgY29sbGFwc2VkKSB7XG4gIHZhciBzdGFydE1lc3NhZ2UgPSBjb2xsYXBzZWRcbiAgICA/IGxvZ2dlci5ncm91cENvbGxhcHNlZFxuICAgIDogbG9nZ2VyLmdyb3VwO1xuXG4gIC8vIHJlbmRlclxuICB0cnkge1xuICAgIHN0YXJ0TWVzc2FnZS5jYWxsKGxvZ2dlciwgbWVzc2FnZSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2dnZXIubG9nKG1lc3NhZ2UpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVuZE1lc3NhZ2UgKGxvZ2dlcikge1xuICB0cnkge1xuICAgIGxvZ2dlci5ncm91cEVuZCgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmxvZygn4oCU4oCUIGxvZyBlbmQg4oCU4oCUJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0Rm9ybWF0dGVkVGltZSAoKSB7XG4gIHZhciB0aW1lID0gbmV3IERhdGUoKTtcbiAgcmV0dXJuIChcIiBAIFwiICsgKHBhZCh0aW1lLmdldEhvdXJzKCksIDIpKSArIFwiOlwiICsgKHBhZCh0aW1lLmdldE1pbnV0ZXMoKSwgMikpICsgXCI6XCIgKyAocGFkKHRpbWUuZ2V0U2Vjb25kcygpLCAyKSkgKyBcIi5cIiArIChwYWQodGltZS5nZXRNaWxsaXNlY29uZHMoKSwgMykpKVxufVxuXG5mdW5jdGlvbiByZXBlYXQgKHN0ciwgdGltZXMpIHtcbiAgcmV0dXJuIChuZXcgQXJyYXkodGltZXMgKyAxKSkuam9pbihzdHIpXG59XG5cbmZ1bmN0aW9uIHBhZCAobnVtLCBtYXhMZW5ndGgpIHtcbiAgcmV0dXJuIHJlcGVhdCgnMCcsIG1heExlbmd0aCAtIG51bS50b1N0cmluZygpLmxlbmd0aCkgKyBudW1cbn1cblxudmFyIGluZGV4ID0ge1xuICB2ZXJzaW9uOiAnNC4wLjInLFxuICBTdG9yZTogU3RvcmUsXG4gIHN0b3JlS2V5OiBzdG9yZUtleSxcbiAgY3JlYXRlU3RvcmU6IGNyZWF0ZVN0b3JlLFxuICB1c2VTdG9yZTogdXNlU3RvcmUsXG4gIG1hcFN0YXRlOiBtYXBTdGF0ZSxcbiAgbWFwTXV0YXRpb25zOiBtYXBNdXRhdGlvbnMsXG4gIG1hcEdldHRlcnM6IG1hcEdldHRlcnMsXG4gIG1hcEFjdGlvbnM6IG1hcEFjdGlvbnMsXG4gIGNyZWF0ZU5hbWVzcGFjZWRIZWxwZXJzOiBjcmVhdGVOYW1lc3BhY2VkSGVscGVycyxcbiAgY3JlYXRlTG9nZ2VyOiBjcmVhdGVMb2dnZXJcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGluZGV4O1xuZXhwb3J0IHsgU3RvcmUsIGNyZWF0ZUxvZ2dlciwgY3JlYXRlTmFtZXNwYWNlZEhlbHBlcnMsIGNyZWF0ZVN0b3JlLCBtYXBBY3Rpb25zLCBtYXBHZXR0ZXJzLCBtYXBNdXRhdGlvbnMsIG1hcFN0YXRlLCBzdG9yZUtleSwgdXNlU3RvcmUgfTtcbiIsInZhciBfX2RlZlByb3AgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19nZXRPd25Qcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG52YXIgX19nZXRPd25Qcm9wTmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcztcbnZhciBfX2hhc093blByb3AgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fZXhwb3J0ID0gKHRhcmdldCwgYWxsKSA9PiB7XG4gIGZvciAodmFyIG5hbWUgaW4gYWxsKVxuICAgIF9fZGVmUHJvcCh0YXJnZXQsIG5hbWUsIHsgZ2V0OiBhbGxbbmFtZV0sIGVudW1lcmFibGU6IHRydWUgfSk7XG59O1xudmFyIF9fY29weVByb3BzID0gKHRvLCBmcm9tLCBleGNlcHQsIGRlc2MpID0+IHtcbiAgaWYgKGZyb20gJiYgdHlwZW9mIGZyb20gPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGZyb20gPT09IFwiZnVuY3Rpb25cIikge1xuICAgIGZvciAobGV0IGtleSBvZiBfX2dldE93blByb3BOYW1lcyhmcm9tKSlcbiAgICAgIGlmICghX19oYXNPd25Qcm9wLmNhbGwodG8sIGtleSkgJiYga2V5ICE9PSBleGNlcHQpXG4gICAgICAgIF9fZGVmUHJvcCh0bywga2V5LCB7IGdldDogKCkgPT4gZnJvbVtrZXldLCBlbnVtZXJhYmxlOiAhKGRlc2MgPSBfX2dldE93blByb3BEZXNjKGZyb20sIGtleSkpIHx8IGRlc2MuZW51bWVyYWJsZSB9KTtcbiAgfVxuICByZXR1cm4gdG87XG59O1xudmFyIF9fdG9Db21tb25KUyA9IChtb2QpID0+IF9fY29weVByb3BzKF9fZGVmUHJvcCh7fSwgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSksIG1vZCk7XG5cbi8vIHNyYy9pbmRleC50c1xudmFyIHNyY19leHBvcnRzID0ge307XG5fX2V4cG9ydChzcmNfZXhwb3J0cywge1xuICBDb21ib2JveDogKCkgPT4gQ29tYm9ib3gsXG4gIENvbWJvYm94QnV0dG9uOiAoKSA9PiBDb21ib2JveEJ1dHRvbixcbiAgQ29tYm9ib3hJbnB1dDogKCkgPT4gQ29tYm9ib3hJbnB1dCxcbiAgQ29tYm9ib3hMYWJlbDogKCkgPT4gQ29tYm9ib3hMYWJlbCxcbiAgQ29tYm9ib3hPcHRpb246ICgpID0+IENvbWJvYm94T3B0aW9uLFxuICBDb21ib2JveE9wdGlvbnM6ICgpID0+IENvbWJvYm94T3B0aW9ucyxcbiAgRGlhbG9nOiAoKSA9PiBEaWFsb2csXG4gIERpYWxvZ0JhY2tkcm9wOiAoKSA9PiBEaWFsb2dCYWNrZHJvcCxcbiAgRGlhbG9nRGVzY3JpcHRpb246ICgpID0+IERpYWxvZ0Rlc2NyaXB0aW9uLFxuICBEaWFsb2dPdmVybGF5OiAoKSA9PiBEaWFsb2dPdmVybGF5LFxuICBEaWFsb2dQYW5lbDogKCkgPT4gRGlhbG9nUGFuZWwsXG4gIERpYWxvZ1RpdGxlOiAoKSA9PiBEaWFsb2dUaXRsZSxcbiAgRGlzY2xvc3VyZTogKCkgPT4gRGlzY2xvc3VyZSxcbiAgRGlzY2xvc3VyZUJ1dHRvbjogKCkgPT4gRGlzY2xvc3VyZUJ1dHRvbixcbiAgRGlzY2xvc3VyZVBhbmVsOiAoKSA9PiBEaXNjbG9zdXJlUGFuZWwsXG4gIEZvY3VzVHJhcDogKCkgPT4gRm9jdXNUcmFwLFxuICBMaXN0Ym94OiAoKSA9PiBMaXN0Ym94LFxuICBMaXN0Ym94QnV0dG9uOiAoKSA9PiBMaXN0Ym94QnV0dG9uLFxuICBMaXN0Ym94TGFiZWw6ICgpID0+IExpc3Rib3hMYWJlbCxcbiAgTGlzdGJveE9wdGlvbjogKCkgPT4gTGlzdGJveE9wdGlvbixcbiAgTGlzdGJveE9wdGlvbnM6ICgpID0+IExpc3Rib3hPcHRpb25zLFxuICBNZW51OiAoKSA9PiBNZW51LFxuICBNZW51QnV0dG9uOiAoKSA9PiBNZW51QnV0dG9uLFxuICBNZW51SXRlbTogKCkgPT4gTWVudUl0ZW0sXG4gIE1lbnVJdGVtczogKCkgPT4gTWVudUl0ZW1zLFxuICBQb3BvdmVyOiAoKSA9PiBQb3BvdmVyLFxuICBQb3BvdmVyQnV0dG9uOiAoKSA9PiBQb3BvdmVyQnV0dG9uLFxuICBQb3BvdmVyR3JvdXA6ICgpID0+IFBvcG92ZXJHcm91cCxcbiAgUG9wb3Zlck92ZXJsYXk6ICgpID0+IFBvcG92ZXJPdmVybGF5LFxuICBQb3BvdmVyUGFuZWw6ICgpID0+IFBvcG92ZXJQYW5lbCxcbiAgUG9ydGFsOiAoKSA9PiBQb3J0YWwsXG4gIFBvcnRhbEdyb3VwOiAoKSA9PiBQb3J0YWxHcm91cCxcbiAgUmFkaW9Hcm91cDogKCkgPT4gUmFkaW9Hcm91cCxcbiAgUmFkaW9Hcm91cERlc2NyaXB0aW9uOiAoKSA9PiBSYWRpb0dyb3VwRGVzY3JpcHRpb24sXG4gIFJhZGlvR3JvdXBMYWJlbDogKCkgPT4gUmFkaW9Hcm91cExhYmVsLFxuICBSYWRpb0dyb3VwT3B0aW9uOiAoKSA9PiBSYWRpb0dyb3VwT3B0aW9uLFxuICBTd2l0Y2g6ICgpID0+IFN3aXRjaCxcbiAgU3dpdGNoRGVzY3JpcHRpb246ICgpID0+IFN3aXRjaERlc2NyaXB0aW9uLFxuICBTd2l0Y2hHcm91cDogKCkgPT4gU3dpdGNoR3JvdXAsXG4gIFN3aXRjaExhYmVsOiAoKSA9PiBTd2l0Y2hMYWJlbCxcbiAgVGFiOiAoKSA9PiBUYWIsXG4gIFRhYkdyb3VwOiAoKSA9PiBUYWJHcm91cCxcbiAgVGFiTGlzdDogKCkgPT4gVGFiTGlzdCxcbiAgVGFiUGFuZWw6ICgpID0+IFRhYlBhbmVsLFxuICBUYWJQYW5lbHM6ICgpID0+IFRhYlBhbmVscyxcbiAgVHJhbnNpdGlvbkNoaWxkOiAoKSA9PiBUcmFuc2l0aW9uQ2hpbGQsXG4gIFRyYW5zaXRpb25Sb290OiAoKSA9PiBUcmFuc2l0aW9uUm9vdFxufSk7XG5tb2R1bGUuZXhwb3J0cyA9IF9fdG9Db21tb25KUyhzcmNfZXhwb3J0cyk7XG5cbi8vIHNyYy9jb21wb25lbnRzL2NvbWJvYm94L2NvbWJvYm94LnRzXG52YXIgaW1wb3J0X3Z1ZTggPSByZXF1aXJlKFwidnVlXCIpO1xuXG4vLyBzcmMvdXRpbHMvcmVuZGVyLnRzXG52YXIgaW1wb3J0X3Z1ZSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5cbi8vIHNyYy91dGlscy9tYXRjaC50c1xuZnVuY3Rpb24gbWF0Y2godmFsdWUsIGxvb2t1cCwgLi4uYXJncykge1xuICBpZiAodmFsdWUgaW4gbG9va3VwKSB7XG4gICAgbGV0IHJldHVyblZhbHVlID0gbG9va3VwW3ZhbHVlXTtcbiAgICByZXR1cm4gdHlwZW9mIHJldHVyblZhbHVlID09PSBcImZ1bmN0aW9uXCIgPyByZXR1cm5WYWx1ZSguLi5hcmdzKSA6IHJldHVyblZhbHVlO1xuICB9XG4gIGxldCBlcnJvciA9IG5ldyBFcnJvcihgVHJpZWQgdG8gaGFuZGxlIFwiJHt2YWx1ZX1cIiBidXQgdGhlcmUgaXMgbm8gaGFuZGxlciBkZWZpbmVkLiBPbmx5IGRlZmluZWQgaGFuZGxlcnMgYXJlOiAke09iamVjdC5rZXlzKGxvb2t1cCkubWFwKChrZXkpID0+IGBcIiR7a2V5fVwiYCkuam9pbihcIiwgXCIpfS5gKTtcbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVycm9yLCBtYXRjaCk7XG4gIHRocm93IGVycm9yO1xufVxuXG4vLyBzcmMvdXRpbHMvcmVuZGVyLnRzXG5mdW5jdGlvbiByZW5kZXIoe1xuICB2aXNpYmxlID0gdHJ1ZSxcbiAgZmVhdHVyZXMgPSAwIC8qIE5vbmUgKi8sXG4gIG91clByb3BzLFxuICB0aGVpclByb3BzLFxuICAuLi5tYWluXG59KSB7XG4gIHZhciBfYTtcbiAgbGV0IHByb3BzID0gbWVyZ2VQcm9wcyh0aGVpclByb3BzLCBvdXJQcm9wcyk7XG4gIGxldCBtYWluV2l0aFByb3BzID0gT2JqZWN0LmFzc2lnbihtYWluLCB7IHByb3BzIH0pO1xuICBpZiAodmlzaWJsZSlcbiAgICByZXR1cm4gX3JlbmRlcihtYWluV2l0aFByb3BzKTtcbiAgaWYgKGZlYXR1cmVzICYgMiAvKiBTdGF0aWMgKi8pIHtcbiAgICBpZiAocHJvcHMuc3RhdGljKVxuICAgICAgcmV0dXJuIF9yZW5kZXIobWFpbldpdGhQcm9wcyk7XG4gIH1cbiAgaWYgKGZlYXR1cmVzICYgMSAvKiBSZW5kZXJTdHJhdGVneSAqLykge1xuICAgIGxldCBzdHJhdGVneSA9ICgoX2EgPSBwcm9wcy51bm1vdW50KSAhPSBudWxsID8gX2EgOiB0cnVlKSA/IDAgLyogVW5tb3VudCAqLyA6IDEgLyogSGlkZGVuICovO1xuICAgIHJldHVybiBtYXRjaChzdHJhdGVneSwge1xuICAgICAgWzAgLyogVW5tb3VudCAqL10oKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSxcbiAgICAgIFsxIC8qIEhpZGRlbiAqL10oKSB7XG4gICAgICAgIHJldHVybiBfcmVuZGVyKHtcbiAgICAgICAgICAuLi5tYWluLFxuICAgICAgICAgIHByb3BzOiB7IC4uLnByb3BzLCBoaWRkZW46IHRydWUsIHN0eWxlOiB7IGRpc3BsYXk6IFwibm9uZVwiIH0gfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gX3JlbmRlcihtYWluV2l0aFByb3BzKTtcbn1cbmZ1bmN0aW9uIF9yZW5kZXIoe1xuICBwcm9wcyxcbiAgYXR0cnMsXG4gIHNsb3RzLFxuICBzbG90LFxuICBuYW1lXG59KSB7XG4gIHZhciBfYTtcbiAgbGV0IHsgYXMsIC4uLmluY29taW5nUHJvcHMgfSA9IG9taXQocHJvcHMsIFtcInVubW91bnRcIiwgXCJzdGF0aWNcIl0pO1xuICBsZXQgY2hpbGRyZW4gPSAoX2EgPSBzbG90cy5kZWZhdWx0KSA9PSBudWxsID8gdm9pZCAwIDogX2EuY2FsbChzbG90cywgc2xvdCk7XG4gIGxldCBkYXRhQXR0cmlidXRlcyA9IHt9O1xuICBpZiAoYXMgPT09IFwidGVtcGxhdGVcIikge1xuICAgIGNoaWxkcmVuID0gZmxhdHRlbkZyYWdtZW50cyhjaGlsZHJlbik7XG4gICAgaWYgKE9iamVjdC5rZXlzKGluY29taW5nUHJvcHMpLmxlbmd0aCA+IDAgfHwgT2JqZWN0LmtleXMoYXR0cnMpLmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCBbZmlyc3RDaGlsZCwgLi4ub3RoZXJdID0gY2hpbGRyZW4gIT0gbnVsbCA/IGNoaWxkcmVuIDogW107XG4gICAgICBpZiAoIWlzVmFsaWRFbGVtZW50KGZpcnN0Q2hpbGQpIHx8IG90aGVyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFtcbiAgICAgICAgICAnUGFzc2luZyBwcm9wcyBvbiBcInRlbXBsYXRlXCIhJyxcbiAgICAgICAgICBcIlwiLFxuICAgICAgICAgIGBUaGUgY3VycmVudCBjb21wb25lbnQgPCR7bmFtZX0gLz4gaXMgcmVuZGVyaW5nIGEgXCJ0ZW1wbGF0ZVwiLmAsXG4gICAgICAgICAgYEhvd2V2ZXIgd2UgbmVlZCB0byBwYXNzdGhyb3VnaCB0aGUgZm9sbG93aW5nIHByb3BzOmAsXG4gICAgICAgICAgT2JqZWN0LmtleXMoaW5jb21pbmdQcm9wcykuY29uY2F0KE9iamVjdC5rZXlzKGF0dHJzKSkuc29ydCgoYSwgeikgPT4gYS5sb2NhbGVDb21wYXJlKHopKS5tYXAoKGxpbmUpID0+IGAgIC0gJHtsaW5lfWApLmpvaW4oXCJcXG5cIiksXG4gICAgICAgICAgXCJcIixcbiAgICAgICAgICBcIllvdSBjYW4gYXBwbHkgYSBmZXcgc29sdXRpb25zOlwiLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgICdBZGQgYW4gYGFzPVwiLi4uXCJgIHByb3AsIHRvIGVuc3VyZSB0aGF0IHdlIHJlbmRlciBhbiBhY3R1YWwgZWxlbWVudCBpbnN0ZWFkIG9mIGEgXCJ0ZW1wbGF0ZVwiLicsXG4gICAgICAgICAgICBcIlJlbmRlciBhIHNpbmdsZSBlbGVtZW50IGFzIHRoZSBjaGlsZCBzbyB0aGF0IHdlIGNhbiBmb3J3YXJkIHRoZSBwcm9wcyBvbnRvIHRoYXQgZWxlbWVudC5cIlxuICAgICAgICAgIF0ubWFwKChsaW5lKSA9PiBgICAtICR7bGluZX1gKS5qb2luKFwiXFxuXCIpXG4gICAgICAgIF0uam9pbihcIlxcblwiKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gKDAsIGltcG9ydF92dWUuY2xvbmVWTm9kZSkoZmlyc3RDaGlsZCwgT2JqZWN0LmFzc2lnbih7fSwgaW5jb21pbmdQcm9wcywgZGF0YUF0dHJpYnV0ZXMpKTtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmIGNoaWxkcmVuLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIGNoaWxkcmVuWzBdO1xuICAgIH1cbiAgICByZXR1cm4gY2hpbGRyZW47XG4gIH1cbiAgcmV0dXJuICgwLCBpbXBvcnRfdnVlLmgpKGFzLCBPYmplY3QuYXNzaWduKHt9LCBpbmNvbWluZ1Byb3BzLCBkYXRhQXR0cmlidXRlcyksIGNoaWxkcmVuKTtcbn1cbmZ1bmN0aW9uIGZsYXR0ZW5GcmFnbWVudHMoY2hpbGRyZW4pIHtcbiAgcmV0dXJuIGNoaWxkcmVuLmZsYXRNYXAoKGNoaWxkKSA9PiB7XG4gICAgaWYgKGNoaWxkLnR5cGUgPT09IGltcG9ydF92dWUuRnJhZ21lbnQpIHtcbiAgICAgIHJldHVybiBmbGF0dGVuRnJhZ21lbnRzKGNoaWxkLmNoaWxkcmVuKTtcbiAgICB9XG4gICAgcmV0dXJuIFtjaGlsZF07XG4gIH0pO1xufVxuZnVuY3Rpb24gbWVyZ2VQcm9wcyguLi5saXN0T2ZQcm9wcykge1xuICB2YXIgX2E7XG4gIGlmIChsaXN0T2ZQcm9wcy5sZW5ndGggPT09IDApXG4gICAgcmV0dXJuIHt9O1xuICBpZiAobGlzdE9mUHJvcHMubGVuZ3RoID09PSAxKVxuICAgIHJldHVybiBsaXN0T2ZQcm9wc1swXTtcbiAgbGV0IHRhcmdldCA9IHt9O1xuICBsZXQgZXZlbnRIYW5kbGVycyA9IHt9O1xuICBmb3IgKGxldCBwcm9wcyBvZiBsaXN0T2ZQcm9wcykge1xuICAgIGZvciAobGV0IHByb3AgaW4gcHJvcHMpIHtcbiAgICAgIGlmIChwcm9wLnN0YXJ0c1dpdGgoXCJvblwiKSAmJiB0eXBlb2YgcHJvcHNbcHJvcF0gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAoX2EgPSBldmVudEhhbmRsZXJzW3Byb3BdKSAhPSBudWxsID8gX2EgOiBldmVudEhhbmRsZXJzW3Byb3BdID0gW107XG4gICAgICAgIGV2ZW50SGFuZGxlcnNbcHJvcF0ucHVzaChwcm9wc1twcm9wXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXJnZXRbcHJvcF0gPSBwcm9wc1twcm9wXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKHRhcmdldC5kaXNhYmxlZCB8fCB0YXJnZXRbXCJhcmlhLWRpc2FibGVkXCJdKSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24odGFyZ2V0LCBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmtleXMoZXZlbnRIYW5kbGVycykubWFwKChldmVudE5hbWUpID0+IFtldmVudE5hbWUsIHZvaWQgMF0pKSk7XG4gIH1cbiAgZm9yIChsZXQgZXZlbnROYW1lIGluIGV2ZW50SGFuZGxlcnMpIHtcbiAgICBPYmplY3QuYXNzaWduKHRhcmdldCwge1xuICAgICAgW2V2ZW50TmFtZV0oZXZlbnQsIC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGhhbmRsZXJzID0gZXZlbnRIYW5kbGVyc1tldmVudE5hbWVdO1xuICAgICAgICBmb3IgKGxldCBoYW5kbGVyIG9mIGhhbmRsZXJzKSB7XG4gICAgICAgICAgaWYgKGV2ZW50ID09IG51bGwgPyB2b2lkIDAgOiBldmVudC5kZWZhdWx0UHJldmVudGVkKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIGhhbmRsZXIoZXZlbnQsIC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHRhcmdldDtcbn1cbmZ1bmN0aW9uIGNvbXBhY3Qob2JqZWN0KSB7XG4gIGxldCBjbG9uZSA9IE9iamVjdC5hc3NpZ24oe30sIG9iamVjdCk7XG4gIGZvciAobGV0IGtleSBpbiBjbG9uZSkge1xuICAgIGlmIChjbG9uZVtrZXldID09PSB2b2lkIDApXG4gICAgICBkZWxldGUgY2xvbmVba2V5XTtcbiAgfVxuICByZXR1cm4gY2xvbmU7XG59XG5mdW5jdGlvbiBvbWl0KG9iamVjdCwga2V5c1RvT21pdCA9IFtdKSB7XG4gIGxldCBjbG9uZSA9IE9iamVjdC5hc3NpZ24oe30sIG9iamVjdCk7XG4gIGZvciAobGV0IGtleSBvZiBrZXlzVG9PbWl0KSB7XG4gICAgaWYgKGtleSBpbiBjbG9uZSlcbiAgICAgIGRlbGV0ZSBjbG9uZVtrZXldO1xuICB9XG4gIHJldHVybiBjbG9uZTtcbn1cbmZ1bmN0aW9uIGlzVmFsaWRFbGVtZW50KGlucHV0KSB7XG4gIGlmIChpbnB1dCA9PSBudWxsKVxuICAgIHJldHVybiBmYWxzZTtcbiAgaWYgKHR5cGVvZiBpbnB1dC50eXBlID09PSBcInN0cmluZ1wiKVxuICAgIHJldHVybiB0cnVlO1xuICBpZiAodHlwZW9mIGlucHV0LnR5cGUgPT09IFwib2JqZWN0XCIpXG4gICAgcmV0dXJuIHRydWU7XG4gIGlmICh0eXBlb2YgaW5wdXQudHlwZSA9PT0gXCJmdW5jdGlvblwiKVxuICAgIHJldHVybiB0cnVlO1xuICByZXR1cm4gZmFsc2U7XG59XG5cbi8vIHNyYy9ob29rcy91c2UtaWQudHNcbnZhciBpZCA9IDA7XG5mdW5jdGlvbiBnZW5lcmF0ZUlkKCkge1xuICByZXR1cm4gKytpZDtcbn1cbmZ1bmN0aW9uIHVzZUlkKCkge1xuICByZXR1cm4gZ2VuZXJhdGVJZCgpO1xufVxuXG4vLyBzcmMvdXRpbHMvY2FsY3VsYXRlLWFjdGl2ZS1pbmRleC50c1xuZnVuY3Rpb24gYXNzZXJ0TmV2ZXIoeCkge1xuICB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIG9iamVjdDogXCIgKyB4KTtcbn1cbmZ1bmN0aW9uIGNhbGN1bGF0ZUFjdGl2ZUluZGV4KGFjdGlvbiwgcmVzb2x2ZXJzKSB7XG4gIGxldCBpdGVtcyA9IHJlc29sdmVycy5yZXNvbHZlSXRlbXMoKTtcbiAgaWYgKGl0ZW1zLmxlbmd0aCA8PSAwKVxuICAgIHJldHVybiBudWxsO1xuICBsZXQgY3VycmVudEFjdGl2ZUluZGV4ID0gcmVzb2x2ZXJzLnJlc29sdmVBY3RpdmVJbmRleCgpO1xuICBsZXQgYWN0aXZlSW5kZXggPSBjdXJyZW50QWN0aXZlSW5kZXggIT0gbnVsbCA/IGN1cnJlbnRBY3RpdmVJbmRleCA6IC0xO1xuICBsZXQgbmV4dEFjdGl2ZUluZGV4ID0gKCgpID0+IHtcbiAgICBzd2l0Y2ggKGFjdGlvbi5mb2N1cykge1xuICAgICAgY2FzZSAwIC8qIEZpcnN0ICovOlxuICAgICAgICByZXR1cm4gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiAhcmVzb2x2ZXJzLnJlc29sdmVEaXNhYmxlZChpdGVtKSk7XG4gICAgICBjYXNlIDEgLyogUHJldmlvdXMgKi86IHtcbiAgICAgICAgbGV0IGlkeCA9IGl0ZW1zLnNsaWNlKCkucmV2ZXJzZSgpLmZpbmRJbmRleCgoaXRlbSwgaWR4MiwgYWxsKSA9PiB7XG4gICAgICAgICAgaWYgKGFjdGl2ZUluZGV4ICE9PSAtMSAmJiBhbGwubGVuZ3RoIC0gaWR4MiAtIDEgPj0gYWN0aXZlSW5kZXgpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuICFyZXNvbHZlcnMucmVzb2x2ZURpc2FibGVkKGl0ZW0pO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGlkeCA9PT0gLTEpXG4gICAgICAgICAgcmV0dXJuIGlkeDtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLmxlbmd0aCAtIDEgLSBpZHg7XG4gICAgICB9XG4gICAgICBjYXNlIDIgLyogTmV4dCAqLzpcbiAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbmRJbmRleCgoaXRlbSwgaWR4KSA9PiB7XG4gICAgICAgICAgaWYgKGlkeCA8PSBhY3RpdmVJbmRleClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gIXJlc29sdmVycy5yZXNvbHZlRGlzYWJsZWQoaXRlbSk7XG4gICAgICAgIH0pO1xuICAgICAgY2FzZSAzIC8qIExhc3QgKi86IHtcbiAgICAgICAgbGV0IGlkeCA9IGl0ZW1zLnNsaWNlKCkucmV2ZXJzZSgpLmZpbmRJbmRleCgoaXRlbSkgPT4gIXJlc29sdmVycy5yZXNvbHZlRGlzYWJsZWQoaXRlbSkpO1xuICAgICAgICBpZiAoaWR4ID09PSAtMSlcbiAgICAgICAgICByZXR1cm4gaWR4O1xuICAgICAgICByZXR1cm4gaXRlbXMubGVuZ3RoIC0gMSAtIGlkeDtcbiAgICAgIH1cbiAgICAgIGNhc2UgNCAvKiBTcGVjaWZpYyAqLzpcbiAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gcmVzb2x2ZXJzLnJlc29sdmVJZChpdGVtKSA9PT0gYWN0aW9uLmlkKTtcbiAgICAgIGNhc2UgNSAvKiBOb3RoaW5nICovOlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydE5ldmVyKGFjdGlvbik7XG4gICAgfVxuICB9KSgpO1xuICByZXR1cm4gbmV4dEFjdGl2ZUluZGV4ID09PSAtMSA/IGN1cnJlbnRBY3RpdmVJbmRleCA6IG5leHRBY3RpdmVJbmRleDtcbn1cblxuLy8gc3JjL3V0aWxzL2RvbS50c1xuZnVuY3Rpb24gZG9tKHJlZjE5KSB7XG4gIHZhciBfYTtcbiAgaWYgKHJlZjE5ID09IG51bGwpXG4gICAgcmV0dXJuIG51bGw7XG4gIGlmIChyZWYxOS52YWx1ZSA9PSBudWxsKVxuICAgIHJldHVybiBudWxsO1xuICByZXR1cm4gKF9hID0gcmVmMTkudmFsdWUuJGVsKSAhPSBudWxsID8gX2EgOiByZWYxOS52YWx1ZTtcbn1cblxuLy8gc3JjL2ludGVybmFsL29wZW4tY2xvc2VkLnRzXG52YXIgaW1wb3J0X3Z1ZTIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIENvbnRleHQgPSBTeW1ib2woXCJDb250ZXh0XCIpO1xuZnVuY3Rpb24gaGFzT3BlbkNsb3NlZCgpIHtcbiAgcmV0dXJuIHVzZU9wZW5DbG9zZWQoKSAhPT0gbnVsbDtcbn1cbmZ1bmN0aW9uIHVzZU9wZW5DbG9zZWQoKSB7XG4gIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTIuaW5qZWN0KShDb250ZXh0LCBudWxsKTtcbn1cbmZ1bmN0aW9uIHVzZU9wZW5DbG9zZWRQcm92aWRlcih2YWx1ZSkge1xuICAoMCwgaW1wb3J0X3Z1ZTIucHJvdmlkZSkoQ29udGV4dCwgdmFsdWUpO1xufVxuXG4vLyBzcmMvaG9va3MvdXNlLXJlc29sdmUtYnV0dG9uLXR5cGUudHNcbnZhciBpbXBvcnRfdnVlMyA9IHJlcXVpcmUoXCJ2dWVcIik7XG5mdW5jdGlvbiByZXNvbHZlVHlwZSh0eXBlLCBhcykge1xuICBpZiAodHlwZSlcbiAgICByZXR1cm4gdHlwZTtcbiAgbGV0IHRhZyA9IGFzICE9IG51bGwgPyBhcyA6IFwiYnV0dG9uXCI7XG4gIGlmICh0eXBlb2YgdGFnID09PSBcInN0cmluZ1wiICYmIHRhZy50b0xvd2VyQ2FzZSgpID09PSBcImJ1dHRvblwiKVxuICAgIHJldHVybiBcImJ1dHRvblwiO1xuICByZXR1cm4gdm9pZCAwO1xufVxuZnVuY3Rpb24gdXNlUmVzb2x2ZUJ1dHRvblR5cGUoZGF0YSwgcmVmRWxlbWVudCkge1xuICBsZXQgdHlwZSA9ICgwLCBpbXBvcnRfdnVlMy5yZWYpKHJlc29sdmVUeXBlKGRhdGEudmFsdWUudHlwZSwgZGF0YS52YWx1ZS5hcykpO1xuICAoMCwgaW1wb3J0X3Z1ZTMub25Nb3VudGVkKSgoKSA9PiB7XG4gICAgdHlwZS52YWx1ZSA9IHJlc29sdmVUeXBlKGRhdGEudmFsdWUudHlwZSwgZGF0YS52YWx1ZS5hcyk7XG4gIH0pO1xuICAoMCwgaW1wb3J0X3Z1ZTMud2F0Y2hFZmZlY3QpKCgpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKHR5cGUudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgaWYgKCFkb20ocmVmRWxlbWVudCkpXG4gICAgICByZXR1cm47XG4gICAgaWYgKGRvbShyZWZFbGVtZW50KSBpbnN0YW5jZW9mIEhUTUxCdXR0b25FbGVtZW50ICYmICEoKF9hID0gZG9tKHJlZkVsZW1lbnQpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuaGFzQXR0cmlidXRlKFwidHlwZVwiKSkpIHtcbiAgICAgIHR5cGUudmFsdWUgPSBcImJ1dHRvblwiO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB0eXBlO1xufVxuXG4vLyBzcmMvaG9va3MvdXNlLXRyZWUtd2Fsa2VyLnRzXG52YXIgaW1wb3J0X3Z1ZTQgPSByZXF1aXJlKFwidnVlXCIpO1xuXG4vLyBzcmMvdXRpbHMvb3duZXIudHNcbmZ1bmN0aW9uIGdldE93bmVyRG9jdW1lbnQoZWxlbWVudCkge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIilcbiAgICByZXR1cm4gbnVsbDtcbiAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBOb2RlKVxuICAgIHJldHVybiBlbGVtZW50Lm93bmVyRG9jdW1lbnQ7XG4gIGlmIChlbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBlbGVtZW50Lmhhc093blByb3BlcnR5KFwidmFsdWVcIikpIHtcbiAgICBsZXQgZG9tRWxlbWVudCA9IGRvbShlbGVtZW50KTtcbiAgICBpZiAoZG9tRWxlbWVudClcbiAgICAgIHJldHVybiBkb21FbGVtZW50Lm93bmVyRG9jdW1lbnQ7XG4gIH1cbiAgcmV0dXJuIGRvY3VtZW50O1xufVxuXG4vLyBzcmMvaG9va3MvdXNlLXRyZWUtd2Fsa2VyLnRzXG5mdW5jdGlvbiB1c2VUcmVlV2Fsa2VyKHtcbiAgY29udGFpbmVyLFxuICBhY2NlcHQsXG4gIHdhbGssXG4gIGVuYWJsZWRcbn0pIHtcbiAgKDAsIGltcG9ydF92dWU0LndhdGNoRWZmZWN0KSgoKSA9PiB7XG4gICAgbGV0IHJvb3QgPSBjb250YWluZXIudmFsdWU7XG4gICAgaWYgKCFyb290KVxuICAgICAgcmV0dXJuO1xuICAgIGlmIChlbmFibGVkICE9PSB2b2lkIDAgJiYgIWVuYWJsZWQudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgbGV0IG93bmVyRG9jdW1lbnQgPSBnZXRPd25lckRvY3VtZW50KGNvbnRhaW5lcik7XG4gICAgaWYgKCFvd25lckRvY3VtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIGxldCBhY2NlcHROb2RlID0gT2JqZWN0LmFzc2lnbigobm9kZSkgPT4gYWNjZXB0KG5vZGUpLCB7IGFjY2VwdE5vZGU6IGFjY2VwdCB9KTtcbiAgICBsZXQgd2Fsa2VyID0gb3duZXJEb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKHJvb3QsIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULCBhY2NlcHROb2RlLCBmYWxzZSk7XG4gICAgd2hpbGUgKHdhbGtlci5uZXh0Tm9kZSgpKVxuICAgICAgd2Fsayh3YWxrZXIuY3VycmVudE5vZGUpO1xuICB9KTtcbn1cblxuLy8gc3JjL3V0aWxzL2ZvY3VzLW1hbmFnZW1lbnQudHNcbnZhciBmb2N1c2FibGVTZWxlY3RvciA9IFtcbiAgXCJbY29udGVudEVkaXRhYmxlPXRydWVdXCIsXG4gIFwiW3RhYmluZGV4XVwiLFxuICBcImFbaHJlZl1cIixcbiAgXCJhcmVhW2hyZWZdXCIsXG4gIFwiYnV0dG9uOm5vdChbZGlzYWJsZWRdKVwiLFxuICBcImlmcmFtZVwiLFxuICBcImlucHV0Om5vdChbZGlzYWJsZWRdKVwiLFxuICBcInNlbGVjdDpub3QoW2Rpc2FibGVkXSlcIixcbiAgXCJ0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSlcIlxuXS5tYXAoZmFsc2UgPyAoc2VsZWN0b3IpID0+IGAke3NlbGVjdG9yfTpub3QoW3RhYmluZGV4PSctMSddKTpub3QoW3N0eWxlKj0nZGlzcGxheTogbm9uZSddKWAgOiAoc2VsZWN0b3IpID0+IGAke3NlbGVjdG9yfTpub3QoW3RhYmluZGV4PSctMSddKWApLmpvaW4oXCIsXCIpO1xuZnVuY3Rpb24gZ2V0Rm9jdXNhYmxlRWxlbWVudHMoY29udGFpbmVyID0gZG9jdW1lbnQuYm9keSkge1xuICBpZiAoY29udGFpbmVyID09IG51bGwpXG4gICAgcmV0dXJuIFtdO1xuICByZXR1cm4gQXJyYXkuZnJvbShjb250YWluZXIucXVlcnlTZWxlY3RvckFsbChmb2N1c2FibGVTZWxlY3RvcikpO1xufVxuZnVuY3Rpb24gaXNGb2N1c2FibGVFbGVtZW50KGVsZW1lbnQsIG1vZGUgPSAwIC8qIFN0cmljdCAqLykge1xuICB2YXIgX2E7XG4gIGlmIChlbGVtZW50ID09PSAoKF9hID0gZ2V0T3duZXJEb2N1bWVudChlbGVtZW50KSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmJvZHkpKVxuICAgIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIG1hdGNoKG1vZGUsIHtcbiAgICBbMCAvKiBTdHJpY3QgKi9dKCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQubWF0Y2hlcyhmb2N1c2FibGVTZWxlY3Rvcik7XG4gICAgfSxcbiAgICBbMSAvKiBMb29zZSAqL10oKSB7XG4gICAgICBsZXQgbmV4dCA9IGVsZW1lbnQ7XG4gICAgICB3aGlsZSAobmV4dCAhPT0gbnVsbCkge1xuICAgICAgICBpZiAobmV4dC5tYXRjaGVzKGZvY3VzYWJsZVNlbGVjdG9yKSlcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgbmV4dCA9IG5leHQucGFyZW50RWxlbWVudDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gZm9jdXNFbGVtZW50KGVsZW1lbnQpIHtcbiAgZWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogZWxlbWVudC5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG59XG52YXIgc2VsZWN0YWJsZVNlbGVjdG9yID0gW1widGV4dGFyZWFcIiwgXCJpbnB1dFwiXS5qb2luKFwiLFwiKTtcbmZ1bmN0aW9uIGlzU2VsZWN0YWJsZUVsZW1lbnQoZWxlbWVudCkge1xuICB2YXIgX2EsIF9iO1xuICByZXR1cm4gKF9iID0gKF9hID0gZWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogZWxlbWVudC5tYXRjaGVzKSA9PSBudWxsID8gdm9pZCAwIDogX2EuY2FsbChlbGVtZW50LCBzZWxlY3RhYmxlU2VsZWN0b3IpKSAhPSBudWxsID8gX2IgOiBmYWxzZTtcbn1cbmZ1bmN0aW9uIHNvcnRCeURvbU5vZGUobm9kZXMsIHJlc29sdmVLZXkgPSAoaSkgPT4gaSkge1xuICByZXR1cm4gbm9kZXMuc2xpY2UoKS5zb3J0KChhSXRlbSwgekl0ZW0pID0+IHtcbiAgICBsZXQgYSA9IHJlc29sdmVLZXkoYUl0ZW0pO1xuICAgIGxldCB6ID0gcmVzb2x2ZUtleSh6SXRlbSk7XG4gICAgaWYgKGEgPT09IG51bGwgfHwgeiA9PT0gbnVsbClcbiAgICAgIHJldHVybiAwO1xuICAgIGxldCBwb3NpdGlvbiA9IGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oeik7XG4gICAgaWYgKHBvc2l0aW9uICYgTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkcpXG4gICAgICByZXR1cm4gLTE7XG4gICAgaWYgKHBvc2l0aW9uICYgTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkcpXG4gICAgICByZXR1cm4gMTtcbiAgICByZXR1cm4gMDtcbiAgfSk7XG59XG5mdW5jdGlvbiBmb2N1c0luKGNvbnRhaW5lciwgZm9jdXMsIHNvcnRlZCA9IHRydWUpIHtcbiAgdmFyIF9hO1xuICBsZXQgb3duZXJEb2N1bWVudCA9IChfYSA9IEFycmF5LmlzQXJyYXkoY29udGFpbmVyKSA/IGNvbnRhaW5lci5sZW5ndGggPiAwID8gY29udGFpbmVyWzBdLm93bmVyRG9jdW1lbnQgOiBkb2N1bWVudCA6IGNvbnRhaW5lciA9PSBudWxsID8gdm9pZCAwIDogY29udGFpbmVyLm93bmVyRG9jdW1lbnQpICE9IG51bGwgPyBfYSA6IGRvY3VtZW50O1xuICBsZXQgZWxlbWVudHMgPSBBcnJheS5pc0FycmF5KGNvbnRhaW5lcikgPyBzb3J0ZWQgPyBzb3J0QnlEb21Ob2RlKGNvbnRhaW5lcikgOiBjb250YWluZXIgOiBnZXRGb2N1c2FibGVFbGVtZW50cyhjb250YWluZXIpO1xuICBsZXQgYWN0aXZlID0gb3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICBsZXQgZGlyZWN0aW9uID0gKCgpID0+IHtcbiAgICBpZiAoZm9jdXMgJiAoMSAvKiBGaXJzdCAqLyB8IDQgLyogTmV4dCAqLykpXG4gICAgICByZXR1cm4gMSAvKiBOZXh0ICovO1xuICAgIGlmIChmb2N1cyAmICgyIC8qIFByZXZpb3VzICovIHwgOCAvKiBMYXN0ICovKSlcbiAgICAgIHJldHVybiAtMSAvKiBQcmV2aW91cyAqLztcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIEZvY3VzLkZpcnN0LCBGb2N1cy5QcmV2aW91cywgRm9jdXMuTmV4dCBvciBGb2N1cy5MYXN0XCIpO1xuICB9KSgpO1xuICBsZXQgc3RhcnRJbmRleCA9ICgoKSA9PiB7XG4gICAgaWYgKGZvY3VzICYgMSAvKiBGaXJzdCAqLylcbiAgICAgIHJldHVybiAwO1xuICAgIGlmIChmb2N1cyAmIDIgLyogUHJldmlvdXMgKi8pXG4gICAgICByZXR1cm4gTWF0aC5tYXgoMCwgZWxlbWVudHMuaW5kZXhPZihhY3RpdmUpKSAtIDE7XG4gICAgaWYgKGZvY3VzICYgNCAvKiBOZXh0ICovKVxuICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIGVsZW1lbnRzLmluZGV4T2YoYWN0aXZlKSkgKyAxO1xuICAgIGlmIChmb2N1cyAmIDggLyogTGFzdCAqLylcbiAgICAgIHJldHVybiBlbGVtZW50cy5sZW5ndGggLSAxO1xuICAgIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgRm9jdXMuRmlyc3QsIEZvY3VzLlByZXZpb3VzLCBGb2N1cy5OZXh0IG9yIEZvY3VzLkxhc3RcIik7XG4gIH0pKCk7XG4gIGxldCBmb2N1c09wdGlvbnMgPSBmb2N1cyAmIDMyIC8qIE5vU2Nyb2xsICovID8geyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0gOiB7fTtcbiAgbGV0IG9mZnNldCA9IDA7XG4gIGxldCB0b3RhbCA9IGVsZW1lbnRzLmxlbmd0aDtcbiAgbGV0IG5leHQgPSB2b2lkIDA7XG4gIGRvIHtcbiAgICBpZiAob2Zmc2V0ID49IHRvdGFsIHx8IG9mZnNldCArIHRvdGFsIDw9IDApXG4gICAgICByZXR1cm4gMCAvKiBFcnJvciAqLztcbiAgICBsZXQgbmV4dElkeCA9IHN0YXJ0SW5kZXggKyBvZmZzZXQ7XG4gICAgaWYgKGZvY3VzICYgMTYgLyogV3JhcEFyb3VuZCAqLykge1xuICAgICAgbmV4dElkeCA9IChuZXh0SWR4ICsgdG90YWwpICUgdG90YWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZXh0SWR4IDwgMClcbiAgICAgICAgcmV0dXJuIDMgLyogVW5kZXJmbG93ICovO1xuICAgICAgaWYgKG5leHRJZHggPj0gdG90YWwpXG4gICAgICAgIHJldHVybiAxIC8qIE92ZXJmbG93ICovO1xuICAgIH1cbiAgICBuZXh0ID0gZWxlbWVudHNbbmV4dElkeF07XG4gICAgbmV4dCA9PSBudWxsID8gdm9pZCAwIDogbmV4dC5mb2N1cyhmb2N1c09wdGlvbnMpO1xuICAgIG9mZnNldCArPSBkaXJlY3Rpb247XG4gIH0gd2hpbGUgKG5leHQgIT09IG93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudCk7XG4gIGlmICghbmV4dC5oYXNBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiKSlcbiAgICBuZXh0LnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsIFwiMFwiKTtcbiAgaWYgKGZvY3VzICYgKDQgLyogTmV4dCAqLyB8IDIgLyogUHJldmlvdXMgKi8pICYmIGlzU2VsZWN0YWJsZUVsZW1lbnQobmV4dCkpIHtcbiAgICBuZXh0LnNlbGVjdCgpO1xuICB9XG4gIHJldHVybiAyIC8qIFN1Y2Nlc3MgKi87XG59XG5cbi8vIHNyYy9ob29rcy91c2Utd2luZG93LWV2ZW50LnRzXG52YXIgaW1wb3J0X3Z1ZTUgPSByZXF1aXJlKFwidnVlXCIpO1xuZnVuY3Rpb24gdXNlV2luZG93RXZlbnQodHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgcmV0dXJuO1xuICAoMCwgaW1wb3J0X3Z1ZTUud2F0Y2hFZmZlY3QpKChvbkludmFsaWRhdGUpID0+IHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG4gICAgb25JbnZhbGlkYXRlKCgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKSk7XG4gIH0pO1xufVxuXG4vLyBzcmMvaG9va3MvdXNlLW91dHNpZGUtY2xpY2sudHNcbnZhciBpbXBvcnRfdnVlNiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5mdW5jdGlvbiB1c2VPdXRzaWRlQ2xpY2soY29udGFpbmVycywgY2IsIGVuYWJsZWQgPSAoMCwgaW1wb3J0X3Z1ZTYuY29tcHV0ZWQpKCgpID0+IHRydWUpKSB7XG4gIGZ1bmN0aW9uIGhhbmRsZU91dHNpZGVDbGljayhldmVudCwgcmVzb2x2ZVRhcmdldCkge1xuICAgIGlmICghZW5hYmxlZC52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZClcbiAgICAgIHJldHVybjtcbiAgICBsZXQgdGFyZ2V0ID0gcmVzb2x2ZVRhcmdldChldmVudCk7XG4gICAgaWYgKHRhcmdldCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRhcmdldC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jb250YWlucyh0YXJnZXQpKVxuICAgICAgcmV0dXJuO1xuICAgIGxldCBfY29udGFpbmVycyA9IGZ1bmN0aW9uIHJlc29sdmUoY29udGFpbmVyczIpIHtcbiAgICAgIGlmICh0eXBlb2YgY29udGFpbmVyczIgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZShjb250YWluZXJzMigpKTtcbiAgICAgIH1cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbnRhaW5lcnMyKSkge1xuICAgICAgICByZXR1cm4gY29udGFpbmVyczI7XG4gICAgICB9XG4gICAgICBpZiAoY29udGFpbmVyczIgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRhaW5lcnMyO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtjb250YWluZXJzMl07XG4gICAgfShjb250YWluZXJzKTtcbiAgICBmb3IgKGxldCBjb250YWluZXIgb2YgX2NvbnRhaW5lcnMpIHtcbiAgICAgIGlmIChjb250YWluZXIgPT09IG51bGwpXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgbGV0IGRvbU5vZGUgPSBjb250YWluZXIgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCA/IGNvbnRhaW5lciA6IGRvbShjb250YWluZXIpO1xuICAgICAgaWYgKGRvbU5vZGUgPT0gbnVsbCA/IHZvaWQgMCA6IGRvbU5vZGUuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghaXNGb2N1c2FibGVFbGVtZW50KHRhcmdldCwgMSAvKiBMb29zZSAqLykgJiYgdGFyZ2V0LnRhYkluZGV4ICE9PSAtMSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgcmV0dXJuIGNiKGV2ZW50LCB0YXJnZXQpO1xuICB9XG4gIHVzZVdpbmRvd0V2ZW50KFwiY2xpY2tcIiwgKGV2ZW50KSA9PiBoYW5kbGVPdXRzaWRlQ2xpY2soZXZlbnQsIChldmVudDIpID0+IGV2ZW50Mi50YXJnZXQpLCB0cnVlKTtcbiAgdXNlV2luZG93RXZlbnQoXCJibHVyXCIsIChldmVudCkgPT4gaGFuZGxlT3V0c2lkZUNsaWNrKGV2ZW50LCAoKSA9PiB3aW5kb3cuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxJRnJhbWVFbGVtZW50ID8gd2luZG93LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgOiBudWxsKSwgdHJ1ZSk7XG59XG5cbi8vIHNyYy9pbnRlcm5hbC9oaWRkZW4udHNcbnZhciBpbXBvcnRfdnVlNyA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgSGlkZGVuID0gKDAsIGltcG9ydF92dWU3LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkhpZGRlblwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfSxcbiAgICBmZWF0dXJlczogeyB0eXBlOiBOdW1iZXIsIGRlZmF1bHQ6IDEgLyogTm9uZSAqLyB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IHNsb3RzLCBhdHRycyB9KSB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB7IGZlYXR1cmVzLCAuLi50aGVpclByb3BzIH0gPSBwcm9wcztcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgXCJhcmlhLWhpZGRlblwiOiAoZmVhdHVyZXMgJiAyIC8qIEZvY3VzYWJsZSAqLykgPT09IDIgLyogRm9jdXNhYmxlICovID8gdHJ1ZSA6IHZvaWQgMCxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICAgIHdpZHRoOiAxLFxuICAgICAgICAgIGhlaWdodDogMSxcbiAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgIG1hcmdpbjogLTEsXG4gICAgICAgICAgb3ZlcmZsb3c6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgY2xpcDogXCJyZWN0KDAsIDAsIDAsIDApXCIsXG4gICAgICAgICAgd2hpdGVTcGFjZTogXCJub3dyYXBcIixcbiAgICAgICAgICBib3JkZXJXaWR0aDogXCIwXCIsXG4gICAgICAgICAgLi4uKGZlYXR1cmVzICYgNCAvKiBIaWRkZW4gKi8pID09PSA0IC8qIEhpZGRlbiAqLyAmJiAhKChmZWF0dXJlcyAmIDIgLyogRm9jdXNhYmxlICovKSA9PT0gMiAvKiBGb2N1c2FibGUgKi8pICYmIHsgZGlzcGxheTogXCJub25lXCIgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBzbG90OiB7fSxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIkhpZGRlblwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gc3JjL3V0aWxzL2Zvcm0udHNcbmZ1bmN0aW9uIG9iamVjdFRvRm9ybUVudHJpZXMoc291cmNlID0ge30sIHBhcmVudEtleSA9IG51bGwsIGVudHJpZXMgPSBbXSkge1xuICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoc291cmNlKSkge1xuICAgIGFwcGVuZChlbnRyaWVzLCBjb21wb3NlS2V5KHBhcmVudEtleSwga2V5KSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiBlbnRyaWVzO1xufVxuZnVuY3Rpb24gY29tcG9zZUtleShwYXJlbnQsIGtleSkge1xuICByZXR1cm4gcGFyZW50ID8gcGFyZW50ICsgXCJbXCIgKyBrZXkgKyBcIl1cIiA6IGtleTtcbn1cbmZ1bmN0aW9uIGFwcGVuZChlbnRyaWVzLCBrZXksIHZhbHVlKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIGZvciAobGV0IFtzdWJrZXksIHN1YnZhbHVlXSBvZiB2YWx1ZS5lbnRyaWVzKCkpIHtcbiAgICAgIGFwcGVuZChlbnRyaWVzLCBjb21wb3NlS2V5KGtleSwgc3Via2V5LnRvU3RyaW5nKCkpLCBzdWJ2YWx1ZSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGVudHJpZXMucHVzaChba2V5LCB2YWx1ZS50b0lTT1N0cmluZygpXSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIikge1xuICAgIGVudHJpZXMucHVzaChba2V5LCB2YWx1ZSA/IFwiMVwiIDogXCIwXCJdKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICBlbnRyaWVzLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICBlbnRyaWVzLnB1c2goW2tleSwgYCR7dmFsdWV9YF0pO1xuICB9IGVsc2UgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB2b2lkIDApIHtcbiAgICBlbnRyaWVzLnB1c2goW2tleSwgXCJcIl0pO1xuICB9IGVsc2Uge1xuICAgIG9iamVjdFRvRm9ybUVudHJpZXModmFsdWUsIGtleSwgZW50cmllcyk7XG4gIH1cbn1cbmZ1bmN0aW9uIGF0dGVtcHRTdWJtaXQoZWxlbWVudCkge1xuICB2YXIgX2E7XG4gIGxldCBmb3JtID0gKF9hID0gZWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogZWxlbWVudC5mb3JtKSAhPSBudWxsID8gX2EgOiBlbGVtZW50LmNsb3Nlc3QoXCJmb3JtXCIpO1xuICBpZiAoIWZvcm0pXG4gICAgcmV0dXJuO1xuICBmb3IgKGxldCBlbGVtZW50MiBvZiBmb3JtLmVsZW1lbnRzKSB7XG4gICAgaWYgKGVsZW1lbnQyLnRhZ05hbWUgPT09IFwiSU5QVVRcIiAmJiBlbGVtZW50Mi50eXBlID09PSBcInN1Ym1pdFwiIHx8IGVsZW1lbnQyLnRhZ05hbWUgPT09IFwiQlVUVE9OXCIgJiYgZWxlbWVudDIudHlwZSA9PT0gXCJzdWJtaXRcIiB8fCBlbGVtZW50Mi5ub2RlTmFtZSA9PT0gXCJJTlBVVFwiICYmIGVsZW1lbnQyLnR5cGUgPT09IFwiaW1hZ2VcIikge1xuICAgICAgZWxlbWVudDIuY2xpY2soKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbn1cblxuLy8gc3JjL2NvbXBvbmVudHMvY29tYm9ib3gvY29tYm9ib3gudHNcbnZhciBDb21ib2JveENvbnRleHQgPSBTeW1ib2woXCJDb21ib2JveENvbnRleHRcIik7XG5mdW5jdGlvbiB1c2VDb21ib2JveENvbnRleHQoY29tcG9uZW50KSB7XG4gIGxldCBjb250ZXh0ID0gKDAsIGltcG9ydF92dWU4LmluamVjdCkoQ29tYm9ib3hDb250ZXh0LCBudWxsKTtcbiAgaWYgKGNvbnRleHQgPT09IG51bGwpIHtcbiAgICBsZXQgZXJyID0gbmV3IEVycm9yKGA8JHtjb21wb25lbnR9IC8+IGlzIG1pc3NpbmcgYSBwYXJlbnQgPENvbWJvYm94IC8+IGNvbXBvbmVudC5gKTtcbiAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpXG4gICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnIsIHVzZUNvbWJvYm94Q29udGV4dCk7XG4gICAgdGhyb3cgZXJyO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxudmFyIENvbWJvYm94ID0gKDAsIGltcG9ydF92dWU4LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkNvbWJvYm94XCIsXG4gIGVtaXRzOiB7IFwidXBkYXRlOm1vZGVsVmFsdWVcIjogKF92YWx1ZSkgPT4gdHJ1ZSB9LFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwidGVtcGxhdGVcIiB9LFxuICAgIGRpc2FibGVkOiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICBtb2RlbFZhbHVlOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZywgTnVtYmVyLCBCb29sZWFuXSB9LFxuICAgIG5hbWU6IHsgdHlwZTogU3RyaW5nIH0sXG4gICAgbnVsbGFibGU6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICBtdWx0aXBsZTogeyB0eXBlOiBbQm9vbGVhbl0sIGRlZmF1bHQ6IGZhbHNlIH1cbiAgfSxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgc2V0dXAocHJvcHMsIHsgc2xvdHMsIGF0dHJzLCBlbWl0IH0pIHtcbiAgICBsZXQgY29tYm9ib3hTdGF0ZSA9ICgwLCBpbXBvcnRfdnVlOC5yZWYpKDEgLyogQ2xvc2VkICovKTtcbiAgICBsZXQgbGFiZWxSZWYgPSAoMCwgaW1wb3J0X3Z1ZTgucmVmKShudWxsKTtcbiAgICBsZXQgaW5wdXRSZWYgPSAoMCwgaW1wb3J0X3Z1ZTgucmVmKShudWxsKTtcbiAgICBsZXQgYnV0dG9uUmVmID0gKDAsIGltcG9ydF92dWU4LnJlZikobnVsbCk7XG4gICAgbGV0IG9wdGlvbnNSZWYgPSAoMCwgaW1wb3J0X3Z1ZTgucmVmKShudWxsKTtcbiAgICBsZXQgb3B0aW9uc1Byb3BzUmVmID0gKDAsIGltcG9ydF92dWU4LnJlZikoe1xuICAgICAgc3RhdGljOiBmYWxzZSxcbiAgICAgIGhvbGQ6IGZhbHNlXG4gICAgfSk7XG4gICAgbGV0IG9wdGlvbnMgPSAoMCwgaW1wb3J0X3Z1ZTgucmVmKShbXSk7XG4gICAgbGV0IGFjdGl2ZU9wdGlvbkluZGV4ID0gKDAsIGltcG9ydF92dWU4LnJlZikobnVsbCk7XG4gICAgbGV0IGFjdGl2YXRpb25UcmlnZ2VyID0gKDAsIGltcG9ydF92dWU4LnJlZikoMSAvKiBPdGhlciAqLyk7XG4gICAgbGV0IGRlZmF1bHRUb0ZpcnN0T3B0aW9uID0gKDAsIGltcG9ydF92dWU4LnJlZikoZmFsc2UpO1xuICAgIGZ1bmN0aW9uIGFkanVzdE9yZGVyZWRTdGF0ZShhZGp1c3RtZW50ID0gKGkpID0+IGkpIHtcbiAgICAgIGxldCBjdXJyZW50QWN0aXZlT3B0aW9uID0gYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgIT09IG51bGwgPyBvcHRpb25zLnZhbHVlW2FjdGl2ZU9wdGlvbkluZGV4LnZhbHVlXSA6IG51bGw7XG4gICAgICBsZXQgc29ydGVkT3B0aW9ucyA9IHNvcnRCeURvbU5vZGUoYWRqdXN0bWVudChvcHRpb25zLnZhbHVlLnNsaWNlKCkpLCAob3B0aW9uKSA9PiBkb20ob3B0aW9uLmRhdGFSZWYuZG9tUmVmKSk7XG4gICAgICBsZXQgYWRqdXN0ZWRBY3RpdmVPcHRpb25JbmRleCA9IGN1cnJlbnRBY3RpdmVPcHRpb24gPyBzb3J0ZWRPcHRpb25zLmluZGV4T2YoY3VycmVudEFjdGl2ZU9wdGlvbikgOiBudWxsO1xuICAgICAgaWYgKGFkanVzdGVkQWN0aXZlT3B0aW9uSW5kZXggPT09IC0xKSB7XG4gICAgICAgIGFkanVzdGVkQWN0aXZlT3B0aW9uSW5kZXggPSBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3B0aW9uczogc29ydGVkT3B0aW9ucyxcbiAgICAgICAgYWN0aXZlT3B0aW9uSW5kZXg6IGFkanVzdGVkQWN0aXZlT3B0aW9uSW5kZXhcbiAgICAgIH07XG4gICAgfVxuICAgIGxldCB2YWx1ZSA9ICgwLCBpbXBvcnRfdnVlOC5jb21wdXRlZCkoKCkgPT4gcHJvcHMubW9kZWxWYWx1ZSk7XG4gICAgbGV0IG1vZGUgPSAoMCwgaW1wb3J0X3Z1ZTguY29tcHV0ZWQpKCgpID0+IHByb3BzLm11bHRpcGxlID8gMSAvKiBNdWx0aSAqLyA6IDAgLyogU2luZ2xlICovKTtcbiAgICBsZXQgbnVsbGFibGUgPSAoMCwgaW1wb3J0X3Z1ZTguY29tcHV0ZWQpKCgpID0+IHByb3BzLm51bGxhYmxlKTtcbiAgICBsZXQgYXBpID0ge1xuICAgICAgY29tYm9ib3hTdGF0ZSxcbiAgICAgIHZhbHVlLFxuICAgICAgbW9kZSxcbiAgICAgIGNvbXBhcmUoYSwgeikge1xuICAgICAgICByZXR1cm4gYSA9PT0gejtcbiAgICAgIH0sXG4gICAgICBudWxsYWJsZSxcbiAgICAgIGlucHV0UmVmLFxuICAgICAgbGFiZWxSZWYsXG4gICAgICBidXR0b25SZWYsXG4gICAgICBvcHRpb25zUmVmLFxuICAgICAgZGlzYWJsZWQ6ICgwLCBpbXBvcnRfdnVlOC5jb21wdXRlZCkoKCkgPT4gcHJvcHMuZGlzYWJsZWQpLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIGNoYW5nZSh2YWx1ZTIpIHtcbiAgICAgICAgZW1pdChcInVwZGF0ZTptb2RlbFZhbHVlXCIsIHZhbHVlMik7XG4gICAgICB9LFxuICAgICAgYWN0aXZlT3B0aW9uSW5kZXg6ICgwLCBpbXBvcnRfdnVlOC5jb21wdXRlZCkoKCkgPT4ge1xuICAgICAgICBpZiAoZGVmYXVsdFRvRmlyc3RPcHRpb24udmFsdWUgJiYgYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgPT09IG51bGwgJiYgb3B0aW9ucy52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgbGV0IGxvY2FsQWN0aXZlT3B0aW9uSW5kZXggPSBvcHRpb25zLnZhbHVlLmZpbmRJbmRleCgob3B0aW9uKSA9PiAhb3B0aW9uLmRhdGFSZWYuZGlzYWJsZWQpO1xuICAgICAgICAgIGlmIChsb2NhbEFjdGl2ZU9wdGlvbkluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIGxvY2FsQWN0aXZlT3B0aW9uSW5kZXg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY3RpdmVPcHRpb25JbmRleC52YWx1ZTtcbiAgICAgIH0pLFxuICAgICAgYWN0aXZhdGlvblRyaWdnZXIsXG4gICAgICBpbnB1dFByb3BzUmVmOiAoMCwgaW1wb3J0X3Z1ZTgucmVmKSh7IGRpc3BsYXlWYWx1ZTogdm9pZCAwIH0pLFxuICAgICAgb3B0aW9uc1Byb3BzUmVmLFxuICAgICAgY2xvc2VDb21ib2JveCgpIHtcbiAgICAgICAgZGVmYXVsdFRvRmlyc3RPcHRpb24udmFsdWUgPSBmYWxzZTtcbiAgICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKGNvbWJvYm94U3RhdGUudmFsdWUgPT09IDEgLyogQ2xvc2VkICovKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29tYm9ib3hTdGF0ZS52YWx1ZSA9IDEgLyogQ2xvc2VkICovO1xuICAgICAgICBhY3RpdmVPcHRpb25JbmRleC52YWx1ZSA9IG51bGw7XG4gICAgICB9LFxuICAgICAgb3BlbkNvbWJvYm94KCkge1xuICAgICAgICBkZWZhdWx0VG9GaXJzdE9wdGlvbi52YWx1ZSA9IHRydWU7XG4gICAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChjb21ib2JveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8pXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBsZXQgb3B0aW9uSWR4ID0gb3B0aW9ucy52YWx1ZS5maW5kSW5kZXgoKG9wdGlvbikgPT4ge1xuICAgICAgICAgIGxldCBvcHRpb25WYWx1ZSA9ICgwLCBpbXBvcnRfdnVlOC50b1Jhdykob3B0aW9uLmRhdGFSZWYudmFsdWUpO1xuICAgICAgICAgIGxldCBzZWxlY3RlZCA9IG1hdGNoKG1vZGUudmFsdWUsIHtcbiAgICAgICAgICAgIFswIC8qIFNpbmdsZSAqL106ICgpID0+IGFwaS5jb21wYXJlKCgwLCBpbXBvcnRfdnVlOC50b1JhdykoYXBpLnZhbHVlLnZhbHVlKSwgKDAsIGltcG9ydF92dWU4LnRvUmF3KShvcHRpb25WYWx1ZSkpLFxuICAgICAgICAgICAgWzEgLyogTXVsdGkgKi9dOiAoKSA9PiAoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKGFwaS52YWx1ZS52YWx1ZSkuc29tZSgodmFsdWUyKSA9PiBhcGkuY29tcGFyZSgoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKHZhbHVlMiksICgwLCBpbXBvcnRfdnVlOC50b1Jhdykob3B0aW9uVmFsdWUpKSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gc2VsZWN0ZWQ7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAob3B0aW9uSWR4ICE9PSAtMSkge1xuICAgICAgICAgIGFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlID0gb3B0aW9uSWR4O1xuICAgICAgICB9XG4gICAgICAgIGNvbWJvYm94U3RhdGUudmFsdWUgPSAwIC8qIE9wZW4gKi87XG4gICAgICB9LFxuICAgICAgZ29Ub09wdGlvbihmb2N1cywgaWQyLCB0cmlnZ2VyKSB7XG4gICAgICAgIGRlZmF1bHRUb0ZpcnN0T3B0aW9uLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChvcHRpb25zUmVmLnZhbHVlICYmICFvcHRpb25zUHJvcHNSZWYudmFsdWUuc3RhdGljICYmIGNvbWJvYm94U3RhdGUudmFsdWUgPT09IDEgLyogQ2xvc2VkICovKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBhZGp1c3RlZFN0YXRlID0gYWRqdXN0T3JkZXJlZFN0YXRlKCk7XG4gICAgICAgIGlmIChhZGp1c3RlZFN0YXRlLmFjdGl2ZU9wdGlvbkluZGV4ID09PSBudWxsKSB7XG4gICAgICAgICAgbGV0IGxvY2FsQWN0aXZlT3B0aW9uSW5kZXggPSBhZGp1c3RlZFN0YXRlLm9wdGlvbnMuZmluZEluZGV4KChvcHRpb24pID0+ICFvcHRpb24uZGF0YVJlZi5kaXNhYmxlZCk7XG4gICAgICAgICAgaWYgKGxvY2FsQWN0aXZlT3B0aW9uSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBhZGp1c3RlZFN0YXRlLmFjdGl2ZU9wdGlvbkluZGV4ID0gbG9jYWxBY3RpdmVPcHRpb25JbmRleDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG5leHRBY3RpdmVPcHRpb25JbmRleCA9IGNhbGN1bGF0ZUFjdGl2ZUluZGV4KGZvY3VzID09PSA0IC8qIFNwZWNpZmljICovID8geyBmb2N1czogNCAvKiBTcGVjaWZpYyAqLywgaWQ6IGlkMiB9IDogeyBmb2N1cyB9LCB7XG4gICAgICAgICAgcmVzb2x2ZUl0ZW1zOiAoKSA9PiBhZGp1c3RlZFN0YXRlLm9wdGlvbnMsXG4gICAgICAgICAgcmVzb2x2ZUFjdGl2ZUluZGV4OiAoKSA9PiBhZGp1c3RlZFN0YXRlLmFjdGl2ZU9wdGlvbkluZGV4LFxuICAgICAgICAgIHJlc29sdmVJZDogKG9wdGlvbikgPT4gb3B0aW9uLmlkLFxuICAgICAgICAgIHJlc29sdmVEaXNhYmxlZDogKG9wdGlvbikgPT4gb3B0aW9uLmRhdGFSZWYuZGlzYWJsZWRcbiAgICAgICAgfSk7XG4gICAgICAgIGFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlID0gbmV4dEFjdGl2ZU9wdGlvbkluZGV4O1xuICAgICAgICBhY3RpdmF0aW9uVHJpZ2dlci52YWx1ZSA9IHRyaWdnZXIgIT0gbnVsbCA/IHRyaWdnZXIgOiAxIC8qIE90aGVyICovO1xuICAgICAgICBvcHRpb25zLnZhbHVlID0gYWRqdXN0ZWRTdGF0ZS5vcHRpb25zO1xuICAgICAgfSxcbiAgICAgIHN5bmNJbnB1dFZhbHVlKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGxldCB2YWx1ZTIgPSBhcGkudmFsdWUudmFsdWU7XG4gICAgICAgIGlmICghZG9tKGFwaS5pbnB1dFJlZikpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBsZXQgZGlzcGxheVZhbHVlID0gYXBpLmlucHV0UHJvcHNSZWYudmFsdWUuZGlzcGxheVZhbHVlO1xuICAgICAgICBpZiAodHlwZW9mIGRpc3BsYXlWYWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgYXBpLmlucHV0UmVmLnZhbHVlLnZhbHVlID0gKF9hID0gZGlzcGxheVZhbHVlKHZhbHVlMikpICE9IG51bGwgPyBfYSA6IFwiXCI7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlMiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIGFwaS5pbnB1dFJlZi52YWx1ZS52YWx1ZSA9IHZhbHVlMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhcGkuaW5wdXRSZWYudmFsdWUudmFsdWUgPSBcIlwiO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc2VsZWN0T3B0aW9uKGlkMikge1xuICAgICAgICBsZXQgb3B0aW9uID0gb3B0aW9ucy52YWx1ZS5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBpZDIpO1xuICAgICAgICBpZiAoIW9wdGlvbilcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCB7IGRhdGFSZWYgfSA9IG9wdGlvbjtcbiAgICAgICAgZW1pdChcInVwZGF0ZTptb2RlbFZhbHVlXCIsIG1hdGNoKG1vZGUudmFsdWUsIHtcbiAgICAgICAgICBbMCAvKiBTaW5nbGUgKi9dOiAoKSA9PiBkYXRhUmVmLnZhbHVlLFxuICAgICAgICAgIFsxIC8qIE11bHRpICovXTogKCkgPT4ge1xuICAgICAgICAgICAgbGV0IGNvcHkgPSAoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKGFwaS52YWx1ZS52YWx1ZSkuc2xpY2UoKTtcbiAgICAgICAgICAgIGxldCByYXcgPSAoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKGRhdGFSZWYudmFsdWUpO1xuICAgICAgICAgICAgbGV0IGlkeCA9IGNvcHkuaW5kZXhPZihyYXcpO1xuICAgICAgICAgICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgY29weS5wdXNoKHJhdyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb3B5LnNwbGljZShpZHgsIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICAgIGFwaS5zeW5jSW5wdXRWYWx1ZSgpO1xuICAgICAgfSxcbiAgICAgIHNlbGVjdEFjdGl2ZU9wdGlvbigpIHtcbiAgICAgICAgaWYgKGFwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZSA9PT0gbnVsbClcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCB7IGRhdGFSZWYsIGlkOiBpZDIgfSA9IG9wdGlvbnMudmFsdWVbYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlXTtcbiAgICAgICAgZW1pdChcInVwZGF0ZTptb2RlbFZhbHVlXCIsIG1hdGNoKG1vZGUudmFsdWUsIHtcbiAgICAgICAgICBbMCAvKiBTaW5nbGUgKi9dOiAoKSA9PiBkYXRhUmVmLnZhbHVlLFxuICAgICAgICAgIFsxIC8qIE11bHRpICovXTogKCkgPT4ge1xuICAgICAgICAgICAgbGV0IGNvcHkgPSAoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKGFwaS52YWx1ZS52YWx1ZSkuc2xpY2UoKTtcbiAgICAgICAgICAgIGxldCByYXcgPSAoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKGRhdGFSZWYudmFsdWUpO1xuICAgICAgICAgICAgbGV0IGlkeCA9IGNvcHkuaW5kZXhPZihyYXcpO1xuICAgICAgICAgICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgY29weS5wdXNoKHJhdyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb3B5LnNwbGljZShpZHgsIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICAgIGFwaS5zeW5jSW5wdXRWYWx1ZSgpO1xuICAgICAgICBhcGkuZ29Ub09wdGlvbig0IC8qIFNwZWNpZmljICovLCBpZDIpO1xuICAgICAgfSxcbiAgICAgIHJlZ2lzdGVyT3B0aW9uKGlkMiwgZGF0YVJlZikge1xuICAgICAgICBsZXQgb3B0aW9uID0geyBpZDogaWQyLCBkYXRhUmVmIH07XG4gICAgICAgIGxldCBhZGp1c3RlZFN0YXRlID0gYWRqdXN0T3JkZXJlZFN0YXRlKChvcHRpb25zMikgPT4gWy4uLm9wdGlvbnMyLCBvcHRpb25dKTtcbiAgICAgICAgaWYgKGFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgbGV0IG9wdGlvblZhbHVlID0gZGF0YVJlZi52YWx1ZS52YWx1ZTtcbiAgICAgICAgICBsZXQgc2VsZWN0ZWQgPSBtYXRjaChtb2RlLnZhbHVlLCB7XG4gICAgICAgICAgICBbMCAvKiBTaW5nbGUgKi9dOiAoKSA9PiBhcGkuY29tcGFyZSgoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKGFwaS52YWx1ZS52YWx1ZSksICgwLCBpbXBvcnRfdnVlOC50b1Jhdykob3B0aW9uVmFsdWUpKSxcbiAgICAgICAgICAgIFsxIC8qIE11bHRpICovXTogKCkgPT4gKDAsIGltcG9ydF92dWU4LnRvUmF3KShhcGkudmFsdWUudmFsdWUpLnNvbWUoKHZhbHVlMikgPT4gYXBpLmNvbXBhcmUoKDAsIGltcG9ydF92dWU4LnRvUmF3KSh2YWx1ZTIpLCAoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKG9wdGlvblZhbHVlKSkpXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICBhZGp1c3RlZFN0YXRlLmFjdGl2ZU9wdGlvbkluZGV4ID0gYWRqdXN0ZWRTdGF0ZS5vcHRpb25zLmluZGV4T2Yob3B0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgb3B0aW9ucy52YWx1ZSA9IGFkanVzdGVkU3RhdGUub3B0aW9ucztcbiAgICAgICAgYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgPSBhZGp1c3RlZFN0YXRlLmFjdGl2ZU9wdGlvbkluZGV4O1xuICAgICAgICBhY3RpdmF0aW9uVHJpZ2dlci52YWx1ZSA9IDEgLyogT3RoZXIgKi87XG4gICAgICB9LFxuICAgICAgdW5yZWdpc3Rlck9wdGlvbihpZDIpIHtcbiAgICAgICAgbGV0IGFkanVzdGVkU3RhdGUgPSBhZGp1c3RPcmRlcmVkU3RhdGUoKG9wdGlvbnMyKSA9PiB7XG4gICAgICAgICAgbGV0IGlkeCA9IG9wdGlvbnMyLmZpbmRJbmRleCgoYSkgPT4gYS5pZCA9PT0gaWQyKTtcbiAgICAgICAgICBpZiAoaWR4ICE9PSAtMSlcbiAgICAgICAgICAgIG9wdGlvbnMyLnNwbGljZShpZHgsIDEpO1xuICAgICAgICAgIHJldHVybiBvcHRpb25zMjtcbiAgICAgICAgfSk7XG4gICAgICAgIG9wdGlvbnMudmFsdWUgPSBhZGp1c3RlZFN0YXRlLm9wdGlvbnM7XG4gICAgICAgIGFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlID0gYWRqdXN0ZWRTdGF0ZS5hY3RpdmVPcHRpb25JbmRleDtcbiAgICAgICAgYWN0aXZhdGlvblRyaWdnZXIudmFsdWUgPSAxIC8qIE90aGVyICovO1xuICAgICAgfVxuICAgIH07XG4gICAgdXNlT3V0c2lkZUNsaWNrKFtpbnB1dFJlZiwgYnV0dG9uUmVmLCBvcHRpb25zUmVmXSwgKCkgPT4gYXBpLmNsb3NlQ29tYm9ib3goKSwgKDAsIGltcG9ydF92dWU4LmNvbXB1dGVkKSgoKSA9PiBjb21ib2JveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8pKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTgud2F0Y2gpKFthcGkudmFsdWUsIGFwaS5pbnB1dFJlZl0sICgpID0+IGFwaS5zeW5jSW5wdXRWYWx1ZSgpLCB7XG4gICAgICBpbW1lZGlhdGU6IHRydWVcbiAgICB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTgud2F0Y2gpKGFwaS5jb21ib2JveFN0YXRlLCAoc3RhdGUpID0+IHtcbiAgICAgIGlmIChzdGF0ZSA9PT0gMSAvKiBDbG9zZWQgKi8pIHtcbiAgICAgICAgYXBpLnN5bmNJbnB1dFZhbHVlKCk7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAgaW1tZWRpYXRlOiB0cnVlXG4gICAgfSk7XG4gICAgKDAsIGltcG9ydF92dWU4LnByb3ZpZGUpKENvbWJvYm94Q29udGV4dCwgYXBpKTtcbiAgICB1c2VPcGVuQ2xvc2VkUHJvdmlkZXIoKDAsIGltcG9ydF92dWU4LmNvbXB1dGVkKSgoKSA9PiBtYXRjaChjb21ib2JveFN0YXRlLnZhbHVlLCB7XG4gICAgICBbMCAvKiBPcGVuICovXTogMCAvKiBPcGVuICovLFxuICAgICAgWzEgLyogQ2xvc2VkICovXTogMSAvKiBDbG9zZWQgKi9cbiAgICB9KSkpO1xuICAgIGxldCBhY3RpdmVPcHRpb24gPSAoMCwgaW1wb3J0X3Z1ZTguY29tcHV0ZWQpKCgpID0+IGFwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZSA9PT0gbnVsbCA/IG51bGwgOiBvcHRpb25zLnZhbHVlW2FwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZV0uZGF0YVJlZi52YWx1ZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB7IG5hbWUsIG1vZGVsVmFsdWUsIGRpc2FibGVkLCAuLi50aGVpclByb3BzIH0gPSBwcm9wcztcbiAgICAgIGxldCBzbG90ID0ge1xuICAgICAgICBvcGVuOiBjb21ib2JveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8sXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICBhY3RpdmVJbmRleDogYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlLFxuICAgICAgICBhY3RpdmVPcHRpb246IGFjdGl2ZU9wdGlvbi52YWx1ZVxuICAgICAgfTtcbiAgICAgIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTguaCkoaW1wb3J0X3Z1ZTguRnJhZ21lbnQsIFtcbiAgICAgICAgLi4ubmFtZSAhPSBudWxsICYmIG1vZGVsVmFsdWUgIT0gbnVsbCA/IG9iamVjdFRvRm9ybUVudHJpZXMoeyBbbmFtZV06IG1vZGVsVmFsdWUgfSkubWFwKChbbmFtZTIsIHZhbHVlMl0pID0+ICgwLCBpbXBvcnRfdnVlOC5oKShIaWRkZW4sIGNvbXBhY3Qoe1xuICAgICAgICAgIGZlYXR1cmVzOiA0IC8qIEhpZGRlbiAqLyxcbiAgICAgICAgICBrZXk6IG5hbWUyLFxuICAgICAgICAgIGFzOiBcImlucHV0XCIsXG4gICAgICAgICAgdHlwZTogXCJoaWRkZW5cIixcbiAgICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgICAgcmVhZE9ubHk6IHRydWUsXG4gICAgICAgICAgbmFtZTogbmFtZTIsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlMlxuICAgICAgICB9KSkpIDogW10sXG4gICAgICAgIHJlbmRlcih7XG4gICAgICAgICAgdGhlaXJQcm9wczoge1xuICAgICAgICAgICAgLi4uYXR0cnMsXG4gICAgICAgICAgICAuLi5vbWl0KHRoZWlyUHJvcHMsIFtcIm51bGxhYmxlXCIsIFwibXVsdGlwbGVcIiwgXCJvblVwZGF0ZTptb2RlbFZhbHVlXCIsIFwiYnlcIl0pXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvdXJQcm9wczoge30sXG4gICAgICAgICAgc2xvdCxcbiAgICAgICAgICBzbG90cyxcbiAgICAgICAgICBhdHRycyxcbiAgICAgICAgICBuYW1lOiBcIkNvbWJvYm94XCJcbiAgICAgICAgfSlcbiAgICAgIF0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIENvbWJvYm94TGFiZWwgPSAoMCwgaW1wb3J0X3Z1ZTguZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiQ29tYm9ib3hMYWJlbFwiLFxuICBwcm9wczogeyBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImxhYmVsXCIgfSB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMgfSkge1xuICAgIGxldCBhcGkgPSB1c2VDb21ib2JveENvbnRleHQoXCJDb21ib2JveExhYmVsXCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1jb21ib2JveC1sYWJlbC0ke3VzZUlkKCl9YDtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljaygpIHtcbiAgICAgIHZhciBfYTtcbiAgICAgIChfYSA9IGRvbShhcGkuaW5wdXRSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHNsb3QgPSB7XG4gICAgICAgIG9wZW46IGFwaS5jb21ib2JveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8sXG4gICAgICAgIGRpc2FibGVkOiBhcGkuZGlzYWJsZWQudmFsdWVcbiAgICAgIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7IGlkOiBpZDIsIHJlZjogYXBpLmxhYmVsUmVmLCBvbkNsaWNrOiBoYW5kbGVDbGljayB9O1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBwcm9wcztcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIkNvbWJvYm94TGFiZWxcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgQ29tYm9ib3hCdXR0b24gPSAoMCwgaW1wb3J0X3Z1ZTguZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiQ29tYm9ib3hCdXR0b25cIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImJ1dHRvblwiIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSB1c2VDb21ib2JveENvbnRleHQoXCJDb21ib2JveEJ1dHRvblwiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktY29tYm9ib3gtYnV0dG9uLSR7dXNlSWQoKX1gO1xuICAgIGV4cG9zZSh7IGVsOiBhcGkuYnV0dG9uUmVmLCAkZWw6IGFwaS5idXR0b25SZWYgfSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZlbnQpIHtcbiAgICAgIGlmIChhcGkuZGlzYWJsZWQudmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChhcGkuY29tYm9ib3hTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovKSB7XG4gICAgICAgIGFwaS5jbG9zZUNvbWJvYm94KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBhcGkub3BlbkNvbWJvYm94KCk7XG4gICAgICB9XG4gICAgICAoMCwgaW1wb3J0X3Z1ZTgubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gKF9hID0gZG9tKGFwaS5pbnB1dFJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5ZG93bihldmVudCkge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSBcIkFycm93RG93blwiIC8qIEFycm93RG93biAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGlmIChhcGkuY29tYm9ib3hTdGF0ZS52YWx1ZSA9PT0gMSAvKiBDbG9zZWQgKi8pIHtcbiAgICAgICAgICAgIGFwaS5vcGVuQ29tYm9ib3goKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgKDAsIGltcG9ydF92dWU4Lm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICByZXR1cm4gKF9hID0gYXBpLmlucHV0UmVmLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSBcIkFycm93VXBcIiAvKiBBcnJvd1VwICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgaWYgKGFwaS5jb21ib2JveFN0YXRlLnZhbHVlID09PSAxIC8qIENsb3NlZCAqLykge1xuICAgICAgICAgICAgYXBpLm9wZW5Db21ib2JveCgpO1xuICAgICAgICAgICAgKDAsIGltcG9ydF92dWU4Lm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghYXBpLnZhbHVlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYXBpLmdvVG9PcHRpb24oMyAvKiBMYXN0ICovKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgICgwLCBpbXBvcnRfdnVlOC5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgcmV0dXJuIChfYSA9IGFwaS5pbnB1dFJlZi52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNhc2UgXCJFc2NhcGVcIiAvKiBFc2NhcGUgKi86XG4gICAgICAgICAgaWYgKGFwaS5jb21ib2JveFN0YXRlLnZhbHVlICE9PSAwIC8qIE9wZW4gKi8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBpZiAoYXBpLm9wdGlvbnNSZWYudmFsdWUgJiYgIWFwaS5vcHRpb25zUHJvcHNSZWYudmFsdWUuc3RhdGljKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXBpLmNsb3NlQ29tYm9ib3goKTtcbiAgICAgICAgICAoMCwgaW1wb3J0X3Z1ZTgubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHJldHVybiAoX2EgPSBhcGkuaW5wdXRSZWYudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgdHlwZSA9IHVzZVJlc29sdmVCdXR0b25UeXBlKCgwLCBpbXBvcnRfdnVlOC5jb21wdXRlZCkoKCkgPT4gKHsgYXM6IHByb3BzLmFzLCB0eXBlOiBhdHRycy50eXBlIH0pKSwgYXBpLmJ1dHRvblJlZik7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHZhciBfYSwgX2I7XG4gICAgICBsZXQgc2xvdCA9IHtcbiAgICAgICAgb3BlbjogYXBpLmNvbWJvYm94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyxcbiAgICAgICAgZGlzYWJsZWQ6IGFwaS5kaXNhYmxlZC52YWx1ZVxuICAgICAgfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgcmVmOiBhcGkuYnV0dG9uUmVmLFxuICAgICAgICBpZDogaWQyLFxuICAgICAgICB0eXBlOiB0eXBlLnZhbHVlLFxuICAgICAgICB0YWJpbmRleDogXCItMVwiLFxuICAgICAgICBcImFyaWEtaGFzcG9wdXBcIjogdHJ1ZSxcbiAgICAgICAgXCJhcmlhLWNvbnRyb2xzXCI6IChfYSA9IGRvbShhcGkub3B0aW9uc1JlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5pZCxcbiAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IGFwaS5kaXNhYmxlZC52YWx1ZSA/IHZvaWQgMCA6IGFwaS5jb21ib2JveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8sXG4gICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGFwaS5sYWJlbFJlZi52YWx1ZSA/IFsoX2IgPSBkb20oYXBpLmxhYmVsUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmlkLCBpZDJdLmpvaW4oXCIgXCIpIDogdm9pZCAwLFxuICAgICAgICBkaXNhYmxlZDogYXBpLmRpc2FibGVkLnZhbHVlID09PSB0cnVlID8gdHJ1ZSA6IHZvaWQgMCxcbiAgICAgICAgb25LZXlkb3duOiBoYW5kbGVLZXlkb3duLFxuICAgICAgICBvbkNsaWNrOiBoYW5kbGVDbGlja1xuICAgICAgfTtcbiAgICAgIGxldCB0aGVpclByb3BzID0gcHJvcHM7XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJDb21ib2JveEJ1dHRvblwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBDb21ib2JveElucHV0ID0gKDAsIGltcG9ydF92dWU4LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkNvbWJvYm94SW5wdXRcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImlucHV0XCIgfSxcbiAgICBzdGF0aWM6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICB1bm1vdW50OiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IHRydWUgfSxcbiAgICBkaXNwbGF5VmFsdWU6IHsgdHlwZTogRnVuY3Rpb24gfVxuICB9LFxuICBlbWl0czoge1xuICAgIGNoYW5nZTogKF92YWx1ZSkgPT4gdHJ1ZVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBlbWl0LCBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZUNvbWJvYm94Q29udGV4dChcIkNvbWJvYm94SW5wdXRcIik7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLWNvbWJvYm94LWlucHV0LSR7dXNlSWQoKX1gO1xuICAgIGFwaS5pbnB1dFByb3BzUmVmID0gKDAsIGltcG9ydF92dWU4LmNvbXB1dGVkKSgoKSA9PiBwcm9wcyk7XG4gICAgZXhwb3NlKHsgZWw6IGFwaS5pbnB1dFJlZiwgJGVsOiBhcGkuaW5wdXRSZWYgfSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5RG93bihldmVudCkge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSBcIkJhY2tzcGFjZVwiIC8qIEJhY2tzcGFjZSAqLzpcbiAgICAgICAgY2FzZSBcIkRlbGV0ZVwiIC8qIERlbGV0ZSAqLzpcbiAgICAgICAgICBpZiAoYXBpLm1vZGUudmFsdWUgIT09IDAgLyogU2luZ2xlICovKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIGlmICghYXBpLm51bGxhYmxlLnZhbHVlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIGxldCBpbnB1dCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgIGlmIChpbnB1dC52YWx1ZSA9PT0gXCJcIikge1xuICAgICAgICAgICAgICBhcGkuY2hhbmdlKG51bGwpO1xuICAgICAgICAgICAgICBsZXQgb3B0aW9ucyA9IGRvbShhcGkub3B0aW9uc1JlZik7XG4gICAgICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5zY3JvbGxUb3AgPSAwO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGFwaS5nb1RvT3B0aW9uKDUgLyogTm90aGluZyAqLyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJFbnRlclwiIC8qIEVudGVyICovOlxuICAgICAgICAgIGlmIChhcGkuY29tYm9ib3hTdGF0ZS52YWx1ZSAhPT0gMCAvKiBPcGVuICovKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgaWYgKGFwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgYXBpLmNsb3NlQ29tYm9ib3goKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXBpLnNlbGVjdEFjdGl2ZU9wdGlvbigpO1xuICAgICAgICAgIGlmIChhcGkubW9kZS52YWx1ZSA9PT0gMCAvKiBTaW5nbGUgKi8pIHtcbiAgICAgICAgICAgIGFwaS5jbG9zZUNvbWJvYm94KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiQXJyb3dEb3duXCIgLyogQXJyb3dEb3duICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuIG1hdGNoKGFwaS5jb21ib2JveFN0YXRlLnZhbHVlLCB7XG4gICAgICAgICAgICBbMCAvKiBPcGVuICovXTogKCkgPT4gYXBpLmdvVG9PcHRpb24oMiAvKiBOZXh0ICovKSxcbiAgICAgICAgICAgIFsxIC8qIENsb3NlZCAqL106ICgpID0+IGFwaS5vcGVuQ29tYm9ib3goKVxuICAgICAgICAgIH0pO1xuICAgICAgICBjYXNlIFwiQXJyb3dVcFwiIC8qIEFycm93VXAgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICByZXR1cm4gbWF0Y2goYXBpLmNvbWJvYm94U3RhdGUudmFsdWUsIHtcbiAgICAgICAgICAgIFswIC8qIE9wZW4gKi9dOiAoKSA9PiBhcGkuZ29Ub09wdGlvbigxIC8qIFByZXZpb3VzICovKSxcbiAgICAgICAgICAgIFsxIC8qIENsb3NlZCAqL106ICgpID0+IHtcbiAgICAgICAgICAgICAgYXBpLm9wZW5Db21ib2JveCgpO1xuICAgICAgICAgICAgICAoMCwgaW1wb3J0X3Z1ZTgubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWFwaS52YWx1ZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgYXBpLmdvVG9PcHRpb24oMyAvKiBMYXN0ICovKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICBjYXNlIFwiSG9tZVwiIC8qIEhvbWUgKi86XG4gICAgICAgIGNhc2UgXCJQYWdlVXBcIiAvKiBQYWdlVXAgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICByZXR1cm4gYXBpLmdvVG9PcHRpb24oMCAvKiBGaXJzdCAqLyk7XG4gICAgICAgIGNhc2UgXCJFbmRcIiAvKiBFbmQgKi86XG4gICAgICAgIGNhc2UgXCJQYWdlRG93blwiIC8qIFBhZ2VEb3duICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuIGFwaS5nb1RvT3B0aW9uKDMgLyogTGFzdCAqLyk7XG4gICAgICAgIGNhc2UgXCJFc2NhcGVcIiAvKiBFc2NhcGUgKi86XG4gICAgICAgICAgaWYgKGFwaS5jb21ib2JveFN0YXRlLnZhbHVlICE9PSAwIC8qIE9wZW4gKi8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBpZiAoYXBpLm9wdGlvbnNSZWYudmFsdWUgJiYgIWFwaS5vcHRpb25zUHJvcHNSZWYudmFsdWUuc3RhdGljKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXBpLmNsb3NlQ29tYm9ib3goKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIlRhYlwiIC8qIFRhYiAqLzpcbiAgICAgICAgICBpZiAoYXBpLmNvbWJvYm94U3RhdGUudmFsdWUgIT09IDAgLyogT3BlbiAqLylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBhcGkuc2VsZWN0QWN0aXZlT3B0aW9uKCk7XG4gICAgICAgICAgYXBpLmNsb3NlQ29tYm9ib3goKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2hhbmdlKGV2ZW50KSB7XG4gICAgICBlbWl0KFwiY2hhbmdlXCIsIGV2ZW50KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlSW5wdXQoZXZlbnQpIHtcbiAgICAgIGFwaS5vcGVuQ29tYm9ib3goKTtcbiAgICAgIGVtaXQoXCJjaGFuZ2VcIiwgZXZlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2Y7XG4gICAgICBsZXQgc2xvdCA9IHsgb3BlbjogYXBpLmNvbWJvYm94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyB9O1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICBcImFyaWEtY29udHJvbHNcIjogKF9hID0gYXBpLm9wdGlvbnNSZWYudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5pZCxcbiAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IGFwaS5kaXNhYmxlZC52YWx1ZSA/IHZvaWQgMCA6IGFwaS5jb21ib2JveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8sXG4gICAgICAgIFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCI6IGFwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZSA9PT0gbnVsbCA/IHZvaWQgMCA6IChfYiA9IGFwaS5vcHRpb25zLnZhbHVlW2FwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZV0pID09IG51bGwgPyB2b2lkIDAgOiBfYi5pZCxcbiAgICAgICAgXCJhcmlhLW11bHRpc2VsZWN0YWJsZVwiOiBhcGkubW9kZS52YWx1ZSA9PT0gMSAvKiBNdWx0aSAqLyA/IHRydWUgOiB2b2lkIDAsXG4gICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IChfZSA9IChfYyA9IGRvbShhcGkubGFiZWxSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2MuaWQpICE9IG51bGwgPyBfZSA6IChfZCA9IGRvbShhcGkuYnV0dG9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9kLmlkLFxuICAgICAgICBpZDogaWQyLFxuICAgICAgICBvbktleWRvd246IGhhbmRsZUtleURvd24sXG4gICAgICAgIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsXG4gICAgICAgIG9uSW5wdXQ6IGhhbmRsZUlucHV0LFxuICAgICAgICByb2xlOiBcImNvbWJvYm94XCIsXG4gICAgICAgIHR5cGU6IChfZiA9IGF0dHJzLnR5cGUpICE9IG51bGwgPyBfZiA6IFwidGV4dFwiLFxuICAgICAgICB0YWJJbmRleDogMCxcbiAgICAgICAgcmVmOiBhcGkuaW5wdXRSZWZcbiAgICAgIH07XG4gICAgICBsZXQgdGhlaXJQcm9wcyA9IG9taXQocHJvcHMsIFtcImRpc3BsYXlWYWx1ZVwiXSk7XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgZmVhdHVyZXM6IDEgLyogUmVuZGVyU3RyYXRlZ3kgKi8gfCAyIC8qIFN0YXRpYyAqLyxcbiAgICAgICAgbmFtZTogXCJDb21ib2JveElucHV0XCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIENvbWJvYm94T3B0aW9ucyA9ICgwLCBpbXBvcnRfdnVlOC5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJDb21ib2JveE9wdGlvbnNcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcInVsXCIgfSxcbiAgICBzdGF0aWM6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICB1bm1vdW50OiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IHRydWUgfSxcbiAgICBob2xkOiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogZmFsc2UgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZUNvbWJvYm94Q29udGV4dChcIkNvbWJvYm94T3B0aW9uc1wiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktY29tYm9ib3gtb3B0aW9ucy0ke3VzZUlkKCl9YDtcbiAgICBleHBvc2UoeyBlbDogYXBpLm9wdGlvbnNSZWYsICRlbDogYXBpLm9wdGlvbnNSZWYgfSk7XG4gICAgKDAsIGltcG9ydF92dWU4LndhdGNoRWZmZWN0KSgoKSA9PiB7XG4gICAgICBhcGkub3B0aW9uc1Byb3BzUmVmLnZhbHVlLnN0YXRpYyA9IHByb3BzLnN0YXRpYztcbiAgICB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTgud2F0Y2hFZmZlY3QpKCgpID0+IHtcbiAgICAgIGFwaS5vcHRpb25zUHJvcHNSZWYudmFsdWUuaG9sZCA9IHByb3BzLmhvbGQ7XG4gICAgfSk7XG4gICAgbGV0IHVzZXNPcGVuQ2xvc2VkU3RhdGUgPSB1c2VPcGVuQ2xvc2VkKCk7XG4gICAgbGV0IHZpc2libGUgPSAoMCwgaW1wb3J0X3Z1ZTguY29tcHV0ZWQpKCgpID0+IHtcbiAgICAgIGlmICh1c2VzT3BlbkNsb3NlZFN0YXRlICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB1c2VzT3BlbkNsb3NlZFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi87XG4gICAgICB9XG4gICAgICByZXR1cm4gYXBpLmNvbWJvYm94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLztcbiAgICB9KTtcbiAgICB1c2VUcmVlV2Fsa2VyKHtcbiAgICAgIGNvbnRhaW5lcjogKDAsIGltcG9ydF92dWU4LmNvbXB1dGVkKSgoKSA9PiBkb20oYXBpLm9wdGlvbnNSZWYpKSxcbiAgICAgIGVuYWJsZWQ6ICgwLCBpbXBvcnRfdnVlOC5jb21wdXRlZCkoKCkgPT4gYXBpLmNvbWJvYm94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyksXG4gICAgICBhY2NlcHQobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpID09PSBcIm9wdGlvblwiKVxuICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9SRUpFQ1Q7XG4gICAgICAgIGlmIChub2RlLmhhc0F0dHJpYnV0ZShcInJvbGVcIikpXG4gICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1NLSVA7XG4gICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQ7XG4gICAgICB9LFxuICAgICAgd2Fsayhub2RlKSB7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwicm9sZVwiLCBcIm5vbmVcIik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgIGxldCBzbG90ID0geyBvcGVuOiBhcGkuY29tYm9ib3hTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCI6IGFwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZSA9PT0gbnVsbCA/IHZvaWQgMCA6IChfYSA9IGFwaS5vcHRpb25zLnZhbHVlW2FwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZV0pID09IG51bGwgPyB2b2lkIDAgOiBfYS5pZCxcbiAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogKF9kID0gKF9iID0gZG9tKGFwaS5sYWJlbFJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYi5pZCkgIT0gbnVsbCA/IF9kIDogKF9jID0gZG9tKGFwaS5idXR0b25SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2MuaWQsXG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIHJlZjogYXBpLm9wdGlvbnNSZWYsXG4gICAgICAgIHJvbGU6IFwibGlzdGJveFwiXG4gICAgICB9O1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBvbWl0KHByb3BzLCBbXCJob2xkXCJdKTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBmZWF0dXJlczogMSAvKiBSZW5kZXJTdHJhdGVneSAqLyB8IDIgLyogU3RhdGljICovLFxuICAgICAgICB2aXNpYmxlOiB2aXNpYmxlLnZhbHVlLFxuICAgICAgICBuYW1lOiBcIkNvbWJvYm94T3B0aW9uc1wiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBDb21ib2JveE9wdGlvbiA9ICgwLCBpbXBvcnRfdnVlOC5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJDb21ib2JveE9wdGlvblwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwibGlcIiB9LFxuICAgIHZhbHVlOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZywgTnVtYmVyLCBCb29sZWFuXSB9LFxuICAgIGRpc2FibGVkOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgc2xvdHMsIGF0dHJzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSB1c2VDb21ib2JveENvbnRleHQoXCJDb21ib2JveE9wdGlvblwiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktY29tYm9ib3gtb3B0aW9uLSR7dXNlSWQoKX1gO1xuICAgIGxldCBpbnRlcm5hbE9wdGlvblJlZiA9ICgwLCBpbXBvcnRfdnVlOC5yZWYpKG51bGwpO1xuICAgIGV4cG9zZSh7IGVsOiBpbnRlcm5hbE9wdGlvblJlZiwgJGVsOiBpbnRlcm5hbE9wdGlvblJlZiB9KTtcbiAgICBsZXQgYWN0aXZlID0gKDAsIGltcG9ydF92dWU4LmNvbXB1dGVkKSgoKSA9PiB7XG4gICAgICByZXR1cm4gYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlICE9PSBudWxsID8gYXBpLm9wdGlvbnMudmFsdWVbYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlXS5pZCA9PT0gaWQyIDogZmFsc2U7XG4gICAgfSk7XG4gICAgbGV0IHNlbGVjdGVkID0gKDAsIGltcG9ydF92dWU4LmNvbXB1dGVkKSgoKSA9PiBtYXRjaChhcGkubW9kZS52YWx1ZSwge1xuICAgICAgWzAgLyogU2luZ2xlICovXTogKCkgPT4gYXBpLmNvbXBhcmUoKDAsIGltcG9ydF92dWU4LnRvUmF3KShhcGkudmFsdWUudmFsdWUpLCAoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKHByb3BzLnZhbHVlKSksXG4gICAgICBbMSAvKiBNdWx0aSAqL106ICgpID0+ICgwLCBpbXBvcnRfdnVlOC50b1JhdykoYXBpLnZhbHVlLnZhbHVlKS5zb21lKCh2YWx1ZSkgPT4gYXBpLmNvbXBhcmUoKDAsIGltcG9ydF92dWU4LnRvUmF3KSh2YWx1ZSksICgwLCBpbXBvcnRfdnVlOC50b1JhdykocHJvcHMudmFsdWUpKSlcbiAgICB9KSk7XG4gICAgbGV0IGRhdGFSZWYgPSAoMCwgaW1wb3J0X3Z1ZTguY29tcHV0ZWQpKCgpID0+ICh7XG4gICAgICBkaXNhYmxlZDogcHJvcHMuZGlzYWJsZWQsXG4gICAgICB2YWx1ZTogcHJvcHMudmFsdWUsXG4gICAgICBkb21SZWY6IGludGVybmFsT3B0aW9uUmVmXG4gICAgfSkpO1xuICAgICgwLCBpbXBvcnRfdnVlOC5vbk1vdW50ZWQpKCgpID0+IGFwaS5yZWdpc3Rlck9wdGlvbihpZDIsIGRhdGFSZWYpKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTgub25Vbm1vdW50ZWQpKCgpID0+IGFwaS51bnJlZ2lzdGVyT3B0aW9uKGlkMikpO1xuICAgICgwLCBpbXBvcnRfdnVlOC53YXRjaEVmZmVjdCkoKCkgPT4ge1xuICAgICAgaWYgKGFwaS5jb21ib2JveFN0YXRlLnZhbHVlICE9PSAwIC8qIE9wZW4gKi8pXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICghYWN0aXZlLnZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoYXBpLmFjdGl2YXRpb25UcmlnZ2VyLnZhbHVlID09PSAwIC8qIFBvaW50ZXIgKi8pXG4gICAgICAgIHJldHVybjtcbiAgICAgICgwLCBpbXBvcnRfdnVlOC5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICByZXR1cm4gKF9iID0gKF9hID0gZG9tKGludGVybmFsT3B0aW9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnNjcm9sbEludG9WaWV3KSA9PSBudWxsID8gdm9pZCAwIDogX2IuY2FsbChfYSwgeyBibG9jazogXCJuZWFyZXN0XCIgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCkge1xuICAgICAgdmFyIF9hO1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm4gZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGFwaS5zZWxlY3RPcHRpb24oaWQyKTtcbiAgICAgIGlmIChhcGkubW9kZS52YWx1ZSA9PT0gMCAvKiBTaW5nbGUgKi8pIHtcbiAgICAgICAgYXBpLmNsb3NlQ29tYm9ib3goKTtcbiAgICAgICAgKF9hID0gZG9tKGFwaS5pbnB1dFJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUZvY3VzKCkge1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm4gYXBpLmdvVG9PcHRpb24oNSAvKiBOb3RoaW5nICovKTtcbiAgICAgIGFwaS5nb1RvT3B0aW9uKDQgLyogU3BlY2lmaWMgKi8sIGlkMik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZU1vdmUoKSB7XG4gICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChhY3RpdmUudmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGFwaS5nb1RvT3B0aW9uKDQgLyogU3BlY2lmaWMgKi8sIGlkMiwgMCAvKiBQb2ludGVyICovKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlTGVhdmUoKSB7XG4gICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICghYWN0aXZlLnZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoYXBpLm9wdGlvbnNQcm9wc1JlZi52YWx1ZS5ob2xkKVxuICAgICAgICByZXR1cm47XG4gICAgICBhcGkuZ29Ub09wdGlvbig1IC8qIE5vdGhpbmcgKi8pO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHsgZGlzYWJsZWQgfSA9IHByb3BzO1xuICAgICAgbGV0IHNsb3QgPSB7IGFjdGl2ZTogYWN0aXZlLnZhbHVlLCBzZWxlY3RlZDogc2VsZWN0ZWQudmFsdWUsIGRpc2FibGVkIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIHJlZjogaW50ZXJuYWxPcHRpb25SZWYsXG4gICAgICAgIHJvbGU6IFwib3B0aW9uXCIsXG4gICAgICAgIHRhYkluZGV4OiBkaXNhYmxlZCA9PT0gdHJ1ZSA/IHZvaWQgMCA6IC0xLFxuICAgICAgICBcImFyaWEtZGlzYWJsZWRcIjogZGlzYWJsZWQgPT09IHRydWUgPyB0cnVlIDogdm9pZCAwLFxuICAgICAgICBcImFyaWEtc2VsZWN0ZWRcIjogc2VsZWN0ZWQudmFsdWUgPT09IHRydWUgPyBzZWxlY3RlZC52YWx1ZSA6IHZvaWQgMCxcbiAgICAgICAgZGlzYWJsZWQ6IHZvaWQgMCxcbiAgICAgICAgb25DbGljazogaGFuZGxlQ2xpY2ssXG4gICAgICAgIG9uRm9jdXM6IGhhbmRsZUZvY3VzLFxuICAgICAgICBvblBvaW50ZXJtb3ZlOiBoYW5kbGVNb3ZlLFxuICAgICAgICBvbk1vdXNlbW92ZTogaGFuZGxlTW92ZSxcbiAgICAgICAgb25Qb2ludGVybGVhdmU6IGhhbmRsZUxlYXZlLFxuICAgICAgICBvbk1vdXNlbGVhdmU6IGhhbmRsZUxlYXZlXG4gICAgICB9O1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBwcm9wcztcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIkNvbWJvYm94T3B0aW9uXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBzcmMvY29tcG9uZW50cy9kaWFsb2cvZGlhbG9nLnRzXG52YXIgaW1wb3J0X3Z1ZTE3ID0gcmVxdWlyZShcInZ1ZVwiKTtcblxuLy8gc3JjL2NvbXBvbmVudHMvZm9jdXMtdHJhcC9mb2N1cy10cmFwLnRzXG52YXIgaW1wb3J0X3Z1ZTExID0gcmVxdWlyZShcInZ1ZVwiKTtcblxuLy8gc3JjL2hvb2tzL3VzZS10YWItZGlyZWN0aW9uLnRzXG52YXIgaW1wb3J0X3Z1ZTkgPSByZXF1aXJlKFwidnVlXCIpO1xuZnVuY3Rpb24gdXNlVGFiRGlyZWN0aW9uKCkge1xuICBsZXQgZGlyZWN0aW9uID0gKDAsIGltcG9ydF92dWU5LnJlZikoMCAvKiBGb3J3YXJkcyAqLyk7XG4gIHVzZVdpbmRvd0V2ZW50KFwia2V5ZG93blwiLCAoZXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSBcIlRhYlwiKSB7XG4gICAgICBkaXJlY3Rpb24udmFsdWUgPSBldmVudC5zaGlmdEtleSA/IDEgLyogQmFja3dhcmRzICovIDogMCAvKiBGb3J3YXJkcyAqLztcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gZGlyZWN0aW9uO1xufVxuXG4vLyBzcmMvaG9va3MvdXNlLWV2ZW50LWxpc3RlbmVyLnRzXG52YXIgaW1wb3J0X3Z1ZTEwID0gcmVxdWlyZShcInZ1ZVwiKTtcbmZ1bmN0aW9uIHVzZUV2ZW50TGlzdGVuZXIoZWxlbWVudCwgdHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgcmV0dXJuO1xuICAoMCwgaW1wb3J0X3Z1ZTEwLndhdGNoRWZmZWN0KSgob25JbnZhbGlkYXRlKSA9PiB7XG4gICAgZWxlbWVudCA9IGVsZW1lbnQgIT0gbnVsbCA/IGVsZW1lbnQgOiB3aW5kb3c7XG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgICBvbkludmFsaWRhdGUoKCkgPT4gZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKSk7XG4gIH0pO1xufVxuXG4vLyBzcmMvY29tcG9uZW50cy9mb2N1cy10cmFwL2ZvY3VzLXRyYXAudHNcbnZhciBGZWF0dXJlczMgPSAvKiBAX19QVVJFX18gKi8gKChGZWF0dXJlczQpID0+IHtcbiAgRmVhdHVyZXM0W0ZlYXR1cmVzNFtcIk5vbmVcIl0gPSAxXSA9IFwiTm9uZVwiO1xuICBGZWF0dXJlczRbRmVhdHVyZXM0W1wiSW5pdGlhbEZvY3VzXCJdID0gMl0gPSBcIkluaXRpYWxGb2N1c1wiO1xuICBGZWF0dXJlczRbRmVhdHVyZXM0W1wiVGFiTG9ja1wiXSA9IDRdID0gXCJUYWJMb2NrXCI7XG4gIEZlYXR1cmVzNFtGZWF0dXJlczRbXCJGb2N1c0xvY2tcIl0gPSA4XSA9IFwiRm9jdXNMb2NrXCI7XG4gIEZlYXR1cmVzNFtGZWF0dXJlczRbXCJSZXN0b3JlRm9jdXNcIl0gPSAxNl0gPSBcIlJlc3RvcmVGb2N1c1wiO1xuICBGZWF0dXJlczRbRmVhdHVyZXM0W1wiQWxsXCJdID0gMzBdID0gXCJBbGxcIjtcbiAgcmV0dXJuIEZlYXR1cmVzNDtcbn0pKEZlYXR1cmVzMyB8fCB7fSk7XG52YXIgRm9jdXNUcmFwID0gT2JqZWN0LmFzc2lnbigoMCwgaW1wb3J0X3Z1ZTExLmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkZvY3VzVHJhcFwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfSxcbiAgICBpbml0aWFsRm9jdXM6IHsgdHlwZTogT2JqZWN0LCBkZWZhdWx0OiBudWxsIH0sXG4gICAgZmVhdHVyZXM6IHsgdHlwZTogTnVtYmVyLCBkZWZhdWx0OiAzMCAvKiBBbGwgKi8gfSxcbiAgICBjb250YWluZXJzOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiAoMCwgaW1wb3J0X3Z1ZTExLnJlZikoLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKSlcbiAgICB9XG4gIH0sXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgY29udGFpbmVyID0gKDAsIGltcG9ydF92dWUxMS5yZWYpKG51bGwpO1xuICAgIGV4cG9zZSh7IGVsOiBjb250YWluZXIsICRlbDogY29udGFpbmVyIH0pO1xuICAgIGxldCBvd25lckRvY3VtZW50ID0gKDAsIGltcG9ydF92dWUxMS5jb21wdXRlZCkoKCkgPT4gZ2V0T3duZXJEb2N1bWVudChjb250YWluZXIpKTtcbiAgICB1c2VSZXN0b3JlRm9jdXMoeyBvd25lckRvY3VtZW50IH0sICgwLCBpbXBvcnRfdnVlMTEuY29tcHV0ZWQpKCgpID0+IEJvb2xlYW4ocHJvcHMuZmVhdHVyZXMgJiAxNiAvKiBSZXN0b3JlRm9jdXMgKi8pKSk7XG4gICAgbGV0IHByZXZpb3VzQWN0aXZlRWxlbWVudCA9IHVzZUluaXRpYWxGb2N1cyh7IG93bmVyRG9jdW1lbnQsIGNvbnRhaW5lciwgaW5pdGlhbEZvY3VzOiAoMCwgaW1wb3J0X3Z1ZTExLmNvbXB1dGVkKSgoKSA9PiBwcm9wcy5pbml0aWFsRm9jdXMpIH0sICgwLCBpbXBvcnRfdnVlMTEuY29tcHV0ZWQpKCgpID0+IEJvb2xlYW4ocHJvcHMuZmVhdHVyZXMgJiAyIC8qIEluaXRpYWxGb2N1cyAqLykpKTtcbiAgICB1c2VGb2N1c0xvY2soe1xuICAgICAgb3duZXJEb2N1bWVudCxcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIGNvbnRhaW5lcnM6IHByb3BzLmNvbnRhaW5lcnMsXG4gICAgICBwcmV2aW91c0FjdGl2ZUVsZW1lbnRcbiAgICB9LCAoMCwgaW1wb3J0X3Z1ZTExLmNvbXB1dGVkKSgoKSA9PiBCb29sZWFuKHByb3BzLmZlYXR1cmVzICYgOCAvKiBGb2N1c0xvY2sgKi8pKSk7XG4gICAgbGV0IGRpcmVjdGlvbiA9IHVzZVRhYkRpcmVjdGlvbigpO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUZvY3VzKCkge1xuICAgICAgbGV0IGVsID0gZG9tKGNvbnRhaW5lcik7XG4gICAgICBpZiAoIWVsKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgbWljcm9UYXNrKCgpID0+IHtcbiAgICAgICAgICBtYXRjaChkaXJlY3Rpb24udmFsdWUsIHtcbiAgICAgICAgICAgIFswIC8qIEZvcndhcmRzICovXTogKCkgPT4gZm9jdXNJbihlbCwgMSAvKiBGaXJzdCAqLyksXG4gICAgICAgICAgICBbMSAvKiBCYWNrd2FyZHMgKi9dOiAoKSA9PiBmb2N1c0luKGVsLCA4IC8qIExhc3QgKi8pXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWF0Y2goZGlyZWN0aW9uLnZhbHVlLCB7XG4gICAgICAgICAgWzAgLyogRm9yd2FyZHMgKi9dOiAoKSA9PiBmb2N1c0luKGVsLCAxIC8qIEZpcnN0ICovKSxcbiAgICAgICAgICBbMSAvKiBCYWNrd2FyZHMgKi9dOiAoKSA9PiBmb2N1c0luKGVsLCA4IC8qIExhc3QgKi8pXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHNsb3QgPSB7fTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHsgcmVmOiBjb250YWluZXIgfTtcbiAgICAgIGxldCB7IGZlYXR1cmVzLCBpbml0aWFsRm9jdXMsIGNvbnRhaW5lcnM6IF9jb250YWluZXJzLCAuLi50aGVpclByb3BzIH0gPSBwcm9wcztcbiAgICAgIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTExLmgpKGltcG9ydF92dWUxMS5GcmFnbWVudCwgW1xuICAgICAgICBCb29sZWFuKGZlYXR1cmVzICYgNCAvKiBUYWJMb2NrICovKSAmJiAoMCwgaW1wb3J0X3Z1ZTExLmgpKEhpZGRlbiwge1xuICAgICAgICAgIGFzOiBcImJ1dHRvblwiLFxuICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgb25Gb2N1czogaGFuZGxlRm9jdXMsXG4gICAgICAgICAgZmVhdHVyZXM6IDIgLyogRm9jdXNhYmxlICovXG4gICAgICAgIH0pLFxuICAgICAgICByZW5kZXIoe1xuICAgICAgICAgIG91clByb3BzLFxuICAgICAgICAgIHRoZWlyUHJvcHM6IHsgLi4uYXR0cnMsIC4uLnRoZWlyUHJvcHMgfSxcbiAgICAgICAgICBzbG90LFxuICAgICAgICAgIGF0dHJzLFxuICAgICAgICAgIHNsb3RzLFxuICAgICAgICAgIG5hbWU6IFwiRm9jdXNUcmFwXCJcbiAgICAgICAgfSksXG4gICAgICAgIEJvb2xlYW4oZmVhdHVyZXMgJiA0IC8qIFRhYkxvY2sgKi8pICYmICgwLCBpbXBvcnRfdnVlMTEuaCkoSGlkZGVuLCB7XG4gICAgICAgICAgYXM6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICBvbkZvY3VzOiBoYW5kbGVGb2N1cyxcbiAgICAgICAgICBmZWF0dXJlczogMiAvKiBGb2N1c2FibGUgKi9cbiAgICAgICAgfSlcbiAgICAgIF0pO1xuICAgIH07XG4gIH1cbn0pLCB7IGZlYXR1cmVzOiBGZWF0dXJlczMgfSk7XG5mdW5jdGlvbiB1c2VSZXN0b3JlRm9jdXMoeyBvd25lckRvY3VtZW50IH0sIGVuYWJsZWQpIHtcbiAgbGV0IHJlc3RvcmVFbGVtZW50ID0gKDAsIGltcG9ydF92dWUxMS5yZWYpKG51bGwpO1xuICBsZXQgbW91bnRlZCA9IHsgdmFsdWU6IGZhbHNlIH07XG4gICgwLCBpbXBvcnRfdnVlMTEub25Nb3VudGVkKSgoKSA9PiB7XG4gICAgKDAsIGltcG9ydF92dWUxMS53YXRjaCkoZW5hYmxlZCwgKG5ld1ZhbHVlLCBwcmV2VmFsdWUpID0+IHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGlmIChuZXdWYWx1ZSA9PT0gcHJldlZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoIWVuYWJsZWQudmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIG1vdW50ZWQudmFsdWUgPSB0cnVlO1xuICAgICAgaWYgKCFyZXN0b3JlRWxlbWVudC52YWx1ZSkge1xuICAgICAgICByZXN0b3JlRWxlbWVudC52YWx1ZSA9IChfYSA9IG93bmVyRG9jdW1lbnQudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5hY3RpdmVFbGVtZW50O1xuICAgICAgfVxuICAgIH0sIHsgaW1tZWRpYXRlOiB0cnVlIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMTEud2F0Y2gpKGVuYWJsZWQsIChuZXdWYWx1ZSwgcHJldlZhbHVlLCBvbkludmFsaWRhdGUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSA9PT0gcHJldlZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoIWVuYWJsZWQudmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIG9uSW52YWxpZGF0ZSgoKSA9PiB7XG4gICAgICAgIGlmIChtb3VudGVkLnZhbHVlID09PSBmYWxzZSlcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIG1vdW50ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgZm9jdXNFbGVtZW50KHJlc3RvcmVFbGVtZW50LnZhbHVlKTtcbiAgICAgICAgcmVzdG9yZUVsZW1lbnQudmFsdWUgPSBudWxsO1xuICAgICAgfSk7XG4gICAgfSwgeyBpbW1lZGlhdGU6IHRydWUgfSk7XG4gIH0pO1xufVxuZnVuY3Rpb24gdXNlSW5pdGlhbEZvY3VzKHtcbiAgb3duZXJEb2N1bWVudCxcbiAgY29udGFpbmVyLFxuICBpbml0aWFsRm9jdXNcbn0sIGVuYWJsZWQpIHtcbiAgbGV0IHByZXZpb3VzQWN0aXZlRWxlbWVudCA9ICgwLCBpbXBvcnRfdnVlMTEucmVmKShudWxsKTtcbiAgKDAsIGltcG9ydF92dWUxMS5vbk1vdW50ZWQpKCgpID0+IHtcbiAgICAoMCwgaW1wb3J0X3Z1ZTExLndhdGNoKShbY29udGFpbmVyLCBpbml0aWFsRm9jdXMsIGVuYWJsZWRdLCAobmV3VmFsdWVzLCBwcmV2VmFsdWVzKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWVzLmV2ZXJ5KCh2YWx1ZSwgaWR4KSA9PiAocHJldlZhbHVlcyA9PSBudWxsID8gdm9pZCAwIDogcHJldlZhbHVlc1tpZHhdKSA9PT0gdmFsdWUpKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoIWVuYWJsZWQudmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGxldCBjb250YWluZXJFbGVtZW50ID0gZG9tKGNvbnRhaW5lcik7XG4gICAgICBpZiAoIWNvbnRhaW5lckVsZW1lbnQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGxldCBpbml0aWFsRm9jdXNFbGVtZW50ID0gZG9tKGluaXRpYWxGb2N1cyk7XG4gICAgICAgIGxldCBhY3RpdmVFbGVtZW50ID0gKF9hID0gb3duZXJEb2N1bWVudC52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChpbml0aWFsRm9jdXNFbGVtZW50KSB7XG4gICAgICAgICAgaWYgKGluaXRpYWxGb2N1c0VsZW1lbnQgPT09IGFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHByZXZpb3VzQWN0aXZlRWxlbWVudC52YWx1ZSA9IGFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRhaW5lckVsZW1lbnQuY29udGFpbnMoYWN0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgICBwcmV2aW91c0FjdGl2ZUVsZW1lbnQudmFsdWUgPSBhY3RpdmVFbGVtZW50O1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5pdGlhbEZvY3VzRWxlbWVudCkge1xuICAgICAgICAgIGZvY3VzRWxlbWVudChpbml0aWFsRm9jdXNFbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoZm9jdXNJbihjb250YWluZXJFbGVtZW50LCAxIC8qIEZpcnN0ICovIHwgMzIgLyogTm9TY3JvbGwgKi8pID09PSAwIC8qIEVycm9yICovKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJUaGVyZSBhcmUgbm8gZm9jdXNhYmxlIGVsZW1lbnRzIGluc2lkZSB0aGUgPEZvY3VzVHJhcCAvPlwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcHJldmlvdXNBY3RpdmVFbGVtZW50LnZhbHVlID0gKF9iID0gb3duZXJEb2N1bWVudC52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmFjdGl2ZUVsZW1lbnQ7XG4gICAgICB9KTtcbiAgICB9LCB7IGltbWVkaWF0ZTogdHJ1ZSwgZmx1c2g6IFwicG9zdFwiIH0pO1xuICB9KTtcbiAgcmV0dXJuIHByZXZpb3VzQWN0aXZlRWxlbWVudDtcbn1cbmZ1bmN0aW9uIHVzZUZvY3VzTG9jayh7XG4gIG93bmVyRG9jdW1lbnQsXG4gIGNvbnRhaW5lcixcbiAgY29udGFpbmVycyxcbiAgcHJldmlvdXNBY3RpdmVFbGVtZW50XG59LCBlbmFibGVkKSB7XG4gIHZhciBfYTtcbiAgdXNlRXZlbnRMaXN0ZW5lcigoX2EgPSBvd25lckRvY3VtZW50LnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZGVmYXVsdFZpZXcsIFwiZm9jdXNcIiwgKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFlbmFibGVkLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIGxldCBhbGxDb250YWluZXJzID0gbmV3IFNldChjb250YWluZXJzID09IG51bGwgPyB2b2lkIDAgOiBjb250YWluZXJzLnZhbHVlKTtcbiAgICBhbGxDb250YWluZXJzLmFkZChjb250YWluZXIpO1xuICAgIGxldCBwcmV2aW91cyA9IHByZXZpb3VzQWN0aXZlRWxlbWVudC52YWx1ZTtcbiAgICBpZiAoIXByZXZpb3VzKVxuICAgICAgcmV0dXJuO1xuICAgIGxldCB0b0VsZW1lbnQgPSBldmVudC50YXJnZXQ7XG4gICAgaWYgKHRvRWxlbWVudCAmJiB0b0VsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgaWYgKCFjb250YWlucyhhbGxDb250YWluZXJzLCB0b0VsZW1lbnQpKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBmb2N1c0VsZW1lbnQocHJldmlvdXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJldmlvdXNBY3RpdmVFbGVtZW50LnZhbHVlID0gdG9FbGVtZW50O1xuICAgICAgICBmb2N1c0VsZW1lbnQodG9FbGVtZW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9jdXNFbGVtZW50KHByZXZpb3VzQWN0aXZlRWxlbWVudC52YWx1ZSk7XG4gICAgfVxuICB9LCB0cnVlKTtcbn1cbmZ1bmN0aW9uIGNvbnRhaW5zKGNvbnRhaW5lcnMsIGVsZW1lbnQpIHtcbiAgdmFyIF9hO1xuICBmb3IgKGxldCBjb250YWluZXIgb2YgY29udGFpbmVycykge1xuICAgIGlmICgoX2EgPSBjb250YWluZXIudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jb250YWlucyhlbGVtZW50KSlcbiAgICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLy8gc3JjL2hvb2tzL3VzZS1pbmVydC1vdGhlcnMudHNcbnZhciBpbXBvcnRfdnVlMTIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIENISUxEUkVOX1NFTEVDVE9SID0gZmFsc2UgPyAnW2RhdGEtdi1hcHA9XCJcIl0gPiAqJyA6IFwiYm9keSA+ICpcIjtcbnZhciBpbnRlcmFjdGFibGVzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbnZhciBvcmlnaW5hbHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuZnVuY3Rpb24gaW5lcnQoZWxlbWVudCkge1xuICBlbGVtZW50LnNldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIsIFwidHJ1ZVwiKTtcbiAgZWxlbWVudC5pbmVydCA9IHRydWU7XG59XG5mdW5jdGlvbiByZXN0b3JlKGVsZW1lbnQpIHtcbiAgbGV0IG9yaWdpbmFsID0gb3JpZ2luYWxzLmdldChlbGVtZW50KTtcbiAgaWYgKCFvcmlnaW5hbClcbiAgICByZXR1cm47XG4gIGlmIChvcmlnaW5hbFtcImFyaWEtaGlkZGVuXCJdID09PSBudWxsKVxuICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIik7XG4gIGVsc2VcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIsIG9yaWdpbmFsW1wiYXJpYS1oaWRkZW5cIl0pO1xuICBlbGVtZW50LmluZXJ0ID0gb3JpZ2luYWwuaW5lcnQ7XG59XG5mdW5jdGlvbiB1c2VJbmVydE90aGVycyhjb250YWluZXIsIGVuYWJsZWQgPSAoMCwgaW1wb3J0X3Z1ZTEyLnJlZikodHJ1ZSkpIHtcbiAgKDAsIGltcG9ydF92dWUxMi53YXRjaEVmZmVjdCkoKG9uSW52YWxpZGF0ZSkgPT4ge1xuICAgIGlmICghZW5hYmxlZC52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBpZiAoIWNvbnRhaW5lci52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBsZXQgZWxlbWVudCA9IGNvbnRhaW5lci52YWx1ZTtcbiAgICBsZXQgb3duZXJEb2N1bWVudCA9IGdldE93bmVyRG9jdW1lbnQoZWxlbWVudCk7XG4gICAgaWYgKCFvd25lckRvY3VtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIGludGVyYWN0YWJsZXMuYWRkKGVsZW1lbnQpO1xuICAgIGZvciAobGV0IG9yaWdpbmFsIG9mIG9yaWdpbmFscy5rZXlzKCkpIHtcbiAgICAgIGlmIChvcmlnaW5hbC5jb250YWlucyhlbGVtZW50KSkge1xuICAgICAgICByZXN0b3JlKG9yaWdpbmFsKTtcbiAgICAgICAgb3JpZ2luYWxzLmRlbGV0ZShvcmlnaW5hbCk7XG4gICAgICB9XG4gICAgfVxuICAgIG93bmVyRG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChDSElMRFJFTl9TRUxFQ1RPUikuZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgIGlmICghKGNoaWxkIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKVxuICAgICAgICByZXR1cm47XG4gICAgICBmb3IgKGxldCBpbnRlcmFjdGFibGUgb2YgaW50ZXJhY3RhYmxlcykge1xuICAgICAgICBpZiAoY2hpbGQuY29udGFpbnMoaW50ZXJhY3RhYmxlKSlcbiAgICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoaW50ZXJhY3RhYmxlcy5zaXplID09PSAxKSB7XG4gICAgICAgIG9yaWdpbmFscy5zZXQoY2hpbGQsIHtcbiAgICAgICAgICBcImFyaWEtaGlkZGVuXCI6IGNoaWxkLmdldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIpLFxuICAgICAgICAgIGluZXJ0OiBjaGlsZC5pbmVydFxuICAgICAgICB9KTtcbiAgICAgICAgaW5lcnQoY2hpbGQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIG9uSW52YWxpZGF0ZSgoKSA9PiB7XG4gICAgICBpbnRlcmFjdGFibGVzLmRlbGV0ZShlbGVtZW50KTtcbiAgICAgIGlmIChpbnRlcmFjdGFibGVzLnNpemUgPiAwKSB7XG4gICAgICAgIG93bmVyRG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChDSElMRFJFTl9TRUxFQ1RPUikuZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICBpZiAoIShjaGlsZCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBpZiAob3JpZ2luYWxzLmhhcyhjaGlsZCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgZm9yIChsZXQgaW50ZXJhY3RhYmxlIG9mIGludGVyYWN0YWJsZXMpIHtcbiAgICAgICAgICAgIGlmIChjaGlsZC5jb250YWlucyhpbnRlcmFjdGFibGUpKVxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIG9yaWdpbmFscy5zZXQoY2hpbGQsIHtcbiAgICAgICAgICAgIFwiYXJpYS1oaWRkZW5cIjogY2hpbGQuZ2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIiksXG4gICAgICAgICAgICBpbmVydDogY2hpbGQuaW5lcnRcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpbmVydChjaGlsZCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChsZXQgZWxlbWVudDIgb2Ygb3JpZ2luYWxzLmtleXMoKSkge1xuICAgICAgICAgIHJlc3RvcmUoZWxlbWVudDIpO1xuICAgICAgICAgIG9yaWdpbmFscy5kZWxldGUoZWxlbWVudDIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vLyBzcmMvY29tcG9uZW50cy9wb3J0YWwvcG9ydGFsLnRzXG52YXIgaW1wb3J0X3Z1ZTE0ID0gcmVxdWlyZShcInZ1ZVwiKTtcblxuLy8gc3JjL2ludGVybmFsL3BvcnRhbC1mb3JjZS1yb290LnRzXG52YXIgaW1wb3J0X3Z1ZTEzID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBGb3JjZVBvcnRhbFJvb3RDb250ZXh0ID0gU3ltYm9sKFwiRm9yY2VQb3J0YWxSb290Q29udGV4dFwiKTtcbmZ1bmN0aW9uIHVzZVBvcnRhbFJvb3QoKSB7XG4gIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTEzLmluamVjdCkoRm9yY2VQb3J0YWxSb290Q29udGV4dCwgZmFsc2UpO1xufVxudmFyIEZvcmNlUG9ydGFsUm9vdCA9ICgwLCBpbXBvcnRfdnVlMTMuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiRm9yY2VQb3J0YWxSb290XCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJ0ZW1wbGF0ZVwiIH0sXG4gICAgZm9yY2U6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBzbG90cywgYXR0cnMgfSkge1xuICAgICgwLCBpbXBvcnRfdnVlMTMucHJvdmlkZSkoRm9yY2VQb3J0YWxSb290Q29udGV4dCwgcHJvcHMuZm9yY2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgeyBmb3JjZSwgLi4udGhlaXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgb3VyUHJvcHM6IHt9LFxuICAgICAgICBzbG90OiB7fSxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBuYW1lOiBcIkZvcmNlUG9ydGFsUm9vdFwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gc3JjL2NvbXBvbmVudHMvcG9ydGFsL3BvcnRhbC50c1xuZnVuY3Rpb24gZ2V0UG9ydGFsUm9vdChjb250ZXh0RWxlbWVudCkge1xuICBsZXQgb3duZXJEb2N1bWVudCA9IGdldE93bmVyRG9jdW1lbnQoY29udGV4dEVsZW1lbnQpO1xuICBpZiAoIW93bmVyRG9jdW1lbnQpIHtcbiAgICBpZiAoY29udGV4dEVsZW1lbnQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFtIZWFkbGVzcyBVSV06IENhbm5vdCBmaW5kIG93bmVyRG9jdW1lbnQgZm9yIGNvbnRleHRFbGVtZW50OiAke2NvbnRleHRFbGVtZW50fWApO1xuICB9XG4gIGxldCBleGlzdGluZ1Jvb3QgPSBvd25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiaGVhZGxlc3N1aS1wb3J0YWwtcm9vdFwiKTtcbiAgaWYgKGV4aXN0aW5nUm9vdClcbiAgICByZXR1cm4gZXhpc3RpbmdSb290O1xuICBsZXQgcm9vdCA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgcm9vdC5zZXRBdHRyaWJ1dGUoXCJpZFwiLCBcImhlYWRsZXNzdWktcG9ydGFsLXJvb3RcIik7XG4gIHJldHVybiBvd25lckRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocm9vdCk7XG59XG52YXIgUG9ydGFsID0gKDAsIGltcG9ydF92dWUxNC5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJQb3J0YWxcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgc2xvdHMsIGF0dHJzIH0pIHtcbiAgICBsZXQgZWxlbWVudCA9ICgwLCBpbXBvcnRfdnVlMTQucmVmKShudWxsKTtcbiAgICBsZXQgb3duZXJEb2N1bWVudCA9ICgwLCBpbXBvcnRfdnVlMTQuY29tcHV0ZWQpKCgpID0+IGdldE93bmVyRG9jdW1lbnQoZWxlbWVudCkpO1xuICAgIGxldCBmb3JjZVBvcnRhbFJvb3QgPSB1c2VQb3J0YWxSb290KCk7XG4gICAgbGV0IGdyb3VwQ29udGV4dCA9ICgwLCBpbXBvcnRfdnVlMTQuaW5qZWN0KShQb3J0YWxHcm91cENvbnRleHQsIG51bGwpO1xuICAgIGxldCBteVRhcmdldCA9ICgwLCBpbXBvcnRfdnVlMTQucmVmKShmb3JjZVBvcnRhbFJvb3QgPT09IHRydWUgPyBnZXRQb3J0YWxSb290KGVsZW1lbnQudmFsdWUpIDogZ3JvdXBDb250ZXh0ID09IG51bGwgPyBnZXRQb3J0YWxSb290KGVsZW1lbnQudmFsdWUpIDogZ3JvdXBDb250ZXh0LnJlc29sdmVUYXJnZXQoKSk7XG4gICAgKDAsIGltcG9ydF92dWUxNC53YXRjaEVmZmVjdCkoKCkgPT4ge1xuICAgICAgaWYgKGZvcmNlUG9ydGFsUm9vdClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGdyb3VwQ29udGV4dCA9PSBudWxsKVxuICAgICAgICByZXR1cm47XG4gICAgICBteVRhcmdldC52YWx1ZSA9IGdyb3VwQ29udGV4dC5yZXNvbHZlVGFyZ2V0KCk7XG4gICAgfSk7XG4gICAgKDAsIGltcG9ydF92dWUxNC5vblVubW91bnRlZCkoKCkgPT4ge1xuICAgICAgdmFyIF9hLCBfYjtcbiAgICAgIGxldCByb290ID0gKF9hID0gb3duZXJEb2N1bWVudC52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmdldEVsZW1lbnRCeUlkKFwiaGVhZGxlc3N1aS1wb3J0YWwtcm9vdFwiKTtcbiAgICAgIGlmICghcm9vdClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKG15VGFyZ2V0LnZhbHVlICE9PSByb290KVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAobXlUYXJnZXQudmFsdWUuY2hpbGRyZW4ubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgKF9iID0gbXlUYXJnZXQudmFsdWUucGFyZW50RWxlbWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLnJlbW92ZUNoaWxkKG15VGFyZ2V0LnZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKG15VGFyZ2V0LnZhbHVlID09PSBudWxsKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgcmVmOiBlbGVtZW50LFxuICAgICAgICBcImRhdGEtaGVhZGxlc3N1aS1wb3J0YWxcIjogXCJcIlxuICAgICAgfTtcbiAgICAgIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTE0LmgpKGltcG9ydF92dWUxNC5UZWxlcG9ydCwgeyB0bzogbXlUYXJnZXQudmFsdWUgfSwgcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHM6IHByb3BzLFxuICAgICAgICBzbG90OiB7fSxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIlBvcnRhbFwiXG4gICAgICB9KSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgUG9ydGFsR3JvdXBDb250ZXh0ID0gU3ltYm9sKFwiUG9ydGFsR3JvdXBDb250ZXh0XCIpO1xudmFyIFBvcnRhbEdyb3VwID0gKDAsIGltcG9ydF92dWUxNC5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJQb3J0YWxHcm91cFwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwidGVtcGxhdGVcIiB9LFxuICAgIHRhcmdldDogeyB0eXBlOiBPYmplY3QsIGRlZmF1bHQ6IG51bGwgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMgfSkge1xuICAgIGxldCBhcGkgPSAoMCwgaW1wb3J0X3Z1ZTE0LnJlYWN0aXZlKSh7XG4gICAgICByZXNvbHZlVGFyZ2V0KCkge1xuICAgICAgICByZXR1cm4gcHJvcHMudGFyZ2V0O1xuICAgICAgfVxuICAgIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMTQucHJvdmlkZSkoUG9ydGFsR3JvdXBDb250ZXh0LCBhcGkpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgeyB0YXJnZXQ6IF8sIC4uLnRoZWlyUHJvcHMgfSA9IHByb3BzO1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIG91clByb3BzOiB7fSxcbiAgICAgICAgc2xvdDoge30sXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJQb3J0YWxHcm91cFwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gc3JjL2ludGVybmFsL3N0YWNrLWNvbnRleHQudHNcbnZhciBpbXBvcnRfdnVlMTUgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIFN0YWNrQ29udGV4dCA9IFN5bWJvbChcIlN0YWNrQ29udGV4dFwiKTtcbmZ1bmN0aW9uIHVzZVN0YWNrQ29udGV4dCgpIHtcbiAgcmV0dXJuICgwLCBpbXBvcnRfdnVlMTUuaW5qZWN0KShTdGFja0NvbnRleHQsICgpID0+IHtcbiAgfSk7XG59XG5mdW5jdGlvbiB1c2VTdGFja1Byb3ZpZGVyKHtcbiAgdHlwZSxcbiAgZWxlbWVudCxcbiAgb25VcGRhdGVcbn0pIHtcbiAgbGV0IHBhcmVudFVwZGF0ZSA9IHVzZVN0YWNrQ29udGV4dCgpO1xuICBmdW5jdGlvbiBub3RpZnkoLi4uYXJncykge1xuICAgIG9uVXBkYXRlID09IG51bGwgPyB2b2lkIDAgOiBvblVwZGF0ZSguLi5hcmdzKTtcbiAgICBwYXJlbnRVcGRhdGUoLi4uYXJncyk7XG4gIH1cbiAgKDAsIGltcG9ydF92dWUxNS5vbk1vdW50ZWQpKCgpID0+IHtcbiAgICBub3RpZnkoMCAvKiBBZGQgKi8sIHR5cGUsIGVsZW1lbnQpO1xuICAgICgwLCBpbXBvcnRfdnVlMTUub25Vbm1vdW50ZWQpKCgpID0+IHtcbiAgICAgIG5vdGlmeSgxIC8qIFJlbW92ZSAqLywgdHlwZSwgZWxlbWVudCk7XG4gICAgfSk7XG4gIH0pO1xuICAoMCwgaW1wb3J0X3Z1ZTE1LnByb3ZpZGUpKFN0YWNrQ29udGV4dCwgbm90aWZ5KTtcbn1cblxuLy8gc3JjL2NvbXBvbmVudHMvZGVzY3JpcHRpb24vZGVzY3JpcHRpb24udHNcbnZhciBpbXBvcnRfdnVlMTYgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIERlc2NyaXB0aW9uQ29udGV4dCA9IFN5bWJvbChcIkRlc2NyaXB0aW9uQ29udGV4dFwiKTtcbmZ1bmN0aW9uIHVzZURlc2NyaXB0aW9uQ29udGV4dCgpIHtcbiAgbGV0IGNvbnRleHQgPSAoMCwgaW1wb3J0X3Z1ZTE2LmluamVjdCkoRGVzY3JpcHRpb25Db250ZXh0LCBudWxsKTtcbiAgaWYgKGNvbnRleHQgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIHBhcmVudFwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cbmZ1bmN0aW9uIHVzZURlc2NyaXB0aW9ucyh7XG4gIHNsb3QgPSAoMCwgaW1wb3J0X3Z1ZTE2LnJlZikoe30pLFxuICBuYW1lID0gXCJEZXNjcmlwdGlvblwiLFxuICBwcm9wcyA9IHt9XG59ID0ge30pIHtcbiAgbGV0IGRlc2NyaXB0aW9uSWRzID0gKDAsIGltcG9ydF92dWUxNi5yZWYpKFtdKTtcbiAgZnVuY3Rpb24gcmVnaXN0ZXIodmFsdWUpIHtcbiAgICBkZXNjcmlwdGlvbklkcy52YWx1ZS5wdXNoKHZhbHVlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IGlkeCA9IGRlc2NyaXB0aW9uSWRzLnZhbHVlLmluZGV4T2YodmFsdWUpO1xuICAgICAgaWYgKGlkeCA9PT0gLTEpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlc2NyaXB0aW9uSWRzLnZhbHVlLnNwbGljZShpZHgsIDEpO1xuICAgIH07XG4gIH1cbiAgKDAsIGltcG9ydF92dWUxNi5wcm92aWRlKShEZXNjcmlwdGlvbkNvbnRleHQsIHsgcmVnaXN0ZXIsIHNsb3QsIG5hbWUsIHByb3BzIH0pO1xuICByZXR1cm4gKDAsIGltcG9ydF92dWUxNi5jb21wdXRlZCkoKCkgPT4gZGVzY3JpcHRpb25JZHMudmFsdWUubGVuZ3RoID4gMCA/IGRlc2NyaXB0aW9uSWRzLnZhbHVlLmpvaW4oXCIgXCIpIDogdm9pZCAwKTtcbn1cbnZhciBEZXNjcmlwdGlvbiA9ICgwLCBpbXBvcnRfdnVlMTYuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiRGVzY3JpcHRpb25cIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcInBcIiB9XG4gIH0sXG4gIHNldHVwKG15UHJvcHMsIHsgYXR0cnMsIHNsb3RzIH0pIHtcbiAgICBsZXQgY29udGV4dCA9IHVzZURlc2NyaXB0aW9uQ29udGV4dCgpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1kZXNjcmlwdGlvbi0ke3VzZUlkKCl9YDtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE2Lm9uTW91bnRlZCkoKCkgPT4gKDAsIGltcG9ydF92dWUxNi5vblVubW91bnRlZCkoY29udGV4dC5yZWdpc3RlcihpZDIpKSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB7IG5hbWUgPSBcIkRlc2NyaXB0aW9uXCIsIHNsb3QgPSAoMCwgaW1wb3J0X3Z1ZTE2LnJlZikoe30pLCBwcm9wcyA9IHt9IH0gPSBjb250ZXh0O1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBteVByb3BzO1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICAuLi5PYmplY3QuZW50cmllcyhwcm9wcykucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4gT2JqZWN0LmFzc2lnbihhY2MsIHsgW2tleV06ICgwLCBpbXBvcnRfdnVlMTYudW5yZWYpKHZhbHVlKSB9KSwge30pLFxuICAgICAgICBpZDogaWQyXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBzbG90OiBzbG90LnZhbHVlLFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWVcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBzcmMvY29tcG9uZW50cy9kaWFsb2cvZGlhbG9nLnRzXG52YXIgRGlhbG9nQ29udGV4dCA9IFN5bWJvbChcIkRpYWxvZ0NvbnRleHRcIik7XG5mdW5jdGlvbiB1c2VEaWFsb2dDb250ZXh0KGNvbXBvbmVudCkge1xuICBsZXQgY29udGV4dCA9ICgwLCBpbXBvcnRfdnVlMTcuaW5qZWN0KShEaWFsb2dDb250ZXh0LCBudWxsKTtcbiAgaWYgKGNvbnRleHQgPT09IG51bGwpIHtcbiAgICBsZXQgZXJyID0gbmV3IEVycm9yKGA8JHtjb21wb25lbnR9IC8+IGlzIG1pc3NpbmcgYSBwYXJlbnQgPERpYWxvZyAvPiBjb21wb25lbnQuYCk7XG4gICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKVxuICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyLCB1c2VEaWFsb2dDb250ZXh0KTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG52YXIgTWlzc2luZyA9IFwiREM4Rjg5MkQtMkVCRC00NDdDLUE0QzgtQTAzMDU4NDM2RkY0XCI7XG52YXIgRGlhbG9nID0gKDAsIGltcG9ydF92dWUxNy5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJEaWFsb2dcIixcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH0sXG4gICAgc3RhdGljOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgdW5tb3VudDogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiB0cnVlIH0sXG4gICAgb3BlbjogeyB0eXBlOiBbQm9vbGVhbiwgU3RyaW5nXSwgZGVmYXVsdDogTWlzc2luZyB9LFxuICAgIGluaXRpYWxGb2N1czogeyB0eXBlOiBPYmplY3QsIGRlZmF1bHQ6IG51bGwgfVxuICB9LFxuICBlbWl0czogeyBjbG9zZTogKF9jbG9zZSkgPT4gdHJ1ZSB9LFxuICBzZXR1cChwcm9wcywgeyBlbWl0LCBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgdmFyIF9hO1xuICAgIGxldCByZWFkeSA9ICgwLCBpbXBvcnRfdnVlMTcucmVmKShmYWxzZSk7XG4gICAgKDAsIGltcG9ydF92dWUxNy5vbk1vdW50ZWQpKCgpID0+IHtcbiAgICAgIHJlYWR5LnZhbHVlID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBsZXQgbmVzdGVkRGlhbG9nQ291bnQgPSAoMCwgaW1wb3J0X3Z1ZTE3LnJlZikoMCk7XG4gICAgbGV0IHVzZXNPcGVuQ2xvc2VkU3RhdGUgPSB1c2VPcGVuQ2xvc2VkKCk7XG4gICAgbGV0IG9wZW4gPSAoMCwgaW1wb3J0X3Z1ZTE3LmNvbXB1dGVkKSgoKSA9PiB7XG4gICAgICBpZiAocHJvcHMub3BlbiA9PT0gTWlzc2luZyAmJiB1c2VzT3BlbkNsb3NlZFN0YXRlICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBtYXRjaCh1c2VzT3BlbkNsb3NlZFN0YXRlLnZhbHVlLCB7XG4gICAgICAgICAgWzAgLyogT3BlbiAqL106IHRydWUsXG4gICAgICAgICAgWzEgLyogQ2xvc2VkICovXTogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvcHMub3BlbjtcbiAgICB9KTtcbiAgICBsZXQgY29udGFpbmVycyA9ICgwLCBpbXBvcnRfdnVlMTcucmVmKSgvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpKTtcbiAgICBsZXQgaW50ZXJuYWxEaWFsb2dSZWYgPSAoMCwgaW1wb3J0X3Z1ZTE3LnJlZikobnVsbCk7XG4gICAgbGV0IG1haW5UcmVlTm9kZSA9ICgwLCBpbXBvcnRfdnVlMTcucmVmKShudWxsKTtcbiAgICBsZXQgb3duZXJEb2N1bWVudCA9ICgwLCBpbXBvcnRfdnVlMTcuY29tcHV0ZWQpKCgpID0+IGdldE93bmVyRG9jdW1lbnQoaW50ZXJuYWxEaWFsb2dSZWYpKTtcbiAgICBleHBvc2UoeyBlbDogaW50ZXJuYWxEaWFsb2dSZWYsICRlbDogaW50ZXJuYWxEaWFsb2dSZWYgfSk7XG4gICAgbGV0IGhhc09wZW4gPSBwcm9wcy5vcGVuICE9PSBNaXNzaW5nIHx8IHVzZXNPcGVuQ2xvc2VkU3RhdGUgIT09IG51bGw7XG4gICAgaWYgKCFoYXNPcGVuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFlvdSBmb3Jnb3QgdG8gcHJvdmlkZSBhbiBcXGBvcGVuXFxgIHByb3AgdG8gdGhlIFxcYERpYWxvZ1xcYC5gKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvcGVuLnZhbHVlICE9PSBcImJvb2xlYW5cIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3UgcHJvdmlkZWQgYW4gXFxgb3BlblxcYCBwcm9wIHRvIHRoZSBcXGBEaWFsb2dcXGAsIGJ1dCB0aGUgdmFsdWUgaXMgbm90IGEgYm9vbGVhbi4gUmVjZWl2ZWQ6ICR7b3Blbi52YWx1ZSA9PT0gTWlzc2luZyA/IHZvaWQgMCA6IHByb3BzLm9wZW59YCk7XG4gICAgfVxuICAgIGxldCBkaWFsb2dTdGF0ZSA9ICgwLCBpbXBvcnRfdnVlMTcuY29tcHV0ZWQpKCgpID0+ICFyZWFkeS52YWx1ZSA/IDEgLyogQ2xvc2VkICovIDogb3Blbi52YWx1ZSA/IDAgLyogT3BlbiAqLyA6IDEgLyogQ2xvc2VkICovKTtcbiAgICBsZXQgZW5hYmxlZCA9ICgwLCBpbXBvcnRfdnVlMTcuY29tcHV0ZWQpKCgpID0+IGRpYWxvZ1N0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8pO1xuICAgIGxldCBoYXNOZXN0ZWREaWFsb2dzID0gKDAsIGltcG9ydF92dWUxNy5jb21wdXRlZCkoKCkgPT4gbmVzdGVkRGlhbG9nQ291bnQudmFsdWUgPiAxKTtcbiAgICBsZXQgaGFzUGFyZW50RGlhbG9nID0gKDAsIGltcG9ydF92dWUxNy5pbmplY3QpKERpYWxvZ0NvbnRleHQsIG51bGwpICE9PSBudWxsO1xuICAgIGxldCBwb3NpdGlvbiA9ICgwLCBpbXBvcnRfdnVlMTcuY29tcHV0ZWQpKCgpID0+ICFoYXNOZXN0ZWREaWFsb2dzLnZhbHVlID8gXCJsZWFmXCIgOiBcInBhcmVudFwiKTtcbiAgICB1c2VJbmVydE90aGVycyhpbnRlcm5hbERpYWxvZ1JlZiwgKDAsIGltcG9ydF92dWUxNy5jb21wdXRlZCkoKCkgPT4gaGFzTmVzdGVkRGlhbG9ncy52YWx1ZSA/IGVuYWJsZWQudmFsdWUgOiBmYWxzZSkpO1xuICAgIHVzZVN0YWNrUHJvdmlkZXIoe1xuICAgICAgdHlwZTogXCJEaWFsb2dcIixcbiAgICAgIGVsZW1lbnQ6IGludGVybmFsRGlhbG9nUmVmLFxuICAgICAgb25VcGRhdGU6IChtZXNzYWdlLCB0eXBlLCBlbGVtZW50KSA9PiB7XG4gICAgICAgIGlmICh0eXBlICE9PSBcIkRpYWxvZ1wiKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcmV0dXJuIG1hdGNoKG1lc3NhZ2UsIHtcbiAgICAgICAgICBbMCAvKiBBZGQgKi9dKCkge1xuICAgICAgICAgICAgY29udGFpbmVycy52YWx1ZS5hZGQoZWxlbWVudCk7XG4gICAgICAgICAgICBuZXN0ZWREaWFsb2dDb3VudC52YWx1ZSArPSAxO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgWzEgLyogUmVtb3ZlICovXSgpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lcnMudmFsdWUuZGVsZXRlKGVsZW1lbnQpO1xuICAgICAgICAgICAgbmVzdGVkRGlhbG9nQ291bnQudmFsdWUgLT0gMTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGxldCBkZXNjcmliZWRieSA9IHVzZURlc2NyaXB0aW9ucyh7XG4gICAgICBuYW1lOiBcIkRpYWxvZ0Rlc2NyaXB0aW9uXCIsXG4gICAgICBzbG90OiAoMCwgaW1wb3J0X3Z1ZTE3LmNvbXB1dGVkKSgoKSA9PiAoeyBvcGVuOiBvcGVuLnZhbHVlIH0pKVxuICAgIH0pO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1kaWFsb2ctJHt1c2VJZCgpfWA7XG4gICAgbGV0IHRpdGxlSWQgPSAoMCwgaW1wb3J0X3Z1ZTE3LnJlZikobnVsbCk7XG4gICAgbGV0IGFwaSA9IHtcbiAgICAgIHRpdGxlSWQsXG4gICAgICBwYW5lbFJlZjogKDAsIGltcG9ydF92dWUxNy5yZWYpKG51bGwpLFxuICAgICAgZGlhbG9nU3RhdGUsXG4gICAgICBzZXRUaXRsZUlkKGlkMykge1xuICAgICAgICBpZiAodGl0bGVJZC52YWx1ZSA9PT0gaWQzKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdGl0bGVJZC52YWx1ZSA9IGlkMztcbiAgICAgIH0sXG4gICAgICBjbG9zZSgpIHtcbiAgICAgICAgZW1pdChcImNsb3NlXCIsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgICgwLCBpbXBvcnRfdnVlMTcucHJvdmlkZSkoRGlhbG9nQ29udGV4dCwgYXBpKTtcbiAgICB1c2VPdXRzaWRlQ2xpY2soKCkgPT4ge1xuICAgICAgdmFyIF9hMiwgX2IsIF9jO1xuICAgICAgbGV0IHJvb3RDb250YWluZXJzID0gQXJyYXkuZnJvbSgoX2IgPSAoX2EyID0gb3duZXJEb2N1bWVudC52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5xdWVyeVNlbGVjdG9yQWxsKFwiYm9keSA+ICosIFtkYXRhLWhlYWRsZXNzdWktcG9ydGFsXVwiKSkgIT0gbnVsbCA/IF9iIDogW10pLmZpbHRlcigoY29udGFpbmVyKSA9PiB7XG4gICAgICAgIGlmICghKGNvbnRhaW5lciBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSlcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChjb250YWluZXIuY29udGFpbnMoZG9tKG1haW5UcmVlTm9kZSkpKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKGFwaS5wYW5lbFJlZi52YWx1ZSAmJiBjb250YWluZXIuY29udGFpbnMoYXBpLnBhbmVsUmVmLnZhbHVlKSlcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gWy4uLnJvb3RDb250YWluZXJzLCAoX2MgPSBhcGkucGFuZWxSZWYudmFsdWUpICE9IG51bGwgPyBfYyA6IGludGVybmFsRGlhbG9nUmVmLnZhbHVlXTtcbiAgICB9LCAoX2V2ZW50LCB0YXJnZXQpID0+IHtcbiAgICAgIGFwaS5jbG9zZSgpO1xuICAgICAgKDAsIGltcG9ydF92dWUxNy5uZXh0VGljaykoKCkgPT4gdGFyZ2V0ID09IG51bGwgPyB2b2lkIDAgOiB0YXJnZXQuZm9jdXMoKSk7XG4gICAgfSwgKDAsIGltcG9ydF92dWUxNy5jb21wdXRlZCkoKCkgPT4gZGlhbG9nU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyAmJiAhaGFzTmVzdGVkRGlhbG9ncy52YWx1ZSkpO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIoKF9hID0gb3duZXJEb2N1bWVudC52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmRlZmF1bHRWaWV3LCBcImtleWRvd25cIiwgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGV2ZW50LmtleSAhPT0gXCJFc2NhcGVcIiAvKiBFc2NhcGUgKi8pXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChkaWFsb2dTdGF0ZS52YWx1ZSAhPT0gMCAvKiBPcGVuICovKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoaGFzTmVzdGVkRGlhbG9ncy52YWx1ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgYXBpLmNsb3NlKCk7XG4gICAgfSk7XG4gICAgKDAsIGltcG9ydF92dWUxNy53YXRjaEVmZmVjdCkoKG9uSW52YWxpZGF0ZSkgPT4ge1xuICAgICAgdmFyIF9hMjtcbiAgICAgIGlmIChkaWFsb2dTdGF0ZS52YWx1ZSAhPT0gMCAvKiBPcGVuICovKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoaGFzUGFyZW50RGlhbG9nKVxuICAgICAgICByZXR1cm47XG4gICAgICBsZXQgb3duZXIgPSBvd25lckRvY3VtZW50LnZhbHVlO1xuICAgICAgaWYgKCFvd25lcilcbiAgICAgICAgcmV0dXJuO1xuICAgICAgbGV0IGRvY3VtZW50RWxlbWVudCA9IG93bmVyID09IG51bGwgPyB2b2lkIDAgOiBvd25lci5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICBsZXQgb3duZXJXaW5kb3cgPSAoX2EyID0gb3duZXIuZGVmYXVsdFZpZXcpICE9IG51bGwgPyBfYTIgOiB3aW5kb3c7XG4gICAgICBsZXQgb3ZlcmZsb3cgPSBkb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3c7XG4gICAgICBsZXQgcGFkZGluZ1JpZ2h0ID0gZG9jdW1lbnRFbGVtZW50LnN0eWxlLnBhZGRpbmdSaWdodDtcbiAgICAgIGxldCBzY3JvbGxiYXJXaWR0aEJlZm9yZSA9IG93bmVyV2luZG93LmlubmVyV2lkdGggLSBkb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgICBkb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSBcImhpZGRlblwiO1xuICAgICAgaWYgKHNjcm9sbGJhcldpZHRoQmVmb3JlID4gMCkge1xuICAgICAgICBsZXQgc2Nyb2xsYmFyV2lkdGhBZnRlciA9IGRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCAtIGRvY3VtZW50RWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgbGV0IHNjcm9sbGJhcldpZHRoID0gc2Nyb2xsYmFyV2lkdGhCZWZvcmUgLSBzY3JvbGxiYXJXaWR0aEFmdGVyO1xuICAgICAgICBkb2N1bWVudEVsZW1lbnQuc3R5bGUucGFkZGluZ1JpZ2h0ID0gYCR7c2Nyb2xsYmFyV2lkdGh9cHhgO1xuICAgICAgfVxuICAgICAgb25JbnZhbGlkYXRlKCgpID0+IHtcbiAgICAgICAgZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gb3ZlcmZsb3c7XG4gICAgICAgIGRvY3VtZW50RWxlbWVudC5zdHlsZS5wYWRkaW5nUmlnaHQgPSBwYWRkaW5nUmlnaHQ7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE3LndhdGNoRWZmZWN0KSgob25JbnZhbGlkYXRlKSA9PiB7XG4gICAgICBpZiAoZGlhbG9nU3RhdGUudmFsdWUgIT09IDAgLyogT3BlbiAqLylcbiAgICAgICAgcmV0dXJuO1xuICAgICAgbGV0IGNvbnRhaW5lciA9IGRvbShpbnRlcm5hbERpYWxvZ1JlZik7XG4gICAgICBpZiAoIWNvbnRhaW5lcilcbiAgICAgICAgcmV0dXJuO1xuICAgICAgbGV0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgICAgIGZvciAobGV0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgICBpZiAoZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LnggPT09IDAgJiYgZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LnkgPT09IDAgJiYgZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LndpZHRoID09PSAwICYmIGVudHJ5LmJvdW5kaW5nQ2xpZW50UmVjdC5oZWlnaHQgPT09IDApIHtcbiAgICAgICAgICAgIGFwaS5jbG9zZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBvYnNlcnZlci5vYnNlcnZlKGNvbnRhaW5lcik7XG4gICAgICBvbkludmFsaWRhdGUoKCkgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICAuLi5hdHRycyxcbiAgICAgICAgcmVmOiBpbnRlcm5hbERpYWxvZ1JlZixcbiAgICAgICAgaWQ6IGlkMixcbiAgICAgICAgcm9sZTogXCJkaWFsb2dcIixcbiAgICAgICAgXCJhcmlhLW1vZGFsXCI6IGRpYWxvZ1N0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8gPyB0cnVlIDogdm9pZCAwLFxuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiB0aXRsZUlkLnZhbHVlLFxuICAgICAgICBcImFyaWEtZGVzY3JpYmVkYnlcIjogZGVzY3JpYmVkYnkudmFsdWVcbiAgICAgIH07XG4gICAgICBsZXQgeyBvcGVuOiBfLCBpbml0aWFsRm9jdXMsIC4uLnRoZWlyUHJvcHMgfSA9IHByb3BzO1xuICAgICAgbGV0IHNsb3QgPSB7IG9wZW46IGRpYWxvZ1N0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8gfTtcbiAgICAgIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTE3LmgpKEZvcmNlUG9ydGFsUm9vdCwgeyBmb3JjZTogdHJ1ZSB9LCAoKSA9PiBbXG4gICAgICAgICgwLCBpbXBvcnRfdnVlMTcuaCkoUG9ydGFsLCAoKSA9PiAoMCwgaW1wb3J0X3Z1ZTE3LmgpKFBvcnRhbEdyb3VwLCB7IHRhcmdldDogaW50ZXJuYWxEaWFsb2dSZWYudmFsdWUgfSwgKCkgPT4gKDAsIGltcG9ydF92dWUxNy5oKShGb3JjZVBvcnRhbFJvb3QsIHsgZm9yY2U6IGZhbHNlIH0sICgpID0+ICgwLCBpbXBvcnRfdnVlMTcuaCkoRm9jdXNUcmFwLCB7XG4gICAgICAgICAgaW5pdGlhbEZvY3VzLFxuICAgICAgICAgIGNvbnRhaW5lcnMsXG4gICAgICAgICAgZmVhdHVyZXM6IGVuYWJsZWQudmFsdWUgPyBtYXRjaChwb3NpdGlvbi52YWx1ZSwge1xuICAgICAgICAgICAgcGFyZW50OiBGb2N1c1RyYXAuZmVhdHVyZXMuUmVzdG9yZUZvY3VzLFxuICAgICAgICAgICAgbGVhZjogRm9jdXNUcmFwLmZlYXR1cmVzLkFsbCAmIH5Gb2N1c1RyYXAuZmVhdHVyZXMuRm9jdXNMb2NrXG4gICAgICAgICAgfSkgOiBGb2N1c1RyYXAuZmVhdHVyZXMuTm9uZVxuICAgICAgICB9LCAoKSA9PiByZW5kZXIoe1xuICAgICAgICAgIG91clByb3BzLFxuICAgICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgICAgc2xvdCxcbiAgICAgICAgICBhdHRycyxcbiAgICAgICAgICBzbG90cyxcbiAgICAgICAgICB2aXNpYmxlOiBkaWFsb2dTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovLFxuICAgICAgICAgIGZlYXR1cmVzOiAxIC8qIFJlbmRlclN0cmF0ZWd5ICovIHwgMiAvKiBTdGF0aWMgKi8sXG4gICAgICAgICAgbmFtZTogXCJEaWFsb2dcIlxuICAgICAgICB9KSkpKSksXG4gICAgICAgICgwLCBpbXBvcnRfdnVlMTcuaCkoSGlkZGVuLCB7IGZlYXR1cmVzOiA0IC8qIEhpZGRlbiAqLywgcmVmOiBtYWluVHJlZU5vZGUgfSlcbiAgICAgIF0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIERpYWxvZ092ZXJsYXkgPSAoMCwgaW1wb3J0X3Z1ZTE3LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkRpYWxvZ092ZXJsYXlcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlRGlhbG9nQ29udGV4dChcIkRpYWxvZ092ZXJsYXlcIik7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLWRpYWxvZy1vdmVybGF5LSR7dXNlSWQoKX1gO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSBldmVudC5jdXJyZW50VGFyZ2V0KVxuICAgICAgICByZXR1cm47XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBhcGkuY2xvc2UoKTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgaWQ6IGlkMixcbiAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlLFxuICAgICAgICBvbkNsaWNrOiBoYW5kbGVDbGlja1xuICAgICAgfTtcbiAgICAgIGxldCB0aGVpclByb3BzID0gcHJvcHM7XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIHNsb3Q6IHsgb3BlbjogYXBpLmRpYWxvZ1N0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8gfSxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIkRpYWxvZ092ZXJsYXlcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgRGlhbG9nQmFja2Ryb3AgPSAoMCwgaW1wb3J0X3Z1ZTE3LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkRpYWxvZ0JhY2tkcm9wXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9XG4gIH0sXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlRGlhbG9nQ29udGV4dChcIkRpYWxvZ0JhY2tkcm9wXCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1kaWFsb2ctYmFja2Ryb3AtJHt1c2VJZCgpfWA7XG4gICAgbGV0IGludGVybmFsQmFja2Ryb3BSZWYgPSAoMCwgaW1wb3J0X3Z1ZTE3LnJlZikobnVsbCk7XG4gICAgZXhwb3NlKHsgZWw6IGludGVybmFsQmFja2Ryb3BSZWYsICRlbDogaW50ZXJuYWxCYWNrZHJvcFJlZiB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE3Lm9uTW91bnRlZCkoKCkgPT4ge1xuICAgICAgaWYgKGFwaS5wYW5lbFJlZi52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEEgPERpYWxvZ0JhY2tkcm9wIC8+IGNvbXBvbmVudCBpcyBiZWluZyB1c2VkLCBidXQgYSA8RGlhbG9nUGFuZWwgLz4gY29tcG9uZW50IGlzIG1pc3NpbmcuYCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB0aGVpclByb3BzID0gcHJvcHM7XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIHJlZjogaW50ZXJuYWxCYWNrZHJvcFJlZixcbiAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlXG4gICAgICB9O1xuICAgICAgcmV0dXJuICgwLCBpbXBvcnRfdnVlMTcuaCkoRm9yY2VQb3J0YWxSb290LCB7IGZvcmNlOiB0cnVlIH0sICgpID0+ICgwLCBpbXBvcnRfdnVlMTcuaCkoUG9ydGFsLCAoKSA9PiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wczogeyAuLi5hdHRycywgLi4udGhlaXJQcm9wcyB9LFxuICAgICAgICBzbG90OiB7IG9wZW46IGFwaS5kaWFsb2dTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovIH0sXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJEaWFsb2dCYWNrZHJvcFwiXG4gICAgICB9KSkpO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIERpYWxvZ1BhbmVsID0gKDAsIGltcG9ydF92dWUxNy5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJEaWFsb2dQYW5lbFwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZURpYWxvZ0NvbnRleHQoXCJEaWFsb2dQYW5lbFwiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktZGlhbG9nLXBhbmVsLSR7dXNlSWQoKX1gO1xuICAgIGV4cG9zZSh7IGVsOiBhcGkucGFuZWxSZWYsICRlbDogYXBpLnBhbmVsUmVmIH0pO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2ZW50KSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgaWQ6IGlkMixcbiAgICAgICAgcmVmOiBhcGkucGFuZWxSZWYsXG4gICAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrXG4gICAgICB9O1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBwcm9wcztcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgc2xvdDogeyBvcGVuOiBhcGkuZGlhbG9nU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyB9LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiRGlhbG9nUGFuZWxcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgRGlhbG9nVGl0bGUgPSAoMCwgaW1wb3J0X3Z1ZTE3LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkRpYWxvZ1RpdGxlXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJoMlwiIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlRGlhbG9nQ29udGV4dChcIkRpYWxvZ1RpdGxlXCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1kaWFsb2ctdGl0bGUtJHt1c2VJZCgpfWA7XG4gICAgKDAsIGltcG9ydF92dWUxNy5vbk1vdW50ZWQpKCgpID0+IHtcbiAgICAgIGFwaS5zZXRUaXRsZUlkKGlkMik7XG4gICAgICAoMCwgaW1wb3J0X3Z1ZTE3Lm9uVW5tb3VudGVkKSgoKSA9PiBhcGkuc2V0VGl0bGVJZChudWxsKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHsgaWQ6IGlkMiB9O1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBwcm9wcztcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgc2xvdDogeyBvcGVuOiBhcGkuZGlhbG9nU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyB9LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiRGlhbG9nVGl0bGVcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgRGlhbG9nRGVzY3JpcHRpb24gPSBEZXNjcmlwdGlvbjtcblxuLy8gc3JjL2NvbXBvbmVudHMvZGlzY2xvc3VyZS9kaXNjbG9zdXJlLnRzXG52YXIgaW1wb3J0X3Z1ZTE4ID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBEaXNjbG9zdXJlQ29udGV4dCA9IFN5bWJvbChcIkRpc2Nsb3N1cmVDb250ZXh0XCIpO1xuZnVuY3Rpb24gdXNlRGlzY2xvc3VyZUNvbnRleHQoY29tcG9uZW50KSB7XG4gIGxldCBjb250ZXh0ID0gKDAsIGltcG9ydF92dWUxOC5pbmplY3QpKERpc2Nsb3N1cmVDb250ZXh0LCBudWxsKTtcbiAgaWYgKGNvbnRleHQgPT09IG51bGwpIHtcbiAgICBsZXQgZXJyID0gbmV3IEVycm9yKGA8JHtjb21wb25lbnR9IC8+IGlzIG1pc3NpbmcgYSBwYXJlbnQgPERpc2Nsb3N1cmUgLz4gY29tcG9uZW50LmApO1xuICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVyciwgdXNlRGlzY2xvc3VyZUNvbnRleHQpO1xuICAgIHRocm93IGVycjtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cbnZhciBEaXNjbG9zdXJlUGFuZWxDb250ZXh0ID0gU3ltYm9sKFwiRGlzY2xvc3VyZVBhbmVsQ29udGV4dFwiKTtcbmZ1bmN0aW9uIHVzZURpc2Nsb3N1cmVQYW5lbENvbnRleHQoKSB7XG4gIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTE4LmluamVjdCkoRGlzY2xvc3VyZVBhbmVsQ29udGV4dCwgbnVsbCk7XG59XG52YXIgRGlzY2xvc3VyZSA9ICgwLCBpbXBvcnRfdnVlMTguZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiRGlzY2xvc3VyZVwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwidGVtcGxhdGVcIiB9LFxuICAgIGRlZmF1bHRPcGVuOiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogZmFsc2UgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBzbG90cywgYXR0cnMgfSkge1xuICAgIGxldCBidXR0b25JZCA9IGBoZWFkbGVzc3VpLWRpc2Nsb3N1cmUtYnV0dG9uLSR7dXNlSWQoKX1gO1xuICAgIGxldCBwYW5lbElkID0gYGhlYWRsZXNzdWktZGlzY2xvc3VyZS1wYW5lbC0ke3VzZUlkKCl9YDtcbiAgICBsZXQgZGlzY2xvc3VyZVN0YXRlID0gKDAsIGltcG9ydF92dWUxOC5yZWYpKHByb3BzLmRlZmF1bHRPcGVuID8gMCAvKiBPcGVuICovIDogMSAvKiBDbG9zZWQgKi8pO1xuICAgIGxldCBwYW5lbFJlZiA9ICgwLCBpbXBvcnRfdnVlMTgucmVmKShudWxsKTtcbiAgICBsZXQgYnV0dG9uUmVmID0gKDAsIGltcG9ydF92dWUxOC5yZWYpKG51bGwpO1xuICAgIGxldCBhcGkgPSB7XG4gICAgICBidXR0b25JZCxcbiAgICAgIHBhbmVsSWQsXG4gICAgICBkaXNjbG9zdXJlU3RhdGUsXG4gICAgICBwYW5lbDogcGFuZWxSZWYsXG4gICAgICBidXR0b246IGJ1dHRvblJlZixcbiAgICAgIHRvZ2dsZURpc2Nsb3N1cmUoKSB7XG4gICAgICAgIGRpc2Nsb3N1cmVTdGF0ZS52YWx1ZSA9IG1hdGNoKGRpc2Nsb3N1cmVTdGF0ZS52YWx1ZSwge1xuICAgICAgICAgIFswIC8qIE9wZW4gKi9dOiAxIC8qIENsb3NlZCAqLyxcbiAgICAgICAgICBbMSAvKiBDbG9zZWQgKi9dOiAwIC8qIE9wZW4gKi9cbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgY2xvc2VEaXNjbG9zdXJlKCkge1xuICAgICAgICBpZiAoZGlzY2xvc3VyZVN0YXRlLnZhbHVlID09PSAxIC8qIENsb3NlZCAqLylcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGRpc2Nsb3N1cmVTdGF0ZS52YWx1ZSA9IDEgLyogQ2xvc2VkICovO1xuICAgICAgfSxcbiAgICAgIGNsb3NlKGZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgYXBpLmNsb3NlRGlzY2xvc3VyZSgpO1xuICAgICAgICBsZXQgcmVzdG9yZUVsZW1lbnQgPSAoKCkgPT4ge1xuICAgICAgICAgIGlmICghZm9jdXNhYmxlRWxlbWVudClcbiAgICAgICAgICAgIHJldHVybiBkb20oYXBpLmJ1dHRvbik7XG4gICAgICAgICAgaWYgKGZvY3VzYWJsZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudClcbiAgICAgICAgICAgIHJldHVybiBmb2N1c2FibGVFbGVtZW50O1xuICAgICAgICAgIGlmIChmb2N1c2FibGVFbGVtZW50LnZhbHVlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpXG4gICAgICAgICAgICByZXR1cm4gZG9tKGZvY3VzYWJsZUVsZW1lbnQpO1xuICAgICAgICAgIHJldHVybiBkb20oYXBpLmJ1dHRvbik7XG4gICAgICAgIH0pKCk7XG4gICAgICAgIHJlc3RvcmVFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiByZXN0b3JlRWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH07XG4gICAgKDAsIGltcG9ydF92dWUxOC5wcm92aWRlKShEaXNjbG9zdXJlQ29udGV4dCwgYXBpKTtcbiAgICB1c2VPcGVuQ2xvc2VkUHJvdmlkZXIoKDAsIGltcG9ydF92dWUxOC5jb21wdXRlZCkoKCkgPT4ge1xuICAgICAgcmV0dXJuIG1hdGNoKGRpc2Nsb3N1cmVTdGF0ZS52YWx1ZSwge1xuICAgICAgICBbMCAvKiBPcGVuICovXTogMCAvKiBPcGVuICovLFxuICAgICAgICBbMSAvKiBDbG9zZWQgKi9dOiAxIC8qIENsb3NlZCAqL1xuICAgICAgfSk7XG4gICAgfSkpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgeyBkZWZhdWx0T3BlbjogXywgLi4udGhlaXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgICBsZXQgc2xvdCA9IHsgb3BlbjogZGlzY2xvc3VyZVN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8sIGNsb3NlOiBhcGkuY2xvc2UgfTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBvdXJQcm9wczoge30sXG4gICAgICAgIHNsb3QsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBhdHRycyxcbiAgICAgICAgbmFtZTogXCJEaXNjbG9zdXJlXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIERpc2Nsb3N1cmVCdXR0b24gPSAoMCwgaW1wb3J0X3Z1ZTE4LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkRpc2Nsb3N1cmVCdXR0b25cIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImJ1dHRvblwiIH0sXG4gICAgZGlzYWJsZWQ6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBmYWxzZSB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlRGlzY2xvc3VyZUNvbnRleHQoXCJEaXNjbG9zdXJlQnV0dG9uXCIpO1xuICAgIGxldCBwYW5lbENvbnRleHQgPSB1c2VEaXNjbG9zdXJlUGFuZWxDb250ZXh0KCk7XG4gICAgbGV0IGlzV2l0aGluUGFuZWwgPSBwYW5lbENvbnRleHQgPT09IG51bGwgPyBmYWxzZSA6IHBhbmVsQ29udGV4dCA9PT0gYXBpLnBhbmVsSWQ7XG4gICAgbGV0IGludGVybmFsQnV0dG9uUmVmID0gKDAsIGltcG9ydF92dWUxOC5yZWYpKG51bGwpO1xuICAgIGV4cG9zZSh7IGVsOiBpbnRlcm5hbEJ1dHRvblJlZiwgJGVsOiBpbnRlcm5hbEJ1dHRvblJlZiB9KTtcbiAgICBpZiAoIWlzV2l0aGluUGFuZWwpIHtcbiAgICAgICgwLCBpbXBvcnRfdnVlMTgud2F0Y2hFZmZlY3QpKCgpID0+IHtcbiAgICAgICAgYXBpLmJ1dHRvbi52YWx1ZSA9IGludGVybmFsQnV0dG9uUmVmLnZhbHVlO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGxldCB0eXBlID0gdXNlUmVzb2x2ZUJ1dHRvblR5cGUoKDAsIGltcG9ydF92dWUxOC5jb21wdXRlZCkoKCkgPT4gKHsgYXM6IHByb3BzLmFzLCB0eXBlOiBhdHRycy50eXBlIH0pKSwgaW50ZXJuYWxCdXR0b25SZWYpO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKCkge1xuICAgICAgdmFyIF9hO1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoaXNXaXRoaW5QYW5lbCkge1xuICAgICAgICBhcGkudG9nZ2xlRGlzY2xvc3VyZSgpO1xuICAgICAgICAoX2EgPSBkb20oYXBpLmJ1dHRvbikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXBpLnRvZ2dsZURpc2Nsb3N1cmUoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5RG93bihldmVudCkge1xuICAgICAgdmFyIF9hO1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoaXNXaXRoaW5QYW5lbCkge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICAgIGNhc2UgXCIgXCIgLyogU3BhY2UgKi86XG4gICAgICAgICAgY2FzZSBcIkVudGVyXCIgLyogRW50ZXIgKi86XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBhcGkudG9nZ2xlRGlzY2xvc3VyZSgpO1xuICAgICAgICAgICAgKF9hID0gZG9tKGFwaS5idXR0b24pKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICAgIGNhc2UgXCIgXCIgLyogU3BhY2UgKi86XG4gICAgICAgICAgY2FzZSBcIkVudGVyXCIgLyogRW50ZXIgKi86XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBhcGkudG9nZ2xlRGlzY2xvc3VyZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5VXAoZXZlbnQpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgXCIgXCIgLyogU3BhY2UgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBzbG90ID0geyBvcGVuOiBhcGkuZGlzY2xvc3VyZVN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8gfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IGlzV2l0aGluUGFuZWwgPyB7XG4gICAgICAgIHJlZjogaW50ZXJuYWxCdXR0b25SZWYsXG4gICAgICAgIHR5cGU6IHR5cGUudmFsdWUsXG4gICAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLFxuICAgICAgICBvbktleWRvd246IGhhbmRsZUtleURvd25cbiAgICAgIH0gOiB7XG4gICAgICAgIGlkOiBhcGkuYnV0dG9uSWQsXG4gICAgICAgIHJlZjogaW50ZXJuYWxCdXR0b25SZWYsXG4gICAgICAgIHR5cGU6IHR5cGUudmFsdWUsXG4gICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBwcm9wcy5kaXNhYmxlZCA/IHZvaWQgMCA6IGFwaS5kaXNjbG9zdXJlU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyxcbiAgICAgICAgXCJhcmlhLWNvbnRyb2xzXCI6IGRvbShhcGkucGFuZWwpID8gYXBpLnBhbmVsSWQgOiB2b2lkIDAsXG4gICAgICAgIGRpc2FibGVkOiBwcm9wcy5kaXNhYmxlZCA/IHRydWUgOiB2b2lkIDAsXG4gICAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLFxuICAgICAgICBvbktleWRvd246IGhhbmRsZUtleURvd24sXG4gICAgICAgIG9uS2V5dXA6IGhhbmRsZUtleVVwXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzOiBwcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIkRpc2Nsb3N1cmVCdXR0b25cIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgRGlzY2xvc3VyZVBhbmVsID0gKDAsIGltcG9ydF92dWUxOC5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJEaXNjbG9zdXJlUGFuZWxcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH0sXG4gICAgc3RhdGljOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgdW5tb3VudDogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiB0cnVlIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSB1c2VEaXNjbG9zdXJlQ29udGV4dChcIkRpc2Nsb3N1cmVQYW5lbFwiKTtcbiAgICBleHBvc2UoeyBlbDogYXBpLnBhbmVsLCAkZWw6IGFwaS5wYW5lbCB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE4LnByb3ZpZGUpKERpc2Nsb3N1cmVQYW5lbENvbnRleHQsIGFwaS5wYW5lbElkKTtcbiAgICBsZXQgdXNlc09wZW5DbG9zZWRTdGF0ZSA9IHVzZU9wZW5DbG9zZWQoKTtcbiAgICBsZXQgdmlzaWJsZSA9ICgwLCBpbXBvcnRfdnVlMTguY29tcHV0ZWQpKCgpID0+IHtcbiAgICAgIGlmICh1c2VzT3BlbkNsb3NlZFN0YXRlICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB1c2VzT3BlbkNsb3NlZFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi87XG4gICAgICB9XG4gICAgICByZXR1cm4gYXBpLmRpc2Nsb3N1cmVTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovO1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgc2xvdCA9IHsgb3BlbjogYXBpLmRpc2Nsb3N1cmVTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovLCBjbG9zZTogYXBpLmNsb3NlIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7IGlkOiBhcGkucGFuZWxJZCwgcmVmOiBhcGkucGFuZWwgfTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wczogcHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgZmVhdHVyZXM6IDEgLyogUmVuZGVyU3RyYXRlZ3kgKi8gfCAyIC8qIFN0YXRpYyAqLyxcbiAgICAgICAgdmlzaWJsZTogdmlzaWJsZS52YWx1ZSxcbiAgICAgICAgbmFtZTogXCJEaXNjbG9zdXJlUGFuZWxcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIHNyYy9jb21wb25lbnRzL2xpc3Rib3gvbGlzdGJveC50c1xudmFyIGltcG9ydF92dWUxOSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5mdW5jdGlvbiBuZXh0RnJhbWUoY2IpIHtcbiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHJlcXVlc3RBbmltYXRpb25GcmFtZShjYikpO1xufVxudmFyIExpc3Rib3hDb250ZXh0ID0gU3ltYm9sKFwiTGlzdGJveENvbnRleHRcIik7XG5mdW5jdGlvbiB1c2VMaXN0Ym94Q29udGV4dChjb21wb25lbnQpIHtcbiAgbGV0IGNvbnRleHQgPSAoMCwgaW1wb3J0X3Z1ZTE5LmluamVjdCkoTGlzdGJveENvbnRleHQsIG51bGwpO1xuICBpZiAoY29udGV4dCA9PT0gbnVsbCkge1xuICAgIGxldCBlcnIgPSBuZXcgRXJyb3IoYDwke2NvbXBvbmVudH0gLz4gaXMgbWlzc2luZyBhIHBhcmVudCA8TGlzdGJveCAvPiBjb21wb25lbnQuYCk7XG4gICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKVxuICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyLCB1c2VMaXN0Ym94Q29udGV4dCk7XG4gICAgdGhyb3cgZXJyO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxudmFyIExpc3Rib3ggPSAoMCwgaW1wb3J0X3Z1ZTE5LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkxpc3Rib3hcIixcbiAgZW1pdHM6IHsgXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiOiAoX3ZhbHVlKSA9PiB0cnVlIH0sXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJ0ZW1wbGF0ZVwiIH0sXG4gICAgZGlzYWJsZWQ6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIGhvcml6b250YWw6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIG1vZGVsVmFsdWU6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nLCBOdW1iZXIsIEJvb2xlYW5dIH0sXG4gICAgbmFtZTogeyB0eXBlOiBTdHJpbmcsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgbXVsdGlwbGU6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBmYWxzZSB9XG4gIH0sXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHNldHVwKHByb3BzLCB7IHNsb3RzLCBhdHRycywgZW1pdCB9KSB7XG4gICAgbGV0IGxpc3Rib3hTdGF0ZSA9ICgwLCBpbXBvcnRfdnVlMTkucmVmKSgxIC8qIENsb3NlZCAqLyk7XG4gICAgbGV0IGxhYmVsUmVmID0gKDAsIGltcG9ydF92dWUxOS5yZWYpKG51bGwpO1xuICAgIGxldCBidXR0b25SZWYgPSAoMCwgaW1wb3J0X3Z1ZTE5LnJlZikobnVsbCk7XG4gICAgbGV0IG9wdGlvbnNSZWYgPSAoMCwgaW1wb3J0X3Z1ZTE5LnJlZikobnVsbCk7XG4gICAgbGV0IG9wdGlvbnMgPSAoMCwgaW1wb3J0X3Z1ZTE5LnJlZikoW10pO1xuICAgIGxldCBzZWFyY2hRdWVyeSA9ICgwLCBpbXBvcnRfdnVlMTkucmVmKShcIlwiKTtcbiAgICBsZXQgYWN0aXZlT3B0aW9uSW5kZXggPSAoMCwgaW1wb3J0X3Z1ZTE5LnJlZikobnVsbCk7XG4gICAgbGV0IGFjdGl2YXRpb25UcmlnZ2VyID0gKDAsIGltcG9ydF92dWUxOS5yZWYpKDEgLyogT3RoZXIgKi8pO1xuICAgIGZ1bmN0aW9uIGFkanVzdE9yZGVyZWRTdGF0ZShhZGp1c3RtZW50ID0gKGkpID0+IGkpIHtcbiAgICAgIGxldCBjdXJyZW50QWN0aXZlT3B0aW9uID0gYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgIT09IG51bGwgPyBvcHRpb25zLnZhbHVlW2FjdGl2ZU9wdGlvbkluZGV4LnZhbHVlXSA6IG51bGw7XG4gICAgICBsZXQgc29ydGVkT3B0aW9ucyA9IHNvcnRCeURvbU5vZGUoYWRqdXN0bWVudChvcHRpb25zLnZhbHVlLnNsaWNlKCkpLCAob3B0aW9uKSA9PiBkb20ob3B0aW9uLmRhdGFSZWYuZG9tUmVmKSk7XG4gICAgICBsZXQgYWRqdXN0ZWRBY3RpdmVPcHRpb25JbmRleCA9IGN1cnJlbnRBY3RpdmVPcHRpb24gPyBzb3J0ZWRPcHRpb25zLmluZGV4T2YoY3VycmVudEFjdGl2ZU9wdGlvbikgOiBudWxsO1xuICAgICAgaWYgKGFkanVzdGVkQWN0aXZlT3B0aW9uSW5kZXggPT09IC0xKSB7XG4gICAgICAgIGFkanVzdGVkQWN0aXZlT3B0aW9uSW5kZXggPSBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3B0aW9uczogc29ydGVkT3B0aW9ucyxcbiAgICAgICAgYWN0aXZlT3B0aW9uSW5kZXg6IGFkanVzdGVkQWN0aXZlT3B0aW9uSW5kZXhcbiAgICAgIH07XG4gICAgfVxuICAgIGxldCB2YWx1ZSA9ICgwLCBpbXBvcnRfdnVlMTkuY29tcHV0ZWQpKCgpID0+IHByb3BzLm1vZGVsVmFsdWUpO1xuICAgIGxldCBtb2RlID0gKDAsIGltcG9ydF92dWUxOS5jb21wdXRlZCkoKCkgPT4gcHJvcHMubXVsdGlwbGUgPyAxIC8qIE11bHRpICovIDogMCAvKiBTaW5nbGUgKi8pO1xuICAgIGxldCBhcGkgPSB7XG4gICAgICBsaXN0Ym94U3RhdGUsXG4gICAgICB2YWx1ZSxcbiAgICAgIG1vZGUsXG4gICAgICBjb21wYXJlKGEsIHopIHtcbiAgICAgICAgcmV0dXJuIGEgPT09IHo7XG4gICAgICB9LFxuICAgICAgb3JpZW50YXRpb246ICgwLCBpbXBvcnRfdnVlMTkuY29tcHV0ZWQpKCgpID0+IHByb3BzLmhvcml6b250YWwgPyBcImhvcml6b250YWxcIiA6IFwidmVydGljYWxcIiksXG4gICAgICBsYWJlbFJlZixcbiAgICAgIGJ1dHRvblJlZixcbiAgICAgIG9wdGlvbnNSZWYsXG4gICAgICBkaXNhYmxlZDogKDAsIGltcG9ydF92dWUxOS5jb21wdXRlZCkoKCkgPT4gcHJvcHMuZGlzYWJsZWQpLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHNlYXJjaFF1ZXJ5LFxuICAgICAgYWN0aXZlT3B0aW9uSW5kZXgsXG4gICAgICBhY3RpdmF0aW9uVHJpZ2dlcixcbiAgICAgIGNsb3NlTGlzdGJveCgpIHtcbiAgICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKGxpc3Rib3hTdGF0ZS52YWx1ZSA9PT0gMSAvKiBDbG9zZWQgKi8pXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBsaXN0Ym94U3RhdGUudmFsdWUgPSAxIC8qIENsb3NlZCAqLztcbiAgICAgICAgYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgPSBudWxsO1xuICAgICAgfSxcbiAgICAgIG9wZW5MaXN0Ym94KCkge1xuICAgICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAobGlzdGJveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8pXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBsaXN0Ym94U3RhdGUudmFsdWUgPSAwIC8qIE9wZW4gKi87XG4gICAgICB9LFxuICAgICAgZ29Ub09wdGlvbihmb2N1cywgaWQyLCB0cmlnZ2VyKSB7XG4gICAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChsaXN0Ym94U3RhdGUudmFsdWUgPT09IDEgLyogQ2xvc2VkICovKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGV0IGFkanVzdGVkU3RhdGUgPSBhZGp1c3RPcmRlcmVkU3RhdGUoKTtcbiAgICAgICAgbGV0IG5leHRBY3RpdmVPcHRpb25JbmRleCA9IGNhbGN1bGF0ZUFjdGl2ZUluZGV4KGZvY3VzID09PSA0IC8qIFNwZWNpZmljICovID8geyBmb2N1czogNCAvKiBTcGVjaWZpYyAqLywgaWQ6IGlkMiB9IDogeyBmb2N1cyB9LCB7XG4gICAgICAgICAgcmVzb2x2ZUl0ZW1zOiAoKSA9PiBhZGp1c3RlZFN0YXRlLm9wdGlvbnMsXG4gICAgICAgICAgcmVzb2x2ZUFjdGl2ZUluZGV4OiAoKSA9PiBhZGp1c3RlZFN0YXRlLmFjdGl2ZU9wdGlvbkluZGV4LFxuICAgICAgICAgIHJlc29sdmVJZDogKG9wdGlvbikgPT4gb3B0aW9uLmlkLFxuICAgICAgICAgIHJlc29sdmVEaXNhYmxlZDogKG9wdGlvbikgPT4gb3B0aW9uLmRhdGFSZWYuZGlzYWJsZWRcbiAgICAgICAgfSk7XG4gICAgICAgIHNlYXJjaFF1ZXJ5LnZhbHVlID0gXCJcIjtcbiAgICAgICAgYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgPSBuZXh0QWN0aXZlT3B0aW9uSW5kZXg7XG4gICAgICAgIGFjdGl2YXRpb25UcmlnZ2VyLnZhbHVlID0gdHJpZ2dlciAhPSBudWxsID8gdHJpZ2dlciA6IDEgLyogT3RoZXIgKi87XG4gICAgICAgIG9wdGlvbnMudmFsdWUgPSBhZGp1c3RlZFN0YXRlLm9wdGlvbnM7XG4gICAgICB9LFxuICAgICAgc2VhcmNoKHZhbHVlMikge1xuICAgICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAobGlzdGJveFN0YXRlLnZhbHVlID09PSAxIC8qIENsb3NlZCAqLylcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCB3YXNBbHJlYWR5U2VhcmNoaW5nID0gc2VhcmNoUXVlcnkudmFsdWUgIT09IFwiXCI7XG4gICAgICAgIGxldCBvZmZzZXQgPSB3YXNBbHJlYWR5U2VhcmNoaW5nID8gMCA6IDE7XG4gICAgICAgIHNlYXJjaFF1ZXJ5LnZhbHVlICs9IHZhbHVlMi50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBsZXQgcmVPcmRlcmVkT3B0aW9ucyA9IGFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlICE9PSBudWxsID8gb3B0aW9ucy52YWx1ZS5zbGljZShhY3RpdmVPcHRpb25JbmRleC52YWx1ZSArIG9mZnNldCkuY29uY2F0KG9wdGlvbnMudmFsdWUuc2xpY2UoMCwgYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgKyBvZmZzZXQpKSA6IG9wdGlvbnMudmFsdWU7XG4gICAgICAgIGxldCBtYXRjaGluZ09wdGlvbiA9IHJlT3JkZXJlZE9wdGlvbnMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24uZGF0YVJlZi50ZXh0VmFsdWUuc3RhcnRzV2l0aChzZWFyY2hRdWVyeS52YWx1ZSkgJiYgIW9wdGlvbi5kYXRhUmVmLmRpc2FibGVkKTtcbiAgICAgICAgbGV0IG1hdGNoSWR4ID0gbWF0Y2hpbmdPcHRpb24gPyBvcHRpb25zLnZhbHVlLmluZGV4T2YobWF0Y2hpbmdPcHRpb24pIDogLTE7XG4gICAgICAgIGlmIChtYXRjaElkeCA9PT0gLTEgfHwgbWF0Y2hJZHggPT09IGFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgPSBtYXRjaElkeDtcbiAgICAgICAgYWN0aXZhdGlvblRyaWdnZXIudmFsdWUgPSAxIC8qIE90aGVyICovO1xuICAgICAgfSxcbiAgICAgIGNsZWFyU2VhcmNoKCkge1xuICAgICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAobGlzdGJveFN0YXRlLnZhbHVlID09PSAxIC8qIENsb3NlZCAqLylcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChzZWFyY2hRdWVyeS52YWx1ZSA9PT0gXCJcIilcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIHNlYXJjaFF1ZXJ5LnZhbHVlID0gXCJcIjtcbiAgICAgIH0sXG4gICAgICByZWdpc3Rlck9wdGlvbihpZDIsIGRhdGFSZWYpIHtcbiAgICAgICAgbGV0IGFkanVzdGVkU3RhdGUgPSBhZGp1c3RPcmRlcmVkU3RhdGUoKG9wdGlvbnMyKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIFsuLi5vcHRpb25zMiwgeyBpZDogaWQyLCBkYXRhUmVmIH1dO1xuICAgICAgICB9KTtcbiAgICAgICAgb3B0aW9ucy52YWx1ZSA9IGFkanVzdGVkU3RhdGUub3B0aW9ucztcbiAgICAgICAgYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgPSBhZGp1c3RlZFN0YXRlLmFjdGl2ZU9wdGlvbkluZGV4O1xuICAgICAgfSxcbiAgICAgIHVucmVnaXN0ZXJPcHRpb24oaWQyKSB7XG4gICAgICAgIGxldCBhZGp1c3RlZFN0YXRlID0gYWRqdXN0T3JkZXJlZFN0YXRlKChvcHRpb25zMikgPT4ge1xuICAgICAgICAgIGxldCBpZHggPSBvcHRpb25zMi5maW5kSW5kZXgoKGEpID0+IGEuaWQgPT09IGlkMik7XG4gICAgICAgICAgaWYgKGlkeCAhPT0gLTEpXG4gICAgICAgICAgICBvcHRpb25zMi5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uczI7XG4gICAgICAgIH0pO1xuICAgICAgICBvcHRpb25zLnZhbHVlID0gYWRqdXN0ZWRTdGF0ZS5vcHRpb25zO1xuICAgICAgICBhY3RpdmVPcHRpb25JbmRleC52YWx1ZSA9IGFkanVzdGVkU3RhdGUuYWN0aXZlT3B0aW9uSW5kZXg7XG4gICAgICAgIGFjdGl2YXRpb25UcmlnZ2VyLnZhbHVlID0gMSAvKiBPdGhlciAqLztcbiAgICAgIH0sXG4gICAgICBzZWxlY3QodmFsdWUyKSB7XG4gICAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGVtaXQoXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCBtYXRjaChtb2RlLnZhbHVlLCB7XG4gICAgICAgICAgWzAgLyogU2luZ2xlICovXTogKCkgPT4gdmFsdWUyLFxuICAgICAgICAgIFsxIC8qIE11bHRpICovXTogKCkgPT4ge1xuICAgICAgICAgICAgbGV0IGNvcHkgPSAoMCwgaW1wb3J0X3Z1ZTE5LnRvUmF3KShhcGkudmFsdWUudmFsdWUpLnNsaWNlKCk7XG4gICAgICAgICAgICBsZXQgcmF3ID0gKDAsIGltcG9ydF92dWUxOS50b1JhdykodmFsdWUyKTtcbiAgICAgICAgICAgIGxldCBpZHggPSBjb3B5LmZpbmRJbmRleCgodmFsdWUzKSA9PiBhcGkuY29tcGFyZShyYXcsICgwLCBpbXBvcnRfdnVlMTkudG9SYXcpKHZhbHVlMykpKTtcbiAgICAgICAgICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAgICAgICAgIGNvcHkucHVzaChyYXcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29weS5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb3B5O1xuICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH07XG4gICAgdXNlT3V0c2lkZUNsaWNrKFtidXR0b25SZWYsIG9wdGlvbnNSZWZdLCAoZXZlbnQsIHRhcmdldCkgPT4ge1xuICAgICAgdmFyIF9hO1xuICAgICAgYXBpLmNsb3NlTGlzdGJveCgpO1xuICAgICAgaWYgKCFpc0ZvY3VzYWJsZUVsZW1lbnQodGFyZ2V0LCAxIC8qIExvb3NlICovKSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAoX2EgPSBkb20oYnV0dG9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgKDAsIGltcG9ydF92dWUxOS5jb21wdXRlZCkoKCkgPT4gbGlzdGJveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8pKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE5LnByb3ZpZGUpKExpc3Rib3hDb250ZXh0LCBhcGkpO1xuICAgIHVzZU9wZW5DbG9zZWRQcm92aWRlcigoMCwgaW1wb3J0X3Z1ZTE5LmNvbXB1dGVkKSgoKSA9PiBtYXRjaChsaXN0Ym94U3RhdGUudmFsdWUsIHtcbiAgICAgIFswIC8qIE9wZW4gKi9dOiAwIC8qIE9wZW4gKi8sXG4gICAgICBbMSAvKiBDbG9zZWQgKi9dOiAxIC8qIENsb3NlZCAqL1xuICAgIH0pKSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB7IG5hbWUsIG1vZGVsVmFsdWUsIGRpc2FibGVkLCAuLi50aGVpclByb3BzIH0gPSBwcm9wcztcbiAgICAgIGxldCBzbG90ID0geyBvcGVuOiBsaXN0Ym94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLywgZGlzYWJsZWQgfTtcbiAgICAgIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTE5LmgpKGltcG9ydF92dWUxOS5GcmFnbWVudCwgW1xuICAgICAgICAuLi5uYW1lICE9IG51bGwgJiYgbW9kZWxWYWx1ZSAhPSBudWxsID8gb2JqZWN0VG9Gb3JtRW50cmllcyh7IFtuYW1lXTogbW9kZWxWYWx1ZSB9KS5tYXAoKFtuYW1lMiwgdmFsdWUyXSkgPT4gKDAsIGltcG9ydF92dWUxOS5oKShIaWRkZW4sIGNvbXBhY3Qoe1xuICAgICAgICAgIGZlYXR1cmVzOiA0IC8qIEhpZGRlbiAqLyxcbiAgICAgICAgICBrZXk6IG5hbWUyLFxuICAgICAgICAgIGFzOiBcImlucHV0XCIsXG4gICAgICAgICAgdHlwZTogXCJoaWRkZW5cIixcbiAgICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgICAgcmVhZE9ubHk6IHRydWUsXG4gICAgICAgICAgbmFtZTogbmFtZTIsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlMlxuICAgICAgICB9KSkpIDogW10sXG4gICAgICAgIHJlbmRlcih7XG4gICAgICAgICAgb3VyUHJvcHM6IHt9LFxuICAgICAgICAgIHRoZWlyUHJvcHM6IHtcbiAgICAgICAgICAgIC4uLmF0dHJzLFxuICAgICAgICAgICAgLi4ub21pdCh0aGVpclByb3BzLCBbXCJvblVwZGF0ZTptb2RlbFZhbHVlXCIsIFwiaG9yaXpvbnRhbFwiLCBcIm11bHRpcGxlXCIsIFwiYnlcIl0pXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzbG90LFxuICAgICAgICAgIHNsb3RzLFxuICAgICAgICAgIGF0dHJzLFxuICAgICAgICAgIG5hbWU6IFwiTGlzdGJveFwiXG4gICAgICAgIH0pXG4gICAgICBdKTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBMaXN0Ym94TGFiZWwgPSAoMCwgaW1wb3J0X3Z1ZTE5LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkxpc3Rib3hMYWJlbFwiLFxuICBwcm9wczogeyBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImxhYmVsXCIgfSB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMgfSkge1xuICAgIGxldCBhcGkgPSB1c2VMaXN0Ym94Q29udGV4dChcIkxpc3Rib3hMYWJlbFwiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktbGlzdGJveC1sYWJlbC0ke3VzZUlkKCl9YDtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljaygpIHtcbiAgICAgIHZhciBfYTtcbiAgICAgIChfYSA9IGRvbShhcGkuYnV0dG9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBzbG90ID0ge1xuICAgICAgICBvcGVuOiBhcGkubGlzdGJveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8sXG4gICAgICAgIGRpc2FibGVkOiBhcGkuZGlzYWJsZWQudmFsdWVcbiAgICAgIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7IGlkOiBpZDIsIHJlZjogYXBpLmxhYmVsUmVmLCBvbkNsaWNrOiBoYW5kbGVDbGljayB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzOiBwcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIkxpc3Rib3hMYWJlbFwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBMaXN0Ym94QnV0dG9uID0gKDAsIGltcG9ydF92dWUxOS5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJMaXN0Ym94QnV0dG9uXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJidXR0b25cIiB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlTGlzdGJveENvbnRleHQoXCJMaXN0Ym94QnV0dG9uXCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1saXN0Ym94LWJ1dHRvbi0ke3VzZUlkKCl9YDtcbiAgICBleHBvc2UoeyBlbDogYXBpLmJ1dHRvblJlZiwgJGVsOiBhcGkuYnV0dG9uUmVmIH0pO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUtleURvd24oZXZlbnQpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgXCIgXCIgLyogU3BhY2UgKi86XG4gICAgICAgIGNhc2UgXCJFbnRlclwiIC8qIEVudGVyICovOlxuICAgICAgICBjYXNlIFwiQXJyb3dEb3duXCIgLyogQXJyb3dEb3duICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYXBpLm9wZW5MaXN0Ym94KCk7XG4gICAgICAgICAgKDAsIGltcG9ydF92dWUxOS5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgKF9hID0gZG9tKGFwaS5vcHRpb25zUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIGlmICghYXBpLnZhbHVlLnZhbHVlKVxuICAgICAgICAgICAgICBhcGkuZ29Ub09wdGlvbigwIC8qIEZpcnN0ICovKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkFycm93VXBcIiAvKiBBcnJvd1VwICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYXBpLm9wZW5MaXN0Ym94KCk7XG4gICAgICAgICAgKDAsIGltcG9ydF92dWUxOS5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgKF9hID0gZG9tKGFwaS5vcHRpb25zUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIGlmICghYXBpLnZhbHVlLnZhbHVlKVxuICAgICAgICAgICAgICBhcGkuZ29Ub09wdGlvbigzIC8qIExhc3QgKi8pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVLZXlVcChldmVudCkge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSBcIiBcIiAvKiBTcGFjZSAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCkge1xuICAgICAgaWYgKGFwaS5kaXNhYmxlZC52YWx1ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGFwaS5saXN0Ym94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLykge1xuICAgICAgICBhcGkuY2xvc2VMaXN0Ym94KCk7XG4gICAgICAgICgwLCBpbXBvcnRfdnVlMTkubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgcmV0dXJuIChfYSA9IGRvbShhcGkuYnV0dG9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBhcGkub3Blbkxpc3Rib3goKTtcbiAgICAgICAgbmV4dEZyYW1lKCgpID0+IHtcbiAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgcmV0dXJuIChfYSA9IGRvbShhcGkub3B0aW9uc1JlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgdHlwZSA9IHVzZVJlc29sdmVCdXR0b25UeXBlKCgwLCBpbXBvcnRfdnVlMTkuY29tcHV0ZWQpKCgpID0+ICh7IGFzOiBwcm9wcy5hcywgdHlwZTogYXR0cnMudHlwZSB9KSksIGFwaS5idXR0b25SZWYpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB2YXIgX2EsIF9iO1xuICAgICAgbGV0IHNsb3QgPSB7XG4gICAgICAgIG9wZW46IGFwaS5saXN0Ym94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyxcbiAgICAgICAgZGlzYWJsZWQ6IGFwaS5kaXNhYmxlZC52YWx1ZVxuICAgICAgfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgcmVmOiBhcGkuYnV0dG9uUmVmLFxuICAgICAgICBpZDogaWQyLFxuICAgICAgICB0eXBlOiB0eXBlLnZhbHVlLFxuICAgICAgICBcImFyaWEtaGFzcG9wdXBcIjogdHJ1ZSxcbiAgICAgICAgXCJhcmlhLWNvbnRyb2xzXCI6IChfYSA9IGRvbShhcGkub3B0aW9uc1JlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5pZCxcbiAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IGFwaS5kaXNhYmxlZC52YWx1ZSA/IHZvaWQgMCA6IGFwaS5saXN0Ym94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyxcbiAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogYXBpLmxhYmVsUmVmLnZhbHVlID8gWyhfYiA9IGRvbShhcGkubGFiZWxSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2IuaWQsIGlkMl0uam9pbihcIiBcIikgOiB2b2lkIDAsXG4gICAgICAgIGRpc2FibGVkOiBhcGkuZGlzYWJsZWQudmFsdWUgPT09IHRydWUgPyB0cnVlIDogdm9pZCAwLFxuICAgICAgICBvbktleWRvd246IGhhbmRsZUtleURvd24sXG4gICAgICAgIG9uS2V5dXA6IGhhbmRsZUtleVVwLFxuICAgICAgICBvbkNsaWNrOiBoYW5kbGVDbGlja1xuICAgICAgfTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wczogcHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJMaXN0Ym94QnV0dG9uXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIExpc3Rib3hPcHRpb25zID0gKDAsIGltcG9ydF92dWUxOS5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJMaXN0Ym94T3B0aW9uc1wiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwidWxcIiB9LFxuICAgIHN0YXRpYzogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIHVubW91bnQ6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogdHJ1ZSB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlTGlzdGJveENvbnRleHQoXCJMaXN0Ym94T3B0aW9uc1wiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktbGlzdGJveC1vcHRpb25zLSR7dXNlSWQoKX1gO1xuICAgIGxldCBzZWFyY2hEZWJvdW5jZSA9ICgwLCBpbXBvcnRfdnVlMTkucmVmKShudWxsKTtcbiAgICBleHBvc2UoeyBlbDogYXBpLm9wdGlvbnNSZWYsICRlbDogYXBpLm9wdGlvbnNSZWYgfSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5RG93bihldmVudCkge1xuICAgICAgaWYgKHNlYXJjaERlYm91bmNlLnZhbHVlKVxuICAgICAgICBjbGVhclRpbWVvdXQoc2VhcmNoRGVib3VuY2UudmFsdWUpO1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSBcIiBcIiAvKiBTcGFjZSAqLzpcbiAgICAgICAgICBpZiAoYXBpLnNlYXJjaFF1ZXJ5LnZhbHVlICE9PSBcIlwiKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm4gYXBpLnNlYXJjaChldmVudC5rZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSBcIkVudGVyXCIgLyogRW50ZXIgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBpZiAoYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBsZXQgYWN0aXZlT3B0aW9uID0gYXBpLm9wdGlvbnMudmFsdWVbYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlXTtcbiAgICAgICAgICAgIGFwaS5zZWxlY3QoYWN0aXZlT3B0aW9uLmRhdGFSZWYudmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYXBpLm1vZGUudmFsdWUgPT09IDAgLyogU2luZ2xlICovKSB7XG4gICAgICAgICAgICBhcGkuY2xvc2VMaXN0Ym94KCk7XG4gICAgICAgICAgICAoMCwgaW1wb3J0X3Z1ZTE5Lm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgcmV0dXJuIChfYSA9IGRvbShhcGkuYnV0dG9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBtYXRjaChhcGkub3JpZW50YXRpb24udmFsdWUsIHtcbiAgICAgICAgICB2ZXJ0aWNhbDogXCJBcnJvd0Rvd25cIiAvKiBBcnJvd0Rvd24gKi8sXG4gICAgICAgICAgaG9yaXpvbnRhbDogXCJBcnJvd1JpZ2h0XCIgLyogQXJyb3dSaWdodCAqL1xuICAgICAgICB9KTpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHJldHVybiBhcGkuZ29Ub09wdGlvbigyIC8qIE5leHQgKi8pO1xuICAgICAgICBjYXNlIG1hdGNoKGFwaS5vcmllbnRhdGlvbi52YWx1ZSwgeyB2ZXJ0aWNhbDogXCJBcnJvd1VwXCIgLyogQXJyb3dVcCAqLywgaG9yaXpvbnRhbDogXCJBcnJvd0xlZnRcIiAvKiBBcnJvd0xlZnQgKi8gfSk6XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICByZXR1cm4gYXBpLmdvVG9PcHRpb24oMSAvKiBQcmV2aW91cyAqLyk7XG4gICAgICAgIGNhc2UgXCJIb21lXCIgLyogSG9tZSAqLzpcbiAgICAgICAgY2FzZSBcIlBhZ2VVcFwiIC8qIFBhZ2VVcCAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHJldHVybiBhcGkuZ29Ub09wdGlvbigwIC8qIEZpcnN0ICovKTtcbiAgICAgICAgY2FzZSBcIkVuZFwiIC8qIEVuZCAqLzpcbiAgICAgICAgY2FzZSBcIlBhZ2VEb3duXCIgLyogUGFnZURvd24gKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICByZXR1cm4gYXBpLmdvVG9PcHRpb24oMyAvKiBMYXN0ICovKTtcbiAgICAgICAgY2FzZSBcIkVzY2FwZVwiIC8qIEVzY2FwZSAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGFwaS5jbG9zZUxpc3Rib3goKTtcbiAgICAgICAgICAoMCwgaW1wb3J0X3Z1ZTE5Lm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICByZXR1cm4gKF9hID0gZG9tKGFwaS5idXR0b25SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiVGFiXCIgLyogVGFiICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaWYgKGV2ZW50LmtleS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGFwaS5zZWFyY2goZXZlbnQua2V5KTtcbiAgICAgICAgICAgIHNlYXJjaERlYm91bmNlLnZhbHVlID0gc2V0VGltZW91dCgoKSA9PiBhcGkuY2xlYXJTZWFyY2goKSwgMzUwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCB1c2VzT3BlbkNsb3NlZFN0YXRlID0gdXNlT3BlbkNsb3NlZCgpO1xuICAgIGxldCB2aXNpYmxlID0gKDAsIGltcG9ydF92dWUxOS5jb21wdXRlZCkoKCkgPT4ge1xuICAgICAgaWYgKHVzZXNPcGVuQ2xvc2VkU3RhdGUgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHVzZXNPcGVuQ2xvc2VkU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLztcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcGkubGlzdGJveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi87XG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgIGxldCBzbG90ID0geyBvcGVuOiBhcGkubGlzdGJveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8gfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIjogYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlID09PSBudWxsID8gdm9pZCAwIDogKF9hID0gYXBpLm9wdGlvbnMudmFsdWVbYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmlkLFxuICAgICAgICBcImFyaWEtbXVsdGlzZWxlY3RhYmxlXCI6IGFwaS5tb2RlLnZhbHVlID09PSAxIC8qIE11bHRpICovID8gdHJ1ZSA6IHZvaWQgMCxcbiAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogKF9kID0gKF9iID0gZG9tKGFwaS5sYWJlbFJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYi5pZCkgIT0gbnVsbCA/IF9kIDogKF9jID0gZG9tKGFwaS5idXR0b25SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2MuaWQsXG4gICAgICAgIFwiYXJpYS1vcmllbnRhdGlvblwiOiBhcGkub3JpZW50YXRpb24udmFsdWUsXG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIG9uS2V5ZG93bjogaGFuZGxlS2V5RG93bixcbiAgICAgICAgcm9sZTogXCJsaXN0Ym94XCIsXG4gICAgICAgIHRhYkluZGV4OiAwLFxuICAgICAgICByZWY6IGFwaS5vcHRpb25zUmVmXG4gICAgICB9O1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBwcm9wcztcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBmZWF0dXJlczogMSAvKiBSZW5kZXJTdHJhdGVneSAqLyB8IDIgLyogU3RhdGljICovLFxuICAgICAgICB2aXNpYmxlOiB2aXNpYmxlLnZhbHVlLFxuICAgICAgICBuYW1lOiBcIkxpc3Rib3hPcHRpb25zXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIExpc3Rib3hPcHRpb24gPSAoMCwgaW1wb3J0X3Z1ZTE5LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkxpc3Rib3hPcHRpb25cIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImxpXCIgfSxcbiAgICB2YWx1ZTogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmcsIE51bWJlciwgQm9vbGVhbl0gfSxcbiAgICBkaXNhYmxlZDogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IHNsb3RzLCBhdHRycywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlTGlzdGJveENvbnRleHQoXCJMaXN0Ym94T3B0aW9uXCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1saXN0Ym94LW9wdGlvbi0ke3VzZUlkKCl9YDtcbiAgICBsZXQgaW50ZXJuYWxPcHRpb25SZWYgPSAoMCwgaW1wb3J0X3Z1ZTE5LnJlZikobnVsbCk7XG4gICAgZXhwb3NlKHsgZWw6IGludGVybmFsT3B0aW9uUmVmLCAkZWw6IGludGVybmFsT3B0aW9uUmVmIH0pO1xuICAgIGxldCBhY3RpdmUgPSAoMCwgaW1wb3J0X3Z1ZTE5LmNvbXB1dGVkKSgoKSA9PiB7XG4gICAgICByZXR1cm4gYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlICE9PSBudWxsID8gYXBpLm9wdGlvbnMudmFsdWVbYXBpLmFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlXS5pZCA9PT0gaWQyIDogZmFsc2U7XG4gICAgfSk7XG4gICAgbGV0IHNlbGVjdGVkID0gKDAsIGltcG9ydF92dWUxOS5jb21wdXRlZCkoKCkgPT4gbWF0Y2goYXBpLm1vZGUudmFsdWUsIHtcbiAgICAgIFswIC8qIFNpbmdsZSAqL106ICgpID0+IGFwaS5jb21wYXJlKCgwLCBpbXBvcnRfdnVlMTkudG9SYXcpKGFwaS52YWx1ZS52YWx1ZSksICgwLCBpbXBvcnRfdnVlMTkudG9SYXcpKHByb3BzLnZhbHVlKSksXG4gICAgICBbMSAvKiBNdWx0aSAqL106ICgpID0+ICgwLCBpbXBvcnRfdnVlMTkudG9SYXcpKGFwaS52YWx1ZS52YWx1ZSkuc29tZSgodmFsdWUpID0+IGFwaS5jb21wYXJlKCgwLCBpbXBvcnRfdnVlMTkudG9SYXcpKHZhbHVlKSwgKDAsIGltcG9ydF92dWUxOS50b1JhdykocHJvcHMudmFsdWUpKSlcbiAgICB9KSk7XG4gICAgbGV0IGlzRmlyc3RTZWxlY3RlZCA9ICgwLCBpbXBvcnRfdnVlMTkuY29tcHV0ZWQpKCgpID0+IHtcbiAgICAgIHJldHVybiBtYXRjaChhcGkubW9kZS52YWx1ZSwge1xuICAgICAgICBbMSAvKiBNdWx0aSAqL106ICgpID0+IHtcbiAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgbGV0IGN1cnJlbnRWYWx1ZXMgPSAoMCwgaW1wb3J0X3Z1ZTE5LnRvUmF3KShhcGkudmFsdWUudmFsdWUpO1xuICAgICAgICAgIHJldHVybiAoKF9hID0gYXBpLm9wdGlvbnMudmFsdWUuZmluZCgob3B0aW9uKSA9PiBjdXJyZW50VmFsdWVzLnNvbWUoKHZhbHVlKSA9PiBhcGkuY29tcGFyZSgoMCwgaW1wb3J0X3Z1ZTE5LnRvUmF3KSh2YWx1ZSksICgwLCBpbXBvcnRfdnVlMTkudG9SYXcpKG9wdGlvbi5kYXRhUmVmLnZhbHVlKSkpKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmlkKSA9PT0gaWQyO1xuICAgICAgICB9LFxuICAgICAgICBbMCAvKiBTaW5nbGUgKi9dOiAoKSA9PiBzZWxlY3RlZC52YWx1ZVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgbGV0IGRhdGFSZWYgPSAoMCwgaW1wb3J0X3Z1ZTE5LmNvbXB1dGVkKSgoKSA9PiAoe1xuICAgICAgZGlzYWJsZWQ6IHByb3BzLmRpc2FibGVkLFxuICAgICAgdmFsdWU6IHByb3BzLnZhbHVlLFxuICAgICAgdGV4dFZhbHVlOiBcIlwiLFxuICAgICAgZG9tUmVmOiBpbnRlcm5hbE9wdGlvblJlZlxuICAgIH0pKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE5Lm9uTW91bnRlZCkoKCkgPT4ge1xuICAgICAgdmFyIF9hLCBfYjtcbiAgICAgIGxldCB0ZXh0VmFsdWUgPSAoX2IgPSAoX2EgPSBkb20oaW50ZXJuYWxPcHRpb25SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EudGV4dENvbnRlbnQpID09IG51bGwgPyB2b2lkIDAgOiBfYi50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgICAgIGlmICh0ZXh0VmFsdWUgIT09IHZvaWQgMClcbiAgICAgICAgZGF0YVJlZi52YWx1ZS50ZXh0VmFsdWUgPSB0ZXh0VmFsdWU7XG4gICAgfSk7XG4gICAgKDAsIGltcG9ydF92dWUxOS5vbk1vdW50ZWQpKCgpID0+IGFwaS5yZWdpc3Rlck9wdGlvbihpZDIsIGRhdGFSZWYpKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE5Lm9uVW5tb3VudGVkKSgoKSA9PiBhcGkudW5yZWdpc3Rlck9wdGlvbihpZDIpKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE5Lm9uTW91bnRlZCkoKCkgPT4ge1xuICAgICAgKDAsIGltcG9ydF92dWUxOS53YXRjaCkoW2FwaS5saXN0Ym94U3RhdGUsIHNlbGVjdGVkXSwgKCkgPT4ge1xuICAgICAgICBpZiAoYXBpLmxpc3Rib3hTdGF0ZS52YWx1ZSAhPT0gMCAvKiBPcGVuICovKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKCFzZWxlY3RlZC52YWx1ZSlcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIG1hdGNoKGFwaS5tb2RlLnZhbHVlLCB7XG4gICAgICAgICAgWzEgLyogTXVsdGkgKi9dOiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNGaXJzdFNlbGVjdGVkLnZhbHVlKVxuICAgICAgICAgICAgICBhcGkuZ29Ub09wdGlvbig0IC8qIFNwZWNpZmljICovLCBpZDIpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgWzAgLyogU2luZ2xlICovXTogKCkgPT4ge1xuICAgICAgICAgICAgYXBpLmdvVG9PcHRpb24oNCAvKiBTcGVjaWZpYyAqLywgaWQyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSwgeyBpbW1lZGlhdGU6IHRydWUgfSk7XG4gICAgfSk7XG4gICAgKDAsIGltcG9ydF92dWUxOS53YXRjaEVmZmVjdCkoKCkgPT4ge1xuICAgICAgaWYgKGFwaS5saXN0Ym94U3RhdGUudmFsdWUgIT09IDAgLyogT3BlbiAqLylcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKCFhY3RpdmUudmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChhcGkuYWN0aXZhdGlvblRyaWdnZXIudmFsdWUgPT09IDAgLyogUG9pbnRlciAqLylcbiAgICAgICAgcmV0dXJuO1xuICAgICAgKDAsIGltcG9ydF92dWUxOS5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICByZXR1cm4gKF9iID0gKF9hID0gZG9tKGludGVybmFsT3B0aW9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnNjcm9sbEludG9WaWV3KSA9PSBudWxsID8gdm9pZCAwIDogX2IuY2FsbChfYSwgeyBibG9jazogXCJuZWFyZXN0XCIgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCkge1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm4gZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGFwaS5zZWxlY3QocHJvcHMudmFsdWUpO1xuICAgICAgaWYgKGFwaS5tb2RlLnZhbHVlID09PSAwIC8qIFNpbmdsZSAqLykge1xuICAgICAgICBhcGkuY2xvc2VMaXN0Ym94KCk7XG4gICAgICAgICgwLCBpbXBvcnRfdnVlMTkubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgcmV0dXJuIChfYSA9IGRvbShhcGkuYnV0dG9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUZvY3VzKCkge1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm4gYXBpLmdvVG9PcHRpb24oNSAvKiBOb3RoaW5nICovKTtcbiAgICAgIGFwaS5nb1RvT3B0aW9uKDQgLyogU3BlY2lmaWMgKi8sIGlkMik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZU1vdmUoKSB7XG4gICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChhY3RpdmUudmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGFwaS5nb1RvT3B0aW9uKDQgLyogU3BlY2lmaWMgKi8sIGlkMiwgMCAvKiBQb2ludGVyICovKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlTGVhdmUoKSB7XG4gICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICghYWN0aXZlLnZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBhcGkuZ29Ub09wdGlvbig1IC8qIE5vdGhpbmcgKi8pO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHsgZGlzYWJsZWQgfSA9IHByb3BzO1xuICAgICAgbGV0IHNsb3QgPSB7IGFjdGl2ZTogYWN0aXZlLnZhbHVlLCBzZWxlY3RlZDogc2VsZWN0ZWQudmFsdWUsIGRpc2FibGVkIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIHJlZjogaW50ZXJuYWxPcHRpb25SZWYsXG4gICAgICAgIHJvbGU6IFwib3B0aW9uXCIsXG4gICAgICAgIHRhYkluZGV4OiBkaXNhYmxlZCA9PT0gdHJ1ZSA/IHZvaWQgMCA6IC0xLFxuICAgICAgICBcImFyaWEtZGlzYWJsZWRcIjogZGlzYWJsZWQgPT09IHRydWUgPyB0cnVlIDogdm9pZCAwLFxuICAgICAgICBcImFyaWEtc2VsZWN0ZWRcIjogc2VsZWN0ZWQudmFsdWUgPT09IHRydWUgPyBzZWxlY3RlZC52YWx1ZSA6IHZvaWQgMCxcbiAgICAgICAgZGlzYWJsZWQ6IHZvaWQgMCxcbiAgICAgICAgb25DbGljazogaGFuZGxlQ2xpY2ssXG4gICAgICAgIG9uRm9jdXM6IGhhbmRsZUZvY3VzLFxuICAgICAgICBvblBvaW50ZXJtb3ZlOiBoYW5kbGVNb3ZlLFxuICAgICAgICBvbk1vdXNlbW92ZTogaGFuZGxlTW92ZSxcbiAgICAgICAgb25Qb2ludGVybGVhdmU6IGhhbmRsZUxlYXZlLFxuICAgICAgICBvbk1vdXNlbGVhdmU6IGhhbmRsZUxlYXZlXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzOiBvbWl0KHByb3BzLCBbXCJ2YWx1ZVwiLCBcImRpc2FibGVkXCJdKSxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIkxpc3Rib3hPcHRpb25cIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIHNyYy9jb21wb25lbnRzL21lbnUvbWVudS50c1xudmFyIGltcG9ydF92dWUyMCA9IHJlcXVpcmUoXCJ2dWVcIik7XG5mdW5jdGlvbiBuZXh0RnJhbWUyKGNiKSB7XG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2IpKTtcbn1cbnZhciBNZW51Q29udGV4dCA9IFN5bWJvbChcIk1lbnVDb250ZXh0XCIpO1xuZnVuY3Rpb24gdXNlTWVudUNvbnRleHQoY29tcG9uZW50KSB7XG4gIGxldCBjb250ZXh0ID0gKDAsIGltcG9ydF92dWUyMC5pbmplY3QpKE1lbnVDb250ZXh0LCBudWxsKTtcbiAgaWYgKGNvbnRleHQgPT09IG51bGwpIHtcbiAgICBsZXQgZXJyID0gbmV3IEVycm9yKGA8JHtjb21wb25lbnR9IC8+IGlzIG1pc3NpbmcgYSBwYXJlbnQgPE1lbnUgLz4gY29tcG9uZW50LmApO1xuICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVyciwgdXNlTWVudUNvbnRleHQpO1xuICAgIHRocm93IGVycjtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cbnZhciBNZW51ID0gKDAsIGltcG9ydF92dWUyMC5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJNZW51XCIsXG4gIHByb3BzOiB7IGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwidGVtcGxhdGVcIiB9IH0sXG4gIHNldHVwKHByb3BzLCB7IHNsb3RzLCBhdHRycyB9KSB7XG4gICAgbGV0IG1lbnVTdGF0ZSA9ICgwLCBpbXBvcnRfdnVlMjAucmVmKSgxIC8qIENsb3NlZCAqLyk7XG4gICAgbGV0IGJ1dHRvblJlZiA9ICgwLCBpbXBvcnRfdnVlMjAucmVmKShudWxsKTtcbiAgICBsZXQgaXRlbXNSZWYgPSAoMCwgaW1wb3J0X3Z1ZTIwLnJlZikobnVsbCk7XG4gICAgbGV0IGl0ZW1zID0gKDAsIGltcG9ydF92dWUyMC5yZWYpKFtdKTtcbiAgICBsZXQgc2VhcmNoUXVlcnkgPSAoMCwgaW1wb3J0X3Z1ZTIwLnJlZikoXCJcIik7XG4gICAgbGV0IGFjdGl2ZUl0ZW1JbmRleCA9ICgwLCBpbXBvcnRfdnVlMjAucmVmKShudWxsKTtcbiAgICBsZXQgYWN0aXZhdGlvblRyaWdnZXIgPSAoMCwgaW1wb3J0X3Z1ZTIwLnJlZikoMSAvKiBPdGhlciAqLyk7XG4gICAgZnVuY3Rpb24gYWRqdXN0T3JkZXJlZFN0YXRlKGFkanVzdG1lbnQgPSAoaSkgPT4gaSkge1xuICAgICAgbGV0IGN1cnJlbnRBY3RpdmVJdGVtID0gYWN0aXZlSXRlbUluZGV4LnZhbHVlICE9PSBudWxsID8gaXRlbXMudmFsdWVbYWN0aXZlSXRlbUluZGV4LnZhbHVlXSA6IG51bGw7XG4gICAgICBsZXQgc29ydGVkSXRlbXMgPSBzb3J0QnlEb21Ob2RlKGFkanVzdG1lbnQoaXRlbXMudmFsdWUuc2xpY2UoKSksIChpdGVtKSA9PiBkb20oaXRlbS5kYXRhUmVmLmRvbVJlZikpO1xuICAgICAgbGV0IGFkanVzdGVkQWN0aXZlSXRlbUluZGV4ID0gY3VycmVudEFjdGl2ZUl0ZW0gPyBzb3J0ZWRJdGVtcy5pbmRleE9mKGN1cnJlbnRBY3RpdmVJdGVtKSA6IG51bGw7XG4gICAgICBpZiAoYWRqdXN0ZWRBY3RpdmVJdGVtSW5kZXggPT09IC0xKSB7XG4gICAgICAgIGFkanVzdGVkQWN0aXZlSXRlbUluZGV4ID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGl0ZW1zOiBzb3J0ZWRJdGVtcyxcbiAgICAgICAgYWN0aXZlSXRlbUluZGV4OiBhZGp1c3RlZEFjdGl2ZUl0ZW1JbmRleFxuICAgICAgfTtcbiAgICB9XG4gICAgbGV0IGFwaSA9IHtcbiAgICAgIG1lbnVTdGF0ZSxcbiAgICAgIGJ1dHRvblJlZixcbiAgICAgIGl0ZW1zUmVmLFxuICAgICAgaXRlbXMsXG4gICAgICBzZWFyY2hRdWVyeSxcbiAgICAgIGFjdGl2ZUl0ZW1JbmRleCxcbiAgICAgIGFjdGl2YXRpb25UcmlnZ2VyLFxuICAgICAgY2xvc2VNZW51OiAoKSA9PiB7XG4gICAgICAgIG1lbnVTdGF0ZS52YWx1ZSA9IDEgLyogQ2xvc2VkICovO1xuICAgICAgICBhY3RpdmVJdGVtSW5kZXgudmFsdWUgPSBudWxsO1xuICAgICAgfSxcbiAgICAgIG9wZW5NZW51OiAoKSA9PiBtZW51U3RhdGUudmFsdWUgPSAwIC8qIE9wZW4gKi8sXG4gICAgICBnb1RvSXRlbShmb2N1cywgaWQyLCB0cmlnZ2VyKSB7XG4gICAgICAgIGxldCBhZGp1c3RlZFN0YXRlID0gYWRqdXN0T3JkZXJlZFN0YXRlKCk7XG4gICAgICAgIGxldCBuZXh0QWN0aXZlSXRlbUluZGV4ID0gY2FsY3VsYXRlQWN0aXZlSW5kZXgoZm9jdXMgPT09IDQgLyogU3BlY2lmaWMgKi8gPyB7IGZvY3VzOiA0IC8qIFNwZWNpZmljICovLCBpZDogaWQyIH0gOiB7IGZvY3VzIH0sIHtcbiAgICAgICAgICByZXNvbHZlSXRlbXM6ICgpID0+IGFkanVzdGVkU3RhdGUuaXRlbXMsXG4gICAgICAgICAgcmVzb2x2ZUFjdGl2ZUluZGV4OiAoKSA9PiBhZGp1c3RlZFN0YXRlLmFjdGl2ZUl0ZW1JbmRleCxcbiAgICAgICAgICByZXNvbHZlSWQ6IChpdGVtKSA9PiBpdGVtLmlkLFxuICAgICAgICAgIHJlc29sdmVEaXNhYmxlZDogKGl0ZW0pID0+IGl0ZW0uZGF0YVJlZi5kaXNhYmxlZFxuICAgICAgICB9KTtcbiAgICAgICAgc2VhcmNoUXVlcnkudmFsdWUgPSBcIlwiO1xuICAgICAgICBhY3RpdmVJdGVtSW5kZXgudmFsdWUgPSBuZXh0QWN0aXZlSXRlbUluZGV4O1xuICAgICAgICBhY3RpdmF0aW9uVHJpZ2dlci52YWx1ZSA9IHRyaWdnZXIgIT0gbnVsbCA/IHRyaWdnZXIgOiAxIC8qIE90aGVyICovO1xuICAgICAgICBpdGVtcy52YWx1ZSA9IGFkanVzdGVkU3RhdGUuaXRlbXM7XG4gICAgICB9LFxuICAgICAgc2VhcmNoKHZhbHVlKSB7XG4gICAgICAgIGxldCB3YXNBbHJlYWR5U2VhcmNoaW5nID0gc2VhcmNoUXVlcnkudmFsdWUgIT09IFwiXCI7XG4gICAgICAgIGxldCBvZmZzZXQgPSB3YXNBbHJlYWR5U2VhcmNoaW5nID8gMCA6IDE7XG4gICAgICAgIHNlYXJjaFF1ZXJ5LnZhbHVlICs9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGxldCByZU9yZGVyZWRJdGVtcyA9IGFjdGl2ZUl0ZW1JbmRleC52YWx1ZSAhPT0gbnVsbCA/IGl0ZW1zLnZhbHVlLnNsaWNlKGFjdGl2ZUl0ZW1JbmRleC52YWx1ZSArIG9mZnNldCkuY29uY2F0KGl0ZW1zLnZhbHVlLnNsaWNlKDAsIGFjdGl2ZUl0ZW1JbmRleC52YWx1ZSArIG9mZnNldCkpIDogaXRlbXMudmFsdWU7XG4gICAgICAgIGxldCBtYXRjaGluZ0l0ZW0gPSByZU9yZGVyZWRJdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmRhdGFSZWYudGV4dFZhbHVlLnN0YXJ0c1dpdGgoc2VhcmNoUXVlcnkudmFsdWUpICYmICFpdGVtLmRhdGFSZWYuZGlzYWJsZWQpO1xuICAgICAgICBsZXQgbWF0Y2hJZHggPSBtYXRjaGluZ0l0ZW0gPyBpdGVtcy52YWx1ZS5pbmRleE9mKG1hdGNoaW5nSXRlbSkgOiAtMTtcbiAgICAgICAgaWYgKG1hdGNoSWR4ID09PSAtMSB8fCBtYXRjaElkeCA9PT0gYWN0aXZlSXRlbUluZGV4LnZhbHVlKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgYWN0aXZlSXRlbUluZGV4LnZhbHVlID0gbWF0Y2hJZHg7XG4gICAgICAgIGFjdGl2YXRpb25UcmlnZ2VyLnZhbHVlID0gMSAvKiBPdGhlciAqLztcbiAgICAgIH0sXG4gICAgICBjbGVhclNlYXJjaCgpIHtcbiAgICAgICAgc2VhcmNoUXVlcnkudmFsdWUgPSBcIlwiO1xuICAgICAgfSxcbiAgICAgIHJlZ2lzdGVySXRlbShpZDIsIGRhdGFSZWYpIHtcbiAgICAgICAgbGV0IGFkanVzdGVkU3RhdGUgPSBhZGp1c3RPcmRlcmVkU3RhdGUoKGl0ZW1zMikgPT4ge1xuICAgICAgICAgIHJldHVybiBbLi4uaXRlbXMyLCB7IGlkOiBpZDIsIGRhdGFSZWYgfV07XG4gICAgICAgIH0pO1xuICAgICAgICBpdGVtcy52YWx1ZSA9IGFkanVzdGVkU3RhdGUuaXRlbXM7XG4gICAgICAgIGFjdGl2ZUl0ZW1JbmRleC52YWx1ZSA9IGFkanVzdGVkU3RhdGUuYWN0aXZlSXRlbUluZGV4O1xuICAgICAgICBhY3RpdmF0aW9uVHJpZ2dlci52YWx1ZSA9IDEgLyogT3RoZXIgKi87XG4gICAgICB9LFxuICAgICAgdW5yZWdpc3Rlckl0ZW0oaWQyKSB7XG4gICAgICAgIGxldCBhZGp1c3RlZFN0YXRlID0gYWRqdXN0T3JkZXJlZFN0YXRlKChpdGVtczIpID0+IHtcbiAgICAgICAgICBsZXQgaWR4ID0gaXRlbXMyLmZpbmRJbmRleCgoYSkgPT4gYS5pZCA9PT0gaWQyKTtcbiAgICAgICAgICBpZiAoaWR4ICE9PSAtMSlcbiAgICAgICAgICAgIGl0ZW1zMi5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICByZXR1cm4gaXRlbXMyO1xuICAgICAgICB9KTtcbiAgICAgICAgaXRlbXMudmFsdWUgPSBhZGp1c3RlZFN0YXRlLml0ZW1zO1xuICAgICAgICBhY3RpdmVJdGVtSW5kZXgudmFsdWUgPSBhZGp1c3RlZFN0YXRlLmFjdGl2ZUl0ZW1JbmRleDtcbiAgICAgICAgYWN0aXZhdGlvblRyaWdnZXIudmFsdWUgPSAxIC8qIE90aGVyICovO1xuICAgICAgfVxuICAgIH07XG4gICAgdXNlT3V0c2lkZUNsaWNrKFtidXR0b25SZWYsIGl0ZW1zUmVmXSwgKGV2ZW50LCB0YXJnZXQpID0+IHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGFwaS5jbG9zZU1lbnUoKTtcbiAgICAgIGlmICghaXNGb2N1c2FibGVFbGVtZW50KHRhcmdldCwgMSAvKiBMb29zZSAqLykpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgKF9hID0gZG9tKGJ1dHRvblJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sICgwLCBpbXBvcnRfdnVlMjAuY29tcHV0ZWQpKCgpID0+IG1lbnVTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovKSk7XG4gICAgKDAsIGltcG9ydF92dWUyMC5wcm92aWRlKShNZW51Q29udGV4dCwgYXBpKTtcbiAgICB1c2VPcGVuQ2xvc2VkUHJvdmlkZXIoKDAsIGltcG9ydF92dWUyMC5jb21wdXRlZCkoKCkgPT4gbWF0Y2gobWVudVN0YXRlLnZhbHVlLCB7XG4gICAgICBbMCAvKiBPcGVuICovXTogMCAvKiBPcGVuICovLFxuICAgICAgWzEgLyogQ2xvc2VkICovXTogMSAvKiBDbG9zZWQgKi9cbiAgICB9KSkpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgc2xvdCA9IHsgb3BlbjogbWVudVN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8gfTtcbiAgICAgIHJldHVybiByZW5kZXIoeyBvdXJQcm9wczoge30sIHRoZWlyUHJvcHM6IHByb3BzLCBzbG90LCBzbG90cywgYXR0cnMsIG5hbWU6IFwiTWVudVwiIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIE1lbnVCdXR0b24gPSAoMCwgaW1wb3J0X3Z1ZTIwLmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIk1lbnVCdXR0b25cIixcbiAgcHJvcHM6IHtcbiAgICBkaXNhYmxlZDogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiYnV0dG9uXCIgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZU1lbnVDb250ZXh0KFwiTWVudUJ1dHRvblwiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktbWVudS1idXR0b24tJHt1c2VJZCgpfWA7XG4gICAgZXhwb3NlKHsgZWw6IGFwaS5idXR0b25SZWYsICRlbDogYXBpLmJ1dHRvblJlZiB9KTtcbiAgICBmdW5jdGlvbiBoYW5kbGVLZXlEb3duKGV2ZW50KSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlIFwiIFwiIC8qIFNwYWNlICovOlxuICAgICAgICBjYXNlIFwiRW50ZXJcIiAvKiBFbnRlciAqLzpcbiAgICAgICAgY2FzZSBcIkFycm93RG93blwiIC8qIEFycm93RG93biAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGFwaS5vcGVuTWVudSgpO1xuICAgICAgICAgICgwLCBpbXBvcnRfdnVlMjAubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIChfYSA9IGRvbShhcGkuaXRlbXNSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgICAgYXBpLmdvVG9JdGVtKDAgLyogRmlyc3QgKi8pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiQXJyb3dVcFwiIC8qIEFycm93VXAgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBhcGkub3Blbk1lbnUoKTtcbiAgICAgICAgICAoMCwgaW1wb3J0X3Z1ZTIwLm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAoX2EgPSBkb20oYXBpLml0ZW1zUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIGFwaS5nb1RvSXRlbSgzIC8qIExhc3QgKi8pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVLZXlVcChldmVudCkge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSBcIiBcIiAvKiBTcGFjZSAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCkge1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoYXBpLm1lbnVTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovKSB7XG4gICAgICAgIGFwaS5jbG9zZU1lbnUoKTtcbiAgICAgICAgKDAsIGltcG9ydF92dWUyMC5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICByZXR1cm4gKF9hID0gZG9tKGFwaS5idXR0b25SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGFwaS5vcGVuTWVudSgpO1xuICAgICAgICBuZXh0RnJhbWUyKCgpID0+IHtcbiAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgcmV0dXJuIChfYSA9IGRvbShhcGkuaXRlbXNSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IHR5cGUgPSB1c2VSZXNvbHZlQnV0dG9uVHlwZSgoMCwgaW1wb3J0X3Z1ZTIwLmNvbXB1dGVkKSgoKSA9PiAoeyBhczogcHJvcHMuYXMsIHR5cGU6IGF0dHJzLnR5cGUgfSkpLCBhcGkuYnV0dG9uUmVmKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdmFyIF9hO1xuICAgICAgbGV0IHNsb3QgPSB7IG9wZW46IGFwaS5tZW51U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyB9O1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICByZWY6IGFwaS5idXR0b25SZWYsXG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIHR5cGU6IHR5cGUudmFsdWUsXG4gICAgICAgIFwiYXJpYS1oYXNwb3B1cFwiOiB0cnVlLFxuICAgICAgICBcImFyaWEtY29udHJvbHNcIjogKF9hID0gZG9tKGFwaS5pdGVtc1JlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5pZCxcbiAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IHByb3BzLmRpc2FibGVkID8gdm9pZCAwIDogYXBpLm1lbnVTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovLFxuICAgICAgICBvbktleWRvd246IGhhbmRsZUtleURvd24sXG4gICAgICAgIG9uS2V5dXA6IGhhbmRsZUtleVVwLFxuICAgICAgICBvbkNsaWNrOiBoYW5kbGVDbGlja1xuICAgICAgfTtcbiAgICAgIGxldCB0aGVpclByb3BzID0gcHJvcHM7XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJNZW51QnV0dG9uXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIE1lbnVJdGVtcyA9ICgwLCBpbXBvcnRfdnVlMjAuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiTWVudUl0ZW1zXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9LFxuICAgIHN0YXRpYzogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIHVubW91bnQ6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogdHJ1ZSB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlTWVudUNvbnRleHQoXCJNZW51SXRlbXNcIik7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLW1lbnUtaXRlbXMtJHt1c2VJZCgpfWA7XG4gICAgbGV0IHNlYXJjaERlYm91bmNlID0gKDAsIGltcG9ydF92dWUyMC5yZWYpKG51bGwpO1xuICAgIGV4cG9zZSh7IGVsOiBhcGkuaXRlbXNSZWYsICRlbDogYXBpLml0ZW1zUmVmIH0pO1xuICAgIHVzZVRyZWVXYWxrZXIoe1xuICAgICAgY29udGFpbmVyOiAoMCwgaW1wb3J0X3Z1ZTIwLmNvbXB1dGVkKSgoKSA9PiBkb20oYXBpLml0ZW1zUmVmKSksXG4gICAgICBlbmFibGVkOiAoMCwgaW1wb3J0X3Z1ZTIwLmNvbXB1dGVkKSgoKSA9PiBhcGkubWVudVN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8pLFxuICAgICAgYWNjZXB0KG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUuZ2V0QXR0cmlidXRlKFwicm9sZVwiKSA9PT0gXCJtZW51aXRlbVwiKVxuICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9SRUpFQ1Q7XG4gICAgICAgIGlmIChub2RlLmhhc0F0dHJpYnV0ZShcInJvbGVcIikpXG4gICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1NLSVA7XG4gICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQ7XG4gICAgICB9LFxuICAgICAgd2Fsayhub2RlKSB7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwicm9sZVwiLCBcIm5vbmVcIik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5RG93bihldmVudCkge1xuICAgICAgdmFyIF9hO1xuICAgICAgaWYgKHNlYXJjaERlYm91bmNlLnZhbHVlKVxuICAgICAgICBjbGVhclRpbWVvdXQoc2VhcmNoRGVib3VuY2UudmFsdWUpO1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSBcIiBcIiAvKiBTcGFjZSAqLzpcbiAgICAgICAgICBpZiAoYXBpLnNlYXJjaFF1ZXJ5LnZhbHVlICE9PSBcIlwiKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm4gYXBpLnNlYXJjaChldmVudC5rZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSBcIkVudGVyXCIgLyogRW50ZXIgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBpZiAoYXBpLmFjdGl2ZUl0ZW1JbmRleC52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbGV0IGFjdGl2ZUl0ZW0gPSBhcGkuaXRlbXMudmFsdWVbYXBpLmFjdGl2ZUl0ZW1JbmRleC52YWx1ZV07XG4gICAgICAgICAgICBsZXQgX2FjdGl2ZUl0ZW0gPSBhY3RpdmVJdGVtO1xuICAgICAgICAgICAgKF9hID0gZG9tKF9hY3RpdmVJdGVtLmRhdGFSZWYuZG9tUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNsaWNrKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFwaS5jbG9zZU1lbnUoKTtcbiAgICAgICAgICAoMCwgaW1wb3J0X3Z1ZTIwLm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2EyO1xuICAgICAgICAgICAgcmV0dXJuIChfYTIgPSBkb20oYXBpLmJ1dHRvblJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYTIuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiQXJyb3dEb3duXCIgLyogQXJyb3dEb3duICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuIGFwaS5nb1RvSXRlbSgyIC8qIE5leHQgKi8pO1xuICAgICAgICBjYXNlIFwiQXJyb3dVcFwiIC8qIEFycm93VXAgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICByZXR1cm4gYXBpLmdvVG9JdGVtKDEgLyogUHJldmlvdXMgKi8pO1xuICAgICAgICBjYXNlIFwiSG9tZVwiIC8qIEhvbWUgKi86XG4gICAgICAgIGNhc2UgXCJQYWdlVXBcIiAvKiBQYWdlVXAgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICByZXR1cm4gYXBpLmdvVG9JdGVtKDAgLyogRmlyc3QgKi8pO1xuICAgICAgICBjYXNlIFwiRW5kXCIgLyogRW5kICovOlxuICAgICAgICBjYXNlIFwiUGFnZURvd25cIiAvKiBQYWdlRG93biAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHJldHVybiBhcGkuZ29Ub0l0ZW0oMyAvKiBMYXN0ICovKTtcbiAgICAgICAgY2FzZSBcIkVzY2FwZVwiIC8qIEVzY2FwZSAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGFwaS5jbG9zZU1lbnUoKTtcbiAgICAgICAgICAoMCwgaW1wb3J0X3Z1ZTIwLm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2EyO1xuICAgICAgICAgICAgcmV0dXJuIChfYTIgPSBkb20oYXBpLmJ1dHRvblJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYTIuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiVGFiXCIgLyogVGFiICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaWYgKGV2ZW50LmtleS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGFwaS5zZWFyY2goZXZlbnQua2V5KTtcbiAgICAgICAgICAgIHNlYXJjaERlYm91bmNlLnZhbHVlID0gc2V0VGltZW91dCgoKSA9PiBhcGkuY2xlYXJTZWFyY2goKSwgMzUwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUtleVVwKGV2ZW50KSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlIFwiIFwiIC8qIFNwYWNlICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCB1c2VzT3BlbkNsb3NlZFN0YXRlID0gdXNlT3BlbkNsb3NlZCgpO1xuICAgIGxldCB2aXNpYmxlID0gKDAsIGltcG9ydF92dWUyMC5jb21wdXRlZCkoKCkgPT4ge1xuICAgICAgaWYgKHVzZXNPcGVuQ2xvc2VkU3RhdGUgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHVzZXNPcGVuQ2xvc2VkU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLztcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcGkubWVudVN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi87XG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHZhciBfYSwgX2I7XG4gICAgICBsZXQgc2xvdCA9IHsgb3BlbjogYXBpLm1lbnVTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCI6IGFwaS5hY3RpdmVJdGVtSW5kZXgudmFsdWUgPT09IG51bGwgPyB2b2lkIDAgOiAoX2EgPSBhcGkuaXRlbXMudmFsdWVbYXBpLmFjdGl2ZUl0ZW1JbmRleC52YWx1ZV0pID09IG51bGwgPyB2b2lkIDAgOiBfYS5pZCxcbiAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogKF9iID0gZG9tKGFwaS5idXR0b25SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2IuaWQsXG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIG9uS2V5ZG93bjogaGFuZGxlS2V5RG93bixcbiAgICAgICAgb25LZXl1cDogaGFuZGxlS2V5VXAsXG4gICAgICAgIHJvbGU6IFwibWVudVwiLFxuICAgICAgICB0YWJJbmRleDogMCxcbiAgICAgICAgcmVmOiBhcGkuaXRlbXNSZWZcbiAgICAgIH07XG4gICAgICBsZXQgdGhlaXJQcm9wcyA9IHByb3BzO1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBzbG90LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIGZlYXR1cmVzOiAxIC8qIFJlbmRlclN0cmF0ZWd5ICovIHwgMiAvKiBTdGF0aWMgKi8sXG4gICAgICAgIHZpc2libGU6IHZpc2libGUudmFsdWUsXG4gICAgICAgIG5hbWU6IFwiTWVudUl0ZW1zXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIE1lbnVJdGVtID0gKDAsIGltcG9ydF92dWUyMC5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJNZW51SXRlbVwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwidGVtcGxhdGVcIiB9LFxuICAgIGRpc2FibGVkOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgc2xvdHMsIGF0dHJzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSB1c2VNZW51Q29udGV4dChcIk1lbnVJdGVtXCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1tZW51LWl0ZW0tJHt1c2VJZCgpfWA7XG4gICAgbGV0IGludGVybmFsSXRlbVJlZiA9ICgwLCBpbXBvcnRfdnVlMjAucmVmKShudWxsKTtcbiAgICBleHBvc2UoeyBlbDogaW50ZXJuYWxJdGVtUmVmLCAkZWw6IGludGVybmFsSXRlbVJlZiB9KTtcbiAgICBsZXQgYWN0aXZlID0gKDAsIGltcG9ydF92dWUyMC5jb21wdXRlZCkoKCkgPT4ge1xuICAgICAgcmV0dXJuIGFwaS5hY3RpdmVJdGVtSW5kZXgudmFsdWUgIT09IG51bGwgPyBhcGkuaXRlbXMudmFsdWVbYXBpLmFjdGl2ZUl0ZW1JbmRleC52YWx1ZV0uaWQgPT09IGlkMiA6IGZhbHNlO1xuICAgIH0pO1xuICAgIGxldCBkYXRhUmVmID0gKDAsIGltcG9ydF92dWUyMC5jb21wdXRlZCkoKCkgPT4gKHtcbiAgICAgIGRpc2FibGVkOiBwcm9wcy5kaXNhYmxlZCxcbiAgICAgIHRleHRWYWx1ZTogXCJcIixcbiAgICAgIGRvbVJlZjogaW50ZXJuYWxJdGVtUmVmXG4gICAgfSkpO1xuICAgICgwLCBpbXBvcnRfdnVlMjAub25Nb3VudGVkKSgoKSA9PiB7XG4gICAgICB2YXIgX2EsIF9iO1xuICAgICAgbGV0IHRleHRWYWx1ZSA9IChfYiA9IChfYSA9IGRvbShpbnRlcm5hbEl0ZW1SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EudGV4dENvbnRlbnQpID09IG51bGwgPyB2b2lkIDAgOiBfYi50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgICAgIGlmICh0ZXh0VmFsdWUgIT09IHZvaWQgMClcbiAgICAgICAgZGF0YVJlZi52YWx1ZS50ZXh0VmFsdWUgPSB0ZXh0VmFsdWU7XG4gICAgfSk7XG4gICAgKDAsIGltcG9ydF92dWUyMC5vbk1vdW50ZWQpKCgpID0+IGFwaS5yZWdpc3Rlckl0ZW0oaWQyLCBkYXRhUmVmKSk7XG4gICAgKDAsIGltcG9ydF92dWUyMC5vblVubW91bnRlZCkoKCkgPT4gYXBpLnVucmVnaXN0ZXJJdGVtKGlkMikpO1xuICAgICgwLCBpbXBvcnRfdnVlMjAud2F0Y2hFZmZlY3QpKCgpID0+IHtcbiAgICAgIGlmIChhcGkubWVudVN0YXRlLnZhbHVlICE9PSAwIC8qIE9wZW4gKi8pXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICghYWN0aXZlLnZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoYXBpLmFjdGl2YXRpb25UcmlnZ2VyLnZhbHVlID09PSAwIC8qIFBvaW50ZXIgKi8pXG4gICAgICAgIHJldHVybjtcbiAgICAgICgwLCBpbXBvcnRfdnVlMjAubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgcmV0dXJuIChfYiA9IChfYSA9IGRvbShpbnRlcm5hbEl0ZW1SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2Euc2Nyb2xsSW50b1ZpZXcpID09IG51bGwgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCB7IGJsb2NrOiBcIm5lYXJlc3RcIiB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2ZW50KSB7XG4gICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgIHJldHVybiBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgYXBpLmNsb3NlTWVudSgpO1xuICAgICAgKDAsIGltcG9ydF92dWUyMC5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiAoX2EgPSBkb20oYXBpLmJ1dHRvblJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlRm9jdXMoKSB7XG4gICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgIHJldHVybiBhcGkuZ29Ub0l0ZW0oNSAvKiBOb3RoaW5nICovKTtcbiAgICAgIGFwaS5nb1RvSXRlbSg0IC8qIFNwZWNpZmljICovLCBpZDIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVNb3ZlKCkge1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoYWN0aXZlLnZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBhcGkuZ29Ub0l0ZW0oNCAvKiBTcGVjaWZpYyAqLywgaWQyLCAwIC8qIFBvaW50ZXIgKi8pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVMZWF2ZSgpIHtcbiAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKCFhY3RpdmUudmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGFwaS5nb1RvSXRlbSg1IC8qIE5vdGhpbmcgKi8pO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHsgZGlzYWJsZWQgfSA9IHByb3BzO1xuICAgICAgbGV0IHNsb3QgPSB7IGFjdGl2ZTogYWN0aXZlLnZhbHVlLCBkaXNhYmxlZCB9O1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICBpZDogaWQyLFxuICAgICAgICByZWY6IGludGVybmFsSXRlbVJlZixcbiAgICAgICAgcm9sZTogXCJtZW51aXRlbVwiLFxuICAgICAgICB0YWJJbmRleDogZGlzYWJsZWQgPT09IHRydWUgPyB2b2lkIDAgOiAtMSxcbiAgICAgICAgXCJhcmlhLWRpc2FibGVkXCI6IGRpc2FibGVkID09PSB0cnVlID8gdHJ1ZSA6IHZvaWQgMCxcbiAgICAgICAgb25DbGljazogaGFuZGxlQ2xpY2ssXG4gICAgICAgIG9uRm9jdXM6IGhhbmRsZUZvY3VzLFxuICAgICAgICBvblBvaW50ZXJtb3ZlOiBoYW5kbGVNb3ZlLFxuICAgICAgICBvbk1vdXNlbW92ZTogaGFuZGxlTW92ZSxcbiAgICAgICAgb25Qb2ludGVybGVhdmU6IGhhbmRsZUxlYXZlLFxuICAgICAgICBvbk1vdXNlbGVhdmU6IGhhbmRsZUxlYXZlXG4gICAgICB9O1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBwcm9wcztcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIk1lbnVJdGVtXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBzcmMvY29tcG9uZW50cy9wb3BvdmVyL3BvcG92ZXIudHNcbnZhciBpbXBvcnRfdnVlMjEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIFBvcG92ZXJDb250ZXh0ID0gU3ltYm9sKFwiUG9wb3ZlckNvbnRleHRcIik7XG5mdW5jdGlvbiB1c2VQb3BvdmVyQ29udGV4dChjb21wb25lbnQpIHtcbiAgbGV0IGNvbnRleHQgPSAoMCwgaW1wb3J0X3Z1ZTIxLmluamVjdCkoUG9wb3ZlckNvbnRleHQsIG51bGwpO1xuICBpZiAoY29udGV4dCA9PT0gbnVsbCkge1xuICAgIGxldCBlcnIgPSBuZXcgRXJyb3IoYDwke2NvbXBvbmVudH0gLz4gaXMgbWlzc2luZyBhIHBhcmVudCA8JHtQb3BvdmVyLm5hbWV9IC8+IGNvbXBvbmVudC5gKTtcbiAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpXG4gICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnIsIHVzZVBvcG92ZXJDb250ZXh0KTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG52YXIgUG9wb3Zlckdyb3VwQ29udGV4dCA9IFN5bWJvbChcIlBvcG92ZXJHcm91cENvbnRleHRcIik7XG5mdW5jdGlvbiB1c2VQb3BvdmVyR3JvdXBDb250ZXh0KCkge1xuICByZXR1cm4gKDAsIGltcG9ydF92dWUyMS5pbmplY3QpKFBvcG92ZXJHcm91cENvbnRleHQsIG51bGwpO1xufVxudmFyIFBvcG92ZXJQYW5lbENvbnRleHQgPSBTeW1ib2woXCJQb3BvdmVyUGFuZWxDb250ZXh0XCIpO1xuZnVuY3Rpb24gdXNlUG9wb3ZlclBhbmVsQ29udGV4dCgpIHtcbiAgcmV0dXJuICgwLCBpbXBvcnRfdnVlMjEuaW5qZWN0KShQb3BvdmVyUGFuZWxDb250ZXh0LCBudWxsKTtcbn1cbnZhciBQb3BvdmVyID0gKDAsIGltcG9ydF92dWUyMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJQb3BvdmVyXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IHNsb3RzLCBhdHRycywgZXhwb3NlIH0pIHtcbiAgICB2YXIgX2E7XG4gICAgbGV0IGJ1dHRvbklkID0gYGhlYWRsZXNzdWktcG9wb3Zlci1idXR0b24tJHt1c2VJZCgpfWA7XG4gICAgbGV0IHBhbmVsSWQgPSBgaGVhZGxlc3N1aS1wb3BvdmVyLXBhbmVsLSR7dXNlSWQoKX1gO1xuICAgIGxldCBpbnRlcm5hbFBvcG92ZXJSZWYgPSAoMCwgaW1wb3J0X3Z1ZTIxLnJlZikobnVsbCk7XG4gICAgZXhwb3NlKHsgZWw6IGludGVybmFsUG9wb3ZlclJlZiwgJGVsOiBpbnRlcm5hbFBvcG92ZXJSZWYgfSk7XG4gICAgbGV0IHBvcG92ZXJTdGF0ZSA9ICgwLCBpbXBvcnRfdnVlMjEucmVmKSgxIC8qIENsb3NlZCAqLyk7XG4gICAgbGV0IGJ1dHRvbiA9ICgwLCBpbXBvcnRfdnVlMjEucmVmKShudWxsKTtcbiAgICBsZXQgYmVmb3JlUGFuZWxTZW50aW5lbCA9ICgwLCBpbXBvcnRfdnVlMjEucmVmKShudWxsKTtcbiAgICBsZXQgYWZ0ZXJQYW5lbFNlbnRpbmVsID0gKDAsIGltcG9ydF92dWUyMS5yZWYpKG51bGwpO1xuICAgIGxldCBwYW5lbCA9ICgwLCBpbXBvcnRfdnVlMjEucmVmKShudWxsKTtcbiAgICBsZXQgb3duZXJEb2N1bWVudCA9ICgwLCBpbXBvcnRfdnVlMjEuY29tcHV0ZWQpKCgpID0+IGdldE93bmVyRG9jdW1lbnQoaW50ZXJuYWxQb3BvdmVyUmVmKSk7XG4gICAgbGV0IGlzUG9ydGFsbGVkID0gKDAsIGltcG9ydF92dWUyMS5jb21wdXRlZCkoKCkgPT4ge1xuICAgICAgaWYgKCFkb20oYnV0dG9uKSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgaWYgKCFkb20ocGFuZWwpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBmb3IgKGxldCByb290IG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJib2R5ID4gKlwiKSkge1xuICAgICAgICBpZiAoTnVtYmVyKHJvb3QgPT0gbnVsbCA/IHZvaWQgMCA6IHJvb3QuY29udGFpbnMoZG9tKGJ1dHRvbikpKSBeIE51bWJlcihyb290ID09IG51bGwgPyB2b2lkIDAgOiByb290LmNvbnRhaW5zKGRvbShwYW5lbCkpKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gICAgbGV0IGFwaSA9IHtcbiAgICAgIHBvcG92ZXJTdGF0ZSxcbiAgICAgIGJ1dHRvbklkLFxuICAgICAgcGFuZWxJZCxcbiAgICAgIHBhbmVsLFxuICAgICAgYnV0dG9uLFxuICAgICAgaXNQb3J0YWxsZWQsXG4gICAgICBiZWZvcmVQYW5lbFNlbnRpbmVsLFxuICAgICAgYWZ0ZXJQYW5lbFNlbnRpbmVsLFxuICAgICAgdG9nZ2xlUG9wb3ZlcigpIHtcbiAgICAgICAgcG9wb3ZlclN0YXRlLnZhbHVlID0gbWF0Y2gocG9wb3ZlclN0YXRlLnZhbHVlLCB7XG4gICAgICAgICAgWzAgLyogT3BlbiAqL106IDEgLyogQ2xvc2VkICovLFxuICAgICAgICAgIFsxIC8qIENsb3NlZCAqL106IDAgLyogT3BlbiAqL1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBjbG9zZVBvcG92ZXIoKSB7XG4gICAgICAgIGlmIChwb3BvdmVyU3RhdGUudmFsdWUgPT09IDEgLyogQ2xvc2VkICovKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcG9wb3ZlclN0YXRlLnZhbHVlID0gMSAvKiBDbG9zZWQgKi87XG4gICAgICB9LFxuICAgICAgY2xvc2UoZm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICBhcGkuY2xvc2VQb3BvdmVyKCk7XG4gICAgICAgIGxldCByZXN0b3JlRWxlbWVudCA9ICgoKSA9PiB7XG4gICAgICAgICAgaWYgKCFmb2N1c2FibGVFbGVtZW50KVxuICAgICAgICAgICAgcmV0dXJuIGRvbShhcGkuYnV0dG9uKTtcbiAgICAgICAgICBpZiAoZm9jdXNhYmxlRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KVxuICAgICAgICAgICAgcmV0dXJuIGZvY3VzYWJsZUVsZW1lbnQ7XG4gICAgICAgICAgaWYgKGZvY3VzYWJsZUVsZW1lbnQudmFsdWUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudClcbiAgICAgICAgICAgIHJldHVybiBkb20oZm9jdXNhYmxlRWxlbWVudCk7XG4gICAgICAgICAgcmV0dXJuIGRvbShhcGkuYnV0dG9uKTtcbiAgICAgICAgfSkoKTtcbiAgICAgICAgcmVzdG9yZUVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHJlc3RvcmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTIxLnByb3ZpZGUpKFBvcG92ZXJDb250ZXh0LCBhcGkpO1xuICAgIHVzZU9wZW5DbG9zZWRQcm92aWRlcigoMCwgaW1wb3J0X3Z1ZTIxLmNvbXB1dGVkKSgoKSA9PiBtYXRjaChwb3BvdmVyU3RhdGUudmFsdWUsIHtcbiAgICAgIFswIC8qIE9wZW4gKi9dOiAwIC8qIE9wZW4gKi8sXG4gICAgICBbMSAvKiBDbG9zZWQgKi9dOiAxIC8qIENsb3NlZCAqL1xuICAgIH0pKSk7XG4gICAgbGV0IHJlZ2lzdGVyQmFnID0ge1xuICAgICAgYnV0dG9uSWQsXG4gICAgICBwYW5lbElkLFxuICAgICAgY2xvc2UoKSB7XG4gICAgICAgIGFwaS5jbG9zZVBvcG92ZXIoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGxldCBncm91cENvbnRleHQgPSB1c2VQb3BvdmVyR3JvdXBDb250ZXh0KCk7XG4gICAgbGV0IHJlZ2lzdGVyUG9wb3ZlciA9IGdyb3VwQ29udGV4dCA9PSBudWxsID8gdm9pZCAwIDogZ3JvdXBDb250ZXh0LnJlZ2lzdGVyUG9wb3ZlcjtcbiAgICBmdW5jdGlvbiBpc0ZvY3VzV2l0aGluUG9wb3Zlckdyb3VwKCkge1xuICAgICAgdmFyIF9hMiwgX2IsIF9jLCBfZDtcbiAgICAgIHJldHVybiAoX2QgPSBncm91cENvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IGdyb3VwQ29udGV4dC5pc0ZvY3VzV2l0aGluUG9wb3Zlckdyb3VwKCkpICE9IG51bGwgPyBfZCA6ICgoX2EyID0gb3duZXJEb2N1bWVudC52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5hY3RpdmVFbGVtZW50KSAmJiAoKChfYiA9IGRvbShidXR0b24pKSA9PSBudWxsID8gdm9pZCAwIDogX2IuY29udGFpbnMob3duZXJEb2N1bWVudC52YWx1ZS5hY3RpdmVFbGVtZW50KSkgfHwgKChfYyA9IGRvbShwYW5lbCkpID09IG51bGwgPyB2b2lkIDAgOiBfYy5jb250YWlucyhvd25lckRvY3VtZW50LnZhbHVlLmFjdGl2ZUVsZW1lbnQpKSk7XG4gICAgfVxuICAgICgwLCBpbXBvcnRfdnVlMjEud2F0Y2hFZmZlY3QpKCgpID0+IHJlZ2lzdGVyUG9wb3ZlciA9PSBudWxsID8gdm9pZCAwIDogcmVnaXN0ZXJQb3BvdmVyKHJlZ2lzdGVyQmFnKSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcigoX2EgPSBvd25lckRvY3VtZW50LnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZGVmYXVsdFZpZXcsIFwiZm9jdXNcIiwgKGV2ZW50KSA9PiB7XG4gICAgICB2YXIgX2EyLCBfYjtcbiAgICAgIGlmIChwb3BvdmVyU3RhdGUudmFsdWUgIT09IDAgLyogT3BlbiAqLylcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGlzRm9jdXNXaXRoaW5Qb3BvdmVyR3JvdXAoKSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKCFidXR0b24pXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICghcGFuZWwpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICgoX2EyID0gZG9tKGFwaS5iZWZvcmVQYW5lbFNlbnRpbmVsKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5jb250YWlucyhldmVudC50YXJnZXQpKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoKF9iID0gZG9tKGFwaS5hZnRlclBhbmVsU2VudGluZWwpKSA9PSBudWxsID8gdm9pZCAwIDogX2IuY29udGFpbnMoZXZlbnQudGFyZ2V0KSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgYXBpLmNsb3NlUG9wb3ZlcigpO1xuICAgIH0sIHRydWUpO1xuICAgIHVzZU91dHNpZGVDbGljayhbYnV0dG9uLCBwYW5lbF0sIChldmVudCwgdGFyZ2V0KSA9PiB7XG4gICAgICB2YXIgX2EyO1xuICAgICAgYXBpLmNsb3NlUG9wb3ZlcigpO1xuICAgICAgaWYgKCFpc0ZvY3VzYWJsZUVsZW1lbnQodGFyZ2V0LCAxIC8qIExvb3NlICovKSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAoX2EyID0gZG9tKGJ1dHRvbikpID09IG51bGwgPyB2b2lkIDAgOiBfYTIuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LCAoMCwgaW1wb3J0X3Z1ZTIxLmNvbXB1dGVkKSgoKSA9PiBwb3BvdmVyU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLykpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgc2xvdCA9IHsgb3BlbjogcG9wb3ZlclN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8sIGNsb3NlOiBhcGkuY2xvc2UgfTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICB0aGVpclByb3BzOiBwcm9wcyxcbiAgICAgICAgb3VyUHJvcHM6IHsgcmVmOiBpbnRlcm5hbFBvcG92ZXJSZWYgfSxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBuYW1lOiBcIlBvcG92ZXJcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgUG9wb3ZlckJ1dHRvbiA9ICgwLCBpbXBvcnRfdnVlMjEuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiUG9wb3ZlckJ1dHRvblwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiYnV0dG9uXCIgfSxcbiAgICBkaXNhYmxlZDogeyB0eXBlOiBbQm9vbGVhbl0sIGRlZmF1bHQ6IGZhbHNlIH1cbiAgfSxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSB1c2VQb3BvdmVyQ29udGV4dChcIlBvcG92ZXJCdXR0b25cIik7XG4gICAgbGV0IG93bmVyRG9jdW1lbnQgPSAoMCwgaW1wb3J0X3Z1ZTIxLmNvbXB1dGVkKSgoKSA9PiBnZXRPd25lckRvY3VtZW50KGFwaS5idXR0b24pKTtcbiAgICBleHBvc2UoeyBlbDogYXBpLmJ1dHRvbiwgJGVsOiBhcGkuYnV0dG9uIH0pO1xuICAgIGxldCBncm91cENvbnRleHQgPSB1c2VQb3BvdmVyR3JvdXBDb250ZXh0KCk7XG4gICAgbGV0IGNsb3NlT3RoZXJzID0gZ3JvdXBDb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiBncm91cENvbnRleHQuY2xvc2VPdGhlcnM7XG4gICAgbGV0IHBhbmVsQ29udGV4dCA9IHVzZVBvcG92ZXJQYW5lbENvbnRleHQoKTtcbiAgICBsZXQgaXNXaXRoaW5QYW5lbCA9IHBhbmVsQ29udGV4dCA9PT0gbnVsbCA/IGZhbHNlIDogcGFuZWxDb250ZXh0ID09PSBhcGkucGFuZWxJZDtcbiAgICBsZXQgZWxlbWVudFJlZiA9ICgwLCBpbXBvcnRfdnVlMjEucmVmKShudWxsKTtcbiAgICBsZXQgc2VudGluZWxJZCA9IGBoZWFkbGVzc3VpLWZvY3VzLXNlbnRpbmVsLSR7dXNlSWQoKX1gO1xuICAgIGlmICghaXNXaXRoaW5QYW5lbCkge1xuICAgICAgKDAsIGltcG9ydF92dWUyMS53YXRjaEVmZmVjdCkoKCkgPT4ge1xuICAgICAgICBhcGkuYnV0dG9uLnZhbHVlID0gZWxlbWVudFJlZi52YWx1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsZXQgdHlwZSA9IHVzZVJlc29sdmVCdXR0b25UeXBlKCgwLCBpbXBvcnRfdnVlMjEuY29tcHV0ZWQpKCgpID0+ICh7IGFzOiBwcm9wcy5hcywgdHlwZTogYXR0cnMudHlwZSB9KSksIGVsZW1lbnRSZWYpO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUtleURvd24oZXZlbnQpIHtcbiAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2U7XG4gICAgICBpZiAoaXNXaXRoaW5QYW5lbCkge1xuICAgICAgICBpZiAoYXBpLnBvcG92ZXJTdGF0ZS52YWx1ZSA9PT0gMSAvKiBDbG9zZWQgKi8pXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICAgIGNhc2UgXCIgXCIgLyogU3BhY2UgKi86XG4gICAgICAgICAgY2FzZSBcIkVudGVyXCIgLyogRW50ZXIgKi86XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgKF9iID0gKF9hID0gZXZlbnQudGFyZ2V0KS5jbGljaykgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpO1xuICAgICAgICAgICAgYXBpLmNsb3NlUG9wb3ZlcigpO1xuICAgICAgICAgICAgKF9jID0gZG9tKGFwaS5idXR0b24pKSA9PSBudWxsID8gdm9pZCAwIDogX2MuZm9jdXMoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICAgIGNhc2UgXCIgXCIgLyogU3BhY2UgKi86XG4gICAgICAgICAgY2FzZSBcIkVudGVyXCIgLyogRW50ZXIgKi86XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBpZiAoYXBpLnBvcG92ZXJTdGF0ZS52YWx1ZSA9PT0gMSAvKiBDbG9zZWQgKi8pXG4gICAgICAgICAgICAgIGNsb3NlT3RoZXJzID09IG51bGwgPyB2b2lkIDAgOiBjbG9zZU90aGVycyhhcGkuYnV0dG9uSWQpO1xuICAgICAgICAgICAgYXBpLnRvZ2dsZVBvcG92ZXIoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJFc2NhcGVcIiAvKiBFc2NhcGUgKi86XG4gICAgICAgICAgICBpZiAoYXBpLnBvcG92ZXJTdGF0ZS52YWx1ZSAhPT0gMCAvKiBPcGVuICovKVxuICAgICAgICAgICAgICByZXR1cm4gY2xvc2VPdGhlcnMgPT0gbnVsbCA/IHZvaWQgMCA6IGNsb3NlT3RoZXJzKGFwaS5idXR0b25JZCk7XG4gICAgICAgICAgICBpZiAoIWRvbShhcGkuYnV0dG9uKSlcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKCgoX2QgPSBvd25lckRvY3VtZW50LnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2QuYWN0aXZlRWxlbWVudCkgJiYgISgoX2UgPSBkb20oYXBpLmJ1dHRvbikpID09IG51bGwgPyB2b2lkIDAgOiBfZS5jb250YWlucyhvd25lckRvY3VtZW50LnZhbHVlLmFjdGl2ZUVsZW1lbnQpKSlcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgYXBpLmNsb3NlUG9wb3ZlcigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5VXAoZXZlbnQpIHtcbiAgICAgIGlmIChpc1dpdGhpblBhbmVsKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSBcIiBcIiAvKiBTcGFjZSAqLykge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCkge1xuICAgICAgdmFyIF9hLCBfYjtcbiAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGlzV2l0aGluUGFuZWwpIHtcbiAgICAgICAgYXBpLmNsb3NlUG9wb3ZlcigpO1xuICAgICAgICAoX2EgPSBkb20oYXBpLmJ1dHRvbikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmIChhcGkucG9wb3ZlclN0YXRlLnZhbHVlID09PSAxIC8qIENsb3NlZCAqLylcbiAgICAgICAgICBjbG9zZU90aGVycyA9PSBudWxsID8gdm9pZCAwIDogY2xvc2VPdGhlcnMoYXBpLmJ1dHRvbklkKTtcbiAgICAgICAgYXBpLnRvZ2dsZVBvcG92ZXIoKTtcbiAgICAgICAgKF9iID0gZG9tKGFwaS5idXR0b24pKSA9PSBudWxsID8gdm9pZCAwIDogX2IuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlTW91c2VEb3duKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgdmlzaWJsZSA9IGFwaS5wb3BvdmVyU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLztcbiAgICAgIGxldCBzbG90ID0geyBvcGVuOiB2aXNpYmxlIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSBpc1dpdGhpblBhbmVsID8ge1xuICAgICAgICByZWY6IGVsZW1lbnRSZWYsXG4gICAgICAgIHR5cGU6IHR5cGUudmFsdWUsXG4gICAgICAgIG9uS2V5ZG93bjogaGFuZGxlS2V5RG93bixcbiAgICAgICAgb25DbGljazogaGFuZGxlQ2xpY2tcbiAgICAgIH0gOiB7XG4gICAgICAgIHJlZjogZWxlbWVudFJlZixcbiAgICAgICAgaWQ6IGFwaS5idXR0b25JZCxcbiAgICAgICAgdHlwZTogdHlwZS52YWx1ZSxcbiAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IHByb3BzLmRpc2FibGVkID8gdm9pZCAwIDogYXBpLnBvcG92ZXJTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovLFxuICAgICAgICBcImFyaWEtY29udHJvbHNcIjogZG9tKGFwaS5wYW5lbCkgPyBhcGkucGFuZWxJZCA6IHZvaWQgMCxcbiAgICAgICAgZGlzYWJsZWQ6IHByb3BzLmRpc2FibGVkID8gdHJ1ZSA6IHZvaWQgMCxcbiAgICAgICAgb25LZXlkb3duOiBoYW5kbGVLZXlEb3duLFxuICAgICAgICBvbktleXVwOiBoYW5kbGVLZXlVcCxcbiAgICAgICAgb25DbGljazogaGFuZGxlQ2xpY2ssXG4gICAgICAgIG9uTW91c2Vkb3duOiBoYW5kbGVNb3VzZURvd25cbiAgICAgIH07XG4gICAgICBsZXQgZGlyZWN0aW9uID0gdXNlVGFiRGlyZWN0aW9uKCk7XG4gICAgICBmdW5jdGlvbiBoYW5kbGVGb2N1cygpIHtcbiAgICAgICAgbGV0IGVsID0gZG9tKGFwaS5wYW5lbCk7XG4gICAgICAgIGlmICghZWwpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBmdW5jdGlvbiBydW4oKSB7XG4gICAgICAgICAgbWF0Y2goZGlyZWN0aW9uLnZhbHVlLCB7XG4gICAgICAgICAgICBbMCAvKiBGb3J3YXJkcyAqL106ICgpID0+IGZvY3VzSW4oZWwsIDEgLyogRmlyc3QgKi8pLFxuICAgICAgICAgICAgWzEgLyogQmFja3dhcmRzICovXTogKCkgPT4gZm9jdXNJbihlbCwgOCAvKiBMYXN0ICovKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAgIG1pY3JvVGFzayhydW4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJ1bigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gKDAsIGltcG9ydF92dWUyMS5oKShpbXBvcnRfdnVlMjEuRnJhZ21lbnQsIFtcbiAgICAgICAgcmVuZGVyKHtcbiAgICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgICB0aGVpclByb3BzOiB7IC4uLmF0dHJzLCAuLi5wcm9wcyB9LFxuICAgICAgICAgIHNsb3QsXG4gICAgICAgICAgYXR0cnMsXG4gICAgICAgICAgc2xvdHMsXG4gICAgICAgICAgbmFtZTogXCJQb3BvdmVyQnV0dG9uXCJcbiAgICAgICAgfSksXG4gICAgICAgIHZpc2libGUgJiYgIWlzV2l0aGluUGFuZWwgJiYgYXBpLmlzUG9ydGFsbGVkLnZhbHVlICYmICgwLCBpbXBvcnRfdnVlMjEuaCkoSGlkZGVuLCB7XG4gICAgICAgICAgaWQ6IHNlbnRpbmVsSWQsXG4gICAgICAgICAgZmVhdHVyZXM6IDIgLyogRm9jdXNhYmxlICovLFxuICAgICAgICAgIGFzOiBcImJ1dHRvblwiLFxuICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgb25Gb2N1czogaGFuZGxlRm9jdXNcbiAgICAgICAgfSlcbiAgICAgIF0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIFBvcG92ZXJPdmVybGF5ID0gKDAsIGltcG9ydF92dWUyMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJQb3BvdmVyT3ZlcmxheVwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfSxcbiAgICBzdGF0aWM6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICB1bm1vdW50OiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IHRydWUgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMgfSkge1xuICAgIGxldCBhcGkgPSB1c2VQb3BvdmVyQ29udGV4dChcIlBvcG92ZXJPdmVybGF5XCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1wb3BvdmVyLW92ZXJsYXktJHt1c2VJZCgpfWA7XG4gICAgbGV0IHVzZXNPcGVuQ2xvc2VkU3RhdGUgPSB1c2VPcGVuQ2xvc2VkKCk7XG4gICAgbGV0IHZpc2libGUgPSAoMCwgaW1wb3J0X3Z1ZTIxLmNvbXB1dGVkKSgoKSA9PiB7XG4gICAgICBpZiAodXNlc09wZW5DbG9zZWRTdGF0ZSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdXNlc09wZW5DbG9zZWRTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFwaS5wb3BvdmVyU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLztcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljaygpIHtcbiAgICAgIGFwaS5jbG9zZVBvcG92ZXIoKTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBzbG90ID0geyBvcGVuOiBhcGkucG9wb3ZlclN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8gfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgaWQ6IGlkMixcbiAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlLFxuICAgICAgICBvbkNsaWNrOiBoYW5kbGVDbGlja1xuICAgICAgfTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wczogcHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgZmVhdHVyZXM6IDEgLyogUmVuZGVyU3RyYXRlZ3kgKi8gfCAyIC8qIFN0YXRpYyAqLyxcbiAgICAgICAgdmlzaWJsZTogdmlzaWJsZS52YWx1ZSxcbiAgICAgICAgbmFtZTogXCJQb3BvdmVyT3ZlcmxheVwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBQb3BvdmVyUGFuZWwgPSAoMCwgaW1wb3J0X3Z1ZTIxLmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIlBvcG92ZXJQYW5lbFwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfSxcbiAgICBzdGF0aWM6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICB1bm1vdW50OiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IHRydWUgfSxcbiAgICBmb2N1czogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9XG4gIH0sXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgeyBmb2N1cyB9ID0gcHJvcHM7XG4gICAgbGV0IGFwaSA9IHVzZVBvcG92ZXJDb250ZXh0KFwiUG9wb3ZlclBhbmVsXCIpO1xuICAgIGxldCBvd25lckRvY3VtZW50ID0gKDAsIGltcG9ydF92dWUyMS5jb21wdXRlZCkoKCkgPT4gZ2V0T3duZXJEb2N1bWVudChhcGkucGFuZWwpKTtcbiAgICBsZXQgYmVmb3JlUGFuZWxTZW50aW5lbElkID0gYGhlYWRsZXNzdWktZm9jdXMtc2VudGluZWwtYmVmb3JlLSR7dXNlSWQoKX1gO1xuICAgIGxldCBhZnRlclBhbmVsU2VudGluZWxJZCA9IGBoZWFkbGVzc3VpLWZvY3VzLXNlbnRpbmVsLWFmdGVyLSR7dXNlSWQoKX1gO1xuICAgIGV4cG9zZSh7IGVsOiBhcGkucGFuZWwsICRlbDogYXBpLnBhbmVsIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMjEucHJvdmlkZSkoUG9wb3ZlclBhbmVsQ29udGV4dCwgYXBpLnBhbmVsSWQpO1xuICAgICgwLCBpbXBvcnRfdnVlMjEud2F0Y2hFZmZlY3QpKCgpID0+IHtcbiAgICAgIHZhciBfYSwgX2I7XG4gICAgICBpZiAoIWZvY3VzKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoYXBpLnBvcG92ZXJTdGF0ZS52YWx1ZSAhPT0gMCAvKiBPcGVuICovKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoIWFwaS5wYW5lbClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgbGV0IGFjdGl2ZUVsZW1lbnQgPSAoX2EgPSBvd25lckRvY3VtZW50LnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuYWN0aXZlRWxlbWVudDtcbiAgICAgIGlmICgoX2IgPSBkb20oYXBpLnBhbmVsKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmNvbnRhaW5zKGFjdGl2ZUVsZW1lbnQpKVxuICAgICAgICByZXR1cm47XG4gICAgICBmb2N1c0luKGRvbShhcGkucGFuZWwpLCAxIC8qIEZpcnN0ICovKTtcbiAgICB9KTtcbiAgICBsZXQgdXNlc09wZW5DbG9zZWRTdGF0ZSA9IHVzZU9wZW5DbG9zZWQoKTtcbiAgICBsZXQgdmlzaWJsZSA9ICgwLCBpbXBvcnRfdnVlMjEuY29tcHV0ZWQpKCgpID0+IHtcbiAgICAgIGlmICh1c2VzT3BlbkNsb3NlZFN0YXRlICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB1c2VzT3BlbkNsb3NlZFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi87XG4gICAgICB9XG4gICAgICByZXR1cm4gYXBpLnBvcG92ZXJTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovO1xuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUtleURvd24oZXZlbnQpIHtcbiAgICAgIHZhciBfYSwgX2I7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlIFwiRXNjYXBlXCIgLyogRXNjYXBlICovOlxuICAgICAgICAgIGlmIChhcGkucG9wb3ZlclN0YXRlLnZhbHVlICE9PSAwIC8qIE9wZW4gKi8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgaWYgKCFkb20oYXBpLnBhbmVsKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBpZiAob3duZXJEb2N1bWVudC52YWx1ZSAmJiAhKChfYSA9IGRvbShhcGkucGFuZWwpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuY29udGFpbnMob3duZXJEb2N1bWVudC52YWx1ZS5hY3RpdmVFbGVtZW50KSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBhcGkuY2xvc2VQb3BvdmVyKCk7XG4gICAgICAgICAgKF9iID0gZG9tKGFwaS5idXR0b24pKSA9PSBudWxsID8gdm9pZCAwIDogX2IuZm9jdXMoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlQmx1cihldmVudCkge1xuICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZTtcbiAgICAgIGxldCBlbCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQ7XG4gICAgICBpZiAoIWVsKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoIWRvbShhcGkucGFuZWwpKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoKF9hID0gZG9tKGFwaS5wYW5lbCkpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jb250YWlucyhlbCkpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGFwaS5jbG9zZVBvcG92ZXIoKTtcbiAgICAgIGlmICgoKF9jID0gKF9iID0gZG9tKGFwaS5iZWZvcmVQYW5lbFNlbnRpbmVsKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmNvbnRhaW5zKSA9PSBudWxsID8gdm9pZCAwIDogX2MuY2FsbChfYiwgZWwpKSB8fCAoKF9lID0gKF9kID0gZG9tKGFwaS5hZnRlclBhbmVsU2VudGluZWwpKSA9PSBudWxsID8gdm9pZCAwIDogX2QuY29udGFpbnMpID09IG51bGwgPyB2b2lkIDAgOiBfZS5jYWxsKF9kLCBlbCkpKSB7XG4gICAgICAgIGVsLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IGRpcmVjdGlvbiA9IHVzZVRhYkRpcmVjdGlvbigpO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUJlZm9yZUZvY3VzKCkge1xuICAgICAgbGV0IGVsID0gZG9tKGFwaS5wYW5lbCk7XG4gICAgICBpZiAoIWVsKVxuICAgICAgICByZXR1cm47XG4gICAgICBmdW5jdGlvbiBydW4oKSB7XG4gICAgICAgIG1hdGNoKGRpcmVjdGlvbi52YWx1ZSwge1xuICAgICAgICAgIFswIC8qIEZvcndhcmRzICovXTogKCkgPT4ge1xuICAgICAgICAgICAgZm9jdXNJbihlbCwgNCAvKiBOZXh0ICovKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIFsxIC8qIEJhY2t3YXJkcyAqL106ICgpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIChfYSA9IGRvbShhcGkuYnV0dG9uKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgIG1pY3JvVGFzayhydW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcnVuKCk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUFmdGVyRm9jdXMoKSB7XG4gICAgICBsZXQgZWwgPSBkb20oYXBpLnBhbmVsKTtcbiAgICAgIGlmICghZWwpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGZ1bmN0aW9uIHJ1bigpIHtcbiAgICAgICAgbWF0Y2goZGlyZWN0aW9uLnZhbHVlLCB7XG4gICAgICAgICAgWzAgLyogRm9yd2FyZHMgKi9dOiAoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgbGV0IGJ1dHRvbiA9IGRvbShhcGkuYnV0dG9uKTtcbiAgICAgICAgICAgIGxldCBwYW5lbCA9IGRvbShhcGkucGFuZWwpO1xuICAgICAgICAgICAgaWYgKCFidXR0b24pXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGxldCBlbGVtZW50cyA9IGdldEZvY3VzYWJsZUVsZW1lbnRzKCk7XG4gICAgICAgICAgICBsZXQgaWR4ID0gZWxlbWVudHMuaW5kZXhPZihidXR0b24pO1xuICAgICAgICAgICAgbGV0IGJlZm9yZSA9IGVsZW1lbnRzLnNsaWNlKDAsIGlkeCArIDEpO1xuICAgICAgICAgICAgbGV0IGFmdGVyID0gZWxlbWVudHMuc2xpY2UoaWR4ICsgMSk7XG4gICAgICAgICAgICBsZXQgY29tYmluZWQgPSBbLi4uYWZ0ZXIsIC4uLmJlZm9yZV07XG4gICAgICAgICAgICBmb3IgKGxldCBlbGVtZW50IG9mIGNvbWJpbmVkLnNsaWNlKCkpIHtcbiAgICAgICAgICAgICAgaWYgKCgoX2IgPSAoX2EgPSBlbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBlbGVtZW50LmlkKSA9PSBudWxsID8gdm9pZCAwIDogX2Euc3RhcnRzV2l0aCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIFwiaGVhZGxlc3N1aS1mb2N1cy1zZW50aW5lbC1cIikpIHx8IChwYW5lbCA9PSBudWxsID8gdm9pZCAwIDogcGFuZWwuY29udGFpbnMoZWxlbWVudCkpKSB7XG4gICAgICAgICAgICAgICAgbGV0IGlkeDIgPSBjb21iaW5lZC5pbmRleE9mKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmIChpZHgyICE9PSAtMSlcbiAgICAgICAgICAgICAgICAgIGNvbWJpbmVkLnNwbGljZShpZHgyLCAxKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9jdXNJbihjb21iaW5lZCwgMSAvKiBGaXJzdCAqLywgZmFsc2UpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgWzEgLyogQmFja3dhcmRzICovXTogKCkgPT4gZm9jdXNJbihlbCwgMiAvKiBQcmV2aW91cyAqLylcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgbWljcm9UYXNrKHJ1bik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBydW4oKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBzbG90ID0ge1xuICAgICAgICBvcGVuOiBhcGkucG9wb3ZlclN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8sXG4gICAgICAgIGNsb3NlOiBhcGkuY2xvc2VcbiAgICAgIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIHJlZjogYXBpLnBhbmVsLFxuICAgICAgICBpZDogYXBpLnBhbmVsSWQsXG4gICAgICAgIG9uS2V5ZG93bjogaGFuZGxlS2V5RG93bixcbiAgICAgICAgb25Gb2N1c291dDogZm9jdXMgJiYgYXBpLnBvcG92ZXJTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovID8gaGFuZGxlQmx1ciA6IHZvaWQgMCxcbiAgICAgICAgdGFiSW5kZXg6IC0xXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzOiB7IC4uLmF0dHJzLCAuLi5wcm9wcyB9LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgc2xvdHM6IHtcbiAgICAgICAgICAuLi5zbG90cyxcbiAgICAgICAgICBkZWZhdWx0OiAoLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgKDAsIGltcG9ydF92dWUyMS5oKShpbXBvcnRfdnVlMjEuRnJhZ21lbnQsIFtcbiAgICAgICAgICAgICAgICB2aXNpYmxlLnZhbHVlICYmIGFwaS5pc1BvcnRhbGxlZC52YWx1ZSAmJiAoMCwgaW1wb3J0X3Z1ZTIxLmgpKEhpZGRlbiwge1xuICAgICAgICAgICAgICAgICAgaWQ6IGJlZm9yZVBhbmVsU2VudGluZWxJZCxcbiAgICAgICAgICAgICAgICAgIHJlZjogYXBpLmJlZm9yZVBhbmVsU2VudGluZWwsXG4gICAgICAgICAgICAgICAgICBmZWF0dXJlczogMiAvKiBGb2N1c2FibGUgKi8sXG4gICAgICAgICAgICAgICAgICBhczogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICBvbkZvY3VzOiBoYW5kbGVCZWZvcmVGb2N1c1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIChfYSA9IHNsb3RzLmRlZmF1bHQpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jYWxsKHNsb3RzLCAuLi5hcmdzKSxcbiAgICAgICAgICAgICAgICB2aXNpYmxlLnZhbHVlICYmIGFwaS5pc1BvcnRhbGxlZC52YWx1ZSAmJiAoMCwgaW1wb3J0X3Z1ZTIxLmgpKEhpZGRlbiwge1xuICAgICAgICAgICAgICAgICAgaWQ6IGFmdGVyUGFuZWxTZW50aW5lbElkLFxuICAgICAgICAgICAgICAgICAgcmVmOiBhcGkuYWZ0ZXJQYW5lbFNlbnRpbmVsLFxuICAgICAgICAgICAgICAgICAgZmVhdHVyZXM6IDIgLyogRm9jdXNhYmxlICovLFxuICAgICAgICAgICAgICAgICAgYXM6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgb25Gb2N1czogaGFuZGxlQWZ0ZXJGb2N1c1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICBdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZmVhdHVyZXM6IDEgLyogUmVuZGVyU3RyYXRlZ3kgKi8gfCAyIC8qIFN0YXRpYyAqLyxcbiAgICAgICAgdmlzaWJsZTogdmlzaWJsZS52YWx1ZSxcbiAgICAgICAgbmFtZTogXCJQb3BvdmVyUGFuZWxcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgUG9wb3Zlckdyb3VwID0gKDAsIGltcG9ydF92dWUyMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJQb3BvdmVyR3JvdXBcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCBncm91cFJlZiA9ICgwLCBpbXBvcnRfdnVlMjEucmVmKShudWxsKTtcbiAgICBsZXQgcG9wb3ZlcnMgPSAoMCwgaW1wb3J0X3Z1ZTIxLnJlZikoW10pO1xuICAgIGxldCBvd25lckRvY3VtZW50ID0gKDAsIGltcG9ydF92dWUyMS5jb21wdXRlZCkoKCkgPT4gZ2V0T3duZXJEb2N1bWVudChncm91cFJlZikpO1xuICAgIGV4cG9zZSh7IGVsOiBncm91cFJlZiwgJGVsOiBncm91cFJlZiB9KTtcbiAgICBmdW5jdGlvbiB1bnJlZ2lzdGVyUG9wb3ZlcihyZWdpc3RlckJhZykge1xuICAgICAgbGV0IGlkeCA9IHBvcG92ZXJzLnZhbHVlLmluZGV4T2YocmVnaXN0ZXJCYWcpO1xuICAgICAgaWYgKGlkeCAhPT0gLTEpXG4gICAgICAgIHBvcG92ZXJzLnZhbHVlLnNwbGljZShpZHgsIDEpO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZWdpc3RlclBvcG92ZXIocmVnaXN0ZXJCYWcpIHtcbiAgICAgIHBvcG92ZXJzLnZhbHVlLnB1c2gocmVnaXN0ZXJCYWcpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgdW5yZWdpc3RlclBvcG92ZXIocmVnaXN0ZXJCYWcpO1xuICAgICAgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNGb2N1c1dpdGhpblBvcG92ZXJHcm91cCgpIHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGxldCBvd25lciA9IG93bmVyRG9jdW1lbnQudmFsdWU7XG4gICAgICBpZiAoIW93bmVyKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBsZXQgZWxlbWVudCA9IG93bmVyLmFjdGl2ZUVsZW1lbnQ7XG4gICAgICBpZiAoKF9hID0gZG9tKGdyb3VwUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNvbnRhaW5zKGVsZW1lbnQpKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIHJldHVybiBwb3BvdmVycy52YWx1ZS5zb21lKChiYWcpID0+IHtcbiAgICAgICAgdmFyIF9hMiwgX2I7XG4gICAgICAgIHJldHVybiAoKF9hMiA9IG93bmVyLmdldEVsZW1lbnRCeUlkKGJhZy5idXR0b25JZCkpID09IG51bGwgPyB2b2lkIDAgOiBfYTIuY29udGFpbnMoZWxlbWVudCkpIHx8ICgoX2IgPSBvd25lci5nZXRFbGVtZW50QnlJZChiYWcucGFuZWxJZCkpID09IG51bGwgPyB2b2lkIDAgOiBfYi5jb250YWlucyhlbGVtZW50KSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY2xvc2VPdGhlcnMoYnV0dG9uSWQpIHtcbiAgICAgIGZvciAobGV0IHBvcG92ZXIgb2YgcG9wb3ZlcnMudmFsdWUpIHtcbiAgICAgICAgaWYgKHBvcG92ZXIuYnV0dG9uSWQgIT09IGJ1dHRvbklkKVxuICAgICAgICAgIHBvcG92ZXIuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgKDAsIGltcG9ydF92dWUyMS5wcm92aWRlKShQb3BvdmVyR3JvdXBDb250ZXh0LCB7XG4gICAgICByZWdpc3RlclBvcG92ZXIsXG4gICAgICB1bnJlZ2lzdGVyUG9wb3ZlcixcbiAgICAgIGlzRm9jdXNXaXRoaW5Qb3BvdmVyR3JvdXAsXG4gICAgICBjbG9zZU90aGVyc1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7IHJlZjogZ3JvdXBSZWYgfTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wczogcHJvcHMsXG4gICAgICAgIHNsb3Q6IHt9LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiUG9wb3Zlckdyb3VwXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBzcmMvY29tcG9uZW50cy9yYWRpby1ncm91cC9yYWRpby1ncm91cC50c1xudmFyIGltcG9ydF92dWUyMyA9IHJlcXVpcmUoXCJ2dWVcIik7XG5cbi8vIHNyYy9jb21wb25lbnRzL2xhYmVsL2xhYmVsLnRzXG52YXIgaW1wb3J0X3Z1ZTIyID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBMYWJlbENvbnRleHQgPSBTeW1ib2woXCJMYWJlbENvbnRleHRcIik7XG5mdW5jdGlvbiB1c2VMYWJlbENvbnRleHQoKSB7XG4gIGxldCBjb250ZXh0ID0gKDAsIGltcG9ydF92dWUyMi5pbmplY3QpKExhYmVsQ29udGV4dCwgbnVsbCk7XG4gIGlmIChjb250ZXh0ID09PSBudWxsKSB7XG4gICAgbGV0IGVyciA9IG5ldyBFcnJvcihcIllvdSB1c2VkIGEgPExhYmVsIC8+IGNvbXBvbmVudCwgYnV0IGl0IGlzIG5vdCBpbnNpZGUgYSBwYXJlbnQuXCIpO1xuICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVyciwgdXNlTGFiZWxDb250ZXh0KTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5mdW5jdGlvbiB1c2VMYWJlbHMoe1xuICBzbG90ID0ge30sXG4gIG5hbWUgPSBcIkxhYmVsXCIsXG4gIHByb3BzID0ge31cbn0gPSB7fSkge1xuICBsZXQgbGFiZWxJZHMgPSAoMCwgaW1wb3J0X3Z1ZTIyLnJlZikoW10pO1xuICBmdW5jdGlvbiByZWdpc3Rlcih2YWx1ZSkge1xuICAgIGxhYmVsSWRzLnZhbHVlLnB1c2godmFsdWUpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgaWR4ID0gbGFiZWxJZHMudmFsdWUuaW5kZXhPZih2YWx1ZSk7XG4gICAgICBpZiAoaWR4ID09PSAtMSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgbGFiZWxJZHMudmFsdWUuc3BsaWNlKGlkeCwgMSk7XG4gICAgfTtcbiAgfVxuICAoMCwgaW1wb3J0X3Z1ZTIyLnByb3ZpZGUpKExhYmVsQ29udGV4dCwgeyByZWdpc3Rlciwgc2xvdCwgbmFtZSwgcHJvcHMgfSk7XG4gIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTIyLmNvbXB1dGVkKSgoKSA9PiBsYWJlbElkcy52YWx1ZS5sZW5ndGggPiAwID8gbGFiZWxJZHMudmFsdWUuam9pbihcIiBcIikgOiB2b2lkIDApO1xufVxudmFyIExhYmVsID0gKDAsIGltcG9ydF92dWUyMi5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJMYWJlbFwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwibGFiZWxcIiB9LFxuICAgIHBhc3NpdmU6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBmYWxzZSB9XG4gIH0sXG4gIHNldHVwKG15UHJvcHMsIHsgc2xvdHMsIGF0dHJzIH0pIHtcbiAgICBsZXQgY29udGV4dCA9IHVzZUxhYmVsQ29udGV4dCgpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1sYWJlbC0ke3VzZUlkKCl9YDtcbiAgICAoMCwgaW1wb3J0X3Z1ZTIyLm9uTW91bnRlZCkoKCkgPT4gKDAsIGltcG9ydF92dWUyMi5vblVubW91bnRlZCkoY29udGV4dC5yZWdpc3RlcihpZDIpKSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB7IG5hbWUgPSBcIkxhYmVsXCIsIHNsb3QgPSB7fSwgcHJvcHMgPSB7fSB9ID0gY29udGV4dDtcbiAgICAgIGxldCB7IHBhc3NpdmUsIC4uLnRoZWlyUHJvcHMgfSA9IG15UHJvcHM7XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIC4uLk9iamVjdC5lbnRyaWVzKHByb3BzKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiBPYmplY3QuYXNzaWduKGFjYywgeyBba2V5XTogKDAsIGltcG9ydF92dWUyMi51bnJlZikodmFsdWUpIH0pLCB7fSksXG4gICAgICAgIGlkOiBpZDJcbiAgICAgIH07XG4gICAgICBpZiAocGFzc2l2ZSkge1xuICAgICAgICBkZWxldGUgb3VyUHJvcHNbXCJvbkNsaWNrXCJdO1xuICAgICAgICBkZWxldGUgdGhlaXJQcm9wc1tcIm9uQ2xpY2tcIl07XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZVxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIHNyYy9jb21wb25lbnRzL3JhZGlvLWdyb3VwL3JhZGlvLWdyb3VwLnRzXG52YXIgUmFkaW9Hcm91cENvbnRleHQgPSBTeW1ib2woXCJSYWRpb0dyb3VwQ29udGV4dFwiKTtcbmZ1bmN0aW9uIHVzZVJhZGlvR3JvdXBDb250ZXh0KGNvbXBvbmVudCkge1xuICBsZXQgY29udGV4dCA9ICgwLCBpbXBvcnRfdnVlMjMuaW5qZWN0KShSYWRpb0dyb3VwQ29udGV4dCwgbnVsbCk7XG4gIGlmIChjb250ZXh0ID09PSBudWxsKSB7XG4gICAgbGV0IGVyciA9IG5ldyBFcnJvcihgPCR7Y29tcG9uZW50fSAvPiBpcyBtaXNzaW5nIGEgcGFyZW50IDxSYWRpb0dyb3VwIC8+IGNvbXBvbmVudC5gKTtcbiAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpXG4gICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnIsIHVzZVJhZGlvR3JvdXBDb250ZXh0KTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG52YXIgUmFkaW9Hcm91cCA9ICgwLCBpbXBvcnRfdnVlMjMuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiUmFkaW9Hcm91cFwiLFxuICBlbWl0czogeyBcInVwZGF0ZTptb2RlbFZhbHVlXCI6IChfdmFsdWUpID0+IHRydWUgfSxcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH0sXG4gICAgZGlzYWJsZWQ6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIG1vZGVsVmFsdWU6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nLCBOdW1iZXIsIEJvb2xlYW5dIH0sXG4gICAgbmFtZTogeyB0eXBlOiBTdHJpbmcsIG9wdGlvbmFsOiB0cnVlIH1cbiAgfSxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgc2V0dXAocHJvcHMsIHsgZW1pdCwgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCByYWRpb0dyb3VwUmVmID0gKDAsIGltcG9ydF92dWUyMy5yZWYpKG51bGwpO1xuICAgIGxldCBvcHRpb25zID0gKDAsIGltcG9ydF92dWUyMy5yZWYpKFtdKTtcbiAgICBsZXQgbGFiZWxsZWRieSA9IHVzZUxhYmVscyh7IG5hbWU6IFwiUmFkaW9Hcm91cExhYmVsXCIgfSk7XG4gICAgbGV0IGRlc2NyaWJlZGJ5ID0gdXNlRGVzY3JpcHRpb25zKHsgbmFtZTogXCJSYWRpb0dyb3VwRGVzY3JpcHRpb25cIiB9KTtcbiAgICBleHBvc2UoeyBlbDogcmFkaW9Hcm91cFJlZiwgJGVsOiByYWRpb0dyb3VwUmVmIH0pO1xuICAgIGxldCB2YWx1ZSA9ICgwLCBpbXBvcnRfdnVlMjMuY29tcHV0ZWQpKCgpID0+IHByb3BzLm1vZGVsVmFsdWUpO1xuICAgIGxldCBhcGkgPSB7XG4gICAgICBvcHRpb25zLFxuICAgICAgdmFsdWUsXG4gICAgICBkaXNhYmxlZDogKDAsIGltcG9ydF92dWUyMy5jb21wdXRlZCkoKCkgPT4gcHJvcHMuZGlzYWJsZWQpLFxuICAgICAgZmlyc3RPcHRpb246ICgwLCBpbXBvcnRfdnVlMjMuY29tcHV0ZWQpKCgpID0+IG9wdGlvbnMudmFsdWUuZmluZCgob3B0aW9uKSA9PiB7XG4gICAgICAgIGlmIChvcHRpb24ucHJvcHNSZWYuZGlzYWJsZWQpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pKSxcbiAgICAgIGNvbnRhaW5zQ2hlY2tlZE9wdGlvbjogKDAsIGltcG9ydF92dWUyMy5jb21wdXRlZCkoKCkgPT4gb3B0aW9ucy52YWx1ZS5zb21lKChvcHRpb24pID0+IGFwaS5jb21wYXJlKCgwLCBpbXBvcnRfdnVlMjMudG9SYXcpKG9wdGlvbi5wcm9wc1JlZi52YWx1ZSksICgwLCBpbXBvcnRfdnVlMjMudG9SYXcpKHByb3BzLm1vZGVsVmFsdWUpKSkpLFxuICAgICAgY29tcGFyZShhLCB6KSB7XG4gICAgICAgIHJldHVybiBhID09PSB6O1xuICAgICAgfSxcbiAgICAgIGNoYW5nZShuZXh0VmFsdWUpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoYXBpLmNvbXBhcmUoKDAsIGltcG9ydF92dWUyMy50b1JhdykodmFsdWUudmFsdWUpLCAoMCwgaW1wb3J0X3Z1ZTIzLnRvUmF3KShuZXh0VmFsdWUpKSlcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGxldCBuZXh0T3B0aW9uID0gKF9hID0gb3B0aW9ucy52YWx1ZS5maW5kKChvcHRpb24pID0+IGFwaS5jb21wYXJlKCgwLCBpbXBvcnRfdnVlMjMudG9SYXcpKG9wdGlvbi5wcm9wc1JlZi52YWx1ZSksICgwLCBpbXBvcnRfdnVlMjMudG9SYXcpKG5leHRWYWx1ZSkpKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnByb3BzUmVmO1xuICAgICAgICBpZiAobmV4dE9wdGlvbiA9PSBudWxsID8gdm9pZCAwIDogbmV4dE9wdGlvbi5kaXNhYmxlZClcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGVtaXQoXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCBuZXh0VmFsdWUpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICByZWdpc3Rlck9wdGlvbihhY3Rpb24pIHtcbiAgICAgICAgb3B0aW9ucy52YWx1ZS5wdXNoKGFjdGlvbik7XG4gICAgICAgIG9wdGlvbnMudmFsdWUgPSBzb3J0QnlEb21Ob2RlKG9wdGlvbnMudmFsdWUsIChvcHRpb24pID0+IG9wdGlvbi5lbGVtZW50KTtcbiAgICAgIH0sXG4gICAgICB1bnJlZ2lzdGVyT3B0aW9uKGlkMykge1xuICAgICAgICBsZXQgaWR4ID0gb3B0aW9ucy52YWx1ZS5maW5kSW5kZXgoKHJhZGlvKSA9PiByYWRpby5pZCA9PT0gaWQzKTtcbiAgICAgICAgaWYgKGlkeCA9PT0gLTEpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBvcHRpb25zLnZhbHVlLnNwbGljZShpZHgsIDEpO1xuICAgICAgfVxuICAgIH07XG4gICAgKDAsIGltcG9ydF92dWUyMy5wcm92aWRlKShSYWRpb0dyb3VwQ29udGV4dCwgYXBpKTtcbiAgICB1c2VUcmVlV2Fsa2VyKHtcbiAgICAgIGNvbnRhaW5lcjogKDAsIGltcG9ydF92dWUyMy5jb21wdXRlZCkoKCkgPT4gZG9tKHJhZGlvR3JvdXBSZWYpKSxcbiAgICAgIGFjY2VwdChub2RlKSB7XG4gICAgICAgIGlmIChub2RlLmdldEF0dHJpYnV0ZShcInJvbGVcIikgPT09IFwicmFkaW9cIilcbiAgICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfUkVKRUNUO1xuICAgICAgICBpZiAobm9kZS5oYXNBdHRyaWJ1dGUoXCJyb2xlXCIpKVxuICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9TS0lQO1xuICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfQUNDRVBUO1xuICAgICAgfSxcbiAgICAgIHdhbGsobm9kZSkge1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcInJvbGVcIiwgXCJub25lXCIpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUtleURvd24oZXZlbnQpIHtcbiAgICAgIGlmICghcmFkaW9Hcm91cFJlZi52YWx1ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKCFyYWRpb0dyb3VwUmVmLnZhbHVlLmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGxldCBhbGwgPSBvcHRpb25zLnZhbHVlLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24ucHJvcHNSZWYuZGlzYWJsZWQgPT09IGZhbHNlKS5tYXAoKHJhZGlvKSA9PiByYWRpby5lbGVtZW50KTtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgXCJFbnRlclwiIC8qIEVudGVyICovOlxuICAgICAgICAgIGF0dGVtcHRTdWJtaXQoZXZlbnQuY3VycmVudFRhcmdldCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJBcnJvd0xlZnRcIiAvKiBBcnJvd0xlZnQgKi86XG4gICAgICAgIGNhc2UgXCJBcnJvd1VwXCIgLyogQXJyb3dVcCAqLzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gZm9jdXNJbihhbGwsIDIgLyogUHJldmlvdXMgKi8gfCAxNiAvKiBXcmFwQXJvdW5kICovKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IDIgLyogU3VjY2VzcyAqLykge1xuICAgICAgICAgICAgICBsZXQgYWN0aXZlT3B0aW9uID0gb3B0aW9ucy52YWx1ZS5maW5kKChvcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi5lbGVtZW50ID09PSAoKF9hID0gZ2V0T3duZXJEb2N1bWVudChyYWRpb0dyb3VwUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmFjdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgaWYgKGFjdGl2ZU9wdGlvbilcbiAgICAgICAgICAgICAgICBhcGkuY2hhbmdlKGFjdGl2ZU9wdGlvbi5wcm9wc1JlZi52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiQXJyb3dSaWdodFwiIC8qIEFycm93UmlnaHQgKi86XG4gICAgICAgIGNhc2UgXCJBcnJvd0Rvd25cIiAvKiBBcnJvd0Rvd24gKi86XG4gICAgICAgICAge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGZvY3VzSW4oYWxsLCA0IC8qIE5leHQgKi8gfCAxNiAvKiBXcmFwQXJvdW5kICovKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IDIgLyogU3VjY2VzcyAqLykge1xuICAgICAgICAgICAgICBsZXQgYWN0aXZlT3B0aW9uID0gb3B0aW9ucy52YWx1ZS5maW5kKChvcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi5lbGVtZW50ID09PSAoKF9hID0gZ2V0T3duZXJEb2N1bWVudChvcHRpb24uZWxlbWVudCkpID09IG51bGwgPyB2b2lkIDAgOiBfYS5hY3RpdmVFbGVtZW50KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGlmIChhY3RpdmVPcHRpb24pXG4gICAgICAgICAgICAgICAgYXBpLmNoYW5nZShhY3RpdmVPcHRpb24ucHJvcHNSZWYudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIiBcIiAvKiBTcGFjZSAqLzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBsZXQgYWN0aXZlT3B0aW9uID0gb3B0aW9ucy52YWx1ZS5maW5kKChvcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLmVsZW1lbnQgPT09ICgoX2EgPSBnZXRPd25lckRvY3VtZW50KG9wdGlvbi5lbGVtZW50KSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmFjdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoYWN0aXZlT3B0aW9uKVxuICAgICAgICAgICAgICBhcGkuY2hhbmdlKGFjdGl2ZU9wdGlvbi5wcm9wc1JlZi52YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktcmFkaW9ncm91cC0ke3VzZUlkKCl9YDtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHsgbW9kZWxWYWx1ZSwgZGlzYWJsZWQsIG5hbWUsIC4uLnRoZWlyUHJvcHMgfSA9IHByb3BzO1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICByZWY6IHJhZGlvR3JvdXBSZWYsXG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIHJvbGU6IFwicmFkaW9ncm91cFwiLFxuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBsYWJlbGxlZGJ5LnZhbHVlLFxuICAgICAgICBcImFyaWEtZGVzY3JpYmVkYnlcIjogZGVzY3JpYmVkYnkudmFsdWUsXG4gICAgICAgIG9uS2V5ZG93bjogaGFuZGxlS2V5RG93blxuICAgICAgfTtcbiAgICAgIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTIzLmgpKGltcG9ydF92dWUyMy5GcmFnbWVudCwgW1xuICAgICAgICAuLi5uYW1lICE9IG51bGwgJiYgbW9kZWxWYWx1ZSAhPSBudWxsID8gb2JqZWN0VG9Gb3JtRW50cmllcyh7IFtuYW1lXTogbW9kZWxWYWx1ZSB9KS5tYXAoKFtuYW1lMiwgdmFsdWUyXSkgPT4gKDAsIGltcG9ydF92dWUyMy5oKShIaWRkZW4sIGNvbXBhY3Qoe1xuICAgICAgICAgIGZlYXR1cmVzOiA0IC8qIEhpZGRlbiAqLyxcbiAgICAgICAgICBrZXk6IG5hbWUyLFxuICAgICAgICAgIGFzOiBcImlucHV0XCIsXG4gICAgICAgICAgdHlwZTogXCJoaWRkZW5cIixcbiAgICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgICAgcmVhZE9ubHk6IHRydWUsXG4gICAgICAgICAgbmFtZTogbmFtZTIsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlMlxuICAgICAgICB9KSkpIDogW10sXG4gICAgICAgIHJlbmRlcih7XG4gICAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgICAgdGhlaXJQcm9wczogeyAuLi5hdHRycywgLi4udGhlaXJQcm9wcyB9LFxuICAgICAgICAgIHNsb3Q6IHt9LFxuICAgICAgICAgIGF0dHJzLFxuICAgICAgICAgIHNsb3RzLFxuICAgICAgICAgIG5hbWU6IFwiUmFkaW9Hcm91cFwiXG4gICAgICAgIH0pXG4gICAgICBdKTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBSYWRpb0dyb3VwT3B0aW9uID0gKDAsIGltcG9ydF92dWUyMy5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJSYWRpb0dyb3VwT3B0aW9uXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9LFxuICAgIHZhbHVlOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZywgTnVtYmVyLCBCb29sZWFuXSB9LFxuICAgIGRpc2FibGVkOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSB1c2VSYWRpb0dyb3VwQ29udGV4dChcIlJhZGlvR3JvdXBPcHRpb25cIik7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLXJhZGlvZ3JvdXAtb3B0aW9uLSR7dXNlSWQoKX1gO1xuICAgIGxldCBsYWJlbGxlZGJ5ID0gdXNlTGFiZWxzKHsgbmFtZTogXCJSYWRpb0dyb3VwTGFiZWxcIiB9KTtcbiAgICBsZXQgZGVzY3JpYmVkYnkgPSB1c2VEZXNjcmlwdGlvbnMoeyBuYW1lOiBcIlJhZGlvR3JvdXBEZXNjcmlwdGlvblwiIH0pO1xuICAgIGxldCBvcHRpb25SZWYgPSAoMCwgaW1wb3J0X3Z1ZTIzLnJlZikobnVsbCk7XG4gICAgbGV0IHByb3BzUmVmID0gKDAsIGltcG9ydF92dWUyMy5jb21wdXRlZCkoKCkgPT4gKHsgdmFsdWU6IHByb3BzLnZhbHVlLCBkaXNhYmxlZDogcHJvcHMuZGlzYWJsZWQgfSkpO1xuICAgIGxldCBzdGF0ZSA9ICgwLCBpbXBvcnRfdnVlMjMucmVmKSgxIC8qIEVtcHR5ICovKTtcbiAgICBleHBvc2UoeyBlbDogb3B0aW9uUmVmLCAkZWw6IG9wdGlvblJlZiB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTIzLm9uTW91bnRlZCkoKCkgPT4gYXBpLnJlZ2lzdGVyT3B0aW9uKHsgaWQ6IGlkMiwgZWxlbWVudDogb3B0aW9uUmVmLCBwcm9wc1JlZiB9KSk7XG4gICAgKDAsIGltcG9ydF92dWUyMy5vblVubW91bnRlZCkoKCkgPT4gYXBpLnVucmVnaXN0ZXJPcHRpb24oaWQyKSk7XG4gICAgbGV0IGlzRmlyc3RPcHRpb24gPSAoMCwgaW1wb3J0X3Z1ZTIzLmNvbXB1dGVkKSgoKSA9PiB7XG4gICAgICB2YXIgX2E7XG4gICAgICByZXR1cm4gKChfYSA9IGFwaS5maXJzdE9wdGlvbi52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmlkKSA9PT0gaWQyO1xuICAgIH0pO1xuICAgIGxldCBkaXNhYmxlZCA9ICgwLCBpbXBvcnRfdnVlMjMuY29tcHV0ZWQpKCgpID0+IGFwaS5kaXNhYmxlZC52YWx1ZSB8fCBwcm9wcy5kaXNhYmxlZCk7XG4gICAgbGV0IGNoZWNrZWQgPSAoMCwgaW1wb3J0X3Z1ZTIzLmNvbXB1dGVkKSgoKSA9PiBhcGkuY29tcGFyZSgoMCwgaW1wb3J0X3Z1ZTIzLnRvUmF3KShhcGkudmFsdWUudmFsdWUpLCAoMCwgaW1wb3J0X3Z1ZTIzLnRvUmF3KShwcm9wcy52YWx1ZSkpKTtcbiAgICBsZXQgdGFiSW5kZXggPSAoMCwgaW1wb3J0X3Z1ZTIzLmNvbXB1dGVkKSgoKSA9PiB7XG4gICAgICBpZiAoZGlzYWJsZWQudmFsdWUpXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmIChjaGVja2VkLnZhbHVlKVxuICAgICAgICByZXR1cm4gMDtcbiAgICAgIGlmICghYXBpLmNvbnRhaW5zQ2hlY2tlZE9wdGlvbi52YWx1ZSAmJiBpc0ZpcnN0T3B0aW9uLnZhbHVlKVxuICAgICAgICByZXR1cm4gMDtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljaygpIHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGlmICghYXBpLmNoYW5nZShwcm9wcy52YWx1ZSkpXG4gICAgICAgIHJldHVybjtcbiAgICAgIHN0YXRlLnZhbHVlIHw9IDIgLyogQWN0aXZlICovO1xuICAgICAgKF9hID0gb3B0aW9uUmVmLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlRm9jdXMoKSB7XG4gICAgICBzdGF0ZS52YWx1ZSB8PSAyIC8qIEFjdGl2ZSAqLztcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlQmx1cigpIHtcbiAgICAgIHN0YXRlLnZhbHVlICY9IH4yIC8qIEFjdGl2ZSAqLztcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB0aGVpclByb3BzID0gb21pdChwcm9wcywgW1widmFsdWVcIiwgXCJkaXNhYmxlZFwiXSk7XG4gICAgICBsZXQgc2xvdCA9IHtcbiAgICAgICAgY2hlY2tlZDogY2hlY2tlZC52YWx1ZSxcbiAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLnZhbHVlLFxuICAgICAgICBhY3RpdmU6IEJvb2xlYW4oc3RhdGUudmFsdWUgJiAyIC8qIEFjdGl2ZSAqLylcbiAgICAgIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIHJlZjogb3B0aW9uUmVmLFxuICAgICAgICByb2xlOiBcInJhZGlvXCIsXG4gICAgICAgIFwiYXJpYS1jaGVja2VkXCI6IGNoZWNrZWQudmFsdWUgPyBcInRydWVcIiA6IFwiZmFsc2VcIixcbiAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogbGFiZWxsZWRieS52YWx1ZSxcbiAgICAgICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGRlc2NyaWJlZGJ5LnZhbHVlLFxuICAgICAgICBcImFyaWEtZGlzYWJsZWRcIjogZGlzYWJsZWQudmFsdWUgPyB0cnVlIDogdm9pZCAwLFxuICAgICAgICB0YWJJbmRleDogdGFiSW5kZXgudmFsdWUsXG4gICAgICAgIG9uQ2xpY2s6IGRpc2FibGVkLnZhbHVlID8gdm9pZCAwIDogaGFuZGxlQ2xpY2ssXG4gICAgICAgIG9uRm9jdXM6IGRpc2FibGVkLnZhbHVlID8gdm9pZCAwIDogaGFuZGxlRm9jdXMsXG4gICAgICAgIG9uQmx1cjogZGlzYWJsZWQudmFsdWUgPyB2b2lkIDAgOiBoYW5kbGVCbHVyXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBzbG90LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiUmFkaW9Hcm91cE9wdGlvblwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBSYWRpb0dyb3VwTGFiZWwgPSBMYWJlbDtcbnZhciBSYWRpb0dyb3VwRGVzY3JpcHRpb24gPSBEZXNjcmlwdGlvbjtcblxuLy8gc3JjL2NvbXBvbmVudHMvc3dpdGNoL3N3aXRjaC50c1xudmFyIGltcG9ydF92dWUyNCA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgR3JvdXBDb250ZXh0ID0gU3ltYm9sKFwiR3JvdXBDb250ZXh0XCIpO1xudmFyIFN3aXRjaEdyb3VwID0gKDAsIGltcG9ydF92dWUyNC5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJTd2l0Y2hHcm91cFwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwidGVtcGxhdGVcIiB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IHNsb3RzLCBhdHRycyB9KSB7XG4gICAgbGV0IHN3aXRjaFJlZiA9ICgwLCBpbXBvcnRfdnVlMjQucmVmKShudWxsKTtcbiAgICBsZXQgbGFiZWxsZWRieSA9IHVzZUxhYmVscyh7XG4gICAgICBuYW1lOiBcIlN3aXRjaExhYmVsXCIsXG4gICAgICBwcm9wczoge1xuICAgICAgICBvbkNsaWNrKCkge1xuICAgICAgICAgIGlmICghc3dpdGNoUmVmLnZhbHVlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIHN3aXRjaFJlZi52YWx1ZS5jbGljaygpO1xuICAgICAgICAgIHN3aXRjaFJlZi52YWx1ZS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBsZXQgZGVzY3JpYmVkYnkgPSB1c2VEZXNjcmlwdGlvbnMoeyBuYW1lOiBcIlN3aXRjaERlc2NyaXB0aW9uXCIgfSk7XG4gICAgbGV0IGFwaSA9IHsgc3dpdGNoUmVmLCBsYWJlbGxlZGJ5LCBkZXNjcmliZWRieSB9O1xuICAgICgwLCBpbXBvcnRfdnVlMjQucHJvdmlkZSkoR3JvdXBDb250ZXh0LCBhcGkpO1xuICAgIHJldHVybiAoKSA9PiByZW5kZXIoeyB0aGVpclByb3BzOiBwcm9wcywgb3VyUHJvcHM6IHt9LCBzbG90OiB7fSwgc2xvdHMsIGF0dHJzLCBuYW1lOiBcIlN3aXRjaEdyb3VwXCIgfSk7XG4gIH1cbn0pO1xudmFyIFN3aXRjaCA9ICgwLCBpbXBvcnRfdnVlMjQuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiU3dpdGNoXCIsXG4gIGVtaXRzOiB7IFwidXBkYXRlOm1vZGVsVmFsdWVcIjogKF92YWx1ZSkgPT4gdHJ1ZSB9LFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiYnV0dG9uXCIgfSxcbiAgICBtb2RlbFZhbHVlOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgbmFtZTogeyB0eXBlOiBTdHJpbmcsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgdmFsdWU6IHsgdHlwZTogU3RyaW5nLCBvcHRpb25hbDogdHJ1ZSB9XG4gIH0sXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHNldHVwKHByb3BzLCB7IGVtaXQsIGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gKDAsIGltcG9ydF92dWUyNC5pbmplY3QpKEdyb3VwQ29udGV4dCwgbnVsbCk7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLXN3aXRjaC0ke3VzZUlkKCl9YDtcbiAgICBmdW5jdGlvbiB0b2dnbGUoKSB7XG4gICAgICBlbWl0KFwidXBkYXRlOm1vZGVsVmFsdWVcIiwgIXByb3BzLm1vZGVsVmFsdWUpO1xuICAgIH1cbiAgICBsZXQgaW50ZXJuYWxTd2l0Y2hSZWYgPSAoMCwgaW1wb3J0X3Z1ZTI0LnJlZikobnVsbCk7XG4gICAgbGV0IHN3aXRjaFJlZiA9IGFwaSA9PT0gbnVsbCA/IGludGVybmFsU3dpdGNoUmVmIDogYXBpLnN3aXRjaFJlZjtcbiAgICBsZXQgdHlwZSA9IHVzZVJlc29sdmVCdXR0b25UeXBlKCgwLCBpbXBvcnRfdnVlMjQuY29tcHV0ZWQpKCgpID0+ICh7IGFzOiBwcm9wcy5hcywgdHlwZTogYXR0cnMudHlwZSB9KSksIHN3aXRjaFJlZik7XG4gICAgZXhwb3NlKHsgZWw6IHN3aXRjaFJlZiwgJGVsOiBzd2l0Y2hSZWYgfSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0b2dnbGUoKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5VXAoZXZlbnQpIHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09IFwiIFwiIC8qIFNwYWNlICovKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRvZ2dsZSgpO1xuICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09IFwiRW50ZXJcIiAvKiBFbnRlciAqLykge1xuICAgICAgICBhdHRlbXB0U3VibWl0KGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVLZXlQcmVzcyhldmVudCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB7IG5hbWUsIHZhbHVlLCBtb2RlbFZhbHVlLCAuLi50aGVpclByb3BzIH0gPSBwcm9wcztcbiAgICAgIGxldCBzbG90ID0geyBjaGVja2VkOiBtb2RlbFZhbHVlIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIHJlZjogc3dpdGNoUmVmLFxuICAgICAgICByb2xlOiBcInN3aXRjaFwiLFxuICAgICAgICB0eXBlOiB0eXBlLnZhbHVlLFxuICAgICAgICB0YWJJbmRleDogMCxcbiAgICAgICAgXCJhcmlhLWNoZWNrZWRcIjogbW9kZWxWYWx1ZSxcbiAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogYXBpID09IG51bGwgPyB2b2lkIDAgOiBhcGkubGFiZWxsZWRieS52YWx1ZSxcbiAgICAgICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGFwaSA9PSBudWxsID8gdm9pZCAwIDogYXBpLmRlc2NyaWJlZGJ5LnZhbHVlLFxuICAgICAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICAgICAgb25LZXl1cDogaGFuZGxlS2V5VXAsXG4gICAgICAgIG9uS2V5cHJlc3M6IGhhbmRsZUtleVByZXNzXG4gICAgICB9O1xuICAgICAgcmV0dXJuICgwLCBpbXBvcnRfdnVlMjQuaCkoaW1wb3J0X3Z1ZTI0LkZyYWdtZW50LCBbXG4gICAgICAgIG5hbWUgIT0gbnVsbCAmJiBtb2RlbFZhbHVlICE9IG51bGwgPyAoMCwgaW1wb3J0X3Z1ZTI0LmgpKEhpZGRlbiwgY29tcGFjdCh7XG4gICAgICAgICAgZmVhdHVyZXM6IDQgLyogSGlkZGVuICovLFxuICAgICAgICAgIGFzOiBcImlucHV0XCIsXG4gICAgICAgICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgICByZWFkT25seTogdHJ1ZSxcbiAgICAgICAgICBjaGVja2VkOiBtb2RlbFZhbHVlLFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgdmFsdWVcbiAgICAgICAgfSkpIDogbnVsbCxcbiAgICAgICAgcmVuZGVyKHtcbiAgICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgICB0aGVpclByb3BzOiB7IC4uLmF0dHJzLCAuLi50aGVpclByb3BzIH0sXG4gICAgICAgICAgc2xvdCxcbiAgICAgICAgICBhdHRycyxcbiAgICAgICAgICBzbG90cyxcbiAgICAgICAgICBuYW1lOiBcIlN3aXRjaFwiXG4gICAgICAgIH0pXG4gICAgICBdKTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBTd2l0Y2hMYWJlbCA9IExhYmVsO1xudmFyIFN3aXRjaERlc2NyaXB0aW9uID0gRGVzY3JpcHRpb247XG5cbi8vIHNyYy9jb21wb25lbnRzL3RhYnMvdGFicy50c1xudmFyIGltcG9ydF92dWUyNiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5cbi8vIHNyYy9pbnRlcm5hbC9mb2N1cy1zZW50aW5lbC50c1xudmFyIGltcG9ydF92dWUyNSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgRm9jdXNTZW50aW5lbCA9ICgwLCBpbXBvcnRfdnVlMjUuZGVmaW5lQ29tcG9uZW50KSh7XG4gIHByb3BzOiB7XG4gICAgb25Gb2N1czoge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMpIHtcbiAgICBsZXQgZW5hYmxlZCA9ICgwLCBpbXBvcnRfdnVlMjUucmVmKSh0cnVlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKCFlbmFibGVkLnZhbHVlKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTI1LmgpKEhpZGRlbiwge1xuICAgICAgICBhczogXCJidXR0b25cIixcbiAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgZmVhdHVyZXM6IDIgLyogRm9jdXNhYmxlICovLFxuICAgICAgICBvbkZvY3VzKGV2ZW50KSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBsZXQgZnJhbWU7XG4gICAgICAgICAgbGV0IHRyaWVzID0gNTA7XG4gICAgICAgICAgZnVuY3Rpb24gZm9yd2FyZEZvY3VzKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgaWYgKHRyaWVzLS0gPD0gMCkge1xuICAgICAgICAgICAgICBpZiAoZnJhbWUpXG4gICAgICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoZnJhbWUpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKF9hID0gcHJvcHMub25Gb2N1cykgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNhbGwocHJvcHMpKSB7XG4gICAgICAgICAgICAgIGVuYWJsZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoZnJhbWUpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShmb3J3YXJkRm9jdXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShmb3J3YXJkRm9jdXMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gc3JjL2NvbXBvbmVudHMvdGFicy90YWJzLnRzXG52YXIgVGFic0NvbnRleHQgPSBTeW1ib2woXCJUYWJzQ29udGV4dFwiKTtcbmZ1bmN0aW9uIHVzZVRhYnNDb250ZXh0KGNvbXBvbmVudCkge1xuICBsZXQgY29udGV4dCA9ICgwLCBpbXBvcnRfdnVlMjYuaW5qZWN0KShUYWJzQ29udGV4dCwgbnVsbCk7XG4gIGlmIChjb250ZXh0ID09PSBudWxsKSB7XG4gICAgbGV0IGVyciA9IG5ldyBFcnJvcihgPCR7Y29tcG9uZW50fSAvPiBpcyBtaXNzaW5nIGEgcGFyZW50IDxUYWJHcm91cCAvPiBjb21wb25lbnQuYCk7XG4gICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKVxuICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyLCB1c2VUYWJzQ29udGV4dCk7XG4gICAgdGhyb3cgZXJyO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxudmFyIFRhYkdyb3VwID0gKDAsIGltcG9ydF92dWUyNi5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJUYWJHcm91cFwiLFxuICBlbWl0czoge1xuICAgIGNoYW5nZTogKF9pbmRleCkgPT4gdHJ1ZVxuICB9LFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwidGVtcGxhdGVcIiB9LFxuICAgIHNlbGVjdGVkSW5kZXg6IHsgdHlwZTogW051bWJlcl0sIGRlZmF1bHQ6IG51bGwgfSxcbiAgICBkZWZhdWx0SW5kZXg6IHsgdHlwZTogW051bWJlcl0sIGRlZmF1bHQ6IDAgfSxcbiAgICB2ZXJ0aWNhbDogeyB0eXBlOiBbQm9vbGVhbl0sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgbWFudWFsOiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogZmFsc2UgfVxuICB9LFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBzZXR1cChwcm9wcywgeyBzbG90cywgYXR0cnMsIGVtaXQgfSkge1xuICAgIGxldCBzZWxlY3RlZEluZGV4ID0gKDAsIGltcG9ydF92dWUyNi5yZWYpKG51bGwpO1xuICAgIGxldCB0YWJzID0gKDAsIGltcG9ydF92dWUyNi5yZWYpKFtdKTtcbiAgICBsZXQgcGFuZWxzID0gKDAsIGltcG9ydF92dWUyNi5yZWYpKFtdKTtcbiAgICBsZXQgYXBpID0ge1xuICAgICAgc2VsZWN0ZWRJbmRleCxcbiAgICAgIG9yaWVudGF0aW9uOiAoMCwgaW1wb3J0X3Z1ZTI2LmNvbXB1dGVkKSgoKSA9PiBwcm9wcy52ZXJ0aWNhbCA/IFwidmVydGljYWxcIiA6IFwiaG9yaXpvbnRhbFwiKSxcbiAgICAgIGFjdGl2YXRpb246ICgwLCBpbXBvcnRfdnVlMjYuY29tcHV0ZWQpKCgpID0+IHByb3BzLm1hbnVhbCA/IFwibWFudWFsXCIgOiBcImF1dG9cIiksXG4gICAgICB0YWJzLFxuICAgICAgcGFuZWxzLFxuICAgICAgc2V0U2VsZWN0ZWRJbmRleChpbmRleCkge1xuICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleC52YWx1ZSA9PT0gaW5kZXgpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzZWxlY3RlZEluZGV4LnZhbHVlID0gaW5kZXg7XG4gICAgICAgIGVtaXQoXCJjaGFuZ2VcIiwgaW5kZXgpO1xuICAgICAgfSxcbiAgICAgIHJlZ2lzdGVyVGFiKHRhYikge1xuICAgICAgICBpZiAoIXRhYnMudmFsdWUuaW5jbHVkZXModGFiKSlcbiAgICAgICAgICB0YWJzLnZhbHVlLnB1c2godGFiKTtcbiAgICAgIH0sXG4gICAgICB1bnJlZ2lzdGVyVGFiKHRhYikge1xuICAgICAgICBsZXQgaWR4ID0gdGFicy52YWx1ZS5pbmRleE9mKHRhYik7XG4gICAgICAgIGlmIChpZHggIT09IC0xKVxuICAgICAgICAgIHRhYnMudmFsdWUuc3BsaWNlKGlkeCwgMSk7XG4gICAgICB9LFxuICAgICAgcmVnaXN0ZXJQYW5lbChwYW5lbCkge1xuICAgICAgICBpZiAoIXBhbmVscy52YWx1ZS5pbmNsdWRlcyhwYW5lbCkpXG4gICAgICAgICAgcGFuZWxzLnZhbHVlLnB1c2gocGFuZWwpO1xuICAgICAgfSxcbiAgICAgIHVucmVnaXN0ZXJQYW5lbChwYW5lbCkge1xuICAgICAgICBsZXQgaWR4ID0gcGFuZWxzLnZhbHVlLmluZGV4T2YocGFuZWwpO1xuICAgICAgICBpZiAoaWR4ICE9PSAtMSlcbiAgICAgICAgICBwYW5lbHMudmFsdWUuc3BsaWNlKGlkeCwgMSk7XG4gICAgICB9XG4gICAgfTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTI2LnByb3ZpZGUpKFRhYnNDb250ZXh0LCBhcGkpO1xuICAgICgwLCBpbXBvcnRfdnVlMjYud2F0Y2hFZmZlY3QpKCgpID0+IHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGlmIChhcGkudGFicy52YWx1ZS5sZW5ndGggPD0gMClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKHByb3BzLnNlbGVjdGVkSW5kZXggPT09IG51bGwgJiYgc2VsZWN0ZWRJbmRleC52YWx1ZSAhPT0gbnVsbClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgbGV0IHRhYnMyID0gYXBpLnRhYnMudmFsdWUubWFwKCh0YWIpID0+IGRvbSh0YWIpKS5maWx0ZXIoQm9vbGVhbik7XG4gICAgICBsZXQgZm9jdXNhYmxlVGFicyA9IHRhYnMyLmZpbHRlcigodGFiKSA9PiAhdGFiLmhhc0F0dHJpYnV0ZShcImRpc2FibGVkXCIpKTtcbiAgICAgIGxldCBpbmRleFRvU2V0ID0gKF9hID0gcHJvcHMuc2VsZWN0ZWRJbmRleCkgIT0gbnVsbCA/IF9hIDogcHJvcHMuZGVmYXVsdEluZGV4O1xuICAgICAgaWYgKGluZGV4VG9TZXQgPCAwKSB7XG4gICAgICAgIHNlbGVjdGVkSW5kZXgudmFsdWUgPSB0YWJzMi5pbmRleE9mKGZvY3VzYWJsZVRhYnNbMF0pO1xuICAgICAgfSBlbHNlIGlmIChpbmRleFRvU2V0ID4gYXBpLnRhYnMudmFsdWUubGVuZ3RoKSB7XG4gICAgICAgIHNlbGVjdGVkSW5kZXgudmFsdWUgPSB0YWJzMi5pbmRleE9mKGZvY3VzYWJsZVRhYnNbZm9jdXNhYmxlVGFicy5sZW5ndGggLSAxXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgYmVmb3JlID0gdGFiczIuc2xpY2UoMCwgaW5kZXhUb1NldCk7XG4gICAgICAgIGxldCBhZnRlciA9IHRhYnMyLnNsaWNlKGluZGV4VG9TZXQpO1xuICAgICAgICBsZXQgbmV4dCA9IFsuLi5hZnRlciwgLi4uYmVmb3JlXS5maW5kKCh0YWIpID0+IGZvY3VzYWJsZVRhYnMuaW5jbHVkZXModGFiKSk7XG4gICAgICAgIGlmICghbmV4dClcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIHNlbGVjdGVkSW5kZXgudmFsdWUgPSB0YWJzMi5pbmRleE9mKG5leHQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgc2xvdCA9IHsgc2VsZWN0ZWRJbmRleDogc2VsZWN0ZWRJbmRleC52YWx1ZSB9O1xuICAgICAgcmV0dXJuICgwLCBpbXBvcnRfdnVlMjYuaCkoaW1wb3J0X3Z1ZTI2LkZyYWdtZW50LCBbXG4gICAgICAgIHRhYnMudmFsdWUubGVuZ3RoIDw9IDAgJiYgKDAsIGltcG9ydF92dWUyNi5oKShGb2N1c1NlbnRpbmVsLCB7XG4gICAgICAgICAgb25Gb2N1czogKCkgPT4ge1xuICAgICAgICAgICAgZm9yIChsZXQgdGFiIG9mIHRhYnMudmFsdWUpIHtcbiAgICAgICAgICAgICAgbGV0IGVsID0gZG9tKHRhYik7XG4gICAgICAgICAgICAgIGlmICgoZWwgPT0gbnVsbCA/IHZvaWQgMCA6IGVsLnRhYkluZGV4KSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGVsLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICByZW5kZXIoe1xuICAgICAgICAgIHRoZWlyUHJvcHM6IHtcbiAgICAgICAgICAgIC4uLmF0dHJzLFxuICAgICAgICAgICAgLi4ub21pdChwcm9wcywgW1wic2VsZWN0ZWRJbmRleFwiLCBcImRlZmF1bHRJbmRleFwiLCBcIm1hbnVhbFwiLCBcInZlcnRpY2FsXCIsIFwib25DaGFuZ2VcIl0pXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvdXJQcm9wczoge30sXG4gICAgICAgICAgc2xvdCxcbiAgICAgICAgICBzbG90cyxcbiAgICAgICAgICBhdHRycyxcbiAgICAgICAgICBuYW1lOiBcIlRhYkdyb3VwXCJcbiAgICAgICAgfSlcbiAgICAgIF0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIFRhYkxpc3QgPSAoMCwgaW1wb3J0X3Z1ZTI2LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIlRhYkxpc3RcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlVGFic0NvbnRleHQoXCJUYWJMaXN0XCIpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgc2xvdCA9IHsgc2VsZWN0ZWRJbmRleDogYXBpLnNlbGVjdGVkSW5kZXgudmFsdWUgfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgcm9sZTogXCJ0YWJsaXN0XCIsXG4gICAgICAgIFwiYXJpYS1vcmllbnRhdGlvblwiOiBhcGkub3JpZW50YXRpb24udmFsdWVcbiAgICAgIH07XG4gICAgICBsZXQgdGhlaXJQcm9wcyA9IHByb3BzO1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBzbG90LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiVGFiTGlzdFwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBUYWIgPSAoMCwgaW1wb3J0X3Z1ZTI2LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIlRhYlwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiYnV0dG9uXCIgfSxcbiAgICBkaXNhYmxlZDogeyB0eXBlOiBbQm9vbGVhbl0sIGRlZmF1bHQ6IGZhbHNlIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSB1c2VUYWJzQ29udGV4dChcIlRhYlwiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktdGFicy10YWItJHt1c2VJZCgpfWA7XG4gICAgbGV0IGludGVybmFsVGFiUmVmID0gKDAsIGltcG9ydF92dWUyNi5yZWYpKG51bGwpO1xuICAgIGV4cG9zZSh7IGVsOiBpbnRlcm5hbFRhYlJlZiwgJGVsOiBpbnRlcm5hbFRhYlJlZiB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTI2Lm9uTW91bnRlZCkoKCkgPT4gYXBpLnJlZ2lzdGVyVGFiKGludGVybmFsVGFiUmVmKSk7XG4gICAgKDAsIGltcG9ydF92dWUyNi5vblVubW91bnRlZCkoKCkgPT4gYXBpLnVucmVnaXN0ZXJUYWIoaW50ZXJuYWxUYWJSZWYpKTtcbiAgICBsZXQgbXlJbmRleCA9ICgwLCBpbXBvcnRfdnVlMjYuY29tcHV0ZWQpKCgpID0+IGFwaS50YWJzLnZhbHVlLmluZGV4T2YoaW50ZXJuYWxUYWJSZWYpKTtcbiAgICBsZXQgc2VsZWN0ZWQgPSAoMCwgaW1wb3J0X3Z1ZTI2LmNvbXB1dGVkKSgoKSA9PiBteUluZGV4LnZhbHVlID09PSBhcGkuc2VsZWN0ZWRJbmRleC52YWx1ZSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5RG93bihldmVudCkge1xuICAgICAgbGV0IGxpc3QgPSBhcGkudGFicy52YWx1ZS5tYXAoKHRhYikgPT4gZG9tKHRhYikpLmZpbHRlcihCb29sZWFuKTtcbiAgICAgIGlmIChldmVudC5rZXkgPT09IFwiIFwiIC8qIFNwYWNlICovIHx8IGV2ZW50LmtleSA9PT0gXCJFbnRlclwiIC8qIEVudGVyICovKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBhcGkuc2V0U2VsZWN0ZWRJbmRleChteUluZGV4LnZhbHVlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSBcIkhvbWVcIiAvKiBIb21lICovOlxuICAgICAgICBjYXNlIFwiUGFnZVVwXCIgLyogUGFnZVVwICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuIGZvY3VzSW4obGlzdCwgMSAvKiBGaXJzdCAqLyk7XG4gICAgICAgIGNhc2UgXCJFbmRcIiAvKiBFbmQgKi86XG4gICAgICAgIGNhc2UgXCJQYWdlRG93blwiIC8qIFBhZ2VEb3duICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuIGZvY3VzSW4obGlzdCwgOCAvKiBMYXN0ICovKTtcbiAgICAgIH1cbiAgICAgIGlmIChtYXRjaChhcGkub3JpZW50YXRpb24udmFsdWUsIHtcbiAgICAgICAgdmVydGljYWwoKSB7XG4gICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd1VwXCIgLyogQXJyb3dVcCAqLylcbiAgICAgICAgICAgIHJldHVybiBmb2N1c0luKGxpc3QsIDIgLyogUHJldmlvdXMgKi8gfCAxNiAvKiBXcmFwQXJvdW5kICovKTtcbiAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBcIkFycm93RG93blwiIC8qIEFycm93RG93biAqLylcbiAgICAgICAgICAgIHJldHVybiBmb2N1c0luKGxpc3QsIDQgLyogTmV4dCAqLyB8IDE2IC8qIFdyYXBBcm91bmQgKi8pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSxcbiAgICAgICAgaG9yaXpvbnRhbCgpIHtcbiAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBcIkFycm93TGVmdFwiIC8qIEFycm93TGVmdCAqLylcbiAgICAgICAgICAgIHJldHVybiBmb2N1c0luKGxpc3QsIDIgLyogUHJldmlvdXMgKi8gfCAxNiAvKiBXcmFwQXJvdW5kICovKTtcbiAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBcIkFycm93UmlnaHRcIiAvKiBBcnJvd1JpZ2h0ICovKVxuICAgICAgICAgICAgcmV0dXJuIGZvY3VzSW4obGlzdCwgNCAvKiBOZXh0ICovIHwgMTYgLyogV3JhcEFyb3VuZCAqLyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9KSkge1xuICAgICAgICByZXR1cm4gZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlRm9jdXMoKSB7XG4gICAgICB2YXIgX2E7XG4gICAgICAoX2EgPSBkb20oaW50ZXJuYWxUYWJSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlU2VsZWN0aW9uKCkge1xuICAgICAgdmFyIF9hO1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm47XG4gICAgICAoX2EgPSBkb20oaW50ZXJuYWxUYWJSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICAgIGFwaS5zZXRTZWxlY3RlZEluZGV4KG15SW5kZXgudmFsdWUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZURvd24oZXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGxldCB0eXBlID0gdXNlUmVzb2x2ZUJ1dHRvblR5cGUoKDAsIGltcG9ydF92dWUyNi5jb21wdXRlZCkoKCkgPT4gKHsgYXM6IHByb3BzLmFzLCB0eXBlOiBhdHRycy50eXBlIH0pKSwgaW50ZXJuYWxUYWJSZWYpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB2YXIgX2EsIF9iO1xuICAgICAgbGV0IHNsb3QgPSB7IHNlbGVjdGVkOiBzZWxlY3RlZC52YWx1ZSB9O1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICByZWY6IGludGVybmFsVGFiUmVmLFxuICAgICAgICBvbktleWRvd246IGhhbmRsZUtleURvd24sXG4gICAgICAgIG9uRm9jdXM6IGFwaS5hY3RpdmF0aW9uLnZhbHVlID09PSBcIm1hbnVhbFwiID8gaGFuZGxlRm9jdXMgOiBoYW5kbGVTZWxlY3Rpb24sXG4gICAgICAgIG9uTW91c2Vkb3duOiBoYW5kbGVNb3VzZURvd24sXG4gICAgICAgIG9uQ2xpY2s6IGhhbmRsZVNlbGVjdGlvbixcbiAgICAgICAgaWQ6IGlkMixcbiAgICAgICAgcm9sZTogXCJ0YWJcIixcbiAgICAgICAgdHlwZTogdHlwZS52YWx1ZSxcbiAgICAgICAgXCJhcmlhLWNvbnRyb2xzXCI6IChfYiA9IChfYSA9IGFwaS5wYW5lbHMudmFsdWVbbXlJbmRleC52YWx1ZV0pID09IG51bGwgPyB2b2lkIDAgOiBfYS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmlkLFxuICAgICAgICBcImFyaWEtc2VsZWN0ZWRcIjogc2VsZWN0ZWQudmFsdWUsXG4gICAgICAgIHRhYkluZGV4OiBzZWxlY3RlZC52YWx1ZSA/IDAgOiAtMSxcbiAgICAgICAgZGlzYWJsZWQ6IHByb3BzLmRpc2FibGVkID8gdHJ1ZSA6IHZvaWQgMFxuICAgICAgfTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wczogcHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJUYWJcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgVGFiUGFuZWxzID0gKDAsIGltcG9ydF92dWUyNi5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJUYWJQYW5lbHNcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgc2xvdHMsIGF0dHJzIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlVGFic0NvbnRleHQoXCJUYWJQYW5lbHNcIik7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBzbG90ID0geyBzZWxlY3RlZEluZGV4OiBhcGkuc2VsZWN0ZWRJbmRleC52YWx1ZSB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIHRoZWlyUHJvcHM6IHByb3BzLFxuICAgICAgICBvdXJQcm9wczoge30sXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJUYWJQYW5lbHNcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgVGFiUGFuZWwgPSAoMCwgaW1wb3J0X3Z1ZTI2LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIlRhYlBhbmVsXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9LFxuICAgIHN0YXRpYzogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIHVubW91bnQ6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogdHJ1ZSB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlVGFic0NvbnRleHQoXCJUYWJQYW5lbFwiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktdGFicy1wYW5lbC0ke3VzZUlkKCl9YDtcbiAgICBsZXQgaW50ZXJuYWxQYW5lbFJlZiA9ICgwLCBpbXBvcnRfdnVlMjYucmVmKShudWxsKTtcbiAgICBleHBvc2UoeyBlbDogaW50ZXJuYWxQYW5lbFJlZiwgJGVsOiBpbnRlcm5hbFBhbmVsUmVmIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMjYub25Nb3VudGVkKSgoKSA9PiBhcGkucmVnaXN0ZXJQYW5lbChpbnRlcm5hbFBhbmVsUmVmKSk7XG4gICAgKDAsIGltcG9ydF92dWUyNi5vblVubW91bnRlZCkoKCkgPT4gYXBpLnVucmVnaXN0ZXJQYW5lbChpbnRlcm5hbFBhbmVsUmVmKSk7XG4gICAgbGV0IG15SW5kZXggPSAoMCwgaW1wb3J0X3Z1ZTI2LmNvbXB1dGVkKSgoKSA9PiBhcGkucGFuZWxzLnZhbHVlLmluZGV4T2YoaW50ZXJuYWxQYW5lbFJlZikpO1xuICAgIGxldCBzZWxlY3RlZCA9ICgwLCBpbXBvcnRfdnVlMjYuY29tcHV0ZWQpKCgpID0+IG15SW5kZXgudmFsdWUgPT09IGFwaS5zZWxlY3RlZEluZGV4LnZhbHVlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdmFyIF9hLCBfYjtcbiAgICAgIGxldCBzbG90ID0geyBzZWxlY3RlZDogc2VsZWN0ZWQudmFsdWUgfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgcmVmOiBpbnRlcm5hbFBhbmVsUmVmLFxuICAgICAgICBpZDogaWQyLFxuICAgICAgICByb2xlOiBcInRhYnBhbmVsXCIsXG4gICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IChfYiA9IChfYSA9IGFwaS50YWJzLnZhbHVlW215SW5kZXgudmFsdWVdKSA9PSBudWxsID8gdm9pZCAwIDogX2EudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYi5pZCxcbiAgICAgICAgdGFiSW5kZXg6IHNlbGVjdGVkLnZhbHVlID8gMCA6IC0xXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzOiBwcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBmZWF0dXJlczogMiAvKiBTdGF0aWMgKi8gfCAxIC8qIFJlbmRlclN0cmF0ZWd5ICovLFxuICAgICAgICB2aXNpYmxlOiBzZWxlY3RlZC52YWx1ZSxcbiAgICAgICAgbmFtZTogXCJUYWJQYW5lbFwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gc3JjL2NvbXBvbmVudHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi50c1xudmFyIGltcG9ydF92dWUyNyA9IHJlcXVpcmUoXCJ2dWVcIik7XG5cbi8vIHNyYy91dGlscy9vbmNlLnRzXG5mdW5jdGlvbiBvbmNlKGNiKSB7XG4gIGxldCBzdGF0ZSA9IHsgY2FsbGVkOiBmYWxzZSB9O1xuICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICBpZiAoc3RhdGUuY2FsbGVkKVxuICAgICAgcmV0dXJuO1xuICAgIHN0YXRlLmNhbGxlZCA9IHRydWU7XG4gICAgcmV0dXJuIGNiKC4uLmFyZ3MpO1xuICB9O1xufVxuXG4vLyBzcmMvdXRpbHMvZGlzcG9zYWJsZXMudHNcbmZ1bmN0aW9uIGRpc3Bvc2FibGVzKCkge1xuICBsZXQgZGlzcG9zYWJsZXMyID0gW107XG4gIGxldCBxdWV1ZSA9IFtdO1xuICBsZXQgYXBpID0ge1xuICAgIGVucXVldWUoZm4pIHtcbiAgICAgIHF1ZXVlLnB1c2goZm4pO1xuICAgIH0sXG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKC4uLmFyZ3MpIHtcbiAgICAgIGxldCByYWYgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoLi4uYXJncyk7XG4gICAgICBhcGkuYWRkKCgpID0+IGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJhZikpO1xuICAgIH0sXG4gICAgbmV4dEZyYW1lKC4uLmFyZ3MpIHtcbiAgICAgIGFwaS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBhcGkucmVxdWVzdEFuaW1hdGlvbkZyYW1lKC4uLmFyZ3MpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBzZXRUaW1lb3V0KC4uLmFyZ3MpIHtcbiAgICAgIGxldCB0aW1lciA9IHNldFRpbWVvdXQoLi4uYXJncyk7XG4gICAgICBhcGkuYWRkKCgpID0+IGNsZWFyVGltZW91dCh0aW1lcikpO1xuICAgIH0sXG4gICAgYWRkKGNiKSB7XG4gICAgICBkaXNwb3NhYmxlczIucHVzaChjYik7XG4gICAgfSxcbiAgICBkaXNwb3NlKCkge1xuICAgICAgZm9yIChsZXQgZGlzcG9zZSBvZiBkaXNwb3NhYmxlczIuc3BsaWNlKDApKSB7XG4gICAgICAgIGRpc3Bvc2UoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIHdvcmtRdWV1ZSgpIHtcbiAgICAgIGZvciAobGV0IGhhbmRsZSBvZiBxdWV1ZS5zcGxpY2UoMCkpIHtcbiAgICAgICAgYXdhaXQgaGFuZGxlKCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICByZXR1cm4gYXBpO1xufVxuXG4vLyBzcmMvY29tcG9uZW50cy90cmFuc2l0aW9ucy91dGlscy90cmFuc2l0aW9uLnRzXG5mdW5jdGlvbiBhZGRDbGFzc2VzKG5vZGUsIC4uLmNsYXNzZXMpIHtcbiAgbm9kZSAmJiBjbGFzc2VzLmxlbmd0aCA+IDAgJiYgbm9kZS5jbGFzc0xpc3QuYWRkKC4uLmNsYXNzZXMpO1xufVxuZnVuY3Rpb24gcmVtb3ZlQ2xhc3Nlcyhub2RlLCAuLi5jbGFzc2VzKSB7XG4gIG5vZGUgJiYgY2xhc3Nlcy5sZW5ndGggPiAwICYmIG5vZGUuY2xhc3NMaXN0LnJlbW92ZSguLi5jbGFzc2VzKTtcbn1cbmZ1bmN0aW9uIHdhaXRGb3JUcmFuc2l0aW9uKG5vZGUsIGRvbmUpIHtcbiAgbGV0IGQgPSBkaXNwb3NhYmxlcygpO1xuICBpZiAoIW5vZGUpXG4gICAgcmV0dXJuIGQuZGlzcG9zZTtcbiAgbGV0IHsgdHJhbnNpdGlvbkR1cmF0aW9uLCB0cmFuc2l0aW9uRGVsYXkgfSA9IGdldENvbXB1dGVkU3R5bGUobm9kZSk7XG4gIGxldCBbZHVyYXRpb25NcywgZGVsYXlzTXNdID0gW3RyYW5zaXRpb25EdXJhdGlvbiwgdHJhbnNpdGlvbkRlbGF5XS5tYXAoKHZhbHVlKSA9PiB7XG4gICAgbGV0IFtyZXNvbHZlZFZhbHVlID0gMF0gPSB2YWx1ZS5zcGxpdChcIixcIikuZmlsdGVyKEJvb2xlYW4pLm1hcCgodikgPT4gdi5pbmNsdWRlcyhcIm1zXCIpID8gcGFyc2VGbG9hdCh2KSA6IHBhcnNlRmxvYXQodikgKiAxZTMpLnNvcnQoKGEsIHopID0+IHogLSBhKTtcbiAgICByZXR1cm4gcmVzb2x2ZWRWYWx1ZTtcbiAgfSk7XG4gIGlmIChkdXJhdGlvbk1zICE9PSAwKSB7XG4gICAgZC5zZXRUaW1lb3V0KCgpID0+IGRvbmUoXCJmaW5pc2hlZFwiIC8qIEZpbmlzaGVkICovKSwgZHVyYXRpb25NcyArIGRlbGF5c01zKTtcbiAgfSBlbHNlIHtcbiAgICBkb25lKFwiZmluaXNoZWRcIiAvKiBGaW5pc2hlZCAqLyk7XG4gIH1cbiAgZC5hZGQoKCkgPT4gZG9uZShcImNhbmNlbGxlZFwiIC8qIENhbmNlbGxlZCAqLykpO1xuICByZXR1cm4gZC5kaXNwb3NlO1xufVxuZnVuY3Rpb24gdHJhbnNpdGlvbihub2RlLCBiYXNlLCBmcm9tLCB0bywgZW50ZXJlZCwgZG9uZSkge1xuICBsZXQgZCA9IGRpc3Bvc2FibGVzKCk7XG4gIGxldCBfZG9uZSA9IGRvbmUgIT09IHZvaWQgMCA/IG9uY2UoZG9uZSkgOiAoKSA9PiB7XG4gIH07XG4gIHJlbW92ZUNsYXNzZXMobm9kZSwgLi4uZW50ZXJlZCk7XG4gIGFkZENsYXNzZXMobm9kZSwgLi4uYmFzZSwgLi4uZnJvbSk7XG4gIGQubmV4dEZyYW1lKCgpID0+IHtcbiAgICByZW1vdmVDbGFzc2VzKG5vZGUsIC4uLmZyb20pO1xuICAgIGFkZENsYXNzZXMobm9kZSwgLi4udG8pO1xuICAgIGQuYWRkKHdhaXRGb3JUcmFuc2l0aW9uKG5vZGUsIChyZWFzb24pID0+IHtcbiAgICAgIHJlbW92ZUNsYXNzZXMobm9kZSwgLi4udG8sIC4uLmJhc2UpO1xuICAgICAgYWRkQ2xhc3Nlcyhub2RlLCAuLi5lbnRlcmVkKTtcbiAgICAgIHJldHVybiBfZG9uZShyZWFzb24pO1xuICAgIH0pKTtcbiAgfSk7XG4gIGQuYWRkKCgpID0+IHJlbW92ZUNsYXNzZXMobm9kZSwgLi4uYmFzZSwgLi4uZnJvbSwgLi4udG8sIC4uLmVudGVyZWQpKTtcbiAgZC5hZGQoKCkgPT4gX2RvbmUoXCJjYW5jZWxsZWRcIiAvKiBDYW5jZWxsZWQgKi8pKTtcbiAgcmV0dXJuIGQuZGlzcG9zZTtcbn1cblxuLy8gc3JjL2NvbXBvbmVudHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi50c1xuZnVuY3Rpb24gc3BsaXRDbGFzc2VzKGNsYXNzZXMgPSBcIlwiKSB7XG4gIHJldHVybiBjbGFzc2VzLnNwbGl0KFwiIFwiKS5maWx0ZXIoKGNsYXNzTmFtZSkgPT4gY2xhc3NOYW1lLnRyaW0oKS5sZW5ndGggPiAxKTtcbn1cbnZhciBUcmFuc2l0aW9uQ29udGV4dCA9IFN5bWJvbChcIlRyYW5zaXRpb25Db250ZXh0XCIpO1xuZnVuY3Rpb24gaGFzVHJhbnNpdGlvbkNvbnRleHQoKSB7XG4gIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTI3LmluamVjdCkoVHJhbnNpdGlvbkNvbnRleHQsIG51bGwpICE9PSBudWxsO1xufVxuZnVuY3Rpb24gdXNlVHJhbnNpdGlvbkNvbnRleHQoKSB7XG4gIGxldCBjb250ZXh0ID0gKDAsIGltcG9ydF92dWUyNy5pbmplY3QpKFRyYW5zaXRpb25Db250ZXh0LCBudWxsKTtcbiAgaWYgKGNvbnRleHQgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJBIDxUcmFuc2l0aW9uQ2hpbGQgLz4gaXMgdXNlZCBidXQgaXQgaXMgbWlzc2luZyBhIHBhcmVudCA8VHJhbnNpdGlvblJvb3QgLz4uXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuZnVuY3Rpb24gdXNlUGFyZW50TmVzdGluZygpIHtcbiAgbGV0IGNvbnRleHQgPSAoMCwgaW1wb3J0X3Z1ZTI3LmluamVjdCkoTmVzdGluZ0NvbnRleHQsIG51bGwpO1xuICBpZiAoY29udGV4dCA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkEgPFRyYW5zaXRpb25DaGlsZCAvPiBpcyB1c2VkIGJ1dCBpdCBpcyBtaXNzaW5nIGEgcGFyZW50IDxUcmFuc2l0aW9uUm9vdCAvPi5cIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG52YXIgTmVzdGluZ0NvbnRleHQgPSBTeW1ib2woXCJOZXN0aW5nQ29udGV4dFwiKTtcbmZ1bmN0aW9uIGhhc0NoaWxkcmVuKGJhZykge1xuICBpZiAoXCJjaGlsZHJlblwiIGluIGJhZylcbiAgICByZXR1cm4gaGFzQ2hpbGRyZW4oYmFnLmNoaWxkcmVuKTtcbiAgcmV0dXJuIGJhZy52YWx1ZS5maWx0ZXIoKHsgc3RhdGUgfSkgPT4gc3RhdGUgPT09IFwidmlzaWJsZVwiIC8qIFZpc2libGUgKi8pLmxlbmd0aCA+IDA7XG59XG5mdW5jdGlvbiB1c2VOZXN0aW5nKGRvbmUpIHtcbiAgbGV0IHRyYW5zaXRpb25hYmxlQ2hpbGRyZW4gPSAoMCwgaW1wb3J0X3Z1ZTI3LnJlZikoW10pO1xuICBsZXQgbW91bnRlZCA9ICgwLCBpbXBvcnRfdnVlMjcucmVmKShmYWxzZSk7XG4gICgwLCBpbXBvcnRfdnVlMjcub25Nb3VudGVkKSgoKSA9PiBtb3VudGVkLnZhbHVlID0gdHJ1ZSk7XG4gICgwLCBpbXBvcnRfdnVlMjcub25Vbm1vdW50ZWQpKCgpID0+IG1vdW50ZWQudmFsdWUgPSBmYWxzZSk7XG4gIGZ1bmN0aW9uIHVucmVnaXN0ZXIoY2hpbGRJZCwgc3RyYXRlZ3kgPSAxIC8qIEhpZGRlbiAqLykge1xuICAgIGxldCBpZHggPSB0cmFuc2l0aW9uYWJsZUNoaWxkcmVuLnZhbHVlLmZpbmRJbmRleCgoeyBpZDogaWQyIH0pID0+IGlkMiA9PT0gY2hpbGRJZCk7XG4gICAgaWYgKGlkeCA9PT0gLTEpXG4gICAgICByZXR1cm47XG4gICAgbWF0Y2goc3RyYXRlZ3ksIHtcbiAgICAgIFswIC8qIFVubW91bnQgKi9dKCkge1xuICAgICAgICB0cmFuc2l0aW9uYWJsZUNoaWxkcmVuLnZhbHVlLnNwbGljZShpZHgsIDEpO1xuICAgICAgfSxcbiAgICAgIFsxIC8qIEhpZGRlbiAqL10oKSB7XG4gICAgICAgIHRyYW5zaXRpb25hYmxlQ2hpbGRyZW4udmFsdWVbaWR4XS5zdGF0ZSA9IFwiaGlkZGVuXCIgLyogSGlkZGVuICovO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICghaGFzQ2hpbGRyZW4odHJhbnNpdGlvbmFibGVDaGlsZHJlbikgJiYgbW91bnRlZC52YWx1ZSkge1xuICAgICAgZG9uZSA9PSBudWxsID8gdm9pZCAwIDogZG9uZSgpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiByZWdpc3RlcihjaGlsZElkKSB7XG4gICAgbGV0IGNoaWxkID0gdHJhbnNpdGlvbmFibGVDaGlsZHJlbi52YWx1ZS5maW5kKCh7IGlkOiBpZDIgfSkgPT4gaWQyID09PSBjaGlsZElkKTtcbiAgICBpZiAoIWNoaWxkKSB7XG4gICAgICB0cmFuc2l0aW9uYWJsZUNoaWxkcmVuLnZhbHVlLnB1c2goeyBpZDogY2hpbGRJZCwgc3RhdGU6IFwidmlzaWJsZVwiIC8qIFZpc2libGUgKi8gfSk7XG4gICAgfSBlbHNlIGlmIChjaGlsZC5zdGF0ZSAhPT0gXCJ2aXNpYmxlXCIgLyogVmlzaWJsZSAqLykge1xuICAgICAgY2hpbGQuc3RhdGUgPSBcInZpc2libGVcIiAvKiBWaXNpYmxlICovO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4gdW5yZWdpc3RlcihjaGlsZElkLCAwIC8qIFVubW91bnQgKi8pO1xuICB9XG4gIHJldHVybiB7XG4gICAgY2hpbGRyZW46IHRyYW5zaXRpb25hYmxlQ2hpbGRyZW4sXG4gICAgcmVnaXN0ZXIsXG4gICAgdW5yZWdpc3RlclxuICB9O1xufVxudmFyIFRyYW5zaXRpb25DaGlsZFJlbmRlckZlYXR1cmVzID0gMSAvKiBSZW5kZXJTdHJhdGVneSAqLztcbnZhciBUcmFuc2l0aW9uQ2hpbGQgPSAoMCwgaW1wb3J0X3Z1ZTI3LmRlZmluZUNvbXBvbmVudCkoe1xuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfSxcbiAgICBzaG93OiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogbnVsbCB9LFxuICAgIHVubW91bnQ6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiB0cnVlIH0sXG4gICAgYXBwZWFyOiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICBlbnRlcjogeyB0eXBlOiBbU3RyaW5nXSwgZGVmYXVsdDogXCJcIiB9LFxuICAgIGVudGVyRnJvbTogeyB0eXBlOiBbU3RyaW5nXSwgZGVmYXVsdDogXCJcIiB9LFxuICAgIGVudGVyVG86IHsgdHlwZTogW1N0cmluZ10sIGRlZmF1bHQ6IFwiXCIgfSxcbiAgICBlbnRlcmVkOiB7IHR5cGU6IFtTdHJpbmddLCBkZWZhdWx0OiBcIlwiIH0sXG4gICAgbGVhdmU6IHsgdHlwZTogW1N0cmluZ10sIGRlZmF1bHQ6IFwiXCIgfSxcbiAgICBsZWF2ZUZyb206IHsgdHlwZTogW1N0cmluZ10sIGRlZmF1bHQ6IFwiXCIgfSxcbiAgICBsZWF2ZVRvOiB7IHR5cGU6IFtTdHJpbmddLCBkZWZhdWx0OiBcIlwiIH1cbiAgfSxcbiAgZW1pdHM6IHtcbiAgICBiZWZvcmVFbnRlcjogKCkgPT4gdHJ1ZSxcbiAgICBhZnRlckVudGVyOiAoKSA9PiB0cnVlLFxuICAgIGJlZm9yZUxlYXZlOiAoKSA9PiB0cnVlLFxuICAgIGFmdGVyTGVhdmU6ICgpID0+IHRydWVcbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgZW1pdCwgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGlmICghaGFzVHJhbnNpdGlvbkNvbnRleHQoKSAmJiBoYXNPcGVuQ2xvc2VkKCkpIHtcbiAgICAgIHJldHVybiAoKSA9PiAoMCwgaW1wb3J0X3Z1ZTI3LmgpKFRyYW5zaXRpb25Sb290LCB7XG4gICAgICAgIC4uLnByb3BzLFxuICAgICAgICBvbkJlZm9yZUVudGVyOiAoKSA9PiBlbWl0KFwiYmVmb3JlRW50ZXJcIiksXG4gICAgICAgIG9uQWZ0ZXJFbnRlcjogKCkgPT4gZW1pdChcImFmdGVyRW50ZXJcIiksXG4gICAgICAgIG9uQmVmb3JlTGVhdmU6ICgpID0+IGVtaXQoXCJiZWZvcmVMZWF2ZVwiKSxcbiAgICAgICAgb25BZnRlckxlYXZlOiAoKSA9PiBlbWl0KFwiYWZ0ZXJMZWF2ZVwiKVxuICAgICAgfSwgc2xvdHMpO1xuICAgIH1cbiAgICBsZXQgY29udGFpbmVyID0gKDAsIGltcG9ydF92dWUyNy5yZWYpKG51bGwpO1xuICAgIGxldCBzdGF0ZSA9ICgwLCBpbXBvcnRfdnVlMjcucmVmKShcInZpc2libGVcIiAvKiBWaXNpYmxlICovKTtcbiAgICBsZXQgc3RyYXRlZ3kgPSAoMCwgaW1wb3J0X3Z1ZTI3LmNvbXB1dGVkKSgoKSA9PiBwcm9wcy51bm1vdW50ID8gMCAvKiBVbm1vdW50ICovIDogMSAvKiBIaWRkZW4gKi8pO1xuICAgIGV4cG9zZSh7IGVsOiBjb250YWluZXIsICRlbDogY29udGFpbmVyIH0pO1xuICAgIGxldCB7IHNob3csIGFwcGVhciB9ID0gdXNlVHJhbnNpdGlvbkNvbnRleHQoKTtcbiAgICBsZXQgeyByZWdpc3RlciwgdW5yZWdpc3RlciB9ID0gdXNlUGFyZW50TmVzdGluZygpO1xuICAgIGxldCBpbml0aWFsID0geyB2YWx1ZTogdHJ1ZSB9O1xuICAgIGxldCBpZDIgPSB1c2VJZCgpO1xuICAgIGxldCBpc1RyYW5zaXRpb25pbmcgPSB7IHZhbHVlOiBmYWxzZSB9O1xuICAgIGxldCBuZXN0aW5nID0gdXNlTmVzdGluZygoKSA9PiB7XG4gICAgICBpZiAoIWlzVHJhbnNpdGlvbmluZy52YWx1ZSkge1xuICAgICAgICBzdGF0ZS52YWx1ZSA9IFwiaGlkZGVuXCIgLyogSGlkZGVuICovO1xuICAgICAgICB1bnJlZ2lzdGVyKGlkMik7XG4gICAgICAgIGVtaXQoXCJhZnRlckxlYXZlXCIpO1xuICAgICAgfVxuICAgIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMjcub25Nb3VudGVkKSgoKSA9PiB7XG4gICAgICBsZXQgdW5yZWdpc3RlcjIgPSByZWdpc3RlcihpZDIpO1xuICAgICAgKDAsIGltcG9ydF92dWUyNy5vblVubW91bnRlZCkodW5yZWdpc3RlcjIpO1xuICAgIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMjcud2F0Y2hFZmZlY3QpKCgpID0+IHtcbiAgICAgIGlmIChzdHJhdGVneS52YWx1ZSAhPT0gMSAvKiBIaWRkZW4gKi8pXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICghaWQyKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoc2hvdyAmJiBzdGF0ZS52YWx1ZSAhPT0gXCJ2aXNpYmxlXCIgLyogVmlzaWJsZSAqLykge1xuICAgICAgICBzdGF0ZS52YWx1ZSA9IFwidmlzaWJsZVwiIC8qIFZpc2libGUgKi87XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIG1hdGNoKHN0YXRlLnZhbHVlLCB7XG4gICAgICAgIFtcImhpZGRlblwiIC8qIEhpZGRlbiAqL106ICgpID0+IHVucmVnaXN0ZXIoaWQyKSxcbiAgICAgICAgW1widmlzaWJsZVwiIC8qIFZpc2libGUgKi9dOiAoKSA9PiByZWdpc3RlcihpZDIpXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBsZXQgZW50ZXJDbGFzc2VzID0gc3BsaXRDbGFzc2VzKHByb3BzLmVudGVyKTtcbiAgICBsZXQgZW50ZXJGcm9tQ2xhc3NlcyA9IHNwbGl0Q2xhc3Nlcyhwcm9wcy5lbnRlckZyb20pO1xuICAgIGxldCBlbnRlclRvQ2xhc3NlcyA9IHNwbGl0Q2xhc3Nlcyhwcm9wcy5lbnRlclRvKTtcbiAgICBsZXQgZW50ZXJlZENsYXNzZXMgPSBzcGxpdENsYXNzZXMocHJvcHMuZW50ZXJlZCk7XG4gICAgbGV0IGxlYXZlQ2xhc3NlcyA9IHNwbGl0Q2xhc3Nlcyhwcm9wcy5sZWF2ZSk7XG4gICAgbGV0IGxlYXZlRnJvbUNsYXNzZXMgPSBzcGxpdENsYXNzZXMocHJvcHMubGVhdmVGcm9tKTtcbiAgICBsZXQgbGVhdmVUb0NsYXNzZXMgPSBzcGxpdENsYXNzZXMocHJvcHMubGVhdmVUbyk7XG4gICAgKDAsIGltcG9ydF92dWUyNy5vbk1vdW50ZWQpKCgpID0+IHtcbiAgICAgICgwLCBpbXBvcnRfdnVlMjcud2F0Y2hFZmZlY3QpKCgpID0+IHtcbiAgICAgICAgaWYgKHN0YXRlLnZhbHVlID09PSBcInZpc2libGVcIiAvKiBWaXNpYmxlICovKSB7XG4gICAgICAgICAgbGV0IGRvbUVsZW1lbnQgPSBkb20oY29udGFpbmVyKTtcbiAgICAgICAgICBsZXQgaXNFbXB0eURPTU5vZGUgPSBkb21FbGVtZW50IGluc3RhbmNlb2YgQ29tbWVudCAmJiBkb21FbGVtZW50LmRhdGEgPT09IFwiXCI7XG4gICAgICAgICAgaWYgKGlzRW1wdHlET01Ob2RlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEaWQgeW91IGZvcmdldCB0byBwYXNzdGhyb3VnaCB0aGUgYHJlZmAgdG8gdGhlIGFjdHVhbCBET00gbm9kZT9cIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBleGVjdXRlVHJhbnNpdGlvbihvbkludmFsaWRhdGUpIHtcbiAgICAgIGxldCBza2lwID0gaW5pdGlhbC52YWx1ZSAmJiAhYXBwZWFyLnZhbHVlO1xuICAgICAgbGV0IG5vZGUgPSBkb20oY29udGFpbmVyKTtcbiAgICAgIGlmICghbm9kZSB8fCAhKG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChza2lwKVxuICAgICAgICByZXR1cm47XG4gICAgICBpc1RyYW5zaXRpb25pbmcudmFsdWUgPSB0cnVlO1xuICAgICAgaWYgKHNob3cudmFsdWUpXG4gICAgICAgIGVtaXQoXCJiZWZvcmVFbnRlclwiKTtcbiAgICAgIGlmICghc2hvdy52YWx1ZSlcbiAgICAgICAgZW1pdChcImJlZm9yZUxlYXZlXCIpO1xuICAgICAgb25JbnZhbGlkYXRlKHNob3cudmFsdWUgPyB0cmFuc2l0aW9uKG5vZGUsIGVudGVyQ2xhc3NlcywgZW50ZXJGcm9tQ2xhc3NlcywgZW50ZXJUb0NsYXNzZXMsIGVudGVyZWRDbGFzc2VzLCAocmVhc29uKSA9PiB7XG4gICAgICAgIGlzVHJhbnNpdGlvbmluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICBpZiAocmVhc29uID09PSBcImZpbmlzaGVkXCIgLyogRmluaXNoZWQgKi8pXG4gICAgICAgICAgZW1pdChcImFmdGVyRW50ZXJcIik7XG4gICAgICB9KSA6IHRyYW5zaXRpb24obm9kZSwgbGVhdmVDbGFzc2VzLCBsZWF2ZUZyb21DbGFzc2VzLCBsZWF2ZVRvQ2xhc3NlcywgZW50ZXJlZENsYXNzZXMsIChyZWFzb24pID0+IHtcbiAgICAgICAgaXNUcmFuc2l0aW9uaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIGlmIChyZWFzb24gIT09IFwiZmluaXNoZWRcIiAvKiBGaW5pc2hlZCAqLylcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICghaGFzQ2hpbGRyZW4obmVzdGluZykpIHtcbiAgICAgICAgICBzdGF0ZS52YWx1ZSA9IFwiaGlkZGVuXCIgLyogSGlkZGVuICovO1xuICAgICAgICAgIHVucmVnaXN0ZXIoaWQyKTtcbiAgICAgICAgICBlbWl0KFwiYWZ0ZXJMZWF2ZVwiKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH1cbiAgICAoMCwgaW1wb3J0X3Z1ZTI3Lm9uTW91bnRlZCkoKCkgPT4ge1xuICAgICAgKDAsIGltcG9ydF92dWUyNy53YXRjaCkoW3Nob3ddLCAoX29sZFZhbHVlcywgX25ld1ZhbHVlcywgb25JbnZhbGlkYXRlKSA9PiB7XG4gICAgICAgIGV4ZWN1dGVUcmFuc2l0aW9uKG9uSW52YWxpZGF0ZSk7XG4gICAgICAgIGluaXRpYWwudmFsdWUgPSBmYWxzZTtcbiAgICAgIH0sIHsgaW1tZWRpYXRlOiB0cnVlIH0pO1xuICAgIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMjcucHJvdmlkZSkoTmVzdGluZ0NvbnRleHQsIG5lc3RpbmcpO1xuICAgIHVzZU9wZW5DbG9zZWRQcm92aWRlcigoMCwgaW1wb3J0X3Z1ZTI3LmNvbXB1dGVkKSgoKSA9PiBtYXRjaChzdGF0ZS52YWx1ZSwge1xuICAgICAgW1widmlzaWJsZVwiIC8qIFZpc2libGUgKi9dOiAwIC8qIE9wZW4gKi8sXG4gICAgICBbXCJoaWRkZW5cIiAvKiBIaWRkZW4gKi9dOiAxIC8qIENsb3NlZCAqL1xuICAgIH0pKSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB7XG4gICAgICAgIGFwcGVhcjogYXBwZWFyMixcbiAgICAgICAgc2hvdzogc2hvdzIsXG4gICAgICAgIGVudGVyLFxuICAgICAgICBlbnRlckZyb20sXG4gICAgICAgIGVudGVyVG8sXG4gICAgICAgIGVudGVyZWQsXG4gICAgICAgIGxlYXZlLFxuICAgICAgICBsZWF2ZUZyb20sXG4gICAgICAgIGxlYXZlVG8sXG4gICAgICAgIC4uLnJlc3RcbiAgICAgIH0gPSBwcm9wcztcbiAgICAgIGxldCBvdXJQcm9wcyA9IHsgcmVmOiBjb250YWluZXIgfTtcbiAgICAgIGxldCB0aGVpclByb3BzID0gcmVzdDtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgc2xvdDoge30sXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBhdHRycyxcbiAgICAgICAgZmVhdHVyZXM6IFRyYW5zaXRpb25DaGlsZFJlbmRlckZlYXR1cmVzLFxuICAgICAgICB2aXNpYmxlOiBzdGF0ZS52YWx1ZSA9PT0gXCJ2aXNpYmxlXCIgLyogVmlzaWJsZSAqLyxcbiAgICAgICAgbmFtZTogXCJUcmFuc2l0aW9uQ2hpbGRcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgX1RyYW5zaXRpb25DaGlsZCA9IFRyYW5zaXRpb25DaGlsZDtcbnZhciBUcmFuc2l0aW9uUm9vdCA9ICgwLCBpbXBvcnRfdnVlMjcuZGVmaW5lQ29tcG9uZW50KSh7XG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9LFxuICAgIHNob3c6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBudWxsIH0sXG4gICAgdW5tb3VudDogeyB0eXBlOiBbQm9vbGVhbl0sIGRlZmF1bHQ6IHRydWUgfSxcbiAgICBhcHBlYXI6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIGVudGVyOiB7IHR5cGU6IFtTdHJpbmddLCBkZWZhdWx0OiBcIlwiIH0sXG4gICAgZW50ZXJGcm9tOiB7IHR5cGU6IFtTdHJpbmddLCBkZWZhdWx0OiBcIlwiIH0sXG4gICAgZW50ZXJUbzogeyB0eXBlOiBbU3RyaW5nXSwgZGVmYXVsdDogXCJcIiB9LFxuICAgIGVudGVyZWQ6IHsgdHlwZTogW1N0cmluZ10sIGRlZmF1bHQ6IFwiXCIgfSxcbiAgICBsZWF2ZTogeyB0eXBlOiBbU3RyaW5nXSwgZGVmYXVsdDogXCJcIiB9LFxuICAgIGxlYXZlRnJvbTogeyB0eXBlOiBbU3RyaW5nXSwgZGVmYXVsdDogXCJcIiB9LFxuICAgIGxlYXZlVG86IHsgdHlwZTogW1N0cmluZ10sIGRlZmF1bHQ6IFwiXCIgfVxuICB9LFxuICBlbWl0czoge1xuICAgIGJlZm9yZUVudGVyOiAoKSA9PiB0cnVlLFxuICAgIGFmdGVyRW50ZXI6ICgpID0+IHRydWUsXG4gICAgYmVmb3JlTGVhdmU6ICgpID0+IHRydWUsXG4gICAgYWZ0ZXJMZWF2ZTogKCkgPT4gdHJ1ZVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBlbWl0LCBhdHRycywgc2xvdHMgfSkge1xuICAgIGxldCB1c2VzT3BlbkNsb3NlZFN0YXRlID0gdXNlT3BlbkNsb3NlZCgpO1xuICAgIGxldCBzaG93ID0gKDAsIGltcG9ydF92dWUyNy5jb21wdXRlZCkoKCkgPT4ge1xuICAgICAgaWYgKHByb3BzLnNob3cgPT09IG51bGwgJiYgdXNlc09wZW5DbG9zZWRTdGF0ZSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbWF0Y2godXNlc09wZW5DbG9zZWRTdGF0ZS52YWx1ZSwge1xuICAgICAgICAgIFswIC8qIE9wZW4gKi9dOiB0cnVlLFxuICAgICAgICAgIFsxIC8qIENsb3NlZCAqL106IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByb3BzLnNob3c7XG4gICAgfSk7XG4gICAgKDAsIGltcG9ydF92dWUyNy53YXRjaEVmZmVjdCkoKCkgPT4ge1xuICAgICAgaWYgKCFbdHJ1ZSwgZmFsc2VdLmluY2x1ZGVzKHNob3cudmFsdWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQSA8VHJhbnNpdGlvbiAvPiBpcyB1c2VkIGJ1dCBpdCBpcyBtaXNzaW5nIGEgYDpzaG93PVwidHJ1ZSB8IGZhbHNlXCJgIHByb3AuJyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgbGV0IHN0YXRlID0gKDAsIGltcG9ydF92dWUyNy5yZWYpKHNob3cudmFsdWUgPyBcInZpc2libGVcIiAvKiBWaXNpYmxlICovIDogXCJoaWRkZW5cIiAvKiBIaWRkZW4gKi8pO1xuICAgIGxldCBuZXN0aW5nQmFnID0gdXNlTmVzdGluZygoKSA9PiB7XG4gICAgICBzdGF0ZS52YWx1ZSA9IFwiaGlkZGVuXCIgLyogSGlkZGVuICovO1xuICAgIH0pO1xuICAgIGxldCBpbml0aWFsID0gKDAsIGltcG9ydF92dWUyNy5yZWYpKHRydWUpO1xuICAgIGxldCB0cmFuc2l0aW9uQmFnID0ge1xuICAgICAgc2hvdyxcbiAgICAgIGFwcGVhcjogKDAsIGltcG9ydF92dWUyNy5jb21wdXRlZCkoKCkgPT4gcHJvcHMuYXBwZWFyIHx8ICFpbml0aWFsLnZhbHVlKVxuICAgIH07XG4gICAgKDAsIGltcG9ydF92dWUyNy5vbk1vdW50ZWQpKCgpID0+IHtcbiAgICAgICgwLCBpbXBvcnRfdnVlMjcud2F0Y2hFZmZlY3QpKCgpID0+IHtcbiAgICAgICAgaW5pdGlhbC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICBpZiAoc2hvdy52YWx1ZSkge1xuICAgICAgICAgIHN0YXRlLnZhbHVlID0gXCJ2aXNpYmxlXCIgLyogVmlzaWJsZSAqLztcbiAgICAgICAgfSBlbHNlIGlmICghaGFzQ2hpbGRyZW4obmVzdGluZ0JhZykpIHtcbiAgICAgICAgICBzdGF0ZS52YWx1ZSA9IFwiaGlkZGVuXCIgLyogSGlkZGVuICovO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTI3LnByb3ZpZGUpKE5lc3RpbmdDb250ZXh0LCBuZXN0aW5nQmFnKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTI3LnByb3ZpZGUpKFRyYW5zaXRpb25Db250ZXh0LCB0cmFuc2l0aW9uQmFnKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBvbWl0KHByb3BzLCBbXG4gICAgICAgIFwic2hvd1wiLFxuICAgICAgICBcImFwcGVhclwiLFxuICAgICAgICBcInVubW91bnRcIixcbiAgICAgICAgXCJvbkJlZm9yZUVudGVyXCIsXG4gICAgICAgIFwib25CZWZvcmVMZWF2ZVwiLFxuICAgICAgICBcIm9uQWZ0ZXJFbnRlclwiLFxuICAgICAgICBcIm9uQWZ0ZXJMZWF2ZVwiXG4gICAgICBdKTtcbiAgICAgIGxldCBzaGFyZWRQcm9wcyA9IHsgdW5tb3VudDogcHJvcHMudW5tb3VudCB9O1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzOiB7XG4gICAgICAgICAgLi4uc2hhcmVkUHJvcHMsXG4gICAgICAgICAgYXM6IFwidGVtcGxhdGVcIlxuICAgICAgICB9LFxuICAgICAgICB0aGVpclByb3BzOiB7fSxcbiAgICAgICAgc2xvdDoge30sXG4gICAgICAgIHNsb3RzOiB7XG4gICAgICAgICAgLi4uc2xvdHMsXG4gICAgICAgICAgZGVmYXVsdDogKCkgPT4gW1xuICAgICAgICAgICAgKDAsIGltcG9ydF92dWUyNy5oKShfVHJhbnNpdGlvbkNoaWxkLCB7XG4gICAgICAgICAgICAgIG9uQmVmb3JlRW50ZXI6ICgpID0+IGVtaXQoXCJiZWZvcmVFbnRlclwiKSxcbiAgICAgICAgICAgICAgb25BZnRlckVudGVyOiAoKSA9PiBlbWl0KFwiYWZ0ZXJFbnRlclwiKSxcbiAgICAgICAgICAgICAgb25CZWZvcmVMZWF2ZTogKCkgPT4gZW1pdChcImJlZm9yZUxlYXZlXCIpLFxuICAgICAgICAgICAgICBvbkFmdGVyTGVhdmU6ICgpID0+IGVtaXQoXCJhZnRlckxlYXZlXCIpLFxuICAgICAgICAgICAgICAuLi5hdHRycyxcbiAgICAgICAgICAgICAgLi4uc2hhcmVkUHJvcHMsXG4gICAgICAgICAgICAgIC4uLnRoZWlyUHJvcHNcbiAgICAgICAgICAgIH0sIHNsb3RzLmRlZmF1bHQpXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBhdHRyczoge30sXG4gICAgICAgIGZlYXR1cmVzOiBUcmFuc2l0aW9uQ2hpbGRSZW5kZXJGZWF0dXJlcyxcbiAgICAgICAgdmlzaWJsZTogc3RhdGUudmFsdWUgPT09IFwidmlzaWJsZVwiIC8qIFZpc2libGUgKi8sXG4gICAgICAgIG5hbWU6IFwiVHJhbnNpdGlvblwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0J1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vaGVhZGxlc3N1aS5wcm9kLmNqcycpXG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vaGVhZGxlc3N1aS5kZXYuY2pzJylcbn1cbiIsIihmdW5jdGlvbihlLGMpe3R5cGVvZiBleHBvcnRzPT1cIm9iamVjdFwiJiZ0eXBlb2YgbW9kdWxlPFwidVwiP21vZHVsZS5leHBvcnRzPWMocmVxdWlyZShcInZ1ZVwiKSxyZXF1aXJlKFwiZGF0ZS1mbnNcIikpOnR5cGVvZiBkZWZpbmU9PVwiZnVuY3Rpb25cIiYmZGVmaW5lLmFtZD9kZWZpbmUoW1widnVlXCIsXCJkYXRlLWZuc1wiXSxjKTooZT10eXBlb2YgZ2xvYmFsVGhpczxcInVcIj9nbG9iYWxUaGlzOmV8fHNlbGYsZS5WdWVEYXRlUGlja2VyPWMoZS5WdWUsZS5kYXRlRm5zKSl9KSh0aGlzLGZ1bmN0aW9uKGUsYyl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gSGUoKXtyZXR1cm4gZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcInN2Z1wiLHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsdmlld0JveDpcIjAgMCAzMiAzMlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCIsY2xhc3M6XCJkcF9faWNvblwifSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJwYXRoXCIse2Q6XCJNMjkuMzMzIDhjMC0yLjIwOC0xLjc5Mi00LTQtNGgtMTguNjY3Yy0yLjIwOCAwLTQgMS43OTItNCA0djE4LjY2N2MwIDIuMjA4IDEuNzkyIDQgNCA0aDE4LjY2N2MyLjIwOCAwIDQtMS43OTIgNC00di0xOC42Njd6TTI2LjY2NyA4djE4LjY2N2MwIDAuNzM2LTAuNTk3IDEuMzMzLTEuMzMzIDEuMzMzIDAgMC0xOC42NjcgMC0xOC42NjcgMC0wLjczNiAwLTEuMzMzLTAuNTk3LTEuMzMzLTEuMzMzIDAgMCAwLTE4LjY2NyAwLTE4LjY2NyAwLTAuNzM2IDAuNTk3LTEuMzMzIDEuMzMzLTEuMzMzIDAgMCAxOC42NjcgMCAxOC42NjcgMCAwLjczNiAwIDEuMzMzIDAuNTk3IDEuMzMzIDEuMzMzelwifSksZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJwYXRoXCIse2Q6XCJNMjAgMi42Njd2NS4zMzNjMCAwLjczNiAwLjU5NyAxLjMzMyAxLjMzMyAxLjMzM3MxLjMzMy0wLjU5NyAxLjMzMy0xLjMzM3YtNS4zMzNjMC0wLjczNi0wLjU5Ny0xLjMzMy0xLjMzMy0xLjMzM3MtMS4zMzMgMC41OTctMS4zMzMgMS4zMzN6XCJ9KSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcInBhdGhcIix7ZDpcIk05LjMzMyAyLjY2N3Y1LjMzM2MwIDAuNzM2IDAuNTk3IDEuMzMzIDEuMzMzIDEuMzMzczEuMzMzLTAuNTk3IDEuMzMzLTEuMzMzdi01LjMzM2MwLTAuNzM2LTAuNTk3LTEuMzMzLTEuMzMzLTEuMzMzcy0xLjMzMyAwLjU5Ny0xLjMzMyAxLjMzM3pcIn0pLGUuY3JlYXRlRWxlbWVudFZOb2RlKFwicGF0aFwiLHtkOlwiTTQgMTQuNjY3aDI0YzAuNzM2IDAgMS4zMzMtMC41OTcgMS4zMzMtMS4zMzNzLTAuNTk3LTEuMzMzLTEuMzMzLTEuMzMzaC0yNGMtMC43MzYgMC0xLjMzMyAwLjU5Ny0xLjMzMyAxLjMzM3MwLjU5NyAxLjMzMyAxLjMzMyAxLjMzM3pcIn0pXSl9ZnVuY3Rpb24gZW4oKXtyZXR1cm4gZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcInN2Z1wiLHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsdmlld0JveDpcIjAgMCAzMiAzMlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCIsY2xhc3M6XCJkcF9faWNvblwifSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJwYXRoXCIse2Q6XCJNMjMuMDU3IDcuMDU3bC0xNiAxNmMtMC41MiAwLjUyLTAuNTIgMS4zNjUgMCAxLjg4NXMxLjM2NSAwLjUyIDEuODg1IDBsMTYtMTZjMC41Mi0wLjUyIDAuNTItMS4zNjUgMC0xLjg4NXMtMS4zNjUtMC41Mi0xLjg4NSAwelwifSksZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJwYXRoXCIse2Q6XCJNNy4wNTcgOC45NDNsMTYgMTZjMC41MiAwLjUyIDEuMzY1IDAuNTIgMS44ODUgMHMwLjUyLTEuMzY1IDAtMS44ODVsLTE2LTE2Yy0wLjUyLTAuNTItMS4zNjUtMC41Mi0xLjg4NSAwcy0wLjUyIDEuMzY1IDAgMS44ODV6XCJ9KV0pfWZ1bmN0aW9uIE50KCl7cmV0dXJuIGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJzdmdcIix7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHZpZXdCb3g6XCIwIDAgMzIgMzJcIixmaWxsOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwiLGNsYXNzOlwiZHBfX2ljb25cIn0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwicGF0aFwiLHtkOlwiTTIwLjk0MyAyMy4wNTdsLTcuMDU3LTcuMDU3YzAgMCA3LjA1Ny03LjA1NyA3LjA1Ny03LjA1NyAwLjUyLTAuNTIgMC41Mi0xLjM2NSAwLTEuODg1cy0xLjM2NS0wLjUyLTEuODg1IDBsLTggOGMtMC41MjEgMC41MjEtMC41MjEgMS4zNjUgMCAxLjg4NWw4IDhjMC41MiAwLjUyIDEuMzY1IDAuNTIgMS44ODUgMHMwLjUyLTEuMzY1IDAtMS44ODV6XCJ9KV0pfWZ1bmN0aW9uIHZ0KCl7cmV0dXJuIGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJzdmdcIix7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHZpZXdCb3g6XCIwIDAgMzIgMzJcIixmaWxsOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwiLGNsYXNzOlwiZHBfX2ljb25cIn0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwicGF0aFwiLHtkOlwiTTEyLjk0MyAyNC45NDNsOC04YzAuNTIxLTAuNTIxIDAuNTIxLTEuMzY1IDAtMS44ODVsLTgtOGMtMC41Mi0wLjUyLTEuMzY1LTAuNTItMS44ODUgMHMtMC41MiAxLjM2NSAwIDEuODg1bDcuMDU3IDcuMDU3YzAgMC03LjA1NyA3LjA1Ny03LjA1NyA3LjA1Ny0wLjUyIDAuNTItMC41MiAxLjM2NSAwIDEuODg1czEuMzY1IDAuNTIgMS44ODUgMHpcIn0pXSl9ZnVuY3Rpb24gVHQoKXtyZXR1cm4gZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcInN2Z1wiLHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsdmlld0JveDpcIjAgMCAzMiAzMlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCIsY2xhc3M6XCJkcF9faWNvblwifSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJwYXRoXCIse2Q6XCJNMTYgMS4zMzNjLTguMDk1IDAtMTQuNjY3IDYuNTcyLTE0LjY2NyAxNC42NjdzNi41NzIgMTQuNjY3IDE0LjY2NyAxNC42NjdjOC4wOTUgMCAxNC42NjctNi41NzIgMTQuNjY3LTE0LjY2N3MtNi41NzItMTQuNjY3LTE0LjY2Ny0xNC42Njd6TTE2IDRjNi42MjMgMCAxMiA1LjM3NyAxMiAxMnMtNS4zNzcgMTItMTIgMTJjLTYuNjIzIDAtMTItNS4zNzctMTItMTJzNS4zNzctMTIgMTItMTJ6XCJ9KSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcInBhdGhcIix7ZDpcIk0xNC42NjcgOHY4YzAgMC41MDUgMC4yODUgMC45NjcgMC43MzcgMS4xOTNsNS4zMzMgMi42NjdjMC42NTggMC4zMjkgMS40NiAwLjA2MiAxLjc4OS0wLjU5NnMwLjA2Mi0xLjQ2LTAuNTk2LTEuNzg5bC00LjU5Ni0yLjI5OGMwIDAgMC03LjE3NiAwLTcuMTc2IDAtMC43MzYtMC41OTctMS4zMzMtMS4zMzMtMS4zMzNzLTEuMzMzIDAuNTk3LTEuMzMzIDEuMzMzelwifSldKX1mdW5jdGlvbiBQdCgpe3JldHVybiBlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwic3ZnXCIse3htbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix2aWV3Qm94OlwiMCAwIDMyIDMyXCIsZmlsbDpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIixjbGFzczpcImRwX19pY29uXCJ9LFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcInBhdGhcIix7ZDpcIk0yNC45NDMgMTkuMDU3bC04LThjLTAuNTIxLTAuNTIxLTEuMzY1LTAuNTIxLTEuODg1IDBsLTggOGMtMC41MiAwLjUyLTAuNTIgMS4zNjUgMCAxLjg4NXMxLjM2NSAwLjUyIDEuODg1IDBsNy4wNTctNy4wNTdjMCAwIDcuMDU3IDcuMDU3IDcuMDU3IDcuMDU3IDAuNTIgMC41MiAxLjM2NSAwLjUyIDEuODg1IDBzMC41Mi0xLjM2NSAwLTEuODg1elwifSldKX1mdW5jdGlvbiBBdCgpe3JldHVybiBlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwic3ZnXCIse3htbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix2aWV3Qm94OlwiMCAwIDMyIDMyXCIsZmlsbDpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIixjbGFzczpcImRwX19pY29uXCJ9LFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcInBhdGhcIix7ZDpcIk03LjA1NyAxMi45NDNsOCA4YzAuNTIxIDAuNTIxIDEuMzY1IDAuNTIxIDEuODg1IDBsOC04YzAuNTItMC41MiAwLjUyLTEuMzY1IDAtMS44ODVzLTEuMzY1LTAuNTItMS44ODUgMGwtNy4wNTcgNy4wNTdjMCAwLTcuMDU3LTcuMDU3LTcuMDU3LTcuMDU3LTAuNTItMC41Mi0xLjM2NS0wLjUyLTEuODg1IDBzLTAuNTIgMS4zNjUgMCAxLjg4NXpcIn0pXSl9Y29uc3QgVnQ9KHQsYSxyLG4sdSk9Pntjb25zdCBtPWMucGFyc2UodCxhLnNsaWNlKDAsdC5sZW5ndGgpLG5ldyBEYXRlKTtyZXR1cm4gYy5pc1ZhbGlkKG0pJiZjLmlzRGF0ZShtKT9ufHx1P206Yy5zZXQobSx7aG91cnM6K3IuaG91cnMsbWludXRlczorKHI9PW51bGw/dm9pZCAwOnIubWludXRlcyksc2Vjb25kczorKHI9PW51bGw/dm9pZCAwOnIuc2Vjb25kcyksbWlsbGlzZWNvbmRzOjB9KTpudWxsfSx0bj0odCxhLHIsbix1KT0+e2NvbnN0IG09QXJyYXkuaXNBcnJheShyKT9yWzBdOnI7aWYodHlwZW9mIGE9PVwic3RyaW5nXCIpcmV0dXJuIFZ0KHQsYSxtLG4sdSk7aWYoQXJyYXkuaXNBcnJheShhKSl7bGV0IGg9bnVsbDtmb3IoY29uc3QgVCBvZiBhKWlmKGg9VnQodCxULG0sbix1KSxoKWJyZWFrO3JldHVybiBofXJldHVybiB0eXBlb2YgYT09XCJmdW5jdGlvblwiP2EodCk6bnVsbH0sUz10PT50P25ldyBEYXRlKHQpOm5ldyBEYXRlLG5uPSh0LGEscik9PntpZihhKXtjb25zdCB1PSh0LmdldE1vbnRoKCkrMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLFwiMFwiKSxtPXQuZ2V0RGF0ZSgpLnRvU3RyaW5nKCkucGFkU3RhcnQoMixcIjBcIiksaD10LmdldEhvdXJzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLFwiMFwiKSxUPXQuZ2V0TWludXRlcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMixcIjBcIiksXz1yP3QuZ2V0U2Vjb25kcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMixcIjBcIik6XCIwMFwiO3JldHVybmAke3QuZ2V0RnVsbFllYXIoKX0tJHt1fS0ke219VCR7aH06JHtUfToke199LjAwMFpgfWNvbnN0IG49RGF0ZS5VVEModC5nZXRVVENGdWxsWWVhcigpLHQuZ2V0VVRDTW9udGgoKSx0LmdldFVUQ0RhdGUoKSx0LmdldFVUQ0hvdXJzKCksdC5nZXRVVENNaW51dGVzKCksdC5nZXRVVENTZWNvbmRzKCkpO3JldHVybiBuZXcgRGF0ZShuKS50b0lTT1N0cmluZygpfSxNZT10PT57bGV0IGE9UyhKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHQpKSk7cmV0dXJuIGE9Yy5zZXRIb3VycyhhLDApLGE9Yy5zZXRNaW51dGVzKGEsMCksYT1jLnNldFNlY29uZHMoYSwwKSxhPWMuc2V0TWlsbGlzZWNvbmRzKGEsMCksYX0sQ2U9KHQsYSxyLG4pPT57bGV0IHU9dD9TKHQpOlMoKTtyZXR1cm4oYXx8YT09PTApJiYodT1jLnNldEhvdXJzKHUsK2EpKSwocnx8cj09PTApJiYodT1jLnNldE1pbnV0ZXModSwrcikpLChufHxuPT09MCkmJih1PWMuc2V0U2Vjb25kcyh1LCtuKSksYy5zZXRNaWxsaXNlY29uZHModSwwKX0sZ2U9KHQsYSk9PiF0fHwhYT8hMTpjLmlzQmVmb3JlKE1lKHQpLE1lKGEpKSxvZT0odCxhKT0+IXR8fCFhPyExOmMuaXNFcXVhbChNZSh0KSxNZShhKSksaGU9KHQsYSk9PiF0fHwhYT8hMTpjLmlzQWZ0ZXIoTWUodCksTWUoYSkpLEV0PSh0LGEscik9PnQmJnRbMF0mJnRbMV0/aGUocix0WzBdKSYmZ2Uocix0WzFdKTp0JiZ0WzBdJiZhP2hlKHIsdFswXSkmJmdlKHIsYSl8fGdlKHIsdFswXSkmJmhlKHIsYSk6ITEseGU9dD0+e2NvbnN0IGE9Yy5zZXQobmV3IERhdGUodCkse2RhdGU6MX0pO3JldHVybiBNZShhKX0sZXQ9KHQsYSxyKT0+YSYmKHJ8fHI9PT0wKT9PYmplY3QuZnJvbUVudHJpZXMoW1wiaG91cnNcIixcIm1pbnV0ZXNcIixcInNlY29uZHNcIl0ubWFwKG49Pm49PT1hP1tuLHJdOltuLGlzTmFOKCt0W25dKT92b2lkIDA6K3Rbbl1dKSk6e2hvdXJzOmlzTmFOKCt0LmhvdXJzKT92b2lkIDA6K3QuaG91cnMsbWludXRlczppc05hTigrdC5taW51dGVzKT92b2lkIDA6K3QubWludXRlcyxzZWNvbmRzOmlzTmFOKCt0LnNlY29uZHMpP3ZvaWQgMDordC5zZWNvbmRzfSxqZT10PT4oe2hvdXJzOmMuZ2V0SG91cnModCksbWludXRlczpjLmdldE1pbnV0ZXModCksc2Vjb25kczpjLmdldFNlY29uZHModCl9KSxMZT1lLnJlYWN0aXZlKHttZW51Rm9jdXNlZDohMSxzaGlmdEtleUluTWVudTohMX0pLFJ0PSgpPT57Y29uc3QgdD1uPT57TGUubWVudUZvY3VzZWQ9bn0sYT1uPT57TGUuc2hpZnRLZXlJbk1lbnUhPT1uJiYoTGUuc2hpZnRLZXlJbk1lbnU9bil9O3JldHVybntjb250cm9sOmUuY29tcHV0ZWQoKCk9Pih7c2hpZnRLZXlJbk1lbnU6TGUuc2hpZnRLZXlJbk1lbnUsbWVudUZvY3VzZWQ6TGUubWVudUZvY3VzZWR9KSksc2V0TWVudUZvY3VzZWQ6dCxzZXRTaGlmdEtleTphfX07ZnVuY3Rpb24gdHQodCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsXCJkZWZhdWx0XCIpP3QuZGVmYXVsdDp0fXZhciBfdD17ZXhwb3J0czp7fX07KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGEocil7cmV0dXJuIHImJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9fXQuZXhwb3J0cz1hLHQuZXhwb3J0cy5fX2VzTW9kdWxlPSEwLHQuZXhwb3J0cy5kZWZhdWx0PXQuZXhwb3J0c30pKF90KTt2YXIgYW49X3QuZXhwb3J0cyxudD17ZXhwb3J0czp7fX07KGZ1bmN0aW9uKHQsYSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksYS5kZWZhdWx0PXI7ZnVuY3Rpb24gcihuKXtpZihuPT09bnVsbHx8bj09PSEwfHxuPT09ITEpcmV0dXJuIE5hTjt2YXIgdT1OdW1iZXIobik7cmV0dXJuIGlzTmFOKHUpP3U6dTwwP01hdGguY2VpbCh1KTpNYXRoLmZsb29yKHUpfXQuZXhwb3J0cz1hLmRlZmF1bHR9KShudCxudC5leHBvcnRzKTt2YXIgcm49bnQuZXhwb3J0cztjb25zdCBsbj10dChybik7dmFyIGF0PXtleHBvcnRzOnt9fTsoZnVuY3Rpb24odCxhKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxhLmRlZmF1bHQ9cjtmdW5jdGlvbiByKG4pe3ZhciB1PW5ldyBEYXRlKERhdGUuVVRDKG4uZ2V0RnVsbFllYXIoKSxuLmdldE1vbnRoKCksbi5nZXREYXRlKCksbi5nZXRIb3VycygpLG4uZ2V0TWludXRlcygpLG4uZ2V0U2Vjb25kcygpLG4uZ2V0TWlsbGlzZWNvbmRzKCkpKTtyZXR1cm4gdS5zZXRVVENGdWxsWWVhcihuLmdldEZ1bGxZZWFyKCkpLG4uZ2V0VGltZSgpLXUuZ2V0VGltZSgpfXQuZXhwb3J0cz1hLmRlZmF1bHR9KShhdCxhdC5leHBvcnRzKTt2YXIgb249YXQuZXhwb3J0cztjb25zdCBPdD10dChvbik7ZnVuY3Rpb24gc24odCxhKXt2YXIgcj1mbihhKTtyZXR1cm4gci5mb3JtYXRUb1BhcnRzP2NuKHIsdCk6ZG4ocix0KX12YXIgdW49e3llYXI6MCxtb250aDoxLGRheToyLGhvdXI6MyxtaW51dGU6NCxzZWNvbmQ6NX07ZnVuY3Rpb24gY24odCxhKXt0cnl7Zm9yKHZhciByPXQuZm9ybWF0VG9QYXJ0cyhhKSxuPVtdLHU9MDt1PHIubGVuZ3RoO3UrKyl7dmFyIG09dW5bclt1XS50eXBlXTttPj0wJiYoblttXT1wYXJzZUludChyW3VdLnZhbHVlLDEwKSl9cmV0dXJuIG59Y2F0Y2goaCl7aWYoaCBpbnN0YW5jZW9mIFJhbmdlRXJyb3IpcmV0dXJuW05hTl07dGhyb3cgaH19ZnVuY3Rpb24gZG4odCxhKXt2YXIgcj10LmZvcm1hdChhKS5yZXBsYWNlKC9cXHUyMDBFL2csXCJcIiksbj0vKFxcZCspXFwvKFxcZCspXFwvKFxcZCspLD8gKFxcZCspOihcXGQrKTooXFxkKykvLmV4ZWMocik7cmV0dXJuW25bM10sblsxXSxuWzJdLG5bNF0sbls1XSxuWzZdXX12YXIgcnQ9e307ZnVuY3Rpb24gZm4odCl7aWYoIXJ0W3RdKXt2YXIgYT1uZXcgSW50bC5EYXRlVGltZUZvcm1hdChcImVuLVVTXCIse2hvdXIxMjohMSx0aW1lWm9uZTpcIkFtZXJpY2EvTmV3X1lvcmtcIix5ZWFyOlwibnVtZXJpY1wiLG1vbnRoOlwibnVtZXJpY1wiLGRheTpcIjItZGlnaXRcIixob3VyOlwiMi1kaWdpdFwiLG1pbnV0ZTpcIjItZGlnaXRcIixzZWNvbmQ6XCIyLWRpZ2l0XCJ9KS5mb3JtYXQobmV3IERhdGUoXCIyMDE0LTA2LTI1VDA0OjAwOjAwLjEyM1pcIikpLHI9YT09PVwiMDYvMjUvMjAxNCwgMDA6MDA6MDBcInx8YT09PVwi4oCOMDbigI4v4oCOMjXigI4v4oCOMjAxNOKAjiDigI4wMOKAjjrigI4wMOKAjjrigI4wMFwiO3J0W3RdPXI/bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoXCJlbi1VU1wiLHtob3VyMTI6ITEsdGltZVpvbmU6dCx5ZWFyOlwibnVtZXJpY1wiLG1vbnRoOlwibnVtZXJpY1wiLGRheTpcIjItZGlnaXRcIixob3VyOlwiMi1kaWdpdFwiLG1pbnV0ZTpcIjItZGlnaXRcIixzZWNvbmQ6XCIyLWRpZ2l0XCJ9KTpuZXcgSW50bC5EYXRlVGltZUZvcm1hdChcImVuLVVTXCIse2hvdXJDeWNsZTpcImgyM1wiLHRpbWVab25lOnQseWVhcjpcIm51bWVyaWNcIixtb250aDpcIm51bWVyaWNcIixkYXk6XCIyLWRpZ2l0XCIsaG91cjpcIjItZGlnaXRcIixtaW51dGU6XCIyLWRpZ2l0XCIsc2Vjb25kOlwiMi1kaWdpdFwifSl9cmV0dXJuIHJ0W3RdfWZ1bmN0aW9uIGx0KHQsYSxyLG4sdSxtLGgpe3ZhciBUPW5ldyBEYXRlKDApO3JldHVybiBULnNldFVUQ0Z1bGxZZWFyKHQsYSxyKSxULnNldFVUQ0hvdXJzKG4sdSxtLGgpLFR9dmFyIFl0PTM2ZTUsbW49NmU0LG90PXt0aW1lem9uZTovKFtaKy1dLiopJC8sdGltZXpvbmVaOi9eKFopJC8sdGltZXpvbmVISDovXihbKy1dXFxkezJ9KSQvLHRpbWV6b25lSEhNTTovXihbKy1dXFxkezJ9KTo/KFxcZHsyfSkkL307ZnVuY3Rpb24gc3QodCxhLHIpe3ZhciBuLHU7aWYoIXR8fChuPW90LnRpbWV6b25lWi5leGVjKHQpLG4pKXJldHVybiAwO3ZhciBtO2lmKG49b3QudGltZXpvbmVISC5leGVjKHQpLG4pcmV0dXJuIG09cGFyc2VJbnQoblsxXSwxMCksSXQobSk/LShtKll0KTpOYU47aWYobj1vdC50aW1lem9uZUhITU0uZXhlYyh0KSxuKXttPXBhcnNlSW50KG5bMV0sMTApO3ZhciBoPXBhcnNlSW50KG5bMl0sMTApO3JldHVybiBJdChtLGgpPyh1PU1hdGguYWJzKG0pKll0K2gqbW4sbT4wPy11OnUpOk5hTn1pZihnbih0KSl7YT1uZXcgRGF0ZShhfHxEYXRlLm5vdygpKTt2YXIgVD1yP2E6eW4oYSksXz1pdChULHQpLE49cj9fOnBuKGEsXyx0KTtyZXR1cm4tTn1yZXR1cm4gTmFOfWZ1bmN0aW9uIHluKHQpe3JldHVybiBsdCh0LmdldEZ1bGxZZWFyKCksdC5nZXRNb250aCgpLHQuZ2V0RGF0ZSgpLHQuZ2V0SG91cnMoKSx0LmdldE1pbnV0ZXMoKSx0LmdldFNlY29uZHMoKSx0LmdldE1pbGxpc2Vjb25kcygpKX1mdW5jdGlvbiBpdCh0LGEpe3ZhciByPXNuKHQsYSksbj1sdChyWzBdLHJbMV0tMSxyWzJdLHJbM10lMjQscls0XSxyWzVdLDApLmdldFRpbWUoKSx1PXQuZ2V0VGltZSgpLG09dSUxZTM7cmV0dXJuIHUtPW0+PTA/bToxZTMrbSxuLXV9ZnVuY3Rpb24gcG4odCxhLHIpe3ZhciBuPXQuZ2V0VGltZSgpLHU9bi1hLG09aXQobmV3IERhdGUodSkscik7aWYoYT09PW0pcmV0dXJuIGE7dS09bS1hO3ZhciBoPWl0KG5ldyBEYXRlKHUpLHIpO3JldHVybiBtPT09aD9tOk1hdGgubWF4KG0saCl9ZnVuY3Rpb24gSXQodCxhKXtyZXR1cm4tMjM8PXQmJnQ8PTIzJiYoYT09bnVsbHx8MDw9YSYmYTw9NTkpfXZhciB4dD17fTtmdW5jdGlvbiBnbih0KXtpZih4dFt0XSlyZXR1cm4hMDt0cnl7cmV0dXJuIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHZvaWQgMCx7dGltZVpvbmU6dH0pLHh0W3RdPSEwLCEwfWNhdGNoe3JldHVybiExfX12YXIgaG49LyhafFsrLV1cXGR7Mn0oPzo6P1xcZHsyfSk/fCBVVEN8IFthLXpBLVpdK1xcL1thLXpBLVpfXSsoPzpcXC9bYS16QS1aX10rKT8pJC87Y29uc3QgTHQ9aG47dmFyIHV0PTM2ZTUsenQ9NmU0LGtuPTIsa2U9e2RhdGVUaW1lUGF0dGVybjovXihbMC05VystXSspKFR8ICkoLiopLyxkYXRlUGF0dGVybjovXihbMC05VystXSspKC4qKS8scGxhaW5UaW1lOi86LyxZWTovXihcXGR7Mn0pJC8sWVlZOlsvXihbKy1dXFxkezJ9KSQvLC9eKFsrLV1cXGR7M30pJC8sL14oWystXVxcZHs0fSkkL10sWVlZWTovXihcXGR7NH0pLyxZWVlZWTpbL14oWystXVxcZHs0fSkvLC9eKFsrLV1cXGR7NX0pLywvXihbKy1dXFxkezZ9KS9dLE1NOi9eLShcXGR7Mn0pJC8sREREOi9eLT8oXFxkezN9KSQvLE1NREQ6L14tPyhcXGR7Mn0pLT8oXFxkezJ9KSQvLFd3dzovXi0/VyhcXGR7Mn0pJC8sV3d3RDovXi0/VyhcXGR7Mn0pLT8oXFxkezF9KSQvLEhIOi9eKFxcZHsyfShbLixdXFxkKik/KSQvLEhITU06L14oXFxkezJ9KTo/KFxcZHsyfShbLixdXFxkKik/KSQvLEhITU1TUzovXihcXGR7Mn0pOj8oXFxkezJ9KTo/KFxcZHsyfShbLixdXFxkKik/KSQvLHRpbWVab25lOkx0fTtmdW5jdGlvbiBjdCh0LGEpe2lmKGFyZ3VtZW50cy5sZW5ndGg8MSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiMSBhcmd1bWVudCByZXF1aXJlZCwgYnV0IG9ubHkgXCIrYXJndW1lbnRzLmxlbmd0aCtcIiBwcmVzZW50XCIpO2lmKHQ9PT1udWxsKXJldHVybiBuZXcgRGF0ZShOYU4pO3ZhciByPWF8fHt9LG49ci5hZGRpdGlvbmFsRGlnaXRzPT1udWxsP2tuOmxuKHIuYWRkaXRpb25hbERpZ2l0cyk7aWYobiE9PTImJm4hPT0xJiZuIT09MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcImFkZGl0aW9uYWxEaWdpdHMgbXVzdCBiZSAwLCAxIG9yIDJcIik7aWYodCBpbnN0YW5jZW9mIERhdGV8fHR5cGVvZiB0PT1cIm9iamVjdFwiJiZPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCk9PT1cIltvYmplY3QgRGF0ZV1cIilyZXR1cm4gbmV3IERhdGUodC5nZXRUaW1lKCkpO2lmKHR5cGVvZiB0PT1cIm51bWJlclwifHxPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCk9PT1cIltvYmplY3QgTnVtYmVyXVwiKXJldHVybiBuZXcgRGF0ZSh0KTtpZighKHR5cGVvZiB0PT1cInN0cmluZ1wifHxPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCk9PT1cIltvYmplY3QgU3RyaW5nXVwiKSlyZXR1cm4gbmV3IERhdGUoTmFOKTt2YXIgdT13bih0KSxtPWJuKHUuZGF0ZSxuKSxoPW0ueWVhcixUPW0ucmVzdERhdGVTdHJpbmcsXz1EbihULGgpO2lmKGlzTmFOKF8pKXJldHVybiBuZXcgRGF0ZShOYU4pO2lmKF8pe3ZhciBOPV8uZ2V0VGltZSgpLFk9MCx2O2lmKHUudGltZSYmKFk9Q24odS50aW1lKSxpc05hTihZKSkpcmV0dXJuIG5ldyBEYXRlKE5hTik7aWYodS50aW1lWm9uZXx8ci50aW1lWm9uZSl7aWYodj1zdCh1LnRpbWVab25lfHxyLnRpbWVab25lLG5ldyBEYXRlKE4rWSkpLGlzTmFOKHYpKXJldHVybiBuZXcgRGF0ZShOYU4pfWVsc2Ugdj1PdChuZXcgRGF0ZShOK1kpKSx2PU90KG5ldyBEYXRlKE4rWSt2KSk7cmV0dXJuIG5ldyBEYXRlKE4rWSt2KX1lbHNlIHJldHVybiBuZXcgRGF0ZShOYU4pfWZ1bmN0aW9uIHduKHQpe3ZhciBhPXt9LHI9a2UuZGF0ZVRpbWVQYXR0ZXJuLmV4ZWModCksbjtpZihyPyhhLmRhdGU9clsxXSxuPXJbM10pOihyPWtlLmRhdGVQYXR0ZXJuLmV4ZWModCkscj8oYS5kYXRlPXJbMV0sbj1yWzJdKTooYS5kYXRlPW51bGwsbj10KSksbil7dmFyIHU9a2UudGltZVpvbmUuZXhlYyhuKTt1PyhhLnRpbWU9bi5yZXBsYWNlKHVbMV0sXCJcIiksYS50aW1lWm9uZT11WzFdLnRyaW0oKSk6YS50aW1lPW59cmV0dXJuIGF9ZnVuY3Rpb24gYm4odCxhKXt2YXIgcj1rZS5ZWVlbYV0sbj1rZS5ZWVlZWVthXSx1O2lmKHU9a2UuWVlZWS5leGVjKHQpfHxuLmV4ZWModCksdSl7dmFyIG09dVsxXTtyZXR1cm57eWVhcjpwYXJzZUludChtLDEwKSxyZXN0RGF0ZVN0cmluZzp0LnNsaWNlKG0ubGVuZ3RoKX19aWYodT1rZS5ZWS5leGVjKHQpfHxyLmV4ZWModCksdSl7dmFyIGg9dVsxXTtyZXR1cm57eWVhcjpwYXJzZUludChoLDEwKSoxMDAscmVzdERhdGVTdHJpbmc6dC5zbGljZShoLmxlbmd0aCl9fXJldHVybnt5ZWFyOm51bGx9fWZ1bmN0aW9uIERuKHQsYSl7aWYoYT09PW51bGwpcmV0dXJuIG51bGw7dmFyIHIsbix1LG07aWYodC5sZW5ndGg9PT0wKXJldHVybiBuPW5ldyBEYXRlKDApLG4uc2V0VVRDRnVsbFllYXIoYSksbjtpZihyPWtlLk1NLmV4ZWModCkscilyZXR1cm4gbj1uZXcgRGF0ZSgwKSx1PXBhcnNlSW50KHJbMV0sMTApLTEsV3QoYSx1KT8obi5zZXRVVENGdWxsWWVhcihhLHUpLG4pOm5ldyBEYXRlKE5hTik7aWYocj1rZS5EREQuZXhlYyh0KSxyKXtuPW5ldyBEYXRlKDApO3ZhciBoPXBhcnNlSW50KHJbMV0sMTApO3JldHVybiBTbihhLGgpPyhuLnNldFVUQ0Z1bGxZZWFyKGEsMCxoKSxuKTpuZXcgRGF0ZShOYU4pfWlmKHI9a2UuTU1ERC5leGVjKHQpLHIpe249bmV3IERhdGUoMCksdT1wYXJzZUludChyWzFdLDEwKS0xO3ZhciBUPXBhcnNlSW50KHJbMl0sMTApO3JldHVybiBXdChhLHUsVCk/KG4uc2V0VVRDRnVsbFllYXIoYSx1LFQpLG4pOm5ldyBEYXRlKE5hTil9aWYocj1rZS5Xd3cuZXhlYyh0KSxyKXJldHVybiBtPXBhcnNlSW50KHJbMV0sMTApLTEsSHQoYSxtKT9LdChhLG0pOm5ldyBEYXRlKE5hTik7aWYocj1rZS5Xd3dELmV4ZWModCkscil7bT1wYXJzZUludChyWzFdLDEwKS0xO3ZhciBfPXBhcnNlSW50KHJbMl0sMTApLTE7cmV0dXJuIEh0KGEsbSxfKT9LdChhLG0sXyk6bmV3IERhdGUoTmFOKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBDbih0KXt2YXIgYSxyLG47aWYoYT1rZS5ISC5leGVjKHQpLGEpcmV0dXJuIHI9cGFyc2VGbG9hdChhWzFdLnJlcGxhY2UoXCIsXCIsXCIuXCIpKSxkdChyKT9yJTI0KnV0Ok5hTjtpZihhPWtlLkhITU0uZXhlYyh0KSxhKXJldHVybiByPXBhcnNlSW50KGFbMV0sMTApLG49cGFyc2VGbG9hdChhWzJdLnJlcGxhY2UoXCIsXCIsXCIuXCIpKSxkdChyLG4pP3IlMjQqdXQrbip6dDpOYU47aWYoYT1rZS5ISE1NU1MuZXhlYyh0KSxhKXtyPXBhcnNlSW50KGFbMV0sMTApLG49cGFyc2VJbnQoYVsyXSwxMCk7dmFyIHU9cGFyc2VGbG9hdChhWzNdLnJlcGxhY2UoXCIsXCIsXCIuXCIpKTtyZXR1cm4gZHQocixuLHUpP3IlMjQqdXQrbip6dCt1KjFlMzpOYU59cmV0dXJuIG51bGx9ZnVuY3Rpb24gS3QodCxhLHIpe2E9YXx8MCxyPXJ8fDA7dmFyIG49bmV3IERhdGUoMCk7bi5zZXRVVENGdWxsWWVhcih0LDAsNCk7dmFyIHU9bi5nZXRVVENEYXkoKXx8NyxtPWEqNytyKzEtdTtyZXR1cm4gbi5zZXRVVENEYXRlKG4uZ2V0VVRDRGF0ZSgpK20pLG59dmFyIE1uPVszMSwyOCwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV0sJG49WzMxLDI5LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXTtmdW5jdGlvbiBVdCh0KXtyZXR1cm4gdCU0MDA9PT0wfHx0JTQ9PT0wJiZ0JTEwMCE9PTB9ZnVuY3Rpb24gV3QodCxhLHIpe2lmKGE8MHx8YT4xMSlyZXR1cm4hMTtpZihyIT1udWxsKXtpZihyPDEpcmV0dXJuITE7dmFyIG49VXQodCk7aWYobiYmcj4kblthXXx8IW4mJnI+TW5bYV0pcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gU24odCxhKXtpZihhPDEpcmV0dXJuITE7dmFyIHI9VXQodCk7cmV0dXJuIShyJiZhPjM2Nnx8IXImJmE+MzY1KX1mdW5jdGlvbiBIdCh0LGEscil7cmV0dXJuIShhPDB8fGE+NTJ8fHIhPW51bGwmJihyPDB8fHI+NikpfWZ1bmN0aW9uIGR0KHQsYSxyKXtyZXR1cm4hKHQhPW51bGwmJih0PDB8fHQ+PTI1KXx8YSE9bnVsbCYmKGE8MHx8YT49NjApfHxyIT1udWxsJiYocjwwfHxyPj02MCkpfXZhciBmdD17ZXhwb3J0czp7fX0sbXQ9e2V4cG9ydHM6e319OyhmdW5jdGlvbih0LGEpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGEuZGVmYXVsdD1yO2Z1bmN0aW9uIHIobix1KXtpZihuPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoXCJhc3NpZ24gcmVxdWlyZXMgdGhhdCBpbnB1dCBwYXJhbWV0ZXIgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkXCIpO2Zvcih2YXIgbSBpbiB1KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh1LG0pJiYoblttXT11W21dKTtyZXR1cm4gbn10LmV4cG9ydHM9YS5kZWZhdWx0fSkobXQsbXQuZXhwb3J0cyk7dmFyIEJuPW10LmV4cG9ydHM7KGZ1bmN0aW9uKHQsYSl7dmFyIHI9YW4uZGVmYXVsdDtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxhLmRlZmF1bHQ9dTt2YXIgbj1yKEJuKTtmdW5jdGlvbiB1KG0pe3JldHVybigwLG4uZGVmYXVsdCkoe30sbSl9dC5leHBvcnRzPWEuZGVmYXVsdH0pKGZ0LGZ0LmV4cG9ydHMpO3ZhciBObj1mdC5leHBvcnRzO2NvbnN0IHZuPXR0KE5uKTtmdW5jdGlvbiBUbih0LGEscil7dmFyIG49Y3QodCxyKSx1PXN0KGEsbiwhMCksbT1uZXcgRGF0ZShuLmdldFRpbWUoKS11KSxoPW5ldyBEYXRlKDApO3JldHVybiBoLnNldEZ1bGxZZWFyKG0uZ2V0VVRDRnVsbFllYXIoKSxtLmdldFVUQ01vbnRoKCksbS5nZXRVVENEYXRlKCkpLGguc2V0SG91cnMobS5nZXRVVENIb3VycygpLG0uZ2V0VVRDTWludXRlcygpLG0uZ2V0VVRDU2Vjb25kcygpLG0uZ2V0VVRDTWlsbGlzZWNvbmRzKCkpLGh9ZnVuY3Rpb24gUG4odCxhLHIpe2lmKHR5cGVvZiB0PT1cInN0cmluZ1wiJiYhdC5tYXRjaChMdCkpe3ZhciBuPXZuKHIpO3JldHVybiBuLnRpbWVab25lPWEsY3QodCxuKX12YXIgdT1jdCh0LHIpLG09bHQodS5nZXRGdWxsWWVhcigpLHUuZ2V0TW9udGgoKSx1LmdldERhdGUoKSx1LmdldEhvdXJzKCksdS5nZXRNaW51dGVzKCksdS5nZXRTZWNvbmRzKCksdS5nZXRNaWxsaXNlY29uZHMoKSkuZ2V0VGltZSgpLGg9c3QoYSxuZXcgRGF0ZShtKSk7cmV0dXJuIG5ldyBEYXRlKG0raCl9Y29uc3QgQW49KHQsYT0zKT0+e2NvbnN0IHI9W107Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKz1hKXIucHVzaChbdFtuXSx0W24rMV0sdFtuKzJdXSk7cmV0dXJuIHJ9LFZuPSh0LGEpPT57Y29uc3Qgcj1bMSwyLDMsNCw1LDYsN10ubWFwKG09Pm5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHQse3dlZWtkYXk6XCJzaG9ydFwiLHRpbWVab25lOlwiVVRDXCJ9KS5mb3JtYXQobmV3IERhdGUoYDIwMTctMDEtMCR7bX1UMDA6MDA6MDArMDA6MDBgKSkuc2xpY2UoMCwyKSksbj1yLnNsaWNlKDAsYSksdT1yLnNsaWNlKGErMSxyLmxlbmd0aCk7cmV0dXJuW3JbYV1dLmNvbmNhdCguLi51KS5jb25jYXQoLi4ubil9LEVuPSh0LGEpPT57Y29uc3Qgcj1bXTtmb3IobGV0IG49K3RbMF07bjw9K3RbMV07bisrKXIucHVzaCh7dmFsdWU6K24sdGV4dDpgJHtufWB9KTtyZXR1cm4gYT9yLnJldmVyc2UoKTpyfSxSbj0odCxhKT0+e2NvbnN0IHI9bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodCx7bW9udGg6YSx0aW1lWm9uZTpcIlVUQ1wifSk7cmV0dXJuWzEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyXS5tYXAodT0+e2NvbnN0IG09dTwxMD9gMCR7dX1gOnU7cmV0dXJuIG5ldyBEYXRlKGAyMDE3LSR7bX0tMDFUMDA6MDA6MDArMDA6MDBgKX0pLm1hcCgodSxtKT0+e2NvbnN0IGg9ci5mb3JtYXQodSk7cmV0dXJue3RleHQ6aC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStoLnN1YnN0cmluZygxKSx2YWx1ZTptfX0pfSxfbj10PT5bMTIsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTFdW3RdLGNlPXQ9Pntjb25zdCBhPWUudW5yZWYodCk7cmV0dXJuIGEhPW51bGwmJmEuJGVsP2E9PW51bGw/dm9pZCAwOmEuJGVsOmF9LE9uPXQ9Pk9iamVjdC5hc3NpZ24oe3R5cGU6XCJkb3RcIn0sdCksanQ9dD0+QXJyYXkuaXNBcnJheSh0KT8hIXRbMF0mJiEhdFsxXTohMSxHZT17cHJvcDp0PT5gXCIke3R9XCIgcHJvcCBtdXN0IGJlIGVuYWJsZWQhYCxkYXRlQXJyOnQ9PmBZb3UgbmVlZCB0byB1c2UgYXJyYXkgYXMgXCJtb2RlbC12YWx1ZVwiIGJpbmRpbmcgaW4gb3JkZXIgdG8gc3VwcG9ydCBcIiR7dH1cImB9LHllPXQ9PnQsR3Q9dD0+dD09PTA/dDohdHx8aXNOYU4oK3QpP251bGw6K3QscXQ9dD0+T2JqZWN0LmFzc2lnbih7bWVudUFwcGVhcjpcIlwiLG9wZW46XCJkcC1zbGlkZS1kb3duXCIsY2xvc2U6XCJkcC1zbGlkZS11cFwiLG5leHQ6XCJjYWxlbmRhci1uZXh0XCIscHJldmlvdXM6XCJjYWxlbmRhci1wcmV2XCIsdk5leHQ6XCJkcC1zbGlkZS11cFwiLHZQcmV2aW91czpcImRwLXNsaWRlLWRvd25cIn0sdCksWW49dD0+T2JqZWN0LmFzc2lnbih7dG9nZ2xlT3ZlcmxheTpcIlRvZ2dsZSBvdmVybGF5XCIsbWVudTpcIkRhdGVwaWNrZXIgbWVudVwiLGlucHV0OlwiRGF0ZXBpY2tlciBpbnB1dFwiLGNhbGVuZGFyV3JhcDpcIkNhbGVuZGFyIHdyYXBwZXJcIixjYWxlbmRhckRheXM6XCJDYWxlbmRhciBkYXlzXCIsb3BlblRpbWVQaWNrZXI6XCJPcGVuIHRpbWUgcGlja2VyXCIsY2xvc2VUaW1lUGlja2VyOlwiQ2xvc2UgdGltZSBQaWNrZXJcIixpbmNyZW1lbnRWYWx1ZTphPT5gSW5jcmVtZW50ICR7YX1gLGRlY3JlbWVudFZhbHVlOmE9PmBEZWNyZW1lbnQgJHthfWAsb3BlblRwT3ZlcmxheTphPT5gT3BlbiAke2F9IG92ZXJsYXlgLGFtUG1CdXR0b246XCJTd2l0Y2ggQU0vUE0gbW9kZVwiLG9wZW5ZZWFyc092ZXJsYXk6XCJPcGVuIHllYXJzIG92ZXJsYXlcIixvcGVuTW9udGhzT3ZlcmxheTpcIk9wZW4gbW9udGhzIG92ZXJsYXlcIixuZXh0TW9udGg6XCJOZXh0IG1vbnRoXCIscHJldk1vbnRoOlwiUHJldmlvdXMgbW9udGhcIixkYXk6KCk9PlwiXCJ9LHQpLEluPXQ9PnQ9PT1udWxsPzA6dHlwZW9mIHQ9PVwiYm9vbGVhblwiP3Q/MjowOit0Pj0yPyt0OjIseG49KHQsYSxyKT0+dHx8KHR5cGVvZiByPT1cInN0cmluZ1wiP3I6YSksTG49dD0+dHlwZW9mIHQ9PVwiYm9vbGVhblwiP3Q/cXQoe30pOiExOnF0KHQpLHpuPSgpPT4oe2VudGVyU3VibWl0OiEwLHRhYlN1Ym1pdDohMCxvcGVuTWVudTohMCxyYW5nZVNlcGFyYXRvcjpcIiAtIFwifSksS249dD0+T2JqZWN0LmFzc2lnbih7bW9udGhzOltdLHllYXJzOltdLHRpbWVzOntob3VyczpbXSxtaW51dGVzOltdLHNlY29uZHM6W119fSx0KSxVbj10PT5PYmplY3QuYXNzaWduKHtzaG93U2VsZWN0OiEwLHNob3dDYW5jZWw6ITAsc2hvd05vdzohMSxzaG93UHJldmlldzohMH0sdCksRGU9dD0+e2NvbnN0IGE9KCk9PntpZih0LnBhcnRpYWxSYW5nZSlyZXR1cm4gbnVsbDt0aHJvdyBuZXcgRXJyb3IoR2UucHJvcChcInBhcnRpYWwtcmFuZ2VcIikpfSxyPWUuY29tcHV0ZWQoKCk9Pih7YXJpYUxhYmVsczpZbih0LmFyaWFMYWJlbHMpLHRleHRJbnB1dE9wdGlvbnM6T2JqZWN0LmFzc2lnbih6bigpLHQudGV4dElucHV0T3B0aW9ucyksbXVsdGlDYWxlbmRhcnM6SW4odC5tdWx0aUNhbGVuZGFycykscHJldmlld0Zvcm1hdDp4bih0LnByZXZpZXdGb3JtYXQsdC5mb3JtYXQsbSgpKSxmaWx0ZXJzOktuKHQuZmlsdGVycyksdHJhbnNpdGlvbnM6TG4odC50cmFuc2l0aW9ucyksc3RhcnRUaW1lOmYoKSxhY3Rpb25Sb3c6VW4odC5hY3Rpb25Sb3cpfSkpLG49ZD0+e2lmKHQucmFuZ2UpcmV0dXJuIGQoKTt0aHJvdyBuZXcgRXJyb3IoR2UucHJvcChcInJhbmdlXCIpKX0sdT0oKT0+e2NvbnN0IGQ9dC5lbmFibGVTZWNvbmRzP1wiOnNzXCI6XCJcIjtyZXR1cm4gdC5pczI0P2BISDptbSR7ZH1gOmBoaDptbSR7ZH0gYWFgfSxtPSgpPT50LmZvcm1hdD90LmZvcm1hdDp0Lm1vbnRoUGlja2VyP1wiTU0veXl5eVwiOnQudGltZVBpY2tlcj91KCk6dC53ZWVrUGlja2VyP1wiTU0vZGQveXl5eVwiOnQueWVhclBpY2tlcj9cInl5eXlcIjp0LmVuYWJsZVRpbWVQaWNrZXI/YE1NL2RkL3l5eXksICR7dSgpfWA6XCJNTS9kZC95eXl5XCIsaD0oZCxvKT0+e2lmKHR5cGVvZiB0LmZvcm1hdD09XCJmdW5jdGlvblwiKXJldHVybiB0LmZvcm1hdChkKTtjb25zdCBsPW98fG0oKSxrPXQuZm9ybWF0TG9jYWxlP3tsb2NhbGU6dC5mb3JtYXRMb2NhbGV9OnZvaWQgMDtyZXR1cm4gQXJyYXkuaXNBcnJheShkKT9gJHtjLmZvcm1hdChkWzBdLGwsayl9JHt0Lm1vZGVsQXV0byYmIWRbMV0/XCJcIjpyLnZhbHVlLnRleHRJbnB1dE9wdGlvbnMucmFuZ2VTZXBhcmF0b3J8fFwiLVwifSR7ZFsxXT9jLmZvcm1hdChkWzFdLGwsayk6XCJcIn1gOmMuZm9ybWF0KGQsbCxrKX0sVD1kPT50LnRpbWV6b25lP1RuKGQsdC50aW1lem9uZSk6ZCxfPWQ9PnQudGltZXpvbmU/UG4oZCx0LnRpbWV6b25lKTpkLE49ZS5jb21wdXRlZCgoKT0+ZD0+e3ZhciBvO3JldHVybihvPXQuaGlkZU5hdmlnYXRpb24pPT1udWxsP3ZvaWQgMDpvLmluY2x1ZGVzKGQpfSksWT1kPT57Y29uc3Qgbz10Lm1heERhdGU/aGUoVChkKSxUKFModC5tYXhEYXRlKSkpOiExLGw9dC5taW5EYXRlP2dlKFQoZCksVChTKHQubWluRGF0ZSkpKTohMSxrPVIoZCx0LmRpc2FibGVkRGF0ZXMpLEI9ci52YWx1ZS5maWx0ZXJzLm1vbnRocy5tYXAoWj0+K1opLmluY2x1ZGVzKGMuZ2V0TW9udGgoZCkpLHE9dC5kaXNhYmxlZFdlZWtEYXlzLmxlbmd0aD90LmRpc2FibGVkV2Vla0RheXMuc29tZShaPT4rWj09PWMuZ2V0RGF5KGQpKTohMSxwPXQuYWxsb3dlZERhdGVzLmxlbmd0aD8hdC5hbGxvd2VkRGF0ZXMuc29tZShaPT5vZShUKFMoWikpLFQoZCkpKTohMSxzPWMuZ2V0WWVhcihkKSxPPXM8K3QueWVhclJhbmdlWzBdfHxzPit0LnllYXJSYW5nZVsxXTtyZXR1cm4hKG98fGx8fGt8fEJ8fE98fHF8fHApfSx2PWQ9Pntjb25zdCBvPXtob3VyczpjLmdldEhvdXJzKFMoKSksbWludXRlczpjLmdldE1pbnV0ZXMoUygpKSxzZWNvbmRzOnQuZW5hYmxlU2Vjb25kcz9jLmdldFNlY29uZHMoUygpKTowfTtyZXR1cm4gT2JqZWN0LmFzc2lnbihvLGQpfSxmPSgpPT50LnJhbmdlP3Quc3RhcnRUaW1lJiZBcnJheS5pc0FycmF5KHQuc3RhcnRUaW1lKT9bdih0LnN0YXJ0VGltZVswXSksdih0LnN0YXJ0VGltZVsxXSldOm51bGw6dC5zdGFydFRpbWUmJiFBcnJheS5pc0FycmF5KHQuc3RhcnRUaW1lKT92KHQuc3RhcnRUaW1lKTpudWxsLGI9ZD0+IVkoZCksRz1kPT5BcnJheS5pc0FycmF5KGQpP2MuaXNWYWxpZChkWzBdKSYmKGRbMV0/Yy5pc1ZhbGlkKGRbMV0pOiEwKTpkP2MuaXNWYWxpZChkKTohMSxMPWQ9PmQgaW5zdGFuY2VvZiBEYXRlP2Q6Yy5wYXJzZUlTTyhkKSx6PWQ9Pntjb25zdCBvPWMuc3RhcnRPZldlZWsoVChkKSx7d2Vla1N0YXJ0c09uOit0LndlZWtTdGFydH0pLGw9Yy5lbmRPZldlZWsoVChkKSx7d2Vla1N0YXJ0c09uOit0LndlZWtTdGFydH0pO3JldHVybltvLGxdfSxSPShkLG8pPT5BcnJheS5pc0FycmF5KG8pP28uc29tZShsPT5vZShUKFMobCkpLFQoZCkpKTpvKFMoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkKSkpKSxJPShkLG8sbCk9PntsZXQgaz1kP1MoZCk6UygpO3JldHVybihvfHxvPT09MCkmJihrPWMuc2V0TW9udGgoayxvKSksbCYmKGs9Yy5zZXRZZWFyKGssbCkpLGt9LFY9ZD0+Yy5zZXQoUygpLGplKGQpKSxVPWQ9PmMuc2V0KFMoKSx7aG91cnM6K2QuaG91cnN8fDAsbWludXRlczorZC5taW51dGVzfHwwLHNlY29uZHM6K2Quc2Vjb25kc3x8MH0pLEs9KGQsbyxsLGspPT57aWYoIWQpcmV0dXJuITA7aWYoayl7Y29uc3QgTT1sPT09XCJtYXhcIj9jLmlzQmVmb3JlKGQsbyk6Yy5pc0FmdGVyKGQsbyksQj17c2Vjb25kczowLG1pbGxpc2Vjb25kczowfTtyZXR1cm4gTXx8Yy5pc0VxdWFsKGMuc2V0KGQsQiksYy5zZXQobyxCKSl9cmV0dXJuIGw9PT1cIm1heFwiP2QuZ2V0VGltZSgpPD1vLmdldFRpbWUoKTpkLmdldFRpbWUoKT49by5nZXRUaW1lKCl9LEY9KCk9PiF0LmVuYWJsZVRpbWVQaWNrZXJ8fHQubW9udGhQaWNrZXJ8fHQueWVhclBpY2tlcnx8dC5pZ25vcmVUaW1lVmFsaWRhdGlvbix0ZT1kPT5BcnJheS5pc0FycmF5KGQpP1tkWzBdP1YoZFswXSk6bnVsbCxkWzFdP1YoZFsxXSk6bnVsbF06VihkKSxuZT1kPT57Y29uc3Qgbz10Lm1heFRpbWU/VSh0Lm1heFRpbWUpOlModC5tYXhEYXRlKTtyZXR1cm4gQXJyYXkuaXNBcnJheShkKT9LKGRbMF0sbyxcIm1heFwiLCEhdC5tYXhEYXRlKSYmSyhkWzFdLG8sXCJtYXhcIiwhIXQubWF4RGF0ZSk6SyhkLG8sXCJtYXhcIiwhIXQubWF4RGF0ZSl9LGFlPShkLG8pPT57Y29uc3QgbD10Lm1pblRpbWU/VSh0Lm1pblRpbWUpOlModC5taW5EYXRlKTtyZXR1cm4gQXJyYXkuaXNBcnJheShkKT9LKGRbMF0sbCxcIm1pblwiLCEhdC5taW5EYXRlKSYmSyhkWzFdLGwsXCJtaW5cIiwhIXQubWluRGF0ZSkmJm86SyhkLGwsXCJtaW5cIiwhIXQubWluRGF0ZSkmJm99LHJlPWQ9PntsZXQgbz0hMDtpZighZHx8RigpKXJldHVybiEwO2NvbnN0IGw9IXQubWluRGF0ZSYmIXQubWF4RGF0ZT90ZShkKTpkO2lmKCh0Lm1heFRpbWV8fHQubWF4RGF0ZSkmJihvPW5lKHllKGwpKSksKHQubWluVGltZXx8dC5taW5EYXRlKSYmKG89YWUoeWUobCksbykpLHQuZGlzYWJsZWRUaW1lcyl7Y29uc3Qgaz1BcnJheS5pc0FycmF5KGQpP1tqZShkWzBdKSxkWzFdP2plKGRbMV0pOnZvaWQgMF06amUoZCk7bz0hdC5kaXNhYmxlZFRpbWVzKGspfXJldHVybiBvfSxQPShkLG8pPT57Y29uc3QgbD1TKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZCkpKSxrPVtdO2ZvcihsZXQgTT0wO008NztNKyspe2NvbnN0IEI9Yy5hZGREYXlzKGwsTSkscT1jLmdldE1vbnRoKEIpIT09bztrLnB1c2goe3RleHQ6dC5oaWRlT2Zmc2V0RGF0ZXMmJnE/XCJcIjpCLmdldERhdGUoKSx2YWx1ZTpCLGN1cnJlbnQ6IXEsY2xhc3NEYXRhOnt9fSl9cmV0dXJuIGt9LEM9KGQsbyk9Pntjb25zdCBsPVtdLGs9UyhUKG5ldyBEYXRlKG8sZCkpKSxNPVMoVChuZXcgRGF0ZShvLGQrMSwwKSkpLEI9dC53ZWVrU3RhcnQscT1jLnN0YXJ0T2ZXZWVrKGsse3dlZWtTdGFydHNPbjpCfSkscD1zPT57Y29uc3QgTz1QKHMsZCk7aWYobC5wdXNoKHtkYXlzOk99KSwhbFtsLmxlbmd0aC0xXS5kYXlzLnNvbWUoWj0+b2UoTWUoWi52YWx1ZSksTWUoTSkpKSl7Y29uc3QgWj1jLmFkZERheXMocyw3KTtwKFopfX07aWYocChxKSx0LnNpeFdlZWtzJiZsLmxlbmd0aDw2KXtjb25zdCBzPTYtbC5sZW5ndGgsTz0oay5nZXREYXkoKSs3LUIpJTcsc2U9Ni0oTS5nZXREYXkoKSs3LUIpJTcsWyRlLE5lXT0oKCk9Pntzd2l0Y2godC5zaXhXZWVrcz09PSEwP1wiYXBwZW5kXCI6dC5zaXhXZWVrcyl7Y2FzZVwicHJlcGVuZFwiOnJldHVyblshMCwhMV07Y2FzZVwiY2VudGVyXCI6cmV0dXJuW089PTAsITBdO2Nhc2VcImZhaXJcIjpyZXR1cm5bTz09MHx8c2U+TywhMF07ZGVmYXVsdDpjYXNlXCJhcHBlbmRcIjpyZXR1cm5bITEsITFdfX0pKCk7Zm9yKGxldCBKPTE7Sjw9cztKKyspaWYoTmU/ISEoSiUyKT09JGU6JGUpe2NvbnN0IGJlPWxbMF0uZGF5c1swXSxtZT1QKGMuYWRkRGF5cyhiZS52YWx1ZSwtNyksYy5nZXRNb250aChrKSk7bC51bnNoaWZ0KHtkYXlzOm1lfSl9ZWxzZXtjb25zdCBiZT1sW2wubGVuZ3RoLTFdLG1lPWJlLmRheXNbYmUuZGF5cy5sZW5ndGgtMV0sVGU9UChjLmFkZERheXMobWUudmFsdWUsMSksYy5nZXRNb250aChrKSk7bC5wdXNoKHtkYXlzOlRlfSl9fXJldHVybiBsfSx5PShkLG8sbCk9PltjLnNldChTKGQpLHtkYXRlOjF9KSxjLnNldChTKCkse21vbnRoOm8seWVhcjpsLGRhdGU6MX0pXSxBPShkLG8pPT5nZSguLi55KHQubWluRGF0ZSxkLG8pKXx8b2UoLi4ueSh0Lm1pbkRhdGUsZCxvKSksRT0oZCxvKT0+aGUoLi4ueSh0Lm1heERhdGUsZCxvKSl8fG9lKC4uLnkodC5tYXhEYXRlLGQsbykpLCQ9KGQsbyxsKT0+e2xldCBrPSExO3JldHVybiB0Lm1heERhdGUmJmwmJkUoZCxvKSYmKGs9ITApLHQubWluRGF0ZSYmIWwmJkEoZCxvKSYmKGs9ITApLGt9O3JldHVybntjaGVja1BhcnRpYWxSYW5nZVZhbHVlOmEsY2hlY2tSYW5nZUVuYWJsZWQ6bixnZXRab25lZERhdGU6VCxnZXRab25lZFRvVXRjOl8sZm9ybWF0RGF0ZTpoLGdldERlZmF1bHRQYXR0ZXJuOm0sdmFsaWRhdGVEYXRlOlksZ2V0RGVmYXVsdFN0YXJ0VGltZTpmLGlzRGlzYWJsZWQ6Yixpc1ZhbGlkRGF0ZTpHLHNhbml0aXplRGF0ZTpMLGdldFdlZWtGcm9tRGF0ZTp6LG1hdGNoRGF0ZTpSLHNldERhdGVNb250aE9yWWVhcjpJLGlzVmFsaWRUaW1lOnJlLGdldENhbGVuZGFyRGF5czpDLHZhbGlkYXRlTW9udGhZZWFySW5SYW5nZTooZCxvLGwsayk9PntsZXQgTT0hMTtyZXR1cm4gaz90Lm1pbkRhdGUmJnQubWF4RGF0ZT9NPSQoZCxvLGwpOih0Lm1pbkRhdGUmJkEoZCxvKXx8dC5tYXhEYXRlJiZFKGQsbykpJiYoTT0hMCk6TT0hMCxNfSx2YWxpZGF0ZU1heERhdGU6RSx2YWxpZGF0ZU1pbkRhdGU6QSxhc3NpZ25EZWZhdWx0VGltZTp2LGRlZmF1bHRzOnIsaGlkZU5hdmlnYXRpb25CdXR0b25zOk59fSxpZT1lLnJlYWN0aXZlKHttb250aFllYXI6W10sY2FsZW5kYXI6W10sdGltZTpbXSxhY3Rpb25Sb3c6W10sc2VsZWN0aW9uR3JpZDpbXSx0aW1lUGlja2VyOnswOltdLDE6W119LG1vbnRoUGlja2VyOltdfSkseXQ9ZS5yZWYobnVsbCkscWU9ZS5yZWYoITEpLHB0PWUucmVmKCExKSxndD1lLnJlZighMSksaHQ9ZS5yZWYoITEpLHdlPWUucmVmKDApLHBlPWUucmVmKDApLEFlPSgpPT57Y29uc3QgdD1lLmNvbXB1dGVkKCgpPT5xZS52YWx1ZT9bLi4uaWUuc2VsZWN0aW9uR3JpZCxpZS5hY3Rpb25Sb3ddLmZpbHRlcihSPT5SLmxlbmd0aCk6cHQudmFsdWU/Wy4uLmllLnRpbWVQaWNrZXJbMF0sLi4uaWUudGltZVBpY2tlclsxXSxodC52YWx1ZT9bXTpbeXQudmFsdWVdLGllLmFjdGlvblJvd10uZmlsdGVyKFI9PlIubGVuZ3RoKTpndC52YWx1ZT9bLi4uaWUubW9udGhQaWNrZXIsaWUuYWN0aW9uUm93XTpbaWUubW9udGhZZWFyLC4uLmllLmNhbGVuZGFyLGllLnRpbWUsaWUuYWN0aW9uUm93XS5maWx0ZXIoUj0+Ui5sZW5ndGgpKSxhPVI9Pnt3ZS52YWx1ZT1SP3dlLnZhbHVlKzE6d2UudmFsdWUtMTtsZXQgST1udWxsO3QudmFsdWVbcGUudmFsdWVdJiYoST10LnZhbHVlW3BlLnZhbHVlXVt3ZS52YWx1ZV0pLEl8fCh3ZS52YWx1ZT1SP3dlLnZhbHVlLTE6d2UudmFsdWUrMSl9LHI9Uj0+e2lmKHBlLnZhbHVlPT09MCYmIVJ8fHBlLnZhbHVlPT09dC52YWx1ZS5sZW5ndGgmJlIpcmV0dXJuO3BlLnZhbHVlPVI/cGUudmFsdWUrMTpwZS52YWx1ZS0xLHQudmFsdWVbcGUudmFsdWVdP3QudmFsdWVbcGUudmFsdWVdJiYhdC52YWx1ZVtwZS52YWx1ZV1bd2UudmFsdWVdJiZ3ZS52YWx1ZSE9PTAmJih3ZS52YWx1ZT10LnZhbHVlW3BlLnZhbHVlXS5sZW5ndGgtMSk6cGUudmFsdWU9Uj9wZS52YWx1ZS0xOnBlLnZhbHVlKzF9LG49Uj0+e2xldCBJPW51bGw7dC52YWx1ZVtwZS52YWx1ZV0mJihJPXQudmFsdWVbcGUudmFsdWVdW3dlLnZhbHVlXSksST9JLmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiFxZS52YWx1ZX0pOndlLnZhbHVlPVI/d2UudmFsdWUtMTp3ZS52YWx1ZSsxfSx1PSgpPT57YSghMCksbighMCl9LG09KCk9PnthKCExKSxuKCExKX0saD0oKT0+e3IoITEpLG4oITApfSxUPSgpPT57cighMCksbighMCl9LF89KFIsSSk9PntpZVtJXT1SfSxOPShSLEkpPT57aWVbSV09Un0sWT0oKT0+e3dlLnZhbHVlPTAscGUudmFsdWU9MH07cmV0dXJue2J1aWxkTWF0cml4Ol8sYnVpbGRNdWx0aUxldmVsTWF0cml4Ok4sc2V0VGltZVBpY2tlckJhY2tSZWY6Uj0+e3l0LnZhbHVlPVJ9LHNldFNlbGVjdGlvbkdyaWQ6Uj0+e3FlLnZhbHVlPVIsWSgpLFJ8fChpZS5zZWxlY3Rpb25HcmlkPVtdKX0sc2V0VGltZVBpY2tlcjooUixJPSExKT0+e3B0LnZhbHVlPVIsaHQudmFsdWU9SSxZKCksUnx8KGllLnRpbWVQaWNrZXJbMF09W10saWUudGltZVBpY2tlclsxXT1bXSl9LHNldFRpbWVQaWNrZXJFbGVtZW50czooUixJPTApPT57aWUudGltZVBpY2tlcltJXT1SfSxhcnJvd1JpZ2h0OnUsYXJyb3dMZWZ0Om0sYXJyb3dVcDpoLGFycm93RG93bjpULGNsZWFyQXJyb3dOYXY6KCk9PntpZS5tb250aFllYXI9W10saWUuY2FsZW5kYXI9W10saWUudGltZT1bXSxpZS5hY3Rpb25Sb3c9W10saWUuc2VsZWN0aW9uR3JpZD1bXSxpZS50aW1lUGlja2VyWzBdPVtdLGllLnRpbWVQaWNrZXJbMV09W10scWUudmFsdWU9ITEscHQudmFsdWU9ITEsaHQudmFsdWU9ITEsZ3QudmFsdWU9ITEsWSgpLHl0LnZhbHVlPW51bGx9LHNldE1vbnRoUGlja2VyOlI9PntndC52YWx1ZT1SLFkoKX0scmVmU2V0czppZX19LFp0PXQ9PkFycmF5LmlzQXJyYXkodCksX2U9dD0+QXJyYXkuaXNBcnJheSh0KSxYdD10PT5BcnJheS5pc0FycmF5KHQpJiZ0Lmxlbmd0aD09PTIsV249KHQsYSxyLG4sdSk9Pntjb25zdHtnZXREZWZhdWx0U3RhcnRUaW1lOm0saXNEaXNhYmxlZDpoLHNhbml0aXplRGF0ZTpULGdldFdlZWtGcm9tRGF0ZTpfLHNldERhdGVNb250aE9yWWVhcjpOLHZhbGlkYXRlTW9udGhZZWFySW5SYW5nZTpZLGRlZmF1bHRzOnZ9PURlKHQpLGY9ZS5jb21wdXRlZCh7Z2V0OigpPT50LmludGVybmFsTW9kZWxWYWx1ZSxzZXQ6aT0+eyF0LnJlYWRvbmx5JiYhdC5kaXNhYmxlZCYmYShcInVwZGF0ZTppbnRlcm5hbC1tb2RlbC12YWx1ZVwiLGkpfX0pLGI9ZS5yZWYoW10pO2Uud2F0Y2goZiwoaSxEKT0+e3QucmFuZ2U/dGUoKTpjLmlzRXF1YWwoaSxEKXx8dGUoKX0pO2NvbnN0IEc9ZS50b1JlZih0LFwibXVsdGlDYWxlbmRhcnNcIik7ZS53YXRjaChHLCgpPT57ZWUoMCl9KTtjb25zdCBMPWUucmVmKFt7bW9udGg6Yy5nZXRNb250aChTKCkpLHllYXI6Yy5nZXRZZWFyKFMoKSl9XSksej1lLnJlYWN0aXZlKHtob3Vyczp0LnJhbmdlP1tjLmdldEhvdXJzKFMoKSksYy5nZXRIb3VycyhTKCkpXTpjLmdldEhvdXJzKFMoKSksbWludXRlczp0LnJhbmdlP1tjLmdldE1pbnV0ZXMoUygpKSxjLmdldE1pbnV0ZXMoUygpKV06Yy5nZXRNaW51dGVzKFMoKSksc2Vjb25kczp0LnJhbmdlP1swLDBdOjB9KSxSPWUuY29tcHV0ZWQoKCk9Pmk9PkwudmFsdWVbaV0/TC52YWx1ZVtpXS5tb250aDowKSxJPWUuY29tcHV0ZWQoKCk9Pmk9PkwudmFsdWVbaV0/TC52YWx1ZVtpXS55ZWFyOjApLFY9ZS5jb21wdXRlZCgoKT0+dC5mbG93JiZ0LmZsb3cubGVuZ3RoJiYhdC5wYXJ0aWFsRmxvdz91LnZhbHVlPT09dC5mbG93Lmxlbmd0aDohMCksVT0oaSxELFcpPT57dmFyIFEsZGU7TC52YWx1ZVtpXXx8KEwudmFsdWVbaV09e21vbnRoOjAseWVhcjowfSksTC52YWx1ZVtpXS5tb250aD1EPT09bnVsbD8oUT1MLnZhbHVlW2ldKT09bnVsbD92b2lkIDA6US5tb250aDpELEwudmFsdWVbaV0ueWVhcj1XPT09bnVsbD8oZGU9TC52YWx1ZVtpXSk9PW51bGw/dm9pZCAwOmRlLnllYXI6V30sSz0oaSxEKT0+e3pbaV09RH0sRj0oKT0+e3Quc3RhcnREYXRlJiYoVSgwLGMuZ2V0TW9udGgoUyh0LnN0YXJ0RGF0ZSkpLGMuZ2V0WWVhcihTKHQuc3RhcnREYXRlKSkpLHYudmFsdWUubXVsdGlDYWxlbmRhcnMmJmVlKDApKX07ZS5vbk1vdW50ZWQoKCk9PntmLnZhbHVlfHwoRigpLHYudmFsdWUuc3RhcnRUaW1lJiZnKCkpLHRlKCEwKSx0LmZvY3VzU3RhcnREYXRlJiZ0LnN0YXJ0RGF0ZSYmRigpfSk7Y29uc3QgdGU9KGk9ITEpPT57aWYoZi52YWx1ZSlyZXR1cm4gQXJyYXkuaXNBcnJheShmLnZhbHVlKT8oYi52YWx1ZT1mLnZhbHVlLEMoaSkpOmFlKGYudmFsdWUsaSk7aWYodC50aW1lUGlja2VyKXJldHVybiB5KCk7aWYodC5tb250aFBpY2tlciYmIXQucmFuZ2UpcmV0dXJuIEEoKTtpZih0LnllYXJQaWNrZXImJiF0LnJhbmdlKXJldHVybiBFKCk7aWYodi52YWx1ZS5tdWx0aUNhbGVuZGFycyYmaSYmIXQuc3RhcnREYXRlKXJldHVybiBuZShTKCksaSl9LG5lPShpLEQ9ITEpPT57aWYoKCF2LnZhbHVlLm11bHRpQ2FsZW5kYXJzfHwhdC5tdWx0aVN0YXRpY3x8RCkmJlUoMCxjLmdldE1vbnRoKGkpLGMuZ2V0WWVhcihpKSksdi52YWx1ZS5tdWx0aUNhbGVuZGFycylmb3IobGV0IFc9MTtXPHYudmFsdWUubXVsdGlDYWxlbmRhcnM7VysrKXtjb25zdCBRPWMuc2V0KFMoKSx7bW9udGg6Ui52YWx1ZShXLTEpLHllYXI6SS52YWx1ZShXLTEpfSksZGU9Yy5hZGQoUSx7bW9udGhzOjF9KTtMLnZhbHVlW1ddPXttb250aDpjLmdldE1vbnRoKGRlKSx5ZWFyOmMuZ2V0WWVhcihkZSl9fX0sYWU9KGksRCk9PntuZShpKSxLKFwiaG91cnNcIixjLmdldEhvdXJzKGkpKSxLKFwibWludXRlc1wiLGMuZ2V0TWludXRlcyhpKSksSyhcInNlY29uZHNcIixjLmdldFNlY29uZHMoaSkpLHYudmFsdWUubXVsdGlDYWxlbmRhcnMmJkQmJm8oKX0scmU9KGksRCk9PntpWzFdJiZ0LnNob3dMYXN0SW5SYW5nZT9uZShpWzFdLEQpOm5lKGlbMF0sRCk7Y29uc3QgVz0oUSxkZSk9PltRKGlbMF0pLGlbMV0/UShpWzFdKTp6W2RlXVsxXV07SyhcImhvdXJzXCIsVyhjLmdldEhvdXJzLFwiaG91cnNcIikpLEsoXCJtaW51dGVzXCIsVyhjLmdldE1pbnV0ZXMsXCJtaW51dGVzXCIpKSxLKFwic2Vjb25kc1wiLFcoYy5nZXRTZWNvbmRzLFwic2Vjb25kc1wiKSl9LFA9KGksRCk9PntpZigodC5yYW5nZXx8dC53ZWVrUGlja2VyKSYmIXQubXVsdGlEYXRlcylyZXR1cm4gcmUoaSxEKTtpZih0Lm11bHRpRGF0ZXMpe2NvbnN0IFc9aVtpLmxlbmd0aC0xXTtyZXR1cm4gYWUoVyxEKX19LEM9aT0+e2NvbnN0IEQ9Zi52YWx1ZTtQKEQsaSksdi52YWx1ZS5tdWx0aUNhbGVuZGFycyYmdC5tdWx0aUNhbGVuZGFyc1NvbG8mJm8oKX0seT0oKT0+e2lmKGcoKSwhdC5yYW5nZSlmLnZhbHVlPUNlKFMoKSx6LmhvdXJzLHoubWludXRlcywkKCkpO2Vsc2V7Y29uc3QgaT16LmhvdXJzLEQ9ei5taW51dGVzO2YudmFsdWU9W0NlKFMoKSxpWzBdLERbMF0sJCgpKSxDZShTKCksaVsxXSxEWzFdLCQoITEpKV19fSxBPSgpPT57dC5tdWx0aURhdGVzP2YudmFsdWU9W04oUygpLFIudmFsdWUoMCksSS52YWx1ZSgwKSldOmYudmFsdWU9TihTKCksUi52YWx1ZSgwKSxJLnZhbHVlKDApKX0sRT0oKT0+e2YudmFsdWU9UygpfSwkPShpPSEwKT0+dC5lbmFibGVTZWNvbmRzP0FycmF5LmlzQXJyYXkoei5zZWNvbmRzKT9pP3ouc2Vjb25kc1swXTp6LnNlY29uZHNbMV06ei5zZWNvbmRzOjAsZz0oKT0+e2NvbnN0IGk9bSgpO2lmKGkpe2NvbnN0IEQ9QXJyYXkuaXNBcnJheShpKSxXPUQ/WytpWzBdLmhvdXJzLCtpWzFdLmhvdXJzXToraS5ob3VycyxRPUQ/WytpWzBdLm1pbnV0ZXMsK2lbMV0ubWludXRlc106K2kubWludXRlcyxkZT1EP1sraVswXS5zZWNvbmRzLCtpWzFdLnNlY29uZHNdOitpLnNlY29uZHM7SyhcImhvdXJzXCIsVyksSyhcIm1pbnV0ZXNcIixRKSx0LmVuYWJsZVNlY29uZHMmJksoXCJzZWNvbmRzXCIsZGUpfX0sZD0oKT0+QXJyYXkuaXNBcnJheShmLnZhbHVlKSYmZi52YWx1ZS5sZW5ndGg/Zi52YWx1ZVtmLnZhbHVlLmxlbmd0aC0xXTpudWxsLG89KCk9PntpZihBcnJheS5pc0FycmF5KGYudmFsdWUpJiZmLnZhbHVlLmxlbmd0aD09PTIpe2NvbnN0IGk9UyhTKGYudmFsdWVbMV0/Zi52YWx1ZVsxXTpjLmFkZE1vbnRocyhmLnZhbHVlWzBdLDEpKSksW0QsV109W2MuZ2V0TW9udGgoZi52YWx1ZVswXSksYy5nZXRZZWFyKGYudmFsdWVbMF0pXSxbUSxkZV09W2MuZ2V0TW9udGgoZi52YWx1ZVsxXSksYy5nZXRZZWFyKGYudmFsdWVbMV0pXTsoRCE9PVF8fEQ9PT1RJiZXIT09ZGUpJiZ0Lm11bHRpQ2FsZW5kYXJzU29sbyYmVSgxLGMuZ2V0TW9udGgoaSksYy5nZXRZZWFyKGkpKX1lbHNlIGYudmFsdWUmJiFBcnJheS5pc0FycmF5KGYudmFsdWUpJiZVKDAsYy5nZXRNb250aChmLnZhbHVlKSxjLmdldFllYXIoZi52YWx1ZSkpfSxsPWk9Pntjb25zdCBEPWMuYWRkTW9udGhzKGksMSk7cmV0dXJue21vbnRoOmMuZ2V0TW9udGgoRCkseWVhcjpjLmdldFllYXIoRCl9fSxrPWk9Pntjb25zdCBEPWMuZ2V0TW9udGgoUyhpKSksVz1jLmdldFllYXIoUyhpKSk7aWYoVSgwLEQsVyksdi52YWx1ZS5tdWx0aUNhbGVuZGFycz4wKWZvcihsZXQgUT0xO1E8di52YWx1ZS5tdWx0aUNhbGVuZGFycztRKyspe2NvbnN0IGRlPWwoYy5zZXQoUyhpKSx7eWVhcjpSLnZhbHVlKFEtMSksbW9udGg6SS52YWx1ZShRLTEpfSkpO1UoUSxkZS5tb250aCxkZS55ZWFyKX19LE09aT0+e2lmKGYudmFsdWUmJkFycmF5LmlzQXJyYXkoZi52YWx1ZSkpaWYoZi52YWx1ZS5zb21lKEQ9Pm9lKGksRCkpKXtjb25zdCBEPWYudmFsdWUuZmlsdGVyKFc9PiFvZShXLGkpKTtmLnZhbHVlPUQubGVuZ3RoP0Q6bnVsbH1lbHNlKHQubXVsdGlEYXRlc0xpbWl0JiYrdC5tdWx0aURhdGVzTGltaXQ+Zi52YWx1ZS5sZW5ndGh8fCF0Lm11bHRpRGF0ZXNMaW1pdCkmJmYudmFsdWUucHVzaChpKTtlbHNlIGYudmFsdWU9W2ldfSxCPShpLEQpPT57Y29uc3QgVz1oZShpLEQpP0Q6aSxRPWhlKEQsaSk/RDppO3JldHVybiBjLmVhY2hEYXlPZkludGVydmFsKHtzdGFydDpXLGVuZDpRfSl9LHE9KGksRD0wKT0+e2lmKEFycmF5LmlzQXJyYXkoZi52YWx1ZSkmJmYudmFsdWVbRF0pe2NvbnN0IFc9Yy5kaWZmZXJlbmNlSW5DYWxlbmRhckRheXMoaSxmLnZhbHVlW0RdKSxRPUIoZi52YWx1ZVtEXSxpKSxkZT1RLmxlbmd0aD09PTE/MDpRLmZpbHRlcihSZT0+aChSZSkpLmxlbmd0aCxTZT1NYXRoLmFicyhXKS1kZTtpZih0Lm1pblJhbmdlJiZ0Lm1heFJhbmdlKXJldHVybiBTZT49K3QubWluUmFuZ2UmJlNlPD0rdC5tYXhSYW5nZTtpZih0Lm1pblJhbmdlKXJldHVybiBTZT49K3QubWluUmFuZ2U7aWYodC5tYXhSYW5nZSlyZXR1cm4gU2U8PSt0Lm1heFJhbmdlfXJldHVybiEwfSxwPWk9PkFycmF5LmlzQXJyYXkoZi52YWx1ZSkmJmYudmFsdWUubGVuZ3RoPT09Mj90LmZpeGVkU3RhcnQmJihoZShpLGYudmFsdWVbMF0pfHxvZShpLGYudmFsdWVbMF0pKT9bZi52YWx1ZVswXSxpXTp0LmZpeGVkRW5kJiYoZ2UoaSxmLnZhbHVlWzFdKXx8b2UoaSxmLnZhbHVlWzFdKSk/W2ksZi52YWx1ZVsxXV06KGEoXCJpbnZhbGlkLWZpeGVkLXJhbmdlXCIsaSksZi52YWx1ZSk6W10scz0oKT0+e3QuYXV0b0FwcGx5JiZWLnZhbHVlJiZhKFwiYXV0by1hcHBseVwiLHQucGFydGlhbEZsb3cpfSxPPSgpPT57dC5hdXRvQXBwbHkmJmEoXCJzZWxlY3QtZGF0ZVwiKX0sWj1pPT4hYy5lYWNoRGF5T2ZJbnRlcnZhbCh7c3RhcnQ6aVswXSxlbmQ6aVsxXX0pLnNvbWUoVz0+aChXKSksc2U9aT0+KGYudmFsdWU9XyhTKGkudmFsdWUpKSxzKCkpLCRlPWk9Pntjb25zdCBEPUNlKFMoaS52YWx1ZSksei5ob3Vycyx6Lm1pbnV0ZXMsJCgpKTt0Lm11bHRpRGF0ZXM/TShEKTpmLnZhbHVlPUQscigpLHMoKX0sTmU9KCk9PntiLnZhbHVlPWYudmFsdWU/Zi52YWx1ZS5zbGljZSgpOltdLGIudmFsdWUubGVuZ3RoPT09MiYmISh0LmZpeGVkU3RhcnR8fHQuZml4ZWRFbmQpJiYoYi52YWx1ZT1bXSl9LEo9KGksRCk9Pntjb25zdCBXPVtTKGkudmFsdWUpLGMuYWRkRGF5cyhTKGkudmFsdWUpLCt0LmF1dG9SYW5nZSldO1ooVykmJihEJiZrKGkudmFsdWUpLGIudmFsdWU9Vyl9LHZlPWk9PntiZShpLnZhbHVlKXx8IXEoaS52YWx1ZSx0LmZpeGVkU3RhcnQ/MDoxKXx8KGIudmFsdWU9cChTKGkudmFsdWUpKSl9LGJlPWk9PnQubm9EaXNhYmxlZFJhbmdlP0IoYi52YWx1ZVswXSxpKS5zb21lKFc9PmgoVykpOiExLG1lPShpLEQpPT57aWYoTmUoKSx0LmF1dG9SYW5nZSlyZXR1cm4gSihpLEQpO2lmKHQuZml4ZWRTdGFydHx8dC5maXhlZEVuZClyZXR1cm4gdmUoaSk7Yi52YWx1ZVswXT9xKFMoaS52YWx1ZSkpJiYhYmUoaS52YWx1ZSkmJihnZShTKGkudmFsdWUpLFMoYi52YWx1ZVswXSkpPyhiLnZhbHVlLnVuc2hpZnQoUyhpLnZhbHVlKSksYShcInJhbmdlLWVuZFwiLGIudmFsdWVbMF0pKTooYi52YWx1ZVsxXT1TKGkudmFsdWUpLGEoXCJyYW5nZS1lbmRcIixiLnZhbHVlWzFdKSkpOihiLnZhbHVlWzBdPVMoaS52YWx1ZSksYShcInJhbmdlLXN0YXJ0XCIsYi52YWx1ZVswXSkpfSxUZT1pPT57Yi52YWx1ZVtpXT1DZShiLnZhbHVlW2ldLHouaG91cnNbaV0sei5taW51dGVzW2ldLCQoaSE9PTEpKX0sS2U9KCk9PntiLnZhbHVlLmxlbmd0aCYmKGIudmFsdWVbMF0mJiFiLnZhbHVlWzFdP1RlKDApOihUZSgwKSxUZSgxKSxyKCkpLGYudmFsdWU9Yi52YWx1ZS5zbGljZSgpLGIudmFsdWVbMF0mJmIudmFsdWVbMV0mJnQuYXV0b0FwcGx5JiZhKFwiYXV0by1hcHBseVwiKSxiLnZhbHVlWzBdJiYhYi52YWx1ZVsxXSYmdC5tb2RlbEF1dG8mJnQuYXV0b0FwcGx5JiZhKFwiYXV0by1hcHBseVwiKSl9LFVlPShpLEQ9ITEpPT57aWYoIShoKGkudmFsdWUpfHwhaS5jdXJyZW50JiZ0LmhpZGVPZmZzZXREYXRlcykpe2lmKHQud2Vla1BpY2tlcilyZXR1cm4gc2UoaSk7aWYoIXQucmFuZ2UpcmV0dXJuICRlKGkpO19lKHouaG91cnMpJiZfZSh6Lm1pbnV0ZXMpJiYhdC5tdWx0aURhdGVzJiYobWUoaSxEKSxLZSgpKX19LGo9aT0+e2NvbnN0IEQ9aVswXTtyZXR1cm4gdC53ZWVrTnVtYmVycz09PVwibG9jYWxcIj9jLmdldFdlZWsoRC52YWx1ZSx7d2Vla1N0YXJ0c09uOit0LndlZWtTdGFydH0pOnQud2Vla051bWJlcnM9PT1cImlzb1wiP2MuZ2V0SVNPV2VlayhELnZhbHVlKTp0eXBlb2YgdC53ZWVrTnVtYmVycz09XCJmdW5jdGlvblwiP3Qud2Vla051bWJlcnMoRC52YWx1ZSk6XCJcIn0sZWU9aT0+e2ZvcihsZXQgRD1pLTE7RD49MDtELS0pe2NvbnN0IFc9Yy5zdWJNb250aHMoYy5zZXQoUygpLHttb250aDpSLnZhbHVlKEQrMSkseWVhcjpJLnZhbHVlKEQrMSl9KSwxKTtVKEQsYy5nZXRNb250aChXKSxjLmdldFllYXIoVykpfWZvcihsZXQgRD1pKzE7RDw9di52YWx1ZS5tdWx0aUNhbGVuZGFycy0xO0QrKyl7Y29uc3QgVz1jLmFkZE1vbnRocyhjLnNldChTKCkse21vbnRoOlIudmFsdWUoRC0xKSx5ZWFyOkkudmFsdWUoRC0xKX0pLDEpO1UoRCxjLmdldE1vbnRoKFcpLGMuZ2V0WWVhcihXKSl9fSxYPWk9Pk4oUygpLFIudmFsdWUoaSksSS52YWx1ZShpKSksSWU9aT0+Q2UoaSx6LmhvdXJzLHoubWludXRlcywkKCkpLEVlPWk9PntNKFgoaSkpfSxEdD0oaSxEKT0+e2NvbnN0IFc9dC5tb250aFBpY2tlcj9SLnZhbHVlKGkpIT09RC5tb250aHx8IUQuZnJvbU5hdjpJLnZhbHVlKGkpIT09RC55ZWFyfHwhRC5mcm9tTmF2O2lmKFUoaSxELm1vbnRoLEQueWVhciksdi52YWx1ZS5tdWx0aUNhbGVuZGFycyYmIXQubXVsdGlDYWxlbmRhcnNTb2xvJiZlZShpKSx0Lm1vbnRoUGlja2VyfHx0LnllYXJQaWNrZXIpaWYodC5tdWx0aURhdGVzKVcmJkVlKGkpO2Vsc2UgaWYodC5yYW5nZSl7aWYoVyYmcShYKGkpKSl7bGV0IFE9Zi52YWx1ZT9mLnZhbHVlLnNsaWNlKCk6W107US5sZW5ndGg9PT0yJiZRWzFdIT09bnVsbCYmKFE9W10pLFEubGVuZ3RoP2dlKFgoaSksUVswXSk/US51bnNoaWZ0KFgoaSkpOlFbMV09WChpKTpRPVtYKGkpXSxmLnZhbHVlPVF9fWVsc2UgZi52YWx1ZT1YKGkpO2EoXCJ1cGRhdGUtbW9udGgteWVhclwiLHtpbnN0YW5jZTppLG1vbnRoOkQubW9udGgseWVhcjpELnllYXJ9KSxuKHQubXVsdGlDYWxlbmRhcnNTb2xvP2k6dm9pZCAwKX0sQ3Q9YXN5bmMoaT0hMSk9PntpZih0LmF1dG9BcHBseSYmKHQubW9udGhQaWNrZXJ8fHQueWVhclBpY2tlcikpe2F3YWl0IGUubmV4dFRpY2soKTtjb25zdCBEPXQubW9udGhQaWNrZXI/aTohMTt0LnJhbmdlP2EoXCJhdXRvLWFwcGx5XCIsRHx8IWYudmFsdWV8fGYudmFsdWUubGVuZ3RoPT09MSk6YShcImF1dG8tYXBwbHlcIixEKX1yKCl9LEplPShpLEQpPT57Y29uc3QgVz1jLnNldChTKCkse21vbnRoOlIudmFsdWUoRCkseWVhcjpJLnZhbHVlKEQpfSksUT1pPDA/Yy5hZGRNb250aHMoVywxKTpjLnN1Yk1vbnRocyhXLDEpO1koYy5nZXRNb250aChRKSxjLmdldFllYXIoUSksaTwwLHQucHJldmVudE1pbk1heE5hdmlnYXRpb24pJiYoVShELGMuZ2V0TW9udGgoUSksYy5nZXRZZWFyKFEpKSx2LnZhbHVlLm11bHRpQ2FsZW5kYXJzJiYhdC5tdWx0aUNhbGVuZGFyc1NvbG8mJmVlKEQpLGEoXCJ1cGRhdGUtbW9udGgteWVhclwiLHtpbnN0YW5jZTpELG1vbnRoOmMuZ2V0TW9udGgoUSkseWVhcjpjLmdldFllYXIoUSl9KSxuKCkpfSxXZT1pPT57WnQoaSkmJlp0KGYudmFsdWUpJiZfZSh6LmhvdXJzKSYmX2Uoei5taW51dGVzKT8oaVswXSYmZi52YWx1ZVswXSYmKGYudmFsdWVbMF09Q2UoaVswXSx6LmhvdXJzWzBdLHoubWludXRlc1swXSwkKCkpKSxpWzFdJiZmLnZhbHVlWzFdJiYoZi52YWx1ZVsxXT1DZShpWzFdLHouaG91cnNbMV0sei5taW51dGVzWzFdLCQoITEpKSkpOnQubXVsdGlEYXRlcyYmQXJyYXkuaXNBcnJheShmLnZhbHVlKT9mLnZhbHVlW2YudmFsdWUubGVuZ3RoLTFdPUllKGkpOiF0LnJhbmdlJiYhWHQoaSkmJihmLnZhbHVlPUllKGkpKSxhKFwidGltZS11cGRhdGVcIil9LE10PShpLEQ9ITAsVz0hMSk9Pntjb25zdCBRPUQ/aTp6LmhvdXJzLGRlPSFEJiYhVz9pOnoubWludXRlcyxTZT1XP2k6ei5zZWNvbmRzO2lmKHQucmFuZ2UmJlh0KGYudmFsdWUpJiZfZShRKSYmX2UoZGUpJiZfZShTZSkmJiF0LmRpc2FibGVUaW1lUmFuZ2VWYWxpZGF0aW9uKXtjb25zdCBSZT14PT5DZShmLnZhbHVlW3hdLFFbeF0sZGVbeF0sU2VbeF0pLHc9eD0+Yy5zZXRNaWxsaXNlY29uZHMoZi52YWx1ZVt4XSwwKTtpZihvZShmLnZhbHVlWzBdLGYudmFsdWVbMV0pJiYoYy5pc0FmdGVyKFJlKDApLHcoMSkpfHxjLmlzQmVmb3JlKFJlKDEpLHcoMCkpKSlyZXR1cm59aWYoSyhcImhvdXJzXCIsUSksSyhcIm1pbnV0ZXNcIixkZSksSyhcInNlY29uZHNcIixTZSksZi52YWx1ZSlpZih0Lm11bHRpRGF0ZXMpe2NvbnN0IFJlPWQoKTtSZSYmV2UoUmUpfWVsc2UgV2UoZi52YWx1ZSk7ZWxzZSB0LnRpbWVQaWNrZXImJldlKHQucmFuZ2U/W1MoKSxTKCldOlMoKSk7cigpfSwkdD0oaSxEKT0+e3QubW9udGhDaGFuZ2VPblNjcm9sbCYmSmUodC5tb250aENoYW5nZU9uU2Nyb2xsIT09XCJpbnZlcnNlXCI/LWkuZGVsdGFZOmkuZGVsdGFZLEQpfSxTdD0oaSxELFc9ITEpPT57dC5tb250aENoYW5nZU9uQXJyb3dzJiZ0LnZlcnRpY2FsPT09VyYmUWUoaSxEKX0sUWU9KGksRCk9PntKZShpPT09XCJyaWdodFwiPy0xOjEsRCl9O3JldHVybnt0aW1lOnosbW9udGg6Uix5ZWFyOkksbW9kZWxWYWx1ZTpmLGNhbGVuZGFyczpMLG1vbnRoWWVhclNlbGVjdDpDdCxpc0Rpc2FibGVkOmgsdXBkYXRlVGltZTpNdCxnZXRXZWVrTnVtOmosc2VsZWN0RGF0ZTpVZSx1cGRhdGVNb250aFllYXI6RHQsaGFuZGxlU2Nyb2xsOiR0LGdldE1hcmtlcjppPT50Lm1hcmtlcnMuZmluZChEPT5vZShUKGkudmFsdWUpLFQoRC5kYXRlKSkpLGhhbmRsZUFycm93OlN0LGhhbmRsZVN3aXBlOlFlLHNlbGVjdEN1cnJlbnREYXRlOigpPT57dC5yYW5nZT9mLnZhbHVlJiZBcnJheS5pc0FycmF5KGYudmFsdWUpJiZmLnZhbHVlWzBdP2YudmFsdWU9Z2UoUygpLGYudmFsdWVbMF0pP1tTKCksZi52YWx1ZVswXV06W2YudmFsdWVbMF0sUygpXTpmLnZhbHVlPVtTKCldOmYudmFsdWU9UygpLE8oKX0scHJlc2V0RGF0ZVJhbmdlOihpLEQpPT57RHx8aS5sZW5ndGgmJmkubGVuZ3RoPD0yJiZ0LnJhbmdlJiYoZi52YWx1ZT1pLm1hcChXPT5TKFcpKSxPKCksdC5tdWx0aUNhbGVuZGFycyYmZS5uZXh0VGljaygpLnRoZW4oKCk9PnRlKCEwKSkpfX19LEhuPSh0LGEscik9Pntjb25zdCBuPWUucmVmKCkse2dldFpvbmVkVG9VdGM6dSxnZXRab25lZERhdGU6bSxmb3JtYXREYXRlOmgsZ2V0RGVmYXVsdFBhdHRlcm46VCxjaGVja1JhbmdlRW5hYmxlZDpfLGNoZWNrUGFydGlhbFJhbmdlVmFsdWU6Tixpc1ZhbGlkRGF0ZTpZLHNldERhdGVNb250aE9yWWVhcjp2LGRlZmF1bHRzOmZ9PURlKGEpLGI9ZS5yZWYoXCJcIiksRz1lLnRvUmVmKGEsXCJmb3JtYXRcIik7ZS53YXRjaChuLCgpPT57dChcImludGVybmFsLW1vZGVsLWNoYW5nZVwiLG4udmFsdWUpfSksZS53YXRjaChHLCgpPT57ZCgpfSk7Y29uc3QgTD1zPT57Y29uc3QgTz1zfHxTKCk7cmV0dXJuIGEubW9kZWxUeXBlP2woTyk6e2hvdXJzOmMuZ2V0SG91cnMoTyksbWludXRlczpjLmdldE1pbnV0ZXMoTyksc2Vjb25kczphLmVuYWJsZVNlY29uZHM/Yy5nZXRTZWNvbmRzKE8pOjB9fSx6PXM9PmEubW9kZWxUeXBlP2wocyk6e21vbnRoOmMuZ2V0TW9udGgocykseWVhcjpjLmdldFllYXIocyl9LFI9cz0+QXJyYXkuaXNBcnJheShzKT9fKCgpPT5bYy5zZXRZZWFyKFMoKSxzWzBdKSxzWzFdP2Muc2V0WWVhcihTKCksc1sxXSk6TigpXSk6Yy5zZXRZZWFyKFMoKSwrcyksST0ocyxPKT0+KHR5cGVvZiBzPT1cInN0cmluZ1wifHx0eXBlb2Ygcz09XCJudW1iZXJcIikmJmEubW9kZWxUeXBlP28ocyk6TyxWPXM9PkFycmF5LmlzQXJyYXkocyk/W0koc1swXSxDZShudWxsLCtzWzBdLmhvdXJzLCtzWzBdLm1pbnV0ZXMsc1swXS5zZWNvbmRzKSksSShzWzFdLENlKG51bGwsK3NbMV0uaG91cnMsK3NbMV0ubWludXRlcyxzWzFdLnNlY29uZHMpKV06SShzLENlKG51bGwscy5ob3VycyxzLm1pbnV0ZXMscy5zZWNvbmRzKSksVT1zPT5BcnJheS5pc0FycmF5KHMpP2EubXVsdGlEYXRlcz9zLm1hcChPPT5JKE8sdihudWxsLCtPLm1vbnRoLCtPLnllYXIpKSk6XygoKT0+W0koc1swXSx2KG51bGwsK3NbMF0ubW9udGgsK3NbMF0ueWVhcikpLEkoc1sxXSxzWzFdP3YobnVsbCwrc1sxXS5tb250aCwrc1sxXS55ZWFyKTpOKCkpXSk6SShzLHYobnVsbCwrcy5tb250aCwrcy55ZWFyKSksSz1zPT57aWYoQXJyYXkuaXNBcnJheShzKSlyZXR1cm4gcy5tYXAoTz0+byhPKSk7dGhyb3cgbmV3IEVycm9yKEdlLmRhdGVBcnIoXCJtdWx0aS1kYXRlc1wiKSl9LEY9cz0+e2lmKEFycmF5LmlzQXJyYXkocykpcmV0dXJuW1Moc1swXSksUyhzWzFdKV07dGhyb3cgbmV3IEVycm9yKEdlLmRhdGVBcnIoXCJ3ZWVrLXBpY2tlclwiKSl9LHRlPXM9PmEubW9kZWxBdXRvP0FycmF5LmlzQXJyYXkocyk/W28oc1swXSksbyhzWzFdKV06YS5hdXRvQXBwbHk/W28ocyldOltvKHMpLG51bGxdOkFycmF5LmlzQXJyYXkocyk/XygoKT0+W28oc1swXSksc1sxXT9vKHNbMV0pOk4oKV0pOm8ocyksbmU9KCk9PntBcnJheS5pc0FycmF5KG4udmFsdWUpJiZhLnJhbmdlJiZuLnZhbHVlLmxlbmd0aD09PTEmJm4udmFsdWUucHVzaChOKCkpfSxhZT0oKT0+e2NvbnN0IHM9bi52YWx1ZTtyZXR1cm5bbChzWzBdKSxzWzFdP2woc1sxXSk6TigpXX0scmU9KCk9Pm4udmFsdWVbMV0/YWUoKTpsKHllKG4udmFsdWVbMF0pKSxQPSgpPT4obi52YWx1ZXx8W10pLm1hcChzPT5sKHMpKSxDPSgpPT4obmUoKSxhLm1vZGVsQXV0bz9yZSgpOmEubXVsdGlEYXRlcz9QKCk6QXJyYXkuaXNBcnJheShuLnZhbHVlKT9fKCgpPT5hZSgpKTpsKHllKG4udmFsdWUpKSkseT1zPT5zP2EudGltZVBpY2tlcj9WKHllKHMpKTphLm1vbnRoUGlja2VyP1UoeWUocykpOmEueWVhclBpY2tlcj9SKHllKHMpKTphLm11bHRpRGF0ZXM/Syh5ZShzKSk6YS53ZWVrUGlja2VyP0YoeWUocykpOnRlKHllKHMpKTpudWxsLEE9cz0+e2NvbnN0IE89eShzKTtZKHllKE8pKT8obi52YWx1ZT15ZShPKSxkKCkpOihuLnZhbHVlPW51bGwsYi52YWx1ZT1cIlwiKX0sRT0oKT0+e3ZhciBPO2NvbnN0IHM9Wj0+e3ZhciBzZTtyZXR1cm4gYy5mb3JtYXQoWiwoc2U9Zi52YWx1ZS50ZXh0SW5wdXRPcHRpb25zKT09bnVsbD92b2lkIDA6c2UuZm9ybWF0KX07cmV0dXJuYCR7cyhuLnZhbHVlWzBdKX0gJHsoTz1mLnZhbHVlLnRleHRJbnB1dE9wdGlvbnMpPT1udWxsP3ZvaWQgMDpPLnJhbmdlU2VwYXJhdG9yfSAke24udmFsdWVbMV0/cyhuLnZhbHVlWzFdKTpcIlwifWB9LCQ9KCk9Pnt2YXIgcztyZXR1cm4gci52YWx1ZSYmbi52YWx1ZT9BcnJheS5pc0FycmF5KG4udmFsdWUpP0UoKTpjLmZvcm1hdChuLnZhbHVlLChzPWYudmFsdWUudGV4dElucHV0T3B0aW9ucyk9PW51bGw/dm9pZCAwOnMuZm9ybWF0KTpoKG4udmFsdWUpfSxnPSgpPT57dmFyIHM7cmV0dXJuIG4udmFsdWU/YS5tdWx0aURhdGVzP24udmFsdWUubWFwKE89PmgoTykpLmpvaW4oXCI7IFwiKTphLnRleHRJbnB1dCYmdHlwZW9mKChzPWYudmFsdWUudGV4dElucHV0T3B0aW9ucyk9PW51bGw/dm9pZCAwOnMuZm9ybWF0KT09XCJzdHJpbmdcIj8kKCk6aChuLnZhbHVlKTpcIlwifSxkPSgpPT57IWEuZm9ybWF0fHx0eXBlb2YgYS5mb3JtYXQ9PVwic3RyaW5nXCI/Yi52YWx1ZT1nKCk6Yi52YWx1ZT1hLmZvcm1hdChuLnZhbHVlKX0sbz1zPT57aWYoYS51dGMpe2NvbnN0IE89bmV3IERhdGUocyk7cmV0dXJuIGEudXRjPT09XCJwcmVzZXJ2ZVwiP25ldyBEYXRlKE8uZ2V0VGltZSgpK08uZ2V0VGltZXpvbmVPZmZzZXQoKSo2ZTQpOk99cmV0dXJuIGEubW9kZWxUeXBlP2EubW9kZWxUeXBlPT09XCJkYXRlXCJ8fGEubW9kZWxUeXBlPT09XCJ0aW1lc3RhbXBcIj9tKG5ldyBEYXRlKHMpKTphLm1vZGVsVHlwZT09PVwiZm9ybWF0XCImJih0eXBlb2YgYS5mb3JtYXQ9PVwic3RyaW5nXCJ8fCFhLmZvcm1hdCk/Yy5wYXJzZShzLFQoKSxuZXcgRGF0ZSk6bShjLnBhcnNlKHMsYS5tb2RlbFR5cGUsbmV3IERhdGUpKTptKG5ldyBEYXRlKHMpKX0sbD1zPT5zP2EudXRjP25uKHMsYS51dGM9PT1cInByZXNlcnZlXCIsYS5lbmFibGVTZWNvbmRzKTphLm1vZGVsVHlwZT9hLm1vZGVsVHlwZT09PVwidGltZXN0YW1wXCI/K3Uocyk6YS5tb2RlbFR5cGU9PT1cImZvcm1hdFwiJiYodHlwZW9mIGEuZm9ybWF0PT1cInN0cmluZ1wifHwhYS5mb3JtYXQpP2godShzKSk6aCh1KHMpLGEubW9kZWxUeXBlKTp1KHMpOlwiXCIsaz1zPT57dChcInVwZGF0ZTptb2RlbC12YWx1ZVwiLHMpfSxNPXM9PkFycmF5LmlzQXJyYXkobi52YWx1ZSk/YS5tdWx0aURhdGVzP24udmFsdWUubWFwKE89PnMoTykpOltzKG4udmFsdWVbMF0pLG4udmFsdWVbMV0/cyhuLnZhbHVlWzFdKTpOKCldOnMoeWUobi52YWx1ZSkpLEI9cz0+ayh5ZShNKHMpKSk7cmV0dXJue2lucHV0VmFsdWU6YixpbnRlcm5hbE1vZGVsVmFsdWU6bixjaGVja0JlZm9yZUVtaXQ6KCk9Pm4udmFsdWU/YS5yYW5nZT9hLnBhcnRpYWxSYW5nZT9uLnZhbHVlLmxlbmd0aD49MTpuLnZhbHVlLmxlbmd0aD09PTI6ISFuLnZhbHVlOiExLHBhcnNlRXh0ZXJuYWxNb2RlbFZhbHVlOkEsZm9ybWF0SW5wdXRWYWx1ZTpkLGVtaXRNb2RlbFZhbHVlOigpPT4oZCgpLGEubW9udGhQaWNrZXI/Qih6KTphLnRpbWVQaWNrZXI/QihMKTphLnllYXJQaWNrZXI/QihjLmdldFllYXIpOmEud2Vla1BpY2tlcj9rKG4udmFsdWUpOmsoQygpKSl9fSxqbj0odCxhKT0+e2NvbnN0e3ZhbGlkYXRlTW9udGhZZWFySW5SYW5nZTpyLHZhbGlkYXRlTWF4RGF0ZTpuLHZhbGlkYXRlTWluRGF0ZTp1LGRlZmF1bHRzOm19PURlKHQpLGg9KHYsZik9PntsZXQgYj12O3JldHVybiBtLnZhbHVlLmZpbHRlcnMubW9udGhzLmluY2x1ZGVzKGMuZ2V0TW9udGgoYikpPyhiPWY/Yy5hZGRNb250aHModiwxKTpjLnN1Yk1vbnRocyh2LDEpLGgoYixmKSk6Yn0sVD0odixmKT0+e2xldCBiPXY7cmV0dXJuIG0udmFsdWUuZmlsdGVycy55ZWFycy5pbmNsdWRlcyhjLmdldFllYXIoYikpPyhiPWY/Yy5hZGRZZWFycyh2LDEpOmMuc3ViWWVhcnModiwxKSxUKGIsZikpOmJ9LF89dj0+e2NvbnN0IGY9Yy5zZXQobmV3IERhdGUse21vbnRoOnQubW9udGgseWVhcjp0LnllYXJ9KTtsZXQgYj12P2MuYWRkTW9udGhzKGYsMSk6Yy5zdWJNb250aHMoZiwxKTt0LmRpc2FibGVZZWFyU2VsZWN0JiYoYj1jLnNldFllYXIoYix0LnllYXIpKTtsZXQgRz1jLmdldE1vbnRoKGIpLEw9Yy5nZXRZZWFyKGIpO20udmFsdWUuZmlsdGVycy5tb250aHMuaW5jbHVkZXMoRykmJihiPWgoYix2KSxHPWMuZ2V0TW9udGgoYiksTD1jLmdldFllYXIoYikpLG0udmFsdWUuZmlsdGVycy55ZWFycy5pbmNsdWRlcyhMKSYmKGI9VChiLHYpLEw9Yy5nZXRZZWFyKGIpKSxyKEcsTCx2LHQucHJldmVudE1pbk1heE5hdmlnYXRpb24pJiZOKEcsTCl9LE49KHYsZik9PnthKFwidXBkYXRlLW1vbnRoLXllYXJcIix7bW9udGg6dix5ZWFyOmZ9KX0sWT1lLmNvbXB1dGVkKCgpPT52PT57aWYoIXQucHJldmVudE1pbk1heE5hdmlnYXRpb258fHYmJiF0Lm1heERhdGV8fCF2JiYhdC5taW5EYXRlKXJldHVybiExO2NvbnN0IGY9Yy5zZXQobmV3IERhdGUse21vbnRoOnQubW9udGgseWVhcjp0LnllYXJ9KSxiPXY/Yy5hZGRNb250aHMoZiwxKTpjLnN1Yk1vbnRocyhmLDEpLEc9W2MuZ2V0TW9udGgoYiksYy5nZXRZZWFyKGIpXTtyZXR1cm4gdj8hbiguLi5HKTohdSguLi5HKX0pO3JldHVybntoYW5kbGVNb250aFllYXJDaGFuZ2U6Xyxpc0Rpc2FibGVkOlksdXBkYXRlTW9udGhZZWFyOk59fTt2YXIgWmU9KHQ9Pih0LmNlbnRlcj1cImNlbnRlclwiLHQubGVmdD1cImxlZnRcIix0LnJpZ2h0PVwicmlnaHRcIix0KSkoWmV8fHt9KTtjb25zdCBHbj0odCxhLHIsbik9Pntjb25zdCB1PWUucmVmKHt0b3A6XCIwXCIsbGVmdDpcIjBcIix0cmFuc2Zvcm06XCJub25lXCIsb3BhY2l0eTpcIjBcIn0pLG09ZS5yZWYoITEpLGg9ZS50b1JlZihuLFwidGVsZXBvcnRDZW50ZXJcIiksVD1lLmNvbXB1dGVkKCgpPT5tLnZhbHVlP1wiLTEwMCVcIjpcIjBcIiksXz0oKT0+e04oKSx1LnZhbHVlLm9wYWNpdHk9XCIwXCJ9O2Uud2F0Y2goaCwoKT0+e0koKX0pLGUub25Nb3VudGVkKCgpPT57TigpfSk7Y29uc3QgTj0oKT0+e2NvbnN0IEM9Y2UoYSk7aWYoQyl7Y29uc3R7dG9wOnksbGVmdDpBLHdpZHRoOkUsaGVpZ2h0OiR9PUcoQyk7dS52YWx1ZS50b3A9YCR7eSskLzJ9cHhgLGIoQSxFLDUwKX19LFk9Qz0+e2lmKG4udGVsZXBvcnQpe2NvbnN0IHk9Qy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57bGVmdDp5LmxlZnQrd2luZG93LnNjcm9sbFgsdG9wOnkudG9wK3dpbmRvdy5zY3JvbGxZfX1yZXR1cm57dG9wOjAsbGVmdDowfX0sdj0oQyx5KT0+e3UudmFsdWUubGVmdD1gJHtDK3l9cHhgLHUudmFsdWUudHJhbnNmb3JtPWB0cmFuc2xhdGUoLTEwMCUsICR7VC52YWx1ZX0pYH0sZj1DPT57dS52YWx1ZS5sZWZ0PWAke0N9cHhgLHUudmFsdWUudHJhbnNmb3JtPWB0cmFuc2xhdGUoMCwgJHtULnZhbHVlfSlgfSxiPShDLHksQSk9PntuLnBvc2l0aW9uPT09WmUubGVmdCYmZihDKSxuLnBvc2l0aW9uPT09WmUucmlnaHQmJnYoQyx5KSxuLnBvc2l0aW9uPT09WmUuY2VudGVyJiYodS52YWx1ZS5sZWZ0PWAke0MreS8yfXB4YCx1LnZhbHVlLnRyYW5zZm9ybT1BP2B0cmFuc2xhdGUoLTUwJSwgLSR7QX0lKWA6YHRyYW5zbGF0ZSgtNTAlLCAke1QudmFsdWV9KWApfSxHPUM9Pntjb25zdHt3aWR0aDp5LGhlaWdodDpBfT1DLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHt0b3A6RSxsZWZ0OiR9PW4uYWx0UG9zaXRpb24/bi5hbHRQb3NpdGlvbihDKTpZKEMpO3JldHVybnt0b3A6K0UsbGVmdDorJCx3aWR0aDp5LGhlaWdodDpBfX0sTD0oKT0+e2NvbnN0IEM9Y2UoYSk7aWYoQyl7Y29uc3R7dG9wOnksbGVmdDpBLHdpZHRoOkUsaGVpZ2h0OiR9PUcoQyksZz10ZSgpO3UudmFsdWUudG9wPWAke3krJC8yfXB4YCxiKEEsRSxnPT09XCJ0b3BcIj8xMDA6MCl9fSx6PSgpPT57dS52YWx1ZS5sZWZ0PVwiNTAlXCIsdS52YWx1ZS50b3A9XCI1MCVcIix1LnZhbHVlLnRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtNTAlLCAtNTAlKVwiLHUudmFsdWUucG9zaXRpb249XCJmaXhlZFwiLGRlbGV0ZSB1LnZhbHVlLm9wYWNpdHl9LFI9KCk9Pntjb25zdCBDPWNlKGEpLHt0b3A6eSxsZWZ0OkEsdHJhbnNmb3JtOkV9PW4uYWx0UG9zaXRpb24oQyk7dS52YWx1ZT17dG9wOmAke3l9cHhgLGxlZnQ6YCR7QX1weGAsdHJhbnNmb3JtOkV8fFwiXCJ9fSxJPShDPSEwKT0+e2lmKCFuLmlubGluZSlyZXR1cm4gaC52YWx1ZT96KCk6bi5hbHRQb3NpdGlvbiE9PW51bGw/UigpOihDJiZyKFwicmVjYWxjdWxhdGUtcG9zaXRpb25cIiksYWUoKSl9LFY9KHtpbnB1dEVsOkMsbWVudUVsOnksbGVmdDpBLHdpZHRoOkV9KT0+e3dpbmRvdy5zY3JlZW4ud2lkdGg+NzY4JiZiKEEsRSksRihDLHkpfSxVPShDLHkpPT57Y29uc3R7dG9wOkEsbGVmdDpFLGhlaWdodDokLHdpZHRoOmd9PUcoQyk7dS52YWx1ZS50b3A9YCR7JCtBKyArbi5vZmZzZXR9cHhgLG0udmFsdWU9ITEsVih7aW5wdXRFbDpDLG1lbnVFbDp5LGxlZnQ6RSx3aWR0aDpnfSl9LEs9KEMseSk9Pntjb25zdHt0b3A6QSxsZWZ0OkUsd2lkdGg6JH09RyhDKTt1LnZhbHVlLnRvcD1gJHtBLStuLm9mZnNldH1weGAsbS52YWx1ZT0hMCxWKHtpbnB1dEVsOkMsbWVudUVsOnksbGVmdDpFLHdpZHRoOiR9KX0sRj0oQyx5KT0+e2lmKG4uYXV0b1Bvc2l0aW9uKXtjb25zdHtsZWZ0OkEsd2lkdGg6RX09RyhDKSx7bGVmdDokLHJpZ2h0Omd9PXkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuICQ8PTB8fCQ8PUE/ZihBKTpnPj1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg/dihBLEUpOmIoQSxFKX19LHRlPSgpPT57Y29uc3QgQz1jZSh0KSx5PWNlKGEpO2lmKEMmJnkpe2NvbnN0e2hlaWdodDpBfT1DLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHt0b3A6RSxoZWlnaHQ6JH09eS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxkPXdpbmRvdy5pbm5lckhlaWdodC1FLSQsbz1FO3JldHVybiBBPD1kP1wiYm90dG9tXCI6QT5kJiZBPD1vP1widG9wXCI6ZD49bz9cImJvdHRvbVwiOlwidG9wXCJ9cmV0dXJuXCJib3R0b21cIn0sbmU9KEMseSk9PnRlKCk9PT1cImJvdHRvbVwiP1UoQyx5KTpLKEMseSksYWU9KCk9Pntjb25zdCBDPWNlKGEpLHk9Y2UodCk7aWYoQyYmeSlyZXR1cm4gbi5hdXRvUG9zaXRpb24/bmUoQyx5KTpVKEMseSl9LHJlPWZ1bmN0aW9uKEMpe2lmKEMpe2NvbnN0IHk9Qy5zY3JvbGxIZWlnaHQ+Qy5jbGllbnRIZWlnaHQsRT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShDKS5vdmVyZmxvd1kuaW5kZXhPZihcImhpZGRlblwiKSE9PS0xO3JldHVybiB5JiYhRX1yZXR1cm4hMH0sUD1mdW5jdGlvbihDKXtyZXR1cm4hQ3x8Qz09PWRvY3VtZW50LmJvZHl8fEMubm9kZVR5cGU9PT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU/d2luZG93OnJlKEMpP0M6UChDLnBhcmVudE5vZGUpfTtyZXR1cm57b3Blbk9uVG9wOm0sbWVudVN0eWxlOnUscmVzZXRQb3NpdGlvbjpfLHNldE1lbnVQb3NpdGlvbjpJLHNldEluaXRpYWxQb3NpdGlvbjpMLGdldFNjcm9sbGFibGVQYXJlbnQ6UH19LFllPVt7bmFtZTpcImNsb2NrLWljb25cIix1c2U6W1widGltZVwiLFwiY2FsZW5kYXJcIl19LHtuYW1lOlwiYXJyb3ctbGVmdFwiLHVzZTpbXCJtb250aC15ZWFyXCIsXCJjYWxlbmRhclwiXX0se25hbWU6XCJhcnJvdy1yaWdodFwiLHVzZTpbXCJtb250aC15ZWFyXCIsXCJjYWxlbmRhclwiXX0se25hbWU6XCJhcnJvdy11cFwiLHVzZTpbXCJ0aW1lXCIsXCJjYWxlbmRhclwiXX0se25hbWU6XCJhcnJvdy1kb3duXCIsdXNlOltcInRpbWVcIixcImNhbGVuZGFyXCJdfSx7bmFtZTpcImNhbGVuZGFyLWljb25cIix1c2U6W1wibW9udGgteWVhclwiLFwidGltZVwiLFwiY2FsZW5kYXJcIl19LHtuYW1lOlwiZGF5XCIsdXNlOltcImNhbGVuZGFyXCJdfSx7bmFtZTpcIm1vbnRoLW92ZXJsYXktdmFsdWVcIix1c2U6W1wiY2FsZW5kYXJcIixcIm1vbnRoLXllYXJcIl19LHtuYW1lOlwieWVhci1vdmVybGF5LXZhbHVlXCIsdXNlOltcImNhbGVuZGFyXCIsXCJtb250aC15ZWFyXCJdfSx7bmFtZTpcInllYXItb3ZlcmxheVwiLHVzZTpbXCJtb250aC15ZWFyXCJdfSx7bmFtZTpcIm1vbnRoLW92ZXJsYXlcIix1c2U6W1wibW9udGgteWVhclwiXX0se25hbWU6XCJtb250aC1vdmVybGF5LWhlYWRlclwiLHVzZTpbXCJtb250aC15ZWFyXCJdfSx7bmFtZTpcInllYXItb3ZlcmxheS1oZWFkZXJcIix1c2U6W1wibW9udGgteWVhclwiXX0se25hbWU6XCJob3Vycy1vdmVybGF5LXZhbHVlXCIsdXNlOltcImNhbGVuZGFyXCIsXCJ0aW1lXCJdfSx7bmFtZTpcIm1pbnV0ZXMtb3ZlcmxheS12YWx1ZVwiLHVzZTpbXCJjYWxlbmRhclwiLFwidGltZVwiXX0se25hbWU6XCJzZWNvbmRzLW92ZXJsYXktdmFsdWVcIix1c2U6W1wiY2FsZW5kYXJcIixcInRpbWVcIl19LHtuYW1lOlwiaG91cnNcIix1c2U6W1wiY2FsZW5kYXJcIixcInRpbWVcIl19LHtuYW1lOlwibWludXRlc1wiLHVzZTpbXCJjYWxlbmRhclwiLFwidGltZVwiXX0se25hbWU6XCJtb250aFwiLHVzZTpbXCJjYWxlbmRhclwiLFwibW9udGgteWVhclwiXX0se25hbWU6XCJ5ZWFyXCIsdXNlOltcImNhbGVuZGFyXCIsXCJtb250aC15ZWFyXCJdfSx7bmFtZTpcImFjdGlvbi1idXR0b25zXCIsdXNlOltcImFjdGlvblwiXX0se25hbWU6XCJhY3Rpb24tcHJldmlld1wiLHVzZTpbXCJhY3Rpb25cIl19LHtuYW1lOlwiY2FsZW5kYXItaGVhZGVyXCIsdXNlOltcImNhbGVuZGFyXCJdfSx7bmFtZTpcIm1hcmtlci10b29sdGlwXCIsdXNlOltcImNhbGVuZGFyXCJdfSx7bmFtZTpcImFjdGlvbi1leHRyYVwiLHVzZTpbXCJtZW51XCJdfSx7bmFtZTpcInRpbWUtcGlja2VyLW92ZXJsYXlcIix1c2U6W1wiY2FsZW5kYXJcIixcInRpbWVcIl19LHtuYW1lOlwiYW0tcG0tYnV0dG9uXCIsdXNlOltcImNhbGVuZGFyXCIsXCJ0aW1lXCJdfSx7bmFtZTpcImxlZnQtc2lkZWJhclwiLHVzZTpbXCJtZW51XCJdfSx7bmFtZTpcInJpZ2h0LXNpZGViYXJcIix1c2U6W1wibWVudVwiXX0se25hbWU6XCJtb250aC15ZWFyXCIsdXNlOltcIm1vbnRoLXllYXJcIl19LHtuYW1lOlwidGltZS1waWNrZXJcIix1c2U6W1wibWVudVwiXX0se25hbWU6XCJhY3Rpb24tcm93XCIsdXNlOltcImFjdGlvblwiXX1dLHFuPVt7bmFtZTpcInRyaWdnZXJcIn0se25hbWU6XCJpbnB1dC1pY29uXCJ9LHtuYW1lOlwiY2xlYXItaWNvblwifSx7bmFtZTpcImRwLWlucHV0XCJ9XSxabj17YWxsOigpPT5ZZSxtb250aFllYXI6KCk9PlllLmZpbHRlcih0PT50LnVzZS5pbmNsdWRlcyhcIm1vbnRoLXllYXJcIikpLGlucHV0OigpPT5xbix0aW1lUGlja2VyOigpPT5ZZS5maWx0ZXIodD0+dC51c2UuaW5jbHVkZXMoXCJ0aW1lXCIpKSxhY3Rpb246KCk9PlllLmZpbHRlcih0PT50LnVzZS5pbmNsdWRlcyhcImFjdGlvblwiKSksY2FsZW5kYXI6KCk9PlllLmZpbHRlcih0PT50LnVzZS5pbmNsdWRlcyhcImNhbGVuZGFyXCIpKSxtZW51OigpPT5ZZS5maWx0ZXIodD0+dC51c2UuaW5jbHVkZXMoXCJtZW51XCIpKX0sT2U9KHQsYSxyKT0+e2NvbnN0IG49W107cmV0dXJuIFpuW2FdKCkuZm9yRWFjaCh1PT57dFt1Lm5hbWVdJiZuLnB1c2godS5uYW1lKX0pLHImJnIubGVuZ3RoJiZyLmZvckVhY2godT0+e3Uuc2xvdCYmbi5wdXNoKHUuc2xvdCl9KSxufSxYZT10PT4oe3RyYW5zaXRpb25OYW1lOmUuY29tcHV0ZWQoKCk9PnI9PnQmJnR5cGVvZiB0IT1cImJvb2xlYW5cIj9yP3Qub3Blbjp0LmNsb3NlOlwiXCIpLHNob3dUcmFuc2l0aW9uOiEhdH0pLFZlPXttdWx0aUNhbGVuZGFyczp7dHlwZTpbQm9vbGVhbixOdW1iZXIsU3RyaW5nXSxkZWZhdWx0Om51bGx9LG1vZGVsVmFsdWU6e3R5cGU6W1N0cmluZyxEYXRlLEFycmF5LE9iamVjdCxOdW1iZXJdLGRlZmF1bHQ6bnVsbH0sbW9kZWxUeXBlOnt0eXBlOlN0cmluZyxkZWZhdWx0Om51bGx9LHBvc2l0aW9uOnt0eXBlOlN0cmluZyxkZWZhdWx0OlwiY2VudGVyXCJ9LGRhcms6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxmb3JtYXQ6e3R5cGU6W1N0cmluZyxGdW5jdGlvbl0sZGVmYXVsdDooKT0+bnVsbH0sY2xvc2VPblNjcm9sbDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGF1dG9Qb3NpdGlvbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LGNsb3NlT25BdXRvQXBwbHk6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSxhbHRQb3NpdGlvbjp7dHlwZTpGdW5jdGlvbixkZWZhdWx0Om51bGx9LHRyYW5zaXRpb25zOnt0eXBlOltCb29sZWFuLE9iamVjdF0sZGVmYXVsdDohMH0sZm9ybWF0TG9jYWxlOnt0eXBlOk9iamVjdCxkZWZhdWx0Om51bGx9LHV0Yzp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITF9LGFyaWFMYWJlbHM6e3R5cGU6T2JqZWN0LGRlZmF1bHQ6KCk9Pih7fSl9LG9mZnNldDp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDoxMH0saGlkZU5hdmlnYXRpb246e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+W119LHRpbWV6b25lOnt0eXBlOlN0cmluZyxkZWZhdWx0Om51bGx9LHZlcnRpY2FsOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sZGlzYWJsZU1vbnRoWWVhclNlbGVjdDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGRpc2FibGVZZWFyU2VsZWN0Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sbWVudUNsYXNzTmFtZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpudWxsfSxkYXlDbGFzczp7dHlwZTpGdW5jdGlvbixkZWZhdWx0Om51bGx9LHllYXJSYW5nZTp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bMTkwMCwyMTAwXX0sbXVsdGlDYWxlbmRhcnNTb2xvOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sY2FsZW5kYXJDZWxsQ2xhc3NOYW1lOnt0eXBlOlN0cmluZyxkZWZhdWx0Om51bGx9LGVuYWJsZVRpbWVQaWNrZXI6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSxhdXRvQXBwbHk6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxkaXNhYmxlZERhdGVzOnt0eXBlOltBcnJheSxGdW5jdGlvbl0sZGVmYXVsdDooKT0+W119LG1vbnRoTmFtZUZvcm1hdDp7dHlwZTpTdHJpbmcsZGVmYXVsdDpcInNob3J0XCJ9LHN0YXJ0RGF0ZTp7dHlwZTpbRGF0ZSxTdHJpbmddLGRlZmF1bHQ6bnVsbH0sc3RhcnRUaW1lOnt0eXBlOltPYmplY3QsQXJyYXldLGRlZmF1bHQ6bnVsbH0saGlkZU9mZnNldERhdGVzOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sYXV0b1JhbmdlOnt0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0Om51bGx9LG5vVG9kYXk6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxkaXNhYmxlZFdlZWtEYXlzOnt0eXBlOkFycmF5LGRlZmF1bHQ6KCk9PltdfSxhbGxvd2VkRGF0ZXM6e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+W119LHNob3dOb3dCdXR0b246e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxub3dCdXR0b25MYWJlbDp7dHlwZTpTdHJpbmcsZGVmYXVsdDpcIk5vd1wifSxtYXJrZXJzOnt0eXBlOkFycmF5LGRlZmF1bHQ6KCk9PltdfSxtb2RlSGVpZ2h0Ont0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OjI1NX0sZXNjQ2xvc2U6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSxzcGFjZUNvbmZpcm06e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSxtb250aENoYW5nZU9uQXJyb3dzOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0scHJlc2V0UmFuZ2VzOnt0eXBlOkFycmF5LGRlZmF1bHQ6KCk9PltdfSxmbG93Ont0eXBlOkFycmF5LGRlZmF1bHQ6KCk9PltdfSxwYXJ0aWFsRmxvdzp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHByZXZlbnRNaW5NYXhOYXZpZ2F0aW9uOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sbWluUmFuZ2U6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6bnVsbH0sbWF4UmFuZ2U6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6bnVsbH0sbXVsdGlEYXRlc0xpbWl0Ont0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0Om51bGx9LHJldmVyc2VZZWFyczp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGtlZXBBY3Rpb25Sb3c6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSx3ZWVrUGlja2VyOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sZmlsdGVyczp7dHlwZTpPYmplY3QsZGVmYXVsdDooKT0+KHt9KX0sYXJyb3dOYXZpZ2F0aW9uOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sbXVsdGlTdGF0aWM6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSxkaXNhYmxlVGltZVJhbmdlVmFsaWRhdGlvbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGhpZ2hsaWdodDp7dHlwZTpbQXJyYXksRnVuY3Rpb25dLGRlZmF1bHQ6bnVsbH0saGlnaGxpZ2h0V2Vla0RheXM6e3R5cGU6QXJyYXksZGVmYXVsdDpudWxsfSxoaWdobGlnaHREaXNhYmxlZERheXM6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSx0ZWxlcG9ydDp7dHlwZTpbU3RyaW5nLEJvb2xlYW5dLGRlZmF1bHQ6bnVsbH0sdGVsZXBvcnRDZW50ZXI6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxsb2NhbGU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJlbi1Vc1wifSx3ZWVrTnVtTmFtZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpcIldcIn0sd2Vla1N0YXJ0Ont0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OjF9LHdlZWtOdW1iZXJzOnt0eXBlOltTdHJpbmcsRnVuY3Rpb25dLGRlZmF1bHQ6bnVsbH0sY2FsZW5kYXJDbGFzc05hbWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6bnVsbH0sbm9Td2lwZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG1vbnRoQ2hhbmdlT25TY3JvbGw6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiEwfSxkYXlOYW1lczp7dHlwZTpbRnVuY3Rpb24sQXJyYXldLGRlZmF1bHQ6bnVsbH0sbW9udGhQaWNrZXI6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxjdXN0b21Qcm9wczp7dHlwZTpPYmplY3QsZGVmYXVsdDpudWxsfSx5ZWFyUGlja2VyOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sbW9kZWxBdXRvOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sc2VsZWN0VGV4dDp7dHlwZTpTdHJpbmcsZGVmYXVsdDpcIlNlbGVjdFwifSxjYW5jZWxUZXh0Ont0eXBlOlN0cmluZyxkZWZhdWx0OlwiQ2FuY2VsXCJ9LHByZXZpZXdGb3JtYXQ6e3R5cGU6W1N0cmluZyxGdW5jdGlvbl0sZGVmYXVsdDooKT0+XCJcIn0sbXVsdGlEYXRlczp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHBhcnRpYWxSYW5nZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LGlnbm9yZVRpbWVWYWxpZGF0aW9uOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sbWluRGF0ZTp7dHlwZTpbRGF0ZSxTdHJpbmddLGRlZmF1bHQ6bnVsbH0sbWF4RGF0ZTp7dHlwZTpbRGF0ZSxTdHJpbmddLGRlZmF1bHQ6bnVsbH0sbWluVGltZTp7dHlwZTpPYmplY3QsZGVmYXVsdDpudWxsfSxtYXhUaW1lOnt0eXBlOk9iamVjdCxkZWZhdWx0Om51bGx9LG5hbWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6bnVsbH0scGxhY2Vob2xkZXI6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJcIn0saGlkZUlucHV0SWNvbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGNsZWFyYWJsZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LHN0YXRlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDpudWxsfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGF1dG9jb21wbGV0ZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpcIm9mZlwifSxpbnB1dENsYXNzTmFtZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpudWxsfSxpbmxpbmVXaXRoSW5wdXQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSx0ZXh0SW5wdXRPcHRpb25zOnt0eXBlOk9iamVjdCxkZWZhdWx0OigpPT5udWxsfSxmaXhlZFN0YXJ0Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sZml4ZWRFbmQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSx0aW1lUGlja2VyOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sZW5hYmxlU2Vjb25kczp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGlzMjQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSxub0hvdXJzT3ZlcmxheTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG5vTWludXRlc092ZXJsYXk6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxub1NlY29uZHNPdmVybGF5Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0saG91cnNHcmlkSW5jcmVtZW50Ont0eXBlOltTdHJpbmcsTnVtYmVyXSxkZWZhdWx0OjF9LG1pbnV0ZXNHcmlkSW5jcmVtZW50Ont0eXBlOltTdHJpbmcsTnVtYmVyXSxkZWZhdWx0OjV9LHNlY29uZHNHcmlkSW5jcmVtZW50Ont0eXBlOltTdHJpbmcsTnVtYmVyXSxkZWZhdWx0OjV9LGhvdXJzSW5jcmVtZW50Ont0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OjF9LG1pbnV0ZXNJbmNyZW1lbnQ6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6MX0sc2Vjb25kc0luY3JlbWVudDp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDoxfSxyYW5nZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHVpZDp7dHlwZTpTdHJpbmcsZGVmYXVsdDpudWxsfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHJlYWRvbmx5Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0saW5saW5lOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sdGV4dElucHV0Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sb25DbGlja091dHNpZGU6e3R5cGU6RnVuY3Rpb24sZGVmYXVsdDpudWxsfSxub0Rpc2FibGVkUmFuZ2U6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxzaXhXZWVrczp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITF9LGFjdGlvblJvdzp7dHlwZTpPYmplY3QsZGVmYXVsdDooKT0+KHt9KX0sYWxsb3dQcmV2ZW50RGVmYXVsdDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGNsb3NlT25DbGVhclZhbHVlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sZm9jdXNTdGFydERhdGU6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxkaXNhYmxlZFRpbWVzOnt0eXBlOkZ1bmN0aW9uLGRlZmF1bHQ6dm9pZCAwfSxzaG93TGFzdEluUmFuZ2U6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfX0sWG49e2tleToxLGNsYXNzOlwiZHBfX2lucHV0X3dyYXBcIn0sSm49W1wiaWRcIixcIm5hbWVcIixcImlucHV0bW9kZVwiLFwicGxhY2Vob2xkZXJcIixcImRpc2FibGVkXCIsXCJyZWFkb25seVwiLFwicmVxdWlyZWRcIixcInZhbHVlXCIsXCJhdXRvY29tcGxldGVcIixcImFyaWEtbGFiZWxcIixcIm9uS2V5ZG93blwiXSxRbj17a2V5OjAsY2xhc3M6XCJkcF9faW5wdXRfaWNvblwifSxGbj17a2V5OjIsY2xhc3M6XCJkcF9fY2xlYXJfaWNvblwifSxlYT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOlwiRGF0ZXBpY2tlcklucHV0XCIscHJvcHM6e2lzTWVudU9wZW46e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxpbnB1dFZhbHVlOnt0eXBlOlN0cmluZyxkZWZhdWx0OlwiXCJ9LC4uLlZlfSxlbWl0czpbXCJjbGVhclwiLFwib3BlblwiLFwidXBkYXRlOmlucHV0LXZhbHVlXCIsXCJzZXQtaW5wdXQtZGF0ZVwiLFwiY2xvc2VcIixcInNlbGVjdC1kYXRlXCIsXCJzZXQtZW1wdHktZGF0ZVwiLFwidG9nZ2xlXCIsXCJmb2N1cy1wcmV2XCIsXCJmb2N1c1wiLFwiYmx1clwiLFwicmVhbC1ibHVyXCJdLHNldHVwKHQse2V4cG9zZTphLGVtaXQ6cn0pe2NvbnN0IG49dCx7Z2V0RGVmYXVsdFBhdHRlcm46dSxpc1ZhbGlkRGF0ZTptLGRlZmF1bHRzOmgsZ2V0RGVmYXVsdFN0YXJ0VGltZTpULGFzc2lnbkRlZmF1bHRUaW1lOl99PURlKG4pLE49ZS5yZWYoKSxZPWUucmVmKG51bGwpLHY9ZS5yZWYoITEpLGY9ZS5yZWYoITEpLGI9ZS5jb21wdXRlZCgoKT0+KHtkcF9fcG9pbnRlcjohbi5kaXNhYmxlZCYmIW4ucmVhZG9ubHkmJiFuLnRleHRJbnB1dCxkcF9fZGlzYWJsZWQ6bi5kaXNhYmxlZCxkcF9faW5wdXRfcmVhZG9ubHk6IW4udGV4dElucHV0LGRwX19pbnB1dDohMCxkcF9faW5wdXRfaWNvbl9wYWQ6IW4uaGlkZUlucHV0SWNvbixkcF9faW5wdXRfdmFsaWQ6bi5zdGF0ZSxkcF9faW5wdXRfaW52YWxpZDpuLnN0YXRlPT09ITEsZHBfX2lucHV0X2ZvY3VzOnYudmFsdWV8fG4uaXNNZW51T3BlbixkcF9faW5wdXRfcmVnOiFuLnRleHRJbnB1dCxbbi5pbnB1dENsYXNzTmFtZV06ISFuLmlucHV0Q2xhc3NOYW1lfSkpLEc9KCk9PntyKFwic2V0LWlucHV0LWRhdGVcIixudWxsKSxuLmF1dG9BcHBseSYmKHIoXCJzZXQtZW1wdHktZGF0ZVwiKSxOLnZhbHVlPW51bGwpfSxMPXk9Pnt2YXIgRTtjb25zdCBBPVQoKTtyZXR1cm4gdG4oeSwoKEU9aC52YWx1ZS50ZXh0SW5wdXRPcHRpb25zKT09bnVsbD92b2lkIDA6RS5mb3JtYXQpfHx1KCksQXx8Xyh7fSksbi5pbnB1dFZhbHVlLGYudmFsdWUpfSx6PXk9Pntjb25zdHtyYW5nZVNlcGFyYXRvcjpBfT1oLnZhbHVlLnRleHRJbnB1dE9wdGlvbnMsW0UsJF09eS5zcGxpdChgJHtBfWApO2lmKEUpe2NvbnN0IGc9TChFLnRyaW0oKSksZD0kP0woJC50cmltKCkpOm51bGwsbz1nJiZkP1tnLGRdOltnXTtOLnZhbHVlPWc/bzpudWxsfX0sUj0oKT0+e2YudmFsdWU9ITB9LEk9eT0+e2lmKG4ucmFuZ2Upeih5KTtlbHNlIGlmKG4ubXVsdGlEYXRlcyl7Y29uc3QgQT15LnNwbGl0KFwiO1wiKTtOLnZhbHVlPUEubWFwKEU9PkwoRS50cmltKCkpKS5maWx0ZXIoRT0+RSl9ZWxzZSBOLnZhbHVlPUwoeSl9LFY9eT0+e3ZhciBFO2NvbnN0e3ZhbHVlOkF9PXkudGFyZ2V0O0EhPT1cIlwiPygoRT1oLnZhbHVlLnRleHRJbnB1dE9wdGlvbnMpIT1udWxsJiZFLm9wZW5NZW51JiYhbi5pc01lbnVPcGVuJiZyKFwib3BlblwiKSxJKEEpLHIoXCJzZXQtaW5wdXQtZGF0ZVwiLE4udmFsdWUpKTpHKCksZi52YWx1ZT0hMSxyKFwidXBkYXRlOmlucHV0LXZhbHVlXCIsQSl9LFU9eT0+e3ZhciBBLEU7bi50ZXh0SW5wdXQ/KEkoeS50YXJnZXQudmFsdWUpLChBPWgudmFsdWUudGV4dElucHV0T3B0aW9ucykhPW51bGwmJkEuZW50ZXJTdWJtaXQmJm0oTi52YWx1ZSkmJm4uaW5wdXRWYWx1ZSE9PVwiXCI/KHIoXCJzZXQtaW5wdXQtZGF0ZVwiLE4udmFsdWUsITApLE4udmFsdWU9bnVsbCk6KEU9aC52YWx1ZS50ZXh0SW5wdXRPcHRpb25zKSE9bnVsbCYmRS5lbnRlclN1Ym1pdCYmbi5pbnB1dFZhbHVlPT09XCJcIiYmKE4udmFsdWU9bnVsbCxyKFwiY2xlYXJcIikpKTp0ZSh5KX0sSz0oKT0+e3ZhciB5LEE7KHk9aC52YWx1ZS50ZXh0SW5wdXRPcHRpb25zKSE9bnVsbCYmeS50YWJTdWJtaXQmJm0oTi52YWx1ZSkmJm4uaW5wdXRWYWx1ZSE9PVwiXCI/KHIoXCJzZXQtaW5wdXQtZGF0ZVwiLE4udmFsdWUsITApLE4udmFsdWU9bnVsbCk6KEE9aC52YWx1ZS50ZXh0SW5wdXRPcHRpb25zKSE9bnVsbCYmQS50YWJTdWJtaXQmJm4uaW5wdXRWYWx1ZT09PVwiXCImJihOLnZhbHVlPW51bGwscihcImNsZWFyXCIpKX0sRj0oKT0+e3YudmFsdWU9ITAscihcImZvY3VzXCIpfSx0ZT15PT57dmFyIEE7eS5wcmV2ZW50RGVmYXVsdCgpLHkuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkseS5zdG9wUHJvcGFnYXRpb24oKSxuLnRleHRJbnB1dCYmKChBPWgudmFsdWUudGV4dElucHV0T3B0aW9ucykhPW51bGwmJkEub3Blbk1lbnUpJiYhbi5pbmxpbmVXaXRoSW5wdXQ/KHIoXCJ0b2dnbGVcIiksaC52YWx1ZS50ZXh0SW5wdXRPcHRpb25zLmVudGVyU3VibWl0JiZyKFwic2VsZWN0LWRhdGVcIikpOm4udGV4dElucHV0fHxyKFwidG9nZ2xlXCIpfSxuZT0oKT0+e3IoXCJyZWFsLWJsdXJcIiksdi52YWx1ZT0hMSxuLmlzTWVudU9wZW58fHIoXCJibHVyXCIpLG4uYXV0b0FwcGx5JiZuLnRleHRJbnB1dCYmTi52YWx1ZSYmIW4uaXNNZW51T3BlbiYmKHIoXCJzZXQtaW5wdXQtZGF0ZVwiLE4udmFsdWUpLHIoXCJzZWxlY3QtZGF0ZVwiKSxOLnZhbHVlPW51bGwpfSxhZT0oKT0+e3IoXCJjbGVhclwiKX0scmU9eT0+e2lmKCFuLnRleHRJbnB1dCl7aWYoeS5jb2RlPT09XCJUYWJcIilyZXR1cm47eS5wcmV2ZW50RGVmYXVsdCgpfX07cmV0dXJuIGEoe2ZvY3VzSW5wdXQ6KCk9Pnt2YXIgeTsoeT1ZLnZhbHVlKT09bnVsbHx8eS5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pfSxzZXRQYXJzZWREYXRlOnk9PntOLnZhbHVlPXl9fSksKHksQSk9Pnt2YXIgRTtyZXR1cm4gZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtvbkNsaWNrOnRlfSxbeS4kc2xvdHMudHJpZ2dlciYmIXkuJHNsb3RzW1wiZHAtaW5wdXRcIl0mJiF5LmlubGluZT9lLnJlbmRlclNsb3QoeS4kc2xvdHMsXCJ0cmlnZ2VyXCIse2tleTowfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksIXkuJHNsb3RzLnRyaWdnZXImJigheS5pbmxpbmV8fHkuaW5saW5lV2l0aElucHV0KT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLFhuLFt5LiRzbG90c1tcImRwLWlucHV0XCJdJiYheS4kc2xvdHMudHJpZ2dlciYmIXkuaW5saW5lP2UucmVuZGVyU2xvdCh5LiRzbG90cyxcImRwLWlucHV0XCIse2tleTowLHZhbHVlOnQuaW5wdXRWYWx1ZSxpc01lbnVPcGVuOnQuaXNNZW51T3BlbixvbklucHV0OlYsb25FbnRlcjpVLG9uVGFiOkssb25DbGVhcjphZSxvbkJsdXI6bmUsb25LZXlwcmVzczpyZSxvblBhc3RlOlJ9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSx5LiRzbG90c1tcImRwLWlucHV0XCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiaW5wdXRcIix7a2V5OjEscmVmX2tleTpcImlucHV0UmVmXCIscmVmOlksaWQ6eS51aWQ/YGRwLWlucHV0LSR7eS51aWR9YDp2b2lkIDAsbmFtZTp5Lm5hbWUsY2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhiLnZhbHVlKSxpbnB1dG1vZGU6eS50ZXh0SW5wdXQ/XCJ0ZXh0XCI6XCJub25lXCIscGxhY2Vob2xkZXI6eS5wbGFjZWhvbGRlcixkaXNhYmxlZDp5LmRpc2FibGVkLHJlYWRvbmx5OnkucmVhZG9ubHkscmVxdWlyZWQ6eS5yZXF1aXJlZCx2YWx1ZTp0LmlucHV0VmFsdWUsYXV0b2NvbXBsZXRlOnkuYXV0b2NvbXBsZXRlLFwiYXJpYS1sYWJlbFwiOihFPWUudW5yZWYoaCkuYXJpYUxhYmVscyk9PW51bGw/dm9pZCAwOkUuaW5wdXQsb25JbnB1dDpWLG9uS2V5ZG93bjpbZS53aXRoS2V5cyhVLFtcImVudGVyXCJdKSxlLndpdGhLZXlzKEssW1widGFiXCJdKSxyZV0sb25CbHVyOm5lLG9uRm9jdXM6RixvbktleXByZXNzOnJlLG9uUGFzdGU6Un0sbnVsbCw0MixKbikpLGUuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse29uQ2xpY2s6QVswXXx8KEFbMF09JD0+cihcInRvZ2dsZVwiKSl9LFt5LiRzbG90c1tcImlucHV0LWljb25cIl0mJiF5LmhpZGVJbnB1dEljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJzcGFuXCIsUW4sW2UucmVuZGVyU2xvdCh5LiRzbG90cyxcImlucHV0LWljb25cIildKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksIXkuJHNsb3RzW1wiaW5wdXQtaWNvblwiXSYmIXkuaGlkZUlucHV0SWNvbiYmIXkuJHNsb3RzW1wiZHAtaW5wdXRcIl0/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEhlKSx7a2V5OjEsY2xhc3M6XCJkcF9faW5wdXRfaWNvbiBkcF9faW5wdXRfaWNvbnNcIn0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV0pLHkuJHNsb3RzW1wiY2xlYXItaWNvblwiXSYmdC5pbnB1dFZhbHVlJiZ5LmNsZWFyYWJsZSYmIXkuZGlzYWJsZWQmJiF5LnJlYWRvbmx5PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwic3BhblwiLEZuLFtlLnJlbmRlclNsb3QoeS4kc2xvdHMsXCJjbGVhci1pY29uXCIse2NsZWFyOmFlfSldKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCkseS5jbGVhcmFibGUmJiF5LiRzbG90c1tcImNsZWFyLWljb25cIl0mJnQuaW5wdXRWYWx1ZSYmIXkuZGlzYWJsZWQmJiF5LnJlYWRvbmx5PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihlbikse2tleTozLGNsYXNzOlwiZHBfX2NsZWFyX2ljb24gZHBfX2lucHV0X2ljb25zXCIsb25DbGljazplLndpdGhNb2RpZmllcnMoYWUsW1wic3RvcFwiLFwicHJldmVudFwiXSl9LG51bGwsOCxbXCJvbkNsaWNrXCJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCldKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCldKX19fSksdGE9W1widGl0bGVcIl0sbmE9e2NsYXNzOlwiZHBfX2FjdGlvbl9idXR0b25zXCJ9LGFhPVtcIm9uS2V5ZG93blwiLFwiZGlzYWJsZWRcIl0scmE9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZTpcIkFjdGlvblJvd1wiLHByb3BzOnttZW51TW91bnQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxpbnRlcm5hbE1vZGVsVmFsdWU6e3R5cGU6W0RhdGUsQXJyYXldLGRlZmF1bHQ6bnVsbH0sY2FsZW5kYXJXaWR0aDp7dHlwZTpOdW1iZXIsZGVmYXVsdDowfSwuLi5WZX0sZW1pdHM6W1wiY2xvc2UtcGlja2VyXCIsXCJzZWxlY3QtZGF0ZVwiLFwic2VsZWN0LW5vd1wiLFwiaW52YWxpZC1zZWxlY3RcIl0sc2V0dXAodCx7ZW1pdDphfSl7Y29uc3Qgcj10LHtmb3JtYXREYXRlOm4saXNWYWxpZFRpbWU6dSxkZWZhdWx0czptfT1EZShyKSx7YnVpbGRNYXRyaXg6aH09QWUoKSxUPWUucmVmKG51bGwpLF89ZS5yZWYobnVsbCk7ZS5vbk1vdW50ZWQoKCk9PntyLmFycm93TmF2aWdhdGlvbiYmaChbY2UoVCksY2UoXyldLFwiYWN0aW9uUm93XCIpfSk7Y29uc3QgTj1lLmNvbXB1dGVkKCgpPT5yLnJhbmdlJiYhci5wYXJ0aWFsUmFuZ2UmJnIuaW50ZXJuYWxNb2RlbFZhbHVlP3IuaW50ZXJuYWxNb2RlbFZhbHVlLmxlbmd0aD09PTI6ITApLFk9ZS5jb21wdXRlZCgoKT0+IXYudmFsdWV8fCFmLnZhbHVlfHwhTi52YWx1ZSksdj1lLmNvbXB1dGVkKCgpPT4hci5lbmFibGVUaW1lUGlja2VyfHxyLmlnbm9yZVRpbWVWYWxpZGF0aW9uPyEwOnUoci5pbnRlcm5hbE1vZGVsVmFsdWUpKSxmPWUuY29tcHV0ZWQoKCk9PnIubW9udGhQaWNrZXI/ci5yYW5nZSYmQXJyYXkuaXNBcnJheShyLmludGVybmFsTW9kZWxWYWx1ZSk/IXIuaW50ZXJuYWxNb2RlbFZhbHVlLmZpbHRlcihVPT4hUihVKSkubGVuZ3RoOlIoci5pbnRlcm5hbE1vZGVsVmFsdWUpOiEwKSxiPSgpPT57Y29uc3QgVj1tLnZhbHVlLnByZXZpZXdGb3JtYXQ7cmV0dXJuIHIudGltZVBpY2tlcnx8ci5tb250aFBpY2tlcixWKHllKHIuaW50ZXJuYWxNb2RlbFZhbHVlKSl9LEc9KCk9Pntjb25zdCBWPXIuaW50ZXJuYWxNb2RlbFZhbHVlO3JldHVybiBtLnZhbHVlLm11bHRpQ2FsZW5kYXJzPjA/YCR7bihWWzBdKX0gLSAke24oVlsxXSl9YDpbbihWWzBdKSxuKFZbMV0pXX0sTD1lLmNvbXB1dGVkKCgpPT4hci5pbnRlcm5hbE1vZGVsVmFsdWV8fCFyLm1lbnVNb3VudD9cIlwiOnR5cGVvZiBtLnZhbHVlLnByZXZpZXdGb3JtYXQ9PVwic3RyaW5nXCI/QXJyYXkuaXNBcnJheShyLmludGVybmFsTW9kZWxWYWx1ZSk/ci5pbnRlcm5hbE1vZGVsVmFsdWUubGVuZ3RoPT09MiYmci5pbnRlcm5hbE1vZGVsVmFsdWVbMV0/RygpOnIubXVsdGlEYXRlcz9yLmludGVybmFsTW9kZWxWYWx1ZS5tYXAoVj0+YCR7bihWKX1gKTpyLm1vZGVsQXV0bz9gJHtuKHIuaW50ZXJuYWxNb2RlbFZhbHVlWzBdKX1gOmAke24oci5pbnRlcm5hbE1vZGVsVmFsdWVbMF0pfSAtYDpuKHIuaW50ZXJuYWxNb2RlbFZhbHVlKTpiKCkpLHo9ZS5jb21wdXRlZCgoKT0+QXJyYXkuaXNBcnJheShMLnZhbHVlKT9MLnZhbHVlLmpvaW4oci5tdWx0aURhdGVzP1wiOyBcIjpcIiAtIFwiKTpMLnZhbHVlKSxSPVY9PntpZighci5tb250aFBpY2tlcilyZXR1cm4hMDtsZXQgVT0hMDtjb25zdCBLPVMoeGUoVikpO2lmKHIubWluRGF0ZSYmci5tYXhEYXRlKXtjb25zdCBGPVMoeGUoci5taW5EYXRlKSksdGU9Uyh4ZShyLm1heERhdGUpKTtyZXR1cm4gaGUoSyxGKSYmZ2UoSyx0ZSl8fG9lKEssRil8fG9lKEssdGUpfWlmKHIubWluRGF0ZSl7Y29uc3QgRj1TKHhlKHIubWluRGF0ZSkpO1U9aGUoSyxGKXx8b2UoSyxGKX1pZihyLm1heERhdGUpe2NvbnN0IEY9Uyh4ZShyLm1heERhdGUpKTtVPWdlKEssRil8fG9lKEssRil9cmV0dXJuIFV9LEk9KCk9Pnt2LnZhbHVlJiZmLnZhbHVlJiZOLnZhbHVlP2EoXCJzZWxlY3QtZGF0ZVwiKTphKFwiaW52YWxpZC1zZWxlY3RcIil9O3JldHVybihWLFUpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtjbGFzczpcImRwX19hY3Rpb25fcm93XCIsc3R5bGU6ZS5ub3JtYWxpemVTdHlsZSh0LmNhbGVuZGFyV2lkdGg/e3dpZHRoOmAke3QuY2FsZW5kYXJXaWR0aH1weGB9Ont9KX0sW1YuJHNsb3RzW1wiYWN0aW9uLXJvd1wiXT9lLnJlbmRlclNsb3QoVi4kc2xvdHMsXCJhY3Rpb24tcm93XCIsZS5ub3JtYWxpemVQcm9wcyhlLm1lcmdlUHJvcHMoe2tleTowfSx7aW50ZXJuYWxNb2RlbFZhbHVlOnQuaW50ZXJuYWxNb2RlbFZhbHVlLGRpc2FibGVkOlkudmFsdWUsc2VsZWN0RGF0ZTooKT0+Vi4kZW1pdChcInNlbGVjdC1kYXRlXCIpLGNsb3NlUGlja2VyOigpPT5WLiRlbWl0KFwiY2xvc2UtcGlja2VyXCIpfSkpKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW2UudW5yZWYobSkuYWN0aW9uUm93LnNob3dQcmV2aWV3PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2tleTowLGNsYXNzOlwiZHBfX3NlbGVjdGlvbl9wcmV2aWV3XCIsdGl0bGU6ei52YWx1ZX0sW1YuJHNsb3RzW1wiYWN0aW9uLXByZXZpZXdcIl0/ZS5yZW5kZXJTbG90KFYuJHNsb3RzLFwiYWN0aW9uLXByZXZpZXdcIix7a2V5OjAsdmFsdWU6dC5pbnRlcm5hbE1vZGVsVmFsdWV9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxWLiRzbG90c1tcImFjdGlvbi1wcmV2aWV3XCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxbZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoei52YWx1ZSksMSldLDY0KSldLDgsdGEpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLG5hLFtWLiRzbG90c1tcImFjdGlvbi1idXR0b25zXCJdP2UucmVuZGVyU2xvdChWLiRzbG90cyxcImFjdGlvbi1idXR0b25zXCIse2tleTowLHZhbHVlOnQuaW50ZXJuYWxNb2RlbFZhbHVlfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksVi4kc2xvdHNbXCJhY3Rpb24tYnV0dG9uc1wiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sWyFWLmlubGluZSYmZS51bnJlZihtKS5hY3Rpb25Sb3cuc2hvd0NhbmNlbD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImJ1dHRvblwiLHtrZXk6MCx0eXBlOlwiYnV0dG9uXCIscmVmX2tleTpcImNhbmNlbEJ1dHRvblJlZlwiLHJlZjpULGNsYXNzOlwiZHBfX2FjdGlvbl9idXR0b24gZHBfX2FjdGlvbl9jYW5jZWxcIixvbkNsaWNrOlVbMF18fChVWzBdPUs9PlYuJGVtaXQoXCJjbG9zZS1waWNrZXJcIikpLG9uS2V5ZG93bjpbVVsxXXx8KFVbMV09ZS53aXRoS2V5cyhLPT5WLiRlbWl0KFwiY2xvc2UtcGlja2VyXCIpLFtcImVudGVyXCJdKSksVVsyXXx8KFVbMl09ZS53aXRoS2V5cyhLPT5WLiRlbWl0KFwiY2xvc2UtcGlja2VyXCIpLFtcInNwYWNlXCJdKSldfSxlLnRvRGlzcGxheVN0cmluZyhWLmNhbmNlbFRleHQpLDU0NSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLFYuc2hvd05vd0J1dHRvbnx8ZS51bnJlZihtKS5hY3Rpb25Sb3cuc2hvd05vdz8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImJ1dHRvblwiLHtrZXk6MSx0eXBlOlwiYnV0dG9uXCIscmVmX2tleTpcImNhbmNlbEJ1dHRvblJlZlwiLHJlZjpULGNsYXNzOlwiZHBfX2FjdGlvbl9idXR0b24gZHBfX2FjdGlvbl9jYW5jZWxcIixvbkNsaWNrOlVbM118fChVWzNdPUs9PlYuJGVtaXQoXCJzZWxlY3Qtbm93XCIpKSxvbktleWRvd246W1VbNF18fChVWzRdPWUud2l0aEtleXMoSz0+Vi4kZW1pdChcInNlbGVjdC1ub3dcIiksW1wiZW50ZXJcIl0pKSxVWzVdfHwoVVs1XT1lLndpdGhLZXlzKEs9PlYuJGVtaXQoXCJzZWxlY3Qtbm93XCIpLFtcInNwYWNlXCJdKSldfSxlLnRvRGlzcGxheVN0cmluZyhWLm5vd0J1dHRvbkxhYmVsKSw1NDUpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxlLnVucmVmKG0pLmFjdGlvblJvdy5zaG93U2VsZWN0PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiYnV0dG9uXCIse2tleToyLHR5cGU6XCJidXR0b25cIixjbGFzczpcImRwX19hY3Rpb25fYnV0dG9uIGRwX19hY3Rpb25fc2VsZWN0XCIsb25LZXlkb3duOltlLndpdGhLZXlzKEksW1wiZW50ZXJcIl0pLGUud2l0aEtleXMoSSxbXCJzcGFjZVwiXSldLG9uQ2xpY2s6SSxkaXNhYmxlZDpZLnZhbHVlLHJlZl9rZXk6XCJzZWxlY3RCdXR0b25SZWZcIixyZWY6X30sZS50b0Rpc3BsYXlTdHJpbmcoVi5zZWxlY3RUZXh0KSw0MSxhYSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSw2NCkpXSldLDY0KSldLDQpKX19KSxsYT1bXCJhcmlhLWxhYmVsXCJdLG9hPXtjbGFzczpcImRwX19jYWxlbmRhcl9oZWFkZXJcIixyb2xlOlwicm93XCJ9LHNhPXtrZXk6MCxjbGFzczpcImRwX19jYWxlbmRhcl9oZWFkZXJfaXRlbVwiLHJvbGU6XCJncmlkY2VsbFwifSxpYT1lLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtjbGFzczpcImRwX19jYWxlbmRhcl9oZWFkZXJfc2VwYXJhdG9yXCJ9LG51bGwsLTEpLHVhPVtcImFyaWEtbGFiZWxcIl0sY2E9e2tleTowLHJvbGU6XCJncmlkY2VsbFwiLGNsYXNzOlwiZHBfX2NhbGVuZGFyX2l0ZW0gZHBfX3dlZWtfbnVtXCJ9LGRhPXtjbGFzczpcImRwX19jZWxsX2lubmVyXCJ9LGZhPVtcImFyaWEtc2VsZWN0ZWRcIixcImFyaWEtZGlzYWJsZWRcIixcImFyaWEtbGFiZWxcIixcIm9uQ2xpY2tcIixcIm9uS2V5ZG93blwiLFwib25Nb3VzZWVudGVyXCIsXCJvbk1vdXNlbGVhdmVcIl0sbWE9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZTpcIkNhbGVuZGFyXCIscHJvcHM6e21hcHBlZERhdGVzOnt0eXBlOkFycmF5LGRlZmF1bHQ6KCk9PltdfSxnZXRXZWVrTnVtOnt0eXBlOkZ1bmN0aW9uLGRlZmF1bHQ6KCk9PlwiXCJ9LHNwZWNpZmljTW9kZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGluc3RhbmNlOnt0eXBlOk51bWJlcixkZWZhdWx0OjB9LG1vbnRoOnt0eXBlOk51bWJlcixkZWZhdWx0OjB9LHllYXI6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MH0sLi4uVmV9LGVtaXRzOltcInNlbGVjdC1kYXRlXCIsXCJzZXQtaG92ZXItZGF0ZVwiLFwiaGFuZGxlLXNjcm9sbFwiLFwibW91bnRcIixcImhhbmRsZS1zd2lwZVwiLFwiaGFuZGxlLXNwYWNlXCIsXCJ0b29sdGlwLW9wZW5cIixcInRvb2x0aXAtY2xvc2VcIl0sc2V0dXAodCx7ZXhwb3NlOmEsZW1pdDpyfSl7Y29uc3Qgbj10LHtidWlsZE11bHRpTGV2ZWxNYXRyaXg6dX09QWUoKSx7c2V0RGF0ZU1vbnRoT3JZZWFyOm0sZGVmYXVsdHM6aH09RGUobiksVD1lLnJlZihudWxsKSxfPWUucmVmKHtib3R0b206XCJcIixsZWZ0OlwiXCIsdHJhbnNmb3JtOlwiXCJ9KSxOPWUucmVmKFtdKSxZPWUucmVmKG51bGwpLHY9ZS5yZWYoITApLGY9ZS5yZWYoXCJcIiksYj1lLnJlZih7c3RhcnRYOjAsZW5kWDowLHN0YXJ0WTowLGVuZFk6MH0pLEc9ZS5yZWYoW10pLEw9ZS5yZWYoe2xlZnQ6XCI1MCVcIn0pLHo9ZS5jb21wdXRlZCgoKT0+bi5kYXlOYW1lcz9BcnJheS5pc0FycmF5KG4uZGF5TmFtZXMpP24uZGF5TmFtZXM6bi5kYXlOYW1lcyhuLmxvY2FsZSwrbi53ZWVrU3RhcnQpOlZuKG4ubG9jYWxlLCtuLndlZWtTdGFydCkpO2Uub25Nb3VudGVkKCgpPT57cihcIm1vdW50XCIse2NtcDpcImNhbGVuZGFyXCIscmVmczpOfSksbi5ub1N3aXBlfHxZLnZhbHVlJiYoWS52YWx1ZS5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLFAse3Bhc3NpdmU6ITF9KSxZLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaGVuZFwiLEMse3Bhc3NpdmU6ITF9KSxZLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIix5LHtwYXNzaXZlOiExfSkpLG4ubW9udGhDaGFuZ2VPblNjcm9sbCYmWS52YWx1ZSYmWS52YWx1ZS5hZGRFdmVudExpc3RlbmVyKFwid2hlZWxcIiwkLHtwYXNzaXZlOiExfSl9KTtjb25zdCBSPWc9Pmc/bi52ZXJ0aWNhbD9cInZOZXh0XCI6XCJuZXh0XCI6bi52ZXJ0aWNhbD9cInZQcmV2aW91c1wiOlwicHJldmlvdXNcIixJPShnLGQpPT57aWYobi50cmFuc2l0aW9ucyl7Y29uc3Qgbz1NZShtKFMoKSxuLm1vbnRoLG4ueWVhcikpO2YudmFsdWU9aGUoTWUobShTKCksZyxkKSksbyk/aC52YWx1ZS50cmFuc2l0aW9uc1tSKCEwKV06aC52YWx1ZS50cmFuc2l0aW9uc1tSKCExKV0sdi52YWx1ZT0hMSxlLm5leHRUaWNrKCgpPT57di52YWx1ZT0hMH0pfX0sVj1lLmNvbXB1dGVkKCgpPT4oe1tuLmNhbGVuZGFyQ2xhc3NOYW1lXTohIW4uY2FsZW5kYXJDbGFzc05hbWV9KSksVT1lLmNvbXB1dGVkKCgpPT5nPT57Y29uc3QgZD1PbihnKTtyZXR1cm57ZHBfX21hcmtlcl9kb3Q6ZC50eXBlPT09XCJkb3RcIixkcF9fbWFya2VyX2xpbmU6ZC50eXBlPT09XCJsaW5lXCJ9fSksSz1lLmNvbXB1dGVkKCgpPT5nPT5vZShnLFQudmFsdWUpKSxGPWUuY29tcHV0ZWQoKCk9Pih7ZHBfX2NhbGVuZGFyOiEwLGRwX19jYWxlbmRhcl9uZXh0OmgudmFsdWUubXVsdGlDYWxlbmRhcnM+MCYmbi5pbnN0YW5jZSE9PTB9KSksdGU9ZS5jb21wdXRlZCgoKT0+Zz0+bi5oaWRlT2Zmc2V0RGF0ZXM/Zy5jdXJyZW50OiEwKSxuZT1lLmNvbXB1dGVkKCgpPT5uLnNwZWNpZmljTW9kZT97aGVpZ2h0OmAke24ubW9kZUhlaWdodH1weGB9OnZvaWQgMCksYWU9YXN5bmMoZyxkLG8pPT57dmFyIGwsaztpZihyKFwic2V0LWhvdmVyLWRhdGVcIixnKSwoaz0obD1nLm1hcmtlcik9PW51bGw/dm9pZCAwOmwudG9vbHRpcCkhPW51bGwmJmsubGVuZ3RoKXtjb25zdCBNPWNlKE4udmFsdWVbZF1bb10pO2lmKE0pe2NvbnN0e3dpZHRoOkIsaGVpZ2h0OnF9PU0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7VC52YWx1ZT1nLnZhbHVlO2xldCBwPXtsZWZ0OmAke0IvMn1weGB9LHM9LTUwO2lmKGF3YWl0IGUubmV4dFRpY2soKSxHLnZhbHVlWzBdKXtjb25zdHtsZWZ0Ok8sd2lkdGg6Wn09Ry52YWx1ZVswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtPPDAmJihwPXtsZWZ0OlwiMFwifSxzPTAsTC52YWx1ZS5sZWZ0PWAke0IvMn1weGApLHdpbmRvdy5pbm5lcldpZHRoPE8rWiYmKHA9e3JpZ2h0OlwiMFwifSxzPTAsTC52YWx1ZS5sZWZ0PWAke1otQi8yfXB4YCl9Xy52YWx1ZT17Ym90dG9tOmAke3F9cHhgLC4uLnAsdHJhbnNmb3JtOmB0cmFuc2xhdGVYKCR7c30lKWB9LHIoXCJ0b29sdGlwLW9wZW5cIixnLm1hcmtlcil9fX0scmU9Zz0+e1QudmFsdWUmJihULnZhbHVlPW51bGwsXy52YWx1ZT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHtib3R0b206XCJcIixsZWZ0OlwiXCIsdHJhbnNmb3JtOlwiXCJ9KSkscihcInRvb2x0aXAtY2xvc2VcIixnLm1hcmtlcikpfSxQPWc9PntiLnZhbHVlLnN0YXJ0WD1nLmNoYW5nZWRUb3VjaGVzWzBdLnNjcmVlblgsYi52YWx1ZS5zdGFydFk9Zy5jaGFuZ2VkVG91Y2hlc1swXS5zY3JlZW5ZfSxDPWc9PntiLnZhbHVlLmVuZFg9Zy5jaGFuZ2VkVG91Y2hlc1swXS5zY3JlZW5YLGIudmFsdWUuZW5kWT1nLmNoYW5nZWRUb3VjaGVzWzBdLnNjcmVlblksQSgpfSx5PWc9PntuLnZlcnRpY2FsJiYhbi5pbmxpbmUmJmcucHJldmVudERlZmF1bHQoKX0sQT0oKT0+e2NvbnN0IGc9bi52ZXJ0aWNhbD9cIllcIjpcIlhcIjtNYXRoLmFicyhiLnZhbHVlW2BzdGFydCR7Z31gXS1iLnZhbHVlW2BlbmQke2d9YF0pPjEwJiZyKFwiaGFuZGxlLXN3aXBlXCIsYi52YWx1ZVtgc3RhcnQke2d9YF0+Yi52YWx1ZVtgZW5kJHtnfWBdP1wicmlnaHRcIjpcImxlZnRcIil9LEU9KGcsZCxvKT0+e2cmJihBcnJheS5pc0FycmF5KE4udmFsdWVbZF0pP04udmFsdWVbZF1bb109ZzpOLnZhbHVlW2RdPVtnXSksbi5hcnJvd05hdmlnYXRpb24mJnUoTi52YWx1ZSxcImNhbGVuZGFyXCIpfSwkPWc9PntuLm1vbnRoQ2hhbmdlT25TY3JvbGwmJihnLnByZXZlbnREZWZhdWx0KCkscihcImhhbmRsZS1zY3JvbGxcIixnKSl9O3JldHVybiBhKHt0cmlnZ2VyVHJhbnNpdGlvbjpJfSksKGcsZCk9Pnt2YXIgbztyZXR1cm4gZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtjbGFzczplLm5vcm1hbGl6ZUNsYXNzKEYudmFsdWUpfSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIix7c3R5bGU6ZS5ub3JtYWxpemVTdHlsZShuZS52YWx1ZSkscmVmX2tleTpcImNhbGVuZGFyV3JhcFJlZlwiLHJlZjpZLHJvbGU6XCJncmlkXCIsY2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhWLnZhbHVlKSxcImFyaWEtbGFiZWxcIjoobz1lLnVucmVmKGgpLmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDpvLmNhbGVuZGFyV3JhcH0sW3Quc3BlY2lmaWNNb2RlP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleTowfSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIixvYSxbZy53ZWVrTnVtYmVycz8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHNhLGUudG9EaXNwbGF5U3RyaW5nKGcud2Vla051bU5hbWUpLDEpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSwoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3Qoei52YWx1ZSwobCxrKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7Y2xhc3M6XCJkcF9fY2FsZW5kYXJfaGVhZGVyX2l0ZW1cIixyb2xlOlwiZ3JpZGNlbGxcIixrZXk6a30sW2cuJHNsb3RzW1wiY2FsZW5kYXItaGVhZGVyXCJdP2UucmVuZGVyU2xvdChnLiRzbG90cyxcImNhbGVuZGFyLWhlYWRlclwiLHtrZXk6MCxkYXk6bCxpbmRleDprfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksZy4kc2xvdHNbXCJjYWxlbmRhci1oZWFkZXJcIl0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhsKSwxKV0sNjQpKV0pKSksMTI4KSldKSxpYSxlLmNyZWF0ZVZOb2RlKGUuVHJhbnNpdGlvbix7bmFtZTpmLnZhbHVlLGNzczohIWcudHJhbnNpdGlvbnN9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+e3ZhciBsO3JldHVyblt2LnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2tleTowLGNsYXNzOlwiZHBfX2NhbGVuZGFyXCIscm9sZTpcImdyaWRcIixcImFyaWEtbGFiZWxcIjoobD1lLnVucmVmKGgpLmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDpsLmNhbGVuZGFyRGF5c30sWyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdCh0Lm1hcHBlZERhdGVzLChrLE0pPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtjbGFzczpcImRwX19jYWxlbmRhcl9yb3dcIixyb2xlOlwicm93XCIsa2V5Ok19LFtnLndlZWtOdW1iZXJzPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIsY2EsW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsZGEsZS50b0Rpc3BsYXlTdHJpbmcodC5nZXRXZWVrTnVtKGsuZGF5cykpLDEpXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLChlLm9wZW5CbG9jayghMCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChrLmRheXMsKEIscSk9Pnt2YXIgcCxzLE87cmV0dXJuIGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7cm9sZTpcImdyaWRjZWxsXCIsY2xhc3M6XCJkcF9fY2FsZW5kYXJfaXRlbVwiLHJlZl9mb3I6ITAscmVmOlo9PkUoWixNLHEpLGtleTpxK00sXCJhcmlhLXNlbGVjdGVkXCI6Qi5jbGFzc0RhdGEuZHBfX2FjdGl2ZV9kYXRlfHxCLmNsYXNzRGF0YS5kcF9fcmFuZ2Vfc3RhcnR8fEIuY2xhc3NEYXRhLmRwX19yYW5nZV9zdGFydCxcImFyaWEtZGlzYWJsZWRcIjpCLmNsYXNzRGF0YS5kcF9fY2VsbF9kaXNhYmxlZCxcImFyaWEtbGFiZWxcIjoocz0ocD1lLnVucmVmKGgpLmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDpwLmRheSk9PW51bGw/dm9pZCAwOnMuY2FsbChwLEIpLHRhYmluZGV4OlwiMFwiLG9uQ2xpY2s6ZS53aXRoTW9kaWZpZXJzKFo9PmcuJGVtaXQoXCJzZWxlY3QtZGF0ZVwiLEIpLFtcInN0b3BcIixcInByZXZlbnRcIl0pLG9uS2V5ZG93bjpbZS53aXRoS2V5cyhaPT5nLiRlbWl0KFwic2VsZWN0LWRhdGVcIixCKSxbXCJlbnRlclwiXSksZS53aXRoS2V5cyhaPT5nLiRlbWl0KFwiaGFuZGxlLXNwYWNlXCIsQiksW1wic3BhY2VcIl0pXSxvbk1vdXNlZW50ZXI6Wj0+YWUoQixNLHEpLG9uTW91c2VsZWF2ZTpaPT5yZShCKX0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse2NsYXNzOmUubm9ybWFsaXplQ2xhc3MoW1wiZHBfX2NlbGxfaW5uZXJcIixCLmNsYXNzRGF0YV0pfSxbZy4kc2xvdHMuZGF5JiZ0ZS52YWx1ZShCKT9lLnJlbmRlclNsb3QoZy4kc2xvdHMsXCJkYXlcIix7a2V5OjAsZGF5OitCLnRleHQsZGF0ZTpCLnZhbHVlfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksZy4kc2xvdHMuZGF5P2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxbZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoQi50ZXh0KSwxKV0sNjQpKSxCLm1hcmtlciYmdGUudmFsdWUoQik/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7a2V5OjIsY2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhVLnZhbHVlKEIubWFya2VyKSksc3R5bGU6ZS5ub3JtYWxpemVTdHlsZShCLm1hcmtlci5jb2xvcj97YmFja2dyb3VuZENvbG9yOkIubWFya2VyLmNvbG9yfTp7fSl9LG51bGwsNikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLEsudmFsdWUoQi52YWx1ZSk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7a2V5OjMsY2xhc3M6XCJkcF9fbWFya2VyX3Rvb2x0aXBcIixyZWZfZm9yOiEwLHJlZl9rZXk6XCJhY3RpdmVUb29sdGlwXCIscmVmOkcsc3R5bGU6ZS5ub3JtYWxpemVTdHlsZShfLnZhbHVlKX0sWyhPPUIubWFya2VyKSE9bnVsbCYmTy50b29sdGlwPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2tleTowLGNsYXNzOlwiZHBfX3Rvb2x0aXBfY29udGVudFwiLG9uQ2xpY2s6ZFswXXx8KGRbMF09ZS53aXRoTW9kaWZpZXJzKCgpPT57fSxbXCJzdG9wXCJdKSl9LFsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoQi5tYXJrZXIudG9vbHRpcCwoWixzZSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2tleTpzZSxjbGFzczpcImRwX190b29sdGlwX3RleHRcIn0sW2cuJHNsb3RzW1wibWFya2VyLXRvb2x0aXBcIl0/ZS5yZW5kZXJTbG90KGcuJHNsb3RzLFwibWFya2VyLXRvb2x0aXBcIix7a2V5OjAsdG9vbHRpcDpaLGRheTpCLnZhbHVlfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksZy4kc2xvdHNbXCJtYXJrZXItdG9vbHRpcFwiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse2NsYXNzOlwiZHBfX3Rvb2x0aXBfbWFya1wiLHN0eWxlOmUubm9ybWFsaXplU3R5bGUoWi5jb2xvcj97YmFja2dyb3VuZENvbG9yOlouY29sb3J9Ont9KX0sbnVsbCw0KSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLG51bGwsZS50b0Rpc3BsYXlTdHJpbmcoWi50ZXh0KSwxKV0sNjQpKV0pKSksMTI4KSksZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIix7Y2xhc3M6XCJkcF9fYXJyb3dfYm90dG9tX3RwXCIsc3R5bGU6ZS5ub3JtYWxpemVTdHlsZShMLnZhbHVlKX0sbnVsbCw0KV0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV0sNCkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSwyKV0sNDAsZmEpfSksMTI4KSldKSkpLDEyOCkpXSw4LHVhKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCldfSksXzozfSw4LFtcIm5hbWVcIixcImNzc1wiXSldLDY0KSldLDE0LGxhKV0sMil9fX0pLHlhPVtcImFyaWEtbGFiZWxcIixcImFyaWEtZGlzYWJsZWRcIl0sa3Q9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZTpcIkFjdGlvbkljb25cIixwcm9wczp7YXJpYUxhYmVsOnt9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW59fSxlbWl0czpbXCJhY3RpdmF0ZVwiLFwic2V0LXJlZlwiXSxzZXR1cCh0LHtlbWl0OmF9KXtjb25zdCByPWUucmVmKG51bGwpO3JldHVybiBlLm9uTW91bnRlZCgoKT0+YShcInNldC1yZWZcIixyKSksKG4sdSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiYnV0dG9uXCIse3R5cGU6XCJidXR0b25cIixjbGFzczpcImRwX19idG4gZHBfX21vbnRoX3llYXJfY29sX25hdlwiLG9uQ2xpY2s6dVswXXx8KHVbMF09bT0+bi4kZW1pdChcImFjdGl2YXRlXCIpKSxvbktleWRvd246W3VbMV18fCh1WzFdPWUud2l0aEtleXMobT0+bi4kZW1pdChcImFjdGl2YXRlXCIpLFtcImVudGVyXCJdKSksdVsyXXx8KHVbMl09ZS53aXRoS2V5cyhtPT5uLiRlbWl0KFwiYWN0aXZhdGVcIiksW1wic3BhY2VcIl0pKV0sdGFiaW5kZXg6XCIwXCIsXCJhcmlhLWxhYmVsXCI6bi5hcmlhTGFiZWwsXCJhcmlhLWRpc2FibGVkXCI6bi5kaXNhYmxlZCxyZWZfa2V5OlwiZWxSZWZcIixyZWY6cn0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLHtjbGFzczplLm5vcm1hbGl6ZUNsYXNzKFtcImRwX19pbm5lcl9uYXZcIix7ZHBfX2lubmVyX25hdl9kaXNhYmxlZDpuLmRpc2FibGVkfV0pfSxbZS5yZW5kZXJTbG90KG4uJHNsb3RzLFwiZGVmYXVsdFwiKV0sMildLDQwLHlhKSl9fSkscGE9W1wib25LZXlkb3duXCJdLGdhPXtjbGFzczpcImRwX19zZWxlY3Rpb25fZ3JpZF9oZWFkZXJcIn0saGE9W1wiYXJpYS1zZWxlY3RlZFwiLFwiYXJpYS1kaXNhYmxlZFwiLFwib25DbGlja1wiLFwib25LZXlkb3duXCIsXCJvbk1vdXNlb3ZlclwiXSxrYT1bXCJhcmlhLWxhYmVsXCIsXCJvbktleWRvd25cIl0semU9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZTpcIlNlbGVjdGlvbkdyaWRcIixwcm9wczp7aXRlbXM6e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+W119LG1vZGVsVmFsdWU6e3R5cGU6W1N0cmluZyxOdW1iZXJdLGRlZmF1bHQ6bnVsbH0sbXVsdGlNb2RlbFZhbHVlOnt0eXBlOkFycmF5LGRlZmF1bHQ6KCk9PltdfSxkaXNhYmxlZFZhbHVlczp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bXX0sbWluVmFsdWU6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6bnVsbH0sbWF4VmFsdWU6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6bnVsbH0seWVhcjp7dHlwZTpOdW1iZXIsZGVmYXVsdDowfSxza2lwQWN0aXZlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0saGVhZGVyUmVmczp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bXX0sc2tpcEJ1dHRvblJlZjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG1vbnRoUGlja2VyOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0seWVhclBpY2tlcjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGVzY0Nsb3NlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sdHlwZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpudWxsfSxhcnJvd05hdmlnYXRpb246e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxhdXRvQXBwbHk6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSx0ZXh0SW5wdXQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxhcmlhTGFiZWxzOnt0eXBlOk9iamVjdCxkZWZhdWx0OigpPT4oe30pfSxoaWRlTmF2aWdhdGlvbjp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bXX19LGVtaXRzOltcInVwZGF0ZTptb2RlbC12YWx1ZVwiLFwic2VsZWN0ZWRcIixcInRvZ2dsZVwiLFwicmVzZXQtZmxvd1wiXSxzZXR1cCh0LHtleHBvc2U6YSxlbWl0OnJ9KXtjb25zdCBuPXQse3NldFNlbGVjdGlvbkdyaWQ6dSxidWlsZE11bHRpTGV2ZWxNYXRyaXg6bSxzZXRNb250aFBpY2tlcjpofT1BZSgpLHtoaWRlTmF2aWdhdGlvbkJ1dHRvbnM6VH09RGUobiksXz1lLnJlZighMSksTj1lLnJlZihudWxsKSxZPWUucmVmKG51bGwpLHY9ZS5yZWYoW10pLGY9ZS5yZWYoKSxiPWUucmVmKG51bGwpLEc9ZS5yZWYoMCksTD1lLnJlZihudWxsKTtlLm9uQmVmb3JlVXBkYXRlKCgpPT57Ti52YWx1ZT1udWxsfSksZS5vbk1vdW50ZWQoKCk9PntlLm5leHRUaWNrKCkudGhlbigoKT0+YWUoKSksUigpLHooITApfSksZS5vblVubW91bnRlZCgoKT0+eighMSkpO2NvbnN0IHo9JD0+e3ZhciBnO24uYXJyb3dOYXZpZ2F0aW9uJiYoKGc9bi5oZWFkZXJSZWZzKSE9bnVsbCYmZy5sZW5ndGg/aCgkKTp1KCQpKX0sUj0oKT0+e2NvbnN0ICQ9Y2UoWSk7JCYmKG4udGV4dElucHV0fHwkLmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSksXy52YWx1ZT0kLmNsaWVudEhlaWdodDwkLnNjcm9sbEhlaWdodCl9LEk9ZS5jb21wdXRlZCgoKT0+KHtkcF9fb3ZlcmxheTohMH0pKSxWPWUuY29tcHV0ZWQoKCk9Pih7ZHBfX292ZXJsYXlfY29sOiEwfSkpLFU9JD0+bi5za2lwQWN0aXZlPyExOiQudmFsdWU9PT1uLm1vZGVsVmFsdWUsSz1lLmNvbXB1dGVkKCgpPT5uLml0ZW1zLm1hcCgkPT4kLmZpbHRlcihnPT5nKS5tYXAoZz0+e3ZhciBsLGssTTtjb25zdCBkPW4uZGlzYWJsZWRWYWx1ZXMuc29tZShCPT5CPT09Zy52YWx1ZSl8fG5lKGcudmFsdWUpLG89KGw9bi5tdWx0aU1vZGVsVmFsdWUpIT1udWxsJiZsLmxlbmd0aD8oaz1uLm11bHRpTW9kZWxWYWx1ZSk9PW51bGw/dm9pZCAwOmsuc29tZShCPT5vZShCLGMuc2V0WWVhcihuLm1vbnRoUGlja2VyP2Muc2V0TW9udGgobmV3IERhdGUsZy52YWx1ZSk6bmV3IERhdGUsbi5tb250aFBpY2tlcj9uLnllYXI6Zy52YWx1ZSkpKTpVKGcpO3JldHVybnsuLi5nLGNsYXNzTmFtZTp7ZHBfX292ZXJsYXlfY2VsbF9hY3RpdmU6byxkcF9fb3ZlcmxheV9jZWxsOiFvLGRwX19vdmVybGF5X2NlbGxfZGlzYWJsZWQ6ZCxkcF9fb3ZlcmxheV9jZWxsX2FjdGl2ZV9kaXNhYmxlZDpkJiZvLGRwX19vdmVybGF5X2NlbGxfcGFkOiEwLGRwX19jZWxsX2luX2JldHdlZW46KE09bi5tdWx0aU1vZGVsVmFsdWUpIT1udWxsJiZNLmxlbmd0aCYmbi5za2lwQWN0aXZlP1AoZy52YWx1ZSk6ITF9fX0pKSksRj1lLmNvbXB1dGVkKCgpPT4oe2RwX19idXR0b246ITAsZHBfX292ZXJsYXlfYWN0aW9uOiEwLGRwX19vdmVyX2FjdGlvbl9zY3JvbGw6Xy52YWx1ZSxkcF9fYnV0dG9uX2JvdHRvbTpuLmF1dG9BcHBseX0pKSx0ZT1lLmNvbXB1dGVkKCgpPT57dmFyICQsZztyZXR1cm57ZHBfX292ZXJsYXlfY29udGFpbmVyOiEwLGRwX19jb250YWluZXJfZmxleDooKCQ9bi5pdGVtcyk9PW51bGw/dm9pZCAwOiQubGVuZ3RoKTw9NixkcF9fY29udGFpbmVyX2Jsb2NrOigoZz1uLml0ZW1zKT09bnVsbD92b2lkIDA6Zy5sZW5ndGgpPjZ9fSksbmU9JD0+e2NvbnN0IGc9bi5tYXhWYWx1ZXx8bi5tYXhWYWx1ZT09PTAsZD1uLm1pblZhbHVlfHxuLm1pblZhbHVlPT09MDtyZXR1cm4hZyYmIWQ/ITE6ZyYmZD8rJD4rbi5tYXhWYWx1ZXx8KyQ8K24ubWluVmFsdWU6Zz8rJD4rbi5tYXhWYWx1ZTpkPyskPCtuLm1pblZhbHVlOiExfSxhZT0oKT0+e2NvbnN0ICQ9Y2UoTiksZz1jZShZKSxkPWNlKGIpLG89Y2UoTCksbD1kP2QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0OjA7ZyYmKEcudmFsdWU9Zy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQtbCksJCYmbyYmKG8uc2Nyb2xsVG9wPSQub2Zmc2V0VG9wLW8ub2Zmc2V0VG9wLShHLnZhbHVlLzItJC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpLWwpfSxyZT0kPT57IW4uZGlzYWJsZWRWYWx1ZXMuc29tZShnPT5nPT09JCkmJiFuZSgkKSYmKHIoXCJ1cGRhdGU6bW9kZWwtdmFsdWVcIiwkKSxyKFwic2VsZWN0ZWRcIikpfSxQPSQ9Pntjb25zdCBnPW4ubW9udGhQaWNrZXI/bi55ZWFyOiQ7cmV0dXJuIEV0KG4ubXVsdGlNb2RlbFZhbHVlLGMuc2V0WWVhcihuLm1vbnRoUGlja2VyP2Muc2V0TW9udGgobmV3IERhdGUsZi52YWx1ZXx8MCk6bmV3IERhdGUsbi5tb250aFBpY2tlcj9nOmYudmFsdWV8fGcpLGMuc2V0WWVhcihuLm1vbnRoUGlja2VyP2Muc2V0TW9udGgobmV3IERhdGUsJCk6bmV3IERhdGUsZykpfSxDPSgpPT57cihcInRvZ2dsZVwiKSxyKFwicmVzZXQtZmxvd1wiKX0seT0oKT0+e24uZXNjQ2xvc2UmJkMoKX0sQT0oJCxnLGQsbyk9PnskJiYoZy52YWx1ZT09PStuLm1vZGVsVmFsdWUmJiFuLmRpc2FibGVkVmFsdWVzLmluY2x1ZGVzKGcudmFsdWUpJiYoTi52YWx1ZT0kKSxuLmFycm93TmF2aWdhdGlvbiYmKEFycmF5LmlzQXJyYXkodi52YWx1ZVtkXSk/di52YWx1ZVtkXVtvXT0kOnYudmFsdWVbZF09WyRdLEUoKSkpfSxFPSgpPT57dmFyIGcsZDtjb25zdCAkPShnPW4uaGVhZGVyUmVmcykhPW51bGwmJmcubGVuZ3RoP1tuLmhlYWRlclJlZnNdLmNvbmNhdCh2LnZhbHVlKTp2LnZhbHVlLmNvbmNhdChbbi5za2lwQnV0dG9uUmVmP1tdOltiLnZhbHVlXV0pO20oeWUoJCksKGQ9bi5oZWFkZXJSZWZzKSE9bnVsbCYmZC5sZW5ndGg/XCJtb250aFBpY2tlclwiOlwic2VsZWN0aW9uR3JpZFwiKX07cmV0dXJuIGEoe2ZvY3VzR3JpZDpSfSksKCQsZyk9Pnt2YXIgZDtyZXR1cm4gZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtyZWZfa2V5OlwiZ3JpZFdyYXBSZWZcIixyZWY6WSxjbGFzczplLm5vcm1hbGl6ZUNsYXNzKEkudmFsdWUpLHJvbGU6XCJkaWFsb2dcIix0YWJpbmRleDpcIjBcIixvbktleWRvd246ZS53aXRoS2V5cyh5LFtcImVzY1wiXSl9LFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtjbGFzczplLm5vcm1hbGl6ZUNsYXNzKHRlLnZhbHVlKSxyZWZfa2V5OlwiY29udGFpbmVyUmVmXCIscmVmOkwscm9sZTpcImdyaWRcIixzdHlsZTplLm5vcm1hbGl6ZVN0eWxlKHtoZWlnaHQ6YCR7Ry52YWx1ZX1weGB9KX0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsZ2EsW2UucmVuZGVyU2xvdCgkLiRzbG90cyxcImhlYWRlclwiKV0pLCQuJHNsb3RzLm92ZXJsYXk/ZS5yZW5kZXJTbG90KCQuJHNsb3RzLFwib3ZlcmxheVwiLHtrZXk6MH0pOihlLm9wZW5CbG9jayghMCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LGUucmVuZGVyTGlzdChLLnZhbHVlLChvLGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtjbGFzczplLm5vcm1hbGl6ZUNsYXNzKFtcImRwX19vdmVybGF5X3Jvd1wiLHtkcF9fZmxleF9yb3c6Sy52YWx1ZS5sZW5ndGg+PTN9XSksa2V5Omwscm9sZTpcInJvd1wifSxbKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KG8sKGssTSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse3JvbGU6XCJncmlkY2VsbFwiLGNsYXNzOmUubm9ybWFsaXplQ2xhc3MoVi52YWx1ZSksa2V5OmsudmFsdWUsXCJhcmlhLXNlbGVjdGVkXCI6ay52YWx1ZT09PXQubW9kZWxWYWx1ZSYmIXQuZGlzYWJsZWRWYWx1ZXMuaW5jbHVkZXMoay52YWx1ZSksXCJhcmlhLWRpc2FibGVkXCI6ay5jbGFzc05hbWUuZHBfX292ZXJsYXlfY2VsbF9kaXNhYmxlZCxyZWZfZm9yOiEwLHJlZjpCPT5BKEIsayxsLE0pLHRhYmluZGV4OlwiMFwiLG9uQ2xpY2s6Qj0+cmUoay52YWx1ZSksb25LZXlkb3duOltlLndpdGhLZXlzKEI9PnJlKGsudmFsdWUpLFtcImVudGVyXCJdKSxlLndpdGhLZXlzKEI9PnJlKGsudmFsdWUpLFtcInNwYWNlXCJdKV0sb25Nb3VzZW92ZXI6Qj0+Zi52YWx1ZT1rLnZhbHVlfSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIix7Y2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhrLmNsYXNzTmFtZSl9LFskLiRzbG90cy5pdGVtP2UucmVuZGVyU2xvdCgkLiRzbG90cyxcIml0ZW1cIix7a2V5OjAsaXRlbTprfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksJC4kc2xvdHMuaXRlbT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGsudGV4dCksMSldLDY0KSldLDIpXSw0MixoYSkpKSwxMjgpKV0sMikpKSwxMjgpKV0sNiksJC4kc2xvdHNbXCJidXR0b24taWNvblwiXT9lLndpdGhEaXJlY3RpdmVzKChlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2tleTowLHJvbGU6XCJidXR0b25cIixcImFyaWEtbGFiZWxcIjooZD10LmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDpkLnRvZ2dsZU92ZXJsYXksY2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhGLnZhbHVlKSx0YWJpbmRleDpcIjBcIixyZWZfa2V5OlwidG9nZ2xlQnV0dG9uXCIscmVmOmIsb25DbGljazpDLG9uS2V5ZG93bjplLndpdGhLZXlzKEMsW1wiZW50ZXJcIl0pfSxbZS5yZW5kZXJTbG90KCQuJHNsb3RzLFwiYnV0dG9uLWljb25cIildLDQyLGthKSksW1tlLnZTaG93LCFlLnVucmVmKFQpKHQudHlwZSldXSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCldLDQyLHBhKX19fSksd2E9W1wiYXJpYS1sYWJlbFwiXSxKdD1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOlwiUmVndWxhclBpY2tlclwiLHByb3BzOnthcmlhTGFiZWw6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJcIn0sc2hvd1NlbGVjdGlvbkdyaWQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxtb2RlbFZhbHVlOnt0eXBlOk51bWJlcixkZWZhdWx0Om51bGx9LGl0ZW1zOnt0eXBlOkFycmF5LGRlZmF1bHQ6KCk9PltdfSxkaXNhYmxlZFZhbHVlczp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bXX0sbWluVmFsdWU6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6bnVsbH0sbWF4VmFsdWU6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6bnVsbH0sc2xvdE5hbWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJcIn0sb3ZlcmxheVNsb3Q6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJcIn0saGVhZGVyUmVmczp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bXX0sZXNjQ2xvc2U6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSx0eXBlOnt0eXBlOlN0cmluZyxkZWZhdWx0Om51bGx9LHRyYW5zaXRpb25zOnt0eXBlOltPYmplY3QsQm9vbGVhbl0sZGVmYXVsdDohMX0sYXJyb3dOYXZpZ2F0aW9uOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sYXV0b0FwcGx5Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sdGV4dElucHV0Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sYXJpYUxhYmVsczp7dHlwZTpPYmplY3QsZGVmYXVsdDooKT0+KHt9KX0saGlkZU5hdmlnYXRpb246e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+W119fSxlbWl0czpbXCJ1cGRhdGU6bW9kZWwtdmFsdWVcIixcInRvZ2dsZVwiLFwic2V0LXJlZlwiXSxzZXR1cCh0LHtlbWl0OmF9KXtjb25zdCByPXQse3RyYW5zaXRpb25OYW1lOm4sc2hvd1RyYW5zaXRpb246dX09WGUoci50cmFuc2l0aW9ucyksbT1lLnJlZihudWxsKTtyZXR1cm4gZS5vbk1vdW50ZWQoKCk9PmEoXCJzZXQtcmVmXCIsbSkpLChoLFQpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LG51bGwsW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiYnV0dG9uXCIse3R5cGU6XCJidXR0b25cIixjbGFzczpcImRwX19idG4gZHBfX21vbnRoX3llYXJfc2VsZWN0XCIsb25DbGljazpUWzBdfHwoVFswXT1fPT5oLiRlbWl0KFwidG9nZ2xlXCIpKSxvbktleWRvd246W1RbMV18fChUWzFdPWUud2l0aEtleXMoXz0+aC4kZW1pdChcInRvZ2dsZVwiKSxbXCJlbnRlclwiXSkpLFRbMl18fChUWzJdPWUud2l0aEtleXMoXz0+aC4kZW1pdChcInRvZ2dsZVwiKSxbXCJzcGFjZVwiXSkpXSxcImFyaWEtbGFiZWxcIjp0LmFyaWFMYWJlbCx0YWJpbmRleDpcIjBcIixyZWZfa2V5OlwiZWxSZWZcIixyZWY6bX0sW2UucmVuZGVyU2xvdChoLiRzbG90cyxcImRlZmF1bHRcIildLDQwLHdhKSxlLmNyZWF0ZVZOb2RlKGUuVHJhbnNpdGlvbix7bmFtZTplLnVucmVmKG4pKHQuc2hvd1NlbGVjdGlvbkdyaWQpLGNzczplLnVucmVmKHUpfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0LnNob3dTZWxlY3Rpb25HcmlkPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soemUsZS5tZXJnZVByb3BzKHtrZXk6MH0se21vZGVsVmFsdWU6dC5tb2RlbFZhbHVlLGl0ZW1zOnQuaXRlbXMsZGlzYWJsZWRWYWx1ZXM6dC5kaXNhYmxlZFZhbHVlcyxtaW5WYWx1ZTp0Lm1pblZhbHVlLG1heFZhbHVlOnQubWF4VmFsdWUsZXNjQ2xvc2U6dC5lc2NDbG9zZSx0eXBlOnQudHlwZSxhcnJvd05hdmlnYXRpb246dC5hcnJvd05hdmlnYXRpb24sdGV4dElucHV0OnQudGV4dElucHV0LGF1dG9BcHBseTp0LmF1dG9BcHBseSxhcmlhTGFiZWxzOnQuYXJpYUxhYmVscyxoaWRlTmF2aWdhdGlvbjp0LmhpZGVOYXZpZ2F0aW9ufSx7XCJoZWFkZXItcmVmc1wiOltdLFwib25VcGRhdGU6bW9kZWxWYWx1ZVwiOlRbM118fChUWzNdPV89PmguJGVtaXQoXCJ1cGRhdGU6bW9kZWwtdmFsdWVcIixfKSksb25Ub2dnbGU6VFs0XXx8KFRbNF09Xz0+aC4kZW1pdChcInRvZ2dsZVwiKSl9KSxlLmNyZWF0ZVNsb3RzKHtcImJ1dHRvbi1pY29uXCI6ZS53aXRoQ3R4KCgpPT5baC4kc2xvdHNbXCJjYWxlbmRhci1pY29uXCJdP2UucmVuZGVyU2xvdChoLiRzbG90cyxcImNhbGVuZGFyLWljb25cIix7a2V5OjB9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxoLiRzbG90c1tcImNhbGVuZGFyLWljb25cIl0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEhlKSx7a2V5OjF9KSldKSxfOjJ9LFtoLiRzbG90c1t0LnNsb3ROYW1lXT97bmFtZTpcIml0ZW1cIixmbjplLndpdGhDdHgoKHtpdGVtOl99KT0+W2UucmVuZGVyU2xvdChoLiRzbG90cyx0LnNsb3ROYW1lLHtpdGVtOl99KV0pLGtleTpcIjBcIn06dm9pZCAwLGguJHNsb3RzW3Qub3ZlcmxheVNsb3RdP3tuYW1lOlwib3ZlcmxheVwiLGZuOmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChoLiRzbG90cyx0Lm92ZXJsYXlTbG90KV0pLGtleTpcIjFcIn06dm9pZCAwLGguJHNsb3RzW2Ake3Qub3ZlcmxheVNsb3R9LWhlYWRlcmBdP3tuYW1lOlwiaGVhZGVyXCIsZm46ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGguJHNsb3RzLGAke3Qub3ZlcmxheVNsb3R9LWhlYWRlcmApXSksa2V5OlwiMlwifTp2b2lkIDBdKSwxMDQwKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCldKSxfOjN9LDgsW1wibmFtZVwiLFwiY3NzXCJdKV0sNjQpKX19KSxiYT17Y2xhc3M6XCJkcF9fbW9udGhfeWVhcl9yb3dcIn0sRGE9e2NsYXNzOlwiZHBfX21vbnRoX3BpY2tlcl9oZWFkZXJcIn0sQ2E9W1wiYXJpYS1sYWJlbFwiXSxNYT1bXCJhcmlhLWxhYmVsXCJdLCRhPVtcImFyaWEtbGFiZWxcIl0sU2E9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZTpcIk1vbnRoWWVhclBpY2tlclwiLHByb3BzOnttb250aDp7dHlwZTpOdW1iZXIsZGVmYXVsdDowfSx5ZWFyOnt0eXBlOk51bWJlcixkZWZhdWx0OjB9LGluc3RhbmNlOnt0eXBlOk51bWJlcixkZWZhdWx0OjB9LHllYXJzOnt0eXBlOkFycmF5LGRlZmF1bHQ6KCk9PltdfSxtb250aHM6e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+W119LGludGVybmFsTW9kZWxWYWx1ZTp7dHlwZTpbRGF0ZSxBcnJheV0sZGVmYXVsdDpudWxsfSwuLi5WZX0sZW1pdHM6W1widXBkYXRlLW1vbnRoLXllYXJcIixcIm1vbnRoLXllYXItc2VsZWN0XCIsXCJtb3VudFwiLFwicmVzZXQtZmxvd1wiLFwib3ZlcmxheS1jbG9zZWRcIl0sc2V0dXAodCx7ZXhwb3NlOmEsZW1pdDpyfSl7Y29uc3Qgbj10LHtkZWZhdWx0czp1fT1EZShuKSx7dHJhbnNpdGlvbk5hbWU6bSxzaG93VHJhbnNpdGlvbjpofT1YZSh1LnZhbHVlLnRyYW5zaXRpb25zKSx7YnVpbGRNYXRyaXg6VH09QWUoKSx7aGFuZGxlTW9udGhZZWFyQ2hhbmdlOl8saXNEaXNhYmxlZDpOLHVwZGF0ZU1vbnRoWWVhcjpZfT1qbihuLHIpLHY9ZS5yZWYoITEpLGY9ZS5yZWYoITEpLGI9ZS5yZWYoW251bGwsbnVsbCxudWxsLG51bGxdKSxHPWUucmVmKG51bGwpLEw9ZS5yZWYobnVsbCksej1lLnJlZihudWxsKTtlLm9uTW91bnRlZCgoKT0+e3IoXCJtb3VudFwiKX0pO2NvbnN0IFI9cD0+KHtnZXQ6KCk9Pm5bcF0sc2V0OnM9Pntjb25zdCBPPXA9PT1cIm1vbnRoXCI/XCJ5ZWFyXCI6XCJtb250aFwiO3IoXCJ1cGRhdGUtbW9udGgteWVhclwiLHtbcF06cyxbT106bltPXX0pLHIoXCJtb250aC15ZWFyLXNlbGVjdFwiLHA9PT1cInllYXJcIikscD09PVwibW9udGhcIj9sKCEwKTprKCEwKX19KSxJPWUuY29tcHV0ZWQoUihcIm1vbnRoXCIpKSxWPWUuY29tcHV0ZWQoUihcInllYXJcIikpLFU9cD0+e2NvbnN0IHM9Yy5nZXRZZWFyKFMocCkpO3JldHVybiBuLnllYXI9PT1zfSxLPWUuY29tcHV0ZWQoKCk9Pm4ubW9udGhQaWNrZXI/QXJyYXkuaXNBcnJheShuLmRpc2FibGVkRGF0ZXMpP24uZGlzYWJsZWREYXRlcy5tYXAocD0+UyhwKSkuZmlsdGVyKHA9PlUocCkpLm1hcChwPT5jLmdldE1vbnRoKHApKTpbXTpbXSksRj1lLmNvbXB1dGVkKCgpPT5wPT57Y29uc3Qgcz1wPT09XCJtb250aFwiO3JldHVybntzaG93U2VsZWN0aW9uR3JpZDoocz92OmYpLnZhbHVlLGl0ZW1zOihzP0U6JCkudmFsdWUsZGlzYWJsZWRWYWx1ZXM6dS52YWx1ZS5maWx0ZXJzW3M/XCJtb250aHNcIjpcInllYXJzXCJdLmNvbmNhdChLLnZhbHVlKSxtaW5WYWx1ZToocz9yZTpuZSkudmFsdWUsbWF4VmFsdWU6KHM/UDphZSkudmFsdWUsaGVhZGVyUmVmczpzJiZuLm1vbnRoUGlja2VyP1tHLnZhbHVlLEwudmFsdWUsei52YWx1ZV06W10sZXNjQ2xvc2U6bi5lc2NDbG9zZSx0cmFuc2l0aW9uczp1LnZhbHVlLnRyYW5zaXRpb25zLGFyaWFMYWJlbHM6dS52YWx1ZS5hcmlhTGFiZWxzLHRleHRJbnB1dDpuLnRleHRJbnB1dCxhdXRvQXBwbHk6bi5hdXRvQXBwbHksYXJyb3dOYXZpZ2F0aW9uOm4uYXJyb3dOYXZpZ2F0aW9uLGhpZGVOYXZpZ2F0aW9uOm4uaGlkZU5hdmlnYXRpb259fSksdGU9ZS5jb21wdXRlZCgoKT0+cD0+KHttb250aDpuLm1vbnRoLHllYXI6bi55ZWFyLGl0ZW1zOnA9PT1cIm1vbnRoXCI/bi5tb250aHM6bi55ZWFycyxpbnN0YW5jZTpuLmluc3RhbmNlLHVwZGF0ZU1vbnRoWWVhcjpZLHRvZ2dsZTpwPT09XCJtb250aFwiP2w6a30pKSxuZT1lLmNvbXB1dGVkKCgpPT5uLm1pbkRhdGU/Yy5nZXRZZWFyKFMobi5taW5EYXRlKSk6bnVsbCksYWU9ZS5jb21wdXRlZCgoKT0+bi5tYXhEYXRlP2MuZ2V0WWVhcihTKG4ubWF4RGF0ZSkpOm51bGwpLHJlPWUuY29tcHV0ZWQoKCk9PntpZihuLm1pbkRhdGUmJm5lLnZhbHVlKXtpZihuZS52YWx1ZT5uLnllYXIpcmV0dXJuIDEyO2lmKG5lLnZhbHVlPT09bi55ZWFyKXJldHVybiBjLmdldE1vbnRoKFMobi5taW5EYXRlKSl9cmV0dXJuIG51bGx9KSxQPWUuY29tcHV0ZWQoKCk9Pm4ubWF4RGF0ZSYmYWUudmFsdWU/YWUudmFsdWU8bi55ZWFyPy0xOmFlLnZhbHVlPT09bi55ZWFyP2MuZ2V0TW9udGgoUyhuLm1heERhdGUpKTpudWxsOm51bGwpLEM9ZS5jb21wdXRlZCgoKT0+KG4ucmFuZ2V8fG4ubXVsdGlEYXRlcykmJm4uaW50ZXJuYWxNb2RlbFZhbHVlJiYobi5tb250aFBpY2tlcnx8bi55ZWFyUGlja2VyKT9uLmludGVybmFsTW9kZWxWYWx1ZTpbXSkseT1wPT57Y29uc3Qgcz1bXSxPPVo9Plo7Zm9yKGxldCBaPTA7WjxwLmxlbmd0aDtaKz0zKXtjb25zdCBzZT1bcFtaXSxwW1orMV0scFtaKzJdXTtzLnB1c2goTyhzZSkpfXJldHVybiBzfSxBPWUuY29tcHV0ZWQoKCk9Pntjb25zdCBwPW4ubW9udGhzLmZpbmQocz0+cy52YWx1ZT09PW4ubW9udGgpO3JldHVybiBwfHx7dGV4dDpcIlwiLHZhbHVlOjB9fSksRT1lLmNvbXB1dGVkKCgpPT55KG4ubW9udGhzKSksJD1lLmNvbXB1dGVkKCgpPT55KG4ueWVhcnMpKSxnPWUuY29tcHV0ZWQoKCk9PnUudmFsdWUubXVsdGlDYWxlbmRhcnM/bi5tdWx0aUNhbGVuZGFyc1NvbG8/ITA6bi5pbnN0YW5jZT09PTA6ITApLGQ9ZS5jb21wdXRlZCgoKT0+dS52YWx1ZS5tdWx0aUNhbGVuZGFycz9uLm11bHRpQ2FsZW5kYXJzU29sbz8hMDpuLmluc3RhbmNlPT09dS52YWx1ZS5tdWx0aUNhbGVuZGFycy0xOiEwKSxvPShwLHMpPT57cyE9PXZvaWQgMD9wLnZhbHVlPXM6cC52YWx1ZT0hcC52YWx1ZX0sbD0ocD0hMSxzKT0+e00ocCksbyh2LHMpLHYudmFsdWV8fHIoXCJvdmVybGF5LWNsb3NlZFwiKX0saz0ocD0hMSxzKT0+e00ocCksbyhmLHMpLGYudmFsdWV8fHIoXCJvdmVybGF5LWNsb3NlZFwiKX0sTT1wPT57cHx8cihcInJlc2V0LWZsb3dcIil9LEI9KHA9ITEpPT57Ti52YWx1ZShwKXx8cihcInVwZGF0ZS1tb250aC15ZWFyXCIse3llYXI6cD9uLnllYXIrMTpuLnllYXItMSxtb250aDpuLm1vbnRoLGZyb21OYXY6ITB9KX0scT0ocCxzKT0+e24uYXJyb3dOYXZpZ2F0aW9uJiYoYi52YWx1ZVtzXT1jZShwKSxUKGIudmFsdWUsXCJtb250aFllYXJcIikpfTtyZXR1cm4gYSh7dG9nZ2xlTW9udGhQaWNrZXI6bCx0b2dnbGVZZWFyUGlja2VyOmssaGFuZGxlTW9udGhZZWFyQ2hhbmdlOl99KSwocCxzKT0+e3ZhciBPLFosc2UsJGUsTmU7cmV0dXJuIGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIixiYSxbcC4kc2xvdHNbXCJtb250aC15ZWFyXCJdP2UucmVuZGVyU2xvdChwLiRzbG90cyxcIm1vbnRoLXllYXJcIixlLm5vcm1hbGl6ZVByb3BzKGUubWVyZ2VQcm9wcyh7a2V5OjB9LHttb250aDp0Lm1vbnRoLHllYXI6dC55ZWFyLG1vbnRoczp0Lm1vbnRocyx5ZWFyczp0LnllYXJzLHVwZGF0ZU1vbnRoWWVhcjplLnVucmVmKFkpLGhhbmRsZU1vbnRoWWVhckNoYW5nZTplLnVucmVmKF8pLGluc3RhbmNlOnQuaW5zdGFuY2V9KSkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxbIXAubW9udGhQaWNrZXImJiFwLnllYXJQaWNrZXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjB9LFtnLnZhbHVlJiYhcC52ZXJ0aWNhbD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGt0LHtrZXk6MCxcImFyaWEtbGFiZWxcIjooTz1lLnVucmVmKHUpLmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDpPLnByZXZNb250aCxkaXNhYmxlZDplLnVucmVmKE4pKCExKSxvbkFjdGl2YXRlOnNbMF18fChzWzBdPUo9PmUudW5yZWYoXykoITEpKSxvblNldFJlZjpzWzFdfHwoc1sxXT1KPT5xKEosMCkpfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltwLiRzbG90c1tcImFycm93LWxlZnRcIl0/ZS5yZW5kZXJTbG90KHAuJHNsb3RzLFwiYXJyb3ctbGVmdFwiLHtrZXk6MH0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLHAuJHNsb3RzW1wiYXJyb3ctbGVmdFwiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoTnQpLHtrZXk6MX0pKV0pLF86M30sOCxbXCJhcmlhLWxhYmVsXCIsXCJkaXNhYmxlZFwiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLGUuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse2NsYXNzOmUubm9ybWFsaXplQ2xhc3MoW1wiZHBfX21vbnRoX3llYXJfd3JhcFwiLHtkcF9feWVhcl9kaXNhYmxlX3NlbGVjdDpuLmRpc2FibGVZZWFyU2VsZWN0fV0pfSxbZS5jcmVhdGVWTm9kZShKdCxlLm1lcmdlUHJvcHMoe3R5cGU6XCJtb250aFwiLFwic2xvdC1uYW1lXCI6XCJtb250aC1vdmVybGF5LXZhbFwiLFwib3ZlcmxheS1zbG90XCI6XCJvdmVybGF5LW1vbnRoXCIsXCJhcmlhLWxhYmVsXCI6KFo9ZS51bnJlZih1KS5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6Wi5vcGVuTW9udGhzT3ZlcmxheSxtb2RlbFZhbHVlOkkudmFsdWUsXCJvblVwZGF0ZTptb2RlbFZhbHVlXCI6c1syXXx8KHNbMl09Sj0+SS52YWx1ZT1KKX0sRi52YWx1ZShcIm1vbnRoXCIpLHtvblRvZ2dsZTpsLG9uU2V0UmVmOnNbM118fChzWzNdPUo9PnEoSiwxKSl9KSxlLmNyZWF0ZVNsb3RzKHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3AuJHNsb3RzLm1vbnRoP2UucmVuZGVyU2xvdChwLiRzbG90cyxcIm1vbnRoXCIsZS5ub3JtYWxpemVQcm9wcyhlLm1lcmdlUHJvcHMoe2tleTowfSxBLnZhbHVlKSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLHAuJHNsb3RzLm1vbnRoP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxbZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoQS52YWx1ZS50ZXh0KSwxKV0sNjQpKV0pLF86Mn0sW3AuJHNsb3RzW1wiY2FsZW5kYXItaWNvblwiXT97bmFtZTpcImNhbGVuZGFyLWljb25cIixmbjplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QocC4kc2xvdHMsXCJjYWxlbmRhci1pY29uXCIpXSksa2V5OlwiMFwifTp2b2lkIDAscC4kc2xvdHNbXCJtb250aC1vdmVybGF5LXZhbHVlXCJdP3tuYW1lOlwibW9udGgtb3ZlcmxheS12YWxcIixmbjplLndpdGhDdHgoKHtpdGVtOkp9KT0+W2UucmVuZGVyU2xvdChwLiRzbG90cyxcIm1vbnRoLW92ZXJsYXktdmFsdWVcIix7dGV4dDpKLnRleHQsdmFsdWU6Si52YWx1ZX0pXSksa2V5OlwiMVwifTp2b2lkIDAscC4kc2xvdHNbXCJtb250aC1vdmVybGF5XCJdP3tuYW1lOlwib3ZlcmxheS1tb250aFwiLGZuOmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChwLiRzbG90cyxcIm1vbnRoLW92ZXJsYXlcIixlLm5vcm1hbGl6ZVByb3BzKGUuZ3VhcmRSZWFjdGl2ZVByb3BzKHRlLnZhbHVlKFwibW9udGhcIikpKSldKSxrZXk6XCIyXCJ9OnZvaWQgMCxwLiRzbG90c1tcIm1vbnRoLW92ZXJsYXktaGVhZGVyXCJdP3tuYW1lOlwib3ZlcmxheS1tb250aC1oZWFkZXJcIixmbjplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QocC4kc2xvdHMsXCJtb250aC1vdmVybGF5LWhlYWRlclwiLHt0b2dnbGU6bH0pXSksa2V5OlwiM1wifTp2b2lkIDBdKSwxMDQwLFtcImFyaWEtbGFiZWxcIixcIm1vZGVsVmFsdWVcIl0pLG4uZGlzYWJsZVllYXJTZWxlY3Q/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhKdCxlLm1lcmdlUHJvcHMoe2tleTowLHR5cGU6XCJ5ZWFyXCIsXCJzbG90LW5hbWVcIjpcInllYXItb3ZlcmxheS12YWxcIixcIm92ZXJsYXktc2xvdFwiOlwib3ZlcmxheS15ZWFyXCIsXCJhcmlhLWxhYmVsXCI6KHNlPWUudW5yZWYodSkuYXJpYUxhYmVscyk9PW51bGw/dm9pZCAwOnNlLm9wZW5ZZWFyc092ZXJsYXksbW9kZWxWYWx1ZTpWLnZhbHVlLFwib25VcGRhdGU6bW9kZWxWYWx1ZVwiOnNbNF18fChzWzRdPUo9PlYudmFsdWU9Sil9LEYudmFsdWUoXCJ5ZWFyXCIpLHtvblRvZ2dsZTprLG9uU2V0UmVmOnNbNV18fChzWzVdPUo9PnEoSiwyKSl9KSxlLmNyZWF0ZVNsb3RzKHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3AuJHNsb3RzLnllYXI/ZS5yZW5kZXJTbG90KHAuJHNsb3RzLFwieWVhclwiLHtrZXk6MCx5ZWFyOnQueWVhcn0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLHAuJHNsb3RzLnllYXI/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LnllYXIpLDEpXSw2NCkpXSksXzoyfSxbcC4kc2xvdHNbXCJjYWxlbmRhci1pY29uXCJdP3tuYW1lOlwiY2FsZW5kYXItaWNvblwiLGZuOmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChwLiRzbG90cyxcImNhbGVuZGFyLWljb25cIildKSxrZXk6XCIwXCJ9OnZvaWQgMCxwLiRzbG90c1tcInllYXItb3ZlcmxheS12YWx1ZVwiXT97bmFtZTpcInllYXItb3ZlcmxheS12YWxcIixmbjplLndpdGhDdHgoKHtpdGVtOkp9KT0+W2UucmVuZGVyU2xvdChwLiRzbG90cyxcInllYXItb3ZlcmxheS12YWx1ZVwiLHt0ZXh0OkoudGV4dCx2YWx1ZTpKLnZhbHVlfSldKSxrZXk6XCIxXCJ9OnZvaWQgMCxwLiRzbG90c1tcInllYXItb3ZlcmxheVwiXT97bmFtZTpcIm92ZXJsYXkteWVhclwiLGZuOmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChwLiRzbG90cyxcInllYXItb3ZlcmxheVwiLGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHModGUudmFsdWUoXCJ5ZWFyXCIpKSkpXSksa2V5OlwiMlwifTp2b2lkIDAscC4kc2xvdHNbXCJ5ZWFyLW92ZXJsYXktaGVhZGVyXCJdP3tuYW1lOlwib3ZlcmxheS15ZWFyLWhlYWRlclwiLGZuOmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChwLiRzbG90cyxcInllYXItb3ZlcmxheS1oZWFkZXJcIix7dG9nZ2xlOmt9KV0pLGtleTpcIjNcIn06dm9pZCAwXSksMTA0MCxbXCJhcmlhLWxhYmVsXCIsXCJtb2RlbFZhbHVlXCJdKSldLDIpLGcudmFsdWUmJnAudmVydGljYWw/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhrdCx7a2V5OjEsXCJhcmlhLWxhYmVsXCI6KCRlPWUudW5yZWYodSkuYXJpYUxhYmVscyk9PW51bGw/dm9pZCAwOiRlLnByZXZNb250aCxkaXNhYmxlZDplLnVucmVmKE4pKCExKSxvbkFjdGl2YXRlOnNbNl18fChzWzZdPUo9PmUudW5yZWYoXykoITEpKX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bcC4kc2xvdHNbXCJhcnJvdy11cFwiXT9lLnJlbmRlclNsb3QocC4kc2xvdHMsXCJhcnJvdy11cFwiLHtrZXk6MH0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLHAuJHNsb3RzW1wiYXJyb3ctdXBcIl0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFB0KSx7a2V5OjF9KSldKSxfOjN9LDgsW1wiYXJpYS1sYWJlbFwiLFwiZGlzYWJsZWRcIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxkLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soa3Qse2tleToyLHJlZjpcInJpZ2h0SWNvblwiLGRpc2FibGVkOmUudW5yZWYoTikoITApLFwiYXJpYS1sYWJlbFwiOihOZT1lLnVucmVmKHUpLmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDpOZS5uZXh0TW9udGgsb25BY3RpdmF0ZTpzWzddfHwoc1s3XT1KPT5lLnVucmVmKF8pKCEwKSksb25TZXRSZWY6c1s4XXx8KHNbOF09Sj0+cShKLDMpKX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bcC4kc2xvdHNbcC52ZXJ0aWNhbD9cImFycm93LWRvd25cIjpcImFycm93LXJpZ2h0XCJdP2UucmVuZGVyU2xvdChwLiRzbG90cyxwLnZlcnRpY2FsP1wiYXJyb3ctZG93blwiOlwiYXJyb3ctcmlnaHRcIix7a2V5OjB9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxwLiRzbG90c1twLnZlcnRpY2FsP1wiYXJyb3ctZG93blwiOlwiYXJyb3ctcmlnaHRcIl0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnJlc29sdmVEeW5hbWljQ29tcG9uZW50KHAudmVydGljYWw/ZS51bnJlZihBdCk6ZS51bnJlZih2dCkpLHtrZXk6MX0pKV0pLF86M30sOCxbXCJkaXNhYmxlZFwiLFwiYXJpYS1sYWJlbFwiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSw2NCkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLHAubW9udGhQaWNrZXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayh6ZSxlLm1lcmdlUHJvcHMoe2tleToxfSxGLnZhbHVlKFwibW9udGhcIikse1wic2tpcC1hY3RpdmVcIjpwLnJhbmdlLHllYXI6dC55ZWFyLFwibXVsdGktbW9kZWwtdmFsdWVcIjpDLnZhbHVlLFwibW9udGgtcGlja2VyXCI6XCJcIixtb2RlbFZhbHVlOkkudmFsdWUsXCJvblVwZGF0ZTptb2RlbFZhbHVlXCI6c1sxN118fChzWzE3XT1KPT5JLnZhbHVlPUopLG9uVG9nZ2xlOmwsb25TZWxlY3RlZDpzWzE4XXx8KHNbMThdPUo9PnAuJGVtaXQoXCJvdmVybGF5LWNsb3NlZFwiKSl9KSxlLmNyZWF0ZVNsb3RzKHtoZWFkZXI6ZS53aXRoQ3R4KCgpPT57dmFyIEosdmUsYmU7cmV0dXJuW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsRGEsW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse2NsYXNzOlwiZHBfX21vbnRoX3llYXJfY29sX25hdlwiLHRhYmluZGV4OlwiMFwiLHJlZl9rZXk6XCJtcFByZXZJY29uUmVmXCIscmVmOkcsb25DbGljazpzWzldfHwoc1s5XT1tZT0+QighMSkpLG9uS2V5ZG93bjpzWzEwXXx8KHNbMTBdPWUud2l0aEtleXMobWU9PkIoITEpLFtcImVudGVyXCJdKSl9LFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtjbGFzczplLm5vcm1hbGl6ZUNsYXNzKFtcImRwX19pbm5lcl9uYXZcIix7ZHBfX2lubmVyX25hdl9kaXNhYmxlZDplLnVucmVmKE4pKCExKX1dKSxyb2xlOlwiYnV0dG9uXCIsXCJhcmlhLWxhYmVsXCI6KEo9ZS51bnJlZih1KS5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6Si5wcmV2TW9udGh9LFtwLiRzbG90c1tcImFycm93LWxlZnRcIl0/ZS5yZW5kZXJTbG90KHAuJHNsb3RzLFwiYXJyb3ctbGVmdFwiLHtrZXk6MH0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLHAuJHNsb3RzW1wiYXJyb3ctbGVmdFwiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoTnQpLHtrZXk6MX0pKV0sMTAsQ2EpXSw1NDQpLGUuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse2NsYXNzOlwiZHBfX3BvaW50ZXJcIixyb2xlOlwiYnV0dG9uXCIscmVmX2tleTpcIm1wWWVhckJ1dHRvblJlZlwiLHJlZjpMLFwiYXJpYS1sYWJlbFwiOih2ZT1lLnVucmVmKHUpLmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDp2ZS5vcGVuWWVhcnNPdmVybGF5LHRhYmluZGV4OlwiMFwiLG9uQ2xpY2s6c1sxMV18fChzWzExXT0oKT0+ayghMSkpLG9uS2V5ZG93bjpzWzEyXXx8KHNbMTJdPWUud2l0aEtleXMoKCk9PmsoITEpLFtcImVudGVyXCJdKSl9LFtwLiRzbG90cy55ZWFyP2UucmVuZGVyU2xvdChwLiRzbG90cyxcInllYXJcIix7a2V5OjAseWVhcjp0LnllYXJ9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxwLiRzbG90cy55ZWFyP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxbZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcodC55ZWFyKSwxKV0sNjQpKV0sNDAsTWEpLGUuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse2NsYXNzOlwiZHBfX21vbnRoX3llYXJfY29sX25hdlwiLHRhYmluZGV4OlwiMFwiLHJlZl9rZXk6XCJtcE5leHRJY29uUmVmXCIscmVmOnosb25DbGljazpzWzEzXXx8KHNbMTNdPW1lPT5CKCEwKSksb25LZXlkb3duOnNbMTRdfHwoc1sxNF09ZS53aXRoS2V5cyhtZT0+QighMCksW1wiZW50ZXJcIl0pKX0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse2NsYXNzOmUubm9ybWFsaXplQ2xhc3MoW1wiZHBfX2lubmVyX25hdlwiLHtkcF9faW5uZXJfbmF2X2Rpc2FibGVkOmUudW5yZWYoTikoITApfV0pLHJvbGU6XCJidXR0b25cIixcImFyaWEtbGFiZWxcIjooYmU9ZS51bnJlZih1KS5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6YmUubmV4dE1vbnRofSxbcC4kc2xvdHNbXCJhcnJvdy1yaWdodFwiXT9lLnJlbmRlclNsb3QocC4kc2xvdHMsXCJhcnJvdy1yaWdodFwiLHtrZXk6MH0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLHAuJHNsb3RzW1wiYXJyb3ctcmlnaHRcIl0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHZ0KSx7a2V5OjF9KSldLDEwLCRhKV0sNTQ0KV0pLGUuY3JlYXRlVk5vZGUoZS5UcmFuc2l0aW9uLHtuYW1lOmUudW5yZWYobSkoZi52YWx1ZSksY3NzOmUudW5yZWYoaCl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2YudmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayh6ZSxlLm1lcmdlUHJvcHMoe2tleTowfSxGLnZhbHVlKFwieWVhclwiKSx7bW9kZWxWYWx1ZTpWLnZhbHVlLFwib25VcGRhdGU6bW9kZWxWYWx1ZVwiOnNbMTVdfHwoc1sxNV09bWU9PlYudmFsdWU9bWUpLG9uVG9nZ2xlOmssb25TZWxlY3RlZDpzWzE2XXx8KHNbMTZdPW1lPT5wLiRlbWl0KFwib3ZlcmxheS1jbG9zZWRcIikpfSksZS5jcmVhdGVTbG90cyh7XCJidXR0b24taWNvblwiOmUud2l0aEN0eCgoKT0+W3AuJHNsb3RzW1wiY2FsZW5kYXItaWNvblwiXT9lLnJlbmRlclNsb3QocC4kc2xvdHMsXCJjYWxlbmRhci1pY29uXCIse2tleTowfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCkscC4kc2xvdHNbXCJjYWxlbmRhci1pY29uXCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihIZSkse2tleToxfSkpXSksXzoyfSxbcC4kc2xvdHNbXCJ5ZWFyLW92ZXJsYXktdmFsdWVcIl0/e25hbWU6XCJpdGVtXCIsZm46ZS53aXRoQ3R4KCh7aXRlbTptZX0pPT5bZS5yZW5kZXJTbG90KHAuJHNsb3RzLFwieWVhci1vdmVybGF5LXZhbHVlXCIse3RleHQ6bWUudGV4dCx2YWx1ZTptZS52YWx1ZX0pXSksa2V5OlwiMFwifTp2b2lkIDBdKSwxMDQwLFtcIm1vZGVsVmFsdWVcIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV0pLF86M30sOCxbXCJuYW1lXCIsXCJjc3NcIl0pXX0pLF86Mn0sW3AuJHNsb3RzW1wibW9udGgtb3ZlcmxheS12YWx1ZVwiXT97bmFtZTpcIml0ZW1cIixmbjplLndpdGhDdHgoKHtpdGVtOkp9KT0+W2UucmVuZGVyU2xvdChwLiRzbG90cyxcIm1vbnRoLW92ZXJsYXktdmFsdWVcIix7dGV4dDpKLnRleHQsdmFsdWU6Si52YWx1ZX0pXSksa2V5OlwiMFwifTp2b2lkIDBdKSwxMDQwLFtcInNraXAtYWN0aXZlXCIsXCJ5ZWFyXCIsXCJtdWx0aS1tb2RlbC12YWx1ZVwiLFwibW9kZWxWYWx1ZVwiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLHAueWVhclBpY2tlcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKHplLGUubWVyZ2VQcm9wcyh7a2V5OjJ9LEYudmFsdWUoXCJ5ZWFyXCIpLHttb2RlbFZhbHVlOlYudmFsdWUsXCJvblVwZGF0ZTptb2RlbFZhbHVlXCI6c1sxOV18fChzWzE5XT1KPT5WLnZhbHVlPUopLFwibXVsdGktbW9kZWwtdmFsdWVcIjpDLnZhbHVlLFwic2tpcC1hY3RpdmVcIjpwLnJhbmdlLFwic2tpcC1idXR0b24tcmVmXCI6XCJcIixcInllYXItcGlja2VyXCI6XCJcIixvblRvZ2dsZTprLG9uU2VsZWN0ZWQ6c1syMF18fChzWzIwXT1KPT5wLiRlbWl0KFwib3ZlcmxheS1jbG9zZWRcIikpfSksZS5jcmVhdGVTbG90cyh7XzoyfSxbcC4kc2xvdHNbXCJ5ZWFyLW92ZXJsYXktdmFsdWVcIl0/e25hbWU6XCJpdGVtXCIsZm46ZS53aXRoQ3R4KCh7aXRlbTpKfSk9PltlLnJlbmRlclNsb3QocC4kc2xvdHMsXCJ5ZWFyLW92ZXJsYXktdmFsdWVcIix7dGV4dDpKLnRleHQsdmFsdWU6Si52YWx1ZX0pXSksa2V5OlwiMFwifTp2b2lkIDBdKSwxMDQwLFtcIm1vZGVsVmFsdWVcIixcIm11bHRpLW1vZGVsLXZhbHVlXCIsXCJza2lwLWFjdGl2ZVwiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSw2NCkpXSl9fX0pLEJhPXtrZXk6MCxjbGFzczpcImRwX190aW1lX2lucHV0XCJ9LE5hPVtcImFyaWEtbGFiZWxcIixcIm9uS2V5ZG93blwiLFwib25DbGlja1wiXSx2YT1bXCJhcmlhLWxhYmVsXCIsXCJvbktleWRvd25cIixcIm9uQ2xpY2tcIl0sVGE9W1wiYXJpYS1sYWJlbFwiLFwib25LZXlkb3duXCIsXCJvbkNsaWNrXCJdLFBhPXtrZXk6MH0sQWE9W1wiYXJpYS1sYWJlbFwiLFwib25LZXlkb3duXCJdLFZhPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6XCJUaW1lSW5wdXRcIixwcm9wczp7aG91cnM6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MH0sbWludXRlczp7dHlwZTpOdW1iZXIsZGVmYXVsdDowfSxzZWNvbmRzOnt0eXBlOk51bWJlcixkZWZhdWx0OjB9LGNsb3NlVGltZVBpY2tlckJ0bjp7dHlwZTpPYmplY3QsZGVmYXVsdDpudWxsfSxvcmRlcjp7dHlwZTpOdW1iZXIsZGVmYXVsdDowfSwuLi5WZX0sZW1pdHM6W1wic2V0LWhvdXJzXCIsXCJzZXQtbWludXRlc1wiLFwidXBkYXRlOmhvdXJzXCIsXCJ1cGRhdGU6bWludXRlc1wiLFwidXBkYXRlOnNlY29uZHNcIixcInJlc2V0LWZsb3dcIixcIm1vdW50ZWRcIixcIm92ZXJsYXktY2xvc2VkXCIsXCJhbS1wbS1jaGFuZ2VcIl0sc2V0dXAodCx7ZXhwb3NlOmEsZW1pdDpyfSl7Y29uc3Qgbj10LHtzZXRUaW1lUGlja2VyRWxlbWVudHM6dSxzZXRUaW1lUGlja2VyQmFja1JlZjptfT1BZSgpLHtkZWZhdWx0czpofT1EZShuKSx7dHJhbnNpdGlvbk5hbWU6VCxzaG93VHJhbnNpdGlvbjpffT1YZShoLnZhbHVlLnRyYW5zaXRpb25zKSxOPWUucmVhY3RpdmUoe2hvdXJzOiExLG1pbnV0ZXM6ITEsc2Vjb25kczohMX0pLFk9ZS5yZWYoXCJBTVwiKSx2PWUucmVmKG51bGwpLGY9ZS5yZWYoW10pO2Uub25Nb3VudGVkKCgpPT57cihcIm1vdW50ZWRcIil9KTtjb25zdCBiPW89PmMuc2V0KG5ldyBEYXRlLHtob3VyczpvLmhvdXJzLG1pbnV0ZXM6by5taW51dGVzLHNlY29uZHM6bi5lbmFibGVTZWNvbmRzP28uc2Vjb25kczowLG1pbGxpc2Vjb25kczowfSksRz1lLmNvbXB1dGVkKCgpPT4oe2hvdXJzOm4uaG91cnMsbWludXRlczpuLm1pbnV0ZXMsc2Vjb25kczpuLnNlY29uZHN9KSksTD1lLmNvbXB1dGVkKCgpPT5vPT4hbmUoK25bb10rICtuW2Ake299SW5jcmVtZW50YF0sbykpLHo9ZS5jb21wdXRlZCgoKT0+bz0+IW5lKCtuW29dLStuW2Ake299SW5jcmVtZW50YF0sbykpLFI9KG8sbCk9PmMuYWRkKGMuc2V0KFMoKSxvKSxsKSxJPShvLGwpPT5jLnN1YihjLnNldChTKCksbyksbCksVj1lLmNvbXB1dGVkKCgpPT4oe2RwX190aW1lX2NvbDohMCxkcF9fdGltZV9jb2xfcmVnOiFuLmVuYWJsZVNlY29uZHMmJm4uaXMyNCxkcF9fdGltZV9jb2xfcmVnX3dpdGhfYnV0dG9uOiFuLmVuYWJsZVNlY29uZHMmJiFuLmlzMjQsZHBfX3RpbWVfY29sX3NlYzpuLmVuYWJsZVNlY29uZHMmJm4uaXMyNCxkcF9fdGltZV9jb2xfc2VjX3dpdGhfYnV0dG9uOm4uZW5hYmxlU2Vjb25kcyYmIW4uaXMyNH0pKSxVPWUuY29tcHV0ZWQoKCk9Pntjb25zdCBvPVt7dHlwZTpcImhvdXJzXCJ9LHt0eXBlOlwiXCIsc2VwYXJhdG9yOiEwfSx7dHlwZTpcIm1pbnV0ZXNcIn1dO3JldHVybiBuLmVuYWJsZVNlY29uZHM/by5jb25jYXQoW3t0eXBlOlwiXCIsc2VwYXJhdG9yOiEwfSx7dHlwZTpcInNlY29uZHNcIn1dKTpvfSksSz1lLmNvbXB1dGVkKCgpPT5VLnZhbHVlLmZpbHRlcihvPT4hby5zZXBhcmF0b3IpKSxGPWUuY29tcHV0ZWQoKCk9Pm89PntpZihvPT09XCJob3Vyc1wiKXtjb25zdCBsPUEoK24uaG91cnMpO3JldHVybnt0ZXh0Omw8MTA/YDAke2x9YDpgJHtsfWAsdmFsdWU6bH19cmV0dXJue3RleHQ6bltvXTwxMD9gMCR7bltvXX1gOmAke25bb119YCx2YWx1ZTpuW29dfX0pLHRlPW89Pntjb25zdCBsPW4uaXMyND8yNDoxMixrPW89PT1cImhvdXJzXCI/bDo2MCxNPStuW2Ake299R3JpZEluY3JlbWVudGBdLEI9bz09PVwiaG91cnNcIiYmIW4uaXMyND9NOjAscT1bXTtmb3IobGV0IHA9QjtwPGs7cCs9TSlxLnB1c2goe3ZhbHVlOnAsdGV4dDpwPDEwP2AwJHtwfWA6YCR7cH1gfSk7cmV0dXJuIG89PT1cImhvdXJzXCImJiFuLmlzMjQmJnEucHVzaCh7dmFsdWU6MCx0ZXh0OlwiMTJcIn0pLEFuKHEpfSxuZT0obyxsKT0+e2NvbnN0IGs9bi5taW5UaW1lP2IoZXQobi5taW5UaW1lKSk6bnVsbCxNPW4ubWF4VGltZT9iKGV0KG4ubWF4VGltZSkpOm51bGwsQj1iKGV0KEcudmFsdWUsbCxvKSk7cmV0dXJuIGsmJk0/KGMuaXNCZWZvcmUoQixNKXx8Yy5pc0VxdWFsKEIsTSkpJiYoYy5pc0FmdGVyKEIsayl8fGMuaXNFcXVhbChCLGspKTprP2MuaXNBZnRlcihCLGspfHxjLmlzRXF1YWwoQixrKTpNP2MuaXNCZWZvcmUoQixNKXx8Yy5pc0VxdWFsKEIsTSk6ITB9LGFlPWUuY29tcHV0ZWQoKCk9Pm89PnRlKG8pLmZsYXQoKS5maWx0ZXIoaz0+a3x8KGs9PW51bGw/dm9pZCAwOmsudmFsdWUpPT09MCkubWFwKGs9PmsudmFsdWUpLmZpbHRlcihrPT4hbmUoayxvKSkpLHJlPW89Pm5bYG5vJHtvWzBdLnRvVXBwZXJDYXNlKCkrby5zbGljZSgxKX1PdmVybGF5YF0sUD1vPT57cmUobyl8fChOW29dPSFOW29dLE5bb118fHIoXCJvdmVybGF5LWNsb3NlZFwiKSl9LEM9bz0+bz09PVwiaG91cnNcIj9jLmdldEhvdXJzOm89PT1cIm1pbnV0ZXNcIj9jLmdldE1pbnV0ZXM6Yy5nZXRTZWNvbmRzLHk9KG8sbD0hMCk9Pntjb25zdCBrPWw/UjpJLE09bD8rbltgJHtvfUluY3JlbWVudGBdOi0rbltgJHtvfUluY3JlbWVudGBdO25lKCtuW29dK00sbykmJnIoYHVwZGF0ZToke299YCxDKG8pKGsoe1tvXTorbltvXX0se1tvXTorbltgJHtvfUluY3JlbWVudGBdfSkpKX0sQT1vPT5uLmlzMjQ/bzoobz49MTI/WS52YWx1ZT1cIlBNXCI6WS52YWx1ZT1cIkFNXCIsX24obykpLEU9KCk9PntZLnZhbHVlPT09XCJQTVwiPyhZLnZhbHVlPVwiQU1cIixyKFwidXBkYXRlOmhvdXJzXCIsbi5ob3Vycy0xMikpOihZLnZhbHVlPVwiUE1cIixyKFwidXBkYXRlOmhvdXJzXCIsbi5ob3VycysxMikpLHIoXCJhbS1wbS1jaGFuZ2VcIixZLnZhbHVlKX0sJD1vPT57TltvXT0hMH0sZz0obyxsLGspPT57aWYobyYmbi5hcnJvd05hdmlnYXRpb24pe0FycmF5LmlzQXJyYXkoZi52YWx1ZVtsXSk/Zi52YWx1ZVtsXVtrXT1vOmYudmFsdWVbbF09W29dO2NvbnN0IE09Zi52YWx1ZS5yZWR1Y2UoKEIscSk9PnEubWFwKChwLHMpPT5bLi4uQltzXXx8W10scVtzXV0pLFtdKTttKG4uY2xvc2VUaW1lUGlja2VyQnRuKSx2LnZhbHVlJiYoTVsxXT1NWzFdLmNvbmNhdCh2LnZhbHVlKSksdShNLG4ub3JkZXIpfX0sZD0obyxsKT0+bz09PVwiaG91cnNcIiYmIW4uaXMyND9yKGB1cGRhdGU6JHtvfWAsWS52YWx1ZT09PVwiUE1cIj9sKzEyOmwpOnIoYHVwZGF0ZToke299YCxsKTtyZXR1cm4gYSh7b3BlbkNoaWxkQ21wOiR9KSwobyxsKT0+e3ZhciBrO3JldHVybiBvLmRpc2FibGVkP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIsQmEsWyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChVLnZhbHVlLChNLEIpPT57dmFyIHEscCxzO3JldHVybiBlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2tleTpCLGNsYXNzOmUubm9ybWFsaXplQ2xhc3MoVi52YWx1ZSl9LFtNLnNlcGFyYXRvcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MH0sW2UuY3JlYXRlVGV4dFZOb2RlKFwiIDogXCIpXSw2NCkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJidXR0b25cIix7dHlwZTpcImJ1dHRvblwiLGNsYXNzOmUubm9ybWFsaXplQ2xhc3Moe2RwX19idG46ITAsZHBfX2luY19kZWNfYnV0dG9uOiEwLGRwX19pbmNfZGVjX2J1dHRvbl9kaXNhYmxlZDpMLnZhbHVlKE0udHlwZSl9KSxcImFyaWEtbGFiZWxcIjoocT1lLnVucmVmKGgpLmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDpxLmluY3JlbWVudFZhbHVlKE0udHlwZSksdGFiaW5kZXg6XCIwXCIsb25LZXlkb3duOltlLndpdGhLZXlzKE89PnkoTS50eXBlKSxbXCJlbnRlclwiXSksZS53aXRoS2V5cyhPPT55KE0udHlwZSksW1wic3BhY2VcIl0pXSxvbkNsaWNrOk89PnkoTS50eXBlKSxyZWZfZm9yOiEwLHJlZjpPPT5nKE8sQiwwKX0sW28uJHNsb3RzW1wiYXJyb3ctdXBcIl0/ZS5yZW5kZXJTbG90KG8uJHNsb3RzLFwiYXJyb3ctdXBcIix7a2V5OjB9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxvLiRzbG90c1tcImFycm93LXVwXCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihQdCkse2tleToxfSkpXSw0MixOYSksZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJidXR0b25cIix7dHlwZTpcImJ1dHRvblwiLFwiYXJpYS1sYWJlbFwiOihwPWUudW5yZWYoaCkuYXJpYUxhYmVscyk9PW51bGw/dm9pZCAwOnAub3BlblRwT3ZlcmxheShNLnR5cGUpLGNsYXNzOmUubm9ybWFsaXplQ2xhc3MoW1wiZHBfX2J0blwiLHJlKE0udHlwZSk/XCJcIjpcImRwX190aW1lX2Rpc3BsYXlcIl0pLHRhYmluZGV4OlwiMFwiLG9uS2V5ZG93bjpbZS53aXRoS2V5cyhPPT5QKE0udHlwZSksW1wiZW50ZXJcIl0pLGUud2l0aEtleXMoTz0+UChNLnR5cGUpLFtcInNwYWNlXCJdKV0sb25DbGljazpPPT5QKE0udHlwZSkscmVmX2ZvcjohMCxyZWY6Tz0+ZyhPLEIsMSl9LFtvLiRzbG90c1tNLnR5cGVdP2UucmVuZGVyU2xvdChvLiRzbG90cyxNLnR5cGUse2tleTowLHRleHQ6Ri52YWx1ZShNLnR5cGUpLnRleHQsdmFsdWU6Ri52YWx1ZShNLnR5cGUpLnZhbHVlfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksby4kc2xvdHNbTS50eXBlXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKEYudmFsdWUoTS50eXBlKS50ZXh0KSwxKV0sNjQpKV0sNDIsdmEpLGUuY3JlYXRlRWxlbWVudFZOb2RlKFwiYnV0dG9uXCIse3R5cGU6XCJidXR0b25cIixjbGFzczplLm5vcm1hbGl6ZUNsYXNzKHtkcF9fYnRuOiEwLGRwX19pbmNfZGVjX2J1dHRvbjohMCxkcF9faW5jX2RlY19idXR0b25fZGlzYWJsZWQ6ei52YWx1ZShNLnR5cGUpfSksXCJhcmlhLWxhYmVsXCI6KHM9ZS51bnJlZihoKS5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6cy5kZWNyZW1lbnRWYWx1ZShNLnR5cGUpLHRhYmluZGV4OlwiMFwiLG9uS2V5ZG93bjpbZS53aXRoS2V5cyhPPT55KE0udHlwZSwhMSksW1wiZW50ZXJcIl0pLGUud2l0aEtleXMoTz0+eShNLnR5cGUsITEpLFtcInNwYWNlXCJdKV0sb25DbGljazpPPT55KE0udHlwZSwhMSkscmVmX2ZvcjohMCxyZWY6Tz0+ZyhPLEIsMil9LFtvLiRzbG90c1tcImFycm93LWRvd25cIl0/ZS5yZW5kZXJTbG90KG8uJHNsb3RzLFwiYXJyb3ctZG93blwiLHtrZXk6MH0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLG8uJHNsb3RzW1wiYXJyb3ctZG93blwiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoQXQpLHtrZXk6MX0pKV0sNDIsVGEpXSw2NCkpXSwyKX0pLDEyOCkpLG8uaXMyND9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLFBhLFtvLiRzbG90c1tcImFtLXBtLWJ1dHRvblwiXT9lLnJlbmRlclNsb3Qoby4kc2xvdHMsXCJhbS1wbS1idXR0b25cIix7a2V5OjAsdG9nZ2xlOkUsdmFsdWU6WS52YWx1ZX0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLG8uJHNsb3RzW1wiYW0tcG0tYnV0dG9uXCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiYnV0dG9uXCIse2tleToxLHJlZl9rZXk6XCJhbVBtQnV0dG9uXCIscmVmOnYsdHlwZTpcImJ1dHRvblwiLGNsYXNzOlwiZHBfX3BtX2FtX2J1dHRvblwiLHJvbGU6XCJidXR0b25cIixcImFyaWEtbGFiZWxcIjooaz1lLnVucmVmKGgpLmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDprLmFtUG1CdXR0b24sdGFiaW5kZXg6XCIwXCIsb25DbGljazpFLG9uS2V5ZG93bjpbZS53aXRoS2V5cyhlLndpdGhNb2RpZmllcnMoRSxbXCJwcmV2ZW50XCJdKSxbXCJlbnRlclwiXSksZS53aXRoS2V5cyhlLndpdGhNb2RpZmllcnMoRSxbXCJwcmV2ZW50XCJdKSxbXCJzcGFjZVwiXSldfSxlLnRvRGlzcGxheVN0cmluZyhZLnZhbHVlKSw0MSxBYSkpXSkpLChlLm9wZW5CbG9jayghMCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChLLnZhbHVlLChNLEIpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUuVHJhbnNpdGlvbix7a2V5OkIsbmFtZTplLnVucmVmKFQpKE5bTS50eXBlXSksY3NzOmUudW5yZWYoXyl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W05bTS50eXBlXT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKHplLHtrZXk6MCxpdGVtczp0ZShNLnR5cGUpLFwiZGlzYWJsZWQtdmFsdWVzXCI6ZS51bnJlZihoKS5maWx0ZXJzLnRpbWVzW00udHlwZV0uY29uY2F0KGFlLnZhbHVlKE0udHlwZSkpLFwiZXNjLWNsb3NlXCI6by5lc2NDbG9zZSxcImFyaWEtbGFiZWxzXCI6ZS51bnJlZihoKS5hcmlhTGFiZWxzLFwiaGlkZS1uYXZpZ2F0aW9uXCI6by5oaWRlTmF2aWdhdGlvbixcIm9uVXBkYXRlOm1vZGVsVmFsdWVcIjpxPT5kKE0udHlwZSxxKSxvblNlbGVjdGVkOnE9PlAoTS50eXBlKSxvblRvZ2dsZTpxPT5QKE0udHlwZSksb25SZXNldEZsb3c6bFswXXx8KGxbMF09cT0+by4kZW1pdChcInJlc2V0LWZsb3dcIikpLHR5cGU6TS50eXBlfSxlLmNyZWF0ZVNsb3RzKHtcImJ1dHRvbi1pY29uXCI6ZS53aXRoQ3R4KCgpPT5bby4kc2xvdHNbXCJjbG9jay1pY29uXCJdP2UucmVuZGVyU2xvdChvLiRzbG90cyxcImNsb2NrLWljb25cIix7a2V5OjB9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxvLiRzbG90c1tcImNsb2NrLWljb25cIl0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFR0KSx7a2V5OjF9KSldKSxfOjJ9LFtvLiRzbG90c1tgJHtNLnR5cGV9LW92ZXJsYXktdmFsdWVgXT97bmFtZTpcIml0ZW1cIixmbjplLndpdGhDdHgoKHtpdGVtOnF9KT0+W2UucmVuZGVyU2xvdChvLiRzbG90cyxgJHtNLnR5cGV9LW92ZXJsYXktdmFsdWVgLHt0ZXh0OnEudGV4dCx2YWx1ZTpxLnZhbHVlfSldKSxrZXk6XCIwXCJ9OnZvaWQgMF0pLDEwMzIsW1wiaXRlbXNcIixcImRpc2FibGVkLXZhbHVlc1wiLFwiZXNjLWNsb3NlXCIsXCJhcmlhLWxhYmVsc1wiLFwiaGlkZS1uYXZpZ2F0aW9uXCIsXCJvblVwZGF0ZTptb2RlbFZhbHVlXCIsXCJvblNlbGVjdGVkXCIsXCJvblRvZ2dsZVwiLFwidHlwZVwiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSksXzoyfSwxMDMyLFtcIm5hbWVcIixcImNzc1wiXSkpKSwxMjgpKV0pKX19fSksRWE9W1wiYXJpYS1sYWJlbFwiXSxSYT17Y2xhc3M6XCJkcF9fb3ZlcmxheV9jb250YWluZXIgZHBfX2NvbnRhaW5lcl9mbGV4IGRwX190aW1lX3BpY2tlcl9vdmVybGF5X2NvbnRhaW5lclwifSxfYT17a2V5OjEsY2xhc3M6XCJkcF9fb3ZlcmxheV9yb3cgZHBfX2ZsZXhfcm93XCJ9LE9hPVtcImFyaWEtbGFiZWxcIl0sWWE9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZTpcIlRpbWVQaWNrZXJcIixwcm9wczp7aG91cnM6e3R5cGU6W051bWJlcixBcnJheV0sZGVmYXVsdDowfSxtaW51dGVzOnt0eXBlOltOdW1iZXIsQXJyYXldLGRlZmF1bHQ6MH0sc2Vjb25kczp7dHlwZTpbTnVtYmVyLEFycmF5XSxkZWZhdWx0OjB9LGludGVybmFsTW9kZWxWYWx1ZTp7dHlwZTpbRGF0ZSxBcnJheV0sZGVmYXVsdDpudWxsfSwuLi5WZX0sZW1pdHM6W1widXBkYXRlOmhvdXJzXCIsXCJ1cGRhdGU6bWludXRlc1wiLFwidXBkYXRlOnNlY29uZHNcIixcIm1vdW50XCIsXCJyZXNldC1mbG93XCIsXCJvdmVybGF5LW9wZW5lZFwiLFwib3ZlcmxheS1jbG9zZWRcIixcImFtLXBtLWNoYW5nZVwiXSxzZXR1cCh0LHtleHBvc2U6YSxlbWl0OnJ9KXtjb25zdCBuPXQse2J1aWxkTWF0cml4OnUsc2V0VGltZVBpY2tlcjptfT1BZSgpLGg9ZS51c2VTbG90cygpLHtoaWRlTmF2aWdhdGlvbkJ1dHRvbnM6VCxkZWZhdWx0czpffT1EZShuKSx7dHJhbnNpdGlvbk5hbWU6TixzaG93VHJhbnNpdGlvbjpZfT1YZShfLnZhbHVlLnRyYW5zaXRpb25zKSx2PWUucmVmKG51bGwpLGY9ZS5yZWYobnVsbCksYj1lLnJlZihbXSksRz1lLnJlZihudWxsKTtlLm9uTW91bnRlZCgoKT0+e3IoXCJtb3VudFwiKSwhbi50aW1lUGlja2VyJiZuLmFycm93TmF2aWdhdGlvbj91KFtjZSh2LnZhbHVlKV0sXCJ0aW1lXCIpOm0oITAsbi50aW1lUGlja2VyKX0pO2NvbnN0IEw9ZS5jb21wdXRlZCgoKT0+bi5yYW5nZSYmbi5tb2RlbEF1dG8/anQobi5pbnRlcm5hbE1vZGVsVmFsdWUpOiEwKSx6PWUucmVmKCExKSxSPVA9Pih7aG91cnM6QXJyYXkuaXNBcnJheShuLmhvdXJzKT9uLmhvdXJzW1BdOm4uaG91cnMsbWludXRlczpBcnJheS5pc0FycmF5KG4ubWludXRlcyk/bi5taW51dGVzW1BdOm4ubWludXRlcyxzZWNvbmRzOkFycmF5LmlzQXJyYXkobi5zZWNvbmRzKT9uLnNlY29uZHNbUF06bi5zZWNvbmRzfSksST1lLmNvbXB1dGVkKCgpPT57Y29uc3QgUD1bXTtpZihuLnJhbmdlKWZvcihsZXQgQz0wO0M8MjtDKyspUC5wdXNoKFIoQykpO2Vsc2UgUC5wdXNoKFIoMCkpO3JldHVybiBQfSksVj0oUCxDPSExLHk9XCJcIik9PntDfHxyKFwicmVzZXQtZmxvd1wiKSx6LnZhbHVlPVAscihQP1wib3ZlcmxheS1vcGVuZWRcIjpcIm92ZXJsYXktY2xvc2VkXCIpLG4uYXJyb3dOYXZpZ2F0aW9uJiZtKFApLGUubmV4dFRpY2soKCk9Pnt5IT09XCJcIiYmYi52YWx1ZVswXSYmYi52YWx1ZVswXS5vcGVuQ2hpbGRDbXAoeSl9KX0sVT1lLmNvbXB1dGVkKCgpPT4oe2RwX19idG46ITAsZHBfX2J1dHRvbjohMCxkcF9fYnV0dG9uX2JvdHRvbTpuLmF1dG9BcHBseSYmIW4ua2VlcEFjdGlvblJvd30pKSxLPU9lKGgsXCJ0aW1lUGlja2VyXCIpLEY9KFAsQyx5KT0+bi5yYW5nZT9DPT09MD9bUCxJLnZhbHVlWzFdW3ldXTpbSS52YWx1ZVswXVt5XSxQXTpQLHRlPVA9PntyKFwidXBkYXRlOmhvdXJzXCIsUCl9LG5lPVA9PntyKFwidXBkYXRlOm1pbnV0ZXNcIixQKX0sYWU9UD0+e3IoXCJ1cGRhdGU6c2Vjb25kc1wiLFApfSxyZT0oKT0+e0cudmFsdWUmJm4uYXJyb3dOYXZpZ2F0aW9uJiZHLnZhbHVlLmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSl9O3JldHVybiBhKHt0b2dnbGVUaW1lUGlja2VyOlZ9KSwoUCxDKT0+e3ZhciB5O3JldHVybiBlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIsbnVsbCxbUC50aW1lUGlja2VyP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOmUud2l0aERpcmVjdGl2ZXMoKGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJidXR0b25cIix7a2V5OjAsdHlwZTpcImJ1dHRvblwiLGNsYXNzOmUubm9ybWFsaXplQ2xhc3MoVS52YWx1ZSksXCJhcmlhLWxhYmVsXCI6KHk9ZS51bnJlZihfKS5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6eS5vcGVuVGltZVBpY2tlcix0YWJpbmRleDpcIjBcIixyZWZfa2V5Olwib3BlblRpbWVQaWNrZXJCdG5cIixyZWY6dixvbktleWRvd246W0NbMF18fChDWzBdPWUud2l0aEtleXMoQT0+VighMCksW1wiZW50ZXJcIl0pKSxDWzFdfHwoQ1sxXT1lLndpdGhLZXlzKEE9PlYoITApLFtcInNwYWNlXCJdKSldLG9uQ2xpY2s6Q1syXXx8KENbMl09QT0+VighMCkpfSxbUC4kc2xvdHNbXCJjbG9jay1pY29uXCJdP2UucmVuZGVyU2xvdChQLiRzbG90cyxcImNsb2NrLWljb25cIix7a2V5OjB9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxQLiRzbG90c1tcImNsb2NrLWljb25cIl0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFR0KSx7a2V5OjF9KSldLDQyLEVhKSksW1tlLnZTaG93LCFlLnVucmVmKFQpKFwidGltZVwiKV1dKSxlLmNyZWF0ZVZOb2RlKGUuVHJhbnNpdGlvbix7bmFtZTplLnVucmVmKE4pKHoudmFsdWUpLGNzczplLnVucmVmKFkpfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Pnt2YXIgQTtyZXR1cm5bei52YWx1ZXx8UC50aW1lUGlja2VyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2tleTowLGNsYXNzOlwiZHBfX292ZXJsYXlcIixyZWZfa2V5Olwib3ZlcmxheVJlZlwiLHJlZjpHLHRhYmluZGV4OlwiMFwifSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIixSYSxbUC4kc2xvdHNbXCJ0aW1lLXBpY2tlci1vdmVybGF5XCJdP2UucmVuZGVyU2xvdChQLiRzbG90cyxcInRpbWUtcGlja2VyLW92ZXJsYXlcIix7a2V5OjAsaG91cnM6dC5ob3VycyxtaW51dGVzOnQubWludXRlcyxzZWNvbmRzOnQuc2Vjb25kcyxzZXRIb3Vyczp0ZSxzZXRNaW51dGVzOm5lLHNldFNlY29uZHM6YWV9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxQLiRzbG90c1tcInRpbWUtcGlja2VyLW92ZXJsYXlcIl0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIixfYSxbKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KEkudmFsdWUsKEUsJCk9PmUud2l0aERpcmVjdGl2ZXMoKGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhWYSxlLm1lcmdlUHJvcHMoe2tleTokfSx7Li4uUC4kcHJvcHMsb3JkZXI6JCxob3VyczpFLmhvdXJzLG1pbnV0ZXM6RS5taW51dGVzLHNlY29uZHM6RS5zZWNvbmRzLGNsb3NlVGltZVBpY2tlckJ0bjpmLnZhbHVlLGRpc2FibGVkOiQ9PT0wP1AuZml4ZWRTdGFydDpQLmZpeGVkRW5kfSx7cmVmX2ZvcjohMCxyZWZfa2V5OlwidGltZUlucHV0UmVmc1wiLHJlZjpiLFwib25VcGRhdGU6aG91cnNcIjpnPT50ZShGKGcsJCxcImhvdXJzXCIpKSxcIm9uVXBkYXRlOm1pbnV0ZXNcIjpnPT5uZShGKGcsJCxcIm1pbnV0ZXNcIikpLFwib25VcGRhdGU6c2Vjb25kc1wiOmc9PmFlKEYoZywkLFwic2Vjb25kc1wiKSksb25Nb3VudGVkOnJlLG9uT3ZlcmxheUNsb3NlZDpyZSxvbkFtUG1DaGFuZ2U6Q1szXXx8KENbM109Zz0+UC4kZW1pdChcImFtLXBtLWNoYW5nZVwiLGcpKX0pLGUuY3JlYXRlU2xvdHMoe186Mn0sW2UucmVuZGVyTGlzdChlLnVucmVmKEspLChnLGQpPT4oe25hbWU6ZyxmbjplLndpdGhDdHgobz0+W2UucmVuZGVyU2xvdChQLiRzbG90cyxnLGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHMobykpKV0pfSkpXSksMTA0MCxbXCJvblVwZGF0ZTpob3Vyc1wiLFwib25VcGRhdGU6bWludXRlc1wiLFwib25VcGRhdGU6c2Vjb25kc1wiXSkpLFtbZS52U2hvdywkPT09MD8hMDpMLnZhbHVlXV0pKSwxMjgpKV0pKSxQLnRpbWVQaWNrZXI/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6ZS53aXRoRGlyZWN0aXZlcygoZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImJ1dHRvblwiLHtrZXk6Mix0eXBlOlwiYnV0dG9uXCIscmVmX2tleTpcImNsb3NlVGltZVBpY2tlckJ0blwiLHJlZjpmLGNsYXNzOmUubm9ybWFsaXplQ2xhc3MoVS52YWx1ZSksXCJhcmlhLWxhYmVsXCI6KEE9ZS51bnJlZihfKS5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6QS5jbG9zZVRpbWVQaWNrZXIsdGFiaW5kZXg6XCIwXCIsb25LZXlkb3duOltDWzRdfHwoQ1s0XT1lLndpdGhLZXlzKEU9PlYoITEpLFtcImVudGVyXCJdKSksQ1s1XXx8KENbNV09ZS53aXRoS2V5cyhFPT5WKCExKSxbXCJzcGFjZVwiXSkpXSxvbkNsaWNrOkNbNl18fChDWzZdPUU9PlYoITEpKX0sW1AuJHNsb3RzW1wiY2FsZW5kYXItaWNvblwiXT9lLnJlbmRlclNsb3QoUC4kc2xvdHMsXCJjYWxlbmRhci1pY29uXCIse2tleTowfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksUC4kc2xvdHNbXCJjYWxlbmRhci1pY29uXCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihIZSkse2tleToxfSkpXSw0MixPYSkpLFtbZS52U2hvdywhZS51bnJlZihUKShcInRpbWVcIildXSldKV0sNTEyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCldfSksXzozfSw4LFtcIm5hbWVcIixcImNzc1wiXSldKX19fSksSWE9KHQsYSk9Pntjb25zdHtpc0Rpc2FibGVkOnIsbWF0Y2hEYXRlOm4sZ2V0V2Vla0Zyb21EYXRlOnUsZGVmYXVsdHM6bX09RGUoYSksaD1lLnJlZihudWxsKSxUPWUucmVmKFMoKSksXz1sPT57IWwuY3VycmVudCYmYS5oaWRlT2Zmc2V0RGF0ZXN8fChoLnZhbHVlPWwudmFsdWUpfSxOPSgpPT57aC52YWx1ZT1udWxsfSxZPWw9PkFycmF5LmlzQXJyYXkodC52YWx1ZSkmJmEucmFuZ2UmJnQudmFsdWVbMF0mJmgudmFsdWU/bD9oZShoLnZhbHVlLHQudmFsdWVbMF0pOmdlKGgudmFsdWUsdC52YWx1ZVswXSk6ITAsdj0obCxrKT0+e2NvbnN0IE09KCk9PnQudmFsdWU/az90LnZhbHVlWzBdfHxudWxsOnQudmFsdWVbMV06bnVsbCxCPXQudmFsdWUmJkFycmF5LmlzQXJyYXkodC52YWx1ZSk/TSgpOm51bGw7cmV0dXJuIG9lKFMobC52YWx1ZSksQil9LGY9bD0+e2NvbnN0IGs9QXJyYXkuaXNBcnJheSh0LnZhbHVlKT90LnZhbHVlWzBdOm51bGw7cmV0dXJuIGw/IWdlKGgudmFsdWV8fG51bGwsayk6ITB9LGI9KGwsaz0hMCk9PihhLnJhbmdlfHxhLndlZWtQaWNrZXIpJiZBcnJheS5pc0FycmF5KHQudmFsdWUpJiZ0LnZhbHVlLmxlbmd0aD09PTI/YS5oaWRlT2Zmc2V0RGF0ZXMmJiFsLmN1cnJlbnQ/ITE6b2UoUyhsLnZhbHVlKSx0LnZhbHVlW2s/MDoxXSk6YS5yYW5nZT92KGwsaykmJmYoayl8fG9lKGwudmFsdWUsQXJyYXkuaXNBcnJheSh0LnZhbHVlKT90LnZhbHVlWzBdOm51bGwpJiZZKGspOiExLEc9KGwsayxNKT0+QXJyYXkuaXNBcnJheSh0LnZhbHVlKSYmdC52YWx1ZVswXSYmdC52YWx1ZS5sZW5ndGg9PT0xP2w/ITE6TT9oZSh0LnZhbHVlWzBdLGsudmFsdWUpOmdlKHQudmFsdWVbMF0say52YWx1ZSk6ITEsTD1sPT4hdC52YWx1ZXx8YS5oaWRlT2Zmc2V0RGF0ZXMmJiFsLmN1cnJlbnQ/ITE6YS5yYW5nZT9hLm1vZGVsQXV0byYmQXJyYXkuaXNBcnJheSh0LnZhbHVlKT9vZShsLnZhbHVlLHQudmFsdWVbMF0/dC52YWx1ZVswXTpULnZhbHVlKTohMTphLm11bHRpRGF0ZXMmJkFycmF5LmlzQXJyYXkodC52YWx1ZSk/dC52YWx1ZS5zb21lKGs9Pm9lKGssbC52YWx1ZSkpOm9lKGwudmFsdWUsdC52YWx1ZT90LnZhbHVlOlQudmFsdWUpLHo9bD0+e2lmKGEuYXV0b1JhbmdlfHxhLndlZWtQaWNrZXIpe2lmKGgudmFsdWUpe2lmKGEuaGlkZU9mZnNldERhdGVzJiYhbC5jdXJyZW50KXJldHVybiExO2NvbnN0IGs9Yy5hZGREYXlzKGgudmFsdWUsK2EuYXV0b1JhbmdlKSxNPXUoUyhoLnZhbHVlKSk7cmV0dXJuIGEud2Vla1BpY2tlcj9vZShNWzFdLFMobC52YWx1ZSkpOm9lKGssUyhsLnZhbHVlKSl9cmV0dXJuITF9cmV0dXJuITF9LFI9bD0+e2lmKGEuYXV0b1JhbmdlfHxhLndlZWtQaWNrZXIpe2lmKGgudmFsdWUpe2NvbnN0IGs9Yy5hZGREYXlzKGgudmFsdWUsK2EuYXV0b1JhbmdlKTtpZihhLmhpZGVPZmZzZXREYXRlcyYmIWwuY3VycmVudClyZXR1cm4hMTtjb25zdCBNPXUoUyhoLnZhbHVlKSk7cmV0dXJuIGEud2Vla1BpY2tlcj9oZShsLnZhbHVlLE1bMF0pJiZnZShsLnZhbHVlLE1bMV0pOmhlKGwudmFsdWUsaC52YWx1ZSkmJmdlKGwudmFsdWUsayl9cmV0dXJuITF9cmV0dXJuITF9LEk9bD0+e2lmKGEuYXV0b1JhbmdlfHxhLndlZWtQaWNrZXIpe2lmKGgudmFsdWUpe2lmKGEuaGlkZU9mZnNldERhdGVzJiYhbC5jdXJyZW50KXJldHVybiExO2NvbnN0IGs9dShTKGgudmFsdWUpKTtyZXR1cm4gYS53ZWVrUGlja2VyP29lKGtbMF0sbC52YWx1ZSk6b2UoaC52YWx1ZSxsLnZhbHVlKX1yZXR1cm4hMX1yZXR1cm4hMX0sVj1sPT5FdCh0LnZhbHVlLGgudmFsdWUsbC52YWx1ZSksVT0oKT0+YS5tb2RlbEF1dG8mJkFycmF5LmlzQXJyYXkoYS5pbnRlcm5hbE1vZGVsVmFsdWUpPyEhYS5pbnRlcm5hbE1vZGVsVmFsdWVbMF06ITEsSz0oKT0+YS5tb2RlbEF1dG8/anQoYS5pbnRlcm5hbE1vZGVsVmFsdWUpOiEwLEY9bD0+e2lmKEFycmF5LmlzQXJyYXkodC52YWx1ZSkmJnQudmFsdWUubGVuZ3RofHxhLndlZWtQaWNrZXIpcmV0dXJuITE7Y29uc3Qgaz1hLnJhbmdlPyFiKGwpJiYhYihsLCExKTohMDtyZXR1cm4hcihsLnZhbHVlKSYmIUwobCkmJiEoIWwuY3VycmVudCYmYS5oaWRlT2Zmc2V0RGF0ZXMpJiZrfSx0ZT1sPT5hLnJhbmdlP2EubW9kZWxBdXRvP1UoKSYmTChsKTohMTpMKGwpLG5lPWw9PmEuaGlnaGxpZ2h0P24obC52YWx1ZSxhLmhpZ2hsaWdodCk6ITEsYWU9bD0+cihsLnZhbHVlKSYmYS5oaWdobGlnaHREaXNhYmxlZERheXM9PT0hMSxyZT1sPT5hLmhpZ2hsaWdodFdlZWtEYXlzJiZhLmhpZ2hsaWdodFdlZWtEYXlzLmluY2x1ZGVzKGwudmFsdWUuZ2V0RGF5KCkpLFA9bD0+KGEucmFuZ2V8fGEud2Vla1BpY2tlcikmJighKG0udmFsdWUubXVsdGlDYWxlbmRhcnM+MCl8fGwuY3VycmVudCkmJksoKSYmISghbC5jdXJyZW50JiZhLmhpZGVPZmZzZXREYXRlcykmJiFMKGwpP1YobCk6ITEsQz1sPT57Y29uc3R7aXNSYW5nZVN0YXJ0OmssaXNSYW5nZUVuZDpNfT1FKGwpLEI9YS5yYW5nZT9rfHxNOiExO3JldHVybntkcF9fY2VsbF9vZmZzZXQ6IWwuY3VycmVudCxkcF9fcG9pbnRlcjohYS5kaXNhYmxlZCYmISghbC5jdXJyZW50JiZhLmhpZGVPZmZzZXREYXRlcykmJiFyKGwudmFsdWUpLGRwX19jZWxsX2Rpc2FibGVkOnIobC52YWx1ZSksZHBfX2NlbGxfaGlnaGxpZ2h0OiFhZShsKSYmKG5lKGwpfHxyZShsKSkmJiF0ZShsKSYmIUIsZHBfX2NlbGxfaGlnaGxpZ2h0X2FjdGl2ZTohYWUobCkmJihuZShsKXx8cmUobCkpJiZ0ZShsKSxkcF9fdG9kYXk6IWEubm9Ub2RheSYmb2UobC52YWx1ZSxULnZhbHVlKSYmbC5jdXJyZW50fX0seT1sPT4oe2RwX19hY3RpdmVfZGF0ZTp0ZShsKSxkcF9fZGF0ZV9ob3ZlcjpGKGwpfSksQT1sPT4oey4uLiQobCksLi4uZyhsKSxkcF9fcmFuZ2VfYmV0d2Vlbl93ZWVrOlAobCkmJmEud2Vla1BpY2tlcn0pLEU9bD0+e2NvbnN0IGs9bS52YWx1ZS5tdWx0aUNhbGVuZGFycz4wP2wuY3VycmVudCYmYihsKSYmSygpOmIobCkmJksoKSxNPW0udmFsdWUubXVsdGlDYWxlbmRhcnM+MD9sLmN1cnJlbnQmJmIobCwhMSkmJksoKTpiKGwsITEpJiZLKCk7cmV0dXJue2lzUmFuZ2VTdGFydDprLGlzUmFuZ2VFbmQ6TX19LCQ9bD0+e2NvbnN0e2lzUmFuZ2VTdGFydDprLGlzUmFuZ2VFbmQ6TX09RShsKTtyZXR1cm57ZHBfX3JhbmdlX3N0YXJ0OmssZHBfX3JhbmdlX2VuZDpNLGRwX19yYW5nZV9iZXR3ZWVuOlAobCkmJiFhLndlZWtQaWNrZXIsZHBfX2RhdGVfaG92ZXJfc3RhcnQ6RyhGKGwpLGwsITApLGRwX19kYXRlX2hvdmVyX2VuZDpHKEYobCksbCwhMSl9fSxnPWw9Pih7Li4uJChsKSxkcF9fY2VsbF9hdXRvX3JhbmdlOlIobCksZHBfX2NlbGxfYXV0b19yYW5nZV9zdGFydDpJKGwpLGRwX19jZWxsX2F1dG9fcmFuZ2VfZW5kOnoobCl9KSxkPWw9PmEucmFuZ2U/YS5hdXRvUmFuZ2U/ZyhsKTphLm1vZGVsQXV0bz97Li4ueShsKSwuLi4kKGwpfTokKGwpOmEud2Vla1BpY2tlcj9BKGwpOnkobCk7cmV0dXJue3NldEhvdmVyRGF0ZTpfLGNsZWFySG92ZXJEYXRlOk4sZ2V0RGF5Q2xhc3NEYXRhOmw9Pih7Li4uQyhsKSwuLi5kKGwpLFthLmRheUNsYXNzP2EuZGF5Q2xhc3MobC52YWx1ZSk6XCJcIl06ITAsW2EuY2FsZW5kYXJDZWxsQ2xhc3NOYW1lXTohIWEuY2FsZW5kYXJDZWxsQ2xhc3NOYW1lfSl9fSx4YT1bXCJpZFwiLFwib25LZXlkb3duXCJdLExhPXtrZXk6MCxjbGFzczpcImRwX19zaWRlYmFyX2xlZnRcIn0semE9e2tleToxLGNsYXNzOlwiZHBfX3ByZXNldF9yYW5nZXNcIn0sS2E9W1wib25DbGlja1wiXSxVYT17a2V5OjIsY2xhc3M6XCJkcF9fc2lkZWJhcl9yaWdodFwifSxXYT17a2V5OjMsY2xhc3M6XCJkcF9fYWN0aW9uX2V4dHJhXCJ9LEhhPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6XCJEYXRlcGlja2VyTWVudVwiLHByb3BzOntvcGVuT25Ub3A6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxpbnRlcm5hbE1vZGVsVmFsdWU6e3R5cGU6W0RhdGUsQXJyYXldLGRlZmF1bHQ6bnVsbH0sLi4uVmV9LGVtaXRzOltcImNsb3NlLXBpY2tlclwiLFwic2VsZWN0LWRhdGVcIixcImF1dG8tYXBwbHlcIixcInRpbWUtdXBkYXRlXCIsXCJmbG93LXN0ZXBcIixcInVwZGF0ZS1tb250aC15ZWFyXCIsXCJpbnZhbGlkLXNlbGVjdFwiLFwidXBkYXRlOmludGVybmFsLW1vZGVsLXZhbHVlXCIsXCJyZWNhbGN1bGF0ZS1wb3NpdGlvblwiLFwiaW52YWxpZC1maXhlZC1yYW5nZVwiLFwidG9vbHRpcC1vcGVuXCIsXCJ0b29sdGlwLWNsb3NlXCIsXCJ0aW1lLXBpY2tlci1vcGVuXCIsXCJ0aW1lLXBpY2tlci1jbG9zZVwiLFwiYW0tcG0tY2hhbmdlXCIsXCJyYW5nZS1zdGFydFwiLFwicmFuZ2UtZW5kXCJdLHNldHVwKHQse2V4cG9zZTphLGVtaXQ6cn0pe2NvbnN0IG49dCx1PWUuY29tcHV0ZWQoKCk9Pntjb25zdHtvcGVuT25Ub3A6dyxpbnRlcm5hbE1vZGVsVmFsdWU6eCwuLi51ZX09bjtyZXR1cm4gdWV9KSx7c2V0TWVudUZvY3VzZWQ6bSxzZXRTaGlmdEtleTpoLGNvbnRyb2w6VH09UnQoKSx7Z2V0Q2FsZW5kYXJEYXlzOl8sZGVmYXVsdHM6Tn09RGUobiksWT1lLnVzZVNsb3RzKCksdj1lLnJlZihudWxsKSxmPWUucmVhY3RpdmUoe3RpbWVQaWNrZXI6ISEoIW4uZW5hYmxlVGltZVBpY2tlcnx8bi50aW1lUGlja2VyfHxuLm1vbnRoUGlja2VyKSxtb250aFllYXJJbnB1dDohIW4udGltZVBpY2tlcixjYWxlbmRhcjohMX0pLGI9ZS5yZWYoW10pLEc9ZS5yZWYoW10pLEw9ZS5yZWYobnVsbCksej1lLnJlZihudWxsKSxSPWUucmVmKDApLEk9ZS5yZWYoITEpLFY9ZS5yZWYoMCk7ZS5vbk1vdW50ZWQoKCk9Pnt2YXIgeDtJLnZhbHVlPSEwLCEoKHg9bi5wcmVzZXRSYW5nZXMpIT1udWxsJiZ4Lmxlbmd0aCkmJiFZW1wibGVmdC1zaWRlYmFyXCJdJiYhWVtcInJpZ2h0LXNpZGViYXJcIl0mJihlZSgpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsZWUpKTtjb25zdCB3PWNlKHopO2lmKHcmJiFuLnRleHRJbnB1dCYmIW4uaW5saW5lJiYobSghMCksYWUoKSksdyl7Y29uc3QgdWU9ZmU9PntuLmFsbG93UHJldmVudERlZmF1bHQmJmZlLnByZXZlbnREZWZhdWx0KCksZmUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksZmUuc3RvcFByb3BhZ2F0aW9uKCl9O3cuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsdWUpLHcuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLHVlKX19KSxlLm9uVW5tb3VudGVkKCgpPT57d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIixlZSl9KTtjb25zdHthcnJvd1JpZ2h0OlUsYXJyb3dMZWZ0OkssYXJyb3dEb3duOkYsYXJyb3dVcDp0ZX09QWUoKSxuZT13PT57d3x8dz09PTA/Ry52YWx1ZVt3XS50cmlnZ2VyVHJhbnNpdGlvbihBLnZhbHVlKHcpLEUudmFsdWUodykpOkcudmFsdWUuZm9yRWFjaCgoeCx1ZSk9PngudHJpZ2dlclRyYW5zaXRpb24oQS52YWx1ZSh1ZSksRS52YWx1ZSh1ZSkpKX0sYWU9KCk9Pntjb25zdCB3PWNlKHopO3cmJncuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KX0scmU9KCk9Pnt2YXIgdzsodz1uLmZsb3cpIT1udWxsJiZ3Lmxlbmd0aCYmVi52YWx1ZSE9PS0xJiYoVi52YWx1ZSs9MSxyKFwiZmxvdy1zdGVwXCIsVi52YWx1ZSksRCgpKX0sUD0oKT0+e1YudmFsdWU9LTF9LHtjYWxlbmRhcnM6Qyxtb2RlbFZhbHVlOnksbW9udGg6QSx5ZWFyOkUsdGltZTokLHVwZGF0ZVRpbWU6Zyx1cGRhdGVNb250aFllYXI6ZCxzZWxlY3REYXRlOm8sZ2V0V2Vla051bTpsLG1vbnRoWWVhclNlbGVjdDprLGhhbmRsZVNjcm9sbDpNLGhhbmRsZUFycm93OkIsaGFuZGxlU3dpcGU6cSxnZXRNYXJrZXI6cCxzZWxlY3RDdXJyZW50RGF0ZTpzLHByZXNldERhdGVSYW5nZTpPfT1XbihuLHIscmUsbmUsVikse3NldEhvdmVyRGF0ZTpaLGNsZWFySG92ZXJEYXRlOnNlLGdldERheUNsYXNzRGF0YTokZX09SWEoeSxuKSxKPXttb2RlbFZhbHVlOnksbW9udGg6QSx5ZWFyOkUsdGltZTokLHVwZGF0ZVRpbWU6Zyx1cGRhdGVNb250aFllYXI6ZCxzZWxlY3REYXRlOm8scHJlc2V0RGF0ZVJhbmdlOk8saGFuZGxlTW9udGhZZWFyQ2hhbmdlOnc9PntiLnZhbHVlWzBdJiZiLnZhbHVlWzBdLmhhbmRsZU1vbnRoWWVhckNoYW5nZSh3KX19O2Uud2F0Y2goQywoKT0+e24ub3Blbk9uVG9wJiZzZXRUaW1lb3V0KCgpPT57cihcInJlY2FsY3VsYXRlLXBvc2l0aW9uXCIpfSwwKX0se2RlZXA6ITB9KTtjb25zdCB2ZT1PZShZLFwiY2FsZW5kYXJcIiksYmU9T2UoWSxcImFjdGlvblwiKSxtZT1PZShZLFwidGltZVBpY2tlclwiKSxUZT1PZShZLFwibW9udGhZZWFyXCIpLEtlPWUuY29tcHV0ZWQoKCk9Pm4ub3Blbk9uVG9wP1wiZHBfX2Fycm93X2JvdHRvbVwiOlwiZHBfX2Fycm93X3RvcFwiKSxVZT1lLmNvbXB1dGVkKCgpPT5FbihuLnllYXJSYW5nZSxuLnJldmVyc2VZZWFycykpLGo9ZS5jb21wdXRlZCgoKT0+Um4obi5sb2NhbGUsbi5tb250aE5hbWVGb3JtYXQpKSxlZT0oKT0+e2NvbnN0IHc9Y2Uodik7dyYmKFIudmFsdWU9dy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCl9LFg9ZS5jb21wdXRlZCgoKT0+dz0+XyhBLnZhbHVlKHcpLEUudmFsdWUodykpKSxJZT1lLmNvbXB1dGVkKCgpPT5OLnZhbHVlLm11bHRpQ2FsZW5kYXJzPjA/Wy4uLkFycmF5KE4udmFsdWUubXVsdGlDYWxlbmRhcnMpLmtleXMoKV06WzBdKSxFZT1lLmNvbXB1dGVkKCgpPT53PT53PT09MSksRHQ9ZS5jb21wdXRlZCgoKT0+bi5tb250aFBpY2tlcnx8bi50aW1lUGlja2VyfHxuLnllYXJQaWNrZXIpLEN0PWUuY29tcHV0ZWQoKCk9Pih7ZHBfX21lbnVfaW5uZXI6ITAsZHBfX2ZsZXhfZGlzcGxheTpOLnZhbHVlLm11bHRpQ2FsZW5kYXJzPjB9KSksSmU9ZS5jb21wdXRlZCgoKT0+KHtkcF9faW5zdGFuY2VfY2FsZW5kYXI6Ti52YWx1ZS5tdWx0aUNhbGVuZGFycz4wfSkpLFdlPWUuY29tcHV0ZWQoKCk9Pih7ZHBfX21lbnVfZGlzYWJsZWQ6bi5kaXNhYmxlZCxkcF9fbWVudV9yZWFkb25seTpuLnJlYWRvbmx5fSkpLE10PWUuY29tcHV0ZWQoKCk9Pnc9PlN0KFgsdykpLCR0PWUuY29tcHV0ZWQoKCk9Pih7ZHBfX21lbnU6ITAsZHBfX21lbnVfaW5kZXg6IW4uaW5saW5lLGRwX19yZWxhdGl2ZTpuLmlubGluZSxbbi5tZW51Q2xhc3NOYW1lXTohIW4ubWVudUNsYXNzTmFtZX0pKSxTdD0odyx4KT0+dy52YWx1ZSh4KS5tYXAodWU9Pih7Li4udWUsZGF5czp1ZS5kYXlzLm1hcChmZT0+KGZlLm1hcmtlcj1wKGZlKSxmZS5jbGFzc0RhdGE9JGUoZmUpLGZlKSl9KSksUWU9dz0+e3cuc3RvcFByb3BhZ2F0aW9uKCksdy5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX0sUXQ9KCk9PntuLmVzY0Nsb3NlJiZyKFwiY2xvc2UtcGlja2VyXCIpfSxGdD0odyx4PSExKT0+e28odyx4KSxuLnNwYWNlQ29uZmlybSYmcihcInNlbGVjdC1kYXRlXCIpfSxGZT13PT57dmFyIHg7KHg9bi5mbG93KSE9bnVsbCYmeC5sZW5ndGgmJihmW3ddPSEwLE9iamVjdC5rZXlzKGYpLmZpbHRlcih1ZT0+IWZbdWVdKS5sZW5ndGh8fEQoKSl9LGk9KHcseCx1ZSxmZSwuLi5CZSk9PntpZihuLmZsb3dbVi52YWx1ZV09PT13KXtjb25zdCBIPWZlP3gudmFsdWVbMF06eC52YWx1ZTtIJiZIW3VlXSguLi5CZSl9fSxEPSgpPT57aShcIm1vbnRoXCIsYixcInRvZ2dsZU1vbnRoUGlja2VyXCIsITAsITApLGkoXCJ5ZWFyXCIsYixcInRvZ2dsZVllYXJQaWNrZXJcIiwhMCwhMCksaShcImNhbGVuZGFyXCIsTCxcInRvZ2dsZVRpbWVQaWNrZXJcIiwhMSwhMSwhMCksaShcInRpbWVcIixMLFwidG9nZ2xlVGltZVBpY2tlclwiLCExLCEwLCEwKTtjb25zdCB3PW4uZmxvd1tWLnZhbHVlXTsodz09PVwiaG91cnNcInx8dz09PVwibWludXRlc1wifHx3PT09XCJzZWNvbmRzXCIpJiZpKHcsTCxcInRvZ2dsZVRpbWVQaWNrZXJcIiwhMSwhMCwhMCx3KX0sVz13PT57aWYobi5hcnJvd05hdmlnYXRpb24pe2lmKHc9PT1cInVwXCIpcmV0dXJuIHRlKCk7aWYodz09PVwiZG93blwiKXJldHVybiBGKCk7aWYodz09PVwibGVmdFwiKXJldHVybiBLKCk7aWYodz09PVwicmlnaHRcIilyZXR1cm4gVSgpfWVsc2Ugdz09PVwibGVmdFwifHx3PT09XCJ1cFwiP0IoXCJsZWZ0XCIsMCx3PT09XCJ1cFwiKTpCKFwicmlnaHRcIiwwLHc9PT1cImRvd25cIil9LFE9dz0+e2gody5zaGlmdEtleSksIW4uZGlzYWJsZU1vbnRoWWVhclNlbGVjdCYmdy5jb2RlPT09XCJUYWJcIiYmdy50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiZHBfX21lbnVcIikmJlQudmFsdWUuc2hpZnRLZXlJbk1lbnUmJih3LnByZXZlbnREZWZhdWx0KCksdy5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSxyKFwiY2xvc2UtcGlja2VyXCIpKX0sZGU9KCk9PnthZSgpLHIoXCJ0aW1lLXBpY2tlci1jbG9zZVwiKX0sU2U9dz0+e3ZhciB4LHVlLGZlLEJlLEg7KHg9TC52YWx1ZSk9PW51bGx8fHgudG9nZ2xlVGltZVBpY2tlcighMSwhMSksKGZlPSh1ZT1iLnZhbHVlKT09bnVsbD92b2lkIDA6dWVbd10pPT1udWxsfHxmZS50b2dnbGVNb250aFBpY2tlcighMSwhMSksKEg9KEJlPWIudmFsdWUpPT1udWxsP3ZvaWQgMDpCZVt3XSk9PW51bGx8fEgudG9nZ2xlWWVhclBpY2tlcighMSwhMSl9O3JldHVybiBhKHt1cGRhdGVNb250aFllYXI6ZCxzd2l0Y2hWaWV3Oih3LHg9MCk9Pnt2YXIgdWUsZmUsQmUsSCxQZTtyZXR1cm4gdz09PVwibW9udGhcIj8oZmU9KHVlPWIudmFsdWUpPT1udWxsP3ZvaWQgMDp1ZVt4XSk9PW51bGw/dm9pZCAwOmZlLnRvZ2dsZU1vbnRoUGlja2VyKCExLCEwKTp3PT09XCJ5ZWFyXCI/KEg9KEJlPWIudmFsdWUpPT1udWxsP3ZvaWQgMDpCZVt4XSk9PW51bGw/dm9pZCAwOkgudG9nZ2xlWWVhclBpY2tlcighMSwhMCk6dz09PVwidGltZVwiPyhQZT1MLnZhbHVlKT09bnVsbD92b2lkIDA6UGUudG9nZ2xlVGltZVBpY2tlcighMCwhMSk6U2UoeCl9fSksKHcseCk9Pnt2YXIgdWU7cmV0dXJuIGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLlRyYW5zaXRpb24se2FwcGVhcjpcIlwiLG5hbWU6KHVlPWUudW5yZWYoTikudHJhbnNpdGlvbnMpPT1udWxsP3ZvaWQgMDp1ZS5tZW51QXBwZWFyLGNzczohIXcudHJhbnNpdGlvbnN9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+e3ZhciBmZSxCZTtyZXR1cm5bZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIix7aWQ6dy51aWQ/YGRwLW1lbnUtJHt3LnVpZH1gOnZvaWQgMCx0YWJpbmRleDpcIjBcIixyZWZfa2V5OlwiZHBNZW51UmVmXCIscmVmOnoscm9sZTpcImRpYWxvZ1wiLGNsYXNzOmUubm9ybWFsaXplQ2xhc3MoJHQudmFsdWUpLG9uTW91c2VsZWF2ZTp4WzE0XXx8KHhbMTRdPSguLi5IKT0+ZS51bnJlZihzZSkmJmUudW5yZWYoc2UpKC4uLkgpKSxvbkNsaWNrOlFlLG9uS2V5ZG93bjpbZS53aXRoS2V5cyhRdCxbXCJlc2NcIl0pLHhbMTVdfHwoeFsxNV09ZS53aXRoS2V5cyhlLndpdGhNb2RpZmllcnMoSD0+VyhcImxlZnRcIiksW1wicHJldmVudFwiXSksW1wibGVmdFwiXSkpLHhbMTZdfHwoeFsxNl09ZS53aXRoS2V5cyhlLndpdGhNb2RpZmllcnMoSD0+VyhcInVwXCIpLFtcInByZXZlbnRcIl0pLFtcInVwXCJdKSkseFsxN118fCh4WzE3XT1lLndpdGhLZXlzKGUud2l0aE1vZGlmaWVycyhIPT5XKFwiZG93blwiKSxbXCJwcmV2ZW50XCJdKSxbXCJkb3duXCJdKSkseFsxOF18fCh4WzE4XT1lLndpdGhLZXlzKGUud2l0aE1vZGlmaWVycyhIPT5XKFwicmlnaHRcIiksW1wicHJldmVudFwiXSksW1wicmlnaHRcIl0pKSxRXX0sWyh3LmRpc2FibGVkfHx3LnJlYWRvbmx5KSYmdy5pbmxpbmU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7a2V5OjAsY2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhXZS52YWx1ZSl9LG51bGwsMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLCF3LmlubGluZSYmIXcudGVsZXBvcnRDZW50ZXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7a2V5OjEsY2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhLZS52YWx1ZSl9LG51bGwsMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLGUuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse2NsYXNzOmUubm9ybWFsaXplQ2xhc3Moe2RwX19tZW51X2NvbnRlbnRfd3JhcHBlcjooKGZlPXcucHJlc2V0UmFuZ2VzKT09bnVsbD92b2lkIDA6ZmUubGVuZ3RoKXx8ISF3LiRzbG90c1tcImxlZnQtc2lkZWJhclwiXXx8ISF3LiRzbG90c1tcInJpZ2h0LXNpZGViYXJcIl19KX0sW3cuJHNsb3RzW1wibGVmdC1zaWRlYmFyXCJdPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIsTGEsW2UucmVuZGVyU2xvdCh3LiRzbG90cyxcImxlZnQtc2lkZWJhclwiLGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHMoSikpKV0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSwoQmU9dy5wcmVzZXRSYW5nZXMpIT1udWxsJiZCZS5sZW5ndGg/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix6YSxbKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KHcucHJlc2V0UmFuZ2VzLChILFBlKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7a2V5OlBlLHN0eWxlOmUubm9ybWFsaXplU3R5bGUoSC5zdHlsZXx8e30pLGNsYXNzOlwiZHBfX3ByZXNldF9yYW5nZVwiLG9uQ2xpY2s6bGU9PmUudW5yZWYoTykoSC5yYW5nZSwhIUguc2xvdCl9LFtILnNsb3Q/ZS5yZW5kZXJTbG90KHcuJHNsb3RzLEguc2xvdCx7a2V5OjAscHJlc2V0RGF0ZVJhbmdlOmUudW5yZWYoTyksbGFiZWw6SC5sYWJlbCxyYW5nZTpILnJhbmdlfSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhILmxhYmVsKSwxKV0sNjQpKV0sMTIsS2EpKSksMTI4KSldKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIix7Y2xhc3M6XCJkcF9faW5zdGFuY2VfY2FsZW5kYXJcIixyZWZfa2V5OlwiY2FsZW5kYXJXcmFwcGVyUmVmXCIscmVmOnYscm9sZTpcImRvY3VtZW50XCJ9LFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtjbGFzczplLm5vcm1hbGl6ZUNsYXNzKEN0LnZhbHVlKX0sWyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChJZS52YWx1ZSwoSCxQZSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2tleTpILGNsYXNzOmUubm9ybWFsaXplQ2xhc3MoSmUudmFsdWUpfSxbIXcuZGlzYWJsZU1vbnRoWWVhclNlbGVjdCYmIXcudGltZVBpY2tlcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKFNhLGUubWVyZ2VQcm9wcyh7a2V5OjAscmVmX2ZvcjohMCxyZWY6bGU9PntsZSYmKGIudmFsdWVbUGVdPWxlKX0sbW9udGhzOmoudmFsdWUseWVhcnM6VWUudmFsdWUsbW9udGg6ZS51bnJlZihBKShIKSx5ZWFyOmUudW5yZWYoRSkoSCksaW5zdGFuY2U6SCxcImludGVybmFsLW1vZGVsLXZhbHVlXCI6dC5pbnRlcm5hbE1vZGVsVmFsdWV9LHUudmFsdWUse29uTW91bnQ6eFswXXx8KHhbMF09bGU9PkZlKFwibW9udGhZZWFySW5wdXRcIikpLG9uUmVzZXRGbG93OlAsb25VcGRhdGVNb250aFllYXI6bGU9PmUudW5yZWYoZCkoSCxsZSksb25Nb250aFllYXJTZWxlY3Q6ZS51bnJlZihrKSxvbk92ZXJsYXlDbG9zZWQ6YWV9KSxlLmNyZWF0ZVNsb3RzKHtfOjJ9LFtlLnJlbmRlckxpc3QoZS51bnJlZihUZSksKGxlLEphKT0+KHtuYW1lOmxlLGZuOmUud2l0aEN0eChCdD0+W2UucmVuZGVyU2xvdCh3LiRzbG90cyxsZSxlLm5vcm1hbGl6ZVByb3BzKGUuZ3VhcmRSZWFjdGl2ZVByb3BzKEJ0KSkpXSl9KSldKSwxMDQwLFtcIm1vbnRoc1wiLFwieWVhcnNcIixcIm1vbnRoXCIsXCJ5ZWFyXCIsXCJpbnN0YW5jZVwiLFwiaW50ZXJuYWwtbW9kZWwtdmFsdWVcIixcIm9uVXBkYXRlTW9udGhZZWFyXCIsXCJvbk1vbnRoWWVhclNlbGVjdFwiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLGUuY3JlYXRlVk5vZGUobWEsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwLHJlZjpsZT0+e2xlJiYoRy52YWx1ZVtQZV09bGUpfSxcInNwZWNpZmljLW1vZGVcIjpEdC52YWx1ZSxcImdldC13ZWVrLW51bVwiOmUudW5yZWYobCksaW5zdGFuY2U6SCxcIm1hcHBlZC1kYXRlc1wiOk10LnZhbHVlKEgpLG1vbnRoOmUudW5yZWYoQSkoSCkseWVhcjplLnVucmVmKEUpKEgpfSx1LnZhbHVlLHtvblNlbGVjdERhdGU6bGU9PmUudW5yZWYobykobGUsIUVlLnZhbHVlKEgpKSxvbkhhbmRsZVNwYWNlOmxlPT5GdChsZSwhRWUudmFsdWUoSCkpLG9uU2V0SG92ZXJEYXRlOnhbMV18fCh4WzFdPWxlPT5lLnVucmVmKFopKGxlKSksb25IYW5kbGVTY3JvbGw6bGU9PmUudW5yZWYoTSkobGUsSCksb25IYW5kbGVTd2lwZTpsZT0+ZS51bnJlZihxKShsZSxIKSxvbk1vdW50OnhbMl18fCh4WzJdPWxlPT5GZShcImNhbGVuZGFyXCIpKSxvblJlc2V0RmxvdzpQLG9uVG9vbHRpcE9wZW46eFszXXx8KHhbM109bGU9PncuJGVtaXQoXCJ0b29sdGlwLW9wZW5cIixsZSkpLG9uVG9vbHRpcENsb3NlOnhbNF18fCh4WzRdPWxlPT53LiRlbWl0KFwidG9vbHRpcC1jbG9zZVwiLGxlKSl9KSxlLmNyZWF0ZVNsb3RzKHtfOjJ9LFtlLnJlbmRlckxpc3QoZS51bnJlZih2ZSksKGxlLEphKT0+KHtuYW1lOmxlLGZuOmUud2l0aEN0eChCdD0+W2UucmVuZGVyU2xvdCh3LiRzbG90cyxsZSxlLm5vcm1hbGl6ZVByb3BzKGUuZ3VhcmRSZWFjdGl2ZVByb3BzKHsuLi5CdH0pKSldKX0pKV0pLDEwNDAsW1wic3BlY2lmaWMtbW9kZVwiLFwiZ2V0LXdlZWstbnVtXCIsXCJpbnN0YW5jZVwiLFwibWFwcGVkLWRhdGVzXCIsXCJtb250aFwiLFwieWVhclwiLFwib25TZWxlY3REYXRlXCIsXCJvbkhhbmRsZVNwYWNlXCIsXCJvbkhhbmRsZVNjcm9sbFwiLFwib25IYW5kbGVTd2lwZVwiXSldLDIpKSksMTI4KSldLDIpLGUuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsbnVsbCxbdy4kc2xvdHNbXCJ0aW1lLXBpY2tlclwiXT9lLnJlbmRlclNsb3Qody4kc2xvdHMsXCJ0aW1lLXBpY2tlclwiLGUubm9ybWFsaXplUHJvcHMoZS5tZXJnZVByb3BzKHtrZXk6MH0se3RpbWU6ZS51bnJlZigkKSx1cGRhdGVUaW1lOmUudW5yZWYoZyl9KSkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxbdy5lbmFibGVUaW1lUGlja2VyJiYhdy5tb250aFBpY2tlciYmIXcud2Vla1BpY2tlcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKFlhLGUubWVyZ2VQcm9wcyh7a2V5OjAscmVmX2tleTpcInRpbWVQaWNrZXJSZWZcIixyZWY6TCxob3VyczplLnVucmVmKCQpLmhvdXJzLG1pbnV0ZXM6ZS51bnJlZigkKS5taW51dGVzLHNlY29uZHM6ZS51bnJlZigkKS5zZWNvbmRzLFwiaW50ZXJuYWwtbW9kZWwtdmFsdWVcIjp0LmludGVybmFsTW9kZWxWYWx1ZX0sdS52YWx1ZSx7b25Nb3VudDp4WzVdfHwoeFs1XT1IPT5GZShcInRpbWVQaWNrZXJcIikpLFwib25VcGRhdGU6aG91cnNcIjp4WzZdfHwoeFs2XT1IPT5lLnVucmVmKGcpKEgpKSxcIm9uVXBkYXRlOm1pbnV0ZXNcIjp4WzddfHwoeFs3XT1IPT5lLnVucmVmKGcpKEgsITEpKSxcIm9uVXBkYXRlOnNlY29uZHNcIjp4WzhdfHwoeFs4XT1IPT5lLnVucmVmKGcpKEgsITEsITApKSxvblJlc2V0RmxvdzpQLG9uT3ZlcmxheUNsb3NlZDpkZSxvbk92ZXJsYXlPcGVuZWQ6eFs5XXx8KHhbOV09SD0+dy4kZW1pdChcInRpbWUtcGlja2VyLW9wZW5cIixIKSksb25BbVBtQ2hhbmdlOnhbMTBdfHwoeFsxMF09SD0+dy4kZW1pdChcImFtLXBtLWNoYW5nZVwiLEgpKX0pLGUuY3JlYXRlU2xvdHMoe186Mn0sW2UucmVuZGVyTGlzdChlLnVucmVmKG1lKSwoSCxQZSk9Pih7bmFtZTpILGZuOmUud2l0aEN0eChsZT0+W2UucmVuZGVyU2xvdCh3LiRzbG90cyxILGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHMobGUpKSldKX0pKV0pLDEwNDAsW1wiaG91cnNcIixcIm1pbnV0ZXNcIixcInNlY29uZHNcIixcImludGVybmFsLW1vZGVsLXZhbHVlXCJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCldLDY0KSldKV0sNTEyKSx3LiRzbG90c1tcInJpZ2h0LXNpZGViYXJcIl0/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIixVYSxbZS5yZW5kZXJTbG90KHcuJHNsb3RzLFwicmlnaHQtc2lkZWJhclwiLGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHMoSikpKV0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSx3LiRzbG90c1tcImFjdGlvbi1leHRyYVwiXT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLFdhLFt3LiRzbG90c1tcImFjdGlvbi1leHRyYVwiXT9lLnJlbmRlclNsb3Qody4kc2xvdHMsXCJhY3Rpb24tZXh0cmFcIix7a2V5OjAsc2VsZWN0Q3VycmVudERhdGU6ZS51bnJlZihzKX0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSwyKSwhdy5hdXRvQXBwbHl8fHcua2VlcEFjdGlvblJvdz8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKHJhLGUubWVyZ2VQcm9wcyh7a2V5OjIsXCJtZW51LW1vdW50XCI6SS52YWx1ZSxcImNhbGVuZGFyLXdpZHRoXCI6Ui52YWx1ZSxcImludGVybmFsLW1vZGVsLXZhbHVlXCI6dC5pbnRlcm5hbE1vZGVsVmFsdWV9LHUudmFsdWUse29uQ2xvc2VQaWNrZXI6eFsxMV18fCh4WzExXT1IPT53LiRlbWl0KFwiY2xvc2UtcGlja2VyXCIpKSxvblNlbGVjdERhdGU6eFsxMl18fCh4WzEyXT1IPT53LiRlbWl0KFwic2VsZWN0LWRhdGVcIikpLG9uSW52YWxpZFNlbGVjdDp4WzEzXXx8KHhbMTNdPUg9PncuJGVtaXQoXCJpbnZhbGlkLXNlbGVjdFwiKSksb25TZWxlY3ROb3c6ZS51bnJlZihzKX0pLGUuY3JlYXRlU2xvdHMoe186Mn0sW2UucmVuZGVyTGlzdChlLnVucmVmKGJlKSwoSCxQZSk9Pih7bmFtZTpILGZuOmUud2l0aEN0eChsZT0+W2UucmVuZGVyU2xvdCh3LiRzbG90cyxILGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHMoey4uLmxlfSkpKV0pfSkpXSksMTA0MCxbXCJtZW51LW1vdW50XCIsXCJjYWxlbmRhci13aWR0aFwiLFwiaW50ZXJuYWwtbW9kZWwtdmFsdWVcIixcIm9uU2VsZWN0Tm93XCJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCldLDQyLHhhKV19KSxfOjN9LDgsW1wibmFtZVwiLFwiY3NzXCJdKX19fSksamE9dHlwZW9mIHdpbmRvdzxcInVcIj93aW5kb3c6dm9pZCAwLHd0PSgpPT57fSxHYT10PT5lLmdldEN1cnJlbnRTY29wZSgpPyhlLm9uU2NvcGVEaXNwb3NlKHQpLCEwKTohMSxxYT0odCxhLHIsbik9PntpZighdClyZXR1cm4gd3Q7bGV0IHU9d3Q7Y29uc3QgbT1lLndhdGNoKCgpPT5lLnVucmVmKHQpLFQ9Pnt1KCksVCYmKFQuYWRkRXZlbnRMaXN0ZW5lcihhLHIsbiksdT0oKT0+e1QucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLHIsbiksdT13dH0pfSx7aW1tZWRpYXRlOiEwLGZsdXNoOlwicG9zdFwifSksaD0oKT0+e20oKSx1KCl9O3JldHVybiBHYShoKSxofSxaYT0odCxhLHIsbj17fSk9Pntjb25zdHt3aW5kb3c6dT1qYSxldmVudDptPVwicG9pbnRlcmRvd25cIn09bjtyZXR1cm4gdT9xYSh1LG0sVD0+e2NvbnN0IF89Y2UodCksTj1jZShhKTshX3x8IU58fF89PT1ULnRhcmdldHx8VC5jb21wb3NlZFBhdGgoKS5pbmNsdWRlcyhfKXx8VC5jb21wb3NlZFBhdGgoKS5pbmNsdWRlcyhOKXx8cihUKX0se3Bhc3NpdmU6ITB9KTp2b2lkIDB9LFhhPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6XCJWdWVEYXRlUGlja2VyXCIscHJvcHM6ey4uLlZlfSxlbWl0czpbXCJ1cGRhdGU6bW9kZWwtdmFsdWVcIixcInRleHQtc3VibWl0XCIsXCJjbG9zZWRcIixcImNsZWFyZWRcIixcIm9wZW5cIixcImZvY3VzXCIsXCJibHVyXCIsXCJpbnRlcm5hbC1tb2RlbC1jaGFuZ2VcIixcInJlY2FsY3VsYXRlLXBvc2l0aW9uXCIsXCJmbG93LXN0ZXBcIixcInVwZGF0ZS1tb250aC15ZWFyXCIsXCJpbnZhbGlkLXNlbGVjdFwiLFwiaW52YWxpZC1maXhlZC1yYW5nZVwiLFwidG9vbHRpcC1vcGVuXCIsXCJ0b29sdGlwLWNsb3NlXCIsXCJ0aW1lLXBpY2tlci1vcGVuXCIsXCJ0aW1lLXBpY2tlci1jbG9zZVwiLFwiYW0tcG0tY2hhbmdlXCIsXCJyYW5nZS1zdGFydFwiLFwicmFuZ2UtZW5kXCJdLHNldHVwKHQse2V4cG9zZTphLGVtaXQ6cn0pe2NvbnN0IG49dCx1PWUudXNlU2xvdHMoKSxtPWUucmVmKCExKSxoPWUudG9SZWYobixcIm1vZGVsVmFsdWVcIiksVD1lLnRvUmVmKG4sXCJ0aW1lem9uZVwiKSxfPWUucmVmKG51bGwpLE49ZS5yZWYobnVsbCksWT1lLnJlZighMSksdj1lLnJlZihudWxsKSx7c2V0TWVudUZvY3VzZWQ6ZixzZXRTaGlmdEtleTpifT1SdCgpLHtjbGVhckFycm93TmF2Okd9PUFlKCkse3ZhbGlkYXRlRGF0ZTpMLGlzVmFsaWRUaW1lOnosZGVmYXVsdHM6Un09RGUobik7ZS5vbk1vdW50ZWQoKCk9PntDKG4ubW9kZWxWYWx1ZSksbi5pbmxpbmV8fChhZSh2LnZhbHVlKS5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsbyksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIixsKSksbi5pbmxpbmUmJihtLnZhbHVlPSEwKX0pLGUub25Vbm1vdW50ZWQoKCk9PntpZighbi5pbmxpbmUpe2NvbnN0IGo9YWUodi52YWx1ZSk7aiYmai5yZW1vdmVFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsbyksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIixsKX19KTtjb25zdCBJPU9lKHUsXCJhbGxcIixuLnByZXNldFJhbmdlcyksVj1PZSh1LFwiaW5wdXRcIik7ZS53YXRjaChbaCxUXSwoKT0+e0MoaC52YWx1ZSl9LHtkZWVwOiEwfSk7Y29uc3R7b3Blbk9uVG9wOlUsbWVudVN0eWxlOksscmVzZXRQb3NpdGlvbjpGLHNldE1lbnVQb3NpdGlvbjp0ZSxzZXRJbml0aWFsUG9zaXRpb246bmUsZ2V0U2Nyb2xsYWJsZVBhcmVudDphZX09R24oXyxOLHIsbikse2lucHV0VmFsdWU6cmUsaW50ZXJuYWxNb2RlbFZhbHVlOlAscGFyc2VFeHRlcm5hbE1vZGVsVmFsdWU6QyxlbWl0TW9kZWxWYWx1ZTp5LGZvcm1hdElucHV0VmFsdWU6QSxjaGVja0JlZm9yZUVtaXQ6RX09SG4ocixuLFkpLCQ9ZS5jb21wdXRlZCgoKT0+KHtkcF9fbWFpbjohMCxkcF9fdGhlbWVfZGFyazpuLmRhcmssZHBfX3RoZW1lX2xpZ2h0OiFuLmRhcmssZHBfX2ZsZXhfZGlzcGxheTpuLmlubGluZSxkcF9fZmxleF9kaXNwbGF5X3dpdGhfaW5wdXQ6bi5pbmxpbmVXaXRoSW5wdXR9KSksZz1lLmNvbXB1dGVkKCgpPT5uLmRhcms/XCJkcF9fdGhlbWVfZGFya1wiOlwiZHBfX3RoZW1lX2xpZ2h0XCIpLGQ9ZS5jb21wdXRlZCgoKT0+bi50ZWxlcG9ydD97dG86dHlwZW9mIG4udGVsZXBvcnQ9PVwiYm9vbGVhblwiP1wiYm9keVwiOm4udGVsZXBvcnQsZGlzYWJsZWQ6bi5pbmxpbmV9OntjbGFzczpcImRwX19vdXRlcl9tZW51X3dyYXBcIn0pLG89KCk9PnttLnZhbHVlJiYobi5jbG9zZU9uU2Nyb2xsP3NlKCk6dGUoKSl9LGw9KCk9PnttLnZhbHVlJiZ0ZSgpfSxrPWFzeW5jKCk9Pnt2YXIgaixlZSxYOyFuLmRpc2FibGVkJiYhbi5yZWFkb25seSYmKEYoKSxhd2FpdCBlLm5leHRUaWNrKCksbS52YWx1ZT0hMCxhd2FpdCBlLm5leHRUaWNrKCksbmUoKSxhd2FpdCBlLm5leHRUaWNrKCksdGUoKSxkZWxldGUgSy52YWx1ZS5vcGFjaXR5LChqPVIudmFsdWUudHJhbnNpdGlvbnMpIT1udWxsJiZqLm1lbnVBcHBlYXJ8fChYPShlZT1fLnZhbHVlKT09bnVsbD92b2lkIDA6ZWUuJGVsKT09bnVsbHx8WC5jbGFzc0xpc3QuYWRkKFwiZHBfX21lbnVfdHJhbnNpdGlvbmVkXCIpLG0udmFsdWUmJnIoXCJvcGVuXCIpLG0udmFsdWV8fFooKSxDKG4ubW9kZWxWYWx1ZSkpfSxNPSgpPT57cmUudmFsdWU9XCJcIixaKCkscihcInVwZGF0ZTptb2RlbC12YWx1ZVwiLG51bGwpLHIoXCJjbGVhcmVkXCIpLG4uY2xvc2VPbkNsZWFyVmFsdWUmJnNlKCl9LEI9KCk9Pntjb25zdCBqPVAudmFsdWU7cmV0dXJuIWp8fCFBcnJheS5pc0FycmF5KGopJiZMKGopPyEwOkFycmF5LmlzQXJyYXkoaik/ai5sZW5ndGg9PT0yJiZMKGpbMF0pJiZMKGpbMV0pPyEwOkwoalswXSk6ITF9LHE9KCk9PntFKCkmJkIoKT8oeSgpLHNlKCkpOnIoXCJpbnZhbGlkLXNlbGVjdFwiLFAudmFsdWUpfSxwPWo9PntzKCkseSgpLG4uY2xvc2VPbkF1dG9BcHBseSYmIWomJnNlKCl9LHM9KCk9PntOLnZhbHVlJiZuLnRleHRJbnB1dCYmTi52YWx1ZS5zZXRQYXJzZWREYXRlKFAudmFsdWUpfSxPPShqPSExKT0+e24uYXV0b0FwcGx5JiZ6KFAudmFsdWUpJiZCKCkmJihuLnJhbmdlJiZBcnJheS5pc0FycmF5KFAudmFsdWUpPyhuLnBhcnRpYWxSYW5nZXx8UC52YWx1ZS5sZW5ndGg9PT0yKSYmcChqKTpwKGopKX0sWj0oKT0+e24udGV4dElucHV0fHwoUC52YWx1ZT1udWxsKX0sc2U9KCk9PntuLmlubGluZXx8KG0udmFsdWUmJihtLnZhbHVlPSExLGYoITEpLGIoITEpLEcoKSxyKFwiY2xvc2VkXCIpLG5lKCkscmUudmFsdWUmJkMoaC52YWx1ZSkpLFooKSl9LCRlPShqLGVlKT0+e2lmKCFqKXtQLnZhbHVlPW51bGw7cmV0dXJufVAudmFsdWU9aixlZSYmKHEoKSxyKFwidGV4dC1zdWJtaXRcIikpfSxOZT0oKT0+e24uYXV0b0FwcGx5JiZ6KFAudmFsdWUpJiZ5KCkscygpfSxKPSgpPT5tLnZhbHVlP3NlKCk6aygpLHZlPWo9PntQLnZhbHVlPWp9LGJlPSgpPT57bi50ZXh0SW5wdXQmJihZLnZhbHVlPSEwLEEoKSkscihcImZvY3VzXCIpfSxtZT0oKT0+e24udGV4dElucHV0JiYoWS52YWx1ZT0hMSxDKG4ubW9kZWxWYWx1ZSkpLHIoXCJibHVyXCIpfSxUZT1qPT57Xy52YWx1ZSYmXy52YWx1ZS51cGRhdGVNb250aFllYXIoMCx7bW9udGg6R3Qoai5tb250aCkseWVhcjpHdChqLnllYXIpfSl9LEtlPWo9PntDKGp8fG4ubW9kZWxWYWx1ZSl9LFVlPShqLGVlKT0+e3ZhciBYOyhYPV8udmFsdWUpPT1udWxsfHxYLnN3aXRjaFZpZXcoaixlZSl9O3JldHVybiBaYShfLE4sbi5vbkNsaWNrT3V0c2lkZT8oKT0+bi5vbkNsaWNrT3V0c2lkZShCKTpzZSksYSh7Y2xvc2VNZW51OnNlLHNlbGVjdERhdGU6cSxjbGVhclZhbHVlOk0sb3Blbk1lbnU6ayxvblNjcm9sbDpvLGZvcm1hdElucHV0VmFsdWU6QSx1cGRhdGVJbnRlcm5hbE1vZGVsVmFsdWU6dmUsc2V0TW9udGhZZWFyOlRlLHBhcnNlTW9kZWw6S2Usc3dpdGNoVmlldzpVZX0pLChqLGVlKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7Y2xhc3M6ZS5ub3JtYWxpemVDbGFzcygkLnZhbHVlKSxyZWZfa2V5OlwicGlja2VyV3JhcHBlclJlZlwiLHJlZjp2fSxbZS5jcmVhdGVWTm9kZShlYSxlLm1lcmdlUHJvcHMoe3JlZl9rZXk6XCJpbnB1dFJlZlwiLHJlZjpOLFwiaXMtbWVudS1vcGVuXCI6bS52YWx1ZSxcImlucHV0LXZhbHVlXCI6ZS51bnJlZihyZSksXCJvblVwZGF0ZTppbnB1dFZhbHVlXCI6ZWVbMF18fChlZVswXT1YPT5lLmlzUmVmKHJlKT9yZS52YWx1ZT1YOm51bGwpfSxqLiRwcm9wcyx7b25DbGVhcjpNLG9uT3BlbjprLG9uU2V0SW5wdXREYXRlOiRlLG9uU2V0RW1wdHlEYXRlOmUudW5yZWYoeSksb25TZWxlY3REYXRlOnEsb25Ub2dnbGU6SixvbkNsb3NlOnNlLG9uRm9jdXM6YmUsb25CbHVyOm1lLG9uUmVhbEJsdXI6ZWVbMV18fChlZVsxXT1YPT5ZLnZhbHVlPSExKX0pLGUuY3JlYXRlU2xvdHMoe186Mn0sW2UucmVuZGVyTGlzdChlLnVucmVmKFYpLChYLEllKT0+KHtuYW1lOlgsZm46ZS53aXRoQ3R4KEVlPT5bZS5yZW5kZXJTbG90KGouJHNsb3RzLFgsZS5ub3JtYWxpemVQcm9wcyhlLmd1YXJkUmVhY3RpdmVQcm9wcyhFZSkpKV0pfSkpXSksMTA0MCxbXCJpcy1tZW51LW9wZW5cIixcImlucHV0LXZhbHVlXCIsXCJvblNldEVtcHR5RGF0ZVwiXSksbS52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoai50ZWxlcG9ydD9lLlRlbGVwb3J0OlwiZGl2XCIpLGUubm9ybWFsaXplUHJvcHMoZS5tZXJnZVByb3BzKHtrZXk6MH0sZC52YWx1ZSkpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W20udmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhIYSxlLm1lcmdlUHJvcHMoe2tleTowLHJlZl9rZXk6XCJkcE1lbnVSZWZcIixyZWY6XyxjbGFzczpnLnZhbHVlLHN0eWxlOmouaW5saW5lP3ZvaWQgMDplLnVucmVmKEspLFwib3Blbi1vbi10b3BcIjplLnVucmVmKFUpfSxqLiRwcm9wcyx7XCJpbnRlcm5hbC1tb2RlbC12YWx1ZVwiOmUudW5yZWYoUCksXCJvblVwZGF0ZTppbnRlcm5hbE1vZGVsVmFsdWVcIjplZVsyXXx8KGVlWzJdPVg9PmUuaXNSZWYoUCk/UC52YWx1ZT1YOm51bGwpLG9uQ2xvc2VQaWNrZXI6c2Usb25TZWxlY3REYXRlOnEsb25BdXRvQXBwbHk6TyxvblRpbWVVcGRhdGU6TmUsb25GbG93U3RlcDplZVszXXx8KGVlWzNdPVg9PmouJGVtaXQoXCJmbG93LXN0ZXBcIixYKSksb25VcGRhdGVNb250aFllYXI6ZWVbNF18fChlZVs0XT1YPT5qLiRlbWl0KFwidXBkYXRlLW1vbnRoLXllYXJcIixYKSksb25JbnZhbGlkU2VsZWN0OmVlWzVdfHwoZWVbNV09WD0+ai4kZW1pdChcImludmFsaWQtc2VsZWN0XCIsZS51bnJlZihQKSkpLG9uSW52YWxpZEZpeGVkUmFuZ2U6ZWVbNl18fChlZVs2XT1YPT5qLiRlbWl0KFwiaW52YWxpZC1maXhlZC1yYW5nZVwiLFgpKSxvblJlY2FsY3VsYXRlUG9zaXRpb246ZS51bnJlZih0ZSksb25Ub29sdGlwT3BlbjplZVs3XXx8KGVlWzddPVg9PmouJGVtaXQoXCJ0b29sdGlwLW9wZW5cIixYKSksb25Ub29sdGlwQ2xvc2U6ZWVbOF18fChlZVs4XT1YPT5qLiRlbWl0KFwidG9vbHRpcC1jbG9zZVwiLFgpKSxvblRpbWVQaWNrZXJPcGVuOmVlWzldfHwoZWVbOV09WD0+ai4kZW1pdChcInRpbWUtcGlja2VyLW9wZW5cIixYKSksb25UaW1lUGlja2VyQ2xvc2U6ZWVbMTBdfHwoZWVbMTBdPVg9PmouJGVtaXQoXCJ0aW1lLXBpY2tlci1jbG9zZVwiLFgpKSxvbkFtUG1DaGFuZ2U6ZWVbMTFdfHwoZWVbMTFdPVg9PmouJGVtaXQoXCJhbS1wbS1jaGFuZ2VcIixYKSksb25SYW5nZVN0YXJ0OmVlWzEyXXx8KGVlWzEyXT1YPT5qLiRlbWl0KFwicmFuZ2Utc3RhcnRcIixYKSksb25SYW5nZUVuZDplZVsxM118fChlZVsxM109WD0+ai4kZW1pdChcInJhbmdlLWVuZFwiLFgpKX0pLGUuY3JlYXRlU2xvdHMoe186Mn0sW2UucmVuZGVyTGlzdChlLnVucmVmKEkpLChYLEllKT0+KHtuYW1lOlgsZm46ZS53aXRoQ3R4KEVlPT5bZS5yZW5kZXJTbG90KGouJHNsb3RzLFgsZS5ub3JtYWxpemVQcm9wcyhlLmd1YXJkUmVhY3RpdmVQcm9wcyh7Li4uRWV9KSkpXSl9KSldKSwxMDQwLFtcImNsYXNzXCIsXCJzdHlsZVwiLFwib3Blbi1vbi10b3BcIixcImludGVybmFsLW1vZGVsLXZhbHVlXCIsXCJvblJlY2FsY3VsYXRlUG9zaXRpb25cIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV0pLF86M30sMTYpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV0sMikpfX0pLGJ0PSgoKT0+e2NvbnN0IHQ9WGE7cmV0dXJuIHQuaW5zdGFsbD1hPT57YS5jb21wb25lbnQoXCJWdWUzRGF0ZVBpY2tlclwiLHQpfSx0fSkoKTtyZXR1cm4gT2JqZWN0LmVudHJpZXMoT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLGRlZmF1bHQ6YnR9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6XCJNb2R1bGVcIn0pKSkuZm9yRWFjaCgoW3QsYV0pPT57dCE9PVwiZGVmYXVsdFwiJiYoYnRbdF09YSl9KSxidH0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG52YXIgc2hhcmVkID0gcmVxdWlyZSgnQHZ1ZXVzZS9zaGFyZWQnKTtcbnZhciB2dWVEZW1pID0gcmVxdWlyZSgndnVlLWRlbWknKTtcblxuZnVuY3Rpb24gY29tcHV0ZWRBc3luYyhldmFsdWF0aW9uQ2FsbGJhY2ssIGluaXRpYWxTdGF0ZSwgb3B0aW9uc09yUmVmKSB7XG4gIGxldCBvcHRpb25zO1xuICBpZiAodnVlRGVtaS5pc1JlZihvcHRpb25zT3JSZWYpKSB7XG4gICAgb3B0aW9ucyA9IHtcbiAgICAgIGV2YWx1YXRpbmc6IG9wdGlvbnNPclJlZlxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnNPclJlZiB8fCB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgbGF6eSA9IGZhbHNlLFxuICAgIGV2YWx1YXRpbmcgPSB2b2lkIDAsXG4gICAgb25FcnJvciA9IHNoYXJlZC5ub29wXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBzdGFydGVkID0gdnVlRGVtaS5yZWYoIWxhenkpO1xuICBjb25zdCBjdXJyZW50ID0gdnVlRGVtaS5yZWYoaW5pdGlhbFN0YXRlKTtcbiAgbGV0IGNvdW50ZXIgPSAwO1xuICB2dWVEZW1pLndhdGNoRWZmZWN0KGFzeW5jIChvbkludmFsaWRhdGUpID0+IHtcbiAgICBpZiAoIXN0YXJ0ZWQudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgY291bnRlcisrO1xuICAgIGNvbnN0IGNvdW50ZXJBdEJlZ2lubmluZyA9IGNvdW50ZXI7XG4gICAgbGV0IGhhc0ZpbmlzaGVkID0gZmFsc2U7XG4gICAgaWYgKGV2YWx1YXRpbmcpIHtcbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICBldmFsdWF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXZhbHVhdGlvbkNhbGxiYWNrKChjYW5jZWxDYWxsYmFjaykgPT4ge1xuICAgICAgICBvbkludmFsaWRhdGUoKCkgPT4ge1xuICAgICAgICAgIGlmIChldmFsdWF0aW5nKVxuICAgICAgICAgICAgZXZhbHVhdGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIGlmICghaGFzRmluaXNoZWQpXG4gICAgICAgICAgICBjYW5jZWxDYWxsYmFjaygpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgaWYgKGNvdW50ZXJBdEJlZ2lubmluZyA9PT0gY291bnRlcilcbiAgICAgICAgY3VycmVudC52YWx1ZSA9IHJlc3VsdDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBvbkVycm9yKGUpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoZXZhbHVhdGluZyAmJiBjb3VudGVyQXRCZWdpbm5pbmcgPT09IGNvdW50ZXIpXG4gICAgICAgIGV2YWx1YXRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIGhhc0ZpbmlzaGVkID0gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuICBpZiAobGF6eSkge1xuICAgIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHN0YXJ0ZWQudmFsdWUgPSB0cnVlO1xuICAgICAgcmV0dXJuIGN1cnJlbnQudmFsdWU7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29tcHV0ZWRJbmplY3Qoa2V5LCBvcHRpb25zLCBkZWZhdWx0U291cmNlLCB0cmVhdERlZmF1bHRBc0ZhY3RvcnkpIHtcbiAgbGV0IHNvdXJjZSA9IHZ1ZURlbWkuaW5qZWN0KGtleSk7XG4gIGlmIChkZWZhdWx0U291cmNlKVxuICAgIHNvdXJjZSA9IHZ1ZURlbWkuaW5qZWN0KGtleSwgZGVmYXVsdFNvdXJjZSk7XG4gIGlmICh0cmVhdERlZmF1bHRBc0ZhY3RvcnkpXG4gICAgc291cmNlID0gdnVlRGVtaS5pbmplY3Qoa2V5LCBkZWZhdWx0U291cmNlLCB0cmVhdERlZmF1bHRBc0ZhY3RvcnkpO1xuICBpZiAodHlwZW9mIG9wdGlvbnMgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKChjdHgpID0+IG9wdGlvbnMoc291cmNlLCBjdHgpKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdnVlRGVtaS5jb21wdXRlZCh7XG4gICAgICBnZXQ6IChjdHgpID0+IG9wdGlvbnMuZ2V0KHNvdXJjZSwgY3R4KSxcbiAgICAgIHNldDogb3B0aW9ucy5zZXRcbiAgICB9KTtcbiAgfVxufVxuXG5jb25zdCBjcmVhdGVVbnJlZkZuID0gKGZuKSA9PiB7XG4gIHJldHVybiBmdW5jdGlvbiguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3MubWFwKChpKSA9PiB2dWVEZW1pLnVucmVmKGkpKSk7XG4gIH07XG59O1xuXG5mdW5jdGlvbiB1bnJlZkVsZW1lbnQoZWxSZWYpIHtcbiAgdmFyIF9hO1xuICBjb25zdCBwbGFpbiA9IHZ1ZURlbWkudW5yZWYoZWxSZWYpO1xuICByZXR1cm4gKF9hID0gcGxhaW4gPT0gbnVsbCA/IHZvaWQgMCA6IHBsYWluLiRlbCkgIT0gbnVsbCA/IF9hIDogcGxhaW47XG59XG5cbmNvbnN0IGRlZmF1bHRXaW5kb3cgPSBzaGFyZWQuaXNDbGllbnQgPyB3aW5kb3cgOiB2b2lkIDA7XG5jb25zdCBkZWZhdWx0RG9jdW1lbnQgPSBzaGFyZWQuaXNDbGllbnQgPyB3aW5kb3cuZG9jdW1lbnQgOiB2b2lkIDA7XG5jb25zdCBkZWZhdWx0TmF2aWdhdG9yID0gc2hhcmVkLmlzQ2xpZW50ID8gd2luZG93Lm5hdmlnYXRvciA6IHZvaWQgMDtcbmNvbnN0IGRlZmF1bHRMb2NhdGlvbiA9IHNoYXJlZC5pc0NsaWVudCA/IHdpbmRvdy5sb2NhdGlvbiA6IHZvaWQgMDtcblxuZnVuY3Rpb24gdXNlRXZlbnRMaXN0ZW5lciguLi5hcmdzKSB7XG4gIGxldCB0YXJnZXQ7XG4gIGxldCBldmVudDtcbiAgbGV0IGxpc3RlbmVyO1xuICBsZXQgb3B0aW9ucztcbiAgaWYgKHNoYXJlZC5pc1N0cmluZyhhcmdzWzBdKSkge1xuICAgIFtldmVudCwgbGlzdGVuZXIsIG9wdGlvbnNdID0gYXJncztcbiAgICB0YXJnZXQgPSBkZWZhdWx0V2luZG93O1xuICB9IGVsc2Uge1xuICAgIFt0YXJnZXQsIGV2ZW50LCBsaXN0ZW5lciwgb3B0aW9uc10gPSBhcmdzO1xuICB9XG4gIGlmICghdGFyZ2V0KVxuICAgIHJldHVybiBzaGFyZWQubm9vcDtcbiAgbGV0IGNsZWFudXAgPSBzaGFyZWQubm9vcDtcbiAgY29uc3Qgc3RvcFdhdGNoID0gdnVlRGVtaS53YXRjaCgoKSA9PiB1bnJlZkVsZW1lbnQodGFyZ2V0KSwgKGVsKSA9PiB7XG4gICAgY2xlYW51cCgpO1xuICAgIGlmICghZWwpXG4gICAgICByZXR1cm47XG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgbGlzdGVuZXIsIG9wdGlvbnMpO1xuICAgIGNsZWFudXAgPSAoKSA9PiB7XG4gICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBsaXN0ZW5lciwgb3B0aW9ucyk7XG4gICAgICBjbGVhbnVwID0gc2hhcmVkLm5vb3A7XG4gICAgfTtcbiAgfSwgeyBpbW1lZGlhdGU6IHRydWUsIGZsdXNoOiBcInBvc3RcIiB9KTtcbiAgY29uc3Qgc3RvcCA9ICgpID0+IHtcbiAgICBzdG9wV2F0Y2goKTtcbiAgICBjbGVhbnVwKCk7XG4gIH07XG4gIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZShzdG9wKTtcbiAgcmV0dXJuIHN0b3A7XG59XG5cbmZ1bmN0aW9uIG9uQ2xpY2tPdXRzaWRlKHRhcmdldCwgaGFuZGxlciwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgd2luZG93ID0gZGVmYXVsdFdpbmRvdywgaWdub3JlLCBjYXB0dXJlID0gdHJ1ZSwgZGV0ZWN0SWZyYW1lID0gZmFsc2UgfSA9IG9wdGlvbnM7XG4gIGlmICghd2luZG93KVxuICAgIHJldHVybjtcbiAgY29uc3Qgc2hvdWxkTGlzdGVuID0gdnVlRGVtaS5yZWYodHJ1ZSk7XG4gIGxldCBmYWxsYmFjaztcbiAgY29uc3QgbGlzdGVuZXIgPSAoZXZlbnQpID0+IHtcbiAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGZhbGxiYWNrKTtcbiAgICBjb25zdCBlbCA9IHVucmVmRWxlbWVudCh0YXJnZXQpO1xuICAgIGNvbnN0IGNvbXBvc2VkUGF0aCA9IGV2ZW50LmNvbXBvc2VkUGF0aCgpO1xuICAgIGlmICghZWwgfHwgZWwgPT09IGV2ZW50LnRhcmdldCB8fCBjb21wb3NlZFBhdGguaW5jbHVkZXMoZWwpIHx8ICFzaG91bGRMaXN0ZW4udmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgaWYgKGlnbm9yZSAmJiBpZ25vcmUubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKGlnbm9yZS5zb21lKCh0YXJnZXQyKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsMiA9IHVucmVmRWxlbWVudCh0YXJnZXQyKTtcbiAgICAgICAgcmV0dXJuIGVsMiAmJiAoZXZlbnQudGFyZ2V0ID09PSBlbDIgfHwgY29tcG9zZWRQYXRoLmluY2x1ZGVzKGVsMikpO1xuICAgICAgfSkpXG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaGFuZGxlcihldmVudCk7XG4gIH07XG4gIGNvbnN0IGNsZWFudXAgPSBbXG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwiY2xpY2tcIiwgbGlzdGVuZXIsIHsgcGFzc2l2ZTogdHJ1ZSwgY2FwdHVyZSB9KSxcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJwb2ludGVyZG93blwiLCAoZSkgPT4ge1xuICAgICAgY29uc3QgZWwgPSB1bnJlZkVsZW1lbnQodGFyZ2V0KTtcbiAgICAgIHNob3VsZExpc3Rlbi52YWx1ZSA9ICEhZWwgJiYgIWUuY29tcG9zZWRQYXRoKCkuaW5jbHVkZXMoZWwpO1xuICAgIH0sIHsgcGFzc2l2ZTogdHJ1ZSB9KSxcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJwb2ludGVydXBcIiwgKGUpID0+IHtcbiAgICAgIGlmIChlLmJ1dHRvbiA9PT0gMCkge1xuICAgICAgICBjb25zdCBwYXRoID0gZS5jb21wb3NlZFBhdGgoKTtcbiAgICAgICAgZS5jb21wb3NlZFBhdGggPSAoKSA9PiBwYXRoO1xuICAgICAgICBmYWxsYmFjayA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IGxpc3RlbmVyKGUpLCA1MCk7XG4gICAgICB9XG4gICAgfSwgeyBwYXNzaXZlOiB0cnVlIH0pLFxuICAgIGRldGVjdElmcmFtZSAmJiB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJibHVyXCIsIChldmVudCkgPT4ge1xuICAgICAgdmFyIF9hO1xuICAgICAgY29uc3QgZWwgPSB1bnJlZkVsZW1lbnQodGFyZ2V0KTtcbiAgICAgIGlmICgoKF9hID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnRhZ05hbWUpID09PSBcIklGUkFNRVwiICYmICEoZWwgPT0gbnVsbCA/IHZvaWQgMCA6IGVsLmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSlcbiAgICAgICAgaGFuZGxlcihldmVudCk7XG4gICAgfSlcbiAgXS5maWx0ZXIoQm9vbGVhbik7XG4gIGNvbnN0IHN0b3AgPSAoKSA9PiBjbGVhbnVwLmZvckVhY2goKGZuKSA9PiBmbigpKTtcbiAgcmV0dXJuIHN0b3A7XG59XG5cbnZhciBfX2RlZlByb3AkaiA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2RlZlByb3BzJDggPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcztcbnZhciBfX2dldE93blByb3BEZXNjcyQ4ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyRsID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkbCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJGwgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCRqID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCRqKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyRqID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkbC5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJGooYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJGwpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJGwoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kbC5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkaihhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbnZhciBfX3NwcmVhZFByb3BzJDggPSAoYSwgYikgPT4gX19kZWZQcm9wcyQ4KGEsIF9fZ2V0T3duUHJvcERlc2NzJDgoYikpO1xuY29uc3QgY3JlYXRlS2V5UHJlZGljYXRlID0gKGtleUZpbHRlcikgPT4ge1xuICBpZiAodHlwZW9mIGtleUZpbHRlciA9PT0gXCJmdW5jdGlvblwiKVxuICAgIHJldHVybiBrZXlGaWx0ZXI7XG4gIGVsc2UgaWYgKHR5cGVvZiBrZXlGaWx0ZXIgPT09IFwic3RyaW5nXCIpXG4gICAgcmV0dXJuIChldmVudCkgPT4gZXZlbnQua2V5ID09PSBrZXlGaWx0ZXI7XG4gIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoa2V5RmlsdGVyKSlcbiAgICByZXR1cm4gKGV2ZW50KSA9PiBrZXlGaWx0ZXIuaW5jbHVkZXMoZXZlbnQua2V5KTtcbiAgZWxzZSBpZiAoa2V5RmlsdGVyKVxuICAgIHJldHVybiAoKSA9PiB0cnVlO1xuICBlbHNlXG4gICAgcmV0dXJuICgpID0+IGZhbHNlO1xufTtcbmZ1bmN0aW9uIG9uS2V5U3Ryb2tlKGtleSwgaGFuZGxlciwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgdGFyZ2V0ID0gZGVmYXVsdFdpbmRvdywgZXZlbnROYW1lID0gXCJrZXlkb3duXCIsIHBhc3NpdmUgPSBmYWxzZSB9ID0gb3B0aW9ucztcbiAgY29uc3QgcHJlZGljYXRlID0gY3JlYXRlS2V5UHJlZGljYXRlKGtleSk7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGUpID0+IHtcbiAgICBpZiAocHJlZGljYXRlKGUpKVxuICAgICAgaGFuZGxlcihlKTtcbiAgfTtcbiAgcmV0dXJuIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBldmVudE5hbWUsIGxpc3RlbmVyLCBwYXNzaXZlKTtcbn1cbmZ1bmN0aW9uIG9uS2V5RG93bihrZXksIGhhbmRsZXIsIG9wdGlvbnMgPSB7fSkge1xuICByZXR1cm4gb25LZXlTdHJva2Uoa2V5LCBoYW5kbGVyLCBfX3NwcmVhZFByb3BzJDgoX19zcHJlYWRWYWx1ZXMkaih7fSwgb3B0aW9ucyksIHsgZXZlbnROYW1lOiBcImtleWRvd25cIiB9KSk7XG59XG5mdW5jdGlvbiBvbktleVByZXNzZWQoa2V5LCBoYW5kbGVyLCBvcHRpb25zID0ge30pIHtcbiAgcmV0dXJuIG9uS2V5U3Ryb2tlKGtleSwgaGFuZGxlciwgX19zcHJlYWRQcm9wcyQ4KF9fc3ByZWFkVmFsdWVzJGooe30sIG9wdGlvbnMpLCB7IGV2ZW50TmFtZTogXCJrZXlwcmVzc1wiIH0pKTtcbn1cbmZ1bmN0aW9uIG9uS2V5VXAoa2V5LCBoYW5kbGVyLCBvcHRpb25zID0ge30pIHtcbiAgcmV0dXJuIG9uS2V5U3Ryb2tlKGtleSwgaGFuZGxlciwgX19zcHJlYWRQcm9wcyQ4KF9fc3ByZWFkVmFsdWVzJGooe30sIG9wdGlvbnMpLCB7IGV2ZW50TmFtZTogXCJrZXl1cFwiIH0pKTtcbn1cblxuY29uc3QgREVGQVVMVF9ERUxBWSA9IDUwMDtcbmZ1bmN0aW9uIG9uTG9uZ1ByZXNzKHRhcmdldCwgaGFuZGxlciwgb3B0aW9ucykge1xuICB2YXIgX2EsIF9iO1xuICBjb25zdCBlbGVtZW50UmVmID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB1bnJlZkVsZW1lbnQodGFyZ2V0KSk7XG4gIGxldCB0aW1lb3V0ID0gbnVsbDtcbiAgZnVuY3Rpb24gY2xlYXIoKSB7XG4gICAgaWYgKHRpbWVvdXQgIT0gbnVsbCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgdGltZW91dCA9IG51bGw7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIG9uRG93bihldikge1xuICAgIHZhciBfYTIsIF9iMiwgX2MsIF9kO1xuICAgIGlmICgoKF9hMiA9IG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMubW9kaWZpZXJzKSA9PSBudWxsID8gdm9pZCAwIDogX2EyLnNlbGYpICYmIGV2LnRhcmdldCAhPT0gZWxlbWVudFJlZi52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBjbGVhcigpO1xuICAgIGlmICgoX2IyID0gb3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5tb2RpZmllcnMpID09IG51bGwgPyB2b2lkIDAgOiBfYjIucHJldmVudClcbiAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKChfYyA9IG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMubW9kaWZpZXJzKSA9PSBudWxsID8gdm9pZCAwIDogX2Muc3RvcClcbiAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IGhhbmRsZXIoZXYpLCAoX2QgPSBvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLmRlbGF5KSAhPSBudWxsID8gX2QgOiBERUZBVUxUX0RFTEFZKTtcbiAgfVxuICBjb25zdCBsaXN0ZW5lck9wdGlvbnMgPSB7XG4gICAgY2FwdHVyZTogKF9hID0gb3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5tb2RpZmllcnMpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jYXB0dXJlLFxuICAgIG9uY2U6IChfYiA9IG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMubW9kaWZpZXJzKSA9PSBudWxsID8gdm9pZCAwIDogX2Iub25jZVxuICB9O1xuICB1c2VFdmVudExpc3RlbmVyKGVsZW1lbnRSZWYsIFwicG9pbnRlcmRvd25cIiwgb25Eb3duLCBsaXN0ZW5lck9wdGlvbnMpO1xuICB1c2VFdmVudExpc3RlbmVyKGVsZW1lbnRSZWYsIFwicG9pbnRlcnVwXCIsIGNsZWFyLCBsaXN0ZW5lck9wdGlvbnMpO1xuICB1c2VFdmVudExpc3RlbmVyKGVsZW1lbnRSZWYsIFwicG9pbnRlcmxlYXZlXCIsIGNsZWFyLCBsaXN0ZW5lck9wdGlvbnMpO1xufVxuXG5jb25zdCBpc0ZvY3VzZWRFbGVtZW50RWRpdGFibGUgPSAoKSA9PiB7XG4gIGNvbnN0IHsgYWN0aXZlRWxlbWVudCwgYm9keSB9ID0gZG9jdW1lbnQ7XG4gIGlmICghYWN0aXZlRWxlbWVudClcbiAgICByZXR1cm4gZmFsc2U7XG4gIGlmIChhY3RpdmVFbGVtZW50ID09PSBib2R5KVxuICAgIHJldHVybiBmYWxzZTtcbiAgc3dpdGNoIChhY3RpdmVFbGVtZW50LnRhZ05hbWUpIHtcbiAgICBjYXNlIFwiSU5QVVRcIjpcbiAgICBjYXNlIFwiVEVYVEFSRUFcIjpcbiAgICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBhY3RpdmVFbGVtZW50Lmhhc0F0dHJpYnV0ZShcImNvbnRlbnRlZGl0YWJsZVwiKTtcbn07XG5jb25zdCBpc1R5cGVkQ2hhclZhbGlkID0gKHtcbiAga2V5Q29kZSxcbiAgbWV0YUtleSxcbiAgY3RybEtleSxcbiAgYWx0S2V5XG59KSA9PiB7XG4gIGlmIChtZXRhS2V5IHx8IGN0cmxLZXkgfHwgYWx0S2V5KVxuICAgIHJldHVybiBmYWxzZTtcbiAgaWYgKGtleUNvZGUgPj0gNDggJiYga2V5Q29kZSA8PSA1NyB8fCBrZXlDb2RlID49IDk2ICYmIGtleUNvZGUgPD0gMTA1KVxuICAgIHJldHVybiB0cnVlO1xuICBpZiAoa2V5Q29kZSA+PSA2NSAmJiBrZXlDb2RlIDw9IDkwKVxuICAgIHJldHVybiB0cnVlO1xuICByZXR1cm4gZmFsc2U7XG59O1xuZnVuY3Rpb24gb25TdGFydFR5cGluZyhjYWxsYmFjaywgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgZG9jdW1lbnQ6IGRvY3VtZW50MiA9IGRlZmF1bHREb2N1bWVudCB9ID0gb3B0aW9ucztcbiAgY29uc3Qga2V5ZG93biA9IChldmVudCkgPT4ge1xuICAgICFpc0ZvY3VzZWRFbGVtZW50RWRpdGFibGUoKSAmJiBpc1R5cGVkQ2hhclZhbGlkKGV2ZW50KSAmJiBjYWxsYmFjayhldmVudCk7XG4gIH07XG4gIGlmIChkb2N1bWVudDIpXG4gICAgdXNlRXZlbnRMaXN0ZW5lcihkb2N1bWVudDIsIFwia2V5ZG93blwiLCBrZXlkb3duLCB7IHBhc3NpdmU6IHRydWUgfSk7XG59XG5cbmZ1bmN0aW9uIHRlbXBsYXRlUmVmKGtleSwgaW5pdGlhbFZhbHVlID0gbnVsbCkge1xuICBjb25zdCBpbnN0YW5jZSA9IHZ1ZURlbWkuZ2V0Q3VycmVudEluc3RhbmNlKCk7XG4gIGxldCBfdHJpZ2dlciA9ICgpID0+IHtcbiAgfTtcbiAgY29uc3QgZWxlbWVudCA9IHZ1ZURlbWkuY3VzdG9tUmVmKCh0cmFjaywgdHJpZ2dlcikgPT4ge1xuICAgIF90cmlnZ2VyID0gdHJpZ2dlcjtcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0KCkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICB0cmFjaygpO1xuICAgICAgICByZXR1cm4gKF9iID0gKF9hID0gaW5zdGFuY2UgPT0gbnVsbCA/IHZvaWQgMCA6IGluc3RhbmNlLnByb3h5KSA9PSBudWxsID8gdm9pZCAwIDogX2EuJHJlZnNba2V5XSkgIT0gbnVsbCA/IF9iIDogaW5pdGlhbFZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldCgpIHtcbiAgICAgIH1cbiAgICB9O1xuICB9KTtcbiAgc2hhcmVkLnRyeU9uTW91bnRlZChfdHJpZ2dlcik7XG4gIHZ1ZURlbWkub25VcGRhdGVkKF90cmlnZ2VyKTtcbiAgcmV0dXJuIGVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIHVzZUFjdGl2ZUVsZW1lbnQob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgd2luZG93ID0gZGVmYXVsdFdpbmRvdyB9ID0gb3B0aW9ucztcbiAgY29uc3QgY291bnRlciA9IHZ1ZURlbWkucmVmKDApO1xuICBpZiAod2luZG93KSB7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwiYmx1clwiLCAoKSA9PiBjb3VudGVyLnZhbHVlICs9IDEsIHRydWUpO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcImZvY3VzXCIsICgpID0+IGNvdW50ZXIudmFsdWUgKz0gMSwgdHJ1ZSk7XG4gIH1cbiAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvdW50ZXIudmFsdWU7XG4gICAgcmV0dXJuIHdpbmRvdyA9PSBudWxsID8gdm9pZCAwIDogd2luZG93LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB1c2VBc3luY1F1ZXVlKHRhc2tzLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGludGVycnVwdCA9IHRydWUsXG4gICAgb25FcnJvciA9IHNoYXJlZC5ub29wLFxuICAgIG9uRmluaXNoZWQgPSBzaGFyZWQubm9vcFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcHJvbWlzZVN0YXRlID0ge1xuICAgIHBlbmRpbmc6IFwicGVuZGluZ1wiLFxuICAgIHJlamVjdGVkOiBcInJlamVjdGVkXCIsXG4gICAgZnVsZmlsbGVkOiBcImZ1bGZpbGxlZFwiXG4gIH07XG4gIGNvbnN0IGluaXRpYWxSZXN1bHQgPSBBcnJheS5mcm9tKG5ldyBBcnJheSh0YXNrcy5sZW5ndGgpLCAoKSA9PiAoeyBzdGF0ZTogcHJvbWlzZVN0YXRlLnBlbmRpbmcsIGRhdGE6IG51bGwgfSkpO1xuICBjb25zdCByZXN1bHQgPSB2dWVEZW1pLnJlYWN0aXZlKGluaXRpYWxSZXN1bHQpO1xuICBjb25zdCBhY3RpdmVJbmRleCA9IHZ1ZURlbWkucmVmKC0xKTtcbiAgaWYgKCF0YXNrcyB8fCB0YXNrcy5sZW5ndGggPT09IDApIHtcbiAgICBvbkZpbmlzaGVkKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGl2ZUluZGV4LFxuICAgICAgcmVzdWx0XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiB1cGRhdGVSZXN1bHQoc3RhdGUsIHJlcykge1xuICAgIGFjdGl2ZUluZGV4LnZhbHVlKys7XG4gICAgcmVzdWx0W2FjdGl2ZUluZGV4LnZhbHVlXS5kYXRhID0gcmVzO1xuICAgIHJlc3VsdFthY3RpdmVJbmRleC52YWx1ZV0uc3RhdGUgPSBzdGF0ZTtcbiAgfVxuICB0YXNrcy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcbiAgICByZXR1cm4gcHJldi50aGVuKChwcmV2UmVzKSA9PiB7XG4gICAgICB2YXIgX2E7XG4gICAgICBpZiAoKChfYSA9IHJlc3VsdFthY3RpdmVJbmRleC52YWx1ZV0pID09IG51bGwgPyB2b2lkIDAgOiBfYS5zdGF0ZSkgPT09IHByb21pc2VTdGF0ZS5yZWplY3RlZCAmJiBpbnRlcnJ1cHQpIHtcbiAgICAgICAgb25GaW5pc2hlZCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXR1cm4gY3VycihwcmV2UmVzKS50aGVuKChjdXJyZW50UmVzKSA9PiB7XG4gICAgICAgIHVwZGF0ZVJlc3VsdChwcm9taXNlU3RhdGUuZnVsZmlsbGVkLCBjdXJyZW50UmVzKTtcbiAgICAgICAgYWN0aXZlSW5kZXgudmFsdWUgPT09IHRhc2tzLmxlbmd0aCAtIDEgJiYgb25GaW5pc2hlZCgpO1xuICAgICAgICByZXR1cm4gY3VycmVudFJlcztcbiAgICAgIH0pO1xuICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICB1cGRhdGVSZXN1bHQocHJvbWlzZVN0YXRlLnJlamVjdGVkLCBlKTtcbiAgICAgIG9uRXJyb3IoKTtcbiAgICAgIHJldHVybiBlO1xuICAgIH0pO1xuICB9LCBQcm9taXNlLnJlc29sdmUoKSk7XG4gIHJldHVybiB7XG4gICAgYWN0aXZlSW5kZXgsXG4gICAgcmVzdWx0XG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZUFzeW5jU3RhdGUocHJvbWlzZSwgaW5pdGlhbFN0YXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IHtcbiAgICBpbW1lZGlhdGUgPSB0cnVlLFxuICAgIGRlbGF5ID0gMCxcbiAgICBvbkVycm9yID0gc2hhcmVkLm5vb3AsXG4gICAgcmVzZXRPbkV4ZWN1dGUgPSB0cnVlLFxuICAgIHNoYWxsb3cgPSB0cnVlXG4gIH0gPSBvcHRpb25zICE9IG51bGwgPyBvcHRpb25zIDoge307XG4gIGNvbnN0IHN0YXRlID0gc2hhbGxvdyA/IHZ1ZURlbWkuc2hhbGxvd1JlZihpbml0aWFsU3RhdGUpIDogdnVlRGVtaS5yZWYoaW5pdGlhbFN0YXRlKTtcbiAgY29uc3QgaXNSZWFkeSA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgaXNMb2FkaW5nID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBlcnJvciA9IHZ1ZURlbWkucmVmKHZvaWQgMCk7XG4gIGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGUoZGVsYXkyID0gMCwgLi4uYXJncykge1xuICAgIGlmIChyZXNldE9uRXhlY3V0ZSlcbiAgICAgIHN0YXRlLnZhbHVlID0gaW5pdGlhbFN0YXRlO1xuICAgIGVycm9yLnZhbHVlID0gdm9pZCAwO1xuICAgIGlzUmVhZHkudmFsdWUgPSBmYWxzZTtcbiAgICBpc0xvYWRpbmcudmFsdWUgPSB0cnVlO1xuICAgIGlmIChkZWxheTIgPiAwKVxuICAgICAgYXdhaXQgc2hhcmVkLnByb21pc2VUaW1lb3V0KGRlbGF5Mik7XG4gICAgY29uc3QgX3Byb21pc2UgPSB0eXBlb2YgcHJvbWlzZSA9PT0gXCJmdW5jdGlvblwiID8gcHJvbWlzZSguLi5hcmdzKSA6IHByb21pc2U7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBfcHJvbWlzZTtcbiAgICAgIHN0YXRlLnZhbHVlID0gZGF0YTtcbiAgICAgIGlzUmVhZHkudmFsdWUgPSB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGVycm9yLnZhbHVlID0gZTtcbiAgICAgIG9uRXJyb3IoZSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlzTG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGUudmFsdWU7XG4gIH1cbiAgaWYgKGltbWVkaWF0ZSlcbiAgICBleGVjdXRlKGRlbGF5KTtcbiAgcmV0dXJuIHtcbiAgICBzdGF0ZSxcbiAgICBpc1JlYWR5LFxuICAgIGlzTG9hZGluZyxcbiAgICBlcnJvcixcbiAgICBleGVjdXRlXG4gIH07XG59XG5cbmNvbnN0IGRlZmF1bHRzID0ge1xuICBhcnJheTogKHYpID0+IEpTT04uc3RyaW5naWZ5KHYpLFxuICBvYmplY3Q6ICh2KSA9PiBKU09OLnN0cmluZ2lmeSh2KSxcbiAgc2V0OiAodikgPT4gSlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbSh2KSksXG4gIG1hcDogKHYpID0+IEpTT04uc3RyaW5naWZ5KE9iamVjdC5mcm9tRW50cmllcyh2KSksXG4gIG51bGw6ICgpID0+IFwiXCJcbn07XG5mdW5jdGlvbiBnZXREZWZhdWx0U2VyaWFsaXphdGlvbih0YXJnZXQpIHtcbiAgaWYgKCF0YXJnZXQpXG4gICAgcmV0dXJuIGRlZmF1bHRzLm51bGw7XG4gIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBNYXApXG4gICAgcmV0dXJuIGRlZmF1bHRzLm1hcDtcbiAgZWxzZSBpZiAodGFyZ2V0IGluc3RhbmNlb2YgU2V0KVxuICAgIHJldHVybiBkZWZhdWx0cy5zZXQ7XG4gIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSlcbiAgICByZXR1cm4gZGVmYXVsdHMuYXJyYXk7XG4gIGVsc2VcbiAgICByZXR1cm4gZGVmYXVsdHMub2JqZWN0O1xufVxuXG5mdW5jdGlvbiB1c2VCYXNlNjQodGFyZ2V0LCBvcHRpb25zKSB7XG4gIGNvbnN0IGJhc2U2NCA9IHZ1ZURlbWkucmVmKFwiXCIpO1xuICBjb25zdCBwcm9taXNlID0gdnVlRGVtaS5yZWYoKTtcbiAgZnVuY3Rpb24gZXhlY3V0ZSgpIHtcbiAgICBpZiAoIXNoYXJlZC5pc0NsaWVudClcbiAgICAgIHJldHVybjtcbiAgICBwcm9taXNlLnZhbHVlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgX3RhcmdldCA9IHZ1ZURlbWkudW5yZWYodGFyZ2V0KTtcbiAgICAgICAgaWYgKF90YXJnZXQgPT0gbnVsbCkge1xuICAgICAgICAgIHJlc29sdmUoXCJcIik7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIF90YXJnZXQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICByZXNvbHZlKGJsb2JUb0Jhc2U2NChuZXcgQmxvYihbX3RhcmdldF0sIHsgdHlwZTogXCJ0ZXh0L3BsYWluXCIgfSkpKTtcbiAgICAgICAgfSBlbHNlIGlmIChfdGFyZ2V0IGluc3RhbmNlb2YgQmxvYikge1xuICAgICAgICAgIHJlc29sdmUoYmxvYlRvQmFzZTY0KF90YXJnZXQpKTtcbiAgICAgICAgfSBlbHNlIGlmIChfdGFyZ2V0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICAgICAgICByZXNvbHZlKHdpbmRvdy5idG9hKFN0cmluZy5mcm9tQ2hhckNvZGUoLi4ubmV3IFVpbnQ4QXJyYXkoX3RhcmdldCkpKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoX3RhcmdldCBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50KSB7XG4gICAgICAgICAgcmVzb2x2ZShfdGFyZ2V0LnRvRGF0YVVSTChvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLnR5cGUsIG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMucXVhbGl0eSkpO1xuICAgICAgICB9IGVsc2UgaWYgKF90YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50KSB7XG4gICAgICAgICAgY29uc3QgaW1nID0gX3RhcmdldC5jbG9uZU5vZGUoZmFsc2UpO1xuICAgICAgICAgIGltZy5jcm9zc09yaWdpbiA9IFwiQW5vbnltb3VzXCI7XG4gICAgICAgICAgaW1nTG9hZGVkKGltZykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICAgICAgICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgICAgICAgICAgIGNhbnZhcy53aWR0aCA9IGltZy53aWR0aDtcbiAgICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBpbWcuaGVpZ2h0O1xuICAgICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG4gICAgICAgICAgICByZXNvbHZlKGNhbnZhcy50b0RhdGFVUkwob3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy50eXBlLCBvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLnF1YWxpdHkpKTtcbiAgICAgICAgICB9KS5jYXRjaChyZWplY3QpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBfdGFyZ2V0ID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgY29uc3QgX3NlcmlhbGl6ZUZuID0gKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuc2VyaWFsaXplcikgfHwgZ2V0RGVmYXVsdFNlcmlhbGl6YXRpb24oX3RhcmdldCk7XG4gICAgICAgICAgY29uc3Qgc2VyaWFsaXplZCA9IF9zZXJpYWxpemVGbihfdGFyZ2V0KTtcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZShibG9iVG9CYXNlNjQobmV3IEJsb2IoW3NlcmlhbGl6ZWRdLCB7IHR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiIH0pKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihcInRhcmdldCBpcyB1bnN1cHBvcnRlZCB0eXBlc1wiKSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcHJvbWlzZS52YWx1ZS50aGVuKChyZXMpID0+IGJhc2U2NC52YWx1ZSA9IHJlcyk7XG4gICAgcmV0dXJuIHByb21pc2UudmFsdWU7XG4gIH1cbiAgaWYgKHZ1ZURlbWkuaXNSZWYodGFyZ2V0KSlcbiAgICB2dWVEZW1pLndhdGNoKHRhcmdldCwgZXhlY3V0ZSwgeyBpbW1lZGlhdGU6IHRydWUgfSk7XG4gIGVsc2VcbiAgICBleGVjdXRlKCk7XG4gIHJldHVybiB7XG4gICAgYmFzZTY0LFxuICAgIHByb21pc2UsXG4gICAgZXhlY3V0ZVxuICB9O1xufVxuZnVuY3Rpb24gaW1nTG9hZGVkKGltZykge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGlmICghaW1nLmNvbXBsZXRlKSB7XG4gICAgICBpbWcub25sb2FkID0gKCkgPT4ge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9O1xuICAgICAgaW1nLm9uZXJyb3IgPSByZWplY3Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gYmxvYlRvQmFzZTY0KGJsb2IpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBmciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgZnIub25sb2FkID0gKGUpID0+IHtcbiAgICAgIHJlc29sdmUoZS50YXJnZXQucmVzdWx0KTtcbiAgICB9O1xuICAgIGZyLm9uZXJyb3IgPSByZWplY3Q7XG4gICAgZnIucmVhZEFzRGF0YVVSTChibG9iKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVzZUJhdHRlcnkoeyBuYXZpZ2F0b3IgPSBkZWZhdWx0TmF2aWdhdG9yIH0gPSB7fSkge1xuICBjb25zdCBldmVudHMgPSBbXCJjaGFyZ2luZ2NoYW5nZVwiLCBcImNoYXJnaW5ndGltZWNoYW5nZVwiLCBcImRpc2NoYXJnaW5ndGltZWNoYW5nZVwiLCBcImxldmVsY2hhbmdlXCJdO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IG5hdmlnYXRvciAmJiBcImdldEJhdHRlcnlcIiBpbiBuYXZpZ2F0b3I7XG4gIGNvbnN0IGNoYXJnaW5nID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBjaGFyZ2luZ1RpbWUgPSB2dWVEZW1pLnJlZigwKTtcbiAgY29uc3QgZGlzY2hhcmdpbmdUaW1lID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IGxldmVsID0gdnVlRGVtaS5yZWYoMSk7XG4gIGxldCBiYXR0ZXJ5O1xuICBmdW5jdGlvbiB1cGRhdGVCYXR0ZXJ5SW5mbygpIHtcbiAgICBjaGFyZ2luZy52YWx1ZSA9IHRoaXMuY2hhcmdpbmc7XG4gICAgY2hhcmdpbmdUaW1lLnZhbHVlID0gdGhpcy5jaGFyZ2luZ1RpbWUgfHwgMDtcbiAgICBkaXNjaGFyZ2luZ1RpbWUudmFsdWUgPSB0aGlzLmRpc2NoYXJnaW5nVGltZSB8fCAwO1xuICAgIGxldmVsLnZhbHVlID0gdGhpcy5sZXZlbDtcbiAgfVxuICBpZiAoaXNTdXBwb3J0ZWQpIHtcbiAgICBuYXZpZ2F0b3IuZ2V0QmF0dGVyeSgpLnRoZW4oKF9iYXR0ZXJ5KSA9PiB7XG4gICAgICBiYXR0ZXJ5ID0gX2JhdHRlcnk7XG4gICAgICB1cGRhdGVCYXR0ZXJ5SW5mby5jYWxsKGJhdHRlcnkpO1xuICAgICAgZm9yIChjb25zdCBldmVudCBvZiBldmVudHMpXG4gICAgICAgIHVzZUV2ZW50TGlzdGVuZXIoYmF0dGVyeSwgZXZlbnQsIHVwZGF0ZUJhdHRlcnlJbmZvLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBjaGFyZ2luZyxcbiAgICBjaGFyZ2luZ1RpbWUsXG4gICAgZGlzY2hhcmdpbmdUaW1lLFxuICAgIGxldmVsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZUJsdWV0b290aChvcHRpb25zKSB7XG4gIGxldCB7XG4gICAgYWNjZXB0QWxsRGV2aWNlcyA9IGZhbHNlXG4gIH0gPSBvcHRpb25zIHx8IHt9O1xuICBjb25zdCB7XG4gICAgZmlsdGVycyA9IHZvaWQgMCxcbiAgICBvcHRpb25hbFNlcnZpY2VzID0gdm9pZCAwLFxuICAgIG5hdmlnYXRvciA9IGRlZmF1bHROYXZpZ2F0b3JcbiAgfSA9IG9wdGlvbnMgfHwge307XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gbmF2aWdhdG9yICYmIFwiYmx1ZXRvb3RoXCIgaW4gbmF2aWdhdG9yO1xuICBjb25zdCBkZXZpY2UgPSB2dWVEZW1pLnJlZih2b2lkIDApO1xuICBjb25zdCBlcnJvciA9IHZ1ZURlbWkucmVmKG51bGwpO1xuICB2dWVEZW1pLndhdGNoKGRldmljZSwgKCkgPT4ge1xuICAgIGNvbm5lY3RUb0JsdWV0b290aEdBVFRTZXJ2ZXIoKTtcbiAgfSk7XG4gIGFzeW5jIGZ1bmN0aW9uIHJlcXVlc3REZXZpY2UoKSB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZClcbiAgICAgIHJldHVybjtcbiAgICBlcnJvci52YWx1ZSA9IG51bGw7XG4gICAgaWYgKGZpbHRlcnMgJiYgZmlsdGVycy5sZW5ndGggPiAwKVxuICAgICAgYWNjZXB0QWxsRGV2aWNlcyA9IGZhbHNlO1xuICAgIHRyeSB7XG4gICAgICBkZXZpY2UudmFsdWUgPSBhd2FpdCAobmF2aWdhdG9yID09IG51bGwgPyB2b2lkIDAgOiBuYXZpZ2F0b3IuYmx1ZXRvb3RoLnJlcXVlc3REZXZpY2Uoe1xuICAgICAgICBhY2NlcHRBbGxEZXZpY2VzLFxuICAgICAgICBmaWx0ZXJzLFxuICAgICAgICBvcHRpb25hbFNlcnZpY2VzXG4gICAgICB9KSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBlcnJvci52YWx1ZSA9IGVycjtcbiAgICB9XG4gIH1cbiAgY29uc3Qgc2VydmVyID0gdnVlRGVtaS5yZWYoKTtcbiAgY29uc3QgaXNDb25uZWN0ZWQgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgcmV0dXJuICgoX2EgPSBzZXJ2ZXIudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jb25uZWN0ZWQpIHx8IGZhbHNlO1xuICB9KTtcbiAgYXN5bmMgZnVuY3Rpb24gY29ubmVjdFRvQmx1ZXRvb3RoR0FUVFNlcnZlcigpIHtcbiAgICBlcnJvci52YWx1ZSA9IG51bGw7XG4gICAgaWYgKGRldmljZS52YWx1ZSAmJiBkZXZpY2UudmFsdWUuZ2F0dCkge1xuICAgICAgZGV2aWNlLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoXCJnYXR0c2VydmVyZGlzY29ubmVjdGVkXCIsICgpID0+IHtcbiAgICAgIH0pO1xuICAgICAgdHJ5IHtcbiAgICAgICAgc2VydmVyLnZhbHVlID0gYXdhaXQgZGV2aWNlLnZhbHVlLmdhdHQuY29ubmVjdCgpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGVycm9yLnZhbHVlID0gZXJyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBzaGFyZWQudHJ5T25Nb3VudGVkKCgpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKGRldmljZS52YWx1ZSlcbiAgICAgIChfYSA9IGRldmljZS52YWx1ZS5nYXR0KSA9PSBudWxsID8gdm9pZCAwIDogX2EuY29ubmVjdCgpO1xuICB9KTtcbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKCgpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKGRldmljZS52YWx1ZSlcbiAgICAgIChfYSA9IGRldmljZS52YWx1ZS5nYXR0KSA9PSBudWxsID8gdm9pZCAwIDogX2EuZGlzY29ubmVjdCgpO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBpc0Nvbm5lY3RlZCxcbiAgICBkZXZpY2UsXG4gICAgcmVxdWVzdERldmljZSxcbiAgICBzZXJ2ZXIsXG4gICAgZXJyb3JcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlTWVkaWFRdWVyeShxdWVyeSwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgd2luZG93ID0gZGVmYXVsdFdpbmRvdyB9ID0gb3B0aW9ucztcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSBCb29sZWFuKHdpbmRvdyAmJiBcIm1hdGNoTWVkaWFcIiBpbiB3aW5kb3cgJiYgdHlwZW9mIHdpbmRvdy5tYXRjaE1lZGlhID09PSBcImZ1bmN0aW9uXCIpO1xuICBsZXQgbWVkaWFRdWVyeTtcbiAgY29uc3QgbWF0Y2hlcyA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgdXBkYXRlID0gKCkgPT4ge1xuICAgIGlmICghaXNTdXBwb3J0ZWQpXG4gICAgICByZXR1cm47XG4gICAgaWYgKCFtZWRpYVF1ZXJ5KVxuICAgICAgbWVkaWFRdWVyeSA9IHdpbmRvdy5tYXRjaE1lZGlhKHF1ZXJ5KTtcbiAgICBtYXRjaGVzLnZhbHVlID0gbWVkaWFRdWVyeS5tYXRjaGVzO1xuICB9O1xuICBzaGFyZWQudHJ5T25CZWZvcmVNb3VudCgoKSA9PiB7XG4gICAgdXBkYXRlKCk7XG4gICAgaWYgKCFtZWRpYVF1ZXJ5KVxuICAgICAgcmV0dXJuO1xuICAgIGlmIChcImFkZEV2ZW50TGlzdGVuZXJcIiBpbiBtZWRpYVF1ZXJ5KVxuICAgICAgbWVkaWFRdWVyeS5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIHVwZGF0ZSk7XG4gICAgZWxzZVxuICAgICAgbWVkaWFRdWVyeS5hZGRMaXN0ZW5lcih1cGRhdGUpO1xuICAgIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZSgoKSA9PiB7XG4gICAgICBpZiAoXCJyZW1vdmVFdmVudExpc3RlbmVyXCIgaW4gbWVkaWFRdWVyeSlcbiAgICAgICAgbWVkaWFRdWVyeS5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIHVwZGF0ZSk7XG4gICAgICBlbHNlXG4gICAgICAgIG1lZGlhUXVlcnkucmVtb3ZlTGlzdGVuZXIodXBkYXRlKTtcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBtYXRjaGVzO1xufVxuXG5jb25zdCBicmVha3BvaW50c1RhaWx3aW5kID0ge1xuICBcInNtXCI6IDY0MCxcbiAgXCJtZFwiOiA3NjgsXG4gIFwibGdcIjogMTAyNCxcbiAgXCJ4bFwiOiAxMjgwLFxuICBcIjJ4bFwiOiAxNTM2XG59O1xuY29uc3QgYnJlYWtwb2ludHNCb290c3RyYXBWNSA9IHtcbiAgc206IDU3NixcbiAgbWQ6IDc2OCxcbiAgbGc6IDk5MixcbiAgeGw6IDEyMDAsXG4gIHh4bDogMTQwMFxufTtcbmNvbnN0IGJyZWFrcG9pbnRzVnVldGlmeSA9IHtcbiAgeHM6IDYwMCxcbiAgc206IDk2MCxcbiAgbWQ6IDEyNjQsXG4gIGxnOiAxOTA0XG59O1xuY29uc3QgYnJlYWtwb2ludHNBbnREZXNpZ24gPSB7XG4gIHhzOiA0ODAsXG4gIHNtOiA1NzYsXG4gIG1kOiA3NjgsXG4gIGxnOiA5OTIsXG4gIHhsOiAxMjAwLFxuICB4eGw6IDE2MDBcbn07XG5jb25zdCBicmVha3BvaW50c1F1YXNhciA9IHtcbiAgeHM6IDYwMCxcbiAgc206IDEwMjQsXG4gIG1kOiAxNDQwLFxuICBsZzogMTkyMFxufTtcbmNvbnN0IGJyZWFrcG9pbnRzU2VtYXRpYyA9IHtcbiAgbW9iaWxlUzogMzIwLFxuICBtb2JpbGVNOiAzNzUsXG4gIG1vYmlsZUw6IDQyNSxcbiAgdGFibGV0OiA3NjgsXG4gIGxhcHRvcDogMTAyNCxcbiAgbGFwdG9wTDogMTQ0MCxcbiAgZGVza3RvcDRLOiAyNTYwXG59O1xuXG52YXIgX19kZWZQcm9wJGkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyRrID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkayA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJGsgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCRpID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCRpKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyRpID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3Akay5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJGkoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJGspXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJGsoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kay5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkaShhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbmZ1bmN0aW9uIHVzZUJyZWFrcG9pbnRzKGJyZWFrcG9pbnRzLCBvcHRpb25zID0ge30pIHtcbiAgZnVuY3Rpb24gZ2V0VmFsdWUoaywgZGVsdGEpIHtcbiAgICBsZXQgdiA9IGJyZWFrcG9pbnRzW2tdO1xuICAgIGlmIChkZWx0YSAhPSBudWxsKVxuICAgICAgdiA9IHNoYXJlZC5pbmNyZWFzZVdpdGhVbml0KHYsIGRlbHRhKTtcbiAgICBpZiAodHlwZW9mIHYgPT09IFwibnVtYmVyXCIpXG4gICAgICB2ID0gYCR7dn1weGA7XG4gICAgcmV0dXJuIHY7XG4gIH1cbiAgY29uc3QgeyB3aW5kb3cgPSBkZWZhdWx0V2luZG93IH0gPSBvcHRpb25zO1xuICBmdW5jdGlvbiBtYXRjaChxdWVyeSkge1xuICAgIGlmICghd2luZG93KVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB3aW5kb3cubWF0Y2hNZWRpYShxdWVyeSkubWF0Y2hlcztcbiAgfVxuICBjb25zdCBncmVhdGVyID0gKGspID0+IHtcbiAgICByZXR1cm4gdXNlTWVkaWFRdWVyeShgKG1pbi13aWR0aDogJHtnZXRWYWx1ZShrKX0pYCwgb3B0aW9ucyk7XG4gIH07XG4gIGNvbnN0IHNob3J0Y3V0TWV0aG9kcyA9IE9iamVjdC5rZXlzKGJyZWFrcG9pbnRzKS5yZWR1Y2UoKHNob3J0Y3V0cywgaykgPT4ge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzaG9ydGN1dHMsIGssIHtcbiAgICAgIGdldDogKCkgPT4gZ3JlYXRlcihrKSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gc2hvcnRjdXRzO1xuICB9LCB7fSk7XG4gIHJldHVybiBfX3NwcmVhZFZhbHVlcyRpKHtcbiAgICBncmVhdGVyLFxuICAgIHNtYWxsZXIoaykge1xuICAgICAgcmV0dXJuIHVzZU1lZGlhUXVlcnkoYChtYXgtd2lkdGg6ICR7Z2V0VmFsdWUoaywgLTAuMSl9KWAsIG9wdGlvbnMpO1xuICAgIH0sXG4gICAgYmV0d2VlbihhLCBiKSB7XG4gICAgICByZXR1cm4gdXNlTWVkaWFRdWVyeShgKG1pbi13aWR0aDogJHtnZXRWYWx1ZShhKX0pIGFuZCAobWF4LXdpZHRoOiAke2dldFZhbHVlKGIsIC0wLjEpfSlgLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGlzR3JlYXRlcihrKSB7XG4gICAgICByZXR1cm4gbWF0Y2goYChtaW4td2lkdGg6ICR7Z2V0VmFsdWUoayl9KWApO1xuICAgIH0sXG4gICAgaXNTbWFsbGVyKGspIHtcbiAgICAgIHJldHVybiBtYXRjaChgKG1heC13aWR0aDogJHtnZXRWYWx1ZShrLCAtMC4xKX0pYCk7XG4gICAgfSxcbiAgICBpc0luQmV0d2VlbihhLCBiKSB7XG4gICAgICByZXR1cm4gbWF0Y2goYChtaW4td2lkdGg6ICR7Z2V0VmFsdWUoYSl9KSBhbmQgKG1heC13aWR0aDogJHtnZXRWYWx1ZShiLCAtMC4xKX0pYCk7XG4gICAgfVxuICB9LCBzaG9ydGN1dE1ldGhvZHMpO1xufVxuXG5jb25zdCB1c2VCcm9hZGNhc3RDaGFubmVsID0gKG9wdGlvbnMpID0+IHtcbiAgY29uc3Qge1xuICAgIG5hbWUsXG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvd1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSB3aW5kb3cgJiYgXCJCcm9hZGNhc3RDaGFubmVsXCIgaW4gd2luZG93O1xuICBjb25zdCBpc0Nsb3NlZCA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgY2hhbm5lbCA9IHZ1ZURlbWkucmVmKCk7XG4gIGNvbnN0IGRhdGEgPSB2dWVEZW1pLnJlZigpO1xuICBjb25zdCBlcnJvciA9IHZ1ZURlbWkucmVmKG51bGwpO1xuICBjb25zdCBwb3N0ID0gKGRhdGEyKSA9PiB7XG4gICAgaWYgKGNoYW5uZWwudmFsdWUpXG4gICAgICBjaGFubmVsLnZhbHVlLnBvc3RNZXNzYWdlKGRhdGEyKTtcbiAgfTtcbiAgY29uc3QgY2xvc2UgPSAoKSA9PiB7XG4gICAgaWYgKGNoYW5uZWwudmFsdWUpXG4gICAgICBjaGFubmVsLnZhbHVlLmNsb3NlKCk7XG4gICAgaXNDbG9zZWQudmFsdWUgPSB0cnVlO1xuICB9O1xuICBpZiAoaXNTdXBwb3J0ZWQpIHtcbiAgICBzaGFyZWQudHJ5T25Nb3VudGVkKCgpID0+IHtcbiAgICAgIGVycm9yLnZhbHVlID0gbnVsbDtcbiAgICAgIGNoYW5uZWwudmFsdWUgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbChuYW1lKTtcbiAgICAgIGNoYW5uZWwudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgKGUpID0+IHtcbiAgICAgICAgZGF0YS52YWx1ZSA9IGUuZGF0YTtcbiAgICAgIH0sIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIGNoYW5uZWwudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VlcnJvclwiLCAoZSkgPT4ge1xuICAgICAgICBlcnJvci52YWx1ZSA9IGU7XG4gICAgICB9LCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgICBjaGFubmVsLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoXCJjbG9zZVwiLCAoKSA9PiB7XG4gICAgICAgIGlzQ2xvc2VkLnZhbHVlID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZSgoKSA9PiB7XG4gICAgY2xvc2UoKTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgY2hhbm5lbCxcbiAgICBkYXRhLFxuICAgIHBvc3QsXG4gICAgY2xvc2UsXG4gICAgZXJyb3IsXG4gICAgaXNDbG9zZWRcbiAgfTtcbn07XG5cbmZ1bmN0aW9uIHVzZUJyb3dzZXJMb2NhdGlvbih7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3cgfSA9IHt9KSB7XG4gIGNvbnN0IGJ1aWxkU3RhdGUgPSAodHJpZ2dlcikgPT4ge1xuICAgIGNvbnN0IHsgc3RhdGU6IHN0YXRlMiwgbGVuZ3RoIH0gPSAod2luZG93ID09IG51bGwgPyB2b2lkIDAgOiB3aW5kb3cuaGlzdG9yeSkgfHwge307XG4gICAgY29uc3QgeyBoYXNoLCBob3N0LCBob3N0bmFtZSwgaHJlZiwgb3JpZ2luLCBwYXRobmFtZSwgcG9ydCwgcHJvdG9jb2wsIHNlYXJjaCB9ID0gKHdpbmRvdyA9PSBudWxsID8gdm9pZCAwIDogd2luZG93LmxvY2F0aW9uKSB8fCB7fTtcbiAgICByZXR1cm4ge1xuICAgICAgdHJpZ2dlcixcbiAgICAgIHN0YXRlOiBzdGF0ZTIsXG4gICAgICBsZW5ndGgsXG4gICAgICBoYXNoLFxuICAgICAgaG9zdCxcbiAgICAgIGhvc3RuYW1lLFxuICAgICAgaHJlZixcbiAgICAgIG9yaWdpbixcbiAgICAgIHBhdGhuYW1lLFxuICAgICAgcG9ydCxcbiAgICAgIHByb3RvY29sLFxuICAgICAgc2VhcmNoXG4gICAgfTtcbiAgfTtcbiAgY29uc3Qgc3RhdGUgPSB2dWVEZW1pLnJlZihidWlsZFN0YXRlKFwibG9hZFwiKSk7XG4gIGlmICh3aW5kb3cpIHtcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJwb3BzdGF0ZVwiLCAoKSA9PiBzdGF0ZS52YWx1ZSA9IGJ1aWxkU3RhdGUoXCJwb3BzdGF0ZVwiKSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcImhhc2hjaGFuZ2VcIiwgKCkgPT4gc3RhdGUudmFsdWUgPSBidWlsZFN0YXRlKFwiaGFzaGNoYW5nZVwiKSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICB9XG4gIHJldHVybiBzdGF0ZTtcbn1cblxuZnVuY3Rpb24gdXNlQ2FjaGVkKHJlZlZhbHVlLCBjb21wYXJhdG9yID0gKGEsIGIpID0+IGEgPT09IGIsIHdhdGNoT3B0aW9ucykge1xuICBjb25zdCBjYWNoZWRWYWx1ZSA9IHZ1ZURlbWkucmVmKHJlZlZhbHVlLnZhbHVlKTtcbiAgdnVlRGVtaS53YXRjaCgoKSA9PiByZWZWYWx1ZS52YWx1ZSwgKHZhbHVlKSA9PiB7XG4gICAgaWYgKCFjb21wYXJhdG9yKHZhbHVlLCBjYWNoZWRWYWx1ZS52YWx1ZSkpXG4gICAgICBjYWNoZWRWYWx1ZS52YWx1ZSA9IHZhbHVlO1xuICB9LCB3YXRjaE9wdGlvbnMpO1xuICByZXR1cm4gY2FjaGVkVmFsdWU7XG59XG5cbmZ1bmN0aW9uIHVzZUNsYW1wKHZhbHVlLCBtaW4sIG1heCkge1xuICBjb25zdCBfdmFsdWUgPSB2dWVEZW1pLnJlZih2YWx1ZSk7XG4gIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKHtcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gX3ZhbHVlLnZhbHVlID0gc2hhcmVkLmNsYW1wKF92YWx1ZS52YWx1ZSwgdnVlRGVtaS51bnJlZihtaW4pLCB2dWVEZW1pLnVucmVmKG1heCkpO1xuICAgIH0sXG4gICAgc2V0KHZhbHVlMikge1xuICAgICAgX3ZhbHVlLnZhbHVlID0gc2hhcmVkLmNsYW1wKHZhbHVlMiwgdnVlRGVtaS51bnJlZihtaW4pLCB2dWVEZW1pLnVucmVmKG1heCkpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVzZUNsaXBib2FyZChvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIG5hdmlnYXRvciA9IGRlZmF1bHROYXZpZ2F0b3IsXG4gICAgcmVhZCA9IGZhbHNlLFxuICAgIHNvdXJjZSxcbiAgICBjb3BpZWREdXJpbmcgPSAxNTAwXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBldmVudHMgPSBbXCJjb3B5XCIsIFwiY3V0XCJdO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IEJvb2xlYW4obmF2aWdhdG9yICYmIFwiY2xpcGJvYXJkXCIgaW4gbmF2aWdhdG9yKTtcbiAgY29uc3QgdGV4dCA9IHZ1ZURlbWkucmVmKFwiXCIpO1xuICBjb25zdCBjb3BpZWQgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IHRpbWVvdXQgPSBzaGFyZWQudXNlVGltZW91dEZuKCgpID0+IGNvcGllZC52YWx1ZSA9IGZhbHNlLCBjb3BpZWREdXJpbmcpO1xuICBmdW5jdGlvbiB1cGRhdGVUZXh0KCkge1xuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQucmVhZFRleHQoKS50aGVuKCh2YWx1ZSkgPT4ge1xuICAgICAgdGV4dC52YWx1ZSA9IHZhbHVlO1xuICAgIH0pO1xuICB9XG4gIGlmIChpc1N1cHBvcnRlZCAmJiByZWFkKSB7XG4gICAgZm9yIChjb25zdCBldmVudCBvZiBldmVudHMpXG4gICAgICB1c2VFdmVudExpc3RlbmVyKGV2ZW50LCB1cGRhdGVUZXh0KTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBjb3B5KHZhbHVlID0gdnVlRGVtaS51bnJlZihzb3VyY2UpKSB7XG4gICAgaWYgKGlzU3VwcG9ydGVkICYmIHZhbHVlICE9IG51bGwpIHtcbiAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHZhbHVlKTtcbiAgICAgIHRleHQudmFsdWUgPSB2YWx1ZTtcbiAgICAgIGNvcGllZC52YWx1ZSA9IHRydWU7XG4gICAgICB0aW1lb3V0LnN0YXJ0KCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgdGV4dCxcbiAgICBjb3BpZWQsXG4gICAgY29weVxuICB9O1xufVxuXG5jb25zdCBfZ2xvYmFsID0gdHlwZW9mIGdsb2JhbFRoaXMgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWxUaGlzIDogdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYgOiB7fTtcbmNvbnN0IGdsb2JhbEtleSA9IFwiX192dWV1c2Vfc3NyX2hhbmRsZXJzX19cIjtcbl9nbG9iYWxbZ2xvYmFsS2V5XSA9IF9nbG9iYWxbZ2xvYmFsS2V5XSB8fCB7fTtcbmNvbnN0IGhhbmRsZXJzID0gX2dsb2JhbFtnbG9iYWxLZXldO1xuZnVuY3Rpb24gZ2V0U1NSSGFuZGxlcihrZXksIGZhbGxiYWNrKSB7XG4gIHJldHVybiBoYW5kbGVyc1trZXldIHx8IGZhbGxiYWNrO1xufVxuZnVuY3Rpb24gc2V0U1NSSGFuZGxlcihrZXksIGZuKSB7XG4gIGhhbmRsZXJzW2tleV0gPSBmbjtcbn1cblxuZnVuY3Rpb24gZ3Vlc3NTZXJpYWxpemVyVHlwZShyYXdJbml0KSB7XG4gIHJldHVybiByYXdJbml0ID09IG51bGwgPyBcImFueVwiIDogcmF3SW5pdCBpbnN0YW5jZW9mIFNldCA/IFwic2V0XCIgOiByYXdJbml0IGluc3RhbmNlb2YgTWFwID8gXCJtYXBcIiA6IHJhd0luaXQgaW5zdGFuY2VvZiBEYXRlID8gXCJkYXRlXCIgOiB0eXBlb2YgcmF3SW5pdCA9PT0gXCJib29sZWFuXCIgPyBcImJvb2xlYW5cIiA6IHR5cGVvZiByYXdJbml0ID09PSBcInN0cmluZ1wiID8gXCJzdHJpbmdcIiA6IHR5cGVvZiByYXdJbml0ID09PSBcIm9iamVjdFwiID8gXCJvYmplY3RcIiA6IEFycmF5LmlzQXJyYXkocmF3SW5pdCkgPyBcIm9iamVjdFwiIDogIU51bWJlci5pc05hTihyYXdJbml0KSA/IFwibnVtYmVyXCIgOiBcImFueVwiO1xufVxuXG5jb25zdCBTdG9yYWdlU2VyaWFsaXplcnMgPSB7XG4gIGJvb2xlYW46IHtcbiAgICByZWFkOiAodikgPT4gdiA9PT0gXCJ0cnVlXCIsXG4gICAgd3JpdGU6ICh2KSA9PiBTdHJpbmcodilcbiAgfSxcbiAgb2JqZWN0OiB7XG4gICAgcmVhZDogKHYpID0+IEpTT04ucGFyc2UodiksXG4gICAgd3JpdGU6ICh2KSA9PiBKU09OLnN0cmluZ2lmeSh2KVxuICB9LFxuICBudW1iZXI6IHtcbiAgICByZWFkOiAodikgPT4gTnVtYmVyLnBhcnNlRmxvYXQodiksXG4gICAgd3JpdGU6ICh2KSA9PiBTdHJpbmcodilcbiAgfSxcbiAgYW55OiB7XG4gICAgcmVhZDogKHYpID0+IHYsXG4gICAgd3JpdGU6ICh2KSA9PiBTdHJpbmcodilcbiAgfSxcbiAgc3RyaW5nOiB7XG4gICAgcmVhZDogKHYpID0+IHYsXG4gICAgd3JpdGU6ICh2KSA9PiBTdHJpbmcodilcbiAgfSxcbiAgbWFwOiB7XG4gICAgcmVhZDogKHYpID0+IG5ldyBNYXAoSlNPTi5wYXJzZSh2KSksXG4gICAgd3JpdGU6ICh2KSA9PiBKU09OLnN0cmluZ2lmeShBcnJheS5mcm9tKHYuZW50cmllcygpKSlcbiAgfSxcbiAgc2V0OiB7XG4gICAgcmVhZDogKHYpID0+IG5ldyBTZXQoSlNPTi5wYXJzZSh2KSksXG4gICAgd3JpdGU6ICh2KSA9PiBKU09OLnN0cmluZ2lmeShBcnJheS5mcm9tKHYpKVxuICB9LFxuICBkYXRlOiB7XG4gICAgcmVhZDogKHYpID0+IG5ldyBEYXRlKHYpLFxuICAgIHdyaXRlOiAodikgPT4gdi50b0lTT1N0cmluZygpXG4gIH1cbn07XG5mdW5jdGlvbiB1c2VTdG9yYWdlKGtleSwgaW5pdGlhbFZhbHVlLCBzdG9yYWdlLCBvcHRpb25zID0ge30pIHtcbiAgdmFyIF9hO1xuICBjb25zdCB7XG4gICAgZmx1c2ggPSBcInByZVwiLFxuICAgIGRlZXAgPSB0cnVlLFxuICAgIGxpc3RlblRvU3RvcmFnZUNoYW5nZXMgPSB0cnVlLFxuICAgIHdyaXRlRGVmYXVsdHMgPSB0cnVlLFxuICAgIHNoYWxsb3csXG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvdyxcbiAgICBldmVudEZpbHRlcixcbiAgICBvbkVycm9yID0gKGUpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgZGF0YSA9IChzaGFsbG93ID8gdnVlRGVtaS5zaGFsbG93UmVmIDogdnVlRGVtaS5yZWYpKGluaXRpYWxWYWx1ZSk7XG4gIGlmICghc3RvcmFnZSkge1xuICAgIHRyeSB7XG4gICAgICBzdG9yYWdlID0gZ2V0U1NSSGFuZGxlcihcImdldERlZmF1bHRTdG9yYWdlXCIsICgpID0+IHtcbiAgICAgICAgdmFyIF9hMjtcbiAgICAgICAgcmV0dXJuIChfYTIgPSBkZWZhdWx0V2luZG93KSA9PSBudWxsID8gdm9pZCAwIDogX2EyLmxvY2FsU3RvcmFnZTtcbiAgICAgIH0pKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgb25FcnJvcihlKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFzdG9yYWdlKVxuICAgIHJldHVybiBkYXRhO1xuICBjb25zdCByYXdJbml0ID0gdnVlRGVtaS51bnJlZihpbml0aWFsVmFsdWUpO1xuICBjb25zdCB0eXBlID0gZ3Vlc3NTZXJpYWxpemVyVHlwZShyYXdJbml0KTtcbiAgY29uc3Qgc2VyaWFsaXplciA9IChfYSA9IG9wdGlvbnMuc2VyaWFsaXplcikgIT0gbnVsbCA/IF9hIDogU3RvcmFnZVNlcmlhbGl6ZXJzW3R5cGVdO1xuICBjb25zdCB7IHBhdXNlOiBwYXVzZVdhdGNoLCByZXN1bWU6IHJlc3VtZVdhdGNoIH0gPSBzaGFyZWQucGF1c2FibGVXYXRjaChkYXRhLCAoKSA9PiB3cml0ZShkYXRhLnZhbHVlKSwgeyBmbHVzaCwgZGVlcCwgZXZlbnRGaWx0ZXIgfSk7XG4gIGlmICh3aW5kb3cgJiYgbGlzdGVuVG9TdG9yYWdlQ2hhbmdlcylcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJzdG9yYWdlXCIsIHVwZGF0ZSk7XG4gIHVwZGF0ZSgpO1xuICByZXR1cm4gZGF0YTtcbiAgZnVuY3Rpb24gd3JpdGUodikge1xuICAgIHRyeSB7XG4gICAgICBpZiAodiA9PSBudWxsKVxuICAgICAgICBzdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgIGVsc2VcbiAgICAgICAgc3RvcmFnZS5zZXRJdGVtKGtleSwgc2VyaWFsaXplci53cml0ZSh2KSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgb25FcnJvcihlKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gcmVhZChldmVudCkge1xuICAgIGlmIChldmVudCAmJiBldmVudC5rZXkgIT09IGtleSlcbiAgICAgIHJldHVybjtcbiAgICBwYXVzZVdhdGNoKCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJhd1ZhbHVlID0gZXZlbnQgPyBldmVudC5uZXdWYWx1ZSA6IHN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgICAgaWYgKHJhd1ZhbHVlID09IG51bGwpIHtcbiAgICAgICAgaWYgKHdyaXRlRGVmYXVsdHMgJiYgcmF3SW5pdCAhPT0gbnVsbClcbiAgICAgICAgICBzdG9yYWdlLnNldEl0ZW0oa2V5LCBzZXJpYWxpemVyLndyaXRlKHJhd0luaXQpKTtcbiAgICAgICAgcmV0dXJuIHJhd0luaXQ7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiByYXdWYWx1ZSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXR1cm4gcmF3VmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gc2VyaWFsaXplci5yZWFkKHJhd1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBvbkVycm9yKGUpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICByZXN1bWVXYXRjaCgpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiB1cGRhdGUoZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQua2V5ICE9PSBrZXkpXG4gICAgICByZXR1cm47XG4gICAgZGF0YS52YWx1ZSA9IHJlYWQoZXZlbnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVzZVByZWZlcnJlZERhcmsob3B0aW9ucykge1xuICByZXR1cm4gdXNlTWVkaWFRdWVyeShcIihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaylcIiwgb3B0aW9ucyk7XG59XG5cbnZhciBfX2RlZlByb3AkaCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BTeW1ib2xzJGogPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCRqID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kaiA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJGggPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJGgob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJGggPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCRqLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkaChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkailcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkaihiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSRqLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCRoKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xuZnVuY3Rpb24gdXNlQ29sb3JNb2RlKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgc2VsZWN0b3IgPSBcImh0bWxcIixcbiAgICBhdHRyaWJ1dGUgPSBcImNsYXNzXCIsXG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvdyxcbiAgICBzdG9yYWdlLFxuICAgIHN0b3JhZ2VLZXkgPSBcInZ1ZXVzZS1jb2xvci1zY2hlbWVcIixcbiAgICBsaXN0ZW5Ub1N0b3JhZ2VDaGFuZ2VzID0gdHJ1ZSxcbiAgICBzdG9yYWdlUmVmLFxuICAgIGVtaXRBdXRvXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBtb2RlcyA9IF9fc3ByZWFkVmFsdWVzJGgoe1xuICAgIGF1dG86IFwiXCIsXG4gICAgbGlnaHQ6IFwibGlnaHRcIixcbiAgICBkYXJrOiBcImRhcmtcIlxuICB9LCBvcHRpb25zLm1vZGVzIHx8IHt9KTtcbiAgY29uc3QgcHJlZmVycmVkRGFyayA9IHVzZVByZWZlcnJlZERhcmsoeyB3aW5kb3cgfSk7XG4gIGNvbnN0IHByZWZlcnJlZE1vZGUgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHByZWZlcnJlZERhcmsudmFsdWUgPyBcImRhcmtcIiA6IFwibGlnaHRcIik7XG4gIGNvbnN0IHN0b3JlID0gc3RvcmFnZVJlZiB8fCAoc3RvcmFnZUtleSA9PSBudWxsID8gdnVlRGVtaS5yZWYoXCJhdXRvXCIpIDogdXNlU3RvcmFnZShzdG9yYWdlS2V5LCBcImF1dG9cIiwgc3RvcmFnZSwgeyB3aW5kb3csIGxpc3RlblRvU3RvcmFnZUNoYW5nZXMgfSkpO1xuICBjb25zdCBzdGF0ZSA9IHZ1ZURlbWkuY29tcHV0ZWQoe1xuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiBzdG9yZS52YWx1ZSA9PT0gXCJhdXRvXCIgJiYgIWVtaXRBdXRvID8gcHJlZmVycmVkTW9kZS52YWx1ZSA6IHN0b3JlLnZhbHVlO1xuICAgIH0sXG4gICAgc2V0KHYpIHtcbiAgICAgIHN0b3JlLnZhbHVlID0gdjtcbiAgICB9XG4gIH0pO1xuICBjb25zdCB1cGRhdGVIVE1MQXR0cnMgPSBnZXRTU1JIYW5kbGVyKFwidXBkYXRlSFRNTEF0dHJzXCIsIChzZWxlY3RvcjIsIGF0dHJpYnV0ZTIsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgZWwgPSB3aW5kb3cgPT0gbnVsbCA/IHZvaWQgMCA6IHdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yMik7XG4gICAgaWYgKCFlbClcbiAgICAgIHJldHVybjtcbiAgICBpZiAoYXR0cmlidXRlMiA9PT0gXCJjbGFzc1wiKSB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gdmFsdWUuc3BsaXQoL1xccy9nKTtcbiAgICAgIE9iamVjdC52YWx1ZXMobW9kZXMpLmZsYXRNYXAoKGkpID0+IChpIHx8IFwiXCIpLnNwbGl0KC9cXHMvZykpLmZpbHRlcihCb29sZWFuKS5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgIGlmIChjdXJyZW50LmluY2x1ZGVzKHYpKVxuICAgICAgICAgIGVsLmNsYXNzTGlzdC5hZGQodik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKHYpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUyLCB2YWx1ZSk7XG4gICAgfVxuICB9KTtcbiAgZnVuY3Rpb24gZGVmYXVsdE9uQ2hhbmdlZChtb2RlKSB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IHJlc29sdmVkTW9kZSA9IG1vZGUgPT09IFwiYXV0b1wiID8gcHJlZmVycmVkTW9kZS52YWx1ZSA6IG1vZGU7XG4gICAgdXBkYXRlSFRNTEF0dHJzKHNlbGVjdG9yLCBhdHRyaWJ1dGUsIChfYSA9IG1vZGVzW3Jlc29sdmVkTW9kZV0pICE9IG51bGwgPyBfYSA6IHJlc29sdmVkTW9kZSk7XG4gIH1cbiAgZnVuY3Rpb24gb25DaGFuZ2VkKG1vZGUpIHtcbiAgICBpZiAob3B0aW9ucy5vbkNoYW5nZWQpXG4gICAgICBvcHRpb25zLm9uQ2hhbmdlZChtb2RlLCBkZWZhdWx0T25DaGFuZ2VkKTtcbiAgICBlbHNlXG4gICAgICBkZWZhdWx0T25DaGFuZ2VkKG1vZGUpO1xuICB9XG4gIHZ1ZURlbWkud2F0Y2goc3RhdGUsIG9uQ2hhbmdlZCwgeyBmbHVzaDogXCJwb3N0XCIsIGltbWVkaWF0ZTogdHJ1ZSB9KTtcbiAgc2hhcmVkLnRyeU9uTW91bnRlZCgoKSA9PiBvbkNoYW5nZWQoc3RhdGUudmFsdWUpKTtcbiAgcmV0dXJuIHN0YXRlO1xufVxuXG5mdW5jdGlvbiB1c2VDb25maXJtRGlhbG9nKHJldmVhbGVkID0gdnVlRGVtaS5yZWYoZmFsc2UpKSB7XG4gIGNvbnN0IGNvbmZpcm1Ib29rID0gc2hhcmVkLmNyZWF0ZUV2ZW50SG9vaygpO1xuICBjb25zdCBjYW5jZWxIb29rID0gc2hhcmVkLmNyZWF0ZUV2ZW50SG9vaygpO1xuICBjb25zdCByZXZlYWxIb29rID0gc2hhcmVkLmNyZWF0ZUV2ZW50SG9vaygpO1xuICBsZXQgX3Jlc29sdmUgPSBzaGFyZWQubm9vcDtcbiAgY29uc3QgcmV2ZWFsID0gKGRhdGEpID0+IHtcbiAgICByZXZlYWxIb29rLnRyaWdnZXIoZGF0YSk7XG4gICAgcmV2ZWFsZWQudmFsdWUgPSB0cnVlO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgX3Jlc29sdmUgPSByZXNvbHZlO1xuICAgIH0pO1xuICB9O1xuICBjb25zdCBjb25maXJtID0gKGRhdGEpID0+IHtcbiAgICByZXZlYWxlZC52YWx1ZSA9IGZhbHNlO1xuICAgIGNvbmZpcm1Ib29rLnRyaWdnZXIoZGF0YSk7XG4gICAgX3Jlc29sdmUoeyBkYXRhLCBpc0NhbmNlbGVkOiBmYWxzZSB9KTtcbiAgfTtcbiAgY29uc3QgY2FuY2VsID0gKGRhdGEpID0+IHtcbiAgICByZXZlYWxlZC52YWx1ZSA9IGZhbHNlO1xuICAgIGNhbmNlbEhvb2sudHJpZ2dlcihkYXRhKTtcbiAgICBfcmVzb2x2ZSh7IGRhdGEsIGlzQ2FuY2VsZWQ6IHRydWUgfSk7XG4gIH07XG4gIHJldHVybiB7XG4gICAgaXNSZXZlYWxlZDogdnVlRGVtaS5jb21wdXRlZCgoKSA9PiByZXZlYWxlZC52YWx1ZSksXG4gICAgcmV2ZWFsLFxuICAgIGNvbmZpcm0sXG4gICAgY2FuY2VsLFxuICAgIG9uUmV2ZWFsOiByZXZlYWxIb29rLm9uLFxuICAgIG9uQ29uZmlybTogY29uZmlybUhvb2sub24sXG4gICAgb25DYW5jZWw6IGNhbmNlbEhvb2sub25cbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlQ3NzVmFyKHByb3AsIHRhcmdldCwgeyB3aW5kb3cgPSBkZWZhdWx0V2luZG93LCBpbml0aWFsVmFsdWUgPSBcIlwiIH0gPSB7fSkge1xuICBjb25zdCB2YXJpYWJsZSA9IHZ1ZURlbWkucmVmKGluaXRpYWxWYWx1ZSk7XG4gIGNvbnN0IGVsUmVmID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIHJldHVybiB1bnJlZkVsZW1lbnQodGFyZ2V0KSB8fCAoKF9hID0gd2luZG93ID09IG51bGwgPyB2b2lkIDAgOiB3aW5kb3cuZG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfYS5kb2N1bWVudEVsZW1lbnQpO1xuICB9KTtcbiAgdnVlRGVtaS53YXRjaChbZWxSZWYsICgpID0+IHZ1ZURlbWkudW5yZWYocHJvcCldLCAoW2VsLCBwcm9wMl0pID0+IHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKGVsICYmIHdpbmRvdykge1xuICAgICAgY29uc3QgdmFsdWUgPSAoX2EgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCkuZ2V0UHJvcGVydHlWYWx1ZShwcm9wMikpID09IG51bGwgPyB2b2lkIDAgOiBfYS50cmltKCk7XG4gICAgICB2YXJpYWJsZS52YWx1ZSA9IHZhbHVlIHx8IGluaXRpYWxWYWx1ZTtcbiAgICB9XG4gIH0sIHsgaW1tZWRpYXRlOiB0cnVlIH0pO1xuICB2dWVEZW1pLndhdGNoKHZhcmlhYmxlLCAodmFsKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIGlmICgoX2EgPSBlbFJlZi52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnN0eWxlKVxuICAgICAgZWxSZWYudmFsdWUuc3R5bGUuc2V0UHJvcGVydHkodnVlRGVtaS51bnJlZihwcm9wKSwgdmFsKTtcbiAgfSk7XG4gIHJldHVybiB2YXJpYWJsZTtcbn1cblxuZnVuY3Rpb24gdXNlQ3VycmVudEVsZW1lbnQoKSB7XG4gIGNvbnN0IHZtID0gdnVlRGVtaS5nZXRDdXJyZW50SW5zdGFuY2UoKTtcbiAgY29uc3QgY291bnQgPSB2dWVEZW1pLnJlZigwKTtcbiAgdnVlRGVtaS5vblVwZGF0ZWQoKCkgPT4ge1xuICAgIGNvdW50LnZhbHVlICs9IDE7XG4gIH0pO1xuICB2dWVEZW1pLm9uTW91bnRlZCgoKSA9PiB7XG4gICAgY291bnQudmFsdWUgKz0gMTtcbiAgfSk7XG4gIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICBjb3VudC52YWx1ZTtcbiAgICByZXR1cm4gdm0ucHJveHkuJGVsO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdXNlQ3ljbGVMaXN0KGxpc3QsIG9wdGlvbnMpIHtcbiAgdmFyIF9hO1xuICBjb25zdCBzdGF0ZSA9IHZ1ZURlbWkuc2hhbGxvd1JlZigoX2EgPSBvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLmluaXRpYWxWYWx1ZSkgIT0gbnVsbCA/IF9hIDogbGlzdFswXSk7XG4gIGNvbnN0IGluZGV4ID0gdnVlRGVtaS5jb21wdXRlZCh7XG4gICAgZ2V0KCkge1xuICAgICAgdmFyIF9hMjtcbiAgICAgIGxldCBpbmRleDIgPSAob3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5nZXRJbmRleE9mKSA/IG9wdGlvbnMuZ2V0SW5kZXhPZihzdGF0ZS52YWx1ZSwgbGlzdCkgOiBsaXN0LmluZGV4T2Yoc3RhdGUudmFsdWUpO1xuICAgICAgaWYgKGluZGV4MiA8IDApXG4gICAgICAgIGluZGV4MiA9IChfYTIgPSBvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLmZhbGxiYWNrSW5kZXgpICE9IG51bGwgPyBfYTIgOiAwO1xuICAgICAgcmV0dXJuIGluZGV4MjtcbiAgICB9LFxuICAgIHNldCh2KSB7XG4gICAgICBzZXQodik7XG4gICAgfVxuICB9KTtcbiAgZnVuY3Rpb24gc2V0KGkpIHtcbiAgICBjb25zdCBsZW5ndGggPSBsaXN0Lmxlbmd0aDtcbiAgICBjb25zdCBpbmRleDIgPSAoaSAlIGxlbmd0aCArIGxlbmd0aCkgJSBsZW5ndGg7XG4gICAgY29uc3QgdmFsdWUgPSBsaXN0W2luZGV4Ml07XG4gICAgc3RhdGUudmFsdWUgPSB2YWx1ZTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgZnVuY3Rpb24gc2hpZnQoZGVsdGEgPSAxKSB7XG4gICAgcmV0dXJuIHNldChpbmRleC52YWx1ZSArIGRlbHRhKTtcbiAgfVxuICBmdW5jdGlvbiBuZXh0KG4gPSAxKSB7XG4gICAgcmV0dXJuIHNoaWZ0KG4pO1xuICB9XG4gIGZ1bmN0aW9uIHByZXYobiA9IDEpIHtcbiAgICByZXR1cm4gc2hpZnQoLW4pO1xuICB9XG4gIHJldHVybiB7XG4gICAgc3RhdGUsXG4gICAgaW5kZXgsXG4gICAgbmV4dCxcbiAgICBwcmV2XG4gIH07XG59XG5cbnZhciBfX2RlZlByb3AkZyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2RlZlByb3BzJDcgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcztcbnZhciBfX2dldE93blByb3BEZXNjcyQ3ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyRpID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkaSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJGkgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCRnID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCRnKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyRnID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkaS5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJGcoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJGkpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJGkoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kaS5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkZyhhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbnZhciBfX3NwcmVhZFByb3BzJDcgPSAoYSwgYikgPT4gX19kZWZQcm9wcyQ3KGEsIF9fZ2V0T3duUHJvcERlc2NzJDcoYikpO1xuZnVuY3Rpb24gdXNlRGFyayhvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHZhbHVlRGFyayA9IFwiZGFya1wiLFxuICAgIHZhbHVlTGlnaHQgPSBcIlwiLFxuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3dcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IG1vZGUgPSB1c2VDb2xvck1vZGUoX19zcHJlYWRQcm9wcyQ3KF9fc3ByZWFkVmFsdWVzJGcoe30sIG9wdGlvbnMpLCB7XG4gICAgb25DaGFuZ2VkOiAobW9kZTIsIGRlZmF1bHRIYW5kbGVyKSA9PiB7XG4gICAgICB2YXIgX2E7XG4gICAgICBpZiAob3B0aW9ucy5vbkNoYW5nZWQpXG4gICAgICAgIChfYSA9IG9wdGlvbnMub25DaGFuZ2VkKSA9PSBudWxsID8gdm9pZCAwIDogX2EuY2FsbChvcHRpb25zLCBtb2RlMiA9PT0gXCJkYXJrXCIpO1xuICAgICAgZWxzZVxuICAgICAgICBkZWZhdWx0SGFuZGxlcihtb2RlMik7XG4gICAgfSxcbiAgICBtb2Rlczoge1xuICAgICAgZGFyazogdmFsdWVEYXJrLFxuICAgICAgbGlnaHQ6IHZhbHVlTGlnaHRcbiAgICB9XG4gIH0pKTtcbiAgY29uc3QgcHJlZmVycmVkRGFyayA9IHVzZVByZWZlcnJlZERhcmsoeyB3aW5kb3cgfSk7XG4gIGNvbnN0IGlzRGFyayA9IHZ1ZURlbWkuY29tcHV0ZWQoe1xuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiBtb2RlLnZhbHVlID09PSBcImRhcmtcIjtcbiAgICB9LFxuICAgIHNldCh2KSB7XG4gICAgICBpZiAodiA9PT0gcHJlZmVycmVkRGFyay52YWx1ZSlcbiAgICAgICAgbW9kZS52YWx1ZSA9IFwiYXV0b1wiO1xuICAgICAgZWxzZVxuICAgICAgICBtb2RlLnZhbHVlID0gdiA/IFwiZGFya1wiIDogXCJsaWdodFwiO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBpc0Rhcms7XG59XG5cbmNvbnN0IGZuQ2xvbmUgPSAodikgPT4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh2KSk7XG5jb25zdCBmbkJ5cGFzcyA9ICh2KSA9PiB2O1xuY29uc3QgZm5TZXRTb3VyY2UgPSAoc291cmNlLCB2YWx1ZSkgPT4gc291cmNlLnZhbHVlID0gdmFsdWU7XG5mdW5jdGlvbiBkZWZhdWx0RHVtcChjbG9uZSkge1xuICByZXR1cm4gY2xvbmUgPyBzaGFyZWQuaXNGdW5jdGlvbihjbG9uZSkgPyBjbG9uZSA6IGZuQ2xvbmUgOiBmbkJ5cGFzcztcbn1cbmZ1bmN0aW9uIGRlZmF1bHRQYXJzZShjbG9uZSkge1xuICByZXR1cm4gY2xvbmUgPyBzaGFyZWQuaXNGdW5jdGlvbihjbG9uZSkgPyBjbG9uZSA6IGZuQ2xvbmUgOiBmbkJ5cGFzcztcbn1cbmZ1bmN0aW9uIHVzZU1hbnVhbFJlZkhpc3Rvcnkoc291cmNlLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGNsb25lID0gZmFsc2UsXG4gICAgZHVtcCA9IGRlZmF1bHREdW1wKGNsb25lKSxcbiAgICBwYXJzZSA9IGRlZmF1bHRQYXJzZShjbG9uZSksXG4gICAgc2V0U291cmNlID0gZm5TZXRTb3VyY2VcbiAgfSA9IG9wdGlvbnM7XG4gIGZ1bmN0aW9uIF9jcmVhdGVIaXN0b3J5UmVjb3JkKCkge1xuICAgIHJldHVybiB2dWVEZW1pLm1hcmtSYXcoe1xuICAgICAgc25hcHNob3Q6IGR1bXAoc291cmNlLnZhbHVlKSxcbiAgICAgIHRpbWVzdGFtcDogc2hhcmVkLnRpbWVzdGFtcCgpXG4gICAgfSk7XG4gIH1cbiAgY29uc3QgbGFzdCA9IHZ1ZURlbWkucmVmKF9jcmVhdGVIaXN0b3J5UmVjb3JkKCkpO1xuICBjb25zdCB1bmRvU3RhY2sgPSB2dWVEZW1pLnJlZihbXSk7XG4gIGNvbnN0IHJlZG9TdGFjayA9IHZ1ZURlbWkucmVmKFtdKTtcbiAgY29uc3QgX3NldFNvdXJjZSA9IChyZWNvcmQpID0+IHtcbiAgICBzZXRTb3VyY2Uoc291cmNlLCBwYXJzZShyZWNvcmQuc25hcHNob3QpKTtcbiAgICBsYXN0LnZhbHVlID0gcmVjb3JkO1xuICB9O1xuICBjb25zdCBjb21taXQgPSAoKSA9PiB7XG4gICAgdW5kb1N0YWNrLnZhbHVlLnVuc2hpZnQobGFzdC52YWx1ZSk7XG4gICAgbGFzdC52YWx1ZSA9IF9jcmVhdGVIaXN0b3J5UmVjb3JkKCk7XG4gICAgaWYgKG9wdGlvbnMuY2FwYWNpdHkgJiYgdW5kb1N0YWNrLnZhbHVlLmxlbmd0aCA+IG9wdGlvbnMuY2FwYWNpdHkpXG4gICAgICB1bmRvU3RhY2sudmFsdWUuc3BsaWNlKG9wdGlvbnMuY2FwYWNpdHksIEluZmluaXR5KTtcbiAgICBpZiAocmVkb1N0YWNrLnZhbHVlLmxlbmd0aClcbiAgICAgIHJlZG9TdGFjay52YWx1ZS5zcGxpY2UoMCwgcmVkb1N0YWNrLnZhbHVlLmxlbmd0aCk7XG4gIH07XG4gIGNvbnN0IGNsZWFyID0gKCkgPT4ge1xuICAgIHVuZG9TdGFjay52YWx1ZS5zcGxpY2UoMCwgdW5kb1N0YWNrLnZhbHVlLmxlbmd0aCk7XG4gICAgcmVkb1N0YWNrLnZhbHVlLnNwbGljZSgwLCByZWRvU3RhY2sudmFsdWUubGVuZ3RoKTtcbiAgfTtcbiAgY29uc3QgdW5kbyA9ICgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IHVuZG9TdGFjay52YWx1ZS5zaGlmdCgpO1xuICAgIGlmIChzdGF0ZSkge1xuICAgICAgcmVkb1N0YWNrLnZhbHVlLnVuc2hpZnQobGFzdC52YWx1ZSk7XG4gICAgICBfc2V0U291cmNlKHN0YXRlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHJlZG8gPSAoKSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSByZWRvU3RhY2sudmFsdWUuc2hpZnQoKTtcbiAgICBpZiAoc3RhdGUpIHtcbiAgICAgIHVuZG9TdGFjay52YWx1ZS51bnNoaWZ0KGxhc3QudmFsdWUpO1xuICAgICAgX3NldFNvdXJjZShzdGF0ZSk7XG4gICAgfVxuICB9O1xuICBjb25zdCByZXNldCA9ICgpID0+IHtcbiAgICBfc2V0U291cmNlKGxhc3QudmFsdWUpO1xuICB9O1xuICBjb25zdCBoaXN0b3J5ID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBbbGFzdC52YWx1ZSwgLi4udW5kb1N0YWNrLnZhbHVlXSk7XG4gIGNvbnN0IGNhblVuZG8gPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHVuZG9TdGFjay52YWx1ZS5sZW5ndGggPiAwKTtcbiAgY29uc3QgY2FuUmVkbyA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gcmVkb1N0YWNrLnZhbHVlLmxlbmd0aCA+IDApO1xuICByZXR1cm4ge1xuICAgIHNvdXJjZSxcbiAgICB1bmRvU3RhY2ssXG4gICAgcmVkb1N0YWNrLFxuICAgIGxhc3QsXG4gICAgaGlzdG9yeSxcbiAgICBjYW5VbmRvLFxuICAgIGNhblJlZG8sXG4gICAgY2xlYXIsXG4gICAgY29tbWl0LFxuICAgIHJlc2V0LFxuICAgIHVuZG8sXG4gICAgcmVkb1xuICB9O1xufVxuXG52YXIgX19kZWZQcm9wJGYgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19kZWZQcm9wcyQ2ID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXM7XG52YXIgX19nZXRPd25Qcm9wRGVzY3MkNiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzO1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkaCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJGggPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSRoID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkZiA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkZihvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkZiA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJGguY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCRmKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyRoKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyRoKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJGguY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJGYoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG52YXIgX19zcHJlYWRQcm9wcyQ2ID0gKGEsIGIpID0+IF9fZGVmUHJvcHMkNihhLCBfX2dldE93blByb3BEZXNjcyQ2KGIpKTtcbmZ1bmN0aW9uIHVzZVJlZkhpc3Rvcnkoc291cmNlLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGRlZXAgPSBmYWxzZSxcbiAgICBmbHVzaCA9IFwicHJlXCIsXG4gICAgZXZlbnRGaWx0ZXJcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHtcbiAgICBldmVudEZpbHRlcjogY29tcG9zZWRGaWx0ZXIsXG4gICAgcGF1c2UsXG4gICAgcmVzdW1lOiByZXN1bWVUcmFja2luZyxcbiAgICBpc0FjdGl2ZTogaXNUcmFja2luZ1xuICB9ID0gc2hhcmVkLnBhdXNhYmxlRmlsdGVyKGV2ZW50RmlsdGVyKTtcbiAgY29uc3Qge1xuICAgIGlnbm9yZVVwZGF0ZXMsXG4gICAgaWdub3JlUHJldkFzeW5jVXBkYXRlcyxcbiAgICBzdG9wXG4gIH0gPSBzaGFyZWQud2F0Y2hJZ25vcmFibGUoc291cmNlLCBjb21taXQsIHsgZGVlcCwgZmx1c2gsIGV2ZW50RmlsdGVyOiBjb21wb3NlZEZpbHRlciB9KTtcbiAgZnVuY3Rpb24gc2V0U291cmNlKHNvdXJjZTIsIHZhbHVlKSB7XG4gICAgaWdub3JlUHJldkFzeW5jVXBkYXRlcygpO1xuICAgIGlnbm9yZVVwZGF0ZXMoKCkgPT4ge1xuICAgICAgc291cmNlMi52YWx1ZSA9IHZhbHVlO1xuICAgIH0pO1xuICB9XG4gIGNvbnN0IG1hbnVhbEhpc3RvcnkgPSB1c2VNYW51YWxSZWZIaXN0b3J5KHNvdXJjZSwgX19zcHJlYWRQcm9wcyQ2KF9fc3ByZWFkVmFsdWVzJGYoe30sIG9wdGlvbnMpLCB7IGNsb25lOiBvcHRpb25zLmNsb25lIHx8IGRlZXAsIHNldFNvdXJjZSB9KSk7XG4gIGNvbnN0IHsgY2xlYXIsIGNvbW1pdDogbWFudWFsQ29tbWl0IH0gPSBtYW51YWxIaXN0b3J5O1xuICBmdW5jdGlvbiBjb21taXQoKSB7XG4gICAgaWdub3JlUHJldkFzeW5jVXBkYXRlcygpO1xuICAgIG1hbnVhbENvbW1pdCgpO1xuICB9XG4gIGZ1bmN0aW9uIHJlc3VtZShjb21taXROb3cpIHtcbiAgICByZXN1bWVUcmFja2luZygpO1xuICAgIGlmIChjb21taXROb3cpXG4gICAgICBjb21taXQoKTtcbiAgfVxuICBmdW5jdGlvbiBiYXRjaChmbikge1xuICAgIGxldCBjYW5jZWxlZCA9IGZhbHNlO1xuICAgIGNvbnN0IGNhbmNlbCA9ICgpID0+IGNhbmNlbGVkID0gdHJ1ZTtcbiAgICBpZ25vcmVVcGRhdGVzKCgpID0+IHtcbiAgICAgIGZuKGNhbmNlbCk7XG4gICAgfSk7XG4gICAgaWYgKCFjYW5jZWxlZClcbiAgICAgIGNvbW1pdCgpO1xuICB9XG4gIGZ1bmN0aW9uIGRpc3Bvc2UoKSB7XG4gICAgc3RvcCgpO1xuICAgIGNsZWFyKCk7XG4gIH1cbiAgcmV0dXJuIF9fc3ByZWFkUHJvcHMkNihfX3NwcmVhZFZhbHVlcyRmKHt9LCBtYW51YWxIaXN0b3J5KSwge1xuICAgIGlzVHJhY2tpbmcsXG4gICAgcGF1c2UsXG4gICAgcmVzdW1lLFxuICAgIGNvbW1pdCxcbiAgICBiYXRjaCxcbiAgICBkaXNwb3NlXG4gIH0pO1xufVxuXG52YXIgX19kZWZQcm9wJGUgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19kZWZQcm9wcyQ1ID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXM7XG52YXIgX19nZXRPd25Qcm9wRGVzY3MkNSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzO1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkZyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJGcgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSRnID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkZSA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkZShvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkZSA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJGcuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCRlKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyRnKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyRnKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJGcuY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJGUoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG52YXIgX19zcHJlYWRQcm9wcyQ1ID0gKGEsIGIpID0+IF9fZGVmUHJvcHMkNShhLCBfX2dldE93blByb3BEZXNjcyQ1KGIpKTtcbmZ1bmN0aW9uIHVzZURlYm91bmNlZFJlZkhpc3Rvcnkoc291cmNlLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgZmlsdGVyID0gb3B0aW9ucy5kZWJvdW5jZSA/IHNoYXJlZC5kZWJvdW5jZUZpbHRlcihvcHRpb25zLmRlYm91bmNlKSA6IHZvaWQgMDtcbiAgY29uc3QgaGlzdG9yeSA9IHVzZVJlZkhpc3Rvcnkoc291cmNlLCBfX3NwcmVhZFByb3BzJDUoX19zcHJlYWRWYWx1ZXMkZSh7fSwgb3B0aW9ucyksIHsgZXZlbnRGaWx0ZXI6IGZpbHRlciB9KSk7XG4gIHJldHVybiBfX3NwcmVhZFZhbHVlcyRlKHt9LCBoaXN0b3J5KTtcbn1cblxuZnVuY3Rpb24gdXNlRGV2aWNlTW90aW9uKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvdyxcbiAgICBldmVudEZpbHRlciA9IHNoYXJlZC5ieXBhc3NGaWx0ZXJcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGFjY2VsZXJhdGlvbiA9IHZ1ZURlbWkucmVmKHsgeDogbnVsbCwgeTogbnVsbCwgejogbnVsbCB9KTtcbiAgY29uc3Qgcm90YXRpb25SYXRlID0gdnVlRGVtaS5yZWYoeyBhbHBoYTogbnVsbCwgYmV0YTogbnVsbCwgZ2FtbWE6IG51bGwgfSk7XG4gIGNvbnN0IGludGVydmFsID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkgPSB2dWVEZW1pLnJlZih7XG4gICAgeDogbnVsbCxcbiAgICB5OiBudWxsLFxuICAgIHo6IG51bGxcbiAgfSk7XG4gIGlmICh3aW5kb3cpIHtcbiAgICBjb25zdCBvbkRldmljZU1vdGlvbiA9IHNoYXJlZC5jcmVhdGVGaWx0ZXJXcmFwcGVyKGV2ZW50RmlsdGVyLCAoZXZlbnQpID0+IHtcbiAgICAgIGFjY2VsZXJhdGlvbi52YWx1ZSA9IGV2ZW50LmFjY2VsZXJhdGlvbjtcbiAgICAgIGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkudmFsdWUgPSBldmVudC5hY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5O1xuICAgICAgcm90YXRpb25SYXRlLnZhbHVlID0gZXZlbnQucm90YXRpb25SYXRlO1xuICAgICAgaW50ZXJ2YWwudmFsdWUgPSBldmVudC5pbnRlcnZhbDtcbiAgICB9KTtcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJkZXZpY2Vtb3Rpb25cIiwgb25EZXZpY2VNb3Rpb24pO1xuICB9XG4gIHJldHVybiB7XG4gICAgYWNjZWxlcmF0aW9uLFxuICAgIGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksXG4gICAgcm90YXRpb25SYXRlLFxuICAgIGludGVydmFsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZURldmljZU9yaWVudGF0aW9uKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3cgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gQm9vbGVhbih3aW5kb3cgJiYgXCJEZXZpY2VPcmllbnRhdGlvbkV2ZW50XCIgaW4gd2luZG93KTtcbiAgY29uc3QgaXNBYnNvbHV0ZSA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgYWxwaGEgPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgY29uc3QgYmV0YSA9IHZ1ZURlbWkucmVmKG51bGwpO1xuICBjb25zdCBnYW1tYSA9IHZ1ZURlbWkucmVmKG51bGwpO1xuICBpZiAod2luZG93ICYmIGlzU3VwcG9ydGVkKSB7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwiZGV2aWNlb3JpZW50YXRpb25cIiwgKGV2ZW50KSA9PiB7XG4gICAgICBpc0Fic29sdXRlLnZhbHVlID0gZXZlbnQuYWJzb2x1dGU7XG4gICAgICBhbHBoYS52YWx1ZSA9IGV2ZW50LmFscGhhO1xuICAgICAgYmV0YS52YWx1ZSA9IGV2ZW50LmJldGE7XG4gICAgICBnYW1tYS52YWx1ZSA9IGV2ZW50LmdhbW1hO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgaXNBYnNvbHV0ZSxcbiAgICBhbHBoYSxcbiAgICBiZXRhLFxuICAgIGdhbW1hXG4gIH07XG59XG5cbmNvbnN0IERFVklDRV9QSVhFTF9SQVRJT19TQ0FMRVMgPSBbXG4gIDEsXG4gIDEuMzI1LFxuICAxLjQsXG4gIDEuNSxcbiAgMS44LFxuICAyLFxuICAyLjQsXG4gIDIuNSxcbiAgMi43NSxcbiAgMyxcbiAgMy41LFxuICA0XG5dO1xuZnVuY3Rpb24gdXNlRGV2aWNlUGl4ZWxSYXRpbyh7XG4gIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3dcbn0gPSB7fSkge1xuICBpZiAoIXdpbmRvdykge1xuICAgIHJldHVybiB7XG4gICAgICBwaXhlbFJhdGlvOiB2dWVEZW1pLnJlZigxKVxuICAgIH07XG4gIH1cbiAgY29uc3QgcGl4ZWxSYXRpbyA9IHZ1ZURlbWkucmVmKHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvKTtcbiAgY29uc3QgaGFuZGxlRGV2aWNlUGl4ZWxSYXRpbyA9ICgpID0+IHtcbiAgICBwaXhlbFJhdGlvLnZhbHVlID0gd2luZG93LmRldmljZVBpeGVsUmF0aW87XG4gIH07XG4gIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcInJlc2l6ZVwiLCBoYW5kbGVEZXZpY2VQaXhlbFJhdGlvLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gIERFVklDRV9QSVhFTF9SQVRJT19TQ0FMRVMuZm9yRWFjaCgoZHBweCkgPT4ge1xuICAgIGNvbnN0IG1xbE1pbiA9IHVzZU1lZGlhUXVlcnkoYHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOiAke2RwcHh9ZHBweClgKTtcbiAgICBjb25zdCBtcWxNYXggPSB1c2VNZWRpYVF1ZXJ5KGBzY3JlZW4gYW5kIChtYXgtcmVzb2x1dGlvbjogJHtkcHB4fWRwcHgpYCk7XG4gICAgdnVlRGVtaS53YXRjaChbbXFsTWluLCBtcWxNYXhdLCBoYW5kbGVEZXZpY2VQaXhlbFJhdGlvKTtcbiAgfSk7XG4gIHJldHVybiB7IHBpeGVsUmF0aW8gfTtcbn1cblxuZnVuY3Rpb24gdXNlUGVybWlzc2lvbihwZXJtaXNzaW9uRGVzYywgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBjb250cm9scyA9IGZhbHNlLFxuICAgIG5hdmlnYXRvciA9IGRlZmF1bHROYXZpZ2F0b3JcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gQm9vbGVhbihuYXZpZ2F0b3IgJiYgXCJwZXJtaXNzaW9uc1wiIGluIG5hdmlnYXRvcik7XG4gIGxldCBwZXJtaXNzaW9uU3RhdHVzO1xuICBjb25zdCBkZXNjID0gdHlwZW9mIHBlcm1pc3Npb25EZXNjID09PSBcInN0cmluZ1wiID8geyBuYW1lOiBwZXJtaXNzaW9uRGVzYyB9IDogcGVybWlzc2lvbkRlc2M7XG4gIGNvbnN0IHN0YXRlID0gdnVlRGVtaS5yZWYoKTtcbiAgY29uc3Qgb25DaGFuZ2UgPSAoKSA9PiB7XG4gICAgaWYgKHBlcm1pc3Npb25TdGF0dXMpXG4gICAgICBzdGF0ZS52YWx1ZSA9IHBlcm1pc3Npb25TdGF0dXMuc3RhdGU7XG4gIH07XG4gIGNvbnN0IHF1ZXJ5ID0gc2hhcmVkLmNyZWF0ZVNpbmdsZXRvblByb21pc2UoYXN5bmMgKCkgPT4ge1xuICAgIGlmICghaXNTdXBwb3J0ZWQpXG4gICAgICByZXR1cm47XG4gICAgaWYgKCFwZXJtaXNzaW9uU3RhdHVzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBwZXJtaXNzaW9uU3RhdHVzID0gYXdhaXQgbmF2aWdhdG9yLnBlcm1pc3Npb25zLnF1ZXJ5KGRlc2MpO1xuICAgICAgICB1c2VFdmVudExpc3RlbmVyKHBlcm1pc3Npb25TdGF0dXMsIFwiY2hhbmdlXCIsIG9uQ2hhbmdlKTtcbiAgICAgICAgb25DaGFuZ2UoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgc3RhdGUudmFsdWUgPSBcInByb21wdFwiO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcGVybWlzc2lvblN0YXR1cztcbiAgfSk7XG4gIHF1ZXJ5KCk7XG4gIGlmIChjb250cm9scykge1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0ZSxcbiAgICAgIGlzU3VwcG9ydGVkLFxuICAgICAgcXVlcnlcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VEZXZpY2VzTGlzdChvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIG5hdmlnYXRvciA9IGRlZmF1bHROYXZpZ2F0b3IsXG4gICAgcmVxdWVzdFBlcm1pc3Npb25zID0gZmFsc2UsXG4gICAgY29uc3RyYWludHMgPSB7IGF1ZGlvOiB0cnVlLCB2aWRlbzogdHJ1ZSB9LFxuICAgIG9uVXBkYXRlZFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgZGV2aWNlcyA9IHZ1ZURlbWkucmVmKFtdKTtcbiAgY29uc3QgdmlkZW9JbnB1dHMgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IGRldmljZXMudmFsdWUuZmlsdGVyKChpKSA9PiBpLmtpbmQgPT09IFwidmlkZW9pbnB1dFwiKSk7XG4gIGNvbnN0IGF1ZGlvSW5wdXRzID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBkZXZpY2VzLnZhbHVlLmZpbHRlcigoaSkgPT4gaS5raW5kID09PSBcImF1ZGlvaW5wdXRcIikpO1xuICBjb25zdCBhdWRpb091dHB1dHMgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IGRldmljZXMudmFsdWUuZmlsdGVyKChpKSA9PiBpLmtpbmQgPT09IFwiYXVkaW9vdXRwdXRcIikpO1xuICBsZXQgaXNTdXBwb3J0ZWQgPSBmYWxzZTtcbiAgY29uc3QgcGVybWlzc2lvbkdyYW50ZWQgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBpZiAoIWlzU3VwcG9ydGVkKVxuICAgICAgcmV0dXJuO1xuICAgIGRldmljZXMudmFsdWUgPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMoKTtcbiAgICBvblVwZGF0ZWQgPT0gbnVsbCA/IHZvaWQgMCA6IG9uVXBkYXRlZChkZXZpY2VzLnZhbHVlKTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBlbnN1cmVQZXJtaXNzaW9ucygpIHtcbiAgICBpZiAoIWlzU3VwcG9ydGVkKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChwZXJtaXNzaW9uR3JhbnRlZC52YWx1ZSlcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIGNvbnN0IHsgc3RhdGUsIHF1ZXJ5IH0gPSB1c2VQZXJtaXNzaW9uKFwiY2FtZXJhXCIsIHsgY29udHJvbHM6IHRydWUgfSk7XG4gICAgYXdhaXQgcXVlcnkoKTtcbiAgICBpZiAoc3RhdGUudmFsdWUgIT09IFwiZ3JhbnRlZFwiKSB7XG4gICAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYShjb25zdHJhaW50cyk7XG4gICAgICBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCgodCkgPT4gdC5zdG9wKCkpO1xuICAgICAgdXBkYXRlKCk7XG4gICAgICBwZXJtaXNzaW9uR3JhbnRlZC52YWx1ZSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlcm1pc3Npb25HcmFudGVkLnZhbHVlID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHBlcm1pc3Npb25HcmFudGVkLnZhbHVlO1xuICB9XG4gIGlmIChuYXZpZ2F0b3IpIHtcbiAgICBpc1N1cHBvcnRlZCA9IEJvb2xlYW4obmF2aWdhdG9yLm1lZGlhRGV2aWNlcyAmJiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMpO1xuICAgIGlmIChpc1N1cHBvcnRlZCkge1xuICAgICAgaWYgKHJlcXVlc3RQZXJtaXNzaW9ucylcbiAgICAgICAgZW5zdXJlUGVybWlzc2lvbnMoKTtcbiAgICAgIHVzZUV2ZW50TGlzdGVuZXIobmF2aWdhdG9yLm1lZGlhRGV2aWNlcywgXCJkZXZpY2VjaGFuZ2VcIiwgdXBkYXRlKTtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIGRldmljZXMsXG4gICAgZW5zdXJlUGVybWlzc2lvbnMsXG4gICAgcGVybWlzc2lvbkdyYW50ZWQsXG4gICAgdmlkZW9JbnB1dHMsXG4gICAgYXVkaW9JbnB1dHMsXG4gICAgYXVkaW9PdXRwdXRzLFxuICAgIGlzU3VwcG9ydGVkXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZURpc3BsYXlNZWRpYShvcHRpb25zID0ge30pIHtcbiAgdmFyIF9hLCBfYjtcbiAgY29uc3QgZW5hYmxlZCA9IHZ1ZURlbWkucmVmKChfYSA9IG9wdGlvbnMuZW5hYmxlZCkgIT0gbnVsbCA/IF9hIDogZmFsc2UpO1xuICBjb25zdCB2aWRlbyA9IG9wdGlvbnMudmlkZW87XG4gIGNvbnN0IGF1ZGlvID0gb3B0aW9ucy5hdWRpbztcbiAgY29uc3QgeyBuYXZpZ2F0b3IgPSBkZWZhdWx0TmF2aWdhdG9yIH0gPSBvcHRpb25zO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IEJvb2xlYW4oKF9iID0gbmF2aWdhdG9yID09IG51bGwgPyB2b2lkIDAgOiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzKSA9PSBudWxsID8gdm9pZCAwIDogX2IuZ2V0RGlzcGxheU1lZGlhKTtcbiAgY29uc3QgY29uc3RyYWludCA9IHsgYXVkaW8sIHZpZGVvIH07XG4gIGNvbnN0IHN0cmVhbSA9IHZ1ZURlbWkuc2hhbGxvd1JlZigpO1xuICBhc3luYyBmdW5jdGlvbiBfc3RhcnQoKSB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZCB8fCBzdHJlYW0udmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgc3RyZWFtLnZhbHVlID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXREaXNwbGF5TWVkaWEoY29uc3RyYWludCk7XG4gICAgcmV0dXJuIHN0cmVhbS52YWx1ZTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBfc3RvcCgpIHtcbiAgICB2YXIgX2EyO1xuICAgIChfYTIgPSBzdHJlYW0udmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYTIuZ2V0VHJhY2tzKCkuZm9yRWFjaCgodCkgPT4gdC5zdG9wKCkpO1xuICAgIHN0cmVhbS52YWx1ZSA9IHZvaWQgMDtcbiAgfVxuICBmdW5jdGlvbiBzdG9wKCkge1xuICAgIF9zdG9wKCk7XG4gICAgZW5hYmxlZC52YWx1ZSA9IGZhbHNlO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIHN0YXJ0KCkge1xuICAgIGF3YWl0IF9zdGFydCgpO1xuICAgIGlmIChzdHJlYW0udmFsdWUpXG4gICAgICBlbmFibGVkLnZhbHVlID0gdHJ1ZTtcbiAgICByZXR1cm4gc3RyZWFtLnZhbHVlO1xuICB9XG4gIHZ1ZURlbWkud2F0Y2goZW5hYmxlZCwgKHYpID0+IHtcbiAgICBpZiAodilcbiAgICAgIF9zdGFydCgpO1xuICAgIGVsc2VcbiAgICAgIF9zdG9wKCk7XG4gIH0sIHsgaW1tZWRpYXRlOiB0cnVlIH0pO1xuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIHN0cmVhbSxcbiAgICBzdGFydCxcbiAgICBzdG9wLFxuICAgIGVuYWJsZWRcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlRG9jdW1lbnRWaXNpYmlsaXR5KHsgZG9jdW1lbnQgPSBkZWZhdWx0RG9jdW1lbnQgfSA9IHt9KSB7XG4gIGlmICghZG9jdW1lbnQpXG4gICAgcmV0dXJuIHZ1ZURlbWkucmVmKFwidmlzaWJsZVwiKTtcbiAgY29uc3QgdmlzaWJpbGl0eSA9IHZ1ZURlbWkucmVmKGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsIFwidmlzaWJpbGl0eWNoYW5nZVwiLCAoKSA9PiB7XG4gICAgdmlzaWJpbGl0eS52YWx1ZSA9IGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZTtcbiAgfSk7XG4gIHJldHVybiB2aXNpYmlsaXR5O1xufVxuXG52YXIgX19kZWZQcm9wJGQgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19kZWZQcm9wcyQ0ID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXM7XG52YXIgX19nZXRPd25Qcm9wRGVzY3MkNCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzO1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJGYgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSRmID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkZCA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkZChvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkZCA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJGYuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCRkKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyRmKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyRmKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJGYuY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJGQoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG52YXIgX19zcHJlYWRQcm9wcyQ0ID0gKGEsIGIpID0+IF9fZGVmUHJvcHMkNChhLCBfX2dldE93blByb3BEZXNjcyQ0KGIpKTtcbmZ1bmN0aW9uIHVzZURyYWdnYWJsZSh0YXJnZXQsIG9wdGlvbnMgPSB7fSkge1xuICB2YXIgX2EsIF9iO1xuICBjb25zdCBkcmFnZ2luZ0VsZW1lbnQgPSAoX2EgPSBvcHRpb25zLmRyYWdnaW5nRWxlbWVudCkgIT0gbnVsbCA/IF9hIDogZGVmYXVsdFdpbmRvdztcbiAgY29uc3QgcG9zaXRpb24gPSB2dWVEZW1pLnJlZigoX2IgPSBvcHRpb25zLmluaXRpYWxWYWx1ZSkgIT0gbnVsbCA/IF9iIDogeyB4OiAwLCB5OiAwIH0pO1xuICBjb25zdCBwcmVzc2VkRGVsdGEgPSB2dWVEZW1pLnJlZigpO1xuICBjb25zdCBmaWx0ZXJFdmVudCA9IChlKSA9PiB7XG4gICAgaWYgKG9wdGlvbnMucG9pbnRlclR5cGVzKVxuICAgICAgcmV0dXJuIG9wdGlvbnMucG9pbnRlclR5cGVzLmluY2x1ZGVzKGUucG9pbnRlclR5cGUpO1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xuICBjb25zdCBoYW5kbGVFdmVudCA9IChlKSA9PiB7XG4gICAgaWYgKHZ1ZURlbWkudW5yZWYob3B0aW9ucy5wcmV2ZW50RGVmYXVsdCkpXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHZ1ZURlbWkudW5yZWYob3B0aW9ucy5zdG9wUHJvcGFnYXRpb24pKVxuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfTtcbiAgY29uc3Qgc3RhcnQgPSAoZSkgPT4ge1xuICAgIHZhciBfYTI7XG4gICAgaWYgKCFmaWx0ZXJFdmVudChlKSlcbiAgICAgIHJldHVybjtcbiAgICBpZiAodnVlRGVtaS51bnJlZihvcHRpb25zLmV4YWN0KSAmJiBlLnRhcmdldCAhPT0gdnVlRGVtaS51bnJlZih0YXJnZXQpKVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IHJlY3QgPSB2dWVEZW1pLnVucmVmKHRhcmdldCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgcG9zID0ge1xuICAgICAgeDogZS5wYWdlWCAtIHJlY3QubGVmdCxcbiAgICAgIHk6IGUucGFnZVkgLSByZWN0LnRvcFxuICAgIH07XG4gICAgaWYgKCgoX2EyID0gb3B0aW9ucy5vblN0YXJ0KSA9PSBudWxsID8gdm9pZCAwIDogX2EyLmNhbGwob3B0aW9ucywgcG9zLCBlKSkgPT09IGZhbHNlKVxuICAgICAgcmV0dXJuO1xuICAgIHByZXNzZWREZWx0YS52YWx1ZSA9IHBvcztcbiAgICBoYW5kbGVFdmVudChlKTtcbiAgfTtcbiAgY29uc3QgbW92ZSA9IChlKSA9PiB7XG4gICAgdmFyIF9hMjtcbiAgICBpZiAoIWZpbHRlckV2ZW50KGUpKVxuICAgICAgcmV0dXJuO1xuICAgIGlmICghcHJlc3NlZERlbHRhLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIHBvc2l0aW9uLnZhbHVlID0ge1xuICAgICAgeDogZS5wYWdlWCAtIHByZXNzZWREZWx0YS52YWx1ZS54LFxuICAgICAgeTogZS5wYWdlWSAtIHByZXNzZWREZWx0YS52YWx1ZS55XG4gICAgfTtcbiAgICAoX2EyID0gb3B0aW9ucy5vbk1vdmUpID09IG51bGwgPyB2b2lkIDAgOiBfYTIuY2FsbChvcHRpb25zLCBwb3NpdGlvbi52YWx1ZSwgZSk7XG4gICAgaGFuZGxlRXZlbnQoZSk7XG4gIH07XG4gIGNvbnN0IGVuZCA9IChlKSA9PiB7XG4gICAgdmFyIF9hMjtcbiAgICBpZiAoIWZpbHRlckV2ZW50KGUpKVxuICAgICAgcmV0dXJuO1xuICAgIGlmICghcHJlc3NlZERlbHRhLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIHByZXNzZWREZWx0YS52YWx1ZSA9IHZvaWQgMDtcbiAgICAoX2EyID0gb3B0aW9ucy5vbkVuZCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5jYWxsKG9wdGlvbnMsIHBvc2l0aW9uLnZhbHVlLCBlKTtcbiAgICBoYW5kbGVFdmVudChlKTtcbiAgfTtcbiAgaWYgKHNoYXJlZC5pc0NsaWVudCkge1xuICAgIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInBvaW50ZXJkb3duXCIsIHN0YXJ0LCB0cnVlKTtcbiAgICB1c2VFdmVudExpc3RlbmVyKGRyYWdnaW5nRWxlbWVudCwgXCJwb2ludGVybW92ZVwiLCBtb3ZlLCB0cnVlKTtcbiAgICB1c2VFdmVudExpc3RlbmVyKGRyYWdnaW5nRWxlbWVudCwgXCJwb2ludGVydXBcIiwgZW5kLCB0cnVlKTtcbiAgfVxuICByZXR1cm4gX19zcHJlYWRQcm9wcyQ0KF9fc3ByZWFkVmFsdWVzJGQoe30sIHNoYXJlZC50b1JlZnMocG9zaXRpb24pKSwge1xuICAgIHBvc2l0aW9uLFxuICAgIGlzRHJhZ2dpbmc6IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gISFwcmVzc2VkRGVsdGEudmFsdWUpLFxuICAgIHN0eWxlOiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IGBsZWZ0OiR7cG9zaXRpb24udmFsdWUueH1weDt0b3A6JHtwb3NpdGlvbi52YWx1ZS55fXB4O2ApXG4gIH0pO1xufVxuXG5mdW5jdGlvbiB1c2VEcm9wWm9uZSh0YXJnZXQsIG9uRHJvcCkge1xuICBjb25zdCBpc092ZXJEcm9wWm9uZSA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgbGV0IGNvdW50ZXIgPSAwO1xuICBpZiAoc2hhcmVkLmlzQ2xpZW50KSB7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwiZHJhZ2VudGVyXCIsIChldmVudCkgPT4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNvdW50ZXIgKz0gMTtcbiAgICAgIGlzT3ZlckRyb3Bab25lLnZhbHVlID0gdHJ1ZTtcbiAgICB9KTtcbiAgICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJkcmFnb3ZlclwiLCAoZXZlbnQpID0+IHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwiZHJhZ2xlYXZlXCIsIChldmVudCkgPT4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNvdW50ZXIgLT0gMTtcbiAgICAgIGlmIChjb3VudGVyID09PSAwKVxuICAgICAgICBpc092ZXJEcm9wWm9uZS52YWx1ZSA9IGZhbHNlO1xuICAgIH0pO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcImRyb3BcIiwgKGV2ZW50KSA9PiB7XG4gICAgICB2YXIgX2EsIF9iO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNvdW50ZXIgPSAwO1xuICAgICAgaXNPdmVyRHJvcFpvbmUudmFsdWUgPSBmYWxzZTtcbiAgICAgIGNvbnN0IGZpbGVzID0gQXJyYXkuZnJvbSgoX2IgPSAoX2EgPSBldmVudC5kYXRhVHJhbnNmZXIpID09IG51bGwgPyB2b2lkIDAgOiBfYS5maWxlcykgIT0gbnVsbCA/IF9iIDogW10pO1xuICAgICAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBvbkRyb3AobnVsbCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIG9uRHJvcChmaWxlcyk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBpc092ZXJEcm9wWm9uZVxuICB9O1xufVxuXG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyRlID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkZSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJGUgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fb2JqUmVzdCQyID0gKHNvdXJjZSwgZXhjbHVkZSkgPT4ge1xuICB2YXIgdGFyZ2V0ID0ge307XG4gIGZvciAodmFyIHByb3AgaW4gc291cmNlKVxuICAgIGlmIChfX2hhc093blByb3AkZS5jYWxsKHNvdXJjZSwgcHJvcCkgJiYgZXhjbHVkZS5pbmRleE9mKHByb3ApIDwgMClcbiAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgaWYgKHNvdXJjZSAhPSBudWxsICYmIF9fZ2V0T3duUHJvcFN5bWJvbHMkZSlcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkZShzb3VyY2UpKSB7XG4gICAgICBpZiAoZXhjbHVkZS5pbmRleE9mKHByb3ApIDwgMCAmJiBfX3Byb3BJc0VudW0kZS5jYWxsKHNvdXJjZSwgcHJvcCkpXG4gICAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgICB9XG4gIHJldHVybiB0YXJnZXQ7XG59O1xuZnVuY3Rpb24gdXNlUmVzaXplT2JzZXJ2ZXIodGFyZ2V0LCBjYWxsYmFjaywgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IF9hID0gb3B0aW9ucywgeyB3aW5kb3cgPSBkZWZhdWx0V2luZG93IH0gPSBfYSwgb2JzZXJ2ZXJPcHRpb25zID0gX19vYmpSZXN0JDIoX2EsIFtcIndpbmRvd1wiXSk7XG4gIGxldCBvYnNlcnZlcjtcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSB3aW5kb3cgJiYgXCJSZXNpemVPYnNlcnZlclwiIGluIHdpbmRvdztcbiAgY29uc3QgY2xlYW51cCA9ICgpID0+IHtcbiAgICBpZiAob2JzZXJ2ZXIpIHtcbiAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIG9ic2VydmVyID0gdm9pZCAwO1xuICAgIH1cbiAgfTtcbiAgY29uc3Qgc3RvcFdhdGNoID0gdnVlRGVtaS53YXRjaCgoKSA9PiB1bnJlZkVsZW1lbnQodGFyZ2V0KSwgKGVsKSA9PiB7XG4gICAgY2xlYW51cCgpO1xuICAgIGlmIChpc1N1cHBvcnRlZCAmJiB3aW5kb3cgJiYgZWwpIHtcbiAgICAgIG9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGNhbGxiYWNrKTtcbiAgICAgIG9ic2VydmVyLm9ic2VydmUoZWwsIG9ic2VydmVyT3B0aW9ucyk7XG4gICAgfVxuICB9LCB7IGltbWVkaWF0ZTogdHJ1ZSwgZmx1c2g6IFwicG9zdFwiIH0pO1xuICBjb25zdCBzdG9wID0gKCkgPT4ge1xuICAgIGNsZWFudXAoKTtcbiAgICBzdG9wV2F0Y2goKTtcbiAgfTtcbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKHN0b3ApO1xuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIHN0b3BcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlRWxlbWVudEJvdW5kaW5nKHRhcmdldCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICByZXNldCA9IHRydWUsXG4gICAgd2luZG93UmVzaXplID0gdHJ1ZSxcbiAgICB3aW5kb3dTY3JvbGwgPSB0cnVlLFxuICAgIGltbWVkaWF0ZSA9IHRydWVcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGhlaWdodCA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCBib3R0b20gPSB2dWVEZW1pLnJlZigwKTtcbiAgY29uc3QgbGVmdCA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCByaWdodCA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCB0b3AgPSB2dWVEZW1pLnJlZigwKTtcbiAgY29uc3Qgd2lkdGggPSB2dWVEZW1pLnJlZigwKTtcbiAgY29uc3QgeCA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCB5ID0gdnVlRGVtaS5yZWYoMCk7XG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBjb25zdCBlbCA9IHVucmVmRWxlbWVudCh0YXJnZXQpO1xuICAgIGlmICghZWwpIHtcbiAgICAgIGlmIChyZXNldCkge1xuICAgICAgICBoZWlnaHQudmFsdWUgPSAwO1xuICAgICAgICBib3R0b20udmFsdWUgPSAwO1xuICAgICAgICBsZWZ0LnZhbHVlID0gMDtcbiAgICAgICAgcmlnaHQudmFsdWUgPSAwO1xuICAgICAgICB0b3AudmFsdWUgPSAwO1xuICAgICAgICB3aWR0aC52YWx1ZSA9IDA7XG4gICAgICAgIHgudmFsdWUgPSAwO1xuICAgICAgICB5LnZhbHVlID0gMDtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGhlaWdodC52YWx1ZSA9IHJlY3QuaGVpZ2h0O1xuICAgIGJvdHRvbS52YWx1ZSA9IHJlY3QuYm90dG9tO1xuICAgIGxlZnQudmFsdWUgPSByZWN0LmxlZnQ7XG4gICAgcmlnaHQudmFsdWUgPSByZWN0LnJpZ2h0O1xuICAgIHRvcC52YWx1ZSA9IHJlY3QudG9wO1xuICAgIHdpZHRoLnZhbHVlID0gcmVjdC53aWR0aDtcbiAgICB4LnZhbHVlID0gcmVjdC54O1xuICAgIHkudmFsdWUgPSByZWN0Lnk7XG4gIH1cbiAgdXNlUmVzaXplT2JzZXJ2ZXIodGFyZ2V0LCB1cGRhdGUpO1xuICB2dWVEZW1pLndhdGNoKCgpID0+IHVucmVmRWxlbWVudCh0YXJnZXQpLCAoZWxlKSA9PiAhZWxlICYmIHVwZGF0ZSgpKTtcbiAgaWYgKHdpbmRvd1Njcm9sbClcbiAgICB1c2VFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHVwZGF0ZSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICBpZiAod2luZG93UmVzaXplKVxuICAgIHVzZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdXBkYXRlLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gIHNoYXJlZC50cnlPbk1vdW50ZWQoKCkgPT4ge1xuICAgIGlmIChpbW1lZGlhdGUpXG4gICAgICB1cGRhdGUoKTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgaGVpZ2h0LFxuICAgIGJvdHRvbSxcbiAgICBsZWZ0LFxuICAgIHJpZ2h0LFxuICAgIHRvcCxcbiAgICB3aWR0aCxcbiAgICB4LFxuICAgIHksXG4gICAgdXBkYXRlXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZVJhZkZuKGZuLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGltbWVkaWF0ZSA9IHRydWUsXG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvd1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgaXNBY3RpdmUgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGxldCByYWZJZCA9IG51bGw7XG4gIGZ1bmN0aW9uIGxvb3AoKSB7XG4gICAgaWYgKCFpc0FjdGl2ZS52YWx1ZSB8fCAhd2luZG93KVxuICAgICAgcmV0dXJuO1xuICAgIGZuKCk7XG4gICAgcmFmSWQgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGxvb3ApO1xuICB9XG4gIGZ1bmN0aW9uIHJlc3VtZSgpIHtcbiAgICBpZiAoIWlzQWN0aXZlLnZhbHVlICYmIHdpbmRvdykge1xuICAgICAgaXNBY3RpdmUudmFsdWUgPSB0cnVlO1xuICAgICAgbG9vcCgpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBwYXVzZSgpIHtcbiAgICBpc0FjdGl2ZS52YWx1ZSA9IGZhbHNlO1xuICAgIGlmIChyYWZJZCAhPSBudWxsICYmIHdpbmRvdykge1xuICAgICAgd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHJhZklkKTtcbiAgICAgIHJhZklkID0gbnVsbDtcbiAgICB9XG4gIH1cbiAgaWYgKGltbWVkaWF0ZSlcbiAgICByZXN1bWUoKTtcbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKHBhdXNlKTtcbiAgcmV0dXJuIHtcbiAgICBpc0FjdGl2ZSxcbiAgICBwYXVzZSxcbiAgICByZXN1bWVcbiAgfTtcbn1cblxudmFyIF9fZGVmUHJvcCRjID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJGQgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSRkID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkYyA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkYyhvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkYyA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJGQuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCRjKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyRkKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyRkKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJGQuY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJGMoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG5mdW5jdGlvbiB1c2VFbGVtZW50QnlQb2ludChvcHRpb25zKSB7XG4gIGNvbnN0IGVsZW1lbnQgPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgY29uc3QgeyB4LCB5IH0gPSBvcHRpb25zO1xuICBjb25zdCBjb250cm9scyA9IHVzZVJhZkZuKCgpID0+IHtcbiAgICBlbGVtZW50LnZhbHVlID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCh2dWVEZW1pLnVucmVmKHgpLCB2dWVEZW1pLnVucmVmKHkpKTtcbiAgfSk7XG4gIHJldHVybiBfX3NwcmVhZFZhbHVlcyRjKHtcbiAgICBlbGVtZW50XG4gIH0sIGNvbnRyb2xzKTtcbn1cblxuZnVuY3Rpb24gdXNlRWxlbWVudEhvdmVyKGVsKSB7XG4gIGNvbnN0IGlzSG92ZXJlZCA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcihlbCwgXCJtb3VzZWVudGVyXCIsICgpID0+IGlzSG92ZXJlZC52YWx1ZSA9IHRydWUpO1xuICB1c2VFdmVudExpc3RlbmVyKGVsLCBcIm1vdXNlbGVhdmVcIiwgKCkgPT4gaXNIb3ZlcmVkLnZhbHVlID0gZmFsc2UpO1xuICByZXR1cm4gaXNIb3ZlcmVkO1xufVxuXG5mdW5jdGlvbiB1c2VFbGVtZW50U2l6ZSh0YXJnZXQsIGluaXRpYWxTaXplID0geyB3aWR0aDogMCwgaGVpZ2h0OiAwIH0sIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB3aWR0aCA9IHZ1ZURlbWkucmVmKGluaXRpYWxTaXplLndpZHRoKTtcbiAgY29uc3QgaGVpZ2h0ID0gdnVlRGVtaS5yZWYoaW5pdGlhbFNpemUuaGVpZ2h0KTtcbiAgdXNlUmVzaXplT2JzZXJ2ZXIodGFyZ2V0LCAoW2VudHJ5XSkgPT4ge1xuICAgIHdpZHRoLnZhbHVlID0gZW50cnkuY29udGVudFJlY3Qud2lkdGg7XG4gICAgaGVpZ2h0LnZhbHVlID0gZW50cnkuY29udGVudFJlY3QuaGVpZ2h0O1xuICB9LCBvcHRpb25zKTtcbiAgdnVlRGVtaS53YXRjaCgoKSA9PiB1bnJlZkVsZW1lbnQodGFyZ2V0KSwgKGVsZSkgPT4ge1xuICAgIHdpZHRoLnZhbHVlID0gZWxlID8gaW5pdGlhbFNpemUud2lkdGggOiAwO1xuICAgIGhlaWdodC52YWx1ZSA9IGVsZSA/IGluaXRpYWxTaXplLmhlaWdodCA6IDA7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VFbGVtZW50VmlzaWJpbGl0eShlbGVtZW50LCB7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3csIHNjcm9sbFRhcmdldCB9ID0ge30pIHtcbiAgY29uc3QgZWxlbWVudElzVmlzaWJsZSA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgdGVzdEJvdW5kaW5nID0gKCkgPT4ge1xuICAgIGlmICghd2luZG93KVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50O1xuICAgIGlmICghdnVlRGVtaS51bnJlZihlbGVtZW50KSkge1xuICAgICAgZWxlbWVudElzVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZWN0ID0gdnVlRGVtaS51bnJlZihlbGVtZW50KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGVsZW1lbnRJc1Zpc2libGUudmFsdWUgPSByZWN0LnRvcCA8PSAod2luZG93LmlubmVySGVpZ2h0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpICYmIHJlY3QubGVmdCA8PSAod2luZG93LmlubmVyV2lkdGggfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoKSAmJiByZWN0LmJvdHRvbSA+PSAwICYmIHJlY3QucmlnaHQgPj0gMDtcbiAgICB9XG4gIH07XG4gIHNoYXJlZC50cnlPbk1vdW50ZWQodGVzdEJvdW5kaW5nKTtcbiAgaWYgKHdpbmRvdylcbiAgICBzaGFyZWQudHJ5T25Nb3VudGVkKCgpID0+IHVzZUV2ZW50TGlzdGVuZXIodnVlRGVtaS51bnJlZihzY3JvbGxUYXJnZXQpIHx8IHdpbmRvdywgXCJzY3JvbGxcIiwgdGVzdEJvdW5kaW5nLCB7IGNhcHR1cmU6IGZhbHNlLCBwYXNzaXZlOiB0cnVlIH0pKTtcbiAgcmV0dXJuIGVsZW1lbnRJc1Zpc2libGU7XG59XG5cbmNvbnN0IGV2ZW50cyA9IG5ldyBNYXAoKTtcblxuZnVuY3Rpb24gdXNlRXZlbnRCdXMoa2V5KSB7XG4gIGNvbnN0IHNjb3BlID0gdnVlRGVtaS5nZXRDdXJyZW50U2NvcGUoKTtcbiAgZnVuY3Rpb24gb24obGlzdGVuZXIpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgbGlzdGVuZXJzID0gZXZlbnRzLmdldChrZXkpIHx8IFtdO1xuICAgIGxpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcbiAgICBldmVudHMuc2V0KGtleSwgbGlzdGVuZXJzKTtcbiAgICBjb25zdCBfb2ZmID0gKCkgPT4gb2ZmKGxpc3RlbmVyKTtcbiAgICAoX2EgPSBzY29wZSA9PSBudWxsID8gdm9pZCAwIDogc2NvcGUuY2xlYW51cHMpID09IG51bGwgPyB2b2lkIDAgOiBfYS5wdXNoKF9vZmYpO1xuICAgIHJldHVybiBfb2ZmO1xuICB9XG4gIGZ1bmN0aW9uIG9uY2UobGlzdGVuZXIpIHtcbiAgICBmdW5jdGlvbiBfbGlzdGVuZXIoLi4uYXJncykge1xuICAgICAgb2ZmKF9saXN0ZW5lcik7XG4gICAgICBsaXN0ZW5lciguLi5hcmdzKTtcbiAgICB9XG4gICAgcmV0dXJuIG9uKF9saXN0ZW5lcik7XG4gIH1cbiAgZnVuY3Rpb24gb2ZmKGxpc3RlbmVyKSB7XG4gICAgY29uc3QgbGlzdGVuZXJzID0gZXZlbnRzLmdldChrZXkpO1xuICAgIGlmICghbGlzdGVuZXJzKVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IGluZGV4ID0gbGlzdGVuZXJzLmluZGV4T2YobGlzdGVuZXIpO1xuICAgIGlmIChpbmRleCA+IC0xKVxuICAgICAgbGlzdGVuZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgaWYgKCFsaXN0ZW5lcnMubGVuZ3RoKVxuICAgICAgZXZlbnRzLmRlbGV0ZShrZXkpO1xuICB9XG4gIGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgIGV2ZW50cy5kZWxldGUoa2V5KTtcbiAgfVxuICBmdW5jdGlvbiBlbWl0KGV2ZW50LCBwYXlsb2FkKSB7XG4gICAgdmFyIF9hO1xuICAgIChfYSA9IGV2ZW50cy5nZXQoa2V5KSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvckVhY2goKHYpID0+IHYoZXZlbnQsIHBheWxvYWQpKTtcbiAgfVxuICByZXR1cm4geyBvbiwgb25jZSwgb2ZmLCBlbWl0LCByZXNldCB9O1xufVxuXG5mdW5jdGlvbiB1c2VFdmVudFNvdXJjZSh1cmwsIGV2ZW50cyA9IFtdLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgZXZlbnQgPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgY29uc3QgZGF0YSA9IHZ1ZURlbWkucmVmKG51bGwpO1xuICBjb25zdCBzdGF0dXMgPSB2dWVEZW1pLnJlZihcIkNPTk5FQ1RJTkdcIik7XG4gIGNvbnN0IGV2ZW50U291cmNlID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGNvbnN0IGVycm9yID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGNvbnN0IHtcbiAgICB3aXRoQ3JlZGVudGlhbHMgPSBmYWxzZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgY2xvc2UgPSAoKSA9PiB7XG4gICAgaWYgKGV2ZW50U291cmNlLnZhbHVlKSB7XG4gICAgICBldmVudFNvdXJjZS52YWx1ZS5jbG9zZSgpO1xuICAgICAgZXZlbnRTb3VyY2UudmFsdWUgPSBudWxsO1xuICAgICAgc3RhdHVzLnZhbHVlID0gXCJDTE9TRURcIjtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGVzID0gbmV3IEV2ZW50U291cmNlKHVybCwgeyB3aXRoQ3JlZGVudGlhbHMgfSk7XG4gIGV2ZW50U291cmNlLnZhbHVlID0gZXM7XG4gIGVzLm9ub3BlbiA9ICgpID0+IHtcbiAgICBzdGF0dXMudmFsdWUgPSBcIk9QRU5cIjtcbiAgICBlcnJvci52YWx1ZSA9IG51bGw7XG4gIH07XG4gIGVzLm9uZXJyb3IgPSAoZSkgPT4ge1xuICAgIHN0YXR1cy52YWx1ZSA9IFwiQ0xPU0VEXCI7XG4gICAgZXJyb3IudmFsdWUgPSBlO1xuICB9O1xuICBlcy5vbm1lc3NhZ2UgPSAoZSkgPT4ge1xuICAgIGV2ZW50LnZhbHVlID0gbnVsbDtcbiAgICBkYXRhLnZhbHVlID0gZS5kYXRhO1xuICB9O1xuICBmb3IgKGNvbnN0IGV2ZW50X25hbWUgb2YgZXZlbnRzKSB7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcihlcywgZXZlbnRfbmFtZSwgKGUpID0+IHtcbiAgICAgIGV2ZW50LnZhbHVlID0gZXZlbnRfbmFtZTtcbiAgICAgIGRhdGEudmFsdWUgPSBlLmRhdGEgfHwgbnVsbDtcbiAgICB9KTtcbiAgfVxuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UoKCkgPT4ge1xuICAgIGNsb3NlKCk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGV2ZW50U291cmNlLFxuICAgIGV2ZW50LFxuICAgIGRhdGEsXG4gICAgc3RhdHVzLFxuICAgIGVycm9yLFxuICAgIGNsb3NlXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZUV5ZURyb3BwZXIob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgaW5pdGlhbFZhbHVlID0gXCJcIiB9ID0gb3B0aW9ucztcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSBCb29sZWFuKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgJiYgXCJFeWVEcm9wcGVyXCIgaW4gd2luZG93KTtcbiAgY29uc3Qgc1JHQkhleCA9IHZ1ZURlbWkucmVmKGluaXRpYWxWYWx1ZSk7XG4gIGFzeW5jIGZ1bmN0aW9uIG9wZW4ob3Blbk9wdGlvbnMpIHtcbiAgICBpZiAoIWlzU3VwcG9ydGVkKVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IGV5ZURyb3BwZXIgPSBuZXcgd2luZG93LkV5ZURyb3BwZXIoKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBleWVEcm9wcGVyLm9wZW4ob3Blbk9wdGlvbnMpO1xuICAgIHNSR0JIZXgudmFsdWUgPSByZXN1bHQuc1JHQkhleDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHJldHVybiB7IGlzU3VwcG9ydGVkLCBzUkdCSGV4LCBvcGVuIH07XG59XG5cbmZ1bmN0aW9uIHVzZUZhdmljb24obmV3SWNvbiA9IG51bGwsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgYmFzZVVybCA9IFwiXCIsXG4gICAgcmVsID0gXCJpY29uXCIsXG4gICAgZG9jdW1lbnQgPSBkZWZhdWx0RG9jdW1lbnRcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGZhdmljb24gPSB2dWVEZW1pLmlzUmVmKG5ld0ljb24pID8gbmV3SWNvbiA6IHZ1ZURlbWkucmVmKG5ld0ljb24pO1xuICBjb25zdCBhcHBseUljb24gPSAoaWNvbikgPT4ge1xuICAgIGRvY3VtZW50ID09IG51bGwgPyB2b2lkIDAgOiBkb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3JBbGwoYGxpbmtbcmVsKj1cIiR7cmVsfVwiXWApLmZvckVhY2goKGVsKSA9PiBlbC5ocmVmID0gYCR7YmFzZVVybH0ke2ljb259YCk7XG4gIH07XG4gIHZ1ZURlbWkud2F0Y2goZmF2aWNvbiwgKGksIG8pID0+IHtcbiAgICBpZiAoc2hhcmVkLmlzU3RyaW5nKGkpICYmIGkgIT09IG8pXG4gICAgICBhcHBseUljb24oaSk7XG4gIH0sIHsgaW1tZWRpYXRlOiB0cnVlIH0pO1xuICByZXR1cm4gZmF2aWNvbjtcbn1cblxudmFyIF9fZGVmUHJvcCRiID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmUHJvcHMkMyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzO1xudmFyIF9fZ2V0T3duUHJvcERlc2NzJDMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycztcbnZhciBfX2dldE93blByb3BTeW1ib2xzJGMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCRjID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kYyA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJGIgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJGIob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJGIgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCRjLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkYihhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkYylcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkYyhiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSRjLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCRiKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xudmFyIF9fc3ByZWFkUHJvcHMkMyA9IChhLCBiKSA9PiBfX2RlZlByb3BzJDMoYSwgX19nZXRPd25Qcm9wRGVzY3MkMyhiKSk7XG5jb25zdCBwYXlsb2FkTWFwcGluZyA9IHtcbiAganNvbjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gIHRleHQ6IFwidGV4dC9wbGFpblwiLFxuICBmb3JtRGF0YTogXCJtdWx0aXBhcnQvZm9ybS1kYXRhXCJcbn07XG5mdW5jdGlvbiBpc0ZldGNoT3B0aW9ucyhvYmopIHtcbiAgcmV0dXJuIHNoYXJlZC5jb250YWluc1Byb3Aob2JqLCBcImltbWVkaWF0ZVwiLCBcInJlZmV0Y2hcIiwgXCJpbml0aWFsRGF0YVwiLCBcInRpbWVvdXRcIiwgXCJiZWZvcmVGZXRjaFwiLCBcImFmdGVyRmV0Y2hcIiwgXCJvbkZldGNoRXJyb3JcIiwgXCJmZXRjaFwiKTtcbn1cbmZ1bmN0aW9uIGhlYWRlcnNUb09iamVjdChoZWFkZXJzKSB7XG4gIGlmICh0eXBlb2YgSGVhZGVycyAhPT0gXCJ1bmRlZmluZWRcIiAmJiBoZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycylcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFsuLi5oZWFkZXJzLmVudHJpZXMoKV0pO1xuICByZXR1cm4gaGVhZGVycztcbn1cbmZ1bmN0aW9uIGNyZWF0ZUZldGNoKGNvbmZpZyA9IHt9KSB7XG4gIGNvbnN0IF9vcHRpb25zID0gY29uZmlnLm9wdGlvbnMgfHwge307XG4gIGNvbnN0IF9mZXRjaE9wdGlvbnMgPSBjb25maWcuZmV0Y2hPcHRpb25zIHx8IHt9O1xuICBmdW5jdGlvbiB1c2VGYWN0b3J5RmV0Y2godXJsLCAuLi5hcmdzKSB7XG4gICAgY29uc3QgY29tcHV0ZWRVcmwgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IGNvbmZpZy5iYXNlVXJsID8gam9pblBhdGhzKHZ1ZURlbWkudW5yZWYoY29uZmlnLmJhc2VVcmwpLCB2dWVEZW1pLnVucmVmKHVybCkpIDogdnVlRGVtaS51bnJlZih1cmwpKTtcbiAgICBsZXQgb3B0aW9ucyA9IF9vcHRpb25zO1xuICAgIGxldCBmZXRjaE9wdGlvbnMgPSBfZmV0Y2hPcHRpb25zO1xuICAgIGlmIChhcmdzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmIChpc0ZldGNoT3B0aW9ucyhhcmdzWzBdKSkge1xuICAgICAgICBvcHRpb25zID0gX19zcHJlYWRWYWx1ZXMkYihfX3NwcmVhZFZhbHVlcyRiKHt9LCBvcHRpb25zKSwgYXJnc1swXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmZXRjaE9wdGlvbnMgPSBfX3NwcmVhZFByb3BzJDMoX19zcHJlYWRWYWx1ZXMkYihfX3NwcmVhZFZhbHVlcyRiKHt9LCBmZXRjaE9wdGlvbnMpLCBhcmdzWzBdKSwge1xuICAgICAgICAgIGhlYWRlcnM6IF9fc3ByZWFkVmFsdWVzJGIoX19zcHJlYWRWYWx1ZXMkYih7fSwgaGVhZGVyc1RvT2JqZWN0KGZldGNoT3B0aW9ucy5oZWFkZXJzKSB8fCB7fSksIGhlYWRlcnNUb09iamVjdChhcmdzWzBdLmhlYWRlcnMpIHx8IHt9KVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFyZ3MubGVuZ3RoID4gMSAmJiBpc0ZldGNoT3B0aW9ucyhhcmdzWzFdKSlcbiAgICAgIG9wdGlvbnMgPSBfX3NwcmVhZFZhbHVlcyRiKF9fc3ByZWFkVmFsdWVzJGIoe30sIG9wdGlvbnMpLCBhcmdzWzFdKTtcbiAgICByZXR1cm4gdXNlRmV0Y2goY29tcHV0ZWRVcmwsIGZldGNoT3B0aW9ucywgb3B0aW9ucyk7XG4gIH1cbiAgcmV0dXJuIHVzZUZhY3RvcnlGZXRjaDtcbn1cbmZ1bmN0aW9uIHVzZUZldGNoKHVybCwgLi4uYXJncykge1xuICB2YXIgX2E7XG4gIGNvbnN0IHN1cHBvcnRzQWJvcnQgPSB0eXBlb2YgQWJvcnRDb250cm9sbGVyID09PSBcImZ1bmN0aW9uXCI7XG4gIGxldCBmZXRjaE9wdGlvbnMgPSB7fTtcbiAgbGV0IG9wdGlvbnMgPSB7IGltbWVkaWF0ZTogdHJ1ZSwgcmVmZXRjaDogZmFsc2UsIHRpbWVvdXQ6IDAgfTtcbiAgY29uc3QgY29uZmlnID0ge1xuICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICB0eXBlOiBcInRleHRcIixcbiAgICBwYXlsb2FkOiB2b2lkIDBcbiAgfTtcbiAgaWYgKGFyZ3MubGVuZ3RoID4gMCkge1xuICAgIGlmIChpc0ZldGNoT3B0aW9ucyhhcmdzWzBdKSlcbiAgICAgIG9wdGlvbnMgPSBfX3NwcmVhZFZhbHVlcyRiKF9fc3ByZWFkVmFsdWVzJGIoe30sIG9wdGlvbnMpLCBhcmdzWzBdKTtcbiAgICBlbHNlXG4gICAgICBmZXRjaE9wdGlvbnMgPSBhcmdzWzBdO1xuICB9XG4gIGlmIChhcmdzLmxlbmd0aCA+IDEpIHtcbiAgICBpZiAoaXNGZXRjaE9wdGlvbnMoYXJnc1sxXSkpXG4gICAgICBvcHRpb25zID0gX19zcHJlYWRWYWx1ZXMkYihfX3NwcmVhZFZhbHVlcyRiKHt9LCBvcHRpb25zKSwgYXJnc1sxXSk7XG4gIH1cbiAgY29uc3Qge1xuICAgIGZldGNoID0gKF9hID0gZGVmYXVsdFdpbmRvdykgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZldGNoLFxuICAgIGluaXRpYWxEYXRhLFxuICAgIHRpbWVvdXRcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHJlc3BvbnNlRXZlbnQgPSBzaGFyZWQuY3JlYXRlRXZlbnRIb29rKCk7XG4gIGNvbnN0IGVycm9yRXZlbnQgPSBzaGFyZWQuY3JlYXRlRXZlbnRIb29rKCk7XG4gIGNvbnN0IGZpbmFsbHlFdmVudCA9IHNoYXJlZC5jcmVhdGVFdmVudEhvb2soKTtcbiAgY29uc3QgaXNGaW5pc2hlZCA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgaXNGZXRjaGluZyA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgYWJvcnRlZCA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3Qgc3RhdHVzQ29kZSA9IHZ1ZURlbWkucmVmKG51bGwpO1xuICBjb25zdCByZXNwb25zZSA9IHZ1ZURlbWkuc2hhbGxvd1JlZihudWxsKTtcbiAgY29uc3QgZXJyb3IgPSB2dWVEZW1pLnNoYWxsb3dSZWYobnVsbCk7XG4gIGNvbnN0IGRhdGEgPSB2dWVEZW1pLnNoYWxsb3dSZWYoaW5pdGlhbERhdGEpO1xuICBjb25zdCBjYW5BYm9ydCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gc3VwcG9ydHNBYm9ydCAmJiBpc0ZldGNoaW5nLnZhbHVlKTtcbiAgbGV0IGNvbnRyb2xsZXI7XG4gIGxldCB0aW1lcjtcbiAgY29uc3QgYWJvcnQgPSAoKSA9PiB7XG4gICAgaWYgKHN1cHBvcnRzQWJvcnQgJiYgY29udHJvbGxlcilcbiAgICAgIGNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgfTtcbiAgY29uc3QgbG9hZGluZyA9IChpc0xvYWRpbmcpID0+IHtcbiAgICBpc0ZldGNoaW5nLnZhbHVlID0gaXNMb2FkaW5nO1xuICAgIGlzRmluaXNoZWQudmFsdWUgPSAhaXNMb2FkaW5nO1xuICB9O1xuICBpZiAodGltZW91dClcbiAgICB0aW1lciA9IHNoYXJlZC51c2VUaW1lb3V0Rm4oYWJvcnQsIHRpbWVvdXQsIHsgaW1tZWRpYXRlOiBmYWxzZSB9KTtcbiAgY29uc3QgZXhlY3V0ZSA9IGFzeW5jICh0aHJvd09uRmFpbGVkID0gZmFsc2UpID0+IHtcbiAgICB2YXIgX2EyO1xuICAgIGxvYWRpbmcodHJ1ZSk7XG4gICAgZXJyb3IudmFsdWUgPSBudWxsO1xuICAgIHN0YXR1c0NvZGUudmFsdWUgPSBudWxsO1xuICAgIGFib3J0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICBjb250cm9sbGVyID0gdm9pZCAwO1xuICAgIGlmIChzdXBwb3J0c0Fib3J0KSB7XG4gICAgICBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICAgY29udHJvbGxlci5zaWduYWwub25hYm9ydCA9ICgpID0+IGFib3J0ZWQudmFsdWUgPSB0cnVlO1xuICAgICAgZmV0Y2hPcHRpb25zID0gX19zcHJlYWRQcm9wcyQzKF9fc3ByZWFkVmFsdWVzJGIoe30sIGZldGNoT3B0aW9ucyksIHtcbiAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGRlZmF1bHRGZXRjaE9wdGlvbnMgPSB7XG4gICAgICBtZXRob2Q6IGNvbmZpZy5tZXRob2QsXG4gICAgICBoZWFkZXJzOiB7fVxuICAgIH07XG4gICAgaWYgKGNvbmZpZy5wYXlsb2FkKSB7XG4gICAgICBjb25zdCBoZWFkZXJzID0gaGVhZGVyc1RvT2JqZWN0KGRlZmF1bHRGZXRjaE9wdGlvbnMuaGVhZGVycyk7XG4gICAgICBpZiAoY29uZmlnLnBheWxvYWRUeXBlKVxuICAgICAgICBoZWFkZXJzW1wiQ29udGVudC1UeXBlXCJdID0gKF9hMiA9IHBheWxvYWRNYXBwaW5nW2NvbmZpZy5wYXlsb2FkVHlwZV0pICE9IG51bGwgPyBfYTIgOiBjb25maWcucGF5bG9hZFR5cGU7XG4gICAgICBkZWZhdWx0RmV0Y2hPcHRpb25zLmJvZHkgPSBjb25maWcucGF5bG9hZFR5cGUgPT09IFwianNvblwiID8gSlNPTi5zdHJpbmdpZnkodnVlRGVtaS51bnJlZihjb25maWcucGF5bG9hZCkpIDogdnVlRGVtaS51bnJlZihjb25maWcucGF5bG9hZCk7XG4gICAgfVxuICAgIGxldCBpc0NhbmNlbGVkID0gZmFsc2U7XG4gICAgY29uc3QgY29udGV4dCA9IHsgdXJsOiB2dWVEZW1pLnVucmVmKHVybCksIG9wdGlvbnM6IF9fc3ByZWFkVmFsdWVzJGIoX19zcHJlYWRWYWx1ZXMkYih7fSwgZGVmYXVsdEZldGNoT3B0aW9ucyksIGZldGNoT3B0aW9ucyksIGNhbmNlbDogKCkgPT4ge1xuICAgICAgaXNDYW5jZWxlZCA9IHRydWU7XG4gICAgfSB9O1xuICAgIGlmIChvcHRpb25zLmJlZm9yZUZldGNoKVxuICAgICAgT2JqZWN0LmFzc2lnbihjb250ZXh0LCBhd2FpdCBvcHRpb25zLmJlZm9yZUZldGNoKGNvbnRleHQpKTtcbiAgICBpZiAoaXNDYW5jZWxlZCB8fCAhZmV0Y2gpIHtcbiAgICAgIGxvYWRpbmcoZmFsc2UpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcbiAgICB9XG4gICAgbGV0IHJlc3BvbnNlRGF0YSA9IG51bGw7XG4gICAgaWYgKHRpbWVyKVxuICAgICAgdGltZXIuc3RhcnQoKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdmFyIF9hMztcbiAgICAgIGZldGNoKGNvbnRleHQudXJsLCBfX3NwcmVhZFByb3BzJDMoX19zcHJlYWRWYWx1ZXMkYihfX3NwcmVhZFZhbHVlcyRiKHt9LCBkZWZhdWx0RmV0Y2hPcHRpb25zKSwgY29udGV4dC5vcHRpb25zKSwge1xuICAgICAgICBoZWFkZXJzOiBfX3NwcmVhZFZhbHVlcyRiKF9fc3ByZWFkVmFsdWVzJGIoe30sIGhlYWRlcnNUb09iamVjdChkZWZhdWx0RmV0Y2hPcHRpb25zLmhlYWRlcnMpKSwgaGVhZGVyc1RvT2JqZWN0KChfYTMgPSBjb250ZXh0Lm9wdGlvbnMpID09IG51bGwgPyB2b2lkIDAgOiBfYTMuaGVhZGVycykpXG4gICAgICB9KSkudGhlbihhc3luYyAoZmV0Y2hSZXNwb25zZSkgPT4ge1xuICAgICAgICByZXNwb25zZS52YWx1ZSA9IGZldGNoUmVzcG9uc2U7XG4gICAgICAgIHN0YXR1c0NvZGUudmFsdWUgPSBmZXRjaFJlc3BvbnNlLnN0YXR1cztcbiAgICAgICAgcmVzcG9uc2VEYXRhID0gYXdhaXQgZmV0Y2hSZXNwb25zZVtjb25maWcudHlwZV0oKTtcbiAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXJGZXRjaCAmJiBzdGF0dXNDb2RlLnZhbHVlID49IDIwMCAmJiBzdGF0dXNDb2RlLnZhbHVlIDwgMzAwKVxuICAgICAgICAgICh7IGRhdGE6IHJlc3BvbnNlRGF0YSB9ID0gYXdhaXQgb3B0aW9ucy5hZnRlckZldGNoKHsgZGF0YTogcmVzcG9uc2VEYXRhLCByZXNwb25zZTogZmV0Y2hSZXNwb25zZSB9KSk7XG4gICAgICAgIGRhdGEudmFsdWUgPSByZXNwb25zZURhdGE7XG4gICAgICAgIGlmICghZmV0Y2hSZXNwb25zZS5vaylcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZmV0Y2hSZXNwb25zZS5zdGF0dXNUZXh0KTtcbiAgICAgICAgcmVzcG9uc2VFdmVudC50cmlnZ2VyKGZldGNoUmVzcG9uc2UpO1xuICAgICAgICByZXR1cm4gcmVzb2x2ZShmZXRjaFJlc3BvbnNlKTtcbiAgICAgIH0pLmNhdGNoKGFzeW5jIChmZXRjaEVycm9yKSA9PiB7XG4gICAgICAgIGxldCBlcnJvckRhdGEgPSBmZXRjaEVycm9yLm1lc3NhZ2UgfHwgZmV0Y2hFcnJvci5uYW1lO1xuICAgICAgICBpZiAob3B0aW9ucy5vbkZldGNoRXJyb3IpXG4gICAgICAgICAgKHsgZGF0YTogcmVzcG9uc2VEYXRhLCBlcnJvcjogZXJyb3JEYXRhIH0gPSBhd2FpdCBvcHRpb25zLm9uRmV0Y2hFcnJvcih7IGRhdGE6IHJlc3BvbnNlRGF0YSwgZXJyb3I6IGZldGNoRXJyb3IsIHJlc3BvbnNlOiByZXNwb25zZS52YWx1ZSB9KSk7XG4gICAgICAgIGRhdGEudmFsdWUgPSByZXNwb25zZURhdGE7XG4gICAgICAgIGVycm9yLnZhbHVlID0gZXJyb3JEYXRhO1xuICAgICAgICBlcnJvckV2ZW50LnRyaWdnZXIoZmV0Y2hFcnJvcik7XG4gICAgICAgIGlmICh0aHJvd09uRmFpbGVkKVxuICAgICAgICAgIHJldHVybiByZWplY3QoZmV0Y2hFcnJvcik7XG4gICAgICAgIHJldHVybiByZXNvbHZlKG51bGwpO1xuICAgICAgfSkuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIGxvYWRpbmcoZmFsc2UpO1xuICAgICAgICBpZiAodGltZXIpXG4gICAgICAgICAgdGltZXIuc3RvcCgpO1xuICAgICAgICBmaW5hbGx5RXZlbnQudHJpZ2dlcihudWxsKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuICB2dWVEZW1pLndhdGNoKCgpID0+IFtcbiAgICB2dWVEZW1pLnVucmVmKHVybCksXG4gICAgdnVlRGVtaS51bnJlZihvcHRpb25zLnJlZmV0Y2gpXG4gIF0sICgpID0+IHZ1ZURlbWkudW5yZWYob3B0aW9ucy5yZWZldGNoKSAmJiBleGVjdXRlKCksIHsgZGVlcDogdHJ1ZSB9KTtcbiAgY29uc3Qgc2hlbGwgPSB7XG4gICAgaXNGaW5pc2hlZCxcbiAgICBzdGF0dXNDb2RlLFxuICAgIHJlc3BvbnNlLFxuICAgIGVycm9yLFxuICAgIGRhdGEsXG4gICAgaXNGZXRjaGluZyxcbiAgICBjYW5BYm9ydCxcbiAgICBhYm9ydGVkLFxuICAgIGFib3J0LFxuICAgIGV4ZWN1dGUsXG4gICAgb25GZXRjaFJlc3BvbnNlOiByZXNwb25zZUV2ZW50Lm9uLFxuICAgIG9uRmV0Y2hFcnJvcjogZXJyb3JFdmVudC5vbixcbiAgICBvbkZldGNoRmluYWxseTogZmluYWxseUV2ZW50Lm9uLFxuICAgIGdldDogc2V0TWV0aG9kKFwiR0VUXCIpLFxuICAgIHB1dDogc2V0TWV0aG9kKFwiUFVUXCIpLFxuICAgIHBvc3Q6IHNldE1ldGhvZChcIlBPU1RcIiksXG4gICAgZGVsZXRlOiBzZXRNZXRob2QoXCJERUxFVEVcIiksXG4gICAgcGF0Y2g6IHNldE1ldGhvZChcIlBBVENIXCIpLFxuICAgIGhlYWQ6IHNldE1ldGhvZChcIkhFQURcIiksXG4gICAgb3B0aW9uczogc2V0TWV0aG9kKFwiT1BUSU9OU1wiKSxcbiAgICBqc29uOiBzZXRUeXBlKFwianNvblwiKSxcbiAgICB0ZXh0OiBzZXRUeXBlKFwidGV4dFwiKSxcbiAgICBibG9iOiBzZXRUeXBlKFwiYmxvYlwiKSxcbiAgICBhcnJheUJ1ZmZlcjogc2V0VHlwZShcImFycmF5QnVmZmVyXCIpLFxuICAgIGZvcm1EYXRhOiBzZXRUeXBlKFwiZm9ybURhdGFcIilcbiAgfTtcbiAgZnVuY3Rpb24gc2V0TWV0aG9kKG1ldGhvZCkge1xuICAgIHJldHVybiAocGF5bG9hZCwgcGF5bG9hZFR5cGUpID0+IHtcbiAgICAgIGlmICghaXNGZXRjaGluZy52YWx1ZSkge1xuICAgICAgICBjb25maWcubWV0aG9kID0gbWV0aG9kO1xuICAgICAgICBjb25maWcucGF5bG9hZCA9IHBheWxvYWQ7XG4gICAgICAgIGNvbmZpZy5wYXlsb2FkVHlwZSA9IHBheWxvYWRUeXBlO1xuICAgICAgICBpZiAodnVlRGVtaS5pc1JlZihjb25maWcucGF5bG9hZCkpIHtcbiAgICAgICAgICB2dWVEZW1pLndhdGNoKCgpID0+IFtcbiAgICAgICAgICAgIHZ1ZURlbWkudW5yZWYoY29uZmlnLnBheWxvYWQpLFxuICAgICAgICAgICAgdnVlRGVtaS51bnJlZihvcHRpb25zLnJlZmV0Y2gpXG4gICAgICAgICAgXSwgKCkgPT4gdnVlRGVtaS51bnJlZihvcHRpb25zLnJlZmV0Y2gpICYmIGV4ZWN1dGUoKSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcGF5bG9hZFR5cGUgJiYgdnVlRGVtaS51bnJlZihwYXlsb2FkKSAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2YodnVlRGVtaS51bnJlZihwYXlsb2FkKSkgPT09IE9iamVjdC5wcm90b3R5cGUpXG4gICAgICAgICAgY29uZmlnLnBheWxvYWRUeXBlID0gXCJqc29uXCI7XG4gICAgICAgIHJldHVybiBfX3NwcmVhZFByb3BzJDMoX19zcHJlYWRWYWx1ZXMkYih7fSwgc2hlbGwpLCB7XG4gICAgICAgICAgdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHdhaXRVbnRpbEZpbmlzaGVkKCkudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiB3YWl0VW50aWxGaW5pc2hlZCgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgc2hhcmVkLnVudGlsKGlzRmluaXNoZWQpLnRvQmUodHJ1ZSkudGhlbigoKSA9PiByZXNvbHZlKHNoZWxsKSkuY2F0Y2goKGVycm9yMikgPT4gcmVqZWN0KGVycm9yMikpO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIHNldFR5cGUodHlwZSkge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoIWlzRmV0Y2hpbmcudmFsdWUpIHtcbiAgICAgICAgY29uZmlnLnR5cGUgPSB0eXBlO1xuICAgICAgICByZXR1cm4gX19zcHJlYWRQcm9wcyQzKF9fc3ByZWFkVmFsdWVzJGIoe30sIHNoZWxsKSwge1xuICAgICAgICAgIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB3YWl0VW50aWxGaW5pc2hlZCgpLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH07XG4gIH1cbiAgaWYgKG9wdGlvbnMuaW1tZWRpYXRlKVxuICAgIHNldFRpbWVvdXQoZXhlY3V0ZSwgMCk7XG4gIHJldHVybiBfX3NwcmVhZFByb3BzJDMoX19zcHJlYWRWYWx1ZXMkYih7fSwgc2hlbGwpLCB7XG4gICAgdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgcmV0dXJuIHdhaXRVbnRpbEZpbmlzaGVkKCkudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIGpvaW5QYXRocyhzdGFydCwgZW5kKSB7XG4gIGlmICghc3RhcnQuZW5kc1dpdGgoXCIvXCIpICYmICFlbmQuc3RhcnRzV2l0aChcIi9cIikpXG4gICAgcmV0dXJuIGAke3N0YXJ0fS8ke2VuZH1gO1xuICByZXR1cm4gYCR7c3RhcnR9JHtlbmR9YDtcbn1cblxudmFyIF9fZGVmUHJvcCRhID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkYiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJGIgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSRiID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkYSA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkYShvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkYSA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJGIuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCRhKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyRiKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyRiKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJGIuY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJGEoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG5jb25zdCBERUZBVUxUX09QVElPTlMgPSB7XG4gIG11bHRpcGxlOiB0cnVlLFxuICBhY2NlcHQ6IFwiKlwiXG59O1xuZnVuY3Rpb24gdXNlRmlsZURpYWxvZyhvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGRvY3VtZW50ID0gZGVmYXVsdERvY3VtZW50XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBmaWxlcyA9IHZ1ZURlbWkucmVmKG51bGwpO1xuICBsZXQgaW5wdXQ7XG4gIGlmIChkb2N1bWVudCkge1xuICAgIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO1xuICAgIGlucHV0LnR5cGUgPSBcImZpbGVcIjtcbiAgICBpbnB1dC5vbmNoYW5nZSA9IChldmVudCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgZmlsZXMudmFsdWUgPSByZXN1bHQuZmlsZXM7XG4gICAgfTtcbiAgfVxuICBjb25zdCBvcGVuID0gKGxvY2FsT3B0aW9ucykgPT4ge1xuICAgIGlmICghaW5wdXQpXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgX29wdGlvbnMgPSBfX3NwcmVhZFZhbHVlcyRhKF9fc3ByZWFkVmFsdWVzJGEoX19zcHJlYWRWYWx1ZXMkYSh7fSwgREVGQVVMVF9PUFRJT05TKSwgb3B0aW9ucyksIGxvY2FsT3B0aW9ucyk7XG4gICAgaW5wdXQubXVsdGlwbGUgPSBfb3B0aW9ucy5tdWx0aXBsZTtcbiAgICBpbnB1dC5hY2NlcHQgPSBfb3B0aW9ucy5hY2NlcHQ7XG4gICAgaW5wdXQuY2FwdHVyZSA9IF9vcHRpb25zLmNhcHR1cmU7XG4gICAgaW5wdXQuY2xpY2soKTtcbiAgfTtcbiAgY29uc3QgcmVzZXQgPSAoKSA9PiB7XG4gICAgZmlsZXMudmFsdWUgPSBudWxsO1xuICAgIGlmIChpbnB1dClcbiAgICAgIGlucHV0LnZhbHVlID0gXCJcIjtcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBmaWxlczogdnVlRGVtaS5yZWFkb25seShmaWxlcyksXG4gICAgb3BlbixcbiAgICByZXNldFxuICB9O1xufVxuXG52YXIgX19kZWZQcm9wJDkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyRhID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkYSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJGEgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCQ5ID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCQ5KG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyQ5ID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkYS5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJDkoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJGEpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJGEoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kYS5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkOShhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbmZ1bmN0aW9uIHVzZUZpbGVTeXN0ZW1BY2Nlc3Mob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB3aW5kb3c6IF93aW5kb3cgPSBkZWZhdWx0V2luZG93LFxuICAgIGRhdGFUeXBlID0gXCJUZXh0XCJcbiAgfSA9IHZ1ZURlbWkudW5yZWYob3B0aW9ucyk7XG4gIGNvbnN0IHdpbmRvdyA9IF93aW5kb3c7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gQm9vbGVhbih3aW5kb3cgJiYgXCJzaG93U2F2ZUZpbGVQaWNrZXJcIiBpbiB3aW5kb3cgJiYgXCJzaG93T3BlbkZpbGVQaWNrZXJcIiBpbiB3aW5kb3cpO1xuICBjb25zdCBmaWxlSGFuZGxlID0gdnVlRGVtaS5yZWYoKTtcbiAgY29uc3QgZGF0YSA9IHZ1ZURlbWkucmVmKCk7XG4gIGNvbnN0IGZpbGUgPSB2dWVEZW1pLnJlZigpO1xuICBjb25zdCBmaWxlTmFtZSA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfYSwgX2I7XG4gICAgcmV0dXJuIChfYiA9IChfYSA9IGZpbGUudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5uYW1lKSAhPSBudWxsID8gX2IgOiBcIlwiO1xuICB9KTtcbiAgY29uc3QgZmlsZU1JTUUgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIHJldHVybiAoX2IgPSAoX2EgPSBmaWxlLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EudHlwZSkgIT0gbnVsbCA/IF9iIDogXCJcIjtcbiAgfSk7XG4gIGNvbnN0IGZpbGVTaXplID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICByZXR1cm4gKF9iID0gKF9hID0gZmlsZS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnNpemUpICE9IG51bGwgPyBfYiA6IDA7XG4gIH0pO1xuICBjb25zdCBmaWxlTGFzdE1vZGlmaWVkID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICByZXR1cm4gKF9iID0gKF9hID0gZmlsZS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmxhc3RNb2RpZmllZCkgIT0gbnVsbCA/IF9iIDogMDtcbiAgfSk7XG4gIGFzeW5jIGZ1bmN0aW9uIG9wZW4oX29wdGlvbnMgPSB7fSkge1xuICAgIGlmICghaXNTdXBwb3J0ZWQpXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgW2hhbmRsZV0gPSBhd2FpdCB3aW5kb3cuc2hvd09wZW5GaWxlUGlja2VyKF9fc3ByZWFkVmFsdWVzJDkoX19zcHJlYWRWYWx1ZXMkOSh7fSwgdnVlRGVtaS51bnJlZihvcHRpb25zKSksIF9vcHRpb25zKSk7XG4gICAgZmlsZUhhbmRsZS52YWx1ZSA9IGhhbmRsZTtcbiAgICBhd2FpdCB1cGRhdGVGaWxlKCk7XG4gICAgYXdhaXQgdXBkYXRlRGF0YSgpO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZShfb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZClcbiAgICAgIHJldHVybjtcbiAgICBmaWxlSGFuZGxlLnZhbHVlID0gYXdhaXQgd2luZG93LnNob3dTYXZlRmlsZVBpY2tlcihfX3NwcmVhZFZhbHVlcyQ5KF9fc3ByZWFkVmFsdWVzJDkoe30sIHZ1ZURlbWkudW5yZWYob3B0aW9ucykpLCBfb3B0aW9ucykpO1xuICAgIGRhdGEudmFsdWUgPSB2b2lkIDA7XG4gICAgYXdhaXQgdXBkYXRlRmlsZSgpO1xuICAgIGF3YWl0IHVwZGF0ZURhdGEoKTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBzYXZlKF9vcHRpb25zID0ge30pIHtcbiAgICBpZiAoIWlzU3VwcG9ydGVkKVxuICAgICAgcmV0dXJuO1xuICAgIGlmICghZmlsZUhhbmRsZS52YWx1ZSlcbiAgICAgIHJldHVybiBzYXZlQXMoX29wdGlvbnMpO1xuICAgIGlmIChkYXRhLnZhbHVlKSB7XG4gICAgICBjb25zdCB3cml0YWJsZVN0cmVhbSA9IGF3YWl0IGZpbGVIYW5kbGUudmFsdWUuY3JlYXRlV3JpdGFibGUoKTtcbiAgICAgIGF3YWl0IHdyaXRhYmxlU3RyZWFtLndyaXRlKGRhdGEudmFsdWUpO1xuICAgICAgYXdhaXQgd3JpdGFibGVTdHJlYW0uY2xvc2UoKTtcbiAgICB9XG4gICAgYXdhaXQgdXBkYXRlRmlsZSgpO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIHNhdmVBcyhfb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZClcbiAgICAgIHJldHVybjtcbiAgICBmaWxlSGFuZGxlLnZhbHVlID0gYXdhaXQgd2luZG93LnNob3dTYXZlRmlsZVBpY2tlcihfX3NwcmVhZFZhbHVlcyQ5KF9fc3ByZWFkVmFsdWVzJDkoe30sIHZ1ZURlbWkudW5yZWYob3B0aW9ucykpLCBfb3B0aW9ucykpO1xuICAgIGlmIChkYXRhLnZhbHVlKSB7XG4gICAgICBjb25zdCB3cml0YWJsZVN0cmVhbSA9IGF3YWl0IGZpbGVIYW5kbGUudmFsdWUuY3JlYXRlV3JpdGFibGUoKTtcbiAgICAgIGF3YWl0IHdyaXRhYmxlU3RyZWFtLndyaXRlKGRhdGEudmFsdWUpO1xuICAgICAgYXdhaXQgd3JpdGFibGVTdHJlYW0uY2xvc2UoKTtcbiAgICB9XG4gICAgYXdhaXQgdXBkYXRlRmlsZSgpO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUZpbGUoKSB7XG4gICAgdmFyIF9hO1xuICAgIGZpbGUudmFsdWUgPSBhd2FpdCAoKF9hID0gZmlsZUhhbmRsZS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmdldEZpbGUoKSk7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gdXBkYXRlRGF0YSgpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGlmICh2dWVEZW1pLnVucmVmKGRhdGFUeXBlKSA9PT0gXCJUZXh0XCIpXG4gICAgICBkYXRhLnZhbHVlID0gYXdhaXQgKChfYSA9IGZpbGUudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS50ZXh0KCkpO1xuICAgIGlmICh2dWVEZW1pLnVucmVmKGRhdGFUeXBlKSA9PT0gXCJBcnJheUJ1ZmZlclwiKVxuICAgICAgZGF0YS52YWx1ZSA9IGF3YWl0ICgoX2IgPSBmaWxlLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2IuYXJyYXlCdWZmZXIoKSk7XG4gICAgaWYgKHZ1ZURlbWkudW5yZWYoZGF0YVR5cGUpID09PSBcIkJsb2JcIilcbiAgICAgIGRhdGEudmFsdWUgPSBmaWxlLnZhbHVlO1xuICB9XG4gIHZ1ZURlbWkud2F0Y2goKCkgPT4gdnVlRGVtaS51bnJlZihkYXRhVHlwZSksIHVwZGF0ZURhdGEpO1xuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIGRhdGEsXG4gICAgZmlsZSxcbiAgICBmaWxlTmFtZSxcbiAgICBmaWxlTUlNRSxcbiAgICBmaWxlU2l6ZSxcbiAgICBmaWxlTGFzdE1vZGlmaWVkLFxuICAgIG9wZW4sXG4gICAgY3JlYXRlLFxuICAgIHNhdmUsXG4gICAgc2F2ZUFzLFxuICAgIHVwZGF0ZURhdGFcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlRm9jdXModGFyZ2V0LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgeyBpbml0aWFsVmFsdWUgPSBmYWxzZSB9ID0gb3B0aW9ucztcbiAgY29uc3QgYWN0aXZlRWxlbWVudCA9IHVzZUFjdGl2ZUVsZW1lbnQob3B0aW9ucyk7XG4gIGNvbnN0IHRhcmdldEVsZW1lbnQgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHVucmVmRWxlbWVudCh0YXJnZXQpKTtcbiAgY29uc3QgZm9jdXNlZCA9IHZ1ZURlbWkuY29tcHV0ZWQoe1xuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiBzaGFyZWQuaXNEZWYoYWN0aXZlRWxlbWVudC52YWx1ZSkgJiYgc2hhcmVkLmlzRGVmKHRhcmdldEVsZW1lbnQudmFsdWUpICYmIGFjdGl2ZUVsZW1lbnQudmFsdWUgPT09IHRhcmdldEVsZW1lbnQudmFsdWU7XG4gICAgfSxcbiAgICBzZXQodmFsdWUpIHtcbiAgICAgIHZhciBfYSwgX2I7XG4gICAgICBpZiAoIXZhbHVlICYmIGZvY3VzZWQudmFsdWUpXG4gICAgICAgIChfYSA9IHRhcmdldEVsZW1lbnQudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5ibHVyKCk7XG4gICAgICBpZiAodmFsdWUgJiYgIWZvY3VzZWQudmFsdWUpXG4gICAgICAgIChfYiA9IHRhcmdldEVsZW1lbnQudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYi5mb2N1cygpO1xuICAgIH1cbiAgfSk7XG4gIHZ1ZURlbWkud2F0Y2godGFyZ2V0RWxlbWVudCwgKCkgPT4ge1xuICAgIGZvY3VzZWQudmFsdWUgPSBpbml0aWFsVmFsdWU7XG4gIH0sIHsgaW1tZWRpYXRlOiB0cnVlLCBmbHVzaDogXCJwb3N0XCIgfSk7XG4gIHJldHVybiB7IGZvY3VzZWQgfTtcbn1cblxuZnVuY3Rpb24gdXNlRm9jdXNXaXRoaW4odGFyZ2V0LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgYWN0aXZlRWxlbWVudCA9IHVzZUFjdGl2ZUVsZW1lbnQob3B0aW9ucyk7XG4gIGNvbnN0IHRhcmdldEVsZW1lbnQgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHVucmVmRWxlbWVudCh0YXJnZXQpKTtcbiAgY29uc3QgZm9jdXNlZCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gdGFyZ2V0RWxlbWVudC52YWx1ZSAmJiBhY3RpdmVFbGVtZW50LnZhbHVlID8gdGFyZ2V0RWxlbWVudC52YWx1ZS5jb250YWlucyhhY3RpdmVFbGVtZW50LnZhbHVlKSA6IGZhbHNlKTtcbiAgcmV0dXJuIHsgZm9jdXNlZCB9O1xufVxuXG5mdW5jdGlvbiB1c2VGcHMob3B0aW9ucykge1xuICB2YXIgX2E7XG4gIGNvbnN0IGZwcyA9IHZ1ZURlbWkucmVmKDApO1xuICBpZiAodHlwZW9mIHBlcmZvcm1hbmNlID09PSBcInVuZGVmaW5lZFwiKVxuICAgIHJldHVybiBmcHM7XG4gIGNvbnN0IGV2ZXJ5ID0gKF9hID0gb3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5ldmVyeSkgIT0gbnVsbCA/IF9hIDogMTA7XG4gIGxldCBsYXN0ID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gIGxldCB0aWNrcyA9IDA7XG4gIHVzZVJhZkZuKCgpID0+IHtcbiAgICB0aWNrcyArPSAxO1xuICAgIGlmICh0aWNrcyA+PSBldmVyeSkge1xuICAgICAgY29uc3Qgbm93ID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgICBjb25zdCBkaWZmID0gbm93IC0gbGFzdDtcbiAgICAgIGZwcy52YWx1ZSA9IE1hdGgucm91bmQoMWUzIC8gKGRpZmYgLyB0aWNrcykpO1xuICAgICAgbGFzdCA9IG5vdztcbiAgICAgIHRpY2tzID0gMDtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gZnBzO1xufVxuXG5jb25zdCBmdW5jdGlvbnNNYXAgPSBbXG4gIFtcbiAgICBcInJlcXVlc3RGdWxsc2NyZWVuXCIsXG4gICAgXCJleGl0RnVsbHNjcmVlblwiLFxuICAgIFwiZnVsbHNjcmVlbkVsZW1lbnRcIixcbiAgICBcImZ1bGxzY3JlZW5FbmFibGVkXCIsXG4gICAgXCJmdWxsc2NyZWVuY2hhbmdlXCIsXG4gICAgXCJmdWxsc2NyZWVuZXJyb3JcIlxuICBdLFxuICBbXG4gICAgXCJ3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlblwiLFxuICAgIFwid2Via2l0RXhpdEZ1bGxzY3JlZW5cIixcbiAgICBcIndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50XCIsXG4gICAgXCJ3ZWJraXRGdWxsc2NyZWVuRW5hYmxlZFwiLFxuICAgIFwid2Via2l0ZnVsbHNjcmVlbmNoYW5nZVwiLFxuICAgIFwid2Via2l0ZnVsbHNjcmVlbmVycm9yXCJcbiAgXSxcbiAgW1xuICAgIFwid2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5cIixcbiAgICBcIndlYmtpdENhbmNlbEZ1bGxTY3JlZW5cIixcbiAgICBcIndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudFwiLFxuICAgIFwid2Via2l0Q2FuY2VsRnVsbFNjcmVlblwiLFxuICAgIFwid2Via2l0ZnVsbHNjcmVlbmNoYW5nZVwiLFxuICAgIFwid2Via2l0ZnVsbHNjcmVlbmVycm9yXCJcbiAgXSxcbiAgW1xuICAgIFwibW96UmVxdWVzdEZ1bGxTY3JlZW5cIixcbiAgICBcIm1vekNhbmNlbEZ1bGxTY3JlZW5cIixcbiAgICBcIm1vekZ1bGxTY3JlZW5FbGVtZW50XCIsXG4gICAgXCJtb3pGdWxsU2NyZWVuRW5hYmxlZFwiLFxuICAgIFwibW96ZnVsbHNjcmVlbmNoYW5nZVwiLFxuICAgIFwibW96ZnVsbHNjcmVlbmVycm9yXCJcbiAgXSxcbiAgW1xuICAgIFwibXNSZXF1ZXN0RnVsbHNjcmVlblwiLFxuICAgIFwibXNFeGl0RnVsbHNjcmVlblwiLFxuICAgIFwibXNGdWxsc2NyZWVuRWxlbWVudFwiLFxuICAgIFwibXNGdWxsc2NyZWVuRW5hYmxlZFwiLFxuICAgIFwiTVNGdWxsc2NyZWVuQ2hhbmdlXCIsXG4gICAgXCJNU0Z1bGxzY3JlZW5FcnJvclwiXG4gIF1cbl07XG5mdW5jdGlvbiB1c2VGdWxsc2NyZWVuKHRhcmdldCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgZG9jdW1lbnQgPSBkZWZhdWx0RG9jdW1lbnQsIGF1dG9FeGl0ID0gZmFsc2UgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHRhcmdldFJlZiA9IHRhcmdldCB8fCAoZG9jdW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJodG1sXCIpKTtcbiAgY29uc3QgaXNGdWxsc2NyZWVuID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBsZXQgaXNTdXBwb3J0ZWQgPSBmYWxzZTtcbiAgbGV0IG1hcCA9IGZ1bmN0aW9uc01hcFswXTtcbiAgaWYgKCFkb2N1bWVudCkge1xuICAgIGlzU3VwcG9ydGVkID0gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgZm9yIChjb25zdCBtIG9mIGZ1bmN0aW9uc01hcCkge1xuICAgICAgaWYgKG1bMV0gaW4gZG9jdW1lbnQpIHtcbiAgICAgICAgbWFwID0gbTtcbiAgICAgICAgaXNTdXBwb3J0ZWQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY29uc3QgW1JFUVVFU1QsIEVYSVQsIEVMRU1FTlQsICwgRVZFTlRdID0gbWFwO1xuICBhc3luYyBmdW5jdGlvbiBleGl0KCkge1xuICAgIGlmICghaXNTdXBwb3J0ZWQpXG4gICAgICByZXR1cm47XG4gICAgaWYgKGRvY3VtZW50ID09IG51bGwgPyB2b2lkIDAgOiBkb2N1bWVudFtFTEVNRU5UXSlcbiAgICAgIGF3YWl0IGRvY3VtZW50W0VYSVRdKCk7XG4gICAgaXNGdWxsc2NyZWVuLnZhbHVlID0gZmFsc2U7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gZW50ZXIoKSB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZClcbiAgICAgIHJldHVybjtcbiAgICBhd2FpdCBleGl0KCk7XG4gICAgY29uc3QgdGFyZ2V0MiA9IHVucmVmRWxlbWVudCh0YXJnZXRSZWYpO1xuICAgIGlmICh0YXJnZXQyKSB7XG4gICAgICBhd2FpdCB0YXJnZXQyW1JFUVVFU1RdKCk7XG4gICAgICBpc0Z1bGxzY3JlZW4udmFsdWUgPSB0cnVlO1xuICAgIH1cbiAgfVxuICBhc3luYyBmdW5jdGlvbiB0b2dnbGUoKSB7XG4gICAgaWYgKGlzRnVsbHNjcmVlbi52YWx1ZSlcbiAgICAgIGF3YWl0IGV4aXQoKTtcbiAgICBlbHNlXG4gICAgICBhd2FpdCBlbnRlcigpO1xuICB9XG4gIGlmIChkb2N1bWVudCkge1xuICAgIHVzZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsIEVWRU5ULCAoKSA9PiB7XG4gICAgICBpc0Z1bGxzY3JlZW4udmFsdWUgPSAhIShkb2N1bWVudCA9PSBudWxsID8gdm9pZCAwIDogZG9jdW1lbnRbRUxFTUVOVF0pO1xuICAgIH0sIGZhbHNlKTtcbiAgfVxuICBpZiAoYXV0b0V4aXQpXG4gICAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKGV4aXQpO1xuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIGlzRnVsbHNjcmVlbixcbiAgICBlbnRlcixcbiAgICBleGl0LFxuICAgIHRvZ2dsZVxuICB9O1xufVxuXG5mdW5jdGlvbiBtYXBHYW1lcGFkVG9YYm94MzYwQ29udHJvbGxlcihnYW1lcGFkKSB7XG4gIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoZ2FtZXBhZC52YWx1ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYnV0dG9uczoge1xuICAgICAgICAgIGE6IGdhbWVwYWQudmFsdWUuYnV0dG9uc1swXSxcbiAgICAgICAgICBiOiBnYW1lcGFkLnZhbHVlLmJ1dHRvbnNbMV0sXG4gICAgICAgICAgeDogZ2FtZXBhZC52YWx1ZS5idXR0b25zWzJdLFxuICAgICAgICAgIHk6IGdhbWVwYWQudmFsdWUuYnV0dG9uc1szXVxuICAgICAgICB9LFxuICAgICAgICBidW1wZXI6IHtcbiAgICAgICAgICBsZWZ0OiBnYW1lcGFkLnZhbHVlLmJ1dHRvbnNbNF0sXG4gICAgICAgICAgcmlnaHQ6IGdhbWVwYWQudmFsdWUuYnV0dG9uc1s1XVxuICAgICAgICB9LFxuICAgICAgICB0cmlnZ2Vyczoge1xuICAgICAgICAgIGxlZnQ6IGdhbWVwYWQudmFsdWUuYnV0dG9uc1s2XSxcbiAgICAgICAgICByaWdodDogZ2FtZXBhZC52YWx1ZS5idXR0b25zWzddXG4gICAgICAgIH0sXG4gICAgICAgIHN0aWNrOiB7XG4gICAgICAgICAgbGVmdDoge1xuICAgICAgICAgICAgaG9yaXpvbnRhbDogZ2FtZXBhZC52YWx1ZS5heGVzWzBdLFxuICAgICAgICAgICAgdmVydGljYWw6IGdhbWVwYWQudmFsdWUuYXhlc1sxXSxcbiAgICAgICAgICAgIGJ1dHRvbjogZ2FtZXBhZC52YWx1ZS5idXR0b25zWzEwXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmlnaHQ6IHtcbiAgICAgICAgICAgIGhvcml6b250YWw6IGdhbWVwYWQudmFsdWUuYXhlc1syXSxcbiAgICAgICAgICAgIHZlcnRpY2FsOiBnYW1lcGFkLnZhbHVlLmF4ZXNbM10sXG4gICAgICAgICAgICBidXR0b246IGdhbWVwYWQudmFsdWUuYnV0dG9uc1sxMV1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRwYWQ6IHtcbiAgICAgICAgICB1cDogZ2FtZXBhZC52YWx1ZS5idXR0b25zWzEyXSxcbiAgICAgICAgICBkb3duOiBnYW1lcGFkLnZhbHVlLmJ1dHRvbnNbMTNdLFxuICAgICAgICAgIGxlZnQ6IGdhbWVwYWQudmFsdWUuYnV0dG9uc1sxNF0sXG4gICAgICAgICAgcmlnaHQ6IGdhbWVwYWQudmFsdWUuYnV0dG9uc1sxNV1cbiAgICAgICAgfSxcbiAgICAgICAgYmFjazogZ2FtZXBhZC52YWx1ZS5idXR0b25zWzhdLFxuICAgICAgICBzdGFydDogZ2FtZXBhZC52YWx1ZS5idXR0b25zWzldXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSk7XG59XG5mdW5jdGlvbiB1c2VHYW1lcGFkKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgbmF2aWdhdG9yID0gZGVmYXVsdE5hdmlnYXRvclxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSBuYXZpZ2F0b3IgJiYgXCJnZXRHYW1lcGFkc1wiIGluIG5hdmlnYXRvcjtcbiAgY29uc3QgZ2FtZXBhZHMgPSB2dWVEZW1pLnJlZihbXSk7XG4gIGNvbnN0IG9uQ29ubmVjdGVkSG9vayA9IHNoYXJlZC5jcmVhdGVFdmVudEhvb2soKTtcbiAgY29uc3Qgb25EaXNjb25uZWN0ZWRIb29rID0gc2hhcmVkLmNyZWF0ZUV2ZW50SG9vaygpO1xuICBjb25zdCBzdGF0ZUZyb21HYW1lcGFkID0gKGdhbWVwYWQpID0+IHtcbiAgICBjb25zdCBoYXB0aWNBY3R1YXRvcnMgPSBbXTtcbiAgICBjb25zdCB2aWJyYXRpb25BY3R1YXRvciA9IFwidmlicmF0aW9uQWN0dWF0b3JcIiBpbiBnYW1lcGFkID8gZ2FtZXBhZC52aWJyYXRpb25BY3R1YXRvciA6IG51bGw7XG4gICAgaWYgKHZpYnJhdGlvbkFjdHVhdG9yKVxuICAgICAgaGFwdGljQWN0dWF0b3JzLnB1c2godmlicmF0aW9uQWN0dWF0b3IpO1xuICAgIGlmIChnYW1lcGFkLmhhcHRpY0FjdHVhdG9ycylcbiAgICAgIGhhcHRpY0FjdHVhdG9ycy5wdXNoKC4uLmdhbWVwYWQuaGFwdGljQWN0dWF0b3JzKTtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGdhbWVwYWQuaWQsXG4gICAgICBoYXB0aWNBY3R1YXRvcnMsXG4gICAgICBpbmRleDogZ2FtZXBhZC5pbmRleCxcbiAgICAgIG1hcHBpbmc6IGdhbWVwYWQubWFwcGluZyxcbiAgICAgIGNvbm5lY3RlZDogZ2FtZXBhZC5jb25uZWN0ZWQsXG4gICAgICB0aW1lc3RhbXA6IGdhbWVwYWQudGltZXN0YW1wLFxuICAgICAgYXhlczogZ2FtZXBhZC5heGVzLm1hcCgoYXhlcykgPT4gYXhlcyksXG4gICAgICBidXR0b25zOiBnYW1lcGFkLmJ1dHRvbnMubWFwKChidXR0b24pID0+ICh7IHByZXNzZWQ6IGJ1dHRvbi5wcmVzc2VkLCB0b3VjaGVkOiBidXR0b24udG91Y2hlZCwgdmFsdWU6IGJ1dHRvbi52YWx1ZSB9KSlcbiAgICB9O1xuICB9O1xuICBjb25zdCB1cGRhdGVHYW1lcGFkU3RhdGUgPSAoKSA9PiB7XG4gICAgY29uc3QgX2dhbWVwYWRzID0gKG5hdmlnYXRvciA9PSBudWxsID8gdm9pZCAwIDogbmF2aWdhdG9yLmdldEdhbWVwYWRzKCkpIHx8IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgX2dhbWVwYWRzLmxlbmd0aDsgKytpKSB7XG4gICAgICBjb25zdCBnYW1lcGFkID0gX2dhbWVwYWRzW2ldO1xuICAgICAgaWYgKGdhbWVwYWQpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBnYW1lcGFkcy52YWx1ZS5maW5kSW5kZXgoKHsgaW5kZXg6IGluZGV4MiB9KSA9PiBpbmRleDIgPT09IGdhbWVwYWQuaW5kZXgpO1xuICAgICAgICBpZiAoaW5kZXggPiAtMSlcbiAgICAgICAgICBnYW1lcGFkcy52YWx1ZVtpbmRleF0gPSBzdGF0ZUZyb21HYW1lcGFkKGdhbWVwYWQpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgY29uc3QgeyBpc0FjdGl2ZSwgcGF1c2UsIHJlc3VtZSB9ID0gdXNlUmFmRm4odXBkYXRlR2FtZXBhZFN0YXRlKTtcbiAgY29uc3Qgb25HYW1lcGFkQ29ubmVjdGVkID0gKGdhbWVwYWQpID0+IHtcbiAgICBpZiAoIWdhbWVwYWRzLnZhbHVlLnNvbWUoKHsgaW5kZXggfSkgPT4gaW5kZXggPT09IGdhbWVwYWQuaW5kZXgpKSB7XG4gICAgICBnYW1lcGFkcy52YWx1ZS5wdXNoKHN0YXRlRnJvbUdhbWVwYWQoZ2FtZXBhZCkpO1xuICAgICAgb25Db25uZWN0ZWRIb29rLnRyaWdnZXIoZ2FtZXBhZC5pbmRleCk7XG4gICAgfVxuICAgIHJlc3VtZSgpO1xuICB9O1xuICBjb25zdCBvbkdhbWVwYWREaXNjb25uZWN0ZWQgPSAoZ2FtZXBhZCkgPT4ge1xuICAgIGdhbWVwYWRzLnZhbHVlID0gZ2FtZXBhZHMudmFsdWUuZmlsdGVyKCh4KSA9PiB4LmluZGV4ICE9PSBnYW1lcGFkLmluZGV4KTtcbiAgICBvbkRpc2Nvbm5lY3RlZEhvb2sudHJpZ2dlcihnYW1lcGFkLmluZGV4KTtcbiAgfTtcbiAgdXNlRXZlbnRMaXN0ZW5lcihcImdhbWVwYWRjb25uZWN0ZWRcIiwgKGUpID0+IG9uR2FtZXBhZENvbm5lY3RlZChlLmdhbWVwYWQpKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcihcImdhbWVwYWRkaXNjb25uZWN0ZWRcIiwgKGUpID0+IG9uR2FtZXBhZERpc2Nvbm5lY3RlZChlLmdhbWVwYWQpKTtcbiAgc2hhcmVkLnRyeU9uTW91bnRlZCgoKSA9PiB7XG4gICAgY29uc3QgX2dhbWVwYWRzID0gKG5hdmlnYXRvciA9PSBudWxsID8gdm9pZCAwIDogbmF2aWdhdG9yLmdldEdhbWVwYWRzKCkpIHx8IFtdO1xuICAgIGlmIChfZ2FtZXBhZHMpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgX2dhbWVwYWRzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGNvbnN0IGdhbWVwYWQgPSBfZ2FtZXBhZHNbaV07XG4gICAgICAgIGlmIChnYW1lcGFkKVxuICAgICAgICAgIG9uR2FtZXBhZENvbm5lY3RlZChnYW1lcGFkKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBwYXVzZSgpO1xuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIG9uQ29ubmVjdGVkOiBvbkNvbm5lY3RlZEhvb2sub24sXG4gICAgb25EaXNjb25uZWN0ZWQ6IG9uRGlzY29ubmVjdGVkSG9vay5vbixcbiAgICBnYW1lcGFkcyxcbiAgICBwYXVzZSxcbiAgICByZXN1bWUsXG4gICAgaXNBY3RpdmVcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlR2VvbG9jYXRpb24ob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBlbmFibGVIaWdoQWNjdXJhY3kgPSB0cnVlLFxuICAgIG1heGltdW1BZ2UgPSAzZTQsXG4gICAgdGltZW91dCA9IDI3ZTMsXG4gICAgbmF2aWdhdG9yID0gZGVmYXVsdE5hdmlnYXRvclxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSBuYXZpZ2F0b3IgJiYgXCJnZW9sb2NhdGlvblwiIGluIG5hdmlnYXRvcjtcbiAgY29uc3QgbG9jYXRlZEF0ID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGNvbnN0IGVycm9yID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGNvbnN0IGNvb3JkcyA9IHZ1ZURlbWkucmVmKHtcbiAgICBhY2N1cmFjeTogMCxcbiAgICBsYXRpdHVkZTogSW5maW5pdHksXG4gICAgbG9uZ2l0dWRlOiBJbmZpbml0eSxcbiAgICBhbHRpdHVkZTogbnVsbCxcbiAgICBhbHRpdHVkZUFjY3VyYWN5OiBudWxsLFxuICAgIGhlYWRpbmc6IG51bGwsXG4gICAgc3BlZWQ6IG51bGxcbiAgfSk7XG4gIGZ1bmN0aW9uIHVwZGF0ZVBvc2l0aW9uKHBvc2l0aW9uKSB7XG4gICAgbG9jYXRlZEF0LnZhbHVlID0gcG9zaXRpb24udGltZXN0YW1wO1xuICAgIGNvb3Jkcy52YWx1ZSA9IHBvc2l0aW9uLmNvb3JkcztcbiAgICBlcnJvci52YWx1ZSA9IG51bGw7XG4gIH1cbiAgbGV0IHdhdGNoZXI7XG4gIGlmIChpc1N1cHBvcnRlZCkge1xuICAgIHdhdGNoZXIgPSBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24ud2F0Y2hQb3NpdGlvbih1cGRhdGVQb3NpdGlvbiwgKGVycikgPT4gZXJyb3IudmFsdWUgPSBlcnIsIHtcbiAgICAgIGVuYWJsZUhpZ2hBY2N1cmFjeSxcbiAgICAgIG1heGltdW1BZ2UsXG4gICAgICB0aW1lb3V0XG4gICAgfSk7XG4gIH1cbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKCgpID0+IHtcbiAgICBpZiAod2F0Y2hlciAmJiBuYXZpZ2F0b3IpXG4gICAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uY2xlYXJXYXRjaCh3YXRjaGVyKTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgY29vcmRzLFxuICAgIGxvY2F0ZWRBdCxcbiAgICBlcnJvclxuICB9O1xufVxuXG5jb25zdCBkZWZhdWx0RXZlbnRzJDEgPSBbXCJtb3VzZW1vdmVcIiwgXCJtb3VzZWRvd25cIiwgXCJyZXNpemVcIiwgXCJrZXlkb3duXCIsIFwidG91Y2hzdGFydFwiLCBcIndoZWVsXCJdO1xuY29uc3Qgb25lTWludXRlID0gNmU0O1xuZnVuY3Rpb24gdXNlSWRsZSh0aW1lb3V0ID0gb25lTWludXRlLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGluaXRpYWxTdGF0ZSA9IGZhbHNlLFxuICAgIGxpc3RlbkZvclZpc2liaWxpdHlDaGFuZ2UgPSB0cnVlLFxuICAgIGV2ZW50cyA9IGRlZmF1bHRFdmVudHMkMSxcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93LFxuICAgIGV2ZW50RmlsdGVyID0gc2hhcmVkLnRocm90dGxlRmlsdGVyKDUwKVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgaWRsZSA9IHZ1ZURlbWkucmVmKGluaXRpYWxTdGF0ZSk7XG4gIGNvbnN0IGxhc3RBY3RpdmUgPSB2dWVEZW1pLnJlZihzaGFyZWQudGltZXN0YW1wKCkpO1xuICBsZXQgdGltZXI7XG4gIGNvbnN0IG9uRXZlbnQgPSBzaGFyZWQuY3JlYXRlRmlsdGVyV3JhcHBlcihldmVudEZpbHRlciwgKCkgPT4ge1xuICAgIGlkbGUudmFsdWUgPSBmYWxzZTtcbiAgICBsYXN0QWN0aXZlLnZhbHVlID0gc2hhcmVkLnRpbWVzdGFtcCgpO1xuICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IGlkbGUudmFsdWUgPSB0cnVlLCB0aW1lb3V0KTtcbiAgfSk7XG4gIGlmICh3aW5kb3cpIHtcbiAgICBjb25zdCBkb2N1bWVudCA9IHdpbmRvdy5kb2N1bWVudDtcbiAgICBmb3IgKGNvbnN0IGV2ZW50IG9mIGV2ZW50cylcbiAgICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBldmVudCwgb25FdmVudCwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIGlmIChsaXN0ZW5Gb3JWaXNpYmlsaXR5Q2hhbmdlKSB7XG4gICAgICB1c2VFdmVudExpc3RlbmVyKGRvY3VtZW50LCBcInZpc2liaWxpdHljaGFuZ2VcIiwgKCkgPT4ge1xuICAgICAgICBpZiAoIWRvY3VtZW50LmhpZGRlbilcbiAgICAgICAgICBvbkV2ZW50KCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IGlkbGUudmFsdWUgPSB0cnVlLCB0aW1lb3V0KTtcbiAgcmV0dXJuIHsgaWRsZSwgbGFzdEFjdGl2ZSB9O1xufVxuXG52YXIgX19kZWZQcm9wJDggPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyQ5ID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkOSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJDkgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCQ4ID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCQ4KG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyQ4ID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkOS5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJDgoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJDkpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJDkoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kOS5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkOChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbmFzeW5jIGZ1bmN0aW9uIGxvYWRJbWFnZShvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XG4gICAgY29uc3QgeyBzcmMsIHNyY3NldCwgc2l6ZXMgfSA9IG9wdGlvbnM7XG4gICAgaW1nLnNyYyA9IHNyYztcbiAgICBpZiAoc3Jjc2V0KVxuICAgICAgaW1nLnNyY3NldCA9IHNyY3NldDtcbiAgICBpZiAoc2l6ZXMpXG4gICAgICBpbWcuc2l6ZXMgPSBzaXplcztcbiAgICBpbWcub25sb2FkID0gKCkgPT4gcmVzb2x2ZShpbWcpO1xuICAgIGltZy5vbmVycm9yID0gcmVqZWN0O1xuICB9KTtcbn1cbmNvbnN0IHVzZUltYWdlID0gKG9wdGlvbnMsIGFzeW5jU3RhdGVPcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qgc3RhdGUgPSB1c2VBc3luY1N0YXRlKCgpID0+IGxvYWRJbWFnZSh2dWVEZW1pLnVucmVmKG9wdGlvbnMpKSwgdm9pZCAwLCBfX3NwcmVhZFZhbHVlcyQ4KHtcbiAgICByZXNldE9uRXhlY3V0ZTogdHJ1ZVxuICB9LCBhc3luY1N0YXRlT3B0aW9ucykpO1xuICB2dWVEZW1pLndhdGNoKCgpID0+IHZ1ZURlbWkudW5yZWYob3B0aW9ucyksICgpID0+IHN0YXRlLmV4ZWN1dGUoYXN5bmNTdGF0ZU9wdGlvbnMuZGVsYXkpLCB7IGRlZXA6IHRydWUgfSk7XG4gIHJldHVybiBzdGF0ZTtcbn07XG5cbmZ1bmN0aW9uIHVzZVNjcm9sbChlbGVtZW50LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHRocm90dGxlID0gMCxcbiAgICBpZGxlID0gMjAwLFxuICAgIG9uU3RvcCA9IHNoYXJlZC5ub29wLFxuICAgIG9uU2Nyb2xsID0gc2hhcmVkLm5vb3AsXG4gICAgb2Zmc2V0ID0ge1xuICAgICAgbGVmdDogMCxcbiAgICAgIHJpZ2h0OiAwLFxuICAgICAgdG9wOiAwLFxuICAgICAgYm90dG9tOiAwXG4gICAgfSxcbiAgICBldmVudExpc3RlbmVyT3B0aW9ucyA9IHtcbiAgICAgIGNhcHR1cmU6IGZhbHNlLFxuICAgICAgcGFzc2l2ZTogdHJ1ZVxuICAgIH1cbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHggPSB2dWVEZW1pLnJlZigwKTtcbiAgY29uc3QgeSA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCBpc1Njcm9sbGluZyA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgYXJyaXZlZFN0YXRlID0gdnVlRGVtaS5yZWFjdGl2ZSh7XG4gICAgbGVmdDogdHJ1ZSxcbiAgICByaWdodDogZmFsc2UsXG4gICAgdG9wOiB0cnVlLFxuICAgIGJvdHRvbTogZmFsc2VcbiAgfSk7XG4gIGNvbnN0IGRpcmVjdGlvbnMgPSB2dWVEZW1pLnJlYWN0aXZlKHtcbiAgICBsZWZ0OiBmYWxzZSxcbiAgICByaWdodDogZmFsc2UsXG4gICAgdG9wOiBmYWxzZSxcbiAgICBib3R0b206IGZhbHNlXG4gIH0pO1xuICBpZiAoZWxlbWVudCkge1xuICAgIGNvbnN0IG9uU2Nyb2xsRW5kID0gc2hhcmVkLnVzZURlYm91bmNlRm4oKGUpID0+IHtcbiAgICAgIGlzU2Nyb2xsaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICBkaXJlY3Rpb25zLmxlZnQgPSBmYWxzZTtcbiAgICAgIGRpcmVjdGlvbnMucmlnaHQgPSBmYWxzZTtcbiAgICAgIGRpcmVjdGlvbnMudG9wID0gZmFsc2U7XG4gICAgICBkaXJlY3Rpb25zLmJvdHRvbSA9IGZhbHNlO1xuICAgICAgb25TdG9wKGUpO1xuICAgIH0sIHRocm90dGxlICsgaWRsZSk7XG4gICAgY29uc3Qgb25TY3JvbGxIYW5kbGVyID0gKGUpID0+IHtcbiAgICAgIGNvbnN0IGV2ZW50VGFyZ2V0ID0gZS50YXJnZXQgPT09IGRvY3VtZW50ID8gZS50YXJnZXQuZG9jdW1lbnRFbGVtZW50IDogZS50YXJnZXQ7XG4gICAgICBjb25zdCBzY3JvbGxMZWZ0ID0gZXZlbnRUYXJnZXQuc2Nyb2xsTGVmdDtcbiAgICAgIGRpcmVjdGlvbnMubGVmdCA9IHNjcm9sbExlZnQgPCB4LnZhbHVlO1xuICAgICAgZGlyZWN0aW9ucy5yaWdodCA9IHNjcm9sbExlZnQgPiB4LnZhbHVlO1xuICAgICAgYXJyaXZlZFN0YXRlLmxlZnQgPSBzY3JvbGxMZWZ0IDw9IDAgKyAob2Zmc2V0LmxlZnQgfHwgMCk7XG4gICAgICBhcnJpdmVkU3RhdGUucmlnaHQgPSBzY3JvbGxMZWZ0ICsgZXZlbnRUYXJnZXQuY2xpZW50V2lkdGggPj0gZXZlbnRUYXJnZXQuc2Nyb2xsV2lkdGggLSAob2Zmc2V0LnJpZ2h0IHx8IDApO1xuICAgICAgeC52YWx1ZSA9IHNjcm9sbExlZnQ7XG4gICAgICBsZXQgc2Nyb2xsVG9wID0gZXZlbnRUYXJnZXQuc2Nyb2xsVG9wO1xuICAgICAgaWYgKGUudGFyZ2V0ID09PSBkb2N1bWVudCAmJiAhc2Nyb2xsVG9wKVxuICAgICAgICBzY3JvbGxUb3AgPSBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcDtcbiAgICAgIGRpcmVjdGlvbnMudG9wID0gc2Nyb2xsVG9wIDwgeS52YWx1ZTtcbiAgICAgIGRpcmVjdGlvbnMuYm90dG9tID0gc2Nyb2xsVG9wID4geS52YWx1ZTtcbiAgICAgIGFycml2ZWRTdGF0ZS50b3AgPSBzY3JvbGxUb3AgPD0gMCArIChvZmZzZXQudG9wIHx8IDApO1xuICAgICAgYXJyaXZlZFN0YXRlLmJvdHRvbSA9IHNjcm9sbFRvcCArIGV2ZW50VGFyZ2V0LmNsaWVudEhlaWdodCA+PSBldmVudFRhcmdldC5zY3JvbGxIZWlnaHQgLSAob2Zmc2V0LmJvdHRvbSB8fCAwKTtcbiAgICAgIHkudmFsdWUgPSBzY3JvbGxUb3A7XG4gICAgICBpc1Njcm9sbGluZy52YWx1ZSA9IHRydWU7XG4gICAgICBvblNjcm9sbEVuZChlKTtcbiAgICAgIG9uU2Nyb2xsKGUpO1xuICAgIH07XG4gICAgdXNlRXZlbnRMaXN0ZW5lcihlbGVtZW50LCBcInNjcm9sbFwiLCB0aHJvdHRsZSA/IHNoYXJlZC51c2VUaHJvdHRsZUZuKG9uU2Nyb2xsSGFuZGxlciwgdGhyb3R0bGUpIDogb25TY3JvbGxIYW5kbGVyLCBldmVudExpc3RlbmVyT3B0aW9ucyk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHksXG4gICAgaXNTY3JvbGxpbmcsXG4gICAgYXJyaXZlZFN0YXRlLFxuICAgIGRpcmVjdGlvbnNcbiAgfTtcbn1cblxudmFyIF9fZGVmUHJvcCQ3ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmUHJvcHMkMiA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzO1xudmFyIF9fZ2V0T3duUHJvcERlc2NzJDIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycztcbnZhciBfX2dldE93blByb3BTeW1ib2xzJDggPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCQ4ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kOCA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJDcgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJDcob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJDcgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCQ4LmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkNyhhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkOClcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkOChiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSQ4LmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCQ3KGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xudmFyIF9fc3ByZWFkUHJvcHMkMiA9IChhLCBiKSA9PiBfX2RlZlByb3BzJDIoYSwgX19nZXRPd25Qcm9wRGVzY3MkMihiKSk7XG5mdW5jdGlvbiB1c2VJbmZpbml0ZVNjcm9sbChlbGVtZW50LCBvbkxvYWRNb3JlLCBvcHRpb25zID0ge30pIHtcbiAgdmFyIF9hLCBfYjtcbiAgY29uc3QgZGlyZWN0aW9uID0gKF9hID0gb3B0aW9ucy5kaXJlY3Rpb24pICE9IG51bGwgPyBfYSA6IFwiYm90dG9tXCI7XG4gIGNvbnN0IHN0YXRlID0gdnVlRGVtaS5yZWFjdGl2ZSh1c2VTY3JvbGwoZWxlbWVudCwgX19zcHJlYWRQcm9wcyQyKF9fc3ByZWFkVmFsdWVzJDcoe30sIG9wdGlvbnMpLCB7XG4gICAgb2Zmc2V0OiBfX3NwcmVhZFZhbHVlcyQ3KHtcbiAgICAgIFtkaXJlY3Rpb25dOiAoX2IgPSBvcHRpb25zLmRpc3RhbmNlKSAhPSBudWxsID8gX2IgOiAwXG4gICAgfSwgb3B0aW9ucy5vZmZzZXQpXG4gIH0pKSk7XG4gIHZ1ZURlbWkud2F0Y2goKCkgPT4gc3RhdGUuYXJyaXZlZFN0YXRlW2RpcmVjdGlvbl0sIGFzeW5jICh2KSA9PiB7XG4gICAgdmFyIF9hMiwgX2IyO1xuICAgIGlmICh2KSB7XG4gICAgICBjb25zdCBlbGVtID0gdnVlRGVtaS51bnJlZihlbGVtZW50KTtcbiAgICAgIGNvbnN0IHByZXZpb3VzID0ge1xuICAgICAgICBoZWlnaHQ6IChfYTIgPSBlbGVtID09IG51bGwgPyB2b2lkIDAgOiBlbGVtLnNjcm9sbEhlaWdodCkgIT0gbnVsbCA/IF9hMiA6IDAsXG4gICAgICAgIHdpZHRoOiAoX2IyID0gZWxlbSA9PSBudWxsID8gdm9pZCAwIDogZWxlbS5zY3JvbGxXaWR0aCkgIT0gbnVsbCA/IF9iMiA6IDBcbiAgICAgIH07XG4gICAgICBhd2FpdCBvbkxvYWRNb3JlKHN0YXRlKTtcbiAgICAgIGlmIChvcHRpb25zLnByZXNlcnZlU2Nyb2xsUG9zaXRpb24gJiYgZWxlbSkge1xuICAgICAgICB2dWVEZW1pLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICBlbGVtLnNjcm9sbFRvKHtcbiAgICAgICAgICAgIHRvcDogZWxlbS5zY3JvbGxIZWlnaHQgLSBwcmV2aW91cy5oZWlnaHQsXG4gICAgICAgICAgICBsZWZ0OiBlbGVtLnNjcm9sbFdpZHRoIC0gcHJldmlvdXMud2lkdGhcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gdXNlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIodGFyZ2V0LCBjYWxsYmFjaywgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICByb290LFxuICAgIHJvb3RNYXJnaW4gPSBcIjBweFwiLFxuICAgIHRocmVzaG9sZCA9IDAuMSxcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IHdpbmRvdyAmJiBcIkludGVyc2VjdGlvbk9ic2VydmVyXCIgaW4gd2luZG93O1xuICBsZXQgY2xlYW51cCA9IHNoYXJlZC5ub29wO1xuICBjb25zdCBzdG9wV2F0Y2ggPSBpc1N1cHBvcnRlZCA/IHZ1ZURlbWkud2F0Y2goKCkgPT4gKHtcbiAgICBlbDogdW5yZWZFbGVtZW50KHRhcmdldCksXG4gICAgcm9vdDogdW5yZWZFbGVtZW50KHJvb3QpXG4gIH0pLCAoeyBlbCwgcm9vdDogcm9vdDIgfSkgPT4ge1xuICAgIGNsZWFudXAoKTtcbiAgICBpZiAoIWVsKVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGNhbGxiYWNrLCB7XG4gICAgICByb290OiByb290MixcbiAgICAgIHJvb3RNYXJnaW4sXG4gICAgICB0aHJlc2hvbGRcbiAgICB9KTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKGVsKTtcbiAgICBjbGVhbnVwID0gKCkgPT4ge1xuICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgY2xlYW51cCA9IHNoYXJlZC5ub29wO1xuICAgIH07XG4gIH0sIHsgaW1tZWRpYXRlOiB0cnVlLCBmbHVzaDogXCJwb3N0XCIgfSkgOiBzaGFyZWQubm9vcDtcbiAgY29uc3Qgc3RvcCA9ICgpID0+IHtcbiAgICBjbGVhbnVwKCk7XG4gICAgc3RvcFdhdGNoKCk7XG4gIH07XG4gIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZShzdG9wKTtcbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBzdG9wXG4gIH07XG59XG5cbmNvbnN0IGRlZmF1bHRFdmVudHMgPSBbXCJtb3VzZWRvd25cIiwgXCJtb3VzZXVwXCIsIFwia2V5ZG93blwiLCBcImtleXVwXCJdO1xuZnVuY3Rpb24gdXNlS2V5TW9kaWZpZXIobW9kaWZpZXIsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgZXZlbnRzID0gZGVmYXVsdEV2ZW50cyxcbiAgICBkb2N1bWVudCA9IGRlZmF1bHREb2N1bWVudCxcbiAgICBpbml0aWFsID0gbnVsbFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3Qgc3RhdGUgPSB2dWVEZW1pLnJlZihpbml0aWFsKTtcbiAgaWYgKGRvY3VtZW50KSB7XG4gICAgZXZlbnRzLmZvckVhY2goKGxpc3RlbmVyRXZlbnQpID0+IHtcbiAgICAgIHVzZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsIGxpc3RlbmVyRXZlbnQsIChldnQpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBldnQuZ2V0TW9kaWZpZXJTdGF0ZSA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgIHN0YXRlLnZhbHVlID0gZXZ0LmdldE1vZGlmaWVyU3RhdGUobW9kaWZpZXIpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHN0YXRlO1xufVxuXG5mdW5jdGlvbiB1c2VMb2NhbFN0b3JhZ2Uoa2V5LCBpbml0aWFsVmFsdWUsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3cgfSA9IG9wdGlvbnM7XG4gIHJldHVybiB1c2VTdG9yYWdlKGtleSwgaW5pdGlhbFZhbHVlLCB3aW5kb3cgPT0gbnVsbCA/IHZvaWQgMCA6IHdpbmRvdy5sb2NhbFN0b3JhZ2UsIG9wdGlvbnMpO1xufVxuXG5jb25zdCBEZWZhdWx0TWFnaWNLZXlzQWxpYXNNYXAgPSB7XG4gIGN0cmw6IFwiY29udHJvbFwiLFxuICBjb21tYW5kOiBcIm1ldGFcIixcbiAgY21kOiBcIm1ldGFcIixcbiAgb3B0aW9uOiBcImFsdFwiLFxuICB1cDogXCJhcnJvd3VwXCIsXG4gIGRvd246IFwiYXJyb3dkb3duXCIsXG4gIGxlZnQ6IFwiYXJyb3dsZWZ0XCIsXG4gIHJpZ2h0OiBcImFycm93cmlnaHRcIlxufTtcblxuZnVuY3Rpb24gdXNlTWFnaWNLZXlzKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgcmVhY3RpdmU6IHVzZVJlYWN0aXZlID0gZmFsc2UsXG4gICAgdGFyZ2V0ID0gZGVmYXVsdFdpbmRvdyxcbiAgICBhbGlhc01hcCA9IERlZmF1bHRNYWdpY0tleXNBbGlhc01hcCxcbiAgICBwYXNzaXZlID0gdHJ1ZSxcbiAgICBvbkV2ZW50RmlyZWQgPSBzaGFyZWQubm9vcFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgY3VycmVudCA9IHZ1ZURlbWkucmVhY3RpdmUobmV3IFNldCgpKTtcbiAgY29uc3Qgb2JqID0geyB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9LCBjdXJyZW50IH07XG4gIGNvbnN0IHJlZnMgPSB1c2VSZWFjdGl2ZSA/IHZ1ZURlbWkucmVhY3RpdmUob2JqKSA6IG9iajtcbiAgY29uc3QgbWV0YURlcHMgPSBuZXcgU2V0KCk7XG4gIGNvbnN0IHVzZWRLZXlzID0gbmV3IFNldCgpO1xuICBmdW5jdGlvbiBzZXRSZWZzKGtleSwgdmFsdWUpIHtcbiAgICBpZiAoa2V5IGluIHJlZnMpIHtcbiAgICAgIGlmICh1c2VSZWFjdGl2ZSlcbiAgICAgICAgcmVmc1trZXldID0gdmFsdWU7XG4gICAgICBlbHNlXG4gICAgICAgIHJlZnNba2V5XS52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiByZXNldCgpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiB1c2VkS2V5cylcbiAgICAgIHNldFJlZnMoa2V5LCBmYWxzZSk7XG4gIH1cbiAgZnVuY3Rpb24gdXBkYXRlUmVmcyhlLCB2YWx1ZSkge1xuICAgIHZhciBfYSwgX2I7XG4gICAgY29uc3Qga2V5ID0gKF9hID0gZS5rZXkpID09IG51bGwgPyB2b2lkIDAgOiBfYS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGNvZGUgPSAoX2IgPSBlLmNvZGUpID09IG51bGwgPyB2b2lkIDAgOiBfYi50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IHZhbHVlcyA9IFtjb2RlLCBrZXldLmZpbHRlcihCb29sZWFuKTtcbiAgICBpZiAoY29kZSkge1xuICAgICAgaWYgKHZhbHVlKVxuICAgICAgICBjdXJyZW50LmFkZChlLmNvZGUpO1xuICAgICAgZWxzZVxuICAgICAgICBjdXJyZW50LmRlbGV0ZShlLmNvZGUpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleTIgb2YgdmFsdWVzKSB7XG4gICAgICB1c2VkS2V5cy5hZGQoa2V5Mik7XG4gICAgICBzZXRSZWZzKGtleTIsIHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGtleSA9PT0gXCJtZXRhXCIgJiYgIXZhbHVlKSB7XG4gICAgICBtZXRhRGVwcy5mb3JFYWNoKChrZXkyKSA9PiB7XG4gICAgICAgIGN1cnJlbnQuZGVsZXRlKGtleTIpO1xuICAgICAgICBzZXRSZWZzKGtleTIsIGZhbHNlKTtcbiAgICAgIH0pO1xuICAgICAgbWV0YURlcHMuY2xlYXIoKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlLmdldE1vZGlmaWVyU3RhdGUgPT09IFwiZnVuY3Rpb25cIiAmJiBlLmdldE1vZGlmaWVyU3RhdGUoXCJNZXRhXCIpICYmIHZhbHVlKSB7XG4gICAgICBbLi4uY3VycmVudCwgLi4udmFsdWVzXS5mb3JFYWNoKChrZXkyKSA9PiBtZXRhRGVwcy5hZGQoa2V5MikpO1xuICAgIH1cbiAgfVxuICBpZiAodGFyZ2V0KSB7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwia2V5ZG93blwiLCAoZSkgPT4ge1xuICAgICAgdXBkYXRlUmVmcyhlLCB0cnVlKTtcbiAgICAgIHJldHVybiBvbkV2ZW50RmlyZWQoZSk7XG4gICAgfSwgeyBwYXNzaXZlIH0pO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcImtleXVwXCIsIChlKSA9PiB7XG4gICAgICB1cGRhdGVSZWZzKGUsIGZhbHNlKTtcbiAgICAgIHJldHVybiBvbkV2ZW50RmlyZWQoZSk7XG4gICAgfSwgeyBwYXNzaXZlIH0pO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIoXCJibHVyXCIsIHJlc2V0LCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcihcImZvY3VzXCIsIHJlc2V0LCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gIH1cbiAgY29uc3QgcHJveHkgPSBuZXcgUHJveHkocmVmcywge1xuICAgIGdldCh0YXJnZXQyLCBwcm9wLCByZWMpIHtcbiAgICAgIGlmICh0eXBlb2YgcHJvcCAhPT0gXCJzdHJpbmdcIilcbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KHRhcmdldDIsIHByb3AsIHJlYyk7XG4gICAgICBwcm9wID0gcHJvcC50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKHByb3AgaW4gYWxpYXNNYXApXG4gICAgICAgIHByb3AgPSBhbGlhc01hcFtwcm9wXTtcbiAgICAgIGlmICghKHByb3AgaW4gcmVmcykpIHtcbiAgICAgICAgaWYgKC9bK18tXS8udGVzdChwcm9wKSkge1xuICAgICAgICAgIGNvbnN0IGtleXMgPSBwcm9wLnNwbGl0KC9bK18tXS9nKS5tYXAoKGkpID0+IGkudHJpbSgpKTtcbiAgICAgICAgICByZWZzW3Byb3BdID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBrZXlzLmV2ZXJ5KChrZXkpID0+IHZ1ZURlbWkudW5yZWYocHJveHlba2V5XSkpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWZzW3Byb3BdID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCByID0gUmVmbGVjdC5nZXQodGFyZ2V0MiwgcHJvcCwgcmVjKTtcbiAgICAgIHJldHVybiB1c2VSZWFjdGl2ZSA/IHZ1ZURlbWkudW5yZWYocikgOiByO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBwcm94eTtcbn1cblxudmFyIF9fZGVmUHJvcCQ2ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkNyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJDcgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSQ3ID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkNiA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkNihvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkNiA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJDcuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCQ2KGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyQ3KVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyQ3KGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJDcuY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJDYoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG5mdW5jdGlvbiB1c2luZ0VsUmVmKHNvdXJjZSwgY2IpIHtcbiAgaWYgKHZ1ZURlbWkudW5yZWYoc291cmNlKSlcbiAgICBjYih2dWVEZW1pLnVucmVmKHNvdXJjZSkpO1xufVxuZnVuY3Rpb24gdGltZVJhbmdlVG9BcnJheSh0aW1lUmFuZ2VzKSB7XG4gIGxldCByYW5nZXMgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aW1lUmFuZ2VzLmxlbmd0aDsgKytpKVxuICAgIHJhbmdlcyA9IFsuLi5yYW5nZXMsIFt0aW1lUmFuZ2VzLnN0YXJ0KGkpLCB0aW1lUmFuZ2VzLmVuZChpKV1dO1xuICByZXR1cm4gcmFuZ2VzO1xufVxuZnVuY3Rpb24gdHJhY2tzVG9BcnJheSh0cmFja3MpIHtcbiAgcmV0dXJuIEFycmF5LmZyb20odHJhY2tzKS5tYXAoKHsgbGFiZWwsIGtpbmQsIGxhbmd1YWdlLCBtb2RlLCBhY3RpdmVDdWVzLCBjdWVzLCBpbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlIH0sIGlkKSA9PiAoeyBpZCwgbGFiZWwsIGtpbmQsIGxhbmd1YWdlLCBtb2RlLCBhY3RpdmVDdWVzLCBjdWVzLCBpbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlIH0pKTtcbn1cbmNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICBzcmM6IFwiXCIsXG4gIHRyYWNrczogW11cbn07XG5mdW5jdGlvbiB1c2VNZWRpYUNvbnRyb2xzKHRhcmdldCwgb3B0aW9ucyA9IHt9KSB7XG4gIG9wdGlvbnMgPSBfX3NwcmVhZFZhbHVlcyQ2KF9fc3ByZWFkVmFsdWVzJDYoe30sIGRlZmF1bHRPcHRpb25zKSwgb3B0aW9ucyk7XG4gIGNvbnN0IHtcbiAgICBkb2N1bWVudCA9IGRlZmF1bHREb2N1bWVudFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgY3VycmVudFRpbWUgPSB2dWVEZW1pLnJlZigwKTtcbiAgY29uc3QgZHVyYXRpb24gPSB2dWVEZW1pLnJlZigwKTtcbiAgY29uc3Qgc2Vla2luZyA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3Qgdm9sdW1lID0gdnVlRGVtaS5yZWYoMSk7XG4gIGNvbnN0IHdhaXRpbmcgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IGVuZGVkID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBwbGF5aW5nID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCByYXRlID0gdnVlRGVtaS5yZWYoMSk7XG4gIGNvbnN0IHN0YWxsZWQgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IGJ1ZmZlcmVkID0gdnVlRGVtaS5yZWYoW10pO1xuICBjb25zdCB0cmFja3MgPSB2dWVEZW1pLnJlZihbXSk7XG4gIGNvbnN0IHNlbGVjdGVkVHJhY2sgPSB2dWVEZW1pLnJlZigtMSk7XG4gIGNvbnN0IGlzUGljdHVyZUluUGljdHVyZSA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgbXV0ZWQgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSA9IGRvY3VtZW50ICYmIFwicGljdHVyZUluUGljdHVyZUVuYWJsZWRcIiBpbiBkb2N1bWVudDtcbiAgY29uc3Qgc291cmNlRXJyb3JFdmVudCA9IHNoYXJlZC5jcmVhdGVFdmVudEhvb2soKTtcbiAgY29uc3QgZGlzYWJsZVRyYWNrID0gKHRyYWNrKSA9PiB7XG4gICAgdXNpbmdFbFJlZih0YXJnZXQsIChlbCkgPT4ge1xuICAgICAgaWYgKHRyYWNrKSB7XG4gICAgICAgIGNvbnN0IGlkID0gc2hhcmVkLmlzTnVtYmVyKHRyYWNrKSA/IHRyYWNrIDogdHJhY2suaWQ7XG4gICAgICAgIGVsLnRleHRUcmFja3NbaWRdLm1vZGUgPSBcImRpc2FibGVkXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsLnRleHRUcmFja3MubGVuZ3RoOyArK2kpXG4gICAgICAgICAgZWwudGV4dFRyYWNrc1tpXS5tb2RlID0gXCJkaXNhYmxlZFwiO1xuICAgICAgfVxuICAgICAgc2VsZWN0ZWRUcmFjay52YWx1ZSA9IC0xO1xuICAgIH0pO1xuICB9O1xuICBjb25zdCBlbmFibGVUcmFjayA9ICh0cmFjaywgZGlzYWJsZVRyYWNrcyA9IHRydWUpID0+IHtcbiAgICB1c2luZ0VsUmVmKHRhcmdldCwgKGVsKSA9PiB7XG4gICAgICBjb25zdCBpZCA9IHNoYXJlZC5pc051bWJlcih0cmFjaykgPyB0cmFjayA6IHRyYWNrLmlkO1xuICAgICAgaWYgKGRpc2FibGVUcmFja3MpXG4gICAgICAgIGRpc2FibGVUcmFjaygpO1xuICAgICAgZWwudGV4dFRyYWNrc1tpZF0ubW9kZSA9IFwic2hvd2luZ1wiO1xuICAgICAgc2VsZWN0ZWRUcmFjay52YWx1ZSA9IGlkO1xuICAgIH0pO1xuICB9O1xuICBjb25zdCB0b2dnbGVQaWN0dXJlSW5QaWN0dXJlID0gKCkgPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB1c2luZ0VsUmVmKHRhcmdldCwgYXN5bmMgKGVsKSA9PiB7XG4gICAgICAgIGlmIChzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUpIHtcbiAgICAgICAgICBpZiAoIWlzUGljdHVyZUluUGljdHVyZS52YWx1ZSkge1xuICAgICAgICAgICAgZWwucmVxdWVzdFBpY3R1cmVJblBpY3R1cmUoKS50aGVuKHJlc29sdmUpLmNhdGNoKHJlamVjdCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmV4aXRQaWN0dXJlSW5QaWN0dXJlKCkudGhlbihyZXNvbHZlKS5jYXRjaChyZWplY3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG4gIHZ1ZURlbWkud2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZG9jdW1lbnQpXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgZWwgPSB2dWVEZW1pLnVucmVmKHRhcmdldCk7XG4gICAgaWYgKCFlbClcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBzcmMgPSB2dWVEZW1pLnVucmVmKG9wdGlvbnMuc3JjKTtcbiAgICBsZXQgc291cmNlcyA9IFtdO1xuICAgIGlmICghc3JjKVxuICAgICAgcmV0dXJuO1xuICAgIGlmIChzaGFyZWQuaXNTdHJpbmcoc3JjKSlcbiAgICAgIHNvdXJjZXMgPSBbeyBzcmMgfV07XG4gICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShzcmMpKVxuICAgICAgc291cmNlcyA9IHNyYztcbiAgICBlbHNlIGlmIChzaGFyZWQuaXNPYmplY3Qoc3JjKSlcbiAgICAgIHNvdXJjZXMgPSBbc3JjXTtcbiAgICBlbC5xdWVyeVNlbGVjdG9yQWxsKFwic291cmNlXCIpLmZvckVhY2goKGUpID0+IHtcbiAgICAgIGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsIHNvdXJjZUVycm9yRXZlbnQudHJpZ2dlcik7XG4gICAgICBlLnJlbW92ZSgpO1xuICAgIH0pO1xuICAgIHNvdXJjZXMuZm9yRWFjaCgoeyBzcmM6IHNyYzIsIHR5cGUgfSkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNvdXJjZVwiKTtcbiAgICAgIHNvdXJjZS5zZXRBdHRyaWJ1dGUoXCJzcmNcIiwgc3JjMik7XG4gICAgICBzb3VyY2Uuc2V0QXR0cmlidXRlKFwidHlwZVwiLCB0eXBlIHx8IFwiXCIpO1xuICAgICAgc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCBzb3VyY2VFcnJvckV2ZW50LnRyaWdnZXIpO1xuICAgICAgZWwuYXBwZW5kQ2hpbGQoc291cmNlKTtcbiAgICB9KTtcbiAgICBlbC5sb2FkKCk7XG4gIH0pO1xuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UoKCkgPT4ge1xuICAgIGNvbnN0IGVsID0gdnVlRGVtaS51bnJlZih0YXJnZXQpO1xuICAgIGlmICghZWwpXG4gICAgICByZXR1cm47XG4gICAgZWwucXVlcnlTZWxlY3RvckFsbChcInNvdXJjZVwiKS5mb3JFYWNoKChlKSA9PiBlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCBzb3VyY2VFcnJvckV2ZW50LnRyaWdnZXIpKTtcbiAgfSk7XG4gIHZ1ZURlbWkud2F0Y2godm9sdW1lLCAodm9sKSA9PiB7XG4gICAgY29uc3QgZWwgPSB2dWVEZW1pLnVucmVmKHRhcmdldCk7XG4gICAgaWYgKCFlbClcbiAgICAgIHJldHVybjtcbiAgICBlbC52b2x1bWUgPSB2b2w7XG4gIH0pO1xuICB2dWVEZW1pLndhdGNoKG11dGVkLCAobXV0ZSkgPT4ge1xuICAgIGNvbnN0IGVsID0gdnVlRGVtaS51bnJlZih0YXJnZXQpO1xuICAgIGlmICghZWwpXG4gICAgICByZXR1cm47XG4gICAgZWwubXV0ZWQgPSBtdXRlO1xuICB9KTtcbiAgdnVlRGVtaS53YXRjaChyYXRlLCAocmF0ZTIpID0+IHtcbiAgICBjb25zdCBlbCA9IHZ1ZURlbWkudW5yZWYodGFyZ2V0KTtcbiAgICBpZiAoIWVsKVxuICAgICAgcmV0dXJuO1xuICAgIGVsLnBsYXliYWNrUmF0ZSA9IHJhdGUyO1xuICB9KTtcbiAgdnVlRGVtaS53YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFkb2N1bWVudClcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCB0ZXh0VHJhY2tzID0gdnVlRGVtaS51bnJlZihvcHRpb25zLnRyYWNrcyk7XG4gICAgY29uc3QgZWwgPSB2dWVEZW1pLnVucmVmKHRhcmdldCk7XG4gICAgaWYgKCF0ZXh0VHJhY2tzIHx8ICF0ZXh0VHJhY2tzLmxlbmd0aCB8fCAhZWwpXG4gICAgICByZXR1cm47XG4gICAgZWwucXVlcnlTZWxlY3RvckFsbChcInRyYWNrXCIpLmZvckVhY2goKGUpID0+IGUucmVtb3ZlKCkpO1xuICAgIHRleHRUcmFja3MuZm9yRWFjaCgoeyBkZWZhdWx0OiBpc0RlZmF1bHQsIGtpbmQsIGxhYmVsLCBzcmMsIHNyY0xhbmcgfSwgaSkgPT4ge1xuICAgICAgY29uc3QgdHJhY2sgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidHJhY2tcIik7XG4gICAgICB0cmFjay5kZWZhdWx0ID0gaXNEZWZhdWx0IHx8IGZhbHNlO1xuICAgICAgdHJhY2sua2luZCA9IGtpbmQ7XG4gICAgICB0cmFjay5sYWJlbCA9IGxhYmVsO1xuICAgICAgdHJhY2suc3JjID0gc3JjO1xuICAgICAgdHJhY2suc3JjbGFuZyA9IHNyY0xhbmc7XG4gICAgICBpZiAodHJhY2suZGVmYXVsdClcbiAgICAgICAgc2VsZWN0ZWRUcmFjay52YWx1ZSA9IGk7XG4gICAgICBlbC5hcHBlbmRDaGlsZCh0cmFjayk7XG4gICAgfSk7XG4gIH0pO1xuICBjb25zdCB7IGlnbm9yZVVwZGF0ZXM6IGlnbm9yZUN1cnJlbnRUaW1lVXBkYXRlcyB9ID0gc2hhcmVkLndhdGNoSWdub3JhYmxlKGN1cnJlbnRUaW1lLCAodGltZSkgPT4ge1xuICAgIGNvbnN0IGVsID0gdnVlRGVtaS51bnJlZih0YXJnZXQpO1xuICAgIGlmICghZWwpXG4gICAgICByZXR1cm47XG4gICAgZWwuY3VycmVudFRpbWUgPSB0aW1lO1xuICB9KTtcbiAgY29uc3QgeyBpZ25vcmVVcGRhdGVzOiBpZ25vcmVQbGF5aW5nVXBkYXRlcyB9ID0gc2hhcmVkLndhdGNoSWdub3JhYmxlKHBsYXlpbmcsIChpc1BsYXlpbmcpID0+IHtcbiAgICBjb25zdCBlbCA9IHZ1ZURlbWkudW5yZWYodGFyZ2V0KTtcbiAgICBpZiAoIWVsKVxuICAgICAgcmV0dXJuO1xuICAgIGlzUGxheWluZyA/IGVsLnBsYXkoKSA6IGVsLnBhdXNlKCk7XG4gIH0pO1xuICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJ0aW1ldXBkYXRlXCIsICgpID0+IGlnbm9yZUN1cnJlbnRUaW1lVXBkYXRlcygoKSA9PiBjdXJyZW50VGltZS52YWx1ZSA9IHZ1ZURlbWkudW5yZWYodGFyZ2V0KS5jdXJyZW50VGltZSkpO1xuICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJkdXJhdGlvbmNoYW5nZVwiLCAoKSA9PiBkdXJhdGlvbi52YWx1ZSA9IHZ1ZURlbWkudW5yZWYodGFyZ2V0KS5kdXJhdGlvbik7XG4gIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInByb2dyZXNzXCIsICgpID0+IGJ1ZmZlcmVkLnZhbHVlID0gdGltZVJhbmdlVG9BcnJheSh2dWVEZW1pLnVucmVmKHRhcmdldCkuYnVmZmVyZWQpKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwic2Vla2luZ1wiLCAoKSA9PiBzZWVraW5nLnZhbHVlID0gdHJ1ZSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInNlZWtlZFwiLCAoKSA9PiBzZWVraW5nLnZhbHVlID0gZmFsc2UpO1xuICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJ3YWl0aW5nXCIsICgpID0+IHdhaXRpbmcudmFsdWUgPSB0cnVlKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwicGxheWluZ1wiLCAoKSA9PiB3YWl0aW5nLnZhbHVlID0gZmFsc2UpO1xuICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJyYXRlY2hhbmdlXCIsICgpID0+IHJhdGUudmFsdWUgPSB2dWVEZW1pLnVucmVmKHRhcmdldCkucGxheWJhY2tSYXRlKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwic3RhbGxlZFwiLCAoKSA9PiBzdGFsbGVkLnZhbHVlID0gdHJ1ZSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcImVuZGVkXCIsICgpID0+IGVuZGVkLnZhbHVlID0gdHJ1ZSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInBhdXNlXCIsICgpID0+IGlnbm9yZVBsYXlpbmdVcGRhdGVzKCgpID0+IHBsYXlpbmcudmFsdWUgPSBmYWxzZSkpO1xuICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJwbGF5XCIsICgpID0+IGlnbm9yZVBsYXlpbmdVcGRhdGVzKCgpID0+IHBsYXlpbmcudmFsdWUgPSB0cnVlKSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcImVudGVycGljdHVyZWlucGljdHVyZVwiLCAoKSA9PiBpc1BpY3R1cmVJblBpY3R1cmUudmFsdWUgPSB0cnVlKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwibGVhdmVwaWN0dXJlaW5waWN0dXJlXCIsICgpID0+IGlzUGljdHVyZUluUGljdHVyZS52YWx1ZSA9IGZhbHNlKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwidm9sdW1lY2hhbmdlXCIsICgpID0+IHtcbiAgICBjb25zdCBlbCA9IHZ1ZURlbWkudW5yZWYodGFyZ2V0KTtcbiAgICBpZiAoIWVsKVxuICAgICAgcmV0dXJuO1xuICAgIHZvbHVtZS52YWx1ZSA9IGVsLnZvbHVtZTtcbiAgICBtdXRlZC52YWx1ZSA9IGVsLm11dGVkO1xuICB9KTtcbiAgY29uc3QgbGlzdGVuZXJzID0gW107XG4gIGNvbnN0IHN0b3AgPSB2dWVEZW1pLndhdGNoKFt0YXJnZXRdLCAoKSA9PiB7XG4gICAgY29uc3QgZWwgPSB2dWVEZW1pLnVucmVmKHRhcmdldCk7XG4gICAgaWYgKCFlbClcbiAgICAgIHJldHVybjtcbiAgICBzdG9wKCk7XG4gICAgbGlzdGVuZXJzWzBdID0gdXNlRXZlbnRMaXN0ZW5lcihlbC50ZXh0VHJhY2tzLCBcImFkZHRyYWNrXCIsICgpID0+IHRyYWNrcy52YWx1ZSA9IHRyYWNrc1RvQXJyYXkoZWwudGV4dFRyYWNrcykpO1xuICAgIGxpc3RlbmVyc1sxXSA9IHVzZUV2ZW50TGlzdGVuZXIoZWwudGV4dFRyYWNrcywgXCJyZW1vdmV0cmFja1wiLCAoKSA9PiB0cmFja3MudmFsdWUgPSB0cmFja3NUb0FycmF5KGVsLnRleHRUcmFja3MpKTtcbiAgICBsaXN0ZW5lcnNbMl0gPSB1c2VFdmVudExpc3RlbmVyKGVsLnRleHRUcmFja3MsIFwiY2hhbmdlXCIsICgpID0+IHRyYWNrcy52YWx1ZSA9IHRyYWNrc1RvQXJyYXkoZWwudGV4dFRyYWNrcykpO1xuICB9KTtcbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKCgpID0+IGxpc3RlbmVycy5mb3JFYWNoKChsaXN0ZW5lcikgPT4gbGlzdGVuZXIoKSkpO1xuICByZXR1cm4ge1xuICAgIGN1cnJlbnRUaW1lLFxuICAgIGR1cmF0aW9uLFxuICAgIHdhaXRpbmcsXG4gICAgc2Vla2luZyxcbiAgICBlbmRlZCxcbiAgICBzdGFsbGVkLFxuICAgIGJ1ZmZlcmVkLFxuICAgIHBsYXlpbmcsXG4gICAgcmF0ZSxcbiAgICB2b2x1bWUsXG4gICAgbXV0ZWQsXG4gICAgdHJhY2tzLFxuICAgIHNlbGVjdGVkVHJhY2ssXG4gICAgZW5hYmxlVHJhY2ssXG4gICAgZGlzYWJsZVRyYWNrLFxuICAgIHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSxcbiAgICB0b2dnbGVQaWN0dXJlSW5QaWN0dXJlLFxuICAgIGlzUGljdHVyZUluUGljdHVyZSxcbiAgICBvblNvdXJjZUVycm9yOiBzb3VyY2VFcnJvckV2ZW50Lm9uXG4gIH07XG59XG5cbmNvbnN0IGdldE1hcFZ1ZTJDb21wYXQgPSAoKSA9PiB7XG4gIGNvbnN0IGRhdGEgPSB2dWVEZW1pLnJlYWN0aXZlKHt9KTtcbiAgcmV0dXJuIHtcbiAgICBnZXQ6IChrZXkpID0+IGRhdGFba2V5XSxcbiAgICBzZXQ6IChrZXksIHZhbHVlKSA9PiB2dWVEZW1pLnNldChkYXRhLCBrZXksIHZhbHVlKSxcbiAgICBoYXM6IChrZXkpID0+IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpLFxuICAgIGRlbGV0ZTogKGtleSkgPT4gdnVlRGVtaS5kZWwoZGF0YSwga2V5KSxcbiAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIHZ1ZURlbWkuZGVsKGRhdGEsIGtleSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG59O1xuZnVuY3Rpb24gdXNlTWVtb2l6ZShyZXNvbHZlciwgb3B0aW9ucykge1xuICBjb25zdCBpbml0Q2FjaGUgPSAoKSA9PiB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuY2FjaGUpXG4gICAgICByZXR1cm4gdnVlRGVtaS5yZWFjdGl2ZShvcHRpb25zLmNhY2hlKTtcbiAgICBpZiAodnVlRGVtaS5pc1Z1ZTIpXG4gICAgICByZXR1cm4gZ2V0TWFwVnVlMkNvbXBhdCgpO1xuICAgIHJldHVybiB2dWVEZW1pLnJlYWN0aXZlKG5ldyBNYXAoKSk7XG4gIH07XG4gIGNvbnN0IGNhY2hlID0gaW5pdENhY2hlKCk7XG4gIGNvbnN0IGdlbmVyYXRlS2V5ID0gKC4uLmFyZ3MpID0+IChvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLmdldEtleSkgPyBvcHRpb25zLmdldEtleSguLi5hcmdzKSA6IEpTT04uc3RyaW5naWZ5KGFyZ3MpO1xuICBjb25zdCBfbG9hZERhdGEgPSAoa2V5LCAuLi5hcmdzKSA9PiB7XG4gICAgY2FjaGUuc2V0KGtleSwgcmVzb2x2ZXIoLi4uYXJncykpO1xuICAgIHJldHVybiBjYWNoZS5nZXQoa2V5KTtcbiAgfTtcbiAgY29uc3QgbG9hZERhdGEgPSAoLi4uYXJncykgPT4gX2xvYWREYXRhKGdlbmVyYXRlS2V5KC4uLmFyZ3MpLCAuLi5hcmdzKTtcbiAgY29uc3QgZGVsZXRlRGF0YSA9ICguLi5hcmdzKSA9PiB7XG4gICAgY2FjaGUuZGVsZXRlKGdlbmVyYXRlS2V5KC4uLmFyZ3MpKTtcbiAgfTtcbiAgY29uc3QgY2xlYXJEYXRhID0gKCkgPT4ge1xuICAgIGNhY2hlLmNsZWFyKCk7XG4gIH07XG4gIGNvbnN0IG1lbW9pemVkID0gKC4uLmFyZ3MpID0+IHtcbiAgICBjb25zdCBrZXkgPSBnZW5lcmF0ZUtleSguLi5hcmdzKTtcbiAgICBpZiAoY2FjaGUuaGFzKGtleSkpXG4gICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gICAgcmV0dXJuIF9sb2FkRGF0YShrZXksIC4uLmFyZ3MpO1xuICB9O1xuICBtZW1vaXplZC5sb2FkID0gbG9hZERhdGE7XG4gIG1lbW9pemVkLmRlbGV0ZSA9IGRlbGV0ZURhdGE7XG4gIG1lbW9pemVkLmNsZWFyID0gY2xlYXJEYXRhO1xuICBtZW1vaXplZC5nZW5lcmF0ZUtleSA9IGdlbmVyYXRlS2V5O1xuICBtZW1vaXplZC5jYWNoZSA9IGNhY2hlO1xuICByZXR1cm4gbWVtb2l6ZWQ7XG59XG5cbmZ1bmN0aW9uIHVzZU1lbW9yeShvcHRpb25zID0ge30pIHtcbiAgY29uc3QgbWVtb3J5ID0gdnVlRGVtaS5yZWYoKTtcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSB0eXBlb2YgcGVyZm9ybWFuY2UgIT09IFwidW5kZWZpbmVkXCIgJiYgXCJtZW1vcnlcIiBpbiBwZXJmb3JtYW5jZTtcbiAgaWYgKGlzU3VwcG9ydGVkKSB7XG4gICAgY29uc3QgeyBpbnRlcnZhbCA9IDFlMyB9ID0gb3B0aW9ucztcbiAgICBzaGFyZWQudXNlSW50ZXJ2YWxGbigoKSA9PiB7XG4gICAgICBtZW1vcnkudmFsdWUgPSBwZXJmb3JtYW5jZS5tZW1vcnk7XG4gICAgfSwgaW50ZXJ2YWwsIHsgaW1tZWRpYXRlOiBvcHRpb25zLmltbWVkaWF0ZSwgaW1tZWRpYXRlQ2FsbGJhY2s6IG9wdGlvbnMuaW1tZWRpYXRlQ2FsbGJhY2sgfSk7XG4gIH1cbiAgcmV0dXJuIHsgaXNTdXBwb3J0ZWQsIG1lbW9yeSB9O1xufVxuXG5mdW5jdGlvbiB1c2VNb3VudGVkKCkge1xuICBjb25zdCBpc01vdW50ZWQgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIHZ1ZURlbWkub25Nb3VudGVkKCgpID0+IHtcbiAgICBpc01vdW50ZWQudmFsdWUgPSB0cnVlO1xuICB9KTtcbiAgcmV0dXJuIGlzTW91bnRlZDtcbn1cblxuZnVuY3Rpb24gdXNlTW91c2Uob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB0eXBlID0gXCJwYWdlXCIsXG4gICAgdG91Y2ggPSB0cnVlLFxuICAgIHJlc2V0T25Ub3VjaEVuZHMgPSBmYWxzZSxcbiAgICBpbml0aWFsVmFsdWUgPSB7IHg6IDAsIHk6IDAgfSxcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93LFxuICAgIGV2ZW50RmlsdGVyXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCB4ID0gdnVlRGVtaS5yZWYoaW5pdGlhbFZhbHVlLngpO1xuICBjb25zdCB5ID0gdnVlRGVtaS5yZWYoaW5pdGlhbFZhbHVlLnkpO1xuICBjb25zdCBzb3VyY2VUeXBlID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGNvbnN0IG1vdXNlSGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGlmICh0eXBlID09PSBcInBhZ2VcIikge1xuICAgICAgeC52YWx1ZSA9IGV2ZW50LnBhZ2VYO1xuICAgICAgeS52YWx1ZSA9IGV2ZW50LnBhZ2VZO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJjbGllbnRcIikge1xuICAgICAgeC52YWx1ZSA9IGV2ZW50LmNsaWVudFg7XG4gICAgICB5LnZhbHVlID0gZXZlbnQuY2xpZW50WTtcbiAgICB9XG4gICAgc291cmNlVHlwZS52YWx1ZSA9IFwibW91c2VcIjtcbiAgfTtcbiAgY29uc3QgcmVzZXQgPSAoKSA9PiB7XG4gICAgeC52YWx1ZSA9IGluaXRpYWxWYWx1ZS54O1xuICAgIHkudmFsdWUgPSBpbml0aWFsVmFsdWUueTtcbiAgfTtcbiAgY29uc3QgdG91Y2hIYW5kbGVyID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50LnRvdWNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgdG91Y2gyID0gZXZlbnQudG91Y2hlc1swXTtcbiAgICAgIGlmICh0eXBlID09PSBcInBhZ2VcIikge1xuICAgICAgICB4LnZhbHVlID0gdG91Y2gyLnBhZ2VYO1xuICAgICAgICB5LnZhbHVlID0gdG91Y2gyLnBhZ2VZO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBcImNsaWVudFwiKSB7XG4gICAgICAgIHgudmFsdWUgPSB0b3VjaDIuY2xpZW50WDtcbiAgICAgICAgeS52YWx1ZSA9IHRvdWNoMi5jbGllbnRZO1xuICAgICAgfVxuICAgICAgc291cmNlVHlwZS52YWx1ZSA9IFwidG91Y2hcIjtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG1vdXNlSGFuZGxlcldyYXBwZXIgPSAoZXZlbnQpID0+IHtcbiAgICByZXR1cm4gZXZlbnRGaWx0ZXIgPT09IHZvaWQgMCA/IG1vdXNlSGFuZGxlcihldmVudCkgOiBldmVudEZpbHRlcigoKSA9PiBtb3VzZUhhbmRsZXIoZXZlbnQpLCB7fSk7XG4gIH07XG4gIGNvbnN0IHRvdWNoSGFuZGxlcldyYXBwZXIgPSAoZXZlbnQpID0+IHtcbiAgICByZXR1cm4gZXZlbnRGaWx0ZXIgPT09IHZvaWQgMCA/IHRvdWNoSGFuZGxlcihldmVudCkgOiBldmVudEZpbHRlcigoKSA9PiB0b3VjaEhhbmRsZXIoZXZlbnQpLCB7fSk7XG4gIH07XG4gIGlmICh3aW5kb3cpIHtcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJtb3VzZW1vdmVcIiwgbW91c2VIYW5kbGVyV3JhcHBlciwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcImRyYWdvdmVyXCIsIG1vdXNlSGFuZGxlcldyYXBwZXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICBpZiAodG91Y2gpIHtcbiAgICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcInRvdWNoc3RhcnRcIiwgdG91Y2hIYW5kbGVyV3JhcHBlciwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwidG91Y2htb3ZlXCIsIHRvdWNoSGFuZGxlcldyYXBwZXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIGlmIChyZXNldE9uVG91Y2hFbmRzKVxuICAgICAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJ0b3VjaGVuZFwiLCByZXNldCwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeSxcbiAgICBzb3VyY2VUeXBlXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZU1vdXNlSW5FbGVtZW50KHRhcmdldCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBoYW5kbGVPdXRzaWRlID0gdHJ1ZSxcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCB7IHgsIHksIHNvdXJjZVR5cGUgfSA9IHVzZU1vdXNlKG9wdGlvbnMpO1xuICBjb25zdCB0YXJnZXRSZWYgPSB2dWVEZW1pLnJlZih0YXJnZXQgIT0gbnVsbCA/IHRhcmdldCA6IHdpbmRvdyA9PSBudWxsID8gdm9pZCAwIDogd2luZG93LmRvY3VtZW50LmJvZHkpO1xuICBjb25zdCBlbGVtZW50WCA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCBlbGVtZW50WSA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCBlbGVtZW50UG9zaXRpb25YID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IGVsZW1lbnRQb3NpdGlvblkgPSB2dWVEZW1pLnJlZigwKTtcbiAgY29uc3QgZWxlbWVudEhlaWdodCA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCBlbGVtZW50V2lkdGggPSB2dWVEZW1pLnJlZigwKTtcbiAgY29uc3QgaXNPdXRzaWRlID0gdnVlRGVtaS5yZWYodHJ1ZSk7XG4gIGxldCBzdG9wID0gKCkgPT4ge1xuICB9O1xuICBpZiAod2luZG93KSB7XG4gICAgc3RvcCA9IHZ1ZURlbWkud2F0Y2goW3RhcmdldFJlZiwgeCwgeV0sICgpID0+IHtcbiAgICAgIGNvbnN0IGVsID0gdW5yZWZFbGVtZW50KHRhcmdldFJlZik7XG4gICAgICBpZiAoIWVsKVxuICAgICAgICByZXR1cm47XG4gICAgICBjb25zdCB7XG4gICAgICAgIGxlZnQsXG4gICAgICAgIHRvcCxcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodFxuICAgICAgfSA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgZWxlbWVudFBvc2l0aW9uWC52YWx1ZSA9IGxlZnQgKyB3aW5kb3cucGFnZVhPZmZzZXQ7XG4gICAgICBlbGVtZW50UG9zaXRpb25ZLnZhbHVlID0gdG9wICsgd2luZG93LnBhZ2VZT2Zmc2V0O1xuICAgICAgZWxlbWVudEhlaWdodC52YWx1ZSA9IGhlaWdodDtcbiAgICAgIGVsZW1lbnRXaWR0aC52YWx1ZSA9IHdpZHRoO1xuICAgICAgY29uc3QgZWxYID0geC52YWx1ZSAtIGVsZW1lbnRQb3NpdGlvblgudmFsdWU7XG4gICAgICBjb25zdCBlbFkgPSB5LnZhbHVlIC0gZWxlbWVudFBvc2l0aW9uWS52YWx1ZTtcbiAgICAgIGlzT3V0c2lkZS52YWx1ZSA9IHdpZHRoID09PSAwIHx8IGhlaWdodCA9PT0gMCB8fCBlbFggPCAwIHx8IGVsWSA8IDAgfHwgZWxYID4gd2lkdGggfHwgZWxZID4gaGVpZ2h0O1xuICAgICAgaWYgKGhhbmRsZU91dHNpZGUgfHwgIWlzT3V0c2lkZS52YWx1ZSkge1xuICAgICAgICBlbGVtZW50WC52YWx1ZSA9IGVsWDtcbiAgICAgICAgZWxlbWVudFkudmFsdWUgPSBlbFk7XG4gICAgICB9XG4gICAgfSwgeyBpbW1lZGlhdGU6IHRydWUgfSk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHksXG4gICAgc291cmNlVHlwZSxcbiAgICBlbGVtZW50WCxcbiAgICBlbGVtZW50WSxcbiAgICBlbGVtZW50UG9zaXRpb25YLFxuICAgIGVsZW1lbnRQb3NpdGlvblksXG4gICAgZWxlbWVudEhlaWdodCxcbiAgICBlbGVtZW50V2lkdGgsXG4gICAgaXNPdXRzaWRlLFxuICAgIHN0b3BcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlTW91c2VQcmVzc2VkKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdG91Y2ggPSB0cnVlLFxuICAgIGRyYWcgPSB0cnVlLFxuICAgIGluaXRpYWxWYWx1ZSA9IGZhbHNlLFxuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3dcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHByZXNzZWQgPSB2dWVEZW1pLnJlZihpbml0aWFsVmFsdWUpO1xuICBjb25zdCBzb3VyY2VUeXBlID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGlmICghd2luZG93KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByZXNzZWQsXG4gICAgICBzb3VyY2VUeXBlXG4gICAgfTtcbiAgfVxuICBjb25zdCBvblByZXNzZWQgPSAoc3JjVHlwZSkgPT4gKCkgPT4ge1xuICAgIHByZXNzZWQudmFsdWUgPSB0cnVlO1xuICAgIHNvdXJjZVR5cGUudmFsdWUgPSBzcmNUeXBlO1xuICB9O1xuICBjb25zdCBvblJlbGVhc2VkID0gKCkgPT4ge1xuICAgIHByZXNzZWQudmFsdWUgPSBmYWxzZTtcbiAgICBzb3VyY2VUeXBlLnZhbHVlID0gbnVsbDtcbiAgfTtcbiAgY29uc3QgdGFyZ2V0ID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB1bnJlZkVsZW1lbnQob3B0aW9ucy50YXJnZXQpIHx8IHdpbmRvdyk7XG4gIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcIm1vdXNlZG93blwiLCBvblByZXNzZWQoXCJtb3VzZVwiKSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJtb3VzZWxlYXZlXCIsIG9uUmVsZWFzZWQsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwibW91c2V1cFwiLCBvblJlbGVhc2VkLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gIGlmIChkcmFnKSB7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwiZHJhZ3N0YXJ0XCIsIG9uUHJlc3NlZChcIm1vdXNlXCIpLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwiZHJvcFwiLCBvblJlbGVhc2VkLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwiZHJhZ2VuZFwiLCBvblJlbGVhc2VkLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gIH1cbiAgaWYgKHRvdWNoKSB7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwidG91Y2hzdGFydFwiLCBvblByZXNzZWQoXCJ0b3VjaFwiKSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcInRvdWNoZW5kXCIsIG9uUmVsZWFzZWQsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJ0b3VjaGNhbmNlbFwiLCBvblJlbGVhc2VkLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBwcmVzc2VkLFxuICAgIHNvdXJjZVR5cGVcbiAgfTtcbn1cblxudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkNiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJDYgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSQ2ID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX29ialJlc3QkMSA9IChzb3VyY2UsIGV4Y2x1ZGUpID0+IHtcbiAgdmFyIHRhcmdldCA9IHt9O1xuICBmb3IgKHZhciBwcm9wIGluIHNvdXJjZSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJDYuY2FsbChzb3VyY2UsIHByb3ApICYmIGV4Y2x1ZGUuaW5kZXhPZihwcm9wKSA8IDApXG4gICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gIGlmIChzb3VyY2UgIT0gbnVsbCAmJiBfX2dldE93blByb3BTeW1ib2xzJDYpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJDYoc291cmNlKSkge1xuICAgICAgaWYgKGV4Y2x1ZGUuaW5kZXhPZihwcm9wKSA8IDAgJiYgX19wcm9wSXNFbnVtJDYuY2FsbChzb3VyY2UsIHByb3ApKVxuICAgICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gICAgfVxuICByZXR1cm4gdGFyZ2V0O1xufTtcbmZ1bmN0aW9uIHVzZU11dGF0aW9uT2JzZXJ2ZXIodGFyZ2V0LCBjYWxsYmFjaywgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IF9hID0gb3B0aW9ucywgeyB3aW5kb3cgPSBkZWZhdWx0V2luZG93IH0gPSBfYSwgbXV0YXRpb25PcHRpb25zID0gX19vYmpSZXN0JDEoX2EsIFtcIndpbmRvd1wiXSk7XG4gIGxldCBvYnNlcnZlcjtcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSB3aW5kb3cgJiYgXCJNdXRhdGlvbk9ic2VydmVyXCIgaW4gd2luZG93O1xuICBjb25zdCBjbGVhbnVwID0gKCkgPT4ge1xuICAgIGlmIChvYnNlcnZlcikge1xuICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgb2JzZXJ2ZXIgPSB2b2lkIDA7XG4gICAgfVxuICB9O1xuICBjb25zdCBzdG9wV2F0Y2ggPSB2dWVEZW1pLndhdGNoKCgpID0+IHVucmVmRWxlbWVudCh0YXJnZXQpLCAoZWwpID0+IHtcbiAgICBjbGVhbnVwKCk7XG4gICAgaWYgKGlzU3VwcG9ydGVkICYmIHdpbmRvdyAmJiBlbCkge1xuICAgICAgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihjYWxsYmFjayk7XG4gICAgICBvYnNlcnZlci5vYnNlcnZlKGVsLCBtdXRhdGlvbk9wdGlvbnMpO1xuICAgIH1cbiAgfSwgeyBpbW1lZGlhdGU6IHRydWUgfSk7XG4gIGNvbnN0IHN0b3AgPSAoKSA9PiB7XG4gICAgY2xlYW51cCgpO1xuICAgIHN0b3BXYXRjaCgpO1xuICB9O1xuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2Uoc3RvcCk7XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgc3RvcFxuICB9O1xufVxuXG5jb25zdCB1c2VOYXZpZ2F0b3JMYW5ndWFnZSA9IChvcHRpb25zID0ge30pID0+IHtcbiAgY29uc3QgeyB3aW5kb3cgPSBkZWZhdWx0V2luZG93IH0gPSBvcHRpb25zO1xuICBjb25zdCBuYXZpZ2F0b3IgPSB3aW5kb3cgPT0gbnVsbCA/IHZvaWQgMCA6IHdpbmRvdy5uYXZpZ2F0b3I7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gQm9vbGVhbihuYXZpZ2F0b3IgJiYgXCJsYW5ndWFnZVwiIGluIG5hdmlnYXRvcik7XG4gIGNvbnN0IGxhbmd1YWdlID0gdnVlRGVtaS5yZWYobmF2aWdhdG9yID09IG51bGwgPyB2b2lkIDAgOiBuYXZpZ2F0b3IubGFuZ3VhZ2UpO1xuICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJsYW5ndWFnZWNoYW5nZVwiLCAoKSA9PiB7XG4gICAgaWYgKG5hdmlnYXRvcilcbiAgICAgIGxhbmd1YWdlLnZhbHVlID0gbmF2aWdhdG9yLmxhbmd1YWdlO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBsYW5ndWFnZVxuICB9O1xufTtcblxuZnVuY3Rpb24gdXNlTmV0d29yayhvcHRpb25zID0ge30pIHtcbiAgY29uc3QgeyB3aW5kb3cgPSBkZWZhdWx0V2luZG93IH0gPSBvcHRpb25zO1xuICBjb25zdCBuYXZpZ2F0b3IgPSB3aW5kb3cgPT0gbnVsbCA/IHZvaWQgMCA6IHdpbmRvdy5uYXZpZ2F0b3I7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gQm9vbGVhbihuYXZpZ2F0b3IgJiYgXCJjb25uZWN0aW9uXCIgaW4gbmF2aWdhdG9yKTtcbiAgY29uc3QgaXNPbmxpbmUgPSB2dWVEZW1pLnJlZih0cnVlKTtcbiAgY29uc3Qgc2F2ZURhdGEgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IG9mZmxpbmVBdCA9IHZ1ZURlbWkucmVmKHZvaWQgMCk7XG4gIGNvbnN0IG9ubGluZUF0ID0gdnVlRGVtaS5yZWYodm9pZCAwKTtcbiAgY29uc3QgZG93bmxpbmsgPSB2dWVEZW1pLnJlZih2b2lkIDApO1xuICBjb25zdCBkb3dubGlua01heCA9IHZ1ZURlbWkucmVmKHZvaWQgMCk7XG4gIGNvbnN0IHJ0dCA9IHZ1ZURlbWkucmVmKHZvaWQgMCk7XG4gIGNvbnN0IGVmZmVjdGl2ZVR5cGUgPSB2dWVEZW1pLnJlZih2b2lkIDApO1xuICBjb25zdCB0eXBlID0gdnVlRGVtaS5yZWYoXCJ1bmtub3duXCIpO1xuICBjb25zdCBjb25uZWN0aW9uID0gaXNTdXBwb3J0ZWQgJiYgbmF2aWdhdG9yLmNvbm5lY3Rpb247XG4gIGZ1bmN0aW9uIHVwZGF0ZU5ldHdvcmtJbmZvcm1hdGlvbigpIHtcbiAgICBpZiAoIW5hdmlnYXRvcilcbiAgICAgIHJldHVybjtcbiAgICBpc09ubGluZS52YWx1ZSA9IG5hdmlnYXRvci5vbkxpbmU7XG4gICAgb2ZmbGluZUF0LnZhbHVlID0gaXNPbmxpbmUudmFsdWUgPyB2b2lkIDAgOiBEYXRlLm5vdygpO1xuICAgIG9ubGluZUF0LnZhbHVlID0gaXNPbmxpbmUudmFsdWUgPyBEYXRlLm5vdygpIDogdm9pZCAwO1xuICAgIGlmIChjb25uZWN0aW9uKSB7XG4gICAgICBkb3dubGluay52YWx1ZSA9IGNvbm5lY3Rpb24uZG93bmxpbms7XG4gICAgICBkb3dubGlua01heC52YWx1ZSA9IGNvbm5lY3Rpb24uZG93bmxpbmtNYXg7XG4gICAgICBlZmZlY3RpdmVUeXBlLnZhbHVlID0gY29ubmVjdGlvbi5lZmZlY3RpdmVUeXBlO1xuICAgICAgcnR0LnZhbHVlID0gY29ubmVjdGlvbi5ydHQ7XG4gICAgICBzYXZlRGF0YS52YWx1ZSA9IGNvbm5lY3Rpb24uc2F2ZURhdGE7XG4gICAgICB0eXBlLnZhbHVlID0gY29ubmVjdGlvbi50eXBlO1xuICAgIH1cbiAgfVxuICBpZiAod2luZG93KSB7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwib2ZmbGluZVwiLCAoKSA9PiB7XG4gICAgICBpc09ubGluZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgb2ZmbGluZUF0LnZhbHVlID0gRGF0ZS5ub3coKTtcbiAgICB9KTtcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJvbmxpbmVcIiwgKCkgPT4ge1xuICAgICAgaXNPbmxpbmUudmFsdWUgPSB0cnVlO1xuICAgICAgb25saW5lQXQudmFsdWUgPSBEYXRlLm5vdygpO1xuICAgIH0pO1xuICB9XG4gIGlmIChjb25uZWN0aW9uKVxuICAgIHVzZUV2ZW50TGlzdGVuZXIoY29ubmVjdGlvbiwgXCJjaGFuZ2VcIiwgdXBkYXRlTmV0d29ya0luZm9ybWF0aW9uLCBmYWxzZSk7XG4gIHVwZGF0ZU5ldHdvcmtJbmZvcm1hdGlvbigpO1xuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIGlzT25saW5lLFxuICAgIHNhdmVEYXRhLFxuICAgIG9mZmxpbmVBdCxcbiAgICBvbmxpbmVBdCxcbiAgICBkb3dubGluayxcbiAgICBkb3dubGlua01heCxcbiAgICBlZmZlY3RpdmVUeXBlLFxuICAgIHJ0dCxcbiAgICB0eXBlXG4gIH07XG59XG5cbnZhciBfX2RlZlByb3AkNSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BTeW1ib2xzJDUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCQ1ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kNSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJDUgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJDUob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJDUgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCQ1LmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkNShhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkNSlcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkNShiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSQ1LmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCQ1KGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xuZnVuY3Rpb24gdXNlTm93KG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgY29udHJvbHM6IGV4cG9zZUNvbnRyb2xzID0gZmFsc2UsXG4gICAgaW50ZXJ2YWwgPSBcInJlcXVlc3RBbmltYXRpb25GcmFtZVwiXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBub3cgPSB2dWVEZW1pLnJlZihuZXcgRGF0ZSgpKTtcbiAgY29uc3QgdXBkYXRlID0gKCkgPT4gbm93LnZhbHVlID0gbmV3IERhdGUoKTtcbiAgY29uc3QgY29udHJvbHMgPSBpbnRlcnZhbCA9PT0gXCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWVcIiA/IHVzZVJhZkZuKHVwZGF0ZSwgeyBpbW1lZGlhdGU6IHRydWUgfSkgOiBzaGFyZWQudXNlSW50ZXJ2YWxGbih1cGRhdGUsIGludGVydmFsLCB7IGltbWVkaWF0ZTogdHJ1ZSB9KTtcbiAgaWYgKGV4cG9zZUNvbnRyb2xzKSB7XG4gICAgcmV0dXJuIF9fc3ByZWFkVmFsdWVzJDUoe1xuICAgICAgbm93XG4gICAgfSwgY29udHJvbHMpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBub3c7XG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlT2JqZWN0VXJsKG9iamVjdCkge1xuICBjb25zdCB1cmwgPSB2dWVEZW1pLnJlZigpO1xuICBjb25zdCByZWxlYXNlID0gKCkgPT4ge1xuICAgIGlmICh1cmwudmFsdWUpXG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybC52YWx1ZSk7XG4gICAgdXJsLnZhbHVlID0gdm9pZCAwO1xuICB9O1xuICB2dWVEZW1pLndhdGNoKCgpID0+IHZ1ZURlbWkudW5yZWYob2JqZWN0KSwgKG5ld09iamVjdCkgPT4ge1xuICAgIHJlbGVhc2UoKTtcbiAgICBpZiAobmV3T2JqZWN0KVxuICAgICAgdXJsLnZhbHVlID0gVVJMLmNyZWF0ZU9iamVjdFVSTChuZXdPYmplY3QpO1xuICB9LCB7IGltbWVkaWF0ZTogdHJ1ZSB9KTtcbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKHJlbGVhc2UpO1xuICByZXR1cm4gdnVlRGVtaS5yZWFkb25seSh1cmwpO1xufVxuXG5mdW5jdGlvbiB1c2VPZmZzZXRQYWdpbmF0aW9uKG9wdGlvbnMpIHtcbiAgY29uc3Qge1xuICAgIHRvdGFsID0gSW5maW5pdHksXG4gICAgcGFnZVNpemUgPSAxMCxcbiAgICBwYWdlID0gMSxcbiAgICBvblBhZ2VDaGFuZ2UgPSBzaGFyZWQubm9vcCxcbiAgICBvblBhZ2VTaXplQ2hhbmdlID0gc2hhcmVkLm5vb3AsXG4gICAgb25QYWdlQ291bnRDaGFuZ2UgPSBzaGFyZWQubm9vcFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgY3VycmVudFBhZ2VTaXplID0gdXNlQ2xhbXAocGFnZVNpemUsIDEsIEluZmluaXR5KTtcbiAgY29uc3QgcGFnZUNvdW50ID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBNYXRoLmNlaWwodnVlRGVtaS51bnJlZih0b3RhbCkgLyB2dWVEZW1pLnVucmVmKGN1cnJlbnRQYWdlU2l6ZSkpKTtcbiAgY29uc3QgY3VycmVudFBhZ2UgPSB1c2VDbGFtcChwYWdlLCAxLCBwYWdlQ291bnQpO1xuICBjb25zdCBpc0ZpcnN0UGFnZSA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gY3VycmVudFBhZ2UudmFsdWUgPT09IDEpO1xuICBjb25zdCBpc0xhc3RQYWdlID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBjdXJyZW50UGFnZS52YWx1ZSA9PT0gcGFnZUNvdW50LnZhbHVlKTtcbiAgaWYgKHZ1ZURlbWkuaXNSZWYocGFnZSkpXG4gICAgc2hhcmVkLnN5bmNSZWYocGFnZSwgY3VycmVudFBhZ2UpO1xuICBpZiAodnVlRGVtaS5pc1JlZihwYWdlU2l6ZSkpXG4gICAgc2hhcmVkLnN5bmNSZWYocGFnZVNpemUsIGN1cnJlbnRQYWdlU2l6ZSk7XG4gIGZ1bmN0aW9uIHByZXYoKSB7XG4gICAgY3VycmVudFBhZ2UudmFsdWUtLTtcbiAgfVxuICBmdW5jdGlvbiBuZXh0KCkge1xuICAgIGN1cnJlbnRQYWdlLnZhbHVlKys7XG4gIH1cbiAgY29uc3QgcmV0dXJuVmFsdWUgPSB7XG4gICAgY3VycmVudFBhZ2UsXG4gICAgY3VycmVudFBhZ2VTaXplLFxuICAgIHBhZ2VDb3VudCxcbiAgICBpc0ZpcnN0UGFnZSxcbiAgICBpc0xhc3RQYWdlLFxuICAgIHByZXYsXG4gICAgbmV4dFxuICB9O1xuICB2dWVEZW1pLndhdGNoKGN1cnJlbnRQYWdlLCAoKSA9PiB7XG4gICAgb25QYWdlQ2hhbmdlKHZ1ZURlbWkucmVhY3RpdmUocmV0dXJuVmFsdWUpKTtcbiAgfSk7XG4gIHZ1ZURlbWkud2F0Y2goY3VycmVudFBhZ2VTaXplLCAoKSA9PiB7XG4gICAgb25QYWdlU2l6ZUNoYW5nZSh2dWVEZW1pLnJlYWN0aXZlKHJldHVyblZhbHVlKSk7XG4gIH0pO1xuICB2dWVEZW1pLndhdGNoKHBhZ2VDb3VudCwgKCkgPT4ge1xuICAgIG9uUGFnZUNvdW50Q2hhbmdlKHZ1ZURlbWkucmVhY3RpdmUocmV0dXJuVmFsdWUpKTtcbiAgfSk7XG4gIHJldHVybiByZXR1cm5WYWx1ZTtcbn1cblxuZnVuY3Rpb24gdXNlT25saW5lKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IGlzT25saW5lIH0gPSB1c2VOZXR3b3JrKG9wdGlvbnMpO1xuICByZXR1cm4gaXNPbmxpbmU7XG59XG5cbmZ1bmN0aW9uIHVzZVBhZ2VMZWF2ZShvcHRpb25zID0ge30pIHtcbiAgY29uc3QgeyB3aW5kb3cgPSBkZWZhdWx0V2luZG93IH0gPSBvcHRpb25zO1xuICBjb25zdCBpc0xlZnQgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IGhhbmRsZXIgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoIXdpbmRvdylcbiAgICAgIHJldHVybjtcbiAgICBldmVudCA9IGV2ZW50IHx8IHdpbmRvdy5ldmVudDtcbiAgICBjb25zdCBmcm9tID0gZXZlbnQucmVsYXRlZFRhcmdldCB8fCBldmVudC50b0VsZW1lbnQ7XG4gICAgaXNMZWZ0LnZhbHVlID0gIWZyb207XG4gIH07XG4gIGlmICh3aW5kb3cpIHtcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJtb3VzZW91dFwiLCBoYW5kbGVyLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3cuZG9jdW1lbnQsIFwibW91c2VsZWF2ZVwiLCBoYW5kbGVyLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3cuZG9jdW1lbnQsIFwibW91c2VlbnRlclwiLCBoYW5kbGVyLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gIH1cbiAgcmV0dXJuIGlzTGVmdDtcbn1cblxuZnVuY3Rpb24gdXNlUGFyYWxsYXgodGFyZ2V0LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGRldmljZU9yaWVudGF0aW9uVGlsdEFkanVzdCA9IChpKSA9PiBpLFxuICAgIGRldmljZU9yaWVudGF0aW9uUm9sbEFkanVzdCA9IChpKSA9PiBpLFxuICAgIG1vdXNlVGlsdEFkanVzdCA9IChpKSA9PiBpLFxuICAgIG1vdXNlUm9sbEFkanVzdCA9IChpKSA9PiBpLFxuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3dcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IG9yaWVudGF0aW9uID0gdnVlRGVtaS5yZWFjdGl2ZSh1c2VEZXZpY2VPcmllbnRhdGlvbih7IHdpbmRvdyB9KSk7XG4gIGNvbnN0IHtcbiAgICBlbGVtZW50WDogeCxcbiAgICBlbGVtZW50WTogeSxcbiAgICBlbGVtZW50V2lkdGg6IHdpZHRoLFxuICAgIGVsZW1lbnRIZWlnaHQ6IGhlaWdodFxuICB9ID0gdXNlTW91c2VJbkVsZW1lbnQodGFyZ2V0LCB7IGhhbmRsZU91dHNpZGU6IGZhbHNlLCB3aW5kb3cgfSk7XG4gIGNvbnN0IHNvdXJjZSA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChvcmllbnRhdGlvbi5pc1N1cHBvcnRlZCAmJiAob3JpZW50YXRpb24uYWxwaGEgIT0gbnVsbCAmJiBvcmllbnRhdGlvbi5hbHBoYSAhPT0gMCB8fCBvcmllbnRhdGlvbi5nYW1tYSAhPSBudWxsICYmIG9yaWVudGF0aW9uLmdhbW1hICE9PSAwKSlcbiAgICAgIHJldHVybiBcImRldmljZU9yaWVudGF0aW9uXCI7XG4gICAgcmV0dXJuIFwibW91c2VcIjtcbiAgfSk7XG4gIGNvbnN0IHJvbGwgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoc291cmNlLnZhbHVlID09PSBcImRldmljZU9yaWVudGF0aW9uXCIpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gLW9yaWVudGF0aW9uLmJldGEgLyA5MDtcbiAgICAgIHJldHVybiBkZXZpY2VPcmllbnRhdGlvblJvbGxBZGp1c3QodmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IC0oeS52YWx1ZSAtIGhlaWdodC52YWx1ZSAvIDIpIC8gaGVpZ2h0LnZhbHVlO1xuICAgICAgcmV0dXJuIG1vdXNlUm9sbEFkanVzdCh2YWx1ZSk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgdGlsdCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChzb3VyY2UudmFsdWUgPT09IFwiZGV2aWNlT3JpZW50YXRpb25cIikge1xuICAgICAgY29uc3QgdmFsdWUgPSBvcmllbnRhdGlvbi5nYW1tYSAvIDkwO1xuICAgICAgcmV0dXJuIGRldmljZU9yaWVudGF0aW9uVGlsdEFkanVzdCh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gKHgudmFsdWUgLSB3aWR0aC52YWx1ZSAvIDIpIC8gd2lkdGgudmFsdWU7XG4gICAgICByZXR1cm4gbW91c2VUaWx0QWRqdXN0KHZhbHVlKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4geyByb2xsLCB0aWx0LCBzb3VyY2UgfTtcbn1cblxudmFyIF9fZGVmUHJvcCQ0ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmUHJvcHMkMSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzO1xudmFyIF9fZ2V0T3duUHJvcERlc2NzJDEgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycztcbnZhciBfX2dldE93blByb3BTeW1ib2xzJDQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCQ0ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kNCA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJDQgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJDQob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJDQgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCQ0LmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkNChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkNClcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkNChiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSQ0LmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCQ0KGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xudmFyIF9fc3ByZWFkUHJvcHMkMSA9IChhLCBiKSA9PiBfX2RlZlByb3BzJDEoYSwgX19nZXRPd25Qcm9wRGVzY3MkMShiKSk7XG5jb25zdCBkZWZhdWx0U3RhdGUgPSB7XG4gIHg6IDAsXG4gIHk6IDAsXG4gIHBvaW50ZXJJZDogMCxcbiAgcHJlc3N1cmU6IDAsXG4gIHRpbHRYOiAwLFxuICB0aWx0WTogMCxcbiAgd2lkdGg6IDAsXG4gIGhlaWdodDogMCxcbiAgdHdpc3Q6IDAsXG4gIHBvaW50ZXJUeXBlOiBudWxsXG59O1xuY29uc3Qga2V5cyA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3Qua2V5cyhkZWZhdWx0U3RhdGUpO1xuZnVuY3Rpb24gdXNlUG9pbnRlcihvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHRhcmdldCA9IGRlZmF1bHRXaW5kb3dcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlzSW5zaWRlID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBzdGF0ZSA9IHZ1ZURlbWkucmVmKG9wdGlvbnMuaW5pdGlhbFZhbHVlIHx8IHt9KTtcbiAgT2JqZWN0LmFzc2lnbihzdGF0ZS52YWx1ZSwgZGVmYXVsdFN0YXRlLCBzdGF0ZS52YWx1ZSk7XG4gIGNvbnN0IGhhbmRsZXIgPSAoZXZlbnQpID0+IHtcbiAgICBpc0luc2lkZS52YWx1ZSA9IHRydWU7XG4gICAgaWYgKG9wdGlvbnMucG9pbnRlclR5cGVzICYmICFvcHRpb25zLnBvaW50ZXJUeXBlcy5pbmNsdWRlcyhldmVudC5wb2ludGVyVHlwZSkpXG4gICAgICByZXR1cm47XG4gICAgc3RhdGUudmFsdWUgPSBzaGFyZWQub2JqZWN0UGljayhldmVudCwga2V5cywgZmFsc2UpO1xuICB9O1xuICBpZiAodGFyZ2V0KSB7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwicG9pbnRlcmRvd25cIiwgaGFuZGxlciwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInBvaW50ZXJtb3ZlXCIsIGhhbmRsZXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJwb2ludGVybGVhdmVcIiwgKCkgPT4gaXNJbnNpZGUudmFsdWUgPSBmYWxzZSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICB9XG4gIHJldHVybiBfX3NwcmVhZFByb3BzJDEoX19zcHJlYWRWYWx1ZXMkNCh7fSwgc2hhcmVkLnRvUmVmcyhzdGF0ZSkpLCB7XG4gICAgaXNJbnNpZGVcbiAgfSk7XG59XG5cbmV4cG9ydHMuU3dpcGVEaXJlY3Rpb24gPSB2b2lkIDA7XG4oZnVuY3Rpb24oU3dpcGVEaXJlY3Rpb24yKSB7XG4gIFN3aXBlRGlyZWN0aW9uMltcIlVQXCJdID0gXCJVUFwiO1xuICBTd2lwZURpcmVjdGlvbjJbXCJSSUdIVFwiXSA9IFwiUklHSFRcIjtcbiAgU3dpcGVEaXJlY3Rpb24yW1wiRE9XTlwiXSA9IFwiRE9XTlwiO1xuICBTd2lwZURpcmVjdGlvbjJbXCJMRUZUXCJdID0gXCJMRUZUXCI7XG4gIFN3aXBlRGlyZWN0aW9uMltcIk5PTkVcIl0gPSBcIk5PTkVcIjtcbn0pKGV4cG9ydHMuU3dpcGVEaXJlY3Rpb24gfHwgKGV4cG9ydHMuU3dpcGVEaXJlY3Rpb24gPSB7fSkpO1xuZnVuY3Rpb24gdXNlU3dpcGUodGFyZ2V0LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHRocmVzaG9sZCA9IDUwLFxuICAgIG9uU3dpcGUsXG4gICAgb25Td2lwZUVuZCxcbiAgICBvblN3aXBlU3RhcnQsXG4gICAgcGFzc2l2ZSA9IHRydWUsXG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvd1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgY29vcmRzU3RhcnQgPSB2dWVEZW1pLnJlYWN0aXZlKHsgeDogMCwgeTogMCB9KTtcbiAgY29uc3QgY29vcmRzRW5kID0gdnVlRGVtaS5yZWFjdGl2ZSh7IHg6IDAsIHk6IDAgfSk7XG4gIGNvbnN0IGRpZmZYID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBjb29yZHNTdGFydC54IC0gY29vcmRzRW5kLngpO1xuICBjb25zdCBkaWZmWSA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gY29vcmRzU3RhcnQueSAtIGNvb3Jkc0VuZC55KTtcbiAgY29uc3QgeyBtYXgsIGFicyB9ID0gTWF0aDtcbiAgY29uc3QgaXNUaHJlc2hvbGRFeGNlZWRlZCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gbWF4KGFicyhkaWZmWC52YWx1ZSksIGFicyhkaWZmWS52YWx1ZSkpID49IHRocmVzaG9sZCk7XG4gIGNvbnN0IGlzU3dpcGluZyA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgZGlyZWN0aW9uID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKCFpc1RocmVzaG9sZEV4Y2VlZGVkLnZhbHVlKVxuICAgICAgcmV0dXJuIGV4cG9ydHMuU3dpcGVEaXJlY3Rpb24uTk9ORTtcbiAgICBpZiAoYWJzKGRpZmZYLnZhbHVlKSA+IGFicyhkaWZmWS52YWx1ZSkpIHtcbiAgICAgIHJldHVybiBkaWZmWC52YWx1ZSA+IDAgPyBleHBvcnRzLlN3aXBlRGlyZWN0aW9uLkxFRlQgOiBleHBvcnRzLlN3aXBlRGlyZWN0aW9uLlJJR0hUO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZGlmZlkudmFsdWUgPiAwID8gZXhwb3J0cy5Td2lwZURpcmVjdGlvbi5VUCA6IGV4cG9ydHMuU3dpcGVEaXJlY3Rpb24uRE9XTjtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBnZXRUb3VjaEV2ZW50Q29vcmRzID0gKGUpID0+IFtlLnRvdWNoZXNbMF0uY2xpZW50WCwgZS50b3VjaGVzWzBdLmNsaWVudFldO1xuICBjb25zdCB1cGRhdGVDb29yZHNTdGFydCA9ICh4LCB5KSA9PiB7XG4gICAgY29vcmRzU3RhcnQueCA9IHg7XG4gICAgY29vcmRzU3RhcnQueSA9IHk7XG4gIH07XG4gIGNvbnN0IHVwZGF0ZUNvb3Jkc0VuZCA9ICh4LCB5KSA9PiB7XG4gICAgY29vcmRzRW5kLnggPSB4O1xuICAgIGNvb3Jkc0VuZC55ID0geTtcbiAgfTtcbiAgbGV0IGxpc3RlbmVyT3B0aW9ucztcbiAgY29uc3QgaXNQYXNzaXZlRXZlbnRTdXBwb3J0ZWQgPSBjaGVja1Bhc3NpdmVFdmVudFN1cHBvcnQod2luZG93ID09IG51bGwgPyB2b2lkIDAgOiB3aW5kb3cuZG9jdW1lbnQpO1xuICBpZiAoIXBhc3NpdmUpXG4gICAgbGlzdGVuZXJPcHRpb25zID0gaXNQYXNzaXZlRXZlbnRTdXBwb3J0ZWQgPyB7IHBhc3NpdmU6IGZhbHNlLCBjYXB0dXJlOiB0cnVlIH0gOiB7IGNhcHR1cmU6IHRydWUgfTtcbiAgZWxzZVxuICAgIGxpc3RlbmVyT3B0aW9ucyA9IGlzUGFzc2l2ZUV2ZW50U3VwcG9ydGVkID8geyBwYXNzaXZlOiB0cnVlIH0gOiB7IGNhcHR1cmU6IGZhbHNlIH07XG4gIGNvbnN0IG9uVG91Y2hFbmQgPSAoZSkgPT4ge1xuICAgIGlmIChpc1N3aXBpbmcudmFsdWUpXG4gICAgICBvblN3aXBlRW5kID09IG51bGwgPyB2b2lkIDAgOiBvblN3aXBlRW5kKGUsIGRpcmVjdGlvbi52YWx1ZSk7XG4gICAgaXNTd2lwaW5nLnZhbHVlID0gZmFsc2U7XG4gIH07XG4gIGNvbnN0IHN0b3BzID0gW1xuICAgIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInRvdWNoc3RhcnRcIiwgKGUpID0+IHtcbiAgICAgIGlmIChsaXN0ZW5lck9wdGlvbnMuY2FwdHVyZSAmJiAhbGlzdGVuZXJPcHRpb25zLnBhc3NpdmUpXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNvbnN0IFt4LCB5XSA9IGdldFRvdWNoRXZlbnRDb29yZHMoZSk7XG4gICAgICB1cGRhdGVDb29yZHNTdGFydCh4LCB5KTtcbiAgICAgIHVwZGF0ZUNvb3Jkc0VuZCh4LCB5KTtcbiAgICAgIG9uU3dpcGVTdGFydCA9PSBudWxsID8gdm9pZCAwIDogb25Td2lwZVN0YXJ0KGUpO1xuICAgIH0sIGxpc3RlbmVyT3B0aW9ucyksXG4gICAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwidG91Y2htb3ZlXCIsIChlKSA9PiB7XG4gICAgICBjb25zdCBbeCwgeV0gPSBnZXRUb3VjaEV2ZW50Q29vcmRzKGUpO1xuICAgICAgdXBkYXRlQ29vcmRzRW5kKHgsIHkpO1xuICAgICAgaWYgKCFpc1N3aXBpbmcudmFsdWUgJiYgaXNUaHJlc2hvbGRFeGNlZWRlZC52YWx1ZSlcbiAgICAgICAgaXNTd2lwaW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgIGlmIChpc1N3aXBpbmcudmFsdWUpXG4gICAgICAgIG9uU3dpcGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9uU3dpcGUoZSk7XG4gICAgfSwgbGlzdGVuZXJPcHRpb25zKSxcbiAgICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJ0b3VjaGVuZFwiLCBvblRvdWNoRW5kLCBsaXN0ZW5lck9wdGlvbnMpLFxuICAgIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInRvdWNoY2FuY2VsXCIsIG9uVG91Y2hFbmQsIGxpc3RlbmVyT3B0aW9ucylcbiAgXTtcbiAgY29uc3Qgc3RvcCA9ICgpID0+IHN0b3BzLmZvckVhY2goKHMpID0+IHMoKSk7XG4gIHJldHVybiB7XG4gICAgaXNQYXNzaXZlRXZlbnRTdXBwb3J0ZWQsXG4gICAgaXNTd2lwaW5nLFxuICAgIGRpcmVjdGlvbixcbiAgICBjb29yZHNTdGFydCxcbiAgICBjb29yZHNFbmQsXG4gICAgbGVuZ3RoWDogZGlmZlgsXG4gICAgbGVuZ3RoWTogZGlmZlksXG4gICAgc3RvcFxuICB9O1xufVxuZnVuY3Rpb24gY2hlY2tQYXNzaXZlRXZlbnRTdXBwb3J0KGRvY3VtZW50KSB7XG4gIGlmICghZG9jdW1lbnQpXG4gICAgcmV0dXJuIGZhbHNlO1xuICBsZXQgc3VwcG9ydHNQYXNzaXZlID0gZmFsc2U7XG4gIGNvbnN0IG9wdGlvbnNCbG9jayA9IHtcbiAgICBnZXQgcGFzc2l2ZSgpIHtcbiAgICAgIHN1cHBvcnRzUGFzc2l2ZSA9IHRydWU7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9O1xuICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwieFwiLCBzaGFyZWQubm9vcCwgb3B0aW9uc0Jsb2NrKTtcbiAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInhcIiwgc2hhcmVkLm5vb3ApO1xuICByZXR1cm4gc3VwcG9ydHNQYXNzaXZlO1xufVxuXG5mdW5jdGlvbiB1c2VQb2ludGVyU3dpcGUodGFyZ2V0LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgdGFyZ2V0UmVmID0gdnVlRGVtaS5yZWYodGFyZ2V0KTtcbiAgY29uc3Qge1xuICAgIHRocmVzaG9sZCA9IDUwLFxuICAgIG9uU3dpcGUsXG4gICAgb25Td2lwZUVuZCxcbiAgICBvblN3aXBlU3RhcnRcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHBvc1N0YXJ0ID0gdnVlRGVtaS5yZWFjdGl2ZSh7IHg6IDAsIHk6IDAgfSk7XG4gIGNvbnN0IHVwZGF0ZVBvc1N0YXJ0ID0gKHgsIHkpID0+IHtcbiAgICBwb3NTdGFydC54ID0geDtcbiAgICBwb3NTdGFydC55ID0geTtcbiAgfTtcbiAgY29uc3QgcG9zRW5kID0gdnVlRGVtaS5yZWFjdGl2ZSh7IHg6IDAsIHk6IDAgfSk7XG4gIGNvbnN0IHVwZGF0ZVBvc0VuZCA9ICh4LCB5KSA9PiB7XG4gICAgcG9zRW5kLnggPSB4O1xuICAgIHBvc0VuZC55ID0geTtcbiAgfTtcbiAgY29uc3QgZGlzdGFuY2VYID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBwb3NTdGFydC54IC0gcG9zRW5kLngpO1xuICBjb25zdCBkaXN0YW5jZVkgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHBvc1N0YXJ0LnkgLSBwb3NFbmQueSk7XG4gIGNvbnN0IHsgbWF4LCBhYnMgfSA9IE1hdGg7XG4gIGNvbnN0IGlzVGhyZXNob2xkRXhjZWVkZWQgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IG1heChhYnMoZGlzdGFuY2VYLnZhbHVlKSwgYWJzKGRpc3RhbmNlWS52YWx1ZSkpID49IHRocmVzaG9sZCk7XG4gIGNvbnN0IGlzU3dpcGluZyA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgaXNQb2ludGVyRG93biA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgZGlyZWN0aW9uID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKCFpc1RocmVzaG9sZEV4Y2VlZGVkLnZhbHVlKVxuICAgICAgcmV0dXJuIGV4cG9ydHMuU3dpcGVEaXJlY3Rpb24uTk9ORTtcbiAgICBpZiAoYWJzKGRpc3RhbmNlWC52YWx1ZSkgPiBhYnMoZGlzdGFuY2VZLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIGRpc3RhbmNlWC52YWx1ZSA+IDAgPyBleHBvcnRzLlN3aXBlRGlyZWN0aW9uLkxFRlQgOiBleHBvcnRzLlN3aXBlRGlyZWN0aW9uLlJJR0hUO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZGlzdGFuY2VZLnZhbHVlID4gMCA/IGV4cG9ydHMuU3dpcGVEaXJlY3Rpb24uVVAgOiBleHBvcnRzLlN3aXBlRGlyZWN0aW9uLkRPV047XG4gICAgfVxuICB9KTtcbiAgY29uc3QgZmlsdGVyRXZlbnQgPSAoZSkgPT4ge1xuICAgIGlmIChvcHRpb25zLnBvaW50ZXJUeXBlcylcbiAgICAgIHJldHVybiBvcHRpb25zLnBvaW50ZXJUeXBlcy5pbmNsdWRlcyhlLnBvaW50ZXJUeXBlKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbiAgY29uc3Qgc3RvcHMgPSBbXG4gICAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwicG9pbnRlcmRvd25cIiwgKGUpID0+IHtcbiAgICAgIHZhciBfYSwgX2I7XG4gICAgICBpZiAoIWZpbHRlckV2ZW50KGUpKVxuICAgICAgICByZXR1cm47XG4gICAgICBpc1BvaW50ZXJEb3duLnZhbHVlID0gdHJ1ZTtcbiAgICAgIChfYiA9IChfYSA9IHRhcmdldFJlZi52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnN0eWxlKSA9PSBudWxsID8gdm9pZCAwIDogX2Iuc2V0UHJvcGVydHkoXCJ0b3VjaC1hY3Rpb25cIiwgXCJub25lXCIpO1xuICAgICAgY29uc3QgZXZlbnRUYXJnZXQgPSBlLnRhcmdldDtcbiAgICAgIGV2ZW50VGFyZ2V0ID09IG51bGwgPyB2b2lkIDAgOiBldmVudFRhcmdldC5zZXRQb2ludGVyQ2FwdHVyZShlLnBvaW50ZXJJZCk7XG4gICAgICBjb25zdCB7IGNsaWVudFg6IHgsIGNsaWVudFk6IHkgfSA9IGU7XG4gICAgICB1cGRhdGVQb3NTdGFydCh4LCB5KTtcbiAgICAgIHVwZGF0ZVBvc0VuZCh4LCB5KTtcbiAgICAgIG9uU3dpcGVTdGFydCA9PSBudWxsID8gdm9pZCAwIDogb25Td2lwZVN0YXJ0KGUpO1xuICAgIH0pLFxuICAgIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInBvaW50ZXJtb3ZlXCIsIChlKSA9PiB7XG4gICAgICBpZiAoIWZpbHRlckV2ZW50KGUpKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoIWlzUG9pbnRlckRvd24udmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNvbnN0IHsgY2xpZW50WDogeCwgY2xpZW50WTogeSB9ID0gZTtcbiAgICAgIHVwZGF0ZVBvc0VuZCh4LCB5KTtcbiAgICAgIGlmICghaXNTd2lwaW5nLnZhbHVlICYmIGlzVGhyZXNob2xkRXhjZWVkZWQudmFsdWUpXG4gICAgICAgIGlzU3dpcGluZy52YWx1ZSA9IHRydWU7XG4gICAgICBpZiAoaXNTd2lwaW5nLnZhbHVlKVxuICAgICAgICBvblN3aXBlID09IG51bGwgPyB2b2lkIDAgOiBvblN3aXBlKGUpO1xuICAgIH0pLFxuICAgIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInBvaW50ZXJ1cFwiLCAoZSkgPT4ge1xuICAgICAgdmFyIF9hLCBfYjtcbiAgICAgIGlmICghZmlsdGVyRXZlbnQoZSkpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChpc1N3aXBpbmcudmFsdWUpXG4gICAgICAgIG9uU3dpcGVFbmQgPT0gbnVsbCA/IHZvaWQgMCA6IG9uU3dpcGVFbmQoZSwgZGlyZWN0aW9uLnZhbHVlKTtcbiAgICAgIGlzUG9pbnRlckRvd24udmFsdWUgPSBmYWxzZTtcbiAgICAgIGlzU3dpcGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgKF9iID0gKF9hID0gdGFyZ2V0UmVmLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2Euc3R5bGUpID09IG51bGwgPyB2b2lkIDAgOiBfYi5zZXRQcm9wZXJ0eShcInRvdWNoLWFjdGlvblwiLCBcImluaXRpYWxcIik7XG4gICAgfSlcbiAgXTtcbiAgY29uc3Qgc3RvcCA9ICgpID0+IHN0b3BzLmZvckVhY2goKHMpID0+IHMoKSk7XG4gIHJldHVybiB7XG4gICAgaXNTd2lwaW5nOiB2dWVEZW1pLnJlYWRvbmx5KGlzU3dpcGluZyksXG4gICAgZGlyZWN0aW9uOiB2dWVEZW1pLnJlYWRvbmx5KGRpcmVjdGlvbiksXG4gICAgcG9zU3RhcnQ6IHZ1ZURlbWkucmVhZG9ubHkocG9zU3RhcnQpLFxuICAgIHBvc0VuZDogdnVlRGVtaS5yZWFkb25seShwb3NFbmQpLFxuICAgIGRpc3RhbmNlWCxcbiAgICBkaXN0YW5jZVksXG4gICAgc3RvcFxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VQcmVmZXJyZWRDb2xvclNjaGVtZShvcHRpb25zKSB7XG4gIGNvbnN0IGlzTGlnaHQgPSB1c2VNZWRpYVF1ZXJ5KFwiKHByZWZlcnMtY29sb3Itc2NoZW1lOiBsaWdodClcIiwgb3B0aW9ucyk7XG4gIGNvbnN0IGlzRGFyayA9IHVzZU1lZGlhUXVlcnkoXCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspXCIsIG9wdGlvbnMpO1xuICByZXR1cm4gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGlzRGFyay52YWx1ZSlcbiAgICAgIHJldHVybiBcImRhcmtcIjtcbiAgICBpZiAoaXNMaWdodC52YWx1ZSlcbiAgICAgIHJldHVybiBcImxpZ2h0XCI7XG4gICAgcmV0dXJuIFwibm8tcHJlZmVyZW5jZVwiO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdXNlUHJlZmVycmVkTGFuZ3VhZ2VzKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3cgfSA9IG9wdGlvbnM7XG4gIGlmICghd2luZG93KVxuICAgIHJldHVybiB2dWVEZW1pLnJlZihbXCJlblwiXSk7XG4gIGNvbnN0IG5hdmlnYXRvciA9IHdpbmRvdy5uYXZpZ2F0b3I7XG4gIGNvbnN0IHZhbHVlID0gdnVlRGVtaS5yZWYobmF2aWdhdG9yLmxhbmd1YWdlcyk7XG4gIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcImxhbmd1YWdlY2hhbmdlXCIsICgpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9IG5hdmlnYXRvci5sYW5ndWFnZXM7XG4gIH0pO1xuICByZXR1cm4gdmFsdWU7XG59XG5cbmNvbnN0IHVzZVNjcmVlbk9yaWVudGF0aW9uID0gKG9wdGlvbnMgPSB7fSkgPT4ge1xuICBjb25zdCB7XG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvd1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSAhISh3aW5kb3cgJiYgXCJzY3JlZW5cIiBpbiB3aW5kb3cgJiYgXCJvcmllbnRhdGlvblwiIGluIHdpbmRvdy5zY3JlZW4pO1xuICBjb25zdCBzY3JlZW5PcmllbnRhdGlvbiA9IGlzU3VwcG9ydGVkID8gd2luZG93LnNjcmVlbi5vcmllbnRhdGlvbiA6IHt9O1xuICBjb25zdCBvcmllbnRhdGlvbiA9IHZ1ZURlbWkucmVmKHNjcmVlbk9yaWVudGF0aW9uLnR5cGUpO1xuICBjb25zdCBhbmdsZSA9IHZ1ZURlbWkucmVmKHNjcmVlbk9yaWVudGF0aW9uLmFuZ2xlIHx8IDApO1xuICBpZiAoaXNTdXBwb3J0ZWQpIHtcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJvcmllbnRhdGlvbmNoYW5nZVwiLCAoKSA9PiB7XG4gICAgICBvcmllbnRhdGlvbi52YWx1ZSA9IHNjcmVlbk9yaWVudGF0aW9uLnR5cGU7XG4gICAgICBhbmdsZS52YWx1ZSA9IHNjcmVlbk9yaWVudGF0aW9uLmFuZ2xlO1xuICAgIH0pO1xuICB9XG4gIGNvbnN0IGxvY2tPcmllbnRhdGlvbiA9ICh0eXBlKSA9PiB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZClcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJOb3Qgc3VwcG9ydGVkXCIpKTtcbiAgICByZXR1cm4gc2NyZWVuT3JpZW50YXRpb24ubG9jayh0eXBlKTtcbiAgfTtcbiAgY29uc3QgdW5sb2NrT3JpZW50YXRpb24gPSAoKSA9PiB7XG4gICAgaWYgKGlzU3VwcG9ydGVkKVxuICAgICAgc2NyZWVuT3JpZW50YXRpb24udW5sb2NrKCk7XG4gIH07XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgb3JpZW50YXRpb24sXG4gICAgYW5nbGUsXG4gICAgbG9ja09yaWVudGF0aW9uLFxuICAgIHVubG9ja09yaWVudGF0aW9uXG4gIH07XG59O1xuXG5jb25zdCB0b3BWYXJOYW1lID0gXCItLXZ1ZXVzZS1zYWZlLWFyZWEtdG9wXCI7XG5jb25zdCByaWdodFZhck5hbWUgPSBcIi0tdnVldXNlLXNhZmUtYXJlYS1yaWdodFwiO1xuY29uc3QgYm90dG9tVmFyTmFtZSA9IFwiLS12dWV1c2Utc2FmZS1hcmVhLWJvdHRvbVwiO1xuY29uc3QgbGVmdFZhck5hbWUgPSBcIi0tdnVldXNlLXNhZmUtYXJlYS1sZWZ0XCI7XG5mdW5jdGlvbiB1c2VTY3JlZW5TYWZlQXJlYSgpIHtcbiAgY29uc3QgdG9wID0gdnVlRGVtaS5yZWYoXCJcIik7XG4gIGNvbnN0IHJpZ2h0ID0gdnVlRGVtaS5yZWYoXCJcIik7XG4gIGNvbnN0IGJvdHRvbSA9IHZ1ZURlbWkucmVmKFwiXCIpO1xuICBjb25zdCBsZWZ0ID0gdnVlRGVtaS5yZWYoXCJcIik7XG4gIGlmIChzaGFyZWQuaXNDbGllbnQpIHtcbiAgICBjb25zdCB0b3BDc3NWYXIgPSB1c2VDc3NWYXIodG9wVmFyTmFtZSk7XG4gICAgY29uc3QgcmlnaHRDc3NWYXIgPSB1c2VDc3NWYXIocmlnaHRWYXJOYW1lKTtcbiAgICBjb25zdCBib3R0b21Dc3NWYXIgPSB1c2VDc3NWYXIoYm90dG9tVmFyTmFtZSk7XG4gICAgY29uc3QgbGVmdENzc1ZhciA9IHVzZUNzc1ZhcihsZWZ0VmFyTmFtZSk7XG4gICAgdG9wQ3NzVmFyLnZhbHVlID0gXCJlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCwgMHB4KVwiO1xuICAgIHJpZ2h0Q3NzVmFyLnZhbHVlID0gXCJlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0LCAwcHgpXCI7XG4gICAgYm90dG9tQ3NzVmFyLnZhbHVlID0gXCJlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSwgMHB4KVwiO1xuICAgIGxlZnRDc3NWYXIudmFsdWUgPSBcImVudihzYWZlLWFyZWEtaW5zZXQtbGVmdCwgMHB4KVwiO1xuICAgIHVwZGF0ZSgpO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgc2hhcmVkLnVzZURlYm91bmNlRm4odXBkYXRlKSk7XG4gIH1cbiAgZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgIHRvcC52YWx1ZSA9IGdldFZhbHVlKHRvcFZhck5hbWUpO1xuICAgIHJpZ2h0LnZhbHVlID0gZ2V0VmFsdWUocmlnaHRWYXJOYW1lKTtcbiAgICBib3R0b20udmFsdWUgPSBnZXRWYWx1ZShib3R0b21WYXJOYW1lKTtcbiAgICBsZWZ0LnZhbHVlID0gZ2V0VmFsdWUobGVmdFZhck5hbWUpO1xuICB9XG4gIHJldHVybiB7XG4gICAgdG9wLFxuICAgIHJpZ2h0LFxuICAgIGJvdHRvbSxcbiAgICBsZWZ0LFxuICAgIHVwZGF0ZVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0VmFsdWUocG9zaXRpb24pIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKHBvc2l0aW9uKTtcbn1cblxuZnVuY3Rpb24gdXNlU2NyaXB0VGFnKHNyYywgb25Mb2FkZWQgPSBzaGFyZWQubm9vcCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBpbW1lZGlhdGUgPSB0cnVlLFxuICAgIG1hbnVhbCA9IGZhbHNlLFxuICAgIHR5cGUgPSBcInRleHQvamF2YXNjcmlwdFwiLFxuICAgIGFzeW5jID0gdHJ1ZSxcbiAgICBjcm9zc09yaWdpbixcbiAgICByZWZlcnJlclBvbGljeSxcbiAgICBub01vZHVsZSxcbiAgICBkZWZlcixcbiAgICBkb2N1bWVudCA9IGRlZmF1bHREb2N1bWVudCxcbiAgICBhdHRycyA9IHt9XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBzY3JpcHRUYWcgPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgbGV0IF9wcm9taXNlID0gbnVsbDtcbiAgY29uc3QgbG9hZFNjcmlwdCA9ICh3YWl0Rm9yU2NyaXB0TG9hZCkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHJlc29sdmVXaXRoRWxlbWVudCA9IChlbDIpID0+IHtcbiAgICAgIHNjcmlwdFRhZy52YWx1ZSA9IGVsMjtcbiAgICAgIHJlc29sdmUoZWwyKTtcbiAgICAgIHJldHVybiBlbDI7XG4gICAgfTtcbiAgICBpZiAoIWRvY3VtZW50KSB7XG4gICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IHNob3VsZEFwcGVuZCA9IGZhbHNlO1xuICAgIGxldCBlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYHNjcmlwdFtzcmM9XCIke3NyY31cIl1gKTtcbiAgICBpZiAoIWVsKSB7XG4gICAgICBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XG4gICAgICBlbC50eXBlID0gdHlwZTtcbiAgICAgIGVsLmFzeW5jID0gYXN5bmM7XG4gICAgICBlbC5zcmMgPSB2dWVEZW1pLnVucmVmKHNyYyk7XG4gICAgICBpZiAoZGVmZXIpXG4gICAgICAgIGVsLmRlZmVyID0gZGVmZXI7XG4gICAgICBpZiAoY3Jvc3NPcmlnaW4pXG4gICAgICAgIGVsLmNyb3NzT3JpZ2luID0gY3Jvc3NPcmlnaW47XG4gICAgICBpZiAobm9Nb2R1bGUpXG4gICAgICAgIGVsLm5vTW9kdWxlID0gbm9Nb2R1bGU7XG4gICAgICBpZiAocmVmZXJyZXJQb2xpY3kpXG4gICAgICAgIGVsLnJlZmVycmVyUG9saWN5ID0gcmVmZXJyZXJQb2xpY3k7XG4gICAgICBPYmplY3QuZW50cmllcyhhdHRycykuZm9yRWFjaCgoW25hbWUsIHZhbHVlXSkgPT4gZWwgPT0gbnVsbCA/IHZvaWQgMCA6IGVsLnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpO1xuICAgICAgc2hvdWxkQXBwZW5kID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGVsLmhhc0F0dHJpYnV0ZShcImRhdGEtbG9hZGVkXCIpKSB7XG4gICAgICByZXNvbHZlV2l0aEVsZW1lbnQoZWwpO1xuICAgIH1cbiAgICBlbC5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwgKGV2ZW50KSA9PiByZWplY3QoZXZlbnQpKTtcbiAgICBlbC5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgKGV2ZW50KSA9PiByZWplY3QoZXZlbnQpKTtcbiAgICBlbC5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLCAoKSA9PiB7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGUoXCJkYXRhLWxvYWRlZFwiLCBcInRydWVcIik7XG4gICAgICBvbkxvYWRlZChlbCk7XG4gICAgICByZXNvbHZlV2l0aEVsZW1lbnQoZWwpO1xuICAgIH0pO1xuICAgIGlmIChzaG91bGRBcHBlbmQpXG4gICAgICBlbCA9IGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoZWwpO1xuICAgIGlmICghd2FpdEZvclNjcmlwdExvYWQpXG4gICAgICByZXNvbHZlV2l0aEVsZW1lbnQoZWwpO1xuICB9KTtcbiAgY29uc3QgbG9hZCA9ICh3YWl0Rm9yU2NyaXB0TG9hZCA9IHRydWUpID0+IHtcbiAgICBpZiAoIV9wcm9taXNlKVxuICAgICAgX3Byb21pc2UgPSBsb2FkU2NyaXB0KHdhaXRGb3JTY3JpcHRMb2FkKTtcbiAgICByZXR1cm4gX3Byb21pc2U7XG4gIH07XG4gIGNvbnN0IHVubG9hZCA9ICgpID0+IHtcbiAgICBpZiAoIWRvY3VtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIF9wcm9taXNlID0gbnVsbDtcbiAgICBpZiAoc2NyaXB0VGFnLnZhbHVlKVxuICAgICAgc2NyaXB0VGFnLnZhbHVlID0gbnVsbDtcbiAgICBjb25zdCBlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYHNjcmlwdFtzcmM9XCIke3NyY31cIl1gKTtcbiAgICBpZiAoZWwpXG4gICAgICBkb2N1bWVudC5oZWFkLnJlbW92ZUNoaWxkKGVsKTtcbiAgfTtcbiAgaWYgKGltbWVkaWF0ZSAmJiAhbWFudWFsKVxuICAgIHNoYXJlZC50cnlPbk1vdW50ZWQobG9hZCk7XG4gIGlmICghbWFudWFsKVxuICAgIHNoYXJlZC50cnlPblVubW91bnRlZCh1bmxvYWQpO1xuICByZXR1cm4geyBzY3JpcHRUYWcsIGxvYWQsIHVubG9hZCB9O1xufVxuXG5mdW5jdGlvbiBwcmV2ZW50RGVmYXVsdChyYXdFdmVudCkge1xuICBjb25zdCBlID0gcmF3RXZlbnQgfHwgd2luZG93LmV2ZW50O1xuICBpZiAoZS50b3VjaGVzLmxlbmd0aCA+IDEpXG4gICAgcmV0dXJuIHRydWU7XG4gIGlmIChlLnByZXZlbnREZWZhdWx0KVxuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gdXNlU2Nyb2xsTG9jayhlbGVtZW50LCBpbml0aWFsU3RhdGUgPSBmYWxzZSkge1xuICBjb25zdCBpc0xvY2tlZCA9IHZ1ZURlbWkucmVmKGluaXRpYWxTdGF0ZSk7XG4gIGxldCBzdG9wVG91Y2hNb3ZlTGlzdGVuZXIgPSBudWxsO1xuICBsZXQgaW5pdGlhbE92ZXJmbG93O1xuICB2dWVEZW1pLndhdGNoKCgpID0+IHZ1ZURlbWkudW5yZWYoZWxlbWVudCksIChlbCkgPT4ge1xuICAgIGlmIChlbCkge1xuICAgICAgY29uc3QgZWxlID0gZWw7XG4gICAgICBpbml0aWFsT3ZlcmZsb3cgPSBlbGUuc3R5bGUub3ZlcmZsb3c7XG4gICAgICBpZiAoaXNMb2NrZWQudmFsdWUpXG4gICAgICAgIGVsZS5zdHlsZS5vdmVyZmxvdyA9IFwiaGlkZGVuXCI7XG4gICAgfVxuICB9LCB7XG4gICAgaW1tZWRpYXRlOiB0cnVlXG4gIH0pO1xuICBjb25zdCBsb2NrID0gKCkgPT4ge1xuICAgIGNvbnN0IGVsZSA9IHZ1ZURlbWkudW5yZWYoZWxlbWVudCk7XG4gICAgaWYgKCFlbGUgfHwgaXNMb2NrZWQudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgaWYgKHNoYXJlZC5pc0lPUykge1xuICAgICAgc3RvcFRvdWNoTW92ZUxpc3RlbmVyID0gdXNlRXZlbnRMaXN0ZW5lcihlbGUsIFwidG91Y2htb3ZlXCIsIHByZXZlbnREZWZhdWx0LCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuICAgIH1cbiAgICBlbGUuc3R5bGUub3ZlcmZsb3cgPSBcImhpZGRlblwiO1xuICAgIGlzTG9ja2VkLnZhbHVlID0gdHJ1ZTtcbiAgfTtcbiAgY29uc3QgdW5sb2NrID0gKCkgPT4ge1xuICAgIGNvbnN0IGVsZSA9IHZ1ZURlbWkudW5yZWYoZWxlbWVudCk7XG4gICAgaWYgKCFlbGUgfHwgIWlzTG9ja2VkLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIHNoYXJlZC5pc0lPUyAmJiAoc3RvcFRvdWNoTW92ZUxpc3RlbmVyID09IG51bGwgPyB2b2lkIDAgOiBzdG9wVG91Y2hNb3ZlTGlzdGVuZXIoKSk7XG4gICAgZWxlLnN0eWxlLm92ZXJmbG93ID0gaW5pdGlhbE92ZXJmbG93O1xuICAgIGlzTG9ja2VkLnZhbHVlID0gZmFsc2U7XG4gIH07XG4gIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZSh1bmxvY2spO1xuICByZXR1cm4gdnVlRGVtaS5jb21wdXRlZCh7XG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIGlzTG9ja2VkLnZhbHVlO1xuICAgIH0sXG4gICAgc2V0KHYpIHtcbiAgICAgIGlmICh2KVxuICAgICAgICBsb2NrKCk7XG4gICAgICBlbHNlXG4gICAgICAgIHVubG9jaygpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVzZVNlc3Npb25TdG9yYWdlKGtleSwgaW5pdGlhbFZhbHVlLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgeyB3aW5kb3cgPSBkZWZhdWx0V2luZG93IH0gPSBvcHRpb25zO1xuICByZXR1cm4gdXNlU3RvcmFnZShrZXksIGluaXRpYWxWYWx1ZSwgd2luZG93ID09IG51bGwgPyB2b2lkIDAgOiB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UsIG9wdGlvbnMpO1xufVxuXG52YXIgX19kZWZQcm9wJDMgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyQzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkMyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJDMgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCQzID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCQzKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyQzID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkMy5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJDMoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJDMpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJDMoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kMy5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkMyhhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbmZ1bmN0aW9uIHVzZVNoYXJlKHNoYXJlT3B0aW9ucyA9IHt9LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgeyBuYXZpZ2F0b3IgPSBkZWZhdWx0TmF2aWdhdG9yIH0gPSBvcHRpb25zO1xuICBjb25zdCBfbmF2aWdhdG9yID0gbmF2aWdhdG9yO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IF9uYXZpZ2F0b3IgJiYgXCJjYW5TaGFyZVwiIGluIF9uYXZpZ2F0b3I7XG4gIGNvbnN0IHNoYXJlID0gYXN5bmMgKG92ZXJyaWRlT3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgaWYgKGlzU3VwcG9ydGVkKSB7XG4gICAgICBjb25zdCBkYXRhID0gX19zcHJlYWRWYWx1ZXMkMyhfX3NwcmVhZFZhbHVlcyQzKHt9LCB2dWVEZW1pLnVucmVmKHNoYXJlT3B0aW9ucykpLCB2dWVEZW1pLnVucmVmKG92ZXJyaWRlT3B0aW9ucykpO1xuICAgICAgbGV0IGdyYW50ZWQgPSB0cnVlO1xuICAgICAgaWYgKGRhdGEuZmlsZXMgJiYgX25hdmlnYXRvci5jYW5TaGFyZSlcbiAgICAgICAgZ3JhbnRlZCA9IF9uYXZpZ2F0b3IuY2FuU2hhcmUoeyBmaWxlczogZGF0YS5maWxlcyB9KTtcbiAgICAgIGlmIChncmFudGVkKVxuICAgICAgICByZXR1cm4gX25hdmlnYXRvci5zaGFyZShkYXRhKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgc2hhcmVcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlU3BlZWNoUmVjb2duaXRpb24ob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBpbnRlcmltUmVzdWx0cyA9IHRydWUsXG4gICAgY29udGludW91cyA9IHRydWUsXG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvd1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgbGFuZyA9IHZ1ZURlbWkucmVmKG9wdGlvbnMubGFuZyB8fCBcImVuLVVTXCIpO1xuICBjb25zdCBpc0xpc3RlbmluZyA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgaXNGaW5hbCA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgcmVzdWx0ID0gdnVlRGVtaS5yZWYoXCJcIik7XG4gIGNvbnN0IGVycm9yID0gdnVlRGVtaS5zaGFsbG93UmVmKHZvaWQgMCk7XG4gIGNvbnN0IHRvZ2dsZSA9ICh2YWx1ZSA9ICFpc0xpc3RlbmluZy52YWx1ZSkgPT4ge1xuICAgIGlzTGlzdGVuaW5nLnZhbHVlID0gdmFsdWU7XG4gIH07XG4gIGNvbnN0IHN0YXJ0ID0gKCkgPT4ge1xuICAgIGlzTGlzdGVuaW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcbiAgY29uc3Qgc3RvcCA9ICgpID0+IHtcbiAgICBpc0xpc3RlbmluZy52YWx1ZSA9IGZhbHNlO1xuICB9O1xuICBjb25zdCBTcGVlY2hSZWNvZ25pdGlvbiA9IHdpbmRvdyAmJiAod2luZG93LlNwZWVjaFJlY29nbml0aW9uIHx8IHdpbmRvdy53ZWJraXRTcGVlY2hSZWNvZ25pdGlvbik7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gQm9vbGVhbihTcGVlY2hSZWNvZ25pdGlvbik7XG4gIGxldCByZWNvZ25pdGlvbjtcbiAgaWYgKGlzU3VwcG9ydGVkKSB7XG4gICAgcmVjb2duaXRpb24gPSBuZXcgU3BlZWNoUmVjb2duaXRpb24oKTtcbiAgICByZWNvZ25pdGlvbi5jb250aW51b3VzID0gY29udGludW91cztcbiAgICByZWNvZ25pdGlvbi5pbnRlcmltUmVzdWx0cyA9IGludGVyaW1SZXN1bHRzO1xuICAgIHJlY29nbml0aW9uLmxhbmcgPSB2dWVEZW1pLnVucmVmKGxhbmcpO1xuICAgIHJlY29nbml0aW9uLm9uc3RhcnQgPSAoKSA9PiB7XG4gICAgICBpc0ZpbmFsLnZhbHVlID0gZmFsc2U7XG4gICAgfTtcbiAgICB2dWVEZW1pLndhdGNoKGxhbmcsIChsYW5nMikgPT4ge1xuICAgICAgaWYgKHJlY29nbml0aW9uICYmICFpc0xpc3RlbmluZy52YWx1ZSlcbiAgICAgICAgcmVjb2duaXRpb24ubGFuZyA9IGxhbmcyO1xuICAgIH0pO1xuICAgIHJlY29nbml0aW9uLm9ucmVzdWx0ID0gKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB0cmFuc2NyaXB0ID0gQXJyYXkuZnJvbShldmVudC5yZXN1bHRzKS5tYXAoKHJlc3VsdDIpID0+IHtcbiAgICAgICAgaXNGaW5hbC52YWx1ZSA9IHJlc3VsdDIuaXNGaW5hbDtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDJbMF07XG4gICAgICB9KS5tYXAoKHJlc3VsdDIpID0+IHJlc3VsdDIudHJhbnNjcmlwdCkuam9pbihcIlwiKTtcbiAgICAgIHJlc3VsdC52YWx1ZSA9IHRyYW5zY3JpcHQ7XG4gICAgICBlcnJvci52YWx1ZSA9IHZvaWQgMDtcbiAgICB9O1xuICAgIHJlY29nbml0aW9uLm9uZXJyb3IgPSAoZXZlbnQpID0+IHtcbiAgICAgIGVycm9yLnZhbHVlID0gZXZlbnQ7XG4gICAgfTtcbiAgICByZWNvZ25pdGlvbi5vbmVuZCA9ICgpID0+IHtcbiAgICAgIGlzTGlzdGVuaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICByZWNvZ25pdGlvbi5sYW5nID0gdnVlRGVtaS51bnJlZihsYW5nKTtcbiAgICB9O1xuICAgIHZ1ZURlbWkud2F0Y2goaXNMaXN0ZW5pbmcsICgpID0+IHtcbiAgICAgIGlmIChpc0xpc3RlbmluZy52YWx1ZSlcbiAgICAgICAgcmVjb2duaXRpb24uc3RhcnQoKTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmVjb2duaXRpb24uc3RvcCgpO1xuICAgIH0pO1xuICB9XG4gIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZSgoKSA9PiB7XG4gICAgaXNMaXN0ZW5pbmcudmFsdWUgPSBmYWxzZTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgaXNMaXN0ZW5pbmcsXG4gICAgaXNGaW5hbCxcbiAgICByZWNvZ25pdGlvbixcbiAgICByZXN1bHQsXG4gICAgZXJyb3IsXG4gICAgdG9nZ2xlLFxuICAgIHN0YXJ0LFxuICAgIHN0b3BcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlU3BlZWNoU3ludGhlc2lzKHRleHQsIG9wdGlvbnMgPSB7fSkge1xuICB2YXIgX2EsIF9iO1xuICBjb25zdCB7XG4gICAgcGl0Y2ggPSAxLFxuICAgIHJhdGUgPSAxLFxuICAgIHZvbHVtZSA9IDEsXG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvd1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3Qgc3ludGggPSB3aW5kb3cgJiYgd2luZG93LnNwZWVjaFN5bnRoZXNpcztcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSBCb29sZWFuKHN5bnRoKTtcbiAgY29uc3QgaXNQbGF5aW5nID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBzdGF0dXMgPSB2dWVEZW1pLnJlZihcImluaXRcIik7XG4gIGNvbnN0IHZvaWNlSW5mbyA9IHtcbiAgICBsYW5nOiAoKF9hID0gb3B0aW9ucy52b2ljZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmxhbmcpIHx8IFwiZGVmYXVsdFwiLFxuICAgIG5hbWU6ICgoX2IgPSBvcHRpb25zLnZvaWNlKSA9PSBudWxsID8gdm9pZCAwIDogX2IubmFtZSkgfHwgXCJcIlxuICB9O1xuICBjb25zdCBzcG9rZW5UZXh0ID0gdnVlRGVtaS5yZWYodGV4dCB8fCBcIlwiKTtcbiAgY29uc3QgbGFuZyA9IHZ1ZURlbWkucmVmKG9wdGlvbnMubGFuZyB8fCBcImVuLVVTXCIpO1xuICBjb25zdCBlcnJvciA9IHZ1ZURlbWkuc2hhbGxvd1JlZih2b2lkIDApO1xuICBjb25zdCB0b2dnbGUgPSAodmFsdWUgPSAhaXNQbGF5aW5nLnZhbHVlKSA9PiB7XG4gICAgaXNQbGF5aW5nLnZhbHVlID0gdmFsdWU7XG4gIH07XG4gIGNvbnN0IGJpbmRFdmVudHNGb3JVdHRlcmFuY2UgPSAodXR0ZXJhbmNlMikgPT4ge1xuICAgIHV0dGVyYW5jZTIubGFuZyA9IHZ1ZURlbWkudW5yZWYobGFuZyk7XG4gICAgb3B0aW9ucy52b2ljZSAmJiAodXR0ZXJhbmNlMi52b2ljZSA9IG9wdGlvbnMudm9pY2UpO1xuICAgIHV0dGVyYW5jZTIucGl0Y2ggPSBwaXRjaDtcbiAgICB1dHRlcmFuY2UyLnJhdGUgPSByYXRlO1xuICAgIHV0dGVyYW5jZTIudm9sdW1lID0gdm9sdW1lO1xuICAgIHV0dGVyYW5jZTIub25zdGFydCA9ICgpID0+IHtcbiAgICAgIGlzUGxheWluZy52YWx1ZSA9IHRydWU7XG4gICAgICBzdGF0dXMudmFsdWUgPSBcInBsYXlcIjtcbiAgICB9O1xuICAgIHV0dGVyYW5jZTIub25wYXVzZSA9ICgpID0+IHtcbiAgICAgIGlzUGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgc3RhdHVzLnZhbHVlID0gXCJwYXVzZVwiO1xuICAgIH07XG4gICAgdXR0ZXJhbmNlMi5vbnJlc3VtZSA9ICgpID0+IHtcbiAgICAgIGlzUGxheWluZy52YWx1ZSA9IHRydWU7XG4gICAgICBzdGF0dXMudmFsdWUgPSBcInBsYXlcIjtcbiAgICB9O1xuICAgIHV0dGVyYW5jZTIub25lbmQgPSAoKSA9PiB7XG4gICAgICBpc1BsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHN0YXR1cy52YWx1ZSA9IFwiZW5kXCI7XG4gICAgfTtcbiAgICB1dHRlcmFuY2UyLm9uZXJyb3IgPSAoZXZlbnQpID0+IHtcbiAgICAgIGVycm9yLnZhbHVlID0gZXZlbnQ7XG4gICAgfTtcbiAgICB1dHRlcmFuY2UyLm9uZW5kID0gKCkgPT4ge1xuICAgICAgaXNQbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB1dHRlcmFuY2UyLmxhbmcgPSB2dWVEZW1pLnVucmVmKGxhbmcpO1xuICAgIH07XG4gIH07XG4gIGNvbnN0IHV0dGVyYW5jZSA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlzUGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHN0YXR1cy52YWx1ZSA9IFwiaW5pdFwiO1xuICAgIGNvbnN0IG5ld1V0dGVyYW5jZSA9IG5ldyBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uoc3Bva2VuVGV4dC52YWx1ZSk7XG4gICAgYmluZEV2ZW50c0ZvclV0dGVyYW5jZShuZXdVdHRlcmFuY2UpO1xuICAgIHJldHVybiBuZXdVdHRlcmFuY2U7XG4gIH0pO1xuICBjb25zdCBzcGVhayA9ICgpID0+IHtcbiAgICBzeW50aC5jYW5jZWwoKTtcbiAgICB1dHRlcmFuY2UgJiYgc3ludGguc3BlYWsodXR0ZXJhbmNlLnZhbHVlKTtcbiAgfTtcbiAgaWYgKGlzU3VwcG9ydGVkKSB7XG4gICAgYmluZEV2ZW50c0ZvclV0dGVyYW5jZSh1dHRlcmFuY2UudmFsdWUpO1xuICAgIHZ1ZURlbWkud2F0Y2gobGFuZywgKGxhbmcyKSA9PiB7XG4gICAgICBpZiAodXR0ZXJhbmNlLnZhbHVlICYmICFpc1BsYXlpbmcudmFsdWUpXG4gICAgICAgIHV0dGVyYW5jZS52YWx1ZS5sYW5nID0gbGFuZzI7XG4gICAgfSk7XG4gICAgdnVlRGVtaS53YXRjaChpc1BsYXlpbmcsICgpID0+IHtcbiAgICAgIGlmIChpc1BsYXlpbmcudmFsdWUpXG4gICAgICAgIHN5bnRoLnJlc3VtZSgpO1xuICAgICAgZWxzZVxuICAgICAgICBzeW50aC5wYXVzZSgpO1xuICAgIH0pO1xuICB9XG4gIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZSgoKSA9PiB7XG4gICAgaXNQbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIGlzUGxheWluZyxcbiAgICBzdGF0dXMsXG4gICAgdm9pY2VJbmZvLFxuICAgIHV0dGVyYW5jZSxcbiAgICBlcnJvcixcbiAgICB0b2dnbGUsXG4gICAgc3BlYWtcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlU3RlcHBlcihzdGVwcywgaW5pdGlhbFN0ZXApIHtcbiAgY29uc3Qgc3RlcHNSZWYgPSB2dWVEZW1pLnJlZihzdGVwcyk7XG4gIGNvbnN0IHN0ZXBOYW1lcyA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gQXJyYXkuaXNBcnJheShzdGVwc1JlZi52YWx1ZSkgPyBzdGVwc1JlZi52YWx1ZSA6IE9iamVjdC5rZXlzKHN0ZXBzUmVmLnZhbHVlKSk7XG4gIGNvbnN0IGluZGV4ID0gdnVlRGVtaS5yZWYoc3RlcE5hbWVzLnZhbHVlLmluZGV4T2YoaW5pdGlhbFN0ZXAgIT0gbnVsbCA/IGluaXRpYWxTdGVwIDogc3RlcE5hbWVzLnZhbHVlWzBdKSk7XG4gIGNvbnN0IGN1cnJlbnQgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IGF0KGluZGV4LnZhbHVlKSk7XG4gIGNvbnN0IGlzRmlyc3QgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IGluZGV4LnZhbHVlID09PSAwKTtcbiAgY29uc3QgaXNMYXN0ID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBpbmRleC52YWx1ZSA9PT0gc3RlcE5hbWVzLnZhbHVlLmxlbmd0aCAtIDEpO1xuICBjb25zdCBuZXh0ID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBzdGVwTmFtZXMudmFsdWVbaW5kZXgudmFsdWUgKyAxXSk7XG4gIGNvbnN0IHByZXZpb3VzID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBzdGVwTmFtZXMudmFsdWVbaW5kZXgudmFsdWUgLSAxXSk7XG4gIGZ1bmN0aW9uIGF0KGluZGV4Mikge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHN0ZXBzUmVmLnZhbHVlKSlcbiAgICAgIHJldHVybiBzdGVwc1JlZi52YWx1ZVtpbmRleDJdO1xuICAgIHJldHVybiBzdGVwc1JlZi52YWx1ZVtzdGVwTmFtZXMudmFsdWVbaW5kZXgyXV07XG4gIH1cbiAgZnVuY3Rpb24gZ2V0KHN0ZXApIHtcbiAgICBpZiAoIXN0ZXBOYW1lcy52YWx1ZS5pbmNsdWRlcyhzdGVwKSlcbiAgICAgIHJldHVybjtcbiAgICByZXR1cm4gYXQoc3RlcE5hbWVzLnZhbHVlLmluZGV4T2Yoc3RlcCkpO1xuICB9XG4gIGZ1bmN0aW9uIGdvVG8oc3RlcCkge1xuICAgIGlmIChzdGVwTmFtZXMudmFsdWUuaW5jbHVkZXMoc3RlcCkpXG4gICAgICBpbmRleC52YWx1ZSA9IHN0ZXBOYW1lcy52YWx1ZS5pbmRleE9mKHN0ZXApO1xuICB9XG4gIGZ1bmN0aW9uIGdvVG9OZXh0KCkge1xuICAgIGlmIChpc0xhc3QudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgaW5kZXgudmFsdWUrKztcbiAgfVxuICBmdW5jdGlvbiBnb1RvUHJldmlvdXMoKSB7XG4gICAgaWYgKGlzRmlyc3QudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgaW5kZXgudmFsdWUtLTtcbiAgfVxuICBmdW5jdGlvbiBnb0JhY2tUbyhzdGVwKSB7XG4gICAgaWYgKGlzQWZ0ZXIoc3RlcCkpXG4gICAgICBnb1RvKHN0ZXApO1xuICB9XG4gIGZ1bmN0aW9uIGlzTmV4dChzdGVwKSB7XG4gICAgcmV0dXJuIHN0ZXBOYW1lcy52YWx1ZS5pbmRleE9mKHN0ZXApID09PSBpbmRleC52YWx1ZSArIDE7XG4gIH1cbiAgZnVuY3Rpb24gaXNQcmV2aW91cyhzdGVwKSB7XG4gICAgcmV0dXJuIHN0ZXBOYW1lcy52YWx1ZS5pbmRleE9mKHN0ZXApID09PSBpbmRleC52YWx1ZSAtIDE7XG4gIH1cbiAgZnVuY3Rpb24gaXNDdXJyZW50KHN0ZXApIHtcbiAgICByZXR1cm4gc3RlcE5hbWVzLnZhbHVlLmluZGV4T2Yoc3RlcCkgPT09IGluZGV4LnZhbHVlO1xuICB9XG4gIGZ1bmN0aW9uIGlzQmVmb3JlKHN0ZXApIHtcbiAgICByZXR1cm4gaW5kZXgudmFsdWUgPCBzdGVwTmFtZXMudmFsdWUuaW5kZXhPZihzdGVwKTtcbiAgfVxuICBmdW5jdGlvbiBpc0FmdGVyKHN0ZXApIHtcbiAgICByZXR1cm4gaW5kZXgudmFsdWUgPiBzdGVwTmFtZXMudmFsdWUuaW5kZXhPZihzdGVwKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHN0ZXBzOiBzdGVwc1JlZixcbiAgICBzdGVwTmFtZXMsXG4gICAgaW5kZXgsXG4gICAgY3VycmVudCxcbiAgICBuZXh0LFxuICAgIHByZXZpb3VzLFxuICAgIGlzRmlyc3QsXG4gICAgaXNMYXN0LFxuICAgIGF0LFxuICAgIGdldCxcbiAgICBnb1RvLFxuICAgIGdvVG9OZXh0LFxuICAgIGdvVG9QcmV2aW91cyxcbiAgICBnb0JhY2tUbyxcbiAgICBpc05leHQsXG4gICAgaXNQcmV2aW91cyxcbiAgICBpc0N1cnJlbnQsXG4gICAgaXNCZWZvcmUsXG4gICAgaXNBZnRlclxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VTdG9yYWdlQXN5bmMoa2V5LCBpbml0aWFsVmFsdWUsIHN0b3JhZ2UsIG9wdGlvbnMgPSB7fSkge1xuICB2YXIgX2E7XG4gIGNvbnN0IHtcbiAgICBmbHVzaCA9IFwicHJlXCIsXG4gICAgZGVlcCA9IHRydWUsXG4gICAgbGlzdGVuVG9TdG9yYWdlQ2hhbmdlcyA9IHRydWUsXG4gICAgd3JpdGVEZWZhdWx0cyA9IHRydWUsXG4gICAgc2hhbGxvdyxcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93LFxuICAgIGV2ZW50RmlsdGVyLFxuICAgIG9uRXJyb3IgPSAoZSkgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCByYXdJbml0ID0gdnVlRGVtaS51bnJlZihpbml0aWFsVmFsdWUpO1xuICBjb25zdCB0eXBlID0gZ3Vlc3NTZXJpYWxpemVyVHlwZShyYXdJbml0KTtcbiAgY29uc3QgZGF0YSA9IChzaGFsbG93ID8gdnVlRGVtaS5zaGFsbG93UmVmIDogdnVlRGVtaS5yZWYpKGluaXRpYWxWYWx1ZSk7XG4gIGNvbnN0IHNlcmlhbGl6ZXIgPSAoX2EgPSBvcHRpb25zLnNlcmlhbGl6ZXIpICE9IG51bGwgPyBfYSA6IFN0b3JhZ2VTZXJpYWxpemVyc1t0eXBlXTtcbiAgaWYgKCFzdG9yYWdlKSB7XG4gICAgdHJ5IHtcbiAgICAgIHN0b3JhZ2UgPSBnZXRTU1JIYW5kbGVyKFwiZ2V0RGVmYXVsdFN0b3JhZ2VcIiwgKCkgPT4ge1xuICAgICAgICB2YXIgX2EyO1xuICAgICAgICByZXR1cm4gKF9hMiA9IGRlZmF1bHRXaW5kb3cpID09IG51bGwgPyB2b2lkIDAgOiBfYTIubG9jYWxTdG9yYWdlO1xuICAgICAgfSkoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBvbkVycm9yKGUpO1xuICAgIH1cbiAgfVxuICBhc3luYyBmdW5jdGlvbiByZWFkKGV2ZW50KSB7XG4gICAgaWYgKCFzdG9yYWdlIHx8IGV2ZW50ICYmIGV2ZW50LmtleSAhPT0ga2V5KVxuICAgICAgcmV0dXJuO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByYXdWYWx1ZSA9IGV2ZW50ID8gZXZlbnQubmV3VmFsdWUgOiBhd2FpdCBzdG9yYWdlLmdldEl0ZW0oa2V5KTtcbiAgICAgIGlmIChyYXdWYWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIGRhdGEudmFsdWUgPSByYXdJbml0O1xuICAgICAgICBpZiAod3JpdGVEZWZhdWx0cyAmJiByYXdJbml0ICE9PSBudWxsKVxuICAgICAgICAgIGF3YWl0IHN0b3JhZ2Uuc2V0SXRlbShrZXksIGF3YWl0IHNlcmlhbGl6ZXIud3JpdGUocmF3SW5pdCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0YS52YWx1ZSA9IGF3YWl0IHNlcmlhbGl6ZXIucmVhZChyYXdWYWx1ZSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgb25FcnJvcihlKTtcbiAgICB9XG4gIH1cbiAgcmVhZCgpO1xuICBpZiAod2luZG93ICYmIGxpc3RlblRvU3RvcmFnZUNoYW5nZXMpXG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwic3RvcmFnZVwiLCAoZSkgPT4gc2V0VGltZW91dCgoKSA9PiByZWFkKGUpLCAwKSk7XG4gIGlmIChzdG9yYWdlKSB7XG4gICAgc2hhcmVkLndhdGNoV2l0aEZpbHRlcihkYXRhLCBhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoZGF0YS52YWx1ZSA9PSBudWxsKVxuICAgICAgICAgIGF3YWl0IHN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgYXdhaXQgc3RvcmFnZS5zZXRJdGVtKGtleSwgYXdhaXQgc2VyaWFsaXplci53cml0ZShkYXRhLnZhbHVlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIG9uRXJyb3IoZSk7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAgZmx1c2gsXG4gICAgICBkZWVwLFxuICAgICAgZXZlbnRGaWx0ZXJcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gZGF0YTtcbn1cblxubGV0IF9pZCA9IDA7XG5mdW5jdGlvbiB1c2VTdHlsZVRhZyhjc3MsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBpc0xvYWRlZCA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3Qge1xuICAgIGRvY3VtZW50ID0gZGVmYXVsdERvY3VtZW50LFxuICAgIGltbWVkaWF0ZSA9IHRydWUsXG4gICAgbWFudWFsID0gZmFsc2UsXG4gICAgaWQgPSBgdnVldXNlX3N0eWxldGFnXyR7KytfaWR9YFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgY3NzUmVmID0gdnVlRGVtaS5yZWYoY3NzKTtcbiAgbGV0IHN0b3AgPSAoKSA9PiB7XG4gIH07XG4gIGNvbnN0IGxvYWQgPSAoKSA9PiB7XG4gICAgaWYgKCFkb2N1bWVudClcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gICAgZWwudHlwZSA9IFwidGV4dC9jc3NcIjtcbiAgICBlbC5pZCA9IGlkO1xuICAgIGlmIChvcHRpb25zLm1lZGlhKVxuICAgICAgZWwubWVkaWEgPSBvcHRpb25zLm1lZGlhO1xuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoZWwpO1xuICAgIGlmIChpc0xvYWRlZC52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBzdG9wID0gdnVlRGVtaS53YXRjaChjc3NSZWYsICh2YWx1ZSkgPT4ge1xuICAgICAgZWwuaW5uZXJUZXh0ID0gdmFsdWU7XG4gICAgfSwgeyBpbW1lZGlhdGU6IHRydWUgfSk7XG4gICAgaXNMb2FkZWQudmFsdWUgPSB0cnVlO1xuICB9O1xuICBjb25zdCB1bmxvYWQgPSAoKSA9PiB7XG4gICAgaWYgKCFkb2N1bWVudCB8fCAhaXNMb2FkZWQudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgc3RvcCgpO1xuICAgIGRvY3VtZW50LmhlYWQucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpKTtcbiAgICBpc0xvYWRlZC52YWx1ZSA9IGZhbHNlO1xuICB9O1xuICBpZiAoaW1tZWRpYXRlICYmICFtYW51YWwpXG4gICAgc2hhcmVkLnRyeU9uTW91bnRlZChsb2FkKTtcbiAgaWYgKCFtYW51YWwpXG4gICAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKHVubG9hZCk7XG4gIHJldHVybiB7XG4gICAgaWQsXG4gICAgY3NzOiBjc3NSZWYsXG4gICAgdW5sb2FkLFxuICAgIGxvYWQsXG4gICAgaXNMb2FkZWQ6IHZ1ZURlbWkucmVhZG9ubHkoaXNMb2FkZWQpXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZVRlbXBsYXRlUmVmc0xpc3QoKSB7XG4gIGNvbnN0IHJlZnMgPSB2dWVEZW1pLnJlZihbXSk7XG4gIHJlZnMudmFsdWUuc2V0ID0gKGVsKSA9PiB7XG4gICAgaWYgKGVsKVxuICAgICAgcmVmcy52YWx1ZS5wdXNoKGVsKTtcbiAgfTtcbiAgdnVlRGVtaS5vbkJlZm9yZVVwZGF0ZSgoKSA9PiB7XG4gICAgcmVmcy52YWx1ZS5sZW5ndGggPSAwO1xuICB9KTtcbiAgcmV0dXJuIHJlZnM7XG59XG5cbmZ1bmN0aW9uIGdldFJhbmdlc0Zyb21TZWxlY3Rpb24oc2VsZWN0aW9uKSB7XG4gIHZhciBfYTtcbiAgY29uc3QgcmFuZ2VDb3VudCA9IChfYSA9IHNlbGVjdGlvbi5yYW5nZUNvdW50KSAhPSBudWxsID8gX2EgOiAwO1xuICBjb25zdCByYW5nZXMgPSBuZXcgQXJyYXkocmFuZ2VDb3VudCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmFuZ2VDb3VudDsgaSsrKSB7XG4gICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdChpKTtcbiAgICByYW5nZXNbaV0gPSByYW5nZTtcbiAgfVxuICByZXR1cm4gcmFuZ2VzO1xufVxuZnVuY3Rpb24gdXNlVGV4dFNlbGVjdGlvbihvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3dcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHNlbGVjdGlvbiA9IHZ1ZURlbWkucmVmKG51bGwpO1xuICBjb25zdCB0ZXh0ID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICByZXR1cm4gKF9iID0gKF9hID0gc2VsZWN0aW9uLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EudG9TdHJpbmcoKSkgIT0gbnVsbCA/IF9iIDogXCJcIjtcbiAgfSk7XG4gIGNvbnN0IHJhbmdlcyA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gc2VsZWN0aW9uLnZhbHVlID8gZ2V0UmFuZ2VzRnJvbVNlbGVjdGlvbihzZWxlY3Rpb24udmFsdWUpIDogW10pO1xuICBjb25zdCByZWN0cyA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gcmFuZ2VzLnZhbHVlLm1hcCgocmFuZ2UpID0+IHJhbmdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSk7XG4gIGZ1bmN0aW9uIG9uU2VsZWN0aW9uQ2hhbmdlKCkge1xuICAgIHNlbGVjdGlvbi52YWx1ZSA9IG51bGw7XG4gICAgaWYgKHdpbmRvdylcbiAgICAgIHNlbGVjdGlvbi52YWx1ZSA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgfVxuICBpZiAod2luZG93KVxuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LmRvY3VtZW50LCBcInNlbGVjdGlvbmNoYW5nZVwiLCBvblNlbGVjdGlvbkNoYW5nZSk7XG4gIHJldHVybiB7XG4gICAgdGV4dCxcbiAgICByZWN0cyxcbiAgICByYW5nZXMsXG4gICAgc2VsZWN0aW9uXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZVRleHRhcmVhQXV0b3NpemUob3B0aW9ucykge1xuICBjb25zdCB0ZXh0YXJlYSA9IHZ1ZURlbWkucmVmKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuZWxlbWVudCk7XG4gIGNvbnN0IGlucHV0ID0gdnVlRGVtaS5yZWYob3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5pbnB1dCk7XG4gIGZ1bmN0aW9uIHRyaWdnZXJSZXNpemUoKSB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBpZiAoIXRleHRhcmVhLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIHRleHRhcmVhLnZhbHVlLnN0eWxlLmhlaWdodCA9IFwiMXB4XCI7XG4gICAgdGV4dGFyZWEudmFsdWUuc3R5bGUuaGVpZ2h0ID0gYCR7KF9hID0gdGV4dGFyZWEudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5zY3JvbGxIZWlnaHR9cHhgO1xuICAgIChfYiA9IG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMub25SZXNpemUpID09IG51bGwgPyB2b2lkIDAgOiBfYi5jYWxsKG9wdGlvbnMpO1xuICB9XG4gIHZ1ZURlbWkud2F0Y2goW2lucHV0LCB0ZXh0YXJlYV0sIHRyaWdnZXJSZXNpemUsIHsgaW1tZWRpYXRlOiB0cnVlIH0pO1xuICBpZiAob3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy53YXRjaClcbiAgICB2dWVEZW1pLndhdGNoKG9wdGlvbnMud2F0Y2gsIHRyaWdnZXJSZXNpemUsIHsgaW1tZWRpYXRlOiB0cnVlLCBkZWVwOiB0cnVlIH0pO1xuICByZXR1cm4ge1xuICAgIHRleHRhcmVhLFxuICAgIGlucHV0LFxuICAgIHRyaWdnZXJSZXNpemVcbiAgfTtcbn1cblxudmFyIF9fZGVmUHJvcCQyID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmUHJvcHMgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcztcbnZhciBfX2dldE93blByb3BEZXNjcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzO1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkMiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJDIgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSQyID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkMiA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkMihvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkMiA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJDIuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCQyKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyQyKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyQyKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJDIuY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJDIoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG52YXIgX19zcHJlYWRQcm9wcyA9IChhLCBiKSA9PiBfX2RlZlByb3BzKGEsIF9fZ2V0T3duUHJvcERlc2NzKGIpKTtcbmZ1bmN0aW9uIHVzZVRocm90dGxlZFJlZkhpc3Rvcnkoc291cmNlLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgeyB0aHJvdHRsZSA9IDIwMCwgdHJhaWxpbmcgPSB0cnVlIH0gPSBvcHRpb25zO1xuICBjb25zdCBmaWx0ZXIgPSBzaGFyZWQudGhyb3R0bGVGaWx0ZXIodGhyb3R0bGUsIHRyYWlsaW5nKTtcbiAgY29uc3QgaGlzdG9yeSA9IHVzZVJlZkhpc3Rvcnkoc291cmNlLCBfX3NwcmVhZFByb3BzKF9fc3ByZWFkVmFsdWVzJDIoe30sIG9wdGlvbnMpLCB7IGV2ZW50RmlsdGVyOiBmaWx0ZXIgfSkpO1xuICByZXR1cm4gX19zcHJlYWRWYWx1ZXMkMih7fSwgaGlzdG9yeSk7XG59XG5cbnZhciBfX2RlZlByb3AkMSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BTeW1ib2xzJDEgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCQxID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kMSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJDEgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJDEob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJDEgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCQxLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkMShhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkMSlcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkMShiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSQxLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCQxKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xudmFyIF9fb2JqUmVzdCA9IChzb3VyY2UsIGV4Y2x1ZGUpID0+IHtcbiAgdmFyIHRhcmdldCA9IHt9O1xuICBmb3IgKHZhciBwcm9wIGluIHNvdXJjZSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJDEuY2FsbChzb3VyY2UsIHByb3ApICYmIGV4Y2x1ZGUuaW5kZXhPZihwcm9wKSA8IDApXG4gICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gIGlmIChzb3VyY2UgIT0gbnVsbCAmJiBfX2dldE93blByb3BTeW1ib2xzJDEpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJDEoc291cmNlKSkge1xuICAgICAgaWYgKGV4Y2x1ZGUuaW5kZXhPZihwcm9wKSA8IDAgJiYgX19wcm9wSXNFbnVtJDEuY2FsbChzb3VyY2UsIHByb3ApKVxuICAgICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gICAgfVxuICByZXR1cm4gdGFyZ2V0O1xufTtcbmNvbnN0IFVOSVRTID0gW1xuICB7IG1heDogNmU0LCB2YWx1ZTogMWUzLCBuYW1lOiBcInNlY29uZFwiIH0sXG4gIHsgbWF4OiAyNzZlNCwgdmFsdWU6IDZlNCwgbmFtZTogXCJtaW51dGVcIiB9LFxuICB7IG1heDogNzJlNiwgdmFsdWU6IDM2ZTUsIG5hbWU6IFwiaG91clwiIH0sXG4gIHsgbWF4OiA1MTg0ZTUsIHZhbHVlOiA4NjRlNSwgbmFtZTogXCJkYXlcIiB9LFxuICB7IG1heDogMjQxOTJlNSwgdmFsdWU6IDYwNDhlNSwgbmFtZTogXCJ3ZWVrXCIgfSxcbiAgeyBtYXg6IDI4NTEyZTYsIHZhbHVlOiAyNTkyZTYsIG5hbWU6IFwibW9udGhcIiB9LFxuICB7IG1heDogSW5maW5pdHksIHZhbHVlOiAzMTUzNmU2LCBuYW1lOiBcInllYXJcIiB9XG5dO1xuY29uc3QgREVGQVVMVF9NRVNTQUdFUyA9IHtcbiAganVzdE5vdzogXCJqdXN0IG5vd1wiLFxuICBwYXN0OiAobikgPT4gbi5tYXRjaCgvXFxkLykgPyBgJHtufSBhZ29gIDogbixcbiAgZnV0dXJlOiAobikgPT4gbi5tYXRjaCgvXFxkLykgPyBgaW4gJHtufWAgOiBuLFxuICBtb250aDogKG4sIHBhc3QpID0+IG4gPT09IDEgPyBwYXN0ID8gXCJsYXN0IG1vbnRoXCIgOiBcIm5leHQgbW9udGhcIiA6IGAke259IG1vbnRoJHtuID4gMSA/IFwic1wiIDogXCJcIn1gLFxuICB5ZWFyOiAobiwgcGFzdCkgPT4gbiA9PT0gMSA/IHBhc3QgPyBcImxhc3QgeWVhclwiIDogXCJuZXh0IHllYXJcIiA6IGAke259IHllYXIke24gPiAxID8gXCJzXCIgOiBcIlwifWAsXG4gIGRheTogKG4sIHBhc3QpID0+IG4gPT09IDEgPyBwYXN0ID8gXCJ5ZXN0ZXJkYXlcIiA6IFwidG9tb3Jyb3dcIiA6IGAke259IGRheSR7biA+IDEgPyBcInNcIiA6IFwiXCJ9YCxcbiAgd2VlazogKG4sIHBhc3QpID0+IG4gPT09IDEgPyBwYXN0ID8gXCJsYXN0IHdlZWtcIiA6IFwibmV4dCB3ZWVrXCIgOiBgJHtufSB3ZWVrJHtuID4gMSA/IFwic1wiIDogXCJcIn1gLFxuICBob3VyOiAobikgPT4gYCR7bn0gaG91ciR7biA+IDEgPyBcInNcIiA6IFwiXCJ9YCxcbiAgbWludXRlOiAobikgPT4gYCR7bn0gbWludXRlJHtuID4gMSA/IFwic1wiIDogXCJcIn1gLFxuICBzZWNvbmQ6IChuKSA9PiBgJHtufSBzZWNvbmQke24gPiAxID8gXCJzXCIgOiBcIlwifWBcbn07XG5jb25zdCBERUZBVUxUX0ZPUk1BVFRFUiA9IChkYXRlKSA9PiBkYXRlLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwgMTApO1xuZnVuY3Rpb24gdXNlVGltZUFnbyh0aW1lLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGNvbnRyb2xzOiBleHBvc2VDb250cm9scyA9IGZhbHNlLFxuICAgIG1heCxcbiAgICB1cGRhdGVJbnRlcnZhbCA9IDNlNCxcbiAgICBtZXNzYWdlcyA9IERFRkFVTFRfTUVTU0FHRVMsXG4gICAgZnVsbERhdGVGb3JtYXR0ZXIgPSBERUZBVUxUX0ZPUk1BVFRFUlxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBhYnMsIHJvdW5kIH0gPSBNYXRoO1xuICBjb25zdCBfYSA9IHVzZU5vdyh7IGludGVydmFsOiB1cGRhdGVJbnRlcnZhbCwgY29udHJvbHM6IHRydWUgfSksIHsgbm93IH0gPSBfYSwgY29udHJvbHMgPSBfX29ialJlc3QoX2EsIFtcIm5vd1wiXSk7XG4gIGZ1bmN0aW9uIGdldFRpbWVhZ28oZnJvbSwgbm93Mikge1xuICAgIHZhciBfYTI7XG4gICAgY29uc3QgZGlmZiA9ICtub3cyIC0gK2Zyb207XG4gICAgY29uc3QgYWJzRGlmZiA9IGFicyhkaWZmKTtcbiAgICBpZiAoYWJzRGlmZiA8IDZlNClcbiAgICAgIHJldHVybiBtZXNzYWdlcy5qdXN0Tm93O1xuICAgIGlmICh0eXBlb2YgbWF4ID09PSBcIm51bWJlclwiICYmIGFic0RpZmYgPiBtYXgpXG4gICAgICByZXR1cm4gZnVsbERhdGVGb3JtYXR0ZXIobmV3IERhdGUoZnJvbSkpO1xuICAgIGlmICh0eXBlb2YgbWF4ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBjb25zdCB1bml0TWF4ID0gKF9hMiA9IFVOSVRTLmZpbmQoKGkpID0+IGkubmFtZSA9PT0gbWF4KSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5tYXg7XG4gICAgICBpZiAodW5pdE1heCAmJiBhYnNEaWZmID4gdW5pdE1heClcbiAgICAgICAgcmV0dXJuIGZ1bGxEYXRlRm9ybWF0dGVyKG5ldyBEYXRlKGZyb20pKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCB1bml0IG9mIFVOSVRTKSB7XG4gICAgICBpZiAoYWJzRGlmZiA8IHVuaXQubWF4KVxuICAgICAgICByZXR1cm4gZm9ybWF0KGRpZmYsIHVuaXQpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBhcHBseUZvcm1hdChuYW1lLCB2YWwsIGlzUGFzdCkge1xuICAgIGNvbnN0IGZvcm1hdHRlciA9IG1lc3NhZ2VzW25hbWVdO1xuICAgIGlmICh0eXBlb2YgZm9ybWF0dGVyID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICByZXR1cm4gZm9ybWF0dGVyKHZhbCwgaXNQYXN0KTtcbiAgICByZXR1cm4gZm9ybWF0dGVyLnJlcGxhY2UoXCJ7MH1cIiwgdmFsLnRvU3RyaW5nKCkpO1xuICB9XG4gIGZ1bmN0aW9uIGZvcm1hdChkaWZmLCB1bml0KSB7XG4gICAgY29uc3QgdmFsID0gcm91bmQoYWJzKGRpZmYpIC8gdW5pdC52YWx1ZSk7XG4gICAgY29uc3QgcGFzdCA9IGRpZmYgPiAwO1xuICAgIGNvbnN0IHN0ciA9IGFwcGx5Rm9ybWF0KHVuaXQubmFtZSwgdmFsLCBwYXN0KTtcbiAgICByZXR1cm4gYXBwbHlGb3JtYXQocGFzdCA/IFwicGFzdFwiIDogXCJmdXR1cmVcIiwgc3RyLCBwYXN0KTtcbiAgfVxuICBjb25zdCB0aW1lQWdvID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBnZXRUaW1lYWdvKG5ldyBEYXRlKHZ1ZURlbWkudW5yZWYodGltZSkpLCB2dWVEZW1pLnVucmVmKG5vdy52YWx1ZSkpKTtcbiAgaWYgKGV4cG9zZUNvbnRyb2xzKSB7XG4gICAgcmV0dXJuIF9fc3ByZWFkVmFsdWVzJDEoe1xuICAgICAgdGltZUFnb1xuICAgIH0sIGNvbnRyb2xzKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdGltZUFnbztcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VUaW1lb3V0UG9sbChmbiwgaW50ZXJ2YWwsIHRpbWVvdXRQb2xsT3B0aW9ucykge1xuICBjb25zdCB7IHN0YXJ0IH0gPSBzaGFyZWQudXNlVGltZW91dEZuKGxvb3AsIGludGVydmFsKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGFzeW5jIGZ1bmN0aW9uIGxvb3AoKSB7XG4gICAgaWYgKCFpc0FjdGl2ZS52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBhd2FpdCBmbigpO1xuICAgIHN0YXJ0KCk7XG4gIH1cbiAgZnVuY3Rpb24gcmVzdW1lKCkge1xuICAgIGlmICghaXNBY3RpdmUudmFsdWUpIHtcbiAgICAgIGlzQWN0aXZlLnZhbHVlID0gdHJ1ZTtcbiAgICAgIGxvb3AoKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gcGF1c2UoKSB7XG4gICAgaXNBY3RpdmUudmFsdWUgPSBmYWxzZTtcbiAgfVxuICBpZiAodGltZW91dFBvbGxPcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiB0aW1lb3V0UG9sbE9wdGlvbnMuaW1tZWRpYXRlKVxuICAgIHJlc3VtZSgpO1xuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UocGF1c2UpO1xuICByZXR1cm4ge1xuICAgIGlzQWN0aXZlLFxuICAgIHBhdXNlLFxuICAgIHJlc3VtZVxuICB9O1xufVxuXG52YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyhiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bS5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG5mdW5jdGlvbiB1c2VUaW1lc3RhbXAob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBjb250cm9sczogZXhwb3NlQ29udHJvbHMgPSBmYWxzZSxcbiAgICBvZmZzZXQgPSAwLFxuICAgIGltbWVkaWF0ZSA9IHRydWUsXG4gICAgaW50ZXJ2YWwgPSBcInJlcXVlc3RBbmltYXRpb25GcmFtZVwiXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCB0cyA9IHZ1ZURlbWkucmVmKHNoYXJlZC50aW1lc3RhbXAoKSArIG9mZnNldCk7XG4gIGNvbnN0IHVwZGF0ZSA9ICgpID0+IHRzLnZhbHVlID0gc2hhcmVkLnRpbWVzdGFtcCgpICsgb2Zmc2V0O1xuICBjb25zdCBjb250cm9scyA9IGludGVydmFsID09PSBcInJlcXVlc3RBbmltYXRpb25GcmFtZVwiID8gdXNlUmFmRm4odXBkYXRlLCB7IGltbWVkaWF0ZSB9KSA6IHNoYXJlZC51c2VJbnRlcnZhbEZuKHVwZGF0ZSwgaW50ZXJ2YWwsIHsgaW1tZWRpYXRlIH0pO1xuICBpZiAoZXhwb3NlQ29udHJvbHMpIHtcbiAgICByZXR1cm4gX19zcHJlYWRWYWx1ZXMoe1xuICAgICAgdGltZXN0YW1wOiB0c1xuICAgIH0sIGNvbnRyb2xzKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdHM7XG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlVGl0bGUobmV3VGl0bGUgPSBudWxsLCBvcHRpb25zID0ge30pIHtcbiAgdmFyIF9hLCBfYjtcbiAgY29uc3Qge1xuICAgIGRvY3VtZW50ID0gZGVmYXVsdERvY3VtZW50LFxuICAgIG9ic2VydmUgPSBmYWxzZSxcbiAgICB0aXRsZVRlbXBsYXRlID0gXCIlc1wiXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCB0aXRsZSA9IHZ1ZURlbWkucmVmKChfYSA9IG5ld1RpdGxlICE9IG51bGwgPyBuZXdUaXRsZSA6IGRvY3VtZW50ID09IG51bGwgPyB2b2lkIDAgOiBkb2N1bWVudC50aXRsZSkgIT0gbnVsbCA/IF9hIDogbnVsbCk7XG4gIHZ1ZURlbWkud2F0Y2godGl0bGUsICh0LCBvKSA9PiB7XG4gICAgaWYgKHNoYXJlZC5pc1N0cmluZyh0KSAmJiB0ICE9PSBvICYmIGRvY3VtZW50KVxuICAgICAgZG9jdW1lbnQudGl0bGUgPSB0aXRsZVRlbXBsYXRlLnJlcGxhY2UoXCIlc1wiLCB0KTtcbiAgfSwgeyBpbW1lZGlhdGU6IHRydWUgfSk7XG4gIGlmIChvYnNlcnZlICYmIGRvY3VtZW50KSB7XG4gICAgdXNlTXV0YXRpb25PYnNlcnZlcigoX2IgPSBkb2N1bWVudC5oZWFkKSA9PSBudWxsID8gdm9pZCAwIDogX2IucXVlcnlTZWxlY3RvcihcInRpdGxlXCIpLCAoKSA9PiB7XG4gICAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQudGl0bGUgIT09IHRpdGxlLnZhbHVlKVxuICAgICAgICB0aXRsZS52YWx1ZSA9IHRpdGxlVGVtcGxhdGUucmVwbGFjZShcIiVzXCIsIGRvY3VtZW50LnRpdGxlKTtcbiAgICB9LCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTtcbiAgfVxuICByZXR1cm4gdGl0bGU7XG59XG5cbmNvbnN0IFRyYW5zaXRpb25QcmVzZXRzID0ge1xuICBsaW5lYXI6IHNoYXJlZC5pZGVudGl0eSxcbiAgZWFzZUluU2luZTogWzAuMTIsIDAsIDAuMzksIDBdLFxuICBlYXNlT3V0U2luZTogWzAuNjEsIDEsIDAuODgsIDFdLFxuICBlYXNlSW5PdXRTaW5lOiBbMC4zNywgMCwgMC42MywgMV0sXG4gIGVhc2VJblF1YWQ6IFswLjExLCAwLCAwLjUsIDBdLFxuICBlYXNlT3V0UXVhZDogWzAuNSwgMSwgMC44OSwgMV0sXG4gIGVhc2VJbk91dFF1YWQ6IFswLjQ1LCAwLCAwLjU1LCAxXSxcbiAgZWFzZUluQ3ViaWM6IFswLjMyLCAwLCAwLjY3LCAwXSxcbiAgZWFzZU91dEN1YmljOiBbMC4zMywgMSwgMC42OCwgMV0sXG4gIGVhc2VJbk91dEN1YmljOiBbMC42NSwgMCwgMC4zNSwgMV0sXG4gIGVhc2VJblF1YXJ0OiBbMC41LCAwLCAwLjc1LCAwXSxcbiAgZWFzZU91dFF1YXJ0OiBbMC4yNSwgMSwgMC41LCAxXSxcbiAgZWFzZUluT3V0UXVhcnQ6IFswLjc2LCAwLCAwLjI0LCAxXSxcbiAgZWFzZUluUXVpbnQ6IFswLjY0LCAwLCAwLjc4LCAwXSxcbiAgZWFzZU91dFF1aW50OiBbMC4yMiwgMSwgMC4zNiwgMV0sXG4gIGVhc2VJbk91dFF1aW50OiBbMC44MywgMCwgMC4xNywgMV0sXG4gIGVhc2VJbkV4cG86IFswLjcsIDAsIDAuODQsIDBdLFxuICBlYXNlT3V0RXhwbzogWzAuMTYsIDEsIDAuMywgMV0sXG4gIGVhc2VJbk91dEV4cG86IFswLjg3LCAwLCAwLjEzLCAxXSxcbiAgZWFzZUluQ2lyYzogWzAuNTUsIDAsIDEsIDAuNDVdLFxuICBlYXNlT3V0Q2lyYzogWzAsIDAuNTUsIDAuNDUsIDFdLFxuICBlYXNlSW5PdXRDaXJjOiBbMC44NSwgMCwgMC4xNSwgMV0sXG4gIGVhc2VJbkJhY2s6IFswLjM2LCAwLCAwLjY2LCAtMC41Nl0sXG4gIGVhc2VPdXRCYWNrOiBbMC4zNCwgMS41NiwgMC42NCwgMV0sXG4gIGVhc2VJbk91dEJhY2s6IFswLjY4LCAtMC42LCAwLjMyLCAxLjZdXG59O1xuZnVuY3Rpb24gY3JlYXRlRWFzaW5nRnVuY3Rpb24oW3AwLCBwMSwgcDIsIHAzXSkge1xuICBjb25zdCBhID0gKGExLCBhMikgPT4gMSAtIDMgKiBhMiArIDMgKiBhMTtcbiAgY29uc3QgYiA9IChhMSwgYTIpID0+IDMgKiBhMiAtIDYgKiBhMTtcbiAgY29uc3QgYyA9IChhMSkgPT4gMyAqIGExO1xuICBjb25zdCBjYWxjQmV6aWVyID0gKHQsIGExLCBhMikgPT4gKChhKGExLCBhMikgKiB0ICsgYihhMSwgYTIpKSAqIHQgKyBjKGExKSkgKiB0O1xuICBjb25zdCBnZXRTbG9wZSA9ICh0LCBhMSwgYTIpID0+IDMgKiBhKGExLCBhMikgKiB0ICogdCArIDIgKiBiKGExLCBhMikgKiB0ICsgYyhhMSk7XG4gIGNvbnN0IGdldFRmb3JYID0gKHgpID0+IHtcbiAgICBsZXQgYUd1ZXNzVCA9IHg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyArK2kpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRTbG9wZSA9IGdldFNsb3BlKGFHdWVzc1QsIHAwLCBwMik7XG4gICAgICBpZiAoY3VycmVudFNsb3BlID09PSAwKVxuICAgICAgICByZXR1cm4gYUd1ZXNzVDtcbiAgICAgIGNvbnN0IGN1cnJlbnRYID0gY2FsY0JlemllcihhR3Vlc3NULCBwMCwgcDIpIC0geDtcbiAgICAgIGFHdWVzc1QgLT0gY3VycmVudFggLyBjdXJyZW50U2xvcGU7XG4gICAgfVxuICAgIHJldHVybiBhR3Vlc3NUO1xuICB9O1xuICByZXR1cm4gKHgpID0+IHAwID09PSBwMSAmJiBwMiA9PT0gcDMgPyB4IDogY2FsY0JlemllcihnZXRUZm9yWCh4KSwgcDEsIHAzKTtcbn1cbmZ1bmN0aW9uIHVzZVRyYW5zaXRpb24oc291cmNlLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGRlbGF5ID0gMCxcbiAgICBkaXNhYmxlZCA9IGZhbHNlLFxuICAgIGR1cmF0aW9uID0gMWUzLFxuICAgIG9uRmluaXNoZWQgPSBzaGFyZWQubm9vcCxcbiAgICBvblN0YXJ0ZWQgPSBzaGFyZWQubm9vcCxcbiAgICB0cmFuc2l0aW9uID0gc2hhcmVkLmlkZW50aXR5XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBjdXJyZW50VHJhbnNpdGlvbiA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHQgPSB2dWVEZW1pLnVucmVmKHRyYW5zaXRpb24pO1xuICAgIHJldHVybiBzaGFyZWQuaXNGdW5jdGlvbih0KSA/IHQgOiBjcmVhdGVFYXNpbmdGdW5jdGlvbih0KTtcbiAgfSk7XG4gIGNvbnN0IHNvdXJjZVZhbHVlID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcyA9IHZ1ZURlbWkudW5yZWYoc291cmNlKTtcbiAgICByZXR1cm4gc2hhcmVkLmlzTnVtYmVyKHMpID8gcyA6IHMubWFwKHZ1ZURlbWkudW5yZWYpO1xuICB9KTtcbiAgY29uc3Qgc291cmNlVmVjdG9yID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBzaGFyZWQuaXNOdW1iZXIoc291cmNlVmFsdWUudmFsdWUpID8gW3NvdXJjZVZhbHVlLnZhbHVlXSA6IHNvdXJjZVZhbHVlLnZhbHVlKTtcbiAgY29uc3Qgb3V0cHV0VmVjdG9yID0gdnVlRGVtaS5yZWYoc291cmNlVmVjdG9yLnZhbHVlLnNsaWNlKDApKTtcbiAgbGV0IGN1cnJlbnREdXJhdGlvbjtcbiAgbGV0IGRpZmZWZWN0b3I7XG4gIGxldCBlbmRBdDtcbiAgbGV0IHN0YXJ0QXQ7XG4gIGxldCBzdGFydFZlY3RvcjtcbiAgY29uc3QgeyByZXN1bWUsIHBhdXNlIH0gPSB1c2VSYWZGbigoKSA9PiB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBwcm9ncmVzcyA9IHNoYXJlZC5jbGFtcCgxIC0gKGVuZEF0IC0gbm93KSAvIGN1cnJlbnREdXJhdGlvbiwgMCwgMSk7XG4gICAgb3V0cHV0VmVjdG9yLnZhbHVlID0gc3RhcnRWZWN0b3IubWFwKCh2YWwsIGkpID0+IHtcbiAgICAgIHZhciBfYTtcbiAgICAgIHJldHVybiB2YWwgKyAoKF9hID0gZGlmZlZlY3RvcltpXSkgIT0gbnVsbCA/IF9hIDogMCkgKiBjdXJyZW50VHJhbnNpdGlvbi52YWx1ZShwcm9ncmVzcyk7XG4gICAgfSk7XG4gICAgaWYgKHByb2dyZXNzID49IDEpIHtcbiAgICAgIHBhdXNlKCk7XG4gICAgICBvbkZpbmlzaGVkKCk7XG4gICAgfVxuICB9LCB7IGltbWVkaWF0ZTogZmFsc2UgfSk7XG4gIGNvbnN0IHN0YXJ0ID0gKCkgPT4ge1xuICAgIHBhdXNlKCk7XG4gICAgY3VycmVudER1cmF0aW9uID0gdnVlRGVtaS51bnJlZihkdXJhdGlvbik7XG4gICAgZGlmZlZlY3RvciA9IG91dHB1dFZlY3Rvci52YWx1ZS5tYXAoKG4sIGkpID0+IHtcbiAgICAgIHZhciBfYSwgX2I7XG4gICAgICByZXR1cm4gKChfYSA9IHNvdXJjZVZlY3Rvci52YWx1ZVtpXSkgIT0gbnVsbCA/IF9hIDogMCkgLSAoKF9iID0gb3V0cHV0VmVjdG9yLnZhbHVlW2ldKSAhPSBudWxsID8gX2IgOiAwKTtcbiAgICB9KTtcbiAgICBzdGFydFZlY3RvciA9IG91dHB1dFZlY3Rvci52YWx1ZS5zbGljZSgwKTtcbiAgICBzdGFydEF0ID0gRGF0ZS5ub3coKTtcbiAgICBlbmRBdCA9IHN0YXJ0QXQgKyBjdXJyZW50RHVyYXRpb247XG4gICAgcmVzdW1lKCk7XG4gICAgb25TdGFydGVkKCk7XG4gIH07XG4gIGNvbnN0IHRpbWVvdXQgPSBzaGFyZWQudXNlVGltZW91dEZuKHN0YXJ0LCBkZWxheSwgeyBpbW1lZGlhdGU6IGZhbHNlIH0pO1xuICB2dWVEZW1pLndhdGNoKHNvdXJjZVZlY3RvciwgKCkgPT4ge1xuICAgIGlmICh2dWVEZW1pLnVucmVmKGRpc2FibGVkKSkge1xuICAgICAgb3V0cHV0VmVjdG9yLnZhbHVlID0gc291cmNlVmVjdG9yLnZhbHVlLnNsaWNlKDApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodnVlRGVtaS51bnJlZihkZWxheSkgPD0gMClcbiAgICAgICAgc3RhcnQoKTtcbiAgICAgIGVsc2VcbiAgICAgICAgdGltZW91dC5zdGFydCgpO1xuICAgIH1cbiAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICByZXR1cm4gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0VmVjdG9yID0gdnVlRGVtaS51bnJlZihkaXNhYmxlZCkgPyBzb3VyY2VWZWN0b3IgOiBvdXRwdXRWZWN0b3I7XG4gICAgcmV0dXJuIHNoYXJlZC5pc051bWJlcihzb3VyY2VWYWx1ZS52YWx1ZSkgPyB0YXJnZXRWZWN0b3IudmFsdWVbMF0gOiB0YXJnZXRWZWN0b3IudmFsdWU7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB1c2VVcmxTZWFyY2hQYXJhbXMobW9kZSA9IFwiaGlzdG9yeVwiLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGluaXRpYWxWYWx1ZSA9IHt9LFxuICAgIHJlbW92ZU51bGxpc2hWYWx1ZXMgPSB0cnVlLFxuICAgIHJlbW92ZUZhbHN5VmFsdWVzID0gZmFsc2UsXG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvd1xuICB9ID0gb3B0aW9ucztcbiAgaWYgKCF3aW5kb3cpXG4gICAgcmV0dXJuIHZ1ZURlbWkucmVhY3RpdmUoaW5pdGlhbFZhbHVlKTtcbiAgY29uc3Qgc3RhdGUgPSB2dWVEZW1pLnJlYWN0aXZlKHt9KTtcbiAgZnVuY3Rpb24gZ2V0UmF3UGFyYW1zKCkge1xuICAgIGlmIChtb2RlID09PSBcImhpc3RvcnlcIikge1xuICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggfHwgXCJcIjtcbiAgICB9IGVsc2UgaWYgKG1vZGUgPT09IFwiaGFzaFwiKSB7XG4gICAgICBjb25zdCBoYXNoID0gd2luZG93LmxvY2F0aW9uLmhhc2ggfHwgXCJcIjtcbiAgICAgIGNvbnN0IGluZGV4ID0gaGFzaC5pbmRleE9mKFwiP1wiKTtcbiAgICAgIHJldHVybiBpbmRleCA+IDAgPyBoYXNoLnNsaWNlKGluZGV4KSA6IFwiXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAod2luZG93LmxvY2F0aW9uLmhhc2ggfHwgXCJcIikucmVwbGFjZSgvXiMvLCBcIlwiKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gY29uc3RydWN0UXVlcnkocGFyYW1zKSB7XG4gICAgY29uc3Qgc3RyaW5naWZpZWQgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgICBpZiAobW9kZSA9PT0gXCJoaXN0b3J5XCIpXG4gICAgICByZXR1cm4gYCR7c3RyaW5naWZpZWQgPyBgPyR7c3RyaW5naWZpZWR9YCA6IFwiXCJ9JHtsb2NhdGlvbi5oYXNoIHx8IFwiXCJ9YDtcbiAgICBpZiAobW9kZSA9PT0gXCJoYXNoLXBhcmFtc1wiKVxuICAgICAgcmV0dXJuIGAke2xvY2F0aW9uLnNlYXJjaCB8fCBcIlwifSR7c3RyaW5naWZpZWQgPyBgIyR7c3RyaW5naWZpZWR9YCA6IFwiXCJ9YDtcbiAgICBjb25zdCBoYXNoID0gd2luZG93LmxvY2F0aW9uLmhhc2ggfHwgXCIjXCI7XG4gICAgY29uc3QgaW5kZXggPSBoYXNoLmluZGV4T2YoXCI/XCIpO1xuICAgIGlmIChpbmRleCA+IDApXG4gICAgICByZXR1cm4gYCR7aGFzaC5zbGljZSgwLCBpbmRleCl9JHtzdHJpbmdpZmllZCA/IGA/JHtzdHJpbmdpZmllZH1gIDogXCJcIn1gO1xuICAgIHJldHVybiBgJHtoYXNofSR7c3RyaW5naWZpZWQgPyBgPyR7c3RyaW5naWZpZWR9YCA6IFwiXCJ9YDtcbiAgfVxuICBmdW5jdGlvbiByZWFkKCkge1xuICAgIHJldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zKGdldFJhd1BhcmFtcygpKTtcbiAgfVxuICBmdW5jdGlvbiB1cGRhdGVTdGF0ZShwYXJhbXMpIHtcbiAgICBjb25zdCB1bnVzZWRLZXlzID0gbmV3IFNldChPYmplY3Qua2V5cyhzdGF0ZSkpO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIHBhcmFtcy5rZXlzKCkpIHtcbiAgICAgIGNvbnN0IHBhcmFtc0ZvcktleSA9IHBhcmFtcy5nZXRBbGwoa2V5KTtcbiAgICAgIHN0YXRlW2tleV0gPSBwYXJhbXNGb3JLZXkubGVuZ3RoID4gMSA/IHBhcmFtc0ZvcktleSA6IHBhcmFtcy5nZXQoa2V5KSB8fCBcIlwiO1xuICAgICAgdW51c2VkS2V5cy5kZWxldGUoa2V5KTtcbiAgICB9XG4gICAgQXJyYXkuZnJvbSh1bnVzZWRLZXlzKS5mb3JFYWNoKChrZXkpID0+IGRlbGV0ZSBzdGF0ZVtrZXldKTtcbiAgfVxuICBjb25zdCB7IHBhdXNlLCByZXN1bWUgfSA9IHNoYXJlZC5wYXVzYWJsZVdhdGNoKHN0YXRlLCAoKSA9PiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhcIlwiKTtcbiAgICBPYmplY3Qua2V5cyhzdGF0ZSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCBtYXBFbnRyeSA9IHN0YXRlW2tleV07XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShtYXBFbnRyeSkpXG4gICAgICAgIG1hcEVudHJ5LmZvckVhY2goKHZhbHVlKSA9PiBwYXJhbXMuYXBwZW5kKGtleSwgdmFsdWUpKTtcbiAgICAgIGVsc2UgaWYgKHJlbW92ZU51bGxpc2hWYWx1ZXMgJiYgbWFwRW50cnkgPT0gbnVsbClcbiAgICAgICAgcGFyYW1zLmRlbGV0ZShrZXkpO1xuICAgICAgZWxzZSBpZiAocmVtb3ZlRmFsc3lWYWx1ZXMgJiYgIW1hcEVudHJ5KVxuICAgICAgICBwYXJhbXMuZGVsZXRlKGtleSk7XG4gICAgICBlbHNlXG4gICAgICAgIHBhcmFtcy5zZXQoa2V5LCBtYXBFbnRyeSk7XG4gICAgfSk7XG4gICAgd3JpdGUocGFyYW1zKTtcbiAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICBmdW5jdGlvbiB3cml0ZShwYXJhbXMsIHNob3VsZFVwZGF0ZSkge1xuICAgIHBhdXNlKCk7XG4gICAgaWYgKHNob3VsZFVwZGF0ZSlcbiAgICAgIHVwZGF0ZVN0YXRlKHBhcmFtcyk7XG4gICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHdpbmRvdy5oaXN0b3J5LnN0YXRlLCB3aW5kb3cuZG9jdW1lbnQudGl0bGUsIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSArIGNvbnN0cnVjdFF1ZXJ5KHBhcmFtcykpO1xuICAgIHJlc3VtZSgpO1xuICB9XG4gIGZ1bmN0aW9uIG9uQ2hhbmdlZCgpIHtcbiAgICB3cml0ZShyZWFkKCksIHRydWUpO1xuICB9XG4gIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcInBvcHN0YXRlXCIsIG9uQ2hhbmdlZCwgZmFsc2UpO1xuICBpZiAobW9kZSAhPT0gXCJoaXN0b3J5XCIpXG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwiaGFzaGNoYW5nZVwiLCBvbkNoYW5nZWQsIGZhbHNlKTtcbiAgY29uc3QgaW5pdGlhbCA9IHJlYWQoKTtcbiAgaWYgKGluaXRpYWwua2V5cygpLm5leHQoKS52YWx1ZSlcbiAgICB1cGRhdGVTdGF0ZShpbml0aWFsKTtcbiAgZWxzZVxuICAgIE9iamVjdC5hc3NpZ24oc3RhdGUsIGluaXRpYWxWYWx1ZSk7XG4gIHJldHVybiBzdGF0ZTtcbn1cblxuZnVuY3Rpb24gdXNlVXNlck1lZGlhKG9wdGlvbnMgPSB7fSkge1xuICB2YXIgX2EsIF9iLCBfYztcbiAgY29uc3QgZW5hYmxlZCA9IHZ1ZURlbWkucmVmKChfYSA9IG9wdGlvbnMuZW5hYmxlZCkgIT0gbnVsbCA/IF9hIDogZmFsc2UpO1xuICBjb25zdCBhdXRvU3dpdGNoID0gdnVlRGVtaS5yZWYoKF9iID0gb3B0aW9ucy5hdXRvU3dpdGNoKSAhPSBudWxsID8gX2IgOiB0cnVlKTtcbiAgY29uc3QgdmlkZW9EZXZpY2VJZCA9IHZ1ZURlbWkucmVmKG9wdGlvbnMudmlkZW9EZXZpY2VJZCk7XG4gIGNvbnN0IGF1ZGlvRGV2aWNlSWQgPSB2dWVEZW1pLnJlZihvcHRpb25zLmF1ZGlvRGV2aWNlSWQpO1xuICBjb25zdCB7IG5hdmlnYXRvciA9IGRlZmF1bHROYXZpZ2F0b3IgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gQm9vbGVhbigoX2MgPSBuYXZpZ2F0b3IgPT0gbnVsbCA/IHZvaWQgMCA6IG5hdmlnYXRvci5tZWRpYURldmljZXMpID09IG51bGwgPyB2b2lkIDAgOiBfYy5nZXRVc2VyTWVkaWEpO1xuICBjb25zdCBzdHJlYW0gPSB2dWVEZW1pLnNoYWxsb3dSZWYoKTtcbiAgZnVuY3Rpb24gZ2V0RGV2aWNlT3B0aW9ucyhkZXZpY2UpIHtcbiAgICBpZiAoZGV2aWNlLnZhbHVlID09PSBcIm5vbmVcIiB8fCBkZXZpY2UudmFsdWUgPT09IGZhbHNlKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChkZXZpY2UudmFsdWUgPT0gbnVsbClcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIHJldHVybiB7XG4gICAgICBkZXZpY2VJZDogZGV2aWNlLnZhbHVlXG4gICAgfTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBfc3RhcnQoKSB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZCB8fCBzdHJlYW0udmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgc3RyZWFtLnZhbHVlID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe1xuICAgICAgdmlkZW86IGdldERldmljZU9wdGlvbnModmlkZW9EZXZpY2VJZCksXG4gICAgICBhdWRpbzogZ2V0RGV2aWNlT3B0aW9ucyhhdWRpb0RldmljZUlkKVxuICAgIH0pO1xuICAgIHJldHVybiBzdHJlYW0udmFsdWU7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gX3N0b3AoKSB7XG4gICAgdmFyIF9hMjtcbiAgICAoX2EyID0gc3RyZWFtLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EyLmdldFRyYWNrcygpLmZvckVhY2goKHQpID0+IHQuc3RvcCgpKTtcbiAgICBzdHJlYW0udmFsdWUgPSB2b2lkIDA7XG4gIH1cbiAgZnVuY3Rpb24gc3RvcCgpIHtcbiAgICBfc3RvcCgpO1xuICAgIGVuYWJsZWQudmFsdWUgPSBmYWxzZTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBzdGFydCgpIHtcbiAgICBhd2FpdCBfc3RhcnQoKTtcbiAgICBpZiAoc3RyZWFtLnZhbHVlKVxuICAgICAgZW5hYmxlZC52YWx1ZSA9IHRydWU7XG4gICAgcmV0dXJuIHN0cmVhbS52YWx1ZTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiByZXN0YXJ0KCkge1xuICAgIF9zdG9wKCk7XG4gICAgcmV0dXJuIGF3YWl0IHN0YXJ0KCk7XG4gIH1cbiAgdnVlRGVtaS53YXRjaChlbmFibGVkLCAodikgPT4ge1xuICAgIGlmICh2KVxuICAgICAgX3N0YXJ0KCk7XG4gICAgZWxzZVxuICAgICAgX3N0b3AoKTtcbiAgfSwgeyBpbW1lZGlhdGU6IHRydWUgfSk7XG4gIHZ1ZURlbWkud2F0Y2goW3ZpZGVvRGV2aWNlSWQsIGF1ZGlvRGV2aWNlSWRdLCAoKSA9PiB7XG4gICAgaWYgKGF1dG9Td2l0Y2gudmFsdWUgJiYgc3RyZWFtLnZhbHVlKVxuICAgICAgcmVzdGFydCgpO1xuICB9LCB7IGltbWVkaWF0ZTogdHJ1ZSB9KTtcbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBzdHJlYW0sXG4gICAgc3RhcnQsXG4gICAgc3RvcCxcbiAgICByZXN0YXJ0LFxuICAgIHZpZGVvRGV2aWNlSWQsXG4gICAgYXVkaW9EZXZpY2VJZCxcbiAgICBlbmFibGVkLFxuICAgIGF1dG9Td2l0Y2hcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlVk1vZGVsKHByb3BzLCBrZXksIGVtaXQsIG9wdGlvbnMgPSB7fSkge1xuICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lO1xuICBjb25zdCB7XG4gICAgcGFzc2l2ZSA9IGZhbHNlLFxuICAgIGV2ZW50TmFtZSxcbiAgICBkZWVwID0gZmFsc2UsXG4gICAgZGVmYXVsdFZhbHVlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCB2bSA9IHZ1ZURlbWkuZ2V0Q3VycmVudEluc3RhbmNlKCk7XG4gIGNvbnN0IF9lbWl0ID0gZW1pdCB8fCAodm0gPT0gbnVsbCA/IHZvaWQgMCA6IHZtLmVtaXQpIHx8ICgoX2EgPSB2bSA9PSBudWxsID8gdm9pZCAwIDogdm0uJGVtaXQpID09IG51bGwgPyB2b2lkIDAgOiBfYS5iaW5kKHZtKSkgfHwgKChfYyA9IChfYiA9IHZtID09IG51bGwgPyB2b2lkIDAgOiB2bS5wcm94eSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLiRlbWl0KSA9PSBudWxsID8gdm9pZCAwIDogX2MuYmluZCh2bSA9PSBudWxsID8gdm9pZCAwIDogdm0ucHJveHkpKTtcbiAgbGV0IGV2ZW50ID0gZXZlbnROYW1lO1xuICBpZiAoIWtleSkge1xuICAgIGlmICh2dWVEZW1pLmlzVnVlMikge1xuICAgICAgY29uc3QgbW9kZWxPcHRpb25zID0gKF9lID0gKF9kID0gdm0gPT0gbnVsbCA/IHZvaWQgMCA6IHZtLnByb3h5KSA9PSBudWxsID8gdm9pZCAwIDogX2QuJG9wdGlvbnMpID09IG51bGwgPyB2b2lkIDAgOiBfZS5tb2RlbDtcbiAgICAgIGtleSA9IChtb2RlbE9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG1vZGVsT3B0aW9ucy52YWx1ZSkgfHwgXCJ2YWx1ZVwiO1xuICAgICAgaWYgKCFldmVudE5hbWUpXG4gICAgICAgIGV2ZW50ID0gKG1vZGVsT3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogbW9kZWxPcHRpb25zLmV2ZW50KSB8fCBcImlucHV0XCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGtleSA9IFwibW9kZWxWYWx1ZVwiO1xuICAgIH1cbiAgfVxuICBldmVudCA9IGV2ZW50TmFtZSB8fCBldmVudCB8fCBgdXBkYXRlOiR7a2V5LnRvU3RyaW5nKCl9YDtcbiAgY29uc3QgZ2V0VmFsdWUgPSAoKSA9PiBzaGFyZWQuaXNEZWYocHJvcHNba2V5XSkgPyBwcm9wc1trZXldIDogZGVmYXVsdFZhbHVlO1xuICBpZiAocGFzc2l2ZSkge1xuICAgIGNvbnN0IHByb3h5ID0gdnVlRGVtaS5yZWYoZ2V0VmFsdWUoKSk7XG4gICAgdnVlRGVtaS53YXRjaCgoKSA9PiBwcm9wc1trZXldLCAodikgPT4gcHJveHkudmFsdWUgPSB2KTtcbiAgICB2dWVEZW1pLndhdGNoKHByb3h5LCAodikgPT4ge1xuICAgICAgaWYgKHYgIT09IHByb3BzW2tleV0gfHwgZGVlcClcbiAgICAgICAgX2VtaXQoZXZlbnQsIHYpO1xuICAgIH0sIHtcbiAgICAgIGRlZXBcbiAgICB9KTtcbiAgICByZXR1cm4gcHJveHk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoe1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gZ2V0VmFsdWUoKTtcbiAgICAgIH0sXG4gICAgICBzZXQodmFsdWUpIHtcbiAgICAgICAgX2VtaXQoZXZlbnQsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VWTW9kZWxzKHByb3BzLCBlbWl0LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgcmV0ID0ge307XG4gIGZvciAoY29uc3Qga2V5IGluIHByb3BzKVxuICAgIHJldFtrZXldID0gdXNlVk1vZGVsKHByb3BzLCBrZXksIGVtaXQsIG9wdGlvbnMpO1xuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiB1c2VWaWJyYXRlKG9wdGlvbnMpIHtcbiAgY29uc3Qge1xuICAgIHBhdHRlcm4gPSBbXSxcbiAgICBpbnRlcnZhbCA9IDAsXG4gICAgbmF2aWdhdG9yID0gZGVmYXVsdE5hdmlnYXRvclxuICB9ID0gb3B0aW9ucyB8fCB7fTtcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSB0eXBlb2YgbmF2aWdhdG9yICE9PSBcInVuZGVmaW5lZFwiICYmIFwidmlicmF0ZVwiIGluIG5hdmlnYXRvcjtcbiAgY29uc3QgcGF0dGVyblJlZiA9IHZ1ZURlbWkucmVmKHBhdHRlcm4pO1xuICBsZXQgaW50ZXJ2YWxDb250cm9scztcbiAgY29uc3QgdmlicmF0ZSA9IChwYXR0ZXJuMiA9IHBhdHRlcm5SZWYudmFsdWUpID0+IHtcbiAgICBpZiAoaXNTdXBwb3J0ZWQpXG4gICAgICBuYXZpZ2F0b3IudmlicmF0ZShwYXR0ZXJuMik7XG4gIH07XG4gIGNvbnN0IHN0b3AgPSAoKSA9PiB7XG4gICAgaWYgKGlzU3VwcG9ydGVkKVxuICAgICAgbmF2aWdhdG9yLnZpYnJhdGUoMCk7XG4gICAgaW50ZXJ2YWxDb250cm9scyA9PSBudWxsID8gdm9pZCAwIDogaW50ZXJ2YWxDb250cm9scy5wYXVzZSgpO1xuICB9O1xuICBpZiAoaW50ZXJ2YWwgPiAwKSB7XG4gICAgaW50ZXJ2YWxDb250cm9scyA9IHNoYXJlZC51c2VJbnRlcnZhbEZuKHZpYnJhdGUsIGludGVydmFsLCB7XG4gICAgICBpbW1lZGlhdGU6IGZhbHNlLFxuICAgICAgaW1tZWRpYXRlQ2FsbGJhY2s6IGZhbHNlXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBwYXR0ZXJuLFxuICAgIGludGVydmFsQ29udHJvbHMsXG4gICAgdmlicmF0ZSxcbiAgICBzdG9wXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZVZpcnR1YWxMaXN0KGxpc3QsIG9wdGlvbnMpIHtcbiAgY29uc3QgY29udGFpbmVyUmVmID0gdnVlRGVtaS5yZWYoKTtcbiAgY29uc3Qgc2l6ZSA9IHVzZUVsZW1lbnRTaXplKGNvbnRhaW5lclJlZik7XG4gIGNvbnN0IGN1cnJlbnRMaXN0ID0gdnVlRGVtaS5yZWYoW10pO1xuICBjb25zdCBzb3VyY2UgPSB2dWVEZW1pLnNoYWxsb3dSZWYobGlzdCk7XG4gIGNvbnN0IHN0YXRlID0gdnVlRGVtaS5yZWYoeyBzdGFydDogMCwgZW5kOiAxMCB9KTtcbiAgY29uc3QgeyBpdGVtSGVpZ2h0LCBvdmVyc2NhbiA9IDUgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGdldFZpZXdDYXBhY2l0eSA9IChjb250YWluZXJIZWlnaHQpID0+IHtcbiAgICBpZiAodHlwZW9mIGl0ZW1IZWlnaHQgPT09IFwibnVtYmVyXCIpXG4gICAgICByZXR1cm4gTWF0aC5jZWlsKGNvbnRhaW5lckhlaWdodCAvIGl0ZW1IZWlnaHQpO1xuICAgIGNvbnN0IHsgc3RhcnQgPSAwIH0gPSBzdGF0ZS52YWx1ZTtcbiAgICBsZXQgc3VtID0gMDtcbiAgICBsZXQgY2FwYWNpdHkgPSAwO1xuICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IHNvdXJjZS52YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgaGVpZ2h0ID0gaXRlbUhlaWdodChpKTtcbiAgICAgIHN1bSArPSBoZWlnaHQ7XG4gICAgICBpZiAoc3VtID49IGNvbnRhaW5lckhlaWdodCkge1xuICAgICAgICBjYXBhY2l0eSA9IGk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2FwYWNpdHkgLSBzdGFydDtcbiAgfTtcbiAgY29uc3QgZ2V0T2Zmc2V0ID0gKHNjcm9sbFRvcCkgPT4ge1xuICAgIGlmICh0eXBlb2YgaXRlbUhlaWdodCA9PT0gXCJudW1iZXJcIilcbiAgICAgIHJldHVybiBNYXRoLmZsb29yKHNjcm9sbFRvcCAvIGl0ZW1IZWlnaHQpICsgMTtcbiAgICBsZXQgc3VtID0gMDtcbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNvdXJjZS52YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgaGVpZ2h0ID0gaXRlbUhlaWdodChpKTtcbiAgICAgIHN1bSArPSBoZWlnaHQ7XG4gICAgICBpZiAoc3VtID49IHNjcm9sbFRvcCkge1xuICAgICAgICBvZmZzZXQgPSBpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9mZnNldCArIDE7XG4gIH07XG4gIGNvbnN0IGNhbGN1bGF0ZVJhbmdlID0gKCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBjb250YWluZXJSZWYudmFsdWU7XG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IG9mZnNldCA9IGdldE9mZnNldChlbGVtZW50LnNjcm9sbFRvcCk7XG4gICAgICBjb25zdCB2aWV3Q2FwYWNpdHkgPSBnZXRWaWV3Q2FwYWNpdHkoZWxlbWVudC5jbGllbnRIZWlnaHQpO1xuICAgICAgY29uc3QgZnJvbSA9IG9mZnNldCAtIG92ZXJzY2FuO1xuICAgICAgY29uc3QgdG8gPSBvZmZzZXQgKyB2aWV3Q2FwYWNpdHkgKyBvdmVyc2NhbjtcbiAgICAgIHN0YXRlLnZhbHVlID0ge1xuICAgICAgICBzdGFydDogZnJvbSA8IDAgPyAwIDogZnJvbSxcbiAgICAgICAgZW5kOiB0byA+IHNvdXJjZS52YWx1ZS5sZW5ndGggPyBzb3VyY2UudmFsdWUubGVuZ3RoIDogdG9cbiAgICAgIH07XG4gICAgICBjdXJyZW50TGlzdC52YWx1ZSA9IHNvdXJjZS52YWx1ZS5zbGljZShzdGF0ZS52YWx1ZS5zdGFydCwgc3RhdGUudmFsdWUuZW5kKS5tYXAoKGVsZSwgaW5kZXgpID0+ICh7XG4gICAgICAgIGRhdGE6IGVsZSxcbiAgICAgICAgaW5kZXg6IGluZGV4ICsgc3RhdGUudmFsdWUuc3RhcnRcbiAgICAgIH0pKTtcbiAgICB9XG4gIH07XG4gIHZ1ZURlbWkud2F0Y2goW3NpemUud2lkdGgsIHNpemUuaGVpZ2h0LCBsaXN0XSwgKCkgPT4ge1xuICAgIGNhbGN1bGF0ZVJhbmdlKCk7XG4gIH0pO1xuICBjb25zdCB0b3RhbEhlaWdodCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0eXBlb2YgaXRlbUhlaWdodCA9PT0gXCJudW1iZXJcIilcbiAgICAgIHJldHVybiBzb3VyY2UudmFsdWUubGVuZ3RoICogaXRlbUhlaWdodDtcbiAgICByZXR1cm4gc291cmNlLnZhbHVlLnJlZHVjZSgoc3VtLCBfLCBpbmRleCkgPT4gc3VtICsgaXRlbUhlaWdodChpbmRleCksIDApO1xuICB9KTtcbiAgY29uc3QgZ2V0RGlzdGFuY2VUb3AgPSAoaW5kZXgpID0+IHtcbiAgICBpZiAodHlwZW9mIGl0ZW1IZWlnaHQgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIGNvbnN0IGhlaWdodDIgPSBpbmRleCAqIGl0ZW1IZWlnaHQ7XG4gICAgICByZXR1cm4gaGVpZ2h0MjtcbiAgICB9XG4gICAgY29uc3QgaGVpZ2h0ID0gc291cmNlLnZhbHVlLnNsaWNlKDAsIGluZGV4KS5yZWR1Y2UoKHN1bSwgXywgaSkgPT4gc3VtICsgaXRlbUhlaWdodChpKSwgMCk7XG4gICAgcmV0dXJuIGhlaWdodDtcbiAgfTtcbiAgY29uc3Qgc2Nyb2xsVG8gPSAoaW5kZXgpID0+IHtcbiAgICBpZiAoY29udGFpbmVyUmVmLnZhbHVlKSB7XG4gICAgICBjb250YWluZXJSZWYudmFsdWUuc2Nyb2xsVG9wID0gZ2V0RGlzdGFuY2VUb3AoaW5kZXgpO1xuICAgICAgY2FsY3VsYXRlUmFuZ2UoKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9mZnNldFRvcCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gZ2V0RGlzdGFuY2VUb3Aoc3RhdGUudmFsdWUuc3RhcnQpKTtcbiAgY29uc3Qgd3JhcHBlclByb3BzID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICAgICAgaGVpZ2h0OiBgJHt0b3RhbEhlaWdodC52YWx1ZSAtIG9mZnNldFRvcC52YWx1ZX1weGAsXG4gICAgICAgIG1hcmdpblRvcDogYCR7b2Zmc2V0VG9wLnZhbHVlfXB4YFxuICAgICAgfVxuICAgIH07XG4gIH0pO1xuICBjb25zdCBjb250YWluZXJTdHlsZSA9IHsgb3ZlcmZsb3dZOiBcImF1dG9cIiB9O1xuICByZXR1cm4ge1xuICAgIGxpc3Q6IGN1cnJlbnRMaXN0LFxuICAgIHNjcm9sbFRvLFxuICAgIGNvbnRhaW5lclByb3BzOiB7XG4gICAgICByZWY6IGNvbnRhaW5lclJlZixcbiAgICAgIG9uU2Nyb2xsOiAoKSA9PiB7XG4gICAgICAgIGNhbGN1bGF0ZVJhbmdlKCk7XG4gICAgICB9LFxuICAgICAgc3R5bGU6IGNvbnRhaW5lclN0eWxlXG4gICAgfSxcbiAgICB3cmFwcGVyUHJvcHNcbiAgfTtcbn1cblxuY29uc3QgdXNlV2FrZUxvY2sgPSAob3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBuYXZpZ2F0b3IgPSBkZWZhdWx0TmF2aWdhdG9yLFxuICAgIGRvY3VtZW50ID0gZGVmYXVsdERvY3VtZW50XG4gIH0gPSBvcHRpb25zO1xuICBsZXQgd2FrZUxvY2s7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gbmF2aWdhdG9yICYmIFwid2FrZUxvY2tcIiBpbiBuYXZpZ2F0b3I7XG4gIGNvbnN0IGlzQWN0aXZlID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBhc3luYyBmdW5jdGlvbiBvblZpc2liaWxpdHlDaGFuZ2UoKSB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZCB8fCAhd2FrZUxvY2spXG4gICAgICByZXR1cm47XG4gICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSA9PT0gXCJ2aXNpYmxlXCIpXG4gICAgICB3YWtlTG9jayA9IGF3YWl0IG5hdmlnYXRvci53YWtlTG9jay5yZXF1ZXN0KFwic2NyZWVuXCIpO1xuICAgIGlzQWN0aXZlLnZhbHVlID0gIXdha2VMb2NrLnJlbGVhc2VkO1xuICB9XG4gIGlmIChkb2N1bWVudClcbiAgICB1c2VFdmVudExpc3RlbmVyKGRvY3VtZW50LCBcInZpc2liaWxpdHljaGFuZ2VcIiwgb25WaXNpYmlsaXR5Q2hhbmdlLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gIGFzeW5jIGZ1bmN0aW9uIHJlcXVlc3QodHlwZSkge1xuICAgIGlmICghaXNTdXBwb3J0ZWQpXG4gICAgICByZXR1cm47XG4gICAgd2FrZUxvY2sgPSBhd2FpdCBuYXZpZ2F0b3Iud2FrZUxvY2sucmVxdWVzdCh0eXBlKTtcbiAgICBpc0FjdGl2ZS52YWx1ZSA9ICF3YWtlTG9jay5yZWxlYXNlZDtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiByZWxlYXNlKCkge1xuICAgIGlmICghaXNTdXBwb3J0ZWQgfHwgIXdha2VMb2NrKVxuICAgICAgcmV0dXJuO1xuICAgIGF3YWl0IHdha2VMb2NrLnJlbGVhc2UoKTtcbiAgICBpc0FjdGl2ZS52YWx1ZSA9ICF3YWtlTG9jay5yZWxlYXNlZDtcbiAgICB3YWtlTG9jayA9IG51bGw7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBpc0FjdGl2ZSxcbiAgICByZXF1ZXN0LFxuICAgIHJlbGVhc2VcbiAgfTtcbn07XG5cbmNvbnN0IHVzZVdlYk5vdGlmaWNhdGlvbiA9IChkZWZhdWx0T3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93XG4gIH0gPSBkZWZhdWx0T3B0aW9ucztcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSAhIXdpbmRvdyAmJiBcIk5vdGlmaWNhdGlvblwiIGluIHdpbmRvdztcbiAgY29uc3Qgbm90aWZpY2F0aW9uID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGNvbnN0IHJlcXVlc3RQZXJtaXNzaW9uID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmICghaXNTdXBwb3J0ZWQpXG4gICAgICByZXR1cm47XG4gICAgaWYgKFwicGVybWlzc2lvblwiIGluIE5vdGlmaWNhdGlvbiAmJiBOb3RpZmljYXRpb24ucGVybWlzc2lvbiAhPT0gXCJkZW5pZWRcIilcbiAgICAgIGF3YWl0IE5vdGlmaWNhdGlvbi5yZXF1ZXN0UGVybWlzc2lvbigpO1xuICB9O1xuICBjb25zdCBvbkNsaWNrID0gc2hhcmVkLmNyZWF0ZUV2ZW50SG9vaygpO1xuICBjb25zdCBvblNob3cgPSBzaGFyZWQuY3JlYXRlRXZlbnRIb29rKCk7XG4gIGNvbnN0IG9uRXJyb3IgPSBzaGFyZWQuY3JlYXRlRXZlbnRIb29rKCk7XG4gIGNvbnN0IG9uQ2xvc2UgPSBzaGFyZWQuY3JlYXRlRXZlbnRIb29rKCk7XG4gIGNvbnN0IHNob3cgPSBhc3luYyAob3ZlcnJpZGVzKSA9PiB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZClcbiAgICAgIHJldHVybjtcbiAgICBhd2FpdCByZXF1ZXN0UGVybWlzc2lvbigpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0T3B0aW9ucywgb3ZlcnJpZGVzKTtcbiAgICBub3RpZmljYXRpb24udmFsdWUgPSBuZXcgTm90aWZpY2F0aW9uKG9wdGlvbnMudGl0bGUgfHwgXCJcIiwgb3B0aW9ucyk7XG4gICAgbm90aWZpY2F0aW9uLnZhbHVlLm9uY2xpY2sgPSAoZXZlbnQpID0+IG9uQ2xpY2sudHJpZ2dlcihldmVudCk7XG4gICAgbm90aWZpY2F0aW9uLnZhbHVlLm9uc2hvdyA9IChldmVudCkgPT4gb25TaG93LnRyaWdnZXIoZXZlbnQpO1xuICAgIG5vdGlmaWNhdGlvbi52YWx1ZS5vbmVycm9yID0gKGV2ZW50KSA9PiBvbkVycm9yLnRyaWdnZXIoZXZlbnQpO1xuICAgIG5vdGlmaWNhdGlvbi52YWx1ZS5vbmNsb3NlID0gKGV2ZW50KSA9PiBvbkNsb3NlLnRyaWdnZXIoZXZlbnQpO1xuICAgIHJldHVybiBub3RpZmljYXRpb24udmFsdWU7XG4gIH07XG4gIGNvbnN0IGNsb3NlID0gKCkgPT4ge1xuICAgIGlmIChub3RpZmljYXRpb24udmFsdWUpXG4gICAgICBub3RpZmljYXRpb24udmFsdWUuY2xvc2UoKTtcbiAgICBub3RpZmljYXRpb24udmFsdWUgPSBudWxsO1xuICB9O1xuICBzaGFyZWQudHJ5T25Nb3VudGVkKGFzeW5jICgpID0+IHtcbiAgICBpZiAoaXNTdXBwb3J0ZWQpXG4gICAgICBhd2FpdCByZXF1ZXN0UGVybWlzc2lvbigpO1xuICB9KTtcbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKGNsb3NlKTtcbiAgaWYgKGlzU3VwcG9ydGVkICYmIHdpbmRvdykge1xuICAgIGNvbnN0IGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50O1xuICAgIHVzZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsIFwidmlzaWJpbGl0eWNoYW5nZVwiLCAoZSkgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgaWYgKGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSA9PT0gXCJ2aXNpYmxlXCIpIHtcbiAgICAgICAgY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIG5vdGlmaWNhdGlvbixcbiAgICBzaG93LFxuICAgIGNsb3NlLFxuICAgIG9uQ2xpY2ssXG4gICAgb25TaG93LFxuICAgIG9uRXJyb3IsXG4gICAgb25DbG9zZVxuICB9O1xufTtcblxuZnVuY3Rpb24gcmVzb2x2ZU5lc3RlZE9wdGlvbnMob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdHJ1ZSlcbiAgICByZXR1cm4ge307XG4gIHJldHVybiBvcHRpb25zO1xufVxuZnVuY3Rpb24gdXNlV2ViU29ja2V0KHVybCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBvbkNvbm5lY3RlZCxcbiAgICBvbkRpc2Nvbm5lY3RlZCxcbiAgICBvbkVycm9yLFxuICAgIG9uTWVzc2FnZSxcbiAgICBpbW1lZGlhdGUgPSB0cnVlLFxuICAgIGF1dG9DbG9zZSA9IHRydWUsXG4gICAgcHJvdG9jb2xzID0gW11cbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGRhdGEgPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgY29uc3Qgc3RhdHVzID0gdnVlRGVtaS5yZWYoXCJDT05ORUNUSU5HXCIpO1xuICBjb25zdCB3c1JlZiA9IHZ1ZURlbWkucmVmKCk7XG4gIGxldCBoZWFydGJlYXRQYXVzZTtcbiAgbGV0IGhlYXJ0YmVhdFJlc3VtZTtcbiAgbGV0IGV4cGxpY2l0bHlDbG9zZWQgPSBmYWxzZTtcbiAgbGV0IHJldHJpZWQgPSAwO1xuICBsZXQgYnVmZmVyZWREYXRhID0gW107XG4gIGNvbnN0IGNsb3NlID0gKGNvZGUgPSAxZTMsIHJlYXNvbikgPT4ge1xuICAgIGlmICghd3NSZWYudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgZXhwbGljaXRseUNsb3NlZCA9IHRydWU7XG4gICAgaGVhcnRiZWF0UGF1c2UgPT0gbnVsbCA/IHZvaWQgMCA6IGhlYXJ0YmVhdFBhdXNlKCk7XG4gICAgd3NSZWYudmFsdWUuY2xvc2UoY29kZSwgcmVhc29uKTtcbiAgfTtcbiAgY29uc3QgX3NlbmRCdWZmZXIgPSAoKSA9PiB7XG4gICAgaWYgKGJ1ZmZlcmVkRGF0YS5sZW5ndGggJiYgd3NSZWYudmFsdWUgJiYgc3RhdHVzLnZhbHVlID09PSBcIk9QRU5cIikge1xuICAgICAgZm9yIChjb25zdCBidWZmZXIgb2YgYnVmZmVyZWREYXRhKVxuICAgICAgICB3c1JlZi52YWx1ZS5zZW5kKGJ1ZmZlcik7XG4gICAgICBidWZmZXJlZERhdGEgPSBbXTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHNlbmQgPSAoZGF0YTIsIHVzZUJ1ZmZlciA9IHRydWUpID0+IHtcbiAgICBpZiAoIXdzUmVmLnZhbHVlIHx8IHN0YXR1cy52YWx1ZSAhPT0gXCJPUEVOXCIpIHtcbiAgICAgIGlmICh1c2VCdWZmZXIpXG4gICAgICAgIGJ1ZmZlcmVkRGF0YS5wdXNoKGRhdGEyKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgX3NlbmRCdWZmZXIoKTtcbiAgICB3c1JlZi52YWx1ZS5zZW5kKGRhdGEyKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbiAgY29uc3QgX2luaXQgPSAoKSA9PiB7XG4gICAgY29uc3Qgd3MgPSBuZXcgV2ViU29ja2V0KHVybCwgcHJvdG9jb2xzKTtcbiAgICB3c1JlZi52YWx1ZSA9IHdzO1xuICAgIHN0YXR1cy52YWx1ZSA9IFwiQ09OTkVDVElOR1wiO1xuICAgIGV4cGxpY2l0bHlDbG9zZWQgPSBmYWxzZTtcbiAgICB3cy5vbm9wZW4gPSAoKSA9PiB7XG4gICAgICBzdGF0dXMudmFsdWUgPSBcIk9QRU5cIjtcbiAgICAgIG9uQ29ubmVjdGVkID09IG51bGwgPyB2b2lkIDAgOiBvbkNvbm5lY3RlZCh3cyk7XG4gICAgICBoZWFydGJlYXRSZXN1bWUgPT0gbnVsbCA/IHZvaWQgMCA6IGhlYXJ0YmVhdFJlc3VtZSgpO1xuICAgICAgX3NlbmRCdWZmZXIoKTtcbiAgICB9O1xuICAgIHdzLm9uY2xvc2UgPSAoZXYpID0+IHtcbiAgICAgIHN0YXR1cy52YWx1ZSA9IFwiQ0xPU0VEXCI7XG4gICAgICB3c1JlZi52YWx1ZSA9IHZvaWQgMDtcbiAgICAgIG9uRGlzY29ubmVjdGVkID09IG51bGwgPyB2b2lkIDAgOiBvbkRpc2Nvbm5lY3RlZCh3cywgZXYpO1xuICAgICAgaWYgKCFleHBsaWNpdGx5Q2xvc2VkICYmIG9wdGlvbnMuYXV0b1JlY29ubmVjdCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgcmV0cmllcyA9IC0xLFxuICAgICAgICAgIGRlbGF5ID0gMWUzLFxuICAgICAgICAgIG9uRmFpbGVkXG4gICAgICAgIH0gPSByZXNvbHZlTmVzdGVkT3B0aW9ucyhvcHRpb25zLmF1dG9SZWNvbm5lY3QpO1xuICAgICAgICByZXRyaWVkICs9IDE7XG4gICAgICAgIGlmICh0eXBlb2YgcmV0cmllcyA9PT0gXCJudW1iZXJcIiAmJiAocmV0cmllcyA8IDAgfHwgcmV0cmllZCA8IHJldHJpZXMpKVxuICAgICAgICAgIHNldFRpbWVvdXQoX2luaXQsIGRlbGF5KTtcbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIHJldHJpZXMgPT09IFwiZnVuY3Rpb25cIiAmJiByZXRyaWVzKCkpXG4gICAgICAgICAgc2V0VGltZW91dChfaW5pdCwgZGVsYXkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgb25GYWlsZWQgPT0gbnVsbCA/IHZvaWQgMCA6IG9uRmFpbGVkKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICB3cy5vbmVycm9yID0gKGUpID0+IHtcbiAgICAgIG9uRXJyb3IgPT0gbnVsbCA/IHZvaWQgMCA6IG9uRXJyb3Iod3MsIGUpO1xuICAgIH07XG4gICAgd3Mub25tZXNzYWdlID0gKGUpID0+IHtcbiAgICAgIGRhdGEudmFsdWUgPSBlLmRhdGE7XG4gICAgICBvbk1lc3NhZ2UgPT0gbnVsbCA/IHZvaWQgMCA6IG9uTWVzc2FnZSh3cywgZSk7XG4gICAgfTtcbiAgfTtcbiAgaWYgKG9wdGlvbnMuaGVhcnRiZWF0KSB7XG4gICAgY29uc3Qge1xuICAgICAgbWVzc2FnZSA9IFwicGluZ1wiLFxuICAgICAgaW50ZXJ2YWwgPSAxZTNcbiAgICB9ID0gcmVzb2x2ZU5lc3RlZE9wdGlvbnMob3B0aW9ucy5oZWFydGJlYXQpO1xuICAgIGNvbnN0IHsgcGF1c2UsIHJlc3VtZSB9ID0gc2hhcmVkLnVzZUludGVydmFsRm4oKCkgPT4gc2VuZChtZXNzYWdlLCBmYWxzZSksIGludGVydmFsLCB7IGltbWVkaWF0ZTogZmFsc2UgfSk7XG4gICAgaGVhcnRiZWF0UGF1c2UgPSBwYXVzZTtcbiAgICBoZWFydGJlYXRSZXN1bWUgPSByZXN1bWU7XG4gIH1cbiAgaWYgKGltbWVkaWF0ZSlcbiAgICBfaW5pdCgpO1xuICBpZiAoYXV0b0Nsb3NlKSB7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwiYmVmb3JldW5sb2FkXCIsICgpID0+IGNsb3NlKCkpO1xuICAgIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZShjbG9zZSk7XG4gIH1cbiAgY29uc3Qgb3BlbiA9ICgpID0+IHtcbiAgICBjbG9zZSgpO1xuICAgIHJldHJpZWQgPSAwO1xuICAgIF9pbml0KCk7XG4gIH07XG4gIHJldHVybiB7XG4gICAgZGF0YSxcbiAgICBzdGF0dXMsXG4gICAgY2xvc2UsXG4gICAgc2VuZCxcbiAgICBvcGVuLFxuICAgIHdzOiB3c1JlZlxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VXZWJXb3JrZXIodXJsLCB3b3JrZXJPcHRpb25zLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3dcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGRhdGEgPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgY29uc3Qgd29ya2VyID0gdnVlRGVtaS5zaGFsbG93UmVmKCk7XG4gIGNvbnN0IHBvc3QgPSBmdW5jdGlvbiBwb3N0Mih2YWwpIHtcbiAgICBpZiAoIXdvcmtlci52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICB3b3JrZXIudmFsdWUucG9zdE1lc3NhZ2UodmFsKTtcbiAgfTtcbiAgY29uc3QgdGVybWluYXRlID0gZnVuY3Rpb24gdGVybWluYXRlMigpIHtcbiAgICBpZiAoIXdvcmtlci52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICB3b3JrZXIudmFsdWUudGVybWluYXRlKCk7XG4gIH07XG4gIGlmICh3aW5kb3cpIHtcbiAgICB3b3JrZXIudmFsdWUgPSBuZXcgV29ya2VyKHVybCwgd29ya2VyT3B0aW9ucyk7XG4gICAgd29ya2VyLnZhbHVlLm9ubWVzc2FnZSA9IChlKSA9PiB7XG4gICAgICBkYXRhLnZhbHVlID0gZS5kYXRhO1xuICAgIH07XG4gICAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKCgpID0+IHtcbiAgICAgIGlmICh3b3JrZXIudmFsdWUpXG4gICAgICAgIHdvcmtlci52YWx1ZS50ZXJtaW5hdGUoKTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGRhdGEsXG4gICAgcG9zdCxcbiAgICB0ZXJtaW5hdGUsXG4gICAgd29ya2VyXG4gIH07XG59XG5cbmNvbnN0IGpvYlJ1bm5lciA9ICh1c2VyRnVuYykgPT4gKGUpID0+IHtcbiAgY29uc3QgdXNlckZ1bmNBcmdzID0gZS5kYXRhWzBdO1xuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVzZXJGdW5jLmFwcGx5KHZvaWQgMCwgdXNlckZ1bmNBcmdzKSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgcG9zdE1lc3NhZ2UoW1wiU1VDQ0VTU1wiLCByZXN1bHRdKTtcbiAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgcG9zdE1lc3NhZ2UoW1wiRVJST1JcIiwgZXJyb3JdKTtcbiAgfSk7XG59O1xuXG5jb25zdCBkZXBzUGFyc2VyID0gKGRlcHMpID0+IHtcbiAgaWYgKGRlcHMubGVuZ3RoID09PSAwKVxuICAgIHJldHVybiBcIlwiO1xuICBjb25zdCBkZXBzU3RyaW5nID0gZGVwcy5tYXAoKGRlcCkgPT4gYCcke2RlcH0nYCkudG9TdHJpbmcoKTtcbiAgcmV0dXJuIGBpbXBvcnRTY3JpcHRzKCR7ZGVwc1N0cmluZ30pYDtcbn07XG5cbmNvbnN0IGNyZWF0ZVdvcmtlckJsb2JVcmwgPSAoZm4sIGRlcHMpID0+IHtcbiAgY29uc3QgYmxvYkNvZGUgPSBgJHtkZXBzUGFyc2VyKGRlcHMpfTsgb25tZXNzYWdlPSgke2pvYlJ1bm5lcn0pKCR7Zm59KWA7XG4gIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYmxvYkNvZGVdLCB7IHR5cGU6IFwidGV4dC9qYXZhc2NyaXB0XCIgfSk7XG4gIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gIHJldHVybiB1cmw7XG59O1xuXG5jb25zdCB1c2VXZWJXb3JrZXJGbiA9IChmbiwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBkZXBlbmRlbmNpZXMgPSBbXSxcbiAgICB0aW1lb3V0LFxuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3dcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHdvcmtlciA9IHZ1ZURlbWkucmVmKCk7XG4gIGNvbnN0IHdvcmtlclN0YXR1cyA9IHZ1ZURlbWkucmVmKFwiUEVORElOR1wiKTtcbiAgY29uc3QgcHJvbWlzZSA9IHZ1ZURlbWkucmVmKHt9KTtcbiAgY29uc3QgdGltZW91dElkID0gdnVlRGVtaS5yZWYoKTtcbiAgY29uc3Qgd29ya2VyVGVybWluYXRlID0gKHN0YXR1cyA9IFwiUEVORElOR1wiKSA9PiB7XG4gICAgaWYgKHdvcmtlci52YWx1ZSAmJiB3b3JrZXIudmFsdWUuX3VybCAmJiB3aW5kb3cpIHtcbiAgICAgIHdvcmtlci52YWx1ZS50ZXJtaW5hdGUoKTtcbiAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwod29ya2VyLnZhbHVlLl91cmwpO1xuICAgICAgcHJvbWlzZS52YWx1ZSA9IHt9O1xuICAgICAgd29ya2VyLnZhbHVlID0gdm9pZCAwO1xuICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lb3V0SWQudmFsdWUpO1xuICAgICAgd29ya2VyU3RhdHVzLnZhbHVlID0gc3RhdHVzO1xuICAgIH1cbiAgfTtcbiAgd29ya2VyVGVybWluYXRlKCk7XG4gIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZSh3b3JrZXJUZXJtaW5hdGUpO1xuICBjb25zdCBnZW5lcmF0ZVdvcmtlciA9ICgpID0+IHtcbiAgICBjb25zdCBibG9iVXJsID0gY3JlYXRlV29ya2VyQmxvYlVybChmbiwgZGVwZW5kZW5jaWVzKTtcbiAgICBjb25zdCBuZXdXb3JrZXIgPSBuZXcgV29ya2VyKGJsb2JVcmwpO1xuICAgIG5ld1dvcmtlci5fdXJsID0gYmxvYlVybDtcbiAgICBuZXdXb3JrZXIub25tZXNzYWdlID0gKGUpID0+IHtcbiAgICAgIGNvbnN0IHsgcmVzb2x2ZSA9ICgpID0+IHtcbiAgICAgIH0sIHJlamVjdCA9ICgpID0+IHtcbiAgICAgIH0gfSA9IHByb21pc2UudmFsdWU7XG4gICAgICBjb25zdCBbc3RhdHVzLCByZXN1bHRdID0gZS5kYXRhO1xuICAgICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgICAgY2FzZSBcIlNVQ0NFU1NcIjpcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgd29ya2VyVGVybWluYXRlKHN0YXR1cyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmVqZWN0KHJlc3VsdCk7XG4gICAgICAgICAgd29ya2VyVGVybWluYXRlKFwiRVJST1JcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfTtcbiAgICBuZXdXb3JrZXIub25lcnJvciA9IChlKSA9PiB7XG4gICAgICBjb25zdCB7IHJlamVjdCA9ICgpID0+IHtcbiAgICAgIH0gfSA9IHByb21pc2UudmFsdWU7XG4gICAgICByZWplY3QoZSk7XG4gICAgICB3b3JrZXJUZXJtaW5hdGUoXCJFUlJPUlwiKTtcbiAgICB9O1xuICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICB0aW1lb3V0SWQudmFsdWUgPSBzZXRUaW1lb3V0KCgpID0+IHdvcmtlclRlcm1pbmF0ZShcIlRJTUVPVVRfRVhQSVJFRFwiKSwgdGltZW91dCk7XG4gICAgfVxuICAgIHJldHVybiBuZXdXb3JrZXI7XG4gIH07XG4gIGNvbnN0IGNhbGxXb3JrZXIgPSAoLi4uZm5BcmdzKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgcHJvbWlzZS52YWx1ZSA9IHtcbiAgICAgIHJlc29sdmUsXG4gICAgICByZWplY3RcbiAgICB9O1xuICAgIHdvcmtlci52YWx1ZSAmJiB3b3JrZXIudmFsdWUucG9zdE1lc3NhZ2UoW1suLi5mbkFyZ3NdXSk7XG4gICAgd29ya2VyU3RhdHVzLnZhbHVlID0gXCJSVU5OSU5HXCI7XG4gIH0pO1xuICBjb25zdCB3b3JrZXJGbiA9ICguLi5mbkFyZ3MpID0+IHtcbiAgICBpZiAod29ya2VyU3RhdHVzLnZhbHVlID09PSBcIlJVTk5JTkdcIikge1xuICAgICAgY29uc29sZS5lcnJvcihcIlt1c2VXZWJXb3JrZXJGbl0gWW91IGNhbiBvbmx5IHJ1biBvbmUgaW5zdGFuY2Ugb2YgdGhlIHdvcmtlciBhdCBhIHRpbWUuXCIpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgfVxuICAgIHdvcmtlci52YWx1ZSA9IGdlbmVyYXRlV29ya2VyKCk7XG4gICAgcmV0dXJuIGNhbGxXb3JrZXIoLi4uZm5BcmdzKTtcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICB3b3JrZXJGbixcbiAgICB3b3JrZXJTdGF0dXMsXG4gICAgd29ya2VyVGVybWluYXRlXG4gIH07XG59O1xuXG5mdW5jdGlvbiB1c2VXaW5kb3dGb2N1cyh7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3cgfSA9IHt9KSB7XG4gIGlmICghd2luZG93KVxuICAgIHJldHVybiB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IGZvY3VzZWQgPSB2dWVEZW1pLnJlZih3aW5kb3cuZG9jdW1lbnQuaGFzRm9jdXMoKSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcImJsdXJcIiwgKCkgPT4ge1xuICAgIGZvY3VzZWQudmFsdWUgPSBmYWxzZTtcbiAgfSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcImZvY3VzXCIsICgpID0+IHtcbiAgICBmb2N1c2VkLnZhbHVlID0gdHJ1ZTtcbiAgfSk7XG4gIHJldHVybiBmb2N1c2VkO1xufVxuXG5mdW5jdGlvbiB1c2VXaW5kb3dTY3JvbGwoeyB3aW5kb3cgPSBkZWZhdWx0V2luZG93IH0gPSB7fSkge1xuICBpZiAoIXdpbmRvdykge1xuICAgIHJldHVybiB7XG4gICAgICB4OiB2dWVEZW1pLnJlZigwKSxcbiAgICAgIHk6IHZ1ZURlbWkucmVmKDApXG4gICAgfTtcbiAgfVxuICBjb25zdCB4ID0gdnVlRGVtaS5yZWYod2luZG93LnBhZ2VYT2Zmc2V0KTtcbiAgY29uc3QgeSA9IHZ1ZURlbWkucmVmKHdpbmRvdy5wYWdlWU9mZnNldCk7XG4gIHVzZUV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgKCkgPT4ge1xuICAgIHgudmFsdWUgPSB3aW5kb3cucGFnZVhPZmZzZXQ7XG4gICAgeS52YWx1ZSA9IHdpbmRvdy5wYWdlWU9mZnNldDtcbiAgfSwge1xuICAgIGNhcHR1cmU6IGZhbHNlLFxuICAgIHBhc3NpdmU6IHRydWVcbiAgfSk7XG4gIHJldHVybiB7IHgsIHkgfTtcbn1cblxuZnVuY3Rpb24gdXNlV2luZG93U2l6ZShvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3csXG4gICAgaW5pdGlhbFdpZHRoID0gSW5maW5pdHksXG4gICAgaW5pdGlhbEhlaWdodCA9IEluZmluaXR5LFxuICAgIGxpc3Rlbk9yaWVudGF0aW9uID0gdHJ1ZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3Qgd2lkdGggPSB2dWVEZW1pLnJlZihpbml0aWFsV2lkdGgpO1xuICBjb25zdCBoZWlnaHQgPSB2dWVEZW1pLnJlZihpbml0aWFsSGVpZ2h0KTtcbiAgY29uc3QgdXBkYXRlID0gKCkgPT4ge1xuICAgIGlmICh3aW5kb3cpIHtcbiAgICAgIHdpZHRoLnZhbHVlID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICBoZWlnaHQudmFsdWUgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgfVxuICB9O1xuICB1cGRhdGUoKTtcbiAgc2hhcmVkLnRyeU9uTW91bnRlZCh1cGRhdGUpO1xuICB1c2VFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHVwZGF0ZSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICBpZiAobGlzdGVuT3JpZW50YXRpb24pXG4gICAgdXNlRXZlbnRMaXN0ZW5lcihcIm9yaWVudGF0aW9uY2hhbmdlXCIsIHVwZGF0ZSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICByZXR1cm4geyB3aWR0aCwgaGVpZ2h0IH07XG59XG5cbmV4cG9ydHMuRGVmYXVsdE1hZ2ljS2V5c0FsaWFzTWFwID0gRGVmYXVsdE1hZ2ljS2V5c0FsaWFzTWFwO1xuZXhwb3J0cy5TdG9yYWdlU2VyaWFsaXplcnMgPSBTdG9yYWdlU2VyaWFsaXplcnM7XG5leHBvcnRzLlRyYW5zaXRpb25QcmVzZXRzID0gVHJhbnNpdGlvblByZXNldHM7XG5leHBvcnRzLmFzeW5jQ29tcHV0ZWQgPSBjb21wdXRlZEFzeW5jO1xuZXhwb3J0cy5icmVha3BvaW50c0FudERlc2lnbiA9IGJyZWFrcG9pbnRzQW50RGVzaWduO1xuZXhwb3J0cy5icmVha3BvaW50c0Jvb3RzdHJhcFY1ID0gYnJlYWtwb2ludHNCb290c3RyYXBWNTtcbmV4cG9ydHMuYnJlYWtwb2ludHNRdWFzYXIgPSBicmVha3BvaW50c1F1YXNhcjtcbmV4cG9ydHMuYnJlYWtwb2ludHNTZW1hdGljID0gYnJlYWtwb2ludHNTZW1hdGljO1xuZXhwb3J0cy5icmVha3BvaW50c1RhaWx3aW5kID0gYnJlYWtwb2ludHNUYWlsd2luZDtcbmV4cG9ydHMuYnJlYWtwb2ludHNWdWV0aWZ5ID0gYnJlYWtwb2ludHNWdWV0aWZ5O1xuZXhwb3J0cy5jb21wdXRlZEFzeW5jID0gY29tcHV0ZWRBc3luYztcbmV4cG9ydHMuY29tcHV0ZWRJbmplY3QgPSBjb21wdXRlZEluamVjdDtcbmV4cG9ydHMuY3JlYXRlRmV0Y2ggPSBjcmVhdGVGZXRjaDtcbmV4cG9ydHMuY3JlYXRlVW5yZWZGbiA9IGNyZWF0ZVVucmVmRm47XG5leHBvcnRzLmRlZmF1bHREb2N1bWVudCA9IGRlZmF1bHREb2N1bWVudDtcbmV4cG9ydHMuZGVmYXVsdExvY2F0aW9uID0gZGVmYXVsdExvY2F0aW9uO1xuZXhwb3J0cy5kZWZhdWx0TmF2aWdhdG9yID0gZGVmYXVsdE5hdmlnYXRvcjtcbmV4cG9ydHMuZGVmYXVsdFdpbmRvdyA9IGRlZmF1bHRXaW5kb3c7XG5leHBvcnRzLmdldFNTUkhhbmRsZXIgPSBnZXRTU1JIYW5kbGVyO1xuZXhwb3J0cy5tYXBHYW1lcGFkVG9YYm94MzYwQ29udHJvbGxlciA9IG1hcEdhbWVwYWRUb1hib3gzNjBDb250cm9sbGVyO1xuZXhwb3J0cy5vbkNsaWNrT3V0c2lkZSA9IG9uQ2xpY2tPdXRzaWRlO1xuZXhwb3J0cy5vbktleURvd24gPSBvbktleURvd247XG5leHBvcnRzLm9uS2V5UHJlc3NlZCA9IG9uS2V5UHJlc3NlZDtcbmV4cG9ydHMub25LZXlTdHJva2UgPSBvbktleVN0cm9rZTtcbmV4cG9ydHMub25LZXlVcCA9IG9uS2V5VXA7XG5leHBvcnRzLm9uTG9uZ1ByZXNzID0gb25Mb25nUHJlc3M7XG5leHBvcnRzLm9uU3RhcnRUeXBpbmcgPSBvblN0YXJ0VHlwaW5nO1xuZXhwb3J0cy5zZXRTU1JIYW5kbGVyID0gc2V0U1NSSGFuZGxlcjtcbmV4cG9ydHMudGVtcGxhdGVSZWYgPSB0ZW1wbGF0ZVJlZjtcbmV4cG9ydHMudW5yZWZFbGVtZW50ID0gdW5yZWZFbGVtZW50O1xuZXhwb3J0cy51c2VBY3RpdmVFbGVtZW50ID0gdXNlQWN0aXZlRWxlbWVudDtcbmV4cG9ydHMudXNlQXN5bmNRdWV1ZSA9IHVzZUFzeW5jUXVldWU7XG5leHBvcnRzLnVzZUFzeW5jU3RhdGUgPSB1c2VBc3luY1N0YXRlO1xuZXhwb3J0cy51c2VCYXNlNjQgPSB1c2VCYXNlNjQ7XG5leHBvcnRzLnVzZUJhdHRlcnkgPSB1c2VCYXR0ZXJ5O1xuZXhwb3J0cy51c2VCbHVldG9vdGggPSB1c2VCbHVldG9vdGg7XG5leHBvcnRzLnVzZUJyZWFrcG9pbnRzID0gdXNlQnJlYWtwb2ludHM7XG5leHBvcnRzLnVzZUJyb2FkY2FzdENoYW5uZWwgPSB1c2VCcm9hZGNhc3RDaGFubmVsO1xuZXhwb3J0cy51c2VCcm93c2VyTG9jYXRpb24gPSB1c2VCcm93c2VyTG9jYXRpb247XG5leHBvcnRzLnVzZUNhY2hlZCA9IHVzZUNhY2hlZDtcbmV4cG9ydHMudXNlQ2xhbXAgPSB1c2VDbGFtcDtcbmV4cG9ydHMudXNlQ2xpcGJvYXJkID0gdXNlQ2xpcGJvYXJkO1xuZXhwb3J0cy51c2VDb2xvck1vZGUgPSB1c2VDb2xvck1vZGU7XG5leHBvcnRzLnVzZUNvbmZpcm1EaWFsb2cgPSB1c2VDb25maXJtRGlhbG9nO1xuZXhwb3J0cy51c2VDc3NWYXIgPSB1c2VDc3NWYXI7XG5leHBvcnRzLnVzZUN1cnJlbnRFbGVtZW50ID0gdXNlQ3VycmVudEVsZW1lbnQ7XG5leHBvcnRzLnVzZUN5Y2xlTGlzdCA9IHVzZUN5Y2xlTGlzdDtcbmV4cG9ydHMudXNlRGFyayA9IHVzZURhcms7XG5leHBvcnRzLnVzZURlYm91bmNlZFJlZkhpc3RvcnkgPSB1c2VEZWJvdW5jZWRSZWZIaXN0b3J5O1xuZXhwb3J0cy51c2VEZXZpY2VNb3Rpb24gPSB1c2VEZXZpY2VNb3Rpb247XG5leHBvcnRzLnVzZURldmljZU9yaWVudGF0aW9uID0gdXNlRGV2aWNlT3JpZW50YXRpb247XG5leHBvcnRzLnVzZURldmljZVBpeGVsUmF0aW8gPSB1c2VEZXZpY2VQaXhlbFJhdGlvO1xuZXhwb3J0cy51c2VEZXZpY2VzTGlzdCA9IHVzZURldmljZXNMaXN0O1xuZXhwb3J0cy51c2VEaXNwbGF5TWVkaWEgPSB1c2VEaXNwbGF5TWVkaWE7XG5leHBvcnRzLnVzZURvY3VtZW50VmlzaWJpbGl0eSA9IHVzZURvY3VtZW50VmlzaWJpbGl0eTtcbmV4cG9ydHMudXNlRHJhZ2dhYmxlID0gdXNlRHJhZ2dhYmxlO1xuZXhwb3J0cy51c2VEcm9wWm9uZSA9IHVzZURyb3Bab25lO1xuZXhwb3J0cy51c2VFbGVtZW50Qm91bmRpbmcgPSB1c2VFbGVtZW50Qm91bmRpbmc7XG5leHBvcnRzLnVzZUVsZW1lbnRCeVBvaW50ID0gdXNlRWxlbWVudEJ5UG9pbnQ7XG5leHBvcnRzLnVzZUVsZW1lbnRIb3ZlciA9IHVzZUVsZW1lbnRIb3ZlcjtcbmV4cG9ydHMudXNlRWxlbWVudFNpemUgPSB1c2VFbGVtZW50U2l6ZTtcbmV4cG9ydHMudXNlRWxlbWVudFZpc2liaWxpdHkgPSB1c2VFbGVtZW50VmlzaWJpbGl0eTtcbmV4cG9ydHMudXNlRXZlbnRCdXMgPSB1c2VFdmVudEJ1cztcbmV4cG9ydHMudXNlRXZlbnRMaXN0ZW5lciA9IHVzZUV2ZW50TGlzdGVuZXI7XG5leHBvcnRzLnVzZUV2ZW50U291cmNlID0gdXNlRXZlbnRTb3VyY2U7XG5leHBvcnRzLnVzZUV5ZURyb3BwZXIgPSB1c2VFeWVEcm9wcGVyO1xuZXhwb3J0cy51c2VGYXZpY29uID0gdXNlRmF2aWNvbjtcbmV4cG9ydHMudXNlRmV0Y2ggPSB1c2VGZXRjaDtcbmV4cG9ydHMudXNlRmlsZURpYWxvZyA9IHVzZUZpbGVEaWFsb2c7XG5leHBvcnRzLnVzZUZpbGVTeXN0ZW1BY2Nlc3MgPSB1c2VGaWxlU3lzdGVtQWNjZXNzO1xuZXhwb3J0cy51c2VGb2N1cyA9IHVzZUZvY3VzO1xuZXhwb3J0cy51c2VGb2N1c1dpdGhpbiA9IHVzZUZvY3VzV2l0aGluO1xuZXhwb3J0cy51c2VGcHMgPSB1c2VGcHM7XG5leHBvcnRzLnVzZUZ1bGxzY3JlZW4gPSB1c2VGdWxsc2NyZWVuO1xuZXhwb3J0cy51c2VHYW1lcGFkID0gdXNlR2FtZXBhZDtcbmV4cG9ydHMudXNlR2VvbG9jYXRpb24gPSB1c2VHZW9sb2NhdGlvbjtcbmV4cG9ydHMudXNlSWRsZSA9IHVzZUlkbGU7XG5leHBvcnRzLnVzZUltYWdlID0gdXNlSW1hZ2U7XG5leHBvcnRzLnVzZUluZmluaXRlU2Nyb2xsID0gdXNlSW5maW5pdGVTY3JvbGw7XG5leHBvcnRzLnVzZUludGVyc2VjdGlvbk9ic2VydmVyID0gdXNlSW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XG5leHBvcnRzLnVzZUtleU1vZGlmaWVyID0gdXNlS2V5TW9kaWZpZXI7XG5leHBvcnRzLnVzZUxvY2FsU3RvcmFnZSA9IHVzZUxvY2FsU3RvcmFnZTtcbmV4cG9ydHMudXNlTWFnaWNLZXlzID0gdXNlTWFnaWNLZXlzO1xuZXhwb3J0cy51c2VNYW51YWxSZWZIaXN0b3J5ID0gdXNlTWFudWFsUmVmSGlzdG9yeTtcbmV4cG9ydHMudXNlTWVkaWFDb250cm9scyA9IHVzZU1lZGlhQ29udHJvbHM7XG5leHBvcnRzLnVzZU1lZGlhUXVlcnkgPSB1c2VNZWRpYVF1ZXJ5O1xuZXhwb3J0cy51c2VNZW1vaXplID0gdXNlTWVtb2l6ZTtcbmV4cG9ydHMudXNlTWVtb3J5ID0gdXNlTWVtb3J5O1xuZXhwb3J0cy51c2VNb3VudGVkID0gdXNlTW91bnRlZDtcbmV4cG9ydHMudXNlTW91c2UgPSB1c2VNb3VzZTtcbmV4cG9ydHMudXNlTW91c2VJbkVsZW1lbnQgPSB1c2VNb3VzZUluRWxlbWVudDtcbmV4cG9ydHMudXNlTW91c2VQcmVzc2VkID0gdXNlTW91c2VQcmVzc2VkO1xuZXhwb3J0cy51c2VNdXRhdGlvbk9ic2VydmVyID0gdXNlTXV0YXRpb25PYnNlcnZlcjtcbmV4cG9ydHMudXNlTmF2aWdhdG9yTGFuZ3VhZ2UgPSB1c2VOYXZpZ2F0b3JMYW5ndWFnZTtcbmV4cG9ydHMudXNlTmV0d29yayA9IHVzZU5ldHdvcms7XG5leHBvcnRzLnVzZU5vdyA9IHVzZU5vdztcbmV4cG9ydHMudXNlT2JqZWN0VXJsID0gdXNlT2JqZWN0VXJsO1xuZXhwb3J0cy51c2VPZmZzZXRQYWdpbmF0aW9uID0gdXNlT2Zmc2V0UGFnaW5hdGlvbjtcbmV4cG9ydHMudXNlT25saW5lID0gdXNlT25saW5lO1xuZXhwb3J0cy51c2VQYWdlTGVhdmUgPSB1c2VQYWdlTGVhdmU7XG5leHBvcnRzLnVzZVBhcmFsbGF4ID0gdXNlUGFyYWxsYXg7XG5leHBvcnRzLnVzZVBlcm1pc3Npb24gPSB1c2VQZXJtaXNzaW9uO1xuZXhwb3J0cy51c2VQb2ludGVyID0gdXNlUG9pbnRlcjtcbmV4cG9ydHMudXNlUG9pbnRlclN3aXBlID0gdXNlUG9pbnRlclN3aXBlO1xuZXhwb3J0cy51c2VQcmVmZXJyZWRDb2xvclNjaGVtZSA9IHVzZVByZWZlcnJlZENvbG9yU2NoZW1lO1xuZXhwb3J0cy51c2VQcmVmZXJyZWREYXJrID0gdXNlUHJlZmVycmVkRGFyaztcbmV4cG9ydHMudXNlUHJlZmVycmVkTGFuZ3VhZ2VzID0gdXNlUHJlZmVycmVkTGFuZ3VhZ2VzO1xuZXhwb3J0cy51c2VSYWZGbiA9IHVzZVJhZkZuO1xuZXhwb3J0cy51c2VSZWZIaXN0b3J5ID0gdXNlUmVmSGlzdG9yeTtcbmV4cG9ydHMudXNlUmVzaXplT2JzZXJ2ZXIgPSB1c2VSZXNpemVPYnNlcnZlcjtcbmV4cG9ydHMudXNlU2NyZWVuT3JpZW50YXRpb24gPSB1c2VTY3JlZW5PcmllbnRhdGlvbjtcbmV4cG9ydHMudXNlU2NyZWVuU2FmZUFyZWEgPSB1c2VTY3JlZW5TYWZlQXJlYTtcbmV4cG9ydHMudXNlU2NyaXB0VGFnID0gdXNlU2NyaXB0VGFnO1xuZXhwb3J0cy51c2VTY3JvbGwgPSB1c2VTY3JvbGw7XG5leHBvcnRzLnVzZVNjcm9sbExvY2sgPSB1c2VTY3JvbGxMb2NrO1xuZXhwb3J0cy51c2VTZXNzaW9uU3RvcmFnZSA9IHVzZVNlc3Npb25TdG9yYWdlO1xuZXhwb3J0cy51c2VTaGFyZSA9IHVzZVNoYXJlO1xuZXhwb3J0cy51c2VTcGVlY2hSZWNvZ25pdGlvbiA9IHVzZVNwZWVjaFJlY29nbml0aW9uO1xuZXhwb3J0cy51c2VTcGVlY2hTeW50aGVzaXMgPSB1c2VTcGVlY2hTeW50aGVzaXM7XG5leHBvcnRzLnVzZVN0ZXBwZXIgPSB1c2VTdGVwcGVyO1xuZXhwb3J0cy51c2VTdG9yYWdlID0gdXNlU3RvcmFnZTtcbmV4cG9ydHMudXNlU3RvcmFnZUFzeW5jID0gdXNlU3RvcmFnZUFzeW5jO1xuZXhwb3J0cy51c2VTdHlsZVRhZyA9IHVzZVN0eWxlVGFnO1xuZXhwb3J0cy51c2VTd2lwZSA9IHVzZVN3aXBlO1xuZXhwb3J0cy51c2VUZW1wbGF0ZVJlZnNMaXN0ID0gdXNlVGVtcGxhdGVSZWZzTGlzdDtcbmV4cG9ydHMudXNlVGV4dFNlbGVjdGlvbiA9IHVzZVRleHRTZWxlY3Rpb247XG5leHBvcnRzLnVzZVRleHRhcmVhQXV0b3NpemUgPSB1c2VUZXh0YXJlYUF1dG9zaXplO1xuZXhwb3J0cy51c2VUaHJvdHRsZWRSZWZIaXN0b3J5ID0gdXNlVGhyb3R0bGVkUmVmSGlzdG9yeTtcbmV4cG9ydHMudXNlVGltZUFnbyA9IHVzZVRpbWVBZ287XG5leHBvcnRzLnVzZVRpbWVvdXRQb2xsID0gdXNlVGltZW91dFBvbGw7XG5leHBvcnRzLnVzZVRpbWVzdGFtcCA9IHVzZVRpbWVzdGFtcDtcbmV4cG9ydHMudXNlVGl0bGUgPSB1c2VUaXRsZTtcbmV4cG9ydHMudXNlVHJhbnNpdGlvbiA9IHVzZVRyYW5zaXRpb247XG5leHBvcnRzLnVzZVVybFNlYXJjaFBhcmFtcyA9IHVzZVVybFNlYXJjaFBhcmFtcztcbmV4cG9ydHMudXNlVXNlck1lZGlhID0gdXNlVXNlck1lZGlhO1xuZXhwb3J0cy51c2VWTW9kZWwgPSB1c2VWTW9kZWw7XG5leHBvcnRzLnVzZVZNb2RlbHMgPSB1c2VWTW9kZWxzO1xuZXhwb3J0cy51c2VWaWJyYXRlID0gdXNlVmlicmF0ZTtcbmV4cG9ydHMudXNlVmlydHVhbExpc3QgPSB1c2VWaXJ0dWFsTGlzdDtcbmV4cG9ydHMudXNlV2FrZUxvY2sgPSB1c2VXYWtlTG9jaztcbmV4cG9ydHMudXNlV2ViTm90aWZpY2F0aW9uID0gdXNlV2ViTm90aWZpY2F0aW9uO1xuZXhwb3J0cy51c2VXZWJTb2NrZXQgPSB1c2VXZWJTb2NrZXQ7XG5leHBvcnRzLnVzZVdlYldvcmtlciA9IHVzZVdlYldvcmtlcjtcbmV4cG9ydHMudXNlV2ViV29ya2VyRm4gPSB1c2VXZWJXb3JrZXJGbjtcbmV4cG9ydHMudXNlV2luZG93Rm9jdXMgPSB1c2VXaW5kb3dGb2N1cztcbmV4cG9ydHMudXNlV2luZG93U2Nyb2xsID0gdXNlV2luZG93U2Nyb2xsO1xuZXhwb3J0cy51c2VXaW5kb3dTaXplID0gdXNlV2luZG93U2l6ZTtcbk9iamVjdC5rZXlzKHNoYXJlZCkuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICBpZiAoayAhPT0gJ2RlZmF1bHQnICYmICFleHBvcnRzLmhhc093blByb3BlcnR5KGspKSBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgaywge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBzaGFyZWRba107IH1cbiAgfSk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxudmFyIHZ1ZURlbWkgPSByZXF1aXJlKCd2dWUtZGVtaScpO1xuXG52YXIgX19kZWZQcm9wJDkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19kZWZQcm9wcyQ2ID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXM7XG52YXIgX19nZXRPd25Qcm9wRGVzY3MkNiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzO1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkYiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJGIgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSRiID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkOSA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkOShvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkOSA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJGIuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCQ5KGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyRiKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyRiKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJGIuY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJDkoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG52YXIgX19zcHJlYWRQcm9wcyQ2ID0gKGEsIGIpID0+IF9fZGVmUHJvcHMkNihhLCBfX2dldE93blByb3BEZXNjcyQ2KGIpKTtcbmZ1bmN0aW9uIGNvbXB1dGVkRWFnZXIoZm4sIG9wdGlvbnMpIHtcbiAgdmFyIF9hO1xuICBjb25zdCByZXN1bHQgPSB2dWVEZW1pLnNoYWxsb3dSZWYoKTtcbiAgdnVlRGVtaS53YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgcmVzdWx0LnZhbHVlID0gZm4oKTtcbiAgfSwgX19zcHJlYWRQcm9wcyQ2KF9fc3ByZWFkVmFsdWVzJDkoe30sIG9wdGlvbnMpLCB7XG4gICAgZmx1c2g6IChfYSA9IG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuZmx1c2gpICE9IG51bGwgPyBfYSA6IFwic3luY1wiXG4gIH0pKTtcbiAgcmV0dXJuIHZ1ZURlbWkucmVhZG9ubHkocmVzdWx0KTtcbn1cblxudmFyIF9hO1xuY29uc3QgaXNDbGllbnQgPSB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiO1xuY29uc3QgaXNEZWYgPSAodmFsKSA9PiB0eXBlb2YgdmFsICE9PSBcInVuZGVmaW5lZFwiO1xuY29uc3QgYXNzZXJ0ID0gKGNvbmRpdGlvbiwgLi4uaW5mb3MpID0+IHtcbiAgaWYgKCFjb25kaXRpb24pXG4gICAgY29uc29sZS53YXJuKC4uLmluZm9zKTtcbn07XG5jb25zdCB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5jb25zdCBpc0Jvb2xlYW4gPSAodmFsKSA9PiB0eXBlb2YgdmFsID09PSBcImJvb2xlYW5cIjtcbmNvbnN0IGlzRnVuY3Rpb24gPSAodmFsKSA9PiB0eXBlb2YgdmFsID09PSBcImZ1bmN0aW9uXCI7XG5jb25zdCBpc051bWJlciA9ICh2YWwpID0+IHR5cGVvZiB2YWwgPT09IFwibnVtYmVyXCI7XG5jb25zdCBpc1N0cmluZyA9ICh2YWwpID0+IHR5cGVvZiB2YWwgPT09IFwic3RyaW5nXCI7XG5jb25zdCBpc09iamVjdCA9ICh2YWwpID0+IHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gXCJbb2JqZWN0IE9iamVjdF1cIjtcbmNvbnN0IGlzV2luZG93ID0gKHZhbCkgPT4gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0b1N0cmluZy5jYWxsKHZhbCkgPT09IFwiW29iamVjdCBXaW5kb3ddXCI7XG5jb25zdCBub3cgPSAoKSA9PiBEYXRlLm5vdygpO1xuY29uc3QgdGltZXN0YW1wID0gKCkgPT4gK0RhdGUubm93KCk7XG5jb25zdCBjbGFtcCA9IChuLCBtaW4sIG1heCkgPT4gTWF0aC5taW4obWF4LCBNYXRoLm1heChtaW4sIG4pKTtcbmNvbnN0IG5vb3AgPSAoKSA9PiB7XG59O1xuY29uc3QgcmFuZCA9IChtaW4sIG1heCkgPT4ge1xuICBtaW4gPSBNYXRoLmNlaWwobWluKTtcbiAgbWF4ID0gTWF0aC5mbG9vcihtYXgpO1xuICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbiArIDEpKSArIG1pbjtcbn07XG5jb25zdCBpc0lPUyA9IGlzQ2xpZW50ICYmICgoX2EgPSB3aW5kb3cgPT0gbnVsbCA/IHZvaWQgMCA6IHdpbmRvdy5uYXZpZ2F0b3IpID09IG51bGwgPyB2b2lkIDAgOiBfYS51c2VyQWdlbnQpICYmIC9pUChhZHxob25lfG9kKS8udGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbmZ1bmN0aW9uIGNyZWF0ZUZpbHRlcldyYXBwZXIoZmlsdGVyLCBmbikge1xuICBmdW5jdGlvbiB3cmFwcGVyKC4uLmFyZ3MpIHtcbiAgICBmaWx0ZXIoKCkgPT4gZm4uYXBwbHkodGhpcywgYXJncyksIHsgZm4sIHRoaXNBcmc6IHRoaXMsIGFyZ3MgfSk7XG4gIH1cbiAgcmV0dXJuIHdyYXBwZXI7XG59XG5jb25zdCBieXBhc3NGaWx0ZXIgPSAoaW52b2tlKSA9PiB7XG4gIHJldHVybiBpbnZva2UoKTtcbn07XG5mdW5jdGlvbiBkZWJvdW5jZUZpbHRlcihtcywgb3B0aW9ucyA9IHt9KSB7XG4gIGxldCB0aW1lcjtcbiAgbGV0IG1heFRpbWVyO1xuICBjb25zdCBmaWx0ZXIgPSAoaW52b2tlKSA9PiB7XG4gICAgY29uc3QgZHVyYXRpb24gPSB2dWVEZW1pLnVucmVmKG1zKTtcbiAgICBjb25zdCBtYXhEdXJhdGlvbiA9IHZ1ZURlbWkudW5yZWYob3B0aW9ucy5tYXhXYWl0KTtcbiAgICBpZiAodGltZXIpXG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIGlmIChkdXJhdGlvbiA8PSAwIHx8IG1heER1cmF0aW9uICE9PSB2b2lkIDAgJiYgbWF4RHVyYXRpb24gPD0gMCkge1xuICAgICAgaWYgKG1heFRpbWVyKSB7XG4gICAgICAgIGNsZWFyVGltZW91dChtYXhUaW1lcik7XG4gICAgICAgIG1heFRpbWVyID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpbnZva2UoKTtcbiAgICB9XG4gICAgaWYgKG1heER1cmF0aW9uICYmICFtYXhUaW1lcikge1xuICAgICAgbWF4VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRpbWVyKVxuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgIG1heFRpbWVyID0gbnVsbDtcbiAgICAgICAgaW52b2tlKCk7XG4gICAgICB9LCBtYXhEdXJhdGlvbik7XG4gICAgfVxuICAgIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAobWF4VGltZXIpXG4gICAgICAgIGNsZWFyVGltZW91dChtYXhUaW1lcik7XG4gICAgICBtYXhUaW1lciA9IG51bGw7XG4gICAgICBpbnZva2UoKTtcbiAgICB9LCBkdXJhdGlvbik7XG4gIH07XG4gIHJldHVybiBmaWx0ZXI7XG59XG5mdW5jdGlvbiB0aHJvdHRsZUZpbHRlcihtcywgdHJhaWxpbmcgPSB0cnVlLCBsZWFkaW5nID0gdHJ1ZSkge1xuICBsZXQgbGFzdEV4ZWMgPSAwO1xuICBsZXQgdGltZXI7XG4gIGxldCBpc0xlYWRpbmcgPSB0cnVlO1xuICBjb25zdCBjbGVhciA9ICgpID0+IHtcbiAgICBpZiAodGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICB0aW1lciA9IHZvaWQgMDtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGZpbHRlciA9IChpbnZva2UpID0+IHtcbiAgICBjb25zdCBkdXJhdGlvbiA9IHZ1ZURlbWkudW5yZWYobXMpO1xuICAgIGNvbnN0IGVsYXBzZWQgPSBEYXRlLm5vdygpIC0gbGFzdEV4ZWM7XG4gICAgY2xlYXIoKTtcbiAgICBpZiAoZHVyYXRpb24gPD0gMCkge1xuICAgICAgbGFzdEV4ZWMgPSBEYXRlLm5vdygpO1xuICAgICAgcmV0dXJuIGludm9rZSgpO1xuICAgIH1cbiAgICBpZiAoZWxhcHNlZCA+IGR1cmF0aW9uICYmIChsZWFkaW5nIHx8ICFpc0xlYWRpbmcpKSB7XG4gICAgICBsYXN0RXhlYyA9IERhdGUubm93KCk7XG4gICAgICBpbnZva2UoKTtcbiAgICB9IGVsc2UgaWYgKHRyYWlsaW5nKSB7XG4gICAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBsYXN0RXhlYyA9IERhdGUubm93KCk7XG4gICAgICAgIGlzTGVhZGluZyA9IHRydWU7XG4gICAgICAgIGNsZWFyKCk7XG4gICAgICAgIGludm9rZSgpO1xuICAgICAgfSwgZHVyYXRpb24pO1xuICAgIH1cbiAgICBpZiAoIWxlYWRpbmcgJiYgIXRpbWVyKVxuICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IGlzTGVhZGluZyA9IHRydWUsIGR1cmF0aW9uKTtcbiAgICBpc0xlYWRpbmcgPSBmYWxzZTtcbiAgfTtcbiAgcmV0dXJuIGZpbHRlcjtcbn1cbmZ1bmN0aW9uIHBhdXNhYmxlRmlsdGVyKGV4dGVuZEZpbHRlciA9IGJ5cGFzc0ZpbHRlcikge1xuICBjb25zdCBpc0FjdGl2ZSA9IHZ1ZURlbWkucmVmKHRydWUpO1xuICBmdW5jdGlvbiBwYXVzZSgpIHtcbiAgICBpc0FjdGl2ZS52YWx1ZSA9IGZhbHNlO1xuICB9XG4gIGZ1bmN0aW9uIHJlc3VtZSgpIHtcbiAgICBpc0FjdGl2ZS52YWx1ZSA9IHRydWU7XG4gIH1cbiAgY29uc3QgZXZlbnRGaWx0ZXIgPSAoLi4uYXJncykgPT4ge1xuICAgIGlmIChpc0FjdGl2ZS52YWx1ZSlcbiAgICAgIGV4dGVuZEZpbHRlciguLi5hcmdzKTtcbiAgfTtcbiAgcmV0dXJuIHsgaXNBY3RpdmUsIHBhdXNlLCByZXN1bWUsIGV2ZW50RmlsdGVyIH07XG59XG5cbmZ1bmN0aW9uIF9fb25seVZ1ZTMobmFtZSA9IFwidGhpcyBmdW5jdGlvblwiKSB7XG4gIGlmICh2dWVEZW1pLmlzVnVlMylcbiAgICByZXR1cm47XG4gIHRocm93IG5ldyBFcnJvcihgW1Z1ZVVzZV0gJHtuYW1lfSBpcyBvbmx5IHdvcmtzIG9uIFZ1ZSAzLmApO1xufVxuY29uc3QgZGlyZWN0aXZlSG9va3MgPSB7XG4gIG1vdW50ZWQ6IHZ1ZURlbWkuaXNWdWUzID8gXCJtb3VudGVkXCIgOiBcImluc2VydGVkXCIsXG4gIHVwZGF0ZWQ6IHZ1ZURlbWkuaXNWdWUzID8gXCJ1cGRhdGVkXCIgOiBcImNvbXBvbmVudFVwZGF0ZWRcIixcbiAgdW5tb3VudGVkOiB2dWVEZW1pLmlzVnVlMyA/IFwidW5tb3VudGVkXCIgOiBcInVuYmluZFwiXG59O1xuXG5mdW5jdGlvbiBwcm9taXNlVGltZW91dChtcywgdGhyb3dPblRpbWVvdXQgPSBmYWxzZSwgcmVhc29uID0gXCJUaW1lb3V0XCIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBpZiAodGhyb3dPblRpbWVvdXQpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdChyZWFzb24pLCBtcyk7XG4gICAgZWxzZVxuICAgICAgc2V0VGltZW91dChyZXNvbHZlLCBtcyk7XG4gIH0pO1xufVxuZnVuY3Rpb24gaWRlbnRpdHkoYXJnKSB7XG4gIHJldHVybiBhcmc7XG59XG5mdW5jdGlvbiBjcmVhdGVTaW5nbGV0b25Qcm9taXNlKGZuKSB7XG4gIGxldCBfcHJvbWlzZTtcbiAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICBpZiAoIV9wcm9taXNlKVxuICAgICAgX3Byb21pc2UgPSBmbigpO1xuICAgIHJldHVybiBfcHJvbWlzZTtcbiAgfVxuICB3cmFwcGVyLnJlc2V0ID0gYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IF9wcmV2ID0gX3Byb21pc2U7XG4gICAgX3Byb21pc2UgPSB2b2lkIDA7XG4gICAgaWYgKF9wcmV2KVxuICAgICAgYXdhaXQgX3ByZXY7XG4gIH07XG4gIHJldHVybiB3cmFwcGVyO1xufVxuZnVuY3Rpb24gaW52b2tlKGZuKSB7XG4gIHJldHVybiBmbigpO1xufVxuZnVuY3Rpb24gY29udGFpbnNQcm9wKG9iaiwgLi4ucHJvcHMpIHtcbiAgcmV0dXJuIHByb3BzLnNvbWUoKGspID0+IGsgaW4gb2JqKTtcbn1cbmZ1bmN0aW9uIGluY3JlYXNlV2l0aFVuaXQodGFyZ2V0LCBkZWx0YSkge1xuICB2YXIgX2E7XG4gIGlmICh0eXBlb2YgdGFyZ2V0ID09PSBcIm51bWJlclwiKVxuICAgIHJldHVybiB0YXJnZXQgKyBkZWx0YTtcbiAgY29uc3QgdmFsdWUgPSAoKF9hID0gdGFyZ2V0Lm1hdGNoKC9eLT9bMC05XStcXC4/WzAtOV0qLykpID09IG51bGwgPyB2b2lkIDAgOiBfYVswXSkgfHwgXCJcIjtcbiAgY29uc3QgdW5pdCA9IHRhcmdldC5zbGljZSh2YWx1ZS5sZW5ndGgpO1xuICBjb25zdCByZXN1bHQgPSBwYXJzZUZsb2F0KHZhbHVlKSArIGRlbHRhO1xuICBpZiAoTnVtYmVyLmlzTmFOKHJlc3VsdCkpXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgcmV0dXJuIHJlc3VsdCArIHVuaXQ7XG59XG5mdW5jdGlvbiBvYmplY3RQaWNrKG9iaiwga2V5cywgb21pdFVuZGVmaW5lZCA9IGZhbHNlKSB7XG4gIHJldHVybiBrZXlzLnJlZHVjZSgobiwgaykgPT4ge1xuICAgIGlmIChrIGluIG9iaikge1xuICAgICAgaWYgKCFvbWl0VW5kZWZpbmVkIHx8IG9ialtrXSAhPT0gdm9pZCAwKVxuICAgICAgICBuW2tdID0gb2JqW2tdO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfSwge30pO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlZFdpdGhDb250cm9sKHNvdXJjZSwgZm4pIHtcbiAgbGV0IHYgPSB2b2lkIDA7XG4gIGxldCB0cmFjaztcbiAgbGV0IHRyaWdnZXI7XG4gIGNvbnN0IGRpcnR5ID0gdnVlRGVtaS5yZWYodHJ1ZSk7XG4gIGNvbnN0IHVwZGF0ZSA9ICgpID0+IHtcbiAgICBkaXJ0eS52YWx1ZSA9IHRydWU7XG4gICAgdHJpZ2dlcigpO1xuICB9O1xuICB2dWVEZW1pLndhdGNoKHNvdXJjZSwgdXBkYXRlLCB7IGZsdXNoOiBcInN5bmNcIiB9KTtcbiAgY29uc3QgZ2V0ID0gaXNGdW5jdGlvbihmbikgPyBmbiA6IGZuLmdldDtcbiAgY29uc3Qgc2V0ID0gaXNGdW5jdGlvbihmbikgPyB2b2lkIDAgOiBmbi5zZXQ7XG4gIGNvbnN0IHJlc3VsdCA9IHZ1ZURlbWkuY3VzdG9tUmVmKChfdHJhY2ssIF90cmlnZ2VyKSA9PiB7XG4gICAgdHJhY2sgPSBfdHJhY2s7XG4gICAgdHJpZ2dlciA9IF90cmlnZ2VyO1xuICAgIHJldHVybiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIGlmIChkaXJ0eS52YWx1ZSkge1xuICAgICAgICAgIHYgPSBnZXQoKTtcbiAgICAgICAgICBkaXJ0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRyYWNrKCk7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSxcbiAgICAgIHNldCh2Mikge1xuICAgICAgICBzZXQgPT0gbnVsbCA/IHZvaWQgMCA6IHNldCh2Mik7XG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG4gIGlmIChPYmplY3QuaXNFeHRlbnNpYmxlKHJlc3VsdCkpXG4gICAgcmVzdWx0LnRyaWdnZXIgPSB1cGRhdGU7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUV2ZW50SG9vaygpIHtcbiAgY29uc3QgZm5zID0gW107XG4gIGNvbnN0IG9mZiA9IChmbikgPT4ge1xuICAgIGNvbnN0IGluZGV4ID0gZm5zLmluZGV4T2YoZm4pO1xuICAgIGlmIChpbmRleCAhPT0gLTEpXG4gICAgICBmbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgfTtcbiAgY29uc3Qgb24gPSAoZm4pID0+IHtcbiAgICBmbnMucHVzaChmbik7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9mZjogKCkgPT4gb2ZmKGZuKVxuICAgIH07XG4gIH07XG4gIGNvbnN0IHRyaWdnZXIgPSAocGFyYW0pID0+IHtcbiAgICBmbnMuZm9yRWFjaCgoZm4pID0+IGZuKHBhcmFtKSk7XG4gIH07XG4gIHJldHVybiB7XG4gICAgb24sXG4gICAgb2ZmLFxuICAgIHRyaWdnZXJcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlR2xvYmFsU3RhdGUoc3RhdGVGYWN0b3J5KSB7XG4gIGxldCBpbml0aWFsaXplZCA9IGZhbHNlO1xuICBsZXQgc3RhdGU7XG4gIGNvbnN0IHNjb3BlID0gdnVlRGVtaS5lZmZlY3RTY29wZSh0cnVlKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAoIWluaXRpYWxpemVkKSB7XG4gICAgICBzdGF0ZSA9IHNjb3BlLnJ1bihzdGF0ZUZhY3RvcnkpO1xuICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGU7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUluamVjdGlvblN0YXRlKGNvbXBvc2FibGUpIHtcbiAgY29uc3Qga2V5ID0gU3ltYm9sKFwiSW5qZWN0aW9uU3RhdGVcIik7XG4gIGNvbnN0IHVzZVByb3ZpZGluZ1N0YXRlID0gKC4uLmFyZ3MpID0+IHtcbiAgICB2dWVEZW1pLnByb3ZpZGUoa2V5LCBjb21wb3NhYmxlKC4uLmFyZ3MpKTtcbiAgfTtcbiAgY29uc3QgdXNlSW5qZWN0ZWRTdGF0ZSA9ICgpID0+IHZ1ZURlbWkuaW5qZWN0KGtleSk7XG4gIHJldHVybiBbdXNlUHJvdmlkaW5nU3RhdGUsIHVzZUluamVjdGVkU3RhdGVdO1xufVxuXG5mdW5jdGlvbiB0cnlPblNjb3BlRGlzcG9zZShmbikge1xuICBpZiAodnVlRGVtaS5nZXRDdXJyZW50U2NvcGUoKSkge1xuICAgIHZ1ZURlbWkub25TY29wZURpc3Bvc2UoZm4pO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlU2hhcmVkQ29tcG9zYWJsZShjb21wb3NhYmxlKSB7XG4gIGxldCBzdWJzY3JpYmVycyA9IDA7XG4gIGxldCBzdGF0ZTtcbiAgbGV0IHNjb3BlO1xuICBjb25zdCBkaXNwb3NlID0gKCkgPT4ge1xuICAgIHN1YnNjcmliZXJzIC09IDE7XG4gICAgaWYgKHNjb3BlICYmIHN1YnNjcmliZXJzIDw9IDApIHtcbiAgICAgIHNjb3BlLnN0b3AoKTtcbiAgICAgIHN0YXRlID0gdm9pZCAwO1xuICAgICAgc2NvcGUgPSB2b2lkIDA7XG4gICAgfVxuICB9O1xuICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICBzdWJzY3JpYmVycyArPSAxO1xuICAgIGlmICghc3RhdGUpIHtcbiAgICAgIHNjb3BlID0gdnVlRGVtaS5lZmZlY3RTY29wZSh0cnVlKTtcbiAgICAgIHN0YXRlID0gc2NvcGUucnVuKCgpID0+IGNvbXBvc2FibGUoLi4uYXJncykpO1xuICAgIH1cbiAgICB0cnlPblNjb3BlRGlzcG9zZShkaXNwb3NlKTtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGV4dGVuZFJlZihyZWYsIGV4dGVuZCwgeyBlbnVtZXJhYmxlID0gZmFsc2UsIHVud3JhcCA9IHRydWUgfSA9IHt9KSB7XG4gIF9fb25seVZ1ZTMoKTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZXh0ZW5kKSkge1xuICAgIGlmIChrZXkgPT09IFwidmFsdWVcIilcbiAgICAgIGNvbnRpbnVlO1xuICAgIGlmICh2dWVEZW1pLmlzUmVmKHZhbHVlKSAmJiB1bndyYXApIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZWYsIGtleSwge1xuICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlLnZhbHVlO1xuICAgICAgICB9LFxuICAgICAgICBzZXQodikge1xuICAgICAgICAgIHZhbHVlLnZhbHVlID0gdjtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZWYsIGtleSwgeyB2YWx1ZSwgZW51bWVyYWJsZSB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlZjtcbn1cblxuZnVuY3Rpb24gZ2V0KG9iaiwga2V5KSB7XG4gIGlmIChrZXkgPT0gbnVsbClcbiAgICByZXR1cm4gdnVlRGVtaS51bnJlZihvYmopO1xuICByZXR1cm4gdnVlRGVtaS51bnJlZihvYmopW2tleV07XG59XG5cbmZ1bmN0aW9uIGlzRGVmaW5lZCh2KSB7XG4gIHJldHVybiB2dWVEZW1pLnVucmVmKHYpICE9IG51bGw7XG59XG5cbmZ1bmN0aW9uIGxvZ2ljQW5kKC4uLmFyZ3MpIHtcbiAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gYXJncy5ldmVyeSgoaSkgPT4gdnVlRGVtaS51bnJlZihpKSkpO1xufVxuXG5mdW5jdGlvbiBsb2dpY05vdCh2KSB7XG4gIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+ICF2dWVEZW1pLnVucmVmKHYpKTtcbn1cblxuZnVuY3Rpb24gbG9naWNPciguLi5hcmdzKSB7XG4gIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IGFyZ3Muc29tZSgoaSkgPT4gdnVlRGVtaS51bnJlZihpKSkpO1xufVxuXG52YXIgX19kZWZQcm9wJDggPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyRhID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkYSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJGEgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCQ4ID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCQ4KG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyQ4ID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkYS5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJDgoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJGEpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJGEoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kYS5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkOChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbmZ1bmN0aW9uIG1ha2VEZXN0cnVjdHVyYWJsZShvYmosIGFycikge1xuICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGNvbnN0IGNsb25lID0gX19zcHJlYWRWYWx1ZXMkOCh7fSwgb2JqKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY2xvbmUsIFN5bWJvbC5pdGVyYXRvciwge1xuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB2YWx1ZSgpIHtcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBuZXh0OiAoKSA9PiAoe1xuICAgICAgICAgICAgdmFsdWU6IGFycltpbmRleCsrXSxcbiAgICAgICAgICAgIGRvbmU6IGluZGV4ID4gYXJyLmxlbmd0aFxuICAgICAgICAgIH0pXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNsb25lO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKFsuLi5hcnJdLCBvYmopO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlYWN0aWZ5KGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiguLi5hcmdzKSB7XG4gICAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gZm4uYXBwbHkodGhpcywgYXJncy5tYXAoKGkpID0+IHZ1ZURlbWkudW5yZWYoaSkpKSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHJlYWN0aWZ5T2JqZWN0KG9iaiwgb3B0aW9uc09yS2V5cyA9IHt9KSB7XG4gIGxldCBrZXlzID0gW107XG4gIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbnNPcktleXMpKSB7XG4gICAga2V5cyA9IG9wdGlvbnNPcktleXM7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgeyBpbmNsdWRlT3duUHJvcGVydGllcyA9IHRydWUgfSA9IG9wdGlvbnNPcktleXM7XG4gICAga2V5cy5wdXNoKC4uLk9iamVjdC5rZXlzKG9iaikpO1xuICAgIGlmIChpbmNsdWRlT3duUHJvcGVydGllcylcbiAgICAgIGtleXMucHVzaCguLi5PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmopKTtcbiAgfVxuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKGtleXMubWFwKChrZXkpID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IG9ialtrZXldO1xuICAgIHJldHVybiBbXG4gICAgICBrZXksXG4gICAgICB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIiA/IHJlYWN0aWZ5KHZhbHVlLmJpbmQob2JqKSkgOiB2YWx1ZVxuICAgIF07XG4gIH0pKTtcbn1cblxuZnVuY3Rpb24gdG9SZWFjdGl2ZShvYmplY3RSZWYpIHtcbiAgaWYgKCF2dWVEZW1pLmlzUmVmKG9iamVjdFJlZikpXG4gICAgcmV0dXJuIHZ1ZURlbWkucmVhY3RpdmUob2JqZWN0UmVmKTtcbiAgY29uc3QgcHJveHkgPSBuZXcgUHJveHkoe30sIHtcbiAgICBnZXQoXywgcCwgcmVjZWl2ZXIpIHtcbiAgICAgIHJldHVybiB2dWVEZW1pLnVucmVmKFJlZmxlY3QuZ2V0KG9iamVjdFJlZi52YWx1ZSwgcCwgcmVjZWl2ZXIpKTtcbiAgICB9LFxuICAgIHNldChfLCBwLCB2YWx1ZSkge1xuICAgICAgaWYgKHZ1ZURlbWkuaXNSZWYob2JqZWN0UmVmLnZhbHVlW3BdKSAmJiAhdnVlRGVtaS5pc1JlZih2YWx1ZSkpXG4gICAgICAgIG9iamVjdFJlZi52YWx1ZVtwXS52YWx1ZSA9IHZhbHVlO1xuICAgICAgZWxzZVxuICAgICAgICBvYmplY3RSZWYudmFsdWVbcF0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZGVsZXRlUHJvcGVydHkoXywgcCkge1xuICAgICAgcmV0dXJuIFJlZmxlY3QuZGVsZXRlUHJvcGVydHkob2JqZWN0UmVmLnZhbHVlLCBwKTtcbiAgICB9LFxuICAgIGhhcyhfLCBwKSB7XG4gICAgICByZXR1cm4gUmVmbGVjdC5oYXMob2JqZWN0UmVmLnZhbHVlLCBwKTtcbiAgICB9LFxuICAgIG93bktleXMoKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0UmVmLnZhbHVlKTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gdnVlRGVtaS5yZWFjdGl2ZShwcm94eSk7XG59XG5cbmZ1bmN0aW9uIHJlYWN0aXZlQ29tcHV0ZWQoZm4pIHtcbiAgcmV0dXJuIHRvUmVhY3RpdmUodnVlRGVtaS5jb21wdXRlZChmbikpO1xufVxuXG5mdW5jdGlvbiByZWFjdGl2ZU9taXQob2JqLCAuLi5rZXlzKSB7XG4gIGNvbnN0IGZsYXRLZXlzID0ga2V5cy5mbGF0KCk7XG4gIHJldHVybiByZWFjdGl2ZUNvbXB1dGVkKCgpID0+IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh2dWVEZW1pLnRvUmVmcyhvYmopKS5maWx0ZXIoKGUpID0+ICFmbGF0S2V5cy5pbmNsdWRlcyhlWzBdKSkpKTtcbn1cblxuZnVuY3Rpb24gcmVhY3RpdmVQaWNrKG9iaiwgLi4ua2V5cykge1xuICBjb25zdCBmbGF0S2V5cyA9IGtleXMuZmxhdCgpO1xuICByZXR1cm4gdnVlRGVtaS5yZWFjdGl2ZShPYmplY3QuZnJvbUVudHJpZXMoZmxhdEtleXMubWFwKChrKSA9PiBbaywgdnVlRGVtaS50b1JlZihvYmosIGspXSkpKTtcbn1cblxuZnVuY3Rpb24gcmVmQXV0b1Jlc2V0KGRlZmF1bHRWYWx1ZSwgYWZ0ZXJNcyA9IDFlNCkge1xuICByZXR1cm4gdnVlRGVtaS5jdXN0b21SZWYoKHRyYWNrLCB0cmlnZ2VyKSA9PiB7XG4gICAgbGV0IHZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgIGxldCB0aW1lcjtcbiAgICBjb25zdCByZXNldEFmdGVyID0gKCkgPT4gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB2YWx1ZSA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgIHRyaWdnZXIoKTtcbiAgICB9LCB2dWVEZW1pLnVucmVmKGFmdGVyTXMpKTtcbiAgICB0cnlPblNjb3BlRGlzcG9zZSgoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHRyYWNrKCk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH0sXG4gICAgICBzZXQobmV3VmFsdWUpIHtcbiAgICAgICAgdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgdHJpZ2dlcigpO1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICB0aW1lciA9IHJlc2V0QWZ0ZXIoKTtcbiAgICAgIH1cbiAgICB9O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdXNlRGVib3VuY2VGbihmbiwgbXMgPSAyMDAsIG9wdGlvbnMgPSB7fSkge1xuICByZXR1cm4gY3JlYXRlRmlsdGVyV3JhcHBlcihkZWJvdW5jZUZpbHRlcihtcywgb3B0aW9ucyksIGZuKTtcbn1cblxuZnVuY3Rpb24gcmVmRGVib3VuY2VkKHZhbHVlLCBtcyA9IDIwMCwgb3B0aW9ucyA9IHt9KSB7XG4gIGlmIChtcyA8PSAwKVxuICAgIHJldHVybiB2YWx1ZTtcbiAgY29uc3QgZGVib3VuY2VkID0gdnVlRGVtaS5yZWYodmFsdWUudmFsdWUpO1xuICBjb25zdCB1cGRhdGVyID0gdXNlRGVib3VuY2VGbigoKSA9PiB7XG4gICAgZGVib3VuY2VkLnZhbHVlID0gdmFsdWUudmFsdWU7XG4gIH0sIG1zLCBvcHRpb25zKTtcbiAgdnVlRGVtaS53YXRjaCh2YWx1ZSwgKCkgPT4gdXBkYXRlcigpKTtcbiAgcmV0dXJuIGRlYm91bmNlZDtcbn1cblxuZnVuY3Rpb24gcmVmRGVmYXVsdChzb3VyY2UsIGRlZmF1bHRWYWx1ZSkge1xuICByZXR1cm4gdnVlRGVtaS5jb21wdXRlZCh7XG4gICAgZ2V0KCkge1xuICAgICAgdmFyIF9hO1xuICAgICAgcmV0dXJuIChfYSA9IHNvdXJjZS52YWx1ZSkgIT0gbnVsbCA/IF9hIDogZGVmYXVsdFZhbHVlO1xuICAgIH0sXG4gICAgc2V0KHZhbHVlKSB7XG4gICAgICBzb3VyY2UudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB1c2VUaHJvdHRsZUZuKGZuLCBtcyA9IDIwMCwgdHJhaWxpbmcgPSB0cnVlLCBsZWFkaW5nID0gdHJ1ZSkge1xuICByZXR1cm4gY3JlYXRlRmlsdGVyV3JhcHBlcih0aHJvdHRsZUZpbHRlcihtcywgdHJhaWxpbmcsIGxlYWRpbmcpLCBmbik7XG59XG5cbmZ1bmN0aW9uIHJlZlRocm90dGxlZCh2YWx1ZSwgZGVsYXkgPSAyMDAsIHRyYWlsaW5nID0gdHJ1ZSwgbGVhZGluZyA9IHRydWUpIHtcbiAgaWYgKGRlbGF5IDw9IDApXG4gICAgcmV0dXJuIHZhbHVlO1xuICBjb25zdCB0aHJvdHRsZWQgPSB2dWVEZW1pLnJlZih2YWx1ZS52YWx1ZSk7XG4gIGNvbnN0IHVwZGF0ZXIgPSB1c2VUaHJvdHRsZUZuKCgpID0+IHtcbiAgICB0aHJvdHRsZWQudmFsdWUgPSB2YWx1ZS52YWx1ZTtcbiAgfSwgZGVsYXksIHRyYWlsaW5nLCBsZWFkaW5nKTtcbiAgdnVlRGVtaS53YXRjaCh2YWx1ZSwgKCkgPT4gdXBkYXRlcigpKTtcbiAgcmV0dXJuIHRocm90dGxlZDtcbn1cblxuZnVuY3Rpb24gcmVmV2l0aENvbnRyb2woaW5pdGlhbCwgb3B0aW9ucyA9IHt9KSB7XG4gIGxldCBzb3VyY2UgPSBpbml0aWFsO1xuICBsZXQgdHJhY2s7XG4gIGxldCB0cmlnZ2VyO1xuICBjb25zdCByZWYgPSB2dWVEZW1pLmN1c3RvbVJlZigoX3RyYWNrLCBfdHJpZ2dlcikgPT4ge1xuICAgIHRyYWNrID0gX3RyYWNrO1xuICAgIHRyaWdnZXIgPSBfdHJpZ2dlcjtcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gZ2V0KCk7XG4gICAgICB9LFxuICAgICAgc2V0KHYpIHtcbiAgICAgICAgc2V0KHYpO1xuICAgICAgfVxuICAgIH07XG4gIH0pO1xuICBmdW5jdGlvbiBnZXQodHJhY2tpbmcgPSB0cnVlKSB7XG4gICAgaWYgKHRyYWNraW5nKVxuICAgICAgdHJhY2soKTtcbiAgICByZXR1cm4gc291cmNlO1xuICB9XG4gIGZ1bmN0aW9uIHNldCh2YWx1ZSwgdHJpZ2dlcmluZyA9IHRydWUpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGlmICh2YWx1ZSA9PT0gc291cmNlKVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IG9sZCA9IHNvdXJjZTtcbiAgICBpZiAoKChfYSA9IG9wdGlvbnMub25CZWZvcmVDaGFuZ2UpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jYWxsKG9wdGlvbnMsIHZhbHVlLCBvbGQpKSA9PT0gZmFsc2UpXG4gICAgICByZXR1cm47XG4gICAgc291cmNlID0gdmFsdWU7XG4gICAgKF9iID0gb3B0aW9ucy5vbkNoYW5nZWQpID09IG51bGwgPyB2b2lkIDAgOiBfYi5jYWxsKG9wdGlvbnMsIHZhbHVlLCBvbGQpO1xuICAgIGlmICh0cmlnZ2VyaW5nKVxuICAgICAgdHJpZ2dlcigpO1xuICB9XG4gIGNvbnN0IHVudHJhY2tlZEdldCA9ICgpID0+IGdldChmYWxzZSk7XG4gIGNvbnN0IHNpbGVudFNldCA9ICh2KSA9PiBzZXQodiwgZmFsc2UpO1xuICBjb25zdCBwZWVrID0gKCkgPT4gZ2V0KGZhbHNlKTtcbiAgY29uc3QgbGF5ID0gKHYpID0+IHNldCh2LCBmYWxzZSk7XG4gIHJldHVybiBleHRlbmRSZWYocmVmLCB7XG4gICAgZ2V0LFxuICAgIHNldCxcbiAgICB1bnRyYWNrZWRHZXQsXG4gICAgc2lsZW50U2V0LFxuICAgIHBlZWssXG4gICAgbGF5XG4gIH0sIHsgZW51bWVyYWJsZTogdHJ1ZSB9KTtcbn1cbmNvbnN0IGNvbnRyb2xsZWRSZWYgPSByZWZXaXRoQ29udHJvbDtcblxuZnVuY3Rpb24gcmVzb2x2ZVJlZihyKSB7XG4gIHJldHVybiB0eXBlb2YgciA9PT0gXCJmdW5jdGlvblwiID8gdnVlRGVtaS5jb21wdXRlZChyKSA6IHZ1ZURlbWkucmVmKHIpO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlVW5yZWYocikge1xuICByZXR1cm4gdHlwZW9mIHIgPT09IFwiZnVuY3Rpb25cIiA/IHIoKSA6IHZ1ZURlbWkudW5yZWYocik7XG59XG5cbmZ1bmN0aW9uIHNldCguLi5hcmdzKSB7XG4gIGlmIChhcmdzLmxlbmd0aCA9PT0gMikge1xuICAgIGNvbnN0IFtyZWYsIHZhbHVlXSA9IGFyZ3M7XG4gICAgcmVmLnZhbHVlID0gdmFsdWU7XG4gIH1cbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAzKSB7XG4gICAgaWYgKHZ1ZURlbWkuaXNWdWUyKSB7XG4gICAgICB2dWVEZW1pLnNldCguLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgW3RhcmdldCwga2V5LCB2YWx1ZV0gPSBhcmdzO1xuICAgICAgdGFyZ2V0W2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc3luY1JlZihsZWZ0LCByaWdodCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBmbHVzaCA9IFwic3luY1wiLFxuICAgIGRlZXAgPSBmYWxzZSxcbiAgICBpbW1lZGlhdGUgPSB0cnVlLFxuICAgIGRpcmVjdGlvbiA9IFwiYm90aFwiXG4gIH0gPSBvcHRpb25zO1xuICBsZXQgc3RvcDEsIHN0b3AyO1xuICBpZiAoZGlyZWN0aW9uID09PSBcImJvdGhcIiB8fCBkaXJlY3Rpb24gPT09IFwibHRyXCIpIHtcbiAgICBzdG9wMSA9IHZ1ZURlbWkud2F0Y2gobGVmdCwgKG5ld1ZhbHVlKSA9PiByaWdodC52YWx1ZSA9IG5ld1ZhbHVlLCB7IGZsdXNoLCBkZWVwLCBpbW1lZGlhdGUgfSk7XG4gIH1cbiAgaWYgKGRpcmVjdGlvbiA9PT0gXCJib3RoXCIgfHwgZGlyZWN0aW9uID09PSBcInJ0bFwiKSB7XG4gICAgc3RvcDIgPSB2dWVEZW1pLndhdGNoKHJpZ2h0LCAobmV3VmFsdWUpID0+IGxlZnQudmFsdWUgPSBuZXdWYWx1ZSwgeyBmbHVzaCwgZGVlcCwgaW1tZWRpYXRlIH0pO1xuICB9XG4gIHJldHVybiAoKSA9PiB7XG4gICAgc3RvcDEgPT0gbnVsbCA/IHZvaWQgMCA6IHN0b3AxKCk7XG4gICAgc3RvcDIgPT0gbnVsbCA/IHZvaWQgMCA6IHN0b3AyKCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHN5bmNSZWZzKHNvdXJjZSwgdGFyZ2V0cywgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBmbHVzaCA9IFwic3luY1wiLFxuICAgIGRlZXAgPSBmYWxzZSxcbiAgICBpbW1lZGlhdGUgPSB0cnVlXG4gIH0gPSBvcHRpb25zO1xuICBpZiAoIUFycmF5LmlzQXJyYXkodGFyZ2V0cykpXG4gICAgdGFyZ2V0cyA9IFt0YXJnZXRzXTtcbiAgcmV0dXJuIHZ1ZURlbWkud2F0Y2goc291cmNlLCAobmV3VmFsdWUpID0+IHRhcmdldHMuZm9yRWFjaCgodGFyZ2V0KSA9PiB0YXJnZXQudmFsdWUgPSBuZXdWYWx1ZSksIHsgZmx1c2gsIGRlZXAsIGltbWVkaWF0ZSB9KTtcbn1cblxudmFyIF9fZGVmUHJvcCQ3ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmUHJvcHMkNSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzO1xudmFyIF9fZ2V0T3duUHJvcERlc2NzJDUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycztcbnZhciBfX2dldE93blByb3BTeW1ib2xzJDkgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCQ5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kOSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJDcgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJDcob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJDcgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCQ5LmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkNyhhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkOSlcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkOShiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSQ5LmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCQ3KGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xudmFyIF9fc3ByZWFkUHJvcHMkNSA9IChhLCBiKSA9PiBfX2RlZlByb3BzJDUoYSwgX19nZXRPd25Qcm9wRGVzY3MkNShiKSk7XG5mdW5jdGlvbiB0b1JlZnMob2JqZWN0UmVmKSB7XG4gIGlmICghdnVlRGVtaS5pc1JlZihvYmplY3RSZWYpKVxuICAgIHJldHVybiB2dWVEZW1pLnRvUmVmcyhvYmplY3RSZWYpO1xuICBjb25zdCByZXN1bHQgPSBBcnJheS5pc0FycmF5KG9iamVjdFJlZi52YWx1ZSkgPyBuZXcgQXJyYXkob2JqZWN0UmVmLnZhbHVlLmxlbmd0aCkgOiB7fTtcbiAgZm9yIChjb25zdCBrZXkgaW4gb2JqZWN0UmVmLnZhbHVlKSB7XG4gICAgcmVzdWx0W2tleV0gPSB2dWVEZW1pLmN1c3RvbVJlZigoKSA9PiAoe1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gb2JqZWN0UmVmLnZhbHVlW2tleV07XG4gICAgICB9LFxuICAgICAgc2V0KHYpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqZWN0UmVmLnZhbHVlKSkge1xuICAgICAgICAgIGNvbnN0IGNvcHkgPSBbLi4ub2JqZWN0UmVmLnZhbHVlXTtcbiAgICAgICAgICBjb3B5W2tleV0gPSB2O1xuICAgICAgICAgIG9iamVjdFJlZi52YWx1ZSA9IGNvcHk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbmV3T2JqZWN0ID0gX19zcHJlYWRQcm9wcyQ1KF9fc3ByZWFkVmFsdWVzJDcoe30sIG9iamVjdFJlZi52YWx1ZSksIHsgW2tleV06IHYgfSk7XG4gICAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG5ld09iamVjdCwgb2JqZWN0UmVmLnZhbHVlKTtcbiAgICAgICAgICBvYmplY3RSZWYudmFsdWUgPSBuZXdPYmplY3Q7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gdHJ5T25CZWZvcmVNb3VudChmbiwgc3luYyA9IHRydWUpIHtcbiAgaWYgKHZ1ZURlbWkuZ2V0Q3VycmVudEluc3RhbmNlKCkpXG4gICAgdnVlRGVtaS5vbkJlZm9yZU1vdW50KGZuKTtcbiAgZWxzZSBpZiAoc3luYylcbiAgICBmbigpO1xuICBlbHNlXG4gICAgdnVlRGVtaS5uZXh0VGljayhmbik7XG59XG5cbmZ1bmN0aW9uIHRyeU9uQmVmb3JlVW5tb3VudChmbikge1xuICBpZiAodnVlRGVtaS5nZXRDdXJyZW50SW5zdGFuY2UoKSlcbiAgICB2dWVEZW1pLm9uQmVmb3JlVW5tb3VudChmbik7XG59XG5cbmZ1bmN0aW9uIHRyeU9uTW91bnRlZChmbiwgc3luYyA9IHRydWUpIHtcbiAgaWYgKHZ1ZURlbWkuZ2V0Q3VycmVudEluc3RhbmNlKCkpXG4gICAgdnVlRGVtaS5vbk1vdW50ZWQoZm4pO1xuICBlbHNlIGlmIChzeW5jKVxuICAgIGZuKCk7XG4gIGVsc2VcbiAgICB2dWVEZW1pLm5leHRUaWNrKGZuKTtcbn1cblxuZnVuY3Rpb24gdHJ5T25Vbm1vdW50ZWQoZm4pIHtcbiAgaWYgKHZ1ZURlbWkuZ2V0Q3VycmVudEluc3RhbmNlKCkpXG4gICAgdnVlRGVtaS5vblVubW91bnRlZChmbik7XG59XG5cbmZ1bmN0aW9uIHVudGlsKHIpIHtcbiAgbGV0IGlzTm90ID0gZmFsc2U7XG4gIGZ1bmN0aW9uIHRvTWF0Y2goY29uZGl0aW9uLCB7IGZsdXNoID0gXCJzeW5jXCIsIGRlZXAgPSBmYWxzZSwgdGltZW91dCwgdGhyb3dPblRpbWVvdXQgfSA9IHt9KSB7XG4gICAgbGV0IHN0b3AgPSBudWxsO1xuICAgIGNvbnN0IHdhdGNoZXIgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgc3RvcCA9IHZ1ZURlbWkud2F0Y2gociwgKHYpID0+IHtcbiAgICAgICAgaWYgKGNvbmRpdGlvbih2KSAhPT0gaXNOb3QpIHtcbiAgICAgICAgICBzdG9wID09IG51bGwgPyB2b2lkIDAgOiBzdG9wKCk7XG4gICAgICAgICAgcmVzb2x2ZSh2KTtcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICBmbHVzaCxcbiAgICAgICAgZGVlcCxcbiAgICAgICAgaW1tZWRpYXRlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBjb25zdCBwcm9taXNlcyA9IFt3YXRjaGVyXTtcbiAgICBpZiAodGltZW91dCAhPSBudWxsKSB7XG4gICAgICBwcm9taXNlcy5wdXNoKHByb21pc2VUaW1lb3V0KHRpbWVvdXQsIHRocm93T25UaW1lb3V0KS50aGVuKCgpID0+IHZ1ZURlbWkudW5yZWYocikpLmZpbmFsbHkoKCkgPT4gc3RvcCA9PSBudWxsID8gdm9pZCAwIDogc3RvcCgpKSk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJhY2UocHJvbWlzZXMpO1xuICB9XG4gIGZ1bmN0aW9uIHRvQmUodmFsdWUsIG9wdGlvbnMpIHtcbiAgICBpZiAoIXZ1ZURlbWkuaXNSZWYodmFsdWUpKVxuICAgICAgcmV0dXJuIHRvTWF0Y2goKHYpID0+IHYgPT09IHZhbHVlLCBvcHRpb25zKTtcbiAgICBjb25zdCB7IGZsdXNoID0gXCJzeW5jXCIsIGRlZXAgPSBmYWxzZSwgdGltZW91dCwgdGhyb3dPblRpbWVvdXQgfSA9IG9wdGlvbnMgIT0gbnVsbCA/IG9wdGlvbnMgOiB7fTtcbiAgICBsZXQgc3RvcCA9IG51bGw7XG4gICAgY29uc3Qgd2F0Y2hlciA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBzdG9wID0gdnVlRGVtaS53YXRjaChbciwgdmFsdWVdLCAoW3YxLCB2Ml0pID0+IHtcbiAgICAgICAgaWYgKGlzTm90ICE9PSAodjEgPT09IHYyKSkge1xuICAgICAgICAgIHN0b3AgPT0gbnVsbCA/IHZvaWQgMCA6IHN0b3AoKTtcbiAgICAgICAgICByZXNvbHZlKHYxKTtcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICBmbHVzaCxcbiAgICAgICAgZGVlcCxcbiAgICAgICAgaW1tZWRpYXRlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBjb25zdCBwcm9taXNlcyA9IFt3YXRjaGVyXTtcbiAgICBpZiAodGltZW91dCAhPSBudWxsKSB7XG4gICAgICBwcm9taXNlcy5wdXNoKHByb21pc2VUaW1lb3V0KHRpbWVvdXQsIHRocm93T25UaW1lb3V0KS50aGVuKCgpID0+IHZ1ZURlbWkudW5yZWYocikpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBzdG9wID09IG51bGwgPyB2b2lkIDAgOiBzdG9wKCk7XG4gICAgICAgIHJldHVybiB2dWVEZW1pLnVucmVmKHIpO1xuICAgICAgfSkpO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yYWNlKHByb21pc2VzKTtcbiAgfVxuICBmdW5jdGlvbiB0b0JlVHJ1dGh5KG9wdGlvbnMpIHtcbiAgICByZXR1cm4gdG9NYXRjaCgodikgPT4gQm9vbGVhbih2KSwgb3B0aW9ucyk7XG4gIH1cbiAgZnVuY3Rpb24gdG9CZU51bGwob3B0aW9ucykge1xuICAgIHJldHVybiB0b0JlKG51bGwsIG9wdGlvbnMpO1xuICB9XG4gIGZ1bmN0aW9uIHRvQmVVbmRlZmluZWQob3B0aW9ucykge1xuICAgIHJldHVybiB0b0JlKHZvaWQgMCwgb3B0aW9ucyk7XG4gIH1cbiAgZnVuY3Rpb24gdG9CZU5hTihvcHRpb25zKSB7XG4gICAgcmV0dXJuIHRvTWF0Y2goTnVtYmVyLmlzTmFOLCBvcHRpb25zKTtcbiAgfVxuICBmdW5jdGlvbiB0b0NvbnRhaW5zKHZhbHVlLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIHRvTWF0Y2goKHYpID0+IHtcbiAgICAgIGNvbnN0IGFycmF5ID0gQXJyYXkuZnJvbSh2KTtcbiAgICAgIHJldHVybiBhcnJheS5pbmNsdWRlcyh2YWx1ZSkgfHwgYXJyYXkuaW5jbHVkZXModnVlRGVtaS51bnJlZih2YWx1ZSkpO1xuICAgIH0sIG9wdGlvbnMpO1xuICB9XG4gIGZ1bmN0aW9uIGNoYW5nZWQob3B0aW9ucykge1xuICAgIHJldHVybiBjaGFuZ2VkVGltZXMoMSwgb3B0aW9ucyk7XG4gIH1cbiAgZnVuY3Rpb24gY2hhbmdlZFRpbWVzKG4gPSAxLCBvcHRpb25zKSB7XG4gICAgbGV0IGNvdW50ID0gLTE7XG4gICAgcmV0dXJuIHRvTWF0Y2goKCkgPT4ge1xuICAgICAgY291bnQgKz0gMTtcbiAgICAgIHJldHVybiBjb3VudCA+PSBuO1xuICAgIH0sIG9wdGlvbnMpO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KHZ1ZURlbWkudW5yZWYocikpKSB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSB7XG4gICAgICB0b01hdGNoLFxuICAgICAgdG9Db250YWlucyxcbiAgICAgIGNoYW5nZWQsXG4gICAgICBjaGFuZ2VkVGltZXMsXG4gICAgICBnZXQgbm90KCkge1xuICAgICAgICBpc05vdCA9ICFpc05vdDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSB7XG4gICAgICB0b01hdGNoLFxuICAgICAgdG9CZSxcbiAgICAgIHRvQmVUcnV0aHksXG4gICAgICB0b0JlTnVsbCxcbiAgICAgIHRvQmVOYU4sXG4gICAgICB0b0JlVW5kZWZpbmVkLFxuICAgICAgY2hhbmdlZCxcbiAgICAgIGNoYW5nZWRUaW1lcyxcbiAgICAgIGdldCBub3QoKSB7XG4gICAgICAgIGlzTm90ID0gIWlzTm90O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VDb3VudGVyKGluaXRpYWxWYWx1ZSA9IDAsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBjb3VudCA9IHZ1ZURlbWkucmVmKGluaXRpYWxWYWx1ZSk7XG4gIGNvbnN0IHtcbiAgICBtYXggPSBJbmZpbml0eSxcbiAgICBtaW4gPSAtSW5maW5pdHlcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGluYyA9IChkZWx0YSA9IDEpID0+IGNvdW50LnZhbHVlID0gTWF0aC5taW4obWF4LCBjb3VudC52YWx1ZSArIGRlbHRhKTtcbiAgY29uc3QgZGVjID0gKGRlbHRhID0gMSkgPT4gY291bnQudmFsdWUgPSBNYXRoLm1heChtaW4sIGNvdW50LnZhbHVlIC0gZGVsdGEpO1xuICBjb25zdCBnZXQgPSAoKSA9PiBjb3VudC52YWx1ZTtcbiAgY29uc3Qgc2V0ID0gKHZhbCkgPT4gY291bnQudmFsdWUgPSB2YWw7XG4gIGNvbnN0IHJlc2V0ID0gKHZhbCA9IGluaXRpYWxWYWx1ZSkgPT4ge1xuICAgIGluaXRpYWxWYWx1ZSA9IHZhbDtcbiAgICByZXR1cm4gc2V0KHZhbCk7XG4gIH07XG4gIHJldHVybiB7IGNvdW50LCBpbmMsIGRlYywgZ2V0LCBzZXQsIHJlc2V0IH07XG59XG5cbmNvbnN0IFJFR0VYX1BBUlNFID0gL14oXFxkezR9KVstL10/KFxcZHsxLDJ9KT9bLS9dPyhcXGR7MCwyfSlbVHRcXHNdKihcXGR7MSwyfSk/Oj8oXFxkezEsMn0pPzo/KFxcZHsxLDJ9KT9bLjpdPyhcXGQrKT8kLztcbmNvbnN0IFJFR0VYX0ZPUk1BVCA9IC9cXFsoW15cXF1dKyldfFl7MSw0fXxNezEsNH18RHsxLDJ9fGR7MSw0fXxIezEsMn18aHsxLDJ9fGF8QXxtezEsMn18c3sxLDJ9fFp7MSwyfXxTU1MvZztcbmNvbnN0IGZvcm1hdERhdGUgPSAoZGF0ZSwgZm9ybWF0U3RyKSA9PiB7XG4gIGNvbnN0IHllYXJzID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBtb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgY29uc3QgZGF5cyA9IGRhdGUuZ2V0RGF0ZSgpO1xuICBjb25zdCBob3VycyA9IGRhdGUuZ2V0SG91cnMoKTtcbiAgY29uc3QgbWludXRlcyA9IGRhdGUuZ2V0TWludXRlcygpO1xuICBjb25zdCBzZWNvbmRzID0gZGF0ZS5nZXRTZWNvbmRzKCk7XG4gIGNvbnN0IG1pbGxpc2Vjb25kcyA9IGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCk7XG4gIGNvbnN0IGRheSA9IGRhdGUuZ2V0RGF5KCk7XG4gIGNvbnN0IG1hdGNoZXMgPSB7XG4gICAgWVk6IFN0cmluZyh5ZWFycykuc2xpY2UoLTIpLFxuICAgIFlZWVk6IHllYXJzLFxuICAgIE06IG1vbnRoICsgMSxcbiAgICBNTTogYCR7bW9udGggKyAxfWAucGFkU3RhcnQoMiwgXCIwXCIpLFxuICAgIEQ6IFN0cmluZyhkYXlzKSxcbiAgICBERDogYCR7ZGF5c31gLnBhZFN0YXJ0KDIsIFwiMFwiKSxcbiAgICBIOiBTdHJpbmcoaG91cnMpLFxuICAgIEhIOiBgJHtob3Vyc31gLnBhZFN0YXJ0KDIsIFwiMFwiKSxcbiAgICBoOiBgJHtob3VycyAlIDEyIHx8IDEyfWAucGFkU3RhcnQoMSwgXCIwXCIpLFxuICAgIGhoOiBgJHtob3VycyAlIDEyIHx8IDEyfWAucGFkU3RhcnQoMiwgXCIwXCIpLFxuICAgIG06IFN0cmluZyhtaW51dGVzKSxcbiAgICBtbTogYCR7bWludXRlc31gLnBhZFN0YXJ0KDIsIFwiMFwiKSxcbiAgICBzOiBTdHJpbmcoc2Vjb25kcyksXG4gICAgc3M6IGAke3NlY29uZHN9YC5wYWRTdGFydCgyLCBcIjBcIiksXG4gICAgU1NTOiBgJHttaWxsaXNlY29uZHN9YC5wYWRTdGFydCgzLCBcIjBcIiksXG4gICAgZDogZGF5XG4gIH07XG4gIHJldHVybiBmb3JtYXRTdHIucmVwbGFjZShSRUdFWF9GT1JNQVQsIChtYXRjaCwgJDEpID0+ICQxIHx8IG1hdGNoZXNbbWF0Y2hdKTtcbn07XG5jb25zdCBub3JtYWxpemVEYXRlID0gKGRhdGUpID0+IHtcbiAgaWYgKGRhdGUgPT09IG51bGwpXG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIGlmIChkYXRlID09PSB2b2lkIDApXG4gICAgcmV0dXJuIG5ldyBEYXRlKCk7XG4gIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSlcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZSk7XG4gIGlmICh0eXBlb2YgZGF0ZSA9PT0gXCJzdHJpbmdcIiAmJiAhL1okL2kudGVzdChkYXRlKSkge1xuICAgIGNvbnN0IGQgPSBkYXRlLm1hdGNoKFJFR0VYX1BBUlNFKTtcbiAgICBpZiAoZCkge1xuICAgICAgY29uc3QgbSA9IGRbMl0gLSAxIHx8IDA7XG4gICAgICBjb25zdCBtcyA9IChkWzddIHx8IFwiMFwiKS5zdWJzdHJpbmcoMCwgMyk7XG4gICAgICByZXR1cm4gbmV3IERhdGUoZFsxXSwgbSwgZFszXSB8fCAxLCBkWzRdIHx8IDAsIGRbNV0gfHwgMCwgZFs2XSB8fCAwLCBtcyk7XG4gICAgfVxuICB9XG4gIHJldHVybiBuZXcgRGF0ZShkYXRlKTtcbn07XG5mdW5jdGlvbiB1c2VEYXRlRm9ybWF0KGRhdGUsIGZvcm1hdFN0ciA9IFwiSEg6bW06c3NcIikge1xuICByZXR1cm4gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBmb3JtYXREYXRlKG5vcm1hbGl6ZURhdGUodnVlRGVtaS51bnJlZihkYXRlKSksIHZ1ZURlbWkudW5yZWYoZm9ybWF0U3RyKSkpO1xufVxuXG5mdW5jdGlvbiB1c2VJbnRlcnZhbEZuKGNiLCBpbnRlcnZhbCA9IDFlMywgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBpbW1lZGlhdGUgPSB0cnVlLFxuICAgIGltbWVkaWF0ZUNhbGxiYWNrID0gZmFsc2VcbiAgfSA9IG9wdGlvbnM7XG4gIGxldCB0aW1lciA9IG51bGw7XG4gIGNvbnN0IGlzQWN0aXZlID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBmdW5jdGlvbiBjbGVhbigpIHtcbiAgICBpZiAodGltZXIpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpO1xuICAgICAgdGltZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBwYXVzZSgpIHtcbiAgICBpc0FjdGl2ZS52YWx1ZSA9IGZhbHNlO1xuICAgIGNsZWFuKCk7XG4gIH1cbiAgZnVuY3Rpb24gcmVzdW1lKCkge1xuICAgIGlmICh2dWVEZW1pLnVucmVmKGludGVydmFsKSA8PSAwKVxuICAgICAgcmV0dXJuO1xuICAgIGlzQWN0aXZlLnZhbHVlID0gdHJ1ZTtcbiAgICBpZiAoaW1tZWRpYXRlQ2FsbGJhY2spXG4gICAgICBjYigpO1xuICAgIGNsZWFuKCk7XG4gICAgdGltZXIgPSBzZXRJbnRlcnZhbChjYiwgdnVlRGVtaS51bnJlZihpbnRlcnZhbCkpO1xuICB9XG4gIGlmIChpbW1lZGlhdGUgJiYgaXNDbGllbnQpXG4gICAgcmVzdW1lKCk7XG4gIGlmICh2dWVEZW1pLmlzUmVmKGludGVydmFsKSkge1xuICAgIGNvbnN0IHN0b3BXYXRjaCA9IHZ1ZURlbWkud2F0Y2goaW50ZXJ2YWwsICgpID0+IHtcbiAgICAgIGlmIChpc0FjdGl2ZS52YWx1ZSAmJiBpc0NsaWVudClcbiAgICAgICAgcmVzdW1lKCk7XG4gICAgfSk7XG4gICAgdHJ5T25TY29wZURpc3Bvc2Uoc3RvcFdhdGNoKTtcbiAgfVxuICB0cnlPblNjb3BlRGlzcG9zZShwYXVzZSk7XG4gIHJldHVybiB7XG4gICAgaXNBY3RpdmUsXG4gICAgcGF1c2UsXG4gICAgcmVzdW1lXG4gIH07XG59XG5cbnZhciBfX2RlZlByb3AkNiA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BTeW1ib2xzJDggPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCQ4ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kOCA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJDYgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJDYob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJDYgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCQ4LmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkNihhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkOClcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkOChiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSQ4LmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCQ2KGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xuZnVuY3Rpb24gdXNlSW50ZXJ2YWwoaW50ZXJ2YWwgPSAxZTMsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgY29udHJvbHM6IGV4cG9zZUNvbnRyb2xzID0gZmFsc2UsXG4gICAgaW1tZWRpYXRlID0gdHJ1ZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgY291bnRlciA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCBjb250cm9scyA9IHVzZUludGVydmFsRm4oKCkgPT4gY291bnRlci52YWx1ZSArPSAxLCBpbnRlcnZhbCwgeyBpbW1lZGlhdGUgfSk7XG4gIGlmIChleHBvc2VDb250cm9scykge1xuICAgIHJldHVybiBfX3NwcmVhZFZhbHVlcyQ2KHtcbiAgICAgIGNvdW50ZXJcbiAgICB9LCBjb250cm9scyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNvdW50ZXI7XG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlTGFzdENoYW5nZWQoc291cmNlLCBvcHRpb25zID0ge30pIHtcbiAgdmFyIF9hO1xuICBjb25zdCBtcyA9IHZ1ZURlbWkucmVmKChfYSA9IG9wdGlvbnMuaW5pdGlhbFZhbHVlKSAhPSBudWxsID8gX2EgOiBudWxsKTtcbiAgdnVlRGVtaS53YXRjaChzb3VyY2UsICgpID0+IG1zLnZhbHVlID0gdGltZXN0YW1wKCksIG9wdGlvbnMpO1xuICByZXR1cm4gbXM7XG59XG5cbmZ1bmN0aW9uIHVzZVRpbWVvdXRGbihjYiwgaW50ZXJ2YWwsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgaW1tZWRpYXRlID0gdHJ1ZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgaXNQZW5kaW5nID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBsZXQgdGltZXIgPSBudWxsO1xuICBmdW5jdGlvbiBjbGVhcigpIHtcbiAgICBpZiAodGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICB0aW1lciA9IG51bGw7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgaXNQZW5kaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgY2xlYXIoKTtcbiAgfVxuICBmdW5jdGlvbiBzdGFydCguLi5hcmdzKSB7XG4gICAgY2xlYXIoKTtcbiAgICBpc1BlbmRpbmcudmFsdWUgPSB0cnVlO1xuICAgIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpc1BlbmRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRpbWVyID0gbnVsbDtcbiAgICAgIGNiKC4uLmFyZ3MpO1xuICAgIH0sIHZ1ZURlbWkudW5yZWYoaW50ZXJ2YWwpKTtcbiAgfVxuICBpZiAoaW1tZWRpYXRlKSB7XG4gICAgaXNQZW5kaW5nLnZhbHVlID0gdHJ1ZTtcbiAgICBpZiAoaXNDbGllbnQpXG4gICAgICBzdGFydCgpO1xuICB9XG4gIHRyeU9uU2NvcGVEaXNwb3NlKHN0b3ApO1xuICByZXR1cm4ge1xuICAgIGlzUGVuZGluZyxcbiAgICBzdGFydCxcbiAgICBzdG9wXG4gIH07XG59XG5cbnZhciBfX2RlZlByb3AkNSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BTeW1ib2xzJDcgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCQ3ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kNyA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJDUgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJDUob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJDUgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCQ3LmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkNShhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkNylcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkNyhiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSQ3LmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCQ1KGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xuZnVuY3Rpb24gdXNlVGltZW91dChpbnRlcnZhbCA9IDFlMywgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBjb250cm9sczogZXhwb3NlQ29udHJvbHMgPSBmYWxzZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgY29udHJvbHMgPSB1c2VUaW1lb3V0Rm4obm9vcCwgaW50ZXJ2YWwsIG9wdGlvbnMpO1xuICBjb25zdCByZWFkeSA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gIWNvbnRyb2xzLmlzUGVuZGluZy52YWx1ZSk7XG4gIGlmIChleHBvc2VDb250cm9scykge1xuICAgIHJldHVybiBfX3NwcmVhZFZhbHVlcyQ1KHtcbiAgICAgIHJlYWR5XG4gICAgfSwgY29udHJvbHMpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiByZWFkeTtcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VUb2dnbGUoaW5pdGlhbFZhbHVlID0gZmFsc2UsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdHJ1dGh5VmFsdWUgPSB0cnVlLFxuICAgIGZhbHN5VmFsdWUgPSBmYWxzZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgdmFsdWVJc1JlZiA9IHZ1ZURlbWkuaXNSZWYoaW5pdGlhbFZhbHVlKTtcbiAgY29uc3QgaW5uZXJWYWx1ZSA9IHZ1ZURlbWkucmVmKGluaXRpYWxWYWx1ZSk7XG4gIGZ1bmN0aW9uIHRvZ2dsZSh2YWx1ZSkge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICBpbm5lclZhbHVlLnZhbHVlID0gdmFsdWU7XG4gICAgICByZXR1cm4gaW5uZXJWYWx1ZS52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5uZXJWYWx1ZS52YWx1ZSA9IGlubmVyVmFsdWUudmFsdWUgPT09IHZ1ZURlbWkudW5yZWYodHJ1dGh5VmFsdWUpID8gdnVlRGVtaS51bnJlZihmYWxzeVZhbHVlKSA6IHZ1ZURlbWkudW5yZWYodHJ1dGh5VmFsdWUpO1xuICAgICAgcmV0dXJuIGlubmVyVmFsdWUudmFsdWU7XG4gICAgfVxuICB9XG4gIGlmICh2YWx1ZUlzUmVmKVxuICAgIHJldHVybiB0b2dnbGU7XG4gIGVsc2VcbiAgICByZXR1cm4gW2lubmVyVmFsdWUsIHRvZ2dsZV07XG59XG5cbmZ1bmN0aW9uIHdhdGNoQXJyYXkoc291cmNlLCBjYiwgb3B0aW9ucykge1xuICBsZXQgb2xkTGlzdCA9IChvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLmltbWVkaWF0ZSkgPyBbXSA6IFtcbiAgICAuLi5zb3VyY2UgaW5zdGFuY2VvZiBGdW5jdGlvbiA/IHNvdXJjZSgpIDogQXJyYXkuaXNBcnJheShzb3VyY2UpID8gc291cmNlIDogdnVlRGVtaS51bnJlZihzb3VyY2UpXG4gIF07XG4gIHJldHVybiB2dWVEZW1pLndhdGNoKHNvdXJjZSwgKG5ld0xpc3QsIF8sIG9uQ2xlYW51cCkgPT4ge1xuICAgIGNvbnN0IG9sZExpc3RSZW1haW5zID0gbmV3IEFycmF5KG9sZExpc3QubGVuZ3RoKTtcbiAgICBjb25zdCBhZGRlZCA9IFtdO1xuICAgIGZvciAoY29uc3Qgb2JqIG9mIG5ld0xpc3QpIHtcbiAgICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvbGRMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICghb2xkTGlzdFJlbWFpbnNbaV0gJiYgb2JqID09PSBvbGRMaXN0W2ldKSB7XG4gICAgICAgICAgb2xkTGlzdFJlbWFpbnNbaV0gPSB0cnVlO1xuICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFmb3VuZClcbiAgICAgICAgYWRkZWQucHVzaChvYmopO1xuICAgIH1cbiAgICBjb25zdCByZW1vdmVkID0gb2xkTGlzdC5maWx0ZXIoKF8yLCBpKSA9PiAhb2xkTGlzdFJlbWFpbnNbaV0pO1xuICAgIGNiKG5ld0xpc3QsIG9sZExpc3QsIGFkZGVkLCByZW1vdmVkLCBvbkNsZWFudXApO1xuICAgIG9sZExpc3QgPSBbLi4ubmV3TGlzdF07XG4gIH0sIG9wdGlvbnMpO1xufVxuXG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyQ2ID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkNiA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJDYgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fb2JqUmVzdCQ1ID0gKHNvdXJjZSwgZXhjbHVkZSkgPT4ge1xuICB2YXIgdGFyZ2V0ID0ge307XG4gIGZvciAodmFyIHByb3AgaW4gc291cmNlKVxuICAgIGlmIChfX2hhc093blByb3AkNi5jYWxsKHNvdXJjZSwgcHJvcCkgJiYgZXhjbHVkZS5pbmRleE9mKHByb3ApIDwgMClcbiAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgaWYgKHNvdXJjZSAhPSBudWxsICYmIF9fZ2V0T3duUHJvcFN5bWJvbHMkNilcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkNihzb3VyY2UpKSB7XG4gICAgICBpZiAoZXhjbHVkZS5pbmRleE9mKHByb3ApIDwgMCAmJiBfX3Byb3BJc0VudW0kNi5jYWxsKHNvdXJjZSwgcHJvcCkpXG4gICAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgICB9XG4gIHJldHVybiB0YXJnZXQ7XG59O1xuZnVuY3Rpb24gd2F0Y2hXaXRoRmlsdGVyKHNvdXJjZSwgY2IsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBfYSA9IG9wdGlvbnMsIHtcbiAgICBldmVudEZpbHRlciA9IGJ5cGFzc0ZpbHRlclxuICB9ID0gX2EsIHdhdGNoT3B0aW9ucyA9IF9fb2JqUmVzdCQ1KF9hLCBbXG4gICAgXCJldmVudEZpbHRlclwiXG4gIF0pO1xuICByZXR1cm4gdnVlRGVtaS53YXRjaChzb3VyY2UsIGNyZWF0ZUZpbHRlcldyYXBwZXIoZXZlbnRGaWx0ZXIsIGNiKSwgd2F0Y2hPcHRpb25zKTtcbn1cblxudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkNSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJDUgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSQ1ID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX29ialJlc3QkNCA9IChzb3VyY2UsIGV4Y2x1ZGUpID0+IHtcbiAgdmFyIHRhcmdldCA9IHt9O1xuICBmb3IgKHZhciBwcm9wIGluIHNvdXJjZSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJDUuY2FsbChzb3VyY2UsIHByb3ApICYmIGV4Y2x1ZGUuaW5kZXhPZihwcm9wKSA8IDApXG4gICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gIGlmIChzb3VyY2UgIT0gbnVsbCAmJiBfX2dldE93blByb3BTeW1ib2xzJDUpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJDUoc291cmNlKSkge1xuICAgICAgaWYgKGV4Y2x1ZGUuaW5kZXhPZihwcm9wKSA8IDAgJiYgX19wcm9wSXNFbnVtJDUuY2FsbChzb3VyY2UsIHByb3ApKVxuICAgICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gICAgfVxuICByZXR1cm4gdGFyZ2V0O1xufTtcbmZ1bmN0aW9uIHdhdGNoQXRNb3N0KHNvdXJjZSwgY2IsIG9wdGlvbnMpIHtcbiAgY29uc3QgX2EgPSBvcHRpb25zLCB7XG4gICAgY291bnRcbiAgfSA9IF9hLCB3YXRjaE9wdGlvbnMgPSBfX29ialJlc3QkNChfYSwgW1xuICAgIFwiY291bnRcIlxuICBdKTtcbiAgY29uc3QgY3VycmVudCA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCBzdG9wID0gd2F0Y2hXaXRoRmlsdGVyKHNvdXJjZSwgKC4uLmFyZ3MpID0+IHtcbiAgICBjdXJyZW50LnZhbHVlICs9IDE7XG4gICAgaWYgKGN1cnJlbnQudmFsdWUgPj0gdnVlRGVtaS51bnJlZihjb3VudCkpXG4gICAgICB2dWVEZW1pLm5leHRUaWNrKCgpID0+IHN0b3AoKSk7XG4gICAgY2IoLi4uYXJncyk7XG4gIH0sIHdhdGNoT3B0aW9ucyk7XG4gIHJldHVybiB7IGNvdW50OiBjdXJyZW50LCBzdG9wIH07XG59XG5cbnZhciBfX2RlZlByb3AkNCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2RlZlByb3BzJDQgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcztcbnZhciBfX2dldE93blByb3BEZXNjcyQ0ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyQ0ID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkNCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJDQgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCQ0ID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCQ0KG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyQ0ID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkNC5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJDQoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJDQpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJDQoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kNC5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkNChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbnZhciBfX3NwcmVhZFByb3BzJDQgPSAoYSwgYikgPT4gX19kZWZQcm9wcyQ0KGEsIF9fZ2V0T3duUHJvcERlc2NzJDQoYikpO1xudmFyIF9fb2JqUmVzdCQzID0gKHNvdXJjZSwgZXhjbHVkZSkgPT4ge1xuICB2YXIgdGFyZ2V0ID0ge307XG4gIGZvciAodmFyIHByb3AgaW4gc291cmNlKVxuICAgIGlmIChfX2hhc093blByb3AkNC5jYWxsKHNvdXJjZSwgcHJvcCkgJiYgZXhjbHVkZS5pbmRleE9mKHByb3ApIDwgMClcbiAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgaWYgKHNvdXJjZSAhPSBudWxsICYmIF9fZ2V0T3duUHJvcFN5bWJvbHMkNClcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkNChzb3VyY2UpKSB7XG4gICAgICBpZiAoZXhjbHVkZS5pbmRleE9mKHByb3ApIDwgMCAmJiBfX3Byb3BJc0VudW0kNC5jYWxsKHNvdXJjZSwgcHJvcCkpXG4gICAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgICB9XG4gIHJldHVybiB0YXJnZXQ7XG59O1xuZnVuY3Rpb24gd2F0Y2hEZWJvdW5jZWQoc291cmNlLCBjYiwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IF9hID0gb3B0aW9ucywge1xuICAgIGRlYm91bmNlID0gMCxcbiAgICBtYXhXYWl0ID0gdm9pZCAwXG4gIH0gPSBfYSwgd2F0Y2hPcHRpb25zID0gX19vYmpSZXN0JDMoX2EsIFtcbiAgICBcImRlYm91bmNlXCIsXG4gICAgXCJtYXhXYWl0XCJcbiAgXSk7XG4gIHJldHVybiB3YXRjaFdpdGhGaWx0ZXIoc291cmNlLCBjYiwgX19zcHJlYWRQcm9wcyQ0KF9fc3ByZWFkVmFsdWVzJDQoe30sIHdhdGNoT3B0aW9ucyksIHtcbiAgICBldmVudEZpbHRlcjogZGVib3VuY2VGaWx0ZXIoZGVib3VuY2UsIHsgbWF4V2FpdCB9KVxuICB9KSk7XG59XG5cbnZhciBfX2RlZlByb3AkMyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2RlZlByb3BzJDMgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcztcbnZhciBfX2dldE93blByb3BEZXNjcyQzID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyQzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkMyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJDMgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCQzID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCQzKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyQzID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkMy5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJDMoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJDMpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJDMoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kMy5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkMyhhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbnZhciBfX3NwcmVhZFByb3BzJDMgPSAoYSwgYikgPT4gX19kZWZQcm9wcyQzKGEsIF9fZ2V0T3duUHJvcERlc2NzJDMoYikpO1xudmFyIF9fb2JqUmVzdCQyID0gKHNvdXJjZSwgZXhjbHVkZSkgPT4ge1xuICB2YXIgdGFyZ2V0ID0ge307XG4gIGZvciAodmFyIHByb3AgaW4gc291cmNlKVxuICAgIGlmIChfX2hhc093blByb3AkMy5jYWxsKHNvdXJjZSwgcHJvcCkgJiYgZXhjbHVkZS5pbmRleE9mKHByb3ApIDwgMClcbiAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgaWYgKHNvdXJjZSAhPSBudWxsICYmIF9fZ2V0T3duUHJvcFN5bWJvbHMkMylcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkMyhzb3VyY2UpKSB7XG4gICAgICBpZiAoZXhjbHVkZS5pbmRleE9mKHByb3ApIDwgMCAmJiBfX3Byb3BJc0VudW0kMy5jYWxsKHNvdXJjZSwgcHJvcCkpXG4gICAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgICB9XG4gIHJldHVybiB0YXJnZXQ7XG59O1xuZnVuY3Rpb24gd2F0Y2hJZ25vcmFibGUoc291cmNlLCBjYiwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IF9hID0gb3B0aW9ucywge1xuICAgIGV2ZW50RmlsdGVyID0gYnlwYXNzRmlsdGVyXG4gIH0gPSBfYSwgd2F0Y2hPcHRpb25zID0gX19vYmpSZXN0JDIoX2EsIFtcbiAgICBcImV2ZW50RmlsdGVyXCJcbiAgXSk7XG4gIGNvbnN0IGZpbHRlcmVkQ2IgPSBjcmVhdGVGaWx0ZXJXcmFwcGVyKGV2ZW50RmlsdGVyLCBjYik7XG4gIGxldCBpZ25vcmVVcGRhdGVzO1xuICBsZXQgaWdub3JlUHJldkFzeW5jVXBkYXRlcztcbiAgbGV0IHN0b3A7XG4gIGlmICh3YXRjaE9wdGlvbnMuZmx1c2ggPT09IFwic3luY1wiKSB7XG4gICAgY29uc3QgaWdub3JlID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICAgIGlnbm9yZVByZXZBc3luY1VwZGF0ZXMgPSAoKSA9PiB7XG4gICAgfTtcbiAgICBpZ25vcmVVcGRhdGVzID0gKHVwZGF0ZXIpID0+IHtcbiAgICAgIGlnbm9yZS52YWx1ZSA9IHRydWU7XG4gICAgICB1cGRhdGVyKCk7XG4gICAgICBpZ25vcmUudmFsdWUgPSBmYWxzZTtcbiAgICB9O1xuICAgIHN0b3AgPSB2dWVEZW1pLndhdGNoKHNvdXJjZSwgKC4uLmFyZ3MpID0+IHtcbiAgICAgIGlmICghaWdub3JlLnZhbHVlKVxuICAgICAgICBmaWx0ZXJlZENiKC4uLmFyZ3MpO1xuICAgIH0sIHdhdGNoT3B0aW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZGlzcG9zYWJsZXMgPSBbXTtcbiAgICBjb25zdCBpZ25vcmVDb3VudGVyID0gdnVlRGVtaS5yZWYoMCk7XG4gICAgY29uc3Qgc3luY0NvdW50ZXIgPSB2dWVEZW1pLnJlZigwKTtcbiAgICBpZ25vcmVQcmV2QXN5bmNVcGRhdGVzID0gKCkgPT4ge1xuICAgICAgaWdub3JlQ291bnRlci52YWx1ZSA9IHN5bmNDb3VudGVyLnZhbHVlO1xuICAgIH07XG4gICAgZGlzcG9zYWJsZXMucHVzaCh2dWVEZW1pLndhdGNoKHNvdXJjZSwgKCkgPT4ge1xuICAgICAgc3luY0NvdW50ZXIudmFsdWUrKztcbiAgICB9LCBfX3NwcmVhZFByb3BzJDMoX19zcHJlYWRWYWx1ZXMkMyh7fSwgd2F0Y2hPcHRpb25zKSwgeyBmbHVzaDogXCJzeW5jXCIgfSkpKTtcbiAgICBpZ25vcmVVcGRhdGVzID0gKHVwZGF0ZXIpID0+IHtcbiAgICAgIGNvbnN0IHN5bmNDb3VudGVyUHJldiA9IHN5bmNDb3VudGVyLnZhbHVlO1xuICAgICAgdXBkYXRlcigpO1xuICAgICAgaWdub3JlQ291bnRlci52YWx1ZSArPSBzeW5jQ291bnRlci52YWx1ZSAtIHN5bmNDb3VudGVyUHJldjtcbiAgICB9O1xuICAgIGRpc3Bvc2FibGVzLnB1c2godnVlRGVtaS53YXRjaChzb3VyY2UsICguLi5hcmdzKSA9PiB7XG4gICAgICBjb25zdCBpZ25vcmUgPSBpZ25vcmVDb3VudGVyLnZhbHVlID4gMCAmJiBpZ25vcmVDb3VudGVyLnZhbHVlID09PSBzeW5jQ291bnRlci52YWx1ZTtcbiAgICAgIGlnbm9yZUNvdW50ZXIudmFsdWUgPSAwO1xuICAgICAgc3luY0NvdW50ZXIudmFsdWUgPSAwO1xuICAgICAgaWYgKGlnbm9yZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgZmlsdGVyZWRDYiguLi5hcmdzKTtcbiAgICB9LCB3YXRjaE9wdGlvbnMpKTtcbiAgICBzdG9wID0gKCkgPT4ge1xuICAgICAgZGlzcG9zYWJsZXMuZm9yRWFjaCgoZm4pID0+IGZuKCkpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIHsgc3RvcCwgaWdub3JlVXBkYXRlcywgaWdub3JlUHJldkFzeW5jVXBkYXRlcyB9O1xufVxuXG5mdW5jdGlvbiB3YXRjaE9uY2Uoc291cmNlLCBjYiwgb3B0aW9ucykge1xuICBjb25zdCBzdG9wID0gdnVlRGVtaS53YXRjaChzb3VyY2UsICguLi5hcmdzKSA9PiB7XG4gICAgdnVlRGVtaS5uZXh0VGljaygoKSA9PiBzdG9wKCkpO1xuICAgIHJldHVybiBjYiguLi5hcmdzKTtcbiAgfSwgb3B0aW9ucyk7XG59XG5cbnZhciBfX2RlZlByb3AkMiA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2RlZlByb3BzJDIgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcztcbnZhciBfX2dldE93blByb3BEZXNjcyQyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyQyID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkMiA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJDIgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCQyID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCQyKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyQyID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkMi5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJDIoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJDIpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJDIoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kMi5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkMihhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbnZhciBfX3NwcmVhZFByb3BzJDIgPSAoYSwgYikgPT4gX19kZWZQcm9wcyQyKGEsIF9fZ2V0T3duUHJvcERlc2NzJDIoYikpO1xudmFyIF9fb2JqUmVzdCQxID0gKHNvdXJjZSwgZXhjbHVkZSkgPT4ge1xuICB2YXIgdGFyZ2V0ID0ge307XG4gIGZvciAodmFyIHByb3AgaW4gc291cmNlKVxuICAgIGlmIChfX2hhc093blByb3AkMi5jYWxsKHNvdXJjZSwgcHJvcCkgJiYgZXhjbHVkZS5pbmRleE9mKHByb3ApIDwgMClcbiAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgaWYgKHNvdXJjZSAhPSBudWxsICYmIF9fZ2V0T3duUHJvcFN5bWJvbHMkMilcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkMihzb3VyY2UpKSB7XG4gICAgICBpZiAoZXhjbHVkZS5pbmRleE9mKHByb3ApIDwgMCAmJiBfX3Byb3BJc0VudW0kMi5jYWxsKHNvdXJjZSwgcHJvcCkpXG4gICAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgICB9XG4gIHJldHVybiB0YXJnZXQ7XG59O1xuZnVuY3Rpb24gd2F0Y2hQYXVzYWJsZShzb3VyY2UsIGNiLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgX2EgPSBvcHRpb25zLCB7XG4gICAgZXZlbnRGaWx0ZXI6IGZpbHRlclxuICB9ID0gX2EsIHdhdGNoT3B0aW9ucyA9IF9fb2JqUmVzdCQxKF9hLCBbXG4gICAgXCJldmVudEZpbHRlclwiXG4gIF0pO1xuICBjb25zdCB7IGV2ZW50RmlsdGVyLCBwYXVzZSwgcmVzdW1lLCBpc0FjdGl2ZSB9ID0gcGF1c2FibGVGaWx0ZXIoZmlsdGVyKTtcbiAgY29uc3Qgc3RvcCA9IHdhdGNoV2l0aEZpbHRlcihzb3VyY2UsIGNiLCBfX3NwcmVhZFByb3BzJDIoX19zcHJlYWRWYWx1ZXMkMih7fSwgd2F0Y2hPcHRpb25zKSwge1xuICAgIGV2ZW50RmlsdGVyXG4gIH0pKTtcbiAgcmV0dXJuIHsgc3RvcCwgcGF1c2UsIHJlc3VtZSwgaXNBY3RpdmUgfTtcbn1cblxudmFyIF9fZGVmUHJvcCQxID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmUHJvcHMkMSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzO1xudmFyIF9fZ2V0T3duUHJvcERlc2NzJDEgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycztcbnZhciBfX2dldE93blByb3BTeW1ib2xzJDEgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCQxID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kMSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJDEgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJDEob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJDEgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCQxLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkMShhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkMSlcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkMShiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSQxLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCQxKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xudmFyIF9fc3ByZWFkUHJvcHMkMSA9IChhLCBiKSA9PiBfX2RlZlByb3BzJDEoYSwgX19nZXRPd25Qcm9wRGVzY3MkMShiKSk7XG52YXIgX19vYmpSZXN0ID0gKHNvdXJjZSwgZXhjbHVkZSkgPT4ge1xuICB2YXIgdGFyZ2V0ID0ge307XG4gIGZvciAodmFyIHByb3AgaW4gc291cmNlKVxuICAgIGlmIChfX2hhc093blByb3AkMS5jYWxsKHNvdXJjZSwgcHJvcCkgJiYgZXhjbHVkZS5pbmRleE9mKHByb3ApIDwgMClcbiAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgaWYgKHNvdXJjZSAhPSBudWxsICYmIF9fZ2V0T3duUHJvcFN5bWJvbHMkMSlcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkMShzb3VyY2UpKSB7XG4gICAgICBpZiAoZXhjbHVkZS5pbmRleE9mKHByb3ApIDwgMCAmJiBfX3Byb3BJc0VudW0kMS5jYWxsKHNvdXJjZSwgcHJvcCkpXG4gICAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgICB9XG4gIHJldHVybiB0YXJnZXQ7XG59O1xuZnVuY3Rpb24gd2F0Y2hUaHJvdHRsZWQoc291cmNlLCBjYiwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IF9hID0gb3B0aW9ucywge1xuICAgIHRocm90dGxlID0gMCxcbiAgICB0cmFpbGluZyA9IHRydWUsXG4gICAgbGVhZGluZyA9IHRydWVcbiAgfSA9IF9hLCB3YXRjaE9wdGlvbnMgPSBfX29ialJlc3QoX2EsIFtcbiAgICBcInRocm90dGxlXCIsXG4gICAgXCJ0cmFpbGluZ1wiLFxuICAgIFwibGVhZGluZ1wiXG4gIF0pO1xuICByZXR1cm4gd2F0Y2hXaXRoRmlsdGVyKHNvdXJjZSwgY2IsIF9fc3ByZWFkUHJvcHMkMShfX3NwcmVhZFZhbHVlcyQxKHt9LCB3YXRjaE9wdGlvbnMpLCB7XG4gICAgZXZlbnRGaWx0ZXI6IHRocm90dGxlRmlsdGVyKHRocm90dGxlLCB0cmFpbGluZywgbGVhZGluZylcbiAgfSkpO1xufVxuXG52YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmUHJvcHMgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcztcbnZhciBfX2dldE93blByb3BEZXNjcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzO1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyhiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bS5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG52YXIgX19zcHJlYWRQcm9wcyA9IChhLCBiKSA9PiBfX2RlZlByb3BzKGEsIF9fZ2V0T3duUHJvcERlc2NzKGIpKTtcbmZ1bmN0aW9uIHdhdGNoVHJpZ2dlcmFibGUoc291cmNlLCBjYiwgb3B0aW9ucyA9IHt9KSB7XG4gIGxldCBjbGVhbnVwRm47XG4gIGZ1bmN0aW9uIG9uRWZmZWN0KCkge1xuICAgIGlmICghY2xlYW51cEZuKVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IGZuID0gY2xlYW51cEZuO1xuICAgIGNsZWFudXBGbiA9IHZvaWQgMDtcbiAgICBmbigpO1xuICB9XG4gIGZ1bmN0aW9uIG9uQ2xlYW51cChjYWxsYmFjaykge1xuICAgIGNsZWFudXBGbiA9IGNhbGxiYWNrO1xuICB9XG4gIGNvbnN0IF9jYiA9ICh2YWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICBvbkVmZmVjdCgpO1xuICAgIHJldHVybiBjYih2YWx1ZSwgb2xkVmFsdWUsIG9uQ2xlYW51cCk7XG4gIH07XG4gIGNvbnN0IHJlcyA9IHdhdGNoSWdub3JhYmxlKHNvdXJjZSwgX2NiLCBvcHRpb25zKTtcbiAgY29uc3QgeyBpZ25vcmVVcGRhdGVzIH0gPSByZXM7XG4gIGNvbnN0IHRyaWdnZXIgPSAoKSA9PiB7XG4gICAgbGV0IHJlczI7XG4gICAgaWdub3JlVXBkYXRlcygoKSA9PiB7XG4gICAgICByZXMyID0gX2NiKGdldFdhdGNoU291cmNlcyhzb3VyY2UpLCBnZXRPbGRWYWx1ZShzb3VyY2UpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzMjtcbiAgfTtcbiAgcmV0dXJuIF9fc3ByZWFkUHJvcHMoX19zcHJlYWRWYWx1ZXMoe30sIHJlcyksIHtcbiAgICB0cmlnZ2VyXG4gIH0pO1xufVxuZnVuY3Rpb24gZ2V0V2F0Y2hTb3VyY2VzKHNvdXJjZXMpIHtcbiAgaWYgKHZ1ZURlbWkuaXNSZWFjdGl2ZShzb3VyY2VzKSlcbiAgICByZXR1cm4gc291cmNlcztcbiAgaWYgKEFycmF5LmlzQXJyYXkoc291cmNlcykpXG4gICAgcmV0dXJuIHNvdXJjZXMubWFwKChpdGVtKSA9PiBnZXRPbmVXYXRjaFNvdXJjZShpdGVtKSk7XG4gIHJldHVybiBnZXRPbmVXYXRjaFNvdXJjZShzb3VyY2VzKTtcbn1cbmZ1bmN0aW9uIGdldE9uZVdhdGNoU291cmNlKHNvdXJjZSkge1xuICByZXR1cm4gdHlwZW9mIHNvdXJjZSA9PT0gXCJmdW5jdGlvblwiID8gc291cmNlKCkgOiB2dWVEZW1pLnVucmVmKHNvdXJjZSk7XG59XG5mdW5jdGlvbiBnZXRPbGRWYWx1ZShzb3VyY2UpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoc291cmNlKSA/IHNvdXJjZS5tYXAoKCkgPT4gdm9pZCAwKSA6IHZvaWQgMDtcbn1cblxuZnVuY3Rpb24gd2hlbmV2ZXIoc291cmNlLCBjYiwgb3B0aW9ucykge1xuICByZXR1cm4gdnVlRGVtaS53YXRjaChzb3VyY2UsICh2LCBvdiwgb25JbnZhbGlkYXRlKSA9PiB7XG4gICAgaWYgKHYpXG4gICAgICBjYih2LCBvdiwgb25JbnZhbGlkYXRlKTtcbiAgfSwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydHMuX19vbmx5VnVlMyA9IF9fb25seVZ1ZTM7XG5leHBvcnRzLmFuZCA9IGxvZ2ljQW5kO1xuZXhwb3J0cy5hc3NlcnQgPSBhc3NlcnQ7XG5leHBvcnRzLmF1dG9SZXNldFJlZiA9IHJlZkF1dG9SZXNldDtcbmV4cG9ydHMuYnlwYXNzRmlsdGVyID0gYnlwYXNzRmlsdGVyO1xuZXhwb3J0cy5jbGFtcCA9IGNsYW1wO1xuZXhwb3J0cy5jb21wdXRlZEVhZ2VyID0gY29tcHV0ZWRFYWdlcjtcbmV4cG9ydHMuY29tcHV0ZWRXaXRoQ29udHJvbCA9IGNvbXB1dGVkV2l0aENvbnRyb2w7XG5leHBvcnRzLmNvbnRhaW5zUHJvcCA9IGNvbnRhaW5zUHJvcDtcbmV4cG9ydHMuY29udHJvbGxlZENvbXB1dGVkID0gY29tcHV0ZWRXaXRoQ29udHJvbDtcbmV4cG9ydHMuY29udHJvbGxlZFJlZiA9IGNvbnRyb2xsZWRSZWY7XG5leHBvcnRzLmNyZWF0ZUV2ZW50SG9vayA9IGNyZWF0ZUV2ZW50SG9vaztcbmV4cG9ydHMuY3JlYXRlRmlsdGVyV3JhcHBlciA9IGNyZWF0ZUZpbHRlcldyYXBwZXI7XG5leHBvcnRzLmNyZWF0ZUdsb2JhbFN0YXRlID0gY3JlYXRlR2xvYmFsU3RhdGU7XG5leHBvcnRzLmNyZWF0ZUluamVjdGlvblN0YXRlID0gY3JlYXRlSW5qZWN0aW9uU3RhdGU7XG5leHBvcnRzLmNyZWF0ZVJlYWN0aXZlRm4gPSByZWFjdGlmeTtcbmV4cG9ydHMuY3JlYXRlU2hhcmVkQ29tcG9zYWJsZSA9IGNyZWF0ZVNoYXJlZENvbXBvc2FibGU7XG5leHBvcnRzLmNyZWF0ZVNpbmdsZXRvblByb21pc2UgPSBjcmVhdGVTaW5nbGV0b25Qcm9taXNlO1xuZXhwb3J0cy5kZWJvdW5jZUZpbHRlciA9IGRlYm91bmNlRmlsdGVyO1xuZXhwb3J0cy5kZWJvdW5jZWRSZWYgPSByZWZEZWJvdW5jZWQ7XG5leHBvcnRzLmRlYm91bmNlZFdhdGNoID0gd2F0Y2hEZWJvdW5jZWQ7XG5leHBvcnRzLmRpcmVjdGl2ZUhvb2tzID0gZGlyZWN0aXZlSG9va3M7XG5leHBvcnRzLmVhZ2VyQ29tcHV0ZWQgPSBjb21wdXRlZEVhZ2VyO1xuZXhwb3J0cy5leHRlbmRSZWYgPSBleHRlbmRSZWY7XG5leHBvcnRzLmZvcm1hdERhdGUgPSBmb3JtYXREYXRlO1xuZXhwb3J0cy5nZXQgPSBnZXQ7XG5leHBvcnRzLmlkZW50aXR5ID0gaWRlbnRpdHk7XG5leHBvcnRzLmlnbm9yYWJsZVdhdGNoID0gd2F0Y2hJZ25vcmFibGU7XG5leHBvcnRzLmluY3JlYXNlV2l0aFVuaXQgPSBpbmNyZWFzZVdpdGhVbml0O1xuZXhwb3J0cy5pbnZva2UgPSBpbnZva2U7XG5leHBvcnRzLmlzQm9vbGVhbiA9IGlzQm9vbGVhbjtcbmV4cG9ydHMuaXNDbGllbnQgPSBpc0NsaWVudDtcbmV4cG9ydHMuaXNEZWYgPSBpc0RlZjtcbmV4cG9ydHMuaXNEZWZpbmVkID0gaXNEZWZpbmVkO1xuZXhwb3J0cy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjtcbmV4cG9ydHMuaXNJT1MgPSBpc0lPUztcbmV4cG9ydHMuaXNOdW1iZXIgPSBpc051bWJlcjtcbmV4cG9ydHMuaXNPYmplY3QgPSBpc09iamVjdDtcbmV4cG9ydHMuaXNTdHJpbmcgPSBpc1N0cmluZztcbmV4cG9ydHMuaXNXaW5kb3cgPSBpc1dpbmRvdztcbmV4cG9ydHMubG9naWNBbmQgPSBsb2dpY0FuZDtcbmV4cG9ydHMubG9naWNOb3QgPSBsb2dpY05vdDtcbmV4cG9ydHMubG9naWNPciA9IGxvZ2ljT3I7XG5leHBvcnRzLm1ha2VEZXN0cnVjdHVyYWJsZSA9IG1ha2VEZXN0cnVjdHVyYWJsZTtcbmV4cG9ydHMubm9vcCA9IG5vb3A7XG5leHBvcnRzLm5vcm1hbGl6ZURhdGUgPSBub3JtYWxpemVEYXRlO1xuZXhwb3J0cy5ub3QgPSBsb2dpY05vdDtcbmV4cG9ydHMubm93ID0gbm93O1xuZXhwb3J0cy5vYmplY3RQaWNrID0gb2JqZWN0UGljaztcbmV4cG9ydHMub3IgPSBsb2dpY09yO1xuZXhwb3J0cy5wYXVzYWJsZUZpbHRlciA9IHBhdXNhYmxlRmlsdGVyO1xuZXhwb3J0cy5wYXVzYWJsZVdhdGNoID0gd2F0Y2hQYXVzYWJsZTtcbmV4cG9ydHMucHJvbWlzZVRpbWVvdXQgPSBwcm9taXNlVGltZW91dDtcbmV4cG9ydHMucmFuZCA9IHJhbmQ7XG5leHBvcnRzLnJlYWN0aWZ5ID0gcmVhY3RpZnk7XG5leHBvcnRzLnJlYWN0aWZ5T2JqZWN0ID0gcmVhY3RpZnlPYmplY3Q7XG5leHBvcnRzLnJlYWN0aXZlQ29tcHV0ZWQgPSByZWFjdGl2ZUNvbXB1dGVkO1xuZXhwb3J0cy5yZWFjdGl2ZU9taXQgPSByZWFjdGl2ZU9taXQ7XG5leHBvcnRzLnJlYWN0aXZlUGljayA9IHJlYWN0aXZlUGljaztcbmV4cG9ydHMucmVmQXV0b1Jlc2V0ID0gcmVmQXV0b1Jlc2V0O1xuZXhwb3J0cy5yZWZEZWJvdW5jZWQgPSByZWZEZWJvdW5jZWQ7XG5leHBvcnRzLnJlZkRlZmF1bHQgPSByZWZEZWZhdWx0O1xuZXhwb3J0cy5yZWZUaHJvdHRsZWQgPSByZWZUaHJvdHRsZWQ7XG5leHBvcnRzLnJlZldpdGhDb250cm9sID0gcmVmV2l0aENvbnRyb2w7XG5leHBvcnRzLnJlc29sdmVSZWYgPSByZXNvbHZlUmVmO1xuZXhwb3J0cy5yZXNvbHZlVW5yZWYgPSByZXNvbHZlVW5yZWY7XG5leHBvcnRzLnNldCA9IHNldDtcbmV4cG9ydHMuc3luY1JlZiA9IHN5bmNSZWY7XG5leHBvcnRzLnN5bmNSZWZzID0gc3luY1JlZnM7XG5leHBvcnRzLnRocm90dGxlRmlsdGVyID0gdGhyb3R0bGVGaWx0ZXI7XG5leHBvcnRzLnRocm90dGxlZFJlZiA9IHJlZlRocm90dGxlZDtcbmV4cG9ydHMudGhyb3R0bGVkV2F0Y2ggPSB3YXRjaFRocm90dGxlZDtcbmV4cG9ydHMudGltZXN0YW1wID0gdGltZXN0YW1wO1xuZXhwb3J0cy50b1JlYWN0aXZlID0gdG9SZWFjdGl2ZTtcbmV4cG9ydHMudG9SZWZzID0gdG9SZWZzO1xuZXhwb3J0cy50cnlPbkJlZm9yZU1vdW50ID0gdHJ5T25CZWZvcmVNb3VudDtcbmV4cG9ydHMudHJ5T25CZWZvcmVVbm1vdW50ID0gdHJ5T25CZWZvcmVVbm1vdW50O1xuZXhwb3J0cy50cnlPbk1vdW50ZWQgPSB0cnlPbk1vdW50ZWQ7XG5leHBvcnRzLnRyeU9uU2NvcGVEaXNwb3NlID0gdHJ5T25TY29wZURpc3Bvc2U7XG5leHBvcnRzLnRyeU9uVW5tb3VudGVkID0gdHJ5T25Vbm1vdW50ZWQ7XG5leHBvcnRzLnVudGlsID0gdW50aWw7XG5leHBvcnRzLnVzZUNvdW50ZXIgPSB1c2VDb3VudGVyO1xuZXhwb3J0cy51c2VEYXRlRm9ybWF0ID0gdXNlRGF0ZUZvcm1hdDtcbmV4cG9ydHMudXNlRGVib3VuY2UgPSByZWZEZWJvdW5jZWQ7XG5leHBvcnRzLnVzZURlYm91bmNlRm4gPSB1c2VEZWJvdW5jZUZuO1xuZXhwb3J0cy51c2VJbnRlcnZhbCA9IHVzZUludGVydmFsO1xuZXhwb3J0cy51c2VJbnRlcnZhbEZuID0gdXNlSW50ZXJ2YWxGbjtcbmV4cG9ydHMudXNlTGFzdENoYW5nZWQgPSB1c2VMYXN0Q2hhbmdlZDtcbmV4cG9ydHMudXNlVGhyb3R0bGUgPSByZWZUaHJvdHRsZWQ7XG5leHBvcnRzLnVzZVRocm90dGxlRm4gPSB1c2VUaHJvdHRsZUZuO1xuZXhwb3J0cy51c2VUaW1lb3V0ID0gdXNlVGltZW91dDtcbmV4cG9ydHMudXNlVGltZW91dEZuID0gdXNlVGltZW91dEZuO1xuZXhwb3J0cy51c2VUb2dnbGUgPSB1c2VUb2dnbGU7XG5leHBvcnRzLndhdGNoQXJyYXkgPSB3YXRjaEFycmF5O1xuZXhwb3J0cy53YXRjaEF0TW9zdCA9IHdhdGNoQXRNb3N0O1xuZXhwb3J0cy53YXRjaERlYm91bmNlZCA9IHdhdGNoRGVib3VuY2VkO1xuZXhwb3J0cy53YXRjaElnbm9yYWJsZSA9IHdhdGNoSWdub3JhYmxlO1xuZXhwb3J0cy53YXRjaE9uY2UgPSB3YXRjaE9uY2U7XG5leHBvcnRzLndhdGNoUGF1c2FibGUgPSB3YXRjaFBhdXNhYmxlO1xuZXhwb3J0cy53YXRjaFRocm90dGxlZCA9IHdhdGNoVGhyb3R0bGVkO1xuZXhwb3J0cy53YXRjaFRyaWdnZXJhYmxlID0gd2F0Y2hUcmlnZ2VyYWJsZTtcbmV4cG9ydHMud2F0Y2hXaXRoRmlsdGVyID0gd2F0Y2hXaXRoRmlsdGVyO1xuZXhwb3J0cy53aGVuZXZlciA9IHdoZW5ldmVyO1xuIiwidmFyIFZ1ZSA9IHJlcXVpcmUoJ3Z1ZScpXG5cbk9iamVjdC5rZXlzKFZ1ZSkuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgZXhwb3J0c1trZXldID0gVnVlW2tleV1cbn0pXG5cbmV4cG9ydHMuc2V0ID0gZnVuY3Rpb24odGFyZ2V0LCBrZXksIHZhbCkge1xuICBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXQpKSB7XG4gICAgdGFyZ2V0Lmxlbmd0aCA9IE1hdGgubWF4KHRhcmdldC5sZW5ndGgsIGtleSlcbiAgICB0YXJnZXQuc3BsaWNlKGtleSwgMSwgdmFsKVxuICAgIHJldHVybiB2YWxcbiAgfVxuICB0YXJnZXRba2V5XSA9IHZhbFxuICByZXR1cm4gdmFsXG59XG5cbmV4cG9ydHMuZGVsID0gZnVuY3Rpb24odGFyZ2V0LCBrZXkpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSkge1xuICAgIHRhcmdldC5zcGxpY2Uoa2V5LCAxKVxuICAgIHJldHVyblxuICB9XG4gIGRlbGV0ZSB0YXJnZXRba2V5XVxufVxuXG5leHBvcnRzLlZ1ZSA9IFZ1ZVxuZXhwb3J0cy5WdWUyID0gdW5kZWZpbmVkXG5leHBvcnRzLmlzVnVlMiA9IGZhbHNlXG5leHBvcnRzLmlzVnVlMyA9IHRydWVcbmV4cG9ydHMuaW5zdGFsbCA9IGZ1bmN0aW9uKCl7fVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7XG4gIGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTtcbiAgcmV0dXJuIGFycjI7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7XG4gIGlmIChzZWxmID09PSB2b2lkIDApIHtcbiAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIH1cbiAgcmV0dXJuIHNlbGY7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3Rvcikge1xuICBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG4gIH1cbn0iLCJpbXBvcnQgdG9Qcm9wZXJ0eUtleSBmcm9tIFwiLi90b1Byb3BlcnR5S2V5LmpzXCI7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTtcbiAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7XG4gICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCB0b1Byb3BlcnR5S2V5KGRlc2NyaXB0b3Iua2V5KSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcbiAgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7XG4gIGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6IGZhbHNlXG4gIH0pO1xuICByZXR1cm4gQ29uc3RydWN0b3I7XG59IiwiaW1wb3J0IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IGZyb20gXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihvLCBhbGxvd0FycmF5TGlrZSkge1xuICB2YXIgaXQgPSB0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXSB8fCBvW1wiQEBpdGVyYXRvclwiXTtcbiAgaWYgKCFpdCkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG8pIHx8IChpdCA9IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8pKSB8fCBhbGxvd0FycmF5TGlrZSAmJiBvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgaWYgKGl0KSBvID0gaXQ7XG4gICAgICB2YXIgaSA9IDA7XG4gICAgICB2YXIgRiA9IGZ1bmN0aW9uIEYoKSB7fTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHM6IEYsXG4gICAgICAgIG46IGZ1bmN0aW9uIG4oKSB7XG4gICAgICAgICAgaWYgKGkgPj0gby5sZW5ndGgpIHJldHVybiB7XG4gICAgICAgICAgICBkb25lOiB0cnVlXG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZG9uZTogZmFsc2UsXG4gICAgICAgICAgICB2YWx1ZTogb1tpKytdXG4gICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgZTogZnVuY3Rpb24gZShfZSkge1xuICAgICAgICAgIHRocm93IF9lO1xuICAgICAgICB9LFxuICAgICAgICBmOiBGXG4gICAgICB9O1xuICAgIH1cbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG4gIH1cbiAgdmFyIG5vcm1hbENvbXBsZXRpb24gPSB0cnVlLFxuICAgIGRpZEVyciA9IGZhbHNlLFxuICAgIGVycjtcbiAgcmV0dXJuIHtcbiAgICBzOiBmdW5jdGlvbiBzKCkge1xuICAgICAgaXQgPSBpdC5jYWxsKG8pO1xuICAgIH0sXG4gICAgbjogZnVuY3Rpb24gbigpIHtcbiAgICAgIHZhciBzdGVwID0gaXQubmV4dCgpO1xuICAgICAgbm9ybWFsQ29tcGxldGlvbiA9IHN0ZXAuZG9uZTtcbiAgICAgIHJldHVybiBzdGVwO1xuICAgIH0sXG4gICAgZTogZnVuY3Rpb24gZShfZTIpIHtcbiAgICAgIGRpZEVyciA9IHRydWU7XG4gICAgICBlcnIgPSBfZTI7XG4gICAgfSxcbiAgICBmOiBmdW5jdGlvbiBmKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFub3JtYWxDb21wbGV0aW9uICYmIGl0W1wicmV0dXJuXCJdICE9IG51bGwpIGl0W1wicmV0dXJuXCJdKCk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAoZGlkRXJyKSB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfVxuICB9O1xufSIsImltcG9ydCBnZXRQcm90b3R5cGVPZiBmcm9tIFwiLi9nZXRQcm90b3R5cGVPZi5qc1wiO1xuaW1wb3J0IGlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCBmcm9tIFwiLi9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QuanNcIjtcbmltcG9ydCBwb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCIuL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7XG4gIHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7XG4gIHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHtcbiAgICB2YXIgU3VwZXIgPSBnZXRQcm90b3R5cGVPZihEZXJpdmVkKSxcbiAgICAgIHJlc3VsdDtcbiAgICBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkge1xuICAgICAgdmFyIE5ld1RhcmdldCA9IGdldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yO1xuICAgICAgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG4gICAgcmV0dXJuIHBvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTtcbiAgfTtcbn0iLCJpbXBvcnQgdG9Qcm9wZXJ0eUtleSBmcm9tIFwiLi90b1Byb3BlcnR5S2V5LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7XG4gIGtleSA9IHRvUHJvcGVydHlLZXkoa2V5KTtcbiAgaWYgKGtleSBpbiBvYmopIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9ialtrZXldID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIG9iajtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2Yobykge1xuICBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHtcbiAgICByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pO1xuICB9O1xuICByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pO1xufSIsImltcG9ydCBzZXRQcm90b3R5cGVPZiBmcm9tIFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gIGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7XG4gIH1cbiAgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiBzdWJDbGFzcyxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfVxuICB9KTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN1YkNsYXNzLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6IGZhbHNlXG4gIH0pO1xuICBpZiAoc3VwZXJDbGFzcykgc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7XG4gIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTtcbiAgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTtcbiAgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTtcbiAgdHJ5IHtcbiAgICBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn0iLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiLi90eXBlb2YuanNcIjtcbmltcG9ydCBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIi4vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7XG4gIGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7XG4gICAgcmV0dXJuIGNhbGw7XG4gIH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO1xuICB9XG4gIHJldHVybiBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHtcbiAgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gICAgby5fX3Byb3RvX18gPSBwO1xuICAgIHJldHVybiBvO1xuICB9O1xuICByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApO1xufSIsImltcG9ydCBfdHlwZW9mIGZyb20gXCIuL3R5cGVvZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3RvUHJpbWl0aXZlKGlucHV0LCBoaW50KSB7XG4gIGlmIChfdHlwZW9mKGlucHV0KSAhPT0gXCJvYmplY3RcIiB8fCBpbnB1dCA9PT0gbnVsbCkgcmV0dXJuIGlucHV0O1xuICB2YXIgcHJpbSA9IGlucHV0W1N5bWJvbC50b1ByaW1pdGl2ZV07XG4gIGlmIChwcmltICE9PSB1bmRlZmluZWQpIHtcbiAgICB2YXIgcmVzID0gcHJpbS5jYWxsKGlucHV0LCBoaW50IHx8IFwiZGVmYXVsdFwiKTtcbiAgICBpZiAoX3R5cGVvZihyZXMpICE9PSBcIm9iamVjdFwiKSByZXR1cm4gcmVzO1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTtcbiAgfVxuICByZXR1cm4gKGhpbnQgPT09IFwic3RyaW5nXCIgPyBTdHJpbmcgOiBOdW1iZXIpKGlucHV0KTtcbn0iLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiLi90eXBlb2YuanNcIjtcbmltcG9ydCB0b1ByaW1pdGl2ZSBmcm9tIFwiLi90b1ByaW1pdGl2ZS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkoYXJnKSB7XG4gIHZhciBrZXkgPSB0b1ByaW1pdGl2ZShhcmcsIFwic3RyaW5nXCIpO1xuICByZXR1cm4gX3R5cGVvZihrZXkpID09PSBcInN5bWJvbFwiID8ga2V5IDogU3RyaW5nKGtleSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3R5cGVvZihvYmopIHtcbiAgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiO1xuXG4gIHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG9iaikge1xuICAgIHJldHVybiB0eXBlb2Ygb2JqO1xuICB9IDogZnVuY3Rpb24gKG9iaikge1xuICAgIHJldHVybiBvYmogJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7XG4gIH0sIF90eXBlb2Yob2JqKTtcbn0iLCJpbXBvcnQgYXJyYXlMaWtlVG9BcnJheSBmcm9tIFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7XG4gIGlmICghbykgcmV0dXJuO1xuICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG4gIHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTtcbiAgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTtcbiAgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7XG4gIGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxRUFBcUUsc0RBQVM7QUFDOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGlCQUFpQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQiw2Q0FBSTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixLQUFxQztBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksb0RBQU87QUFDbkIsNEJBQTRCLGlCQUFpQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGtCQUFrQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQsb0RBQU87QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsbURBQU07QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0JBQWtCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGtCQUFrQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHNCQUFzQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksdUJBQXVCO0FBQ25DLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksU0FBUztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyx1Q0FBdUM7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsdUJBQXVCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCxpREFBSTtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksTUFBTTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyxPQUFPO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7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QUFDQTtBQUNBLEtBQUssSUFBcUM7QUFDMUMsSUFBSSwwREFBYTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLG1EQUFNO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsYUFBYTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixhQUFhO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxnQkFBZ0I7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDhNQUE4TTtBQUMxTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLG9EQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNB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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWcyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbnNQbitCO0FBQzNWO0FBQ3VQOztBQUV6UjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsS0FBSztBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwREFBMEQsUUFBUTtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx3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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0JBQWtCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsY0FBYyxHQUFHLE9BQU87QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0JBQWtCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsc0JBQXNCO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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Q0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQjtBQUNqQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQjtBQUNqQixPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBLCtDQUErQztBQUMvQyxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDs7QUFFQTs7QUFFQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEM7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QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDO0FBQ0Q7QUFDQSxJQUFJLEVBQUUsMkNBQU07O0FBRVo7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0IsNkNBQVE7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QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQixPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQixPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQixPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztB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NkNBQTZDO0FBQzdDOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7QUNuTmE7O0FBRWIsWUFBWSxtQkFBTyxDQUFDLGtEQUFTO0FBQzdCLFdBQVcsbUJBQU8sQ0FB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LE1BQU07O0FBRU47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTs7QUFFVjtBQUNBO0FBQ0EsNkJBQTZCLFFBQVE7QUFDckM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7O0FBRVY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNkJBQTZCLE9BQU87QUFDcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVU7O0FBRVY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FB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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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R0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxxRUFBZTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxxRUFBZTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxxRUFBZTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLFdBQVcsbUVBQWlCO0FBQzVCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsV0FBVyxtRUFBaUI7QUFDNUIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLFdBQVcscUVBQWU7QUFDMUIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsV0FBVyxxRUFBZTtBQUMxQixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLFdBQVcsbUVBQWlCO0FBQzVCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsV0FBVyxtRUFBaUI7QUFDNUIsR0FBRztBQUNIO0FBQ0E7QUFD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MkI7QUFDNkI7QUFDekU7QUFDTTtBQUNXO0FBQ1QsQ0FBQztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QUNGO0FBQ0o7QUFDQTtBQUM4QjtBQUNwQztBQUNrQjtBQUNWO0FBQ0U7QUFDRTtBQUNBO0FBQzBCO0FBQ0E7QUFDZ0I7QUFDUjtBQUNKO0FBQ0k7QUFDTjtBQUNBO0FBQ2xCO0FBQ0U7QUFDYztBQUNBO0FBQ1Y7QUFDRjtBQUNJO0FBQ0Y7QUFDSjtBQUNBO0FBQ0E7QUFDRTtBQUNJO0FBQ0Y7QUFDSTtBQUNOO0FBQ007QUFDTjtBQUNGO0FBQ0U7QUFDcEI7QUFDTTtBQUNKO0FBQ007QUFDUTtBQUNWO0FBQ0Y7QUFDSTtBQUNGO0FBQ0Y7QUFDTTtBQUNSO0FBQ0E7QUFDVTtBQUNoQjtBQUNnQjtBQUNZO0FBQ0Y7QUFDWTtBQUN0QjtBQUNWO0FBQ1E7QUFDUTtBQUNSO0FBQ0E7QUFDRTtBQUNKO0FBQ1Y7QUFDRjtBQUNZO0FBQ0k7QUFDRjtBQUNSO0FBQ2dCO0FBQ2xCO0FBQ0U7QUFDRTtBQUNRO0FBQ007QUFDSjtBQUNWO0FBQ0o7QUFDMEM7QUFDdEM7QUFDQTtBQUNOO0FBQ1E7QUFDUjtBQUNjO0FBQ047QUFDUTtBQUNoQjtBQUN3QjtBQUNWO0FBQ0E7QUFDUTtBQUNoQjtBQUNnQjtBQUN0QjtBQUNFO0FBQ0o7QUFDRTtBQUNFO0FBQ2tCO0FBQ2xCO0FBQ0E7QUFDZ0I7QUFDWjtBQUNOO0FBQ0U7QUFDSjtBQUNNO0FBQ0U7QUFDTTtBQUNRO0FBQ1Y7QUFDRjtBQUNJO0FBQ0Y7QUFDSjtBQUNBO0FBQ0E7QUFDSjtBQUNJO0FBQ007QUFDRjtBQUNGO0FBQ0k7QUFDRjtBQUNKO0FBQ0E7QUFDQTtBQUNOO0FBQ007QUFDRjtBQUNKO0FBQ1E7QUFDSjtBQUNjO0FBQ1Y7QUFDUTtBQUNFO0FBQ1E7QUFDWjtBQUNJO0FBQ047QUFDQTtBQUNKO0FBQ2hCO0FBQ2tCO0FBQ2M7QUFDSTtBQUNBO0FBQ3BDO0FBQ3NCO0FBQ2M7QUFDVjtBQUNBO0FBQ047QUFDWjtBQUNNO0FBQ0E7QUFDSTtBQUNKO0FBQ0k7QUFDRjtBQUNJO0FBQ2hCO0FBQ007QUFDRTtBQUNJO0FBQ007QUFDQTtBQUNJO0FBQ0o7QUFDSTtBQUNG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QUN4QixhQUFhLFNBQVM7QUFDdEIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLGFBQWEsNERBQU07QUFDbkI7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN4QnNDO0FBQ0k7QUFDZTtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELFdBQVc7QUFDNUQ7QUFDQSxpREFBaUQsV0FBVztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvRUFBb0U7QUFDcEUsd0JBQXdCLDRDQUE0QztBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRLGlFQUFpRTtBQUNwRixXQUFXLGVBQWU7QUFDMUIsV0FBVyxlQUFlO0FBQzFCLFdBQVcsU0FBUztBQUNwQjtBQUNBLFdBQVcsU0FBUztBQUNwQjtBQUNBLGFBQWE7QUFDYixZQUFZLFdBQVc7QUFDdkIsWUFBWSxZQUFZO0FBQ3hCLFlBQVksWUFBWTtBQUN4QixZQUFZLFlBQVk7QUFDeEIsWUFBWSxZQUFZLG1EQUFtRDtBQUMzRSxZQUFZLFlBQVksK0NBQStDO0FBQ3ZFLFlBQVksWUFBWSx5REFBeUQ7QUFDakYsWUFBWSxZQUFZLDJEQUEyRDtBQUNuRixZQUFZLFlBQVk7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsU0FBUyw2REFBTyxDQUFDLDJEQUFLO0FBQ3RCOzs7Ozs7Ozs7Ozs7Ozs7OztBQzFTd0M7QUFDaUI7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLFNBQVM7QUFDdEIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLFNBQVMsNERBQU07QUFDZjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0QndDO0FBQ2lCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLFNBQVM7QUFDdEIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLFNBQVMsNERBQU07QUFDZjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxQmdEO0FBQ1M7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxTQUFTO0FBQ3RCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLDJCQUEyQixnRUFBVTtBQUNyQyw0QkFBNEIsZ0VBQVU7QUFDdEM7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuQ2tEO0FBQ087QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxTQUFTO0FBQ3RCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsNEJBQTRCLGlFQUFXO0FBQ3ZDLDZCQUE2QixpRUFBVztBQUN4QztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQzlCZ0Q7QUFDUztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxTQUFTO0FBQ3RCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsU0FBUyxnRUFBVTtBQUNuQjtBQUNBLEdBQUc7QUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNoQ2dFO0FBQ1A7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsU0FBUztBQUN0QixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsNEJBQTRCLHdFQUFrQjtBQUM5Qyw2QkFBNkIsd0VBQWtCO0FBQy9DO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDM0JzRDtBQUNHO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsU0FBUztBQUN0QixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLDhCQUE4QixtRUFBYTtBQUMzQywrQkFBK0IsbUVBQWE7QUFDNUM7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwQ3dDO0FBQ2lCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsU0FBUztBQUN0QixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLGlCQUFpQiw0REFBTTtBQUN2QixrQkFBa0IsNERBQU07QUFDeEI7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM5QndEO0FBQ0M7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxTQUFTO0FBQ3RCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsK0JBQStCLG9FQUFjO0FBQzdDLGdDQUFnQyxvRUFBYztBQUM5QztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQzlCc0Q7QUFDRztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLFNBQVM7QUFDdEIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsOEJBQThCLG1FQUFhO0FBQzNDLCtCQUErQixtRUFBYTtBQUM1QztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQzVDa0Q7QUFDTztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRLGlFQUFpRTtBQUNwRixXQUFXLGVBQWU7QUFDMUIsYUFBYSxTQUFTO0FBQ3RCLFlBQVksV0FBVztBQUN2QixZQUFZLFlBQVk7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLDRCQUE0QixpRUFBVztBQUN2Qyw2QkFBNkIsaUVBQVc7QUFDeEM7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxQ3dDO0FBQ2lCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsU0FBUztBQUN0QixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsaUJBQWlCLDREQUFNO0FBQ3ZCLGtCQUFrQiw0REFBTTtBQUN4QjtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ3pCd0M7QUFDaUI7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLFNBQVM7QUFDdEIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLFNBQVMsNERBQU07QUFDZjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0QndDO0FBQ2lCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxTQUFTO0FBQ3RCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxTQUFTLDREQUFNO0FBQ2Y7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdEJnRDtBQUNTO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLFNBQVM7QUFDdEIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsU0FBUyxnRUFBVTtBQUNuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMzQnNEO0FBQ0c7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLFNBQVM7QUFDdEIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLFNBQVMsbUVBQWE7QUFDdEI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDNUJvRDtBQUNLO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLFNBQVM7QUFDdEIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsU0FBUyxrRUFBWTtBQUNyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMzQmtEO0FBQ087QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsU0FBUztBQUN0QixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsU0FBUyxpRUFBVztBQUNwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxQnNEO0FBQ0c7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsU0FBUztBQUN0QixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsU0FBUyxtRUFBYTtBQUN0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxQm9EO0FBQ0s7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsU0FBUztBQUN0QixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxTQUFTLGtFQUFZO0FBQ3JCOzs7Ozs7Ozs7Ozs7Ozs7OztBQzNCZ0Q7QUFDUztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUSxpRUFBaUU7QUFDcEYsV0FBVyxlQUFlO0FBQzFCLGFBQWEsU0FBUztBQUN0QixZQUFZLFdBQVc7QUFDdkIsWUFBWSxZQUFZO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCxpQkFBaUI7QUFDdkU7QUFDQTs7QUFFZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxTQUFTLGdFQUFVO0FBQ25COzs7Ozs7Ozs7Ozs7Ozs7OztBQ3JDZ0Q7QUFDUztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxTQUFTO0FBQ3RCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxTQUFTLGdFQUFVO0FBQ25COzs7Ozs7Ozs7Ozs7Ozs7OztBQzFCd0M7QUFDaUI7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLFNBQVM7QUFDdEIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLFNBQVMsNERBQU07QUFDZjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0QjhDO0FBQ1c7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsU0FBUztBQUN0QixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsU0FBUywrREFBUztBQUNsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMUIwQztBQUNJO0FBQ1c7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsU0FBUztBQUN0QixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsU0FBUywrREFBUyxZQUFZLDZEQUFPO0FBQ3JDOzs7Ozs7Ozs7Ozs7Ozs7OztBQzNCd0M7QUFDaUI7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLFNBQVM7QUFDdEIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLFNBQVMsNERBQU07QUFDZjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdEJ3QztBQUNBO0FBQ2lCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOERBQThEO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLE9BQU8sNERBQU07QUFDYjtBQUNBO0FBQ0EsYUFBYSw0REFBTTtBQUNuQjtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ3pDd0M7QUFDaUI7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLFNBQVM7QUFDdEIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLFNBQVMsNERBQU07QUFDZjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0QndDO0FBQ2lCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxTQUFTO0FBQ3RCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxhQUFhLDREQUFNO0FBQ25CO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN4QndDO0FBQ2lCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsU0FBUztBQUN0QixZQUFZLFdBQVc7QUFDdkIsWUFBWSxZQUFZO0FBQ3hCLFlBQVksWUFBWTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsa0JBQWtCO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixrQkFBa0I7QUFDOUM7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxhQUFhLDREQUFNO0FBQ25CLGtCQUFrQiw0REFBTTtBQUN4QixnQkFBZ0IsNERBQU07O0FBRXRCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcEQ4QztBQUNKO0FBQ2U7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsU0FBUztBQUN0QixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsU0FBUywrREFBUyxZQUFZLDZEQUFPO0FBQ3JDOzs7Ozs7Ozs7Ozs7Ozs7OztBQzNCd0M7QUFDaUI7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLE1BQU07QUFDbkIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLGFBQWEsNERBQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQzNCc0Q7QUFDRztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsTUFBTTtBQUNuQixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsU0FBUyxtRUFBYTtBQUN0QjtBQUNBLEdBQUc7QUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDM0J3RDtBQUNBO0FBQ0M7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsTUFBTTtBQUNuQixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsYUFBYSxvRUFBYztBQUMzQjtBQUNBO0FBQ0E7QUFDQSxhQUFhLG9FQUFjO0FBQzNCO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqQ3dDO0FBQ2lCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLE1BQU07QUFDbkIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLGFBQWEsNERBQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMzQndDO0FBQ2lCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLFFBQVE7QUFDbkIsV0FBVyxPQUFPLGdFQUFnRTtBQUNsRixhQUFhLE1BQU07QUFDbkIsWUFBWSxXQUFXO0FBQ3ZCLFlBQVksWUFBWTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxhQUFhLDREQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQy9Cd0M7QUFDVztBQUNNO0FBQ1c7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVEsaUVBQWlFO0FBQ3BGLFdBQVcsZUFBZTtBQUMxQixhQUFhLE1BQU07QUFDbkIsWUFBWSxXQUFXO0FBQ3ZCLFlBQVksWUFBWTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUVBQW1FLGlCQUFpQjtBQUNwRjtBQUNBO0FBQ2U7QUFDZjtBQUNBLEVBQUUsc0VBQVk7QUFDZCx1QkFBdUIsK0VBQWlCO0FBQ3hDLHFCQUFxQixtRUFBUzs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDREQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMvQ3dDO0FBQ2lCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLE1BQU07QUFDbkIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLGFBQWEsNERBQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDM0J3QztBQUN5QjtBQUM4QjtBQUNyRDtBQUNnQjtBQUNELENBQUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLFFBQVE7QUFDbkIsYUFBYSxRQUFRO0FBQ3JCLFlBQVksV0FBVztBQUN2QixZQUFZLFlBQVk7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxxQkFBcUIsNERBQU07QUFDM0IsT0FBTyw2REFBTztBQUNkO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHlGQUErQjtBQUN0RCxnQkFBZ0IscUVBQWU7QUFDL0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiw0RUFBVTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7OztBQ3JIZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7OztBQ1JlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7QUNqQmU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0JBQW9CO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7O0FDekNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7OztBQ2hCQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsUUFBUTtBQUNoQyxHQUFHO0FBQ0g7QUFDQTtBQUNBLGNBQWMsUUFBUTtBQUN0QixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLFFBQVE7QUFDaEMsR0FBRztBQUNIO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEIsR0FBRztBQUNIO0FBQ0E7QUFDQSxvQkFBb0IsUUFBUTtBQUM1QixHQUFHO0FBQ0g7QUFDQTtBQUNBLGNBQWMsUUFBUTtBQUN0QixHQUFHO0FBQ0g7QUFDQTtBQUNBLGNBQWMsUUFBUTtBQUN0QixHQUFHO0FBQ0g7QUFDQTtBQUNBLG9CQUFvQixRQUFRO0FBQzVCLEdBQUc7QUFDSDtBQUNBO0FBQ0EsY0FBYyxRQUFRO0FBQ3RCLEdBQUc7QUFDSDtBQUNBO0FBQ0Esb0JBQW9CLFFBQVE7QUFDNUIsR0FBRztBQUNIO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEIsR0FBRztBQUNIO0FBQ0E7QUFDQSxvQkFBb0IsUUFBUTtBQUM1QixHQUFHO0FBQ0g7QUFDQTtBQUNBLGNBQWMsUUFBUTtBQUN0QixHQUFHO0FBQ0g7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLEdBQUc7QUFDSDtBQUNBO0FBQ0EscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxJQUFJO0FBQ0oseUNBQXlDLE9BQU87QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlFQUFlLGNBQWM7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsRjRDO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPLE9BQU8sTUFBTTtBQUMvQixXQUFXLE9BQU8sT0FBTyxNQUFNO0FBQy9CLGFBQWEsTUFBTSxJQUFJLE1BQU07QUFDN0IsWUFBWSxNQUFNLElBQUksTUFBTTtBQUM1QjtBQUNBO0FBQ0EsUUFBUSwyRUFBaUI7QUFDekI7QUFDQTtBQUNBLEdBQUc7QUFDSCxRQUFRLDJFQUFpQjtBQUN6QjtBQUNBO0FBQ0EsR0FBRztBQUNILFlBQVksMkVBQWlCO0FBQzdCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxpRUFBZSxVQUFVOzs7Ozs7Ozs7Ozs7Ozs7QUNqQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRUFBZSxjQUFjOzs7Ozs7Ozs7Ozs7Ozs7O0FDWHdDO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLHlFQUFlO0FBQ3RCO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsV0FBVyx5RUFBZTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILFNBQVMseUVBQWU7QUFDeEI7QUFDQTtBQUNBLEdBQUc7QUFDSCxPQUFPLHlFQUFlO0FBQ3RCO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsYUFBYSx5RUFBZTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLGlFQUFlLFFBQVE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDOUl3QztBQUNjO0FBQzdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw2RUFBbUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxPQUFPLHNFQUFZO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILFdBQVcsc0VBQVk7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsU0FBUyxzRUFBWTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxPQUFPLHNFQUFZO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILGFBQWEsc0VBQVk7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxpRUFBZSxLQUFLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2pHd0M7QUFDUjtBQUNRO0FBQ1o7QUFDTjtBQUMxQztBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQyxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLG9FQUFjO0FBQ2hDLGNBQWMsZ0VBQVU7QUFDeEIsa0JBQWtCLG9FQUFjO0FBQ2hDLFlBQVksOERBQVE7QUFDcEIsU0FBUywyREFBSztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRUFBZSxNQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxQm1DO0FBQ2hCO0FBQ2lCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGlCQUFpQjtBQUM1QixhQUFhLE1BQU07QUFDbkIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksU0FBUyw2RUFBTztBQUNwQjtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLDREQUFNO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0FDL0N5RDtBQUN6RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFVBQVU7QUFDckIsYUFBYSxRQUFRO0FBQ3JCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsVUFBVTtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsV0FBVztBQUM3QjtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsc0VBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ3JEeUQ7QUFDRTtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsNkJBQTZCLG1FQUFrQjtBQUMvQztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQzdCeUQ7QUFDSTtBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsK0JBQStCLHFFQUFvQjtBQUNuRDtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQzdCeUQ7QUFDSTtBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsK0JBQStCLHFFQUFvQjtBQUNuRDtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3QndEO0FBQ2hCO0FBQ2lCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGlCQUFpQjtBQUM1QixhQUFhLE1BQU07QUFDbkIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLDZFQUFPO0FBQ3BCO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsNERBQU07QUFDNUI7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDOUN5RDtBQUNIO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQSxhQUFhLFFBQVE7QUFDckIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCx3QkFBd0IsOERBQWE7QUFDckM7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3QnlEO0FBQ0k7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWEsUUFBUTtBQUNyQixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsOEJBQThCLHFFQUFvQjtBQUNsRDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2QnlEO0FBQ0Q7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksU0FBUztBQUNyQjtBQUNBLGFBQWEsUUFBUTtBQUNyQixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsOEJBQThCLGdFQUFlO0FBQzdDOzs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZCeUQ7QUFDRDtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsMEJBQTBCLGdFQUFlO0FBQ3pDO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDN0J5RDtBQUNKO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQSxhQUFhLFFBQVE7QUFDckIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsdUJBQXVCLDZEQUFZO0FBQ25DO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzVCMEM7QUFDRjtBQUNpQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxlQUFlO0FBQzFCLFdBQVcsS0FBSztBQUNoQixhQUFhLE1BQU07QUFDbkIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxvQkFBb0IsNERBQU07QUFDMUI7QUFDQSxTQUFTLDZEQUFPO0FBQ2hCOzs7Ozs7Ozs7Ozs7Ozs7OztBQy9CMEM7QUFDZTtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxlQUFlO0FBQzFCLGFBQWEsTUFBTTtBQUNuQixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsU0FBUyw2REFBTztBQUNoQjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0QjBDO0FBQ2U7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsZUFBZTtBQUMxQixhQUFhLE1BQU07QUFDbkIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLFNBQVMsNkRBQU87QUFDaEI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdEIwQztBQUNlO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGVBQWU7QUFDMUIsYUFBYSxNQUFNO0FBQ25CLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxTQUFTLDZEQUFPO0FBQ2hCOzs7Ozs7Ozs7Ozs7Ozs7OztBQ3RCMEM7QUFDZTtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxlQUFlO0FBQzFCLGFBQWEsTUFBTTtBQUNuQixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsU0FBUyw2REFBTztBQUNoQjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0QjBDO0FBQ2U7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsZUFBZTtBQUMxQixhQUFhLE1BQU07QUFDbkIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLFNBQVMsNkRBQU87QUFDaEI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdEIwQztBQUNlO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGVBQWU7QUFDMUIsYUFBYSxNQUFNO0FBQ25CLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLEVBQUUsc0VBQVk7QUFDZCxTQUFTLDZEQUFPO0FBQ2hCOzs7Ozs7Ozs7Ozs7Ozs7OztBQ3RCMEM7QUFDZTtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxlQUFlO0FBQzFCLGFBQWEsTUFBTTtBQUNuQixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixFQUFFLHNFQUFZO0FBQ2QsU0FBUyw2REFBTztBQUNoQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3RCd0U7QUFDTjtBQUNNO0FBQzlCO0FBQ25DO0FBQ1A7QUFDQSxJQUFJLHFGQUFlO0FBQ25CLElBQUkscUZBQWU7QUFDbkIsSUFBSSxxRkFBZTtBQUNuQixJQUFJLHFGQUFlO0FBQ25CO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG1EQUFXO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDOUJxRjtBQUMxQjtBQUNNO0FBQ007QUFDTjtBQUNNO0FBQ3hFO0FBQ087QUFDUDtBQUNBLElBQUkscUZBQWU7QUFDbkIsSUFBSSxxRkFBZTtBQUNuQixJQUFJLHFGQUFlO0FBQ25CO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQztBQUNNO0FBQ1AsRUFBRSwrRUFBUztBQUNYLGVBQWUsa0ZBQVk7QUFDM0I7QUFDQTtBQUNBLElBQUkscUZBQWU7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLGtGQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDO0FBQ007QUFDUCxFQUFFLCtFQUFTO0FBQ1gsZ0JBQWdCLGtGQUFZO0FBQzVCO0FBQ0E7QUFDQSxJQUFJLHFGQUFlO0FBQ25CLHdFQUF3RSxhQUFhO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUMsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQztBQUNBO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQzdFTTtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtCQUFrQixJQUFJO0FBQ3RCO0FBQ0Esb0JBQW9CLElBQUk7QUFDeEI7QUFDQSxtQkFBbUIsSUFBSTtBQUN2Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsSUFBSTtBQUM5QjtBQUNBLDRCQUE0QixJQUFJO0FBQ2hDO0FBQ0EsMkJBQTJCLElBQUk7QUFDL0I7O0FBRU87QUFDUCxvQ0FBb0MsRUFBRSxLQUFLLEVBQUU7QUFDN0MscUJBQXFCLEVBQUUsS0FBSyxFQUFFO0FBQzlCLG9DQUFvQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDckQsd0JBQXdCLEVBQUUsTUFBTSxFQUFFO0FBQ2xDLHVDQUF1QyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUU7QUFDMUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDL0N3RTtBQUNOO0FBQ29CO0FBQzFCO0FBQ007QUFDTTtBQUNsQztBQUNhO0FBQzVDO0FBQ1AsRUFBRSwrRUFBUztBQUNYLGVBQWUsa0ZBQVk7QUFDM0I7QUFDQTtBQUNBLElBQUkscUZBQWU7QUFDbkIsd0VBQXdFLGFBQWE7QUFDckY7QUFDQTtBQUNBO0FBQ0EsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQyxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDO0FBQ0E7QUFDQSxFQUFFLGtGQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsdUJBQXVCLCtEQUFvQjtBQUMzQztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDLDhDQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQy9EZ0U7QUFDTjtBQUNvQjtBQUMxQjtBQUNNO0FBQ007QUFDbEM7QUFDYTtBQUM1QztBQUNQLEVBQUUsK0VBQVM7QUFDWCxlQUFlLGtGQUFZO0FBQzNCO0FBQ0E7QUFDQSxJQUFJLHFGQUFlO0FBQ25CLHdFQUF3RSxhQUFhO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUMsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQztBQUNBO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHVCQUF1QiwrREFBb0I7QUFDM0M7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQyw4Q0FBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDL0RnRTtBQUNOO0FBQ29CO0FBQzFCO0FBQ007QUFDTTtBQUNTO0FBQzNDO0FBQ1k7QUFDbEQ7QUFDQTs7QUFFQTtBQUNPO0FBQ1AsRUFBRSwrRUFBUztBQUNYLGVBQWUsa0ZBQVk7QUFDM0I7QUFDQTtBQUNBLElBQUkscUZBQWU7QUFDbkIsd0VBQXdFLGFBQWE7QUFDckY7QUFDQTtBQUNBO0FBQ0EsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQyxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUM7QUFDQTtBQUNBLEVBQUUsa0ZBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw4REFBbUIsQ0FBQywrREFBb0I7QUFDekQ7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsaUJBQWlCLHVEQUFZO0FBQzdCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDBEQUFlO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDLDhDQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMvRGdFO0FBQ047QUFDb0I7QUFDMUI7QUFDTTtBQUNNO0FBQ2xDO0FBQ1k7QUFDK0I7QUFDMUU7QUFDUCxFQUFFLCtFQUFTO0FBQ1gsZUFBZSxrRkFBWTtBQUMzQjtBQUNBO0FBQ0EsSUFBSSxxRkFBZTtBQUNuQix3RUFBd0UsYUFBYTtBQUNyRjtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUMsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQztBQUNBO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsOERBQW1CLENBQUMsb0VBQXlCO0FBQzlEO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLGlCQUFpQix1REFBWTtBQUM3QjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QiwwREFBZTtBQUN0QztBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDLENBQUMsOENBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDM0RnRTtBQUNOO0FBQ29CO0FBQzFCO0FBQ007QUFDTTtBQUNsQztBQUNtQixDQUFDO0FBQ25EO0FBQ1AsRUFBRSwrRUFBUztBQUNYLGVBQWUsa0ZBQVk7QUFDM0I7QUFDQTtBQUNBLElBQUkscUZBQWU7QUFDbkIsd0VBQXdFLGFBQWE7QUFDckY7QUFDQTtBQUNBO0FBQ0EsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQyxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDO0FBQ0E7QUFDQSxFQUFFLGtGQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxhQUFhLG1FQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQyw4Q0FBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2RmdFO0FBQ047QUFDb0I7QUFDMUI7QUFDTTtBQUNNO0FBQ2xDO0FBQ2EsQ0FBQztBQUM3QztBQUNQLEVBQUUsK0VBQVM7QUFDWCxlQUFlLGtGQUFZO0FBQzNCO0FBQ0E7QUFDQSxJQUFJLHFGQUFlO0FBQ25CLHdFQUF3RSxhQUFhO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUMsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQztBQUNBO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHVCQUF1QiwrREFBb0I7QUFDM0M7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQyw4Q0FBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQy9EZ0U7QUFDTjtBQUNvQjtBQUMxQjtBQUNNO0FBQ007QUFDbEM7QUFDL0I7QUFDUCxFQUFFLCtFQUFTO0FBQ1gsZUFBZSxrRkFBWTtBQUMzQjtBQUNBO0FBQ0EsSUFBSSxxRkFBZTtBQUNuQix3RUFBd0UsYUFBYTtBQUNyRjtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUM7QUFDQTtBQUNBLEVBQUUsa0ZBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLFdBQVc7QUFDWDtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDLDhDQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzdEZ0U7QUFDTjtBQUNvQjtBQUMxQjtBQUNNO0FBQ007QUFDbEM7QUFDVztBQUMxQztBQUNQLEVBQUUsK0VBQVM7QUFDWCxlQUFlLGtGQUFZO0FBQzNCO0FBQ0E7QUFDQSxJQUFJLHFGQUFlO0FBQ25CLHdFQUF3RSxhQUFhO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUMsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQztBQUNBO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBLGVBQWUsNkRBQWtCO0FBQ2pDO0FBQ0EsYUFBYSw2REFBa0I7QUFDL0I7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDLDhDQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZDZ0U7QUFDTjtBQUNvQjtBQUMxQjtBQUNNO0FBQ007QUFDbEM7QUFDZTtBQUM5QztBQUNQLEVBQUUsK0VBQVM7QUFDWCxlQUFlLGtGQUFZO0FBQzNCO0FBQ0E7QUFDQSxJQUFJLHFGQUFlO0FBQ25CLHdFQUF3RSxhQUFhO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUMsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQztBQUNBO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1EQUFRLENBQUMsdURBQVk7QUFDbEM7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQyw4Q0FBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdENnRTtBQUNOO0FBQ29CO0FBQzFCO0FBQ007QUFDTTtBQUNsQztBQUNZO0FBQ2M7QUFDekQ7QUFDUCxFQUFFLCtFQUFTO0FBQ1gsZUFBZSxrRkFBWTtBQUMzQjtBQUNBO0FBQ0EsSUFBSSxxRkFBZTtBQUNuQix3RUFBd0UsYUFBYTtBQUNyRjtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUM7QUFDQTtBQUNBLEVBQUUsa0ZBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw4REFBbUIsQ0FBQyxrRUFBdUI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsaUJBQWlCLHVEQUFZO0FBQzdCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQyw4Q0FBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdkRnRTtBQUNOO0FBQ29CO0FBQzFCO0FBQ007QUFDTTtBQUNsQztBQUNZO0FBQ2M7QUFDekQ7QUFDUCxFQUFFLCtFQUFTO0FBQ1gsZUFBZSxrRkFBWTtBQUMzQjtBQUNBO0FBQ0EsSUFBSSxxRkFBZTtBQUNuQix3RUFBd0UsYUFBYTtBQUNyRjtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUM7QUFDQTtBQUNBLEVBQUUsa0ZBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw4REFBbUIsQ0FBQyxrRUFBdUI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsaUJBQWlCLHVEQUFZO0FBQzdCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQyw4Q0FBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbERnRTtBQUNOO0FBQ29CO0FBQzFCO0FBQ007QUFDTTtBQUNsQztBQUNZO0FBQ2M7QUFDekQ7QUFDUCxFQUFFLCtFQUFTO0FBQ1gsZUFBZSxrRkFBWTtBQUMzQjtBQUNBO0FBQ0EsSUFBSSxxRkFBZTtBQUNuQix3RUFBd0UsYUFBYTtBQUNyRjtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUM7QUFDQTtBQUNBLEVBQUUsa0ZBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw4REFBbUIsQ0FBQyxrRUFBdUI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsaUJBQWlCLHVEQUFZO0FBQzdCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDLDhDQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuRGdFO0FBQ047QUFDb0I7QUFDMUI7QUFDTTtBQUNNO0FBQ2xDO0FBQ1k7QUFDYztBQUN6RDtBQUNQLEVBQUUsK0VBQVM7QUFDWCxlQUFlLGtGQUFZO0FBQzNCO0FBQ0E7QUFDQSxJQUFJLHFGQUFlO0FBQ25CLHdFQUF3RSxhQUFhO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUMsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQztBQUNBO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDhEQUFtQixDQUFDLGtFQUF1QjtBQUM1RDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxpQkFBaUIsdURBQVk7QUFDN0I7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDLDhDQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN6RGdFO0FBQ047QUFDb0I7QUFDMUI7QUFDTTtBQUNNO0FBQ2xDO0FBQ2U7QUFDVSxDQUFDO0FBQ3pEO0FBQ1AsRUFBRSwrRUFBUztBQUNYLGVBQWUsa0ZBQVk7QUFDM0I7QUFDQTtBQUNBLElBQUkscUZBQWU7QUFDbkIsd0VBQXdFLGFBQWE7QUFDckY7QUFDQTtBQUNBO0FBQ0EsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQyxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDO0FBQ0E7QUFDQSxFQUFFLGtGQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsdURBQVk7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLGlCQUFpQixtREFBUTtBQUN6QjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsaUJBQWlCLG1EQUFRO0FBQ3pCO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLGlCQUFpQixtREFBUTtBQUN6QjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG1EQUFRO0FBQ3pCO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsYUFBYSxzRUFBWTtBQUN6QjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDLENBQUMsOENBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3RHZ0U7QUFDTjtBQUNvQjtBQUMxQjtBQUNNO0FBQ007QUFDbEM7QUFDYTtBQUNBLENBQUM7QUFDN0M7QUFDUCxFQUFFLCtFQUFTO0FBQ1gsZUFBZSxrRkFBWTtBQUMzQjtBQUNBO0FBQ0EsSUFBSSxxRkFBZTtBQUNuQix3RUFBd0UsYUFBYTtBQUNyRjtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUM7QUFDQTtBQUNBLEVBQUUsa0ZBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiwrREFBb0IsQ0FBQyxnRkFBcUM7QUFDM0U7QUFDQSxpQkFBaUIsK0RBQW9CLENBQUMsaUVBQXNCO0FBQzVEO0FBQ0EsaUJBQWlCLCtEQUFvQixDQUFDLGdGQUFxQztBQUMzRTtBQUNBLGlCQUFpQiwrREFBb0IsQ0FBQyxtRkFBd0M7QUFDOUU7QUFDQTtBQUNBLGlCQUFpQiwrREFBb0IsQ0FBQyxvRUFBeUI7QUFDL0Q7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQyw4Q0FBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbERnRTtBQUNOO0FBQ29CO0FBQzFCO0FBQ007QUFDTTtBQUNsQztBQUNhO0FBQ0EsQ0FBQztBQUM3QztBQUNQLEVBQUUsK0VBQVM7QUFDWCxlQUFlLGtGQUFZO0FBQzNCO0FBQ0E7QUFDQSxJQUFJLHFGQUFlO0FBQ25CLHdFQUF3RSxhQUFhO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUMsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQztBQUNBO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLCtEQUFvQixDQUFDLGdGQUFxQztBQUMzRTtBQUNBLGlCQUFpQiwrREFBb0IsQ0FBQyxpRUFBc0I7QUFDNUQ7QUFDQSxpQkFBaUIsK0RBQW9CLENBQUMsZ0ZBQXFDO0FBQzNFO0FBQ0EsaUJBQWlCLCtEQUFvQixDQUFDLG1GQUF3QztBQUM5RTtBQUNBO0FBQ0EsaUJBQWlCLCtEQUFvQixDQUFDLG9FQUF5QjtBQUMvRDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDLDhDQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2xEZ0U7QUFDTjtBQUNvQjtBQUMxQjtBQUNNO0FBQ007QUFDbEM7QUFDWTtBQUNjO0FBQ0M7QUFDUSxDQUFDO0FBQ25FO0FBQ1AsRUFBRSwrRUFBUztBQUNYLGVBQWUsa0ZBQVk7QUFDM0I7QUFDQTtBQUNBLElBQUkscUZBQWU7QUFDbkIsd0VBQXdFLGFBQWE7QUFDckY7QUFDQTtBQUNBO0FBQ0EsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQyxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDO0FBQ0E7QUFDQSxFQUFFLGtGQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsOERBQW1CLENBQUMsK0RBQW9CO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLGlCQUFpQix1REFBWTtBQUM3QjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxhQUFhLDJFQUFpQixDQUFDLHVFQUFhO0FBQzVDO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDLCtDQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuRGdFO0FBQ047QUFDb0I7QUFDMUI7QUFDTTtBQUNNO0FBQ2xDO0FBQ1c7QUFDd0IsQ0FBQztBQUNuRTtBQUNQLEVBQUUsK0VBQVM7QUFDWCxlQUFlLGtGQUFZO0FBQzNCO0FBQ0E7QUFDQSxJQUFJLHFGQUFlO0FBQ25CLHdFQUF3RSxhQUFhO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUMsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQztBQUNBO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBLGVBQWUsNkRBQWtCO0FBQ2pDO0FBQ0EsYUFBYSw2REFBa0I7QUFDL0I7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsMkVBQWlCO0FBQzlCO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDLDhDQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN6Q2dFO0FBQ047QUFDb0I7QUFDMUI7QUFDTTtBQUNNO0FBQ2xDO0FBQ2U7QUFDSSxDQUFDO0FBQ25EO0FBQ1AsRUFBRSwrRUFBUztBQUNYLGVBQWUsa0ZBQVk7QUFDM0I7QUFDQTtBQUNBLElBQUkscUZBQWU7QUFDbkIsd0VBQXdFLGFBQWE7QUFDckY7QUFDQTtBQUNBO0FBQ0EsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQyxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDO0FBQ0E7QUFDQSxFQUFFLGtGQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixtREFBUSxDQUFDLHVEQUFZO0FBQ3RDO0FBQ0E7QUFDQSxpQkFBaUIsbURBQVE7QUFDekI7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGFBQWEsbUVBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDLDhDQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BHZ0U7QUFDTjtBQUNvQjtBQUMxQjtBQUNNO0FBQ007QUFDbEM7QUFDWTtBQUNjO0FBQ0w7QUFDUSxDQUFDO0FBQzdEO0FBQ1AsRUFBRSwrRUFBUztBQUNYLGVBQWUsa0ZBQVk7QUFDM0I7QUFDQTtBQUNBLElBQUkscUZBQWU7QUFDbkIsd0VBQXdFLGFBQWE7QUFDckY7QUFDQTtBQUNBO0FBQ0EsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQyxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDO0FBQ0E7QUFDQSxFQUFFLGtGQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsOERBQW1CLENBQUMsK0RBQW9CO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLGlCQUFpQix1REFBWTtBQUM3QjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxhQUFhLHdFQUFjLENBQUMsb0VBQVU7QUFDdEM7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDLENBQUMsK0NBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuRGdFO0FBQ047QUFDb0I7QUFDMUI7QUFDTTtBQUNNO0FBQ2xDO0FBQ3NDO0FBQ1Q7QUFDQTtBQUNuRTtBQUNPO0FBQ1AsRUFBRSwrRUFBUztBQUNYLGVBQWUsa0ZBQVk7QUFDM0I7QUFDQTtBQUNBLElBQUkscUZBQWU7QUFDbkIsd0VBQXdFLGFBQWE7QUFDckY7QUFDQTtBQUNBO0FBQ0EsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQyxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDO0FBQ0E7QUFDQSxFQUFFLGtGQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsbURBQVEsQ0FBQyx1REFBWTtBQUN0QztBQUNBLGlCQUFpQixtREFBUTtBQUN6QjtBQUNBLFdBQVc7QUFDWDtBQUNBLGlCQUFpQixtREFBUSxDQUFDLHVEQUFZO0FBQ3RDO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHdCQUF3Qix3RUFBYztBQUN0QztBQUNBLHFDQUFxQyxnRUFBcUI7QUFDMUQ7QUFDQTtBQUNBLGVBQWUsd0VBQWM7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHdFQUFjO0FBQzNCO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDLDhDQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuRWdFO0FBQ047QUFDb0I7QUFDMUI7QUFDTTtBQUNNO0FBQ2xDO0FBQ1k7QUFDYztBQUN6RDtBQUNQLEVBQUUsK0VBQVM7QUFDWCxlQUFlLGtGQUFZO0FBQzNCO0FBQ0E7QUFDQSxJQUFJLHFGQUFlO0FBQ25CLHdFQUF3RSxhQUFhO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUMsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQztBQUNBO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDhEQUFtQixDQUFDLGlFQUFzQjtBQUMzRDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxpQkFBaUIsdURBQVk7QUFDN0I7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDLDhDQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsRGdFO0FBQ047QUFDb0I7QUFDMUI7QUFDTTtBQUNNO0FBQ0U7QUFDcEM7QUFDWTtBQUMzQztBQUNQLEVBQUUsK0VBQVM7QUFDWCxlQUFlLGtGQUFZO0FBQzNCO0FBQ0E7QUFDQSxJQUFJLHFGQUFlO0FBQ25CLHdFQUF3RSxhQUFhO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUMsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQztBQUNBO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsbURBQVEsQ0FBQyw4REFBbUIsQ0FBQyxnRUFBcUI7QUFDbkU7QUFDQTtBQUNBLGlCQUFpQixtREFBUSxDQUFDLHVEQUFZO0FBQ3RDO0FBQ0E7QUFDQSxpQkFBaUIsbURBQVE7QUFDekI7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQyw4Q0FBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyRmdFO0FBQ047QUFDb0I7QUFDMUI7QUFDTTtBQUNNO0FBQ2xDO0FBQ0s7QUFDcEM7QUFDUCxFQUFFLCtFQUFTO0FBQ1gsZUFBZSxrRkFBWTtBQUMzQjtBQUNBO0FBQ0EsSUFBSSxxRkFBZTtBQUNuQix3RUFBd0UsYUFBYTtBQUNyRjtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUM7QUFDQTtBQUNBLEVBQUUsa0ZBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQix1REFBWTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsdUNBQXVDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDLENBQUMsOENBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2hGZ0U7QUFDTjtBQUNvQjtBQUMxQjtBQUNNO0FBQ007QUFDbEM7QUFDWTtBQUNjO0FBQ3pEO0FBQ1AsRUFBRSwrRUFBUztBQUNYLGVBQWUsa0ZBQVk7QUFDM0I7QUFDQTtBQUNBLElBQUkscUZBQWU7QUFDbkIsd0VBQXdFLGFBQWE7QUFDckY7QUFDQTtBQUNBO0FBQ0EsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQyxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDO0FBQ0E7QUFDQSxFQUFFLGtGQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsOERBQW1CLENBQUMsaUVBQXNCO0FBQzNEO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLGlCQUFpQix1REFBWTtBQUM3QjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDLENBQUMsOENBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2xEZ0U7QUFDTjtBQUNvQjtBQUMxQjtBQUNNO0FBQ007QUFDbEM7QUFDZTtBQUNJLENBQUM7QUFDbkQ7QUFDUCxFQUFFLCtFQUFTO0FBQ1gsZUFBZSxrRkFBWTtBQUMzQjtBQUNBO0FBQ0EsSUFBSSxxRkFBZTtBQUNuQix3RUFBd0UsYUFBYTtBQUNyRjtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUM7QUFDQTtBQUNBLEVBQUUsa0ZBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG1EQUFRLENBQUMsdURBQVk7QUFDdEM7QUFDQTtBQUNBLGlCQUFpQixtREFBUTtBQUN6QjtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsYUFBYSxtRUFBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDLENBQUMsOENBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BHZ0U7QUFDTjtBQUNvQjtBQUMxQjtBQUNNO0FBQ007QUFDbEM7QUFDWTtBQUN3QjtBQUNuRTtBQUNQLEVBQUUsK0VBQVM7QUFDWCxlQUFlLGtGQUFZO0FBQzNCO0FBQ0E7QUFDQSxJQUFJLHFGQUFlO0FBQ25CLHdFQUF3RSxhQUFhO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUMsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQztBQUNBO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsbURBQVEsQ0FBQyw4REFBbUIsQ0FBQyxnRUFBcUI7QUFDbkU7QUFDQTtBQUNBLGlCQUFpQixtREFBUSxDQUFDLHVEQUFZO0FBQ3RDO0FBQ0E7QUFDQSxpQkFBaUIsbURBQVE7QUFDekI7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQyw4Q0FBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyRmdFO0FBQ047QUFDb0I7QUFDMUI7QUFDTTtBQUNNO0FBQ2xDO0FBQ0s7QUFDcEM7QUFDUCxFQUFFLCtFQUFTO0FBQ1gsZUFBZSxrRkFBWTtBQUMzQjtBQUNBO0FBQ0EsSUFBSSxxRkFBZTtBQUNuQix3RUFBd0UsYUFBYTtBQUNyRjtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUM7QUFDQTtBQUNBLEVBQUUsa0ZBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQix1REFBWTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsdUNBQXVDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDLENBQUMsOENBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDaEZnRTtBQUNOO0FBQ29CO0FBQzFCO0FBQ007QUFDTTtBQUNsQztBQUNhO0FBQzVDO0FBQ1AsRUFBRSwrRUFBUztBQUNYLGVBQWUsa0ZBQVk7QUFDM0I7QUFDQTtBQUNBLElBQUkscUZBQWU7QUFDbkIsd0VBQXdFLGFBQWE7QUFDckY7QUFDQTtBQUNBO0FBQ0EsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQyxJQUFJLHFGQUFlLENBQUMsNEZBQXNCO0FBQzFDO0FBQ0E7QUFDQSxFQUFFLGtGQUFZO0FBQ2Q7QUFDQTtBQUNBLGFBQWEsK0RBQW9CO0FBQ2pDO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDLDhDQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BDZ0U7QUFDTjtBQUNvQjtBQUMxQjtBQUNNO0FBQ007QUFDbEM7QUFDYTtBQUM1QztBQUNQLEVBQUUsK0VBQVM7QUFDWCxlQUFlLGtGQUFZO0FBQzNCO0FBQ0E7QUFDQSxJQUFJLHFGQUFlO0FBQ25CLHdFQUF3RSxhQUFhO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUMsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQztBQUNBO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQSxhQUFhLCtEQUFvQjtBQUNqQztBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQyw4Q0FBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwQ2dFO0FBQ047QUFDb0I7QUFDMUI7QUFDTTtBQUNNO0FBQ2xDO0FBQ3NDO0FBQzVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLEVBQUUsK0VBQVM7QUFDWCxlQUFlLGtGQUFZO0FBQzNCO0FBQ0E7QUFDQSxJQUFJLHFGQUFlO0FBQ25CLHdFQUF3RSxhQUFhO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLElBQUkscUZBQWUsQ0FBQyw0RkFBc0I7QUFDMUMsSUFBSSxxRkFBZSxDQUFDLDRGQUFzQjtBQUMxQztBQUNBO0FBQ0EsRUFBRSxrRkFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG1EQUFRLENBQUMsdURBQVk7QUFDdEM7QUFDQSxpQkFBaUIsbURBQVE7QUFDekI7QUFDQSxXQUFXO0FBQ1g7QUFDQSxpQkFBaUIsbURBQVEsQ0FBQyx1REFBWTtBQUN0QztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLGdFQUFxQjtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDLENBQUMsOENBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN4RW1DO0FBQ0U7QUFDa0I7QUFDSjtBQUNFO0FBQ1Y7QUFDb0I7QUFDeEI7QUFDb0I7QUFDWjtBQUNKO0FBQ047QUFDVTtBQUNaO0FBQ1U7QUFDb0I7QUFDeEI7QUFDSjtBQUNnQjtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTjtBQUNBO0FBQ29CO0FBQ0E7QUFDVjtBQUNVO0FBQ1U7QUFDL0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLFNBQVMsb0RBQVM7QUFDbEIsU0FBUyxzREFBVTtBQUNuQixTQUFTLHdFQUFtQjtBQUM1QixTQUFTLG9FQUFpQjtBQUMxQixTQUFTLHNFQUFrQjtBQUMzQixTQUFTLDREQUFhO0FBQ3RCLFNBQVMsZ0ZBQXVCO0FBQ2hDLFNBQVMsd0RBQVc7QUFDcEIsU0FBUyw0RUFBcUI7QUFDOUIsU0FBUyxnRUFBZTtBQUN4QixTQUFTLDZEQUFhO0FBQ3RCLFNBQVMsdURBQVU7QUFDbkIsU0FBUyxpRUFBZTtBQUN4QixTQUFTLHFEQUFTO0FBQ2xCLFNBQVMsK0RBQWM7QUFDdkIsU0FBUyxtRkFBd0I7QUFDakMsU0FBUywyREFBWTtBQUNyQixTQUFTLHVEQUFVO0FBQ25CLFNBQVMsdUVBQWtCO0FBQzNCLFNBQVMsaUVBQWU7QUFDeEIsU0FBUyxpRUFBZTtBQUN4QixTQUFTLGlFQUFlO0FBQ3hCLFNBQVMsaUVBQWU7QUFDeEIsU0FBUyxpRUFBZTtBQUN4QixTQUFTLDJEQUFZO0FBQ3JCLFNBQVMsMkRBQVk7QUFDckIsU0FBUywrRUFBc0I7QUFDL0IsU0FBUywrRUFBc0I7QUFDL0IsU0FBUyxxRUFBaUI7QUFDMUIsU0FBUywrRUFBc0I7QUFDL0IsU0FBUyx5RkFBMkI7QUFDcEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxRzBHO0FBQ3pEO0FBQzFDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsbUVBQWtCLGFBQWEscUVBQW9CLGFBQWEscUVBQW9CO0FBQy9HO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsNkJBQTZCLDBFQUErQjtBQUM1RDtBQUNPO0FBQ1A7QUFDQTtBQUNBLGlDQUFpQyxzRUFBMkI7QUFDNUQ7QUFDQSxpQ0FBaUMsb0VBQXlCO0FBQzFEO0FBQ0EsaUNBQWlDLHNFQUEyQjtBQUM1RDtBQUNBLGlDQUFpQyxxRUFBMEI7QUFDM0Q7QUFDQSxrREFBa0QsWUFBWTtBQUM5RDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0EsaUNBQWlDLDRFQUFpQztBQUNsRTtBQUNBLGlDQUFpQywwRUFBK0I7QUFDaEU7QUFDQSxpQ0FBaUMsNEVBQWlDO0FBQ2xFO0FBQ0EsaUNBQWlDLDJFQUFnQztBQUNqRTtBQUNBLG9EQUFvRCxZQUFZO0FBQ2hFO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDL0d3RDtBQUNzQztBQUNuQztBQUNEO0FBQ2xCO0FBQ0s7QUFDdUI7QUFDMkI7QUFDNkI7QUFDekU7QUFDTTtBQUNLO0FBQ1o7QUFDa0IsQ0FBQztBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELFdBQVc7QUFDNUQ7QUFDQSxpREFBaUQsV0FBVztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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OztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7OztBQUdBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUyxZQUFZOztBQUVyQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUYsb0JBQW9COztBQUVwQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRiw4Q0FBOEM7QUFDOUM7QUFDQTtBQUNBLG1CQUFtQixpQ0FBaUM7QUFDcEQsRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLFlBQVk7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFVBQVUsU0FBUztBQUNuQjtBQUNBOztBQUVBOztBQUVBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVUsWUFBWTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsWUFBWTtBQUN2Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLFNBQVM7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0Esa0NBQWtDLElBQUk7QUFDdEM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsMkJBQTJCO0FBQzNCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBOztBQUVBLGdCQUFnQixJQUFJOztBQUVwQjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSwwQ0FBMEMsSUFBSTtBQUM5QztBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRixVQUFVOztBQUVWO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0EsTUFBTTtBQUNOOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFD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Q0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLFdBQVc7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLGVBQWU7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQSxpQ0FBaUMsTUFBTTtBQUN2QztBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUEsZUFBZTs7QUFFZixTQUFTOztBQUVUO0FBQ0EsU0FBUyxnQ0FBZ0M7QUFDekMsU0FBUyxtQkFBbUI7QUFDNUIsU0FBUyxxQ0FBcUM7QUFDOUMsU0FBUztBQUNULEVBQUU7O0FBRUY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHOztBQUVIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTixHQUFHOztBQUVIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtB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QUNBLGFBQWEsNEJBQTRCO0FBQ3pDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsU0FBUztBQUNsQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSw2REFBNkQ7O0FBRTdEO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQzs7QUFFMUM7QUFDQTtBQUNBLFFBQVE7QUFDUjs7QUFFQTtBQUNBO0FBQ0EsUUFBUTs7QUFFUjtBQUNBOztBQUVBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsU0FBUztBQUNsQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUyxTQUFTO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKLFNBQVMsU0FBUztBQUNsQjtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFlBQVksU0FBUztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsaURBQWlEO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtEQUFrRDtBQUNsRCxXQUFXLDRDQUE0QztBQUN2RDtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsaUJBQWlCO0FBQzVCO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7O0FBRUEsRUFBRTs7OztBQUlGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBLFNBQVMsR0FBRztBQUNaO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7OztBQUdBOzs7O0FBSUE7O0FBRUE7O0FBRUE7QUFDQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQixTQUFTO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBOztBQUVBLGVBQWUsU0FBUztBQUN4QjtBQUNBOztBQUVBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7OztBQUdGOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxNQUFNO0FBQ047O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLDJCQUEyQix3QkFBd0I7O0FBRW5EO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBLDJDQUEyQztBQUMzQyxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1COztBQUVuQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUixPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx5Q0FBeUMscUNBQXFDO0FBQzlFLHFDQUFxQyxzQ0FBc0M7QUFDM0UscUNBQXFDLHFDQUFxQztBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULFFBQVE7QUFDUjtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWTs7QUFFWjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXOztBQUVYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTs7QUFFWjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUNBQXFDO0FBQ3JDLHNDQUFzQztBQUN0QyxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7Ozs7QUFLQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLFNBQVM7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdCQUF3QixhQUFhO0FBQ3JDLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLFNBQVM7QUFDN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0gsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUk7QUFDSjtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7O0FBRUE7OztBQUdBOztBQUVBOzs7O0FBSUE7QUFDQTtBQUNBLEdBQUc7QUFDSCxlQUFlOztBQUVmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxTQUFTLGdCQUFnQjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0IsZ0JBQWdCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxFQUFFO0FBQ0Y7O0FBRUE7O0FBRUE7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7O0FBRUEsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVMsT0FBTztBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0Esc0JBQXNCOztBQUV0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUyxPQUFPO0FBQ2hCOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFdBQVc7O0FBRVg7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSw0Q0FBNEM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsZUFBZSxzQkFBc0I7QUFDckM7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsZ0VBQWdFO0FBQ2hFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsV0FBVyxjQUFjOztBQUV6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLG1CQUFtQjtBQUNyQzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHVDQUF1QztBQUNsRTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsdURBQXVEO0FBQy9FOztBQUVBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sK0NBQStDO0FBQ3JEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVDQUF1QztBQUN2QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxlQUFlLG9DQUFvQztBQUNuRDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsRUFBRTs7O0FBR0Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7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QUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkNBQTZDLGNBQWM7QUFDM0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSw4REFBOEQ7QUFDM0U7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUyxPQUFPOztBQUVoQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBLGFBQWE7O0FBRWI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUEsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQztBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTs7QUFFQSxXQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxZQUFZLFNBQVM7QUFDckI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTs7QUFFWjtBQUNBO0FBQ0E7QUFDQSxTQUFTLE9BQU87QUFDaEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLGdCQUFnQjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsa0RBQWtELDBCQUEwQjtBQUM1RTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFdBQVcsZ0JBQWdCO0FBQzNCO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQSxxQkFBcUI7QUFDckI7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksZ0JBQWdCO0FBQzVCO0FBQ0E7O0FBRUEsOENBQThDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTs7QUFFQSxTQUFTLGdCQUFnQjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtB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RTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOzs7OztBQUtGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7Ozs7QUFLRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQix1QkFBdUI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQix1QkFBdUI7QUFDekM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlCQUFpQix1QkFBdUI7QUFDeEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7Ozs7O0FBS0Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSxrQ0FBa0M7QUFDbEM7QUFDQTs7QUFFQSxLQUFLO0FBQ0w7O0FBRUEsS0FBSztBQUNMO0FBQ0E7QUFDQSxNQUFNO0FBQ047O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0EsWUFBWSxTQUFTO0FBQ3JCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOzs7OztBQUtGOzs7QUFHQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsdUNBQXVDO0FBQ3ZDO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwrQ0FBK0M7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw0Q0FBNEM7QUFDNUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsRUFBRTs7QUFFRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixvQ0FBb0M7O0FBRXBEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSxjQUFjOztBQUVkOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUosR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSixHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVB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RUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLDJCQUEyQjs7QUFFM0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQSxzQkFBc0I7QUFDdEIsMkJBQTJCOztBQUUzQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFROztBQUVSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RDtBQUN2RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTTtBQUNOOztBQUVBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7O0FBRUEsb0RBQW9EO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx1QkFBdUI7QUFDbkMsWUFBWSx3QkFBd0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7Ozs7O0FBS0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEMsY0FBYyx1Q0FBdUM7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7Ozs7QUFLRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBLEVBQUU7Ozs7O0FBS0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSTtBQUNKOztBQUVBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscURBQXFEO0FBQ3JEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9CQUFvQjs7QUFFcEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7QUFDSjtBQUNBLEVBQUU7O0FBRUY7QUFDQSxlQUFlLHFEQUFxRDtBQUNwRTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOzs7QUFHRjtBQUNBLGVBQWUsa0NBQWtDO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsR0FBRztBQUNILEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOzs7OztBQUtGOztBQUVBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBLEVBQUU7QUFDRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0Es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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUN0S0Q7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUNqRUQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNq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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDbExEO0FBQ0E7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDaEtEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDOUdEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0Q7QUFDdEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRDtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQzlMRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUN6RUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQzVHRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQy9ERDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3pGRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3RGRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUN4RkQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDcEdEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsZ0NBQWdDO0FBQ2hDLCtCQUErQjtBQUMvQiwrQkFBK0I7QUFDL0IsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RDtBQUN6RDtBQUNBLDBEQUEwRDtBQUMxRDtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckMsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDcEhEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUM5RUQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDMUVEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUM5RUQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQzlFRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUMxRUQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQzlFRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDOUVEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUM5RUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUM5RUQ7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3RIRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3hIRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3hIRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3hIRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUN4RkQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUMzRUQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUMzSEQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUN0SUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFD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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDdEhEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3JGRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFj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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUN2SUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2REFBNkQ7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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QyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ2hHRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQzVGRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsS0FBSztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQzlHRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDck5EO0FBQ0E7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUN0RkQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFF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QTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUMvSEQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUMzRUQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FB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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ2pMRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUM1RkQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDaEVEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQzdERDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDMUZEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FB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QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3QkFBd0IseUJBQXlCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsWUFBWTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdEO0FBQ2hELHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLElBQUk7QUFDeEI7QUFDQTs7QUFFQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3R0FBd0csSUFBSSx3QkFBd0IsSUFBSSx1REFBdUQsSUFBSTtBQUNuTSxxRUFBcUUsSUFBSTtBQUN6RSw0QkFBNEI7QUFDNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsMkNBQTJDLFlBQVk7QUFDdkQ7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLFlBQVk7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNENBQTRDLElBQUk7O0FBRWhEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsa0NBQWtDO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isb0JBQW9CO0FBQzVDO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFCQUFxQixFQUFFO0FBQ3ZCLHFCQUFxQixFQUFFO0FBQ3ZCLDBCQUEwQixFQUFFO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixJQUFJO0FBQzVCLHdCQUF3QixJQUFJO0FBQzVCLDZCQUE2QixJQUFJO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLElBQUk7QUFDNUM7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE1BQU0sd0VBQXdFLE1BQU0sbUJBQW1CLE1BQU0scUJBQXFCLE1BQU0sRUFBRSxJQUFJO0FBQ2pLOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw4Q0FBOEM7QUFDOUM7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsY0FBYztBQUNsQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGlCQUFpQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsUUFBUTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsUUFBUTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFFBQVE7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFFBQVE7QUFDNUI7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFFBQVE7QUFDNUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx3QkFBd0IsT0FBTztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLE9BQU87QUFDM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLE9BQU87QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0I7QUFDcEIsMkJBQTJCO0FBQzNCOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixVQUFVO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFFBQWE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLFNBQU87QUFDeEMsZ0JBQWdCLDhFQUFlLElBQVcsT0FBTyxDQUFDO0FBQ2xEO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLEVBQUUsSUFBSSxFQUFFO0FBQ3BDO0FBQ0EsNEJBQTRCLEVBQUUsSUFBSSxFQUFFO0FBQ3BDO0FBQ0E7QUFDQSxxQ0FBcUMsRUFBRTtBQUN2QywrQkFBK0IsRUFBRTtBQUNqQyxpQ0FBaUMsRUFBRTtBQUNuQywrQkFBK0IsRUFBRTtBQUNqQyw2QkFBNkIsRUFBRSxJQUFJLEVBQUU7QUFDckMsNEJBQTRCLEVBQUU7QUFDOUIsbUNBQW1DLEdBQUc7QUFDdEMsNkJBQTZCLEVBQUU7QUFDL0IsK0JBQStCLEVBQUUsSUFBSSxFQUFFO0FBQ3ZDLDhCQUE4QixFQUFFLElBQUksRUFBRTtBQUN0Qyw0QkFBNEIsRUFBRTtBQUM5QiwyQkFBMkIsRUFBRTtBQUM3Qix5QkFBeUIsRUFBRTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCxJQUFJLDBEQUEwRCxJQUFJLHFFQUFxRSxFQUFFO0FBQ2pNO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHlDQUF5QyxPQUFPO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsT0FBTztBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLCtCQUErQjtBQUNuRDtBQUNBOztBQUVBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsY0FBYztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsZ0JBQWdCO0FBQ3BDO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxtQ0FBbUMsaUJBQWlCO0FBQ3BEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFVBQVU7QUFDVjtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0JBQW9CO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLGNBQWM7QUFDbEM7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixTQUFTO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCO0FBQ2xCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDRHQUE0RztBQUM1RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsaUJBQWlCO0FBQ3JDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsdUJBQXVCO0FBQzNDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxzQkFBc0I7QUFDMUQ7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0Msc0JBQXNCO0FBQzFEO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esd0JBQXdCO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsT0FBTztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFDQUFxQyxPQUFPO0FBQzVDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsT0FBTztBQUM1QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxPQUFPO0FBQzVDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLE9BQU87QUFDNUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxPQUFPO0FBQzVDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQ0FBcUMsT0FBTztBQUM1QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5QkFBeUIsbUJBQW1CO0FBQzVDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHNCQUFzQixtQkFBbUI7QUFDekM7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxvQkFBb0IsUUFBUTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsT0FBTztBQUMzQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3BqTEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixzQkFBc0I7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNDQUFzQzs7QUFFdEM7QUFDQTtBQUNBOztBQUVBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7Ozs7Ozs7Ozs7O0FDdkw3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxNQUFNLElBQTBDO0FBQ2hEO0FBQ0EsSUFBSSxpQ0FBTyxDQUFDLHlFQUFRLENBQUMsb0NBQUUsT0FBTztBQUFBO0FBQUE7QUFBQSxrR0FBQztBQUMvQixJQUFJLEtBQUssRUFxQk47QUFDSCxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxlQUFlO0FBQ3RCLFdBQVcsV0FBVyxPQUFPO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQixvQkFBb0I7QUFDcEIsbUJBQW1CO0FBQ25CLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QixlQUFlLFFBQVE7QUFDdkI7QUFDQSxpQkFBaUIsUUFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHdCQUF3QixpQkFBaUI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHVDQUF1QyxPQUFPO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQyxPQUFPO0FBQ3REOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLDBDQUEwQztBQUMxQztBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxvQkFBb0IseUJBQXlCO0FBQzdDOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVAsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQSxzQkFBc0IsMEJBQTBCO0FBQ2hEOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLGdDQUFnQztBQUNoQyxRQUFRO0FBQ1I7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFVBQVU7QUFDVixrQ0FBa0M7QUFDbEM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE1BQU07QUFDcEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsTUFBTTtBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUEsb0JBQW9CLGlCQUFpQjtBQUNyQzs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLGlCQUFpQjtBQUNyQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSw2QkFBNkI7QUFDN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkJBQTJCO0FBQzNCOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0IsaUJBQWlCO0FBQ3pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsTUFBTTtBQUNOOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHNCQUFzQix3QkFBd0I7QUFDOUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHNCQUFzQixzQkFBc0I7QUFDNUM7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0I7QUFDdEI7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHNCQUFzQjtBQUN0Qjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsaUJBQWlCO0FBQ3JDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVDQUF1Qzs7QUFFdkM7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsc0JBQXNCO0FBQ3RCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxzQkFBc0IsaUJBQWlCO0FBQ3ZDO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHNCQUFzQixpQkFBaUI7QUFDdkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBLE9BQU87O0FBRVA7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxrQ0FBa0MsUUFBUTtBQUMxQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsNEJBQTRCLEdBQUcsUUFBUTs7QUFFdkM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixpQkFBaUI7QUFDckM7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsK0JBQStCOztBQUUvQjtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsb0JBQW9CLDZCQUE2QjtBQUNqRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7O0FBRXJDO0FBQ0EsK0NBQStDLFFBQVE7QUFDdkQ7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBOztBQUVBLG9CQUFvQixzQkFBc0I7QUFDMUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxvQkFBb0Isc0JBQXNCO0FBQzFDOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1QkFBdUIsZ0NBQWdDO0FBQ3ZEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQzs7QUFFQTtBQUNBLGdDQUFnQzs7QUFFaEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGdDQUFnQzs7QUFFaEMsd0NBQXdDLE9BQU87QUFDL0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7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QUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUEsaUJBQWlCLE1BQU07QUFDdkI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdDQUFnQywwQkFBMEI7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmLGNBQWM7QUFDZDtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMERBQTBEO0FBQzFEO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOERBQThELGVBQWU7QUFDN0UsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDBDQUEwQztBQUMxQyxVQUFVLHlCQUF5QjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFD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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0VBQWtFLFlBQVk7QUFDOUU7QUFDQTtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEM7QUFDNUM7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLGNBQWMsTUFBTSxHQUFHLElBQUk7QUFDM0IsWUFBWSxNQUFNLEVBQUUsSUFBSTtBQUN4Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtGQUFrRiw2REFBNkQ7QUFDL0k7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBFQUEwRTtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtGQUFrRiw2REFBNkQ7QUFDL0k7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILG1DQUFtQztBQUNuQztBQUNBO0FBQ0EseUZBQXlGO0FBQ3pGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQSwyRkFBMkY7QUFDM0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQztBQUNBO0FBQ0EsMkZBQTJGO0FBQzNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzQ0FBc0M7QUFDdEMsVUFBVSx1QkFBdUI7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRyxJQUFJLGdDQUFnQztBQUN2QyxXQUFXO0FBQ1g7O0FBRUEsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDO0FBQzNDLFVBQVUsK0NBQStDO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtELHVFQUF1RTtBQUN6SDtB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Q0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLCtEQUErRDtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbURBQW1ELElBQUk7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCxJQUFJO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtRkFBbUYsZ0JBQWdCO0FBQ25HO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSwwREFBMEQ7QUFDMUQsVUFBVSx5QkFBeUI7QUFDbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtGQUFrRiw2REFBNkQ7QUFDL0k7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLGNBQWM7QUFDakQsVUFBVSwrQkFBK0I7QUFDekM7QUFDQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBLHVEQUF1RDtBQUN2RDtBQUNBO0FBQ0Esd0NBQXdDLG1CQUFtQjtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDhDQUE4QztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFpRTtBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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aUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUVBQXlFLGVBQWU7QUFDeEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwrQ0FBK0M7QUFDL0M7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFD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cUM7QUFDeEM7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EseUNBQXlDLHlCQUF5QjtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLE1BQU07QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsSUFBSTtBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxlQUFlO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtDQUFrQyxvQ0FBb0MsSUFBSTtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPO0FBQ1AsTUFBTTtBQUNOLHdDQUF3QyxtQkFBbUI7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7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QUNBO0FBQ0E7QUFDQTtBQUNBLGdGQUFnRjtBQUNoRjtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDVmtDO0FBQzZCO0FBQ2hEO0FBQ2YsZUFBZSxzREFBTztBQUN0QjtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsU0FBUyxxRUFBcUI7QUFDOUI7Ozs7Ozs7Ozs7Ozs7OztBQ1RlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0FDTmtDO0FBQ25CO0FBQ2YsTUFBTSxzREFBTztBQUNiO0FBQ0E7QUFDQTtBQUNBLFFBQVEsc0RBQU87QUFDZjtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNWa0M7QUFDUztBQUM1QjtBQUNmLFlBQVksMkRBQVc7QUFDdkIsU0FBUyxzREFBTztBQUNoQjs7Ozs7Ozs7Ozs7Ozs7O0FDTGU7QUFDZjs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7Ozs7O0FDUnFEO0FBQ3RDO0FBQ2Y7QUFDQSxvQ0FBb0MsZ0VBQWdCO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBLHNGQUFzRixnRUFBZ0I7QUFDdEciLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9jb21waWxlci1jb3JlL2Rpc3QvY29tcGlsZXItY29yZS5lc20tYnVuZGxlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZS9jb21waWxlci1kb20vZGlzdC9jb21waWxlci1kb20uZXNtLWJ1bmRsZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvZGV2dG9vbHMtYXBpL2xpYi9lc20vY29uc3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvZGV2dG9vbHMtYXBpL2xpYi9lc20vZW52LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2RldnRvb2xzLWFwaS9saWIvZXNtL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2RldnRvb2xzLWFwaS9saWIvZXNtL3Byb3h5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL2RldnRvb2xzLWFwaS9saWIvZXNtL3RpbWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvcmVhY3Rpdml0eS9kaXN0L3JlYWN0aXZpdHkuZXNtLWJ1bmRsZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvcnVudGltZS1jb3JlL2Rpc3QvcnVudGltZS1jb3JlLmVzbS1idW5kbGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlL3J1bnRpbWUtZG9tL2Rpc3QvcnVudGltZS1kb20uZXNtLWJ1bmRsZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWUvc2hhcmVkL2Rpc3Qvc2hhcmVkLmVzbS1idW5kbGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlZm9ybS9tdWx0aXNlbGVjdC9kaXN0L211bHRpc2VsZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9hcGV4Y2hhcnRzL2Rpc3QvYXBleGNoYXJ0cy5jb21tb24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYWRhcHRlcnMveGhyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYXhpb3MuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jYW5jZWwvQ2FuY2VsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL0NhbmNlbFRva2VuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL2lzQ2FuY2VsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9BeGlvcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvSW50ZXJjZXB0b3JNYW5hZ2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9idWlsZEZ1bGxQYXRoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9jcmVhdGVFcnJvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvZGlzcGF0Y2hSZXF1ZXN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9lbmhhbmNlRXJyb3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL21lcmdlQ29uZmlnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9zZXR0bGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL3RyYW5zZm9ybURhdGEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9kZWZhdWx0cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2Vudi9kYXRhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9iaW5kLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9idWlsZFVSTC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvY29tYmluZVVSTHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2Nvb2tpZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2lzQWJzb2x1dGVVUkwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2lzQXhpb3NFcnJvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNVUkxTYW1lT3JpZ2luLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9ub3JtYWxpemVIZWFkZXJOYW1lLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9wYXJzZUhlYWRlcnMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3NwcmVhZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvdmFsaWRhdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9hZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9jaXBoZXItY29yZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL2NvcmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9lbmMtYmFzZTY0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvZW5jLWJhc2U2NHVybC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL2VuYy11dGYxNi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL2V2cGtkZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL2Zvcm1hdC1oZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9obWFjLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9saWItdHlwZWRhcnJheXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9tZDUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9tb2RlLWNmYi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL21vZGUtY3RyLWdsYWRtYW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9tb2RlLWN0ci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL21vZGUtZWNiLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvbW9kZS1vZmIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9wYWQtYW5zaXg5MjMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9wYWQtaXNvMTAxMjYuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9wYWQtaXNvOTc5NzEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9wYWQtbm9wYWRkaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvcGFkLXplcm9wYWRkaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvcGJrZGYyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvcmFiYml0LWxlZ2FjeS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL3JhYmJpdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL3JjNC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL3JpcGVtZDE2MC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3J5cHRvLWpzL3NoYTEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9zaGEyMjQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9zaGEyNTYuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1qcy9zaGEzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvc2hhMzg0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvc2hhNTEyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMvdHJpcGxlZGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tanMveDY0LWNvcmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWVwaWMvdnVlLWRhdGVwaWNrZXIvZGlzdC9tYWluLmNzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZWZvcm0vbXVsdGlzZWxlY3QvdGhlbWVzL2RlZmF1bHQuY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL2FkZExlYWRpbmdaZXJvcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvYXNzaWduL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9jbG9uZU9iamVjdC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvZGVmYXVsdExvY2FsZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvZGVmYXVsdE9wdGlvbnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL2Zvcm1hdC9mb3JtYXR0ZXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9mb3JtYXQvbGlnaHRGb3JtYXR0ZXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9mb3JtYXQvbG9uZ0Zvcm1hdHRlcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL2dldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL2dldFVUQ0RheU9mWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvZ2V0VVRDSVNPV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvZ2V0VVRDSVNPV2Vla1llYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL2dldFVUQ1dlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL2dldFVUQ1dlZWtZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9wcm90ZWN0ZWRUb2tlbnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvcm91bmRpbmdNZXRob2RzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9zZXRVVENEYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL3NldFVUQ0lTT0RheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvc2V0VVRDSVNPV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvc2V0VVRDV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvc3RhcnRPZlVUQ0lTT1dlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL3N0YXJ0T2ZVVENJU09XZWVrWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvc3RhcnRPZlVUQ1dlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL3N0YXJ0T2ZVVENXZWVrWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYWRkL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYWRkQnVzaW5lc3NEYXlzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYWRkRGF5cy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2FkZEhvdXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYWRkSVNPV2Vla1llYXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYWRkTWlsbGlzZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYWRkTWludXRlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2FkZE1vbnRocy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2FkZFF1YXJ0ZXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYWRkU2Vjb25kcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2FkZFdlZWtzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYWRkWWVhcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9hcmVJbnRlcnZhbHNPdmVybGFwcGluZy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2NsYW1wL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vY2xvc2VzdEluZGV4VG8vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9jbG9zZXN0VG8vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9jb21wYXJlQXNjL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vY29tcGFyZURlc2MvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9jb25zdGFudHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9kYXlzVG9XZWVrcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJbkJ1c2luZXNzRGF5cy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJbkNhbGVuZGFySVNPV2Vla1llYXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluQ2FsZW5kYXJJU09XZWVrcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJbkNhbGVuZGFyTW9udGhzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluQ2FsZW5kYXJRdWFydGVycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJbkNhbGVuZGFyV2Vla3MvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9kaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluRGF5cy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJbkhvdXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluSVNPV2Vla1llYXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluTWludXRlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJbk1vbnRocy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJblF1YXJ0ZXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluU2Vjb25kcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2RpZmZlcmVuY2VJbldlZWtzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZGlmZmVyZW5jZUluWWVhcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lYWNoRGF5T2ZJbnRlcnZhbC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VhY2hIb3VyT2ZJbnRlcnZhbC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VhY2hNaW51dGVPZkludGVydmFsL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZWFjaE1vbnRoT2ZJbnRlcnZhbC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VhY2hRdWFydGVyT2ZJbnRlcnZhbC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VhY2hXZWVrT2ZJbnRlcnZhbC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VhY2hXZWVrZW5kT2ZJbnRlcnZhbC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VhY2hXZWVrZW5kT2ZNb250aC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VhY2hXZWVrZW5kT2ZZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZWFjaFllYXJPZkludGVydmFsL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZW5kT2ZEYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lbmRPZkRlY2FkZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VuZE9mSG91ci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VuZE9mSVNPV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VuZE9mSVNPV2Vla1llYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lbmRPZk1pbnV0ZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VuZE9mTW9udGgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lbmRPZlF1YXJ0ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lbmRPZlNlY29uZC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2VuZE9mVG9kYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9lbmRPZlRvbW9ycm93L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZW5kT2ZXZWVrL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZW5kT2ZZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZW5kT2ZZZXN0ZXJkYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9mb3JtYXQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9mb3JtYXREaXN0YW5jZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2Zvcm1hdERpc3RhbmNlU3RyaWN0L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZm9ybWF0RGlzdGFuY2VUb05vdy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2Zvcm1hdERpc3RhbmNlVG9Ob3dTdHJpY3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9mb3JtYXREdXJhdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2Zvcm1hdElTTy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2Zvcm1hdElTTzkwNzUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9mb3JtYXRJU09EdXJhdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2Zvcm1hdFJGQzMzMzkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9mb3JtYXRSRkM3MjMxL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZm9ybWF0UmVsYXRpdmUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9mcm9tVW5peFRpbWUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXREYXRlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0RGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0RGF5T2ZZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0RGF5c0luTW9udGgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXREYXlzSW5ZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0RGVjYWRlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0RGVmYXVsdE9wdGlvbnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXRIb3Vycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldElTT0RheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldElTT1dlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXRJU09XZWVrWWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldElTT1dlZWtzSW5ZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0TWlsbGlzZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0TWludXRlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldE1vbnRoL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0T3ZlcmxhcHBpbmdEYXlzSW5JbnRlcnZhbHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXRRdWFydGVyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0U2Vjb25kcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldFRpbWUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXRVbml4VGltZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldFdlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9nZXRXZWVrT2ZNb250aC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2dldFdlZWtZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0V2Vla3NJbk1vbnRoL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vZ2V0WWVhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2hvdXJzVG9NaWxsaXNlY29uZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9ob3Vyc1RvTWludXRlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2hvdXJzVG9TZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pbnRlcnZhbFRvRHVyYXRpb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pbnRsRm9ybWF0L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaW50bEZvcm1hdERpc3RhbmNlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNBZnRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzQmVmb3JlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNEYXRlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNFcXVhbC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzRXhpc3RzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNGaXJzdERheU9mTW9udGgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc0ZyaWRheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzRnV0dXJlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNMYXN0RGF5T2ZNb250aC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzTGVhcFllYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc01hdGNoL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNNb25kYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1Bhc3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1NhbWVEYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1NhbWVIb3VyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNTYW1lSVNPV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzU2FtZUlTT1dlZWtZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNTYW1lTWludXRlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNTYW1lTW9udGgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1NhbWVRdWFydGVyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNTYW1lU2Vjb25kL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNTYW1lV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzU2FtZVllYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1NhdHVyZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNTdW5kYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1RoaXNIb3VyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNUaGlzSVNPV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzVGhpc01pbnV0ZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzVGhpc01vbnRoL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNUaGlzUXVhcnRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzVGhpc1NlY29uZC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzVGhpc1dlZWsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1RoaXNZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNUaHVyc2RheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzVG9kYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9pc1RvbW9ycm93L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNUdWVzZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNWYWxpZC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzV2VkbmVzZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNXZWVrZW5kL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vaXNXaXRoaW5JbnRlcnZhbC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzWWVzdGVyZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbGFzdERheU9mRGVjYWRlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbGFzdERheU9mSVNPV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xhc3REYXlPZklTT1dlZWtZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbGFzdERheU9mTW9udGgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9sYXN0RGF5T2ZRdWFydGVyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbGFzdERheU9mV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xhc3REYXlPZlllYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9saWdodEZvcm1hdC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xvY2FsZS9fbGliL2J1aWxkRm9ybWF0TG9uZ0ZuL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbG9jYWxlL19saWIvYnVpbGRMb2NhbGl6ZUZuL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbG9jYWxlL19saWIvYnVpbGRNYXRjaEZuL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbG9jYWxlL19saWIvYnVpbGRNYXRjaFBhdHRlcm5Gbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xvY2FsZS9lbi1VUy9fbGliL2Zvcm1hdERpc3RhbmNlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbG9jYWxlL2VuLVVTL19saWIvZm9ybWF0TG9uZy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xvY2FsZS9lbi1VUy9fbGliL2Zvcm1hdFJlbGF0aXZlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbG9jYWxlL2VuLVVTL19saWIvbG9jYWxpemUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9sb2NhbGUvZW4tVVMvX2xpYi9tYXRjaC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xvY2FsZS9lbi1VUy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL21heC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL21pbGxpc2Vjb25kcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL21pbGxpc2Vjb25kc1RvSG91cnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9taWxsaXNlY29uZHNUb01pbnV0ZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9taWxsaXNlY29uZHNUb1NlY29uZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9taW4vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9taW51dGVzVG9Ib3Vycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL21pbnV0ZXNUb01pbGxpc2Vjb25kcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL21pbnV0ZXNUb1NlY29uZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9tb250aHNUb1F1YXJ0ZXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbW9udGhzVG9ZZWFycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL25leHREYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9uZXh0RnJpZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbmV4dE1vbmRheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL25leHRTYXR1cmRheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL25leHRTdW5kYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9uZXh0VGh1cnNkYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9uZXh0VHVlc2RheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL25leHRXZWRuZXNkYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL1BhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvU2V0dGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvQU1QTU1pZG5pZ2h0UGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0FNUE1QYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvRGF0ZVBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9EYXlPZlllYXJQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvRGF5UGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0RheVBlcmlvZFBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9FcmFQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvRXh0ZW5kZWRZZWFyUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0ZyYWN0aW9uT2ZTZWNvbmRQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvSG91cjBUbzExUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0hvdXIwdG8yM1BhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9Ib3VyMVRvMjRQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvSG91cjF0bzEyUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0lTT0RheVBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9JU09UaW1lem9uZVBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9JU09UaW1lem9uZVdpdGhaUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0lTT1dlZWtQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvSVNPV2Vla1llYXJQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvTG9jYWxEYXlQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvTG9jYWxXZWVrUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0xvY2FsV2Vla1llYXJQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvTWludXRlUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL01vbnRoUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL1F1YXJ0ZXJQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvU2Vjb25kUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL1N0YW5kQWxvbmVMb2NhbERheVBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9TdGFuZEFsb25lTW9udGhQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvU3RhbmRBbG9uZVF1YXJ0ZXJQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvVGltZXN0YW1wTWlsbGlzZWNvbmRzUGFyc2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL1RpbWVzdGFtcFNlY29uZHNQYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvWWVhclBhcnNlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlSVNPL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2VKU09OL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcHJldmlvdXNEYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wcmV2aW91c0ZyaWRheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3ByZXZpb3VzTW9uZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcHJldmlvdXNTYXR1cmRheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3ByZXZpb3VzU3VuZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcHJldmlvdXNUaHVyc2RheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3ByZXZpb3VzVHVlc2RheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3ByZXZpb3VzV2VkbmVzZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcXVhcnRlcnNUb01vbnRocy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3F1YXJ0ZXJzVG9ZZWFycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3JvdW5kVG9OZWFyZXN0TWludXRlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NlY29uZHNUb0hvdXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2Vjb25kc1RvTWlsbGlzZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2Vjb25kc1RvTWludXRlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NldC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NldERhdGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zZXREYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zZXREYXlPZlllYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zZXREZWZhdWx0T3B0aW9ucy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NldEhvdXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2V0SVNPRGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2V0SVNPV2Vlay9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NldElTT1dlZWtZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2V0TWlsbGlzZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2V0TWludXRlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NldE1vbnRoL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2V0UXVhcnRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3NldFNlY29uZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zZXRXZWVrL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc2V0V2Vla1llYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zZXRZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3RhcnRPZkRheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N0YXJ0T2ZEZWNhZGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdGFydE9mSG91ci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N0YXJ0T2ZJU09XZWVrL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3RhcnRPZklTT1dlZWtZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3RhcnRPZk1pbnV0ZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N0YXJ0T2ZNb250aC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N0YXJ0T2ZRdWFydGVyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3RhcnRPZlNlY29uZC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N0YXJ0T2ZUb2RheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N0YXJ0T2ZUb21vcnJvdy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N0YXJ0T2ZXZWVrL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3RhcnRPZldlZWtZZWFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3RhcnRPZlllYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdGFydE9mWWVzdGVyZGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3ViL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3ViQnVzaW5lc3NEYXlzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3ViRGF5cy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N1YkhvdXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3ViSVNPV2Vla1llYXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3ViTWlsbGlzZWNvbmRzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3ViTWludXRlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N1Yk1vbnRocy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N1YlF1YXJ0ZXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3ViU2Vjb25kcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3N1YldlZWtzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vc3ViWWVhcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS90b0RhdGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS93ZWVrc1RvRGF5cy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3llYXJzVG9Nb250aHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS95ZWFyc1RvUXVhcnRlcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19EYXRhVmlldy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19IYXNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX0xpc3RDYWNoZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19NYXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fTWFwQ2FjaGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fUHJvbWlzZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fU2V0Q2FjaGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fU3RhY2suanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fU3ltYm9sLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1VpbnQ4QXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fV2Vha01hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUVhY2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlMaWtlS2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheU1hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVB1c2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlTb21lLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FzY2lpVG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NpZ25WYWx1ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NvY0luZGV4T2YuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUFzc2lnbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduSW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUFzc2lnblZhbHVlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VDbGFtcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQ2xvbmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUNvbmZvcm1zVG8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0QWxsS2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0VGFnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VHdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNBcmd1bWVudHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzQXJyYXlCdWZmZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzRGF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNFcXVhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNFcXVhbERlZXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzTWFwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc01hdGNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc05hdGl2ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNSZWdFeHAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzU2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc1R5cGVkQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUtleXNJbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVRpbWVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VUb1N0cmluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVHJpbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5hcnkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVZhbHVlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jYWNoZUhhcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZUFycmF5QnVmZmVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lQnVmZmVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lRGF0YVZpZXcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVSZWdFeHAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVTeW1ib2wuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVUeXBlZEFycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcHlBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5T2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcHlTeW1ib2xzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcHlTeW1ib2xzSW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29yZUpzRGF0YS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2RlZmluZVByb3BlcnR5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2VxdWFsQXJyYXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2VxdWFsQnlUYWcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZXF1YWxPYmplY3RzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2ZyZWVHbG9iYWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0QWxsS2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRBbGxLZXlzSW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0TWFwRGF0YS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRNYXRjaERhdGEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0TmF0aXZlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFByb3RvdHlwZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRSYXdUYWcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0U3ltYm9scy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRTeW1ib2xzSW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0VGFnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFZhbHVlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc1VuaWNvZGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaENsZWFyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hEZWxldGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaEdldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoSGFzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hTZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faW5pdENsb25lQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faW5pdENsb25lQnlUYWcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faW5pdENsb25lT2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzSW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNLZXlhYmxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzTWFza2FibGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNNYXNrZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNQcm90b3R5cGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNTdHJpY3RDb21wYXJhYmxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2l0ZXJhdG9yVG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVDbGVhci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVEZWxldGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlR2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2xpc3RDYWNoZUhhcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVTZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVDbGVhci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZURlbGV0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUdldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUhhcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZVNldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25hdGl2ZUNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVLZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25hdGl2ZUtleXNJbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19ub2RlVXRpbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vYmplY3RUb1N0cmluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vdmVyQXJnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3Jvb3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0Q2FjaGVBZGQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0Q2FjaGVIYXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0VG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0NsZWFyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrRGVsZXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrR2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrSGFzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrU2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0cmluZ1RvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fdG9Tb3VyY2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fdHJpbW1lZEVuZEluZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3VuaWNvZGVUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvY2FzdEFycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvY2xvbmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9jbG9uZURlZXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9jbG9uZURlZXBXaXRoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvY2xvbmVXaXRoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvY29uZm9ybXNUby5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2VxLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZ3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9ndGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FyZ3VtZW50cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5QnVmZmVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheUxpa2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5TGlrZU9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQm9vbGVhbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQnVmZmVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNEYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNFbGVtZW50LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNFbXB0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRXF1YWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0VxdWFsV2l0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRXJyb3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0Zpbml0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0ludGVnZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0xlbmd0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzTWFwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNNYXRjaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzTWF0Y2hXaXRoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNOYU4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc05hdGl2ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzTmlsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNOdWxsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNOdW1iZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc09iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0TGlrZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzUGxhaW5PYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1JlZ0V4cC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU2FmZUludGVnZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1NldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU3RyaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNTeW1ib2wuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1R5cGVkQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1VuZGVmaW5lZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzV2Vha01hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzV2Vha1NldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2tleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9rZXlzSW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9sYW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9sdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9zdHViQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9zdHViRmFsc2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9GaW5pdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b0ludGVnZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b0xlbmd0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvTnVtYmVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9QbGFpbk9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvU2FmZUludGVnZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b1N0cmluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3ZhbHVlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1kei5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1rdy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1seS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1tYS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1zYS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci10bi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hei5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibi1iZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iby5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ici5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9icy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jYS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jdi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jeS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kYS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS1hdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS1jaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kdi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1hdS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1jYS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1nYi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1uei5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1zZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lby5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy1kby5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy1teC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy11cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ldS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mYS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9maS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9maWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZm8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnItY2EuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnItY2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2EuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2wuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ29tLWRldmEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ29tLWxhdG4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ3UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaGkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHktYW0uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXQtY2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvamEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvanYuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva2EuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva2suanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva20uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva28uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3kuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbGIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbG8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbHYuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWsuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXMtbXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmwtYmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbm4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvb2MtbG5jLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3BhLWluLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3BsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3B0LWJyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3B0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3JvLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3J1LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NpLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NrLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NxLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NyLWN5cmwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3MuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3YuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3cuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGV0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RrLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RsLXBoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RsaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90emwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHptLWxhdG4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHptLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VnLWNuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VrLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3V6LWxhdG4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXouanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdmkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUveC1wc2V1ZG8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUveW8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtY24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtaGsuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtbW8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtdHcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9tb21lbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Byb2Nlc3MvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc2VsZWN0Mi9kaXN0L2pzL3NlbGVjdDIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWVwaWMvdnVlLWRhdGVwaWNrZXIvZGlzdC9tYWluLmNzcz8zYmVjIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlZm9ybS9tdWx0aXNlbGVjdC90aGVtZXMvZGVmYXVsdC5jc3M/ZDdiZSIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3N2Zy12dWUzL2Rpc3Qvc3ZnLXZ1ZS5lc20uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWVmb3JtL211bHRpc2VsZWN0L3RoZW1lcy9kZWZhdWx0LmNzcz8wYWIzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUvZGlzdC92dWUuZXNtLWJ1bmRsZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZTMtYXBleGNoYXJ0cy9kaXN0L3Z1ZTMtYXBleGNoYXJ0cy5jb21tb24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZTMtcmFkaWFsLXByb2dyZXNzL2Rpc3QvUmFkaWFsUHJvZ3Jlc3NCYXIuZXNtLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUzLXNtb290aC1zY3JvbGwvZGlzdC92dWUtc21vb3RoLXNjcm9sbC5taW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZXgvZGlzdC92dWV4LmVzbS1idW5kbGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AaGVhZGxlc3N1aS92dWUvZGlzdC9oZWFkbGVzc3VpLmRldi5janMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BoZWFkbGVzc3VpL3Z1ZS9kaXN0L2luZGV4LmNqcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZXBpYy92dWUtZGF0ZXBpY2tlci9kaXN0L3Z1ZS1kYXRlcGlja2VyLnVtZC5janMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWV1c2UvY29yZS9pbmRleC5janMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWV1c2UvY29yZS9ub2RlX21vZHVsZXMvQHZ1ZXVzZS9zaGFyZWQvaW5kZXguY2pzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVldXNlL2NvcmUvbm9kZV9tb2R1bGVzL3Z1ZS1kZW1pL2xpYi9pbmRleC5janMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FycmF5TGlrZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2suanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2dldFByb3RvdHlwZU9mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9QcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvUHJvcGVydHlLZXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNTdHJpbmcsIGh5cGhlbmF0ZSwgTk9PUCwgZXh0ZW5kLCBpc09iamVjdCwgTk8sIGlzQXJyYXksIG1ha2VNYXAsIGlzU3ltYm9sLCBFTVBUWV9PQkosIGNhcGl0YWxpemUsIGNhbWVsaXplIGFzIGNhbWVsaXplJDEsIFBhdGNoRmxhZ05hbWVzLCBzbG90RmxhZ3NUZXh0LCBpc09uLCBpc0J1aWx0SW5EaXJlY3RpdmUsIGlzUmVzZXJ2ZWRQcm9wLCB0b0hhbmRsZXJLZXkgfSBmcm9tICdAdnVlL3NoYXJlZCc7XG5leHBvcnQgeyBnZW5lcmF0ZUNvZGVGcmFtZSB9IGZyb20gJ0B2dWUvc2hhcmVkJztcblxuZnVuY3Rpb24gZGVmYXVsdE9uRXJyb3IoZXJyb3IpIHtcclxuICAgIHRocm93IGVycm9yO1xyXG59XHJcbmZ1bmN0aW9uIGRlZmF1bHRPbldhcm4obXNnKSB7XHJcbiAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgY29uc29sZS53YXJuKGBbVnVlIHdhcm5dICR7bXNnLm1lc3NhZ2V9YCk7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlQ29tcGlsZXJFcnJvcihjb2RlLCBsb2MsIG1lc3NhZ2VzLCBhZGRpdGlvbmFsTWVzc2FnZSkge1xyXG4gICAgY29uc3QgbXNnID0gKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8ICF0cnVlXHJcbiAgICAgICAgPyAobWVzc2FnZXMgfHwgZXJyb3JNZXNzYWdlcylbY29kZV0gKyAoYWRkaXRpb25hbE1lc3NhZ2UgfHwgYGApXHJcbiAgICAgICAgOiBjb2RlO1xyXG4gICAgY29uc3QgZXJyb3IgPSBuZXcgU3ludGF4RXJyb3IoU3RyaW5nKG1zZykpO1xyXG4gICAgZXJyb3IuY29kZSA9IGNvZGU7XHJcbiAgICBlcnJvci5sb2MgPSBsb2M7XHJcbiAgICByZXR1cm4gZXJyb3I7XHJcbn1cclxuY29uc3QgZXJyb3JNZXNzYWdlcyA9IHtcclxuICAgIC8vIHBhcnNlIGVycm9yc1xyXG4gICAgWzAgLyogRXJyb3JDb2Rlcy5BQlJVUFRfQ0xPU0lOR19PRl9FTVBUWV9DT01NRU5UICovXTogJ0lsbGVnYWwgY29tbWVudC4nLFxyXG4gICAgWzEgLyogRXJyb3JDb2Rlcy5DREFUQV9JTl9IVE1MX0NPTlRFTlQgKi9dOiAnQ0RBVEEgc2VjdGlvbiBpcyBhbGxvd2VkIG9ubHkgaW4gWE1MIGNvbnRleHQuJyxcclxuICAgIFsyIC8qIEVycm9yQ29kZXMuRFVQTElDQVRFX0FUVFJJQlVURSAqL106ICdEdXBsaWNhdGUgYXR0cmlidXRlLicsXHJcbiAgICBbMyAvKiBFcnJvckNvZGVzLkVORF9UQUdfV0lUSF9BVFRSSUJVVEVTICovXTogJ0VuZCB0YWcgY2Fubm90IGhhdmUgYXR0cmlidXRlcy4nLFxyXG4gICAgWzQgLyogRXJyb3JDb2Rlcy5FTkRfVEFHX1dJVEhfVFJBSUxJTkdfU09MSURVUyAqL106IFwiSWxsZWdhbCAnLycgaW4gdGFncy5cIixcclxuICAgIFs1IC8qIEVycm9yQ29kZXMuRU9GX0JFRk9SRV9UQUdfTkFNRSAqL106ICdVbmV4cGVjdGVkIEVPRiBpbiB0YWcuJyxcclxuICAgIFs2IC8qIEVycm9yQ29kZXMuRU9GX0lOX0NEQVRBICovXTogJ1VuZXhwZWN0ZWQgRU9GIGluIENEQVRBIHNlY3Rpb24uJyxcclxuICAgIFs3IC8qIEVycm9yQ29kZXMuRU9GX0lOX0NPTU1FTlQgKi9dOiAnVW5leHBlY3RlZCBFT0YgaW4gY29tbWVudC4nLFxyXG4gICAgWzggLyogRXJyb3JDb2Rlcy5FT0ZfSU5fU0NSSVBUX0hUTUxfQ09NTUVOVF9MSUtFX1RFWFQgKi9dOiAnVW5leHBlY3RlZCBFT0YgaW4gc2NyaXB0LicsXHJcbiAgICBbOSAvKiBFcnJvckNvZGVzLkVPRl9JTl9UQUcgKi9dOiAnVW5leHBlY3RlZCBFT0YgaW4gdGFnLicsXHJcbiAgICBbMTAgLyogRXJyb3JDb2Rlcy5JTkNPUlJFQ1RMWV9DTE9TRURfQ09NTUVOVCAqL106ICdJbmNvcnJlY3RseSBjbG9zZWQgY29tbWVudC4nLFxyXG4gICAgWzExIC8qIEVycm9yQ29kZXMuSU5DT1JSRUNUTFlfT1BFTkVEX0NPTU1FTlQgKi9dOiAnSW5jb3JyZWN0bHkgb3BlbmVkIGNvbW1lbnQuJyxcclxuICAgIFsxMiAvKiBFcnJvckNvZGVzLklOVkFMSURfRklSU1RfQ0hBUkFDVEVSX09GX1RBR19OQU1FICovXTogXCJJbGxlZ2FsIHRhZyBuYW1lLiBVc2UgJyZsdDsnIHRvIHByaW50ICc8Jy5cIixcclxuICAgIFsxMyAvKiBFcnJvckNvZGVzLk1JU1NJTkdfQVRUUklCVVRFX1ZBTFVFICovXTogJ0F0dHJpYnV0ZSB2YWx1ZSB3YXMgZXhwZWN0ZWQuJyxcclxuICAgIFsxNCAvKiBFcnJvckNvZGVzLk1JU1NJTkdfRU5EX1RBR19OQU1FICovXTogJ0VuZCB0YWcgbmFtZSB3YXMgZXhwZWN0ZWQuJyxcclxuICAgIFsxNSAvKiBFcnJvckNvZGVzLk1JU1NJTkdfV0hJVEVTUEFDRV9CRVRXRUVOX0FUVFJJQlVURVMgKi9dOiAnV2hpdGVzcGFjZSB3YXMgZXhwZWN0ZWQuJyxcclxuICAgIFsxNiAvKiBFcnJvckNvZGVzLk5FU1RFRF9DT01NRU5UICovXTogXCJVbmV4cGVjdGVkICc8IS0tJyBpbiBjb21tZW50LlwiLFxyXG4gICAgWzE3IC8qIEVycm9yQ29kZXMuVU5FWFBFQ1RFRF9DSEFSQUNURVJfSU5fQVRUUklCVVRFX05BTUUgKi9dOiAnQXR0cmlidXRlIG5hbWUgY2Fubm90IGNvbnRhaW4gVSswMDIyIChcIiksIFUrMDAyNyAoXFwnKSwgYW5kIFUrMDAzQyAoPCkuJyxcclxuICAgIFsxOCAvKiBFcnJvckNvZGVzLlVORVhQRUNURURfQ0hBUkFDVEVSX0lOX1VOUVVPVEVEX0FUVFJJQlVURV9WQUxVRSAqL106ICdVbnF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUgY2Fubm90IGNvbnRhaW4gVSswMDIyIChcIiksIFUrMDAyNyAoXFwnKSwgVSswMDNDICg8KSwgVSswMDNEICg9KSwgYW5kIFUrMDA2MCAoYCkuJyxcclxuICAgIFsxOSAvKiBFcnJvckNvZGVzLlVORVhQRUNURURfRVFVQUxTX1NJR05fQkVGT1JFX0FUVFJJQlVURV9OQU1FICovXTogXCJBdHRyaWJ1dGUgbmFtZSBjYW5ub3Qgc3RhcnQgd2l0aCAnPScuXCIsXHJcbiAgICBbMjEgLyogRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX1FVRVNUSU9OX01BUktfSU5TVEVBRF9PRl9UQUdfTkFNRSAqL106IFwiJzw/JyBpcyBhbGxvd2VkIG9ubHkgaW4gWE1MIGNvbnRleHQuXCIsXHJcbiAgICBbMjAgLyogRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX05VTExfQ0hBUkFDVEVSICovXTogYFVuZXhwZWN0ZWQgbnVsbCBjaGFyYWN0ZXIuYCxcclxuICAgIFsyMiAvKiBFcnJvckNvZGVzLlVORVhQRUNURURfU09MSURVU19JTl9UQUcgKi9dOiBcIklsbGVnYWwgJy8nIGluIHRhZ3MuXCIsXHJcbiAgICAvLyBWdWUtc3BlY2lmaWMgcGFyc2UgZXJyb3JzXHJcbiAgICBbMjMgLyogRXJyb3JDb2Rlcy5YX0lOVkFMSURfRU5EX1RBRyAqL106ICdJbnZhbGlkIGVuZCB0YWcuJyxcclxuICAgIFsyNCAvKiBFcnJvckNvZGVzLlhfTUlTU0lOR19FTkRfVEFHICovXTogJ0VsZW1lbnQgaXMgbWlzc2luZyBlbmQgdGFnLicsXHJcbiAgICBbMjUgLyogRXJyb3JDb2Rlcy5YX01JU1NJTkdfSU5URVJQT0xBVElPTl9FTkQgKi9dOiAnSW50ZXJwb2xhdGlvbiBlbmQgc2lnbiB3YXMgbm90IGZvdW5kLicsXHJcbiAgICBbMjcgLyogRXJyb3JDb2Rlcy5YX01JU1NJTkdfRFlOQU1JQ19ESVJFQ1RJVkVfQVJHVU1FTlRfRU5EICovXTogJ0VuZCBicmFja2V0IGZvciBkeW5hbWljIGRpcmVjdGl2ZSBhcmd1bWVudCB3YXMgbm90IGZvdW5kLiAnICtcclxuICAgICAgICAnTm90ZSB0aGF0IGR5bmFtaWMgZGlyZWN0aXZlIGFyZ3VtZW50IGNhbm5vdCBjb250YWluIHNwYWNlcy4nLFxyXG4gICAgWzI2IC8qIEVycm9yQ29kZXMuWF9NSVNTSU5HX0RJUkVDVElWRV9OQU1FICovXTogJ0xlZ2FsIGRpcmVjdGl2ZSBuYW1lIHdhcyBleHBlY3RlZC4nLFxyXG4gICAgLy8gdHJhbnNmb3JtIGVycm9yc1xyXG4gICAgWzI4IC8qIEVycm9yQ29kZXMuWF9WX0lGX05PX0VYUFJFU1NJT04gKi9dOiBgdi1pZi92LWVsc2UtaWYgaXMgbWlzc2luZyBleHByZXNzaW9uLmAsXHJcbiAgICBbMjkgLyogRXJyb3JDb2Rlcy5YX1ZfSUZfU0FNRV9LRVkgKi9dOiBgdi1pZi9lbHNlIGJyYW5jaGVzIG11c3QgdXNlIHVuaXF1ZSBrZXlzLmAsXHJcbiAgICBbMzAgLyogRXJyb3JDb2Rlcy5YX1ZfRUxTRV9OT19BREpBQ0VOVF9JRiAqL106IGB2LWVsc2Uvdi1lbHNlLWlmIGhhcyBubyBhZGphY2VudCB2LWlmIG9yIHYtZWxzZS1pZi5gLFxyXG4gICAgWzMxIC8qIEVycm9yQ29kZXMuWF9WX0ZPUl9OT19FWFBSRVNTSU9OICovXTogYHYtZm9yIGlzIG1pc3NpbmcgZXhwcmVzc2lvbi5gLFxyXG4gICAgWzMyIC8qIEVycm9yQ29kZXMuWF9WX0ZPUl9NQUxGT1JNRURfRVhQUkVTU0lPTiAqL106IGB2LWZvciBoYXMgaW52YWxpZCBleHByZXNzaW9uLmAsXHJcbiAgICBbMzMgLyogRXJyb3JDb2Rlcy5YX1ZfRk9SX1RFTVBMQVRFX0tFWV9QTEFDRU1FTlQgKi9dOiBgPHRlbXBsYXRlIHYtZm9yPiBrZXkgc2hvdWxkIGJlIHBsYWNlZCBvbiB0aGUgPHRlbXBsYXRlPiB0YWcuYCxcclxuICAgIFszNCAvKiBFcnJvckNvZGVzLlhfVl9CSU5EX05PX0VYUFJFU1NJT04gKi9dOiBgdi1iaW5kIGlzIG1pc3NpbmcgZXhwcmVzc2lvbi5gLFxyXG4gICAgWzM1IC8qIEVycm9yQ29kZXMuWF9WX09OX05PX0VYUFJFU1NJT04gKi9dOiBgdi1vbiBpcyBtaXNzaW5nIGV4cHJlc3Npb24uYCxcclxuICAgIFszNiAvKiBFcnJvckNvZGVzLlhfVl9TTE9UX1VORVhQRUNURURfRElSRUNUSVZFX09OX1NMT1RfT1VUTEVUICovXTogYFVuZXhwZWN0ZWQgY3VzdG9tIGRpcmVjdGl2ZSBvbiA8c2xvdD4gb3V0bGV0LmAsXHJcbiAgICBbMzcgLyogRXJyb3JDb2Rlcy5YX1ZfU0xPVF9NSVhFRF9TTE9UX1VTQUdFICovXTogYE1peGVkIHYtc2xvdCB1c2FnZSBvbiBib3RoIHRoZSBjb21wb25lbnQgYW5kIG5lc3RlZCA8dGVtcGxhdGU+LmAgK1xyXG4gICAgICAgIGBXaGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBuYW1lZCBzbG90cywgYWxsIHNsb3RzIHNob3VsZCB1c2UgPHRlbXBsYXRlPiBgICtcclxuICAgICAgICBgc3ludGF4IHRvIGF2b2lkIHNjb3BlIGFtYmlndWl0eS5gLFxyXG4gICAgWzM4IC8qIEVycm9yQ29kZXMuWF9WX1NMT1RfRFVQTElDQVRFX1NMT1RfTkFNRVMgKi9dOiBgRHVwbGljYXRlIHNsb3QgbmFtZXMgZm91bmQuIGAsXHJcbiAgICBbMzkgLyogRXJyb3JDb2Rlcy5YX1ZfU0xPVF9FWFRSQU5FT1VTX0RFRkFVTFRfU0xPVF9DSElMRFJFTiAqL106IGBFeHRyYW5lb3VzIGNoaWxkcmVuIGZvdW5kIHdoZW4gY29tcG9uZW50IGFscmVhZHkgaGFzIGV4cGxpY2l0bHkgbmFtZWQgYCArXHJcbiAgICAgICAgYGRlZmF1bHQgc2xvdC4gVGhlc2UgY2hpbGRyZW4gd2lsbCBiZSBpZ25vcmVkLmAsXHJcbiAgICBbNDAgLyogRXJyb3JDb2Rlcy5YX1ZfU0xPVF9NSVNQTEFDRUQgKi9dOiBgdi1zbG90IGNhbiBvbmx5IGJlIHVzZWQgb24gY29tcG9uZW50cyBvciA8dGVtcGxhdGU+IHRhZ3MuYCxcclxuICAgIFs0MSAvKiBFcnJvckNvZGVzLlhfVl9NT0RFTF9OT19FWFBSRVNTSU9OICovXTogYHYtbW9kZWwgaXMgbWlzc2luZyBleHByZXNzaW9uLmAsXHJcbiAgICBbNDIgLyogRXJyb3JDb2Rlcy5YX1ZfTU9ERUxfTUFMRk9STUVEX0VYUFJFU1NJT04gKi9dOiBgdi1tb2RlbCB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSmF2YVNjcmlwdCBtZW1iZXIgZXhwcmVzc2lvbi5gLFxyXG4gICAgWzQzIC8qIEVycm9yQ29kZXMuWF9WX01PREVMX09OX1NDT1BFX1ZBUklBQkxFICovXTogYHYtbW9kZWwgY2Fubm90IGJlIHVzZWQgb24gdi1mb3Igb3Igdi1zbG90IHNjb3BlIHZhcmlhYmxlcyBiZWNhdXNlIHRoZXkgYXJlIG5vdCB3cml0YWJsZS5gLFxyXG4gICAgWzQ0IC8qIEVycm9yQ29kZXMuWF9JTlZBTElEX0VYUFJFU1NJT04gKi9dOiBgRXJyb3IgcGFyc2luZyBKYXZhU2NyaXB0IGV4cHJlc3Npb246IGAsXHJcbiAgICBbNDUgLyogRXJyb3JDb2Rlcy5YX0tFRVBfQUxJVkVfSU5WQUxJRF9DSElMRFJFTiAqL106IGA8S2VlcEFsaXZlPiBleHBlY3RzIGV4YWN0bHkgb25lIGNoaWxkIGNvbXBvbmVudC5gLFxyXG4gICAgLy8gZ2VuZXJpYyBlcnJvcnNcclxuICAgIFs0NiAvKiBFcnJvckNvZGVzLlhfUFJFRklYX0lEX05PVF9TVVBQT1JURUQgKi9dOiBgXCJwcmVmaXhJZGVudGlmaWVyc1wiIG9wdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnVpbGQgb2YgY29tcGlsZXIuYCxcclxuICAgIFs0NyAvKiBFcnJvckNvZGVzLlhfTU9EVUxFX01PREVfTk9UX1NVUFBPUlRFRCAqL106IGBFUyBtb2R1bGUgbW9kZSBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnVpbGQgb2YgY29tcGlsZXIuYCxcclxuICAgIFs0OCAvKiBFcnJvckNvZGVzLlhfQ0FDSEVfSEFORExFUl9OT1RfU1VQUE9SVEVEICovXTogYFwiY2FjaGVIYW5kbGVyc1wiIG9wdGlvbiBpcyBvbmx5IHN1cHBvcnRlZCB3aGVuIHRoZSBcInByZWZpeElkZW50aWZpZXJzXCIgb3B0aW9uIGlzIGVuYWJsZWQuYCxcclxuICAgIFs0OSAvKiBFcnJvckNvZGVzLlhfU0NPUEVfSURfTk9UX1NVUFBPUlRFRCAqL106IGBcInNjb3BlSWRcIiBvcHRpb24gaXMgb25seSBzdXBwb3J0ZWQgaW4gbW9kdWxlIG1vZGUuYCxcclxuICAgIC8vIGp1c3QgdG8gZnVsZmlsbCB0eXBlc1xyXG4gICAgWzUwIC8qIEVycm9yQ29kZXMuX19FWFRFTkRfUE9JTlRfXyAqL106IGBgXHJcbn07XG5cbmNvbnN0IEZSQUdNRU5UID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBGcmFnbWVudGAgOiBgYCk7XHJcbmNvbnN0IFRFTEVQT1JUID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBUZWxlcG9ydGAgOiBgYCk7XHJcbmNvbnN0IFNVU1BFTlNFID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBTdXNwZW5zZWAgOiBgYCk7XHJcbmNvbnN0IEtFRVBfQUxJVkUgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYEtlZXBBbGl2ZWAgOiBgYCk7XHJcbmNvbnN0IEJBU0VfVFJBTlNJVElPTiA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgQmFzZVRyYW5zaXRpb25gIDogYGApO1xyXG5jb25zdCBPUEVOX0JMT0NLID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBvcGVuQmxvY2tgIDogYGApO1xyXG5jb25zdCBDUkVBVEVfQkxPQ0sgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGNyZWF0ZUJsb2NrYCA6IGBgKTtcclxuY29uc3QgQ1JFQVRFX0VMRU1FTlRfQkxPQ0sgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGNyZWF0ZUVsZW1lbnRCbG9ja2AgOiBgYCk7XHJcbmNvbnN0IENSRUFURV9WTk9ERSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgY3JlYXRlVk5vZGVgIDogYGApO1xyXG5jb25zdCBDUkVBVEVfRUxFTUVOVF9WTk9ERSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgY3JlYXRlRWxlbWVudFZOb2RlYCA6IGBgKTtcclxuY29uc3QgQ1JFQVRFX0NPTU1FTlQgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGNyZWF0ZUNvbW1lbnRWTm9kZWAgOiBgYCk7XHJcbmNvbnN0IENSRUFURV9URVhUID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBjcmVhdGVUZXh0Vk5vZGVgIDogYGApO1xyXG5jb25zdCBDUkVBVEVfU1RBVElDID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBjcmVhdGVTdGF0aWNWTm9kZWAgOiBgYCk7XHJcbmNvbnN0IFJFU09MVkVfQ09NUE9ORU5UID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGByZXNvbHZlQ29tcG9uZW50YCA6IGBgKTtcclxuY29uc3QgUkVTT0xWRV9EWU5BTUlDX0NPTVBPTkVOVCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgcmVzb2x2ZUR5bmFtaWNDb21wb25lbnRgIDogYGApO1xyXG5jb25zdCBSRVNPTFZFX0RJUkVDVElWRSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgcmVzb2x2ZURpcmVjdGl2ZWAgOiBgYCk7XHJcbmNvbnN0IFJFU09MVkVfRklMVEVSID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGByZXNvbHZlRmlsdGVyYCA6IGBgKTtcclxuY29uc3QgV0lUSF9ESVJFQ1RJVkVTID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB3aXRoRGlyZWN0aXZlc2AgOiBgYCk7XHJcbmNvbnN0IFJFTkRFUl9MSVNUID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGByZW5kZXJMaXN0YCA6IGBgKTtcclxuY29uc3QgUkVOREVSX1NMT1QgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHJlbmRlclNsb3RgIDogYGApO1xyXG5jb25zdCBDUkVBVEVfU0xPVFMgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGNyZWF0ZVNsb3RzYCA6IGBgKTtcclxuY29uc3QgVE9fRElTUExBWV9TVFJJTkcgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHRvRGlzcGxheVN0cmluZ2AgOiBgYCk7XHJcbmNvbnN0IE1FUkdFX1BST1BTID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBtZXJnZVByb3BzYCA6IGBgKTtcclxuY29uc3QgTk9STUFMSVpFX0NMQVNTID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBub3JtYWxpemVDbGFzc2AgOiBgYCk7XHJcbmNvbnN0IE5PUk1BTElaRV9TVFlMRSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgbm9ybWFsaXplU3R5bGVgIDogYGApO1xyXG5jb25zdCBOT1JNQUxJWkVfUFJPUFMgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYG5vcm1hbGl6ZVByb3BzYCA6IGBgKTtcclxuY29uc3QgR1VBUkRfUkVBQ1RJVkVfUFJPUFMgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGd1YXJkUmVhY3RpdmVQcm9wc2AgOiBgYCk7XHJcbmNvbnN0IFRPX0hBTkRMRVJTID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB0b0hhbmRsZXJzYCA6IGBgKTtcclxuY29uc3QgQ0FNRUxJWkUgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGNhbWVsaXplYCA6IGBgKTtcclxuY29uc3QgQ0FQSVRBTElaRSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgY2FwaXRhbGl6ZWAgOiBgYCk7XHJcbmNvbnN0IFRPX0hBTkRMRVJfS0VZID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB0b0hhbmRsZXJLZXlgIDogYGApO1xyXG5jb25zdCBTRVRfQkxPQ0tfVFJBQ0tJTkcgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHNldEJsb2NrVHJhY2tpbmdgIDogYGApO1xyXG5jb25zdCBQVVNIX1NDT1BFX0lEID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBwdXNoU2NvcGVJZGAgOiBgYCk7XHJcbmNvbnN0IFBPUF9TQ09QRV9JRCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgcG9wU2NvcGVJZGAgOiBgYCk7XHJcbmNvbnN0IFdJVEhfQ1RYID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB3aXRoQ3R4YCA6IGBgKTtcclxuY29uc3QgVU5SRUYgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHVucmVmYCA6IGBgKTtcclxuY29uc3QgSVNfUkVGID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBpc1JlZmAgOiBgYCk7XHJcbmNvbnN0IFdJVEhfTUVNTyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgd2l0aE1lbW9gIDogYGApO1xyXG5jb25zdCBJU19NRU1PX1NBTUUgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGlzTWVtb1NhbWVgIDogYGApO1xyXG4vLyBOYW1lIG1hcHBpbmcgZm9yIHJ1bnRpbWUgaGVscGVycyB0aGF0IG5lZWQgdG8gYmUgaW1wb3J0ZWQgZnJvbSAndnVlJyBpblxyXG4vLyBnZW5lcmF0ZWQgY29kZS4gTWFrZSBzdXJlIHRoZXNlIGFyZSBjb3JyZWN0bHkgZXhwb3J0ZWQgaW4gdGhlIHJ1bnRpbWUhXHJcbi8vIFVzaW5nIGBhbnlgIGhlcmUgYmVjYXVzZSBUUyBkb2Vzbid0IGFsbG93IHN5bWJvbHMgYXMgaW5kZXggdHlwZS5cclxuY29uc3QgaGVscGVyTmFtZU1hcCA9IHtcclxuICAgIFtGUkFHTUVOVF06IGBGcmFnbWVudGAsXHJcbiAgICBbVEVMRVBPUlRdOiBgVGVsZXBvcnRgLFxyXG4gICAgW1NVU1BFTlNFXTogYFN1c3BlbnNlYCxcclxuICAgIFtLRUVQX0FMSVZFXTogYEtlZXBBbGl2ZWAsXHJcbiAgICBbQkFTRV9UUkFOU0lUSU9OXTogYEJhc2VUcmFuc2l0aW9uYCxcclxuICAgIFtPUEVOX0JMT0NLXTogYG9wZW5CbG9ja2AsXHJcbiAgICBbQ1JFQVRFX0JMT0NLXTogYGNyZWF0ZUJsb2NrYCxcclxuICAgIFtDUkVBVEVfRUxFTUVOVF9CTE9DS106IGBjcmVhdGVFbGVtZW50QmxvY2tgLFxyXG4gICAgW0NSRUFURV9WTk9ERV06IGBjcmVhdGVWTm9kZWAsXHJcbiAgICBbQ1JFQVRFX0VMRU1FTlRfVk5PREVdOiBgY3JlYXRlRWxlbWVudFZOb2RlYCxcclxuICAgIFtDUkVBVEVfQ09NTUVOVF06IGBjcmVhdGVDb21tZW50Vk5vZGVgLFxyXG4gICAgW0NSRUFURV9URVhUXTogYGNyZWF0ZVRleHRWTm9kZWAsXHJcbiAgICBbQ1JFQVRFX1NUQVRJQ106IGBjcmVhdGVTdGF0aWNWTm9kZWAsXHJcbiAgICBbUkVTT0xWRV9DT01QT05FTlRdOiBgcmVzb2x2ZUNvbXBvbmVudGAsXHJcbiAgICBbUkVTT0xWRV9EWU5BTUlDX0NPTVBPTkVOVF06IGByZXNvbHZlRHluYW1pY0NvbXBvbmVudGAsXHJcbiAgICBbUkVTT0xWRV9ESVJFQ1RJVkVdOiBgcmVzb2x2ZURpcmVjdGl2ZWAsXHJcbiAgICBbUkVTT0xWRV9GSUxURVJdOiBgcmVzb2x2ZUZpbHRlcmAsXHJcbiAgICBbV0lUSF9ESVJFQ1RJVkVTXTogYHdpdGhEaXJlY3RpdmVzYCxcclxuICAgIFtSRU5ERVJfTElTVF06IGByZW5kZXJMaXN0YCxcclxuICAgIFtSRU5ERVJfU0xPVF06IGByZW5kZXJTbG90YCxcclxuICAgIFtDUkVBVEVfU0xPVFNdOiBgY3JlYXRlU2xvdHNgLFxyXG4gICAgW1RPX0RJU1BMQVlfU1RSSU5HXTogYHRvRGlzcGxheVN0cmluZ2AsXHJcbiAgICBbTUVSR0VfUFJPUFNdOiBgbWVyZ2VQcm9wc2AsXHJcbiAgICBbTk9STUFMSVpFX0NMQVNTXTogYG5vcm1hbGl6ZUNsYXNzYCxcclxuICAgIFtOT1JNQUxJWkVfU1RZTEVdOiBgbm9ybWFsaXplU3R5bGVgLFxyXG4gICAgW05PUk1BTElaRV9QUk9QU106IGBub3JtYWxpemVQcm9wc2AsXHJcbiAgICBbR1VBUkRfUkVBQ1RJVkVfUFJPUFNdOiBgZ3VhcmRSZWFjdGl2ZVByb3BzYCxcclxuICAgIFtUT19IQU5ETEVSU106IGB0b0hhbmRsZXJzYCxcclxuICAgIFtDQU1FTElaRV06IGBjYW1lbGl6ZWAsXHJcbiAgICBbQ0FQSVRBTElaRV06IGBjYXBpdGFsaXplYCxcclxuICAgIFtUT19IQU5ETEVSX0tFWV06IGB0b0hhbmRsZXJLZXlgLFxyXG4gICAgW1NFVF9CTE9DS19UUkFDS0lOR106IGBzZXRCbG9ja1RyYWNraW5nYCxcclxuICAgIFtQVVNIX1NDT1BFX0lEXTogYHB1c2hTY29wZUlkYCxcclxuICAgIFtQT1BfU0NPUEVfSURdOiBgcG9wU2NvcGVJZGAsXHJcbiAgICBbV0lUSF9DVFhdOiBgd2l0aEN0eGAsXHJcbiAgICBbVU5SRUZdOiBgdW5yZWZgLFxyXG4gICAgW0lTX1JFRl06IGBpc1JlZmAsXHJcbiAgICBbV0lUSF9NRU1PXTogYHdpdGhNZW1vYCxcclxuICAgIFtJU19NRU1PX1NBTUVdOiBgaXNNZW1vU2FtZWBcclxufTtcclxuZnVuY3Rpb24gcmVnaXN0ZXJSdW50aW1lSGVscGVycyhoZWxwZXJzKSB7XHJcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGhlbHBlcnMpLmZvckVhY2gocyA9PiB7XHJcbiAgICAgICAgaGVscGVyTmFtZU1hcFtzXSA9IGhlbHBlcnNbc107XHJcbiAgICB9KTtcclxufVxuXG4vLyBBU1QgVXRpbGl0aWVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4vLyBTb21lIGV4cHJlc3Npb25zLCBlLmcuIHNlcXVlbmNlIGFuZCBjb25kaXRpb25hbCBleHByZXNzaW9ucywgYXJlIG5ldmVyXHJcbi8vIGFzc29jaWF0ZWQgd2l0aCB0ZW1wbGF0ZSBub2Rlcywgc28gdGhlaXIgc291cmNlIGxvY2F0aW9ucyBhcmUganVzdCBhIHN0dWIuXHJcbi8vIENvbnRhaW5lciB0eXBlcyBsaWtlIENvbXBvdW5kRXhwcmVzc2lvbiBhbHNvIGRvbid0IG5lZWQgYSByZWFsIGxvY2F0aW9uLlxyXG5jb25zdCBsb2NTdHViID0ge1xyXG4gICAgc291cmNlOiAnJyxcclxuICAgIHN0YXJ0OiB7IGxpbmU6IDEsIGNvbHVtbjogMSwgb2Zmc2V0OiAwIH0sXHJcbiAgICBlbmQ6IHsgbGluZTogMSwgY29sdW1uOiAxLCBvZmZzZXQ6IDAgfVxyXG59O1xyXG5mdW5jdGlvbiBjcmVhdGVSb290KGNoaWxkcmVuLCBsb2MgPSBsb2NTdHViKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDAgLyogTm9kZVR5cGVzLlJPT1QgKi8sXHJcbiAgICAgICAgY2hpbGRyZW4sXHJcbiAgICAgICAgaGVscGVyczogW10sXHJcbiAgICAgICAgY29tcG9uZW50czogW10sXHJcbiAgICAgICAgZGlyZWN0aXZlczogW10sXHJcbiAgICAgICAgaG9pc3RzOiBbXSxcclxuICAgICAgICBpbXBvcnRzOiBbXSxcclxuICAgICAgICBjYWNoZWQ6IDAsXHJcbiAgICAgICAgdGVtcHM6IDAsXHJcbiAgICAgICAgY29kZWdlbk5vZGU6IHVuZGVmaW5lZCxcclxuICAgICAgICBsb2NcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlVk5vZGVDYWxsKGNvbnRleHQsIHRhZywgcHJvcHMsIGNoaWxkcmVuLCBwYXRjaEZsYWcsIGR5bmFtaWNQcm9wcywgZGlyZWN0aXZlcywgaXNCbG9jayA9IGZhbHNlLCBkaXNhYmxlVHJhY2tpbmcgPSBmYWxzZSwgaXNDb21wb25lbnQgPSBmYWxzZSwgbG9jID0gbG9jU3R1Yikge1xyXG4gICAgaWYgKGNvbnRleHQpIHtcclxuICAgICAgICBpZiAoaXNCbG9jaykge1xyXG4gICAgICAgICAgICBjb250ZXh0LmhlbHBlcihPUEVOX0JMT0NLKTtcclxuICAgICAgICAgICAgY29udGV4dC5oZWxwZXIoZ2V0Vk5vZGVCbG9ja0hlbHBlcihjb250ZXh0LmluU1NSLCBpc0NvbXBvbmVudCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29udGV4dC5oZWxwZXIoZ2V0Vk5vZGVIZWxwZXIoY29udGV4dC5pblNTUiwgaXNDb21wb25lbnQpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRpcmVjdGl2ZXMpIHtcclxuICAgICAgICAgICAgY29udGV4dC5oZWxwZXIoV0lUSF9ESVJFQ1RJVkVTKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDEzIC8qIE5vZGVUeXBlcy5WTk9ERV9DQUxMICovLFxyXG4gICAgICAgIHRhZyxcclxuICAgICAgICBwcm9wcyxcclxuICAgICAgICBjaGlsZHJlbixcclxuICAgICAgICBwYXRjaEZsYWcsXHJcbiAgICAgICAgZHluYW1pY1Byb3BzLFxyXG4gICAgICAgIGRpcmVjdGl2ZXMsXHJcbiAgICAgICAgaXNCbG9jayxcclxuICAgICAgICBkaXNhYmxlVHJhY2tpbmcsXHJcbiAgICAgICAgaXNDb21wb25lbnQsXHJcbiAgICAgICAgbG9jXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUFycmF5RXhwcmVzc2lvbihlbGVtZW50cywgbG9jID0gbG9jU3R1Yikge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAxNyAvKiBOb2RlVHlwZXMuSlNfQVJSQVlfRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICBsb2MsXHJcbiAgICAgICAgZWxlbWVudHNcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihwcm9wZXJ0aWVzLCBsb2MgPSBsb2NTdHViKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDE1IC8qIE5vZGVUeXBlcy5KU19PQkpFQ1RfRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICBsb2MsXHJcbiAgICAgICAgcHJvcGVydGllc1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVPYmplY3RQcm9wZXJ0eShrZXksIHZhbHVlKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDE2IC8qIE5vZGVUeXBlcy5KU19QUk9QRVJUWSAqLyxcclxuICAgICAgICBsb2M6IGxvY1N0dWIsXHJcbiAgICAgICAga2V5OiBpc1N0cmluZyhrZXkpID8gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihrZXksIHRydWUpIDoga2V5LFxyXG4gICAgICAgIHZhbHVlXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oY29udGVudCwgaXNTdGF0aWMgPSBmYWxzZSwgbG9jID0gbG9jU3R1YiwgY29uc3RUeXBlID0gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLykge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICBsb2MsXHJcbiAgICAgICAgY29udGVudCxcclxuICAgICAgICBpc1N0YXRpYyxcclxuICAgICAgICBjb25zdFR5cGU6IGlzU3RhdGljID8gMyAvKiBDb25zdGFudFR5cGVzLkNBTl9TVFJJTkdJRlkgKi8gOiBjb25zdFR5cGVcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlSW50ZXJwb2xhdGlvbihjb250ZW50LCBsb2MpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogNSAvKiBOb2RlVHlwZXMuSU5URVJQT0xBVElPTiAqLyxcclxuICAgICAgICBsb2MsXHJcbiAgICAgICAgY29udGVudDogaXNTdHJpbmcoY29udGVudClcclxuICAgICAgICAgICAgPyBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGNvbnRlbnQsIGZhbHNlLCBsb2MpXHJcbiAgICAgICAgICAgIDogY29udGVudFxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oY2hpbGRyZW4sIGxvYyA9IGxvY1N0dWIpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogOCAvKiBOb2RlVHlwZXMuQ09NUE9VTkRfRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICBsb2MsXHJcbiAgICAgICAgY2hpbGRyZW5cclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY2FsbGVlLCBhcmdzID0gW10sIGxvYyA9IGxvY1N0dWIpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMTQgLyogTm9kZVR5cGVzLkpTX0NBTExfRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICBsb2MsXHJcbiAgICAgICAgY2FsbGVlLFxyXG4gICAgICAgIGFyZ3VtZW50czogYXJnc1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24ocGFyYW1zLCByZXR1cm5zID0gdW5kZWZpbmVkLCBuZXdsaW5lID0gZmFsc2UsIGlzU2xvdCA9IGZhbHNlLCBsb2MgPSBsb2NTdHViKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDE4IC8qIE5vZGVUeXBlcy5KU19GVU5DVElPTl9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgIHBhcmFtcyxcclxuICAgICAgICByZXR1cm5zLFxyXG4gICAgICAgIG5ld2xpbmUsXHJcbiAgICAgICAgaXNTbG90LFxyXG4gICAgICAgIGxvY1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb24odGVzdCwgY29uc2VxdWVudCwgYWx0ZXJuYXRlLCBuZXdsaW5lID0gdHJ1ZSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAxOSAvKiBOb2RlVHlwZXMuSlNfQ09ORElUSU9OQUxfRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICB0ZXN0LFxyXG4gICAgICAgIGNvbnNlcXVlbnQsXHJcbiAgICAgICAgYWx0ZXJuYXRlLFxyXG4gICAgICAgIG5ld2xpbmUsXHJcbiAgICAgICAgbG9jOiBsb2NTdHViXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUNhY2hlRXhwcmVzc2lvbihpbmRleCwgdmFsdWUsIGlzVk5vZGUgPSBmYWxzZSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAyMCAvKiBOb2RlVHlwZXMuSlNfQ0FDSEVfRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB2YWx1ZSxcclxuICAgICAgICBpc1ZOb2RlLFxyXG4gICAgICAgIGxvYzogbG9jU3R1YlxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVCbG9ja1N0YXRlbWVudChib2R5KSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDIxIC8qIE5vZGVUeXBlcy5KU19CTE9DS19TVEFURU1FTlQgKi8sXHJcbiAgICAgICAgYm9keSxcclxuICAgICAgICBsb2M6IGxvY1N0dWJcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlVGVtcGxhdGVMaXRlcmFsKGVsZW1lbnRzKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDIyIC8qIE5vZGVUeXBlcy5KU19URU1QTEFURV9MSVRFUkFMICovLFxyXG4gICAgICAgIGVsZW1lbnRzLFxyXG4gICAgICAgIGxvYzogbG9jU3R1YlxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVJZlN0YXRlbWVudCh0ZXN0LCBjb25zZXF1ZW50LCBhbHRlcm5hdGUpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMjMgLyogTm9kZVR5cGVzLkpTX0lGX1NUQVRFTUVOVCAqLyxcclxuICAgICAgICB0ZXN0LFxyXG4gICAgICAgIGNvbnNlcXVlbnQsXHJcbiAgICAgICAgYWx0ZXJuYXRlLFxyXG4gICAgICAgIGxvYzogbG9jU3R1YlxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVBc3NpZ25tZW50RXhwcmVzc2lvbihsZWZ0LCByaWdodCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAyNCAvKiBOb2RlVHlwZXMuSlNfQVNTSUdOTUVOVF9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgIGxlZnQsXHJcbiAgICAgICAgcmlnaHQsXHJcbiAgICAgICAgbG9jOiBsb2NTdHViXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVNlcXVlbmNlRXhwcmVzc2lvbihleHByZXNzaW9ucykge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAyNSAvKiBOb2RlVHlwZXMuSlNfU0VRVUVOQ0VfRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICBleHByZXNzaW9ucyxcclxuICAgICAgICBsb2M6IGxvY1N0dWJcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlUmV0dXJuU3RhdGVtZW50KHJldHVybnMpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMjYgLyogTm9kZVR5cGVzLkpTX1JFVFVSTl9TVEFURU1FTlQgKi8sXHJcbiAgICAgICAgcmV0dXJucyxcclxuICAgICAgICBsb2M6IGxvY1N0dWJcclxuICAgIH07XHJcbn1cblxuY29uc3QgaXNTdGF0aWNFeHAgPSAocCkgPT4gcC50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyAmJiBwLmlzU3RhdGljO1xyXG5jb25zdCBpc0J1aWx0SW5UeXBlID0gKHRhZywgZXhwZWN0ZWQpID0+IHRhZyA9PT0gZXhwZWN0ZWQgfHwgdGFnID09PSBoeXBoZW5hdGUoZXhwZWN0ZWQpO1xyXG5mdW5jdGlvbiBpc0NvcmVDb21wb25lbnQodGFnKSB7XHJcbiAgICBpZiAoaXNCdWlsdEluVHlwZSh0YWcsICdUZWxlcG9ydCcpKSB7XHJcbiAgICAgICAgcmV0dXJuIFRFTEVQT1JUO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNCdWlsdEluVHlwZSh0YWcsICdTdXNwZW5zZScpKSB7XHJcbiAgICAgICAgcmV0dXJuIFNVU1BFTlNFO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNCdWlsdEluVHlwZSh0YWcsICdLZWVwQWxpdmUnKSkge1xyXG4gICAgICAgIHJldHVybiBLRUVQX0FMSVZFO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNCdWlsdEluVHlwZSh0YWcsICdCYXNlVHJhbnNpdGlvbicpKSB7XHJcbiAgICAgICAgcmV0dXJuIEJBU0VfVFJBTlNJVElPTjtcclxuICAgIH1cclxufVxyXG5jb25zdCBub25JZGVudGlmaWVyUkUgPSAvXlxcZHxbXlxcJFxcd10vO1xyXG5jb25zdCBpc1NpbXBsZUlkZW50aWZpZXIgPSAobmFtZSkgPT4gIW5vbklkZW50aWZpZXJSRS50ZXN0KG5hbWUpO1xyXG5jb25zdCB2YWxpZEZpcnN0SWRlbnRDaGFyUkUgPSAvW0EtWmEtel8kXFx4QTAtXFx1RkZGRl0vO1xyXG5jb25zdCB2YWxpZElkZW50Q2hhclJFID0gL1tcXC5cXD9cXHckXFx4QTAtXFx1RkZGRl0vO1xyXG5jb25zdCB3aGl0ZXNwYWNlUkUgPSAvXFxzK1suW11cXHMqfFxccypbLltdXFxzKy9nO1xyXG4vKipcclxuICogU2ltcGxlIGxleGVyIHRvIGNoZWNrIGlmIGFuIGV4cHJlc3Npb24gaXMgYSBtZW1iZXIgZXhwcmVzc2lvbi4gVGhpcyBpc1xyXG4gKiBsYXggYW5kIG9ubHkgY2hlY2tzIHZhbGlkaXR5IGF0IHRoZSByb290IGxldmVsIChpLmUuIGRvZXMgbm90IHZhbGlkYXRlIGV4cHNcclxuICogaW5zaWRlIHNxdWFyZSBicmFja2V0cyksIGJ1dCBpdCdzIG9rIHNpbmNlIHRoZXNlIGFyZSBvbmx5IHVzZWQgb24gdGVtcGxhdGVcclxuICogZXhwcmVzc2lvbnMgYW5kIGZhbHNlIHBvc2l0aXZlcyBhcmUgaW52YWxpZCBleHByZXNzaW9ucyBpbiB0aGUgZmlyc3QgcGxhY2UuXHJcbiAqL1xyXG5jb25zdCBpc01lbWJlckV4cHJlc3Npb25Ccm93c2VyID0gKHBhdGgpID0+IHtcclxuICAgIC8vIHJlbW92ZSB3aGl0ZXNwYWNlcyBhcm91bmQgLiBvciBbIGZpcnN0XHJcbiAgICBwYXRoID0gcGF0aC50cmltKCkucmVwbGFjZSh3aGl0ZXNwYWNlUkUsIHMgPT4gcy50cmltKCkpO1xyXG4gICAgbGV0IHN0YXRlID0gMCAvKiBNZW1iZXJFeHBMZXhTdGF0ZS5pbk1lbWJlckV4cCAqLztcclxuICAgIGxldCBzdGF0ZVN0YWNrID0gW107XHJcbiAgICBsZXQgY3VycmVudE9wZW5CcmFja2V0Q291bnQgPSAwO1xyXG4gICAgbGV0IGN1cnJlbnRPcGVuUGFyZW5zQ291bnQgPSAwO1xyXG4gICAgbGV0IGN1cnJlbnRTdHJpbmdUeXBlID0gbnVsbDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGNoYXIgPSBwYXRoLmNoYXJBdChpKTtcclxuICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgMCAvKiBNZW1iZXJFeHBMZXhTdGF0ZS5pbk1lbWJlckV4cCAqLzpcclxuICAgICAgICAgICAgICAgIGlmIChjaGFyID09PSAnWycpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZVN0YWNrLnB1c2goc3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gMSAvKiBNZW1iZXJFeHBMZXhTdGF0ZS5pbkJyYWNrZXRzICovO1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRPcGVuQnJhY2tldENvdW50Kys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGFyID09PSAnKCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZVN0YWNrLnB1c2goc3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gMiAvKiBNZW1iZXJFeHBMZXhTdGF0ZS5pblBhcmVucyAqLztcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50T3BlblBhcmVuc0NvdW50Kys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICghKGkgPT09IDAgPyB2YWxpZEZpcnN0SWRlbnRDaGFyUkUgOiB2YWxpZElkZW50Q2hhclJFKS50ZXN0KGNoYXIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMSAvKiBNZW1iZXJFeHBMZXhTdGF0ZS5pbkJyYWNrZXRzICovOlxyXG4gICAgICAgICAgICAgICAgaWYgKGNoYXIgPT09IGAnYCB8fCBjaGFyID09PSBgXCJgIHx8IGNoYXIgPT09ICdgJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlU3RhY2sucHVzaChzdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAzIC8qIE1lbWJlckV4cExleFN0YXRlLmluU3RyaW5nICovO1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdUeXBlID0gY2hhcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoYXIgPT09IGBbYCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRPcGVuQnJhY2tldENvdW50Kys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGFyID09PSBgXWApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIS0tY3VycmVudE9wZW5CcmFja2V0Q291bnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZVN0YWNrLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDIgLyogTWVtYmVyRXhwTGV4U3RhdGUuaW5QYXJlbnMgKi86XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hhciA9PT0gYCdgIHx8IGNoYXIgPT09IGBcImAgfHwgY2hhciA9PT0gJ2AnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGVTdGFjay5wdXNoKHN0YXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDMgLyogTWVtYmVyRXhwTGV4U3RhdGUuaW5TdHJpbmcgKi87XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0cmluZ1R5cGUgPSBjaGFyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hhciA9PT0gYChgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudE9wZW5QYXJlbnNDb3VudCsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hhciA9PT0gYClgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGV4cCBlbmRzIGFzIGEgY2FsbCB0aGVuIGl0IHNob3VsZCBub3QgYmUgY29uc2lkZXJlZCB2YWxpZFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSBwYXRoLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoIS0tY3VycmVudE9wZW5QYXJlbnNDb3VudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IHN0YXRlU3RhY2sucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMyAvKiBNZW1iZXJFeHBMZXhTdGF0ZS5pblN0cmluZyAqLzpcclxuICAgICAgICAgICAgICAgIGlmIChjaGFyID09PSBjdXJyZW50U3RyaW5nVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gc3RhdGVTdGFjay5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RyaW5nVHlwZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gIWN1cnJlbnRPcGVuQnJhY2tldENvdW50ICYmICFjdXJyZW50T3BlblBhcmVuc0NvdW50O1xyXG59O1xyXG5jb25zdCBpc01lbWJlckV4cHJlc3Npb25Ob2RlID0gTk9PUFxyXG4gICAgO1xyXG5jb25zdCBpc01lbWJlckV4cHJlc3Npb24gPSBpc01lbWJlckV4cHJlc3Npb25Ccm93c2VyXHJcbiAgICA7XHJcbmZ1bmN0aW9uIGdldElubmVyUmFuZ2UobG9jLCBvZmZzZXQsIGxlbmd0aCkge1xyXG4gICAgY29uc3Qgc291cmNlID0gbG9jLnNvdXJjZS5zbGljZShvZmZzZXQsIG9mZnNldCArIGxlbmd0aCk7XHJcbiAgICBjb25zdCBuZXdMb2MgPSB7XHJcbiAgICAgICAgc291cmNlLFxyXG4gICAgICAgIHN0YXJ0OiBhZHZhbmNlUG9zaXRpb25XaXRoQ2xvbmUobG9jLnN0YXJ0LCBsb2Muc291cmNlLCBvZmZzZXQpLFxyXG4gICAgICAgIGVuZDogbG9jLmVuZFxyXG4gICAgfTtcclxuICAgIGlmIChsZW5ndGggIT0gbnVsbCkge1xyXG4gICAgICAgIG5ld0xvYy5lbmQgPSBhZHZhbmNlUG9zaXRpb25XaXRoQ2xvbmUobG9jLnN0YXJ0LCBsb2Muc291cmNlLCBvZmZzZXQgKyBsZW5ndGgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld0xvYztcclxufVxyXG5mdW5jdGlvbiBhZHZhbmNlUG9zaXRpb25XaXRoQ2xvbmUocG9zLCBzb3VyY2UsIG51bWJlck9mQ2hhcmFjdGVycyA9IHNvdXJjZS5sZW5ndGgpIHtcclxuICAgIHJldHVybiBhZHZhbmNlUG9zaXRpb25XaXRoTXV0YXRpb24oZXh0ZW5kKHt9LCBwb3MpLCBzb3VyY2UsIG51bWJlck9mQ2hhcmFjdGVycyk7XHJcbn1cclxuLy8gYWR2YW5jZSBieSBtdXRhdGlvbiB3aXRob3V0IGNsb25pbmcgKGZvciBwZXJmb3JtYW5jZSByZWFzb25zKSwgc2luY2UgdGhpc1xyXG4vLyBnZXRzIGNhbGxlZCBhIGxvdCBpbiB0aGUgcGFyc2VyXHJcbmZ1bmN0aW9uIGFkdmFuY2VQb3NpdGlvbldpdGhNdXRhdGlvbihwb3MsIHNvdXJjZSwgbnVtYmVyT2ZDaGFyYWN0ZXJzID0gc291cmNlLmxlbmd0aCkge1xyXG4gICAgbGV0IGxpbmVzQ291bnQgPSAwO1xyXG4gICAgbGV0IGxhc3ROZXdMaW5lUG9zID0gLTE7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bWJlck9mQ2hhcmFjdGVyczsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHNvdXJjZS5jaGFyQ29kZUF0KGkpID09PSAxMCAvKiBuZXdsaW5lIGNoYXIgY29kZSAqLykge1xyXG4gICAgICAgICAgICBsaW5lc0NvdW50Kys7XHJcbiAgICAgICAgICAgIGxhc3ROZXdMaW5lUG9zID0gaTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwb3Mub2Zmc2V0ICs9IG51bWJlck9mQ2hhcmFjdGVycztcclxuICAgIHBvcy5saW5lICs9IGxpbmVzQ291bnQ7XHJcbiAgICBwb3MuY29sdW1uID1cclxuICAgICAgICBsYXN0TmV3TGluZVBvcyA9PT0gLTFcclxuICAgICAgICAgICAgPyBwb3MuY29sdW1uICsgbnVtYmVyT2ZDaGFyYWN0ZXJzXHJcbiAgICAgICAgICAgIDogbnVtYmVyT2ZDaGFyYWN0ZXJzIC0gbGFzdE5ld0xpbmVQb3M7XHJcbiAgICByZXR1cm4gcG9zO1xyXG59XHJcbmZ1bmN0aW9uIGFzc2VydChjb25kaXRpb24sIG1zZykge1xyXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXHJcbiAgICBpZiAoIWNvbmRpdGlvbikge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cgfHwgYHVuZXhwZWN0ZWQgY29tcGlsZXIgY29uZGl0aW9uYCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZmluZERpcihub2RlLCBuYW1lLCBhbGxvd0VtcHR5ID0gZmFsc2UpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5wcm9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHAgPSBub2RlLnByb3BzW2ldO1xyXG4gICAgICAgIGlmIChwLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyAmJlxyXG4gICAgICAgICAgICAoYWxsb3dFbXB0eSB8fCBwLmV4cCkgJiZcclxuICAgICAgICAgICAgKGlzU3RyaW5nKG5hbWUpID8gcC5uYW1lID09PSBuYW1lIDogbmFtZS50ZXN0KHAubmFtZSkpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBmaW5kUHJvcChub2RlLCBuYW1lLCBkeW5hbWljT25seSA9IGZhbHNlLCBhbGxvd0VtcHR5ID0gZmFsc2UpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5wcm9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHAgPSBub2RlLnByb3BzW2ldO1xyXG4gICAgICAgIGlmIChwLnR5cGUgPT09IDYgLyogTm9kZVR5cGVzLkFUVFJJQlVURSAqLykge1xyXG4gICAgICAgICAgICBpZiAoZHluYW1pY09ubHkpXHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgaWYgKHAubmFtZSA9PT0gbmFtZSAmJiAocC52YWx1ZSB8fCBhbGxvd0VtcHR5KSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocC5uYW1lID09PSAnYmluZCcgJiZcclxuICAgICAgICAgICAgKHAuZXhwIHx8IGFsbG93RW1wdHkpICYmXHJcbiAgICAgICAgICAgIGlzU3RhdGljQXJnT2YocC5hcmcsIG5hbWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBpc1N0YXRpY0FyZ09mKGFyZywgbmFtZSkge1xyXG4gICAgcmV0dXJuICEhKGFyZyAmJiBpc1N0YXRpY0V4cChhcmcpICYmIGFyZy5jb250ZW50ID09PSBuYW1lKTtcclxufVxyXG5mdW5jdGlvbiBoYXNEeW5hbWljS2V5VkJpbmQobm9kZSkge1xyXG4gICAgcmV0dXJuIG5vZGUucHJvcHMuc29tZShwID0+IHAudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovICYmXHJcbiAgICAgICAgcC5uYW1lID09PSAnYmluZCcgJiZcclxuICAgICAgICAoIXAuYXJnIHx8IC8vIHYtYmluZD1cIm9ialwiXHJcbiAgICAgICAgICAgIHAuYXJnLnR5cGUgIT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovIHx8IC8vIHYtYmluZDpbX2N0eC5mb29dXHJcbiAgICAgICAgICAgICFwLmFyZy5pc1N0YXRpYykgLy8gdi1iaW5kOltmb29dXHJcbiAgICApO1xyXG59XHJcbmZ1bmN0aW9uIGlzVGV4dChub2RlKSB7XHJcbiAgICByZXR1cm4gbm9kZS50eXBlID09PSA1IC8qIE5vZGVUeXBlcy5JTlRFUlBPTEFUSU9OICovIHx8IG5vZGUudHlwZSA9PT0gMiAvKiBOb2RlVHlwZXMuVEVYVCAqLztcclxufVxyXG5mdW5jdGlvbiBpc1ZTbG90KHApIHtcclxuICAgIHJldHVybiBwLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyAmJiBwLm5hbWUgPT09ICdzbG90JztcclxufVxyXG5mdW5jdGlvbiBpc1RlbXBsYXRlTm9kZShub2RlKSB7XHJcbiAgICByZXR1cm4gKG5vZGUudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyAmJiBub2RlLnRhZ1R5cGUgPT09IDMgLyogRWxlbWVudFR5cGVzLlRFTVBMQVRFICovKTtcclxufVxyXG5mdW5jdGlvbiBpc1Nsb3RPdXRsZXQobm9kZSkge1xyXG4gICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyAmJiBub2RlLnRhZ1R5cGUgPT09IDIgLyogRWxlbWVudFR5cGVzLlNMT1QgKi87XHJcbn1cclxuZnVuY3Rpb24gZ2V0Vk5vZGVIZWxwZXIoc3NyLCBpc0NvbXBvbmVudCkge1xyXG4gICAgcmV0dXJuIHNzciB8fCBpc0NvbXBvbmVudCA/IENSRUFURV9WTk9ERSA6IENSRUFURV9FTEVNRU5UX1ZOT0RFO1xyXG59XHJcbmZ1bmN0aW9uIGdldFZOb2RlQmxvY2tIZWxwZXIoc3NyLCBpc0NvbXBvbmVudCkge1xyXG4gICAgcmV0dXJuIHNzciB8fCBpc0NvbXBvbmVudCA/IENSRUFURV9CTE9DSyA6IENSRUFURV9FTEVNRU5UX0JMT0NLO1xyXG59XHJcbmNvbnN0IHByb3BzSGVscGVyU2V0ID0gbmV3IFNldChbTk9STUFMSVpFX1BST1BTLCBHVUFSRF9SRUFDVElWRV9QUk9QU10pO1xyXG5mdW5jdGlvbiBnZXRVbm5vcm1hbGl6ZWRQcm9wcyhwcm9wcywgY2FsbFBhdGggPSBbXSkge1xyXG4gICAgaWYgKHByb3BzICYmXHJcbiAgICAgICAgIWlzU3RyaW5nKHByb3BzKSAmJlxyXG4gICAgICAgIHByb3BzLnR5cGUgPT09IDE0IC8qIE5vZGVUeXBlcy5KU19DQUxMX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICBjb25zdCBjYWxsZWUgPSBwcm9wcy5jYWxsZWU7XHJcbiAgICAgICAgaWYgKCFpc1N0cmluZyhjYWxsZWUpICYmIHByb3BzSGVscGVyU2V0LmhhcyhjYWxsZWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBnZXRVbm5vcm1hbGl6ZWRQcm9wcyhwcm9wcy5hcmd1bWVudHNbMF0sIGNhbGxQYXRoLmNvbmNhdChwcm9wcykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBbcHJvcHMsIGNhbGxQYXRoXTtcclxufVxyXG5mdW5jdGlvbiBpbmplY3RQcm9wKG5vZGUsIHByb3AsIGNvbnRleHQpIHtcclxuICAgIGxldCBwcm9wc1dpdGhJbmplY3Rpb247XHJcbiAgICAvKipcclxuICAgICAqIDEuIG1lcmdlUHJvcHMoLi4uKVxyXG4gICAgICogMi4gdG9IYW5kbGVycyguLi4pXHJcbiAgICAgKiAzLiBub3JtYWxpemVQcm9wcyguLi4pXHJcbiAgICAgKiA0LiBub3JtYWxpemVQcm9wcyhndWFyZFJlYWN0aXZlUHJvcHMoLi4uKSlcclxuICAgICAqXHJcbiAgICAgKiB3ZSBuZWVkIHRvIGdldCB0aGUgcmVhbCBwcm9wcyBiZWZvcmUgbm9ybWFsaXphdGlvblxyXG4gICAgICovXHJcbiAgICBsZXQgcHJvcHMgPSBub2RlLnR5cGUgPT09IDEzIC8qIE5vZGVUeXBlcy5WTk9ERV9DQUxMICovID8gbm9kZS5wcm9wcyA6IG5vZGUuYXJndW1lbnRzWzJdO1xyXG4gICAgbGV0IGNhbGxQYXRoID0gW107XHJcbiAgICBsZXQgcGFyZW50Q2FsbDtcclxuICAgIGlmIChwcm9wcyAmJlxyXG4gICAgICAgICFpc1N0cmluZyhwcm9wcykgJiZcclxuICAgICAgICBwcm9wcy50eXBlID09PSAxNCAvKiBOb2RlVHlwZXMuSlNfQ0FMTF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgY29uc3QgcmV0ID0gZ2V0VW5ub3JtYWxpemVkUHJvcHMocHJvcHMpO1xyXG4gICAgICAgIHByb3BzID0gcmV0WzBdO1xyXG4gICAgICAgIGNhbGxQYXRoID0gcmV0WzFdO1xyXG4gICAgICAgIHBhcmVudENhbGwgPSBjYWxsUGF0aFtjYWxsUGF0aC5sZW5ndGggLSAxXTtcclxuICAgIH1cclxuICAgIGlmIChwcm9wcyA9PSBudWxsIHx8IGlzU3RyaW5nKHByb3BzKSkge1xyXG4gICAgICAgIHByb3BzV2l0aEluamVjdGlvbiA9IGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oW3Byb3BdKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHByb3BzLnR5cGUgPT09IDE0IC8qIE5vZGVUeXBlcy5KU19DQUxMX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAvLyBtZXJnZWQgcHJvcHMuLi4gYWRkIG91cnNcclxuICAgICAgICAvLyBvbmx5IGluamVjdCBrZXkgdG8gb2JqZWN0IGxpdGVyYWwgaWYgaXQncyB0aGUgZmlyc3QgYXJndW1lbnQgc28gdGhhdFxyXG4gICAgICAgIC8vIGlmIGRvZXNuJ3Qgb3ZlcnJpZGUgdXNlciBwcm92aWRlZCBrZXlzXHJcbiAgICAgICAgY29uc3QgZmlyc3QgPSBwcm9wcy5hcmd1bWVudHNbMF07XHJcbiAgICAgICAgaWYgKCFpc1N0cmluZyhmaXJzdCkgJiYgZmlyc3QudHlwZSA9PT0gMTUgLyogTm9kZVR5cGVzLkpTX09CSkVDVF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgIGZpcnN0LnByb3BlcnRpZXMudW5zaGlmdChwcm9wKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChwcm9wcy5jYWxsZWUgPT09IFRPX0hBTkRMRVJTKSB7XHJcbiAgICAgICAgICAgICAgICAvLyAjMjM2NlxyXG4gICAgICAgICAgICAgICAgcHJvcHNXaXRoSW5qZWN0aW9uID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoTUVSR0VfUFJPUFMpLCBbXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihbcHJvcF0pLFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3BzXHJcbiAgICAgICAgICAgICAgICBdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHByb3BzLmFyZ3VtZW50cy51bnNoaWZ0KGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oW3Byb3BdKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgIXByb3BzV2l0aEluamVjdGlvbiAmJiAocHJvcHNXaXRoSW5qZWN0aW9uID0gcHJvcHMpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocHJvcHMudHlwZSA9PT0gMTUgLyogTm9kZVR5cGVzLkpTX09CSkVDVF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgbGV0IGFscmVhZHlFeGlzdHMgPSBmYWxzZTtcclxuICAgICAgICAvLyBjaGVjayBleGlzdGluZyBrZXkgdG8gYXZvaWQgb3ZlcnJpZGluZyB1c2VyIHByb3ZpZGVkIGtleXNcclxuICAgICAgICBpZiAocHJvcC5rZXkudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgY29uc3QgcHJvcEtleU5hbWUgPSBwcm9wLmtleS5jb250ZW50O1xyXG4gICAgICAgICAgICBhbHJlYWR5RXhpc3RzID0gcHJvcHMucHJvcGVydGllcy5zb21lKHAgPT4gcC5rZXkudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8gJiZcclxuICAgICAgICAgICAgICAgIHAua2V5LmNvbnRlbnQgPT09IHByb3BLZXlOYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFhbHJlYWR5RXhpc3RzKSB7XHJcbiAgICAgICAgICAgIHByb3BzLnByb3BlcnRpZXMudW5zaGlmdChwcm9wKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcHJvcHNXaXRoSW5qZWN0aW9uID0gcHJvcHM7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBzaW5nbGUgdi1iaW5kIHdpdGggZXhwcmVzc2lvbiwgcmV0dXJuIGEgbWVyZ2VkIHJlcGxhY2VtZW50XHJcbiAgICAgICAgcHJvcHNXaXRoSW5qZWN0aW9uID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoTUVSR0VfUFJPUFMpLCBbXHJcbiAgICAgICAgICAgIGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oW3Byb3BdKSxcclxuICAgICAgICAgICAgcHJvcHNcclxuICAgICAgICBdKTtcclxuICAgICAgICAvLyBpbiB0aGUgY2FzZSBvZiBuZXN0ZWQgaGVscGVyIGNhbGwsIGUuZy4gYG5vcm1hbGl6ZVByb3BzKGd1YXJkUmVhY3RpdmVQcm9wcyhwcm9wcykpYCxcclxuICAgICAgICAvLyBpdCB3aWxsIGJlIHJld3JpdHRlbiBhcyBgbm9ybWFsaXplUHJvcHMobWVyZ2VQcm9wcyh7IGtleTogMCB9LCBwcm9wcykpYCxcclxuICAgICAgICAvLyB0aGUgYGd1YXJkUmVhY3RpdmVQcm9wc2Agd2lsbCBubyBsb25nZXIgYmUgbmVlZGVkXHJcbiAgICAgICAgaWYgKHBhcmVudENhbGwgJiYgcGFyZW50Q2FsbC5jYWxsZWUgPT09IEdVQVJEX1JFQUNUSVZFX1BST1BTKSB7XHJcbiAgICAgICAgICAgIHBhcmVudENhbGwgPSBjYWxsUGF0aFtjYWxsUGF0aC5sZW5ndGggLSAyXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAobm9kZS50eXBlID09PSAxMyAvKiBOb2RlVHlwZXMuVk5PREVfQ0FMTCAqLykge1xyXG4gICAgICAgIGlmIChwYXJlbnRDYWxsKSB7XHJcbiAgICAgICAgICAgIHBhcmVudENhbGwuYXJndW1lbnRzWzBdID0gcHJvcHNXaXRoSW5qZWN0aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbm9kZS5wcm9wcyA9IHByb3BzV2l0aEluamVjdGlvbjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBpZiAocGFyZW50Q2FsbCkge1xyXG4gICAgICAgICAgICBwYXJlbnRDYWxsLmFyZ3VtZW50c1swXSA9IHByb3BzV2l0aEluamVjdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG5vZGUuYXJndW1lbnRzWzJdID0gcHJvcHNXaXRoSW5qZWN0aW9uO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB0b1ZhbGlkQXNzZXRJZChuYW1lLCB0eXBlKSB7XHJcbiAgICAvLyBzZWUgaXNzdWUjNDQyMiwgd2UgbmVlZCBhZGRpbmcgaWRlbnRpZmllciBvbiB2YWxpZEFzc2V0SWQgaWYgdmFyaWFibGUgYG5hbWVgIGhhcyBzcGVjaWZpYyBjaGFyYWN0ZXJcclxuICAgIHJldHVybiBgXyR7dHlwZX1fJHtuYW1lLnJlcGxhY2UoL1teXFx3XS9nLCAoc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBzZWFyY2hWYWx1ZSA9PT0gJy0nID8gJ18nIDogbmFtZS5jaGFyQ29kZUF0KHJlcGxhY2VWYWx1ZSkudG9TdHJpbmcoKTtcclxuICAgIH0pfWA7XHJcbn1cclxuLy8gQ2hlY2sgaWYgYSBub2RlIGNvbnRhaW5zIGV4cHJlc3Npb25zIHRoYXQgcmVmZXJlbmNlIGN1cnJlbnQgY29udGV4dCBzY29wZSBpZHNcclxuZnVuY3Rpb24gaGFzU2NvcGVSZWYobm9kZSwgaWRzKSB7XHJcbiAgICBpZiAoIW5vZGUgfHwgT2JqZWN0LmtleXMoaWRzKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xyXG4gICAgICAgIGNhc2UgMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLzpcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnByb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwID0gbm9kZS5wcm9wc1tpXTtcclxuICAgICAgICAgICAgICAgIGlmIChwLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChoYXNTY29wZVJlZihwLmFyZywgaWRzKSB8fCBoYXNTY29wZVJlZihwLmV4cCwgaWRzKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbm9kZS5jaGlsZHJlbi5zb21lKGMgPT4gaGFzU2NvcGVSZWYoYywgaWRzKSk7XHJcbiAgICAgICAgY2FzZSAxMSAvKiBOb2RlVHlwZXMuRk9SICovOlxyXG4gICAgICAgICAgICBpZiAoaGFzU2NvcGVSZWYobm9kZS5zb3VyY2UsIGlkcykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBub2RlLmNoaWxkcmVuLnNvbWUoYyA9PiBoYXNTY29wZVJlZihjLCBpZHMpKTtcclxuICAgICAgICBjYXNlIDkgLyogTm9kZVR5cGVzLklGICovOlxyXG4gICAgICAgICAgICByZXR1cm4gbm9kZS5icmFuY2hlcy5zb21lKGIgPT4gaGFzU2NvcGVSZWYoYiwgaWRzKSk7XHJcbiAgICAgICAgY2FzZSAxMCAvKiBOb2RlVHlwZXMuSUZfQlJBTkNIICovOlxyXG4gICAgICAgICAgICBpZiAoaGFzU2NvcGVSZWYobm9kZS5jb25kaXRpb24sIGlkcykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBub2RlLmNoaWxkcmVuLnNvbWUoYyA9PiBoYXNTY29wZVJlZihjLCBpZHMpKTtcclxuICAgICAgICBjYXNlIDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICByZXR1cm4gKCFub2RlLmlzU3RhdGljICYmXHJcbiAgICAgICAgICAgICAgICBpc1NpbXBsZUlkZW50aWZpZXIobm9kZS5jb250ZW50KSAmJlxyXG4gICAgICAgICAgICAgICAgISFpZHNbbm9kZS5jb250ZW50XSk7XHJcbiAgICAgICAgY2FzZSA4IC8qIE5vZGVUeXBlcy5DT01QT1VORF9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICByZXR1cm4gbm9kZS5jaGlsZHJlbi5zb21lKGMgPT4gaXNPYmplY3QoYykgJiYgaGFzU2NvcGVSZWYoYywgaWRzKSk7XHJcbiAgICAgICAgY2FzZSA1IC8qIE5vZGVUeXBlcy5JTlRFUlBPTEFUSU9OICovOlxyXG4gICAgICAgIGNhc2UgMTIgLyogTm9kZVR5cGVzLlRFWFRfQ0FMTCAqLzpcclxuICAgICAgICAgICAgcmV0dXJuIGhhc1Njb3BlUmVmKG5vZGUuY29udGVudCwgaWRzKTtcclxuICAgICAgICBjYXNlIDIgLyogTm9kZVR5cGVzLlRFWFQgKi86XHJcbiAgICAgICAgY2FzZSAzIC8qIE5vZGVUeXBlcy5DT01NRU5UICovOlxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkgO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2V0TWVtb2VkVk5vZGVDYWxsKG5vZGUpIHtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IDE0IC8qIE5vZGVUeXBlcy5KU19DQUxMX0VYUFJFU1NJT04gKi8gJiYgbm9kZS5jYWxsZWUgPT09IFdJVEhfTUVNTykge1xyXG4gICAgICAgIHJldHVybiBub2RlLmFyZ3VtZW50c1sxXS5yZXR1cm5zO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gbWFrZUJsb2NrKG5vZGUsIHsgaGVscGVyLCByZW1vdmVIZWxwZXIsIGluU1NSIH0pIHtcclxuICAgIGlmICghbm9kZS5pc0Jsb2NrKSB7XHJcbiAgICAgICAgbm9kZS5pc0Jsb2NrID0gdHJ1ZTtcclxuICAgICAgICByZW1vdmVIZWxwZXIoZ2V0Vk5vZGVIZWxwZXIoaW5TU1IsIG5vZGUuaXNDb21wb25lbnQpKTtcclxuICAgICAgICBoZWxwZXIoT1BFTl9CTE9DSyk7XHJcbiAgICAgICAgaGVscGVyKGdldFZOb2RlQmxvY2tIZWxwZXIoaW5TU1IsIG5vZGUuaXNDb21wb25lbnQpKTtcclxuICAgIH1cclxufVxuXG5jb25zdCBkZXByZWNhdGlvbkRhdGEgPSB7XHJcbiAgICBbXCJDT01QSUxFUl9JU19PTl9FTEVNRU5UXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX0lTX09OX0VMRU1FTlQgKi9dOiB7XHJcbiAgICAgICAgbWVzc2FnZTogYFBsYXRmb3JtLW5hdGl2ZSBlbGVtZW50cyB3aXRoIFwiaXNcIiBwcm9wIHdpbGwgbm8gbG9uZ2VyIGJlIGAgK1xyXG4gICAgICAgICAgICBgdHJlYXRlZCBhcyBjb21wb25lbnRzIGluIFZ1ZSAzIHVubGVzcyB0aGUgXCJpc1wiIHZhbHVlIGlzIGV4cGxpY2l0bHkgYCArXHJcbiAgICAgICAgICAgIGBwcmVmaXhlZCB3aXRoIFwidnVlOlwiLmAsXHJcbiAgICAgICAgbGluazogYGh0dHBzOi8vdjMtbWlncmF0aW9uLnZ1ZWpzLm9yZy9icmVha2luZy1jaGFuZ2VzL2N1c3RvbS1lbGVtZW50cy1pbnRlcm9wLmh0bWxgXHJcbiAgICB9LFxyXG4gICAgW1wiQ09NUElMRVJfVl9CSU5EX1NZTkNcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfVl9CSU5EX1NZTkMgKi9dOiB7XHJcbiAgICAgICAgbWVzc2FnZToga2V5ID0+IGAuc3luYyBtb2RpZmllciBmb3Igdi1iaW5kIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB2LW1vZGVsIHdpdGggYCArXHJcbiAgICAgICAgICAgIGBhcmd1bWVudCBpbnN0ZWFkLiBcXGB2LWJpbmQ6JHtrZXl9LnN5bmNcXGAgc2hvdWxkIGJlIGNoYW5nZWQgdG8gYCArXHJcbiAgICAgICAgICAgIGBcXGB2LW1vZGVsOiR7a2V5fVxcYC5gLFxyXG4gICAgICAgIGxpbms6IGBodHRwczovL3YzLW1pZ3JhdGlvbi52dWVqcy5vcmcvYnJlYWtpbmctY2hhbmdlcy92LW1vZGVsLmh0bWxgXHJcbiAgICB9LFxyXG4gICAgW1wiQ09NUElMRVJfVl9CSU5EX1BST1BcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfVl9CSU5EX1BST1AgKi9dOiB7XHJcbiAgICAgICAgbWVzc2FnZTogYC5wcm9wIG1vZGlmaWVyIGZvciB2LWJpbmQgaGFzIGJlZW4gcmVtb3ZlZCBhbmQgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4gYCArXHJcbiAgICAgICAgICAgIGBWdWUgMyB3aWxsIGF1dG9tYXRpY2FsbHkgc2V0IGEgYmluZGluZyBhcyBET00gcHJvcGVydHkgd2hlbiBhcHByb3ByaWF0ZS5gXHJcbiAgICB9LFxyXG4gICAgW1wiQ09NUElMRVJfVl9CSU5EX09CSkVDVF9PUkRFUlwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9WX0JJTkRfT0JKRUNUX09SREVSICovXToge1xyXG4gICAgICAgIG1lc3NhZ2U6IGB2LWJpbmQ9XCJvYmpcIiB1c2FnZSBpcyBub3cgb3JkZXIgc2Vuc2l0aXZlIGFuZCBiZWhhdmVzIGxpa2UgSmF2YVNjcmlwdCBgICtcclxuICAgICAgICAgICAgYG9iamVjdCBzcHJlYWQ6IGl0IHdpbGwgbm93IG92ZXJ3cml0ZSBhbiBleGlzdGluZyBub24tbWVyZ2VhYmxlIGF0dHJpYnV0ZSBgICtcclxuICAgICAgICAgICAgYHRoYXQgYXBwZWFycyBiZWZvcmUgdi1iaW5kIGluIHRoZSBjYXNlIG9mIGNvbmZsaWN0LiBgICtcclxuICAgICAgICAgICAgYFRvIHJldGFpbiAyLnggYmVoYXZpb3IsIG1vdmUgdi1iaW5kIHRvIG1ha2UgaXQgdGhlIGZpcnN0IGF0dHJpYnV0ZS4gYCArXHJcbiAgICAgICAgICAgIGBZb3UgY2FuIGFsc28gc3VwcHJlc3MgdGhpcyB3YXJuaW5nIGlmIHRoZSB1c2FnZSBpcyBpbnRlbmRlZC5gLFxyXG4gICAgICAgIGxpbms6IGBodHRwczovL3YzLW1pZ3JhdGlvbi52dWVqcy5vcmcvYnJlYWtpbmctY2hhbmdlcy92LWJpbmQuaHRtbGBcclxuICAgIH0sXHJcbiAgICBbXCJDT01QSUxFUl9WX09OX05BVElWRVwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9WX09OX05BVElWRSAqL106IHtcclxuICAgICAgICBtZXNzYWdlOiBgLm5hdGl2ZSBtb2RpZmllciBmb3Igdi1vbiBoYXMgYmVlbiByZW1vdmVkIGFzIGlzIG5vIGxvbmdlciBuZWNlc3NhcnkuYCxcclxuICAgICAgICBsaW5rOiBgaHR0cHM6Ly92My1taWdyYXRpb24udnVlanMub3JnL2JyZWFraW5nLWNoYW5nZXMvdi1vbi1uYXRpdmUtbW9kaWZpZXItcmVtb3ZlZC5odG1sYFxyXG4gICAgfSxcclxuICAgIFtcIkNPTVBJTEVSX1ZfSUZfVl9GT1JfUFJFQ0VERU5DRVwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9WX0lGX1ZfRk9SX1BSRUNFREVOQ0UgKi9dOiB7XHJcbiAgICAgICAgbWVzc2FnZTogYHYtaWYgLyB2LWZvciBwcmVjZWRlbmNlIHdoZW4gdXNlZCBvbiB0aGUgc2FtZSBlbGVtZW50IGhhcyBjaGFuZ2VkIGAgK1xyXG4gICAgICAgICAgICBgaW4gVnVlIDM6IHYtaWYgbm93IHRha2VzIGhpZ2hlciBwcmVjZWRlbmNlIGFuZCB3aWxsIG5vIGxvbmdlciBoYXZlIGAgK1xyXG4gICAgICAgICAgICBgYWNjZXNzIHRvIHYtZm9yIHNjb3BlIHZhcmlhYmxlcy4gSXQgaXMgYmVzdCB0byBhdm9pZCB0aGUgYW1iaWd1aXR5IGAgK1xyXG4gICAgICAgICAgICBgd2l0aCA8dGVtcGxhdGU+IHRhZ3Mgb3IgdXNlIGEgY29tcHV0ZWQgcHJvcGVydHkgdGhhdCBmaWx0ZXJzIHYtZm9yIGAgK1xyXG4gICAgICAgICAgICBgZGF0YSBzb3VyY2UuYCxcclxuICAgICAgICBsaW5rOiBgaHR0cHM6Ly92My1taWdyYXRpb24udnVlanMub3JnL2JyZWFraW5nLWNoYW5nZXMvdi1pZi12LWZvci5odG1sYFxyXG4gICAgfSxcclxuICAgIFtcIkNPTVBJTEVSX05BVElWRV9URU1QTEFURVwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9OQVRJVkVfVEVNUExBVEUgKi9dOiB7XHJcbiAgICAgICAgbWVzc2FnZTogYDx0ZW1wbGF0ZT4gd2l0aCBubyBzcGVjaWFsIGRpcmVjdGl2ZXMgd2lsbCByZW5kZXIgYXMgYSBuYXRpdmUgdGVtcGxhdGUgYCArXHJcbiAgICAgICAgICAgIGBlbGVtZW50IGluc3RlYWQgb2YgaXRzIGlubmVyIGNvbnRlbnQgaW4gVnVlIDMuYFxyXG4gICAgfSxcclxuICAgIFtcIkNPTVBJTEVSX0lOTElORV9URU1QTEFURVwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9JTkxJTkVfVEVNUExBVEUgKi9dOiB7XHJcbiAgICAgICAgbWVzc2FnZTogYFwiaW5saW5lLXRlbXBsYXRlXCIgaGFzIGJlZW4gcmVtb3ZlZCBpbiBWdWUgMy5gLFxyXG4gICAgICAgIGxpbms6IGBodHRwczovL3YzLW1pZ3JhdGlvbi52dWVqcy5vcmcvYnJlYWtpbmctY2hhbmdlcy9pbmxpbmUtdGVtcGxhdGUtYXR0cmlidXRlLmh0bWxgXHJcbiAgICB9LFxyXG4gICAgW1wiQ09NUElMRVJfRklMVEVSXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX0ZJTFRFUlMgKi9dOiB7XHJcbiAgICAgICAgbWVzc2FnZTogYGZpbHRlcnMgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gVnVlIDMuIGAgK1xyXG4gICAgICAgICAgICBgVGhlIFwifFwiIHN5bWJvbCB3aWxsIGJlIHRyZWF0ZWQgYXMgbmF0aXZlIEphdmFTY3JpcHQgYml0d2lzZSBPUiBvcGVyYXRvci4gYCArXHJcbiAgICAgICAgICAgIGBVc2UgbWV0aG9kIGNhbGxzIG9yIGNvbXB1dGVkIHByb3BlcnRpZXMgaW5zdGVhZC5gLFxyXG4gICAgICAgIGxpbms6IGBodHRwczovL3YzLW1pZ3JhdGlvbi52dWVqcy5vcmcvYnJlYWtpbmctY2hhbmdlcy9maWx0ZXJzLmh0bWxgXHJcbiAgICB9XHJcbn07XHJcbmZ1bmN0aW9uIGdldENvbXBhdFZhbHVlKGtleSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgY29uZmlnID0gY29udGV4dC5vcHRpb25zXHJcbiAgICAgICAgPyBjb250ZXh0Lm9wdGlvbnMuY29tcGF0Q29uZmlnXHJcbiAgICAgICAgOiBjb250ZXh0LmNvbXBhdENvbmZpZztcclxuICAgIGNvbnN0IHZhbHVlID0gY29uZmlnICYmIGNvbmZpZ1trZXldO1xyXG4gICAgaWYgKGtleSA9PT0gJ01PREUnKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlIHx8IDM7IC8vIGNvbXBpbGVyIGRlZmF1bHRzIHRvIHYzIGJlaGF2aW9yXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaXNDb21wYXRFbmFibGVkKGtleSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgbW9kZSA9IGdldENvbXBhdFZhbHVlKCdNT0RFJywgY29udGV4dCk7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGdldENvbXBhdFZhbHVlKGtleSwgY29udGV4dCk7XHJcbiAgICAvLyBpbiB2MyBtb2RlLCBvbmx5IGVuYWJsZSBpZiBleHBsaWNpdGx5IHNldCB0byB0cnVlXHJcbiAgICAvLyBvdGhlcndpc2UgZW5hYmxlIGZvciBhbnkgbm9uLWZhbHNlIHZhbHVlXHJcbiAgICByZXR1cm4gbW9kZSA9PT0gMyA/IHZhbHVlID09PSB0cnVlIDogdmFsdWUgIT09IGZhbHNlO1xyXG59XHJcbmZ1bmN0aW9uIGNoZWNrQ29tcGF0RW5hYmxlZChrZXksIGNvbnRleHQsIGxvYywgLi4uYXJncykge1xyXG4gICAgY29uc3QgZW5hYmxlZCA9IGlzQ29tcGF0RW5hYmxlZChrZXksIGNvbnRleHQpO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBlbmFibGVkKSB7XHJcbiAgICAgICAgd2FybkRlcHJlY2F0aW9uKGtleSwgY29udGV4dCwgbG9jLCAuLi5hcmdzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBlbmFibGVkO1xyXG59XHJcbmZ1bmN0aW9uIHdhcm5EZXByZWNhdGlvbihrZXksIGNvbnRleHQsIGxvYywgLi4uYXJncykge1xyXG4gICAgY29uc3QgdmFsID0gZ2V0Q29tcGF0VmFsdWUoa2V5LCBjb250ZXh0KTtcclxuICAgIGlmICh2YWwgPT09ICdzdXBwcmVzcy13YXJuaW5nJykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgbWVzc2FnZSwgbGluayB9ID0gZGVwcmVjYXRpb25EYXRhW2tleV07XHJcbiAgICBjb25zdCBtc2cgPSBgKGRlcHJlY2F0aW9uICR7a2V5fSkgJHt0eXBlb2YgbWVzc2FnZSA9PT0gJ2Z1bmN0aW9uJyA/IG1lc3NhZ2UoLi4uYXJncykgOiBtZXNzYWdlfSR7bGluayA/IGBcXG4gIERldGFpbHM6ICR7bGlua31gIDogYGB9YDtcclxuICAgIGNvbnN0IGVyciA9IG5ldyBTeW50YXhFcnJvcihtc2cpO1xyXG4gICAgZXJyLmNvZGUgPSBrZXk7XHJcbiAgICBpZiAobG9jKVxyXG4gICAgICAgIGVyci5sb2MgPSBsb2M7XHJcbiAgICBjb250ZXh0Lm9uV2FybihlcnIpO1xyXG59XG5cbi8vIFRoZSBkZWZhdWx0IGRlY29kZXIgb25seSBwcm92aWRlcyBlc2NhcGVzIGZvciBjaGFyYWN0ZXJzIHJlc2VydmVkIGFzIHBhcnQgb2ZcclxuLy8gdGhlIHRlbXBsYXRlIHN5bnRheCwgYW5kIGlzIG9ubHkgdXNlZCBpZiB0aGUgY3VzdG9tIHJlbmRlcmVyIGRpZCBub3QgcHJvdmlkZVxyXG4vLyBhIHBsYXRmb3JtLXNwZWNpZmljIGRlY29kZXIuXHJcbmNvbnN0IGRlY29kZVJFID0gLyYoZ3R8bHR8YW1wfGFwb3N8cXVvdCk7L2c7XHJcbmNvbnN0IGRlY29kZU1hcCA9IHtcclxuICAgIGd0OiAnPicsXHJcbiAgICBsdDogJzwnLFxyXG4gICAgYW1wOiAnJicsXHJcbiAgICBhcG9zOiBcIidcIixcclxuICAgIHF1b3Q6ICdcIidcclxufTtcclxuY29uc3QgZGVmYXVsdFBhcnNlck9wdGlvbnMgPSB7XHJcbiAgICBkZWxpbWl0ZXJzOiBbYHt7YCwgYH19YF0sXHJcbiAgICBnZXROYW1lc3BhY2U6ICgpID0+IDAgLyogTmFtZXNwYWNlcy5IVE1MICovLFxyXG4gICAgZ2V0VGV4dE1vZGU6ICgpID0+IDAgLyogVGV4dE1vZGVzLkRBVEEgKi8sXHJcbiAgICBpc1ZvaWRUYWc6IE5PLFxyXG4gICAgaXNQcmVUYWc6IE5PLFxyXG4gICAgaXNDdXN0b21FbGVtZW50OiBOTyxcclxuICAgIGRlY29kZUVudGl0aWVzOiAocmF3VGV4dCkgPT4gcmF3VGV4dC5yZXBsYWNlKGRlY29kZVJFLCAoXywgcDEpID0+IGRlY29kZU1hcFtwMV0pLFxyXG4gICAgb25FcnJvcjogZGVmYXVsdE9uRXJyb3IsXHJcbiAgICBvbldhcm46IGRlZmF1bHRPbldhcm4sXHJcbiAgICBjb21tZW50czogKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbn07XHJcbmZ1bmN0aW9uIGJhc2VQYXJzZShjb250ZW50LCBvcHRpb25zID0ge30pIHtcclxuICAgIGNvbnN0IGNvbnRleHQgPSBjcmVhdGVQYXJzZXJDb250ZXh0KGNvbnRlbnQsIG9wdGlvbnMpO1xyXG4gICAgY29uc3Qgc3RhcnQgPSBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICByZXR1cm4gY3JlYXRlUm9vdChwYXJzZUNoaWxkcmVuKGNvbnRleHQsIDAgLyogVGV4dE1vZGVzLkRBVEEgKi8sIFtdKSwgZ2V0U2VsZWN0aW9uKGNvbnRleHQsIHN0YXJ0KSk7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlUGFyc2VyQ29udGV4dChjb250ZW50LCByYXdPcHRpb25zKSB7XHJcbiAgICBjb25zdCBvcHRpb25zID0gZXh0ZW5kKHt9LCBkZWZhdWx0UGFyc2VyT3B0aW9ucyk7XHJcbiAgICBsZXQga2V5O1xyXG4gICAgZm9yIChrZXkgaW4gcmF3T3B0aW9ucykge1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBvcHRpb25zW2tleV0gPVxyXG4gICAgICAgICAgICByYXdPcHRpb25zW2tleV0gPT09IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgPyBkZWZhdWx0UGFyc2VyT3B0aW9uc1trZXldXHJcbiAgICAgICAgICAgICAgICA6IHJhd09wdGlvbnNba2V5XTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgb3B0aW9ucyxcclxuICAgICAgICBjb2x1bW46IDEsXHJcbiAgICAgICAgbGluZTogMSxcclxuICAgICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgICAgb3JpZ2luYWxTb3VyY2U6IGNvbnRlbnQsXHJcbiAgICAgICAgc291cmNlOiBjb250ZW50LFxyXG4gICAgICAgIGluUHJlOiBmYWxzZSxcclxuICAgICAgICBpblZQcmU6IGZhbHNlLFxyXG4gICAgICAgIG9uV2Fybjogb3B0aW9ucy5vbldhcm5cclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VDaGlsZHJlbihjb250ZXh0LCBtb2RlLCBhbmNlc3RvcnMpIHtcclxuICAgIGNvbnN0IHBhcmVudCA9IGxhc3QoYW5jZXN0b3JzKTtcclxuICAgIGNvbnN0IG5zID0gcGFyZW50ID8gcGFyZW50Lm5zIDogMCAvKiBOYW1lc3BhY2VzLkhUTUwgKi87XHJcbiAgICBjb25zdCBub2RlcyA9IFtdO1xyXG4gICAgd2hpbGUgKCFpc0VuZChjb250ZXh0LCBtb2RlLCBhbmNlc3RvcnMpKSB7XHJcbiAgICAgICAgY29uc3QgcyA9IGNvbnRleHQuc291cmNlO1xyXG4gICAgICAgIGxldCBub2RlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmIChtb2RlID09PSAwIC8qIFRleHRNb2Rlcy5EQVRBICovIHx8IG1vZGUgPT09IDEgLyogVGV4dE1vZGVzLlJDREFUQSAqLykge1xyXG4gICAgICAgICAgICBpZiAoIWNvbnRleHQuaW5WUHJlICYmIHN0YXJ0c1dpdGgocywgY29udGV4dC5vcHRpb25zLmRlbGltaXRlcnNbMF0pKSB7XHJcbiAgICAgICAgICAgICAgICAvLyAne3snXHJcbiAgICAgICAgICAgICAgICBub2RlID0gcGFyc2VJbnRlcnBvbGF0aW9uKGNvbnRleHQsIG1vZGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKG1vZGUgPT09IDAgLyogVGV4dE1vZGVzLkRBVEEgKi8gJiYgc1swXSA9PT0gJzwnKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9wYXJzaW5nLmh0bWwjdGFnLW9wZW4tc3RhdGVcclxuICAgICAgICAgICAgICAgIGlmIChzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCA1IC8qIEVycm9yQ29kZXMuRU9GX0JFRk9SRV9UQUdfTkFNRSAqLywgMSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzWzFdID09PSAnIScpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9wYXJzaW5nLmh0bWwjbWFya3VwLWRlY2xhcmF0aW9uLW9wZW4tc3RhdGVcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRzV2l0aChzLCAnPCEtLScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBwYXJzZUNvbW1lbnQoY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXJ0c1dpdGgocywgJzwhRE9DVFlQRScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZSBET0NUWVBFIGJ5IGEgbGltaXRhdGlvbi5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHBhcnNlQm9ndXNDb21tZW50KGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzdGFydHNXaXRoKHMsICc8IVtDREFUQVsnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobnMgIT09IDAgLyogTmFtZXNwYWNlcy5IVE1MICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gcGFyc2VDREFUQShjb250ZXh0LCBhbmNlc3RvcnMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDEgLyogRXJyb3JDb2Rlcy5DREFUQV9JTl9IVE1MX0NPTlRFTlQgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHBhcnNlQm9ndXNDb21tZW50KGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMTEgLyogRXJyb3JDb2Rlcy5JTkNPUlJFQ1RMWV9PUEVORURfQ09NTUVOVCAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBwYXJzZUJvZ3VzQ29tbWVudChjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzWzFdID09PSAnLycpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9wYXJzaW5nLmh0bWwjZW5kLXRhZy1vcGVuLXN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHMubGVuZ3RoID09PSAyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCA1IC8qIEVycm9yQ29kZXMuRU9GX0JFRk9SRV9UQUdfTkFNRSAqLywgMik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNbMl0gPT09ICc+Jykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMTQgLyogRXJyb3JDb2Rlcy5NSVNTSU5HX0VORF9UQUdfTkFNRSAqLywgMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCAzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKC9bYS16XS9pLnRlc3Qoc1syXSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDIzIC8qIEVycm9yQ29kZXMuWF9JTlZBTElEX0VORF9UQUcgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZVRhZyhjb250ZXh0LCAxIC8qIFRhZ1R5cGUuRW5kICovLCBwYXJlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAxMiAvKiBFcnJvckNvZGVzLklOVkFMSURfRklSU1RfQ0hBUkFDVEVSX09GX1RBR19OQU1FICovLCAyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHBhcnNlQm9ndXNDb21tZW50KGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKC9bYS16XS9pLnRlc3Qoc1sxXSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBub2RlID0gcGFyc2VFbGVtZW50KGNvbnRleHQsIGFuY2VzdG9ycyk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gMi54IDx0ZW1wbGF0ZT4gd2l0aCBubyBkaXJlY3RpdmUgY29tcGF0XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX05BVElWRV9URU1QTEFURVwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9OQVRJVkVfVEVNUExBVEUgKi8sIGNvbnRleHQpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS50YWcgPT09ICd0ZW1wbGF0ZScgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgIW5vZGUucHJvcHMuc29tZShwID0+IHAudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NwZWNpYWxUZW1wbGF0ZURpcmVjdGl2ZShwLm5hbWUpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5EZXByZWNhdGlvbihcIkNPTVBJTEVSX05BVElWRV9URU1QTEFURVwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9OQVRJVkVfVEVNUExBVEUgKi8sIGNvbnRleHQsIG5vZGUubG9jKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUuY2hpbGRyZW47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc1sxXSA9PT0gJz8nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDIxIC8qIEVycm9yQ29kZXMuVU5FWFBFQ1RFRF9RVUVTVElPTl9NQVJLX0lOU1RFQURfT0ZfVEFHX05BTUUgKi8sIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIG5vZGUgPSBwYXJzZUJvZ3VzQ29tbWVudChjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAxMiAvKiBFcnJvckNvZGVzLklOVkFMSURfRklSU1RfQ0hBUkFDVEVSX09GX1RBR19OQU1FICovLCAxKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIW5vZGUpIHtcclxuICAgICAgICAgICAgbm9kZSA9IHBhcnNlVGV4dChjb250ZXh0LCBtb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzQXJyYXkobm9kZSkpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBwdXNoTm9kZShub2Rlcywgbm9kZVtpXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHB1c2hOb2RlKG5vZGVzLCBub2RlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBXaGl0ZXNwYWNlIGhhbmRsaW5nIHN0cmF0ZWd5IGxpa2UgdjJcclxuICAgIGxldCByZW1vdmVkV2hpdGVzcGFjZSA9IGZhbHNlO1xyXG4gICAgaWYgKG1vZGUgIT09IDIgLyogVGV4dE1vZGVzLlJBV1RFWFQgKi8gJiYgbW9kZSAhPT0gMSAvKiBUZXh0TW9kZXMuUkNEQVRBICovKSB7XHJcbiAgICAgICAgY29uc3Qgc2hvdWxkQ29uZGVuc2UgPSBjb250ZXh0Lm9wdGlvbnMud2hpdGVzcGFjZSAhPT0gJ3ByZXNlcnZlJztcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tpXTtcclxuICAgICAgICAgICAgaWYgKCFjb250ZXh0LmluUHJlICYmIG5vZGUudHlwZSA9PT0gMiAvKiBOb2RlVHlwZXMuVEVYVCAqLykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCEvW15cXHRcXHJcXG5cXGYgXS8udGVzdChub2RlLmNvbnRlbnQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldiA9IG5vZGVzW2kgLSAxXTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gbm9kZXNbaSArIDFdO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBpZjpcclxuICAgICAgICAgICAgICAgICAgICAvLyAtIHRoZSB3aGl0ZXNwYWNlIGlzIHRoZSBmaXJzdCBvciBsYXN0IG5vZGUsIG9yOlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIC0gKGNvbmRlbnNlIG1vZGUpIHRoZSB3aGl0ZXNwYWNlIGlzIGFkamFjZW50IHRvIGEgY29tbWVudCwgb3I6XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gLSAoY29uZGVuc2UgbW9kZSkgdGhlIHdoaXRlc3BhY2UgaXMgYmV0d2VlbiB0d28gZWxlbWVudHMgQU5EIGNvbnRhaW5zIG5ld2xpbmVcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXByZXYgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgIW5leHQgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHNob3VsZENvbmRlbnNlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJldi50eXBlID09PSAzIC8qIE5vZGVUeXBlcy5DT01NRU5UICovIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC50eXBlID09PSAzIC8qIE5vZGVUeXBlcy5DT01NRU5UICovIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZXYudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL1tcXHJcXG5dLy50ZXN0KG5vZGUuY29udGVudCkpKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZFdoaXRlc3BhY2UgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2Rlc1tpXSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIHRoZSB3aGl0ZXNwYWNlIGlzIGNvbmRlbnNlZCBpbnRvIGEgc2luZ2xlIHNwYWNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuY29udGVudCA9ICcgJztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzaG91bGRDb25kZW5zZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGluIGNvbmRlbnNlIG1vZGUsIGNvbnNlY3V0aXZlIHdoaXRlc3BhY2VzIGluIHRleHQgYXJlIGNvbmRlbnNlZFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGRvd24gdG8gYSBzaW5nbGUgc3BhY2UuXHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5jb250ZW50ID0gbm9kZS5jb250ZW50LnJlcGxhY2UoL1tcXHRcXHJcXG5cXGYgXSsvZywgJyAnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBSZW1vdmUgY29tbWVudCBub2RlcyBpZiBkZXNpcmVkIGJ5IGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLyAmJiAhY29udGV4dC5vcHRpb25zLmNvbW1lbnRzKSB7XHJcbiAgICAgICAgICAgICAgICByZW1vdmVkV2hpdGVzcGFjZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBub2Rlc1tpXSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbnRleHQuaW5QcmUgJiYgcGFyZW50ICYmIGNvbnRleHQub3B0aW9ucy5pc1ByZVRhZyhwYXJlbnQudGFnKSkge1xyXG4gICAgICAgICAgICAvLyByZW1vdmUgbGVhZGluZyBuZXdsaW5lIHBlciBodG1sIHNwZWNcclxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZ3JvdXBpbmctY29udGVudC5odG1sI3RoZS1wcmUtZWxlbWVudFxyXG4gICAgICAgICAgICBjb25zdCBmaXJzdCA9IG5vZGVzWzBdO1xyXG4gICAgICAgICAgICBpZiAoZmlyc3QgJiYgZmlyc3QudHlwZSA9PT0gMiAvKiBOb2RlVHlwZXMuVEVYVCAqLykge1xyXG4gICAgICAgICAgICAgICAgZmlyc3QuY29udGVudCA9IGZpcnN0LmNvbnRlbnQucmVwbGFjZSgvXlxccj9cXG4vLCAnJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVtb3ZlZFdoaXRlc3BhY2UgPyBub2Rlcy5maWx0ZXIoQm9vbGVhbikgOiBub2RlcztcclxufVxyXG5mdW5jdGlvbiBwdXNoTm9kZShub2Rlcywgbm9kZSkge1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gMiAvKiBOb2RlVHlwZXMuVEVYVCAqLykge1xyXG4gICAgICAgIGNvbnN0IHByZXYgPSBsYXN0KG5vZGVzKTtcclxuICAgICAgICAvLyBNZXJnZSBpZiBib3RoIHRoaXMgYW5kIHRoZSBwcmV2aW91cyBub2RlIGFyZSB0ZXh0IGFuZCB0aG9zZSBhcmVcclxuICAgICAgICAvLyBjb25zZWN1dGl2ZS4gVGhpcyBoYXBwZW5zIGZvciBjYXNlcyBsaWtlIFwiYSA8IGJcIi5cclxuICAgICAgICBpZiAocHJldiAmJlxyXG4gICAgICAgICAgICBwcmV2LnR5cGUgPT09IDIgLyogTm9kZVR5cGVzLlRFWFQgKi8gJiZcclxuICAgICAgICAgICAgcHJldi5sb2MuZW5kLm9mZnNldCA9PT0gbm9kZS5sb2Muc3RhcnQub2Zmc2V0KSB7XHJcbiAgICAgICAgICAgIHByZXYuY29udGVudCArPSBub2RlLmNvbnRlbnQ7XHJcbiAgICAgICAgICAgIHByZXYubG9jLmVuZCA9IG5vZGUubG9jLmVuZDtcclxuICAgICAgICAgICAgcHJldi5sb2Muc291cmNlICs9IG5vZGUubG9jLnNvdXJjZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG5vZGVzLnB1c2gobm9kZSk7XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VDREFUQShjb250ZXh0LCBhbmNlc3RvcnMpIHtcclxuICAgIGFkdmFuY2VCeShjb250ZXh0LCA5KTtcclxuICAgIGNvbnN0IG5vZGVzID0gcGFyc2VDaGlsZHJlbihjb250ZXh0LCAzIC8qIFRleHRNb2Rlcy5DREFUQSAqLywgYW5jZXN0b3JzKTtcclxuICAgIGlmIChjb250ZXh0LnNvdXJjZS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgNiAvKiBFcnJvckNvZGVzLkVPRl9JTl9DREFUQSAqLyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgMyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbm9kZXM7XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VDb21tZW50KGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Q3Vyc29yKGNvbnRleHQpO1xyXG4gICAgbGV0IGNvbnRlbnQ7XHJcbiAgICAvLyBSZWd1bGFyIGNvbW1lbnQuXHJcbiAgICBjb25zdCBtYXRjaCA9IC8tLShcXCEpPz4vLmV4ZWMoY29udGV4dC5zb3VyY2UpO1xyXG4gICAgaWYgKCFtYXRjaCkge1xyXG4gICAgICAgIGNvbnRlbnQgPSBjb250ZXh0LnNvdXJjZS5zbGljZSg0KTtcclxuICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgY29udGV4dC5zb3VyY2UubGVuZ3RoKTtcclxuICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgNyAvKiBFcnJvckNvZGVzLkVPRl9JTl9DT01NRU5UICovKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChtYXRjaC5pbmRleCA8PSAzKSB7XHJcbiAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAwIC8qIEVycm9yQ29kZXMuQUJSVVBUX0NMT1NJTkdfT0ZfRU1QVFlfQ09NTUVOVCAqLyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChtYXRjaFsxXSkge1xyXG4gICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMTAgLyogRXJyb3JDb2Rlcy5JTkNPUlJFQ1RMWV9DTE9TRURfQ09NTUVOVCAqLyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRlbnQgPSBjb250ZXh0LnNvdXJjZS5zbGljZSg0LCBtYXRjaC5pbmRleCk7XHJcbiAgICAgICAgLy8gQWR2YW5jaW5nIHdpdGggcmVwb3J0aW5nIG5lc3RlZCBjb21tZW50cy5cclxuICAgICAgICBjb25zdCBzID0gY29udGV4dC5zb3VyY2Uuc2xpY2UoMCwgbWF0Y2guaW5kZXgpO1xyXG4gICAgICAgIGxldCBwcmV2SW5kZXggPSAxLCBuZXN0ZWRJbmRleCA9IDA7XHJcbiAgICAgICAgd2hpbGUgKChuZXN0ZWRJbmRleCA9IHMuaW5kZXhPZignPCEtLScsIHByZXZJbmRleCkpICE9PSAtMSkge1xyXG4gICAgICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgbmVzdGVkSW5kZXggLSBwcmV2SW5kZXggKyAxKTtcclxuICAgICAgICAgICAgaWYgKG5lc3RlZEluZGV4ICsgNCA8IHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMTYgLyogRXJyb3JDb2Rlcy5ORVNURURfQ09NTUVOVCAqLyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcHJldkluZGV4ID0gbmVzdGVkSW5kZXggKyAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGggLSBwcmV2SW5kZXggKyAxKTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLyxcclxuICAgICAgICBjb250ZW50LFxyXG4gICAgICAgIGxvYzogZ2V0U2VsZWN0aW9uKGNvbnRleHQsIHN0YXJ0KVxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBwYXJzZUJvZ3VzQ29tbWVudChjb250ZXh0KSB7XHJcbiAgICBjb25zdCBzdGFydCA9IGdldEN1cnNvcihjb250ZXh0KTtcclxuICAgIGNvbnN0IGNvbnRlbnRTdGFydCA9IGNvbnRleHQuc291cmNlWzFdID09PSAnPycgPyAxIDogMjtcclxuICAgIGxldCBjb250ZW50O1xyXG4gICAgY29uc3QgY2xvc2VJbmRleCA9IGNvbnRleHQuc291cmNlLmluZGV4T2YoJz4nKTtcclxuICAgIGlmIChjbG9zZUluZGV4ID09PSAtMSkge1xyXG4gICAgICAgIGNvbnRlbnQgPSBjb250ZXh0LnNvdXJjZS5zbGljZShjb250ZW50U3RhcnQpO1xyXG4gICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCBjb250ZXh0LnNvdXJjZS5sZW5ndGgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29udGVudCA9IGNvbnRleHQuc291cmNlLnNsaWNlKGNvbnRlbnRTdGFydCwgY2xvc2VJbmRleCk7XHJcbiAgICAgICAgYWR2YW5jZUJ5KGNvbnRleHQsIGNsb3NlSW5kZXggKyAxKTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLyxcclxuICAgICAgICBjb250ZW50LFxyXG4gICAgICAgIGxvYzogZ2V0U2VsZWN0aW9uKGNvbnRleHQsIHN0YXJ0KVxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBwYXJzZUVsZW1lbnQoY29udGV4dCwgYW5jZXN0b3JzKSB7XHJcbiAgICAvLyBTdGFydCB0YWcuXHJcbiAgICBjb25zdCB3YXNJblByZSA9IGNvbnRleHQuaW5QcmU7XHJcbiAgICBjb25zdCB3YXNJblZQcmUgPSBjb250ZXh0LmluVlByZTtcclxuICAgIGNvbnN0IHBhcmVudCA9IGxhc3QoYW5jZXN0b3JzKTtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSBwYXJzZVRhZyhjb250ZXh0LCAwIC8qIFRhZ1R5cGUuU3RhcnQgKi8sIHBhcmVudCk7XHJcbiAgICBjb25zdCBpc1ByZUJvdW5kYXJ5ID0gY29udGV4dC5pblByZSAmJiAhd2FzSW5QcmU7XHJcbiAgICBjb25zdCBpc1ZQcmVCb3VuZGFyeSA9IGNvbnRleHQuaW5WUHJlICYmICF3YXNJblZQcmU7XHJcbiAgICBpZiAoZWxlbWVudC5pc1NlbGZDbG9zaW5nIHx8IGNvbnRleHQub3B0aW9ucy5pc1ZvaWRUYWcoZWxlbWVudC50YWcpKSB7XHJcbiAgICAgICAgLy8gIzQwMzAgc2VsZi1jbG9zaW5nIDxwcmU+IHRhZ1xyXG4gICAgICAgIGlmIChpc1ByZUJvdW5kYXJ5KSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuaW5QcmUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzVlByZUJvdW5kYXJ5KSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuaW5WUHJlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBlbGVtZW50O1xyXG4gICAgfVxyXG4gICAgLy8gQ2hpbGRyZW4uXHJcbiAgICBhbmNlc3RvcnMucHVzaChlbGVtZW50KTtcclxuICAgIGNvbnN0IG1vZGUgPSBjb250ZXh0Lm9wdGlvbnMuZ2V0VGV4dE1vZGUoZWxlbWVudCwgcGFyZW50KTtcclxuICAgIGNvbnN0IGNoaWxkcmVuID0gcGFyc2VDaGlsZHJlbihjb250ZXh0LCBtb2RlLCBhbmNlc3RvcnMpO1xyXG4gICAgYW5jZXN0b3JzLnBvcCgpO1xyXG4gICAgLy8gMi54IGlubGluZS10ZW1wbGF0ZSBjb21wYXRcclxuICAgIHtcclxuICAgICAgICBjb25zdCBpbmxpbmVUZW1wbGF0ZVByb3AgPSBlbGVtZW50LnByb3BzLmZpbmQocCA9PiBwLnR5cGUgPT09IDYgLyogTm9kZVR5cGVzLkFUVFJJQlVURSAqLyAmJiBwLm5hbWUgPT09ICdpbmxpbmUtdGVtcGxhdGUnKTtcclxuICAgICAgICBpZiAoaW5saW5lVGVtcGxhdGVQcm9wICYmXHJcbiAgICAgICAgICAgIGNoZWNrQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX0lOTElORV9URU1QTEFURVwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9JTkxJTkVfVEVNUExBVEUgKi8sIGNvbnRleHQsIGlubGluZVRlbXBsYXRlUHJvcC5sb2MpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxvYyA9IGdldFNlbGVjdGlvbihjb250ZXh0LCBlbGVtZW50LmxvYy5lbmQpO1xyXG4gICAgICAgICAgICBpbmxpbmVUZW1wbGF0ZVByb3AudmFsdWUgPSB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiAyIC8qIE5vZGVUeXBlcy5URVhUICovLFxyXG4gICAgICAgICAgICAgICAgY29udGVudDogbG9jLnNvdXJjZSxcclxuICAgICAgICAgICAgICAgIGxvY1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsZW1lbnQuY2hpbGRyZW4gPSBjaGlsZHJlbjtcclxuICAgIC8vIEVuZCB0YWcuXHJcbiAgICBpZiAoc3RhcnRzV2l0aEVuZFRhZ09wZW4oY29udGV4dC5zb3VyY2UsIGVsZW1lbnQudGFnKSkge1xyXG4gICAgICAgIHBhcnNlVGFnKGNvbnRleHQsIDEgLyogVGFnVHlwZS5FbmQgKi8sIHBhcmVudCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMjQgLyogRXJyb3JDb2Rlcy5YX01JU1NJTkdfRU5EX1RBRyAqLywgMCwgZWxlbWVudC5sb2Muc3RhcnQpO1xyXG4gICAgICAgIGlmIChjb250ZXh0LnNvdXJjZS5sZW5ndGggPT09IDAgJiYgZWxlbWVudC50YWcudG9Mb3dlckNhc2UoKSA9PT0gJ3NjcmlwdCcpIHtcclxuICAgICAgICAgICAgY29uc3QgZmlyc3QgPSBjaGlsZHJlblswXTtcclxuICAgICAgICAgICAgaWYgKGZpcnN0ICYmIHN0YXJ0c1dpdGgoZmlyc3QubG9jLnNvdXJjZSwgJzwhLS0nKSkge1xyXG4gICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDggLyogRXJyb3JDb2Rlcy5FT0ZfSU5fU0NSSVBUX0hUTUxfQ09NTUVOVF9MSUtFX1RFWFQgKi8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxlbWVudC5sb2MgPSBnZXRTZWxlY3Rpb24oY29udGV4dCwgZWxlbWVudC5sb2Muc3RhcnQpO1xyXG4gICAgaWYgKGlzUHJlQm91bmRhcnkpIHtcclxuICAgICAgICBjb250ZXh0LmluUHJlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWUHJlQm91bmRhcnkpIHtcclxuICAgICAgICBjb250ZXh0LmluVlByZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGVsZW1lbnQ7XHJcbn1cclxuY29uc3QgaXNTcGVjaWFsVGVtcGxhdGVEaXJlY3RpdmUgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoYGlmLGVsc2UsZWxzZS1pZixmb3Isc2xvdGApO1xyXG5mdW5jdGlvbiBwYXJzZVRhZyhjb250ZXh0LCB0eXBlLCBwYXJlbnQpIHtcclxuICAgIC8vIFRhZyBvcGVuLlxyXG4gICAgY29uc3Qgc3RhcnQgPSBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICBjb25zdCBtYXRjaCA9IC9ePFxcLz8oW2Etel1bXlxcdFxcclxcblxcZiAvPl0qKS9pLmV4ZWMoY29udGV4dC5zb3VyY2UpO1xyXG4gICAgY29uc3QgdGFnID0gbWF0Y2hbMV07XHJcbiAgICBjb25zdCBucyA9IGNvbnRleHQub3B0aW9ucy5nZXROYW1lc3BhY2UodGFnLCBwYXJlbnQpO1xyXG4gICAgYWR2YW5jZUJ5KGNvbnRleHQsIG1hdGNoWzBdLmxlbmd0aCk7XHJcbiAgICBhZHZhbmNlU3BhY2VzKGNvbnRleHQpO1xyXG4gICAgLy8gc2F2ZSBjdXJyZW50IHN0YXRlIGluIGNhc2Ugd2UgbmVlZCB0byByZS1wYXJzZSBhdHRyaWJ1dGVzIHdpdGggdi1wcmVcclxuICAgIGNvbnN0IGN1cnNvciA9IGdldEN1cnNvcihjb250ZXh0KTtcclxuICAgIGNvbnN0IGN1cnJlbnRTb3VyY2UgPSBjb250ZXh0LnNvdXJjZTtcclxuICAgIC8vIGNoZWNrIDxwcmU+IHRhZ1xyXG4gICAgaWYgKGNvbnRleHQub3B0aW9ucy5pc1ByZVRhZyh0YWcpKSB7XHJcbiAgICAgICAgY29udGV4dC5pblByZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICAvLyBBdHRyaWJ1dGVzLlxyXG4gICAgbGV0IHByb3BzID0gcGFyc2VBdHRyaWJ1dGVzKGNvbnRleHQsIHR5cGUpO1xyXG4gICAgLy8gY2hlY2sgdi1wcmVcclxuICAgIGlmICh0eXBlID09PSAwIC8qIFRhZ1R5cGUuU3RhcnQgKi8gJiZcclxuICAgICAgICAhY29udGV4dC5pblZQcmUgJiZcclxuICAgICAgICBwcm9wcy5zb21lKHAgPT4gcC50eXBlID09PSA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8gJiYgcC5uYW1lID09PSAncHJlJykpIHtcclxuICAgICAgICBjb250ZXh0LmluVlByZSA9IHRydWU7XHJcbiAgICAgICAgLy8gcmVzZXQgY29udGV4dFxyXG4gICAgICAgIGV4dGVuZChjb250ZXh0LCBjdXJzb3IpO1xyXG4gICAgICAgIGNvbnRleHQuc291cmNlID0gY3VycmVudFNvdXJjZTtcclxuICAgICAgICAvLyByZS1wYXJzZSBhdHRycyBhbmQgZmlsdGVyIG91dCB2LXByZSBpdHNlbGZcclxuICAgICAgICBwcm9wcyA9IHBhcnNlQXR0cmlidXRlcyhjb250ZXh0LCB0eXBlKS5maWx0ZXIocCA9PiBwLm5hbWUgIT09ICd2LXByZScpO1xyXG4gICAgfVxyXG4gICAgLy8gVGFnIGNsb3NlLlxyXG4gICAgbGV0IGlzU2VsZkNsb3NpbmcgPSBmYWxzZTtcclxuICAgIGlmIChjb250ZXh0LnNvdXJjZS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgOSAvKiBFcnJvckNvZGVzLkVPRl9JTl9UQUcgKi8pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaXNTZWxmQ2xvc2luZyA9IHN0YXJ0c1dpdGgoY29udGV4dC5zb3VyY2UsICcvPicpO1xyXG4gICAgICAgIGlmICh0eXBlID09PSAxIC8qIFRhZ1R5cGUuRW5kICovICYmIGlzU2VsZkNsb3NpbmcpIHtcclxuICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDQgLyogRXJyb3JDb2Rlcy5FTkRfVEFHX1dJVEhfVFJBSUxJTkdfU09MSURVUyAqLyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCBpc1NlbGZDbG9zaW5nID8gMiA6IDEpO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGUgPT09IDEgLyogVGFnVHlwZS5FbmQgKi8pIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyAyLnggZGVwcmVjYXRpb24gY2hlY2tzXHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgaXNDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfVl9JRl9WX0ZPUl9QUkVDRURFTkNFXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX1ZfSUZfVl9GT1JfUFJFQ0VERU5DRSAqLywgY29udGV4dCkpIHtcclxuICAgICAgICBsZXQgaGFzSWYgPSBmYWxzZTtcclxuICAgICAgICBsZXQgaGFzRm9yID0gZmFsc2U7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBwID0gcHJvcHNbaV07XHJcbiAgICAgICAgICAgIGlmIChwLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHAubmFtZSA9PT0gJ2lmJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc0lmID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHAubmFtZSA9PT0gJ2ZvcicpIHtcclxuICAgICAgICAgICAgICAgICAgICBoYXNGb3IgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChoYXNJZiAmJiBoYXNGb3IpIHtcclxuICAgICAgICAgICAgICAgIHdhcm5EZXByZWNhdGlvbihcIkNPTVBJTEVSX1ZfSUZfVl9GT1JfUFJFQ0VERU5DRVwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9WX0lGX1ZfRk9SX1BSRUNFREVOQ0UgKi8sIGNvbnRleHQsIGdldFNlbGVjdGlvbihjb250ZXh0LCBzdGFydCkpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgdGFnVHlwZSA9IDAgLyogRWxlbWVudFR5cGVzLkVMRU1FTlQgKi87XHJcbiAgICBpZiAoIWNvbnRleHQuaW5WUHJlKSB7XHJcbiAgICAgICAgaWYgKHRhZyA9PT0gJ3Nsb3QnKSB7XHJcbiAgICAgICAgICAgIHRhZ1R5cGUgPSAyIC8qIEVsZW1lbnRUeXBlcy5TTE9UICovO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0YWcgPT09ICd0ZW1wbGF0ZScpIHtcclxuICAgICAgICAgICAgaWYgKHByb3BzLnNvbWUocCA9PiBwLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyAmJiBpc1NwZWNpYWxUZW1wbGF0ZURpcmVjdGl2ZShwLm5hbWUpKSkge1xyXG4gICAgICAgICAgICAgICAgdGFnVHlwZSA9IDMgLyogRWxlbWVudFR5cGVzLlRFTVBMQVRFICovO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlzQ29tcG9uZW50KHRhZywgcHJvcHMsIGNvbnRleHQpKSB7XHJcbiAgICAgICAgICAgIHRhZ1R5cGUgPSAxIC8qIEVsZW1lbnRUeXBlcy5DT01QT05FTlQgKi87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovLFxyXG4gICAgICAgIG5zLFxyXG4gICAgICAgIHRhZyxcclxuICAgICAgICB0YWdUeXBlLFxyXG4gICAgICAgIHByb3BzLFxyXG4gICAgICAgIGlzU2VsZkNsb3NpbmcsXHJcbiAgICAgICAgY2hpbGRyZW46IFtdLFxyXG4gICAgICAgIGxvYzogZ2V0U2VsZWN0aW9uKGNvbnRleHQsIHN0YXJ0KSxcclxuICAgICAgICBjb2RlZ2VuTm9kZTogdW5kZWZpbmVkIC8vIHRvIGJlIGNyZWF0ZWQgZHVyaW5nIHRyYW5zZm9ybSBwaGFzZVxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBpc0NvbXBvbmVudCh0YWcsIHByb3BzLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCBvcHRpb25zID0gY29udGV4dC5vcHRpb25zO1xyXG4gICAgaWYgKG9wdGlvbnMuaXNDdXN0b21FbGVtZW50KHRhZykpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAodGFnID09PSAnY29tcG9uZW50JyB8fFxyXG4gICAgICAgIC9eW0EtWl0vLnRlc3QodGFnKSB8fFxyXG4gICAgICAgIGlzQ29yZUNvbXBvbmVudCh0YWcpIHx8XHJcbiAgICAgICAgKG9wdGlvbnMuaXNCdWlsdEluQ29tcG9uZW50ICYmIG9wdGlvbnMuaXNCdWlsdEluQ29tcG9uZW50KHRhZykpIHx8XHJcbiAgICAgICAgKG9wdGlvbnMuaXNOYXRpdmVUYWcgJiYgIW9wdGlvbnMuaXNOYXRpdmVUYWcodGFnKSkpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIC8vIGF0IHRoaXMgcG9pbnQgdGhlIHRhZyBzaG91bGQgYmUgYSBuYXRpdmUgdGFnLCBidXQgY2hlY2sgZm9yIHBvdGVudGlhbCBcImlzXCJcclxuICAgIC8vIGNhc3RpbmdcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBwID0gcHJvcHNbaV07XHJcbiAgICAgICAgaWYgKHAudHlwZSA9PT0gNiAvKiBOb2RlVHlwZXMuQVRUUklCVVRFICovKSB7XHJcbiAgICAgICAgICAgIGlmIChwLm5hbWUgPT09ICdpcycgJiYgcC52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHAudmFsdWUuY29udGVudC5zdGFydHNXaXRoKCd2dWU6JykpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX0lTX09OX0VMRU1FTlRcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfSVNfT05fRUxFTUVOVCAqLywgY29udGV4dCwgcC5sb2MpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGRpcmVjdGl2ZVxyXG4gICAgICAgICAgICAvLyB2LWlzIChUT0RPIERlcHJlY2F0ZSlcclxuICAgICAgICAgICAgaWYgKHAubmFtZSA9PT0gJ2lzJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoXHJcbiAgICAgICAgICAgIC8vIDppcyBvbiBwbGFpbiBlbGVtZW50IC0gb25seSB0cmVhdCBhcyBjb21wb25lbnQgaW4gY29tcGF0IG1vZGVcclxuICAgICAgICAgICAgcC5uYW1lID09PSAnYmluZCcgJiZcclxuICAgICAgICAgICAgICAgIGlzU3RhdGljQXJnT2YocC5hcmcsICdpcycpICYmXHJcbiAgICAgICAgICAgICAgICB0cnVlICYmXHJcbiAgICAgICAgICAgICAgICBjaGVja0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9JU19PTl9FTEVNRU5UXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX0lTX09OX0VMRU1FTlQgKi8sIGNvbnRleHQsIHAubG9jKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VBdHRyaWJ1dGVzKGNvbnRleHQsIHR5cGUpIHtcclxuICAgIGNvbnN0IHByb3BzID0gW107XHJcbiAgICBjb25zdCBhdHRyaWJ1dGVOYW1lcyA9IG5ldyBTZXQoKTtcclxuICAgIHdoaWxlIChjb250ZXh0LnNvdXJjZS5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgIXN0YXJ0c1dpdGgoY29udGV4dC5zb3VyY2UsICc+JykgJiZcclxuICAgICAgICAhc3RhcnRzV2l0aChjb250ZXh0LnNvdXJjZSwgJy8+JykpIHtcclxuICAgICAgICBpZiAoc3RhcnRzV2l0aChjb250ZXh0LnNvdXJjZSwgJy8nKSkge1xyXG4gICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMjIgLyogRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX1NPTElEVVNfSU5fVEFHICovKTtcclxuICAgICAgICAgICAgYWR2YW5jZUJ5KGNvbnRleHQsIDEpO1xyXG4gICAgICAgICAgICBhZHZhbmNlU3BhY2VzKGNvbnRleHQpO1xyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGUgPT09IDEgLyogVGFnVHlwZS5FbmQgKi8pIHtcclxuICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDMgLyogRXJyb3JDb2Rlcy5FTkRfVEFHX1dJVEhfQVRUUklCVVRFUyAqLyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGF0dHIgPSBwYXJzZUF0dHJpYnV0ZShjb250ZXh0LCBhdHRyaWJ1dGVOYW1lcyk7XHJcbiAgICAgICAgLy8gVHJpbSB3aGl0ZXNwYWNlIGJldHdlZW4gY2xhc3NcclxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdnVlanMvY29yZS9pc3N1ZXMvNDI1MVxyXG4gICAgICAgIGlmIChhdHRyLnR5cGUgPT09IDYgLyogTm9kZVR5cGVzLkFUVFJJQlVURSAqLyAmJlxyXG4gICAgICAgICAgICBhdHRyLnZhbHVlICYmXHJcbiAgICAgICAgICAgIGF0dHIubmFtZSA9PT0gJ2NsYXNzJykge1xyXG4gICAgICAgICAgICBhdHRyLnZhbHVlLmNvbnRlbnQgPSBhdHRyLnZhbHVlLmNvbnRlbnQucmVwbGFjZSgvXFxzKy9nLCAnICcpLnRyaW0oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGUgPT09IDAgLyogVGFnVHlwZS5TdGFydCAqLykge1xyXG4gICAgICAgICAgICBwcm9wcy5wdXNoKGF0dHIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoL15bXlxcdFxcclxcblxcZiAvPl0vLnRlc3QoY29udGV4dC5zb3VyY2UpKSB7XHJcbiAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAxNSAvKiBFcnJvckNvZGVzLk1JU1NJTkdfV0hJVEVTUEFDRV9CRVRXRUVOX0FUVFJJQlVURVMgKi8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhZHZhbmNlU3BhY2VzKGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHByb3BzO1xyXG59XHJcbmZ1bmN0aW9uIHBhcnNlQXR0cmlidXRlKGNvbnRleHQsIG5hbWVTZXQpIHtcclxuICAgIC8vIE5hbWUuXHJcbiAgICBjb25zdCBzdGFydCA9IGdldEN1cnNvcihjb250ZXh0KTtcclxuICAgIGNvbnN0IG1hdGNoID0gL15bXlxcdFxcclxcblxcZiAvPl1bXlxcdFxcclxcblxcZiAvPj1dKi8uZXhlYyhjb250ZXh0LnNvdXJjZSk7XHJcbiAgICBjb25zdCBuYW1lID0gbWF0Y2hbMF07XHJcbiAgICBpZiAobmFtZVNldC5oYXMobmFtZSkpIHtcclxuICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMiAvKiBFcnJvckNvZGVzLkRVUExJQ0FURV9BVFRSSUJVVEUgKi8pO1xyXG4gICAgfVxyXG4gICAgbmFtZVNldC5hZGQobmFtZSk7XHJcbiAgICBpZiAobmFtZVswXSA9PT0gJz0nKSB7XHJcbiAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDE5IC8qIEVycm9yQ29kZXMuVU5FWFBFQ1RFRF9FUVVBTFNfU0lHTl9CRUZPUkVfQVRUUklCVVRFX05BTUUgKi8pO1xyXG4gICAgfVxyXG4gICAge1xyXG4gICAgICAgIGNvbnN0IHBhdHRlcm4gPSAvW1wiJzxdL2c7XHJcbiAgICAgICAgbGV0IG07XHJcbiAgICAgICAgd2hpbGUgKChtID0gcGF0dGVybi5leGVjKG5hbWUpKSkge1xyXG4gICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMTcgLyogRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX0NIQVJBQ1RFUl9JTl9BVFRSSUJVVEVfTkFNRSAqLywgbS5pbmRleCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgYWR2YW5jZUJ5KGNvbnRleHQsIG5hbWUubGVuZ3RoKTtcclxuICAgIC8vIFZhbHVlXHJcbiAgICBsZXQgdmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICBpZiAoL15bXFx0XFxyXFxuXFxmIF0qPS8udGVzdChjb250ZXh0LnNvdXJjZSkpIHtcclxuICAgICAgICBhZHZhbmNlU3BhY2VzKGNvbnRleHQpO1xyXG4gICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCAxKTtcclxuICAgICAgICBhZHZhbmNlU3BhY2VzKGNvbnRleHQpO1xyXG4gICAgICAgIHZhbHVlID0gcGFyc2VBdHRyaWJ1dGVWYWx1ZShjb250ZXh0KTtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAxMyAvKiBFcnJvckNvZGVzLk1JU1NJTkdfQVRUUklCVVRFX1ZBTFVFICovKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBsb2MgPSBnZXRTZWxlY3Rpb24oY29udGV4dCwgc3RhcnQpO1xyXG4gICAgaWYgKCFjb250ZXh0LmluVlByZSAmJiAvXih2LVtBLVphLXowLTktXXw6fFxcLnxAfCMpLy50ZXN0KG5hbWUpKSB7XHJcbiAgICAgICAgY29uc3QgbWF0Y2ggPSAvKD86XnYtKFthLXowLTktXSspKT8oPzooPzo6fF5cXC58XkB8XiMpKFxcW1teXFxdXStcXF18W15cXC5dKykpPyguKyk/JC9pLmV4ZWMobmFtZSk7XHJcbiAgICAgICAgbGV0IGlzUHJvcFNob3J0aGFuZCA9IHN0YXJ0c1dpdGgobmFtZSwgJy4nKTtcclxuICAgICAgICBsZXQgZGlyTmFtZSA9IG1hdGNoWzFdIHx8XHJcbiAgICAgICAgICAgIChpc1Byb3BTaG9ydGhhbmQgfHwgc3RhcnRzV2l0aChuYW1lLCAnOicpXHJcbiAgICAgICAgICAgICAgICA/ICdiaW5kJ1xyXG4gICAgICAgICAgICAgICAgOiBzdGFydHNXaXRoKG5hbWUsICdAJylcclxuICAgICAgICAgICAgICAgICAgICA/ICdvbidcclxuICAgICAgICAgICAgICAgICAgICA6ICdzbG90Jyk7XHJcbiAgICAgICAgbGV0IGFyZztcclxuICAgICAgICBpZiAobWF0Y2hbMl0pIHtcclxuICAgICAgICAgICAgY29uc3QgaXNTbG90ID0gZGlyTmFtZSA9PT0gJ3Nsb3QnO1xyXG4gICAgICAgICAgICBjb25zdCBzdGFydE9mZnNldCA9IG5hbWUubGFzdEluZGV4T2YobWF0Y2hbMl0pO1xyXG4gICAgICAgICAgICBjb25zdCBsb2MgPSBnZXRTZWxlY3Rpb24oY29udGV4dCwgZ2V0TmV3UG9zaXRpb24oY29udGV4dCwgc3RhcnQsIHN0YXJ0T2Zmc2V0KSwgZ2V0TmV3UG9zaXRpb24oY29udGV4dCwgc3RhcnQsIHN0YXJ0T2Zmc2V0ICsgbWF0Y2hbMl0ubGVuZ3RoICsgKChpc1Nsb3QgJiYgbWF0Y2hbM10pIHx8ICcnKS5sZW5ndGgpKTtcclxuICAgICAgICAgICAgbGV0IGNvbnRlbnQgPSBtYXRjaFsyXTtcclxuICAgICAgICAgICAgbGV0IGlzU3RhdGljID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYgKGNvbnRlbnQuc3RhcnRzV2l0aCgnWycpKSB7XHJcbiAgICAgICAgICAgICAgICBpc1N0YXRpYyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFjb250ZW50LmVuZHNXaXRoKCddJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMjcgLyogRXJyb3JDb2Rlcy5YX01JU1NJTkdfRFlOQU1JQ19ESVJFQ1RJVkVfQVJHVU1FTlRfRU5EICovKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5zbGljZSgxKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnNsaWNlKDEsIGNvbnRlbnQubGVuZ3RoIC0gMSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaXNTbG90KSB7XHJcbiAgICAgICAgICAgICAgICAvLyAjMTI0MSBzcGVjaWFsIGNhc2UgZm9yIHYtc2xvdDogdnVldGlmeSByZWxpZXMgZXh0ZW5zaXZlbHkgb24gc2xvdFxyXG4gICAgICAgICAgICAgICAgLy8gbmFtZXMgY29udGFpbmluZyBkb3RzLiB2LXNsb3QgZG9lc24ndCBoYXZlIGFueSBtb2RpZmllcnMgYW5kIFZ1ZSAyLnhcclxuICAgICAgICAgICAgICAgIC8vIHN1cHBvcnRzIHN1Y2ggdXNhZ2Ugc28gd2UgYXJlIGtlZXBpbmcgaXQgY29uc2lzdGVudCB3aXRoIDIueC5cclxuICAgICAgICAgICAgICAgIGNvbnRlbnQgKz0gbWF0Y2hbM10gfHwgJyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYXJnID0ge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgICAgICAgICBjb250ZW50LFxyXG4gICAgICAgICAgICAgICAgaXNTdGF0aWMsXHJcbiAgICAgICAgICAgICAgICBjb25zdFR5cGU6IGlzU3RhdGljXHJcbiAgICAgICAgICAgICAgICAgICAgPyAzIC8qIENvbnN0YW50VHlwZXMuQ0FOX1NUUklOR0lGWSAqL1xyXG4gICAgICAgICAgICAgICAgICAgIDogMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLyxcclxuICAgICAgICAgICAgICAgIGxvY1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaXNRdW90ZWQpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWVMb2MgPSB2YWx1ZS5sb2M7XHJcbiAgICAgICAgICAgIHZhbHVlTG9jLnN0YXJ0Lm9mZnNldCsrO1xyXG4gICAgICAgICAgICB2YWx1ZUxvYy5zdGFydC5jb2x1bW4rKztcclxuICAgICAgICAgICAgdmFsdWVMb2MuZW5kID0gYWR2YW5jZVBvc2l0aW9uV2l0aENsb25lKHZhbHVlTG9jLnN0YXJ0LCB2YWx1ZS5jb250ZW50KTtcclxuICAgICAgICAgICAgdmFsdWVMb2Muc291cmNlID0gdmFsdWVMb2Muc291cmNlLnNsaWNlKDEsIC0xKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbW9kaWZpZXJzID0gbWF0Y2hbM10gPyBtYXRjaFszXS5zbGljZSgxKS5zcGxpdCgnLicpIDogW107XHJcbiAgICAgICAgaWYgKGlzUHJvcFNob3J0aGFuZClcclxuICAgICAgICAgICAgbW9kaWZpZXJzLnB1c2goJ3Byb3AnKTtcclxuICAgICAgICAvLyAyLnggY29tcGF0IHYtYmluZDpmb28uc3luYyAtPiB2LW1vZGVsOmZvb1xyXG4gICAgICAgIGlmIChkaXJOYW1lID09PSAnYmluZCcgJiYgYXJnKSB7XHJcbiAgICAgICAgICAgIGlmIChtb2RpZmllcnMuaW5jbHVkZXMoJ3N5bmMnKSAmJlxyXG4gICAgICAgICAgICAgICAgY2hlY2tDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfVl9CSU5EX1NZTkNcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfVl9CSU5EX1NZTkMgKi8sIGNvbnRleHQsIGxvYywgYXJnLmxvYy5zb3VyY2UpKSB7XHJcbiAgICAgICAgICAgICAgICBkaXJOYW1lID0gJ21vZGVsJztcclxuICAgICAgICAgICAgICAgIG1vZGlmaWVycy5zcGxpY2UobW9kaWZpZXJzLmluZGV4T2YoJ3N5bmMnKSwgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBtb2RpZmllcnMuaW5jbHVkZXMoJ3Byb3AnKSkge1xyXG4gICAgICAgICAgICAgICAgY2hlY2tDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfVl9CSU5EX1BST1BcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfVl9CSU5EX1BST1AgKi8sIGNvbnRleHQsIGxvYyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdHlwZTogNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovLFxyXG4gICAgICAgICAgICBuYW1lOiBkaXJOYW1lLFxyXG4gICAgICAgICAgICBleHA6IHZhbHVlICYmIHtcclxuICAgICAgICAgICAgICAgIHR5cGU6IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgICAgICAgICAgY29udGVudDogdmFsdWUuY29udGVudCxcclxuICAgICAgICAgICAgICAgIGlzU3RhdGljOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIC8vIFRyZWF0IGFzIG5vbi1jb25zdGFudCBieSBkZWZhdWx0LiBUaGlzIGNhbiBiZSBwb3RlbnRpYWxseSBzZXQgdG9cclxuICAgICAgICAgICAgICAgIC8vIG90aGVyIHZhbHVlcyBieSBgdHJhbnNmb3JtRXhwcmVzc2lvbmAgdG8gbWFrZSBpdCBlbGlnaWJsZSBmb3IgaG9pc3RpbmcuXHJcbiAgICAgICAgICAgICAgICBjb25zdFR5cGU6IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8sXHJcbiAgICAgICAgICAgICAgICBsb2M6IHZhbHVlLmxvY1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBhcmcsXHJcbiAgICAgICAgICAgIG1vZGlmaWVycyxcclxuICAgICAgICAgICAgbG9jXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIC8vIG1pc3NpbmcgZGlyZWN0aXZlIG5hbWUgb3IgaWxsZWdhbCBkaXJlY3RpdmUgbmFtZVxyXG4gICAgaWYgKCFjb250ZXh0LmluVlByZSAmJiBzdGFydHNXaXRoKG5hbWUsICd2LScpKSB7XHJcbiAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDI2IC8qIEVycm9yQ29kZXMuWF9NSVNTSU5HX0RJUkVDVElWRV9OQU1FICovKTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogNiAvKiBOb2RlVHlwZXMuQVRUUklCVVRFICovLFxyXG4gICAgICAgIG5hbWUsXHJcbiAgICAgICAgdmFsdWU6IHZhbHVlICYmIHtcclxuICAgICAgICAgICAgdHlwZTogMiAvKiBOb2RlVHlwZXMuVEVYVCAqLyxcclxuICAgICAgICAgICAgY29udGVudDogdmFsdWUuY29udGVudCxcclxuICAgICAgICAgICAgbG9jOiB2YWx1ZS5sb2NcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxvY1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBwYXJzZUF0dHJpYnV0ZVZhbHVlKGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Q3Vyc29yKGNvbnRleHQpO1xyXG4gICAgbGV0IGNvbnRlbnQ7XHJcbiAgICBjb25zdCBxdW90ZSA9IGNvbnRleHQuc291cmNlWzBdO1xyXG4gICAgY29uc3QgaXNRdW90ZWQgPSBxdW90ZSA9PT0gYFwiYCB8fCBxdW90ZSA9PT0gYCdgO1xyXG4gICAgaWYgKGlzUXVvdGVkKSB7XHJcbiAgICAgICAgLy8gUXVvdGVkIHZhbHVlLlxyXG4gICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCAxKTtcclxuICAgICAgICBjb25zdCBlbmRJbmRleCA9IGNvbnRleHQuc291cmNlLmluZGV4T2YocXVvdGUpO1xyXG4gICAgICAgIGlmIChlbmRJbmRleCA9PT0gLTEpIHtcclxuICAgICAgICAgICAgY29udGVudCA9IHBhcnNlVGV4dERhdGEoY29udGV4dCwgY29udGV4dC5zb3VyY2UubGVuZ3RoLCA0IC8qIFRleHRNb2Rlcy5BVFRSSUJVVEVfVkFMVUUgKi8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29udGVudCA9IHBhcnNlVGV4dERhdGEoY29udGV4dCwgZW5kSW5kZXgsIDQgLyogVGV4dE1vZGVzLkFUVFJJQlVURV9WQUxVRSAqLyk7XHJcbiAgICAgICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCAxKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBVbnF1b3RlZFxyXG4gICAgICAgIGNvbnN0IG1hdGNoID0gL15bXlxcdFxcclxcblxcZiA+XSsvLmV4ZWMoY29udGV4dC5zb3VyY2UpO1xyXG4gICAgICAgIGlmICghbWF0Y2gpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdW5leHBlY3RlZENoYXJzID0gL1tcIic8PWBdL2c7XHJcbiAgICAgICAgbGV0IG07XHJcbiAgICAgICAgd2hpbGUgKChtID0gdW5leHBlY3RlZENoYXJzLmV4ZWMobWF0Y2hbMF0pKSkge1xyXG4gICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMTggLyogRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX0NIQVJBQ1RFUl9JTl9VTlFVT1RFRF9BVFRSSUJVVEVfVkFMVUUgKi8sIG0uaW5kZXgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZW50ID0gcGFyc2VUZXh0RGF0YShjb250ZXh0LCBtYXRjaFswXS5sZW5ndGgsIDQgLyogVGV4dE1vZGVzLkFUVFJJQlVURV9WQUxVRSAqLyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBjb250ZW50LCBpc1F1b3RlZCwgbG9jOiBnZXRTZWxlY3Rpb24oY29udGV4dCwgc3RhcnQpIH07XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VJbnRlcnBvbGF0aW9uKGNvbnRleHQsIG1vZGUpIHtcclxuICAgIGNvbnN0IFtvcGVuLCBjbG9zZV0gPSBjb250ZXh0Lm9wdGlvbnMuZGVsaW1pdGVycztcclxuICAgIGNvbnN0IGNsb3NlSW5kZXggPSBjb250ZXh0LnNvdXJjZS5pbmRleE9mKGNsb3NlLCBvcGVuLmxlbmd0aCk7XHJcbiAgICBpZiAoY2xvc2VJbmRleCA9PT0gLTEpIHtcclxuICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMjUgLyogRXJyb3JDb2Rlcy5YX01JU1NJTkdfSU5URVJQT0xBVElPTl9FTkQgKi8pO1xyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzdGFydCA9IGdldEN1cnNvcihjb250ZXh0KTtcclxuICAgIGFkdmFuY2VCeShjb250ZXh0LCBvcGVuLmxlbmd0aCk7XHJcbiAgICBjb25zdCBpbm5lclN0YXJ0ID0gZ2V0Q3Vyc29yKGNvbnRleHQpO1xyXG4gICAgY29uc3QgaW5uZXJFbmQgPSBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICBjb25zdCByYXdDb250ZW50TGVuZ3RoID0gY2xvc2VJbmRleCAtIG9wZW4ubGVuZ3RoO1xyXG4gICAgY29uc3QgcmF3Q29udGVudCA9IGNvbnRleHQuc291cmNlLnNsaWNlKDAsIHJhd0NvbnRlbnRMZW5ndGgpO1xyXG4gICAgY29uc3QgcHJlVHJpbUNvbnRlbnQgPSBwYXJzZVRleHREYXRhKGNvbnRleHQsIHJhd0NvbnRlbnRMZW5ndGgsIG1vZGUpO1xyXG4gICAgY29uc3QgY29udGVudCA9IHByZVRyaW1Db250ZW50LnRyaW0oKTtcclxuICAgIGNvbnN0IHN0YXJ0T2Zmc2V0ID0gcHJlVHJpbUNvbnRlbnQuaW5kZXhPZihjb250ZW50KTtcclxuICAgIGlmIChzdGFydE9mZnNldCA+IDApIHtcclxuICAgICAgICBhZHZhbmNlUG9zaXRpb25XaXRoTXV0YXRpb24oaW5uZXJTdGFydCwgcmF3Q29udGVudCwgc3RhcnRPZmZzZXQpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZW5kT2Zmc2V0ID0gcmF3Q29udGVudExlbmd0aCAtIChwcmVUcmltQ29udGVudC5sZW5ndGggLSBjb250ZW50Lmxlbmd0aCAtIHN0YXJ0T2Zmc2V0KTtcclxuICAgIGFkdmFuY2VQb3NpdGlvbldpdGhNdXRhdGlvbihpbm5lckVuZCwgcmF3Q29udGVudCwgZW5kT2Zmc2V0KTtcclxuICAgIGFkdmFuY2VCeShjb250ZXh0LCBjbG9zZS5sZW5ndGgpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiA1IC8qIE5vZGVUeXBlcy5JTlRFUlBPTEFUSU9OICovLFxyXG4gICAgICAgIGNvbnRlbnQ6IHtcclxuICAgICAgICAgICAgdHlwZTogNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgICAgIGlzU3RhdGljOiBmYWxzZSxcclxuICAgICAgICAgICAgLy8gU2V0IGBpc0NvbnN0YW50YCB0byBmYWxzZSBieSBkZWZhdWx0IGFuZCB3aWxsIGRlY2lkZSBpbiB0cmFuc2Zvcm1FeHByZXNzaW9uXHJcbiAgICAgICAgICAgIGNvbnN0VHlwZTogMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLyxcclxuICAgICAgICAgICAgY29udGVudCxcclxuICAgICAgICAgICAgbG9jOiBnZXRTZWxlY3Rpb24oY29udGV4dCwgaW5uZXJTdGFydCwgaW5uZXJFbmQpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBsb2M6IGdldFNlbGVjdGlvbihjb250ZXh0LCBzdGFydClcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VUZXh0KGNvbnRleHQsIG1vZGUpIHtcclxuICAgIGNvbnN0IGVuZFRva2VucyA9IG1vZGUgPT09IDMgLyogVGV4dE1vZGVzLkNEQVRBICovID8gWyddXT4nXSA6IFsnPCcsIGNvbnRleHQub3B0aW9ucy5kZWxpbWl0ZXJzWzBdXTtcclxuICAgIGxldCBlbmRJbmRleCA9IGNvbnRleHQuc291cmNlLmxlbmd0aDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZW5kVG9rZW5zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSBjb250ZXh0LnNvdXJjZS5pbmRleE9mKGVuZFRva2Vuc1tpXSwgMSk7XHJcbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSAmJiBlbmRJbmRleCA+IGluZGV4KSB7XHJcbiAgICAgICAgICAgIGVuZEluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3Qgc3RhcnQgPSBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICBjb25zdCBjb250ZW50ID0gcGFyc2VUZXh0RGF0YShjb250ZXh0LCBlbmRJbmRleCwgbW9kZSk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDIgLyogTm9kZVR5cGVzLlRFWFQgKi8sXHJcbiAgICAgICAgY29udGVudCxcclxuICAgICAgICBsb2M6IGdldFNlbGVjdGlvbihjb250ZXh0LCBzdGFydClcclxuICAgIH07XHJcbn1cclxuLyoqXHJcbiAqIEdldCB0ZXh0IGRhdGEgd2l0aCBhIGdpdmVuIGxlbmd0aCBmcm9tIHRoZSBjdXJyZW50IGxvY2F0aW9uLlxyXG4gKiBUaGlzIHRyYW5zbGF0ZXMgSFRNTCBlbnRpdGllcyBpbiB0aGUgdGV4dCBkYXRhLlxyXG4gKi9cclxuZnVuY3Rpb24gcGFyc2VUZXh0RGF0YShjb250ZXh0LCBsZW5ndGgsIG1vZGUpIHtcclxuICAgIGNvbnN0IHJhd1RleHQgPSBjb250ZXh0LnNvdXJjZS5zbGljZSgwLCBsZW5ndGgpO1xyXG4gICAgYWR2YW5jZUJ5KGNvbnRleHQsIGxlbmd0aCk7XHJcbiAgICBpZiAobW9kZSA9PT0gMiAvKiBUZXh0TW9kZXMuUkFXVEVYVCAqLyB8fFxyXG4gICAgICAgIG1vZGUgPT09IDMgLyogVGV4dE1vZGVzLkNEQVRBICovIHx8XHJcbiAgICAgICAgIXJhd1RleHQuaW5jbHVkZXMoJyYnKSkge1xyXG4gICAgICAgIHJldHVybiByYXdUZXh0O1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gREFUQSBvciBSQ0RBVEEgY29udGFpbmluZyBcIiZcIlwiLiBFbnRpdHkgZGVjb2RpbmcgcmVxdWlyZWQuXHJcbiAgICAgICAgcmV0dXJuIGNvbnRleHQub3B0aW9ucy5kZWNvZGVFbnRpdGllcyhyYXdUZXh0LCBtb2RlID09PSA0IC8qIFRleHRNb2Rlcy5BVFRSSUJVVEVfVkFMVUUgKi8pO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdldEN1cnNvcihjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IGNvbHVtbiwgbGluZSwgb2Zmc2V0IH0gPSBjb250ZXh0O1xyXG4gICAgcmV0dXJuIHsgY29sdW1uLCBsaW5lLCBvZmZzZXQgfTtcclxufVxyXG5mdW5jdGlvbiBnZXRTZWxlY3Rpb24oY29udGV4dCwgc3RhcnQsIGVuZCkge1xyXG4gICAgZW5kID0gZW5kIHx8IGdldEN1cnNvcihjb250ZXh0KTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgc3RhcnQsXHJcbiAgICAgICAgZW5kLFxyXG4gICAgICAgIHNvdXJjZTogY29udGV4dC5vcmlnaW5hbFNvdXJjZS5zbGljZShzdGFydC5vZmZzZXQsIGVuZC5vZmZzZXQpXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGxhc3QoeHMpIHtcclxuICAgIHJldHVybiB4c1t4cy5sZW5ndGggLSAxXTtcclxufVxyXG5mdW5jdGlvbiBzdGFydHNXaXRoKHNvdXJjZSwgc2VhcmNoU3RyaW5nKSB7XHJcbiAgICByZXR1cm4gc291cmNlLnN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nKTtcclxufVxyXG5mdW5jdGlvbiBhZHZhbmNlQnkoY29udGV4dCwgbnVtYmVyT2ZDaGFyYWN0ZXJzKSB7XHJcbiAgICBjb25zdCB7IHNvdXJjZSB9ID0gY29udGV4dDtcclxuICAgIGFkdmFuY2VQb3NpdGlvbldpdGhNdXRhdGlvbihjb250ZXh0LCBzb3VyY2UsIG51bWJlck9mQ2hhcmFjdGVycyk7XHJcbiAgICBjb250ZXh0LnNvdXJjZSA9IHNvdXJjZS5zbGljZShudW1iZXJPZkNoYXJhY3RlcnMpO1xyXG59XHJcbmZ1bmN0aW9uIGFkdmFuY2VTcGFjZXMoY29udGV4dCkge1xyXG4gICAgY29uc3QgbWF0Y2ggPSAvXltcXHRcXHJcXG5cXGYgXSsvLmV4ZWMoY29udGV4dC5zb3VyY2UpO1xyXG4gICAgaWYgKG1hdGNoKSB7XHJcbiAgICAgICAgYWR2YW5jZUJ5KGNvbnRleHQsIG1hdGNoWzBdLmxlbmd0aCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2V0TmV3UG9zaXRpb24oY29udGV4dCwgc3RhcnQsIG51bWJlck9mQ2hhcmFjdGVycykge1xyXG4gICAgcmV0dXJuIGFkdmFuY2VQb3NpdGlvbldpdGhDbG9uZShzdGFydCwgY29udGV4dC5vcmlnaW5hbFNvdXJjZS5zbGljZShzdGFydC5vZmZzZXQsIG51bWJlck9mQ2hhcmFjdGVycyksIG51bWJlck9mQ2hhcmFjdGVycyk7XHJcbn1cclxuZnVuY3Rpb24gZW1pdEVycm9yKGNvbnRleHQsIGNvZGUsIG9mZnNldCwgbG9jID0gZ2V0Q3Vyc29yKGNvbnRleHQpKSB7XHJcbiAgICBpZiAob2Zmc2V0KSB7XHJcbiAgICAgICAgbG9jLm9mZnNldCArPSBvZmZzZXQ7XHJcbiAgICAgICAgbG9jLmNvbHVtbiArPSBvZmZzZXQ7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0Lm9wdGlvbnMub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKGNvZGUsIHtcclxuICAgICAgICBzdGFydDogbG9jLFxyXG4gICAgICAgIGVuZDogbG9jLFxyXG4gICAgICAgIHNvdXJjZTogJydcclxuICAgIH0pKTtcclxufVxyXG5mdW5jdGlvbiBpc0VuZChjb250ZXh0LCBtb2RlLCBhbmNlc3RvcnMpIHtcclxuICAgIGNvbnN0IHMgPSBjb250ZXh0LnNvdXJjZTtcclxuICAgIHN3aXRjaCAobW9kZSkge1xyXG4gICAgICAgIGNhc2UgMCAvKiBUZXh0TW9kZXMuREFUQSAqLzpcclxuICAgICAgICAgICAgaWYgKHN0YXJ0c1dpdGgocywgJzwvJykpIHtcclxuICAgICAgICAgICAgICAgIC8vIFRPRE86IHByb2JhYmx5IGJhZCBwZXJmb3JtYW5jZVxyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IGFuY2VzdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGFydHNXaXRoRW5kVGFnT3BlbihzLCBhbmNlc3RvcnNbaV0udGFnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAxIC8qIFRleHRNb2Rlcy5SQ0RBVEEgKi86XHJcbiAgICAgICAgY2FzZSAyIC8qIFRleHRNb2Rlcy5SQVdURVhUICovOiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGxhc3QoYW5jZXN0b3JzKTtcclxuICAgICAgICAgICAgaWYgKHBhcmVudCAmJiBzdGFydHNXaXRoRW5kVGFnT3BlbihzLCBwYXJlbnQudGFnKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgMyAvKiBUZXh0TW9kZXMuQ0RBVEEgKi86XHJcbiAgICAgICAgICAgIGlmIChzdGFydHNXaXRoKHMsICddXT4nKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gIXM7XHJcbn1cclxuZnVuY3Rpb24gc3RhcnRzV2l0aEVuZFRhZ09wZW4oc291cmNlLCB0YWcpIHtcclxuICAgIHJldHVybiAoc3RhcnRzV2l0aChzb3VyY2UsICc8LycpICYmXHJcbiAgICAgICAgc291cmNlLnNsaWNlKDIsIDIgKyB0YWcubGVuZ3RoKS50b0xvd2VyQ2FzZSgpID09PSB0YWcudG9Mb3dlckNhc2UoKSAmJlxyXG4gICAgICAgIC9bXFx0XFxyXFxuXFxmIC8+XS8udGVzdChzb3VyY2VbMiArIHRhZy5sZW5ndGhdIHx8ICc+JykpO1xyXG59XG5cbmZ1bmN0aW9uIGhvaXN0U3RhdGljKHJvb3QsIGNvbnRleHQpIHtcclxuICAgIHdhbGsocm9vdCwgY29udGV4dCwgXHJcbiAgICAvLyBSb290IG5vZGUgaXMgdW5mb3J0dW5hdGVseSBub24taG9pc3RhYmxlIGR1ZSB0byBwb3RlbnRpYWwgcGFyZW50XHJcbiAgICAvLyBmYWxsdGhyb3VnaCBhdHRyaWJ1dGVzLlxyXG4gICAgaXNTaW5nbGVFbGVtZW50Um9vdChyb290LCByb290LmNoaWxkcmVuWzBdKSk7XHJcbn1cclxuZnVuY3Rpb24gaXNTaW5nbGVFbGVtZW50Um9vdChyb290LCBjaGlsZCkge1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gcm9vdDtcclxuICAgIHJldHVybiAoY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmXHJcbiAgICAgICAgY2hpbGQudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgICFpc1Nsb3RPdXRsZXQoY2hpbGQpKTtcclxufVxyXG5mdW5jdGlvbiB3YWxrKG5vZGUsIGNvbnRleHQsIGRvTm90SG9pc3ROb2RlID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IG5vZGU7XHJcbiAgICBjb25zdCBvcmlnaW5hbENvdW50ID0gY2hpbGRyZW4ubGVuZ3RoO1xyXG4gICAgbGV0IGhvaXN0ZWRDb3VudCA9IDA7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlbltpXTtcclxuICAgICAgICAvLyBvbmx5IHBsYWluIGVsZW1lbnRzICYgdGV4dCBjYWxscyBhcmUgZWxpZ2libGUgZm9yIGhvaXN0aW5nLlxyXG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgICAgIGNoaWxkLnRhZ1R5cGUgPT09IDAgLyogRWxlbWVudFR5cGVzLkVMRU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgY29uc3QgY29uc3RhbnRUeXBlID0gZG9Ob3RIb2lzdE5vZGVcclxuICAgICAgICAgICAgICAgID8gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqL1xyXG4gICAgICAgICAgICAgICAgOiBnZXRDb25zdGFudFR5cGUoY2hpbGQsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBpZiAoY29uc3RhbnRUeXBlID4gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnN0YW50VHlwZSA+PSAyIC8qIENvbnN0YW50VHlwZXMuQ0FOX0hPSVNUICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQuY29kZWdlbk5vZGUucGF0Y2hGbGFnID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLTEgLyogUGF0Y2hGbGFncy5IT0lTVEVEICovICsgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGAgLyogSE9JU1RFRCAqL2AgOiBgYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQuY29kZWdlbk5vZGUgPSBjb250ZXh0LmhvaXN0KGNoaWxkLmNvZGVnZW5Ob2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBob2lzdGVkQ291bnQrKztcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIG5vZGUgbWF5IGNvbnRhaW4gZHluYW1pYyBjaGlsZHJlbiwgYnV0IGl0cyBwcm9wcyBtYXkgYmUgZWxpZ2libGUgZm9yXHJcbiAgICAgICAgICAgICAgICAvLyBob2lzdGluZy5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvZGVnZW5Ob2RlID0gY2hpbGQuY29kZWdlbk5vZGU7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29kZWdlbk5vZGUudHlwZSA9PT0gMTMgLyogTm9kZVR5cGVzLlZOT0RFX0NBTEwgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmbGFnID0gZ2V0UGF0Y2hGbGFnKGNvZGVnZW5Ob2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKCFmbGFnIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWcgPT09IDUxMiAvKiBQYXRjaEZsYWdzLk5FRURfUEFUQ0ggKi8gfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmxhZyA9PT0gMSAvKiBQYXRjaEZsYWdzLlRFWFQgKi8pICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldEdlbmVyYXRlZFByb3BzQ29uc3RhbnRUeXBlKGNoaWxkLCBjb250ZXh0KSA+PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAvKiBDb25zdGFudFR5cGVzLkNBTl9IT0lTVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9wcyA9IGdldE5vZGVQcm9wcyhjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWdlbk5vZGUucHJvcHMgPSBjb250ZXh0LmhvaXN0KHByb3BzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29kZWdlbk5vZGUuZHluYW1pY1Byb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVnZW5Ob2RlLmR5bmFtaWNQcm9wcyA9IGNvbnRleHQuaG9pc3QoY29kZWdlbk5vZGUuZHluYW1pY1Byb3BzKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoY2hpbGQudHlwZSA9PT0gMTIgLyogTm9kZVR5cGVzLlRFWFRfQ0FMTCAqLyAmJlxyXG4gICAgICAgICAgICBnZXRDb25zdGFudFR5cGUoY2hpbGQuY29udGVudCwgY29udGV4dCkgPj0gMiAvKiBDb25zdGFudFR5cGVzLkNBTl9IT0lTVCAqLykge1xyXG4gICAgICAgICAgICBjaGlsZC5jb2RlZ2VuTm9kZSA9IGNvbnRleHQuaG9pc3QoY2hpbGQuY29kZWdlbk5vZGUpO1xyXG4gICAgICAgICAgICBob2lzdGVkQ291bnQrKztcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gd2FsayBmdXJ0aGVyXHJcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgY29uc3QgaXNDb21wb25lbnQgPSBjaGlsZC50YWdUeXBlID09PSAxIC8qIEVsZW1lbnRUeXBlcy5DT01QT05FTlQgKi87XHJcbiAgICAgICAgICAgIGlmIChpc0NvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zY29wZXMudlNsb3QrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB3YWxrKGNoaWxkLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgaWYgKGlzQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNjb3Blcy52U2xvdC0tO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGNoaWxkLnR5cGUgPT09IDExIC8qIE5vZGVUeXBlcy5GT1IgKi8pIHtcclxuICAgICAgICAgICAgLy8gRG8gbm90IGhvaXN0IHYtZm9yIHNpbmdsZSBjaGlsZCBiZWNhdXNlIGl0IGhhcyB0byBiZSBhIGJsb2NrXHJcbiAgICAgICAgICAgIHdhbGsoY2hpbGQsIGNvbnRleHQsIGNoaWxkLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGNoaWxkLnR5cGUgPT09IDkgLyogTm9kZVR5cGVzLklGICovKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGQuYnJhbmNoZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIC8vIERvIG5vdCBob2lzdCB2LWlmIHNpbmdsZSBjaGlsZCBiZWNhdXNlIGl0IGhhcyB0byBiZSBhIGJsb2NrXHJcbiAgICAgICAgICAgICAgICB3YWxrKGNoaWxkLmJyYW5jaGVzW2ldLCBjb250ZXh0LCBjaGlsZC5icmFuY2hlc1tpXS5jaGlsZHJlbi5sZW5ndGggPT09IDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGhvaXN0ZWRDb3VudCAmJiBjb250ZXh0LnRyYW5zZm9ybUhvaXN0KSB7XHJcbiAgICAgICAgY29udGV4dC50cmFuc2Zvcm1Ib2lzdChjaGlsZHJlbiwgY29udGV4dCwgbm9kZSk7XHJcbiAgICB9XHJcbiAgICAvLyBhbGwgY2hpbGRyZW4gd2VyZSBob2lzdGVkIC0gdGhlIGVudGlyZSBjaGlsZHJlbiBhcnJheSBpcyBob2lzdGFibGUuXHJcbiAgICBpZiAoaG9pc3RlZENvdW50ICYmXHJcbiAgICAgICAgaG9pc3RlZENvdW50ID09PSBvcmlnaW5hbENvdW50ICYmXHJcbiAgICAgICAgbm9kZS50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgbm9kZS50YWdUeXBlID09PSAwIC8qIEVsZW1lbnRUeXBlcy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgbm9kZS5jb2RlZ2VuTm9kZSAmJlxyXG4gICAgICAgIG5vZGUuY29kZWdlbk5vZGUudHlwZSA9PT0gMTMgLyogTm9kZVR5cGVzLlZOT0RFX0NBTEwgKi8gJiZcclxuICAgICAgICBpc0FycmF5KG5vZGUuY29kZWdlbk5vZGUuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgbm9kZS5jb2RlZ2VuTm9kZS5jaGlsZHJlbiA9IGNvbnRleHQuaG9pc3QoY3JlYXRlQXJyYXlFeHByZXNzaW9uKG5vZGUuY29kZWdlbk5vZGUuY2hpbGRyZW4pKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZXRDb25zdGFudFR5cGUobm9kZSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBjb25zdGFudENhY2hlIH0gPSBjb250ZXh0O1xyXG4gICAgc3dpdGNoIChub2RlLnR5cGUpIHtcclxuICAgICAgICBjYXNlIDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi86XHJcbiAgICAgICAgICAgIGlmIChub2RlLnRhZ1R5cGUgIT09IDAgLyogRWxlbWVudFR5cGVzLkVMRU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlZCA9IGNvbnN0YW50Q2FjaGUuZ2V0KG5vZGUpO1xyXG4gICAgICAgICAgICBpZiAoY2FjaGVkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgY29kZWdlbk5vZGUgPSBub2RlLmNvZGVnZW5Ob2RlO1xyXG4gICAgICAgICAgICBpZiAoY29kZWdlbk5vZGUudHlwZSAhPT0gMTMgLyogTm9kZVR5cGVzLlZOT0RFX0NBTEwgKi8pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjb2RlZ2VuTm9kZS5pc0Jsb2NrICYmXHJcbiAgICAgICAgICAgICAgICBub2RlLnRhZyAhPT0gJ3N2ZycgJiZcclxuICAgICAgICAgICAgICAgIG5vZGUudGFnICE9PSAnZm9yZWlnbk9iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGZsYWcgPSBnZXRQYXRjaEZsYWcoY29kZWdlbk5vZGUpO1xyXG4gICAgICAgICAgICBpZiAoIWZsYWcpIHtcclxuICAgICAgICAgICAgICAgIGxldCByZXR1cm5UeXBlID0gMyAvKiBDb25zdGFudFR5cGVzLkNBTl9TVFJJTkdJRlkgKi87XHJcbiAgICAgICAgICAgICAgICAvLyBFbGVtZW50IGl0c2VsZiBoYXMgbm8gcGF0Y2ggZmxhZy4gSG93ZXZlciB3ZSBzdGlsbCBuZWVkIHRvIGNoZWNrOlxyXG4gICAgICAgICAgICAgICAgLy8gMS4gRXZlbiBmb3IgYSBub2RlIHdpdGggbm8gcGF0Y2ggZmxhZywgaXQgaXMgcG9zc2libGUgZm9yIGl0IHRvIGNvbnRhaW5cclxuICAgICAgICAgICAgICAgIC8vIG5vbi1ob2lzdGFibGUgZXhwcmVzc2lvbnMgdGhhdCByZWZlcnMgdG8gc2NvcGUgdmFyaWFibGVzLCBlLmcuIGNvbXBpbGVyXHJcbiAgICAgICAgICAgICAgICAvLyBpbmplY3RlZCBrZXlzIG9yIGNhY2hlZCBldmVudCBoYW5kbGVycy4gVGhlcmVmb3JlIHdlIG5lZWQgdG8gYWx3YXlzXHJcbiAgICAgICAgICAgICAgICAvLyBjaGVjayB0aGUgY29kZWdlbk5vZGUncyBwcm9wcyB0byBiZSBzdXJlLlxyXG4gICAgICAgICAgICAgICAgY29uc3QgZ2VuZXJhdGVkUHJvcHNUeXBlID0gZ2V0R2VuZXJhdGVkUHJvcHNDb25zdGFudFR5cGUobm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkUHJvcHNUeXBlID09PSAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3RhbnRDYWNoZS5zZXQobm9kZSwgMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkUHJvcHNUeXBlIDwgcmV0dXJuVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblR5cGUgPSBnZW5lcmF0ZWRQcm9wc1R5cGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyAyLiBpdHMgY2hpbGRyZW4uXHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZFR5cGUgPSBnZXRDb25zdGFudFR5cGUobm9kZS5jaGlsZHJlbltpXSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkVHlwZSA9PT0gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdGFudENhY2hlLnNldChub2RlLCAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi87XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZFR5cGUgPCByZXR1cm5UeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblR5cGUgPSBjaGlsZFR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gMy4gaWYgdGhlIHR5cGUgaXMgbm90IGFscmVhZHkgQ0FOX1NLSVBfUEFUQ0ggd2hpY2ggaXMgdGhlIGxvd2VzdCBub24tMFxyXG4gICAgICAgICAgICAgICAgLy8gdHlwZSwgY2hlY2sgaWYgYW55IG9mIHRoZSBwcm9wcyBjYW4gY2F1c2UgdGhlIHR5cGUgdG8gYmUgbG93ZXJlZFxyXG4gICAgICAgICAgICAgICAgLy8gd2UgY2FuIHNraXAgY2FuX3BhdGNoIGJlY2F1c2UgaXQncyBndWFyYW50ZWVkIGJ5IHRoZSBhYnNlbmNlIG9mIGFcclxuICAgICAgICAgICAgICAgIC8vIHBhdGNoRmxhZy5cclxuICAgICAgICAgICAgICAgIGlmIChyZXR1cm5UeXBlID4gMSAvKiBDb25zdGFudFR5cGVzLkNBTl9TS0lQX1BBVENIICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnByb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHAgPSBub2RlLnByb3BzW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocC50eXBlID09PSA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8gJiYgcC5uYW1lID09PSAnYmluZCcgJiYgcC5leHApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cFR5cGUgPSBnZXRDb25zdGFudFR5cGUocC5leHAsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cFR5cGUgPT09IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdGFudENhY2hlLnNldChub2RlLCAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBUeXBlIDwgcmV0dXJuVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblR5cGUgPSBleHBUeXBlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gb25seSBzdmcvZm9yZWlnbk9iamVjdCBjb3VsZCBiZSBibG9jayBoZXJlLCBob3dldmVyIGlmIHRoZXkgYXJlXHJcbiAgICAgICAgICAgICAgICAvLyBzdGF0aWMgdGhlbiB0aGV5IGRvbid0IG5lZWQgdG8gYmUgYmxvY2tzIHNpbmNlIHRoZXJlIHdpbGwgYmUgbm9cclxuICAgICAgICAgICAgICAgIC8vIG5lc3RlZCB1cGRhdGVzLlxyXG4gICAgICAgICAgICAgICAgaWYgKGNvZGVnZW5Ob2RlLmlzQmxvY2spIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBleGNlcHQgc2V0IGN1c3RvbSBkaXJlY3RpdmVzLlxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5wcm9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwID0gbm9kZS5wcm9wc1tpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdGFudENhY2hlLnNldChub2RlLCAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQucmVtb3ZlSGVscGVyKE9QRU5fQkxPQ0spO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQucmVtb3ZlSGVscGVyKGdldFZOb2RlQmxvY2tIZWxwZXIoY29udGV4dC5pblNTUiwgY29kZWdlbk5vZGUuaXNDb21wb25lbnQpKTtcclxuICAgICAgICAgICAgICAgICAgICBjb2RlZ2VuTm9kZS5pc0Jsb2NrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5oZWxwZXIoZ2V0Vk5vZGVIZWxwZXIoY29udGV4dC5pblNTUiwgY29kZWdlbk5vZGUuaXNDb21wb25lbnQpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0YW50Q2FjaGUuc2V0KG5vZGUsIHJldHVyblR5cGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJldHVyblR5cGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdGFudENhY2hlLnNldChub2RlLCAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAyIC8qIE5vZGVUeXBlcy5URVhUICovOlxyXG4gICAgICAgIGNhc2UgMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLzpcclxuICAgICAgICAgICAgcmV0dXJuIDMgLyogQ29uc3RhbnRUeXBlcy5DQU5fU1RSSU5HSUZZICovO1xyXG4gICAgICAgIGNhc2UgOSAvKiBOb2RlVHlwZXMuSUYgKi86XHJcbiAgICAgICAgY2FzZSAxMSAvKiBOb2RlVHlwZXMuRk9SICovOlxyXG4gICAgICAgIGNhc2UgMTAgLyogTm9kZVR5cGVzLklGX0JSQU5DSCAqLzpcclxuICAgICAgICAgICAgcmV0dXJuIDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi87XHJcbiAgICAgICAgY2FzZSA1IC8qIE5vZGVUeXBlcy5JTlRFUlBPTEFUSU9OICovOlxyXG4gICAgICAgIGNhc2UgMTIgLyogTm9kZVR5cGVzLlRFWFRfQ0FMTCAqLzpcclxuICAgICAgICAgICAgcmV0dXJuIGdldENvbnN0YW50VHlwZShub2RlLmNvbnRlbnQsIGNvbnRleHQpO1xyXG4gICAgICAgIGNhc2UgNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIHJldHVybiBub2RlLmNvbnN0VHlwZTtcclxuICAgICAgICBjYXNlIDggLyogTm9kZVR5cGVzLkNPTVBPVU5EX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIGxldCByZXR1cm5UeXBlID0gMyAvKiBDb25zdGFudFR5cGVzLkNBTl9TVFJJTkdJRlkgKi87XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBub2RlLmNoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzU3RyaW5nKGNoaWxkKSB8fCBpc1N5bWJvbChjaGlsZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkVHlwZSA9IGdldENvbnN0YW50VHlwZShjaGlsZCwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRUeXBlID09PSAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGlsZFR5cGUgPCByZXR1cm5UeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuVHlwZSA9IGNoaWxkVHlwZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcmV0dXJuVHlwZTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSA7XHJcbiAgICAgICAgICAgIHJldHVybiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovO1xyXG4gICAgfVxyXG59XHJcbmNvbnN0IGFsbG93SG9pc3RlZEhlbHBlclNldCA9IG5ldyBTZXQoW1xyXG4gICAgTk9STUFMSVpFX0NMQVNTLFxyXG4gICAgTk9STUFMSVpFX1NUWUxFLFxyXG4gICAgTk9STUFMSVpFX1BST1BTLFxyXG4gICAgR1VBUkRfUkVBQ1RJVkVfUFJPUFNcclxuXSk7XHJcbmZ1bmN0aW9uIGdldENvbnN0YW50VHlwZU9mSGVscGVyQ2FsbCh2YWx1ZSwgY29udGV4dCkge1xyXG4gICAgaWYgKHZhbHVlLnR5cGUgPT09IDE0IC8qIE5vZGVUeXBlcy5KU19DQUxMX0VYUFJFU1NJT04gKi8gJiZcclxuICAgICAgICAhaXNTdHJpbmcodmFsdWUuY2FsbGVlKSAmJlxyXG4gICAgICAgIGFsbG93SG9pc3RlZEhlbHBlclNldC5oYXModmFsdWUuY2FsbGVlKSkge1xyXG4gICAgICAgIGNvbnN0IGFyZyA9IHZhbHVlLmFyZ3VtZW50c1swXTtcclxuICAgICAgICBpZiAoYXJnLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBnZXRDb25zdGFudFR5cGUoYXJnLCBjb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoYXJnLnR5cGUgPT09IDE0IC8qIE5vZGVUeXBlcy5KU19DQUxMX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgLy8gaW4gdGhlIGNhc2Ugb2YgbmVzdGVkIGhlbHBlciBjYWxsLCBlLmcuIGBub3JtYWxpemVQcm9wcyhndWFyZFJlYWN0aXZlUHJvcHMoZXhwKSlgXHJcbiAgICAgICAgICAgIHJldHVybiBnZXRDb25zdGFudFR5cGVPZkhlbHBlckNhbGwoYXJnLCBjb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLztcclxufVxyXG5mdW5jdGlvbiBnZXRHZW5lcmF0ZWRQcm9wc0NvbnN0YW50VHlwZShub2RlLCBjb250ZXh0KSB7XHJcbiAgICBsZXQgcmV0dXJuVHlwZSA9IDMgLyogQ29uc3RhbnRUeXBlcy5DQU5fU1RSSU5HSUZZICovO1xyXG4gICAgY29uc3QgcHJvcHMgPSBnZXROb2RlUHJvcHMobm9kZSk7XHJcbiAgICBpZiAocHJvcHMgJiYgcHJvcHMudHlwZSA9PT0gMTUgLyogTm9kZVR5cGVzLkpTX09CSkVDVF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgY29uc3QgeyBwcm9wZXJ0aWVzIH0gPSBwcm9wcztcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgeyBrZXksIHZhbHVlIH0gPSBwcm9wZXJ0aWVzW2ldO1xyXG4gICAgICAgICAgICBjb25zdCBrZXlUeXBlID0gZ2V0Q29uc3RhbnRUeXBlKGtleSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGlmIChrZXlUeXBlID09PSAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ga2V5VHlwZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoa2V5VHlwZSA8IHJldHVyblR5cGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVyblR5cGUgPSBrZXlUeXBlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCB2YWx1ZVR5cGU7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZS50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICAgICAgdmFsdWVUeXBlID0gZ2V0Q29uc3RhbnRUeXBlKHZhbHVlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZS50eXBlID09PSAxNCAvKiBOb2RlVHlwZXMuSlNfQ0FMTF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBzb21lIGhlbHBlciBjYWxscyBjYW4gYmUgaG9pc3RlZCxcclxuICAgICAgICAgICAgICAgIC8vIHN1Y2ggYXMgdGhlIGBub3JtYWxpemVQcm9wc2AgZ2VuZXJhdGVkIGJ5IHRoZSBjb21waWxlciBmb3IgcHJlLW5vcm1hbGl6ZSBjbGFzcyxcclxuICAgICAgICAgICAgICAgIC8vIGluIHRoaXMgY2FzZSB3ZSBuZWVkIHRvIHJlc3BlY3QgdGhlIENvbnN0YW50VHlwZSBvZiB0aGUgaGVscGVyJ3MgYXJndW1lbnRzXHJcbiAgICAgICAgICAgICAgICB2YWx1ZVR5cGUgPSBnZXRDb25zdGFudFR5cGVPZkhlbHBlckNhbGwodmFsdWUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFsdWVUeXBlID0gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFsdWVUeXBlID09PSAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVUeXBlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZVR5cGUgPCByZXR1cm5UeXBlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5UeXBlID0gdmFsdWVUeXBlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldHVyblR5cGU7XHJcbn1cclxuZnVuY3Rpb24gZ2V0Tm9kZVByb3BzKG5vZGUpIHtcclxuICAgIGNvbnN0IGNvZGVnZW5Ob2RlID0gbm9kZS5jb2RlZ2VuTm9kZTtcclxuICAgIGlmIChjb2RlZ2VuTm9kZS50eXBlID09PSAxMyAvKiBOb2RlVHlwZXMuVk5PREVfQ0FMTCAqLykge1xyXG4gICAgICAgIHJldHVybiBjb2RlZ2VuTm9kZS5wcm9wcztcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZXRQYXRjaEZsYWcobm9kZSkge1xyXG4gICAgY29uc3QgZmxhZyA9IG5vZGUucGF0Y2hGbGFnO1xyXG4gICAgcmV0dXJuIGZsYWcgPyBwYXJzZUludChmbGFnLCAxMCkgOiB1bmRlZmluZWQ7XHJcbn1cblxuZnVuY3Rpb24gY3JlYXRlVHJhbnNmb3JtQ29udGV4dChyb290LCB7IGZpbGVuYW1lID0gJycsIHByZWZpeElkZW50aWZpZXJzID0gZmFsc2UsIGhvaXN0U3RhdGljID0gZmFsc2UsIGNhY2hlSGFuZGxlcnMgPSBmYWxzZSwgbm9kZVRyYW5zZm9ybXMgPSBbXSwgZGlyZWN0aXZlVHJhbnNmb3JtcyA9IHt9LCB0cmFuc2Zvcm1Ib2lzdCA9IG51bGwsIGlzQnVpbHRJbkNvbXBvbmVudCA9IE5PT1AsIGlzQ3VzdG9tRWxlbWVudCA9IE5PT1AsIGV4cHJlc3Npb25QbHVnaW5zID0gW10sIHNjb3BlSWQgPSBudWxsLCBzbG90dGVkID0gdHJ1ZSwgc3NyID0gZmFsc2UsIGluU1NSID0gZmFsc2UsIHNzckNzc1ZhcnMgPSBgYCwgYmluZGluZ01ldGFkYXRhID0gRU1QVFlfT0JKLCBpbmxpbmUgPSBmYWxzZSwgaXNUUyA9IGZhbHNlLCBvbkVycm9yID0gZGVmYXVsdE9uRXJyb3IsIG9uV2FybiA9IGRlZmF1bHRPbldhcm4sIGNvbXBhdENvbmZpZyB9KSB7XHJcbiAgICBjb25zdCBuYW1lTWF0Y2ggPSBmaWxlbmFtZS5yZXBsYWNlKC9cXD8uKiQvLCAnJykubWF0Y2goLyhbXi9cXFxcXSspXFwuXFx3KyQvKTtcclxuICAgIGNvbnN0IGNvbnRleHQgPSB7XHJcbiAgICAgICAgLy8gb3B0aW9uc1xyXG4gICAgICAgIHNlbGZOYW1lOiBuYW1lTWF0Y2ggJiYgY2FwaXRhbGl6ZShjYW1lbGl6ZSQxKG5hbWVNYXRjaFsxXSkpLFxyXG4gICAgICAgIHByZWZpeElkZW50aWZpZXJzLFxyXG4gICAgICAgIGhvaXN0U3RhdGljLFxyXG4gICAgICAgIGNhY2hlSGFuZGxlcnMsXHJcbiAgICAgICAgbm9kZVRyYW5zZm9ybXMsXHJcbiAgICAgICAgZGlyZWN0aXZlVHJhbnNmb3JtcyxcclxuICAgICAgICB0cmFuc2Zvcm1Ib2lzdCxcclxuICAgICAgICBpc0J1aWx0SW5Db21wb25lbnQsXHJcbiAgICAgICAgaXNDdXN0b21FbGVtZW50LFxyXG4gICAgICAgIGV4cHJlc3Npb25QbHVnaW5zLFxyXG4gICAgICAgIHNjb3BlSWQsXHJcbiAgICAgICAgc2xvdHRlZCxcclxuICAgICAgICBzc3IsXHJcbiAgICAgICAgaW5TU1IsXHJcbiAgICAgICAgc3NyQ3NzVmFycyxcclxuICAgICAgICBiaW5kaW5nTWV0YWRhdGEsXHJcbiAgICAgICAgaW5saW5lLFxyXG4gICAgICAgIGlzVFMsXHJcbiAgICAgICAgb25FcnJvcixcclxuICAgICAgICBvbldhcm4sXHJcbiAgICAgICAgY29tcGF0Q29uZmlnLFxyXG4gICAgICAgIC8vIHN0YXRlXHJcbiAgICAgICAgcm9vdCxcclxuICAgICAgICBoZWxwZXJzOiBuZXcgTWFwKCksXHJcbiAgICAgICAgY29tcG9uZW50czogbmV3IFNldCgpLFxyXG4gICAgICAgIGRpcmVjdGl2ZXM6IG5ldyBTZXQoKSxcclxuICAgICAgICBob2lzdHM6IFtdLFxyXG4gICAgICAgIGltcG9ydHM6IFtdLFxyXG4gICAgICAgIGNvbnN0YW50Q2FjaGU6IG5ldyBNYXAoKSxcclxuICAgICAgICB0ZW1wczogMCxcclxuICAgICAgICBjYWNoZWQ6IDAsXHJcbiAgICAgICAgaWRlbnRpZmllcnM6IE9iamVjdC5jcmVhdGUobnVsbCksXHJcbiAgICAgICAgc2NvcGVzOiB7XHJcbiAgICAgICAgICAgIHZGb3I6IDAsXHJcbiAgICAgICAgICAgIHZTbG90OiAwLFxyXG4gICAgICAgICAgICB2UHJlOiAwLFxyXG4gICAgICAgICAgICB2T25jZTogMFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcGFyZW50OiBudWxsLFxyXG4gICAgICAgIGN1cnJlbnROb2RlOiByb290LFxyXG4gICAgICAgIGNoaWxkSW5kZXg6IDAsXHJcbiAgICAgICAgaW5WT25jZTogZmFsc2UsXHJcbiAgICAgICAgLy8gbWV0aG9kc1xyXG4gICAgICAgIGhlbHBlcihuYW1lKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvdW50ID0gY29udGV4dC5oZWxwZXJzLmdldChuYW1lKSB8fCAwO1xyXG4gICAgICAgICAgICBjb250ZXh0LmhlbHBlcnMuc2V0KG5hbWUsIGNvdW50ICsgMSk7XHJcbiAgICAgICAgICAgIHJldHVybiBuYW1lO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVtb3ZlSGVscGVyKG5hbWUpIHtcclxuICAgICAgICAgICAgY29uc3QgY291bnQgPSBjb250ZXh0LmhlbHBlcnMuZ2V0KG5hbWUpO1xyXG4gICAgICAgICAgICBpZiAoY291bnQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDb3VudCA9IGNvdW50IC0gMTtcclxuICAgICAgICAgICAgICAgIGlmICghY3VycmVudENvdW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5oZWxwZXJzLmRlbGV0ZShuYW1lKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuaGVscGVycy5zZXQobmFtZSwgY3VycmVudENvdW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaGVscGVyU3RyaW5nKG5hbWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGBfJHtoZWxwZXJOYW1lTWFwW2NvbnRleHQuaGVscGVyKG5hbWUpXX1gO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVwbGFjZU5vZGUobm9kZSkge1xyXG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LmN1cnJlbnROb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb2RlIGJlaW5nIHJlcGxhY2VkIGlzIGFscmVhZHkgcmVtb3ZlZC5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghY29udGV4dC5wYXJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXBsYWNlIHJvb3Qgbm9kZS5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250ZXh0LnBhcmVudC5jaGlsZHJlbltjb250ZXh0LmNoaWxkSW5kZXhdID0gY29udGV4dC5jdXJyZW50Tm9kZSA9IG5vZGU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICByZW1vdmVOb2RlKG5vZGUpIHtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhY29udGV4dC5wYXJlbnQpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlbW92ZSByb290IG5vZGUuYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgbGlzdCA9IGNvbnRleHQucGFyZW50LmNoaWxkcmVuO1xyXG4gICAgICAgICAgICBjb25zdCByZW1vdmFsSW5kZXggPSBub2RlXHJcbiAgICAgICAgICAgICAgICA/IGxpc3QuaW5kZXhPZihub2RlKVxyXG4gICAgICAgICAgICAgICAgOiBjb250ZXh0LmN1cnJlbnROb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgPyBjb250ZXh0LmNoaWxkSW5kZXhcclxuICAgICAgICAgICAgICAgICAgICA6IC0xO1xyXG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiByZW1vdmFsSW5kZXggPCAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYG5vZGUgYmVpbmcgcmVtb3ZlZCBpcyBub3QgYSBjaGlsZCBvZiBjdXJyZW50IHBhcmVudGApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghbm9kZSB8fCBub2RlID09PSBjb250ZXh0LmN1cnJlbnROb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjdXJyZW50IG5vZGUgcmVtb3ZlZFxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5jdXJyZW50Tm9kZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm9uTm9kZVJlbW92ZWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIHNpYmxpbmcgbm9kZSByZW1vdmVkXHJcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5jaGlsZEluZGV4ID4gcmVtb3ZhbEluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5jaGlsZEluZGV4LS07XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5vbk5vZGVSZW1vdmVkKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udGV4dC5wYXJlbnQuY2hpbGRyZW4uc3BsaWNlKHJlbW92YWxJbmRleCwgMSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvbk5vZGVSZW1vdmVkOiAoKSA9PiB7IH0sXHJcbiAgICAgICAgYWRkSWRlbnRpZmllcnMoZXhwKSB7XHJcbiAgICAgICAgfSxcclxuICAgICAgICByZW1vdmVJZGVudGlmaWVycyhleHApIHtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGhvaXN0KGV4cCkge1xyXG4gICAgICAgICAgICBpZiAoaXNTdHJpbmcoZXhwKSlcclxuICAgICAgICAgICAgICAgIGV4cCA9IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oZXhwKTtcclxuICAgICAgICAgICAgY29udGV4dC5ob2lzdHMucHVzaChleHApO1xyXG4gICAgICAgICAgICBjb25zdCBpZGVudGlmaWVyID0gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgX2hvaXN0ZWRfJHtjb250ZXh0LmhvaXN0cy5sZW5ndGh9YCwgZmFsc2UsIGV4cC5sb2MsIDIgLyogQ29uc3RhbnRUeXBlcy5DQU5fSE9JU1QgKi8pO1xyXG4gICAgICAgICAgICBpZGVudGlmaWVyLmhvaXN0ZWQgPSBleHA7XHJcbiAgICAgICAgICAgIHJldHVybiBpZGVudGlmaWVyO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2FjaGUoZXhwLCBpc1ZOb2RlID0gZmFsc2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUNhY2hlRXhwcmVzc2lvbihjb250ZXh0LmNhY2hlZCsrLCBleHAsIGlzVk5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB7XHJcbiAgICAgICAgY29udGV4dC5maWx0ZXJzID0gbmV3IFNldCgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbnRleHQ7XHJcbn1cclxuZnVuY3Rpb24gdHJhbnNmb3JtKHJvb3QsIG9wdGlvbnMpIHtcclxuICAgIGNvbnN0IGNvbnRleHQgPSBjcmVhdGVUcmFuc2Zvcm1Db250ZXh0KHJvb3QsIG9wdGlvbnMpO1xyXG4gICAgdHJhdmVyc2VOb2RlKHJvb3QsIGNvbnRleHQpO1xyXG4gICAgaWYgKG9wdGlvbnMuaG9pc3RTdGF0aWMpIHtcclxuICAgICAgICBob2lzdFN0YXRpYyhyb290LCBjb250ZXh0KTtcclxuICAgIH1cclxuICAgIGlmICghb3B0aW9ucy5zc3IpIHtcclxuICAgICAgICBjcmVhdGVSb290Q29kZWdlbihyb290LCBjb250ZXh0KTtcclxuICAgIH1cclxuICAgIC8vIGZpbmFsaXplIG1ldGEgaW5mb3JtYXRpb25cclxuICAgIHJvb3QuaGVscGVycyA9IFsuLi5jb250ZXh0LmhlbHBlcnMua2V5cygpXTtcclxuICAgIHJvb3QuY29tcG9uZW50cyA9IFsuLi5jb250ZXh0LmNvbXBvbmVudHNdO1xyXG4gICAgcm9vdC5kaXJlY3RpdmVzID0gWy4uLmNvbnRleHQuZGlyZWN0aXZlc107XHJcbiAgICByb290LmltcG9ydHMgPSBjb250ZXh0LmltcG9ydHM7XHJcbiAgICByb290LmhvaXN0cyA9IGNvbnRleHQuaG9pc3RzO1xyXG4gICAgcm9vdC50ZW1wcyA9IGNvbnRleHQudGVtcHM7XHJcbiAgICByb290LmNhY2hlZCA9IGNvbnRleHQuY2FjaGVkO1xyXG4gICAge1xyXG4gICAgICAgIHJvb3QuZmlsdGVycyA9IFsuLi5jb250ZXh0LmZpbHRlcnNdO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVJvb3RDb2RlZ2VuKHJvb3QsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgaGVscGVyIH0gPSBjb250ZXh0O1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gcm9vdDtcclxuICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuWzBdO1xyXG4gICAgICAgIC8vIGlmIHRoZSBzaW5nbGUgY2hpbGQgaXMgYW4gZWxlbWVudCwgdHVybiBpdCBpbnRvIGEgYmxvY2suXHJcbiAgICAgICAgaWYgKGlzU2luZ2xlRWxlbWVudFJvb3Qocm9vdCwgY2hpbGQpICYmIGNoaWxkLmNvZGVnZW5Ob2RlKSB7XHJcbiAgICAgICAgICAgIC8vIHNpbmdsZSBlbGVtZW50IHJvb3QgaXMgbmV2ZXIgaG9pc3RlZCBzbyBjb2RlZ2VuTm9kZSB3aWxsIG5ldmVyIGJlXHJcbiAgICAgICAgICAgIC8vIFNpbXBsZUV4cHJlc3Npb25Ob2RlXHJcbiAgICAgICAgICAgIGNvbnN0IGNvZGVnZW5Ob2RlID0gY2hpbGQuY29kZWdlbk5vZGU7XHJcbiAgICAgICAgICAgIGlmIChjb2RlZ2VuTm9kZS50eXBlID09PSAxMyAvKiBOb2RlVHlwZXMuVk5PREVfQ0FMTCAqLykge1xyXG4gICAgICAgICAgICAgICAgbWFrZUJsb2NrKGNvZGVnZW5Ob2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByb290LmNvZGVnZW5Ob2RlID0gY29kZWdlbk5vZGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyAtIHNpbmdsZSA8c2xvdC8+LCBJZk5vZGUsIEZvck5vZGU6IGFscmVhZHkgYmxvY2tzLlxyXG4gICAgICAgICAgICAvLyAtIHNpbmdsZSB0ZXh0IG5vZGU6IGFsd2F5cyBwYXRjaGVkLlxyXG4gICAgICAgICAgICAvLyByb290IGNvZGVnZW4gZmFsbHMgdGhyb3VnaCB2aWEgZ2VuTm9kZSgpXHJcbiAgICAgICAgICAgIHJvb3QuY29kZWdlbk5vZGUgPSBjaGlsZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChjaGlsZHJlbi5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgLy8gcm9vdCBoYXMgbXVsdGlwbGUgbm9kZXMgLSByZXR1cm4gYSBmcmFnbWVudCBibG9jay5cclxuICAgICAgICBsZXQgcGF0Y2hGbGFnID0gNjQgLyogUGF0Y2hGbGFncy5TVEFCTEVfRlJBR01FTlQgKi87XHJcbiAgICAgICAgbGV0IHBhdGNoRmxhZ1RleHQgPSBQYXRjaEZsYWdOYW1lc1s2NCAvKiBQYXRjaEZsYWdzLlNUQUJMRV9GUkFHTUVOVCAqL107XHJcbiAgICAgICAgLy8gY2hlY2sgaWYgdGhlIGZyYWdtZW50IGFjdHVhbGx5IGNvbnRhaW5zIGEgc2luZ2xlIHZhbGlkIGNoaWxkIHdpdGhcclxuICAgICAgICAvLyB0aGUgcmVzdCBiZWluZyBjb21tZW50c1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgY2hpbGRyZW4uZmlsdGVyKGMgPT4gYy50eXBlICE9PSAzIC8qIE5vZGVUeXBlcy5DT01NRU5UICovKS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgcGF0Y2hGbGFnIHw9IDIwNDggLyogUGF0Y2hGbGFncy5ERVZfUk9PVF9GUkFHTUVOVCAqLztcclxuICAgICAgICAgICAgcGF0Y2hGbGFnVGV4dCArPSBgLCAke1BhdGNoRmxhZ05hbWVzWzIwNDggLyogUGF0Y2hGbGFncy5ERVZfUk9PVF9GUkFHTUVOVCAqL119YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcm9vdC5jb2RlZ2VuTm9kZSA9IGNyZWF0ZVZOb2RlQ2FsbChjb250ZXh0LCBoZWxwZXIoRlJBR01FTlQpLCB1bmRlZmluZWQsIHJvb3QuY2hpbGRyZW4sIHBhdGNoRmxhZyArICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgIC8qICR7cGF0Y2hGbGFnVGV4dH0gKi9gIDogYGApLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdHJ1ZSwgdW5kZWZpbmVkLCBmYWxzZSAvKiBpc0NvbXBvbmVudCAqLyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIDtcclxufVxyXG5mdW5jdGlvbiB0cmF2ZXJzZUNoaWxkcmVuKHBhcmVudCwgY29udGV4dCkge1xyXG4gICAgbGV0IGkgPSAwO1xyXG4gICAgY29uc3Qgbm9kZVJlbW92ZWQgPSAoKSA9PiB7XHJcbiAgICAgICAgaS0tO1xyXG4gICAgfTtcclxuICAgIGZvciAoOyBpIDwgcGFyZW50LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgY2hpbGQgPSBwYXJlbnQuY2hpbGRyZW5baV07XHJcbiAgICAgICAgaWYgKGlzU3RyaW5nKGNoaWxkKSlcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgY29udGV4dC5wYXJlbnQgPSBwYXJlbnQ7XHJcbiAgICAgICAgY29udGV4dC5jaGlsZEluZGV4ID0gaTtcclxuICAgICAgICBjb250ZXh0Lm9uTm9kZVJlbW92ZWQgPSBub2RlUmVtb3ZlZDtcclxuICAgICAgICB0cmF2ZXJzZU5vZGUoY2hpbGQsIGNvbnRleHQpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHRyYXZlcnNlTm9kZShub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb250ZXh0LmN1cnJlbnROb2RlID0gbm9kZTtcclxuICAgIC8vIGFwcGx5IHRyYW5zZm9ybSBwbHVnaW5zXHJcbiAgICBjb25zdCB7IG5vZGVUcmFuc2Zvcm1zIH0gPSBjb250ZXh0O1xyXG4gICAgY29uc3QgZXhpdEZucyA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlVHJhbnNmb3Jtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IG9uRXhpdCA9IG5vZGVUcmFuc2Zvcm1zW2ldKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgIGlmIChvbkV4aXQpIHtcclxuICAgICAgICAgICAgaWYgKGlzQXJyYXkob25FeGl0KSkge1xyXG4gICAgICAgICAgICAgICAgZXhpdEZucy5wdXNoKC4uLm9uRXhpdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBleGl0Rm5zLnB1c2gob25FeGl0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWNvbnRleHQuY3VycmVudE5vZGUpIHtcclxuICAgICAgICAgICAgLy8gbm9kZSB3YXMgcmVtb3ZlZFxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBub2RlIG1heSBoYXZlIGJlZW4gcmVwbGFjZWRcclxuICAgICAgICAgICAgbm9kZSA9IGNvbnRleHQuY3VycmVudE5vZGU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgc3dpdGNoIChub2RlLnR5cGUpIHtcclxuICAgICAgICBjYXNlIDMgLyogTm9kZVR5cGVzLkNPTU1FTlQgKi86XHJcbiAgICAgICAgICAgIGlmICghY29udGV4dC5zc3IpIHtcclxuICAgICAgICAgICAgICAgIC8vIGluamVjdCBpbXBvcnQgZm9yIHRoZSBDb21tZW50IHN5bWJvbCwgd2hpY2ggaXMgbmVlZGVkIGZvciBjcmVhdGluZ1xyXG4gICAgICAgICAgICAgICAgLy8gY29tbWVudCBub2RlcyB3aXRoIGBjcmVhdGVWTm9kZWBcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuaGVscGVyKENSRUFURV9DT01NRU5UKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDUgLyogTm9kZVR5cGVzLklOVEVSUE9MQVRJT04gKi86XHJcbiAgICAgICAgICAgIC8vIG5vIG5lZWQgdG8gdHJhdmVyc2UsIGJ1dCB3ZSBuZWVkIHRvIGluamVjdCB0b1N0cmluZyBoZWxwZXJcclxuICAgICAgICAgICAgaWYgKCFjb250ZXh0LnNzcikge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5oZWxwZXIoVE9fRElTUExBWV9TVFJJTkcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vIGZvciBjb250YWluZXIgdHlwZXMsIGZ1cnRoZXIgdHJhdmVyc2UgZG93bndhcmRzXHJcbiAgICAgICAgY2FzZSA5IC8qIE5vZGVUeXBlcy5JRiAqLzpcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmJyYW5jaGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB0cmF2ZXJzZU5vZGUobm9kZS5icmFuY2hlc1tpXSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAxMCAvKiBOb2RlVHlwZXMuSUZfQlJBTkNIICovOlxyXG4gICAgICAgIGNhc2UgMTEgLyogTm9kZVR5cGVzLkZPUiAqLzpcclxuICAgICAgICBjYXNlIDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi86XHJcbiAgICAgICAgY2FzZSAwIC8qIE5vZGVUeXBlcy5ST09UICovOlxyXG4gICAgICAgICAgICB0cmF2ZXJzZUNoaWxkcmVuKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIC8vIGV4aXQgdHJhbnNmb3Jtc1xyXG4gICAgY29udGV4dC5jdXJyZW50Tm9kZSA9IG5vZGU7XHJcbiAgICBsZXQgaSA9IGV4aXRGbnMubGVuZ3RoO1xyXG4gICAgd2hpbGUgKGktLSkge1xyXG4gICAgICAgIGV4aXRGbnNbaV0oKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjcmVhdGVTdHJ1Y3R1cmFsRGlyZWN0aXZlVHJhbnNmb3JtKG5hbWUsIGZuKSB7XHJcbiAgICBjb25zdCBtYXRjaGVzID0gaXNTdHJpbmcobmFtZSlcclxuICAgICAgICA/IChuKSA9PiBuID09PSBuYW1lXHJcbiAgICAgICAgOiAobikgPT4gbmFtZS50ZXN0KG4pO1xyXG4gICAgcmV0dXJuIChub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLykge1xyXG4gICAgICAgICAgICBjb25zdCB7IHByb3BzIH0gPSBub2RlO1xyXG4gICAgICAgICAgICAvLyBzdHJ1Y3R1cmFsIGRpcmVjdGl2ZSB0cmFuc2Zvcm1zIGFyZSBub3QgY29uY2VybmVkIHdpdGggc2xvdHNcclxuICAgICAgICAgICAgLy8gYXMgdGhleSBhcmUgaGFuZGxlZCBzZXBhcmF0ZWx5IGluIHZTbG90LnRzXHJcbiAgICAgICAgICAgIGlmIChub2RlLnRhZ1R5cGUgPT09IDMgLyogRWxlbWVudFR5cGVzLlRFTVBMQVRFICovICYmIHByb3BzLnNvbWUoaXNWU2xvdCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBleGl0Rm5zID0gW107XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHByb3AgPSBwcm9wc1tpXTtcclxuICAgICAgICAgICAgICAgIGlmIChwcm9wLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyAmJiBtYXRjaGVzKHByb3AubmFtZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBzdHJ1Y3R1cmFsIGRpcmVjdGl2ZXMgYXJlIHJlbW92ZWQgdG8gYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYWxzbyB3ZSByZW1vdmUgdGhlbSAqYmVmb3JlKiBhcHBseWluZyBzbyB0aGF0IGl0IGNhbiBmdXJ0aGVyXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdHJhdmVyc2UgaXRzZWxmIGluIGNhc2UgaXQgbW92ZXMgdGhlIG5vZGUgYXJvdW5kXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGktLTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBvbkV4aXQgPSBmbihub2RlLCBwcm9wLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob25FeGl0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBleGl0Rm5zLnB1c2gob25FeGl0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZXhpdEZucztcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XG5cbmNvbnN0IFBVUkVfQU5OT1RBVElPTiA9IGAvKiNfX1BVUkVfXyovYDtcclxuY29uc3QgYWxpYXNIZWxwZXIgPSAocykgPT4gYCR7aGVscGVyTmFtZU1hcFtzXX06IF8ke2hlbHBlck5hbWVNYXBbc119YDtcclxuZnVuY3Rpb24gY3JlYXRlQ29kZWdlbkNvbnRleHQoYXN0LCB7IG1vZGUgPSAnZnVuY3Rpb24nLCBwcmVmaXhJZGVudGlmaWVycyA9IG1vZGUgPT09ICdtb2R1bGUnLCBzb3VyY2VNYXAgPSBmYWxzZSwgZmlsZW5hbWUgPSBgdGVtcGxhdGUudnVlLmh0bWxgLCBzY29wZUlkID0gbnVsbCwgb3B0aW1pemVJbXBvcnRzID0gZmFsc2UsIHJ1bnRpbWVHbG9iYWxOYW1lID0gYFZ1ZWAsIHJ1bnRpbWVNb2R1bGVOYW1lID0gYHZ1ZWAsIHNzclJ1bnRpbWVNb2R1bGVOYW1lID0gJ3Z1ZS9zZXJ2ZXItcmVuZGVyZXInLCBzc3IgPSBmYWxzZSwgaXNUUyA9IGZhbHNlLCBpblNTUiA9IGZhbHNlIH0pIHtcclxuICAgIGNvbnN0IGNvbnRleHQgPSB7XHJcbiAgICAgICAgbW9kZSxcclxuICAgICAgICBwcmVmaXhJZGVudGlmaWVycyxcclxuICAgICAgICBzb3VyY2VNYXAsXHJcbiAgICAgICAgZmlsZW5hbWUsXHJcbiAgICAgICAgc2NvcGVJZCxcclxuICAgICAgICBvcHRpbWl6ZUltcG9ydHMsXHJcbiAgICAgICAgcnVudGltZUdsb2JhbE5hbWUsXHJcbiAgICAgICAgcnVudGltZU1vZHVsZU5hbWUsXHJcbiAgICAgICAgc3NyUnVudGltZU1vZHVsZU5hbWUsXHJcbiAgICAgICAgc3NyLFxyXG4gICAgICAgIGlzVFMsXHJcbiAgICAgICAgaW5TU1IsXHJcbiAgICAgICAgc291cmNlOiBhc3QubG9jLnNvdXJjZSxcclxuICAgICAgICBjb2RlOiBgYCxcclxuICAgICAgICBjb2x1bW46IDEsXHJcbiAgICAgICAgbGluZTogMSxcclxuICAgICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgICAgaW5kZW50TGV2ZWw6IDAsXHJcbiAgICAgICAgcHVyZTogZmFsc2UsXHJcbiAgICAgICAgbWFwOiB1bmRlZmluZWQsXHJcbiAgICAgICAgaGVscGVyKGtleSkge1xyXG4gICAgICAgICAgICByZXR1cm4gYF8ke2hlbHBlck5hbWVNYXBba2V5XX1gO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcHVzaChjb2RlLCBub2RlKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuY29kZSArPSBjb2RlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaW5kZW50KCkge1xyXG4gICAgICAgICAgICBuZXdsaW5lKCsrY29udGV4dC5pbmRlbnRMZXZlbCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBkZWluZGVudCh3aXRob3V0TmV3TGluZSA9IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIGlmICh3aXRob3V0TmV3TGluZSkge1xyXG4gICAgICAgICAgICAgICAgLS1jb250ZXh0LmluZGVudExldmVsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbmV3bGluZSgtLWNvbnRleHQuaW5kZW50TGV2ZWwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBuZXdsaW5lKCkge1xyXG4gICAgICAgICAgICBuZXdsaW5lKGNvbnRleHQuaW5kZW50TGV2ZWwpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBmdW5jdGlvbiBuZXdsaW5lKG4pIHtcclxuICAgICAgICBjb250ZXh0LnB1c2goJ1xcbicgKyBgICBgLnJlcGVhdChuKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29udGV4dDtcclxufVxyXG5mdW5jdGlvbiBnZW5lcmF0ZShhc3QsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgY29uc3QgY29udGV4dCA9IGNyZWF0ZUNvZGVnZW5Db250ZXh0KGFzdCwgb3B0aW9ucyk7XHJcbiAgICBpZiAob3B0aW9ucy5vbkNvbnRleHRDcmVhdGVkKVxyXG4gICAgICAgIG9wdGlvbnMub25Db250ZXh0Q3JlYXRlZChjb250ZXh0KTtcclxuICAgIGNvbnN0IHsgbW9kZSwgcHVzaCwgcHJlZml4SWRlbnRpZmllcnMsIGluZGVudCwgZGVpbmRlbnQsIG5ld2xpbmUsIHNjb3BlSWQsIHNzciB9ID0gY29udGV4dDtcclxuICAgIGNvbnN0IGhhc0hlbHBlcnMgPSBhc3QuaGVscGVycy5sZW5ndGggPiAwO1xyXG4gICAgY29uc3QgdXNlV2l0aEJsb2NrID0gIXByZWZpeElkZW50aWZpZXJzICYmIG1vZGUgIT09ICdtb2R1bGUnO1xyXG4gICAgLy8gcHJlYW1ibGVzXHJcbiAgICAvLyBpbiBzZXR1cCgpIGlubGluZSBtb2RlLCB0aGUgcHJlYW1ibGUgaXMgZ2VuZXJhdGVkIGluIGEgc3ViIGNvbnRleHRcclxuICAgIC8vIGFuZCByZXR1cm5lZCBzZXBhcmF0ZWx5LlxyXG4gICAgY29uc3QgcHJlYW1ibGVDb250ZXh0ID0gY29udGV4dDtcclxuICAgIHtcclxuICAgICAgICBnZW5GdW5jdGlvblByZWFtYmxlKGFzdCwgcHJlYW1ibGVDb250ZXh0KTtcclxuICAgIH1cclxuICAgIC8vIGVudGVyIHJlbmRlciBmdW5jdGlvblxyXG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gc3NyID8gYHNzclJlbmRlcmAgOiBgcmVuZGVyYDtcclxuICAgIGNvbnN0IGFyZ3MgPSBzc3IgPyBbJ19jdHgnLCAnX3B1c2gnLCAnX3BhcmVudCcsICdfYXR0cnMnXSA6IFsnX2N0eCcsICdfY2FjaGUnXTtcclxuICAgIGNvbnN0IHNpZ25hdHVyZSA9IGFyZ3Muam9pbignLCAnKTtcclxuICAgIHtcclxuICAgICAgICBwdXNoKGBmdW5jdGlvbiAke2Z1bmN0aW9uTmFtZX0oJHtzaWduYXR1cmV9KSB7YCk7XHJcbiAgICB9XHJcbiAgICBpbmRlbnQoKTtcclxuICAgIGlmICh1c2VXaXRoQmxvY2spIHtcclxuICAgICAgICBwdXNoKGB3aXRoIChfY3R4KSB7YCk7XHJcbiAgICAgICAgaW5kZW50KCk7XHJcbiAgICAgICAgLy8gZnVuY3Rpb24gbW9kZSBjb25zdCBkZWNsYXJhdGlvbnMgc2hvdWxkIGJlIGluc2lkZSB3aXRoIGJsb2NrXHJcbiAgICAgICAgLy8gYWxzbyB0aGV5IHNob3VsZCBiZSByZW5hbWVkIHRvIGF2b2lkIGNvbGxpc2lvbiB3aXRoIHVzZXIgcHJvcGVydGllc1xyXG4gICAgICAgIGlmIChoYXNIZWxwZXJzKSB7XHJcbiAgICAgICAgICAgIHB1c2goYGNvbnN0IHsgJHthc3QuaGVscGVycy5tYXAoYWxpYXNIZWxwZXIpLmpvaW4oJywgJyl9IH0gPSBfVnVlYCk7XHJcbiAgICAgICAgICAgIHB1c2goYFxcbmApO1xyXG4gICAgICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gZ2VuZXJhdGUgYXNzZXQgcmVzb2x1dGlvbiBzdGF0ZW1lbnRzXHJcbiAgICBpZiAoYXN0LmNvbXBvbmVudHMubGVuZ3RoKSB7XHJcbiAgICAgICAgZ2VuQXNzZXRzKGFzdC5jb21wb25lbnRzLCAnY29tcG9uZW50JywgY29udGV4dCk7XHJcbiAgICAgICAgaWYgKGFzdC5kaXJlY3RpdmVzLmxlbmd0aCB8fCBhc3QudGVtcHMgPiAwKSB7XHJcbiAgICAgICAgICAgIG5ld2xpbmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoYXN0LmRpcmVjdGl2ZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgZ2VuQXNzZXRzKGFzdC5kaXJlY3RpdmVzLCAnZGlyZWN0aXZlJywgY29udGV4dCk7XHJcbiAgICAgICAgaWYgKGFzdC50ZW1wcyA+IDApIHtcclxuICAgICAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChhc3QuZmlsdGVycyAmJiBhc3QuZmlsdGVycy5sZW5ndGgpIHtcclxuICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICAgICAgZ2VuQXNzZXRzKGFzdC5maWx0ZXJzLCAnZmlsdGVyJywgY29udGV4dCk7XHJcbiAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGFzdC50ZW1wcyA+IDApIHtcclxuICAgICAgICBwdXNoKGBsZXQgYCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhc3QudGVtcHM7IGkrKykge1xyXG4gICAgICAgICAgICBwdXNoKGAke2kgPiAwID8gYCwgYCA6IGBgfV90ZW1wJHtpfWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChhc3QuY29tcG9uZW50cy5sZW5ndGggfHwgYXN0LmRpcmVjdGl2ZXMubGVuZ3RoIHx8IGFzdC50ZW1wcykge1xyXG4gICAgICAgIHB1c2goYFxcbmApO1xyXG4gICAgICAgIG5ld2xpbmUoKTtcclxuICAgIH1cclxuICAgIC8vIGdlbmVyYXRlIHRoZSBWTm9kZSB0cmVlIGV4cHJlc3Npb25cclxuICAgIGlmICghc3NyKSB7XHJcbiAgICAgICAgcHVzaChgcmV0dXJuIGApO1xyXG4gICAgfVxyXG4gICAgaWYgKGFzdC5jb2RlZ2VuTm9kZSkge1xyXG4gICAgICAgIGdlbk5vZGUoYXN0LmNvZGVnZW5Ob2RlLCBjb250ZXh0KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHB1c2goYG51bGxgKTtcclxuICAgIH1cclxuICAgIGlmICh1c2VXaXRoQmxvY2spIHtcclxuICAgICAgICBkZWluZGVudCgpO1xyXG4gICAgICAgIHB1c2goYH1gKTtcclxuICAgIH1cclxuICAgIGRlaW5kZW50KCk7XHJcbiAgICBwdXNoKGB9YCk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGFzdCxcclxuICAgICAgICBjb2RlOiBjb250ZXh0LmNvZGUsXHJcbiAgICAgICAgcHJlYW1ibGU6IGBgLFxyXG4gICAgICAgIC8vIFNvdXJjZU1hcEdlbmVyYXRvciBkb2VzIGhhdmUgdG9KU09OKCkgbWV0aG9kIGJ1dCBpdCdzIG5vdCBpbiB0aGUgdHlwZXNcclxuICAgICAgICBtYXA6IGNvbnRleHQubWFwID8gY29udGV4dC5tYXAudG9KU09OKCkgOiB1bmRlZmluZWRcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gZ2VuRnVuY3Rpb25QcmVhbWJsZShhc3QsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgc3NyLCBwcmVmaXhJZGVudGlmaWVycywgcHVzaCwgbmV3bGluZSwgcnVudGltZU1vZHVsZU5hbWUsIHJ1bnRpbWVHbG9iYWxOYW1lLCBzc3JSdW50aW1lTW9kdWxlTmFtZSB9ID0gY29udGV4dDtcclxuICAgIGNvbnN0IFZ1ZUJpbmRpbmcgPSBydW50aW1lR2xvYmFsTmFtZTtcclxuICAgIC8vIEdlbmVyYXRlIGNvbnN0IGRlY2xhcmF0aW9uIGZvciBoZWxwZXJzXHJcbiAgICAvLyBJbiBwcmVmaXggbW9kZSwgd2UgcGxhY2UgdGhlIGNvbnN0IGRlY2xhcmF0aW9uIGF0IHRvcCBzbyBpdCdzIGRvbmVcclxuICAgIC8vIG9ubHkgb25jZTsgQnV0IGlmIHdlIG5vdCBwcmVmaXhpbmcsIHdlIHBsYWNlIHRoZSBkZWNsYXJhdGlvbiBpbnNpZGUgdGhlXHJcbiAgICAvLyB3aXRoIGJsb2NrIHNvIGl0IGRvZXNuJ3QgaW5jdXIgdGhlIGBpbmAgY2hlY2sgY29zdCBmb3IgZXZlcnkgaGVscGVyIGFjY2Vzcy5cclxuICAgIGlmIChhc3QuaGVscGVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAvLyBcIndpdGhcIiBtb2RlLlxyXG4gICAgICAgICAgICAvLyBzYXZlIFZ1ZSBpbiBhIHNlcGFyYXRlIHZhcmlhYmxlIHRvIGF2b2lkIGNvbGxpc2lvblxyXG4gICAgICAgICAgICBwdXNoKGBjb25zdCBfVnVlID0gJHtWdWVCaW5kaW5nfVxcbmApO1xyXG4gICAgICAgICAgICAvLyBpbiBcIndpdGhcIiBtb2RlLCBoZWxwZXJzIGFyZSBkZWNsYXJlZCBpbnNpZGUgdGhlIHdpdGggYmxvY2sgdG8gYXZvaWRcclxuICAgICAgICAgICAgLy8gaGFzIGNoZWNrIGNvc3QsIGJ1dCBob2lzdHMgYXJlIGxpZnRlZCBvdXQgb2YgdGhlIGZ1bmN0aW9uIC0gd2UgbmVlZFxyXG4gICAgICAgICAgICAvLyB0byBwcm92aWRlIHRoZSBoZWxwZXIgaGVyZS5cclxuICAgICAgICAgICAgaWYgKGFzdC5ob2lzdHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdGF0aWNIZWxwZXJzID0gW1xyXG4gICAgICAgICAgICAgICAgICAgIENSRUFURV9WTk9ERSxcclxuICAgICAgICAgICAgICAgICAgICBDUkVBVEVfRUxFTUVOVF9WTk9ERSxcclxuICAgICAgICAgICAgICAgICAgICBDUkVBVEVfQ09NTUVOVCxcclxuICAgICAgICAgICAgICAgICAgICBDUkVBVEVfVEVYVCxcclxuICAgICAgICAgICAgICAgICAgICBDUkVBVEVfU1RBVElDXHJcbiAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihoZWxwZXIgPT4gYXN0LmhlbHBlcnMuaW5jbHVkZXMoaGVscGVyKSlcclxuICAgICAgICAgICAgICAgICAgICAubWFwKGFsaWFzSGVscGVyKVxyXG4gICAgICAgICAgICAgICAgICAgIC5qb2luKCcsICcpO1xyXG4gICAgICAgICAgICAgICAgcHVzaChgY29uc3QgeyAke3N0YXRpY0hlbHBlcnN9IH0gPSBfVnVlXFxuYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBnZW5Ib2lzdHMoYXN0LmhvaXN0cywgY29udGV4dCk7XHJcbiAgICBuZXdsaW5lKCk7XHJcbiAgICBwdXNoKGByZXR1cm4gYCk7XHJcbn1cclxuZnVuY3Rpb24gZ2VuQXNzZXRzKGFzc2V0cywgdHlwZSwgeyBoZWxwZXIsIHB1c2gsIG5ld2xpbmUsIGlzVFMgfSkge1xyXG4gICAgY29uc3QgcmVzb2x2ZXIgPSBoZWxwZXIodHlwZSA9PT0gJ2ZpbHRlcidcclxuICAgICAgICA/IFJFU09MVkVfRklMVEVSXHJcbiAgICAgICAgOiB0eXBlID09PSAnY29tcG9uZW50J1xyXG4gICAgICAgICAgICA/IFJFU09MVkVfQ09NUE9ORU5UXHJcbiAgICAgICAgICAgIDogUkVTT0xWRV9ESVJFQ1RJVkUpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhc3NldHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgaWQgPSBhc3NldHNbaV07XHJcbiAgICAgICAgLy8gcG90ZW50aWFsIGNvbXBvbmVudCBpbXBsaWNpdCBzZWxmLXJlZmVyZW5jZSBpbmZlcnJlZCBmcm9tIFNGQyBmaWxlbmFtZVxyXG4gICAgICAgIGNvbnN0IG1heWJlU2VsZlJlZmVyZW5jZSA9IGlkLmVuZHNXaXRoKCdfX3NlbGYnKTtcclxuICAgICAgICBpZiAobWF5YmVTZWxmUmVmZXJlbmNlKSB7XHJcbiAgICAgICAgICAgIGlkID0gaWQuc2xpY2UoMCwgLTYpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwdXNoKGBjb25zdCAke3RvVmFsaWRBc3NldElkKGlkLCB0eXBlKX0gPSAke3Jlc29sdmVyfSgke0pTT04uc3RyaW5naWZ5KGlkKX0ke21heWJlU2VsZlJlZmVyZW5jZSA/IGAsIHRydWVgIDogYGB9KSR7aXNUUyA/IGAhYCA6IGBgfWApO1xyXG4gICAgICAgIGlmIChpIDwgYXNzZXRzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZW5Ib2lzdHMoaG9pc3RzLCBjb250ZXh0KSB7XHJcbiAgICBpZiAoIWhvaXN0cy5sZW5ndGgpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnB1cmUgPSB0cnVlO1xyXG4gICAgY29uc3QgeyBwdXNoLCBuZXdsaW5lLCBoZWxwZXIsIHNjb3BlSWQsIG1vZGUgfSA9IGNvbnRleHQ7XHJcbiAgICBuZXdsaW5lKCk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhvaXN0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGV4cCA9IGhvaXN0c1tpXTtcclxuICAgICAgICBpZiAoZXhwKSB7XHJcbiAgICAgICAgICAgIHB1c2goYGNvbnN0IF9ob2lzdGVkXyR7aSArIDF9ID0gJHtgYH1gKTtcclxuICAgICAgICAgICAgZ2VuTm9kZShleHAsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29udGV4dC5wdXJlID0gZmFsc2U7XHJcbn1cclxuZnVuY3Rpb24gaXNUZXh0JDEobikge1xyXG4gICAgcmV0dXJuIChpc1N0cmluZyhuKSB8fFxyXG4gICAgICAgIG4udHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8gfHxcclxuICAgICAgICBuLnR5cGUgPT09IDIgLyogTm9kZVR5cGVzLlRFWFQgKi8gfHxcclxuICAgICAgICBuLnR5cGUgPT09IDUgLyogTm9kZVR5cGVzLklOVEVSUE9MQVRJT04gKi8gfHxcclxuICAgICAgICBuLnR5cGUgPT09IDggLyogTm9kZVR5cGVzLkNPTVBPVU5EX0VYUFJFU1NJT04gKi8pO1xyXG59XHJcbmZ1bmN0aW9uIGdlbk5vZGVMaXN0QXNBcnJheShub2RlcywgY29udGV4dCkge1xyXG4gICAgY29uc3QgbXVsdGlsaW5lcyA9IG5vZGVzLmxlbmd0aCA+IDMgfHxcclxuICAgICAgICAoKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkgJiYgbm9kZXMuc29tZShuID0+IGlzQXJyYXkobikgfHwgIWlzVGV4dCQxKG4pKSk7XHJcbiAgICBjb250ZXh0LnB1c2goYFtgKTtcclxuICAgIG11bHRpbGluZXMgJiYgY29udGV4dC5pbmRlbnQoKTtcclxuICAgIGdlbk5vZGVMaXN0KG5vZGVzLCBjb250ZXh0LCBtdWx0aWxpbmVzKTtcclxuICAgIG11bHRpbGluZXMgJiYgY29udGV4dC5kZWluZGVudCgpO1xyXG4gICAgY29udGV4dC5wdXNoKGBdYCk7XHJcbn1cclxuZnVuY3Rpb24gZ2VuTm9kZUxpc3Qobm9kZXMsIGNvbnRleHQsIG11bHRpbGluZXMgPSBmYWxzZSwgY29tbWEgPSB0cnVlKSB7XHJcbiAgICBjb25zdCB7IHB1c2gsIG5ld2xpbmUgfSA9IGNvbnRleHQ7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3Qgbm9kZSA9IG5vZGVzW2ldO1xyXG4gICAgICAgIGlmIChpc1N0cmluZyhub2RlKSkge1xyXG4gICAgICAgICAgICBwdXNoKG5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpc0FycmF5KG5vZGUpKSB7XHJcbiAgICAgICAgICAgIGdlbk5vZGVMaXN0QXNBcnJheShub2RlLCBjb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGdlbk5vZGUobm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpIDwgbm9kZXMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICBpZiAobXVsdGlsaW5lcykge1xyXG4gICAgICAgICAgICAgICAgY29tbWEgJiYgcHVzaCgnLCcpO1xyXG4gICAgICAgICAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29tbWEgJiYgcHVzaCgnLCAnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZW5Ob2RlKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGlmIChpc1N0cmluZyhub2RlKSkge1xyXG4gICAgICAgIGNvbnRleHQucHVzaChub2RlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoaXNTeW1ib2wobm9kZSkpIHtcclxuICAgICAgICBjb250ZXh0LnB1c2goY29udGV4dC5oZWxwZXIobm9kZSkpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovOlxyXG4gICAgICAgIGNhc2UgOSAvKiBOb2RlVHlwZXMuSUYgKi86XHJcbiAgICAgICAgY2FzZSAxMSAvKiBOb2RlVHlwZXMuRk9SICovOlxyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgIGFzc2VydChub2RlLmNvZGVnZW5Ob2RlICE9IG51bGwsIGBDb2RlZ2VuIG5vZGUgaXMgbWlzc2luZyBmb3IgZWxlbWVudC9pZi9mb3Igbm9kZS4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYEFwcGx5IGFwcHJvcHJpYXRlIHRyYW5zZm9ybXMgZmlyc3QuYCk7XHJcbiAgICAgICAgICAgIGdlbk5vZGUobm9kZS5jb2RlZ2VuTm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMiAvKiBOb2RlVHlwZXMuVEVYVCAqLzpcclxuICAgICAgICAgICAgZ2VuVGV4dChub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgZ2VuRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSA1IC8qIE5vZGVUeXBlcy5JTlRFUlBPTEFUSU9OICovOlxyXG4gICAgICAgICAgICBnZW5JbnRlcnBvbGF0aW9uKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDEyIC8qIE5vZGVUeXBlcy5URVhUX0NBTEwgKi86XHJcbiAgICAgICAgICAgIGdlbk5vZGUobm9kZS5jb2RlZ2VuTm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgOCAvKiBOb2RlVHlwZXMuQ09NUE9VTkRfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgZ2VuQ29tcG91bmRFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDMgLyogTm9kZVR5cGVzLkNPTU1FTlQgKi86XHJcbiAgICAgICAgICAgIGdlbkNvbW1lbnQobm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMTMgLyogTm9kZVR5cGVzLlZOT0RFX0NBTEwgKi86XHJcbiAgICAgICAgICAgIGdlblZOb2RlQ2FsbChub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAxNCAvKiBOb2RlVHlwZXMuSlNfQ0FMTF9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICBnZW5DYWxsRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAxNSAvKiBOb2RlVHlwZXMuSlNfT0JKRUNUX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIGdlbk9iamVjdEV4cHJlc3Npb24obm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMTcgLyogTm9kZVR5cGVzLkpTX0FSUkFZX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIGdlbkFycmF5RXhwcmVzc2lvbihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAxOCAvKiBOb2RlVHlwZXMuSlNfRlVOQ1RJT05fRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgZ2VuRnVuY3Rpb25FeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDE5IC8qIE5vZGVUeXBlcy5KU19DT05ESVRJT05BTF9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICBnZW5Db25kaXRpb25hbEV4cHJlc3Npb24obm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMjAgLyogTm9kZVR5cGVzLkpTX0NBQ0hFX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIGdlbkNhY2hlRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAyMSAvKiBOb2RlVHlwZXMuSlNfQkxPQ0tfU1RBVEVNRU5UICovOlxyXG4gICAgICAgICAgICBnZW5Ob2RlTGlzdChub2RlLmJvZHksIGNvbnRleHQsIHRydWUsIGZhbHNlKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy8gU1NSIG9ubHkgdHlwZXNcclxuICAgICAgICBjYXNlIDIyIC8qIE5vZGVUeXBlcy5KU19URU1QTEFURV9MSVRFUkFMICovOlxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDIzIC8qIE5vZGVUeXBlcy5KU19JRl9TVEFURU1FTlQgKi86XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMjQgLyogTm9kZVR5cGVzLkpTX0FTU0lHTk1FTlRfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAyNSAvKiBOb2RlVHlwZXMuSlNfU0VRVUVOQ0VfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAyNiAvKiBOb2RlVHlwZXMuSlNfUkVUVVJOX1NUQVRFTUVOVCAqLzpcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuICAgICAgICBjYXNlIDEwIC8qIE5vZGVUeXBlcy5JRl9CUkFOQ0ggKi86XHJcbiAgICAgICAgICAgIC8vIG5vb3BcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgYXNzZXJ0KGZhbHNlLCBgdW5oYW5kbGVkIGNvZGVnZW4gbm9kZSB0eXBlOiAke25vZGUudHlwZX1gKTtcclxuICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB3ZSBleGhhdXN0IGFsbCBwb3NzaWJsZSB0eXBlc1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXhoYXVzdGl2ZUNoZWNrID0gbm9kZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBleGhhdXN0aXZlQ2hlY2s7XHJcbiAgICAgICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZW5UZXh0KG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnRleHQucHVzaChKU09OLnN0cmluZ2lmeShub2RlLmNvbnRlbnQpLCBub2RlKTtcclxufVxyXG5mdW5jdGlvbiBnZW5FeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgY29udGVudCwgaXNTdGF0aWMgfSA9IG5vZGU7XHJcbiAgICBjb250ZXh0LnB1c2goaXNTdGF0aWMgPyBKU09OLnN0cmluZ2lmeShjb250ZW50KSA6IGNvbnRlbnQsIG5vZGUpO1xyXG59XHJcbmZ1bmN0aW9uIGdlbkludGVycG9sYXRpb24obm9kZSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBwdXNoLCBoZWxwZXIsIHB1cmUgfSA9IGNvbnRleHQ7XHJcbiAgICBpZiAocHVyZSlcclxuICAgICAgICBwdXNoKFBVUkVfQU5OT1RBVElPTik7XHJcbiAgICBwdXNoKGAke2hlbHBlcihUT19ESVNQTEFZX1NUUklORyl9KGApO1xyXG4gICAgZ2VuTm9kZShub2RlLmNvbnRlbnQsIGNvbnRleHQpO1xyXG4gICAgcHVzaChgKWApO1xyXG59XHJcbmZ1bmN0aW9uIGdlbkNvbXBvdW5kRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGUuY2hpbGRyZW5baV07XHJcbiAgICAgICAgaWYgKGlzU3RyaW5nKGNoaWxkKSkge1xyXG4gICAgICAgICAgICBjb250ZXh0LnB1c2goY2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZ2VuTm9kZShjaGlsZCwgY29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdlbkV4cHJlc3Npb25Bc1Byb3BlcnR5S2V5KG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgcHVzaCB9ID0gY29udGV4dDtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IDggLyogTm9kZVR5cGVzLkNPTVBPVU5EX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICBwdXNoKGBbYCk7XHJcbiAgICAgICAgZ2VuQ29tcG91bmRFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgIHB1c2goYF1gKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKG5vZGUuaXNTdGF0aWMpIHtcclxuICAgICAgICAvLyBvbmx5IHF1b3RlIGtleXMgaWYgbmVjZXNzYXJ5XHJcbiAgICAgICAgY29uc3QgdGV4dCA9IGlzU2ltcGxlSWRlbnRpZmllcihub2RlLmNvbnRlbnQpXHJcbiAgICAgICAgICAgID8gbm9kZS5jb250ZW50XHJcbiAgICAgICAgICAgIDogSlNPTi5zdHJpbmdpZnkobm9kZS5jb250ZW50KTtcclxuICAgICAgICBwdXNoKHRleHQsIG5vZGUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcHVzaChgWyR7bm9kZS5jb250ZW50fV1gLCBub2RlKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZW5Db21tZW50KG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgcHVzaCwgaGVscGVyLCBwdXJlIH0gPSBjb250ZXh0O1xyXG4gICAgaWYgKHB1cmUpIHtcclxuICAgICAgICBwdXNoKFBVUkVfQU5OT1RBVElPTik7XHJcbiAgICB9XHJcbiAgICBwdXNoKGAke2hlbHBlcihDUkVBVEVfQ09NTUVOVCl9KCR7SlNPTi5zdHJpbmdpZnkobm9kZS5jb250ZW50KX0pYCwgbm9kZSk7XHJcbn1cclxuZnVuY3Rpb24gZ2VuVk5vZGVDYWxsKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgcHVzaCwgaGVscGVyLCBwdXJlIH0gPSBjb250ZXh0O1xyXG4gICAgY29uc3QgeyB0YWcsIHByb3BzLCBjaGlsZHJlbiwgcGF0Y2hGbGFnLCBkeW5hbWljUHJvcHMsIGRpcmVjdGl2ZXMsIGlzQmxvY2ssIGRpc2FibGVUcmFja2luZywgaXNDb21wb25lbnQgfSA9IG5vZGU7XHJcbiAgICBpZiAoZGlyZWN0aXZlcykge1xyXG4gICAgICAgIHB1c2goaGVscGVyKFdJVEhfRElSRUNUSVZFUykgKyBgKGApO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzQmxvY2spIHtcclxuICAgICAgICBwdXNoKGAoJHtoZWxwZXIoT1BFTl9CTE9DSyl9KCR7ZGlzYWJsZVRyYWNraW5nID8gYHRydWVgIDogYGB9KSwgYCk7XHJcbiAgICB9XHJcbiAgICBpZiAocHVyZSkge1xyXG4gICAgICAgIHB1c2goUFVSRV9BTk5PVEFUSU9OKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNhbGxIZWxwZXIgPSBpc0Jsb2NrXHJcbiAgICAgICAgPyBnZXRWTm9kZUJsb2NrSGVscGVyKGNvbnRleHQuaW5TU1IsIGlzQ29tcG9uZW50KVxyXG4gICAgICAgIDogZ2V0Vk5vZGVIZWxwZXIoY29udGV4dC5pblNTUiwgaXNDb21wb25lbnQpO1xyXG4gICAgcHVzaChoZWxwZXIoY2FsbEhlbHBlcikgKyBgKGAsIG5vZGUpO1xyXG4gICAgZ2VuTm9kZUxpc3QoZ2VuTnVsbGFibGVBcmdzKFt0YWcsIHByb3BzLCBjaGlsZHJlbiwgcGF0Y2hGbGFnLCBkeW5hbWljUHJvcHNdKSwgY29udGV4dCk7XHJcbiAgICBwdXNoKGApYCk7XHJcbiAgICBpZiAoaXNCbG9jaykge1xyXG4gICAgICAgIHB1c2goYClgKTtcclxuICAgIH1cclxuICAgIGlmIChkaXJlY3RpdmVzKSB7XHJcbiAgICAgICAgcHVzaChgLCBgKTtcclxuICAgICAgICBnZW5Ob2RlKGRpcmVjdGl2ZXMsIGNvbnRleHQpO1xyXG4gICAgICAgIHB1c2goYClgKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZW5OdWxsYWJsZUFyZ3MoYXJncykge1xyXG4gICAgbGV0IGkgPSBhcmdzLmxlbmd0aDtcclxuICAgIHdoaWxlIChpLS0pIHtcclxuICAgICAgICBpZiAoYXJnc1tpXSAhPSBudWxsKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBhcmdzLnNsaWNlKDAsIGkgKyAxKS5tYXAoYXJnID0+IGFyZyB8fCBgbnVsbGApO1xyXG59XHJcbi8vIEphdmFTY3JpcHRcclxuZnVuY3Rpb24gZ2VuQ2FsbEV4cHJlc3Npb24obm9kZSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBwdXNoLCBoZWxwZXIsIHB1cmUgfSA9IGNvbnRleHQ7XHJcbiAgICBjb25zdCBjYWxsZWUgPSBpc1N0cmluZyhub2RlLmNhbGxlZSkgPyBub2RlLmNhbGxlZSA6IGhlbHBlcihub2RlLmNhbGxlZSk7XHJcbiAgICBpZiAocHVyZSkge1xyXG4gICAgICAgIHB1c2goUFVSRV9BTk5PVEFUSU9OKTtcclxuICAgIH1cclxuICAgIHB1c2goY2FsbGVlICsgYChgLCBub2RlKTtcclxuICAgIGdlbk5vZGVMaXN0KG5vZGUuYXJndW1lbnRzLCBjb250ZXh0KTtcclxuICAgIHB1c2goYClgKTtcclxufVxyXG5mdW5jdGlvbiBnZW5PYmplY3RFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgcHVzaCwgaW5kZW50LCBkZWluZGVudCwgbmV3bGluZSB9ID0gY29udGV4dDtcclxuICAgIGNvbnN0IHsgcHJvcGVydGllcyB9ID0gbm9kZTtcclxuICAgIGlmICghcHJvcGVydGllcy5sZW5ndGgpIHtcclxuICAgICAgICBwdXNoKGB7fWAsIG5vZGUpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IG11bHRpbGluZXMgPSBwcm9wZXJ0aWVzLmxlbmd0aCA+IDEgfHxcclxuICAgICAgICAoKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkgJiZcclxuICAgICAgICAgICAgcHJvcGVydGllcy5zb21lKHAgPT4gcC52YWx1ZS50eXBlICE9PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLykpO1xyXG4gICAgcHVzaChtdWx0aWxpbmVzID8gYHtgIDogYHsgYCk7XHJcbiAgICBtdWx0aWxpbmVzICYmIGluZGVudCgpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgeyBrZXksIHZhbHVlIH0gPSBwcm9wZXJ0aWVzW2ldO1xyXG4gICAgICAgIC8vIGtleVxyXG4gICAgICAgIGdlbkV4cHJlc3Npb25Bc1Byb3BlcnR5S2V5KGtleSwgY29udGV4dCk7XHJcbiAgICAgICAgcHVzaChgOiBgKTtcclxuICAgICAgICAvLyB2YWx1ZVxyXG4gICAgICAgIGdlbk5vZGUodmFsdWUsIGNvbnRleHQpO1xyXG4gICAgICAgIGlmIChpIDwgcHJvcGVydGllcy5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgIC8vIHdpbGwgb25seSByZWFjaCB0aGlzIGlmIGl0J3MgbXVsdGlsaW5lc1xyXG4gICAgICAgICAgICBwdXNoKGAsYCk7XHJcbiAgICAgICAgICAgIG5ld2xpbmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBtdWx0aWxpbmVzICYmIGRlaW5kZW50KCk7XHJcbiAgICBwdXNoKG11bHRpbGluZXMgPyBgfWAgOiBgIH1gKTtcclxufVxyXG5mdW5jdGlvbiBnZW5BcnJheUV4cHJlc3Npb24obm9kZSwgY29udGV4dCkge1xyXG4gICAgZ2VuTm9kZUxpc3RBc0FycmF5KG5vZGUuZWxlbWVudHMsIGNvbnRleHQpO1xyXG59XHJcbmZ1bmN0aW9uIGdlbkZ1bmN0aW9uRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IHB1c2gsIGluZGVudCwgZGVpbmRlbnQgfSA9IGNvbnRleHQ7XHJcbiAgICBjb25zdCB7IHBhcmFtcywgcmV0dXJucywgYm9keSwgbmV3bGluZSwgaXNTbG90IH0gPSBub2RlO1xyXG4gICAgaWYgKGlzU2xvdCkge1xyXG4gICAgICAgIC8vIHdyYXAgc2xvdCBmdW5jdGlvbnMgd2l0aCBvd25lciBjb250ZXh0XHJcbiAgICAgICAgcHVzaChgXyR7aGVscGVyTmFtZU1hcFtXSVRIX0NUWF19KGApO1xyXG4gICAgfVxyXG4gICAgcHVzaChgKGAsIG5vZGUpO1xyXG4gICAgaWYgKGlzQXJyYXkocGFyYW1zKSkge1xyXG4gICAgICAgIGdlbk5vZGVMaXN0KHBhcmFtcywgY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChwYXJhbXMpIHtcclxuICAgICAgICBnZW5Ob2RlKHBhcmFtcywgY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICBwdXNoKGApID0+IGApO1xyXG4gICAgaWYgKG5ld2xpbmUgfHwgYm9keSkge1xyXG4gICAgICAgIHB1c2goYHtgKTtcclxuICAgICAgICBpbmRlbnQoKTtcclxuICAgIH1cclxuICAgIGlmIChyZXR1cm5zKSB7XHJcbiAgICAgICAgaWYgKG5ld2xpbmUpIHtcclxuICAgICAgICAgICAgcHVzaChgcmV0dXJuIGApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNBcnJheShyZXR1cm5zKSkge1xyXG4gICAgICAgICAgICBnZW5Ob2RlTGlzdEFzQXJyYXkocmV0dXJucywgY29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBnZW5Ob2RlKHJldHVybnMsIGNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGJvZHkpIHtcclxuICAgICAgICBnZW5Ob2RlKGJvZHksIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgaWYgKG5ld2xpbmUgfHwgYm9keSkge1xyXG4gICAgICAgIGRlaW5kZW50KCk7XHJcbiAgICAgICAgcHVzaChgfWApO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzU2xvdCkge1xyXG4gICAgICAgIGlmIChub2RlLmlzTm9uU2NvcGVkU2xvdCkge1xyXG4gICAgICAgICAgICBwdXNoKGAsIHVuZGVmaW5lZCwgdHJ1ZWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwdXNoKGApYCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2VuQ29uZGl0aW9uYWxFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgdGVzdCwgY29uc2VxdWVudCwgYWx0ZXJuYXRlLCBuZXdsaW5lOiBuZWVkTmV3bGluZSB9ID0gbm9kZTtcclxuICAgIGNvbnN0IHsgcHVzaCwgaW5kZW50LCBkZWluZGVudCwgbmV3bGluZSB9ID0gY29udGV4dDtcclxuICAgIGlmICh0ZXN0LnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgY29uc3QgbmVlZHNQYXJlbnMgPSAhaXNTaW1wbGVJZGVudGlmaWVyKHRlc3QuY29udGVudCk7XHJcbiAgICAgICAgbmVlZHNQYXJlbnMgJiYgcHVzaChgKGApO1xyXG4gICAgICAgIGdlbkV4cHJlc3Npb24odGVzdCwgY29udGV4dCk7XHJcbiAgICAgICAgbmVlZHNQYXJlbnMgJiYgcHVzaChgKWApO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcHVzaChgKGApO1xyXG4gICAgICAgIGdlbk5vZGUodGVzdCwgY29udGV4dCk7XHJcbiAgICAgICAgcHVzaChgKWApO1xyXG4gICAgfVxyXG4gICAgbmVlZE5ld2xpbmUgJiYgaW5kZW50KCk7XHJcbiAgICBjb250ZXh0LmluZGVudExldmVsKys7XHJcbiAgICBuZWVkTmV3bGluZSB8fCBwdXNoKGAgYCk7XHJcbiAgICBwdXNoKGA/IGApO1xyXG4gICAgZ2VuTm9kZShjb25zZXF1ZW50LCBjb250ZXh0KTtcclxuICAgIGNvbnRleHQuaW5kZW50TGV2ZWwtLTtcclxuICAgIG5lZWROZXdsaW5lICYmIG5ld2xpbmUoKTtcclxuICAgIG5lZWROZXdsaW5lIHx8IHB1c2goYCBgKTtcclxuICAgIHB1c2goYDogYCk7XHJcbiAgICBjb25zdCBpc05lc3RlZCA9IGFsdGVybmF0ZS50eXBlID09PSAxOSAvKiBOb2RlVHlwZXMuSlNfQ09ORElUSU9OQUxfRVhQUkVTU0lPTiAqLztcclxuICAgIGlmICghaXNOZXN0ZWQpIHtcclxuICAgICAgICBjb250ZXh0LmluZGVudExldmVsKys7XHJcbiAgICB9XHJcbiAgICBnZW5Ob2RlKGFsdGVybmF0ZSwgY29udGV4dCk7XHJcbiAgICBpZiAoIWlzTmVzdGVkKSB7XHJcbiAgICAgICAgY29udGV4dC5pbmRlbnRMZXZlbC0tO1xyXG4gICAgfVxyXG4gICAgbmVlZE5ld2xpbmUgJiYgZGVpbmRlbnQodHJ1ZSAvKiB3aXRob3V0IG5ld2xpbmUgKi8pO1xyXG59XHJcbmZ1bmN0aW9uIGdlbkNhY2hlRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IHB1c2gsIGhlbHBlciwgaW5kZW50LCBkZWluZGVudCwgbmV3bGluZSB9ID0gY29udGV4dDtcclxuICAgIHB1c2goYF9jYWNoZVske25vZGUuaW5kZXh9XSB8fCAoYCk7XHJcbiAgICBpZiAobm9kZS5pc1ZOb2RlKSB7XHJcbiAgICAgICAgaW5kZW50KCk7XHJcbiAgICAgICAgcHVzaChgJHtoZWxwZXIoU0VUX0JMT0NLX1RSQUNLSU5HKX0oLTEpLGApO1xyXG4gICAgICAgIG5ld2xpbmUoKTtcclxuICAgIH1cclxuICAgIHB1c2goYF9jYWNoZVske25vZGUuaW5kZXh9XSA9IGApO1xyXG4gICAgZ2VuTm9kZShub2RlLnZhbHVlLCBjb250ZXh0KTtcclxuICAgIGlmIChub2RlLmlzVk5vZGUpIHtcclxuICAgICAgICBwdXNoKGAsYCk7XHJcbiAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgICAgIHB1c2goYCR7aGVscGVyKFNFVF9CTE9DS19UUkFDS0lORyl9KDEpLGApO1xyXG4gICAgICAgIG5ld2xpbmUoKTtcclxuICAgICAgICBwdXNoKGBfY2FjaGVbJHtub2RlLmluZGV4fV1gKTtcclxuICAgICAgICBkZWluZGVudCgpO1xyXG4gICAgfVxyXG4gICAgcHVzaChgKWApO1xyXG59XG5cbmZ1bmN0aW9uIHdhbGtJZGVudGlmaWVycyhyb290LCBvbklkZW50aWZpZXIsIGluY2x1ZGVBbGwgPSBmYWxzZSwgcGFyZW50U3RhY2sgPSBbXSwga25vd25JZHMgPSBPYmplY3QuY3JlYXRlKG51bGwpKSB7XHJcbiAgICB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGlzUmVmZXJlbmNlZElkZW50aWZpZXIoaWQsIHBhcmVudCwgcGFyZW50U3RhY2spIHtcclxuICAgIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaXNJbkRlc3RydWN0dXJlQXNzaWdubWVudChwYXJlbnQsIHBhcmVudFN0YWNrKSB7XHJcbiAgICBpZiAocGFyZW50ICYmXHJcbiAgICAgICAgKHBhcmVudC50eXBlID09PSAnT2JqZWN0UHJvcGVydHknIHx8IHBhcmVudC50eXBlID09PSAnQXJyYXlQYXR0ZXJuJykpIHtcclxuICAgICAgICBsZXQgaSA9IHBhcmVudFN0YWNrLmxlbmd0aDtcclxuICAgICAgICB3aGlsZSAoaS0tKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHAgPSBwYXJlbnRTdGFja1tpXTtcclxuICAgICAgICAgICAgaWYgKHAudHlwZSA9PT0gJ0Fzc2lnbm1lbnRFeHByZXNzaW9uJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAocC50eXBlICE9PSAnT2JqZWN0UHJvcGVydHknICYmICFwLnR5cGUuZW5kc1dpdGgoJ1BhdHRlcm4nKSkge1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cclxuZnVuY3Rpb24gd2Fsa0Z1bmN0aW9uUGFyYW1zKG5vZGUsIG9uSWRlbnQpIHtcclxuICAgIGZvciAoY29uc3QgcCBvZiBub2RlLnBhcmFtcykge1xyXG4gICAgICAgIGZvciAoY29uc3QgaWQgb2YgZXh0cmFjdElkZW50aWZpZXJzKHApKSB7XHJcbiAgICAgICAgICAgIG9uSWRlbnQoaWQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB3YWxrQmxvY2tEZWNsYXJhdGlvbnMoYmxvY2ssIG9uSWRlbnQpIHtcclxuICAgIGZvciAoY29uc3Qgc3RtdCBvZiBibG9jay5ib2R5KSB7XHJcbiAgICAgICAgaWYgKHN0bXQudHlwZSA9PT0gJ1ZhcmlhYmxlRGVjbGFyYXRpb24nKSB7XHJcbiAgICAgICAgICAgIGlmIChzdG10LmRlY2xhcmUpXHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBkZWNsIG9mIHN0bXQuZGVjbGFyYXRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGlkIG9mIGV4dHJhY3RJZGVudGlmaWVycyhkZWNsLmlkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG9uSWRlbnQoaWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHN0bXQudHlwZSA9PT0gJ0Z1bmN0aW9uRGVjbGFyYXRpb24nIHx8XHJcbiAgICAgICAgICAgIHN0bXQudHlwZSA9PT0gJ0NsYXNzRGVjbGFyYXRpb24nKSB7XHJcbiAgICAgICAgICAgIGlmIChzdG10LmRlY2xhcmUgfHwgIXN0bXQuaWQpXHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgb25JZGVudChzdG10LmlkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZXh0cmFjdElkZW50aWZpZXJzKHBhcmFtLCBub2RlcyA9IFtdKSB7XHJcbiAgICBzd2l0Y2ggKHBhcmFtLnR5cGUpIHtcclxuICAgICAgICBjYXNlICdJZGVudGlmaWVyJzpcclxuICAgICAgICAgICAgbm9kZXMucHVzaChwYXJhbSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ01lbWJlckV4cHJlc3Npb24nOlxyXG4gICAgICAgICAgICBsZXQgb2JqZWN0ID0gcGFyYW07XHJcbiAgICAgICAgICAgIHdoaWxlIChvYmplY3QudHlwZSA9PT0gJ01lbWJlckV4cHJlc3Npb24nKSB7XHJcbiAgICAgICAgICAgICAgICBvYmplY3QgPSBvYmplY3Qub2JqZWN0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG5vZGVzLnB1c2gob2JqZWN0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnT2JqZWN0UGF0dGVybic6XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBwYXJhbS5wcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocHJvcC50eXBlID09PSAnUmVzdEVsZW1lbnQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFjdElkZW50aWZpZXJzKHByb3AuYXJndW1lbnQsIG5vZGVzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhY3RJZGVudGlmaWVycyhwcm9wLnZhbHVlLCBub2Rlcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnQXJyYXlQYXR0ZXJuJzpcclxuICAgICAgICAgICAgcGFyYW0uZWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50KVxyXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhY3RJZGVudGlmaWVycyhlbGVtZW50LCBub2Rlcyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdSZXN0RWxlbWVudCc6XHJcbiAgICAgICAgICAgIGV4dHJhY3RJZGVudGlmaWVycyhwYXJhbS5hcmd1bWVudCwgbm9kZXMpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdBc3NpZ25tZW50UGF0dGVybic6XHJcbiAgICAgICAgICAgIGV4dHJhY3RJZGVudGlmaWVycyhwYXJhbS5sZWZ0LCBub2Rlcyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5vZGVzO1xyXG59XHJcbmNvbnN0IGlzRnVuY3Rpb25UeXBlID0gKG5vZGUpID0+IHtcclxuICAgIHJldHVybiAvRnVuY3Rpb24oPzpFeHByZXNzaW9ufERlY2xhcmF0aW9uKSR8TWV0aG9kJC8udGVzdChub2RlLnR5cGUpO1xyXG59O1xyXG5jb25zdCBpc1N0YXRpY1Byb3BlcnR5ID0gKG5vZGUpID0+IG5vZGUgJiZcclxuICAgIChub2RlLnR5cGUgPT09ICdPYmplY3RQcm9wZXJ0eScgfHwgbm9kZS50eXBlID09PSAnT2JqZWN0TWV0aG9kJykgJiZcclxuICAgICFub2RlLmNvbXB1dGVkO1xyXG5jb25zdCBpc1N0YXRpY1Byb3BlcnR5S2V5ID0gKG5vZGUsIHBhcmVudCkgPT4gaXNTdGF0aWNQcm9wZXJ0eShwYXJlbnQpICYmIHBhcmVudC5rZXkgPT09IG5vZGU7XG5cbi8vIHRoZXNlIGtleXdvcmRzIHNob3VsZCBub3QgYXBwZWFyIGluc2lkZSBleHByZXNzaW9ucywgYnV0IG9wZXJhdG9ycyBsaWtlXHJcbi8vIHR5cGVvZiwgaW5zdGFuY2VvZiBhbmQgaW4gYXJlIGFsbG93ZWRcclxuY29uc3QgcHJvaGliaXRlZEtleXdvcmRSRSA9IG5ldyBSZWdFeHAoJ1xcXFxiJyArXHJcbiAgICAoJ2RvLGlmLGZvcixsZXQsbmV3LHRyeSx2YXIsY2FzZSxlbHNlLHdpdGgsYXdhaXQsYnJlYWssY2F0Y2gsY2xhc3MsY29uc3QsJyArXHJcbiAgICAgICAgJ3N1cGVyLHRocm93LHdoaWxlLHlpZWxkLGRlbGV0ZSxleHBvcnQsaW1wb3J0LHJldHVybixzd2l0Y2gsZGVmYXVsdCwnICtcclxuICAgICAgICAnZXh0ZW5kcyxmaW5hbGx5LGNvbnRpbnVlLGRlYnVnZ2VyLGZ1bmN0aW9uLGFyZ3VtZW50cyx0eXBlb2Ysdm9pZCcpXHJcbiAgICAgICAgLnNwbGl0KCcsJylcclxuICAgICAgICAuam9pbignXFxcXGJ8XFxcXGInKSArXHJcbiAgICAnXFxcXGInKTtcclxuLy8gc3RyaXAgc3RyaW5ncyBpbiBleHByZXNzaW9uc1xyXG5jb25zdCBzdHJpcFN0cmluZ1JFID0gLycoPzpbXidcXFxcXXxcXFxcLikqJ3xcIig/OlteXCJcXFxcXXxcXFxcLikqXCJ8YCg/OlteYFxcXFxdfFxcXFwuKSpcXCRcXHt8XFx9KD86W15gXFxcXF18XFxcXC4pKmB8YCg/OlteYFxcXFxdfFxcXFwuKSpgL2c7XHJcbi8qKlxyXG4gKiBWYWxpZGF0ZSBhIG5vbi1wcmVmaXhlZCBleHByZXNzaW9uLlxyXG4gKiBUaGlzIGlzIG9ubHkgY2FsbGVkIHdoZW4gdXNpbmcgdGhlIGluLWJyb3dzZXIgcnVudGltZSBjb21waWxlciBzaW5jZSBpdFxyXG4gKiBkb2Vzbid0IHByZWZpeCBleHByZXNzaW9ucy5cclxuICovXHJcbmZ1bmN0aW9uIHZhbGlkYXRlQnJvd3NlckV4cHJlc3Npb24obm9kZSwgY29udGV4dCwgYXNQYXJhbXMgPSBmYWxzZSwgYXNSYXdTdGF0ZW1lbnRzID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGV4cCA9IG5vZGUuY29udGVudDtcclxuICAgIC8vIGVtcHR5IGV4cHJlc3Npb25zIGFyZSB2YWxpZGF0ZWQgcGVyLWRpcmVjdGl2ZSBzaW5jZSBzb21lIGRpcmVjdGl2ZXNcclxuICAgIC8vIGRvIGFsbG93IGVtcHR5IGV4cHJlc3Npb25zLlxyXG4gICAgaWYgKCFleHAudHJpbSgpKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgICBuZXcgRnVuY3Rpb24oYXNSYXdTdGF0ZW1lbnRzXHJcbiAgICAgICAgICAgID8gYCAke2V4cH0gYFxyXG4gICAgICAgICAgICA6IGByZXR1cm4gJHthc1BhcmFtcyA/IGAoJHtleHB9KSA9PiB7fWAgOiBgKCR7ZXhwfSlgfWApO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICBsZXQgbWVzc2FnZSA9IGUubWVzc2FnZTtcclxuICAgICAgICBjb25zdCBrZXl3b3JkTWF0Y2ggPSBleHBcclxuICAgICAgICAgICAgLnJlcGxhY2Uoc3RyaXBTdHJpbmdSRSwgJycpXHJcbiAgICAgICAgICAgIC5tYXRjaChwcm9oaWJpdGVkS2V5d29yZFJFKTtcclxuICAgICAgICBpZiAoa2V5d29yZE1hdGNoKSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgYXZvaWQgdXNpbmcgSmF2YVNjcmlwdCBrZXl3b3JkIGFzIHByb3BlcnR5IG5hbWU6IFwiJHtrZXl3b3JkTWF0Y2hbMF19XCJgO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcig0NCAvKiBFcnJvckNvZGVzLlhfSU5WQUxJRF9FWFBSRVNTSU9OICovLCBub2RlLmxvYywgdW5kZWZpbmVkLCBtZXNzYWdlKSk7XHJcbiAgICB9XHJcbn1cblxuY29uc3QgdHJhbnNmb3JtRXhwcmVzc2lvbiA9IChub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSA1IC8qIE5vZGVUeXBlcy5JTlRFUlBPTEFUSU9OICovKSB7XHJcbiAgICAgICAgbm9kZS5jb250ZW50ID0gcHJvY2Vzc0V4cHJlc3Npb24obm9kZS5jb250ZW50LCBjb250ZXh0KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLykge1xyXG4gICAgICAgIC8vIGhhbmRsZSBkaXJlY3RpdmVzIG9uIGVsZW1lbnRcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUucHJvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgZGlyID0gbm9kZS5wcm9wc1tpXTtcclxuICAgICAgICAgICAgLy8gZG8gbm90IHByb2Nlc3MgZm9yIHYtb24gJiB2LWZvciBzaW5jZSB0aGV5IGFyZSBzcGVjaWFsIGhhbmRsZWRcclxuICAgICAgICAgICAgaWYgKGRpci50eXBlID09PSA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8gJiYgZGlyLm5hbWUgIT09ICdmb3InKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBleHAgPSBkaXIuZXhwO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYXJnID0gZGlyLmFyZztcclxuICAgICAgICAgICAgICAgIC8vIGRvIG5vdCBwcm9jZXNzIGV4cCBpZiB0aGlzIGlzIHYtb246YXJnIC0gd2UgbmVlZCBzcGVjaWFsIGhhbmRsaW5nXHJcbiAgICAgICAgICAgICAgICAvLyBmb3Igd3JhcHBpbmcgaW5saW5lIHN0YXRlbWVudHMuXHJcbiAgICAgICAgICAgICAgICBpZiAoZXhwICYmXHJcbiAgICAgICAgICAgICAgICAgICAgZXhwLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovICYmXHJcbiAgICAgICAgICAgICAgICAgICAgIShkaXIubmFtZSA9PT0gJ29uJyAmJiBhcmcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlyLmV4cCA9IHByb2Nlc3NFeHByZXNzaW9uKGV4cCwgY29udGV4dCwgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gc2xvdCBhcmdzIG11c3QgYmUgcHJvY2Vzc2VkIGFzIGZ1bmN0aW9uIHBhcmFtc1xyXG4gICAgICAgICAgICAgICAgICAgIGRpci5uYW1lID09PSAnc2xvdCcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGFyZyAmJiBhcmcudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8gJiYgIWFyZy5pc1N0YXRpYykge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpci5hcmcgPSBwcm9jZXNzRXhwcmVzc2lvbihhcmcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG4vLyBJbXBvcnRhbnQ6IHNpbmNlIHRoaXMgZnVuY3Rpb24gdXNlcyBOb2RlLmpzIG9ubHkgZGVwZW5kZW5jaWVzLCBpdCBzaG91bGRcclxuLy8gYWx3YXlzIGJlIHVzZWQgd2l0aCBhIGxlYWRpbmcgIXRydWUgY2hlY2sgc28gdGhhdCBpdCBjYW4gYmVcclxuLy8gdHJlZS1zaGFrZW4gZnJvbSB0aGUgYnJvd3NlciBidWlsZC5cclxuZnVuY3Rpb24gcHJvY2Vzc0V4cHJlc3Npb24obm9kZSwgY29udGV4dCwgXHJcbi8vIHNvbWUgZXhwcmVzc2lvbnMgbGlrZSB2LXNsb3QgcHJvcHMgJiB2LWZvciBhbGlhc2VzIHNob3VsZCBiZSBwYXJzZWQgYXNcclxuLy8gZnVuY3Rpb24gcGFyYW1zXHJcbmFzUGFyYW1zID0gZmFsc2UsIFxyXG4vLyB2LW9uIGhhbmRsZXIgdmFsdWVzIG1heSBjb250YWluIG11bHRpcGxlIHN0YXRlbWVudHNcclxuYXNSYXdTdGF0ZW1lbnRzID0gZmFsc2UsIGxvY2FsVmFycyA9IE9iamVjdC5jcmVhdGUoY29udGV4dC5pZGVudGlmaWVycykpIHtcclxuICAgIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIC8vIHNpbXBsZSBpbi1icm93c2VyIHZhbGlkYXRpb24gKHNhbWUgbG9naWMgaW4gMi54KVxyXG4gICAgICAgICAgICB2YWxpZGF0ZUJyb3dzZXJFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQsIGFzUGFyYW1zLCBhc1Jhd1N0YXRlbWVudHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbm9kZTtcclxuICAgIH1cclxufVxuXG5jb25zdCB0cmFuc2Zvcm1JZiA9IGNyZWF0ZVN0cnVjdHVyYWxEaXJlY3RpdmVUcmFuc2Zvcm0oL14oaWZ8ZWxzZXxlbHNlLWlmKSQvLCAobm9kZSwgZGlyLCBjb250ZXh0KSA9PiB7XHJcbiAgICByZXR1cm4gcHJvY2Vzc0lmKG5vZGUsIGRpciwgY29udGV4dCwgKGlmTm9kZSwgYnJhbmNoLCBpc1Jvb3QpID0+IHtcclxuICAgICAgICAvLyAjMTU4NzogV2UgbmVlZCB0byBkeW5hbWljYWxseSBpbmNyZW1lbnQgdGhlIGtleSBiYXNlZCBvbiB0aGUgY3VycmVudFxyXG4gICAgICAgIC8vIG5vZGUncyBzaWJsaW5nIG5vZGVzLCBzaW5jZSBjaGFpbmVkIHYtaWYvZWxzZSBicmFuY2hlcyBhcmVcclxuICAgICAgICAvLyByZW5kZXJlZCBhdCB0aGUgc2FtZSBkZXB0aFxyXG4gICAgICAgIGNvbnN0IHNpYmxpbmdzID0gY29udGV4dC5wYXJlbnQuY2hpbGRyZW47XHJcbiAgICAgICAgbGV0IGkgPSBzaWJsaW5ncy5pbmRleE9mKGlmTm9kZSk7XHJcbiAgICAgICAgbGV0IGtleSA9IDA7XHJcbiAgICAgICAgd2hpbGUgKGktLSA+PSAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNpYmxpbmcgPSBzaWJsaW5nc1tpXTtcclxuICAgICAgICAgICAgaWYgKHNpYmxpbmcgJiYgc2libGluZy50eXBlID09PSA5IC8qIE5vZGVUeXBlcy5JRiAqLykge1xyXG4gICAgICAgICAgICAgICAga2V5ICs9IHNpYmxpbmcuYnJhbmNoZXMubGVuZ3RoO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEV4aXQgY2FsbGJhY2suIENvbXBsZXRlIHRoZSBjb2RlZ2VuTm9kZSB3aGVuIGFsbCBjaGlsZHJlbiBoYXZlIGJlZW5cclxuICAgICAgICAvLyB0cmFuc2Zvcm1lZC5cclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaXNSb290KSB7XHJcbiAgICAgICAgICAgICAgICBpZk5vZGUuY29kZWdlbk5vZGUgPSBjcmVhdGVDb2RlZ2VuTm9kZUZvckJyYW5jaChicmFuY2gsIGtleSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBhdHRhY2ggdGhpcyBicmFuY2gncyBjb2RlZ2VuIG5vZGUgdG8gdGhlIHYtaWYgcm9vdC5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudENvbmRpdGlvbiA9IGdldFBhcmVudENvbmRpdGlvbihpZk5vZGUuY29kZWdlbk5vZGUpO1xyXG4gICAgICAgICAgICAgICAgcGFyZW50Q29uZGl0aW9uLmFsdGVybmF0ZSA9IGNyZWF0ZUNvZGVnZW5Ob2RlRm9yQnJhbmNoKGJyYW5jaCwga2V5ICsgaWZOb2RlLmJyYW5jaGVzLmxlbmd0aCAtIDEsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH0pO1xyXG59KTtcclxuLy8gdGFyZ2V0LWFnbm9zdGljIHRyYW5zZm9ybSB1c2VkIGZvciBib3RoIENsaWVudCBhbmQgU1NSXHJcbmZ1bmN0aW9uIHByb2Nlc3NJZihub2RlLCBkaXIsIGNvbnRleHQsIHByb2Nlc3NDb2RlZ2VuKSB7XHJcbiAgICBpZiAoZGlyLm5hbWUgIT09ICdlbHNlJyAmJlxyXG4gICAgICAgICghZGlyLmV4cCB8fCAhZGlyLmV4cC5jb250ZW50LnRyaW0oKSkpIHtcclxuICAgICAgICBjb25zdCBsb2MgPSBkaXIuZXhwID8gZGlyLmV4cC5sb2MgOiBub2RlLmxvYztcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigyOCAvKiBFcnJvckNvZGVzLlhfVl9JRl9OT19FWFBSRVNTSU9OICovLCBkaXIubG9jKSk7XHJcbiAgICAgICAgZGlyLmV4cCA9IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYHRydWVgLCBmYWxzZSwgbG9jKTtcclxuICAgIH1cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgdHJ1ZSAmJiBkaXIuZXhwKSB7XHJcbiAgICAgICAgdmFsaWRhdGVCcm93c2VyRXhwcmVzc2lvbihkaXIuZXhwLCBjb250ZXh0KTtcclxuICAgIH1cclxuICAgIGlmIChkaXIubmFtZSA9PT0gJ2lmJykge1xyXG4gICAgICAgIGNvbnN0IGJyYW5jaCA9IGNyZWF0ZUlmQnJhbmNoKG5vZGUsIGRpcik7XHJcbiAgICAgICAgY29uc3QgaWZOb2RlID0ge1xyXG4gICAgICAgICAgICB0eXBlOiA5IC8qIE5vZGVUeXBlcy5JRiAqLyxcclxuICAgICAgICAgICAgbG9jOiBub2RlLmxvYyxcclxuICAgICAgICAgICAgYnJhbmNoZXM6IFticmFuY2hdXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb250ZXh0LnJlcGxhY2VOb2RlKGlmTm9kZSk7XHJcbiAgICAgICAgaWYgKHByb2Nlc3NDb2RlZ2VuKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBwcm9jZXNzQ29kZWdlbihpZk5vZGUsIGJyYW5jaCwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gbG9jYXRlIHRoZSBhZGphY2VudCB2LWlmXHJcbiAgICAgICAgY29uc3Qgc2libGluZ3MgPSBjb250ZXh0LnBhcmVudC5jaGlsZHJlbjtcclxuICAgICAgICBjb25zdCBjb21tZW50cyA9IFtdO1xyXG4gICAgICAgIGxldCBpID0gc2libGluZ3MuaW5kZXhPZihub2RlKTtcclxuICAgICAgICB3aGlsZSAoaS0tID49IC0xKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNpYmxpbmcgPSBzaWJsaW5nc1tpXTtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBzaWJsaW5nICYmIHNpYmxpbmcudHlwZSA9PT0gMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5yZW1vdmVOb2RlKHNpYmxpbmcpO1xyXG4gICAgICAgICAgICAgICAgY29tbWVudHMudW5zaGlmdChzaWJsaW5nKTtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzaWJsaW5nICYmXHJcbiAgICAgICAgICAgICAgICBzaWJsaW5nLnR5cGUgPT09IDIgLyogTm9kZVR5cGVzLlRFWFQgKi8gJiZcclxuICAgICAgICAgICAgICAgICFzaWJsaW5nLmNvbnRlbnQudHJpbSgpLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5yZW1vdmVOb2RlKHNpYmxpbmcpO1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHNpYmxpbmcgJiYgc2libGluZy50eXBlID09PSA5IC8qIE5vZGVUeXBlcy5JRiAqLykge1xyXG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdi1lbHNlIHdhcyBmb2xsb3dlZCBieSB2LWVsc2UtaWZcclxuICAgICAgICAgICAgICAgIGlmIChkaXIubmFtZSA9PT0gJ2Vsc2UtaWYnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgc2libGluZy5icmFuY2hlc1tzaWJsaW5nLmJyYW5jaGVzLmxlbmd0aCAtIDFdLmNvbmRpdGlvbiA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzAgLyogRXJyb3JDb2Rlcy5YX1ZfRUxTRV9OT19BREpBQ0VOVF9JRiAqLywgbm9kZS5sb2MpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIG1vdmUgdGhlIG5vZGUgdG8gdGhlIGlmIG5vZGUncyBicmFuY2hlc1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5yZW1vdmVOb2RlKCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBicmFuY2ggPSBjcmVhdGVJZkJyYW5jaChub2RlLCBkaXIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnRzLmxlbmd0aCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIC8vICMzNjE5IGlnbm9yZSBjb21tZW50cyBpZiB0aGUgdi1pZiBpcyBkaXJlY3QgY2hpbGQgb2YgPHRyYW5zaXRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgIShjb250ZXh0LnBhcmVudCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnBhcmVudC50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQnVpbHRJblR5cGUoY29udGV4dC5wYXJlbnQudGFnLCAndHJhbnNpdGlvbicpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGJyYW5jaC5jaGlsZHJlbiA9IFsuLi5jb21tZW50cywgLi4uYnJhbmNoLmNoaWxkcmVuXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIGNoZWNrIGlmIHVzZXIgaXMgZm9yY2luZyBzYW1lIGtleSBvbiBkaWZmZXJlbnQgYnJhbmNoZXNcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgIXRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBicmFuY2gudXNlcktleTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpYmxpbmcuYnJhbmNoZXMuZm9yRWFjaCgoeyB1c2VyS2V5IH0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1NhbWVLZXkodXNlcktleSwga2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDI5IC8qIEVycm9yQ29kZXMuWF9WX0lGX1NBTUVfS0VZICovLCBicmFuY2gudXNlcktleS5sb2MpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgc2libGluZy5icmFuY2hlcy5wdXNoKGJyYW5jaCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvbkV4aXQgPSBwcm9jZXNzQ29kZWdlbiAmJiBwcm9jZXNzQ29kZWdlbihzaWJsaW5nLCBicmFuY2gsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIC8vIHNpbmNlIHRoZSBicmFuY2ggd2FzIHJlbW92ZWQsIGl0IHdpbGwgbm90IGJlIHRyYXZlcnNlZC5cclxuICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0byB0cmF2ZXJzZSBoZXJlLlxyXG4gICAgICAgICAgICAgICAgdHJhdmVyc2VOb2RlKGJyYW5jaCwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICAvLyBjYWxsIG9uIGV4aXRcclxuICAgICAgICAgICAgICAgIGlmIChvbkV4aXQpXHJcbiAgICAgICAgICAgICAgICAgICAgb25FeGl0KCk7XHJcbiAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdG8gcmVzZXQgY3VycmVudE5vZGUgYWZ0ZXIgdHJhdmVyc2FsIHRvIGluZGljYXRlIHRoaXNcclxuICAgICAgICAgICAgICAgIC8vIG5vZGUgaGFzIGJlZW4gcmVtb3ZlZC5cclxuICAgICAgICAgICAgICAgIGNvbnRleHQuY3VycmVudE5vZGUgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzAgLyogRXJyb3JDb2Rlcy5YX1ZfRUxTRV9OT19BREpBQ0VOVF9JRiAqLywgbm9kZS5sb2MpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlSWZCcmFuY2gobm9kZSwgZGlyKSB7XHJcbiAgICBjb25zdCBpc1RlbXBsYXRlSWYgPSBub2RlLnRhZ1R5cGUgPT09IDMgLyogRWxlbWVudFR5cGVzLlRFTVBMQVRFICovO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAxMCAvKiBOb2RlVHlwZXMuSUZfQlJBTkNIICovLFxyXG4gICAgICAgIGxvYzogbm9kZS5sb2MsXHJcbiAgICAgICAgY29uZGl0aW9uOiBkaXIubmFtZSA9PT0gJ2Vsc2UnID8gdW5kZWZpbmVkIDogZGlyLmV4cCxcclxuICAgICAgICBjaGlsZHJlbjogaXNUZW1wbGF0ZUlmICYmICFmaW5kRGlyKG5vZGUsICdmb3InKSA/IG5vZGUuY2hpbGRyZW4gOiBbbm9kZV0sXHJcbiAgICAgICAgdXNlcktleTogZmluZFByb3Aobm9kZSwgYGtleWApLFxyXG4gICAgICAgIGlzVGVtcGxhdGVJZlxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVDb2RlZ2VuTm9kZUZvckJyYW5jaChicmFuY2gsIGtleUluZGV4LCBjb250ZXh0KSB7XHJcbiAgICBpZiAoYnJhbmNoLmNvbmRpdGlvbikge1xyXG4gICAgICAgIHJldHVybiBjcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb24oYnJhbmNoLmNvbmRpdGlvbiwgY3JlYXRlQ2hpbGRyZW5Db2RlZ2VuTm9kZShicmFuY2gsIGtleUluZGV4LCBjb250ZXh0KSwgXHJcbiAgICAgICAgLy8gbWFrZSBzdXJlIHRvIHBhc3MgaW4gYXNCbG9jazogdHJ1ZSBzbyB0aGF0IHRoZSBjb21tZW50IG5vZGUgY2FsbFxyXG4gICAgICAgIC8vIGNsb3NlcyB0aGUgY3VycmVudCBibG9jay5cclxuICAgICAgICBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihDUkVBVEVfQ09NTUVOVCksIFtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gJ1widi1pZlwiJyA6ICdcIlwiJyxcclxuICAgICAgICAgICAgJ3RydWUnXHJcbiAgICAgICAgXSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUNoaWxkcmVuQ29kZWdlbk5vZGUoYnJhbmNoLCBrZXlJbmRleCwgY29udGV4dCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlQ2hpbGRyZW5Db2RlZ2VuTm9kZShicmFuY2gsIGtleUluZGV4LCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IGhlbHBlciB9ID0gY29udGV4dDtcclxuICAgIGNvbnN0IGtleVByb3BlcnR5ID0gY3JlYXRlT2JqZWN0UHJvcGVydHkoYGtleWAsIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYCR7a2V5SW5kZXh9YCwgZmFsc2UsIGxvY1N0dWIsIDIgLyogQ29uc3RhbnRUeXBlcy5DQU5fSE9JU1QgKi8pKTtcclxuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IGJyYW5jaDtcclxuICAgIGNvbnN0IGZpcnN0Q2hpbGQgPSBjaGlsZHJlblswXTtcclxuICAgIGNvbnN0IG5lZWRGcmFnbWVudFdyYXBwZXIgPSBjaGlsZHJlbi5sZW5ndGggIT09IDEgfHwgZmlyc3RDaGlsZC50eXBlICE9PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovO1xyXG4gICAgaWYgKG5lZWRGcmFnbWVudFdyYXBwZXIpIHtcclxuICAgICAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmIGZpcnN0Q2hpbGQudHlwZSA9PT0gMTEgLyogTm9kZVR5cGVzLkZPUiAqLykge1xyXG4gICAgICAgICAgICAvLyBvcHRpbWl6ZSBhd2F5IG5lc3RlZCBmcmFnbWVudHMgd2hlbiBjaGlsZCBpcyBhIEZvck5vZGVcclxuICAgICAgICAgICAgY29uc3Qgdm5vZGVDYWxsID0gZmlyc3RDaGlsZC5jb2RlZ2VuTm9kZTtcclxuICAgICAgICAgICAgaW5qZWN0UHJvcCh2bm9kZUNhbGwsIGtleVByb3BlcnR5LCBjb250ZXh0KTtcclxuICAgICAgICAgICAgcmV0dXJuIHZub2RlQ2FsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBwYXRjaEZsYWcgPSA2NCAvKiBQYXRjaEZsYWdzLlNUQUJMRV9GUkFHTUVOVCAqLztcclxuICAgICAgICAgICAgbGV0IHBhdGNoRmxhZ1RleHQgPSBQYXRjaEZsYWdOYW1lc1s2NCAvKiBQYXRjaEZsYWdzLlNUQUJMRV9GUkFHTUVOVCAqL107XHJcbiAgICAgICAgICAgIC8vIGNoZWNrIGlmIHRoZSBmcmFnbWVudCBhY3R1YWxseSBjb250YWlucyBhIHNpbmdsZSB2YWxpZCBjaGlsZCB3aXRoXHJcbiAgICAgICAgICAgIC8vIHRoZSByZXN0IGJlaW5nIGNvbW1lbnRzXHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgICFicmFuY2guaXNUZW1wbGF0ZUlmICYmXHJcbiAgICAgICAgICAgICAgICBjaGlsZHJlbi5maWx0ZXIoYyA9PiBjLnR5cGUgIT09IDMgLyogTm9kZVR5cGVzLkNPTU1FTlQgKi8pLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICAgICAgcGF0Y2hGbGFnIHw9IDIwNDggLyogUGF0Y2hGbGFncy5ERVZfUk9PVF9GUkFHTUVOVCAqLztcclxuICAgICAgICAgICAgICAgIHBhdGNoRmxhZ1RleHQgKz0gYCwgJHtQYXRjaEZsYWdOYW1lc1syMDQ4IC8qIFBhdGNoRmxhZ3MuREVWX1JPT1RfRlJBR01FTlQgKi9dfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlQ2FsbChjb250ZXh0LCBoZWxwZXIoRlJBR01FTlQpLCBjcmVhdGVPYmplY3RFeHByZXNzaW9uKFtrZXlQcm9wZXJ0eV0pLCBjaGlsZHJlbiwgcGF0Y2hGbGFnICsgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGAgLyogJHtwYXRjaEZsYWdUZXh0fSAqL2AgOiBgYCksIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0cnVlLCBmYWxzZSwgZmFsc2UgLyogaXNDb21wb25lbnQgKi8sIGJyYW5jaC5sb2MpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHJldCA9IGZpcnN0Q2hpbGQuY29kZWdlbk5vZGU7XHJcbiAgICAgICAgY29uc3Qgdm5vZGVDYWxsID0gZ2V0TWVtb2VkVk5vZGVDYWxsKHJldCk7XHJcbiAgICAgICAgLy8gQ2hhbmdlIGNyZWF0ZVZOb2RlIHRvIGNyZWF0ZUJsb2NrLlxyXG4gICAgICAgIGlmICh2bm9kZUNhbGwudHlwZSA9PT0gMTMgLyogTm9kZVR5cGVzLlZOT0RFX0NBTEwgKi8pIHtcclxuICAgICAgICAgICAgbWFrZUJsb2NrKHZub2RlQ2FsbCwgY29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGluamVjdCBicmFuY2gga2V5XHJcbiAgICAgICAgaW5qZWN0UHJvcCh2bm9kZUNhbGwsIGtleVByb3BlcnR5LCBjb250ZXh0KTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGlzU2FtZUtleShhLCBiKSB7XHJcbiAgICBpZiAoIWEgfHwgYS50eXBlICE9PSBiLnR5cGUpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAoYS50eXBlID09PSA2IC8qIE5vZGVUeXBlcy5BVFRSSUJVVEUgKi8pIHtcclxuICAgICAgICBpZiAoYS52YWx1ZS5jb250ZW50ICE9PSBiLnZhbHVlLmNvbnRlbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIGRpcmVjdGl2ZVxyXG4gICAgICAgIGNvbnN0IGV4cCA9IGEuZXhwO1xyXG4gICAgICAgIGNvbnN0IGJyYW5jaEV4cCA9IGIuZXhwO1xyXG4gICAgICAgIGlmIChleHAudHlwZSAhPT0gYnJhbmNoRXhwLnR5cGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZXhwLnR5cGUgIT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovIHx8XHJcbiAgICAgICAgICAgIGV4cC5pc1N0YXRpYyAhPT0gYnJhbmNoRXhwLmlzU3RhdGljIHx8XHJcbiAgICAgICAgICAgIGV4cC5jb250ZW50ICE9PSBicmFuY2hFeHAuY29udGVudCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbn1cclxuZnVuY3Rpb24gZ2V0UGFyZW50Q29uZGl0aW9uKG5vZGUpIHtcclxuICAgIHdoaWxlICh0cnVlKSB7XHJcbiAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gMTkgLyogTm9kZVR5cGVzLkpTX0NPTkRJVElPTkFMX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgaWYgKG5vZGUuYWx0ZXJuYXRlLnR5cGUgPT09IDE5IC8qIE5vZGVUeXBlcy5KU19DT05ESVRJT05BTF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgICAgICBub2RlID0gbm9kZS5hbHRlcm5hdGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09IDIwIC8qIE5vZGVUeXBlcy5KU19DQUNIRV9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgIG5vZGUgPSBub2RlLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxuXG5jb25zdCB0cmFuc2Zvcm1Gb3IgPSBjcmVhdGVTdHJ1Y3R1cmFsRGlyZWN0aXZlVHJhbnNmb3JtKCdmb3InLCAobm9kZSwgZGlyLCBjb250ZXh0KSA9PiB7XHJcbiAgICBjb25zdCB7IGhlbHBlciwgcmVtb3ZlSGVscGVyIH0gPSBjb250ZXh0O1xyXG4gICAgcmV0dXJuIHByb2Nlc3NGb3Iobm9kZSwgZGlyLCBjb250ZXh0LCBmb3JOb2RlID0+IHtcclxuICAgICAgICAvLyBjcmVhdGUgdGhlIGxvb3AgcmVuZGVyIGZ1bmN0aW9uIGV4cHJlc3Npb24gbm93LCBhbmQgYWRkIHRoZVxyXG4gICAgICAgIC8vIGl0ZXJhdG9yIG9uIGV4aXQgYWZ0ZXIgYWxsIGNoaWxkcmVuIGhhdmUgYmVlbiB0cmF2ZXJzZWRcclxuICAgICAgICBjb25zdCByZW5kZXJFeHAgPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihoZWxwZXIoUkVOREVSX0xJU1QpLCBbXHJcbiAgICAgICAgICAgIGZvck5vZGUuc291cmNlXHJcbiAgICAgICAgXSk7XHJcbiAgICAgICAgY29uc3QgaXNUZW1wbGF0ZSA9IGlzVGVtcGxhdGVOb2RlKG5vZGUpO1xyXG4gICAgICAgIGNvbnN0IG1lbW8gPSBmaW5kRGlyKG5vZGUsICdtZW1vJyk7XHJcbiAgICAgICAgY29uc3Qga2V5UHJvcCA9IGZpbmRQcm9wKG5vZGUsIGBrZXlgKTtcclxuICAgICAgICBjb25zdCBrZXlFeHAgPSBrZXlQcm9wICYmXHJcbiAgICAgICAgICAgIChrZXlQcm9wLnR5cGUgPT09IDYgLyogTm9kZVR5cGVzLkFUVFJJQlVURSAqL1xyXG4gICAgICAgICAgICAgICAgPyBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGtleVByb3AudmFsdWUuY29udGVudCwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgIDoga2V5UHJvcC5leHApO1xyXG4gICAgICAgIGNvbnN0IGtleVByb3BlcnR5ID0ga2V5UHJvcCA/IGNyZWF0ZU9iamVjdFByb3BlcnR5KGBrZXlgLCBrZXlFeHApIDogbnVsbDtcclxuICAgICAgICBjb25zdCBpc1N0YWJsZUZyYWdtZW50ID0gZm9yTm9kZS5zb3VyY2UudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8gJiZcclxuICAgICAgICAgICAgZm9yTm9kZS5zb3VyY2UuY29uc3RUeXBlID4gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLztcclxuICAgICAgICBjb25zdCBmcmFnbWVudEZsYWcgPSBpc1N0YWJsZUZyYWdtZW50XHJcbiAgICAgICAgICAgID8gNjQgLyogUGF0Y2hGbGFncy5TVEFCTEVfRlJBR01FTlQgKi9cclxuICAgICAgICAgICAgOiBrZXlQcm9wXHJcbiAgICAgICAgICAgICAgICA/IDEyOCAvKiBQYXRjaEZsYWdzLktFWUVEX0ZSQUdNRU5UICovXHJcbiAgICAgICAgICAgICAgICA6IDI1NiAvKiBQYXRjaEZsYWdzLlVOS0VZRURfRlJBR01FTlQgKi87XHJcbiAgICAgICAgZm9yTm9kZS5jb2RlZ2VuTm9kZSA9IGNyZWF0ZVZOb2RlQ2FsbChjb250ZXh0LCBoZWxwZXIoRlJBR01FTlQpLCB1bmRlZmluZWQsIHJlbmRlckV4cCwgZnJhZ21lbnRGbGFnICtcclxuICAgICAgICAgICAgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGAgLyogJHtQYXRjaEZsYWdOYW1lc1tmcmFnbWVudEZsYWddfSAqL2AgOiBgYCksIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0cnVlIC8qIGlzQmxvY2sgKi8sICFpc1N0YWJsZUZyYWdtZW50IC8qIGRpc2FibGVUcmFja2luZyAqLywgZmFsc2UgLyogaXNDb21wb25lbnQgKi8sIG5vZGUubG9jKTtcclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyBmaW5pc2ggdGhlIGNvZGVnZW4gbm93IHRoYXQgYWxsIGNoaWxkcmVuIGhhdmUgYmVlbiB0cmF2ZXJzZWRcclxuICAgICAgICAgICAgbGV0IGNoaWxkQmxvY2s7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IGZvck5vZGU7XHJcbiAgICAgICAgICAgIC8vIGNoZWNrIDx0ZW1wbGF0ZSB2LWZvcj4ga2V5IHBsYWNlbWVudFxyXG4gICAgICAgICAgICBpZiAoKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCAhdHJ1ZSkgJiYgaXNUZW1wbGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgbm9kZS5jaGlsZHJlbi5zb21lKGMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gZmluZFByb3AoYywgJ2tleScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigzMyAvKiBFcnJvckNvZGVzLlhfVl9GT1JfVEVNUExBVEVfS0VZX1BMQUNFTUVOVCAqLywga2V5LmxvYykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBuZWVkRnJhZ21lbnRXcmFwcGVyID0gY2hpbGRyZW4ubGVuZ3RoICE9PSAxIHx8IGNoaWxkcmVuWzBdLnR5cGUgIT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi87XHJcbiAgICAgICAgICAgIGNvbnN0IHNsb3RPdXRsZXQgPSBpc1Nsb3RPdXRsZXQobm9kZSlcclxuICAgICAgICAgICAgICAgID8gbm9kZVxyXG4gICAgICAgICAgICAgICAgOiBpc1RlbXBsYXRlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDEgJiZcclxuICAgICAgICAgICAgICAgICAgICBpc1Nsb3RPdXRsZXQobm9kZS5jaGlsZHJlblswXSlcclxuICAgICAgICAgICAgICAgICAgICA/IG5vZGUuY2hpbGRyZW5bMF0gLy8gYXBpLWV4dHJhY3RvciBzb21laG93IGZhaWxzIHRvIGluZmVyIHRoaXNcclxuICAgICAgICAgICAgICAgICAgICA6IG51bGw7XHJcbiAgICAgICAgICAgIGlmIChzbG90T3V0bGV0KSB7XHJcbiAgICAgICAgICAgICAgICAvLyA8c2xvdCB2LWZvcj1cIi4uLlwiPiBvciA8dGVtcGxhdGUgdi1mb3I9XCIuLi5cIj48c2xvdC8+PC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIGNoaWxkQmxvY2sgPSBzbG90T3V0bGV0LmNvZGVnZW5Ob2RlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzVGVtcGxhdGUgJiYga2V5UHJvcGVydHkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyA8dGVtcGxhdGUgdi1mb3I9XCIuLi5cIiA6a2V5PVwiLi4uXCI+PHNsb3QvPjwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBpbmplY3QgdGhlIGtleSB0byB0aGUgcmVuZGVyU2xvdCgpIGNhbGwuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHByb3BzIGZvciByZW5kZXJTbG90IGlzIHBhc3NlZCBhcyB0aGUgM3JkIGFyZ3VtZW50LlxyXG4gICAgICAgICAgICAgICAgICAgIGluamVjdFByb3AoY2hpbGRCbG9jaywga2V5UHJvcGVydHksIGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKG5lZWRGcmFnbWVudFdyYXBwZXIpIHtcclxuICAgICAgICAgICAgICAgIC8vIDx0ZW1wbGF0ZSB2LWZvcj1cIi4uLlwiPiB3aXRoIHRleHQgb3IgbXVsdGktZWxlbWVudHNcclxuICAgICAgICAgICAgICAgIC8vIHNob3VsZCBnZW5lcmF0ZSBhIGZyYWdtZW50IGJsb2NrIGZvciBlYWNoIGxvb3BcclxuICAgICAgICAgICAgICAgIGNoaWxkQmxvY2sgPSBjcmVhdGVWTm9kZUNhbGwoY29udGV4dCwgaGVscGVyKEZSQUdNRU5UKSwga2V5UHJvcGVydHkgPyBjcmVhdGVPYmplY3RFeHByZXNzaW9uKFtrZXlQcm9wZXJ0eV0pIDogdW5kZWZpbmVkLCBub2RlLmNoaWxkcmVuLCA2NCAvKiBQYXRjaEZsYWdzLlNUQUJMRV9GUkFHTUVOVCAqLyArXHJcbiAgICAgICAgICAgICAgICAgICAgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGAgLyogJHtQYXRjaEZsYWdOYW1lc1s2NCAvKiBQYXRjaEZsYWdzLlNUQUJMRV9GUkFHTUVOVCAqL119ICovYFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGBgKSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRydWUsIHVuZGVmaW5lZCwgZmFsc2UgLyogaXNDb21wb25lbnQgKi8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gTm9ybWFsIGVsZW1lbnQgdi1mb3IuIERpcmVjdGx5IHVzZSB0aGUgY2hpbGQncyBjb2RlZ2VuTm9kZVxyXG4gICAgICAgICAgICAgICAgLy8gYnV0IG1hcmsgaXQgYXMgYSBibG9jay5cclxuICAgICAgICAgICAgICAgIGNoaWxkQmxvY2sgPSBjaGlsZHJlblswXVxyXG4gICAgICAgICAgICAgICAgICAgIC5jb2RlZ2VuTm9kZTtcclxuICAgICAgICAgICAgICAgIGlmIChpc1RlbXBsYXRlICYmIGtleVByb3BlcnR5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5qZWN0UHJvcChjaGlsZEJsb2NrLCBrZXlQcm9wZXJ0eSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRCbG9jay5pc0Jsb2NrICE9PSAhaXNTdGFibGVGcmFnbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZEJsb2NrLmlzQmxvY2spIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3dpdGNoIGZyb20gYmxvY2sgdG8gdm5vZGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlSGVscGVyKE9QRU5fQkxPQ0spO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVIZWxwZXIoZ2V0Vk5vZGVCbG9ja0hlbHBlcihjb250ZXh0LmluU1NSLCBjaGlsZEJsb2NrLmlzQ29tcG9uZW50KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzd2l0Y2ggZnJvbSB2bm9kZSB0byBibG9ja1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVIZWxwZXIoZ2V0Vk5vZGVIZWxwZXIoY29udGV4dC5pblNTUiwgY2hpbGRCbG9jay5pc0NvbXBvbmVudCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNoaWxkQmxvY2suaXNCbG9jayA9ICFpc1N0YWJsZUZyYWdtZW50O1xyXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkQmxvY2suaXNCbG9jaykge1xyXG4gICAgICAgICAgICAgICAgICAgIGhlbHBlcihPUEVOX0JMT0NLKTtcclxuICAgICAgICAgICAgICAgICAgICBoZWxwZXIoZ2V0Vk5vZGVCbG9ja0hlbHBlcihjb250ZXh0LmluU1NSLCBjaGlsZEJsb2NrLmlzQ29tcG9uZW50KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBoZWxwZXIoZ2V0Vk5vZGVIZWxwZXIoY29udGV4dC5pblNTUiwgY2hpbGRCbG9jay5pc0NvbXBvbmVudCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChtZW1vKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsb29wID0gY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKGNyZWF0ZUZvckxvb3BQYXJhbXMoZm9yTm9kZS5wYXJzZVJlc3VsdCwgW1xyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYF9jYWNoZWRgKVxyXG4gICAgICAgICAgICAgICAgXSkpO1xyXG4gICAgICAgICAgICAgICAgbG9vcC5ib2R5ID0gY3JlYXRlQmxvY2tTdGF0ZW1lbnQoW1xyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbYGNvbnN0IF9tZW1vID0gKGAsIG1lbW8uZXhwLCBgKWBdKSxcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgaWYgKF9jYWNoZWRgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4oa2V5RXhwID8gW2AgJiYgX2NhY2hlZC5rZXkgPT09IGAsIGtleUV4cF0gOiBbXSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGAgJiYgJHtjb250ZXh0LmhlbHBlclN0cmluZyhJU19NRU1PX1NBTUUpfShfY2FjaGVkLCBfbWVtbykpIHJldHVybiBfY2FjaGVkYFxyXG4gICAgICAgICAgICAgICAgICAgIF0pLFxyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbYGNvbnN0IF9pdGVtID0gYCwgY2hpbGRCbG9ja10pLFxyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYF9pdGVtLm1lbW8gPSBfbWVtb2ApLFxyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYHJldHVybiBfaXRlbWApXHJcbiAgICAgICAgICAgICAgICBdKTtcclxuICAgICAgICAgICAgICAgIHJlbmRlckV4cC5hcmd1bWVudHMucHVzaChsb29wLCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGBfY2FjaGVgKSwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihTdHJpbmcoY29udGV4dC5jYWNoZWQrKykpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJlbmRlckV4cC5hcmd1bWVudHMucHVzaChjcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24oY3JlYXRlRm9yTG9vcFBhcmFtcyhmb3JOb2RlLnBhcnNlUmVzdWx0KSwgY2hpbGRCbG9jaywgdHJ1ZSAvKiBmb3JjZSBuZXdsaW5lICovKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfSk7XHJcbn0pO1xyXG4vLyB0YXJnZXQtYWdub3N0aWMgdHJhbnNmb3JtIHVzZWQgZm9yIGJvdGggQ2xpZW50IGFuZCBTU1JcclxuZnVuY3Rpb24gcHJvY2Vzc0Zvcihub2RlLCBkaXIsIGNvbnRleHQsIHByb2Nlc3NDb2RlZ2VuKSB7XHJcbiAgICBpZiAoIWRpci5leHApIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigzMSAvKiBFcnJvckNvZGVzLlhfVl9GT1JfTk9fRVhQUkVTU0lPTiAqLywgZGlyLmxvYykpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHBhcnNlUmVzdWx0ID0gcGFyc2VGb3JFeHByZXNzaW9uKFxyXG4gICAgLy8gY2FuIG9ubHkgYmUgc2ltcGxlIGV4cHJlc3Npb24gYmVjYXVzZSB2Rm9yIHRyYW5zZm9ybSBpcyBhcHBsaWVkXHJcbiAgICAvLyBiZWZvcmUgZXhwcmVzc2lvbiB0cmFuc2Zvcm0uXHJcbiAgICBkaXIuZXhwLCBjb250ZXh0KTtcclxuICAgIGlmICghcGFyc2VSZXN1bHQpIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigzMiAvKiBFcnJvckNvZGVzLlhfVl9GT1JfTUFMRk9STUVEX0VYUFJFU1NJT04gKi8sIGRpci5sb2MpKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IGFkZElkZW50aWZpZXJzLCByZW1vdmVJZGVudGlmaWVycywgc2NvcGVzIH0gPSBjb250ZXh0O1xyXG4gICAgY29uc3QgeyBzb3VyY2UsIHZhbHVlLCBrZXksIGluZGV4IH0gPSBwYXJzZVJlc3VsdDtcclxuICAgIGNvbnN0IGZvck5vZGUgPSB7XHJcbiAgICAgICAgdHlwZTogMTEgLyogTm9kZVR5cGVzLkZPUiAqLyxcclxuICAgICAgICBsb2M6IGRpci5sb2MsXHJcbiAgICAgICAgc291cmNlLFxyXG4gICAgICAgIHZhbHVlQWxpYXM6IHZhbHVlLFxyXG4gICAgICAgIGtleUFsaWFzOiBrZXksXHJcbiAgICAgICAgb2JqZWN0SW5kZXhBbGlhczogaW5kZXgsXHJcbiAgICAgICAgcGFyc2VSZXN1bHQsXHJcbiAgICAgICAgY2hpbGRyZW46IGlzVGVtcGxhdGVOb2RlKG5vZGUpID8gbm9kZS5jaGlsZHJlbiA6IFtub2RlXVxyXG4gICAgfTtcclxuICAgIGNvbnRleHQucmVwbGFjZU5vZGUoZm9yTm9kZSk7XHJcbiAgICAvLyBib29ra2VlcGluZ1xyXG4gICAgc2NvcGVzLnZGb3IrKztcclxuICAgIGNvbnN0IG9uRXhpdCA9IHByb2Nlc3NDb2RlZ2VuICYmIHByb2Nlc3NDb2RlZ2VuKGZvck5vZGUpO1xyXG4gICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICBzY29wZXMudkZvci0tO1xyXG4gICAgICAgIGlmIChvbkV4aXQpXHJcbiAgICAgICAgICAgIG9uRXhpdCgpO1xyXG4gICAgfTtcclxufVxyXG5jb25zdCBmb3JBbGlhc1JFID0gLyhbXFxzXFxTXSo/KVxccysoPzppbnxvZilcXHMrKFtcXHNcXFNdKikvO1xyXG4vLyBUaGlzIHJlZ2V4IGRvZXNuJ3QgY292ZXIgdGhlIGNhc2UgaWYga2V5IG9yIGluZGV4IGFsaWFzZXMgaGF2ZSBkZXN0cnVjdHVyaW5nLFxyXG4vLyBidXQgdGhvc2UgZG8gbm90IG1ha2Ugc2Vuc2UgaW4gdGhlIGZpcnN0IHBsYWNlLCBzbyB0aGlzIHdvcmtzIGluIHByYWN0aWNlLlxyXG5jb25zdCBmb3JJdGVyYXRvclJFID0gLywoW14sXFx9XFxdXSopKD86LChbXixcXH1cXF1dKikpPyQvO1xyXG5jb25zdCBzdHJpcFBhcmVuc1JFID0gL15cXCh8XFwpJC9nO1xyXG5mdW5jdGlvbiBwYXJzZUZvckV4cHJlc3Npb24oaW5wdXQsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IGxvYyA9IGlucHV0LmxvYztcclxuICAgIGNvbnN0IGV4cCA9IGlucHV0LmNvbnRlbnQ7XHJcbiAgICBjb25zdCBpbk1hdGNoID0gZXhwLm1hdGNoKGZvckFsaWFzUkUpO1xyXG4gICAgaWYgKCFpbk1hdGNoKVxyXG4gICAgICAgIHJldHVybjtcclxuICAgIGNvbnN0IFssIExIUywgUkhTXSA9IGluTWF0Y2g7XHJcbiAgICBjb25zdCByZXN1bHQgPSB7XHJcbiAgICAgICAgc291cmNlOiBjcmVhdGVBbGlhc0V4cHJlc3Npb24obG9jLCBSSFMudHJpbSgpLCBleHAuaW5kZXhPZihSSFMsIExIUy5sZW5ndGgpKSxcclxuICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxyXG4gICAgICAgIGtleTogdW5kZWZpbmVkLFxyXG4gICAgICAgIGluZGV4OiB1bmRlZmluZWRcclxuICAgIH07XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHRydWUpIHtcclxuICAgICAgICB2YWxpZGF0ZUJyb3dzZXJFeHByZXNzaW9uKHJlc3VsdC5zb3VyY2UsIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgbGV0IHZhbHVlQ29udGVudCA9IExIUy50cmltKCkucmVwbGFjZShzdHJpcFBhcmVuc1JFLCAnJykudHJpbSgpO1xyXG4gICAgY29uc3QgdHJpbW1lZE9mZnNldCA9IExIUy5pbmRleE9mKHZhbHVlQ29udGVudCk7XHJcbiAgICBjb25zdCBpdGVyYXRvck1hdGNoID0gdmFsdWVDb250ZW50Lm1hdGNoKGZvckl0ZXJhdG9yUkUpO1xyXG4gICAgaWYgKGl0ZXJhdG9yTWF0Y2gpIHtcclxuICAgICAgICB2YWx1ZUNvbnRlbnQgPSB2YWx1ZUNvbnRlbnQucmVwbGFjZShmb3JJdGVyYXRvclJFLCAnJykudHJpbSgpO1xyXG4gICAgICAgIGNvbnN0IGtleUNvbnRlbnQgPSBpdGVyYXRvck1hdGNoWzFdLnRyaW0oKTtcclxuICAgICAgICBsZXQga2V5T2Zmc2V0O1xyXG4gICAgICAgIGlmIChrZXlDb250ZW50KSB7XHJcbiAgICAgICAgICAgIGtleU9mZnNldCA9IGV4cC5pbmRleE9mKGtleUNvbnRlbnQsIHRyaW1tZWRPZmZzZXQgKyB2YWx1ZUNvbnRlbnQubGVuZ3RoKTtcclxuICAgICAgICAgICAgcmVzdWx0LmtleSA9IGNyZWF0ZUFsaWFzRXhwcmVzc2lvbihsb2MsIGtleUNvbnRlbnQsIGtleU9mZnNldCk7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgdmFsaWRhdGVCcm93c2VyRXhwcmVzc2lvbihyZXN1bHQua2V5LCBjb250ZXh0LCB0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlcmF0b3JNYXRjaFsyXSkge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleENvbnRlbnQgPSBpdGVyYXRvck1hdGNoWzJdLnRyaW0oKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4Q29udGVudCkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0LmluZGV4ID0gY3JlYXRlQWxpYXNFeHByZXNzaW9uKGxvYywgaW5kZXhDb250ZW50LCBleHAuaW5kZXhPZihpbmRleENvbnRlbnQsIHJlc3VsdC5rZXlcclxuICAgICAgICAgICAgICAgICAgICA/IGtleU9mZnNldCArIGtleUNvbnRlbnQubGVuZ3RoXHJcbiAgICAgICAgICAgICAgICAgICAgOiB0cmltbWVkT2Zmc2V0ICsgdmFsdWVDb250ZW50Lmxlbmd0aCkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVCcm93c2VyRXhwcmVzc2lvbihyZXN1bHQuaW5kZXgsIGNvbnRleHQsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHZhbHVlQ29udGVudCkge1xyXG4gICAgICAgIHJlc3VsdC52YWx1ZSA9IGNyZWF0ZUFsaWFzRXhwcmVzc2lvbihsb2MsIHZhbHVlQ29udGVudCwgdHJpbW1lZE9mZnNldCk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB0cnVlKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRlQnJvd3NlckV4cHJlc3Npb24ocmVzdWx0LnZhbHVlLCBjb250ZXh0LCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUFsaWFzRXhwcmVzc2lvbihyYW5nZSwgY29udGVudCwgb2Zmc2V0KSB7XHJcbiAgICByZXR1cm4gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihjb250ZW50LCBmYWxzZSwgZ2V0SW5uZXJSYW5nZShyYW5nZSwgb2Zmc2V0LCBjb250ZW50Lmxlbmd0aCkpO1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUZvckxvb3BQYXJhbXMoeyB2YWx1ZSwga2V5LCBpbmRleCB9LCBtZW1vQXJncyA9IFtdKSB7XHJcbiAgICByZXR1cm4gY3JlYXRlUGFyYW1zTGlzdChbdmFsdWUsIGtleSwgaW5kZXgsIC4uLm1lbW9BcmdzXSk7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlUGFyYW1zTGlzdChhcmdzKSB7XHJcbiAgICBsZXQgaSA9IGFyZ3MubGVuZ3RoO1xyXG4gICAgd2hpbGUgKGktLSkge1xyXG4gICAgICAgIGlmIChhcmdzW2ldKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBhcmdzXHJcbiAgICAgICAgLnNsaWNlKDAsIGkgKyAxKVxyXG4gICAgICAgIC5tYXAoKGFyZywgaSkgPT4gYXJnIHx8IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYF9gLnJlcGVhdChpICsgMSksIGZhbHNlKSk7XHJcbn1cblxuY29uc3QgZGVmYXVsdEZhbGxiYWNrID0gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgdW5kZWZpbmVkYCwgZmFsc2UpO1xyXG4vLyBBIE5vZGVUcmFuc2Zvcm0gdGhhdDpcclxuLy8gMS4gVHJhY2tzIHNjb3BlIGlkZW50aWZpZXJzIGZvciBzY29wZWQgc2xvdHMgc28gdGhhdCB0aGV5IGRvbid0IGdldCBwcmVmaXhlZFxyXG4vLyAgICBieSB0cmFuc2Zvcm1FeHByZXNzaW9uLiBUaGlzIGlzIG9ubHkgYXBwbGllZCBpbiBub24tYnJvd3NlciBidWlsZHMgd2l0aFxyXG4vLyAgICB7IHByZWZpeElkZW50aWZpZXJzOiB0cnVlIH0uXHJcbi8vIDIuIFRyYWNrIHYtc2xvdCBkZXB0aHMgc28gdGhhdCB3ZSBrbm93IGEgc2xvdCBpcyBpbnNpZGUgYW5vdGhlciBzbG90LlxyXG4vLyAgICBOb3RlIHRoZSBleGl0IGNhbGxiYWNrIGlzIGV4ZWN1dGVkIGJlZm9yZSBidWlsZFNsb3RzKCkgb24gdGhlIHNhbWUgbm9kZSxcclxuLy8gICAgc28gb25seSBuZXN0ZWQgc2xvdHMgc2VlIHBvc2l0aXZlIG51bWJlcnMuXHJcbmNvbnN0IHRyYWNrU2xvdFNjb3BlcyA9IChub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgKG5vZGUudGFnVHlwZSA9PT0gMSAvKiBFbGVtZW50VHlwZXMuQ09NUE9ORU5UICovIHx8XHJcbiAgICAgICAgICAgIG5vZGUudGFnVHlwZSA9PT0gMyAvKiBFbGVtZW50VHlwZXMuVEVNUExBVEUgKi8pKSB7XHJcbiAgICAgICAgLy8gV2UgYXJlIG9ubHkgY2hlY2tpbmcgbm9uLWVtcHR5IHYtc2xvdCBoZXJlXHJcbiAgICAgICAgLy8gc2luY2Ugd2Ugb25seSBjYXJlIGFib3V0IHNsb3RzIHRoYXQgaW50cm9kdWNlIHNjb3BlIHZhcmlhYmxlcy5cclxuICAgICAgICBjb25zdCB2U2xvdCA9IGZpbmREaXIobm9kZSwgJ3Nsb3QnKTtcclxuICAgICAgICBpZiAodlNsb3QpIHtcclxuICAgICAgICAgICAgdlNsb3QuZXhwO1xyXG4gICAgICAgICAgICBjb250ZXh0LnNjb3Blcy52U2xvdCsrO1xyXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zY29wZXMudlNsb3QtLTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbi8vIEEgTm9kZVRyYW5zZm9ybSB0aGF0IHRyYWNrcyBzY29wZSBpZGVudGlmaWVycyBmb3Igc2NvcGVkIHNsb3RzIHdpdGggdi1mb3IuXHJcbi8vIFRoaXMgdHJhbnNmb3JtIGlzIG9ubHkgYXBwbGllZCBpbiBub24tYnJvd3NlciBidWlsZHMgd2l0aCB7IHByZWZpeElkZW50aWZpZXJzOiB0cnVlIH1cclxuY29uc3QgdHJhY2tWRm9yU2xvdFNjb3BlcyA9IChub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBsZXQgdkZvcjtcclxuICAgIGlmIChpc1RlbXBsYXRlTm9kZShub2RlKSAmJlxyXG4gICAgICAgIG5vZGUucHJvcHMuc29tZShpc1ZTbG90KSAmJlxyXG4gICAgICAgICh2Rm9yID0gZmluZERpcihub2RlLCAnZm9yJykpKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gKHZGb3IucGFyc2VSZXN1bHQgPSBwYXJzZUZvckV4cHJlc3Npb24odkZvci5leHAsIGNvbnRleHQpKTtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgdmFsdWUsIGtleSwgaW5kZXggfSA9IHJlc3VsdDtcclxuICAgICAgICAgICAgY29uc3QgeyBhZGRJZGVudGlmaWVycywgcmVtb3ZlSWRlbnRpZmllcnMgfSA9IGNvbnRleHQ7XHJcbiAgICAgICAgICAgIHZhbHVlICYmIGFkZElkZW50aWZpZXJzKHZhbHVlKTtcclxuICAgICAgICAgICAga2V5ICYmIGFkZElkZW50aWZpZXJzKGtleSk7XHJcbiAgICAgICAgICAgIGluZGV4ICYmIGFkZElkZW50aWZpZXJzKGluZGV4KTtcclxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlICYmIHJlbW92ZUlkZW50aWZpZXJzKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGtleSAmJiByZW1vdmVJZGVudGlmaWVycyhrZXkpO1xyXG4gICAgICAgICAgICAgICAgaW5kZXggJiYgcmVtb3ZlSWRlbnRpZmllcnMoaW5kZXgpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuY29uc3QgYnVpbGRDbGllbnRTbG90Rm4gPSAocHJvcHMsIGNoaWxkcmVuLCBsb2MpID0+IGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihwcm9wcywgY2hpbGRyZW4sIGZhbHNlIC8qIG5ld2xpbmUgKi8sIHRydWUgLyogaXNTbG90ICovLCBjaGlsZHJlbi5sZW5ndGggPyBjaGlsZHJlblswXS5sb2MgOiBsb2MpO1xyXG4vLyBJbnN0ZWFkIG9mIGJlaW5nIGEgRGlyZWN0aXZlVHJhbnNmb3JtLCB2LXNsb3QgcHJvY2Vzc2luZyBpcyBjYWxsZWQgZHVyaW5nXHJcbi8vIHRyYW5zZm9ybUVsZW1lbnQgdG8gYnVpbGQgdGhlIHNsb3RzIG9iamVjdCBmb3IgYSBjb21wb25lbnQuXHJcbmZ1bmN0aW9uIGJ1aWxkU2xvdHMobm9kZSwgY29udGV4dCwgYnVpbGRTbG90Rm4gPSBidWlsZENsaWVudFNsb3RGbikge1xyXG4gICAgY29udGV4dC5oZWxwZXIoV0lUSF9DVFgpO1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiwgbG9jIH0gPSBub2RlO1xyXG4gICAgY29uc3Qgc2xvdHNQcm9wZXJ0aWVzID0gW107XHJcbiAgICBjb25zdCBkeW5hbWljU2xvdHMgPSBbXTtcclxuICAgIC8vIElmIHRoZSBzbG90IGlzIGluc2lkZSBhIHYtZm9yIG9yIGFub3RoZXIgdi1zbG90LCBmb3JjZSBpdCB0byBiZSBkeW5hbWljXHJcbiAgICAvLyBzaW5jZSBpdCBsaWtlbHkgdXNlcyBhIHNjb3BlIHZhcmlhYmxlLlxyXG4gICAgbGV0IGhhc0R5bmFtaWNTbG90cyA9IGNvbnRleHQuc2NvcGVzLnZTbG90ID4gMCB8fCBjb250ZXh0LnNjb3Blcy52Rm9yID4gMDtcclxuICAgIC8vIDEuIENoZWNrIGZvciBzbG90IHdpdGggc2xvdFByb3BzIG9uIGNvbXBvbmVudCBpdHNlbGYuXHJcbiAgICAvLyAgICA8Q29tcCB2LXNsb3Q9XCJ7IHByb3AgfVwiLz5cclxuICAgIGNvbnN0IG9uQ29tcG9uZW50U2xvdCA9IGZpbmREaXIobm9kZSwgJ3Nsb3QnLCB0cnVlKTtcclxuICAgIGlmIChvbkNvbXBvbmVudFNsb3QpIHtcclxuICAgICAgICBjb25zdCB7IGFyZywgZXhwIH0gPSBvbkNvbXBvbmVudFNsb3Q7XHJcbiAgICAgICAgaWYgKGFyZyAmJiAhaXNTdGF0aWNFeHAoYXJnKSkge1xyXG4gICAgICAgICAgICBoYXNEeW5hbWljU2xvdHMgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzbG90c1Byb3BlcnRpZXMucHVzaChjcmVhdGVPYmplY3RQcm9wZXJ0eShhcmcgfHwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbignZGVmYXVsdCcsIHRydWUpLCBidWlsZFNsb3RGbihleHAsIGNoaWxkcmVuLCBsb2MpKSk7XHJcbiAgICB9XHJcbiAgICAvLyAyLiBJdGVyYXRlIHRocm91Z2ggY2hpbGRyZW4gYW5kIGNoZWNrIGZvciB0ZW1wbGF0ZSBzbG90c1xyXG4gICAgLy8gICAgPHRlbXBsYXRlIHYtc2xvdDpmb289XCJ7IHByb3AgfVwiPlxyXG4gICAgbGV0IGhhc1RlbXBsYXRlU2xvdHMgPSBmYWxzZTtcclxuICAgIGxldCBoYXNOYW1lZERlZmF1bHRTbG90ID0gZmFsc2U7XHJcbiAgICBjb25zdCBpbXBsaWNpdERlZmF1bHRDaGlsZHJlbiA9IFtdO1xyXG4gICAgY29uc3Qgc2VlblNsb3ROYW1lcyA9IG5ldyBTZXQoKTtcclxuICAgIGxldCBjb25kaXRpb25hbEJyYW5jaEluZGV4ID0gMDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBzbG90RWxlbWVudCA9IGNoaWxkcmVuW2ldO1xyXG4gICAgICAgIGxldCBzbG90RGlyO1xyXG4gICAgICAgIGlmICghaXNUZW1wbGF0ZU5vZGUoc2xvdEVsZW1lbnQpIHx8XHJcbiAgICAgICAgICAgICEoc2xvdERpciA9IGZpbmREaXIoc2xvdEVsZW1lbnQsICdzbG90JywgdHJ1ZSkpKSB7XHJcbiAgICAgICAgICAgIC8vIG5vdCBhIDx0ZW1wbGF0ZSB2LXNsb3Q+LCBza2lwLlxyXG4gICAgICAgICAgICBpZiAoc2xvdEVsZW1lbnQudHlwZSAhPT0gMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgaW1wbGljaXREZWZhdWx0Q2hpbGRyZW4ucHVzaChzbG90RWxlbWVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvbkNvbXBvbmVudFNsb3QpIHtcclxuICAgICAgICAgICAgLy8gYWxyZWFkeSBoYXMgb24tY29tcG9uZW50IHNsb3QgLSB0aGlzIGlzIGluY29ycmVjdCB1c2FnZS5cclxuICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzcgLyogRXJyb3JDb2Rlcy5YX1ZfU0xPVF9NSVhFRF9TTE9UX1VTQUdFICovLCBzbG90RGlyLmxvYykpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgaGFzVGVtcGxhdGVTbG90cyA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgeyBjaGlsZHJlbjogc2xvdENoaWxkcmVuLCBsb2M6IHNsb3RMb2MgfSA9IHNsb3RFbGVtZW50O1xyXG4gICAgICAgIGNvbnN0IHsgYXJnOiBzbG90TmFtZSA9IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYGRlZmF1bHRgLCB0cnVlKSwgZXhwOiBzbG90UHJvcHMsIGxvYzogZGlyTG9jIH0gPSBzbG90RGlyO1xyXG4gICAgICAgIC8vIGNoZWNrIGlmIG5hbWUgaXMgZHluYW1pYy5cclxuICAgICAgICBsZXQgc3RhdGljU2xvdE5hbWU7XHJcbiAgICAgICAgaWYgKGlzU3RhdGljRXhwKHNsb3ROYW1lKSkge1xyXG4gICAgICAgICAgICBzdGF0aWNTbG90TmFtZSA9IHNsb3ROYW1lID8gc2xvdE5hbWUuY29udGVudCA6IGBkZWZhdWx0YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGhhc0R5bmFtaWNTbG90cyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHNsb3RGdW5jdGlvbiA9IGJ1aWxkU2xvdEZuKHNsb3RQcm9wcywgc2xvdENoaWxkcmVuLCBzbG90TG9jKTtcclxuICAgICAgICAvLyBjaGVjayBpZiB0aGlzIHNsb3QgaXMgY29uZGl0aW9uYWwgKHYtaWYvdi1mb3IpXHJcbiAgICAgICAgbGV0IHZJZjtcclxuICAgICAgICBsZXQgdkVsc2U7XHJcbiAgICAgICAgbGV0IHZGb3I7XHJcbiAgICAgICAgaWYgKCh2SWYgPSBmaW5kRGlyKHNsb3RFbGVtZW50LCAnaWYnKSkpIHtcclxuICAgICAgICAgICAgaGFzRHluYW1pY1Nsb3RzID0gdHJ1ZTtcclxuICAgICAgICAgICAgZHluYW1pY1Nsb3RzLnB1c2goY3JlYXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uKHZJZi5leHAsIGJ1aWxkRHluYW1pY1Nsb3Qoc2xvdE5hbWUsIHNsb3RGdW5jdGlvbiwgY29uZGl0aW9uYWxCcmFuY2hJbmRleCsrKSwgZGVmYXVsdEZhbGxiYWNrKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKCh2RWxzZSA9IGZpbmREaXIoc2xvdEVsZW1lbnQsIC9eZWxzZSgtaWYpPyQvLCB0cnVlIC8qIGFsbG93RW1wdHkgKi8pKSkge1xyXG4gICAgICAgICAgICAvLyBmaW5kIGFkamFjZW50IHYtaWZcclxuICAgICAgICAgICAgbGV0IGogPSBpO1xyXG4gICAgICAgICAgICBsZXQgcHJldjtcclxuICAgICAgICAgICAgd2hpbGUgKGotLSkge1xyXG4gICAgICAgICAgICAgICAgcHJldiA9IGNoaWxkcmVuW2pdO1xyXG4gICAgICAgICAgICAgICAgaWYgKHByZXYudHlwZSAhPT0gMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChwcmV2ICYmIGlzVGVtcGxhdGVOb2RlKHByZXYpICYmIGZpbmREaXIocHJldiwgJ2lmJykpIHtcclxuICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBub2RlXHJcbiAgICAgICAgICAgICAgICBjaGlsZHJlbi5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgICAgICBpLS07XHJcbiAgICAgICAgICAgICAgICAvLyBhdHRhY2ggdGhpcyBzbG90IHRvIHByZXZpb3VzIGNvbmRpdGlvbmFsXHJcbiAgICAgICAgICAgICAgICBsZXQgY29uZGl0aW9uYWwgPSBkeW5hbWljU2xvdHNbZHluYW1pY1Nsb3RzLmxlbmd0aCAtIDFdO1xyXG4gICAgICAgICAgICAgICAgd2hpbGUgKGNvbmRpdGlvbmFsLmFsdGVybmF0ZS50eXBlID09PSAxOSAvKiBOb2RlVHlwZXMuSlNfQ09ORElUSU9OQUxfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbmFsID0gY29uZGl0aW9uYWwuYWx0ZXJuYXRlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uZGl0aW9uYWwuYWx0ZXJuYXRlID0gdkVsc2UuZXhwXHJcbiAgICAgICAgICAgICAgICAgICAgPyBjcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb24odkVsc2UuZXhwLCBidWlsZER5bmFtaWNTbG90KHNsb3ROYW1lLCBzbG90RnVuY3Rpb24sIGNvbmRpdGlvbmFsQnJhbmNoSW5kZXgrKyksIGRlZmF1bHRGYWxsYmFjaylcclxuICAgICAgICAgICAgICAgICAgICA6IGJ1aWxkRHluYW1pY1Nsb3Qoc2xvdE5hbWUsIHNsb3RGdW5jdGlvbiwgY29uZGl0aW9uYWxCcmFuY2hJbmRleCsrKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDMwIC8qIEVycm9yQ29kZXMuWF9WX0VMU0VfTk9fQURKQUNFTlRfSUYgKi8sIHZFbHNlLmxvYykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKCh2Rm9yID0gZmluZERpcihzbG90RWxlbWVudCwgJ2ZvcicpKSkge1xyXG4gICAgICAgICAgICBoYXNEeW5hbWljU2xvdHMgPSB0cnVlO1xyXG4gICAgICAgICAgICBjb25zdCBwYXJzZVJlc3VsdCA9IHZGb3IucGFyc2VSZXN1bHQgfHxcclxuICAgICAgICAgICAgICAgIHBhcnNlRm9yRXhwcmVzc2lvbih2Rm9yLmV4cCwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGlmIChwYXJzZVJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgLy8gUmVuZGVyIHRoZSBkeW5hbWljIHNsb3RzIGFzIGFuIGFycmF5IGFuZCBhZGQgaXQgdG8gdGhlIGNyZWF0ZVNsb3QoKVxyXG4gICAgICAgICAgICAgICAgLy8gYXJncy4gVGhlIHJ1bnRpbWUga25vd3MgaG93IHRvIGhhbmRsZSBpdCBhcHByb3ByaWF0ZWx5LlxyXG4gICAgICAgICAgICAgICAgZHluYW1pY1Nsb3RzLnB1c2goY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoUkVOREVSX0xJU1QpLCBbXHJcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VSZXN1bHQuc291cmNlLFxyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihjcmVhdGVGb3JMb29wUGFyYW1zKHBhcnNlUmVzdWx0KSwgYnVpbGREeW5hbWljU2xvdChzbG90TmFtZSwgc2xvdEZ1bmN0aW9uKSwgdHJ1ZSAvKiBmb3JjZSBuZXdsaW5lICovKVxyXG4gICAgICAgICAgICAgICAgXSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzIgLyogRXJyb3JDb2Rlcy5YX1ZfRk9SX01BTEZPUk1FRF9FWFBSRVNTSU9OICovLCB2Rm9yLmxvYykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBjaGVjayBkdXBsaWNhdGUgc3RhdGljIG5hbWVzXHJcbiAgICAgICAgICAgIGlmIChzdGF0aWNTbG90TmFtZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHNlZW5TbG90TmFtZXMuaGFzKHN0YXRpY1Nsb3ROYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDM4IC8qIEVycm9yQ29kZXMuWF9WX1NMT1RfRFVQTElDQVRFX1NMT1RfTkFNRVMgKi8sIGRpckxvYykpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgc2VlblNsb3ROYW1lcy5hZGQoc3RhdGljU2xvdE5hbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHN0YXRpY1Nsb3ROYW1lID09PSAnZGVmYXVsdCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBoYXNOYW1lZERlZmF1bHRTbG90ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzbG90c1Byb3BlcnRpZXMucHVzaChjcmVhdGVPYmplY3RQcm9wZXJ0eShzbG90TmFtZSwgc2xvdEZ1bmN0aW9uKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCFvbkNvbXBvbmVudFNsb3QpIHtcclxuICAgICAgICBjb25zdCBidWlsZERlZmF1bHRTbG90UHJvcGVydHkgPSAocHJvcHMsIGNoaWxkcmVuKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZuID0gYnVpbGRTbG90Rm4ocHJvcHMsIGNoaWxkcmVuLCBsb2MpO1xyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5jb21wYXRDb25maWcpIHtcclxuICAgICAgICAgICAgICAgIGZuLmlzTm9uU2NvcGVkU2xvdCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZU9iamVjdFByb3BlcnR5KGBkZWZhdWx0YCwgZm4pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKCFoYXNUZW1wbGF0ZVNsb3RzKSB7XHJcbiAgICAgICAgICAgIC8vIGltcGxpY2l0IGRlZmF1bHQgc2xvdCAob24gY29tcG9uZW50KVxyXG4gICAgICAgICAgICBzbG90c1Byb3BlcnRpZXMucHVzaChidWlsZERlZmF1bHRTbG90UHJvcGVydHkodW5kZWZpbmVkLCBjaGlsZHJlbikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpbXBsaWNpdERlZmF1bHRDaGlsZHJlbi5sZW5ndGggJiZcclxuICAgICAgICAgICAgLy8gIzM3NjZcclxuICAgICAgICAgICAgLy8gd2l0aCB3aGl0ZXNwYWNlOiAncHJlc2VydmUnLCB3aGl0ZXNwYWNlcyBiZXR3ZWVuIHNsb3RzIHdpbGwgZW5kIHVwIGluXHJcbiAgICAgICAgICAgIC8vIGltcGxpY2l0RGVmYXVsdENoaWxkcmVuLiBJZ25vcmUgaWYgYWxsIGltcGxpY2l0IGNoaWxkcmVuIGFyZSB3aGl0ZXNwYWNlcy5cclxuICAgICAgICAgICAgaW1wbGljaXREZWZhdWx0Q2hpbGRyZW4uc29tZShub2RlID0+IGlzTm9uV2hpdGVzcGFjZUNvbnRlbnQobm9kZSkpKSB7XHJcbiAgICAgICAgICAgIC8vIGltcGxpY2l0IGRlZmF1bHQgc2xvdCAobWl4ZWQgd2l0aCBuYW1lZCBzbG90cylcclxuICAgICAgICAgICAgaWYgKGhhc05hbWVkRGVmYXVsdFNsb3QpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDM5IC8qIEVycm9yQ29kZXMuWF9WX1NMT1RfRVhUUkFORU9VU19ERUZBVUxUX1NMT1RfQ0hJTERSRU4gKi8sIGltcGxpY2l0RGVmYXVsdENoaWxkcmVuWzBdLmxvYykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgc2xvdHNQcm9wZXJ0aWVzLnB1c2goYnVpbGREZWZhdWx0U2xvdFByb3BlcnR5KHVuZGVmaW5lZCwgaW1wbGljaXREZWZhdWx0Q2hpbGRyZW4pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHNsb3RGbGFnID0gaGFzRHluYW1pY1Nsb3RzXHJcbiAgICAgICAgPyAyIC8qIFNsb3RGbGFncy5EWU5BTUlDICovXHJcbiAgICAgICAgOiBoYXNGb3J3YXJkZWRTbG90cyhub2RlLmNoaWxkcmVuKVxyXG4gICAgICAgICAgICA/IDMgLyogU2xvdEZsYWdzLkZPUldBUkRFRCAqL1xyXG4gICAgICAgICAgICA6IDEgLyogU2xvdEZsYWdzLlNUQUJMRSAqLztcclxuICAgIGxldCBzbG90cyA9IGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oc2xvdHNQcm9wZXJ0aWVzLmNvbmNhdChjcmVhdGVPYmplY3RQcm9wZXJ0eShgX2AsIFxyXG4gICAgLy8gMiA9IGNvbXBpbGVkIGJ1dCBkeW5hbWljID0gY2FuIHNraXAgbm9ybWFsaXphdGlvbiwgYnV0IG11c3QgcnVuIGRpZmZcclxuICAgIC8vIDEgPSBjb21waWxlZCBhbmQgc3RhdGljID0gY2FuIHNraXAgbm9ybWFsaXphdGlvbiBBTkQgZGlmZiBhcyBvcHRpbWl6ZWRcclxuICAgIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oc2xvdEZsYWcgKyAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYCAvKiAke3Nsb3RGbGFnc1RleHRbc2xvdEZsYWddfSAqL2AgOiBgYCksIGZhbHNlKSkpLCBsb2MpO1xyXG4gICAgaWYgKGR5bmFtaWNTbG90cy5sZW5ndGgpIHtcclxuICAgICAgICBzbG90cyA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKENSRUFURV9TTE9UUyksIFtcclxuICAgICAgICAgICAgc2xvdHMsXHJcbiAgICAgICAgICAgIGNyZWF0ZUFycmF5RXhwcmVzc2lvbihkeW5hbWljU2xvdHMpXHJcbiAgICAgICAgXSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHNsb3RzLFxyXG4gICAgICAgIGhhc0R5bmFtaWNTbG90c1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBidWlsZER5bmFtaWNTbG90KG5hbWUsIGZuLCBpbmRleCkge1xyXG4gICAgY29uc3QgcHJvcHMgPSBbXHJcbiAgICAgICAgY3JlYXRlT2JqZWN0UHJvcGVydHkoYG5hbWVgLCBuYW1lKSxcclxuICAgICAgICBjcmVhdGVPYmplY3RQcm9wZXJ0eShgZm5gLCBmbilcclxuICAgIF07XHJcbiAgICBpZiAoaW5kZXggIT0gbnVsbCkge1xyXG4gICAgICAgIHByb3BzLnB1c2goY3JlYXRlT2JqZWN0UHJvcGVydHkoYGtleWAsIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oU3RyaW5nKGluZGV4KSwgdHJ1ZSkpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjcmVhdGVPYmplY3RFeHByZXNzaW9uKHByb3BzKTtcclxufVxyXG5mdW5jdGlvbiBoYXNGb3J3YXJkZWRTbG90cyhjaGlsZHJlbikge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baV07XHJcbiAgICAgICAgc3dpdGNoIChjaGlsZC50eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLzpcclxuICAgICAgICAgICAgICAgIGlmIChjaGlsZC50YWdUeXBlID09PSAyIC8qIEVsZW1lbnRUeXBlcy5TTE9UICovIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzRm9yd2FyZGVkU2xvdHMoY2hpbGQuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSA5IC8qIE5vZGVUeXBlcy5JRiAqLzpcclxuICAgICAgICAgICAgICAgIGlmIChoYXNGb3J3YXJkZWRTbG90cyhjaGlsZC5icmFuY2hlcykpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxMCAvKiBOb2RlVHlwZXMuSUZfQlJBTkNIICovOlxyXG4gICAgICAgICAgICBjYXNlIDExIC8qIE5vZGVUeXBlcy5GT1IgKi86XHJcbiAgICAgICAgICAgICAgICBpZiAoaGFzRm9yd2FyZGVkU2xvdHMoY2hpbGQuY2hpbGRyZW4pKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbmZ1bmN0aW9uIGlzTm9uV2hpdGVzcGFjZUNvbnRlbnQobm9kZSkge1xyXG4gICAgaWYgKG5vZGUudHlwZSAhPT0gMiAvKiBOb2RlVHlwZXMuVEVYVCAqLyAmJiBub2RlLnR5cGUgIT09IDEyIC8qIE5vZGVUeXBlcy5URVhUX0NBTEwgKi8pXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICByZXR1cm4gbm9kZS50eXBlID09PSAyIC8qIE5vZGVUeXBlcy5URVhUICovXHJcbiAgICAgICAgPyAhIW5vZGUuY29udGVudC50cmltKClcclxuICAgICAgICA6IGlzTm9uV2hpdGVzcGFjZUNvbnRlbnQobm9kZS5jb250ZW50KTtcclxufVxuXG4vLyBzb21lIGRpcmVjdGl2ZSB0cmFuc2Zvcm1zIChlLmcuIHYtbW9kZWwpIG1heSByZXR1cm4gYSBzeW1ib2wgZm9yIHJ1bnRpbWVcclxuLy8gaW1wb3J0LCB3aGljaCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIGEgcmVzb2x2ZURpcmVjdGl2ZSBjYWxsLlxyXG5jb25zdCBkaXJlY3RpdmVJbXBvcnRNYXAgPSBuZXcgV2Vha01hcCgpO1xyXG4vLyBnZW5lcmF0ZSBhIEphdmFTY3JpcHQgQVNUIGZvciB0aGlzIGVsZW1lbnQncyBjb2RlZ2VuXHJcbmNvbnN0IHRyYW5zZm9ybUVsZW1lbnQgPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgLy8gcGVyZm9ybSB0aGUgd29yayBvbiBleGl0LCBhZnRlciBhbGwgY2hpbGQgZXhwcmVzc2lvbnMgaGF2ZSBiZWVuXHJcbiAgICAvLyBwcm9jZXNzZWQgYW5kIG1lcmdlZC5cclxuICAgIHJldHVybiBmdW5jdGlvbiBwb3N0VHJhbnNmb3JtRWxlbWVudCgpIHtcclxuICAgICAgICBub2RlID0gY29udGV4dC5jdXJyZW50Tm9kZTtcclxuICAgICAgICBpZiAoIShub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8gJiZcclxuICAgICAgICAgICAgKG5vZGUudGFnVHlwZSA9PT0gMCAvKiBFbGVtZW50VHlwZXMuRUxFTUVOVCAqLyB8fFxyXG4gICAgICAgICAgICAgICAgbm9kZS50YWdUeXBlID09PSAxIC8qIEVsZW1lbnRUeXBlcy5DT01QT05FTlQgKi8pKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHsgdGFnLCBwcm9wcyB9ID0gbm9kZTtcclxuICAgICAgICBjb25zdCBpc0NvbXBvbmVudCA9IG5vZGUudGFnVHlwZSA9PT0gMSAvKiBFbGVtZW50VHlwZXMuQ09NUE9ORU5UICovO1xyXG4gICAgICAgIC8vIFRoZSBnb2FsIG9mIHRoZSB0cmFuc2Zvcm0gaXMgdG8gY3JlYXRlIGEgY29kZWdlbk5vZGUgaW1wbGVtZW50aW5nIHRoZVxyXG4gICAgICAgIC8vIFZOb2RlQ2FsbCBpbnRlcmZhY2UuXHJcbiAgICAgICAgbGV0IHZub2RlVGFnID0gaXNDb21wb25lbnRcclxuICAgICAgICAgICAgPyByZXNvbHZlQ29tcG9uZW50VHlwZShub2RlLCBjb250ZXh0KVxyXG4gICAgICAgICAgICA6IGBcIiR7dGFnfVwiYDtcclxuICAgICAgICBjb25zdCBpc0R5bmFtaWNDb21wb25lbnQgPSBpc09iamVjdCh2bm9kZVRhZykgJiYgdm5vZGVUYWcuY2FsbGVlID09PSBSRVNPTFZFX0RZTkFNSUNfQ09NUE9ORU5UO1xyXG4gICAgICAgIGxldCB2bm9kZVByb3BzO1xyXG4gICAgICAgIGxldCB2bm9kZUNoaWxkcmVuO1xyXG4gICAgICAgIGxldCB2bm9kZVBhdGNoRmxhZztcclxuICAgICAgICBsZXQgcGF0Y2hGbGFnID0gMDtcclxuICAgICAgICBsZXQgdm5vZGVEeW5hbWljUHJvcHM7XHJcbiAgICAgICAgbGV0IGR5bmFtaWNQcm9wTmFtZXM7XHJcbiAgICAgICAgbGV0IHZub2RlRGlyZWN0aXZlcztcclxuICAgICAgICBsZXQgc2hvdWxkVXNlQmxvY2sgPSBcclxuICAgICAgICAvLyBkeW5hbWljIGNvbXBvbmVudCBtYXkgcmVzb2x2ZSB0byBwbGFpbiBlbGVtZW50c1xyXG4gICAgICAgIGlzRHluYW1pY0NvbXBvbmVudCB8fFxyXG4gICAgICAgICAgICB2bm9kZVRhZyA9PT0gVEVMRVBPUlQgfHxcclxuICAgICAgICAgICAgdm5vZGVUYWcgPT09IFNVU1BFTlNFIHx8XHJcbiAgICAgICAgICAgICghaXNDb21wb25lbnQgJiZcclxuICAgICAgICAgICAgICAgIC8vIDxzdmc+IGFuZCA8Zm9yZWlnbk9iamVjdD4gbXVzdCBiZSBmb3JjZWQgaW50byBibG9ja3Mgc28gdGhhdCBibG9ja1xyXG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlcyBpbnNpZGUgZ2V0IHByb3BlciBpc1NWRyBmbGFnIGF0IHJ1bnRpbWUuICgjNjM5LCAjNjQzKVxyXG4gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0ZWNobmljYWxseSB3ZWItc3BlY2lmaWMsIGJ1dCBzcGxpdHRpbmcgdGhlIGxvZ2ljIG91dCBvZiBjb3JlXHJcbiAgICAgICAgICAgICAgICAvLyBsZWFkcyB0byB0b28gbXVjaCB1bm5lY2Vzc2FyeSBjb21wbGV4aXR5LlxyXG4gICAgICAgICAgICAgICAgKHRhZyA9PT0gJ3N2ZycgfHwgdGFnID09PSAnZm9yZWlnbk9iamVjdCcpKTtcclxuICAgICAgICAvLyBwcm9wc1xyXG4gICAgICAgIGlmIChwcm9wcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb3BzQnVpbGRSZXN1bHQgPSBidWlsZFByb3BzKG5vZGUsIGNvbnRleHQsIHVuZGVmaW5lZCwgaXNDb21wb25lbnQsIGlzRHluYW1pY0NvbXBvbmVudCk7XHJcbiAgICAgICAgICAgIHZub2RlUHJvcHMgPSBwcm9wc0J1aWxkUmVzdWx0LnByb3BzO1xyXG4gICAgICAgICAgICBwYXRjaEZsYWcgPSBwcm9wc0J1aWxkUmVzdWx0LnBhdGNoRmxhZztcclxuICAgICAgICAgICAgZHluYW1pY1Byb3BOYW1lcyA9IHByb3BzQnVpbGRSZXN1bHQuZHluYW1pY1Byb3BOYW1lcztcclxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aXZlcyA9IHByb3BzQnVpbGRSZXN1bHQuZGlyZWN0aXZlcztcclxuICAgICAgICAgICAgdm5vZGVEaXJlY3RpdmVzID1cclxuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMgJiYgZGlyZWN0aXZlcy5sZW5ndGhcclxuICAgICAgICAgICAgICAgICAgICA/IGNyZWF0ZUFycmF5RXhwcmVzc2lvbihkaXJlY3RpdmVzLm1hcChkaXIgPT4gYnVpbGREaXJlY3RpdmVBcmdzKGRpciwgY29udGV4dCkpKVxyXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICBpZiAocHJvcHNCdWlsZFJlc3VsdC5zaG91bGRVc2VCbG9jaykge1xyXG4gICAgICAgICAgICAgICAgc2hvdWxkVXNlQmxvY2sgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNoaWxkcmVuXHJcbiAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBpZiAodm5vZGVUYWcgPT09IEtFRVBfQUxJVkUpIHtcclxuICAgICAgICAgICAgICAgIC8vIEFsdGhvdWdoIGEgYnVpbHQtaW4gY29tcG9uZW50LCB3ZSBjb21waWxlIEtlZXBBbGl2ZSB3aXRoIHJhdyBjaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgLy8gaW5zdGVhZCBvZiBzbG90IGZ1bmN0aW9ucyBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGluc2lkZSBUcmFuc2l0aW9uXHJcbiAgICAgICAgICAgICAgICAvLyBvciBvdGhlciBUcmFuc2l0aW9uLXdyYXBwaW5nIEhPQ3MuXHJcbiAgICAgICAgICAgICAgICAvLyBUbyBlbnN1cmUgY29ycmVjdCB1cGRhdGVzIHdpdGggYmxvY2sgb3B0aW1pemF0aW9ucywgd2UgbmVlZCB0bzpcclxuICAgICAgICAgICAgICAgIC8vIDEuIEZvcmNlIGtlZXAtYWxpdmUgaW50byBhIGJsb2NrLiBUaGlzIGF2b2lkcyBpdHMgY2hpbGRyZW4gYmVpbmdcclxuICAgICAgICAgICAgICAgIC8vICAgIGNvbGxlY3RlZCBieSBhIHBhcmVudCBibG9jay5cclxuICAgICAgICAgICAgICAgIHNob3VsZFVzZUJsb2NrID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIC8vIDIuIEZvcmNlIGtlZXAtYWxpdmUgdG8gYWx3YXlzIGJlIHVwZGF0ZWQsIHNpbmNlIGl0IHVzZXMgcmF3IGNoaWxkcmVuLlxyXG4gICAgICAgICAgICAgICAgcGF0Y2hGbGFnIHw9IDEwMjQgLyogUGF0Y2hGbGFncy5EWU5BTUlDX1NMT1RTICovO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcig0NSAvKiBFcnJvckNvZGVzLlhfS0VFUF9BTElWRV9JTlZBTElEX0NISUxEUkVOICovLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBub2RlLmNoaWxkcmVuWzBdLmxvYy5zdGFydCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBub2RlLmNoaWxkcmVuW25vZGUuY2hpbGRyZW4ubGVuZ3RoIC0gMV0ubG9jLmVuZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiAnJ1xyXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBzaG91bGRCdWlsZEFzU2xvdHMgPSBpc0NvbXBvbmVudCAmJlxyXG4gICAgICAgICAgICAgICAgLy8gVGVsZXBvcnQgaXMgbm90IGEgcmVhbCBjb21wb25lbnQgYW5kIGhhcyBkZWRpY2F0ZWQgcnVudGltZSBoYW5kbGluZ1xyXG4gICAgICAgICAgICAgICAgdm5vZGVUYWcgIT09IFRFTEVQT1JUICYmXHJcbiAgICAgICAgICAgICAgICAvLyBleHBsYWluZWQgYWJvdmUuXHJcbiAgICAgICAgICAgICAgICB2bm9kZVRhZyAhPT0gS0VFUF9BTElWRTtcclxuICAgICAgICAgICAgaWYgKHNob3VsZEJ1aWxkQXNTbG90cykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBzbG90cywgaGFzRHluYW1pY1Nsb3RzIH0gPSBidWlsZFNsb3RzKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgdm5vZGVDaGlsZHJlbiA9IHNsb3RzO1xyXG4gICAgICAgICAgICAgICAgaWYgKGhhc0R5bmFtaWNTbG90cykge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhdGNoRmxhZyB8PSAxMDI0IC8qIFBhdGNoRmxhZ3MuRFlOQU1JQ19TTE9UUyAqLztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJiB2bm9kZVRhZyAhPT0gVEVMRVBPUlQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlblswXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBjaGlsZC50eXBlO1xyXG4gICAgICAgICAgICAgICAgLy8gY2hlY2sgZm9yIGR5bmFtaWMgdGV4dCBjaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgY29uc3QgaGFzRHluYW1pY1RleHRDaGlsZCA9IHR5cGUgPT09IDUgLyogTm9kZVR5cGVzLklOVEVSUE9MQVRJT04gKi8gfHxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlID09PSA4IC8qIE5vZGVUeXBlcy5DT01QT1VORF9FWFBSRVNTSU9OICovO1xyXG4gICAgICAgICAgICAgICAgaWYgKGhhc0R5bmFtaWNUZXh0Q2hpbGQgJiZcclxuICAgICAgICAgICAgICAgICAgICBnZXRDb25zdGFudFR5cGUoY2hpbGQsIGNvbnRleHQpID09PSAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2hGbGFnIHw9IDEgLyogUGF0Y2hGbGFncy5URVhUICovO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gcGFzcyBkaXJlY3RseSBpZiB0aGUgb25seSBjaGlsZCBpcyBhIHRleHQgbm9kZVxyXG4gICAgICAgICAgICAgICAgLy8gKHBsYWluIC8gaW50ZXJwb2xhdGlvbiAvIGV4cHJlc3Npb24pXHJcbiAgICAgICAgICAgICAgICBpZiAoaGFzRHluYW1pY1RleHRDaGlsZCB8fCB0eXBlID09PSAyIC8qIE5vZGVUeXBlcy5URVhUICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdm5vZGVDaGlsZHJlbiA9IGNoaWxkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdm5vZGVDaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZUNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBwYXRjaEZsYWcgJiBkeW5hbWljUHJvcE5hbWVzXHJcbiAgICAgICAgaWYgKHBhdGNoRmxhZyAhPT0gMCkge1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocGF0Y2hGbGFnIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpYWwgZmxhZ3MgKG5lZ2F0aXZlIGFuZCBtdXR1YWxseSBleGNsdXNpdmUpXHJcbiAgICAgICAgICAgICAgICAgICAgdm5vZGVQYXRjaEZsYWcgPSBwYXRjaEZsYWcgKyBgIC8qICR7UGF0Y2hGbGFnTmFtZXNbcGF0Y2hGbGFnXX0gKi9gO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYml0d2lzZSBmbGFnc1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsYWdOYW1lcyA9IE9iamVjdC5rZXlzKFBhdGNoRmxhZ05hbWVzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKE51bWJlcilcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihuID0+IG4gPiAwICYmIHBhdGNoRmxhZyAmIG4pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAobiA9PiBQYXRjaEZsYWdOYW1lc1tuXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oYCwgYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdm5vZGVQYXRjaEZsYWcgPSBwYXRjaEZsYWcgKyBgIC8qICR7ZmxhZ05hbWVzfSAqL2A7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZVBhdGNoRmxhZyA9IFN0cmluZyhwYXRjaEZsYWcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChkeW5hbWljUHJvcE5hbWVzICYmIGR5bmFtaWNQcm9wTmFtZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZUR5bmFtaWNQcm9wcyA9IHN0cmluZ2lmeUR5bmFtaWNQcm9wTmFtZXMoZHluYW1pY1Byb3BOYW1lcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgbm9kZS5jb2RlZ2VuTm9kZSA9IGNyZWF0ZVZOb2RlQ2FsbChjb250ZXh0LCB2bm9kZVRhZywgdm5vZGVQcm9wcywgdm5vZGVDaGlsZHJlbiwgdm5vZGVQYXRjaEZsYWcsIHZub2RlRHluYW1pY1Byb3BzLCB2bm9kZURpcmVjdGl2ZXMsICEhc2hvdWxkVXNlQmxvY2ssIGZhbHNlIC8qIGRpc2FibGVUcmFja2luZyAqLywgaXNDb21wb25lbnQsIG5vZGUubG9jKTtcclxuICAgIH07XHJcbn07XHJcbmZ1bmN0aW9uIHJlc29sdmVDb21wb25lbnRUeXBlKG5vZGUsIGNvbnRleHQsIHNzciA9IGZhbHNlKSB7XHJcbiAgICBsZXQgeyB0YWcgfSA9IG5vZGU7XHJcbiAgICAvLyAxLiBkeW5hbWljIGNvbXBvbmVudFxyXG4gICAgY29uc3QgaXNFeHBsaWNpdER5bmFtaWMgPSBpc0NvbXBvbmVudFRhZyh0YWcpO1xyXG4gICAgY29uc3QgaXNQcm9wID0gZmluZFByb3Aobm9kZSwgJ2lzJyk7XHJcbiAgICBpZiAoaXNQcm9wKSB7XHJcbiAgICAgICAgaWYgKGlzRXhwbGljaXREeW5hbWljIHx8XHJcbiAgICAgICAgICAgIChpc0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9JU19PTl9FTEVNRU5UXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX0lTX09OX0VMRU1FTlQgKi8sIGNvbnRleHQpKSkge1xyXG4gICAgICAgICAgICBjb25zdCBleHAgPSBpc1Byb3AudHlwZSA9PT0gNiAvKiBOb2RlVHlwZXMuQVRUUklCVVRFICovXHJcbiAgICAgICAgICAgICAgICA/IGlzUHJvcC52YWx1ZSAmJiBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGlzUHJvcC52YWx1ZS5jb250ZW50LCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgOiBpc1Byb3AuZXhwO1xyXG4gICAgICAgICAgICBpZiAoZXhwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoUkVTT0xWRV9EWU5BTUlDX0NPTVBPTkVOVCksIFtcclxuICAgICAgICAgICAgICAgICAgICBleHBcclxuICAgICAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlzUHJvcC50eXBlID09PSA2IC8qIE5vZGVUeXBlcy5BVFRSSUJVVEUgKi8gJiZcclxuICAgICAgICAgICAgaXNQcm9wLnZhbHVlLmNvbnRlbnQuc3RhcnRzV2l0aCgndnVlOicpKSB7XHJcbiAgICAgICAgICAgIC8vIDxidXR0b24gaXM9XCJ2dWU6eHh4XCI+XHJcbiAgICAgICAgICAgIC8vIGlmIG5vdCA8Y29tcG9uZW50Piwgb25seSBpcyB2YWx1ZSB0aGF0IHN0YXJ0cyB3aXRoIFwidnVlOlwiIHdpbGwgYmVcclxuICAgICAgICAgICAgLy8gdHJlYXRlZCBhcyBjb21wb25lbnQgYnkgdGhlIHBhcnNlIHBoYXNlIGFuZCByZWFjaCBoZXJlLCB1bmxlc3MgaXQnc1xyXG4gICAgICAgICAgICAvLyBjb21wYXQgbW9kZSB3aGVyZSBhbGwgaXMgdmFsdWVzIGFyZSBjb25zaWRlcmVkIGNvbXBvbmVudHNcclxuICAgICAgICAgICAgdGFnID0gaXNQcm9wLnZhbHVlLmNvbnRlbnQuc2xpY2UoNCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gMS41IHYtaXMgKFRPRE86IERlcHJlY2F0ZSlcclxuICAgIGNvbnN0IGlzRGlyID0gIWlzRXhwbGljaXREeW5hbWljICYmIGZpbmREaXIobm9kZSwgJ2lzJyk7XHJcbiAgICBpZiAoaXNEaXIgJiYgaXNEaXIuZXhwKSB7XHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKFJFU09MVkVfRFlOQU1JQ19DT01QT05FTlQpLCBbXHJcbiAgICAgICAgICAgIGlzRGlyLmV4cFxyXG4gICAgICAgIF0pO1xyXG4gICAgfVxyXG4gICAgLy8gMi4gYnVpbHQtaW4gY29tcG9uZW50cyAoVGVsZXBvcnQsIFRyYW5zaXRpb24sIEtlZXBBbGl2ZSwgU3VzcGVuc2UuLi4pXHJcbiAgICBjb25zdCBidWlsdEluID0gaXNDb3JlQ29tcG9uZW50KHRhZykgfHwgY29udGV4dC5pc0J1aWx0SW5Db21wb25lbnQodGFnKTtcclxuICAgIGlmIChidWlsdEluKSB7XHJcbiAgICAgICAgLy8gYnVpbHQtaW5zIGFyZSBzaW1wbHkgZmFsbHRocm91Z2hzIC8gaGF2ZSBzcGVjaWFsIGhhbmRsaW5nIGR1cmluZyBzc3JcclxuICAgICAgICAvLyBzbyB3ZSBkb24ndCBuZWVkIHRvIGltcG9ydCB0aGVpciBydW50aW1lIGVxdWl2YWxlbnRzXHJcbiAgICAgICAgaWYgKCFzc3IpXHJcbiAgICAgICAgICAgIGNvbnRleHQuaGVscGVyKGJ1aWx0SW4pO1xyXG4gICAgICAgIHJldHVybiBidWlsdEluO1xyXG4gICAgfVxyXG4gICAgLy8gNS4gdXNlciBjb21wb25lbnQgKHJlc29sdmUpXHJcbiAgICBjb250ZXh0LmhlbHBlcihSRVNPTFZFX0NPTVBPTkVOVCk7XHJcbiAgICBjb250ZXh0LmNvbXBvbmVudHMuYWRkKHRhZyk7XHJcbiAgICByZXR1cm4gdG9WYWxpZEFzc2V0SWQodGFnLCBgY29tcG9uZW50YCk7XHJcbn1cclxuZnVuY3Rpb24gYnVpbGRQcm9wcyhub2RlLCBjb250ZXh0LCBwcm9wcyA9IG5vZGUucHJvcHMsIGlzQ29tcG9uZW50LCBpc0R5bmFtaWNDb21wb25lbnQsIHNzciA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCB7IHRhZywgbG9jOiBlbGVtZW50TG9jLCBjaGlsZHJlbiB9ID0gbm9kZTtcclxuICAgIGxldCBwcm9wZXJ0aWVzID0gW107XHJcbiAgICBjb25zdCBtZXJnZUFyZ3MgPSBbXTtcclxuICAgIGNvbnN0IHJ1bnRpbWVEaXJlY3RpdmVzID0gW107XHJcbiAgICBjb25zdCBoYXNDaGlsZHJlbiA9IGNoaWxkcmVuLmxlbmd0aCA+IDA7XHJcbiAgICBsZXQgc2hvdWxkVXNlQmxvY2sgPSBmYWxzZTtcclxuICAgIC8vIHBhdGNoRmxhZyBhbmFseXNpc1xyXG4gICAgbGV0IHBhdGNoRmxhZyA9IDA7XHJcbiAgICBsZXQgaGFzUmVmID0gZmFsc2U7XHJcbiAgICBsZXQgaGFzQ2xhc3NCaW5kaW5nID0gZmFsc2U7XHJcbiAgICBsZXQgaGFzU3R5bGVCaW5kaW5nID0gZmFsc2U7XHJcbiAgICBsZXQgaGFzSHlkcmF0aW9uRXZlbnRCaW5kaW5nID0gZmFsc2U7XHJcbiAgICBsZXQgaGFzRHluYW1pY0tleXMgPSBmYWxzZTtcclxuICAgIGxldCBoYXNWbm9kZUhvb2sgPSBmYWxzZTtcclxuICAgIGNvbnN0IGR5bmFtaWNQcm9wTmFtZXMgPSBbXTtcclxuICAgIGNvbnN0IGFuYWx5emVQYXRjaEZsYWcgPSAoeyBrZXksIHZhbHVlIH0pID0+IHtcclxuICAgICAgICBpZiAoaXNTdGF0aWNFeHAoa2V5KSkge1xyXG4gICAgICAgICAgICBjb25zdCBuYW1lID0ga2V5LmNvbnRlbnQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzRXZlbnRIYW5kbGVyID0gaXNPbihuYW1lKTtcclxuICAgICAgICAgICAgaWYgKGlzRXZlbnRIYW5kbGVyICYmXHJcbiAgICAgICAgICAgICAgICAoIWlzQ29tcG9uZW50IHx8IGlzRHluYW1pY0NvbXBvbmVudCkgJiZcclxuICAgICAgICAgICAgICAgIC8vIG9taXQgdGhlIGZsYWcgZm9yIGNsaWNrIGhhbmRsZXJzIGJlY2F1c2UgaHlkcmF0aW9uIGdpdmVzIGNsaWNrXHJcbiAgICAgICAgICAgICAgICAvLyBkZWRpY2F0ZWQgZmFzdCBwYXRoLlxyXG4gICAgICAgICAgICAgICAgbmFtZS50b0xvd2VyQ2FzZSgpICE9PSAnb25jbGljaycgJiZcclxuICAgICAgICAgICAgICAgIC8vIG9taXQgdi1tb2RlbCBoYW5kbGVyc1xyXG4gICAgICAgICAgICAgICAgbmFtZSAhPT0gJ29uVXBkYXRlOm1vZGVsVmFsdWUnICYmXHJcbiAgICAgICAgICAgICAgICAvLyBvbWl0IG9uVm5vZGVYWFggaG9va3NcclxuICAgICAgICAgICAgICAgICFpc1Jlc2VydmVkUHJvcChuYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgaGFzSHlkcmF0aW9uRXZlbnRCaW5kaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaXNFdmVudEhhbmRsZXIgJiYgaXNSZXNlcnZlZFByb3AobmFtZSkpIHtcclxuICAgICAgICAgICAgICAgIGhhc1Zub2RlSG9vayA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhbHVlLnR5cGUgPT09IDIwIC8qIE5vZGVUeXBlcy5KU19DQUNIRV9FWFBSRVNTSU9OICovIHx8XHJcbiAgICAgICAgICAgICAgICAoKHZhbHVlLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUudHlwZSA9PT0gOCAvKiBOb2RlVHlwZXMuQ09NUE9VTkRfRVhQUkVTU0lPTiAqLykgJiZcclxuICAgICAgICAgICAgICAgICAgICBnZXRDb25zdGFudFR5cGUodmFsdWUsIGNvbnRleHQpID4gMCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIHNraXAgaWYgdGhlIHByb3AgaXMgYSBjYWNoZWQgaGFuZGxlciBvciBoYXMgY29uc3RhbnQgdmFsdWVcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJ3JlZicpIHtcclxuICAgICAgICAgICAgICAgIGhhc1JlZiA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xyXG4gICAgICAgICAgICAgICAgaGFzQ2xhc3NCaW5kaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChuYW1lID09PSAnc3R5bGUnKSB7XHJcbiAgICAgICAgICAgICAgICBoYXNTdHlsZUJpbmRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUgIT09ICdrZXknICYmICFkeW5hbWljUHJvcE5hbWVzLmluY2x1ZGVzKG5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICBkeW5hbWljUHJvcE5hbWVzLnB1c2gobmFtZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gdHJlYXQgdGhlIGR5bmFtaWMgY2xhc3MgYW5kIHN0eWxlIGJpbmRpbmcgb2YgdGhlIGNvbXBvbmVudCBhcyBkeW5hbWljIHByb3BzXHJcbiAgICAgICAgICAgIGlmIChpc0NvbXBvbmVudCAmJlxyXG4gICAgICAgICAgICAgICAgKG5hbWUgPT09ICdjbGFzcycgfHwgbmFtZSA9PT0gJ3N0eWxlJykgJiZcclxuICAgICAgICAgICAgICAgICFkeW5hbWljUHJvcE5hbWVzLmluY2x1ZGVzKG5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICBkeW5hbWljUHJvcE5hbWVzLnB1c2gobmFtZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGhhc0R5bmFtaWNLZXlzID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIC8vIHN0YXRpYyBhdHRyaWJ1dGVcclxuICAgICAgICBjb25zdCBwcm9wID0gcHJvcHNbaV07XHJcbiAgICAgICAgaWYgKHByb3AudHlwZSA9PT0gNiAvKiBOb2RlVHlwZXMuQVRUUklCVVRFICovKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgbG9jLCBuYW1lLCB2YWx1ZSB9ID0gcHJvcDtcclxuICAgICAgICAgICAgbGV0IGlzU3RhdGljID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdyZWYnKSB7XHJcbiAgICAgICAgICAgICAgICBoYXNSZWYgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuc2NvcGVzLnZGb3IgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllcy5wdXNoKGNyZWF0ZU9iamVjdFByb3BlcnR5KGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oJ3JlZl9mb3InLCB0cnVlKSwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbigndHJ1ZScpKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gc2tpcCBpcyBvbiA8Y29tcG9uZW50Piwgb3IgaXM9XCJ2dWU6eHh4XCJcclxuICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdpcycgJiZcclxuICAgICAgICAgICAgICAgIChpc0NvbXBvbmVudFRhZyh0YWcpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlICYmIHZhbHVlLmNvbnRlbnQuc3RhcnRzV2l0aCgndnVlOicpKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIChpc0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9JU19PTl9FTEVNRU5UXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX0lTX09OX0VMRU1FTlQgKi8sIGNvbnRleHQpKSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHByb3BlcnRpZXMucHVzaChjcmVhdGVPYmplY3RQcm9wZXJ0eShjcmVhdGVTaW1wbGVFeHByZXNzaW9uKG5hbWUsIHRydWUsIGdldElubmVyUmFuZ2UobG9jLCAwLCBuYW1lLmxlbmd0aCkpLCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKHZhbHVlID8gdmFsdWUuY29udGVudCA6ICcnLCBpc1N0YXRpYywgdmFsdWUgPyB2YWx1ZS5sb2MgOiBsb2MpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBkaXJlY3RpdmVzXHJcbiAgICAgICAgICAgIGNvbnN0IHsgbmFtZSwgYXJnLCBleHAsIGxvYyB9ID0gcHJvcDtcclxuICAgICAgICAgICAgY29uc3QgaXNWQmluZCA9IG5hbWUgPT09ICdiaW5kJztcclxuICAgICAgICAgICAgY29uc3QgaXNWT24gPSBuYW1lID09PSAnb24nO1xyXG4gICAgICAgICAgICAvLyBza2lwIHYtc2xvdCAtIGl0IGlzIGhhbmRsZWQgYnkgaXRzIGRlZGljYXRlZCB0cmFuc2Zvcm0uXHJcbiAgICAgICAgICAgIGlmIChuYW1lID09PSAnc2xvdCcpIHtcclxuICAgICAgICAgICAgICAgIGlmICghaXNDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcig0MCAvKiBFcnJvckNvZGVzLlhfVl9TTE9UX01JU1BMQUNFRCAqLywgbG9jKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBza2lwIHYtb25jZS92LW1lbW8gLSB0aGV5IGFyZSBoYW5kbGVkIGJ5IGRlZGljYXRlZCB0cmFuc2Zvcm1zLlxyXG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJ29uY2UnIHx8IG5hbWUgPT09ICdtZW1vJykge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gc2tpcCB2LWlzIGFuZCA6aXMgb24gPGNvbXBvbmVudD5cclxuICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdpcycgfHxcclxuICAgICAgICAgICAgICAgIChpc1ZCaW5kICYmXHJcbiAgICAgICAgICAgICAgICAgICAgaXNTdGF0aWNBcmdPZihhcmcsICdpcycpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgKGlzQ29tcG9uZW50VGFnKHRhZykgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGlzQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX0lTX09OX0VMRU1FTlRcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfSVNfT05fRUxFTUVOVCAqLywgY29udGV4dCkpKSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHNraXAgdi1vbiBpbiBTU1IgY29tcGlsYXRpb25cclxuICAgICAgICAgICAgaWYgKGlzVk9uICYmIHNzcikge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAvLyAjOTM4OiBlbGVtZW50cyB3aXRoIGR5bmFtaWMga2V5cyBzaG91bGQgYmUgZm9yY2VkIGludG8gYmxvY2tzXHJcbiAgICAgICAgICAgIChpc1ZCaW5kICYmIGlzU3RhdGljQXJnT2YoYXJnLCAna2V5JykpIHx8XHJcbiAgICAgICAgICAgICAgICAvLyBpbmxpbmUgYmVmb3JlLXVwZGF0ZSBob29rcyBuZWVkIHRvIGZvcmNlIGJsb2NrIHNvIHRoYXQgaXQgaXMgaW52b2tlZFxyXG4gICAgICAgICAgICAgICAgLy8gYmVmb3JlIGNoaWxkcmVuXHJcbiAgICAgICAgICAgICAgICAoaXNWT24gJiYgaGFzQ2hpbGRyZW4gJiYgaXNTdGF0aWNBcmdPZihhcmcsICd2dWU6YmVmb3JlLXVwZGF0ZScpKSkge1xyXG4gICAgICAgICAgICAgICAgc2hvdWxkVXNlQmxvY2sgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpc1ZCaW5kICYmIGlzU3RhdGljQXJnT2YoYXJnLCAncmVmJykgJiYgY29udGV4dC5zY29wZXMudkZvciA+IDApIHtcclxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXMucHVzaChjcmVhdGVPYmplY3RQcm9wZXJ0eShjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCdyZWZfZm9yJywgdHJ1ZSksIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oJ3RydWUnKSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZSBmb3Igdi1iaW5kIGFuZCB2LW9uIHdpdGggbm8gYXJndW1lbnRcclxuICAgICAgICAgICAgaWYgKCFhcmcgJiYgKGlzVkJpbmQgfHwgaXNWT24pKSB7XHJcbiAgICAgICAgICAgICAgICBoYXNEeW5hbWljS2V5cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXhwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlQXJncy5wdXNoKGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oZGVkdXBlUHJvcGVydGllcyhwcm9wZXJ0aWVzKSwgZWxlbWVudExvYykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1ZCaW5kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIueCB2LWJpbmQgb2JqZWN0IG9yZGVyIGNvbXBhdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc092ZXJyaWRhYmxlS2V5cyA9IG1lcmdlQXJncy5zb21lKGFyZyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmcudHlwZSA9PT0gMTUgLyogTm9kZVR5cGVzLkpTX09CSkVDVF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJnLnByb3BlcnRpZXMuc29tZSgoeyBrZXkgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkudHlwZSAhPT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8gfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWtleS5pc1N0YXRpYykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChrZXkuY29udGVudCAhPT0gJ2NsYXNzJyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkuY29udGVudCAhPT0gJ3N0eWxlJyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaXNPbihrZXkuY29udGVudCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkeW5hbWljIGV4cHJlc3Npb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc092ZXJyaWRhYmxlS2V5cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9WX0JJTkRfT0JKRUNUX09SREVSXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX1ZfQklORF9PQkpFQ1RfT1JERVIgKi8sIGNvbnRleHQsIGxvYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX1ZfQklORF9PQkpFQ1RfT1JERVJcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfVl9CSU5EX09CSkVDVF9PUkRFUiAqLywgY29udGV4dCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZUFyZ3MudW5zaGlmdChleHApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlQXJncy5wdXNoKGV4cCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB2LW9uPVwib2JqXCIgLT4gdG9IYW5kbGVycyhvYmopXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlQXJncy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IDE0IC8qIE5vZGVUeXBlcy5KU19DQUxMX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWU6IGNvbnRleHQuaGVscGVyKFRPX0hBTkRMRVJTKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50czogaXNDb21wb25lbnQgPyBbZXhwXSA6IFtleHAsIGB0cnVlYF1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoaXNWQmluZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IDM0IC8qIEVycm9yQ29kZXMuWF9WX0JJTkRfTk9fRVhQUkVTU0lPTiAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IDM1IC8qIEVycm9yQ29kZXMuWF9WX09OX05PX0VYUFJFU1NJT04gKi8sIGxvYykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aXZlVHJhbnNmb3JtID0gY29udGV4dC5kaXJlY3RpdmVUcmFuc2Zvcm1zW25hbWVdO1xyXG4gICAgICAgICAgICBpZiAoZGlyZWN0aXZlVHJhbnNmb3JtKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBoYXMgYnVpbHQtaW4gZGlyZWN0aXZlIHRyYW5zZm9ybS5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgcHJvcHMsIG5lZWRSdW50aW1lIH0gPSBkaXJlY3RpdmVUcmFuc2Zvcm0ocHJvcCwgbm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICAhc3NyICYmIHByb3BzLmZvckVhY2goYW5hbHl6ZVBhdGNoRmxhZyk7XHJcbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzLnB1c2goLi4ucHJvcHMpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5lZWRSdW50aW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcnVudGltZURpcmVjdGl2ZXMucHVzaChwcm9wKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNTeW1ib2wobmVlZFJ1bnRpbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZUltcG9ydE1hcC5zZXQocHJvcCwgbmVlZFJ1bnRpbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICghaXNCdWlsdEluRGlyZWN0aXZlKG5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBubyBidWlsdC1pbiB0cmFuc2Zvcm0sIHRoaXMgaXMgYSB1c2VyIGN1c3RvbSBkaXJlY3RpdmUuXHJcbiAgICAgICAgICAgICAgICBydW50aW1lRGlyZWN0aXZlcy5wdXNoKHByb3ApO1xyXG4gICAgICAgICAgICAgICAgLy8gY3VzdG9tIGRpcnMgbWF5IHVzZSBiZWZvcmVVcGRhdGUgc28gdGhleSBuZWVkIHRvIGZvcmNlIGJsb2Nrc1xyXG4gICAgICAgICAgICAgICAgLy8gdG8gZW5zdXJlIGJlZm9yZS11cGRhdGUgZ2V0cyBjYWxsZWQgYmVmb3JlIGNoaWxkcmVuIHVwZGF0ZVxyXG4gICAgICAgICAgICAgICAgaWYgKGhhc0NoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2hvdWxkVXNlQmxvY2sgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IHByb3BzRXhwcmVzc2lvbiA9IHVuZGVmaW5lZDtcclxuICAgIC8vIGhhcyB2LWJpbmQ9XCJvYmplY3RcIiBvciB2LW9uPVwib2JqZWN0XCIsIHdyYXAgd2l0aCBtZXJnZVByb3BzXHJcbiAgICBpZiAobWVyZ2VBcmdzLmxlbmd0aCkge1xyXG4gICAgICAgIGlmIChwcm9wZXJ0aWVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBtZXJnZUFyZ3MucHVzaChjcmVhdGVPYmplY3RFeHByZXNzaW9uKGRlZHVwZVByb3BlcnRpZXMocHJvcGVydGllcyksIGVsZW1lbnRMb2MpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG1lcmdlQXJncy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHByb3BzRXhwcmVzc2lvbiA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKE1FUkdFX1BST1BTKSwgbWVyZ2VBcmdzLCBlbGVtZW50TG9jKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHNpbmdsZSB2LWJpbmQgd2l0aCBub3RoaW5nIGVsc2UgLSBubyBuZWVkIGZvciBhIG1lcmdlUHJvcHMgY2FsbFxyXG4gICAgICAgICAgICBwcm9wc0V4cHJlc3Npb24gPSBtZXJnZUFyZ3NbMF07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocHJvcGVydGllcy5sZW5ndGgpIHtcclxuICAgICAgICBwcm9wc0V4cHJlc3Npb24gPSBjcmVhdGVPYmplY3RFeHByZXNzaW9uKGRlZHVwZVByb3BlcnRpZXMocHJvcGVydGllcyksIGVsZW1lbnRMb2MpO1xyXG4gICAgfVxyXG4gICAgLy8gcGF0Y2hGbGFnIGFuYWx5c2lzXHJcbiAgICBpZiAoaGFzRHluYW1pY0tleXMpIHtcclxuICAgICAgICBwYXRjaEZsYWcgfD0gMTYgLyogUGF0Y2hGbGFncy5GVUxMX1BST1BTICovO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKGhhc0NsYXNzQmluZGluZyAmJiAhaXNDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgcGF0Y2hGbGFnIHw9IDIgLyogUGF0Y2hGbGFncy5DTEFTUyAqLztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGhhc1N0eWxlQmluZGluZyAmJiAhaXNDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgcGF0Y2hGbGFnIHw9IDQgLyogUGF0Y2hGbGFncy5TVFlMRSAqLztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGR5bmFtaWNQcm9wTmFtZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHBhdGNoRmxhZyB8PSA4IC8qIFBhdGNoRmxhZ3MuUFJPUFMgKi87XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChoYXNIeWRyYXRpb25FdmVudEJpbmRpbmcpIHtcclxuICAgICAgICAgICAgcGF0Y2hGbGFnIHw9IDMyIC8qIFBhdGNoRmxhZ3MuSFlEUkFURV9FVkVOVFMgKi87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCFzaG91bGRVc2VCbG9jayAmJlxyXG4gICAgICAgIChwYXRjaEZsYWcgPT09IDAgfHwgcGF0Y2hGbGFnID09PSAzMiAvKiBQYXRjaEZsYWdzLkhZRFJBVEVfRVZFTlRTICovKSAmJlxyXG4gICAgICAgIChoYXNSZWYgfHwgaGFzVm5vZGVIb29rIHx8IHJ1bnRpbWVEaXJlY3RpdmVzLmxlbmd0aCA+IDApKSB7XHJcbiAgICAgICAgcGF0Y2hGbGFnIHw9IDUxMiAvKiBQYXRjaEZsYWdzLk5FRURfUEFUQ0ggKi87XHJcbiAgICB9XHJcbiAgICAvLyBwcmUtbm9ybWFsaXplIHByb3BzLCBTU1IgaXMgc2tpcHBlZCBmb3Igbm93XHJcbiAgICBpZiAoIWNvbnRleHQuaW5TU1IgJiYgcHJvcHNFeHByZXNzaW9uKSB7XHJcbiAgICAgICAgc3dpdGNoIChwcm9wc0V4cHJlc3Npb24udHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIDE1IC8qIE5vZGVUeXBlcy5KU19PQkpFQ1RfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgICAgIC8vIG1lYW5zIHRoYXQgdGhlcmUgaXMgbm8gdi1iaW5kLFxyXG4gICAgICAgICAgICAgICAgLy8gYnV0IHN0aWxsIG5lZWQgdG8gZGVhbCB3aXRoIGR5bmFtaWMga2V5IGJpbmRpbmdcclxuICAgICAgICAgICAgICAgIGxldCBjbGFzc0tleUluZGV4ID0gLTE7XHJcbiAgICAgICAgICAgICAgICBsZXQgc3R5bGVLZXlJbmRleCA9IC0xO1xyXG4gICAgICAgICAgICAgICAgbGV0IGhhc0R5bmFtaWNLZXkgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcHNFeHByZXNzaW9uLnByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBwcm9wc0V4cHJlc3Npb24ucHJvcGVydGllc1tpXS5rZXk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzU3RhdGljRXhwKGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleS5jb250ZW50ID09PSAnY2xhc3MnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc0tleUluZGV4ID0gaTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChrZXkuY29udGVudCA9PT0gJ3N0eWxlJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVLZXlJbmRleCA9IGk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWtleS5pc0hhbmRsZXJLZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzRHluYW1pY0tleSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xhc3NQcm9wID0gcHJvcHNFeHByZXNzaW9uLnByb3BlcnRpZXNbY2xhc3NLZXlJbmRleF07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdHlsZVByb3AgPSBwcm9wc0V4cHJlc3Npb24ucHJvcGVydGllc1tzdHlsZUtleUluZGV4XTtcclxuICAgICAgICAgICAgICAgIC8vIG5vIGR5bmFtaWMga2V5XHJcbiAgICAgICAgICAgICAgICBpZiAoIWhhc0R5bmFtaWNLZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2xhc3NQcm9wICYmICFpc1N0YXRpY0V4cChjbGFzc1Byb3AudmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzUHJvcC52YWx1ZSA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKE5PUk1BTElaRV9DTEFTUyksIFtjbGFzc1Byb3AudmFsdWVdKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0eWxlUHJvcCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgc3RhdGljIHN0eWxlIGlzIGNvbXBpbGVkIGludG8gYW4gb2JqZWN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzbyB1c2UgYGhhc1N0eWxlQmluZGluZ2AgdG8gZW5zdXJlIHRoYXQgaXQgaXMgYSBkeW5hbWljIHN0eWxlIGJpbmRpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGhhc1N0eWxlQmluZGluZyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0eWxlUHJvcC52YWx1ZS50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlUHJvcC52YWx1ZS5jb250ZW50LnRyaW0oKVswXSA9PT0gYFtgKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdi1iaW5kOnN0eWxlIGFuZCBzdHlsZSBib3RoIGV4aXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdi1iaW5kOnN0eWxlIHdpdGggc3RhdGljIGxpdGVyYWwgb2JqZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZVByb3AudmFsdWUudHlwZSA9PT0gMTcgLyogTm9kZVR5cGVzLkpTX0FSUkFZX0VYUFJFU1NJT04gKi8pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlUHJvcC52YWx1ZSA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKE5PUk1BTElaRV9TVFlMRSksIFtzdHlsZVByb3AudmFsdWVdKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBkeW5hbWljIGtleSBiaW5kaW5nLCB3cmFwIHdpdGggYG5vcm1hbGl6ZVByb3BzYFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3BzRXhwcmVzc2lvbiA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKE5PUk1BTElaRV9QUk9QUyksIFtwcm9wc0V4cHJlc3Npb25dKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDE0IC8qIE5vZGVUeXBlcy5KU19DQUxMX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgICAgICAvLyBtZXJnZVByb3BzIGNhbGwsIGRvIG5vdGhpbmdcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgLy8gc2luZ2xlIHYtYmluZFxyXG4gICAgICAgICAgICAgICAgcHJvcHNFeHByZXNzaW9uID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoTk9STUFMSVpFX1BST1BTKSwgW1xyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKEdVQVJEX1JFQUNUSVZFX1BST1BTKSwgW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wc0V4cHJlc3Npb25cclxuICAgICAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHByb3BzOiBwcm9wc0V4cHJlc3Npb24sXHJcbiAgICAgICAgZGlyZWN0aXZlczogcnVudGltZURpcmVjdGl2ZXMsXHJcbiAgICAgICAgcGF0Y2hGbGFnLFxyXG4gICAgICAgIGR5bmFtaWNQcm9wTmFtZXMsXHJcbiAgICAgICAgc2hvdWxkVXNlQmxvY2tcclxuICAgIH07XHJcbn1cclxuLy8gRGVkdXBlIHByb3BzIGluIGFuIG9iamVjdCBsaXRlcmFsLlxyXG4vLyBMaXRlcmFsIGR1cGxpY2F0ZWQgYXR0cmlidXRlcyB3b3VsZCBoYXZlIGJlZW4gd2FybmVkIGR1cmluZyB0aGUgcGFyc2UgcGhhc2UsXHJcbi8vIGhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdG8gZW5jb3VudGVyIGR1cGxpY2F0ZWQgYG9uWFhYYCBoYW5kbGVycyB3aXRoIGRpZmZlcmVudFxyXG4vLyBtb2RpZmllcnMuIFdlIGFsc28gbmVlZCB0byBtZXJnZSBzdGF0aWMgYW5kIGR5bmFtaWMgY2xhc3MgLyBzdHlsZSBhdHRyaWJ1dGVzLlxyXG4vLyAtIG9uWFhYIGhhbmRsZXJzIC8gc3R5bGU6IG1lcmdlIGludG8gYXJyYXlcclxuLy8gLSBjbGFzczogbWVyZ2UgaW50byBzaW5nbGUgZXhwcmVzc2lvbiB3aXRoIGNvbmNhdGVuYXRpb25cclxuZnVuY3Rpb24gZGVkdXBlUHJvcGVydGllcyhwcm9wZXJ0aWVzKSB7XHJcbiAgICBjb25zdCBrbm93blByb3BzID0gbmV3IE1hcCgpO1xyXG4gICAgY29uc3QgZGVkdXBlZCA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgcHJvcCA9IHByb3BlcnRpZXNbaV07XHJcbiAgICAgICAgLy8gZHluYW1pYyBrZXlzIGFyZSBhbHdheXMgYWxsb3dlZFxyXG4gICAgICAgIGlmIChwcm9wLmtleS50eXBlID09PSA4IC8qIE5vZGVUeXBlcy5DT01QT1VORF9FWFBSRVNTSU9OICovIHx8ICFwcm9wLmtleS5pc1N0YXRpYykge1xyXG4gICAgICAgICAgICBkZWR1cGVkLnB1c2gocHJvcCk7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBuYW1lID0gcHJvcC5rZXkuY29udGVudDtcclxuICAgICAgICBjb25zdCBleGlzdGluZyA9IGtub3duUHJvcHMuZ2V0KG5hbWUpO1xyXG4gICAgICAgIGlmIChleGlzdGluZykge1xyXG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJ3N0eWxlJyB8fCBuYW1lID09PSAnY2xhc3MnIHx8IGlzT24obmFtZSkpIHtcclxuICAgICAgICAgICAgICAgIG1lcmdlQXNBcnJheShleGlzdGluZywgcHJvcCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gdW5leHBlY3RlZCBkdXBsaWNhdGUsIHNob3VsZCBoYXZlIGVtaXR0ZWQgZXJyb3IgZHVyaW5nIHBhcnNlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBrbm93blByb3BzLnNldChuYW1lLCBwcm9wKTtcclxuICAgICAgICAgICAgZGVkdXBlZC5wdXNoKHByb3ApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBkZWR1cGVkO1xyXG59XHJcbmZ1bmN0aW9uIG1lcmdlQXNBcnJheShleGlzdGluZywgaW5jb21pbmcpIHtcclxuICAgIGlmIChleGlzdGluZy52YWx1ZS50eXBlID09PSAxNyAvKiBOb2RlVHlwZXMuSlNfQVJSQVlfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgIGV4aXN0aW5nLnZhbHVlLmVsZW1lbnRzLnB1c2goaW5jb21pbmcudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZXhpc3RpbmcudmFsdWUgPSBjcmVhdGVBcnJheUV4cHJlc3Npb24oW2V4aXN0aW5nLnZhbHVlLCBpbmNvbWluZy52YWx1ZV0sIGV4aXN0aW5nLmxvYyk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gYnVpbGREaXJlY3RpdmVBcmdzKGRpciwgY29udGV4dCkge1xyXG4gICAgY29uc3QgZGlyQXJncyA9IFtdO1xyXG4gICAgY29uc3QgcnVudGltZSA9IGRpcmVjdGl2ZUltcG9ydE1hcC5nZXQoZGlyKTtcclxuICAgIGlmIChydW50aW1lKSB7XHJcbiAgICAgICAgLy8gYnVpbHQtaW4gZGlyZWN0aXZlIHdpdGggcnVudGltZVxyXG4gICAgICAgIGRpckFyZ3MucHVzaChjb250ZXh0LmhlbHBlclN0cmluZyhydW50aW1lKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIC8vIGluamVjdCBzdGF0ZW1lbnQgZm9yIHJlc29sdmluZyBkaXJlY3RpdmVcclxuICAgICAgICAgICAgY29udGV4dC5oZWxwZXIoUkVTT0xWRV9ESVJFQ1RJVkUpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmRpcmVjdGl2ZXMuYWRkKGRpci5uYW1lKTtcclxuICAgICAgICAgICAgZGlyQXJncy5wdXNoKHRvVmFsaWRBc3NldElkKGRpci5uYW1lLCBgZGlyZWN0aXZlYCkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHsgbG9jIH0gPSBkaXI7XHJcbiAgICBpZiAoZGlyLmV4cClcclxuICAgICAgICBkaXJBcmdzLnB1c2goZGlyLmV4cCk7XHJcbiAgICBpZiAoZGlyLmFyZykge1xyXG4gICAgICAgIGlmICghZGlyLmV4cCkge1xyXG4gICAgICAgICAgICBkaXJBcmdzLnB1c2goYHZvaWQgMGApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkaXJBcmdzLnB1c2goZGlyLmFyZyk7XHJcbiAgICB9XHJcbiAgICBpZiAoT2JqZWN0LmtleXMoZGlyLm1vZGlmaWVycykubGVuZ3RoKSB7XHJcbiAgICAgICAgaWYgKCFkaXIuYXJnKSB7XHJcbiAgICAgICAgICAgIGlmICghZGlyLmV4cCkge1xyXG4gICAgICAgICAgICAgICAgZGlyQXJncy5wdXNoKGB2b2lkIDBgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBkaXJBcmdzLnB1c2goYHZvaWQgMGApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB0cnVlRXhwcmVzc2lvbiA9IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYHRydWVgLCBmYWxzZSwgbG9jKTtcclxuICAgICAgICBkaXJBcmdzLnB1c2goY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihkaXIubW9kaWZpZXJzLm1hcChtb2RpZmllciA9PiBjcmVhdGVPYmplY3RQcm9wZXJ0eShtb2RpZmllciwgdHJ1ZUV4cHJlc3Npb24pKSwgbG9jKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY3JlYXRlQXJyYXlFeHByZXNzaW9uKGRpckFyZ3MsIGRpci5sb2MpO1xyXG59XHJcbmZ1bmN0aW9uIHN0cmluZ2lmeUR5bmFtaWNQcm9wTmFtZXMocHJvcHMpIHtcclxuICAgIGxldCBwcm9wc05hbWVzU3RyaW5nID0gYFtgO1xyXG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBwcm9wcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICBwcm9wc05hbWVzU3RyaW5nICs9IEpTT04uc3RyaW5naWZ5KHByb3BzW2ldKTtcclxuICAgICAgICBpZiAoaSA8IGwgLSAxKVxyXG4gICAgICAgICAgICBwcm9wc05hbWVzU3RyaW5nICs9ICcsICc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcHJvcHNOYW1lc1N0cmluZyArIGBdYDtcclxufVxyXG5mdW5jdGlvbiBpc0NvbXBvbmVudFRhZyh0YWcpIHtcclxuICAgIHJldHVybiB0YWcgPT09ICdjb21wb25lbnQnIHx8IHRhZyA9PT0gJ0NvbXBvbmVudCc7XHJcbn1cblxuKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICA/IE9iamVjdC5mcmVlemUoe30pXHJcbiAgICA6IHt9O1xyXG4ocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBPYmplY3QuZnJlZXplKFtdKSA6IFtdO1xyXG5jb25zdCBjYWNoZVN0cmluZ0Z1bmN0aW9uID0gKGZuKSA9PiB7XHJcbiAgICBjb25zdCBjYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbiAgICByZXR1cm4gKChzdHIpID0+IHtcclxuICAgICAgICBjb25zdCBoaXQgPSBjYWNoZVtzdHJdO1xyXG4gICAgICAgIHJldHVybiBoaXQgfHwgKGNhY2hlW3N0cl0gPSBmbihzdHIpKTtcclxuICAgIH0pO1xyXG59O1xyXG5jb25zdCBjYW1lbGl6ZVJFID0gLy0oXFx3KS9nO1xyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmNvbnN0IGNhbWVsaXplID0gY2FjaGVTdHJpbmdGdW5jdGlvbigoc3RyKSA9PiB7XHJcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoY2FtZWxpemVSRSwgKF8sIGMpID0+IChjID8gYy50b1VwcGVyQ2FzZSgpIDogJycpKTtcclxufSk7XG5cbmNvbnN0IHRyYW5zZm9ybVNsb3RPdXRsZXQgPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgaWYgKGlzU2xvdE91dGxldChub2RlKSkge1xyXG4gICAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIGxvYyB9ID0gbm9kZTtcclxuICAgICAgICBjb25zdCB7IHNsb3ROYW1lLCBzbG90UHJvcHMgfSA9IHByb2Nlc3NTbG90T3V0bGV0KG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgIGNvbnN0IHNsb3RBcmdzID0gW1xyXG4gICAgICAgICAgICBjb250ZXh0LnByZWZpeElkZW50aWZpZXJzID8gYF9jdHguJHNsb3RzYCA6IGAkc2xvdHNgLFxyXG4gICAgICAgICAgICBzbG90TmFtZSxcclxuICAgICAgICAgICAgJ3t9JyxcclxuICAgICAgICAgICAgJ3VuZGVmaW5lZCcsXHJcbiAgICAgICAgICAgICd0cnVlJ1xyXG4gICAgICAgIF07XHJcbiAgICAgICAgbGV0IGV4cGVjdGVkTGVuID0gMjtcclxuICAgICAgICBpZiAoc2xvdFByb3BzKSB7XHJcbiAgICAgICAgICAgIHNsb3RBcmdzWzJdID0gc2xvdFByb3BzO1xyXG4gICAgICAgICAgICBleHBlY3RlZExlbiA9IDM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgc2xvdEFyZ3NbM10gPSBjcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24oW10sIGNoaWxkcmVuLCBmYWxzZSwgZmFsc2UsIGxvYyk7XHJcbiAgICAgICAgICAgIGV4cGVjdGVkTGVuID0gNDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbnRleHQuc2NvcGVJZCAmJiAhY29udGV4dC5zbG90dGVkKSB7XHJcbiAgICAgICAgICAgIGV4cGVjdGVkTGVuID0gNTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2xvdEFyZ3Muc3BsaWNlKGV4cGVjdGVkTGVuKTsgLy8gcmVtb3ZlIHVudXNlZCBhcmd1bWVudHNcclxuICAgICAgICBub2RlLmNvZGVnZW5Ob2RlID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoUkVOREVSX1NMT1QpLCBzbG90QXJncywgbG9jKTtcclxuICAgIH1cclxufTtcclxuZnVuY3Rpb24gcHJvY2Vzc1Nsb3RPdXRsZXQobm9kZSwgY29udGV4dCkge1xyXG4gICAgbGV0IHNsb3ROYW1lID0gYFwiZGVmYXVsdFwiYDtcclxuICAgIGxldCBzbG90UHJvcHMgPSB1bmRlZmluZWQ7XHJcbiAgICBjb25zdCBub25OYW1lUHJvcHMgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5wcm9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHAgPSBub2RlLnByb3BzW2ldO1xyXG4gICAgICAgIGlmIChwLnR5cGUgPT09IDYgLyogTm9kZVR5cGVzLkFUVFJJQlVURSAqLykge1xyXG4gICAgICAgICAgICBpZiAocC52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHAubmFtZSA9PT0gJ25hbWUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2xvdE5hbWUgPSBKU09OLnN0cmluZ2lmeShwLnZhbHVlLmNvbnRlbnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcC5uYW1lID0gY2FtZWxpemUocC5uYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICBub25OYW1lUHJvcHMucHVzaChwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHAubmFtZSA9PT0gJ2JpbmQnICYmIGlzU3RhdGljQXJnT2YocC5hcmcsICduYW1lJykpIHtcclxuICAgICAgICAgICAgICAgIGlmIChwLmV4cClcclxuICAgICAgICAgICAgICAgICAgICBzbG90TmFtZSA9IHAuZXhwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKHAubmFtZSA9PT0gJ2JpbmQnICYmIHAuYXJnICYmIGlzU3RhdGljRXhwKHAuYXJnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHAuYXJnLmNvbnRlbnQgPSBjYW1lbGl6ZShwLmFyZy5jb250ZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG5vbk5hbWVQcm9wcy5wdXNoKHApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKG5vbk5hbWVQcm9wcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY29uc3QgeyBwcm9wcywgZGlyZWN0aXZlcyB9ID0gYnVpbGRQcm9wcyhub2RlLCBjb250ZXh0LCBub25OYW1lUHJvcHMsIGZhbHNlLCBmYWxzZSk7XHJcbiAgICAgICAgc2xvdFByb3BzID0gcHJvcHM7XHJcbiAgICAgICAgaWYgKGRpcmVjdGl2ZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDM2IC8qIEVycm9yQ29kZXMuWF9WX1NMT1RfVU5FWFBFQ1RFRF9ESVJFQ1RJVkVfT05fU0xPVF9PVVRMRVQgKi8sIGRpcmVjdGl2ZXNbMF0ubG9jKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBzbG90TmFtZSxcclxuICAgICAgICBzbG90UHJvcHNcclxuICAgIH07XHJcbn1cblxuY29uc3QgZm5FeHBSRSA9IC9eXFxzKihbXFx3JF9dK3woYXN5bmNcXHMqKT9cXChbXildKj9cXCkpXFxzKj0+fF5cXHMqKGFzeW5jXFxzKyk/ZnVuY3Rpb24oPzpcXHMrW1xcdyRdKyk/XFxzKlxcKC87XHJcbmNvbnN0IHRyYW5zZm9ybU9uID0gKGRpciwgbm9kZSwgY29udGV4dCwgYXVnbWVudG9yKSA9PiB7XHJcbiAgICBjb25zdCB7IGxvYywgbW9kaWZpZXJzLCBhcmcgfSA9IGRpcjtcclxuICAgIGlmICghZGlyLmV4cCAmJiAhbW9kaWZpZXJzLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDM1IC8qIEVycm9yQ29kZXMuWF9WX09OX05PX0VYUFJFU1NJT04gKi8sIGxvYykpO1xyXG4gICAgfVxyXG4gICAgbGV0IGV2ZW50TmFtZTtcclxuICAgIGlmIChhcmcudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICBpZiAoYXJnLmlzU3RhdGljKSB7XHJcbiAgICAgICAgICAgIGxldCByYXdOYW1lID0gYXJnLmNvbnRlbnQ7XHJcbiAgICAgICAgICAgIC8vIFRPRE8gZGVwcmVjYXRlIEB2bm9kZVhYWCB1c2FnZVxyXG4gICAgICAgICAgICBpZiAocmF3TmFtZS5zdGFydHNXaXRoKCd2dWU6JykpIHtcclxuICAgICAgICAgICAgICAgIHJhd05hbWUgPSBgdm5vZGUtJHtyYXdOYW1lLnNsaWNlKDQpfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZXZlbnRTdHJpbmcgPSBub2RlLnRhZ1R5cGUgPT09IDEgLyogRWxlbWVudFR5cGVzLkNPTVBPTkVOVCAqLyB8fFxyXG4gICAgICAgICAgICAgICAgcmF3TmFtZS5zdGFydHNXaXRoKCd2bm9kZScpIHx8XHJcbiAgICAgICAgICAgICAgICAhL1tBLVpdLy50ZXN0KHJhd05hbWUpXHJcbiAgICAgICAgICAgICAgICA/IC8vIGZvciBjb21wb25lbnQgYW5kIHZub2RlIGxpZmVjeWNsZSBldmVudCBsaXN0ZW5lcnMsIGF1dG8gY29udmVydFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGl0IHRvIGNhbWVsQ2FzZS4gU2VlIGlzc3VlICMyMjQ5XHJcbiAgICAgICAgICAgICAgICAgICAgdG9IYW5kbGVyS2V5KGNhbWVsaXplJDEocmF3TmFtZSkpXHJcbiAgICAgICAgICAgICAgICAvLyBwcmVzZXJ2ZSBjYXNlIGZvciBwbGFpbiBlbGVtZW50IGxpc3RlbmVycyB0aGF0IGhhdmUgdXBwZXJjYXNlXHJcbiAgICAgICAgICAgICAgICAvLyBsZXR0ZXJzLCBhcyB0aGVzZSBtYXkgYmUgY3VzdG9tIGVsZW1lbnRzJyBjdXN0b20gZXZlbnRzXHJcbiAgICAgICAgICAgICAgICA6IGBvbjoke3Jhd05hbWV9YDtcclxuICAgICAgICAgICAgZXZlbnROYW1lID0gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihldmVudFN0cmluZywgdHJ1ZSwgYXJnLmxvYyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyAjMjM4OFxyXG4gICAgICAgICAgICBldmVudE5hbWUgPSBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW1xyXG4gICAgICAgICAgICAgICAgYCR7Y29udGV4dC5oZWxwZXJTdHJpbmcoVE9fSEFORExFUl9LRVkpfShgLFxyXG4gICAgICAgICAgICAgICAgYXJnLFxyXG4gICAgICAgICAgICAgICAgYClgXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIGFscmVhZHkgYSBjb21wb3VuZCBleHByZXNzaW9uLlxyXG4gICAgICAgIGV2ZW50TmFtZSA9IGFyZztcclxuICAgICAgICBldmVudE5hbWUuY2hpbGRyZW4udW5zaGlmdChgJHtjb250ZXh0LmhlbHBlclN0cmluZyhUT19IQU5ETEVSX0tFWSl9KGApO1xyXG4gICAgICAgIGV2ZW50TmFtZS5jaGlsZHJlbi5wdXNoKGApYCk7XHJcbiAgICB9XHJcbiAgICAvLyBoYW5kbGVyIHByb2Nlc3NpbmdcclxuICAgIGxldCBleHAgPSBkaXIuZXhwO1xyXG4gICAgaWYgKGV4cCAmJiAhZXhwLmNvbnRlbnQudHJpbSgpKSB7XHJcbiAgICAgICAgZXhwID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgbGV0IHNob3VsZENhY2hlID0gY29udGV4dC5jYWNoZUhhbmRsZXJzICYmICFleHAgJiYgIWNvbnRleHQuaW5WT25jZTtcclxuICAgIGlmIChleHApIHtcclxuICAgICAgICBjb25zdCBpc01lbWJlckV4cCA9IGlzTWVtYmVyRXhwcmVzc2lvbihleHAuY29udGVudCk7XHJcbiAgICAgICAgY29uc3QgaXNJbmxpbmVTdGF0ZW1lbnQgPSAhKGlzTWVtYmVyRXhwIHx8IGZuRXhwUkUudGVzdChleHAuY29udGVudCkpO1xyXG4gICAgICAgIGNvbnN0IGhhc011bHRpcGxlU3RhdGVtZW50cyA9IGV4cC5jb250ZW50LmluY2x1ZGVzKGA7YCk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB0cnVlKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRlQnJvd3NlckV4cHJlc3Npb24oZXhwLCBjb250ZXh0LCBmYWxzZSwgaGFzTXVsdGlwbGVTdGF0ZW1lbnRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzSW5saW5lU3RhdGVtZW50IHx8IChzaG91bGRDYWNoZSAmJiBpc01lbWJlckV4cCkpIHtcclxuICAgICAgICAgICAgLy8gd3JhcCBpbmxpbmUgc3RhdGVtZW50IGluIGEgZnVuY3Rpb24gZXhwcmVzc2lvblxyXG4gICAgICAgICAgICBleHAgPSBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW1xyXG4gICAgICAgICAgICAgICAgYCR7aXNJbmxpbmVTdGF0ZW1lbnRcclxuICAgICAgICAgICAgICAgICAgICA/IGAkZXZlbnRgXHJcbiAgICAgICAgICAgICAgICAgICAgOiBgJHtgYH0oLi4uYXJncylgfSA9PiAke2hhc011bHRpcGxlU3RhdGVtZW50cyA/IGB7YCA6IGAoYH1gLFxyXG4gICAgICAgICAgICAgICAgZXhwLFxyXG4gICAgICAgICAgICAgICAgaGFzTXVsdGlwbGVTdGF0ZW1lbnRzID8gYH1gIDogYClgXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCByZXQgPSB7XHJcbiAgICAgICAgcHJvcHM6IFtcclxuICAgICAgICAgICAgY3JlYXRlT2JqZWN0UHJvcGVydHkoZXZlbnROYW1lLCBleHAgfHwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgKCkgPT4ge31gLCBmYWxzZSwgbG9jKSlcclxuICAgICAgICBdXHJcbiAgICB9O1xyXG4gICAgLy8gYXBwbHkgZXh0ZW5kZWQgY29tcGlsZXIgYXVnbWVudG9yXHJcbiAgICBpZiAoYXVnbWVudG9yKSB7XHJcbiAgICAgICAgcmV0ID0gYXVnbWVudG9yKHJldCk7XHJcbiAgICB9XHJcbiAgICBpZiAoc2hvdWxkQ2FjaGUpIHtcclxuICAgICAgICAvLyBjYWNoZSBoYW5kbGVycyBzbyB0aGF0IGl0J3MgYWx3YXlzIHRoZSBzYW1lIGhhbmRsZXIgYmVpbmcgcGFzc2VkIGRvd24uXHJcbiAgICAgICAgLy8gdGhpcyBhdm9pZHMgdW5uZWNlc3NhcnkgcmUtcmVuZGVycyB3aGVuIHVzZXJzIHVzZSBpbmxpbmUgaGFuZGxlcnMgb25cclxuICAgICAgICAvLyBjb21wb25lbnRzLlxyXG4gICAgICAgIHJldC5wcm9wc1swXS52YWx1ZSA9IGNvbnRleHQuY2FjaGUocmV0LnByb3BzWzBdLnZhbHVlKTtcclxuICAgIH1cclxuICAgIC8vIG1hcmsgdGhlIGtleSBhcyBoYW5kbGVyIGZvciBwcm9wcyBub3JtYWxpemF0aW9uIGNoZWNrXHJcbiAgICByZXQucHJvcHMuZm9yRWFjaChwID0+IChwLmtleS5pc0hhbmRsZXJLZXkgPSB0cnVlKSk7XHJcbiAgICByZXR1cm4gcmV0O1xyXG59O1xuXG4vLyB2LWJpbmQgd2l0aG91dCBhcmcgaXMgaGFuZGxlZCBkaXJlY3RseSBpbiAuL3RyYW5zZm9ybUVsZW1lbnRzLnRzIGR1ZSB0byBpdCBhZmZlY3RpbmdcclxuLy8gY29kZWdlbiBmb3IgdGhlIGVudGlyZSBwcm9wcyBvYmplY3QuIFRoaXMgdHJhbnNmb3JtIGhlcmUgaXMgb25seSBmb3Igdi1iaW5kXHJcbi8vICp3aXRoKiBhcmdzLlxyXG5jb25zdCB0cmFuc2Zvcm1CaW5kID0gKGRpciwgX25vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGNvbnN0IHsgZXhwLCBtb2RpZmllcnMsIGxvYyB9ID0gZGlyO1xyXG4gICAgY29uc3QgYXJnID0gZGlyLmFyZztcclxuICAgIGlmIChhcmcudHlwZSAhPT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICBhcmcuY2hpbGRyZW4udW5zaGlmdChgKGApO1xyXG4gICAgICAgIGFyZy5jaGlsZHJlbi5wdXNoKGApIHx8IFwiXCJgKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKCFhcmcuaXNTdGF0aWMpIHtcclxuICAgICAgICBhcmcuY29udGVudCA9IGAke2FyZy5jb250ZW50fSB8fCBcIlwiYDtcclxuICAgIH1cclxuICAgIC8vIC5zeW5jIGlzIHJlcGxhY2VkIGJ5IHYtbW9kZWw6YXJnXHJcbiAgICBpZiAobW9kaWZpZXJzLmluY2x1ZGVzKCdjYW1lbCcpKSB7XHJcbiAgICAgICAgaWYgKGFyZy50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICBpZiAoYXJnLmlzU3RhdGljKSB7XHJcbiAgICAgICAgICAgICAgICBhcmcuY29udGVudCA9IGNhbWVsaXplJDEoYXJnLmNvbnRlbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYXJnLmNvbnRlbnQgPSBgJHtjb250ZXh0LmhlbHBlclN0cmluZyhDQU1FTElaRSl9KCR7YXJnLmNvbnRlbnR9KWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGFyZy5jaGlsZHJlbi51bnNoaWZ0KGAke2NvbnRleHQuaGVscGVyU3RyaW5nKENBTUVMSVpFKX0oYCk7XHJcbiAgICAgICAgICAgIGFyZy5jaGlsZHJlbi5wdXNoKGApYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCFjb250ZXh0LmluU1NSKSB7XHJcbiAgICAgICAgaWYgKG1vZGlmaWVycy5pbmNsdWRlcygncHJvcCcpKSB7XHJcbiAgICAgICAgICAgIGluamVjdFByZWZpeChhcmcsICcuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChtb2RpZmllcnMuaW5jbHVkZXMoJ2F0dHInKSkge1xyXG4gICAgICAgICAgICBpbmplY3RQcmVmaXgoYXJnLCAnXicpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghZXhwIHx8XHJcbiAgICAgICAgKGV4cC50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyAmJiAhZXhwLmNvbnRlbnQudHJpbSgpKSkge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDM0IC8qIEVycm9yQ29kZXMuWF9WX0JJTkRfTk9fRVhQUkVTU0lPTiAqLywgbG9jKSk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcHJvcHM6IFtjcmVhdGVPYmplY3RQcm9wZXJ0eShhcmcsIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oJycsIHRydWUsIGxvYykpXVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHByb3BzOiBbY3JlYXRlT2JqZWN0UHJvcGVydHkoYXJnLCBleHApXVxyXG4gICAgfTtcclxufTtcclxuY29uc3QgaW5qZWN0UHJlZml4ID0gKGFyZywgcHJlZml4KSA9PiB7XHJcbiAgICBpZiAoYXJnLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgaWYgKGFyZy5pc1N0YXRpYykge1xyXG4gICAgICAgICAgICBhcmcuY29udGVudCA9IHByZWZpeCArIGFyZy5jb250ZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgYXJnLmNvbnRlbnQgPSBgXFxgJHtwcmVmaXh9XFwkeyR7YXJnLmNvbnRlbnR9fVxcYGA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgYXJnLmNoaWxkcmVuLnVuc2hpZnQoYCcke3ByZWZpeH0nICsgKGApO1xyXG4gICAgICAgIGFyZy5jaGlsZHJlbi5wdXNoKGApYCk7XHJcbiAgICB9XHJcbn07XG5cbi8vIE1lcmdlIGFkamFjZW50IHRleHQgbm9kZXMgYW5kIGV4cHJlc3Npb25zIGludG8gYSBzaW5nbGUgZXhwcmVzc2lvblxyXG4vLyBlLmcuIDxkaXY+YWJjIHt7IGQgfX0ge3sgZSB9fTwvZGl2PiBzaG91bGQgaGF2ZSBhIHNpbmdsZSBleHByZXNzaW9uIG5vZGUgYXMgY2hpbGQuXHJcbmNvbnN0IHRyYW5zZm9ybVRleHQgPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gMCAvKiBOb2RlVHlwZXMuUk9PVCAqLyB8fFxyXG4gICAgICAgIG5vZGUudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyB8fFxyXG4gICAgICAgIG5vZGUudHlwZSA9PT0gMTEgLyogTm9kZVR5cGVzLkZPUiAqLyB8fFxyXG4gICAgICAgIG5vZGUudHlwZSA9PT0gMTAgLyogTm9kZVR5cGVzLklGX0JSQU5DSCAqLykge1xyXG4gICAgICAgIC8vIHBlcmZvcm0gdGhlIHRyYW5zZm9ybSBvbiBub2RlIGV4aXQgc28gdGhhdCBhbGwgZXhwcmVzc2lvbnMgaGF2ZSBhbHJlYWR5XHJcbiAgICAgICAgLy8gYmVlbiBwcm9jZXNzZWQuXHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICBsZXQgY3VycmVudENvbnRhaW5lciA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgbGV0IGhhc1RleHQgPSBmYWxzZTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgICAgIGlmIChpc1RleHQoY2hpbGQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzVGV4dCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgY2hpbGRyZW4ubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IGNoaWxkcmVuW2pdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNUZXh0KG5leHQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRDb250YWluZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29udGFpbmVyID0gY2hpbGRyZW5baV0gPSBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW2NoaWxkXSwgY2hpbGQubG9jKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1lcmdlIGFkamFjZW50IHRleHQgbm9kZSBpbnRvIGN1cnJlbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb250YWluZXIuY2hpbGRyZW4ucHVzaChgICsgYCwgbmV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5zcGxpY2UoaiwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqLS07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29udGFpbmVyID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFoYXNUZXh0IHx8XHJcbiAgICAgICAgICAgICAgICAvLyBpZiB0aGlzIGlzIGEgcGxhaW4gZWxlbWVudCB3aXRoIGEgc2luZ2xlIHRleHQgY2hpbGQsIGxlYXZlIGl0XHJcbiAgICAgICAgICAgICAgICAvLyBhcy1pcyBzaW5jZSB0aGUgcnVudGltZSBoYXMgZGVkaWNhdGVkIGZhc3QgcGF0aCBmb3IgdGhpcyBieSBkaXJlY3RseVxyXG4gICAgICAgICAgICAgICAgLy8gc2V0dGluZyB0ZXh0Q29udGVudCBvZiB0aGUgZWxlbWVudC5cclxuICAgICAgICAgICAgICAgIC8vIGZvciBjb21wb25lbnQgcm9vdCBpdCdzIGFsd2F5cyBub3JtYWxpemVkIGFueXdheS5cclxuICAgICAgICAgICAgICAgIChjaGlsZHJlbi5sZW5ndGggPT09IDEgJiZcclxuICAgICAgICAgICAgICAgICAgICAobm9kZS50eXBlID09PSAwIC8qIE5vZGVUeXBlcy5ST09UICovIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUudGFnVHlwZSA9PT0gMCAvKiBFbGVtZW50VHlwZXMuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIzM3NTZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGN1c3RvbSBkaXJlY3RpdmVzIGNhbiBwb3RlbnRpYWxseSBhZGQgRE9NIGVsZW1lbnRzIGFyYml0cmFyaWx5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBhdm9pZCBzZXR0aW5nIHRleHRDb250ZW50IG9mIHRoZSBlbGVtZW50IGF0IHJ1bnRpbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGF2b2lkIGFjY2lkZW50YWxseSBvdmVyd3JpdGluZyB0aGUgRE9NIGVsZW1lbnRzIGFkZGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBieSB0aGUgdXNlciB0aHJvdWdoIGN1c3RvbSBkaXJlY3RpdmVzLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIW5vZGUucHJvcHMuZmluZChwID0+IHAudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWNvbnRleHQuZGlyZWN0aXZlVHJhbnNmb3Jtc1twLm5hbWVdKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gY29tcGF0IG1vZGUsIDx0ZW1wbGF0ZT4gdGFncyB3aXRoIG5vIHNwZWNpYWwgZGlyZWN0aXZlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBiZSByZW5kZXJlZCBhcyBhIGZyYWdtZW50IHNvIGl0cyBjaGlsZHJlbiBtdXN0IGJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb252ZXJ0ZWQgaW50byB2bm9kZXMuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhKG5vZGUudGFnID09PSAndGVtcGxhdGUnKSkpKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHByZS1jb252ZXJ0IHRleHQgbm9kZXMgaW50byBjcmVhdGVUZXh0Vk5vZGUodGV4dCkgY2FsbHMgdG8gYXZvaWRcclxuICAgICAgICAgICAgLy8gcnVudGltZSBub3JtYWxpemF0aW9uLlxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzVGV4dChjaGlsZCkgfHwgY2hpbGQudHlwZSA9PT0gOCAvKiBOb2RlVHlwZXMuQ09NUE9VTkRfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbGxBcmdzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY3JlYXRlVGV4dFZOb2RlIGRlZmF1bHRzIHRvIHNpbmdsZSB3aGl0ZXNwYWNlLCBzbyBpZiBpdCBpcyBhXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gc2luZ2xlIHNwYWNlIHRoZSBjb2RlIGNvdWxkIGJlIGFuIGVtcHR5IGNhbGwgdG8gc2F2ZSBieXRlcy5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQudHlwZSAhPT0gMiAvKiBOb2RlVHlwZXMuVEVYVCAqLyB8fCBjaGlsZC5jb250ZW50ICE9PSAnICcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbEFyZ3MucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIG1hcmsgZHluYW1pYyB0ZXh0IHdpdGggZmxhZyBzbyBpdCBnZXRzIHBhdGNoZWQgaW5zaWRlIGEgYmxvY2tcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQuc3NyICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldENvbnN0YW50VHlwZShjaGlsZCwgY29udGV4dCkgPT09IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbEFyZ3MucHVzaCgxIC8qIFBhdGNoRmxhZ3MuVEVYVCAqLyArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYCAvKiAke1BhdGNoRmxhZ05hbWVzWzEgLyogUGF0Y2hGbGFncy5URVhUICovXX0gKi9gIDogYGApKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5baV0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IDEyIC8qIE5vZGVUeXBlcy5URVhUX0NBTEwgKi8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGNoaWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2M6IGNoaWxkLmxvYyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZWdlbk5vZGU6IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKENSRUFURV9URVhUKSwgY2FsbEFyZ3MpXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn07XG5cbmNvbnN0IHNlZW4gPSBuZXcgV2Vha1NldCgpO1xyXG5jb25zdCB0cmFuc2Zvcm1PbmNlID0gKG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8gJiYgZmluZERpcihub2RlLCAnb25jZScsIHRydWUpKSB7XHJcbiAgICAgICAgaWYgKHNlZW4uaGFzKG5vZGUpIHx8IGNvbnRleHQuaW5WT25jZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNlZW4uYWRkKG5vZGUpO1xyXG4gICAgICAgIGNvbnRleHQuaW5WT25jZSA9IHRydWU7XHJcbiAgICAgICAgY29udGV4dC5oZWxwZXIoU0VUX0JMT0NLX1RSQUNLSU5HKTtcclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb250ZXh0LmluVk9uY2UgPSBmYWxzZTtcclxuICAgICAgICAgICAgY29uc3QgY3VyID0gY29udGV4dC5jdXJyZW50Tm9kZTtcclxuICAgICAgICAgICAgaWYgKGN1ci5jb2RlZ2VuTm9kZSkge1xyXG4gICAgICAgICAgICAgICAgY3VyLmNvZGVnZW5Ob2RlID0gY29udGV4dC5jYWNoZShjdXIuY29kZWdlbk5vZGUsIHRydWUgLyogaXNWTm9kZSAqLyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59O1xuXG5jb25zdCB0cmFuc2Zvcm1Nb2RlbCA9IChkaXIsIG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGNvbnN0IHsgZXhwLCBhcmcgfSA9IGRpcjtcclxuICAgIGlmICghZXhwKSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDEgLyogRXJyb3JDb2Rlcy5YX1ZfTU9ERUxfTk9fRVhQUkVTU0lPTiAqLywgZGlyLmxvYykpO1xyXG4gICAgICAgIHJldHVybiBjcmVhdGVUcmFuc2Zvcm1Qcm9wcygpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmF3RXhwID0gZXhwLmxvYy5zb3VyY2U7XHJcbiAgICBjb25zdCBleHBTdHJpbmcgPSBleHAudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8gPyBleHAuY29udGVudCA6IHJhd0V4cDtcclxuICAgIC8vIGltIFNGQyA8c2NyaXB0IHNldHVwPiBpbmxpbmUgbW9kZSwgdGhlIGV4cCBtYXkgaGF2ZSBiZWVuIHRyYW5zZm9ybWVkIGludG9cclxuICAgIC8vIF91bnJlZihleHApXHJcbiAgICBjb250ZXh0LmJpbmRpbmdNZXRhZGF0YVtyYXdFeHBdO1xyXG4gICAgY29uc3QgbWF5YmVSZWYgPSAhdHJ1ZSAgICAvKiBCaW5kaW5nVHlwZXMuU0VUVVBfQ09OU1QgKi87XHJcbiAgICBpZiAoIWV4cFN0cmluZy50cmltKCkgfHxcclxuICAgICAgICAoIWlzTWVtYmVyRXhwcmVzc2lvbihleHBTdHJpbmcpICYmICFtYXliZVJlZikpIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcig0MiAvKiBFcnJvckNvZGVzLlhfVl9NT0RFTF9NQUxGT1JNRURfRVhQUkVTU0lPTiAqLywgZXhwLmxvYykpO1xyXG4gICAgICAgIHJldHVybiBjcmVhdGVUcmFuc2Zvcm1Qcm9wcygpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcHJvcE5hbWUgPSBhcmcgPyBhcmcgOiBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCdtb2RlbFZhbHVlJywgdHJ1ZSk7XHJcbiAgICBjb25zdCBldmVudE5hbWUgPSBhcmdcclxuICAgICAgICA/IGlzU3RhdGljRXhwKGFyZylcclxuICAgICAgICAgICAgPyBgb25VcGRhdGU6JHthcmcuY29udGVudH1gXHJcbiAgICAgICAgICAgIDogY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFsnXCJvblVwZGF0ZTpcIiArICcsIGFyZ10pXHJcbiAgICAgICAgOiBgb25VcGRhdGU6bW9kZWxWYWx1ZWA7XHJcbiAgICBsZXQgYXNzaWdubWVudEV4cDtcclxuICAgIGNvbnN0IGV2ZW50QXJnID0gY29udGV4dC5pc1RTID8gYCgkZXZlbnQ6IGFueSlgIDogYCRldmVudGA7XHJcbiAgICB7XHJcbiAgICAgICAgYXNzaWdubWVudEV4cCA9IGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbXHJcbiAgICAgICAgICAgIGAke2V2ZW50QXJnfSA9PiAoKGAsXHJcbiAgICAgICAgICAgIGV4cCxcclxuICAgICAgICAgICAgYCkgPSAkZXZlbnQpYFxyXG4gICAgICAgIF0pO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcHJvcHMgPSBbXHJcbiAgICAgICAgLy8gbW9kZWxWYWx1ZTogZm9vXHJcbiAgICAgICAgY3JlYXRlT2JqZWN0UHJvcGVydHkocHJvcE5hbWUsIGRpci5leHApLFxyXG4gICAgICAgIC8vIFwib25VcGRhdGU6bW9kZWxWYWx1ZVwiOiAkZXZlbnQgPT4gKGZvbyA9ICRldmVudClcclxuICAgICAgICBjcmVhdGVPYmplY3RQcm9wZXJ0eShldmVudE5hbWUsIGFzc2lnbm1lbnRFeHApXHJcbiAgICBdO1xyXG4gICAgLy8gbW9kZWxNb2RpZmllcnM6IHsgZm9vOiB0cnVlLCBcImJhci1iYXpcIjogdHJ1ZSB9XHJcbiAgICBpZiAoZGlyLm1vZGlmaWVycy5sZW5ndGggJiYgbm9kZS50YWdUeXBlID09PSAxIC8qIEVsZW1lbnRUeXBlcy5DT01QT05FTlQgKi8pIHtcclxuICAgICAgICBjb25zdCBtb2RpZmllcnMgPSBkaXIubW9kaWZpZXJzXHJcbiAgICAgICAgICAgIC5tYXAobSA9PiAoaXNTaW1wbGVJZGVudGlmaWVyKG0pID8gbSA6IEpTT04uc3RyaW5naWZ5KG0pKSArIGA6IHRydWVgKVxyXG4gICAgICAgICAgICAuam9pbihgLCBgKTtcclxuICAgICAgICBjb25zdCBtb2RpZmllcnNLZXkgPSBhcmdcclxuICAgICAgICAgICAgPyBpc1N0YXRpY0V4cChhcmcpXHJcbiAgICAgICAgICAgICAgICA/IGAke2FyZy5jb250ZW50fU1vZGlmaWVyc2BcclxuICAgICAgICAgICAgICAgIDogY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFthcmcsICcgKyBcIk1vZGlmaWVyc1wiJ10pXHJcbiAgICAgICAgICAgIDogYG1vZGVsTW9kaWZpZXJzYDtcclxuICAgICAgICBwcm9wcy5wdXNoKGNyZWF0ZU9iamVjdFByb3BlcnR5KG1vZGlmaWVyc0tleSwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgeyAke21vZGlmaWVyc30gfWAsIGZhbHNlLCBkaXIubG9jLCAyIC8qIENvbnN0YW50VHlwZXMuQ0FOX0hPSVNUICovKSkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNyZWF0ZVRyYW5zZm9ybVByb3BzKHByb3BzKTtcclxufTtcclxuZnVuY3Rpb24gY3JlYXRlVHJhbnNmb3JtUHJvcHMocHJvcHMgPSBbXSkge1xyXG4gICAgcmV0dXJuIHsgcHJvcHMgfTtcclxufVxuXG5jb25zdCB2YWxpZERpdmlzaW9uQ2hhclJFID0gL1tcXHcpLitcXC1fJFxcXV0vO1xyXG5jb25zdCB0cmFuc2Zvcm1GaWx0ZXIgPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgaWYgKCFpc0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9GSUxURVJcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfRklMVEVSUyAqLywgY29udGV4dCkpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAobm9kZS50eXBlID09PSA1IC8qIE5vZGVUeXBlcy5JTlRFUlBPTEFUSU9OICovKSB7XHJcbiAgICAgICAgLy8gZmlsdGVyIHJld3JpdGUgaXMgYXBwbGllZCBiZWZvcmUgZXhwcmVzc2lvbiB0cmFuc2Zvcm0gc28gb25seVxyXG4gICAgICAgIC8vIHNpbXBsZSBleHByZXNzaW9ucyBhcmUgcG9zc2libGUgYXQgdGhpcyBzdGFnZVxyXG4gICAgICAgIHJld3JpdGVGaWx0ZXIobm9kZS5jb250ZW50LCBjb250ZXh0KTtcclxuICAgIH1cclxuICAgIGlmIChub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8pIHtcclxuICAgICAgICBub2RlLnByb3BzLmZvckVhY2goKHByb3ApID0+IHtcclxuICAgICAgICAgICAgaWYgKHByb3AudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovICYmXHJcbiAgICAgICAgICAgICAgICBwcm9wLm5hbWUgIT09ICdmb3InICYmXHJcbiAgICAgICAgICAgICAgICBwcm9wLmV4cCkge1xyXG4gICAgICAgICAgICAgICAgcmV3cml0ZUZpbHRlcihwcm9wLmV4cCwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxufTtcclxuZnVuY3Rpb24gcmV3cml0ZUZpbHRlcihub2RlLCBjb250ZXh0KSB7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgIHBhcnNlRmlsdGVyKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjaGlsZCAhPT0gJ29iamVjdCcpXHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJzZUZpbHRlcihjaGlsZCwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQudHlwZSA9PT0gOCAvKiBOb2RlVHlwZXMuQ09NUE9VTkRfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICAgICAgcmV3cml0ZUZpbHRlcihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChjaGlsZC50eXBlID09PSA1IC8qIE5vZGVUeXBlcy5JTlRFUlBPTEFUSU9OICovKSB7XHJcbiAgICAgICAgICAgICAgICByZXdyaXRlRmlsdGVyKGNoaWxkLmNvbnRlbnQsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHBhcnNlRmlsdGVyKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IGV4cCA9IG5vZGUuY29udGVudDtcclxuICAgIGxldCBpblNpbmdsZSA9IGZhbHNlO1xyXG4gICAgbGV0IGluRG91YmxlID0gZmFsc2U7XHJcbiAgICBsZXQgaW5UZW1wbGF0ZVN0cmluZyA9IGZhbHNlO1xyXG4gICAgbGV0IGluUmVnZXggPSBmYWxzZTtcclxuICAgIGxldCBjdXJseSA9IDA7XHJcbiAgICBsZXQgc3F1YXJlID0gMDtcclxuICAgIGxldCBwYXJlbiA9IDA7XHJcbiAgICBsZXQgbGFzdEZpbHRlckluZGV4ID0gMDtcclxuICAgIGxldCBjLCBwcmV2LCBpLCBleHByZXNzaW9uLCBmaWx0ZXJzID0gW107XHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgZXhwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgcHJldiA9IGM7XHJcbiAgICAgICAgYyA9IGV4cC5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICAgIGlmIChpblNpbmdsZSkge1xyXG4gICAgICAgICAgICBpZiAoYyA9PT0gMHgyNyAmJiBwcmV2ICE9PSAweDVjKVxyXG4gICAgICAgICAgICAgICAgaW5TaW5nbGUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaW5Eb3VibGUpIHtcclxuICAgICAgICAgICAgaWYgKGMgPT09IDB4MjIgJiYgcHJldiAhPT0gMHg1YylcclxuICAgICAgICAgICAgICAgIGluRG91YmxlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGluVGVtcGxhdGVTdHJpbmcpIHtcclxuICAgICAgICAgICAgaWYgKGMgPT09IDB4NjAgJiYgcHJldiAhPT0gMHg1YylcclxuICAgICAgICAgICAgICAgIGluVGVtcGxhdGVTdHJpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaW5SZWdleCkge1xyXG4gICAgICAgICAgICBpZiAoYyA9PT0gMHgyZiAmJiBwcmV2ICE9PSAweDVjKVxyXG4gICAgICAgICAgICAgICAgaW5SZWdleCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChjID09PSAweDdjICYmIC8vIHBpcGVcclxuICAgICAgICAgICAgZXhwLmNoYXJDb2RlQXQoaSArIDEpICE9PSAweDdjICYmXHJcbiAgICAgICAgICAgIGV4cC5jaGFyQ29kZUF0KGkgLSAxKSAhPT0gMHg3YyAmJlxyXG4gICAgICAgICAgICAhY3VybHkgJiZcclxuICAgICAgICAgICAgIXNxdWFyZSAmJlxyXG4gICAgICAgICAgICAhcGFyZW4pIHtcclxuICAgICAgICAgICAgaWYgKGV4cHJlc3Npb24gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gZmlyc3QgZmlsdGVyLCBlbmQgb2YgZXhwcmVzc2lvblxyXG4gICAgICAgICAgICAgICAgbGFzdEZpbHRlckluZGV4ID0gaSArIDE7XHJcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uID0gZXhwLnNsaWNlKDAsIGkpLnRyaW0oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHB1c2hGaWx0ZXIoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgc3dpdGNoIChjKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDB4MjI6XHJcbiAgICAgICAgICAgICAgICAgICAgaW5Eb3VibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBcIlxyXG4gICAgICAgICAgICAgICAgY2FzZSAweDI3OlxyXG4gICAgICAgICAgICAgICAgICAgIGluU2luZ2xlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gJ1xyXG4gICAgICAgICAgICAgICAgY2FzZSAweDYwOlxyXG4gICAgICAgICAgICAgICAgICAgIGluVGVtcGxhdGVTdHJpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBgXHJcbiAgICAgICAgICAgICAgICBjYXNlIDB4Mjg6XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyZW4rKztcclxuICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gKFxyXG4gICAgICAgICAgICAgICAgY2FzZSAweDI5OlxyXG4gICAgICAgICAgICAgICAgICAgIHBhcmVuLS07XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIClcclxuICAgICAgICAgICAgICAgIGNhc2UgMHg1YjpcclxuICAgICAgICAgICAgICAgICAgICBzcXVhcmUrKztcclxuICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gW1xyXG4gICAgICAgICAgICAgICAgY2FzZSAweDVkOlxyXG4gICAgICAgICAgICAgICAgICAgIHNxdWFyZS0tO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBdXHJcbiAgICAgICAgICAgICAgICBjYXNlIDB4N2I6XHJcbiAgICAgICAgICAgICAgICAgICAgY3VybHkrKztcclxuICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8ge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAweDdkOlxyXG4gICAgICAgICAgICAgICAgICAgIGN1cmx5LS07XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYyA9PT0gMHgyZikge1xyXG4gICAgICAgICAgICAgICAgLy8gL1xyXG4gICAgICAgICAgICAgICAgbGV0IGogPSBpIC0gMTtcclxuICAgICAgICAgICAgICAgIGxldCBwO1xyXG4gICAgICAgICAgICAgICAgLy8gZmluZCBmaXJzdCBub24td2hpdGVzcGFjZSBwcmV2IGNoYXJcclxuICAgICAgICAgICAgICAgIGZvciAoOyBqID49IDA7IGotLSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHAgPSBleHAuY2hhckF0KGopO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwICE9PSAnICcpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFwIHx8ICF2YWxpZERpdmlzaW9uQ2hhclJFLnRlc3QocCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpblJlZ2V4ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChleHByZXNzaW9uID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBleHByZXNzaW9uID0gZXhwLnNsaWNlKDAsIGkpLnRyaW0oKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGxhc3RGaWx0ZXJJbmRleCAhPT0gMCkge1xyXG4gICAgICAgIHB1c2hGaWx0ZXIoKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHB1c2hGaWx0ZXIoKSB7XHJcbiAgICAgICAgZmlsdGVycy5wdXNoKGV4cC5zbGljZShsYXN0RmlsdGVySW5kZXgsIGkpLnRyaW0oKSk7XHJcbiAgICAgICAgbGFzdEZpbHRlckluZGV4ID0gaSArIDE7XHJcbiAgICB9XHJcbiAgICBpZiAoZmlsdGVycy5sZW5ndGgpIHtcclxuICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgd2FybkRlcHJlY2F0aW9uKFwiQ09NUElMRVJfRklMVEVSXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX0ZJTFRFUlMgKi8sIGNvbnRleHQsIG5vZGUubG9jKTtcclxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZmlsdGVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBleHByZXNzaW9uID0gd3JhcEZpbHRlcihleHByZXNzaW9uLCBmaWx0ZXJzW2ldLCBjb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbm9kZS5jb250ZW50ID0gZXhwcmVzc2lvbjtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB3cmFwRmlsdGVyKGV4cCwgZmlsdGVyLCBjb250ZXh0KSB7XHJcbiAgICBjb250ZXh0LmhlbHBlcihSRVNPTFZFX0ZJTFRFUik7XHJcbiAgICBjb25zdCBpID0gZmlsdGVyLmluZGV4T2YoJygnKTtcclxuICAgIGlmIChpIDwgMCkge1xyXG4gICAgICAgIGNvbnRleHQuZmlsdGVycy5hZGQoZmlsdGVyKTtcclxuICAgICAgICByZXR1cm4gYCR7dG9WYWxpZEFzc2V0SWQoZmlsdGVyLCAnZmlsdGVyJyl9KCR7ZXhwfSlgO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IGZpbHRlci5zbGljZSgwLCBpKTtcclxuICAgICAgICBjb25zdCBhcmdzID0gZmlsdGVyLnNsaWNlKGkgKyAxKTtcclxuICAgICAgICBjb250ZXh0LmZpbHRlcnMuYWRkKG5hbWUpO1xyXG4gICAgICAgIHJldHVybiBgJHt0b1ZhbGlkQXNzZXRJZChuYW1lLCAnZmlsdGVyJyl9KCR7ZXhwfSR7YXJncyAhPT0gJyknID8gJywnICsgYXJncyA6IGFyZ3N9YDtcclxuICAgIH1cclxufVxuXG5jb25zdCBzZWVuJDEgPSBuZXcgV2Vha1NldCgpO1xyXG5jb25zdCB0cmFuc2Zvcm1NZW1vID0gKG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8pIHtcclxuICAgICAgICBjb25zdCBkaXIgPSBmaW5kRGlyKG5vZGUsICdtZW1vJyk7XHJcbiAgICAgICAgaWYgKCFkaXIgfHwgc2VlbiQxLmhhcyhub2RlKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNlZW4kMS5hZGQobm9kZSk7XHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY29kZWdlbk5vZGUgPSBub2RlLmNvZGVnZW5Ob2RlIHx8XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmN1cnJlbnROb2RlLmNvZGVnZW5Ob2RlO1xyXG4gICAgICAgICAgICBpZiAoY29kZWdlbk5vZGUgJiYgY29kZWdlbk5vZGUudHlwZSA9PT0gMTMgLyogTm9kZVR5cGVzLlZOT0RFX0NBTEwgKi8pIHtcclxuICAgICAgICAgICAgICAgIC8vIG5vbi1jb21wb25lbnQgc3ViIHRyZWUgc2hvdWxkIGJlIHR1cm5lZCBpbnRvIGEgYmxvY2tcclxuICAgICAgICAgICAgICAgIGlmIChub2RlLnRhZ1R5cGUgIT09IDEgLyogRWxlbWVudFR5cGVzLkNPTVBPTkVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIG1ha2VCbG9jayhjb2RlZ2VuTm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBub2RlLmNvZGVnZW5Ob2RlID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoV0lUSF9NRU1PKSwgW1xyXG4gICAgICAgICAgICAgICAgICAgIGRpci5leHAsXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKHVuZGVmaW5lZCwgY29kZWdlbk5vZGUpLFxyXG4gICAgICAgICAgICAgICAgICAgIGBfY2FjaGVgLFxyXG4gICAgICAgICAgICAgICAgICAgIFN0cmluZyhjb250ZXh0LmNhY2hlZCsrKVxyXG4gICAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59O1xuXG5mdW5jdGlvbiBnZXRCYXNlVHJhbnNmb3JtUHJlc2V0KHByZWZpeElkZW50aWZpZXJzKSB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICAgIFtcclxuICAgICAgICAgICAgdHJhbnNmb3JtT25jZSxcclxuICAgICAgICAgICAgdHJhbnNmb3JtSWYsXHJcbiAgICAgICAgICAgIHRyYW5zZm9ybU1lbW8sXHJcbiAgICAgICAgICAgIHRyYW5zZm9ybUZvcixcclxuICAgICAgICAgICAgLi4uKFt0cmFuc2Zvcm1GaWx0ZXJdICksXHJcbiAgICAgICAgICAgIC4uLigocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICAgICAgICAgICAgICA/IFt0cmFuc2Zvcm1FeHByZXNzaW9uXVxyXG4gICAgICAgICAgICAgICAgICAgIDogW10pLFxyXG4gICAgICAgICAgICB0cmFuc2Zvcm1TbG90T3V0bGV0LFxyXG4gICAgICAgICAgICB0cmFuc2Zvcm1FbGVtZW50LFxyXG4gICAgICAgICAgICB0cmFja1Nsb3RTY29wZXMsXHJcbiAgICAgICAgICAgIHRyYW5zZm9ybVRleHRcclxuICAgICAgICBdLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgb246IHRyYW5zZm9ybU9uLFxyXG4gICAgICAgICAgICBiaW5kOiB0cmFuc2Zvcm1CaW5kLFxyXG4gICAgICAgICAgICBtb2RlbDogdHJhbnNmb3JtTW9kZWxcclxuICAgICAgICB9XHJcbiAgICBdO1xyXG59XHJcbi8vIHdlIG5hbWUgaXQgYGJhc2VDb21waWxlYCBzbyB0aGF0IGhpZ2hlciBvcmRlciBjb21waWxlcnMgbGlrZVxyXG4vLyBAdnVlL2NvbXBpbGVyLWRvbSBjYW4gZXhwb3J0IGBjb21waWxlYCB3aGlsZSByZS1leHBvcnRpbmcgZXZlcnl0aGluZyBlbHNlLlxyXG5mdW5jdGlvbiBiYXNlQ29tcGlsZSh0ZW1wbGF0ZSwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICBjb25zdCBvbkVycm9yID0gb3B0aW9ucy5vbkVycm9yIHx8IGRlZmF1bHRPbkVycm9yO1xyXG4gICAgY29uc3QgaXNNb2R1bGVNb2RlID0gb3B0aW9ucy5tb2RlID09PSAnbW9kdWxlJztcclxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xyXG4gICAge1xyXG4gICAgICAgIGlmIChvcHRpb25zLnByZWZpeElkZW50aWZpZXJzID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIG9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcig0NiAvKiBFcnJvckNvZGVzLlhfUFJFRklYX0lEX05PVF9TVVBQT1JURUQgKi8pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaXNNb2R1bGVNb2RlKSB7XHJcbiAgICAgICAgICAgIG9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcig0NyAvKiBFcnJvckNvZGVzLlhfTU9EVUxFX01PREVfTk9UX1NVUFBPUlRFRCAqLykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHByZWZpeElkZW50aWZpZXJzID0gIXRydWUgO1xyXG4gICAgaWYgKG9wdGlvbnMuY2FjaGVIYW5kbGVycykge1xyXG4gICAgICAgIG9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcig0OCAvKiBFcnJvckNvZGVzLlhfQ0FDSEVfSEFORExFUl9OT1RfU1VQUE9SVEVEICovKSk7XHJcbiAgICB9XHJcbiAgICBpZiAob3B0aW9ucy5zY29wZUlkICYmICFpc01vZHVsZU1vZGUpIHtcclxuICAgICAgICBvbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDkgLyogRXJyb3JDb2Rlcy5YX1NDT1BFX0lEX05PVF9TVVBQT1JURUQgKi8pKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGFzdCA9IGlzU3RyaW5nKHRlbXBsYXRlKSA/IGJhc2VQYXJzZSh0ZW1wbGF0ZSwgb3B0aW9ucykgOiB0ZW1wbGF0ZTtcclxuICAgIGNvbnN0IFtub2RlVHJhbnNmb3JtcywgZGlyZWN0aXZlVHJhbnNmb3Jtc10gPSBnZXRCYXNlVHJhbnNmb3JtUHJlc2V0KCk7XHJcbiAgICB0cmFuc2Zvcm0oYXN0LCBleHRlbmQoe30sIG9wdGlvbnMsIHtcclxuICAgICAgICBwcmVmaXhJZGVudGlmaWVycyxcclxuICAgICAgICBub2RlVHJhbnNmb3JtczogW1xyXG4gICAgICAgICAgICAuLi5ub2RlVHJhbnNmb3JtcyxcclxuICAgICAgICAgICAgLi4uKG9wdGlvbnMubm9kZVRyYW5zZm9ybXMgfHwgW10pIC8vIHVzZXIgdHJhbnNmb3Jtc1xyXG4gICAgICAgIF0sXHJcbiAgICAgICAgZGlyZWN0aXZlVHJhbnNmb3JtczogZXh0ZW5kKHt9LCBkaXJlY3RpdmVUcmFuc2Zvcm1zLCBvcHRpb25zLmRpcmVjdGl2ZVRyYW5zZm9ybXMgfHwge30gLy8gdXNlciB0cmFuc2Zvcm1zXHJcbiAgICAgICAgKVxyXG4gICAgfSkpO1xyXG4gICAgcmV0dXJuIGdlbmVyYXRlKGFzdCwgZXh0ZW5kKHt9LCBvcHRpb25zLCB7XHJcbiAgICAgICAgcHJlZml4SWRlbnRpZmllcnNcclxuICAgIH0pKTtcclxufVxuXG5jb25zdCBub29wRGlyZWN0aXZlVHJhbnNmb3JtID0gKCkgPT4gKHsgcHJvcHM6IFtdIH0pO1xuXG5leHBvcnQgeyBCQVNFX1RSQU5TSVRJT04sIENBTUVMSVpFLCBDQVBJVEFMSVpFLCBDUkVBVEVfQkxPQ0ssIENSRUFURV9DT01NRU5ULCBDUkVBVEVfRUxFTUVOVF9CTE9DSywgQ1JFQVRFX0VMRU1FTlRfVk5PREUsIENSRUFURV9TTE9UUywgQ1JFQVRFX1NUQVRJQywgQ1JFQVRFX1RFWFQsIENSRUFURV9WTk9ERSwgRlJBR01FTlQsIEdVQVJEX1JFQUNUSVZFX1BST1BTLCBJU19NRU1PX1NBTUUsIElTX1JFRiwgS0VFUF9BTElWRSwgTUVSR0VfUFJPUFMsIE5PUk1BTElaRV9DTEFTUywgTk9STUFMSVpFX1BST1BTLCBOT1JNQUxJWkVfU1RZTEUsIE9QRU5fQkxPQ0ssIFBPUF9TQ09QRV9JRCwgUFVTSF9TQ09QRV9JRCwgUkVOREVSX0xJU1QsIFJFTkRFUl9TTE9ULCBSRVNPTFZFX0NPTVBPTkVOVCwgUkVTT0xWRV9ESVJFQ1RJVkUsIFJFU09MVkVfRFlOQU1JQ19DT01QT05FTlQsIFJFU09MVkVfRklMVEVSLCBTRVRfQkxPQ0tfVFJBQ0tJTkcsIFNVU1BFTlNFLCBURUxFUE9SVCwgVE9fRElTUExBWV9TVFJJTkcsIFRPX0hBTkRMRVJTLCBUT19IQU5ETEVSX0tFWSwgVU5SRUYsIFdJVEhfQ1RYLCBXSVRIX0RJUkVDVElWRVMsIFdJVEhfTUVNTywgYWR2YW5jZVBvc2l0aW9uV2l0aENsb25lLCBhZHZhbmNlUG9zaXRpb25XaXRoTXV0YXRpb24sIGFzc2VydCwgYmFzZUNvbXBpbGUsIGJhc2VQYXJzZSwgYnVpbGREaXJlY3RpdmVBcmdzLCBidWlsZFByb3BzLCBidWlsZFNsb3RzLCBjaGVja0NvbXBhdEVuYWJsZWQsIGNyZWF0ZUFycmF5RXhwcmVzc2lvbiwgY3JlYXRlQXNzaWdubWVudEV4cHJlc3Npb24sIGNyZWF0ZUJsb2NrU3RhdGVtZW50LCBjcmVhdGVDYWNoZUV4cHJlc3Npb24sIGNyZWF0ZUNhbGxFeHByZXNzaW9uLCBjcmVhdGVDb21waWxlckVycm9yLCBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24sIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbiwgY3JlYXRlRm9yTG9vcFBhcmFtcywgY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uLCBjcmVhdGVJZlN0YXRlbWVudCwgY3JlYXRlSW50ZXJwb2xhdGlvbiwgY3JlYXRlT2JqZWN0RXhwcmVzc2lvbiwgY3JlYXRlT2JqZWN0UHJvcGVydHksIGNyZWF0ZVJldHVyblN0YXRlbWVudCwgY3JlYXRlUm9vdCwgY3JlYXRlU2VxdWVuY2VFeHByZXNzaW9uLCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uLCBjcmVhdGVTdHJ1Y3R1cmFsRGlyZWN0aXZlVHJhbnNmb3JtLCBjcmVhdGVUZW1wbGF0ZUxpdGVyYWwsIGNyZWF0ZVRyYW5zZm9ybUNvbnRleHQsIGNyZWF0ZVZOb2RlQ2FsbCwgZXh0cmFjdElkZW50aWZpZXJzLCBmaW5kRGlyLCBmaW5kUHJvcCwgZ2VuZXJhdGUsIGdldEJhc2VUcmFuc2Zvcm1QcmVzZXQsIGdldENvbnN0YW50VHlwZSwgZ2V0SW5uZXJSYW5nZSwgZ2V0TWVtb2VkVk5vZGVDYWxsLCBnZXRWTm9kZUJsb2NrSGVscGVyLCBnZXRWTm9kZUhlbHBlciwgaGFzRHluYW1pY0tleVZCaW5kLCBoYXNTY29wZVJlZiwgaGVscGVyTmFtZU1hcCwgaW5qZWN0UHJvcCwgaXNCdWlsdEluVHlwZSwgaXNDb3JlQ29tcG9uZW50LCBpc0Z1bmN0aW9uVHlwZSwgaXNJbkRlc3RydWN0dXJlQXNzaWdubWVudCwgaXNNZW1iZXJFeHByZXNzaW9uLCBpc01lbWJlckV4cHJlc3Npb25Ccm93c2VyLCBpc01lbWJlckV4cHJlc3Npb25Ob2RlLCBpc1JlZmVyZW5jZWRJZGVudGlmaWVyLCBpc1NpbXBsZUlkZW50aWZpZXIsIGlzU2xvdE91dGxldCwgaXNTdGF0aWNBcmdPZiwgaXNTdGF0aWNFeHAsIGlzU3RhdGljUHJvcGVydHksIGlzU3RhdGljUHJvcGVydHlLZXksIGlzVGVtcGxhdGVOb2RlLCBpc1RleHQsIGlzVlNsb3QsIGxvY1N0dWIsIG1ha2VCbG9jaywgbm9vcERpcmVjdGl2ZVRyYW5zZm9ybSwgcHJvY2Vzc0V4cHJlc3Npb24sIHByb2Nlc3NGb3IsIHByb2Nlc3NJZiwgcHJvY2Vzc1Nsb3RPdXRsZXQsIHJlZ2lzdGVyUnVudGltZUhlbHBlcnMsIHJlc29sdmVDb21wb25lbnRUeXBlLCB0b1ZhbGlkQXNzZXRJZCwgdHJhY2tTbG90U2NvcGVzLCB0cmFja1ZGb3JTbG90U2NvcGVzLCB0cmFuc2Zvcm0sIHRyYW5zZm9ybUJpbmQsIHRyYW5zZm9ybUVsZW1lbnQsIHRyYW5zZm9ybUV4cHJlc3Npb24sIHRyYW5zZm9ybU1vZGVsLCB0cmFuc2Zvcm1PbiwgdHJhdmVyc2VOb2RlLCB3YWxrQmxvY2tEZWNsYXJhdGlvbnMsIHdhbGtGdW5jdGlvblBhcmFtcywgd2Fsa0lkZW50aWZpZXJzLCB3YXJuRGVwcmVjYXRpb24gfTtcbiIsImltcG9ydCB7IHJlZ2lzdGVyUnVudGltZUhlbHBlcnMsIGlzQnVpbHRJblR5cGUsIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24sIGNyZWF0ZUNvbXBpbGVyRXJyb3IsIGNyZWF0ZU9iamVjdFByb3BlcnR5LCBnZXRDb25zdGFudFR5cGUsIGNyZWF0ZUNhbGxFeHByZXNzaW9uLCBUT19ESVNQTEFZX1NUUklORywgdHJhbnNmb3JtTW9kZWwgYXMgdHJhbnNmb3JtTW9kZWwkMSwgZmluZFByb3AsIGhhc0R5bmFtaWNLZXlWQmluZCwgdHJhbnNmb3JtT24gYXMgdHJhbnNmb3JtT24kMSwgY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uLCBpc1N0YXRpY0V4cCwgY2hlY2tDb21wYXRFbmFibGVkLCBub29wRGlyZWN0aXZlVHJhbnNmb3JtLCBiYXNlQ29tcGlsZSwgYmFzZVBhcnNlIH0gZnJvbSAnQHZ1ZS9jb21waWxlci1jb3JlJztcbmV4cG9ydCAqIGZyb20gJ0B2dWUvY29tcGlsZXItY29yZSc7XG5pbXBvcnQgeyBpc1ZvaWRUYWcsIGlzSFRNTFRhZywgaXNTVkdUYWcsIG1ha2VNYXAsIHBhcnNlU3RyaW5nU3R5bGUsIGNhcGl0YWxpemUsIGV4dGVuZCB9IGZyb20gJ0B2dWUvc2hhcmVkJztcblxuY29uc3QgVl9NT0RFTF9SQURJTyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgdk1vZGVsUmFkaW9gIDogYGApO1xyXG5jb25zdCBWX01PREVMX0NIRUNLQk9YID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB2TW9kZWxDaGVja2JveGAgOiBgYCk7XHJcbmNvbnN0IFZfTU9ERUxfVEVYVCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgdk1vZGVsVGV4dGAgOiBgYCk7XHJcbmNvbnN0IFZfTU9ERUxfU0VMRUNUID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB2TW9kZWxTZWxlY3RgIDogYGApO1xyXG5jb25zdCBWX01PREVMX0RZTkFNSUMgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHZNb2RlbER5bmFtaWNgIDogYGApO1xyXG5jb25zdCBWX09OX1dJVEhfTU9ESUZJRVJTID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB2T25Nb2RpZmllcnNHdWFyZGAgOiBgYCk7XHJcbmNvbnN0IFZfT05fV0lUSF9LRVlTID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB2T25LZXlzR3VhcmRgIDogYGApO1xyXG5jb25zdCBWX1NIT1cgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHZTaG93YCA6IGBgKTtcclxuY29uc3QgVFJBTlNJVElPTiA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgVHJhbnNpdGlvbmAgOiBgYCk7XHJcbmNvbnN0IFRSQU5TSVRJT05fR1JPVVAgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYFRyYW5zaXRpb25Hcm91cGAgOiBgYCk7XHJcbnJlZ2lzdGVyUnVudGltZUhlbHBlcnMoe1xyXG4gICAgW1ZfTU9ERUxfUkFESU9dOiBgdk1vZGVsUmFkaW9gLFxyXG4gICAgW1ZfTU9ERUxfQ0hFQ0tCT1hdOiBgdk1vZGVsQ2hlY2tib3hgLFxyXG4gICAgW1ZfTU9ERUxfVEVYVF06IGB2TW9kZWxUZXh0YCxcclxuICAgIFtWX01PREVMX1NFTEVDVF06IGB2TW9kZWxTZWxlY3RgLFxyXG4gICAgW1ZfTU9ERUxfRFlOQU1JQ106IGB2TW9kZWxEeW5hbWljYCxcclxuICAgIFtWX09OX1dJVEhfTU9ESUZJRVJTXTogYHdpdGhNb2RpZmllcnNgLFxyXG4gICAgW1ZfT05fV0lUSF9LRVlTXTogYHdpdGhLZXlzYCxcclxuICAgIFtWX1NIT1ddOiBgdlNob3dgLFxyXG4gICAgW1RSQU5TSVRJT05dOiBgVHJhbnNpdGlvbmAsXHJcbiAgICBbVFJBTlNJVElPTl9HUk9VUF06IGBUcmFuc2l0aW9uR3JvdXBgXHJcbn0pO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgKi9cclxubGV0IGRlY29kZXI7XHJcbmZ1bmN0aW9uIGRlY29kZUh0bWxCcm93c2VyKHJhdywgYXNBdHRyID0gZmFsc2UpIHtcclxuICAgIGlmICghZGVjb2Rlcikge1xyXG4gICAgICAgIGRlY29kZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIH1cclxuICAgIGlmIChhc0F0dHIpIHtcclxuICAgICAgICBkZWNvZGVyLmlubmVySFRNTCA9IGA8ZGl2IGZvbz1cIiR7cmF3LnJlcGxhY2UoL1wiL2csICcmcXVvdDsnKX1cIj5gO1xyXG4gICAgICAgIHJldHVybiBkZWNvZGVyLmNoaWxkcmVuWzBdLmdldEF0dHJpYnV0ZSgnZm9vJyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBkZWNvZGVyLmlubmVySFRNTCA9IHJhdztcclxuICAgICAgICByZXR1cm4gZGVjb2Rlci50ZXh0Q29udGVudDtcclxuICAgIH1cclxufVxuXG5jb25zdCBpc1Jhd1RleHRDb250YWluZXIgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoJ3N0eWxlLGlmcmFtZSxzY3JpcHQsbm9zY3JpcHQnLCB0cnVlKTtcclxuY29uc3QgcGFyc2VyT3B0aW9ucyA9IHtcclxuICAgIGlzVm9pZFRhZyxcclxuICAgIGlzTmF0aXZlVGFnOiB0YWcgPT4gaXNIVE1MVGFnKHRhZykgfHwgaXNTVkdUYWcodGFnKSxcclxuICAgIGlzUHJlVGFnOiB0YWcgPT4gdGFnID09PSAncHJlJyxcclxuICAgIGRlY29kZUVudGl0aWVzOiBkZWNvZGVIdG1sQnJvd3NlciAsXHJcbiAgICBpc0J1aWx0SW5Db21wb25lbnQ6ICh0YWcpID0+IHtcclxuICAgICAgICBpZiAoaXNCdWlsdEluVHlwZSh0YWcsIGBUcmFuc2l0aW9uYCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFRSQU5TSVRJT047XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlzQnVpbHRJblR5cGUodGFnLCBgVHJhbnNpdGlvbkdyb3VwYCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFRSQU5TSVRJT05fR1JPVVA7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCN0cmVlLWNvbnN0cnVjdGlvbi1kaXNwYXRjaGVyXHJcbiAgICBnZXROYW1lc3BhY2UodGFnLCBwYXJlbnQpIHtcclxuICAgICAgICBsZXQgbnMgPSBwYXJlbnQgPyBwYXJlbnQubnMgOiAwIC8qIERPTU5hbWVzcGFjZXMuSFRNTCAqLztcclxuICAgICAgICBpZiAocGFyZW50ICYmIG5zID09PSAyIC8qIERPTU5hbWVzcGFjZXMuTUFUSF9NTCAqLykge1xyXG4gICAgICAgICAgICBpZiAocGFyZW50LnRhZyA9PT0gJ2Fubm90YXRpb24teG1sJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRhZyA9PT0gJ3N2ZycpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMSAvKiBET01OYW1lc3BhY2VzLlNWRyAqLztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChwYXJlbnQucHJvcHMuc29tZShhID0+IGEudHlwZSA9PT0gNiAvKiBOb2RlVHlwZXMuQVRUUklCVVRFICovICYmXHJcbiAgICAgICAgICAgICAgICAgICAgYS5uYW1lID09PSAnZW5jb2RpbmcnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgYS52YWx1ZSAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgICAgICAgKGEudmFsdWUuY29udGVudCA9PT0gJ3RleHQvaHRtbCcgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYS52YWx1ZS5jb250ZW50ID09PSAnYXBwbGljYXRpb24veGh0bWwreG1sJykpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbnMgPSAwIC8qIERPTU5hbWVzcGFjZXMuSFRNTCAqLztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICgvXm0oPzpbaW9uc118dGV4dCkkLy50ZXN0KHBhcmVudC50YWcpICYmXHJcbiAgICAgICAgICAgICAgICB0YWcgIT09ICdtZ2x5cGgnICYmXHJcbiAgICAgICAgICAgICAgICB0YWcgIT09ICdtYWxpZ25tYXJrJykge1xyXG4gICAgICAgICAgICAgICAgbnMgPSAwIC8qIERPTU5hbWVzcGFjZXMuSFRNTCAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChwYXJlbnQgJiYgbnMgPT09IDEgLyogRE9NTmFtZXNwYWNlcy5TVkcgKi8pIHtcclxuICAgICAgICAgICAgaWYgKHBhcmVudC50YWcgPT09ICdmb3JlaWduT2JqZWN0JyB8fFxyXG4gICAgICAgICAgICAgICAgcGFyZW50LnRhZyA9PT0gJ2Rlc2MnIHx8XHJcbiAgICAgICAgICAgICAgICBwYXJlbnQudGFnID09PSAndGl0bGUnKSB7XHJcbiAgICAgICAgICAgICAgICBucyA9IDAgLyogRE9NTmFtZXNwYWNlcy5IVE1MICovO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChucyA9PT0gMCAvKiBET01OYW1lc3BhY2VzLkhUTUwgKi8pIHtcclxuICAgICAgICAgICAgaWYgKHRhZyA9PT0gJ3N2ZycpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAxIC8qIERPTU5hbWVzcGFjZXMuU1ZHICovO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0YWcgPT09ICdtYXRoJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDIgLyogRE9NTmFtZXNwYWNlcy5NQVRIX01MICovO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBucztcclxuICAgIH0sXHJcbiAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9wYXJzaW5nLmh0bWwjcGFyc2luZy1odG1sLWZyYWdtZW50c1xyXG4gICAgZ2V0VGV4dE1vZGUoeyB0YWcsIG5zIH0pIHtcclxuICAgICAgICBpZiAobnMgPT09IDAgLyogRE9NTmFtZXNwYWNlcy5IVE1MICovKSB7XHJcbiAgICAgICAgICAgIGlmICh0YWcgPT09ICd0ZXh0YXJlYScgfHwgdGFnID09PSAndGl0bGUnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMSAvKiBUZXh0TW9kZXMuUkNEQVRBICovO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpc1Jhd1RleHRDb250YWluZXIodGFnKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDIgLyogVGV4dE1vZGVzLlJBV1RFWFQgKi87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIDAgLyogVGV4dE1vZGVzLkRBVEEgKi87XHJcbiAgICB9XHJcbn07XG5cbi8vIFBhcnNlIGlubGluZSBDU1Mgc3RyaW5ncyBmb3Igc3RhdGljIHN0eWxlIGF0dHJpYnV0ZXMgaW50byBhbiBvYmplY3QuXHJcbi8vIFRoaXMgaXMgYSBOb2RlVHJhbnNmb3JtIHNpbmNlIGl0IHdvcmtzIG9uIHRoZSBzdGF0aWMgYHN0eWxlYCBhdHRyaWJ1dGUgYW5kXHJcbi8vIGNvbnZlcnRzIGl0IGludG8gYSBkeW5hbWljIGVxdWl2YWxlbnQ6XHJcbi8vIHN0eWxlPVwiY29sb3I6IHJlZFwiIC0+IDpzdHlsZT0neyBcImNvbG9yXCI6IFwicmVkXCIgfSdcclxuLy8gSXQgaXMgdGhlbiBwcm9jZXNzZWQgYnkgYHRyYW5zZm9ybUVsZW1lbnRgIGFuZCBpbmNsdWRlZCBpbiB0aGUgZ2VuZXJhdGVkXHJcbi8vIHByb3BzLlxyXG5jb25zdCB0cmFuc2Zvcm1TdHlsZSA9IG5vZGUgPT4ge1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLykge1xyXG4gICAgICAgIG5vZGUucHJvcHMuZm9yRWFjaCgocCwgaSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocC50eXBlID09PSA2IC8qIE5vZGVUeXBlcy5BVFRSSUJVVEUgKi8gJiYgcC5uYW1lID09PSAnc3R5bGUnICYmIHAudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIC8vIHJlcGxhY2UgcCB3aXRoIGFuIGV4cHJlc3Npb24gbm9kZVxyXG4gICAgICAgICAgICAgICAgbm9kZS5wcm9wc1tpXSA9IHtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8sXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogYGJpbmRgLFxyXG4gICAgICAgICAgICAgICAgICAgIGFyZzogY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgc3R5bGVgLCB0cnVlLCBwLmxvYyksXHJcbiAgICAgICAgICAgICAgICAgICAgZXhwOiBwYXJzZUlubGluZUNTUyhwLnZhbHVlLmNvbnRlbnQsIHAubG9jKSxcclxuICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnM6IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgIGxvYzogcC5sb2NcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxufTtcclxuY29uc3QgcGFyc2VJbmxpbmVDU1MgPSAoY3NzVGV4dCwgbG9jKSA9PiB7XHJcbiAgICBjb25zdCBub3JtYWxpemVkID0gcGFyc2VTdHJpbmdTdHlsZShjc3NUZXh0KTtcclxuICAgIHJldHVybiBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKEpTT04uc3RyaW5naWZ5KG5vcm1hbGl6ZWQpLCBmYWxzZSwgbG9jLCAzIC8qIENvbnN0YW50VHlwZXMuQ0FOX1NUUklOR0lGWSAqLyk7XHJcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoY29kZSwgbG9jKSB7XHJcbiAgICByZXR1cm4gY3JlYXRlQ29tcGlsZXJFcnJvcihjb2RlLCBsb2MsIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCAhdHJ1ZSA/IERPTUVycm9yTWVzc2FnZXMgOiB1bmRlZmluZWQpO1xyXG59XHJcbmNvbnN0IERPTUVycm9yTWVzc2FnZXMgPSB7XHJcbiAgICBbNTAgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfSFRNTF9OT19FWFBSRVNTSU9OICovXTogYHYtaHRtbCBpcyBtaXNzaW5nIGV4cHJlc3Npb24uYCxcclxuICAgIFs1MSAvKiBET01FcnJvckNvZGVzLlhfVl9IVE1MX1dJVEhfQ0hJTERSRU4gKi9dOiBgdi1odG1sIHdpbGwgb3ZlcnJpZGUgZWxlbWVudCBjaGlsZHJlbi5gLFxyXG4gICAgWzUyIC8qIERPTUVycm9yQ29kZXMuWF9WX1RFWFRfTk9fRVhQUkVTU0lPTiAqL106IGB2LXRleHQgaXMgbWlzc2luZyBleHByZXNzaW9uLmAsXHJcbiAgICBbNTMgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfVEVYVF9XSVRIX0NISUxEUkVOICovXTogYHYtdGV4dCB3aWxsIG92ZXJyaWRlIGVsZW1lbnQgY2hpbGRyZW4uYCxcclxuICAgIFs1NCAvKiBET01FcnJvckNvZGVzLlhfVl9NT0RFTF9PTl9JTlZBTElEX0VMRU1FTlQgKi9dOiBgdi1tb2RlbCBjYW4gb25seSBiZSB1c2VkIG9uIDxpbnB1dD4sIDx0ZXh0YXJlYT4gYW5kIDxzZWxlY3Q+IGVsZW1lbnRzLmAsXHJcbiAgICBbNTUgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfTU9ERUxfQVJHX09OX0VMRU1FTlQgKi9dOiBgdi1tb2RlbCBhcmd1bWVudCBpcyBub3Qgc3VwcG9ydGVkIG9uIHBsYWluIGVsZW1lbnRzLmAsXHJcbiAgICBbNTYgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfTU9ERUxfT05fRklMRV9JTlBVVF9FTEVNRU5UICovXTogYHYtbW9kZWwgY2Fubm90IGJlIHVzZWQgb24gZmlsZSBpbnB1dHMgc2luY2UgdGhleSBhcmUgcmVhZC1vbmx5LiBVc2UgYSB2LW9uOmNoYW5nZSBsaXN0ZW5lciBpbnN0ZWFkLmAsXHJcbiAgICBbNTcgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfTU9ERUxfVU5ORUNFU1NBUllfVkFMVUUgKi9dOiBgVW5uZWNlc3NhcnkgdmFsdWUgYmluZGluZyB1c2VkIGFsb25nc2lkZSB2LW1vZGVsLiBJdCB3aWxsIGludGVyZmVyZSB3aXRoIHYtbW9kZWwncyBiZWhhdmlvci5gLFxyXG4gICAgWzU4IC8qIERPTUVycm9yQ29kZXMuWF9WX1NIT1dfTk9fRVhQUkVTU0lPTiAqL106IGB2LXNob3cgaXMgbWlzc2luZyBleHByZXNzaW9uLmAsXHJcbiAgICBbNTkgLyogRE9NRXJyb3JDb2Rlcy5YX1RSQU5TSVRJT05fSU5WQUxJRF9DSElMRFJFTiAqL106IGA8VHJhbnNpdGlvbj4gZXhwZWN0cyBleGFjdGx5IG9uZSBjaGlsZCBlbGVtZW50IG9yIGNvbXBvbmVudC5gLFxyXG4gICAgWzYwIC8qIERPTUVycm9yQ29kZXMuWF9JR05PUkVEX1NJREVfRUZGRUNUX1RBRyAqL106IGBUYWdzIHdpdGggc2lkZSBlZmZlY3QgKDxzY3JpcHQ+IGFuZCA8c3R5bGU+KSBhcmUgaWdub3JlZCBpbiBjbGllbnQgY29tcG9uZW50IHRlbXBsYXRlcy5gXHJcbn07XG5cbmNvbnN0IHRyYW5zZm9ybVZIdG1sID0gKGRpciwgbm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgY29uc3QgeyBleHAsIGxvYyB9ID0gZGlyO1xyXG4gICAgaWYgKCFleHApIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig1MCAvKiBET01FcnJvckNvZGVzLlhfVl9IVE1MX05PX0VYUFJFU1NJT04gKi8sIGxvYykpO1xyXG4gICAgfVxyXG4gICAgaWYgKG5vZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNTEgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfSFRNTF9XSVRIX0NISUxEUkVOICovLCBsb2MpKTtcclxuICAgICAgICBub2RlLmNoaWxkcmVuLmxlbmd0aCA9IDA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHByb3BzOiBbXHJcbiAgICAgICAgICAgIGNyZWF0ZU9iamVjdFByb3BlcnR5KGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYGlubmVySFRNTGAsIHRydWUsIGxvYyksIGV4cCB8fCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCcnLCB0cnVlKSlcclxuICAgICAgICBdXHJcbiAgICB9O1xyXG59O1xuXG5jb25zdCB0cmFuc2Zvcm1WVGV4dCA9IChkaXIsIG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGNvbnN0IHsgZXhwLCBsb2MgfSA9IGRpcjtcclxuICAgIGlmICghZXhwKSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNTIgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfVEVYVF9OT19FWFBSRVNTSU9OICovLCBsb2MpKTtcclxuICAgIH1cclxuICAgIGlmIChub2RlLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDUzIC8qIERPTUVycm9yQ29kZXMuWF9WX1RFWFRfV0lUSF9DSElMRFJFTiAqLywgbG9jKSk7XHJcbiAgICAgICAgbm9kZS5jaGlsZHJlbi5sZW5ndGggPSAwO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBwcm9wczogW1xyXG4gICAgICAgICAgICBjcmVhdGVPYmplY3RQcm9wZXJ0eShjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGB0ZXh0Q29udGVudGAsIHRydWUpLCBleHBcclxuICAgICAgICAgICAgICAgID8gZ2V0Q29uc3RhbnRUeXBlKGV4cCwgY29udGV4dCkgPiAwXHJcbiAgICAgICAgICAgICAgICAgICAgPyBleHBcclxuICAgICAgICAgICAgICAgICAgICA6IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyU3RyaW5nKFRPX0RJU1BMQVlfU1RSSU5HKSwgW2V4cF0sIGxvYylcclxuICAgICAgICAgICAgICAgIDogY3JlYXRlU2ltcGxlRXhwcmVzc2lvbignJywgdHJ1ZSkpXHJcbiAgICAgICAgXVxyXG4gICAgfTtcclxufTtcblxuY29uc3QgdHJhbnNmb3JtTW9kZWwgPSAoZGlyLCBub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBjb25zdCBiYXNlUmVzdWx0ID0gdHJhbnNmb3JtTW9kZWwkMShkaXIsIG5vZGUsIGNvbnRleHQpO1xyXG4gICAgLy8gYmFzZSB0cmFuc2Zvcm0gaGFzIGVycm9ycyBPUiBjb21wb25lbnQgdi1tb2RlbCAob25seSBuZWVkIHByb3BzKVxyXG4gICAgaWYgKCFiYXNlUmVzdWx0LnByb3BzLmxlbmd0aCB8fCBub2RlLnRhZ1R5cGUgPT09IDEgLyogRWxlbWVudFR5cGVzLkNPTVBPTkVOVCAqLykge1xyXG4gICAgICAgIHJldHVybiBiYXNlUmVzdWx0O1xyXG4gICAgfVxyXG4gICAgaWYgKGRpci5hcmcpIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig1NSAvKiBET01FcnJvckNvZGVzLlhfVl9NT0RFTF9BUkdfT05fRUxFTUVOVCAqLywgZGlyLmFyZy5sb2MpKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGNoZWNrRHVwbGljYXRlZFZhbHVlKCkge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gZmluZFByb3Aobm9kZSwgJ3ZhbHVlJyk7XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDU3IC8qIERPTUVycm9yQ29kZXMuWF9WX01PREVMX1VOTkVDRVNTQVJZX1ZBTFVFICovLCB2YWx1ZS5sb2MpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IHRhZyB9ID0gbm9kZTtcclxuICAgIGNvbnN0IGlzQ3VzdG9tRWxlbWVudCA9IGNvbnRleHQuaXNDdXN0b21FbGVtZW50KHRhZyk7XHJcbiAgICBpZiAodGFnID09PSAnaW5wdXQnIHx8XHJcbiAgICAgICAgdGFnID09PSAndGV4dGFyZWEnIHx8XHJcbiAgICAgICAgdGFnID09PSAnc2VsZWN0JyB8fFxyXG4gICAgICAgIGlzQ3VzdG9tRWxlbWVudCkge1xyXG4gICAgICAgIGxldCBkaXJlY3RpdmVUb1VzZSA9IFZfTU9ERUxfVEVYVDtcclxuICAgICAgICBsZXQgaXNJbnZhbGlkVHlwZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0YWcgPT09ICdpbnB1dCcgfHwgaXNDdXN0b21FbGVtZW50KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBmaW5kUHJvcChub2RlLCBgdHlwZWApO1xyXG4gICAgICAgICAgICBpZiAodHlwZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gOnR5cGU9XCJmb29cIlxyXG4gICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZVRvVXNlID0gVl9NT0RFTF9EWU5BTUlDO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZS52YWx1ZS5jb250ZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JhZGlvJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZVRvVXNlID0gVl9NT0RFTF9SQURJTztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjaGVja2JveCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVUb1VzZSA9IFZfTU9ERUxfQ0hFQ0tCT1g7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZmlsZSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ludmFsaWRUeXBlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDU2IC8qIERPTUVycm9yQ29kZXMuWF9WX01PREVMX09OX0ZJTEVfSU5QVVRfRUxFTUVOVCAqLywgZGlyLmxvYykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0ZXh0IHR5cGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBjaGVja0R1cGxpY2F0ZWRWYWx1ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGhhc0R5bmFtaWNLZXlWQmluZChub2RlKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gZWxlbWVudCBoYXMgYmluZGluZ3Mgd2l0aCBkeW5hbWljIGtleXMsIHdoaWNoIGNhbiBwb3NzaWJseSBjb250YWluXHJcbiAgICAgICAgICAgICAgICAvLyBcInR5cGVcIi5cclxuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZVRvVXNlID0gVl9NT0RFTF9EWU5BTUlDO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gdGV4dCB0eXBlXHJcbiAgICAgICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgY2hlY2tEdXBsaWNhdGVkVmFsdWUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0YWcgPT09ICdzZWxlY3QnKSB7XHJcbiAgICAgICAgICAgIGRpcmVjdGl2ZVRvVXNlID0gVl9NT0RFTF9TRUxFQ1Q7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyB0ZXh0YXJlYVxyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgY2hlY2tEdXBsaWNhdGVkVmFsdWUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaW5qZWN0IHJ1bnRpbWUgZGlyZWN0aXZlXHJcbiAgICAgICAgLy8gYnkgcmV0dXJuaW5nIHRoZSBoZWxwZXIgc3ltYm9sIHZpYSBuZWVkUnVudGltZVxyXG4gICAgICAgIC8vIHRoZSBpbXBvcnQgd2lsbCByZXBsYWNlZCBhIHJlc29sdmVEaXJlY3RpdmUgY2FsbC5cclxuICAgICAgICBpZiAoIWlzSW52YWxpZFR5cGUpIHtcclxuICAgICAgICAgICAgYmFzZVJlc3VsdC5uZWVkUnVudGltZSA9IGNvbnRleHQuaGVscGVyKGRpcmVjdGl2ZVRvVXNlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig1NCAvKiBET01FcnJvckNvZGVzLlhfVl9NT0RFTF9PTl9JTlZBTElEX0VMRU1FTlQgKi8sIGRpci5sb2MpKTtcclxuICAgIH1cclxuICAgIC8vIG5hdGl2ZSB2bW9kZWwgZG9lc24ndCBuZWVkIHRoZSBgbW9kZWxWYWx1ZWAgcHJvcHMgc2luY2UgdGhleSBhcmUgYWxzb1xyXG4gICAgLy8gcGFzc2VkIHRvIHRoZSBydW50aW1lIGFzIGBiaW5kaW5nLnZhbHVlYC4gcmVtb3ZpbmcgaXQgcmVkdWNlcyBjb2RlIHNpemUuXHJcbiAgICBiYXNlUmVzdWx0LnByb3BzID0gYmFzZVJlc3VsdC5wcm9wcy5maWx0ZXIocCA9PiAhKHAua2V5LnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovICYmXHJcbiAgICAgICAgcC5rZXkuY29udGVudCA9PT0gJ21vZGVsVmFsdWUnKSk7XHJcbiAgICByZXR1cm4gYmFzZVJlc3VsdDtcclxufTtcblxuY29uc3QgaXNFdmVudE9wdGlvbk1vZGlmaWVyID0gLyojX19QVVJFX18qLyBtYWtlTWFwKGBwYXNzaXZlLG9uY2UsY2FwdHVyZWApO1xyXG5jb25zdCBpc05vbktleU1vZGlmaWVyID0gLyojX19QVVJFX18qLyBtYWtlTWFwKFxyXG4vLyBldmVudCBwcm9wYWdhdGlvbiBtYW5hZ2VtZW50XHJcbmBzdG9wLHByZXZlbnQsc2VsZixgICtcclxuICAgIC8vIHN5c3RlbSBtb2RpZmllcnMgKyBleGFjdFxyXG4gICAgYGN0cmwsc2hpZnQsYWx0LG1ldGEsZXhhY3QsYCArXHJcbiAgICAvLyBtb3VzZVxyXG4gICAgYG1pZGRsZWApO1xyXG4vLyBsZWZ0ICYgcmlnaHQgY291bGQgYmUgbW91c2Ugb3Iga2V5IG1vZGlmaWVycyBiYXNlZCBvbiBldmVudCB0eXBlXHJcbmNvbnN0IG1heWJlS2V5TW9kaWZpZXIgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoJ2xlZnQscmlnaHQnKTtcclxuY29uc3QgaXNLZXlib2FyZEV2ZW50ID0gLyojX19QVVJFX18qLyBtYWtlTWFwKGBvbmtleXVwLG9ua2V5ZG93bixvbmtleXByZXNzYCwgdHJ1ZSk7XHJcbmNvbnN0IHJlc29sdmVNb2RpZmllcnMgPSAoa2V5LCBtb2RpZmllcnMsIGNvbnRleHQsIGxvYykgPT4ge1xyXG4gICAgY29uc3Qga2V5TW9kaWZpZXJzID0gW107XHJcbiAgICBjb25zdCBub25LZXlNb2RpZmllcnMgPSBbXTtcclxuICAgIGNvbnN0IGV2ZW50T3B0aW9uTW9kaWZpZXJzID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vZGlmaWVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IG1vZGlmaWVyID0gbW9kaWZpZXJzW2ldO1xyXG4gICAgICAgIGlmIChtb2RpZmllciA9PT0gJ25hdGl2ZScgJiZcclxuICAgICAgICAgICAgY2hlY2tDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfVl9PTl9OQVRJVkVcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfVl9PTl9OQVRJVkUgKi8sIGNvbnRleHQsIGxvYykpIHtcclxuICAgICAgICAgICAgZXZlbnRPcHRpb25Nb2RpZmllcnMucHVzaChtb2RpZmllcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlzRXZlbnRPcHRpb25Nb2RpZmllcihtb2RpZmllcikpIHtcclxuICAgICAgICAgICAgLy8gZXZlbnRPcHRpb25Nb2RpZmllcnM6IG1vZGlmaWVycyBmb3IgYWRkRXZlbnRMaXN0ZW5lcigpIG9wdGlvbnMsXHJcbiAgICAgICAgICAgIC8vIGUuZy4gLnBhc3NpdmUgJiAuY2FwdHVyZVxyXG4gICAgICAgICAgICBldmVudE9wdGlvbk1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHJ1bnRpbWVNb2RpZmllcnM6IG1vZGlmaWVycyB0aGF0IG5lZWRzIHJ1bnRpbWUgZ3VhcmRzXHJcbiAgICAgICAgICAgIGlmIChtYXliZUtleU1vZGlmaWVyKG1vZGlmaWVyKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzU3RhdGljRXhwKGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNLZXlib2FyZEV2ZW50KGtleS5jb250ZW50KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXlNb2RpZmllcnMucHVzaChtb2RpZmllcik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBub25LZXlNb2RpZmllcnMucHVzaChtb2RpZmllcik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAga2V5TW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIG5vbktleU1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChpc05vbktleU1vZGlmaWVyKG1vZGlmaWVyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5vbktleU1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGtleU1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAga2V5TW9kaWZpZXJzLFxyXG4gICAgICAgIG5vbktleU1vZGlmaWVycyxcclxuICAgICAgICBldmVudE9wdGlvbk1vZGlmaWVyc1xyXG4gICAgfTtcclxufTtcclxuY29uc3QgdHJhbnNmb3JtQ2xpY2sgPSAoa2V5LCBldmVudCkgPT4ge1xyXG4gICAgY29uc3QgaXNTdGF0aWNDbGljayA9IGlzU3RhdGljRXhwKGtleSkgJiYga2V5LmNvbnRlbnQudG9Mb3dlckNhc2UoKSA9PT0gJ29uY2xpY2snO1xyXG4gICAgcmV0dXJuIGlzU3RhdGljQ2xpY2tcclxuICAgICAgICA/IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oZXZlbnQsIHRydWUpXHJcbiAgICAgICAgOiBrZXkudHlwZSAhPT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi9cclxuICAgICAgICAgICAgPyBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW1xyXG4gICAgICAgICAgICAgICAgYChgLFxyXG4gICAgICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAgICAgYCkgPT09IFwib25DbGlja1wiID8gXCIke2V2ZW50fVwiIDogKGAsXHJcbiAgICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgICBgKWBcclxuICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgOiBrZXk7XHJcbn07XHJcbmNvbnN0IHRyYW5zZm9ybU9uID0gKGRpciwgbm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgcmV0dXJuIHRyYW5zZm9ybU9uJDEoZGlyLCBub2RlLCBjb250ZXh0LCBiYXNlUmVzdWx0ID0+IHtcclxuICAgICAgICBjb25zdCB7IG1vZGlmaWVycyB9ID0gZGlyO1xyXG4gICAgICAgIGlmICghbW9kaWZpZXJzLmxlbmd0aClcclxuICAgICAgICAgICAgcmV0dXJuIGJhc2VSZXN1bHQ7XHJcbiAgICAgICAgbGV0IHsga2V5LCB2YWx1ZTogaGFuZGxlckV4cCB9ID0gYmFzZVJlc3VsdC5wcm9wc1swXTtcclxuICAgICAgICBjb25zdCB7IGtleU1vZGlmaWVycywgbm9uS2V5TW9kaWZpZXJzLCBldmVudE9wdGlvbk1vZGlmaWVycyB9ID0gcmVzb2x2ZU1vZGlmaWVycyhrZXksIG1vZGlmaWVycywgY29udGV4dCwgZGlyLmxvYyk7XHJcbiAgICAgICAgLy8gbm9ybWFsaXplIGNsaWNrLnJpZ2h0IGFuZCBjbGljay5taWRkbGUgc2luY2UgdGhleSBkb24ndCBhY3R1YWxseSBmaXJlXHJcbiAgICAgICAgaWYgKG5vbktleU1vZGlmaWVycy5pbmNsdWRlcygncmlnaHQnKSkge1xyXG4gICAgICAgICAgICBrZXkgPSB0cmFuc2Zvcm1DbGljayhrZXksIGBvbkNvbnRleHRtZW51YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChub25LZXlNb2RpZmllcnMuaW5jbHVkZXMoJ21pZGRsZScpKSB7XHJcbiAgICAgICAgICAgIGtleSA9IHRyYW5zZm9ybUNsaWNrKGtleSwgYG9uTW91c2V1cGApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobm9uS2V5TW9kaWZpZXJzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBoYW5kbGVyRXhwID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoVl9PTl9XSVRIX01PRElGSUVSUyksIFtcclxuICAgICAgICAgICAgICAgIGhhbmRsZXJFeHAsXHJcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShub25LZXlNb2RpZmllcnMpXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoa2V5TW9kaWZpZXJzLmxlbmd0aCAmJlxyXG4gICAgICAgICAgICAvLyBpZiBldmVudCBuYW1lIGlzIGR5bmFtaWMsIGFsd2F5cyB3cmFwIHdpdGgga2V5cyBndWFyZFxyXG4gICAgICAgICAgICAoIWlzU3RhdGljRXhwKGtleSkgfHwgaXNLZXlib2FyZEV2ZW50KGtleS5jb250ZW50KSkpIHtcclxuICAgICAgICAgICAgaGFuZGxlckV4cCA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKFZfT05fV0lUSF9LRVlTKSwgW1xyXG4gICAgICAgICAgICAgICAgaGFuZGxlckV4cCxcclxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGtleU1vZGlmaWVycylcclxuICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChldmVudE9wdGlvbk1vZGlmaWVycy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgY29uc3QgbW9kaWZpZXJQb3N0Zml4ID0gZXZlbnRPcHRpb25Nb2RpZmllcnMubWFwKGNhcGl0YWxpemUpLmpvaW4oJycpO1xyXG4gICAgICAgICAgICBrZXkgPSBpc1N0YXRpY0V4cChrZXkpXHJcbiAgICAgICAgICAgICAgICA/IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYCR7a2V5LmNvbnRlbnR9JHttb2RpZmllclBvc3RmaXh9YCwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgIDogY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFtgKGAsIGtleSwgYCkgKyBcIiR7bW9kaWZpZXJQb3N0Zml4fVwiYF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBwcm9wczogW2NyZWF0ZU9iamVjdFByb3BlcnR5KGtleSwgaGFuZGxlckV4cCldXHJcbiAgICAgICAgfTtcclxuICAgIH0pO1xyXG59O1xuXG5jb25zdCB0cmFuc2Zvcm1TaG93ID0gKGRpciwgbm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgY29uc3QgeyBleHAsIGxvYyB9ID0gZGlyO1xyXG4gICAgaWYgKCFleHApIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig1OCAvKiBET01FcnJvckNvZGVzLlhfVl9TSE9XX05PX0VYUFJFU1NJT04gKi8sIGxvYykpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBwcm9wczogW10sXHJcbiAgICAgICAgbmVlZFJ1bnRpbWU6IGNvbnRleHQuaGVscGVyKFZfU0hPVylcclxuICAgIH07XHJcbn07XG5cbmNvbnN0IHRyYW5zZm9ybVRyYW5zaXRpb24gPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgIG5vZGUudGFnVHlwZSA9PT0gMSAvKiBFbGVtZW50VHlwZXMuQ09NUE9ORU5UICovKSB7XHJcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gY29udGV4dC5pc0J1aWx0SW5Db21wb25lbnQobm9kZS50YWcpO1xyXG4gICAgICAgIGlmIChjb21wb25lbnQgPT09IFRSQU5TSVRJT04pIHtcclxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghbm9kZS5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyB3YXJuIG11bHRpcGxlIHRyYW5zaXRpb24gY2hpbGRyZW5cclxuICAgICAgICAgICAgICAgIGlmIChoYXNNdWx0aXBsZUNoaWxkcmVuKG5vZGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNTkgLyogRE9NRXJyb3JDb2Rlcy5YX1RSQU5TSVRJT05fSU5WQUxJRF9DSElMRFJFTiAqLywge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogbm9kZS5jaGlsZHJlblswXS5sb2Muc3RhcnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbm9kZS5jaGlsZHJlbltub2RlLmNoaWxkcmVuLmxlbmd0aCAtIDFdLmxvYy5lbmQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogJydcclxuICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiBpdCdzIHMgc2luZ2xlIGNoaWxkIHcvIHYtc2hvd1xyXG4gICAgICAgICAgICAgICAgLy8gaWYgeWVzLCBpbmplY3QgXCJwZXJzaXN0ZWQ6IHRydWVcIiB0byB0aGUgdHJhbnNpdGlvbiBwcm9wc1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBub2RlLmNoaWxkcmVuWzBdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHAgb2YgY2hpbGQucHJvcHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovICYmIHAubmFtZSA9PT0gJ3Nob3cnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLnByb3BzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IDYgLyogTm9kZVR5cGVzLkFUVFJJQlVURSAqLyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGVyc2lzdGVkJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYzogbm9kZS5sb2NcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuZnVuY3Rpb24gaGFzTXVsdGlwbGVDaGlsZHJlbihub2RlKSB7XHJcbiAgICAvLyAjMTM1MiBmaWx0ZXIgb3V0IHBvdGVudGlhbCBjb21tZW50IG5vZGVzLlxyXG4gICAgY29uc3QgY2hpbGRyZW4gPSAobm9kZS5jaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4uZmlsdGVyKGMgPT4gYy50eXBlICE9PSAzIC8qIE5vZGVUeXBlcy5DT01NRU5UICovICYmXHJcbiAgICAgICAgIShjLnR5cGUgPT09IDIgLyogTm9kZVR5cGVzLlRFWFQgKi8gJiYgIWMuY29udGVudC50cmltKCkpKSk7XHJcbiAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuWzBdO1xyXG4gICAgcmV0dXJuIChjaGlsZHJlbi5sZW5ndGggIT09IDEgfHxcclxuICAgICAgICBjaGlsZC50eXBlID09PSAxMSAvKiBOb2RlVHlwZXMuRk9SICovIHx8XHJcbiAgICAgICAgKGNoaWxkLnR5cGUgPT09IDkgLyogTm9kZVR5cGVzLklGICovICYmIGNoaWxkLmJyYW5jaGVzLnNvbWUoaGFzTXVsdGlwbGVDaGlsZHJlbikpKTtcclxufVxuXG5jb25zdCBpZ25vcmVTaWRlRWZmZWN0VGFncyA9IChub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgbm9kZS50YWdUeXBlID09PSAwIC8qIEVsZW1lbnRUeXBlcy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgKG5vZGUudGFnID09PSAnc2NyaXB0JyB8fCBub2RlLnRhZyA9PT0gJ3N0eWxlJykpIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig2MCAvKiBET01FcnJvckNvZGVzLlhfSUdOT1JFRF9TSURFX0VGRkVDVF9UQUcgKi8sIG5vZGUubG9jKSk7XHJcbiAgICAgICAgY29udGV4dC5yZW1vdmVOb2RlKCk7XHJcbiAgICB9XHJcbn07XG5cbmNvbnN0IERPTU5vZGVUcmFuc2Zvcm1zID0gW1xyXG4gICAgdHJhbnNmb3JtU3R5bGUsXHJcbiAgICAuLi4oKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gW3RyYW5zZm9ybVRyYW5zaXRpb25dIDogW10pXHJcbl07XHJcbmNvbnN0IERPTURpcmVjdGl2ZVRyYW5zZm9ybXMgPSB7XHJcbiAgICBjbG9hazogbm9vcERpcmVjdGl2ZVRyYW5zZm9ybSxcclxuICAgIGh0bWw6IHRyYW5zZm9ybVZIdG1sLFxyXG4gICAgdGV4dDogdHJhbnNmb3JtVlRleHQsXHJcbiAgICBtb2RlbDogdHJhbnNmb3JtTW9kZWwsXHJcbiAgICBvbjogdHJhbnNmb3JtT24sXHJcbiAgICBzaG93OiB0cmFuc2Zvcm1TaG93XHJcbn07XHJcbmZ1bmN0aW9uIGNvbXBpbGUodGVtcGxhdGUsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgcmV0dXJuIGJhc2VDb21waWxlKHRlbXBsYXRlLCBleHRlbmQoe30sIHBhcnNlck9wdGlvbnMsIG9wdGlvbnMsIHtcclxuICAgICAgICBub2RlVHJhbnNmb3JtczogW1xyXG4gICAgICAgICAgICAvLyBpZ25vcmUgPHNjcmlwdD4gYW5kIDx0YWc+XHJcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgbm90IHB1dCBpbnNpZGUgRE9NTm9kZVRyYW5zZm9ybXMgYmVjYXVzZSB0aGF0IGxpc3QgaXMgdXNlZFxyXG4gICAgICAgICAgICAvLyBieSBjb21waWxlci1zc3IgdG8gZ2VuZXJhdGUgdm5vZGUgZmFsbGJhY2sgYnJhbmNoZXNcclxuICAgICAgICAgICAgaWdub3JlU2lkZUVmZmVjdFRhZ3MsXHJcbiAgICAgICAgICAgIC4uLkRPTU5vZGVUcmFuc2Zvcm1zLFxyXG4gICAgICAgICAgICAuLi4ob3B0aW9ucy5ub2RlVHJhbnNmb3JtcyB8fCBbXSlcclxuICAgICAgICBdLFxyXG4gICAgICAgIGRpcmVjdGl2ZVRyYW5zZm9ybXM6IGV4dGVuZCh7fSwgRE9NRGlyZWN0aXZlVHJhbnNmb3Jtcywgb3B0aW9ucy5kaXJlY3RpdmVUcmFuc2Zvcm1zIHx8IHt9KSxcclxuICAgICAgICB0cmFuc2Zvcm1Ib2lzdDogbnVsbCBcclxuICAgIH0pKTtcclxufVxyXG5mdW5jdGlvbiBwYXJzZSh0ZW1wbGF0ZSwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICByZXR1cm4gYmFzZVBhcnNlKHRlbXBsYXRlLCBleHRlbmQoe30sIHBhcnNlck9wdGlvbnMsIG9wdGlvbnMpKTtcclxufVxuXG5leHBvcnQgeyBET01EaXJlY3RpdmVUcmFuc2Zvcm1zLCBET01Ob2RlVHJhbnNmb3JtcywgVFJBTlNJVElPTiwgVFJBTlNJVElPTl9HUk9VUCwgVl9NT0RFTF9DSEVDS0JPWCwgVl9NT0RFTF9EWU5BTUlDLCBWX01PREVMX1JBRElPLCBWX01PREVMX1NFTEVDVCwgVl9NT0RFTF9URVhULCBWX09OX1dJVEhfS0VZUywgVl9PTl9XSVRIX01PRElGSUVSUywgVl9TSE9XLCBjb21waWxlLCBjcmVhdGVET01Db21waWxlckVycm9yLCBwYXJzZSwgcGFyc2VyT3B0aW9ucywgdHJhbnNmb3JtU3R5bGUgfTtcbiIsImV4cG9ydCBjb25zdCBIT09LX1NFVFVQID0gJ2RldnRvb2xzLXBsdWdpbjpzZXR1cCc7XG5leHBvcnQgY29uc3QgSE9PS19QTFVHSU5fU0VUVElOR1NfU0VUID0gJ3BsdWdpbjpzZXR0aW5nczpzZXQnO1xuIiwiZXhwb3J0IGZ1bmN0aW9uIGdldERldnRvb2xzR2xvYmFsSG9vaygpIHtcbiAgICByZXR1cm4gZ2V0VGFyZ2V0KCkuX19WVUVfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRUYXJnZXQoKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgID8gd2luZG93XG4gICAgICAgIDogdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgID8gZ2xvYmFsXG4gICAgICAgICAgICA6IHt9O1xufVxuZXhwb3J0IGNvbnN0IGlzUHJveHlBdmFpbGFibGUgPSB0eXBlb2YgUHJveHkgPT09ICdmdW5jdGlvbic7XG4iLCJpbXBvcnQgeyBnZXRUYXJnZXQsIGdldERldnRvb2xzR2xvYmFsSG9vaywgaXNQcm94eUF2YWlsYWJsZSB9IGZyb20gJy4vZW52LmpzJztcbmltcG9ydCB7IEhPT0tfU0VUVVAgfSBmcm9tICcuL2NvbnN0LmpzJztcbmltcG9ydCB7IEFwaVByb3h5IH0gZnJvbSAnLi9wcm94eS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaS9pbmRleC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3BsdWdpbi5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3RpbWUuanMnO1xuZXhwb3J0IGZ1bmN0aW9uIHNldHVwRGV2dG9vbHNQbHVnaW4ocGx1Z2luRGVzY3JpcHRvciwgc2V0dXBGbikge1xuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBwbHVnaW5EZXNjcmlwdG9yO1xuICAgIGNvbnN0IHRhcmdldCA9IGdldFRhcmdldCgpO1xuICAgIGNvbnN0IGhvb2sgPSBnZXREZXZ0b29sc0dsb2JhbEhvb2soKTtcbiAgICBjb25zdCBlbmFibGVQcm94eSA9IGlzUHJveHlBdmFpbGFibGUgJiYgZGVzY3JpcHRvci5lbmFibGVFYXJseVByb3h5O1xuICAgIGlmIChob29rICYmICh0YXJnZXQuX19WVUVfREVWVE9PTFNfUExVR0lOX0FQSV9BVkFJTEFCTEVfXyB8fCAhZW5hYmxlUHJveHkpKSB7XG4gICAgICAgIGhvb2suZW1pdChIT09LX1NFVFVQLCBwbHVnaW5EZXNjcmlwdG9yLCBzZXR1cEZuKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IHByb3h5ID0gZW5hYmxlUHJveHkgPyBuZXcgQXBpUHJveHkoZGVzY3JpcHRvciwgaG9vaykgOiBudWxsO1xuICAgICAgICBjb25zdCBsaXN0ID0gdGFyZ2V0Ll9fVlVFX0RFVlRPT0xTX1BMVUdJTlNfXyA9IHRhcmdldC5fX1ZVRV9ERVZUT09MU19QTFVHSU5TX18gfHwgW107XG4gICAgICAgIGxpc3QucHVzaCh7XG4gICAgICAgICAgICBwbHVnaW5EZXNjcmlwdG9yOiBkZXNjcmlwdG9yLFxuICAgICAgICAgICAgc2V0dXBGbixcbiAgICAgICAgICAgIHByb3h5LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHByb3h5KVxuICAgICAgICAgICAgc2V0dXBGbihwcm94eS5wcm94aWVkVGFyZ2V0KTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBIT09LX1BMVUdJTl9TRVRUSU5HU19TRVQgfSBmcm9tICcuL2NvbnN0LmpzJztcbmltcG9ydCB7IG5vdyB9IGZyb20gJy4vdGltZS5qcyc7XG5leHBvcnQgY2xhc3MgQXBpUHJveHkge1xuICAgIGNvbnN0cnVjdG9yKHBsdWdpbiwgaG9vaykge1xuICAgICAgICB0aGlzLnRhcmdldCA9IG51bGw7XG4gICAgICAgIHRoaXMudGFyZ2V0UXVldWUgPSBbXTtcbiAgICAgICAgdGhpcy5vblF1ZXVlID0gW107XG4gICAgICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICAgICAgICB0aGlzLmhvb2sgPSBob29rO1xuICAgICAgICBjb25zdCBkZWZhdWx0U2V0dGluZ3MgPSB7fTtcbiAgICAgICAgaWYgKHBsdWdpbi5zZXR0aW5ncykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpZCBpbiBwbHVnaW4uc2V0dGluZ3MpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gcGx1Z2luLnNldHRpbmdzW2lkXTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0U2V0dGluZ3NbaWRdID0gaXRlbS5kZWZhdWx0VmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbG9jYWxTZXR0aW5nc1NhdmVJZCA9IGBfX3Z1ZS1kZXZ0b29scy1wbHVnaW4tc2V0dGluZ3NfXyR7cGx1Z2luLmlkfWA7XG4gICAgICAgIGxldCBjdXJyZW50U2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0U2V0dGluZ3MpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmF3ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTZXR0aW5nc1NhdmVJZCk7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShyYXcpO1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihjdXJyZW50U2V0dGluZ3MsIGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBub29wXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mYWxsYmFja3MgPSB7XG4gICAgICAgICAgICBnZXRTZXR0aW5ncygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFNldHRpbmdzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldFNldHRpbmdzKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obG9jYWxTZXR0aW5nc1NhdmVJZCwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gbm9vcFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjdXJyZW50U2V0dGluZ3MgPSB2YWx1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBub3coKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vdygpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGhvb2spIHtcbiAgICAgICAgICAgIGhvb2sub24oSE9PS19QTFVHSU5fU0VUVElOR1NfU0VULCAocGx1Z2luSWQsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHBsdWdpbklkID09PSB0aGlzLnBsdWdpbi5pZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZhbGxiYWNrcy5zZXRTZXR0aW5ncyh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcm94aWVkT24gPSBuZXcgUHJveHkoe30sIHtcbiAgICAgICAgICAgIGdldDogKF90YXJnZXQsIHByb3ApID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGFyZ2V0Lm9uW3Byb3BdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uUXVldWUucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBwcm9wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5wcm94aWVkVGFyZ2V0ID0gbmV3IFByb3h5KHt9LCB7XG4gICAgICAgICAgICBnZXQ6IChfdGFyZ2V0LCBwcm9wKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRhcmdldFtwcm9wXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocHJvcCA9PT0gJ29uJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm94aWVkT247XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKE9iamVjdC5rZXlzKHRoaXMuZmFsbGJhY2tzKS5pbmNsdWRlcyhwcm9wKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0UXVldWUucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBwcm9wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZTogKCkgPT4geyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mYWxsYmFja3NbcHJvcF0oLi4uYXJncyk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhcmdldFF1ZXVlLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IHByb3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgc2V0UmVhbFRhcmdldCh0YXJnZXQpIHtcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLm9uUXVldWUpIHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0Lm9uW2l0ZW0ubWV0aG9kXSguLi5pdGVtLmFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLnRhcmdldFF1ZXVlKSB7XG4gICAgICAgICAgICBpdGVtLnJlc29sdmUoYXdhaXQgdGhpcy50YXJnZXRbaXRlbS5tZXRob2RdKC4uLml0ZW0uYXJncykpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwibGV0IHN1cHBvcnRlZDtcbmxldCBwZXJmO1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGVyZm9ybWFuY2VTdXBwb3J0ZWQoKSB7XG4gICAgdmFyIF9hO1xuICAgIGlmIChzdXBwb3J0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gc3VwcG9ydGVkO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LnBlcmZvcm1hbmNlKSB7XG4gICAgICAgIHN1cHBvcnRlZCA9IHRydWU7XG4gICAgICAgIHBlcmYgPSB3aW5kb3cucGVyZm9ybWFuY2U7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnICYmICgoX2EgPSBnbG9iYWwucGVyZl9ob29rcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnBlcmZvcm1hbmNlKSkge1xuICAgICAgICBzdXBwb3J0ZWQgPSB0cnVlO1xuICAgICAgICBwZXJmID0gZ2xvYmFsLnBlcmZfaG9va3MucGVyZm9ybWFuY2U7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzdXBwb3J0ZWQgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cHBvcnRlZDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBub3coKSB7XG4gICAgcmV0dXJuIGlzUGVyZm9ybWFuY2VTdXBwb3J0ZWQoKSA/IHBlcmYubm93KCkgOiBEYXRlLm5vdygpO1xufVxuIiwiaW1wb3J0IHsgZXh0ZW5kLCBpc0FycmF5LCBpc01hcCwgaXNJbnRlZ2VyS2V5LCBoYXNPd24sIGlzU3ltYm9sLCBpc09iamVjdCwgaGFzQ2hhbmdlZCwgbWFrZU1hcCwgY2FwaXRhbGl6ZSwgdG9SYXdUeXBlLCBkZWYsIGlzRnVuY3Rpb24sIE5PT1AgfSBmcm9tICdAdnVlL3NoYXJlZCc7XG5cbmZ1bmN0aW9uIHdhcm4obXNnLCAuLi5hcmdzKSB7XHJcbiAgICBjb25zb2xlLndhcm4oYFtWdWUgd2Fybl0gJHttc2d9YCwgLi4uYXJncyk7XHJcbn1cblxubGV0IGFjdGl2ZUVmZmVjdFNjb3BlO1xyXG5jbGFzcyBFZmZlY3RTY29wZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihkZXRhY2hlZCA9IGZhbHNlKSB7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQGludGVybmFsXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEBpbnRlcm5hbFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHRoaXMuZWZmZWN0cyA9IFtdO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEBpbnRlcm5hbFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHRoaXMuY2xlYW51cHMgPSBbXTtcclxuICAgICAgICBpZiAoIWRldGFjaGVkICYmIGFjdGl2ZUVmZmVjdFNjb3BlKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFyZW50ID0gYWN0aXZlRWZmZWN0U2NvcGU7XHJcbiAgICAgICAgICAgIHRoaXMuaW5kZXggPVxyXG4gICAgICAgICAgICAgICAgKGFjdGl2ZUVmZmVjdFNjb3BlLnNjb3BlcyB8fCAoYWN0aXZlRWZmZWN0U2NvcGUuc2NvcGVzID0gW10pKS5wdXNoKHRoaXMpIC0gMTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBydW4oZm4pIHtcclxuICAgICAgICBpZiAodGhpcy5hY3RpdmUpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudEVmZmVjdFNjb3BlID0gYWN0aXZlRWZmZWN0U2NvcGU7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBhY3RpdmVFZmZlY3RTY29wZSA9IHRoaXM7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZm4oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmaW5hbGx5IHtcclxuICAgICAgICAgICAgICAgIGFjdGl2ZUVmZmVjdFNjb3BlID0gY3VycmVudEVmZmVjdFNjb3BlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBjYW5ub3QgcnVuIGFuIGluYWN0aXZlIGVmZmVjdCBzY29wZS5gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uIG5vbi1kZXRhY2hlZCBzY29wZXNcclxuICAgICAqIEBpbnRlcm5hbFxyXG4gICAgICovXHJcbiAgICBvbigpIHtcclxuICAgICAgICBhY3RpdmVFZmZlY3RTY29wZSA9IHRoaXM7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uIG5vbi1kZXRhY2hlZCBzY29wZXNcclxuICAgICAqIEBpbnRlcm5hbFxyXG4gICAgICovXHJcbiAgICBvZmYoKSB7XHJcbiAgICAgICAgYWN0aXZlRWZmZWN0U2NvcGUgPSB0aGlzLnBhcmVudDtcclxuICAgIH1cclxuICAgIHN0b3AoZnJvbVBhcmVudCkge1xyXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZSkge1xyXG4gICAgICAgICAgICBsZXQgaSwgbDtcclxuICAgICAgICAgICAgZm9yIChpID0gMCwgbCA9IHRoaXMuZWZmZWN0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZWZmZWN0c1tpXS5zdG9wKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZm9yIChpID0gMCwgbCA9IHRoaXMuY2xlYW51cHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFudXBzW2ldKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuc2NvcGVzKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBsID0gdGhpcy5zY29wZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zY29wZXNbaV0uc3RvcCh0cnVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBuZXN0ZWQgc2NvcGUsIGRlcmVmZXJlbmNlIGZyb20gcGFyZW50IHRvIGF2b2lkIG1lbW9yeSBsZWFrc1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wYXJlbnQgJiYgIWZyb21QYXJlbnQpIHtcclxuICAgICAgICAgICAgICAgIC8vIG9wdGltaXplZCBPKDEpIHJlbW92YWxcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxhc3QgPSB0aGlzLnBhcmVudC5zY29wZXMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobGFzdCAmJiBsYXN0ICE9PSB0aGlzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuc2NvcGVzW3RoaXMuaW5kZXhdID0gbGFzdDtcclxuICAgICAgICAgICAgICAgICAgICBsYXN0LmluZGV4ID0gdGhpcy5pbmRleDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBlZmZlY3RTY29wZShkZXRhY2hlZCkge1xyXG4gICAgcmV0dXJuIG5ldyBFZmZlY3RTY29wZShkZXRhY2hlZCk7XHJcbn1cclxuZnVuY3Rpb24gcmVjb3JkRWZmZWN0U2NvcGUoZWZmZWN0LCBzY29wZSA9IGFjdGl2ZUVmZmVjdFNjb3BlKSB7XHJcbiAgICBpZiAoc2NvcGUgJiYgc2NvcGUuYWN0aXZlKSB7XHJcbiAgICAgICAgc2NvcGUuZWZmZWN0cy5wdXNoKGVmZmVjdCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2V0Q3VycmVudFNjb3BlKCkge1xyXG4gICAgcmV0dXJuIGFjdGl2ZUVmZmVjdFNjb3BlO1xyXG59XHJcbmZ1bmN0aW9uIG9uU2NvcGVEaXNwb3NlKGZuKSB7XHJcbiAgICBpZiAoYWN0aXZlRWZmZWN0U2NvcGUpIHtcclxuICAgICAgICBhY3RpdmVFZmZlY3RTY29wZS5jbGVhbnVwcy5wdXNoKGZuKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIHdhcm4oYG9uU2NvcGVEaXNwb3NlKCkgaXMgY2FsbGVkIHdoZW4gdGhlcmUgaXMgbm8gYWN0aXZlIGVmZmVjdCBzY29wZWAgK1xyXG4gICAgICAgICAgICBgIHRvIGJlIGFzc29jaWF0ZWQgd2l0aC5gKTtcclxuICAgIH1cclxufVxuXG5jb25zdCBjcmVhdGVEZXAgPSAoZWZmZWN0cykgPT4ge1xyXG4gICAgY29uc3QgZGVwID0gbmV3IFNldChlZmZlY3RzKTtcclxuICAgIGRlcC53ID0gMDtcclxuICAgIGRlcC5uID0gMDtcclxuICAgIHJldHVybiBkZXA7XHJcbn07XHJcbmNvbnN0IHdhc1RyYWNrZWQgPSAoZGVwKSA9PiAoZGVwLncgJiB0cmFja09wQml0KSA+IDA7XHJcbmNvbnN0IG5ld1RyYWNrZWQgPSAoZGVwKSA9PiAoZGVwLm4gJiB0cmFja09wQml0KSA+IDA7XHJcbmNvbnN0IGluaXREZXBNYXJrZXJzID0gKHsgZGVwcyB9KSA9PiB7XHJcbiAgICBpZiAoZGVwcy5sZW5ndGgpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgZGVwc1tpXS53IHw9IHRyYWNrT3BCaXQ7IC8vIHNldCB3YXMgdHJhY2tlZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuY29uc3QgZmluYWxpemVEZXBNYXJrZXJzID0gKGVmZmVjdCkgPT4ge1xyXG4gICAgY29uc3QgeyBkZXBzIH0gPSBlZmZlY3Q7XHJcbiAgICBpZiAoZGVwcy5sZW5ndGgpIHtcclxuICAgICAgICBsZXQgcHRyID0gMDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgZGVwID0gZGVwc1tpXTtcclxuICAgICAgICAgICAgaWYgKHdhc1RyYWNrZWQoZGVwKSAmJiAhbmV3VHJhY2tlZChkZXApKSB7XHJcbiAgICAgICAgICAgICAgICBkZXAuZGVsZXRlKGVmZmVjdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkZXBzW3B0cisrXSA9IGRlcDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBjbGVhciBiaXRzXHJcbiAgICAgICAgICAgIGRlcC53ICY9IH50cmFja09wQml0O1xyXG4gICAgICAgICAgICBkZXAubiAmPSB+dHJhY2tPcEJpdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZGVwcy5sZW5ndGggPSBwdHI7XHJcbiAgICB9XHJcbn07XG5cbmNvbnN0IHRhcmdldE1hcCA9IG5ldyBXZWFrTWFwKCk7XHJcbi8vIFRoZSBudW1iZXIgb2YgZWZmZWN0cyBjdXJyZW50bHkgYmVpbmcgdHJhY2tlZCByZWN1cnNpdmVseS5cclxubGV0IGVmZmVjdFRyYWNrRGVwdGggPSAwO1xyXG5sZXQgdHJhY2tPcEJpdCA9IDE7XHJcbi8qKlxyXG4gKiBUaGUgYml0d2lzZSB0cmFjayBtYXJrZXJzIHN1cHBvcnQgYXQgbW9zdCAzMCBsZXZlbHMgb2YgcmVjdXJzaW9uLlxyXG4gKiBUaGlzIHZhbHVlIGlzIGNob3NlbiB0byBlbmFibGUgbW9kZXJuIEpTIGVuZ2luZXMgdG8gdXNlIGEgU01JIG9uIGFsbCBwbGF0Zm9ybXMuXHJcbiAqIFdoZW4gcmVjdXJzaW9uIGRlcHRoIGlzIGdyZWF0ZXIsIGZhbGwgYmFjayB0byB1c2luZyBhIGZ1bGwgY2xlYW51cC5cclxuICovXHJcbmNvbnN0IG1heE1hcmtlckJpdHMgPSAzMDtcclxubGV0IGFjdGl2ZUVmZmVjdDtcclxuY29uc3QgSVRFUkFURV9LRVkgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gJ2l0ZXJhdGUnIDogJycpO1xyXG5jb25zdCBNQVBfS0VZX0lURVJBVEVfS0VZID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/ICdNYXAga2V5IGl0ZXJhdGUnIDogJycpO1xyXG5jbGFzcyBSZWFjdGl2ZUVmZmVjdCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihmbiwgc2NoZWR1bGVyID0gbnVsbCwgc2NvcGUpIHtcclxuICAgICAgICB0aGlzLmZuID0gZm47XHJcbiAgICAgICAgdGhpcy5zY2hlZHVsZXIgPSBzY2hlZHVsZXI7XHJcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZGVwcyA9IFtdO1xyXG4gICAgICAgIHRoaXMucGFyZW50ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHJlY29yZEVmZmVjdFNjb3BlKHRoaXMsIHNjb3BlKTtcclxuICAgIH1cclxuICAgIHJ1bigpIHtcclxuICAgICAgICBpZiAoIXRoaXMuYWN0aXZlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBwYXJlbnQgPSBhY3RpdmVFZmZlY3Q7XHJcbiAgICAgICAgbGV0IGxhc3RTaG91bGRUcmFjayA9IHNob3VsZFRyYWNrO1xyXG4gICAgICAgIHdoaWxlIChwYXJlbnQpIHtcclxuICAgICAgICAgICAgaWYgKHBhcmVudCA9PT0gdGhpcykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFyZW50ID0gYWN0aXZlRWZmZWN0O1xyXG4gICAgICAgICAgICBhY3RpdmVFZmZlY3QgPSB0aGlzO1xyXG4gICAgICAgICAgICBzaG91bGRUcmFjayA9IHRydWU7XHJcbiAgICAgICAgICAgIHRyYWNrT3BCaXQgPSAxIDw8ICsrZWZmZWN0VHJhY2tEZXB0aDtcclxuICAgICAgICAgICAgaWYgKGVmZmVjdFRyYWNrRGVwdGggPD0gbWF4TWFya2VyQml0cykge1xyXG4gICAgICAgICAgICAgICAgaW5pdERlcE1hcmtlcnModGhpcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjbGVhbnVwRWZmZWN0KHRoaXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkge1xyXG4gICAgICAgICAgICBpZiAoZWZmZWN0VHJhY2tEZXB0aCA8PSBtYXhNYXJrZXJCaXRzKSB7XHJcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZURlcE1hcmtlcnModGhpcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdHJhY2tPcEJpdCA9IDEgPDwgLS1lZmZlY3RUcmFja0RlcHRoO1xyXG4gICAgICAgICAgICBhY3RpdmVFZmZlY3QgPSB0aGlzLnBhcmVudDtcclxuICAgICAgICAgICAgc2hvdWxkVHJhY2sgPSBsYXN0U2hvdWxkVHJhY2s7XHJcbiAgICAgICAgICAgIHRoaXMucGFyZW50ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kZWZlclN0b3ApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgc3RvcCgpIHtcclxuICAgICAgICAvLyBzdG9wcGVkIHdoaWxlIHJ1bm5pbmcgaXRzZWxmIC0gZGVmZXIgdGhlIGNsZWFudXBcclxuICAgICAgICBpZiAoYWN0aXZlRWZmZWN0ID09PSB0aGlzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVmZXJTdG9wID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5hY3RpdmUpIHtcclxuICAgICAgICAgICAgY2xlYW51cEVmZmVjdCh0aGlzKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMub25TdG9wKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uU3RvcCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGNsZWFudXBFZmZlY3QoZWZmZWN0KSB7XHJcbiAgICBjb25zdCB7IGRlcHMgfSA9IGVmZmVjdDtcclxuICAgIGlmIChkZXBzLmxlbmd0aCkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGVwcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBkZXBzW2ldLmRlbGV0ZShlZmZlY3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkZXBzLmxlbmd0aCA9IDA7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZWZmZWN0KGZuLCBvcHRpb25zKSB7XHJcbiAgICBpZiAoZm4uZWZmZWN0KSB7XHJcbiAgICAgICAgZm4gPSBmbi5lZmZlY3QuZm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBfZWZmZWN0ID0gbmV3IFJlYWN0aXZlRWZmZWN0KGZuKTtcclxuICAgIGlmIChvcHRpb25zKSB7XHJcbiAgICAgICAgZXh0ZW5kKF9lZmZlY3QsIG9wdGlvbnMpO1xyXG4gICAgICAgIGlmIChvcHRpb25zLnNjb3BlKVxyXG4gICAgICAgICAgICByZWNvcmRFZmZlY3RTY29wZShfZWZmZWN0LCBvcHRpb25zLnNjb3BlKTtcclxuICAgIH1cclxuICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5sYXp5KSB7XHJcbiAgICAgICAgX2VmZmVjdC5ydW4oKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJ1bm5lciA9IF9lZmZlY3QucnVuLmJpbmQoX2VmZmVjdCk7XHJcbiAgICBydW5uZXIuZWZmZWN0ID0gX2VmZmVjdDtcclxuICAgIHJldHVybiBydW5uZXI7XHJcbn1cclxuZnVuY3Rpb24gc3RvcChydW5uZXIpIHtcclxuICAgIHJ1bm5lci5lZmZlY3Quc3RvcCgpO1xyXG59XHJcbmxldCBzaG91bGRUcmFjayA9IHRydWU7XHJcbmNvbnN0IHRyYWNrU3RhY2sgPSBbXTtcclxuZnVuY3Rpb24gcGF1c2VUcmFja2luZygpIHtcclxuICAgIHRyYWNrU3RhY2sucHVzaChzaG91bGRUcmFjayk7XHJcbiAgICBzaG91bGRUcmFjayA9IGZhbHNlO1xyXG59XHJcbmZ1bmN0aW9uIGVuYWJsZVRyYWNraW5nKCkge1xyXG4gICAgdHJhY2tTdGFjay5wdXNoKHNob3VsZFRyYWNrKTtcclxuICAgIHNob3VsZFRyYWNrID0gdHJ1ZTtcclxufVxyXG5mdW5jdGlvbiByZXNldFRyYWNraW5nKCkge1xyXG4gICAgY29uc3QgbGFzdCA9IHRyYWNrU3RhY2sucG9wKCk7XHJcbiAgICBzaG91bGRUcmFjayA9IGxhc3QgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBsYXN0O1xyXG59XHJcbmZ1bmN0aW9uIHRyYWNrKHRhcmdldCwgdHlwZSwga2V5KSB7XHJcbiAgICBpZiAoc2hvdWxkVHJhY2sgJiYgYWN0aXZlRWZmZWN0KSB7XHJcbiAgICAgICAgbGV0IGRlcHNNYXAgPSB0YXJnZXRNYXAuZ2V0KHRhcmdldCk7XHJcbiAgICAgICAgaWYgKCFkZXBzTWFwKSB7XHJcbiAgICAgICAgICAgIHRhcmdldE1hcC5zZXQodGFyZ2V0LCAoZGVwc01hcCA9IG5ldyBNYXAoKSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZGVwID0gZGVwc01hcC5nZXQoa2V5KTtcclxuICAgICAgICBpZiAoIWRlcCkge1xyXG4gICAgICAgICAgICBkZXBzTWFwLnNldChrZXksIChkZXAgPSBjcmVhdGVEZXAoKSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBldmVudEluZm8gPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICAgICAgPyB7IGVmZmVjdDogYWN0aXZlRWZmZWN0LCB0YXJnZXQsIHR5cGUsIGtleSB9XHJcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xyXG4gICAgICAgIHRyYWNrRWZmZWN0cyhkZXAsIGV2ZW50SW5mbyk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdHJhY2tFZmZlY3RzKGRlcCwgZGVidWdnZXJFdmVudEV4dHJhSW5mbykge1xyXG4gICAgbGV0IHNob3VsZFRyYWNrID0gZmFsc2U7XHJcbiAgICBpZiAoZWZmZWN0VHJhY2tEZXB0aCA8PSBtYXhNYXJrZXJCaXRzKSB7XHJcbiAgICAgICAgaWYgKCFuZXdUcmFja2VkKGRlcCkpIHtcclxuICAgICAgICAgICAgZGVwLm4gfD0gdHJhY2tPcEJpdDsgLy8gc2V0IG5ld2x5IHRyYWNrZWRcclxuICAgICAgICAgICAgc2hvdWxkVHJhY2sgPSAhd2FzVHJhY2tlZChkZXApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIEZ1bGwgY2xlYW51cCBtb2RlLlxyXG4gICAgICAgIHNob3VsZFRyYWNrID0gIWRlcC5oYXMoYWN0aXZlRWZmZWN0KTtcclxuICAgIH1cclxuICAgIGlmIChzaG91bGRUcmFjaykge1xyXG4gICAgICAgIGRlcC5hZGQoYWN0aXZlRWZmZWN0KTtcclxuICAgICAgICBhY3RpdmVFZmZlY3QuZGVwcy5wdXNoKGRlcCk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBhY3RpdmVFZmZlY3Qub25UcmFjaykge1xyXG4gICAgICAgICAgICBhY3RpdmVFZmZlY3Qub25UcmFjayhPYmplY3QuYXNzaWduKHsgZWZmZWN0OiBhY3RpdmVFZmZlY3QgfSwgZGVidWdnZXJFdmVudEV4dHJhSW5mbykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB0cmlnZ2VyKHRhcmdldCwgdHlwZSwga2V5LCBuZXdWYWx1ZSwgb2xkVmFsdWUsIG9sZFRhcmdldCkge1xyXG4gICAgY29uc3QgZGVwc01hcCA9IHRhcmdldE1hcC5nZXQodGFyZ2V0KTtcclxuICAgIGlmICghZGVwc01hcCkge1xyXG4gICAgICAgIC8vIG5ldmVyIGJlZW4gdHJhY2tlZFxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBkZXBzID0gW107XHJcbiAgICBpZiAodHlwZSA9PT0gXCJjbGVhclwiIC8qIFRyaWdnZXJPcFR5cGVzLkNMRUFSICovKSB7XHJcbiAgICAgICAgLy8gY29sbGVjdGlvbiBiZWluZyBjbGVhcmVkXHJcbiAgICAgICAgLy8gdHJpZ2dlciBhbGwgZWZmZWN0cyBmb3IgdGFyZ2V0XHJcbiAgICAgICAgZGVwcyA9IFsuLi5kZXBzTWFwLnZhbHVlcygpXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGtleSA9PT0gJ2xlbmd0aCcgJiYgaXNBcnJheSh0YXJnZXQpKSB7XHJcbiAgICAgICAgZGVwc01hcC5mb3JFYWNoKChkZXAsIGtleSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoa2V5ID09PSAnbGVuZ3RoJyB8fCBrZXkgPj0gbmV3VmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGRlcHMucHVzaChkZXApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBzY2hlZHVsZSBydW5zIGZvciBTRVQgfCBBREQgfCBERUxFVEVcclxuICAgICAgICBpZiAoa2V5ICE9PSB2b2lkIDApIHtcclxuICAgICAgICAgICAgZGVwcy5wdXNoKGRlcHNNYXAuZ2V0KGtleSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBhbHNvIHJ1biBmb3IgaXRlcmF0aW9uIGtleSBvbiBBREQgfCBERUxFVEUgfCBNYXAuU0VUXHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJhZGRcIiAvKiBUcmlnZ2VyT3BUeXBlcy5BREQgKi86XHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzQXJyYXkodGFyZ2V0KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlcHMucHVzaChkZXBzTWFwLmdldChJVEVSQVRFX0tFWSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc01hcCh0YXJnZXQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlcHMucHVzaChkZXBzTWFwLmdldChNQVBfS0VZX0lURVJBVEVfS0VZKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNJbnRlZ2VyS2V5KGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBuZXcgaW5kZXggYWRkZWQgdG8gYXJyYXkgLT4gbGVuZ3RoIGNoYW5nZXNcclxuICAgICAgICAgICAgICAgICAgICBkZXBzLnB1c2goZGVwc01hcC5nZXQoJ2xlbmd0aCcpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwiZGVsZXRlXCIgLyogVHJpZ2dlck9wVHlwZXMuREVMRVRFICovOlxyXG4gICAgICAgICAgICAgICAgaWYgKCFpc0FycmF5KHRhcmdldCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBkZXBzLnB1c2goZGVwc01hcC5nZXQoSVRFUkFURV9LRVkpKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNNYXAodGFyZ2V0KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXBzLnB1c2goZGVwc01hcC5nZXQoTUFQX0tFWV9JVEVSQVRFX0tFWSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwic2V0XCIgLyogVHJpZ2dlck9wVHlwZXMuU0VUICovOlxyXG4gICAgICAgICAgICAgICAgaWYgKGlzTWFwKHRhcmdldCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBkZXBzLnB1c2goZGVwc01hcC5nZXQoSVRFUkFURV9LRVkpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGV2ZW50SW5mbyA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgID8geyB0YXJnZXQsIHR5cGUsIGtleSwgbmV3VmFsdWUsIG9sZFZhbHVlLCBvbGRUYXJnZXQgfVxyXG4gICAgICAgIDogdW5kZWZpbmVkO1xyXG4gICAgaWYgKGRlcHMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgaWYgKGRlcHNbMF0pIHtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgdHJpZ2dlckVmZmVjdHMoZGVwc1swXSwgZXZlbnRJbmZvKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRyaWdnZXJFZmZlY3RzKGRlcHNbMF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgZWZmZWN0cyA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgZGVwIG9mIGRlcHMpIHtcclxuICAgICAgICAgICAgaWYgKGRlcCkge1xyXG4gICAgICAgICAgICAgICAgZWZmZWN0cy5wdXNoKC4uLmRlcCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB0cmlnZ2VyRWZmZWN0cyhjcmVhdGVEZXAoZWZmZWN0cyksIGV2ZW50SW5mbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0cmlnZ2VyRWZmZWN0cyhjcmVhdGVEZXAoZWZmZWN0cykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB0cmlnZ2VyRWZmZWN0cyhkZXAsIGRlYnVnZ2VyRXZlbnRFeHRyYUluZm8pIHtcclxuICAgIC8vIHNwcmVhZCBpbnRvIGFycmF5IGZvciBzdGFiaWxpemF0aW9uXHJcbiAgICBjb25zdCBlZmZlY3RzID0gaXNBcnJheShkZXApID8gZGVwIDogWy4uLmRlcF07XHJcbiAgICBmb3IgKGNvbnN0IGVmZmVjdCBvZiBlZmZlY3RzKSB7XHJcbiAgICAgICAgaWYgKGVmZmVjdC5jb21wdXRlZCkge1xyXG4gICAgICAgICAgICB0cmlnZ2VyRWZmZWN0KGVmZmVjdCwgZGVidWdnZXJFdmVudEV4dHJhSW5mbyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBlZmZlY3Qgb2YgZWZmZWN0cykge1xyXG4gICAgICAgIGlmICghZWZmZWN0LmNvbXB1dGVkKSB7XHJcbiAgICAgICAgICAgIHRyaWdnZXJFZmZlY3QoZWZmZWN0LCBkZWJ1Z2dlckV2ZW50RXh0cmFJbmZvKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdHJpZ2dlckVmZmVjdChlZmZlY3QsIGRlYnVnZ2VyRXZlbnRFeHRyYUluZm8pIHtcclxuICAgIGlmIChlZmZlY3QgIT09IGFjdGl2ZUVmZmVjdCB8fCBlZmZlY3QuYWxsb3dSZWN1cnNlKSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBlZmZlY3Qub25UcmlnZ2VyKSB7XHJcbiAgICAgICAgICAgIGVmZmVjdC5vblRyaWdnZXIoZXh0ZW5kKHsgZWZmZWN0IH0sIGRlYnVnZ2VyRXZlbnRFeHRyYUluZm8pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGVmZmVjdC5zY2hlZHVsZXIpIHtcclxuICAgICAgICAgICAgZWZmZWN0LnNjaGVkdWxlcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZWZmZWN0LnJ1bigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxuXG5jb25zdCBpc05vblRyYWNrYWJsZUtleXMgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoYF9fcHJvdG9fXyxfX3ZfaXNSZWYsX19pc1Z1ZWApO1xyXG5jb25zdCBidWlsdEluU3ltYm9scyA9IG5ldyBTZXQoXHJcbi8qI19fUFVSRV9fKi9cclxuT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoU3ltYm9sKVxyXG4gICAgLy8gaW9zMTAueCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhTeW1ib2wpIGNhbiBlbnVtZXJhdGUgJ2FyZ3VtZW50cycgYW5kICdjYWxsZXInXHJcbiAgICAvLyBidXQgYWNjZXNzaW5nIHRoZW0gb24gU3ltYm9sIGxlYWRzIHRvIFR5cGVFcnJvciBiZWNhdXNlIFN5bWJvbCBpcyBhIHN0cmljdCBtb2RlXHJcbiAgICAvLyBmdW5jdGlvblxyXG4gICAgLmZpbHRlcihrZXkgPT4ga2V5ICE9PSAnYXJndW1lbnRzJyAmJiBrZXkgIT09ICdjYWxsZXInKVxyXG4gICAgLm1hcChrZXkgPT4gU3ltYm9sW2tleV0pXHJcbiAgICAuZmlsdGVyKGlzU3ltYm9sKSk7XHJcbmNvbnN0IGdldCA9IC8qI19fUFVSRV9fKi8gY3JlYXRlR2V0dGVyKCk7XHJcbmNvbnN0IHNoYWxsb3dHZXQgPSAvKiNfX1BVUkVfXyovIGNyZWF0ZUdldHRlcihmYWxzZSwgdHJ1ZSk7XHJcbmNvbnN0IHJlYWRvbmx5R2V0ID0gLyojX19QVVJFX18qLyBjcmVhdGVHZXR0ZXIodHJ1ZSk7XHJcbmNvbnN0IHNoYWxsb3dSZWFkb25seUdldCA9IC8qI19fUFVSRV9fKi8gY3JlYXRlR2V0dGVyKHRydWUsIHRydWUpO1xyXG5jb25zdCBhcnJheUluc3RydW1lbnRhdGlvbnMgPSAvKiNfX1BVUkVfXyovIGNyZWF0ZUFycmF5SW5zdHJ1bWVudGF0aW9ucygpO1xyXG5mdW5jdGlvbiBjcmVhdGVBcnJheUluc3RydW1lbnRhdGlvbnMoKSB7XHJcbiAgICBjb25zdCBpbnN0cnVtZW50YXRpb25zID0ge307XHJcbiAgICBbJ2luY2x1ZGVzJywgJ2luZGV4T2YnLCAnbGFzdEluZGV4T2YnXS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgaW5zdHJ1bWVudGF0aW9uc1trZXldID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcclxuICAgICAgICAgICAgY29uc3QgYXJyID0gdG9SYXcodGhpcyk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gdGhpcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHRyYWNrKGFyciwgXCJnZXRcIiAvKiBUcmFja09wVHlwZXMuR0VUICovLCBpICsgJycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHdlIHJ1biB0aGUgbWV0aG9kIHVzaW5nIHRoZSBvcmlnaW5hbCBhcmdzIGZpcnN0ICh3aGljaCBtYXkgYmUgcmVhY3RpdmUpXHJcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGFycltrZXldKC4uLmFyZ3MpO1xyXG4gICAgICAgICAgICBpZiAocmVzID09PSAtMSB8fCByZXMgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZiB0aGF0IGRpZG4ndCB3b3JrLCBydW4gaXQgYWdhaW4gdXNpbmcgcmF3IHZhbHVlcy5cclxuICAgICAgICAgICAgICAgIHJldHVybiBhcnJba2V5XSguLi5hcmdzLm1hcCh0b1JhdykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9KTtcclxuICAgIFsncHVzaCcsICdwb3AnLCAnc2hpZnQnLCAndW5zaGlmdCcsICdzcGxpY2UnXS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgaW5zdHJ1bWVudGF0aW9uc1trZXldID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcclxuICAgICAgICAgICAgcGF1c2VUcmFja2luZygpO1xyXG4gICAgICAgICAgICBjb25zdCByZXMgPSB0b1Jhdyh0aGlzKVtrZXldLmFwcGx5KHRoaXMsIGFyZ3MpO1xyXG4gICAgICAgICAgICByZXNldFRyYWNraW5nKCk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgfTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGluc3RydW1lbnRhdGlvbnM7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlR2V0dGVyKGlzUmVhZG9ubHkgPSBmYWxzZSwgc2hhbGxvdyA9IGZhbHNlKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gZ2V0KHRhcmdldCwga2V5LCByZWNlaXZlcikge1xyXG4gICAgICAgIGlmIChrZXkgPT09IFwiX192X2lzUmVhY3RpdmVcIiAvKiBSZWFjdGl2ZUZsYWdzLklTX1JFQUNUSVZFICovKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAhaXNSZWFkb25seTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoa2V5ID09PSBcIl9fdl9pc1JlYWRvbmx5XCIgLyogUmVhY3RpdmVGbGFncy5JU19SRUFET05MWSAqLykge1xyXG4gICAgICAgICAgICByZXR1cm4gaXNSZWFkb25seTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoa2V5ID09PSBcIl9fdl9pc1NoYWxsb3dcIiAvKiBSZWFjdGl2ZUZsYWdzLklTX1NIQUxMT1cgKi8pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHNoYWxsb3c7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGtleSA9PT0gXCJfX3ZfcmF3XCIgLyogUmVhY3RpdmVGbGFncy5SQVcgKi8gJiZcclxuICAgICAgICAgICAgcmVjZWl2ZXIgPT09XHJcbiAgICAgICAgICAgICAgICAoaXNSZWFkb25seVxyXG4gICAgICAgICAgICAgICAgICAgID8gc2hhbGxvd1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNoYWxsb3dSZWFkb25seU1hcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHJlYWRvbmx5TWFwXHJcbiAgICAgICAgICAgICAgICAgICAgOiBzaGFsbG93XHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2hhbGxvd1JlYWN0aXZlTWFwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcmVhY3RpdmVNYXApLmdldCh0YXJnZXQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHRhcmdldElzQXJyYXkgPSBpc0FycmF5KHRhcmdldCk7XHJcbiAgICAgICAgaWYgKCFpc1JlYWRvbmx5ICYmIHRhcmdldElzQXJyYXkgJiYgaGFzT3duKGFycmF5SW5zdHJ1bWVudGF0aW9ucywga2V5KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQoYXJyYXlJbnN0cnVtZW50YXRpb25zLCBrZXksIHJlY2VpdmVyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcmVzID0gUmVmbGVjdC5nZXQodGFyZ2V0LCBrZXksIHJlY2VpdmVyKTtcclxuICAgICAgICBpZiAoaXNTeW1ib2woa2V5KSA/IGJ1aWx0SW5TeW1ib2xzLmhhcyhrZXkpIDogaXNOb25UcmFja2FibGVLZXlzKGtleSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFpc1JlYWRvbmx5KSB7XHJcbiAgICAgICAgICAgIHRyYWNrKHRhcmdldCwgXCJnZXRcIiAvKiBUcmFja09wVHlwZXMuR0VUICovLCBrZXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2hhbGxvdykge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNSZWYocmVzKSkge1xyXG4gICAgICAgICAgICAvLyByZWYgdW53cmFwcGluZyAtIHNraXAgdW53cmFwIGZvciBBcnJheSArIGludGVnZXIga2V5LlxyXG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0SXNBcnJheSAmJiBpc0ludGVnZXJLZXkoa2V5KSA/IHJlcyA6IHJlcy52YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzT2JqZWN0KHJlcykpIHtcclxuICAgICAgICAgICAgLy8gQ29udmVydCByZXR1cm5lZCB2YWx1ZSBpbnRvIGEgcHJveHkgYXMgd2VsbC4gd2UgZG8gdGhlIGlzT2JqZWN0IGNoZWNrXHJcbiAgICAgICAgICAgIC8vIGhlcmUgdG8gYXZvaWQgaW52YWxpZCB2YWx1ZSB3YXJuaW5nLiBBbHNvIG5lZWQgdG8gbGF6eSBhY2Nlc3MgcmVhZG9ubHlcclxuICAgICAgICAgICAgLy8gYW5kIHJlYWN0aXZlIGhlcmUgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jeS5cclxuICAgICAgICAgICAgcmV0dXJuIGlzUmVhZG9ubHkgPyByZWFkb25seShyZXMpIDogcmVhY3RpdmUocmVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgIH07XHJcbn1cclxuY29uc3Qgc2V0ID0gLyojX19QVVJFX18qLyBjcmVhdGVTZXR0ZXIoKTtcclxuY29uc3Qgc2hhbGxvd1NldCA9IC8qI19fUFVSRV9fKi8gY3JlYXRlU2V0dGVyKHRydWUpO1xyXG5mdW5jdGlvbiBjcmVhdGVTZXR0ZXIoc2hhbGxvdyA9IGZhbHNlKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gc2V0KHRhcmdldCwga2V5LCB2YWx1ZSwgcmVjZWl2ZXIpIHtcclxuICAgICAgICBsZXQgb2xkVmFsdWUgPSB0YXJnZXRba2V5XTtcclxuICAgICAgICBpZiAoaXNSZWFkb25seShvbGRWYWx1ZSkgJiYgaXNSZWYob2xkVmFsdWUpICYmICFpc1JlZih2YWx1ZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXNoYWxsb3cpIHtcclxuICAgICAgICAgICAgaWYgKCFpc1NoYWxsb3codmFsdWUpICYmICFpc1JlYWRvbmx5KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgb2xkVmFsdWUgPSB0b1JhdyhvbGRWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHRvUmF3KHZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIWlzQXJyYXkodGFyZ2V0KSAmJiBpc1JlZihvbGRWYWx1ZSkgJiYgIWlzUmVmKHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgb2xkVmFsdWUudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGhhZEtleSA9IGlzQXJyYXkodGFyZ2V0KSAmJiBpc0ludGVnZXJLZXkoa2V5KVxyXG4gICAgICAgICAgICA/IE51bWJlcihrZXkpIDwgdGFyZ2V0Lmxlbmd0aFxyXG4gICAgICAgICAgICA6IGhhc093bih0YXJnZXQsIGtleSk7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gUmVmbGVjdC5zZXQodGFyZ2V0LCBrZXksIHZhbHVlLCByZWNlaXZlcik7XHJcbiAgICAgICAgLy8gZG9uJ3QgdHJpZ2dlciBpZiB0YXJnZXQgaXMgc29tZXRoaW5nIHVwIGluIHRoZSBwcm90b3R5cGUgY2hhaW4gb2Ygb3JpZ2luYWxcclxuICAgICAgICBpZiAodGFyZ2V0ID09PSB0b1JhdyhyZWNlaXZlcikpIHtcclxuICAgICAgICAgICAgaWYgKCFoYWRLZXkpIHtcclxuICAgICAgICAgICAgICAgIHRyaWdnZXIodGFyZ2V0LCBcImFkZFwiIC8qIFRyaWdnZXJPcFR5cGVzLkFERCAqLywga2V5LCB2YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaGFzQ2hhbmdlZCh2YWx1ZSwgb2xkVmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICB0cmlnZ2VyKHRhcmdldCwgXCJzZXRcIiAvKiBUcmlnZ2VyT3BUeXBlcy5TRVQgKi8sIGtleSwgdmFsdWUsIG9sZFZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBkZWxldGVQcm9wZXJ0eSh0YXJnZXQsIGtleSkge1xyXG4gICAgY29uc3QgaGFkS2V5ID0gaGFzT3duKHRhcmdldCwga2V5KTtcclxuICAgIGNvbnN0IG9sZFZhbHVlID0gdGFyZ2V0W2tleV07XHJcbiAgICBjb25zdCByZXN1bHQgPSBSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KHRhcmdldCwga2V5KTtcclxuICAgIGlmIChyZXN1bHQgJiYgaGFkS2V5KSB7XHJcbiAgICAgICAgdHJpZ2dlcih0YXJnZXQsIFwiZGVsZXRlXCIgLyogVHJpZ2dlck9wVHlwZXMuREVMRVRFICovLCBrZXksIHVuZGVmaW5lZCwgb2xkVmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5mdW5jdGlvbiBoYXModGFyZ2V0LCBrZXkpIHtcclxuICAgIGNvbnN0IHJlc3VsdCA9IFJlZmxlY3QuaGFzKHRhcmdldCwga2V5KTtcclxuICAgIGlmICghaXNTeW1ib2woa2V5KSB8fCAhYnVpbHRJblN5bWJvbHMuaGFzKGtleSkpIHtcclxuICAgICAgICB0cmFjayh0YXJnZXQsIFwiaGFzXCIgLyogVHJhY2tPcFR5cGVzLkhBUyAqLywga2V5KTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuZnVuY3Rpb24gb3duS2V5cyh0YXJnZXQpIHtcclxuICAgIHRyYWNrKHRhcmdldCwgXCJpdGVyYXRlXCIgLyogVHJhY2tPcFR5cGVzLklURVJBVEUgKi8sIGlzQXJyYXkodGFyZ2V0KSA/ICdsZW5ndGgnIDogSVRFUkFURV9LRVkpO1xyXG4gICAgcmV0dXJuIFJlZmxlY3Qub3duS2V5cyh0YXJnZXQpO1xyXG59XHJcbmNvbnN0IG11dGFibGVIYW5kbGVycyA9IHtcclxuICAgIGdldCxcclxuICAgIHNldCxcclxuICAgIGRlbGV0ZVByb3BlcnR5LFxyXG4gICAgaGFzLFxyXG4gICAgb3duS2V5c1xyXG59O1xyXG5jb25zdCByZWFkb25seUhhbmRsZXJzID0ge1xyXG4gICAgZ2V0OiByZWFkb25seUdldCxcclxuICAgIHNldCh0YXJnZXQsIGtleSkge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgd2FybihgU2V0IG9wZXJhdGlvbiBvbiBrZXkgXCIke1N0cmluZyhrZXkpfVwiIGZhaWxlZDogdGFyZ2V0IGlzIHJlYWRvbmx5LmAsIHRhcmdldCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSxcclxuICAgIGRlbGV0ZVByb3BlcnR5KHRhcmdldCwga2V5KSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBEZWxldGUgb3BlcmF0aW9uIG9uIGtleSBcIiR7U3RyaW5nKGtleSl9XCIgZmFpbGVkOiB0YXJnZXQgaXMgcmVhZG9ubHkuYCwgdGFyZ2V0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IHNoYWxsb3dSZWFjdGl2ZUhhbmRsZXJzID0gLyojX19QVVJFX18qLyBleHRlbmQoe30sIG11dGFibGVIYW5kbGVycywge1xyXG4gICAgZ2V0OiBzaGFsbG93R2V0LFxyXG4gICAgc2V0OiBzaGFsbG93U2V0XHJcbn0pO1xyXG4vLyBQcm9wcyBoYW5kbGVycyBhcmUgc3BlY2lhbCBpbiB0aGUgc2Vuc2UgdGhhdCBpdCBzaG91bGQgbm90IHVud3JhcCB0b3AtbGV2ZWxcclxuLy8gcmVmcyAoaW4gb3JkZXIgdG8gYWxsb3cgcmVmcyB0byBiZSBleHBsaWNpdGx5IHBhc3NlZCBkb3duKSwgYnV0IHNob3VsZFxyXG4vLyByZXRhaW4gdGhlIHJlYWN0aXZpdHkgb2YgdGhlIG5vcm1hbCByZWFkb25seSBvYmplY3QuXHJcbmNvbnN0IHNoYWxsb3dSZWFkb25seUhhbmRsZXJzID0gLyojX19QVVJFX18qLyBleHRlbmQoe30sIHJlYWRvbmx5SGFuZGxlcnMsIHtcclxuICAgIGdldDogc2hhbGxvd1JlYWRvbmx5R2V0XHJcbn0pO1xuXG5jb25zdCB0b1NoYWxsb3cgPSAodmFsdWUpID0+IHZhbHVlO1xyXG5jb25zdCBnZXRQcm90byA9ICh2KSA9PiBSZWZsZWN0LmdldFByb3RvdHlwZU9mKHYpO1xyXG5mdW5jdGlvbiBnZXQkMSh0YXJnZXQsIGtleSwgaXNSZWFkb25seSA9IGZhbHNlLCBpc1NoYWxsb3cgPSBmYWxzZSkge1xyXG4gICAgLy8gIzE3NzI6IHJlYWRvbmx5KHJlYWN0aXZlKE1hcCkpIHNob3VsZCByZXR1cm4gcmVhZG9ubHkgKyByZWFjdGl2ZSB2ZXJzaW9uXHJcbiAgICAvLyBvZiB0aGUgdmFsdWVcclxuICAgIHRhcmdldCA9IHRhcmdldFtcIl9fdl9yYXdcIiAvKiBSZWFjdGl2ZUZsYWdzLlJBVyAqL107XHJcbiAgICBjb25zdCByYXdUYXJnZXQgPSB0b1Jhdyh0YXJnZXQpO1xyXG4gICAgY29uc3QgcmF3S2V5ID0gdG9SYXcoa2V5KTtcclxuICAgIGlmICghaXNSZWFkb25seSkge1xyXG4gICAgICAgIGlmIChrZXkgIT09IHJhd0tleSkge1xyXG4gICAgICAgICAgICB0cmFjayhyYXdUYXJnZXQsIFwiZ2V0XCIgLyogVHJhY2tPcFR5cGVzLkdFVCAqLywga2V5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJhY2socmF3VGFyZ2V0LCBcImdldFwiIC8qIFRyYWNrT3BUeXBlcy5HRVQgKi8sIHJhd0tleSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IGhhcyB9ID0gZ2V0UHJvdG8ocmF3VGFyZ2V0KTtcclxuICAgIGNvbnN0IHdyYXAgPSBpc1NoYWxsb3cgPyB0b1NoYWxsb3cgOiBpc1JlYWRvbmx5ID8gdG9SZWFkb25seSA6IHRvUmVhY3RpdmU7XHJcbiAgICBpZiAoaGFzLmNhbGwocmF3VGFyZ2V0LCBrZXkpKSB7XHJcbiAgICAgICAgcmV0dXJuIHdyYXAodGFyZ2V0LmdldChrZXkpKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGhhcy5jYWxsKHJhd1RhcmdldCwgcmF3S2V5KSkge1xyXG4gICAgICAgIHJldHVybiB3cmFwKHRhcmdldC5nZXQocmF3S2V5KSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0YXJnZXQgIT09IHJhd1RhcmdldCkge1xyXG4gICAgICAgIC8vICMzNjAyIHJlYWRvbmx5KHJlYWN0aXZlKE1hcCkpXHJcbiAgICAgICAgLy8gZW5zdXJlIHRoYXQgdGhlIG5lc3RlZCByZWFjdGl2ZSBgTWFwYCBjYW4gZG8gdHJhY2tpbmcgZm9yIGl0c2VsZlxyXG4gICAgICAgIHRhcmdldC5nZXQoa2V5KTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBoYXMkMShrZXksIGlzUmVhZG9ubHkgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gdGhpc1tcIl9fdl9yYXdcIiAvKiBSZWFjdGl2ZUZsYWdzLlJBVyAqL107XHJcbiAgICBjb25zdCByYXdUYXJnZXQgPSB0b1Jhdyh0YXJnZXQpO1xyXG4gICAgY29uc3QgcmF3S2V5ID0gdG9SYXcoa2V5KTtcclxuICAgIGlmICghaXNSZWFkb25seSkge1xyXG4gICAgICAgIGlmIChrZXkgIT09IHJhd0tleSkge1xyXG4gICAgICAgICAgICB0cmFjayhyYXdUYXJnZXQsIFwiaGFzXCIgLyogVHJhY2tPcFR5cGVzLkhBUyAqLywga2V5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJhY2socmF3VGFyZ2V0LCBcImhhc1wiIC8qIFRyYWNrT3BUeXBlcy5IQVMgKi8sIHJhd0tleSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ga2V5ID09PSByYXdLZXlcclxuICAgICAgICA/IHRhcmdldC5oYXMoa2V5KVxyXG4gICAgICAgIDogdGFyZ2V0LmhhcyhrZXkpIHx8IHRhcmdldC5oYXMocmF3S2V5KTtcclxufVxyXG5mdW5jdGlvbiBzaXplKHRhcmdldCwgaXNSZWFkb25seSA9IGZhbHNlKSB7XHJcbiAgICB0YXJnZXQgPSB0YXJnZXRbXCJfX3ZfcmF3XCIgLyogUmVhY3RpdmVGbGFncy5SQVcgKi9dO1xyXG4gICAgIWlzUmVhZG9ubHkgJiYgdHJhY2sodG9SYXcodGFyZ2V0KSwgXCJpdGVyYXRlXCIgLyogVHJhY2tPcFR5cGVzLklURVJBVEUgKi8sIElURVJBVEVfS0VZKTtcclxuICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsICdzaXplJywgdGFyZ2V0KTtcclxufVxyXG5mdW5jdGlvbiBhZGQodmFsdWUpIHtcclxuICAgIHZhbHVlID0gdG9SYXcodmFsdWUpO1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gdG9SYXcodGhpcyk7XHJcbiAgICBjb25zdCBwcm90byA9IGdldFByb3RvKHRhcmdldCk7XHJcbiAgICBjb25zdCBoYWRLZXkgPSBwcm90by5oYXMuY2FsbCh0YXJnZXQsIHZhbHVlKTtcclxuICAgIGlmICghaGFkS2V5KSB7XHJcbiAgICAgICAgdGFyZ2V0LmFkZCh2YWx1ZSk7XHJcbiAgICAgICAgdHJpZ2dlcih0YXJnZXQsIFwiYWRkXCIgLyogVHJpZ2dlck9wVHlwZXMuQUREICovLCB2YWx1ZSwgdmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbn1cclxuZnVuY3Rpb24gc2V0JDEoa2V5LCB2YWx1ZSkge1xyXG4gICAgdmFsdWUgPSB0b1Jhdyh2YWx1ZSk7XHJcbiAgICBjb25zdCB0YXJnZXQgPSB0b1Jhdyh0aGlzKTtcclxuICAgIGNvbnN0IHsgaGFzLCBnZXQgfSA9IGdldFByb3RvKHRhcmdldCk7XHJcbiAgICBsZXQgaGFkS2V5ID0gaGFzLmNhbGwodGFyZ2V0LCBrZXkpO1xyXG4gICAgaWYgKCFoYWRLZXkpIHtcclxuICAgICAgICBrZXkgPSB0b1JhdyhrZXkpO1xyXG4gICAgICAgIGhhZEtleSA9IGhhcy5jYWxsKHRhcmdldCwga2V5KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGNoZWNrSWRlbnRpdHlLZXlzKHRhcmdldCwgaGFzLCBrZXkpO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb2xkVmFsdWUgPSBnZXQuY2FsbCh0YXJnZXQsIGtleSk7XHJcbiAgICB0YXJnZXQuc2V0KGtleSwgdmFsdWUpO1xyXG4gICAgaWYgKCFoYWRLZXkpIHtcclxuICAgICAgICB0cmlnZ2VyKHRhcmdldCwgXCJhZGRcIiAvKiBUcmlnZ2VyT3BUeXBlcy5BREQgKi8sIGtleSwgdmFsdWUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaGFzQ2hhbmdlZCh2YWx1ZSwgb2xkVmFsdWUpKSB7XHJcbiAgICAgICAgdHJpZ2dlcih0YXJnZXQsIFwic2V0XCIgLyogVHJpZ2dlck9wVHlwZXMuU0VUICovLCBrZXksIHZhbHVlLCBvbGRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcztcclxufVxyXG5mdW5jdGlvbiBkZWxldGVFbnRyeShrZXkpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IHRvUmF3KHRoaXMpO1xyXG4gICAgY29uc3QgeyBoYXMsIGdldCB9ID0gZ2V0UHJvdG8odGFyZ2V0KTtcclxuICAgIGxldCBoYWRLZXkgPSBoYXMuY2FsbCh0YXJnZXQsIGtleSk7XHJcbiAgICBpZiAoIWhhZEtleSkge1xyXG4gICAgICAgIGtleSA9IHRvUmF3KGtleSk7XHJcbiAgICAgICAgaGFkS2V5ID0gaGFzLmNhbGwodGFyZ2V0LCBrZXkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgY2hlY2tJZGVudGl0eUtleXModGFyZ2V0LCBoYXMsIGtleSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBvbGRWYWx1ZSA9IGdldCA/IGdldC5jYWxsKHRhcmdldCwga2V5KSA6IHVuZGVmaW5lZDtcclxuICAgIC8vIGZvcndhcmQgdGhlIG9wZXJhdGlvbiBiZWZvcmUgcXVldWVpbmcgcmVhY3Rpb25zXHJcbiAgICBjb25zdCByZXN1bHQgPSB0YXJnZXQuZGVsZXRlKGtleSk7XHJcbiAgICBpZiAoaGFkS2V5KSB7XHJcbiAgICAgICAgdHJpZ2dlcih0YXJnZXQsIFwiZGVsZXRlXCIgLyogVHJpZ2dlck9wVHlwZXMuREVMRVRFICovLCBrZXksIHVuZGVmaW5lZCwgb2xkVmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5mdW5jdGlvbiBjbGVhcigpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IHRvUmF3KHRoaXMpO1xyXG4gICAgY29uc3QgaGFkSXRlbXMgPSB0YXJnZXQuc2l6ZSAhPT0gMDtcclxuICAgIGNvbnN0IG9sZFRhcmdldCA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgID8gaXNNYXAodGFyZ2V0KVxyXG4gICAgICAgICAgICA/IG5ldyBNYXAodGFyZ2V0KVxyXG4gICAgICAgICAgICA6IG5ldyBTZXQodGFyZ2V0KVxyXG4gICAgICAgIDogdW5kZWZpbmVkO1xyXG4gICAgLy8gZm9yd2FyZCB0aGUgb3BlcmF0aW9uIGJlZm9yZSBxdWV1ZWluZyByZWFjdGlvbnNcclxuICAgIGNvbnN0IHJlc3VsdCA9IHRhcmdldC5jbGVhcigpO1xyXG4gICAgaWYgKGhhZEl0ZW1zKSB7XHJcbiAgICAgICAgdHJpZ2dlcih0YXJnZXQsIFwiY2xlYXJcIiAvKiBUcmlnZ2VyT3BUeXBlcy5DTEVBUiAqLywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIG9sZFRhcmdldCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUZvckVhY2goaXNSZWFkb25seSwgaXNTaGFsbG93KSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZykge1xyXG4gICAgICAgIGNvbnN0IG9ic2VydmVkID0gdGhpcztcclxuICAgICAgICBjb25zdCB0YXJnZXQgPSBvYnNlcnZlZFtcIl9fdl9yYXdcIiAvKiBSZWFjdGl2ZUZsYWdzLlJBVyAqL107XHJcbiAgICAgICAgY29uc3QgcmF3VGFyZ2V0ID0gdG9SYXcodGFyZ2V0KTtcclxuICAgICAgICBjb25zdCB3cmFwID0gaXNTaGFsbG93ID8gdG9TaGFsbG93IDogaXNSZWFkb25seSA/IHRvUmVhZG9ubHkgOiB0b1JlYWN0aXZlO1xyXG4gICAgICAgICFpc1JlYWRvbmx5ICYmIHRyYWNrKHJhd1RhcmdldCwgXCJpdGVyYXRlXCIgLyogVHJhY2tPcFR5cGVzLklURVJBVEUgKi8sIElURVJBVEVfS0VZKTtcclxuICAgICAgICByZXR1cm4gdGFyZ2V0LmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcclxuICAgICAgICAgICAgLy8gaW1wb3J0YW50OiBtYWtlIHN1cmUgdGhlIGNhbGxiYWNrIGlzXHJcbiAgICAgICAgICAgIC8vIDEuIGludm9rZWQgd2l0aCB0aGUgcmVhY3RpdmUgbWFwIGFzIGB0aGlzYCBhbmQgM3JkIGFyZ1xyXG4gICAgICAgICAgICAvLyAyLiB0aGUgdmFsdWUgcmVjZWl2ZWQgc2hvdWxkIGJlIGEgY29ycmVzcG9uZGluZyByZWFjdGl2ZS9yZWFkb25seS5cclxuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgd3JhcCh2YWx1ZSksIHdyYXAoa2V5KSwgb2JzZXJ2ZWQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVJdGVyYWJsZU1ldGhvZChtZXRob2QsIGlzUmVhZG9ubHksIGlzU2hhbGxvdykge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICguLi5hcmdzKSB7XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpc1tcIl9fdl9yYXdcIiAvKiBSZWFjdGl2ZUZsYWdzLlJBVyAqL107XHJcbiAgICAgICAgY29uc3QgcmF3VGFyZ2V0ID0gdG9SYXcodGFyZ2V0KTtcclxuICAgICAgICBjb25zdCB0YXJnZXRJc01hcCA9IGlzTWFwKHJhd1RhcmdldCk7XHJcbiAgICAgICAgY29uc3QgaXNQYWlyID0gbWV0aG9kID09PSAnZW50cmllcycgfHwgKG1ldGhvZCA9PT0gU3ltYm9sLml0ZXJhdG9yICYmIHRhcmdldElzTWFwKTtcclxuICAgICAgICBjb25zdCBpc0tleU9ubHkgPSBtZXRob2QgPT09ICdrZXlzJyAmJiB0YXJnZXRJc01hcDtcclxuICAgICAgICBjb25zdCBpbm5lckl0ZXJhdG9yID0gdGFyZ2V0W21ldGhvZF0oLi4uYXJncyk7XHJcbiAgICAgICAgY29uc3Qgd3JhcCA9IGlzU2hhbGxvdyA/IHRvU2hhbGxvdyA6IGlzUmVhZG9ubHkgPyB0b1JlYWRvbmx5IDogdG9SZWFjdGl2ZTtcclxuICAgICAgICAhaXNSZWFkb25seSAmJlxyXG4gICAgICAgICAgICB0cmFjayhyYXdUYXJnZXQsIFwiaXRlcmF0ZVwiIC8qIFRyYWNrT3BUeXBlcy5JVEVSQVRFICovLCBpc0tleU9ubHkgPyBNQVBfS0VZX0lURVJBVEVfS0VZIDogSVRFUkFURV9LRVkpO1xyXG4gICAgICAgIC8vIHJldHVybiBhIHdyYXBwZWQgaXRlcmF0b3Igd2hpY2ggcmV0dXJucyBvYnNlcnZlZCB2ZXJzaW9ucyBvZiB0aGVcclxuICAgICAgICAvLyB2YWx1ZXMgZW1pdHRlZCBmcm9tIHRoZSByZWFsIGl0ZXJhdG9yXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLy8gaXRlcmF0b3IgcHJvdG9jb2xcclxuICAgICAgICAgICAgbmV4dCgpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgdmFsdWUsIGRvbmUgfSA9IGlubmVySXRlcmF0b3IubmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmVcclxuICAgICAgICAgICAgICAgICAgICA/IHsgdmFsdWUsIGRvbmUgfVxyXG4gICAgICAgICAgICAgICAgICAgIDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaXNQYWlyID8gW3dyYXAodmFsdWVbMF0pLCB3cmFwKHZhbHVlWzFdKV0gOiB3cmFwKHZhbHVlKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9uZVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIGl0ZXJhYmxlIHByb3RvY29sXHJcbiAgICAgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVSZWFkb25seU1ldGhvZCh0eXBlKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGFyZ3NbMF0gPyBgb24ga2V5IFwiJHthcmdzWzBdfVwiIGAgOiBgYDtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKGAke2NhcGl0YWxpemUodHlwZSl9IG9wZXJhdGlvbiAke2tleX1mYWlsZWQ6IHRhcmdldCBpcyByZWFkb25seS5gLCB0b1Jhdyh0aGlzKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0eXBlID09PSBcImRlbGV0ZVwiIC8qIFRyaWdnZXJPcFR5cGVzLkRFTEVURSAqLyA/IGZhbHNlIDogdGhpcztcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlSW5zdHJ1bWVudGF0aW9ucygpIHtcclxuICAgIGNvbnN0IG11dGFibGVJbnN0cnVtZW50YXRpb25zID0ge1xyXG4gICAgICAgIGdldChrZXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGdldCQxKHRoaXMsIGtleSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXQgc2l6ZSgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHNpemUodGhpcyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBoYXM6IGhhcyQxLFxyXG4gICAgICAgIGFkZCxcclxuICAgICAgICBzZXQ6IHNldCQxLFxyXG4gICAgICAgIGRlbGV0ZTogZGVsZXRlRW50cnksXHJcbiAgICAgICAgY2xlYXIsXHJcbiAgICAgICAgZm9yRWFjaDogY3JlYXRlRm9yRWFjaChmYWxzZSwgZmFsc2UpXHJcbiAgICB9O1xyXG4gICAgY29uc3Qgc2hhbGxvd0luc3RydW1lbnRhdGlvbnMgPSB7XHJcbiAgICAgICAgZ2V0KGtleSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2V0JDEodGhpcywga2V5LCBmYWxzZSwgdHJ1ZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXQgc2l6ZSgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHNpemUodGhpcyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBoYXM6IGhhcyQxLFxyXG4gICAgICAgIGFkZCxcclxuICAgICAgICBzZXQ6IHNldCQxLFxyXG4gICAgICAgIGRlbGV0ZTogZGVsZXRlRW50cnksXHJcbiAgICAgICAgY2xlYXIsXHJcbiAgICAgICAgZm9yRWFjaDogY3JlYXRlRm9yRWFjaChmYWxzZSwgdHJ1ZSlcclxuICAgIH07XHJcbiAgICBjb25zdCByZWFkb25seUluc3RydW1lbnRhdGlvbnMgPSB7XHJcbiAgICAgICAgZ2V0KGtleSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2V0JDEodGhpcywga2V5LCB0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGdldCBzaXplKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gc2l6ZSh0aGlzLCB0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGhhcyhrZXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGhhcyQxLmNhbGwodGhpcywga2V5LCB0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGFkZDogY3JlYXRlUmVhZG9ubHlNZXRob2QoXCJhZGRcIiAvKiBUcmlnZ2VyT3BUeXBlcy5BREQgKi8pLFxyXG4gICAgICAgIHNldDogY3JlYXRlUmVhZG9ubHlNZXRob2QoXCJzZXRcIiAvKiBUcmlnZ2VyT3BUeXBlcy5TRVQgKi8pLFxyXG4gICAgICAgIGRlbGV0ZTogY3JlYXRlUmVhZG9ubHlNZXRob2QoXCJkZWxldGVcIiAvKiBUcmlnZ2VyT3BUeXBlcy5ERUxFVEUgKi8pLFxyXG4gICAgICAgIGNsZWFyOiBjcmVhdGVSZWFkb25seU1ldGhvZChcImNsZWFyXCIgLyogVHJpZ2dlck9wVHlwZXMuQ0xFQVIgKi8pLFxyXG4gICAgICAgIGZvckVhY2g6IGNyZWF0ZUZvckVhY2godHJ1ZSwgZmFsc2UpXHJcbiAgICB9O1xyXG4gICAgY29uc3Qgc2hhbGxvd1JlYWRvbmx5SW5zdHJ1bWVudGF0aW9ucyA9IHtcclxuICAgICAgICBnZXQoa2V5KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBnZXQkMSh0aGlzLCBrZXksIHRydWUsIHRydWUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0IHNpemUoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzaXplKHRoaXMsIHRydWUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaGFzKGtleSkge1xyXG4gICAgICAgICAgICByZXR1cm4gaGFzJDEuY2FsbCh0aGlzLCBrZXksIHRydWUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgYWRkOiBjcmVhdGVSZWFkb25seU1ldGhvZChcImFkZFwiIC8qIFRyaWdnZXJPcFR5cGVzLkFERCAqLyksXHJcbiAgICAgICAgc2V0OiBjcmVhdGVSZWFkb25seU1ldGhvZChcInNldFwiIC8qIFRyaWdnZXJPcFR5cGVzLlNFVCAqLyksXHJcbiAgICAgICAgZGVsZXRlOiBjcmVhdGVSZWFkb25seU1ldGhvZChcImRlbGV0ZVwiIC8qIFRyaWdnZXJPcFR5cGVzLkRFTEVURSAqLyksXHJcbiAgICAgICAgY2xlYXI6IGNyZWF0ZVJlYWRvbmx5TWV0aG9kKFwiY2xlYXJcIiAvKiBUcmlnZ2VyT3BUeXBlcy5DTEVBUiAqLyksXHJcbiAgICAgICAgZm9yRWFjaDogY3JlYXRlRm9yRWFjaCh0cnVlLCB0cnVlKVxyXG4gICAgfTtcclxuICAgIGNvbnN0IGl0ZXJhdG9yTWV0aG9kcyA9IFsna2V5cycsICd2YWx1ZXMnLCAnZW50cmllcycsIFN5bWJvbC5pdGVyYXRvcl07XHJcbiAgICBpdGVyYXRvck1ldGhvZHMuZm9yRWFjaChtZXRob2QgPT4ge1xyXG4gICAgICAgIG11dGFibGVJbnN0cnVtZW50YXRpb25zW21ldGhvZF0gPSBjcmVhdGVJdGVyYWJsZU1ldGhvZChtZXRob2QsIGZhbHNlLCBmYWxzZSk7XHJcbiAgICAgICAgcmVhZG9ubHlJbnN0cnVtZW50YXRpb25zW21ldGhvZF0gPSBjcmVhdGVJdGVyYWJsZU1ldGhvZChtZXRob2QsIHRydWUsIGZhbHNlKTtcclxuICAgICAgICBzaGFsbG93SW5zdHJ1bWVudGF0aW9uc1ttZXRob2RdID0gY3JlYXRlSXRlcmFibGVNZXRob2QobWV0aG9kLCBmYWxzZSwgdHJ1ZSk7XHJcbiAgICAgICAgc2hhbGxvd1JlYWRvbmx5SW5zdHJ1bWVudGF0aW9uc1ttZXRob2RdID0gY3JlYXRlSXRlcmFibGVNZXRob2QobWV0aG9kLCB0cnVlLCB0cnVlKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAgICBtdXRhYmxlSW5zdHJ1bWVudGF0aW9ucyxcclxuICAgICAgICByZWFkb25seUluc3RydW1lbnRhdGlvbnMsXHJcbiAgICAgICAgc2hhbGxvd0luc3RydW1lbnRhdGlvbnMsXHJcbiAgICAgICAgc2hhbGxvd1JlYWRvbmx5SW5zdHJ1bWVudGF0aW9uc1xyXG4gICAgXTtcclxufVxyXG5jb25zdCBbbXV0YWJsZUluc3RydW1lbnRhdGlvbnMsIHJlYWRvbmx5SW5zdHJ1bWVudGF0aW9ucywgc2hhbGxvd0luc3RydW1lbnRhdGlvbnMsIHNoYWxsb3dSZWFkb25seUluc3RydW1lbnRhdGlvbnNdID0gLyogI19fUFVSRV9fKi8gY3JlYXRlSW5zdHJ1bWVudGF0aW9ucygpO1xyXG5mdW5jdGlvbiBjcmVhdGVJbnN0cnVtZW50YXRpb25HZXR0ZXIoaXNSZWFkb25seSwgc2hhbGxvdykge1xyXG4gICAgY29uc3QgaW5zdHJ1bWVudGF0aW9ucyA9IHNoYWxsb3dcclxuICAgICAgICA/IGlzUmVhZG9ubHlcclxuICAgICAgICAgICAgPyBzaGFsbG93UmVhZG9ubHlJbnN0cnVtZW50YXRpb25zXHJcbiAgICAgICAgICAgIDogc2hhbGxvd0luc3RydW1lbnRhdGlvbnNcclxuICAgICAgICA6IGlzUmVhZG9ubHlcclxuICAgICAgICAgICAgPyByZWFkb25seUluc3RydW1lbnRhdGlvbnNcclxuICAgICAgICAgICAgOiBtdXRhYmxlSW5zdHJ1bWVudGF0aW9ucztcclxuICAgIHJldHVybiAodGFyZ2V0LCBrZXksIHJlY2VpdmVyKSA9PiB7XHJcbiAgICAgICAgaWYgKGtleSA9PT0gXCJfX3ZfaXNSZWFjdGl2ZVwiIC8qIFJlYWN0aXZlRmxhZ3MuSVNfUkVBQ1RJVkUgKi8pIHtcclxuICAgICAgICAgICAgcmV0dXJuICFpc1JlYWRvbmx5O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChrZXkgPT09IFwiX192X2lzUmVhZG9ubHlcIiAvKiBSZWFjdGl2ZUZsYWdzLklTX1JFQURPTkxZICovKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpc1JlYWRvbmx5O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChrZXkgPT09IFwiX192X3Jhd1wiIC8qIFJlYWN0aXZlRmxhZ3MuUkFXICovKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBSZWZsZWN0LmdldChoYXNPd24oaW5zdHJ1bWVudGF0aW9ucywga2V5KSAmJiBrZXkgaW4gdGFyZ2V0XHJcbiAgICAgICAgICAgID8gaW5zdHJ1bWVudGF0aW9uc1xyXG4gICAgICAgICAgICA6IHRhcmdldCwga2V5LCByZWNlaXZlcik7XHJcbiAgICB9O1xyXG59XHJcbmNvbnN0IG11dGFibGVDb2xsZWN0aW9uSGFuZGxlcnMgPSB7XHJcbiAgICBnZXQ6IC8qI19fUFVSRV9fKi8gY3JlYXRlSW5zdHJ1bWVudGF0aW9uR2V0dGVyKGZhbHNlLCBmYWxzZSlcclxufTtcclxuY29uc3Qgc2hhbGxvd0NvbGxlY3Rpb25IYW5kbGVycyA9IHtcclxuICAgIGdldDogLyojX19QVVJFX18qLyBjcmVhdGVJbnN0cnVtZW50YXRpb25HZXR0ZXIoZmFsc2UsIHRydWUpXHJcbn07XHJcbmNvbnN0IHJlYWRvbmx5Q29sbGVjdGlvbkhhbmRsZXJzID0ge1xyXG4gICAgZ2V0OiAvKiNfX1BVUkVfXyovIGNyZWF0ZUluc3RydW1lbnRhdGlvbkdldHRlcih0cnVlLCBmYWxzZSlcclxufTtcclxuY29uc3Qgc2hhbGxvd1JlYWRvbmx5Q29sbGVjdGlvbkhhbmRsZXJzID0ge1xyXG4gICAgZ2V0OiAvKiNfX1BVUkVfXyovIGNyZWF0ZUluc3RydW1lbnRhdGlvbkdldHRlcih0cnVlLCB0cnVlKVxyXG59O1xyXG5mdW5jdGlvbiBjaGVja0lkZW50aXR5S2V5cyh0YXJnZXQsIGhhcywga2V5KSB7XHJcbiAgICBjb25zdCByYXdLZXkgPSB0b1JhdyhrZXkpO1xyXG4gICAgaWYgKHJhd0tleSAhPT0ga2V5ICYmIGhhcy5jYWxsKHRhcmdldCwgcmF3S2V5KSkge1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSB0b1Jhd1R5cGUodGFyZ2V0KTtcclxuICAgICAgICBjb25zb2xlLndhcm4oYFJlYWN0aXZlICR7dHlwZX0gY29udGFpbnMgYm90aCB0aGUgcmF3IGFuZCByZWFjdGl2ZSBgICtcclxuICAgICAgICAgICAgYHZlcnNpb25zIG9mIHRoZSBzYW1lIG9iamVjdCR7dHlwZSA9PT0gYE1hcGAgPyBgIGFzIGtleXNgIDogYGB9LCBgICtcclxuICAgICAgICAgICAgYHdoaWNoIGNhbiBsZWFkIHRvIGluY29uc2lzdGVuY2llcy4gYCArXHJcbiAgICAgICAgICAgIGBBdm9pZCBkaWZmZXJlbnRpYXRpbmcgYmV0d2VlbiB0aGUgcmF3IGFuZCByZWFjdGl2ZSB2ZXJzaW9ucyBgICtcclxuICAgICAgICAgICAgYG9mIGFuIG9iamVjdCBhbmQgb25seSB1c2UgdGhlIHJlYWN0aXZlIHZlcnNpb24gaWYgcG9zc2libGUuYCk7XHJcbiAgICB9XHJcbn1cblxuY29uc3QgcmVhY3RpdmVNYXAgPSBuZXcgV2Vha01hcCgpO1xyXG5jb25zdCBzaGFsbG93UmVhY3RpdmVNYXAgPSBuZXcgV2Vha01hcCgpO1xyXG5jb25zdCByZWFkb25seU1hcCA9IG5ldyBXZWFrTWFwKCk7XHJcbmNvbnN0IHNoYWxsb3dSZWFkb25seU1hcCA9IG5ldyBXZWFrTWFwKCk7XHJcbmZ1bmN0aW9uIHRhcmdldFR5cGVNYXAocmF3VHlwZSkge1xyXG4gICAgc3dpdGNoIChyYXdUeXBlKSB7XHJcbiAgICAgICAgY2FzZSAnT2JqZWN0JzpcclxuICAgICAgICBjYXNlICdBcnJheSc6XHJcbiAgICAgICAgICAgIHJldHVybiAxIC8qIFRhcmdldFR5cGUuQ09NTU9OICovO1xyXG4gICAgICAgIGNhc2UgJ01hcCc6XHJcbiAgICAgICAgY2FzZSAnU2V0JzpcclxuICAgICAgICBjYXNlICdXZWFrTWFwJzpcclxuICAgICAgICBjYXNlICdXZWFrU2V0JzpcclxuICAgICAgICAgICAgcmV0dXJuIDIgLyogVGFyZ2V0VHlwZS5DT0xMRUNUSU9OICovO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHJldHVybiAwIC8qIFRhcmdldFR5cGUuSU5WQUxJRCAqLztcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZXRUYXJnZXRUeXBlKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gdmFsdWVbXCJfX3Zfc2tpcFwiIC8qIFJlYWN0aXZlRmxhZ3MuU0tJUCAqL10gfHwgIU9iamVjdC5pc0V4dGVuc2libGUodmFsdWUpXHJcbiAgICAgICAgPyAwIC8qIFRhcmdldFR5cGUuSU5WQUxJRCAqL1xyXG4gICAgICAgIDogdGFyZ2V0VHlwZU1hcCh0b1Jhd1R5cGUodmFsdWUpKTtcclxufVxyXG5mdW5jdGlvbiByZWFjdGl2ZSh0YXJnZXQpIHtcclxuICAgIC8vIGlmIHRyeWluZyB0byBvYnNlcnZlIGEgcmVhZG9ubHkgcHJveHksIHJldHVybiB0aGUgcmVhZG9ubHkgdmVyc2lvbi5cclxuICAgIGlmIChpc1JlYWRvbmx5KHRhcmdldCkpIHtcclxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNyZWF0ZVJlYWN0aXZlT2JqZWN0KHRhcmdldCwgZmFsc2UsIG11dGFibGVIYW5kbGVycywgbXV0YWJsZUNvbGxlY3Rpb25IYW5kbGVycywgcmVhY3RpdmVNYXApO1xyXG59XHJcbi8qKlxyXG4gKiBSZXR1cm4gYSBzaGFsbG93bHktcmVhY3RpdmUgY29weSBvZiB0aGUgb3JpZ2luYWwgb2JqZWN0LCB3aGVyZSBvbmx5IHRoZSByb290XHJcbiAqIGxldmVsIHByb3BlcnRpZXMgYXJlIHJlYWN0aXZlLiBJdCBhbHNvIGRvZXMgbm90IGF1dG8tdW53cmFwIHJlZnMgKGV2ZW4gYXQgdGhlXHJcbiAqIHJvb3QgbGV2ZWwpLlxyXG4gKi9cclxuZnVuY3Rpb24gc2hhbGxvd1JlYWN0aXZlKHRhcmdldCkge1xyXG4gICAgcmV0dXJuIGNyZWF0ZVJlYWN0aXZlT2JqZWN0KHRhcmdldCwgZmFsc2UsIHNoYWxsb3dSZWFjdGl2ZUhhbmRsZXJzLCBzaGFsbG93Q29sbGVjdGlvbkhhbmRsZXJzLCBzaGFsbG93UmVhY3RpdmVNYXApO1xyXG59XHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgcmVhZG9ubHkgY29weSBvZiB0aGUgb3JpZ2luYWwgb2JqZWN0LiBOb3RlIHRoZSByZXR1cm5lZCBjb3B5IGlzIG5vdFxyXG4gKiBtYWRlIHJlYWN0aXZlLCBidXQgYHJlYWRvbmx5YCBjYW4gYmUgY2FsbGVkIG9uIGFuIGFscmVhZHkgcmVhY3RpdmUgb2JqZWN0LlxyXG4gKi9cclxuZnVuY3Rpb24gcmVhZG9ubHkodGFyZ2V0KSB7XHJcbiAgICByZXR1cm4gY3JlYXRlUmVhY3RpdmVPYmplY3QodGFyZ2V0LCB0cnVlLCByZWFkb25seUhhbmRsZXJzLCByZWFkb25seUNvbGxlY3Rpb25IYW5kbGVycywgcmVhZG9ubHlNYXApO1xyXG59XHJcbi8qKlxyXG4gKiBSZXR1cm5zIGEgcmVhY3RpdmUtY29weSBvZiB0aGUgb3JpZ2luYWwgb2JqZWN0LCB3aGVyZSBvbmx5IHRoZSByb290IGxldmVsXHJcbiAqIHByb3BlcnRpZXMgYXJlIHJlYWRvbmx5LCBhbmQgZG9lcyBOT1QgdW53cmFwIHJlZnMgbm9yIHJlY3Vyc2l2ZWx5IGNvbnZlcnRcclxuICogcmV0dXJuZWQgcHJvcGVydGllcy5cclxuICogVGhpcyBpcyB1c2VkIGZvciBjcmVhdGluZyB0aGUgcHJvcHMgcHJveHkgb2JqZWN0IGZvciBzdGF0ZWZ1bCBjb21wb25lbnRzLlxyXG4gKi9cclxuZnVuY3Rpb24gc2hhbGxvd1JlYWRvbmx5KHRhcmdldCkge1xyXG4gICAgcmV0dXJuIGNyZWF0ZVJlYWN0aXZlT2JqZWN0KHRhcmdldCwgdHJ1ZSwgc2hhbGxvd1JlYWRvbmx5SGFuZGxlcnMsIHNoYWxsb3dSZWFkb25seUNvbGxlY3Rpb25IYW5kbGVycywgc2hhbGxvd1JlYWRvbmx5TWFwKTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVSZWFjdGl2ZU9iamVjdCh0YXJnZXQsIGlzUmVhZG9ubHksIGJhc2VIYW5kbGVycywgY29sbGVjdGlvbkhhbmRsZXJzLCBwcm94eU1hcCkge1xyXG4gICAgaWYgKCFpc09iamVjdCh0YXJnZXQpKSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYHZhbHVlIGNhbm5vdCBiZSBtYWRlIHJlYWN0aXZlOiAke1N0cmluZyh0YXJnZXQpfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xyXG4gICAgfVxyXG4gICAgLy8gdGFyZ2V0IGlzIGFscmVhZHkgYSBQcm94eSwgcmV0dXJuIGl0LlxyXG4gICAgLy8gZXhjZXB0aW9uOiBjYWxsaW5nIHJlYWRvbmx5KCkgb24gYSByZWFjdGl2ZSBvYmplY3RcclxuICAgIGlmICh0YXJnZXRbXCJfX3ZfcmF3XCIgLyogUmVhY3RpdmVGbGFncy5SQVcgKi9dICYmXHJcbiAgICAgICAgIShpc1JlYWRvbmx5ICYmIHRhcmdldFtcIl9fdl9pc1JlYWN0aXZlXCIgLyogUmVhY3RpdmVGbGFncy5JU19SRUFDVElWRSAqL10pKSB7XHJcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcclxuICAgIH1cclxuICAgIC8vIHRhcmdldCBhbHJlYWR5IGhhcyBjb3JyZXNwb25kaW5nIFByb3h5XHJcbiAgICBjb25zdCBleGlzdGluZ1Byb3h5ID0gcHJveHlNYXAuZ2V0KHRhcmdldCk7XHJcbiAgICBpZiAoZXhpc3RpbmdQcm94eSkge1xyXG4gICAgICAgIHJldHVybiBleGlzdGluZ1Byb3h5O1xyXG4gICAgfVxyXG4gICAgLy8gb25seSBzcGVjaWZpYyB2YWx1ZSB0eXBlcyBjYW4gYmUgb2JzZXJ2ZWQuXHJcbiAgICBjb25zdCB0YXJnZXRUeXBlID0gZ2V0VGFyZ2V0VHlwZSh0YXJnZXQpO1xyXG4gICAgaWYgKHRhcmdldFR5cGUgPT09IDAgLyogVGFyZ2V0VHlwZS5JTlZBTElEICovKSB7XHJcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcclxuICAgIH1cclxuICAgIGNvbnN0IHByb3h5ID0gbmV3IFByb3h5KHRhcmdldCwgdGFyZ2V0VHlwZSA9PT0gMiAvKiBUYXJnZXRUeXBlLkNPTExFQ1RJT04gKi8gPyBjb2xsZWN0aW9uSGFuZGxlcnMgOiBiYXNlSGFuZGxlcnMpO1xyXG4gICAgcHJveHlNYXAuc2V0KHRhcmdldCwgcHJveHkpO1xyXG4gICAgcmV0dXJuIHByb3h5O1xyXG59XHJcbmZ1bmN0aW9uIGlzUmVhY3RpdmUodmFsdWUpIHtcclxuICAgIGlmIChpc1JlYWRvbmx5KHZhbHVlKSkge1xyXG4gICAgICAgIHJldHVybiBpc1JlYWN0aXZlKHZhbHVlW1wiX192X3Jhd1wiIC8qIFJlYWN0aXZlRmxhZ3MuUkFXICovXSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gISEodmFsdWUgJiYgdmFsdWVbXCJfX3ZfaXNSZWFjdGl2ZVwiIC8qIFJlYWN0aXZlRmxhZ3MuSVNfUkVBQ1RJVkUgKi9dKTtcclxufVxyXG5mdW5jdGlvbiBpc1JlYWRvbmx5KHZhbHVlKSB7XHJcbiAgICByZXR1cm4gISEodmFsdWUgJiYgdmFsdWVbXCJfX3ZfaXNSZWFkb25seVwiIC8qIFJlYWN0aXZlRmxhZ3MuSVNfUkVBRE9OTFkgKi9dKTtcclxufVxyXG5mdW5jdGlvbiBpc1NoYWxsb3codmFsdWUpIHtcclxuICAgIHJldHVybiAhISh2YWx1ZSAmJiB2YWx1ZVtcIl9fdl9pc1NoYWxsb3dcIiAvKiBSZWFjdGl2ZUZsYWdzLklTX1NIQUxMT1cgKi9dKTtcclxufVxyXG5mdW5jdGlvbiBpc1Byb3h5KHZhbHVlKSB7XHJcbiAgICByZXR1cm4gaXNSZWFjdGl2ZSh2YWx1ZSkgfHwgaXNSZWFkb25seSh2YWx1ZSk7XHJcbn1cclxuZnVuY3Rpb24gdG9SYXcob2JzZXJ2ZWQpIHtcclxuICAgIGNvbnN0IHJhdyA9IG9ic2VydmVkICYmIG9ic2VydmVkW1wiX192X3Jhd1wiIC8qIFJlYWN0aXZlRmxhZ3MuUkFXICovXTtcclxuICAgIHJldHVybiByYXcgPyB0b1JhdyhyYXcpIDogb2JzZXJ2ZWQ7XHJcbn1cclxuZnVuY3Rpb24gbWFya1Jhdyh2YWx1ZSkge1xyXG4gICAgZGVmKHZhbHVlLCBcIl9fdl9za2lwXCIgLyogUmVhY3RpdmVGbGFncy5TS0lQICovLCB0cnVlKTtcclxuICAgIHJldHVybiB2YWx1ZTtcclxufVxyXG5jb25zdCB0b1JlYWN0aXZlID0gKHZhbHVlKSA9PiBpc09iamVjdCh2YWx1ZSkgPyByZWFjdGl2ZSh2YWx1ZSkgOiB2YWx1ZTtcclxuY29uc3QgdG9SZWFkb25seSA9ICh2YWx1ZSkgPT4gaXNPYmplY3QodmFsdWUpID8gcmVhZG9ubHkodmFsdWUpIDogdmFsdWU7XG5cbmZ1bmN0aW9uIHRyYWNrUmVmVmFsdWUocmVmKSB7XHJcbiAgICBpZiAoc2hvdWxkVHJhY2sgJiYgYWN0aXZlRWZmZWN0KSB7XHJcbiAgICAgICAgcmVmID0gdG9SYXcocmVmKTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHRyYWNrRWZmZWN0cyhyZWYuZGVwIHx8IChyZWYuZGVwID0gY3JlYXRlRGVwKCkpLCB7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHJlZixcclxuICAgICAgICAgICAgICAgIHR5cGU6IFwiZ2V0XCIgLyogVHJhY2tPcFR5cGVzLkdFVCAqLyxcclxuICAgICAgICAgICAgICAgIGtleTogJ3ZhbHVlJ1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRyYWNrRWZmZWN0cyhyZWYuZGVwIHx8IChyZWYuZGVwID0gY3JlYXRlRGVwKCkpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdHJpZ2dlclJlZlZhbHVlKHJlZiwgbmV3VmFsKSB7XHJcbiAgICByZWYgPSB0b1JhdyhyZWYpO1xyXG4gICAgaWYgKHJlZi5kZXApIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHRyaWdnZXJFZmZlY3RzKHJlZi5kZXAsIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldDogcmVmLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzZXRcIiAvKiBUcmlnZ2VyT3BUeXBlcy5TRVQgKi8sXHJcbiAgICAgICAgICAgICAgICBrZXk6ICd2YWx1ZScsXHJcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZTogbmV3VmFsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdHJpZ2dlckVmZmVjdHMocmVmLmRlcCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGlzUmVmKHIpIHtcclxuICAgIHJldHVybiAhIShyICYmIHIuX192X2lzUmVmID09PSB0cnVlKTtcclxufVxyXG5mdW5jdGlvbiByZWYodmFsdWUpIHtcclxuICAgIHJldHVybiBjcmVhdGVSZWYodmFsdWUsIGZhbHNlKTtcclxufVxyXG5mdW5jdGlvbiBzaGFsbG93UmVmKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gY3JlYXRlUmVmKHZhbHVlLCB0cnVlKTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVSZWYocmF3VmFsdWUsIHNoYWxsb3cpIHtcclxuICAgIGlmIChpc1JlZihyYXdWYWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gcmF3VmFsdWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IFJlZkltcGwocmF3VmFsdWUsIHNoYWxsb3cpO1xyXG59XHJcbmNsYXNzIFJlZkltcGwge1xyXG4gICAgY29uc3RydWN0b3IodmFsdWUsIF9fdl9pc1NoYWxsb3cpIHtcclxuICAgICAgICB0aGlzLl9fdl9pc1NoYWxsb3cgPSBfX3ZfaXNTaGFsbG93O1xyXG4gICAgICAgIHRoaXMuZGVwID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMuX192X2lzUmVmID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLl9yYXdWYWx1ZSA9IF9fdl9pc1NoYWxsb3cgPyB2YWx1ZSA6IHRvUmF3KHZhbHVlKTtcclxuICAgICAgICB0aGlzLl92YWx1ZSA9IF9fdl9pc1NoYWxsb3cgPyB2YWx1ZSA6IHRvUmVhY3RpdmUodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgZ2V0IHZhbHVlKCkge1xyXG4gICAgICAgIHRyYWNrUmVmVmFsdWUodGhpcyk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gICAgfVxyXG4gICAgc2V0IHZhbHVlKG5ld1ZhbCkge1xyXG4gICAgICAgIGNvbnN0IHVzZURpcmVjdFZhbHVlID0gdGhpcy5fX3ZfaXNTaGFsbG93IHx8IGlzU2hhbGxvdyhuZXdWYWwpIHx8IGlzUmVhZG9ubHkobmV3VmFsKTtcclxuICAgICAgICBuZXdWYWwgPSB1c2VEaXJlY3RWYWx1ZSA/IG5ld1ZhbCA6IHRvUmF3KG5ld1ZhbCk7XHJcbiAgICAgICAgaWYgKGhhc0NoYW5nZWQobmV3VmFsLCB0aGlzLl9yYXdWYWx1ZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5fcmF3VmFsdWUgPSBuZXdWYWw7XHJcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdXNlRGlyZWN0VmFsdWUgPyBuZXdWYWwgOiB0b1JlYWN0aXZlKG5ld1ZhbCk7XHJcbiAgICAgICAgICAgIHRyaWdnZXJSZWZWYWx1ZSh0aGlzLCBuZXdWYWwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB0cmlnZ2VyUmVmKHJlZikge1xyXG4gICAgdHJpZ2dlclJlZlZhbHVlKHJlZiwgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gcmVmLnZhbHVlIDogdm9pZCAwKTtcclxufVxyXG5mdW5jdGlvbiB1bnJlZihyZWYpIHtcclxuICAgIHJldHVybiBpc1JlZihyZWYpID8gcmVmLnZhbHVlIDogcmVmO1xyXG59XHJcbmNvbnN0IHNoYWxsb3dVbndyYXBIYW5kbGVycyA9IHtcclxuICAgIGdldDogKHRhcmdldCwga2V5LCByZWNlaXZlcikgPT4gdW5yZWYoUmVmbGVjdC5nZXQodGFyZ2V0LCBrZXksIHJlY2VpdmVyKSksXHJcbiAgICBzZXQ6ICh0YXJnZXQsIGtleSwgdmFsdWUsIHJlY2VpdmVyKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgb2xkVmFsdWUgPSB0YXJnZXRba2V5XTtcclxuICAgICAgICBpZiAoaXNSZWYob2xkVmFsdWUpICYmICFpc1JlZih2YWx1ZSkpIHtcclxuICAgICAgICAgICAgb2xkVmFsdWUudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5zZXQodGFyZ2V0LCBrZXksIHZhbHVlLCByZWNlaXZlcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5mdW5jdGlvbiBwcm94eVJlZnMob2JqZWN0V2l0aFJlZnMpIHtcclxuICAgIHJldHVybiBpc1JlYWN0aXZlKG9iamVjdFdpdGhSZWZzKVxyXG4gICAgICAgID8gb2JqZWN0V2l0aFJlZnNcclxuICAgICAgICA6IG5ldyBQcm94eShvYmplY3RXaXRoUmVmcywgc2hhbGxvd1Vud3JhcEhhbmRsZXJzKTtcclxufVxyXG5jbGFzcyBDdXN0b21SZWZJbXBsIHtcclxuICAgIGNvbnN0cnVjdG9yKGZhY3RvcnkpIHtcclxuICAgICAgICB0aGlzLmRlcCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLl9fdl9pc1JlZiA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgeyBnZXQsIHNldCB9ID0gZmFjdG9yeSgoKSA9PiB0cmFja1JlZlZhbHVlKHRoaXMpLCAoKSA9PiB0cmlnZ2VyUmVmVmFsdWUodGhpcykpO1xyXG4gICAgICAgIHRoaXMuX2dldCA9IGdldDtcclxuICAgICAgICB0aGlzLl9zZXQgPSBzZXQ7XHJcbiAgICB9XHJcbiAgICBnZXQgdmFsdWUoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldCgpO1xyXG4gICAgfVxyXG4gICAgc2V0IHZhbHVlKG5ld1ZhbCkge1xyXG4gICAgICAgIHRoaXMuX3NldChuZXdWYWwpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGN1c3RvbVJlZihmYWN0b3J5KSB7XHJcbiAgICByZXR1cm4gbmV3IEN1c3RvbVJlZkltcGwoZmFjdG9yeSk7XHJcbn1cclxuZnVuY3Rpb24gdG9SZWZzKG9iamVjdCkge1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaXNQcm94eShvYmplY3QpKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKGB0b1JlZnMoKSBleHBlY3RzIGEgcmVhY3RpdmUgb2JqZWN0IGJ1dCByZWNlaXZlZCBhIHBsYWluIG9uZS5gKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJldCA9IGlzQXJyYXkob2JqZWN0KSA/IG5ldyBBcnJheShvYmplY3QubGVuZ3RoKSA6IHt9O1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqZWN0KSB7XHJcbiAgICAgICAgcmV0W2tleV0gPSB0b1JlZihvYmplY3QsIGtleSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0O1xyXG59XHJcbmNsYXNzIE9iamVjdFJlZkltcGwge1xyXG4gICAgY29uc3RydWN0b3IoX29iamVjdCwgX2tleSwgX2RlZmF1bHRWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuX29iamVjdCA9IF9vYmplY3Q7XHJcbiAgICAgICAgdGhpcy5fa2V5ID0gX2tleTtcclxuICAgICAgICB0aGlzLl9kZWZhdWx0VmFsdWUgPSBfZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIHRoaXMuX192X2lzUmVmID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGdldCB2YWx1ZSgpIHtcclxuICAgICAgICBjb25zdCB2YWwgPSB0aGlzLl9vYmplY3RbdGhpcy5fa2V5XTtcclxuICAgICAgICByZXR1cm4gdmFsID09PSB1bmRlZmluZWQgPyB0aGlzLl9kZWZhdWx0VmFsdWUgOiB2YWw7XHJcbiAgICB9XHJcbiAgICBzZXQgdmFsdWUobmV3VmFsKSB7XHJcbiAgICAgICAgdGhpcy5fb2JqZWN0W3RoaXMuX2tleV0gPSBuZXdWYWw7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdG9SZWYob2JqZWN0LCBrZXksIGRlZmF1bHRWYWx1ZSkge1xyXG4gICAgY29uc3QgdmFsID0gb2JqZWN0W2tleV07XHJcbiAgICByZXR1cm4gaXNSZWYodmFsKVxyXG4gICAgICAgID8gdmFsXHJcbiAgICAgICAgOiBuZXcgT2JqZWN0UmVmSW1wbChvYmplY3QsIGtleSwgZGVmYXVsdFZhbHVlKTtcclxufVxuXG52YXIgX2E7XHJcbmNsYXNzIENvbXB1dGVkUmVmSW1wbCB7XHJcbiAgICBjb25zdHJ1Y3RvcihnZXR0ZXIsIF9zZXR0ZXIsIGlzUmVhZG9ubHksIGlzU1NSKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0dGVyID0gX3NldHRlcjtcclxuICAgICAgICB0aGlzLmRlcCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLl9fdl9pc1JlZiA9IHRydWU7XHJcbiAgICAgICAgdGhpc1tfYV0gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl9kaXJ0eSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5lZmZlY3QgPSBuZXcgUmVhY3RpdmVFZmZlY3QoZ2V0dGVyLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5fZGlydHkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RpcnR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRyaWdnZXJSZWZWYWx1ZSh0aGlzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZWZmZWN0LmNvbXB1dGVkID0gdGhpcztcclxuICAgICAgICB0aGlzLmVmZmVjdC5hY3RpdmUgPSB0aGlzLl9jYWNoZWFibGUgPSAhaXNTU1I7XHJcbiAgICAgICAgdGhpc1tcIl9fdl9pc1JlYWRvbmx5XCIgLyogUmVhY3RpdmVGbGFncy5JU19SRUFET05MWSAqL10gPSBpc1JlYWRvbmx5O1xyXG4gICAgfVxyXG4gICAgZ2V0IHZhbHVlKCkge1xyXG4gICAgICAgIC8vIHRoZSBjb21wdXRlZCByZWYgbWF5IGdldCB3cmFwcGVkIGJ5IG90aGVyIHByb3hpZXMgZS5nLiByZWFkb25seSgpICMzMzc2XHJcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRvUmF3KHRoaXMpO1xyXG4gICAgICAgIHRyYWNrUmVmVmFsdWUoc2VsZik7XHJcbiAgICAgICAgaWYgKHNlbGYuX2RpcnR5IHx8ICFzZWxmLl9jYWNoZWFibGUpIHtcclxuICAgICAgICAgICAgc2VsZi5fZGlydHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgc2VsZi5fdmFsdWUgPSBzZWxmLmVmZmVjdC5ydW4oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHNlbGYuX3ZhbHVlO1xyXG4gICAgfVxyXG4gICAgc2V0IHZhbHVlKG5ld1ZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0dGVyKG5ld1ZhbHVlKTtcclxuICAgIH1cclxufVxyXG5fYSA9IFwiX192X2lzUmVhZG9ubHlcIiAvKiBSZWFjdGl2ZUZsYWdzLklTX1JFQURPTkxZICovO1xyXG5mdW5jdGlvbiBjb21wdXRlZChnZXR0ZXJPck9wdGlvbnMsIGRlYnVnT3B0aW9ucywgaXNTU1IgPSBmYWxzZSkge1xyXG4gICAgbGV0IGdldHRlcjtcclxuICAgIGxldCBzZXR0ZXI7XHJcbiAgICBjb25zdCBvbmx5R2V0dGVyID0gaXNGdW5jdGlvbihnZXR0ZXJPck9wdGlvbnMpO1xyXG4gICAgaWYgKG9ubHlHZXR0ZXIpIHtcclxuICAgICAgICBnZXR0ZXIgPSBnZXR0ZXJPck9wdGlvbnM7XHJcbiAgICAgICAgc2V0dGVyID0gKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgICAgID8gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdXcml0ZSBvcGVyYXRpb24gZmFpbGVkOiBjb21wdXRlZCB2YWx1ZSBpcyByZWFkb25seScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDogTk9PUDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGdldHRlciA9IGdldHRlck9yT3B0aW9ucy5nZXQ7XHJcbiAgICAgICAgc2V0dGVyID0gZ2V0dGVyT3JPcHRpb25zLnNldDtcclxuICAgIH1cclxuICAgIGNvbnN0IGNSZWYgPSBuZXcgQ29tcHV0ZWRSZWZJbXBsKGdldHRlciwgc2V0dGVyLCBvbmx5R2V0dGVyIHx8ICFzZXR0ZXIsIGlzU1NSKTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgZGVidWdPcHRpb25zICYmICFpc1NTUikge1xyXG4gICAgICAgIGNSZWYuZWZmZWN0Lm9uVHJhY2sgPSBkZWJ1Z09wdGlvbnMub25UcmFjaztcclxuICAgICAgICBjUmVmLmVmZmVjdC5vblRyaWdnZXIgPSBkZWJ1Z09wdGlvbnMub25UcmlnZ2VyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNSZWY7XHJcbn1cblxudmFyIF9hJDE7XHJcbmNvbnN0IHRpY2sgPSAvKiNfX1BVUkVfXyovIFByb21pc2UucmVzb2x2ZSgpO1xyXG5jb25zdCBxdWV1ZSA9IFtdO1xyXG5sZXQgcXVldWVkID0gZmFsc2U7XHJcbmNvbnN0IHNjaGVkdWxlciA9IChmbikgPT4ge1xyXG4gICAgcXVldWUucHVzaChmbik7XHJcbiAgICBpZiAoIXF1ZXVlZCkge1xyXG4gICAgICAgIHF1ZXVlZCA9IHRydWU7XHJcbiAgICAgICAgdGljay50aGVuKGZsdXNoKTtcclxuICAgIH1cclxufTtcclxuY29uc3QgZmx1c2ggPSAoKSA9PiB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHF1ZXVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgcXVldWVbaV0oKTtcclxuICAgIH1cclxuICAgIHF1ZXVlLmxlbmd0aCA9IDA7XHJcbiAgICBxdWV1ZWQgPSBmYWxzZTtcclxufTtcclxuY2xhc3MgRGVmZXJyZWRDb21wdXRlZFJlZkltcGwge1xyXG4gICAgY29uc3RydWN0b3IoZ2V0dGVyKSB7XHJcbiAgICAgICAgdGhpcy5kZXAgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5fZGlydHkgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX192X2lzUmVmID0gdHJ1ZTtcclxuICAgICAgICB0aGlzW19hJDFdID0gdHJ1ZTtcclxuICAgICAgICBsZXQgY29tcGFyZVRhcmdldDtcclxuICAgICAgICBsZXQgaGFzQ29tcGFyZVRhcmdldCA9IGZhbHNlO1xyXG4gICAgICAgIGxldCBzY2hlZHVsZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmVmZmVjdCA9IG5ldyBSZWFjdGl2ZUVmZmVjdChnZXR0ZXIsIChjb21wdXRlZFRyaWdnZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZGVwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29tcHV0ZWRUcmlnZ2VyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29tcGFyZVRhcmdldCA9IHRoaXMuX3ZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc0NvbXBhcmVUYXJnZXQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXNjaGVkdWxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlVG9Db21wYXJlID0gaGFzQ29tcGFyZVRhcmdldCA/IGNvbXBhcmVUYXJnZXQgOiB0aGlzLl92YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc0NvbXBhcmVUYXJnZXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZXIoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5lZmZlY3QuYWN0aXZlICYmIHRoaXMuX2dldCgpICE9PSB2YWx1ZVRvQ29tcGFyZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlclJlZlZhbHVlKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVkdWxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gY2hhaW5lZCB1cHN0cmVhbSBjb21wdXRlZHMgYXJlIG5vdGlmaWVkIHN5bmNocm9ub3VzbHkgdG8gZW5zdXJlXHJcbiAgICAgICAgICAgICAgICAvLyB2YWx1ZSBpbnZhbGlkYXRpb24gaW4gY2FzZSBvZiBzeW5jIGFjY2Vzczsgbm9ybWFsIGVmZmVjdHMgYXJlXHJcbiAgICAgICAgICAgICAgICAvLyBkZWZlcnJlZCB0byBiZSB0cmlnZ2VyZWQgaW4gc2NoZWR1bGVyLlxyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIHRoaXMuZGVwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUuY29tcHV0ZWQgaW5zdGFuY2VvZiBEZWZlcnJlZENvbXB1dGVkUmVmSW1wbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnNjaGVkdWxlcih0cnVlIC8qIGNvbXB1dGVkVHJpZ2dlciAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuX2RpcnR5ID0gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmVmZmVjdC5jb21wdXRlZCA9IHRoaXM7XHJcbiAgICB9XHJcbiAgICBfZ2V0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9kaXJ0eSkge1xyXG4gICAgICAgICAgICB0aGlzLl9kaXJ0eSA9IGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm4gKHRoaXMuX3ZhbHVlID0gdGhpcy5lZmZlY3QucnVuKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgICB9XHJcbiAgICBnZXQgdmFsdWUoKSB7XHJcbiAgICAgICAgdHJhY2tSZWZWYWx1ZSh0aGlzKTtcclxuICAgICAgICAvLyB0aGUgY29tcHV0ZWQgcmVmIG1heSBnZXQgd3JhcHBlZCBieSBvdGhlciBwcm94aWVzIGUuZy4gcmVhZG9ubHkoKSAjMzM3NlxyXG4gICAgICAgIHJldHVybiB0b1Jhdyh0aGlzKS5fZ2V0KCk7XHJcbiAgICB9XHJcbn1cclxuX2EkMSA9IFwiX192X2lzUmVhZG9ubHlcIiAvKiBSZWFjdGl2ZUZsYWdzLklTX1JFQURPTkxZICovO1xyXG5mdW5jdGlvbiBkZWZlcnJlZENvbXB1dGVkKGdldHRlcikge1xyXG4gICAgcmV0dXJuIG5ldyBEZWZlcnJlZENvbXB1dGVkUmVmSW1wbChnZXR0ZXIpO1xyXG59XG5cbmV4cG9ydCB7IEVmZmVjdFNjb3BlLCBJVEVSQVRFX0tFWSwgUmVhY3RpdmVFZmZlY3QsIGNvbXB1dGVkLCBjdXN0b21SZWYsIGRlZmVycmVkQ29tcHV0ZWQsIGVmZmVjdCwgZWZmZWN0U2NvcGUsIGVuYWJsZVRyYWNraW5nLCBnZXRDdXJyZW50U2NvcGUsIGlzUHJveHksIGlzUmVhY3RpdmUsIGlzUmVhZG9ubHksIGlzUmVmLCBpc1NoYWxsb3csIG1hcmtSYXcsIG9uU2NvcGVEaXNwb3NlLCBwYXVzZVRyYWNraW5nLCBwcm94eVJlZnMsIHJlYWN0aXZlLCByZWFkb25seSwgcmVmLCByZXNldFRyYWNraW5nLCBzaGFsbG93UmVhY3RpdmUsIHNoYWxsb3dSZWFkb25seSwgc2hhbGxvd1JlZiwgc3RvcCwgdG9SYXcsIHRvUmVmLCB0b1JlZnMsIHRyYWNrLCB0cmlnZ2VyLCB0cmlnZ2VyUmVmLCB1bnJlZiB9O1xuIiwiaW1wb3J0IHsgcGF1c2VUcmFja2luZywgcmVzZXRUcmFja2luZywgaXNSZWYsIHRvUmF3LCBpc1NoYWxsb3cgYXMgaXNTaGFsbG93JDEsIGlzUmVhY3RpdmUsIFJlYWN0aXZlRWZmZWN0LCByZWYsIHNoYWxsb3dSZWFkb25seSwgdHJhY2ssIHJlYWN0aXZlLCBzaGFsbG93UmVhY3RpdmUsIHRyaWdnZXIsIGlzUHJveHksIEVmZmVjdFNjb3BlLCBtYXJrUmF3LCBwcm94eVJlZnMsIGNvbXB1dGVkIGFzIGNvbXB1dGVkJDEsIGlzUmVhZG9ubHkgfSBmcm9tICdAdnVlL3JlYWN0aXZpdHknO1xuZXhwb3J0IHsgRWZmZWN0U2NvcGUsIFJlYWN0aXZlRWZmZWN0LCBjdXN0b21SZWYsIGVmZmVjdCwgZWZmZWN0U2NvcGUsIGdldEN1cnJlbnRTY29wZSwgaXNQcm94eSwgaXNSZWFjdGl2ZSwgaXNSZWFkb25seSwgaXNSZWYsIGlzU2hhbGxvdywgbWFya1Jhdywgb25TY29wZURpc3Bvc2UsIHByb3h5UmVmcywgcmVhY3RpdmUsIHJlYWRvbmx5LCByZWYsIHNoYWxsb3dSZWFjdGl2ZSwgc2hhbGxvd1JlYWRvbmx5LCBzaGFsbG93UmVmLCBzdG9wLCB0b1JhdywgdG9SZWYsIHRvUmVmcywgdHJpZ2dlclJlZiwgdW5yZWYgfSBmcm9tICdAdnVlL3JlYWN0aXZpdHknO1xuaW1wb3J0IHsgaXNTdHJpbmcsIGlzRnVuY3Rpb24sIGlzUHJvbWlzZSwgaXNBcnJheSwgTk9PUCwgZ2V0R2xvYmFsVGhpcywgZXh0ZW5kLCBFTVBUWV9PQkosIHRvSGFuZGxlcktleSwgdG9OdW1iZXIsIGh5cGhlbmF0ZSwgY2FtZWxpemUsIGlzT2JqZWN0LCBpc09uLCBoYXNPd24sIGlzTW9kZWxMaXN0ZW5lciwgaGFzQ2hhbmdlZCwgcmVtb3ZlLCBpc1NldCwgaXNNYXAsIGlzUGxhaW5PYmplY3QsIGludm9rZUFycmF5Rm5zLCBpc0J1aWx0SW5EaXJlY3RpdmUsIGNhcGl0YWxpemUsIGlzR2xvYmFsbHlXaGl0ZWxpc3RlZCwgZGVmLCBpc1Jlc2VydmVkUHJvcCwgRU1QVFlfQVJSLCB0b1Jhd1R5cGUsIG1ha2VNYXAsIE5PLCBub3JtYWxpemVDbGFzcywgbm9ybWFsaXplU3R5bGUgfSBmcm9tICdAdnVlL3NoYXJlZCc7XG5leHBvcnQgeyBjYW1lbGl6ZSwgY2FwaXRhbGl6ZSwgbm9ybWFsaXplQ2xhc3MsIG5vcm1hbGl6ZVByb3BzLCBub3JtYWxpemVTdHlsZSwgdG9EaXNwbGF5U3RyaW5nLCB0b0hhbmRsZXJLZXkgfSBmcm9tICdAdnVlL3NoYXJlZCc7XG5cbmNvbnN0IHN0YWNrID0gW107XHJcbmZ1bmN0aW9uIHB1c2hXYXJuaW5nQ29udGV4dCh2bm9kZSkge1xyXG4gICAgc3RhY2sucHVzaCh2bm9kZSk7XHJcbn1cclxuZnVuY3Rpb24gcG9wV2FybmluZ0NvbnRleHQoKSB7XHJcbiAgICBzdGFjay5wb3AoKTtcclxufVxyXG5mdW5jdGlvbiB3YXJuKG1zZywgLi4uYXJncykge1xyXG4gICAgLy8gYXZvaWQgcHJvcHMgZm9ybWF0dGluZyBvciB3YXJuIGhhbmRsZXIgdHJhY2tpbmcgZGVwcyB0aGF0IG1pZ2h0IGJlIG11dGF0ZWRcclxuICAgIC8vIGR1cmluZyBwYXRjaCwgbGVhZGluZyB0byBpbmZpbml0ZSByZWN1cnNpb24uXHJcbiAgICBwYXVzZVRyYWNraW5nKCk7XHJcbiAgICBjb25zdCBpbnN0YW5jZSA9IHN0YWNrLmxlbmd0aCA/IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdLmNvbXBvbmVudCA6IG51bGw7XHJcbiAgICBjb25zdCBhcHBXYXJuSGFuZGxlciA9IGluc3RhbmNlICYmIGluc3RhbmNlLmFwcENvbnRleHQuY29uZmlnLndhcm5IYW5kbGVyO1xyXG4gICAgY29uc3QgdHJhY2UgPSBnZXRDb21wb25lbnRUcmFjZSgpO1xyXG4gICAgaWYgKGFwcFdhcm5IYW5kbGVyKSB7XHJcbiAgICAgICAgY2FsbFdpdGhFcnJvckhhbmRsaW5nKGFwcFdhcm5IYW5kbGVyLCBpbnN0YW5jZSwgMTEgLyogRXJyb3JDb2Rlcy5BUFBfV0FSTl9IQU5ETEVSICovLCBbXHJcbiAgICAgICAgICAgIG1zZyArIGFyZ3Muam9pbignJyksXHJcbiAgICAgICAgICAgIGluc3RhbmNlICYmIGluc3RhbmNlLnByb3h5LFxyXG4gICAgICAgICAgICB0cmFjZVxyXG4gICAgICAgICAgICAgICAgLm1hcCgoeyB2bm9kZSB9KSA9PiBgYXQgPCR7Zm9ybWF0Q29tcG9uZW50TmFtZShpbnN0YW5jZSwgdm5vZGUudHlwZSl9PmApXHJcbiAgICAgICAgICAgICAgICAuam9pbignXFxuJyksXHJcbiAgICAgICAgICAgIHRyYWNlXHJcbiAgICAgICAgXSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCB3YXJuQXJncyA9IFtgW1Z1ZSB3YXJuXTogJHttc2d9YCwgLi4uYXJnc107XHJcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXHJcbiAgICAgICAgaWYgKHRyYWNlLmxlbmd0aCAmJlxyXG4gICAgICAgICAgICAvLyBhdm9pZCBzcGFtbWluZyBjb25zb2xlIGR1cmluZyB0ZXN0c1xyXG4gICAgICAgICAgICAhZmFsc2UpIHtcclxuICAgICAgICAgICAgd2FybkFyZ3MucHVzaChgXFxuYCwgLi4uZm9ybWF0VHJhY2UodHJhY2UpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc29sZS53YXJuKC4uLndhcm5BcmdzKTtcclxuICAgIH1cclxuICAgIHJlc2V0VHJhY2tpbmcoKTtcclxufVxyXG5mdW5jdGlvbiBnZXRDb21wb25lbnRUcmFjZSgpIHtcclxuICAgIGxldCBjdXJyZW50Vk5vZGUgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcclxuICAgIGlmICghY3VycmVudFZOb2RlKSB7XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gICAgLy8gd2UgY2FuJ3QganVzdCB1c2UgdGhlIHN0YWNrIGJlY2F1c2UgaXQgd2lsbCBiZSBpbmNvbXBsZXRlIGR1cmluZyB1cGRhdGVzXHJcbiAgICAvLyB0aGF0IGRpZCBub3Qgc3RhcnQgZnJvbSB0aGUgcm9vdC4gUmUtY29uc3RydWN0IHRoZSBwYXJlbnQgY2hhaW4gdXNpbmdcclxuICAgIC8vIGluc3RhbmNlIHBhcmVudCBwb2ludGVycy5cclxuICAgIGNvbnN0IG5vcm1hbGl6ZWRTdGFjayA9IFtdO1xyXG4gICAgd2hpbGUgKGN1cnJlbnRWTm9kZSkge1xyXG4gICAgICAgIGNvbnN0IGxhc3QgPSBub3JtYWxpemVkU3RhY2tbMF07XHJcbiAgICAgICAgaWYgKGxhc3QgJiYgbGFzdC52bm9kZSA9PT0gY3VycmVudFZOb2RlKSB7XHJcbiAgICAgICAgICAgIGxhc3QucmVjdXJzZUNvdW50Kys7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBub3JtYWxpemVkU3RhY2sucHVzaCh7XHJcbiAgICAgICAgICAgICAgICB2bm9kZTogY3VycmVudFZOb2RlLFxyXG4gICAgICAgICAgICAgICAgcmVjdXJzZUNvdW50OiAwXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBwYXJlbnRJbnN0YW5jZSA9IGN1cnJlbnRWTm9kZS5jb21wb25lbnQgJiYgY3VycmVudFZOb2RlLmNvbXBvbmVudC5wYXJlbnQ7XHJcbiAgICAgICAgY3VycmVudFZOb2RlID0gcGFyZW50SW5zdGFuY2UgJiYgcGFyZW50SW5zdGFuY2Uudm5vZGU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbm9ybWFsaXplZFN0YWNrO1xyXG59XHJcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXHJcbmZ1bmN0aW9uIGZvcm1hdFRyYWNlKHRyYWNlKSB7XHJcbiAgICBjb25zdCBsb2dzID0gW107XHJcbiAgICB0cmFjZS5mb3JFYWNoKChlbnRyeSwgaSkgPT4ge1xyXG4gICAgICAgIGxvZ3MucHVzaCguLi4oaSA9PT0gMCA/IFtdIDogW2BcXG5gXSksIC4uLmZvcm1hdFRyYWNlRW50cnkoZW50cnkpKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGxvZ3M7XHJcbn1cclxuZnVuY3Rpb24gZm9ybWF0VHJhY2VFbnRyeSh7IHZub2RlLCByZWN1cnNlQ291bnQgfSkge1xyXG4gICAgY29uc3QgcG9zdGZpeCA9IHJlY3Vyc2VDb3VudCA+IDAgPyBgLi4uICgke3JlY3Vyc2VDb3VudH0gcmVjdXJzaXZlIGNhbGxzKWAgOiBgYDtcclxuICAgIGNvbnN0IGlzUm9vdCA9IHZub2RlLmNvbXBvbmVudCA/IHZub2RlLmNvbXBvbmVudC5wYXJlbnQgPT0gbnVsbCA6IGZhbHNlO1xyXG4gICAgY29uc3Qgb3BlbiA9IGAgYXQgPCR7Zm9ybWF0Q29tcG9uZW50TmFtZSh2bm9kZS5jb21wb25lbnQsIHZub2RlLnR5cGUsIGlzUm9vdCl9YDtcclxuICAgIGNvbnN0IGNsb3NlID0gYD5gICsgcG9zdGZpeDtcclxuICAgIHJldHVybiB2bm9kZS5wcm9wc1xyXG4gICAgICAgID8gW29wZW4sIC4uLmZvcm1hdFByb3BzKHZub2RlLnByb3BzKSwgY2xvc2VdXHJcbiAgICAgICAgOiBbb3BlbiArIGNsb3NlXTtcclxufVxyXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG5mdW5jdGlvbiBmb3JtYXRQcm9wcyhwcm9wcykge1xyXG4gICAgY29uc3QgcmVzID0gW107XHJcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocHJvcHMpO1xyXG4gICAga2V5cy5zbGljZSgwLCAzKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgcmVzLnB1c2goLi4uZm9ybWF0UHJvcChrZXksIHByb3BzW2tleV0pKTtcclxuICAgIH0pO1xyXG4gICAgaWYgKGtleXMubGVuZ3RoID4gMykge1xyXG4gICAgICAgIHJlcy5wdXNoKGAgLi4uYCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG59XHJcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXHJcbmZ1bmN0aW9uIGZvcm1hdFByb3Aoa2V5LCB2YWx1ZSwgcmF3KSB7XHJcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XHJcbiAgICAgICAgdmFsdWUgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XHJcbiAgICAgICAgcmV0dXJuIHJhdyA/IHZhbHVlIDogW2Ake2tleX09JHt2YWx1ZX1gXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHxcclxuICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyB8fFxyXG4gICAgICAgIHZhbHVlID09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gcmF3ID8gdmFsdWUgOiBbYCR7a2V5fT0ke3ZhbHVlfWBdO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNSZWYodmFsdWUpKSB7XHJcbiAgICAgICAgdmFsdWUgPSBmb3JtYXRQcm9wKGtleSwgdG9SYXcodmFsdWUudmFsdWUpLCB0cnVlKTtcclxuICAgICAgICByZXR1cm4gcmF3ID8gdmFsdWUgOiBbYCR7a2V5fT1SZWY8YCwgdmFsdWUsIGA+YF07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xyXG4gICAgICAgIHJldHVybiBbYCR7a2V5fT1mbiR7dmFsdWUubmFtZSA/IGA8JHt2YWx1ZS5uYW1lfT5gIDogYGB9YF07XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICB2YWx1ZSA9IHRvUmF3KHZhbHVlKTtcclxuICAgICAgICByZXR1cm4gcmF3ID8gdmFsdWUgOiBbYCR7a2V5fT1gLCB2YWx1ZV07XHJcbiAgICB9XHJcbn1cblxuY29uc3QgRXJyb3JUeXBlU3RyaW5ncyA9IHtcclxuICAgIFtcInNwXCIgLyogTGlmZWN5Y2xlSG9va3MuU0VSVkVSX1BSRUZFVENIICovXTogJ3NlcnZlclByZWZldGNoIGhvb2snLFxyXG4gICAgW1wiYmNcIiAvKiBMaWZlY3ljbGVIb29rcy5CRUZPUkVfQ1JFQVRFICovXTogJ2JlZm9yZUNyZWF0ZSBob29rJyxcclxuICAgIFtcImNcIiAvKiBMaWZlY3ljbGVIb29rcy5DUkVBVEVEICovXTogJ2NyZWF0ZWQgaG9vaycsXHJcbiAgICBbXCJibVwiIC8qIExpZmVjeWNsZUhvb2tzLkJFRk9SRV9NT1VOVCAqL106ICdiZWZvcmVNb3VudCBob29rJyxcclxuICAgIFtcIm1cIiAvKiBMaWZlY3ljbGVIb29rcy5NT1VOVEVEICovXTogJ21vdW50ZWQgaG9vaycsXHJcbiAgICBbXCJidVwiIC8qIExpZmVjeWNsZUhvb2tzLkJFRk9SRV9VUERBVEUgKi9dOiAnYmVmb3JlVXBkYXRlIGhvb2snLFxyXG4gICAgW1widVwiIC8qIExpZmVjeWNsZUhvb2tzLlVQREFURUQgKi9dOiAndXBkYXRlZCcsXHJcbiAgICBbXCJidW1cIiAvKiBMaWZlY3ljbGVIb29rcy5CRUZPUkVfVU5NT1VOVCAqL106ICdiZWZvcmVVbm1vdW50IGhvb2snLFxyXG4gICAgW1widW1cIiAvKiBMaWZlY3ljbGVIb29rcy5VTk1PVU5URUQgKi9dOiAndW5tb3VudGVkIGhvb2snLFxyXG4gICAgW1wiYVwiIC8qIExpZmVjeWNsZUhvb2tzLkFDVElWQVRFRCAqL106ICdhY3RpdmF0ZWQgaG9vaycsXHJcbiAgICBbXCJkYVwiIC8qIExpZmVjeWNsZUhvb2tzLkRFQUNUSVZBVEVEICovXTogJ2RlYWN0aXZhdGVkIGhvb2snLFxyXG4gICAgW1wiZWNcIiAvKiBMaWZlY3ljbGVIb29rcy5FUlJPUl9DQVBUVVJFRCAqL106ICdlcnJvckNhcHR1cmVkIGhvb2snLFxyXG4gICAgW1wicnRjXCIgLyogTGlmZWN5Y2xlSG9va3MuUkVOREVSX1RSQUNLRUQgKi9dOiAncmVuZGVyVHJhY2tlZCBob29rJyxcclxuICAgIFtcInJ0Z1wiIC8qIExpZmVjeWNsZUhvb2tzLlJFTkRFUl9UUklHR0VSRUQgKi9dOiAncmVuZGVyVHJpZ2dlcmVkIGhvb2snLFxyXG4gICAgWzAgLyogRXJyb3JDb2Rlcy5TRVRVUF9GVU5DVElPTiAqL106ICdzZXR1cCBmdW5jdGlvbicsXHJcbiAgICBbMSAvKiBFcnJvckNvZGVzLlJFTkRFUl9GVU5DVElPTiAqL106ICdyZW5kZXIgZnVuY3Rpb24nLFxyXG4gICAgWzIgLyogRXJyb3JDb2Rlcy5XQVRDSF9HRVRURVIgKi9dOiAnd2F0Y2hlciBnZXR0ZXInLFxyXG4gICAgWzMgLyogRXJyb3JDb2Rlcy5XQVRDSF9DQUxMQkFDSyAqL106ICd3YXRjaGVyIGNhbGxiYWNrJyxcclxuICAgIFs0IC8qIEVycm9yQ29kZXMuV0FUQ0hfQ0xFQU5VUCAqL106ICd3YXRjaGVyIGNsZWFudXAgZnVuY3Rpb24nLFxyXG4gICAgWzUgLyogRXJyb3JDb2Rlcy5OQVRJVkVfRVZFTlRfSEFORExFUiAqL106ICduYXRpdmUgZXZlbnQgaGFuZGxlcicsXHJcbiAgICBbNiAvKiBFcnJvckNvZGVzLkNPTVBPTkVOVF9FVkVOVF9IQU5ETEVSICovXTogJ2NvbXBvbmVudCBldmVudCBoYW5kbGVyJyxcclxuICAgIFs3IC8qIEVycm9yQ29kZXMuVk5PREVfSE9PSyAqL106ICd2bm9kZSBob29rJyxcclxuICAgIFs4IC8qIEVycm9yQ29kZXMuRElSRUNUSVZFX0hPT0sgKi9dOiAnZGlyZWN0aXZlIGhvb2snLFxyXG4gICAgWzkgLyogRXJyb3JDb2Rlcy5UUkFOU0lUSU9OX0hPT0sgKi9dOiAndHJhbnNpdGlvbiBob29rJyxcclxuICAgIFsxMCAvKiBFcnJvckNvZGVzLkFQUF9FUlJPUl9IQU5ETEVSICovXTogJ2FwcCBlcnJvckhhbmRsZXInLFxyXG4gICAgWzExIC8qIEVycm9yQ29kZXMuQVBQX1dBUk5fSEFORExFUiAqL106ICdhcHAgd2FybkhhbmRsZXInLFxyXG4gICAgWzEyIC8qIEVycm9yQ29kZXMuRlVOQ1RJT05fUkVGICovXTogJ3JlZiBmdW5jdGlvbicsXHJcbiAgICBbMTMgLyogRXJyb3JDb2Rlcy5BU1lOQ19DT01QT05FTlRfTE9BREVSICovXTogJ2FzeW5jIGNvbXBvbmVudCBsb2FkZXInLFxyXG4gICAgWzE0IC8qIEVycm9yQ29kZXMuU0NIRURVTEVSICovXTogJ3NjaGVkdWxlciBmbHVzaC4gVGhpcyBpcyBsaWtlbHkgYSBWdWUgaW50ZXJuYWxzIGJ1Zy4gJyArXHJcbiAgICAgICAgJ1BsZWFzZSBvcGVuIGFuIGlzc3VlIGF0IGh0dHBzOi8vbmV3LWlzc3VlLnZ1ZWpzLm9yZy8/cmVwbz12dWVqcy9jb3JlJ1xyXG59O1xyXG5mdW5jdGlvbiBjYWxsV2l0aEVycm9ySGFuZGxpbmcoZm4sIGluc3RhbmNlLCB0eXBlLCBhcmdzKSB7XHJcbiAgICBsZXQgcmVzO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICByZXMgPSBhcmdzID8gZm4oLi4uYXJncykgOiBmbigpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgIGhhbmRsZUVycm9yKGVyciwgaW5zdGFuY2UsIHR5cGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxufVxyXG5mdW5jdGlvbiBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhmbiwgaW5zdGFuY2UsIHR5cGUsIGFyZ3MpIHtcclxuICAgIGlmIChpc0Z1bmN0aW9uKGZuKSkge1xyXG4gICAgICAgIGNvbnN0IHJlcyA9IGNhbGxXaXRoRXJyb3JIYW5kbGluZyhmbiwgaW5zdGFuY2UsIHR5cGUsIGFyZ3MpO1xyXG4gICAgICAgIGlmIChyZXMgJiYgaXNQcm9taXNlKHJlcykpIHtcclxuICAgICAgICAgICAgcmVzLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICBoYW5kbGVFcnJvcihlcnIsIGluc3RhbmNlLCB0eXBlKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICB9XHJcbiAgICBjb25zdCB2YWx1ZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YWx1ZXMucHVzaChjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhmbltpXSwgaW5zdGFuY2UsIHR5cGUsIGFyZ3MpKTtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZXM7XHJcbn1cclxuZnVuY3Rpb24gaGFuZGxlRXJyb3IoZXJyLCBpbnN0YW5jZSwgdHlwZSwgdGhyb3dJbkRldiA9IHRydWUpIHtcclxuICAgIGNvbnN0IGNvbnRleHRWTm9kZSA9IGluc3RhbmNlID8gaW5zdGFuY2Uudm5vZGUgOiBudWxsO1xyXG4gICAgaWYgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgbGV0IGN1ciA9IGluc3RhbmNlLnBhcmVudDtcclxuICAgICAgICAvLyB0aGUgZXhwb3NlZCBpbnN0YW5jZSBpcyB0aGUgcmVuZGVyIHByb3h5IHRvIGtlZXAgaXQgY29uc2lzdGVudCB3aXRoIDIueFxyXG4gICAgICAgIGNvbnN0IGV4cG9zZWRJbnN0YW5jZSA9IGluc3RhbmNlLnByb3h5O1xyXG4gICAgICAgIC8vIGluIHByb2R1Y3Rpb24gdGhlIGhvb2sgcmVjZWl2ZXMgb25seSB0aGUgZXJyb3IgY29kZVxyXG4gICAgICAgIGNvbnN0IGVycm9ySW5mbyA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IEVycm9yVHlwZVN0cmluZ3NbdHlwZV0gOiB0eXBlO1xyXG4gICAgICAgIHdoaWxlIChjdXIpIHtcclxuICAgICAgICAgICAgY29uc3QgZXJyb3JDYXB0dXJlZEhvb2tzID0gY3VyLmVjO1xyXG4gICAgICAgICAgICBpZiAoZXJyb3JDYXB0dXJlZEhvb2tzKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVycm9yQ2FwdHVyZWRIb29rcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvckNhcHR1cmVkSG9va3NbaV0oZXJyLCBleHBvc2VkSW5zdGFuY2UsIGVycm9ySW5mbykgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY3VyID0gY3VyLnBhcmVudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gYXBwLWxldmVsIGhhbmRsaW5nXHJcbiAgICAgICAgY29uc3QgYXBwRXJyb3JIYW5kbGVyID0gaW5zdGFuY2UuYXBwQ29udGV4dC5jb25maWcuZXJyb3JIYW5kbGVyO1xyXG4gICAgICAgIGlmIChhcHBFcnJvckhhbmRsZXIpIHtcclxuICAgICAgICAgICAgY2FsbFdpdGhFcnJvckhhbmRsaW5nKGFwcEVycm9ySGFuZGxlciwgbnVsbCwgMTAgLyogRXJyb3JDb2Rlcy5BUFBfRVJST1JfSEFORExFUiAqLywgW2VyciwgZXhwb3NlZEluc3RhbmNlLCBlcnJvckluZm9dKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGxvZ0Vycm9yKGVyciwgdHlwZSwgY29udGV4dFZOb2RlLCB0aHJvd0luRGV2KTtcclxufVxyXG5mdW5jdGlvbiBsb2dFcnJvcihlcnIsIHR5cGUsIGNvbnRleHRWTm9kZSwgdGhyb3dJbkRldiA9IHRydWUpIHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBjb25zdCBpbmZvID0gRXJyb3JUeXBlU3RyaW5nc1t0eXBlXTtcclxuICAgICAgICBpZiAoY29udGV4dFZOb2RlKSB7XHJcbiAgICAgICAgICAgIHB1c2hXYXJuaW5nQ29udGV4dChjb250ZXh0Vk5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB3YXJuKGBVbmhhbmRsZWQgZXJyb3Ike2luZm8gPyBgIGR1cmluZyBleGVjdXRpb24gb2YgJHtpbmZvfWAgOiBgYH1gKTtcclxuICAgICAgICBpZiAoY29udGV4dFZOb2RlKSB7XHJcbiAgICAgICAgICAgIHBvcFdhcm5pbmdDb250ZXh0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNyYXNoIGluIGRldiBieSBkZWZhdWx0IHNvIGl0J3MgbW9yZSBub3RpY2VhYmxlXHJcbiAgICAgICAgaWYgKHRocm93SW5EZXYpIHtcclxuICAgICAgICAgICAgdGhyb3cgZXJyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIHJlY292ZXIgaW4gcHJvZCB0byByZWR1Y2UgdGhlIGltcGFjdCBvbiBlbmQtdXNlclxyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgIH1cclxufVxuXG5sZXQgaXNGbHVzaGluZyA9IGZhbHNlO1xyXG5sZXQgaXNGbHVzaFBlbmRpbmcgPSBmYWxzZTtcclxuY29uc3QgcXVldWUgPSBbXTtcclxubGV0IGZsdXNoSW5kZXggPSAwO1xyXG5jb25zdCBwZW5kaW5nUG9zdEZsdXNoQ2JzID0gW107XHJcbmxldCBhY3RpdmVQb3N0Rmx1c2hDYnMgPSBudWxsO1xyXG5sZXQgcG9zdEZsdXNoSW5kZXggPSAwO1xyXG5jb25zdCByZXNvbHZlZFByb21pc2UgPSAvKiNfX1BVUkVfXyovIFByb21pc2UucmVzb2x2ZSgpO1xyXG5sZXQgY3VycmVudEZsdXNoUHJvbWlzZSA9IG51bGw7XHJcbmNvbnN0IFJFQ1VSU0lPTl9MSU1JVCA9IDEwMDtcclxuZnVuY3Rpb24gbmV4dFRpY2soZm4pIHtcclxuICAgIGNvbnN0IHAgPSBjdXJyZW50Rmx1c2hQcm9taXNlIHx8IHJlc29sdmVkUHJvbWlzZTtcclxuICAgIHJldHVybiBmbiA/IHAudGhlbih0aGlzID8gZm4uYmluZCh0aGlzKSA6IGZuKSA6IHA7XHJcbn1cclxuLy8gIzI3NjhcclxuLy8gVXNlIGJpbmFyeS1zZWFyY2ggdG8gZmluZCBhIHN1aXRhYmxlIHBvc2l0aW9uIGluIHRoZSBxdWV1ZSxcclxuLy8gc28gdGhhdCB0aGUgcXVldWUgbWFpbnRhaW5zIHRoZSBpbmNyZWFzaW5nIG9yZGVyIG9mIGpvYidzIGlkLFxyXG4vLyB3aGljaCBjYW4gcHJldmVudCB0aGUgam9iIGZyb20gYmVpbmcgc2tpcHBlZCBhbmQgYWxzbyBjYW4gYXZvaWQgcmVwZWF0ZWQgcGF0Y2hpbmcuXHJcbmZ1bmN0aW9uIGZpbmRJbnNlcnRpb25JbmRleChpZCkge1xyXG4gICAgLy8gdGhlIHN0YXJ0IGluZGV4IHNob3VsZCBiZSBgZmx1c2hJbmRleCArIDFgXHJcbiAgICBsZXQgc3RhcnQgPSBmbHVzaEluZGV4ICsgMTtcclxuICAgIGxldCBlbmQgPSBxdWV1ZS5sZW5ndGg7XHJcbiAgICB3aGlsZSAoc3RhcnQgPCBlbmQpIHtcclxuICAgICAgICBjb25zdCBtaWRkbGUgPSAoc3RhcnQgKyBlbmQpID4+PiAxO1xyXG4gICAgICAgIGNvbnN0IG1pZGRsZUpvYklkID0gZ2V0SWQocXVldWVbbWlkZGxlXSk7XHJcbiAgICAgICAgbWlkZGxlSm9iSWQgPCBpZCA/IChzdGFydCA9IG1pZGRsZSArIDEpIDogKGVuZCA9IG1pZGRsZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3RhcnQ7XHJcbn1cclxuZnVuY3Rpb24gcXVldWVKb2Ioam9iKSB7XHJcbiAgICAvLyB0aGUgZGVkdXBlIHNlYXJjaCB1c2VzIHRoZSBzdGFydEluZGV4IGFyZ3VtZW50IG9mIEFycmF5LmluY2x1ZGVzKClcclxuICAgIC8vIGJ5IGRlZmF1bHQgdGhlIHNlYXJjaCBpbmRleCBpbmNsdWRlcyB0aGUgY3VycmVudCBqb2IgdGhhdCBpcyBiZWluZyBydW5cclxuICAgIC8vIHNvIGl0IGNhbm5vdCByZWN1cnNpdmVseSB0cmlnZ2VyIGl0c2VsZiBhZ2Fpbi5cclxuICAgIC8vIGlmIHRoZSBqb2IgaXMgYSB3YXRjaCgpIGNhbGxiYWNrLCB0aGUgc2VhcmNoIHdpbGwgc3RhcnQgd2l0aCBhICsxIGluZGV4IHRvXHJcbiAgICAvLyBhbGxvdyBpdCByZWN1cnNpdmVseSB0cmlnZ2VyIGl0c2VsZiAtIGl0IGlzIHRoZSB1c2VyJ3MgcmVzcG9uc2liaWxpdHkgdG9cclxuICAgIC8vIGVuc3VyZSBpdCBkb2Vzbid0IGVuZCB1cCBpbiBhbiBpbmZpbml0ZSBsb29wLlxyXG4gICAgaWYgKCFxdWV1ZS5sZW5ndGggfHxcclxuICAgICAgICAhcXVldWUuaW5jbHVkZXMoam9iLCBpc0ZsdXNoaW5nICYmIGpvYi5hbGxvd1JlY3Vyc2UgPyBmbHVzaEluZGV4ICsgMSA6IGZsdXNoSW5kZXgpKSB7XHJcbiAgICAgICAgaWYgKGpvYi5pZCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHF1ZXVlLnB1c2goam9iKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHF1ZXVlLnNwbGljZShmaW5kSW5zZXJ0aW9uSW5kZXgoam9iLmlkKSwgMCwgam9iKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcXVldWVGbHVzaCgpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHF1ZXVlRmx1c2goKSB7XHJcbiAgICBpZiAoIWlzRmx1c2hpbmcgJiYgIWlzRmx1c2hQZW5kaW5nKSB7XHJcbiAgICAgICAgaXNGbHVzaFBlbmRpbmcgPSB0cnVlO1xyXG4gICAgICAgIGN1cnJlbnRGbHVzaFByb21pc2UgPSByZXNvbHZlZFByb21pc2UudGhlbihmbHVzaEpvYnMpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGludmFsaWRhdGVKb2Ioam9iKSB7XHJcbiAgICBjb25zdCBpID0gcXVldWUuaW5kZXhPZihqb2IpO1xyXG4gICAgaWYgKGkgPiBmbHVzaEluZGV4KSB7XHJcbiAgICAgICAgcXVldWUuc3BsaWNlKGksIDEpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHF1ZXVlUG9zdEZsdXNoQ2IoY2IpIHtcclxuICAgIGlmICghaXNBcnJheShjYikpIHtcclxuICAgICAgICBpZiAoIWFjdGl2ZVBvc3RGbHVzaENicyB8fFxyXG4gICAgICAgICAgICAhYWN0aXZlUG9zdEZsdXNoQ2JzLmluY2x1ZGVzKGNiLCBjYi5hbGxvd1JlY3Vyc2UgPyBwb3N0Rmx1c2hJbmRleCArIDEgOiBwb3N0Rmx1c2hJbmRleCkpIHtcclxuICAgICAgICAgICAgcGVuZGluZ1Bvc3RGbHVzaENicy5wdXNoKGNiKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBpZiBjYiBpcyBhbiBhcnJheSwgaXQgaXMgYSBjb21wb25lbnQgbGlmZWN5Y2xlIGhvb2sgd2hpY2ggY2FuIG9ubHkgYmVcclxuICAgICAgICAvLyB0cmlnZ2VyZWQgYnkgYSBqb2IsIHdoaWNoIGlzIGFscmVhZHkgZGVkdXBlZCBpbiB0aGUgbWFpbiBxdWV1ZSwgc29cclxuICAgICAgICAvLyB3ZSBjYW4gc2tpcCBkdXBsaWNhdGUgY2hlY2sgaGVyZSB0byBpbXByb3ZlIHBlcmZcclxuICAgICAgICBwZW5kaW5nUG9zdEZsdXNoQ2JzLnB1c2goLi4uY2IpO1xyXG4gICAgfVxyXG4gICAgcXVldWVGbHVzaCgpO1xyXG59XHJcbmZ1bmN0aW9uIGZsdXNoUHJlRmx1c2hDYnMoc2VlbiwgaSA9IGZsdXNoSW5kZXgpIHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBzZWVuID0gc2VlbiB8fCBuZXcgTWFwKCk7XHJcbiAgICB9XHJcbiAgICBmb3IgKDsgaSA8IHF1ZXVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgY2IgPSBxdWV1ZVtpXTtcclxuICAgICAgICBpZiAoY2IgJiYgY2IucHJlKSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgY2hlY2tSZWN1cnNpdmVVcGRhdGVzKHNlZW4sIGNiKSkge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcXVldWUuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICBpLS07XHJcbiAgICAgICAgICAgIGNiKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGZsdXNoUG9zdEZsdXNoQ2JzKHNlZW4pIHtcclxuICAgIGlmIChwZW5kaW5nUG9zdEZsdXNoQ2JzLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IGRlZHVwZWQgPSBbLi4ubmV3IFNldChwZW5kaW5nUG9zdEZsdXNoQ2JzKV07XHJcbiAgICAgICAgcGVuZGluZ1Bvc3RGbHVzaENicy5sZW5ndGggPSAwO1xyXG4gICAgICAgIC8vICMxOTQ3IGFscmVhZHkgaGFzIGFjdGl2ZSBxdWV1ZSwgbmVzdGVkIGZsdXNoUG9zdEZsdXNoQ2JzIGNhbGxcclxuICAgICAgICBpZiAoYWN0aXZlUG9zdEZsdXNoQ2JzKSB7XHJcbiAgICAgICAgICAgIGFjdGl2ZVBvc3RGbHVzaENicy5wdXNoKC4uLmRlZHVwZWQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFjdGl2ZVBvc3RGbHVzaENicyA9IGRlZHVwZWQ7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICBzZWVuID0gc2VlbiB8fCBuZXcgTWFwKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFjdGl2ZVBvc3RGbHVzaENicy5zb3J0KChhLCBiKSA9PiBnZXRJZChhKSAtIGdldElkKGIpKTtcclxuICAgICAgICBmb3IgKHBvc3RGbHVzaEluZGV4ID0gMDsgcG9zdEZsdXNoSW5kZXggPCBhY3RpdmVQb3N0Rmx1c2hDYnMubGVuZ3RoOyBwb3N0Rmx1c2hJbmRleCsrKSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgIGNoZWNrUmVjdXJzaXZlVXBkYXRlcyhzZWVuLCBhY3RpdmVQb3N0Rmx1c2hDYnNbcG9zdEZsdXNoSW5kZXhdKSkge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYWN0aXZlUG9zdEZsdXNoQ2JzW3Bvc3RGbHVzaEluZGV4XSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhY3RpdmVQb3N0Rmx1c2hDYnMgPSBudWxsO1xyXG4gICAgICAgIHBvc3RGbHVzaEluZGV4ID0gMDtcclxuICAgIH1cclxufVxyXG5jb25zdCBnZXRJZCA9IChqb2IpID0+IGpvYi5pZCA9PSBudWxsID8gSW5maW5pdHkgOiBqb2IuaWQ7XHJcbmNvbnN0IGNvbXBhcmF0b3IgPSAoYSwgYikgPT4ge1xyXG4gICAgY29uc3QgZGlmZiA9IGdldElkKGEpIC0gZ2V0SWQoYik7XHJcbiAgICBpZiAoZGlmZiA9PT0gMCkge1xyXG4gICAgICAgIGlmIChhLnByZSAmJiAhYi5wcmUpXHJcbiAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICBpZiAoYi5wcmUgJiYgIWEucHJlKVxyXG4gICAgICAgICAgICByZXR1cm4gMTtcclxuICAgIH1cclxuICAgIHJldHVybiBkaWZmO1xyXG59O1xyXG5mdW5jdGlvbiBmbHVzaEpvYnMoc2Vlbikge1xyXG4gICAgaXNGbHVzaFBlbmRpbmcgPSBmYWxzZTtcclxuICAgIGlzRmx1c2hpbmcgPSB0cnVlO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIHNlZW4gPSBzZWVuIHx8IG5ldyBNYXAoKTtcclxuICAgIH1cclxuICAgIC8vIFNvcnQgcXVldWUgYmVmb3JlIGZsdXNoLlxyXG4gICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQ6XHJcbiAgICAvLyAxLiBDb21wb25lbnRzIGFyZSB1cGRhdGVkIGZyb20gcGFyZW50IHRvIGNoaWxkLiAoYmVjYXVzZSBwYXJlbnQgaXMgYWx3YXlzXHJcbiAgICAvLyAgICBjcmVhdGVkIGJlZm9yZSB0aGUgY2hpbGQgc28gaXRzIHJlbmRlciBlZmZlY3Qgd2lsbCBoYXZlIHNtYWxsZXJcclxuICAgIC8vICAgIHByaW9yaXR5IG51bWJlcilcclxuICAgIC8vIDIuIElmIGEgY29tcG9uZW50IGlzIHVubW91bnRlZCBkdXJpbmcgYSBwYXJlbnQgY29tcG9uZW50J3MgdXBkYXRlLFxyXG4gICAgLy8gICAgaXRzIHVwZGF0ZSBjYW4gYmUgc2tpcHBlZC5cclxuICAgIHF1ZXVlLnNvcnQoY29tcGFyYXRvcik7XHJcbiAgICAvLyBjb25kaXRpb25hbCB1c2FnZSBvZiBjaGVja1JlY3Vyc2l2ZVVwZGF0ZSBtdXN0IGJlIGRldGVybWluZWQgb3V0IG9mXHJcbiAgICAvLyB0cnkgLi4uIGNhdGNoIGJsb2NrIHNpbmNlIFJvbGx1cCBieSBkZWZhdWx0IGRlLW9wdGltaXplcyB0cmVlc2hha2luZ1xyXG4gICAgLy8gaW5zaWRlIHRyeS1jYXRjaC4gVGhpcyBjYW4gbGVhdmUgYWxsIHdhcm5pbmcgY29kZSB1bnNoYWtlZC4gQWx0aG91Z2hcclxuICAgIC8vIHRoZXkgd291bGQgZ2V0IGV2ZW50dWFsbHkgc2hha2VuIGJ5IGEgbWluaWZpZXIgbGlrZSB0ZXJzZXIsIHNvbWUgbWluaWZpZXJzXHJcbiAgICAvLyB3b3VsZCBmYWlsIHRvIGRvIHRoYXQgKGUuZy4gaHR0cHM6Ly9naXRodWIuY29tL2V2YW53L2VzYnVpbGQvaXNzdWVzLzE2MTApXHJcbiAgICBjb25zdCBjaGVjayA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgID8gKGpvYikgPT4gY2hlY2tSZWN1cnNpdmVVcGRhdGVzKHNlZW4sIGpvYilcclxuICAgICAgICA6IE5PT1A7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGZvciAoZmx1c2hJbmRleCA9IDA7IGZsdXNoSW5kZXggPCBxdWV1ZS5sZW5ndGg7IGZsdXNoSW5kZXgrKykge1xyXG4gICAgICAgICAgICBjb25zdCBqb2IgPSBxdWV1ZVtmbHVzaEluZGV4XTtcclxuICAgICAgICAgICAgaWYgKGpvYiAmJiBqb2IuYWN0aXZlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBjaGVjayhqb2IpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhgcnVubmluZzpgLCBqb2IuaWQpXHJcbiAgICAgICAgICAgICAgICBjYWxsV2l0aEVycm9ySGFuZGxpbmcoam9iLCBudWxsLCAxNCAvKiBFcnJvckNvZGVzLlNDSEVEVUxFUiAqLyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgICBmbHVzaEluZGV4ID0gMDtcclxuICAgICAgICBxdWV1ZS5sZW5ndGggPSAwO1xyXG4gICAgICAgIGZsdXNoUG9zdEZsdXNoQ2JzKHNlZW4pO1xyXG4gICAgICAgIGlzRmx1c2hpbmcgPSBmYWxzZTtcclxuICAgICAgICBjdXJyZW50Rmx1c2hQcm9taXNlID0gbnVsbDtcclxuICAgICAgICAvLyBzb21lIHBvc3RGbHVzaENiIHF1ZXVlZCBqb2JzIVxyXG4gICAgICAgIC8vIGtlZXAgZmx1c2hpbmcgdW50aWwgaXQgZHJhaW5zLlxyXG4gICAgICAgIGlmIChxdWV1ZS5sZW5ndGggfHwgcGVuZGluZ1Bvc3RGbHVzaENicy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgZmx1c2hKb2JzKHNlZW4pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjaGVja1JlY3Vyc2l2ZVVwZGF0ZXMoc2VlbiwgZm4pIHtcclxuICAgIGlmICghc2Vlbi5oYXMoZm4pKSB7XHJcbiAgICAgICAgc2Vlbi5zZXQoZm4sIDEpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgY291bnQgPSBzZWVuLmdldChmbik7XHJcbiAgICAgICAgaWYgKGNvdW50ID4gUkVDVVJTSU9OX0xJTUlUKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gZm4ub3duZXJJbnN0YW5jZTtcclxuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50TmFtZSA9IGluc3RhbmNlICYmIGdldENvbXBvbmVudE5hbWUoaW5zdGFuY2UudHlwZSk7XHJcbiAgICAgICAgICAgIHdhcm4oYE1heGltdW0gcmVjdXJzaXZlIHVwZGF0ZXMgZXhjZWVkZWQke2NvbXBvbmVudE5hbWUgPyBgIGluIGNvbXBvbmVudCA8JHtjb21wb25lbnROYW1lfT5gIDogYGB9LiBgICtcclxuICAgICAgICAgICAgICAgIGBUaGlzIG1lYW5zIHlvdSBoYXZlIGEgcmVhY3RpdmUgZWZmZWN0IHRoYXQgaXMgbXV0YXRpbmcgaXRzIG93biBgICtcclxuICAgICAgICAgICAgICAgIGBkZXBlbmRlbmNpZXMgYW5kIHRodXMgcmVjdXJzaXZlbHkgdHJpZ2dlcmluZyBpdHNlbGYuIFBvc3NpYmxlIHNvdXJjZXMgYCArXHJcbiAgICAgICAgICAgICAgICBgaW5jbHVkZSBjb21wb25lbnQgdGVtcGxhdGUsIHJlbmRlciBmdW5jdGlvbiwgdXBkYXRlZCBob29rIG9yIGAgK1xyXG4gICAgICAgICAgICAgICAgYHdhdGNoZXIgc291cmNlIGZ1bmN0aW9uLmApO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHNlZW4uc2V0KGZuLCBjb3VudCArIDEpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgKi9cclxubGV0IGlzSG1yVXBkYXRpbmcgPSBmYWxzZTtcclxuY29uc3QgaG1yRGlydHlDb21wb25lbnRzID0gbmV3IFNldCgpO1xyXG4vLyBFeHBvc2UgdGhlIEhNUiBydW50aW1lIG9uIHRoZSBnbG9iYWwgb2JqZWN0XHJcbi8vIFRoaXMgbWFrZXMgaXQgZW50aXJlbHkgdHJlZS1zaGFrYWJsZSB3aXRob3V0IHBvbGx1dGluZyB0aGUgZXhwb3J0cyBhbmQgbWFrZXNcclxuLy8gaXQgZWFzaWVyIHRvIGJlIHVzZWQgaW4gdG9vbGluZ3MgbGlrZSB2dWUtbG9hZGVyXHJcbi8vIE5vdGU6IGZvciBhIGNvbXBvbmVudCB0byBiZSBlbGlnaWJsZSBmb3IgSE1SIGl0IGFsc28gbmVlZHMgdGhlIF9faG1ySWQgb3B0aW9uXHJcbi8vIHRvIGJlIHNldCBzbyB0aGF0IGl0cyBpbnN0YW5jZXMgY2FuIGJlIHJlZ2lzdGVyZWQgLyByZW1vdmVkLlxyXG5pZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICBnZXRHbG9iYWxUaGlzKCkuX19WVUVfSE1SX1JVTlRJTUVfXyA9IHtcclxuICAgICAgICBjcmVhdGVSZWNvcmQ6IHRyeVdyYXAoY3JlYXRlUmVjb3JkKSxcclxuICAgICAgICByZXJlbmRlcjogdHJ5V3JhcChyZXJlbmRlciksXHJcbiAgICAgICAgcmVsb2FkOiB0cnlXcmFwKHJlbG9hZClcclxuICAgIH07XHJcbn1cclxuY29uc3QgbWFwID0gbmV3IE1hcCgpO1xyXG5mdW5jdGlvbiByZWdpc3RlckhNUihpbnN0YW5jZSkge1xyXG4gICAgY29uc3QgaWQgPSBpbnN0YW5jZS50eXBlLl9faG1ySWQ7XHJcbiAgICBsZXQgcmVjb3JkID0gbWFwLmdldChpZCk7XHJcbiAgICBpZiAoIXJlY29yZCkge1xyXG4gICAgICAgIGNyZWF0ZVJlY29yZChpZCwgaW5zdGFuY2UudHlwZSk7XHJcbiAgICAgICAgcmVjb3JkID0gbWFwLmdldChpZCk7XHJcbiAgICB9XHJcbiAgICByZWNvcmQuaW5zdGFuY2VzLmFkZChpbnN0YW5jZSk7XHJcbn1cclxuZnVuY3Rpb24gdW5yZWdpc3RlckhNUihpbnN0YW5jZSkge1xyXG4gICAgbWFwLmdldChpbnN0YW5jZS50eXBlLl9faG1ySWQpLmluc3RhbmNlcy5kZWxldGUoaW5zdGFuY2UpO1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVJlY29yZChpZCwgaW5pdGlhbERlZikge1xyXG4gICAgaWYgKG1hcC5oYXMoaWQpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgbWFwLnNldChpZCwge1xyXG4gICAgICAgIGluaXRpYWxEZWY6IG5vcm1hbGl6ZUNsYXNzQ29tcG9uZW50KGluaXRpYWxEZWYpLFxyXG4gICAgICAgIGluc3RhbmNlczogbmV3IFNldCgpXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0cnVlO1xyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZUNsYXNzQ29tcG9uZW50KGNvbXBvbmVudCkge1xyXG4gICAgcmV0dXJuIGlzQ2xhc3NDb21wb25lbnQoY29tcG9uZW50KSA/IGNvbXBvbmVudC5fX3ZjY09wdHMgOiBjb21wb25lbnQ7XHJcbn1cclxuZnVuY3Rpb24gcmVyZW5kZXIoaWQsIG5ld1JlbmRlcikge1xyXG4gICAgY29uc3QgcmVjb3JkID0gbWFwLmdldChpZCk7XHJcbiAgICBpZiAoIXJlY29yZCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIHVwZGF0ZSBpbml0aWFsIHJlY29yZCAoZm9yIG5vdC15ZXQtcmVuZGVyZWQgY29tcG9uZW50KVxyXG4gICAgcmVjb3JkLmluaXRpYWxEZWYucmVuZGVyID0gbmV3UmVuZGVyO1xyXG4gICAgWy4uLnJlY29yZC5pbnN0YW5jZXNdLmZvckVhY2goaW5zdGFuY2UgPT4ge1xyXG4gICAgICAgIGlmIChuZXdSZW5kZXIpIHtcclxuICAgICAgICAgICAgaW5zdGFuY2UucmVuZGVyID0gbmV3UmVuZGVyO1xyXG4gICAgICAgICAgICBub3JtYWxpemVDbGFzc0NvbXBvbmVudChpbnN0YW5jZS50eXBlKS5yZW5kZXIgPSBuZXdSZW5kZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGluc3RhbmNlLnJlbmRlckNhY2hlID0gW107XHJcbiAgICAgICAgLy8gdGhpcyBmbGFnIGZvcmNlcyBjaGlsZCBjb21wb25lbnRzIHdpdGggc2xvdCBjb250ZW50IHRvIHVwZGF0ZVxyXG4gICAgICAgIGlzSG1yVXBkYXRpbmcgPSB0cnVlO1xyXG4gICAgICAgIGluc3RhbmNlLnVwZGF0ZSgpO1xyXG4gICAgICAgIGlzSG1yVXBkYXRpbmcgPSBmYWxzZTtcclxuICAgIH0pO1xyXG59XHJcbmZ1bmN0aW9uIHJlbG9hZChpZCwgbmV3Q29tcCkge1xyXG4gICAgY29uc3QgcmVjb3JkID0gbWFwLmdldChpZCk7XHJcbiAgICBpZiAoIXJlY29yZClcclxuICAgICAgICByZXR1cm47XHJcbiAgICBuZXdDb21wID0gbm9ybWFsaXplQ2xhc3NDb21wb25lbnQobmV3Q29tcCk7XHJcbiAgICAvLyB1cGRhdGUgaW5pdGlhbCBkZWYgKGZvciBub3QteWV0LXJlbmRlcmVkIGNvbXBvbmVudHMpXHJcbiAgICB1cGRhdGVDb21wb25lbnREZWYocmVjb3JkLmluaXRpYWxEZWYsIG5ld0NvbXApO1xyXG4gICAgLy8gY3JlYXRlIGEgc25hcHNob3Qgd2hpY2ggYXZvaWRzIHRoZSBzZXQgYmVpbmcgbXV0YXRlZCBkdXJpbmcgdXBkYXRlc1xyXG4gICAgY29uc3QgaW5zdGFuY2VzID0gWy4uLnJlY29yZC5pbnN0YW5jZXNdO1xyXG4gICAgZm9yIChjb25zdCBpbnN0YW5jZSBvZiBpbnN0YW5jZXMpIHtcclxuICAgICAgICBjb25zdCBvbGRDb21wID0gbm9ybWFsaXplQ2xhc3NDb21wb25lbnQoaW5zdGFuY2UudHlwZSk7XHJcbiAgICAgICAgaWYgKCFobXJEaXJ0eUNvbXBvbmVudHMuaGFzKG9sZENvbXApKSB7XHJcbiAgICAgICAgICAgIC8vIDEuIFVwZGF0ZSBleGlzdGluZyBjb21wIGRlZmluaXRpb24gdG8gbWF0Y2ggbmV3IG9uZVxyXG4gICAgICAgICAgICBpZiAob2xkQ29tcCAhPT0gcmVjb3JkLmluaXRpYWxEZWYpIHtcclxuICAgICAgICAgICAgICAgIHVwZGF0ZUNvbXBvbmVudERlZihvbGRDb21wLCBuZXdDb21wKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyAyLiBtYXJrIGRlZmluaXRpb24gZGlydHkuIFRoaXMgZm9yY2VzIHRoZSByZW5kZXJlciB0byByZXBsYWNlIHRoZVxyXG4gICAgICAgICAgICAvLyBjb21wb25lbnQgb24gcGF0Y2guXHJcbiAgICAgICAgICAgIGhtckRpcnR5Q29tcG9uZW50cy5hZGQob2xkQ29tcCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIDMuIGludmFsaWRhdGUgb3B0aW9ucyByZXNvbHV0aW9uIGNhY2hlXHJcbiAgICAgICAgaW5zdGFuY2UuYXBwQ29udGV4dC5vcHRpb25zQ2FjaGUuZGVsZXRlKGluc3RhbmNlLnR5cGUpO1xyXG4gICAgICAgIC8vIDQuIGFjdHVhbGx5IHVwZGF0ZVxyXG4gICAgICAgIGlmIChpbnN0YW5jZS5jZVJlbG9hZCkge1xyXG4gICAgICAgICAgICAvLyBjdXN0b20gZWxlbWVudFxyXG4gICAgICAgICAgICBobXJEaXJ0eUNvbXBvbmVudHMuYWRkKG9sZENvbXApO1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5jZVJlbG9hZChuZXdDb21wLnN0eWxlcyk7XHJcbiAgICAgICAgICAgIGhtckRpcnR5Q29tcG9uZW50cy5kZWxldGUob2xkQ29tcCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGluc3RhbmNlLnBhcmVudCkge1xyXG4gICAgICAgICAgICAvLyA0LiBGb3JjZSB0aGUgcGFyZW50IGluc3RhbmNlIHRvIHJlLXJlbmRlci4gVGhpcyB3aWxsIGNhdXNlIGFsbCB1cGRhdGVkXHJcbiAgICAgICAgICAgIC8vIGNvbXBvbmVudHMgdG8gYmUgdW5tb3VudGVkIGFuZCByZS1tb3VudGVkLiBRdWV1ZSB0aGUgdXBkYXRlIHNvIHRoYXQgd2VcclxuICAgICAgICAgICAgLy8gZG9uJ3QgZW5kIHVwIGZvcmNpbmcgdGhlIHNhbWUgcGFyZW50IHRvIHJlLXJlbmRlciBtdWx0aXBsZSB0aW1lcy5cclxuICAgICAgICAgICAgcXVldWVKb2IoaW5zdGFuY2UucGFyZW50LnVwZGF0ZSk7XHJcbiAgICAgICAgICAgIC8vIGluc3RhbmNlIGlzIHRoZSBpbm5lciBjb21wb25lbnQgb2YgYW4gYXN5bmMgY3VzdG9tIGVsZW1lbnRcclxuICAgICAgICAgICAgLy8gaW52b2tlIHRvIHJlc2V0IHN0eWxlc1xyXG4gICAgICAgICAgICBpZiAoaW5zdGFuY2UucGFyZW50LnR5cGUuX19hc3luY0xvYWRlciAmJlxyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UucGFyZW50LmNlUmVsb2FkKSB7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5wYXJlbnQuY2VSZWxvYWQobmV3Q29tcC5zdHlsZXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGluc3RhbmNlLmFwcENvbnRleHQucmVsb2FkKSB7XHJcbiAgICAgICAgICAgIC8vIHJvb3QgaW5zdGFuY2UgbW91bnRlZCB2aWEgY3JlYXRlQXBwKCkgaGFzIGEgcmVsb2FkIG1ldGhvZFxyXG4gICAgICAgICAgICBpbnN0YW5jZS5hcHBDb250ZXh0LnJlbG9hZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAvLyByb290IGluc3RhbmNlIGluc2lkZSB0cmVlIGNyZWF0ZWQgdmlhIHJhdyByZW5kZXIoKS4gRm9yY2UgcmVsb2FkLlxyXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1tITVJdIFJvb3Qgb3IgbWFudWFsbHkgbW91bnRlZCBpbnN0YW5jZSBtb2RpZmllZC4gRnVsbCByZWxvYWQgcmVxdWlyZWQuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gNS4gbWFrZSBzdXJlIHRvIGNsZWFudXAgZGlydHkgaG1yIGNvbXBvbmVudHMgYWZ0ZXIgdXBkYXRlXHJcbiAgICBxdWV1ZVBvc3RGbHVzaENiKCgpID0+IHtcclxuICAgICAgICBmb3IgKGNvbnN0IGluc3RhbmNlIG9mIGluc3RhbmNlcykge1xyXG4gICAgICAgICAgICBobXJEaXJ0eUNvbXBvbmVudHMuZGVsZXRlKG5vcm1hbGl6ZUNsYXNzQ29tcG9uZW50KGluc3RhbmNlLnR5cGUpKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5mdW5jdGlvbiB1cGRhdGVDb21wb25lbnREZWYob2xkQ29tcCwgbmV3Q29tcCkge1xyXG4gICAgZXh0ZW5kKG9sZENvbXAsIG5ld0NvbXApO1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2xkQ29tcCkge1xyXG4gICAgICAgIGlmIChrZXkgIT09ICdfX2ZpbGUnICYmICEoa2V5IGluIG5ld0NvbXApKSB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSBvbGRDb21wW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHRyeVdyYXAoZm4pIHtcclxuICAgIHJldHVybiAoaWQsIGFyZykgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmbihpZCwgYXJnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKGBbSE1SXSBTb21ldGhpbmcgd2VudCB3cm9uZyBkdXJpbmcgVnVlIGNvbXBvbmVudCBob3QtcmVsb2FkLiBgICtcclxuICAgICAgICAgICAgICAgIGBGdWxsIHJlbG9hZCByZXF1aXJlZC5gKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XG5cbmxldCBkZXZ0b29scztcclxubGV0IGJ1ZmZlciA9IFtdO1xyXG5sZXQgZGV2dG9vbHNOb3RJbnN0YWxsZWQgPSBmYWxzZTtcclxuZnVuY3Rpb24gZW1pdChldmVudCwgLi4uYXJncykge1xyXG4gICAgaWYgKGRldnRvb2xzKSB7XHJcbiAgICAgICAgZGV2dG9vbHMuZW1pdChldmVudCwgLi4uYXJncyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICghZGV2dG9vbHNOb3RJbnN0YWxsZWQpIHtcclxuICAgICAgICBidWZmZXIucHVzaCh7IGV2ZW50LCBhcmdzIH0pO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHNldERldnRvb2xzSG9vayhob29rLCB0YXJnZXQpIHtcclxuICAgIHZhciBfYSwgX2I7XHJcbiAgICBkZXZ0b29scyA9IGhvb2s7XHJcbiAgICBpZiAoZGV2dG9vbHMpIHtcclxuICAgICAgICBkZXZ0b29scy5lbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICBidWZmZXIuZm9yRWFjaCgoeyBldmVudCwgYXJncyB9KSA9PiBkZXZ0b29scy5lbWl0KGV2ZW50LCAuLi5hcmdzKSk7XHJcbiAgICAgICAgYnVmZmVyID0gW107XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChcclxuICAgIC8vIGhhbmRsZSBsYXRlIGRldnRvb2xzIGluamVjdGlvbiAtIG9ubHkgZG8gdGhpcyBpZiB3ZSBhcmUgaW4gYW4gYWN0dWFsXHJcbiAgICAvLyBicm93c2VyIGVudmlyb25tZW50IHRvIGF2b2lkIHRoZSB0aW1lciBoYW5kbGUgc3RhbGxpbmcgdGVzdCBydW5uZXIgZXhpdFxyXG4gICAgLy8gKCM0ODE1KVxyXG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcclxuICAgICAgICAvLyBzb21lIGVudnMgbW9jayB3aW5kb3cgYnV0IG5vdCBmdWxseVxyXG4gICAgICAgIHdpbmRvdy5IVE1MRWxlbWVudCAmJlxyXG4gICAgICAgIC8vIGFsc28gZXhjbHVkZSBqc2RvbVxyXG4gICAgICAgICEoKF9iID0gKF9hID0gd2luZG93Lm5hdmlnYXRvcikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnVzZXJBZ2VudCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmluY2x1ZGVzKCdqc2RvbScpKSkge1xyXG4gICAgICAgIGNvbnN0IHJlcGxheSA9ICh0YXJnZXQuX19WVUVfREVWVE9PTFNfSE9PS19SRVBMQVlfXyA9XHJcbiAgICAgICAgICAgIHRhcmdldC5fX1ZVRV9ERVZUT09MU19IT09LX1JFUExBWV9fIHx8IFtdKTtcclxuICAgICAgICByZXBsYXkucHVzaCgobmV3SG9vaykgPT4ge1xyXG4gICAgICAgICAgICBzZXREZXZ0b29sc0hvb2sobmV3SG9vaywgdGFyZ2V0KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyBjbGVhciBidWZmZXIgYWZ0ZXIgM3MgLSB0aGUgdXNlciBwcm9iYWJseSBkb2Vzbid0IGhhdmUgZGV2dG9vbHMgaW5zdGFsbGVkXHJcbiAgICAgICAgLy8gYXQgYWxsLCBhbmQga2VlcGluZyB0aGUgYnVmZmVyIHdpbGwgY2F1c2UgbWVtb3J5IGxlYWtzICgjNDczOClcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFkZXZ0b29scykge1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0Ll9fVlVFX0RFVlRPT0xTX0hPT0tfUkVQTEFZX18gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgZGV2dG9vbHNOb3RJbnN0YWxsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYnVmZmVyID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCAzMDAwKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIG5vbi1icm93c2VyIGVudiwgYXNzdW1lIG5vdCBpbnN0YWxsZWRcclxuICAgICAgICBkZXZ0b29sc05vdEluc3RhbGxlZCA9IHRydWU7XHJcbiAgICAgICAgYnVmZmVyID0gW107XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZGV2dG9vbHNJbml0QXBwKGFwcCwgdmVyc2lvbikge1xyXG4gICAgZW1pdChcImFwcDppbml0XCIgLyogRGV2dG9vbHNIb29rcy5BUFBfSU5JVCAqLywgYXBwLCB2ZXJzaW9uLCB7XHJcbiAgICAgICAgRnJhZ21lbnQsXHJcbiAgICAgICAgVGV4dCxcclxuICAgICAgICBDb21tZW50LFxyXG4gICAgICAgIFN0YXRpY1xyXG4gICAgfSk7XHJcbn1cclxuZnVuY3Rpb24gZGV2dG9vbHNVbm1vdW50QXBwKGFwcCkge1xyXG4gICAgZW1pdChcImFwcDp1bm1vdW50XCIgLyogRGV2dG9vbHNIb29rcy5BUFBfVU5NT1VOVCAqLywgYXBwKTtcclxufVxyXG5jb25zdCBkZXZ0b29sc0NvbXBvbmVudEFkZGVkID0gLyojX19QVVJFX18qLyBjcmVhdGVEZXZ0b29sc0NvbXBvbmVudEhvb2soXCJjb21wb25lbnQ6YWRkZWRcIiAvKiBEZXZ0b29sc0hvb2tzLkNPTVBPTkVOVF9BRERFRCAqLyk7XHJcbmNvbnN0IGRldnRvb2xzQ29tcG9uZW50VXBkYXRlZCA9IFxyXG4vKiNfX1BVUkVfXyovIGNyZWF0ZURldnRvb2xzQ29tcG9uZW50SG9vayhcImNvbXBvbmVudDp1cGRhdGVkXCIgLyogRGV2dG9vbHNIb29rcy5DT01QT05FTlRfVVBEQVRFRCAqLyk7XHJcbmNvbnN0IGRldnRvb2xzQ29tcG9uZW50UmVtb3ZlZCA9IFxyXG4vKiNfX1BVUkVfXyovIGNyZWF0ZURldnRvb2xzQ29tcG9uZW50SG9vayhcImNvbXBvbmVudDpyZW1vdmVkXCIgLyogRGV2dG9vbHNIb29rcy5DT01QT05FTlRfUkVNT1ZFRCAqLyk7XHJcbmZ1bmN0aW9uIGNyZWF0ZURldnRvb2xzQ29tcG9uZW50SG9vayhob29rKSB7XHJcbiAgICByZXR1cm4gKGNvbXBvbmVudCkgPT4ge1xyXG4gICAgICAgIGVtaXQoaG9vaywgY29tcG9uZW50LmFwcENvbnRleHQuYXBwLCBjb21wb25lbnQudWlkLCBjb21wb25lbnQucGFyZW50ID8gY29tcG9uZW50LnBhcmVudC51aWQgOiB1bmRlZmluZWQsIGNvbXBvbmVudCk7XHJcbiAgICB9O1xyXG59XHJcbmNvbnN0IGRldnRvb2xzUGVyZlN0YXJ0ID0gLyojX19QVVJFX18qLyBjcmVhdGVEZXZ0b29sc1BlcmZvcm1hbmNlSG9vayhcInBlcmY6c3RhcnRcIiAvKiBEZXZ0b29sc0hvb2tzLlBFUkZPUk1BTkNFX1NUQVJUICovKTtcclxuY29uc3QgZGV2dG9vbHNQZXJmRW5kID0gLyojX19QVVJFX18qLyBjcmVhdGVEZXZ0b29sc1BlcmZvcm1hbmNlSG9vayhcInBlcmY6ZW5kXCIgLyogRGV2dG9vbHNIb29rcy5QRVJGT1JNQU5DRV9FTkQgKi8pO1xyXG5mdW5jdGlvbiBjcmVhdGVEZXZ0b29sc1BlcmZvcm1hbmNlSG9vayhob29rKSB7XHJcbiAgICByZXR1cm4gKGNvbXBvbmVudCwgdHlwZSwgdGltZSkgPT4ge1xyXG4gICAgICAgIGVtaXQoaG9vaywgY29tcG9uZW50LmFwcENvbnRleHQuYXBwLCBjb21wb25lbnQudWlkLCBjb21wb25lbnQsIHR5cGUsIHRpbWUpO1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBkZXZ0b29sc0NvbXBvbmVudEVtaXQoY29tcG9uZW50LCBldmVudCwgcGFyYW1zKSB7XHJcbiAgICBlbWl0KFwiY29tcG9uZW50OmVtaXRcIiAvKiBEZXZ0b29sc0hvb2tzLkNPTVBPTkVOVF9FTUlUICovLCBjb21wb25lbnQuYXBwQ29udGV4dC5hcHAsIGNvbXBvbmVudCwgZXZlbnQsIHBhcmFtcyk7XHJcbn1cblxuZnVuY3Rpb24gZW1pdCQxKGluc3RhbmNlLCBldmVudCwgLi4ucmF3QXJncykge1xyXG4gICAgaWYgKGluc3RhbmNlLmlzVW5tb3VudGVkKVxyXG4gICAgICAgIHJldHVybjtcclxuICAgIGNvbnN0IHByb3BzID0gaW5zdGFuY2Uudm5vZGUucHJvcHMgfHwgRU1QVFlfT0JKO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGNvbnN0IHsgZW1pdHNPcHRpb25zLCBwcm9wc09wdGlvbnM6IFtwcm9wc09wdGlvbnNdIH0gPSBpbnN0YW5jZTtcclxuICAgICAgICBpZiAoZW1pdHNPcHRpb25zKSB7XHJcbiAgICAgICAgICAgIGlmICghKGV2ZW50IGluIGVtaXRzT3B0aW9ucykgJiZcclxuICAgICAgICAgICAgICAgICEoZmFsc2UgKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFwcm9wc09wdGlvbnMgfHwgISh0b0hhbmRsZXJLZXkoZXZlbnQpIGluIHByb3BzT3B0aW9ucykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBDb21wb25lbnQgZW1pdHRlZCBldmVudCBcIiR7ZXZlbnR9XCIgYnV0IGl0IGlzIG5laXRoZXIgZGVjbGFyZWQgaW4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGB0aGUgZW1pdHMgb3B0aW9uIG5vciBhcyBhbiBcIiR7dG9IYW5kbGVyS2V5KGV2ZW50KX1cIiBwcm9wLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdG9yID0gZW1pdHNPcHRpb25zW2V2ZW50XTtcclxuICAgICAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKHZhbGlkYXRvcikpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1ZhbGlkID0gdmFsaWRhdG9yKC4uLnJhd0FyZ3MpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuKGBJbnZhbGlkIGV2ZW50IGFyZ3VtZW50czogZXZlbnQgdmFsaWRhdGlvbiBmYWlsZWQgZm9yIGV2ZW50IFwiJHtldmVudH1cIi5gKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgYXJncyA9IHJhd0FyZ3M7XHJcbiAgICBjb25zdCBpc01vZGVsTGlzdGVuZXIgPSBldmVudC5zdGFydHNXaXRoKCd1cGRhdGU6Jyk7XHJcbiAgICAvLyBmb3Igdi1tb2RlbCB1cGRhdGU6eHh4IGV2ZW50cywgYXBwbHkgbW9kaWZpZXJzIG9uIGFyZ3NcclxuICAgIGNvbnN0IG1vZGVsQXJnID0gaXNNb2RlbExpc3RlbmVyICYmIGV2ZW50LnNsaWNlKDcpO1xyXG4gICAgaWYgKG1vZGVsQXJnICYmIG1vZGVsQXJnIGluIHByb3BzKSB7XHJcbiAgICAgICAgY29uc3QgbW9kaWZpZXJzS2V5ID0gYCR7bW9kZWxBcmcgPT09ICdtb2RlbFZhbHVlJyA/ICdtb2RlbCcgOiBtb2RlbEFyZ31Nb2RpZmllcnNgO1xyXG4gICAgICAgIGNvbnN0IHsgbnVtYmVyLCB0cmltIH0gPSBwcm9wc1ttb2RpZmllcnNLZXldIHx8IEVNUFRZX09CSjtcclxuICAgICAgICBpZiAodHJpbSkge1xyXG4gICAgICAgICAgICBhcmdzID0gcmF3QXJncy5tYXAoYSA9PiBhLnRyaW0oKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChudW1iZXIpIHtcclxuICAgICAgICAgICAgYXJncyA9IHJhd0FyZ3MubWFwKHRvTnVtYmVyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgIGRldnRvb2xzQ29tcG9uZW50RW1pdChpbnN0YW5jZSwgZXZlbnQsIGFyZ3MpO1xyXG4gICAgfVxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGNvbnN0IGxvd2VyQ2FzZUV2ZW50ID0gZXZlbnQudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBpZiAobG93ZXJDYXNlRXZlbnQgIT09IGV2ZW50ICYmIHByb3BzW3RvSGFuZGxlcktleShsb3dlckNhc2VFdmVudCldKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYEV2ZW50IFwiJHtsb3dlckNhc2VFdmVudH1cIiBpcyBlbWl0dGVkIGluIGNvbXBvbmVudCBgICtcclxuICAgICAgICAgICAgICAgIGAke2Zvcm1hdENvbXBvbmVudE5hbWUoaW5zdGFuY2UsIGluc3RhbmNlLnR5cGUpfSBidXQgdGhlIGhhbmRsZXIgaXMgcmVnaXN0ZXJlZCBmb3IgXCIke2V2ZW50fVwiLiBgICtcclxuICAgICAgICAgICAgICAgIGBOb3RlIHRoYXQgSFRNTCBhdHRyaWJ1dGVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlIGFuZCB5b3UgY2Fubm90IHVzZSBgICtcclxuICAgICAgICAgICAgICAgIGB2LW9uIHRvIGxpc3RlbiB0byBjYW1lbENhc2UgZXZlbnRzIHdoZW4gdXNpbmcgaW4tRE9NIHRlbXBsYXRlcy4gYCArXHJcbiAgICAgICAgICAgICAgICBgWW91IHNob3VsZCBwcm9iYWJseSB1c2UgXCIke2h5cGhlbmF0ZShldmVudCl9XCIgaW5zdGVhZCBvZiBcIiR7ZXZlbnR9XCIuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IGhhbmRsZXJOYW1lO1xyXG4gICAgbGV0IGhhbmRsZXIgPSBwcm9wc1soaGFuZGxlck5hbWUgPSB0b0hhbmRsZXJLZXkoZXZlbnQpKV0gfHxcclxuICAgICAgICAvLyBhbHNvIHRyeSBjYW1lbENhc2UgZXZlbnQgaGFuZGxlciAoIzIyNDkpXHJcbiAgICAgICAgcHJvcHNbKGhhbmRsZXJOYW1lID0gdG9IYW5kbGVyS2V5KGNhbWVsaXplKGV2ZW50KSkpXTtcclxuICAgIC8vIGZvciB2LW1vZGVsIHVwZGF0ZTp4eHggZXZlbnRzLCBhbHNvIHRyaWdnZXIga2ViYWItY2FzZSBlcXVpdmFsZW50XHJcbiAgICAvLyBmb3IgcHJvcHMgcGFzc2VkIHZpYSBrZWJhYi1jYXNlXHJcbiAgICBpZiAoIWhhbmRsZXIgJiYgaXNNb2RlbExpc3RlbmVyKSB7XHJcbiAgICAgICAgaGFuZGxlciA9IHByb3BzWyhoYW5kbGVyTmFtZSA9IHRvSGFuZGxlcktleShoeXBoZW5hdGUoZXZlbnQpKSldO1xyXG4gICAgfVxyXG4gICAgaWYgKGhhbmRsZXIpIHtcclxuICAgICAgICBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhoYW5kbGVyLCBpbnN0YW5jZSwgNiAvKiBFcnJvckNvZGVzLkNPTVBPTkVOVF9FVkVOVF9IQU5ETEVSICovLCBhcmdzKTtcclxuICAgIH1cclxuICAgIGNvbnN0IG9uY2VIYW5kbGVyID0gcHJvcHNbaGFuZGxlck5hbWUgKyBgT25jZWBdO1xyXG4gICAgaWYgKG9uY2VIYW5kbGVyKSB7XHJcbiAgICAgICAgaWYgKCFpbnN0YW5jZS5lbWl0dGVkKSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlLmVtaXR0ZWQgPSB7fTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaW5zdGFuY2UuZW1pdHRlZFtoYW5kbGVyTmFtZV0pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpbnN0YW5jZS5lbWl0dGVkW2hhbmRsZXJOYW1lXSA9IHRydWU7XHJcbiAgICAgICAgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcob25jZUhhbmRsZXIsIGluc3RhbmNlLCA2IC8qIEVycm9yQ29kZXMuQ09NUE9ORU5UX0VWRU5UX0hBTkRMRVIgKi8sIGFyZ3MpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZUVtaXRzT3B0aW9ucyhjb21wLCBhcHBDb250ZXh0LCBhc01peGluID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGNhY2hlID0gYXBwQ29udGV4dC5lbWl0c0NhY2hlO1xyXG4gICAgY29uc3QgY2FjaGVkID0gY2FjaGUuZ2V0KGNvbXApO1xyXG4gICAgaWYgKGNhY2hlZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcmV0dXJuIGNhY2hlZDtcclxuICAgIH1cclxuICAgIGNvbnN0IHJhdyA9IGNvbXAuZW1pdHM7XHJcbiAgICBsZXQgbm9ybWFsaXplZCA9IHt9O1xyXG4gICAgLy8gYXBwbHkgbWl4aW4vZXh0ZW5kcyBwcm9wc1xyXG4gICAgbGV0IGhhc0V4dGVuZHMgPSBmYWxzZTtcclxuICAgIGlmIChfX1ZVRV9PUFRJT05TX0FQSV9fICYmICFpc0Z1bmN0aW9uKGNvbXApKSB7XHJcbiAgICAgICAgY29uc3QgZXh0ZW5kRW1pdHMgPSAocmF3KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRGcm9tRXh0ZW5kID0gbm9ybWFsaXplRW1pdHNPcHRpb25zKHJhdywgYXBwQ29udGV4dCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIGlmIChub3JtYWxpemVkRnJvbUV4dGVuZCkge1xyXG4gICAgICAgICAgICAgICAgaGFzRXh0ZW5kcyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBleHRlbmQobm9ybWFsaXplZCwgbm9ybWFsaXplZEZyb21FeHRlbmQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAoIWFzTWl4aW4gJiYgYXBwQ29udGV4dC5taXhpbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGFwcENvbnRleHQubWl4aW5zLmZvckVhY2goZXh0ZW5kRW1pdHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29tcC5leHRlbmRzKSB7XHJcbiAgICAgICAgICAgIGV4dGVuZEVtaXRzKGNvbXAuZXh0ZW5kcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb21wLm1peGlucykge1xyXG4gICAgICAgICAgICBjb21wLm1peGlucy5mb3JFYWNoKGV4dGVuZEVtaXRzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIXJhdyAmJiAhaGFzRXh0ZW5kcykge1xyXG4gICAgICAgIGlmIChpc09iamVjdChjb21wKSkge1xyXG4gICAgICAgICAgICBjYWNoZS5zZXQoY29tcCwgbnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzQXJyYXkocmF3KSkge1xyXG4gICAgICAgIHJhdy5mb3JFYWNoKGtleSA9PiAobm9ybWFsaXplZFtrZXldID0gbnVsbCkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZXh0ZW5kKG5vcm1hbGl6ZWQsIHJhdyk7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNPYmplY3QoY29tcCkpIHtcclxuICAgICAgICBjYWNoZS5zZXQoY29tcCwgbm9ybWFsaXplZCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbm9ybWFsaXplZDtcclxufVxyXG4vLyBDaGVjayBpZiBhbiBpbmNvbWluZyBwcm9wIGtleSBpcyBhIGRlY2xhcmVkIGVtaXQgZXZlbnQgbGlzdGVuZXIuXHJcbi8vIGUuZy4gV2l0aCBgZW1pdHM6IHsgY2xpY2s6IG51bGwgfWAsIHByb3BzIG5hbWVkIGBvbkNsaWNrYCBhbmQgYG9uY2xpY2tgIGFyZVxyXG4vLyBib3RoIGNvbnNpZGVyZWQgbWF0Y2hlZCBsaXN0ZW5lcnMuXHJcbmZ1bmN0aW9uIGlzRW1pdExpc3RlbmVyKG9wdGlvbnMsIGtleSkge1xyXG4gICAgaWYgKCFvcHRpb25zIHx8ICFpc09uKGtleSkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBrZXkgPSBrZXkuc2xpY2UoMikucmVwbGFjZSgvT25jZSQvLCAnJyk7XHJcbiAgICByZXR1cm4gKGhhc093bihvcHRpb25zLCBrZXlbMF0udG9Mb3dlckNhc2UoKSArIGtleS5zbGljZSgxKSkgfHxcclxuICAgICAgICBoYXNPd24ob3B0aW9ucywgaHlwaGVuYXRlKGtleSkpIHx8XHJcbiAgICAgICAgaGFzT3duKG9wdGlvbnMsIGtleSkpO1xyXG59XG5cbi8qKlxyXG4gKiBtYXJrIHRoZSBjdXJyZW50IHJlbmRlcmluZyBpbnN0YW5jZSBmb3IgYXNzZXQgcmVzb2x1dGlvbiAoZS5nLlxyXG4gKiByZXNvbHZlQ29tcG9uZW50LCByZXNvbHZlRGlyZWN0aXZlKSBkdXJpbmcgcmVuZGVyXHJcbiAqL1xyXG5sZXQgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlID0gbnVsbDtcclxubGV0IGN1cnJlbnRTY29wZUlkID0gbnVsbDtcclxuLyoqXHJcbiAqIE5vdGU6IHJlbmRlcmluZyBjYWxscyBtYXliZSBuZXN0ZWQuIFRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBwYXJlbnQgcmVuZGVyaW5nXHJcbiAqIGluc3RhbmNlIGlmIHByZXNlbnQsIHdoaWNoIHNob3VsZCBiZSByZXN0b3JlZCBhZnRlciB0aGUgcmVuZGVyIGlzIGRvbmU6XHJcbiAqXHJcbiAqIGBgYGpzXHJcbiAqIGNvbnN0IHByZXYgPSBzZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UoaSlcclxuICogLy8gLi4ucmVuZGVyXHJcbiAqIHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZShwcmV2KVxyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZShpbnN0YW5jZSkge1xyXG4gICAgY29uc3QgcHJldiA9IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZTtcclxuICAgIGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSA9IGluc3RhbmNlO1xyXG4gICAgY3VycmVudFNjb3BlSWQgPSAoaW5zdGFuY2UgJiYgaW5zdGFuY2UudHlwZS5fX3Njb3BlSWQpIHx8IG51bGw7XHJcbiAgICByZXR1cm4gcHJldjtcclxufVxyXG4vKipcclxuICogU2V0IHNjb3BlIGlkIHdoZW4gY3JlYXRpbmcgaG9pc3RlZCB2bm9kZXMuXHJcbiAqIEBwcml2YXRlIGNvbXBpbGVyIGhlbHBlclxyXG4gKi9cclxuZnVuY3Rpb24gcHVzaFNjb3BlSWQoaWQpIHtcclxuICAgIGN1cnJlbnRTY29wZUlkID0gaWQ7XHJcbn1cclxuLyoqXHJcbiAqIFRlY2huaWNhbGx5IHdlIG5vIGxvbmdlciBuZWVkIHRoaXMgYWZ0ZXIgMy4wLjggYnV0IHdlIG5lZWQgdG8ga2VlcCB0aGUgc2FtZVxyXG4gKiBBUEkgZm9yIGJhY2t3YXJkcyBjb21wYXQgdy8gY29kZSBnZW5lcmF0ZWQgYnkgY29tcGlsZXJzLlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gcG9wU2NvcGVJZCgpIHtcclxuICAgIGN1cnJlbnRTY29wZUlkID0gbnVsbDtcclxufVxyXG4vKipcclxuICogT25seSBmb3IgYmFja3dhcmRzIGNvbXBhdFxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuY29uc3Qgd2l0aFNjb3BlSWQgPSAoX2lkKSA9PiB3aXRoQ3R4O1xyXG4vKipcclxuICogV3JhcCBhIHNsb3QgZnVuY3Rpb24gdG8gbWVtb2l6ZSBjdXJyZW50IHJlbmRlcmluZyBpbnN0YW5jZVxyXG4gKiBAcHJpdmF0ZSBjb21waWxlciBoZWxwZXJcclxuICovXHJcbmZ1bmN0aW9uIHdpdGhDdHgoZm4sIGN0eCA9IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSwgaXNOb25TY29wZWRTbG90IC8vIGZhbHNlIG9ubHlcclxuKSB7XHJcbiAgICBpZiAoIWN0eClcclxuICAgICAgICByZXR1cm4gZm47XHJcbiAgICAvLyBhbHJlYWR5IG5vcm1hbGl6ZWRcclxuICAgIGlmIChmbi5fbikge1xyXG4gICAgICAgIHJldHVybiBmbjtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlbmRlckZuV2l0aENvbnRleHQgPSAoLi4uYXJncykgPT4ge1xyXG4gICAgICAgIC8vIElmIGEgdXNlciBjYWxscyBhIGNvbXBpbGVkIHNsb3QgaW5zaWRlIGEgdGVtcGxhdGUgZXhwcmVzc2lvbiAoIzE3NDUpLCBpdFxyXG4gICAgICAgIC8vIGNhbiBtZXNzIHVwIGJsb2NrIHRyYWNraW5nLCBzbyBieSBkZWZhdWx0IHdlIGRpc2FibGUgYmxvY2sgdHJhY2tpbmcgYW5kXHJcbiAgICAgICAgLy8gZm9yY2UgYmFpbCBvdXQgd2hlbiBpbnZva2luZyBhIGNvbXBpbGVkIHNsb3QgKGluZGljYXRlZCBieSB0aGUgLl9kIGZsYWcpLlxyXG4gICAgICAgIC8vIFRoaXMgaXNuJ3QgbmVjZXNzYXJ5IGlmIHJlbmRlcmluZyBhIGNvbXBpbGVkIGA8c2xvdD5gLCBzbyB3ZSBmbGlwIHRoZVxyXG4gICAgICAgIC8vIC5fZCBmbGFnIG9mZiB3aGVuIGludm9raW5nIHRoZSB3cmFwcGVkIGZuIGluc2lkZSBgcmVuZGVyU2xvdGAuXHJcbiAgICAgICAgaWYgKHJlbmRlckZuV2l0aENvbnRleHQuX2QpIHtcclxuICAgICAgICAgICAgc2V0QmxvY2tUcmFja2luZygtMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHByZXZJbnN0YW5jZSA9IHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZShjdHgpO1xyXG4gICAgICAgIGNvbnN0IHJlcyA9IGZuKC4uLmFyZ3MpO1xyXG4gICAgICAgIHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZShwcmV2SW5zdGFuY2UpO1xyXG4gICAgICAgIGlmIChyZW5kZXJGbldpdGhDb250ZXh0Ll9kKSB7XHJcbiAgICAgICAgICAgIHNldEJsb2NrVHJhY2tpbmcoMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgICAgIGRldnRvb2xzQ29tcG9uZW50VXBkYXRlZChjdHgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgfTtcclxuICAgIC8vIG1hcmsgbm9ybWFsaXplZCB0byBhdm9pZCBkdXBsaWNhdGVkIHdyYXBwaW5nXHJcbiAgICByZW5kZXJGbldpdGhDb250ZXh0Ll9uID0gdHJ1ZTtcclxuICAgIC8vIG1hcmsgdGhpcyBhcyBjb21waWxlZCBieSBkZWZhdWx0XHJcbiAgICAvLyB0aGlzIGlzIHVzZWQgaW4gdm5vZGUudHMgLT4gbm9ybWFsaXplQ2hpbGRyZW4oKSB0byBzZXQgdGhlIHNsb3RcclxuICAgIC8vIHJlbmRlcmluZyBmbGFnLlxyXG4gICAgcmVuZGVyRm5XaXRoQ29udGV4dC5fYyA9IHRydWU7XHJcbiAgICAvLyBkaXNhYmxlIGJsb2NrIHRyYWNraW5nIGJ5IGRlZmF1bHRcclxuICAgIHJlbmRlckZuV2l0aENvbnRleHQuX2QgPSB0cnVlO1xyXG4gICAgcmV0dXJuIHJlbmRlckZuV2l0aENvbnRleHQ7XHJcbn1cblxuLyoqXHJcbiAqIGRldiBvbmx5IGZsYWcgdG8gdHJhY2sgd2hldGhlciAkYXR0cnMgd2FzIHVzZWQgZHVyaW5nIHJlbmRlci5cclxuICogSWYgJGF0dHJzIHdhcyB1c2VkIGR1cmluZyByZW5kZXIgdGhlbiB0aGUgd2FybmluZyBmb3IgZmFpbGVkIGF0dHJzXHJcbiAqIGZhbGx0aHJvdWdoIGNhbiBiZSBzdXBwcmVzc2VkLlxyXG4gKi9cclxubGV0IGFjY2Vzc2VkQXR0cnMgPSBmYWxzZTtcclxuZnVuY3Rpb24gbWFya0F0dHJzQWNjZXNzZWQoKSB7XHJcbiAgICBhY2Nlc3NlZEF0dHJzID0gdHJ1ZTtcclxufVxyXG5mdW5jdGlvbiByZW5kZXJDb21wb25lbnRSb290KGluc3RhbmNlKSB7XHJcbiAgICBjb25zdCB7IHR5cGU6IENvbXBvbmVudCwgdm5vZGUsIHByb3h5LCB3aXRoUHJveHksIHByb3BzLCBwcm9wc09wdGlvbnM6IFtwcm9wc09wdGlvbnNdLCBzbG90cywgYXR0cnMsIGVtaXQsIHJlbmRlciwgcmVuZGVyQ2FjaGUsIGRhdGEsIHNldHVwU3RhdGUsIGN0eCwgaW5oZXJpdEF0dHJzIH0gPSBpbnN0YW5jZTtcclxuICAgIGxldCByZXN1bHQ7XHJcbiAgICBsZXQgZmFsbHRocm91Z2hBdHRycztcclxuICAgIGNvbnN0IHByZXYgPSBzZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UoaW5zdGFuY2UpO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGFjY2Vzc2VkQXR0cnMgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRyeSB7XHJcbiAgICAgICAgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDQgLyogU2hhcGVGbGFncy5TVEFURUZVTF9DT01QT05FTlQgKi8pIHtcclxuICAgICAgICAgICAgLy8gd2l0aFByb3h5IGlzIGEgcHJveHkgd2l0aCBhIGRpZmZlcmVudCBgaGFzYCB0cmFwIG9ubHkgZm9yXHJcbiAgICAgICAgICAgIC8vIHJ1bnRpbWUtY29tcGlsZWQgcmVuZGVyIGZ1bmN0aW9ucyB1c2luZyBgd2l0aGAgYmxvY2suXHJcbiAgICAgICAgICAgIGNvbnN0IHByb3h5VG9Vc2UgPSB3aXRoUHJveHkgfHwgcHJveHk7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IG5vcm1hbGl6ZVZOb2RlKHJlbmRlci5jYWxsKHByb3h5VG9Vc2UsIHByb3h5VG9Vc2UsIHJlbmRlckNhY2hlLCBwcm9wcywgc2V0dXBTdGF0ZSwgZGF0YSwgY3R4KSk7XHJcbiAgICAgICAgICAgIGZhbGx0aHJvdWdoQXR0cnMgPSBhdHRycztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGZ1bmN0aW9uYWxcclxuICAgICAgICAgICAgY29uc3QgcmVuZGVyID0gQ29tcG9uZW50O1xyXG4gICAgICAgICAgICAvLyBpbiBkZXYsIG1hcmsgYXR0cnMgYWNjZXNzZWQgaWYgb3B0aW9uYWwgcHJvcHMgKGF0dHJzID09PSBwcm9wcylcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBhdHRycyA9PT0gcHJvcHMpIHtcclxuICAgICAgICAgICAgICAgIG1hcmtBdHRyc0FjY2Vzc2VkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVzdWx0ID0gbm9ybWFsaXplVk5vZGUocmVuZGVyLmxlbmd0aCA+IDFcclxuICAgICAgICAgICAgICAgID8gcmVuZGVyKHByb3BzLCAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICAgICAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IGF0dHJzKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya0F0dHJzQWNjZXNzZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhdHRycztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2xvdHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgOiB7IGF0dHJzLCBzbG90cywgZW1pdCB9KVxyXG4gICAgICAgICAgICAgICAgOiByZW5kZXIocHJvcHMsIG51bGwgLyogd2Uga25vdyBpdCBkb2Vzbid0IG5lZWQgaXQgKi8pKTtcclxuICAgICAgICAgICAgZmFsbHRocm91Z2hBdHRycyA9IENvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgPyBhdHRyc1xyXG4gICAgICAgICAgICAgICAgOiBnZXRGdW5jdGlvbmFsRmFsbHRocm91Z2goYXR0cnMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICBibG9ja1N0YWNrLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyLCBpbnN0YW5jZSwgMSAvKiBFcnJvckNvZGVzLlJFTkRFUl9GVU5DVElPTiAqLyk7XHJcbiAgICAgICAgcmVzdWx0ID0gY3JlYXRlVk5vZGUoQ29tbWVudCk7XHJcbiAgICB9XHJcbiAgICAvLyBhdHRyIG1lcmdpbmdcclxuICAgIC8vIGluIGRldiBtb2RlLCBjb21tZW50cyBhcmUgcHJlc2VydmVkLCBhbmQgaXQncyBwb3NzaWJsZSBmb3IgYSB0ZW1wbGF0ZVxyXG4gICAgLy8gdG8gaGF2ZSBjb21tZW50cyBhbG9uZyBzaWRlIHRoZSByb290IGVsZW1lbnQgd2hpY2ggbWFrZXMgaXQgYSBmcmFnbWVudFxyXG4gICAgbGV0IHJvb3QgPSByZXN1bHQ7XHJcbiAgICBsZXQgc2V0Um9vdCA9IHVuZGVmaW5lZDtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICByZXN1bHQucGF0Y2hGbGFnID4gMCAmJlxyXG4gICAgICAgIHJlc3VsdC5wYXRjaEZsYWcgJiAyMDQ4IC8qIFBhdGNoRmxhZ3MuREVWX1JPT1RfRlJBR01FTlQgKi8pIHtcclxuICAgICAgICBbcm9vdCwgc2V0Um9vdF0gPSBnZXRDaGlsZFJvb3QocmVzdWx0KTtcclxuICAgIH1cclxuICAgIGlmIChmYWxsdGhyb3VnaEF0dHJzICYmIGluaGVyaXRBdHRycyAhPT0gZmFsc2UpIHtcclxuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoZmFsbHRocm91Z2hBdHRycyk7XHJcbiAgICAgICAgY29uc3QgeyBzaGFwZUZsYWcgfSA9IHJvb3Q7XHJcbiAgICAgICAgaWYgKGtleXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGlmIChzaGFwZUZsYWcgJiAoMSAvKiBTaGFwZUZsYWdzLkVMRU1FTlQgKi8gfCA2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UICovKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHByb3BzT3B0aW9ucyAmJiBrZXlzLnNvbWUoaXNNb2RlbExpc3RlbmVyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIGEgdi1tb2RlbCBsaXN0ZW5lciAob25VcGRhdGU6eHh4KSBoYXMgYSBjb3JyZXNwb25kaW5nIGRlY2xhcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcHJvcCwgaXQgaW5kaWNhdGVzIHRoaXMgY29tcG9uZW50IGV4cGVjdHMgdG8gaGFuZGxlIHYtbW9kZWwgYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaXQgc2hvdWxkIG5vdCBmYWxsdGhyb3VnaC5cclxuICAgICAgICAgICAgICAgICAgICAvLyByZWxhdGVkOiAjMTU0MywgIzE2NDMsICMxOTg5XHJcbiAgICAgICAgICAgICAgICAgICAgZmFsbHRocm91Z2hBdHRycyA9IGZpbHRlck1vZGVsTGlzdGVuZXJzKGZhbGx0aHJvdWdoQXR0cnMsIHByb3BzT3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByb290ID0gY2xvbmVWTm9kZShyb290LCBmYWxsdGhyb3VnaEF0dHJzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWFjY2Vzc2VkQXR0cnMgJiYgcm9vdC50eXBlICE9PSBDb21tZW50KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhbGxBdHRycyA9IE9iamVjdC5rZXlzKGF0dHJzKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50QXR0cnMgPSBbXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGV4dHJhQXR0cnMgPSBbXTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gYWxsQXR0cnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYWxsQXR0cnNbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzT24oa2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmUgdi1tb2RlbCBoYW5kbGVycyB3aGVuIHRoZXkgZmFpbCB0byBmYWxsdGhyb3VnaFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTW9kZWxMaXN0ZW5lcihrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgYG9uYCwgbG93ZXJjYXNlIGZpcnN0IGxldHRlciB0byByZWZsZWN0IGV2ZW50IGNhc2luZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjdXJhdGVseVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRBdHRycy5wdXNoKGtleVsyXS50b0xvd2VyQ2FzZSgpICsga2V5LnNsaWNlKDMpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFBdHRycy5wdXNoKGtleSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGV4dHJhQXR0cnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgRXh0cmFuZW91cyBub24tcHJvcHMgYXR0cmlidXRlcyAoYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGAke2V4dHJhQXR0cnMuam9pbignLCAnKX0pIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgd2VyZSBwYXNzZWQgdG8gY29tcG9uZW50IGJ1dCBjb3VsZCBub3QgYmUgYXV0b21hdGljYWxseSBpbmhlcml0ZWQgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBiZWNhdXNlIGNvbXBvbmVudCByZW5kZXJzIGZyYWdtZW50IG9yIHRleHQgcm9vdCBub2Rlcy5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChldmVudEF0dHJzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYEV4dHJhbmVvdXMgbm9uLWVtaXRzIGV2ZW50IGxpc3RlbmVycyAoYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGAke2V2ZW50QXR0cnMuam9pbignLCAnKX0pIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgd2VyZSBwYXNzZWQgdG8gY29tcG9uZW50IGJ1dCBjb3VsZCBub3QgYmUgYXV0b21hdGljYWxseSBpbmhlcml0ZWQgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBiZWNhdXNlIGNvbXBvbmVudCByZW5kZXJzIGZyYWdtZW50IG9yIHRleHQgcm9vdCBub2Rlcy4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBJZiB0aGUgbGlzdGVuZXIgaXMgaW50ZW5kZWQgdG8gYmUgYSBjb21wb25lbnQgY3VzdG9tIGV2ZW50IGxpc3RlbmVyIG9ubHksIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgZGVjbGFyZSBpdCB1c2luZyB0aGUgXCJlbWl0c1wiIG9wdGlvbi5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIGluaGVyaXQgZGlyZWN0aXZlc1xyXG4gICAgaWYgKHZub2RlLmRpcnMpIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpc0VsZW1lbnRSb290KHJvb3QpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYFJ1bnRpbWUgZGlyZWN0aXZlIHVzZWQgb24gY29tcG9uZW50IHdpdGggbm9uLWVsZW1lbnQgcm9vdCBub2RlLiBgICtcclxuICAgICAgICAgICAgICAgIGBUaGUgZGlyZWN0aXZlcyB3aWxsIG5vdCBmdW5jdGlvbiBhcyBpbnRlbmRlZC5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY2xvbmUgYmVmb3JlIG11dGF0aW5nIHNpbmNlIHRoZSByb290IG1heSBiZSBhIGhvaXN0ZWQgdm5vZGVcclxuICAgICAgICByb290ID0gY2xvbmVWTm9kZShyb290KTtcclxuICAgICAgICByb290LmRpcnMgPSByb290LmRpcnMgPyByb290LmRpcnMuY29uY2F0KHZub2RlLmRpcnMpIDogdm5vZGUuZGlycztcclxuICAgIH1cclxuICAgIC8vIGluaGVyaXQgdHJhbnNpdGlvbiBkYXRhXHJcbiAgICBpZiAodm5vZGUudHJhbnNpdGlvbikge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzRWxlbWVudFJvb3Qocm9vdCkpIHtcclxuICAgICAgICAgICAgd2FybihgQ29tcG9uZW50IGluc2lkZSA8VHJhbnNpdGlvbj4gcmVuZGVycyBub24tZWxlbWVudCByb290IG5vZGUgYCArXHJcbiAgICAgICAgICAgICAgICBgdGhhdCBjYW5ub3QgYmUgYW5pbWF0ZWQuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvb3QudHJhbnNpdGlvbiA9IHZub2RlLnRyYW5zaXRpb247XHJcbiAgICB9XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHNldFJvb3QpIHtcclxuICAgICAgICBzZXRSb290KHJvb3QpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcmVzdWx0ID0gcm9vdDtcclxuICAgIH1cclxuICAgIHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZShwcmV2KTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuLyoqXHJcbiAqIGRldiBvbmx5XHJcbiAqIEluIGRldiBtb2RlLCB0ZW1wbGF0ZSByb290IGxldmVsIGNvbW1lbnRzIGFyZSByZW5kZXJlZCwgd2hpY2ggdHVybnMgdGhlXHJcbiAqIHRlbXBsYXRlIGludG8gYSBmcmFnbWVudCByb290LCBidXQgd2UgbmVlZCB0byBsb2NhdGUgdGhlIHNpbmdsZSBlbGVtZW50XHJcbiAqIHJvb3QgZm9yIGF0dHJzIGFuZCBzY29wZSBpZCBwcm9jZXNzaW5nLlxyXG4gKi9cclxuY29uc3QgZ2V0Q2hpbGRSb290ID0gKHZub2RlKSA9PiB7XHJcbiAgICBjb25zdCByYXdDaGlsZHJlbiA9IHZub2RlLmNoaWxkcmVuO1xyXG4gICAgY29uc3QgZHluYW1pY0NoaWxkcmVuID0gdm5vZGUuZHluYW1pY0NoaWxkcmVuO1xyXG4gICAgY29uc3QgY2hpbGRSb290ID0gZmlsdGVyU2luZ2xlUm9vdChyYXdDaGlsZHJlbik7XHJcbiAgICBpZiAoIWNoaWxkUm9vdCkge1xyXG4gICAgICAgIHJldHVybiBbdm5vZGUsIHVuZGVmaW5lZF07XHJcbiAgICB9XHJcbiAgICBjb25zdCBpbmRleCA9IHJhd0NoaWxkcmVuLmluZGV4T2YoY2hpbGRSb290KTtcclxuICAgIGNvbnN0IGR5bmFtaWNJbmRleCA9IGR5bmFtaWNDaGlsZHJlbiA/IGR5bmFtaWNDaGlsZHJlbi5pbmRleE9mKGNoaWxkUm9vdCkgOiAtMTtcclxuICAgIGNvbnN0IHNldFJvb3QgPSAodXBkYXRlZFJvb3QpID0+IHtcclxuICAgICAgICByYXdDaGlsZHJlbltpbmRleF0gPSB1cGRhdGVkUm9vdDtcclxuICAgICAgICBpZiAoZHluYW1pY0NoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIGlmIChkeW5hbWljSW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgZHluYW1pY0NoaWxkcmVuW2R5bmFtaWNJbmRleF0gPSB1cGRhdGVkUm9vdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh1cGRhdGVkUm9vdC5wYXRjaEZsYWcgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZS5keW5hbWljQ2hpbGRyZW4gPSBbLi4uZHluYW1pY0NoaWxkcmVuLCB1cGRhdGVkUm9vdF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIFtub3JtYWxpemVWTm9kZShjaGlsZFJvb3QpLCBzZXRSb290XTtcclxufTtcclxuZnVuY3Rpb24gZmlsdGVyU2luZ2xlUm9vdChjaGlsZHJlbikge1xyXG4gICAgbGV0IHNpbmdsZVJvb3Q7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlbltpXTtcclxuICAgICAgICBpZiAoaXNWTm9kZShjaGlsZCkpIHtcclxuICAgICAgICAgICAgLy8gaWdub3JlIHVzZXIgY29tbWVudFxyXG4gICAgICAgICAgICBpZiAoY2hpbGQudHlwZSAhPT0gQ29tbWVudCB8fCBjaGlsZC5jaGlsZHJlbiA9PT0gJ3YtaWYnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2luZ2xlUm9vdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGhhcyBtb3JlIHRoYW4gMSBub24tY29tbWVudCBjaGlsZCwgcmV0dXJuIG5vd1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVJvb3QgPSBjaGlsZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzaW5nbGVSb290O1xyXG59XHJcbmNvbnN0IGdldEZ1bmN0aW9uYWxGYWxsdGhyb3VnaCA9IChhdHRycykgPT4ge1xyXG4gICAgbGV0IHJlcztcclxuICAgIGZvciAoY29uc3Qga2V5IGluIGF0dHJzKSB7XHJcbiAgICAgICAgaWYgKGtleSA9PT0gJ2NsYXNzJyB8fCBrZXkgPT09ICdzdHlsZScgfHwgaXNPbihrZXkpKSB7XHJcbiAgICAgICAgICAgIChyZXMgfHwgKHJlcyA9IHt9KSlba2V5XSA9IGF0dHJzW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxufTtcclxuY29uc3QgZmlsdGVyTW9kZWxMaXN0ZW5lcnMgPSAoYXR0cnMsIHByb3BzKSA9PiB7XHJcbiAgICBjb25zdCByZXMgPSB7fTtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIGF0dHJzKSB7XHJcbiAgICAgICAgaWYgKCFpc01vZGVsTGlzdGVuZXIoa2V5KSB8fCAhKGtleS5zbGljZSg5KSBpbiBwcm9wcykpIHtcclxuICAgICAgICAgICAgcmVzW2tleV0gPSBhdHRyc1trZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbn07XHJcbmNvbnN0IGlzRWxlbWVudFJvb3QgPSAodm5vZGUpID0+IHtcclxuICAgIHJldHVybiAodm5vZGUuc2hhcGVGbGFnICYgKDYgLyogU2hhcGVGbGFncy5DT01QT05FTlQgKi8gfCAxIC8qIFNoYXBlRmxhZ3MuRUxFTUVOVCAqLykgfHxcclxuICAgICAgICB2bm9kZS50eXBlID09PSBDb21tZW50IC8vIHBvdGVudGlhbCB2LWlmIGJyYW5jaCBzd2l0Y2hcclxuICAgICk7XHJcbn07XHJcbmZ1bmN0aW9uIHNob3VsZFVwZGF0ZUNvbXBvbmVudChwcmV2Vk5vZGUsIG5leHRWTm9kZSwgb3B0aW1pemVkKSB7XHJcbiAgICBjb25zdCB7IHByb3BzOiBwcmV2UHJvcHMsIGNoaWxkcmVuOiBwcmV2Q2hpbGRyZW4sIGNvbXBvbmVudCB9ID0gcHJldlZOb2RlO1xyXG4gICAgY29uc3QgeyBwcm9wczogbmV4dFByb3BzLCBjaGlsZHJlbjogbmV4dENoaWxkcmVuLCBwYXRjaEZsYWcgfSA9IG5leHRWTm9kZTtcclxuICAgIGNvbnN0IGVtaXRzID0gY29tcG9uZW50LmVtaXRzT3B0aW9ucztcclxuICAgIC8vIFBhcmVudCBjb21wb25lbnQncyByZW5kZXIgZnVuY3Rpb24gd2FzIGhvdC11cGRhdGVkLiBTaW5jZSB0aGlzIG1heSBoYXZlXHJcbiAgICAvLyBjYXVzZWQgdGhlIGNoaWxkIGNvbXBvbmVudCdzIHNsb3RzIGNvbnRlbnQgdG8gaGF2ZSBjaGFuZ2VkLCB3ZSBuZWVkIHRvXHJcbiAgICAvLyBmb3JjZSB0aGUgY2hpbGQgdG8gdXBkYXRlIGFzIHdlbGwuXHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIChwcmV2Q2hpbGRyZW4gfHwgbmV4dENoaWxkcmVuKSAmJiBpc0htclVwZGF0aW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICAvLyBmb3JjZSBjaGlsZCB1cGRhdGUgZm9yIHJ1bnRpbWUgZGlyZWN0aXZlIG9yIHRyYW5zaXRpb24gb24gY29tcG9uZW50IHZub2RlLlxyXG4gICAgaWYgKG5leHRWTm9kZS5kaXJzIHx8IG5leHRWTm9kZS50cmFuc2l0aW9uKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAob3B0aW1pemVkICYmIHBhdGNoRmxhZyA+PSAwKSB7XHJcbiAgICAgICAgaWYgKHBhdGNoRmxhZyAmIDEwMjQgLyogUGF0Y2hGbGFncy5EWU5BTUlDX1NMT1RTICovKSB7XHJcbiAgICAgICAgICAgIC8vIHNsb3QgY29udGVudCB0aGF0IHJlZmVyZW5jZXMgdmFsdWVzIHRoYXQgbWlnaHQgaGF2ZSBjaGFuZ2VkLFxyXG4gICAgICAgICAgICAvLyBlLmcuIGluIGEgdi1mb3JcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXRjaEZsYWcgJiAxNiAvKiBQYXRjaEZsYWdzLkZVTExfUFJPUFMgKi8pIHtcclxuICAgICAgICAgICAgaWYgKCFwcmV2UHJvcHMpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAhIW5leHRQcm9wcztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBwcmVzZW5jZSBvZiB0aGlzIGZsYWcgaW5kaWNhdGVzIHByb3BzIGFyZSBhbHdheXMgbm9uLW51bGxcclxuICAgICAgICAgICAgcmV0dXJuIGhhc1Byb3BzQ2hhbmdlZChwcmV2UHJvcHMsIG5leHRQcm9wcywgZW1pdHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChwYXRjaEZsYWcgJiA4IC8qIFBhdGNoRmxhZ3MuUFJPUFMgKi8pIHtcclxuICAgICAgICAgICAgY29uc3QgZHluYW1pY1Byb3BzID0gbmV4dFZOb2RlLmR5bmFtaWNQcm9wcztcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkeW5hbWljUHJvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGR5bmFtaWNQcm9wc1tpXTtcclxuICAgICAgICAgICAgICAgIGlmIChuZXh0UHJvcHNba2V5XSAhPT0gcHJldlByb3BzW2tleV0gJiZcclxuICAgICAgICAgICAgICAgICAgICAhaXNFbWl0TGlzdGVuZXIoZW1pdHMsIGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIHRoaXMgcGF0aCBpcyBvbmx5IHRha2VuIGJ5IG1hbnVhbGx5IHdyaXR0ZW4gcmVuZGVyIGZ1bmN0aW9uc1xyXG4gICAgICAgIC8vIHNvIHByZXNlbmNlIG9mIGFueSBjaGlsZHJlbiBsZWFkcyB0byBhIGZvcmNlZCB1cGRhdGVcclxuICAgICAgICBpZiAocHJldkNoaWxkcmVuIHx8IG5leHRDaGlsZHJlbikge1xyXG4gICAgICAgICAgICBpZiAoIW5leHRDaGlsZHJlbiB8fCAhbmV4dENoaWxkcmVuLiRzdGFibGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwcmV2UHJvcHMgPT09IG5leHRQcm9wcykge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghcHJldlByb3BzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAhIW5leHRQcm9wcztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFuZXh0UHJvcHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBoYXNQcm9wc0NoYW5nZWQocHJldlByb3BzLCBuZXh0UHJvcHMsIGVtaXRzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5mdW5jdGlvbiBoYXNQcm9wc0NoYW5nZWQocHJldlByb3BzLCBuZXh0UHJvcHMsIGVtaXRzT3B0aW9ucykge1xyXG4gICAgY29uc3QgbmV4dEtleXMgPSBPYmplY3Qua2V5cyhuZXh0UHJvcHMpO1xyXG4gICAgaWYgKG5leHRLZXlzLmxlbmd0aCAhPT0gT2JqZWN0LmtleXMocHJldlByb3BzKS5sZW5ndGgpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmV4dEtleXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBrZXkgPSBuZXh0S2V5c1tpXTtcclxuICAgICAgICBpZiAobmV4dFByb3BzW2tleV0gIT09IHByZXZQcm9wc1trZXldICYmXHJcbiAgICAgICAgICAgICFpc0VtaXRMaXN0ZW5lcihlbWl0c09wdGlvbnMsIGtleSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbmZ1bmN0aW9uIHVwZGF0ZUhPQ0hvc3RFbCh7IHZub2RlLCBwYXJlbnQgfSwgZWwgLy8gSG9zdE5vZGVcclxuKSB7XHJcbiAgICB3aGlsZSAocGFyZW50ICYmIHBhcmVudC5zdWJUcmVlID09PSB2bm9kZSkge1xyXG4gICAgICAgICh2bm9kZSA9IHBhcmVudC52bm9kZSkuZWwgPSBlbDtcclxuICAgICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50O1xyXG4gICAgfVxyXG59XG5cbmNvbnN0IGlzU3VzcGVuc2UgPSAodHlwZSkgPT4gdHlwZS5fX2lzU3VzcGVuc2U7XHJcbi8vIFN1c3BlbnNlIGV4cG9zZXMgYSBjb21wb25lbnQtbGlrZSBBUEksIGFuZCBpcyB0cmVhdGVkIGxpa2UgYSBjb21wb25lbnRcclxuLy8gaW4gdGhlIGNvbXBpbGVyLCBidXQgaW50ZXJuYWxseSBpdCdzIGEgc3BlY2lhbCBidWlsdC1pbiB0eXBlIHRoYXQgaG9va3NcclxuLy8gZGlyZWN0bHkgaW50byB0aGUgcmVuZGVyZXIuXHJcbmNvbnN0IFN1c3BlbnNlSW1wbCA9IHtcclxuICAgIG5hbWU6ICdTdXNwZW5zZScsXHJcbiAgICAvLyBJbiBvcmRlciB0byBtYWtlIFN1c3BlbnNlIHRyZWUtc2hha2FibGUsIHdlIG5lZWQgdG8gYXZvaWQgaW1wb3J0aW5nIGl0XHJcbiAgICAvLyBkaXJlY3RseSBpbiB0aGUgcmVuZGVyZXIuIFRoZSByZW5kZXJlciBjaGVja3MgZm9yIHRoZSBfX2lzU3VzcGVuc2UgZmxhZ1xyXG4gICAgLy8gb24gYSB2bm9kZSdzIHR5cGUgYW5kIGNhbGxzIHRoZSBgcHJvY2Vzc2AgbWV0aG9kLCBwYXNzaW5nIGluIHJlbmRlcmVyXHJcbiAgICAvLyBpbnRlcm5hbHMuXHJcbiAgICBfX2lzU3VzcGVuc2U6IHRydWUsXHJcbiAgICBwcm9jZXNzKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgXHJcbiAgICAvLyBwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsIHBhc3NlZCBmcm9tIHJlbmRlcmVyXHJcbiAgICByZW5kZXJlckludGVybmFscykge1xyXG4gICAgICAgIGlmIChuMSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIG1vdW50U3VzcGVuc2UobjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIHJlbmRlcmVySW50ZXJuYWxzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHBhdGNoU3VzcGVuc2UobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIHJlbmRlcmVySW50ZXJuYWxzKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgaHlkcmF0ZTogaHlkcmF0ZVN1c3BlbnNlLFxyXG4gICAgY3JlYXRlOiBjcmVhdGVTdXNwZW5zZUJvdW5kYXJ5LFxyXG4gICAgbm9ybWFsaXplOiBub3JtYWxpemVTdXNwZW5zZUNoaWxkcmVuXHJcbn07XHJcbi8vIEZvcmNlLWNhc3RlZCBwdWJsaWMgdHlwaW5nIGZvciBoIGFuZCBUU1ggcHJvcHMgaW5mZXJlbmNlXHJcbmNvbnN0IFN1c3BlbnNlID0gKFN1c3BlbnNlSW1wbCApO1xyXG5mdW5jdGlvbiB0cmlnZ2VyRXZlbnQodm5vZGUsIG5hbWUpIHtcclxuICAgIGNvbnN0IGV2ZW50TGlzdGVuZXIgPSB2bm9kZS5wcm9wcyAmJiB2bm9kZS5wcm9wc1tuYW1lXTtcclxuICAgIGlmIChpc0Z1bmN0aW9uKGV2ZW50TGlzdGVuZXIpKSB7XHJcbiAgICAgICAgZXZlbnRMaXN0ZW5lcigpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIG1vdW50U3VzcGVuc2Uodm5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIHJlbmRlcmVySW50ZXJuYWxzKSB7XHJcbiAgICBjb25zdCB7IHA6IHBhdGNoLCBvOiB7IGNyZWF0ZUVsZW1lbnQgfSB9ID0gcmVuZGVyZXJJbnRlcm5hbHM7XHJcbiAgICBjb25zdCBoaWRkZW5Db250YWluZXIgPSBjcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIGNvbnN0IHN1c3BlbnNlID0gKHZub2RlLnN1c3BlbnNlID0gY3JlYXRlU3VzcGVuc2VCb3VuZGFyeSh2bm9kZSwgcGFyZW50U3VzcGVuc2UsIHBhcmVudENvbXBvbmVudCwgY29udGFpbmVyLCBoaWRkZW5Db250YWluZXIsIGFuY2hvciwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCByZW5kZXJlckludGVybmFscykpO1xyXG4gICAgLy8gc3RhcnQgbW91bnRpbmcgdGhlIGNvbnRlbnQgc3VidHJlZSBpbiBhbiBvZmYtZG9tIGNvbnRhaW5lclxyXG4gICAgcGF0Y2gobnVsbCwgKHN1c3BlbnNlLnBlbmRpbmdCcmFuY2ggPSB2bm9kZS5zc0NvbnRlbnQpLCBoaWRkZW5Db250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgc3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMpO1xyXG4gICAgLy8gbm93IGNoZWNrIGlmIHdlIGhhdmUgZW5jb3VudGVyZWQgYW55IGFzeW5jIGRlcHNcclxuICAgIGlmIChzdXNwZW5zZS5kZXBzID4gMCkge1xyXG4gICAgICAgIC8vIGhhcyBhc3luY1xyXG4gICAgICAgIC8vIGludm9rZSBAZmFsbGJhY2sgZXZlbnRcclxuICAgICAgICB0cmlnZ2VyRXZlbnQodm5vZGUsICdvblBlbmRpbmcnKTtcclxuICAgICAgICB0cmlnZ2VyRXZlbnQodm5vZGUsICdvbkZhbGxiYWNrJyk7XHJcbiAgICAgICAgLy8gbW91bnQgdGhlIGZhbGxiYWNrIHRyZWVcclxuICAgICAgICBwYXRjaChudWxsLCB2bm9kZS5zc0ZhbGxiYWNrLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBudWxsLCAvLyBmYWxsYmFjayB0cmVlIHdpbGwgbm90IGhhdmUgc3VzcGVuc2UgY29udGV4dFxyXG4gICAgICAgIGlzU1ZHLCBzbG90U2NvcGVJZHMpO1xyXG4gICAgICAgIHNldEFjdGl2ZUJyYW5jaChzdXNwZW5zZSwgdm5vZGUuc3NGYWxsYmFjayk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBTdXNwZW5zZSBoYXMgbm8gYXN5bmMgZGVwcy4gSnVzdCByZXNvbHZlLlxyXG4gICAgICAgIHN1c3BlbnNlLnJlc29sdmUoKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBwYXRjaFN1c3BlbnNlKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCB7IHA6IHBhdGNoLCB1bTogdW5tb3VudCwgbzogeyBjcmVhdGVFbGVtZW50IH0gfSkge1xyXG4gICAgY29uc3Qgc3VzcGVuc2UgPSAobjIuc3VzcGVuc2UgPSBuMS5zdXNwZW5zZSk7XHJcbiAgICBzdXNwZW5zZS52bm9kZSA9IG4yO1xyXG4gICAgbjIuZWwgPSBuMS5lbDtcclxuICAgIGNvbnN0IG5ld0JyYW5jaCA9IG4yLnNzQ29udGVudDtcclxuICAgIGNvbnN0IG5ld0ZhbGxiYWNrID0gbjIuc3NGYWxsYmFjaztcclxuICAgIGNvbnN0IHsgYWN0aXZlQnJhbmNoLCBwZW5kaW5nQnJhbmNoLCBpc0luRmFsbGJhY2ssIGlzSHlkcmF0aW5nIH0gPSBzdXNwZW5zZTtcclxuICAgIGlmIChwZW5kaW5nQnJhbmNoKSB7XHJcbiAgICAgICAgc3VzcGVuc2UucGVuZGluZ0JyYW5jaCA9IG5ld0JyYW5jaDtcclxuICAgICAgICBpZiAoaXNTYW1lVk5vZGVUeXBlKG5ld0JyYW5jaCwgcGVuZGluZ0JyYW5jaCkpIHtcclxuICAgICAgICAgICAgLy8gc2FtZSByb290IHR5cGUgYnV0IGNvbnRlbnQgbWF5IGhhdmUgY2hhbmdlZC5cclxuICAgICAgICAgICAgcGF0Y2gocGVuZGluZ0JyYW5jaCwgbmV3QnJhbmNoLCBzdXNwZW5zZS5oaWRkZW5Db250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgc3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIGlmIChzdXNwZW5zZS5kZXBzIDw9IDApIHtcclxuICAgICAgICAgICAgICAgIHN1c3BlbnNlLnJlc29sdmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChpc0luRmFsbGJhY2spIHtcclxuICAgICAgICAgICAgICAgIHBhdGNoKGFjdGl2ZUJyYW5jaCwgbmV3RmFsbGJhY2ssIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIG51bGwsIC8vIGZhbGxiYWNrIHRyZWUgd2lsbCBub3QgaGF2ZSBzdXNwZW5zZSBjb250ZXh0XHJcbiAgICAgICAgICAgICAgICBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgc2V0QWN0aXZlQnJhbmNoKHN1c3BlbnNlLCBuZXdGYWxsYmFjayk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHRvZ2dsZWQgYmVmb3JlIHBlbmRpbmcgdHJlZSBpcyByZXNvbHZlZFxyXG4gICAgICAgICAgICBzdXNwZW5zZS5wZW5kaW5nSWQrKztcclxuICAgICAgICAgICAgaWYgKGlzSHlkcmF0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZiB0b2dnbGVkIGJlZm9yZSBoeWRyYXRpb24gaXMgZmluaXNoZWQsIHRoZSBjdXJyZW50IERPTSB0cmVlIGlzXHJcbiAgICAgICAgICAgICAgICAvLyBubyBsb25nZXIgdmFsaWQuIHNldCBpdCBhcyB0aGUgYWN0aXZlIGJyYW5jaCBzbyBpdCB3aWxsIGJlIHVubW91bnRlZFxyXG4gICAgICAgICAgICAgICAgLy8gd2hlbiByZXNvbHZlZFxyXG4gICAgICAgICAgICAgICAgc3VzcGVuc2UuaXNIeWRyYXRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHN1c3BlbnNlLmFjdGl2ZUJyYW5jaCA9IHBlbmRpbmdCcmFuY2g7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB1bm1vdW50KHBlbmRpbmdCcmFuY2gsIHBhcmVudENvbXBvbmVudCwgc3VzcGVuc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGluY3JlbWVudCBwZW5kaW5nIElELiB0aGlzIGlzIHVzZWQgdG8gaW52YWxpZGF0ZSBhc3luYyBjYWxsYmFja3NcclxuICAgICAgICAgICAgLy8gcmVzZXQgc3VzcGVuc2Ugc3RhdGVcclxuICAgICAgICAgICAgc3VzcGVuc2UuZGVwcyA9IDA7XHJcbiAgICAgICAgICAgIC8vIGRpc2NhcmQgZWZmZWN0cyBmcm9tIHBlbmRpbmcgYnJhbmNoXHJcbiAgICAgICAgICAgIHN1c3BlbnNlLmVmZmVjdHMubGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgLy8gZGlzY2FyZCBwcmV2aW91cyBjb250YWluZXJcclxuICAgICAgICAgICAgc3VzcGVuc2UuaGlkZGVuQ29udGFpbmVyID0gY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgICAgIGlmIChpc0luRmFsbGJhY2spIHtcclxuICAgICAgICAgICAgICAgIC8vIGFscmVhZHkgaW4gZmFsbGJhY2sgc3RhdGVcclxuICAgICAgICAgICAgICAgIHBhdGNoKG51bGwsIG5ld0JyYW5jaCwgc3VzcGVuc2UuaGlkZGVuQ29udGFpbmVyLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHN1c3BlbnNlLmRlcHMgPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN1c3BlbnNlLnJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhdGNoKGFjdGl2ZUJyYW5jaCwgbmV3RmFsbGJhY2ssIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIG51bGwsIC8vIGZhbGxiYWNrIHRyZWUgd2lsbCBub3QgaGF2ZSBzdXNwZW5zZSBjb250ZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRBY3RpdmVCcmFuY2goc3VzcGVuc2UsIG5ld0ZhbGxiYWNrKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChhY3RpdmVCcmFuY2ggJiYgaXNTYW1lVk5vZGVUeXBlKG5ld0JyYW5jaCwgYWN0aXZlQnJhbmNoKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gdG9nZ2xlZCBcImJhY2tcIiB0byBjdXJyZW50IGFjdGl2ZSBicmFuY2hcclxuICAgICAgICAgICAgICAgIHBhdGNoKGFjdGl2ZUJyYW5jaCwgbmV3QnJhbmNoLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBzdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIC8vIGZvcmNlIHJlc29sdmVcclxuICAgICAgICAgICAgICAgIHN1c3BlbnNlLnJlc29sdmUodHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBzd2l0Y2hlZCB0byBhIDNyZCBicmFuY2hcclxuICAgICAgICAgICAgICAgIHBhdGNoKG51bGwsIG5ld0JyYW5jaCwgc3VzcGVuc2UuaGlkZGVuQ29udGFpbmVyLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHN1c3BlbnNlLmRlcHMgPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN1c3BlbnNlLnJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChhY3RpdmVCcmFuY2ggJiYgaXNTYW1lVk5vZGVUeXBlKG5ld0JyYW5jaCwgYWN0aXZlQnJhbmNoKSkge1xyXG4gICAgICAgICAgICAvLyByb290IGRpZCBub3QgY2hhbmdlLCBqdXN0IG5vcm1hbCBwYXRjaFxyXG4gICAgICAgICAgICBwYXRjaChhY3RpdmVCcmFuY2gsIG5ld0JyYW5jaCwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgc3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIHNldEFjdGl2ZUJyYW5jaChzdXNwZW5zZSwgbmV3QnJhbmNoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHJvb3Qgbm9kZSB0b2dnbGVkXHJcbiAgICAgICAgICAgIC8vIGludm9rZSBAcGVuZGluZyBldmVudFxyXG4gICAgICAgICAgICB0cmlnZ2VyRXZlbnQobjIsICdvblBlbmRpbmcnKTtcclxuICAgICAgICAgICAgLy8gbW91bnQgcGVuZGluZyBicmFuY2ggaW4gb2ZmLWRvbSBjb250YWluZXJcclxuICAgICAgICAgICAgc3VzcGVuc2UucGVuZGluZ0JyYW5jaCA9IG5ld0JyYW5jaDtcclxuICAgICAgICAgICAgc3VzcGVuc2UucGVuZGluZ0lkKys7XHJcbiAgICAgICAgICAgIHBhdGNoKG51bGwsIG5ld0JyYW5jaCwgc3VzcGVuc2UuaGlkZGVuQ29udGFpbmVyLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICBpZiAoc3VzcGVuc2UuZGVwcyA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpbmNvbWluZyBicmFuY2ggaGFzIG5vIGFzeW5jIGRlcHMsIHJlc29sdmUgbm93LlxyXG4gICAgICAgICAgICAgICAgc3VzcGVuc2UucmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyB0aW1lb3V0LCBwZW5kaW5nSWQgfSA9IHN1c3BlbnNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRpbWVvdXQgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXNwZW5zZS5wZW5kaW5nSWQgPT09IHBlbmRpbmdJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VzcGVuc2UuZmFsbGJhY2sobmV3RmFsbGJhY2spO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgdGltZW91dCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aW1lb3V0ID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3VzcGVuc2UuZmFsbGJhY2sobmV3RmFsbGJhY2spO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmxldCBoYXNXYXJuZWQgPSBmYWxzZTtcclxuZnVuY3Rpb24gY3JlYXRlU3VzcGVuc2VCb3VuZGFyeSh2bm9kZSwgcGFyZW50LCBwYXJlbnRDb21wb25lbnQsIGNvbnRhaW5lciwgaGlkZGVuQ29udGFpbmVyLCBhbmNob3IsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgcmVuZGVyZXJJbnRlcm5hbHMsIGlzSHlkcmF0aW5nID0gZmFsc2UpIHtcclxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhZmFsc2UgJiYgIWhhc1dhcm5lZCkge1xyXG4gICAgICAgIGhhc1dhcm5lZCA9IHRydWU7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZSBgY29uc29sZS5pbmZvYCBjYW5ub3QgYmUgbnVsbCBlcnJvclxyXG4gICAgICAgIGNvbnNvbGVbY29uc29sZS5pbmZvID8gJ2luZm8nIDogJ2xvZyddKGA8U3VzcGVuc2U+IGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGFuZCBpdHMgQVBJIHdpbGwgbGlrZWx5IGNoYW5nZS5gKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgcDogcGF0Y2gsIG06IG1vdmUsIHVtOiB1bm1vdW50LCBuOiBuZXh0LCBvOiB7IHBhcmVudE5vZGUsIHJlbW92ZSB9IH0gPSByZW5kZXJlckludGVybmFscztcclxuICAgIGNvbnN0IHRpbWVvdXQgPSB0b051bWJlcih2bm9kZS5wcm9wcyAmJiB2bm9kZS5wcm9wcy50aW1lb3V0KTtcclxuICAgIGNvbnN0IHN1c3BlbnNlID0ge1xyXG4gICAgICAgIHZub2RlLFxyXG4gICAgICAgIHBhcmVudCxcclxuICAgICAgICBwYXJlbnRDb21wb25lbnQsXHJcbiAgICAgICAgaXNTVkcsXHJcbiAgICAgICAgY29udGFpbmVyLFxyXG4gICAgICAgIGhpZGRlbkNvbnRhaW5lcixcclxuICAgICAgICBhbmNob3IsXHJcbiAgICAgICAgZGVwczogMCxcclxuICAgICAgICBwZW5kaW5nSWQ6IDAsXHJcbiAgICAgICAgdGltZW91dDogdHlwZW9mIHRpbWVvdXQgPT09ICdudW1iZXInID8gdGltZW91dCA6IC0xLFxyXG4gICAgICAgIGFjdGl2ZUJyYW5jaDogbnVsbCxcclxuICAgICAgICBwZW5kaW5nQnJhbmNoOiBudWxsLFxyXG4gICAgICAgIGlzSW5GYWxsYmFjazogdHJ1ZSxcclxuICAgICAgICBpc0h5ZHJhdGluZyxcclxuICAgICAgICBpc1VubW91bnRlZDogZmFsc2UsXHJcbiAgICAgICAgZWZmZWN0czogW10sXHJcbiAgICAgICAgcmVzb2x2ZShyZXN1bWUgPSBmYWxzZSkge1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VtZSAmJiAhc3VzcGVuc2UucGVuZGluZ0JyYW5jaCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgc3VzcGVuc2UucmVzb2x2ZSgpIGlzIGNhbGxlZCB3aXRob3V0IGEgcGVuZGluZyBicmFuY2guYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoc3VzcGVuc2UuaXNVbm1vdW50ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHN1c3BlbnNlLnJlc29sdmUoKSBpcyBjYWxsZWQgb24gYW4gYWxyZWFkeSB1bm1vdW50ZWQgc3VzcGVuc2UgYm91bmRhcnkuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgeyB2bm9kZSwgYWN0aXZlQnJhbmNoLCBwZW5kaW5nQnJhbmNoLCBwZW5kaW5nSWQsIGVmZmVjdHMsIHBhcmVudENvbXBvbmVudCwgY29udGFpbmVyIH0gPSBzdXNwZW5zZTtcclxuICAgICAgICAgICAgaWYgKHN1c3BlbnNlLmlzSHlkcmF0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICBzdXNwZW5zZS5pc0h5ZHJhdGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKCFyZXN1bWUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRlbGF5RW50ZXIgPSBhY3RpdmVCcmFuY2ggJiZcclxuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nQnJhbmNoLnRyYW5zaXRpb24gJiZcclxuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nQnJhbmNoLnRyYW5zaXRpb24ubW9kZSA9PT0gJ291dC1pbic7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGVsYXlFbnRlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUJyYW5jaC50cmFuc2l0aW9uLmFmdGVyTGVhdmUgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZW5kaW5nSWQgPT09IHN1c3BlbnNlLnBlbmRpbmdJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZShwZW5kaW5nQnJhbmNoLCBjb250YWluZXIsIGFuY2hvciwgMCAvKiBNb3ZlVHlwZS5FTlRFUiAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBpbml0aWFsIGFuY2hvciBvbiBtb3VudFxyXG4gICAgICAgICAgICAgICAgbGV0IHsgYW5jaG9yIH0gPSBzdXNwZW5zZTtcclxuICAgICAgICAgICAgICAgIC8vIHVubW91bnQgY3VycmVudCBhY3RpdmUgdHJlZVxyXG4gICAgICAgICAgICAgICAgaWYgKGFjdGl2ZUJyYW5jaCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBmYWxsYmFjayB0cmVlIHdhcyBtb3VudGVkLCBpdCBtYXkgaGF2ZSBiZWVuIG1vdmVkXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYXMgcGFydCBvZiBhIHBhcmVudCBzdXNwZW5zZS4gZ2V0IHRoZSBsYXRlc3QgYW5jaG9yIGZvciBpbnNlcnRpb25cclxuICAgICAgICAgICAgICAgICAgICBhbmNob3IgPSBuZXh0KGFjdGl2ZUJyYW5jaCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdW5tb3VudChhY3RpdmVCcmFuY2gsIHBhcmVudENvbXBvbmVudCwgc3VzcGVuc2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFkZWxheUVudGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gbW92ZSBjb250ZW50IGZyb20gb2ZmLWRvbSBjb250YWluZXIgdG8gYWN0dWFsIGNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgIG1vdmUocGVuZGluZ0JyYW5jaCwgY29udGFpbmVyLCBhbmNob3IsIDAgLyogTW92ZVR5cGUuRU5URVIgKi8pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNldEFjdGl2ZUJyYW5jaChzdXNwZW5zZSwgcGVuZGluZ0JyYW5jaCk7XHJcbiAgICAgICAgICAgIHN1c3BlbnNlLnBlbmRpbmdCcmFuY2ggPSBudWxsO1xyXG4gICAgICAgICAgICBzdXNwZW5zZS5pc0luRmFsbGJhY2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgLy8gZmx1c2ggYnVmZmVyZWQgZWZmZWN0c1xyXG4gICAgICAgICAgICAvLyBjaGVjayBpZiB0aGVyZSBpcyBhIHBlbmRpbmcgcGFyZW50IHN1c3BlbnNlXHJcbiAgICAgICAgICAgIGxldCBwYXJlbnQgPSBzdXNwZW5zZS5wYXJlbnQ7XHJcbiAgICAgICAgICAgIGxldCBoYXNVbnJlc29sdmVkQW5jZXN0b3IgPSBmYWxzZTtcclxuICAgICAgICAgICAgd2hpbGUgKHBhcmVudCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudC5wZW5kaW5nQnJhbmNoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZm91bmQgYSBwZW5kaW5nIHBhcmVudCBzdXNwZW5zZSwgbWVyZ2UgYnVmZmVyZWQgcG9zdCBqb2JzXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaW50byB0aGF0IHBhcmVudFxyXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudC5lZmZlY3RzLnB1c2goLi4uZWZmZWN0cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzVW5yZXNvbHZlZEFuY2VzdG9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gbm8gcGVuZGluZyBwYXJlbnQgc3VzcGVuc2UsIGZsdXNoIGFsbCBqb2JzXHJcbiAgICAgICAgICAgIGlmICghaGFzVW5yZXNvbHZlZEFuY2VzdG9yKSB7XHJcbiAgICAgICAgICAgICAgICBxdWV1ZVBvc3RGbHVzaENiKGVmZmVjdHMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHN1c3BlbnNlLmVmZmVjdHMgPSBbXTtcclxuICAgICAgICAgICAgLy8gaW52b2tlIEByZXNvbHZlIGV2ZW50XHJcbiAgICAgICAgICAgIHRyaWdnZXJFdmVudCh2bm9kZSwgJ29uUmVzb2x2ZScpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZmFsbGJhY2soZmFsbGJhY2tWTm9kZSkge1xyXG4gICAgICAgICAgICBpZiAoIXN1c3BlbnNlLnBlbmRpbmdCcmFuY2gpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCB7IHZub2RlLCBhY3RpdmVCcmFuY2gsIHBhcmVudENvbXBvbmVudCwgY29udGFpbmVyLCBpc1NWRyB9ID0gc3VzcGVuc2U7XHJcbiAgICAgICAgICAgIC8vIGludm9rZSBAZmFsbGJhY2sgZXZlbnRcclxuICAgICAgICAgICAgdHJpZ2dlckV2ZW50KHZub2RlLCAnb25GYWxsYmFjaycpO1xyXG4gICAgICAgICAgICBjb25zdCBhbmNob3IgPSBuZXh0KGFjdGl2ZUJyYW5jaCk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vdW50RmFsbGJhY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXN1c3BlbnNlLmlzSW5GYWxsYmFjaykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIG1vdW50IHRoZSBmYWxsYmFjayB0cmVlXHJcbiAgICAgICAgICAgICAgICBwYXRjaChudWxsLCBmYWxsYmFja1ZOb2RlLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBudWxsLCAvLyBmYWxsYmFjayB0cmVlIHdpbGwgbm90IGhhdmUgc3VzcGVuc2UgY29udGV4dFxyXG4gICAgICAgICAgICAgICAgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIHNldEFjdGl2ZUJyYW5jaChzdXNwZW5zZSwgZmFsbGJhY2tWTm9kZSk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGNvbnN0IGRlbGF5RW50ZXIgPSBmYWxsYmFja1ZOb2RlLnRyYW5zaXRpb24gJiYgZmFsbGJhY2tWTm9kZS50cmFuc2l0aW9uLm1vZGUgPT09ICdvdXQtaW4nO1xyXG4gICAgICAgICAgICBpZiAoZGVsYXlFbnRlcikge1xyXG4gICAgICAgICAgICAgICAgYWN0aXZlQnJhbmNoLnRyYW5zaXRpb24uYWZ0ZXJMZWF2ZSA9IG1vdW50RmFsbGJhY2s7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc3VzcGVuc2UuaXNJbkZhbGxiYWNrID0gdHJ1ZTtcclxuICAgICAgICAgICAgLy8gdW5tb3VudCBjdXJyZW50IGFjdGl2ZSBicmFuY2hcclxuICAgICAgICAgICAgdW5tb3VudChhY3RpdmVCcmFuY2gsIHBhcmVudENvbXBvbmVudCwgbnVsbCwgLy8gbm8gc3VzcGVuc2Ugc28gdW5tb3VudCBob29rcyBmaXJlIG5vd1xyXG4gICAgICAgICAgICB0cnVlIC8vIHNob3VsZFJlbW92ZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoIWRlbGF5RW50ZXIpIHtcclxuICAgICAgICAgICAgICAgIG1vdW50RmFsbGJhY2soKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbW92ZShjb250YWluZXIsIGFuY2hvciwgdHlwZSkge1xyXG4gICAgICAgICAgICBzdXNwZW5zZS5hY3RpdmVCcmFuY2ggJiZcclxuICAgICAgICAgICAgICAgIG1vdmUoc3VzcGVuc2UuYWN0aXZlQnJhbmNoLCBjb250YWluZXIsIGFuY2hvciwgdHlwZSk7XHJcbiAgICAgICAgICAgIHN1c3BlbnNlLmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG5leHQoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzdXNwZW5zZS5hY3RpdmVCcmFuY2ggJiYgbmV4dChzdXNwZW5zZS5hY3RpdmVCcmFuY2gpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVnaXN0ZXJEZXAoaW5zdGFuY2UsIHNldHVwUmVuZGVyRWZmZWN0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzSW5QZW5kaW5nU3VzcGVuc2UgPSAhIXN1c3BlbnNlLnBlbmRpbmdCcmFuY2g7XHJcbiAgICAgICAgICAgIGlmIChpc0luUGVuZGluZ1N1c3BlbnNlKSB7XHJcbiAgICAgICAgICAgICAgICBzdXNwZW5zZS5kZXBzKys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgaHlkcmF0ZWRFbCA9IGluc3RhbmNlLnZub2RlLmVsO1xyXG4gICAgICAgICAgICBpbnN0YW5jZVxyXG4gICAgICAgICAgICAgICAgLmFzeW5jRGVwLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICBoYW5kbGVFcnJvcihlcnIsIGluc3RhbmNlLCAwIC8qIEVycm9yQ29kZXMuU0VUVVBfRlVOQ1RJT04gKi8pO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oYXN5bmNTZXR1cFJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyByZXRyeSB3aGVuIHRoZSBzZXR1cCgpIHByb21pc2UgcmVzb2x2ZXMuXHJcbiAgICAgICAgICAgICAgICAvLyBjb21wb25lbnQgbWF5IGhhdmUgYmVlbiB1bm1vdW50ZWQgYmVmb3JlIHJlc29sdmUuXHJcbiAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2UuaXNVbm1vdW50ZWQgfHxcclxuICAgICAgICAgICAgICAgICAgICBzdXNwZW5zZS5pc1VubW91bnRlZCB8fFxyXG4gICAgICAgICAgICAgICAgICAgIHN1c3BlbnNlLnBlbmRpbmdJZCAhPT0gaW5zdGFuY2Uuc3VzcGVuc2VJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIHJldHJ5IGZyb20gdGhpcyBjb21wb25lbnRcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmFzeW5jUmVzb2x2ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyB2bm9kZSB9ID0gaW5zdGFuY2U7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHVzaFdhcm5pbmdDb250ZXh0KHZub2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGhhbmRsZVNldHVwUmVzdWx0KGluc3RhbmNlLCBhc3luY1NldHVwUmVzdWx0LCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaHlkcmF0ZWRFbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHZub2RlIG1heSBoYXZlIGJlZW4gcmVwbGFjZWQgaWYgYW4gdXBkYXRlIGhhcHBlbmVkIGJlZm9yZSB0aGVcclxuICAgICAgICAgICAgICAgICAgICAvLyBhc3luYyBkZXAgaXMgcmVzb2x2ZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgdm5vZGUuZWwgPSBoeWRyYXRlZEVsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSAhaHlkcmF0ZWRFbCAmJiBpbnN0YW5jZS5zdWJUcmVlLmVsO1xyXG4gICAgICAgICAgICAgICAgc2V0dXBSZW5kZXJFZmZlY3QoaW5zdGFuY2UsIHZub2RlLCBcclxuICAgICAgICAgICAgICAgIC8vIGNvbXBvbmVudCBtYXkgaGF2ZSBiZWVuIG1vdmVkIGJlZm9yZSByZXNvbHZlLlxyXG4gICAgICAgICAgICAgICAgLy8gaWYgdGhpcyBpcyBub3QgYSBoeWRyYXRpb24sIGluc3RhbmNlLnN1YlRyZWUgd2lsbCBiZSB0aGUgY29tbWVudFxyXG4gICAgICAgICAgICAgICAgLy8gcGxhY2Vob2xkZXIuXHJcbiAgICAgICAgICAgICAgICBwYXJlbnROb2RlKGh5ZHJhdGVkRWwgfHwgaW5zdGFuY2Uuc3ViVHJlZS5lbCksIFxyXG4gICAgICAgICAgICAgICAgLy8gYW5jaG9yIHdpbGwgbm90IGJlIHVzZWQgaWYgdGhpcyBpcyBoeWRyYXRpb24sIHNvIG9ubHkgbmVlZCB0b1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc2lkZXIgdGhlIGNvbW1lbnQgcGxhY2Vob2xkZXIgY2FzZS5cclxuICAgICAgICAgICAgICAgIGh5ZHJhdGVkRWwgPyBudWxsIDogbmV4dChpbnN0YW5jZS5zdWJUcmVlKSwgc3VzcGVuc2UsIGlzU1ZHLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHBsYWNlaG9sZGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKHBsYWNlaG9sZGVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHVwZGF0ZUhPQ0hvc3RFbChpbnN0YW5jZSwgdm5vZGUuZWwpO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcFdhcm5pbmdDb250ZXh0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBvbmx5IGRlY3JlYXNlIGRlcHMgY291bnQgaWYgc3VzcGVuc2UgaXMgbm90IGFscmVhZHkgcmVzb2x2ZWRcclxuICAgICAgICAgICAgICAgIGlmIChpc0luUGVuZGluZ1N1c3BlbnNlICYmIC0tc3VzcGVuc2UuZGVwcyA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN1c3BlbnNlLnJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB1bm1vdW50KHBhcmVudFN1c3BlbnNlLCBkb1JlbW92ZSkge1xyXG4gICAgICAgICAgICBzdXNwZW5zZS5pc1VubW91bnRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmIChzdXNwZW5zZS5hY3RpdmVCcmFuY2gpIHtcclxuICAgICAgICAgICAgICAgIHVubW91bnQoc3VzcGVuc2UuYWN0aXZlQnJhbmNoLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBkb1JlbW92ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHN1c3BlbnNlLnBlbmRpbmdCcmFuY2gpIHtcclxuICAgICAgICAgICAgICAgIHVubW91bnQoc3VzcGVuc2UucGVuZGluZ0JyYW5jaCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgZG9SZW1vdmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHJldHVybiBzdXNwZW5zZTtcclxufVxyXG5mdW5jdGlvbiBoeWRyYXRlU3VzcGVuc2Uobm9kZSwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgcmVuZGVyZXJJbnRlcm5hbHMsIGh5ZHJhdGVOb2RlKSB7XHJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgKi9cclxuICAgIGNvbnN0IHN1c3BlbnNlID0gKHZub2RlLnN1c3BlbnNlID0gY3JlYXRlU3VzcGVuc2VCb3VuZGFyeSh2bm9kZSwgcGFyZW50U3VzcGVuc2UsIHBhcmVudENvbXBvbmVudCwgbm9kZS5wYXJlbnROb2RlLCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgbnVsbCwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCByZW5kZXJlckludGVybmFscywgdHJ1ZSAvKiBoeWRyYXRpbmcgKi8pKTtcclxuICAgIC8vIHRoZXJlIGFyZSB0d28gcG9zc2libGUgc2NlbmFyaW9zIGZvciBzZXJ2ZXItcmVuZGVyZWQgc3VzcGVuc2U6XHJcbiAgICAvLyAtIHN1Y2Nlc3M6IHNzciBjb250ZW50IHNob3VsZCBiZSBmdWxseSByZXNvbHZlZFxyXG4gICAgLy8gLSBmYWlsdXJlOiBzc3IgY29udGVudCBzaG91bGQgYmUgdGhlIGZhbGxiYWNrIGJyYW5jaC5cclxuICAgIC8vIGhvd2V2ZXIsIG9uIHRoZSBjbGllbnQgd2UgZG9uJ3QgcmVhbGx5IGtub3cgaWYgaXQgaGFzIGZhaWxlZCBvciBub3RcclxuICAgIC8vIGF0dGVtcHQgdG8gaHlkcmF0ZSB0aGUgRE9NIGFzc3VtaW5nIGl0IGhhcyBzdWNjZWVkZWQsIGJ1dCB3ZSBzdGlsbFxyXG4gICAgLy8gbmVlZCB0byBjb25zdHJ1Y3QgYSBzdXNwZW5zZSBib3VuZGFyeSBmaXJzdFxyXG4gICAgY29uc3QgcmVzdWx0ID0gaHlkcmF0ZU5vZGUobm9kZSwgKHN1c3BlbnNlLnBlbmRpbmdCcmFuY2ggPSB2bm9kZS5zc0NvbnRlbnQpLCBwYXJlbnRDb21wb25lbnQsIHN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICBpZiAoc3VzcGVuc2UuZGVwcyA9PT0gMCkge1xyXG4gICAgICAgIHN1c3BlbnNlLnJlc29sdmUoKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAqL1xyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZVN1c3BlbnNlQ2hpbGRyZW4odm5vZGUpIHtcclxuICAgIGNvbnN0IHsgc2hhcGVGbGFnLCBjaGlsZHJlbiB9ID0gdm5vZGU7XHJcbiAgICBjb25zdCBpc1Nsb3RDaGlsZHJlbiA9IHNoYXBlRmxhZyAmIDMyIC8qIFNoYXBlRmxhZ3MuU0xPVFNfQ0hJTERSRU4gKi87XHJcbiAgICB2bm9kZS5zc0NvbnRlbnQgPSBub3JtYWxpemVTdXNwZW5zZVNsb3QoaXNTbG90Q2hpbGRyZW4gPyBjaGlsZHJlbi5kZWZhdWx0IDogY2hpbGRyZW4pO1xyXG4gICAgdm5vZGUuc3NGYWxsYmFjayA9IGlzU2xvdENoaWxkcmVuXHJcbiAgICAgICAgPyBub3JtYWxpemVTdXNwZW5zZVNsb3QoY2hpbGRyZW4uZmFsbGJhY2spXHJcbiAgICAgICAgOiBjcmVhdGVWTm9kZShDb21tZW50KTtcclxufVxyXG5mdW5jdGlvbiBub3JtYWxpemVTdXNwZW5zZVNsb3Qocykge1xyXG4gICAgbGV0IGJsb2NrO1xyXG4gICAgaWYgKGlzRnVuY3Rpb24ocykpIHtcclxuICAgICAgICBjb25zdCB0cmFja0Jsb2NrID0gaXNCbG9ja1RyZWVFbmFibGVkICYmIHMuX2M7XHJcbiAgICAgICAgaWYgKHRyYWNrQmxvY2spIHtcclxuICAgICAgICAgICAgLy8gZGlzYWJsZVRyYWNraW5nOiBmYWxzZVxyXG4gICAgICAgICAgICAvLyBhbGxvdyBibG9jayB0cmFja2luZyBmb3IgY29tcGlsZWQgc2xvdHNcclxuICAgICAgICAgICAgLy8gKHNlZSAuL2NvbXBvbmVudFJlbmRlckNvbnRleHQudHMpXHJcbiAgICAgICAgICAgIHMuX2QgPSBmYWxzZTtcclxuICAgICAgICAgICAgb3BlbkJsb2NrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHMgPSBzKCk7XHJcbiAgICAgICAgaWYgKHRyYWNrQmxvY2spIHtcclxuICAgICAgICAgICAgcy5fZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGJsb2NrID0gY3VycmVudEJsb2NrO1xyXG4gICAgICAgICAgICBjbG9zZUJsb2NrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGlzQXJyYXkocykpIHtcclxuICAgICAgICBjb25zdCBzaW5nbGVDaGlsZCA9IGZpbHRlclNpbmdsZVJvb3Qocyk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhc2luZ2xlQ2hpbGQpIHtcclxuICAgICAgICAgICAgd2FybihgPFN1c3BlbnNlPiBzbG90cyBleHBlY3QgYSBzaW5nbGUgcm9vdCBub2RlLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzID0gc2luZ2xlQ2hpbGQ7XHJcbiAgICB9XHJcbiAgICBzID0gbm9ybWFsaXplVk5vZGUocyk7XHJcbiAgICBpZiAoYmxvY2sgJiYgIXMuZHluYW1pY0NoaWxkcmVuKSB7XHJcbiAgICAgICAgcy5keW5hbWljQ2hpbGRyZW4gPSBibG9jay5maWx0ZXIoYyA9PiBjICE9PSBzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBzO1xyXG59XHJcbmZ1bmN0aW9uIHF1ZXVlRWZmZWN0V2l0aFN1c3BlbnNlKGZuLCBzdXNwZW5zZSkge1xyXG4gICAgaWYgKHN1c3BlbnNlICYmIHN1c3BlbnNlLnBlbmRpbmdCcmFuY2gpIHtcclxuICAgICAgICBpZiAoaXNBcnJheShmbikpIHtcclxuICAgICAgICAgICAgc3VzcGVuc2UuZWZmZWN0cy5wdXNoKC4uLmZuKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHN1c3BlbnNlLmVmZmVjdHMucHVzaChmbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcXVldWVQb3N0Rmx1c2hDYihmbik7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gc2V0QWN0aXZlQnJhbmNoKHN1c3BlbnNlLCBicmFuY2gpIHtcclxuICAgIHN1c3BlbnNlLmFjdGl2ZUJyYW5jaCA9IGJyYW5jaDtcclxuICAgIGNvbnN0IHsgdm5vZGUsIHBhcmVudENvbXBvbmVudCB9ID0gc3VzcGVuc2U7XHJcbiAgICBjb25zdCBlbCA9ICh2bm9kZS5lbCA9IGJyYW5jaC5lbCk7XHJcbiAgICAvLyBpbiBjYXNlIHN1c3BlbnNlIGlzIHRoZSByb290IG5vZGUgb2YgYSBjb21wb25lbnQsXHJcbiAgICAvLyByZWN1cnNpdmVseSB1cGRhdGUgdGhlIEhPQyBlbFxyXG4gICAgaWYgKHBhcmVudENvbXBvbmVudCAmJiBwYXJlbnRDb21wb25lbnQuc3ViVHJlZSA9PT0gdm5vZGUpIHtcclxuICAgICAgICBwYXJlbnRDb21wb25lbnQudm5vZGUuZWwgPSBlbDtcclxuICAgICAgICB1cGRhdGVIT0NIb3N0RWwocGFyZW50Q29tcG9uZW50LCBlbCk7XHJcbiAgICB9XHJcbn1cblxuZnVuY3Rpb24gcHJvdmlkZShrZXksIHZhbHVlKSB7XHJcbiAgICBpZiAoIWN1cnJlbnRJbnN0YW5jZSkge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgd2FybihgcHJvdmlkZSgpIGNhbiBvbmx5IGJlIHVzZWQgaW5zaWRlIHNldHVwKCkuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgbGV0IHByb3ZpZGVzID0gY3VycmVudEluc3RhbmNlLnByb3ZpZGVzO1xyXG4gICAgICAgIC8vIGJ5IGRlZmF1bHQgYW4gaW5zdGFuY2UgaW5oZXJpdHMgaXRzIHBhcmVudCdzIHByb3ZpZGVzIG9iamVjdFxyXG4gICAgICAgIC8vIGJ1dCB3aGVuIGl0IG5lZWRzIHRvIHByb3ZpZGUgdmFsdWVzIG9mIGl0cyBvd24sIGl0IGNyZWF0ZXMgaXRzXHJcbiAgICAgICAgLy8gb3duIHByb3ZpZGVzIG9iamVjdCB1c2luZyBwYXJlbnQgcHJvdmlkZXMgb2JqZWN0IGFzIHByb3RvdHlwZS5cclxuICAgICAgICAvLyB0aGlzIHdheSBpbiBgaW5qZWN0YCB3ZSBjYW4gc2ltcGx5IGxvb2sgdXAgaW5qZWN0aW9ucyBmcm9tIGRpcmVjdFxyXG4gICAgICAgIC8vIHBhcmVudCBhbmQgbGV0IHRoZSBwcm90b3R5cGUgY2hhaW4gZG8gdGhlIHdvcmsuXHJcbiAgICAgICAgY29uc3QgcGFyZW50UHJvdmlkZXMgPSBjdXJyZW50SW5zdGFuY2UucGFyZW50ICYmIGN1cnJlbnRJbnN0YW5jZS5wYXJlbnQucHJvdmlkZXM7XHJcbiAgICAgICAgaWYgKHBhcmVudFByb3ZpZGVzID09PSBwcm92aWRlcykge1xyXG4gICAgICAgICAgICBwcm92aWRlcyA9IGN1cnJlbnRJbnN0YW5jZS5wcm92aWRlcyA9IE9iamVjdC5jcmVhdGUocGFyZW50UHJvdmlkZXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBUUyBkb2Vzbid0IGFsbG93IHN5bWJvbCBhcyBpbmRleCB0eXBlXHJcbiAgICAgICAgcHJvdmlkZXNba2V5XSA9IHZhbHVlO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGluamVjdChrZXksIGRlZmF1bHRWYWx1ZSwgdHJlYXREZWZhdWx0QXNGYWN0b3J5ID0gZmFsc2UpIHtcclxuICAgIC8vIGZhbGxiYWNrIHRvIGBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2VgIHNvIHRoYXQgdGhpcyBjYW4gYmUgY2FsbGVkIGluXHJcbiAgICAvLyBhIGZ1bmN0aW9uYWwgY29tcG9uZW50XHJcbiAgICBjb25zdCBpbnN0YW5jZSA9IGN1cnJlbnRJbnN0YW5jZSB8fCBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2U7XHJcbiAgICBpZiAoaW5zdGFuY2UpIHtcclxuICAgICAgICAvLyAjMjQwMFxyXG4gICAgICAgIC8vIHRvIHN1cHBvcnQgYGFwcC51c2VgIHBsdWdpbnMsXHJcbiAgICAgICAgLy8gZmFsbGJhY2sgdG8gYXBwQ29udGV4dCdzIGBwcm92aWRlc2AgaWYgdGhlIGluc3RhbmNlIGlzIGF0IHJvb3RcclxuICAgICAgICBjb25zdCBwcm92aWRlcyA9IGluc3RhbmNlLnBhcmVudCA9PSBudWxsXHJcbiAgICAgICAgICAgID8gaW5zdGFuY2Uudm5vZGUuYXBwQ29udGV4dCAmJiBpbnN0YW5jZS52bm9kZS5hcHBDb250ZXh0LnByb3ZpZGVzXHJcbiAgICAgICAgICAgIDogaW5zdGFuY2UucGFyZW50LnByb3ZpZGVzO1xyXG4gICAgICAgIGlmIChwcm92aWRlcyAmJiBrZXkgaW4gcHJvdmlkZXMpIHtcclxuICAgICAgICAgICAgLy8gVFMgZG9lc24ndCBhbGxvdyBzeW1ib2wgYXMgaW5kZXggdHlwZVxyXG4gICAgICAgICAgICByZXR1cm4gcHJvdmlkZXNba2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRyZWF0RGVmYXVsdEFzRmFjdG9yeSAmJiBpc0Z1bmN0aW9uKGRlZmF1bHRWYWx1ZSlcclxuICAgICAgICAgICAgICAgID8gZGVmYXVsdFZhbHVlLmNhbGwoaW5zdGFuY2UucHJveHkpXHJcbiAgICAgICAgICAgICAgICA6IGRlZmF1bHRWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYGluamVjdGlvbiBcIiR7U3RyaW5nKGtleSl9XCIgbm90IGZvdW5kLmApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIHdhcm4oYGluamVjdCgpIGNhbiBvbmx5IGJlIHVzZWQgaW5zaWRlIHNldHVwKCkgb3IgZnVuY3Rpb25hbCBjb21wb25lbnRzLmApO1xyXG4gICAgfVxyXG59XG5cbi8vIFNpbXBsZSBlZmZlY3QuXHJcbmZ1bmN0aW9uIHdhdGNoRWZmZWN0KGVmZmVjdCwgb3B0aW9ucykge1xyXG4gICAgcmV0dXJuIGRvV2F0Y2goZWZmZWN0LCBudWxsLCBvcHRpb25zKTtcclxufVxyXG5mdW5jdGlvbiB3YXRjaFBvc3RFZmZlY3QoZWZmZWN0LCBvcHRpb25zKSB7XHJcbiAgICByZXR1cm4gZG9XYXRjaChlZmZlY3QsIG51bGwsICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICA/IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucyksIHsgZmx1c2g6ICdwb3N0JyB9KSA6IHsgZmx1c2g6ICdwb3N0JyB9KSk7XHJcbn1cclxuZnVuY3Rpb24gd2F0Y2hTeW5jRWZmZWN0KGVmZmVjdCwgb3B0aW9ucykge1xyXG4gICAgcmV0dXJuIGRvV2F0Y2goZWZmZWN0LCBudWxsLCAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgPyBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMpLCB7IGZsdXNoOiAnc3luYycgfSkgOiB7IGZsdXNoOiAnc3luYycgfSkpO1xyXG59XHJcbi8vIGluaXRpYWwgdmFsdWUgZm9yIHdhdGNoZXJzIHRvIHRyaWdnZXIgb24gdW5kZWZpbmVkIGluaXRpYWwgdmFsdWVzXHJcbmNvbnN0IElOSVRJQUxfV0FUQ0hFUl9WQUxVRSA9IHt9O1xyXG4vLyBpbXBsZW1lbnRhdGlvblxyXG5mdW5jdGlvbiB3YXRjaChzb3VyY2UsIGNiLCBvcHRpb25zKSB7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpc0Z1bmN0aW9uKGNiKSkge1xyXG4gICAgICAgIHdhcm4oYFxcYHdhdGNoKGZuLCBvcHRpb25zPylcXGAgc2lnbmF0dXJlIGhhcyBiZWVuIG1vdmVkIHRvIGEgc2VwYXJhdGUgQVBJLiBgICtcclxuICAgICAgICAgICAgYFVzZSBcXGB3YXRjaEVmZmVjdChmbiwgb3B0aW9ucz8pXFxgIGluc3RlYWQuIFxcYHdhdGNoXFxgIG5vdyBvbmx5IGAgK1xyXG4gICAgICAgICAgICBgc3VwcG9ydHMgXFxgd2F0Y2goc291cmNlLCBjYiwgb3B0aW9ucz8pIHNpZ25hdHVyZS5gKTtcclxuICAgIH1cclxuICAgIHJldHVybiBkb1dhdGNoKHNvdXJjZSwgY2IsIG9wdGlvbnMpO1xyXG59XHJcbmZ1bmN0aW9uIGRvV2F0Y2goc291cmNlLCBjYiwgeyBpbW1lZGlhdGUsIGRlZXAsIGZsdXNoLCBvblRyYWNrLCBvblRyaWdnZXIgfSA9IEVNUFRZX09CSikge1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhY2IpIHtcclxuICAgICAgICBpZiAoaW1tZWRpYXRlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgd2Fybihgd2F0Y2goKSBcImltbWVkaWF0ZVwiIG9wdGlvbiBpcyBvbmx5IHJlc3BlY3RlZCB3aGVuIHVzaW5nIHRoZSBgICtcclxuICAgICAgICAgICAgICAgIGB3YXRjaChzb3VyY2UsIGNhbGxiYWNrLCBvcHRpb25zPykgc2lnbmF0dXJlLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGVlcCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYHdhdGNoKCkgXCJkZWVwXCIgb3B0aW9uIGlzIG9ubHkgcmVzcGVjdGVkIHdoZW4gdXNpbmcgdGhlIGAgK1xyXG4gICAgICAgICAgICAgICAgYHdhdGNoKHNvdXJjZSwgY2FsbGJhY2ssIG9wdGlvbnM/KSBzaWduYXR1cmUuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3Qgd2FybkludmFsaWRTb3VyY2UgPSAocykgPT4ge1xyXG4gICAgICAgIHdhcm4oYEludmFsaWQgd2F0Y2ggc291cmNlOiBgLCBzLCBgQSB3YXRjaCBzb3VyY2UgY2FuIG9ubHkgYmUgYSBnZXR0ZXIvZWZmZWN0IGZ1bmN0aW9uLCBhIHJlZiwgYCArXHJcbiAgICAgICAgICAgIGBhIHJlYWN0aXZlIG9iamVjdCwgb3IgYW4gYXJyYXkgb2YgdGhlc2UgdHlwZXMuYCk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgaW5zdGFuY2UgPSBjdXJyZW50SW5zdGFuY2U7XHJcbiAgICBsZXQgZ2V0dGVyO1xyXG4gICAgbGV0IGZvcmNlVHJpZ2dlciA9IGZhbHNlO1xyXG4gICAgbGV0IGlzTXVsdGlTb3VyY2UgPSBmYWxzZTtcclxuICAgIGlmIChpc1JlZihzb3VyY2UpKSB7XHJcbiAgICAgICAgZ2V0dGVyID0gKCkgPT4gc291cmNlLnZhbHVlO1xyXG4gICAgICAgIGZvcmNlVHJpZ2dlciA9IGlzU2hhbGxvdyQxKHNvdXJjZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc1JlYWN0aXZlKHNvdXJjZSkpIHtcclxuICAgICAgICBnZXR0ZXIgPSAoKSA9PiBzb3VyY2U7XHJcbiAgICAgICAgZGVlcCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0FycmF5KHNvdXJjZSkpIHtcclxuICAgICAgICBpc011bHRpU291cmNlID0gdHJ1ZTtcclxuICAgICAgICBmb3JjZVRyaWdnZXIgPSBzb3VyY2Uuc29tZShzID0+IGlzUmVhY3RpdmUocykgfHwgaXNTaGFsbG93JDEocykpO1xyXG4gICAgICAgIGdldHRlciA9ICgpID0+IHNvdXJjZS5tYXAocyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpc1JlZihzKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHMudmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaXNSZWFjdGl2ZShzKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNlKHMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzRnVuY3Rpb24ocykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYWxsV2l0aEVycm9ySGFuZGxpbmcocywgaW5zdGFuY2UsIDIgLyogRXJyb3JDb2Rlcy5XQVRDSF9HRVRURVIgKi8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHdhcm5JbnZhbGlkU291cmNlKHMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKHNvdXJjZSkpIHtcclxuICAgICAgICBpZiAoY2IpIHtcclxuICAgICAgICAgICAgLy8gZ2V0dGVyIHdpdGggY2JcclxuICAgICAgICAgICAgZ2V0dGVyID0gKCkgPT4gY2FsbFdpdGhFcnJvckhhbmRsaW5nKHNvdXJjZSwgaW5zdGFuY2UsIDIgLyogRXJyb3JDb2Rlcy5XQVRDSF9HRVRURVIgKi8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gbm8gY2IgLT4gc2ltcGxlIGVmZmVjdFxyXG4gICAgICAgICAgICBnZXR0ZXIgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2UgJiYgaW5zdGFuY2UuaXNVbm1vdW50ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoY2xlYW51cCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFudXAoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhzb3VyY2UsIGluc3RhbmNlLCAzIC8qIEVycm9yQ29kZXMuV0FUQ0hfQ0FMTEJBQ0sgKi8sIFtvbkNsZWFudXBdKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBnZXR0ZXIgPSBOT09QO1xyXG4gICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB3YXJuSW52YWxpZFNvdXJjZShzb3VyY2UpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNiICYmIGRlZXApIHtcclxuICAgICAgICBjb25zdCBiYXNlR2V0dGVyID0gZ2V0dGVyO1xyXG4gICAgICAgIGdldHRlciA9ICgpID0+IHRyYXZlcnNlKGJhc2VHZXR0ZXIoKSk7XHJcbiAgICB9XHJcbiAgICBsZXQgY2xlYW51cDtcclxuICAgIGxldCBvbkNsZWFudXAgPSAoZm4pID0+IHtcclxuICAgICAgICBjbGVhbnVwID0gZWZmZWN0Lm9uU3RvcCA9ICgpID0+IHtcclxuICAgICAgICAgICAgY2FsbFdpdGhFcnJvckhhbmRsaW5nKGZuLCBpbnN0YW5jZSwgNCAvKiBFcnJvckNvZGVzLldBVENIX0NMRUFOVVAgKi8pO1xyXG4gICAgICAgIH07XHJcbiAgICB9O1xyXG4gICAgLy8gaW4gU1NSIHRoZXJlIGlzIG5vIG5lZWQgdG8gc2V0dXAgYW4gYWN0dWFsIGVmZmVjdCwgYW5kIGl0IHNob3VsZCBiZSBub29wXHJcbiAgICAvLyB1bmxlc3MgaXQncyBlYWdlclxyXG4gICAgaWYgKGlzSW5TU1JDb21wb25lbnRTZXR1cCkge1xyXG4gICAgICAgIC8vIHdlIHdpbGwgYWxzbyBub3QgY2FsbCB0aGUgaW52YWxpZGF0ZSBjYWxsYmFjayAoKyBydW5uZXIgaXMgbm90IHNldCB1cClcclxuICAgICAgICBvbkNsZWFudXAgPSBOT09QO1xyXG4gICAgICAgIGlmICghY2IpIHtcclxuICAgICAgICAgICAgZ2V0dGVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGltbWVkaWF0ZSkge1xyXG4gICAgICAgICAgICBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhjYiwgaW5zdGFuY2UsIDMgLyogRXJyb3JDb2Rlcy5XQVRDSF9DQUxMQkFDSyAqLywgW1xyXG4gICAgICAgICAgICAgICAgZ2V0dGVyKCksXHJcbiAgICAgICAgICAgICAgICBpc011bHRpU291cmNlID8gW10gOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICBvbkNsZWFudXBcclxuICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBOT09QO1xyXG4gICAgfVxyXG4gICAgbGV0IG9sZFZhbHVlID0gaXNNdWx0aVNvdXJjZSA/IFtdIDogSU5JVElBTF9XQVRDSEVSX1ZBTFVFO1xyXG4gICAgY29uc3Qgam9iID0gKCkgPT4ge1xyXG4gICAgICAgIGlmICghZWZmZWN0LmFjdGl2ZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjYikge1xyXG4gICAgICAgICAgICAvLyB3YXRjaChzb3VyY2UsIGNiKVxyXG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGVmZmVjdC5ydW4oKTtcclxuICAgICAgICAgICAgaWYgKGRlZXAgfHxcclxuICAgICAgICAgICAgICAgIGZvcmNlVHJpZ2dlciB8fFxyXG4gICAgICAgICAgICAgICAgKGlzTXVsdGlTb3VyY2VcclxuICAgICAgICAgICAgICAgICAgICA/IG5ld1ZhbHVlLnNvbWUoKHYsIGkpID0+IGhhc0NoYW5nZWQodiwgb2xkVmFsdWVbaV0pKVxyXG4gICAgICAgICAgICAgICAgICAgIDogaGFzQ2hhbmdlZChuZXdWYWx1ZSwgb2xkVmFsdWUpKSB8fFxyXG4gICAgICAgICAgICAgICAgKGZhbHNlICApKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjbGVhbnVwIGJlZm9yZSBydW5uaW5nIGNiIGFnYWluXHJcbiAgICAgICAgICAgICAgICBpZiAoY2xlYW51cCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFudXAoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGNiLCBpbnN0YW5jZSwgMyAvKiBFcnJvckNvZGVzLldBVENIX0NBTExCQUNLICovLCBbXHJcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcGFzcyB1bmRlZmluZWQgYXMgdGhlIG9sZCB2YWx1ZSB3aGVuIGl0J3MgY2hhbmdlZCBmb3IgdGhlIGZpcnN0IHRpbWVcclxuICAgICAgICAgICAgICAgICAgICBvbGRWYWx1ZSA9PT0gSU5JVElBTF9XQVRDSEVSX1ZBTFVFID8gdW5kZWZpbmVkIDogb2xkVmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGVhbnVwXHJcbiAgICAgICAgICAgICAgICBdKTtcclxuICAgICAgICAgICAgICAgIG9sZFZhbHVlID0gbmV3VmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHdhdGNoRWZmZWN0XHJcbiAgICAgICAgICAgIGVmZmVjdC5ydW4oKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgLy8gaW1wb3J0YW50OiBtYXJrIHRoZSBqb2IgYXMgYSB3YXRjaGVyIGNhbGxiYWNrIHNvIHRoYXQgc2NoZWR1bGVyIGtub3dzXHJcbiAgICAvLyBpdCBpcyBhbGxvd2VkIHRvIHNlbGYtdHJpZ2dlciAoIzE3MjcpXHJcbiAgICBqb2IuYWxsb3dSZWN1cnNlID0gISFjYjtcclxuICAgIGxldCBzY2hlZHVsZXI7XHJcbiAgICBpZiAoZmx1c2ggPT09ICdzeW5jJykge1xyXG4gICAgICAgIHNjaGVkdWxlciA9IGpvYjsgLy8gdGhlIHNjaGVkdWxlciBmdW5jdGlvbiBnZXRzIGNhbGxlZCBkaXJlY3RseVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZmx1c2ggPT09ICdwb3N0Jykge1xyXG4gICAgICAgIHNjaGVkdWxlciA9ICgpID0+IHF1ZXVlUG9zdFJlbmRlckVmZmVjdChqb2IsIGluc3RhbmNlICYmIGluc3RhbmNlLnN1c3BlbnNlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIGRlZmF1bHQ6ICdwcmUnXHJcbiAgICAgICAgam9iLnByZSA9IHRydWU7XHJcbiAgICAgICAgaWYgKGluc3RhbmNlKVxyXG4gICAgICAgICAgICBqb2IuaWQgPSBpbnN0YW5jZS51aWQ7XHJcbiAgICAgICAgc2NoZWR1bGVyID0gKCkgPT4gcXVldWVKb2Ioam9iKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGVmZmVjdCA9IG5ldyBSZWFjdGl2ZUVmZmVjdChnZXR0ZXIsIHNjaGVkdWxlcik7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgZWZmZWN0Lm9uVHJhY2sgPSBvblRyYWNrO1xyXG4gICAgICAgIGVmZmVjdC5vblRyaWdnZXIgPSBvblRyaWdnZXI7XHJcbiAgICB9XHJcbiAgICAvLyBpbml0aWFsIHJ1blxyXG4gICAgaWYgKGNiKSB7XHJcbiAgICAgICAgaWYgKGltbWVkaWF0ZSkge1xyXG4gICAgICAgICAgICBqb2IoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG9sZFZhbHVlID0gZWZmZWN0LnJ1bigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGZsdXNoID09PSAncG9zdCcpIHtcclxuICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoZWZmZWN0LnJ1bi5iaW5kKGVmZmVjdCksIGluc3RhbmNlICYmIGluc3RhbmNlLnN1c3BlbnNlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGVmZmVjdC5ydW4oKTtcclxuICAgIH1cclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgZWZmZWN0LnN0b3AoKTtcclxuICAgICAgICBpZiAoaW5zdGFuY2UgJiYgaW5zdGFuY2Uuc2NvcGUpIHtcclxuICAgICAgICAgICAgcmVtb3ZlKGluc3RhbmNlLnNjb3BlLmVmZmVjdHMsIGVmZmVjdCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxyXG4vLyB0aGlzLiR3YXRjaFxyXG5mdW5jdGlvbiBpbnN0YW5jZVdhdGNoKHNvdXJjZSwgdmFsdWUsIG9wdGlvbnMpIHtcclxuICAgIGNvbnN0IHB1YmxpY1RoaXMgPSB0aGlzLnByb3h5O1xyXG4gICAgY29uc3QgZ2V0dGVyID0gaXNTdHJpbmcoc291cmNlKVxyXG4gICAgICAgID8gc291cmNlLmluY2x1ZGVzKCcuJylcclxuICAgICAgICAgICAgPyBjcmVhdGVQYXRoR2V0dGVyKHB1YmxpY1RoaXMsIHNvdXJjZSlcclxuICAgICAgICAgICAgOiAoKSA9PiBwdWJsaWNUaGlzW3NvdXJjZV1cclxuICAgICAgICA6IHNvdXJjZS5iaW5kKHB1YmxpY1RoaXMsIHB1YmxpY1RoaXMpO1xyXG4gICAgbGV0IGNiO1xyXG4gICAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XHJcbiAgICAgICAgY2IgPSB2YWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNiID0gdmFsdWUuaGFuZGxlcjtcclxuICAgICAgICBvcHRpb25zID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjdXIgPSBjdXJyZW50SW5zdGFuY2U7XHJcbiAgICBzZXRDdXJyZW50SW5zdGFuY2UodGhpcyk7XHJcbiAgICBjb25zdCByZXMgPSBkb1dhdGNoKGdldHRlciwgY2IuYmluZChwdWJsaWNUaGlzKSwgb3B0aW9ucyk7XHJcbiAgICBpZiAoY3VyKSB7XHJcbiAgICAgICAgc2V0Q3VycmVudEluc3RhbmNlKGN1cik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICB1bnNldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVQYXRoR2V0dGVyKGN0eCwgcGF0aCkge1xyXG4gICAgY29uc3Qgc2VnbWVudHMgPSBwYXRoLnNwbGl0KCcuJyk7XHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgIGxldCBjdXIgPSBjdHg7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWdtZW50cy5sZW5ndGggJiYgY3VyOyBpKyspIHtcclxuICAgICAgICAgICAgY3VyID0gY3VyW3NlZ21lbnRzW2ldXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGN1cjtcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gdHJhdmVyc2UodmFsdWUsIHNlZW4pIHtcclxuICAgIGlmICghaXNPYmplY3QodmFsdWUpIHx8IHZhbHVlW1wiX192X3NraXBcIiAvKiBSZWFjdGl2ZUZsYWdzLlNLSVAgKi9dKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gICAgc2VlbiA9IHNlZW4gfHwgbmV3IFNldCgpO1xyXG4gICAgaWYgKHNlZW4uaGFzKHZhbHVlKSkge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIHNlZW4uYWRkKHZhbHVlKTtcclxuICAgIGlmIChpc1JlZih2YWx1ZSkpIHtcclxuICAgICAgICB0cmF2ZXJzZSh2YWx1ZS52YWx1ZSwgc2Vlbik7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdHJhdmVyc2UodmFsdWVbaV0sIHNlZW4pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzU2V0KHZhbHVlKSB8fCBpc01hcCh2YWx1ZSkpIHtcclxuICAgICAgICB2YWx1ZS5mb3JFYWNoKCh2KSA9PiB7XHJcbiAgICAgICAgICAgIHRyYXZlcnNlKHYsIHNlZW4pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB2YWx1ZSkge1xyXG4gICAgICAgICAgICB0cmF2ZXJzZSh2YWx1ZVtrZXldLCBzZWVuKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbn1cblxuZnVuY3Rpb24gdXNlVHJhbnNpdGlvblN0YXRlKCkge1xyXG4gICAgY29uc3Qgc3RhdGUgPSB7XHJcbiAgICAgICAgaXNNb3VudGVkOiBmYWxzZSxcclxuICAgICAgICBpc0xlYXZpbmc6IGZhbHNlLFxyXG4gICAgICAgIGlzVW5tb3VudGluZzogZmFsc2UsXHJcbiAgICAgICAgbGVhdmluZ1ZOb2RlczogbmV3IE1hcCgpXHJcbiAgICB9O1xyXG4gICAgb25Nb3VudGVkKCgpID0+IHtcclxuICAgICAgICBzdGF0ZS5pc01vdW50ZWQgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgICBvbkJlZm9yZVVubW91bnQoKCkgPT4ge1xyXG4gICAgICAgIHN0YXRlLmlzVW5tb3VudGluZyA9IHRydWU7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBzdGF0ZTtcclxufVxyXG5jb25zdCBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvciA9IFtGdW5jdGlvbiwgQXJyYXldO1xyXG5jb25zdCBCYXNlVHJhbnNpdGlvbkltcGwgPSB7XHJcbiAgICBuYW1lOiBgQmFzZVRyYW5zaXRpb25gLFxyXG4gICAgcHJvcHM6IHtcclxuICAgICAgICBtb2RlOiBTdHJpbmcsXHJcbiAgICAgICAgYXBwZWFyOiBCb29sZWFuLFxyXG4gICAgICAgIHBlcnNpc3RlZDogQm9vbGVhbixcclxuICAgICAgICAvLyBlbnRlclxyXG4gICAgICAgIG9uQmVmb3JlRW50ZXI6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxyXG4gICAgICAgIG9uRW50ZXI6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxyXG4gICAgICAgIG9uQWZ0ZXJFbnRlcjogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXHJcbiAgICAgICAgb25FbnRlckNhbmNlbGxlZDogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXHJcbiAgICAgICAgLy8gbGVhdmVcclxuICAgICAgICBvbkJlZm9yZUxlYXZlOiBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvcixcclxuICAgICAgICBvbkxlYXZlOiBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvcixcclxuICAgICAgICBvbkFmdGVyTGVhdmU6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxyXG4gICAgICAgIG9uTGVhdmVDYW5jZWxsZWQ6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxyXG4gICAgICAgIC8vIGFwcGVhclxyXG4gICAgICAgIG9uQmVmb3JlQXBwZWFyOiBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvcixcclxuICAgICAgICBvbkFwcGVhcjogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXHJcbiAgICAgICAgb25BZnRlckFwcGVhcjogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXHJcbiAgICAgICAgb25BcHBlYXJDYW5jZWxsZWQ6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yXHJcbiAgICB9LFxyXG4gICAgc2V0dXAocHJvcHMsIHsgc2xvdHMgfSkge1xyXG4gICAgICAgIGNvbnN0IGluc3RhbmNlID0gZ2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB1c2VUcmFuc2l0aW9uU3RhdGUoKTtcclxuICAgICAgICBsZXQgcHJldlRyYW5zaXRpb25LZXk7XHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBzbG90cy5kZWZhdWx0ICYmIGdldFRyYW5zaXRpb25SYXdDaGlsZHJlbihzbG90cy5kZWZhdWx0KCksIHRydWUpO1xyXG4gICAgICAgICAgICBpZiAoIWNoaWxkcmVuIHx8ICFjaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgY2hpbGQgPSBjaGlsZHJlblswXTtcclxuICAgICAgICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgIGxldCBoYXNGb3VuZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgLy8gbG9jYXRlIGZpcnN0IG5vbi1jb21tZW50IGNoaWxkXHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGMgb2YgY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYy50eXBlICE9PSBDb21tZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaGFzRm91bmQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdhcm4gbW9yZSB0aGFuIG9uZSBub24tY29tbWVudCBjaGlsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybignPHRyYW5zaXRpb24+IGNhbiBvbmx5IGJlIHVzZWQgb24gYSBzaW5nbGUgZWxlbWVudCBvciBjb21wb25lbnQuICcgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVc2UgPHRyYW5zaXRpb24tZ3JvdXA+IGZvciBsaXN0cy4nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkID0gYztcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzRm91bmQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyB0aGVyZSdzIG5vIG5lZWQgdG8gdHJhY2sgcmVhY3Rpdml0eSBmb3IgdGhlc2UgcHJvcHMgc28gdXNlIHRoZSByYXdcclxuICAgICAgICAgICAgLy8gcHJvcHMgZm9yIGEgYml0IGJldHRlciBwZXJmXHJcbiAgICAgICAgICAgIGNvbnN0IHJhd1Byb3BzID0gdG9SYXcocHJvcHMpO1xyXG4gICAgICAgICAgICBjb25zdCB7IG1vZGUgfSA9IHJhd1Byb3BzO1xyXG4gICAgICAgICAgICAvLyBjaGVjayBtb2RlXHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgIG1vZGUgJiZcclxuICAgICAgICAgICAgICAgIG1vZGUgIT09ICdpbi1vdXQnICYmXHJcbiAgICAgICAgICAgICAgICBtb2RlICE9PSAnb3V0LWluJyAmJlxyXG4gICAgICAgICAgICAgICAgbW9kZSAhPT0gJ2RlZmF1bHQnKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBpbnZhbGlkIDx0cmFuc2l0aW9uPiBtb2RlOiAke21vZGV9YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHN0YXRlLmlzTGVhdmluZykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5UGxhY2Vob2xkZXIoY2hpbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGluIHRoZSBjYXNlIG9mIDx0cmFuc2l0aW9uPjxrZWVwLWFsaXZlLz48L3RyYW5zaXRpb24+LCB3ZSBuZWVkIHRvXHJcbiAgICAgICAgICAgIC8vIGNvbXBhcmUgdGhlIHR5cGUgb2YgdGhlIGtlcHQtYWxpdmUgY2hpbGRyZW4uXHJcbiAgICAgICAgICAgIGNvbnN0IGlubmVyQ2hpbGQgPSBnZXRLZWVwQWxpdmVDaGlsZChjaGlsZCk7XHJcbiAgICAgICAgICAgIGlmICghaW5uZXJDaGlsZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5UGxhY2Vob2xkZXIoY2hpbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGVudGVySG9va3MgPSByZXNvbHZlVHJhbnNpdGlvbkhvb2tzKGlubmVyQ2hpbGQsIHJhd1Byb3BzLCBzdGF0ZSwgaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICBzZXRUcmFuc2l0aW9uSG9va3MoaW5uZXJDaGlsZCwgZW50ZXJIb29rcyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG9sZENoaWxkID0gaW5zdGFuY2Uuc3ViVHJlZTtcclxuICAgICAgICAgICAgY29uc3Qgb2xkSW5uZXJDaGlsZCA9IG9sZENoaWxkICYmIGdldEtlZXBBbGl2ZUNoaWxkKG9sZENoaWxkKTtcclxuICAgICAgICAgICAgbGV0IHRyYW5zaXRpb25LZXlDaGFuZ2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgZ2V0VHJhbnNpdGlvbktleSB9ID0gaW5uZXJDaGlsZC50eXBlO1xyXG4gICAgICAgICAgICBpZiAoZ2V0VHJhbnNpdGlvbktleSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gZ2V0VHJhbnNpdGlvbktleSgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHByZXZUcmFuc2l0aW9uS2V5ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBwcmV2VHJhbnNpdGlvbktleSA9IGtleTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtleSAhPT0gcHJldlRyYW5zaXRpb25LZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICBwcmV2VHJhbnNpdGlvbktleSA9IGtleTtcclxuICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uS2V5Q2hhbmdlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gaGFuZGxlIG1vZGVcclxuICAgICAgICAgICAgaWYgKG9sZElubmVyQ2hpbGQgJiZcclxuICAgICAgICAgICAgICAgIG9sZElubmVyQ2hpbGQudHlwZSAhPT0gQ29tbWVudCAmJlxyXG4gICAgICAgICAgICAgICAgKCFpc1NhbWVWTm9kZVR5cGUoaW5uZXJDaGlsZCwgb2xkSW5uZXJDaGlsZCkgfHwgdHJhbnNpdGlvbktleUNoYW5nZWQpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZWF2aW5nSG9va3MgPSByZXNvbHZlVHJhbnNpdGlvbkhvb2tzKG9sZElubmVyQ2hpbGQsIHJhd1Byb3BzLCBzdGF0ZSwgaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlIG9sZCB0cmVlJ3MgaG9va3MgaW4gY2FzZSBvZiBkeW5hbWljIHRyYW5zaXRpb25cclxuICAgICAgICAgICAgICAgIHNldFRyYW5zaXRpb25Ib29rcyhvbGRJbm5lckNoaWxkLCBsZWF2aW5nSG9va3MpO1xyXG4gICAgICAgICAgICAgICAgLy8gc3dpdGNoaW5nIGJldHdlZW4gZGlmZmVyZW50IHZpZXdzXHJcbiAgICAgICAgICAgICAgICBpZiAobW9kZSA9PT0gJ291dC1pbicpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5pc0xlYXZpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHJldHVybiBwbGFjZWhvbGRlciBub2RlIGFuZCBxdWV1ZSB1cGRhdGUgd2hlbiBsZWF2ZSBmaW5pc2hlc1xyXG4gICAgICAgICAgICAgICAgICAgIGxlYXZpbmdIb29rcy5hZnRlckxlYXZlID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5pc0xlYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UudXBkYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHlQbGFjZWhvbGRlcihjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtb2RlID09PSAnaW4tb3V0JyAmJiBpbm5lckNoaWxkLnR5cGUgIT09IENvbW1lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZWF2aW5nSG9va3MuZGVsYXlMZWF2ZSA9IChlbCwgZWFybHlSZW1vdmUsIGRlbGF5ZWRMZWF2ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWF2aW5nVk5vZGVzQ2FjaGUgPSBnZXRMZWF2aW5nTm9kZXNGb3JUeXBlKHN0YXRlLCBvbGRJbm5lckNoaWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGVhdmluZ1ZOb2Rlc0NhY2hlW1N0cmluZyhvbGRJbm5lckNoaWxkLmtleSldID0gb2xkSW5uZXJDaGlsZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWFybHkgcmVtb3ZhbCBjYWxsYmFja1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbC5fbGVhdmVDYiA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhcmx5UmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbC5fbGVhdmVDYiA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBlbnRlckhvb2tzLmRlbGF5ZWRMZWF2ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW50ZXJIb29rcy5kZWxheWVkTGVhdmUgPSBkZWxheWVkTGVhdmU7XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gY2hpbGQ7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufTtcclxuLy8gZXhwb3J0IHRoZSBwdWJsaWMgdHlwZSBmb3IgaC90c3ggaW5mZXJlbmNlXHJcbi8vIGFsc28gdG8gYXZvaWQgaW5saW5lIGltcG9ydCgpIGluIGdlbmVyYXRlZCBkLnRzIGZpbGVzXHJcbmNvbnN0IEJhc2VUcmFuc2l0aW9uID0gQmFzZVRyYW5zaXRpb25JbXBsO1xyXG5mdW5jdGlvbiBnZXRMZWF2aW5nTm9kZXNGb3JUeXBlKHN0YXRlLCB2bm9kZSkge1xyXG4gICAgY29uc3QgeyBsZWF2aW5nVk5vZGVzIH0gPSBzdGF0ZTtcclxuICAgIGxldCBsZWF2aW5nVk5vZGVzQ2FjaGUgPSBsZWF2aW5nVk5vZGVzLmdldCh2bm9kZS50eXBlKTtcclxuICAgIGlmICghbGVhdmluZ1ZOb2Rlc0NhY2hlKSB7XHJcbiAgICAgICAgbGVhdmluZ1ZOb2Rlc0NhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICAgICAgICBsZWF2aW5nVk5vZGVzLnNldCh2bm9kZS50eXBlLCBsZWF2aW5nVk5vZGVzQ2FjaGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxlYXZpbmdWTm9kZXNDYWNoZTtcclxufVxyXG4vLyBUaGUgdHJhbnNpdGlvbiBob29rcyBhcmUgYXR0YWNoZWQgdG8gdGhlIHZub2RlIGFzIHZub2RlLnRyYW5zaXRpb25cclxuLy8gYW5kIHdpbGwgYmUgY2FsbGVkIGF0IGFwcHJvcHJpYXRlIHRpbWluZyBpbiB0aGUgcmVuZGVyZXIuXHJcbmZ1bmN0aW9uIHJlc29sdmVUcmFuc2l0aW9uSG9va3Modm5vZGUsIHByb3BzLCBzdGF0ZSwgaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IHsgYXBwZWFyLCBtb2RlLCBwZXJzaXN0ZWQgPSBmYWxzZSwgb25CZWZvcmVFbnRlciwgb25FbnRlciwgb25BZnRlckVudGVyLCBvbkVudGVyQ2FuY2VsbGVkLCBvbkJlZm9yZUxlYXZlLCBvbkxlYXZlLCBvbkFmdGVyTGVhdmUsIG9uTGVhdmVDYW5jZWxsZWQsIG9uQmVmb3JlQXBwZWFyLCBvbkFwcGVhciwgb25BZnRlckFwcGVhciwgb25BcHBlYXJDYW5jZWxsZWQgfSA9IHByb3BzO1xyXG4gICAgY29uc3Qga2V5ID0gU3RyaW5nKHZub2RlLmtleSk7XHJcbiAgICBjb25zdCBsZWF2aW5nVk5vZGVzQ2FjaGUgPSBnZXRMZWF2aW5nTm9kZXNGb3JUeXBlKHN0YXRlLCB2bm9kZSk7XHJcbiAgICBjb25zdCBjYWxsSG9vayA9IChob29rLCBhcmdzKSA9PiB7XHJcbiAgICAgICAgaG9vayAmJlxyXG4gICAgICAgICAgICBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhob29rLCBpbnN0YW5jZSwgOSAvKiBFcnJvckNvZGVzLlRSQU5TSVRJT05fSE9PSyAqLywgYXJncyk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgY2FsbEFzeW5jSG9vayA9IChob29rLCBhcmdzKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZG9uZSA9IGFyZ3NbMV07XHJcbiAgICAgICAgY2FsbEhvb2soaG9vaywgYXJncyk7XHJcbiAgICAgICAgaWYgKGlzQXJyYXkoaG9vaykpIHtcclxuICAgICAgICAgICAgaWYgKGhvb2suZXZlcnkoaG9vayA9PiBob29rLmxlbmd0aCA8PSAxKSlcclxuICAgICAgICAgICAgICAgIGRvbmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaG9vay5sZW5ndGggPD0gMSkge1xyXG4gICAgICAgICAgICBkb25lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IGhvb2tzID0ge1xyXG4gICAgICAgIG1vZGUsXHJcbiAgICAgICAgcGVyc2lzdGVkLFxyXG4gICAgICAgIGJlZm9yZUVudGVyKGVsKSB7XHJcbiAgICAgICAgICAgIGxldCBob29rID0gb25CZWZvcmVFbnRlcjtcclxuICAgICAgICAgICAgaWYgKCFzdGF0ZS5pc01vdW50ZWQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChhcHBlYXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBob29rID0gb25CZWZvcmVBcHBlYXIgfHwgb25CZWZvcmVFbnRlcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBmb3Igc2FtZSBlbGVtZW50ICh2LXNob3cpXHJcbiAgICAgICAgICAgIGlmIChlbC5fbGVhdmVDYikge1xyXG4gICAgICAgICAgICAgICAgZWwuX2xlYXZlQ2IodHJ1ZSAvKiBjYW5jZWxsZWQgKi8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGZvciB0b2dnbGVkIGVsZW1lbnQgd2l0aCBzYW1lIGtleSAodi1pZilcclxuICAgICAgICAgICAgY29uc3QgbGVhdmluZ1ZOb2RlID0gbGVhdmluZ1ZOb2Rlc0NhY2hlW2tleV07XHJcbiAgICAgICAgICAgIGlmIChsZWF2aW5nVk5vZGUgJiZcclxuICAgICAgICAgICAgICAgIGlzU2FtZVZOb2RlVHlwZSh2bm9kZSwgbGVhdmluZ1ZOb2RlKSAmJlxyXG4gICAgICAgICAgICAgICAgbGVhdmluZ1ZOb2RlLmVsLl9sZWF2ZUNiKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBmb3JjZSBlYXJseSByZW1vdmFsIChub3QgY2FuY2VsbGVkKVxyXG4gICAgICAgICAgICAgICAgbGVhdmluZ1ZOb2RlLmVsLl9sZWF2ZUNiKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FsbEhvb2soaG9vaywgW2VsXSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlbnRlcihlbCkge1xyXG4gICAgICAgICAgICBsZXQgaG9vayA9IG9uRW50ZXI7XHJcbiAgICAgICAgICAgIGxldCBhZnRlckhvb2sgPSBvbkFmdGVyRW50ZXI7XHJcbiAgICAgICAgICAgIGxldCBjYW5jZWxIb29rID0gb25FbnRlckNhbmNlbGxlZDtcclxuICAgICAgICAgICAgaWYgKCFzdGF0ZS5pc01vdW50ZWQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChhcHBlYXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBob29rID0gb25BcHBlYXIgfHwgb25FbnRlcjtcclxuICAgICAgICAgICAgICAgICAgICBhZnRlckhvb2sgPSBvbkFmdGVyQXBwZWFyIHx8IG9uQWZ0ZXJFbnRlcjtcclxuICAgICAgICAgICAgICAgICAgICBjYW5jZWxIb29rID0gb25BcHBlYXJDYW5jZWxsZWQgfHwgb25FbnRlckNhbmNlbGxlZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgY2FsbGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNvbnN0IGRvbmUgPSAoZWwuX2VudGVyQ2IgPSAoY2FuY2VsbGVkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2FsbGVkKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGNhbGxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2FuY2VsbGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbEhvb2soY2FuY2VsSG9vaywgW2VsXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsSG9vayhhZnRlckhvb2ssIFtlbF0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGhvb2tzLmRlbGF5ZWRMZWF2ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGhvb2tzLmRlbGF5ZWRMZWF2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWwuX2VudGVyQ2IgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAoaG9vaykge1xyXG4gICAgICAgICAgICAgICAgY2FsbEFzeW5jSG9vayhob29rLCBbZWwsIGRvbmVdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRvbmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbGVhdmUoZWwsIHJlbW92ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBrZXkgPSBTdHJpbmcodm5vZGUua2V5KTtcclxuICAgICAgICAgICAgaWYgKGVsLl9lbnRlckNiKSB7XHJcbiAgICAgICAgICAgICAgICBlbC5fZW50ZXJDYih0cnVlIC8qIGNhbmNlbGxlZCAqLyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHN0YXRlLmlzVW5tb3VudGluZykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlbW92ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhbGxIb29rKG9uQmVmb3JlTGVhdmUsIFtlbF0pO1xyXG4gICAgICAgICAgICBsZXQgY2FsbGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNvbnN0IGRvbmUgPSAoZWwuX2xlYXZlQ2IgPSAoY2FuY2VsbGVkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2FsbGVkKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGNhbGxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICByZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgIGlmIChjYW5jZWxsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsSG9vayhvbkxlYXZlQ2FuY2VsbGVkLCBbZWxdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxIb29rKG9uQWZ0ZXJMZWF2ZSwgW2VsXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbC5fbGVhdmVDYiA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgIGlmIChsZWF2aW5nVk5vZGVzQ2FjaGVba2V5XSA9PT0gdm5vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbGVhdmluZ1ZOb2Rlc0NhY2hlW2tleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBsZWF2aW5nVk5vZGVzQ2FjaGVba2V5XSA9IHZub2RlO1xyXG4gICAgICAgICAgICBpZiAob25MZWF2ZSkge1xyXG4gICAgICAgICAgICAgICAgY2FsbEFzeW5jSG9vayhvbkxlYXZlLCBbZWwsIGRvbmVdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRvbmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xvbmUodm5vZGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVUcmFuc2l0aW9uSG9va3Modm5vZGUsIHByb3BzLCBzdGF0ZSwgaW5zdGFuY2UpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICByZXR1cm4gaG9va3M7XHJcbn1cclxuLy8gdGhlIHBsYWNlaG9sZGVyIHJlYWxseSBvbmx5IGhhbmRsZXMgb25lIHNwZWNpYWwgY2FzZTogS2VlcEFsaXZlXHJcbi8vIGluIHRoZSBjYXNlIG9mIGEgS2VlcEFsaXZlIGluIGEgbGVhdmUgcGhhc2Ugd2UgbmVlZCB0byByZXR1cm4gYSBLZWVwQWxpdmVcclxuLy8gcGxhY2Vob2xkZXIgd2l0aCBlbXB0eSBjb250ZW50IHRvIGF2b2lkIHRoZSBLZWVwQWxpdmUgaW5zdGFuY2UgZnJvbSBiZWluZ1xyXG4vLyB1bm1vdW50ZWQuXHJcbmZ1bmN0aW9uIGVtcHR5UGxhY2Vob2xkZXIodm5vZGUpIHtcclxuICAgIGlmIChpc0tlZXBBbGl2ZSh2bm9kZSkpIHtcclxuICAgICAgICB2bm9kZSA9IGNsb25lVk5vZGUodm5vZGUpO1xyXG4gICAgICAgIHZub2RlLmNoaWxkcmVuID0gbnVsbDtcclxuICAgICAgICByZXR1cm4gdm5vZGU7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2V0S2VlcEFsaXZlQ2hpbGQodm5vZGUpIHtcclxuICAgIHJldHVybiBpc0tlZXBBbGl2ZSh2bm9kZSlcclxuICAgICAgICA/IHZub2RlLmNoaWxkcmVuXHJcbiAgICAgICAgICAgID8gdm5vZGUuY2hpbGRyZW5bMF1cclxuICAgICAgICAgICAgOiB1bmRlZmluZWRcclxuICAgICAgICA6IHZub2RlO1xyXG59XHJcbmZ1bmN0aW9uIHNldFRyYW5zaXRpb25Ib29rcyh2bm9kZSwgaG9va3MpIHtcclxuICAgIGlmICh2bm9kZS5zaGFwZUZsYWcgJiA2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UICovICYmIHZub2RlLmNvbXBvbmVudCkge1xyXG4gICAgICAgIHNldFRyYW5zaXRpb25Ib29rcyh2bm9kZS5jb21wb25lbnQuc3ViVHJlZSwgaG9va3MpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodm5vZGUuc2hhcGVGbGFnICYgMTI4IC8qIFNoYXBlRmxhZ3MuU1VTUEVOU0UgKi8pIHtcclxuICAgICAgICB2bm9kZS5zc0NvbnRlbnQudHJhbnNpdGlvbiA9IGhvb2tzLmNsb25lKHZub2RlLnNzQ29udGVudCk7XHJcbiAgICAgICAgdm5vZGUuc3NGYWxsYmFjay50cmFuc2l0aW9uID0gaG9va3MuY2xvbmUodm5vZGUuc3NGYWxsYmFjayk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICB2bm9kZS50cmFuc2l0aW9uID0gaG9va3M7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2V0VHJhbnNpdGlvblJhd0NoaWxkcmVuKGNoaWxkcmVuLCBrZWVwQ29tbWVudCA9IGZhbHNlLCBwYXJlbnRLZXkpIHtcclxuICAgIGxldCByZXQgPSBbXTtcclxuICAgIGxldCBrZXllZEZyYWdtZW50Q291bnQgPSAwO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xyXG4gICAgICAgIC8vICM1MzYwIGluaGVyaXQgcGFyZW50IGtleSBpbiBjYXNlIG9mIDx0ZW1wbGF0ZSB2LWZvcj5cclxuICAgICAgICBjb25zdCBrZXkgPSBwYXJlbnRLZXkgPT0gbnVsbFxyXG4gICAgICAgICAgICA/IGNoaWxkLmtleVxyXG4gICAgICAgICAgICA6IFN0cmluZyhwYXJlbnRLZXkpICsgU3RyaW5nKGNoaWxkLmtleSAhPSBudWxsID8gY2hpbGQua2V5IDogaSk7XHJcbiAgICAgICAgLy8gaGFuZGxlIGZyYWdtZW50IGNoaWxkcmVuIGNhc2UsIGUuZy4gdi1mb3JcclxuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gRnJhZ21lbnQpIHtcclxuICAgICAgICAgICAgaWYgKGNoaWxkLnBhdGNoRmxhZyAmIDEyOCAvKiBQYXRjaEZsYWdzLktFWUVEX0ZSQUdNRU5UICovKVxyXG4gICAgICAgICAgICAgICAga2V5ZWRGcmFnbWVudENvdW50Kys7XHJcbiAgICAgICAgICAgIHJldCA9IHJldC5jb25jYXQoZ2V0VHJhbnNpdGlvblJhd0NoaWxkcmVuKGNoaWxkLmNoaWxkcmVuLCBrZWVwQ29tbWVudCwga2V5KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNvbW1lbnQgcGxhY2Vob2xkZXJzIHNob3VsZCBiZSBza2lwcGVkLCBlLmcuIHYtaWZcclxuICAgICAgICBlbHNlIGlmIChrZWVwQ29tbWVudCB8fCBjaGlsZC50eXBlICE9PSBDb21tZW50KSB7XHJcbiAgICAgICAgICAgIHJldC5wdXNoKGtleSAhPSBudWxsID8gY2xvbmVWTm9kZShjaGlsZCwgeyBrZXkgfSkgOiBjaGlsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gIzExMjYgaWYgYSB0cmFuc2l0aW9uIGNoaWxkcmVuIGxpc3QgY29udGFpbnMgbXVsdGlwbGUgc3ViIGZyYWdtZW50cywgdGhlc2VcclxuICAgIC8vIGZyYWdtZW50cyB3aWxsIGJlIG1lcmdlZCBpbnRvIGEgZmxhdCBjaGlsZHJlbiBhcnJheS4gU2luY2UgZWFjaCB2LWZvclxyXG4gICAgLy8gZnJhZ21lbnQgbWF5IGNvbnRhaW4gZGlmZmVyZW50IHN0YXRpYyBiaW5kaW5ncyBpbnNpZGUsIHdlIG5lZWQgdG8gZGUtb3BcclxuICAgIC8vIHRoZXNlIGNoaWxkcmVuIHRvIGZvcmNlIGZ1bGwgZGlmZnMgdG8gZW5zdXJlIGNvcnJlY3QgYmVoYXZpb3IuXHJcbiAgICBpZiAoa2V5ZWRGcmFnbWVudENvdW50ID4gMSkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmV0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHJldFtpXS5wYXRjaEZsYWcgPSAtMiAvKiBQYXRjaEZsYWdzLkJBSUwgKi87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldDtcclxufVxuXG4vLyBpbXBsZW1lbnRhdGlvbiwgY2xvc2UgdG8gbm8tb3BcclxuZnVuY3Rpb24gZGVmaW5lQ29tcG9uZW50KG9wdGlvbnMpIHtcclxuICAgIHJldHVybiBpc0Z1bmN0aW9uKG9wdGlvbnMpID8geyBzZXR1cDogb3B0aW9ucywgbmFtZTogb3B0aW9ucy5uYW1lIH0gOiBvcHRpb25zO1xyXG59XG5cbmNvbnN0IGlzQXN5bmNXcmFwcGVyID0gKGkpID0+ICEhaS50eXBlLl9fYXN5bmNMb2FkZXI7XHJcbmZ1bmN0aW9uIGRlZmluZUFzeW5jQ29tcG9uZW50KHNvdXJjZSkge1xyXG4gICAgaWYgKGlzRnVuY3Rpb24oc291cmNlKSkge1xyXG4gICAgICAgIHNvdXJjZSA9IHsgbG9hZGVyOiBzb3VyY2UgfTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgbG9hZGVyLCBsb2FkaW5nQ29tcG9uZW50LCBlcnJvckNvbXBvbmVudCwgZGVsYXkgPSAyMDAsIHRpbWVvdXQsIC8vIHVuZGVmaW5lZCA9IG5ldmVyIHRpbWVzIG91dFxyXG4gICAgc3VzcGVuc2libGUgPSB0cnVlLCBvbkVycm9yOiB1c2VyT25FcnJvciB9ID0gc291cmNlO1xyXG4gICAgbGV0IHBlbmRpbmdSZXF1ZXN0ID0gbnVsbDtcclxuICAgIGxldCByZXNvbHZlZENvbXA7XHJcbiAgICBsZXQgcmV0cmllcyA9IDA7XHJcbiAgICBjb25zdCByZXRyeSA9ICgpID0+IHtcclxuICAgICAgICByZXRyaWVzKys7XHJcbiAgICAgICAgcGVuZGluZ1JlcXVlc3QgPSBudWxsO1xyXG4gICAgICAgIHJldHVybiBsb2FkKCk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgbG9hZCA9ICgpID0+IHtcclxuICAgICAgICBsZXQgdGhpc1JlcXVlc3Q7XHJcbiAgICAgICAgcmV0dXJuIChwZW5kaW5nUmVxdWVzdCB8fFxyXG4gICAgICAgICAgICAodGhpc1JlcXVlc3QgPSBwZW5kaW5nUmVxdWVzdCA9XHJcbiAgICAgICAgICAgICAgICBsb2FkZXIoKVxyXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGVyciA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyIDogbmV3IEVycm9yKFN0cmluZyhlcnIpKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodXNlck9uRXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJSZXRyeSA9ICgpID0+IHJlc29sdmUocmV0cnkoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1c2VyRmFpbCA9ICgpID0+IHJlamVjdChlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlck9uRXJyb3IoZXJyLCB1c2VyUmV0cnksIHVzZXJGYWlsLCByZXRyaWVzICsgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKGNvbXApID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpc1JlcXVlc3QgIT09IHBlbmRpbmdSZXF1ZXN0ICYmIHBlbmRpbmdSZXF1ZXN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwZW5kaW5nUmVxdWVzdDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhY29tcCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuKGBBc3luYyBjb21wb25lbnQgbG9hZGVyIHJlc29sdmVkIHRvIHVuZGVmaW5lZC4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgSWYgeW91IGFyZSB1c2luZyByZXRyeSgpLCBtYWtlIHN1cmUgdG8gcmV0dXJuIGl0cyByZXR1cm4gdmFsdWUuYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGludGVyb3AgbW9kdWxlIGRlZmF1bHRcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29tcCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY29tcC5fX2VzTW9kdWxlIHx8IGNvbXBbU3ltYm9sLnRvU3RyaW5nVGFnXSA9PT0gJ01vZHVsZScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXAgPSBjb21wLmRlZmF1bHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgY29tcCAmJiAhaXNPYmplY3QoY29tcCkgJiYgIWlzRnVuY3Rpb24oY29tcCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGFzeW5jIGNvbXBvbmVudCBsb2FkIHJlc3VsdDogJHtjb21wfWApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZENvbXAgPSBjb21wO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wO1xyXG4gICAgICAgICAgICAgICAgfSkpKTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gZGVmaW5lQ29tcG9uZW50KHtcclxuICAgICAgICBuYW1lOiAnQXN5bmNDb21wb25lbnRXcmFwcGVyJyxcclxuICAgICAgICBfX2FzeW5jTG9hZGVyOiBsb2FkLFxyXG4gICAgICAgIGdldCBfX2FzeW5jUmVzb2x2ZWQoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlZENvbXA7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzZXR1cCgpIHtcclxuICAgICAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBjdXJyZW50SW5zdGFuY2U7XHJcbiAgICAgICAgICAgIC8vIGFscmVhZHkgcmVzb2x2ZWRcclxuICAgICAgICAgICAgaWYgKHJlc29sdmVkQ29tcCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IGNyZWF0ZUlubmVyQ29tcChyZXNvbHZlZENvbXAsIGluc3RhbmNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBvbkVycm9yID0gKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcGVuZGluZ1JlcXVlc3QgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgaGFuZGxlRXJyb3IoZXJyLCBpbnN0YW5jZSwgMTMgLyogRXJyb3JDb2Rlcy5BU1lOQ19DT01QT05FTlRfTE9BREVSICovLCAhZXJyb3JDb21wb25lbnQgLyogZG8gbm90IHRocm93IGluIGRldiBpZiB1c2VyIHByb3ZpZGVkIGVycm9yIGNvbXBvbmVudCAqLyk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIC8vIHN1c3BlbnNlLWNvbnRyb2xsZWQgb3IgU1NSLlxyXG4gICAgICAgICAgICBpZiAoKHN1c3BlbnNpYmxlICYmIGluc3RhbmNlLnN1c3BlbnNlKSB8fFxyXG4gICAgICAgICAgICAgICAgKGlzSW5TU1JDb21wb25lbnRTZXR1cCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBsb2FkKClcclxuICAgICAgICAgICAgICAgICAgICAudGhlbihjb21wID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4gY3JlYXRlSW5uZXJDb21wKGNvbXAsIGluc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiBlcnJvckNvbXBvbmVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGNyZWF0ZVZOb2RlKGVycm9yQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGxvYWRlZCA9IHJlZihmYWxzZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gcmVmKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRlbGF5ZWQgPSByZWYoISFkZWxheSk7XHJcbiAgICAgICAgICAgIGlmIChkZWxheSkge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsYXllZC52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSwgZGVsYXkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aW1lb3V0ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghbG9hZGVkLnZhbHVlICYmICFlcnJvci52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnIgPSBuZXcgRXJyb3IoYEFzeW5jIGNvbXBvbmVudCB0aW1lZCBvdXQgYWZ0ZXIgJHt0aW1lb3V0fW1zLmApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkVycm9yKGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLnZhbHVlID0gZXJyO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sIHRpbWVvdXQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxvYWQoKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbG9hZGVkLnZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZS5wYXJlbnQgJiYgaXNLZWVwQWxpdmUoaW5zdGFuY2UucGFyZW50LnZub2RlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHBhcmVudCBpcyBrZWVwLWFsaXZlLCBmb3JjZSB1cGRhdGUgc28gdGhlIGxvYWRlZCBjb21wb25lbnQnc1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIG5hbWUgaXMgdGFrZW4gaW50byBhY2NvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgcXVldWVKb2IoaW5zdGFuY2UucGFyZW50LnVwZGF0ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIG9uRXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgICAgIGVycm9yLnZhbHVlID0gZXJyO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChsb2FkZWQudmFsdWUgJiYgcmVzb2x2ZWRDb21wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUlubmVyQ29tcChyZXNvbHZlZENvbXAsIGluc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVycm9yLnZhbHVlICYmIGVycm9yQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKGVycm9yQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvci52YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobG9hZGluZ0NvbXBvbmVudCAmJiAhZGVsYXllZC52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVWTm9kZShsb2FkaW5nQ29tcG9uZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVJbm5lckNvbXAoY29tcCwgeyB2bm9kZTogeyByZWYsIHByb3BzLCBjaGlsZHJlbiwgc2hhcGVGbGFnIH0sIHBhcmVudCB9KSB7XHJcbiAgICBjb25zdCB2bm9kZSA9IGNyZWF0ZVZOb2RlKGNvbXAsIHByb3BzLCBjaGlsZHJlbik7XHJcbiAgICAvLyBlbnN1cmUgaW5uZXIgY29tcG9uZW50IGluaGVyaXRzIHRoZSBhc3luYyB3cmFwcGVyJ3MgcmVmIG93bmVyXHJcbiAgICB2bm9kZS5yZWYgPSByZWY7XHJcbiAgICByZXR1cm4gdm5vZGU7XHJcbn1cblxuY29uc3QgaXNLZWVwQWxpdmUgPSAodm5vZGUpID0+IHZub2RlLnR5cGUuX19pc0tlZXBBbGl2ZTtcclxuY29uc3QgS2VlcEFsaXZlSW1wbCA9IHtcclxuICAgIG5hbWU6IGBLZWVwQWxpdmVgLFxyXG4gICAgLy8gTWFya2VyIGZvciBzcGVjaWFsIGhhbmRsaW5nIGluc2lkZSB0aGUgcmVuZGVyZXIuIFdlIGFyZSBub3QgdXNpbmcgYSA9PT1cclxuICAgIC8vIGNoZWNrIGRpcmVjdGx5IG9uIEtlZXBBbGl2ZSBpbiB0aGUgcmVuZGVyZXIsIGJlY2F1c2UgaW1wb3J0aW5nIGl0IGRpcmVjdGx5XHJcbiAgICAvLyB3b3VsZCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgdHJlZS1zaGFrZW4uXHJcbiAgICBfX2lzS2VlcEFsaXZlOiB0cnVlLFxyXG4gICAgcHJvcHM6IHtcclxuICAgICAgICBpbmNsdWRlOiBbU3RyaW5nLCBSZWdFeHAsIEFycmF5XSxcclxuICAgICAgICBleGNsdWRlOiBbU3RyaW5nLCBSZWdFeHAsIEFycmF5XSxcclxuICAgICAgICBtYXg6IFtTdHJpbmcsIE51bWJlcl1cclxuICAgIH0sXHJcbiAgICBzZXR1cChwcm9wcywgeyBzbG90cyB9KSB7XHJcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBnZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgICAgICAvLyBLZWVwQWxpdmUgY29tbXVuaWNhdGVzIHdpdGggdGhlIGluc3RhbnRpYXRlZCByZW5kZXJlciB2aWEgdGhlXHJcbiAgICAgICAgLy8gY3R4IHdoZXJlIHRoZSByZW5kZXJlciBwYXNzZXMgaW4gaXRzIGludGVybmFscyxcclxuICAgICAgICAvLyBhbmQgdGhlIEtlZXBBbGl2ZSBpbnN0YW5jZSBleHBvc2VzIGFjdGl2YXRlL2RlYWN0aXZhdGUgaW1wbGVtZW50YXRpb25zLlxyXG4gICAgICAgIC8vIFRoZSB3aG9sZSBwb2ludCBvZiB0aGlzIGlzIHRvIGF2b2lkIGltcG9ydGluZyBLZWVwQWxpdmUgZGlyZWN0bHkgaW4gdGhlXHJcbiAgICAgICAgLy8gcmVuZGVyZXIgdG8gZmFjaWxpdGF0ZSB0cmVlLXNoYWtpbmcuXHJcbiAgICAgICAgY29uc3Qgc2hhcmVkQ29udGV4dCA9IGluc3RhbmNlLmN0eDtcclxuICAgICAgICAvLyBpZiB0aGUgaW50ZXJuYWwgcmVuZGVyZXIgaXMgbm90IHJlZ2lzdGVyZWQsIGl0IGluZGljYXRlcyB0aGF0IHRoaXMgaXMgc2VydmVyLXNpZGUgcmVuZGVyaW5nLFxyXG4gICAgICAgIC8vIGZvciBLZWVwQWxpdmUsIHdlIGp1c3QgbmVlZCB0byByZW5kZXIgaXRzIGNoaWxkcmVuXHJcbiAgICAgICAgaWYgKCFzaGFyZWRDb250ZXh0LnJlbmRlcmVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHNsb3RzLmRlZmF1bHQgJiYgc2xvdHMuZGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuICYmIGNoaWxkcmVuLmxlbmd0aCA9PT0gMSA/IGNoaWxkcmVuWzBdIDogY2hpbGRyZW47XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGNhY2hlID0gbmV3IE1hcCgpO1xyXG4gICAgICAgIGNvbnN0IGtleXMgPSBuZXcgU2V0KCk7XHJcbiAgICAgICAgbGV0IGN1cnJlbnQgPSBudWxsO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlLl9fdl9jYWNoZSA9IGNhY2hlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBwYXJlbnRTdXNwZW5zZSA9IGluc3RhbmNlLnN1c3BlbnNlO1xyXG4gICAgICAgIGNvbnN0IHsgcmVuZGVyZXI6IHsgcDogcGF0Y2gsIG06IG1vdmUsIHVtOiBfdW5tb3VudCwgbzogeyBjcmVhdGVFbGVtZW50IH0gfSB9ID0gc2hhcmVkQ29udGV4dDtcclxuICAgICAgICBjb25zdCBzdG9yYWdlQ29udGFpbmVyID0gY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgc2hhcmVkQ29udGV4dC5hY3RpdmF0ZSA9ICh2bm9kZSwgY29udGFpbmVyLCBhbmNob3IsIGlzU1ZHLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW5zdGFuY2UgPSB2bm9kZS5jb21wb25lbnQ7XHJcbiAgICAgICAgICAgIG1vdmUodm5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCAwIC8qIE1vdmVUeXBlLkVOVEVSICovLCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgIC8vIGluIGNhc2UgcHJvcHMgaGF2ZSBjaGFuZ2VkXHJcbiAgICAgICAgICAgIHBhdGNoKGluc3RhbmNlLnZub2RlLCB2bm9kZSwgY29udGFpbmVyLCBhbmNob3IsIGluc3RhbmNlLCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHZub2RlLnNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmlzRGVhY3RpdmF0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZS5hKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlQXJyYXlGbnMoaW5zdGFuY2UuYSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2bm9kZUhvb2sgPSB2bm9kZS5wcm9wcyAmJiB2bm9kZS5wcm9wcy5vblZub2RlTW91bnRlZDtcclxuICAgICAgICAgICAgICAgIGlmICh2bm9kZUhvb2spIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBpbnN0YW5jZS5wYXJlbnQsIHZub2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIGNvbXBvbmVudHMgdHJlZVxyXG4gICAgICAgICAgICAgICAgZGV2dG9vbHNDb21wb25lbnRBZGRlZChpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIHNoYXJlZENvbnRleHQuZGVhY3RpdmF0ZSA9ICh2bm9kZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbnN0YW5jZSA9IHZub2RlLmNvbXBvbmVudDtcclxuICAgICAgICAgICAgbW92ZSh2bm9kZSwgc3RvcmFnZUNvbnRhaW5lciwgbnVsbCwgMSAvKiBNb3ZlVHlwZS5MRUFWRSAqLywgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlLmRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlQXJyYXlGbnMoaW5zdGFuY2UuZGEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3Qgdm5vZGVIb29rID0gdm5vZGUucHJvcHMgJiYgdm5vZGUucHJvcHMub25Wbm9kZVVubW91bnRlZDtcclxuICAgICAgICAgICAgICAgIGlmICh2bm9kZUhvb2spIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBpbnN0YW5jZS5wYXJlbnQsIHZub2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmlzRGVhY3RpdmF0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9LCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgY29tcG9uZW50cyB0cmVlXHJcbiAgICAgICAgICAgICAgICBkZXZ0b29sc0NvbXBvbmVudEFkZGVkKGluc3RhbmNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgZnVuY3Rpb24gdW5tb3VudCh2bm9kZSkge1xyXG4gICAgICAgICAgICAvLyByZXNldCB0aGUgc2hhcGVGbGFnIHNvIGl0IGNhbiBiZSBwcm9wZXJseSB1bm1vdW50ZWRcclxuICAgICAgICAgICAgcmVzZXRTaGFwZUZsYWcodm5vZGUpO1xyXG4gICAgICAgICAgICBfdW5tb3VudCh2bm9kZSwgaW5zdGFuY2UsIHBhcmVudFN1c3BlbnNlLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZnVuY3Rpb24gcHJ1bmVDYWNoZShmaWx0ZXIpIHtcclxuICAgICAgICAgICAgY2FjaGUuZm9yRWFjaCgodm5vZGUsIGtleSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IGdldENvbXBvbmVudE5hbWUodm5vZGUudHlwZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAobmFtZSAmJiAoIWZpbHRlciB8fCAhZmlsdGVyKG5hbWUpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBydW5lQ2FjaGVFbnRyeShrZXkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZnVuY3Rpb24gcHJ1bmVDYWNoZUVudHJ5KGtleSkge1xyXG4gICAgICAgICAgICBjb25zdCBjYWNoZWQgPSBjYWNoZS5nZXQoa2V5KTtcclxuICAgICAgICAgICAgaWYgKCFjdXJyZW50IHx8IGNhY2hlZC50eXBlICE9PSBjdXJyZW50LnR5cGUpIHtcclxuICAgICAgICAgICAgICAgIHVubW91bnQoY2FjaGVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjdXJyZW50IGFjdGl2ZSBpbnN0YW5jZSBzaG91bGQgbm8gbG9uZ2VyIGJlIGtlcHQtYWxpdmUuXHJcbiAgICAgICAgICAgICAgICAvLyB3ZSBjYW4ndCB1bm1vdW50IGl0IG5vdyBidXQgaXQgbWlnaHQgYmUgbGF0ZXIsIHNvIHJlc2V0IGl0cyBmbGFnIG5vdy5cclxuICAgICAgICAgICAgICAgIHJlc2V0U2hhcGVGbGFnKGN1cnJlbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhY2hlLmRlbGV0ZShrZXkpO1xyXG4gICAgICAgICAgICBrZXlzLmRlbGV0ZShrZXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBwcnVuZSBjYWNoZSBvbiBpbmNsdWRlL2V4Y2x1ZGUgcHJvcCBjaGFuZ2VcclxuICAgICAgICB3YXRjaCgoKSA9PiBbcHJvcHMuaW5jbHVkZSwgcHJvcHMuZXhjbHVkZV0sIChbaW5jbHVkZSwgZXhjbHVkZV0pID0+IHtcclxuICAgICAgICAgICAgaW5jbHVkZSAmJiBwcnVuZUNhY2hlKG5hbWUgPT4gbWF0Y2hlcyhpbmNsdWRlLCBuYW1lKSk7XHJcbiAgICAgICAgICAgIGV4Y2x1ZGUgJiYgcHJ1bmVDYWNoZShuYW1lID0+ICFtYXRjaGVzKGV4Y2x1ZGUsIG5hbWUpKTtcclxuICAgICAgICB9LCBcclxuICAgICAgICAvLyBwcnVuZSBwb3N0LXJlbmRlciBhZnRlciBgY3VycmVudGAgaGFzIGJlZW4gdXBkYXRlZFxyXG4gICAgICAgIHsgZmx1c2g6ICdwb3N0JywgZGVlcDogdHJ1ZSB9KTtcclxuICAgICAgICAvLyBjYWNoZSBzdWIgdHJlZSBhZnRlciByZW5kZXJcclxuICAgICAgICBsZXQgcGVuZGluZ0NhY2hlS2V5ID0gbnVsbDtcclxuICAgICAgICBjb25zdCBjYWNoZVN1YnRyZWUgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIGZpeCAjMTYyMSwgdGhlIHBlbmRpbmdDYWNoZUtleSBjb3VsZCBiZSAwXHJcbiAgICAgICAgICAgIGlmIChwZW5kaW5nQ2FjaGVLZXkgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgY2FjaGUuc2V0KHBlbmRpbmdDYWNoZUtleSwgZ2V0SW5uZXJDaGlsZChpbnN0YW5jZS5zdWJUcmVlKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIG9uTW91bnRlZChjYWNoZVN1YnRyZWUpO1xyXG4gICAgICAgIG9uVXBkYXRlZChjYWNoZVN1YnRyZWUpO1xyXG4gICAgICAgIG9uQmVmb3JlVW5tb3VudCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNhY2hlLmZvckVhY2goY2FjaGVkID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgc3ViVHJlZSwgc3VzcGVuc2UgfSA9IGluc3RhbmNlO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgdm5vZGUgPSBnZXRJbm5lckNoaWxkKHN1YlRyZWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNhY2hlZC50eXBlID09PSB2bm9kZS50eXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY3VycmVudCBpbnN0YW5jZSB3aWxsIGJlIHVubW91bnRlZCBhcyBwYXJ0IG9mIGtlZXAtYWxpdmUncyB1bm1vdW50XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzZXRTaGFwZUZsYWcodm5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGJ1dCBpbnZva2UgaXRzIGRlYWN0aXZhdGVkIGhvb2sgaGVyZVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhID0gdm5vZGUuY29tcG9uZW50LmRhO1xyXG4gICAgICAgICAgICAgICAgICAgIGRhICYmIHF1ZXVlUG9zdFJlbmRlckVmZmVjdChkYSwgc3VzcGVuc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHVubW91bnQoY2FjaGVkKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgcGVuZGluZ0NhY2hlS2V5ID0gbnVsbDtcclxuICAgICAgICAgICAgaWYgKCFzbG90cy5kZWZhdWx0KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHNsb3RzLmRlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3QgcmF3Vk5vZGUgPSBjaGlsZHJlblswXTtcclxuICAgICAgICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBLZWVwQWxpdmUgc2hvdWxkIGNvbnRhaW4gZXhhY3RseSBvbmUgY29tcG9uZW50IGNoaWxkLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY3VycmVudCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoIWlzVk5vZGUocmF3Vk5vZGUpIHx8XHJcbiAgICAgICAgICAgICAgICAoIShyYXdWTm9kZS5zaGFwZUZsYWcgJiA0IC8qIFNoYXBlRmxhZ3MuU1RBVEVGVUxfQ09NUE9ORU5UICovKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICEocmF3Vk5vZGUuc2hhcGVGbGFnICYgMTI4IC8qIFNoYXBlRmxhZ3MuU1VTUEVOU0UgKi8pKSkge1xyXG4gICAgICAgICAgICAgICAgY3VycmVudCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmF3Vk5vZGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IHZub2RlID0gZ2V0SW5uZXJDaGlsZChyYXdWTm9kZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbXAgPSB2bm9kZS50eXBlO1xyXG4gICAgICAgICAgICAvLyBmb3IgYXN5bmMgY29tcG9uZW50cywgbmFtZSBjaGVjayBzaG91bGQgYmUgYmFzZWQgaW4gaXRzIGxvYWRlZFxyXG4gICAgICAgICAgICAvLyBpbm5lciBjb21wb25lbnQgaWYgYXZhaWxhYmxlXHJcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBnZXRDb21wb25lbnROYW1lKGlzQXN5bmNXcmFwcGVyKHZub2RlKVxyXG4gICAgICAgICAgICAgICAgPyB2bm9kZS50eXBlLl9fYXN5bmNSZXNvbHZlZCB8fCB7fVxyXG4gICAgICAgICAgICAgICAgOiBjb21wKTtcclxuICAgICAgICAgICAgY29uc3QgeyBpbmNsdWRlLCBleGNsdWRlLCBtYXggfSA9IHByb3BzO1xyXG4gICAgICAgICAgICBpZiAoKGluY2x1ZGUgJiYgKCFuYW1lIHx8ICFtYXRjaGVzKGluY2x1ZGUsIG5hbWUpKSkgfHxcclxuICAgICAgICAgICAgICAgIChleGNsdWRlICYmIG5hbWUgJiYgbWF0Y2hlcyhleGNsdWRlLCBuYW1lKSkpIHtcclxuICAgICAgICAgICAgICAgIGN1cnJlbnQgPSB2bm9kZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiByYXdWTm9kZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBrZXkgPSB2bm9kZS5rZXkgPT0gbnVsbCA/IGNvbXAgOiB2bm9kZS5rZXk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlZFZOb2RlID0gY2FjaGUuZ2V0KGtleSk7XHJcbiAgICAgICAgICAgIC8vIGNsb25lIHZub2RlIGlmIGl0J3MgcmV1c2VkIGJlY2F1c2Ugd2UgYXJlIGdvaW5nIHRvIG11dGF0ZSBpdFxyXG4gICAgICAgICAgICBpZiAodm5vZGUuZWwpIHtcclxuICAgICAgICAgICAgICAgIHZub2RlID0gY2xvbmVWTm9kZSh2bm9kZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmF3Vk5vZGUuc2hhcGVGbGFnICYgMTI4IC8qIFNoYXBlRmxhZ3MuU1VTUEVOU0UgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICByYXdWTm9kZS5zc0NvbnRlbnQgPSB2bm9kZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyAjMTUxMyBpdCdzIHBvc3NpYmxlIGZvciB0aGUgcmV0dXJuZWQgdm5vZGUgdG8gYmUgY2xvbmVkIGR1ZSB0byBhdHRyXHJcbiAgICAgICAgICAgIC8vIGZhbGx0aHJvdWdoIG9yIHNjb3BlSWQsIHNvIHRoZSB2bm9kZSBoZXJlIG1heSBub3QgYmUgdGhlIGZpbmFsIHZub2RlXHJcbiAgICAgICAgICAgIC8vIHRoYXQgaXMgbW91bnRlZC4gSW5zdGVhZCBvZiBjYWNoaW5nIGl0IGRpcmVjdGx5LCB3ZSBzdG9yZSB0aGUgcGVuZGluZ1xyXG4gICAgICAgICAgICAvLyBrZXkgYW5kIGNhY2hlIGBpbnN0YW5jZS5zdWJUcmVlYCAodGhlIG5vcm1hbGl6ZWQgdm5vZGUpIGluXHJcbiAgICAgICAgICAgIC8vIGJlZm9yZU1vdW50L2JlZm9yZVVwZGF0ZSBob29rcy5cclxuICAgICAgICAgICAgcGVuZGluZ0NhY2hlS2V5ID0ga2V5O1xyXG4gICAgICAgICAgICBpZiAoY2FjaGVkVk5vZGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvcHkgb3ZlciBtb3VudGVkIHN0YXRlXHJcbiAgICAgICAgICAgICAgICB2bm9kZS5lbCA9IGNhY2hlZFZOb2RlLmVsO1xyXG4gICAgICAgICAgICAgICAgdm5vZGUuY29tcG9uZW50ID0gY2FjaGVkVk5vZGUuY29tcG9uZW50O1xyXG4gICAgICAgICAgICAgICAgaWYgKHZub2RlLnRyYW5zaXRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyByZWN1cnNpdmVseSB1cGRhdGUgdHJhbnNpdGlvbiBob29rcyBvbiBzdWJUcmVlXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VHJhbnNpdGlvbkhvb2tzKHZub2RlLCB2bm9kZS50cmFuc2l0aW9uKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIGF2b2lkIHZub2RlIGJlaW5nIG1vdW50ZWQgYXMgZnJlc2hcclxuICAgICAgICAgICAgICAgIHZub2RlLnNoYXBlRmxhZyB8PSA1MTIgLyogU2hhcGVGbGFncy5DT01QT05FTlRfS0VQVF9BTElWRSAqLztcclxuICAgICAgICAgICAgICAgIC8vIG1ha2UgdGhpcyBrZXkgdGhlIGZyZXNoZXN0XHJcbiAgICAgICAgICAgICAgICBrZXlzLmRlbGV0ZShrZXkpO1xyXG4gICAgICAgICAgICAgICAga2V5cy5hZGQoa2V5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGtleXMuYWRkKGtleSk7XHJcbiAgICAgICAgICAgICAgICAvLyBwcnVuZSBvbGRlc3QgZW50cnlcclxuICAgICAgICAgICAgICAgIGlmIChtYXggJiYga2V5cy5zaXplID4gcGFyc2VJbnQobWF4LCAxMCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBwcnVuZUNhY2hlRW50cnkoa2V5cy52YWx1ZXMoKS5uZXh0KCkudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGF2b2lkIHZub2RlIGJlaW5nIHVubW91bnRlZFxyXG4gICAgICAgICAgICB2bm9kZS5zaGFwZUZsYWcgfD0gMjU2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UX1NIT1VMRF9LRUVQX0FMSVZFICovO1xyXG4gICAgICAgICAgICBjdXJyZW50ID0gdm5vZGU7XHJcbiAgICAgICAgICAgIHJldHVybiBpc1N1c3BlbnNlKHJhd1ZOb2RlLnR5cGUpID8gcmF3Vk5vZGUgOiB2bm9kZTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59O1xyXG4vLyBleHBvcnQgdGhlIHB1YmxpYyB0eXBlIGZvciBoL3RzeCBpbmZlcmVuY2VcclxuLy8gYWxzbyB0byBhdm9pZCBpbmxpbmUgaW1wb3J0KCkgaW4gZ2VuZXJhdGVkIGQudHMgZmlsZXNcclxuY29uc3QgS2VlcEFsaXZlID0gS2VlcEFsaXZlSW1wbDtcclxuZnVuY3Rpb24gbWF0Y2hlcyhwYXR0ZXJuLCBuYW1lKSB7XHJcbiAgICBpZiAoaXNBcnJheShwYXR0ZXJuKSkge1xyXG4gICAgICAgIHJldHVybiBwYXR0ZXJuLnNvbWUoKHApID0+IG1hdGNoZXMocCwgbmFtZSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNTdHJpbmcocGF0dGVybikpIHtcclxuICAgICAgICByZXR1cm4gcGF0dGVybi5zcGxpdCgnLCcpLmluY2x1ZGVzKG5hbWUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocGF0dGVybi50ZXN0KSB7XHJcbiAgICAgICAgcmV0dXJuIHBhdHRlcm4udGVzdChuYW1lKTtcclxuICAgIH1cclxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cclxuZnVuY3Rpb24gb25BY3RpdmF0ZWQoaG9vaywgdGFyZ2V0KSB7XHJcbiAgICByZWdpc3RlcktlZXBBbGl2ZUhvb2soaG9vaywgXCJhXCIgLyogTGlmZWN5Y2xlSG9va3MuQUNUSVZBVEVEICovLCB0YXJnZXQpO1xyXG59XHJcbmZ1bmN0aW9uIG9uRGVhY3RpdmF0ZWQoaG9vaywgdGFyZ2V0KSB7XHJcbiAgICByZWdpc3RlcktlZXBBbGl2ZUhvb2soaG9vaywgXCJkYVwiIC8qIExpZmVjeWNsZUhvb2tzLkRFQUNUSVZBVEVEICovLCB0YXJnZXQpO1xyXG59XHJcbmZ1bmN0aW9uIHJlZ2lzdGVyS2VlcEFsaXZlSG9vayhob29rLCB0eXBlLCB0YXJnZXQgPSBjdXJyZW50SW5zdGFuY2UpIHtcclxuICAgIC8vIGNhY2hlIHRoZSBkZWFjdGl2YXRlIGJyYW5jaCBjaGVjayB3cmFwcGVyIGZvciBpbmplY3RlZCBob29rcyBzbyB0aGUgc2FtZVxyXG4gICAgLy8gaG9vayBjYW4gYmUgcHJvcGVybHkgZGVkdXBlZCBieSB0aGUgc2NoZWR1bGVyLiBcIl9fd2RjXCIgc3RhbmRzIGZvciBcIndpdGhcclxuICAgIC8vIGRlYWN0aXZhdGlvbiBjaGVja1wiLlxyXG4gICAgY29uc3Qgd3JhcHBlZEhvb2sgPSBob29rLl9fd2RjIHx8XHJcbiAgICAgICAgKGhvb2suX193ZGMgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIG9ubHkgZmlyZSB0aGUgaG9vayBpZiB0aGUgdGFyZ2V0IGluc3RhbmNlIGlzIE5PVCBpbiBhIGRlYWN0aXZhdGVkIGJyYW5jaC5cclxuICAgICAgICAgICAgbGV0IGN1cnJlbnQgPSB0YXJnZXQ7XHJcbiAgICAgICAgICAgIHdoaWxlIChjdXJyZW50KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudC5pc0RlYWN0aXZhdGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQucGFyZW50O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBob29rKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICBpbmplY3RIb29rKHR5cGUsIHdyYXBwZWRIb29rLCB0YXJnZXQpO1xyXG4gICAgLy8gSW4gYWRkaXRpb24gdG8gcmVnaXN0ZXJpbmcgaXQgb24gdGhlIHRhcmdldCBpbnN0YW5jZSwgd2Ugd2FsayB1cCB0aGUgcGFyZW50XHJcbiAgICAvLyBjaGFpbiBhbmQgcmVnaXN0ZXIgaXQgb24gYWxsIGFuY2VzdG9yIGluc3RhbmNlcyB0aGF0IGFyZSBrZWVwLWFsaXZlIHJvb3RzLlxyXG4gICAgLy8gVGhpcyBhdm9pZHMgdGhlIG5lZWQgdG8gd2FsayB0aGUgZW50aXJlIGNvbXBvbmVudCB0cmVlIHdoZW4gaW52b2tpbmcgdGhlc2VcclxuICAgIC8vIGhvb2tzLCBhbmQgbW9yZSBpbXBvcnRhbnRseSwgYXZvaWRzIHRoZSBuZWVkIHRvIHRyYWNrIGNoaWxkIGNvbXBvbmVudHMgaW5cclxuICAgIC8vIGFycmF5cy5cclxuICAgIGlmICh0YXJnZXQpIHtcclxuICAgICAgICBsZXQgY3VycmVudCA9IHRhcmdldC5wYXJlbnQ7XHJcbiAgICAgICAgd2hpbGUgKGN1cnJlbnQgJiYgY3VycmVudC5wYXJlbnQpIHtcclxuICAgICAgICAgICAgaWYgKGlzS2VlcEFsaXZlKGN1cnJlbnQucGFyZW50LnZub2RlKSkge1xyXG4gICAgICAgICAgICAgICAgaW5qZWN0VG9LZWVwQWxpdmVSb290KHdyYXBwZWRIb29rLCB0eXBlLCB0YXJnZXQsIGN1cnJlbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaW5qZWN0VG9LZWVwQWxpdmVSb290KGhvb2ssIHR5cGUsIHRhcmdldCwga2VlcEFsaXZlUm9vdCkge1xyXG4gICAgLy8gaW5qZWN0SG9vayB3cmFwcyB0aGUgb3JpZ2luYWwgZm9yIGVycm9yIGhhbmRsaW5nLCBzbyBtYWtlIHN1cmUgdG8gcmVtb3ZlXHJcbiAgICAvLyB0aGUgd3JhcHBlZCB2ZXJzaW9uLlxyXG4gICAgY29uc3QgaW5qZWN0ZWQgPSBpbmplY3RIb29rKHR5cGUsIGhvb2ssIGtlZXBBbGl2ZVJvb3QsIHRydWUgLyogcHJlcGVuZCAqLyk7XHJcbiAgICBvblVubW91bnRlZCgoKSA9PiB7XHJcbiAgICAgICAgcmVtb3ZlKGtlZXBBbGl2ZVJvb3RbdHlwZV0sIGluamVjdGVkKTtcclxuICAgIH0sIHRhcmdldCk7XHJcbn1cclxuZnVuY3Rpb24gcmVzZXRTaGFwZUZsYWcodm5vZGUpIHtcclxuICAgIGxldCBzaGFwZUZsYWcgPSB2bm9kZS5zaGFwZUZsYWc7XHJcbiAgICBpZiAoc2hhcGVGbGFnICYgMjU2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UX1NIT1VMRF9LRUVQX0FMSVZFICovKSB7XHJcbiAgICAgICAgc2hhcGVGbGFnIC09IDI1NiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVF9TSE9VTERfS0VFUF9BTElWRSAqLztcclxuICAgIH1cclxuICAgIGlmIChzaGFwZUZsYWcgJiA1MTIgLyogU2hhcGVGbGFncy5DT01QT05FTlRfS0VQVF9BTElWRSAqLykge1xyXG4gICAgICAgIHNoYXBlRmxhZyAtPSA1MTIgLyogU2hhcGVGbGFncy5DT01QT05FTlRfS0VQVF9BTElWRSAqLztcclxuICAgIH1cclxuICAgIHZub2RlLnNoYXBlRmxhZyA9IHNoYXBlRmxhZztcclxufVxyXG5mdW5jdGlvbiBnZXRJbm5lckNoaWxkKHZub2RlKSB7XHJcbiAgICByZXR1cm4gdm5vZGUuc2hhcGVGbGFnICYgMTI4IC8qIFNoYXBlRmxhZ3MuU1VTUEVOU0UgKi8gPyB2bm9kZS5zc0NvbnRlbnQgOiB2bm9kZTtcclxufVxuXG5mdW5jdGlvbiBpbmplY3RIb29rKHR5cGUsIGhvb2ssIHRhcmdldCA9IGN1cnJlbnRJbnN0YW5jZSwgcHJlcGVuZCA9IGZhbHNlKSB7XHJcbiAgICBpZiAodGFyZ2V0KSB7XHJcbiAgICAgICAgY29uc3QgaG9va3MgPSB0YXJnZXRbdHlwZV0gfHwgKHRhcmdldFt0eXBlXSA9IFtdKTtcclxuICAgICAgICAvLyBjYWNoZSB0aGUgZXJyb3IgaGFuZGxpbmcgd3JhcHBlciBmb3IgaW5qZWN0ZWQgaG9va3Mgc28gdGhlIHNhbWUgaG9va1xyXG4gICAgICAgIC8vIGNhbiBiZSBwcm9wZXJseSBkZWR1cGVkIGJ5IHRoZSBzY2hlZHVsZXIuIFwiX193ZWhcIiBzdGFuZHMgZm9yIFwid2l0aCBlcnJvclxyXG4gICAgICAgIC8vIGhhbmRsaW5nXCIuXHJcbiAgICAgICAgY29uc3Qgd3JhcHBlZEhvb2sgPSBob29rLl9fd2VoIHx8XHJcbiAgICAgICAgICAgIChob29rLl9fd2VoID0gKC4uLmFyZ3MpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQuaXNVbm1vdW50ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBkaXNhYmxlIHRyYWNraW5nIGluc2lkZSBhbGwgbGlmZWN5Y2xlIGhvb2tzXHJcbiAgICAgICAgICAgICAgICAvLyBzaW5jZSB0aGV5IGNhbiBwb3RlbnRpYWxseSBiZSBjYWxsZWQgaW5zaWRlIGVmZmVjdHMuXHJcbiAgICAgICAgICAgICAgICBwYXVzZVRyYWNraW5nKCk7XHJcbiAgICAgICAgICAgICAgICAvLyBTZXQgY3VycmVudEluc3RhbmNlIGR1cmluZyBob29rIGludm9jYXRpb24uXHJcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGFzc3VtZXMgdGhlIGhvb2sgZG9lcyBub3Qgc3luY2hyb25vdXNseSB0cmlnZ2VyIG90aGVyIGhvb2tzLCB3aGljaFxyXG4gICAgICAgICAgICAgICAgLy8gY2FuIG9ubHkgYmUgZmFsc2Ugd2hlbiB0aGUgdXNlciBkb2VzIHNvbWV0aGluZyByZWFsbHkgZnVua3kuXHJcbiAgICAgICAgICAgICAgICBzZXRDdXJyZW50SW5zdGFuY2UodGFyZ2V0KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGhvb2ssIHRhcmdldCwgdHlwZSwgYXJncyk7XHJcbiAgICAgICAgICAgICAgICB1bnNldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgICAgICAgICAgICAgcmVzZXRUcmFja2luZygpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKHByZXBlbmQpIHtcclxuICAgICAgICAgICAgaG9va3MudW5zaGlmdCh3cmFwcGVkSG9vayk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBob29rcy5wdXNoKHdyYXBwZWRIb29rKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHdyYXBwZWRIb29rO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgY29uc3QgYXBpTmFtZSA9IHRvSGFuZGxlcktleShFcnJvclR5cGVTdHJpbmdzW3R5cGVdLnJlcGxhY2UoLyBob29rJC8sICcnKSk7XHJcbiAgICAgICAgd2FybihgJHthcGlOYW1lfSBpcyBjYWxsZWQgd2hlbiB0aGVyZSBpcyBubyBhY3RpdmUgY29tcG9uZW50IGluc3RhbmNlIHRvIGJlIGAgK1xyXG4gICAgICAgICAgICBgYXNzb2NpYXRlZCB3aXRoLiBgICtcclxuICAgICAgICAgICAgYExpZmVjeWNsZSBpbmplY3Rpb24gQVBJcyBjYW4gb25seSBiZSB1c2VkIGR1cmluZyBleGVjdXRpb24gb2Ygc2V0dXAoKS5gICtcclxuICAgICAgICAgICAgKGAgSWYgeW91IGFyZSB1c2luZyBhc3luYyBzZXR1cCgpLCBtYWtlIHN1cmUgdG8gcmVnaXN0ZXIgbGlmZWN5Y2xlIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGBob29rcyBiZWZvcmUgdGhlIGZpcnN0IGF3YWl0IHN0YXRlbWVudC5gXHJcbiAgICAgICAgICAgICAgICApKTtcclxuICAgIH1cclxufVxyXG5jb25zdCBjcmVhdGVIb29rID0gKGxpZmVjeWNsZSkgPT4gKGhvb2ssIHRhcmdldCA9IGN1cnJlbnRJbnN0YW5jZSkgPT4gXHJcbi8vIHBvc3QtY3JlYXRlIGxpZmVjeWNsZSByZWdpc3RyYXRpb25zIGFyZSBub29wcyBkdXJpbmcgU1NSIChleGNlcHQgZm9yIHNlcnZlclByZWZldGNoKVxyXG4oIWlzSW5TU1JDb21wb25lbnRTZXR1cCB8fCBsaWZlY3ljbGUgPT09IFwic3BcIiAvKiBMaWZlY3ljbGVIb29rcy5TRVJWRVJfUFJFRkVUQ0ggKi8pICYmXHJcbiAgICBpbmplY3RIb29rKGxpZmVjeWNsZSwgaG9vaywgdGFyZ2V0KTtcclxuY29uc3Qgb25CZWZvcmVNb3VudCA9IGNyZWF0ZUhvb2soXCJibVwiIC8qIExpZmVjeWNsZUhvb2tzLkJFRk9SRV9NT1VOVCAqLyk7XHJcbmNvbnN0IG9uTW91bnRlZCA9IGNyZWF0ZUhvb2soXCJtXCIgLyogTGlmZWN5Y2xlSG9va3MuTU9VTlRFRCAqLyk7XHJcbmNvbnN0IG9uQmVmb3JlVXBkYXRlID0gY3JlYXRlSG9vayhcImJ1XCIgLyogTGlmZWN5Y2xlSG9va3MuQkVGT1JFX1VQREFURSAqLyk7XHJcbmNvbnN0IG9uVXBkYXRlZCA9IGNyZWF0ZUhvb2soXCJ1XCIgLyogTGlmZWN5Y2xlSG9va3MuVVBEQVRFRCAqLyk7XHJcbmNvbnN0IG9uQmVmb3JlVW5tb3VudCA9IGNyZWF0ZUhvb2soXCJidW1cIiAvKiBMaWZlY3ljbGVIb29rcy5CRUZPUkVfVU5NT1VOVCAqLyk7XHJcbmNvbnN0IG9uVW5tb3VudGVkID0gY3JlYXRlSG9vayhcInVtXCIgLyogTGlmZWN5Y2xlSG9va3MuVU5NT1VOVEVEICovKTtcclxuY29uc3Qgb25TZXJ2ZXJQcmVmZXRjaCA9IGNyZWF0ZUhvb2soXCJzcFwiIC8qIExpZmVjeWNsZUhvb2tzLlNFUlZFUl9QUkVGRVRDSCAqLyk7XHJcbmNvbnN0IG9uUmVuZGVyVHJpZ2dlcmVkID0gY3JlYXRlSG9vayhcInJ0Z1wiIC8qIExpZmVjeWNsZUhvb2tzLlJFTkRFUl9UUklHR0VSRUQgKi8pO1xyXG5jb25zdCBvblJlbmRlclRyYWNrZWQgPSBjcmVhdGVIb29rKFwicnRjXCIgLyogTGlmZWN5Y2xlSG9va3MuUkVOREVSX1RSQUNLRUQgKi8pO1xyXG5mdW5jdGlvbiBvbkVycm9yQ2FwdHVyZWQoaG9vaywgdGFyZ2V0ID0gY3VycmVudEluc3RhbmNlKSB7XHJcbiAgICBpbmplY3RIb29rKFwiZWNcIiAvKiBMaWZlY3ljbGVIb29rcy5FUlJPUl9DQVBUVVJFRCAqLywgaG9vaywgdGFyZ2V0KTtcclxufVxuXG4vKipcclxuUnVudGltZSBoZWxwZXIgZm9yIGFwcGx5aW5nIGRpcmVjdGl2ZXMgdG8gYSB2bm9kZS4gRXhhbXBsZSB1c2FnZTpcclxuXG5jb25zdCBjb21wID0gcmVzb2x2ZUNvbXBvbmVudCgnY29tcCcpXHJcbmNvbnN0IGZvbyA9IHJlc29sdmVEaXJlY3RpdmUoJ2ZvbycpXHJcbmNvbnN0IGJhciA9IHJlc29sdmVEaXJlY3RpdmUoJ2JhcicpXHJcblxucmV0dXJuIHdpdGhEaXJlY3RpdmVzKGgoY29tcCksIFtcclxuICBbZm9vLCB0aGlzLnhdLFxyXG4gIFtiYXIsIHRoaXMueV1cclxuXSlcclxuKi9cclxuZnVuY3Rpb24gdmFsaWRhdGVEaXJlY3RpdmVOYW1lKG5hbWUpIHtcclxuICAgIGlmIChpc0J1aWx0SW5EaXJlY3RpdmUobmFtZSkpIHtcclxuICAgICAgICB3YXJuKCdEbyBub3QgdXNlIGJ1aWx0LWluIGRpcmVjdGl2ZSBpZHMgYXMgY3VzdG9tIGRpcmVjdGl2ZSBpZDogJyArIG5hbWUpO1xyXG4gICAgfVxyXG59XHJcbi8qKlxyXG4gKiBBZGRzIGRpcmVjdGl2ZXMgdG8gYSBWTm9kZS5cclxuICovXHJcbmZ1bmN0aW9uIHdpdGhEaXJlY3RpdmVzKHZub2RlLCBkaXJlY3RpdmVzKSB7XHJcbiAgICBjb25zdCBpbnRlcm5hbEluc3RhbmNlID0gY3VycmVudFJlbmRlcmluZ0luc3RhbmNlO1xyXG4gICAgaWYgKGludGVybmFsSW5zdGFuY2UgPT09IG51bGwpIHtcclxuICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgd2Fybihgd2l0aERpcmVjdGl2ZXMgY2FuIG9ubHkgYmUgdXNlZCBpbnNpZGUgcmVuZGVyIGZ1bmN0aW9ucy5gKTtcclxuICAgICAgICByZXR1cm4gdm5vZGU7XHJcbiAgICB9XHJcbiAgICBjb25zdCBpbnN0YW5jZSA9IGdldEV4cG9zZVByb3h5KGludGVybmFsSW5zdGFuY2UpIHx8XHJcbiAgICAgICAgaW50ZXJuYWxJbnN0YW5jZS5wcm94eTtcclxuICAgIGNvbnN0IGJpbmRpbmdzID0gdm5vZGUuZGlycyB8fCAodm5vZGUuZGlycyA9IFtdKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlyZWN0aXZlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBbZGlyLCB2YWx1ZSwgYXJnLCBtb2RpZmllcnMgPSBFTVBUWV9PQkpdID0gZGlyZWN0aXZlc1tpXTtcclxuICAgICAgICBpZiAoaXNGdW5jdGlvbihkaXIpKSB7XHJcbiAgICAgICAgICAgIGRpciA9IHtcclxuICAgICAgICAgICAgICAgIG1vdW50ZWQ6IGRpcixcclxuICAgICAgICAgICAgICAgIHVwZGF0ZWQ6IGRpclxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGlyLmRlZXApIHtcclxuICAgICAgICAgICAgdHJhdmVyc2UodmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBiaW5kaW5ncy5wdXNoKHtcclxuICAgICAgICAgICAgZGlyLFxyXG4gICAgICAgICAgICBpbnN0YW5jZSxcclxuICAgICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICAgIG9sZFZhbHVlOiB2b2lkIDAsXHJcbiAgICAgICAgICAgIGFyZyxcclxuICAgICAgICAgICAgbW9kaWZpZXJzXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdm5vZGU7XHJcbn1cclxuZnVuY3Rpb24gaW52b2tlRGlyZWN0aXZlSG9vayh2bm9kZSwgcHJldlZOb2RlLCBpbnN0YW5jZSwgbmFtZSkge1xyXG4gICAgY29uc3QgYmluZGluZ3MgPSB2bm9kZS5kaXJzO1xyXG4gICAgY29uc3Qgb2xkQmluZGluZ3MgPSBwcmV2Vk5vZGUgJiYgcHJldlZOb2RlLmRpcnM7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJpbmRpbmdzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgYmluZGluZyA9IGJpbmRpbmdzW2ldO1xyXG4gICAgICAgIGlmIChvbGRCaW5kaW5ncykge1xyXG4gICAgICAgICAgICBiaW5kaW5nLm9sZFZhbHVlID0gb2xkQmluZGluZ3NbaV0udmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBob29rID0gYmluZGluZy5kaXJbbmFtZV07XHJcbiAgICAgICAgaWYgKGhvb2spIHtcclxuICAgICAgICAgICAgLy8gZGlzYWJsZSB0cmFja2luZyBpbnNpZGUgYWxsIGxpZmVjeWNsZSBob29rc1xyXG4gICAgICAgICAgICAvLyBzaW5jZSB0aGV5IGNhbiBwb3RlbnRpYWxseSBiZSBjYWxsZWQgaW5zaWRlIGVmZmVjdHMuXHJcbiAgICAgICAgICAgIHBhdXNlVHJhY2tpbmcoKTtcclxuICAgICAgICAgICAgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoaG9vaywgaW5zdGFuY2UsIDggLyogRXJyb3JDb2Rlcy5ESVJFQ1RJVkVfSE9PSyAqLywgW1xyXG4gICAgICAgICAgICAgICAgdm5vZGUuZWwsXHJcbiAgICAgICAgICAgICAgICBiaW5kaW5nLFxyXG4gICAgICAgICAgICAgICAgdm5vZGUsXHJcbiAgICAgICAgICAgICAgICBwcmV2Vk5vZGVcclxuICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgIHJlc2V0VHJhY2tpbmcoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cblxuY29uc3QgQ09NUE9ORU5UUyA9ICdjb21wb25lbnRzJztcclxuY29uc3QgRElSRUNUSVZFUyA9ICdkaXJlY3RpdmVzJztcclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiByZXNvbHZlQ29tcG9uZW50KG5hbWUsIG1heWJlU2VsZlJlZmVyZW5jZSkge1xyXG4gICAgcmV0dXJuIHJlc29sdmVBc3NldChDT01QT05FTlRTLCBuYW1lLCB0cnVlLCBtYXliZVNlbGZSZWZlcmVuY2UpIHx8IG5hbWU7XHJcbn1cclxuY29uc3QgTlVMTF9EWU5BTUlDX0NPTVBPTkVOVCA9IFN5bWJvbCgpO1xyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIHJlc29sdmVEeW5hbWljQ29tcG9uZW50KGNvbXBvbmVudCkge1xyXG4gICAgaWYgKGlzU3RyaW5nKGNvbXBvbmVudCkpIHtcclxuICAgICAgICByZXR1cm4gcmVzb2x2ZUFzc2V0KENPTVBPTkVOVFMsIGNvbXBvbmVudCwgZmFsc2UpIHx8IGNvbXBvbmVudDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIGludmFsaWQgdHlwZXMgd2lsbCBmYWxsdGhyb3VnaCB0byBjcmVhdGVWTm9kZSBhbmQgcmFpc2Ugd2FybmluZ1xyXG4gICAgICAgIHJldHVybiAoY29tcG9uZW50IHx8IE5VTExfRFlOQU1JQ19DT01QT05FTlQpO1xyXG4gICAgfVxyXG59XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gcmVzb2x2ZURpcmVjdGl2ZShuYW1lKSB7XHJcbiAgICByZXR1cm4gcmVzb2x2ZUFzc2V0KERJUkVDVElWRVMsIG5hbWUpO1xyXG59XHJcbi8vIGltcGxlbWVudGF0aW9uXHJcbmZ1bmN0aW9uIHJlc29sdmVBc3NldCh0eXBlLCBuYW1lLCB3YXJuTWlzc2luZyA9IHRydWUsIG1heWJlU2VsZlJlZmVyZW5jZSA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBpbnN0YW5jZSA9IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSB8fCBjdXJyZW50SW5zdGFuY2U7XHJcbiAgICBpZiAoaW5zdGFuY2UpIHtcclxuICAgICAgICBjb25zdCBDb21wb25lbnQgPSBpbnN0YW5jZS50eXBlO1xyXG4gICAgICAgIC8vIGV4cGxpY2l0IHNlbGYgbmFtZSBoYXMgaGlnaGVzdCBwcmlvcml0eVxyXG4gICAgICAgIGlmICh0eXBlID09PSBDT01QT05FTlRTKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGZOYW1lID0gZ2V0Q29tcG9uZW50TmFtZShDb21wb25lbnQsIGZhbHNlIC8qIGRvIG5vdCBpbmNsdWRlIGluZmVycmVkIG5hbWUgdG8gYXZvaWQgYnJlYWtpbmcgZXhpc3RpbmcgY29kZSAqLyk7XHJcbiAgICAgICAgICAgIGlmIChzZWxmTmFtZSAmJlxyXG4gICAgICAgICAgICAgICAgKHNlbGZOYW1lID09PSBuYW1lIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZk5hbWUgPT09IGNhbWVsaXplKG5hbWUpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZk5hbWUgPT09IGNhcGl0YWxpemUoY2FtZWxpemUobmFtZSkpKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBvbmVudDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByZXMgPSBcclxuICAgICAgICAvLyBsb2NhbCByZWdpc3RyYXRpb25cclxuICAgICAgICAvLyBjaGVjayBpbnN0YW5jZVt0eXBlXSBmaXJzdCB3aGljaCBpcyByZXNvbHZlZCBmb3Igb3B0aW9ucyBBUElcclxuICAgICAgICByZXNvbHZlKGluc3RhbmNlW3R5cGVdIHx8IENvbXBvbmVudFt0eXBlXSwgbmFtZSkgfHxcclxuICAgICAgICAgICAgLy8gZ2xvYmFsIHJlZ2lzdHJhdGlvblxyXG4gICAgICAgICAgICByZXNvbHZlKGluc3RhbmNlLmFwcENvbnRleHRbdHlwZV0sIG5hbWUpO1xyXG4gICAgICAgIGlmICghcmVzICYmIG1heWJlU2VsZlJlZmVyZW5jZSkge1xyXG4gICAgICAgICAgICAvLyBmYWxsYmFjayB0byBpbXBsaWNpdCBzZWxmLXJlZmVyZW5jZVxyXG4gICAgICAgICAgICByZXR1cm4gQ29tcG9uZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHdhcm5NaXNzaW5nICYmICFyZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgZXh0cmEgPSB0eXBlID09PSBDT01QT05FTlRTXHJcbiAgICAgICAgICAgICAgICA/IGBcXG5JZiB0aGlzIGlzIGEgbmF0aXZlIGN1c3RvbSBlbGVtZW50LCBtYWtlIHN1cmUgdG8gZXhjbHVkZSBpdCBmcm9tIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGBjb21wb25lbnQgcmVzb2x1dGlvbiB2aWEgY29tcGlsZXJPcHRpb25zLmlzQ3VzdG9tRWxlbWVudC5gXHJcbiAgICAgICAgICAgICAgICA6IGBgO1xyXG4gICAgICAgICAgICB3YXJuKGBGYWlsZWQgdG8gcmVzb2x2ZSAke3R5cGUuc2xpY2UoMCwgLTEpfTogJHtuYW1lfSR7ZXh0cmF9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB3YXJuKGByZXNvbHZlJHtjYXBpdGFsaXplKHR5cGUuc2xpY2UoMCwgLTEpKX0gYCArXHJcbiAgICAgICAgICAgIGBjYW4gb25seSBiZSB1c2VkIGluIHJlbmRlcigpIG9yIHNldHVwKCkuYCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gcmVzb2x2ZShyZWdpc3RyeSwgbmFtZSkge1xyXG4gICAgcmV0dXJuIChyZWdpc3RyeSAmJlxyXG4gICAgICAgIChyZWdpc3RyeVtuYW1lXSB8fFxyXG4gICAgICAgICAgICByZWdpc3RyeVtjYW1lbGl6ZShuYW1lKV0gfHxcclxuICAgICAgICAgICAgcmVnaXN0cnlbY2FwaXRhbGl6ZShjYW1lbGl6ZShuYW1lKSldKSk7XHJcbn1cblxuLyoqXHJcbiAqIEFjdHVhbCBpbXBsZW1lbnRhdGlvblxyXG4gKi9cclxuZnVuY3Rpb24gcmVuZGVyTGlzdChzb3VyY2UsIHJlbmRlckl0ZW0sIGNhY2hlLCBpbmRleCkge1xyXG4gICAgbGV0IHJldDtcclxuICAgIGNvbnN0IGNhY2hlZCA9IChjYWNoZSAmJiBjYWNoZVtpbmRleF0pO1xyXG4gICAgaWYgKGlzQXJyYXkoc291cmNlKSB8fCBpc1N0cmluZyhzb3VyY2UpKSB7XHJcbiAgICAgICAgcmV0ID0gbmV3IEFycmF5KHNvdXJjZS5sZW5ndGgpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gc291cmNlLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICByZXRbaV0gPSByZW5kZXJJdGVtKHNvdXJjZVtpXSwgaSwgdW5kZWZpbmVkLCBjYWNoZWQgJiYgY2FjaGVkW2ldKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0eXBlb2Ygc291cmNlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIU51bWJlci5pc0ludGVnZXIoc291cmNlKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBUaGUgdi1mb3IgcmFuZ2UgZXhwZWN0IGFuIGludGVnZXIgdmFsdWUgYnV0IGdvdCAke3NvdXJjZX0uYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldCA9IG5ldyBBcnJheShzb3VyY2UpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc291cmNlOyBpKyspIHtcclxuICAgICAgICAgICAgcmV0W2ldID0gcmVuZGVySXRlbShpICsgMSwgaSwgdW5kZWZpbmVkLCBjYWNoZWQgJiYgY2FjaGVkW2ldKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc09iamVjdChzb3VyY2UpKSB7XHJcbiAgICAgICAgaWYgKHNvdXJjZVtTeW1ib2wuaXRlcmF0b3JdKSB7XHJcbiAgICAgICAgICAgIHJldCA9IEFycmF5LmZyb20oc291cmNlLCAoaXRlbSwgaSkgPT4gcmVuZGVySXRlbShpdGVtLCBpLCB1bmRlZmluZWQsIGNhY2hlZCAmJiBjYWNoZWRbaV0pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xyXG4gICAgICAgICAgICByZXQgPSBuZXcgQXJyYXkoa2V5cy5sZW5ndGgpO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IGtleXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBrZXlzW2ldO1xyXG4gICAgICAgICAgICAgICAgcmV0W2ldID0gcmVuZGVySXRlbShzb3VyY2Vba2V5XSwga2V5LCBpLCBjYWNoZWQgJiYgY2FjaGVkW2ldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJldCA9IFtdO1xyXG4gICAgfVxyXG4gICAgaWYgKGNhY2hlKSB7XHJcbiAgICAgICAgY2FjaGVbaW5kZXhdID0gcmV0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldDtcclxufVxuXG4vKipcclxuICogQ29tcGlsZXIgcnVudGltZSBoZWxwZXIgZm9yIGNyZWF0aW5nIGR5bmFtaWMgc2xvdHMgb2JqZWN0XHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVTbG90cyhzbG90cywgZHluYW1pY1Nsb3RzKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGR5bmFtaWNTbG90cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHNsb3QgPSBkeW5hbWljU2xvdHNbaV07XHJcbiAgICAgICAgLy8gYXJyYXkgb2YgZHluYW1pYyBzbG90IGdlbmVyYXRlZCBieSA8dGVtcGxhdGUgdi1mb3I9XCIuLi5cIiAjWy4uLl0+XHJcbiAgICAgICAgaWYgKGlzQXJyYXkoc2xvdCkpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBzbG90Lmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICBzbG90c1tzbG90W2pdLm5hbWVdID0gc2xvdFtqXS5mbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChzbG90KSB7XHJcbiAgICAgICAgICAgIC8vIGNvbmRpdGlvbmFsIHNpbmdsZSBzbG90IGdlbmVyYXRlZCBieSA8dGVtcGxhdGUgdi1pZj1cIi4uLlwiICNmb28+XHJcbiAgICAgICAgICAgIHNsb3RzW3Nsb3QubmFtZV0gPSBzbG90LmtleVxyXG4gICAgICAgICAgICAgICAgPyAoLi4uYXJncykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IHNsb3QuZm4oLi4uYXJncyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLmtleSA9IHNsb3Qua2V5O1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA6IHNsb3QuZm47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHNsb3RzO1xyXG59XG5cbi8qKlxyXG4gKiBDb21waWxlciBydW50aW1lIGhlbHBlciBmb3IgcmVuZGVyaW5nIGA8c2xvdC8+YFxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gcmVuZGVyU2xvdChzbG90cywgbmFtZSwgcHJvcHMgPSB7fSwgXHJcbi8vIHRoaXMgaXMgbm90IGEgdXNlci1mYWNpbmcgZnVuY3Rpb24sIHNvIHRoZSBmYWxsYmFjayBpcyBhbHdheXMgZ2VuZXJhdGVkIGJ5XHJcbi8vIHRoZSBjb21waWxlciBhbmQgZ3VhcmFudGVlZCB0byBiZSBhIGZ1bmN0aW9uIHJldHVybmluZyBhbiBhcnJheVxyXG5mYWxsYmFjaywgbm9TbG90dGVkKSB7XHJcbiAgICBpZiAoY3VycmVudFJlbmRlcmluZ0luc3RhbmNlLmlzQ0UgfHxcclxuICAgICAgICAoY3VycmVudFJlbmRlcmluZ0luc3RhbmNlLnBhcmVudCAmJlxyXG4gICAgICAgICAgICBpc0FzeW5jV3JhcHBlcihjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UucGFyZW50KSAmJlxyXG4gICAgICAgICAgICBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UucGFyZW50LmlzQ0UpKSB7XHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKCdzbG90JywgbmFtZSA9PT0gJ2RlZmF1bHQnID8gbnVsbCA6IHsgbmFtZSB9LCBmYWxsYmFjayAmJiBmYWxsYmFjaygpKTtcclxuICAgIH1cclxuICAgIGxldCBzbG90ID0gc2xvdHNbbmFtZV07XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHNsb3QgJiYgc2xvdC5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgd2FybihgU1NSLW9wdGltaXplZCBzbG90IGZ1bmN0aW9uIGRldGVjdGVkIGluIGEgbm9uLVNTUi1vcHRpbWl6ZWQgcmVuZGVyIGAgK1xyXG4gICAgICAgICAgICBgZnVuY3Rpb24uIFlvdSBuZWVkIHRvIG1hcmsgdGhpcyBjb21wb25lbnQgd2l0aCAkZHluYW1pYy1zbG90cyBpbiB0aGUgYCArXHJcbiAgICAgICAgICAgIGBwYXJlbnQgdGVtcGxhdGUuYCk7XHJcbiAgICAgICAgc2xvdCA9ICgpID0+IFtdO1xyXG4gICAgfVxyXG4gICAgLy8gYSBjb21waWxlZCBzbG90IGRpc2FibGVzIGJsb2NrIHRyYWNraW5nIGJ5IGRlZmF1bHQgdG8gYXZvaWQgbWFudWFsXHJcbiAgICAvLyBpbnZvY2F0aW9uIGludGVyZmVyaW5nIHdpdGggdGVtcGxhdGUtYmFzZWQgYmxvY2sgdHJhY2tpbmcsIGJ1dCBpblxyXG4gICAgLy8gYHJlbmRlclNsb3RgIHdlIGNhbiBiZSBzdXJlIHRoYXQgaXQncyB0ZW1wbGF0ZS1iYXNlZCBzbyB3ZSBjYW4gZm9yY2VcclxuICAgIC8vIGVuYWJsZSBpdC5cclxuICAgIGlmIChzbG90ICYmIHNsb3QuX2MpIHtcclxuICAgICAgICBzbG90Ll9kID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBvcGVuQmxvY2soKTtcclxuICAgIGNvbnN0IHZhbGlkU2xvdENvbnRlbnQgPSBzbG90ICYmIGVuc3VyZVZhbGlkVk5vZGUoc2xvdChwcm9wcykpO1xyXG4gICAgY29uc3QgcmVuZGVyZWQgPSBjcmVhdGVCbG9jayhGcmFnbWVudCwge1xyXG4gICAgICAgIGtleTogcHJvcHMua2V5IHx8XHJcbiAgICAgICAgICAgIC8vIHNsb3QgY29udGVudCBhcnJheSBvZiBhIGR5bmFtaWMgY29uZGl0aW9uYWwgc2xvdCBtYXkgaGF2ZSBhIGJyYW5jaFxyXG4gICAgICAgICAgICAvLyBrZXkgYXR0YWNoZWQgaW4gdGhlIGBjcmVhdGVTbG90c2AgaGVscGVyLCByZXNwZWN0IHRoYXRcclxuICAgICAgICAgICAgKHZhbGlkU2xvdENvbnRlbnQgJiYgdmFsaWRTbG90Q29udGVudC5rZXkpIHx8XHJcbiAgICAgICAgICAgIGBfJHtuYW1lfWBcclxuICAgIH0sIHZhbGlkU2xvdENvbnRlbnQgfHwgKGZhbGxiYWNrID8gZmFsbGJhY2soKSA6IFtdKSwgdmFsaWRTbG90Q29udGVudCAmJiBzbG90cy5fID09PSAxIC8qIFNsb3RGbGFncy5TVEFCTEUgKi9cclxuICAgICAgICA/IDY0IC8qIFBhdGNoRmxhZ3MuU1RBQkxFX0ZSQUdNRU5UICovXHJcbiAgICAgICAgOiAtMiAvKiBQYXRjaEZsYWdzLkJBSUwgKi8pO1xyXG4gICAgaWYgKCFub1Nsb3R0ZWQgJiYgcmVuZGVyZWQuc2NvcGVJZCkge1xyXG4gICAgICAgIHJlbmRlcmVkLnNsb3RTY29wZUlkcyA9IFtyZW5kZXJlZC5zY29wZUlkICsgJy1zJ107XHJcbiAgICB9XHJcbiAgICBpZiAoc2xvdCAmJiBzbG90Ll9jKSB7XHJcbiAgICAgICAgc2xvdC5fZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVuZGVyZWQ7XHJcbn1cclxuZnVuY3Rpb24gZW5zdXJlVmFsaWRWTm9kZSh2bm9kZXMpIHtcclxuICAgIHJldHVybiB2bm9kZXMuc29tZShjaGlsZCA9PiB7XHJcbiAgICAgICAgaWYgKCFpc1ZOb2RlKGNoaWxkKSlcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IENvbW1lbnQpXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gRnJhZ21lbnQgJiZcclxuICAgICAgICAgICAgIWVuc3VyZVZhbGlkVk5vZGUoY2hpbGQuY2hpbGRyZW4pKVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9KVxyXG4gICAgICAgID8gdm5vZGVzXHJcbiAgICAgICAgOiBudWxsO1xyXG59XG5cbi8qKlxyXG4gKiBGb3IgcHJlZml4aW5nIGtleXMgaW4gdi1vbj1cIm9ialwiIHdpdGggXCJvblwiXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiB0b0hhbmRsZXJzKG9iaiwgcHJlc2VydmVDYXNlSWZOZWNlc3NhcnkpIHtcclxuICAgIGNvbnN0IHJldCA9IHt9O1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaXNPYmplY3Qob2JqKSkge1xyXG4gICAgICAgIHdhcm4oYHYtb24gd2l0aCBubyBhcmd1bWVudCBleHBlY3RzIGFuIG9iamVjdCB2YWx1ZS5gKTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XHJcbiAgICAgICAgcmV0W3ByZXNlcnZlQ2FzZUlmTmVjZXNzYXJ5ICYmIC9bQS1aXS8udGVzdChrZXkpXHJcbiAgICAgICAgICAgID8gYG9uOiR7a2V5fWBcclxuICAgICAgICAgICAgOiB0b0hhbmRsZXJLZXkoa2V5KV0gPSBvYmpba2V5XTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXQ7XHJcbn1cblxuLyoqXHJcbiAqICMyNDM3IEluIFZ1ZSAzLCBmdW5jdGlvbmFsIGNvbXBvbmVudHMgZG8gbm90IGhhdmUgYSBwdWJsaWMgaW5zdGFuY2UgcHJveHkgYnV0XHJcbiAqIHRoZXkgZXhpc3QgaW4gdGhlIGludGVybmFsIHBhcmVudCBjaGFpbi4gRm9yIGNvZGUgdGhhdCByZWxpZXMgb24gdHJhdmVyc2luZ1xyXG4gKiBwdWJsaWMgJHBhcmVudCBjaGFpbnMsIHNraXAgZnVuY3Rpb25hbCBvbmVzIGFuZCBnbyB0byB0aGUgcGFyZW50IGluc3RlYWQuXHJcbiAqL1xyXG5jb25zdCBnZXRQdWJsaWNJbnN0YW5jZSA9IChpKSA9PiB7XHJcbiAgICBpZiAoIWkpXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICBpZiAoaXNTdGF0ZWZ1bENvbXBvbmVudChpKSlcclxuICAgICAgICByZXR1cm4gZ2V0RXhwb3NlUHJveHkoaSkgfHwgaS5wcm94eTtcclxuICAgIHJldHVybiBnZXRQdWJsaWNJbnN0YW5jZShpLnBhcmVudCk7XHJcbn07XHJcbmNvbnN0IHB1YmxpY1Byb3BlcnRpZXNNYXAgPSBcclxuLy8gTW92ZSBQVVJFIG1hcmtlciB0byBuZXcgbGluZSB0byB3b3JrYXJvdW5kIGNvbXBpbGVyIGRpc2NhcmRpbmcgaXRcclxuLy8gZHVlIHRvIHR5cGUgYW5ub3RhdGlvblxyXG4vKiNfX1BVUkVfXyovIGV4dGVuZChPYmplY3QuY3JlYXRlKG51bGwpLCB7XHJcbiAgICAkOiBpID0+IGksXHJcbiAgICAkZWw6IGkgPT4gaS52bm9kZS5lbCxcclxuICAgICRkYXRhOiBpID0+IGkuZGF0YSxcclxuICAgICRwcm9wczogaSA9PiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gc2hhbGxvd1JlYWRvbmx5KGkucHJvcHMpIDogaS5wcm9wcyksXHJcbiAgICAkYXR0cnM6IGkgPT4gKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IHNoYWxsb3dSZWFkb25seShpLmF0dHJzKSA6IGkuYXR0cnMpLFxyXG4gICAgJHNsb3RzOiBpID0+ICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBzaGFsbG93UmVhZG9ubHkoaS5zbG90cykgOiBpLnNsb3RzKSxcclxuICAgICRyZWZzOiBpID0+ICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBzaGFsbG93UmVhZG9ubHkoaS5yZWZzKSA6IGkucmVmcyksXHJcbiAgICAkcGFyZW50OiBpID0+IGdldFB1YmxpY0luc3RhbmNlKGkucGFyZW50KSxcclxuICAgICRyb290OiBpID0+IGdldFB1YmxpY0luc3RhbmNlKGkucm9vdCksXHJcbiAgICAkZW1pdDogaSA9PiBpLmVtaXQsXHJcbiAgICAkb3B0aW9uczogaSA9PiAoX19WVUVfT1BUSU9OU19BUElfXyA/IHJlc29sdmVNZXJnZWRPcHRpb25zKGkpIDogaS50eXBlKSxcclxuICAgICRmb3JjZVVwZGF0ZTogaSA9PiBpLmYgfHwgKGkuZiA9ICgpID0+IHF1ZXVlSm9iKGkudXBkYXRlKSksXHJcbiAgICAkbmV4dFRpY2s6IGkgPT4gaS5uIHx8IChpLm4gPSBuZXh0VGljay5iaW5kKGkucHJveHkpKSxcclxuICAgICR3YXRjaDogaSA9PiAoX19WVUVfT1BUSU9OU19BUElfXyA/IGluc3RhbmNlV2F0Y2guYmluZChpKSA6IE5PT1ApXHJcbn0pO1xyXG5jb25zdCBpc1Jlc2VydmVkUHJlZml4ID0gKGtleSkgPT4ga2V5ID09PSAnXycgfHwga2V5ID09PSAnJCc7XHJcbmNvbnN0IFB1YmxpY0luc3RhbmNlUHJveHlIYW5kbGVycyA9IHtcclxuICAgIGdldCh7IF86IGluc3RhbmNlIH0sIGtleSkge1xyXG4gICAgICAgIGNvbnN0IHsgY3R4LCBzZXR1cFN0YXRlLCBkYXRhLCBwcm9wcywgYWNjZXNzQ2FjaGUsIHR5cGUsIGFwcENvbnRleHQgfSA9IGluc3RhbmNlO1xyXG4gICAgICAgIC8vIGZvciBpbnRlcm5hbCBmb3JtYXR0ZXJzIHRvIGtub3cgdGhhdCB0aGlzIGlzIGEgVnVlIGluc3RhbmNlXHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBrZXkgPT09ICdfX2lzVnVlJykge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gcHJpb3JpdGl6ZSA8c2NyaXB0IHNldHVwPiBiaW5kaW5ncyBkdXJpbmcgZGV2LlxyXG4gICAgICAgIC8vIHRoaXMgYWxsb3dzIGV2ZW4gcHJvcGVydGllcyB0aGF0IHN0YXJ0IHdpdGggXyBvciAkIHRvIGJlIHVzZWQgLSBzbyB0aGF0XHJcbiAgICAgICAgLy8gaXQgYWxpZ25zIHdpdGggdGhlIHByb2R1Y3Rpb24gYmVoYXZpb3Igd2hlcmUgdGhlIHJlbmRlciBmbiBpcyBpbmxpbmVkIGFuZFxyXG4gICAgICAgIC8vIGluZGVlZCBoYXMgYWNjZXNzIHRvIGFsbCBkZWNsYXJlZCB2YXJpYWJsZXMuXHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICBzZXR1cFN0YXRlICE9PSBFTVBUWV9PQkogJiZcclxuICAgICAgICAgICAgc2V0dXBTdGF0ZS5fX2lzU2NyaXB0U2V0dXAgJiZcclxuICAgICAgICAgICAgaGFzT3duKHNldHVwU3RhdGUsIGtleSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHNldHVwU3RhdGVba2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gZGF0YSAvIHByb3BzIC8gY3R4XHJcbiAgICAgICAgLy8gVGhpcyBnZXR0ZXIgZ2V0cyBjYWxsZWQgZm9yIGV2ZXJ5IHByb3BlcnR5IGFjY2VzcyBvbiB0aGUgcmVuZGVyIGNvbnRleHRcclxuICAgICAgICAvLyBkdXJpbmcgcmVuZGVyIGFuZCBpcyBhIG1ham9yIGhvdHNwb3QuIFRoZSBtb3N0IGV4cGVuc2l2ZSBwYXJ0IG9mIHRoaXNcclxuICAgICAgICAvLyBpcyB0aGUgbXVsdGlwbGUgaGFzT3duKCkgY2FsbHMuIEl0J3MgbXVjaCBmYXN0ZXIgdG8gZG8gYSBzaW1wbGUgcHJvcGVydHlcclxuICAgICAgICAvLyBhY2Nlc3Mgb24gYSBwbGFpbiBvYmplY3QsIHNvIHdlIHVzZSBhbiBhY2Nlc3NDYWNoZSBvYmplY3QgKHdpdGggbnVsbFxyXG4gICAgICAgIC8vIHByb3RvdHlwZSkgdG8gbWVtb2l6ZSB3aGF0IGFjY2VzcyB0eXBlIGEga2V5IGNvcnJlc3BvbmRzIHRvLlxyXG4gICAgICAgIGxldCBub3JtYWxpemVkUHJvcHM7XHJcbiAgICAgICAgaWYgKGtleVswXSAhPT0gJyQnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG4gPSBhY2Nlc3NDYWNoZVtrZXldO1xyXG4gICAgICAgICAgICBpZiAobiAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKG4pIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDEgLyogQWNjZXNzVHlwZXMuU0VUVVAgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXR1cFN0YXRlW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyIC8qIEFjY2Vzc1R5cGVzLkRBVEEgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0IC8qIEFjY2Vzc1R5cGVzLkNPTlRFWFQgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdHhba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDMgLyogQWNjZXNzVHlwZXMuUFJPUFMgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wc1trZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGRlZmF1bHQ6IGp1c3QgZmFsbHRocm91Z2hcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChzZXR1cFN0YXRlICE9PSBFTVBUWV9PQkogJiYgaGFzT3duKHNldHVwU3RhdGUsIGtleSkpIHtcclxuICAgICAgICAgICAgICAgIGFjY2Vzc0NhY2hlW2tleV0gPSAxIC8qIEFjY2Vzc1R5cGVzLlNFVFVQICovO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNldHVwU3RhdGVba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChkYXRhICE9PSBFTVBUWV9PQkogJiYgaGFzT3duKGRhdGEsIGtleSkpIHtcclxuICAgICAgICAgICAgICAgIGFjY2Vzc0NhY2hlW2tleV0gPSAyIC8qIEFjY2Vzc1R5cGVzLkRBVEEgKi87XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YVtrZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAvLyBvbmx5IGNhY2hlIG90aGVyIHByb3BlcnRpZXMgd2hlbiBpbnN0YW5jZSBoYXMgZGVjbGFyZWQgKHRodXMgc3RhYmxlKVxyXG4gICAgICAgICAgICAvLyBwcm9wc1xyXG4gICAgICAgICAgICAobm9ybWFsaXplZFByb3BzID0gaW5zdGFuY2UucHJvcHNPcHRpb25zWzBdKSAmJlxyXG4gICAgICAgICAgICAgICAgaGFzT3duKG5vcm1hbGl6ZWRQcm9wcywga2V5KSkge1xyXG4gICAgICAgICAgICAgICAgYWNjZXNzQ2FjaGVba2V5XSA9IDMgLyogQWNjZXNzVHlwZXMuUFJPUFMgKi87XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHNba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChjdHggIT09IEVNUFRZX09CSiAmJiBoYXNPd24oY3R4LCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICBhY2Nlc3NDYWNoZVtrZXldID0gNCAvKiBBY2Nlc3NUeXBlcy5DT05URVhUICovO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGN0eFtrZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKCFfX1ZVRV9PUFRJT05TX0FQSV9fIHx8IHNob3VsZENhY2hlQWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICBhY2Nlc3NDYWNoZVtrZXldID0gMCAvKiBBY2Nlc3NUeXBlcy5PVEhFUiAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBwdWJsaWNHZXR0ZXIgPSBwdWJsaWNQcm9wZXJ0aWVzTWFwW2tleV07XHJcbiAgICAgICAgbGV0IGNzc01vZHVsZSwgZ2xvYmFsUHJvcGVydGllcztcclxuICAgICAgICAvLyBwdWJsaWMgJHh4eCBwcm9wZXJ0aWVzXHJcbiAgICAgICAgaWYgKHB1YmxpY0dldHRlcikge1xyXG4gICAgICAgICAgICBpZiAoa2V5ID09PSAnJGF0dHJzJykge1xyXG4gICAgICAgICAgICAgICAgdHJhY2soaW5zdGFuY2UsIFwiZ2V0XCIgLyogVHJhY2tPcFR5cGVzLkdFVCAqLywga2V5KTtcclxuICAgICAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBtYXJrQXR0cnNBY2Nlc3NlZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBwdWJsaWNHZXR0ZXIoaW5zdGFuY2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChcclxuICAgICAgICAvLyBjc3MgbW9kdWxlIChpbmplY3RlZCBieSB2dWUtbG9hZGVyKVxyXG4gICAgICAgIChjc3NNb2R1bGUgPSB0eXBlLl9fY3NzTW9kdWxlcykgJiZcclxuICAgICAgICAgICAgKGNzc01vZHVsZSA9IGNzc01vZHVsZVtrZXldKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gY3NzTW9kdWxlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChjdHggIT09IEVNUFRZX09CSiAmJiBoYXNPd24oY3R4LCBrZXkpKSB7XHJcbiAgICAgICAgICAgIC8vIHVzZXIgbWF5IHNldCBjdXN0b20gcHJvcGVydGllcyB0byBgdGhpc2AgdGhhdCBzdGFydCB3aXRoIGAkYFxyXG4gICAgICAgICAgICBhY2Nlc3NDYWNoZVtrZXldID0gNCAvKiBBY2Nlc3NUeXBlcy5DT05URVhUICovO1xyXG4gICAgICAgICAgICByZXR1cm4gY3R4W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKFxyXG4gICAgICAgIC8vIGdsb2JhbCBwcm9wZXJ0aWVzXHJcbiAgICAgICAgKChnbG9iYWxQcm9wZXJ0aWVzID0gYXBwQ29udGV4dC5jb25maWcuZ2xvYmFsUHJvcGVydGllcyksXHJcbiAgICAgICAgICAgIGhhc093bihnbG9iYWxQcm9wZXJ0aWVzLCBrZXkpKSkge1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2xvYmFsUHJvcGVydGllc1trZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UgJiZcclxuICAgICAgICAgICAgKCFpc1N0cmluZyhrZXkpIHx8XHJcbiAgICAgICAgICAgICAgICAvLyAjMTA5MSBhdm9pZCBpbnRlcm5hbCBpc1JlZi9pc1ZOb2RlIGNoZWNrcyBvbiBjb21wb25lbnQgaW5zdGFuY2UgbGVhZGluZ1xyXG4gICAgICAgICAgICAgICAgLy8gdG8gaW5maW5pdGUgd2FybmluZyBsb29wXHJcbiAgICAgICAgICAgICAgICBrZXkuaW5kZXhPZignX192JykgIT09IDApKSB7XHJcbiAgICAgICAgICAgIGlmIChkYXRhICE9PSBFTVBUWV9PQkogJiYgaXNSZXNlcnZlZFByZWZpeChrZXlbMF0pICYmIGhhc093bihkYXRhLCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBQcm9wZXJ0eSAke0pTT04uc3RyaW5naWZ5KGtleSl9IG11c3QgYmUgYWNjZXNzZWQgdmlhICRkYXRhIGJlY2F1c2UgaXQgc3RhcnRzIHdpdGggYSByZXNlcnZlZCBgICtcclxuICAgICAgICAgICAgICAgICAgICBgY2hhcmFjdGVyIChcIiRcIiBvciBcIl9cIikgYW5kIGlzIG5vdCBwcm94aWVkIG9uIHRoZSByZW5kZXIgY29udGV4dC5gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChpbnN0YW5jZSA9PT0gY3VycmVudFJlbmRlcmluZ0luc3RhbmNlKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBQcm9wZXJ0eSAke0pTT04uc3RyaW5naWZ5KGtleSl9IHdhcyBhY2Nlc3NlZCBkdXJpbmcgcmVuZGVyIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGBidXQgaXMgbm90IGRlZmluZWQgb24gaW5zdGFuY2UuYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgc2V0KHsgXzogaW5zdGFuY2UgfSwga2V5LCB2YWx1ZSkge1xyXG4gICAgICAgIGNvbnN0IHsgZGF0YSwgc2V0dXBTdGF0ZSwgY3R4IH0gPSBpbnN0YW5jZTtcclxuICAgICAgICBpZiAoc2V0dXBTdGF0ZSAhPT0gRU1QVFlfT0JKICYmIGhhc093bihzZXR1cFN0YXRlLCBrZXkpKSB7XHJcbiAgICAgICAgICAgIHNldHVwU3RhdGVba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZGF0YSAhPT0gRU1QVFlfT0JKICYmIGhhc093bihkYXRhLCBrZXkpKSB7XHJcbiAgICAgICAgICAgIGRhdGFba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaGFzT3duKGluc3RhbmNlLnByb3BzLCBrZXkpKSB7XHJcbiAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgd2FybihgQXR0ZW1wdGluZyB0byBtdXRhdGUgcHJvcCBcIiR7a2V5fVwiLiBQcm9wcyBhcmUgcmVhZG9ubHkuYCwgaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChrZXlbMF0gPT09ICckJyAmJiBrZXkuc2xpY2UoMSkgaW4gaW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICB3YXJuKGBBdHRlbXB0aW5nIHRvIG11dGF0ZSBwdWJsaWMgcHJvcGVydHkgXCIke2tleX1cIi4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYFByb3BlcnRpZXMgc3RhcnRpbmcgd2l0aCAkIGFyZSByZXNlcnZlZCBhbmQgcmVhZG9ubHkuYCwgaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGtleSBpbiBpbnN0YW5jZS5hcHBDb250ZXh0LmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3R4LCBrZXksIHtcclxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjdHhba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSxcclxuICAgIGhhcyh7IF86IHsgZGF0YSwgc2V0dXBTdGF0ZSwgYWNjZXNzQ2FjaGUsIGN0eCwgYXBwQ29udGV4dCwgcHJvcHNPcHRpb25zIH0gfSwga2V5KSB7XHJcbiAgICAgICAgbGV0IG5vcm1hbGl6ZWRQcm9wcztcclxuICAgICAgICByZXR1cm4gKCEhYWNjZXNzQ2FjaGVba2V5XSB8fFxyXG4gICAgICAgICAgICAoZGF0YSAhPT0gRU1QVFlfT0JKICYmIGhhc093bihkYXRhLCBrZXkpKSB8fFxyXG4gICAgICAgICAgICAoc2V0dXBTdGF0ZSAhPT0gRU1QVFlfT0JKICYmIGhhc093bihzZXR1cFN0YXRlLCBrZXkpKSB8fFxyXG4gICAgICAgICAgICAoKG5vcm1hbGl6ZWRQcm9wcyA9IHByb3BzT3B0aW9uc1swXSkgJiYgaGFzT3duKG5vcm1hbGl6ZWRQcm9wcywga2V5KSkgfHxcclxuICAgICAgICAgICAgaGFzT3duKGN0eCwga2V5KSB8fFxyXG4gICAgICAgICAgICBoYXNPd24ocHVibGljUHJvcGVydGllc01hcCwga2V5KSB8fFxyXG4gICAgICAgICAgICBoYXNPd24oYXBwQ29udGV4dC5jb25maWcuZ2xvYmFsUHJvcGVydGllcywga2V5KSk7XHJcbiAgICB9LFxyXG4gICAgZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIGRlc2NyaXB0b3IpIHtcclxuICAgICAgICBpZiAoZGVzY3JpcHRvci5nZXQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAvLyBpbnZhbGlkYXRlIGtleSBjYWNoZSBvZiBhIGdldHRlciBiYXNlZCBwcm9wZXJ0eSAjNTQxN1xyXG4gICAgICAgICAgICB0YXJnZXQuXy5hY2Nlc3NDYWNoZVtrZXldID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaGFzT3duKGRlc2NyaXB0b3IsICd2YWx1ZScpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0KHRhcmdldCwga2V5LCBkZXNjcmlwdG9yLnZhbHVlLCBudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIGRlc2NyaXB0b3IpO1xyXG4gICAgfVxyXG59O1xyXG5pZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFmYWxzZSkge1xyXG4gICAgUHVibGljSW5zdGFuY2VQcm94eUhhbmRsZXJzLm93bktleXMgPSAodGFyZ2V0KSA9PiB7XHJcbiAgICAgICAgd2FybihgQXZvaWQgYXBwIGxvZ2ljIHRoYXQgcmVsaWVzIG9uIGVudW1lcmF0aW5nIGtleXMgb24gYSBjb21wb25lbnQgaW5zdGFuY2UuIGAgK1xyXG4gICAgICAgICAgICBgVGhlIGtleXMgd2lsbCBiZSBlbXB0eSBpbiBwcm9kdWN0aW9uIG1vZGUgdG8gYXZvaWQgcGVyZm9ybWFuY2Ugb3ZlcmhlYWQuYCk7XHJcbiAgICAgICAgcmV0dXJuIFJlZmxlY3Qub3duS2V5cyh0YXJnZXQpO1xyXG4gICAgfTtcclxufVxyXG5jb25zdCBSdW50aW1lQ29tcGlsZWRQdWJsaWNJbnN0YW5jZVByb3h5SGFuZGxlcnMgPSAvKiNfX1BVUkVfXyovIGV4dGVuZCh7fSwgUHVibGljSW5zdGFuY2VQcm94eUhhbmRsZXJzLCB7XHJcbiAgICBnZXQodGFyZ2V0LCBrZXkpIHtcclxuICAgICAgICAvLyBmYXN0IHBhdGggZm9yIHVuc2NvcGFibGVzIHdoZW4gdXNpbmcgYHdpdGhgIGJsb2NrXHJcbiAgICAgICAgaWYgKGtleSA9PT0gU3ltYm9sLnVuc2NvcGFibGVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFB1YmxpY0luc3RhbmNlUHJveHlIYW5kbGVycy5nZXQodGFyZ2V0LCBrZXksIHRhcmdldCk7XHJcbiAgICB9LFxyXG4gICAgaGFzKF8sIGtleSkge1xyXG4gICAgICAgIGNvbnN0IGhhcyA9IGtleVswXSAhPT0gJ18nICYmICFpc0dsb2JhbGx5V2hpdGVsaXN0ZWQoa2V5KTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFoYXMgJiYgUHVibGljSW5zdGFuY2VQcm94eUhhbmRsZXJzLmhhcyhfLCBrZXkpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYFByb3BlcnR5ICR7SlNPTi5zdHJpbmdpZnkoa2V5KX0gc2hvdWxkIG5vdCBzdGFydCB3aXRoIF8gd2hpY2ggaXMgYSByZXNlcnZlZCBwcmVmaXggZm9yIFZ1ZSBpbnRlcm5hbHMuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBoYXM7XHJcbiAgICB9XHJcbn0pO1xyXG4vLyBkZXYgb25seVxyXG4vLyBJbiBkZXYgbW9kZSwgdGhlIHByb3h5IHRhcmdldCBleHBvc2VzIHRoZSBzYW1lIHByb3BlcnRpZXMgYXMgc2VlbiBvbiBgdGhpc2BcclxuLy8gZm9yIGVhc2llciBjb25zb2xlIGluc3BlY3Rpb24uIEluIHByb2QgbW9kZSBpdCB3aWxsIGJlIGFuIGVtcHR5IG9iamVjdCBzb1xyXG4vLyB0aGVzZSBwcm9wZXJ0aWVzIGRlZmluaXRpb25zIGNhbiBiZSBza2lwcGVkLlxyXG5mdW5jdGlvbiBjcmVhdGVEZXZSZW5kZXJDb250ZXh0KGluc3RhbmNlKSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSB7fTtcclxuICAgIC8vIGV4cG9zZSBpbnRlcm5hbCBpbnN0YW5jZSBmb3IgcHJveHkgaGFuZGxlcnNcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGBfYCwge1xyXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcclxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgICAgICBnZXQ6ICgpID0+IGluc3RhbmNlXHJcbiAgICB9KTtcclxuICAgIC8vIGV4cG9zZSBwdWJsaWMgcHJvcGVydGllc1xyXG4gICAgT2JqZWN0LmtleXMocHVibGljUHJvcGVydGllc01hcCkuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xyXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBnZXQ6ICgpID0+IHB1YmxpY1Byb3BlcnRpZXNNYXBba2V5XShpbnN0YW5jZSksXHJcbiAgICAgICAgICAgIC8vIGludGVyY2VwdGVkIGJ5IHRoZSBwcm94eSBzbyBubyBuZWVkIGZvciBpbXBsZW1lbnRhdGlvbixcclxuICAgICAgICAgICAgLy8gYnV0IG5lZWRlZCB0byBwcmV2ZW50IHNldCBlcnJvcnNcclxuICAgICAgICAgICAgc2V0OiBOT09QXHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0YXJnZXQ7XHJcbn1cclxuLy8gZGV2IG9ubHlcclxuZnVuY3Rpb24gZXhwb3NlUHJvcHNPblJlbmRlckNvbnRleHQoaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IHsgY3R4LCBwcm9wc09wdGlvbnM6IFtwcm9wc09wdGlvbnNdIH0gPSBpbnN0YW5jZTtcclxuICAgIGlmIChwcm9wc09wdGlvbnMpIHtcclxuICAgICAgICBPYmplY3Qua2V5cyhwcm9wc09wdGlvbnMpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGN0eCwga2V5LCB7XHJcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiBpbnN0YW5jZS5wcm9wc1trZXldLFxyXG4gICAgICAgICAgICAgICAgc2V0OiBOT09QXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbi8vIGRldiBvbmx5XHJcbmZ1bmN0aW9uIGV4cG9zZVNldHVwU3RhdGVPblJlbmRlckNvbnRleHQoaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IHsgY3R4LCBzZXR1cFN0YXRlIH0gPSBpbnN0YW5jZTtcclxuICAgIE9iamVjdC5rZXlzKHRvUmF3KHNldHVwU3RhdGUpKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgaWYgKCFzZXR1cFN0YXRlLl9faXNTY3JpcHRTZXR1cCkge1xyXG4gICAgICAgICAgICBpZiAoaXNSZXNlcnZlZFByZWZpeChrZXlbMF0pKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBzZXR1cCgpIHJldHVybiBwcm9wZXJ0eSAke0pTT04uc3RyaW5naWZ5KGtleSl9IHNob3VsZCBub3Qgc3RhcnQgd2l0aCBcIiRcIiBvciBcIl9cIiBgICtcclxuICAgICAgICAgICAgICAgICAgICBgd2hpY2ggYXJlIHJlc2VydmVkIHByZWZpeGVzIGZvciBWdWUgaW50ZXJuYWxzLmApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdHgsIGtleSwge1xyXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGdldDogKCkgPT4gc2V0dXBTdGF0ZVtrZXldLFxyXG4gICAgICAgICAgICAgICAgc2V0OiBOT09QXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUR1cGxpY2F0ZUNoZWNrZXIoKSB7XHJcbiAgICBjb25zdCBjYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbiAgICByZXR1cm4gKHR5cGUsIGtleSkgPT4ge1xyXG4gICAgICAgIGlmIChjYWNoZVtrZXldKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYCR7dHlwZX0gcHJvcGVydHkgXCIke2tleX1cIiBpcyBhbHJlYWR5IGRlZmluZWQgaW4gJHtjYWNoZVtrZXldfS5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNhY2hlW2tleV0gPSB0eXBlO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cclxubGV0IHNob3VsZENhY2hlQWNjZXNzID0gdHJ1ZTtcclxuZnVuY3Rpb24gYXBwbHlPcHRpb25zKGluc3RhbmNlKSB7XHJcbiAgICBjb25zdCBvcHRpb25zID0gcmVzb2x2ZU1lcmdlZE9wdGlvbnMoaW5zdGFuY2UpO1xyXG4gICAgY29uc3QgcHVibGljVGhpcyA9IGluc3RhbmNlLnByb3h5O1xyXG4gICAgY29uc3QgY3R4ID0gaW5zdGFuY2UuY3R4O1xyXG4gICAgLy8gZG8gbm90IGNhY2hlIHByb3BlcnR5IGFjY2VzcyBvbiBwdWJsaWMgcHJveHkgZHVyaW5nIHN0YXRlIGluaXRpYWxpemF0aW9uXHJcbiAgICBzaG91bGRDYWNoZUFjY2VzcyA9IGZhbHNlO1xyXG4gICAgLy8gY2FsbCBiZWZvcmVDcmVhdGUgZmlyc3QgYmVmb3JlIGFjY2Vzc2luZyBvdGhlciBvcHRpb25zIHNpbmNlXHJcbiAgICAvLyB0aGUgaG9vayBtYXkgbXV0YXRlIHJlc29sdmVkIG9wdGlvbnMgKCMyNzkxKVxyXG4gICAgaWYgKG9wdGlvbnMuYmVmb3JlQ3JlYXRlKSB7XHJcbiAgICAgICAgY2FsbEhvb2sob3B0aW9ucy5iZWZvcmVDcmVhdGUsIGluc3RhbmNlLCBcImJjXCIgLyogTGlmZWN5Y2xlSG9va3MuQkVGT1JFX0NSRUFURSAqLyk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IFxyXG4gICAgLy8gc3RhdGVcclxuICAgIGRhdGE6IGRhdGFPcHRpb25zLCBjb21wdXRlZDogY29tcHV0ZWRPcHRpb25zLCBtZXRob2RzLCB3YXRjaDogd2F0Y2hPcHRpb25zLCBwcm92aWRlOiBwcm92aWRlT3B0aW9ucywgaW5qZWN0OiBpbmplY3RPcHRpb25zLCBcclxuICAgIC8vIGxpZmVjeWNsZVxyXG4gICAgY3JlYXRlZCwgYmVmb3JlTW91bnQsIG1vdW50ZWQsIGJlZm9yZVVwZGF0ZSwgdXBkYXRlZCwgYWN0aXZhdGVkLCBkZWFjdGl2YXRlZCwgYmVmb3JlRGVzdHJveSwgYmVmb3JlVW5tb3VudCwgZGVzdHJveWVkLCB1bm1vdW50ZWQsIHJlbmRlciwgcmVuZGVyVHJhY2tlZCwgcmVuZGVyVHJpZ2dlcmVkLCBlcnJvckNhcHR1cmVkLCBzZXJ2ZXJQcmVmZXRjaCwgXHJcbiAgICAvLyBwdWJsaWMgQVBJXHJcbiAgICBleHBvc2UsIGluaGVyaXRBdHRycywgXHJcbiAgICAvLyBhc3NldHNcclxuICAgIGNvbXBvbmVudHMsIGRpcmVjdGl2ZXMsIGZpbHRlcnMgfSA9IG9wdGlvbnM7XHJcbiAgICBjb25zdCBjaGVja0R1cGxpY2F0ZVByb3BlcnRpZXMgPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBjcmVhdGVEdXBsaWNhdGVDaGVja2VyKCkgOiBudWxsO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGNvbnN0IFtwcm9wc09wdGlvbnNdID0gaW5zdGFuY2UucHJvcHNPcHRpb25zO1xyXG4gICAgICAgIGlmIChwcm9wc09wdGlvbnMpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcHJvcHNPcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBjaGVja0R1cGxpY2F0ZVByb3BlcnRpZXMoXCJQcm9wc1wiIC8qIE9wdGlvblR5cGVzLlBST1BTICovLCBrZXkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gb3B0aW9ucyBpbml0aWFsaXphdGlvbiBvcmRlciAodG8gYmUgY29uc2lzdGVudCB3aXRoIFZ1ZSAyKTpcclxuICAgIC8vIC0gcHJvcHMgKGFscmVhZHkgZG9uZSBvdXRzaWRlIG9mIHRoaXMgZnVuY3Rpb24pXHJcbiAgICAvLyAtIGluamVjdFxyXG4gICAgLy8gLSBtZXRob2RzXHJcbiAgICAvLyAtIGRhdGEgKGRlZmVycmVkIHNpbmNlIGl0IHJlbGllcyBvbiBgdGhpc2AgYWNjZXNzKVxyXG4gICAgLy8gLSBjb21wdXRlZFxyXG4gICAgLy8gLSB3YXRjaCAoZGVmZXJyZWQgc2luY2UgaXQgcmVsaWVzIG9uIGB0aGlzYCBhY2Nlc3MpXHJcbiAgICBpZiAoaW5qZWN0T3B0aW9ucykge1xyXG4gICAgICAgIHJlc29sdmVJbmplY3Rpb25zKGluamVjdE9wdGlvbnMsIGN0eCwgY2hlY2tEdXBsaWNhdGVQcm9wZXJ0aWVzLCBpbnN0YW5jZS5hcHBDb250ZXh0LmNvbmZpZy51bndyYXBJbmplY3RlZFJlZik7XHJcbiAgICB9XHJcbiAgICBpZiAobWV0aG9kcykge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG1ldGhvZHMpIHtcclxuICAgICAgICAgICAgY29uc3QgbWV0aG9kSGFuZGxlciA9IG1ldGhvZHNba2V5XTtcclxuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24obWV0aG9kSGFuZGxlcikpIHtcclxuICAgICAgICAgICAgICAgIC8vIEluIGRldiBtb2RlLCB3ZSB1c2UgdGhlIGBjcmVhdGVSZW5kZXJDb250ZXh0YCBmdW5jdGlvbiB0byBkZWZpbmVcclxuICAgICAgICAgICAgICAgIC8vIG1ldGhvZHMgdG8gdGhlIHByb3h5IHRhcmdldCwgYW5kIHRob3NlIGFyZSByZWFkLW9ubHkgYnV0XHJcbiAgICAgICAgICAgICAgICAvLyByZWNvbmZpZ3VyYWJsZSwgc28gaXQgbmVlZHMgdG8gYmUgcmVkZWZpbmVkIGhlcmVcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3R4LCBrZXksIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG1ldGhvZEhhbmRsZXIuYmluZChwdWJsaWNUaGlzKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3R4W2tleV0gPSBtZXRob2RIYW5kbGVyLmJpbmQocHVibGljVGhpcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tEdXBsaWNhdGVQcm9wZXJ0aWVzKFwiTWV0aG9kc1wiIC8qIE9wdGlvblR5cGVzLk1FVEhPRFMgKi8sIGtleSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBNZXRob2QgXCIke2tleX1cIiBoYXMgdHlwZSBcIiR7dHlwZW9mIG1ldGhvZEhhbmRsZXJ9XCIgaW4gdGhlIGNvbXBvbmVudCBkZWZpbml0aW9uLiBgICtcclxuICAgICAgICAgICAgICAgICAgICBgRGlkIHlvdSByZWZlcmVuY2UgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseT9gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChkYXRhT3B0aW9ucykge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzRnVuY3Rpb24oZGF0YU9wdGlvbnMpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYFRoZSBkYXRhIG9wdGlvbiBtdXN0IGJlIGEgZnVuY3Rpb24uIGAgK1xyXG4gICAgICAgICAgICAgICAgYFBsYWluIG9iamVjdCB1c2FnZSBpcyBubyBsb25nZXIgc3VwcG9ydGVkLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBkYXRhID0gZGF0YU9wdGlvbnMuY2FsbChwdWJsaWNUaGlzLCBwdWJsaWNUaGlzKTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGlzUHJvbWlzZShkYXRhKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBkYXRhKCkgcmV0dXJuZWQgYSBQcm9taXNlIC0gbm90ZSBkYXRhKCkgY2Fubm90IGJlIGFzeW5jOyBJZiB5b3UgYCArXHJcbiAgICAgICAgICAgICAgICBgaW50ZW5kIHRvIHBlcmZvcm0gZGF0YSBmZXRjaGluZyBiZWZvcmUgY29tcG9uZW50IHJlbmRlcnMsIHVzZSBgICtcclxuICAgICAgICAgICAgICAgIGBhc3luYyBzZXR1cCgpICsgPFN1c3BlbnNlPi5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFpc09iamVjdChkYXRhKSkge1xyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgd2FybihgZGF0YSgpIHNob3VsZCByZXR1cm4gYW4gb2JqZWN0LmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaW5zdGFuY2UuZGF0YSA9IHJlYWN0aXZlKGRhdGEpO1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tEdXBsaWNhdGVQcm9wZXJ0aWVzKFwiRGF0YVwiIC8qIE9wdGlvblR5cGVzLkRBVEEgKi8sIGtleSk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZXhwb3NlIGRhdGEgb24gY3R4IGR1cmluZyBkZXZcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzUmVzZXJ2ZWRQcmVmaXgoa2V5WzBdKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3R4LCBrZXksIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQ6ICgpID0+IGRhdGFba2V5XSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldDogTk9PUFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBzdGF0ZSBpbml0aWFsaXphdGlvbiBjb21wbGV0ZSBhdCB0aGlzIHBvaW50IC0gc3RhcnQgY2FjaGluZyBhY2Nlc3NcclxuICAgIHNob3VsZENhY2hlQWNjZXNzID0gdHJ1ZTtcclxuICAgIGlmIChjb21wdXRlZE9wdGlvbnMpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBjb21wdXRlZE9wdGlvbnMpIHtcclxuICAgICAgICAgICAgY29uc3Qgb3B0ID0gY29tcHV0ZWRPcHRpb25zW2tleV07XHJcbiAgICAgICAgICAgIGNvbnN0IGdldCA9IGlzRnVuY3Rpb24ob3B0KVxyXG4gICAgICAgICAgICAgICAgPyBvcHQuYmluZChwdWJsaWNUaGlzLCBwdWJsaWNUaGlzKVxyXG4gICAgICAgICAgICAgICAgOiBpc0Z1bmN0aW9uKG9wdC5nZXQpXHJcbiAgICAgICAgICAgICAgICAgICAgPyBvcHQuZ2V0LmJpbmQocHVibGljVGhpcywgcHVibGljVGhpcylcclxuICAgICAgICAgICAgICAgICAgICA6IE5PT1A7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgZ2V0ID09PSBOT09QKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBDb21wdXRlZCBwcm9wZXJ0eSBcIiR7a2V5fVwiIGhhcyBubyBnZXR0ZXIuYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3Qgc2V0ID0gIWlzRnVuY3Rpb24ob3B0KSAmJiBpc0Z1bmN0aW9uKG9wdC5zZXQpXHJcbiAgICAgICAgICAgICAgICA/IG9wdC5zZXQuYmluZChwdWJsaWNUaGlzKVxyXG4gICAgICAgICAgICAgICAgOiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICAgICAgICAgICAgICA/ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FybihgV3JpdGUgb3BlcmF0aW9uIGZhaWxlZDogY29tcHV0ZWQgcHJvcGVydHkgXCIke2tleX1cIiBpcyByZWFkb25seS5gKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgOiBOT09QO1xyXG4gICAgICAgICAgICBjb25zdCBjID0gY29tcHV0ZWQoe1xyXG4gICAgICAgICAgICAgICAgZ2V0LFxyXG4gICAgICAgICAgICAgICAgc2V0XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3R4LCBrZXksIHtcclxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBnZXQ6ICgpID0+IGMudmFsdWUsXHJcbiAgICAgICAgICAgICAgICBzZXQ6IHYgPT4gKGMudmFsdWUgPSB2KVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgY2hlY2tEdXBsaWNhdGVQcm9wZXJ0aWVzKFwiQ29tcHV0ZWRcIiAvKiBPcHRpb25UeXBlcy5DT01QVVRFRCAqLywga2V5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh3YXRjaE9wdGlvbnMpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB3YXRjaE9wdGlvbnMpIHtcclxuICAgICAgICAgICAgY3JlYXRlV2F0Y2hlcih3YXRjaE9wdGlvbnNba2V5XSwgY3R4LCBwdWJsaWNUaGlzLCBrZXkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChwcm92aWRlT3B0aW9ucykge1xyXG4gICAgICAgIGNvbnN0IHByb3ZpZGVzID0gaXNGdW5jdGlvbihwcm92aWRlT3B0aW9ucylcclxuICAgICAgICAgICAgPyBwcm92aWRlT3B0aW9ucy5jYWxsKHB1YmxpY1RoaXMpXHJcbiAgICAgICAgICAgIDogcHJvdmlkZU9wdGlvbnM7XHJcbiAgICAgICAgUmVmbGVjdC5vd25LZXlzKHByb3ZpZGVzKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgICAgIHByb3ZpZGUoa2V5LCBwcm92aWRlc1trZXldKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChjcmVhdGVkKSB7XHJcbiAgICAgICAgY2FsbEhvb2soY3JlYXRlZCwgaW5zdGFuY2UsIFwiY1wiIC8qIExpZmVjeWNsZUhvb2tzLkNSRUFURUQgKi8pO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gcmVnaXN0ZXJMaWZlY3ljbGVIb29rKHJlZ2lzdGVyLCBob29rKSB7XHJcbiAgICAgICAgaWYgKGlzQXJyYXkoaG9vaykpIHtcclxuICAgICAgICAgICAgaG9vay5mb3JFYWNoKF9ob29rID0+IHJlZ2lzdGVyKF9ob29rLmJpbmQocHVibGljVGhpcykpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaG9vaykge1xyXG4gICAgICAgICAgICByZWdpc3Rlcihob29rLmJpbmQocHVibGljVGhpcykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvbkJlZm9yZU1vdW50LCBiZWZvcmVNb3VudCk7XHJcbiAgICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25Nb3VudGVkLCBtb3VudGVkKTtcclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvbkJlZm9yZVVwZGF0ZSwgYmVmb3JlVXBkYXRlKTtcclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvblVwZGF0ZWQsIHVwZGF0ZWQpO1xyXG4gICAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uQWN0aXZhdGVkLCBhY3RpdmF0ZWQpO1xyXG4gICAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uRGVhY3RpdmF0ZWQsIGRlYWN0aXZhdGVkKTtcclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvbkVycm9yQ2FwdHVyZWQsIGVycm9yQ2FwdHVyZWQpO1xyXG4gICAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uUmVuZGVyVHJhY2tlZCwgcmVuZGVyVHJhY2tlZCk7XHJcbiAgICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25SZW5kZXJUcmlnZ2VyZWQsIHJlbmRlclRyaWdnZXJlZCk7XHJcbiAgICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25CZWZvcmVVbm1vdW50LCBiZWZvcmVVbm1vdW50KTtcclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvblVubW91bnRlZCwgdW5tb3VudGVkKTtcclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvblNlcnZlclByZWZldGNoLCBzZXJ2ZXJQcmVmZXRjaCk7XHJcbiAgICBpZiAoaXNBcnJheShleHBvc2UpKSB7XHJcbiAgICAgICAgaWYgKGV4cG9zZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgY29uc3QgZXhwb3NlZCA9IGluc3RhbmNlLmV4cG9zZWQgfHwgKGluc3RhbmNlLmV4cG9zZWQgPSB7fSk7XHJcbiAgICAgICAgICAgIGV4cG9zZS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3NlZCwga2V5LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiBwdWJsaWNUaGlzW2tleV0sXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0OiB2YWwgPT4gKHB1YmxpY1RoaXNba2V5XSA9IHZhbClcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoIWluc3RhbmNlLmV4cG9zZWQpIHtcclxuICAgICAgICAgICAgaW5zdGFuY2UuZXhwb3NlZCA9IHt9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIG9wdGlvbnMgdGhhdCBhcmUgaGFuZGxlZCB3aGVuIGNyZWF0aW5nIHRoZSBpbnN0YW5jZSBidXQgYWxzbyBuZWVkIHRvIGJlXHJcbiAgICAvLyBhcHBsaWVkIGZyb20gbWl4aW5zXHJcbiAgICBpZiAocmVuZGVyICYmIGluc3RhbmNlLnJlbmRlciA9PT0gTk9PUCkge1xyXG4gICAgICAgIGluc3RhbmNlLnJlbmRlciA9IHJlbmRlcjtcclxuICAgIH1cclxuICAgIGlmIChpbmhlcml0QXR0cnMgIT0gbnVsbCkge1xyXG4gICAgICAgIGluc3RhbmNlLmluaGVyaXRBdHRycyA9IGluaGVyaXRBdHRycztcclxuICAgIH1cclxuICAgIC8vIGFzc2V0IG9wdGlvbnMuXHJcbiAgICBpZiAoY29tcG9uZW50cylcclxuICAgICAgICBpbnN0YW5jZS5jb21wb25lbnRzID0gY29tcG9uZW50cztcclxuICAgIGlmIChkaXJlY3RpdmVzKVxyXG4gICAgICAgIGluc3RhbmNlLmRpcmVjdGl2ZXMgPSBkaXJlY3RpdmVzO1xyXG59XHJcbmZ1bmN0aW9uIHJlc29sdmVJbmplY3Rpb25zKGluamVjdE9wdGlvbnMsIGN0eCwgY2hlY2tEdXBsaWNhdGVQcm9wZXJ0aWVzID0gTk9PUCwgdW53cmFwUmVmID0gZmFsc2UpIHtcclxuICAgIGlmIChpc0FycmF5KGluamVjdE9wdGlvbnMpKSB7XHJcbiAgICAgICAgaW5qZWN0T3B0aW9ucyA9IG5vcm1hbGl6ZUluamVjdChpbmplY3RPcHRpb25zKTtcclxuICAgIH1cclxuICAgIGZvciAoY29uc3Qga2V5IGluIGluamVjdE9wdGlvbnMpIHtcclxuICAgICAgICBjb25zdCBvcHQgPSBpbmplY3RPcHRpb25zW2tleV07XHJcbiAgICAgICAgbGV0IGluamVjdGVkO1xyXG4gICAgICAgIGlmIChpc09iamVjdChvcHQpKSB7XHJcbiAgICAgICAgICAgIGlmICgnZGVmYXVsdCcgaW4gb3B0KSB7XHJcbiAgICAgICAgICAgICAgICBpbmplY3RlZCA9IGluamVjdChvcHQuZnJvbSB8fCBrZXksIG9wdC5kZWZhdWx0LCB0cnVlIC8qIHRyZWF0IGRlZmF1bHQgZnVuY3Rpb24gYXMgZmFjdG9yeSAqLyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpbmplY3RlZCA9IGluamVjdChvcHQuZnJvbSB8fCBrZXkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpbmplY3RlZCA9IGluamVjdChvcHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNSZWYoaW5qZWN0ZWQpKSB7XHJcbiAgICAgICAgICAgIC8vIFRPRE8gcmVtb3ZlIHRoZSBjaGVjayBpbiAzLjNcclxuICAgICAgICAgICAgaWYgKHVud3JhcFJlZikge1xyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGN0eCwga2V5LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiBpbmplY3RlZC52YWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICBzZXQ6IHYgPT4gKGluamVjdGVkLnZhbHVlID0gdilcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYGluamVjdGVkIHByb3BlcnR5IFwiJHtrZXl9XCIgaXMgYSByZWYgYW5kIHdpbGwgYmUgYXV0by11bndyYXBwZWQgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBhbmQgbm8gbG9uZ2VyIG5lZWRzIFxcYC52YWx1ZVxcYCBpbiB0aGUgbmV4dCBtaW5vciByZWxlYXNlLiBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYFRvIG9wdC1pbiB0byB0aGUgbmV3IGJlaGF2aW9yIG5vdywgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBzZXQgXFxgYXBwLmNvbmZpZy51bndyYXBJbmplY3RlZFJlZiA9IHRydWVcXGAgKHRoaXMgY29uZmlnIGlzIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgdGVtcG9yYXJ5IGFuZCB3aWxsIG5vdCBiZSBuZWVkZWQgaW4gdGhlIGZ1dHVyZS4pYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjdHhba2V5XSA9IGluamVjdGVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjdHhba2V5XSA9IGluamVjdGVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIGNoZWNrRHVwbGljYXRlUHJvcGVydGllcyhcIkluamVjdFwiIC8qIE9wdGlvblR5cGVzLklOSkVDVCAqLywga2V5KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gY2FsbEhvb2soaG9vaywgaW5zdGFuY2UsIHR5cGUpIHtcclxuICAgIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGlzQXJyYXkoaG9vaylcclxuICAgICAgICA/IGhvb2subWFwKGggPT4gaC5iaW5kKGluc3RhbmNlLnByb3h5KSlcclxuICAgICAgICA6IGhvb2suYmluZChpbnN0YW5jZS5wcm94eSksIGluc3RhbmNlLCB0eXBlKTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVXYXRjaGVyKHJhdywgY3R4LCBwdWJsaWNUaGlzLCBrZXkpIHtcclxuICAgIGNvbnN0IGdldHRlciA9IGtleS5pbmNsdWRlcygnLicpXHJcbiAgICAgICAgPyBjcmVhdGVQYXRoR2V0dGVyKHB1YmxpY1RoaXMsIGtleSlcclxuICAgICAgICA6ICgpID0+IHB1YmxpY1RoaXNba2V5XTtcclxuICAgIGlmIChpc1N0cmluZyhyYXcpKSB7XHJcbiAgICAgICAgY29uc3QgaGFuZGxlciA9IGN0eFtyYXddO1xyXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKGhhbmRsZXIpKSB7XHJcbiAgICAgICAgICAgIHdhdGNoKGdldHRlciwgaGFuZGxlcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBJbnZhbGlkIHdhdGNoIGhhbmRsZXIgc3BlY2lmaWVkIGJ5IGtleSBcIiR7cmF3fVwiYCwgaGFuZGxlcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNGdW5jdGlvbihyYXcpKSB7XHJcbiAgICAgICAgd2F0Y2goZ2V0dGVyLCByYXcuYmluZChwdWJsaWNUaGlzKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc09iamVjdChyYXcpKSB7XHJcbiAgICAgICAgaWYgKGlzQXJyYXkocmF3KSkge1xyXG4gICAgICAgICAgICByYXcuZm9yRWFjaChyID0+IGNyZWF0ZVdhdGNoZXIociwgY3R4LCBwdWJsaWNUaGlzLCBrZXkpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZXIgPSBpc0Z1bmN0aW9uKHJhdy5oYW5kbGVyKVxyXG4gICAgICAgICAgICAgICAgPyByYXcuaGFuZGxlci5iaW5kKHB1YmxpY1RoaXMpXHJcbiAgICAgICAgICAgICAgICA6IGN0eFtyYXcuaGFuZGxlcl07XHJcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKGhhbmRsZXIpKSB7XHJcbiAgICAgICAgICAgICAgICB3YXRjaChnZXR0ZXIsIGhhbmRsZXIsIHJhdyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBJbnZhbGlkIHdhdGNoIGhhbmRsZXIgc3BlY2lmaWVkIGJ5IGtleSBcIiR7cmF3LmhhbmRsZXJ9XCJgLCBoYW5kbGVyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIHdhcm4oYEludmFsaWQgd2F0Y2ggb3B0aW9uOiBcIiR7a2V5fVwiYCwgcmF3KTtcclxuICAgIH1cclxufVxyXG4vKipcclxuICogUmVzb2x2ZSBtZXJnZWQgb3B0aW9ucyBhbmQgY2FjaGUgaXQgb24gdGhlIGNvbXBvbmVudC5cclxuICogVGhpcyBpcyBkb25lIG9ubHkgb25jZSBwZXItY29tcG9uZW50IHNpbmNlIHRoZSBtZXJnaW5nIGRvZXMgbm90IGludm9sdmVcclxuICogaW5zdGFuY2VzLlxyXG4gKi9cclxuZnVuY3Rpb24gcmVzb2x2ZU1lcmdlZE9wdGlvbnMoaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IGJhc2UgPSBpbnN0YW5jZS50eXBlO1xyXG4gICAgY29uc3QgeyBtaXhpbnMsIGV4dGVuZHM6IGV4dGVuZHNPcHRpb25zIH0gPSBiYXNlO1xyXG4gICAgY29uc3QgeyBtaXhpbnM6IGdsb2JhbE1peGlucywgb3B0aW9uc0NhY2hlOiBjYWNoZSwgY29uZmlnOiB7IG9wdGlvbk1lcmdlU3RyYXRlZ2llcyB9IH0gPSBpbnN0YW5jZS5hcHBDb250ZXh0O1xyXG4gICAgY29uc3QgY2FjaGVkID0gY2FjaGUuZ2V0KGJhc2UpO1xyXG4gICAgbGV0IHJlc29sdmVkO1xyXG4gICAgaWYgKGNhY2hlZCkge1xyXG4gICAgICAgIHJlc29sdmVkID0gY2FjaGVkO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoIWdsb2JhbE1peGlucy5sZW5ndGggJiYgIW1peGlucyAmJiAhZXh0ZW5kc09wdGlvbnMpIHtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHJlc29sdmVkID0gYmFzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICByZXNvbHZlZCA9IHt9O1xyXG4gICAgICAgIGlmIChnbG9iYWxNaXhpbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGdsb2JhbE1peGlucy5mb3JFYWNoKG0gPT4gbWVyZ2VPcHRpb25zKHJlc29sdmVkLCBtLCBvcHRpb25NZXJnZVN0cmF0ZWdpZXMsIHRydWUpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbWVyZ2VPcHRpb25zKHJlc29sdmVkLCBiYXNlLCBvcHRpb25NZXJnZVN0cmF0ZWdpZXMpO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzT2JqZWN0KGJhc2UpKSB7XHJcbiAgICAgICAgY2FjaGUuc2V0KGJhc2UsIHJlc29sdmVkKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXNvbHZlZDtcclxufVxyXG5mdW5jdGlvbiBtZXJnZU9wdGlvbnModG8sIGZyb20sIHN0cmF0cywgYXNNaXhpbiA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCB7IG1peGlucywgZXh0ZW5kczogZXh0ZW5kc09wdGlvbnMgfSA9IGZyb207XHJcbiAgICBpZiAoZXh0ZW5kc09wdGlvbnMpIHtcclxuICAgICAgICBtZXJnZU9wdGlvbnModG8sIGV4dGVuZHNPcHRpb25zLCBzdHJhdHMsIHRydWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKG1peGlucykge1xyXG4gICAgICAgIG1peGlucy5mb3JFYWNoKChtKSA9PiBtZXJnZU9wdGlvbnModG8sIG0sIHN0cmF0cywgdHJ1ZSkpO1xyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZnJvbSkge1xyXG4gICAgICAgIGlmIChhc01peGluICYmIGtleSA9PT0gJ2V4cG9zZScpIHtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICB3YXJuKGBcImV4cG9zZVwiIG9wdGlvbiBpcyBpZ25vcmVkIHdoZW4gZGVjbGFyZWQgaW4gbWl4aW5zIG9yIGV4dGVuZHMuIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGBJdCBzaG91bGQgb25seSBiZSBkZWNsYXJlZCBpbiB0aGUgYmFzZSBjb21wb25lbnQgaXRzZWxmLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3Qgc3RyYXQgPSBpbnRlcm5hbE9wdGlvbk1lcmdlU3RyYXRzW2tleV0gfHwgKHN0cmF0cyAmJiBzdHJhdHNba2V5XSk7XHJcbiAgICAgICAgICAgIHRvW2tleV0gPSBzdHJhdCA/IHN0cmF0KHRvW2tleV0sIGZyb21ba2V5XSkgOiBmcm9tW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvO1xyXG59XHJcbmNvbnN0IGludGVybmFsT3B0aW9uTWVyZ2VTdHJhdHMgPSB7XHJcbiAgICBkYXRhOiBtZXJnZURhdGFGbixcclxuICAgIHByb3BzOiBtZXJnZU9iamVjdE9wdGlvbnMsXHJcbiAgICBlbWl0czogbWVyZ2VPYmplY3RPcHRpb25zLFxyXG4gICAgLy8gb2JqZWN0c1xyXG4gICAgbWV0aG9kczogbWVyZ2VPYmplY3RPcHRpb25zLFxyXG4gICAgY29tcHV0ZWQ6IG1lcmdlT2JqZWN0T3B0aW9ucyxcclxuICAgIC8vIGxpZmVjeWNsZVxyXG4gICAgYmVmb3JlQ3JlYXRlOiBtZXJnZUFzQXJyYXksXHJcbiAgICBjcmVhdGVkOiBtZXJnZUFzQXJyYXksXHJcbiAgICBiZWZvcmVNb3VudDogbWVyZ2VBc0FycmF5LFxyXG4gICAgbW91bnRlZDogbWVyZ2VBc0FycmF5LFxyXG4gICAgYmVmb3JlVXBkYXRlOiBtZXJnZUFzQXJyYXksXHJcbiAgICB1cGRhdGVkOiBtZXJnZUFzQXJyYXksXHJcbiAgICBiZWZvcmVEZXN0cm95OiBtZXJnZUFzQXJyYXksXHJcbiAgICBiZWZvcmVVbm1vdW50OiBtZXJnZUFzQXJyYXksXHJcbiAgICBkZXN0cm95ZWQ6IG1lcmdlQXNBcnJheSxcclxuICAgIHVubW91bnRlZDogbWVyZ2VBc0FycmF5LFxyXG4gICAgYWN0aXZhdGVkOiBtZXJnZUFzQXJyYXksXHJcbiAgICBkZWFjdGl2YXRlZDogbWVyZ2VBc0FycmF5LFxyXG4gICAgZXJyb3JDYXB0dXJlZDogbWVyZ2VBc0FycmF5LFxyXG4gICAgc2VydmVyUHJlZmV0Y2g6IG1lcmdlQXNBcnJheSxcclxuICAgIC8vIGFzc2V0c1xyXG4gICAgY29tcG9uZW50czogbWVyZ2VPYmplY3RPcHRpb25zLFxyXG4gICAgZGlyZWN0aXZlczogbWVyZ2VPYmplY3RPcHRpb25zLFxyXG4gICAgLy8gd2F0Y2hcclxuICAgIHdhdGNoOiBtZXJnZVdhdGNoT3B0aW9ucyxcclxuICAgIC8vIHByb3ZpZGUgLyBpbmplY3RcclxuICAgIHByb3ZpZGU6IG1lcmdlRGF0YUZuLFxyXG4gICAgaW5qZWN0OiBtZXJnZUluamVjdFxyXG59O1xyXG5mdW5jdGlvbiBtZXJnZURhdGFGbih0bywgZnJvbSkge1xyXG4gICAgaWYgKCFmcm9tKSB7XHJcbiAgICAgICAgcmV0dXJuIHRvO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0bykge1xyXG4gICAgICAgIHJldHVybiBmcm9tO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIG1lcmdlZERhdGFGbigpIHtcclxuICAgICAgICByZXR1cm4gKGV4dGVuZCkoaXNGdW5jdGlvbih0bykgPyB0by5jYWxsKHRoaXMsIHRoaXMpIDogdG8sIGlzRnVuY3Rpb24oZnJvbSkgPyBmcm9tLmNhbGwodGhpcywgdGhpcykgOiBmcm9tKTtcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gbWVyZ2VJbmplY3QodG8sIGZyb20pIHtcclxuICAgIHJldHVybiBtZXJnZU9iamVjdE9wdGlvbnMobm9ybWFsaXplSW5qZWN0KHRvKSwgbm9ybWFsaXplSW5qZWN0KGZyb20pKTtcclxufVxyXG5mdW5jdGlvbiBub3JtYWxpemVJbmplY3QocmF3KSB7XHJcbiAgICBpZiAoaXNBcnJheShyYXcpKSB7XHJcbiAgICAgICAgY29uc3QgcmVzID0ge307XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByYXcubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgcmVzW3Jhd1tpXV0gPSByYXdbaV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmF3O1xyXG59XHJcbmZ1bmN0aW9uIG1lcmdlQXNBcnJheSh0bywgZnJvbSkge1xyXG4gICAgcmV0dXJuIHRvID8gWy4uLm5ldyBTZXQoW10uY29uY2F0KHRvLCBmcm9tKSldIDogZnJvbTtcclxufVxyXG5mdW5jdGlvbiBtZXJnZU9iamVjdE9wdGlvbnModG8sIGZyb20pIHtcclxuICAgIHJldHVybiB0byA/IGV4dGVuZChleHRlbmQoT2JqZWN0LmNyZWF0ZShudWxsKSwgdG8pLCBmcm9tKSA6IGZyb207XHJcbn1cclxuZnVuY3Rpb24gbWVyZ2VXYXRjaE9wdGlvbnModG8sIGZyb20pIHtcclxuICAgIGlmICghdG8pXHJcbiAgICAgICAgcmV0dXJuIGZyb207XHJcbiAgICBpZiAoIWZyb20pXHJcbiAgICAgICAgcmV0dXJuIHRvO1xyXG4gICAgY29uc3QgbWVyZ2VkID0gZXh0ZW5kKE9iamVjdC5jcmVhdGUobnVsbCksIHRvKTtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIGZyb20pIHtcclxuICAgICAgICBtZXJnZWRba2V5XSA9IG1lcmdlQXNBcnJheSh0b1trZXldLCBmcm9tW2tleV0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1lcmdlZDtcclxufVxuXG5mdW5jdGlvbiBpbml0UHJvcHMoaW5zdGFuY2UsIHJhd1Byb3BzLCBpc1N0YXRlZnVsLCAvLyByZXN1bHQgb2YgYml0d2lzZSBmbGFnIGNvbXBhcmlzb25cclxuaXNTU1IgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgcHJvcHMgPSB7fTtcclxuICAgIGNvbnN0IGF0dHJzID0ge307XHJcbiAgICBkZWYoYXR0cnMsIEludGVybmFsT2JqZWN0S2V5LCAxKTtcclxuICAgIGluc3RhbmNlLnByb3BzRGVmYXVsdHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xyXG4gICAgc2V0RnVsbFByb3BzKGluc3RhbmNlLCByYXdQcm9wcywgcHJvcHMsIGF0dHJzKTtcclxuICAgIC8vIGVuc3VyZSBhbGwgZGVjbGFyZWQgcHJvcCBrZXlzIGFyZSBwcmVzZW50XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBpbnN0YW5jZS5wcm9wc09wdGlvbnNbMF0pIHtcclxuICAgICAgICBpZiAoIShrZXkgaW4gcHJvcHMpKSB7XHJcbiAgICAgICAgICAgIHByb3BzW2tleV0gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gdmFsaWRhdGlvblxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIHZhbGlkYXRlUHJvcHMocmF3UHJvcHMgfHwge30sIHByb3BzLCBpbnN0YW5jZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNTdGF0ZWZ1bCkge1xyXG4gICAgICAgIC8vIHN0YXRlZnVsXHJcbiAgICAgICAgaW5zdGFuY2UucHJvcHMgPSBpc1NTUiA/IHByb3BzIDogc2hhbGxvd1JlYWN0aXZlKHByb3BzKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICghaW5zdGFuY2UudHlwZS5wcm9wcykge1xyXG4gICAgICAgICAgICAvLyBmdW5jdGlvbmFsIHcvIG9wdGlvbmFsIHByb3BzLCBwcm9wcyA9PT0gYXR0cnNcclxuICAgICAgICAgICAgaW5zdGFuY2UucHJvcHMgPSBhdHRycztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGZ1bmN0aW9uYWwgdy8gZGVjbGFyZWQgcHJvcHNcclxuICAgICAgICAgICAgaW5zdGFuY2UucHJvcHMgPSBwcm9wcztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpbnN0YW5jZS5hdHRycyA9IGF0dHJzO1xyXG59XHJcbmZ1bmN0aW9uIGlzSW5IbXJDb250ZXh0KGluc3RhbmNlKSB7XHJcbiAgICB3aGlsZSAoaW5zdGFuY2UpIHtcclxuICAgICAgICBpZiAoaW5zdGFuY2UudHlwZS5fX2htcklkKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpbnN0YW5jZSA9IGluc3RhbmNlLnBhcmVudDtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB1cGRhdGVQcm9wcyhpbnN0YW5jZSwgcmF3UHJvcHMsIHJhd1ByZXZQcm9wcywgb3B0aW1pemVkKSB7XHJcbiAgICBjb25zdCB7IHByb3BzLCBhdHRycywgdm5vZGU6IHsgcGF0Y2hGbGFnIH0gfSA9IGluc3RhbmNlO1xyXG4gICAgY29uc3QgcmF3Q3VycmVudFByb3BzID0gdG9SYXcocHJvcHMpO1xyXG4gICAgY29uc3QgW29wdGlvbnNdID0gaW5zdGFuY2UucHJvcHNPcHRpb25zO1xyXG4gICAgbGV0IGhhc0F0dHJzQ2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgaWYgKFxyXG4gICAgLy8gYWx3YXlzIGZvcmNlIGZ1bGwgZGlmZiBpbiBkZXZcclxuICAgIC8vIC0gIzE5NDIgaWYgaG1yIGlzIGVuYWJsZWQgd2l0aCBzZmMgY29tcG9uZW50XHJcbiAgICAvLyAtIHZpdGUjODcyIG5vbi1zZmMgY29tcG9uZW50IHVzZWQgYnkgc2ZjIGNvbXBvbmVudFxyXG4gICAgISgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaXNJbkhtckNvbnRleHQoaW5zdGFuY2UpKSAmJlxyXG4gICAgICAgIChvcHRpbWl6ZWQgfHwgcGF0Y2hGbGFnID4gMCkgJiZcclxuICAgICAgICAhKHBhdGNoRmxhZyAmIDE2IC8qIFBhdGNoRmxhZ3MuRlVMTF9QUk9QUyAqLykpIHtcclxuICAgICAgICBpZiAocGF0Y2hGbGFnICYgOCAvKiBQYXRjaEZsYWdzLlBST1BTICovKSB7XHJcbiAgICAgICAgICAgIC8vIENvbXBpbGVyLWdlbmVyYXRlZCBwcm9wcyAmIG5vIGtleXMgY2hhbmdlLCBqdXN0IHNldCB0aGUgdXBkYXRlZFxyXG4gICAgICAgICAgICAvLyB0aGUgcHJvcHMuXHJcbiAgICAgICAgICAgIGNvbnN0IHByb3BzVG9VcGRhdGUgPSBpbnN0YW5jZS52bm9kZS5keW5hbWljUHJvcHM7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcHNUb1VwZGF0ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGtleSA9IHByb3BzVG9VcGRhdGVbaV07XHJcbiAgICAgICAgICAgICAgICAvLyBza2lwIGlmIHRoZSBwcm9wIGtleSBpcyBhIGRlY2xhcmVkIGVtaXQgZXZlbnQgbGlzdGVuZXJcclxuICAgICAgICAgICAgICAgIGlmIChpc0VtaXRMaXN0ZW5lcihpbnN0YW5jZS5lbWl0c09wdGlvbnMsIGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIFBST1BTIGZsYWcgZ3VhcmFudGVlcyByYXdQcm9wcyB0byBiZSBub24tbnVsbFxyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSByYXdQcm9wc1trZXldO1xyXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBhdHRyIC8gcHJvcHMgc2VwYXJhdGlvbiB3YXMgZG9uZSBvbiBpbml0IGFuZCB3aWxsIGJlIGNvbnNpc3RlbnRcclxuICAgICAgICAgICAgICAgICAgICAvLyBpbiB0aGlzIGNvZGUgcGF0aCwgc28ganVzdCBjaGVjayBpZiBhdHRycyBoYXZlIGl0LlxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNPd24oYXR0cnMsIGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBhdHRyc1trZXldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyc1trZXldID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNBdHRyc0NoYW5nZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW1lbGl6ZWRLZXkgPSBjYW1lbGl6ZShrZXkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wc1tjYW1lbGl6ZWRLZXldID0gcmVzb2x2ZVByb3BWYWx1ZShvcHRpb25zLCByYXdDdXJyZW50UHJvcHMsIGNhbWVsaXplZEtleSwgdmFsdWUsIGluc3RhbmNlLCBmYWxzZSAvKiBpc0Fic2VudCAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBhdHRyc1trZXldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzQXR0cnNDaGFuZ2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBmdWxsIHByb3BzIHVwZGF0ZS5cclxuICAgICAgICBpZiAoc2V0RnVsbFByb3BzKGluc3RhbmNlLCByYXdQcm9wcywgcHJvcHMsIGF0dHJzKSkge1xyXG4gICAgICAgICAgICBoYXNBdHRyc0NoYW5nZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpbiBjYXNlIG9mIGR5bmFtaWMgcHJvcHMsIGNoZWNrIGlmIHdlIG5lZWQgdG8gZGVsZXRlIGtleXMgZnJvbVxyXG4gICAgICAgIC8vIHRoZSBwcm9wcyBvYmplY3RcclxuICAgICAgICBsZXQga2ViYWJLZXk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcmF3Q3VycmVudFByb3BzKSB7XHJcbiAgICAgICAgICAgIGlmICghcmF3UHJvcHMgfHxcclxuICAgICAgICAgICAgICAgIC8vIGZvciBjYW1lbENhc2VcclxuICAgICAgICAgICAgICAgICghaGFzT3duKHJhd1Byb3BzLCBrZXkpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaXQncyBwb3NzaWJsZSB0aGUgb3JpZ2luYWwgcHJvcHMgd2FzIHBhc3NlZCBpbiBhcyBrZWJhYi1jYXNlXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYW5kIGNvbnZlcnRlZCB0byBjYW1lbENhc2UgKCM5NTUpXHJcbiAgICAgICAgICAgICAgICAgICAgKChrZWJhYktleSA9IGh5cGhlbmF0ZShrZXkpKSA9PT0ga2V5IHx8ICFoYXNPd24ocmF3UHJvcHMsIGtlYmFiS2V5KSkpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyYXdQcmV2UHJvcHMgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGNhbWVsQ2FzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocmF3UHJldlByb3BzW2tleV0gIT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGtlYmFiLWNhc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhd1ByZXZQcm9wc1trZWJhYktleV0gIT09IHVuZGVmaW5lZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHNba2V5XSA9IHJlc29sdmVQcm9wVmFsdWUob3B0aW9ucywgcmF3Q3VycmVudFByb3BzLCBrZXksIHVuZGVmaW5lZCwgaW5zdGFuY2UsIHRydWUgLyogaXNBYnNlbnQgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwcm9wc1trZXldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGluIHRoZSBjYXNlIG9mIGZ1bmN0aW9uYWwgY29tcG9uZW50IHcvbyBwcm9wcyBkZWNsYXJhdGlvbiwgcHJvcHMgYW5kXHJcbiAgICAgICAgLy8gYXR0cnMgcG9pbnQgdG8gdGhlIHNhbWUgb2JqZWN0IHNvIGl0IHNob3VsZCBhbHJlYWR5IGhhdmUgYmVlbiB1cGRhdGVkLlxyXG4gICAgICAgIGlmIChhdHRycyAhPT0gcmF3Q3VycmVudFByb3BzKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGF0dHJzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJhd1Byb3BzIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKCFoYXNPd24ocmF3UHJvcHMsIGtleSkgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgKCFmYWxzZSApKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBhdHRyc1trZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc0F0dHJzQ2hhbmdlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyB0cmlnZ2VyIHVwZGF0ZXMgZm9yICRhdHRycyBpbiBjYXNlIGl0J3MgdXNlZCBpbiBjb21wb25lbnQgc2xvdHNcclxuICAgIGlmIChoYXNBdHRyc0NoYW5nZWQpIHtcclxuICAgICAgICB0cmlnZ2VyKGluc3RhbmNlLCBcInNldFwiIC8qIFRyaWdnZXJPcFR5cGVzLlNFVCAqLywgJyRhdHRycycpO1xyXG4gICAgfVxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIHZhbGlkYXRlUHJvcHMocmF3UHJvcHMgfHwge30sIHByb3BzLCBpbnN0YW5jZSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gc2V0RnVsbFByb3BzKGluc3RhbmNlLCByYXdQcm9wcywgcHJvcHMsIGF0dHJzKSB7XHJcbiAgICBjb25zdCBbb3B0aW9ucywgbmVlZENhc3RLZXlzXSA9IGluc3RhbmNlLnByb3BzT3B0aW9ucztcclxuICAgIGxldCBoYXNBdHRyc0NoYW5nZWQgPSBmYWxzZTtcclxuICAgIGxldCByYXdDYXN0VmFsdWVzO1xyXG4gICAgaWYgKHJhd1Byb3BzKSB7XHJcbiAgICAgICAgZm9yIChsZXQga2V5IGluIHJhd1Byb3BzKSB7XHJcbiAgICAgICAgICAgIC8vIGtleSwgcmVmIGFyZSByZXNlcnZlZCBhbmQgbmV2ZXIgcGFzc2VkIGRvd25cclxuICAgICAgICAgICAgaWYgKGlzUmVzZXJ2ZWRQcm9wKGtleSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcmF3UHJvcHNba2V5XTtcclxuICAgICAgICAgICAgLy8gcHJvcCBvcHRpb24gbmFtZXMgYXJlIGNhbWVsaXplZCBkdXJpbmcgbm9ybWFsaXphdGlvbiwgc28gdG8gc3VwcG9ydFxyXG4gICAgICAgICAgICAvLyBrZWJhYiAtPiBjYW1lbCBjb252ZXJzaW9uIGhlcmUgd2UgbmVlZCB0byBjYW1lbGl6ZSB0aGUga2V5LlxyXG4gICAgICAgICAgICBsZXQgY2FtZWxLZXk7XHJcbiAgICAgICAgICAgIGlmIChvcHRpb25zICYmIGhhc093bihvcHRpb25zLCAoY2FtZWxLZXkgPSBjYW1lbGl6ZShrZXkpKSkpIHtcclxuICAgICAgICAgICAgICAgIGlmICghbmVlZENhc3RLZXlzIHx8ICFuZWVkQ2FzdEtleXMuaW5jbHVkZXMoY2FtZWxLZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcHNbY2FtZWxLZXldID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAocmF3Q2FzdFZhbHVlcyB8fCAocmF3Q2FzdFZhbHVlcyA9IHt9KSlbY2FtZWxLZXldID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoIWlzRW1pdExpc3RlbmVyKGluc3RhbmNlLmVtaXRzT3B0aW9ucywga2V5KSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCEoa2V5IGluIGF0dHJzKSB8fCB2YWx1ZSAhPT0gYXR0cnNba2V5XSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICBoYXNBdHRyc0NoYW5nZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKG5lZWRDYXN0S2V5cykge1xyXG4gICAgICAgIGNvbnN0IHJhd0N1cnJlbnRQcm9wcyA9IHRvUmF3KHByb3BzKTtcclxuICAgICAgICBjb25zdCBjYXN0VmFsdWVzID0gcmF3Q2FzdFZhbHVlcyB8fCBFTVBUWV9PQko7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZWVkQ2FzdEtleXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3Qga2V5ID0gbmVlZENhc3RLZXlzW2ldO1xyXG4gICAgICAgICAgICBwcm9wc1trZXldID0gcmVzb2x2ZVByb3BWYWx1ZShvcHRpb25zLCByYXdDdXJyZW50UHJvcHMsIGtleSwgY2FzdFZhbHVlc1trZXldLCBpbnN0YW5jZSwgIWhhc093bihjYXN0VmFsdWVzLCBrZXkpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaGFzQXR0cnNDaGFuZ2VkO1xyXG59XHJcbmZ1bmN0aW9uIHJlc29sdmVQcm9wVmFsdWUob3B0aW9ucywgcHJvcHMsIGtleSwgdmFsdWUsIGluc3RhbmNlLCBpc0Fic2VudCkge1xyXG4gICAgY29uc3Qgb3B0ID0gb3B0aW9uc1trZXldO1xyXG4gICAgaWYgKG9wdCAhPSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgaGFzRGVmYXVsdCA9IGhhc093bihvcHQsICdkZWZhdWx0Jyk7XHJcbiAgICAgICAgLy8gZGVmYXVsdCB2YWx1ZXNcclxuICAgICAgICBpZiAoaGFzRGVmYXVsdCAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IG9wdC5kZWZhdWx0O1xyXG4gICAgICAgICAgICBpZiAob3B0LnR5cGUgIT09IEZ1bmN0aW9uICYmIGlzRnVuY3Rpb24oZGVmYXVsdFZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBwcm9wc0RlZmF1bHRzIH0gPSBpbnN0YW5jZTtcclxuICAgICAgICAgICAgICAgIGlmIChrZXkgaW4gcHJvcHNEZWZhdWx0cykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcHJvcHNEZWZhdWx0c1trZXldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0Q3VycmVudEluc3RhbmNlKGluc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHByb3BzRGVmYXVsdHNba2V5XSA9IGRlZmF1bHRWYWx1ZS5jYWxsKG51bGwsIHByb3BzKTtcclxuICAgICAgICAgICAgICAgICAgICB1bnNldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSBkZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gYm9vbGVhbiBjYXN0aW5nXHJcbiAgICAgICAgaWYgKG9wdFswIC8qIEJvb2xlYW5GbGFncy5zaG91bGRDYXN0ICovXSkge1xyXG4gICAgICAgICAgICBpZiAoaXNBYnNlbnQgJiYgIWhhc0RlZmF1bHQpIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAob3B0WzEgLyogQm9vbGVhbkZsYWdzLnNob3VsZENhc3RUcnVlICovXSAmJlxyXG4gICAgICAgICAgICAgICAgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gaHlwaGVuYXRlKGtleSkpKSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplUHJvcHNPcHRpb25zKGNvbXAsIGFwcENvbnRleHQsIGFzTWl4aW4gPSBmYWxzZSkge1xyXG4gICAgY29uc3QgY2FjaGUgPSBhcHBDb250ZXh0LnByb3BzQ2FjaGU7XHJcbiAgICBjb25zdCBjYWNoZWQgPSBjYWNoZS5nZXQoY29tcCk7XHJcbiAgICBpZiAoY2FjaGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIGNhY2hlZDtcclxuICAgIH1cclxuICAgIGNvbnN0IHJhdyA9IGNvbXAucHJvcHM7XHJcbiAgICBjb25zdCBub3JtYWxpemVkID0ge307XHJcbiAgICBjb25zdCBuZWVkQ2FzdEtleXMgPSBbXTtcclxuICAgIC8vIGFwcGx5IG1peGluL2V4dGVuZHMgcHJvcHNcclxuICAgIGxldCBoYXNFeHRlbmRzID0gZmFsc2U7XHJcbiAgICBpZiAoX19WVUVfT1BUSU9OU19BUElfXyAmJiAhaXNGdW5jdGlvbihjb21wKSkge1xyXG4gICAgICAgIGNvbnN0IGV4dGVuZFByb3BzID0gKHJhdykgPT4ge1xyXG4gICAgICAgICAgICBoYXNFeHRlbmRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgY29uc3QgW3Byb3BzLCBrZXlzXSA9IG5vcm1hbGl6ZVByb3BzT3B0aW9ucyhyYXcsIGFwcENvbnRleHQsIHRydWUpO1xyXG4gICAgICAgICAgICBleHRlbmQobm9ybWFsaXplZCwgcHJvcHMpO1xyXG4gICAgICAgICAgICBpZiAoa2V5cylcclxuICAgICAgICAgICAgICAgIG5lZWRDYXN0S2V5cy5wdXNoKC4uLmtleXMpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKCFhc01peGluICYmIGFwcENvbnRleHQubWl4aW5zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBhcHBDb250ZXh0Lm1peGlucy5mb3JFYWNoKGV4dGVuZFByb3BzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbXAuZXh0ZW5kcykge1xyXG4gICAgICAgICAgICBleHRlbmRQcm9wcyhjb21wLmV4dGVuZHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29tcC5taXhpbnMpIHtcclxuICAgICAgICAgICAgY29tcC5taXhpbnMuZm9yRWFjaChleHRlbmRQcm9wcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCFyYXcgJiYgIWhhc0V4dGVuZHMpIHtcclxuICAgICAgICBpZiAoaXNPYmplY3QoY29tcCkpIHtcclxuICAgICAgICAgICAgY2FjaGUuc2V0KGNvbXAsIEVNUFRZX0FSUik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBFTVBUWV9BUlI7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNBcnJheShyYXcpKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByYXcubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaXNTdHJpbmcocmF3W2ldKSkge1xyXG4gICAgICAgICAgICAgICAgd2FybihgcHJvcHMgbXVzdCBiZSBzdHJpbmdzIHdoZW4gdXNpbmcgYXJyYXkgc3ludGF4LmAsIHJhd1tpXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZEtleSA9IGNhbWVsaXplKHJhd1tpXSk7XHJcbiAgICAgICAgICAgIGlmICh2YWxpZGF0ZVByb3BOYW1lKG5vcm1hbGl6ZWRLZXkpKSB7XHJcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkW25vcm1hbGl6ZWRLZXldID0gRU1QVFlfT0JKO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocmF3KSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaXNPYmplY3QocmF3KSkge1xyXG4gICAgICAgICAgICB3YXJuKGBpbnZhbGlkIHByb3BzIG9wdGlvbnNgLCByYXcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiByYXcpIHtcclxuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZEtleSA9IGNhbWVsaXplKGtleSk7XHJcbiAgICAgICAgICAgIGlmICh2YWxpZGF0ZVByb3BOYW1lKG5vcm1hbGl6ZWRLZXkpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvcHQgPSByYXdba2V5XTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHByb3AgPSAobm9ybWFsaXplZFtub3JtYWxpemVkS2V5XSA9XHJcbiAgICAgICAgICAgICAgICAgICAgaXNBcnJheShvcHQpIHx8IGlzRnVuY3Rpb24ob3B0KSA/IHsgdHlwZTogb3B0IH0gOiBvcHQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHByb3ApIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sZWFuSW5kZXggPSBnZXRUeXBlSW5kZXgoQm9vbGVhbiwgcHJvcC50eXBlKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJpbmdJbmRleCA9IGdldFR5cGVJbmRleChTdHJpbmcsIHByb3AudHlwZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcFswIC8qIEJvb2xlYW5GbGFncy5zaG91bGRDYXN0ICovXSA9IGJvb2xlYW5JbmRleCA+IC0xO1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BbMSAvKiBCb29sZWFuRmxhZ3Muc2hvdWxkQ2FzdFRydWUgKi9dID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nSW5kZXggPCAwIHx8IGJvb2xlYW5JbmRleCA8IHN0cmluZ0luZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBwcm9wIG5lZWRzIGJvb2xlYW4gY2FzdGluZyBvciBkZWZhdWx0IHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJvb2xlYW5JbmRleCA+IC0xIHx8IGhhc093bihwcm9wLCAnZGVmYXVsdCcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRDYXN0S2V5cy5wdXNoKG5vcm1hbGl6ZWRLZXkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHJlcyA9IFtub3JtYWxpemVkLCBuZWVkQ2FzdEtleXNdO1xyXG4gICAgaWYgKGlzT2JqZWN0KGNvbXApKSB7XHJcbiAgICAgICAgY2FjaGUuc2V0KGNvbXAsIHJlcyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG59XHJcbmZ1bmN0aW9uIHZhbGlkYXRlUHJvcE5hbWUoa2V5KSB7XHJcbiAgICBpZiAoa2V5WzBdICE9PSAnJCcpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIHdhcm4oYEludmFsaWQgcHJvcCBuYW1lOiBcIiR7a2V5fVwiIGlzIGEgcmVzZXJ2ZWQgcHJvcGVydHkuYCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cclxuLy8gdXNlIGZ1bmN0aW9uIHN0cmluZyBuYW1lIHRvIGNoZWNrIHR5cGUgY29uc3RydWN0b3JzXHJcbi8vIHNvIHRoYXQgaXQgd29ya3MgYWNyb3NzIHZtcyAvIGlmcmFtZXMuXHJcbmZ1bmN0aW9uIGdldFR5cGUoY3Rvcikge1xyXG4gICAgY29uc3QgbWF0Y2ggPSBjdG9yICYmIGN0b3IudG9TdHJpbmcoKS5tYXRjaCgvXlxccypmdW5jdGlvbiAoXFx3KykvKTtcclxuICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdIDogY3RvciA9PT0gbnVsbCA/ICdudWxsJyA6ICcnO1xyXG59XHJcbmZ1bmN0aW9uIGlzU2FtZVR5cGUoYSwgYikge1xyXG4gICAgcmV0dXJuIGdldFR5cGUoYSkgPT09IGdldFR5cGUoYik7XHJcbn1cclxuZnVuY3Rpb24gZ2V0VHlwZUluZGV4KHR5cGUsIGV4cGVjdGVkVHlwZXMpIHtcclxuICAgIGlmIChpc0FycmF5KGV4cGVjdGVkVHlwZXMpKSB7XHJcbiAgICAgICAgcmV0dXJuIGV4cGVjdGVkVHlwZXMuZmluZEluZGV4KHQgPT4gaXNTYW1lVHlwZSh0LCB0eXBlKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKGV4cGVjdGVkVHlwZXMpKSB7XHJcbiAgICAgICAgcmV0dXJuIGlzU2FtZVR5cGUoZXhwZWN0ZWRUeXBlcywgdHlwZSkgPyAwIDogLTE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gLTE7XHJcbn1cclxuLyoqXHJcbiAqIGRldiBvbmx5XHJcbiAqL1xyXG5mdW5jdGlvbiB2YWxpZGF0ZVByb3BzKHJhd1Byb3BzLCBwcm9wcywgaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IHJlc29sdmVkVmFsdWVzID0gdG9SYXcocHJvcHMpO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IGluc3RhbmNlLnByb3BzT3B0aW9uc1swXTtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIG9wdGlvbnMpIHtcclxuICAgICAgICBsZXQgb3B0ID0gb3B0aW9uc1trZXldO1xyXG4gICAgICAgIGlmIChvcHQgPT0gbnVsbClcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgdmFsaWRhdGVQcm9wKGtleSwgcmVzb2x2ZWRWYWx1ZXNba2V5XSwgb3B0LCAhaGFzT3duKHJhd1Byb3BzLCBrZXkpICYmICFoYXNPd24ocmF3UHJvcHMsIGh5cGhlbmF0ZShrZXkpKSk7XHJcbiAgICB9XHJcbn1cclxuLyoqXHJcbiAqIGRldiBvbmx5XHJcbiAqL1xyXG5mdW5jdGlvbiB2YWxpZGF0ZVByb3AobmFtZSwgdmFsdWUsIHByb3AsIGlzQWJzZW50KSB7XHJcbiAgICBjb25zdCB7IHR5cGUsIHJlcXVpcmVkLCB2YWxpZGF0b3IgfSA9IHByb3A7XHJcbiAgICAvLyByZXF1aXJlZCFcclxuICAgIGlmIChyZXF1aXJlZCAmJiBpc0Fic2VudCkge1xyXG4gICAgICAgIHdhcm4oJ01pc3NpbmcgcmVxdWlyZWQgcHJvcDogXCInICsgbmFtZSArICdcIicpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIG1pc3NpbmcgYnV0IG9wdGlvbmFsXHJcbiAgICBpZiAodmFsdWUgPT0gbnVsbCAmJiAhcHJvcC5yZXF1aXJlZCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIHR5cGUgY2hlY2tcclxuICAgIGlmICh0eXBlICE9IG51bGwgJiYgdHlwZSAhPT0gdHJ1ZSkge1xyXG4gICAgICAgIGxldCBpc1ZhbGlkID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgdHlwZXMgPSBpc0FycmF5KHR5cGUpID8gdHlwZSA6IFt0eXBlXTtcclxuICAgICAgICBjb25zdCBleHBlY3RlZFR5cGVzID0gW107XHJcbiAgICAgICAgLy8gdmFsdWUgaXMgdmFsaWQgYXMgbG9uZyBhcyBvbmUgb2YgdGhlIHNwZWNpZmllZCB0eXBlcyBtYXRjaFxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoICYmICFpc1ZhbGlkOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgeyB2YWxpZCwgZXhwZWN0ZWRUeXBlIH0gPSBhc3NlcnRUeXBlKHZhbHVlLCB0eXBlc1tpXSk7XHJcbiAgICAgICAgICAgIGV4cGVjdGVkVHlwZXMucHVzaChleHBlY3RlZFR5cGUgfHwgJycpO1xyXG4gICAgICAgICAgICBpc1ZhbGlkID0gdmFsaWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaXNWYWxpZCkge1xyXG4gICAgICAgICAgICB3YXJuKGdldEludmFsaWRUeXBlTWVzc2FnZShuYW1lLCB2YWx1ZSwgZXhwZWN0ZWRUeXBlcykpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gY3VzdG9tIHZhbGlkYXRvclxyXG4gICAgaWYgKHZhbGlkYXRvciAmJiAhdmFsaWRhdG9yKHZhbHVlKSkge1xyXG4gICAgICAgIHdhcm4oJ0ludmFsaWQgcHJvcDogY3VzdG9tIHZhbGlkYXRvciBjaGVjayBmYWlsZWQgZm9yIHByb3AgXCInICsgbmFtZSArICdcIi4nKTtcclxuICAgIH1cclxufVxyXG5jb25zdCBpc1NpbXBsZVR5cGUgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoJ1N0cmluZyxOdW1iZXIsQm9vbGVhbixGdW5jdGlvbixTeW1ib2wsQmlnSW50Jyk7XHJcbi8qKlxyXG4gKiBkZXYgb25seVxyXG4gKi9cclxuZnVuY3Rpb24gYXNzZXJ0VHlwZSh2YWx1ZSwgdHlwZSkge1xyXG4gICAgbGV0IHZhbGlkO1xyXG4gICAgY29uc3QgZXhwZWN0ZWRUeXBlID0gZ2V0VHlwZSh0eXBlKTtcclxuICAgIGlmIChpc1NpbXBsZVR5cGUoZXhwZWN0ZWRUeXBlKSkge1xyXG4gICAgICAgIGNvbnN0IHQgPSB0eXBlb2YgdmFsdWU7XHJcbiAgICAgICAgdmFsaWQgPSB0ID09PSBleHBlY3RlZFR5cGUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAvLyBmb3IgcHJpbWl0aXZlIHdyYXBwZXIgb2JqZWN0c1xyXG4gICAgICAgIGlmICghdmFsaWQgJiYgdCA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgdmFsaWQgPSB2YWx1ZSBpbnN0YW5jZW9mIHR5cGU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSAnT2JqZWN0Jykge1xyXG4gICAgICAgIHZhbGlkID0gaXNPYmplY3QodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSAnQXJyYXknKSB7XHJcbiAgICAgICAgdmFsaWQgPSBpc0FycmF5KHZhbHVlKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0gJ251bGwnKSB7XHJcbiAgICAgICAgdmFsaWQgPSB2YWx1ZSA9PT0gbnVsbDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHZhbGlkID0gdmFsdWUgaW5zdGFuY2VvZiB0eXBlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB2YWxpZCxcclxuICAgICAgICBleHBlY3RlZFR5cGVcclxuICAgIH07XHJcbn1cclxuLyoqXHJcbiAqIGRldiBvbmx5XHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRJbnZhbGlkVHlwZU1lc3NhZ2UobmFtZSwgdmFsdWUsIGV4cGVjdGVkVHlwZXMpIHtcclxuICAgIGxldCBtZXNzYWdlID0gYEludmFsaWQgcHJvcDogdHlwZSBjaGVjayBmYWlsZWQgZm9yIHByb3AgXCIke25hbWV9XCIuYCArXHJcbiAgICAgICAgYCBFeHBlY3RlZCAke2V4cGVjdGVkVHlwZXMubWFwKGNhcGl0YWxpemUpLmpvaW4oJyB8ICcpfWA7XHJcbiAgICBjb25zdCBleHBlY3RlZFR5cGUgPSBleHBlY3RlZFR5cGVzWzBdO1xyXG4gICAgY29uc3QgcmVjZWl2ZWRUeXBlID0gdG9SYXdUeXBlKHZhbHVlKTtcclxuICAgIGNvbnN0IGV4cGVjdGVkVmFsdWUgPSBzdHlsZVZhbHVlKHZhbHVlLCBleHBlY3RlZFR5cGUpO1xyXG4gICAgY29uc3QgcmVjZWl2ZWRWYWx1ZSA9IHN0eWxlVmFsdWUodmFsdWUsIHJlY2VpdmVkVHlwZSk7XHJcbiAgICAvLyBjaGVjayBpZiB3ZSBuZWVkIHRvIHNwZWNpZnkgZXhwZWN0ZWQgdmFsdWVcclxuICAgIGlmIChleHBlY3RlZFR5cGVzLmxlbmd0aCA9PT0gMSAmJlxyXG4gICAgICAgIGlzRXhwbGljYWJsZShleHBlY3RlZFR5cGUpICYmXHJcbiAgICAgICAgIWlzQm9vbGVhbihleHBlY3RlZFR5cGUsIHJlY2VpdmVkVHlwZSkpIHtcclxuICAgICAgICBtZXNzYWdlICs9IGAgd2l0aCB2YWx1ZSAke2V4cGVjdGVkVmFsdWV9YDtcclxuICAgIH1cclxuICAgIG1lc3NhZ2UgKz0gYCwgZ290ICR7cmVjZWl2ZWRUeXBlfSBgO1xyXG4gICAgLy8gY2hlY2sgaWYgd2UgbmVlZCB0byBzcGVjaWZ5IHJlY2VpdmVkIHZhbHVlXHJcbiAgICBpZiAoaXNFeHBsaWNhYmxlKHJlY2VpdmVkVHlwZSkpIHtcclxuICAgICAgICBtZXNzYWdlICs9IGB3aXRoIHZhbHVlICR7cmVjZWl2ZWRWYWx1ZX0uYDtcclxuICAgIH1cclxuICAgIHJldHVybiBtZXNzYWdlO1xyXG59XHJcbi8qKlxyXG4gKiBkZXYgb25seVxyXG4gKi9cclxuZnVuY3Rpb24gc3R5bGVWYWx1ZSh2YWx1ZSwgdHlwZSkge1xyXG4gICAgaWYgKHR5cGUgPT09ICdTdHJpbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuIGBcIiR7dmFsdWV9XCJgO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodHlwZSA9PT0gJ051bWJlcicpIHtcclxuICAgICAgICByZXR1cm4gYCR7TnVtYmVyKHZhbHVlKX1gO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGAke3ZhbHVlfWA7XHJcbiAgICB9XHJcbn1cclxuLyoqXHJcbiAqIGRldiBvbmx5XHJcbiAqL1xyXG5mdW5jdGlvbiBpc0V4cGxpY2FibGUodHlwZSkge1xyXG4gICAgY29uc3QgZXhwbGljaXRUeXBlcyA9IFsnc3RyaW5nJywgJ251bWJlcicsICdib29sZWFuJ107XHJcbiAgICByZXR1cm4gZXhwbGljaXRUeXBlcy5zb21lKGVsZW0gPT4gdHlwZS50b0xvd2VyQ2FzZSgpID09PSBlbGVtKTtcclxufVxyXG4vKipcclxuICogZGV2IG9ubHlcclxuICovXHJcbmZ1bmN0aW9uIGlzQm9vbGVhbiguLi5hcmdzKSB7XHJcbiAgICByZXR1cm4gYXJncy5zb21lKGVsZW0gPT4gZWxlbS50b0xvd2VyQ2FzZSgpID09PSAnYm9vbGVhbicpO1xyXG59XG5cbmNvbnN0IGlzSW50ZXJuYWxLZXkgPSAoa2V5KSA9PiBrZXlbMF0gPT09ICdfJyB8fCBrZXkgPT09ICckc3RhYmxlJztcclxuY29uc3Qgbm9ybWFsaXplU2xvdFZhbHVlID0gKHZhbHVlKSA9PiBpc0FycmF5KHZhbHVlKVxyXG4gICAgPyB2YWx1ZS5tYXAobm9ybWFsaXplVk5vZGUpXHJcbiAgICA6IFtub3JtYWxpemVWTm9kZSh2YWx1ZSldO1xyXG5jb25zdCBub3JtYWxpemVTbG90ID0gKGtleSwgcmF3U2xvdCwgY3R4KSA9PiB7XHJcbiAgICBpZiAocmF3U2xvdC5fbikge1xyXG4gICAgICAgIC8vIGFscmVhZHkgbm9ybWFsaXplZCAtICM1MzUzXHJcbiAgICAgICAgcmV0dXJuIHJhd1Nsb3Q7XHJcbiAgICB9XHJcbiAgICBjb25zdCBub3JtYWxpemVkID0gd2l0aEN0eCgoLi4uYXJncykgPT4ge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgY3VycmVudEluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYFNsb3QgXCIke2tleX1cIiBpbnZva2VkIG91dHNpZGUgb2YgdGhlIHJlbmRlciBmdW5jdGlvbjogYCArXHJcbiAgICAgICAgICAgICAgICBgdGhpcyB3aWxsIG5vdCB0cmFjayBkZXBlbmRlbmNpZXMgdXNlZCBpbiB0aGUgc2xvdC4gYCArXHJcbiAgICAgICAgICAgICAgICBgSW52b2tlIHRoZSBzbG90IGZ1bmN0aW9uIGluc2lkZSB0aGUgcmVuZGVyIGZ1bmN0aW9uIGluc3RlYWQuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBub3JtYWxpemVTbG90VmFsdWUocmF3U2xvdCguLi5hcmdzKSk7XHJcbiAgICB9LCBjdHgpO1xyXG4gICAgbm9ybWFsaXplZC5fYyA9IGZhbHNlO1xyXG4gICAgcmV0dXJuIG5vcm1hbGl6ZWQ7XHJcbn07XHJcbmNvbnN0IG5vcm1hbGl6ZU9iamVjdFNsb3RzID0gKHJhd1Nsb3RzLCBzbG90cywgaW5zdGFuY2UpID0+IHtcclxuICAgIGNvbnN0IGN0eCA9IHJhd1Nsb3RzLl9jdHg7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiByYXdTbG90cykge1xyXG4gICAgICAgIGlmIChpc0ludGVybmFsS2V5KGtleSkpXHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gcmF3U2xvdHNba2V5XTtcclxuICAgICAgICBpZiAoaXNGdW5jdGlvbih2YWx1ZSkpIHtcclxuICAgICAgICAgICAgc2xvdHNba2V5XSA9IG5vcm1hbGl6ZVNsb3Qoa2V5LCB2YWx1ZSwgY3R4KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICAhKGZhbHNlICkpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYE5vbi1mdW5jdGlvbiB2YWx1ZSBlbmNvdW50ZXJlZCBmb3Igc2xvdCBcIiR7a2V5fVwiLiBgICtcclxuICAgICAgICAgICAgICAgICAgICBgUHJlZmVyIGZ1bmN0aW9uIHNsb3RzIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVNsb3RWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgIHNsb3RzW2tleV0gPSAoKSA9PiBub3JtYWxpemVkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuY29uc3Qgbm9ybWFsaXplVk5vZGVTbG90cyA9IChpbnN0YW5jZSwgY2hpbGRyZW4pID0+IHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAhaXNLZWVwQWxpdmUoaW5zdGFuY2Uudm5vZGUpICYmXHJcbiAgICAgICAgIShmYWxzZSApKSB7XHJcbiAgICAgICAgd2FybihgTm9uLWZ1bmN0aW9uIHZhbHVlIGVuY291bnRlcmVkIGZvciBkZWZhdWx0IHNsb3QuIGAgK1xyXG4gICAgICAgICAgICBgUHJlZmVyIGZ1bmN0aW9uIHNsb3RzIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuYCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplU2xvdFZhbHVlKGNoaWxkcmVuKTtcclxuICAgIGluc3RhbmNlLnNsb3RzLmRlZmF1bHQgPSAoKSA9PiBub3JtYWxpemVkO1xyXG59O1xyXG5jb25zdCBpbml0U2xvdHMgPSAoaW5zdGFuY2UsIGNoaWxkcmVuKSA9PiB7XHJcbiAgICBpZiAoaW5zdGFuY2Uudm5vZGUuc2hhcGVGbGFnICYgMzIgLyogU2hhcGVGbGFncy5TTE9UU19DSElMRFJFTiAqLykge1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSBjaGlsZHJlbi5fO1xyXG4gICAgICAgIGlmICh0eXBlKSB7XHJcbiAgICAgICAgICAgIC8vIHVzZXJzIGNhbiBnZXQgdGhlIHNoYWxsb3cgcmVhZG9ubHkgdmVyc2lvbiBvZiB0aGUgc2xvdHMgb2JqZWN0IHRocm91Z2ggYHRoaXMuJHNsb3RzYCxcclxuICAgICAgICAgICAgLy8gd2Ugc2hvdWxkIGF2b2lkIHRoZSBwcm94eSBvYmplY3QgcG9sbHV0aW5nIHRoZSBzbG90cyBvZiB0aGUgaW50ZXJuYWwgaW5zdGFuY2VcclxuICAgICAgICAgICAgaW5zdGFuY2Uuc2xvdHMgPSB0b1JhdyhjaGlsZHJlbik7XHJcbiAgICAgICAgICAgIC8vIG1ha2UgY29tcGlsZXIgbWFya2VyIG5vbi1lbnVtZXJhYmxlXHJcbiAgICAgICAgICAgIGRlZihjaGlsZHJlbiwgJ18nLCB0eXBlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG5vcm1hbGl6ZU9iamVjdFNsb3RzKGNoaWxkcmVuLCAoaW5zdGFuY2Uuc2xvdHMgPSB7fSkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGluc3RhbmNlLnNsb3RzID0ge307XHJcbiAgICAgICAgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIG5vcm1hbGl6ZVZOb2RlU2xvdHMoaW5zdGFuY2UsIGNoaWxkcmVuKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBkZWYoaW5zdGFuY2Uuc2xvdHMsIEludGVybmFsT2JqZWN0S2V5LCAxKTtcclxufTtcclxuY29uc3QgdXBkYXRlU2xvdHMgPSAoaW5zdGFuY2UsIGNoaWxkcmVuLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgIGNvbnN0IHsgdm5vZGUsIHNsb3RzIH0gPSBpbnN0YW5jZTtcclxuICAgIGxldCBuZWVkRGVsZXRpb25DaGVjayA9IHRydWU7XHJcbiAgICBsZXQgZGVsZXRpb25Db21wYXJpc29uVGFyZ2V0ID0gRU1QVFlfT0JKO1xyXG4gICAgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDMyIC8qIFNoYXBlRmxhZ3MuU0xPVFNfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICBjb25zdCB0eXBlID0gY2hpbGRyZW4uXztcclxuICAgICAgICBpZiAodHlwZSkge1xyXG4gICAgICAgICAgICAvLyBjb21waWxlZCBzbG90cy5cclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBpc0htclVwZGF0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBQYXJlbnQgd2FzIEhNUiB1cGRhdGVkIHNvIHNsb3QgY29udGVudCBtYXkgaGF2ZSBjaGFuZ2VkLlxyXG4gICAgICAgICAgICAgICAgLy8gZm9yY2UgdXBkYXRlIHNsb3RzIGFuZCBtYXJrIGluc3RhbmNlIGZvciBobXIgYXMgd2VsbFxyXG4gICAgICAgICAgICAgICAgZXh0ZW5kKHNsb3RzLCBjaGlsZHJlbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAob3B0aW1pemVkICYmIHR5cGUgPT09IDEgLyogU2xvdEZsYWdzLlNUQUJMRSAqLykge1xyXG4gICAgICAgICAgICAgICAgLy8gY29tcGlsZWQgQU5EIHN0YWJsZS5cclxuICAgICAgICAgICAgICAgIC8vIG5vIG5lZWQgdG8gdXBkYXRlLCBhbmQgc2tpcCBzdGFsZSBzbG90cyByZW1vdmFsLlxyXG4gICAgICAgICAgICAgICAgbmVlZERlbGV0aW9uQ2hlY2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbXBpbGVkIGJ1dCBkeW5hbWljICh2LWlmL3YtZm9yIG9uIHNsb3RzKSAtIHVwZGF0ZSBzbG90cywgYnV0IHNraXBcclxuICAgICAgICAgICAgICAgIC8vIG5vcm1hbGl6YXRpb24uXHJcbiAgICAgICAgICAgICAgICBleHRlbmQoc2xvdHMsIGNoaWxkcmVuKTtcclxuICAgICAgICAgICAgICAgIC8vICMyODkzXHJcbiAgICAgICAgICAgICAgICAvLyB3aGVuIHJlbmRlcmluZyB0aGUgb3B0aW1pemVkIHNsb3RzIGJ5IG1hbnVhbGx5IHdyaXR0ZW4gcmVuZGVyIGZ1bmN0aW9uLFxyXG4gICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBkZWxldGUgdGhlIGBzbG90cy5fYCBmbGFnIGlmIG5lY2Vzc2FyeSB0byBtYWtlIHN1YnNlcXVlbnQgdXBkYXRlcyByZWxpYWJsZSxcclxuICAgICAgICAgICAgICAgIC8vIGkuZS4gbGV0IHRoZSBgcmVuZGVyU2xvdGAgY3JlYXRlIHRoZSBiYWlsZWQgRnJhZ21lbnRcclxuICAgICAgICAgICAgICAgIGlmICghb3B0aW1pemVkICYmIHR5cGUgPT09IDEgLyogU2xvdEZsYWdzLlNUQUJMRSAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzbG90cy5fO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBuZWVkRGVsZXRpb25DaGVjayA9ICFjaGlsZHJlbi4kc3RhYmxlO1xyXG4gICAgICAgICAgICBub3JtYWxpemVPYmplY3RTbG90cyhjaGlsZHJlbiwgc2xvdHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkZWxldGlvbkNvbXBhcmlzb25UYXJnZXQgPSBjaGlsZHJlbjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgICAgLy8gbm9uIHNsb3Qgb2JqZWN0IGNoaWxkcmVuIChkaXJlY3QgdmFsdWUpIHBhc3NlZCB0byBhIGNvbXBvbmVudFxyXG4gICAgICAgIG5vcm1hbGl6ZVZOb2RlU2xvdHMoaW5zdGFuY2UsIGNoaWxkcmVuKTtcclxuICAgICAgICBkZWxldGlvbkNvbXBhcmlzb25UYXJnZXQgPSB7IGRlZmF1bHQ6IDEgfTtcclxuICAgIH1cclxuICAgIC8vIGRlbGV0ZSBzdGFsZSBzbG90c1xyXG4gICAgaWYgKG5lZWREZWxldGlvbkNoZWNrKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gc2xvdHMpIHtcclxuICAgICAgICAgICAgaWYgKCFpc0ludGVybmFsS2V5KGtleSkgJiYgIShrZXkgaW4gZGVsZXRpb25Db21wYXJpc29uVGFyZ2V0KSkge1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIHNsb3RzW2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZUFwcENvbnRleHQoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGFwcDogbnVsbCxcclxuICAgICAgICBjb25maWc6IHtcclxuICAgICAgICAgICAgaXNOYXRpdmVUYWc6IE5PLFxyXG4gICAgICAgICAgICBwZXJmb3JtYW5jZTogZmFsc2UsXHJcbiAgICAgICAgICAgIGdsb2JhbFByb3BlcnRpZXM6IHt9LFxyXG4gICAgICAgICAgICBvcHRpb25NZXJnZVN0cmF0ZWdpZXM6IHt9LFxyXG4gICAgICAgICAgICBlcnJvckhhbmRsZXI6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgd2FybkhhbmRsZXI6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7fVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbWl4aW5zOiBbXSxcclxuICAgICAgICBjb21wb25lbnRzOiB7fSxcclxuICAgICAgICBkaXJlY3RpdmVzOiB7fSxcclxuICAgICAgICBwcm92aWRlczogT2JqZWN0LmNyZWF0ZShudWxsKSxcclxuICAgICAgICBvcHRpb25zQ2FjaGU6IG5ldyBXZWFrTWFwKCksXHJcbiAgICAgICAgcHJvcHNDYWNoZTogbmV3IFdlYWtNYXAoKSxcclxuICAgICAgICBlbWl0c0NhY2hlOiBuZXcgV2Vha01hcCgpXHJcbiAgICB9O1xyXG59XHJcbmxldCB1aWQgPSAwO1xyXG5mdW5jdGlvbiBjcmVhdGVBcHBBUEkocmVuZGVyLCBoeWRyYXRlKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gY3JlYXRlQXBwKHJvb3RDb21wb25lbnQsIHJvb3RQcm9wcyA9IG51bGwpIHtcclxuICAgICAgICBpZiAoIWlzRnVuY3Rpb24ocm9vdENvbXBvbmVudCkpIHtcclxuICAgICAgICAgICAgcm9vdENvbXBvbmVudCA9IE9iamVjdC5hc3NpZ24oe30sIHJvb3RDb21wb25lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocm9vdFByb3BzICE9IG51bGwgJiYgIWlzT2JqZWN0KHJvb3RQcm9wcykpIHtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHdhcm4oYHJvb3QgcHJvcHMgcGFzc2VkIHRvIGFwcC5tb3VudCgpIG11c3QgYmUgYW4gb2JqZWN0LmApO1xyXG4gICAgICAgICAgICByb290UHJvcHMgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjb250ZXh0ID0gY3JlYXRlQXBwQ29udGV4dCgpO1xyXG4gICAgICAgIGNvbnN0IGluc3RhbGxlZFBsdWdpbnMgPSBuZXcgU2V0KCk7XHJcbiAgICAgICAgbGV0IGlzTW91bnRlZCA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGFwcCA9IChjb250ZXh0LmFwcCA9IHtcclxuICAgICAgICAgICAgX3VpZDogdWlkKyssXHJcbiAgICAgICAgICAgIF9jb21wb25lbnQ6IHJvb3RDb21wb25lbnQsXHJcbiAgICAgICAgICAgIF9wcm9wczogcm9vdFByb3BzLFxyXG4gICAgICAgICAgICBfY29udGFpbmVyOiBudWxsLFxyXG4gICAgICAgICAgICBfY29udGV4dDogY29udGV4dCxcclxuICAgICAgICAgICAgX2luc3RhbmNlOiBudWxsLFxyXG4gICAgICAgICAgICB2ZXJzaW9uLFxyXG4gICAgICAgICAgICBnZXQgY29uZmlnKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY29uZmlnO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzZXQgY29uZmlnKHYpIHtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBhcHAuY29uZmlnIGNhbm5vdCBiZSByZXBsYWNlZC4gTW9kaWZ5IGluZGl2aWR1YWwgb3B0aW9ucyBpbnN0ZWFkLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB1c2UocGx1Z2luLCAuLi5vcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5zdGFsbGVkUGx1Z2lucy5oYXMocGx1Z2luKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB3YXJuKGBQbHVnaW4gaGFzIGFscmVhZHkgYmVlbiBhcHBsaWVkIHRvIHRhcmdldCBhcHAuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChwbHVnaW4gJiYgaXNGdW5jdGlvbihwbHVnaW4uaW5zdGFsbCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWRQbHVnaW5zLmFkZChwbHVnaW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIHBsdWdpbi5pbnN0YWxsKGFwcCwgLi4ub3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKHBsdWdpbikpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWRQbHVnaW5zLmFkZChwbHVnaW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIHBsdWdpbihhcHAsIC4uLm9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgQSBwbHVnaW4gbXVzdCBlaXRoZXIgYmUgYSBmdW5jdGlvbiBvciBhbiBvYmplY3Qgd2l0aCBhbiBcImluc3RhbGxcIiBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYGZ1bmN0aW9uLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFwcDtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbWl4aW4obWl4aW4pIHtcclxuICAgICAgICAgICAgICAgIGlmIChfX1ZVRV9PUFRJT05TX0FQSV9fKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0Lm1peGlucy5pbmNsdWRlcyhtaXhpbikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5taXhpbnMucHVzaChtaXhpbik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuKCdNaXhpbiBoYXMgYWxyZWFkeSBiZWVuIGFwcGxpZWQgdG8gdGFyZ2V0IGFwcCcgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1peGluLm5hbWUgPyBgOiAke21peGluLm5hbWV9YCA6ICcnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybignTWl4aW5zIGFyZSBvbmx5IGF2YWlsYWJsZSBpbiBidWlsZHMgc3VwcG9ydGluZyBPcHRpb25zIEFQSScpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFwcDtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY29tcG9uZW50KG5hbWUsIGNvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlQ29tcG9uZW50TmFtZShuYW1lLCBjb250ZXh0LmNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIWNvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNvbXBvbmVudHNbbmFtZV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGNvbnRleHQuY29tcG9uZW50c1tuYW1lXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYENvbXBvbmVudCBcIiR7bmFtZX1cIiBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQgaW4gdGFyZ2V0IGFwcC5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnRleHQuY29tcG9uZW50c1tuYW1lXSA9IGNvbXBvbmVudDtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhcHA7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGRpcmVjdGl2ZShuYW1lLCBkaXJlY3RpdmUpIHtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZURpcmVjdGl2ZU5hbWUobmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIWRpcmVjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmRpcmVjdGl2ZXNbbmFtZV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGNvbnRleHQuZGlyZWN0aXZlc1tuYW1lXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYERpcmVjdGl2ZSBcIiR7bmFtZX1cIiBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQgaW4gdGFyZ2V0IGFwcC5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnRleHQuZGlyZWN0aXZlc1tuYW1lXSA9IGRpcmVjdGl2ZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhcHA7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG1vdW50KHJvb3RDb250YWluZXIsIGlzSHlkcmF0ZSwgaXNTVkcpIHtcclxuICAgICAgICAgICAgICAgIGlmICghaXNNb3VudGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gIzU1NzFcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHJvb3RDb250YWluZXIuX192dWVfYXBwX18pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FybihgVGhlcmUgaXMgYWxyZWFkeSBhbiBhcHAgaW5zdGFuY2UgbW91bnRlZCBvbiB0aGUgaG9zdCBjb250YWluZXIuXFxuYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgIElmIHlvdSB3YW50IHRvIG1vdW50IGFub3RoZXIgYXBwIG9uIHRoZSBzYW1lIGhvc3QgY29udGFpbmVyLGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYCB5b3UgbmVlZCB0byB1bm1vdW50IHRoZSBwcmV2aW91cyBhcHAgYnkgY2FsbGluZyBcXGBhcHAudW5tb3VudCgpXFxgIGZpcnN0LmApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB2bm9kZSA9IGNyZWF0ZVZOb2RlKHJvb3RDb21wb25lbnQsIHJvb3RQcm9wcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gc3RvcmUgYXBwIGNvbnRleHQgb24gdGhlIHJvb3QgVk5vZGUuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyB3aWxsIGJlIHNldCBvbiB0aGUgcm9vdCBpbnN0YW5jZSBvbiBpbml0aWFsIG1vdW50LlxyXG4gICAgICAgICAgICAgICAgICAgIHZub2RlLmFwcENvbnRleHQgPSBjb250ZXh0O1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIEhNUiByb290IHJlbG9hZFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5yZWxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXIoY2xvbmVWTm9kZSh2bm9kZSksIHJvb3RDb250YWluZXIsIGlzU1ZHKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzSHlkcmF0ZSAmJiBoeWRyYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh5ZHJhdGUodm5vZGUsIHJvb3RDb250YWluZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyKHZub2RlLCByb290Q29udGFpbmVyLCBpc1NWRyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlzTW91bnRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgYXBwLl9jb250YWluZXIgPSByb290Q29udGFpbmVyO1xyXG4gICAgICAgICAgICAgICAgICAgIHJvb3RDb250YWluZXIuX192dWVfYXBwX18gPSBhcHA7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwLl9pbnN0YW5jZSA9IHZub2RlLmNvbXBvbmVudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGV2dG9vbHNJbml0QXBwKGFwcCwgdmVyc2lvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRFeHBvc2VQcm94eSh2bm9kZS5jb21wb25lbnQpIHx8IHZub2RlLmNvbXBvbmVudC5wcm94eTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYEFwcCBoYXMgYWxyZWFkeSBiZWVuIG1vdW50ZWQuXFxuYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBJZiB5b3Ugd2FudCB0byByZW1vdW50IHRoZSBzYW1lIGFwcCwgbW92ZSB5b3VyIGFwcCBjcmVhdGlvbiBsb2dpYyBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYGludG8gYSBmYWN0b3J5IGZ1bmN0aW9uIGFuZCBjcmVhdGUgZnJlc2ggYXBwIGluc3RhbmNlcyBmb3IgZWFjaCBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYG1vdW50IC0gZS5nLiBcXGBjb25zdCBjcmVhdGVNeUFwcCA9ICgpID0+IGNyZWF0ZUFwcChBcHApXFxgYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHVubW91bnQoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNNb3VudGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyKG51bGwsIGFwcC5fY29udGFpbmVyKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHAuX2luc3RhbmNlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGV2dG9vbHNVbm1vdW50QXBwKGFwcCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBhcHAuX2NvbnRhaW5lci5fX3Z1ZV9hcHBfXztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYENhbm5vdCB1bm1vdW50IGFuIGFwcCB0aGF0IGlzIG5vdCBtb3VudGVkLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBwcm92aWRlKGtleSwgdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYga2V5IGluIGNvbnRleHQucHJvdmlkZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBBcHAgYWxyZWFkeSBwcm92aWRlcyBwcm9wZXJ0eSB3aXRoIGtleSBcIiR7U3RyaW5nKGtleSl9XCIuIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgSXQgd2lsbCBiZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSBuZXcgdmFsdWUuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnByb3ZpZGVzW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhcHA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gYXBwO1xyXG4gICAgfTtcclxufVxuXG4vKipcclxuICogRnVuY3Rpb24gZm9yIGhhbmRsaW5nIGEgdGVtcGxhdGUgcmVmXHJcbiAqL1xyXG5mdW5jdGlvbiBzZXRSZWYocmF3UmVmLCBvbGRSYXdSZWYsIHBhcmVudFN1c3BlbnNlLCB2bm9kZSwgaXNVbm1vdW50ID0gZmFsc2UpIHtcclxuICAgIGlmIChpc0FycmF5KHJhd1JlZikpIHtcclxuICAgICAgICByYXdSZWYuZm9yRWFjaCgociwgaSkgPT4gc2V0UmVmKHIsIG9sZFJhd1JlZiAmJiAoaXNBcnJheShvbGRSYXdSZWYpID8gb2xkUmF3UmVmW2ldIDogb2xkUmF3UmVmKSwgcGFyZW50U3VzcGVuc2UsIHZub2RlLCBpc1VubW91bnQpKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoaXNBc3luY1dyYXBwZXIodm5vZGUpICYmICFpc1VubW91bnQpIHtcclxuICAgICAgICAvLyB3aGVuIG1vdW50aW5nIGFzeW5jIGNvbXBvbmVudHMsIG5vdGhpbmcgbmVlZHMgdG8gYmUgZG9uZSxcclxuICAgICAgICAvLyBiZWNhdXNlIHRoZSB0ZW1wbGF0ZSByZWYgaXMgZm9yd2FyZGVkIHRvIGlubmVyIGNvbXBvbmVudFxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlZlZhbHVlID0gdm5vZGUuc2hhcGVGbGFnICYgNCAvKiBTaGFwZUZsYWdzLlNUQVRFRlVMX0NPTVBPTkVOVCAqL1xyXG4gICAgICAgID8gZ2V0RXhwb3NlUHJveHkodm5vZGUuY29tcG9uZW50KSB8fCB2bm9kZS5jb21wb25lbnQucHJveHlcclxuICAgICAgICA6IHZub2RlLmVsO1xyXG4gICAgY29uc3QgdmFsdWUgPSBpc1VubW91bnQgPyBudWxsIDogcmVmVmFsdWU7XHJcbiAgICBjb25zdCB7IGk6IG93bmVyLCByOiByZWYgfSA9IHJhd1JlZjtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIW93bmVyKSB7XHJcbiAgICAgICAgd2FybihgTWlzc2luZyByZWYgb3duZXIgY29udGV4dC4gcmVmIGNhbm5vdCBiZSB1c2VkIG9uIGhvaXN0ZWQgdm5vZGVzLiBgICtcclxuICAgICAgICAgICAgYEEgdm5vZGUgd2l0aCByZWYgbXVzdCBiZSBjcmVhdGVkIGluc2lkZSB0aGUgcmVuZGVyIGZ1bmN0aW9uLmApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IG9sZFJlZiA9IG9sZFJhd1JlZiAmJiBvbGRSYXdSZWYucjtcclxuICAgIGNvbnN0IHJlZnMgPSBvd25lci5yZWZzID09PSBFTVBUWV9PQkogPyAob3duZXIucmVmcyA9IHt9KSA6IG93bmVyLnJlZnM7XHJcbiAgICBjb25zdCBzZXR1cFN0YXRlID0gb3duZXIuc2V0dXBTdGF0ZTtcclxuICAgIC8vIGR5bmFtaWMgcmVmIGNoYW5nZWQuIHVuc2V0IG9sZCByZWZcclxuICAgIGlmIChvbGRSZWYgIT0gbnVsbCAmJiBvbGRSZWYgIT09IHJlZikge1xyXG4gICAgICAgIGlmIChpc1N0cmluZyhvbGRSZWYpKSB7XHJcbiAgICAgICAgICAgIHJlZnNbb2xkUmVmXSA9IG51bGw7XHJcbiAgICAgICAgICAgIGlmIChoYXNPd24oc2V0dXBTdGF0ZSwgb2xkUmVmKSkge1xyXG4gICAgICAgICAgICAgICAgc2V0dXBTdGF0ZVtvbGRSZWZdID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpc1JlZihvbGRSZWYpKSB7XHJcbiAgICAgICAgICAgIG9sZFJlZi52YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGlzRnVuY3Rpb24ocmVmKSkge1xyXG4gICAgICAgIGNhbGxXaXRoRXJyb3JIYW5kbGluZyhyZWYsIG93bmVyLCAxMiAvKiBFcnJvckNvZGVzLkZVTkNUSU9OX1JFRiAqLywgW3ZhbHVlLCByZWZzXSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBfaXNTdHJpbmcgPSBpc1N0cmluZyhyZWYpO1xyXG4gICAgICAgIGNvbnN0IF9pc1JlZiA9IGlzUmVmKHJlZik7XHJcbiAgICAgICAgaWYgKF9pc1N0cmluZyB8fCBfaXNSZWYpIHtcclxuICAgICAgICAgICAgY29uc3QgZG9TZXQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmF3UmVmLmYpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZyA9IF9pc1N0cmluZyA/IHJlZnNbcmVmXSA6IHJlZi52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNVbm1vdW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJyYXkoZXhpc3RpbmcpICYmIHJlbW92ZShleGlzdGluZywgcmVmVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0FycmF5KGV4aXN0aW5nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9pc1N0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnNbcmVmXSA9IFtyZWZWYWx1ZV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc093bihzZXR1cFN0YXRlLCByZWYpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHVwU3RhdGVbcmVmXSA9IHJlZnNbcmVmXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWYudmFsdWUgPSBbcmVmVmFsdWVdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyYXdSZWYuaylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmc1tyYXdSZWYua10gPSByZWYudmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWV4aXN0aW5nLmluY2x1ZGVzKHJlZlZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcucHVzaChyZWZWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChfaXNTdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICByZWZzW3JlZl0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzT3duKHNldHVwU3RhdGUsIHJlZikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0dXBTdGF0ZVtyZWZdID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoX2lzUmVmKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVmLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJhd1JlZi5rKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZzW3Jhd1JlZi5rXSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybignSW52YWxpZCB0ZW1wbGF0ZSByZWYgdHlwZTonLCByZWYsIGAoJHt0eXBlb2YgcmVmfSlgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBkb1NldC5pZCA9IC0xO1xyXG4gICAgICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KGRvU2V0LCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkb1NldCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB3YXJuKCdJbnZhbGlkIHRlbXBsYXRlIHJlZiB0eXBlOicsIHJlZiwgYCgke3R5cGVvZiByZWZ9KWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxuXG5sZXQgaGFzTWlzbWF0Y2ggPSBmYWxzZTtcclxuY29uc3QgaXNTVkdDb250YWluZXIgPSAoY29udGFpbmVyKSA9PiAvc3ZnLy50ZXN0KGNvbnRhaW5lci5uYW1lc3BhY2VVUkkpICYmIGNvbnRhaW5lci50YWdOYW1lICE9PSAnZm9yZWlnbk9iamVjdCc7XHJcbmNvbnN0IGlzQ29tbWVudCA9IChub2RlKSA9PiBub2RlLm5vZGVUeXBlID09PSA4IC8qIERPTU5vZGVUeXBlcy5DT01NRU5UICovO1xyXG4vLyBOb3RlOiBoeWRyYXRpb24gaXMgRE9NLXNwZWNpZmljXHJcbi8vIEJ1dCB3ZSBoYXZlIHRvIHBsYWNlIGl0IGluIGNvcmUgZHVlIHRvIHRpZ2h0IGNvdXBsaW5nIHdpdGggY29yZSAtIHNwbGl0dGluZ1xyXG4vLyBpdCBvdXQgY3JlYXRlcyBhIHRvbiBvZiB1bm5lY2Vzc2FyeSBjb21wbGV4aXR5LlxyXG4vLyBIeWRyYXRpb24gYWxzbyBkZXBlbmRzIG9uIHNvbWUgcmVuZGVyZXIgaW50ZXJuYWwgbG9naWMgd2hpY2ggbmVlZHMgdG8gYmVcclxuLy8gcGFzc2VkIGluIHZpYSBhcmd1bWVudHMuXHJcbmZ1bmN0aW9uIGNyZWF0ZUh5ZHJhdGlvbkZ1bmN0aW9ucyhyZW5kZXJlckludGVybmFscykge1xyXG4gICAgY29uc3QgeyBtdDogbW91bnRDb21wb25lbnQsIHA6IHBhdGNoLCBvOiB7IHBhdGNoUHJvcCwgY3JlYXRlVGV4dCwgbmV4dFNpYmxpbmcsIHBhcmVudE5vZGUsIHJlbW92ZSwgaW5zZXJ0LCBjcmVhdGVDb21tZW50IH0gfSA9IHJlbmRlcmVySW50ZXJuYWxzO1xyXG4gICAgY29uc3QgaHlkcmF0ZSA9ICh2bm9kZSwgY29udGFpbmVyKSA9PiB7XHJcbiAgICAgICAgaWYgKCFjb250YWluZXIuaGFzQ2hpbGROb2RlcygpKSB7XHJcbiAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgd2FybihgQXR0ZW1wdGluZyB0byBoeWRyYXRlIGV4aXN0aW5nIG1hcmt1cCBidXQgY29udGFpbmVyIGlzIGVtcHR5LiBgICtcclxuICAgICAgICAgICAgICAgICAgICBgUGVyZm9ybWluZyBmdWxsIG1vdW50IGluc3RlYWQuYCk7XHJcbiAgICAgICAgICAgIHBhdGNoKG51bGwsIHZub2RlLCBjb250YWluZXIpO1xyXG4gICAgICAgICAgICBmbHVzaFBvc3RGbHVzaENicygpO1xyXG4gICAgICAgICAgICBjb250YWluZXIuX3Zub2RlID0gdm5vZGU7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaGFzTWlzbWF0Y2ggPSBmYWxzZTtcclxuICAgICAgICBoeWRyYXRlTm9kZShjb250YWluZXIuZmlyc3RDaGlsZCwgdm5vZGUsIG51bGwsIG51bGwsIG51bGwpO1xyXG4gICAgICAgIGZsdXNoUG9zdEZsdXNoQ2JzKCk7XHJcbiAgICAgICAgY29udGFpbmVyLl92bm9kZSA9IHZub2RlO1xyXG4gICAgICAgIGlmIChoYXNNaXNtYXRjaCAmJiAhZmFsc2UpIHtcclxuICAgICAgICAgICAgLy8gdGhpcyBlcnJvciBzaG91bGQgc2hvdyB1cCBpbiBwcm9kdWN0aW9uXHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEh5ZHJhdGlvbiBjb21wbGV0ZWQgYnV0IGNvbnRhaW5zIG1pc21hdGNoZXMuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IGh5ZHJhdGVOb2RlID0gKG5vZGUsIHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCA9IGZhbHNlKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaXNGcmFnbWVudFN0YXJ0ID0gaXNDb21tZW50KG5vZGUpICYmIG5vZGUuZGF0YSA9PT0gJ1snO1xyXG4gICAgICAgIGNvbnN0IG9uTWlzbWF0Y2ggPSAoKSA9PiBoYW5kbGVNaXNtYXRjaChub2RlLCB2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBpc0ZyYWdtZW50U3RhcnQpO1xyXG4gICAgICAgIGNvbnN0IHsgdHlwZSwgcmVmLCBzaGFwZUZsYWcsIHBhdGNoRmxhZyB9ID0gdm5vZGU7XHJcbiAgICAgICAgY29uc3QgZG9tVHlwZSA9IG5vZGUubm9kZVR5cGU7XHJcbiAgICAgICAgdm5vZGUuZWwgPSBub2RlO1xyXG4gICAgICAgIGlmIChwYXRjaEZsYWcgPT09IC0yIC8qIFBhdGNoRmxhZ3MuQkFJTCAqLykge1xyXG4gICAgICAgICAgICBvcHRpbWl6ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdm5vZGUuZHluYW1pY0NoaWxkcmVuID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IG5leHROb2RlID0gbnVsbDtcclxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBUZXh0OlxyXG4gICAgICAgICAgICAgICAgaWYgKGRvbVR5cGUgIT09IDMgLyogRE9NTm9kZVR5cGVzLlRFWFQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyAjNTcyOCBlbXB0eSB0ZXh0IG5vZGUgaW5zaWRlIGEgc2xvdCBjYW4gY2F1c2UgaHlkcmF0aW9uIGZhaWx1cmVcclxuICAgICAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHRoZSBzZXJ2ZXIgcmVuZGVyZWQgSFRNTCB3b24ndCBjb250YWluIGEgdGV4dCBub2RlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZub2RlLmNoaWxkcmVuID09PSAnJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnQoKHZub2RlLmVsID0gY3JlYXRlVGV4dCgnJykpLCBwYXJlbnROb2RlKG5vZGUpLCBub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBub2RlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBvbk1pc21hdGNoKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUuZGF0YSAhPT0gdm5vZGUuY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzTWlzbWF0Y2ggPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4oYEh5ZHJhdGlvbiB0ZXh0IG1pc21hdGNoOmAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBcXG4tIENsaWVudDogJHtKU09OLnN0cmluZ2lmeShub2RlLmRhdGEpfWAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBcXG4tIFNlcnZlcjogJHtKU09OLnN0cmluZ2lmeSh2bm9kZS5jaGlsZHJlbil9YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuZGF0YSA9IHZub2RlLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG5leHRTaWJsaW5nKG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgQ29tbWVudDpcclxuICAgICAgICAgICAgICAgIGlmIChkb21UeXBlICE9PSA4IC8qIERPTU5vZGVUeXBlcy5DT01NRU5UICovIHx8IGlzRnJhZ21lbnRTdGFydCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gb25NaXNtYXRjaCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBuZXh0U2libGluZyhub2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFN0YXRpYzpcclxuICAgICAgICAgICAgICAgIGlmIChkb21UeXBlICE9PSAxIC8qIERPTU5vZGVUeXBlcy5FTEVNRU5UICovICYmIGRvbVR5cGUgIT09IDMgLyogRE9NTm9kZVR5cGVzLlRFWFQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG9uTWlzbWF0Y2goKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGRldGVybWluZSBhbmNob3IsIGFkb3B0IGNvbnRlbnRcclxuICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG5vZGU7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHN0YXRpYyB2bm9kZSBoYXMgaXRzIGNvbnRlbnQgc3RyaXBwZWQgZHVyaW5nIGJ1aWxkLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGFkb3B0IGl0IGZyb20gdGhlIHNlcnZlci1yZW5kZXJlZCBIVE1MLlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5lZWRUb0Fkb3B0Q29udGVudCA9ICF2bm9kZS5jaGlsZHJlbi5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2bm9kZS5zdGF0aWNDb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZWVkVG9BZG9wdENvbnRlbnQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bm9kZS5jaGlsZHJlbiArPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHROb2RlLm5vZGVUeXBlID09PSAxIC8qIERPTU5vZGVUeXBlcy5FTEVNRU5UICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbmV4dE5vZGUub3V0ZXJIVE1MXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbmV4dE5vZGUuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IHZub2RlLnN0YXRpY0NvdW50IC0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdm5vZGUuYW5jaG9yID0gbmV4dE5vZGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBuZXh0U2libGluZyhuZXh0Tm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXh0Tm9kZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEZyYWdtZW50OlxyXG4gICAgICAgICAgICAgICAgaWYgKCFpc0ZyYWdtZW50U3RhcnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG9uTWlzbWF0Y2goKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gaHlkcmF0ZUZyYWdtZW50KG5vZGUsIHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGlmIChzaGFwZUZsYWcgJiAxIC8qIFNoYXBlRmxhZ3MuRUxFTUVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkb21UeXBlICE9PSAxIC8qIERPTU5vZGVUeXBlcy5FTEVNRU5UICovIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZub2RlLnR5cGUudG9Mb3dlckNhc2UoKSAhPT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gb25NaXNtYXRjaCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBoeWRyYXRlRWxlbWVudChub2RlLCB2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNoYXBlRmxhZyAmIDYgLyogU2hhcGVGbGFncy5DT01QT05FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHNldHRpbmcgdXAgdGhlIHJlbmRlciBlZmZlY3QsIGlmIHRoZSBpbml0aWFsIHZub2RlIGFscmVhZHlcclxuICAgICAgICAgICAgICAgICAgICAvLyBoYXMgLmVsIHNldCwgdGhlIGNvbXBvbmVudCB3aWxsIHBlcmZvcm0gaHlkcmF0aW9uIGluc3RlYWQgb2YgbW91bnRcclxuICAgICAgICAgICAgICAgICAgICAvLyBvbiBpdHMgc3ViLXRyZWUuXHJcbiAgICAgICAgICAgICAgICAgICAgdm5vZGUuc2xvdFNjb3BlSWRzID0gc2xvdFNjb3BlSWRzO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHBhcmVudE5vZGUobm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbW91bnRDb21wb25lbnQodm5vZGUsIGNvbnRhaW5lciwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkdDb250YWluZXIoY29udGFpbmVyKSwgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb21wb25lbnQgbWF5IGJlIGFzeW5jLCBzbyBpbiB0aGUgY2FzZSBvZiBmcmFnbWVudHMgd2UgY2Fubm90IHJlbHlcclxuICAgICAgICAgICAgICAgICAgICAvLyBvbiBjb21wb25lbnQncyByZW5kZXJlZCBvdXRwdXQgdG8gZGV0ZXJtaW5lIHRoZSBlbmQgb2YgdGhlIGZyYWdtZW50XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaW5zdGVhZCwgd2UgZG8gYSBsb29rYWhlYWQgdG8gZmluZCB0aGUgZW5kIGFuY2hvciBub2RlLlxyXG4gICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gaXNGcmFnbWVudFN0YXJ0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gbG9jYXRlQ2xvc2luZ0FzeW5jQW5jaG9yKG5vZGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbmV4dFNpYmxpbmcobm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gIzQyOTMgdGVsZXBvcnQgYXMgY29tcG9uZW50IHJvb3RcclxuICAgICAgICAgICAgICAgICAgICBpZiAobmV4dE5vZGUgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNDb21tZW50KG5leHROb2RlKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZS5kYXRhID09PSAndGVsZXBvcnQgZW5kJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG5leHRTaWJsaW5nKG5leHROb2RlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gIzM3ODdcclxuICAgICAgICAgICAgICAgICAgICAvLyBpZiBjb21wb25lbnQgaXMgYXN5bmMsIGl0IG1heSBnZXQgbW92ZWQgLyB1bm1vdW50ZWQgYmVmb3JlIGl0c1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlubmVyIGNvbXBvbmVudCBpcyBsb2FkZWQsIHNvIHdlIG5lZWQgdG8gZ2l2ZSBpdCBhIHBsYWNlaG9sZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdm5vZGUgdGhhdCBtYXRjaGVzIGl0cyBhZG9wdGVkIERPTS5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNBc3luY1dyYXBwZXIodm5vZGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdWJUcmVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNGcmFnbWVudFN0YXJ0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJUcmVlID0gY3JlYXRlVk5vZGUoRnJhZ21lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViVHJlZS5hbmNob3IgPSBuZXh0Tm9kZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbmV4dE5vZGUucHJldmlvdXNTaWJsaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjb250YWluZXIubGFzdENoaWxkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViVHJlZSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5ub2RlVHlwZSA9PT0gMyA/IGNyZWF0ZVRleHRWTm9kZSgnJykgOiBjcmVhdGVWTm9kZSgnZGl2Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgc3ViVHJlZS5lbCA9IG5vZGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZub2RlLmNvbXBvbmVudC5zdWJUcmVlID0gc3ViVHJlZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzaGFwZUZsYWcgJiA2NCAvKiBTaGFwZUZsYWdzLlRFTEVQT1JUICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRvbVR5cGUgIT09IDggLyogRE9NTm9kZVR5cGVzLkNPTU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBvbk1pc21hdGNoKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IHZub2RlLnR5cGUuaHlkcmF0ZShub2RlLCB2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIHJlbmRlcmVySW50ZXJuYWxzLCBoeWRyYXRlQ2hpbGRyZW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNoYXBlRmxhZyAmIDEyOCAvKiBTaGFwZUZsYWdzLlNVU1BFTlNFICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSB2bm9kZS50eXBlLmh5ZHJhdGUobm9kZSwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHQ29udGFpbmVyKHBhcmVudE5vZGUobm9kZSkpLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgcmVuZGVyZXJJbnRlcm5hbHMsIGh5ZHJhdGVOb2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oJ0ludmFsaWQgSG9zdFZOb2RlIHR5cGU6JywgdHlwZSwgYCgke3R5cGVvZiB0eXBlfSlgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJlZiAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHNldFJlZihyZWYsIG51bGwsIHBhcmVudFN1c3BlbnNlLCB2bm9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXh0Tm9kZTtcclxuICAgIH07XHJcbiAgICBjb25zdCBoeWRyYXRlRWxlbWVudCA9IChlbCwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgb3B0aW1pemVkID0gb3B0aW1pemVkIHx8ICEhdm5vZGUuZHluYW1pY0NoaWxkcmVuO1xyXG4gICAgICAgIGNvbnN0IHsgdHlwZSwgcHJvcHMsIHBhdGNoRmxhZywgc2hhcGVGbGFnLCBkaXJzIH0gPSB2bm9kZTtcclxuICAgICAgICAvLyAjNDAwNiBmb3IgZm9ybSBlbGVtZW50cyB3aXRoIG5vbi1zdHJpbmcgdi1tb2RlbCB2YWx1ZSBiaW5kaW5nc1xyXG4gICAgICAgIC8vIGUuZy4gPG9wdGlvbiA6dmFsdWU9XCJvYmpcIj4sIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiA6dHJ1ZS12YWx1ZT1cIjFcIj5cclxuICAgICAgICBjb25zdCBmb3JjZVBhdGNoVmFsdWUgPSAodHlwZSA9PT0gJ2lucHV0JyAmJiBkaXJzKSB8fCB0eXBlID09PSAnb3B0aW9uJztcclxuICAgICAgICAvLyBza2lwIHByb3BzICYgY2hpbGRyZW4gaWYgdGhpcyBpcyBob2lzdGVkIHN0YXRpYyBub2Rlc1xyXG4gICAgICAgIC8vICM1NDA1IGluIGRldiwgYWx3YXlzIGh5ZHJhdGUgY2hpbGRyZW4gZm9yIEhNUlxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgZm9yY2VQYXRjaFZhbHVlIHx8IHBhdGNoRmxhZyAhPT0gLTEgLyogUGF0Y2hGbGFncy5IT0lTVEVEICovKSB7XHJcbiAgICAgICAgICAgIGlmIChkaXJzKSB7XHJcbiAgICAgICAgICAgICAgICBpbnZva2VEaXJlY3RpdmVIb29rKHZub2RlLCBudWxsLCBwYXJlbnRDb21wb25lbnQsICdjcmVhdGVkJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gcHJvcHNcclxuICAgICAgICAgICAgaWYgKHByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZm9yY2VQYXRjaFZhbHVlIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgIW9wdGltaXplZCB8fFxyXG4gICAgICAgICAgICAgICAgICAgIHBhdGNoRmxhZyAmICgxNiAvKiBQYXRjaEZsYWdzLkZVTExfUFJPUFMgKi8gfCAzMiAvKiBQYXRjaEZsYWdzLkhZRFJBVEVfRVZFTlRTICovKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZm9yY2VQYXRjaFZhbHVlICYmIGtleS5lbmRzV2l0aCgndmFsdWUnKSkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc09uKGtleSkgJiYgIWlzUmVzZXJ2ZWRQcm9wKGtleSkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaFByb3AoZWwsIGtleSwgbnVsbCwgcHJvcHNba2V5XSwgZmFsc2UsIHVuZGVmaW5lZCwgcGFyZW50Q29tcG9uZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHByb3BzLm9uQ2xpY2spIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBGYXN0IHBhdGggZm9yIGNsaWNrIGxpc3RlbmVycyAod2hpY2ggaXMgbW9zdCBvZnRlbikgdG8gYXZvaWRcclxuICAgICAgICAgICAgICAgICAgICAvLyBpdGVyYXRpbmcgdGhyb3VnaCBwcm9wcy5cclxuICAgICAgICAgICAgICAgICAgICBwYXRjaFByb3AoZWwsICdvbkNsaWNrJywgbnVsbCwgcHJvcHMub25DbGljaywgZmFsc2UsIHVuZGVmaW5lZCwgcGFyZW50Q29tcG9uZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyB2bm9kZSAvIGRpcmVjdGl2ZSBob29rc1xyXG4gICAgICAgICAgICBsZXQgdm5vZGVIb29rcztcclxuICAgICAgICAgICAgaWYgKCh2bm9kZUhvb2tzID0gcHJvcHMgJiYgcHJvcHMub25Wbm9kZUJlZm9yZU1vdW50KSkge1xyXG4gICAgICAgICAgICAgICAgaW52b2tlVk5vZGVIb29rKHZub2RlSG9va3MsIHBhcmVudENvbXBvbmVudCwgdm5vZGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChkaXJzKSB7XHJcbiAgICAgICAgICAgICAgICBpbnZva2VEaXJlY3RpdmVIb29rKHZub2RlLCBudWxsLCBwYXJlbnRDb21wb25lbnQsICdiZWZvcmVNb3VudCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgodm5vZGVIb29rcyA9IHByb3BzICYmIHByb3BzLm9uVm5vZGVNb3VudGVkKSB8fCBkaXJzKSB7XHJcbiAgICAgICAgICAgICAgICBxdWV1ZUVmZmVjdFdpdGhTdXNwZW5zZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdm5vZGVIb29rcyAmJiBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rcywgcGFyZW50Q29tcG9uZW50LCB2bm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlycyAmJiBpbnZva2VEaXJlY3RpdmVIb29rKHZub2RlLCBudWxsLCBwYXJlbnRDb21wb25lbnQsICdtb3VudGVkJyk7XHJcbiAgICAgICAgICAgICAgICB9LCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gY2hpbGRyZW5cclxuICAgICAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi8gJiZcclxuICAgICAgICAgICAgICAgIC8vIHNraXAgaWYgZWxlbWVudCBoYXMgaW5uZXJIVE1MIC8gdGV4dENvbnRlbnRcclxuICAgICAgICAgICAgICAgICEocHJvcHMgJiYgKHByb3BzLmlubmVySFRNTCB8fCBwcm9wcy50ZXh0Q29udGVudCkpKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgbmV4dCA9IGh5ZHJhdGVDaGlsZHJlbihlbC5maXJzdENoaWxkLCB2bm9kZSwgZWwsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIGxldCBoYXNXYXJuZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHdoaWxlIChuZXh0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzTWlzbWF0Y2ggPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWhhc1dhcm5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuKGBIeWRyYXRpb24gY2hpbGRyZW4gbWlzbWF0Y2ggaW4gPCR7dm5vZGUudHlwZX0+OiBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBzZXJ2ZXIgcmVuZGVyZWQgZWxlbWVudCBjb250YWlucyBtb3JlIGNoaWxkIG5vZGVzIHRoYW4gY2xpZW50IHZkb20uYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc1dhcm5lZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBTU1JlZCBET00gY29udGFpbnMgbW9yZSBub2RlcyB0aGFuIGl0IHNob3VsZC4gUmVtb3ZlIHRoZW0uXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VyID0gbmV4dDtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0ID0gbmV4dC5uZXh0U2libGluZztcclxuICAgICAgICAgICAgICAgICAgICByZW1vdmUoY3VyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChzaGFwZUZsYWcgJiA4IC8qIFNoYXBlRmxhZ3MuVEVYVF9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVsLnRleHRDb250ZW50ICE9PSB2bm9kZS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc01pc21hdGNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FybihgSHlkcmF0aW9uIHRleHQgY29udGVudCBtaXNtYXRjaCBpbiA8JHt2bm9kZS50eXBlfT46XFxuYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgLSBDbGllbnQ6ICR7ZWwudGV4dENvbnRlbnR9XFxuYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgLSBTZXJ2ZXI6ICR7dm5vZGUuY2hpbGRyZW59YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWwudGV4dENvbnRlbnQgPSB2bm9kZS5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZWwubmV4dFNpYmxpbmc7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgaHlkcmF0ZUNoaWxkcmVuID0gKG5vZGUsIHBhcmVudFZOb2RlLCBjb250YWluZXIsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgb3B0aW1pemVkID0gb3B0aW1pemVkIHx8ICEhcGFyZW50Vk5vZGUuZHluYW1pY0NoaWxkcmVuO1xyXG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gcGFyZW50Vk5vZGUuY2hpbGRyZW47XHJcbiAgICAgICAgY29uc3QgbCA9IGNoaWxkcmVuLmxlbmd0aDtcclxuICAgICAgICBsZXQgaGFzV2FybmVkID0gZmFsc2U7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3Qgdm5vZGUgPSBvcHRpbWl6ZWRcclxuICAgICAgICAgICAgICAgID8gY2hpbGRyZW5baV1cclxuICAgICAgICAgICAgICAgIDogKGNoaWxkcmVuW2ldID0gbm9ybWFsaXplVk5vZGUoY2hpbGRyZW5baV0pKTtcclxuICAgICAgICAgICAgaWYgKG5vZGUpIHtcclxuICAgICAgICAgICAgICAgIG5vZGUgPSBoeWRyYXRlTm9kZShub2RlLCB2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHZub2RlLnR5cGUgPT09IFRleHQgJiYgIXZub2RlLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGhhc01pc21hdGNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWhhc1dhcm5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYEh5ZHJhdGlvbiBjaGlsZHJlbiBtaXNtYXRjaCBpbiA8JHtjb250YWluZXIudGFnTmFtZS50b0xvd2VyQ2FzZSgpfT46IGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgc2VydmVyIHJlbmRlcmVkIGVsZW1lbnQgY29udGFpbnMgZmV3ZXIgY2hpbGQgbm9kZXMgdGhhbiBjbGllbnQgdmRvbS5gKTtcclxuICAgICAgICAgICAgICAgICAgICBoYXNXYXJuZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gdGhlIFNTUmVkIERPTSBkaWRuJ3QgY29udGFpbiBlbm91Z2ggbm9kZXMuIE1vdW50IHRoZSBtaXNzaW5nIG9uZXMuXHJcbiAgICAgICAgICAgICAgICBwYXRjaChudWxsLCB2bm9kZSwgY29udGFpbmVyLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWR0NvbnRhaW5lcihjb250YWluZXIpLCBzbG90U2NvcGVJZHMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGh5ZHJhdGVGcmFnbWVudCA9IChub2RlLCB2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBjb25zdCB7IHNsb3RTY29wZUlkczogZnJhZ21lbnRTbG90U2NvcGVJZHMgfSA9IHZub2RlO1xyXG4gICAgICAgIGlmIChmcmFnbWVudFNsb3RTY29wZUlkcykge1xyXG4gICAgICAgICAgICBzbG90U2NvcGVJZHMgPSBzbG90U2NvcGVJZHNcclxuICAgICAgICAgICAgICAgID8gc2xvdFNjb3BlSWRzLmNvbmNhdChmcmFnbWVudFNsb3RTY29wZUlkcylcclxuICAgICAgICAgICAgICAgIDogZnJhZ21lbnRTbG90U2NvcGVJZHM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHBhcmVudE5vZGUobm9kZSk7XHJcbiAgICAgICAgY29uc3QgbmV4dCA9IGh5ZHJhdGVDaGlsZHJlbihuZXh0U2libGluZyhub2RlKSwgdm5vZGUsIGNvbnRhaW5lciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgIGlmIChuZXh0ICYmIGlzQ29tbWVudChuZXh0KSAmJiBuZXh0LmRhdGEgPT09ICddJykge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV4dFNpYmxpbmcoKHZub2RlLmFuY2hvciA9IG5leHQpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGZyYWdtZW50IGRpZG4ndCBoeWRyYXRlIHN1Y2Nlc3NmdWxseSwgc2luY2Ugd2UgZGlkbid0IGdldCBhIGVuZCBhbmNob3JcclxuICAgICAgICAgICAgLy8gYmFjay4gVGhpcyBzaG91bGQgaGF2ZSBsZWQgdG8gbm9kZS9jaGlsZHJlbiBtaXNtYXRjaCB3YXJuaW5ncy5cclxuICAgICAgICAgICAgaGFzTWlzbWF0Y2ggPSB0cnVlO1xyXG4gICAgICAgICAgICAvLyBzaW5jZSB0aGUgYW5jaG9yIGlzIG1pc3NpbmcsIHdlIG5lZWQgdG8gY3JlYXRlIG9uZSBhbmQgaW5zZXJ0IGl0XHJcbiAgICAgICAgICAgIGluc2VydCgodm5vZGUuYW5jaG9yID0gY3JlYXRlQ29tbWVudChgXWApKSwgY29udGFpbmVyLCBuZXh0KTtcclxuICAgICAgICAgICAgcmV0dXJuIG5leHQ7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IGhhbmRsZU1pc21hdGNoID0gKG5vZGUsIHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIGlzRnJhZ21lbnQpID0+IHtcclxuICAgICAgICBoYXNNaXNtYXRjaCA9IHRydWU7XHJcbiAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgIHdhcm4oYEh5ZHJhdGlvbiBub2RlIG1pc21hdGNoOlxcbi0gQ2xpZW50IHZub2RlOmAsIHZub2RlLnR5cGUsIGBcXG4tIFNlcnZlciByZW5kZXJlZCBET006YCwgbm9kZSwgbm9kZS5ub2RlVHlwZSA9PT0gMyAvKiBET01Ob2RlVHlwZXMuVEVYVCAqL1xyXG4gICAgICAgICAgICAgICAgPyBgKHRleHQpYFxyXG4gICAgICAgICAgICAgICAgOiBpc0NvbW1lbnQobm9kZSkgJiYgbm9kZS5kYXRhID09PSAnWydcclxuICAgICAgICAgICAgICAgICAgICA/IGAoc3RhcnQgb2YgZnJhZ21lbnQpYFxyXG4gICAgICAgICAgICAgICAgICAgIDogYGApO1xyXG4gICAgICAgIHZub2RlLmVsID0gbnVsbDtcclxuICAgICAgICBpZiAoaXNGcmFnbWVudCkge1xyXG4gICAgICAgICAgICAvLyByZW1vdmUgZXhjZXNzaXZlIGZyYWdtZW50IG5vZGVzXHJcbiAgICAgICAgICAgIGNvbnN0IGVuZCA9IGxvY2F0ZUNsb3NpbmdBc3luY0FuY2hvcihub2RlKTtcclxuICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSBuZXh0U2libGluZyhub2RlKTtcclxuICAgICAgICAgICAgICAgIGlmIChuZXh0ICYmIG5leHQgIT09IGVuZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZShuZXh0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG5leHQgPSBuZXh0U2libGluZyhub2RlKTtcclxuICAgICAgICBjb25zdCBjb250YWluZXIgPSBwYXJlbnROb2RlKG5vZGUpO1xyXG4gICAgICAgIHJlbW92ZShub2RlKTtcclxuICAgICAgICBwYXRjaChudWxsLCB2bm9kZSwgY29udGFpbmVyLCBuZXh0LCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWR0NvbnRhaW5lcihjb250YWluZXIpLCBzbG90U2NvcGVJZHMpO1xyXG4gICAgICAgIHJldHVybiBuZXh0O1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGxvY2F0ZUNsb3NpbmdBc3luY0FuY2hvciA9IChub2RlKSA9PiB7XHJcbiAgICAgICAgbGV0IG1hdGNoID0gMDtcclxuICAgICAgICB3aGlsZSAobm9kZSkge1xyXG4gICAgICAgICAgICBub2RlID0gbmV4dFNpYmxpbmcobm9kZSk7XHJcbiAgICAgICAgICAgIGlmIChub2RlICYmIGlzQ29tbWVudChub2RlKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKG5vZGUuZGF0YSA9PT0gJ1snKVxyXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoKys7XHJcbiAgICAgICAgICAgICAgICBpZiAobm9kZS5kYXRhID09PSAnXScpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2ggPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5leHRTaWJsaW5nKG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gtLTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIFtoeWRyYXRlLCBoeWRyYXRlTm9kZV07XHJcbn1cblxuLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzICovXHJcbmxldCBzdXBwb3J0ZWQ7XHJcbmxldCBwZXJmO1xyXG5mdW5jdGlvbiBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIHR5cGUpIHtcclxuICAgIGlmIChpbnN0YW5jZS5hcHBDb250ZXh0LmNvbmZpZy5wZXJmb3JtYW5jZSAmJiBpc1N1cHBvcnRlZCgpKSB7XHJcbiAgICAgICAgcGVyZi5tYXJrKGB2dWUtJHt0eXBlfS0ke2luc3RhbmNlLnVpZH1gKTtcclxuICAgIH1cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgZGV2dG9vbHNQZXJmU3RhcnQoaW5zdGFuY2UsIHR5cGUsIGlzU3VwcG9ydGVkKCkgPyBwZXJmLm5vdygpIDogRGF0ZS5ub3coKSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZW5kTWVhc3VyZShpbnN0YW5jZSwgdHlwZSkge1xyXG4gICAgaWYgKGluc3RhbmNlLmFwcENvbnRleHQuY29uZmlnLnBlcmZvcm1hbmNlICYmIGlzU3VwcG9ydGVkKCkpIHtcclxuICAgICAgICBjb25zdCBzdGFydFRhZyA9IGB2dWUtJHt0eXBlfS0ke2luc3RhbmNlLnVpZH1gO1xyXG4gICAgICAgIGNvbnN0IGVuZFRhZyA9IHN0YXJ0VGFnICsgYDplbmRgO1xyXG4gICAgICAgIHBlcmYubWFyayhlbmRUYWcpO1xyXG4gICAgICAgIHBlcmYubWVhc3VyZShgPCR7Zm9ybWF0Q29tcG9uZW50TmFtZShpbnN0YW5jZSwgaW5zdGFuY2UudHlwZSl9PiAke3R5cGV9YCwgc3RhcnRUYWcsIGVuZFRhZyk7XHJcbiAgICAgICAgcGVyZi5jbGVhck1hcmtzKHN0YXJ0VGFnKTtcclxuICAgICAgICBwZXJmLmNsZWFyTWFya3MoZW5kVGFnKTtcclxuICAgIH1cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgZGV2dG9vbHNQZXJmRW5kKGluc3RhbmNlLCB0eXBlLCBpc1N1cHBvcnRlZCgpID8gcGVyZi5ub3coKSA6IERhdGUubm93KCkpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGlzU3VwcG9ydGVkKCkge1xyXG4gICAgaWYgKHN1cHBvcnRlZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcmV0dXJuIHN1cHBvcnRlZDtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cucGVyZm9ybWFuY2UpIHtcclxuICAgICAgICBzdXBwb3J0ZWQgPSB0cnVlO1xyXG4gICAgICAgIHBlcmYgPSB3aW5kb3cucGVyZm9ybWFuY2U7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBzdXBwb3J0ZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdXBwb3J0ZWQ7XHJcbn1cblxuLyoqXHJcbiAqIFRoaXMgaXMgb25seSBjYWxsZWQgaW4gZXNtLWJ1bmRsZXIgYnVpbGRzLlxyXG4gKiBJdCBpcyBjYWxsZWQgd2hlbiBhIHJlbmRlcmVyIGlzIGNyZWF0ZWQsIGluIGBiYXNlQ3JlYXRlUmVuZGVyZXJgIHNvIHRoYXRcclxuICogaW1wb3J0aW5nIHJ1bnRpbWUtY29yZSBpcyBzaWRlLWVmZmVjdHMgZnJlZS5cclxuICpcclxuICogaXN0YW5idWwtaWdub3JlLW5leHRcclxuICovXHJcbmZ1bmN0aW9uIGluaXRGZWF0dXJlRmxhZ3MoKSB7XHJcbiAgICBjb25zdCBuZWVkV2FybiA9IFtdO1xyXG4gICAgaWYgKHR5cGVvZiBfX1ZVRV9PUFRJT05TX0FQSV9fICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgbmVlZFdhcm4ucHVzaChgX19WVUVfT1BUSU9OU19BUElfX2ApO1xyXG4gICAgICAgIGdldEdsb2JhbFRoaXMoKS5fX1ZVRV9PUFRJT05TX0FQSV9fID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgX19WVUVfUFJPRF9ERVZUT09MU19fICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgbmVlZFdhcm4ucHVzaChgX19WVUVfUFJPRF9ERVZUT09MU19fYCk7XHJcbiAgICAgICAgZ2V0R2xvYmFsVGhpcygpLl9fVlVFX1BST0RfREVWVE9PTFNfXyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBuZWVkV2Fybi5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBtdWx0aSA9IG5lZWRXYXJuLmxlbmd0aCA+IDE7XHJcbiAgICAgICAgY29uc29sZS53YXJuKGBGZWF0dXJlIGZsYWcke211bHRpID8gYHNgIDogYGB9ICR7bmVlZFdhcm4uam9pbignLCAnKX0gJHttdWx0aSA/IGBhcmVgIDogYGlzYH0gbm90IGV4cGxpY2l0bHkgZGVmaW5lZC4gWW91IGFyZSBydW5uaW5nIHRoZSBlc20tYnVuZGxlciBidWlsZCBvZiBWdWUsIGAgK1xyXG4gICAgICAgICAgICBgd2hpY2ggZXhwZWN0cyB0aGVzZSBjb21waWxlLXRpbWUgZmVhdHVyZSBmbGFncyB0byBiZSBnbG9iYWxseSBpbmplY3RlZCBgICtcclxuICAgICAgICAgICAgYHZpYSB0aGUgYnVuZGxlciBjb25maWcgaW4gb3JkZXIgdG8gZ2V0IGJldHRlciB0cmVlLXNoYWtpbmcgaW4gdGhlIGAgK1xyXG4gICAgICAgICAgICBgcHJvZHVjdGlvbiBidW5kbGUuXFxuXFxuYCArXHJcbiAgICAgICAgICAgIGBGb3IgbW9yZSBkZXRhaWxzLCBzZWUgaHR0cHM6Ly9saW5rLnZ1ZWpzLm9yZy9mZWF0dXJlLWZsYWdzLmApO1xyXG4gICAgfVxyXG59XG5cbmNvbnN0IHF1ZXVlUG9zdFJlbmRlckVmZmVjdCA9IHF1ZXVlRWZmZWN0V2l0aFN1c3BlbnNlXHJcbiAgICA7XHJcbi8qKlxyXG4gKiBUaGUgY3JlYXRlUmVuZGVyZXIgZnVuY3Rpb24gYWNjZXB0cyB0d28gZ2VuZXJpYyBhcmd1bWVudHM6XHJcbiAqIEhvc3ROb2RlIGFuZCBIb3N0RWxlbWVudCwgY29ycmVzcG9uZGluZyB0byBOb2RlIGFuZCBFbGVtZW50IHR5cGVzIGluIHRoZVxyXG4gKiBob3N0IGVudmlyb25tZW50LiBGb3IgZXhhbXBsZSwgZm9yIHJ1bnRpbWUtZG9tLCBIb3N0Tm9kZSB3b3VsZCBiZSB0aGUgRE9NXHJcbiAqIGBOb2RlYCBpbnRlcmZhY2UgYW5kIEhvc3RFbGVtZW50IHdvdWxkIGJlIHRoZSBET00gYEVsZW1lbnRgIGludGVyZmFjZS5cclxuICpcclxuICogQ3VzdG9tIHJlbmRlcmVycyBjYW4gcGFzcyBpbiB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgdHlwZXMgbGlrZSB0aGlzOlxyXG4gKlxyXG4gKiBgYGAganNcclxuICogY29uc3QgeyByZW5kZXIsIGNyZWF0ZUFwcCB9ID0gY3JlYXRlUmVuZGVyZXI8Tm9kZSwgRWxlbWVudD4oe1xyXG4gKiAgIHBhdGNoUHJvcCxcclxuICogICAuLi5ub2RlT3BzXHJcbiAqIH0pXHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlUmVuZGVyZXIob3B0aW9ucykge1xyXG4gICAgcmV0dXJuIGJhc2VDcmVhdGVSZW5kZXJlcihvcHRpb25zKTtcclxufVxyXG4vLyBTZXBhcmF0ZSBBUEkgZm9yIGNyZWF0aW5nIGh5ZHJhdGlvbi1lbmFibGVkIHJlbmRlcmVyLlxyXG4vLyBIeWRyYXRpb24gbG9naWMgaXMgb25seSB1c2VkIHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCBtYWtpbmcgaXRcclxuLy8gdHJlZS1zaGFrYWJsZS5cclxuZnVuY3Rpb24gY3JlYXRlSHlkcmF0aW9uUmVuZGVyZXIob3B0aW9ucykge1xyXG4gICAgcmV0dXJuIGJhc2VDcmVhdGVSZW5kZXJlcihvcHRpb25zLCBjcmVhdGVIeWRyYXRpb25GdW5jdGlvbnMpO1xyXG59XHJcbi8vIGltcGxlbWVudGF0aW9uXHJcbmZ1bmN0aW9uIGJhc2VDcmVhdGVSZW5kZXJlcihvcHRpb25zLCBjcmVhdGVIeWRyYXRpb25GbnMpIHtcclxuICAgIC8vIGNvbXBpbGUtdGltZSBmZWF0dXJlIGZsYWdzIGNoZWNrXHJcbiAgICB7XHJcbiAgICAgICAgaW5pdEZlYXR1cmVGbGFncygpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdGFyZ2V0ID0gZ2V0R2xvYmFsVGhpcygpO1xyXG4gICAgdGFyZ2V0Ll9fVlVFX18gPSB0cnVlO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICBzZXREZXZ0b29sc0hvb2sodGFyZ2V0Ll9fVlVFX0RFVlRPT0xTX0dMT0JBTF9IT09LX18sIHRhcmdldCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IGluc2VydDogaG9zdEluc2VydCwgcmVtb3ZlOiBob3N0UmVtb3ZlLCBwYXRjaFByb3A6IGhvc3RQYXRjaFByb3AsIGNyZWF0ZUVsZW1lbnQ6IGhvc3RDcmVhdGVFbGVtZW50LCBjcmVhdGVUZXh0OiBob3N0Q3JlYXRlVGV4dCwgY3JlYXRlQ29tbWVudDogaG9zdENyZWF0ZUNvbW1lbnQsIHNldFRleHQ6IGhvc3RTZXRUZXh0LCBzZXRFbGVtZW50VGV4dDogaG9zdFNldEVsZW1lbnRUZXh0LCBwYXJlbnROb2RlOiBob3N0UGFyZW50Tm9kZSwgbmV4dFNpYmxpbmc6IGhvc3ROZXh0U2libGluZywgc2V0U2NvcGVJZDogaG9zdFNldFNjb3BlSWQgPSBOT09QLCBjbG9uZU5vZGU6IGhvc3RDbG9uZU5vZGUsIGluc2VydFN0YXRpY0NvbnRlbnQ6IGhvc3RJbnNlcnRTdGF0aWNDb250ZW50IH0gPSBvcHRpb25zO1xyXG4gICAgLy8gTm90ZTogZnVuY3Rpb25zIGluc2lkZSB0aGlzIGNsb3N1cmUgc2hvdWxkIHVzZSBgY29uc3QgeHh4ID0gKCkgPT4ge31gXHJcbiAgICAvLyBzdHlsZSBpbiBvcmRlciB0byBwcmV2ZW50IGJlaW5nIGlubGluZWQgYnkgbWluaWZpZXJzLlxyXG4gICAgY29uc3QgcGF0Y2ggPSAobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciA9IG51bGwsIHBhcmVudENvbXBvbmVudCA9IG51bGwsIHBhcmVudFN1c3BlbnNlID0gbnVsbCwgaXNTVkcgPSBmYWxzZSwgc2xvdFNjb3BlSWRzID0gbnVsbCwgb3B0aW1pemVkID0gKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGlzSG1yVXBkYXRpbmcgPyBmYWxzZSA6ICEhbjIuZHluYW1pY0NoaWxkcmVuKSA9PiB7XHJcbiAgICAgICAgaWYgKG4xID09PSBuMikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHBhdGNoaW5nICYgbm90IHNhbWUgdHlwZSwgdW5tb3VudCBvbGQgdHJlZVxyXG4gICAgICAgIGlmIChuMSAmJiAhaXNTYW1lVk5vZGVUeXBlKG4xLCBuMikpIHtcclxuICAgICAgICAgICAgYW5jaG9yID0gZ2V0TmV4dEhvc3ROb2RlKG4xKTtcclxuICAgICAgICAgICAgdW5tb3VudChuMSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIG4xID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG4yLnBhdGNoRmxhZyA9PT0gLTIgLyogUGF0Y2hGbGFncy5CQUlMICovKSB7XHJcbiAgICAgICAgICAgIG9wdGltaXplZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBuMi5keW5hbWljQ2hpbGRyZW4gPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB7IHR5cGUsIHJlZiwgc2hhcGVGbGFnIH0gPSBuMjtcclxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBUZXh0OlxyXG4gICAgICAgICAgICAgICAgcHJvY2Vzc1RleHQobjEsIG4yLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBDb21tZW50OlxyXG4gICAgICAgICAgICAgICAgcHJvY2Vzc0NvbW1lbnROb2RlKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgU3RhdGljOlxyXG4gICAgICAgICAgICAgICAgaWYgKG4xID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBtb3VudFN0YXRpY05vZGUobjIsIGNvbnRhaW5lciwgYW5jaG9yLCBpc1NWRyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXRjaFN0YXRpY05vZGUobjEsIG4yLCBjb250YWluZXIsIGlzU1ZHKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEZyYWdtZW50OlxyXG4gICAgICAgICAgICAgICAgcHJvY2Vzc0ZyYWdtZW50KG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGlmIChzaGFwZUZsYWcgJiAxIC8qIFNoYXBlRmxhZ3MuRUxFTUVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NFbGVtZW50KG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzaGFwZUZsYWcgJiA2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0NvbXBvbmVudChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2hhcGVGbGFnICYgNjQgLyogU2hhcGVGbGFncy5URUxFUE9SVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGUucHJvY2VzcyhuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIGludGVybmFscyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzaGFwZUZsYWcgJiAxMjggLyogU2hhcGVGbGFncy5TVVNQRU5TRSAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGUucHJvY2VzcyhuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIGludGVybmFscyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKCdJbnZhbGlkIFZOb2RlIHR5cGU6JywgdHlwZSwgYCgke3R5cGVvZiB0eXBlfSlgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gc2V0IHJlZlxyXG4gICAgICAgIGlmIChyZWYgIT0gbnVsbCAmJiBwYXJlbnRDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgc2V0UmVmKHJlZiwgbjEgJiYgbjEucmVmLCBwYXJlbnRTdXNwZW5zZSwgbjIgfHwgbjEsICFuMik7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHByb2Nlc3NUZXh0ID0gKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IpID0+IHtcclxuICAgICAgICBpZiAobjEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBob3N0SW5zZXJ0KChuMi5lbCA9IGhvc3RDcmVhdGVUZXh0KG4yLmNoaWxkcmVuKSksIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsID0gKG4yLmVsID0gbjEuZWwpO1xyXG4gICAgICAgICAgICBpZiAobjIuY2hpbGRyZW4gIT09IG4xLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICBob3N0U2V0VGV4dChlbCwgbjIuY2hpbGRyZW4pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHByb2Nlc3NDb21tZW50Tm9kZSA9IChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yKSA9PiB7XHJcbiAgICAgICAgaWYgKG4xID09IG51bGwpIHtcclxuICAgICAgICAgICAgaG9zdEluc2VydCgobjIuZWwgPSBob3N0Q3JlYXRlQ29tbWVudChuMi5jaGlsZHJlbiB8fCAnJykpLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyB0aGVyZSdzIG5vIHN1cHBvcnQgZm9yIGR5bmFtaWMgY29tbWVudHNcclxuICAgICAgICAgICAgbjIuZWwgPSBuMS5lbDtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgbW91bnRTdGF0aWNOb2RlID0gKG4yLCBjb250YWluZXIsIGFuY2hvciwgaXNTVkcpID0+IHtcclxuICAgICAgICBbbjIuZWwsIG4yLmFuY2hvcl0gPSBob3N0SW5zZXJ0U3RhdGljQ29udGVudChuMi5jaGlsZHJlbiwgY29udGFpbmVyLCBhbmNob3IsIGlzU1ZHLCBuMi5lbCwgbjIuYW5jaG9yKTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIERldiAvIEhNUiBvbmx5XHJcbiAgICAgKi9cclxuICAgIGNvbnN0IHBhdGNoU3RhdGljTm9kZSA9IChuMSwgbjIsIGNvbnRhaW5lciwgaXNTVkcpID0+IHtcclxuICAgICAgICAvLyBzdGF0aWMgbm9kZXMgYXJlIG9ubHkgcGF0Y2hlZCBkdXJpbmcgZGV2IGZvciBITVJcclxuICAgICAgICBpZiAobjIuY2hpbGRyZW4gIT09IG4xLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFuY2hvciA9IGhvc3ROZXh0U2libGluZyhuMS5hbmNob3IpO1xyXG4gICAgICAgICAgICAvLyByZW1vdmUgZXhpc3RpbmdcclxuICAgICAgICAgICAgcmVtb3ZlU3RhdGljTm9kZShuMSk7XHJcbiAgICAgICAgICAgIFtuMi5lbCwgbjIuYW5jaG9yXSA9IGhvc3RJbnNlcnRTdGF0aWNDb250ZW50KG4yLmNoaWxkcmVuLCBjb250YWluZXIsIGFuY2hvciwgaXNTVkcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbjIuZWwgPSBuMS5lbDtcclxuICAgICAgICAgICAgbjIuYW5jaG9yID0gbjEuYW5jaG9yO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBtb3ZlU3RhdGljTm9kZSA9ICh7IGVsLCBhbmNob3IgfSwgY29udGFpbmVyLCBuZXh0U2libGluZykgPT4ge1xyXG4gICAgICAgIGxldCBuZXh0O1xyXG4gICAgICAgIHdoaWxlIChlbCAmJiBlbCAhPT0gYW5jaG9yKSB7XHJcbiAgICAgICAgICAgIG5leHQgPSBob3N0TmV4dFNpYmxpbmcoZWwpO1xyXG4gICAgICAgICAgICBob3N0SW5zZXJ0KGVsLCBjb250YWluZXIsIG5leHRTaWJsaW5nKTtcclxuICAgICAgICAgICAgZWwgPSBuZXh0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBob3N0SW5zZXJ0KGFuY2hvciwgY29udGFpbmVyLCBuZXh0U2libGluZyk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcmVtb3ZlU3RhdGljTm9kZSA9ICh7IGVsLCBhbmNob3IgfSkgPT4ge1xyXG4gICAgICAgIGxldCBuZXh0O1xyXG4gICAgICAgIHdoaWxlIChlbCAmJiBlbCAhPT0gYW5jaG9yKSB7XHJcbiAgICAgICAgICAgIG5leHQgPSBob3N0TmV4dFNpYmxpbmcoZWwpO1xyXG4gICAgICAgICAgICBob3N0UmVtb3ZlKGVsKTtcclxuICAgICAgICAgICAgZWwgPSBuZXh0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBob3N0UmVtb3ZlKGFuY2hvcik7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcHJvY2Vzc0VsZW1lbnQgPSAobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgaXNTVkcgPSBpc1NWRyB8fCBuMi50eXBlID09PSAnc3ZnJztcclxuICAgICAgICBpZiAobjEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBtb3VudEVsZW1lbnQobjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcGF0Y2hFbGVtZW50KG4xLCBuMiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgbW91bnRFbGVtZW50ID0gKHZub2RlLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgbGV0IGVsO1xyXG4gICAgICAgIGxldCB2bm9kZUhvb2s7XHJcbiAgICAgICAgY29uc3QgeyB0eXBlLCBwcm9wcywgc2hhcGVGbGFnLCB0cmFuc2l0aW9uLCBwYXRjaEZsYWcsIGRpcnMgfSA9IHZub2RlO1xyXG4gICAgICAgIGlmICghKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgIHZub2RlLmVsICYmXHJcbiAgICAgICAgICAgIGhvc3RDbG9uZU5vZGUgIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgICBwYXRjaEZsYWcgPT09IC0xIC8qIFBhdGNoRmxhZ3MuSE9JU1RFRCAqLykge1xyXG4gICAgICAgICAgICAvLyBJZiBhIHZub2RlIGhhcyBub24tbnVsbCBlbCwgaXQgbWVhbnMgaXQncyBiZWluZyByZXVzZWQuXHJcbiAgICAgICAgICAgIC8vIE9ubHkgc3RhdGljIHZub2RlcyBjYW4gYmUgcmV1c2VkLCBzbyBpdHMgbW91bnRlZCBET00gbm9kZXMgc2hvdWxkIGJlXHJcbiAgICAgICAgICAgIC8vIGV4YWN0bHkgdGhlIHNhbWUsIGFuZCB3ZSBjYW4gc2ltcGx5IGRvIGEgY2xvbmUgaGVyZS5cclxuICAgICAgICAgICAgLy8gb25seSBkbyB0aGlzIGluIHByb2R1Y3Rpb24gc2luY2UgY2xvbmVkIHRyZWVzIGNhbm5vdCBiZSBITVIgdXBkYXRlZC5cclxuICAgICAgICAgICAgZWwgPSB2bm9kZS5lbCA9IGhvc3RDbG9uZU5vZGUodm5vZGUuZWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZWwgPSB2bm9kZS5lbCA9IGhvc3RDcmVhdGVFbGVtZW50KHZub2RlLnR5cGUsIGlzU1ZHLCBwcm9wcyAmJiBwcm9wcy5pcywgcHJvcHMpO1xyXG4gICAgICAgICAgICAvLyBtb3VudCBjaGlsZHJlbiBmaXJzdCwgc2luY2Ugc29tZSBwcm9wcyBtYXkgcmVseSBvbiBjaGlsZCBjb250ZW50XHJcbiAgICAgICAgICAgIC8vIGJlaW5nIGFscmVhZHkgcmVuZGVyZWQsIGUuZy4gYDxzZWxlY3QgdmFsdWU+YFxyXG4gICAgICAgICAgICBpZiAoc2hhcGVGbGFnICYgOCAvKiBTaGFwZUZsYWdzLlRFWFRfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgICAgIGhvc3RTZXRFbGVtZW50VGV4dChlbCwgdm5vZGUuY2hpbGRyZW4pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHNoYXBlRmxhZyAmIDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgICAgIG1vdW50Q2hpbGRyZW4odm5vZGUuY2hpbGRyZW4sIGVsLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRyAmJiB0eXBlICE9PSAnZm9yZWlnbk9iamVjdCcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZGlycykge1xyXG4gICAgICAgICAgICAgICAgaW52b2tlRGlyZWN0aXZlSG9vayh2bm9kZSwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCAnY3JlYXRlZCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHByb3BzXHJcbiAgICAgICAgICAgIGlmIChwcm9wcykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcHJvcHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ICE9PSAndmFsdWUnICYmICFpc1Jlc2VydmVkUHJvcChrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RQYXRjaFByb3AoZWwsIGtleSwgbnVsbCwgcHJvcHNba2V5XSwgaXNTVkcsIHZub2RlLmNoaWxkcmVuLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB1bm1vdW50Q2hpbGRyZW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgICAgICogU3BlY2lhbCBjYXNlIGZvciBzZXR0aW5nIHZhbHVlIG9uIERPTSBlbGVtZW50czpcclxuICAgICAgICAgICAgICAgICAqIC0gaXQgY2FuIGJlIG9yZGVyLXNlbnNpdGl2ZSAoZS5nLiBzaG91bGQgYmUgc2V0ICphZnRlciogbWluL21heCwgIzIzMjUsICM0MDI0KVxyXG4gICAgICAgICAgICAgICAgICogLSBpdCBuZWVkcyB0byBiZSBmb3JjZWQgKCMxNDcxKVxyXG4gICAgICAgICAgICAgICAgICogIzIzNTMgcHJvcG9zZXMgYWRkaW5nIGFub3RoZXIgcmVuZGVyZXIgb3B0aW9uIHRvIGNvbmZpZ3VyZSB0aGlzLCBidXRcclxuICAgICAgICAgICAgICAgICAqIHRoZSBwcm9wZXJ0aWVzIGFmZmVjdHMgYXJlIHNvIGZpbml0ZSBpdCBpcyB3b3J0aCBzcGVjaWFsIGNhc2luZyBpdFxyXG4gICAgICAgICAgICAgICAgICogaGVyZSB0byByZWR1Y2UgdGhlIGNvbXBsZXhpdHkuIChTcGVjaWFsIGNhc2luZyBpdCBhbHNvIHNob3VsZCBub3RcclxuICAgICAgICAgICAgICAgICAqIGFmZmVjdCBub24tRE9NIHJlbmRlcmVycylcclxuICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKCd2YWx1ZScgaW4gcHJvcHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBob3N0UGF0Y2hQcm9wKGVsLCAndmFsdWUnLCBudWxsLCBwcm9wcy52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoKHZub2RlSG9vayA9IHByb3BzLm9uVm5vZGVCZWZvcmVNb3VudCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBwYXJlbnRDb21wb25lbnQsIHZub2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBzY29wZUlkXHJcbiAgICAgICAgICAgIHNldFNjb3BlSWQoZWwsIHZub2RlLCB2bm9kZS5zY29wZUlkLCBzbG90U2NvcGVJZHMsIHBhcmVudENvbXBvbmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbCwgJ19fdm5vZGUnLCB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogdm5vZGUsXHJcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsLCAnX192dWVQYXJlbnRDb21wb25lbnQnLCB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogcGFyZW50Q29tcG9uZW50LFxyXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2VcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkaXJzKSB7XHJcbiAgICAgICAgICAgIGludm9rZURpcmVjdGl2ZUhvb2sodm5vZGUsIG51bGwsIHBhcmVudENvbXBvbmVudCwgJ2JlZm9yZU1vdW50Jyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vICMxNTgzIEZvciBpbnNpZGUgc3VzcGVuc2UgKyBzdXNwZW5zZSBub3QgcmVzb2x2ZWQgY2FzZSwgZW50ZXIgaG9vayBzaG91bGQgY2FsbCB3aGVuIHN1c3BlbnNlIHJlc29sdmVkXHJcbiAgICAgICAgLy8gIzE2ODkgRm9yIGluc2lkZSBzdXNwZW5zZSArIHN1c3BlbnNlIHJlc29sdmVkIGNhc2UsIGp1c3QgY2FsbCBpdFxyXG4gICAgICAgIGNvbnN0IG5lZWRDYWxsVHJhbnNpdGlvbkhvb2tzID0gKCFwYXJlbnRTdXNwZW5zZSB8fCAocGFyZW50U3VzcGVuc2UgJiYgIXBhcmVudFN1c3BlbnNlLnBlbmRpbmdCcmFuY2gpKSAmJlxyXG4gICAgICAgICAgICB0cmFuc2l0aW9uICYmXHJcbiAgICAgICAgICAgICF0cmFuc2l0aW9uLnBlcnNpc3RlZDtcclxuICAgICAgICBpZiAobmVlZENhbGxUcmFuc2l0aW9uSG9va3MpIHtcclxuICAgICAgICAgICAgdHJhbnNpdGlvbi5iZWZvcmVFbnRlcihlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGhvc3RJbnNlcnQoZWwsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICBpZiAoKHZub2RlSG9vayA9IHByb3BzICYmIHByb3BzLm9uVm5vZGVNb3VudGVkKSB8fFxyXG4gICAgICAgICAgICBuZWVkQ2FsbFRyYW5zaXRpb25Ib29rcyB8fFxyXG4gICAgICAgICAgICBkaXJzKSB7XHJcbiAgICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZUhvb2sgJiYgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50Q29tcG9uZW50LCB2bm9kZSk7XHJcbiAgICAgICAgICAgICAgICBuZWVkQ2FsbFRyYW5zaXRpb25Ib29rcyAmJiB0cmFuc2l0aW9uLmVudGVyKGVsKTtcclxuICAgICAgICAgICAgICAgIGRpcnMgJiYgaW52b2tlRGlyZWN0aXZlSG9vayh2bm9kZSwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCAnbW91bnRlZCcpO1xyXG4gICAgICAgICAgICB9LCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHNldFNjb3BlSWQgPSAoZWwsIHZub2RlLCBzY29wZUlkLCBzbG90U2NvcGVJZHMsIHBhcmVudENvbXBvbmVudCkgPT4ge1xyXG4gICAgICAgIGlmIChzY29wZUlkKSB7XHJcbiAgICAgICAgICAgIGhvc3RTZXRTY29wZUlkKGVsLCBzY29wZUlkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNsb3RTY29wZUlkcykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNsb3RTY29wZUlkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgaG9zdFNldFNjb3BlSWQoZWwsIHNsb3RTY29wZUlkc1tpXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhcmVudENvbXBvbmVudCkge1xyXG4gICAgICAgICAgICBsZXQgc3ViVHJlZSA9IHBhcmVudENvbXBvbmVudC5zdWJUcmVlO1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICBzdWJUcmVlLnBhdGNoRmxhZyA+IDAgJiZcclxuICAgICAgICAgICAgICAgIHN1YlRyZWUucGF0Y2hGbGFnICYgMjA0OCAvKiBQYXRjaEZsYWdzLkRFVl9ST09UX0ZSQUdNRU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICBzdWJUcmVlID1cclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJTaW5nbGVSb290KHN1YlRyZWUuY2hpbGRyZW4pIHx8IHN1YlRyZWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZub2RlID09PSBzdWJUcmVlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRWTm9kZSA9IHBhcmVudENvbXBvbmVudC52bm9kZTtcclxuICAgICAgICAgICAgICAgIHNldFNjb3BlSWQoZWwsIHBhcmVudFZOb2RlLCBwYXJlbnRWTm9kZS5zY29wZUlkLCBwYXJlbnRWTm9kZS5zbG90U2NvcGVJZHMsIHBhcmVudENvbXBvbmVudC5wYXJlbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IG1vdW50Q2hpbGRyZW4gPSAoY2hpbGRyZW4sIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIHN0YXJ0ID0gMCkgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gKGNoaWxkcmVuW2ldID0gb3B0aW1pemVkXHJcbiAgICAgICAgICAgICAgICA/IGNsb25lSWZNb3VudGVkKGNoaWxkcmVuW2ldKVxyXG4gICAgICAgICAgICAgICAgOiBub3JtYWxpemVWTm9kZShjaGlsZHJlbltpXSkpO1xyXG4gICAgICAgICAgICBwYXRjaChudWxsLCBjaGlsZCwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHBhdGNoRWxlbWVudCA9IChuMSwgbjIsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVsID0gKG4yLmVsID0gbjEuZWwpO1xyXG4gICAgICAgIGxldCB7IHBhdGNoRmxhZywgZHluYW1pY0NoaWxkcmVuLCBkaXJzIH0gPSBuMjtcclxuICAgICAgICAvLyAjMTQyNiB0YWtlIHRoZSBvbGQgdm5vZGUncyBwYXRjaCBmbGFnIGludG8gYWNjb3VudCBzaW5jZSB1c2VyIG1heSBjbG9uZSBhXHJcbiAgICAgICAgLy8gY29tcGlsZXItZ2VuZXJhdGVkIHZub2RlLCB3aGljaCBkZS1vcHRzIHRvIEZVTExfUFJPUFNcclxuICAgICAgICBwYXRjaEZsYWcgfD0gbjEucGF0Y2hGbGFnICYgMTYgLyogUGF0Y2hGbGFncy5GVUxMX1BST1BTICovO1xyXG4gICAgICAgIGNvbnN0IG9sZFByb3BzID0gbjEucHJvcHMgfHwgRU1QVFlfT0JKO1xyXG4gICAgICAgIGNvbnN0IG5ld1Byb3BzID0gbjIucHJvcHMgfHwgRU1QVFlfT0JKO1xyXG4gICAgICAgIGxldCB2bm9kZUhvb2s7XHJcbiAgICAgICAgLy8gZGlzYWJsZSByZWN1cnNlIGluIGJlZm9yZVVwZGF0ZSBob29rc1xyXG4gICAgICAgIHBhcmVudENvbXBvbmVudCAmJiB0b2dnbGVSZWN1cnNlKHBhcmVudENvbXBvbmVudCwgZmFsc2UpO1xyXG4gICAgICAgIGlmICgodm5vZGVIb29rID0gbmV3UHJvcHMub25Wbm9kZUJlZm9yZVVwZGF0ZSkpIHtcclxuICAgICAgICAgICAgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50Q29tcG9uZW50LCBuMiwgbjEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGlycykge1xyXG4gICAgICAgICAgICBpbnZva2VEaXJlY3RpdmVIb29rKG4yLCBuMSwgcGFyZW50Q29tcG9uZW50LCAnYmVmb3JlVXBkYXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBhcmVudENvbXBvbmVudCAmJiB0b2dnbGVSZWN1cnNlKHBhcmVudENvbXBvbmVudCwgdHJ1ZSk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBpc0htclVwZGF0aW5nKSB7XHJcbiAgICAgICAgICAgIC8vIEhNUiB1cGRhdGVkLCBmb3JjZSBmdWxsIGRpZmZcclxuICAgICAgICAgICAgcGF0Y2hGbGFnID0gMDtcclxuICAgICAgICAgICAgb3B0aW1pemVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGR5bmFtaWNDaGlsZHJlbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGFyZUNoaWxkcmVuU1ZHID0gaXNTVkcgJiYgbjIudHlwZSAhPT0gJ2ZvcmVpZ25PYmplY3QnO1xyXG4gICAgICAgIGlmIChkeW5hbWljQ2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgcGF0Y2hCbG9ja0NoaWxkcmVuKG4xLmR5bmFtaWNDaGlsZHJlbiwgZHluYW1pY0NoaWxkcmVuLCBlbCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgYXJlQ2hpbGRyZW5TVkcsIHNsb3RTY29wZUlkcyk7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgcGFyZW50Q29tcG9uZW50ICYmIHBhcmVudENvbXBvbmVudC50eXBlLl9faG1ySWQpIHtcclxuICAgICAgICAgICAgICAgIHRyYXZlcnNlU3RhdGljQ2hpbGRyZW4objEsIG4yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICghb3B0aW1pemVkKSB7XHJcbiAgICAgICAgICAgIC8vIGZ1bGwgZGlmZlxyXG4gICAgICAgICAgICBwYXRjaENoaWxkcmVuKG4xLCBuMiwgZWwsIG51bGwsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGFyZUNoaWxkcmVuU1ZHLCBzbG90U2NvcGVJZHMsIGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhdGNoRmxhZyA+IDApIHtcclxuICAgICAgICAgICAgLy8gdGhlIHByZXNlbmNlIG9mIGEgcGF0Y2hGbGFnIG1lYW5zIHRoaXMgZWxlbWVudCdzIHJlbmRlciBjb2RlIHdhc1xyXG4gICAgICAgICAgICAvLyBnZW5lcmF0ZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBjYW4gdGFrZSB0aGUgZmFzdCBwYXRoLlxyXG4gICAgICAgICAgICAvLyBpbiB0aGlzIHBhdGggb2xkIG5vZGUgYW5kIG5ldyBub2RlIGFyZSBndWFyYW50ZWVkIHRvIGhhdmUgdGhlIHNhbWUgc2hhcGVcclxuICAgICAgICAgICAgLy8gKGkuZS4gYXQgdGhlIGV4YWN0IHNhbWUgcG9zaXRpb24gaW4gdGhlIHNvdXJjZSB0ZW1wbGF0ZSlcclxuICAgICAgICAgICAgaWYgKHBhdGNoRmxhZyAmIDE2IC8qIFBhdGNoRmxhZ3MuRlVMTF9QUk9QUyAqLykge1xyXG4gICAgICAgICAgICAgICAgLy8gZWxlbWVudCBwcm9wcyBjb250YWluIGR5bmFtaWMga2V5cywgZnVsbCBkaWZmIG5lZWRlZFxyXG4gICAgICAgICAgICAgICAgcGF0Y2hQcm9wcyhlbCwgbjIsIG9sZFByb3BzLCBuZXdQcm9wcywgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gY2xhc3NcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMgZmxhZyBpcyBtYXRjaGVkIHdoZW4gdGhlIGVsZW1lbnQgaGFzIGR5bmFtaWMgY2xhc3MgYmluZGluZ3MuXHJcbiAgICAgICAgICAgICAgICBpZiAocGF0Y2hGbGFnICYgMiAvKiBQYXRjaEZsYWdzLkNMQVNTICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9sZFByb3BzLmNsYXNzICE9PSBuZXdQcm9wcy5jbGFzcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBob3N0UGF0Y2hQcm9wKGVsLCAnY2xhc3MnLCBudWxsLCBuZXdQcm9wcy5jbGFzcywgaXNTVkcpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIHN0eWxlXHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzIGZsYWcgaXMgbWF0Y2hlZCB3aGVuIHRoZSBlbGVtZW50IGhhcyBkeW5hbWljIHN0eWxlIGJpbmRpbmdzXHJcbiAgICAgICAgICAgICAgICBpZiAocGF0Y2hGbGFnICYgNCAvKiBQYXRjaEZsYWdzLlNUWUxFICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaG9zdFBhdGNoUHJvcChlbCwgJ3N0eWxlJywgb2xkUHJvcHMuc3R5bGUsIG5ld1Byb3BzLnN0eWxlLCBpc1NWRyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBwcm9wc1xyXG4gICAgICAgICAgICAgICAgLy8gVGhpcyBmbGFnIGlzIG1hdGNoZWQgd2hlbiB0aGUgZWxlbWVudCBoYXMgZHluYW1pYyBwcm9wL2F0dHIgYmluZGluZ3NcclxuICAgICAgICAgICAgICAgIC8vIG90aGVyIHRoYW4gY2xhc3MgYW5kIHN0eWxlLiBUaGUga2V5cyBvZiBkeW5hbWljIHByb3AvYXR0cnMgYXJlIHNhdmVkIGZvclxyXG4gICAgICAgICAgICAgICAgLy8gZmFzdGVyIGl0ZXJhdGlvbi5cclxuICAgICAgICAgICAgICAgIC8vIE5vdGUgZHluYW1pYyBrZXlzIGxpa2UgOltmb29dPVwiYmFyXCIgd2lsbCBjYXVzZSB0aGlzIG9wdGltaXphdGlvbiB0b1xyXG4gICAgICAgICAgICAgICAgLy8gYmFpbCBvdXQgYW5kIGdvIHRocm91Z2ggYSBmdWxsIGRpZmYgYmVjYXVzZSB3ZSBuZWVkIHRvIHVuc2V0IHRoZSBvbGQga2V5XHJcbiAgICAgICAgICAgICAgICBpZiAocGF0Y2hGbGFnICYgOCAvKiBQYXRjaEZsYWdzLlBST1BTICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGZsYWcgaXMgcHJlc2VudCB0aGVuIGR5bmFtaWNQcm9wcyBtdXN0IGJlIG5vbi1udWxsXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvcHNUb1VwZGF0ZSA9IG4yLmR5bmFtaWNQcm9wcztcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzVG9VcGRhdGUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gcHJvcHNUb1VwZGF0ZVtpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldiA9IG9sZFByb3BzW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSBuZXdQcm9wc1trZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAjMTQ3MSBmb3JjZSBwYXRjaCB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dCAhPT0gcHJldiB8fCBrZXkgPT09ICd2YWx1ZScpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RQYXRjaFByb3AoZWwsIGtleSwgcHJldiwgbmV4dCwgaXNTVkcsIG4xLmNoaWxkcmVuLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB1bm1vdW50Q2hpbGRyZW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHRleHRcclxuICAgICAgICAgICAgLy8gVGhpcyBmbGFnIGlzIG1hdGNoZWQgd2hlbiB0aGUgZWxlbWVudCBoYXMgb25seSBkeW5hbWljIHRleHQgY2hpbGRyZW4uXHJcbiAgICAgICAgICAgIGlmIChwYXRjaEZsYWcgJiAxIC8qIFBhdGNoRmxhZ3MuVEVYVCAqLykge1xyXG4gICAgICAgICAgICAgICAgaWYgKG4xLmNoaWxkcmVuICE9PSBuMi5jaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgICAgIGhvc3RTZXRFbGVtZW50VGV4dChlbCwgbjIuY2hpbGRyZW4pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKCFvcHRpbWl6ZWQgJiYgZHluYW1pY0NoaWxkcmVuID09IG51bGwpIHtcclxuICAgICAgICAgICAgLy8gdW5vcHRpbWl6ZWQsIGZ1bGwgZGlmZlxyXG4gICAgICAgICAgICBwYXRjaFByb3BzKGVsLCBuMiwgb2xkUHJvcHMsIG5ld1Byb3BzLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgodm5vZGVIb29rID0gbmV3UHJvcHMub25Wbm9kZVVwZGF0ZWQpIHx8IGRpcnMpIHtcclxuICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHZub2RlSG9vayAmJiBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBwYXJlbnRDb21wb25lbnQsIG4yLCBuMSk7XHJcbiAgICAgICAgICAgICAgICBkaXJzICYmIGludm9rZURpcmVjdGl2ZUhvb2sobjIsIG4xLCBwYXJlbnRDb21wb25lbnQsICd1cGRhdGVkJyk7XHJcbiAgICAgICAgICAgIH0sIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgLy8gVGhlIGZhc3QgcGF0aCBmb3IgYmxvY2tzLlxyXG4gICAgY29uc3QgcGF0Y2hCbG9ja0NoaWxkcmVuID0gKG9sZENoaWxkcmVuLCBuZXdDaGlsZHJlbiwgZmFsbGJhY2tDb250YWluZXIsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMpID0+IHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5ld0NoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9sZFZOb2RlID0gb2xkQ2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZOb2RlID0gbmV3Q2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgIC8vIERldGVybWluZSB0aGUgY29udGFpbmVyIChwYXJlbnQgZWxlbWVudCkgZm9yIHRoZSBwYXRjaC5cclxuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gXHJcbiAgICAgICAgICAgIC8vIG9sZFZOb2RlIG1heSBiZSBhbiBlcnJvcmVkIGFzeW5jIHNldHVwKCkgY29tcG9uZW50IGluc2lkZSBTdXNwZW5zZVxyXG4gICAgICAgICAgICAvLyB3aGljaCB3aWxsIG5vdCBoYXZlIGEgbW91bnRlZCBlbGVtZW50XHJcbiAgICAgICAgICAgIG9sZFZOb2RlLmVsICYmXHJcbiAgICAgICAgICAgICAgICAvLyAtIEluIHRoZSBjYXNlIG9mIGEgRnJhZ21lbnQsIHdlIG5lZWQgdG8gcHJvdmlkZSB0aGUgYWN0dWFsIHBhcmVudFxyXG4gICAgICAgICAgICAgICAgLy8gb2YgdGhlIEZyYWdtZW50IGl0c2VsZiBzbyBpdCBjYW4gbW92ZSBpdHMgY2hpbGRyZW4uXHJcbiAgICAgICAgICAgICAgICAob2xkVk5vZGUudHlwZSA9PT0gRnJhZ21lbnQgfHxcclxuICAgICAgICAgICAgICAgICAgICAvLyAtIEluIHRoZSBjYXNlIG9mIGRpZmZlcmVudCBub2RlcywgdGhlcmUgaXMgZ29pbmcgdG8gYmUgYSByZXBsYWNlbWVudFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIGFsc28gcmVxdWlyZXMgdGhlIGNvcnJlY3QgcGFyZW50IGNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICFpc1NhbWVWTm9kZVR5cGUob2xkVk5vZGUsIG5ld1ZOb2RlKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIC0gSW4gdGhlIGNhc2Ugb2YgYSBjb21wb25lbnQsIGl0IGNvdWxkIGNvbnRhaW4gYW55dGhpbmcuXHJcbiAgICAgICAgICAgICAgICAgICAgb2xkVk5vZGUuc2hhcGVGbGFnICYgKDYgLyogU2hhcGVGbGFncy5DT01QT05FTlQgKi8gfCA2NCAvKiBTaGFwZUZsYWdzLlRFTEVQT1JUICovKSlcclxuICAgICAgICAgICAgICAgID8gaG9zdFBhcmVudE5vZGUob2xkVk5vZGUuZWwpXHJcbiAgICAgICAgICAgICAgICA6IC8vIEluIG90aGVyIGNhc2VzLCB0aGUgcGFyZW50IGNvbnRhaW5lciBpcyBub3QgYWN0dWFsbHkgdXNlZCBzbyB3ZVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGp1c3QgcGFzcyB0aGUgYmxvY2sgZWxlbWVudCBoZXJlIHRvIGF2b2lkIGEgRE9NIHBhcmVudE5vZGUgY2FsbC5cclxuICAgICAgICAgICAgICAgICAgICBmYWxsYmFja0NvbnRhaW5lcjtcclxuICAgICAgICAgICAgcGF0Y2gob2xkVk5vZGUsIG5ld1ZOb2RlLCBjb250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBwYXRjaFByb3BzID0gKGVsLCB2bm9kZSwgb2xkUHJvcHMsIG5ld1Byb3BzLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRykgPT4ge1xyXG4gICAgICAgIGlmIChvbGRQcm9wcyAhPT0gbmV3UHJvcHMpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbmV3UHJvcHMpIHtcclxuICAgICAgICAgICAgICAgIC8vIGVtcHR5IHN0cmluZyBpcyBub3QgdmFsaWQgcHJvcFxyXG4gICAgICAgICAgICAgICAgaWYgKGlzUmVzZXJ2ZWRQcm9wKGtleSkpXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gbmV3UHJvcHNba2V5XTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHByZXYgPSBvbGRQcm9wc1trZXldO1xyXG4gICAgICAgICAgICAgICAgLy8gZGVmZXIgcGF0Y2hpbmcgdmFsdWVcclxuICAgICAgICAgICAgICAgIGlmIChuZXh0ICE9PSBwcmV2ICYmIGtleSAhPT0gJ3ZhbHVlJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGhvc3RQYXRjaFByb3AoZWwsIGtleSwgcHJldiwgbmV4dCwgaXNTVkcsIHZub2RlLmNoaWxkcmVuLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB1bm1vdW50Q2hpbGRyZW4pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChvbGRQcm9wcyAhPT0gRU1QVFlfT0JKKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvbGRQcm9wcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNSZXNlcnZlZFByb3Aoa2V5KSAmJiAhKGtleSBpbiBuZXdQcm9wcykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaG9zdFBhdGNoUHJvcChlbCwga2V5LCBvbGRQcm9wc1trZXldLCBudWxsLCBpc1NWRywgdm5vZGUuY2hpbGRyZW4sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHVubW91bnRDaGlsZHJlbik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgndmFsdWUnIGluIG5ld1Byb3BzKSB7XHJcbiAgICAgICAgICAgICAgICBob3N0UGF0Y2hQcm9wKGVsLCAndmFsdWUnLCBvbGRQcm9wcy52YWx1ZSwgbmV3UHJvcHMudmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHByb2Nlc3NGcmFnbWVudCA9IChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBjb25zdCBmcmFnbWVudFN0YXJ0QW5jaG9yID0gKG4yLmVsID0gbjEgPyBuMS5lbCA6IGhvc3RDcmVhdGVUZXh0KCcnKSk7XHJcbiAgICAgICAgY29uc3QgZnJhZ21lbnRFbmRBbmNob3IgPSAobjIuYW5jaG9yID0gbjEgPyBuMS5hbmNob3IgOiBob3N0Q3JlYXRlVGV4dCgnJykpO1xyXG4gICAgICAgIGxldCB7IHBhdGNoRmxhZywgZHluYW1pY0NoaWxkcmVuLCBzbG90U2NvcGVJZHM6IGZyYWdtZW50U2xvdFNjb3BlSWRzIH0gPSBuMjtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgIC8vICM1NTIzIGRldiByb290IGZyYWdtZW50IG1heSBpbmhlcml0IGRpcmVjdGl2ZXNcclxuICAgICAgICAgICAgKGlzSG1yVXBkYXRpbmcgfHwgcGF0Y2hGbGFnICYgMjA0OCAvKiBQYXRjaEZsYWdzLkRFVl9ST09UX0ZSQUdNRU5UICovKSkge1xyXG4gICAgICAgICAgICAvLyBITVIgdXBkYXRlZCAvIERldiByb290IGZyYWdtZW50ICh3LyBjb21tZW50cyksIGZvcmNlIGZ1bGwgZGlmZlxyXG4gICAgICAgICAgICBwYXRjaEZsYWcgPSAwO1xyXG4gICAgICAgICAgICBvcHRpbWl6ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgZHluYW1pY0NoaWxkcmVuID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY2hlY2sgaWYgdGhpcyBpcyBhIHNsb3QgZnJhZ21lbnQgd2l0aCA6c2xvdHRlZCBzY29wZSBpZHNcclxuICAgICAgICBpZiAoZnJhZ21lbnRTbG90U2NvcGVJZHMpIHtcclxuICAgICAgICAgICAgc2xvdFNjb3BlSWRzID0gc2xvdFNjb3BlSWRzXHJcbiAgICAgICAgICAgICAgICA/IHNsb3RTY29wZUlkcy5jb25jYXQoZnJhZ21lbnRTbG90U2NvcGVJZHMpXHJcbiAgICAgICAgICAgICAgICA6IGZyYWdtZW50U2xvdFNjb3BlSWRzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobjEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBob3N0SW5zZXJ0KGZyYWdtZW50U3RhcnRBbmNob3IsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICAgICAgaG9zdEluc2VydChmcmFnbWVudEVuZEFuY2hvciwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICAvLyBhIGZyYWdtZW50IGNhbiBvbmx5IGhhdmUgYXJyYXkgY2hpbGRyZW5cclxuICAgICAgICAgICAgLy8gc2luY2UgdGhleSBhcmUgZWl0aGVyIGdlbmVyYXRlZCBieSB0aGUgY29tcGlsZXIsIG9yIGltcGxpY2l0bHkgY3JlYXRlZFxyXG4gICAgICAgICAgICAvLyBmcm9tIGFycmF5cy5cclxuICAgICAgICAgICAgbW91bnRDaGlsZHJlbihuMi5jaGlsZHJlbiwgY29udGFpbmVyLCBmcmFnbWVudEVuZEFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChwYXRjaEZsYWcgPiAwICYmXHJcbiAgICAgICAgICAgICAgICBwYXRjaEZsYWcgJiA2NCAvKiBQYXRjaEZsYWdzLlNUQUJMRV9GUkFHTUVOVCAqLyAmJlxyXG4gICAgICAgICAgICAgICAgZHluYW1pY0NoaWxkcmVuICYmXHJcbiAgICAgICAgICAgICAgICAvLyAjMjcxNSB0aGUgcHJldmlvdXMgZnJhZ21lbnQgY291bGQndmUgYmVlbiBhIEJBSUxlZCBvbmUgYXMgYSByZXN1bHRcclxuICAgICAgICAgICAgICAgIC8vIG9mIHJlbmRlclNsb3QoKSB3aXRoIG5vIHZhbGlkIGNoaWxkcmVuXHJcbiAgICAgICAgICAgICAgICBuMS5keW5hbWljQ2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgIC8vIGEgc3RhYmxlIGZyYWdtZW50ICh0ZW1wbGF0ZSByb290IG9yIDx0ZW1wbGF0ZSB2LWZvcj4pIGRvZXNuJ3QgbmVlZCB0b1xyXG4gICAgICAgICAgICAgICAgLy8gcGF0Y2ggY2hpbGRyZW4gb3JkZXIsIGJ1dCBpdCBtYXkgY29udGFpbiBkeW5hbWljQ2hpbGRyZW4uXHJcbiAgICAgICAgICAgICAgICBwYXRjaEJsb2NrQ2hpbGRyZW4objEuZHluYW1pY0NoaWxkcmVuLCBkeW5hbWljQ2hpbGRyZW4sIGNvbnRhaW5lciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHBhcmVudENvbXBvbmVudCAmJiBwYXJlbnRDb21wb25lbnQudHlwZS5fX2htcklkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2VTdGF0aWNDaGlsZHJlbihuMSwgbjIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgICAvLyAjMjA4MCBpZiB0aGUgc3RhYmxlIGZyYWdtZW50IGhhcyBhIGtleSwgaXQncyBhIDx0ZW1wbGF0ZSB2LWZvcj4gdGhhdCBtYXlcclxuICAgICAgICAgICAgICAgIC8vICBnZXQgbW92ZWQgYXJvdW5kLiBNYWtlIHN1cmUgYWxsIHJvb3QgbGV2ZWwgdm5vZGVzIGluaGVyaXQgZWwuXHJcbiAgICAgICAgICAgICAgICAvLyAjMjEzNCBvciBpZiBpdCdzIGEgY29tcG9uZW50IHJvb3QsIGl0IG1heSBhbHNvIGdldCBtb3ZlZCBhcm91bmRcclxuICAgICAgICAgICAgICAgIC8vIGFzIHRoZSBjb21wb25lbnQgaXMgYmVpbmcgbW92ZWQuXHJcbiAgICAgICAgICAgICAgICBuMi5rZXkgIT0gbnVsbCB8fFxyXG4gICAgICAgICAgICAgICAgICAgIChwYXJlbnRDb21wb25lbnQgJiYgbjIgPT09IHBhcmVudENvbXBvbmVudC5zdWJUcmVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYXZlcnNlU3RhdGljQ2hpbGRyZW4objEsIG4yLCB0cnVlIC8qIHNoYWxsb3cgKi8pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8ga2V5ZWQgLyB1bmtleWVkLCBvciBtYW51YWwgZnJhZ21lbnRzLlxyXG4gICAgICAgICAgICAgICAgLy8gZm9yIGtleWVkICYgdW5rZXllZCwgc2luY2UgdGhleSBhcmUgY29tcGlsZXIgZ2VuZXJhdGVkIGZyb20gdi1mb3IsXHJcbiAgICAgICAgICAgICAgICAvLyBlYWNoIGNoaWxkIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBibG9jayBzbyB0aGUgZnJhZ21lbnQgd2lsbCBuZXZlclxyXG4gICAgICAgICAgICAgICAgLy8gaGF2ZSBkeW5hbWljQ2hpbGRyZW4uXHJcbiAgICAgICAgICAgICAgICBwYXRjaENoaWxkcmVuKG4xLCBuMiwgY29udGFpbmVyLCBmcmFnbWVudEVuZEFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBwcm9jZXNzQ29tcG9uZW50ID0gKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIG4yLnNsb3RTY29wZUlkcyA9IHNsb3RTY29wZUlkcztcclxuICAgICAgICBpZiAobjEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAobjIuc2hhcGVGbGFnICYgNTEyIC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UX0tFUFRfQUxJVkUgKi8pIHtcclxuICAgICAgICAgICAgICAgIHBhcmVudENvbXBvbmVudC5jdHguYWN0aXZhdGUobjIsIGNvbnRhaW5lciwgYW5jaG9yLCBpc1NWRywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG1vdW50Q29tcG9uZW50KG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHVwZGF0ZUNvbXBvbmVudChuMSwgbjIsIG9wdGltaXplZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IG1vdW50Q29tcG9uZW50ID0gKGluaXRpYWxWTm9kZSwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IChpbml0aWFsVk5vZGUuY29tcG9uZW50ID0gY3JlYXRlQ29tcG9uZW50SW5zdGFuY2UoaW5pdGlhbFZOb2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlKSk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBpbnN0YW5jZS50eXBlLl9faG1ySWQpIHtcclxuICAgICAgICAgICAgcmVnaXN0ZXJITVIoaW5zdGFuY2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHB1c2hXYXJuaW5nQ29udGV4dChpbml0aWFsVk5vZGUpO1xyXG4gICAgICAgICAgICBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIGBtb3VudGApO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpbmplY3QgcmVuZGVyZXIgaW50ZXJuYWxzIGZvciBrZWVwQWxpdmVcclxuICAgICAgICBpZiAoaXNLZWVwQWxpdmUoaW5pdGlhbFZOb2RlKSkge1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5jdHgucmVuZGVyZXIgPSBpbnRlcm5hbHM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHJlc29sdmUgcHJvcHMgYW5kIHNsb3RzIGZvciBzZXR1cCBjb250ZXh0XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIGBpbml0YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc2V0dXBDb21wb25lbnQoaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICBlbmRNZWFzdXJlKGluc3RhbmNlLCBgaW5pdGApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHNldHVwKCkgaXMgYXN5bmMuIFRoaXMgY29tcG9uZW50IHJlbGllcyBvbiBhc3luYyBsb2dpYyB0byBiZSByZXNvbHZlZFxyXG4gICAgICAgIC8vIGJlZm9yZSBwcm9jZWVkaW5nXHJcbiAgICAgICAgaWYgKGluc3RhbmNlLmFzeW5jRGVwKSB7XHJcbiAgICAgICAgICAgIHBhcmVudFN1c3BlbnNlICYmIHBhcmVudFN1c3BlbnNlLnJlZ2lzdGVyRGVwKGluc3RhbmNlLCBzZXR1cFJlbmRlckVmZmVjdCk7XHJcbiAgICAgICAgICAgIC8vIEdpdmUgaXQgYSBwbGFjZWhvbGRlciBpZiB0aGlzIGlzIG5vdCBoeWRyYXRpb25cclxuICAgICAgICAgICAgLy8gVE9ETyBoYW5kbGUgc2VsZi1kZWZpbmVkIGZhbGxiYWNrXHJcbiAgICAgICAgICAgIGlmICghaW5pdGlhbFZOb2RlLmVsKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwbGFjZWhvbGRlciA9IChpbnN0YW5jZS5zdWJUcmVlID0gY3JlYXRlVk5vZGUoQ29tbWVudCkpO1xyXG4gICAgICAgICAgICAgICAgcHJvY2Vzc0NvbW1lbnROb2RlKG51bGwsIHBsYWNlaG9sZGVyLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzZXR1cFJlbmRlckVmZmVjdChpbnN0YW5jZSwgaW5pdGlhbFZOb2RlLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgcG9wV2FybmluZ0NvbnRleHQoKTtcclxuICAgICAgICAgICAgZW5kTWVhc3VyZShpbnN0YW5jZSwgYG1vdW50YCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHVwZGF0ZUNvbXBvbmVudCA9IChuMSwgbjIsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGluc3RhbmNlID0gKG4yLmNvbXBvbmVudCA9IG4xLmNvbXBvbmVudCk7XHJcbiAgICAgICAgaWYgKHNob3VsZFVwZGF0ZUNvbXBvbmVudChuMSwgbjIsIG9wdGltaXplZCkpIHtcclxuICAgICAgICAgICAgaWYgKGluc3RhbmNlLmFzeW5jRGVwICYmXHJcbiAgICAgICAgICAgICAgICAhaW5zdGFuY2UuYXN5bmNSZXNvbHZlZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gYXN5bmMgJiBzdGlsbCBwZW5kaW5nIC0ganVzdCB1cGRhdGUgcHJvcHMgYW5kIHNsb3RzXHJcbiAgICAgICAgICAgICAgICAvLyBzaW5jZSB0aGUgY29tcG9uZW50J3MgcmVhY3RpdmUgZWZmZWN0IGZvciByZW5kZXIgaXNuJ3Qgc2V0LXVwIHlldFxyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHB1c2hXYXJuaW5nQ29udGV4dChuMik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB1cGRhdGVDb21wb25lbnRQcmVSZW5kZXIoaW5zdGFuY2UsIG4yLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcFdhcm5pbmdDb250ZXh0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBub3JtYWwgdXBkYXRlXHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5uZXh0ID0gbjI7XHJcbiAgICAgICAgICAgICAgICAvLyBpbiBjYXNlIHRoZSBjaGlsZCBjb21wb25lbnQgaXMgYWxzbyBxdWV1ZWQsIHJlbW92ZSBpdCB0byBhdm9pZFxyXG4gICAgICAgICAgICAgICAgLy8gZG91YmxlIHVwZGF0aW5nIHRoZSBzYW1lIGNoaWxkIGNvbXBvbmVudCBpbiB0aGUgc2FtZSBmbHVzaC5cclxuICAgICAgICAgICAgICAgIGludmFsaWRhdGVKb2IoaW5zdGFuY2UudXBkYXRlKTtcclxuICAgICAgICAgICAgICAgIC8vIGluc3RhbmNlLnVwZGF0ZSBpcyB0aGUgcmVhY3RpdmUgZWZmZWN0LlxyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UudXBkYXRlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIG5vIHVwZGF0ZSBuZWVkZWQuIGp1c3QgY29weSBvdmVyIHByb3BlcnRpZXNcclxuICAgICAgICAgICAgbjIuZWwgPSBuMS5lbDtcclxuICAgICAgICAgICAgaW5zdGFuY2Uudm5vZGUgPSBuMjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3Qgc2V0dXBSZW5kZXJFZmZlY3QgPSAoaW5zdGFuY2UsIGluaXRpYWxWTm9kZSwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29tcG9uZW50VXBkYXRlRm4gPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghaW5zdGFuY2UuaXNNb3VudGVkKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdm5vZGVIb29rO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBlbCwgcHJvcHMgfSA9IGluaXRpYWxWTm9kZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgYm0sIG0sIHBhcmVudCB9ID0gaW5zdGFuY2U7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpc0FzeW5jV3JhcHBlclZOb2RlID0gaXNBc3luY1dyYXBwZXIoaW5pdGlhbFZOb2RlKTtcclxuICAgICAgICAgICAgICAgIHRvZ2dsZVJlY3Vyc2UoaW5zdGFuY2UsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIC8vIGJlZm9yZU1vdW50IGhvb2tcclxuICAgICAgICAgICAgICAgIGlmIChibSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGludm9rZUFycmF5Rm5zKGJtKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIG9uVm5vZGVCZWZvcmVNb3VudFxyXG4gICAgICAgICAgICAgICAgaWYgKCFpc0FzeW5jV3JhcHBlclZOb2RlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgKHZub2RlSG9vayA9IHByb3BzICYmIHByb3BzLm9uVm5vZGVCZWZvcmVNb3VudCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBwYXJlbnQsIGluaXRpYWxWTm9kZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0b2dnbGVSZWN1cnNlKGluc3RhbmNlLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIGlmIChlbCAmJiBoeWRyYXRlTm9kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHZub2RlIGhhcyBhZG9wdGVkIGhvc3Qgbm9kZSAtIHBlcmZvcm0gaHlkcmF0aW9uIGluc3RlYWQgb2YgbW91bnQuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaHlkcmF0ZVN1YlRyZWUgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0TWVhc3VyZShpbnN0YW5jZSwgYHJlbmRlcmApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnN1YlRyZWUgPSByZW5kZXJDb21wb25lbnRSb290KGluc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kTWVhc3VyZShpbnN0YW5jZSwgYHJlbmRlcmApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0TWVhc3VyZShpbnN0YW5jZSwgYGh5ZHJhdGVgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoeWRyYXRlTm9kZShlbCwgaW5zdGFuY2Uuc3ViVHJlZSwgaW5zdGFuY2UsIHBhcmVudFN1c3BlbnNlLCBudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kTWVhc3VyZShpbnN0YW5jZSwgYGh5ZHJhdGVgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXN5bmNXcmFwcGVyVk5vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFZOb2RlLnR5cGUuX19hc3luY0xvYWRlcigpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vdGU6IHdlIGFyZSBtb3ZpbmcgdGhlIHJlbmRlciBjYWxsIGludG8gYW4gYXN5bmMgY2FsbGJhY2ssXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIG1lYW5zIGl0IHdvbid0IHRyYWNrIGRlcGVuZGVuY2llcyAtIGJ1dCBpdCdzIG9rIGJlY2F1c2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBzZXJ2ZXItcmVuZGVyZWQgYXN5bmMgd3JhcHBlciBpcyBhbHJlYWR5IGluIHJlc29sdmVkIHN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBpdCB3aWxsIG5ldmVyIG5lZWQgdG8gY2hhbmdlLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoKSA9PiAhaW5zdGFuY2UuaXNVbm1vdW50ZWQgJiYgaHlkcmF0ZVN1YlRyZWUoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoeWRyYXRlU3ViVHJlZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRNZWFzdXJlKGluc3RhbmNlLCBgcmVuZGVyYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YlRyZWUgPSAoaW5zdGFuY2Uuc3ViVHJlZSA9IHJlbmRlckNvbXBvbmVudFJvb3QoaW5zdGFuY2UpKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZE1lYXN1cmUoaW5zdGFuY2UsIGByZW5kZXJgKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIGBwYXRjaGApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBwYXRjaChudWxsLCBzdWJUcmVlLCBjb250YWluZXIsIGFuY2hvciwgaW5zdGFuY2UsIHBhcmVudFN1c3BlbnNlLCBpc1NWRyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRNZWFzdXJlKGluc3RhbmNlLCBgcGF0Y2hgKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFZOb2RlLmVsID0gc3ViVHJlZS5lbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIG1vdW50ZWQgaG9va1xyXG4gICAgICAgICAgICAgICAgaWYgKG0pIHtcclxuICAgICAgICAgICAgICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QobSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gb25Wbm9kZU1vdW50ZWRcclxuICAgICAgICAgICAgICAgIGlmICghaXNBc3luY1dyYXBwZXJWTm9kZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICh2bm9kZUhvb2sgPSBwcm9wcyAmJiBwcm9wcy5vblZub2RlTW91bnRlZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzY29wZWRJbml0aWFsVk5vZGUgPSBpbml0aWFsVk5vZGU7XHJcbiAgICAgICAgICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KCgpID0+IGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2ssIHBhcmVudCwgc2NvcGVkSW5pdGlhbFZOb2RlKSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gYWN0aXZhdGVkIGhvb2sgZm9yIGtlZXAtYWxpdmUgcm9vdHMuXHJcbiAgICAgICAgICAgICAgICAvLyAjMTc0MiBhY3RpdmF0ZWQgaG9vayBtdXN0IGJlIGFjY2Vzc2VkIGFmdGVyIGZpcnN0IHJlbmRlclxyXG4gICAgICAgICAgICAgICAgLy8gc2luY2UgdGhlIGhvb2sgbWF5IGJlIGluamVjdGVkIGJ5IGEgY2hpbGQga2VlcC1hbGl2ZVxyXG4gICAgICAgICAgICAgICAgaWYgKGluaXRpYWxWTm9kZS5zaGFwZUZsYWcgJiAyNTYgLyogU2hhcGVGbGFncy5DT01QT05FTlRfU0hPVUxEX0tFRVBfQUxJVkUgKi8gfHxcclxuICAgICAgICAgICAgICAgICAgICAocGFyZW50ICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXN5bmNXcmFwcGVyKHBhcmVudC52bm9kZSkgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LnZub2RlLnNoYXBlRmxhZyAmIDI1NiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVF9TSE9VTERfS0VFUF9BTElWRSAqLykpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5hICYmIHF1ZXVlUG9zdFJlbmRlckVmZmVjdChpbnN0YW5jZS5hLCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5pc01vdW50ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICAgICAgICAgICAgICBkZXZ0b29sc0NvbXBvbmVudEFkZGVkKGluc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vICMyNDU4OiBkZWZlcmVuY2UgbW91bnQtb25seSBvYmplY3QgcGFyYW1ldGVycyB0byBwcmV2ZW50IG1lbWxlYWtzXHJcbiAgICAgICAgICAgICAgICBpbml0aWFsVk5vZGUgPSBjb250YWluZXIgPSBhbmNob3IgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlQ29tcG9uZW50XHJcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRyaWdnZXJlZCBieSBtdXRhdGlvbiBvZiBjb21wb25lbnQncyBvd24gc3RhdGUgKG5leHQ6IG51bGwpXHJcbiAgICAgICAgICAgICAgICAvLyBPUiBwYXJlbnQgY2FsbGluZyBwcm9jZXNzQ29tcG9uZW50IChuZXh0OiBWTm9kZSlcclxuICAgICAgICAgICAgICAgIGxldCB7IG5leHQsIGJ1LCB1LCBwYXJlbnQsIHZub2RlIH0gPSBpbnN0YW5jZTtcclxuICAgICAgICAgICAgICAgIGxldCBvcmlnaW5OZXh0ID0gbmV4dDtcclxuICAgICAgICAgICAgICAgIGxldCB2bm9kZUhvb2s7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHVzaFdhcm5pbmdDb250ZXh0KG5leHQgfHwgaW5zdGFuY2Uudm5vZGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gRGlzYWxsb3cgY29tcG9uZW50IGVmZmVjdCByZWN1cnNpb24gZHVyaW5nIHByZS1saWZlY3ljbGUgaG9va3MuXHJcbiAgICAgICAgICAgICAgICB0b2dnbGVSZWN1cnNlKGluc3RhbmNlLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAobmV4dCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5leHQuZWwgPSB2bm9kZS5lbDtcclxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVDb21wb25lbnRQcmVSZW5kZXIoaW5zdGFuY2UsIG5leHQsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0ID0gdm5vZGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBiZWZvcmVVcGRhdGUgaG9va1xyXG4gICAgICAgICAgICAgICAgaWYgKGJ1KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlQXJyYXlGbnMoYnUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gb25Wbm9kZUJlZm9yZVVwZGF0ZVxyXG4gICAgICAgICAgICAgICAgaWYgKCh2bm9kZUhvb2sgPSBuZXh0LnByb3BzICYmIG5leHQucHJvcHMub25Wbm9kZUJlZm9yZVVwZGF0ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBwYXJlbnQsIG5leHQsIHZub2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRvZ2dsZVJlY3Vyc2UoaW5zdGFuY2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgLy8gcmVuZGVyXHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRNZWFzdXJlKGluc3RhbmNlLCBgcmVuZGVyYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0VHJlZSA9IHJlbmRlckNvbXBvbmVudFJvb3QoaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVuZE1lYXN1cmUoaW5zdGFuY2UsIGByZW5kZXJgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZUcmVlID0gaW5zdGFuY2Uuc3ViVHJlZTtcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLnN1YlRyZWUgPSBuZXh0VHJlZTtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIGBwYXRjaGApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcGF0Y2gocHJldlRyZWUsIG5leHRUcmVlLCBcclxuICAgICAgICAgICAgICAgIC8vIHBhcmVudCBtYXkgaGF2ZSBjaGFuZ2VkIGlmIGl0J3MgaW4gYSB0ZWxlcG9ydFxyXG4gICAgICAgICAgICAgICAgaG9zdFBhcmVudE5vZGUocHJldlRyZWUuZWwpLCBcclxuICAgICAgICAgICAgICAgIC8vIGFuY2hvciBtYXkgaGF2ZSBjaGFuZ2VkIGlmIGl0J3MgaW4gYSBmcmFnbWVudFxyXG4gICAgICAgICAgICAgICAgZ2V0TmV4dEhvc3ROb2RlKHByZXZUcmVlKSwgaW5zdGFuY2UsIHBhcmVudFN1c3BlbnNlLCBpc1NWRyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW5kTWVhc3VyZShpbnN0YW5jZSwgYHBhdGNoYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBuZXh0LmVsID0gbmV4dFRyZWUuZWw7XHJcbiAgICAgICAgICAgICAgICBpZiAob3JpZ2luTmV4dCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHNlbGYtdHJpZ2dlcmVkIHVwZGF0ZS4gSW4gY2FzZSBvZiBIT0MsIHVwZGF0ZSBwYXJlbnQgY29tcG9uZW50XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdm5vZGUgZWwuIEhPQyBpcyBpbmRpY2F0ZWQgYnkgcGFyZW50IGluc3RhbmNlJ3Mgc3ViVHJlZSBwb2ludGluZ1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRvIGNoaWxkIGNvbXBvbmVudCdzIHZub2RlXHJcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlSE9DSG9zdEVsKGluc3RhbmNlLCBuZXh0VHJlZS5lbCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyB1cGRhdGVkIGhvb2tcclxuICAgICAgICAgICAgICAgIGlmICh1KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KHUsIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIG9uVm5vZGVVcGRhdGVkXHJcbiAgICAgICAgICAgICAgICBpZiAoKHZub2RlSG9vayA9IG5leHQucHJvcHMgJiYgbmV4dC5wcm9wcy5vblZub2RlVXBkYXRlZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoKCkgPT4gaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50LCBuZXh0LCB2bm9kZSksIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGV2dG9vbHNDb21wb25lbnRVcGRhdGVkKGluc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBwb3BXYXJuaW5nQ29udGV4dCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICAvLyBjcmVhdGUgcmVhY3RpdmUgZWZmZWN0IGZvciByZW5kZXJpbmdcclxuICAgICAgICBjb25zdCBlZmZlY3QgPSAoaW5zdGFuY2UuZWZmZWN0ID0gbmV3IFJlYWN0aXZlRWZmZWN0KGNvbXBvbmVudFVwZGF0ZUZuLCAoKSA9PiBxdWV1ZUpvYih1cGRhdGUpLCBpbnN0YW5jZS5zY29wZSAvLyB0cmFjayBpdCBpbiBjb21wb25lbnQncyBlZmZlY3Qgc2NvcGVcclxuICAgICAgICApKTtcclxuICAgICAgICBjb25zdCB1cGRhdGUgPSAoaW5zdGFuY2UudXBkYXRlID0gKCkgPT4gZWZmZWN0LnJ1bigpKTtcclxuICAgICAgICB1cGRhdGUuaWQgPSBpbnN0YW5jZS51aWQ7XHJcbiAgICAgICAgLy8gYWxsb3dSZWN1cnNlXHJcbiAgICAgICAgLy8gIzE4MDEsICMyMDQzIGNvbXBvbmVudCByZW5kZXIgZWZmZWN0cyBzaG91bGQgYWxsb3cgcmVjdXJzaXZlIHVwZGF0ZXNcclxuICAgICAgICB0b2dnbGVSZWN1cnNlKGluc3RhbmNlLCB0cnVlKTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIGVmZmVjdC5vblRyYWNrID0gaW5zdGFuY2UucnRjXHJcbiAgICAgICAgICAgICAgICA/IGUgPT4gaW52b2tlQXJyYXlGbnMoaW5zdGFuY2UucnRjLCBlKVxyXG4gICAgICAgICAgICAgICAgOiB2b2lkIDA7XHJcbiAgICAgICAgICAgIGVmZmVjdC5vblRyaWdnZXIgPSBpbnN0YW5jZS5ydGdcclxuICAgICAgICAgICAgICAgID8gZSA9PiBpbnZva2VBcnJheUZucyhpbnN0YW5jZS5ydGcsIGUpXHJcbiAgICAgICAgICAgICAgICA6IHZvaWQgMDtcclxuICAgICAgICAgICAgdXBkYXRlLm93bmVySW5zdGFuY2UgPSBpbnN0YW5jZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdXBkYXRlKCk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgdXBkYXRlQ29tcG9uZW50UHJlUmVuZGVyID0gKGluc3RhbmNlLCBuZXh0Vk5vZGUsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIG5leHRWTm9kZS5jb21wb25lbnQgPSBpbnN0YW5jZTtcclxuICAgICAgICBjb25zdCBwcmV2UHJvcHMgPSBpbnN0YW5jZS52bm9kZS5wcm9wcztcclxuICAgICAgICBpbnN0YW5jZS52bm9kZSA9IG5leHRWTm9kZTtcclxuICAgICAgICBpbnN0YW5jZS5uZXh0ID0gbnVsbDtcclxuICAgICAgICB1cGRhdGVQcm9wcyhpbnN0YW5jZSwgbmV4dFZOb2RlLnByb3BzLCBwcmV2UHJvcHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgdXBkYXRlU2xvdHMoaW5zdGFuY2UsIG5leHRWTm9kZS5jaGlsZHJlbiwgb3B0aW1pemVkKTtcclxuICAgICAgICBwYXVzZVRyYWNraW5nKCk7XHJcbiAgICAgICAgLy8gcHJvcHMgdXBkYXRlIG1heSBoYXZlIHRyaWdnZXJlZCBwcmUtZmx1c2ggd2F0Y2hlcnMuXHJcbiAgICAgICAgLy8gZmx1c2ggdGhlbSBiZWZvcmUgdGhlIHJlbmRlciB1cGRhdGUuXHJcbiAgICAgICAgZmx1c2hQcmVGbHVzaENicygpO1xyXG4gICAgICAgIHJlc2V0VHJhY2tpbmcoKTtcclxuICAgIH07XHJcbiAgICBjb25zdCBwYXRjaENoaWxkcmVuID0gKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCA9IGZhbHNlKSA9PiB7XHJcbiAgICAgICAgY29uc3QgYzEgPSBuMSAmJiBuMS5jaGlsZHJlbjtcclxuICAgICAgICBjb25zdCBwcmV2U2hhcGVGbGFnID0gbjEgPyBuMS5zaGFwZUZsYWcgOiAwO1xyXG4gICAgICAgIGNvbnN0IGMyID0gbjIuY2hpbGRyZW47XHJcbiAgICAgICAgY29uc3QgeyBwYXRjaEZsYWcsIHNoYXBlRmxhZyB9ID0gbjI7XHJcbiAgICAgICAgLy8gZmFzdCBwYXRoXHJcbiAgICAgICAgaWYgKHBhdGNoRmxhZyA+IDApIHtcclxuICAgICAgICAgICAgaWYgKHBhdGNoRmxhZyAmIDEyOCAvKiBQYXRjaEZsYWdzLktFWUVEX0ZSQUdNRU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzIGNvdWxkIGJlIGVpdGhlciBmdWxseS1rZXllZCBvciBtaXhlZCAoc29tZSBrZXllZCBzb21lIG5vdClcclxuICAgICAgICAgICAgICAgIC8vIHByZXNlbmNlIG9mIHBhdGNoRmxhZyBtZWFucyBjaGlsZHJlbiBhcmUgZ3VhcmFudGVlZCB0byBiZSBhcnJheXNcclxuICAgICAgICAgICAgICAgIHBhdGNoS2V5ZWRDaGlsZHJlbihjMSwgYzIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHBhdGNoRmxhZyAmIDI1NiAvKiBQYXRjaEZsYWdzLlVOS0VZRURfRlJBR01FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgIC8vIHVua2V5ZWRcclxuICAgICAgICAgICAgICAgIHBhdGNoVW5rZXllZENoaWxkcmVuKGMxLCBjMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY2hpbGRyZW4gaGFzIDMgcG9zc2liaWxpdGllczogdGV4dCwgYXJyYXkgb3Igbm8gY2hpbGRyZW4uXHJcbiAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDggLyogU2hhcGVGbGFncy5URVhUX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgICAgIC8vIHRleHQgY2hpbGRyZW4gZmFzdCBwYXRoXHJcbiAgICAgICAgICAgIGlmIChwcmV2U2hhcGVGbGFnICYgMTYgLyogU2hhcGVGbGFncy5BUlJBWV9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICAgICAgdW5tb3VudENoaWxkcmVuKGMxLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYzIgIT09IGMxKSB7XHJcbiAgICAgICAgICAgICAgICBob3N0U2V0RWxlbWVudFRleHQoY29udGFpbmVyLCBjMik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChwcmV2U2hhcGVGbGFnICYgMTYgLyogU2hhcGVGbGFncy5BUlJBWV9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICAgICAgLy8gcHJldiBjaGlsZHJlbiB3YXMgYXJyYXlcclxuICAgICAgICAgICAgICAgIGlmIChzaGFwZUZsYWcgJiAxNiAvKiBTaGFwZUZsYWdzLkFSUkFZX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdHdvIGFycmF5cywgY2Fubm90IGFzc3VtZSBhbnl0aGluZywgZG8gZnVsbCBkaWZmXHJcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2hLZXllZENoaWxkcmVuKGMxLCBjMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBubyBuZXcgY2hpbGRyZW4sIGp1c3QgdW5tb3VudCBvbGRcclxuICAgICAgICAgICAgICAgICAgICB1bm1vdW50Q2hpbGRyZW4oYzEsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gcHJldiBjaGlsZHJlbiB3YXMgdGV4dCBPUiBudWxsXHJcbiAgICAgICAgICAgICAgICAvLyBuZXcgY2hpbGRyZW4gaXMgYXJyYXkgT1IgbnVsbFxyXG4gICAgICAgICAgICAgICAgaWYgKHByZXZTaGFwZUZsYWcgJiA4IC8qIFNoYXBlRmxhZ3MuVEVYVF9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGhvc3RTZXRFbGVtZW50VGV4dChjb250YWluZXIsICcnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIG1vdW50IG5ldyBpZiBhcnJheVxyXG4gICAgICAgICAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBtb3VudENoaWxkcmVuKGMyLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBwYXRjaFVua2V5ZWRDaGlsZHJlbiA9IChjMSwgYzIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBjMSA9IGMxIHx8IEVNUFRZX0FSUjtcclxuICAgICAgICBjMiA9IGMyIHx8IEVNUFRZX0FSUjtcclxuICAgICAgICBjb25zdCBvbGRMZW5ndGggPSBjMS5sZW5ndGg7XHJcbiAgICAgICAgY29uc3QgbmV3TGVuZ3RoID0gYzIubGVuZ3RoO1xyXG4gICAgICAgIGNvbnN0IGNvbW1vbkxlbmd0aCA9IE1hdGgubWluKG9sZExlbmd0aCwgbmV3TGVuZ3RoKTtcclxuICAgICAgICBsZXQgaTtcclxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY29tbW9uTGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgbmV4dENoaWxkID0gKGMyW2ldID0gb3B0aW1pemVkXHJcbiAgICAgICAgICAgICAgICA/IGNsb25lSWZNb3VudGVkKGMyW2ldKVxyXG4gICAgICAgICAgICAgICAgOiBub3JtYWxpemVWTm9kZShjMltpXSkpO1xyXG4gICAgICAgICAgICBwYXRjaChjMVtpXSwgbmV4dENoaWxkLCBjb250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvbGRMZW5ndGggPiBuZXdMZW5ndGgpIHtcclxuICAgICAgICAgICAgLy8gcmVtb3ZlIG9sZFxyXG4gICAgICAgICAgICB1bm1vdW50Q2hpbGRyZW4oYzEsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHRydWUsIGZhbHNlLCBjb21tb25MZW5ndGgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gbW91bnQgbmV3XHJcbiAgICAgICAgICAgIG1vdW50Q2hpbGRyZW4oYzIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIGNvbW1vbkxlbmd0aCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIC8vIGNhbiBiZSBhbGwta2V5ZWQgb3IgbWl4ZWRcclxuICAgIGNvbnN0IHBhdGNoS2V5ZWRDaGlsZHJlbiA9IChjMSwgYzIsIGNvbnRhaW5lciwgcGFyZW50QW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBsZXQgaSA9IDA7XHJcbiAgICAgICAgY29uc3QgbDIgPSBjMi5sZW5ndGg7XHJcbiAgICAgICAgbGV0IGUxID0gYzEubGVuZ3RoIC0gMTsgLy8gcHJldiBlbmRpbmcgaW5kZXhcclxuICAgICAgICBsZXQgZTIgPSBsMiAtIDE7IC8vIG5leHQgZW5kaW5nIGluZGV4XHJcbiAgICAgICAgLy8gMS4gc3luYyBmcm9tIHN0YXJ0XHJcbiAgICAgICAgLy8gKGEgYikgY1xyXG4gICAgICAgIC8vIChhIGIpIGQgZVxyXG4gICAgICAgIHdoaWxlIChpIDw9IGUxICYmIGkgPD0gZTIpIHtcclxuICAgICAgICAgICAgY29uc3QgbjEgPSBjMVtpXTtcclxuICAgICAgICAgICAgY29uc3QgbjIgPSAoYzJbaV0gPSBvcHRpbWl6ZWRcclxuICAgICAgICAgICAgICAgID8gY2xvbmVJZk1vdW50ZWQoYzJbaV0pXHJcbiAgICAgICAgICAgICAgICA6IG5vcm1hbGl6ZVZOb2RlKGMyW2ldKSk7XHJcbiAgICAgICAgICAgIGlmIChpc1NhbWVWTm9kZVR5cGUobjEsIG4yKSkge1xyXG4gICAgICAgICAgICAgICAgcGF0Y2gobjEsIG4yLCBjb250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpKys7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIDIuIHN5bmMgZnJvbSBlbmRcclxuICAgICAgICAvLyBhIChiIGMpXHJcbiAgICAgICAgLy8gZCBlIChiIGMpXHJcbiAgICAgICAgd2hpbGUgKGkgPD0gZTEgJiYgaSA8PSBlMikge1xyXG4gICAgICAgICAgICBjb25zdCBuMSA9IGMxW2UxXTtcclxuICAgICAgICAgICAgY29uc3QgbjIgPSAoYzJbZTJdID0gb3B0aW1pemVkXHJcbiAgICAgICAgICAgICAgICA/IGNsb25lSWZNb3VudGVkKGMyW2UyXSlcclxuICAgICAgICAgICAgICAgIDogbm9ybWFsaXplVk5vZGUoYzJbZTJdKSk7XHJcbiAgICAgICAgICAgIGlmIChpc1NhbWVWTm9kZVR5cGUobjEsIG4yKSkge1xyXG4gICAgICAgICAgICAgICAgcGF0Y2gobjEsIG4yLCBjb250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlMS0tO1xyXG4gICAgICAgICAgICBlMi0tO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyAzLiBjb21tb24gc2VxdWVuY2UgKyBtb3VudFxyXG4gICAgICAgIC8vIChhIGIpXHJcbiAgICAgICAgLy8gKGEgYikgY1xyXG4gICAgICAgIC8vIGkgPSAyLCBlMSA9IDEsIGUyID0gMlxyXG4gICAgICAgIC8vIChhIGIpXHJcbiAgICAgICAgLy8gYyAoYSBiKVxyXG4gICAgICAgIC8vIGkgPSAwLCBlMSA9IC0xLCBlMiA9IDBcclxuICAgICAgICBpZiAoaSA+IGUxKSB7XHJcbiAgICAgICAgICAgIGlmIChpIDw9IGUyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0UG9zID0gZTIgKyAxO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYW5jaG9yID0gbmV4dFBvcyA8IGwyID8gYzJbbmV4dFBvc10uZWwgOiBwYXJlbnRBbmNob3I7XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAoaSA8PSBlMikge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhdGNoKG51bGwsIChjMltpXSA9IG9wdGltaXplZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGNsb25lSWZNb3VudGVkKGMyW2ldKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG5vcm1hbGl6ZVZOb2RlKGMyW2ldKSksIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGkrKztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyA0LiBjb21tb24gc2VxdWVuY2UgKyB1bm1vdW50XHJcbiAgICAgICAgLy8gKGEgYikgY1xyXG4gICAgICAgIC8vIChhIGIpXHJcbiAgICAgICAgLy8gaSA9IDIsIGUxID0gMiwgZTIgPSAxXHJcbiAgICAgICAgLy8gYSAoYiBjKVxyXG4gICAgICAgIC8vIChiIGMpXHJcbiAgICAgICAgLy8gaSA9IDAsIGUxID0gMCwgZTIgPSAtMVxyXG4gICAgICAgIGVsc2UgaWYgKGkgPiBlMikge1xyXG4gICAgICAgICAgICB3aGlsZSAoaSA8PSBlMSkge1xyXG4gICAgICAgICAgICAgICAgdW5tb3VudChjMVtpXSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICBpKys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gNS4gdW5rbm93biBzZXF1ZW5jZVxyXG4gICAgICAgIC8vIFtpIC4uLiBlMSArIDFdOiBhIGIgW2MgZCBlXSBmIGdcclxuICAgICAgICAvLyBbaSAuLi4gZTIgKyAxXTogYSBiIFtlIGQgYyBoXSBmIGdcclxuICAgICAgICAvLyBpID0gMiwgZTEgPSA0LCBlMiA9IDVcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgczEgPSBpOyAvLyBwcmV2IHN0YXJ0aW5nIGluZGV4XHJcbiAgICAgICAgICAgIGNvbnN0IHMyID0gaTsgLy8gbmV4dCBzdGFydGluZyBpbmRleFxyXG4gICAgICAgICAgICAvLyA1LjEgYnVpbGQga2V5OmluZGV4IG1hcCBmb3IgbmV3Q2hpbGRyZW5cclxuICAgICAgICAgICAgY29uc3Qga2V5VG9OZXdJbmRleE1hcCA9IG5ldyBNYXAoKTtcclxuICAgICAgICAgICAgZm9yIChpID0gczI7IGkgPD0gZTI7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dENoaWxkID0gKGMyW2ldID0gb3B0aW1pemVkXHJcbiAgICAgICAgICAgICAgICAgICAgPyBjbG9uZUlmTW91bnRlZChjMltpXSlcclxuICAgICAgICAgICAgICAgICAgICA6IG5vcm1hbGl6ZVZOb2RlKGMyW2ldKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAobmV4dENoaWxkLmtleSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBrZXlUb05ld0luZGV4TWFwLmhhcyhuZXh0Q2hpbGQua2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuKGBEdXBsaWNhdGUga2V5cyBmb3VuZCBkdXJpbmcgdXBkYXRlOmAsIEpTT04uc3RyaW5naWZ5KG5leHRDaGlsZC5rZXkpLCBgTWFrZSBzdXJlIGtleXMgYXJlIHVuaXF1ZS5gKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAga2V5VG9OZXdJbmRleE1hcC5zZXQobmV4dENoaWxkLmtleSwgaSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gNS4yIGxvb3AgdGhyb3VnaCBvbGQgY2hpbGRyZW4gbGVmdCB0byBiZSBwYXRjaGVkIGFuZCB0cnkgdG8gcGF0Y2hcclxuICAgICAgICAgICAgLy8gbWF0Y2hpbmcgbm9kZXMgJiByZW1vdmUgbm9kZXMgdGhhdCBhcmUgbm8gbG9uZ2VyIHByZXNlbnRcclxuICAgICAgICAgICAgbGV0IGo7XHJcbiAgICAgICAgICAgIGxldCBwYXRjaGVkID0gMDtcclxuICAgICAgICAgICAgY29uc3QgdG9CZVBhdGNoZWQgPSBlMiAtIHMyICsgMTtcclxuICAgICAgICAgICAgbGV0IG1vdmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vIHVzZWQgdG8gdHJhY2sgd2hldGhlciBhbnkgbm9kZSBoYXMgbW92ZWRcclxuICAgICAgICAgICAgbGV0IG1heE5ld0luZGV4U29GYXIgPSAwO1xyXG4gICAgICAgICAgICAvLyB3b3JrcyBhcyBNYXA8bmV3SW5kZXgsIG9sZEluZGV4PlxyXG4gICAgICAgICAgICAvLyBOb3RlIHRoYXQgb2xkSW5kZXggaXMgb2Zmc2V0IGJ5ICsxXHJcbiAgICAgICAgICAgIC8vIGFuZCBvbGRJbmRleCA9IDAgaXMgYSBzcGVjaWFsIHZhbHVlIGluZGljYXRpbmcgdGhlIG5ldyBub2RlIGhhc1xyXG4gICAgICAgICAgICAvLyBubyBjb3JyZXNwb25kaW5nIG9sZCBub2RlLlxyXG4gICAgICAgICAgICAvLyB1c2VkIGZvciBkZXRlcm1pbmluZyBsb25nZXN0IHN0YWJsZSBzdWJzZXF1ZW5jZVxyXG4gICAgICAgICAgICBjb25zdCBuZXdJbmRleFRvT2xkSW5kZXhNYXAgPSBuZXcgQXJyYXkodG9CZVBhdGNoZWQpO1xyXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdG9CZVBhdGNoZWQ7IGkrKylcclxuICAgICAgICAgICAgICAgIG5ld0luZGV4VG9PbGRJbmRleE1hcFtpXSA9IDA7XHJcbiAgICAgICAgICAgIGZvciAoaSA9IHMxOyBpIDw9IGUxOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZDaGlsZCA9IGMxW2ldO1xyXG4gICAgICAgICAgICAgICAgaWYgKHBhdGNoZWQgPj0gdG9CZVBhdGNoZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBhbGwgbmV3IGNoaWxkcmVuIGhhdmUgYmVlbiBwYXRjaGVkIHNvIHRoaXMgY2FuIG9ubHkgYmUgYSByZW1vdmFsXHJcbiAgICAgICAgICAgICAgICAgICAgdW5tb3VudChwcmV2Q2hpbGQsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGV0IG5ld0luZGV4O1xyXG4gICAgICAgICAgICAgICAgaWYgKHByZXZDaGlsZC5rZXkgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld0luZGV4ID0ga2V5VG9OZXdJbmRleE1hcC5nZXQocHJldkNoaWxkLmtleSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBrZXktbGVzcyBub2RlLCB0cnkgdG8gbG9jYXRlIGEga2V5LWxlc3Mgbm9kZSBvZiB0aGUgc2FtZSB0eXBlXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gczI7IGogPD0gZTI7IGorKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3SW5kZXhUb09sZEluZGV4TWFwW2ogLSBzMl0gPT09IDAgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2FtZVZOb2RlVHlwZShwcmV2Q2hpbGQsIGMyW2pdKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3SW5kZXggPSBqO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAobmV3SW5kZXggPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHVubW91bnQocHJldkNoaWxkLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld0luZGV4VG9PbGRJbmRleE1hcFtuZXdJbmRleCAtIHMyXSA9IGkgKyAxO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdJbmRleCA+PSBtYXhOZXdJbmRleFNvRmFyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heE5ld0luZGV4U29GYXIgPSBuZXdJbmRleDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2gocHJldkNoaWxkLCBjMltuZXdJbmRleF0sIGNvbnRhaW5lciwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgICAgICBwYXRjaGVkKys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gNS4zIG1vdmUgYW5kIG1vdW50XHJcbiAgICAgICAgICAgIC8vIGdlbmVyYXRlIGxvbmdlc3Qgc3RhYmxlIHN1YnNlcXVlbmNlIG9ubHkgd2hlbiBub2RlcyBoYXZlIG1vdmVkXHJcbiAgICAgICAgICAgIGNvbnN0IGluY3JlYXNpbmdOZXdJbmRleFNlcXVlbmNlID0gbW92ZWRcclxuICAgICAgICAgICAgICAgID8gZ2V0U2VxdWVuY2UobmV3SW5kZXhUb09sZEluZGV4TWFwKVxyXG4gICAgICAgICAgICAgICAgOiBFTVBUWV9BUlI7XHJcbiAgICAgICAgICAgIGogPSBpbmNyZWFzaW5nTmV3SW5kZXhTZXF1ZW5jZS5sZW5ndGggLSAxO1xyXG4gICAgICAgICAgICAvLyBsb29waW5nIGJhY2t3YXJkcyBzbyB0aGF0IHdlIGNhbiB1c2UgbGFzdCBwYXRjaGVkIG5vZGUgYXMgYW5jaG9yXHJcbiAgICAgICAgICAgIGZvciAoaSA9IHRvQmVQYXRjaGVkIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRJbmRleCA9IHMyICsgaTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRDaGlsZCA9IGMyW25leHRJbmRleF07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhbmNob3IgPSBuZXh0SW5kZXggKyAxIDwgbDIgPyBjMltuZXh0SW5kZXggKyAxXS5lbCA6IHBhcmVudEFuY2hvcjtcclxuICAgICAgICAgICAgICAgIGlmIChuZXdJbmRleFRvT2xkSW5kZXhNYXBbaV0gPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBtb3VudCBuZXdcclxuICAgICAgICAgICAgICAgICAgICBwYXRjaChudWxsLCBuZXh0Q2hpbGQsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobW92ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBtb3ZlIGlmOlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIHN0YWJsZSBzdWJzZXF1ZW5jZSAoZS5nLiBhIHJldmVyc2UpXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gT1IgY3VycmVudCBub2RlIGlzIG5vdCBhbW9uZyB0aGUgc3RhYmxlIHNlcXVlbmNlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGogPCAwIHx8IGkgIT09IGluY3JlYXNpbmdOZXdJbmRleFNlcXVlbmNlW2pdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUobmV4dENoaWxkLCBjb250YWluZXIsIGFuY2hvciwgMiAvKiBNb3ZlVHlwZS5SRU9SREVSICovKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGotLTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgbW92ZSA9ICh2bm9kZSwgY29udGFpbmVyLCBhbmNob3IsIG1vdmVUeXBlLCBwYXJlbnRTdXNwZW5zZSA9IG51bGwpID0+IHtcclxuICAgICAgICBjb25zdCB7IGVsLCB0eXBlLCB0cmFuc2l0aW9uLCBjaGlsZHJlbiwgc2hhcGVGbGFnIH0gPSB2bm9kZTtcclxuICAgICAgICBpZiAoc2hhcGVGbGFnICYgNiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVCAqLykge1xyXG4gICAgICAgICAgICBtb3ZlKHZub2RlLmNvbXBvbmVudC5zdWJUcmVlLCBjb250YWluZXIsIGFuY2hvciwgbW92ZVR5cGUpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzaGFwZUZsYWcgJiAxMjggLyogU2hhcGVGbGFncy5TVVNQRU5TRSAqLykge1xyXG4gICAgICAgICAgICB2bm9kZS5zdXNwZW5zZS5tb3ZlKGNvbnRhaW5lciwgYW5jaG9yLCBtb3ZlVHlwZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDY0IC8qIFNoYXBlRmxhZ3MuVEVMRVBPUlQgKi8pIHtcclxuICAgICAgICAgICAgdHlwZS5tb3ZlKHZub2RlLCBjb250YWluZXIsIGFuY2hvciwgaW50ZXJuYWxzKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZSA9PT0gRnJhZ21lbnQpIHtcclxuICAgICAgICAgICAgaG9zdEluc2VydChlbCwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBtb3ZlKGNoaWxkcmVuW2ldLCBjb250YWluZXIsIGFuY2hvciwgbW92ZVR5cGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGhvc3RJbnNlcnQodm5vZGUuYW5jaG9yLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGUgPT09IFN0YXRpYykge1xyXG4gICAgICAgICAgICBtb3ZlU3RhdGljTm9kZSh2bm9kZSwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHNpbmdsZSBub2Rlc1xyXG4gICAgICAgIGNvbnN0IG5lZWRUcmFuc2l0aW9uID0gbW92ZVR5cGUgIT09IDIgLyogTW92ZVR5cGUuUkVPUkRFUiAqLyAmJlxyXG4gICAgICAgICAgICBzaGFwZUZsYWcgJiAxIC8qIFNoYXBlRmxhZ3MuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgICAgICB0cmFuc2l0aW9uO1xyXG4gICAgICAgIGlmIChuZWVkVHJhbnNpdGlvbikge1xyXG4gICAgICAgICAgICBpZiAobW92ZVR5cGUgPT09IDAgLyogTW92ZVR5cGUuRU5URVIgKi8pIHtcclxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb24uYmVmb3JlRW50ZXIoZWwpO1xyXG4gICAgICAgICAgICAgICAgaG9zdEluc2VydChlbCwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KCgpID0+IHRyYW5zaXRpb24uZW50ZXIoZWwpLCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IGxlYXZlLCBkZWxheUxlYXZlLCBhZnRlckxlYXZlIH0gPSB0cmFuc2l0aW9uO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVtb3ZlID0gKCkgPT4gaG9zdEluc2VydChlbCwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGVyZm9ybUxlYXZlID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxlYXZlKGVsLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhZnRlckxlYXZlICYmIGFmdGVyTGVhdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBpZiAoZGVsYXlMZWF2ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5TGVhdmUoZWwsIHJlbW92ZSwgcGVyZm9ybUxlYXZlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHBlcmZvcm1MZWF2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBob3N0SW5zZXJ0KGVsLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHVubW91bnQgPSAodm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGRvUmVtb3ZlID0gZmFsc2UsIG9wdGltaXplZCA9IGZhbHNlKSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyB0eXBlLCBwcm9wcywgcmVmLCBjaGlsZHJlbiwgZHluYW1pY0NoaWxkcmVuLCBzaGFwZUZsYWcsIHBhdGNoRmxhZywgZGlycyB9ID0gdm5vZGU7XHJcbiAgICAgICAgLy8gdW5zZXQgcmVmXHJcbiAgICAgICAgaWYgKHJlZiAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHNldFJlZihyZWYsIG51bGwsIHBhcmVudFN1c3BlbnNlLCB2bm9kZSwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzaGFwZUZsYWcgJiAyNTYgLyogU2hhcGVGbGFncy5DT01QT05FTlRfU0hPVUxEX0tFRVBfQUxJVkUgKi8pIHtcclxuICAgICAgICAgICAgcGFyZW50Q29tcG9uZW50LmN0eC5kZWFjdGl2YXRlKHZub2RlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzaG91bGRJbnZva2VEaXJzID0gc2hhcGVGbGFnICYgMSAvKiBTaGFwZUZsYWdzLkVMRU1FTlQgKi8gJiYgZGlycztcclxuICAgICAgICBjb25zdCBzaG91bGRJbnZva2VWbm9kZUhvb2sgPSAhaXNBc3luY1dyYXBwZXIodm5vZGUpO1xyXG4gICAgICAgIGxldCB2bm9kZUhvb2s7XHJcbiAgICAgICAgaWYgKHNob3VsZEludm9rZVZub2RlSG9vayAmJlxyXG4gICAgICAgICAgICAodm5vZGVIb29rID0gcHJvcHMgJiYgcHJvcHMub25Wbm9kZUJlZm9yZVVubW91bnQpKSB7XHJcbiAgICAgICAgICAgIGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2ssIHBhcmVudENvbXBvbmVudCwgdm5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2hhcGVGbGFnICYgNiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVCAqLykge1xyXG4gICAgICAgICAgICB1bm1vdW50Q29tcG9uZW50KHZub2RlLmNvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGRvUmVtb3ZlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChzaGFwZUZsYWcgJiAxMjggLyogU2hhcGVGbGFncy5TVVNQRU5TRSAqLykge1xyXG4gICAgICAgICAgICAgICAgdm5vZGUuc3VzcGVuc2UudW5tb3VudChwYXJlbnRTdXNwZW5zZSwgZG9SZW1vdmUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzaG91bGRJbnZva2VEaXJzKSB7XHJcbiAgICAgICAgICAgICAgICBpbnZva2VEaXJlY3RpdmVIb29rKHZub2RlLCBudWxsLCBwYXJlbnRDb21wb25lbnQsICdiZWZvcmVVbm1vdW50Jyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDY0IC8qIFNoYXBlRmxhZ3MuVEVMRVBPUlQgKi8pIHtcclxuICAgICAgICAgICAgICAgIHZub2RlLnR5cGUucmVtb3ZlKHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBvcHRpbWl6ZWQsIGludGVybmFscywgZG9SZW1vdmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGR5bmFtaWNDaGlsZHJlbiAmJlxyXG4gICAgICAgICAgICAgICAgLy8gIzExNTM6IGZhc3QgcGF0aCBzaG91bGQgbm90IGJlIHRha2VuIGZvciBub24tc3RhYmxlICh2LWZvcikgZnJhZ21lbnRzXHJcbiAgICAgICAgICAgICAgICAodHlwZSAhPT0gRnJhZ21lbnQgfHxcclxuICAgICAgICAgICAgICAgICAgICAocGF0Y2hGbGFnID4gMCAmJiBwYXRjaEZsYWcgJiA2NCAvKiBQYXRjaEZsYWdzLlNUQUJMRV9GUkFHTUVOVCAqLykpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBmYXN0IHBhdGggZm9yIGJsb2NrIG5vZGVzOiBvbmx5IG5lZWQgdG8gdW5tb3VudCBkeW5hbWljIGNoaWxkcmVuLlxyXG4gICAgICAgICAgICAgICAgdW5tb3VudENoaWxkcmVuKGR5bmFtaWNDaGlsZHJlbiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgZmFsc2UsIHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKCh0eXBlID09PSBGcmFnbWVudCAmJlxyXG4gICAgICAgICAgICAgICAgcGF0Y2hGbGFnICZcclxuICAgICAgICAgICAgICAgICAgICAoMTI4IC8qIFBhdGNoRmxhZ3MuS0VZRURfRlJBR01FTlQgKi8gfCAyNTYgLyogUGF0Y2hGbGFncy5VTktFWUVEX0ZSQUdNRU5UICovKSkgfHxcclxuICAgICAgICAgICAgICAgICghb3B0aW1pemVkICYmIHNoYXBlRmxhZyAmIDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi8pKSB7XHJcbiAgICAgICAgICAgICAgICB1bm1vdW50Q2hpbGRyZW4oY2hpbGRyZW4sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChkb1JlbW92ZSkge1xyXG4gICAgICAgICAgICAgICAgcmVtb3ZlKHZub2RlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKHNob3VsZEludm9rZVZub2RlSG9vayAmJlxyXG4gICAgICAgICAgICAodm5vZGVIb29rID0gcHJvcHMgJiYgcHJvcHMub25Wbm9kZVVubW91bnRlZCkpIHx8XHJcbiAgICAgICAgICAgIHNob3VsZEludm9rZURpcnMpIHtcclxuICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHZub2RlSG9vayAmJiBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBwYXJlbnRDb21wb25lbnQsIHZub2RlKTtcclxuICAgICAgICAgICAgICAgIHNob3VsZEludm9rZURpcnMgJiZcclxuICAgICAgICAgICAgICAgICAgICBpbnZva2VEaXJlY3RpdmVIb29rKHZub2RlLCBudWxsLCBwYXJlbnRDb21wb25lbnQsICd1bm1vdW50ZWQnKTtcclxuICAgICAgICAgICAgfSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCByZW1vdmUgPSB2bm9kZSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyB0eXBlLCBlbCwgYW5jaG9yLCB0cmFuc2l0aW9uIH0gPSB2bm9kZTtcclxuICAgICAgICBpZiAodHlwZSA9PT0gRnJhZ21lbnQpIHtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgdm5vZGUucGF0Y2hGbGFnID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgdm5vZGUucGF0Y2hGbGFnICYgMjA0OCAvKiBQYXRjaEZsYWdzLkRFVl9ST09UX0ZSQUdNRU5UICovICYmXHJcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uICYmXHJcbiAgICAgICAgICAgICAgICAhdHJhbnNpdGlvbi5wZXJzaXN0ZWQpIHtcclxuICAgICAgICAgICAgICAgIHZub2RlLmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC50eXBlID09PSBDb21tZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RSZW1vdmUoY2hpbGQuZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKGNoaWxkKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJlbW92ZUZyYWdtZW50KGVsLCBhbmNob3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGUgPT09IFN0YXRpYykge1xyXG4gICAgICAgICAgICByZW1vdmVTdGF0aWNOb2RlKHZub2RlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBwZXJmb3JtUmVtb3ZlID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBob3N0UmVtb3ZlKGVsKTtcclxuICAgICAgICAgICAgaWYgKHRyYW5zaXRpb24gJiYgIXRyYW5zaXRpb24ucGVyc2lzdGVkICYmIHRyYW5zaXRpb24uYWZ0ZXJMZWF2ZSkge1xyXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbi5hZnRlckxlYXZlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICh2bm9kZS5zaGFwZUZsYWcgJiAxIC8qIFNoYXBlRmxhZ3MuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgICAgICB0cmFuc2l0aW9uICYmXHJcbiAgICAgICAgICAgICF0cmFuc2l0aW9uLnBlcnNpc3RlZCkge1xyXG4gICAgICAgICAgICBjb25zdCB7IGxlYXZlLCBkZWxheUxlYXZlIH0gPSB0cmFuc2l0aW9uO1xyXG4gICAgICAgICAgICBjb25zdCBwZXJmb3JtTGVhdmUgPSAoKSA9PiBsZWF2ZShlbCwgcGVyZm9ybVJlbW92ZSk7XHJcbiAgICAgICAgICAgIGlmIChkZWxheUxlYXZlKSB7XHJcbiAgICAgICAgICAgICAgICBkZWxheUxlYXZlKHZub2RlLmVsLCBwZXJmb3JtUmVtb3ZlLCBwZXJmb3JtTGVhdmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcGVyZm9ybUxlYXZlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHBlcmZvcm1SZW1vdmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcmVtb3ZlRnJhZ21lbnQgPSAoY3VyLCBlbmQpID0+IHtcclxuICAgICAgICAvLyBGb3IgZnJhZ21lbnRzLCBkaXJlY3RseSByZW1vdmUgYWxsIGNvbnRhaW5lZCBET00gbm9kZXMuXHJcbiAgICAgICAgLy8gKGZyYWdtZW50IGNoaWxkIG5vZGVzIGNhbm5vdCBoYXZlIHRyYW5zaXRpb24pXHJcbiAgICAgICAgbGV0IG5leHQ7XHJcbiAgICAgICAgd2hpbGUgKGN1ciAhPT0gZW5kKSB7XHJcbiAgICAgICAgICAgIG5leHQgPSBob3N0TmV4dFNpYmxpbmcoY3VyKTtcclxuICAgICAgICAgICAgaG9zdFJlbW92ZShjdXIpO1xyXG4gICAgICAgICAgICBjdXIgPSBuZXh0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBob3N0UmVtb3ZlKGVuZCk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgdW5tb3VudENvbXBvbmVudCA9IChpbnN0YW5jZSwgcGFyZW50U3VzcGVuc2UsIGRvUmVtb3ZlKSA9PiB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBpbnN0YW5jZS50eXBlLl9faG1ySWQpIHtcclxuICAgICAgICAgICAgdW5yZWdpc3RlckhNUihpbnN0YW5jZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHsgYnVtLCBzY29wZSwgdXBkYXRlLCBzdWJUcmVlLCB1bSB9ID0gaW5zdGFuY2U7XHJcbiAgICAgICAgLy8gYmVmb3JlVW5tb3VudCBob29rXHJcbiAgICAgICAgaWYgKGJ1bSkge1xyXG4gICAgICAgICAgICBpbnZva2VBcnJheUZucyhidW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBzdG9wIGVmZmVjdHMgaW4gY29tcG9uZW50IHNjb3BlXHJcbiAgICAgICAgc2NvcGUuc3RvcCgpO1xyXG4gICAgICAgIC8vIHVwZGF0ZSBtYXkgYmUgbnVsbCBpZiBhIGNvbXBvbmVudCBpcyB1bm1vdW50ZWQgYmVmb3JlIGl0cyBhc3luY1xyXG4gICAgICAgIC8vIHNldHVwIGhhcyByZXNvbHZlZC5cclxuICAgICAgICBpZiAodXBkYXRlKSB7XHJcbiAgICAgICAgICAgIC8vIHNvIHRoYXQgc2NoZWR1bGVyIHdpbGwgbm8gbG9uZ2VyIGludm9rZSBpdFxyXG4gICAgICAgICAgICB1cGRhdGUuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHVubW91bnQoc3ViVHJlZSwgaW5zdGFuY2UsIHBhcmVudFN1c3BlbnNlLCBkb1JlbW92ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHVubW91bnRlZCBob29rXHJcbiAgICAgICAgaWYgKHVtKSB7XHJcbiAgICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCh1bSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5pc1VubW91bnRlZCA9IHRydWU7XHJcbiAgICAgICAgfSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgIC8vIEEgY29tcG9uZW50IHdpdGggYXN5bmMgZGVwIGluc2lkZSBhIHBlbmRpbmcgc3VzcGVuc2UgaXMgdW5tb3VudGVkIGJlZm9yZVxyXG4gICAgICAgIC8vIGl0cyBhc3luYyBkZXAgcmVzb2x2ZXMuIFRoaXMgc2hvdWxkIHJlbW92ZSB0aGUgZGVwIGZyb20gdGhlIHN1c3BlbnNlLCBhbmRcclxuICAgICAgICAvLyBjYXVzZSB0aGUgc3VzcGVuc2UgdG8gcmVzb2x2ZSBpbW1lZGlhdGVseSBpZiB0aGF0IHdhcyB0aGUgbGFzdCBkZXAuXHJcbiAgICAgICAgaWYgKHBhcmVudFN1c3BlbnNlICYmXHJcbiAgICAgICAgICAgIHBhcmVudFN1c3BlbnNlLnBlbmRpbmdCcmFuY2ggJiZcclxuICAgICAgICAgICAgIXBhcmVudFN1c3BlbnNlLmlzVW5tb3VudGVkICYmXHJcbiAgICAgICAgICAgIGluc3RhbmNlLmFzeW5jRGVwICYmXHJcbiAgICAgICAgICAgICFpbnN0YW5jZS5hc3luY1Jlc29sdmVkICYmXHJcbiAgICAgICAgICAgIGluc3RhbmNlLnN1c3BlbnNlSWQgPT09IHBhcmVudFN1c3BlbnNlLnBlbmRpbmdJZCkge1xyXG4gICAgICAgICAgICBwYXJlbnRTdXNwZW5zZS5kZXBzLS07XHJcbiAgICAgICAgICAgIGlmIChwYXJlbnRTdXNwZW5zZS5kZXBzID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJlbnRTdXNwZW5zZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICAgICAgZGV2dG9vbHNDb21wb25lbnRSZW1vdmVkKGluc3RhbmNlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgdW5tb3VudENoaWxkcmVuID0gKGNoaWxkcmVuLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBkb1JlbW92ZSA9IGZhbHNlLCBvcHRpbWl6ZWQgPSBmYWxzZSwgc3RhcnQgPSAwKSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdW5tb3VudChjaGlsZHJlbltpXSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgZG9SZW1vdmUsIG9wdGltaXplZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IGdldE5leHRIb3N0Tm9kZSA9IHZub2RlID0+IHtcclxuICAgICAgICBpZiAodm5vZGUuc2hhcGVGbGFnICYgNiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVCAqLykge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2V0TmV4dEhvc3ROb2RlKHZub2RlLmNvbXBvbmVudC5zdWJUcmVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDEyOCAvKiBTaGFwZUZsYWdzLlNVU1BFTlNFICovKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2bm9kZS5zdXNwZW5zZS5uZXh0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBob3N0TmV4dFNpYmxpbmcoKHZub2RlLmFuY2hvciB8fCB2bm9kZS5lbCkpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlbmRlciA9ICh2bm9kZSwgY29udGFpbmVyLCBpc1NWRykgPT4ge1xyXG4gICAgICAgIGlmICh2bm9kZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmIChjb250YWluZXIuX3Zub2RlKSB7XHJcbiAgICAgICAgICAgICAgICB1bm1vdW50KGNvbnRhaW5lci5fdm5vZGUsIG51bGwsIG51bGwsIHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBwYXRjaChjb250YWluZXIuX3Zub2RlIHx8IG51bGwsIHZub2RlLCBjb250YWluZXIsIG51bGwsIG51bGwsIG51bGwsIGlzU1ZHKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmx1c2hQcmVGbHVzaENicygpO1xyXG4gICAgICAgIGZsdXNoUG9zdEZsdXNoQ2JzKCk7XHJcbiAgICAgICAgY29udGFpbmVyLl92bm9kZSA9IHZub2RlO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGludGVybmFscyA9IHtcclxuICAgICAgICBwOiBwYXRjaCxcclxuICAgICAgICB1bTogdW5tb3VudCxcclxuICAgICAgICBtOiBtb3ZlLFxyXG4gICAgICAgIHI6IHJlbW92ZSxcclxuICAgICAgICBtdDogbW91bnRDb21wb25lbnQsXHJcbiAgICAgICAgbWM6IG1vdW50Q2hpbGRyZW4sXHJcbiAgICAgICAgcGM6IHBhdGNoQ2hpbGRyZW4sXHJcbiAgICAgICAgcGJjOiBwYXRjaEJsb2NrQ2hpbGRyZW4sXHJcbiAgICAgICAgbjogZ2V0TmV4dEhvc3ROb2RlLFxyXG4gICAgICAgIG86IG9wdGlvbnNcclxuICAgIH07XHJcbiAgICBsZXQgaHlkcmF0ZTtcclxuICAgIGxldCBoeWRyYXRlTm9kZTtcclxuICAgIGlmIChjcmVhdGVIeWRyYXRpb25GbnMpIHtcclxuICAgICAgICBbaHlkcmF0ZSwgaHlkcmF0ZU5vZGVdID0gY3JlYXRlSHlkcmF0aW9uRm5zKGludGVybmFscyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHJlbmRlcixcclxuICAgICAgICBoeWRyYXRlLFxyXG4gICAgICAgIGNyZWF0ZUFwcDogY3JlYXRlQXBwQVBJKHJlbmRlciwgaHlkcmF0ZSlcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gdG9nZ2xlUmVjdXJzZSh7IGVmZmVjdCwgdXBkYXRlIH0sIGFsbG93ZWQpIHtcclxuICAgIGVmZmVjdC5hbGxvd1JlY3Vyc2UgPSB1cGRhdGUuYWxsb3dSZWN1cnNlID0gYWxsb3dlZDtcclxufVxyXG4vKipcclxuICogIzExNTZcclxuICogV2hlbiBhIGNvbXBvbmVudCBpcyBITVItZW5hYmxlZCwgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgc3RhdGljIG5vZGVzXHJcbiAqIGluc2lkZSBhIGJsb2NrIGFsc28gaW5oZXJpdCB0aGUgRE9NIGVsZW1lbnQgZnJvbSB0aGUgcHJldmlvdXMgdHJlZSBzbyB0aGF0XHJcbiAqIEhNUiB1cGRhdGVzICh3aGljaCBhcmUgZnVsbCB1cGRhdGVzKSBjYW4gcmV0cmlldmUgdGhlIGVsZW1lbnQgZm9yIHBhdGNoaW5nLlxyXG4gKlxyXG4gKiAjMjA4MFxyXG4gKiBJbnNpZGUga2V5ZWQgYHRlbXBsYXRlYCBmcmFnbWVudCBzdGF0aWMgY2hpbGRyZW4sIGlmIGEgZnJhZ21lbnQgaXMgbW92ZWQsXHJcbiAqIHRoZSBjaGlsZHJlbiB3aWxsIGFsd2F5cyBiZSBtb3ZlZC4gVGhlcmVmb3JlLCBpbiBvcmRlciB0byBlbnN1cmUgY29ycmVjdCBtb3ZlXHJcbiAqIHBvc2l0aW9uLCBlbCBzaG91bGQgYmUgaW5oZXJpdGVkIGZyb20gcHJldmlvdXMgbm9kZXMuXHJcbiAqL1xyXG5mdW5jdGlvbiB0cmF2ZXJzZVN0YXRpY0NoaWxkcmVuKG4xLCBuMiwgc2hhbGxvdyA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBjaDEgPSBuMS5jaGlsZHJlbjtcclxuICAgIGNvbnN0IGNoMiA9IG4yLmNoaWxkcmVuO1xyXG4gICAgaWYgKGlzQXJyYXkoY2gxKSAmJiBpc0FycmF5KGNoMikpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoMS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAvLyB0aGlzIGlzIG9ubHkgY2FsbGVkIGluIHRoZSBvcHRpbWl6ZWQgcGF0aCBzbyBhcnJheSBjaGlsZHJlbiBhcmVcclxuICAgICAgICAgICAgLy8gZ3VhcmFudGVlZCB0byBiZSB2bm9kZXNcclxuICAgICAgICAgICAgY29uc3QgYzEgPSBjaDFbaV07XHJcbiAgICAgICAgICAgIGxldCBjMiA9IGNoMltpXTtcclxuICAgICAgICAgICAgaWYgKGMyLnNoYXBlRmxhZyAmIDEgLyogU2hhcGVGbGFncy5FTEVNRU5UICovICYmICFjMi5keW5hbWljQ2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgIGlmIChjMi5wYXRjaEZsYWcgPD0gMCB8fCBjMi5wYXRjaEZsYWcgPT09IDMyIC8qIFBhdGNoRmxhZ3MuSFlEUkFURV9FVkVOVFMgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBjMiA9IGNoMltpXSA9IGNsb25lSWZNb3VudGVkKGNoMltpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYzIuZWwgPSBjMS5lbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghc2hhbGxvdylcclxuICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzZVN0YXRpY0NoaWxkcmVuKGMxLCBjMik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gYWxzbyBpbmhlcml0IGZvciBjb21tZW50IG5vZGVzLCBidXQgbm90IHBsYWNlaG9sZGVycyAoZS5nLiB2LWlmIHdoaWNoXHJcbiAgICAgICAgICAgIC8vIHdvdWxkIGhhdmUgcmVjZWl2ZWQgLmVsIGR1cmluZyBibG9jayBwYXRjaClcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBjMi50eXBlID09PSBDb21tZW50ICYmICFjMi5lbCkge1xyXG4gICAgICAgICAgICAgICAgYzIuZWwgPSBjMS5lbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Mb25nZXN0X2luY3JlYXNpbmdfc3Vic2VxdWVuY2VcclxuZnVuY3Rpb24gZ2V0U2VxdWVuY2UoYXJyKSB7XHJcbiAgICBjb25zdCBwID0gYXJyLnNsaWNlKCk7XHJcbiAgICBjb25zdCByZXN1bHQgPSBbMF07XHJcbiAgICBsZXQgaSwgaiwgdSwgdiwgYztcclxuICAgIGNvbnN0IGxlbiA9IGFyci5sZW5ndGg7XHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICBjb25zdCBhcnJJID0gYXJyW2ldO1xyXG4gICAgICAgIGlmIChhcnJJICE9PSAwKSB7XHJcbiAgICAgICAgICAgIGogPSByZXN1bHRbcmVzdWx0Lmxlbmd0aCAtIDFdO1xyXG4gICAgICAgICAgICBpZiAoYXJyW2pdIDwgYXJySSkge1xyXG4gICAgICAgICAgICAgICAgcFtpXSA9IGo7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChpKTtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHUgPSAwO1xyXG4gICAgICAgICAgICB2ID0gcmVzdWx0Lmxlbmd0aCAtIDE7XHJcbiAgICAgICAgICAgIHdoaWxlICh1IDwgdikge1xyXG4gICAgICAgICAgICAgICAgYyA9ICh1ICsgdikgPj4gMTtcclxuICAgICAgICAgICAgICAgIGlmIChhcnJbcmVzdWx0W2NdXSA8IGFyckkpIHtcclxuICAgICAgICAgICAgICAgICAgICB1ID0gYyArIDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB2ID0gYztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYXJySSA8IGFycltyZXN1bHRbdV1dKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBwW2ldID0gcmVzdWx0W3UgLSAxXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJlc3VsdFt1XSA9IGk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICB1ID0gcmVzdWx0Lmxlbmd0aDtcclxuICAgIHYgPSByZXN1bHRbdSAtIDFdO1xyXG4gICAgd2hpbGUgKHUtLSA+IDApIHtcclxuICAgICAgICByZXN1bHRbdV0gPSB2O1xyXG4gICAgICAgIHYgPSBwW3ZdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxuXG5jb25zdCBpc1RlbGVwb3J0ID0gKHR5cGUpID0+IHR5cGUuX19pc1RlbGVwb3J0O1xyXG5jb25zdCBpc1RlbGVwb3J0RGlzYWJsZWQgPSAocHJvcHMpID0+IHByb3BzICYmIChwcm9wcy5kaXNhYmxlZCB8fCBwcm9wcy5kaXNhYmxlZCA9PT0gJycpO1xyXG5jb25zdCBpc1RhcmdldFNWRyA9ICh0YXJnZXQpID0+IHR5cGVvZiBTVkdFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB0YXJnZXQgaW5zdGFuY2VvZiBTVkdFbGVtZW50O1xyXG5jb25zdCByZXNvbHZlVGFyZ2V0ID0gKHByb3BzLCBzZWxlY3QpID0+IHtcclxuICAgIGNvbnN0IHRhcmdldFNlbGVjdG9yID0gcHJvcHMgJiYgcHJvcHMudG87XHJcbiAgICBpZiAoaXNTdHJpbmcodGFyZ2V0U2VsZWN0b3IpKSB7XHJcbiAgICAgICAgaWYgKCFzZWxlY3QpIHtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICB3YXJuKGBDdXJyZW50IHJlbmRlcmVyIGRvZXMgbm90IHN1cHBvcnQgc3RyaW5nIHRhcmdldCBmb3IgVGVsZXBvcnRzLiBgICtcclxuICAgICAgICAgICAgICAgICAgICBgKG1pc3NpbmcgcXVlcnlTZWxlY3RvciByZW5kZXJlciBvcHRpb24pYCk7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gc2VsZWN0KHRhcmdldFNlbGVjdG9yKTtcclxuICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcclxuICAgICAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYEZhaWxlZCB0byBsb2NhdGUgVGVsZXBvcnQgdGFyZ2V0IHdpdGggc2VsZWN0b3IgXCIke3RhcmdldFNlbGVjdG9yfVwiLiBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYE5vdGUgdGhlIHRhcmdldCBlbGVtZW50IG11c3QgZXhpc3QgYmVmb3JlIHRoZSBjb21wb25lbnQgaXMgbW91bnRlZCAtIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgaS5lLiB0aGUgdGFyZ2V0IGNhbm5vdCBiZSByZW5kZXJlZCBieSB0aGUgY29tcG9uZW50IGl0c2VsZiwgYW5kIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgaWRlYWxseSBzaG91bGQgYmUgb3V0c2lkZSBvZiB0aGUgZW50aXJlIFZ1ZSBjb21wb25lbnQgdHJlZS5gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIXRhcmdldFNlbGVjdG9yICYmICFpc1RlbGVwb3J0RGlzYWJsZWQocHJvcHMpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYEludmFsaWQgVGVsZXBvcnQgdGFyZ2V0OiAke3RhcmdldFNlbGVjdG9yfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGFyZ2V0U2VsZWN0b3I7XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IFRlbGVwb3J0SW1wbCA9IHtcclxuICAgIF9faXNUZWxlcG9ydDogdHJ1ZSxcclxuICAgIHByb2Nlc3MobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCBpbnRlcm5hbHMpIHtcclxuICAgICAgICBjb25zdCB7IG1jOiBtb3VudENoaWxkcmVuLCBwYzogcGF0Y2hDaGlsZHJlbiwgcGJjOiBwYXRjaEJsb2NrQ2hpbGRyZW4sIG86IHsgaW5zZXJ0LCBxdWVyeVNlbGVjdG9yLCBjcmVhdGVUZXh0LCBjcmVhdGVDb21tZW50IH0gfSA9IGludGVybmFscztcclxuICAgICAgICBjb25zdCBkaXNhYmxlZCA9IGlzVGVsZXBvcnREaXNhYmxlZChuMi5wcm9wcyk7XHJcbiAgICAgICAgbGV0IHsgc2hhcGVGbGFnLCBjaGlsZHJlbiwgZHluYW1pY0NoaWxkcmVuIH0gPSBuMjtcclxuICAgICAgICAvLyAjMzMwMlxyXG4gICAgICAgIC8vIEhNUiB1cGRhdGVkLCBmb3JjZSBmdWxsIGRpZmZcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGlzSG1yVXBkYXRpbmcpIHtcclxuICAgICAgICAgICAgb3B0aW1pemVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGR5bmFtaWNDaGlsZHJlbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChuMSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIC8vIGluc2VydCBhbmNob3JzIGluIHRoZSBtYWluIHZpZXdcclxuICAgICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSAobjIuZWwgPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICAgICAgICAgID8gY3JlYXRlQ29tbWVudCgndGVsZXBvcnQgc3RhcnQnKVxyXG4gICAgICAgICAgICAgICAgOiBjcmVhdGVUZXh0KCcnKSk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1haW5BbmNob3IgPSAobjIuYW5jaG9yID0gKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgICAgICAgICA/IGNyZWF0ZUNvbW1lbnQoJ3RlbGVwb3J0IGVuZCcpXHJcbiAgICAgICAgICAgICAgICA6IGNyZWF0ZVRleHQoJycpKTtcclxuICAgICAgICAgICAgaW5zZXJ0KHBsYWNlaG9sZGVyLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgICAgIGluc2VydChtYWluQW5jaG9yLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IChuMi50YXJnZXQgPSByZXNvbHZlVGFyZ2V0KG4yLnByb3BzLCBxdWVyeVNlbGVjdG9yKSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldEFuY2hvciA9IChuMi50YXJnZXRBbmNob3IgPSBjcmVhdGVUZXh0KCcnKSk7XHJcbiAgICAgICAgICAgIGlmICh0YXJnZXQpIHtcclxuICAgICAgICAgICAgICAgIGluc2VydCh0YXJnZXRBbmNob3IsIHRhcmdldCk7XHJcbiAgICAgICAgICAgICAgICAvLyAjMjY1MiB3ZSBjb3VsZCBiZSB0ZWxlcG9ydGluZyBmcm9tIGEgbm9uLVNWRyB0cmVlIGludG8gYW4gU1ZHIHRyZWVcclxuICAgICAgICAgICAgICAgIGlzU1ZHID0gaXNTVkcgfHwgaXNUYXJnZXRTVkcodGFyZ2V0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKCdJbnZhbGlkIFRlbGVwb3J0IHRhcmdldCBvbiBtb3VudDonLCB0YXJnZXQsIGAoJHt0eXBlb2YgdGFyZ2V0fSlgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBtb3VudCA9IChjb250YWluZXIsIGFuY2hvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gVGVsZXBvcnQgKmFsd2F5cyogaGFzIEFycmF5IGNoaWxkcmVuLiBUaGlzIGlzIGVuZm9yY2VkIGluIGJvdGggdGhlXHJcbiAgICAgICAgICAgICAgICAvLyBjb21waWxlciBhbmQgdm5vZGUgY2hpbGRyZW4gbm9ybWFsaXphdGlvbi5cclxuICAgICAgICAgICAgICAgIGlmIChzaGFwZUZsYWcgJiAxNiAvKiBTaGFwZUZsYWdzLkFSUkFZX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbW91bnRDaGlsZHJlbihjaGlsZHJlbiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGlmIChkaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgbW91bnQoY29udGFpbmVyLCBtYWluQW5jaG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh0YXJnZXQpIHtcclxuICAgICAgICAgICAgICAgIG1vdW50KHRhcmdldCwgdGFyZ2V0QW5jaG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gdXBkYXRlIGNvbnRlbnRcclxuICAgICAgICAgICAgbjIuZWwgPSBuMS5lbDtcclxuICAgICAgICAgICAgY29uc3QgbWFpbkFuY2hvciA9IChuMi5hbmNob3IgPSBuMS5hbmNob3IpO1xyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSAobjIudGFyZ2V0ID0gbjEudGFyZ2V0KTtcclxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0QW5jaG9yID0gKG4yLnRhcmdldEFuY2hvciA9IG4xLnRhcmdldEFuY2hvcik7XHJcbiAgICAgICAgICAgIGNvbnN0IHdhc0Rpc2FibGVkID0gaXNUZWxlcG9ydERpc2FibGVkKG4xLnByb3BzKTtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudENvbnRhaW5lciA9IHdhc0Rpc2FibGVkID8gY29udGFpbmVyIDogdGFyZ2V0O1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50QW5jaG9yID0gd2FzRGlzYWJsZWQgPyBtYWluQW5jaG9yIDogdGFyZ2V0QW5jaG9yO1xyXG4gICAgICAgICAgICBpc1NWRyA9IGlzU1ZHIHx8IGlzVGFyZ2V0U1ZHKHRhcmdldCk7XHJcbiAgICAgICAgICAgIGlmIChkeW5hbWljQ2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgIC8vIGZhc3QgcGF0aCB3aGVuIHRoZSB0ZWxlcG9ydCBoYXBwZW5zIHRvIGJlIGEgYmxvY2sgcm9vdFxyXG4gICAgICAgICAgICAgICAgcGF0Y2hCbG9ja0NoaWxkcmVuKG4xLmR5bmFtaWNDaGlsZHJlbiwgZHluYW1pY0NoaWxkcmVuLCBjdXJyZW50Q29udGFpbmVyLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzKTtcclxuICAgICAgICAgICAgICAgIC8vIGV2ZW4gaW4gYmxvY2sgdHJlZSBtb2RlIHdlIG5lZWQgdG8gbWFrZSBzdXJlIGFsbCByb290LWxldmVsIG5vZGVzXHJcbiAgICAgICAgICAgICAgICAvLyBpbiB0aGUgdGVsZXBvcnQgaW5oZXJpdCBwcmV2aW91cyBET00gcmVmZXJlbmNlcyBzbyB0aGF0IHRoZXkgY2FuXHJcbiAgICAgICAgICAgICAgICAvLyBiZSBtb3ZlZCBpbiBmdXR1cmUgcGF0Y2hlcy5cclxuICAgICAgICAgICAgICAgIHRyYXZlcnNlU3RhdGljQ2hpbGRyZW4objEsIG4yLCB0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICghb3B0aW1pemVkKSB7XHJcbiAgICAgICAgICAgICAgICBwYXRjaENoaWxkcmVuKG4xLCBuMiwgY3VycmVudENvbnRhaW5lciwgY3VycmVudEFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChkaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF3YXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZWQgLT4gZGlzYWJsZWRcclxuICAgICAgICAgICAgICAgICAgICAvLyBtb3ZlIGludG8gbWFpbiBjb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICBtb3ZlVGVsZXBvcnQobjIsIGNvbnRhaW5lciwgbWFpbkFuY2hvciwgaW50ZXJuYWxzLCAxIC8qIFRlbGVwb3J0TW92ZVR5cGVzLlRPR0dMRSAqLyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyB0YXJnZXQgY2hhbmdlZFxyXG4gICAgICAgICAgICAgICAgaWYgKChuMi5wcm9wcyAmJiBuMi5wcm9wcy50bykgIT09IChuMS5wcm9wcyAmJiBuMS5wcm9wcy50bykpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0VGFyZ2V0ID0gKG4yLnRhcmdldCA9IHJlc29sdmVUYXJnZXQobjIucHJvcHMsIHF1ZXJ5U2VsZWN0b3IpKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobmV4dFRhcmdldCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlVGVsZXBvcnQobjIsIG5leHRUYXJnZXQsIG51bGwsIGludGVybmFscywgMCAvKiBUZWxlcG9ydE1vdmVUeXBlcy5UQVJHRVRfQ0hBTkdFICovKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4oJ0ludmFsaWQgVGVsZXBvcnQgdGFyZ2V0IG9uIHVwZGF0ZTonLCB0YXJnZXQsIGAoJHt0eXBlb2YgdGFyZ2V0fSlgKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh3YXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGRpc2FibGVkIC0+IGVuYWJsZWRcclxuICAgICAgICAgICAgICAgICAgICAvLyBtb3ZlIGludG8gdGVsZXBvcnQgdGFyZ2V0XHJcbiAgICAgICAgICAgICAgICAgICAgbW92ZVRlbGVwb3J0KG4yLCB0YXJnZXQsIHRhcmdldEFuY2hvciwgaW50ZXJuYWxzLCAxIC8qIFRlbGVwb3J0TW92ZVR5cGVzLlRPR0dMRSAqLyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgcmVtb3ZlKHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBvcHRpbWl6ZWQsIHsgdW06IHVubW91bnQsIG86IHsgcmVtb3ZlOiBob3N0UmVtb3ZlIH0gfSwgZG9SZW1vdmUpIHtcclxuICAgICAgICBjb25zdCB7IHNoYXBlRmxhZywgY2hpbGRyZW4sIGFuY2hvciwgdGFyZ2V0QW5jaG9yLCB0YXJnZXQsIHByb3BzIH0gPSB2bm9kZTtcclxuICAgICAgICBpZiAodGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIGhvc3RSZW1vdmUodGFyZ2V0QW5jaG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gYW4gdW5tb3VudGVkIHRlbGVwb3J0IHNob3VsZCBhbHdheXMgcmVtb3ZlIGl0cyBjaGlsZHJlbiBpZiBub3QgZGlzYWJsZWRcclxuICAgICAgICBpZiAoZG9SZW1vdmUgfHwgIWlzVGVsZXBvcnREaXNhYmxlZChwcm9wcykpIHtcclxuICAgICAgICAgICAgaG9zdFJlbW92ZShhbmNob3IpO1xyXG4gICAgICAgICAgICBpZiAoc2hhcGVGbGFnICYgMTYgLyogU2hhcGVGbGFncy5BUlJBWV9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgICAgICAgICAgdW5tb3VudChjaGlsZCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdHJ1ZSwgISFjaGlsZC5keW5hbWljQ2hpbGRyZW4pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIG1vdmU6IG1vdmVUZWxlcG9ydCxcclxuICAgIGh5ZHJhdGU6IGh5ZHJhdGVUZWxlcG9ydFxyXG59O1xyXG5mdW5jdGlvbiBtb3ZlVGVsZXBvcnQodm5vZGUsIGNvbnRhaW5lciwgcGFyZW50QW5jaG9yLCB7IG86IHsgaW5zZXJ0IH0sIG06IG1vdmUgfSwgbW92ZVR5cGUgPSAyIC8qIFRlbGVwb3J0TW92ZVR5cGVzLlJFT1JERVIgKi8pIHtcclxuICAgIC8vIG1vdmUgdGFyZ2V0IGFuY2hvciBpZiB0aGlzIGlzIGEgdGFyZ2V0IGNoYW5nZS5cclxuICAgIGlmIChtb3ZlVHlwZSA9PT0gMCAvKiBUZWxlcG9ydE1vdmVUeXBlcy5UQVJHRVRfQ0hBTkdFICovKSB7XHJcbiAgICAgICAgaW5zZXJ0KHZub2RlLnRhcmdldEFuY2hvciwgY29udGFpbmVyLCBwYXJlbnRBbmNob3IpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBlbCwgYW5jaG9yLCBzaGFwZUZsYWcsIGNoaWxkcmVuLCBwcm9wcyB9ID0gdm5vZGU7XHJcbiAgICBjb25zdCBpc1Jlb3JkZXIgPSBtb3ZlVHlwZSA9PT0gMiAvKiBUZWxlcG9ydE1vdmVUeXBlcy5SRU9SREVSICovO1xyXG4gICAgLy8gbW92ZSBtYWluIHZpZXcgYW5jaG9yIGlmIHRoaXMgaXMgYSByZS1vcmRlci5cclxuICAgIGlmIChpc1Jlb3JkZXIpIHtcclxuICAgICAgICBpbnNlcnQoZWwsIGNvbnRhaW5lciwgcGFyZW50QW5jaG9yKTtcclxuICAgIH1cclxuICAgIC8vIGlmIHRoaXMgaXMgYSByZS1vcmRlciBhbmQgdGVsZXBvcnQgaXMgZW5hYmxlZCAoY29udGVudCBpcyBpbiB0YXJnZXQpXHJcbiAgICAvLyBkbyBub3QgbW92ZSBjaGlsZHJlbi4gU28gdGhlIG9wcG9zaXRlIGlzOiBvbmx5IG1vdmUgY2hpbGRyZW4gaWYgdGhpc1xyXG4gICAgLy8gaXMgbm90IGEgcmVvcmRlciwgb3IgdGhlIHRlbGVwb3J0IGlzIGRpc2FibGVkXHJcbiAgICBpZiAoIWlzUmVvcmRlciB8fCBpc1RlbGVwb3J0RGlzYWJsZWQocHJvcHMpKSB7XHJcbiAgICAgICAgLy8gVGVsZXBvcnQgaGFzIGVpdGhlciBBcnJheSBjaGlsZHJlbiBvciBubyBjaGlsZHJlbi5cclxuICAgICAgICBpZiAoc2hhcGVGbGFnICYgMTYgLyogU2hhcGVGbGFncy5BUlJBWV9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBtb3ZlKGNoaWxkcmVuW2ldLCBjb250YWluZXIsIHBhcmVudEFuY2hvciwgMiAvKiBNb3ZlVHlwZS5SRU9SREVSICovKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIG1vdmUgbWFpbiB2aWV3IGFuY2hvciBpZiB0aGlzIGlzIGEgcmUtb3JkZXIuXHJcbiAgICBpZiAoaXNSZW9yZGVyKSB7XHJcbiAgICAgICAgaW5zZXJ0KGFuY2hvciwgY29udGFpbmVyLCBwYXJlbnRBbmNob3IpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGh5ZHJhdGVUZWxlcG9ydChub2RlLCB2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIHsgbzogeyBuZXh0U2libGluZywgcGFyZW50Tm9kZSwgcXVlcnlTZWxlY3RvciB9IH0sIGh5ZHJhdGVDaGlsZHJlbikge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gKHZub2RlLnRhcmdldCA9IHJlc29sdmVUYXJnZXQodm5vZGUucHJvcHMsIHF1ZXJ5U2VsZWN0b3IpKTtcclxuICAgIGlmICh0YXJnZXQpIHtcclxuICAgICAgICAvLyBpZiBtdWx0aXBsZSB0ZWxlcG9ydHMgcmVuZGVyZWQgdG8gdGhlIHNhbWUgdGFyZ2V0IGVsZW1lbnQsIHdlIG5lZWQgdG9cclxuICAgICAgICAvLyBwaWNrIHVwIGZyb20gd2hlcmUgdGhlIGxhc3QgdGVsZXBvcnQgZmluaXNoZWQgaW5zdGVhZCBvZiB0aGUgZmlyc3Qgbm9kZVxyXG4gICAgICAgIGNvbnN0IHRhcmdldE5vZGUgPSB0YXJnZXQuX2xwYSB8fCB0YXJnZXQuZmlyc3RDaGlsZDtcclxuICAgICAgICBpZiAodm5vZGUuc2hhcGVGbGFnICYgMTYgLyogU2hhcGVGbGFncy5BUlJBWV9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICBpZiAoaXNUZWxlcG9ydERpc2FibGVkKHZub2RlLnByb3BzKSkge1xyXG4gICAgICAgICAgICAgICAgdm5vZGUuYW5jaG9yID0gaHlkcmF0ZUNoaWxkcmVuKG5leHRTaWJsaW5nKG5vZGUpLCB2bm9kZSwgcGFyZW50Tm9kZShub2RlKSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgdm5vZGUudGFyZ2V0QW5jaG9yID0gdGFyZ2V0Tm9kZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHZub2RlLmFuY2hvciA9IG5leHRTaWJsaW5nKG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgLy8gbG9va2FoZWFkIHVudGlsIHdlIGZpbmQgdGhlIHRhcmdldCBhbmNob3JcclxuICAgICAgICAgICAgICAgIC8vIHdlIGNhbm5vdCByZWx5IG9uIHJldHVybiB2YWx1ZSBvZiBoeWRyYXRlQ2hpbGRyZW4oKSBiZWNhdXNlIHRoZXJlXHJcbiAgICAgICAgICAgICAgICAvLyBjb3VsZCBiZSBuZXN0ZWQgdGVsZXBvcnRzXHJcbiAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0QW5jaG9yID0gdGFyZ2V0Tm9kZTtcclxuICAgICAgICAgICAgICAgIHdoaWxlICh0YXJnZXRBbmNob3IpIHtcclxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRBbmNob3IgPSBuZXh0U2libGluZyh0YXJnZXRBbmNob3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRBbmNob3IgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QW5jaG9yLm5vZGVUeXBlID09PSA4ICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEFuY2hvci5kYXRhID09PSAndGVsZXBvcnQgYW5jaG9yJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2bm9kZS50YXJnZXRBbmNob3IgPSB0YXJnZXRBbmNob3I7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5fbHBhID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZub2RlLnRhcmdldEFuY2hvciAmJiBuZXh0U2libGluZyh2bm9kZS50YXJnZXRBbmNob3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBoeWRyYXRlQ2hpbGRyZW4odGFyZ2V0Tm9kZSwgdm5vZGUsIHRhcmdldCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZub2RlLmFuY2hvciAmJiBuZXh0U2libGluZyh2bm9kZS5hbmNob3IpO1xyXG59XHJcbi8vIEZvcmNlLWNhc3RlZCBwdWJsaWMgdHlwaW5nIGZvciBoIGFuZCBUU1ggcHJvcHMgaW5mZXJlbmNlXHJcbmNvbnN0IFRlbGVwb3J0ID0gVGVsZXBvcnRJbXBsO1xuXG5jb25zdCBGcmFnbWVudCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyAnRnJhZ21lbnQnIDogdW5kZWZpbmVkKTtcclxuY29uc3QgVGV4dCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyAnVGV4dCcgOiB1bmRlZmluZWQpO1xyXG5jb25zdCBDb21tZW50ID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/ICdDb21tZW50JyA6IHVuZGVmaW5lZCk7XHJcbmNvbnN0IFN0YXRpYyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyAnU3RhdGljJyA6IHVuZGVmaW5lZCk7XHJcbi8vIFNpbmNlIHYtaWYgYW5kIHYtZm9yIGFyZSB0aGUgdHdvIHBvc3NpYmxlIHdheXMgbm9kZSBzdHJ1Y3R1cmUgY2FuIGR5bmFtaWNhbGx5XHJcbi8vIGNoYW5nZSwgb25jZSB3ZSBjb25zaWRlciB2LWlmIGJyYW5jaGVzIGFuZCBlYWNoIHYtZm9yIGZyYWdtZW50IGEgYmxvY2ssIHdlXHJcbi8vIGNhbiBkaXZpZGUgYSB0ZW1wbGF0ZSBpbnRvIG5lc3RlZCBibG9ja3MsIGFuZCB3aXRoaW4gZWFjaCBibG9jayB0aGUgbm9kZVxyXG4vLyBzdHJ1Y3R1cmUgd291bGQgYmUgc3RhYmxlLiBUaGlzIGFsbG93cyB1cyB0byBza2lwIG1vc3QgY2hpbGRyZW4gZGlmZmluZ1xyXG4vLyBhbmQgb25seSB3b3JyeSBhYm91dCB0aGUgZHluYW1pYyBub2RlcyAoaW5kaWNhdGVkIGJ5IHBhdGNoIGZsYWdzKS5cclxuY29uc3QgYmxvY2tTdGFjayA9IFtdO1xyXG5sZXQgY3VycmVudEJsb2NrID0gbnVsbDtcclxuLyoqXHJcbiAqIE9wZW4gYSBibG9jay5cclxuICogVGhpcyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgYGNyZWF0ZUJsb2NrYC4gSXQgY2Fubm90IGJlIHBhcnQgb2YgYGNyZWF0ZUJsb2NrYFxyXG4gKiBiZWNhdXNlIHRoZSBjaGlsZHJlbiBvZiB0aGUgYmxvY2sgYXJlIGV2YWx1YXRlZCBiZWZvcmUgYGNyZWF0ZUJsb2NrYCBpdHNlbGZcclxuICogaXMgY2FsbGVkLiBUaGUgZ2VuZXJhdGVkIGNvZGUgdHlwaWNhbGx5IGxvb2tzIGxpa2UgdGhpczpcclxuICpcclxuICogYGBganNcclxuICogZnVuY3Rpb24gcmVuZGVyKCkge1xyXG4gKiAgIHJldHVybiAob3BlbkJsb2NrKCksY3JlYXRlQmxvY2soJ2RpdicsIG51bGwsIFsuLi5dKSlcclxuICogfVxyXG4gKiBgYGBcclxuICogZGlzYWJsZVRyYWNraW5nIGlzIHRydWUgd2hlbiBjcmVhdGluZyBhIHYtZm9yIGZyYWdtZW50IGJsb2NrLCBzaW5jZSBhIHYtZm9yXHJcbiAqIGZyYWdtZW50IGFsd2F5cyBkaWZmcyBpdHMgY2hpbGRyZW4uXHJcbiAqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiBvcGVuQmxvY2soZGlzYWJsZVRyYWNraW5nID0gZmFsc2UpIHtcclxuICAgIGJsb2NrU3RhY2sucHVzaCgoY3VycmVudEJsb2NrID0gZGlzYWJsZVRyYWNraW5nID8gbnVsbCA6IFtdKSk7XHJcbn1cclxuZnVuY3Rpb24gY2xvc2VCbG9jaygpIHtcclxuICAgIGJsb2NrU3RhY2sucG9wKCk7XHJcbiAgICBjdXJyZW50QmxvY2sgPSBibG9ja1N0YWNrW2Jsb2NrU3RhY2subGVuZ3RoIC0gMV0gfHwgbnVsbDtcclxufVxyXG4vLyBXaGV0aGVyIHdlIHNob3VsZCBiZSB0cmFja2luZyBkeW5hbWljIGNoaWxkIG5vZGVzIGluc2lkZSBhIGJsb2NrLlxyXG4vLyBPbmx5IHRyYWNrcyB3aGVuIHRoaXMgdmFsdWUgaXMgPiAwXHJcbi8vIFdlIGFyZSBub3QgdXNpbmcgYSBzaW1wbGUgYm9vbGVhbiBiZWNhdXNlIHRoaXMgdmFsdWUgbWF5IG5lZWQgdG8gYmVcclxuLy8gaW5jcmVtZW50ZWQvZGVjcmVtZW50ZWQgYnkgbmVzdGVkIHVzYWdlIG9mIHYtb25jZSAoc2VlIGJlbG93KVxyXG5sZXQgaXNCbG9ja1RyZWVFbmFibGVkID0gMTtcclxuLyoqXHJcbiAqIEJsb2NrIHRyYWNraW5nIHNvbWV0aW1lcyBuZWVkcyB0byBiZSBkaXNhYmxlZCwgZm9yIGV4YW1wbGUgZHVyaW5nIHRoZVxyXG4gKiBjcmVhdGlvbiBvZiBhIHRyZWUgdGhhdCBuZWVkcyB0byBiZSBjYWNoZWQgYnkgdi1vbmNlLiBUaGUgY29tcGlsZXIgZ2VuZXJhdGVzXHJcbiAqIGNvZGUgbGlrZSB0aGlzOlxyXG4gKlxyXG4gKiBgYGAganNcclxuICogX2NhY2hlWzFdIHx8IChcclxuICogICBzZXRCbG9ja1RyYWNraW5nKC0xKSxcclxuICogICBfY2FjaGVbMV0gPSBjcmVhdGVWTm9kZSguLi4pLFxyXG4gKiAgIHNldEJsb2NrVHJhY2tpbmcoMSksXHJcbiAqICAgX2NhY2hlWzFdXHJcbiAqIClcclxuICogYGBgXHJcbiAqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiBzZXRCbG9ja1RyYWNraW5nKHZhbHVlKSB7XHJcbiAgICBpc0Jsb2NrVHJlZUVuYWJsZWQgKz0gdmFsdWU7XHJcbn1cclxuZnVuY3Rpb24gc2V0dXBCbG9jayh2bm9kZSkge1xyXG4gICAgLy8gc2F2ZSBjdXJyZW50IGJsb2NrIGNoaWxkcmVuIG9uIHRoZSBibG9jayB2bm9kZVxyXG4gICAgdm5vZGUuZHluYW1pY0NoaWxkcmVuID1cclxuICAgICAgICBpc0Jsb2NrVHJlZUVuYWJsZWQgPiAwID8gY3VycmVudEJsb2NrIHx8IEVNUFRZX0FSUiA6IG51bGw7XHJcbiAgICAvLyBjbG9zZSBibG9ja1xyXG4gICAgY2xvc2VCbG9jaygpO1xyXG4gICAgLy8gYSBibG9jayBpcyBhbHdheXMgZ29pbmcgdG8gYmUgcGF0Y2hlZCwgc28gdHJhY2sgaXQgYXMgYSBjaGlsZCBvZiBpdHNcclxuICAgIC8vIHBhcmVudCBibG9ja1xyXG4gICAgaWYgKGlzQmxvY2tUcmVlRW5hYmxlZCA+IDAgJiYgY3VycmVudEJsb2NrKSB7XHJcbiAgICAgICAgY3VycmVudEJsb2NrLnB1c2godm5vZGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZub2RlO1xyXG59XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlRWxlbWVudEJsb2NrKHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgcGF0Y2hGbGFnLCBkeW5hbWljUHJvcHMsIHNoYXBlRmxhZykge1xyXG4gICAgcmV0dXJuIHNldHVwQmxvY2soY3JlYXRlQmFzZVZOb2RlKHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgcGF0Y2hGbGFnLCBkeW5hbWljUHJvcHMsIHNoYXBlRmxhZywgdHJ1ZSAvKiBpc0Jsb2NrICovKSk7XHJcbn1cclxuLyoqXHJcbiAqIENyZWF0ZSBhIGJsb2NrIHJvb3Qgdm5vZGUuIFRha2VzIHRoZSBzYW1lIGV4YWN0IGFyZ3VtZW50cyBhcyBgY3JlYXRlVk5vZGVgLlxyXG4gKiBBIGJsb2NrIHJvb3Qga2VlcHMgdHJhY2sgb2YgZHluYW1pYyBub2RlcyB3aXRoaW4gdGhlIGJsb2NrIGluIHRoZVxyXG4gKiBgZHluYW1pY0NoaWxkcmVuYCBhcnJheS5cclxuICpcclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZUJsb2NrKHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgcGF0Y2hGbGFnLCBkeW5hbWljUHJvcHMpIHtcclxuICAgIHJldHVybiBzZXR1cEJsb2NrKGNyZWF0ZVZOb2RlKHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgcGF0Y2hGbGFnLCBkeW5hbWljUHJvcHMsIHRydWUgLyogaXNCbG9jazogcHJldmVudCBhIGJsb2NrIGZyb20gdHJhY2tpbmcgaXRzZWxmICovKSk7XHJcbn1cclxuZnVuY3Rpb24gaXNWTm9kZSh2YWx1ZSkge1xyXG4gICAgcmV0dXJuIHZhbHVlID8gdmFsdWUuX192X2lzVk5vZGUgPT09IHRydWUgOiBmYWxzZTtcclxufVxyXG5mdW5jdGlvbiBpc1NhbWVWTm9kZVR5cGUobjEsIG4yKSB7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgbjIuc2hhcGVGbGFnICYgNiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVCAqLyAmJlxyXG4gICAgICAgIGhtckRpcnR5Q29tcG9uZW50cy5oYXMobjIudHlwZSkpIHtcclxuICAgICAgICAvLyBITVIgb25seTogaWYgdGhlIGNvbXBvbmVudCBoYXMgYmVlbiBob3QtdXBkYXRlZCwgZm9yY2UgYSByZWxvYWQuXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG4xLnR5cGUgPT09IG4yLnR5cGUgJiYgbjEua2V5ID09PSBuMi5rZXk7XHJcbn1cclxubGV0IHZub2RlQXJnc1RyYW5zZm9ybWVyO1xyXG4vKipcclxuICogSW50ZXJuYWwgQVBJIGZvciByZWdpc3RlcmluZyBhbiBhcmd1bWVudHMgdHJhbnNmb3JtIGZvciBjcmVhdGVWTm9kZVxyXG4gKiB1c2VkIGZvciBjcmVhdGluZyBzdHVicyBpbiB0aGUgdGVzdC11dGlsc1xyXG4gKiBJdCBpcyAqaW50ZXJuYWwqIGJ1dCBuZWVkcyB0byBiZSBleHBvc2VkIGZvciB0ZXN0LXV0aWxzIHRvIHBpY2sgdXAgcHJvcGVyXHJcbiAqIHR5cGluZ3NcclxuICovXHJcbmZ1bmN0aW9uIHRyYW5zZm9ybVZOb2RlQXJncyh0cmFuc2Zvcm1lcikge1xyXG4gICAgdm5vZGVBcmdzVHJhbnNmb3JtZXIgPSB0cmFuc2Zvcm1lcjtcclxufVxyXG5jb25zdCBjcmVhdGVWTm9kZVdpdGhBcmdzVHJhbnNmb3JtID0gKC4uLmFyZ3MpID0+IHtcclxuICAgIHJldHVybiBfY3JlYXRlVk5vZGUoLi4uKHZub2RlQXJnc1RyYW5zZm9ybWVyXHJcbiAgICAgICAgPyB2bm9kZUFyZ3NUcmFuc2Zvcm1lcihhcmdzLCBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UpXHJcbiAgICAgICAgOiBhcmdzKSk7XHJcbn07XHJcbmNvbnN0IEludGVybmFsT2JqZWN0S2V5ID0gYF9fdkludGVybmFsYDtcclxuY29uc3Qgbm9ybWFsaXplS2V5ID0gKHsga2V5IH0pID0+IGtleSAhPSBudWxsID8ga2V5IDogbnVsbDtcclxuY29uc3Qgbm9ybWFsaXplUmVmID0gKHsgcmVmLCByZWZfa2V5LCByZWZfZm9yIH0pID0+IHtcclxuICAgIHJldHVybiAocmVmICE9IG51bGxcclxuICAgICAgICA/IGlzU3RyaW5nKHJlZikgfHwgaXNSZWYocmVmKSB8fCBpc0Z1bmN0aW9uKHJlZilcclxuICAgICAgICAgICAgPyB7IGk6IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSwgcjogcmVmLCBrOiByZWZfa2V5LCBmOiAhIXJlZl9mb3IgfVxyXG4gICAgICAgICAgICA6IHJlZlxyXG4gICAgICAgIDogbnVsbCk7XHJcbn07XHJcbmZ1bmN0aW9uIGNyZWF0ZUJhc2VWTm9kZSh0eXBlLCBwcm9wcyA9IG51bGwsIGNoaWxkcmVuID0gbnVsbCwgcGF0Y2hGbGFnID0gMCwgZHluYW1pY1Byb3BzID0gbnVsbCwgc2hhcGVGbGFnID0gdHlwZSA9PT0gRnJhZ21lbnQgPyAwIDogMSAvKiBTaGFwZUZsYWdzLkVMRU1FTlQgKi8sIGlzQmxvY2tOb2RlID0gZmFsc2UsIG5lZWRGdWxsQ2hpbGRyZW5Ob3JtYWxpemF0aW9uID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IHZub2RlID0ge1xyXG4gICAgICAgIF9fdl9pc1ZOb2RlOiB0cnVlLFxyXG4gICAgICAgIF9fdl9za2lwOiB0cnVlLFxyXG4gICAgICAgIHR5cGUsXHJcbiAgICAgICAgcHJvcHMsXHJcbiAgICAgICAga2V5OiBwcm9wcyAmJiBub3JtYWxpemVLZXkocHJvcHMpLFxyXG4gICAgICAgIHJlZjogcHJvcHMgJiYgbm9ybWFsaXplUmVmKHByb3BzKSxcclxuICAgICAgICBzY29wZUlkOiBjdXJyZW50U2NvcGVJZCxcclxuICAgICAgICBzbG90U2NvcGVJZHM6IG51bGwsXHJcbiAgICAgICAgY2hpbGRyZW4sXHJcbiAgICAgICAgY29tcG9uZW50OiBudWxsLFxyXG4gICAgICAgIHN1c3BlbnNlOiBudWxsLFxyXG4gICAgICAgIHNzQ29udGVudDogbnVsbCxcclxuICAgICAgICBzc0ZhbGxiYWNrOiBudWxsLFxyXG4gICAgICAgIGRpcnM6IG51bGwsXHJcbiAgICAgICAgdHJhbnNpdGlvbjogbnVsbCxcclxuICAgICAgICBlbDogbnVsbCxcclxuICAgICAgICBhbmNob3I6IG51bGwsXHJcbiAgICAgICAgdGFyZ2V0OiBudWxsLFxyXG4gICAgICAgIHRhcmdldEFuY2hvcjogbnVsbCxcclxuICAgICAgICBzdGF0aWNDb3VudDogMCxcclxuICAgICAgICBzaGFwZUZsYWcsXHJcbiAgICAgICAgcGF0Y2hGbGFnLFxyXG4gICAgICAgIGR5bmFtaWNQcm9wcyxcclxuICAgICAgICBkeW5hbWljQ2hpbGRyZW46IG51bGwsXHJcbiAgICAgICAgYXBwQ29udGV4dDogbnVsbFxyXG4gICAgfTtcclxuICAgIGlmIChuZWVkRnVsbENoaWxkcmVuTm9ybWFsaXphdGlvbikge1xyXG4gICAgICAgIG5vcm1hbGl6ZUNoaWxkcmVuKHZub2RlLCBjaGlsZHJlbik7XHJcbiAgICAgICAgLy8gbm9ybWFsaXplIHN1c3BlbnNlIGNoaWxkcmVuXHJcbiAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDEyOCAvKiBTaGFwZUZsYWdzLlNVU1BFTlNFICovKSB7XHJcbiAgICAgICAgICAgIHR5cGUubm9ybWFsaXplKHZub2RlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICAgIC8vIGNvbXBpbGVkIGVsZW1lbnQgdm5vZGUgLSBpZiBjaGlsZHJlbiBpcyBwYXNzZWQsIG9ubHkgcG9zc2libGUgdHlwZXMgYXJlXHJcbiAgICAgICAgLy8gc3RyaW5nIG9yIEFycmF5LlxyXG4gICAgICAgIHZub2RlLnNoYXBlRmxhZyB8PSBpc1N0cmluZyhjaGlsZHJlbilcclxuICAgICAgICAgICAgPyA4IC8qIFNoYXBlRmxhZ3MuVEVYVF9DSElMRFJFTiAqL1xyXG4gICAgICAgICAgICA6IDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi87XHJcbiAgICB9XHJcbiAgICAvLyB2YWxpZGF0ZSBrZXlcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgdm5vZGUua2V5ICE9PSB2bm9kZS5rZXkpIHtcclxuICAgICAgICB3YXJuKGBWTm9kZSBjcmVhdGVkIHdpdGggaW52YWxpZCBrZXkgKE5hTikuIFZOb2RlIHR5cGU6YCwgdm5vZGUudHlwZSk7XHJcbiAgICB9XHJcbiAgICAvLyB0cmFjayB2bm9kZSBmb3IgYmxvY2sgdHJlZVxyXG4gICAgaWYgKGlzQmxvY2tUcmVlRW5hYmxlZCA+IDAgJiZcclxuICAgICAgICAvLyBhdm9pZCBhIGJsb2NrIG5vZGUgZnJvbSB0cmFja2luZyBpdHNlbGZcclxuICAgICAgICAhaXNCbG9ja05vZGUgJiZcclxuICAgICAgICAvLyBoYXMgY3VycmVudCBwYXJlbnQgYmxvY2tcclxuICAgICAgICBjdXJyZW50QmxvY2sgJiZcclxuICAgICAgICAvLyBwcmVzZW5jZSBvZiBhIHBhdGNoIGZsYWcgaW5kaWNhdGVzIHRoaXMgbm9kZSBuZWVkcyBwYXRjaGluZyBvbiB1cGRhdGVzLlxyXG4gICAgICAgIC8vIGNvbXBvbmVudCBub2RlcyBhbHNvIHNob3VsZCBhbHdheXMgYmUgcGF0Y2hlZCwgYmVjYXVzZSBldmVuIGlmIHRoZVxyXG4gICAgICAgIC8vIGNvbXBvbmVudCBkb2Vzbid0IG5lZWQgdG8gdXBkYXRlLCBpdCBuZWVkcyB0byBwZXJzaXN0IHRoZSBpbnN0YW5jZSBvbiB0b1xyXG4gICAgICAgIC8vIHRoZSBuZXh0IHZub2RlIHNvIHRoYXQgaXQgY2FuIGJlIHByb3Blcmx5IHVubW91bnRlZCBsYXRlci5cclxuICAgICAgICAodm5vZGUucGF0Y2hGbGFnID4gMCB8fCBzaGFwZUZsYWcgJiA2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UICovKSAmJlxyXG4gICAgICAgIC8vIHRoZSBFVkVOVFMgZmxhZyBpcyBvbmx5IGZvciBoeWRyYXRpb24gYW5kIGlmIGl0IGlzIHRoZSBvbmx5IGZsYWcsIHRoZVxyXG4gICAgICAgIC8vIHZub2RlIHNob3VsZCBub3QgYmUgY29uc2lkZXJlZCBkeW5hbWljIGR1ZSB0byBoYW5kbGVyIGNhY2hpbmcuXHJcbiAgICAgICAgdm5vZGUucGF0Y2hGbGFnICE9PSAzMiAvKiBQYXRjaEZsYWdzLkhZRFJBVEVfRVZFTlRTICovKSB7XHJcbiAgICAgICAgY3VycmVudEJsb2NrLnB1c2godm5vZGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZub2RlO1xyXG59XHJcbmNvbnN0IGNyZWF0ZVZOb2RlID0gKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGNyZWF0ZVZOb2RlV2l0aEFyZ3NUcmFuc2Zvcm0gOiBfY3JlYXRlVk5vZGUpO1xyXG5mdW5jdGlvbiBfY3JlYXRlVk5vZGUodHlwZSwgcHJvcHMgPSBudWxsLCBjaGlsZHJlbiA9IG51bGwsIHBhdGNoRmxhZyA9IDAsIGR5bmFtaWNQcm9wcyA9IG51bGwsIGlzQmxvY2tOb2RlID0gZmFsc2UpIHtcclxuICAgIGlmICghdHlwZSB8fCB0eXBlID09PSBOVUxMX0RZTkFNSUNfQ09NUE9ORU5UKSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhdHlwZSkge1xyXG4gICAgICAgICAgICB3YXJuKGBJbnZhbGlkIHZub2RlIHR5cGUgd2hlbiBjcmVhdGluZyB2bm9kZTogJHt0eXBlfS5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHlwZSA9IENvbW1lbnQ7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWTm9kZSh0eXBlKSkge1xyXG4gICAgICAgIC8vIGNyZWF0ZVZOb2RlIHJlY2VpdmluZyBhbiBleGlzdGluZyB2bm9kZS4gVGhpcyBoYXBwZW5zIGluIGNhc2VzIGxpa2VcclxuICAgICAgICAvLyA8Y29tcG9uZW50IDppcz1cInZub2RlXCIvPlxyXG4gICAgICAgIC8vICMyMDc4IG1ha2Ugc3VyZSB0byBtZXJnZSByZWZzIGR1cmluZyB0aGUgY2xvbmUgaW5zdGVhZCBvZiBvdmVyd3JpdGluZyBpdFxyXG4gICAgICAgIGNvbnN0IGNsb25lZCA9IGNsb25lVk5vZGUodHlwZSwgcHJvcHMsIHRydWUgLyogbWVyZ2VSZWY6IHRydWUgKi8pO1xyXG4gICAgICAgIGlmIChjaGlsZHJlbikge1xyXG4gICAgICAgICAgICBub3JtYWxpemVDaGlsZHJlbihjbG9uZWQsIGNoaWxkcmVuKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzQmxvY2tUcmVlRW5hYmxlZCA+IDAgJiYgIWlzQmxvY2tOb2RlICYmIGN1cnJlbnRCbG9jaykge1xyXG4gICAgICAgICAgICBpZiAoY2xvbmVkLnNoYXBlRmxhZyAmIDYgLyogU2hhcGVGbGFncy5DT01QT05FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRCbG9ja1tjdXJyZW50QmxvY2suaW5kZXhPZih0eXBlKV0gPSBjbG9uZWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjdXJyZW50QmxvY2sucHVzaChjbG9uZWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNsb25lZC5wYXRjaEZsYWcgfD0gLTIgLyogUGF0Y2hGbGFncy5CQUlMICovO1xyXG4gICAgICAgIHJldHVybiBjbG9uZWQ7XHJcbiAgICB9XHJcbiAgICAvLyBjbGFzcyBjb21wb25lbnQgbm9ybWFsaXphdGlvbi5cclxuICAgIGlmIChpc0NsYXNzQ29tcG9uZW50KHR5cGUpKSB7XHJcbiAgICAgICAgdHlwZSA9IHR5cGUuX192Y2NPcHRzO1xyXG4gICAgfVxyXG4gICAgLy8gY2xhc3MgJiBzdHlsZSBub3JtYWxpemF0aW9uLlxyXG4gICAgaWYgKHByb3BzKSB7XHJcbiAgICAgICAgLy8gZm9yIHJlYWN0aXZlIG9yIHByb3h5IG9iamVjdHMsIHdlIG5lZWQgdG8gY2xvbmUgaXQgdG8gZW5hYmxlIG11dGF0aW9uLlxyXG4gICAgICAgIHByb3BzID0gZ3VhcmRSZWFjdGl2ZVByb3BzKHByb3BzKTtcclxuICAgICAgICBsZXQgeyBjbGFzczoga2xhc3MsIHN0eWxlIH0gPSBwcm9wcztcclxuICAgICAgICBpZiAoa2xhc3MgJiYgIWlzU3RyaW5nKGtsYXNzKSkge1xyXG4gICAgICAgICAgICBwcm9wcy5jbGFzcyA9IG5vcm1hbGl6ZUNsYXNzKGtsYXNzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzT2JqZWN0KHN0eWxlKSkge1xyXG4gICAgICAgICAgICAvLyByZWFjdGl2ZSBzdGF0ZSBvYmplY3RzIG5lZWQgdG8gYmUgY2xvbmVkIHNpbmNlIHRoZXkgYXJlIGxpa2VseSB0byBiZVxyXG4gICAgICAgICAgICAvLyBtdXRhdGVkXHJcbiAgICAgICAgICAgIGlmIChpc1Byb3h5KHN0eWxlKSAmJiAhaXNBcnJheShzdHlsZSkpIHtcclxuICAgICAgICAgICAgICAgIHN0eWxlID0gZXh0ZW5kKHt9LCBzdHlsZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcHJvcHMuc3R5bGUgPSBub3JtYWxpemVTdHlsZShzdHlsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gZW5jb2RlIHRoZSB2bm9kZSB0eXBlIGluZm9ybWF0aW9uIGludG8gYSBiaXRtYXBcclxuICAgIGNvbnN0IHNoYXBlRmxhZyA9IGlzU3RyaW5nKHR5cGUpXHJcbiAgICAgICAgPyAxIC8qIFNoYXBlRmxhZ3MuRUxFTUVOVCAqL1xyXG4gICAgICAgIDogaXNTdXNwZW5zZSh0eXBlKVxyXG4gICAgICAgICAgICA/IDEyOCAvKiBTaGFwZUZsYWdzLlNVU1BFTlNFICovXHJcbiAgICAgICAgICAgIDogaXNUZWxlcG9ydCh0eXBlKVxyXG4gICAgICAgICAgICAgICAgPyA2NCAvKiBTaGFwZUZsYWdzLlRFTEVQT1JUICovXHJcbiAgICAgICAgICAgICAgICA6IGlzT2JqZWN0KHR5cGUpXHJcbiAgICAgICAgICAgICAgICAgICAgPyA0IC8qIFNoYXBlRmxhZ3MuU1RBVEVGVUxfQ09NUE9ORU5UICovXHJcbiAgICAgICAgICAgICAgICAgICAgOiBpc0Z1bmN0aW9uKHR5cGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gMiAvKiBTaGFwZUZsYWdzLkZVTkNUSU9OQUxfQ09NUE9ORU5UICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogMDtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgc2hhcGVGbGFnICYgNCAvKiBTaGFwZUZsYWdzLlNUQVRFRlVMX0NPTVBPTkVOVCAqLyAmJiBpc1Byb3h5KHR5cGUpKSB7XHJcbiAgICAgICAgdHlwZSA9IHRvUmF3KHR5cGUpO1xyXG4gICAgICAgIHdhcm4oYFZ1ZSByZWNlaXZlZCBhIENvbXBvbmVudCB3aGljaCB3YXMgbWFkZSBhIHJlYWN0aXZlIG9iamVjdC4gVGhpcyBjYW4gYCArXHJcbiAgICAgICAgICAgIGBsZWFkIHRvIHVubmVjZXNzYXJ5IHBlcmZvcm1hbmNlIG92ZXJoZWFkLCBhbmQgc2hvdWxkIGJlIGF2b2lkZWQgYnkgYCArXHJcbiAgICAgICAgICAgIGBtYXJraW5nIHRoZSBjb21wb25lbnQgd2l0aCBcXGBtYXJrUmF3XFxgIG9yIHVzaW5nIFxcYHNoYWxsb3dSZWZcXGAgYCArXHJcbiAgICAgICAgICAgIGBpbnN0ZWFkIG9mIFxcYHJlZlxcYC5gLCBgXFxuQ29tcG9uZW50IHRoYXQgd2FzIG1hZGUgcmVhY3RpdmU6IGAsIHR5cGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNyZWF0ZUJhc2VWTm9kZSh0eXBlLCBwcm9wcywgY2hpbGRyZW4sIHBhdGNoRmxhZywgZHluYW1pY1Byb3BzLCBzaGFwZUZsYWcsIGlzQmxvY2tOb2RlLCB0cnVlKTtcclxufVxyXG5mdW5jdGlvbiBndWFyZFJlYWN0aXZlUHJvcHMocHJvcHMpIHtcclxuICAgIGlmICghcHJvcHMpXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gaXNQcm94eShwcm9wcykgfHwgSW50ZXJuYWxPYmplY3RLZXkgaW4gcHJvcHNcclxuICAgICAgICA/IGV4dGVuZCh7fSwgcHJvcHMpXHJcbiAgICAgICAgOiBwcm9wcztcclxufVxyXG5mdW5jdGlvbiBjbG9uZVZOb2RlKHZub2RlLCBleHRyYVByb3BzLCBtZXJnZVJlZiA9IGZhbHNlKSB7XHJcbiAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgTk9UIHVzaW5nIHNwcmVhZCBvciBleHRlbmQgdG8gYXZvaWQgdGhlIHJ1bnRpbWVcclxuICAgIC8vIGtleSBlbnVtZXJhdGlvbiBjb3N0LlxyXG4gICAgY29uc3QgeyBwcm9wcywgcmVmLCBwYXRjaEZsYWcsIGNoaWxkcmVuIH0gPSB2bm9kZTtcclxuICAgIGNvbnN0IG1lcmdlZFByb3BzID0gZXh0cmFQcm9wcyA/IG1lcmdlUHJvcHMocHJvcHMgfHwge30sIGV4dHJhUHJvcHMpIDogcHJvcHM7XHJcbiAgICBjb25zdCBjbG9uZWQgPSB7XHJcbiAgICAgICAgX192X2lzVk5vZGU6IHRydWUsXHJcbiAgICAgICAgX192X3NraXA6IHRydWUsXHJcbiAgICAgICAgdHlwZTogdm5vZGUudHlwZSxcclxuICAgICAgICBwcm9wczogbWVyZ2VkUHJvcHMsXHJcbiAgICAgICAga2V5OiBtZXJnZWRQcm9wcyAmJiBub3JtYWxpemVLZXkobWVyZ2VkUHJvcHMpLFxyXG4gICAgICAgIHJlZjogZXh0cmFQcm9wcyAmJiBleHRyYVByb3BzLnJlZlxyXG4gICAgICAgICAgICA/IC8vICMyMDc4IGluIHRoZSBjYXNlIG9mIDxjb21wb25lbnQgOmlzPVwidm5vZGVcIiByZWY9XCJleHRyYVwiLz5cclxuICAgICAgICAgICAgICAgIC8vIGlmIHRoZSB2bm9kZSBpdHNlbGYgYWxyZWFkeSBoYXMgYSByZWYsIGNsb25lVk5vZGUgd2lsbCBuZWVkIHRvIG1lcmdlXHJcbiAgICAgICAgICAgICAgICAvLyB0aGUgcmVmcyBzbyB0aGUgc2luZ2xlIHZub2RlIGNhbiBiZSBzZXQgb24gbXVsdGlwbGUgcmVmc1xyXG4gICAgICAgICAgICAgICAgbWVyZ2VSZWYgJiYgcmVmXHJcbiAgICAgICAgICAgICAgICAgICAgPyBpc0FycmF5KHJlZilcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyByZWYuY29uY2F0KG5vcm1hbGl6ZVJlZihleHRyYVByb3BzKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbcmVmLCBub3JtYWxpemVSZWYoZXh0cmFQcm9wcyldXHJcbiAgICAgICAgICAgICAgICAgICAgOiBub3JtYWxpemVSZWYoZXh0cmFQcm9wcylcclxuICAgICAgICAgICAgOiByZWYsXHJcbiAgICAgICAgc2NvcGVJZDogdm5vZGUuc2NvcGVJZCxcclxuICAgICAgICBzbG90U2NvcGVJZHM6IHZub2RlLnNsb3RTY29wZUlkcyxcclxuICAgICAgICBjaGlsZHJlbjogKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHBhdGNoRmxhZyA9PT0gLTEgLyogUGF0Y2hGbGFncy5IT0lTVEVEICovICYmIGlzQXJyYXkoY2hpbGRyZW4pXHJcbiAgICAgICAgICAgID8gY2hpbGRyZW4ubWFwKGRlZXBDbG9uZVZOb2RlKVxyXG4gICAgICAgICAgICA6IGNoaWxkcmVuLFxyXG4gICAgICAgIHRhcmdldDogdm5vZGUudGFyZ2V0LFxyXG4gICAgICAgIHRhcmdldEFuY2hvcjogdm5vZGUudGFyZ2V0QW5jaG9yLFxyXG4gICAgICAgIHN0YXRpY0NvdW50OiB2bm9kZS5zdGF0aWNDb3VudCxcclxuICAgICAgICBzaGFwZUZsYWc6IHZub2RlLnNoYXBlRmxhZyxcclxuICAgICAgICAvLyBpZiB0aGUgdm5vZGUgaXMgY2xvbmVkIHdpdGggZXh0cmEgcHJvcHMsIHdlIGNhbiBubyBsb25nZXIgYXNzdW1lIGl0c1xyXG4gICAgICAgIC8vIGV4aXN0aW5nIHBhdGNoIGZsYWcgdG8gYmUgcmVsaWFibGUgYW5kIG5lZWQgdG8gYWRkIHRoZSBGVUxMX1BST1BTIGZsYWcuXHJcbiAgICAgICAgLy8gbm90ZTogcHJlc2VydmUgZmxhZyBmb3IgZnJhZ21lbnRzIHNpbmNlIHRoZXkgdXNlIHRoZSBmbGFnIGZvciBjaGlsZHJlblxyXG4gICAgICAgIC8vIGZhc3QgcGF0aHMgb25seS5cclxuICAgICAgICBwYXRjaEZsYWc6IGV4dHJhUHJvcHMgJiYgdm5vZGUudHlwZSAhPT0gRnJhZ21lbnRcclxuICAgICAgICAgICAgPyBwYXRjaEZsYWcgPT09IC0xIC8vIGhvaXN0ZWQgbm9kZVxyXG4gICAgICAgICAgICAgICAgPyAxNiAvKiBQYXRjaEZsYWdzLkZVTExfUFJPUFMgKi9cclxuICAgICAgICAgICAgICAgIDogcGF0Y2hGbGFnIHwgMTYgLyogUGF0Y2hGbGFncy5GVUxMX1BST1BTICovXHJcbiAgICAgICAgICAgIDogcGF0Y2hGbGFnLFxyXG4gICAgICAgIGR5bmFtaWNQcm9wczogdm5vZGUuZHluYW1pY1Byb3BzLFxyXG4gICAgICAgIGR5bmFtaWNDaGlsZHJlbjogdm5vZGUuZHluYW1pY0NoaWxkcmVuLFxyXG4gICAgICAgIGFwcENvbnRleHQ6IHZub2RlLmFwcENvbnRleHQsXHJcbiAgICAgICAgZGlyczogdm5vZGUuZGlycyxcclxuICAgICAgICB0cmFuc2l0aW9uOiB2bm9kZS50cmFuc2l0aW9uLFxyXG4gICAgICAgIC8vIFRoZXNlIHNob3VsZCB0ZWNobmljYWxseSBvbmx5IGJlIG5vbi1udWxsIG9uIG1vdW50ZWQgVk5vZGVzLiBIb3dldmVyLFxyXG4gICAgICAgIC8vIHRoZXkgKnNob3VsZCogYmUgY29waWVkIGZvciBrZXB0LWFsaXZlIHZub2Rlcy4gU28gd2UganVzdCBhbHdheXMgY29weVxyXG4gICAgICAgIC8vIHRoZW0gc2luY2UgdGhlbSBiZWluZyBub24tbnVsbCBkdXJpbmcgYSBtb3VudCBkb2Vzbid0IGFmZmVjdCB0aGUgbG9naWMgYXNcclxuICAgICAgICAvLyB0aGV5IHdpbGwgc2ltcGx5IGJlIG92ZXJ3cml0dGVuLlxyXG4gICAgICAgIGNvbXBvbmVudDogdm5vZGUuY29tcG9uZW50LFxyXG4gICAgICAgIHN1c3BlbnNlOiB2bm9kZS5zdXNwZW5zZSxcclxuICAgICAgICBzc0NvbnRlbnQ6IHZub2RlLnNzQ29udGVudCAmJiBjbG9uZVZOb2RlKHZub2RlLnNzQ29udGVudCksXHJcbiAgICAgICAgc3NGYWxsYmFjazogdm5vZGUuc3NGYWxsYmFjayAmJiBjbG9uZVZOb2RlKHZub2RlLnNzRmFsbGJhY2spLFxyXG4gICAgICAgIGVsOiB2bm9kZS5lbCxcclxuICAgICAgICBhbmNob3I6IHZub2RlLmFuY2hvclxyXG4gICAgfTtcclxuICAgIHJldHVybiBjbG9uZWQ7XHJcbn1cclxuLyoqXHJcbiAqIERldiBvbmx5LCBmb3IgSE1SIG9mIGhvaXN0ZWQgdm5vZGVzIHJldXNlZCBpbiB2LWZvclxyXG4gKiBodHRwczovL2dpdGh1Yi5jb20vdml0ZWpzL3ZpdGUvaXNzdWVzLzIwMjJcclxuICovXHJcbmZ1bmN0aW9uIGRlZXBDbG9uZVZOb2RlKHZub2RlKSB7XHJcbiAgICBjb25zdCBjbG9uZWQgPSBjbG9uZVZOb2RlKHZub2RlKTtcclxuICAgIGlmIChpc0FycmF5KHZub2RlLmNoaWxkcmVuKSkge1xyXG4gICAgICAgIGNsb25lZC5jaGlsZHJlbiA9IHZub2RlLmNoaWxkcmVuLm1hcChkZWVwQ2xvbmVWTm9kZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2xvbmVkO1xyXG59XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlVGV4dFZOb2RlKHRleHQgPSAnICcsIGZsYWcgPSAwKSB7XHJcbiAgICByZXR1cm4gY3JlYXRlVk5vZGUoVGV4dCwgbnVsbCwgdGV4dCwgZmxhZyk7XHJcbn1cclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVTdGF0aWNWTm9kZShjb250ZW50LCBudW1iZXJPZk5vZGVzKSB7XHJcbiAgICAvLyBBIHN0YXRpYyB2bm9kZSBjYW4gY29udGFpbiBtdWx0aXBsZSBzdHJpbmdpZmllZCBlbGVtZW50cywgYW5kIHRoZSBudW1iZXJcclxuICAgIC8vIG9mIGVsZW1lbnRzIGlzIG5lY2Vzc2FyeSBmb3IgaHlkcmF0aW9uLlxyXG4gICAgY29uc3Qgdm5vZGUgPSBjcmVhdGVWTm9kZShTdGF0aWMsIG51bGwsIGNvbnRlbnQpO1xyXG4gICAgdm5vZGUuc3RhdGljQ291bnQgPSBudW1iZXJPZk5vZGVzO1xyXG4gICAgcmV0dXJuIHZub2RlO1xyXG59XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlQ29tbWVudFZOb2RlKHRleHQgPSAnJywgXHJcbi8vIHdoZW4gdXNlZCBhcyB0aGUgdi1lbHNlIGJyYW5jaCwgdGhlIGNvbW1lbnQgbm9kZSBtdXN0IGJlIGNyZWF0ZWQgYXMgYVxyXG4vLyBibG9jayB0byBlbnN1cmUgY29ycmVjdCB1cGRhdGVzLlxyXG5hc0Jsb2NrID0gZmFsc2UpIHtcclxuICAgIHJldHVybiBhc0Jsb2NrXHJcbiAgICAgICAgPyAob3BlbkJsb2NrKCksIGNyZWF0ZUJsb2NrKENvbW1lbnQsIG51bGwsIHRleHQpKVxyXG4gICAgICAgIDogY3JlYXRlVk5vZGUoQ29tbWVudCwgbnVsbCwgdGV4dCk7XHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplVk5vZGUoY2hpbGQpIHtcclxuICAgIGlmIChjaGlsZCA9PSBudWxsIHx8IHR5cGVvZiBjaGlsZCA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgLy8gZW1wdHkgcGxhY2Vob2xkZXJcclxuICAgICAgICByZXR1cm4gY3JlYXRlVk5vZGUoQ29tbWVudCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0FycmF5KGNoaWxkKSkge1xyXG4gICAgICAgIC8vIGZyYWdtZW50XHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKEZyYWdtZW50LCBudWxsLCBcclxuICAgICAgICAvLyAjMzY2NiwgYXZvaWQgcmVmZXJlbmNlIHBvbGx1dGlvbiB3aGVuIHJldXNpbmcgdm5vZGVcclxuICAgICAgICBjaGlsZC5zbGljZSgpKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHR5cGVvZiBjaGlsZCA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAvLyBhbHJlYWR5IHZub2RlLCB0aGlzIHNob3VsZCBiZSB0aGUgbW9zdCBjb21tb24gc2luY2UgY29tcGlsZWQgdGVtcGxhdGVzXHJcbiAgICAgICAgLy8gYWx3YXlzIHByb2R1Y2UgYWxsLXZub2RlIGNoaWxkcmVuIGFycmF5c1xyXG4gICAgICAgIHJldHVybiBjbG9uZUlmTW91bnRlZChjaGlsZCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBzdHJpbmdzIGFuZCBudW1iZXJzXHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKFRleHQsIG51bGwsIFN0cmluZyhjaGlsZCkpO1xyXG4gICAgfVxyXG59XHJcbi8vIG9wdGltaXplZCBub3JtYWxpemF0aW9uIGZvciB0ZW1wbGF0ZS1jb21waWxlZCByZW5kZXIgZm5zXHJcbmZ1bmN0aW9uIGNsb25lSWZNb3VudGVkKGNoaWxkKSB7XHJcbiAgICByZXR1cm4gY2hpbGQuZWwgPT09IG51bGwgfHwgY2hpbGQubWVtbyA/IGNoaWxkIDogY2xvbmVWTm9kZShjaGlsZCk7XHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplQ2hpbGRyZW4odm5vZGUsIGNoaWxkcmVuKSB7XHJcbiAgICBsZXQgdHlwZSA9IDA7XHJcbiAgICBjb25zdCB7IHNoYXBlRmxhZyB9ID0gdm5vZGU7XHJcbiAgICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkge1xyXG4gICAgICAgIGNoaWxkcmVuID0gbnVsbDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgdHlwZSA9IDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi87XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgaWYgKHNoYXBlRmxhZyAmICgxIC8qIFNoYXBlRmxhZ3MuRUxFTUVOVCAqLyB8IDY0IC8qIFNoYXBlRmxhZ3MuVEVMRVBPUlQgKi8pKSB7XHJcbiAgICAgICAgICAgIC8vIE5vcm1hbGl6ZSBzbG90IHRvIHBsYWluIGNoaWxkcmVuIGZvciBwbGFpbiBlbGVtZW50IGFuZCBUZWxlcG9ydFxyXG4gICAgICAgICAgICBjb25zdCBzbG90ID0gY2hpbGRyZW4uZGVmYXVsdDtcclxuICAgICAgICAgICAgaWYgKHNsb3QpIHtcclxuICAgICAgICAgICAgICAgIC8vIF9jIG1hcmtlciBpcyBhZGRlZCBieSB3aXRoQ3R4KCkgaW5kaWNhdGluZyB0aGlzIGlzIGEgY29tcGlsZWQgc2xvdFxyXG4gICAgICAgICAgICAgICAgc2xvdC5fYyAmJiAoc2xvdC5fZCA9IGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZUNoaWxkcmVuKHZub2RlLCBzbG90KCkpO1xyXG4gICAgICAgICAgICAgICAgc2xvdC5fYyAmJiAoc2xvdC5fZCA9IHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHR5cGUgPSAzMiAvKiBTaGFwZUZsYWdzLlNMT1RTX0NISUxEUkVOICovO1xyXG4gICAgICAgICAgICBjb25zdCBzbG90RmxhZyA9IGNoaWxkcmVuLl87XHJcbiAgICAgICAgICAgIGlmICghc2xvdEZsYWcgJiYgIShJbnRlcm5hbE9iamVjdEtleSBpbiBjaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgICAgIGNoaWxkcmVuLl9jdHggPSBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoc2xvdEZsYWcgPT09IDMgLyogU2xvdEZsYWdzLkZPUldBUkRFRCAqLyAmJiBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgICAgIC8vIGEgY2hpbGQgY29tcG9uZW50IHJlY2VpdmVzIGZvcndhcmRlZCBzbG90cyBmcm9tIHRoZSBwYXJlbnQuXHJcbiAgICAgICAgICAgICAgICAvLyBpdHMgc2xvdCB0eXBlIGlzIGRldGVybWluZWQgYnkgaXRzIHBhcmVudCdzIHNsb3QgdHlwZS5cclxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2Uuc2xvdHMuXyA9PT0gMSAvKiBTbG90RmxhZ3MuU1RBQkxFICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uXyA9IDEgLyogU2xvdEZsYWdzLlNUQUJMRSAqLztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLl8gPSAyIC8qIFNsb3RGbGFncy5EWU5BTUlDICovO1xyXG4gICAgICAgICAgICAgICAgICAgIHZub2RlLnBhdGNoRmxhZyB8PSAxMDI0IC8qIFBhdGNoRmxhZ3MuRFlOQU1JQ19TTE9UUyAqLztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzRnVuY3Rpb24oY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgY2hpbGRyZW4gPSB7IGRlZmF1bHQ6IGNoaWxkcmVuLCBfY3R4OiBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UgfTtcclxuICAgICAgICB0eXBlID0gMzIgLyogU2hhcGVGbGFncy5TTE9UU19DSElMRFJFTiAqLztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNoaWxkcmVuID0gU3RyaW5nKGNoaWxkcmVuKTtcclxuICAgICAgICAvLyBmb3JjZSB0ZWxlcG9ydCBjaGlsZHJlbiB0byBhcnJheSBzbyBpdCBjYW4gYmUgbW92ZWQgYXJvdW5kXHJcbiAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDY0IC8qIFNoYXBlRmxhZ3MuVEVMRVBPUlQgKi8pIHtcclxuICAgICAgICAgICAgdHlwZSA9IDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi87XHJcbiAgICAgICAgICAgIGNoaWxkcmVuID0gW2NyZWF0ZVRleHRWTm9kZShjaGlsZHJlbildO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdHlwZSA9IDggLyogU2hhcGVGbGFncy5URVhUX0NISUxEUkVOICovO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHZub2RlLmNoaWxkcmVuID0gY2hpbGRyZW47XHJcbiAgICB2bm9kZS5zaGFwZUZsYWcgfD0gdHlwZTtcclxufVxyXG5mdW5jdGlvbiBtZXJnZVByb3BzKC4uLmFyZ3MpIHtcclxuICAgIGNvbnN0IHJldCA9IHt9O1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgdG9NZXJnZSA9IGFyZ3NbaV07XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdG9NZXJnZSkge1xyXG4gICAgICAgICAgICBpZiAoa2V5ID09PSAnY2xhc3MnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmV0LmNsYXNzICE9PSB0b01lcmdlLmNsYXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0LmNsYXNzID0gbm9ybWFsaXplQ2xhc3MoW3JldC5jbGFzcywgdG9NZXJnZS5jbGFzc10pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGtleSA9PT0gJ3N0eWxlJykge1xyXG4gICAgICAgICAgICAgICAgcmV0LnN0eWxlID0gbm9ybWFsaXplU3R5bGUoW3JldC5zdHlsZSwgdG9NZXJnZS5zdHlsZV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzT24oa2V5KSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSByZXRba2V5XTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGluY29taW5nID0gdG9NZXJnZVtrZXldO1xyXG4gICAgICAgICAgICAgICAgaWYgKGluY29taW5nICYmXHJcbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgIT09IGluY29taW5nICYmXHJcbiAgICAgICAgICAgICAgICAgICAgIShpc0FycmF5KGV4aXN0aW5nKSAmJiBleGlzdGluZy5pbmNsdWRlcyhpbmNvbWluZykpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0W2tleV0gPSBleGlzdGluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFtdLmNvbmNhdChleGlzdGluZywgaW5jb21pbmcpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaW5jb21pbmc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoa2V5ICE9PSAnJykge1xyXG4gICAgICAgICAgICAgICAgcmV0W2tleV0gPSB0b01lcmdlW2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0O1xyXG59XHJcbmZ1bmN0aW9uIGludm9rZVZOb2RlSG9vayhob29rLCBpbnN0YW5jZSwgdm5vZGUsIHByZXZWTm9kZSA9IG51bGwpIHtcclxuICAgIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGhvb2ssIGluc3RhbmNlLCA3IC8qIEVycm9yQ29kZXMuVk5PREVfSE9PSyAqLywgW1xyXG4gICAgICAgIHZub2RlLFxyXG4gICAgICAgIHByZXZWTm9kZVxyXG4gICAgXSk7XHJcbn1cblxuY29uc3QgZW1wdHlBcHBDb250ZXh0ID0gY3JlYXRlQXBwQ29udGV4dCgpO1xyXG5sZXQgdWlkJDEgPSAwO1xyXG5mdW5jdGlvbiBjcmVhdGVDb21wb25lbnRJbnN0YW5jZSh2bm9kZSwgcGFyZW50LCBzdXNwZW5zZSkge1xyXG4gICAgY29uc3QgdHlwZSA9IHZub2RlLnR5cGU7XHJcbiAgICAvLyBpbmhlcml0IHBhcmVudCBhcHAgY29udGV4dCAtIG9yIC0gaWYgcm9vdCwgYWRvcHQgZnJvbSByb290IHZub2RlXHJcbiAgICBjb25zdCBhcHBDb250ZXh0ID0gKHBhcmVudCA/IHBhcmVudC5hcHBDb250ZXh0IDogdm5vZGUuYXBwQ29udGV4dCkgfHwgZW1wdHlBcHBDb250ZXh0O1xyXG4gICAgY29uc3QgaW5zdGFuY2UgPSB7XHJcbiAgICAgICAgdWlkOiB1aWQkMSsrLFxyXG4gICAgICAgIHZub2RlLFxyXG4gICAgICAgIHR5cGUsXHJcbiAgICAgICAgcGFyZW50LFxyXG4gICAgICAgIGFwcENvbnRleHQsXHJcbiAgICAgICAgcm9vdDogbnVsbCxcclxuICAgICAgICBuZXh0OiBudWxsLFxyXG4gICAgICAgIHN1YlRyZWU6IG51bGwsXHJcbiAgICAgICAgZWZmZWN0OiBudWxsLFxyXG4gICAgICAgIHVwZGF0ZTogbnVsbCxcclxuICAgICAgICBzY29wZTogbmV3IEVmZmVjdFNjb3BlKHRydWUgLyogZGV0YWNoZWQgKi8pLFxyXG4gICAgICAgIHJlbmRlcjogbnVsbCxcclxuICAgICAgICBwcm94eTogbnVsbCxcclxuICAgICAgICBleHBvc2VkOiBudWxsLFxyXG4gICAgICAgIGV4cG9zZVByb3h5OiBudWxsLFxyXG4gICAgICAgIHdpdGhQcm94eTogbnVsbCxcclxuICAgICAgICBwcm92aWRlczogcGFyZW50ID8gcGFyZW50LnByb3ZpZGVzIDogT2JqZWN0LmNyZWF0ZShhcHBDb250ZXh0LnByb3ZpZGVzKSxcclxuICAgICAgICBhY2Nlc3NDYWNoZTogbnVsbCxcclxuICAgICAgICByZW5kZXJDYWNoZTogW10sXHJcbiAgICAgICAgLy8gbG9jYWwgcmVzb2x2ZWQgYXNzZXRzXHJcbiAgICAgICAgY29tcG9uZW50czogbnVsbCxcclxuICAgICAgICBkaXJlY3RpdmVzOiBudWxsLFxyXG4gICAgICAgIC8vIHJlc29sdmVkIHByb3BzIGFuZCBlbWl0cyBvcHRpb25zXHJcbiAgICAgICAgcHJvcHNPcHRpb25zOiBub3JtYWxpemVQcm9wc09wdGlvbnModHlwZSwgYXBwQ29udGV4dCksXHJcbiAgICAgICAgZW1pdHNPcHRpb25zOiBub3JtYWxpemVFbWl0c09wdGlvbnModHlwZSwgYXBwQ29udGV4dCksXHJcbiAgICAgICAgLy8gZW1pdFxyXG4gICAgICAgIGVtaXQ6IG51bGwsXHJcbiAgICAgICAgZW1pdHRlZDogbnVsbCxcclxuICAgICAgICAvLyBwcm9wcyBkZWZhdWx0IHZhbHVlXHJcbiAgICAgICAgcHJvcHNEZWZhdWx0czogRU1QVFlfT0JKLFxyXG4gICAgICAgIC8vIGluaGVyaXRBdHRyc1xyXG4gICAgICAgIGluaGVyaXRBdHRyczogdHlwZS5pbmhlcml0QXR0cnMsXHJcbiAgICAgICAgLy8gc3RhdGVcclxuICAgICAgICBjdHg6IEVNUFRZX09CSixcclxuICAgICAgICBkYXRhOiBFTVBUWV9PQkosXHJcbiAgICAgICAgcHJvcHM6IEVNUFRZX09CSixcclxuICAgICAgICBhdHRyczogRU1QVFlfT0JKLFxyXG4gICAgICAgIHNsb3RzOiBFTVBUWV9PQkosXHJcbiAgICAgICAgcmVmczogRU1QVFlfT0JKLFxyXG4gICAgICAgIHNldHVwU3RhdGU6IEVNUFRZX09CSixcclxuICAgICAgICBzZXR1cENvbnRleHQ6IG51bGwsXHJcbiAgICAgICAgLy8gc3VzcGVuc2UgcmVsYXRlZFxyXG4gICAgICAgIHN1c3BlbnNlLFxyXG4gICAgICAgIHN1c3BlbnNlSWQ6IHN1c3BlbnNlID8gc3VzcGVuc2UucGVuZGluZ0lkIDogMCxcclxuICAgICAgICBhc3luY0RlcDogbnVsbCxcclxuICAgICAgICBhc3luY1Jlc29sdmVkOiBmYWxzZSxcclxuICAgICAgICAvLyBsaWZlY3ljbGUgaG9va3NcclxuICAgICAgICAvLyBub3QgdXNpbmcgZW51bXMgaGVyZSBiZWNhdXNlIGl0IHJlc3VsdHMgaW4gY29tcHV0ZWQgcHJvcGVydGllc1xyXG4gICAgICAgIGlzTW91bnRlZDogZmFsc2UsXHJcbiAgICAgICAgaXNVbm1vdW50ZWQ6IGZhbHNlLFxyXG4gICAgICAgIGlzRGVhY3RpdmF0ZWQ6IGZhbHNlLFxyXG4gICAgICAgIGJjOiBudWxsLFxyXG4gICAgICAgIGM6IG51bGwsXHJcbiAgICAgICAgYm06IG51bGwsXHJcbiAgICAgICAgbTogbnVsbCxcclxuICAgICAgICBidTogbnVsbCxcclxuICAgICAgICB1OiBudWxsLFxyXG4gICAgICAgIHVtOiBudWxsLFxyXG4gICAgICAgIGJ1bTogbnVsbCxcclxuICAgICAgICBkYTogbnVsbCxcclxuICAgICAgICBhOiBudWxsLFxyXG4gICAgICAgIHJ0ZzogbnVsbCxcclxuICAgICAgICBydGM6IG51bGwsXHJcbiAgICAgICAgZWM6IG51bGwsXHJcbiAgICAgICAgc3A6IG51bGxcclxuICAgIH07XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgaW5zdGFuY2UuY3R4ID0gY3JlYXRlRGV2UmVuZGVyQ29udGV4dChpbnN0YW5jZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBpbnN0YW5jZS5jdHggPSB7IF86IGluc3RhbmNlIH07XHJcbiAgICB9XHJcbiAgICBpbnN0YW5jZS5yb290ID0gcGFyZW50ID8gcGFyZW50LnJvb3QgOiBpbnN0YW5jZTtcclxuICAgIGluc3RhbmNlLmVtaXQgPSBlbWl0JDEuYmluZChudWxsLCBpbnN0YW5jZSk7XHJcbiAgICAvLyBhcHBseSBjdXN0b20gZWxlbWVudCBzcGVjaWFsIGhhbmRsaW5nXHJcbiAgICBpZiAodm5vZGUuY2UpIHtcclxuICAgICAgICB2bm9kZS5jZShpbnN0YW5jZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaW5zdGFuY2U7XHJcbn1cclxubGV0IGN1cnJlbnRJbnN0YW5jZSA9IG51bGw7XHJcbmNvbnN0IGdldEN1cnJlbnRJbnN0YW5jZSA9ICgpID0+IGN1cnJlbnRJbnN0YW5jZSB8fCBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2U7XHJcbmNvbnN0IHNldEN1cnJlbnRJbnN0YW5jZSA9IChpbnN0YW5jZSkgPT4ge1xyXG4gICAgY3VycmVudEluc3RhbmNlID0gaW5zdGFuY2U7XHJcbiAgICBpbnN0YW5jZS5zY29wZS5vbigpO1xyXG59O1xyXG5jb25zdCB1bnNldEN1cnJlbnRJbnN0YW5jZSA9ICgpID0+IHtcclxuICAgIGN1cnJlbnRJbnN0YW5jZSAmJiBjdXJyZW50SW5zdGFuY2Uuc2NvcGUub2ZmKCk7XHJcbiAgICBjdXJyZW50SW5zdGFuY2UgPSBudWxsO1xyXG59O1xyXG5jb25zdCBpc0J1aWx0SW5UYWcgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoJ3Nsb3QsY29tcG9uZW50Jyk7XHJcbmZ1bmN0aW9uIHZhbGlkYXRlQ29tcG9uZW50TmFtZShuYW1lLCBjb25maWcpIHtcclxuICAgIGNvbnN0IGFwcElzTmF0aXZlVGFnID0gY29uZmlnLmlzTmF0aXZlVGFnIHx8IE5PO1xyXG4gICAgaWYgKGlzQnVpbHRJblRhZyhuYW1lKSB8fCBhcHBJc05hdGl2ZVRhZyhuYW1lKSkge1xyXG4gICAgICAgIHdhcm4oJ0RvIG5vdCB1c2UgYnVpbHQtaW4gb3IgcmVzZXJ2ZWQgSFRNTCBlbGVtZW50cyBhcyBjb21wb25lbnQgaWQ6ICcgKyBuYW1lKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBpc1N0YXRlZnVsQ29tcG9uZW50KGluc3RhbmNlKSB7XHJcbiAgICByZXR1cm4gaW5zdGFuY2Uudm5vZGUuc2hhcGVGbGFnICYgNCAvKiBTaGFwZUZsYWdzLlNUQVRFRlVMX0NPTVBPTkVOVCAqLztcclxufVxyXG5sZXQgaXNJblNTUkNvbXBvbmVudFNldHVwID0gZmFsc2U7XHJcbmZ1bmN0aW9uIHNldHVwQ29tcG9uZW50KGluc3RhbmNlLCBpc1NTUiA9IGZhbHNlKSB7XHJcbiAgICBpc0luU1NSQ29tcG9uZW50U2V0dXAgPSBpc1NTUjtcclxuICAgIGNvbnN0IHsgcHJvcHMsIGNoaWxkcmVuIH0gPSBpbnN0YW5jZS52bm9kZTtcclxuICAgIGNvbnN0IGlzU3RhdGVmdWwgPSBpc1N0YXRlZnVsQ29tcG9uZW50KGluc3RhbmNlKTtcclxuICAgIGluaXRQcm9wcyhpbnN0YW5jZSwgcHJvcHMsIGlzU3RhdGVmdWwsIGlzU1NSKTtcclxuICAgIGluaXRTbG90cyhpbnN0YW5jZSwgY2hpbGRyZW4pO1xyXG4gICAgY29uc3Qgc2V0dXBSZXN1bHQgPSBpc1N0YXRlZnVsXHJcbiAgICAgICAgPyBzZXR1cFN0YXRlZnVsQ29tcG9uZW50KGluc3RhbmNlLCBpc1NTUilcclxuICAgICAgICA6IHVuZGVmaW5lZDtcclxuICAgIGlzSW5TU1JDb21wb25lbnRTZXR1cCA9IGZhbHNlO1xyXG4gICAgcmV0dXJuIHNldHVwUmVzdWx0O1xyXG59XHJcbmZ1bmN0aW9uIHNldHVwU3RhdGVmdWxDb21wb25lbnQoaW5zdGFuY2UsIGlzU1NSKSB7XHJcbiAgICB2YXIgX2E7XHJcbiAgICBjb25zdCBDb21wb25lbnQgPSBpbnN0YW5jZS50eXBlO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGlmIChDb21wb25lbnQubmFtZSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0ZUNvbXBvbmVudE5hbWUoQ29tcG9uZW50Lm5hbWUsIGluc3RhbmNlLmFwcENvbnRleHQuY29uZmlnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKENvbXBvbmVudC5jb21wb25lbnRzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5hbWVzID0gT2JqZWN0LmtleXMoQ29tcG9uZW50LmNvbXBvbmVudHMpO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZUNvbXBvbmVudE5hbWUobmFtZXNbaV0sIGluc3RhbmNlLmFwcENvbnRleHQuY29uZmlnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoQ29tcG9uZW50LmRpcmVjdGl2ZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgbmFtZXMgPSBPYmplY3Qua2V5cyhDb21wb25lbnQuZGlyZWN0aXZlcyk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHZhbGlkYXRlRGlyZWN0aXZlTmFtZShuYW1lc1tpXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKENvbXBvbmVudC5jb21waWxlck9wdGlvbnMgJiYgaXNSdW50aW1lT25seSgpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYFwiY29tcGlsZXJPcHRpb25zXCIgaXMgb25seSBzdXBwb3J0ZWQgd2hlbiB1c2luZyBhIGJ1aWxkIG9mIFZ1ZSB0aGF0IGAgK1xyXG4gICAgICAgICAgICAgICAgYGluY2x1ZGVzIHRoZSBydW50aW1lIGNvbXBpbGVyLiBTaW5jZSB5b3UgYXJlIHVzaW5nIGEgcnVudGltZS1vbmx5IGAgK1xyXG4gICAgICAgICAgICAgICAgYGJ1aWxkLCB0aGUgb3B0aW9ucyBzaG91bGQgYmUgcGFzc2VkIHZpYSB5b3VyIGJ1aWxkIHRvb2wgY29uZmlnIGluc3RlYWQuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gMC4gY3JlYXRlIHJlbmRlciBwcm94eSBwcm9wZXJ0eSBhY2Nlc3MgY2FjaGVcclxuICAgIGluc3RhbmNlLmFjY2Vzc0NhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICAgIC8vIDEuIGNyZWF0ZSBwdWJsaWMgaW5zdGFuY2UgLyByZW5kZXIgcHJveHlcclxuICAgIC8vIGFsc28gbWFyayBpdCByYXcgc28gaXQncyBuZXZlciBvYnNlcnZlZFxyXG4gICAgaW5zdGFuY2UucHJveHkgPSBtYXJrUmF3KG5ldyBQcm94eShpbnN0YW5jZS5jdHgsIFB1YmxpY0luc3RhbmNlUHJveHlIYW5kbGVycykpO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGV4cG9zZVByb3BzT25SZW5kZXJDb250ZXh0KGluc3RhbmNlKTtcclxuICAgIH1cclxuICAgIC8vIDIuIGNhbGwgc2V0dXAoKVxyXG4gICAgY29uc3QgeyBzZXR1cCB9ID0gQ29tcG9uZW50O1xyXG4gICAgaWYgKHNldHVwKSB7XHJcbiAgICAgICAgY29uc3Qgc2V0dXBDb250ZXh0ID0gKGluc3RhbmNlLnNldHVwQ29udGV4dCA9XHJcbiAgICAgICAgICAgIHNldHVwLmxlbmd0aCA+IDEgPyBjcmVhdGVTZXR1cENvbnRleHQoaW5zdGFuY2UpIDogbnVsbCk7XHJcbiAgICAgICAgc2V0Q3VycmVudEluc3RhbmNlKGluc3RhbmNlKTtcclxuICAgICAgICBwYXVzZVRyYWNraW5nKCk7XHJcbiAgICAgICAgY29uc3Qgc2V0dXBSZXN1bHQgPSBjYWxsV2l0aEVycm9ySGFuZGxpbmcoc2V0dXAsIGluc3RhbmNlLCAwIC8qIEVycm9yQ29kZXMuU0VUVVBfRlVOQ1RJT04gKi8sIFsocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBzaGFsbG93UmVhZG9ubHkoaW5zdGFuY2UucHJvcHMpIDogaW5zdGFuY2UucHJvcHMsIHNldHVwQ29udGV4dF0pO1xyXG4gICAgICAgIHJlc2V0VHJhY2tpbmcoKTtcclxuICAgICAgICB1bnNldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgICAgIGlmIChpc1Byb21pc2Uoc2V0dXBSZXN1bHQpKSB7XHJcbiAgICAgICAgICAgIHNldHVwUmVzdWx0LnRoZW4odW5zZXRDdXJyZW50SW5zdGFuY2UsIHVuc2V0Q3VycmVudEluc3RhbmNlKTtcclxuICAgICAgICAgICAgaWYgKGlzU1NSKSB7XHJcbiAgICAgICAgICAgICAgICAvLyByZXR1cm4gdGhlIHByb21pc2Ugc28gc2VydmVyLXJlbmRlcmVyIGNhbiB3YWl0IG9uIGl0XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc2V0dXBSZXN1bHRcclxuICAgICAgICAgICAgICAgICAgICAudGhlbigocmVzb2x2ZWRSZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZXR1cFJlc3VsdChpbnN0YW5jZSwgcmVzb2x2ZWRSZXN1bHQsIGlzU1NSKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUVycm9yKGUsIGluc3RhbmNlLCAwIC8qIEVycm9yQ29kZXMuU0VUVVBfRlVOQ1RJT04gKi8pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBhc3luYyBzZXR1cCByZXR1cm5lZCBQcm9taXNlLlxyXG4gICAgICAgICAgICAgICAgLy8gYmFpbCBoZXJlIGFuZCB3YWl0IGZvciByZS1lbnRyeS5cclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmFzeW5jRGVwID0gc2V0dXBSZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpbnN0YW5jZS5zdXNwZW5zZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSAoX2EgPSBDb21wb25lbnQubmFtZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ0Fub255bW91cyc7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgQ29tcG9uZW50IDwke25hbWV9Pjogc2V0dXAgZnVuY3Rpb24gcmV0dXJuZWQgYSBwcm9taXNlLCBidXQgbm8gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGA8U3VzcGVuc2U+IGJvdW5kYXJ5IHdhcyBmb3VuZCBpbiB0aGUgcGFyZW50IGNvbXBvbmVudCB0cmVlLiBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYEEgY29tcG9uZW50IHdpdGggYXN5bmMgc2V0dXAoKSBtdXN0IGJlIG5lc3RlZCBpbiBhIDxTdXNwZW5zZT4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBpbiBvcmRlciB0byBiZSByZW5kZXJlZC5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaGFuZGxlU2V0dXBSZXN1bHQoaW5zdGFuY2UsIHNldHVwUmVzdWx0LCBpc1NTUik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZmluaXNoQ29tcG9uZW50U2V0dXAoaW5zdGFuY2UsIGlzU1NSKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBoYW5kbGVTZXR1cFJlc3VsdChpbnN0YW5jZSwgc2V0dXBSZXN1bHQsIGlzU1NSKSB7XHJcbiAgICBpZiAoaXNGdW5jdGlvbihzZXR1cFJlc3VsdCkpIHtcclxuICAgICAgICAvLyBzZXR1cCByZXR1cm5lZCBhbiBpbmxpbmUgcmVuZGVyIGZ1bmN0aW9uXHJcbiAgICAgICAgaWYgKGluc3RhbmNlLnR5cGUuX19zc3JJbmxpbmVSZW5kZXIpIHtcclxuICAgICAgICAgICAgLy8gd2hlbiB0aGUgZnVuY3Rpb24ncyBuYW1lIGlzIGBzc3JSZW5kZXJgIChjb21waWxlZCBieSBTRkMgaW5saW5lIG1vZGUpLFxyXG4gICAgICAgICAgICAvLyBzZXQgaXQgYXMgc3NyUmVuZGVyIGluc3RlYWQuXHJcbiAgICAgICAgICAgIGluc3RhbmNlLnNzclJlbmRlciA9IHNldHVwUmVzdWx0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaW5zdGFuY2UucmVuZGVyID0gc2V0dXBSZXN1bHQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNPYmplY3Qoc2V0dXBSZXN1bHQpKSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBpc1ZOb2RlKHNldHVwUmVzdWx0KSkge1xyXG4gICAgICAgICAgICB3YXJuKGBzZXR1cCgpIHNob3VsZCBub3QgcmV0dXJuIFZOb2RlcyBkaXJlY3RseSAtIGAgK1xyXG4gICAgICAgICAgICAgICAgYHJldHVybiBhIHJlbmRlciBmdW5jdGlvbiBpbnN0ZWFkLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBzZXR1cCByZXR1cm5lZCBiaW5kaW5ncy5cclxuICAgICAgICAvLyBhc3N1bWluZyBhIHJlbmRlciBmdW5jdGlvbiBjb21waWxlZCBmcm9tIHRlbXBsYXRlIGlzIHByZXNlbnQuXHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICAgICAgaW5zdGFuY2UuZGV2dG9vbHNSYXdTZXR1cFN0YXRlID0gc2V0dXBSZXN1bHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGluc3RhbmNlLnNldHVwU3RhdGUgPSBwcm94eVJlZnMoc2V0dXBSZXN1bHQpO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgZXhwb3NlU2V0dXBTdGF0ZU9uUmVuZGVyQ29udGV4dChpbnN0YW5jZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHNldHVwUmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB3YXJuKGBzZXR1cCgpIHNob3VsZCByZXR1cm4gYW4gb2JqZWN0LiBSZWNlaXZlZDogJHtzZXR1cFJlc3VsdCA9PT0gbnVsbCA/ICdudWxsJyA6IHR5cGVvZiBzZXR1cFJlc3VsdH1gKTtcclxuICAgIH1cclxuICAgIGZpbmlzaENvbXBvbmVudFNldHVwKGluc3RhbmNlLCBpc1NTUik7XHJcbn1cclxubGV0IGNvbXBpbGU7XHJcbmxldCBpbnN0YWxsV2l0aFByb3h5O1xyXG4vKipcclxuICogRm9yIHJ1bnRpbWUtZG9tIHRvIHJlZ2lzdGVyIHRoZSBjb21waWxlci5cclxuICogTm90ZSB0aGUgZXhwb3J0ZWQgbWV0aG9kIHVzZXMgYW55IHRvIGF2b2lkIGQudHMgcmVseWluZyBvbiB0aGUgY29tcGlsZXIgdHlwZXMuXHJcbiAqL1xyXG5mdW5jdGlvbiByZWdpc3RlclJ1bnRpbWVDb21waWxlcihfY29tcGlsZSkge1xyXG4gICAgY29tcGlsZSA9IF9jb21waWxlO1xyXG4gICAgaW5zdGFsbFdpdGhQcm94eSA9IGkgPT4ge1xyXG4gICAgICAgIGlmIChpLnJlbmRlci5fcmMpIHtcclxuICAgICAgICAgICAgaS53aXRoUHJveHkgPSBuZXcgUHJveHkoaS5jdHgsIFJ1bnRpbWVDb21waWxlZFB1YmxpY0luc3RhbmNlUHJveHlIYW5kbGVycyk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxyXG4vLyBkZXYgb25seVxyXG5jb25zdCBpc1J1bnRpbWVPbmx5ID0gKCkgPT4gIWNvbXBpbGU7XHJcbmZ1bmN0aW9uIGZpbmlzaENvbXBvbmVudFNldHVwKGluc3RhbmNlLCBpc1NTUiwgc2tpcE9wdGlvbnMpIHtcclxuICAgIGNvbnN0IENvbXBvbmVudCA9IGluc3RhbmNlLnR5cGU7XHJcbiAgICAvLyB0ZW1wbGF0ZSAvIHJlbmRlciBmdW5jdGlvbiBub3JtYWxpemF0aW9uXHJcbiAgICAvLyBjb3VsZCBiZSBhbHJlYWR5IHNldCB3aGVuIHJldHVybmVkIGZyb20gc2V0dXAoKVxyXG4gICAgaWYgKCFpbnN0YW5jZS5yZW5kZXIpIHtcclxuICAgICAgICAvLyBvbmx5IGRvIG9uLXRoZS1mbHkgY29tcGlsZSBpZiBub3QgaW4gU1NSIC0gU1NSIG9uLXRoZS1mbHkgY29tcGlsYXRpb25cclxuICAgICAgICAvLyBpcyBkb25lIGJ5IHNlcnZlci1yZW5kZXJlclxyXG4gICAgICAgIGlmICghaXNTU1IgJiYgY29tcGlsZSAmJiAhQ29tcG9uZW50LnJlbmRlcikge1xyXG4gICAgICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IENvbXBvbmVudC50ZW1wbGF0ZTtcclxuICAgICAgICAgICAgaWYgKHRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRNZWFzdXJlKGluc3RhbmNlLCBgY29tcGlsZWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBpc0N1c3RvbUVsZW1lbnQsIGNvbXBpbGVyT3B0aW9ucyB9ID0gaW5zdGFuY2UuYXBwQ29udGV4dC5jb25maWc7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IGRlbGltaXRlcnMsIGNvbXBpbGVyT3B0aW9uczogY29tcG9uZW50Q29tcGlsZXJPcHRpb25zIH0gPSBDb21wb25lbnQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaW5hbENvbXBpbGVyT3B0aW9ucyA9IGV4dGVuZChleHRlbmQoe1xyXG4gICAgICAgICAgICAgICAgICAgIGlzQ3VzdG9tRWxlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICBkZWxpbWl0ZXJzXHJcbiAgICAgICAgICAgICAgICB9LCBjb21waWxlck9wdGlvbnMpLCBjb21wb25lbnRDb21waWxlck9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgQ29tcG9uZW50LnJlbmRlciA9IGNvbXBpbGUodGVtcGxhdGUsIGZpbmFsQ29tcGlsZXJPcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBlbmRNZWFzdXJlKGluc3RhbmNlLCBgY29tcGlsZWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGluc3RhbmNlLnJlbmRlciA9IChDb21wb25lbnQucmVuZGVyIHx8IE5PT1ApO1xyXG4gICAgICAgIC8vIGZvciBydW50aW1lLWNvbXBpbGVkIHJlbmRlciBmdW5jdGlvbnMgdXNpbmcgYHdpdGhgIGJsb2NrcywgdGhlIHJlbmRlclxyXG4gICAgICAgIC8vIHByb3h5IHVzZWQgbmVlZHMgYSBkaWZmZXJlbnQgYGhhc2AgaGFuZGxlciB3aGljaCBpcyBtb3JlIHBlcmZvcm1hbnQgYW5kXHJcbiAgICAgICAgLy8gYWxzbyBvbmx5IGFsbG93cyBhIHdoaXRlbGlzdCBvZiBnbG9iYWxzIHRvIGZhbGx0aHJvdWdoLlxyXG4gICAgICAgIGlmIChpbnN0YWxsV2l0aFByb3h5KSB7XHJcbiAgICAgICAgICAgIGluc3RhbGxXaXRoUHJveHkoaW5zdGFuY2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIHN1cHBvcnQgZm9yIDIueCBvcHRpb25zXHJcbiAgICBpZiAoX19WVUVfT1BUSU9OU19BUElfXyAmJiAhKGZhbHNlICkpIHtcclxuICAgICAgICBzZXRDdXJyZW50SW5zdGFuY2UoaW5zdGFuY2UpO1xyXG4gICAgICAgIHBhdXNlVHJhY2tpbmcoKTtcclxuICAgICAgICBhcHBseU9wdGlvbnMoaW5zdGFuY2UpO1xyXG4gICAgICAgIHJlc2V0VHJhY2tpbmcoKTtcclxuICAgICAgICB1bnNldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgfVxyXG4gICAgLy8gd2FybiBtaXNzaW5nIHRlbXBsYXRlL3JlbmRlclxyXG4gICAgLy8gdGhlIHJ1bnRpbWUgY29tcGlsYXRpb24gb2YgdGVtcGxhdGUgaW4gU1NSIGlzIGRvbmUgYnkgc2VydmVyLXJlbmRlclxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhQ29tcG9uZW50LnJlbmRlciAmJiBpbnN0YW5jZS5yZW5kZXIgPT09IE5PT1AgJiYgIWlzU1NSKSB7XHJcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXHJcbiAgICAgICAgaWYgKCFjb21waWxlICYmIENvbXBvbmVudC50ZW1wbGF0ZSkge1xyXG4gICAgICAgICAgICB3YXJuKGBDb21wb25lbnQgcHJvdmlkZWQgdGVtcGxhdGUgb3B0aW9uIGJ1dCBgICtcclxuICAgICAgICAgICAgICAgIGBydW50aW1lIGNvbXBpbGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBidWlsZCBvZiBWdWUuYCArXHJcbiAgICAgICAgICAgICAgICAoYCBDb25maWd1cmUgeW91ciBidW5kbGVyIHRvIGFsaWFzIFwidnVlXCIgdG8gXCJ2dWUvZGlzdC92dWUuZXNtLWJ1bmRsZXIuanNcIi5gXHJcbiAgICAgICAgICAgICAgICAgICAgKSAvKiBzaG91bGQgbm90IGhhcHBlbiAqLyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB3YXJuKGBDb21wb25lbnQgaXMgbWlzc2luZyB0ZW1wbGF0ZSBvciByZW5kZXIgZnVuY3Rpb24uYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUF0dHJzUHJveHkoaW5zdGFuY2UpIHtcclxuICAgIHJldHVybiBuZXcgUHJveHkoaW5zdGFuY2UuYXR0cnMsIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgID8ge1xyXG4gICAgICAgICAgICBnZXQodGFyZ2V0LCBrZXkpIHtcclxuICAgICAgICAgICAgICAgIG1hcmtBdHRyc0FjY2Vzc2VkKCk7XHJcbiAgICAgICAgICAgICAgICB0cmFjayhpbnN0YW5jZSwgXCJnZXRcIiAvKiBUcmFja09wVHlwZXMuR0VUICovLCAnJGF0dHJzJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W2tleV07XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNldCgpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYHNldHVwQ29udGV4dC5hdHRycyBpcyByZWFkb25seS5gKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGVsZXRlUHJvcGVydHkoKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBzZXR1cENvbnRleHQuYXR0cnMgaXMgcmVhZG9ubHkuYCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgOiB7XHJcbiAgICAgICAgICAgIGdldCh0YXJnZXQsIGtleSkge1xyXG4gICAgICAgICAgICAgICAgdHJhY2soaW5zdGFuY2UsIFwiZ2V0XCIgLyogVHJhY2tPcFR5cGVzLkdFVCAqLywgJyRhdHRycycpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtrZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlU2V0dXBDb250ZXh0KGluc3RhbmNlKSB7XHJcbiAgICBjb25zdCBleHBvc2UgPSBleHBvc2VkID0+IHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGluc3RhbmNlLmV4cG9zZWQpIHtcclxuICAgICAgICAgICAgd2FybihgZXhwb3NlKCkgc2hvdWxkIGJlIGNhbGxlZCBvbmx5IG9uY2UgcGVyIHNldHVwKCkuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGluc3RhbmNlLmV4cG9zZWQgPSBleHBvc2VkIHx8IHt9O1xyXG4gICAgfTtcclxuICAgIGxldCBhdHRycztcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAvLyBXZSB1c2UgZ2V0dGVycyBpbiBkZXYgaW4gY2FzZSBsaWJzIGxpa2UgdGVzdC11dGlscyBvdmVyd3JpdGUgaW5zdGFuY2VcclxuICAgICAgICAvLyBwcm9wZXJ0aWVzIChvdmVyd3JpdGVzIHNob3VsZCBub3QgYmUgZG9uZSBpbiBwcm9kKVxyXG4gICAgICAgIHJldHVybiBPYmplY3QuZnJlZXplKHtcclxuICAgICAgICAgICAgZ2V0IGF0dHJzKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJzIHx8IChhdHRycyA9IGNyZWF0ZUF0dHJzUHJveHkoaW5zdGFuY2UpKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZ2V0IHNsb3RzKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNoYWxsb3dSZWFkb25seShpbnN0YW5jZS5zbG90cyk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGdldCBlbWl0KCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChldmVudCwgLi4uYXJncykgPT4gaW5zdGFuY2UuZW1pdChldmVudCwgLi4uYXJncyk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGV4cG9zZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZ2V0IGF0dHJzKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJzIHx8IChhdHRycyA9IGNyZWF0ZUF0dHJzUHJveHkoaW5zdGFuY2UpKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2xvdHM6IGluc3RhbmNlLnNsb3RzLFxyXG4gICAgICAgICAgICBlbWl0OiBpbnN0YW5jZS5lbWl0LFxyXG4gICAgICAgICAgICBleHBvc2VcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdldEV4cG9zZVByb3h5KGluc3RhbmNlKSB7XHJcbiAgICBpZiAoaW5zdGFuY2UuZXhwb3NlZCkge1xyXG4gICAgICAgIHJldHVybiAoaW5zdGFuY2UuZXhwb3NlUHJveHkgfHxcclxuICAgICAgICAgICAgKGluc3RhbmNlLmV4cG9zZVByb3h5ID0gbmV3IFByb3h5KHByb3h5UmVmcyhtYXJrUmF3KGluc3RhbmNlLmV4cG9zZWQpKSwge1xyXG4gICAgICAgICAgICAgICAgZ2V0KHRhcmdldCwga2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtleSBpbiB0YXJnZXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtrZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChrZXkgaW4gcHVibGljUHJvcGVydGllc01hcCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHVibGljUHJvcGVydGllc01hcFtrZXldKGluc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pKSk7XHJcbiAgICB9XHJcbn1cclxuY29uc3QgY2xhc3NpZnlSRSA9IC8oPzpefFstX10pKFxcdykvZztcclxuY29uc3QgY2xhc3NpZnkgPSAoc3RyKSA9PiBzdHIucmVwbGFjZShjbGFzc2lmeVJFLCBjID0+IGMudG9VcHBlckNhc2UoKSkucmVwbGFjZSgvWy1fXS9nLCAnJyk7XHJcbmZ1bmN0aW9uIGdldENvbXBvbmVudE5hbWUoQ29tcG9uZW50LCBpbmNsdWRlSW5mZXJyZWQgPSB0cnVlKSB7XHJcbiAgICByZXR1cm4gaXNGdW5jdGlvbihDb21wb25lbnQpXHJcbiAgICAgICAgPyBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWVcclxuICAgICAgICA6IENvbXBvbmVudC5uYW1lIHx8IChpbmNsdWRlSW5mZXJyZWQgJiYgQ29tcG9uZW50Ll9fbmFtZSk7XHJcbn1cclxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuZnVuY3Rpb24gZm9ybWF0Q29tcG9uZW50TmFtZShpbnN0YW5jZSwgQ29tcG9uZW50LCBpc1Jvb3QgPSBmYWxzZSkge1xyXG4gICAgbGV0IG5hbWUgPSBnZXRDb21wb25lbnROYW1lKENvbXBvbmVudCk7XHJcbiAgICBpZiAoIW5hbWUgJiYgQ29tcG9uZW50Ll9fZmlsZSkge1xyXG4gICAgICAgIGNvbnN0IG1hdGNoID0gQ29tcG9uZW50Ll9fZmlsZS5tYXRjaCgvKFteL1xcXFxdKylcXC5cXHcrJC8pO1xyXG4gICAgICAgIGlmIChtYXRjaCkge1xyXG4gICAgICAgICAgICBuYW1lID0gbWF0Y2hbMV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCFuYW1lICYmIGluc3RhbmNlICYmIGluc3RhbmNlLnBhcmVudCkge1xyXG4gICAgICAgIC8vIHRyeSB0byBpbmZlciB0aGUgbmFtZSBiYXNlZCBvbiByZXZlcnNlIHJlc29sdXRpb25cclxuICAgICAgICBjb25zdCBpbmZlckZyb21SZWdpc3RyeSA9IChyZWdpc3RyeSkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiByZWdpc3RyeSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlZ2lzdHJ5W2tleV0gPT09IENvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIG5hbWUgPVxyXG4gICAgICAgICAgICBpbmZlckZyb21SZWdpc3RyeShpbnN0YW5jZS5jb21wb25lbnRzIHx8XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5wYXJlbnQudHlwZS5jb21wb25lbnRzKSB8fCBpbmZlckZyb21SZWdpc3RyeShpbnN0YW5jZS5hcHBDb250ZXh0LmNvbXBvbmVudHMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5hbWUgPyBjbGFzc2lmeShuYW1lKSA6IGlzUm9vdCA/IGBBcHBgIDogYEFub255bW91c2A7XHJcbn1cclxuZnVuY3Rpb24gaXNDbGFzc0NvbXBvbmVudCh2YWx1ZSkge1xyXG4gICAgcmV0dXJuIGlzRnVuY3Rpb24odmFsdWUpICYmICdfX3ZjY09wdHMnIGluIHZhbHVlO1xyXG59XG5cbmNvbnN0IGNvbXB1dGVkID0gKChnZXR0ZXJPck9wdGlvbnMsIGRlYnVnT3B0aW9ucykgPT4ge1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgcmV0dXJuIGNvbXB1dGVkJDEoZ2V0dGVyT3JPcHRpb25zLCBkZWJ1Z09wdGlvbnMsIGlzSW5TU1JDb21wb25lbnRTZXR1cCk7XHJcbn0pO1xuXG4vLyBkZXYgb25seVxyXG5jb25zdCB3YXJuUnVudGltZVVzYWdlID0gKG1ldGhvZCkgPT4gd2FybihgJHttZXRob2R9KCkgaXMgYSBjb21waWxlci1oaW50IGhlbHBlciB0aGF0IGlzIG9ubHkgdXNhYmxlIGluc2lkZSBgICtcclxuICAgIGA8c2NyaXB0IHNldHVwPiBvZiBhIHNpbmdsZSBmaWxlIGNvbXBvbmVudC4gSXRzIGFyZ3VtZW50cyBzaG91bGQgYmUgYCArXHJcbiAgICBgY29tcGlsZWQgYXdheSBhbmQgcGFzc2luZyBpdCBhdCBydW50aW1lIGhhcyBubyBlZmZlY3QuYCk7XHJcbi8vIGltcGxlbWVudGF0aW9uXHJcbmZ1bmN0aW9uIGRlZmluZVByb3BzKCkge1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIHdhcm5SdW50aW1lVXNhZ2UoYGRlZmluZVByb3BzYCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufVxyXG4vLyBpbXBsZW1lbnRhdGlvblxyXG5mdW5jdGlvbiBkZWZpbmVFbWl0cygpIHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB3YXJuUnVudGltZVVzYWdlKGBkZWZpbmVFbWl0c2ApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn1cclxuLyoqXHJcbiAqIFZ1ZSBgPHNjcmlwdCBzZXR1cD5gIGNvbXBpbGVyIG1hY3JvIGZvciBkZWNsYXJpbmcgYSBjb21wb25lbnQncyBleHBvc2VkXHJcbiAqIGluc3RhbmNlIHByb3BlcnRpZXMgd2hlbiBpdCBpcyBhY2Nlc3NlZCBieSBhIHBhcmVudCBjb21wb25lbnQgdmlhIHRlbXBsYXRlXHJcbiAqIHJlZnMuXHJcbiAqXHJcbiAqIGA8c2NyaXB0IHNldHVwPmAgY29tcG9uZW50cyBhcmUgY2xvc2VkIGJ5IGRlZmF1bHQgLSBpLmUuIHZhcmlhYmxlcyBpbnNpZGVcclxuICogdGhlIGA8c2NyaXB0IHNldHVwPmAgc2NvcGUgaXMgbm90IGV4cG9zZWQgdG8gcGFyZW50IHVubGVzcyBleHBsaWNpdGx5IGV4cG9zZWRcclxuICogdmlhIGBkZWZpbmVFeHBvc2VgLlxyXG4gKlxyXG4gKiBUaGlzIGlzIG9ubHkgdXNhYmxlIGluc2lkZSBgPHNjcmlwdCBzZXR1cD5gLCBpcyBjb21waWxlZCBhd2F5IGluIHRoZVxyXG4gKiBvdXRwdXQgYW5kIHNob3VsZCAqKm5vdCoqIGJlIGFjdHVhbGx5IGNhbGxlZCBhdCBydW50aW1lLlxyXG4gKi9cclxuZnVuY3Rpb24gZGVmaW5lRXhwb3NlKGV4cG9zZWQpIHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB3YXJuUnVudGltZVVzYWdlKGBkZWZpbmVFeHBvc2VgKTtcclxuICAgIH1cclxufVxyXG4vKipcclxuICogVnVlIGA8c2NyaXB0IHNldHVwPmAgY29tcGlsZXIgbWFjcm8gZm9yIHByb3ZpZGluZyBwcm9wcyBkZWZhdWx0IHZhbHVlcyB3aGVuXHJcbiAqIHVzaW5nIHR5cGUtYmFzZWQgYGRlZmluZVByb3BzYCBkZWNsYXJhdGlvbi5cclxuICpcclxuICogRXhhbXBsZSB1c2FnZTpcclxuICogYGBgdHNcclxuICogd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPHtcclxuICogICBzaXplPzogbnVtYmVyXHJcbiAqICAgbGFiZWxzPzogc3RyaW5nW11cclxuICogfT4oKSwge1xyXG4gKiAgIHNpemU6IDMsXHJcbiAqICAgbGFiZWxzOiAoKSA9PiBbJ2RlZmF1bHQgbGFiZWwnXVxyXG4gKiB9KVxyXG4gKiBgYGBcclxuICpcclxuICogVGhpcyBpcyBvbmx5IHVzYWJsZSBpbnNpZGUgYDxzY3JpcHQgc2V0dXA+YCwgaXMgY29tcGlsZWQgYXdheSBpbiB0aGUgb3V0cHV0XHJcbiAqIGFuZCBzaG91bGQgKipub3QqKiBiZSBhY3R1YWxseSBjYWxsZWQgYXQgcnVudGltZS5cclxuICovXHJcbmZ1bmN0aW9uIHdpdGhEZWZhdWx0cyhwcm9wcywgZGVmYXVsdHMpIHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB3YXJuUnVudGltZVVzYWdlKGB3aXRoRGVmYXVsdHNgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59XHJcbmZ1bmN0aW9uIHVzZVNsb3RzKCkge1xyXG4gICAgcmV0dXJuIGdldENvbnRleHQoKS5zbG90cztcclxufVxyXG5mdW5jdGlvbiB1c2VBdHRycygpIHtcclxuICAgIHJldHVybiBnZXRDb250ZXh0KCkuYXR0cnM7XHJcbn1cclxuZnVuY3Rpb24gZ2V0Q29udGV4dCgpIHtcclxuICAgIGNvbnN0IGkgPSBnZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWkpIHtcclxuICAgICAgICB3YXJuKGB1c2VDb250ZXh0KCkgY2FsbGVkIHdpdGhvdXQgYWN0aXZlIGluc3RhbmNlLmApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGkuc2V0dXBDb250ZXh0IHx8IChpLnNldHVwQ29udGV4dCA9IGNyZWF0ZVNldHVwQ29udGV4dChpKSk7XHJcbn1cclxuLyoqXHJcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciBtZXJnaW5nIGRlZmF1bHQgZGVjbGFyYXRpb25zLiBJbXBvcnRlZCBieSBjb21waWxlZCBjb2RlXHJcbiAqIG9ubHkuXHJcbiAqIEBpbnRlcm5hbFxyXG4gKi9cclxuZnVuY3Rpb24gbWVyZ2VEZWZhdWx0cyhyYXcsIGRlZmF1bHRzKSB7XHJcbiAgICBjb25zdCBwcm9wcyA9IGlzQXJyYXkocmF3KVxyXG4gICAgICAgID8gcmF3LnJlZHVjZSgobm9ybWFsaXplZCwgcCkgPT4gKChub3JtYWxpemVkW3BdID0ge30pLCBub3JtYWxpemVkKSwge30pXHJcbiAgICAgICAgOiByYXc7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBkZWZhdWx0cykge1xyXG4gICAgICAgIGNvbnN0IG9wdCA9IHByb3BzW2tleV07XHJcbiAgICAgICAgaWYgKG9wdCkge1xyXG4gICAgICAgICAgICBpZiAoaXNBcnJheShvcHQpIHx8IGlzRnVuY3Rpb24ob3B0KSkge1xyXG4gICAgICAgICAgICAgICAgcHJvcHNba2V5XSA9IHsgdHlwZTogb3B0LCBkZWZhdWx0OiBkZWZhdWx0c1trZXldIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBvcHQuZGVmYXVsdCA9IGRlZmF1bHRzW2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAob3B0ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHByb3BzW2tleV0gPSB7IGRlZmF1bHQ6IGRlZmF1bHRzW2tleV0gfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYHByb3BzIGRlZmF1bHQga2V5IFwiJHtrZXl9XCIgaGFzIG5vIGNvcnJlc3BvbmRpbmcgZGVjbGFyYXRpb24uYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHByb3BzO1xyXG59XHJcbi8qKlxyXG4gKiBVc2VkIHRvIGNyZWF0ZSBhIHByb3h5IGZvciB0aGUgcmVzdCBlbGVtZW50IHdoZW4gZGVzdHJ1Y3R1cmluZyBwcm9wcyB3aXRoXHJcbiAqIGRlZmluZVByb3BzKCkuXHJcbiAqIEBpbnRlcm5hbFxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlUHJvcHNSZXN0UHJveHkocHJvcHMsIGV4Y2x1ZGVkS2V5cykge1xyXG4gICAgY29uc3QgcmV0ID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBwcm9wcykge1xyXG4gICAgICAgIGlmICghZXhjbHVkZWRLZXlzLmluY2x1ZGVzKGtleSkpIHtcclxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJldCwga2V5LCB7XHJcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiBwcm9wc1trZXldXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXQ7XHJcbn1cclxuLyoqXHJcbiAqIGA8c2NyaXB0IHNldHVwPmAgaGVscGVyIGZvciBwZXJzaXN0aW5nIHRoZSBjdXJyZW50IGluc3RhbmNlIGNvbnRleHQgb3ZlclxyXG4gKiBhc3luYy9hd2FpdCBmbG93cy5cclxuICpcclxuICogYEB2dWUvY29tcGlsZXItc2ZjYCBjb252ZXJ0cyB0aGUgZm9sbG93aW5nOlxyXG4gKlxyXG4gKiBgYGB0c1xyXG4gKiBjb25zdCB4ID0gYXdhaXQgZm9vKClcclxuICogYGBgXHJcbiAqXHJcbiAqIGludG86XHJcbiAqXHJcbiAqIGBgYHRzXHJcbiAqIGxldCBfX3RlbXAsIF9fcmVzdG9yZVxyXG4gKiBjb25zdCB4ID0gKChbX190ZW1wLCBfX3Jlc3RvcmVdID0gd2l0aEFzeW5jQ29udGV4dCgoKSA9PiBmb28oKSkpLF9fdGVtcD1hd2FpdCBfX3RlbXAsX19yZXN0b3JlKCksX190ZW1wKVxyXG4gKiBgYGBcclxuICogQGludGVybmFsXHJcbiAqL1xyXG5mdW5jdGlvbiB3aXRoQXN5bmNDb250ZXh0KGdldEF3YWl0YWJsZSkge1xyXG4gICAgY29uc3QgY3R4ID0gZ2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFjdHgpIHtcclxuICAgICAgICB3YXJuKGB3aXRoQXN5bmNDb250ZXh0IGNhbGxlZCB3aXRob3V0IGFjdGl2ZSBjdXJyZW50IGluc3RhbmNlLiBgICtcclxuICAgICAgICAgICAgYFRoaXMgaXMgbGlrZWx5IGEgYnVnLmApO1xyXG4gICAgfVxyXG4gICAgbGV0IGF3YWl0YWJsZSA9IGdldEF3YWl0YWJsZSgpO1xyXG4gICAgdW5zZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgIGlmIChpc1Byb21pc2UoYXdhaXRhYmxlKSkge1xyXG4gICAgICAgIGF3YWl0YWJsZSA9IGF3YWl0YWJsZS5jYXRjaChlID0+IHtcclxuICAgICAgICAgICAgc2V0Q3VycmVudEluc3RhbmNlKGN0eCk7XHJcbiAgICAgICAgICAgIHRocm93IGU7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW2F3YWl0YWJsZSwgKCkgPT4gc2V0Q3VycmVudEluc3RhbmNlKGN0eCldO1xyXG59XG5cbi8vIEFjdHVhbCBpbXBsZW1lbnRhdGlvblxyXG5mdW5jdGlvbiBoKHR5cGUsIHByb3BzT3JDaGlsZHJlbiwgY2hpbGRyZW4pIHtcclxuICAgIGNvbnN0IGwgPSBhcmd1bWVudHMubGVuZ3RoO1xyXG4gICAgaWYgKGwgPT09IDIpIHtcclxuICAgICAgICBpZiAoaXNPYmplY3QocHJvcHNPckNoaWxkcmVuKSAmJiAhaXNBcnJheShwcm9wc09yQ2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgIC8vIHNpbmdsZSB2bm9kZSB3aXRob3V0IHByb3BzXHJcbiAgICAgICAgICAgIGlmIChpc1ZOb2RlKHByb3BzT3JDaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVWTm9kZSh0eXBlLCBudWxsLCBbcHJvcHNPckNoaWxkcmVuXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gcHJvcHMgd2l0aG91dCBjaGlsZHJlblxyXG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlVk5vZGUodHlwZSwgcHJvcHNPckNoaWxkcmVuKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIG9taXQgcHJvcHNcclxuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKHR5cGUsIG51bGwsIHByb3BzT3JDaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKGwgPiAzKSB7XHJcbiAgICAgICAgICAgIGNoaWxkcmVuID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAobCA9PT0gMyAmJiBpc1ZOb2RlKGNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICBjaGlsZHJlbiA9IFtjaGlsZHJlbl07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjcmVhdGVWTm9kZSh0eXBlLCBwcm9wc09yQ2hpbGRyZW4sIGNoaWxkcmVuKTtcclxuICAgIH1cclxufVxuXG5jb25zdCBzc3JDb250ZXh0S2V5ID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBzc3JDb250ZXh0YCA6IGBgKTtcclxuY29uc3QgdXNlU1NSQ29udGV4dCA9ICgpID0+IHtcclxuICAgIHtcclxuICAgICAgICBjb25zdCBjdHggPSBpbmplY3Qoc3NyQ29udGV4dEtleSk7XHJcbiAgICAgICAgaWYgKCFjdHgpIHtcclxuICAgICAgICAgICAgd2FybihgU2VydmVyIHJlbmRlcmluZyBjb250ZXh0IG5vdCBwcm92aWRlZC4gTWFrZSBzdXJlIHRvIG9ubHkgY2FsbCBgICtcclxuICAgICAgICAgICAgICAgIGB1c2VTU1JDb250ZXh0KCkgY29uZGl0aW9uYWxseSBpbiB0aGUgc2VydmVyIGJ1aWxkLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY3R4O1xyXG4gICAgfVxyXG59O1xuXG5mdW5jdGlvbiBpc1NoYWxsb3codmFsdWUpIHtcclxuICAgIHJldHVybiAhISh2YWx1ZSAmJiB2YWx1ZVtcIl9fdl9pc1NoYWxsb3dcIiAvKiBSZWFjdGl2ZUZsYWdzLklTX1NIQUxMT1cgKi9dKTtcclxufVxuXG5mdW5jdGlvbiBpbml0Q3VzdG9tRm9ybWF0dGVyKCkge1xyXG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzICovXHJcbiAgICBpZiAoIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHZ1ZVN0eWxlID0geyBzdHlsZTogJ2NvbG9yOiMzYmE3NzYnIH07XHJcbiAgICBjb25zdCBudW1iZXJTdHlsZSA9IHsgc3R5bGU6ICdjb2xvcjojMGIxYmM5JyB9O1xyXG4gICAgY29uc3Qgc3RyaW5nU3R5bGUgPSB7IHN0eWxlOiAnY29sb3I6I2I2MmUyNCcgfTtcclxuICAgIGNvbnN0IGtleXdvcmRTdHlsZSA9IHsgc3R5bGU6ICdjb2xvcjojOWQyODhjJyB9O1xyXG4gICAgLy8gY3VzdG9tIGZvcm1hdHRlciBmb3IgQ2hyb21lXHJcbiAgICAvLyBodHRwczovL3d3dy5tYXR0emV1bmVydC5jb20vMjAxNi8wMi8xOS9jdXN0b20tY2hyb21lLWRldnRvb2xzLW9iamVjdC1mb3JtYXR0ZXJzLmh0bWxcclxuICAgIGNvbnN0IGZvcm1hdHRlciA9IHtcclxuICAgICAgICBoZWFkZXIob2JqKSB7XHJcbiAgICAgICAgICAgIC8vIFRPRE8gYWxzbyBmb3JtYXQgQ29tcG9uZW50UHVibGljSW5zdGFuY2UgJiBjdHguc2xvdHMvYXR0cnMgaW4gc2V0dXBcclxuICAgICAgICAgICAgaWYgKCFpc09iamVjdChvYmopKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAob2JqLl9faXNWdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBbJ2RpdicsIHZ1ZVN0eWxlLCBgVnVlSW5zdGFuY2VgXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChpc1JlZihvYmopKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgICAgICdkaXYnLFxyXG4gICAgICAgICAgICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgICAgICAgICAgIFsnc3BhbicsIHZ1ZVN0eWxlLCBnZW5SZWZGbGFnKG9iaildLFxyXG4gICAgICAgICAgICAgICAgICAgICc8JyxcclxuICAgICAgICAgICAgICAgICAgICBmb3JtYXRWYWx1ZShvYmoudmFsdWUpLFxyXG4gICAgICAgICAgICAgICAgICAgIGA+YFxyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChpc1JlYWN0aXZlKG9iaikpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgICAgICAgICAgJ2RpdicsXHJcbiAgICAgICAgICAgICAgICAgICAge30sXHJcbiAgICAgICAgICAgICAgICAgICAgWydzcGFuJywgdnVlU3R5bGUsIGlzU2hhbGxvdyhvYmopID8gJ1NoYWxsb3dSZWFjdGl2ZScgOiAnUmVhY3RpdmUnXSxcclxuICAgICAgICAgICAgICAgICAgICAnPCcsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0VmFsdWUob2JqKSxcclxuICAgICAgICAgICAgICAgICAgICBgPiR7aXNSZWFkb25seShvYmopID8gYCAocmVhZG9ubHkpYCA6IGBgfWBcclxuICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaXNSZWFkb25seShvYmopKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgICAgICdkaXYnLFxyXG4gICAgICAgICAgICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgICAgICAgICAgIFsnc3BhbicsIHZ1ZVN0eWxlLCBpc1NoYWxsb3cob2JqKSA/ICdTaGFsbG93UmVhZG9ubHknIDogJ1JlYWRvbmx5J10sXHJcbiAgICAgICAgICAgICAgICAgICAgJzwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdFZhbHVlKG9iaiksXHJcbiAgICAgICAgICAgICAgICAgICAgJz4nXHJcbiAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaGFzQm9keShvYmopIHtcclxuICAgICAgICAgICAgcmV0dXJuIG9iaiAmJiBvYmouX19pc1Z1ZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGJvZHkob2JqKSB7XHJcbiAgICAgICAgICAgIGlmIChvYmogJiYgb2JqLl9faXNWdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgICAgICAgICAgJ2RpdicsXHJcbiAgICAgICAgICAgICAgICAgICAge30sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybWF0SW5zdGFuY2Uob2JqLiQpXHJcbiAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGZ1bmN0aW9uIGZvcm1hdEluc3RhbmNlKGluc3RhbmNlKSB7XHJcbiAgICAgICAgY29uc3QgYmxvY2tzID0gW107XHJcbiAgICAgICAgaWYgKGluc3RhbmNlLnR5cGUucHJvcHMgJiYgaW5zdGFuY2UucHJvcHMpIHtcclxuICAgICAgICAgICAgYmxvY2tzLnB1c2goY3JlYXRlSW5zdGFuY2VCbG9jaygncHJvcHMnLCB0b1JhdyhpbnN0YW5jZS5wcm9wcykpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGluc3RhbmNlLnNldHVwU3RhdGUgIT09IEVNUFRZX09CSikge1xyXG4gICAgICAgICAgICBibG9ja3MucHVzaChjcmVhdGVJbnN0YW5jZUJsb2NrKCdzZXR1cCcsIGluc3RhbmNlLnNldHVwU3RhdGUpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGluc3RhbmNlLmRhdGEgIT09IEVNUFRZX09CSikge1xyXG4gICAgICAgICAgICBibG9ja3MucHVzaChjcmVhdGVJbnN0YW5jZUJsb2NrKCdkYXRhJywgdG9SYXcoaW5zdGFuY2UuZGF0YSkpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY29tcHV0ZWQgPSBleHRyYWN0S2V5cyhpbnN0YW5jZSwgJ2NvbXB1dGVkJyk7XHJcbiAgICAgICAgaWYgKGNvbXB1dGVkKSB7XHJcbiAgICAgICAgICAgIGJsb2Nrcy5wdXNoKGNyZWF0ZUluc3RhbmNlQmxvY2soJ2NvbXB1dGVkJywgY29tcHV0ZWQpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaW5qZWN0ZWQgPSBleHRyYWN0S2V5cyhpbnN0YW5jZSwgJ2luamVjdCcpO1xyXG4gICAgICAgIGlmIChpbmplY3RlZCkge1xyXG4gICAgICAgICAgICBibG9ja3MucHVzaChjcmVhdGVJbnN0YW5jZUJsb2NrKCdpbmplY3RlZCcsIGluamVjdGVkKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJsb2Nrcy5wdXNoKFtcclxuICAgICAgICAgICAgJ2RpdicsXHJcbiAgICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgICBbXHJcbiAgICAgICAgICAgICAgICAnc3BhbicsXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6IGtleXdvcmRTdHlsZS5zdHlsZSArICc7b3BhY2l0eTowLjY2J1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICckIChpbnRlcm5hbCk6ICdcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgWydvYmplY3QnLCB7IG9iamVjdDogaW5zdGFuY2UgfV1cclxuICAgICAgICBdKTtcclxuICAgICAgICByZXR1cm4gYmxvY2tzO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2VCbG9jayh0eXBlLCB0YXJnZXQpIHtcclxuICAgICAgICB0YXJnZXQgPSBleHRlbmQoe30sIHRhcmdldCk7XHJcbiAgICAgICAgaWYgKCFPYmplY3Qua2V5cyh0YXJnZXQpLmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXR1cm4gWydzcGFuJywge31dO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAnZGl2JyxcclxuICAgICAgICAgICAgeyBzdHlsZTogJ2xpbmUtaGVpZ2h0OjEuMjVlbTttYXJnaW4tYm90dG9tOjAuNmVtJyB9LFxyXG4gICAgICAgICAgICBbXHJcbiAgICAgICAgICAgICAgICAnZGl2JyxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZTogJ2NvbG9yOiM0NzY1ODInXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgdHlwZVxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICBbXHJcbiAgICAgICAgICAgICAgICAnZGl2JyxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZTogJ3BhZGRpbmctbGVmdDoxLjI1ZW0nXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgLi4uT2JqZWN0LmtleXModGFyZ2V0KS5tYXAoa2V5ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnZGl2JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAge30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsnc3BhbicsIGtleXdvcmRTdHlsZSwga2V5ICsgJzogJ10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdFZhbHVlKHRhcmdldFtrZXldLCBmYWxzZSlcclxuICAgICAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgXVxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBmb3JtYXRWYWx1ZSh2LCBhc1JhdyA9IHRydWUpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHYgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbJ3NwYW4nLCBudW1iZXJTdHlsZSwgdl07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICByZXR1cm4gWydzcGFuJywgc3RyaW5nU3R5bGUsIEpTT04uc3RyaW5naWZ5KHYpXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIHYgPT09ICdib29sZWFuJykge1xyXG4gICAgICAgICAgICByZXR1cm4gWydzcGFuJywga2V5d29yZFN0eWxlLCB2XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaXNPYmplY3QodikpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFsnb2JqZWN0JywgeyBvYmplY3Q6IGFzUmF3ID8gdG9SYXcodikgOiB2IH1dO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIFsnc3BhbicsIHN0cmluZ1N0eWxlLCBTdHJpbmcodildO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGV4dHJhY3RLZXlzKGluc3RhbmNlLCB0eXBlKSB7XHJcbiAgICAgICAgY29uc3QgQ29tcCA9IGluc3RhbmNlLnR5cGU7XHJcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24oQ29tcCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBleHRyYWN0ZWQgPSB7fTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbnN0YW5jZS5jdHgpIHtcclxuICAgICAgICAgICAgaWYgKGlzS2V5T2ZUeXBlKENvbXAsIGtleSwgdHlwZSkpIHtcclxuICAgICAgICAgICAgICAgIGV4dHJhY3RlZFtrZXldID0gaW5zdGFuY2UuY3R4W2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGV4dHJhY3RlZDtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGlzS2V5T2ZUeXBlKENvbXAsIGtleSwgdHlwZSkge1xyXG4gICAgICAgIGNvbnN0IG9wdHMgPSBDb21wW3R5cGVdO1xyXG4gICAgICAgIGlmICgoaXNBcnJheShvcHRzKSAmJiBvcHRzLmluY2x1ZGVzKGtleSkpIHx8XHJcbiAgICAgICAgICAgIChpc09iamVjdChvcHRzKSAmJiBrZXkgaW4gb3B0cykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChDb21wLmV4dGVuZHMgJiYgaXNLZXlPZlR5cGUoQ29tcC5leHRlbmRzLCBrZXksIHR5cGUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoQ29tcC5taXhpbnMgJiYgQ29tcC5taXhpbnMuc29tZShtID0+IGlzS2V5T2ZUeXBlKG0sIGtleSwgdHlwZSkpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGdlblJlZkZsYWcodikge1xyXG4gICAgICAgIGlmIChpc1NoYWxsb3codikpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGBTaGFsbG93UmVmYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHYuZWZmZWN0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgQ29tcHV0ZWRSZWZgO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYFJlZmA7XHJcbiAgICB9XHJcbiAgICBpZiAod2luZG93LmRldnRvb2xzRm9ybWF0dGVycykge1xyXG4gICAgICAgIHdpbmRvdy5kZXZ0b29sc0Zvcm1hdHRlcnMucHVzaChmb3JtYXR0ZXIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgd2luZG93LmRldnRvb2xzRm9ybWF0dGVycyA9IFtmb3JtYXR0ZXJdO1xyXG4gICAgfVxyXG59XG5cbmZ1bmN0aW9uIHdpdGhNZW1vKG1lbW8sIHJlbmRlciwgY2FjaGUsIGluZGV4KSB7XHJcbiAgICBjb25zdCBjYWNoZWQgPSBjYWNoZVtpbmRleF07XHJcbiAgICBpZiAoY2FjaGVkICYmIGlzTWVtb1NhbWUoY2FjaGVkLCBtZW1vKSkge1xyXG4gICAgICAgIHJldHVybiBjYWNoZWQ7XHJcbiAgICB9XHJcbiAgICBjb25zdCByZXQgPSByZW5kZXIoKTtcclxuICAgIC8vIHNoYWxsb3cgY2xvbmVcclxuICAgIHJldC5tZW1vID0gbWVtby5zbGljZSgpO1xyXG4gICAgcmV0dXJuIChjYWNoZVtpbmRleF0gPSByZXQpO1xyXG59XHJcbmZ1bmN0aW9uIGlzTWVtb1NhbWUoY2FjaGVkLCBtZW1vKSB7XHJcbiAgICBjb25zdCBwcmV2ID0gY2FjaGVkLm1lbW87XHJcbiAgICBpZiAocHJldi5sZW5ndGggIT0gbWVtby5sZW5ndGgpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZXYubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoaGFzQ2hhbmdlZChwcmV2W2ldLCBtZW1vW2ldKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gbWFrZSBzdXJlIHRvIGxldCBwYXJlbnQgYmxvY2sgdHJhY2sgaXQgd2hlbiByZXR1cm5pbmcgY2FjaGVkXHJcbiAgICBpZiAoaXNCbG9ja1RyZWVFbmFibGVkID4gMCAmJiBjdXJyZW50QmxvY2spIHtcclxuICAgICAgICBjdXJyZW50QmxvY2sucHVzaChjYWNoZWQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbn1cblxuLy8gQ29yZSBBUEkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbmNvbnN0IHZlcnNpb24gPSBcIjMuMi4zOFwiO1xyXG5jb25zdCBfc3NyVXRpbHMgPSB7XHJcbiAgICBjcmVhdGVDb21wb25lbnRJbnN0YW5jZSxcclxuICAgIHNldHVwQ29tcG9uZW50LFxyXG4gICAgcmVuZGVyQ29tcG9uZW50Um9vdCxcclxuICAgIHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSxcclxuICAgIGlzVk5vZGUsXHJcbiAgICBub3JtYWxpemVWTm9kZVxyXG59O1xyXG4vKipcclxuICogU1NSIHV0aWxzIGZvciBcXEB2dWUvc2VydmVyLXJlbmRlcmVyLiBPbmx5IGV4cG9zZWQgaW4gc3NyLXBvc3NpYmxlIGJ1aWxkcy5cclxuICogQGludGVybmFsXHJcbiAqL1xyXG5jb25zdCBzc3JVdGlscyA9IChfc3NyVXRpbHMgKTtcclxuLyoqXHJcbiAqIEBpbnRlcm5hbCBvbmx5IGV4cG9zZWQgaW4gY29tcGF0IGJ1aWxkc1xyXG4gKi9cclxuY29uc3QgcmVzb2x2ZUZpbHRlciA9IG51bGw7XHJcbi8qKlxyXG4gKiBAaW50ZXJuYWwgb25seSBleHBvc2VkIGluIGNvbXBhdCBidWlsZHMuXHJcbiAqL1xyXG5jb25zdCBjb21wYXRVdGlscyA9IChudWxsKTtcblxuZXhwb3J0IHsgQmFzZVRyYW5zaXRpb24sIENvbW1lbnQsIEZyYWdtZW50LCBLZWVwQWxpdmUsIFN0YXRpYywgU3VzcGVuc2UsIFRlbGVwb3J0LCBUZXh0LCBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZywgY2FsbFdpdGhFcnJvckhhbmRsaW5nLCBjbG9uZVZOb2RlLCBjb21wYXRVdGlscywgY29tcHV0ZWQsIGNyZWF0ZUJsb2NrLCBjcmVhdGVDb21tZW50Vk5vZGUsIGNyZWF0ZUVsZW1lbnRCbG9jaywgY3JlYXRlQmFzZVZOb2RlIGFzIGNyZWF0ZUVsZW1lbnRWTm9kZSwgY3JlYXRlSHlkcmF0aW9uUmVuZGVyZXIsIGNyZWF0ZVByb3BzUmVzdFByb3h5LCBjcmVhdGVSZW5kZXJlciwgY3JlYXRlU2xvdHMsIGNyZWF0ZVN0YXRpY1ZOb2RlLCBjcmVhdGVUZXh0Vk5vZGUsIGNyZWF0ZVZOb2RlLCBkZWZpbmVBc3luY0NvbXBvbmVudCwgZGVmaW5lQ29tcG9uZW50LCBkZWZpbmVFbWl0cywgZGVmaW5lRXhwb3NlLCBkZWZpbmVQcm9wcywgZGV2dG9vbHMsIGdldEN1cnJlbnRJbnN0YW5jZSwgZ2V0VHJhbnNpdGlvblJhd0NoaWxkcmVuLCBndWFyZFJlYWN0aXZlUHJvcHMsIGgsIGhhbmRsZUVycm9yLCBpbml0Q3VzdG9tRm9ybWF0dGVyLCBpbmplY3QsIGlzTWVtb1NhbWUsIGlzUnVudGltZU9ubHksIGlzVk5vZGUsIG1lcmdlRGVmYXVsdHMsIG1lcmdlUHJvcHMsIG5leHRUaWNrLCBvbkFjdGl2YXRlZCwgb25CZWZvcmVNb3VudCwgb25CZWZvcmVVbm1vdW50LCBvbkJlZm9yZVVwZGF0ZSwgb25EZWFjdGl2YXRlZCwgb25FcnJvckNhcHR1cmVkLCBvbk1vdW50ZWQsIG9uUmVuZGVyVHJhY2tlZCwgb25SZW5kZXJUcmlnZ2VyZWQsIG9uU2VydmVyUHJlZmV0Y2gsIG9uVW5tb3VudGVkLCBvblVwZGF0ZWQsIG9wZW5CbG9jaywgcG9wU2NvcGVJZCwgcHJvdmlkZSwgcHVzaFNjb3BlSWQsIHF1ZXVlUG9zdEZsdXNoQ2IsIHJlZ2lzdGVyUnVudGltZUNvbXBpbGVyLCByZW5kZXJMaXN0LCByZW5kZXJTbG90LCByZXNvbHZlQ29tcG9uZW50LCByZXNvbHZlRGlyZWN0aXZlLCByZXNvbHZlRHluYW1pY0NvbXBvbmVudCwgcmVzb2x2ZUZpbHRlciwgcmVzb2x2ZVRyYW5zaXRpb25Ib29rcywgc2V0QmxvY2tUcmFja2luZywgc2V0RGV2dG9vbHNIb29rLCBzZXRUcmFuc2l0aW9uSG9va3MsIHNzckNvbnRleHRLZXksIHNzclV0aWxzLCB0b0hhbmRsZXJzLCB0cmFuc2Zvcm1WTm9kZUFyZ3MsIHVzZUF0dHJzLCB1c2VTU1JDb250ZXh0LCB1c2VTbG90cywgdXNlVHJhbnNpdGlvblN0YXRlLCB2ZXJzaW9uLCB3YXJuLCB3YXRjaCwgd2F0Y2hFZmZlY3QsIHdhdGNoUG9zdEVmZmVjdCwgd2F0Y2hTeW5jRWZmZWN0LCB3aXRoQXN5bmNDb250ZXh0LCB3aXRoQ3R4LCB3aXRoRGVmYXVsdHMsIHdpdGhEaXJlY3RpdmVzLCB3aXRoTWVtbywgd2l0aFNjb3BlSWQgfTtcbiIsImltcG9ydCB7IGNhbWVsaXplLCB3YXJuLCBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZywgZGVmaW5lQ29tcG9uZW50LCBuZXh0VGljaywgY3JlYXRlVk5vZGUsIGdldEN1cnJlbnRJbnN0YW5jZSwgd2F0Y2hQb3N0RWZmZWN0LCBvbk1vdW50ZWQsIG9uVW5tb3VudGVkLCBGcmFnbWVudCwgU3RhdGljLCBoLCBCYXNlVHJhbnNpdGlvbiwgdXNlVHJhbnNpdGlvblN0YXRlLCBvblVwZGF0ZWQsIHRvUmF3LCBnZXRUcmFuc2l0aW9uUmF3Q2hpbGRyZW4sIHNldFRyYW5zaXRpb25Ib29rcywgcmVzb2x2ZVRyYW5zaXRpb25Ib29rcywgY3JlYXRlUmVuZGVyZXIsIGlzUnVudGltZU9ubHksIGNyZWF0ZUh5ZHJhdGlvblJlbmRlcmVyIH0gZnJvbSAnQHZ1ZS9ydW50aW1lLWNvcmUnO1xuZXhwb3J0ICogZnJvbSAnQHZ1ZS9ydW50aW1lLWNvcmUnO1xuaW1wb3J0IHsgaXNTdHJpbmcsIGlzQXJyYXksIGh5cGhlbmF0ZSwgY2FwaXRhbGl6ZSwgaXNTcGVjaWFsQm9vbGVhbkF0dHIsIGluY2x1ZGVCb29sZWFuQXR0ciwgaXNPbiwgaXNNb2RlbExpc3RlbmVyLCBpc0Z1bmN0aW9uLCB0b051bWJlciwgY2FtZWxpemUgYXMgY2FtZWxpemUkMSwgZXh0ZW5kLCBFTVBUWV9PQkosIGlzT2JqZWN0LCBpbnZva2VBcnJheUZucywgbG9vc2VJbmRleE9mLCBpc1NldCwgbG9vc2VFcXVhbCwgaXNIVE1MVGFnLCBpc1NWR1RhZyB9IGZyb20gJ0B2dWUvc2hhcmVkJztcblxuY29uc3Qgc3ZnTlMgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xyXG5jb25zdCBkb2MgPSAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyA/IGRvY3VtZW50IDogbnVsbCk7XHJcbmNvbnN0IHRlbXBsYXRlQ29udGFpbmVyID0gZG9jICYmIC8qI19fUFVSRV9fKi8gZG9jLmNyZWF0ZUVsZW1lbnQoJ3RlbXBsYXRlJyk7XHJcbmNvbnN0IG5vZGVPcHMgPSB7XHJcbiAgICBpbnNlcnQ6IChjaGlsZCwgcGFyZW50LCBhbmNob3IpID0+IHtcclxuICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGNoaWxkLCBhbmNob3IgfHwgbnVsbCk7XHJcbiAgICB9LFxyXG4gICAgcmVtb3ZlOiBjaGlsZCA9PiB7XHJcbiAgICAgICAgY29uc3QgcGFyZW50ID0gY2hpbGQucGFyZW50Tm9kZTtcclxuICAgICAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgICAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChjaGlsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIGNyZWF0ZUVsZW1lbnQ6ICh0YWcsIGlzU1ZHLCBpcywgcHJvcHMpID0+IHtcclxuICAgICAgICBjb25zdCBlbCA9IGlzU1ZHXHJcbiAgICAgICAgICAgID8gZG9jLmNyZWF0ZUVsZW1lbnROUyhzdmdOUywgdGFnKVxyXG4gICAgICAgICAgICA6IGRvYy5jcmVhdGVFbGVtZW50KHRhZywgaXMgPyB7IGlzIH0gOiB1bmRlZmluZWQpO1xyXG4gICAgICAgIGlmICh0YWcgPT09ICdzZWxlY3QnICYmIHByb3BzICYmIHByb3BzLm11bHRpcGxlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdtdWx0aXBsZScsIHByb3BzLm11bHRpcGxlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGVsO1xyXG4gICAgfSxcclxuICAgIGNyZWF0ZVRleHQ6IHRleHQgPT4gZG9jLmNyZWF0ZVRleHROb2RlKHRleHQpLFxyXG4gICAgY3JlYXRlQ29tbWVudDogdGV4dCA9PiBkb2MuY3JlYXRlQ29tbWVudCh0ZXh0KSxcclxuICAgIHNldFRleHQ6IChub2RlLCB0ZXh0KSA9PiB7XHJcbiAgICAgICAgbm9kZS5ub2RlVmFsdWUgPSB0ZXh0O1xyXG4gICAgfSxcclxuICAgIHNldEVsZW1lbnRUZXh0OiAoZWwsIHRleHQpID0+IHtcclxuICAgICAgICBlbC50ZXh0Q29udGVudCA9IHRleHQ7XHJcbiAgICB9LFxyXG4gICAgcGFyZW50Tm9kZTogbm9kZSA9PiBub2RlLnBhcmVudE5vZGUsXHJcbiAgICBuZXh0U2libGluZzogbm9kZSA9PiBub2RlLm5leHRTaWJsaW5nLFxyXG4gICAgcXVlcnlTZWxlY3Rvcjogc2VsZWN0b3IgPT4gZG9jLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpLFxyXG4gICAgc2V0U2NvcGVJZChlbCwgaWQpIHtcclxuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoaWQsICcnKTtcclxuICAgIH0sXHJcbiAgICBjbG9uZU5vZGUoZWwpIHtcclxuICAgICAgICBjb25zdCBjbG9uZWQgPSBlbC5jbG9uZU5vZGUodHJ1ZSk7XHJcbiAgICAgICAgLy8gIzMwNzJcclxuICAgICAgICAvLyAtIGluIGBwYXRjaERPTVByb3BgLCB3ZSBzdG9yZSB0aGUgYWN0dWFsIHZhbHVlIGluIHRoZSBgZWwuX3ZhbHVlYCBwcm9wZXJ0eS5cclxuICAgICAgICAvLyAtIG5vcm1hbGx5LCBlbGVtZW50cyB1c2luZyBgOnZhbHVlYCBiaW5kaW5ncyB3aWxsIG5vdCBiZSBob2lzdGVkLCBidXQgaWZcclxuICAgICAgICAvLyAgIHRoZSBib3VuZCB2YWx1ZSBpcyBhIGNvbnN0YW50LCBlLmcuIGA6dmFsdWU9XCJ0cnVlXCJgIC0gdGhleSBkbyBnZXRcclxuICAgICAgICAvLyAgIGhvaXN0ZWQuXHJcbiAgICAgICAgLy8gLSBpbiBwcm9kdWN0aW9uLCBob2lzdGVkIG5vZGVzIGFyZSBjbG9uZWQgd2hlbiBzdWJzZXF1ZW50IGluc2VydHMsIGJ1dFxyXG4gICAgICAgIC8vICAgY2xvbmVOb2RlKCkgZG9lcyBub3QgY29weSB0aGUgY3VzdG9tIHByb3BlcnR5IHdlIGF0dGFjaGVkLlxyXG4gICAgICAgIC8vIC0gVGhpcyBtYXkgbmVlZCB0byBhY2NvdW50IGZvciBvdGhlciBjdXN0b20gRE9NIHByb3BlcnRpZXMgd2UgYXR0YWNoIHRvXHJcbiAgICAgICAgLy8gICBlbGVtZW50cyBpbiBhZGRpdGlvbiB0byBgX3ZhbHVlYCBpbiB0aGUgZnV0dXJlLlxyXG4gICAgICAgIGlmIChgX3ZhbHVlYCBpbiBlbCkge1xyXG4gICAgICAgICAgICBjbG9uZWQuX3ZhbHVlID0gZWwuX3ZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY2xvbmVkO1xyXG4gICAgfSxcclxuICAgIC8vIF9fVU5TQUZFX19cclxuICAgIC8vIFJlYXNvbjogaW5uZXJIVE1MLlxyXG4gICAgLy8gU3RhdGljIGNvbnRlbnQgaGVyZSBjYW4gb25seSBjb21lIGZyb20gY29tcGlsZWQgdGVtcGxhdGVzLlxyXG4gICAgLy8gQXMgbG9uZyBhcyB0aGUgdXNlciBvbmx5IHVzZXMgdHJ1c3RlZCB0ZW1wbGF0ZXMsIHRoaXMgaXMgc2FmZS5cclxuICAgIGluc2VydFN0YXRpY0NvbnRlbnQoY29udGVudCwgcGFyZW50LCBhbmNob3IsIGlzU1ZHLCBzdGFydCwgZW5kKSB7XHJcbiAgICAgICAgLy8gPHBhcmVudD4gYmVmb3JlIHwgZmlyc3QgLi4uIGxhc3QgfCBhbmNob3IgPC9wYXJlbnQ+XHJcbiAgICAgICAgY29uc3QgYmVmb3JlID0gYW5jaG9yID8gYW5jaG9yLnByZXZpb3VzU2libGluZyA6IHBhcmVudC5sYXN0Q2hpbGQ7XHJcbiAgICAgICAgLy8gIzUzMDggY2FuIG9ubHkgdGFrZSBjYWNoZWQgcGF0aCBpZjpcclxuICAgICAgICAvLyAtIGhhcyBhIHNpbmdsZSByb290IG5vZGVcclxuICAgICAgICAvLyAtIG5leHRTaWJsaW5nIGluZm8gaXMgc3RpbGwgYXZhaWxhYmxlXHJcbiAgICAgICAgaWYgKHN0YXJ0ICYmIChzdGFydCA9PT0gZW5kIHx8IHN0YXJ0Lm5leHRTaWJsaW5nKSkge1xyXG4gICAgICAgICAgICAvLyBjYWNoZWRcclxuICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcclxuICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoc3RhcnQuY2xvbmVOb2RlKHRydWUpLCBhbmNob3IpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID09PSBlbmQgfHwgIShzdGFydCA9IHN0YXJ0Lm5leHRTaWJsaW5nKSlcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gZnJlc2ggaW5zZXJ0XHJcbiAgICAgICAgICAgIHRlbXBsYXRlQ29udGFpbmVyLmlubmVySFRNTCA9IGlzU1ZHID8gYDxzdmc+JHtjb250ZW50fTwvc3ZnPmAgOiBjb250ZW50O1xyXG4gICAgICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IHRlbXBsYXRlQ29udGFpbmVyLmNvbnRlbnQ7XHJcbiAgICAgICAgICAgIGlmIChpc1NWRykge1xyXG4gICAgICAgICAgICAgICAgLy8gcmVtb3ZlIG91dGVyIHN2ZyB3cmFwcGVyXHJcbiAgICAgICAgICAgICAgICBjb25zdCB3cmFwcGVyID0gdGVtcGxhdGUuZmlyc3RDaGlsZDtcclxuICAgICAgICAgICAgICAgIHdoaWxlICh3cmFwcGVyLmZpcnN0Q2hpbGQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5hcHBlbmRDaGlsZCh3cmFwcGVyLmZpcnN0Q2hpbGQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUucmVtb3ZlQ2hpbGQod3JhcHBlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZSh0ZW1wbGF0ZSwgYW5jaG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgLy8gZmlyc3RcclxuICAgICAgICAgICAgYmVmb3JlID8gYmVmb3JlLm5leHRTaWJsaW5nIDogcGFyZW50LmZpcnN0Q2hpbGQsXHJcbiAgICAgICAgICAgIC8vIGxhc3RcclxuICAgICAgICAgICAgYW5jaG9yID8gYW5jaG9yLnByZXZpb3VzU2libGluZyA6IHBhcmVudC5sYXN0Q2hpbGRcclxuICAgICAgICBdO1xyXG4gICAgfVxyXG59O1xuXG4vLyBjb21waWxlciBzaG91bGQgbm9ybWFsaXplIGNsYXNzICsgOmNsYXNzIGJpbmRpbmdzIG9uIHRoZSBzYW1lIGVsZW1lbnRcclxuLy8gaW50byBhIHNpbmdsZSBiaW5kaW5nIFsnc3RhdGljQ2xhc3MnLCBkeW5hbWljXVxyXG5mdW5jdGlvbiBwYXRjaENsYXNzKGVsLCB2YWx1ZSwgaXNTVkcpIHtcclxuICAgIC8vIGRpcmVjdGx5IHNldHRpbmcgY2xhc3NOYW1lIHNob3VsZCBiZSBmYXN0ZXIgdGhhbiBzZXRBdHRyaWJ1dGUgaW4gdGhlb3J5XHJcbiAgICAvLyBpZiB0aGlzIGlzIGFuIGVsZW1lbnQgZHVyaW5nIGEgdHJhbnNpdGlvbiwgdGFrZSB0aGUgdGVtcG9yYXJ5IHRyYW5zaXRpb25cclxuICAgIC8vIGNsYXNzZXMgaW50byBhY2NvdW50LlxyXG4gICAgY29uc3QgdHJhbnNpdGlvbkNsYXNzZXMgPSBlbC5fdnRjO1xyXG4gICAgaWYgKHRyYW5zaXRpb25DbGFzc2VzKSB7XHJcbiAgICAgICAgdmFsdWUgPSAodmFsdWUgPyBbdmFsdWUsIC4uLnRyYW5zaXRpb25DbGFzc2VzXSA6IFsuLi50cmFuc2l0aW9uQ2xhc3Nlc10pLmpvaW4oJyAnKTtcclxuICAgIH1cclxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKCdjbGFzcycpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNTVkcpIHtcclxuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgdmFsdWUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZWwuY2xhc3NOYW1lID0gdmFsdWU7XHJcbiAgICB9XHJcbn1cblxuZnVuY3Rpb24gcGF0Y2hTdHlsZShlbCwgcHJldiwgbmV4dCkge1xyXG4gICAgY29uc3Qgc3R5bGUgPSBlbC5zdHlsZTtcclxuICAgIGNvbnN0IGlzQ3NzU3RyaW5nID0gaXNTdHJpbmcobmV4dCk7XHJcbiAgICBpZiAobmV4dCAmJiAhaXNDc3NTdHJpbmcpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBuZXh0KSB7XHJcbiAgICAgICAgICAgIHNldFN0eWxlKHN0eWxlLCBrZXksIG5leHRba2V5XSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwcmV2ICYmICFpc1N0cmluZyhwcmV2KSkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBwcmV2KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAobmV4dFtrZXldID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBzZXRTdHlsZShzdHlsZSwga2V5LCAnJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBjdXJyZW50RGlzcGxheSA9IHN0eWxlLmRpc3BsYXk7XHJcbiAgICAgICAgaWYgKGlzQ3NzU3RyaW5nKSB7XHJcbiAgICAgICAgICAgIGlmIChwcmV2ICE9PSBuZXh0KSB7XHJcbiAgICAgICAgICAgICAgICBzdHlsZS5jc3NUZXh0ID0gbmV4dDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChwcmV2KSB7XHJcbiAgICAgICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgnc3R5bGUnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaW5kaWNhdGVzIHRoYXQgdGhlIGBkaXNwbGF5YCBvZiB0aGUgZWxlbWVudCBpcyBjb250cm9sbGVkIGJ5IGB2LXNob3dgLFxyXG4gICAgICAgIC8vIHNvIHdlIGFsd2F5cyBrZWVwIHRoZSBjdXJyZW50IGBkaXNwbGF5YCB2YWx1ZSByZWdhcmRsZXNzIG9mIHRoZSBgc3R5bGVgXHJcbiAgICAgICAgLy8gdmFsdWUsIHRodXMgaGFuZGluZyBvdmVyIGNvbnRyb2wgdG8gYHYtc2hvd2AuXHJcbiAgICAgICAgaWYgKCdfdm9kJyBpbiBlbCkge1xyXG4gICAgICAgICAgICBzdHlsZS5kaXNwbGF5ID0gY3VycmVudERpc3BsYXk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmNvbnN0IGltcG9ydGFudFJFID0gL1xccyohaW1wb3J0YW50JC87XHJcbmZ1bmN0aW9uIHNldFN0eWxlKHN0eWxlLCBuYW1lLCB2YWwpIHtcclxuICAgIGlmIChpc0FycmF5KHZhbCkpIHtcclxuICAgICAgICB2YWwuZm9yRWFjaCh2ID0+IHNldFN0eWxlKHN0eWxlLCBuYW1lLCB2KSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBpZiAodmFsID09IG51bGwpXHJcbiAgICAgICAgICAgIHZhbCA9ICcnO1xyXG4gICAgICAgIGlmIChuYW1lLnN0YXJ0c1dpdGgoJy0tJykpIHtcclxuICAgICAgICAgICAgLy8gY3VzdG9tIHByb3BlcnR5IGRlZmluaXRpb25cclxuICAgICAgICAgICAgc3R5bGUuc2V0UHJvcGVydHkobmFtZSwgdmFsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByZWZpeGVkID0gYXV0b1ByZWZpeChzdHlsZSwgbmFtZSk7XHJcbiAgICAgICAgICAgIGlmIChpbXBvcnRhbnRSRS50ZXN0KHZhbCkpIHtcclxuICAgICAgICAgICAgICAgIC8vICFpbXBvcnRhbnRcclxuICAgICAgICAgICAgICAgIHN0eWxlLnNldFByb3BlcnR5KGh5cGhlbmF0ZShwcmVmaXhlZCksIHZhbC5yZXBsYWNlKGltcG9ydGFudFJFLCAnJyksICdpbXBvcnRhbnQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHN0eWxlW3ByZWZpeGVkXSA9IHZhbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5jb25zdCBwcmVmaXhlcyA9IFsnV2Via2l0JywgJ01veicsICdtcyddO1xyXG5jb25zdCBwcmVmaXhDYWNoZSA9IHt9O1xyXG5mdW5jdGlvbiBhdXRvUHJlZml4KHN0eWxlLCByYXdOYW1lKSB7XHJcbiAgICBjb25zdCBjYWNoZWQgPSBwcmVmaXhDYWNoZVtyYXdOYW1lXTtcclxuICAgIGlmIChjYWNoZWQpIHtcclxuICAgICAgICByZXR1cm4gY2FjaGVkO1xyXG4gICAgfVxyXG4gICAgbGV0IG5hbWUgPSBjYW1lbGl6ZShyYXdOYW1lKTtcclxuICAgIGlmIChuYW1lICE9PSAnZmlsdGVyJyAmJiBuYW1lIGluIHN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIChwcmVmaXhDYWNoZVtyYXdOYW1lXSA9IG5hbWUpO1xyXG4gICAgfVxyXG4gICAgbmFtZSA9IGNhcGl0YWxpemUobmFtZSk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZWZpeGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgcHJlZml4ZWQgPSBwcmVmaXhlc1tpXSArIG5hbWU7XHJcbiAgICAgICAgaWYgKHByZWZpeGVkIGluIHN0eWxlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAocHJlZml4Q2FjaGVbcmF3TmFtZV0gPSBwcmVmaXhlZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJhd05hbWU7XHJcbn1cblxuY29uc3QgeGxpbmtOUyA9ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJztcclxuZnVuY3Rpb24gcGF0Y2hBdHRyKGVsLCBrZXksIHZhbHVlLCBpc1NWRywgaW5zdGFuY2UpIHtcclxuICAgIGlmIChpc1NWRyAmJiBrZXkuc3RhcnRzV2l0aCgneGxpbms6JykpIHtcclxuICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGVOUyh4bGlua05TLCBrZXkuc2xpY2UoNiwga2V5Lmxlbmd0aCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlTlMoeGxpbmtOUywga2V5LCB2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gbm90ZSB3ZSBhcmUgb25seSBjaGVja2luZyBib29sZWFuIGF0dHJpYnV0ZXMgdGhhdCBkb24ndCBoYXZlIGFcclxuICAgICAgICAvLyBjb3JyZXNwb25kaW5nIGRvbSBwcm9wIG9mIHRoZSBzYW1lIG5hbWUgaGVyZS5cclxuICAgICAgICBjb25zdCBpc0Jvb2xlYW4gPSBpc1NwZWNpYWxCb29sZWFuQXR0cihrZXkpO1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IChpc0Jvb2xlYW4gJiYgIWluY2x1ZGVCb29sZWFuQXR0cih2YWx1ZSkpKSB7XHJcbiAgICAgICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKGtleSwgaXNCb29sZWFuID8gJycgOiB2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XG5cbi8vIF9fVU5TQUZFX19cclxuLy8gZnVuY3Rpb25zLiBUaGUgdXNlciBpcyByZXNwb25zaWJsZSBmb3IgdXNpbmcgdGhlbSB3aXRoIG9ubHkgdHJ1c3RlZCBjb250ZW50LlxyXG5mdW5jdGlvbiBwYXRjaERPTVByb3AoZWwsIGtleSwgdmFsdWUsIFxyXG4vLyB0aGUgZm9sbG93aW5nIGFyZ3MgYXJlIHBhc3NlZCBvbmx5IGR1ZSB0byBwb3RlbnRpYWwgaW5uZXJIVE1ML3RleHRDb250ZW50XHJcbi8vIG92ZXJyaWRpbmcgZXhpc3RpbmcgVk5vZGVzLCBpbiB3aGljaCBjYXNlIHRoZSBvbGQgdHJlZSBtdXN0IGJlIHByb3Blcmx5XHJcbi8vIHVubW91bnRlZC5cclxucHJldkNoaWxkcmVuLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB1bm1vdW50Q2hpbGRyZW4pIHtcclxuICAgIGlmIChrZXkgPT09ICdpbm5lckhUTUwnIHx8IGtleSA9PT0gJ3RleHRDb250ZW50Jykge1xyXG4gICAgICAgIGlmIChwcmV2Q2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgdW5tb3VudENoaWxkcmVuKHByZXZDaGlsZHJlbiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsW2tleV0gPSB2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoa2V5ID09PSAndmFsdWUnICYmXHJcbiAgICAgICAgZWwudGFnTmFtZSAhPT0gJ1BST0dSRVNTJyAmJlxyXG4gICAgICAgIC8vIGN1c3RvbSBlbGVtZW50cyBtYXkgdXNlIF92YWx1ZSBpbnRlcm5hbGx5XHJcbiAgICAgICAgIWVsLnRhZ05hbWUuaW5jbHVkZXMoJy0nKSkge1xyXG4gICAgICAgIC8vIHN0b3JlIHZhbHVlIGFzIF92YWx1ZSBhcyB3ZWxsIHNpbmNlXHJcbiAgICAgICAgLy8gbm9uLXN0cmluZyB2YWx1ZXMgd2lsbCBiZSBzdHJpbmdpZmllZC5cclxuICAgICAgICBlbC5fdmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlO1xyXG4gICAgICAgIGlmIChlbC52YWx1ZSAhPT0gbmV3VmFsdWUgfHxcclxuICAgICAgICAgICAgLy8gIzQ5NTY6IGFsd2F5cyBzZXQgZm9yIE9QVElPTiBlbGVtZW50cyBiZWNhdXNlIGl0cyB2YWx1ZSBmYWxscyBiYWNrIHRvXHJcbiAgICAgICAgICAgIC8vIHRleHRDb250ZW50IGlmIG5vIHZhbHVlIGF0dHJpYnV0ZSBpcyBwcmVzZW50LiBBbmQgc2V0dGluZyAudmFsdWUgZm9yXHJcbiAgICAgICAgICAgIC8vIE9QVElPTiBoYXMgbm8gc2lkZSBlZmZlY3RcclxuICAgICAgICAgICAgZWwudGFnTmFtZSA9PT0gJ09QVElPTicpIHtcclxuICAgICAgICAgICAgZWwudmFsdWUgPSBuZXdWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKGtleSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBuZWVkUmVtb3ZlID0gZmFsc2U7XHJcbiAgICBpZiAodmFsdWUgPT09ICcnIHx8IHZhbHVlID09IG51bGwpIHtcclxuICAgICAgICBjb25zdCB0eXBlID0gdHlwZW9mIGVsW2tleV07XHJcbiAgICAgICAgaWYgKHR5cGUgPT09ICdib29sZWFuJykge1xyXG4gICAgICAgICAgICAvLyBlLmcuIDxzZWxlY3QgbXVsdGlwbGU+IGNvbXBpbGVzIHRvIHsgbXVsdGlwbGU6ICcnIH1cclxuICAgICAgICAgICAgdmFsdWUgPSBpbmNsdWRlQm9vbGVhbkF0dHIodmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSBudWxsICYmIHR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIC8vIGUuZy4gPGRpdiA6aWQ9XCJudWxsXCI+XHJcbiAgICAgICAgICAgIHZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgIG5lZWRSZW1vdmUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0eXBlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICAvLyBlLmcuIDxpbWcgOndpZHRoPVwibnVsbFwiPlxyXG4gICAgICAgICAgICAvLyB0aGUgdmFsdWUgb2Ygc29tZSBJREwgYXR0ciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwLCBlLmcuIGlucHV0LnNpemUgPSAwIC0+IGVycm9yXHJcbiAgICAgICAgICAgIHZhbHVlID0gMDtcclxuICAgICAgICAgICAgbmVlZFJlbW92ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gc29tZSBwcm9wZXJ0aWVzIHBlcmZvcm0gdmFsdWUgdmFsaWRhdGlvbiBhbmQgdGhyb3csXHJcbiAgICAvLyBzb21lIHByb3BlcnRpZXMgaGFzIGdldHRlciwgbm8gc2V0dGVyLCB3aWxsIGVycm9yIGluICd1c2Ugc3RyaWN0J1xyXG4gICAgLy8gZWcuIDxzZWxlY3QgOnR5cGU9XCJudWxsXCI+PC9zZWxlY3Q+IDxzZWxlY3QgOndpbGxWYWxpZGF0ZT1cIm51bGxcIj48L3NlbGVjdD5cclxuICAgIHRyeSB7XHJcbiAgICAgICAgZWxba2V5XSA9IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYEZhaWxlZCBzZXR0aW5nIHByb3AgXCIke2tleX1cIiBvbiA8JHtlbC50YWdOYW1lLnRvTG93ZXJDYXNlKCl9PjogYCArXHJcbiAgICAgICAgICAgICAgICBgdmFsdWUgJHt2YWx1ZX0gaXMgaW52YWxpZC5gLCBlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBuZWVkUmVtb3ZlICYmIGVsLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xyXG59XG5cbi8vIEFzeW5jIGVkZ2UgY2FzZSBmaXggcmVxdWlyZXMgc3RvcmluZyBhbiBldmVudCBsaXN0ZW5lcidzIGF0dGFjaCB0aW1lc3RhbXAuXHJcbmNvbnN0IFtfZ2V0Tm93LCBza2lwVGltZXN0YW1wQ2hlY2tdID0gLyojX19QVVJFX18qLyAoKCkgPT4ge1xyXG4gICAgbGV0IF9nZXROb3cgPSBEYXRlLm5vdztcclxuICAgIGxldCBza2lwVGltZXN0YW1wQ2hlY2sgPSBmYWxzZTtcclxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgIC8vIERldGVybWluZSB3aGF0IGV2ZW50IHRpbWVzdGFtcCB0aGUgYnJvd3NlciBpcyB1c2luZy4gQW5ub3lpbmdseSwgdGhlXHJcbiAgICAgICAgLy8gdGltZXN0YW1wIGNhbiBlaXRoZXIgYmUgaGktcmVzIChyZWxhdGl2ZSB0byBwYWdlIGxvYWQpIG9yIGxvdy1yZXNcclxuICAgICAgICAvLyAocmVsYXRpdmUgdG8gVU5JWCBlcG9jaCksIHNvIGluIG9yZGVyIHRvIGNvbXBhcmUgdGltZSB3ZSBoYXZlIHRvIHVzZSB0aGVcclxuICAgICAgICAvLyBzYW1lIHRpbWVzdGFtcCB0eXBlIHdoZW4gc2F2aW5nIHRoZSBmbHVzaCB0aW1lc3RhbXAuXHJcbiAgICAgICAgaWYgKERhdGUubm93KCkgPiBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKS50aW1lU3RhbXApIHtcclxuICAgICAgICAgICAgLy8gaWYgdGhlIGxvdy1yZXMgdGltZXN0YW1wIHdoaWNoIGlzIGJpZ2dlciB0aGFuIHRoZSBldmVudCB0aW1lc3RhbXBcclxuICAgICAgICAgICAgLy8gKHdoaWNoIGlzIGV2YWx1YXRlZCBBRlRFUikgaXQgbWVhbnMgdGhlIGV2ZW50IGlzIHVzaW5nIGEgaGktcmVzIHRpbWVzdGFtcCxcclxuICAgICAgICAgICAgLy8gYW5kIHdlIG5lZWQgdG8gdXNlIHRoZSBoaS1yZXMgdmVyc2lvbiBmb3IgZXZlbnQgbGlzdGVuZXJzIGFzIHdlbGwuXHJcbiAgICAgICAgICAgIF9nZXROb3cgPSBwZXJmb3JtYW5jZS5ub3cuYmluZChwZXJmb3JtYW5jZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vICMzNDg1OiBGaXJlZm94IDw9IDUzIGhhcyBpbmNvcnJlY3QgRXZlbnQudGltZVN0YW1wIGltcGxlbWVudGF0aW9uXHJcbiAgICAgICAgLy8gYW5kIGRvZXMgbm90IGZpcmUgbWljcm90YXNrcyBpbiBiZXR3ZWVuIGV2ZW50IHByb3BhZ2F0aW9uLCBzbyBzYWZlIHRvIGV4Y2x1ZGUuXHJcbiAgICAgICAgY29uc3QgZmZNYXRjaCA9IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL2ZpcmVmb3hcXC8oXFxkKykvaSk7XHJcbiAgICAgICAgc2tpcFRpbWVzdGFtcENoZWNrID0gISEoZmZNYXRjaCAmJiBOdW1iZXIoZmZNYXRjaFsxXSkgPD0gNTMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtfZ2V0Tm93LCBza2lwVGltZXN0YW1wQ2hlY2tdO1xyXG59KSgpO1xyXG4vLyBUbyBhdm9pZCB0aGUgb3ZlcmhlYWQgb2YgcmVwZWF0ZWRseSBjYWxsaW5nIHBlcmZvcm1hbmNlLm5vdygpLCB3ZSBjYWNoZVxyXG4vLyBhbmQgdXNlIHRoZSBzYW1lIHRpbWVzdGFtcCBmb3IgYWxsIGV2ZW50IGxpc3RlbmVycyBhdHRhY2hlZCBpbiB0aGUgc2FtZSB0aWNrLlxyXG5sZXQgY2FjaGVkTm93ID0gMDtcclxuY29uc3QgcCA9IC8qI19fUFVSRV9fKi8gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbmNvbnN0IHJlc2V0ID0gKCkgPT4ge1xyXG4gICAgY2FjaGVkTm93ID0gMDtcclxufTtcclxuY29uc3QgZ2V0Tm93ID0gKCkgPT4gY2FjaGVkTm93IHx8IChwLnRoZW4ocmVzZXQpLCAoY2FjaGVkTm93ID0gX2dldE5vdygpKSk7XHJcbmZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIoZWwsIGV2ZW50LCBoYW5kbGVyLCBvcHRpb25zKSB7XHJcbiAgICBlbC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyLCBvcHRpb25zKTtcclxufVxyXG5mdW5jdGlvbiByZW1vdmVFdmVudExpc3RlbmVyKGVsLCBldmVudCwgaGFuZGxlciwgb3B0aW9ucykge1xyXG4gICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgb3B0aW9ucyk7XHJcbn1cclxuZnVuY3Rpb24gcGF0Y2hFdmVudChlbCwgcmF3TmFtZSwgcHJldlZhbHVlLCBuZXh0VmFsdWUsIGluc3RhbmNlID0gbnVsbCkge1xyXG4gICAgLy8gdmVpID0gdnVlIGV2ZW50IGludm9rZXJzXHJcbiAgICBjb25zdCBpbnZva2VycyA9IGVsLl92ZWkgfHwgKGVsLl92ZWkgPSB7fSk7XHJcbiAgICBjb25zdCBleGlzdGluZ0ludm9rZXIgPSBpbnZva2Vyc1tyYXdOYW1lXTtcclxuICAgIGlmIChuZXh0VmFsdWUgJiYgZXhpc3RpbmdJbnZva2VyKSB7XHJcbiAgICAgICAgLy8gcGF0Y2hcclxuICAgICAgICBleGlzdGluZ0ludm9rZXIudmFsdWUgPSBuZXh0VmFsdWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBbbmFtZSwgb3B0aW9uc10gPSBwYXJzZU5hbWUocmF3TmFtZSk7XHJcbiAgICAgICAgaWYgKG5leHRWYWx1ZSkge1xyXG4gICAgICAgICAgICAvLyBhZGRcclxuICAgICAgICAgICAgY29uc3QgaW52b2tlciA9IChpbnZva2Vyc1tyYXdOYW1lXSA9IGNyZWF0ZUludm9rZXIobmV4dFZhbHVlLCBpbnN0YW5jZSkpO1xyXG4gICAgICAgICAgICBhZGRFdmVudExpc3RlbmVyKGVsLCBuYW1lLCBpbnZva2VyLCBvcHRpb25zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZXhpc3RpbmdJbnZva2VyKSB7XHJcbiAgICAgICAgICAgIC8vIHJlbW92ZVxyXG4gICAgICAgICAgICByZW1vdmVFdmVudExpc3RlbmVyKGVsLCBuYW1lLCBleGlzdGluZ0ludm9rZXIsIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICBpbnZva2Vyc1tyYXdOYW1lXSA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuY29uc3Qgb3B0aW9uc01vZGlmaWVyUkUgPSAvKD86T25jZXxQYXNzaXZlfENhcHR1cmUpJC87XHJcbmZ1bmN0aW9uIHBhcnNlTmFtZShuYW1lKSB7XHJcbiAgICBsZXQgb3B0aW9ucztcclxuICAgIGlmIChvcHRpb25zTW9kaWZpZXJSRS50ZXN0KG5hbWUpKSB7XHJcbiAgICAgICAgb3B0aW9ucyA9IHt9O1xyXG4gICAgICAgIGxldCBtO1xyXG4gICAgICAgIHdoaWxlICgobSA9IG5hbWUubWF0Y2gob3B0aW9uc01vZGlmaWVyUkUpKSkge1xyXG4gICAgICAgICAgICBuYW1lID0gbmFtZS5zbGljZSgwLCBuYW1lLmxlbmd0aCAtIG1bMF0ubGVuZ3RoKTtcclxuICAgICAgICAgICAgb3B0aW9uc1ttWzBdLnRvTG93ZXJDYXNlKCldID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBldmVudCA9IG5hbWVbMl0gPT09ICc6JyA/IG5hbWUuc2xpY2UoMykgOiBoeXBoZW5hdGUobmFtZS5zbGljZSgyKSk7XHJcbiAgICByZXR1cm4gW2V2ZW50LCBvcHRpb25zXTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVJbnZva2VyKGluaXRpYWxWYWx1ZSwgaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IGludm9rZXIgPSAoZSkgPT4ge1xyXG4gICAgICAgIC8vIGFzeW5jIGVkZ2UgY2FzZSAjNjU2NjogaW5uZXIgY2xpY2sgZXZlbnQgdHJpZ2dlcnMgcGF0Y2gsIGV2ZW50IGhhbmRsZXJcclxuICAgICAgICAvLyBhdHRhY2hlZCB0byBvdXRlciBlbGVtZW50IGR1cmluZyBwYXRjaCwgYW5kIHRyaWdnZXJlZCBhZ2Fpbi4gVGhpc1xyXG4gICAgICAgIC8vIGhhcHBlbnMgYmVjYXVzZSBicm93c2VycyBmaXJlIG1pY3JvdGFzayB0aWNrcyBiZXR3ZWVuIGV2ZW50IHByb3BhZ2F0aW9uLlxyXG4gICAgICAgIC8vIHRoZSBzb2x1dGlvbiBpcyBzaW1wbGU6IHdlIHNhdmUgdGhlIHRpbWVzdGFtcCB3aGVuIGEgaGFuZGxlciBpcyBhdHRhY2hlZCxcclxuICAgICAgICAvLyBhbmQgdGhlIGhhbmRsZXIgd291bGQgb25seSBmaXJlIGlmIHRoZSBldmVudCBwYXNzZWQgdG8gaXQgd2FzIGZpcmVkXHJcbiAgICAgICAgLy8gQUZURVIgaXQgd2FzIGF0dGFjaGVkLlxyXG4gICAgICAgIGNvbnN0IHRpbWVTdGFtcCA9IGUudGltZVN0YW1wIHx8IF9nZXROb3coKTtcclxuICAgICAgICBpZiAoc2tpcFRpbWVzdGFtcENoZWNrIHx8IHRpbWVTdGFtcCA+PSBpbnZva2VyLmF0dGFjaGVkIC0gMSkge1xyXG4gICAgICAgICAgICBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhwYXRjaFN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbihlLCBpbnZva2VyLnZhbHVlKSwgaW5zdGFuY2UsIDUgLyogRXJyb3JDb2Rlcy5OQVRJVkVfRVZFTlRfSEFORExFUiAqLywgW2VdKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgaW52b2tlci52YWx1ZSA9IGluaXRpYWxWYWx1ZTtcclxuICAgIGludm9rZXIuYXR0YWNoZWQgPSBnZXROb3coKTtcclxuICAgIHJldHVybiBpbnZva2VyO1xyXG59XHJcbmZ1bmN0aW9uIHBhdGNoU3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKGUsIHZhbHVlKSB7XHJcbiAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICBjb25zdCBvcmlnaW5hbFN0b3AgPSBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjtcclxuICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiA9ICgpID0+IHtcclxuICAgICAgICAgICAgb3JpZ2luYWxTdG9wLmNhbGwoZSk7XHJcbiAgICAgICAgICAgIGUuX3N0b3BwZWQgPSB0cnVlO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlLm1hcChmbiA9PiAoZSkgPT4gIWUuX3N0b3BwZWQgJiYgZm4gJiYgZm4oZSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG59XG5cbmNvbnN0IG5hdGl2ZU9uUkUgPSAvXm9uW2Etel0vO1xyXG5jb25zdCBwYXRjaFByb3AgPSAoZWwsIGtleSwgcHJldlZhbHVlLCBuZXh0VmFsdWUsIGlzU1ZHID0gZmFsc2UsIHByZXZDaGlsZHJlbiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdW5tb3VudENoaWxkcmVuKSA9PiB7XHJcbiAgICBpZiAoa2V5ID09PSAnY2xhc3MnKSB7XHJcbiAgICAgICAgcGF0Y2hDbGFzcyhlbCwgbmV4dFZhbHVlLCBpc1NWRyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChrZXkgPT09ICdzdHlsZScpIHtcclxuICAgICAgICBwYXRjaFN0eWxlKGVsLCBwcmV2VmFsdWUsIG5leHRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc09uKGtleSkpIHtcclxuICAgICAgICAvLyBpZ25vcmUgdi1tb2RlbCBsaXN0ZW5lcnNcclxuICAgICAgICBpZiAoIWlzTW9kZWxMaXN0ZW5lcihrZXkpKSB7XHJcbiAgICAgICAgICAgIHBhdGNoRXZlbnQoZWwsIGtleSwgcHJldlZhbHVlLCBuZXh0VmFsdWUsIHBhcmVudENvbXBvbmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoa2V5WzBdID09PSAnLidcclxuICAgICAgICA/ICgoa2V5ID0ga2V5LnNsaWNlKDEpKSwgdHJ1ZSlcclxuICAgICAgICA6IGtleVswXSA9PT0gJ14nXHJcbiAgICAgICAgICAgID8gKChrZXkgPSBrZXkuc2xpY2UoMSkpLCBmYWxzZSlcclxuICAgICAgICAgICAgOiBzaG91bGRTZXRBc1Byb3AoZWwsIGtleSwgbmV4dFZhbHVlLCBpc1NWRykpIHtcclxuICAgICAgICBwYXRjaERPTVByb3AoZWwsIGtleSwgbmV4dFZhbHVlLCBwcmV2Q2hpbGRyZW4sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHVubW91bnRDaGlsZHJlbik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBzcGVjaWFsIGNhc2UgZm9yIDxpbnB1dCB2LW1vZGVsIHR5cGU9XCJjaGVja2JveFwiPiB3aXRoXHJcbiAgICAgICAgLy8gOnRydWUtdmFsdWUgJiA6ZmFsc2UtdmFsdWVcclxuICAgICAgICAvLyBzdG9yZSB2YWx1ZSBhcyBkb20gcHJvcGVydGllcyBzaW5jZSBub24tc3RyaW5nIHZhbHVlcyB3aWxsIGJlXHJcbiAgICAgICAgLy8gc3RyaW5naWZpZWQuXHJcbiAgICAgICAgaWYgKGtleSA9PT0gJ3RydWUtdmFsdWUnKSB7XHJcbiAgICAgICAgICAgIGVsLl90cnVlVmFsdWUgPSBuZXh0VmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGtleSA9PT0gJ2ZhbHNlLXZhbHVlJykge1xyXG4gICAgICAgICAgICBlbC5fZmFsc2VWYWx1ZSA9IG5leHRWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcGF0Y2hBdHRyKGVsLCBrZXksIG5leHRWYWx1ZSwgaXNTVkcpO1xyXG4gICAgfVxyXG59O1xyXG5mdW5jdGlvbiBzaG91bGRTZXRBc1Byb3AoZWwsIGtleSwgdmFsdWUsIGlzU1ZHKSB7XHJcbiAgICBpZiAoaXNTVkcpIHtcclxuICAgICAgICAvLyBtb3N0IGtleXMgbXVzdCBiZSBzZXQgYXMgYXR0cmlidXRlIG9uIHN2ZyBlbGVtZW50cyB0byB3b3JrXHJcbiAgICAgICAgLy8gLi4uZXhjZXB0IGlubmVySFRNTCAmIHRleHRDb250ZW50XHJcbiAgICAgICAgaWYgKGtleSA9PT0gJ2lubmVySFRNTCcgfHwga2V5ID09PSAndGV4dENvbnRlbnQnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBvciBuYXRpdmUgb25jbGljayB3aXRoIGZ1bmN0aW9uIHZhbHVlc1xyXG4gICAgICAgIGlmIChrZXkgaW4gZWwgJiYgbmF0aXZlT25SRS50ZXN0KGtleSkgJiYgaXNGdW5jdGlvbih2YWx1ZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIHRoZXNlIGFyZSBlbnVtZXJhdGVkIGF0dHJzLCBob3dldmVyIHRoZWlyIGNvcnJlc3BvbmRpbmcgRE9NIHByb3BlcnRpZXNcclxuICAgIC8vIGFyZSBhY3R1YWxseSBib29sZWFucyAtIHRoaXMgbGVhZHMgdG8gc2V0dGluZyBpdCB3aXRoIGEgc3RyaW5nIFwiZmFsc2VcIlxyXG4gICAgLy8gdmFsdWUgbGVhZGluZyBpdCB0byBiZSBjb2VyY2VkIHRvIGB0cnVlYCwgc28gd2UgbmVlZCB0byBhbHdheXMgdHJlYXRcclxuICAgIC8vIHRoZW0gYXMgYXR0cmlidXRlcy5cclxuICAgIC8vIE5vdGUgdGhhdCBgY29udGVudEVkaXRhYmxlYCBkb2Vzbid0IGhhdmUgdGhpcyBwcm9ibGVtOiBpdHMgRE9NXHJcbiAgICAvLyBwcm9wZXJ0eSBpcyBhbHNvIGVudW1lcmF0ZWQgc3RyaW5nIHZhbHVlcy5cclxuICAgIGlmIChrZXkgPT09ICdzcGVsbGNoZWNrJyB8fCBrZXkgPT09ICdkcmFnZ2FibGUnIHx8IGtleSA9PT0gJ3RyYW5zbGF0ZScpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyAjMTc4NywgIzI4NDAgZm9ybSBwcm9wZXJ0eSBvbiBmb3JtIGVsZW1lbnRzIGlzIHJlYWRvbmx5IGFuZCBtdXN0IGJlIHNldCBhc1xyXG4gICAgLy8gYXR0cmlidXRlLlxyXG4gICAgaWYgKGtleSA9PT0gJ2Zvcm0nKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gIzE1MjYgPGlucHV0IGxpc3Q+IG11c3QgYmUgc2V0IGFzIGF0dHJpYnV0ZVxyXG4gICAgaWYgKGtleSA9PT0gJ2xpc3QnICYmIGVsLnRhZ05hbWUgPT09ICdJTlBVVCcpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyAjMjc2NiA8dGV4dGFyZWEgdHlwZT4gbXVzdCBiZSBzZXQgYXMgYXR0cmlidXRlXHJcbiAgICBpZiAoa2V5ID09PSAndHlwZScgJiYgZWwudGFnTmFtZSA9PT0gJ1RFWFRBUkVBJykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIG5hdGl2ZSBvbmNsaWNrIHdpdGggc3RyaW5nIHZhbHVlLCBtdXN0IGJlIHNldCBhcyBhdHRyaWJ1dGVcclxuICAgIGlmIChuYXRpdmVPblJFLnRlc3Qoa2V5KSAmJiBpc1N0cmluZyh2YWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ga2V5IGluIGVsO1xyXG59XG5cbmZ1bmN0aW9uIGRlZmluZUN1c3RvbUVsZW1lbnQob3B0aW9ucywgaHlkcmF0ZSkge1xyXG4gICAgY29uc3QgQ29tcCA9IGRlZmluZUNvbXBvbmVudChvcHRpb25zKTtcclxuICAgIGNsYXNzIFZ1ZUN1c3RvbUVsZW1lbnQgZXh0ZW5kcyBWdWVFbGVtZW50IHtcclxuICAgICAgICBjb25zdHJ1Y3Rvcihpbml0aWFsUHJvcHMpIHtcclxuICAgICAgICAgICAgc3VwZXIoQ29tcCwgaW5pdGlhbFByb3BzLCBoeWRyYXRlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBWdWVDdXN0b21FbGVtZW50LmRlZiA9IENvbXA7XHJcbiAgICByZXR1cm4gVnVlQ3VzdG9tRWxlbWVudDtcclxufVxyXG5jb25zdCBkZWZpbmVTU1JDdXN0b21FbGVtZW50ID0gKChvcHRpb25zKSA9PiB7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICByZXR1cm4gZGVmaW5lQ3VzdG9tRWxlbWVudChvcHRpb25zLCBoeWRyYXRlKTtcclxufSk7XHJcbmNvbnN0IEJhc2VDbGFzcyA9ICh0eXBlb2YgSFRNTEVsZW1lbnQgIT09ICd1bmRlZmluZWQnID8gSFRNTEVsZW1lbnQgOiBjbGFzcyB7XHJcbn0pO1xyXG5jbGFzcyBWdWVFbGVtZW50IGV4dGVuZHMgQmFzZUNsYXNzIHtcclxuICAgIGNvbnN0cnVjdG9yKF9kZWYsIF9wcm9wcyA9IHt9LCBoeWRyYXRlKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLl9kZWYgPSBfZGVmO1xyXG4gICAgICAgIHRoaXMuX3Byb3BzID0gX3Byb3BzO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEBpbnRlcm5hbFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHRoaXMuX2luc3RhbmNlID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9jb25uZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl9yZXNvbHZlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX251bWJlclByb3BzID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5zaGFkb3dSb290ICYmIGh5ZHJhdGUpIHtcclxuICAgICAgICAgICAgaHlkcmF0ZSh0aGlzLl9jcmVhdGVWTm9kZSgpLCB0aGlzLnNoYWRvd1Jvb3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB0aGlzLnNoYWRvd1Jvb3QpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYEN1c3RvbSBlbGVtZW50IGhhcyBwcmUtcmVuZGVyZWQgZGVjbGFyYXRpdmUgc2hhZG93IHJvb3QgYnV0IGlzIG5vdCBgICtcclxuICAgICAgICAgICAgICAgICAgICBgZGVmaW5lZCBhcyBoeWRyYXRhYmxlLiBVc2UgXFxgZGVmaW5lU1NSQ3VzdG9tRWxlbWVudFxcYC5gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25uZWN0ZWRDYWxsYmFjaygpIHtcclxuICAgICAgICB0aGlzLl9jb25uZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgIGlmICghdGhpcy5faW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fcmVzb2x2ZURlZigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCkge1xyXG4gICAgICAgIHRoaXMuX2Nvbm5lY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIG5leHRUaWNrKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLl9jb25uZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgIHJlbmRlcihudWxsLCB0aGlzLnNoYWRvd1Jvb3QpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faW5zdGFuY2UgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIHJlc29sdmUgaW5uZXIgY29tcG9uZW50IGRlZmluaXRpb24gKGhhbmRsZSBwb3NzaWJsZSBhc3luYyBjb21wb25lbnQpXHJcbiAgICAgKi9cclxuICAgIF9yZXNvbHZlRGVmKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9yZXNvbHZlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3Jlc29sdmVkID0gdHJ1ZTtcclxuICAgICAgICAvLyBzZXQgaW5pdGlhbCBhdHRyc1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NldEF0dHIodGhpcy5hdHRyaWJ1dGVzW2ldLm5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB3YXRjaCBmdXR1cmUgYXR0ciBjaGFuZ2VzXHJcbiAgICAgICAgbmV3IE11dGF0aW9uT2JzZXJ2ZXIobXV0YXRpb25zID0+IHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBtIG9mIG11dGF0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0QXR0cihtLmF0dHJpYnV0ZU5hbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSkub2JzZXJ2ZSh0aGlzLCB7IGF0dHJpYnV0ZXM6IHRydWUgfSk7XHJcbiAgICAgICAgY29uc3QgcmVzb2x2ZSA9IChkZWYpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgeyBwcm9wcywgc3R5bGVzIH0gPSBkZWY7XHJcbiAgICAgICAgICAgIGNvbnN0IGhhc09wdGlvbnMgPSAhaXNBcnJheShwcm9wcyk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJhd0tleXMgPSBwcm9wcyA/IChoYXNPcHRpb25zID8gT2JqZWN0LmtleXMocHJvcHMpIDogcHJvcHMpIDogW107XHJcbiAgICAgICAgICAgIC8vIGNhc3QgTnVtYmVyLXR5cGUgcHJvcHMgc2V0IGJlZm9yZSByZXNvbHZlXHJcbiAgICAgICAgICAgIGxldCBudW1iZXJQcm9wcztcclxuICAgICAgICAgICAgaWYgKGhhc09wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuX3Byb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B0ID0gcHJvcHNba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob3B0ID09PSBOdW1iZXIgfHwgKG9wdCAmJiBvcHQudHlwZSA9PT0gTnVtYmVyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wcm9wc1trZXldID0gdG9OdW1iZXIodGhpcy5fcHJvcHNba2V5XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChudW1iZXJQcm9wcyB8fCAobnVtYmVyUHJvcHMgPSBPYmplY3QuY3JlYXRlKG51bGwpKSlba2V5XSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuX251bWJlclByb3BzID0gbnVtYmVyUHJvcHM7XHJcbiAgICAgICAgICAgIC8vIGNoZWNrIGlmIHRoZXJlIGFyZSBwcm9wcyBzZXQgcHJlLXVwZ3JhZGUgb3IgY29ubmVjdFxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGtleVswXSAhPT0gJ18nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0UHJvcChrZXksIHRoaXNba2V5XSwgdHJ1ZSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGRlZmluaW5nIGdldHRlci9zZXR0ZXJzIG9uIHByb3RvdHlwZVxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiByYXdLZXlzLm1hcChjYW1lbGl6ZSQxKSkge1xyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIGtleSwge1xyXG4gICAgICAgICAgICAgICAgICAgIGdldCgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3Aoa2V5KTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHNldCh2YWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0UHJvcChrZXksIHZhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gYXBwbHkgQ1NTXHJcbiAgICAgICAgICAgIHRoaXMuX2FwcGx5U3R5bGVzKHN0eWxlcyk7XHJcbiAgICAgICAgICAgIC8vIGluaXRpYWwgcmVuZGVyXHJcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZSgpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgYXN5bmNEZWYgPSB0aGlzLl9kZWYuX19hc3luY0xvYWRlcjtcclxuICAgICAgICBpZiAoYXN5bmNEZWYpIHtcclxuICAgICAgICAgICAgYXN5bmNEZWYoKS50aGVuKHJlc29sdmUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLl9kZWYpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIF9zZXRBdHRyKGtleSkge1xyXG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuZ2V0QXR0cmlidXRlKGtleSk7XHJcbiAgICAgICAgaWYgKHRoaXMuX251bWJlclByb3BzICYmIHRoaXMuX251bWJlclByb3BzW2tleV0pIHtcclxuICAgICAgICAgICAgdmFsdWUgPSB0b051bWJlcih2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3NldFByb3AoY2FtZWxpemUkMShrZXkpLCB2YWx1ZSwgZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBAaW50ZXJuYWxcclxuICAgICAqL1xyXG4gICAgX2dldFByb3Aoa2V5KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BzW2tleV07XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEBpbnRlcm5hbFxyXG4gICAgICovXHJcbiAgICBfc2V0UHJvcChrZXksIHZhbCwgc2hvdWxkUmVmbGVjdCA9IHRydWUsIHNob3VsZFVwZGF0ZSA9IHRydWUpIHtcclxuICAgICAgICBpZiAodmFsICE9PSB0aGlzLl9wcm9wc1trZXldKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Byb3BzW2tleV0gPSB2YWw7XHJcbiAgICAgICAgICAgIGlmIChzaG91bGRVcGRhdGUgJiYgdGhpcy5faW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHJlZmxlY3RcclxuICAgICAgICAgICAgaWYgKHNob3VsZFJlZmxlY3QpIHtcclxuICAgICAgICAgICAgICAgIGlmICh2YWwgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZShoeXBoZW5hdGUoa2V5KSwgJycpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZShoeXBoZW5hdGUoa2V5KSwgdmFsICsgJycpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXZhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKGh5cGhlbmF0ZShrZXkpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIF91cGRhdGUoKSB7XHJcbiAgICAgICAgcmVuZGVyKHRoaXMuX2NyZWF0ZVZOb2RlKCksIHRoaXMuc2hhZG93Um9vdCk7XHJcbiAgICB9XHJcbiAgICBfY3JlYXRlVk5vZGUoKSB7XHJcbiAgICAgICAgY29uc3Qgdm5vZGUgPSBjcmVhdGVWTm9kZSh0aGlzLl9kZWYsIGV4dGVuZCh7fSwgdGhpcy5fcHJvcHMpKTtcclxuICAgICAgICBpZiAoIXRoaXMuX2luc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIHZub2RlLmNlID0gaW5zdGFuY2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faW5zdGFuY2UgPSBpbnN0YW5jZTtcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmlzQ0UgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgLy8gSE1SXHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY2VSZWxvYWQgPSBuZXdTdHlsZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhbHdheXMgcmVzZXQgc3R5bGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zdHlsZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0eWxlcy5mb3JFYWNoKHMgPT4gdGhpcy5zaGFkb3dSb290LnJlbW92ZUNoaWxkKHMpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0eWxlcy5sZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FwcGx5U3R5bGVzKG5ld1N0eWxlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoaXMgaXMgYW4gYXN5bmMgY29tcG9uZW50LCBjZVJlbG9hZCBpcyBjYWxsZWQgZnJvbSB0aGUgaW5uZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29tcG9uZW50IHNvIG5vIG5lZWQgdG8gcmVsb2FkIHRoZSBhc3luYyB3cmFwcGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5fZGVmLl9fYXN5bmNMb2FkZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbG9hZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5zdGFuY2UgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gaW50ZXJjZXB0IGVtaXRcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmVtaXQgPSAoZXZlbnQsIC4uLmFyZ3MpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KGV2ZW50LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDogYXJnc1xyXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAvLyBsb2NhdGUgbmVhcmVzdCBWdWUgY3VzdG9tIGVsZW1lbnQgcGFyZW50IGZvciBwcm92aWRlL2luamVjdFxyXG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudCA9IHRoaXM7XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAoKHBhcmVudCA9XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50ICYmIChwYXJlbnQucGFyZW50Tm9kZSB8fCBwYXJlbnQuaG9zdCkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudCBpbnN0YW5jZW9mIFZ1ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UucGFyZW50ID0gcGFyZW50Ll9pbnN0YW5jZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdm5vZGU7XHJcbiAgICB9XHJcbiAgICBfYXBwbHlTdHlsZXMoc3R5bGVzKSB7XHJcbiAgICAgICAgaWYgKHN0eWxlcykge1xyXG4gICAgICAgICAgICBzdHlsZXMuZm9yRWFjaChjc3MgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XHJcbiAgICAgICAgICAgICAgICBzLnRleHRDb250ZW50ID0gY3NzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zaGFkb3dSb290LmFwcGVuZENoaWxkKHMpO1xyXG4gICAgICAgICAgICAgICAgLy8gcmVjb3JkIGZvciBITVJcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAodGhpcy5fc3R5bGVzIHx8ICh0aGlzLl9zdHlsZXMgPSBbXSkpLnB1c2gocyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxuXG5mdW5jdGlvbiB1c2VDc3NNb2R1bGUobmFtZSA9ICckc3R5bGUnKSB7XHJcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xyXG4gICAge1xyXG4gICAgICAgIGNvbnN0IGluc3RhbmNlID0gZ2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICAgICAgaWYgKCFpbnN0YW5jZSkge1xyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgd2FybihgdXNlQ3NzTW9kdWxlIG11c3QgYmUgY2FsbGVkIGluc2lkZSBzZXR1cCgpYCk7XHJcbiAgICAgICAgICAgIHJldHVybiBFTVBUWV9PQko7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG1vZHVsZXMgPSBpbnN0YW5jZS50eXBlLl9fY3NzTW9kdWxlcztcclxuICAgICAgICBpZiAoIW1vZHVsZXMpIHtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHdhcm4oYEN1cnJlbnQgaW5zdGFuY2UgZG9lcyBub3QgaGF2ZSBDU1MgbW9kdWxlcyBpbmplY3RlZC5gKTtcclxuICAgICAgICAgICAgcmV0dXJuIEVNUFRZX09CSjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbW9kID0gbW9kdWxlc1tuYW1lXTtcclxuICAgICAgICBpZiAoIW1vZCkge1xyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgIHdhcm4oYEN1cnJlbnQgaW5zdGFuY2UgZG9lcyBub3QgaGF2ZSBDU1MgbW9kdWxlIG5hbWVkIFwiJHtuYW1lfVwiLmApO1xyXG4gICAgICAgICAgICByZXR1cm4gRU1QVFlfT0JKO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbW9kO1xyXG4gICAgfVxyXG59XG5cbi8qKlxyXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgU0ZDJ3MgQ1NTIHZhcmlhYmxlIGluamVjdGlvbiBmZWF0dXJlLlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gdXNlQ3NzVmFycyhnZXR0ZXIpIHtcclxuICAgIGNvbnN0IGluc3RhbmNlID0gZ2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG4gICAgaWYgKCFpbnN0YW5jZSkge1xyXG4gICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICB3YXJuKGB1c2VDc3NWYXJzIGlzIGNhbGxlZCB3aXRob3V0IGN1cnJlbnQgYWN0aXZlIGNvbXBvbmVudCBpbnN0YW5jZS5gKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBzZXRWYXJzID0gKCkgPT4gc2V0VmFyc09uVk5vZGUoaW5zdGFuY2Uuc3ViVHJlZSwgZ2V0dGVyKGluc3RhbmNlLnByb3h5KSk7XHJcbiAgICB3YXRjaFBvc3RFZmZlY3Qoc2V0VmFycyk7XHJcbiAgICBvbk1vdW50ZWQoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG9iID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoc2V0VmFycyk7XHJcbiAgICAgICAgb2Iub2JzZXJ2ZShpbnN0YW5jZS5zdWJUcmVlLmVsLnBhcmVudE5vZGUsIHsgY2hpbGRMaXN0OiB0cnVlIH0pO1xyXG4gICAgICAgIG9uVW5tb3VudGVkKCgpID0+IG9iLmRpc2Nvbm5lY3QoKSk7XHJcbiAgICB9KTtcclxufVxyXG5mdW5jdGlvbiBzZXRWYXJzT25WTm9kZSh2bm9kZSwgdmFycykge1xyXG4gICAgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDEyOCAvKiBTaGFwZUZsYWdzLlNVU1BFTlNFICovKSB7XHJcbiAgICAgICAgY29uc3Qgc3VzcGVuc2UgPSB2bm9kZS5zdXNwZW5zZTtcclxuICAgICAgICB2bm9kZSA9IHN1c3BlbnNlLmFjdGl2ZUJyYW5jaDtcclxuICAgICAgICBpZiAoc3VzcGVuc2UucGVuZGluZ0JyYW5jaCAmJiAhc3VzcGVuc2UuaXNIeWRyYXRpbmcpIHtcclxuICAgICAgICAgICAgc3VzcGVuc2UuZWZmZWN0cy5wdXNoKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHNldFZhcnNPblZOb2RlKHN1c3BlbnNlLmFjdGl2ZUJyYW5jaCwgdmFycyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIGRyaWxsIGRvd24gSE9DcyB1bnRpbCBpdCdzIGEgbm9uLWNvbXBvbmVudCB2bm9kZVxyXG4gICAgd2hpbGUgKHZub2RlLmNvbXBvbmVudCkge1xyXG4gICAgICAgIHZub2RlID0gdm5vZGUuY29tcG9uZW50LnN1YlRyZWU7XHJcbiAgICB9XHJcbiAgICBpZiAodm5vZGUuc2hhcGVGbGFnICYgMSAvKiBTaGFwZUZsYWdzLkVMRU1FTlQgKi8gJiYgdm5vZGUuZWwpIHtcclxuICAgICAgICBzZXRWYXJzT25Ob2RlKHZub2RlLmVsLCB2YXJzKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHZub2RlLnR5cGUgPT09IEZyYWdtZW50KSB7XHJcbiAgICAgICAgdm5vZGUuY2hpbGRyZW4uZm9yRWFjaChjID0+IHNldFZhcnNPblZOb2RlKGMsIHZhcnMpKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHZub2RlLnR5cGUgPT09IFN0YXRpYykge1xyXG4gICAgICAgIGxldCB7IGVsLCBhbmNob3IgfSA9IHZub2RlO1xyXG4gICAgICAgIHdoaWxlIChlbCkge1xyXG4gICAgICAgICAgICBzZXRWYXJzT25Ob2RlKGVsLCB2YXJzKTtcclxuICAgICAgICAgICAgaWYgKGVsID09PSBhbmNob3IpXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZWwgPSBlbC5uZXh0U2libGluZztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gc2V0VmFyc09uTm9kZShlbCwgdmFycykge1xyXG4gICAgaWYgKGVsLm5vZGVUeXBlID09PSAxKSB7XHJcbiAgICAgICAgY29uc3Qgc3R5bGUgPSBlbC5zdHlsZTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB2YXJzKSB7XHJcbiAgICAgICAgICAgIHN0eWxlLnNldFByb3BlcnR5KGAtLSR7a2V5fWAsIHZhcnNba2V5XSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XG5cbmNvbnN0IFRSQU5TSVRJT04gPSAndHJhbnNpdGlvbic7XHJcbmNvbnN0IEFOSU1BVElPTiA9ICdhbmltYXRpb24nO1xyXG4vLyBET00gVHJhbnNpdGlvbiBpcyBhIGhpZ2hlci1vcmRlci1jb21wb25lbnQgYmFzZWQgb24gdGhlIHBsYXRmb3JtLWFnbm9zdGljXHJcbi8vIGJhc2UgVHJhbnNpdGlvbiBjb21wb25lbnQsIHdpdGggRE9NLXNwZWNpZmljIGxvZ2ljLlxyXG5jb25zdCBUcmFuc2l0aW9uID0gKHByb3BzLCB7IHNsb3RzIH0pID0+IGgoQmFzZVRyYW5zaXRpb24sIHJlc29sdmVUcmFuc2l0aW9uUHJvcHMocHJvcHMpLCBzbG90cyk7XHJcblRyYW5zaXRpb24uZGlzcGxheU5hbWUgPSAnVHJhbnNpdGlvbic7XHJcbmNvbnN0IERPTVRyYW5zaXRpb25Qcm9wc1ZhbGlkYXRvcnMgPSB7XHJcbiAgICBuYW1lOiBTdHJpbmcsXHJcbiAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICBjc3M6IHtcclxuICAgICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICAgIGRlZmF1bHQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBkdXJhdGlvbjogW1N0cmluZywgTnVtYmVyLCBPYmplY3RdLFxyXG4gICAgZW50ZXJGcm9tQ2xhc3M6IFN0cmluZyxcclxuICAgIGVudGVyQWN0aXZlQ2xhc3M6IFN0cmluZyxcclxuICAgIGVudGVyVG9DbGFzczogU3RyaW5nLFxyXG4gICAgYXBwZWFyRnJvbUNsYXNzOiBTdHJpbmcsXHJcbiAgICBhcHBlYXJBY3RpdmVDbGFzczogU3RyaW5nLFxyXG4gICAgYXBwZWFyVG9DbGFzczogU3RyaW5nLFxyXG4gICAgbGVhdmVGcm9tQ2xhc3M6IFN0cmluZyxcclxuICAgIGxlYXZlQWN0aXZlQ2xhc3M6IFN0cmluZyxcclxuICAgIGxlYXZlVG9DbGFzczogU3RyaW5nXHJcbn07XHJcbmNvbnN0IFRyYW5zaXRpb25Qcm9wc1ZhbGlkYXRvcnMgPSAoVHJhbnNpdGlvbi5wcm9wcyA9XHJcbiAgICAvKiNfX1BVUkVfXyovIGV4dGVuZCh7fSwgQmFzZVRyYW5zaXRpb24ucHJvcHMsIERPTVRyYW5zaXRpb25Qcm9wc1ZhbGlkYXRvcnMpKTtcclxuLyoqXHJcbiAqICMzMjI3IEluY29taW5nIGhvb2tzIG1heSBiZSBtZXJnZWQgaW50byBhcnJheXMgd2hlbiB3cmFwcGluZyBUcmFuc2l0aW9uXHJcbiAqIHdpdGggY3VzdG9tIEhPQ3MuXHJcbiAqL1xyXG5jb25zdCBjYWxsSG9vayA9IChob29rLCBhcmdzID0gW10pID0+IHtcclxuICAgIGlmIChpc0FycmF5KGhvb2spKSB7XHJcbiAgICAgICAgaG9vay5mb3JFYWNoKGggPT4gaCguLi5hcmdzKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChob29rKSB7XHJcbiAgICAgICAgaG9vayguLi5hcmdzKTtcclxuICAgIH1cclxufTtcclxuLyoqXHJcbiAqIENoZWNrIGlmIGEgaG9vayBleHBlY3RzIGEgY2FsbGJhY2sgKDJuZCBhcmcpLCB3aGljaCBtZWFucyB0aGUgdXNlclxyXG4gKiBpbnRlbmRzIHRvIGV4cGxpY2l0bHkgY29udHJvbCB0aGUgZW5kIG9mIHRoZSB0cmFuc2l0aW9uLlxyXG4gKi9cclxuY29uc3QgaGFzRXhwbGljaXRDYWxsYmFjayA9IChob29rKSA9PiB7XHJcbiAgICByZXR1cm4gaG9va1xyXG4gICAgICAgID8gaXNBcnJheShob29rKVxyXG4gICAgICAgICAgICA/IGhvb2suc29tZShoID0+IGgubGVuZ3RoID4gMSlcclxuICAgICAgICAgICAgOiBob29rLmxlbmd0aCA+IDFcclxuICAgICAgICA6IGZhbHNlO1xyXG59O1xyXG5mdW5jdGlvbiByZXNvbHZlVHJhbnNpdGlvblByb3BzKHJhd1Byb3BzKSB7XHJcbiAgICBjb25zdCBiYXNlUHJvcHMgPSB7fTtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIHJhd1Byb3BzKSB7XHJcbiAgICAgICAgaWYgKCEoa2V5IGluIERPTVRyYW5zaXRpb25Qcm9wc1ZhbGlkYXRvcnMpKSB7XHJcbiAgICAgICAgICAgIGJhc2VQcm9wc1trZXldID0gcmF3UHJvcHNba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocmF3UHJvcHMuY3NzID09PSBmYWxzZSkge1xyXG4gICAgICAgIHJldHVybiBiYXNlUHJvcHM7XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IG5hbWUgPSAndicsIHR5cGUsIGR1cmF0aW9uLCBlbnRlckZyb21DbGFzcyA9IGAke25hbWV9LWVudGVyLWZyb21gLCBlbnRlckFjdGl2ZUNsYXNzID0gYCR7bmFtZX0tZW50ZXItYWN0aXZlYCwgZW50ZXJUb0NsYXNzID0gYCR7bmFtZX0tZW50ZXItdG9gLCBhcHBlYXJGcm9tQ2xhc3MgPSBlbnRlckZyb21DbGFzcywgYXBwZWFyQWN0aXZlQ2xhc3MgPSBlbnRlckFjdGl2ZUNsYXNzLCBhcHBlYXJUb0NsYXNzID0gZW50ZXJUb0NsYXNzLCBsZWF2ZUZyb21DbGFzcyA9IGAke25hbWV9LWxlYXZlLWZyb21gLCBsZWF2ZUFjdGl2ZUNsYXNzID0gYCR7bmFtZX0tbGVhdmUtYWN0aXZlYCwgbGVhdmVUb0NsYXNzID0gYCR7bmFtZX0tbGVhdmUtdG9gIH0gPSByYXdQcm9wcztcclxuICAgIGNvbnN0IGR1cmF0aW9ucyA9IG5vcm1hbGl6ZUR1cmF0aW9uKGR1cmF0aW9uKTtcclxuICAgIGNvbnN0IGVudGVyRHVyYXRpb24gPSBkdXJhdGlvbnMgJiYgZHVyYXRpb25zWzBdO1xyXG4gICAgY29uc3QgbGVhdmVEdXJhdGlvbiA9IGR1cmF0aW9ucyAmJiBkdXJhdGlvbnNbMV07XHJcbiAgICBjb25zdCB7IG9uQmVmb3JlRW50ZXIsIG9uRW50ZXIsIG9uRW50ZXJDYW5jZWxsZWQsIG9uTGVhdmUsIG9uTGVhdmVDYW5jZWxsZWQsIG9uQmVmb3JlQXBwZWFyID0gb25CZWZvcmVFbnRlciwgb25BcHBlYXIgPSBvbkVudGVyLCBvbkFwcGVhckNhbmNlbGxlZCA9IG9uRW50ZXJDYW5jZWxsZWQgfSA9IGJhc2VQcm9wcztcclxuICAgIGNvbnN0IGZpbmlzaEVudGVyID0gKGVsLCBpc0FwcGVhciwgZG9uZSkgPT4ge1xyXG4gICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgaXNBcHBlYXIgPyBhcHBlYXJUb0NsYXNzIDogZW50ZXJUb0NsYXNzKTtcclxuICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGlzQXBwZWFyID8gYXBwZWFyQWN0aXZlQ2xhc3MgOiBlbnRlckFjdGl2ZUNsYXNzKTtcclxuICAgICAgICBkb25lICYmIGRvbmUoKTtcclxuICAgIH07XHJcbiAgICBjb25zdCBmaW5pc2hMZWF2ZSA9IChlbCwgZG9uZSkgPT4ge1xyXG4gICAgICAgIGVsLl9pc0xlYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlRnJvbUNsYXNzKTtcclxuICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlVG9DbGFzcyk7XHJcbiAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUFjdGl2ZUNsYXNzKTtcclxuICAgICAgICBkb25lICYmIGRvbmUoKTtcclxuICAgIH07XHJcbiAgICBjb25zdCBtYWtlRW50ZXJIb29rID0gKGlzQXBwZWFyKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIChlbCwgZG9uZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBob29rID0gaXNBcHBlYXIgPyBvbkFwcGVhciA6IG9uRW50ZXI7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmUgPSAoKSA9PiBmaW5pc2hFbnRlcihlbCwgaXNBcHBlYXIsIGRvbmUpO1xyXG4gICAgICAgICAgICBjYWxsSG9vayhob29rLCBbZWwsIHJlc29sdmVdKTtcclxuICAgICAgICAgICAgbmV4dEZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgaXNBcHBlYXIgPyBhcHBlYXJGcm9tQ2xhc3MgOiBlbnRlckZyb21DbGFzcyk7XHJcbiAgICAgICAgICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGlzQXBwZWFyID8gYXBwZWFyVG9DbGFzcyA6IGVudGVyVG9DbGFzcyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWhhc0V4cGxpY2l0Q2FsbGJhY2soaG9vaykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3aGVuVHJhbnNpdGlvbkVuZHMoZWwsIHR5cGUsIGVudGVyRHVyYXRpb24sIHJlc29sdmUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG4gICAgfTtcclxuICAgIHJldHVybiBleHRlbmQoYmFzZVByb3BzLCB7XHJcbiAgICAgICAgb25CZWZvcmVFbnRlcihlbCkge1xyXG4gICAgICAgICAgICBjYWxsSG9vayhvbkJlZm9yZUVudGVyLCBbZWxdKTtcclxuICAgICAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBlbnRlckZyb21DbGFzcyk7XHJcbiAgICAgICAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgZW50ZXJBY3RpdmVDbGFzcyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvbkJlZm9yZUFwcGVhcihlbCkge1xyXG4gICAgICAgICAgICBjYWxsSG9vayhvbkJlZm9yZUFwcGVhciwgW2VsXSk7XHJcbiAgICAgICAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgYXBwZWFyRnJvbUNsYXNzKTtcclxuICAgICAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBhcHBlYXJBY3RpdmVDbGFzcyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvbkVudGVyOiBtYWtlRW50ZXJIb29rKGZhbHNlKSxcclxuICAgICAgICBvbkFwcGVhcjogbWFrZUVudGVySG9vayh0cnVlKSxcclxuICAgICAgICBvbkxlYXZlKGVsLCBkb25lKSB7XHJcbiAgICAgICAgICAgIGVsLl9pc0xlYXZpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICBjb25zdCByZXNvbHZlID0gKCkgPT4gZmluaXNoTGVhdmUoZWwsIGRvbmUpO1xyXG4gICAgICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlRnJvbUNsYXNzKTtcclxuICAgICAgICAgICAgLy8gZm9yY2UgcmVmbG93IHNvICotbGVhdmUtZnJvbSBjbGFzc2VzIGltbWVkaWF0ZWx5IHRha2UgZWZmZWN0ICgjMjU5MylcclxuICAgICAgICAgICAgZm9yY2VSZWZsb3coKTtcclxuICAgICAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUFjdGl2ZUNsYXNzKTtcclxuICAgICAgICAgICAgbmV4dEZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghZWwuX2lzTGVhdmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNhbmNlbGxlZFxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVGcm9tQ2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZVRvQ2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFoYXNFeHBsaWNpdENhbGxiYWNrKG9uTGVhdmUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2hlblRyYW5zaXRpb25FbmRzKGVsLCB0eXBlLCBsZWF2ZUR1cmF0aW9uLCByZXNvbHZlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNhbGxIb29rKG9uTGVhdmUsIFtlbCwgcmVzb2x2ZV0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25FbnRlckNhbmNlbGxlZChlbCkge1xyXG4gICAgICAgICAgICBmaW5pc2hFbnRlcihlbCwgZmFsc2UpO1xyXG4gICAgICAgICAgICBjYWxsSG9vayhvbkVudGVyQ2FuY2VsbGVkLCBbZWxdKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQXBwZWFyQ2FuY2VsbGVkKGVsKSB7XHJcbiAgICAgICAgICAgIGZpbmlzaEVudGVyKGVsLCB0cnVlKTtcclxuICAgICAgICAgICAgY2FsbEhvb2sob25BcHBlYXJDYW5jZWxsZWQsIFtlbF0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25MZWF2ZUNhbmNlbGxlZChlbCkge1xyXG4gICAgICAgICAgICBmaW5pc2hMZWF2ZShlbCk7XHJcbiAgICAgICAgICAgIGNhbGxIb29rKG9uTGVhdmVDYW5jZWxsZWQsIFtlbF0pO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZUR1cmF0aW9uKGR1cmF0aW9uKSB7XHJcbiAgICBpZiAoZHVyYXRpb24gPT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNPYmplY3QoZHVyYXRpb24pKSB7XHJcbiAgICAgICAgcmV0dXJuIFtOdW1iZXJPZihkdXJhdGlvbi5lbnRlciksIE51bWJlck9mKGR1cmF0aW9uLmxlYXZlKV07XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBuID0gTnVtYmVyT2YoZHVyYXRpb24pO1xyXG4gICAgICAgIHJldHVybiBbbiwgbl07XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gTnVtYmVyT2YodmFsKSB7XHJcbiAgICBjb25zdCByZXMgPSB0b051bWJlcih2YWwpO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSlcclxuICAgICAgICB2YWxpZGF0ZUR1cmF0aW9uKHJlcyk7XHJcbiAgICByZXR1cm4gcmVzO1xyXG59XHJcbmZ1bmN0aW9uIHZhbGlkYXRlRHVyYXRpb24odmFsKSB7XHJcbiAgICBpZiAodHlwZW9mIHZhbCAhPT0gJ251bWJlcicpIHtcclxuICAgICAgICB3YXJuKGA8dHJhbnNpdGlvbj4gZXhwbGljaXQgZHVyYXRpb24gaXMgbm90IGEgdmFsaWQgbnVtYmVyIC0gYCArXHJcbiAgICAgICAgICAgIGBnb3QgJHtKU09OLnN0cmluZ2lmeSh2YWwpfS5gKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzTmFOKHZhbCkpIHtcclxuICAgICAgICB3YXJuKGA8dHJhbnNpdGlvbj4gZXhwbGljaXQgZHVyYXRpb24gaXMgTmFOIC0gYCArXHJcbiAgICAgICAgICAgICd0aGUgZHVyYXRpb24gZXhwcmVzc2lvbiBtaWdodCBiZSBpbmNvcnJlY3QuJyk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBjbHMpIHtcclxuICAgIGNscy5zcGxpdCgvXFxzKy8pLmZvckVhY2goYyA9PiBjICYmIGVsLmNsYXNzTGlzdC5hZGQoYykpO1xyXG4gICAgKGVsLl92dGMgfHxcclxuICAgICAgICAoZWwuX3Z0YyA9IG5ldyBTZXQoKSkpLmFkZChjbHMpO1xyXG59XHJcbmZ1bmN0aW9uIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgY2xzKSB7XHJcbiAgICBjbHMuc3BsaXQoL1xccysvKS5mb3JFYWNoKGMgPT4gYyAmJiBlbC5jbGFzc0xpc3QucmVtb3ZlKGMpKTtcclxuICAgIGNvbnN0IHsgX3Z0YyB9ID0gZWw7XHJcbiAgICBpZiAoX3Z0Yykge1xyXG4gICAgICAgIF92dGMuZGVsZXRlKGNscyk7XHJcbiAgICAgICAgaWYgKCFfdnRjLnNpemUpIHtcclxuICAgICAgICAgICAgZWwuX3Z0YyA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gbmV4dEZyYW1lKGNiKSB7XHJcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShjYik7XHJcbiAgICB9KTtcclxufVxyXG5sZXQgZW5kSWQgPSAwO1xyXG5mdW5jdGlvbiB3aGVuVHJhbnNpdGlvbkVuZHMoZWwsIGV4cGVjdGVkVHlwZSwgZXhwbGljaXRUaW1lb3V0LCByZXNvbHZlKSB7XHJcbiAgICBjb25zdCBpZCA9IChlbC5fZW5kSWQgPSArK2VuZElkKTtcclxuICAgIGNvbnN0IHJlc29sdmVJZk5vdFN0YWxlID0gKCkgPT4ge1xyXG4gICAgICAgIGlmIChpZCA9PT0gZWwuX2VuZElkKSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgaWYgKGV4cGxpY2l0VGltZW91dCkge1xyXG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KHJlc29sdmVJZk5vdFN0YWxlLCBleHBsaWNpdFRpbWVvdXQpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyB0eXBlLCB0aW1lb3V0LCBwcm9wQ291bnQgfSA9IGdldFRyYW5zaXRpb25JbmZvKGVsLCBleHBlY3RlZFR5cGUpO1xyXG4gICAgaWYgKCF0eXBlKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGVuZEV2ZW50ID0gdHlwZSArICdlbmQnO1xyXG4gICAgbGV0IGVuZGVkID0gMDtcclxuICAgIGNvbnN0IGVuZCA9ICgpID0+IHtcclxuICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKGVuZEV2ZW50LCBvbkVuZCk7XHJcbiAgICAgICAgcmVzb2x2ZUlmTm90U3RhbGUoKTtcclxuICAgIH07XHJcbiAgICBjb25zdCBvbkVuZCA9IChlKSA9PiB7XHJcbiAgICAgICAgaWYgKGUudGFyZ2V0ID09PSBlbCAmJiArK2VuZGVkID49IHByb3BDb3VudCkge1xyXG4gICAgICAgICAgICBlbmQoKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKGVuZGVkIDwgcHJvcENvdW50KSB7XHJcbiAgICAgICAgICAgIGVuZCgpO1xyXG4gICAgICAgIH1cclxuICAgIH0sIHRpbWVvdXQgKyAxKTtcclxuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoZW5kRXZlbnQsIG9uRW5kKTtcclxufVxyXG5mdW5jdGlvbiBnZXRUcmFuc2l0aW9uSW5mbyhlbCwgZXhwZWN0ZWRUeXBlKSB7XHJcbiAgICBjb25zdCBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCk7XHJcbiAgICAvLyBKU0RPTSBtYXkgcmV0dXJuIHVuZGVmaW5lZCBmb3IgdHJhbnNpdGlvbiBwcm9wZXJ0aWVzXHJcbiAgICBjb25zdCBnZXRTdHlsZVByb3BlcnRpZXMgPSAoa2V5KSA9PiAoc3R5bGVzW2tleV0gfHwgJycpLnNwbGl0KCcsICcpO1xyXG4gICAgY29uc3QgdHJhbnNpdGlvbkRlbGF5cyA9IGdldFN0eWxlUHJvcGVydGllcyhUUkFOU0lUSU9OICsgJ0RlbGF5Jyk7XHJcbiAgICBjb25zdCB0cmFuc2l0aW9uRHVyYXRpb25zID0gZ2V0U3R5bGVQcm9wZXJ0aWVzKFRSQU5TSVRJT04gKyAnRHVyYXRpb24nKTtcclxuICAgIGNvbnN0IHRyYW5zaXRpb25UaW1lb3V0ID0gZ2V0VGltZW91dCh0cmFuc2l0aW9uRGVsYXlzLCB0cmFuc2l0aW9uRHVyYXRpb25zKTtcclxuICAgIGNvbnN0IGFuaW1hdGlvbkRlbGF5cyA9IGdldFN0eWxlUHJvcGVydGllcyhBTklNQVRJT04gKyAnRGVsYXknKTtcclxuICAgIGNvbnN0IGFuaW1hdGlvbkR1cmF0aW9ucyA9IGdldFN0eWxlUHJvcGVydGllcyhBTklNQVRJT04gKyAnRHVyYXRpb24nKTtcclxuICAgIGNvbnN0IGFuaW1hdGlvblRpbWVvdXQgPSBnZXRUaW1lb3V0KGFuaW1hdGlvbkRlbGF5cywgYW5pbWF0aW9uRHVyYXRpb25zKTtcclxuICAgIGxldCB0eXBlID0gbnVsbDtcclxuICAgIGxldCB0aW1lb3V0ID0gMDtcclxuICAgIGxldCBwcm9wQ291bnQgPSAwO1xyXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXHJcbiAgICBpZiAoZXhwZWN0ZWRUeXBlID09PSBUUkFOU0lUSU9OKSB7XHJcbiAgICAgICAgaWYgKHRyYW5zaXRpb25UaW1lb3V0ID4gMCkge1xyXG4gICAgICAgICAgICB0eXBlID0gVFJBTlNJVElPTjtcclxuICAgICAgICAgICAgdGltZW91dCA9IHRyYW5zaXRpb25UaW1lb3V0O1xyXG4gICAgICAgICAgICBwcm9wQ291bnQgPSB0cmFuc2l0aW9uRHVyYXRpb25zLmxlbmd0aDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09IEFOSU1BVElPTikge1xyXG4gICAgICAgIGlmIChhbmltYXRpb25UaW1lb3V0ID4gMCkge1xyXG4gICAgICAgICAgICB0eXBlID0gQU5JTUFUSU9OO1xyXG4gICAgICAgICAgICB0aW1lb3V0ID0gYW5pbWF0aW9uVGltZW91dDtcclxuICAgICAgICAgICAgcHJvcENvdW50ID0gYW5pbWF0aW9uRHVyYXRpb25zLmxlbmd0aDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICB0aW1lb3V0ID0gTWF0aC5tYXgodHJhbnNpdGlvblRpbWVvdXQsIGFuaW1hdGlvblRpbWVvdXQpO1xyXG4gICAgICAgIHR5cGUgPVxyXG4gICAgICAgICAgICB0aW1lb3V0ID4gMFxyXG4gICAgICAgICAgICAgICAgPyB0cmFuc2l0aW9uVGltZW91dCA+IGFuaW1hdGlvblRpbWVvdXRcclxuICAgICAgICAgICAgICAgICAgICA/IFRSQU5TSVRJT05cclxuICAgICAgICAgICAgICAgICAgICA6IEFOSU1BVElPTlxyXG4gICAgICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgIHByb3BDb3VudCA9IHR5cGVcclxuICAgICAgICAgICAgPyB0eXBlID09PSBUUkFOU0lUSU9OXHJcbiAgICAgICAgICAgICAgICA/IHRyYW5zaXRpb25EdXJhdGlvbnMubGVuZ3RoXHJcbiAgICAgICAgICAgICAgICA6IGFuaW1hdGlvbkR1cmF0aW9ucy5sZW5ndGhcclxuICAgICAgICAgICAgOiAwO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaGFzVHJhbnNmb3JtID0gdHlwZSA9PT0gVFJBTlNJVElPTiAmJlxyXG4gICAgICAgIC9cXGIodHJhbnNmb3JtfGFsbCkoLHwkKS8udGVzdChzdHlsZXNbVFJBTlNJVElPTiArICdQcm9wZXJ0eSddKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZSxcclxuICAgICAgICB0aW1lb3V0LFxyXG4gICAgICAgIHByb3BDb3VudCxcclxuICAgICAgICBoYXNUcmFuc2Zvcm1cclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gZ2V0VGltZW91dChkZWxheXMsIGR1cmF0aW9ucykge1xyXG4gICAgd2hpbGUgKGRlbGF5cy5sZW5ndGggPCBkdXJhdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgZGVsYXlzID0gZGVsYXlzLmNvbmNhdChkZWxheXMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIE1hdGgubWF4KC4uLmR1cmF0aW9ucy5tYXAoKGQsIGkpID0+IHRvTXMoZCkgKyB0b01zKGRlbGF5c1tpXSkpKTtcclxufVxyXG4vLyBPbGQgdmVyc2lvbnMgb2YgQ2hyb21pdW0gKGJlbG93IDYxLjAuMzE2My4xMDApIGZvcm1hdHMgZmxvYXRpbmcgcG9pbnRlclxyXG4vLyBudW1iZXJzIGluIGEgbG9jYWxlLWRlcGVuZGVudCB3YXksIHVzaW5nIGEgY29tbWEgaW5zdGVhZCBvZiBhIGRvdC5cclxuLy8gSWYgY29tbWEgaXMgbm90IHJlcGxhY2VkIHdpdGggYSBkb3QsIHRoZSBpbnB1dCB3aWxsIGJlIHJvdW5kZWQgZG93blxyXG4vLyAoaS5lLiBhY3RpbmcgYXMgYSBmbG9vciBmdW5jdGlvbikgY2F1c2luZyB1bmV4cGVjdGVkIGJlaGF2aW9yc1xyXG5mdW5jdGlvbiB0b01zKHMpIHtcclxuICAgIHJldHVybiBOdW1iZXIocy5zbGljZSgwLCAtMSkucmVwbGFjZSgnLCcsICcuJykpICogMTAwMDtcclxufVxyXG4vLyBzeW5jaHJvbm91c2x5IGZvcmNlIGxheW91dCB0byBwdXQgZWxlbWVudHMgaW50byBhIGNlcnRhaW4gc3RhdGVcclxuZnVuY3Rpb24gZm9yY2VSZWZsb3coKSB7XHJcbiAgICByZXR1cm4gZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7XHJcbn1cblxuY29uc3QgcG9zaXRpb25NYXAgPSBuZXcgV2Vha01hcCgpO1xyXG5jb25zdCBuZXdQb3NpdGlvbk1hcCA9IG5ldyBXZWFrTWFwKCk7XHJcbmNvbnN0IFRyYW5zaXRpb25Hcm91cEltcGwgPSB7XHJcbiAgICBuYW1lOiAnVHJhbnNpdGlvbkdyb3VwJyxcclxuICAgIHByb3BzOiAvKiNfX1BVUkVfXyovIGV4dGVuZCh7fSwgVHJhbnNpdGlvblByb3BzVmFsaWRhdG9ycywge1xyXG4gICAgICAgIHRhZzogU3RyaW5nLFxyXG4gICAgICAgIG1vdmVDbGFzczogU3RyaW5nXHJcbiAgICB9KSxcclxuICAgIHNldHVwKHByb3BzLCB7IHNsb3RzIH0pIHtcclxuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IGdldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgICAgIGNvbnN0IHN0YXRlID0gdXNlVHJhbnNpdGlvblN0YXRlKCk7XHJcbiAgICAgICAgbGV0IHByZXZDaGlsZHJlbjtcclxuICAgICAgICBsZXQgY2hpbGRyZW47XHJcbiAgICAgICAgb25VcGRhdGVkKCgpID0+IHtcclxuICAgICAgICAgICAgLy8gY2hpbGRyZW4gaXMgZ3VhcmFudGVlZCB0byBleGlzdCBhZnRlciBpbml0aWFsIHJlbmRlclxyXG4gICAgICAgICAgICBpZiAoIXByZXZDaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBtb3ZlQ2xhc3MgPSBwcm9wcy5tb3ZlQ2xhc3MgfHwgYCR7cHJvcHMubmFtZSB8fCAndid9LW1vdmVgO1xyXG4gICAgICAgICAgICBpZiAoIWhhc0NTU1RyYW5zZm9ybShwcmV2Q2hpbGRyZW5bMF0uZWwsIGluc3RhbmNlLnZub2RlLmVsLCBtb3ZlQ2xhc3MpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gd2UgZGl2aWRlIHRoZSB3b3JrIGludG8gdGhyZWUgbG9vcHMgdG8gYXZvaWQgbWl4aW5nIERPTSByZWFkcyBhbmQgd3JpdGVzXHJcbiAgICAgICAgICAgIC8vIGluIGVhY2ggaXRlcmF0aW9uIC0gd2hpY2ggaGVscHMgcHJldmVudCBsYXlvdXQgdGhyYXNoaW5nLlxyXG4gICAgICAgICAgICBwcmV2Q2hpbGRyZW4uZm9yRWFjaChjYWxsUGVuZGluZ0Nicyk7XHJcbiAgICAgICAgICAgIHByZXZDaGlsZHJlbi5mb3JFYWNoKHJlY29yZFBvc2l0aW9uKTtcclxuICAgICAgICAgICAgY29uc3QgbW92ZWRDaGlsZHJlbiA9IHByZXZDaGlsZHJlbi5maWx0ZXIoYXBwbHlUcmFuc2xhdGlvbik7XHJcbiAgICAgICAgICAgIC8vIGZvcmNlIHJlZmxvdyB0byBwdXQgZXZlcnl0aGluZyBpbiBwb3NpdGlvblxyXG4gICAgICAgICAgICBmb3JjZVJlZmxvdygpO1xyXG4gICAgICAgICAgICBtb3ZlZENoaWxkcmVuLmZvckVhY2goYyA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlbCA9IGMuZWw7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdHlsZSA9IGVsLnN0eWxlO1xyXG4gICAgICAgICAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBtb3ZlQ2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgc3R5bGUudHJhbnNmb3JtID0gc3R5bGUud2Via2l0VHJhbnNmb3JtID0gc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gJyc7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjYiA9IChlbC5fbW92ZUNiID0gKGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZSAmJiBlLnRhcmdldCAhPT0gZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWUgfHwgL3RyYW5zZm9ybSQvLnRlc3QoZS5wcm9wZXJ0eU5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBjYik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsLl9tb3ZlQ2IgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIG1vdmVDbGFzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgY2IpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCByYXdQcm9wcyA9IHRvUmF3KHByb3BzKTtcclxuICAgICAgICAgICAgY29uc3QgY3NzVHJhbnNpdGlvblByb3BzID0gcmVzb2x2ZVRyYW5zaXRpb25Qcm9wcyhyYXdQcm9wcyk7XHJcbiAgICAgICAgICAgIGxldCB0YWcgPSByYXdQcm9wcy50YWcgfHwgRnJhZ21lbnQ7XHJcbiAgICAgICAgICAgIHByZXZDaGlsZHJlbiA9IGNoaWxkcmVuO1xyXG4gICAgICAgICAgICBjaGlsZHJlbiA9IHNsb3RzLmRlZmF1bHQgPyBnZXRUcmFuc2l0aW9uUmF3Q2hpbGRyZW4oc2xvdHMuZGVmYXVsdCgpKSA6IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkLmtleSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VHJhbnNpdGlvbkhvb2tzKGNoaWxkLCByZXNvbHZlVHJhbnNpdGlvbkhvb2tzKGNoaWxkLCBjc3NUcmFuc2l0aW9uUHJvcHMsIHN0YXRlLCBpbnN0YW5jZSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgPFRyYW5zaXRpb25Hcm91cD4gY2hpbGRyZW4gbXVzdCBiZSBrZXllZC5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocHJldkNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZXZDaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gcHJldkNoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRyYW5zaXRpb25Ib29rcyhjaGlsZCwgcmVzb2x2ZVRyYW5zaXRpb25Ib29rcyhjaGlsZCwgY3NzVHJhbnNpdGlvblByb3BzLCBzdGF0ZSwgaW5zdGFuY2UpKTtcclxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbk1hcC5zZXQoY2hpbGQsIGNoaWxkLmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlVk5vZGUodGFnLCBudWxsLCBjaGlsZHJlbik7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufTtcclxuY29uc3QgVHJhbnNpdGlvbkdyb3VwID0gVHJhbnNpdGlvbkdyb3VwSW1wbDtcclxuZnVuY3Rpb24gY2FsbFBlbmRpbmdDYnMoYykge1xyXG4gICAgY29uc3QgZWwgPSBjLmVsO1xyXG4gICAgaWYgKGVsLl9tb3ZlQ2IpIHtcclxuICAgICAgICBlbC5fbW92ZUNiKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoZWwuX2VudGVyQ2IpIHtcclxuICAgICAgICBlbC5fZW50ZXJDYigpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHJlY29yZFBvc2l0aW9uKGMpIHtcclxuICAgIG5ld1Bvc2l0aW9uTWFwLnNldChjLCBjLmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcclxufVxyXG5mdW5jdGlvbiBhcHBseVRyYW5zbGF0aW9uKGMpIHtcclxuICAgIGNvbnN0IG9sZFBvcyA9IHBvc2l0aW9uTWFwLmdldChjKTtcclxuICAgIGNvbnN0IG5ld1BvcyA9IG5ld1Bvc2l0aW9uTWFwLmdldChjKTtcclxuICAgIGNvbnN0IGR4ID0gb2xkUG9zLmxlZnQgLSBuZXdQb3MubGVmdDtcclxuICAgIGNvbnN0IGR5ID0gb2xkUG9zLnRvcCAtIG5ld1Bvcy50b3A7XHJcbiAgICBpZiAoZHggfHwgZHkpIHtcclxuICAgICAgICBjb25zdCBzID0gYy5lbC5zdHlsZTtcclxuICAgICAgICBzLnRyYW5zZm9ybSA9IHMud2Via2l0VHJhbnNmb3JtID0gYHRyYW5zbGF0ZSgke2R4fXB4LCR7ZHl9cHgpYDtcclxuICAgICAgICBzLnRyYW5zaXRpb25EdXJhdGlvbiA9ICcwcyc7XHJcbiAgICAgICAgcmV0dXJuIGM7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaGFzQ1NTVHJhbnNmb3JtKGVsLCByb290LCBtb3ZlQ2xhc3MpIHtcclxuICAgIC8vIERldGVjdCB3aGV0aGVyIGFuIGVsZW1lbnQgd2l0aCB0aGUgbW92ZSBjbGFzcyBhcHBsaWVkIGhhc1xyXG4gICAgLy8gQ1NTIHRyYW5zaXRpb25zLiBTaW5jZSB0aGUgZWxlbWVudCBtYXkgYmUgaW5zaWRlIGFuIGVudGVyaW5nXHJcbiAgICAvLyB0cmFuc2l0aW9uIGF0IHRoaXMgdmVyeSBtb21lbnQsIHdlIG1ha2UgYSBjbG9uZSBvZiBpdCBhbmQgcmVtb3ZlXHJcbiAgICAvLyBhbGwgb3RoZXIgdHJhbnNpdGlvbiBjbGFzc2VzIGFwcGxpZWQgdG8gZW5zdXJlIG9ubHkgdGhlIG1vdmUgY2xhc3NcclxuICAgIC8vIGlzIGFwcGxpZWQuXHJcbiAgICBjb25zdCBjbG9uZSA9IGVsLmNsb25lTm9kZSgpO1xyXG4gICAgaWYgKGVsLl92dGMpIHtcclxuICAgICAgICBlbC5fdnRjLmZvckVhY2goY2xzID0+IHtcclxuICAgICAgICAgICAgY2xzLnNwbGl0KC9cXHMrLykuZm9yRWFjaChjID0+IGMgJiYgY2xvbmUuY2xhc3NMaXN0LnJlbW92ZShjKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBtb3ZlQ2xhc3Muc3BsaXQoL1xccysvKS5mb3JFYWNoKGMgPT4gYyAmJiBjbG9uZS5jbGFzc0xpc3QuYWRkKGMpKTtcclxuICAgIGNsb25lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICBjb25zdCBjb250YWluZXIgPSAocm9vdC5ub2RlVHlwZSA9PT0gMSA/IHJvb3QgOiByb290LnBhcmVudE5vZGUpO1xyXG4gICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGNsb25lKTtcclxuICAgIGNvbnN0IHsgaGFzVHJhbnNmb3JtIH0gPSBnZXRUcmFuc2l0aW9uSW5mbyhjbG9uZSk7XHJcbiAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQoY2xvbmUpO1xyXG4gICAgcmV0dXJuIGhhc1RyYW5zZm9ybTtcclxufVxuXG5jb25zdCBnZXRNb2RlbEFzc2lnbmVyID0gKHZub2RlKSA9PiB7XHJcbiAgICBjb25zdCBmbiA9IHZub2RlLnByb3BzWydvblVwZGF0ZTptb2RlbFZhbHVlJ10gfHxcclxuICAgICAgICAoZmFsc2UgKTtcclxuICAgIHJldHVybiBpc0FycmF5KGZuKSA/IHZhbHVlID0+IGludm9rZUFycmF5Rm5zKGZuLCB2YWx1ZSkgOiBmbjtcclxufTtcclxuZnVuY3Rpb24gb25Db21wb3NpdGlvblN0YXJ0KGUpIHtcclxuICAgIGUudGFyZ2V0LmNvbXBvc2luZyA9IHRydWU7XHJcbn1cclxuZnVuY3Rpb24gb25Db21wb3NpdGlvbkVuZChlKSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldDtcclxuICAgIGlmICh0YXJnZXQuY29tcG9zaW5nKSB7XHJcbiAgICAgICAgdGFyZ2V0LmNvbXBvc2luZyA9IGZhbHNlO1xyXG4gICAgICAgIHRhcmdldC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnKSk7XHJcbiAgICB9XHJcbn1cclxuLy8gV2UgYXJlIGV4cG9ydGluZyB0aGUgdi1tb2RlbCBydW50aW1lIGRpcmVjdGx5IGFzIHZub2RlIGhvb2tzIHNvIHRoYXQgaXQgY2FuXHJcbi8vIGJlIHRyZWUtc2hha2VuIGluIGNhc2Ugdi1tb2RlbCBpcyBuZXZlciB1c2VkLlxyXG5jb25zdCB2TW9kZWxUZXh0ID0ge1xyXG4gICAgY3JlYXRlZChlbCwgeyBtb2RpZmllcnM6IHsgbGF6eSwgdHJpbSwgbnVtYmVyIH0gfSwgdm5vZGUpIHtcclxuICAgICAgICBlbC5fYXNzaWduID0gZ2V0TW9kZWxBc3NpZ25lcih2bm9kZSk7XHJcbiAgICAgICAgY29uc3QgY2FzdFRvTnVtYmVyID0gbnVtYmVyIHx8ICh2bm9kZS5wcm9wcyAmJiB2bm9kZS5wcm9wcy50eXBlID09PSAnbnVtYmVyJyk7XHJcbiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcihlbCwgbGF6eSA/ICdjaGFuZ2UnIDogJ2lucHV0JywgZSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlLnRhcmdldC5jb21wb3NpbmcpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIGxldCBkb21WYWx1ZSA9IGVsLnZhbHVlO1xyXG4gICAgICAgICAgICBpZiAodHJpbSkge1xyXG4gICAgICAgICAgICAgICAgZG9tVmFsdWUgPSBkb21WYWx1ZS50cmltKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNhc3RUb051bWJlcikge1xyXG4gICAgICAgICAgICAgICAgZG9tVmFsdWUgPSB0b051bWJlcihkb21WYWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWwuX2Fzc2lnbihkb21WYWx1ZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKHRyaW0pIHtcclxuICAgICAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcihlbCwgJ2NoYW5nZScsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGVsLnZhbHVlID0gZWwudmFsdWUudHJpbSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFsYXp5KSB7XHJcbiAgICAgICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoZWwsICdjb21wb3NpdGlvbnN0YXJ0Jywgb25Db21wb3NpdGlvblN0YXJ0KTtcclxuICAgICAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcihlbCwgJ2NvbXBvc2l0aW9uZW5kJywgb25Db21wb3NpdGlvbkVuZCk7XHJcbiAgICAgICAgICAgIC8vIFNhZmFyaSA8IDEwLjIgJiBVSVdlYlZpZXcgZG9lc24ndCBmaXJlIGNvbXBvc2l0aW9uZW5kIHdoZW5cclxuICAgICAgICAgICAgLy8gc3dpdGNoaW5nIGZvY3VzIGJlZm9yZSBjb25maXJtaW5nIGNvbXBvc2l0aW9uIGNob2ljZVxyXG4gICAgICAgICAgICAvLyB0aGlzIGFsc28gZml4ZXMgdGhlIGlzc3VlIHdoZXJlIHNvbWUgYnJvd3NlcnMgZS5nLiBpT1MgQ2hyb21lXHJcbiAgICAgICAgICAgIC8vIGZpcmVzIFwiY2hhbmdlXCIgaW5zdGVhZCBvZiBcImlucHV0XCIgb24gYXV0b2NvbXBsZXRlLlxyXG4gICAgICAgICAgICBhZGRFdmVudExpc3RlbmVyKGVsLCAnY2hhbmdlJywgb25Db21wb3NpdGlvbkVuZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8vIHNldCB2YWx1ZSBvbiBtb3VudGVkIHNvIGl0J3MgYWZ0ZXIgbWluL21heCBmb3IgdHlwZT1cInJhbmdlXCJcclxuICAgIG1vdW50ZWQoZWwsIHsgdmFsdWUgfSkge1xyXG4gICAgICAgIGVsLnZhbHVlID0gdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWU7XHJcbiAgICB9LFxyXG4gICAgYmVmb3JlVXBkYXRlKGVsLCB7IHZhbHVlLCBtb2RpZmllcnM6IHsgbGF6eSwgdHJpbSwgbnVtYmVyIH0gfSwgdm5vZGUpIHtcclxuICAgICAgICBlbC5fYXNzaWduID0gZ2V0TW9kZWxBc3NpZ25lcih2bm9kZSk7XHJcbiAgICAgICAgLy8gYXZvaWQgY2xlYXJpbmcgdW5yZXNvbHZlZCB0ZXh0LiAjMjMwMlxyXG4gICAgICAgIGlmIChlbC5jb21wb3NpbmcpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gZWwgJiYgZWwudHlwZSAhPT0gJ3JhbmdlJykge1xyXG4gICAgICAgICAgICBpZiAobGF6eSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0cmltICYmIGVsLnZhbHVlLnRyaW0oKSA9PT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKG51bWJlciB8fCBlbC50eXBlID09PSAnbnVtYmVyJykgJiYgdG9OdW1iZXIoZWwudmFsdWUpID09PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWU7XHJcbiAgICAgICAgaWYgKGVsLnZhbHVlICE9PSBuZXdWYWx1ZSkge1xyXG4gICAgICAgICAgICBlbC52YWx1ZSA9IG5ld1ZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuY29uc3Qgdk1vZGVsQ2hlY2tib3ggPSB7XHJcbiAgICAvLyAjNDA5NiBhcnJheSBjaGVja2JveGVzIG5lZWQgdG8gYmUgZGVlcCB0cmF2ZXJzZWRcclxuICAgIGRlZXA6IHRydWUsXHJcbiAgICBjcmVhdGVkKGVsLCBfLCB2bm9kZSkge1xyXG4gICAgICAgIGVsLl9hc3NpZ24gPSBnZXRNb2RlbEFzc2lnbmVyKHZub2RlKTtcclxuICAgICAgICBhZGRFdmVudExpc3RlbmVyKGVsLCAnY2hhbmdlJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtb2RlbFZhbHVlID0gZWwuX21vZGVsVmFsdWU7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRWYWx1ZSA9IGdldFZhbHVlKGVsKTtcclxuICAgICAgICAgICAgY29uc3QgY2hlY2tlZCA9IGVsLmNoZWNrZWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGFzc2lnbiA9IGVsLl9hc3NpZ247XHJcbiAgICAgICAgICAgIGlmIChpc0FycmF5KG1vZGVsVmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGxvb3NlSW5kZXhPZihtb2RlbFZhbHVlLCBlbGVtZW50VmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZm91bmQgPSBpbmRleCAhPT0gLTE7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hlY2tlZCAmJiAhZm91bmQpIHtcclxuICAgICAgICAgICAgICAgICAgICBhc3NpZ24obW9kZWxWYWx1ZS5jb25jYXQoZWxlbWVudFZhbHVlKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICghY2hlY2tlZCAmJiBmb3VuZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkID0gWy4uLm1vZGVsVmFsdWVdO1xyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYXNzaWduKGZpbHRlcmVkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChpc1NldChtb2RlbFZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvbmVkID0gbmV3IFNldChtb2RlbFZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGlmIChjaGVja2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xvbmVkLmFkZChlbGVtZW50VmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xvbmVkLmRlbGV0ZShlbGVtZW50VmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYXNzaWduKGNsb25lZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBhc3NpZ24oZ2V0Q2hlY2tib3hWYWx1ZShlbCwgY2hlY2tlZCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9LFxyXG4gICAgLy8gc2V0IGluaXRpYWwgY2hlY2tlZCBvbiBtb3VudCB0byB3YWl0IGZvciB0cnVlLXZhbHVlL2ZhbHNlLXZhbHVlXHJcbiAgICBtb3VudGVkOiBzZXRDaGVja2VkLFxyXG4gICAgYmVmb3JlVXBkYXRlKGVsLCBiaW5kaW5nLCB2bm9kZSkge1xyXG4gICAgICAgIGVsLl9hc3NpZ24gPSBnZXRNb2RlbEFzc2lnbmVyKHZub2RlKTtcclxuICAgICAgICBzZXRDaGVja2VkKGVsLCBiaW5kaW5nLCB2bm9kZSk7XHJcbiAgICB9XHJcbn07XHJcbmZ1bmN0aW9uIHNldENoZWNrZWQoZWwsIHsgdmFsdWUsIG9sZFZhbHVlIH0sIHZub2RlKSB7XHJcbiAgICBlbC5fbW9kZWxWYWx1ZSA9IHZhbHVlO1xyXG4gICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgZWwuY2hlY2tlZCA9IGxvb3NlSW5kZXhPZih2YWx1ZSwgdm5vZGUucHJvcHMudmFsdWUpID4gLTE7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc1NldCh2YWx1ZSkpIHtcclxuICAgICAgICBlbC5jaGVja2VkID0gdmFsdWUuaGFzKHZub2RlLnByb3BzLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHZhbHVlICE9PSBvbGRWYWx1ZSkge1xyXG4gICAgICAgIGVsLmNoZWNrZWQgPSBsb29zZUVxdWFsKHZhbHVlLCBnZXRDaGVja2JveFZhbHVlKGVsLCB0cnVlKSk7XHJcbiAgICB9XHJcbn1cclxuY29uc3Qgdk1vZGVsUmFkaW8gPSB7XHJcbiAgICBjcmVhdGVkKGVsLCB7IHZhbHVlIH0sIHZub2RlKSB7XHJcbiAgICAgICAgZWwuY2hlY2tlZCA9IGxvb3NlRXF1YWwodmFsdWUsIHZub2RlLnByb3BzLnZhbHVlKTtcclxuICAgICAgICBlbC5fYXNzaWduID0gZ2V0TW9kZWxBc3NpZ25lcih2bm9kZSk7XHJcbiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcihlbCwgJ2NoYW5nZScsICgpID0+IHtcclxuICAgICAgICAgICAgZWwuX2Fzc2lnbihnZXRWYWx1ZShlbCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSxcclxuICAgIGJlZm9yZVVwZGF0ZShlbCwgeyB2YWx1ZSwgb2xkVmFsdWUgfSwgdm5vZGUpIHtcclxuICAgICAgICBlbC5fYXNzaWduID0gZ2V0TW9kZWxBc3NpZ25lcih2bm9kZSk7XHJcbiAgICAgICAgaWYgKHZhbHVlICE9PSBvbGRWYWx1ZSkge1xyXG4gICAgICAgICAgICBlbC5jaGVja2VkID0gbG9vc2VFcXVhbCh2YWx1ZSwgdm5vZGUucHJvcHMudmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuY29uc3Qgdk1vZGVsU2VsZWN0ID0ge1xyXG4gICAgLy8gPHNlbGVjdCBtdWx0aXBsZT4gdmFsdWUgbmVlZCB0byBiZSBkZWVwIHRyYXZlcnNlZFxyXG4gICAgZGVlcDogdHJ1ZSxcclxuICAgIGNyZWF0ZWQoZWwsIHsgdmFsdWUsIG1vZGlmaWVyczogeyBudW1iZXIgfSB9LCB2bm9kZSkge1xyXG4gICAgICAgIGNvbnN0IGlzU2V0TW9kZWwgPSBpc1NldCh2YWx1ZSk7XHJcbiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcihlbCwgJ2NoYW5nZScsICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRWYWwgPSBBcnJheS5wcm90b3R5cGUuZmlsdGVyXHJcbiAgICAgICAgICAgICAgICAuY2FsbChlbC5vcHRpb25zLCAobykgPT4gby5zZWxlY3RlZClcclxuICAgICAgICAgICAgICAgIC5tYXAoKG8pID0+IG51bWJlciA/IHRvTnVtYmVyKGdldFZhbHVlKG8pKSA6IGdldFZhbHVlKG8pKTtcclxuICAgICAgICAgICAgZWwuX2Fzc2lnbihlbC5tdWx0aXBsZVxyXG4gICAgICAgICAgICAgICAgPyBpc1NldE1vZGVsXHJcbiAgICAgICAgICAgICAgICAgICAgPyBuZXcgU2V0KHNlbGVjdGVkVmFsKVxyXG4gICAgICAgICAgICAgICAgICAgIDogc2VsZWN0ZWRWYWxcclxuICAgICAgICAgICAgICAgIDogc2VsZWN0ZWRWYWxbMF0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGVsLl9hc3NpZ24gPSBnZXRNb2RlbEFzc2lnbmVyKHZub2RlKTtcclxuICAgIH0sXHJcbiAgICAvLyBzZXQgdmFsdWUgaW4gbW91bnRlZCAmIHVwZGF0ZWQgYmVjYXVzZSA8c2VsZWN0PiByZWxpZXMgb24gaXRzIGNoaWxkcmVuXHJcbiAgICAvLyA8b3B0aW9uPnMuXHJcbiAgICBtb3VudGVkKGVsLCB7IHZhbHVlIH0pIHtcclxuICAgICAgICBzZXRTZWxlY3RlZChlbCwgdmFsdWUpO1xyXG4gICAgfSxcclxuICAgIGJlZm9yZVVwZGF0ZShlbCwgX2JpbmRpbmcsIHZub2RlKSB7XHJcbiAgICAgICAgZWwuX2Fzc2lnbiA9IGdldE1vZGVsQXNzaWduZXIodm5vZGUpO1xyXG4gICAgfSxcclxuICAgIHVwZGF0ZWQoZWwsIHsgdmFsdWUgfSkge1xyXG4gICAgICAgIHNldFNlbGVjdGVkKGVsLCB2YWx1ZSk7XHJcbiAgICB9XHJcbn07XHJcbmZ1bmN0aW9uIHNldFNlbGVjdGVkKGVsLCB2YWx1ZSkge1xyXG4gICAgY29uc3QgaXNNdWx0aXBsZSA9IGVsLm11bHRpcGxlO1xyXG4gICAgaWYgKGlzTXVsdGlwbGUgJiYgIWlzQXJyYXkodmFsdWUpICYmICFpc1NldCh2YWx1ZSkpIHtcclxuICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgd2FybihgPHNlbGVjdCBtdWx0aXBsZSB2LW1vZGVsPiBleHBlY3RzIGFuIEFycmF5IG9yIFNldCB2YWx1ZSBmb3IgaXRzIGJpbmRpbmcsIGAgK1xyXG4gICAgICAgICAgICAgICAgYGJ1dCBnb3QgJHtPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLnNsaWNlKDgsIC0xKX0uYCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBlbC5vcHRpb25zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IGVsLm9wdGlvbnNbaV07XHJcbiAgICAgICAgY29uc3Qgb3B0aW9uVmFsdWUgPSBnZXRWYWx1ZShvcHRpb24pO1xyXG4gICAgICAgIGlmIChpc011bHRpcGxlKSB7XHJcbiAgICAgICAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gbG9vc2VJbmRleE9mKHZhbHVlLCBvcHRpb25WYWx1ZSkgPiAtMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IHZhbHVlLmhhcyhvcHRpb25WYWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChsb29zZUVxdWFsKGdldFZhbHVlKG9wdGlvbiksIHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVsLnNlbGVjdGVkSW5kZXggIT09IGkpXHJcbiAgICAgICAgICAgICAgICAgICAgZWwuc2VsZWN0ZWRJbmRleCA9IGk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzTXVsdGlwbGUgJiYgZWwuc2VsZWN0ZWRJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICBlbC5zZWxlY3RlZEluZGV4ID0gLTE7XHJcbiAgICB9XHJcbn1cclxuLy8gcmV0cmlldmUgcmF3IHZhbHVlIHNldCB2aWEgOnZhbHVlIGJpbmRpbmdzXHJcbmZ1bmN0aW9uIGdldFZhbHVlKGVsKSB7XHJcbiAgICByZXR1cm4gJ192YWx1ZScgaW4gZWwgPyBlbC5fdmFsdWUgOiBlbC52YWx1ZTtcclxufVxyXG4vLyByZXRyaWV2ZSByYXcgdmFsdWUgZm9yIHRydWUtdmFsdWUgYW5kIGZhbHNlLXZhbHVlIHNldCB2aWEgOnRydWUtdmFsdWUgb3IgOmZhbHNlLXZhbHVlIGJpbmRpbmdzXHJcbmZ1bmN0aW9uIGdldENoZWNrYm94VmFsdWUoZWwsIGNoZWNrZWQpIHtcclxuICAgIGNvbnN0IGtleSA9IGNoZWNrZWQgPyAnX3RydWVWYWx1ZScgOiAnX2ZhbHNlVmFsdWUnO1xyXG4gICAgcmV0dXJuIGtleSBpbiBlbCA/IGVsW2tleV0gOiBjaGVja2VkO1xyXG59XHJcbmNvbnN0IHZNb2RlbER5bmFtaWMgPSB7XHJcbiAgICBjcmVhdGVkKGVsLCBiaW5kaW5nLCB2bm9kZSkge1xyXG4gICAgICAgIGNhbGxNb2RlbEhvb2soZWwsIGJpbmRpbmcsIHZub2RlLCBudWxsLCAnY3JlYXRlZCcpO1xyXG4gICAgfSxcclxuICAgIG1vdW50ZWQoZWwsIGJpbmRpbmcsIHZub2RlKSB7XHJcbiAgICAgICAgY2FsbE1vZGVsSG9vayhlbCwgYmluZGluZywgdm5vZGUsIG51bGwsICdtb3VudGVkJyk7XHJcbiAgICB9LFxyXG4gICAgYmVmb3JlVXBkYXRlKGVsLCBiaW5kaW5nLCB2bm9kZSwgcHJldlZOb2RlKSB7XHJcbiAgICAgICAgY2FsbE1vZGVsSG9vayhlbCwgYmluZGluZywgdm5vZGUsIHByZXZWTm9kZSwgJ2JlZm9yZVVwZGF0ZScpO1xyXG4gICAgfSxcclxuICAgIHVwZGF0ZWQoZWwsIGJpbmRpbmcsIHZub2RlLCBwcmV2Vk5vZGUpIHtcclxuICAgICAgICBjYWxsTW9kZWxIb29rKGVsLCBiaW5kaW5nLCB2bm9kZSwgcHJldlZOb2RlLCAndXBkYXRlZCcpO1xyXG4gICAgfVxyXG59O1xyXG5mdW5jdGlvbiByZXNvbHZlRHluYW1pY01vZGVsKHRhZ05hbWUsIHR5cGUpIHtcclxuICAgIHN3aXRjaCAodGFnTmFtZSkge1xyXG4gICAgICAgIGNhc2UgJ1NFTEVDVCc6XHJcbiAgICAgICAgICAgIHJldHVybiB2TW9kZWxTZWxlY3Q7XHJcbiAgICAgICAgY2FzZSAnVEVYVEFSRUEnOlxyXG4gICAgICAgICAgICByZXR1cm4gdk1vZGVsVGV4dDtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2NoZWNrYm94JzpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdk1vZGVsQ2hlY2tib3g7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdyYWRpbyc6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZNb2RlbFJhZGlvO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdk1vZGVsVGV4dDtcclxuICAgICAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGNhbGxNb2RlbEhvb2soZWwsIGJpbmRpbmcsIHZub2RlLCBwcmV2Vk5vZGUsIGhvb2spIHtcclxuICAgIGNvbnN0IG1vZGVsVG9Vc2UgPSByZXNvbHZlRHluYW1pY01vZGVsKGVsLnRhZ05hbWUsIHZub2RlLnByb3BzICYmIHZub2RlLnByb3BzLnR5cGUpO1xyXG4gICAgY29uc3QgZm4gPSBtb2RlbFRvVXNlW2hvb2tdO1xyXG4gICAgZm4gJiYgZm4oZWwsIGJpbmRpbmcsIHZub2RlLCBwcmV2Vk5vZGUpO1xyXG59XHJcbi8vIFNTUiB2bm9kZSB0cmFuc2Zvcm1zLCBvbmx5IHVzZWQgd2hlbiB1c2VyIGluY2x1ZGVzIGNsaWVudC1vcmllbnRlZCByZW5kZXJcclxuLy8gZnVuY3Rpb24gaW4gU1NSXHJcbmZ1bmN0aW9uIGluaXRWTW9kZWxGb3JTU1IoKSB7XHJcbiAgICB2TW9kZWxUZXh0LmdldFNTUlByb3BzID0gKHsgdmFsdWUgfSkgPT4gKHsgdmFsdWUgfSk7XHJcbiAgICB2TW9kZWxSYWRpby5nZXRTU1JQcm9wcyA9ICh7IHZhbHVlIH0sIHZub2RlKSA9PiB7XHJcbiAgICAgICAgaWYgKHZub2RlLnByb3BzICYmIGxvb3NlRXF1YWwodm5vZGUucHJvcHMudmFsdWUsIHZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4geyBjaGVja2VkOiB0cnVlIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHZNb2RlbENoZWNrYm94LmdldFNTUlByb3BzID0gKHsgdmFsdWUgfSwgdm5vZGUpID0+IHtcclxuICAgICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgaWYgKHZub2RlLnByb3BzICYmIGxvb3NlSW5kZXhPZih2YWx1ZSwgdm5vZGUucHJvcHMudmFsdWUpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IGNoZWNrZWQ6IHRydWUgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpc1NldCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgaWYgKHZub2RlLnByb3BzICYmIHZhbHVlLmhhcyh2bm9kZS5wcm9wcy52YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IGNoZWNrZWQ6IHRydWUgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4geyBjaGVja2VkOiB0cnVlIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHZNb2RlbER5bmFtaWMuZ2V0U1NSUHJvcHMgPSAoYmluZGluZywgdm5vZGUpID0+IHtcclxuICAgICAgICBpZiAodHlwZW9mIHZub2RlLnR5cGUgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbW9kZWxUb1VzZSA9IHJlc29sdmVEeW5hbWljTW9kZWwoXHJcbiAgICAgICAgLy8gcmVzb2x2ZUR5bmFtaWNNb2RlbCBleHBlY3RzIGFuIHVwcGVyY2FzZSB0YWcgbmFtZSwgYnV0IHZub2RlLnR5cGUgaXMgbG93ZXJjYXNlXHJcbiAgICAgICAgdm5vZGUudHlwZS50b1VwcGVyQ2FzZSgpLCB2bm9kZS5wcm9wcyAmJiB2bm9kZS5wcm9wcy50eXBlKTtcclxuICAgICAgICBpZiAobW9kZWxUb1VzZS5nZXRTU1JQcm9wcykge1xyXG4gICAgICAgICAgICByZXR1cm4gbW9kZWxUb1VzZS5nZXRTU1JQcm9wcyhiaW5kaW5nLCB2bm9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxuXG5jb25zdCBzeXN0ZW1Nb2RpZmllcnMgPSBbJ2N0cmwnLCAnc2hpZnQnLCAnYWx0JywgJ21ldGEnXTtcclxuY29uc3QgbW9kaWZpZXJHdWFyZHMgPSB7XHJcbiAgICBzdG9wOiBlID0+IGUuc3RvcFByb3BhZ2F0aW9uKCksXHJcbiAgICBwcmV2ZW50OiBlID0+IGUucHJldmVudERlZmF1bHQoKSxcclxuICAgIHNlbGY6IGUgPT4gZS50YXJnZXQgIT09IGUuY3VycmVudFRhcmdldCxcclxuICAgIGN0cmw6IGUgPT4gIWUuY3RybEtleSxcclxuICAgIHNoaWZ0OiBlID0+ICFlLnNoaWZ0S2V5LFxyXG4gICAgYWx0OiBlID0+ICFlLmFsdEtleSxcclxuICAgIG1ldGE6IGUgPT4gIWUubWV0YUtleSxcclxuICAgIGxlZnQ6IGUgPT4gJ2J1dHRvbicgaW4gZSAmJiBlLmJ1dHRvbiAhPT0gMCxcclxuICAgIG1pZGRsZTogZSA9PiAnYnV0dG9uJyBpbiBlICYmIGUuYnV0dG9uICE9PSAxLFxyXG4gICAgcmlnaHQ6IGUgPT4gJ2J1dHRvbicgaW4gZSAmJiBlLmJ1dHRvbiAhPT0gMixcclxuICAgIGV4YWN0OiAoZSwgbW9kaWZpZXJzKSA9PiBzeXN0ZW1Nb2RpZmllcnMuc29tZShtID0+IGVbYCR7bX1LZXlgXSAmJiAhbW9kaWZpZXJzLmluY2x1ZGVzKG0pKVxyXG59O1xyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmNvbnN0IHdpdGhNb2RpZmllcnMgPSAoZm4sIG1vZGlmaWVycykgPT4ge1xyXG4gICAgcmV0dXJuIChldmVudCwgLi4uYXJncykgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW9kaWZpZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGd1YXJkID0gbW9kaWZpZXJHdWFyZHNbbW9kaWZpZXJzW2ldXTtcclxuICAgICAgICAgICAgaWYgKGd1YXJkICYmIGd1YXJkKGV2ZW50LCBtb2RpZmllcnMpKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZm4oZXZlbnQsIC4uLmFyZ3MpO1xyXG4gICAgfTtcclxufTtcclxuLy8gS2VwdCBmb3IgMi54IGNvbXBhdC5cclxuLy8gTm90ZTogSUUxMSBjb21wYXQgZm9yIGBzcGFjZWJhcmAgYW5kIGBkZWxgIGlzIHJlbW92ZWQgZm9yIG5vdy5cclxuY29uc3Qga2V5TmFtZXMgPSB7XHJcbiAgICBlc2M6ICdlc2NhcGUnLFxyXG4gICAgc3BhY2U6ICcgJyxcclxuICAgIHVwOiAnYXJyb3ctdXAnLFxyXG4gICAgbGVmdDogJ2Fycm93LWxlZnQnLFxyXG4gICAgcmlnaHQ6ICdhcnJvdy1yaWdodCcsXHJcbiAgICBkb3duOiAnYXJyb3ctZG93bicsXHJcbiAgICBkZWxldGU6ICdiYWNrc3BhY2UnXHJcbn07XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuY29uc3Qgd2l0aEtleXMgPSAoZm4sIG1vZGlmaWVycykgPT4ge1xyXG4gICAgcmV0dXJuIChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmICghKCdrZXknIGluIGV2ZW50KSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGV2ZW50S2V5ID0gaHlwaGVuYXRlKGV2ZW50LmtleSk7XHJcbiAgICAgICAgaWYgKG1vZGlmaWVycy5zb21lKGsgPT4gayA9PT0gZXZlbnRLZXkgfHwga2V5TmFtZXNba10gPT09IGV2ZW50S2V5KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZm4oZXZlbnQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn07XG5cbmNvbnN0IHZTaG93ID0ge1xyXG4gICAgYmVmb3JlTW91bnQoZWwsIHsgdmFsdWUgfSwgeyB0cmFuc2l0aW9uIH0pIHtcclxuICAgICAgICBlbC5fdm9kID0gZWwuc3R5bGUuZGlzcGxheSA9PT0gJ25vbmUnID8gJycgOiBlbC5zdHlsZS5kaXNwbGF5O1xyXG4gICAgICAgIGlmICh0cmFuc2l0aW9uICYmIHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRyYW5zaXRpb24uYmVmb3JlRW50ZXIoZWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgc2V0RGlzcGxheShlbCwgdmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBtb3VudGVkKGVsLCB7IHZhbHVlIH0sIHsgdHJhbnNpdGlvbiB9KSB7XHJcbiAgICAgICAgaWYgKHRyYW5zaXRpb24gJiYgdmFsdWUpIHtcclxuICAgICAgICAgICAgdHJhbnNpdGlvbi5lbnRlcihlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIHVwZGF0ZWQoZWwsIHsgdmFsdWUsIG9sZFZhbHVlIH0sIHsgdHJhbnNpdGlvbiB9KSB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSA9PT0gIW9sZFZhbHVlKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgaWYgKHRyYW5zaXRpb24pIHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uLmJlZm9yZUVudGVyKGVsKTtcclxuICAgICAgICAgICAgICAgIHNldERpc3BsYXkoZWwsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbi5lbnRlcihlbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uLmxlYXZlKGVsLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0RGlzcGxheShlbCwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHNldERpc3BsYXkoZWwsIHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgYmVmb3JlVW5tb3VudChlbCwgeyB2YWx1ZSB9KSB7XHJcbiAgICAgICAgc2V0RGlzcGxheShlbCwgdmFsdWUpO1xyXG4gICAgfVxyXG59O1xyXG5mdW5jdGlvbiBzZXREaXNwbGF5KGVsLCB2YWx1ZSkge1xyXG4gICAgZWwuc3R5bGUuZGlzcGxheSA9IHZhbHVlID8gZWwuX3ZvZCA6ICdub25lJztcclxufVxyXG4vLyBTU1Igdm5vZGUgdHJhbnNmb3Jtcywgb25seSB1c2VkIHdoZW4gdXNlciBpbmNsdWRlcyBjbGllbnQtb3JpZW50ZWQgcmVuZGVyXHJcbi8vIGZ1bmN0aW9uIGluIFNTUlxyXG5mdW5jdGlvbiBpbml0VlNob3dGb3JTU1IoKSB7XHJcbiAgICB2U2hvdy5nZXRTU1JQcm9wcyA9ICh7IHZhbHVlIH0pID0+IHtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHN0eWxlOiB7IGRpc3BsYXk6ICdub25lJyB9IH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxuXG5jb25zdCByZW5kZXJlck9wdGlvbnMgPSAvKiNfX1BVUkVfXyovIGV4dGVuZCh7IHBhdGNoUHJvcCB9LCBub2RlT3BzKTtcclxuLy8gbGF6eSBjcmVhdGUgdGhlIHJlbmRlcmVyIC0gdGhpcyBtYWtlcyBjb3JlIHJlbmRlcmVyIGxvZ2ljIHRyZWUtc2hha2FibGVcclxuLy8gaW4gY2FzZSB0aGUgdXNlciBvbmx5IGltcG9ydHMgcmVhY3Rpdml0eSB1dGlsaXRpZXMgZnJvbSBWdWUuXHJcbmxldCByZW5kZXJlcjtcclxubGV0IGVuYWJsZWRIeWRyYXRpb24gPSBmYWxzZTtcclxuZnVuY3Rpb24gZW5zdXJlUmVuZGVyZXIoKSB7XHJcbiAgICByZXR1cm4gKHJlbmRlcmVyIHx8XHJcbiAgICAgICAgKHJlbmRlcmVyID0gY3JlYXRlUmVuZGVyZXIocmVuZGVyZXJPcHRpb25zKSkpO1xyXG59XHJcbmZ1bmN0aW9uIGVuc3VyZUh5ZHJhdGlvblJlbmRlcmVyKCkge1xyXG4gICAgcmVuZGVyZXIgPSBlbmFibGVkSHlkcmF0aW9uXHJcbiAgICAgICAgPyByZW5kZXJlclxyXG4gICAgICAgIDogY3JlYXRlSHlkcmF0aW9uUmVuZGVyZXIocmVuZGVyZXJPcHRpb25zKTtcclxuICAgIGVuYWJsZWRIeWRyYXRpb24gPSB0cnVlO1xyXG4gICAgcmV0dXJuIHJlbmRlcmVyO1xyXG59XHJcbi8vIHVzZSBleHBsaWNpdCB0eXBlIGNhc3RzIGhlcmUgdG8gYXZvaWQgaW1wb3J0KCkgY2FsbHMgaW4gcm9sbGVkLXVwIGQudHNcclxuY29uc3QgcmVuZGVyID0gKCguLi5hcmdzKSA9PiB7XHJcbiAgICBlbnN1cmVSZW5kZXJlcigpLnJlbmRlciguLi5hcmdzKTtcclxufSk7XHJcbmNvbnN0IGh5ZHJhdGUgPSAoKC4uLmFyZ3MpID0+IHtcclxuICAgIGVuc3VyZUh5ZHJhdGlvblJlbmRlcmVyKCkuaHlkcmF0ZSguLi5hcmdzKTtcclxufSk7XHJcbmNvbnN0IGNyZWF0ZUFwcCA9ICgoLi4uYXJncykgPT4ge1xyXG4gICAgY29uc3QgYXBwID0gZW5zdXJlUmVuZGVyZXIoKS5jcmVhdGVBcHAoLi4uYXJncyk7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgaW5qZWN0TmF0aXZlVGFnQ2hlY2soYXBwKTtcclxuICAgICAgICBpbmplY3RDb21waWxlck9wdGlvbnNDaGVjayhhcHApO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBtb3VudCB9ID0gYXBwO1xyXG4gICAgYXBwLm1vdW50ID0gKGNvbnRhaW5lck9yU2VsZWN0b3IpID0+IHtcclxuICAgICAgICBjb25zdCBjb250YWluZXIgPSBub3JtYWxpemVDb250YWluZXIoY29udGFpbmVyT3JTZWxlY3Rvcik7XHJcbiAgICAgICAgaWYgKCFjb250YWluZXIpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBjb25zdCBjb21wb25lbnQgPSBhcHAuX2NvbXBvbmVudDtcclxuICAgICAgICBpZiAoIWlzRnVuY3Rpb24oY29tcG9uZW50KSAmJiAhY29tcG9uZW50LnJlbmRlciAmJiAhY29tcG9uZW50LnRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgIC8vIF9fVU5TQUZFX19cclxuICAgICAgICAgICAgLy8gUmVhc29uOiBwb3RlbnRpYWwgZXhlY3V0aW9uIG9mIEpTIGV4cHJlc3Npb25zIGluIGluLURPTSB0ZW1wbGF0ZS5cclxuICAgICAgICAgICAgLy8gVGhlIHVzZXIgbXVzdCBtYWtlIHN1cmUgdGhlIGluLURPTSB0ZW1wbGF0ZSBpcyB0cnVzdGVkLiBJZiBpdCdzXHJcbiAgICAgICAgICAgIC8vIHJlbmRlcmVkIGJ5IHRoZSBzZXJ2ZXIsIHRoZSB0ZW1wbGF0ZSBzaG91bGQgbm90IGNvbnRhaW4gYW55IHVzZXIgZGF0YS5cclxuICAgICAgICAgICAgY29tcG9uZW50LnRlbXBsYXRlID0gY29udGFpbmVyLmlubmVySFRNTDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY2xlYXIgY29udGVudCBiZWZvcmUgbW91bnRpbmdcclxuICAgICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gJyc7XHJcbiAgICAgICAgY29uc3QgcHJveHkgPSBtb3VudChjb250YWluZXIsIGZhbHNlLCBjb250YWluZXIgaW5zdGFuY2VvZiBTVkdFbGVtZW50KTtcclxuICAgICAgICBpZiAoY29udGFpbmVyIGluc3RhbmNlb2YgRWxlbWVudCkge1xyXG4gICAgICAgICAgICBjb250YWluZXIucmVtb3ZlQXR0cmlidXRlKCd2LWNsb2FrJyk7XHJcbiAgICAgICAgICAgIGNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ2RhdGEtdi1hcHAnLCAnJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwcm94eTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gYXBwO1xyXG59KTtcclxuY29uc3QgY3JlYXRlU1NSQXBwID0gKCguLi5hcmdzKSA9PiB7XHJcbiAgICBjb25zdCBhcHAgPSBlbnN1cmVIeWRyYXRpb25SZW5kZXJlcigpLmNyZWF0ZUFwcCguLi5hcmdzKTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBpbmplY3ROYXRpdmVUYWdDaGVjayhhcHApO1xyXG4gICAgICAgIGluamVjdENvbXBpbGVyT3B0aW9uc0NoZWNrKGFwcCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IG1vdW50IH0gPSBhcHA7XHJcbiAgICBhcHAubW91bnQgPSAoY29udGFpbmVyT3JTZWxlY3RvcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IG5vcm1hbGl6ZUNvbnRhaW5lcihjb250YWluZXJPclNlbGVjdG9yKTtcclxuICAgICAgICBpZiAoY29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtb3VudChjb250YWluZXIsIHRydWUsIGNvbnRhaW5lciBpbnN0YW5jZW9mIFNWR0VsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICByZXR1cm4gYXBwO1xyXG59KTtcclxuZnVuY3Rpb24gaW5qZWN0TmF0aXZlVGFnQ2hlY2soYXBwKSB7XHJcbiAgICAvLyBJbmplY3QgYGlzTmF0aXZlVGFnYFxyXG4gICAgLy8gdGhpcyBpcyB1c2VkIGZvciBjb21wb25lbnQgbmFtZSB2YWxpZGF0aW9uIChkZXYgb25seSlcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhcHAuY29uZmlnLCAnaXNOYXRpdmVUYWcnLCB7XHJcbiAgICAgICAgdmFsdWU6ICh0YWcpID0+IGlzSFRNTFRhZyh0YWcpIHx8IGlzU1ZHVGFnKHRhZyksXHJcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlXHJcbiAgICB9KTtcclxufVxyXG4vLyBkZXYgb25seVxyXG5mdW5jdGlvbiBpbmplY3RDb21waWxlck9wdGlvbnNDaGVjayhhcHApIHtcclxuICAgIGlmIChpc1J1bnRpbWVPbmx5KCkpIHtcclxuICAgICAgICBjb25zdCBpc0N1c3RvbUVsZW1lbnQgPSBhcHAuY29uZmlnLmlzQ3VzdG9tRWxlbWVudDtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYXBwLmNvbmZpZywgJ2lzQ3VzdG9tRWxlbWVudCcsIHtcclxuICAgICAgICAgICAgZ2V0KCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzQ3VzdG9tRWxlbWVudDtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2V0KCkge1xyXG4gICAgICAgICAgICAgICAgd2FybihgVGhlIFxcYGlzQ3VzdG9tRWxlbWVudFxcYCBjb25maWcgb3B0aW9uIGlzIGRlcHJlY2F0ZWQuIFVzZSBgICtcclxuICAgICAgICAgICAgICAgICAgICBgXFxgY29tcGlsZXJPcHRpb25zLmlzQ3VzdG9tRWxlbWVudFxcYCBpbnN0ZWFkLmApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3QgY29tcGlsZXJPcHRpb25zID0gYXBwLmNvbmZpZy5jb21waWxlck9wdGlvbnM7XHJcbiAgICAgICAgY29uc3QgbXNnID0gYFRoZSBcXGBjb21waWxlck9wdGlvbnNcXGAgY29uZmlnIG9wdGlvbiBpcyBvbmx5IHJlc3BlY3RlZCB3aGVuIHVzaW5nIGAgK1xyXG4gICAgICAgICAgICBgYSBidWlsZCBvZiBWdWUuanMgdGhhdCBpbmNsdWRlcyB0aGUgcnVudGltZSBjb21waWxlciAoYWthIFwiZnVsbCBidWlsZFwiKS4gYCArXHJcbiAgICAgICAgICAgIGBTaW5jZSB5b3UgYXJlIHVzaW5nIHRoZSBydW50aW1lLW9ubHkgYnVpbGQsIFxcYGNvbXBpbGVyT3B0aW9uc1xcYCBgICtcclxuICAgICAgICAgICAgYG11c3QgYmUgcGFzc2VkIHRvIFxcYEB2dWUvY29tcGlsZXItZG9tXFxgIGluIHRoZSBidWlsZCBzZXR1cCBpbnN0ZWFkLlxcbmAgK1xyXG4gICAgICAgICAgICBgLSBGb3IgdnVlLWxvYWRlcjogcGFzcyBpdCB2aWEgdnVlLWxvYWRlcidzIFxcYGNvbXBpbGVyT3B0aW9uc1xcYCBsb2FkZXIgb3B0aW9uLlxcbmAgK1xyXG4gICAgICAgICAgICBgLSBGb3IgdnVlLWNsaTogc2VlIGh0dHBzOi8vY2xpLnZ1ZWpzLm9yZy9ndWlkZS93ZWJwYWNrLmh0bWwjbW9kaWZ5aW5nLW9wdGlvbnMtb2YtYS1sb2FkZXJcXG5gICtcclxuICAgICAgICAgICAgYC0gRm9yIHZpdGU6IHBhc3MgaXQgdmlhIEB2aXRlanMvcGx1Z2luLXZ1ZSBvcHRpb25zLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3ZpdGVqcy92aXRlL3RyZWUvbWFpbi9wYWNrYWdlcy9wbHVnaW4tdnVlI2V4YW1wbGUtZm9yLXBhc3Npbmctb3B0aW9ucy10by12dWVjb21waWxlci1kb21gO1xyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhcHAuY29uZmlnLCAnY29tcGlsZXJPcHRpb25zJywge1xyXG4gICAgICAgICAgICBnZXQoKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKG1zZyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJPcHRpb25zO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzZXQoKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKG1zZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBub3JtYWxpemVDb250YWluZXIoY29udGFpbmVyKSB7XHJcbiAgICBpZiAoaXNTdHJpbmcoY29udGFpbmVyKSkge1xyXG4gICAgICAgIGNvbnN0IHJlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoY29udGFpbmVyKTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFyZXMpIHtcclxuICAgICAgICAgICAgd2FybihgRmFpbGVkIHRvIG1vdW50IGFwcDogbW91bnQgdGFyZ2V0IHNlbGVjdG9yIFwiJHtjb250YWluZXJ9XCIgcmV0dXJuZWQgbnVsbC5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgIH1cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICB3aW5kb3cuU2hhZG93Um9vdCAmJlxyXG4gICAgICAgIGNvbnRhaW5lciBpbnN0YW5jZW9mIHdpbmRvdy5TaGFkb3dSb290ICYmXHJcbiAgICAgICAgY29udGFpbmVyLm1vZGUgPT09ICdjbG9zZWQnKSB7XHJcbiAgICAgICAgd2FybihgbW91bnRpbmcgb24gYSBTaGFkb3dSb290IHdpdGggXFxge21vZGU6IFwiY2xvc2VkXCJ9XFxgIG1heSBsZWFkIHRvIHVucHJlZGljdGFibGUgYnVnc2ApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbnRhaW5lcjtcclxufVxyXG5sZXQgc3NyRGlyZWN0aXZlSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuLyoqXHJcbiAqIEBpbnRlcm5hbFxyXG4gKi9cclxuY29uc3QgaW5pdERpcmVjdGl2ZXNGb3JTU1IgPSAoKSA9PiB7XHJcbiAgICAgICAgaWYgKCFzc3JEaXJlY3RpdmVJbml0aWFsaXplZCkge1xyXG4gICAgICAgICAgICBzc3JEaXJlY3RpdmVJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGluaXRWTW9kZWxGb3JTU1IoKTtcclxuICAgICAgICAgICAgaW5pdFZTaG93Rm9yU1NSKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgO1xuXG5leHBvcnQgeyBUcmFuc2l0aW9uLCBUcmFuc2l0aW9uR3JvdXAsIFZ1ZUVsZW1lbnQsIGNyZWF0ZUFwcCwgY3JlYXRlU1NSQXBwLCBkZWZpbmVDdXN0b21FbGVtZW50LCBkZWZpbmVTU1JDdXN0b21FbGVtZW50LCBoeWRyYXRlLCBpbml0RGlyZWN0aXZlc0ZvclNTUiwgcmVuZGVyLCB1c2VDc3NNb2R1bGUsIHVzZUNzc1ZhcnMsIHZNb2RlbENoZWNrYm94LCB2TW9kZWxEeW5hbWljLCB2TW9kZWxSYWRpbywgdk1vZGVsU2VsZWN0LCB2TW9kZWxUZXh0LCB2U2hvdywgd2l0aEtleXMsIHdpdGhNb2RpZmllcnMgfTtcbiIsIi8qKlxyXG4gKiBNYWtlIGEgbWFwIGFuZCByZXR1cm4gYSBmdW5jdGlvbiBmb3IgY2hlY2tpbmcgaWYgYSBrZXlcclxuICogaXMgaW4gdGhhdCBtYXAuXHJcbiAqIElNUE9SVEFOVDogYWxsIGNhbGxzIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBwcmVmaXhlZCB3aXRoXHJcbiAqIFxcL1xcKiNcXF9cXF9QVVJFXFxfXFxfXFwqXFwvXHJcbiAqIFNvIHRoYXQgcm9sbHVwIGNhbiB0cmVlLXNoYWtlIHRoZW0gaWYgbmVjZXNzYXJ5LlxyXG4gKi9cclxuZnVuY3Rpb24gbWFrZU1hcChzdHIsIGV4cGVjdHNMb3dlckNhc2UpIHtcclxuICAgIGNvbnN0IG1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbiAgICBjb25zdCBsaXN0ID0gc3RyLnNwbGl0KCcsJyk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBtYXBbbGlzdFtpXV0gPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGV4cGVjdHNMb3dlckNhc2UgPyB2YWwgPT4gISFtYXBbdmFsLnRvTG93ZXJDYXNlKCldIDogdmFsID0+ICEhbWFwW3ZhbF07XHJcbn1cblxuLyoqXHJcbiAqIGRldiBvbmx5IGZsYWcgLT4gbmFtZSBtYXBwaW5nXHJcbiAqL1xyXG5jb25zdCBQYXRjaEZsYWdOYW1lcyA9IHtcclxuICAgIFsxIC8qIFBhdGNoRmxhZ3MuVEVYVCAqL106IGBURVhUYCxcclxuICAgIFsyIC8qIFBhdGNoRmxhZ3MuQ0xBU1MgKi9dOiBgQ0xBU1NgLFxyXG4gICAgWzQgLyogUGF0Y2hGbGFncy5TVFlMRSAqL106IGBTVFlMRWAsXHJcbiAgICBbOCAvKiBQYXRjaEZsYWdzLlBST1BTICovXTogYFBST1BTYCxcclxuICAgIFsxNiAvKiBQYXRjaEZsYWdzLkZVTExfUFJPUFMgKi9dOiBgRlVMTF9QUk9QU2AsXHJcbiAgICBbMzIgLyogUGF0Y2hGbGFncy5IWURSQVRFX0VWRU5UUyAqL106IGBIWURSQVRFX0VWRU5UU2AsXHJcbiAgICBbNjQgLyogUGF0Y2hGbGFncy5TVEFCTEVfRlJBR01FTlQgKi9dOiBgU1RBQkxFX0ZSQUdNRU5UYCxcclxuICAgIFsxMjggLyogUGF0Y2hGbGFncy5LRVlFRF9GUkFHTUVOVCAqL106IGBLRVlFRF9GUkFHTUVOVGAsXHJcbiAgICBbMjU2IC8qIFBhdGNoRmxhZ3MuVU5LRVlFRF9GUkFHTUVOVCAqL106IGBVTktFWUVEX0ZSQUdNRU5UYCxcclxuICAgIFs1MTIgLyogUGF0Y2hGbGFncy5ORUVEX1BBVENIICovXTogYE5FRURfUEFUQ0hgLFxyXG4gICAgWzEwMjQgLyogUGF0Y2hGbGFncy5EWU5BTUlDX1NMT1RTICovXTogYERZTkFNSUNfU0xPVFNgLFxyXG4gICAgWzIwNDggLyogUGF0Y2hGbGFncy5ERVZfUk9PVF9GUkFHTUVOVCAqL106IGBERVZfUk9PVF9GUkFHTUVOVGAsXHJcbiAgICBbLTEgLyogUGF0Y2hGbGFncy5IT0lTVEVEICovXTogYEhPSVNURURgLFxyXG4gICAgWy0yIC8qIFBhdGNoRmxhZ3MuQkFJTCAqL106IGBCQUlMYFxyXG59O1xuXG4vKipcclxuICogRGV2IG9ubHlcclxuICovXHJcbmNvbnN0IHNsb3RGbGFnc1RleHQgPSB7XHJcbiAgICBbMSAvKiBTbG90RmxhZ3MuU1RBQkxFICovXTogJ1NUQUJMRScsXHJcbiAgICBbMiAvKiBTbG90RmxhZ3MuRFlOQU1JQyAqL106ICdEWU5BTUlDJyxcclxuICAgIFszIC8qIFNsb3RGbGFncy5GT1JXQVJERUQgKi9dOiAnRk9SV0FSREVEJ1xyXG59O1xuXG5jb25zdCBHTE9CQUxTX1dISVRFX0xJU1RFRCA9ICdJbmZpbml0eSx1bmRlZmluZWQsTmFOLGlzRmluaXRlLGlzTmFOLHBhcnNlRmxvYXQscGFyc2VJbnQsZGVjb2RlVVJJLCcgK1xyXG4gICAgJ2RlY29kZVVSSUNvbXBvbmVudCxlbmNvZGVVUkksZW5jb2RlVVJJQ29tcG9uZW50LE1hdGgsTnVtYmVyLERhdGUsQXJyYXksJyArXHJcbiAgICAnT2JqZWN0LEJvb2xlYW4sU3RyaW5nLFJlZ0V4cCxNYXAsU2V0LEpTT04sSW50bCxCaWdJbnQnO1xyXG5jb25zdCBpc0dsb2JhbGx5V2hpdGVsaXN0ZWQgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoR0xPQkFMU19XSElURV9MSVNURUQpO1xuXG5jb25zdCByYW5nZSA9IDI7XHJcbmZ1bmN0aW9uIGdlbmVyYXRlQ29kZUZyYW1lKHNvdXJjZSwgc3RhcnQgPSAwLCBlbmQgPSBzb3VyY2UubGVuZ3RoKSB7XHJcbiAgICAvLyBTcGxpdCB0aGUgY29udGVudCBpbnRvIGluZGl2aWR1YWwgbGluZXMgYnV0IGNhcHR1cmUgdGhlIG5ld2xpbmUgc2VxdWVuY2VcclxuICAgIC8vIHRoYXQgc2VwYXJhdGVkIGVhY2ggbGluZS4gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSB0aGUgYWN0dWFsIHNlcXVlbmNlIGlzXHJcbiAgICAvLyBuZWVkZWQgdG8gcHJvcGVybHkgdGFrZSBpbnRvIGFjY291bnQgdGhlIGZ1bGwgbGluZSBsZW5ndGggZm9yIG9mZnNldFxyXG4gICAgLy8gY29tcGFyaXNvblxyXG4gICAgbGV0IGxpbmVzID0gc291cmNlLnNwbGl0KC8oXFxyP1xcbikvKTtcclxuICAgIC8vIFNlcGFyYXRlIHRoZSBsaW5lcyBhbmQgbmV3bGluZSBzZXF1ZW5jZXMgaW50byBzZXBhcmF0ZSBhcnJheXMgZm9yIGVhc2llciByZWZlcmVuY2luZ1xyXG4gICAgY29uc3QgbmV3bGluZVNlcXVlbmNlcyA9IGxpbmVzLmZpbHRlcigoXywgaWR4KSA9PiBpZHggJSAyID09PSAxKTtcclxuICAgIGxpbmVzID0gbGluZXMuZmlsdGVyKChfLCBpZHgpID0+IGlkeCAlIDIgPT09IDApO1xyXG4gICAgbGV0IGNvdW50ID0gMDtcclxuICAgIGNvbnN0IHJlcyA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvdW50ICs9XHJcbiAgICAgICAgICAgIGxpbmVzW2ldLmxlbmd0aCArXHJcbiAgICAgICAgICAgICAgICAoKG5ld2xpbmVTZXF1ZW5jZXNbaV0gJiYgbmV3bGluZVNlcXVlbmNlc1tpXS5sZW5ndGgpIHx8IDApO1xyXG4gICAgICAgIGlmIChjb3VudCA+PSBzdGFydCkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gaSAtIHJhbmdlOyBqIDw9IGkgKyByYW5nZSB8fCBlbmQgPiBjb3VudDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaiA8IDAgfHwgaiA+PSBsaW5lcy5sZW5ndGgpXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lID0gaiArIDE7XHJcbiAgICAgICAgICAgICAgICByZXMucHVzaChgJHtsaW5lfSR7JyAnLnJlcGVhdChNYXRoLm1heCgzIC0gU3RyaW5nKGxpbmUpLmxlbmd0aCwgMCkpfXwgICR7bGluZXNbal19YCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lTGVuZ3RoID0gbGluZXNbal0ubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3TGluZVNlcUxlbmd0aCA9IChuZXdsaW5lU2VxdWVuY2VzW2pdICYmIG5ld2xpbmVTZXF1ZW5jZXNbal0ubGVuZ3RoKSB8fCAwO1xyXG4gICAgICAgICAgICAgICAgaWYgKGogPT09IGkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBwdXNoIHVuZGVybGluZVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhZCA9IHN0YXJ0IC0gKGNvdW50IC0gKGxpbmVMZW5ndGggKyBuZXdMaW5lU2VxTGVuZ3RoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gTWF0aC5tYXgoMSwgZW5kID4gY291bnQgPyBsaW5lTGVuZ3RoIC0gcGFkIDogZW5kIC0gc3RhcnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5wdXNoKGAgICB8ICBgICsgJyAnLnJlcGVhdChwYWQpICsgJ14nLnJlcGVhdChsZW5ndGgpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGogPiBpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVuZCA+IGNvdW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IE1hdGgubWF4KE1hdGgubWluKGVuZCAtIGNvdW50LCBsaW5lTGVuZ3RoKSwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5wdXNoKGAgICB8ICBgICsgJ14nLnJlcGVhdChsZW5ndGgpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gbGluZUxlbmd0aCArIG5ld0xpbmVTZXFMZW5ndGg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcy5qb2luKCdcXG4nKTtcclxufVxuXG4vKipcclxuICogT24gdGhlIGNsaWVudCB3ZSBvbmx5IG5lZWQgdG8gb2ZmZXIgc3BlY2lhbCBjYXNlcyBmb3IgYm9vbGVhbiBhdHRyaWJ1dGVzIHRoYXRcclxuICogaGF2ZSBkaWZmZXJlbnQgbmFtZXMgZnJvbSB0aGVpciBjb3JyZXNwb25kaW5nIGRvbSBwcm9wZXJ0aWVzOlxyXG4gKiAtIGl0ZW1zY29wZSAtPiBOL0FcclxuICogLSBhbGxvd2Z1bGxzY3JlZW4gLT4gYWxsb3dGdWxsc2NyZWVuXHJcbiAqIC0gZm9ybW5vdmFsaWRhdGUgLT4gZm9ybU5vVmFsaWRhdGVcclxuICogLSBpc21hcCAtPiBpc01hcFxyXG4gKiAtIG5vbW9kdWxlIC0+IG5vTW9kdWxlXHJcbiAqIC0gbm92YWxpZGF0ZSAtPiBub1ZhbGlkYXRlXHJcbiAqIC0gcmVhZG9ubHkgLT4gcmVhZE9ubHlcclxuICovXHJcbmNvbnN0IHNwZWNpYWxCb29sZWFuQXR0cnMgPSBgaXRlbXNjb3BlLGFsbG93ZnVsbHNjcmVlbixmb3Jtbm92YWxpZGF0ZSxpc21hcCxub21vZHVsZSxub3ZhbGlkYXRlLHJlYWRvbmx5YDtcclxuY29uc3QgaXNTcGVjaWFsQm9vbGVhbkF0dHIgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoc3BlY2lhbEJvb2xlYW5BdHRycyk7XHJcbi8qKlxyXG4gKiBUaGUgZnVsbCBsaXN0IGlzIG5lZWRlZCBkdXJpbmcgU1NSIHRvIHByb2R1Y2UgdGhlIGNvcnJlY3QgaW5pdGlhbCBtYXJrdXAuXHJcbiAqL1xyXG5jb25zdCBpc0Jvb2xlYW5BdHRyID0gLyojX19QVVJFX18qLyBtYWtlTWFwKHNwZWNpYWxCb29sZWFuQXR0cnMgK1xyXG4gICAgYCxhc3luYyxhdXRvZm9jdXMsYXV0b3BsYXksY29udHJvbHMsZGVmYXVsdCxkZWZlcixkaXNhYmxlZCxoaWRkZW4sYCArXHJcbiAgICBgbG9vcCxvcGVuLHJlcXVpcmVkLHJldmVyc2VkLHNjb3BlZCxzZWFtbGVzcyxgICtcclxuICAgIGBjaGVja2VkLG11dGVkLG11bHRpcGxlLHNlbGVjdGVkYCk7XHJcbi8qKlxyXG4gKiBCb29sZWFuIGF0dHJpYnV0ZXMgc2hvdWxkIGJlIGluY2x1ZGVkIGlmIHRoZSB2YWx1ZSBpcyB0cnV0aHkgb3IgJycuXHJcbiAqIGUuZy4gYDxzZWxlY3QgbXVsdGlwbGU+YCBjb21waWxlcyB0byBgeyBtdWx0aXBsZTogJycgfWBcclxuICovXHJcbmZ1bmN0aW9uIGluY2x1ZGVCb29sZWFuQXR0cih2YWx1ZSkge1xyXG4gICAgcmV0dXJuICEhdmFsdWUgfHwgdmFsdWUgPT09ICcnO1xyXG59XHJcbmNvbnN0IHVuc2FmZUF0dHJDaGFyUkUgPSAvWz4vPVwiJ1xcdTAwMDlcXHUwMDBhXFx1MDAwY1xcdTAwMjBdLztcclxuY29uc3QgYXR0clZhbGlkYXRpb25DYWNoZSA9IHt9O1xyXG5mdW5jdGlvbiBpc1NTUlNhZmVBdHRyTmFtZShuYW1lKSB7XHJcbiAgICBpZiAoYXR0clZhbGlkYXRpb25DYWNoZS5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xyXG4gICAgICAgIHJldHVybiBhdHRyVmFsaWRhdGlvbkNhY2hlW25hbWVdO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaXNVbnNhZmUgPSB1bnNhZmVBdHRyQ2hhclJFLnRlc3QobmFtZSk7XHJcbiAgICBpZiAoaXNVbnNhZmUpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGB1bnNhZmUgYXR0cmlidXRlIG5hbWU6ICR7bmFtZX1gKTtcclxuICAgIH1cclxuICAgIHJldHVybiAoYXR0clZhbGlkYXRpb25DYWNoZVtuYW1lXSA9ICFpc1Vuc2FmZSk7XHJcbn1cclxuY29uc3QgcHJvcHNUb0F0dHJNYXAgPSB7XHJcbiAgICBhY2NlcHRDaGFyc2V0OiAnYWNjZXB0LWNoYXJzZXQnLFxyXG4gICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxyXG4gICAgaHRtbEZvcjogJ2ZvcicsXHJcbiAgICBodHRwRXF1aXY6ICdodHRwLWVxdWl2J1xyXG59O1xyXG4vKipcclxuICogQ1NTIHByb3BlcnRpZXMgdGhhdCBhY2NlcHQgcGxhaW4gbnVtYmVyc1xyXG4gKi9cclxuY29uc3QgaXNOb1VuaXROdW1lcmljU3R5bGVQcm9wID0gLyojX19QVVJFX18qLyBtYWtlTWFwKGBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50LGJvcmRlci1pbWFnZS1vdXRzZXQsYm9yZGVyLWltYWdlLXNsaWNlLGAgK1xyXG4gICAgYGJvcmRlci1pbWFnZS13aWR0aCxib3gtZmxleCxib3gtZmxleC1ncm91cCxib3gtb3JkaW5hbC1ncm91cCxjb2x1bW4tY291bnQsYCArXHJcbiAgICBgY29sdW1ucyxmbGV4LGZsZXgtZ3JvdyxmbGV4LXBvc2l0aXZlLGZsZXgtc2hyaW5rLGZsZXgtbmVnYXRpdmUsZmxleC1vcmRlcixgICtcclxuICAgIGBncmlkLXJvdyxncmlkLXJvdy1lbmQsZ3JpZC1yb3ctc3BhbixncmlkLXJvdy1zdGFydCxncmlkLWNvbHVtbixgICtcclxuICAgIGBncmlkLWNvbHVtbi1lbmQsZ3JpZC1jb2x1bW4tc3BhbixncmlkLWNvbHVtbi1zdGFydCxmb250LXdlaWdodCxsaW5lLWNsYW1wLGAgK1xyXG4gICAgYGxpbmUtaGVpZ2h0LG9wYWNpdHksb3JkZXIsb3JwaGFucyx0YWItc2l6ZSx3aWRvd3Msei1pbmRleCx6b29tLGAgK1xyXG4gICAgLy8gU1ZHXHJcbiAgICBgZmlsbC1vcGFjaXR5LGZsb29kLW9wYWNpdHksc3RvcC1vcGFjaXR5LHN0cm9rZS1kYXNoYXJyYXksc3Ryb2tlLWRhc2hvZmZzZXQsYCArXHJcbiAgICBgc3Ryb2tlLW1pdGVybGltaXQsc3Ryb2tlLW9wYWNpdHksc3Ryb2tlLXdpZHRoYCk7XHJcbi8qKlxyXG4gKiBLbm93biBhdHRyaWJ1dGVzLCB0aGlzIGlzIHVzZWQgZm9yIHN0cmluZ2lmaWNhdGlvbiBvZiBydW50aW1lIHN0YXRpYyBub2Rlc1xyXG4gKiBzbyB0aGF0IHdlIGRvbid0IHN0cmluZ2lmeSBiaW5kaW5ncyB0aGF0IGNhbm5vdCBiZSBzZXQgZnJvbSBIVE1MLlxyXG4gKiBEb24ndCBhbHNvIGZvcmdldCB0byBhbGxvdyBgZGF0YS0qYCBhbmQgYGFyaWEtKmAhXHJcbiAqIEdlbmVyYXRlZCBmcm9tIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQXR0cmlidXRlc1xyXG4gKi9cclxuY29uc3QgaXNLbm93bkh0bWxBdHRyID0gLyojX19QVVJFX18qLyBtYWtlTWFwKGBhY2NlcHQsYWNjZXB0LWNoYXJzZXQsYWNjZXNza2V5LGFjdGlvbixhbGlnbixhbGxvdyxhbHQsYXN5bmMsYCArXHJcbiAgICBgYXV0b2NhcGl0YWxpemUsYXV0b2NvbXBsZXRlLGF1dG9mb2N1cyxhdXRvcGxheSxiYWNrZ3JvdW5kLGJnY29sb3IsYCArXHJcbiAgICBgYm9yZGVyLGJ1ZmZlcmVkLGNhcHR1cmUsY2hhbGxlbmdlLGNoYXJzZXQsY2hlY2tlZCxjaXRlLGNsYXNzLGNvZGUsYCArXHJcbiAgICBgY29kZWJhc2UsY29sb3IsY29scyxjb2xzcGFuLGNvbnRlbnQsY29udGVudGVkaXRhYmxlLGNvbnRleHRtZW51LGNvbnRyb2xzLGAgK1xyXG4gICAgYGNvb3Jkcyxjcm9zc29yaWdpbixjc3AsZGF0YSxkYXRldGltZSxkZWNvZGluZyxkZWZhdWx0LGRlZmVyLGRpcixkaXJuYW1lLGAgK1xyXG4gICAgYGRpc2FibGVkLGRvd25sb2FkLGRyYWdnYWJsZSxkcm9wem9uZSxlbmN0eXBlLGVudGVya2V5aGludCxmb3IsZm9ybSxgICtcclxuICAgIGBmb3JtYWN0aW9uLGZvcm1lbmN0eXBlLGZvcm1tZXRob2QsZm9ybW5vdmFsaWRhdGUsZm9ybXRhcmdldCxoZWFkZXJzLGAgK1xyXG4gICAgYGhlaWdodCxoaWRkZW4saGlnaCxocmVmLGhyZWZsYW5nLGh0dHAtZXF1aXYsaWNvbixpZCxpbXBvcnRhbmNlLGludGVncml0eSxgICtcclxuICAgIGBpc21hcCxpdGVtcHJvcCxrZXl0eXBlLGtpbmQsbGFiZWwsbGFuZyxsYW5ndWFnZSxsb2FkaW5nLGxpc3QsbG9vcCxsb3csYCArXHJcbiAgICBgbWFuaWZlc3QsbWF4LG1heGxlbmd0aCxtaW5sZW5ndGgsbWVkaWEsbWluLG11bHRpcGxlLG11dGVkLG5hbWUsbm92YWxpZGF0ZSxgICtcclxuICAgIGBvcGVuLG9wdGltdW0scGF0dGVybixwaW5nLHBsYWNlaG9sZGVyLHBvc3RlcixwcmVsb2FkLHJhZGlvZ3JvdXAscmVhZG9ubHksYCArXHJcbiAgICBgcmVmZXJyZXJwb2xpY3kscmVsLHJlcXVpcmVkLHJldmVyc2VkLHJvd3Mscm93c3BhbixzYW5kYm94LHNjb3BlLHNjb3BlZCxgICtcclxuICAgIGBzZWxlY3RlZCxzaGFwZSxzaXplLHNpemVzLHNsb3Qsc3BhbixzcGVsbGNoZWNrLHNyYyxzcmNkb2Msc3JjbGFuZyxzcmNzZXQsYCArXHJcbiAgICBgc3RhcnQsc3RlcCxzdHlsZSxzdW1tYXJ5LHRhYmluZGV4LHRhcmdldCx0aXRsZSx0cmFuc2xhdGUsdHlwZSx1c2VtYXAsYCArXHJcbiAgICBgdmFsdWUsd2lkdGgsd3JhcGApO1xyXG4vKipcclxuICogR2VuZXJhdGVkIGZyb20gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU1ZHL0F0dHJpYnV0ZVxyXG4gKi9cclxuY29uc3QgaXNLbm93blN2Z0F0dHIgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoYHhtbG5zLGFjY2VudC1oZWlnaHQsYWNjdW11bGF0ZSxhZGRpdGl2ZSxhbGlnbm1lbnQtYmFzZWxpbmUsYWxwaGFiZXRpYyxhbXBsaXR1ZGUsYCArXHJcbiAgICBgYXJhYmljLWZvcm0sYXNjZW50LGF0dHJpYnV0ZU5hbWUsYXR0cmlidXRlVHlwZSxhemltdXRoLGJhc2VGcmVxdWVuY3ksYCArXHJcbiAgICBgYmFzZWxpbmUtc2hpZnQsYmFzZVByb2ZpbGUsYmJveCxiZWdpbixiaWFzLGJ5LGNhbGNNb2RlLGNhcC1oZWlnaHQsY2xhc3MsYCArXHJcbiAgICBgY2xpcCxjbGlwUGF0aFVuaXRzLGNsaXAtcGF0aCxjbGlwLXJ1bGUsY29sb3IsY29sb3ItaW50ZXJwb2xhdGlvbixgICtcclxuICAgIGBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMsY29sb3ItcHJvZmlsZSxjb2xvci1yZW5kZXJpbmcsYCArXHJcbiAgICBgY29udGVudFNjcmlwdFR5cGUsY29udGVudFN0eWxlVHlwZSxjcm9zc29yaWdpbixjdXJzb3IsY3gsY3ksZCxkZWNlbGVyYXRlLGAgK1xyXG4gICAgYGRlc2NlbnQsZGlmZnVzZUNvbnN0YW50LGRpcmVjdGlvbixkaXNwbGF5LGRpdmlzb3IsZG9taW5hbnQtYmFzZWxpbmUsZHVyLGR4LGAgK1xyXG4gICAgYGR5LGVkZ2VNb2RlLGVsZXZhdGlvbixlbmFibGUtYmFja2dyb3VuZCxlbmQsZXhwb25lbnQsZmlsbCxmaWxsLW9wYWNpdHksYCArXHJcbiAgICBgZmlsbC1ydWxlLGZpbHRlcixmaWx0ZXJSZXMsZmlsdGVyVW5pdHMsZmxvb2QtY29sb3IsZmxvb2Qtb3BhY2l0eSxgICtcclxuICAgIGBmb250LWZhbWlseSxmb250LXNpemUsZm9udC1zaXplLWFkanVzdCxmb250LXN0cmV0Y2gsZm9udC1zdHlsZSxgICtcclxuICAgIGBmb250LXZhcmlhbnQsZm9udC13ZWlnaHQsZm9ybWF0LGZyb20sZnIsZngsZnksZzEsZzIsZ2x5cGgtbmFtZSxgICtcclxuICAgIGBnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsLGdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsLGdseXBoUmVmLGAgK1xyXG4gICAgYGdyYWRpZW50VHJhbnNmb3JtLGdyYWRpZW50VW5pdHMsaGFuZ2luZyxoZWlnaHQsaHJlZixocmVmbGFuZyxob3Jpei1hZHYteCxgICtcclxuICAgIGBob3Jpei1vcmlnaW4teCxpZCxpZGVvZ3JhcGhpYyxpbWFnZS1yZW5kZXJpbmcsaW4saW4yLGludGVyY2VwdCxrLGsxLGsyLGszLGAgK1xyXG4gICAgYGs0LGtlcm5lbE1hdHJpeCxrZXJuZWxVbml0TGVuZ3RoLGtlcm5pbmcsa2V5UG9pbnRzLGtleVNwbGluZXMsa2V5VGltZXMsYCArXHJcbiAgICBgbGFuZyxsZW5ndGhBZGp1c3QsbGV0dGVyLXNwYWNpbmcsbGlnaHRpbmctY29sb3IsbGltaXRpbmdDb25lQW5nbGUsbG9jYWwsYCArXHJcbiAgICBgbWFya2VyLWVuZCxtYXJrZXItbWlkLG1hcmtlci1zdGFydCxtYXJrZXJIZWlnaHQsbWFya2VyVW5pdHMsbWFya2VyV2lkdGgsYCArXHJcbiAgICBgbWFzayxtYXNrQ29udGVudFVuaXRzLG1hc2tVbml0cyxtYXRoZW1hdGljYWwsbWF4LG1lZGlhLG1ldGhvZCxtaW4sbW9kZSxgICtcclxuICAgIGBuYW1lLG51bU9jdGF2ZXMsb2Zmc2V0LG9wYWNpdHksb3BlcmF0b3Isb3JkZXIsb3JpZW50LG9yaWVudGF0aW9uLG9yaWdpbixgICtcclxuICAgIGBvdmVyZmxvdyxvdmVybGluZS1wb3NpdGlvbixvdmVybGluZS10aGlja25lc3MscGFub3NlLTEscGFpbnQtb3JkZXIscGF0aCxgICtcclxuICAgIGBwYXRoTGVuZ3RoLHBhdHRlcm5Db250ZW50VW5pdHMscGF0dGVyblRyYW5zZm9ybSxwYXR0ZXJuVW5pdHMscGluZyxgICtcclxuICAgIGBwb2ludGVyLWV2ZW50cyxwb2ludHMscG9pbnRzQXRYLHBvaW50c0F0WSxwb2ludHNBdFoscHJlc2VydmVBbHBoYSxgICtcclxuICAgIGBwcmVzZXJ2ZUFzcGVjdFJhdGlvLHByaW1pdGl2ZVVuaXRzLHIscmFkaXVzLHJlZmVycmVyUG9saWN5LHJlZlgscmVmWSxyZWwsYCArXHJcbiAgICBgcmVuZGVyaW5nLWludGVudCxyZXBlYXRDb3VudCxyZXBlYXREdXIscmVxdWlyZWRFeHRlbnNpb25zLHJlcXVpcmVkRmVhdHVyZXMsYCArXHJcbiAgICBgcmVzdGFydCxyZXN1bHQscm90YXRlLHJ4LHJ5LHNjYWxlLHNlZWQsc2hhcGUtcmVuZGVyaW5nLHNsb3BlLHNwYWNpbmcsYCArXHJcbiAgICBgc3BlY3VsYXJDb25zdGFudCxzcGVjdWxhckV4cG9uZW50LHNwZWVkLHNwcmVhZE1ldGhvZCxzdGFydE9mZnNldCxgICtcclxuICAgIGBzdGREZXZpYXRpb24sc3RlbWgsc3RlbXYsc3RpdGNoVGlsZXMsc3RvcC1jb2xvcixzdG9wLW9wYWNpdHksYCArXHJcbiAgICBgc3RyaWtldGhyb3VnaC1wb3NpdGlvbixzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcyxzdHJpbmcsc3Ryb2tlLGAgK1xyXG4gICAgYHN0cm9rZS1kYXNoYXJyYXksc3Ryb2tlLWRhc2hvZmZzZXQsc3Ryb2tlLWxpbmVjYXAsc3Ryb2tlLWxpbmVqb2luLGAgK1xyXG4gICAgYHN0cm9rZS1taXRlcmxpbWl0LHN0cm9rZS1vcGFjaXR5LHN0cm9rZS13aWR0aCxzdHlsZSxzdXJmYWNlU2NhbGUsYCArXHJcbiAgICBgc3lzdGVtTGFuZ3VhZ2UsdGFiaW5kZXgsdGFibGVWYWx1ZXMsdGFyZ2V0LHRhcmdldFgsdGFyZ2V0WSx0ZXh0LWFuY2hvcixgICtcclxuICAgIGB0ZXh0LWRlY29yYXRpb24sdGV4dC1yZW5kZXJpbmcsdGV4dExlbmd0aCx0byx0cmFuc2Zvcm0sdHJhbnNmb3JtLW9yaWdpbixgICtcclxuICAgIGB0eXBlLHUxLHUyLHVuZGVybGluZS1wb3NpdGlvbix1bmRlcmxpbmUtdGhpY2tuZXNzLHVuaWNvZGUsdW5pY29kZS1iaWRpLGAgK1xyXG4gICAgYHVuaWNvZGUtcmFuZ2UsdW5pdHMtcGVyLWVtLHYtYWxwaGFiZXRpYyx2LWhhbmdpbmcsdi1pZGVvZ3JhcGhpYyxgICtcclxuICAgIGB2LW1hdGhlbWF0aWNhbCx2YWx1ZXMsdmVjdG9yLWVmZmVjdCx2ZXJzaW9uLHZlcnQtYWR2LXksdmVydC1vcmlnaW4teCxgICtcclxuICAgIGB2ZXJ0LW9yaWdpbi15LHZpZXdCb3gsdmlld1RhcmdldCx2aXNpYmlsaXR5LHdpZHRoLHdpZHRocyx3b3JkLXNwYWNpbmcsYCArXHJcbiAgICBgd3JpdGluZy1tb2RlLHgseC1oZWlnaHQseDEseDIseENoYW5uZWxTZWxlY3Rvcix4bGluazphY3R1YXRlLHhsaW5rOmFyY3JvbGUsYCArXHJcbiAgICBgeGxpbms6aHJlZix4bGluazpyb2xlLHhsaW5rOnNob3cseGxpbms6dGl0bGUseGxpbms6dHlwZSx4bWw6YmFzZSx4bWw6bGFuZyxgICtcclxuICAgIGB4bWw6c3BhY2UseSx5MSx5Mix5Q2hhbm5lbFNlbGVjdG9yLHosem9vbUFuZFBhbmApO1xuXG5mdW5jdGlvbiBub3JtYWxpemVTdHlsZSh2YWx1ZSkge1xyXG4gICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgY29uc3QgcmVzID0ge307XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBpdGVtID0gdmFsdWVbaV07XHJcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBpc1N0cmluZyhpdGVtKVxyXG4gICAgICAgICAgICAgICAgPyBwYXJzZVN0cmluZ1N0eWxlKGl0ZW0pXHJcbiAgICAgICAgICAgICAgICA6IG5vcm1hbGl6ZVN0eWxlKGl0ZW0pO1xyXG4gICAgICAgICAgICBpZiAobm9ybWFsaXplZCkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbm9ybWFsaXplZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc1trZXldID0gbm9ybWFsaXplZFtrZXldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbn1cclxuY29uc3QgbGlzdERlbGltaXRlclJFID0gLzsoPyFbXihdKlxcKSkvZztcclxuY29uc3QgcHJvcGVydHlEZWxpbWl0ZXJSRSA9IC86KC4rKS87XHJcbmZ1bmN0aW9uIHBhcnNlU3RyaW5nU3R5bGUoY3NzVGV4dCkge1xyXG4gICAgY29uc3QgcmV0ID0ge307XHJcbiAgICBjc3NUZXh0LnNwbGl0KGxpc3REZWxpbWl0ZXJSRSkuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgICAgICBjb25zdCB0bXAgPSBpdGVtLnNwbGl0KHByb3BlcnR5RGVsaW1pdGVyUkUpO1xyXG4gICAgICAgICAgICB0bXAubGVuZ3RoID4gMSAmJiAocmV0W3RtcFswXS50cmltKCldID0gdG1wWzFdLnRyaW0oKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcmV0O1xyXG59XHJcbmZ1bmN0aW9uIHN0cmluZ2lmeVN0eWxlKHN0eWxlcykge1xyXG4gICAgbGV0IHJldCA9ICcnO1xyXG4gICAgaWYgKCFzdHlsZXMgfHwgaXNTdHJpbmcoc3R5bGVzKSkge1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBzdHlsZXMpIHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IHN0eWxlc1trZXldO1xyXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRLZXkgPSBrZXkuc3RhcnRzV2l0aChgLS1gKSA/IGtleSA6IGh5cGhlbmF0ZShrZXkpO1xyXG4gICAgICAgIGlmIChpc1N0cmluZyh2YWx1ZSkgfHxcclxuICAgICAgICAgICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgaXNOb1VuaXROdW1lcmljU3R5bGVQcm9wKG5vcm1hbGl6ZWRLZXkpKSkge1xyXG4gICAgICAgICAgICAvLyBvbmx5IHJlbmRlciB2YWxpZCB2YWx1ZXNcclxuICAgICAgICAgICAgcmV0ICs9IGAke25vcm1hbGl6ZWRLZXl9OiR7dmFsdWV9O2A7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldDtcclxufVxyXG5mdW5jdGlvbiBub3JtYWxpemVDbGFzcyh2YWx1ZSkge1xyXG4gICAgbGV0IHJlcyA9ICcnO1xyXG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xyXG4gICAgICAgIHJlcyA9IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVDbGFzcyh2YWx1ZVtpXSk7XHJcbiAgICAgICAgICAgIGlmIChub3JtYWxpemVkKSB7XHJcbiAgICAgICAgICAgICAgICByZXMgKz0gbm9ybWFsaXplZCArICcgJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xyXG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBpbiB2YWx1ZSkge1xyXG4gICAgICAgICAgICBpZiAodmFsdWVbbmFtZV0pIHtcclxuICAgICAgICAgICAgICAgIHJlcyArPSBuYW1lICsgJyAnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcy50cmltKCk7XHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplUHJvcHMocHJvcHMpIHtcclxuICAgIGlmICghcHJvcHMpXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICBsZXQgeyBjbGFzczoga2xhc3MsIHN0eWxlIH0gPSBwcm9wcztcclxuICAgIGlmIChrbGFzcyAmJiAhaXNTdHJpbmcoa2xhc3MpKSB7XHJcbiAgICAgICAgcHJvcHMuY2xhc3MgPSBub3JtYWxpemVDbGFzcyhrbGFzcyk7XHJcbiAgICB9XHJcbiAgICBpZiAoc3R5bGUpIHtcclxuICAgICAgICBwcm9wcy5zdHlsZSA9IG5vcm1hbGl6ZVN0eWxlKHN0eWxlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwcm9wcztcclxufVxuXG4vLyBUaGVzZSB0YWcgY29uZmlncyBhcmUgc2hhcmVkIGJldHdlZW4gY29tcGlsZXItZG9tIGFuZCBydW50aW1lLWRvbSwgc28gdGhleVxyXG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnRcclxuY29uc3QgSFRNTF9UQUdTID0gJ2h0bWwsYm9keSxiYXNlLGhlYWQsbGluayxtZXRhLHN0eWxlLHRpdGxlLGFkZHJlc3MsYXJ0aWNsZSxhc2lkZSxmb290ZXIsJyArXHJcbiAgICAnaGVhZGVyLGgxLGgyLGgzLGg0LGg1LGg2LG5hdixzZWN0aW9uLGRpdixkZCxkbCxkdCxmaWdjYXB0aW9uLCcgK1xyXG4gICAgJ2ZpZ3VyZSxwaWN0dXJlLGhyLGltZyxsaSxtYWluLG9sLHAscHJlLHVsLGEsYixhYmJyLGJkaSxiZG8sYnIsY2l0ZSxjb2RlLCcgK1xyXG4gICAgJ2RhdGEsZGZuLGVtLGksa2JkLG1hcmsscSxycCxydCxydWJ5LHMsc2FtcCxzbWFsbCxzcGFuLHN0cm9uZyxzdWIsc3VwLCcgK1xyXG4gICAgJ3RpbWUsdSx2YXIsd2JyLGFyZWEsYXVkaW8sbWFwLHRyYWNrLHZpZGVvLGVtYmVkLG9iamVjdCxwYXJhbSxzb3VyY2UsJyArXHJcbiAgICAnY2FudmFzLHNjcmlwdCxub3NjcmlwdCxkZWwsaW5zLGNhcHRpb24sY29sLGNvbGdyb3VwLHRhYmxlLHRoZWFkLHRib2R5LHRkLCcgK1xyXG4gICAgJ3RoLHRyLGJ1dHRvbixkYXRhbGlzdCxmaWVsZHNldCxmb3JtLGlucHV0LGxhYmVsLGxlZ2VuZCxtZXRlcixvcHRncm91cCwnICtcclxuICAgICdvcHRpb24sb3V0cHV0LHByb2dyZXNzLHNlbGVjdCx0ZXh0YXJlYSxkZXRhaWxzLGRpYWxvZyxtZW51LCcgK1xyXG4gICAgJ3N1bW1hcnksdGVtcGxhdGUsYmxvY2txdW90ZSxpZnJhbWUsdGZvb3QnO1xyXG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TVkcvRWxlbWVudFxyXG5jb25zdCBTVkdfVEFHUyA9ICdzdmcsYW5pbWF0ZSxhbmltYXRlTW90aW9uLGFuaW1hdGVUcmFuc2Zvcm0sY2lyY2xlLGNsaXBQYXRoLGNvbG9yLXByb2ZpbGUsJyArXHJcbiAgICAnZGVmcyxkZXNjLGRpc2NhcmQsZWxsaXBzZSxmZUJsZW5kLGZlQ29sb3JNYXRyaXgsZmVDb21wb25lbnRUcmFuc2ZlciwnICtcclxuICAgICdmZUNvbXBvc2l0ZSxmZUNvbnZvbHZlTWF0cml4LGZlRGlmZnVzZUxpZ2h0aW5nLGZlRGlzcGxhY2VtZW50TWFwLCcgK1xyXG4gICAgJ2ZlRGlzdGFuY2VMaWdodCxmZURyb3BTaGFkb3csZmVGbG9vZCxmZUZ1bmNBLGZlRnVuY0IsZmVGdW5jRyxmZUZ1bmNSLCcgK1xyXG4gICAgJ2ZlR2F1c3NpYW5CbHVyLGZlSW1hZ2UsZmVNZXJnZSxmZU1lcmdlTm9kZSxmZU1vcnBob2xvZ3ksZmVPZmZzZXQsJyArXHJcbiAgICAnZmVQb2ludExpZ2h0LGZlU3BlY3VsYXJMaWdodGluZyxmZVNwb3RMaWdodCxmZVRpbGUsZmVUdXJidWxlbmNlLGZpbHRlciwnICtcclxuICAgICdmb3JlaWduT2JqZWN0LGcsaGF0Y2gsaGF0Y2hwYXRoLGltYWdlLGxpbmUsbGluZWFyR3JhZGllbnQsbWFya2VyLG1hc2ssJyArXHJcbiAgICAnbWVzaCxtZXNoZ3JhZGllbnQsbWVzaHBhdGNoLG1lc2hyb3csbWV0YWRhdGEsbXBhdGgscGF0aCxwYXR0ZXJuLCcgK1xyXG4gICAgJ3BvbHlnb24scG9seWxpbmUscmFkaWFsR3JhZGllbnQscmVjdCxzZXQsc29saWRjb2xvcixzdG9wLHN3aXRjaCxzeW1ib2wsJyArXHJcbiAgICAndGV4dCx0ZXh0UGF0aCx0aXRsZSx0c3Bhbix1bmtub3duLHVzZSx2aWV3JztcclxuY29uc3QgVk9JRF9UQUdTID0gJ2FyZWEsYmFzZSxicixjb2wsZW1iZWQsaHIsaW1nLGlucHV0LGxpbmssbWV0YSxwYXJhbSxzb3VyY2UsdHJhY2ssd2JyJztcclxuLyoqXHJcbiAqIENvbXBpbGVyIG9ubHkuXHJcbiAqIERvIE5PVCB1c2UgaW4gcnVudGltZSBjb2RlIHBhdGhzIHVubGVzcyBiZWhpbmQgYChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKWAgZmxhZy5cclxuICovXHJcbmNvbnN0IGlzSFRNTFRhZyA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChIVE1MX1RBR1MpO1xyXG4vKipcclxuICogQ29tcGlsZXIgb25seS5cclxuICogRG8gTk9UIHVzZSBpbiBydW50aW1lIGNvZGUgcGF0aHMgdW5sZXNzIGJlaGluZCBgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpYCBmbGFnLlxyXG4gKi9cclxuY29uc3QgaXNTVkdUYWcgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoU1ZHX1RBR1MpO1xyXG4vKipcclxuICogQ29tcGlsZXIgb25seS5cclxuICogRG8gTk9UIHVzZSBpbiBydW50aW1lIGNvZGUgcGF0aHMgdW5sZXNzIGJlaGluZCBgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpYCBmbGFnLlxyXG4gKi9cclxuY29uc3QgaXNWb2lkVGFnID0gLyojX19QVVJFX18qLyBtYWtlTWFwKFZPSURfVEFHUyk7XG5cbmNvbnN0IGVzY2FwZVJFID0gL1tcIicmPD5dLztcclxuZnVuY3Rpb24gZXNjYXBlSHRtbChzdHJpbmcpIHtcclxuICAgIGNvbnN0IHN0ciA9ICcnICsgc3RyaW5nO1xyXG4gICAgY29uc3QgbWF0Y2ggPSBlc2NhcGVSRS5leGVjKHN0cik7XHJcbiAgICBpZiAoIW1hdGNoKSB7XHJcbiAgICAgICAgcmV0dXJuIHN0cjtcclxuICAgIH1cclxuICAgIGxldCBodG1sID0gJyc7XHJcbiAgICBsZXQgZXNjYXBlZDtcclxuICAgIGxldCBpbmRleDtcclxuICAgIGxldCBsYXN0SW5kZXggPSAwO1xyXG4gICAgZm9yIChpbmRleCA9IG1hdGNoLmluZGV4OyBpbmRleCA8IHN0ci5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBzd2l0Y2ggKHN0ci5jaGFyQ29kZUF0KGluZGV4KSkge1xyXG4gICAgICAgICAgICBjYXNlIDM0OiAvLyBcIlxyXG4gICAgICAgICAgICAgICAgZXNjYXBlZCA9ICcmcXVvdDsnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMzg6IC8vICZcclxuICAgICAgICAgICAgICAgIGVzY2FwZWQgPSAnJmFtcDsnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMzk6IC8vICdcclxuICAgICAgICAgICAgICAgIGVzY2FwZWQgPSAnJiMzOTsnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgNjA6IC8vIDxcclxuICAgICAgICAgICAgICAgIGVzY2FwZWQgPSAnJmx0Oyc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSA2MjogLy8gPlxyXG4gICAgICAgICAgICAgICAgZXNjYXBlZCA9ICcmZ3Q7JztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChsYXN0SW5kZXggIT09IGluZGV4KSB7XHJcbiAgICAgICAgICAgIGh0bWwgKz0gc3RyLnNsaWNlKGxhc3RJbmRleCwgaW5kZXgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsYXN0SW5kZXggPSBpbmRleCArIDE7XHJcbiAgICAgICAgaHRtbCArPSBlc2NhcGVkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxhc3RJbmRleCAhPT0gaW5kZXggPyBodG1sICsgc3RyLnNsaWNlKGxhc3RJbmRleCwgaW5kZXgpIDogaHRtbDtcclxufVxyXG4vLyBodHRwczovL3d3dy53My5vcmcvVFIvaHRtbDUyL3N5bnRheC5odG1sI2NvbW1lbnRzXHJcbmNvbnN0IGNvbW1lbnRTdHJpcFJFID0gL14tPz58PCEtLXwtLT58LS0hPnw8IS0kL2c7XHJcbmZ1bmN0aW9uIGVzY2FwZUh0bWxDb21tZW50KHNyYykge1xyXG4gICAgcmV0dXJuIHNyYy5yZXBsYWNlKGNvbW1lbnRTdHJpcFJFLCAnJyk7XHJcbn1cblxuZnVuY3Rpb24gbG9vc2VDb21wYXJlQXJyYXlzKGEsIGIpIHtcclxuICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgbGV0IGVxdWFsID0gdHJ1ZTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBlcXVhbCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGVxdWFsID0gbG9vc2VFcXVhbChhW2ldLCBiW2ldKTtcclxuICAgIH1cclxuICAgIHJldHVybiBlcXVhbDtcclxufVxyXG5mdW5jdGlvbiBsb29zZUVxdWFsKGEsIGIpIHtcclxuICAgIGlmIChhID09PSBiKVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgbGV0IGFWYWxpZFR5cGUgPSBpc0RhdGUoYSk7XHJcbiAgICBsZXQgYlZhbGlkVHlwZSA9IGlzRGF0ZShiKTtcclxuICAgIGlmIChhVmFsaWRUeXBlIHx8IGJWYWxpZFR5cGUpIHtcclxuICAgICAgICByZXR1cm4gYVZhbGlkVHlwZSAmJiBiVmFsaWRUeXBlID8gYS5nZXRUaW1lKCkgPT09IGIuZ2V0VGltZSgpIDogZmFsc2U7XHJcbiAgICB9XHJcbiAgICBhVmFsaWRUeXBlID0gaXNTeW1ib2woYSk7XHJcbiAgICBiVmFsaWRUeXBlID0gaXNTeW1ib2woYik7XHJcbiAgICBpZiAoYVZhbGlkVHlwZSB8fCBiVmFsaWRUeXBlKSB7XHJcbiAgICAgICAgcmV0dXJuIGEgPT09IGI7XHJcbiAgICB9XHJcbiAgICBhVmFsaWRUeXBlID0gaXNBcnJheShhKTtcclxuICAgIGJWYWxpZFR5cGUgPSBpc0FycmF5KGIpO1xyXG4gICAgaWYgKGFWYWxpZFR5cGUgfHwgYlZhbGlkVHlwZSkge1xyXG4gICAgICAgIHJldHVybiBhVmFsaWRUeXBlICYmIGJWYWxpZFR5cGUgPyBsb29zZUNvbXBhcmVBcnJheXMoYSwgYikgOiBmYWxzZTtcclxuICAgIH1cclxuICAgIGFWYWxpZFR5cGUgPSBpc09iamVjdChhKTtcclxuICAgIGJWYWxpZFR5cGUgPSBpc09iamVjdChiKTtcclxuICAgIGlmIChhVmFsaWRUeXBlIHx8IGJWYWxpZFR5cGUpIHtcclxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWY6IHRoaXMgaWYgd2lsbCBwcm9iYWJseSBuZXZlciBiZSBjYWxsZWQgKi9cclxuICAgICAgICBpZiAoIWFWYWxpZFR5cGUgfHwgIWJWYWxpZFR5cGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBhS2V5c0NvdW50ID0gT2JqZWN0LmtleXMoYSkubGVuZ3RoO1xyXG4gICAgICAgIGNvbnN0IGJLZXlzQ291bnQgPSBPYmplY3Qua2V5cyhiKS5sZW5ndGg7XHJcbiAgICAgICAgaWYgKGFLZXlzQ291bnQgIT09IGJLZXlzQ291bnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBhKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFIYXNLZXkgPSBhLmhhc093blByb3BlcnR5KGtleSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGJIYXNLZXkgPSBiLmhhc093blByb3BlcnR5KGtleSk7XHJcbiAgICAgICAgICAgIGlmICgoYUhhc0tleSAmJiAhYkhhc0tleSkgfHxcclxuICAgICAgICAgICAgICAgICghYUhhc0tleSAmJiBiSGFzS2V5KSB8fFxyXG4gICAgICAgICAgICAgICAgIWxvb3NlRXF1YWwoYVtrZXldLCBiW2tleV0pKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gU3RyaW5nKGEpID09PSBTdHJpbmcoYik7XHJcbn1cclxuZnVuY3Rpb24gbG9vc2VJbmRleE9mKGFyciwgdmFsKSB7XHJcbiAgICByZXR1cm4gYXJyLmZpbmRJbmRleChpdGVtID0+IGxvb3NlRXF1YWwoaXRlbSwgdmFsKSk7XHJcbn1cblxuLyoqXHJcbiAqIEZvciBjb252ZXJ0aW5nIHt7IGludGVycG9sYXRpb24gfX0gdmFsdWVzIHRvIGRpc3BsYXllZCBzdHJpbmdzLlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuY29uc3QgdG9EaXNwbGF5U3RyaW5nID0gKHZhbCkgPT4ge1xyXG4gICAgcmV0dXJuIGlzU3RyaW5nKHZhbClcclxuICAgICAgICA/IHZhbFxyXG4gICAgICAgIDogdmFsID09IG51bGxcclxuICAgICAgICAgICAgPyAnJ1xyXG4gICAgICAgICAgICA6IGlzQXJyYXkodmFsKSB8fFxyXG4gICAgICAgICAgICAgICAgKGlzT2JqZWN0KHZhbCkgJiZcclxuICAgICAgICAgICAgICAgICAgICAodmFsLnRvU3RyaW5nID09PSBvYmplY3RUb1N0cmluZyB8fCAhaXNGdW5jdGlvbih2YWwudG9TdHJpbmcpKSlcclxuICAgICAgICAgICAgICAgID8gSlNPTi5zdHJpbmdpZnkodmFsLCByZXBsYWNlciwgMilcclxuICAgICAgICAgICAgICAgIDogU3RyaW5nKHZhbCk7XHJcbn07XHJcbmNvbnN0IHJlcGxhY2VyID0gKF9rZXksIHZhbCkgPT4ge1xyXG4gICAgLy8gY2FuJ3QgdXNlIGlzUmVmIGhlcmUgc2luY2UgQHZ1ZS9zaGFyZWQgaGFzIG5vIGRlcHNcclxuICAgIGlmICh2YWwgJiYgdmFsLl9fdl9pc1JlZikge1xyXG4gICAgICAgIHJldHVybiByZXBsYWNlcihfa2V5LCB2YWwudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNNYXAodmFsKSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIFtgTWFwKCR7dmFsLnNpemV9KWBdOiBbLi4udmFsLmVudHJpZXMoKV0ucmVkdWNlKChlbnRyaWVzLCBba2V5LCB2YWxdKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBlbnRyaWVzW2Ake2tleX0gPT5gXSA9IHZhbDtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlbnRyaWVzO1xyXG4gICAgICAgICAgICB9LCB7fSlcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNTZXQodmFsKSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIFtgU2V0KCR7dmFsLnNpemV9KWBdOiBbLi4udmFsLnZhbHVlcygpXVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc09iamVjdCh2YWwpICYmICFpc0FycmF5KHZhbCkgJiYgIWlzUGxhaW5PYmplY3QodmFsKSkge1xyXG4gICAgICAgIHJldHVybiBTdHJpbmcodmFsKTtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWw7XHJcbn07XG5cbmNvbnN0IEVNUFRZX09CSiA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgPyBPYmplY3QuZnJlZXplKHt9KVxyXG4gICAgOiB7fTtcclxuY29uc3QgRU1QVFlfQVJSID0gKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gT2JqZWN0LmZyZWV6ZShbXSkgOiBbXTtcclxuY29uc3QgTk9PUCA9ICgpID0+IHsgfTtcclxuLyoqXHJcbiAqIEFsd2F5cyByZXR1cm4gZmFsc2UuXHJcbiAqL1xyXG5jb25zdCBOTyA9ICgpID0+IGZhbHNlO1xyXG5jb25zdCBvblJFID0gL15vblteYS16XS87XHJcbmNvbnN0IGlzT24gPSAoa2V5KSA9PiBvblJFLnRlc3Qoa2V5KTtcclxuY29uc3QgaXNNb2RlbExpc3RlbmVyID0gKGtleSkgPT4ga2V5LnN0YXJ0c1dpdGgoJ29uVXBkYXRlOicpO1xyXG5jb25zdCBleHRlbmQgPSBPYmplY3QuYXNzaWduO1xyXG5jb25zdCByZW1vdmUgPSAoYXJyLCBlbCkgPT4ge1xyXG4gICAgY29uc3QgaSA9IGFyci5pbmRleE9mKGVsKTtcclxuICAgIGlmIChpID4gLTEpIHtcclxuICAgICAgICBhcnIuc3BsaWNlKGksIDEpO1xyXG4gICAgfVxyXG59O1xyXG5jb25zdCBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XHJcbmNvbnN0IGhhc093biA9ICh2YWwsIGtleSkgPT4gaGFzT3duUHJvcGVydHkuY2FsbCh2YWwsIGtleSk7XHJcbmNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xyXG5jb25zdCBpc01hcCA9ICh2YWwpID0+IHRvVHlwZVN0cmluZyh2YWwpID09PSAnW29iamVjdCBNYXBdJztcclxuY29uc3QgaXNTZXQgPSAodmFsKSA9PiB0b1R5cGVTdHJpbmcodmFsKSA9PT0gJ1tvYmplY3QgU2V0XSc7XHJcbmNvbnN0IGlzRGF0ZSA9ICh2YWwpID0+IHRvVHlwZVN0cmluZyh2YWwpID09PSAnW29iamVjdCBEYXRlXSc7XHJcbmNvbnN0IGlzRnVuY3Rpb24gPSAodmFsKSA9PiB0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nO1xyXG5jb25zdCBpc1N0cmluZyA9ICh2YWwpID0+IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnO1xyXG5jb25zdCBpc1N5bWJvbCA9ICh2YWwpID0+IHR5cGVvZiB2YWwgPT09ICdzeW1ib2wnO1xyXG5jb25zdCBpc09iamVjdCA9ICh2YWwpID0+IHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JztcclxuY29uc3QgaXNQcm9taXNlID0gKHZhbCkgPT4ge1xyXG4gICAgcmV0dXJuIGlzT2JqZWN0KHZhbCkgJiYgaXNGdW5jdGlvbih2YWwudGhlbikgJiYgaXNGdW5jdGlvbih2YWwuY2F0Y2gpO1xyXG59O1xyXG5jb25zdCBvYmplY3RUb1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XHJcbmNvbnN0IHRvVHlwZVN0cmluZyA9ICh2YWx1ZSkgPT4gb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XHJcbmNvbnN0IHRvUmF3VHlwZSA9ICh2YWx1ZSkgPT4ge1xyXG4gICAgLy8gZXh0cmFjdCBcIlJhd1R5cGVcIiBmcm9tIHN0cmluZ3MgbGlrZSBcIltvYmplY3QgUmF3VHlwZV1cIlxyXG4gICAgcmV0dXJuIHRvVHlwZVN0cmluZyh2YWx1ZSkuc2xpY2UoOCwgLTEpO1xyXG59O1xyXG5jb25zdCBpc1BsYWluT2JqZWN0ID0gKHZhbCkgPT4gdG9UeXBlU3RyaW5nKHZhbCkgPT09ICdbb2JqZWN0IE9iamVjdF0nO1xyXG5jb25zdCBpc0ludGVnZXJLZXkgPSAoa2V5KSA9PiBpc1N0cmluZyhrZXkpICYmXHJcbiAgICBrZXkgIT09ICdOYU4nICYmXHJcbiAgICBrZXlbMF0gIT09ICctJyAmJlxyXG4gICAgJycgKyBwYXJzZUludChrZXksIDEwKSA9PT0ga2V5O1xyXG5jb25zdCBpc1Jlc2VydmVkUHJvcCA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChcclxuLy8gdGhlIGxlYWRpbmcgY29tbWEgaXMgaW50ZW50aW9uYWwgc28gZW1wdHkgc3RyaW5nIFwiXCIgaXMgYWxzbyBpbmNsdWRlZFxyXG4nLGtleSxyZWYscmVmX2ZvcixyZWZfa2V5LCcgK1xyXG4gICAgJ29uVm5vZGVCZWZvcmVNb3VudCxvblZub2RlTW91bnRlZCwnICtcclxuICAgICdvblZub2RlQmVmb3JlVXBkYXRlLG9uVm5vZGVVcGRhdGVkLCcgK1xyXG4gICAgJ29uVm5vZGVCZWZvcmVVbm1vdW50LG9uVm5vZGVVbm1vdW50ZWQnKTtcclxuY29uc3QgaXNCdWlsdEluRGlyZWN0aXZlID0gLyojX19QVVJFX18qLyBtYWtlTWFwKCdiaW5kLGNsb2FrLGVsc2UtaWYsZWxzZSxmb3IsaHRtbCxpZixtb2RlbCxvbixvbmNlLHByZSxzaG93LHNsb3QsdGV4dCxtZW1vJyk7XHJcbmNvbnN0IGNhY2hlU3RyaW5nRnVuY3Rpb24gPSAoZm4pID0+IHtcclxuICAgIGNvbnN0IGNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICAgIHJldHVybiAoKHN0cikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGhpdCA9IGNhY2hlW3N0cl07XHJcbiAgICAgICAgcmV0dXJuIGhpdCB8fCAoY2FjaGVbc3RyXSA9IGZuKHN0cikpO1xyXG4gICAgfSk7XHJcbn07XHJcbmNvbnN0IGNhbWVsaXplUkUgPSAvLShcXHcpL2c7XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuY29uc3QgY2FtZWxpemUgPSBjYWNoZVN0cmluZ0Z1bmN0aW9uKChzdHIpID0+IHtcclxuICAgIHJldHVybiBzdHIucmVwbGFjZShjYW1lbGl6ZVJFLCAoXywgYykgPT4gKGMgPyBjLnRvVXBwZXJDYXNlKCkgOiAnJykpO1xyXG59KTtcclxuY29uc3QgaHlwaGVuYXRlUkUgPSAvXFxCKFtBLVpdKS9nO1xyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmNvbnN0IGh5cGhlbmF0ZSA9IGNhY2hlU3RyaW5nRnVuY3Rpb24oKHN0cikgPT4gc3RyLnJlcGxhY2UoaHlwaGVuYXRlUkUsICctJDEnKS50b0xvd2VyQ2FzZSgpKTtcclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5jb25zdCBjYXBpdGFsaXplID0gY2FjaGVTdHJpbmdGdW5jdGlvbigoc3RyKSA9PiBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSkpO1xyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmNvbnN0IHRvSGFuZGxlcktleSA9IGNhY2hlU3RyaW5nRnVuY3Rpb24oKHN0cikgPT4gc3RyID8gYG9uJHtjYXBpdGFsaXplKHN0cil9YCA6IGBgKTtcclxuLy8gY29tcGFyZSB3aGV0aGVyIGEgdmFsdWUgaGFzIGNoYW5nZWQsIGFjY291bnRpbmcgZm9yIE5hTi5cclxuY29uc3QgaGFzQ2hhbmdlZCA9ICh2YWx1ZSwgb2xkVmFsdWUpID0+ICFPYmplY3QuaXModmFsdWUsIG9sZFZhbHVlKTtcclxuY29uc3QgaW52b2tlQXJyYXlGbnMgPSAoZm5zLCBhcmcpID0+IHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm5zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgZm5zW2ldKGFyZyk7XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IGRlZiA9IChvYmosIGtleSwgdmFsdWUpID0+IHtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xyXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcclxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgICAgICB2YWx1ZVxyXG4gICAgfSk7XHJcbn07XHJcbmNvbnN0IHRvTnVtYmVyID0gKHZhbCkgPT4ge1xyXG4gICAgY29uc3QgbiA9IHBhcnNlRmxvYXQodmFsKTtcclxuICAgIHJldHVybiBpc05hTihuKSA/IHZhbCA6IG47XHJcbn07XHJcbmxldCBfZ2xvYmFsVGhpcztcclxuY29uc3QgZ2V0R2xvYmFsVGhpcyA9ICgpID0+IHtcclxuICAgIHJldHVybiAoX2dsb2JhbFRoaXMgfHxcclxuICAgICAgICAoX2dsb2JhbFRoaXMgPVxyXG4gICAgICAgICAgICB0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCdcclxuICAgICAgICAgICAgICAgID8gZ2xvYmFsVGhpc1xyXG4gICAgICAgICAgICAgICAgOiB0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCdcclxuICAgICAgICAgICAgICAgICAgICA/IHNlbGZcclxuICAgICAgICAgICAgICAgICAgICA6IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gd2luZG93XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2xvYmFsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSk7XHJcbn07XHJcbmNvbnN0IGlkZW50UkUgPSAvXltfJGEtekEtWlxceEEwLVxcdUZGRkZdW18kYS16QS1aMC05XFx4QTAtXFx1RkZGRl0qJC87XHJcbmZ1bmN0aW9uIGdlblByb3BzQWNjZXNzRXhwKG5hbWUpIHtcclxuICAgIHJldHVybiBpZGVudFJFLnRlc3QobmFtZSlcclxuICAgICAgICA/IGBfX3Byb3BzLiR7bmFtZX1gXHJcbiAgICAgICAgOiBgX19wcm9wc1ske0pTT04uc3RyaW5naWZ5KG5hbWUpfV1gO1xyXG59XG5cbmV4cG9ydCB7IEVNUFRZX0FSUiwgRU1QVFlfT0JKLCBOTywgTk9PUCwgUGF0Y2hGbGFnTmFtZXMsIGNhbWVsaXplLCBjYXBpdGFsaXplLCBkZWYsIGVzY2FwZUh0bWwsIGVzY2FwZUh0bWxDb21tZW50LCBleHRlbmQsIGdlblByb3BzQWNjZXNzRXhwLCBnZW5lcmF0ZUNvZGVGcmFtZSwgZ2V0R2xvYmFsVGhpcywgaGFzQ2hhbmdlZCwgaGFzT3duLCBoeXBoZW5hdGUsIGluY2x1ZGVCb29sZWFuQXR0ciwgaW52b2tlQXJyYXlGbnMsIGlzQXJyYXksIGlzQm9vbGVhbkF0dHIsIGlzQnVpbHRJbkRpcmVjdGl2ZSwgaXNEYXRlLCBpc0Z1bmN0aW9uLCBpc0dsb2JhbGx5V2hpdGVsaXN0ZWQsIGlzSFRNTFRhZywgaXNJbnRlZ2VyS2V5LCBpc0tub3duSHRtbEF0dHIsIGlzS25vd25TdmdBdHRyLCBpc01hcCwgaXNNb2RlbExpc3RlbmVyLCBpc05vVW5pdE51bWVyaWNTdHlsZVByb3AsIGlzT2JqZWN0LCBpc09uLCBpc1BsYWluT2JqZWN0LCBpc1Byb21pc2UsIGlzUmVzZXJ2ZWRQcm9wLCBpc1NTUlNhZmVBdHRyTmFtZSwgaXNTVkdUYWcsIGlzU2V0LCBpc1NwZWNpYWxCb29sZWFuQXR0ciwgaXNTdHJpbmcsIGlzU3ltYm9sLCBpc1ZvaWRUYWcsIGxvb3NlRXF1YWwsIGxvb3NlSW5kZXhPZiwgbWFrZU1hcCwgbm9ybWFsaXplQ2xhc3MsIG5vcm1hbGl6ZVByb3BzLCBub3JtYWxpemVTdHlsZSwgb2JqZWN0VG9TdHJpbmcsIHBhcnNlU3RyaW5nU3R5bGUsIHByb3BzVG9BdHRyTWFwLCByZW1vdmUsIHNsb3RGbGFnc1RleHQsIHN0cmluZ2lmeVN0eWxlLCB0b0Rpc3BsYXlTdHJpbmcsIHRvSGFuZGxlcktleSwgdG9OdW1iZXIsIHRvUmF3VHlwZSwgdG9UeXBlU3RyaW5nIH07XG4iLCJpbXBvcnQgeyB0b1JlZnMsIGdldEN1cnJlbnRJbnN0YW5jZSwgcmVmLCBjb21wdXRlZCwgd2F0Y2gsIG5leHRUaWNrLCBvbk1vdW50ZWQsIG9wZW5CbG9jaywgY3JlYXRlRWxlbWVudEJsb2NrLCBub3JtYWxpemVDbGFzcywgY3JlYXRlRWxlbWVudFZOb2RlLCBtZXJnZVByb3BzLCBjcmVhdGVDb21tZW50Vk5vZGUsIHdpdGhNb2RpZmllcnMsIEZyYWdtZW50LCByZW5kZXJMaXN0LCByZW5kZXJTbG90LCB3aXRoS2V5cywgY3JlYXRlVGV4dFZOb2RlLCB0b0Rpc3BsYXlTdHJpbmcgfSBmcm9tICd2dWUnO1xuXG5mdW5jdGlvbiBpc051bGxpc2ggKHZhbCkge1xuICByZXR1cm4gW251bGwsIHVuZGVmaW5lZF0uaW5kZXhPZih2YWwpICE9PSAtMVxufVxuXG5mdW5jdGlvbiB1c2VEYXRhIChwcm9wcywgY29udGV4dCwgZGVwKVxue1xuICBjb25zdCB7IG9iamVjdCwgdmFsdWVQcm9wLCBtb2RlIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIGNvbnN0ICR0aGlzID0gZ2V0Q3VycmVudEluc3RhbmNlKCkucHJveHk7XG5cbiAgLy8gPT09PT09PT09PT09IERFUEVOREVOQ0lFUyA9PT09PT09PT09PT1cblxuICBjb25zdCBpdiA9IGRlcC5pdjtcblxuICAvLyA9PT09PT09PT09PT09PT0gTUVUSE9EUyA9PT09PT09PT09PT09PVxuXG4gIGNvbnN0IHVwZGF0ZSA9ICh2YWwsIHRyaWdnZXJJbnB1dCA9IHRydWUpID0+IHtcbiAgICAvLyBTZXR0aW5nIG9iamVjdChzKSBhcyBpbnRlcm5hbCB2YWx1ZVxuICAgIGl2LnZhbHVlID0gbWFrZUludGVybmFsKHZhbCk7XG5cbiAgICAvLyBTZXR0aW5nIG9iamVjdChzKSBvciBwbGFpbiB2YWx1ZSBhcyBleHRlcm5hbCBcbiAgICAvLyB2YWx1ZSBiYXNlZCBvbiBgb3B0aW9uYCBzZXR0aW5nXG4gICAgY29uc3QgZXh0ZXJuYWxWYWwgPSBtYWtlRXh0ZXJuYWwodmFsKTtcblxuICAgIGNvbnRleHQuZW1pdCgnY2hhbmdlJywgZXh0ZXJuYWxWYWwsICR0aGlzKTtcblxuICAgIGlmICh0cmlnZ2VySW5wdXQpIHtcbiAgICAgIGNvbnRleHQuZW1pdCgnaW5wdXQnLCBleHRlcm5hbFZhbCk7XG4gICAgICBjb250ZXh0LmVtaXQoJ3VwZGF0ZTptb2RlbFZhbHVlJywgZXh0ZXJuYWxWYWwpO1xuICAgIH1cbiAgfTsgXG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IG1ha2VFeHRlcm5hbCA9ICh2YWwpID0+IHtcbiAgICAvLyBJZiBleHRlcm5hbCB2YWx1ZSBzaG91bGQgYmUgb2JqZWN0XG4gICAgLy8gbm8gdHJhbnNmb3JtYXRpb24gaXMgcmVxdWlyZWRcbiAgICBpZiAob2JqZWN0LnZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsXG4gICAgfVxuXG4gICAgLy8gTm8gbmVlZCB0byB0cmFuc2Zvcm0gaWYgZW1wdHkgdmFsdWVcbiAgICBpZiAoaXNOdWxsaXNoKHZhbCkpIHtcbiAgICAgIHJldHVybiB2YWxcbiAgICB9XG5cbiAgICAvLyBJZiBleHRlcm5hbCBzaG91bGQgYmUgcGxhaW4gdHJhbnNmb3JtXG4gICAgLy8gdmFsdWUgb2JqZWN0IHRvIHBsYWluIHZhbHVlc1xuICAgIHJldHVybiAhQXJyYXkuaXNBcnJheSh2YWwpID8gdmFsW3ZhbHVlUHJvcC52YWx1ZV0gOiB2YWwubWFwKHYgPT4gdlt2YWx1ZVByb3AudmFsdWVdKVxuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBtYWtlSW50ZXJuYWwgPSAodmFsKSA9PiB7XG4gICAgaWYgKGlzTnVsbGlzaCh2YWwpKSB7XG4gICAgICByZXR1cm4gbW9kZS52YWx1ZSA9PT0gJ3NpbmdsZScgPyB7fSA6IFtdXG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgdXBkYXRlLFxuICB9XG59XG5cbmZ1bmN0aW9uIHVzZVZhbHVlIChwcm9wcywgY29udGV4dClcbntcbiAgY29uc3QgeyB2YWx1ZSwgbW9kZWxWYWx1ZSwgbW9kZSwgdmFsdWVQcm9wIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIC8vID09PT09PT09PT09PT09PT0gREFUQSA9PT09PT09PT09PT09PT09XG5cbiAgLy8gaW50ZXJuYWxWYWx1ZVxuICBjb25zdCBpdiA9IHJlZihtb2RlLnZhbHVlICE9PSAnc2luZ2xlJyA/IFtdIDoge30pO1xuXG4gIC8vID09PT09PT09PT09PT09IENPTVBVVEVEID09PT09PT09PT09PT09XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgLy8gZXh0ZXJuYWxWYWx1ZVxuICBjb25zdCBldiA9IG1vZGVsVmFsdWUgJiYgbW9kZWxWYWx1ZS52YWx1ZSAhPT0gdW5kZWZpbmVkID8gbW9kZWxWYWx1ZSA6IHZhbHVlO1xuXG4gIGNvbnN0IHBsYWluVmFsdWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIG1vZGUudmFsdWUgPT09ICdzaW5nbGUnID8gaXYudmFsdWVbdmFsdWVQcm9wLnZhbHVlXSA6IGl2LnZhbHVlLm1hcCh2PT52W3ZhbHVlUHJvcC52YWx1ZV0pXG4gIH0pO1xuXG4gIGNvbnN0IHRleHRWYWx1ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gbW9kZS52YWx1ZSAhPT0gJ3NpbmdsZScgPyBpdi52YWx1ZS5tYXAodj0+dlt2YWx1ZVByb3AudmFsdWVdKS5qb2luKCcsJykgOiBpdi52YWx1ZVt2YWx1ZVByb3AudmFsdWVdXG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgaXYsXG4gICAgaW50ZXJuYWxWYWx1ZTogaXYsXG4gICAgZXYsXG4gICAgZXh0ZXJuYWxWYWx1ZTogZXYsXG4gICAgdGV4dFZhbHVlLFxuICAgIHBsYWluVmFsdWUsXG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlU2VhcmNoIChwcm9wcywgY29udGV4dCwgZGVwKVxue1xuICBjb25zdCB7IHJlZ2V4IH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIGNvbnN0ICR0aGlzID0gZ2V0Q3VycmVudEluc3RhbmNlKCkucHJveHk7XG5cbiAgLy8gPT09PT09PT09PT09IERFUEVOREVOQ0lFUyA9PT09PT09PT09PT1cblxuICBjb25zdCBpc09wZW4gPSBkZXAuaXNPcGVuO1xuICBjb25zdCBvcGVuID0gZGVwLm9wZW47XG5cbiAgLy8gPT09PT09PT09PT09PT09PSBEQVRBID09PT09PT09PT09PT09PT1cblxuICBjb25zdCBzZWFyY2ggPSByZWYobnVsbCk7XG5cbiAgY29uc3QgaW5wdXQgPSByZWYobnVsbCk7XG5cbiAgLy8gPT09PT09PT09PT09PT09IE1FVEhPRFMgPT09PT09PT09PT09PT1cblxuICBjb25zdCBjbGVhclNlYXJjaCA9ICgpID0+IHtcbiAgICBzZWFyY2gudmFsdWUgPSAnJztcbiAgfTtcblxuICBjb25zdCBoYW5kbGVTZWFyY2hJbnB1dCA9IChlKSA9PiB7XG4gICAgc2VhcmNoLnZhbHVlID0gZS50YXJnZXQudmFsdWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlS2V5cHJlc3MgPSAoZSkgPT4ge1xuICAgIGlmIChyZWdleCAmJiByZWdleC52YWx1ZSkge1xuICAgICAgbGV0IHJlZ2V4cCA9IHJlZ2V4LnZhbHVlO1xuXG4gICAgICBpZiAodHlwZW9mIHJlZ2V4cCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmVnZXhwID0gbmV3IFJlZ0V4cChyZWdleHApO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWUua2V5Lm1hdGNoKHJlZ2V4cCkpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVQYXN0ZSA9IChlKSA9PiB7XG4gICAgaWYgKHJlZ2V4ICYmIHJlZ2V4LnZhbHVlKSB7XG4gICAgICBsZXQgY2xpcGJvYXJkRGF0YSA9IGUuY2xpcGJvYXJkRGF0YSB8fCAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyB3aW5kb3cuY2xpcGJvYXJkRGF0YTtcbiAgICAgIGxldCBwYXN0ZWREYXRhID0gY2xpcGJvYXJkRGF0YS5nZXREYXRhKCdUZXh0Jyk7XG5cbiAgICAgIGxldCByZWdleHAgPSByZWdleC52YWx1ZTtcblxuICAgICAgaWYgKHR5cGVvZiByZWdleHAgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJlZ2V4cCA9IG5ldyBSZWdFeHAocmVnZXhwKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKCFwYXN0ZWREYXRhLnNwbGl0KCcnKS5ldmVyeShjID0+ICEhYy5tYXRjaChyZWdleHApKSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29udGV4dC5lbWl0KCdwYXN0ZScsIGUsICR0aGlzKTtcbiAgfTtcblxuICAvLyA9PT09PT09PT09PT09PSBXQVRDSEVSUyA9PT09PT09PT09PT09PVxuXG4gIHdhdGNoKHNlYXJjaCwgKHZhbCkgPT4ge1xuICAgIGlmICghaXNPcGVuLnZhbHVlICYmIHZhbCkge1xuICAgICAgb3BlbigpO1xuICAgIH1cblxuICAgIGNvbnRleHQuZW1pdCgnc2VhcmNoLWNoYW5nZScsIHZhbCwgJHRoaXMpO1xuICB9KTtcblxuICByZXR1cm4ge1xuICAgIHNlYXJjaCxcbiAgICBpbnB1dCxcbiAgICBjbGVhclNlYXJjaCxcbiAgICBoYW5kbGVTZWFyY2hJbnB1dCxcbiAgICBoYW5kbGVLZXlwcmVzcyxcbiAgICBoYW5kbGVQYXN0ZSxcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VQb2ludGVyJDEgKHByb3BzLCBjb250ZXh0LCBkZXApXG57XG4gIGNvbnN0IHsgZ3JvdXBTZWxlY3QsIG1vZGUsIGdyb3VwcywgZGlzYWJsZWRQcm9wIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIC8vID09PT09PT09PT09PT09PT0gREFUQSA9PT09PT09PT09PT09PT09XG5cbiAgY29uc3QgcG9pbnRlciA9IHJlZihudWxsKTtcblxuICAvLyA9PT09PT09PT09PT09PT0gTUVUSE9EUyA9PT09PT09PT09PT09PVxuXG4gIGNvbnN0IHNldFBvaW50ZXIgPSAob3B0aW9uKSA9PiB7XG4gICAgaWYgKG9wdGlvbiA9PT0gdW5kZWZpbmVkIHx8IChvcHRpb24gIT09IG51bGwgJiYgb3B0aW9uW2Rpc2FibGVkUHJvcC52YWx1ZV0pKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoZ3JvdXBzLnZhbHVlICYmIG9wdGlvbiAmJiBvcHRpb24uZ3JvdXAgJiYgKG1vZGUudmFsdWUgPT09ICdzaW5nbGUnIHx8ICFncm91cFNlbGVjdC52YWx1ZSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHBvaW50ZXIudmFsdWUgPSBvcHRpb247XG4gIH07XG5cbiAgY29uc3QgY2xlYXJQb2ludGVyID0gKCkgPT4ge1xuICAgIHNldFBvaW50ZXIobnVsbCk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBwb2ludGVyLFxuICAgIHNldFBvaW50ZXIsXG4gICAgY2xlYXJQb2ludGVyLFxuICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZSAoc3RyLCBzdHJpY3QgPSB0cnVlKSB7XG4gIHJldHVybiBzdHJpY3RcbiAgICA/IFN0cmluZyhzdHIpLnRvTG93ZXJDYXNlKCkudHJpbSgpXG4gICAgOiBTdHJpbmcoc3RyKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgIC5ub3JtYWxpemUoJ05GRCcpXG4gICAgICAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgICAgICAgLnJlcGxhY2UobmV3IFJlZ0V4cCgvw6YvZyksICdhZScpXG4gICAgICAgICAgICAgICAgIC5yZXBsYWNlKG5ldyBSZWdFeHAoL8WTL2cpLCAnb2UnKVxuICAgICAgICAgICAgICAgICAucmVwbGFjZShuZXcgUmVnRXhwKC/DuC9nKSwgJ28nKVxuICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxwe0RpYWNyaXRpY30vZ3UsICcnKVxufVxuXG5mdW5jdGlvbiBpc09iamVjdCAodmFyaWFibGUpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YXJpYWJsZSkgPT09ICdbb2JqZWN0IE9iamVjdF0nXG59XG5cbmZ1bmN0aW9uIGFycmF5c0VxdWFsIChhcnJheTEsIGFycmF5Mikge1xuICBjb25zdCBhcnJheTJTb3J0ZWQgPSBhcnJheTIuc2xpY2UoKS5zb3J0KCk7XG5cbiAgcmV0dXJuIGFycmF5MS5sZW5ndGggPT09IGFycmF5Mi5sZW5ndGggJiYgYXJyYXkxLnNsaWNlKCkuc29ydCgpLmV2ZXJ5KGZ1bmN0aW9uKHZhbHVlLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSBhcnJheTJTb3J0ZWRbaW5kZXhdO1xuICB9KVxufVxuXG5mdW5jdGlvbiB1c2VPcHRpb25zIChwcm9wcywgY29udGV4dCwgZGVwKVxue1xuICBjb25zdCB7IFxuICAgIG9wdGlvbnMsIG1vZGUsIHRyYWNrQnk6IHRyYWNrQnlfLCBsaW1pdCwgaGlkZVNlbGVjdGVkLCBjcmVhdGVUYWcsIGNyZWF0ZU9wdGlvbjogY3JlYXRlT3B0aW9uXywgbGFiZWwsXG4gICAgYXBwZW5kTmV3VGFnLCBhcHBlbmROZXdPcHRpb246IGFwcGVuZE5ld09wdGlvbl8sIG11bHRpcGxlTGFiZWwsIG9iamVjdCwgbG9hZGluZywgZGVsYXksIHJlc29sdmVPbkxvYWQsXG4gICAgbWluQ2hhcnMsIGZpbHRlclJlc3VsdHMsIGNsZWFyT25TZWFyY2gsIGNsZWFyT25TZWxlY3QsIHZhbHVlUHJvcCwgYWxsb3dBYnNlbnQsIGdyb3VwTGFiZWwsXG4gICAgY2FuRGVzZWxlY3QsIG1heCwgc3RyaWN0LCBjbG9zZU9uU2VsZWN0LCBjbG9zZU9uRGVzZWxlY3QsIGdyb3VwczogZ3JvdXBwZWQsIHJldmVyc2UsIGluZmluaXRlLFxuICAgIGdyb3VwT3B0aW9ucywgZ3JvdXBIaWRlRW1wdHksIGdyb3VwU2VsZWN0LCBvbkNyZWF0ZSwgZGlzYWJsZWRQcm9wLCBzZWFyY2hTdGFydCwgc2VhcmNoRmlsdGVyLFxuICB9ID0gdG9SZWZzKHByb3BzKTtcblxuICBjb25zdCAkdGhpcyA9IGdldEN1cnJlbnRJbnN0YW5jZSgpLnByb3h5O1xuXG4gIC8vID09PT09PT09PT09PSBERVBFTkRFTkNJRVMgPT09PT09PT09PT09XG5cbiAgY29uc3QgaXYgPSBkZXAuaXY7XG4gIGNvbnN0IGV2ID0gZGVwLmV2O1xuICBjb25zdCBzZWFyY2ggPSBkZXAuc2VhcmNoO1xuICBjb25zdCBjbGVhclNlYXJjaCA9IGRlcC5jbGVhclNlYXJjaDtcbiAgY29uc3QgdXBkYXRlID0gZGVwLnVwZGF0ZTtcbiAgY29uc3QgcG9pbnRlciA9IGRlcC5wb2ludGVyO1xuICBjb25zdCBjbGVhclBvaW50ZXIgPSBkZXAuY2xlYXJQb2ludGVyO1xuICBjb25zdCBmb2N1cyA9IGRlcC5mb2N1cztcbiAgY29uc3QgZGVhY3RpdmF0ZSA9IGRlcC5kZWFjdGl2YXRlO1xuICBjb25zdCBjbG9zZSA9IGRlcC5jbG9zZTtcbiAgY29uc3QgbG9jYWxpemUgPSBkZXAubG9jYWxpemU7XG5cbiAgLy8gPT09PT09PT09PT09PT09PSBEQVRBID09PT09PT09PT09PT09PT1cblxuICAvLyBubyBleHBvcnRcbiAgLy8gYXBwZW5kZWRPcHRpb25zXG4gIGNvbnN0IGFwID0gcmVmKFtdKTtcblxuICAvLyBubyBleHBvcnRcbiAgLy8gcmVzb2x2ZWRPcHRpb25zXG4gIGNvbnN0IHJvID0gcmVmKFtdKTtcblxuICBjb25zdCByZXNvbHZpbmcgPSByZWYoZmFsc2UpO1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBzZWFyY2hXYXRjaGVyID0gcmVmKG51bGwpO1xuXG4gIGNvbnN0IG9mZnNldCA9IHJlZihpbmZpbml0ZS52YWx1ZSAmJiBsaW1pdC52YWx1ZSA9PT0gLTEgPyAxMCA6IGxpbWl0LnZhbHVlKTtcblxuICAvLyA9PT09PT09PT09PT09PSBDT01QVVRFRCA9PT09PT09PT09PT09PVxuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBjcmVhdGVPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIGNyZWF0ZVRhZy52YWx1ZSB8fCBjcmVhdGVPcHRpb25fLnZhbHVlIHx8IGZhbHNlXG4gIH0pO1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBhcHBlbmROZXdPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGFwcGVuZE5ld1RhZy52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gYXBwZW5kTmV3VGFnLnZhbHVlXG4gICAgfSBlbHNlIGlmIChhcHBlbmROZXdPcHRpb25fLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBhcHBlbmROZXdPcHRpb25fLnZhbHVlXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfSk7XG5cbiAgLy8gbm8gZXhwb3J0XG4gIC8vIGV4dGVuZGVkT3B0aW9uc1xuICBjb25zdCBlbyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoZ3JvdXBwZWQudmFsdWUpIHtcbiAgICAgIGxldCBncm91cHMgPSBlZy52YWx1ZSB8fCAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBbXTtcblxuICAgICAgbGV0IGVvID0gW107XG5cbiAgICAgIGdyb3Vwcy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICBvcHRpb25zVG9BcnJheShncm91cFtncm91cE9wdGlvbnMudmFsdWVdKS5mb3JFYWNoKChvcHRpb24pID0+IHtcbiAgICAgICAgICBlby5wdXNoKE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbiwgZ3JvdXBbZGlzYWJsZWRQcm9wLnZhbHVlXSA/IHsgW2Rpc2FibGVkUHJvcC52YWx1ZV06IHRydWUgfSA6IHt9KSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBlb1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZW8gPSBvcHRpb25zVG9BcnJheShyby52YWx1ZSB8fCAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBbXSk7XG5cbiAgICAgIGlmIChhcC52YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgZW8gPSBlby5jb25jYXQoYXAudmFsdWUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZW9cbiAgICB9XG4gIH0pO1xuXG4gIC8vIHByZUZpbHRlcmVkT3B0aW9uc1xuICBjb25zdCBwZm8gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgbGV0IG9wdGlvbnMgPSBlby52YWx1ZTtcblxuICAgIGlmIChyZXZlcnNlLnZhbHVlKSB7XG4gICAgICBvcHRpb25zID0gb3B0aW9ucy5yZXZlcnNlKCk7XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZWRPcHRpb24udmFsdWUubGVuZ3RoKSB7XG4gICAgICBvcHRpb25zID0gY3JlYXRlZE9wdGlvbi52YWx1ZS5jb25jYXQob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbHRlck9wdGlvbnMob3B0aW9ucylcbiAgfSk7XG5cbiAgLy8gZmlsdGVyZWRPcHRpb25zXG4gIGNvbnN0IGZvID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGxldCBvcHRpb25zID0gcGZvLnZhbHVlO1xuXG4gICAgaWYgKG9mZnNldC52YWx1ZSA+IDApIHtcbiAgICAgIG9wdGlvbnMgPSBvcHRpb25zLnNsaWNlKDAsIG9mZnNldC52YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wdGlvbnNcbiAgfSk7XG5cbiAgLy8gbm8gZXhwb3J0XG4gIC8vIGV4dGVuZGVkR3JvdXBzXG4gIGNvbnN0IGVnID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICghZ3JvdXBwZWQudmFsdWUpIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cblxuICAgIGxldCBlZyA9IFtdO1xuICAgIGxldCBncm91cHMgPSByby52YWx1ZSB8fCAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBbXTtcblxuICAgIGlmIChhcC52YWx1ZS5sZW5ndGgpIHtcbiAgICAgIGVnLnB1c2goe1xuICAgICAgICBbZ3JvdXBMYWJlbC52YWx1ZV06ICcgJyxcbiAgICAgICAgW2dyb3VwT3B0aW9ucy52YWx1ZV06IFsuLi5hcC52YWx1ZV0sXG4gICAgICAgIF9fQ1JFQVRFX186IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBlZy5jb25jYXQoZ3JvdXBzKVxuICB9KTtcblxuICAvLyBwcmVGaWx0ZXJlZEdyb3Vwc1xuICBjb25zdCBwZmcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgbGV0IGdyb3VwcyA9IFsuLi5lZy52YWx1ZV0ubWFwKGcgPT4gKHsuLi5nfSkpO1xuXG4gICAgaWYgKGNyZWF0ZWRPcHRpb24udmFsdWUubGVuZ3RoKSB7XG4gICAgICBpZiAoZ3JvdXBzWzBdICYmIGdyb3Vwc1swXS5fX0NSRUFURV9fKSB7XG4gICAgICAgIGdyb3Vwc1swXVtncm91cE9wdGlvbnMudmFsdWVdID0gWy4uLmNyZWF0ZWRPcHRpb24udmFsdWUsIC4uLmdyb3Vwc1swXVtncm91cE9wdGlvbnMudmFsdWVdXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyb3VwcyA9IFt7XG4gICAgICAgICAgW2dyb3VwTGFiZWwudmFsdWVdOiAnICcsXG4gICAgICAgICAgW2dyb3VwT3B0aW9ucy52YWx1ZV06IFsuLi5jcmVhdGVkT3B0aW9uLnZhbHVlXSxcbiAgICAgICAgICBfX0NSRUFURV9fOiB0cnVlXG4gICAgICAgIH1dLmNvbmNhdChncm91cHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBncm91cHNcbiAgfSk7XG5cbiAgLy8gZmlsdGVyZWRHcm91cHNcbiAgY29uc3QgZmcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKCFncm91cHBlZC52YWx1ZSkge1xuICAgICAgcmV0dXJuIFtdXG4gICAgfVxuXG4gICAgbGV0IG9wdGlvbnMgPSBwZmcudmFsdWU7XG5cbiAgICByZXR1cm4gZmlsdGVyR3JvdXBzKChvcHRpb25zIHx8IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIFtdKS5tYXAoKGdyb3VwLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgYXJyYXlPcHRpb25zID0gb3B0aW9uc1RvQXJyYXkoZ3JvdXBbZ3JvdXBPcHRpb25zLnZhbHVlXSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmdyb3VwLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgZ3JvdXA6IHRydWUsXG4gICAgICAgIFtncm91cE9wdGlvbnMudmFsdWVdOiBmaWx0ZXJPcHRpb25zKGFycmF5T3B0aW9ucywgZmFsc2UpLm1hcChvID0+IE9iamVjdC5hc3NpZ24oe30sIG8sIGdyb3VwW2Rpc2FibGVkUHJvcC52YWx1ZV0gPyB7IFtkaXNhYmxlZFByb3AudmFsdWVdOiB0cnVlIH0gOiB7fSkpLFxuICAgICAgICBfX1ZJU0lCTEVfXzogZmlsdGVyT3B0aW9ucyhhcnJheU9wdGlvbnMpLm1hcChvID0+IE9iamVjdC5hc3NpZ24oe30sIG8sIGdyb3VwW2Rpc2FibGVkUHJvcC52YWx1ZV0gPyB7IFtkaXNhYmxlZFByb3AudmFsdWVdOiB0cnVlIH0gOiB7fSkpLFxuICAgICAgfVxuICAgICAgLy8gRGlmZmVyZW5jZSBiZXR3ZWVuIF9fVklTSUJMRV9fIGFuZCB7Z3JvdXBPcHRpb25zfTogdmlzaWJsZSBkb2VzIG5vdCBjb250YWluIHNlbGVjdGVkIG9wdGlvbnMgd2hlbiBoaWRlU2VsZWN0ZWQ9dHJ1ZVxuICAgIH0pKVxuICB9KTtcblxuICBjb25zdCBoYXNTZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBzd2l0Y2ggKG1vZGUudmFsdWUpIHtcbiAgICAgIGNhc2UgJ3NpbmdsZSc6XG4gICAgICAgIHJldHVybiAhaXNOdWxsaXNoKGl2LnZhbHVlW3ZhbHVlUHJvcC52YWx1ZV0pXG5cbiAgICAgIGNhc2UgJ211bHRpcGxlJzpcbiAgICAgIGNhc2UgJ3RhZ3MnOlxuICAgICAgICByZXR1cm4gIWlzTnVsbGlzaChpdi52YWx1ZSkgJiYgaXYudmFsdWUubGVuZ3RoID4gMFxuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgbXVsdGlwbGVMYWJlbFRleHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIG11bHRpcGxlTGFiZWwgIT09IHVuZGVmaW5lZCAmJiBtdWx0aXBsZUxhYmVsLnZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgID8gbXVsdGlwbGVMYWJlbC52YWx1ZShpdi52YWx1ZSwgJHRoaXMpXG4gICAgICA6IChpdi52YWx1ZSAmJiBpdi52YWx1ZS5sZW5ndGggPiAxID8gYCR7aXYudmFsdWUubGVuZ3RofSBvcHRpb25zIHNlbGVjdGVkYCA6IGAxIG9wdGlvbiBzZWxlY3RlZGApXG4gIH0pO1xuXG4gIGNvbnN0IG5vT3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gIWVvLnZhbHVlLmxlbmd0aCAmJiAhcmVzb2x2aW5nLnZhbHVlICYmICFjcmVhdGVkT3B0aW9uLnZhbHVlLmxlbmd0aFxuICB9KTtcblxuXG4gIGNvbnN0IG5vUmVzdWx0cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gZW8udmFsdWUubGVuZ3RoID4gMCAmJiBmby52YWx1ZS5sZW5ndGggPT0gMCAmJiAoKHNlYXJjaC52YWx1ZSAmJiBncm91cHBlZC52YWx1ZSkgfHwgIWdyb3VwcGVkLnZhbHVlKVxuICB9KTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgY3JlYXRlZE9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoY3JlYXRlT3B0aW9uLnZhbHVlID09PSBmYWxzZSB8fCAhc2VhcmNoLnZhbHVlKSB7XG4gICAgICByZXR1cm4gW11cbiAgICB9XG5cbiAgICBpZiAoZ2V0T3B0aW9uQnlUcmFja0J5KHNlYXJjaC52YWx1ZSkgIT09IC0xKSB7XG4gICAgICByZXR1cm4gW11cbiAgICB9XG5cbiAgICByZXR1cm4gW3tcbiAgICAgIFt2YWx1ZVByb3AudmFsdWVdOiBzZWFyY2gudmFsdWUsXG4gICAgICBbdHJhY2tCeS52YWx1ZV06IHNlYXJjaC52YWx1ZSxcbiAgICAgIFtsYWJlbC52YWx1ZV06IHNlYXJjaC52YWx1ZSxcbiAgICAgIF9fQ1JFQVRFX186IHRydWUsXG4gICAgfV1cbiAgfSk7XG5cbiAgY29uc3QgdHJhY2tCeSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdHJhY2tCeV8udmFsdWUgfHwgbGFiZWwudmFsdWVcbiAgfSk7XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IG51bGxWYWx1ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBzd2l0Y2ggKG1vZGUudmFsdWUpIHtcbiAgICAgIGNhc2UgJ3NpbmdsZSc6XG4gICAgICAgIHJldHVybiBudWxsXG5cbiAgICAgIGNhc2UgJ211bHRpcGxlJzpcbiAgICAgIGNhc2UgJ3RhZ3MnOlxuICAgICAgICByZXR1cm4gW11cbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGJ1c3kgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIGxvYWRpbmcudmFsdWUgfHwgcmVzb2x2aW5nLnZhbHVlXG4gIH0pO1xuXG4gIC8vID09PT09PT09PT09PT09PSBNRVRIT0RTID09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7YXJyYXl8b2JqZWN0fHN0cmluZ3xudW1iZXJ9IG9wdGlvbiBcbiAgICovXG4gIGNvbnN0IHNlbGVjdCA9IChvcHRpb24pID0+IHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbiAhPT0gJ29iamVjdCcpIHtcbiAgICAgIG9wdGlvbiA9IGdldE9wdGlvbihvcHRpb24pO1xuICAgIH1cblxuICAgIHN3aXRjaCAobW9kZS52YWx1ZSkge1xuICAgICAgY2FzZSAnc2luZ2xlJzpcbiAgICAgICAgdXBkYXRlKG9wdGlvbik7XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ211bHRpcGxlJzpcbiAgICAgIGNhc2UgJ3RhZ3MnOlxuICAgICAgICB1cGRhdGUoKGl2LnZhbHVlKS5jb25jYXQob3B0aW9uKSk7XG4gICAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY29udGV4dC5lbWl0KCdzZWxlY3QnLCBmaW5hbFZhbHVlKG9wdGlvbiksIG9wdGlvbiwgJHRoaXMpO1xuICB9O1xuXG4gIGNvbnN0IGRlc2VsZWN0ID0gKG9wdGlvbikgPT4ge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9uICE9PSAnb2JqZWN0Jykge1xuICAgICAgb3B0aW9uID0gZ2V0T3B0aW9uKG9wdGlvbik7XG4gICAgfVxuXG4gICAgc3dpdGNoIChtb2RlLnZhbHVlKSB7XG4gICAgICBjYXNlICdzaW5nbGUnOlxuICAgICAgICBjbGVhcigpO1xuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICd0YWdzJzpcbiAgICAgIGNhc2UgJ211bHRpcGxlJzpcbiAgICAgICAgdXBkYXRlKEFycmF5LmlzQXJyYXkob3B0aW9uKVxuICAgICAgICAgID8gaXYudmFsdWUuZmlsdGVyKHYgPT4gb3B0aW9uLm1hcChvID0+IG9bdmFsdWVQcm9wLnZhbHVlXSkuaW5kZXhPZih2W3ZhbHVlUHJvcC52YWx1ZV0pID09PSAtMSlcbiAgICAgICAgICA6IGl2LnZhbHVlLmZpbHRlcih2ID0+IHZbdmFsdWVQcm9wLnZhbHVlXSAhPSBvcHRpb25bdmFsdWVQcm9wLnZhbHVlXSkpO1xuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIGNvbnRleHQuZW1pdCgnZGVzZWxlY3QnLCBmaW5hbFZhbHVlKG9wdGlvbiksIG9wdGlvbiwgJHRoaXMpO1xuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBmaW5hbFZhbHVlID0gKG9wdGlvbikgPT4ge1xuICAgIHJldHVybiBvYmplY3QudmFsdWUgPyBvcHRpb24gOiBvcHRpb25bdmFsdWVQcm9wLnZhbHVlXVxuICB9O1xuXG4gIGNvbnN0IHJlbW92ZSA9IChvcHRpb24pID0+IHtcbiAgICBkZXNlbGVjdChvcHRpb24pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVRhZ1JlbW92ZSA9IChvcHRpb24sIGUpID0+IHtcbiAgICBpZiAoZS5idXR0b24gIT09IDApIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHJlbW92ZShvcHRpb24pO1xuICB9O1xuXG4gIGNvbnN0IGNsZWFyID0gKCkgPT4ge1xuICAgIGNvbnRleHQuZW1pdCgnY2xlYXInLCAkdGhpcyk7XG4gICAgdXBkYXRlKG51bGxWYWx1ZS52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgaXNTZWxlY3RlZCA9IChvcHRpb24pID0+IHtcbiAgICBpZiAob3B0aW9uLmdyb3VwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBtb2RlLnZhbHVlID09PSAnc2luZ2xlJyA/IGZhbHNlIDogYXJlQWxsU2VsZWN0ZWQob3B0aW9uW2dyb3VwT3B0aW9ucy52YWx1ZV0pICYmIG9wdGlvbltncm91cE9wdGlvbnMudmFsdWVdLmxlbmd0aFxuICAgIH1cblxuICAgIHN3aXRjaCAobW9kZS52YWx1ZSkge1xuICAgICAgY2FzZSAnc2luZ2xlJzpcbiAgICAgICAgcmV0dXJuICFpc051bGxpc2goaXYudmFsdWUpICYmIGl2LnZhbHVlW3ZhbHVlUHJvcC52YWx1ZV0gPT0gb3B0aW9uW3ZhbHVlUHJvcC52YWx1ZV1cblxuICAgICAgY2FzZSAndGFncyc6XG4gICAgICBjYXNlICdtdWx0aXBsZSc6XG4gICAgICAgIHJldHVybiAhaXNOdWxsaXNoKGl2LnZhbHVlKSAmJiBpdi52YWx1ZS5tYXAobyA9PiBvW3ZhbHVlUHJvcC52YWx1ZV0pLmluZGV4T2Yob3B0aW9uW3ZhbHVlUHJvcC52YWx1ZV0pICE9PSAtMVxuICAgIH1cbiAgfTtcblxuICBjb25zdCBpc0Rpc2FibGVkID0gKG9wdGlvbikgPT4ge1xuICAgIHJldHVybiBvcHRpb25bZGlzYWJsZWRQcm9wLnZhbHVlXSA9PT0gdHJ1ZVxuICB9O1xuXG4gIGNvbnN0IGlzTWF4ID0gKCkgPT4ge1xuICAgIGlmIChtYXggPT09IHVuZGVmaW5lZCB8fCBtYXgudmFsdWUgPT09IC0xIHx8ICghaGFzU2VsZWN0ZWQudmFsdWUgJiYgbWF4LnZhbHVlID4gMCkpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICBcbiAgICByZXR1cm4gaXYudmFsdWUubGVuZ3RoID49IG1heC52YWx1ZVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9wdGlvbkNsaWNrID0gKG9wdGlvbikgPT4ge1xuICAgIGlmIChpc0Rpc2FibGVkKG9wdGlvbikpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChvbkNyZWF0ZSAmJiBvbkNyZWF0ZS52YWx1ZSAmJiAhaXNTZWxlY3RlZChvcHRpb24pICYmIG9wdGlvbi5fX0NSRUFURV9fKSB7XG4gICAgICBvcHRpb24gPSB7IC4uLm9wdGlvbiB9O1xuICAgICAgZGVsZXRlIG9wdGlvbi5fX0NSRUFURV9fO1xuXG4gICAgICBvcHRpb24gPSBvbkNyZWF0ZS52YWx1ZShvcHRpb24sICR0aGlzKTtcbiAgICAgIFxuICAgICAgaWYgKG9wdGlvbiBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgcmVzb2x2aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgb3B0aW9uLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIHJlc29sdmluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIGhhbmRsZU9wdGlvblNlbGVjdChyZXN1bHQpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm5cbiAgICAgIH0gXG4gICAgfVxuXG4gICAgaGFuZGxlT3B0aW9uU2VsZWN0KG9wdGlvbik7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT3B0aW9uU2VsZWN0ID0gKG9wdGlvbikgPT4ge1xuICAgIGlmIChvcHRpb24uX19DUkVBVEVfXykge1xuICAgICAgb3B0aW9uID0geyAuLi5vcHRpb24gfTtcbiAgICAgIGRlbGV0ZSBvcHRpb24uX19DUkVBVEVfXztcbiAgICB9XG4gICAgXG4gICAgc3dpdGNoIChtb2RlLnZhbHVlKSB7XG4gICAgICBjYXNlICdzaW5nbGUnOlxuICAgICAgICBpZiAob3B0aW9uICYmIGlzU2VsZWN0ZWQob3B0aW9uKSkge1xuICAgICAgICAgIGlmIChjYW5EZXNlbGVjdC52YWx1ZSkge1xuICAgICAgICAgICAgZGVzZWxlY3Qob3B0aW9uKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY2xvc2VPbkRlc2VsZWN0LnZhbHVlKSB7XG4gICAgICAgICAgICBjbGVhclBvaW50ZXIoKTtcbiAgICAgICAgICAgIGNsb3NlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbikge1xuICAgICAgICAgIGhhbmRsZU9wdGlvbkFwcGVuZChvcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKGNsZWFyT25TZWxlY3QudmFsdWUpIHtcbiAgICAgICAgICBjbGVhclNlYXJjaCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNsb3NlT25TZWxlY3QudmFsdWUpIHtcbiAgICAgICAgICBjbGVhclBvaW50ZXIoKTtcbiAgICAgICAgICBjbG9zZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbikge1xuICAgICAgICAgIHNlbGVjdChvcHRpb24pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ211bHRpcGxlJzpcbiAgICAgICAgaWYgKG9wdGlvbiAmJiBpc1NlbGVjdGVkKG9wdGlvbikpIHtcbiAgICAgICAgICBkZXNlbGVjdChvcHRpb24pO1xuXG4gICAgICAgICAgaWYgKGNsb3NlT25EZXNlbGVjdC52YWx1ZSkge1xuICAgICAgICAgICAgY2xlYXJQb2ludGVyKCk7XG4gICAgICAgICAgICBjbG9zZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc01heCgpKSB7XG4gICAgICAgICAgY29udGV4dC5lbWl0KCdtYXgnLCAkdGhpcyk7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9uKSB7XG4gICAgICAgICAgaGFuZGxlT3B0aW9uQXBwZW5kKG9wdGlvbik7XG4gICAgICAgICAgc2VsZWN0KG9wdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2xlYXJPblNlbGVjdC52YWx1ZSkge1xuICAgICAgICAgIGNsZWFyU2VhcmNoKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGlkZVNlbGVjdGVkLnZhbHVlKSB7XG4gICAgICAgICAgY2xlYXJQb2ludGVyKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2xvc2VPblNlbGVjdC52YWx1ZSkge1xuICAgICAgICAgIGNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAndGFncyc6XG4gICAgICAgIGlmIChvcHRpb24gJiYgaXNTZWxlY3RlZChvcHRpb24pKSB7XG4gICAgICAgICAgZGVzZWxlY3Qob3B0aW9uKTtcblxuICAgICAgICAgIGlmIChjbG9zZU9uRGVzZWxlY3QudmFsdWUpIHtcbiAgICAgICAgICAgIGNsZWFyUG9pbnRlcigpO1xuICAgICAgICAgICAgY2xvc2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNNYXgoKSkge1xuICAgICAgICAgIGNvbnRleHQuZW1pdCgnbWF4JywgJHRoaXMpO1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbikge1xuICAgICAgICAgIGhhbmRsZU9wdGlvbkFwcGVuZChvcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNsZWFyT25TZWxlY3QudmFsdWUpIHtcbiAgICAgICAgICBjbGVhclNlYXJjaCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbikge1xuICAgICAgICAgIHNlbGVjdChvcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhpZGVTZWxlY3RlZC52YWx1ZSkge1xuICAgICAgICAgIGNsZWFyUG9pbnRlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNsb3NlT25TZWxlY3QudmFsdWUpIHtcbiAgICAgICAgICBjbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgaWYgKCFjbG9zZU9uU2VsZWN0LnZhbHVlKSB7XG4gICAgICBmb2N1cygpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVHcm91cENsaWNrID0gKGdyb3VwKSA9PiB7XG4gICAgaWYgKGlzRGlzYWJsZWQoZ3JvdXApIHx8IG1vZGUudmFsdWUgPT09ICdzaW5nbGUnIHx8ICFncm91cFNlbGVjdC52YWx1ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc3dpdGNoIChtb2RlLnZhbHVlKSB7XG4gICAgICBjYXNlICdtdWx0aXBsZSc6XG4gICAgICBjYXNlICd0YWdzJzpcbiAgICAgICAgaWYgKGFyZUFsbEVuYWJsZWRTZWxlY3RlZChncm91cFtncm91cE9wdGlvbnMudmFsdWVdKSkge1xuICAgICAgICAgIGRlc2VsZWN0KGdyb3VwW2dyb3VwT3B0aW9ucy52YWx1ZV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlbGVjdChncm91cFtncm91cE9wdGlvbnMudmFsdWVdXG4gICAgICAgICAgICAuZmlsdGVyKG8gPT4gaXYudmFsdWUubWFwKHYgPT4gdlt2YWx1ZVByb3AudmFsdWVdKS5pbmRleE9mKG9bdmFsdWVQcm9wLnZhbHVlXSkgPT09IC0xKVxuICAgICAgICAgICAgLmZpbHRlcihvID0+ICFvW2Rpc2FibGVkUHJvcC52YWx1ZV0pXG4gICAgICAgICAgICAuZmlsdGVyKChvLCBrKSA9PiBpdi52YWx1ZS5sZW5ndGggKyAxICsgayA8PSBtYXgudmFsdWUgfHwgbWF4LnZhbHVlID09PSAtMSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgaWYgKGNsb3NlT25TZWxlY3QudmFsdWUpIHtcbiAgICAgIGRlYWN0aXZhdGUoKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT3B0aW9uQXBwZW5kID0gKG9wdGlvbikgPT4ge1xuICAgIGlmIChnZXRPcHRpb24ob3B0aW9uW3ZhbHVlUHJvcC52YWx1ZV0pID09PSB1bmRlZmluZWQgJiYgY3JlYXRlT3B0aW9uLnZhbHVlKSB7XG4gICAgICBjb250ZXh0LmVtaXQoJ3RhZycsIG9wdGlvblt2YWx1ZVByb3AudmFsdWVdLCAkdGhpcyk7XG4gICAgICBjb250ZXh0LmVtaXQoJ29wdGlvbicsIG9wdGlvblt2YWx1ZVByb3AudmFsdWVdLCAkdGhpcyk7XG4gICAgICBjb250ZXh0LmVtaXQoJ2NyZWF0ZScsIG9wdGlvblt2YWx1ZVByb3AudmFsdWVdLCAkdGhpcyk7XG5cbiAgICAgIGlmIChhcHBlbmROZXdPcHRpb24udmFsdWUpIHtcbiAgICAgICAgYXBwZW5kT3B0aW9uKG9wdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGNsZWFyU2VhcmNoKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHNlbGVjdEFsbCA9ICgpID0+IHtcbiAgICBpZiAobW9kZS52YWx1ZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNlbGVjdChmby52YWx1ZS5maWx0ZXIobyA9PiAhby5kaXNhYmxlZCAmJiAhaXNTZWxlY3RlZChvKSkpO1xuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBhcmVBbGxFbmFibGVkU2VsZWN0ZWQgPSAob3B0aW9ucykgPT4ge1xuICAgIHJldHVybiBvcHRpb25zLmZpbmQobyA9PiAhaXNTZWxlY3RlZChvKSAmJiAhb1tkaXNhYmxlZFByb3AudmFsdWVdKSA9PT0gdW5kZWZpbmVkXG4gIH07XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IGFyZUFsbFNlbGVjdGVkID0gKG9wdGlvbnMpID0+IHtcbiAgICByZXR1cm4gb3B0aW9ucy5maW5kKG8gPT4gIWlzU2VsZWN0ZWQobykpID09PSB1bmRlZmluZWRcbiAgfTtcblxuICBjb25zdCBnZXRPcHRpb24gPSAodmFsKSA9PiB7XG4gICAgcmV0dXJuIGVvLnZhbHVlW2VvLnZhbHVlLm1hcChvID0+IFN0cmluZyhvW3ZhbHVlUHJvcC52YWx1ZV0pKS5pbmRleE9mKFN0cmluZyh2YWwpKV1cbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgZ2V0T3B0aW9uQnlUcmFja0J5ID0gKHZhbCwgbm9ybSA9IHRydWUpID0+IHtcbiAgICByZXR1cm4gZW8udmFsdWUubWFwKG8gPT4gcGFyc2VJbnQob1t0cmFja0J5LnZhbHVlXSkgPT0gb1t0cmFja0J5LnZhbHVlXSA/IHBhcnNlSW50KG9bdHJhY2tCeS52YWx1ZV0pIDogb1t0cmFja0J5LnZhbHVlXSkuaW5kZXhPZihcbiAgICAgIHBhcnNlSW50KHZhbCkgPT0gdmFsID8gcGFyc2VJbnQodmFsKSA6IHZhbFxuICAgIClcbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3Qgc2hvdWxkSGlkZU9wdGlvbiA9IChvcHRpb24pID0+IHtcbiAgICByZXR1cm4gWyd0YWdzJywgJ211bHRpcGxlJ10uaW5kZXhPZihtb2RlLnZhbHVlKSAhPT0gLTEgJiYgaGlkZVNlbGVjdGVkLnZhbHVlICYmIGlzU2VsZWN0ZWQob3B0aW9uKVxuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBhcHBlbmRPcHRpb24gPSAob3B0aW9uKSA9PiB7XG4gICAgYXAudmFsdWUucHVzaChvcHRpb24pO1xuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBmaWx0ZXJHcm91cHMgPSAoZ3JvdXBzKSA9PiB7XG4gICAgLy8gSWYgdGhlIHNlYXJjaCBoYXMgdmFsdWUgd2UgbmVlZCB0byBmaWx0ZXIgYW1vbmcgXG4gICAgLy8gdGhlIG9uZXMgdGhhdCBhcmUgdmlzaWJsZSB0byB0aGUgdXNlciB0byBhdm9pZFxuICAgIC8vIGRpc3BsYXlpbmcgZ3JvdXBzIHdoaWNoIHRlY2huaWNhbGx5IGhhdmUgb3B0aW9uc1xuICAgIC8vIGJhc2VkIG9uIHNlYXJjaCBidXQgdGhhdCBvcHRpb24gaXMgYWxyZWFkeSBzZWxlY3RlZC5cbiAgICByZXR1cm4gZ3JvdXBIaWRlRW1wdHkudmFsdWVcbiAgICAgID8gZ3JvdXBzLmZpbHRlcihnID0+IHNlYXJjaC52YWx1ZVxuICAgICAgICAgID8gZy5fX1ZJU0lCTEVfXy5sZW5ndGhcbiAgICAgICAgICA6IGdbZ3JvdXBPcHRpb25zLnZhbHVlXS5sZW5ndGhcbiAgICAgICAgKVxuICAgICAgOiBncm91cHMuZmlsdGVyKGcgPT4gc2VhcmNoLnZhbHVlID8gZy5fX1ZJU0lCTEVfXy5sZW5ndGggOiB0cnVlKVxuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBmaWx0ZXJPcHRpb25zID0gKG9wdGlvbnMsIGV4Y2x1ZGVIaWRlU2VsZWN0ZWQgPSB0cnVlKSA9PiB7XG4gICAgbGV0IGZvID0gb3B0aW9ucztcbiAgICBcbiAgICBpZiAoc2VhcmNoLnZhbHVlICYmIGZpbHRlclJlc3VsdHMudmFsdWUpIHtcbiAgICAgIGxldCBmaWx0ZXIgPSBzZWFyY2hGaWx0ZXIudmFsdWU7XG5cbiAgICAgIGlmICghZmlsdGVyKSB7XG4gICAgICAgIGZpbHRlciA9IChvcHRpb24sICR0aGlzKSA9PiB7XG4gICAgICAgICAgbGV0IHRhcmdldCA9IG5vcm1hbGl6ZShsb2NhbGl6ZShvcHRpb25bdHJhY2tCeS52YWx1ZV0pLCBzdHJpY3QudmFsdWUpO1xuXG4gICAgICAgICAgcmV0dXJuIHNlYXJjaFN0YXJ0LnZhbHVlXG4gICAgICAgICAgICA/IHRhcmdldC5zdGFydHNXaXRoKG5vcm1hbGl6ZShzZWFyY2gudmFsdWUsIHN0cmljdC52YWx1ZSkpXG4gICAgICAgICAgICA6IHRhcmdldC5pbmRleE9mKG5vcm1hbGl6ZShzZWFyY2gudmFsdWUsIHN0cmljdC52YWx1ZSkpICE9PSAtMVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBmbyA9IGZvLmZpbHRlcihmaWx0ZXIpO1xuICAgIH1cblxuICAgIGlmIChoaWRlU2VsZWN0ZWQudmFsdWUgJiYgZXhjbHVkZUhpZGVTZWxlY3RlZCkge1xuICAgICAgZm8gPSBmby5maWx0ZXIoKG9wdGlvbikgPT4gIXNob3VsZEhpZGVPcHRpb24ob3B0aW9uKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvXG4gIH07XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IG9wdGlvbnNUb0FycmF5ID0gKG9wdGlvbnMpID0+IHtcbiAgICBsZXQgdW8gPSBvcHRpb25zO1xuICAgIFxuICAgIC8vIFRyYW5zZm9ybWluZyBhbiBvYmplY3QgdG8gYW4gYXJyYXkgb2Ygb2JqZWN0c1xuICAgIGlmIChpc09iamVjdCh1bykpIHtcbiAgICAgIHVvID0gT2JqZWN0LmtleXModW8pLm1hcCgoa2V5KSA9PiB7XG4gICAgICAgIGxldCB2YWwgPSB1b1trZXldO1xuXG4gICAgICAgIHJldHVybiB7IFt2YWx1ZVByb3AudmFsdWVdOiBrZXksIFt0cmFja0J5LnZhbHVlXTogdmFsLCBbbGFiZWwudmFsdWVdOiB2YWx9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBUcmFuc2Zvcm1pbmcgYW4gcGxhaW4gYXJyYXlzIHRvIGFuIGFycmF5IG9mIG9iamVjdHNcbiAgICB1byA9IHVvLm1hcCgodmFsKSA9PiB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgPyB2YWwgOiB7IFt2YWx1ZVByb3AudmFsdWVdOiB2YWwsIFt0cmFja0J5LnZhbHVlXTogdmFsLCBbbGFiZWwudmFsdWVdOiB2YWx9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdW9cbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgaW5pdEludGVybmFsVmFsdWUgPSAoKSA9PiB7XG4gICAgaWYgKCFpc051bGxpc2goZXYudmFsdWUpKSB7XG4gICAgICBpdi52YWx1ZSA9IG1ha2VJbnRlcm5hbChldi52YWx1ZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHJlc29sdmVPcHRpb25zID0gKGNhbGxiYWNrKSA9PiB7XG4gICAgcmVzb2x2aW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBvcHRpb25zLnZhbHVlKHNlYXJjaC52YWx1ZSwgJHRoaXMpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHJvLnZhbHVlID0gcmVzcG9uc2UgfHwgW107XG5cbiAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgY2FsbGJhY2socmVzcG9uc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuXG4gICAgICAgIHJvLnZhbHVlID0gW107XG5cbiAgICAgICAgcmVzb2x2aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB9KS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgfSlcbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgcmVmcmVzaExhYmVscyA9ICgpID0+IHtcbiAgICBpZiAoIWhhc1NlbGVjdGVkLnZhbHVlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAobW9kZS52YWx1ZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgIGxldCBvcHRpb24gPSBnZXRPcHRpb24oaXYudmFsdWVbdmFsdWVQcm9wLnZhbHVlXSk7XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAob3B0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGV0IG5ld0xhYmVsID0gb3B0aW9uW2xhYmVsLnZhbHVlXTtcblxuICAgICAgICBpdi52YWx1ZVtsYWJlbC52YWx1ZV0gPSBuZXdMYWJlbDtcblxuICAgICAgICBpZiAob2JqZWN0LnZhbHVlKSB7XG4gICAgICAgICAgZXYudmFsdWVbbGFiZWwudmFsdWVdID0gbmV3TGFiZWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaXYudmFsdWUuZm9yRWFjaCgodmFsLCBpKSA9PiB7XG4gICAgICAgIGxldCBvcHRpb24gPSBnZXRPcHRpb24oaXYudmFsdWVbaV1bdmFsdWVQcm9wLnZhbHVlXSk7XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKG9wdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbGV0IG5ld0xhYmVsID0gb3B0aW9uW2xhYmVsLnZhbHVlXTtcblxuICAgICAgICAgIGl2LnZhbHVlW2ldW2xhYmVsLnZhbHVlXSA9IG5ld0xhYmVsO1xuXG4gICAgICAgICAgaWYgKG9iamVjdC52YWx1ZSkge1xuICAgICAgICAgICAgZXYudmFsdWVbaV1bbGFiZWwudmFsdWVdID0gbmV3TGFiZWw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgcmVmcmVzaE9wdGlvbnMgPSAoY2FsbGJhY2spID0+IHtcbiAgICByZXNvbHZlT3B0aW9ucyhjYWxsYmFjayk7XG4gIH07XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IG1ha2VJbnRlcm5hbCA9ICh2YWwpID0+IHtcbiAgICBpZiAoaXNOdWxsaXNoKHZhbCkpIHtcbiAgICAgIHJldHVybiBtb2RlLnZhbHVlID09PSAnc2luZ2xlJyA/IHt9IDogW11cbiAgICB9XG5cbiAgICBpZiAob2JqZWN0LnZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsXG4gICAgfVxuXG4gICAgLy8gSWYgZXh0ZXJuYWwgc2hvdWxkIGJlIHBsYWluIHRyYW5zZm9ybSB2YWx1ZSBvYmplY3QgdG8gcGxhaW4gdmFsdWVzXG4gICAgcmV0dXJuIG1vZGUudmFsdWUgPT09ICdzaW5nbGUnID8gZ2V0T3B0aW9uKHZhbCkgfHwgKGFsbG93QWJzZW50LnZhbHVlID8ge1xuICAgICAgW2xhYmVsLnZhbHVlXTogdmFsLFxuICAgICAgW3ZhbHVlUHJvcC52YWx1ZV06IHZhbCxcbiAgICAgIFt0cmFja0J5LnZhbHVlXTogdmFsLFxuICAgIH0gOiB7fSkgOiB2YWwuZmlsdGVyKHYgPT4gISFnZXRPcHRpb24odikgfHwgYWxsb3dBYnNlbnQudmFsdWUpLm1hcCh2ID0+IGdldE9wdGlvbih2KSB8fCB7XG4gICAgICBbbGFiZWwudmFsdWVdOiB2LFxuICAgICAgW3ZhbHVlUHJvcC52YWx1ZV06IHYsXG4gICAgICBbdHJhY2tCeS52YWx1ZV06IHYsXG4gICAgfSlcbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgaW5pdFNlYXJjaFdhdGNoZXIgPSAoKSA9PiB7XG4gICAgc2VhcmNoV2F0Y2hlci52YWx1ZSA9IHdhdGNoKHNlYXJjaCwgKHF1ZXJ5KSA9PiB7XG4gICAgICBpZiAocXVlcnkubGVuZ3RoIDwgbWluQ2hhcnMudmFsdWUgfHwgKCFxdWVyeSAmJiBtaW5DaGFycy52YWx1ZSAhPT0gMCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHJlc29sdmluZy52YWx1ZSA9IHRydWU7XG5cbiAgICAgIGlmIChjbGVhck9uU2VhcmNoLnZhbHVlKSB7XG4gICAgICAgIHJvLnZhbHVlID0gW107XG4gICAgICB9XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHF1ZXJ5ICE9IHNlYXJjaC52YWx1ZSkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgb3B0aW9ucy52YWx1ZShzZWFyY2gudmFsdWUsICR0aGlzKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGlmIChxdWVyeSA9PSBzZWFyY2gudmFsdWUgfHwgIXNlYXJjaC52YWx1ZSkge1xuICAgICAgICAgICAgcm8udmFsdWUgPSByZXNwb25zZTtcbiAgICAgICAgICAgIHBvaW50ZXIudmFsdWUgPSBmby52YWx1ZS5maWx0ZXIobyA9PiBvW2Rpc2FibGVkUHJvcC52YWx1ZV0gIT09IHRydWUpWzBdIHx8IG51bGw7XG4gICAgICAgICAgICByZXNvbHZpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLmNhdGNoKCAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyAoZSkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgZGVsYXkudmFsdWUpO1xuXG4gICAgfSwgeyBmbHVzaDogJ3N5bmMnIH0pO1xuICB9O1xuXG4gIC8vID09PT09PT09PT09PT09PT0gSE9PS1MgPT09PT09PT09PT09PT09XG5cbiAgaWYgKG1vZGUudmFsdWUgIT09ICdzaW5nbGUnICYmICFpc051bGxpc2goZXYudmFsdWUpICYmICFBcnJheS5pc0FycmF5KGV2LnZhbHVlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgdi1tb2RlbCBtdXN0IGJlIGFuIGFycmF5IHdoZW4gdXNpbmcgXCIke21vZGUudmFsdWV9XCIgbW9kZWApXG4gIH1cblxuICBpZiAob3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucy52YWx1ZSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKHJlc29sdmVPbkxvYWQudmFsdWUpIHtcbiAgICAgIHJlc29sdmVPcHRpb25zKGluaXRJbnRlcm5hbFZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKG9iamVjdC52YWx1ZSA9PSB0cnVlKSB7XG4gICAgICBpbml0SW50ZXJuYWxWYWx1ZSgpO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICByby52YWx1ZSA9IG9wdGlvbnMudmFsdWU7XG5cbiAgICBpbml0SW50ZXJuYWxWYWx1ZSgpO1xuICB9XG4gIFxuICAvLyA9PT09PT09PT09PT09PSBXQVRDSEVSUyA9PT09PT09PT09PT09PVxuXG4gIGlmIChkZWxheS52YWx1ZSA+IC0xKSB7XG4gICAgaW5pdFNlYXJjaFdhdGNoZXIoKTtcbiAgfVxuXG4gIHdhdGNoKGRlbGF5LCAodmFsdWUsIG9sZCkgPT4ge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHNlYXJjaFdhdGNoZXIudmFsdWUpIHtcbiAgICAgIHNlYXJjaFdhdGNoZXIudmFsdWUoKTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPj0gMCkge1xuICAgICAgaW5pdFNlYXJjaFdhdGNoZXIoKTtcbiAgICB9XG4gIH0pO1xuXG4gIHdhdGNoKGV2LCAobmV3VmFsdWUpID0+IHtcbiAgICBpZiAoaXNOdWxsaXNoKG5ld1ZhbHVlKSkge1xuICAgICAgdXBkYXRlKG1ha2VJbnRlcm5hbChuZXdWYWx1ZSksIGZhbHNlKTtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHN3aXRjaCAobW9kZS52YWx1ZSkge1xuICAgICAgY2FzZSAnc2luZ2xlJzpcbiAgICAgICAgaWYgKG9iamVjdC52YWx1ZSA/IG5ld1ZhbHVlW3ZhbHVlUHJvcC52YWx1ZV0gIT0gaXYudmFsdWVbdmFsdWVQcm9wLnZhbHVlXSA6IG5ld1ZhbHVlICE9IGl2LnZhbHVlW3ZhbHVlUHJvcC52YWx1ZV0pIHtcbiAgICAgICAgICB1cGRhdGUobWFrZUludGVybmFsKG5ld1ZhbHVlKSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ211bHRpcGxlJzpcbiAgICAgIGNhc2UgJ3RhZ3MnOlxuICAgICAgICBpZiAoIWFycmF5c0VxdWFsKG9iamVjdC52YWx1ZSA/IG5ld1ZhbHVlLm1hcChvID0+IG9bdmFsdWVQcm9wLnZhbHVlXSkgOiBuZXdWYWx1ZSwgaXYudmFsdWUubWFwKG8gPT4gb1t2YWx1ZVByb3AudmFsdWVdKSkpIHtcbiAgICAgICAgICB1cGRhdGUobWFrZUludGVybmFsKG5ld1ZhbHVlKSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9LCB7IGRlZXA6IHRydWUgfSk7XG5cbiAgd2F0Y2gob3B0aW9ucywgKG4sIG8pID0+IHtcbiAgICBpZiAodHlwZW9mIHByb3BzLm9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmIChyZXNvbHZlT25Mb2FkLnZhbHVlICYmICghbyB8fCAobiAmJiBuLnRvU3RyaW5nKCkgIT09IG8udG9TdHJpbmcoKSkpKSB7XG4gICAgICAgIHJlc29sdmVPcHRpb25zKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvLnZhbHVlID0gcHJvcHMub3B0aW9ucztcblxuICAgICAgaWYgKCFPYmplY3Qua2V5cyhpdi52YWx1ZSkubGVuZ3RoKSB7XG4gICAgICAgIGluaXRJbnRlcm5hbFZhbHVlKCk7XG4gICAgICB9XG5cbiAgICAgIHJlZnJlc2hMYWJlbHMoKTtcbiAgICB9XG4gIH0pO1xuXG4gIHdhdGNoKGxhYmVsLCByZWZyZXNoTGFiZWxzKTtcblxuICByZXR1cm4ge1xuICAgIHBmbyxcbiAgICBmbyxcbiAgICBmaWx0ZXJlZE9wdGlvbnM6IGZvLFxuICAgIGhhc1NlbGVjdGVkLFxuICAgIG11bHRpcGxlTGFiZWxUZXh0LFxuICAgIGVvLFxuICAgIGV4dGVuZGVkT3B0aW9uczogZW8sXG4gICAgZWcsXG4gICAgZXh0ZW5kZWRHcm91cHM6IGVnLFxuICAgIGZnLFxuICAgIGZpbHRlcmVkR3JvdXBzOiBmZyxcbiAgICBub09wdGlvbnMsXG4gICAgbm9SZXN1bHRzLFxuICAgIHJlc29sdmluZyxcbiAgICBidXN5LFxuICAgIG9mZnNldCxcbiAgICBzZWxlY3QsXG4gICAgZGVzZWxlY3QsXG4gICAgcmVtb3ZlLFxuICAgIHNlbGVjdEFsbCxcbiAgICBjbGVhcixcbiAgICBpc1NlbGVjdGVkLFxuICAgIGlzRGlzYWJsZWQsXG4gICAgaXNNYXgsXG4gICAgZ2V0T3B0aW9uLFxuICAgIGhhbmRsZU9wdGlvbkNsaWNrLFxuICAgIGhhbmRsZUdyb3VwQ2xpY2ssXG4gICAgaGFuZGxlVGFnUmVtb3ZlLFxuICAgIHJlZnJlc2hPcHRpb25zLFxuICAgIHJlc29sdmVPcHRpb25zLFxuICAgIHJlZnJlc2hMYWJlbHMsXG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlUG9pbnRlciAocHJvcHMsIGNvbnRleHQsIGRlcClcbntcbiAgY29uc3Qge1xuICAgIHZhbHVlUHJvcCwgc2hvd09wdGlvbnMsIHNlYXJjaGFibGUsIGdyb3VwTGFiZWwsXG4gICAgZ3JvdXBzOiBncm91cHBlZCwgbW9kZSwgZ3JvdXBTZWxlY3QsIGRpc2FibGVkUHJvcCxcbiAgICBncm91cE9wdGlvbnMsXG4gIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIC8vID09PT09PT09PT09PSBERVBFTkRFTkNJRVMgPT09PT09PT09PT09XG5cbiAgY29uc3QgZm8gPSBkZXAuZm87XG4gIGNvbnN0IGZnID0gZGVwLmZnO1xuICBjb25zdCBoYW5kbGVPcHRpb25DbGljayA9IGRlcC5oYW5kbGVPcHRpb25DbGljaztcbiAgY29uc3QgaGFuZGxlR3JvdXBDbGljayA9IGRlcC5oYW5kbGVHcm91cENsaWNrO1xuICBjb25zdCBzZWFyY2ggPSBkZXAuc2VhcmNoO1xuICBjb25zdCBwb2ludGVyID0gZGVwLnBvaW50ZXI7XG4gIGNvbnN0IHNldFBvaW50ZXIgPSBkZXAuc2V0UG9pbnRlcjtcbiAgY29uc3QgY2xlYXJQb2ludGVyID0gZGVwLmNsZWFyUG9pbnRlcjtcbiAgY29uc3QgbXVsdGlzZWxlY3QgPSBkZXAubXVsdGlzZWxlY3Q7XG4gIGNvbnN0IGlzT3BlbiA9IGRlcC5pc09wZW47XG5cbiAgLy8gPT09PT09PT09PT09PT0gQ09NUFVURUQgPT09PT09PT09PT09PT1cblxuICAvLyBubyBleHBvcnRcbiAgY29uc3Qgb3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gZm8udmFsdWUuZmlsdGVyKG8gPT4gIW9bZGlzYWJsZWRQcm9wLnZhbHVlXSlcbiAgfSk7XG5cbiAgY29uc3QgZ3JvdXBzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBmZy52YWx1ZS5maWx0ZXIoZyA9PiAhZ1tkaXNhYmxlZFByb3AudmFsdWVdKVxuICB9KTtcblxuICBjb25zdCBjYW5Qb2ludEdyb3VwcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gbW9kZS52YWx1ZSAhPT0gJ3NpbmdsZScgJiYgZ3JvdXBTZWxlY3QudmFsdWVcbiAgfSk7XG5cbiAgY29uc3QgaXNQb2ludGVyR3JvdXAgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHBvaW50ZXIudmFsdWUgJiYgcG9pbnRlci52YWx1ZS5ncm91cFxuICB9KTtcblxuICBjb25zdCBjdXJyZW50R3JvdXAgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIGdldFBhcmVudEdyb3VwKHBvaW50ZXIudmFsdWUpXG4gIH0pO1xuXG4gIGNvbnN0IHByZXZHcm91cCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBncm91cCA9IGlzUG9pbnRlckdyb3VwLnZhbHVlID8gcG9pbnRlci52YWx1ZSA6IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIGdldFBhcmVudEdyb3VwKHBvaW50ZXIudmFsdWUpO1xuICAgIGNvbnN0IGdyb3VwSW5kZXggPSBncm91cHMudmFsdWUubWFwKGcgPT4gZ1tncm91cExhYmVsLnZhbHVlXSkuaW5kZXhPZihncm91cFtncm91cExhYmVsLnZhbHVlXSk7XG4gICAgbGV0IHByZXZHcm91cCA9IGdyb3Vwcy52YWx1ZVtncm91cEluZGV4IC0gMV07XG5cbiAgICBpZiAocHJldkdyb3VwID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHByZXZHcm91cCA9IGxhc3RHcm91cC52YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJldkdyb3VwXG4gIH0pO1xuICBcbiAgY29uc3QgbmV4dEdyb3VwID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGxldCBuZXh0SW5kZXggPSBncm91cHMudmFsdWUubWFwKGcgPT4gZy5sYWJlbCkuaW5kZXhPZihpc1BvaW50ZXJHcm91cC52YWx1ZVxuICAgICAgPyBwb2ludGVyLnZhbHVlW2dyb3VwTGFiZWwudmFsdWVdXG4gICAgICA6IGdldFBhcmVudEdyb3VwKHBvaW50ZXIudmFsdWUpW2dyb3VwTGFiZWwudmFsdWVdKSArIDE7XG5cbiAgICBpZiAoZ3JvdXBzLnZhbHVlLmxlbmd0aCA8PSBuZXh0SW5kZXgpIHtcbiAgICAgIG5leHRJbmRleCA9IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdyb3Vwcy52YWx1ZVtuZXh0SW5kZXhdXG4gIH0pO1xuXG4gIGNvbnN0IGxhc3RHcm91cCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gWy4uLmdyb3Vwcy52YWx1ZV0uc2xpY2UoLTEpWzBdXG4gIH0pO1xuICBcbiAgY29uc3QgY3VycmVudEdyb3VwRmlyc3RFbmFibGVkT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBwb2ludGVyLnZhbHVlLl9fVklTSUJMRV9fLmZpbHRlcihvID0+ICFvW2Rpc2FibGVkUHJvcC52YWx1ZV0pWzBdXG4gIH0pO1xuXG4gIGNvbnN0IGN1cnJlbnRHcm91cFByZXZFbmFibGVkT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBjdXJyZW50R3JvdXAudmFsdWUuX19WSVNJQkxFX18uZmlsdGVyKG8gPT4gIW9bZGlzYWJsZWRQcm9wLnZhbHVlXSk7XG4gICAgcmV0dXJuIG9wdGlvbnNbb3B0aW9ucy5tYXAobyA9PiBvW3ZhbHVlUHJvcC52YWx1ZV0pLmluZGV4T2YocG9pbnRlci52YWx1ZVt2YWx1ZVByb3AudmFsdWVdKSAtIDFdXG4gIH0pO1xuICBcbiAgY29uc3QgY3VycmVudEdyb3VwTmV4dEVuYWJsZWRPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGdldFBhcmVudEdyb3VwKHBvaW50ZXIudmFsdWUpLl9fVklTSUJMRV9fLmZpbHRlcihvID0+ICFvW2Rpc2FibGVkUHJvcC52YWx1ZV0pO1xuICAgIHJldHVybiBvcHRpb25zW29wdGlvbnMubWFwKG8gPT4gb1t2YWx1ZVByb3AudmFsdWVdKS5pbmRleE9mKHBvaW50ZXIudmFsdWVbdmFsdWVQcm9wLnZhbHVlXSkgKyAxXVxuICB9KTtcblxuICBjb25zdCBwcmV2R3JvdXBMYXN0RW5hYmxlZE9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gWy4uLnByZXZHcm91cC52YWx1ZS5fX1ZJU0lCTEVfXy5maWx0ZXIobyA9PiAhb1tkaXNhYmxlZFByb3AudmFsdWVdKV0uc2xpY2UoLTEpWzBdXG4gIH0pO1xuXG4gIGNvbnN0IGxhc3RHcm91cExhc3RFbmFibGVkT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBbLi4ubGFzdEdyb3VwLnZhbHVlLl9fVklTSUJMRV9fLmZpbHRlcihvID0+ICFvW2Rpc2FibGVkUHJvcC52YWx1ZV0pXS5zbGljZSgtMSlbMF1cbiAgfSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09IE1FVEhPRFMgPT09PT09PT09PT09PT1cblxuICBjb25zdCBpc1BvaW50ZWQgPSAob3B0aW9uKSA9PiB7XG4gICAgcmV0dXJuICghIXBvaW50ZXIudmFsdWUgJiYgKFxuICAgICAgKCFvcHRpb24uZ3JvdXAgJiYgcG9pbnRlci52YWx1ZVt2YWx1ZVByb3AudmFsdWVdID09PSBvcHRpb25bdmFsdWVQcm9wLnZhbHVlXSkgfHxcbiAgICAgIChvcHRpb24uZ3JvdXAgIT09IHVuZGVmaW5lZCAmJiBwb2ludGVyLnZhbHVlW2dyb3VwTGFiZWwudmFsdWVdID09PSBvcHRpb25bZ3JvdXBMYWJlbC52YWx1ZV0pXG4gICAgKSkgPyB0cnVlIDogdW5kZWZpbmVkXG4gIH07XG5cbiAgY29uc3Qgc2V0UG9pbnRlckZpcnN0ID0gKCkgPT4ge1xuICAgIHNldFBvaW50ZXIob3B0aW9ucy52YWx1ZVswXSB8fCBudWxsKTtcbiAgfTtcblxuICBjb25zdCBzZWxlY3RQb2ludGVyID0gKCkgPT4ge1xuICAgIGlmICghcG9pbnRlci52YWx1ZSB8fCBwb2ludGVyLnZhbHVlW2Rpc2FibGVkUHJvcC52YWx1ZV0gPT09IHRydWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChpc1BvaW50ZXJHcm91cC52YWx1ZSkge1xuICAgICAgaGFuZGxlR3JvdXBDbGljayhwb2ludGVyLnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGFuZGxlT3B0aW9uQ2xpY2socG9pbnRlci52YWx1ZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGZvcndhcmRQb2ludGVyID0gKCkgPT4ge1xuICAgIGlmIChwb2ludGVyLnZhbHVlID09PSBudWxsKSB7XG4gICAgICBzZXRQb2ludGVyKChncm91cHBlZC52YWx1ZSAmJiBjYW5Qb2ludEdyb3Vwcy52YWx1ZSA/ICghZ3JvdXBzLnZhbHVlWzBdLl9fQ1JFQVRFX18gPyBncm91cHMudmFsdWVbMF0gOiBvcHRpb25zLnZhbHVlWzBdKSA6IG9wdGlvbnMudmFsdWVbMF0pIHx8IG51bGwpO1xuICAgIH1cbiAgICBlbHNlIGlmIChncm91cHBlZC52YWx1ZSAmJiBjYW5Qb2ludEdyb3Vwcy52YWx1ZSkge1xuICAgICAgbGV0IG5leHRQb2ludGVyID0gaXNQb2ludGVyR3JvdXAudmFsdWUgPyBjdXJyZW50R3JvdXBGaXJzdEVuYWJsZWRPcHRpb24udmFsdWUgOiBjdXJyZW50R3JvdXBOZXh0RW5hYmxlZE9wdGlvbi52YWx1ZTtcblxuICAgICAgaWYgKG5leHRQb2ludGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbmV4dFBvaW50ZXIgPSBuZXh0R3JvdXAudmFsdWU7XG5cbiAgICAgICAgaWYgKG5leHRQb2ludGVyLl9fQ1JFQVRFX18pIHtcbiAgICAgICAgICBuZXh0UG9pbnRlciA9IG5leHRQb2ludGVyW2dyb3VwT3B0aW9ucy52YWx1ZV1bMF07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc2V0UG9pbnRlcihuZXh0UG9pbnRlciB8fCAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG5leHQgPSBvcHRpb25zLnZhbHVlLm1hcChvID0+IG9bdmFsdWVQcm9wLnZhbHVlXSkuaW5kZXhPZihwb2ludGVyLnZhbHVlW3ZhbHVlUHJvcC52YWx1ZV0pICsgMTtcblxuICAgICAgaWYgKG9wdGlvbnMudmFsdWUubGVuZ3RoIDw9IG5leHQpIHtcbiAgICAgICAgbmV4dCA9IDA7XG4gICAgICB9XG5cbiAgICAgIHNldFBvaW50ZXIob3B0aW9ucy52YWx1ZVtuZXh0XSB8fCBudWxsKTtcbiAgICB9XG5cbiAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICBhZGp1c3RXcmFwcGVyU2Nyb2xsVG9Qb2ludGVyKCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgYmFja3dhcmRQb2ludGVyID0gKCkgPT4ge1xuICAgIGlmIChwb2ludGVyLnZhbHVlID09PSBudWxsKSB7XG4gICAgICBsZXQgcHJldlBvaW50ZXIgPSBvcHRpb25zLnZhbHVlW29wdGlvbnMudmFsdWUubGVuZ3RoIC0gMV07XG5cbiAgICAgIGlmIChncm91cHBlZC52YWx1ZSAmJiBjYW5Qb2ludEdyb3Vwcy52YWx1ZSkge1xuICAgICAgICBwcmV2UG9pbnRlciA9IGxhc3RHcm91cExhc3RFbmFibGVkT3B0aW9uLnZhbHVlO1xuXG4gICAgICAgIGlmIChwcmV2UG9pbnRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcHJldlBvaW50ZXIgPSBsYXN0R3JvdXAudmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc2V0UG9pbnRlcihwcmV2UG9pbnRlciAgfHwgbnVsbCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGdyb3VwcGVkLnZhbHVlICYmIGNhblBvaW50R3JvdXBzLnZhbHVlKSB7XG4gICAgICBsZXQgcHJldlBvaW50ZXIgPSBpc1BvaW50ZXJHcm91cC52YWx1ZSA/IHByZXZHcm91cExhc3RFbmFibGVkT3B0aW9uLnZhbHVlIDogY3VycmVudEdyb3VwUHJldkVuYWJsZWRPcHRpb24udmFsdWU7XG5cbiAgICAgIGlmIChwcmV2UG9pbnRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHByZXZQb2ludGVyID0gaXNQb2ludGVyR3JvdXAudmFsdWUgPyBwcmV2R3JvdXAudmFsdWUgOiBjdXJyZW50R3JvdXAudmFsdWU7XG5cbiAgICAgICAgaWYgKHByZXZQb2ludGVyLl9fQ1JFQVRFX18pIHtcbiAgICAgICAgICBwcmV2UG9pbnRlciA9IHByZXZHcm91cExhc3RFbmFibGVkT3B0aW9uLnZhbHVlO1xuXG4gICAgICAgICAgaWYgKHByZXZQb2ludGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHByZXZQb2ludGVyID0gcHJldkdyb3VwLnZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzZXRQb2ludGVyKHByZXZQb2ludGVyIHx8IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcHJldkluZGV4ID0gb3B0aW9ucy52YWx1ZS5tYXAobyA9PiBvW3ZhbHVlUHJvcC52YWx1ZV0pLmluZGV4T2YocG9pbnRlci52YWx1ZVt2YWx1ZVByb3AudmFsdWVdKSAtIDE7XG5cbiAgICAgIGlmIChwcmV2SW5kZXggPCAwKSB7XG4gICAgICAgIHByZXZJbmRleCA9IG9wdGlvbnMudmFsdWUubGVuZ3RoIC0gMTtcbiAgICAgIH1cblxuICAgICAgc2V0UG9pbnRlcihvcHRpb25zLnZhbHVlW3ByZXZJbmRleF0gfHwgbnVsbCk7XG4gICAgfVxuXG4gICAgbmV4dFRpY2soKCkgPT4ge1xuICAgICAgYWRqdXN0V3JhcHBlclNjcm9sbFRvUG9pbnRlcigpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGdldFBhcmVudEdyb3VwID0gKG9wdGlvbikgPT4ge1xuICAgIHJldHVybiBncm91cHMudmFsdWUuZmluZCgoZ3JvdXApID0+IHtcbiAgICAgIHJldHVybiBncm91cC5fX1ZJU0lCTEVfXy5tYXAobyA9PiBvW3ZhbHVlUHJvcC52YWx1ZV0pLmluZGV4T2Yob3B0aW9uW3ZhbHVlUHJvcC52YWx1ZV0pICE9PSAtMVxuICAgIH0pXG4gIH07XG5cbiAgLy8gbm8gZXhwb3J0XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGNvbnN0IGFkanVzdFdyYXBwZXJTY3JvbGxUb1BvaW50ZXIgPSAoKSA9PiB7XG4gICAgbGV0IHBvaW50ZWRPcHRpb24gPSBtdWx0aXNlbGVjdC52YWx1ZS5xdWVyeVNlbGVjdG9yKGBbZGF0YS1wb2ludGVkXWApO1xuXG4gICAgaWYgKCFwb2ludGVkT3B0aW9uKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBsZXQgd3JhcHBlciA9IHBvaW50ZWRPcHRpb24ucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xuXG4gICAgaWYgKGdyb3VwcGVkLnZhbHVlKSB7XG4gICAgICB3cmFwcGVyID0gaXNQb2ludGVyR3JvdXAudmFsdWVcbiAgICAgICAgPyBwb2ludGVkT3B0aW9uLnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50XG4gICAgICAgIDogcG9pbnRlZE9wdGlvbi5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgIH1cblxuICAgIGlmIChwb2ludGVkT3B0aW9uLm9mZnNldFRvcCArIHBvaW50ZWRPcHRpb24ub2Zmc2V0SGVpZ2h0ID4gd3JhcHBlci5jbGllbnRIZWlnaHQgKyB3cmFwcGVyLnNjcm9sbFRvcCkge1xuICAgICAgd3JhcHBlci5zY3JvbGxUb3AgPSBwb2ludGVkT3B0aW9uLm9mZnNldFRvcCArIHBvaW50ZWRPcHRpb24ub2Zmc2V0SGVpZ2h0IC0gd3JhcHBlci5jbGllbnRIZWlnaHQ7XG4gICAgfVxuICAgIFxuICAgIGlmIChwb2ludGVkT3B0aW9uLm9mZnNldFRvcCA8IHdyYXBwZXIuc2Nyb2xsVG9wKSB7XG4gICAgICB3cmFwcGVyLnNjcm9sbFRvcCA9IHBvaW50ZWRPcHRpb24ub2Zmc2V0VG9wO1xuICAgIH1cbiAgfTtcblxuICAvLyA9PT09PT09PT09PT09PSBXQVRDSEVSUyA9PT09PT09PT09PT09PVxuXG4gIHdhdGNoKHNlYXJjaCwgKHZhbCkgPT4ge1xuICAgIGlmIChzZWFyY2hhYmxlLnZhbHVlKSB7XG4gICAgICBpZiAodmFsLmxlbmd0aCAmJiBzaG93T3B0aW9ucy52YWx1ZSkge1xuICAgICAgICBzZXRQb2ludGVyRmlyc3QoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNsZWFyUG9pbnRlcigpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgd2F0Y2goaXNPcGVuLCAodmFsKSA9PiB7XG4gICAgaWYgKHZhbCkge1xuICAgICAgbGV0IGZpcnN0U2VsZWN0ZWQgPSBtdWx0aXNlbGVjdC52YWx1ZS5xdWVyeVNlbGVjdG9yQWxsKGBbZGF0YS1zZWxlY3RlZF1gKVswXTtcblxuICAgICAgaWYgKCFmaXJzdFNlbGVjdGVkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBsZXQgd3JhcHBlciA9IGZpcnN0U2VsZWN0ZWQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgXG4gICAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGlmICh3cmFwcGVyLnNjcm9sbFRvcCA+IDApIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIHdyYXBwZXIuc2Nyb2xsVG9wID0gZmlyc3RTZWxlY3RlZC5vZmZzZXRUb3A7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgcG9pbnRlcixcbiAgICBjYW5Qb2ludEdyb3VwcyxcbiAgICBpc1BvaW50ZWQsXG4gICAgc2V0UG9pbnRlckZpcnN0LFxuICAgIHNlbGVjdFBvaW50ZXIsXG4gICAgZm9yd2FyZFBvaW50ZXIsXG4gICAgYmFja3dhcmRQb2ludGVyLFxuICB9XG59XG5cbmZ1bmN0aW9uIHVzZURyb3Bkb3duIChwcm9wcywgY29udGV4dCwgZGVwKVxue1xuICBjb25zdCB7IGRpc2FibGVkIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIGNvbnN0ICR0aGlzID0gZ2V0Q3VycmVudEluc3RhbmNlKCkucHJveHk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PSBEQVRBID09PT09PT09PT09PT09PT1cblxuICBjb25zdCBpc09wZW4gPSByZWYoZmFsc2UpO1xuXG4gIC8vID09PT09PT09PT09PT09PSBNRVRIT0RTID09PT09PT09PT09PT09XG5cbiAgY29uc3Qgb3BlbiA9ICgpID0+IHtcbiAgICBpZiAoaXNPcGVuLnZhbHVlIHx8IGRpc2FibGVkLnZhbHVlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpc09wZW4udmFsdWUgPSB0cnVlO1xuICAgIGNvbnRleHQuZW1pdCgnb3BlbicsICR0aGlzKTtcbiAgfTtcblxuICBjb25zdCBjbG9zZSA9ICgpID0+IHtcbiAgICBpZiAoIWlzT3Blbi52YWx1ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaXNPcGVuLnZhbHVlID0gZmFsc2U7XG4gICAgY29udGV4dC5lbWl0KCdjbG9zZScsICR0aGlzKTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGlzT3BlbixcbiAgICBvcGVuLFxuICAgIGNsb3NlLFxuICB9XG59XG5cbmZ1bmN0aW9uIHVzZU11bHRpc2VsZWN0IChwcm9wcywgY29udGV4dCwgZGVwKVxue1xuICBjb25zdCB7IHNlYXJjaGFibGUsIGRpc2FibGVkLCBjbGVhck9uQmx1ciB9ID0gdG9SZWZzKHByb3BzKTtcblxuICAvLyA9PT09PT09PT09PT0gREVQRU5ERU5DSUVTID09PT09PT09PT09PVxuXG4gIGNvbnN0IGlucHV0ID0gZGVwLmlucHV0O1xuICBjb25zdCBvcGVuID0gZGVwLm9wZW47XG4gIGNvbnN0IGNsb3NlID0gZGVwLmNsb3NlO1xuICBjb25zdCBjbGVhclNlYXJjaCA9IGRlcC5jbGVhclNlYXJjaDtcbiAgY29uc3QgaXNPcGVuID0gZGVwLmlzT3BlbjtcblxuICAvLyA9PT09PT09PT09PT09PT09IERBVEEgPT09PT09PT09PT09PT09PVxuXG4gIGNvbnN0IG11bHRpc2VsZWN0ID0gcmVmKG51bGwpO1xuICBcbiAgY29uc3Qgd3JhcHBlciA9IHJlZihudWxsKTtcblxuICBjb25zdCB0YWdzID0gcmVmKG51bGwpO1xuXG4gIGNvbnN0IGlzQWN0aXZlID0gcmVmKGZhbHNlKTtcblxuICBjb25zdCBtb3VzZUNsaWNrZWQgPSByZWYoZmFsc2UpO1xuXG4gIC8vID09PT09PT09PT09PT09IENPTVBVVEVEID09PT09PT09PT09PT09XG5cbiAgY29uc3QgdGFiaW5kZXggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHNlYXJjaGFibGUudmFsdWUgfHwgZGlzYWJsZWQudmFsdWUgPyAtMSA6IDBcbiAgfSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09IE1FVEhPRFMgPT09PT09PT09PT09PT1cblxuICBjb25zdCBibHVyID0gKCkgPT4ge1xuICAgIGlmIChzZWFyY2hhYmxlLnZhbHVlKSB7XG4gICAgICBpbnB1dC52YWx1ZS5ibHVyKCk7XG4gICAgfVxuXG4gICAgd3JhcHBlci52YWx1ZS5ibHVyKCk7XG4gIH07XG5cbiAgY29uc3QgZm9jdXMgPSAoKSA9PiB7XG4gICAgaWYgKHNlYXJjaGFibGUudmFsdWUgJiYgIWRpc2FibGVkLnZhbHVlKSB7XG4gICAgICBpbnB1dC52YWx1ZS5mb2N1cygpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBhY3RpdmF0ZSA9IChzaG91bGRPcGVuID0gdHJ1ZSkgPT4ge1xuICAgIGlmIChkaXNhYmxlZC52YWx1ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaXNBY3RpdmUudmFsdWUgPSB0cnVlO1xuXG4gICAgaWYgKHNob3VsZE9wZW4pIHtcbiAgICAgIG9wZW4oKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZGVhY3RpdmF0ZSA9ICgpID0+IHtcbiAgICBpc0FjdGl2ZS52YWx1ZSA9IGZhbHNlO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIWlzQWN0aXZlLnZhbHVlKSB7XG4gICAgICAgIGNsb3NlKCk7XG5cbiAgICAgICAgaWYgKGNsZWFyT25CbHVyLnZhbHVlKSB7XG4gICAgICAgICAgY2xlYXJTZWFyY2goKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIDEpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzSW4gPSAoZSkgPT4ge1xuICAgIGlmICgoZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtdGFnc10nKSAmJiBlLnRhcmdldC5ub2RlTmFtZSAhPT0gJ0lOUFVUJykgfHwgZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtY2xlYXJdJykpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGFjdGl2YXRlKG1vdXNlQ2xpY2tlZC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgZGVhY3RpdmF0ZSgpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNhcmV0Q2xpY2sgPSAoKSA9PiB7XG4gICAgZGVhY3RpdmF0ZSgpO1xuICAgIGJsdXIoKTtcbiAgfTtcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBjb25zdCBoYW5kbGVNb3VzZWRvd24gPSAoZSkgPT4ge1xuICAgIG1vdXNlQ2xpY2tlZC52YWx1ZSA9IHRydWU7XG5cbiAgICBpZiAoaXNPcGVuLnZhbHVlICYmIChlLnRhcmdldC5pc0VxdWFsTm9kZSh3cmFwcGVyLnZhbHVlKSB8fCBlLnRhcmdldC5pc0VxdWFsTm9kZSh0YWdzLnZhbHVlKSkpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBkZWFjdGl2YXRlKCk7XG4gICAgICB9LCAwKTtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuaXNFcXVhbE5vZGUod3JhcHBlci52YWx1ZSkgJiYgIWlzT3Blbi52YWx1ZSkge1xuICAgICAgYWN0aXZhdGUoKTsgICAgXG4gICAgfVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBtb3VzZUNsaWNrZWQudmFsdWUgPSBmYWxzZTtcbiAgICB9LCAwKTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIG11bHRpc2VsZWN0LFxuICAgIHdyYXBwZXIsXG4gICAgdGFncyxcbiAgICB0YWJpbmRleCxcbiAgICBpc0FjdGl2ZSxcbiAgICBtb3VzZUNsaWNrZWQsXG4gICAgYmx1cixcbiAgICBmb2N1cyxcbiAgICBhY3RpdmF0ZSxcbiAgICBkZWFjdGl2YXRlLFxuICAgIGhhbmRsZUZvY3VzSW4sXG4gICAgaGFuZGxlRm9jdXNPdXQsXG4gICAgaGFuZGxlQ2FyZXRDbGljayxcbiAgICBoYW5kbGVNb3VzZWRvd24sXG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlS2V5Ym9hcmQgKHByb3BzLCBjb250ZXh0LCBkZXApXG57XG4gIGNvbnN0IHtcbiAgICBtb2RlLCBhZGRUYWdPbiwgb3BlbkRpcmVjdGlvbiwgc2VhcmNoYWJsZSxcbiAgICBzaG93T3B0aW9ucywgdmFsdWVQcm9wLCBncm91cHM6IGdyb3VwcGVkLFxuICAgIGFkZE9wdGlvbk9uOiBhZGRPcHRpb25Pbl8sIGNyZWF0ZVRhZywgY3JlYXRlT3B0aW9uOiBjcmVhdGVPcHRpb25fLFxuICAgIHJldmVyc2UsXG4gIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIGNvbnN0ICR0aGlzID0gZ2V0Q3VycmVudEluc3RhbmNlKCkucHJveHk7XG5cbiAgLy8gPT09PT09PT09PT09IERFUEVOREVOQ0lFUyA9PT09PT09PT09PT1cblxuICBjb25zdCBpdiA9IGRlcC5pdjtcbiAgY29uc3QgdXBkYXRlID0gZGVwLnVwZGF0ZTtcbiAgY29uc3Qgc2VhcmNoID0gZGVwLnNlYXJjaDtcbiAgY29uc3Qgc2V0UG9pbnRlciA9IGRlcC5zZXRQb2ludGVyO1xuICBjb25zdCBzZWxlY3RQb2ludGVyID0gZGVwLnNlbGVjdFBvaW50ZXI7XG4gIGNvbnN0IGJhY2t3YXJkUG9pbnRlciA9IGRlcC5iYWNrd2FyZFBvaW50ZXI7XG4gIGNvbnN0IGZvcndhcmRQb2ludGVyID0gZGVwLmZvcndhcmRQb2ludGVyO1xuICBjb25zdCBtdWx0aXNlbGVjdCA9IGRlcC5tdWx0aXNlbGVjdDtcbiAgY29uc3Qgd3JhcHBlciA9IGRlcC53cmFwcGVyO1xuICBjb25zdCB0YWdzID0gZGVwLnRhZ3M7XG4gIGNvbnN0IGlzT3BlbiA9IGRlcC5pc09wZW47XG4gIGNvbnN0IG9wZW4gPSBkZXAub3BlbjtcbiAgY29uc3QgYmx1ciA9IGRlcC5ibHVyO1xuICBjb25zdCBmbyA9IGRlcC5mbztcblxuICAvLyA9PT09PT09PT09PT09PSBDT01QVVRFRCA9PT09PT09PT09PT09PVxuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBjcmVhdGVPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIGNyZWF0ZVRhZy52YWx1ZSB8fCBjcmVhdGVPcHRpb25fLnZhbHVlIHx8IGZhbHNlXG4gIH0pO1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBhZGRPcHRpb25PbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoYWRkVGFnT24udmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGFkZFRhZ09uLnZhbHVlXG4gICAgfVxuICAgIGVsc2UgaWYgKGFkZE9wdGlvbk9uXy52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gYWRkT3B0aW9uT25fLnZhbHVlXG4gICAgfVxuXG4gICAgcmV0dXJuIFsnZW50ZXInXVxuICB9KTtcblxuICAvLyA9PT09PT09PT09PT09PT0gTUVUSE9EUyA9PT09PT09PT09PT09PVxuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBwcmVwYXJlUG9pbnRlciA9ICgpID0+IHtcbiAgICAvLyBXaGVuIG9wdGlvbnMgYXJlIGhpZGRlbiBhbmQgY3JlYXRpbmcgdGFncyBpcyBhbGxvd2VkXG4gICAgLy8gbm8gcG9pbnRlciB3aWxsIGJlIHNldCAoYmVjYXVzZSBvcHRpb25zIGFyZSBoaWRkZW4pLlxuICAgIC8vIEluIHN1Y2ggY2FzZSB3ZSBuZWVkIHRvIHNldCB0aGUgcG9pbnRlciBtYW51YWxseSB0byB0aGUgXG4gICAgLy8gZmlyc3Qgb3B0aW9uLCB3aGljaCBlcXVhbHMgdG8gdGhlIG9wdGlvbiBjcmVhdGVkIGZyb21cbiAgICAvLyB0aGUgc2VhcmNoIHZhbHVlLlxuICAgIGlmIChtb2RlLnZhbHVlID09PSAndGFncycgJiYgIXNob3dPcHRpb25zLnZhbHVlICYmIGNyZWF0ZU9wdGlvbi52YWx1ZSAmJiBzZWFyY2hhYmxlLnZhbHVlICYmICFncm91cHBlZC52YWx1ZSkge1xuICAgICAgc2V0UG9pbnRlcihmby52YWx1ZVtmby52YWx1ZS5tYXAobyA9PiBvW3ZhbHVlUHJvcC52YWx1ZV0pLmluZGV4T2Yoc2VhcmNoLnZhbHVlKV0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCByZW1vdmVMYXN0UmVtb3ZhYmxlID0gKGFycikgPT4ge1xuICAgIC8vIEZpbmQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9iamVjdCBpbiB0aGUgYXJyYXkgdGhhdCBkb2Vzbid0IGhhdmUgYSBcInJlbW92ZVwiIHByb3BlcnR5IHNldCB0byBmYWxzZVxuICAgIGxldCBpbmRleFRvUmVtb3ZlID0gYXJyLmxlbmd0aCAtIDE7XG4gICAgd2hpbGUgKGluZGV4VG9SZW1vdmUgPj0gMCAmJiAoYXJyW2luZGV4VG9SZW1vdmVdLnJlbW92ZSA9PT0gZmFsc2UgfHwgYXJyW2luZGV4VG9SZW1vdmVdLmRpc2FibGVkKSkge1xuICAgICAgaW5kZXhUb1JlbW92ZS0tO1xuICAgIH1cblxuICAgIC8vIElmIGFsbCBvYmplY3RzIGhhdmUgYSBcInJlbW92ZVwiIHByb3BlcnR5IHNldCB0byBmYWxzZSwgZG9uJ3QgcmVtb3ZlIGFueXRoaW5nIGFuZCByZXR1cm4gdGhlIG9yaWdpbmFsIGFycmF5XG4gICAgaWYgKGluZGV4VG9SZW1vdmUgPCAwKSB7XG4gICAgICByZXR1cm4gYXJyXG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIHRoZSBvYmplY3QgYXQgdGhlIGZvdW5kIGluZGV4IGFuZCByZXR1cm4gdGhlIHVwZGF0ZWQgYXJyYXlcbiAgICBhcnIuc3BsaWNlKGluZGV4VG9SZW1vdmUsIDEpO1xuICAgIHJldHVybiBhcnJcbiAgfTtcblxuICBjb25zdCBoYW5kbGVLZXlkb3duID0gKGUpID0+IHtcbiAgICBjb250ZXh0LmVtaXQoJ2tleWRvd24nLCBlLCAkdGhpcyk7XG5cbiAgICBsZXQgdGFnTGlzdDtcbiAgICBsZXQgYWN0aXZlSW5kZXg7XG5cbiAgICBpZiAoWydBcnJvd0xlZnQnLCAnQXJyb3dSaWdodCcsICdFbnRlciddLmluZGV4T2YoZS5rZXkpICE9PSAtMSAmJiBtb2RlLnZhbHVlID09PSAndGFncycpIHtcbiAgICAgIHRhZ0xpc3QgPSBbLi4uKG11bHRpc2VsZWN0LnZhbHVlLnF1ZXJ5U2VsZWN0b3JBbGwoYFtkYXRhLXRhZ3NdID4gKmApKV0uZmlsdGVyKGUgPT4gZSAhPT0gdGFncy52YWx1ZSk7XG4gICAgICBhY3RpdmVJbmRleCA9IHRhZ0xpc3QuZmluZEluZGV4KGUgPT4gZSA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgc3dpdGNoIChlLmtleSkge1xuICAgICAgY2FzZSAnQmFja3NwYWNlJzpcbiAgICAgICAgaWYgKG1vZGUudmFsdWUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2VhcmNoYWJsZS52YWx1ZSAmJiBbbnVsbCwgJyddLmluZGV4T2Yoc2VhcmNoLnZhbHVlKSA9PT0gLTEpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdi52YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIHVwZGF0ZShyZW1vdmVMYXN0UmVtb3ZhYmxlKFsuLi5pdi52YWx1ZV0pKTtcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgaWYgKGUua2V5Q29kZSA9PT0gMjI5KSB7XG4gICAgICAgICAgLy8gaWdub3JlIElNRSBjb25maXJtYXRpb25cbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhY3RpdmVJbmRleCAhPT0gLTEgJiYgYWN0aXZlSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHVwZGF0ZShbLi4uaXYudmFsdWVdLmZpbHRlcigodiwgaykgPT4gayAhPT0gYWN0aXZlSW5kZXgpKTtcblxuICAgICAgICAgIGlmIChhY3RpdmVJbmRleCA9PT0gdGFnTGlzdC5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBpZiAodGFnTGlzdC5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgIHRhZ0xpc3RbdGFnTGlzdC5sZW5ndGggLSAyXS5mb2N1cygpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzZWFyY2hhYmxlLnZhbHVlKSB7XG4gICAgICAgICAgICAgIHRhZ3MudmFsdWUucXVlcnlTZWxlY3RvcignaW5wdXQnKS5mb2N1cygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgd3JhcHBlci52YWx1ZS5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhZGRPcHRpb25Pbi52YWx1ZS5pbmRleE9mKCdlbnRlcicpID09PSAtMSAmJiBjcmVhdGVPcHRpb24udmFsdWUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgcHJlcGFyZVBvaW50ZXIoKTtcbiAgICAgICAgc2VsZWN0UG9pbnRlcigpO1xuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICcgJzpcbiAgICAgICAgaWYgKCFjcmVhdGVPcHRpb24udmFsdWUgJiYgIXNlYXJjaGFibGUudmFsdWUpIHtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgXG4gICAgICAgICAgcHJlcGFyZVBvaW50ZXIoKTtcbiAgICAgICAgICBzZWxlY3RQb2ludGVyKCk7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWNyZWF0ZU9wdGlvbi52YWx1ZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9IFxuXG4gICAgICAgIGlmIChhZGRPcHRpb25Pbi52YWx1ZS5pbmRleE9mKCdzcGFjZScpID09PSAtMSAmJiBjcmVhdGVPcHRpb24udmFsdWUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgXG4gICAgICAgIHByZXBhcmVQb2ludGVyKCk7XG4gICAgICAgIHNlbGVjdFBvaW50ZXIoKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIFxuICAgICAgY2FzZSAnVGFiJzpcbiAgICAgIGNhc2UgJzsnOlxuICAgICAgY2FzZSAnLCc6XG4gICAgICAgIGlmIChhZGRPcHRpb25Pbi52YWx1ZS5pbmRleE9mKGUua2V5LnRvTG93ZXJDYXNlKCkpID09PSAtMSB8fCAhY3JlYXRlT3B0aW9uLnZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBwcmVwYXJlUG9pbnRlcigpO1xuICAgICAgICBzZWxlY3RQb2ludGVyKCk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgYmx1cigpO1xuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmICghc2hvd09wdGlvbnMudmFsdWUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmICghaXNPcGVuLnZhbHVlKSB7XG4gICAgICAgICAgb3BlbigpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBiYWNrd2FyZFBvaW50ZXIoKTtcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmICghc2hvd09wdGlvbnMudmFsdWUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmICghaXNPcGVuLnZhbHVlKSB7XG4gICAgICAgICAgb3BlbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yd2FyZFBvaW50ZXIoKTtcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChzZWFyY2hhYmxlLnZhbHVlICYmIHRhZ3MudmFsdWUgJiYgdGFncy52YWx1ZS5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLnNlbGVjdGlvblN0YXJ0KVxuICAgICAgICAgIHx8IGUuc2hpZnRLZXkgfHwgbW9kZS52YWx1ZSAhPT0gJ3RhZ3MnIHx8ICFpdi52YWx1ZSB8fCAhaXYudmFsdWUubGVuZ3RoXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmIChhY3RpdmVJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICB0YWdMaXN0W3RhZ0xpc3QubGVuZ3RoLTFdLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYWN0aXZlSW5kZXggPiAwKSB7XG4gICAgICAgICAgdGFnTGlzdFthY3RpdmVJbmRleC0xXS5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICBpZiAoYWN0aXZlSW5kZXggPT09IC0xIHx8IGUuc2hpZnRLZXkgfHwgbW9kZS52YWx1ZSAhPT0gJ3RhZ3MnIHx8ICFpdi52YWx1ZSB8fCAhaXYudmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIFxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAodGFnTGlzdC5sZW5ndGggPiBhY3RpdmVJbmRleCArIDEpIHtcbiAgICAgICAgICB0YWdMaXN0W2FjdGl2ZUluZGV4KzFdLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc2VhcmNoYWJsZS52YWx1ZSkge1xuICAgICAgICAgIHRhZ3MudmFsdWUucXVlcnlTZWxlY3RvcignaW5wdXQnKS5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFzZWFyY2hhYmxlLnZhbHVlKSB7XG4gICAgICAgICAgd3JhcHBlci52YWx1ZS5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBicmVha1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVLZXl1cCA9IChlKSA9PiB7XG4gICAgY29udGV4dC5lbWl0KCdrZXl1cCcsIGUsICR0aGlzKTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGhhbmRsZUtleWRvd24sXG4gICAgaGFuZGxlS2V5dXAsXG4gICAgcHJlcGFyZVBvaW50ZXIsXG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlQ2xhc3NlcyAocHJvcHMsIGNvbnRleHQsIGRlcGVuZGVuY2llcylcbntjb25zdCB7IFxuICAgIGNsYXNzZXM6IGNsYXNzZXNfLCBkaXNhYmxlZCwgb3BlbkRpcmVjdGlvbiwgc2hvd09wdGlvbnNcbiAgfSA9IHRvUmVmcyhwcm9wcyk7XG5cbiAgLy8gPT09PT09PT09PT09IERFUEVOREVOQ0lFUyA9PT09PT09PT09PT1cblxuICBjb25zdCBpc09wZW4gPSBkZXBlbmRlbmNpZXMuaXNPcGVuO1xuICBjb25zdCBpc1BvaW50ZWQgPSBkZXBlbmRlbmNpZXMuaXNQb2ludGVkO1xuICBjb25zdCBpc1NlbGVjdGVkID0gZGVwZW5kZW5jaWVzLmlzU2VsZWN0ZWQ7XG4gIGNvbnN0IGlzRGlzYWJsZWQgPSBkZXBlbmRlbmNpZXMuaXNEaXNhYmxlZDtcbiAgY29uc3QgaXNBY3RpdmUgPSBkZXBlbmRlbmNpZXMuaXNBY3RpdmU7XG4gIGNvbnN0IGNhblBvaW50R3JvdXBzID0gZGVwZW5kZW5jaWVzLmNhblBvaW50R3JvdXBzO1xuICBjb25zdCByZXNvbHZpbmcgPSBkZXBlbmRlbmNpZXMucmVzb2x2aW5nO1xuICBjb25zdCBmbyA9IGRlcGVuZGVuY2llcy5mbztcblxuICBjb25zdCBjbGFzc2VzID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICBjb250YWluZXI6ICdtdWx0aXNlbGVjdCcsXG4gICAgY29udGFpbmVyRGlzYWJsZWQ6ICdpcy1kaXNhYmxlZCcsXG4gICAgY29udGFpbmVyT3BlbjogJ2lzLW9wZW4nLFxuICAgIGNvbnRhaW5lck9wZW5Ub3A6ICdpcy1vcGVuLXRvcCcsXG4gICAgY29udGFpbmVyQWN0aXZlOiAnaXMtYWN0aXZlJyxcbiAgICB3cmFwcGVyOiAnbXVsdGlzZWxlY3Qtd3JhcHBlcicsXG4gICAgc2luZ2xlTGFiZWw6ICdtdWx0aXNlbGVjdC1zaW5nbGUtbGFiZWwnLFxuICAgIHNpbmdsZUxhYmVsVGV4dDogJ211bHRpc2VsZWN0LXNpbmdsZS1sYWJlbC10ZXh0JyxcbiAgICBtdWx0aXBsZUxhYmVsOiAnbXVsdGlzZWxlY3QtbXVsdGlwbGUtbGFiZWwnLFxuICAgIHNlYXJjaDogJ211bHRpc2VsZWN0LXNlYXJjaCcsXG4gICAgdGFnczogJ211bHRpc2VsZWN0LXRhZ3MnLFxuICAgIHRhZzogJ211bHRpc2VsZWN0LXRhZycsXG4gICAgdGFnRGlzYWJsZWQ6ICdpcy1kaXNhYmxlZCcsXG4gICAgdGFnUmVtb3ZlOiAnbXVsdGlzZWxlY3QtdGFnLXJlbW92ZScsXG4gICAgdGFnUmVtb3ZlSWNvbjogJ211bHRpc2VsZWN0LXRhZy1yZW1vdmUtaWNvbicsXG4gICAgdGFnc1NlYXJjaFdyYXBwZXI6ICdtdWx0aXNlbGVjdC10YWdzLXNlYXJjaC13cmFwcGVyJyxcbiAgICB0YWdzU2VhcmNoOiAnbXVsdGlzZWxlY3QtdGFncy1zZWFyY2gnLFxuICAgIHRhZ3NTZWFyY2hDb3B5OiAnbXVsdGlzZWxlY3QtdGFncy1zZWFyY2gtY29weScsXG4gICAgcGxhY2Vob2xkZXI6ICdtdWx0aXNlbGVjdC1wbGFjZWhvbGRlcicsXG4gICAgY2FyZXQ6ICdtdWx0aXNlbGVjdC1jYXJldCcsXG4gICAgY2FyZXRPcGVuOiAnaXMtb3BlbicsXG4gICAgY2xlYXI6ICdtdWx0aXNlbGVjdC1jbGVhcicsXG4gICAgY2xlYXJJY29uOiAnbXVsdGlzZWxlY3QtY2xlYXItaWNvbicsXG4gICAgc3Bpbm5lcjogJ211bHRpc2VsZWN0LXNwaW5uZXInLFxuICAgIGluaWZpbml0ZTogJ211bHRpc2VsZWN0LWluaWZpdGUnLFxuICAgIGluaWZpbml0ZVNwaW5uZXI6ICdtdWx0aXNlbGVjdC1pbmlmaXRlLXNwaW5uZXInLFxuICAgIGRyb3Bkb3duOiAnbXVsdGlzZWxlY3QtZHJvcGRvd24nLFxuICAgIGRyb3Bkb3duVG9wOiAnaXMtdG9wJyxcbiAgICBkcm9wZG93bkhpZGRlbjogJ2lzLWhpZGRlbicsXG4gICAgb3B0aW9uczogJ211bHRpc2VsZWN0LW9wdGlvbnMnLFxuICAgIG9wdGlvbnNUb3A6ICdpcy10b3AnLFxuICAgIGdyb3VwOiAnbXVsdGlzZWxlY3QtZ3JvdXAnLFxuICAgIGdyb3VwTGFiZWw6ICdtdWx0aXNlbGVjdC1ncm91cC1sYWJlbCcsXG4gICAgZ3JvdXBMYWJlbFBvaW50YWJsZTogJ2lzLXBvaW50YWJsZScsXG4gICAgZ3JvdXBMYWJlbFBvaW50ZWQ6ICdpcy1wb2ludGVkJyxcbiAgICBncm91cExhYmVsU2VsZWN0ZWQ6ICdpcy1zZWxlY3RlZCcsXG4gICAgZ3JvdXBMYWJlbERpc2FibGVkOiAnaXMtZGlzYWJsZWQnLFxuICAgIGdyb3VwTGFiZWxTZWxlY3RlZFBvaW50ZWQ6ICdpcy1zZWxlY3RlZCBpcy1wb2ludGVkJyxcbiAgICBncm91cExhYmVsU2VsZWN0ZWREaXNhYmxlZDogJ2lzLXNlbGVjdGVkIGlzLWRpc2FibGVkJyxcbiAgICBncm91cE9wdGlvbnM6ICdtdWx0aXNlbGVjdC1ncm91cC1vcHRpb25zJyxcbiAgICBvcHRpb246ICdtdWx0aXNlbGVjdC1vcHRpb24nLFxuICAgIG9wdGlvblBvaW50ZWQ6ICdpcy1wb2ludGVkJyxcbiAgICBvcHRpb25TZWxlY3RlZDogJ2lzLXNlbGVjdGVkJyxcbiAgICBvcHRpb25EaXNhYmxlZDogJ2lzLWRpc2FibGVkJyxcbiAgICBvcHRpb25TZWxlY3RlZFBvaW50ZWQ6ICdpcy1zZWxlY3RlZCBpcy1wb2ludGVkJyxcbiAgICBvcHRpb25TZWxlY3RlZERpc2FibGVkOiAnaXMtc2VsZWN0ZWQgaXMtZGlzYWJsZWQnLFxuICAgIG5vT3B0aW9uczogJ211bHRpc2VsZWN0LW5vLW9wdGlvbnMnLFxuICAgIG5vUmVzdWx0czogJ211bHRpc2VsZWN0LW5vLXJlc3VsdHMnLFxuICAgIGZha2VJbnB1dDogJ211bHRpc2VsZWN0LWZha2UtaW5wdXQnLFxuICAgIGFzc2lzdDogJ211bHRpc2VsZWN0LWFzc2lzdGl2ZS10ZXh0JyxcbiAgICBzcGFjZXI6ICdtdWx0aXNlbGVjdC1zcGFjZXInLFxuICAgIC4uLmNsYXNzZXNfLnZhbHVlLFxuICB9KSk7XG5cbiAgLy8gPT09PT09PT09PT09PT0gQ09NUFVURUQgPT09PT09PT09PT09PT1cblxuICBjb25zdCBzaG93RHJvcGRvd24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuICEhKGlzT3Blbi52YWx1ZSAmJiBzaG93T3B0aW9ucy52YWx1ZSAmJiAoIXJlc29sdmluZy52YWx1ZSB8fCAocmVzb2x2aW5nLnZhbHVlICYmIGZvLnZhbHVlLmxlbmd0aCkpKVxuICB9KTtcblxuICBjb25zdCBjbGFzc0xpc3QgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYyA9IGNsYXNzZXMudmFsdWU7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29udGFpbmVyOiBbYy5jb250YWluZXJdXG4gICAgICAgIC5jb25jYXQoZGlzYWJsZWQudmFsdWUgPyBjLmNvbnRhaW5lckRpc2FibGVkIDogW10pXG4gICAgICAgIC5jb25jYXQoc2hvd0Ryb3Bkb3duLnZhbHVlICYmIG9wZW5EaXJlY3Rpb24udmFsdWUgPT09ICd0b3AnICA/IGMuY29udGFpbmVyT3BlblRvcCA6IFtdKVxuICAgICAgICAuY29uY2F0KHNob3dEcm9wZG93bi52YWx1ZSAmJiBvcGVuRGlyZWN0aW9uLnZhbHVlICE9PSAndG9wJyA/IGMuY29udGFpbmVyT3BlbiA6IFtdKVxuICAgICAgICAuY29uY2F0KGlzQWN0aXZlLnZhbHVlID8gYy5jb250YWluZXJBY3RpdmUgOiBbXSksXG4gICAgICB3cmFwcGVyOiBjLndyYXBwZXIsXG4gICAgICBzcGFjZXI6IGMuc3BhY2VyLFxuICAgICAgc2luZ2xlTGFiZWw6IGMuc2luZ2xlTGFiZWwsXG4gICAgICBzaW5nbGVMYWJlbFRleHQ6IGMuc2luZ2xlTGFiZWxUZXh0LFxuICAgICAgbXVsdGlwbGVMYWJlbDogYy5tdWx0aXBsZUxhYmVsLFxuICAgICAgc2VhcmNoOiBjLnNlYXJjaCxcbiAgICAgIHRhZ3M6IGMudGFncyxcbiAgICAgIHRhZzogW2MudGFnXVxuICAgICAgICAuY29uY2F0KGRpc2FibGVkLnZhbHVlID8gYy50YWdEaXNhYmxlZCA6IFtdKSxcbiAgICAgIHRhZ0Rpc2FibGVkOiBjLnRhZ0Rpc2FibGVkLFxuICAgICAgdGFnUmVtb3ZlOiBjLnRhZ1JlbW92ZSxcbiAgICAgIHRhZ1JlbW92ZUljb246IGMudGFnUmVtb3ZlSWNvbixcbiAgICAgIHRhZ3NTZWFyY2hXcmFwcGVyOiBjLnRhZ3NTZWFyY2hXcmFwcGVyLFxuICAgICAgdGFnc1NlYXJjaDogYy50YWdzU2VhcmNoLFxuICAgICAgdGFnc1NlYXJjaENvcHk6IGMudGFnc1NlYXJjaENvcHksXG4gICAgICBwbGFjZWhvbGRlcjogYy5wbGFjZWhvbGRlcixcbiAgICAgIGNhcmV0OiBbYy5jYXJldF1cbiAgICAgICAgLmNvbmNhdChpc09wZW4udmFsdWUgPyBjLmNhcmV0T3BlbiA6IFtdKSxcbiAgICAgIGNsZWFyOiBjLmNsZWFyLFxuICAgICAgY2xlYXJJY29uOiBjLmNsZWFySWNvbixcbiAgICAgIHNwaW5uZXI6IGMuc3Bpbm5lcixcbiAgICAgIGluaWZpbml0ZTogYy5pbmlmaW5pdGUsXG4gICAgICBpbmlmaW5pdGVTcGlubmVyOiBjLmluaWZpbml0ZVNwaW5uZXIsXG4gICAgICBkcm9wZG93bjogW2MuZHJvcGRvd25dXG4gICAgICAgIC5jb25jYXQob3BlbkRpcmVjdGlvbi52YWx1ZSA9PT0gJ3RvcCcgPyBjLmRyb3Bkb3duVG9wIDogW10pXG4gICAgICAgIC5jb25jYXQoIWlzT3Blbi52YWx1ZSB8fCAhc2hvd09wdGlvbnMudmFsdWUgfHwgIXNob3dEcm9wZG93bi52YWx1ZSA/IGMuZHJvcGRvd25IaWRkZW4gOiBbXSksXG4gICAgICBvcHRpb25zOiBbYy5vcHRpb25zXVxuICAgICAgICAuY29uY2F0KG9wZW5EaXJlY3Rpb24udmFsdWUgPT09ICd0b3AnID8gYy5vcHRpb25zVG9wIDogW10pLFxuICAgICAgZ3JvdXA6IGMuZ3JvdXAsXG4gICAgICBncm91cExhYmVsOiAoZykgPT4ge1xuICAgICAgICBsZXQgZ3JvdXBMYWJlbCA9IFtjLmdyb3VwTGFiZWxdO1xuXG4gICAgICAgIGlmIChpc1BvaW50ZWQoZykpIHtcbiAgICAgICAgICBncm91cExhYmVsLnB1c2goaXNTZWxlY3RlZChnKSA/IGMuZ3JvdXBMYWJlbFNlbGVjdGVkUG9pbnRlZCA6IGMuZ3JvdXBMYWJlbFBvaW50ZWQpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzU2VsZWN0ZWQoZykgJiYgY2FuUG9pbnRHcm91cHMudmFsdWUpIHtcbiAgICAgICAgICBncm91cExhYmVsLnB1c2goaXNEaXNhYmxlZChnKSA/IGMuZ3JvdXBMYWJlbFNlbGVjdGVkRGlzYWJsZWQgOiBjLmdyb3VwTGFiZWxTZWxlY3RlZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEaXNhYmxlZChnKSkge1xuICAgICAgICAgIGdyb3VwTGFiZWwucHVzaChjLmdyb3VwTGFiZWxEaXNhYmxlZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2FuUG9pbnRHcm91cHMudmFsdWUpIHtcbiAgICAgICAgICBncm91cExhYmVsLnB1c2goYy5ncm91cExhYmVsUG9pbnRhYmxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBncm91cExhYmVsXG4gICAgICB9LFxuICAgICAgZ3JvdXBPcHRpb25zOiBjLmdyb3VwT3B0aW9ucyxcbiAgICAgIG9wdGlvbjogKG8sIGcpID0+IHtcbiAgICAgICAgbGV0IG9wdGlvbiA9IFtjLm9wdGlvbl07XG5cbiAgICAgICAgaWYgKGlzUG9pbnRlZChvKSkge1xuICAgICAgICAgIG9wdGlvbi5wdXNoKGlzU2VsZWN0ZWQobykgPyBjLm9wdGlvblNlbGVjdGVkUG9pbnRlZCA6IGMub3B0aW9uUG9pbnRlZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNTZWxlY3RlZChvKSkge1xuICAgICAgICAgIG9wdGlvbi5wdXNoKGlzRGlzYWJsZWQobykgPyBjLm9wdGlvblNlbGVjdGVkRGlzYWJsZWQgOiBjLm9wdGlvblNlbGVjdGVkKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0Rpc2FibGVkKG8pIHx8IChnICYmIGlzRGlzYWJsZWQoZykpKSB7XG4gICAgICAgICAgb3B0aW9uLnB1c2goYy5vcHRpb25EaXNhYmxlZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3B0aW9uXG4gICAgICB9LFxuICAgICAgbm9PcHRpb25zOiBjLm5vT3B0aW9ucyxcbiAgICAgIG5vUmVzdWx0czogYy5ub1Jlc3VsdHMsXG4gICAgICBhc3Npc3Q6IGMuYXNzaXN0LFxuICAgICAgZmFrZUlucHV0OiBjLmZha2VJbnB1dCxcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgY2xhc3NMaXN0LFxuICAgIHNob3dEcm9wZG93bixcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VTY3JvbGwgKHByb3BzLCBjb250ZXh0LCBkZXApXG57XG4gIGNvbnN0IHtcbiAgICBsaW1pdCwgaW5maW5pdGUsXG4gIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIC8vID09PT09PT09PT09PSBERVBFTkRFTkNJRVMgPT09PT09PT09PT09XG5cbiAgY29uc3QgaXNPcGVuID0gZGVwLmlzT3BlbjtcbiAgY29uc3Qgb2Zmc2V0ID0gZGVwLm9mZnNldDtcbiAgY29uc3Qgc2VhcmNoID0gZGVwLnNlYXJjaDtcbiAgY29uc3QgcGZvID0gZGVwLnBmbztcbiAgY29uc3QgZW8gPSBkZXAuZW87XG5cbiAgLy8gPT09PT09PT09PT09PT09PSBEQVRBID09PT09PT09PT09PT09PT1cblxuICAvLyBubyBleHBvcnRcbiAgY29uc3Qgb2JzZXJ2ZXIgPSByZWYobnVsbCk7XG5cbiAgY29uc3QgaW5maW5pdGVMb2FkZXIgPSByZWYobnVsbCk7XG5cbiAgLy8gPT09PT09PT09PT09PT0gQ09NUFVURUQgPT09PT09PT09PT09PT1cblxuICBjb25zdCBoYXNNb3JlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBvZmZzZXQudmFsdWUgPCBwZm8udmFsdWUubGVuZ3RoXG4gIH0pO1xuXG4gIC8vID09PT09PT09PT09PT09PSBNRVRIT0RTID09PT09PT09PT09PT09XG5cbiAgLy8gbm8gZXhwb3J0XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGNvbnN0IGhhbmRsZUludGVyc2VjdGlvbk9ic2VydmVyID0gKGVudHJpZXMpID0+IHtcbiAgICBjb25zdCB7IGlzSW50ZXJzZWN0aW5nLCB0YXJnZXQgfSA9IGVudHJpZXNbMF07XG5cbiAgICBpZiAoaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgIGNvbnN0IHBhcmVudCA9IHRhcmdldC5vZmZzZXRQYXJlbnQ7XG4gICAgICBjb25zdCBzY3JvbGxUb3AgPSBwYXJlbnQuc2Nyb2xsVG9wO1xuXG4gICAgICBvZmZzZXQudmFsdWUgKz0gbGltaXQudmFsdWUgPT0gLTEgPyAxMCA6IGxpbWl0LnZhbHVlO1xuXG4gICAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICAgIHBhcmVudC5zY3JvbGxUb3AgPSBzY3JvbGxUb3A7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgb2JzZXJ2ZSA9ICgpID0+IHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpc09wZW4udmFsdWUgJiYgb2Zmc2V0LnZhbHVlIDwgcGZvLnZhbHVlLmxlbmd0aCkge1xuICAgICAgb2JzZXJ2ZXIudmFsdWUub2JzZXJ2ZShpbmZpbml0ZUxvYWRlci52YWx1ZSk7XG4gICAgfSBlbHNlIGlmICghaXNPcGVuLnZhbHVlICYmIG9ic2VydmVyLnZhbHVlKSB7XG4gICAgICBvYnNlcnZlci52YWx1ZS5kaXNjb25uZWN0KCk7XG4gICAgfVxuICB9O1xuXG4gIC8vID09PT09PT09PT09PT09IFdBVENIRVJTID09PT09PT09PT09PT09XG5cbiAgd2F0Y2goaXNPcGVuLCAoKSA9PiB7XG4gICAgaWYgKCFpbmZpbml0ZS52YWx1ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgb2JzZXJ2ZSgpO1xuICB9KTtcblxuICB3YXRjaChzZWFyY2gsICgpID0+IHtcbiAgICBpZiAoIWluZmluaXRlLnZhbHVlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBvZmZzZXQudmFsdWUgPSBsaW1pdC52YWx1ZTtcblxuICAgIG9ic2VydmUoKTtcbiAgfSwgeyBmbHVzaDogJ3Bvc3QnIH0pO1xuXG4gIHdhdGNoKGVvLCAoKSA9PiB7XG4gICAgaWYgKCFpbmZpbml0ZS52YWx1ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgb2JzZXJ2ZSgpO1xuICB9LCB7IGltbWVkaWF0ZTogZmFsc2UsIGZsdXNoOiAncG9zdCcgfSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PSBIT09LUyA9PT09PT09PT09PT09PT1cblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHdpbmRvdyAmJiB3aW5kb3cuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIpIHtcbiAgICAgIG9ic2VydmVyLnZhbHVlID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGhhbmRsZUludGVyc2VjdGlvbk9ic2VydmVyKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgaGFzTW9yZSxcbiAgICBpbmZpbml0ZUxvYWRlcixcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VBMTF5IChwcm9wcywgY29udGV4dCwgZGVwKVxue1xuICBjb25zdCB7XG4gICAgcGxhY2Vob2xkZXIsIGlkLCB2YWx1ZVByb3AsIGxhYmVsOiBsYWJlbFByb3AsIG1vZGUsIGdyb3VwTGFiZWwsIGFyaWEsIHNlYXJjaGFibGUgLFxuICB9ID0gdG9SZWZzKHByb3BzKTtcblxuICAvLyA9PT09PT09PT09PT0gREVQRU5ERU5DSUVTID09PT09PT09PT09PVxuXG4gIGNvbnN0IHBvaW50ZXIgPSBkZXAucG9pbnRlcjtcbiAgY29uc3QgaXYgPSBkZXAuaXY7XG4gIGNvbnN0IGhhc1NlbGVjdGVkID0gZGVwLmhhc1NlbGVjdGVkO1xuICBjb25zdCBtdWx0aXBsZUxhYmVsVGV4dCA9IGRlcC5tdWx0aXBsZUxhYmVsVGV4dDtcblxuICAvLyA9PT09PT09PT09PT09PT09IERBVEEgPT09PT09PT09PT09PT09PVxuXG4gIGNvbnN0IGxhYmVsID0gcmVmKG51bGwpO1xuXG4gIC8vID09PT09PT09PT09PT09IENPTVBVVEVEID09PT09PT09PT09PT09XG5cbiAgY29uc3QgYXJpYUFzc2lzdCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBsZXQgdGV4dHMgPSBbXTtcblxuICAgIGlmIChpZCAmJiBpZC52YWx1ZSkge1xuICAgICAgdGV4dHMucHVzaChpZC52YWx1ZSk7XG4gICAgfVxuXG4gICAgdGV4dHMucHVzaCgnYXNzaXN0Jyk7XG5cbiAgICByZXR1cm4gdGV4dHMuam9pbignLScpXG4gIH0pO1xuXG4gIGNvbnN0IGFyaWFDb250cm9scyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBsZXQgdGV4dHMgPSBbXTtcblxuICAgIGlmIChpZCAmJiBpZC52YWx1ZSkge1xuICAgICAgdGV4dHMucHVzaChpZC52YWx1ZSk7XG4gICAgfVxuXG4gICAgdGV4dHMucHVzaCgnbXVsdGlzZWxlY3Qtb3B0aW9ucycpO1xuXG4gICAgcmV0dXJuIHRleHRzLmpvaW4oJy0nKVxuICB9KTtcblxuICBjb25zdCBhcmlhQWN0aXZlRGVzY2VuZGFudCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBsZXQgdGV4dHMgPSBbXTtcblxuICAgIGlmIChpZCAmJiBpZC52YWx1ZSkge1xuICAgICAgdGV4dHMucHVzaChpZC52YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHBvaW50ZXIudmFsdWUpIHtcbiAgICAgIHRleHRzLnB1c2gocG9pbnRlci52YWx1ZS5ncm91cCA/ICdtdWx0aXNlbGVjdC1ncm91cCcgOiAnbXVsdGlzZWxlY3Qtb3B0aW9uJyk7XG5cbiAgICAgIHRleHRzLnB1c2gocG9pbnRlci52YWx1ZS5ncm91cCA/IHBvaW50ZXIudmFsdWUuaW5kZXggOiBwb2ludGVyLnZhbHVlW3ZhbHVlUHJvcC52YWx1ZV0pO1xuXG4gICAgICByZXR1cm4gdGV4dHMuam9pbignLScpXG4gICAgfVxuICB9KTtcblxuXG5cbiAgY29uc3QgYXJpYVBsYWNlaG9sZGVyID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBwbGFjZWhvbGRlci52YWx1ZVxuICB9KTtcblxuICBjb25zdCBhcmlhTXVsdGlzZWxlY3RhYmxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBtb2RlLnZhbHVlICE9PSAnc2luZ2xlJ1xuICB9KTtcblxuICBjb25zdCBhcmlhTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgbGV0IGFyaWFMYWJlbCA9ICcnO1xuXG4gICAgaWYgKG1vZGUudmFsdWUgPT09ICdzaW5nbGUnICYmIGhhc1NlbGVjdGVkLnZhbHVlKSB7XG4gICAgICBhcmlhTGFiZWwgKz0gaXYudmFsdWVbbGFiZWxQcm9wLnZhbHVlXTtcbiAgICB9XG5cbiAgICBpZiAobW9kZS52YWx1ZSA9PT0gJ211bHRpcGxlJyAmJiBoYXNTZWxlY3RlZC52YWx1ZSkge1xuICAgICAgYXJpYUxhYmVsICs9IG11bHRpcGxlTGFiZWxUZXh0LnZhbHVlO1xuICAgIH1cblxuICAgIGlmIChtb2RlLnZhbHVlID09PSAndGFncycgJiYgaGFzU2VsZWN0ZWQudmFsdWUpIHtcbiAgICAgIGFyaWFMYWJlbCArPSBpdi52YWx1ZS5tYXAodiA9PiB2W2xhYmVsUHJvcC52YWx1ZV0pLmpvaW4oJywgJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFyaWFMYWJlbFxuICB9KTtcblxuICBjb25zdCBhcmlhcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBsZXQgYXJpYXMgPSB7IC4uLmFyaWEudmFsdWUgfTtcbiAgICBcbiAgICAvLyBOZWVkIHRvIGFkZCBtYW51YWxseSBiZWNhdXNlIGZvY3VzaW5nXG4gICAgLy8gdGhlIGlucHV0IHdvbid0IHJlYWQgdGhlIHNlbGVjdGVkIHZhbHVlXG4gICAgaWYgKHNlYXJjaGFibGUudmFsdWUpIHtcbiAgICAgIGFyaWFzWydhcmlhLWxhYmVsbGVkYnknXSA9IGFyaWFzWydhcmlhLWxhYmVsbGVkYnknXVxuICAgICAgICA/IGAke2FyaWFBc3Npc3QudmFsdWV9ICR7YXJpYXNbJ2FyaWEtbGFiZWxsZWRieSddfWBcbiAgICAgICAgOiBhcmlhQXNzaXN0LnZhbHVlO1xuICAgICAgXG4gICAgICBpZiAoYXJpYUxhYmVsLnZhbHVlICYmIGFyaWFzWydhcmlhLWxhYmVsJ10pIHtcbiAgICAgICAgYXJpYXNbJ2FyaWEtbGFiZWwnXSA9IGAke2FyaWFMYWJlbC52YWx1ZX0sICR7YXJpYXNbJ2FyaWEtbGFiZWwnXX1gO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhcmlhc1xuICB9KTtcblxuICAvLyA9PT09PT09PT09PT09PT0gTUVUSE9EUyA9PT09PT09PT09PT09PVxuXG4gIGNvbnN0IGFyaWFPcHRpb25JZCA9IChvcHRpb24pID0+IHtcbiAgICBsZXQgdGV4dHMgPSBbXTtcblxuICAgIGlmIChpZCAmJiBpZC52YWx1ZSkge1xuICAgICAgdGV4dHMucHVzaChpZC52YWx1ZSk7XG4gICAgfVxuXG4gICAgdGV4dHMucHVzaCgnbXVsdGlzZWxlY3Qtb3B0aW9uJyk7XG5cbiAgICB0ZXh0cy5wdXNoKG9wdGlvblt2YWx1ZVByb3AudmFsdWVdKTtcblxuICAgIHJldHVybiB0ZXh0cy5qb2luKCctJylcbiAgfTtcblxuICBjb25zdCBhcmlhR3JvdXBJZCA9IChvcHRpb24pID0+IHtcbiAgICBsZXQgdGV4dHMgPSBbXTtcblxuICAgIGlmIChpZCAmJiBpZC52YWx1ZSkge1xuICAgICAgdGV4dHMucHVzaChpZC52YWx1ZSk7XG4gICAgfVxuXG4gICAgdGV4dHMucHVzaCgnbXVsdGlzZWxlY3QtZ3JvdXAnKTtcblxuICAgIHRleHRzLnB1c2gob3B0aW9uLmluZGV4KTtcblxuICAgIHJldHVybiB0ZXh0cy5qb2luKCctJylcbiAgfTtcblxuICBjb25zdCBhcmlhT3B0aW9uTGFiZWwgPSAobGFiZWwpID0+IHtcbiAgICBsZXQgdGV4dHMgPSBbXTtcblxuICAgIHRleHRzLnB1c2gobGFiZWwpO1xuXG4gICAgcmV0dXJuIHRleHRzLmpvaW4oJyAnKVxuICB9O1xuXG4gIGNvbnN0IGFyaWFHcm91cExhYmVsID0gKGxhYmVsKSA9PiB7XG4gICAgbGV0IHRleHRzID0gW107XG5cbiAgICB0ZXh0cy5wdXNoKGxhYmVsKTtcblxuICAgIHJldHVybiB0ZXh0cy5qb2luKCcgJylcbiAgfTtcblxuICBjb25zdCBhcmlhVGFnTGFiZWwgPSAobGFiZWwpID0+IHtcbiAgICByZXR1cm4gYCR7bGFiZWx9IOKdjmBcbiAgfTtcblxuICAvLyA9PT09PT09PT09PT09PT0gSE9PS1MgPT09PT09PT09PT09PT09PVxuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAoaWQgJiYgaWQudmFsdWUgJiYgZG9jdW1lbnQgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcikge1xuICAgICAgbGV0IGZvclRhZyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtmb3I9XCIke2lkLnZhbHVlfVwiXWApO1xuICAgICAgbGFiZWwudmFsdWUgPSBmb3JUYWcgPyBmb3JUYWcuaW5uZXJUZXh0IDogbnVsbDtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgYXJpYXMsXG4gICAgYXJpYUxhYmVsLFxuICAgIGFyaWFBc3Npc3QsXG4gICAgYXJpYUNvbnRyb2xzLFxuICAgIGFyaWFQbGFjZWhvbGRlcixcbiAgICBhcmlhTXVsdGlzZWxlY3RhYmxlLFxuICAgIGFyaWFBY3RpdmVEZXNjZW5kYW50LFxuICAgIGFyaWFPcHRpb25JZCxcbiAgICBhcmlhT3B0aW9uTGFiZWwsXG4gICAgYXJpYUdyb3VwSWQsXG4gICAgYXJpYUdyb3VwTGFiZWwsXG4gICAgYXJpYVRhZ0xhYmVsLFxuICB9XG59XG5cbmZ1bmN0aW9uIHVzZUkxOG4gKHByb3BzLCBjb250ZXh0LCBkZXApXG57XG4gIGNvbnN0IHtcbiAgICBsb2NhbGUsIGZhbGxiYWNrTG9jYWxlLFxuICB9ID0gdG9SZWZzKHByb3BzKTtcblxuICAvLyA9PT09PT09PT09PT09PT0gTUVUSE9EUyA9PT09PT09PT09PT09PVxuXG4gIGNvbnN0IGxvY2FsaXplID0gKHRhcmdldCkgPT4ge1xuICAgIGlmICghdGFyZ2V0IHx8IHR5cGVvZiB0YXJnZXQgIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gdGFyZ2V0XG4gICAgfVxuXG4gICAgaWYgKHRhcmdldCAmJiB0YXJnZXRbbG9jYWxlLnZhbHVlXSkge1xuICAgICAgcmV0dXJuIHRhcmdldFtsb2NhbGUudmFsdWVdXG4gICAgfSBlbHNlIGlmICh0YXJnZXQgJiYgbG9jYWxlLnZhbHVlICYmIHRhcmdldFtsb2NhbGUudmFsdWUudG9VcHBlckNhc2UoKV0pIHtcbiAgICAgIHJldHVybiB0YXJnZXRbbG9jYWxlLnZhbHVlLnRvVXBwZXJDYXNlKCldXG4gICAgfSBlbHNlIGlmICh0YXJnZXQgJiYgdGFyZ2V0W2ZhbGxiYWNrTG9jYWxlLnZhbHVlXSkge1xuICAgICAgcmV0dXJuIHRhcmdldFtmYWxsYmFja0xvY2FsZS52YWx1ZV1cbiAgICB9IGVsc2UgaWYgKHRhcmdldCAmJiBmYWxsYmFja0xvY2FsZS52YWx1ZSAmJiB0YXJnZXRbZmFsbGJhY2tMb2NhbGUudmFsdWUudG9VcHBlckNhc2UoKV0pIHtcbiAgICAgIHJldHVybiB0YXJnZXRbZmFsbGJhY2tMb2NhbGUudmFsdWUudG9VcHBlckNhc2UoKV1cbiAgICB9IGVsc2UgaWYgKHRhcmdldCAmJiBPYmplY3Qua2V5cyh0YXJnZXQpWzBdKSB7XG4gICAgICByZXR1cm4gdGFyZ2V0W09iamVjdC5rZXlzKHRhcmdldClbMF1dXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJ1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGxvY2FsaXplLFxuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVEZXBzIChwcm9wcywgY29udGV4dCwgZmVhdHVyZXMsIGRlcHMgPSB7fSkge1xuICBmZWF0dXJlcy5mb3JFYWNoKChjb21wb3NhYmxlKSA9PiB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoY29tcG9zYWJsZSkge1xuICAgICAgZGVwcyA9IHtcbiAgICAgICAgLi4uZGVwcyxcbiAgICAgICAgLi4uY29tcG9zYWJsZShwcm9wcywgY29udGV4dCwgZGVwcylcbiAgICAgIH07XG4gICAgfVxuXG4gIH0pO1xuICBcbiAgcmV0dXJuIGRlcHNcbn1cblxudmFyIHNjcmlwdCA9IHtcbiAgICBuYW1lOiAnTXVsdGlzZWxlY3QnLFxuICAgIGVtaXRzOiBbXG4gICAgICAncGFzdGUnLCAnb3BlbicsICdjbG9zZScsICdzZWxlY3QnLCAnZGVzZWxlY3QnLCBcbiAgICAgICdpbnB1dCcsICdzZWFyY2gtY2hhbmdlJywgJ3RhZycsICdvcHRpb24nLCAndXBkYXRlOm1vZGVsVmFsdWUnLFxuICAgICAgJ2NoYW5nZScsICdjbGVhcicsICdrZXlkb3duJywgJ2tleXVwJywgJ21heCcsICdjcmVhdGUnLFxuICAgIF0sXG4gICAgcHJvcHM6IHtcbiAgICAgIHZhbHVlOiB7XG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBtb2RlbFZhbHVlOiB7XG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIHR5cGU6IFtBcnJheSwgT2JqZWN0LCBGdW5jdGlvbl0sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogKCkgPT4gKFtdKVxuICAgICAgfSxcbiAgICAgIGlkOiB7XG4gICAgICAgIHR5cGU6IFtTdHJpbmcsIE51bWJlcl0sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBuYW1lOiB7XG4gICAgICAgIHR5cGU6IFtTdHJpbmcsIE51bWJlcl0sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogJ211bHRpc2VsZWN0JyxcbiAgICAgIH0sXG4gICAgICBkaXNhYmxlZDoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGxhYmVsOiB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAnbGFiZWwnLFxuICAgICAgfSxcbiAgICAgIHRyYWNrQnk6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICB2YWx1ZVByb3A6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6ICd2YWx1ZScsXG4gICAgICB9LFxuICAgICAgcGxhY2Vob2xkZXI6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB9LFxuICAgICAgbW9kZToge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogJ3NpbmdsZScsIC8vIHNpbmdsZXxtdWx0aXBsZXx0YWdzXG4gICAgICB9LFxuICAgICAgc2VhcmNoYWJsZToge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGxpbWl0OiB7XG4gICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAtMSxcbiAgICAgIH0sXG4gICAgICBoaWRlU2VsZWN0ZWQ6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGNyZWF0ZVRhZzoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBjcmVhdGVPcHRpb246IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgYXBwZW5kTmV3VGFnOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIGFwcGVuZE5ld09wdGlvbjoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBhZGRUYWdPbjoge1xuICAgICAgICB0eXBlOiBBcnJheSxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgYWRkT3B0aW9uT246IHtcbiAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIGNhcmV0OiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBsb2FkaW5nOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgbm9PcHRpb25zVGV4dDoge1xuICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6ICdUaGUgbGlzdCBpcyBlbXB0eScsXG4gICAgICB9LFxuICAgICAgbm9SZXN1bHRzVGV4dDoge1xuICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6ICdObyByZXN1bHRzIGZvdW5kJyxcbiAgICAgIH0sXG4gICAgICBtdWx0aXBsZUxhYmVsOiB7XG4gICAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgb2JqZWN0OiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgZGVsYXk6IHtcbiAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IC0xLFxuICAgICAgfSxcbiAgICAgIG1pbkNoYXJzOiB7XG4gICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAwLFxuICAgICAgfSxcbiAgICAgIHJlc29sdmVPbkxvYWQ6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGZpbHRlclJlc3VsdHM6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGNsZWFyT25TZWFyY2g6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBjbGVhck9uU2VsZWN0OiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBjYW5EZXNlbGVjdDoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgY2FuQ2xlYXI6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIG1heDoge1xuICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogLTEsXG4gICAgICB9LFxuICAgICAgc2hvd09wdGlvbnM6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIHJlcXVpcmVkOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgb3BlbkRpcmVjdGlvbjoge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogJ2JvdHRvbScsXG4gICAgICB9LFxuICAgICAgbmF0aXZlU3VwcG9ydDoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGNsYXNzZXM6IHtcbiAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6ICgpID0+ICh7fSlcbiAgICAgIH0sXG4gICAgICBzdHJpY3Q6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGNsb3NlT25TZWxlY3Q6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGNsb3NlT25EZXNlbGVjdDoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGF1dG9jb21wbGV0ZToge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBncm91cHM6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBncm91cExhYmVsOiB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAnbGFiZWwnLFxuICAgICAgfSxcbiAgICAgIGdyb3VwT3B0aW9uczoge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogJ29wdGlvbnMnLFxuICAgICAgfSxcbiAgICAgIGdyb3VwSGlkZUVtcHR5OiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgZ3JvdXBTZWxlY3Q6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGlucHV0VHlwZToge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogJ3RleHQnLFxuICAgICAgfSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICBkZWZhdWx0OiAoKSA9PiAoe30pLFxuICAgICAgfSxcbiAgICAgIG9uQ3JlYXRlOiB7XG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICB9LFxuICAgICAgZGlzYWJsZWRQcm9wOiB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAnZGlzYWJsZWQnLFxuICAgICAgfSxcbiAgICAgIHNlYXJjaFN0YXJ0OiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgcmV2ZXJzZToge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHJlZ2V4OiB7XG4gICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZywgUmVnRXhwXSxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgcnRsOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgaW5maW5pdGU6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhcmlhOiB7XG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICBkZWZhdWx0OiAoKSA9PiAoe30pLFxuICAgICAgfSxcbiAgICAgIGNsZWFyT25CbHVyOiB7XG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBsb2NhbGU6IHtcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB9LFxuICAgICAgZmFsbGJhY2tMb2NhbGU6IHtcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIGRlZmF1bHQ6ICdlbicsXG4gICAgICB9LFxuICAgICAgc2VhcmNoRmlsdGVyOiB7XG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB9LFxuICAgICAgYWxsb3dBYnNlbnQ6IHtcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cChwcm9wcywgY29udGV4dClcbiAgICB7IFxuICAgICAgcmV0dXJuIHJlc29sdmVEZXBzKHByb3BzLCBjb250ZXh0LCBbXG4gICAgICAgIHVzZUkxOG4sXG4gICAgICAgIHVzZVZhbHVlLFxuICAgICAgICB1c2VQb2ludGVyJDEsXG4gICAgICAgIHVzZURyb3Bkb3duLFxuICAgICAgICB1c2VTZWFyY2gsXG4gICAgICAgIHVzZURhdGEsXG4gICAgICAgIHVzZU11bHRpc2VsZWN0LFxuICAgICAgICB1c2VPcHRpb25zLFxuICAgICAgICB1c2VTY3JvbGwsXG4gICAgICAgIHVzZVBvaW50ZXIsXG4gICAgICAgIHVzZUtleWJvYXJkLFxuICAgICAgICB1c2VDbGFzc2VzLFxuICAgICAgICB1c2VBMTF5LFxuICAgICAgXSlcbiAgICB9XG4gIH07XG5cbmNvbnN0IF9ob2lzdGVkXzEgPSBbXCJpZFwiLCBcImRpclwiXTtcbmNvbnN0IF9ob2lzdGVkXzIgPSBbXCJ0YWJpbmRleFwiLCBcImFyaWEtY29udHJvbHNcIiwgXCJhcmlhLXBsYWNlaG9sZGVyXCIsIFwiYXJpYS1leHBhbmRlZFwiLCBcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiLCBcImFyaWEtbXVsdGlzZWxlY3RhYmxlXCIsIFwicm9sZVwiXTtcbmNvbnN0IF9ob2lzdGVkXzMgPSBbXCJ0eXBlXCIsIFwibW9kZWxWYWx1ZVwiLCBcInZhbHVlXCIsIFwiYXV0b2NvbXBsZXRlXCIsIFwiaWRcIiwgXCJhcmlhLWNvbnRyb2xzXCIsIFwiYXJpYS1wbGFjZWhvbGRlclwiLCBcImFyaWEtZXhwYW5kZWRcIiwgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIiwgXCJhcmlhLW11bHRpc2VsZWN0YWJsZVwiXTtcbmNvbnN0IF9ob2lzdGVkXzQgPSBbXCJvbktleXVwXCIsIFwiYXJpYS1sYWJlbFwiXTtcbmNvbnN0IF9ob2lzdGVkXzUgPSBbXCJvbkNsaWNrXCJdO1xuY29uc3QgX2hvaXN0ZWRfNiA9IFtcInR5cGVcIiwgXCJtb2RlbFZhbHVlXCIsIFwidmFsdWVcIiwgXCJpZFwiLCBcImF1dG9jb21wbGV0ZVwiLCBcImFyaWEtY29udHJvbHNcIiwgXCJhcmlhLXBsYWNlaG9sZGVyXCIsIFwiYXJpYS1leHBhbmRlZFwiLCBcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiLCBcImFyaWEtbXVsdGlzZWxlY3RhYmxlXCJdO1xuY29uc3QgX2hvaXN0ZWRfNyA9IFtcImlubmVySFRNTFwiXTtcbmNvbnN0IF9ob2lzdGVkXzggPSBbXCJpZFwiXTtcbmNvbnN0IF9ob2lzdGVkXzkgPSBbXCJpZFwiLCBcImFyaWEtbGFiZWxcIiwgXCJhcmlhLXNlbGVjdGVkXCJdO1xuY29uc3QgX2hvaXN0ZWRfMTAgPSBbXCJkYXRhLXBvaW50ZWRcIiwgXCJvbk1vdXNlZW50ZXJcIiwgXCJvbkNsaWNrXCJdO1xuY29uc3QgX2hvaXN0ZWRfMTEgPSBbXCJpbm5lckhUTUxcIl07XG5jb25zdCBfaG9pc3RlZF8xMiA9IFtcImFyaWEtbGFiZWxcIl07XG5jb25zdCBfaG9pc3RlZF8xMyA9IFtcImRhdGEtcG9pbnRlZFwiLCBcImRhdGEtc2VsZWN0ZWRcIiwgXCJvbk1vdXNlZW50ZXJcIiwgXCJvbkNsaWNrXCIsIFwiaWRcIiwgXCJhcmlhLXNlbGVjdGVkXCIsIFwiYXJpYS1sYWJlbFwiXTtcbmNvbnN0IF9ob2lzdGVkXzE0ID0gW1wiZGF0YS1wb2ludGVkXCIsIFwiZGF0YS1zZWxlY3RlZFwiLCBcIm9uTW91c2VlbnRlclwiLCBcIm9uQ2xpY2tcIiwgXCJpZFwiLCBcImFyaWEtc2VsZWN0ZWRcIiwgXCJhcmlhLWxhYmVsXCJdO1xuY29uc3QgX2hvaXN0ZWRfMTUgPSBbXCJpbm5lckhUTUxcIl07XG5jb25zdCBfaG9pc3RlZF8xNiA9IFtcImlubmVySFRNTFwiXTtcbmNvbnN0IF9ob2lzdGVkXzE3ID0gW1widmFsdWVcIl07XG5jb25zdCBfaG9pc3RlZF8xOCA9IFtcIm5hbWVcIiwgXCJ2YWx1ZVwiXTtcbmNvbnN0IF9ob2lzdGVkXzE5ID0gW1wibmFtZVwiLCBcInZhbHVlXCJdO1xuY29uc3QgX2hvaXN0ZWRfMjAgPSBbXCJpZFwiXTtcblxuZnVuY3Rpb24gcmVuZGVyKF9jdHgsIF9jYWNoZSwgJHByb3BzLCAkc2V0dXAsICRkYXRhLCAkb3B0aW9ucykge1xuICByZXR1cm4gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIiwge1xuICAgIHJlZjogXCJtdWx0aXNlbGVjdFwiLFxuICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5jb250YWluZXIpLFxuICAgIGlkOiAkcHJvcHMuc2VhcmNoYWJsZSA/IHVuZGVmaW5lZCA6ICRwcm9wcy5pZCxcbiAgICBkaXI6ICRwcm9wcy5ydGwgPyAncnRsJyA6IHVuZGVmaW5lZCxcbiAgICBvbkZvY3VzaW46IF9jYWNoZVsxMF0gfHwgKF9jYWNoZVsxMF0gPSAoLi4uYXJncykgPT4gKF9jdHguaGFuZGxlRm9jdXNJbiAmJiBfY3R4LmhhbmRsZUZvY3VzSW4oLi4uYXJncykpKSxcbiAgICBvbkZvY3Vzb3V0OiBfY2FjaGVbMTFdIHx8IChfY2FjaGVbMTFdID0gKC4uLmFyZ3MpID0+IChfY3R4LmhhbmRsZUZvY3VzT3V0ICYmIF9jdHguaGFuZGxlRm9jdXNPdXQoLi4uYXJncykpKSxcbiAgICBvbktleXVwOiBfY2FjaGVbMTJdIHx8IChfY2FjaGVbMTJdID0gKC4uLmFyZ3MpID0+IChfY3R4LmhhbmRsZUtleXVwICYmIF9jdHguaGFuZGxlS2V5dXAoLi4uYXJncykpKSxcbiAgICBvbktleWRvd246IF9jYWNoZVsxM10gfHwgKF9jYWNoZVsxM10gPSAoLi4uYXJncykgPT4gKF9jdHguaGFuZGxlS2V5ZG93biAmJiBfY3R4LmhhbmRsZUtleWRvd24oLi4uYXJncykpKVxuICB9LCBbXG4gICAgY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsIG1lcmdlUHJvcHMoe1xuICAgICAgY2xhc3M6IF9jdHguY2xhc3NMaXN0LndyYXBwZXIsXG4gICAgICBvbk1vdXNlZG93bjogX2NhY2hlWzldIHx8IChfY2FjaGVbOV0gPSAoLi4uYXJncykgPT4gKF9jdHguaGFuZGxlTW91c2Vkb3duICYmIF9jdHguaGFuZGxlTW91c2Vkb3duKC4uLmFyZ3MpKSksXG4gICAgICByZWY6IFwid3JhcHBlclwiLFxuICAgICAgdGFiaW5kZXg6IF9jdHgudGFiaW5kZXgsXG4gICAgICBcImFyaWEtY29udHJvbHNcIjogISRwcm9wcy5zZWFyY2hhYmxlID8gX2N0eC5hcmlhQ29udHJvbHMgOiB1bmRlZmluZWQsXG4gICAgICBcImFyaWEtcGxhY2Vob2xkZXJcIjogISRwcm9wcy5zZWFyY2hhYmxlID8gX2N0eC5hcmlhUGxhY2Vob2xkZXIgOiB1bmRlZmluZWQsXG4gICAgICBcImFyaWEtZXhwYW5kZWRcIjogISRwcm9wcy5zZWFyY2hhYmxlID8gX2N0eC5pc09wZW4gOiB1bmRlZmluZWQsXG4gICAgICBcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiOiAhJHByb3BzLnNlYXJjaGFibGUgPyBfY3R4LmFyaWFBY3RpdmVEZXNjZW5kYW50IDogdW5kZWZpbmVkLFxuICAgICAgXCJhcmlhLW11bHRpc2VsZWN0YWJsZVwiOiAhJHByb3BzLnNlYXJjaGFibGUgPyBfY3R4LmFyaWFNdWx0aXNlbGVjdGFibGUgOiB1bmRlZmluZWQsXG4gICAgICByb2xlOiAhJHByb3BzLnNlYXJjaGFibGUgPyAnY29tYm9ib3gnIDogdW5kZWZpbmVkXG4gICAgfSwgISRwcm9wcy5zZWFyY2hhYmxlID8gX2N0eC5hcmlhcyA6IHt9KSwgW1xuICAgICAgY3JlYXRlQ29tbWVudFZOb2RlKFwiIFNlYXJjaCBcIiksXG4gICAgICAoJHByb3BzLm1vZGUgIT09ICd0YWdzJyAmJiAkcHJvcHMuc2VhcmNoYWJsZSAmJiAhJHByb3BzLmRpc2FibGVkKVxuICAgICAgICA/IChvcGVuQmxvY2soKSwgY3JlYXRlRWxlbWVudEJsb2NrKFwiaW5wdXRcIiwgbWVyZ2VQcm9wcyh7XG4gICAgICAgICAgICBrZXk6IDAsXG4gICAgICAgICAgICB0eXBlOiAkcHJvcHMuaW5wdXRUeXBlLFxuICAgICAgICAgICAgbW9kZWxWYWx1ZTogX2N0eC5zZWFyY2gsXG4gICAgICAgICAgICB2YWx1ZTogX2N0eC5zZWFyY2gsXG4gICAgICAgICAgICBjbGFzczogX2N0eC5jbGFzc0xpc3Quc2VhcmNoLFxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiAkcHJvcHMuYXV0b2NvbXBsZXRlLFxuICAgICAgICAgICAgaWQ6ICRwcm9wcy5zZWFyY2hhYmxlID8gJHByb3BzLmlkIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgb25JbnB1dDogX2NhY2hlWzBdIHx8IChfY2FjaGVbMF0gPSAoLi4uYXJncykgPT4gKF9jdHguaGFuZGxlU2VhcmNoSW5wdXQgJiYgX2N0eC5oYW5kbGVTZWFyY2hJbnB1dCguLi5hcmdzKSkpLFxuICAgICAgICAgICAgb25LZXlwcmVzczogX2NhY2hlWzFdIHx8IChfY2FjaGVbMV0gPSAoLi4uYXJncykgPT4gKF9jdHguaGFuZGxlS2V5cHJlc3MgJiYgX2N0eC5oYW5kbGVLZXlwcmVzcyguLi5hcmdzKSkpLFxuICAgICAgICAgICAgb25QYXN0ZTogX2NhY2hlWzJdIHx8IChfY2FjaGVbMl0gPSB3aXRoTW9kaWZpZXJzKCguLi5hcmdzKSA9PiAoX2N0eC5oYW5kbGVQYXN0ZSAmJiBfY3R4LmhhbmRsZVBhc3RlKC4uLmFyZ3MpKSwgW1wic3RvcFwiXSkpLFxuICAgICAgICAgICAgcmVmOiBcImlucHV0XCIsXG4gICAgICAgICAgICBcImFyaWEtY29udHJvbHNcIjogX2N0eC5hcmlhQ29udHJvbHMsXG4gICAgICAgICAgICBcImFyaWEtcGxhY2Vob2xkZXJcIjogX2N0eC5hcmlhUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICBcImFyaWEtZXhwYW5kZWRcIjogX2N0eC5pc09wZW4sXG4gICAgICAgICAgICBcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiOiBfY3R4LmFyaWFBY3RpdmVEZXNjZW5kYW50LFxuICAgICAgICAgICAgXCJhcmlhLW11bHRpc2VsZWN0YWJsZVwiOiBfY3R4LmFyaWFNdWx0aXNlbGVjdGFibGUsXG4gICAgICAgICAgICByb2xlOiBcImNvbWJvYm94XCJcbiAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAuLi4kcHJvcHMuYXR0cnMsXG4gICAgICAgICAgICAuLi5fY3R4LmFyaWFzLFxuICAgICAgICAgIH0pLCBudWxsLCAxNiAvKiBGVUxMX1BST1BTICovLCBfaG9pc3RlZF8zKSlcbiAgICAgICAgOiBjcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpLFxuICAgICAgY3JlYXRlQ29tbWVudFZOb2RlKFwiIFRhZ3MgKHdpdGggc2VhcmNoKSBcIiksXG4gICAgICAoJHByb3BzLm1vZGUgPT0gJ3RhZ3MnKVxuICAgICAgICA/IChvcGVuQmxvY2soKSwgY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIsIHtcbiAgICAgICAgICAgIGtleTogMSxcbiAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC50YWdzKSxcbiAgICAgICAgICAgIFwiZGF0YS10YWdzXCI6IFwiXCJcbiAgICAgICAgICB9LCBbXG4gICAgICAgICAgICAob3BlbkJsb2NrKHRydWUpLCBjcmVhdGVFbGVtZW50QmxvY2soRnJhZ21lbnQsIG51bGwsIHJlbmRlckxpc3QoX2N0eC5pdiwgKG9wdGlvbiwgaSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcInRhZ1wiLCB7XG4gICAgICAgICAgICAgICAgb3B0aW9uOiBvcHRpb24sXG4gICAgICAgICAgICAgICAgaGFuZGxlVGFnUmVtb3ZlOiBfY3R4LmhhbmRsZVRhZ1JlbW92ZSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogJHByb3BzLmRpc2FibGVkXG4gICAgICAgICAgICAgIH0sICgpID0+IFtcbiAgICAgICAgICAgICAgICAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhcInNwYW5cIiwge1xuICAgICAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKFtcbiAgICAgICAgICAgICAgICBfY3R4LmNsYXNzTGlzdC50YWcsXG4gICAgICAgICAgICAgICAgb3B0aW9uLmRpc2FibGVkID8gX2N0eC5jbGFzc0xpc3QudGFnRGlzYWJsZWQgOiBudWxsLFxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgIHRhYmluZGV4OiBcIi0xXCIsXG4gICAgICAgICAgICAgICAgICBvbktleXVwOiB3aXRoS2V5cygkZXZlbnQgPT4gKF9jdHguaGFuZGxlVGFnUmVtb3ZlKG9wdGlvbiwgJGV2ZW50KSksIFtcImVudGVyXCJdKSxcbiAgICAgICAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IF9jdHguYXJpYVRhZ0xhYmVsKF9jdHgubG9jYWxpemUob3B0aW9uWyRwcm9wcy5sYWJlbF0pKVxuICAgICAgICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgICAgICAgIGNyZWF0ZVRleHRWTm9kZSh0b0Rpc3BsYXlTdHJpbmcoX2N0eC5sb2NhbGl6ZShvcHRpb25bJHByb3BzLmxhYmVsXSkpICsgXCIgXCIsIDEgLyogVEVYVCAqLyksXG4gICAgICAgICAgICAgICAgICAoISRwcm9wcy5kaXNhYmxlZCAmJiAhb3B0aW9uLmRpc2FibGVkKVxuICAgICAgICAgICAgICAgICAgICA/IChvcGVuQmxvY2soKSwgY3JlYXRlRWxlbWVudEJsb2NrKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QudGFnUmVtb3ZlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IHdpdGhNb2RpZmllcnMoJGV2ZW50ID0+IChfY3R4LmhhbmRsZVRhZ1JlbW92ZShvcHRpb24sICRldmVudCkpLCBbXCJzdG9wXCJdKVxuICAgICAgICAgICAgICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcInNwYW5cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QudGFnUmVtb3ZlSWNvbilcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIG51bGwsIDIgLyogQ0xBU1MgKi8pXG4gICAgICAgICAgICAgICAgICAgICAgXSwgMTAgLyogQ0xBU1MsIFBST1BTICovLCBfaG9pc3RlZF81KSlcbiAgICAgICAgICAgICAgICAgICAgOiBjcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpXG4gICAgICAgICAgICAgICAgXSwgNDIgLyogQ0xBU1MsIFBST1BTLCBIWURSQVRFX0VWRU5UUyAqLywgX2hvaXN0ZWRfNCkpXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICB9KSwgMjU2IC8qIFVOS0VZRURfRlJBR01FTlQgKi8pKSxcbiAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLCB7XG4gICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC50YWdzU2VhcmNoV3JhcHBlciksXG4gICAgICAgICAgICAgIHJlZjogXCJ0YWdzXCJcbiAgICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgICAgY3JlYXRlQ29tbWVudFZOb2RlKFwiIFVzZWQgZm9yIG1lYXN1cmluZyBzZWFyY2ggd2lkdGggXCIpLFxuICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QudGFnc1NlYXJjaENvcHkpXG4gICAgICAgICAgICAgIH0sIHRvRGlzcGxheVN0cmluZyhfY3R4LnNlYXJjaCksIDMgLyogVEVYVCwgQ0xBU1MgKi8pLFxuICAgICAgICAgICAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgQWN0dWFsIHNlYXJjaCBpbnB1dCBcIiksXG4gICAgICAgICAgICAgICgkcHJvcHMuc2VhcmNoYWJsZSAmJiAhJHByb3BzLmRpc2FibGVkKVxuICAgICAgICAgICAgICAgID8gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJpbnB1dFwiLCBtZXJnZVByb3BzKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiAwLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAkcHJvcHMuaW5wdXRUeXBlLFxuICAgICAgICAgICAgICAgICAgICBtb2RlbFZhbHVlOiBfY3R4LnNlYXJjaCxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF9jdHguc2VhcmNoLFxuICAgICAgICAgICAgICAgICAgICBjbGFzczogX2N0eC5jbGFzc0xpc3QudGFnc1NlYXJjaCxcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICRwcm9wcy5zZWFyY2hhYmxlID8gJHByb3BzLmlkIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6ICRwcm9wcy5hdXRvY29tcGxldGUsXG4gICAgICAgICAgICAgICAgICAgIG9uSW5wdXQ6IF9jYWNoZVszXSB8fCAoX2NhY2hlWzNdID0gKC4uLmFyZ3MpID0+IChfY3R4LmhhbmRsZVNlYXJjaElucHV0ICYmIF9jdHguaGFuZGxlU2VhcmNoSW5wdXQoLi4uYXJncykpKSxcbiAgICAgICAgICAgICAgICAgICAgb25LZXlwcmVzczogX2NhY2hlWzRdIHx8IChfY2FjaGVbNF0gPSAoLi4uYXJncykgPT4gKF9jdHguaGFuZGxlS2V5cHJlc3MgJiYgX2N0eC5oYW5kbGVLZXlwcmVzcyguLi5hcmdzKSkpLFxuICAgICAgICAgICAgICAgICAgICBvblBhc3RlOiBfY2FjaGVbNV0gfHwgKF9jYWNoZVs1XSA9IHdpdGhNb2RpZmllcnMoKC4uLmFyZ3MpID0+IChfY3R4LmhhbmRsZVBhc3RlICYmIF9jdHguaGFuZGxlUGFzdGUoLi4uYXJncykpLCBbXCJzdG9wXCJdKSksXG4gICAgICAgICAgICAgICAgICAgIHJlZjogXCJpbnB1dFwiLFxuICAgICAgICAgICAgICAgICAgICBcImFyaWEtY29udHJvbHNcIjogX2N0eC5hcmlhQ29udHJvbHMsXG4gICAgICAgICAgICAgICAgICAgIFwiYXJpYS1wbGFjZWhvbGRlclwiOiBfY3R4LmFyaWFQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IF9jdHguaXNPcGVuLFxuICAgICAgICAgICAgICAgICAgICBcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiOiBfY3R4LmFyaWFBY3RpdmVEZXNjZW5kYW50LFxuICAgICAgICAgICAgICAgICAgICBcImFyaWEtbXVsdGlzZWxlY3RhYmxlXCI6IF9jdHguYXJpYU11bHRpc2VsZWN0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgcm9sZTogXCJjb21ib2JveFwiXG4gICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgLi4uJHByb3BzLmF0dHJzLFxuICAgICAgICAgICAgICAgIC4uLl9jdHguYXJpYXMsXG4gICAgICAgICAgICAgIH0pLCBudWxsLCAxNiAvKiBGVUxMX1BST1BTICovLCBfaG9pc3RlZF82KSlcbiAgICAgICAgICAgICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSlcbiAgICAgICAgICAgIF0sIDIgLyogQ0xBU1MgKi8pXG4gICAgICAgICAgXSwgMiAvKiBDTEFTUyAqLykpXG4gICAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICAgIGNyZWF0ZUNvbW1lbnRWTm9kZShcIiBTaW5nbGUgbGFiZWwgXCIpLFxuICAgICAgKCRwcm9wcy5tb2RlID09ICdzaW5nbGUnICYmIF9jdHguaGFzU2VsZWN0ZWQgJiYgIV9jdHguc2VhcmNoICYmIF9jdHguaXYpXG4gICAgICAgID8gcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJzaW5nbGVsYWJlbFwiLCB7XG4gICAgICAgICAgICBrZXk6IDIsXG4gICAgICAgICAgICB2YWx1ZTogX2N0eC5pdlxuICAgICAgICAgIH0sICgpID0+IFtcbiAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLCB7XG4gICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5zaW5nbGVMYWJlbClcbiAgICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LnNpbmdsZUxhYmVsVGV4dClcbiAgICAgICAgICAgICAgfSwgdG9EaXNwbGF5U3RyaW5nKF9jdHgubG9jYWxpemUoX2N0eC5pdlskcHJvcHMubGFiZWxdKSksIDMgLyogVEVYVCwgQ0xBU1MgKi8pXG4gICAgICAgICAgICBdLCAyIC8qIENMQVNTICovKVxuICAgICAgICAgIF0pXG4gICAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICAgIGNyZWF0ZUNvbW1lbnRWTm9kZShcIiBNdWx0aXBsZSBsYWJlbCBcIiksXG4gICAgICAoJHByb3BzLm1vZGUgPT0gJ211bHRpcGxlJyAmJiBfY3R4Lmhhc1NlbGVjdGVkICYmICFfY3R4LnNlYXJjaClcbiAgICAgICAgPyByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcIm11bHRpcGxlbGFiZWxcIiwge1xuICAgICAgICAgICAga2V5OiAzLFxuICAgICAgICAgICAgdmFsdWVzOiBfY3R4Lml2XG4gICAgICAgICAgfSwgKCkgPT4gW1xuICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsIHtcbiAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0Lm11bHRpcGxlTGFiZWwpLFxuICAgICAgICAgICAgICBpbm5lckhUTUw6IF9jdHgubXVsdGlwbGVMYWJlbFRleHRcbiAgICAgICAgICAgIH0sIG51bGwsIDEwIC8qIENMQVNTLCBQUk9QUyAqLywgX2hvaXN0ZWRfNylcbiAgICAgICAgICBdKVxuICAgICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSksXG4gICAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgUGxhY2Vob2xkZXIgXCIpLFxuICAgICAgKCRwcm9wcy5wbGFjZWhvbGRlciAmJiAhX2N0eC5oYXNTZWxlY3RlZCAmJiAhX2N0eC5zZWFyY2gpXG4gICAgICAgID8gcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJwbGFjZWhvbGRlclwiLCB7IGtleTogNCB9LCAoKSA9PiBbXG4gICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIiwge1xuICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QucGxhY2Vob2xkZXIpLFxuICAgICAgICAgICAgICBcImFyaWEtaGlkZGVuXCI6IFwidHJ1ZVwiXG4gICAgICAgICAgICB9LCB0b0Rpc3BsYXlTdHJpbmcoJHByb3BzLnBsYWNlaG9sZGVyKSwgMyAvKiBURVhULCBDTEFTUyAqLylcbiAgICAgICAgICBdKVxuICAgICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSksXG4gICAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgU3Bpbm5lciBcIiksXG4gICAgICAoJHByb3BzLmxvYWRpbmcgfHwgX2N0eC5yZXNvbHZpbmcpXG4gICAgICAgID8gcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJzcGlubmVyXCIsIHsga2V5OiA1IH0sICgpID0+IFtcbiAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcInNwYW5cIiwge1xuICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3Quc3Bpbm5lciksXG4gICAgICAgICAgICAgIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCJcbiAgICAgICAgICAgIH0sIG51bGwsIDIgLyogQ0xBU1MgKi8pXG4gICAgICAgICAgXSlcbiAgICAgICAgOiBjcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpLFxuICAgICAgY3JlYXRlQ29tbWVudFZOb2RlKFwiIENsZWFyIFwiKSxcbiAgICAgIChfY3R4Lmhhc1NlbGVjdGVkICYmICEkcHJvcHMuZGlzYWJsZWQgJiYgJHByb3BzLmNhbkNsZWFyICYmICFfY3R4LmJ1c3kpXG4gICAgICAgID8gcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJjbGVhclwiLCB7XG4gICAgICAgICAgICBrZXk6IDYsXG4gICAgICAgICAgICBjbGVhcjogX2N0eC5jbGVhclxuICAgICAgICAgIH0sICgpID0+IFtcbiAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcInNwYW5cIiwge1xuICAgICAgICAgICAgICBcImFyaWEtaGlkZGVuXCI6IFwidHJ1ZVwiLFxuICAgICAgICAgICAgICB0YWJpbmRleDogXCIwXCIsXG4gICAgICAgICAgICAgIHJvbGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgIFwiZGF0YS1jbGVhclwiOiBcIlwiLFxuICAgICAgICAgICAgICBcImFyaWEtcm9sZWRlc2NyaXB0aW9uXCI6IFwi4p2OXCIsXG4gICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5jbGVhciksXG4gICAgICAgICAgICAgIG9uQ2xpY2s6IF9jYWNoZVs2XSB8fCAoX2NhY2hlWzZdID0gKC4uLmFyZ3MpID0+IChfY3R4LmNsZWFyICYmIF9jdHguY2xlYXIoLi4uYXJncykpKSxcbiAgICAgICAgICAgICAgb25LZXl1cDogX2NhY2hlWzddIHx8IChfY2FjaGVbN10gPSB3aXRoS2V5cygoLi4uYXJncykgPT4gKF9jdHguY2xlYXIgJiYgX2N0eC5jbGVhciguLi5hcmdzKSksIFtcImVudGVyXCJdKSlcbiAgICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LmNsZWFySWNvbilcbiAgICAgICAgICAgICAgfSwgbnVsbCwgMiAvKiBDTEFTUyAqLylcbiAgICAgICAgICAgIF0sIDM0IC8qIENMQVNTLCBIWURSQVRFX0VWRU5UUyAqLylcbiAgICAgICAgICBdKVxuICAgICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSksXG4gICAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgQ2FyZXQgXCIpLFxuICAgICAgKCRwcm9wcy5jYXJldCAmJiAkcHJvcHMuc2hvd09wdGlvbnMpXG4gICAgICAgID8gcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJjYXJldFwiLCB7IGtleTogNyB9LCAoKSA9PiBbXG4gICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LmNhcmV0KSxcbiAgICAgICAgICAgICAgb25DbGljazogX2NhY2hlWzhdIHx8IChfY2FjaGVbOF0gPSAoLi4uYXJncykgPT4gKF9jdHguaGFuZGxlQ2FyZXRDbGljayAmJiBfY3R4LmhhbmRsZUNhcmV0Q2xpY2soLi4uYXJncykpKSxcbiAgICAgICAgICAgICAgXCJhcmlhLWhpZGRlblwiOiBcInRydWVcIlxuICAgICAgICAgICAgfSwgbnVsbCwgMiAvKiBDTEFTUyAqLylcbiAgICAgICAgICBdKVxuICAgICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSlcbiAgICBdLCAxNiAvKiBGVUxMX1BST1BTICovLCBfaG9pc3RlZF8yKSxcbiAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgT3B0aW9ucyBcIiksXG4gICAgY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsIHtcbiAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5kcm9wZG93biksXG4gICAgICB0YWJpbmRleDogXCItMVwiXG4gICAgfSwgW1xuICAgICAgcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJiZWZvcmVsaXN0XCIsIHsgb3B0aW9uczogX2N0eC5mbyB9KSxcbiAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcInVsXCIsIHtcbiAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0Lm9wdGlvbnMpLFxuICAgICAgICBpZDogX2N0eC5hcmlhQ29udHJvbHMsXG4gICAgICAgIHJvbGU6IFwibGlzdGJveFwiXG4gICAgICB9LCBbXG4gICAgICAgICgkcHJvcHMuZ3JvdXBzKVxuICAgICAgICAgID8gKG9wZW5CbG9jayh0cnVlKSwgY3JlYXRlRWxlbWVudEJsb2NrKEZyYWdtZW50LCB7IGtleTogMCB9LCByZW5kZXJMaXN0KF9jdHguZmcsIChncm91cCwgaSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhcImxpXCIsIHtcbiAgICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QuZ3JvdXApLFxuICAgICAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgICAgIGlkOiBfY3R4LmFyaWFHcm91cElkKGdyb3VwKSxcbiAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogX2N0eC5hcmlhR3JvdXBMYWJlbChfY3R4LmxvY2FsaXplKGdyb3VwWyRwcm9wcy5ncm91cExhYmVsXSkpLFxuICAgICAgICAgICAgICAgIFwiYXJpYS1zZWxlY3RlZFwiOiBfY3R4LmlzU2VsZWN0ZWQoZ3JvdXApLFxuICAgICAgICAgICAgICAgIHJvbGU6IFwib3B0aW9uXCJcbiAgICAgICAgICAgICAgfSwgW1xuICAgICAgICAgICAgICAgICghZ3JvdXAuX19DUkVBVEVfXylcbiAgICAgICAgICAgICAgICAgID8gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIiwge1xuICAgICAgICAgICAgICAgICAgICAgIGtleTogMCxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QuZ3JvdXBMYWJlbChncm91cCkpLFxuICAgICAgICAgICAgICAgICAgICAgIFwiZGF0YS1wb2ludGVkXCI6IF9jdHguaXNQb2ludGVkKGdyb3VwKSxcbiAgICAgICAgICAgICAgICAgICAgICBvbk1vdXNlZW50ZXI6ICRldmVudCA9PiAoX2N0eC5zZXRQb2ludGVyKGdyb3VwLCBpKSksXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljazogJGV2ZW50ID0+IChfY3R4LmhhbmRsZUdyb3VwQ2xpY2soZ3JvdXApKVxuICAgICAgICAgICAgICAgICAgICB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJncm91cGxhYmVsXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwOiBncm91cCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ6IF9jdHguaXNTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUG9pbnRlZDogX2N0eC5pc1BvaW50ZWRcbiAgICAgICAgICAgICAgICAgICAgICB9LCAoKSA9PiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJIVE1MOiBfY3R4LmxvY2FsaXplKGdyb3VwWyRwcm9wcy5ncm91cExhYmVsXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIG51bGwsIDggLyogUFJPUFMgKi8sIF9ob2lzdGVkXzExKVxuICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgIF0sIDQyIC8qIENMQVNTLCBQUk9QUywgSFlEUkFURV9FVkVOVFMgKi8sIF9ob2lzdGVkXzEwKSlcbiAgICAgICAgICAgICAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJ1bFwiLCB7XG4gICAgICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QuZ3JvdXBPcHRpb25zKSxcbiAgICAgICAgICAgICAgICAgIFwiYXJpYS1sYWJlbFwiOiBfY3R4LmFyaWFHcm91cExhYmVsKF9jdHgubG9jYWxpemUoZ3JvdXBbJHByb3BzLmdyb3VwTGFiZWxdKSksXG4gICAgICAgICAgICAgICAgICByb2xlOiBcImdyb3VwXCJcbiAgICAgICAgICAgICAgICB9LCBbXG4gICAgICAgICAgICAgICAgICAob3BlbkJsb2NrKHRydWUpLCBjcmVhdGVFbGVtZW50QmxvY2soRnJhZ21lbnQsIG51bGwsIHJlbmRlckxpc3QoZ3JvdXAuX19WSVNJQkxFX18sIChvcHRpb24sIGksIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJsaVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0Lm9wdGlvbihvcHRpb24sIGdyb3VwKSksXG4gICAgICAgICAgICAgICAgICAgICAgXCJkYXRhLXBvaW50ZWRcIjogX2N0eC5pc1BvaW50ZWQob3B0aW9uKSxcbiAgICAgICAgICAgICAgICAgICAgICBcImRhdGEtc2VsZWN0ZWRcIjogX2N0eC5pc1NlbGVjdGVkKG9wdGlvbikgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VlbnRlcjogJGV2ZW50ID0+IChfY3R4LnNldFBvaW50ZXIob3B0aW9uKSksXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljazogJGV2ZW50ID0+IChfY3R4LmhhbmRsZU9wdGlvbkNsaWNrKG9wdGlvbikpLFxuICAgICAgICAgICAgICAgICAgICAgIGlkOiBfY3R4LmFyaWFPcHRpb25JZChvcHRpb24pLFxuICAgICAgICAgICAgICAgICAgICAgIFwiYXJpYS1zZWxlY3RlZFwiOiBfY3R4LmlzU2VsZWN0ZWQob3B0aW9uKSxcbiAgICAgICAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogX2N0eC5hcmlhT3B0aW9uTGFiZWwoX2N0eC5sb2NhbGl6ZShvcHRpb25bJHByb3BzLmxhYmVsXSkpLFxuICAgICAgICAgICAgICAgICAgICAgIHJvbGU6IFwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclNsb3QoX2N0eC4kc2xvdHMsIFwib3B0aW9uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbjogb3B0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZDogX2N0eC5pc1NlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNQb2ludGVkOiBfY3R4LmlzUG9pbnRlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaDogX2N0eC5zZWFyY2hcbiAgICAgICAgICAgICAgICAgICAgICB9LCAoKSA9PiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIG51bGwsIHRvRGlzcGxheVN0cmluZyhfY3R4LmxvY2FsaXplKG9wdGlvblskcHJvcHMubGFiZWxdKSksIDEgLyogVEVYVCAqLylcbiAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICBdLCA0MiAvKiBDTEFTUywgUFJPUFMsIEhZRFJBVEVfRVZFTlRTICovLCBfaG9pc3RlZF8xMykpXG4gICAgICAgICAgICAgICAgICB9KSwgMTI4IC8qIEtFWUVEX0ZSQUdNRU5UICovKSlcbiAgICAgICAgICAgICAgICBdLCAxMCAvKiBDTEFTUywgUFJPUFMgKi8sIF9ob2lzdGVkXzEyKVxuICAgICAgICAgICAgICBdLCAxMCAvKiBDTEFTUywgUFJPUFMgKi8sIF9ob2lzdGVkXzkpKVxuICAgICAgICAgICAgfSksIDEyOCAvKiBLRVlFRF9GUkFHTUVOVCAqLykpXG4gICAgICAgICAgOiAob3BlbkJsb2NrKHRydWUpLCBjcmVhdGVFbGVtZW50QmxvY2soRnJhZ21lbnQsIHsga2V5OiAxIH0sIHJlbmRlckxpc3QoX2N0eC5mbywgKG9wdGlvbiwgaSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhcImxpXCIsIHtcbiAgICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3Qub3B0aW9uKG9wdGlvbikpLFxuICAgICAgICAgICAgICAgIFwiZGF0YS1wb2ludGVkXCI6IF9jdHguaXNQb2ludGVkKG9wdGlvbiksXG4gICAgICAgICAgICAgICAgXCJkYXRhLXNlbGVjdGVkXCI6IF9jdHguaXNTZWxlY3RlZChvcHRpb24pIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICBvbk1vdXNlZW50ZXI6ICRldmVudCA9PiAoX2N0eC5zZXRQb2ludGVyKG9wdGlvbikpLFxuICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICRldmVudCA9PiAoX2N0eC5oYW5kbGVPcHRpb25DbGljayhvcHRpb24pKSxcbiAgICAgICAgICAgICAgICBpZDogX2N0eC5hcmlhT3B0aW9uSWQob3B0aW9uKSxcbiAgICAgICAgICAgICAgICBcImFyaWEtc2VsZWN0ZWRcIjogX2N0eC5pc1NlbGVjdGVkKG9wdGlvbiksXG4gICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IF9jdHguYXJpYU9wdGlvbkxhYmVsKF9jdHgubG9jYWxpemUob3B0aW9uWyRwcm9wcy5sYWJlbF0pKSxcbiAgICAgICAgICAgICAgICByb2xlOiBcIm9wdGlvblwiXG4gICAgICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgICAgICByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcIm9wdGlvblwiLCB7XG4gICAgICAgICAgICAgICAgICBvcHRpb246IG9wdGlvbixcbiAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ6IF9jdHguaXNTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgIGlzUG9pbnRlZDogX2N0eC5pc1BvaW50ZWQsXG4gICAgICAgICAgICAgICAgICBzZWFyY2g6IF9jdHguc2VhcmNoXG4gICAgICAgICAgICAgICAgfSwgKCkgPT4gW1xuICAgICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCBudWxsLCB0b0Rpc3BsYXlTdHJpbmcoX2N0eC5sb2NhbGl6ZShvcHRpb25bJHByb3BzLmxhYmVsXSkpLCAxIC8qIFRFWFQgKi8pXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgXSwgNDIgLyogQ0xBU1MsIFBST1BTLCBIWURSQVRFX0VWRU5UUyAqLywgX2hvaXN0ZWRfMTQpKVxuICAgICAgICAgICAgfSksIDEyOCAvKiBLRVlFRF9GUkFHTUVOVCAqLykpXG4gICAgICBdLCAxMCAvKiBDTEFTUywgUFJPUFMgKi8sIF9ob2lzdGVkXzgpLFxuICAgICAgKF9jdHgubm9PcHRpb25zKVxuICAgICAgICA/IHJlbmRlclNsb3QoX2N0eC4kc2xvdHMsIFwibm9vcHRpb25zXCIsIHsga2V5OiAwIH0sICgpID0+IFtcbiAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLCB7XG4gICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5ub09wdGlvbnMpLFxuICAgICAgICAgICAgICBpbm5lckhUTUw6IF9jdHgubG9jYWxpemUoJHByb3BzLm5vT3B0aW9uc1RleHQpXG4gICAgICAgICAgICB9LCBudWxsLCAxMCAvKiBDTEFTUywgUFJPUFMgKi8sIF9ob2lzdGVkXzE1KVxuICAgICAgICAgIF0pXG4gICAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICAgIChfY3R4Lm5vUmVzdWx0cylcbiAgICAgICAgPyByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcIm5vcmVzdWx0c1wiLCB7IGtleTogMSB9LCAoKSA9PiBbXG4gICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIiwge1xuICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3Qubm9SZXN1bHRzKSxcbiAgICAgICAgICAgICAgaW5uZXJIVE1MOiBfY3R4LmxvY2FsaXplKCRwcm9wcy5ub1Jlc3VsdHNUZXh0KVxuICAgICAgICAgICAgfSwgbnVsbCwgMTAgLyogQ0xBU1MsIFBST1BTICovLCBfaG9pc3RlZF8xNilcbiAgICAgICAgICBdKVxuICAgICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSksXG4gICAgICAoJHByb3BzLmluZmluaXRlICYmIF9jdHguaGFzTW9yZSlcbiAgICAgICAgPyAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLCB7XG4gICAgICAgICAgICBrZXk6IDIsXG4gICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QuaW5pZmluaXRlKSxcbiAgICAgICAgICAgIHJlZjogXCJpbmZpbml0ZUxvYWRlclwiXG4gICAgICAgICAgfSwgW1xuICAgICAgICAgICAgcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJpbmZpbml0ZVwiLCB7fSwgKCkgPT4gW1xuICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QuaW5pZmluaXRlU3Bpbm5lcilcbiAgICAgICAgICAgICAgfSwgbnVsbCwgMiAvKiBDTEFTUyAqLylcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgXSwgMiAvKiBDTEFTUyAqLykpXG4gICAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICAgIHJlbmRlclNsb3QoX2N0eC4kc2xvdHMsIFwiYWZ0ZXJsaXN0XCIsIHsgb3B0aW9uczogX2N0eC5mbyB9KVxuICAgIF0sIDIgLyogQ0xBU1MgKi8pLFxuICAgIGNyZWF0ZUNvbW1lbnRWTm9kZShcIiBIYWNreSBpbnB1dCBlbGVtZW50IHRvIHNob3cgSFRNTDUgcmVxdWlyZWQgd2FybmluZyBcIiksXG4gICAgKCRwcm9wcy5yZXF1aXJlZClcbiAgICAgID8gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJpbnB1dFwiLCB7XG4gICAgICAgICAga2V5OiAwLFxuICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5mYWtlSW5wdXQpLFxuICAgICAgICAgIHRhYmluZGV4OiBcIi0xXCIsXG4gICAgICAgICAgdmFsdWU6IF9jdHgudGV4dFZhbHVlLFxuICAgICAgICAgIHJlcXVpcmVkOiBcIlwiXG4gICAgICAgIH0sIG51bGwsIDEwIC8qIENMQVNTLCBQUk9QUyAqLywgX2hvaXN0ZWRfMTcpKVxuICAgICAgOiBjcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpLFxuICAgIGNyZWF0ZUNvbW1lbnRWTm9kZShcIiBOYXRpdmUgaW5wdXQgc3VwcG9ydCBcIiksXG4gICAgKCRwcm9wcy5uYXRpdmVTdXBwb3J0KVxuICAgICAgPyAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhGcmFnbWVudCwgeyBrZXk6IDEgfSwgW1xuICAgICAgICAgICgkcHJvcHMubW9kZSA9PSAnc2luZ2xlJylcbiAgICAgICAgICAgID8gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAga2V5OiAwLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgICAgICAgbmFtZTogJHByb3BzLm5hbWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IF9jdHgucGxhaW5WYWx1ZSAhPT0gdW5kZWZpbmVkID8gX2N0eC5wbGFpblZhbHVlIDogJydcbiAgICAgICAgICAgICAgfSwgbnVsbCwgOCAvKiBQUk9QUyAqLywgX2hvaXN0ZWRfMTgpKVxuICAgICAgICAgICAgOiAob3BlbkJsb2NrKHRydWUpLCBjcmVhdGVFbGVtZW50QmxvY2soRnJhZ21lbnQsIHsga2V5OiAxIH0sIHJlbmRlckxpc3QoX2N0eC5wbGFpblZhbHVlLCAodiwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhcImlucHV0XCIsIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgICAgICAgICBuYW1lOiBgJHskcHJvcHMubmFtZX1bXWAsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogdixcbiAgICAgICAgICAgICAgICAgIGtleTogaVxuICAgICAgICAgICAgICAgIH0sIG51bGwsIDggLyogUFJPUFMgKi8sIF9ob2lzdGVkXzE5KSlcbiAgICAgICAgICAgICAgfSksIDEyOCAvKiBLRVlFRF9GUkFHTUVOVCAqLykpXG4gICAgICAgIF0sIDY0IC8qIFNUQUJMRV9GUkFHTUVOVCAqLykpXG4gICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSksXG4gICAgY3JlYXRlQ29tbWVudFZOb2RlKFwiIFNjcmVlbiByZWFkZXIgYXNzaXN0aXZlIHRleHQgXCIpLFxuICAgICgkcHJvcHMuc2VhcmNoYWJsZSAmJiBfY3R4Lmhhc1NlbGVjdGVkKVxuICAgICAgPyAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLCB7XG4gICAgICAgICAga2V5OiAyLFxuICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5hc3Npc3QpLFxuICAgICAgICAgIGlkOiBfY3R4LmFyaWFBc3Npc3QsXG4gICAgICAgICAgXCJhcmlhLWhpZGRlblwiOiBcInRydWVcIlxuICAgICAgICB9LCB0b0Rpc3BsYXlTdHJpbmcoX2N0eC5hcmlhTGFiZWwpLCAxMSAvKiBURVhULCBDTEFTUywgUFJPUFMgKi8sIF9ob2lzdGVkXzIwKSlcbiAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgQ3JlYXRlIGhlaWdodCBmb3IgZW1wdHkgaW5wdXQgXCIpLFxuICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLCB7XG4gICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3Quc3BhY2VyKVxuICAgIH0sIG51bGwsIDIgLyogQ0xBU1MgKi8pXG4gIF0sIDQyIC8qIENMQVNTLCBQUk9QUywgSFlEUkFURV9FVkVOVFMgKi8sIF9ob2lzdGVkXzEpKVxufVxuXG5zY3JpcHQucmVuZGVyID0gcmVuZGVyO1xuc2NyaXB0Ll9fZmlsZSA9IFwic3JjL011bHRpc2VsZWN0LnZ1ZVwiO1xuXG5leHBvcnQgeyBzY3JpcHQgYXMgZGVmYXVsdCB9O1xuIiwiLyohXG4gKiBBcGV4Q2hhcnRzIHYzLjQwLjBcbiAqIChjKSAyMDE4LTIwMjMgQXBleENoYXJ0c1xuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICovXG5cInVzZSBzdHJpY3RcIjtmdW5jdGlvbiB0KHQsZSl7dmFyIGk9T2JqZWN0LmtleXModCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtlJiYoYT1hLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxlKS5lbnVtZXJhYmxlfSkpKSxpLnB1c2guYXBwbHkoaSxhKX1yZXR1cm4gaX1mdW5jdGlvbiBlKGUpe2Zvcih2YXIgaT0xO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspe3ZhciBhPW51bGwhPWFyZ3VtZW50c1tpXT9hcmd1bWVudHNbaV06e307aSUyP3QoT2JqZWN0KGEpLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtvKGUsdCxhW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGEpKTp0KE9iamVjdChhKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEsdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGkodCl7cmV0dXJuIGk9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgdH0saSh0KX1mdW5jdGlvbiBhKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX1mdW5jdGlvbiBzKHQsZSl7Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBhPWVbaV07YS5lbnVtZXJhYmxlPWEuZW51bWVyYWJsZXx8ITEsYS5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gYSYmKGEud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGEua2V5LGEpfX1mdW5jdGlvbiByKHQsZSxpKXtyZXR1cm4gZSYmcyh0LnByb3RvdHlwZSxlKSxpJiZzKHQsaSksdH1mdW5jdGlvbiBvKHQsZSxpKXtyZXR1cm4gZSBpbiB0P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOmksZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTp0W2VdPWksdH1mdW5jdGlvbiBuKHQsZSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSYmbnVsbCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxlJiZoKHQsZSl9ZnVuY3Rpb24gbCh0KXtyZXR1cm4gbD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKHQpe3JldHVybiB0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpfSxsKHQpfWZ1bmN0aW9uIGgodCxlKXtyZXR1cm4gaD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX19wcm90b19fPWUsdH0saCh0LGUpfWZ1bmN0aW9uIGModCxlKXtpZihlJiYoXCJvYmplY3RcIj09dHlwZW9mIGV8fFwiZnVuY3Rpb25cIj09dHlwZW9mIGUpKXJldHVybiBlO2lmKHZvaWQgMCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO3JldHVybiBmdW5jdGlvbih0KXtpZih2b2lkIDA9PT10KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4gdH0odCl9ZnVuY3Rpb24gZCh0KXt2YXIgZT1mdW5jdGlvbigpe2lmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2godCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBpLGE9bCh0KTtpZihlKXt2YXIgcz1sKHRoaXMpLmNvbnN0cnVjdG9yO2k9UmVmbGVjdC5jb25zdHJ1Y3QoYSxhcmd1bWVudHMscyl9ZWxzZSBpPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBjKHRoaXMsaSl9fWZ1bmN0aW9uIGcodCxlKXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdH0odCl8fGZ1bmN0aW9uKHQsZSl7dmFyIGk9bnVsbD09dD9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFtcIkBAaXRlcmF0b3JcIl07aWYobnVsbD09aSlyZXR1cm47dmFyIGEscyxyPVtdLG89ITAsbj0hMTt0cnl7Zm9yKGk9aS5jYWxsKHQpOyEobz0oYT1pLm5leHQoKSkuZG9uZSkmJihyLnB1c2goYS52YWx1ZSksIWV8fHIubGVuZ3RoIT09ZSk7bz0hMCk7fWNhdGNoKHQpe249ITAscz10fWZpbmFsbHl7dHJ5e298fG51bGw9PWkucmV0dXJufHxpLnJldHVybigpfWZpbmFsbHl7aWYobil0aHJvdyBzfX1yZXR1cm4gcn0odCxlKXx8cCh0LGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gZih0KX0odCl8fGZ1bmN0aW9uKHQpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPXRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9dFtcIkBAaXRlcmF0b3JcIl0pcmV0dXJuIEFycmF5LmZyb20odCl9KHQpfHxwKHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIHAodCxlKXtpZih0KXtpZihcInN0cmluZ1wiPT10eXBlb2YgdClyZXR1cm4gZih0LGUpO3ZhciBpPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm5cIk9iamVjdFwiPT09aSYmdC5jb25zdHJ1Y3RvciYmKGk9dC5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09aXx8XCJTZXRcIj09PWk/QXJyYXkuZnJvbSh0KTpcIkFyZ3VtZW50c1wiPT09aXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaSk/Zih0LGUpOnZvaWQgMH19ZnVuY3Rpb24gZih0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgaT0wLGE9bmV3IEFycmF5KGUpO2k8ZTtpKyspYVtpXT10W2ldO3JldHVybiBhfXZhciB4PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe2EodGhpcyx0KX1yZXR1cm4gcih0LFt7a2V5Olwic2hhZGVSR0JDb2xvclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9ZS5zcGxpdChcIixcIiksYT10PDA/MDoyNTUscz10PDA/LTEqdDp0LHI9cGFyc2VJbnQoaVswXS5zbGljZSg0KSwxMCksbz1wYXJzZUludChpWzFdLDEwKSxuPXBhcnNlSW50KGlbMl0sMTApO3JldHVyblwicmdiKFwiKyhNYXRoLnJvdW5kKChhLXIpKnMpK3IpK1wiLFwiKyhNYXRoLnJvdW5kKChhLW8pKnMpK28pK1wiLFwiKyhNYXRoLnJvdW5kKChhLW4pKnMpK24pK1wiKVwifX0se2tleTpcInNoYWRlSGV4Q29sb3JcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXBhcnNlSW50KGUuc2xpY2UoMSksMTYpLGE9dDwwPzA6MjU1LHM9dDwwPy0xKnQ6dCxyPWk+PjE2LG89aT4+OCYyNTUsbj0yNTUmaTtyZXR1cm5cIiNcIisoMTY3NzcyMTYrNjU1MzYqKE1hdGgucm91bmQoKGEtcikqcykrcikrMjU2KihNYXRoLnJvdW5kKChhLW8pKnMpK28pKyhNYXRoLnJvdW5kKChhLW4pKnMpK24pKS50b1N0cmluZygxNikuc2xpY2UoMSl9fSx7a2V5Olwic2hhZGVDb2xvclwiLHZhbHVlOmZ1bmN0aW9uKGUsaSl7cmV0dXJuIHQuaXNDb2xvckhleChpKT90aGlzLnNoYWRlSGV4Q29sb3IoZSxpKTp0aGlzLnNoYWRlUkdCQ29sb3IoZSxpKX19XSxbe2tleTpcImJpbmRcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KGUsYXJndW1lbnRzKX19fSx7a2V5OlwiaXNPYmplY3RcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmXCJvYmplY3RcIj09PWkodCkmJiFBcnJheS5pc0FycmF5KHQpJiZudWxsIT10fX0se2tleTpcImlzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpPT09XCJbb2JqZWN0IFwiK3QrXCJdXCJ9fSx7a2V5OlwibGlzdFRvQXJyYXlcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPVtdO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspaVtlXT10W2VdO3JldHVybiBpfX0se2tleTpcImV4dGVuZFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcztcImZ1bmN0aW9uXCIhPXR5cGVvZiBPYmplY3QuYXNzaWduJiYoT2JqZWN0LmFzc2lnbj1mdW5jdGlvbih0KXtpZihudWxsPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0byBvYmplY3RcIik7Zm9yKHZhciBlPU9iamVjdCh0KSxpPTE7aTxhcmd1bWVudHMubGVuZ3RoO2krKyl7dmFyIGE9YXJndW1lbnRzW2ldO2lmKG51bGwhPWEpZm9yKHZhciBzIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShzKSYmKGVbc109YVtzXSl9cmV0dXJuIGV9KTt2YXIgYT1PYmplY3QuYXNzaWduKHt9LHQpO3JldHVybiB0aGlzLmlzT2JqZWN0KHQpJiZ0aGlzLmlzT2JqZWN0KGUpJiZPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbihzKXtpLmlzT2JqZWN0KGVbc10pJiZzIGluIHQ/YVtzXT1pLmV4dGVuZCh0W3NdLGVbc10pOk9iamVjdC5hc3NpZ24oYSxvKHt9LHMsZVtzXSkpfSkpLGF9fSx7a2V5OlwiZXh0ZW5kQXJyYXlcIix2YWx1ZTpmdW5jdGlvbihlLGkpe3ZhciBhPVtdO3JldHVybiBlLm1hcCgoZnVuY3Rpb24oZSl7YS5wdXNoKHQuZXh0ZW5kKGksZSkpfSkpLGU9YX19LHtrZXk6XCJtb250aE1vZFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0JTEyfX0se2tleTpcImNsb25lXCIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYodC5pcyhcIkFycmF5XCIsZSkpe2Zvcih2YXIgYT1bXSxzPTA7czxlLmxlbmd0aDtzKyspYVtzXT10aGlzLmNsb25lKGVbc10pO3JldHVybiBhfWlmKHQuaXMoXCJOdWxsXCIsZSkpcmV0dXJuIG51bGw7aWYodC5pcyhcIkRhdGVcIixlKSlyZXR1cm4gZTtpZihcIm9iamVjdFwiPT09aShlKSl7dmFyIHI9e307Zm9yKHZhciBvIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShvKSYmKHJbb109dGhpcy5jbG9uZShlW29dKSk7cmV0dXJuIHJ9cmV0dXJuIGV9fSx7a2V5OlwibG9nMTBcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5sb2codCkvTWF0aC5MTjEwfX0se2tleTpcInJvdW5kVG9CYXNlMTBcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZzEwKHQpKSl9fSx7a2V5Olwicm91bmRUb0Jhc2VcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLnBvdyhlLE1hdGguZmxvb3IoTWF0aC5sb2codCkvTWF0aC5sb2coZSkpKX19LHtrZXk6XCJwYXJzZU51bWJlclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT09dD90OnBhcnNlRmxvYXQodCl9fSx7a2V5OlwicmFuZG9tSWRcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybihNYXRoLnJhbmRvbSgpKzEpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoNCl9fSx7a2V5Olwibm9FeHBvbmVudHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1TdHJpbmcodCkuc3BsaXQoL1tlRV0vKTtpZigxPT09ZS5sZW5ndGgpcmV0dXJuIGVbMF07dmFyIGk9XCJcIixhPXQ8MD9cIi1cIjpcIlwiLHM9ZVswXS5yZXBsYWNlKFwiLlwiLFwiXCIpLHI9TnVtYmVyKGVbMV0pKzE7aWYocjwwKXtmb3IoaT1hK1wiMC5cIjtyKys7KWkrPVwiMFwiO3JldHVybiBpK3MucmVwbGFjZSgvXi0vLFwiXCIpfWZvcihyLT1zLmxlbmd0aDtyLS07KWkrPVwiMFwiO3JldHVybiBzK2l9fSx7a2V5OlwiZ2V0RGltZW5zaW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWdldENvbXB1dGVkU3R5bGUodCxudWxsKSxpPXQuY2xpZW50SGVpZ2h0LGE9dC5jbGllbnRXaWR0aDtyZXR1cm4gaS09cGFyc2VGbG9hdChlLnBhZGRpbmdUb3ApK3BhcnNlRmxvYXQoZS5wYWRkaW5nQm90dG9tKSxbYS09cGFyc2VGbG9hdChlLnBhZGRpbmdMZWZ0KStwYXJzZUZsb2F0KGUucGFkZGluZ1JpZ2h0KSxpXX19LHtrZXk6XCJnZXRCb3VuZGluZ0NsaWVudFJlY3RcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybnt0b3A6ZS50b3AscmlnaHQ6ZS5yaWdodCxib3R0b206ZS5ib3R0b20sbGVmdDplLmxlZnQsd2lkdGg6dC5jbGllbnRXaWR0aCxoZWlnaHQ6dC5jbGllbnRIZWlnaHQseDplLmxlZnQseTplLnRvcH19fSx7a2V5OlwiZ2V0TGFyZ2VzdFN0cmluZ0Zyb21BcnJcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJihlPWUucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0Lmxlbmd0aD5lLmxlbmd0aD90OmV9KSkpLHQubGVuZ3RoPmUubGVuZ3RoP3Q6ZX0pLDApfX0se2tleTpcImhleFRvUmdiYVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOlwiIzk5OTk5OVwiLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOi42O1wiI1wiIT09dC5zdWJzdHJpbmcoMCwxKSYmKHQ9XCIjOTk5OTk5XCIpO3ZhciBpPXQucmVwbGFjZShcIiNcIixcIlwiKTtpPWkubWF0Y2gobmV3IFJlZ0V4cChcIigue1wiK2kubGVuZ3RoLzMrXCJ9KVwiLFwiZ1wiKSk7Zm9yKHZhciBhPTA7YTxpLmxlbmd0aDthKyspaVthXT1wYXJzZUludCgxPT09aVthXS5sZW5ndGg/aVthXStpW2FdOmlbYV0sMTYpO3JldHVybiB2b2lkIDAhPT1lJiZpLnB1c2goZSksXCJyZ2JhKFwiK2kuam9pbihcIixcIikrXCIpXCJ9fSx7a2V5OlwiZ2V0T3BhY2l0eUZyb21SR0JBXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlRmxvYXQodC5yZXBsYWNlKC9eLiosKC4rKVxcKS8sXCIkMVwiKSl9fSx7a2V5OlwicmdiMmhleFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybih0PXQubWF0Y2goL15yZ2JhP1tcXHMrXT9cXChbXFxzK10/KFxcZCspW1xccytdPyxbXFxzK10/KFxcZCspW1xccytdPyxbXFxzK10/KFxcZCspW1xccytdPy9pKSkmJjQ9PT10Lmxlbmd0aD9cIiNcIisoXCIwXCIrcGFyc2VJbnQodFsxXSwxMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtMikrKFwiMFwiK3BhcnNlSW50KHRbMl0sMTApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpKyhcIjBcIitwYXJzZUludCh0WzNdLDEwKS50b1N0cmluZygxNikpLnNsaWNlKC0yKTpcIlwifX0se2tleTpcImlzQ29sb3JIZXhcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4vKF4jWzAtOUEtRl17Nn0kKXwoXiNbMC05QS1GXXszfSQpfCheI1swLTlBLUZdezh9JCkvaS50ZXN0KHQpfX0se2tleTpcImdldFBvbHlnb25Qb3NcIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaT1bXSxhPTIqTWF0aC5QSS9lLHM9MDtzPGU7cysrKXt2YXIgcj17fTtyLng9dCpNYXRoLnNpbihzKmEpLHIueT0tdCpNYXRoLmNvcyhzKmEpLGkucHVzaChyKX1yZXR1cm4gaX19LHtrZXk6XCJwb2xhclRvQ2FydGVzaWFuXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9KGEtOTApKk1hdGguUEkvMTgwO3JldHVybnt4OnQraSpNYXRoLmNvcyhzKSx5OmUraSpNYXRoLnNpbihzKX19fSx7a2V5OlwiZXNjYXBlU3RyaW5nXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOlwieFwiLGk9dC50b1N0cmluZygpLnNsaWNlKCk7cmV0dXJuIGk9aS5yZXBsYWNlKC9bYCB+IUAjJCVeJiooKXwrXFw9Pzs6J1wiLC48Pnt9W1xcXVxcXFwvXS9naSxlKX19LHtrZXk6XCJuZWdUb1plcm9cIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdDwwPzA6dH19LHtrZXk6XCJtb3ZlSW5kZXhJbkFycmF5XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe2lmKGk+PXQubGVuZ3RoKWZvcih2YXIgYT1pLXQubGVuZ3RoKzE7YS0tOyl0LnB1c2godm9pZCAwKTtyZXR1cm4gdC5zcGxpY2UoaSwwLHQuc3BsaWNlKGUsMSlbMF0pLHR9fSx7a2V5OlwiZXh0cmFjdE51bWJlclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBwYXJzZUZsb2F0KHQucmVwbGFjZSgvW15cXGQuXSovZyxcIlwiKSl9fSx7a2V5OlwiZmluZEFuY2VzdG9yXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IoOyh0PXQucGFyZW50RWxlbWVudCkmJiF0LmNsYXNzTGlzdC5jb250YWlucyhlKTspO3JldHVybiB0fX0se2tleTpcInNldEVMc3R5bGVzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGkgaW4gZSllLmhhc093blByb3BlcnR5KGkpJiYodC5zdHlsZS5rZXk9ZVtpXSl9fSx7a2V5OlwiaXNOdW1iZXJcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4haXNOYU4odCkmJnBhcnNlRmxvYXQoTnVtYmVyKHQpKT09PXQmJiFpc05hTihwYXJzZUludCh0LDEwKSl9fSx7a2V5OlwiaXNGbG9hdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBOdW1iZXIodCk9PT10JiZ0JTEhPTB9fSx7a2V5OlwiaXNTYWZhcmlcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybi9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCl9fSx7a2V5OlwiaXNGaXJlZm94XCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJmaXJlZm94XCIpPi0xfX0se2tleTpcImlzSUUxMVwiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoLTEhPT13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKFwiTVNJRVwiKXx8d2luZG93Lm5hdmlnYXRvci5hcHBWZXJzaW9uLmluZGV4T2YoXCJUcmlkZW50L1wiKT4tMSlyZXR1cm4hMH19LHtrZXk6XCJpc0lFXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCxlPXQuaW5kZXhPZihcIk1TSUUgXCIpO2lmKGU+MClyZXR1cm4gcGFyc2VJbnQodC5zdWJzdHJpbmcoZSs1LHQuaW5kZXhPZihcIi5cIixlKSksMTApO2lmKHQuaW5kZXhPZihcIlRyaWRlbnQvXCIpPjApe3ZhciBpPXQuaW5kZXhPZihcInJ2OlwiKTtyZXR1cm4gcGFyc2VJbnQodC5zdWJzdHJpbmcoaSszLHQuaW5kZXhPZihcIi5cIixpKSksMTApfXZhciBhPXQuaW5kZXhPZihcIkVkZ2UvXCIpO3JldHVybiBhPjAmJnBhcnNlSW50KHQuc3Vic3RyaW5nKGErNSx0LmluZGV4T2YoXCIuXCIsYSkpLDEwKX19XSksdH0oKSxiPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMuc2V0RWFzaW5nRnVuY3Rpb25zKCl9cmV0dXJuIHIodCxbe2tleTpcInNldEVhc2luZ0Z1bmN0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ7aWYoIXRoaXMudy5nbG9iYWxzLmVhc2luZyl7c3dpdGNoKHRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lYXNpbmcpe2Nhc2VcImxpbmVhclwiOnQ9XCItXCI7YnJlYWs7Y2FzZVwiZWFzZWluXCI6dD1cIjxcIjticmVhaztjYXNlXCJlYXNlb3V0XCI6dD1cIj5cIjticmVhaztjYXNlXCJlYXNlaW5vdXRcIjpkZWZhdWx0OnQ9XCI8PlwiO2JyZWFrO2Nhc2VcInN3aW5nXCI6dD1mdW5jdGlvbih0KXt2YXIgZT0xLjcwMTU4O3JldHVybih0LT0xKSp0KigoZSsxKSp0K2UpKzF9O2JyZWFrO2Nhc2VcImJvdW5jZVwiOnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQ8MS8yLjc1PzcuNTYyNSp0KnQ6dDwyLzIuNzU/Ny41NjI1Kih0LT0xLjUvMi43NSkqdCsuNzU6dDwyLjUvMi43NT83LjU2MjUqKHQtPTIuMjUvMi43NSkqdCsuOTM3NTo3LjU2MjUqKHQtPTIuNjI1LzIuNzUpKnQrLjk4NDM3NX07YnJlYWs7Y2FzZVwiZWxhc3RpY1wiOnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT0hIXQ/dDpNYXRoLnBvdygyLC0xMCp0KSpNYXRoLnNpbigodC0uMDc1KSooMipNYXRoLlBJKS8uMykrMX19dGhpcy53Lmdsb2JhbHMuZWFzaW5nPXR9fX0se2tleTpcImFuaW1hdGVMaW5lXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dC5hdHRyKGUpLmFuaW1hdGUoYSkuYXR0cihpKX19LHtrZXk6XCJhbmltYXRlTWFya2VyXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzLHIpe2V8fChlPTApLHQuYXR0cih7cjplLHdpZHRoOmUsaGVpZ2h0OmV9KS5hbmltYXRlKGEscykuYXR0cih7cjppLHdpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0fSkuYWZ0ZXJBbGwoKGZ1bmN0aW9uKCl7cigpfSkpfX0se2tleTpcImFuaW1hdGVDaXJjbGVcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMpe3QuYXR0cih7cjplLnIsY3g6ZS5jeCxjeTplLmN5fSkuYW5pbWF0ZShhLHMpLmF0dHIoe3I6aS5yLGN4OmkuY3gsY3k6aS5jeX0pfX0se2tleTpcImFuaW1hdGVSZWN0XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzKXt0LmF0dHIoZSkuYW5pbWF0ZShhKS5hdHRyKGkpLmFmdGVyQWxsKChmdW5jdGlvbigpe3JldHVybiBzKCl9KSl9fSx7a2V5OlwiYW5pbWF0ZVBhdGhzR3JhZHVhbGx5XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5lbCxpPXQucmVhbEluZGV4LGE9dC5qLHM9dC5maWxsLHI9dC5wYXRoRnJvbSxvPXQucGF0aFRvLG49dC5zcGVlZCxsPXQuZGVsYXksaD10aGlzLncsYz0wO2guY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuYW5pbWF0ZUdyYWR1YWxseS5lbmFibGVkJiYoYz1oLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmFuaW1hdGVHcmFkdWFsbHkuZGVsYXkpLGguY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkJiZoLmdsb2JhbHMuZGF0YUNoYW5nZWQmJlwiYmFyXCIhPT1oLmNvbmZpZy5jaGFydC50eXBlJiYoYz0wKSx0aGlzLm1vcnBoU1ZHKGUsaSxhLFwibGluZVwiIT09aC5jb25maWcuY2hhcnQudHlwZXx8aC5nbG9iYWxzLmNvbWJvQ2hhcnRzP3M6XCJzdHJva2VcIixyLG8sbixsKmMpfX0se2tleTpcInNob3dEZWxheWVkRWxlbWVudHNcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudy5nbG9iYWxzLmRlbGF5ZWRFbGVtZW50cy5mb3JFYWNoKChmdW5jdGlvbih0KXt0LmVsLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCIpfSkpfX0se2tleTpcImFuaW1hdGlvbkNvbXBsZXRlZFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztlLmdsb2JhbHMuYW5pbWF0aW9uRW5kZWR8fChlLmdsb2JhbHMuYW5pbWF0aW9uRW5kZWQ9ITAsdGhpcy5zaG93RGVsYXllZEVsZW1lbnRzKCksXCJmdW5jdGlvblwiPT10eXBlb2YgZS5jb25maWcuY2hhcnQuZXZlbnRzLmFuaW1hdGlvbkVuZCYmZS5jb25maWcuY2hhcnQuZXZlbnRzLmFuaW1hdGlvbkVuZCh0aGlzLmN0eCx7ZWw6dCx3OmV9KSl9fSx7a2V5OlwibW9ycGhTVkdcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscixvLG4pe3ZhciBsPXRoaXMsaD10aGlzLnc7c3x8KHM9dC5hdHRyKFwicGF0aEZyb21cIikpLHJ8fChyPXQuYXR0cihcInBhdGhUb1wiKSk7dmFyIGM9ZnVuY3Rpb24odCl7cmV0dXJuXCJyYWRhclwiPT09aC5jb25maWcuY2hhcnQudHlwZSYmKG89MSksXCJNIDAgXCIuY29uY2F0KGguZ2xvYmFscy5ncmlkSGVpZ2h0KX07KCFzfHxzLmluZGV4T2YoXCJ1bmRlZmluZWRcIik+LTF8fHMuaW5kZXhPZihcIk5hTlwiKT4tMSkmJihzPWMoKSksKCFyfHxyLmluZGV4T2YoXCJ1bmRlZmluZWRcIik+LTF8fHIuaW5kZXhPZihcIk5hTlwiKT4tMSkmJihyPWMoKSksaC5nbG9iYWxzLnNob3VsZEFuaW1hdGV8fChvPTEpLHQucGxvdChzKS5hbmltYXRlKDEsaC5nbG9iYWxzLmVhc2luZyxuKS5wbG90KHMpLmFuaW1hdGUobyxoLmdsb2JhbHMuZWFzaW5nLG4pLnBsb3QocikuYWZ0ZXJBbGwoKGZ1bmN0aW9uKCl7eC5pc051bWJlcihpKT9pPT09aC5nbG9iYWxzLnNlcmllc1toLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoLTImJmguZ2xvYmFscy5zaG91bGRBbmltYXRlJiZsLmFuaW1hdGlvbkNvbXBsZXRlZCh0KTpcIm5vbmVcIiE9PWEmJmguZ2xvYmFscy5zaG91bGRBbmltYXRlJiYoIWguZ2xvYmFscy5jb21ib0NoYXJ0cyYmZT09PWguZ2xvYmFscy5zZXJpZXMubGVuZ3RoLTF8fGguZ2xvYmFscy5jb21ib0NoYXJ0cykmJmwuYW5pbWF0aW9uQ29tcGxldGVkKHQpLGwuc2hvd0RlbGF5ZWRFbGVtZW50cygpfSkpfX1dKSx0fSgpLHY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImdldERlZmF1bHRGaWx0ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudzt0LnVuZmlsdGVyKCEwKSwobmV3IHdpbmRvdy5TVkcuRmlsdGVyKS5zaXplKFwiMTIwJVwiLFwiMTgwJVwiLFwiLTUlXCIsXCItNDAlXCIpLFwibm9uZVwiIT09aS5jb25maWcuc3RhdGVzLm5vcm1hbC5maWx0ZXI/dGhpcy5hcHBseUZpbHRlcih0LGUsaS5jb25maWcuc3RhdGVzLm5vcm1hbC5maWx0ZXIudHlwZSxpLmNvbmZpZy5zdGF0ZXMubm9ybWFsLmZpbHRlci52YWx1ZSk6aS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkJiZ0aGlzLmRyb3BTaGFkb3codCxpLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LGUpfX0se2tleTpcImFkZE5vcm1hbEZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2kuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCYmIXQubm9kZS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLW1hcmtlclwiKSYmdGhpcy5kcm9wU2hhZG93KHQsaS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdyxlKX19LHtrZXk6XCJhZGRMaWdodGVuRmlsdGVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMscz10aGlzLncscj1pLmludGVuc2l0eTt0LnVuZmlsdGVyKCEwKTtuZXcgd2luZG93LlNWRy5GaWx0ZXI7dC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3ZhciBpPXMuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7KGkuZW5hYmxlZD9hLmFkZFNoYWRvdyh0LGUsaSk6dCkuY29tcG9uZW50VHJhbnNmZXIoe3JnYjp7dHlwZTpcImxpbmVhclwiLHNsb3BlOjEuNSxpbnRlcmNlcHQ6cn19KX0pKSx0LmZpbHRlcmVyLm5vZGUuc2V0QXR0cmlidXRlKFwiZmlsdGVyVW5pdHNcIixcInVzZXJTcGFjZU9uVXNlXCIpLHRoaXMuX3NjYWxlRmlsdGVyU2l6ZSh0LmZpbHRlcmVyLm5vZGUpfX0se2tleTpcImFkZERhcmtlbkZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLHM9dGhpcy53LHI9aS5pbnRlbnNpdHk7dC51bmZpbHRlcighMCk7bmV3IHdpbmRvdy5TVkcuRmlsdGVyO3QuZmlsdGVyKChmdW5jdGlvbih0KXt2YXIgaT1zLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93OyhpLmVuYWJsZWQ/YS5hZGRTaGFkb3codCxlLGkpOnQpLmNvbXBvbmVudFRyYW5zZmVyKHtyZ2I6e3R5cGU6XCJsaW5lYXJcIixzbG9wZTpyfX0pfSkpLHQuZmlsdGVyZXIubm9kZS5zZXRBdHRyaWJ1dGUoXCJmaWx0ZXJVbml0c1wiLFwidXNlclNwYWNlT25Vc2VcIiksdGhpcy5fc2NhbGVGaWx0ZXJTaXplKHQuZmlsdGVyZXIubm9kZSl9fSx7a2V5OlwiYXBwbHlGaWx0ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOi41O3N3aXRjaChpKXtjYXNlXCJub25lXCI6dGhpcy5hZGROb3JtYWxGaWx0ZXIodCxlKTticmVhaztjYXNlXCJsaWdodGVuXCI6dGhpcy5hZGRMaWdodGVuRmlsdGVyKHQsZSx7aW50ZW5zaXR5OmF9KTticmVhaztjYXNlXCJkYXJrZW5cIjp0aGlzLmFkZERhcmtlbkZpbHRlcih0LGUse2ludGVuc2l0eTphfSl9fX0se2tleTpcImFkZFNoYWRvd1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT1pLmJsdXIscz1pLnRvcCxyPWkubGVmdCxvPWkuY29sb3Isbj1pLm9wYWNpdHksbD10LmZsb29kKEFycmF5LmlzQXJyYXkobyk/b1tlXTpvLG4pLmNvbXBvc2l0ZSh0LnNvdXJjZUFscGhhLFwiaW5cIikub2Zmc2V0KHIscykuZ2F1c3NpYW5CbHVyKGEpLm1lcmdlKHQuc291cmNlKTtyZXR1cm4gdC5ibGVuZCh0LnNvdXJjZSxsKX19LHtrZXk6XCJkcm9wU2hhZG93XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MCxhPWUudG9wLHM9ZS5sZWZ0LHI9ZS5ibHVyLG89ZS5jb2xvcixuPWUub3BhY2l0eSxsPWUubm9Vc2VyU3BhY2VPblVzZSxoPXRoaXMudztyZXR1cm4gdC51bmZpbHRlcighMCkseC5pc0lFKCkmJlwicmFkaWFsQmFyXCI9PT1oLmNvbmZpZy5jaGFydC50eXBlfHwobz1BcnJheS5pc0FycmF5KG8pP29baV06byx0LmZpbHRlcigoZnVuY3Rpb24odCl7dmFyIGU9bnVsbDtlPXguaXNTYWZhcmkoKXx8eC5pc0ZpcmVmb3goKXx8eC5pc0lFKCk/dC5mbG9vZChvLG4pLmNvbXBvc2l0ZSh0LnNvdXJjZUFscGhhLFwiaW5cIikub2Zmc2V0KHMsYSkuZ2F1c3NpYW5CbHVyKHIpOnQuZmxvb2QobyxuKS5jb21wb3NpdGUodC5zb3VyY2VBbHBoYSxcImluXCIpLm9mZnNldChzLGEpLmdhdXNzaWFuQmx1cihyKS5tZXJnZSh0LnNvdXJjZSksdC5ibGVuZCh0LnNvdXJjZSxlKX0pKSxsfHx0LmZpbHRlcmVyLm5vZGUuc2V0QXR0cmlidXRlKFwiZmlsdGVyVW5pdHNcIixcInVzZXJTcGFjZU9uVXNlXCIpLHRoaXMuX3NjYWxlRmlsdGVyU2l6ZSh0LmZpbHRlcmVyLm5vZGUpKSx0fX0se2tleTpcInNldFNlbGVjdGlvbkZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLnc7aWYodm9pZCAwIT09YS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1tlXSYmYS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1tlXS5pbmRleE9mKGkpPi0xKXt0Lm5vZGUuc2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIiwhMCk7dmFyIHM9YS5jb25maWcuc3RhdGVzLmFjdGl2ZS5maWx0ZXI7XCJub25lXCIhPT1zJiZ0aGlzLmFwcGx5RmlsdGVyKHQsZSxzLnR5cGUscy52YWx1ZSl9fX0se2tleTpcIl9zY2FsZUZpbHRlclNpemVcIix2YWx1ZTpmdW5jdGlvbih0KXshZnVuY3Rpb24oZSl7Zm9yKHZhciBpIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShpKSYmdC5zZXRBdHRyaWJ1dGUoaSxlW2ldKX0oe3dpZHRoOlwiMjAwJVwiLGhlaWdodDpcIjIwMCVcIix4OlwiLTUwJVwiLHk6XCItNTAlXCJ9KX19XSksdH0oKSxtPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJyb3VuZFBhdGhDb3JuZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBpKHQsZSxpKXt2YXIgcz1lLngtdC54LHI9ZS55LXQueSxvPU1hdGguc3FydChzKnMrcipyKTtyZXR1cm4gYSh0LGUsTWF0aC5taW4oMSxpL28pKX1mdW5jdGlvbiBhKHQsZSxpKXtyZXR1cm57eDp0LngrKGUueC10LngpKmkseTp0LnkrKGUueS10LnkpKml9fWZ1bmN0aW9uIHModCxlKXt0Lmxlbmd0aD4yJiYodFt0Lmxlbmd0aC0yXT1lLngsdFt0Lmxlbmd0aC0xXT1lLnkpfWZ1bmN0aW9uIHIodCl7cmV0dXJue3g6cGFyc2VGbG9hdCh0W3QubGVuZ3RoLTJdKSx5OnBhcnNlRmxvYXQodFt0Lmxlbmd0aC0xXSl9fXQuaW5kZXhPZihcIk5hTlwiKT4tMSYmKHQ9XCJcIik7dmFyIG89dC5zcGxpdCgvWyxcXHNdLykucmVkdWNlKChmdW5jdGlvbih0LGUpe3ZhciBpPWUubWF0Y2goXCIoW2EtekEtWl0pKC4rKVwiKTtyZXR1cm4gaT8odC5wdXNoKGlbMV0pLHQucHVzaChpWzJdKSk6dC5wdXNoKGUpLHR9KSxbXSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBwYXJzZUZsb2F0KGUpPT1lJiZ0Lmxlbmd0aD90W3QubGVuZ3RoLTFdLnB1c2goZSk6dC5wdXNoKFtlXSksdH0pLFtdKSxuPVtdO2lmKG8ubGVuZ3RoPjEpe3ZhciBsPXIob1swXSksaD1udWxsO1wiWlwiPT1vW28ubGVuZ3RoLTFdWzBdJiZvWzBdLmxlbmd0aD4yJiYoaD1bXCJMXCIsbC54LGwueV0sb1tvLmxlbmd0aC0xXT1oKSxuLnB1c2gob1swXSk7Zm9yKHZhciBjPTE7YzxvLmxlbmd0aDtjKyspe3ZhciBkPW5bbi5sZW5ndGgtMV0sZz1vW2NdLHU9Zz09aD9vWzFdOm9bYysxXTtpZih1JiZkJiZkLmxlbmd0aD4yJiZcIkxcIj09Z1swXSYmdS5sZW5ndGg+MiYmXCJMXCI9PXVbMF0pe3ZhciBwLGYseD1yKGQpLGI9cihnKSx2PXIodSk7cD1pKGIseCxlKSxmPWkoYix2LGUpLHMoZyxwKSxnLm9yaWdQb2ludD1iLG4ucHVzaChnKTt2YXIgbT1hKHAsYiwuNSkseT1hKGIsZiwuNSksdz1bXCJDXCIsbS54LG0ueSx5LngseS55LGYueCxmLnldO3cub3JpZ1BvaW50PWIsbi5wdXNoKHcpfWVsc2Ugbi5wdXNoKGcpfWlmKGgpe3ZhciBrPXIobltuLmxlbmd0aC0xXSk7bi5wdXNoKFtcIlpcIl0pLHMoblswXSxrKX19ZWxzZSBuPW87cmV0dXJuIG4ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2Uuam9pbihcIiBcIikrXCIgXCJ9KSxcIlwiKX19LHtrZXk6XCJkcmF3TGluZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdP2FyZ3VtZW50c1s0XTpcIiNhOGE4YThcIixyPWFyZ3VtZW50cy5sZW5ndGg+NSYmdm9pZCAwIT09YXJndW1lbnRzWzVdP2FyZ3VtZW50c1s1XTowLG89YXJndW1lbnRzLmxlbmd0aD42JiZ2b2lkIDAhPT1hcmd1bWVudHNbNl0/YXJndW1lbnRzWzZdOm51bGwsbj1hcmd1bWVudHMubGVuZ3RoPjcmJnZvaWQgMCE9PWFyZ3VtZW50c1s3XT9hcmd1bWVudHNbN106XCJidXR0XCI7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5saW5lKCkuYXR0cih7eDE6dCx5MTplLHgyOmkseTI6YSxzdHJva2U6cyxcInN0cm9rZS1kYXNoYXJyYXlcIjpyLFwic3Ryb2tlLXdpZHRoXCI6byxcInN0cm9rZS1saW5lY2FwXCI6bn0pfX0se2tleTpcImRyYXdSZWN0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjAsYT1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106MCxzPWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdP2FyZ3VtZW50c1s0XTowLHI9YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0/YXJndW1lbnRzWzVdOlwiI2ZlZmVmZVwiLG89YXJndW1lbnRzLmxlbmd0aD42JiZ2b2lkIDAhPT1hcmd1bWVudHNbNl0/YXJndW1lbnRzWzZdOjEsbj1hcmd1bWVudHMubGVuZ3RoPjcmJnZvaWQgMCE9PWFyZ3VtZW50c1s3XT9hcmd1bWVudHNbN106bnVsbCxsPWFyZ3VtZW50cy5sZW5ndGg+OCYmdm9pZCAwIT09YXJndW1lbnRzWzhdP2FyZ3VtZW50c1s4XTpudWxsLGg9YXJndW1lbnRzLmxlbmd0aD45JiZ2b2lkIDAhPT1hcmd1bWVudHNbOV0/YXJndW1lbnRzWzldOjAsYz10aGlzLncuZ2xvYmFscy5kb20uUGFwZXIucmVjdCgpO3JldHVybiBjLmF0dHIoe3g6dCx5OmUsd2lkdGg6aT4wP2k6MCxoZWlnaHQ6YT4wP2E6MCxyeDpzLHJ5OnMsb3BhY2l0eTpvLFwic3Ryb2tlLXdpZHRoXCI6bnVsbCE9PW4/bjowLHN0cm9rZTpudWxsIT09bD9sOlwibm9uZVwiLFwic3Ryb2tlLWRhc2hhcnJheVwiOmh9KSxjLm5vZGUuc2V0QXR0cmlidXRlKFwiZmlsbFwiLHIpLGN9fSx7a2V5OlwiZHJhd1BvbHlnb25cIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06XCIjZTFlMWUxXCIsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MSxhPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpcIm5vbmVcIjtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLnBvbHlnb24odCkuYXR0cih7ZmlsbDphLHN0cm9rZTplLFwic3Ryb2tlLXdpZHRoXCI6aX0pfX0se2tleTpcImRyYXdDaXJjbGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbDt0PDAmJih0PTApO3ZhciBpPXRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5jaXJjbGUoMip0KTtyZXR1cm4gbnVsbCE9PWUmJmkuYXR0cihlKSxpfX0se2tleTpcImRyYXdQYXRoXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5kLGk9dm9pZCAwPT09ZT9cIlwiOmUsYT10LnN0cm9rZSxzPXZvaWQgMD09PWE/XCIjYThhOGE4XCI6YSxyPXQuc3Ryb2tlV2lkdGgsbz12b2lkIDA9PT1yPzE6cixuPXQuZmlsbCxsPXQuZmlsbE9wYWNpdHksaD12b2lkIDA9PT1sPzE6bCxjPXQuc3Ryb2tlT3BhY2l0eSxkPXZvaWQgMD09PWM/MTpjLGc9dC5jbGFzc2VzLHU9dC5zdHJva2VMaW5lY2FwLHA9dm9pZCAwPT09dT9udWxsOnUsZj10LnN0cm9rZURhc2hBcnJheSx4PXZvaWQgMD09PWY/MDpmLGI9dGhpcy53O3JldHVybiBudWxsPT09cCYmKHA9Yi5jb25maWcuc3Ryb2tlLmxpbmVDYXApLChpLmluZGV4T2YoXCJ1bmRlZmluZWRcIik+LTF8fGkuaW5kZXhPZihcIk5hTlwiKT4tMSkmJihpPVwiTSAwIFwiLmNvbmNhdChiLmdsb2JhbHMuZ3JpZEhlaWdodCkpLGIuZ2xvYmFscy5kb20uUGFwZXIucGF0aChpKS5hdHRyKHtmaWxsOm4sXCJmaWxsLW9wYWNpdHlcIjpoLHN0cm9rZTpzLFwic3Ryb2tlLW9wYWNpdHlcIjpkLFwic3Ryb2tlLWxpbmVjYXBcIjpwLFwic3Ryb2tlLXdpZHRoXCI6byxcInN0cm9rZS1kYXNoYXJyYXlcIjp4LGNsYXNzOmd9KX19LHtrZXk6XCJncm91cFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGwsZT10aGlzLncuZ2xvYmFscy5kb20uUGFwZXIuZ3JvdXAoKTtyZXR1cm4gbnVsbCE9PXQmJmUuYXR0cih0KSxlfX0se2tleTpcIm1vdmVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPVtcIk1cIix0LGVdLmpvaW4oXCIgXCIpO3JldHVybiBpfX0se2tleTpcImxpbmVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsLGE9bnVsbDtyZXR1cm4gbnVsbD09PWk/YT1bXCIgTFwiLHQsZV0uam9pbihcIiBcIik6XCJIXCI9PT1pP2E9W1wiIEhcIix0XS5qb2luKFwiIFwiKTpcIlZcIj09PWkmJihhPVtcIiBWXCIsZV0uam9pbihcIiBcIikpLGF9fSx7a2V5OlwiY3VydmVcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscil7dmFyIG89W1wiQ1wiLHQsZSxpLGEscyxyXS5qb2luKFwiIFwiKTtyZXR1cm4gb319LHtrZXk6XCJxdWFkcmF0aWNDdXJ2ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3JldHVybltcIlFcIix0LGUsaSxhXS5qb2luKFwiIFwiKX19LHtrZXk6XCJhcmNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscixvKXt2YXIgbj1cIkFcIjthcmd1bWVudHMubGVuZ3RoPjcmJnZvaWQgMCE9PWFyZ3VtZW50c1s3XSYmYXJndW1lbnRzWzddJiYobj1cImFcIik7dmFyIGw9W24sdCxlLGksYSxzLHIsb10uam9pbihcIiBcIik7cmV0dXJuIGx9fSx7a2V5OlwicmVuZGVyUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgaSxhPXQuaixzPXQucmVhbEluZGV4LHI9dC5wYXRoRnJvbSxvPXQucGF0aFRvLG49dC5zdHJva2UsbD10LnN0cm9rZVdpZHRoLGg9dC5zdHJva2VMaW5lY2FwLGM9dC5maWxsLGQ9dC5hbmltYXRpb25EZWxheSxnPXQuaW5pdGlhbFNwZWVkLHU9dC5kYXRhQ2hhbmdlU3BlZWQscD10LmNsYXNzTmFtZSxmPXQuc2hvdWxkQ2xpcFRvR3JpZCx4PXZvaWQgMD09PWZ8fGYsbT10LmJpbmRFdmVudHNPblBhdGhzLHk9dm9pZCAwPT09bXx8bSx3PXQuZHJhd1NoYWRvdyxrPXZvaWQgMD09PXd8fHcsQT10aGlzLncsUz1uZXcgdih0aGlzLmN0eCksQz1uZXcgYih0aGlzLmN0eCksTD10aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCxQPUwmJnRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQsST0hIShMJiYhQS5nbG9iYWxzLnJlc2l6ZWR8fFAmJkEuZ2xvYmFscy5kYXRhQ2hhbmdlZCYmQS5nbG9iYWxzLnNob3VsZEFuaW1hdGUpO0k/aT1yOihpPW8sQS5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkPSEwKTt2YXIgVD1BLmNvbmZpZy5zdHJva2UuZGFzaEFycmF5LE09MDtNPUFycmF5LmlzQXJyYXkoVCk/VFtzXTpBLmNvbmZpZy5zdHJva2UuZGFzaEFycmF5O3ZhciBYPXRoaXMuZHJhd1BhdGgoe2Q6aSxzdHJva2U6bixzdHJva2VXaWR0aDpsLGZpbGw6YyxmaWxsT3BhY2l0eToxLGNsYXNzZXM6cCxzdHJva2VMaW5lY2FwOmgsc3Ryb2tlRGFzaEFycmF5Ok19KTtpZihYLmF0dHIoXCJpbmRleFwiLHMpLHgmJlguYXR0cih7XCJjbGlwLXBhdGhcIjpcInVybCgjZ3JpZFJlY3RNYXNrXCIuY29uY2F0KEEuZ2xvYmFscy5jdWlkLFwiKVwiKX0pLFwibm9uZVwiIT09QS5jb25maWcuc3RhdGVzLm5vcm1hbC5maWx0ZXIudHlwZSlTLmdldERlZmF1bHRGaWx0ZXIoWCxzKTtlbHNlIGlmKEEuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCYmayYmKCFBLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWRPblNlcmllc3x8QS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkT25TZXJpZXMmJi0xIT09QS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkT25TZXJpZXMuaW5kZXhPZihzKSkpe3ZhciB6PUEuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7Uy5kcm9wU2hhZG93KFgseixzKX15JiYoWC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsdGhpcy5wYXRoTW91c2VFbnRlci5iaW5kKHRoaXMsWCkpLFgubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLHRoaXMucGF0aE1vdXNlTGVhdmUuYmluZCh0aGlzLFgpKSxYLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLHRoaXMucGF0aE1vdXNlRG93bi5iaW5kKHRoaXMsWCkpKSxYLmF0dHIoe3BhdGhUbzpvLHBhdGhGcm9tOnJ9KTt2YXIgRT17ZWw6WCxqOmEscmVhbEluZGV4OnMscGF0aEZyb206cixwYXRoVG86byxmaWxsOmMsc3Ryb2tlV2lkdGg6bCxkZWxheTpkfTtyZXR1cm4hTHx8QS5nbG9iYWxzLnJlc2l6ZWR8fEEuZ2xvYmFscy5kYXRhQ2hhbmdlZD8hQS5nbG9iYWxzLnJlc2l6ZWQmJkEuZ2xvYmFscy5kYXRhQ2hhbmdlZHx8Qy5zaG93RGVsYXllZEVsZW1lbnRzKCk6Qy5hbmltYXRlUGF0aHNHcmFkdWFsbHkoZShlKHt9LEUpLHt9LHtzcGVlZDpnfSkpLEEuZ2xvYmFscy5kYXRhQ2hhbmdlZCYmUCYmSSYmQy5hbmltYXRlUGF0aHNHcmFkdWFsbHkoZShlKHt9LEUpLHt9LHtzcGVlZDp1fSkpLFh9fSx7a2V5OlwiZHJhd1BhdHRlcm5cIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOlwiI2E4YThhOFwiLHM9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0/YXJndW1lbnRzWzRdOjA7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5wYXR0ZXJuKGUsaSwoZnVuY3Rpb24ocil7XCJob3Jpem9udGFsTGluZXNcIj09PXQ/ci5saW5lKDAsMCxpLDApLnN0cm9rZSh7Y29sb3I6YSx3aWR0aDpzKzF9KTpcInZlcnRpY2FsTGluZXNcIj09PXQ/ci5saW5lKDAsMCwwLGUpLnN0cm9rZSh7Y29sb3I6YSx3aWR0aDpzKzF9KTpcInNsYW50ZWRMaW5lc1wiPT09dD9yLmxpbmUoMCwwLGUsaSkuc3Ryb2tlKHtjb2xvcjphLHdpZHRoOnN9KTpcInNxdWFyZXNcIj09PXQ/ci5yZWN0KGUsaSkuZmlsbChcIm5vbmVcIikuc3Ryb2tlKHtjb2xvcjphLHdpZHRoOnN9KTpcImNpcmNsZXNcIj09PXQmJnIuY2lyY2xlKGUpLmZpbGwoXCJub25lXCIpLnN0cm9rZSh7Y29sb3I6YSx3aWR0aDpzfSl9KSl9fSx7a2V5OlwiZHJhd0dyYWRpZW50XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzKXt2YXIgcixvPWFyZ3VtZW50cy5sZW5ndGg+NSYmdm9pZCAwIT09YXJndW1lbnRzWzVdP2FyZ3VtZW50c1s1XTpudWxsLG49YXJndW1lbnRzLmxlbmd0aD42JiZ2b2lkIDAhPT1hcmd1bWVudHNbNl0/YXJndW1lbnRzWzZdOm51bGwsbD1hcmd1bWVudHMubGVuZ3RoPjcmJnZvaWQgMCE9PWFyZ3VtZW50c1s3XT9hcmd1bWVudHNbN106bnVsbCxoPWFyZ3VtZW50cy5sZW5ndGg+OCYmdm9pZCAwIT09YXJndW1lbnRzWzhdP2FyZ3VtZW50c1s4XTowLGM9dGhpcy53O2UubGVuZ3RoPDkmJjA9PT1lLmluZGV4T2YoXCIjXCIpJiYoZT14LmhleFRvUmdiYShlLGEpKSxpLmxlbmd0aDw5JiYwPT09aS5pbmRleE9mKFwiI1wiKSYmKGk9eC5oZXhUb1JnYmEoaSxzKSk7dmFyIGQ9MCxnPTEsdT0xLHA9bnVsbDtudWxsIT09biYmKGQ9dm9pZCAwIT09blswXT9uWzBdLzEwMDowLGc9dm9pZCAwIT09blsxXT9uWzFdLzEwMDoxLHU9dm9pZCAwIT09blsyXT9uWzJdLzEwMDoxLHA9dm9pZCAwIT09blszXT9uWzNdLzEwMDpudWxsKTt2YXIgZj0hKFwiZG9udXRcIiE9PWMuY29uZmlnLmNoYXJ0LnR5cGUmJlwicGllXCIhPT1jLmNvbmZpZy5jaGFydC50eXBlJiZcInBvbGFyQXJlYVwiIT09Yy5jb25maWcuY2hhcnQudHlwZSYmXCJidWJibGVcIiE9PWMuY29uZmlnLmNoYXJ0LnR5cGUpO2lmKHI9bnVsbD09PWx8fDA9PT1sLmxlbmd0aD9jLmdsb2JhbHMuZG9tLlBhcGVyLmdyYWRpZW50KGY/XCJyYWRpYWxcIjpcImxpbmVhclwiLChmdW5jdGlvbih0KXt0LmF0KGQsZSxhKSx0LmF0KGcsaSxzKSx0LmF0KHUsaSxzKSxudWxsIT09cCYmdC5hdChwLGUsYSl9KSk6Yy5nbG9iYWxzLmRvbS5QYXBlci5ncmFkaWVudChmP1wicmFkaWFsXCI6XCJsaW5lYXJcIiwoZnVuY3Rpb24odCl7KEFycmF5LmlzQXJyYXkobFtoXSk/bFtoXTpsKS5mb3JFYWNoKChmdW5jdGlvbihlKXt0LmF0KGUub2Zmc2V0LzEwMCxlLmNvbG9yLGUub3BhY2l0eSl9KSl9KSksZil7dmFyIGI9Yy5nbG9iYWxzLmdyaWRXaWR0aC8yLHY9Yy5nbG9iYWxzLmdyaWRIZWlnaHQvMjtcImJ1YmJsZVwiIT09Yy5jb25maWcuY2hhcnQudHlwZT9yLmF0dHIoe2dyYWRpZW50VW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwiLGN4OmIsY3k6dixyOm99KTpyLmF0dHIoe2N4Oi41LGN5Oi41LHI6LjgsZng6LjIsZnk6LjJ9KX1lbHNlXCJ2ZXJ0aWNhbFwiPT09dD9yLmZyb20oMCwwKS50bygwLDEpOlwiZGlhZ29uYWxcIj09PXQ/ci5mcm9tKDAsMCkudG8oMSwxKTpcImhvcml6b250YWxcIj09PXQ/ci5mcm9tKDAsMSkudG8oMSwxKTpcImRpYWdvbmFsMlwiPT09dCYmci5mcm9tKDEsMCkudG8oMCwxKTtyZXR1cm4gcn19LHtrZXk6XCJnZXRUZXh0QmFzZWRPbk1heFdpZHRoXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC50ZXh0LGk9dC5tYXhXaWR0aCxhPXQuZm9udFNpemUscz10LmZvbnRGYW1pbHkscj10aGlzLmdldFRleHRSZWN0cyhlLGEscyksbz1yLndpZHRoL2UubGVuZ3RoLG49TWF0aC5mbG9vcihpL28pO3JldHVybiBpPHIud2lkdGg/ZS5zbGljZSgwLG4tMykrXCIuLi5cIjplfX0se2tleTpcImRyYXdUZXh0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcyxhPXQueCxzPXQueSxyPXQudGV4dCxvPXQudGV4dEFuY2hvcixuPXQuZm9udFNpemUsbD10LmZvbnRGYW1pbHksaD10LmZvbnRXZWlnaHQsYz10LmZvcmVDb2xvcixkPXQub3BhY2l0eSxnPXQubWF4V2lkdGgsdT10LmNzc0NsYXNzLHA9dm9pZCAwPT09dT9cIlwiOnUsZj10LmlzUGxhaW5UZXh0LHg9dm9pZCAwPT09Znx8ZixiPXRoaXMudzt2b2lkIDA9PT1yJiYocj1cIlwiKTt2YXIgdj1yO298fChvPVwic3RhcnRcIiksYyYmYy5sZW5ndGh8fChjPWIuY29uZmlnLmNoYXJ0LmZvcmVDb2xvciksbD1sfHxiLmNvbmZpZy5jaGFydC5mb250RmFtaWx5LGg9aHx8XCJyZWd1bGFyXCI7dmFyIG0seT17bWF4V2lkdGg6Zyxmb250U2l6ZTpuPW58fFwiMTFweFwiLGZvbnRGYW1pbHk6bH07cmV0dXJuIEFycmF5LmlzQXJyYXkocik/bT1iLmdsb2JhbHMuZG9tLlBhcGVyLnRleHQoKGZ1bmN0aW9uKHQpe2Zvcih2YXIgYT0wO2E8ci5sZW5ndGg7YSsrKXY9clthXSxnJiYodj1pLmdldFRleHRCYXNlZE9uTWF4V2lkdGgoZSh7dGV4dDpyW2FdfSx5KSkpLDA9PT1hP3QudHNwYW4odik6dC50c3Bhbih2KS5uZXdMaW5lKCl9KSk6KGcmJih2PXRoaXMuZ2V0VGV4dEJhc2VkT25NYXhXaWR0aChlKHt0ZXh0OnJ9LHkpKSksbT14P2IuZ2xvYmFscy5kb20uUGFwZXIucGxhaW4ocik6Yi5nbG9iYWxzLmRvbS5QYXBlci50ZXh0KChmdW5jdGlvbih0KXtyZXR1cm4gdC50c3Bhbih2KX0pKSksbS5hdHRyKHt4OmEseTpzLFwidGV4dC1hbmNob3JcIjpvLFwiZG9taW5hbnQtYmFzZWxpbmVcIjpcImF1dG9cIixcImZvbnQtc2l6ZVwiOm4sXCJmb250LWZhbWlseVwiOmwsXCJmb250LXdlaWdodFwiOmgsZmlsbDpjLGNsYXNzOlwiYXBleGNoYXJ0cy10ZXh0IFwiK3B9KSxtLm5vZGUuc3R5bGUuZm9udEZhbWlseT1sLG0ubm9kZS5zdHlsZS5vcGFjaXR5PWQsbX19LHtrZXk6XCJkcmF3TWFya2VyXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3Q9dHx8MDt2YXIgYT1pLnBTaXplfHwwLHM9bnVsbDtpZihcInNxdWFyZVwiPT09aS5zaGFwZXx8XCJyZWN0XCI9PT1pLnNoYXBlKXt2YXIgcj12b2lkIDA9PT1pLnBSYWRpdXM/YS8yOmkucFJhZGl1cztudWxsIT09ZSYmYXx8KGE9MCxyPTApO3ZhciBvPTEuMiphK3Isbj10aGlzLmRyYXdSZWN0KG8sbyxvLG8scik7bi5hdHRyKHt4OnQtby8yLHk6ZS1vLzIsY3g6dCxjeTplLGNsYXNzOmkuY2xhc3M/aS5jbGFzczpcIlwiLGZpbGw6aS5wb2ludEZpbGxDb2xvcixcImZpbGwtb3BhY2l0eVwiOmkucG9pbnRGaWxsT3BhY2l0eT9pLnBvaW50RmlsbE9wYWNpdHk6MSxzdHJva2U6aS5wb2ludFN0cm9rZUNvbG9yLFwic3Ryb2tlLXdpZHRoXCI6aS5wb2ludFN0cm9rZVdpZHRoP2kucG9pbnRTdHJva2VXaWR0aDowLFwic3Ryb2tlLW9wYWNpdHlcIjppLnBvaW50U3Ryb2tlT3BhY2l0eT9pLnBvaW50U3Ryb2tlT3BhY2l0eToxfSkscz1ufWVsc2VcImNpcmNsZVwiIT09aS5zaGFwZSYmaS5zaGFwZXx8KHguaXNOdW1iZXIoZSl8fChhPTAsZT0wKSxzPXRoaXMuZHJhd0NpcmNsZShhLHtjeDp0LGN5OmUsY2xhc3M6aS5jbGFzcz9pLmNsYXNzOlwiXCIsc3Ryb2tlOmkucG9pbnRTdHJva2VDb2xvcixmaWxsOmkucG9pbnRGaWxsQ29sb3IsXCJmaWxsLW9wYWNpdHlcIjppLnBvaW50RmlsbE9wYWNpdHk/aS5wb2ludEZpbGxPcGFjaXR5OjEsXCJzdHJva2Utd2lkdGhcIjppLnBvaW50U3Ryb2tlV2lkdGg/aS5wb2ludFN0cm9rZVdpZHRoOjAsXCJzdHJva2Utb3BhY2l0eVwiOmkucG9pbnRTdHJva2VPcGFjaXR5P2kucG9pbnRTdHJva2VPcGFjaXR5OjF9KSk7cmV0dXJuIHN9fSx7a2V5OlwicGF0aE1vdXNlRW50ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPW5ldyB2KHRoaXMuY3R4KSxzPXBhcnNlSW50KHQubm9kZS5nZXRBdHRyaWJ1dGUoXCJpbmRleFwiKSwxMCkscj1wYXJzZUludCh0Lm5vZGUuZ2V0QXR0cmlidXRlKFwialwiKSwxMCk7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgaS5jb25maWcuY2hhcnQuZXZlbnRzLmRhdGFQb2ludE1vdXNlRW50ZXImJmkuY29uZmlnLmNoYXJ0LmV2ZW50cy5kYXRhUG9pbnRNb3VzZUVudGVyKGUsdGhpcy5jdHgse3Nlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6cix3Oml9KSx0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KFwiZGF0YVBvaW50TW91c2VFbnRlclwiLFtlLHRoaXMuY3R4LHtzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsdzppfV0pLChcIm5vbmVcIj09PWkuY29uZmlnLnN0YXRlcy5hY3RpdmUuZmlsdGVyLnR5cGV8fFwidHJ1ZVwiIT09dC5ub2RlLmdldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIpKSYmXCJub25lXCIhPT1pLmNvbmZpZy5zdGF0ZXMuaG92ZXIuZmlsdGVyLnR5cGUmJiFpLmdsb2JhbHMuaXNUb3VjaERldmljZSl7dmFyIG89aS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlcjthLmFwcGx5RmlsdGVyKHQscyxvLnR5cGUsby52YWx1ZSl9fX0se2tleTpcInBhdGhNb3VzZUxlYXZlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1uZXcgdih0aGlzLmN0eCkscz1wYXJzZUludCh0Lm5vZGUuZ2V0QXR0cmlidXRlKFwiaW5kZXhcIiksMTApLHI9cGFyc2VJbnQodC5ub2RlLmdldEF0dHJpYnV0ZShcImpcIiksMTApO1wiZnVuY3Rpb25cIj09dHlwZW9mIGkuY29uZmlnLmNoYXJ0LmV2ZW50cy5kYXRhUG9pbnRNb3VzZUxlYXZlJiZpLmNvbmZpZy5jaGFydC5ldmVudHMuZGF0YVBvaW50TW91c2VMZWF2ZShlLHRoaXMuY3R4LHtzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsdzppfSksdGhpcy5jdHguZXZlbnRzLmZpcmVFdmVudChcImRhdGFQb2ludE1vdXNlTGVhdmVcIixbZSx0aGlzLmN0eCx7c2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpyLHc6aX1dKSxcIm5vbmVcIiE9PWkuY29uZmlnLnN0YXRlcy5hY3RpdmUuZmlsdGVyLnR5cGUmJlwidHJ1ZVwiPT09dC5ub2RlLmdldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIpfHxcIm5vbmVcIiE9PWkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXIudHlwZSYmYS5nZXREZWZhdWx0RmlsdGVyKHQscyl9fSx7a2V5OlwicGF0aE1vdXNlRG93blwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9bmV3IHYodGhpcy5jdHgpLHM9cGFyc2VJbnQodC5ub2RlLmdldEF0dHJpYnV0ZShcImluZGV4XCIpLDEwKSxyPXBhcnNlSW50KHQubm9kZS5nZXRBdHRyaWJ1dGUoXCJqXCIpLDEwKSxvPVwiZmFsc2VcIjtpZihcInRydWVcIj09PXQubm9kZS5nZXRBdHRyaWJ1dGUoXCJzZWxlY3RlZFwiKSl7aWYodC5ub2RlLnNldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIsXCJmYWxzZVwiKSxpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW3NdLmluZGV4T2Yocik+LTEpe3ZhciBuPWkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbc10uaW5kZXhPZihyKTtpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW3NdLnNwbGljZShuLDEpfX1lbHNle2lmKCFpLmNvbmZpZy5zdGF0ZXMuYWN0aXZlLmFsbG93TXVsdGlwbGVEYXRhUG9pbnRzU2VsZWN0aW9uJiZpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzLmxlbmd0aD4wKXtpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzPVtdO3ZhciBsPWkuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiLmFwZXhjaGFydHMtc2VyaWVzIHBhdGhcIikubWVtYmVycyxoPWkuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiLmFwZXhjaGFydHMtc2VyaWVzIGNpcmNsZSwgLmFwZXhjaGFydHMtc2VyaWVzIHJlY3RcIikubWVtYmVycyxjPWZ1bmN0aW9uKHQpe0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodCwoZnVuY3Rpb24odCl7dC5ub2RlLnNldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIsXCJmYWxzZVwiKSxhLmdldERlZmF1bHRGaWx0ZXIodCxzKX0pKX07YyhsKSxjKGgpfXQubm9kZS5zZXRBdHRyaWJ1dGUoXCJzZWxlY3RlZFwiLFwidHJ1ZVwiKSxvPVwidHJ1ZVwiLHZvaWQgMD09PWkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbc10mJihpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW3NdPVtdKSxpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW3NdLnB1c2gocil9aWYoXCJ0cnVlXCI9PT1vKXt2YXIgZD1pLmNvbmZpZy5zdGF0ZXMuYWN0aXZlLmZpbHRlcjtpZihcIm5vbmVcIiE9PWQpYS5hcHBseUZpbHRlcih0LHMsZC50eXBlLGQudmFsdWUpO2Vsc2UgaWYoXCJub25lXCIhPT1pLmNvbmZpZy5zdGF0ZXMuaG92ZXIuZmlsdGVyJiYhaS5nbG9iYWxzLmlzVG91Y2hEZXZpY2Upe3ZhciBnPWkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXI7YS5hcHBseUZpbHRlcih0LHMsZy50eXBlLGcudmFsdWUpfX1lbHNlIGlmKFwibm9uZVwiIT09aS5jb25maWcuc3RhdGVzLmFjdGl2ZS5maWx0ZXIudHlwZSlpZihcIm5vbmVcIj09PWkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXIudHlwZXx8aS5nbG9iYWxzLmlzVG91Y2hEZXZpY2UpYS5nZXREZWZhdWx0RmlsdGVyKHQscyk7ZWxzZXtnPWkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXI7YS5hcHBseUZpbHRlcih0LHMsZy50eXBlLGcudmFsdWUpfVwiZnVuY3Rpb25cIj09dHlwZW9mIGkuY29uZmlnLmNoYXJ0LmV2ZW50cy5kYXRhUG9pbnRTZWxlY3Rpb24mJmkuY29uZmlnLmNoYXJ0LmV2ZW50cy5kYXRhUG9pbnRTZWxlY3Rpb24oZSx0aGlzLmN0eCx7c2VsZWN0ZWREYXRhUG9pbnRzOmkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHMsc2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpyLHc6aX0pLGUmJnRoaXMuY3R4LmV2ZW50cy5maXJlRXZlbnQoXCJkYXRhUG9pbnRTZWxlY3Rpb25cIixbZSx0aGlzLmN0eCx7c2VsZWN0ZWREYXRhUG9pbnRzOmkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHMsc2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpyLHc6aX1dKX19LHtrZXk6XCJyb3RhdGVBcm91bmRDZW50ZXJcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT17fTtyZXR1cm4gdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgdC5nZXRCQm94JiYoZT10LmdldEJCb3goKSkse3g6ZS54K2Uud2lkdGgvMix5OmUueStlLmhlaWdodC8yfX19LHtrZXk6XCJnZXRUZXh0UmVjdHNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz0hKGFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdKXx8YXJndW1lbnRzWzRdLHI9dGhpcy53LG89dGhpcy5kcmF3VGV4dCh7eDotMjAwLHk6LTIwMCx0ZXh0OnQsdGV4dEFuY2hvcjpcInN0YXJ0XCIsZm9udFNpemU6ZSxmb250RmFtaWx5OmksZm9yZUNvbG9yOlwiI2ZmZlwiLG9wYWNpdHk6MH0pO2EmJm8uYXR0cihcInRyYW5zZm9ybVwiLGEpLHIuZ2xvYmFscy5kb20uUGFwZXIuYWRkKG8pO3ZhciBuPW8uYmJveCgpO3JldHVybiBzfHwobj1vLm5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLG8ucmVtb3ZlKCkse3dpZHRoOm4ud2lkdGgsaGVpZ2h0Om4uaGVpZ2h0fX19LHtrZXk6XCJwbGFjZVRleHRXaXRoRWxsaXBzaXNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdC5nZXRDb21wdXRlZFRleHRMZW5ndGgmJih0LnRleHRDb250ZW50PWUsZS5sZW5ndGg+MCYmdC5nZXRDb21wdXRlZFRleHRMZW5ndGgoKT49aS8xLjEpKXtmb3IodmFyIGE9ZS5sZW5ndGgtMzthPjA7YS09MylpZih0LmdldFN1YlN0cmluZ0xlbmd0aCgwLGEpPD1pLzEuMSlyZXR1cm4gdm9pZCh0LnRleHRDb250ZW50PWUuc3Vic3RyaW5nKDAsYSkrXCIuLi5cIik7dC50ZXh0Q29udGVudD1cIi5cIn19fV0sW3trZXk6XCJzZXRBdHRyc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShpKSYmdC5zZXRBdHRyaWJ1dGUoaSxlW2ldKX19XSksdH0oKSx5PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJnZXRTdGFja2VkU2VyaWVzVG90YWxzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06W10sZT10aGlzLncsaT1bXTtpZigwPT09ZS5nbG9iYWxzLnNlcmllcy5sZW5ndGgpcmV0dXJuIGk7Zm9yKHZhciBhPTA7YTxlLmdsb2JhbHMuc2VyaWVzW2UuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGg7YSsrKXtmb3IodmFyIHM9MCxyPTA7cjxlLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDtyKyspdm9pZCAwIT09ZS5nbG9iYWxzLnNlcmllc1tyXVthXSYmLTE9PT10LmluZGV4T2YocikmJihzKz1lLmdsb2JhbHMuc2VyaWVzW3JdW2FdKTtpLnB1c2gocyl9cmV0dXJuIGl9fSx7a2V5OlwiZ2V0U2VyaWVzVG90YWxCeUluZGV4XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDtyZXR1cm4gbnVsbD09PXQ/dGhpcy53LmNvbmZpZy5zZXJpZXMucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSwwKTp0aGlzLncuZ2xvYmFscy5zZXJpZXNbdF0ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSwwKX19LHtrZXk6XCJpc1Nlcmllc051bGxcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsO3JldHVybiAwPT09KG51bGw9PT10P3RoaXMudy5jb25maWcuc2VyaWVzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPT10fSkpOnRoaXMudy5jb25maWcuc2VyaWVzW3RdLmRhdGEuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9PXR9KSkpLmxlbmd0aH19LHtrZXk6XCJzZXJpZXNIYXZlU2FtZVZhbHVlc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLncuZ2xvYmFscy5zZXJpZXNbdF0uZXZlcnkoKGZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdD09PWlbMF19KSl9fSx7a2V5OlwiZ2V0Q2F0ZWdvcnlMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10LnNsaWNlKCk7cmV0dXJuIGUuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKGk9dC5tYXAoKGZ1bmN0aW9uKHQsaSl7cmV0dXJuIGUuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXIodC1lLmdsb2JhbHMubWluWCsxKX0pKSksaX19LHtrZXk6XCJnZXRMYXJnZXN0U2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dC5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXg9dC5nbG9iYWxzLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aH0pKS5pbmRleE9mKE1hdGgubWF4LmFwcGx5KE1hdGgsdC5nbG9iYWxzLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aH0pKSkpfX0se2tleTpcImdldExhcmdlc3RNYXJrZXJTaXplXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT0wO3JldHVybiB0Lmdsb2JhbHMubWFya2Vycy5zaXplLmZvckVhY2goKGZ1bmN0aW9uKHQpe2U9TWF0aC5tYXgoZSx0KX0pKSx0LmNvbmZpZy5tYXJrZXJzLmRpc2NyZXRlJiZ0LmNvbmZpZy5tYXJrZXJzLmRpc2NyZXRlLmxlbmd0aCYmdC5jb25maWcubWFya2Vycy5kaXNjcmV0ZS5mb3JFYWNoKChmdW5jdGlvbih0KXtlPU1hdGgubWF4KGUsdC5zaXplKX0pKSxlPjAmJihlKz10LmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemVPZmZzZXQrMSksdC5nbG9iYWxzLm1hcmtlcnMubGFyZ2VzdFNpemU9ZSxlfX0se2tleTpcImdldFNlcmllc1RvdGFsc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O3QuZ2xvYmFscy5zZXJpZXNUb3RhbHM9dC5nbG9iYWxzLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQsZSl7dmFyIGk9MDtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgYT0wO2E8dC5sZW5ndGg7YSsrKWkrPXRbYV07ZWxzZSBpKz10O3JldHVybiBpfSkpfX0se2tleTpcImdldFNlcmllc1RvdGFsc1hSYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O3JldHVybiBpLmdsb2JhbHMuc2VyaWVzLm1hcCgoZnVuY3Rpb24oYSxzKXtmb3IodmFyIHI9MCxvPTA7bzxhLmxlbmd0aDtvKyspaS5nbG9iYWxzLnNlcmllc1hbc11bb10+dCYmaS5nbG9iYWxzLnNlcmllc1hbc11bb108ZSYmKHIrPWFbb10pO3JldHVybiByfSkpfX0se2tleTpcImdldFBlcmNlbnRTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudzt0Lmdsb2JhbHMuc2VyaWVzUGVyY2VudD10Lmdsb2JhbHMuc2VyaWVzLm1hcCgoZnVuY3Rpb24oZSxpKXt2YXIgYT1bXTtpZihBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgcz0wO3M8ZS5sZW5ndGg7cysrKXt2YXIgcj10Lmdsb2JhbHMuc3RhY2tlZFNlcmllc1RvdGFsc1tzXSxvPTA7ciYmKG89MTAwKmVbc10vciksYS5wdXNoKG8pfWVsc2V7dmFyIG49MTAwKmUvdC5nbG9iYWxzLnNlcmllc1RvdGFscy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pLDApO2EucHVzaChuKX1yZXR1cm4gYX0pKX19LHtrZXk6XCJnZXRDYWxjdWxhdGVkUmF0aW9zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksYSxzPXRoaXMudy5nbG9iYWxzLHI9W10sbz0wLG49W10sbD0uMSxoPTA7aWYocy55UmFuZ2U9W10scy5pc011bHRpcGxlWUF4aXMpZm9yKHZhciBjPTA7YzxzLm1pbllBcnIubGVuZ3RoO2MrKylzLnlSYW5nZS5wdXNoKE1hdGguYWJzKHMubWluWUFycltjXS1zLm1heFlBcnJbY10pKSxuLnB1c2goMCk7ZWxzZSBzLnlSYW5nZS5wdXNoKE1hdGguYWJzKHMubWluWS1zLm1heFkpKTtzLnhSYW5nZT1NYXRoLmFicyhzLm1heFgtcy5taW5YKSxzLnpSYW5nZT1NYXRoLmFicyhzLm1heFotcy5taW5aKTtmb3IodmFyIGQ9MDtkPHMueVJhbmdlLmxlbmd0aDtkKyspci5wdXNoKHMueVJhbmdlW2RdL3MuZ3JpZEhlaWdodCk7aWYoZT1zLnhSYW5nZS9zLmdyaWRXaWR0aCxpPU1hdGguYWJzKHMuaW5pdGlhbE1heFgtcy5pbml0aWFsTWluWCkvcy5ncmlkV2lkdGgsdD1zLnlSYW5nZS9zLmdyaWRXaWR0aCxhPXMueFJhbmdlL3MuZ3JpZEhlaWdodCwobz1zLnpSYW5nZS9zLmdyaWRIZWlnaHQqMTYpfHwobz0xKSxzLm1pblkhPT1OdW1iZXIuTUlOX1ZBTFVFJiYwIT09TWF0aC5hYnMocy5taW5ZKSYmKHMuaGFzTmVncz0hMCkscy5pc011bHRpcGxlWUF4aXMpe249W107Zm9yKHZhciBnPTA7ZzxyLmxlbmd0aDtnKyspbi5wdXNoKC1zLm1pbllBcnJbZ10vcltnXSl9ZWxzZSBuLnB1c2goLXMubWluWS9yWzBdKSxzLm1pblkhPT1OdW1iZXIuTUlOX1ZBTFVFJiYwIT09TWF0aC5hYnMocy5taW5ZKSYmKGw9LXMubWluWS90LGg9cy5taW5YL2UpO3JldHVybnt5UmF0aW86cixpbnZlcnRlZFlSYXRpbzp0LHpSYXRpbzpvLHhSYXRpbzplLGluaXRpYWxYUmF0aW86aSxpbnZlcnRlZFhSYXRpbzphLGJhc2VMaW5lSW52ZXJ0ZWRZOmwsYmFzZUxpbmVZOm4sYmFzZUxpbmVYOmh9fX0se2tleTpcImdldExvZ1Nlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLnc7cmV0dXJuIGkuZ2xvYmFscy5zZXJpZXNMb2c9dC5tYXAoKGZ1bmN0aW9uKHQsYSl7cmV0dXJuIGkuY29uZmlnLnlheGlzW2FdJiZpLmNvbmZpZy55YXhpc1thXS5sb2dhcml0aG1pYz90Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PT10P251bGw6ZS5nZXRMb2dWYWwoaS5jb25maWcueWF4aXNbYV0ubG9nQmFzZSx0LGEpfSkpOnR9KSksaS5nbG9iYWxzLmludmFsaWRMb2dTY2FsZT90OmkuZ2xvYmFscy5zZXJpZXNMb2d9fSx7a2V5OlwiZ2V0QmFzZUxvZ1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubG9nKGUpL01hdGgubG9nKHQpfX0se2tleTpcImdldExvZ1ZhbFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtpZigwPT09ZSlyZXR1cm4gMDt2YXIgYT10aGlzLncscz0wPT09YS5nbG9iYWxzLm1pbllBcnJbaV0/LTE6dGhpcy5nZXRCYXNlTG9nKHQsYS5nbG9iYWxzLm1pbllBcnJbaV0pLHI9KDA9PT1hLmdsb2JhbHMubWF4WUFycltpXT8wOnRoaXMuZ2V0QmFzZUxvZyh0LGEuZ2xvYmFscy5tYXhZQXJyW2ldKSktcztyZXR1cm4gZTwxP2UvcjoodGhpcy5nZXRCYXNlTG9nKHQsZSktcykvcn19LHtrZXk6XCJnZXRMb2dZUmF0aW9zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudyxhPXRoaXMudy5nbG9iYWxzO3JldHVybiBhLnlMb2dSYXRpbz10LnNsaWNlKCksYS5sb2dZUmFuZ2U9YS55UmFuZ2UubWFwKChmdW5jdGlvbih0LHMpe2lmKGkuY29uZmlnLnlheGlzW3NdJiZlLncuY29uZmlnLnlheGlzW3NdLmxvZ2FyaXRobWljKXt2YXIgcixvPS1OdW1iZXIuTUFYX1ZBTFVFLG49TnVtYmVyLk1JTl9WQUxVRTtyZXR1cm4gYS5zZXJpZXNMb2cuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2kuY29uZmlnLnlheGlzW2VdJiZpLmNvbmZpZy55YXhpc1tlXS5sb2dhcml0aG1pYyYmKG89TWF0aC5tYXgodCxvKSxuPU1hdGgubWluKHQsbikpfSkpfSkpLHI9TWF0aC5wb3coYS55UmFuZ2Vbc10sTWF0aC5hYnMobi1vKS9hLnlSYW5nZVtzXSksYS55TG9nUmF0aW9bc109ci9hLmdyaWRIZWlnaHQscn19KSksYS5pbnZhbGlkTG9nU2NhbGU/dC5zbGljZSgpOmEueUxvZ1JhdGlvfX1dLFt7a2V5OlwiY2hlY2tDb21ib1Nlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSExLGk9MCxhPTA7cmV0dXJuIHQubGVuZ3RoJiZ2b2lkIDAhPT10WzBdLnR5cGUmJnQuZm9yRWFjaCgoZnVuY3Rpb24odCl7XCJiYXJcIiE9PXQudHlwZSYmXCJjb2x1bW5cIiE9PXQudHlwZSYmXCJjYW5kbGVzdGlja1wiIT09dC50eXBlJiZcImJveFBsb3RcIiE9PXQudHlwZXx8aSsrLHZvaWQgMCE9PXQudHlwZSYmYSsrfSkpLGE+MCYmKGU9ITApLHtjb21ib0JhckNvdW50OmksY29tYm9DaGFydHM6ZX19fSx7a2V5OlwiZXh0ZW5kQXJyYXlQcm9wc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gZS55YXhpcyYmKGU9dC5leHRlbmRZQXhpcyhlLGkpKSxlLmFubm90YXRpb25zJiYoZS5hbm5vdGF0aW9ucy55YXhpcyYmKGU9dC5leHRlbmRZQXhpc0Fubm90YXRpb25zKGUpKSxlLmFubm90YXRpb25zLnhheGlzJiYoZT10LmV4dGVuZFhBeGlzQW5ub3RhdGlvbnMoZSkpLGUuYW5ub3RhdGlvbnMucG9pbnRzJiYoZT10LmV4dGVuZFBvaW50QW5ub3RhdGlvbnMoZSkpKSxlfX1dKSx0fSgpLHc9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuYW5ub0N0eD1lfXJldHVybiByKHQsW3trZXk6XCJzZXRPcmllbnRhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbCxpPXRoaXMudztpZihcInZlcnRpY2FsXCI9PT10LmxhYmVsLm9yaWVudGF0aW9uKXt2YXIgYT1udWxsIT09ZT9lOjAscz1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteGF4aXMtYW5ub3RhdGlvbnMgLmFwZXhjaGFydHMteGF4aXMtYW5ub3RhdGlvbi1sYWJlbFtyZWw9J1wiLmNvbmNhdChhLFwiJ11cIikpO2lmKG51bGwhPT1zKXt2YXIgcj1zLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3Muc2V0QXR0cmlidXRlKFwieFwiLHBhcnNlRmxvYXQocy5nZXRBdHRyaWJ1dGUoXCJ4XCIpKS1yLmhlaWdodCs0KSxcInRvcFwiPT09dC5sYWJlbC5wb3NpdGlvbj9zLnNldEF0dHJpYnV0ZShcInlcIixwYXJzZUZsb2F0KHMuZ2V0QXR0cmlidXRlKFwieVwiKSkrci53aWR0aCk6cy5zZXRBdHRyaWJ1dGUoXCJ5XCIscGFyc2VGbG9hdChzLmdldEF0dHJpYnV0ZShcInlcIikpLXIud2lkdGgpO3ZhciBvPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5yb3RhdGVBcm91bmRDZW50ZXIocyksbj1vLngsbD1vLnk7cy5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInJvdGF0ZSgtOTAgXCIuY29uY2F0KG4sXCIgXCIpLmNvbmNhdChsLFwiKVwiKSl9fX19LHtrZXk6XCJhZGRCYWNrZ3JvdW5kVG9Bbm5vXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aWYoIXR8fHZvaWQgMD09PWUubGFiZWwudGV4dHx8dm9pZCAwIT09ZS5sYWJlbC50ZXh0JiYhU3RyaW5nKGUubGFiZWwudGV4dCkudHJpbSgpKXJldHVybiBudWxsO3ZhciBhPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1ncmlkXCIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHM9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPWUubGFiZWwuc3R5bGUucGFkZGluZy5sZWZ0LG89ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLnJpZ2h0LG49ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLnRvcCxsPWUubGFiZWwuc3R5bGUucGFkZGluZy5ib3R0b207XCJ2ZXJ0aWNhbFwiPT09ZS5sYWJlbC5vcmllbnRhdGlvbiYmKG49ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLmxlZnQsbD1lLmxhYmVsLnN0eWxlLnBhZGRpbmcucmlnaHQscj1lLmxhYmVsLnN0eWxlLnBhZGRpbmcudG9wLG89ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLmJvdHRvbSk7dmFyIGg9cy5sZWZ0LWEubGVmdC1yLGM9cy50b3AtYS50b3AtbixkPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3UmVjdChoLWkuZ2xvYmFscy5iYXJQYWRGb3JOdW1lcmljQXhpcyxjLHMud2lkdGgrcitvLHMuaGVpZ2h0K24rbCxlLmxhYmVsLmJvcmRlclJhZGl1cyxlLmxhYmVsLnN0eWxlLmJhY2tncm91bmQsMSxlLmxhYmVsLmJvcmRlcldpZHRoLGUubGFiZWwuYm9yZGVyQ29sb3IsMCk7cmV0dXJuIGUuaWQmJmQubm9kZS5jbGFzc0xpc3QuYWRkKGUuaWQpLGR9fSx7a2V5OlwiYW5ub3RhdGlvbnNCYWNrZ3JvdW5kXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9ZnVuY3Rpb24oaSxhLHMpe3ZhciByPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQocyxcIi1hbm5vdGF0aW9ucyAuYXBleGNoYXJ0cy1cIikuY29uY2F0KHMsXCItYW5ub3RhdGlvbi1sYWJlbFtyZWw9J1wiKS5jb25jYXQoYSxcIiddXCIpKTtpZihyKXt2YXIgbz1yLnBhcmVudE5vZGUsbj10LmFkZEJhY2tncm91bmRUb0Fubm8ocixpKTtuJiYoby5pbnNlcnRCZWZvcmUobi5ub2RlLHIpLGkubGFiZWwubW91c2VFbnRlciYmbi5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsaS5sYWJlbC5tb3VzZUVudGVyLmJpbmQodCxpKSksaS5sYWJlbC5tb3VzZUxlYXZlJiZuLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIixpLmxhYmVsLm1vdXNlTGVhdmUuYmluZCh0LGkpKSxpLmxhYmVsLmNsaWNrJiZuLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsaS5sYWJlbC5jbGljay5iaW5kKHQsaSkpKX19O2UuY29uZmlnLmFubm90YXRpb25zLnhheGlzLm1hcCgoZnVuY3Rpb24odCxlKXtpKHQsZSxcInhheGlzXCIpfSkpLGUuY29uZmlnLmFubm90YXRpb25zLnlheGlzLm1hcCgoZnVuY3Rpb24odCxlKXtpKHQsZSxcInlheGlzXCIpfSkpLGUuY29uZmlnLmFubm90YXRpb25zLnBvaW50cy5tYXAoKGZ1bmN0aW9uKHQsZSl7aSh0LGUsXCJwb2ludFwiKX0pKX19LHtrZXk6XCJnZXRZMVkyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaSxhPVwieTFcIj09PXQ/ZS55OmUueTIscz10aGlzLnc7aWYodGhpcy5hbm5vQ3R4LmludmVydEF4aXMpe3ZhciByPXMuZ2xvYmFscy5sYWJlbHMuaW5kZXhPZihhKTtzLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJihyPXMuZ2xvYmFscy5jYXRlZ29yeUxhYmVscy5pbmRleE9mKGEpKTt2YXIgbz1zLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteWF4aXMtdGV4dHMtZyB0ZXh0Om50aC1jaGlsZChcIisocisxKStcIilcIik7byYmKGk9cGFyc2VGbG9hdChvLmdldEF0dHJpYnV0ZShcInlcIikpKX1lbHNle3ZhciBuO2lmKHMuY29uZmlnLnlheGlzW2UueUF4aXNJbmRleF0ubG9nYXJpdGhtaWMpbj0oYT1uZXcgeSh0aGlzLmFubm9DdHguY3R4KS5nZXRMb2dWYWwoYSxlLnlBeGlzSW5kZXgpKS9zLmdsb2JhbHMueUxvZ1JhdGlvW2UueUF4aXNJbmRleF07ZWxzZSBuPShhLXMuZ2xvYmFscy5taW5ZQXJyW2UueUF4aXNJbmRleF0pLyhzLmdsb2JhbHMueVJhbmdlW2UueUF4aXNJbmRleF0vcy5nbG9iYWxzLmdyaWRIZWlnaHQpO2k9cy5nbG9iYWxzLmdyaWRIZWlnaHQtbiwhZS5tYXJrZXJ8fHZvaWQgMCE9PWUueSYmbnVsbCE9PWUueXx8KGk9MCkscy5jb25maWcueWF4aXNbZS55QXhpc0luZGV4XSYmcy5jb25maWcueWF4aXNbZS55QXhpc0luZGV4XS5yZXZlcnNlZCYmKGk9bil9cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGEmJmEuaW5kZXhPZihcInB4XCIpPi0xJiYoaT1wYXJzZUZsb2F0KGEpKSxpfX0se2tleTpcImdldFgxWDJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPXRoaXMuYW5ub0N0eC5pbnZlcnRBeGlzP2kuZ2xvYmFscy5taW5ZOmkuZ2xvYmFscy5taW5YLHM9dGhpcy5hbm5vQ3R4LmludmVydEF4aXM/aS5nbG9iYWxzLm1heFk6aS5nbG9iYWxzLm1heFgscj10aGlzLmFubm9DdHguaW52ZXJ0QXhpcz9pLmdsb2JhbHMueVJhbmdlWzBdOmkuZ2xvYmFscy54UmFuZ2Usbz0oZS54LWEpLyhyL2kuZ2xvYmFscy5ncmlkV2lkdGgpO3RoaXMuYW5ub0N0eC5pbnZlcnNlZFJldmVyc2VkQXhpcyYmKG89KHMtZS54KS8oci9pLmdsb2JhbHMuZ3JpZFdpZHRoKSksXCJjYXRlZ29yeVwiIT09aS5jb25maWcueGF4aXMudHlwZSYmIWkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpY3x8dGhpcy5hbm5vQ3R4LmludmVydEF4aXN8fGkuZ2xvYmFscy5kYXRhRm9ybWF0WE51bWVyaWN8fChvPXRoaXMuZ2V0U3RyaW5nWChlLngpKTt2YXIgbj0oZS54Mi1hKS8oci9pLmdsb2JhbHMuZ3JpZFdpZHRoKTtyZXR1cm4gdGhpcy5hbm5vQ3R4LmludmVyc2VkUmV2ZXJzZWRBeGlzJiYobj0ocy1lLngyKS8oci9pLmdsb2JhbHMuZ3JpZFdpZHRoKSksXCJjYXRlZ29yeVwiIT09aS5jb25maWcueGF4aXMudHlwZSYmIWkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpY3x8dGhpcy5hbm5vQ3R4LmludmVydEF4aXN8fGkuZ2xvYmFscy5kYXRhRm9ybWF0WE51bWVyaWN8fChuPXRoaXMuZ2V0U3RyaW5nWChlLngyKSksdm9pZCAwIT09ZS54JiZudWxsIT09ZS54fHwhZS5tYXJrZXJ8fChvPWkuZ2xvYmFscy5ncmlkV2lkdGgpLFwieDFcIj09PXQmJlwic3RyaW5nXCI9PXR5cGVvZiBlLngmJmUueC5pbmRleE9mKFwicHhcIik+LTEmJihvPXBhcnNlRmxvYXQoZS54KSksXCJ4MlwiPT09dCYmXCJzdHJpbmdcIj09dHlwZW9mIGUueDImJmUueDIuaW5kZXhPZihcInB4XCIpPi0xJiYobj1wYXJzZUZsb2F0KGUueDIpKSxcIngxXCI9PT10P286bn19LHtrZXk6XCJnZXRTdHJpbmdYXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dDtlLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJmUuZ2xvYmFscy5jYXRlZ29yeUxhYmVscy5sZW5ndGgmJih0PWUuZ2xvYmFscy5jYXRlZ29yeUxhYmVscy5pbmRleE9mKHQpKzEpO3ZhciBhPWUuZ2xvYmFscy5sYWJlbHMuaW5kZXhPZih0KSxzPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy14YXhpcy10ZXh0cy1nIHRleHQ6bnRoLWNoaWxkKFwiKyhhKzEpK1wiKVwiKTtyZXR1cm4gcyYmKGk9cGFyc2VGbG9hdChzLmdldEF0dHJpYnV0ZShcInhcIikpKSxpfX1dKSx0fSgpLGs9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuYW5ub0N0eD1lLHRoaXMuaW52ZXJ0QXhpcz10aGlzLmFubm9DdHguaW52ZXJ0QXhpcyx0aGlzLmhlbHBlcnM9bmV3IHcodGhpcy5hbm5vQ3R4KX1yZXR1cm4gcih0LFt7a2V5OlwiYWRkWGF4aXNBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhLHM9dGhpcy53LHI9dGhpcy5oZWxwZXJzLmdldFgxWDIoXCJ4MVwiLHQpLG89dC5sYWJlbC50ZXh0LG49dC5zdHJva2VEYXNoQXJyYXk7aWYoeC5pc051bWJlcihyKSl7aWYobnVsbD09PXQueDJ8fHZvaWQgMD09PXQueDIpe3ZhciBsPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3TGluZShyK3Qub2Zmc2V0WCwwK3Qub2Zmc2V0WSxyK3Qub2Zmc2V0WCxzLmdsb2JhbHMuZ3JpZEhlaWdodCt0Lm9mZnNldFksdC5ib3JkZXJDb2xvcixuLHQuYm9yZGVyV2lkdGgpO2UuYXBwZW5kQ2hpbGQobC5ub2RlKSx0LmlkJiZsLm5vZGUuY2xhc3NMaXN0LmFkZCh0LmlkKX1lbHNle2lmKChhPXRoaXMuaGVscGVycy5nZXRYMVgyKFwieDJcIix0KSk8cil7dmFyIGg9cjtyPWEsYT1ofXZhciBjPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3UmVjdChyK3Qub2Zmc2V0WCwwK3Qub2Zmc2V0WSxhLXIscy5nbG9iYWxzLmdyaWRIZWlnaHQrdC5vZmZzZXRZLDAsdC5maWxsQ29sb3IsdC5vcGFjaXR5LDEsdC5ib3JkZXJDb2xvcixuKTtjLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYW5ub3RhdGlvbi1yZWN0XCIpLGMuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hc2tcIi5jb25jYXQocy5nbG9iYWxzLmN1aWQsXCIpXCIpKSxlLmFwcGVuZENoaWxkKGMubm9kZSksdC5pZCYmYy5ub2RlLmNsYXNzTGlzdC5hZGQodC5pZCl9dmFyIGQ9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmdldFRleHRSZWN0cyhvLHBhcnNlRmxvYXQodC5sYWJlbC5zdHlsZS5mb250U2l6ZSkpLGc9XCJ0b3BcIj09PXQubGFiZWwucG9zaXRpb24/NDpcImNlbnRlclwiPT09dC5sYWJlbC5wb3NpdGlvbj9zLmdsb2JhbHMuZ3JpZEhlaWdodC8yKyhcInZlcnRpY2FsXCI9PT10LmxhYmVsLm9yaWVudGF0aW9uP2Qud2lkdGgvMjowKTpzLmdsb2JhbHMuZ3JpZEhlaWdodCx1PXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3VGV4dCh7eDpyK3QubGFiZWwub2Zmc2V0WCx5OmcrdC5sYWJlbC5vZmZzZXRZLShcInZlcnRpY2FsXCI9PT10LmxhYmVsLm9yaWVudGF0aW9uP1widG9wXCI9PT10LmxhYmVsLnBvc2l0aW9uP2Qud2lkdGgvMi0xMjotZC53aWR0aC8yOjApLHRleHQ6byx0ZXh0QW5jaG9yOnQubGFiZWwudGV4dEFuY2hvcixmb250U2l6ZTp0LmxhYmVsLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6dC5sYWJlbC5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6dC5sYWJlbC5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjp0LmxhYmVsLnN0eWxlLmNvbG9yLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9uLWxhYmVsIFwiLmNvbmNhdCh0LmxhYmVsLnN0eWxlLmNzc0NsYXNzLFwiIFwiKS5jb25jYXQodC5pZD90LmlkOlwiXCIpfSk7dS5hdHRyKHtyZWw6aX0pLGUuYXBwZW5kQ2hpbGQodS5ub2RlKSx0aGlzLmFubm9DdHguaGVscGVycy5zZXRPcmllbnRhdGlvbnModCxpKX19fSx7a2V5OlwiZHJhd1hBeGlzQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT10aGlzLmFubm9DdHguZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9uc1wifSk7cmV0dXJuIGUuY29uZmlnLmFubm90YXRpb25zLnhheGlzLm1hcCgoZnVuY3Rpb24oZSxhKXt0LmFkZFhheGlzQW5ub3RhdGlvbihlLGkubm9kZSxhKX0pKSxpfX1dKSx0fSgpLEE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuYW5ub0N0eD1lLHRoaXMuaGVscGVycz1uZXcgdyh0aGlzLmFubm9DdHgpfXJldHVybiByKHQsW3trZXk6XCJhZGRZYXhpc0Fubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGEscz10aGlzLncscj10LnN0cm9rZURhc2hBcnJheSxvPXRoaXMuaGVscGVycy5nZXRZMVkyKFwieTFcIix0KSxuPXQubGFiZWwudGV4dDtpZihudWxsPT09dC55Mnx8dm9pZCAwPT09dC55Mil7dmFyIGw9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdMaW5lKDArdC5vZmZzZXRYLG8rdC5vZmZzZXRZLHRoaXMuX2dldFlBeGlzQW5ub3RhdGlvbldpZHRoKHQpLG8rdC5vZmZzZXRZLHQuYm9yZGVyQ29sb3Iscix0LmJvcmRlcldpZHRoKTtlLmFwcGVuZENoaWxkKGwubm9kZSksdC5pZCYmbC5ub2RlLmNsYXNzTGlzdC5hZGQodC5pZCl9ZWxzZXtpZigoYT10aGlzLmhlbHBlcnMuZ2V0WTFZMihcInkyXCIsdCkpPm8pe3ZhciBoPW87bz1hLGE9aH12YXIgYz10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd1JlY3QoMCt0Lm9mZnNldFgsYSt0Lm9mZnNldFksdGhpcy5fZ2V0WUF4aXNBbm5vdGF0aW9uV2lkdGgodCksby1hLDAsdC5maWxsQ29sb3IsdC5vcGFjaXR5LDEsdC5ib3JkZXJDb2xvcixyKTtjLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYW5ub3RhdGlvbi1yZWN0XCIpLGMuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hc2tcIi5jb25jYXQocy5nbG9iYWxzLmN1aWQsXCIpXCIpKSxlLmFwcGVuZENoaWxkKGMubm9kZSksdC5pZCYmYy5ub2RlLmNsYXNzTGlzdC5hZGQodC5pZCl9dmFyIGQ9XCJyaWdodFwiPT09dC5sYWJlbC5wb3NpdGlvbj9zLmdsb2JhbHMuZ3JpZFdpZHRoOlwiY2VudGVyXCI9PT10LmxhYmVsLnBvc2l0aW9uP3MuZ2xvYmFscy5ncmlkV2lkdGgvMjowLGc9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdUZXh0KHt4OmQrdC5sYWJlbC5vZmZzZXRYLHk6KG51bGwhPWE/YTpvKSt0LmxhYmVsLm9mZnNldFktMyx0ZXh0Om4sdGV4dEFuY2hvcjp0LmxhYmVsLnRleHRBbmNob3IsZm9udFNpemU6dC5sYWJlbC5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OnQubGFiZWwuc3R5bGUuZm9udEZhbWlseSxmb250V2VpZ2h0OnQubGFiZWwuc3R5bGUuZm9udFdlaWdodCxmb3JlQ29sb3I6dC5sYWJlbC5zdHlsZS5jb2xvcixjc3NDbGFzczpcImFwZXhjaGFydHMteWF4aXMtYW5ub3RhdGlvbi1sYWJlbCBcIi5jb25jYXQodC5sYWJlbC5zdHlsZS5jc3NDbGFzcyxcIiBcIikuY29uY2F0KHQuaWQ/dC5pZDpcIlwiKX0pO2cuYXR0cih7cmVsOml9KSxlLmFwcGVuZENoaWxkKGcubm9kZSl9fSx7a2V5OlwiX2dldFlBeGlzQW5ub3RhdGlvbldpZHRoXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O2UuZ2xvYmFscy5ncmlkV2lkdGg7cmV0dXJuKHQud2lkdGguaW5kZXhPZihcIiVcIik+LTE/ZS5nbG9iYWxzLmdyaWRXaWR0aCpwYXJzZUludCh0LndpZHRoLDEwKS8xMDA6cGFyc2VJbnQodC53aWR0aCwxMCkpK3Qub2Zmc2V0WH19LHtrZXk6XCJkcmF3WUF4aXNBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLWFubm90YXRpb25zXCJ9KTtyZXR1cm4gZS5jb25maWcuYW5ub3RhdGlvbnMueWF4aXMubWFwKChmdW5jdGlvbihlLGEpe3QuYWRkWWF4aXNBbm5vdGF0aW9uKGUsaS5ub2RlLGEpfSkpLGl9fV0pLHR9KCksUz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5hbm5vQ3R4PWUsdGhpcy5oZWxwZXJzPW5ldyB3KHRoaXMuYW5ub0N0eCl9cmV0dXJuIHIodCxbe2tleTpcImFkZFBvaW50QW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt0aGlzLnc7dmFyIGE9dGhpcy5oZWxwZXJzLmdldFgxWDIoXCJ4MVwiLHQpLHM9dGhpcy5oZWxwZXJzLmdldFkxWTIoXCJ5MVwiLHQpO2lmKHguaXNOdW1iZXIoYSkpe3ZhciByPXtwU2l6ZTp0Lm1hcmtlci5zaXplLHBvaW50U3Ryb2tlV2lkdGg6dC5tYXJrZXIuc3Ryb2tlV2lkdGgscG9pbnRGaWxsQ29sb3I6dC5tYXJrZXIuZmlsbENvbG9yLHBvaW50U3Ryb2tlQ29sb3I6dC5tYXJrZXIuc3Ryb2tlQ29sb3Isc2hhcGU6dC5tYXJrZXIuc2hhcGUscFJhZGl1czp0Lm1hcmtlci5yYWRpdXMsY2xhc3M6XCJhcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb24tbWFya2VyIFwiLmNvbmNhdCh0Lm1hcmtlci5jc3NDbGFzcyxcIiBcIikuY29uY2F0KHQuaWQ/dC5pZDpcIlwiKX0sbz10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd01hcmtlcihhK3QubWFya2VyLm9mZnNldFgscyt0Lm1hcmtlci5vZmZzZXRZLHIpO2UuYXBwZW5kQ2hpbGQoby5ub2RlKTt2YXIgbj10LmxhYmVsLnRleHQ/dC5sYWJlbC50ZXh0OlwiXCIsbD10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd1RleHQoe3g6YSt0LmxhYmVsLm9mZnNldFgseTpzK3QubGFiZWwub2Zmc2V0WS10Lm1hcmtlci5zaXplLXBhcnNlRmxvYXQodC5sYWJlbC5zdHlsZS5mb250U2l6ZSkvMS42LHRleHQ6bix0ZXh0QW5jaG9yOnQubGFiZWwudGV4dEFuY2hvcixmb250U2l6ZTp0LmxhYmVsLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6dC5sYWJlbC5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6dC5sYWJlbC5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjp0LmxhYmVsLnN0eWxlLmNvbG9yLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy1wb2ludC1hbm5vdGF0aW9uLWxhYmVsIFwiLmNvbmNhdCh0LmxhYmVsLnN0eWxlLmNzc0NsYXNzLFwiIFwiKS5jb25jYXQodC5pZD90LmlkOlwiXCIpfSk7aWYobC5hdHRyKHtyZWw6aX0pLGUuYXBwZW5kQ2hpbGQobC5ub2RlKSx0LmN1c3RvbVNWRy5TVkcpe3ZhciBoPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb25zLWN1c3RvbS1zdmcgXCIrdC5jdXN0b21TVkcuY3NzQ2xhc3N9KTtoLmF0dHIoe3RyYW5zZm9ybTpcInRyYW5zbGF0ZShcIi5jb25jYXQoYSt0LmN1c3RvbVNWRy5vZmZzZXRYLFwiLCBcIikuY29uY2F0KHMrdC5jdXN0b21TVkcub2Zmc2V0WSxcIilcIil9KSxoLm5vZGUuaW5uZXJIVE1MPXQuY3VzdG9tU1ZHLlNWRyxlLmFwcGVuZENoaWxkKGgubm9kZSl9aWYodC5pbWFnZS5wYXRoKXt2YXIgYz10LmltYWdlLndpZHRoP3QuaW1hZ2Uud2lkdGg6MjAsZD10LmltYWdlLmhlaWdodD90LmltYWdlLmhlaWdodDoyMDtvPXRoaXMuYW5ub0N0eC5hZGRJbWFnZSh7eDphK3QuaW1hZ2Uub2Zmc2V0WC1jLzIseTpzK3QuaW1hZ2Uub2Zmc2V0WS1kLzIsd2lkdGg6YyxoZWlnaHQ6ZCxwYXRoOnQuaW1hZ2UucGF0aCxhcHBlbmRUbzpcIi5hcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb25zXCJ9KX10Lm1vdXNlRW50ZXImJm8ubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLHQubW91c2VFbnRlci5iaW5kKHRoaXMsdCkpLHQubW91c2VMZWF2ZSYmby5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsdC5tb3VzZUxlYXZlLmJpbmQodGhpcyx0KSksdC5jbGljayYmby5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHQuY2xpY2suYmluZCh0aGlzLHQpKX19fSx7a2V5OlwiZHJhd1BvaW50QW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT10aGlzLmFubm9DdHguZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1wb2ludC1hbm5vdGF0aW9uc1wifSk7cmV0dXJuIGUuY29uZmlnLmFubm90YXRpb25zLnBvaW50cy5tYXAoKGZ1bmN0aW9uKGUsYSl7dC5hZGRQb2ludEFubm90YXRpb24oZSxpLm5vZGUsYSl9KSksaX19XSksdH0oKTt2YXIgQz17bmFtZTpcImVuXCIsb3B0aW9uczp7bW9udGhzOltcIkphbnVhcnlcIixcIkZlYnJ1YXJ5XCIsXCJNYXJjaFwiLFwiQXByaWxcIixcIk1heVwiLFwiSnVuZVwiLFwiSnVseVwiLFwiQXVndXN0XCIsXCJTZXB0ZW1iZXJcIixcIk9jdG9iZXJcIixcIk5vdmVtYmVyXCIsXCJEZWNlbWJlclwiXSxzaG9ydE1vbnRoczpbXCJKYW5cIixcIkZlYlwiLFwiTWFyXCIsXCJBcHJcIixcIk1heVwiLFwiSnVuXCIsXCJKdWxcIixcIkF1Z1wiLFwiU2VwXCIsXCJPY3RcIixcIk5vdlwiLFwiRGVjXCJdLGRheXM6W1wiU3VuZGF5XCIsXCJNb25kYXlcIixcIlR1ZXNkYXlcIixcIldlZG5lc2RheVwiLFwiVGh1cnNkYXlcIixcIkZyaWRheVwiLFwiU2F0dXJkYXlcIl0sc2hvcnREYXlzOltcIlN1blwiLFwiTW9uXCIsXCJUdWVcIixcIldlZFwiLFwiVGh1XCIsXCJGcmlcIixcIlNhdFwiXSx0b29sYmFyOntleHBvcnRUb1NWRzpcIkRvd25sb2FkIFNWR1wiLGV4cG9ydFRvUE5HOlwiRG93bmxvYWQgUE5HXCIsZXhwb3J0VG9DU1Y6XCJEb3dubG9hZCBDU1ZcIixtZW51OlwiTWVudVwiLHNlbGVjdGlvbjpcIlNlbGVjdGlvblwiLHNlbGVjdGlvblpvb206XCJTZWxlY3Rpb24gWm9vbVwiLHpvb21JbjpcIlpvb20gSW5cIix6b29tT3V0OlwiWm9vbSBPdXRcIixwYW46XCJQYW5uaW5nXCIscmVzZXQ6XCJSZXNldCBab29tXCJ9fX0sTD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXthKHRoaXMsdCksdGhpcy55QXhpcz17c2hvdzohMCxzaG93QWx3YXlzOiExLHNob3dGb3JOdWxsU2VyaWVzOiEwLHNlcmllc05hbWU6dm9pZCAwLG9wcG9zaXRlOiExLHJldmVyc2VkOiExLGxvZ2FyaXRobWljOiExLGxvZ0Jhc2U6MTAsdGlja0Ftb3VudDp2b2lkIDAsZm9yY2VOaWNlU2NhbGU6ITEsbWF4OnZvaWQgMCxtaW46dm9pZCAwLGZsb2F0aW5nOiExLGRlY2ltYWxzSW5GbG9hdDp2b2lkIDAsbGFiZWxzOntzaG93OiEwLG1pbldpZHRoOjAsbWF4V2lkdGg6MTYwLG9mZnNldFg6MCxvZmZzZXRZOjAsYWxpZ246dm9pZCAwLHJvdGF0ZTowLHBhZGRpbmc6MjAsc3R5bGU6e2NvbG9yczpbXSxmb250U2l6ZTpcIjExcHhcIixmb250V2VpZ2h0OjQwMCxmb250RmFtaWx5OnZvaWQgMCxjc3NDbGFzczpcIlwifSxmb3JtYXR0ZXI6dm9pZCAwfSxheGlzQm9yZGVyOntzaG93OiExLGNvbG9yOlwiI2UwZTBlMFwiLHdpZHRoOjEsb2Zmc2V0WDowLG9mZnNldFk6MH0sYXhpc1RpY2tzOntzaG93OiExLGNvbG9yOlwiI2UwZTBlMFwiLHdpZHRoOjYsb2Zmc2V0WDowLG9mZnNldFk6MH0sdGl0bGU6e3RleHQ6dm9pZCAwLHJvdGF0ZTotOTAsb2Zmc2V0WTowLG9mZnNldFg6MCxzdHlsZTp7Y29sb3I6dm9pZCAwLGZvbnRTaXplOlwiMTFweFwiLGZvbnRXZWlnaHQ6OTAwLGZvbnRGYW1pbHk6dm9pZCAwLGNzc0NsYXNzOlwiXCJ9fSx0b29sdGlwOntlbmFibGVkOiExLG9mZnNldFg6MH0sY3Jvc3NoYWlyczp7c2hvdzohMCxwb3NpdGlvbjpcImZyb250XCIsc3Ryb2tlOntjb2xvcjpcIiNiNmI2YjZcIix3aWR0aDoxLGRhc2hBcnJheTowfX19LHRoaXMucG9pbnRBbm5vdGF0aW9uPXtpZDp2b2lkIDAseDowLHk6bnVsbCx5QXhpc0luZGV4OjAsc2VyaWVzSW5kZXg6MCxtb3VzZUVudGVyOnZvaWQgMCxtb3VzZUxlYXZlOnZvaWQgMCxjbGljazp2b2lkIDAsbWFya2VyOntzaXplOjQsZmlsbENvbG9yOlwiI2ZmZlwiLHN0cm9rZVdpZHRoOjIsc3Ryb2tlQ29sb3I6XCIjMzMzXCIsc2hhcGU6XCJjaXJjbGVcIixvZmZzZXRYOjAsb2Zmc2V0WTowLHJhZGl1czoyLGNzc0NsYXNzOlwiXCJ9LGxhYmVsOntib3JkZXJDb2xvcjpcIiNjMmMyYzJcIixib3JkZXJXaWR0aDoxLGJvcmRlclJhZGl1czoyLHRleHQ6dm9pZCAwLHRleHRBbmNob3I6XCJtaWRkbGVcIixvZmZzZXRYOjAsb2Zmc2V0WTowLG1vdXNlRW50ZXI6dm9pZCAwLG1vdXNlTGVhdmU6dm9pZCAwLGNsaWNrOnZvaWQgMCxzdHlsZTp7YmFja2dyb3VuZDpcIiNmZmZcIixjb2xvcjp2b2lkIDAsZm9udFNpemU6XCIxMXB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsY3NzQ2xhc3M6XCJcIixwYWRkaW5nOntsZWZ0OjUscmlnaHQ6NSx0b3A6Mixib3R0b206Mn19fSxjdXN0b21TVkc6e1NWRzp2b2lkIDAsY3NzQ2xhc3M6dm9pZCAwLG9mZnNldFg6MCxvZmZzZXRZOjB9LGltYWdlOntwYXRoOnZvaWQgMCx3aWR0aDoyMCxoZWlnaHQ6MjAsb2Zmc2V0WDowLG9mZnNldFk6MH19LHRoaXMueUF4aXNBbm5vdGF0aW9uPXtpZDp2b2lkIDAseTowLHkyOm51bGwsc3Ryb2tlRGFzaEFycmF5OjEsZmlsbENvbG9yOlwiI2MyYzJjMlwiLGJvcmRlckNvbG9yOlwiI2MyYzJjMlwiLGJvcmRlcldpZHRoOjEsb3BhY2l0eTouMyxvZmZzZXRYOjAsb2Zmc2V0WTowLHdpZHRoOlwiMTAwJVwiLHlBeGlzSW5kZXg6MCxsYWJlbDp7Ym9yZGVyQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyV2lkdGg6MSxib3JkZXJSYWRpdXM6Mix0ZXh0OnZvaWQgMCx0ZXh0QW5jaG9yOlwiZW5kXCIscG9zaXRpb246XCJyaWdodFwiLG9mZnNldFg6MCxvZmZzZXRZOi0zLG1vdXNlRW50ZXI6dm9pZCAwLG1vdXNlTGVhdmU6dm9pZCAwLGNsaWNrOnZvaWQgMCxzdHlsZTp7YmFja2dyb3VuZDpcIiNmZmZcIixjb2xvcjp2b2lkIDAsZm9udFNpemU6XCIxMXB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsY3NzQ2xhc3M6XCJcIixwYWRkaW5nOntsZWZ0OjUscmlnaHQ6NSx0b3A6Mixib3R0b206Mn19fX0sdGhpcy54QXhpc0Fubm90YXRpb249e2lkOnZvaWQgMCx4OjAseDI6bnVsbCxzdHJva2VEYXNoQXJyYXk6MSxmaWxsQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyV2lkdGg6MSxvcGFjaXR5Oi4zLG9mZnNldFg6MCxvZmZzZXRZOjAsbGFiZWw6e2JvcmRlckNvbG9yOlwiI2MyYzJjMlwiLGJvcmRlcldpZHRoOjEsYm9yZGVyUmFkaXVzOjIsdGV4dDp2b2lkIDAsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLG9yaWVudGF0aW9uOlwidmVydGljYWxcIixwb3NpdGlvbjpcInRvcFwiLG9mZnNldFg6MCxvZmZzZXRZOjAsbW91c2VFbnRlcjp2b2lkIDAsbW91c2VMZWF2ZTp2b2lkIDAsY2xpY2s6dm9pZCAwLHN0eWxlOntiYWNrZ3JvdW5kOlwiI2ZmZlwiLGNvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjExcHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCxjc3NDbGFzczpcIlwiLHBhZGRpbmc6e2xlZnQ6NSxyaWdodDo1LHRvcDoyLGJvdHRvbToyfX19fSx0aGlzLnRleHQ9e3g6MCx5OjAsdGV4dDpcIlwiLHRleHRBbmNob3I6XCJzdGFydFwiLGZvcmVDb2xvcjp2b2lkIDAsZm9udFNpemU6XCIxM3B4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsYXBwZW5kVG86XCIuYXBleGNoYXJ0cy1hbm5vdGF0aW9uc1wiLGJhY2tncm91bmRDb2xvcjpcInRyYW5zcGFyZW50XCIsYm9yZGVyQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyUmFkaXVzOjAsYm9yZGVyV2lkdGg6MCxwYWRkaW5nTGVmdDo0LHBhZGRpbmdSaWdodDo0LHBhZGRpbmdUb3A6MixwYWRkaW5nQm90dG9tOjJ9fXJldHVybiByKHQsW3trZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57YW5ub3RhdGlvbnM6e3lheGlzOlt0aGlzLnlBeGlzQW5ub3RhdGlvbl0seGF4aXM6W3RoaXMueEF4aXNBbm5vdGF0aW9uXSxwb2ludHM6W3RoaXMucG9pbnRBbm5vdGF0aW9uXSx0ZXh0czpbXSxpbWFnZXM6W10sc2hhcGVzOltdfSxjaGFydDp7YW5pbWF0aW9uczp7ZW5hYmxlZDohMCxlYXNpbmc6XCJlYXNlaW5vdXRcIixzcGVlZDo4MDAsYW5pbWF0ZUdyYWR1YWxseTp7ZGVsYXk6MTUwLGVuYWJsZWQ6ITB9LGR5bmFtaWNBbmltYXRpb246e2VuYWJsZWQ6ITAsc3BlZWQ6MzUwfX0sYmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCIsbG9jYWxlczpbQ10sZGVmYXVsdExvY2FsZTpcImVuXCIsZHJvcFNoYWRvdzp7ZW5hYmxlZDohMSxlbmFibGVkT25TZXJpZXM6dm9pZCAwLHRvcDoyLGxlZnQ6MixibHVyOjQsY29sb3I6XCIjMDAwXCIsb3BhY2l0eTouMzV9LGV2ZW50czp7YW5pbWF0aW9uRW5kOnZvaWQgMCxiZWZvcmVNb3VudDp2b2lkIDAsbW91bnRlZDp2b2lkIDAsdXBkYXRlZDp2b2lkIDAsY2xpY2s6dm9pZCAwLG1vdXNlTW92ZTp2b2lkIDAsbW91c2VMZWF2ZTp2b2lkIDAseEF4aXNMYWJlbENsaWNrOnZvaWQgMCxsZWdlbmRDbGljazp2b2lkIDAsbWFya2VyQ2xpY2s6dm9pZCAwLHNlbGVjdGlvbjp2b2lkIDAsZGF0YVBvaW50U2VsZWN0aW9uOnZvaWQgMCxkYXRhUG9pbnRNb3VzZUVudGVyOnZvaWQgMCxkYXRhUG9pbnRNb3VzZUxlYXZlOnZvaWQgMCxiZWZvcmVab29tOnZvaWQgMCxiZWZvcmVSZXNldFpvb206dm9pZCAwLHpvb21lZDp2b2lkIDAsc2Nyb2xsZWQ6dm9pZCAwLGJydXNoU2Nyb2xsZWQ6dm9pZCAwfSxmb3JlQ29sb3I6XCIjMzczZDNmXCIsZm9udEZhbWlseTpcIkhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWZcIixoZWlnaHQ6XCJhdXRvXCIscGFyZW50SGVpZ2h0T2Zmc2V0OjE1LHJlZHJhd09uUGFyZW50UmVzaXplOiEwLHJlZHJhd09uV2luZG93UmVzaXplOiEwLGlkOnZvaWQgMCxncm91cDp2b2lkIDAsb2Zmc2V0WDowLG9mZnNldFk6MCxzZWxlY3Rpb246e2VuYWJsZWQ6ITEsdHlwZTpcInhcIixmaWxsOntjb2xvcjpcIiMyNDI5MmVcIixvcGFjaXR5Oi4xfSxzdHJva2U6e3dpZHRoOjEsY29sb3I6XCIjMjQyOTJlXCIsb3BhY2l0eTouNCxkYXNoQXJyYXk6M30seGF4aXM6e21pbjp2b2lkIDAsbWF4OnZvaWQgMH0seWF4aXM6e21pbjp2b2lkIDAsbWF4OnZvaWQgMH19LHNwYXJrbGluZTp7ZW5hYmxlZDohMX0sYnJ1c2g6e2VuYWJsZWQ6ITEsYXV0b1NjYWxlWWF4aXM6ITAsdGFyZ2V0OnZvaWQgMH0sc3RhY2tlZDohMSxzdGFja1R5cGU6XCJub3JtYWxcIix0b29sYmFyOntzaG93OiEwLG9mZnNldFg6MCxvZmZzZXRZOjAsdG9vbHM6e2Rvd25sb2FkOiEwLHNlbGVjdGlvbjohMCx6b29tOiEwLHpvb21pbjohMCx6b29tb3V0OiEwLHBhbjohMCxyZXNldDohMCxjdXN0b21JY29uczpbXX0sZXhwb3J0Ontjc3Y6e2ZpbGVuYW1lOnZvaWQgMCxjb2x1bW5EZWxpbWl0ZXI6XCIsXCIsaGVhZGVyQ2F0ZWdvcnk6XCJjYXRlZ29yeVwiLGhlYWRlclZhbHVlOlwidmFsdWVcIixkYXRlRm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRGF0ZSh0KS50b0RhdGVTdHJpbmcoKX19LHBuZzp7ZmlsZW5hbWU6dm9pZCAwfSxzdmc6e2ZpbGVuYW1lOnZvaWQgMH19LGF1dG9TZWxlY3RlZDpcInpvb21cIn0sdHlwZTpcImxpbmVcIix3aWR0aDpcIjEwMCVcIix6b29tOntlbmFibGVkOiEwLHR5cGU6XCJ4XCIsYXV0b1NjYWxlWWF4aXM6ITEsem9vbWVkQXJlYTp7ZmlsbDp7Y29sb3I6XCIjOTBDQUY5XCIsb3BhY2l0eTouNH0sc3Ryb2tlOntjb2xvcjpcIiMwRDQ3QTFcIixvcGFjaXR5Oi40LHdpZHRoOjF9fX19LHBsb3RPcHRpb25zOnthcmVhOntmaWxsVG86XCJvcmlnaW5cIn0sYmFyOntob3Jpem9udGFsOiExLGNvbHVtbldpZHRoOlwiNzAlXCIsYmFySGVpZ2h0OlwiNzAlXCIsZGlzdHJpYnV0ZWQ6ITEsYm9yZGVyUmFkaXVzOjAsYm9yZGVyUmFkaXVzQXBwbGljYXRpb246XCJhcm91bmRcIixib3JkZXJSYWRpdXNXaGVuU3RhY2tlZDpcImxhc3RcIixyYW5nZUJhck92ZXJsYXA6ITAscmFuZ2VCYXJHcm91cFJvd3M6ITEsaGlkZVplcm9CYXJzV2hlbkdyb3VwZWQ6ITEsaXNEdW1iYmVsbDohMSxkdW1iYmVsbENvbG9yczp2b2lkIDAsY29sb3JzOntyYW5nZXM6W10sYmFja2dyb3VuZEJhckNvbG9yczpbXSxiYWNrZ3JvdW5kQmFyT3BhY2l0eToxLGJhY2tncm91bmRCYXJSYWRpdXM6MH0sZGF0YUxhYmVsczp7cG9zaXRpb246XCJ0b3BcIixtYXhJdGVtczoxMDAsaGlkZU92ZXJmbG93aW5nTGFiZWxzOiEwLG9yaWVudGF0aW9uOlwiaG9yaXpvbnRhbFwiLHRvdGFsOntlbmFibGVkOiExLGZvcm1hdHRlcjp2b2lkIDAsb2Zmc2V0WDowLG9mZnNldFk6MCxzdHlsZTp7Y29sb3I6XCIjMzczZDNmXCIsZm9udFNpemU6XCIxMnB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo2MDB9fX19LGJ1YmJsZTp7elNjYWxpbmc6ITAsbWluQnViYmxlUmFkaXVzOnZvaWQgMCxtYXhCdWJibGVSYWRpdXM6dm9pZCAwfSxjYW5kbGVzdGljazp7Y29sb3JzOnt1cHdhcmQ6XCIjMDBCNzQ2XCIsZG93bndhcmQ6XCIjRUY0MDNDXCJ9LHdpY2s6e3VzZUZpbGxDb2xvcjohMH19LGJveFBsb3Q6e2NvbG9yczp7dXBwZXI6XCIjMDBFMzk2XCIsbG93ZXI6XCIjMDA4RkZCXCJ9fSxoZWF0bWFwOntyYWRpdXM6MixlbmFibGVTaGFkZXM6ITAsc2hhZGVJbnRlbnNpdHk6LjUscmV2ZXJzZU5lZ2F0aXZlU2hhZGU6ITEsZGlzdHJpYnV0ZWQ6ITEsdXNlRmlsbENvbG9yQXNTdHJva2U6ITEsY29sb3JTY2FsZTp7aW52ZXJzZTohMSxyYW5nZXM6W10sbWluOnZvaWQgMCxtYXg6dm9pZCAwfX0sdHJlZW1hcDp7ZW5hYmxlU2hhZGVzOiEwLHNoYWRlSW50ZW5zaXR5Oi41LGRpc3RyaWJ1dGVkOiExLHJldmVyc2VOZWdhdGl2ZVNoYWRlOiExLHVzZUZpbGxDb2xvckFzU3Ryb2tlOiExLGNvbG9yU2NhbGU6e2ludmVyc2U6ITEscmFuZ2VzOltdLG1pbjp2b2lkIDAsbWF4OnZvaWQgMH19LHJhZGlhbEJhcjp7aW52ZXJzZU9yZGVyOiExLHN0YXJ0QW5nbGU6MCxlbmRBbmdsZTozNjAsb2Zmc2V0WDowLG9mZnNldFk6MCxob2xsb3c6e21hcmdpbjo1LHNpemU6XCI1MCVcIixiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixpbWFnZTp2b2lkIDAsaW1hZ2VXaWR0aDoxNTAsaW1hZ2VIZWlnaHQ6MTUwLGltYWdlT2Zmc2V0WDowLGltYWdlT2Zmc2V0WTowLGltYWdlQ2xpcHBlZDohMCxwb3NpdGlvbjpcImZyb250XCIsZHJvcFNoYWRvdzp7ZW5hYmxlZDohMSx0b3A6MCxsZWZ0OjAsYmx1cjozLGNvbG9yOlwiIzAwMFwiLG9wYWNpdHk6LjV9fSx0cmFjazp7c2hvdzohMCxzdGFydEFuZ2xlOnZvaWQgMCxlbmRBbmdsZTp2b2lkIDAsYmFja2dyb3VuZDpcIiNmMmYyZjJcIixzdHJva2VXaWR0aDpcIjk3JVwiLG9wYWNpdHk6MSxtYXJnaW46NSxkcm9wU2hhZG93OntlbmFibGVkOiExLHRvcDowLGxlZnQ6MCxibHVyOjMsY29sb3I6XCIjMDAwXCIsb3BhY2l0eTouNX19LGRhdGFMYWJlbHM6e3Nob3c6ITAsbmFtZTp7c2hvdzohMCxmb250U2l6ZTpcIjE2cHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjYwMCxjb2xvcjp2b2lkIDAsb2Zmc2V0WTowLGZvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdH19LHZhbHVlOntzaG93OiEwLGZvbnRTaXplOlwiMTRweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NDAwLGNvbG9yOnZvaWQgMCxvZmZzZXRZOjE2LGZvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdCtcIiVcIn19LHRvdGFsOntzaG93OiExLGxhYmVsOlwiVG90YWxcIixmb250U2l6ZTpcIjE2cHhcIixmb250V2VpZ2h0OjYwMCxmb250RmFtaWx5OnZvaWQgMCxjb2xvcjp2b2lkIDAsZm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0Lmdsb2JhbHMuc2VyaWVzVG90YWxzLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlfSksMCkvdC5nbG9iYWxzLnNlcmllcy5sZW5ndGgrXCIlXCJ9fX19LHBpZTp7Y3VzdG9tU2NhbGU6MSxvZmZzZXRYOjAsb2Zmc2V0WTowLHN0YXJ0QW5nbGU6MCxlbmRBbmdsZTozNjAsZXhwYW5kT25DbGljazohMCxkYXRhTGFiZWxzOntvZmZzZXQ6MCxtaW5BbmdsZVRvU2hvd0xhYmVsOjEwfSxkb251dDp7c2l6ZTpcIjY1JVwiLGJhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiLGxhYmVsczp7c2hvdzohMSxuYW1lOntzaG93OiEwLGZvbnRTaXplOlwiMTZweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NjAwLGNvbG9yOnZvaWQgMCxvZmZzZXRZOi0xMCxmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHR9fSx2YWx1ZTp7c2hvdzohMCxmb250U2l6ZTpcIjIwcHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCxjb2xvcjp2b2lkIDAsb2Zmc2V0WToxMCxmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHR9fSx0b3RhbDp7c2hvdzohMSxzaG93QWx3YXlzOiExLGxhYmVsOlwiVG90YWxcIixmb250U2l6ZTpcIjE2cHhcIixmb250V2VpZ2h0OjQwMCxmb250RmFtaWx5OnZvaWQgMCxjb2xvcjp2b2lkIDAsZm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0Lmdsb2JhbHMuc2VyaWVzVG90YWxzLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlfSksMCl9fX19fSxwb2xhckFyZWE6e3JpbmdzOntzdHJva2VXaWR0aDoxLHN0cm9rZUNvbG9yOlwiI2U4ZThlOFwifSxzcG9rZXM6e3N0cm9rZVdpZHRoOjEsY29ubmVjdG9yQ29sb3JzOlwiI2U4ZThlOFwifX0scmFkYXI6e3NpemU6dm9pZCAwLG9mZnNldFg6MCxvZmZzZXRZOjAscG9seWdvbnM6e3N0cm9rZVdpZHRoOjEsc3Ryb2tlQ29sb3JzOlwiI2U4ZThlOFwiLGNvbm5lY3RvckNvbG9yczpcIiNlOGU4ZThcIixmaWxsOntjb2xvcnM6dm9pZCAwfX19fSxjb2xvcnM6dm9pZCAwLGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITAsZW5hYmxlZE9uU2VyaWVzOnZvaWQgMCxmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPT10P3Q6XCJcIn0sdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGRpc3RyaWJ1dGVkOiExLG9mZnNldFg6MCxvZmZzZXRZOjAsc3R5bGU6e2ZvbnRTaXplOlwiMTJweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NjAwLGNvbG9yczp2b2lkIDB9LGJhY2tncm91bmQ6e2VuYWJsZWQ6ITAsZm9yZUNvbG9yOlwiI2ZmZlwiLGJvcmRlclJhZGl1czoyLHBhZGRpbmc6NCxvcGFjaXR5Oi45LGJvcmRlcldpZHRoOjEsYm9yZGVyQ29sb3I6XCIjZmZmXCIsZHJvcFNoYWRvdzp7ZW5hYmxlZDohMSx0b3A6MSxsZWZ0OjEsYmx1cjoxLGNvbG9yOlwiIzAwMFwiLG9wYWNpdHk6LjQ1fX0sZHJvcFNoYWRvdzp7ZW5hYmxlZDohMSx0b3A6MSxsZWZ0OjEsYmx1cjoxLGNvbG9yOlwiIzAwMFwiLG9wYWNpdHk6LjQ1fX0sZmlsbDp7dHlwZTpcInNvbGlkXCIsY29sb3JzOnZvaWQgMCxvcGFjaXR5Oi44NSxncmFkaWVudDp7c2hhZGU6XCJkYXJrXCIsdHlwZTpcImhvcml6b250YWxcIixzaGFkZUludGVuc2l0eTouNSxncmFkaWVudFRvQ29sb3JzOnZvaWQgMCxpbnZlcnNlQ29sb3JzOiEwLG9wYWNpdHlGcm9tOjEsb3BhY2l0eVRvOjEsc3RvcHM6WzAsNTAsMTAwXSxjb2xvclN0b3BzOltdfSxpbWFnZTp7c3JjOltdLHdpZHRoOnZvaWQgMCxoZWlnaHQ6dm9pZCAwfSxwYXR0ZXJuOntzdHlsZTpcInNxdWFyZXNcIix3aWR0aDo2LGhlaWdodDo2LHN0cm9rZVdpZHRoOjJ9fSxmb3JlY2FzdERhdGFQb2ludHM6e2NvdW50OjAsZmlsbE9wYWNpdHk6LjUsc3Ryb2tlV2lkdGg6dm9pZCAwLGRhc2hBcnJheTo0fSxncmlkOntzaG93OiEwLGJvcmRlckNvbG9yOlwiI2UwZTBlMFwiLHN0cm9rZURhc2hBcnJheTowLHBvc2l0aW9uOlwiYmFja1wiLHhheGlzOntsaW5lczp7c2hvdzohMX19LHlheGlzOntsaW5lczp7c2hvdzohMH19LHJvdzp7Y29sb3JzOnZvaWQgMCxvcGFjaXR5Oi41fSxjb2x1bW46e2NvbG9yczp2b2lkIDAsb3BhY2l0eTouNX0scGFkZGluZzp7dG9wOjAscmlnaHQ6MTAsYm90dG9tOjAsbGVmdDoxMn19LGxhYmVsczpbXSxsZWdlbmQ6e3Nob3c6ITAsc2hvd0ZvclNpbmdsZVNlcmllczohMSxzaG93Rm9yTnVsbFNlcmllczohMCxzaG93Rm9yWmVyb1NlcmllczohMCxmbG9hdGluZzohMSxwb3NpdGlvbjpcImJvdHRvbVwiLGhvcml6b250YWxBbGlnbjpcImNlbnRlclwiLGludmVyc2VPcmRlcjohMSxmb250U2l6ZTpcIjEycHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCx3aWR0aDp2b2lkIDAsaGVpZ2h0OnZvaWQgMCxmb3JtYXR0ZXI6dm9pZCAwLHRvb2x0aXBIb3ZlckZvcm1hdHRlcjp2b2lkIDAsb2Zmc2V0WDotMjAsb2Zmc2V0WTo0LGN1c3RvbUxlZ2VuZEl0ZW1zOltdLGxhYmVsczp7Y29sb3JzOnZvaWQgMCx1c2VTZXJpZXNDb2xvcnM6ITF9LG1hcmtlcnM6e3dpZHRoOjEyLGhlaWdodDoxMixzdHJva2VXaWR0aDowLGZpbGxDb2xvcnM6dm9pZCAwLHN0cm9rZUNvbG9yOlwiI2ZmZlwiLHJhZGl1czoxMixjdXN0b21IVE1MOnZvaWQgMCxvZmZzZXRYOjAsb2Zmc2V0WTowLG9uQ2xpY2s6dm9pZCAwfSxpdGVtTWFyZ2luOntob3Jpem9udGFsOjUsdmVydGljYWw6Mn0sb25JdGVtQ2xpY2s6e3RvZ2dsZURhdGFTZXJpZXM6ITB9LG9uSXRlbUhvdmVyOntoaWdobGlnaHREYXRhU2VyaWVzOiEwfX0sbWFya2Vyczp7ZGlzY3JldGU6W10sc2l6ZTowLGNvbG9yczp2b2lkIDAsc3Ryb2tlQ29sb3JzOlwiI2ZmZlwiLHN0cm9rZVdpZHRoOjIsc3Ryb2tlT3BhY2l0eTouOSxzdHJva2VEYXNoQXJyYXk6MCxmaWxsT3BhY2l0eToxLHNoYXBlOlwiY2lyY2xlXCIsd2lkdGg6OCxoZWlnaHQ6OCxyYWRpdXM6MixvZmZzZXRYOjAsb2Zmc2V0WTowLG9uQ2xpY2s6dm9pZCAwLG9uRGJsQ2xpY2s6dm9pZCAwLHNob3dOdWxsRGF0YVBvaW50czohMCxob3Zlcjp7c2l6ZTp2b2lkIDAsc2l6ZU9mZnNldDozfX0sbm9EYXRhOnt0ZXh0OnZvaWQgMCxhbGlnbjpcImNlbnRlclwiLHZlcnRpY2FsQWxpZ246XCJtaWRkbGVcIixvZmZzZXRYOjAsb2Zmc2V0WTowLHN0eWxlOntjb2xvcjp2b2lkIDAsZm9udFNpemU6XCIxNHB4XCIsZm9udEZhbWlseTp2b2lkIDB9fSxyZXNwb25zaXZlOltdLHNlcmllczp2b2lkIDAsc3RhdGVzOntub3JtYWw6e2ZpbHRlcjp7dHlwZTpcIm5vbmVcIix2YWx1ZTowfX0saG92ZXI6e2ZpbHRlcjp7dHlwZTpcImxpZ2h0ZW5cIix2YWx1ZTouMX19LGFjdGl2ZTp7YWxsb3dNdWx0aXBsZURhdGFQb2ludHNTZWxlY3Rpb246ITEsZmlsdGVyOnt0eXBlOlwiZGFya2VuXCIsdmFsdWU6LjV9fX0sdGl0bGU6e3RleHQ6dm9pZCAwLGFsaWduOlwibGVmdFwiLG1hcmdpbjo1LG9mZnNldFg6MCxvZmZzZXRZOjAsZmxvYXRpbmc6ITEsc3R5bGU6e2ZvbnRTaXplOlwiMTRweFwiLGZvbnRXZWlnaHQ6OTAwLGZvbnRGYW1pbHk6dm9pZCAwLGNvbG9yOnZvaWQgMH19LHN1YnRpdGxlOnt0ZXh0OnZvaWQgMCxhbGlnbjpcImxlZnRcIixtYXJnaW46NSxvZmZzZXRYOjAsb2Zmc2V0WTozMCxmbG9hdGluZzohMSxzdHlsZTp7Zm9udFNpemU6XCIxMnB4XCIsZm9udFdlaWdodDo0MDAsZm9udEZhbWlseTp2b2lkIDAsY29sb3I6dm9pZCAwfX0sc3Ryb2tlOntzaG93OiEwLGN1cnZlOlwic21vb3RoXCIsbGluZUNhcDpcImJ1dHRcIix3aWR0aDoyLGNvbG9yczp2b2lkIDAsZGFzaEFycmF5OjAsZmlsbDp7dHlwZTpcInNvbGlkXCIsY29sb3JzOnZvaWQgMCxvcGFjaXR5Oi44NSxncmFkaWVudDp7c2hhZGU6XCJkYXJrXCIsdHlwZTpcImhvcml6b250YWxcIixzaGFkZUludGVuc2l0eTouNSxncmFkaWVudFRvQ29sb3JzOnZvaWQgMCxpbnZlcnNlQ29sb3JzOiEwLG9wYWNpdHlGcm9tOjEsb3BhY2l0eVRvOjEsc3RvcHM6WzAsNTAsMTAwXSxjb2xvclN0b3BzOltdfX19LHRvb2x0aXA6e2VuYWJsZWQ6ITAsZW5hYmxlZE9uU2VyaWVzOnZvaWQgMCxzaGFyZWQ6ITAsZm9sbG93Q3Vyc29yOiExLGludGVyc2VjdDohMSxpbnZlcnNlT3JkZXI6ITEsY3VzdG9tOnZvaWQgMCxmaWxsU2VyaWVzQ29sb3I6ITEsdGhlbWU6XCJsaWdodFwiLGNzc0NsYXNzOlwiXCIsc3R5bGU6e2ZvbnRTaXplOlwiMTJweFwiLGZvbnRGYW1pbHk6dm9pZCAwfSxvbkRhdGFzZXRIb3Zlcjp7aGlnaGxpZ2h0RGF0YVNlcmllczohMX0seDp7c2hvdzohMCxmb3JtYXQ6XCJkZCBNTU1cIixmb3JtYXR0ZXI6dm9pZCAwfSx5Ontmb3JtYXR0ZXI6dm9pZCAwLHRpdGxlOntmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ/dCtcIjogXCI6XCJcIn19fSx6Ontmb3JtYXR0ZXI6dm9pZCAwLHRpdGxlOlwiU2l6ZTogXCJ9LG1hcmtlcjp7c2hvdzohMCxmaWxsQ29sb3JzOnZvaWQgMH0saXRlbXM6e2Rpc3BsYXk6XCJmbGV4XCJ9LGZpeGVkOntlbmFibGVkOiExLHBvc2l0aW9uOlwidG9wUmlnaHRcIixvZmZzZXRYOjAsb2Zmc2V0WTowfX0seGF4aXM6e3R5cGU6XCJjYXRlZ29yeVwiLGNhdGVnb3JpZXM6W10sY29udmVydGVkQ2F0VG9OdW1lcmljOiExLG9mZnNldFg6MCxvZmZzZXRZOjAsb3ZlcndyaXRlQ2F0ZWdvcmllczp2b2lkIDAsbGFiZWxzOntzaG93OiEwLHJvdGF0ZTotNDUscm90YXRlQWx3YXlzOiExLGhpZGVPdmVybGFwcGluZ0xhYmVsczohMCx0cmltOiExLG1pbkhlaWdodDp2b2lkIDAsbWF4SGVpZ2h0OjEyMCxzaG93RHVwbGljYXRlczohMCxzdHlsZTp7Y29sb3JzOltdLGZvbnRTaXplOlwiMTJweFwiLGZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6dm9pZCAwLGNzc0NsYXNzOlwiXCJ9LG9mZnNldFg6MCxvZmZzZXRZOjAsZm9ybWF0OnZvaWQgMCxmb3JtYXR0ZXI6dm9pZCAwLGRhdGV0aW1lVVRDOiEwLGRhdGV0aW1lRm9ybWF0dGVyOnt5ZWFyOlwieXl5eVwiLG1vbnRoOlwiTU1NICd5eVwiLGRheTpcImRkIE1NTVwiLGhvdXI6XCJISDptbVwiLG1pbnV0ZTpcIkhIOm1tOnNzXCIsc2Vjb25kOlwiSEg6bW06c3NcIn19LGdyb3VwOntncm91cHM6W10sc3R5bGU6e2NvbG9yczpbXSxmb250U2l6ZTpcIjEycHhcIixmb250V2VpZ2h0OjQwMCxmb250RmFtaWx5OnZvaWQgMCxjc3NDbGFzczpcIlwifX0sYXhpc0JvcmRlcjp7c2hvdzohMCxjb2xvcjpcIiNlMGUwZTBcIix3aWR0aDpcIjEwMCVcIixoZWlnaHQ6MSxvZmZzZXRYOjAsb2Zmc2V0WTowfSxheGlzVGlja3M6e3Nob3c6ITAsY29sb3I6XCIjZTBlMGUwXCIsaGVpZ2h0OjYsb2Zmc2V0WDowLG9mZnNldFk6MH0sdGlja0Ftb3VudDp2b2lkIDAsdGlja1BsYWNlbWVudDpcIm9uXCIsbWluOnZvaWQgMCxtYXg6dm9pZCAwLHJhbmdlOnZvaWQgMCxmbG9hdGluZzohMSxkZWNpbWFsc0luRmxvYXQ6dm9pZCAwLHBvc2l0aW9uOlwiYm90dG9tXCIsdGl0bGU6e3RleHQ6dm9pZCAwLG9mZnNldFg6MCxvZmZzZXRZOjAsc3R5bGU6e2NvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjEycHhcIixmb250V2VpZ2h0OjkwMCxmb250RmFtaWx5OnZvaWQgMCxjc3NDbGFzczpcIlwifX0sY3Jvc3NoYWlyczp7c2hvdzohMCx3aWR0aDoxLHBvc2l0aW9uOlwiYmFja1wiLG9wYWNpdHk6Ljksc3Ryb2tlOntjb2xvcjpcIiNiNmI2YjZcIix3aWR0aDoxLGRhc2hBcnJheTozfSxmaWxsOnt0eXBlOlwic29saWRcIixjb2xvcjpcIiNCMUI5QzRcIixncmFkaWVudDp7Y29sb3JGcm9tOlwiI0Q4RTNGMFwiLGNvbG9yVG86XCIjQkVEMUU2XCIsc3RvcHM6WzAsMTAwXSxvcGFjaXR5RnJvbTouNCxvcGFjaXR5VG86LjV9fSxkcm9wU2hhZG93OntlbmFibGVkOiExLGxlZnQ6MCx0b3A6MCxibHVyOjEsb3BhY2l0eTouNH19LHRvb2x0aXA6e2VuYWJsZWQ6ITAsb2Zmc2V0WTowLGZvcm1hdHRlcjp2b2lkIDAsc3R5bGU6e2ZvbnRTaXplOlwiMTJweFwiLGZvbnRGYW1pbHk6dm9pZCAwfX19LHlheGlzOnRoaXMueUF4aXMsdGhlbWU6e21vZGU6XCJsaWdodFwiLHBhbGV0dGU6XCJwYWxldHRlMVwiLG1vbm9jaHJvbWU6e2VuYWJsZWQ6ITEsY29sb3I6XCIjMDA4RkZCXCIsc2hhZGVUbzpcImxpZ2h0XCIsc2hhZGVJbnRlbnNpdHk6LjY1fX19fX1dKSx0fSgpLFA9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5ncmFwaGljcz1uZXcgbSh0aGlzLmN0eCksdGhpcy53Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYodGhpcy5pbnZlcnRBeGlzPSEwKSx0aGlzLmhlbHBlcnM9bmV3IHcodGhpcyksdGhpcy54QXhpc0Fubm90YXRpb25zPW5ldyBrKHRoaXMpLHRoaXMueUF4aXNBbm5vdGF0aW9ucz1uZXcgQSh0aGlzKSx0aGlzLnBvaW50c0Fubm90YXRpb25zPW5ldyBTKHRoaXMpLHRoaXMudy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmdGhpcy53LmNvbmZpZy55YXhpc1swXS5yZXZlcnNlZCYmKHRoaXMuaW52ZXJzZWRSZXZlcnNlZEF4aXM9ITApLHRoaXMueERpdmlzaW9uPXRoaXMudy5nbG9iYWxzLmdyaWRXaWR0aC90aGlzLncuZ2xvYmFscy5kYXRhUG9pbnRzfXJldHVybiByKHQsW3trZXk6XCJkcmF3QXhlc0Fubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7aWYodC5nbG9iYWxzLmF4aXNDaGFydHMpe2Zvcih2YXIgZT10aGlzLnlBeGlzQW5ub3RhdGlvbnMuZHJhd1lBeGlzQW5ub3RhdGlvbnMoKSxpPXRoaXMueEF4aXNBbm5vdGF0aW9ucy5kcmF3WEF4aXNBbm5vdGF0aW9ucygpLGE9dGhpcy5wb2ludHNBbm5vdGF0aW9ucy5kcmF3UG9pbnRBbm5vdGF0aW9ucygpLHM9dC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkLHI9W2UsaSxhXSxvPVtpLm5vZGUsZS5ub2RlLGEubm9kZV0sbj0wO248MztuKyspdC5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQocltuXSksIXN8fHQuZ2xvYmFscy5yZXNpemVkfHx0Lmdsb2JhbHMuZGF0YUNoYW5nZWR8fFwic2NhdHRlclwiIT09dC5jb25maWcuY2hhcnQudHlwZSYmXCJidWJibGVcIiE9PXQuY29uZmlnLmNoYXJ0LnR5cGUmJnQuZ2xvYmFscy5kYXRhUG9pbnRzPjEmJm9bbl0uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW5cIiksdC5nbG9iYWxzLmRlbGF5ZWRFbGVtZW50cy5wdXNoKHtlbDpvW25dLGluZGV4OjB9KTt0aGlzLmhlbHBlcnMuYW5ub3RhdGlvbnNCYWNrZ3JvdW5kKCl9fX0se2tleTpcImRyYXdJbWFnZUFubm9zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMudy5jb25maWcuYW5ub3RhdGlvbnMuaW1hZ2VzLm1hcCgoZnVuY3Rpb24oZSxpKXt0LmFkZEltYWdlKGUsaSl9KSl9fSx7a2V5OlwiZHJhd1RleHRBbm5vc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLncuY29uZmlnLmFubm90YXRpb25zLnRleHRzLm1hcCgoZnVuY3Rpb24oZSxpKXt0LmFkZFRleHQoZSxpKX0pKX19LHtrZXk6XCJhZGRYYXhpc0Fubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy54QXhpc0Fubm90YXRpb25zLmFkZFhheGlzQW5ub3RhdGlvbih0LGUsaSl9fSx7a2V5OlwiYWRkWWF4aXNBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3RoaXMueUF4aXNBbm5vdGF0aW9ucy5hZGRZYXhpc0Fubm90YXRpb24odCxlLGkpfX0se2tleTpcImFkZFBvaW50QW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt0aGlzLnBvaW50c0Fubm90YXRpb25zLmFkZFBvaW50QW5ub3RhdGlvbih0LGUsaSl9fSx7a2V5OlwiYWRkVGV4dFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dC54LGE9dC55LHM9dC50ZXh0LHI9dC50ZXh0QW5jaG9yLG89dC5mb3JlQ29sb3Isbj10LmZvbnRTaXplLGw9dC5mb250RmFtaWx5LGg9dC5mb250V2VpZ2h0LGM9dC5jc3NDbGFzcyxkPXQuYmFja2dyb3VuZENvbG9yLGc9dC5ib3JkZXJXaWR0aCx1PXQuc3Ryb2tlRGFzaEFycmF5LHA9dC5ib3JkZXJSYWRpdXMsZj10LmJvcmRlckNvbG9yLHg9dC5hcHBlbmRUbyxiPXZvaWQgMD09PXg/XCIuYXBleGNoYXJ0cy1hbm5vdGF0aW9uc1wiOngsdj10LnBhZGRpbmdMZWZ0LG09dm9pZCAwPT09dj80OnYseT10LnBhZGRpbmdSaWdodCx3PXZvaWQgMD09PXk/NDp5LGs9dC5wYWRkaW5nQm90dG9tLEE9dm9pZCAwPT09az8yOmssUz10LnBhZGRpbmdUb3AsQz12b2lkIDA9PT1TPzI6UyxMPXRoaXMudyxQPXRoaXMuZ3JhcGhpY3MuZHJhd1RleHQoe3g6aSx5OmEsdGV4dDpzLHRleHRBbmNob3I6cnx8XCJzdGFydFwiLGZvbnRTaXplOm58fFwiMTJweFwiLGZvbnRXZWlnaHQ6aHx8XCJyZWd1bGFyXCIsZm9udEZhbWlseTpsfHxMLmNvbmZpZy5jaGFydC5mb250RmFtaWx5LGZvcmVDb2xvcjpvfHxMLmNvbmZpZy5jaGFydC5mb3JlQ29sb3IsY3NzQ2xhc3M6Y30pLEk9TC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihiKTtJJiZJLmFwcGVuZENoaWxkKFAubm9kZSk7dmFyIFQ9UC5iYm94KCk7aWYocyl7dmFyIE09dGhpcy5ncmFwaGljcy5kcmF3UmVjdChULngtbSxULnktQyxULndpZHRoK20rdyxULmhlaWdodCtBK0MscCxkfHxcInRyYW5zcGFyZW50XCIsMSxnLGYsdSk7SS5pbnNlcnRCZWZvcmUoTS5ub2RlLFAubm9kZSl9fX0se2tleTpcImFkZEltYWdlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT10LnBhdGgscz10Lngscj12b2lkIDA9PT1zPzA6cyxvPXQueSxuPXZvaWQgMD09PW8/MDpvLGw9dC53aWR0aCxoPXZvaWQgMD09PWw/MjA6bCxjPXQuaGVpZ2h0LGQ9dm9pZCAwPT09Yz8yMDpjLGc9dC5hcHBlbmRUbyx1PXZvaWQgMD09PWc/XCIuYXBleGNoYXJ0cy1hbm5vdGF0aW9uc1wiOmcscD1pLmdsb2JhbHMuZG9tLlBhcGVyLmltYWdlKGEpO3Auc2l6ZShoLGQpLm1vdmUocixuKTt2YXIgZj1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKHUpO3JldHVybiBmJiZmLmFwcGVuZENoaWxkKHAubm9kZSkscH19LHtrZXk6XCJhZGRYYXhpc0Fubm90YXRpb25FeHRlcm5hbFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5hZGRBbm5vdGF0aW9uRXh0ZXJuYWwoe3BhcmFtczp0LHB1c2hUb01lbW9yeTplLGNvbnRleHQ6aSx0eXBlOlwieGF4aXNcIixjb250ZXh0TWV0aG9kOmkuYWRkWGF4aXNBbm5vdGF0aW9ufSksaX19LHtrZXk6XCJhZGRZYXhpc0Fubm90YXRpb25FeHRlcm5hbFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5hZGRBbm5vdGF0aW9uRXh0ZXJuYWwoe3BhcmFtczp0LHB1c2hUb01lbW9yeTplLGNvbnRleHQ6aSx0eXBlOlwieWF4aXNcIixjb250ZXh0TWV0aG9kOmkuYWRkWWF4aXNBbm5vdGF0aW9ufSksaX19LHtrZXk6XCJhZGRQb2ludEFubm90YXRpb25FeHRlcm5hbFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdm9pZCAwPT09dGhpcy5pbnZlcnRBeGlzJiYodGhpcy5pbnZlcnRBeGlzPWkudy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCksdGhpcy5hZGRBbm5vdGF0aW9uRXh0ZXJuYWwoe3BhcmFtczp0LHB1c2hUb01lbW9yeTplLGNvbnRleHQ6aSx0eXBlOlwicG9pbnRcIixjb250ZXh0TWV0aG9kOmkuYWRkUG9pbnRBbm5vdGF0aW9ufSksaX19LHtrZXk6XCJhZGRBbm5vdGF0aW9uRXh0ZXJuYWxcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnBhcmFtcyxpPXQucHVzaFRvTWVtb3J5LGE9dC5jb250ZXh0LHM9dC50eXBlLHI9dC5jb250ZXh0TWV0aG9kLG89YSxuPW8udyxsPW4uZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQocyxcIi1hbm5vdGF0aW9uc1wiKSksaD1sLmNoaWxkTm9kZXMubGVuZ3RoKzEsYz1uZXcgTCxkPU9iamVjdC5hc3NpZ24oe30sXCJ4YXhpc1wiPT09cz9jLnhBeGlzQW5ub3RhdGlvbjpcInlheGlzXCI9PT1zP2MueUF4aXNBbm5vdGF0aW9uOmMucG9pbnRBbm5vdGF0aW9uKSxnPXguZXh0ZW5kKGQsZSk7c3dpdGNoKHMpe2Nhc2VcInhheGlzXCI6dGhpcy5hZGRYYXhpc0Fubm90YXRpb24oZyxsLGgpO2JyZWFrO2Nhc2VcInlheGlzXCI6dGhpcy5hZGRZYXhpc0Fubm90YXRpb24oZyxsLGgpO2JyZWFrO2Nhc2VcInBvaW50XCI6dGhpcy5hZGRQb2ludEFubm90YXRpb24oZyxsLGgpfXZhciB1PW4uZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQocyxcIi1hbm5vdGF0aW9ucyAuYXBleGNoYXJ0cy1cIikuY29uY2F0KHMsXCItYW5ub3RhdGlvbi1sYWJlbFtyZWw9J1wiKS5jb25jYXQoaCxcIiddXCIpKSxwPXRoaXMuaGVscGVycy5hZGRCYWNrZ3JvdW5kVG9Bbm5vKHUsZyk7cmV0dXJuIHAmJmwuaW5zZXJ0QmVmb3JlKHAubm9kZSx1KSxpJiZuLmdsb2JhbHMubWVtb3J5Lm1ldGhvZHNUb0V4ZWMucHVzaCh7Y29udGV4dDpvLGlkOmcuaWQ/Zy5pZDp4LnJhbmRvbUlkKCksbWV0aG9kOnIsbGFiZWw6XCJhZGRBbm5vdGF0aW9uXCIscGFyYW1zOmV9KSxhfX0se2tleTpcImNsZWFyQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LncsaT1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMteWF4aXMtYW5ub3RhdGlvbnMsIC5hcGV4Y2hhcnRzLXhheGlzLWFubm90YXRpb25zLCAuYXBleGNoYXJ0cy1wb2ludC1hbm5vdGF0aW9uc1wiKTtlLmdsb2JhbHMubWVtb3J5Lm1ldGhvZHNUb0V4ZWMubWFwKChmdW5jdGlvbih0LGkpe1wiYWRkVGV4dFwiIT09dC5sYWJlbCYmXCJhZGRBbm5vdGF0aW9uXCIhPT10LmxhYmVsfHxlLmdsb2JhbHMubWVtb3J5Lm1ldGhvZHNUb0V4ZWMuc3BsaWNlKGksMSl9KSksaT14Lmxpc3RUb0FycmF5KGkpLEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoaSwoZnVuY3Rpb24odCl7Zm9yKDt0LmZpcnN0Q2hpbGQ7KXQucmVtb3ZlQ2hpbGQodC5maXJzdENoaWxkKX0pKX19LHtrZXk6XCJyZW1vdmVBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10LncsYT1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLlwiLmNvbmNhdChlKSk7YSYmKGkuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5tYXAoKGZ1bmN0aW9uKHQsYSl7dC5pZD09PWUmJmkuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5zcGxpY2UoYSwxKX0pKSxBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGEsKGZ1bmN0aW9uKHQpe3QucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0KX0pKSl9fV0pLHR9KCksST1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLm1vbnRoczMxPVsxLDMsNSw3LDgsMTAsMTJdLHRoaXMubW9udGhzMzA9WzIsNCw2LDksMTFdLHRoaXMuZGF5c0NudE9mWWVhcj1bMCwzMSw1OSw5MCwxMjAsMTUxLDE4MSwyMTIsMjQzLDI3MywzMDQsMzM0XX1yZXR1cm4gcih0LFt7a2V5OlwiaXNWYWxpZERhdGVcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4haXNOYU4odGhpcy5wYXJzZURhdGUodCkpfX0se2tleTpcImdldFRpbWVTdGFtcFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBEYXRlLnBhcnNlKHQpP3RoaXMudy5jb25maWcueGF4aXMubGFiZWxzLmRhdGV0aW1lVVRDP25ldyBEYXRlKG5ldyBEYXRlKHQpLnRvSVNPU3RyaW5nKCkuc3Vic3RyKDAsMjUpKS5nZXRUaW1lKCk6bmV3IERhdGUodCkuZ2V0VGltZSgpOnR9fSx7a2V5OlwiZ2V0RGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLncuY29uZmlnLnhheGlzLmxhYmVscy5kYXRldGltZVVUQz9uZXcgRGF0ZShuZXcgRGF0ZSh0KS50b1VUQ1N0cmluZygpKTpuZXcgRGF0ZSh0KX19LHtrZXk6XCJwYXJzZURhdGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1EYXRlLnBhcnNlKHQpO2lmKCFpc05hTihlKSlyZXR1cm4gdGhpcy5nZXRUaW1lU3RhbXAodCk7dmFyIGk9RGF0ZS5wYXJzZSh0LnJlcGxhY2UoLy0vZyxcIi9cIikucmVwbGFjZSgvW2Etel0rL2dpLFwiIFwiKSk7cmV0dXJuIGk9dGhpcy5nZXRUaW1lU3RhbXAoaSl9fSx7a2V5OlwicGFyc2VEYXRlV2l0aFRpbWV6b25lXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIERhdGUucGFyc2UodC5yZXBsYWNlKC8tL2csXCIvXCIpLnJlcGxhY2UoL1thLXpdKy9naSxcIiBcIikpfX0se2tleTpcImZvcm1hdERhdGVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudy5nbG9iYWxzLmxvY2FsZSxhPXRoaXMudy5jb25maWcueGF4aXMubGFiZWxzLmRhdGV0aW1lVVRDLHM9W1wiXFwwXCJdLmNvbmNhdCh1KGkubW9udGhzKSkscj1bXCJcXHgwMVwiXS5jb25jYXQodShpLnNob3J0TW9udGhzKSksbz1bXCJcXHgwMlwiXS5jb25jYXQodShpLmRheXMpKSxuPVtcIlxceDAzXCJdLmNvbmNhdCh1KGkuc2hvcnREYXlzKSk7ZnVuY3Rpb24gbCh0LGUpe3ZhciBpPXQrXCJcIjtmb3IoZT1lfHwyO2kubGVuZ3RoPGU7KWk9XCIwXCIraTtyZXR1cm4gaX12YXIgaD1hP3QuZ2V0VVRDRnVsbFllYXIoKTp0LmdldEZ1bGxZZWFyKCk7ZT0oZT0oZT1lLnJlcGxhY2UoLyhefFteXFxcXF0peXl5eSsvZyxcIiQxXCIraCkpLnJlcGxhY2UoLyhefFteXFxcXF0peXkvZyxcIiQxXCIraC50b1N0cmluZygpLnN1YnN0cigyLDIpKSkucmVwbGFjZSgvKF58W15cXFxcXSl5L2csXCIkMVwiK2gpO3ZhciBjPShhP3QuZ2V0VVRDTW9udGgoKTp0LmdldE1vbnRoKCkpKzE7ZT0oZT0oZT0oZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pTU1NTSsvZyxcIiQxXCIrc1swXSkpLnJlcGxhY2UoLyhefFteXFxcXF0pTU1NL2csXCIkMVwiK3JbMF0pKS5yZXBsYWNlKC8oXnxbXlxcXFxdKU1NL2csXCIkMVwiK2woYykpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKU0vZyxcIiQxXCIrYyk7dmFyIGQ9YT90LmdldFVUQ0RhdGUoKTp0LmdldERhdGUoKTtlPShlPShlPShlPWUucmVwbGFjZSgvKF58W15cXFxcXSlkZGRkKy9nLFwiJDFcIitvWzBdKSkucmVwbGFjZSgvKF58W15cXFxcXSlkZGQvZyxcIiQxXCIrblswXSkpLnJlcGxhY2UoLyhefFteXFxcXF0pZGQvZyxcIiQxXCIrbChkKSkpLnJlcGxhY2UoLyhefFteXFxcXF0pZC9nLFwiJDFcIitkKTt2YXIgZz1hP3QuZ2V0VVRDSG91cnMoKTp0LmdldEhvdXJzKCkscD1nPjEyP2ctMTI6MD09PWc/MTI6ZztlPShlPShlPShlPWUucmVwbGFjZSgvKF58W15cXFxcXSlISCsvZyxcIiQxXCIrbChnKSkpLnJlcGxhY2UoLyhefFteXFxcXF0pSC9nLFwiJDFcIitnKSkucmVwbGFjZSgvKF58W15cXFxcXSloaCsvZyxcIiQxXCIrbChwKSkpLnJlcGxhY2UoLyhefFteXFxcXF0paC9nLFwiJDFcIitwKTt2YXIgZj1hP3QuZ2V0VVRDTWludXRlcygpOnQuZ2V0TWludXRlcygpO2U9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKW1tKy9nLFwiJDFcIitsKGYpKSkucmVwbGFjZSgvKF58W15cXFxcXSltL2csXCIkMVwiK2YpO3ZhciB4PWE/dC5nZXRVVENTZWNvbmRzKCk6dC5nZXRTZWNvbmRzKCk7ZT0oZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pc3MrL2csXCIkMVwiK2woeCkpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKXMvZyxcIiQxXCIreCk7dmFyIGI9YT90LmdldFVUQ01pbGxpc2Vjb25kcygpOnQuZ2V0TWlsbGlzZWNvbmRzKCk7ZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pZmZmKy9nLFwiJDFcIitsKGIsMykpLGI9TWF0aC5yb3VuZChiLzEwKSxlPWUucmVwbGFjZSgvKF58W15cXFxcXSlmZi9nLFwiJDFcIitsKGIpKSxiPU1hdGgucm91bmQoYi8xMCk7dmFyIHY9ZzwxMj9cIkFNXCI6XCJQTVwiO2U9KGU9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKWYvZyxcIiQxXCIrYikpLnJlcGxhY2UoLyhefFteXFxcXF0pVFQrL2csXCIkMVwiK3YpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKVQvZyxcIiQxXCIrdi5jaGFyQXQoMCkpO3ZhciBtPXYudG9Mb3dlckNhc2UoKTtlPShlPWUucmVwbGFjZSgvKF58W15cXFxcXSl0dCsvZyxcIiQxXCIrbSkpLnJlcGxhY2UoLyhefFteXFxcXF0pdC9nLFwiJDFcIittLmNoYXJBdCgwKSk7dmFyIHk9LXQuZ2V0VGltZXpvbmVPZmZzZXQoKSx3PWF8fCF5P1wiWlwiOnk+MD9cIitcIjpcIi1cIjtpZighYSl7dmFyIGs9KHk9TWF0aC5hYnMoeSkpJTYwO3crPWwoTWF0aC5mbG9vcih5LzYwKSkrXCI6XCIrbChrKX1lPWUucmVwbGFjZSgvKF58W15cXFxcXSlLL2csXCIkMVwiK3cpO3ZhciBBPShhP3QuZ2V0VVRDRGF5KCk6dC5nZXREYXkoKSkrMTtyZXR1cm4gZT0oZT0oZT0oZT0oZT1lLnJlcGxhY2UobmV3IFJlZ0V4cChvWzBdLFwiZ1wiKSxvW0FdKSkucmVwbGFjZShuZXcgUmVnRXhwKG5bMF0sXCJnXCIpLG5bQV0pKS5yZXBsYWNlKG5ldyBSZWdFeHAoc1swXSxcImdcIiksc1tjXSkpLnJlcGxhY2UobmV3IFJlZ0V4cChyWzBdLFwiZ1wiKSxyW2NdKSkucmVwbGFjZSgvXFxcXCguKS9nLFwiJDFcIil9fSx7a2V5OlwiZ2V0VGltZVVuaXRzZnJvbVRpbWVzdGFtcFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLnc7dm9pZCAwIT09YS5jb25maWcueGF4aXMubWluJiYodD1hLmNvbmZpZy54YXhpcy5taW4pLHZvaWQgMCE9PWEuY29uZmlnLnhheGlzLm1heCYmKGU9YS5jb25maWcueGF4aXMubWF4KTt2YXIgcz10aGlzLmdldERhdGUodCkscj10aGlzLmdldERhdGUoZSksbz10aGlzLmZvcm1hdERhdGUocyxcInl5eXkgTU0gZGQgSEggbW0gc3MgZmZmXCIpLnNwbGl0KFwiIFwiKSxuPXRoaXMuZm9ybWF0RGF0ZShyLFwieXl5eSBNTSBkZCBISCBtbSBzcyBmZmZcIikuc3BsaXQoXCIgXCIpO3JldHVybnttaW5NaWxsaXNlY29uZDpwYXJzZUludChvWzZdLDEwKSxtYXhNaWxsaXNlY29uZDpwYXJzZUludChuWzZdLDEwKSxtaW5TZWNvbmQ6cGFyc2VJbnQob1s1XSwxMCksbWF4U2Vjb25kOnBhcnNlSW50KG5bNV0sMTApLG1pbk1pbnV0ZTpwYXJzZUludChvWzRdLDEwKSxtYXhNaW51dGU6cGFyc2VJbnQobls0XSwxMCksbWluSG91cjpwYXJzZUludChvWzNdLDEwKSxtYXhIb3VyOnBhcnNlSW50KG5bM10sMTApLG1pbkRhdGU6cGFyc2VJbnQob1syXSwxMCksbWF4RGF0ZTpwYXJzZUludChuWzJdLDEwKSxtaW5Nb250aDpwYXJzZUludChvWzFdLDEwKS0xLG1heE1vbnRoOnBhcnNlSW50KG5bMV0sMTApLTEsbWluWWVhcjpwYXJzZUludChvWzBdLDEwKSxtYXhZZWFyOnBhcnNlSW50KG5bMF0sMTApfX19LHtrZXk6XCJpc0xlYXBZZWFyXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQlND09MCYmdCUxMDAhPTB8fHQlNDAwPT0wfX0se2tleTpcImNhbGN1bGNhdGVMYXN0RGF5c09mTW9udGhcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMuZGV0ZXJtaW5lRGF5c09mTW9udGhzKHQsZSktaX19LHtrZXk6XCJkZXRlcm1pbmVEYXlzT2ZZZWFyXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9MzY1O3JldHVybiB0aGlzLmlzTGVhcFllYXIodCkmJihlPTM2NiksZX19LHtrZXk6XCJkZXRlcm1pbmVSZW1haW5pbmdEYXlzT2ZZZWFyXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMuZGF5c0NudE9mWWVhcltlXStpO3JldHVybiBlPjEmJnRoaXMuaXNMZWFwWWVhcigpJiZhKyssYX19LHtrZXk6XCJkZXRlcm1pbmVEYXlzT2ZNb250aHNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPTMwO3N3aXRjaCh0PXgubW9udGhNb2QodCksITApe2Nhc2UgdGhpcy5tb250aHMzMC5pbmRleE9mKHQpPi0xOjI9PT10JiYoaT10aGlzLmlzTGVhcFllYXIoZSk/Mjk6MjgpO2JyZWFrO2Nhc2UgdGhpcy5tb250aHMzMS5pbmRleE9mKHQpPi0xOmRlZmF1bHQ6aT0zMX1yZXR1cm4gaX19XSksdH0oKSxUPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMudG9vbHRpcEtleUZvcm1hdD1cImRkIE1NTVwifXJldHVybiByKHQsW3trZXk6XCJ4TGFiZWxGb3JtYXRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz10aGlzLnc7aWYoXCJkYXRldGltZVwiPT09cy5jb25maWcueGF4aXMudHlwZSYmdm9pZCAwPT09cy5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlciYmdm9pZCAwPT09cy5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlcil7dmFyIHI9bmV3IEkodGhpcy5jdHgpO3JldHVybiByLmZvcm1hdERhdGUoci5nZXREYXRlKGUpLHMuY29uZmlnLnRvb2x0aXAueC5mb3JtYXQpfXJldHVybiB0KGUsaSxhKX19LHtrZXk6XCJkZWZhdWx0R2VuZXJhbEZvcm1hdHRlclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3QubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKTp0fX0se2tleTpcImRlZmF1bHRZRm9ybWF0dGVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudztyZXR1cm4geC5pc051bWJlcih0KSYmKHQ9MCE9PWEuZ2xvYmFscy55VmFsdWVEZWNpbWFsP3QudG9GaXhlZCh2b2lkIDAhPT1lLmRlY2ltYWxzSW5GbG9hdD9lLmRlY2ltYWxzSW5GbG9hdDphLmdsb2JhbHMueVZhbHVlRGVjaW1hbCk6YS5nbG9iYWxzLm1heFlBcnJbaV0tYS5nbG9iYWxzLm1pbllBcnJbaV08NT90LnRvRml4ZWQoMSk6dC50b0ZpeGVkKDApKSx0fX0se2tleTpcInNldExhYmVsRm9ybWF0dGVyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudztyZXR1cm4gZS5nbG9iYWxzLnhheGlzVG9vbHRpcEZvcm1hdHRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdC5kZWZhdWx0R2VuZXJhbEZvcm1hdHRlcihlKX0sZS5nbG9iYWxzLnR0S2V5Rm9ybWF0dGVyPWZ1bmN0aW9uKGUpe3JldHVybiB0LmRlZmF1bHRHZW5lcmFsRm9ybWF0dGVyKGUpfSxlLmdsb2JhbHMudHRaRm9ybWF0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0fSxlLmdsb2JhbHMubGVnZW5kRm9ybWF0dGVyPWZ1bmN0aW9uKGUpe3JldHVybiB0LmRlZmF1bHRHZW5lcmFsRm9ybWF0dGVyKGUpfSx2b2lkIDAhPT1lLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyP2UuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXI9ZS5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlcjplLmdsb2JhbHMueExhYmVsRm9ybWF0dGVyPWZ1bmN0aW9uKHQpe2lmKHguaXNOdW1iZXIodCkpe2lmKCFlLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJlwibnVtZXJpY1wiPT09ZS5jb25maWcueGF4aXMudHlwZSl7aWYoeC5pc051bWJlcihlLmNvbmZpZy54YXhpcy5kZWNpbWFsc0luRmxvYXQpKXJldHVybiB0LnRvRml4ZWQoZS5jb25maWcueGF4aXMuZGVjaW1hbHNJbkZsb2F0KTt2YXIgaT1lLmdsb2JhbHMubWF4WC1lLmdsb2JhbHMubWluWDtyZXR1cm4gaT4wJiZpPDEwMD90LnRvRml4ZWQoMSk6dC50b0ZpeGVkKDApfWlmKGUuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpaWYoZS5nbG9iYWxzLm1heFktZS5nbG9iYWxzLm1pbllBcnI8NClyZXR1cm4gdC50b0ZpeGVkKDEpO3JldHVybiB0LnRvRml4ZWQoMCl9cmV0dXJuIHR9LFwiZnVuY3Rpb25cIj09dHlwZW9mIGUuY29uZmlnLnRvb2x0aXAueC5mb3JtYXR0ZXI/ZS5nbG9iYWxzLnR0S2V5Rm9ybWF0dGVyPWUuY29uZmlnLnRvb2x0aXAueC5mb3JtYXR0ZXI6ZS5nbG9iYWxzLnR0S2V5Rm9ybWF0dGVyPWUuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXIsXCJmdW5jdGlvblwiPT10eXBlb2YgZS5jb25maWcueGF4aXMudG9vbHRpcC5mb3JtYXR0ZXImJihlLmdsb2JhbHMueGF4aXNUb29sdGlwRm9ybWF0dGVyPWUuY29uZmlnLnhheGlzLnRvb2x0aXAuZm9ybWF0dGVyKSwoQXJyYXkuaXNBcnJheShlLmNvbmZpZy50b29sdGlwLnkpfHx2b2lkIDAhPT1lLmNvbmZpZy50b29sdGlwLnkuZm9ybWF0dGVyKSYmKGUuZ2xvYmFscy50dFZhbD1lLmNvbmZpZy50b29sdGlwLnkpLHZvaWQgMCE9PWUuY29uZmlnLnRvb2x0aXAuei5mb3JtYXR0ZXImJihlLmdsb2JhbHMudHRaRm9ybWF0dGVyPWUuY29uZmlnLnRvb2x0aXAuei5mb3JtYXR0ZXIpLHZvaWQgMCE9PWUuY29uZmlnLmxlZ2VuZC5mb3JtYXR0ZXImJihlLmdsb2JhbHMubGVnZW5kRm9ybWF0dGVyPWUuY29uZmlnLmxlZ2VuZC5mb3JtYXR0ZXIpLGUuY29uZmlnLnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKGksYSl7dm9pZCAwIT09aS5sYWJlbHMuZm9ybWF0dGVyP2UuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzW2FdPWkubGFiZWxzLmZvcm1hdHRlcjplLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1thXT1mdW5jdGlvbihzKXtyZXR1cm4gZS5nbG9iYWxzLnh5Q2hhcnRzP0FycmF5LmlzQXJyYXkocyk/cy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0LmRlZmF1bHRZRm9ybWF0dGVyKGUsaSxhKX0pKTp0LmRlZmF1bHRZRm9ybWF0dGVyKHMsaSxhKTpzfX0pKSxlLmdsb2JhbHN9fSx7a2V5OlwiaGVhdG1hcExhYmVsRm9ybWF0dGVyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O2lmKFwiaGVhdG1hcFwiPT09dC5jb25maWcuY2hhcnQudHlwZSl7dC5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0PXQuZ2xvYmFscy5zZXJpZXNOYW1lcy5zbGljZSgpO3ZhciBlPXQuZ2xvYmFscy5zZXJpZXNOYW1lcy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQubGVuZ3RoPmUubGVuZ3RoP3Q6ZX0pLDApO3QuZ2xvYmFscy55QXhpc1NjYWxlWzBdLm5pY2VNYXg9ZSx0Lmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWluPWV9fX1dKSx0fSgpLE09ZnVuY3Rpb24odCl7dmFyIGUsaT10LmlzVGltZWxpbmUsYT10LmN0eCxzPXQuc2VyaWVzSW5kZXgscj10LmRhdGFQb2ludEluZGV4LG89dC55MSxuPXQueTIsbD10LncsaD1sLmdsb2JhbHMuc2VyaWVzUmFuZ2VTdGFydFtzXVtyXSxjPWwuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZFtzXVtyXSxkPWwuZ2xvYmFscy5sYWJlbHNbcl0sZz1sLmNvbmZpZy5zZXJpZXNbc10ubmFtZT9sLmNvbmZpZy5zZXJpZXNbc10ubmFtZTpcIlwiLHU9bC5nbG9iYWxzLnR0S2V5Rm9ybWF0dGVyLHA9bC5jb25maWcudG9vbHRpcC55LnRpdGxlLmZvcm1hdHRlcixmPXt3Omwsc2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpyLHN0YXJ0OmgsZW5kOmN9OyhcImZ1bmN0aW9uXCI9PXR5cGVvZiBwJiYoZz1wKGcsZikpLG51bGwhPT0oZT1sLmNvbmZpZy5zZXJpZXNbc10uZGF0YVtyXSkmJnZvaWQgMCE9PWUmJmUueCYmKGQ9bC5jb25maWcuc2VyaWVzW3NdLmRhdGFbcl0ueCksaSl8fFwiZGF0ZXRpbWVcIj09PWwuY29uZmlnLnhheGlzLnR5cGUmJihkPW5ldyBUKGEpLnhMYWJlbEZvcm1hdChsLmdsb2JhbHMudHRLZXlGb3JtYXR0ZXIsZCxkLHtpOnZvaWQgMCxkYXRlRm9ybWF0dGVyOm5ldyBJKGEpLmZvcm1hdERhdGUsdzpsfSkpO1wiZnVuY3Rpb25cIj09dHlwZW9mIHUmJihkPXUoZCxmKSksTnVtYmVyLmlzRmluaXRlKG8pJiZOdW1iZXIuaXNGaW5pdGUobikmJihoPW8sYz1uKTt2YXIgeD1cIlwiLGI9XCJcIix2PWwuZ2xvYmFscy5jb2xvcnNbc107aWYodm9pZCAwPT09bC5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlcilpZihcImRhdGV0aW1lXCI9PT1sLmNvbmZpZy54YXhpcy50eXBlKXt2YXIgbT1uZXcgSShhKTt4PW0uZm9ybWF0RGF0ZShtLmdldERhdGUoaCksbC5jb25maWcudG9vbHRpcC54LmZvcm1hdCksYj1tLmZvcm1hdERhdGUobS5nZXREYXRlKGMpLGwuY29uZmlnLnRvb2x0aXAueC5mb3JtYXQpfWVsc2UgeD1oLGI9YztlbHNlIHg9bC5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlcihoKSxiPWwuY29uZmlnLnRvb2x0aXAueC5mb3JtYXR0ZXIoYyk7cmV0dXJue3N0YXJ0OmgsZW5kOmMsc3RhcnRWYWw6eCxlbmRWYWw6Yix5bGFiZWw6ZCxjb2xvcjp2LHNlcmllc05hbWU6Z319LFg9ZnVuY3Rpb24odCl7dmFyIGU9dC5jb2xvcixpPXQuc2VyaWVzTmFtZSxhPXQueWxhYmVsLHM9dC5zdGFydCxyPXQuZW5kLG89dC5zZXJpZXNJbmRleCxuPXQuZGF0YVBvaW50SW5kZXgsbD10LmN0eC50b29sdGlwLnRvb2x0aXBMYWJlbHMuZ2V0Rm9ybWF0dGVycyhvKTtzPWwueUxiRm9ybWF0dGVyKHMpLHI9bC55TGJGb3JtYXR0ZXIocik7dmFyIGg9bC55TGJGb3JtYXR0ZXIodC53Lmdsb2JhbHMuc2VyaWVzW29dW25dKSxjPSc8c3BhbiBjbGFzcz1cInZhbHVlIHN0YXJ0LXZhbHVlXCI+XFxuICAnLmNvbmNhdChzLCdcXG4gIDwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJzZXBhcmF0b3JcIj4tPC9zcGFuPiA8c3BhbiBjbGFzcz1cInZhbHVlIGVuZC12YWx1ZVwiPlxcbiAgJykuY29uY2F0KHIsXCJcXG4gIDwvc3Bhbj5cIik7cmV0dXJuJzxkaXYgY2xhc3M9XCJhcGV4Y2hhcnRzLXRvb2x0aXAtcmFuZ2ViYXJcIj48ZGl2PiA8c3BhbiBjbGFzcz1cInNlcmllcy1uYW1lXCIgc3R5bGU9XCJjb2xvcjogJytlKydcIj4nKyhpfHxcIlwiKSsnPC9zcGFuPjwvZGl2PjxkaXY+IDxzcGFuIGNsYXNzPVwiY2F0ZWdvcnlcIj4nK2ErXCI6IDwvc3Bhbj4gXCIrKHQudy5nbG9iYWxzLmNvbWJvQ2hhcnRzP1wicmFuZ2VBcmVhXCI9PT10LncuY29uZmlnLnNlcmllc1tvXS50eXBlfHxcInJhbmdlQmFyXCI9PT10LncuY29uZmlnLnNlcmllc1tvXS50eXBlP2M6XCI8c3Bhbj5cIi5jb25jYXQoaCxcIjwvc3Bhbj5cIik6YykrXCIgPC9kaXY+PC9kaXY+XCJ9LHo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLm9wdHM9ZX1yZXR1cm4gcih0LFt7a2V5OlwibGluZVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0OnthbmltYXRpb25zOntlYXNpbmc6XCJzd2luZ1wifX0sZGF0YUxhYmVsczp7ZW5hYmxlZDohMX0sc3Ryb2tlOnt3aWR0aDo1LGN1cnZlOlwic3RyYWlnaHRcIn0sbWFya2Vyczp7c2l6ZTowLGhvdmVyOntzaXplT2Zmc2V0OjZ9fSx4YXhpczp7Y3Jvc3NoYWlyczp7d2lkdGg6MX19fX19LHtrZXk6XCJzcGFya2xpbmVcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLm9wdHMueWF4aXNbMF0uc2hvdz0hMSx0aGlzLm9wdHMueWF4aXNbMF0udGl0bGUudGV4dD1cIlwiLHRoaXMub3B0cy55YXhpc1swXS5heGlzQm9yZGVyLnNob3c9ITEsdGhpcy5vcHRzLnlheGlzWzBdLmF4aXNUaWNrcy5zaG93PSExLHRoaXMub3B0cy55YXhpc1swXS5mbG9hdGluZz0hMDtyZXR1cm4geC5leHRlbmQodCx7Z3JpZDp7c2hvdzohMSxwYWRkaW5nOntsZWZ0OjAscmlnaHQ6MCx0b3A6MCxib3R0b206MH19LGxlZ2VuZDp7c2hvdzohMX0seGF4aXM6e2xhYmVsczp7c2hvdzohMX0sdG9vbHRpcDp7ZW5hYmxlZDohMX0sYXhpc0JvcmRlcjp7c2hvdzohMX0sYXhpc1RpY2tzOntzaG93OiExfX0sY2hhcnQ6e3Rvb2xiYXI6e3Nob3c6ITF9LHpvb206e2VuYWJsZWQ6ITF9fSxkYXRhTGFiZWxzOntlbmFibGVkOiExfX0pfX0se2tleTpcImJhclwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0OntzdGFja2VkOiExLGFuaW1hdGlvbnM6e2Vhc2luZzpcInN3aW5nXCJ9fSxwbG90T3B0aW9uczp7YmFyOntkYXRhTGFiZWxzOntwb3NpdGlvbjpcImNlbnRlclwifX19LGRhdGFMYWJlbHM6e3N0eWxlOntjb2xvcnM6W1wiI2ZmZlwiXX0sYmFja2dyb3VuZDp7ZW5hYmxlZDohMX19LHN0cm9rZTp7d2lkdGg6MCxsaW5lQ2FwOlwicm91bmRcIn0sZmlsbDp7b3BhY2l0eTouODV9LGxlZ2VuZDp7bWFya2Vyczp7c2hhcGU6XCJzcXVhcmVcIixyYWRpdXM6MixzaXplOjh9fSx0b29sdGlwOntzaGFyZWQ6ITEsaW50ZXJzZWN0OiEwfSx4YXhpczp7dG9vbHRpcDp7ZW5hYmxlZDohMX0sdGlja1BsYWNlbWVudDpcImJldHdlZW5cIixjcm9zc2hhaXJzOnt3aWR0aDpcImJhcldpZHRoXCIscG9zaXRpb246XCJiYWNrXCIsZmlsbDp7dHlwZTpcImdyYWRpZW50XCJ9LGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITF9LHN0cm9rZTp7d2lkdGg6MH19fX19fSx7a2V5OlwiY2FuZGxlc3RpY2tcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJue3N0cm9rZTp7d2lkdGg6MSxjb2xvcnM6W1wiIzMzM1wiXX0sZmlsbDp7b3BhY2l0eToxfSxkYXRhTGFiZWxzOntlbmFibGVkOiExfSx0b29sdGlwOntzaGFyZWQ6ITAsY3VzdG9tOmZ1bmN0aW9uKGUpe3ZhciBpPWUuc2VyaWVzSW5kZXgsYT1lLmRhdGFQb2ludEluZGV4LHM9ZS53O3JldHVybiB0Ll9nZXRCb3hUb29sdGlwKHMsaSxhLFtcIk9wZW5cIixcIkhpZ2hcIixcIlwiLFwiTG93XCIsXCJDbG9zZVwiXSxcImNhbmRsZXN0aWNrXCIpfX0sc3RhdGVzOnthY3RpdmU6e2ZpbHRlcjp7dHlwZTpcIm5vbmVcIn19fSx4YXhpczp7Y3Jvc3NoYWlyczp7d2lkdGg6MX19fX19LHtrZXk6XCJib3hQbG90XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybntjaGFydDp7YW5pbWF0aW9uczp7ZHluYW1pY0FuaW1hdGlvbjp7ZW5hYmxlZDohMX19fSxzdHJva2U6e3dpZHRoOjEsY29sb3JzOltcIiMyNDI5MmVcIl19LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITF9LHRvb2x0aXA6e3NoYXJlZDohMCxjdXN0b206ZnVuY3Rpb24oZSl7dmFyIGk9ZS5zZXJpZXNJbmRleCxhPWUuZGF0YVBvaW50SW5kZXgscz1lLnc7cmV0dXJuIHQuX2dldEJveFRvb2x0aXAocyxpLGEsW1wiTWluaW11bVwiLFwiUTFcIixcIk1lZGlhblwiLFwiUTNcIixcIk1heGltdW1cIl0sXCJib3hQbG90XCIpfX0sbWFya2Vyczp7c2l6ZTo1LHN0cm9rZVdpZHRoOjEsc3Ryb2tlQ29sb3JzOlwiIzExMVwifSx4YXhpczp7Y3Jvc3NoYWlyczp7d2lkdGg6MX19fX19LHtrZXk6XCJyYW5nZUJhclwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0OnthbmltYXRpb25zOnthbmltYXRlR3JhZHVhbGx5OiExfX0sc3Ryb2tlOnt3aWR0aDowLGxpbmVDYXA6XCJzcXVhcmVcIn0scGxvdE9wdGlvbnM6e2Jhcjp7Ym9yZGVyUmFkaXVzOjAsZGF0YUxhYmVsczp7cG9zaXRpb246XCJjZW50ZXJcIn19fSxkYXRhTGFiZWxzOntlbmFibGVkOiExLGZvcm1hdHRlcjpmdW5jdGlvbih0LGUpe2UuY3R4O3ZhciBpPWUuc2VyaWVzSW5kZXgsYT1lLmRhdGFQb2ludEluZGV4LHM9ZS53LHI9ZnVuY3Rpb24oKXt2YXIgdD1zLmdsb2JhbHMuc2VyaWVzUmFuZ2VTdGFydFtpXVthXTtyZXR1cm4gcy5nbG9iYWxzLnNlcmllc1JhbmdlRW5kW2ldW2FdLXR9O3JldHVybiBzLmdsb2JhbHMuY29tYm9DaGFydHM/XCJyYW5nZUJhclwiPT09cy5jb25maWcuc2VyaWVzW2ldLnR5cGV8fFwicmFuZ2VBcmVhXCI9PT1zLmNvbmZpZy5zZXJpZXNbaV0udHlwZT9yKCk6dDpyKCl9LGJhY2tncm91bmQ6e2VuYWJsZWQ6ITF9LHN0eWxlOntjb2xvcnM6W1wiI2ZmZlwiXX19LG1hcmtlcnM6e3NpemU6MTB9LHRvb2x0aXA6e3NoYXJlZDohMSxmb2xsb3dDdXJzb3I6ITAsY3VzdG9tOmZ1bmN0aW9uKHQpe3JldHVybiB0LncuY29uZmlnLnBsb3RPcHRpb25zJiZ0LncuY29uZmlnLnBsb3RPcHRpb25zLmJhciYmdC53LmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbD9mdW5jdGlvbih0KXt2YXIgaT1NKGUoZSh7fSx0KSx7fSx7aXNUaW1lbGluZTohMH0pKSxhPWkuY29sb3Iscz1pLnNlcmllc05hbWUscj1pLnlsYWJlbCxvPWkuc3RhcnRWYWwsbj1pLmVuZFZhbDtyZXR1cm4gWChlKGUoe30sdCkse30se2NvbG9yOmEsc2VyaWVzTmFtZTpzLHlsYWJlbDpyLHN0YXJ0Om8sZW5kOm59KSl9KHQpOmZ1bmN0aW9uKHQpe3ZhciBpPU0odCksYT1pLmNvbG9yLHM9aS5zZXJpZXNOYW1lLHI9aS55bGFiZWwsbz1pLnN0YXJ0LG49aS5lbmQ7cmV0dXJuIFgoZShlKHt9LHQpLHt9LHtjb2xvcjphLHNlcmllc05hbWU6cyx5bGFiZWw6cixzdGFydDpvLGVuZDpufSkpfSh0KX19LHhheGlzOnt0aWNrUGxhY2VtZW50OlwiYmV0d2VlblwiLHRvb2x0aXA6e2VuYWJsZWQ6ITF9LGNyb3NzaGFpcnM6e3N0cm9rZTp7d2lkdGg6MH19fX19fSx7a2V5OlwiZHVtYmJlbGxcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpO3JldHVybiBudWxsIT09KGU9dC5wbG90T3B0aW9ucy5iYXIpJiZ2b2lkIDAhPT1lJiZlLmJhckhlaWdodHx8KHQucGxvdE9wdGlvbnMuYmFyLmJhckhlaWdodD0yKSxudWxsIT09KGk9dC5wbG90T3B0aW9ucy5iYXIpJiZ2b2lkIDAhPT1pJiZpLmNvbHVtbldpZHRofHwodC5wbG90T3B0aW9ucy5iYXIuY29sdW1uV2lkdGg9MiksdH19LHtrZXk6XCJhcmVhXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57c3Ryb2tlOnt3aWR0aDo0LGZpbGw6e3R5cGU6XCJzb2xpZFwiLGdyYWRpZW50OntpbnZlcnNlQ29sb3JzOiExLHNoYWRlOlwibGlnaHRcIix0eXBlOlwidmVydGljYWxcIixvcGFjaXR5RnJvbTouNjUsb3BhY2l0eVRvOi41LHN0b3BzOlswLDEwMCwxMDBdfX19LGZpbGw6e3R5cGU6XCJncmFkaWVudFwiLGdyYWRpZW50OntpbnZlcnNlQ29sb3JzOiExLHNoYWRlOlwibGlnaHRcIix0eXBlOlwidmVydGljYWxcIixvcGFjaXR5RnJvbTouNjUsb3BhY2l0eVRvOi41LHN0b3BzOlswLDEwMCwxMDBdfX0sbWFya2Vyczp7c2l6ZTowLGhvdmVyOntzaXplT2Zmc2V0OjZ9fSx0b29sdGlwOntmb2xsb3dDdXJzb3I6ITF9fX19LHtrZXk6XCJyYW5nZUFyZWFcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntzdHJva2U6e2N1cnZlOlwic3RyYWlnaHRcIix3aWR0aDowfSxmaWxsOnt0eXBlOlwic29saWRcIixvcGFjaXR5Oi42fSxtYXJrZXJzOntzaXplOjB9LHN0YXRlczp7aG92ZXI6e2ZpbHRlcjp7dHlwZTpcIm5vbmVcIn19LGFjdGl2ZTp7ZmlsdGVyOnt0eXBlOlwibm9uZVwifX19LHRvb2x0aXA6e2ludGVyc2VjdDohMSxzaGFyZWQ6ITAsZm9sbG93Q3Vyc29yOiEwLGN1c3RvbTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGk9TSh0KSxhPWkuY29sb3Iscz1pLnNlcmllc05hbWUscj1pLnlsYWJlbCxvPWkuc3RhcnQsbj1pLmVuZDtyZXR1cm4gWChlKGUoe30sdCkse30se2NvbG9yOmEsc2VyaWVzTmFtZTpzLHlsYWJlbDpyLHN0YXJ0Om8sZW5kOm59KSl9KHQpfX19fX0se2tleTpcImJydXNoXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHguZXh0ZW5kKHQse2NoYXJ0Ont0b29sYmFyOnthdXRvU2VsZWN0ZWQ6XCJzZWxlY3Rpb25cIixzaG93OiExfSx6b29tOntlbmFibGVkOiExfX0sZGF0YUxhYmVsczp7ZW5hYmxlZDohMX0sc3Ryb2tlOnt3aWR0aDoxfSx0b29sdGlwOntlbmFibGVkOiExfSx4YXhpczp7dG9vbHRpcDp7ZW5hYmxlZDohMX19fSl9fSx7a2V5Olwic3RhY2tlZDEwMFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3QuZGF0YUxhYmVscz10LmRhdGFMYWJlbHN8fHt9LHQuZGF0YUxhYmVscy5mb3JtYXR0ZXI9dC5kYXRhTGFiZWxzLmZvcm1hdHRlcnx8dm9pZCAwO3ZhciBlPXQuZGF0YUxhYmVscy5mb3JtYXR0ZXI7cmV0dXJuIHQueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24oZSxpKXt0LnlheGlzW2ldLm1pbj0wLHQueWF4aXNbaV0ubWF4PTEwMH0pKSxcImJhclwiPT09dC5jaGFydC50eXBlJiYodC5kYXRhTGFiZWxzLmZvcm1hdHRlcj1lfHxmdW5jdGlvbih0KXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgdCYmdD90LnRvRml4ZWQoMCkrXCIlXCI6dH0pLHR9fSx7a2V5Olwic3RhY2tlZEJhcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuYmFyKCk7cmV0dXJuIGUoZSh7fSx0KSx7fSx7cGxvdE9wdGlvbnM6ZShlKHt9LHQucGxvdE9wdGlvbnMpLHt9LHtiYXI6ZShlKHt9LHQucGxvdE9wdGlvbnMuYmFyKSx7fSx7Ym9yZGVyUmFkaXVzQXBwbGljYXRpb246XCJlbmRcIixib3JkZXJSYWRpdXNXaGVuU3RhY2tlZDpcImxhc3RcIn0pfSl9KX19LHtrZXk6XCJjb252ZXJ0Q2F0VG9OdW1lcmljXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljPSEwLHR9fSx7a2V5OlwiY29udmVydENhdFRvTnVtZXJpY1hheGlzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3QueGF4aXMudHlwZT1cIm51bWVyaWNcIix0LnhheGlzLmxhYmVscz10LnhheGlzLmxhYmVsc3x8e30sdC54YXhpcy5sYWJlbHMuZm9ybWF0dGVyPXQueGF4aXMubGFiZWxzLmZvcm1hdHRlcnx8ZnVuY3Rpb24odCl7cmV0dXJuIHguaXNOdW1iZXIodCk/TWF0aC5mbG9vcih0KTp0fTt2YXIgYT10LnhheGlzLmxhYmVscy5mb3JtYXR0ZXIscz10LnhheGlzLmNhdGVnb3JpZXMmJnQueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGg/dC54YXhpcy5jYXRlZ29yaWVzOnQubGFiZWxzO3JldHVybiBpJiZpLmxlbmd0aCYmKHM9aS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3Q6U3RyaW5nKHQpfSkpKSxzJiZzLmxlbmd0aCYmKHQueGF4aXMubGFiZWxzLmZvcm1hdHRlcj1mdW5jdGlvbih0KXtyZXR1cm4geC5pc051bWJlcih0KT9hKHNbTWF0aC5mbG9vcih0KS0xXSk6YSh0KX0pLHQueGF4aXMuY2F0ZWdvcmllcz1bXSx0LmxhYmVscz1bXSx0LnhheGlzLnRpY2tBbW91bnQ9dC54YXhpcy50aWNrQW1vdW50fHxcImRhdGFQb2ludHNcIix0fX0se2tleTpcImJ1YmJsZVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2RhdGFMYWJlbHM6e3N0eWxlOntjb2xvcnM6W1wiI2ZmZlwiXX19LHRvb2x0aXA6e3NoYXJlZDohMSxpbnRlcnNlY3Q6ITB9LHhheGlzOntjcm9zc2hhaXJzOnt3aWR0aDowfX0sZmlsbDp7dHlwZTpcInNvbGlkXCIsZ3JhZGllbnQ6e3NoYWRlOlwibGlnaHRcIixpbnZlcnNlOiEwLHNoYWRlSW50ZW5zaXR5Oi41NSxvcGFjaXR5RnJvbTouNCxvcGFjaXR5VG86Ljh9fX19fSx7a2V5Olwic2NhdHRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2RhdGFMYWJlbHM6e2VuYWJsZWQ6ITF9LHRvb2x0aXA6e3NoYXJlZDohMSxpbnRlcnNlY3Q6ITB9LG1hcmtlcnM6e3NpemU6NixzdHJva2VXaWR0aDoxLGhvdmVyOntzaXplT2Zmc2V0OjJ9fX19fSx7a2V5OlwiaGVhdG1hcFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0OntzdGFja2VkOiExfSxmaWxsOntvcGFjaXR5OjF9LGRhdGFMYWJlbHM6e3N0eWxlOntjb2xvcnM6W1wiI2ZmZlwiXX19LHN0cm9rZTp7Y29sb3JzOltcIiNmZmZcIl19LHRvb2x0aXA6e2ZvbGxvd0N1cnNvcjohMCxtYXJrZXI6e3Nob3c6ITF9LHg6e3Nob3c6ITF9fSxsZWdlbmQ6e3Bvc2l0aW9uOlwidG9wXCIsbWFya2Vyczp7c2hhcGU6XCJzcXVhcmVcIixzaXplOjEwLG9mZnNldFk6Mn19LGdyaWQ6e3BhZGRpbmc6e3JpZ2h0OjIwfX19fX0se2tleTpcInRyZWVtYXBcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7em9vbTp7ZW5hYmxlZDohMX19LGRhdGFMYWJlbHM6e3N0eWxlOntmb250U2l6ZToxNCxmb250V2VpZ2h0OjYwMCxjb2xvcnM6W1wiI2ZmZlwiXX19LHN0cm9rZTp7c2hvdzohMCx3aWR0aDoyLGNvbG9yczpbXCIjZmZmXCJdfSxsZWdlbmQ6e3Nob3c6ITF9LGZpbGw6e2dyYWRpZW50OntzdG9wczpbMCwxMDBdfX0sdG9vbHRpcDp7Zm9sbG93Q3Vyc29yOiEwLHg6e3Nob3c6ITF9fSxncmlkOntwYWRkaW5nOntsZWZ0OjAscmlnaHQ6MH19LHhheGlzOntjcm9zc2hhaXJzOntzaG93OiExfSx0b29sdGlwOntlbmFibGVkOiExfX19fX0se2tleTpcInBpZVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0Ont0b29sYmFyOntzaG93OiExfX0scGxvdE9wdGlvbnM6e3BpZTp7ZG9udXQ6e2xhYmVsczp7c2hvdzohMX19fX0sZGF0YUxhYmVsczp7Zm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0LnRvRml4ZWQoMSkrXCIlXCJ9LHN0eWxlOntjb2xvcnM6W1wiI2ZmZlwiXX0sYmFja2dyb3VuZDp7ZW5hYmxlZDohMX0sZHJvcFNoYWRvdzp7ZW5hYmxlZDohMH19LHN0cm9rZTp7Y29sb3JzOltcIiNmZmZcIl19LGZpbGw6e29wYWNpdHk6MSxncmFkaWVudDp7c2hhZGU6XCJsaWdodFwiLHN0b3BzOlswLDEwMF19fSx0b29sdGlwOnt0aGVtZTpcImRhcmtcIixmaWxsU2VyaWVzQ29sb3I6ITB9LGxlZ2VuZDp7cG9zaXRpb246XCJyaWdodFwifX19fSx7a2V5OlwiZG9udXRcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7dG9vbGJhcjp7c2hvdzohMX19LGRhdGFMYWJlbHM6e2Zvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdC50b0ZpeGVkKDEpK1wiJVwifSxzdHlsZTp7Y29sb3JzOltcIiNmZmZcIl19LGJhY2tncm91bmQ6e2VuYWJsZWQ6ITF9LGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITB9fSxzdHJva2U6e2NvbG9yczpbXCIjZmZmXCJdfSxmaWxsOntvcGFjaXR5OjEsZ3JhZGllbnQ6e3NoYWRlOlwibGlnaHRcIixzaGFkZUludGVuc2l0eTouMzUsc3RvcHM6WzgwLDEwMF0sb3BhY2l0eUZyb206MSxvcGFjaXR5VG86MX19LHRvb2x0aXA6e3RoZW1lOlwiZGFya1wiLGZpbGxTZXJpZXNDb2xvcjohMH0sbGVnZW5kOntwb3NpdGlvbjpcInJpZ2h0XCJ9fX19LHtrZXk6XCJwb2xhckFyZWFcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdHMueWF4aXNbMF0udGlja0Ftb3VudD10aGlzLm9wdHMueWF4aXNbMF0udGlja0Ftb3VudD90aGlzLm9wdHMueWF4aXNbMF0udGlja0Ftb3VudDo2LHtjaGFydDp7dG9vbGJhcjp7c2hvdzohMX19LGRhdGFMYWJlbHM6e2Zvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdC50b0ZpeGVkKDEpK1wiJVwifSxlbmFibGVkOiExfSxzdHJva2U6e3Nob3c6ITAsd2lkdGg6Mn0sZmlsbDp7b3BhY2l0eTouN30sdG9vbHRpcDp7dGhlbWU6XCJkYXJrXCIsZmlsbFNlcmllc0NvbG9yOiEwfSxsZWdlbmQ6e3Bvc2l0aW9uOlwicmlnaHRcIn19fX0se2tleTpcInJhZGFyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRzLnlheGlzWzBdLmxhYmVscy5vZmZzZXRZPXRoaXMub3B0cy55YXhpc1swXS5sYWJlbHMub2Zmc2V0WT90aGlzLm9wdHMueWF4aXNbMF0ubGFiZWxzLm9mZnNldFk6Nix7ZGF0YUxhYmVsczp7ZW5hYmxlZDohMSxzdHlsZTp7Zm9udFNpemU6XCIxMXB4XCJ9fSxzdHJva2U6e3dpZHRoOjJ9LG1hcmtlcnM6e3NpemU6MyxzdHJva2VXaWR0aDoxLHN0cm9rZU9wYWNpdHk6MX0sZmlsbDp7b3BhY2l0eTouMn0sdG9vbHRpcDp7c2hhcmVkOiExLGludGVyc2VjdDohMCxmb2xsb3dDdXJzb3I6ITB9LGdyaWQ6e3Nob3c6ITF9LHhheGlzOntsYWJlbHM6e2Zvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdH0sc3R5bGU6e2NvbG9yczpbXCIjYThhOGE4XCJdLGZvbnRTaXplOlwiMTFweFwifX0sdG9vbHRpcDp7ZW5hYmxlZDohMX0sY3Jvc3NoYWlyczp7c2hvdzohMX19fX19LHtrZXk6XCJyYWRpYWxCYXJcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7YW5pbWF0aW9uczp7ZHluYW1pY0FuaW1hdGlvbjp7ZW5hYmxlZDohMCxzcGVlZDo4MDB9fSx0b29sYmFyOntzaG93OiExfX0sZmlsbDp7Z3JhZGllbnQ6e3NoYWRlOlwiZGFya1wiLHNoYWRlSW50ZW5zaXR5Oi40LGludmVyc2VDb2xvcnM6ITEsdHlwZTpcImRpYWdvbmFsMlwiLG9wYWNpdHlGcm9tOjEsb3BhY2l0eVRvOjEsc3RvcHM6WzcwLDk4LDEwMF19fSxsZWdlbmQ6e3Nob3c6ITEscG9zaXRpb246XCJyaWdodFwifSx0b29sdGlwOntlbmFibGVkOiExLGZpbGxTZXJpZXNDb2xvcjohMH19fX0se2tleTpcIl9nZXRCb3hUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzKXt2YXIgcj10Lmdsb2JhbHMuc2VyaWVzQ2FuZGxlT1tlXVtpXSxvPXQuZ2xvYmFscy5zZXJpZXNDYW5kbGVIW2VdW2ldLG49dC5nbG9iYWxzLnNlcmllc0NhbmRsZU1bZV1baV0sbD10Lmdsb2JhbHMuc2VyaWVzQ2FuZGxlTFtlXVtpXSxoPXQuZ2xvYmFscy5zZXJpZXNDYW5kbGVDW2VdW2ldO3JldHVybiB0LmNvbmZpZy5zZXJpZXNbZV0udHlwZSYmdC5jb25maWcuc2VyaWVzW2VdLnR5cGUhPT1zPyc8ZGl2IGNsYXNzPVwiYXBleGNoYXJ0cy1jdXN0b20tdG9vbHRpcFwiPlxcbiAgICAgICAgICAnLmNvbmNhdCh0LmNvbmZpZy5zZXJpZXNbZV0ubmFtZT90LmNvbmZpZy5zZXJpZXNbZV0ubmFtZTpcInNlcmllcy1cIisoZSsxKSxcIjogPHN0cm9uZz5cIikuY29uY2F0KHQuZ2xvYmFscy5zZXJpZXNbZV1baV0sXCI8L3N0cm9uZz5cXG4gICAgICAgIDwvZGl2PlwiKTonPGRpdiBjbGFzcz1cImFwZXhjaGFydHMtdG9vbHRpcC1ib3ggYXBleGNoYXJ0cy10b29sdGlwLScuY29uY2F0KHQuY29uZmlnLmNoYXJ0LnR5cGUsJ1wiPicpK1wiPGRpdj5cIi5jb25jYXQoYVswXSwnOiA8c3BhbiBjbGFzcz1cInZhbHVlXCI+JykrcitcIjwvc3Bhbj48L2Rpdj5cIitcIjxkaXY+XCIuY29uY2F0KGFbMV0sJzogPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPicpK28rXCI8L3NwYW4+PC9kaXY+XCIrKG4/XCI8ZGl2PlwiLmNvbmNhdChhWzJdLCc6IDxzcGFuIGNsYXNzPVwidmFsdWVcIj4nKStuK1wiPC9zcGFuPjwvZGl2PlwiOlwiXCIpK1wiPGRpdj5cIi5jb25jYXQoYVszXSwnOiA8c3BhbiBjbGFzcz1cInZhbHVlXCI+JykrbCtcIjwvc3Bhbj48L2Rpdj5cIitcIjxkaXY+XCIuY29uY2F0KGFbNF0sJzogPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPicpK2grXCI8L3NwYW4+PC9kaXY+PC9kaXY+XCJ9fV0pLHR9KCksRT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMub3B0cz1lfXJldHVybiByKHQsW3trZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5yZXNwb25zaXZlT3ZlcnJpZGUsYT10aGlzLm9wdHMscz1uZXcgTCxyPW5ldyB6KGEpO3RoaXMuY2hhcnRUeXBlPWEuY2hhcnQudHlwZSxhPXRoaXMuZXh0ZW5kWUF4aXMoYSksYT10aGlzLmV4dGVuZEFubm90YXRpb25zKGEpO3ZhciBvPXMuaW5pdCgpLG49e307aWYoYSYmXCJvYmplY3RcIj09PWkoYSkpe3ZhciBsLGgsYyxkLGcsdSxwPXt9O3A9LTEhPT1bXCJsaW5lXCIsXCJhcmVhXCIsXCJiYXJcIixcImNhbmRsZXN0aWNrXCIsXCJib3hQbG90XCIsXCJyYW5nZUJhclwiLFwicmFuZ2VBcmVhXCIsXCJidWJibGVcIixcInNjYXR0ZXJcIixcImhlYXRtYXBcIixcInRyZWVtYXBcIixcInBpZVwiLFwicG9sYXJBcmVhXCIsXCJkb251dFwiLFwicmFkYXJcIixcInJhZGlhbEJhclwiXS5pbmRleE9mKGEuY2hhcnQudHlwZSk/clthLmNoYXJ0LnR5cGVdKCk6ci5saW5lKCksYS5jaGFydC5zdGFja2VkJiZcImJhclwiPT09YS5jaGFydC50eXBlJiYocD1yLnN0YWNrZWRCYXJzKCkpLG51bGwhPT0obD1hLmNoYXJ0LmJydXNoKSYmdm9pZCAwIT09bCYmbC5lbmFibGVkJiYocD1yLmJydXNoKHApKSxhLmNoYXJ0LnN0YWNrZWQmJlwiMTAwJVwiPT09YS5jaGFydC5zdGFja1R5cGUmJihhPXIuc3RhY2tlZDEwMChhKSksbnVsbCE9PShoPWEucGxvdE9wdGlvbnMpJiZ2b2lkIDAhPT1oJiZudWxsIT09KGM9aC5iYXIpJiZ2b2lkIDAhPT1jJiZjLmlzRHVtYmJlbGwmJihhPXIuZHVtYmJlbGwoYSkpLHRoaXMuY2hlY2tGb3JEYXJrVGhlbWUod2luZG93LkFwZXgpLHRoaXMuY2hlY2tGb3JEYXJrVGhlbWUoYSksYS54YXhpcz1hLnhheGlzfHx3aW5kb3cuQXBleC54YXhpc3x8e30sZXx8KGEueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljPSExKSwobnVsbCE9PShkPShhPXRoaXMuY2hlY2tGb3JDYXRUb051bWVyaWNYQXhpcyh0aGlzLmNoYXJ0VHlwZSxwLGEpKS5jaGFydC5zcGFya2xpbmUpJiZ2b2lkIDAhPT1kJiZkLmVuYWJsZWR8fG51bGwhPT0oZz13aW5kb3cuQXBleC5jaGFydCkmJnZvaWQgMCE9PWcmJm51bGwhPT0odT1nLnNwYXJrbGluZSkmJnZvaWQgMCE9PXUmJnUuZW5hYmxlZCkmJihwPXIuc3BhcmtsaW5lKHApKSxuPXguZXh0ZW5kKG8scCl9dmFyIGY9eC5leHRlbmQobix3aW5kb3cuQXBleCk7cmV0dXJuIG89eC5leHRlbmQoZixhKSxvPXRoaXMuaGFuZGxlVXNlcklucHV0RXJyb3JzKG8pfX0se2tleTpcImNoZWNrRm9yQ2F0VG9OdW1lcmljWEF4aXNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGEscyxyPW5ldyB6KGkpLG89KFwiYmFyXCI9PT10fHxcImJveFBsb3RcIj09PXQpJiYobnVsbD09PShhPWkucGxvdE9wdGlvbnMpfHx2b2lkIDA9PT1hfHxudWxsPT09KHM9YS5iYXIpfHx2b2lkIDA9PT1zP3ZvaWQgMDpzLmhvcml6b250YWwpLG49XCJwaWVcIj09PXR8fFwicG9sYXJBcmVhXCI9PT10fHxcImRvbnV0XCI9PT10fHxcInJhZGFyXCI9PT10fHxcInJhZGlhbEJhclwiPT09dHx8XCJoZWF0bWFwXCI9PT10LGw9XCJkYXRldGltZVwiIT09aS54YXhpcy50eXBlJiZcIm51bWVyaWNcIiE9PWkueGF4aXMudHlwZSxoPWkueGF4aXMudGlja1BsYWNlbWVudD9pLnhheGlzLnRpY2tQbGFjZW1lbnQ6ZS54YXhpcyYmZS54YXhpcy50aWNrUGxhY2VtZW50O3JldHVybiBvfHxufHwhbHx8XCJiZXR3ZWVuXCI9PT1ofHwoaT1yLmNvbnZlcnRDYXRUb051bWVyaWMoaSkpLGl9fSx7a2V5OlwiZXh0ZW5kWUF4aXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPW5ldyBMOyh2b2lkIDA9PT10LnlheGlzfHwhdC55YXhpc3x8QXJyYXkuaXNBcnJheSh0LnlheGlzKSYmMD09PXQueWF4aXMubGVuZ3RoKSYmKHQueWF4aXM9e30pLHQueWF4aXMuY29uc3RydWN0b3IhPT1BcnJheSYmd2luZG93LkFwZXgueWF4aXMmJndpbmRvdy5BcGV4LnlheGlzLmNvbnN0cnVjdG9yIT09QXJyYXkmJih0LnlheGlzPXguZXh0ZW5kKHQueWF4aXMsd2luZG93LkFwZXgueWF4aXMpKSx0LnlheGlzLmNvbnN0cnVjdG9yIT09QXJyYXk/dC55YXhpcz1beC5leHRlbmQoaS55QXhpcyx0LnlheGlzKV06dC55YXhpcz14LmV4dGVuZEFycmF5KHQueWF4aXMsaS55QXhpcyk7dmFyIGE9ITE7dC55YXhpcy5mb3JFYWNoKChmdW5jdGlvbih0KXt0LmxvZ2FyaXRobWljJiYoYT0hMCl9KSk7dmFyIHM9dC5zZXJpZXM7cmV0dXJuIGUmJiFzJiYocz1lLmNvbmZpZy5zZXJpZXMpLGEmJnMubGVuZ3RoIT09dC55YXhpcy5sZW5ndGgmJnMubGVuZ3RoJiYodC55YXhpcz1zLm1hcCgoZnVuY3Rpb24oZSxhKXtpZihlLm5hbWV8fChzW2FdLm5hbWU9XCJzZXJpZXMtXCIuY29uY2F0KGErMSkpLHQueWF4aXNbYV0pcmV0dXJuIHQueWF4aXNbYV0uc2VyaWVzTmFtZT1zW2FdLm5hbWUsdC55YXhpc1thXTt2YXIgcj14LmV4dGVuZChpLnlBeGlzLHQueWF4aXNbMF0pO3JldHVybiByLnNob3c9ITEscn0pKSksYSYmcy5sZW5ndGg+MSYmcy5sZW5ndGghPT10LnlheGlzLmxlbmd0aCYmY29uc29sZS53YXJuKFwiQSBtdWx0aS1zZXJpZXMgbG9nYXJpdGhtaWMgY2hhcnQgc2hvdWxkIGhhdmUgZXF1YWwgbnVtYmVyIG9mIHNlcmllcyBhbmQgeS1heGVzLiBQbGVhc2UgbWFrZSBzdXJlIHRvIGVxdWFsaXplIGJvdGguXCIpLHR9fSx7a2V5OlwiZXh0ZW5kQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dC5hbm5vdGF0aW9ucyYmKHQuYW5ub3RhdGlvbnM9e30sdC5hbm5vdGF0aW9ucy55YXhpcz1bXSx0LmFubm90YXRpb25zLnhheGlzPVtdLHQuYW5ub3RhdGlvbnMucG9pbnRzPVtdKSx0PXRoaXMuZXh0ZW5kWUF4aXNBbm5vdGF0aW9ucyh0KSx0PXRoaXMuZXh0ZW5kWEF4aXNBbm5vdGF0aW9ucyh0KSx0PXRoaXMuZXh0ZW5kUG9pbnRBbm5vdGF0aW9ucyh0KX19LHtrZXk6XCJleHRlbmRZQXhpc0Fubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9bmV3IEw7cmV0dXJuIHQuYW5ub3RhdGlvbnMueWF4aXM9eC5leHRlbmRBcnJheSh2b2lkIDAhPT10LmFubm90YXRpb25zLnlheGlzP3QuYW5ub3RhdGlvbnMueWF4aXM6W10sZS55QXhpc0Fubm90YXRpb24pLHR9fSx7a2V5OlwiZXh0ZW5kWEF4aXNBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBMO3JldHVybiB0LmFubm90YXRpb25zLnhheGlzPXguZXh0ZW5kQXJyYXkodm9pZCAwIT09dC5hbm5vdGF0aW9ucy54YXhpcz90LmFubm90YXRpb25zLnhheGlzOltdLGUueEF4aXNBbm5vdGF0aW9uKSx0fX0se2tleTpcImV4dGVuZFBvaW50QW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgTDtyZXR1cm4gdC5hbm5vdGF0aW9ucy5wb2ludHM9eC5leHRlbmRBcnJheSh2b2lkIDAhPT10LmFubm90YXRpb25zLnBvaW50cz90LmFubm90YXRpb25zLnBvaW50czpbXSxlLnBvaW50QW5ub3RhdGlvbiksdH19LHtrZXk6XCJjaGVja0ZvckRhcmtUaGVtZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3QudGhlbWUmJlwiZGFya1wiPT09dC50aGVtZS5tb2RlJiYodC50b29sdGlwfHwodC50b29sdGlwPXt9KSxcImxpZ2h0XCIhPT10LnRvb2x0aXAudGhlbWUmJih0LnRvb2x0aXAudGhlbWU9XCJkYXJrXCIpLHQuY2hhcnQuZm9yZUNvbG9yfHwodC5jaGFydC5mb3JlQ29sb3I9XCIjZjZmN2Y4XCIpLHQuY2hhcnQuYmFja2dyb3VuZHx8KHQuY2hhcnQuYmFja2dyb3VuZD1cIiM0MjQyNDJcIiksdC50aGVtZS5wYWxldHRlfHwodC50aGVtZS5wYWxldHRlPVwicGFsZXR0ZTRcIikpfX0se2tleTpcImhhbmRsZVVzZXJJbnB1dEVycm9yc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQ7aWYoZS50b29sdGlwLnNoYXJlZCYmZS50b29sdGlwLmludGVyc2VjdCl0aHJvdyBuZXcgRXJyb3IoXCJ0b29sdGlwLnNoYXJlZCBjYW5ub3QgYmUgZW5hYmxlZCB3aGVuIHRvb2x0aXAuaW50ZXJzZWN0IGlzIHRydWUuIFR1cm4gb2ZmIGFueSBvdGhlciBvcHRpb24gYnkgc2V0dGluZyBpdCB0byBmYWxzZS5cIik7aWYoXCJiYXJcIj09PWUuY2hhcnQudHlwZSYmZS5wbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbCl7aWYoZS55YXhpcy5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoXCJNdWx0aXBsZSBZIEF4aXMgZm9yIGJhcnMgYXJlIG5vdCBzdXBwb3J0ZWQuIFN3aXRjaCB0byBjb2x1bW4gY2hhcnQgYnkgc2V0dGluZyBwbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbD1mYWxzZVwiKTtlLnlheGlzWzBdLnJldmVyc2VkJiYoZS55YXhpc1swXS5vcHBvc2l0ZT0hMCksZS54YXhpcy50b29sdGlwLmVuYWJsZWQ9ITEsZS55YXhpc1swXS50b29sdGlwLmVuYWJsZWQ9ITEsZS5jaGFydC56b29tLmVuYWJsZWQ9ITF9cmV0dXJuXCJiYXJcIiE9PWUuY2hhcnQudHlwZSYmXCJyYW5nZUJhclwiIT09ZS5jaGFydC50eXBlfHxlLnRvb2x0aXAuc2hhcmVkJiZcImJhcldpZHRoXCI9PT1lLnhheGlzLmNyb3NzaGFpcnMud2lkdGgmJmUuc2VyaWVzLmxlbmd0aD4xJiYoZS54YXhpcy5jcm9zc2hhaXJzLndpZHRoPVwidGlja1dpZHRoXCIpLFwiY2FuZGxlc3RpY2tcIiE9PWUuY2hhcnQudHlwZSYmXCJib3hQbG90XCIhPT1lLmNoYXJ0LnR5cGV8fGUueWF4aXNbMF0ucmV2ZXJzZWQmJihjb25zb2xlLndhcm4oXCJSZXZlcnNlZCB5LWF4aXMgaW4gXCIuY29uY2F0KGUuY2hhcnQudHlwZSxcIiBjaGFydCBpcyBub3Qgc3VwcG9ydGVkLlwiKSksZS55YXhpc1swXS5yZXZlcnNlZD0hMSksZX19XSksdH0oKSxZPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe2EodGhpcyx0KX1yZXR1cm4gcih0LFt7a2V5OlwiaW5pdEdsb2JhbFZhcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt0LnNlcmllcz1bXSx0LnNlcmllc0NhbmRsZU89W10sdC5zZXJpZXNDYW5kbGVIPVtdLHQuc2VyaWVzQ2FuZGxlTT1bXSx0LnNlcmllc0NhbmRsZUw9W10sdC5zZXJpZXNDYW5kbGVDPVtdLHQuc2VyaWVzUmFuZ2VTdGFydD1bXSx0LnNlcmllc1JhbmdlRW5kPVtdLHQuc2VyaWVzUmFuZ2U9W10sdC5zZXJpZXNQZXJjZW50PVtdLHQuc2VyaWVzR29hbHM9W10sdC5zZXJpZXNYPVtdLHQuc2VyaWVzWj1bXSx0LnNlcmllc05hbWVzPVtdLHQuc2VyaWVzVG90YWxzPVtdLHQuc2VyaWVzTG9nPVtdLHQuc2VyaWVzQ29sb3JzPVtdLHQuc3RhY2tlZFNlcmllc1RvdGFscz1bXSx0LnNlcmllc1h2YWx1ZXM9W10sdC5zZXJpZXNZdmFsdWVzPVtdLHQubGFiZWxzPVtdLHQuaGFzWGF4aXNHcm91cHM9ITEsdC5ncm91cHM9W10sdC5oYXNTZXJpZXNHcm91cHM9ITEsdC5zZXJpZXNHcm91cHM9W10sdC5jYXRlZ29yeUxhYmVscz1bXSx0LnRpbWVzY2FsZUxhYmVscz1bXSx0Lm5vTGFiZWxzUHJvdmlkZWQ9ITEsdC5yZXNpemVUaW1lcj1udWxsLHQuc2VsZWN0aW9uUmVzaXplVGltZXI9bnVsbCx0LmRlbGF5ZWRFbGVtZW50cz1bXSx0LnBvaW50c0FycmF5PVtdLHQuZGF0YUxhYmVsc1JlY3RzPVtdLHQuaXNYTnVtZXJpYz0hMSx0LnNraXBMYXN0VGltZWxpbmVsYWJlbD0hMSx0LnNraXBGaXJzdFRpbWVsaW5lbGFiZWw9ITEsdC5pc0RhdGFYWVo9ITEsdC5pc011bHRpTGluZVg9ITEsdC5pc011bHRpcGxlWUF4aXM9ITEsdC5tYXhZPS1OdW1iZXIuTUFYX1ZBTFVFLHQubWluWT1OdW1iZXIuTUlOX1ZBTFVFLHQubWluWUFycj1bXSx0Lm1heFlBcnI9W10sdC5tYXhYPS1OdW1iZXIuTUFYX1ZBTFVFLHQubWluWD1OdW1iZXIuTUFYX1ZBTFVFLHQuaW5pdGlhbE1heFg9LU51bWJlci5NQVhfVkFMVUUsdC5pbml0aWFsTWluWD1OdW1iZXIuTUFYX1ZBTFVFLHQubWF4RGF0ZT0wLHQubWluRGF0ZT1OdW1iZXIuTUFYX1ZBTFVFLHQubWluWj1OdW1iZXIuTUFYX1ZBTFVFLHQubWF4Wj0tTnVtYmVyLk1BWF9WQUxVRSx0Lm1pblhEaWZmPU51bWJlci5NQVhfVkFMVUUsdC55QXhpc1NjYWxlPVtdLHQueEF4aXNTY2FsZT1udWxsLHQueEF4aXNUaWNrc1Bvc2l0aW9ucz1bXSx0LnlMYWJlbHNDb29yZHM9W10sdC55VGl0bGVDb29yZHM9W10sdC5iYXJQYWRGb3JOdW1lcmljQXhpcz0wLHQucGFkSG9yaXpvbnRhbD0wLHQueFJhbmdlPTAsdC55UmFuZ2U9W10sdC56UmFuZ2U9MCx0LmRhdGFQb2ludHM9MCx0LnhUaWNrQW1vdW50PTB9fSx7a2V5OlwiZ2xvYmFsVmFyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybntjaGFydElEOm51bGwsY3VpZDpudWxsLGV2ZW50czp7YmVmb3JlTW91bnQ6W10sbW91bnRlZDpbXSx1cGRhdGVkOltdLGNsaWNrZWQ6W10sc2VsZWN0aW9uOltdLGRhdGFQb2ludFNlbGVjdGlvbjpbXSx6b29tZWQ6W10sc2Nyb2xsZWQ6W119LGNvbG9yczpbXSxjbGllbnRYOm51bGwsY2xpZW50WTpudWxsLGZpbGw6e2NvbG9yczpbXX0sc3Ryb2tlOntjb2xvcnM6W119LGRhdGFMYWJlbHM6e3N0eWxlOntjb2xvcnM6W119fSxyYWRhclBvbHlnb25zOntmaWxsOntjb2xvcnM6W119fSxtYXJrZXJzOntjb2xvcnM6W10sc2l6ZTp0Lm1hcmtlcnMuc2l6ZSxsYXJnZXN0U2l6ZTowfSxhbmltYXRpb25FbmRlZDohMSxpc1RvdWNoRGV2aWNlOlwib250b3VjaHN0YXJ0XCJpbiB3aW5kb3d8fG5hdmlnYXRvci5tc01heFRvdWNoUG9pbnRzLGlzRGlydHk6ITEsaXNFeGVjQ2FsbGVkOiExLGluaXRpYWxDb25maWc6bnVsbCxpbml0aWFsU2VyaWVzOltdLGxhc3RYQXhpczpbXSxsYXN0WUF4aXM6W10sY29sdW1uU2VyaWVzOm51bGwsbGFiZWxzOltdLHRpbWVzY2FsZUxhYmVsczpbXSxub0xhYmVsc1Byb3ZpZGVkOiExLGFsbFNlcmllc0NvbGxhcHNlZDohMSxjb2xsYXBzZWRTZXJpZXM6W10sY29sbGFwc2VkU2VyaWVzSW5kaWNlczpbXSxhbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXM6W10sYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlczpbXSxyaXNpbmdTZXJpZXM6W10sZGF0YUZvcm1hdFhOdW1lcmljOiExLGNhcHR1cmVkU2VyaWVzSW5kZXg6LTEsY2FwdHVyZWREYXRhUG9pbnRJbmRleDotMSxzZWxlY3RlZERhdGFQb2ludHM6W10sZ29sZGVuUGFkZGluZzozNSxpbnZhbGlkTG9nU2NhbGU6ITEsaWdub3JlWUF4aXNJbmRleGVzOltdLHlBeGlzU2FtZVNjYWxlSW5kaWNlczpbXSxtYXhWYWxzSW5BcnJheUluZGV4OjAscmFkaWFsU2l6ZTowLHNlbGVjdGlvbjp2b2lkIDAsem9vbUVuYWJsZWQ6XCJ6b29tXCI9PT10LmNoYXJ0LnRvb2xiYXIuYXV0b1NlbGVjdGVkJiZ0LmNoYXJ0LnRvb2xiYXIudG9vbHMuem9vbSYmdC5jaGFydC56b29tLmVuYWJsZWQscGFuRW5hYmxlZDpcInBhblwiPT09dC5jaGFydC50b29sYmFyLmF1dG9TZWxlY3RlZCYmdC5jaGFydC50b29sYmFyLnRvb2xzLnBhbixzZWxlY3Rpb25FbmFibGVkOlwic2VsZWN0aW9uXCI9PT10LmNoYXJ0LnRvb2xiYXIuYXV0b1NlbGVjdGVkJiZ0LmNoYXJ0LnRvb2xiYXIudG9vbHMuc2VsZWN0aW9uLHlheGlzOm51bGwsbW91c2Vkb3duOiExLGxhc3RDbGllbnRQb3NpdGlvbjp7fSx2aXNpYmxlWFJhbmdlOnZvaWQgMCx5VmFsdWVEZWNpbWFsOjAsdG90YWw6MCxTVkdOUzpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsc3ZnV2lkdGg6MCxzdmdIZWlnaHQ6MCxub0RhdGE6ITEsbG9jYWxlOnt9LGRvbTp7fSxtZW1vcnk6e21ldGhvZHNUb0V4ZWM6W119LHNob3VsZEFuaW1hdGU6ITAsc2tpcExhc3RUaW1lbGluZWxhYmVsOiExLHNraXBGaXJzdFRpbWVsaW5lbGFiZWw6ITEsZGVsYXllZEVsZW1lbnRzOltdLGF4aXNDaGFydHM6ITAsaXNEYXRhWFlaOiExLHJlc2l6ZWQ6ITEscmVzaXplVGltZXI6bnVsbCxjb21ib0NoYXJ0czohMSxkYXRhQ2hhbmdlZDohMSxwcmV2aW91c1BhdGhzOltdLGFsbFNlcmllc0hhc0VxdWFsWDohMCxwb2ludHNBcnJheTpbXSxkYXRhTGFiZWxzUmVjdHM6W10sbGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXM6W10saGFzTnVsbFZhbHVlczohMSxlYXNpbmc6bnVsbCx6b29tZWQ6ITEsZ3JpZFdpZHRoOjAsZ3JpZEhlaWdodDowLHJvdGF0ZVhMYWJlbHM6ITEsZGVmYXVsdExhYmVsczohMSx4TGFiZWxGb3JtYXR0ZXI6dm9pZCAwLHlMYWJlbEZvcm1hdHRlcnM6W10seGF4aXNUb29sdGlwRm9ybWF0dGVyOnZvaWQgMCx0dEtleUZvcm1hdHRlcjp2b2lkIDAsdHRWYWw6dm9pZCAwLHR0WkZvcm1hdHRlcjp2b2lkIDAsTElORV9IRUlHSFRfUkFUSU86MS42MTgseEF4aXNMYWJlbHNIZWlnaHQ6MCx4QXhpc0dyb3VwTGFiZWxzSGVpZ2h0OjAseEF4aXNMYWJlbHNXaWR0aDowLHlBeGlzTGFiZWxzV2lkdGg6MCxzY2FsZVg6MSxzY2FsZVk6MSx0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHRyYW5zbGF0ZVlBeGlzWDpbXSx5QXhpc1dpZHRoczpbXSx0cmFuc2xhdGVYQXhpc1k6MCx0cmFuc2xhdGVYQXhpc1g6MCx0b29sdGlwOm51bGx9fX0se2tleTpcImluaXRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmdsb2JhbFZhcnModCk7cmV0dXJuIHRoaXMuaW5pdEdsb2JhbFZhcnMoZSksZS5pbml0aWFsQ29uZmlnPXguZXh0ZW5kKHt9LHQpLGUuaW5pdGlhbFNlcmllcz14LmNsb25lKHQuc2VyaWVzKSxlLmxhc3RYQXhpcz14LmNsb25lKGUuaW5pdGlhbENvbmZpZy54YXhpcyksZS5sYXN0WUF4aXM9eC5jbG9uZShlLmluaXRpYWxDb25maWcueWF4aXMpLGV9fV0pLHR9KCksRj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMub3B0cz1lfXJldHVybiByKHQsW3trZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgRSh0aGlzLm9wdHMpLmluaXQoe3Jlc3BvbnNpdmVPdmVycmlkZTohMX0pO3JldHVybntjb25maWc6dCxnbG9iYWxzOihuZXcgWSkuaW5pdCh0KX19fV0pLHR9KCksUj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLm9wdHM9bnVsbCx0aGlzLnNlcmllc0luZGV4PTB9cmV0dXJuIHIodCxbe2tleTpcImNsaXBwZWRJbWdBcmVhXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9ZS5jb25maWcsYT1wYXJzZUludChlLmdsb2JhbHMuZ3JpZFdpZHRoLDEwKSxzPXBhcnNlSW50KGUuZ2xvYmFscy5ncmlkSGVpZ2h0LDEwKSxyPWE+cz9hOnMsbz10LmltYWdlLG49MCxsPTA7dm9pZCAwPT09dC53aWR0aCYmdm9pZCAwPT09dC5oZWlnaHQ/dm9pZCAwIT09aS5maWxsLmltYWdlLndpZHRoJiZ2b2lkIDAhPT1pLmZpbGwuaW1hZ2UuaGVpZ2h0PyhuPWkuZmlsbC5pbWFnZS53aWR0aCsxLGw9aS5maWxsLmltYWdlLmhlaWdodCk6KG49cisxLGw9cik6KG49dC53aWR0aCxsPXQuaGVpZ2h0KTt2YXIgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZS5nbG9iYWxzLlNWR05TLFwicGF0dGVyblwiKTttLnNldEF0dHJzKGgse2lkOnQucGF0dGVybklELHBhdHRlcm5Vbml0czp0LnBhdHRlcm5Vbml0cz90LnBhdHRlcm5Vbml0czpcInVzZXJTcGFjZU9uVXNlXCIsd2lkdGg6bitcInB4XCIsaGVpZ2h0OmwrXCJweFwifSk7dmFyIGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuZ2xvYmFscy5TVkdOUyxcImltYWdlXCIpO2guYXBwZW5kQ2hpbGQoYyksYy5zZXRBdHRyaWJ1dGVOUyh3aW5kb3cuU1ZHLnhsaW5rLFwiaHJlZlwiLG8pLG0uc2V0QXR0cnMoYyx7eDowLHk6MCxwcmVzZXJ2ZUFzcGVjdFJhdGlvOlwibm9uZVwiLHdpZHRoOm4rXCJweFwiLGhlaWdodDpsK1wicHhcIn0pLGMuc3R5bGUub3BhY2l0eT10Lm9wYWNpdHksZS5nbG9iYWxzLmRvbS5lbERlZnMubm9kZS5hcHBlbmRDaGlsZChoKX19LHtrZXk6XCJnZXRTZXJpZXNJbmRleFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztyZXR1cm4oXCJiYXJcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGV8fFwicmFuZ2VCYXJcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGUpJiZlLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGlzdHJpYnV0ZWR8fFwiaGVhdG1hcFwiPT09ZS5jb25maWcuY2hhcnQudHlwZXx8XCJ0cmVlbWFwXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlP3RoaXMuc2VyaWVzSW5kZXg9dC5zZXJpZXNOdW1iZXI6dGhpcy5zZXJpZXNJbmRleD10LnNlcmllc051bWJlciVlLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCx0aGlzLnNlcmllc0luZGV4fX0se2tleTpcImZpbGxQYXRoXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O3RoaXMub3B0cz10O3ZhciBpLGEscyxyPXRoaXMudy5jb25maWc7dGhpcy5zZXJpZXNJbmRleD10aGlzLmdldFNlcmllc0luZGV4KHQpO3ZhciBvPXRoaXMuZ2V0RmlsbENvbG9ycygpW3RoaXMuc2VyaWVzSW5kZXhdO3ZvaWQgMCE9PWUuZ2xvYmFscy5zZXJpZXNDb2xvcnNbdGhpcy5zZXJpZXNJbmRleF0mJihvPWUuZ2xvYmFscy5zZXJpZXNDb2xvcnNbdGhpcy5zZXJpZXNJbmRleF0pLFwiZnVuY3Rpb25cIj09dHlwZW9mIG8mJihvPW8oe3Nlcmllc0luZGV4OnRoaXMuc2VyaWVzSW5kZXgsZGF0YVBvaW50SW5kZXg6dC5kYXRhUG9pbnRJbmRleCx2YWx1ZTp0LnZhbHVlLHc6ZX0pKTt2YXIgbj10LmZpbGxUeXBlP3QuZmlsbFR5cGU6dGhpcy5nZXRGaWxsVHlwZSh0aGlzLnNlcmllc0luZGV4KSxsPUFycmF5LmlzQXJyYXkoci5maWxsLm9wYWNpdHkpP3IuZmlsbC5vcGFjaXR5W3RoaXMuc2VyaWVzSW5kZXhdOnIuZmlsbC5vcGFjaXR5O3QuY29sb3ImJihvPXQuY29sb3IpO3ZhciBoPW87aWYoLTE9PT1vLmluZGV4T2YoXCJyZ2JcIik/by5sZW5ndGg8OSYmKGg9eC5oZXhUb1JnYmEobyxsKSk6by5pbmRleE9mKFwicmdiYVwiKT4tMSYmKGw9eC5nZXRPcGFjaXR5RnJvbVJHQkEobykpLHQub3BhY2l0eSYmKGw9dC5vcGFjaXR5KSxcInBhdHRlcm5cIj09PW4mJihhPXRoaXMuaGFuZGxlUGF0dGVybkZpbGwoe2ZpbGxDb25maWc6dC5maWxsQ29uZmlnLHBhdHRlcm5GaWxsOmEsZmlsbENvbG9yOm8sZmlsbE9wYWNpdHk6bCxkZWZhdWx0Q29sb3I6aH0pKSxcImdyYWRpZW50XCI9PT1uJiYocz10aGlzLmhhbmRsZUdyYWRpZW50RmlsbCh7ZmlsbENvbmZpZzp0LmZpbGxDb25maWcsZmlsbENvbG9yOm8sZmlsbE9wYWNpdHk6bCxpOnRoaXMuc2VyaWVzSW5kZXh9KSksXCJpbWFnZVwiPT09bil7dmFyIGM9ci5maWxsLmltYWdlLnNyYyxkPXQucGF0dGVybklEP3QucGF0dGVybklEOlwiXCI7dGhpcy5jbGlwcGVkSW1nQXJlYSh7b3BhY2l0eTpsLGltYWdlOkFycmF5LmlzQXJyYXkoYyk/dC5zZXJpZXNOdW1iZXI8Yy5sZW5ndGg/Y1t0LnNlcmllc051bWJlcl06Y1swXTpjLHdpZHRoOnQud2lkdGg/dC53aWR0aDp2b2lkIDAsaGVpZ2h0OnQuaGVpZ2h0P3QuaGVpZ2h0OnZvaWQgMCxwYXR0ZXJuVW5pdHM6dC5wYXR0ZXJuVW5pdHMscGF0dGVybklEOlwicGF0dGVyblwiLmNvbmNhdChlLmdsb2JhbHMuY3VpZCkuY29uY2F0KHQuc2VyaWVzTnVtYmVyKzEpLmNvbmNhdChkKX0pLGk9XCJ1cmwoI3BhdHRlcm5cIi5jb25jYXQoZS5nbG9iYWxzLmN1aWQpLmNvbmNhdCh0LnNlcmllc051bWJlcisxKS5jb25jYXQoZCxcIilcIil9ZWxzZSBpPVwiZ3JhZGllbnRcIj09PW4/czpcInBhdHRlcm5cIj09PW4/YTpoO3JldHVybiB0LnNvbGlkJiYoaT1oKSxpfX0se2tleTpcImdldEZpbGxUeXBlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O3JldHVybiBBcnJheS5pc0FycmF5KGUuY29uZmlnLmZpbGwudHlwZSk/ZS5jb25maWcuZmlsbC50eXBlW3RdOmUuY29uZmlnLmZpbGwudHlwZX19LHtrZXk6XCJnZXRGaWxsQ29sb3JzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10LmNvbmZpZyxpPXRoaXMub3B0cyxhPVtdO3JldHVybiB0Lmdsb2JhbHMuY29tYm9DaGFydHM/XCJsaW5lXCI9PT10LmNvbmZpZy5zZXJpZXNbdGhpcy5zZXJpZXNJbmRleF0udHlwZT9BcnJheS5pc0FycmF5KHQuZ2xvYmFscy5zdHJva2UuY29sb3JzKT9hPXQuZ2xvYmFscy5zdHJva2UuY29sb3JzOmEucHVzaCh0Lmdsb2JhbHMuc3Ryb2tlLmNvbG9ycyk6QXJyYXkuaXNBcnJheSh0Lmdsb2JhbHMuZmlsbC5jb2xvcnMpP2E9dC5nbG9iYWxzLmZpbGwuY29sb3JzOmEucHVzaCh0Lmdsb2JhbHMuZmlsbC5jb2xvcnMpOlwibGluZVwiPT09ZS5jaGFydC50eXBlP0FycmF5LmlzQXJyYXkodC5nbG9iYWxzLnN0cm9rZS5jb2xvcnMpP2E9dC5nbG9iYWxzLnN0cm9rZS5jb2xvcnM6YS5wdXNoKHQuZ2xvYmFscy5zdHJva2UuY29sb3JzKTpBcnJheS5pc0FycmF5KHQuZ2xvYmFscy5maWxsLmNvbG9ycyk/YT10Lmdsb2JhbHMuZmlsbC5jb2xvcnM6YS5wdXNoKHQuZ2xvYmFscy5maWxsLmNvbG9ycyksdm9pZCAwIT09aS5maWxsQ29sb3JzJiYoYT1bXSxBcnJheS5pc0FycmF5KGkuZmlsbENvbG9ycyk/YT1pLmZpbGxDb2xvcnMuc2xpY2UoKTphLnB1c2goaS5maWxsQ29sb3JzKSksYX19LHtrZXk6XCJoYW5kbGVQYXR0ZXJuRmlsbFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZmlsbENvbmZpZyxpPXQucGF0dGVybkZpbGwsYT10LmZpbGxDb2xvcixzPXQuZmlsbE9wYWNpdHkscj10LmRlZmF1bHRDb2xvcixvPXRoaXMudy5jb25maWcuZmlsbDtlJiYobz1lKTt2YXIgbj10aGlzLm9wdHMsbD1uZXcgbSh0aGlzLmN0eCksaD1BcnJheS5pc0FycmF5KG8ucGF0dGVybi5zdHJva2VXaWR0aCk/by5wYXR0ZXJuLnN0cm9rZVdpZHRoW3RoaXMuc2VyaWVzSW5kZXhdOm8ucGF0dGVybi5zdHJva2VXaWR0aCxjPWE7QXJyYXkuaXNBcnJheShvLnBhdHRlcm4uc3R5bGUpP2k9dm9pZCAwIT09by5wYXR0ZXJuLnN0eWxlW24uc2VyaWVzTnVtYmVyXT9sLmRyYXdQYXR0ZXJuKG8ucGF0dGVybi5zdHlsZVtuLnNlcmllc051bWJlcl0sby5wYXR0ZXJuLndpZHRoLG8ucGF0dGVybi5oZWlnaHQsYyxoLHMpOnI6aT1sLmRyYXdQYXR0ZXJuKG8ucGF0dGVybi5zdHlsZSxvLnBhdHRlcm4ud2lkdGgsby5wYXR0ZXJuLmhlaWdodCxjLGgscyk7cmV0dXJuIGl9fSx7a2V5OlwiaGFuZGxlR3JhZGllbnRGaWxsXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGk9dC5maWxsQ29sb3IsYT10LmZpbGxPcGFjaXR5LHM9dC5maWxsQ29uZmlnLHI9dC5pLG89dGhpcy53LmNvbmZpZy5maWxsO3MmJihvPWUoZSh7fSxvKSxzKSk7dmFyIG4sbD10aGlzLm9wdHMsaD1uZXcgbSh0aGlzLmN0eCksYz1uZXcgeCxkPW8uZ3JhZGllbnQudHlwZSxnPWksdT12b2lkIDA9PT1vLmdyYWRpZW50Lm9wYWNpdHlGcm9tP2E6QXJyYXkuaXNBcnJheShvLmdyYWRpZW50Lm9wYWNpdHlGcm9tKT9vLmdyYWRpZW50Lm9wYWNpdHlGcm9tW3JdOm8uZ3JhZGllbnQub3BhY2l0eUZyb207Zy5pbmRleE9mKFwicmdiYVwiKT4tMSYmKHU9eC5nZXRPcGFjaXR5RnJvbVJHQkEoZykpO3ZhciBwPXZvaWQgMD09PW8uZ3JhZGllbnQub3BhY2l0eVRvP2E6QXJyYXkuaXNBcnJheShvLmdyYWRpZW50Lm9wYWNpdHlUbyk/by5ncmFkaWVudC5vcGFjaXR5VG9bcl06by5ncmFkaWVudC5vcGFjaXR5VG87aWYodm9pZCAwPT09by5ncmFkaWVudC5ncmFkaWVudFRvQ29sb3JzfHwwPT09by5ncmFkaWVudC5ncmFkaWVudFRvQ29sb3JzLmxlbmd0aCluPVwiZGFya1wiPT09by5ncmFkaWVudC5zaGFkZT9jLnNoYWRlQ29sb3IoLTEqcGFyc2VGbG9hdChvLmdyYWRpZW50LnNoYWRlSW50ZW5zaXR5KSxpLmluZGV4T2YoXCJyZ2JcIik+LTE/eC5yZ2IyaGV4KGkpOmkpOmMuc2hhZGVDb2xvcihwYXJzZUZsb2F0KG8uZ3JhZGllbnQuc2hhZGVJbnRlbnNpdHkpLGkuaW5kZXhPZihcInJnYlwiKT4tMT94LnJnYjJoZXgoaSk6aSk7ZWxzZSBpZihvLmdyYWRpZW50LmdyYWRpZW50VG9Db2xvcnNbbC5zZXJpZXNOdW1iZXJdKXt2YXIgZj1vLmdyYWRpZW50LmdyYWRpZW50VG9Db2xvcnNbbC5zZXJpZXNOdW1iZXJdO249ZixmLmluZGV4T2YoXCJyZ2JhXCIpPi0xJiYocD14LmdldE9wYWNpdHlGcm9tUkdCQShmKSl9ZWxzZSBuPWk7aWYoby5ncmFkaWVudC5ncmFkaWVudEZyb20mJihnPW8uZ3JhZGllbnQuZ3JhZGllbnRGcm9tKSxvLmdyYWRpZW50LmdyYWRpZW50VG8mJihuPW8uZ3JhZGllbnQuZ3JhZGllbnRUbyksby5ncmFkaWVudC5pbnZlcnNlQ29sb3JzKXt2YXIgYj1nO2c9bixuPWJ9cmV0dXJuIGcuaW5kZXhPZihcInJnYlwiKT4tMSYmKGc9eC5yZ2IyaGV4KGcpKSxuLmluZGV4T2YoXCJyZ2JcIik+LTEmJihuPXgucmdiMmhleChuKSksaC5kcmF3R3JhZGllbnQoZCxnLG4sdSxwLGwuc2l6ZSxvLmdyYWRpZW50LnN0b3BzLG8uZ3JhZGllbnQuY29sb3JTdG9wcyxyKX19XSksdH0oKSxEPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcInNldEdsb2JhbE1hcmtlclNpemVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudztpZih0Lmdsb2JhbHMubWFya2Vycy5zaXplPUFycmF5LmlzQXJyYXkodC5jb25maWcubWFya2Vycy5zaXplKT90LmNvbmZpZy5tYXJrZXJzLnNpemU6W3QuY29uZmlnLm1hcmtlcnMuc2l6ZV0sdC5nbG9iYWxzLm1hcmtlcnMuc2l6ZS5sZW5ndGg+MCl7aWYodC5nbG9iYWxzLm1hcmtlcnMuc2l6ZS5sZW5ndGg8dC5nbG9iYWxzLnNlcmllcy5sZW5ndGgrMSlmb3IodmFyIGU9MDtlPD10Lmdsb2JhbHMuc2VyaWVzLmxlbmd0aDtlKyspdm9pZCAwPT09dC5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtlXSYmdC5nbG9iYWxzLm1hcmtlcnMuc2l6ZS5wdXNoKHQuZ2xvYmFscy5tYXJrZXJzLnNpemVbMF0pfWVsc2UgdC5nbG9iYWxzLm1hcmtlcnMuc2l6ZT10LmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC5jb25maWcubWFya2Vycy5zaXplfSkpfX0se2tleTpcInBsb3RDaGFydE1hcmtlcnNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcyxyPWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdJiZhcmd1bWVudHNbNF0sbz10aGlzLncsbj1lLGw9dCxoPW51bGwsYz1uZXcgbSh0aGlzLmN0eCksZD1vLmNvbmZpZy5tYXJrZXJzLmRpc2NyZXRlJiZvLmNvbmZpZy5tYXJrZXJzLmRpc2NyZXRlLmxlbmd0aDtpZigoby5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtlXT4wfHxyfHxkKSYmKGg9Yy5ncm91cCh7Y2xhc3M6cnx8ZD9cIlwiOlwiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vyc1wifSkpLmF0dHIoXCJjbGlwLXBhdGhcIixcInVybCgjZ3JpZFJlY3RNYXJrZXJNYXNrXCIuY29uY2F0KG8uZ2xvYmFscy5jdWlkLFwiKVwiKSksQXJyYXkuaXNBcnJheShsLngpKWZvcih2YXIgZz0wO2c8bC54Lmxlbmd0aDtnKyspe3ZhciB1PWk7MT09PWkmJjA9PT1nJiYodT0wKSwxPT09aSYmMT09PWcmJih1PTEpO3ZhciBwPVwiYXBleGNoYXJ0cy1tYXJrZXJcIjtpZihcImxpbmVcIiE9PW8uY29uZmlnLmNoYXJ0LnR5cGUmJlwiYXJlYVwiIT09by5jb25maWcuY2hhcnQudHlwZXx8by5nbG9iYWxzLmNvbWJvQ2hhcnRzfHxvLmNvbmZpZy50b29sdGlwLmludGVyc2VjdHx8KHArPVwiIG5vLXBvaW50ZXItZXZlbnRzXCIpLChBcnJheS5pc0FycmF5KG8uY29uZmlnLm1hcmtlcnMuc2l6ZSk/by5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtlXT4wOm8uY29uZmlnLm1hcmtlcnMuc2l6ZT4wKXx8cnx8ZCl7eC5pc051bWJlcihsLnlbZ10pP3ArPVwiIHdcIi5jb25jYXQoeC5yYW5kb21JZCgpKTpwPVwiYXBleGNoYXJ0cy1udWxscG9pbnRcIjt2YXIgZj10aGlzLmdldE1hcmtlckNvbmZpZyh7Y3NzQ2xhc3M6cCxzZXJpZXNJbmRleDplLGRhdGFQb2ludEluZGV4OnV9KTtvLmNvbmZpZy5zZXJpZXNbbl0uZGF0YVt1XSYmKG8uY29uZmlnLnNlcmllc1tuXS5kYXRhW3VdLmZpbGxDb2xvciYmKGYucG9pbnRGaWxsQ29sb3I9by5jb25maWcuc2VyaWVzW25dLmRhdGFbdV0uZmlsbENvbG9yKSxvLmNvbmZpZy5zZXJpZXNbbl0uZGF0YVt1XS5zdHJva2VDb2xvciYmKGYucG9pbnRTdHJva2VDb2xvcj1vLmNvbmZpZy5zZXJpZXNbbl0uZGF0YVt1XS5zdHJva2VDb2xvcikpLGEmJihmLnBTaXplPWEpLChsLnhbZ108MHx8bC54W2ddPm8uZ2xvYmFscy5ncmlkV2lkdGh8fGwueVtnXTwwfHxsLnlbZ10+by5nbG9iYWxzLmdyaWRIZWlnaHQpJiYoZi5wU2l6ZT0wKSwocz1jLmRyYXdNYXJrZXIobC54W2ddLGwueVtnXSxmKSkuYXR0cihcInJlbFwiLHUpLHMuYXR0cihcImpcIix1KSxzLmF0dHIoXCJpbmRleFwiLGUpLHMubm9kZS5zZXRBdHRyaWJ1dGUoXCJkZWZhdWx0LW1hcmtlci1zaXplXCIsZi5wU2l6ZSksbmV3IHYodGhpcy5jdHgpLnNldFNlbGVjdGlvbkZpbHRlcihzLGUsdSksdGhpcy5hZGRFdmVudHMocyksaCYmaC5hZGQocyl9ZWxzZSB2b2lkIDA9PT1vLmdsb2JhbHMucG9pbnRzQXJyYXlbZV0mJihvLmdsb2JhbHMucG9pbnRzQXJyYXlbZV09W10pLG8uZ2xvYmFscy5wb2ludHNBcnJheVtlXS5wdXNoKFtsLnhbZ10sbC55W2ddXSl9cmV0dXJuIGh9fSx7a2V5OlwiZ2V0TWFya2VyQ29uZmlnXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5jc3NDbGFzcyxpPXQuc2VyaWVzSW5kZXgsYT10LmRhdGFQb2ludEluZGV4LHM9dm9pZCAwPT09YT9udWxsOmEscj10LmZpbmlzaFJhZGl1cyxvPXZvaWQgMD09PXI/bnVsbDpyLG49dGhpcy53LGw9dGhpcy5nZXRNYXJrZXJTdHlsZShpKSxoPW4uZ2xvYmFscy5tYXJrZXJzLnNpemVbaV0sYz1uLmNvbmZpZy5tYXJrZXJzO3JldHVybiBudWxsIT09cyYmYy5kaXNjcmV0ZS5sZW5ndGgmJmMuZGlzY3JldGUubWFwKChmdW5jdGlvbih0KXt0LnNlcmllc0luZGV4PT09aSYmdC5kYXRhUG9pbnRJbmRleD09PXMmJihsLnBvaW50U3Ryb2tlQ29sb3I9dC5zdHJva2VDb2xvcixsLnBvaW50RmlsbENvbG9yPXQuZmlsbENvbG9yLGg9dC5zaXplLGwucG9pbnRTaGFwZT10LnNoYXBlKX0pKSx7cFNpemU6bnVsbD09PW8/aDpvLHBSYWRpdXM6Yy5yYWRpdXMsd2lkdGg6QXJyYXkuaXNBcnJheShjLndpZHRoKT9jLndpZHRoW2ldOmMud2lkdGgsaGVpZ2h0OkFycmF5LmlzQXJyYXkoYy5oZWlnaHQpP2MuaGVpZ2h0W2ldOmMuaGVpZ2h0LHBvaW50U3Ryb2tlV2lkdGg6QXJyYXkuaXNBcnJheShjLnN0cm9rZVdpZHRoKT9jLnN0cm9rZVdpZHRoW2ldOmMuc3Ryb2tlV2lkdGgscG9pbnRTdHJva2VDb2xvcjpsLnBvaW50U3Ryb2tlQ29sb3IscG9pbnRGaWxsQ29sb3I6bC5wb2ludEZpbGxDb2xvcixzaGFwZTpsLnBvaW50U2hhcGV8fChBcnJheS5pc0FycmF5KGMuc2hhcGUpP2Muc2hhcGVbaV06Yy5zaGFwZSksY2xhc3M6ZSxwb2ludFN0cm9rZU9wYWNpdHk6QXJyYXkuaXNBcnJheShjLnN0cm9rZU9wYWNpdHkpP2Muc3Ryb2tlT3BhY2l0eVtpXTpjLnN0cm9rZU9wYWNpdHkscG9pbnRTdHJva2VEYXNoQXJyYXk6QXJyYXkuaXNBcnJheShjLnN0cm9rZURhc2hBcnJheSk/Yy5zdHJva2VEYXNoQXJyYXlbaV06Yy5zdHJva2VEYXNoQXJyYXkscG9pbnRGaWxsT3BhY2l0eTpBcnJheS5pc0FycmF5KGMuZmlsbE9wYWNpdHkpP2MuZmlsbE9wYWNpdHlbaV06Yy5maWxsT3BhY2l0eSxzZXJpZXNJbmRleDppfX19LHtrZXk6XCJhZGRFdmVudHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCk7dC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsaS5wYXRoTW91c2VFbnRlci5iaW5kKHRoaXMuY3R4LHQpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIixpLnBhdGhNb3VzZUxlYXZlLmJpbmQodGhpcy5jdHgsdCkpLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsaS5wYXRoTW91c2VEb3duLmJpbmQodGhpcy5jdHgsdCkpLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIixlLmNvbmZpZy5tYXJrZXJzLm9uQ2xpY2spLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwiZGJsY2xpY2tcIixlLmNvbmZpZy5tYXJrZXJzLm9uRGJsQ2xpY2spLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLGkucGF0aE1vdXNlRG93bi5iaW5kKHRoaXMuY3R4LHQpLHtwYXNzaXZlOiEwfSl9fSx7a2V5OlwiZ2V0TWFya2VyU3R5bGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1lLmdsb2JhbHMubWFya2Vycy5jb2xvcnMsYT1lLmNvbmZpZy5tYXJrZXJzLnN0cm9rZUNvbG9yfHxlLmNvbmZpZy5tYXJrZXJzLnN0cm9rZUNvbG9ycztyZXR1cm57cG9pbnRTdHJva2VDb2xvcjpBcnJheS5pc0FycmF5KGEpP2FbdF06YSxwb2ludEZpbGxDb2xvcjpBcnJheS5pc0FycmF5KGkpP2lbdF06aX19fV0pLHR9KCksSD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLmluaXRpYWxBbmltPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkLHRoaXMuZHluYW1pY0FuaW09dGhpcy5pbml0aWFsQW5pbSYmdGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZH1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLncscz1uZXcgbSh0aGlzLmN0eCkscj1pLnJlYWxJbmRleCxvPWkucG9pbnRzUG9zLG49aS56UmF0aW8sbD1pLmVsUGFyZW50LGg9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzIGFwZXhjaGFydHMtc2VyaWVzLVwiLmNvbmNhdChhLmNvbmZpZy5jaGFydC50eXBlKX0pO2lmKGguYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hcmtlck1hc2tcIi5jb25jYXQoYS5nbG9iYWxzLmN1aWQsXCIpXCIpKSxBcnJheS5pc0FycmF5KG8ueCkpZm9yKHZhciBjPTA7YzxvLngubGVuZ3RoO2MrKyl7dmFyIGQ9ZSsxLGc9ITA7MD09PWUmJjA9PT1jJiYoZD0wKSwwPT09ZSYmMT09PWMmJihkPTEpO3ZhciB1PTAscD1hLmdsb2JhbHMubWFya2Vycy5zaXplW3JdO2lmKG4hPT0xLzApe3ZhciBmPWEuY29uZmlnLnBsb3RPcHRpb25zLmJ1YmJsZTtwPWEuZ2xvYmFscy5zZXJpZXNaW3JdW2RdLGYuelNjYWxpbmcmJihwLz1uKSxmLm1pbkJ1YmJsZVJhZGl1cyYmcDxmLm1pbkJ1YmJsZVJhZGl1cyYmKHA9Zi5taW5CdWJibGVSYWRpdXMpLGYubWF4QnViYmxlUmFkaXVzJiZwPmYubWF4QnViYmxlUmFkaXVzJiYocD1mLm1heEJ1YmJsZVJhZGl1cyl9YS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkfHwodT1wKTt2YXIgeD1vLnhbY10sYj1vLnlbY107aWYodT11fHwwLG51bGwhPT1iJiZ2b2lkIDAhPT1hLmdsb2JhbHMuc2VyaWVzW3JdW2RdfHwoZz0hMSksZyl7dmFyIHY9dGhpcy5kcmF3UG9pbnQoeCxiLHUscCxyLGQsZSk7aC5hZGQodil9bC5hZGQoaCl9fX0se2tleTpcImRyYXdQb2ludFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyLG8pe3ZhciBuPXRoaXMudyxsPXMsaD1uZXcgYih0aGlzLmN0eCksYz1uZXcgdih0aGlzLmN0eCksZD1uZXcgUih0aGlzLmN0eCksZz1uZXcgRCh0aGlzLmN0eCksdT1uZXcgbSh0aGlzLmN0eCkscD1nLmdldE1hcmtlckNvbmZpZyh7Y3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLW1hcmtlclwiLHNlcmllc0luZGV4OmwsZGF0YVBvaW50SW5kZXg6cixmaW5pc2hSYWRpdXM6XCJidWJibGVcIj09PW4uY29uZmlnLmNoYXJ0LnR5cGV8fG4uZ2xvYmFscy5jb21ib0NoYXJ0cyYmbi5jb25maWcuc2VyaWVzW3NdJiZcImJ1YmJsZVwiPT09bi5jb25maWcuc2VyaWVzW3NdLnR5cGU/YTpudWxsfSk7YT1wLnBTaXplO3ZhciBmLHg9ZC5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOnMsZGF0YVBvaW50SW5kZXg6cixjb2xvcjpwLnBvaW50RmlsbENvbG9yLHBhdHRlcm5Vbml0czpcIm9iamVjdEJvdW5kaW5nQm94XCIsdmFsdWU6bi5nbG9iYWxzLnNlcmllc1tzXVtvXX0pO2lmKFwiY2lyY2xlXCI9PT1wLnNoYXBlP2Y9dS5kcmF3Q2lyY2xlKGkpOlwic3F1YXJlXCIhPT1wLnNoYXBlJiZcInJlY3RcIiE9PXAuc2hhcGV8fChmPXUuZHJhd1JlY3QoMCwwLHAud2lkdGgtcC5wb2ludFN0cm9rZVdpZHRoLzIscC5oZWlnaHQtcC5wb2ludFN0cm9rZVdpZHRoLzIscC5wUmFkaXVzKSksbi5jb25maWcuc2VyaWVzW2xdLmRhdGFbcl0mJm4uY29uZmlnLnNlcmllc1tsXS5kYXRhW3JdLmZpbGxDb2xvciYmKHg9bi5jb25maWcuc2VyaWVzW2xdLmRhdGFbcl0uZmlsbENvbG9yKSxmLmF0dHIoe3g6dC1wLndpZHRoLzItcC5wb2ludFN0cm9rZVdpZHRoLzIseTplLXAuaGVpZ2h0LzItcC5wb2ludFN0cm9rZVdpZHRoLzIsY3g6dCxjeTplLGZpbGw6eCxcImZpbGwtb3BhY2l0eVwiOnAucG9pbnRGaWxsT3BhY2l0eSxzdHJva2U6cC5wb2ludFN0cm9rZUNvbG9yLHI6YSxcInN0cm9rZS13aWR0aFwiOnAucG9pbnRTdHJva2VXaWR0aCxcInN0cm9rZS1kYXNoYXJyYXlcIjpwLnBvaW50U3Ryb2tlRGFzaEFycmF5LFwic3Ryb2tlLW9wYWNpdHlcIjpwLnBvaW50U3Ryb2tlT3BhY2l0eX0pLG4uY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIHk9bi5jb25maWcuY2hhcnQuZHJvcFNoYWRvdztjLmRyb3BTaGFkb3coZix5LHMpfWlmKCF0aGlzLmluaXRpYWxBbmltfHxuLmdsb2JhbHMuZGF0YUNoYW5nZWR8fG4uZ2xvYmFscy5yZXNpemVkKW4uZ2xvYmFscy5hbmltYXRpb25FbmRlZD0hMDtlbHNle3ZhciB3PW4uY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQ7aC5hbmltYXRlTWFya2VyKGYsMCxcImNpcmNsZVwiPT09cC5zaGFwZT9hOnt3aWR0aDpwLndpZHRoLGhlaWdodDpwLmhlaWdodH0sdyxuLmdsb2JhbHMuZWFzaW5nLChmdW5jdGlvbigpe3dpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpe2guYW5pbWF0aW9uQ29tcGxldGVkKGYpfSksMTAwKX0pKX1pZihuLmdsb2JhbHMuZGF0YUNoYW5nZWQmJlwiY2lyY2xlXCI9PT1wLnNoYXBlKWlmKHRoaXMuZHluYW1pY0FuaW0pe3ZhciBrLEEsUyxDLEw9bi5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkO251bGwhPShDPW4uZ2xvYmFscy5wcmV2aW91c1BhdGhzW3NdJiZuLmdsb2JhbHMucHJldmlvdXNQYXRoc1tzXVtvXSkmJihrPUMueCxBPUMueSxTPXZvaWQgMCE9PUMucj9DLnI6YSk7Zm9yKHZhciBQPTA7UDxuLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aDtQKyspbi5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc1tQXS5pbmRleD09PXMmJihMPTEsYT0wKTswPT09dCYmMD09PWUmJihhPTApLGguYW5pbWF0ZUNpcmNsZShmLHtjeDprLGN5OkEscjpTfSx7Y3g6dCxjeTplLHI6YX0sTCxuLmdsb2JhbHMuZWFzaW5nKX1lbHNlIGYuYXR0cih7cjphfSk7cmV0dXJuIGYuYXR0cih7cmVsOnIsajpyLGluZGV4OnMsXCJkZWZhdWx0LW1hcmtlci1zaXplXCI6YX0pLGMuc2V0U2VsZWN0aW9uRmlsdGVyKGYscyxyKSxnLmFkZEV2ZW50cyhmKSxmLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtbWFya2VyXCIpLGZ9fSx7a2V5OlwiY2VudGVyVGV4dEluQnViYmxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O3JldHVybnt5OnQrPXBhcnNlSW50KGUuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuZm9udFNpemUsMTApLzR9fX1dKSx0fSgpLE89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImRhdGFMYWJlbHNDb3JyZWN0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzLHIsbyl7dmFyIG49dGhpcy53LGw9ITEsaD1uZXcgbSh0aGlzLmN0eCkuZ2V0VGV4dFJlY3RzKGksbyksYz1oLndpZHRoLGQ9aC5oZWlnaHQ7ZTwwJiYoZT0wKSxlPm4uZ2xvYmFscy5ncmlkSGVpZ2h0K2QmJihlPW4uZ2xvYmFscy5ncmlkSGVpZ2h0K2QvMiksdm9pZCAwPT09bi5nbG9iYWxzLmRhdGFMYWJlbHNSZWN0c1thXSYmKG4uZ2xvYmFscy5kYXRhTGFiZWxzUmVjdHNbYV09W10pLG4uZ2xvYmFscy5kYXRhTGFiZWxzUmVjdHNbYV0ucHVzaCh7eDp0LHk6ZSx3aWR0aDpjLGhlaWdodDpkfSk7dmFyIGc9bi5nbG9iYWxzLmRhdGFMYWJlbHNSZWN0c1thXS5sZW5ndGgtMix1PXZvaWQgMCE9PW4uZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1thXT9uLmdsb2JhbHMubGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXNbYV1bbi5nbG9iYWxzLmxhc3REcmF3bkRhdGFMYWJlbHNJbmRleGVzW2FdLmxlbmd0aC0xXTowO2lmKHZvaWQgMCE9PW4uZ2xvYmFscy5kYXRhTGFiZWxzUmVjdHNbYV1bZ10pe3ZhciBwPW4uZ2xvYmFscy5kYXRhTGFiZWxzUmVjdHNbYV1bdV07KHQ+cC54K3Aud2lkdGgrMnx8ZT5wLnkrcC5oZWlnaHQrMnx8dCtjPHAueCkmJihsPSEwKX1yZXR1cm4oMD09PXN8fHIpJiYobD0hMCkse3g6dCx5OmUsdGV4dFJlY3RzOmgsZHJhd25leHRMYWJlbDpsfX19LHtrZXk6XCJkcmF3RGF0YUxhYmVsXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXQudHlwZSxhPXQucG9zLHM9dC5pLHI9dC5qLG89dC5pc1JhbmdlU3RhcnQsbj10LnN0cm9rZVdpZHRoLGw9dm9pZCAwPT09bj8yOm4saD10aGlzLncsYz1uZXcgbSh0aGlzLmN0eCksZD1oLmNvbmZpZy5kYXRhTGFiZWxzLGc9MCx1PTAscD1yLGY9bnVsbDtpZighZC5lbmFibGVkfHwhQXJyYXkuaXNBcnJheShhLngpKXJldHVybiBmO2Y9Yy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGEtbGFiZWxzXCJ9KTtmb3IodmFyIHg9MDt4PGEueC5sZW5ndGg7eCsrKWlmKGc9YS54W3hdK2Qub2Zmc2V0WCx1PWEueVt4XStkLm9mZnNldFkrbCwhaXNOYU4oZykpezE9PT1yJiYwPT09eCYmKHA9MCksMT09PXImJjE9PT14JiYocD0xKTt2YXIgYj1oLmdsb2JhbHMuc2VyaWVzW3NdW3BdO1wicmFuZ2VBcmVhXCI9PT1pJiYoYj1vP2guZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0W3NdW3BdOmguZ2xvYmFscy5zZXJpZXNSYW5nZUVuZFtzXVtwXSk7dmFyIHY9XCJcIix5PWZ1bmN0aW9uKHQpe3JldHVybiBoLmNvbmZpZy5kYXRhTGFiZWxzLmZvcm1hdHRlcih0LHtjdHg6ZS5jdHgsc2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpwLHc6aH0pfTtpZihcImJ1YmJsZVwiPT09aC5jb25maWcuY2hhcnQudHlwZSl2PXkoYj1oLmdsb2JhbHMuc2VyaWVzWltzXVtwXSksdT1hLnlbeF0sdT1uZXcgSCh0aGlzLmN0eCkuY2VudGVyVGV4dEluQnViYmxlKHUscyxwKS55O2Vsc2Ugdm9pZCAwIT09YiYmKHY9eShiKSk7dGhpcy5wbG90RGF0YUxhYmVsc1RleHQoe3g6Zyx5OnUsdGV4dDp2LGk6cyxqOnAscGFyZW50OmYsb2Zmc2V0Q29ycmVjdGlvbjohMCxkYXRhTGFiZWxzQ29uZmlnOmguY29uZmlnLmRhdGFMYWJlbHN9KX1yZXR1cm4gZn19LHtrZXk6XCJwbG90RGF0YUxhYmVsc1RleHRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCksYT10Lngscz10Lnkscj10Lmksbz10Lmosbj10LnRleHQsbD10LnRleHRBbmNob3IsaD10LmZvbnRTaXplLGM9dC5wYXJlbnQsZD10LmRhdGFMYWJlbHNDb25maWcsZz10LmNvbG9yLHU9dC5hbHdheXNEcmF3RGF0YUxhYmVsLHA9dC5vZmZzZXRDb3JyZWN0aW9uO2lmKCEoQXJyYXkuaXNBcnJheShlLmNvbmZpZy5kYXRhTGFiZWxzLmVuYWJsZWRPblNlcmllcykmJmUuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZE9uU2VyaWVzLmluZGV4T2Yocik8MCkpe3ZhciBmPXt4OmEseTpzLGRyYXduZXh0TGFiZWw6ITAsdGV4dFJlY3RzOm51bGx9O3AmJihmPXRoaXMuZGF0YUxhYmVsc0NvcnJlY3Rpb24oYSxzLG4scixvLHUscGFyc2VJbnQoZC5zdHlsZS5mb250U2l6ZSwxMCkpKSxlLmdsb2JhbHMuem9vbWVkfHwoYT1mLngscz1mLnkpLGYudGV4dFJlY3RzJiYoYTwtMTAtZi50ZXh0UmVjdHMud2lkdGh8fGE+ZS5nbG9iYWxzLmdyaWRXaWR0aCtmLnRleHRSZWN0cy53aWR0aCsxMCkmJihuPVwiXCIpO3ZhciB4PWUuZ2xvYmFscy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9yc1tyXTsoKFwiYmFyXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlfHxcInJhbmdlQmFyXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlKSYmZS5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRpc3RyaWJ1dGVkfHxlLmNvbmZpZy5kYXRhTGFiZWxzLmRpc3RyaWJ1dGVkKSYmKHg9ZS5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzW29dKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB4JiYoeD14KHtzZXJpZXM6ZS5nbG9iYWxzLnNlcmllcyxzZXJpZXNJbmRleDpyLGRhdGFQb2ludEluZGV4Om8sdzplfSkpLGcmJih4PWcpO3ZhciBiPWQub2Zmc2V0WCx5PWQub2Zmc2V0WTtpZihcImJhclwiIT09ZS5jb25maWcuY2hhcnQudHlwZSYmXCJyYW5nZUJhclwiIT09ZS5jb25maWcuY2hhcnQudHlwZXx8KGI9MCx5PTApLGYuZHJhd25leHRMYWJlbCl7dmFyIHc9aS5kcmF3VGV4dCh7d2lkdGg6MTAwLGhlaWdodDpwYXJzZUludChkLnN0eWxlLmZvbnRTaXplLDEwKSx4OmErYix5OnMreSxmb3JlQ29sb3I6eCx0ZXh0QW5jaG9yOmx8fGQudGV4dEFuY2hvcix0ZXh0Om4sZm9udFNpemU6aHx8ZC5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OmQuc3R5bGUuZm9udEZhbWlseSxmb250V2VpZ2h0OmQuc3R5bGUuZm9udFdlaWdodHx8XCJub3JtYWxcIn0pO2lmKHcuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbFwiLGN4OmEsY3k6c30pLGQuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgaz1kLmRyb3BTaGFkb3c7bmV3IHYodGhpcy5jdHgpLmRyb3BTaGFkb3codyxrKX1jLmFkZCh3KSx2b2lkIDA9PT1lLmdsb2JhbHMubGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXNbcl0mJihlLmdsb2JhbHMubGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXNbcl09W10pLGUuZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1tyXS5wdXNoKG8pfX19fSx7a2V5OlwiYWRkQmFja2dyb3VuZFRvRGF0YUxhYmVsXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1pLmNvbmZpZy5kYXRhTGFiZWxzLmJhY2tncm91bmQscz1hLnBhZGRpbmcscj1hLnBhZGRpbmcvMixvPWUud2lkdGgsbj1lLmhlaWdodCxsPW5ldyBtKHRoaXMuY3R4KS5kcmF3UmVjdChlLngtcyxlLnktci8yLG8rMipzLG4rcixhLmJvcmRlclJhZGl1cyxcInRyYW5zcGFyZW50XCI9PT1pLmNvbmZpZy5jaGFydC5iYWNrZ3JvdW5kP1wiI2ZmZlwiOmkuY29uZmlnLmNoYXJ0LmJhY2tncm91bmQsYS5vcGFjaXR5LGEuYm9yZGVyV2lkdGgsYS5ib3JkZXJDb2xvcik7YS5kcm9wU2hhZG93LmVuYWJsZWQmJm5ldyB2KHRoaXMuY3R4KS5kcm9wU2hhZG93KGwsYS5kcm9wU2hhZG93KTtyZXR1cm4gbH19LHtrZXk6XCJkYXRhTGFiZWxzQmFja2dyb3VuZFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O2lmKFwiYnViYmxlXCIhPT10LmNvbmZpZy5jaGFydC50eXBlKWZvcih2YXIgZT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVscyB0ZXh0XCIpLGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIGE9ZVtpXSxzPWEuZ2V0QkJveCgpLHI9bnVsbDtpZihzLndpZHRoJiZzLmhlaWdodCYmKHI9dGhpcy5hZGRCYWNrZ3JvdW5kVG9EYXRhTGFiZWwoYSxzKSkscil7YS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShyLm5vZGUsYSk7dmFyIG89YS5nZXRBdHRyaWJ1dGUoXCJmaWxsXCIpO3QuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCYmIXQuZ2xvYmFscy5yZXNpemVkJiYhdC5nbG9iYWxzLmRhdGFDaGFuZ2VkP3IuYW5pbWF0ZSgpLmF0dHIoe2ZpbGw6b30pOnIuYXR0cih7ZmlsbDpvfSksYS5zZXRBdHRyaWJ1dGUoXCJmaWxsXCIsdC5jb25maWcuZGF0YUxhYmVscy5iYWNrZ3JvdW5kLmZvcmVDb2xvcil9fX19LHtrZXk6XCJicmluZ0ZvcndhcmRcIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVsc1wiKSxpPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1wbG90LXNlcmllczpsYXN0LWNoaWxkXCIpLGE9MDthPGUubGVuZ3RoO2ErKylpJiZpLmluc2VydEJlZm9yZShlW2FdLGkubmV4dFNpYmxpbmcpfX1dKSx0fSgpLE49ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5sZWdlbmRJbmFjdGl2ZUNsYXNzPVwibGVnZW5kLW1vdXNlb3Zlci1pbmFjdGl2ZVwifXJldHVybiByKHQsW3trZXk6XCJnZXRBbGxTZXJpZXNFbHNcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhcGV4Y2hhcnRzLXNlcmllc1wiKX19LHtrZXk6XCJnZXRTZXJpZXNCeU5hbWVcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtaW5uZXIgLmFwZXhjaGFydHMtc2VyaWVzW3Nlcmllc05hbWU9J1wiLmNvbmNhdCh4LmVzY2FwZVN0cmluZyh0KSxcIiddXCIpKX19LHtrZXk6XCJpc1Nlcmllc0hpZGRlblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0U2VyaWVzQnlOYW1lKHQpLGk9cGFyc2VJbnQoZS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSwxMCk7cmV0dXJue2lzSGlkZGVuOmUuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1zZXJpZXMtY29sbGFwc2VkXCIpLHJlYWxJbmRleDppfX19LHtrZXk6XCJhZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7ZnVuY3Rpb24gYShpKXtmb3IodmFyIGE9MDthPGkubGVuZ3RoO2ErKylpW2FdLmluZGV4PT09ZSYmdC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXNlcmllcy1jb2xsYXBzZWRcIil9YShpLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzKSxhKGkuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXMpfX0se2tleTpcInRvZ2dsZVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaXNTZXJpZXNIaWRkZW4odCk7cmV0dXJuIHRoaXMuY3R4LmxlZ2VuZC5sZWdlbmRIZWxwZXJzLnRvZ2dsZURhdGFTZXJpZXMoZS5yZWFsSW5kZXgsZS5pc0hpZGRlbiksZS5pc0hpZGRlbn19LHtrZXk6XCJzaG93U2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pc1Nlcmllc0hpZGRlbih0KTtlLmlzSGlkZGVuJiZ0aGlzLmN0eC5sZWdlbmQubGVnZW5kSGVscGVycy50b2dnbGVEYXRhU2VyaWVzKGUucmVhbEluZGV4LCEwKX19LHtrZXk6XCJoaWRlU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pc1Nlcmllc0hpZGRlbih0KTtlLmlzSGlkZGVufHx0aGlzLmN0eC5sZWdlbmQubGVnZW5kSGVscGVycy50b2dnbGVEYXRhU2VyaWVzKGUucmVhbEluZGV4LCExKX19LHtrZXk6XCJyZXNldFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXSxlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLGE9dGhpcy53LHM9eC5jbG9uZShhLmdsb2JhbHMuaW5pdGlhbFNlcmllcyk7YS5nbG9iYWxzLnByZXZpb3VzUGF0aHM9W10saT8oYS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcz1bXSxhLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzPVtdLGEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzPVtdLGEuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzPVtdKTpzPXRoaXMuZW1wdHlDb2xsYXBzZWRTZXJpZXMocyksYS5jb25maWcuc2VyaWVzPXMsdCYmKGUmJihhLmdsb2JhbHMuem9vbWVkPSExLHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoKSksdGhpcy5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlU2VyaWVzKHMsYS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQpKX19LHtrZXk6XCJlbXB0eUNvbGxhcHNlZFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLncsaT0wO2k8dC5sZW5ndGg7aSsrKWUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoaSk+LTEmJih0W2ldLmRhdGE9W10pO3JldHVybiB0fX0se2tleTpcInRvZ2dsZVNlcmllc09uSG92ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztlfHwoZT10LnRhcmdldCk7dmFyIGE9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllcywgLmFwZXhjaGFydHMtZGF0YWxhYmVsc1wiKTtpZihcIm1vdXNlbW92ZVwiPT09dC50eXBlKXt2YXIgcz1wYXJzZUludChlLmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMSxyPW51bGwsbz1udWxsO2kuZ2xvYmFscy5heGlzQ2hhcnRzfHxcInJhZGlhbEJhclwiPT09aS5jb25maWcuY2hhcnQudHlwZT9pLmdsb2JhbHMuYXhpc0NoYXJ0cz8ocj1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KHMsXCInXVwiKSksbz1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVsc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdChzLFwiJ11cIikpKTpyPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIi5jb25jYXQocysxLFwiJ11cIikpOnI9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9J1wiLmNvbmNhdChzKzEsXCInXSBwYXRoXCIpKTtmb3IodmFyIG49MDtuPGEubGVuZ3RoO24rKylhW25dLmNsYXNzTGlzdC5hZGQodGhpcy5sZWdlbmRJbmFjdGl2ZUNsYXNzKTtudWxsIT09ciYmKGkuZ2xvYmFscy5heGlzQ2hhcnRzfHxyLnBhcmVudE5vZGUuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmxlZ2VuZEluYWN0aXZlQ2xhc3MpLHIuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmxlZ2VuZEluYWN0aXZlQ2xhc3MpLG51bGwhPT1vJiZvLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5sZWdlbmRJbmFjdGl2ZUNsYXNzKSl9ZWxzZSBpZihcIm1vdXNlb3V0XCI9PT10LnR5cGUpZm9yKHZhciBsPTA7bDxhLmxlbmd0aDtsKyspYVtsXS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMubGVnZW5kSW5hY3RpdmVDbGFzcyl9fSx7a2V5OlwiaGlnaGxpZ2h0UmFuZ2VJblNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxhPXRoaXMudyxzPWEuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhcGV4Y2hhcnRzLWhlYXRtYXAtcmVjdFwiKSxyPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8cy5sZW5ndGg7ZSsrKXNbZV0uY2xhc3NMaXN0W3RdKGkubGVnZW5kSW5hY3RpdmVDbGFzcyl9O2lmKFwibW91c2Vtb3ZlXCI9PT10LnR5cGUpe3ZhciBvPXBhcnNlSW50KGUuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xO3IoXCJhZGRcIiksZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTxzLmxlbmd0aDtlKyspe3ZhciBhPXBhcnNlSW50KHNbZV0uZ2V0QXR0cmlidXRlKFwidmFsXCIpLDEwKTthPj10LmZyb20mJmE8PXQudG8mJnNbZV0uY2xhc3NMaXN0LnJlbW92ZShpLmxlZ2VuZEluYWN0aXZlQ2xhc3MpfX0oYS5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5jb2xvclNjYWxlLnJhbmdlc1tvXSl9ZWxzZVwibW91c2VvdXRcIj09PXQudHlwZSYmcihcInJlbW92ZVwiKX19LHtrZXk6XCJnZXRBY3RpdmVDb25maWdTZXJpZXNJbmRleFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOlwiYXNjXCIsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06W10saT10aGlzLncsYT0wO2lmKGkuY29uZmlnLnNlcmllcy5sZW5ndGg+MSlmb3IodmFyIHM9aS5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxhKXtyZXR1cm4gdC5kYXRhJiZ0LmRhdGEubGVuZ3RoPjAmJi0xPT09aS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihhKSYmKCFpLmdsb2JhbHMuY29tYm9DaGFydHN8fDA9PT1lLmxlbmd0aHx8ZS5sZW5ndGgmJmUuaW5kZXhPZihpLmNvbmZpZy5zZXJpZXNbYV0udHlwZSk+LTEpP2E6LTF9KSkscj1cImFzY1wiPT09dD8wOnMubGVuZ3RoLTE7XCJhc2NcIj09PXQ/cjxzLmxlbmd0aDpyPj0wO1wiYXNjXCI9PT10P3IrKzpyLS0paWYoLTEhPT1zW3JdKXthPXNbcl07YnJlYWt9cmV0dXJuIGF9fSx7a2V5OlwiZ2V0QmFyU2VyaWVzSW5kaWNlc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmNvbWJvQ2hhcnRzP3RoaXMudy5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm5cImJhclwiPT09dC50eXBlfHxcImNvbHVtblwiPT09dC50eXBlP2U6LTF9KSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4tMSE9PXR9KSk6dGhpcy53LmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBlfSkpfX0se2tleTpcImdldFByZXZpb3VzUGF0aHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudztmdW5jdGlvbiBlKGUsaSxhKXtmb3IodmFyIHM9ZVtpXS5jaGlsZE5vZGVzLHI9e3R5cGU6YSxwYXRoczpbXSxyZWFsSW5kZXg6ZVtpXS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKX0sbz0wO288cy5sZW5ndGg7bysrKWlmKHNbb10uaGFzQXR0cmlidXRlKFwicGF0aFRvXCIpKXt2YXIgbj1zW29dLmdldEF0dHJpYnV0ZShcInBhdGhUb1wiKTtyLnBhdGhzLnB1c2goe2Q6bn0pfXQuZ2xvYmFscy5wcmV2aW91c1BhdGhzLnB1c2gocil9dC5nbG9iYWxzLnByZXZpb3VzUGF0aHM9W107W1wibGluZVwiLFwiYXJlYVwiLFwiYmFyXCIsXCJyYW5nZWJhclwiLFwicmFuZ2VBcmVhXCIsXCJjYW5kbGVzdGlja1wiLFwicmFkYXJcIl0uZm9yRWFjaCgoZnVuY3Rpb24oaSl7Zm9yKHZhciBhLHM9KGE9aSx0Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KGEsXCItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1wiKSkpLHI9MDtyPHMubGVuZ3RoO3IrKyllKHMscixpKX0pKSx0aGlzLmhhbmRsZVByZXZCdWJibGVTY2F0dGVyUGF0aHMoXCJidWJibGVcIiksdGhpcy5oYW5kbGVQcmV2QnViYmxlU2NhdHRlclBhdGhzKFwic2NhdHRlclwiKTt2YXIgaT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KHQuY29uZmlnLmNoYXJ0LnR5cGUsXCIgLmFwZXhjaGFydHMtc2VyaWVzXCIpKTtpZihpLmxlbmd0aD4wKWZvcih2YXIgYT1mdW5jdGlvbihlKXtmb3IodmFyIGk9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdCh0LmNvbmZpZy5jaGFydC50eXBlLFwiIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiKS5jb25jYXQoZSxcIiddIHJlY3RcIikpLGE9W10scz1mdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbihlKXtyZXR1cm4gaVt0XS5nZXRBdHRyaWJ1dGUoZSl9LHM9e3g6cGFyc2VGbG9hdChlKFwieFwiKSkseTpwYXJzZUZsb2F0KGUoXCJ5XCIpKSx3aWR0aDpwYXJzZUZsb2F0KGUoXCJ3aWR0aFwiKSksaGVpZ2h0OnBhcnNlRmxvYXQoZShcImhlaWdodFwiKSl9O2EucHVzaCh7cmVjdDpzLGNvbG9yOmlbdF0uZ2V0QXR0cmlidXRlKFwiY29sb3JcIil9KX0scj0wO3I8aS5sZW5ndGg7cisrKXMocik7dC5nbG9iYWxzLnByZXZpb3VzUGF0aHMucHVzaChhKX0scz0wO3M8aS5sZW5ndGg7cysrKWEocyk7dC5nbG9iYWxzLmF4aXNDaGFydHN8fCh0Lmdsb2JhbHMucHJldmlvdXNQYXRocz10Lmdsb2JhbHMuc2VyaWVzKX19LHtrZXk6XCJoYW5kbGVQcmV2QnViYmxlU2NhdHRlclBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdCh0LFwiLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNcIikpO2lmKGkubGVuZ3RoPjApZm9yKHZhciBhPTA7YTxpLmxlbmd0aDthKyspe2Zvcih2YXIgcz1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KHQsXCItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiKS5jb25jYXQoYSxcIiddIGNpcmNsZVwiKSkscj1bXSxvPTA7bzxzLmxlbmd0aDtvKyspci5wdXNoKHt4OnNbb10uZ2V0QXR0cmlidXRlKFwiY3hcIikseTpzW29dLmdldEF0dHJpYnV0ZShcImN5XCIpLHI6c1tvXS5nZXRBdHRyaWJ1dGUoXCJyXCIpfSk7ZS5nbG9iYWxzLnByZXZpb3VzUGF0aHMucHVzaChyKX19fSx7a2V5OlwiY2xlYXJQcmV2aW91c1BhdGhzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dC5nbG9iYWxzLnByZXZpb3VzUGF0aHM9W10sdC5nbG9iYWxzLmFsbFNlcmllc0NvbGxhcHNlZD0hMX19LHtrZXk6XCJoYW5kbGVOb0RhdGFcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuY29uZmlnLm5vRGF0YSxpPW5ldyBtKHRoaXMuY3R4KSxhPXQuZ2xvYmFscy5zdmdXaWR0aC8yLHM9dC5nbG9iYWxzLnN2Z0hlaWdodC8yLHI9XCJtaWRkbGVcIjtpZih0Lmdsb2JhbHMubm9EYXRhPSEwLHQuZ2xvYmFscy5hbmltYXRpb25FbmRlZD0hMCxcImxlZnRcIj09PWUuYWxpZ24/KGE9MTAscj1cInN0YXJ0XCIpOlwicmlnaHRcIj09PWUuYWxpZ24mJihhPXQuZ2xvYmFscy5zdmdXaWR0aC0xMCxyPVwiZW5kXCIpLFwidG9wXCI9PT1lLnZlcnRpY2FsQWxpZ24/cz01MDpcImJvdHRvbVwiPT09ZS52ZXJ0aWNhbEFsaWduJiYocz10Lmdsb2JhbHMuc3ZnSGVpZ2h0LTUwKSxhKz1lLm9mZnNldFgscz1zK3BhcnNlSW50KGUuc3R5bGUuZm9udFNpemUsMTApKzIrZS5vZmZzZXRZLHZvaWQgMCE9PWUudGV4dCYmXCJcIiE9PWUudGV4dCl7dmFyIG89aS5kcmF3VGV4dCh7eDphLHk6cyx0ZXh0OmUudGV4dCx0ZXh0QW5jaG9yOnIsZm9udFNpemU6ZS5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OmUuc3R5bGUuZm9udEZhbWlseSxmb3JlQ29sb3I6ZS5zdHlsZS5jb2xvcixvcGFjaXR5OjEsY2xhc3M6XCJhcGV4Y2hhcnRzLXRleHQtbm9kYXRhXCJ9KTt0Lmdsb2JhbHMuZG9tLlBhcGVyLmFkZChvKX19fSx7a2V5Olwic2V0TnVsbFNlcmllc1RvWmVyb1ZhbHVlc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLncsaT0wO2k8dC5sZW5ndGg7aSsrKWlmKDA9PT10W2ldLmxlbmd0aClmb3IodmFyIGE9MDthPHRbZS5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aDthKyspdFtpXS5wdXNoKDApO3JldHVybiB0fX0se2tleTpcImhhc0FsbFNlcmllc0VxdWFsWFwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PSEwLGU9dGhpcy53LGk9dGhpcy5maWx0ZXJlZFNlcmllc1goKSxhPTA7YTxpLmxlbmd0aC0xO2ErKylpZihpW2FdWzBdIT09aVthKzFdWzBdKXt0PSExO2JyZWFrfXJldHVybiBlLmdsb2JhbHMuYWxsU2VyaWVzSGFzRXF1YWxYPXQsdH19LHtrZXk6XCJmaWx0ZXJlZFNlcmllc1hcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzLnNlcmllc1gubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5sZW5ndGg+MD90OltdfSkpO3JldHVybiB0fX1dKSx0fSgpLFc9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy50d29EU2VyaWVzPVtdLHRoaXMudGhyZWVEU2VyaWVzPVtdLHRoaXMudHdvRFNlcmllc1g9W10sdGhpcy5zZXJpZXNHb2Fscz1bXSx0aGlzLmNvcmVVdGlscz1uZXcgeSh0aGlzLmN0eCl9cmV0dXJuIHIodCxbe2tleTpcImlzTXVsdGlGb3JtYXRcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzRm9ybWF0WFkoKXx8dGhpcy5pc0Zvcm1hdDJEQXJyYXkoKX19LHtrZXk6XCJpc0Zvcm1hdFhZXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuY29uZmlnLnNlcmllcy5zbGljZSgpLGU9bmV3IE4odGhpcy5jdHgpO2lmKHRoaXMuYWN0aXZlU2VyaWVzSW5kZXg9ZS5nZXRBY3RpdmVDb25maWdTZXJpZXNJbmRleCgpLHZvaWQgMCE9PXRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YSYmdFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhLmxlbmd0aD4wJiZudWxsIT09dFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdJiZ2b2lkIDAhPT10W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGFbMF0ueCYmbnVsbCE9PXRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YVswXSlyZXR1cm4hMH19LHtrZXk6XCJpc0Zvcm1hdDJEQXJyYXlcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5jb25maWcuc2VyaWVzLnNsaWNlKCksZT1uZXcgTih0aGlzLmN0eCk7aWYodGhpcy5hY3RpdmVTZXJpZXNJbmRleD1lLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KCksdm9pZCAwIT09dFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhJiZ0W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGEubGVuZ3RoPjAmJnZvaWQgMCE9PXRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YVswXSYmbnVsbCE9PXRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YVswXSYmdFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdLmNvbnN0cnVjdG9yPT09QXJyYXkpcmV0dXJuITB9fSx7a2V5OlwiaGFuZGxlRm9ybWF0MkRBcnJheVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPXRoaXMudy5jb25maWcsYT10aGlzLncuZ2xvYmFscyxzPVwiYm94UGxvdFwiPT09aS5jaGFydC50eXBlfHxcImJveFBsb3RcIj09PWkuc2VyaWVzW2VdLnR5cGUscj0wO3I8dFtlXS5kYXRhLmxlbmd0aDtyKyspaWYodm9pZCAwIT09dFtlXS5kYXRhW3JdWzFdJiYoQXJyYXkuaXNBcnJheSh0W2VdLmRhdGFbcl1bMV0pJiY0PT09dFtlXS5kYXRhW3JdWzFdLmxlbmd0aCYmIXM/dGhpcy50d29EU2VyaWVzLnB1c2goeC5wYXJzZU51bWJlcih0W2VdLmRhdGFbcl1bMV1bM10pKTp0W2VdLmRhdGFbcl0ubGVuZ3RoPj01P3RoaXMudHdvRFNlcmllcy5wdXNoKHgucGFyc2VOdW1iZXIodFtlXS5kYXRhW3JdWzRdKSk6dGhpcy50d29EU2VyaWVzLnB1c2goeC5wYXJzZU51bWJlcih0W2VdLmRhdGFbcl1bMV0pKSxhLmRhdGFGb3JtYXRYTnVtZXJpYz0hMCksXCJkYXRldGltZVwiPT09aS54YXhpcy50eXBlKXt2YXIgbz1uZXcgRGF0ZSh0W2VdLmRhdGFbcl1bMF0pO289bmV3IERhdGUobykuZ2V0VGltZSgpLHRoaXMudHdvRFNlcmllc1gucHVzaChvKX1lbHNlIHRoaXMudHdvRFNlcmllc1gucHVzaCh0W2VdLmRhdGFbcl1bMF0pO2Zvcih2YXIgbj0wO248dFtlXS5kYXRhLmxlbmd0aDtuKyspdm9pZCAwIT09dFtlXS5kYXRhW25dWzJdJiYodGhpcy50aHJlZURTZXJpZXMucHVzaCh0W2VdLmRhdGFbbl1bMl0pLGEuaXNEYXRhWFlaPSEwKX19LHtrZXk6XCJoYW5kbGVGb3JtYXRYWVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LmNvbmZpZyxhPXRoaXMudy5nbG9iYWxzLHM9bmV3IEkodGhpcy5jdHgpLHI9ZTthLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihlKT4tMSYmKHI9dGhpcy5hY3RpdmVTZXJpZXNJbmRleCk7Zm9yKHZhciBvPTA7bzx0W2VdLmRhdGEubGVuZ3RoO28rKyl2b2lkIDAhPT10W2VdLmRhdGFbb10ueSYmKEFycmF5LmlzQXJyYXkodFtlXS5kYXRhW29dLnkpP3RoaXMudHdvRFNlcmllcy5wdXNoKHgucGFyc2VOdW1iZXIodFtlXS5kYXRhW29dLnlbdFtlXS5kYXRhW29dLnkubGVuZ3RoLTFdKSk6dGhpcy50d29EU2VyaWVzLnB1c2goeC5wYXJzZU51bWJlcih0W2VdLmRhdGFbb10ueSkpKSx2b2lkIDAhPT10W2VdLmRhdGFbb10uZ29hbHMmJkFycmF5LmlzQXJyYXkodFtlXS5kYXRhW29dLmdvYWxzKT8odm9pZCAwPT09dGhpcy5zZXJpZXNHb2Fsc1tlXSYmKHRoaXMuc2VyaWVzR29hbHNbZV09W10pLHRoaXMuc2VyaWVzR29hbHNbZV0ucHVzaCh0W2VdLmRhdGFbb10uZ29hbHMpKToodm9pZCAwPT09dGhpcy5zZXJpZXNHb2Fsc1tlXSYmKHRoaXMuc2VyaWVzR29hbHNbZV09W10pLHRoaXMuc2VyaWVzR29hbHNbZV0ucHVzaChudWxsKSk7Zm9yKHZhciBuPTA7bjx0W3JdLmRhdGEubGVuZ3RoO24rKyl7dmFyIGw9XCJzdHJpbmdcIj09dHlwZW9mIHRbcl0uZGF0YVtuXS54LGg9QXJyYXkuaXNBcnJheSh0W3JdLmRhdGFbbl0ueCksYz0haCYmISFzLmlzVmFsaWREYXRlKHRbcl0uZGF0YVtuXS54LnRvU3RyaW5nKCkpO2lmKGx8fGMpaWYobHx8aS54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMpe3ZhciBkPWEuaXNCYXJIb3Jpem9udGFsJiZhLmlzUmFuZ2VEYXRhO1wiZGF0ZXRpbWVcIiE9PWkueGF4aXMudHlwZXx8ZD8odGhpcy5mYWxsYmFja1RvQ2F0ZWdvcnk9ITAsdGhpcy50d29EU2VyaWVzWC5wdXNoKHRbcl0uZGF0YVtuXS54KSk6dGhpcy50d29EU2VyaWVzWC5wdXNoKHMucGFyc2VEYXRlKHRbcl0uZGF0YVtuXS54KSl9ZWxzZVwiZGF0ZXRpbWVcIj09PWkueGF4aXMudHlwZT90aGlzLnR3b0RTZXJpZXNYLnB1c2gocy5wYXJzZURhdGUodFtyXS5kYXRhW25dLngudG9TdHJpbmcoKSkpOihhLmRhdGFGb3JtYXRYTnVtZXJpYz0hMCxhLmlzWE51bWVyaWM9ITAsdGhpcy50d29EU2VyaWVzWC5wdXNoKHBhcnNlRmxvYXQodFtyXS5kYXRhW25dLngpKSk7ZWxzZSBoPyh0aGlzLmZhbGxiYWNrVG9DYXRlZ29yeT0hMCx0aGlzLnR3b0RTZXJpZXNYLnB1c2godFtyXS5kYXRhW25dLngpKTooYS5pc1hOdW1lcmljPSEwLGEuZGF0YUZvcm1hdFhOdW1lcmljPSEwLHRoaXMudHdvRFNlcmllc1gucHVzaCh0W3JdLmRhdGFbbl0ueCkpfWlmKHRbZV0uZGF0YVswXSYmdm9pZCAwIT09dFtlXS5kYXRhWzBdLnope2Zvcih2YXIgZz0wO2c8dFtlXS5kYXRhLmxlbmd0aDtnKyspdGhpcy50aHJlZURTZXJpZXMucHVzaCh0W2VdLmRhdGFbZ10ueik7YS5pc0RhdGFYWVo9ITB9fX0se2tleTpcImhhbmRsZVJhbmdlRGF0YVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53Lmdsb2JhbHMsYT17fTtyZXR1cm4gdGhpcy5pc0Zvcm1hdDJEQXJyYXkoKT9hPXRoaXMuaGFuZGxlUmFuZ2VEYXRhRm9ybWF0KFwiYXJyYXlcIix0LGUpOnRoaXMuaXNGb3JtYXRYWSgpJiYoYT10aGlzLmhhbmRsZVJhbmdlRGF0YUZvcm1hdChcInh5XCIsdCxlKSksaS5zZXJpZXNSYW5nZVN0YXJ0LnB1c2goYS5zdGFydCksaS5zZXJpZXNSYW5nZUVuZC5wdXNoKGEuZW5kKSxpLnNlcmllc1JhbmdlLnB1c2goYS5yYW5nZVVuaXF1ZXMpLGkuc2VyaWVzUmFuZ2UuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0JiZ0LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC55LmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7Zm9yKHZhciBhPTA7YTx0LnkubGVuZ3RoO2ErKylpZihpIT09YSl7dmFyIHM9ZS55MSxyPWUueTIsbz10LnlbYV0ueTE7czw9dC55W2FdLnkyJiZvPD1yJiYodC5vdmVybGFwcy5pbmRleE9mKGUucmFuZ2VOYW1lKTwwJiZ0Lm92ZXJsYXBzLnB1c2goZS5yYW5nZU5hbWUpLHQub3ZlcmxhcHMuaW5kZXhPZih0LnlbYV0ucmFuZ2VOYW1lKTwwJiZ0Lm92ZXJsYXBzLnB1c2godC55W2FdLnJhbmdlTmFtZSkpfX0pKX0pKX0pKSxhfX0se2tleTpcImhhbmRsZUNhbmRsZVN0aWNrQm94RGF0YVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53Lmdsb2JhbHMsYT17fTtyZXR1cm4gdGhpcy5pc0Zvcm1hdDJEQXJyYXkoKT9hPXRoaXMuaGFuZGxlQ2FuZGxlU3RpY2tCb3hEYXRhRm9ybWF0KFwiYXJyYXlcIix0LGUpOnRoaXMuaXNGb3JtYXRYWSgpJiYoYT10aGlzLmhhbmRsZUNhbmRsZVN0aWNrQm94RGF0YUZvcm1hdChcInh5XCIsdCxlKSksaS5zZXJpZXNDYW5kbGVPW2VdPWEubyxpLnNlcmllc0NhbmRsZUhbZV09YS5oLGkuc2VyaWVzQ2FuZGxlTVtlXT1hLm0saS5zZXJpZXNDYW5kbGVMW2VdPWEubCxpLnNlcmllc0NhbmRsZUNbZV09YS5jLGF9fSx7a2V5OlwiaGFuZGxlUmFuZ2VEYXRhRm9ybWF0XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPVtdLHM9W10scj1lW2ldLmRhdGEuZmlsdGVyKChmdW5jdGlvbih0LGUsaSl7cmV0dXJuIGU9PT1pLmZpbmRJbmRleCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUueD09PXQueH0pKX0pKS5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJue3g6dC54LG92ZXJsYXBzOltdLHk6W119fSkpO2lmKFwiYXJyYXlcIj09PXQpZm9yKHZhciBvPTA7bzxlW2ldLmRhdGEubGVuZ3RoO28rKylBcnJheS5pc0FycmF5KGVbaV0uZGF0YVtvXSk/KGEucHVzaChlW2ldLmRhdGFbb11bMV1bMF0pLHMucHVzaChlW2ldLmRhdGFbb11bMV1bMV0pKTooYS5wdXNoKGVbaV0uZGF0YVtvXSkscy5wdXNoKGVbaV0uZGF0YVtvXSkpO2Vsc2UgaWYoXCJ4eVwiPT09dClmb3IodmFyIG49ZnVuY3Rpb24odCl7dmFyIG89QXJyYXkuaXNBcnJheShlW2ldLmRhdGFbdF0ueSksbj14LnJhbmRvbUlkKCksbD1lW2ldLmRhdGFbdF0ueCxoPXt5MTpvP2VbaV0uZGF0YVt0XS55WzBdOmVbaV0uZGF0YVt0XS55LHkyOm8/ZVtpXS5kYXRhW3RdLnlbMV06ZVtpXS5kYXRhW3RdLnkscmFuZ2VOYW1lOm59O2VbaV0uZGF0YVt0XS5yYW5nZU5hbWU9bjt2YXIgYz1yLmZpbmRJbmRleCgoZnVuY3Rpb24odCl7cmV0dXJuIHQueD09PWx9KSk7cltjXS55LnB1c2goaCksYS5wdXNoKGgueTEpLHMucHVzaChoLnkyKX0sbD0wO2w8ZVtpXS5kYXRhLmxlbmd0aDtsKyspbihsKTtyZXR1cm57c3RhcnQ6YSxlbmQ6cyxyYW5nZVVuaXF1ZXM6cn19fSx7a2V5OlwiaGFuZGxlQ2FuZGxlU3RpY2tCb3hEYXRhRm9ybWF0XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudyxzPVwiYm94UGxvdFwiPT09YS5jb25maWcuY2hhcnQudHlwZXx8XCJib3hQbG90XCI9PT1hLmNvbmZpZy5zZXJpZXNbaV0udHlwZSxyPVtdLG89W10sbj1bXSxsPVtdLGg9W107aWYoXCJhcnJheVwiPT09dClpZihzJiY2PT09ZVtpXS5kYXRhWzBdLmxlbmd0aHx8IXMmJjU9PT1lW2ldLmRhdGFbMF0ubGVuZ3RoKWZvcih2YXIgYz0wO2M8ZVtpXS5kYXRhLmxlbmd0aDtjKyspci5wdXNoKGVbaV0uZGF0YVtjXVsxXSksby5wdXNoKGVbaV0uZGF0YVtjXVsyXSkscz8obi5wdXNoKGVbaV0uZGF0YVtjXVszXSksbC5wdXNoKGVbaV0uZGF0YVtjXVs0XSksaC5wdXNoKGVbaV0uZGF0YVtjXVs1XSkpOihsLnB1c2goZVtpXS5kYXRhW2NdWzNdKSxoLnB1c2goZVtpXS5kYXRhW2NdWzRdKSk7ZWxzZSBmb3IodmFyIGQ9MDtkPGVbaV0uZGF0YS5sZW5ndGg7ZCsrKUFycmF5LmlzQXJyYXkoZVtpXS5kYXRhW2RdWzFdKSYmKHIucHVzaChlW2ldLmRhdGFbZF1bMV1bMF0pLG8ucHVzaChlW2ldLmRhdGFbZF1bMV1bMV0pLHM/KG4ucHVzaChlW2ldLmRhdGFbZF1bMV1bMl0pLGwucHVzaChlW2ldLmRhdGFbZF1bMV1bM10pLGgucHVzaChlW2ldLmRhdGFbZF1bMV1bNF0pKToobC5wdXNoKGVbaV0uZGF0YVtkXVsxXVsyXSksaC5wdXNoKGVbaV0uZGF0YVtkXVsxXVszXSkpKTtlbHNlIGlmKFwieHlcIj09PXQpZm9yKHZhciBnPTA7ZzxlW2ldLmRhdGEubGVuZ3RoO2crKylBcnJheS5pc0FycmF5KGVbaV0uZGF0YVtnXS55KSYmKHIucHVzaChlW2ldLmRhdGFbZ10ueVswXSksby5wdXNoKGVbaV0uZGF0YVtnXS55WzFdKSxzPyhuLnB1c2goZVtpXS5kYXRhW2ddLnlbMl0pLGwucHVzaChlW2ldLmRhdGFbZ10ueVszXSksaC5wdXNoKGVbaV0uZGF0YVtnXS55WzRdKSk6KGwucHVzaChlW2ldLmRhdGFbZ10ueVsyXSksaC5wdXNoKGVbaV0uZGF0YVtnXS55WzNdKSkpO3JldHVybntvOnIsaDpvLG06bixsOmwsYzpofX19LHtrZXk6XCJwYXJzZURhdGFBeGlzQ2hhcnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRoaXMuY3R4LHM9dGhpcy53LmNvbmZpZyxyPXRoaXMudy5nbG9iYWxzLG89bmV3IEkoYSksbj1zLmxhYmVscy5sZW5ndGg+MD9zLmxhYmVscy5zbGljZSgpOnMueGF4aXMuY2F0ZWdvcmllcy5zbGljZSgpO2lmKHIuaXNSYW5nZUJhcj1cInJhbmdlQmFyXCI9PT1zLmNoYXJ0LnR5cGUmJnIuaXNCYXJIb3Jpem9udGFsLHIuaGFzWGF4aXNHcm91cHM9XCJjYXRlZ29yeVwiPT09cy54YXhpcy50eXBlJiZzLnhheGlzLmdyb3VwLmdyb3Vwcy5sZW5ndGg+MCxyLmhhc1hheGlzR3JvdXBzJiYoci5ncm91cHM9cy54YXhpcy5ncm91cC5ncm91cHMpLHIuaGFzU2VyaWVzR3JvdXBzPW51bGw9PT0oZT10WzBdKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5ncm91cCxyLmhhc1Nlcmllc0dyb3Vwcyl7dmFyIGw9W10saD11KG5ldyBTZXQodC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmdyb3VwfSkpKSk7dC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3ZhciBpPWguaW5kZXhPZih0Lmdyb3VwKTtsW2ldfHwobFtpXT1bXSksbFtpXS5wdXNoKHQubmFtZSl9KSksci5zZXJpZXNHcm91cHM9bH1mb3IodmFyIGM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PG4ubGVuZ3RoO3QrKylpZihcInN0cmluZ1wiPT10eXBlb2Ygblt0XSl7aWYoIW8uaXNWYWxpZERhdGUoblt0XSkpdGhyb3cgbmV3IEVycm9yKFwiWW91IGhhdmUgcHJvdmlkZWQgaW52YWxpZCBEYXRlIGZvcm1hdC4gUGxlYXNlIHByb3ZpZGUgYSB2YWxpZCBKYXZhU2NyaXB0IERhdGVcIik7aS50d29EU2VyaWVzWC5wdXNoKG8ucGFyc2VEYXRlKG5bdF0pKX1lbHNlIGkudHdvRFNlcmllc1gucHVzaChuW3RdKX0sZD0wO2Q8dC5sZW5ndGg7ZCsrKXtpZih0aGlzLnR3b0RTZXJpZXM9W10sdGhpcy50d29EU2VyaWVzWD1bXSx0aGlzLnRocmVlRFNlcmllcz1bXSx2b2lkIDA9PT10W2RdLmRhdGEpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcihcIkl0IGlzIGEgcG9zc2liaWxpdHkgdGhhdCB5b3UgbWF5IGhhdmUgbm90IGluY2x1ZGVkICdkYXRhJyBwcm9wZXJ0eSBpbiBzZXJpZXMuXCIpO2lmKFwicmFuZ2VCYXJcIiE9PXMuY2hhcnQudHlwZSYmXCJyYW5nZUFyZWFcIiE9PXMuY2hhcnQudHlwZSYmXCJyYW5nZUJhclwiIT09dFtkXS50eXBlJiZcInJhbmdlQXJlYVwiIT09dFtkXS50eXBlfHwoci5pc1JhbmdlRGF0YT0hMCxyLmlzQ29tYm9DaGFydHM/XCJyYW5nZUJhclwiIT09dFtkXS50eXBlJiZcInJhbmdlQXJlYVwiIT09dFtkXS50eXBlfHx0aGlzLmhhbmRsZVJhbmdlRGF0YSh0LGQpOlwicmFuZ2VCYXJcIiE9PXMuY2hhcnQudHlwZSYmXCJyYW5nZUFyZWFcIiE9PXMuY2hhcnQudHlwZXx8dGhpcy5oYW5kbGVSYW5nZURhdGEodCxkKSksdGhpcy5pc011bHRpRm9ybWF0KCkpdGhpcy5pc0Zvcm1hdDJEQXJyYXkoKT90aGlzLmhhbmRsZUZvcm1hdDJEQXJyYXkodCxkKTp0aGlzLmlzRm9ybWF0WFkoKSYmdGhpcy5oYW5kbGVGb3JtYXRYWSh0LGQpLFwiY2FuZGxlc3RpY2tcIiE9PXMuY2hhcnQudHlwZSYmXCJjYW5kbGVzdGlja1wiIT09dFtkXS50eXBlJiZcImJveFBsb3RcIiE9PXMuY2hhcnQudHlwZSYmXCJib3hQbG90XCIhPT10W2RdLnR5cGV8fHRoaXMuaGFuZGxlQ2FuZGxlU3RpY2tCb3hEYXRhKHQsZCksci5zZXJpZXMucHVzaCh0aGlzLnR3b0RTZXJpZXMpLHIubGFiZWxzLnB1c2godGhpcy50d29EU2VyaWVzWCksci5zZXJpZXNYLnB1c2godGhpcy50d29EU2VyaWVzWCksci5zZXJpZXNHb2Fscz10aGlzLnNlcmllc0dvYWxzLGQhPT10aGlzLmFjdGl2ZVNlcmllc0luZGV4fHx0aGlzLmZhbGxiYWNrVG9DYXRlZ29yeXx8KHIuaXNYTnVtZXJpYz0hMCk7ZWxzZXtcImRhdGV0aW1lXCI9PT1zLnhheGlzLnR5cGU/KHIuaXNYTnVtZXJpYz0hMCxjKCksci5zZXJpZXNYLnB1c2godGhpcy50d29EU2VyaWVzWCkpOlwibnVtZXJpY1wiPT09cy54YXhpcy50eXBlJiYoci5pc1hOdW1lcmljPSEwLG4ubGVuZ3RoPjAmJih0aGlzLnR3b0RTZXJpZXNYPW4sci5zZXJpZXNYLnB1c2godGhpcy50d29EU2VyaWVzWCkpKSxyLmxhYmVscy5wdXNoKHRoaXMudHdvRFNlcmllc1gpO3ZhciBnPXRbZF0uZGF0YS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB4LnBhcnNlTnVtYmVyKHQpfSkpO3Iuc2VyaWVzLnB1c2goZyl9ci5zZXJpZXNaLnB1c2godGhpcy50aHJlZURTZXJpZXMpLHZvaWQgMCE9PXRbZF0ubmFtZT9yLnNlcmllc05hbWVzLnB1c2godFtkXS5uYW1lKTpyLnNlcmllc05hbWVzLnB1c2goXCJzZXJpZXMtXCIrcGFyc2VJbnQoZCsxLDEwKSksdm9pZCAwIT09dFtkXS5jb2xvcj9yLnNlcmllc0NvbG9ycy5wdXNoKHRbZF0uY29sb3IpOnIuc2VyaWVzQ29sb3JzLnB1c2godm9pZCAwKX1yZXR1cm4gdGhpcy53fX0se2tleTpcInBhcnNlRGF0YU5vbkF4aXNDaGFydHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncuZ2xvYmFscyxpPXRoaXMudy5jb25maWc7ZS5zZXJpZXM9dC5zbGljZSgpLGUuc2VyaWVzTmFtZXM9aS5sYWJlbHMuc2xpY2UoKTtmb3IodmFyIGE9MDthPGUuc2VyaWVzLmxlbmd0aDthKyspdm9pZCAwPT09ZS5zZXJpZXNOYW1lc1thXSYmZS5zZXJpZXNOYW1lcy5wdXNoKFwic2VyaWVzLVwiKyhhKzEpKTtyZXR1cm4gdGhpcy53fX0se2tleTpcImhhbmRsZUV4dGVybmFsTGFiZWxzRGF0YVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudy5jb25maWcsaT10aGlzLncuZ2xvYmFscztpZihlLnhheGlzLmNhdGVnb3JpZXMubGVuZ3RoPjApaS5sYWJlbHM9ZS54YXhpcy5jYXRlZ29yaWVzO2Vsc2UgaWYoZS5sYWJlbHMubGVuZ3RoPjApaS5sYWJlbHM9ZS5sYWJlbHMuc2xpY2UoKTtlbHNlIGlmKHRoaXMuZmFsbGJhY2tUb0NhdGVnb3J5KXtpZihpLmxhYmVscz1pLmxhYmVsc1swXSxpLnNlcmllc1JhbmdlLmxlbmd0aCYmKGkuc2VyaWVzUmFuZ2UubWFwKChmdW5jdGlvbih0KXt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2kubGFiZWxzLmluZGV4T2YodC54KTwwJiZ0LngmJmkubGFiZWxzLnB1c2godC54KX0pKX0pKSxpLmxhYmVscz1pLmxhYmVscy5maWx0ZXIoKGZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gaS5pbmRleE9mKHQpPT09ZX0pKSksZS54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMpbmV3IHooZSkuY29udmVydENhdFRvTnVtZXJpY1hheGlzKGUsdGhpcy5jdHgsaS5zZXJpZXNYWzBdKSx0aGlzLl9nZW5lcmF0ZUV4dGVybmFsTGFiZWxzKHQpfWVsc2UgdGhpcy5fZ2VuZXJhdGVFeHRlcm5hbExhYmVscyh0KX19LHtrZXk6XCJfZ2VuZXJhdGVFeHRlcm5hbExhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudy5nbG9iYWxzLGk9dGhpcy53LmNvbmZpZyxhPVtdO2lmKGUuYXhpc0NoYXJ0cyl7aWYoZS5zZXJpZXMubGVuZ3RoPjApaWYodGhpcy5pc0Zvcm1hdFhZKCkpZm9yKHZhciBzPWkuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5kYXRhLmZpbHRlcigoZnVuY3Rpb24odCxlLGkpe3JldHVybiBpLmZpbmRJbmRleCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUueD09PXQueH0pKT09PWV9KSl9KSkscj1zLnJlZHVjZSgoZnVuY3Rpb24odCxlLGksYSl7cmV0dXJuIGFbdF0ubGVuZ3RoPmUubGVuZ3RoP3Q6aX0pLDApLG89MDtvPHNbcl0ubGVuZ3RoO28rKylhLnB1c2gobysxKTtlbHNlIGZvcih2YXIgbj0wO248ZS5zZXJpZXNbZS5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGg7bisrKWEucHVzaChuKzEpO2Uuc2VyaWVzWD1bXTtmb3IodmFyIGw9MDtsPHQubGVuZ3RoO2wrKyllLnNlcmllc1gucHVzaChhKTtlLmlzWE51bWVyaWM9ITB9aWYoMD09PWEubGVuZ3RoKXthPWUuYXhpc0NoYXJ0cz9bXTplLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUrMX0pKTtmb3IodmFyIGg9MDtoPHQubGVuZ3RoO2grKyllLnNlcmllc1gucHVzaChhKX1lLmxhYmVscz1hLGkueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYoZS5jYXRlZ29yeUxhYmVscz1hLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGkueGF4aXMubGFiZWxzLmZvcm1hdHRlcih0KX0pKSksZS5ub0xhYmVsc1Byb3ZpZGVkPSEwfX0se2tleTpcInBhcnNlRGF0YVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPWUuY29uZmlnLGE9ZS5nbG9iYWxzO2lmKHRoaXMuZXhjbHVkZUNvbGxhcHNlZFNlcmllc0luWUF4aXMoKSx0aGlzLmZhbGxiYWNrVG9DYXRlZ29yeT0hMSx0aGlzLmN0eC5jb3JlLnJlc2V0R2xvYmFscygpLHRoaXMuY3R4LmNvcmUuaXNNdWx0aXBsZVkoKSxhLmF4aXNDaGFydHM/KHRoaXMucGFyc2VEYXRhQXhpc0NoYXJ0cyh0KSx0aGlzLmNvcmVVdGlscy5nZXRMYXJnZXN0U2VyaWVzKCkpOnRoaXMucGFyc2VEYXRhTm9uQXhpc0NoYXJ0cyh0KSxcImJhclwiPT09aS5jaGFydC50eXBlJiZpLmNoYXJ0LnN0YWNrZWQpe3ZhciBzPW5ldyBOKHRoaXMuY3R4KTthLnNlcmllcz1zLnNldE51bGxTZXJpZXNUb1plcm9WYWx1ZXMoYS5zZXJpZXMpfXRoaXMuY29yZVV0aWxzLmdldFNlcmllc1RvdGFscygpLGEuYXhpc0NoYXJ0cyYmKGEuc3RhY2tlZFNlcmllc1RvdGFscz10aGlzLmNvcmVVdGlscy5nZXRTdGFja2VkU2VyaWVzVG90YWxzKCkpLHRoaXMuY29yZVV0aWxzLmdldFBlcmNlbnRTZXJpZXMoKSxhLmRhdGFGb3JtYXRYTnVtZXJpY3x8YS5pc1hOdW1lcmljJiYoXCJudW1lcmljXCIhPT1pLnhheGlzLnR5cGV8fDAhPT1pLmxhYmVscy5sZW5ndGh8fDAhPT1pLnhheGlzLmNhdGVnb3JpZXMubGVuZ3RoKXx8dGhpcy5oYW5kbGVFeHRlcm5hbExhYmVsc0RhdGEodCk7Zm9yKHZhciByPXRoaXMuY29yZVV0aWxzLmdldENhdGVnb3J5TGFiZWxzKGEubGFiZWxzKSxvPTA7bzxyLmxlbmd0aDtvKyspaWYoQXJyYXkuaXNBcnJheShyW29dKSl7YS5pc011bHRpTGluZVg9ITA7YnJlYWt9fX0se2tleTpcImV4Y2x1ZGVDb2xsYXBzZWRTZXJpZXNJbllBeGlzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53O2UuZ2xvYmFscy5pZ25vcmVZQXhpc0luZGV4ZXM9ZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5tYXAoKGZ1bmN0aW9uKGksYSl7aWYodC53Lmdsb2JhbHMuaXNNdWx0aXBsZVlBeGlzJiYhZS5jb25maWcuY2hhcnQuc3RhY2tlZClyZXR1cm4gaS5pbmRleH0pKX19XSksdH0oKSxCPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJnZXRMYWJlbFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdP2FyZ3VtZW50c1s0XTpbXSxyPWFyZ3VtZW50cy5sZW5ndGg+NSYmdm9pZCAwIT09YXJndW1lbnRzWzVdP2FyZ3VtZW50c1s1XTpcIjEycHhcIixvPSEoYXJndW1lbnRzLmxlbmd0aD42JiZ2b2lkIDAhPT1hcmd1bWVudHNbNl0pfHxhcmd1bWVudHNbNl0sbj10aGlzLncsbD12b2lkIDA9PT10W2FdP1wiXCI6dFthXSxoPWwsYz1uLmdsb2JhbHMueExhYmVsRm9ybWF0dGVyLGQ9bi5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlcixnPSExLHU9bmV3IFQodGhpcy5jdHgpLHA9bDtvJiYoaD11LnhMYWJlbEZvcm1hdChjLGwscCx7aTphLGRhdGVGb3JtYXR0ZXI6bmV3IEkodGhpcy5jdHgpLmZvcm1hdERhdGUsdzpufSksdm9pZCAwIT09ZCYmKGg9ZChsLHRbYV0se2k6YSxkYXRlRm9ybWF0dGVyOm5ldyBJKHRoaXMuY3R4KS5mb3JtYXREYXRlLHc6bn0pKSk7dmFyIGYseDtlLmxlbmd0aD4wPyhmPWVbYV0udW5pdCx4PW51bGwsZS5mb3JFYWNoKChmdW5jdGlvbih0KXtcIm1vbnRoXCI9PT10LnVuaXQ/eD1cInllYXJcIjpcImRheVwiPT09dC51bml0P3g9XCJtb250aFwiOlwiaG91clwiPT09dC51bml0P3g9XCJkYXlcIjpcIm1pbnV0ZVwiPT09dC51bml0JiYoeD1cImhvdXJcIil9KSksZz14PT09ZixpPWVbYV0ucG9zaXRpb24saD1lW2FdLnZhbHVlKTpcImRhdGV0aW1lXCI9PT1uLmNvbmZpZy54YXhpcy50eXBlJiZ2b2lkIDA9PT1kJiYoaD1cIlwiKSx2b2lkIDA9PT1oJiYoaD1cIlwiKSxoPUFycmF5LmlzQXJyYXkoaCk/aDpoLnRvU3RyaW5nKCk7dmFyIGI9bmV3IG0odGhpcy5jdHgpLHY9e307dj1uLmdsb2JhbHMucm90YXRlWExhYmVscyYmbz9iLmdldFRleHRSZWN0cyhoLHBhcnNlSW50KHIsMTApLG51bGwsXCJyb3RhdGUoXCIuY29uY2F0KG4uY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGUsXCIgMCAwKVwiKSwhMSk6Yi5nZXRUZXh0UmVjdHMoaCxwYXJzZUludChyLDEwKSk7dmFyIHk9IW4uY29uZmlnLnhheGlzLmxhYmVscy5zaG93RHVwbGljYXRlcyYmdGhpcy5jdHgudGltZVNjYWxlO3JldHVybiFBcnJheS5pc0FycmF5KGgpJiYoMD09PWguaW5kZXhPZihcIk5hTlwiKXx8MD09PWgudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwiaW52YWxpZFwiKXx8aC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJpbmZpbml0eVwiKT49MHx8cy5pbmRleE9mKGgpPj0wJiZ5KSYmKGg9XCJcIikse3g6aSx0ZXh0OmgsdGV4dFJlY3Q6dixpc0JvbGQ6Z319fSx7a2V5OlwiY2hlY2tMYWJlbEJhc2VkT25UaWNrYW1vdW50XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudyxzPWEuY29uZmlnLnhheGlzLnRpY2tBbW91bnQ7cmV0dXJuXCJkYXRhUG9pbnRzXCI9PT1zJiYocz1NYXRoLnJvdW5kKGEuZ2xvYmFscy5ncmlkV2lkdGgvMTIwKSkscz5pfHx0JU1hdGgucm91bmQoaS8ocysxKSk9PTB8fChlLnRleHQ9XCJcIiksZX19LHtrZXk6XCJjaGVja0Zvck92ZXJmbG93aW5nTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzKXt2YXIgcj10aGlzLnc7aWYoMD09PXQmJnIuZ2xvYmFscy5za2lwRmlyc3RUaW1lbGluZWxhYmVsJiYoZS50ZXh0PVwiXCIpLHQ9PT1pLTEmJnIuZ2xvYmFscy5za2lwTGFzdFRpbWVsaW5lbGFiZWwmJihlLnRleHQ9XCJcIiksci5jb25maWcueGF4aXMubGFiZWxzLmhpZGVPdmVybGFwcGluZ0xhYmVscyYmYS5sZW5ndGg+MCl7dmFyIG89c1tzLmxlbmd0aC0xXTtlLng8by50ZXh0UmVjdC53aWR0aC8oci5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM/TWF0aC5hYnMoci5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZSkvMTI6MS4wMSkrby54JiYoZS50ZXh0PVwiXCIpfXJldHVybiBlfX0se2tleTpcImNoZWNrRm9yUmV2ZXJzZWRMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztyZXR1cm4gaS5jb25maWcueWF4aXNbdF0mJmkuY29uZmlnLnlheGlzW3RdLnJldmVyc2VkJiZlLnJldmVyc2UoKSxlfX0se2tleTpcImlzWUF4aXNIaWRkZW5cIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgeSh0aGlzLmN0eCk7cmV0dXJuIWUuY29uZmlnLnlheGlzW3RdLnNob3d8fCFlLmNvbmZpZy55YXhpc1t0XS5zaG93Rm9yTnVsbFNlcmllcyYmaS5pc1Nlcmllc051bGwodCkmJi0xPT09ZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZih0KX19LHtrZXk6XCJnZXRZQXhpc0ZvcmVDb2xvclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O3JldHVybiBBcnJheS5pc0FycmF5KHQpJiZpLmdsb2JhbHMueUF4aXNTY2FsZVtlXSYmdGhpcy5jdHgudGhlbWUucHVzaEV4dHJhQ29sb3JzKHQsaS5nbG9iYWxzLnlBeGlzU2NhbGVbZV0ucmVzdWx0Lmxlbmd0aCwhMSksdH19LHtrZXk6XCJkcmF3WUF4aXNUaWNrc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyLG8pe3ZhciBuPXRoaXMudyxsPW5ldyBtKHRoaXMuY3R4KSxoPW4uZ2xvYmFscy50cmFuc2xhdGVZO2lmKGEuc2hvdyYmZT4wKXshMD09PW4uY29uZmlnLnlheGlzW3NdLm9wcG9zaXRlJiYodCs9YS53aWR0aCk7Zm9yKHZhciBjPWU7Yz49MDtjLS0pe3ZhciBkPWgrZS8xMCtuLmNvbmZpZy55YXhpc1tzXS5sYWJlbHMub2Zmc2V0WS0xO24uZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihkPXIqYyksXCJoZWF0bWFwXCI9PT1uLmNvbmZpZy5jaGFydC50eXBlJiYoZCs9ci8yKTt2YXIgZz1sLmRyYXdMaW5lKHQraS5vZmZzZXRYLWEud2lkdGgrYS5vZmZzZXRYLGQrYS5vZmZzZXRZLHQraS5vZmZzZXRYK2Eub2Zmc2V0WCxkK2Eub2Zmc2V0WSxhLmNvbG9yKTtvLmFkZChnKSxoKz1yfX19fV0pLHR9KCksRz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5Olwic2NhbGVTdmdOb2RlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1wYXJzZUZsb2F0KHQuZ2V0QXR0cmlidXRlTlMobnVsbCxcIndpZHRoXCIpKSxhPXBhcnNlRmxvYXQodC5nZXRBdHRyaWJ1dGVOUyhudWxsLFwiaGVpZ2h0XCIpKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsXCJ3aWR0aFwiLGkqZSksdC5zZXRBdHRyaWJ1dGVOUyhudWxsLFwiaGVpZ2h0XCIsYSplKSx0LnNldEF0dHJpYnV0ZU5TKG51bGwsXCJ2aWV3Qm94XCIsXCIwIDAgXCIraStcIiBcIithKX19LHtrZXk6XCJmaXhTdmdTdHJpbmdGb3JJZTExXCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYoIXguaXNJRTExKCkpcmV0dXJuIHQucmVwbGFjZSgvJm5ic3A7L2csXCImIzE2MDtcIik7dmFyIGU9MCxpPXQucmVwbGFjZSgveG1sbnM9XCJodHRwOlxcL1xcL3d3dy53My5vcmdcXC8yMDAwXFwvc3ZnXCIvZywoZnVuY3Rpb24odCl7cmV0dXJuIDI9PT0rK2U/J3htbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHhtbG5zOnN2Z2pzPVwiaHR0cDovL3N2Z2pzLmRldlwiJzp0fSkpO3JldHVybiBpPShpPWkucmVwbGFjZSgveG1sbnM6TlNcXGQrPVwiXCIvZyxcIlwiKSkucmVwbGFjZSgvTlNcXGQrOihcXHcrOlxcdys9XCIpL2csXCIkMVwiKX19LHtrZXk6XCJnZXRTdmdTdHJpbmdcIix2YWx1ZTpmdW5jdGlvbih0KXtudWxsPT10JiYodD0xKTt2YXIgZT10aGlzLncuZ2xvYmFscy5kb20uUGFwZXIuc3ZnKCk7aWYoMSE9PXQpe3ZhciBpPXRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5ub2RlLmNsb25lTm9kZSghMCk7dGhpcy5zY2FsZVN2Z05vZGUoaSx0KSxlPShuZXcgWE1MU2VyaWFsaXplcikuc2VyaWFsaXplVG9TdHJpbmcoaSl9cmV0dXJuIHRoaXMuZml4U3ZnU3RyaW5nRm9ySWUxMShlKX19LHtrZXk6XCJjbGVhbnVwXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYXBleGNoYXJ0cy14Y3Jvc3NoYWlyc1wiKSxpPXQuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhcGV4Y2hhcnRzLXljcm9zc2hhaXJzXCIpLGE9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXpvb20tcmVjdCwgLmFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3RcIik7QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChhLChmdW5jdGlvbih0KXt0LnNldEF0dHJpYnV0ZShcIndpZHRoXCIsMCl9KSksZSYmZVswXSYmKGVbMF0uc2V0QXR0cmlidXRlKFwieFwiLC01MDApLGVbMF0uc2V0QXR0cmlidXRlKFwieDFcIiwtNTAwKSxlWzBdLnNldEF0dHJpYnV0ZShcIngyXCIsLTUwMCkpLGkmJmlbMF0mJihpWzBdLnNldEF0dHJpYnV0ZShcInlcIiwtMTAwKSxpWzBdLnNldEF0dHJpYnV0ZShcInkxXCIsLTEwMCksaVswXS5zZXRBdHRyaWJ1dGUoXCJ5MlwiLC0xMDApKX19LHtrZXk6XCJzdmdVcmxcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY2xlYW51cCgpO3ZhciB0PXRoaXMuZ2V0U3ZnU3RyaW5nKCksZT1uZXcgQmxvYihbdF0se3R5cGU6XCJpbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLThcIn0pO3JldHVybiBVUkwuY3JlYXRlT2JqZWN0VVJMKGUpfX0se2tleTpcImRhdGFVUklcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oaSl7dmFyIGE9ZS53LHM9dD90LnNjYWxlfHx0LndpZHRoL2EuZ2xvYmFscy5zdmdXaWR0aDoxO2UuY2xlYW51cCgpO3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7ci53aWR0aD1hLmdsb2JhbHMuc3ZnV2lkdGgqcyxyLmhlaWdodD1wYXJzZUludChhLmdsb2JhbHMuZG9tLmVsV3JhcC5zdHlsZS5oZWlnaHQsMTApKnM7dmFyIG89XCJ0cmFuc3BhcmVudFwiPT09YS5jb25maWcuY2hhcnQuYmFja2dyb3VuZD9cIiNmZmZcIjphLmNvbmZpZy5jaGFydC5iYWNrZ3JvdW5kLG49ci5nZXRDb250ZXh0KFwiMmRcIik7bi5maWxsU3R5bGU9byxuLmZpbGxSZWN0KDAsMCxyLndpZHRoKnMsci5oZWlnaHQqcyk7dmFyIGw9ZS5nZXRTdmdTdHJpbmcocyk7aWYod2luZG93LmNhbnZnJiZ4LmlzSUUxMSgpKXt2YXIgaD13aW5kb3cuY2FudmcuQ2FudmcuZnJvbVN0cmluZyhuLGwse2lnbm9yZUNsZWFyOiEwLGlnbm9yZURpbWVuc2lvbnM6ITB9KTtoLnN0YXJ0KCk7dmFyIGM9ci5tc1RvQmxvYigpO2guc3RvcCgpLGkoe2Jsb2I6Y30pfWVsc2V7dmFyIGQ9XCJkYXRhOmltYWdlL3N2Zyt4bWwsXCIrZW5jb2RlVVJJQ29tcG9uZW50KGwpLGc9bmV3IEltYWdlO2cuY3Jvc3NPcmlnaW49XCJhbm9ueW1vdXNcIixnLm9ubG9hZD1mdW5jdGlvbigpe2lmKG4uZHJhd0ltYWdlKGcsMCwwKSxyLm1zVG9CbG9iKXt2YXIgdD1yLm1zVG9CbG9iKCk7aSh7YmxvYjp0fSl9ZWxzZXt2YXIgZT1yLnRvRGF0YVVSTChcImltYWdlL3BuZ1wiKTtpKHtpbWdVUkk6ZX0pfX0sZy5zcmM9ZH19KSl9fSx7a2V5OlwiZXhwb3J0VG9TVkdcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudHJpZ2dlckRvd25sb2FkKHRoaXMuc3ZnVXJsKCksdGhpcy53LmNvbmZpZy5jaGFydC50b29sYmFyLmV4cG9ydC5zdmcuZmlsZW5hbWUsXCIuc3ZnXCIpfX0se2tleTpcImV4cG9ydFRvUG5nXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuZGF0YVVSSSgpLnRoZW4oKGZ1bmN0aW9uKGUpe3ZhciBpPWUuaW1nVVJJLGE9ZS5ibG9iO2E/bmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2IoYSx0LncuZ2xvYmFscy5jaGFydElEK1wiLnBuZ1wiKTp0LnRyaWdnZXJEb3dubG9hZChpLHQudy5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQucG5nLmZpbGVuYW1lLFwiLnBuZ1wiKX0pKX19LHtrZXk6XCJleHBvcnRUb0NTVlwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10LnNlcmllcyxhPXQuZmlsZU5hbWUscz10LmNvbHVtbkRlbGltaXRlcixyPXZvaWQgMD09PXM/XCIsXCI6cyxvPXQubGluZURlbGltaXRlcixuPXZvaWQgMD09PW8/XCJcXG5cIjpvLGw9dGhpcy53O2l8fChpPWwuY29uZmlnLnNlcmllcyk7dmFyIGg9W10sYz1bXSxkPVwiXCIsZz1sLmdsb2JhbHMuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4tMT09PWwuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoZSk/dDpbXX0pKSxwPU1hdGgubWF4LmFwcGx5KE1hdGgsdShpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZGF0YT90LmRhdGEubGVuZ3RoOjB9KSkpKSxmPW5ldyBXKHRoaXMuY3R4KSxiPW5ldyBCKHRoaXMuY3R4KSx2PWZ1bmN0aW9uKHQpe3ZhciBpPVwiXCI7aWYobC5nbG9iYWxzLmF4aXNDaGFydHMpe2lmKFwiY2F0ZWdvcnlcIj09PWwuY29uZmlnLnhheGlzLnR5cGV8fGwuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYylpZihsLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKXt2YXIgYT1sLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXSxzPW5ldyBOKGUuY3R4KS5nZXRBY3RpdmVDb25maWdTZXJpZXNJbmRleCgpO2k9YShsLmdsb2JhbHMubGFiZWxzW3RdLHtzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnQsdzpsfSl9ZWxzZSBpPWIuZ2V0TGFiZWwobC5nbG9iYWxzLmxhYmVscyxsLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLDAsdCkudGV4dDtcImRhdGV0aW1lXCI9PT1sLmNvbmZpZy54YXhpcy50eXBlJiYobC5jb25maWcueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGg/aT1sLmNvbmZpZy54YXhpcy5jYXRlZ29yaWVzW3RdOmwuY29uZmlnLmxhYmVscy5sZW5ndGgmJihpPWwuY29uZmlnLmxhYmVsc1t0XSkpfWVsc2UgaT1sLmNvbmZpZy5sYWJlbHNbdF07cmV0dXJuIEFycmF5LmlzQXJyYXkoaSkmJihpPWkuam9pbihcIiBcIikpLHguaXNOdW1iZXIoaSk/aTppLnNwbGl0KHIpLmpvaW4oXCJcIil9LG09ZnVuY3Rpb24odCxlKXtpZihoLmxlbmd0aCYmMD09PWUmJmMucHVzaChoLmpvaW4ocikpLHQuZGF0YSl7dC5kYXRhPXQuZGF0YS5sZW5ndGgmJnQuZGF0YXx8dShBcnJheShwKSkubWFwKChmdW5jdGlvbigpe3JldHVyblwiXCJ9KSk7Zm9yKHZhciBhPTA7YTx0LmRhdGEubGVuZ3RoO2ErKyl7aD1bXTt2YXIgcz12KGEpO2lmKHN8fChmLmlzRm9ybWF0WFkoKT9zPWlbZV0uZGF0YVthXS54OmYuaXNGb3JtYXQyREFycmF5KCkmJihzPWlbZV0uZGF0YVthXT9pW2VdLmRhdGFbYV1bMF06XCJcIikpLDA9PT1lKXtoLnB1c2goKG49cyxcImRhdGV0aW1lXCI9PT1sLmNvbmZpZy54YXhpcy50eXBlJiZTdHJpbmcobikubGVuZ3RoPj0xMD9sLmNvbmZpZy5jaGFydC50b29sYmFyLmV4cG9ydC5jc3YuZGF0ZUZvcm1hdHRlcihzKTp4LmlzTnVtYmVyKHMpP3M6cy5zcGxpdChyKS5qb2luKFwiXCIpKSk7Zm9yKHZhciBvPTA7bzxsLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDtvKyspZi5pc0Zvcm1hdFhZKCk/aC5wdXNoKGlbb10uZGF0YVthXS55KTpoLnB1c2goZ1tvXVthXSl9KFwiY2FuZGxlc3RpY2tcIj09PWwuY29uZmlnLmNoYXJ0LnR5cGV8fHQudHlwZSYmXCJjYW5kbGVzdGlja1wiPT09dC50eXBlKSYmKGgucG9wKCksaC5wdXNoKGwuZ2xvYmFscy5zZXJpZXNDYW5kbGVPW2VdW2FdKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZUhbZV1bYV0pLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzQ2FuZGxlTFtlXVthXSksaC5wdXNoKGwuZ2xvYmFscy5zZXJpZXNDYW5kbGVDW2VdW2FdKSksKFwiYm94UGxvdFwiPT09bC5jb25maWcuY2hhcnQudHlwZXx8dC50eXBlJiZcImJveFBsb3RcIj09PXQudHlwZSkmJihoLnBvcCgpLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzQ2FuZGxlT1tlXVthXSksaC5wdXNoKGwuZ2xvYmFscy5zZXJpZXNDYW5kbGVIW2VdW2FdKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZU1bZV1bYV0pLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzQ2FuZGxlTFtlXVthXSksaC5wdXNoKGwuZ2xvYmFscy5zZXJpZXNDYW5kbGVDW2VdW2FdKSksXCJyYW5nZUJhclwiPT09bC5jb25maWcuY2hhcnQudHlwZSYmKGgucG9wKCksaC5wdXNoKGwuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0W2VdW2FdKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc1JhbmdlRW5kW2VdW2FdKSksaC5sZW5ndGgmJmMucHVzaChoLmpvaW4ocikpfX12YXIgbn07aC5wdXNoKGwuY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LmNzdi5oZWFkZXJDYXRlZ29yeSksXCJib3hQbG90XCI9PT1sLmNvbmZpZy5jaGFydC50eXBlPyhoLnB1c2goXCJtaW5pbXVtXCIpLGgucHVzaChcInExXCIpLGgucHVzaChcIm1lZGlhblwiKSxoLnB1c2goXCJxM1wiKSxoLnB1c2goXCJtYXhpbXVtXCIpKTpcImNhbmRsZXN0aWNrXCI9PT1sLmNvbmZpZy5jaGFydC50eXBlPyhoLnB1c2goXCJvcGVuXCIpLGgucHVzaChcImhpZ2hcIiksaC5wdXNoKFwibG93XCIpLGgucHVzaChcImNsb3NlXCIpKTpcInJhbmdlQmFyXCI9PT1sLmNvbmZpZy5jaGFydC50eXBlPyhoLnB1c2goXCJtaW5pbXVtXCIpLGgucHVzaChcIm1heGltdW1cIikpOmkubWFwKChmdW5jdGlvbih0LGUpe3ZhciBpPXQubmFtZT90Lm5hbWU6XCJzZXJpZXMtXCIuY29uY2F0KGUpO2wuZ2xvYmFscy5heGlzQ2hhcnRzJiZoLnB1c2goaS5zcGxpdChyKS5qb2luKFwiXCIpP2kuc3BsaXQocikuam9pbihcIlwiKTpcInNlcmllcy1cIi5jb25jYXQoZSkpfSkpLGwuZ2xvYmFscy5heGlzQ2hhcnRzfHwoaC5wdXNoKGwuY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LmNzdi5oZWFkZXJWYWx1ZSksYy5wdXNoKGguam9pbihyKSkpLGkubWFwKChmdW5jdGlvbih0LGUpe2wuZ2xvYmFscy5heGlzQ2hhcnRzP20odCxlKTooKGg9W10pLnB1c2gobC5nbG9iYWxzLmxhYmVsc1tlXS5zcGxpdChyKS5qb2luKFwiXCIpKSxoLnB1c2goZ1tlXSksYy5wdXNoKGguam9pbihyKSkpfSkpLGQrPWMuam9pbihuKSx0aGlzLnRyaWdnZXJEb3dubG9hZChcImRhdGE6dGV4dC9jc3Y7IGNoYXJzZXQ9dXRmLTgsXCIrZW5jb2RlVVJJQ29tcG9uZW50KFwiXFx1ZmVmZlwiK2QpLGF8fGwuY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LmNzdi5maWxlbmFtZSxcIi5jc3ZcIil9fSx7a2V5OlwidHJpZ2dlckRvd25sb2FkXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO2EuaHJlZj10LGEuZG93bmxvYWQ9KGV8fHRoaXMudy5nbG9iYWxzLmNoYXJ0SUQpK2ksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKSxhLmNsaWNrKCksZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKX19XSksdH0oKSxWPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMuZWxncmlkPWksdGhpcy53PWUudzt2YXIgcz10aGlzLnc7dGhpcy5heGVzVXRpbHM9bmV3IEIoZSksdGhpcy54YXhpc0xhYmVscz1zLmdsb2JhbHMubGFiZWxzLnNsaWNlKCkscy5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscy5sZW5ndGg+MCYmIXMuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJih0aGlzLnhheGlzTGFiZWxzPXMuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMuc2xpY2UoKSkscy5jb25maWcueGF4aXMub3ZlcndyaXRlQ2F0ZWdvcmllcyYmKHRoaXMueGF4aXNMYWJlbHM9cy5jb25maWcueGF4aXMub3ZlcndyaXRlQ2F0ZWdvcmllcyksdGhpcy5kcmF3bkxhYmVscz1bXSx0aGlzLmRyYXduTGFiZWxzUmVjdHM9W10sXCJ0b3BcIj09PXMuY29uZmlnLnhheGlzLnBvc2l0aW9uP3RoaXMub2ZmWT0wOnRoaXMub2ZmWT1zLmdsb2JhbHMuZ3JpZEhlaWdodCsxLHRoaXMub2ZmWT10aGlzLm9mZlkrcy5jb25maWcueGF4aXMuYXhpc0JvcmRlci5vZmZzZXRZLHRoaXMuaXNDYXRlZ29yeUJhckhvcml6b250YWw9XCJiYXJcIj09PXMuY29uZmlnLmNoYXJ0LnR5cGUmJnMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsLHRoaXMueGF4aXNGb250U2l6ZT1zLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUsdGhpcy54YXhpc0ZvbnRGYW1pbHk9cy5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksdGhpcy54YXhpc0ZvcmVDb2xvcnM9cy5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmNvbG9ycyx0aGlzLnhheGlzQm9yZGVyV2lkdGg9cy5jb25maWcueGF4aXMuYXhpc0JvcmRlci53aWR0aCx0aGlzLmlzQ2F0ZWdvcnlCYXJIb3Jpem9udGFsJiYodGhpcy54YXhpc0JvcmRlcldpZHRoPXMuY29uZmlnLnlheGlzWzBdLmF4aXNCb3JkZXIud2lkdGgudG9TdHJpbmcoKSksdGhpcy54YXhpc0JvcmRlcldpZHRoLmluZGV4T2YoXCIlXCIpPi0xP3RoaXMueGF4aXNCb3JkZXJXaWR0aD1zLmdsb2JhbHMuZ3JpZFdpZHRoKnBhcnNlSW50KHRoaXMueGF4aXNCb3JkZXJXaWR0aCwxMCkvMTAwOnRoaXMueGF4aXNCb3JkZXJXaWR0aD1wYXJzZUludCh0aGlzLnhheGlzQm9yZGVyV2lkdGgsMTApLHRoaXMueGF4aXNCb3JkZXJIZWlnaHQ9cy5jb25maWcueGF4aXMuYXhpc0JvcmRlci5oZWlnaHQsdGhpcy55YXhpcz1zLmNvbmZpZy55YXhpc1swXX1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1hheGlzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT1uZXcgbSh0aGlzLmN0eCksaT1lLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteGF4aXNcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIuY29uY2F0KHQuY29uZmlnLnhheGlzLm9mZnNldFgsXCIsIFwiKS5jb25jYXQodC5jb25maWcueGF4aXMub2Zmc2V0WSxcIilcIil9KSxhPWUuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy10ZXh0cy1nXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdCh0Lmdsb2JhbHMudHJhbnNsYXRlWEF4aXNYLFwiLCBcIikuY29uY2F0KHQuZ2xvYmFscy50cmFuc2xhdGVYQXhpc1ksXCIpXCIpfSk7aS5hZGQoYSk7Zm9yKHZhciBzPVtdLHI9MDtyPHRoaXMueGF4aXNMYWJlbHMubGVuZ3RoO3IrKylzLnB1c2godGhpcy54YXhpc0xhYmVsc1tyXSk7aWYodGhpcy5kcmF3WEF4aXNMYWJlbEFuZEdyb3VwKCEwLGUsYSxzLHQuZ2xvYmFscy5pc1hOdW1lcmljLChmdW5jdGlvbih0LGUpe3JldHVybiBlfSkpLHQuZ2xvYmFscy5oYXNYYXhpc0dyb3Vwcyl7dmFyIG89dC5nbG9iYWxzLmdyb3VwcztzPVtdO2Zvcih2YXIgbj0wO248by5sZW5ndGg7bisrKXMucHVzaChvW25dLnRpdGxlKTt2YXIgbD17fTt0LmNvbmZpZy54YXhpcy5ncm91cC5zdHlsZSYmKGwueGF4aXNGb250U2l6ZT10LmNvbmZpZy54YXhpcy5ncm91cC5zdHlsZS5mb250U2l6ZSxsLnhheGlzRm9udEZhbWlseT10LmNvbmZpZy54YXhpcy5ncm91cC5zdHlsZS5mb250RmFtaWx5LGwueGF4aXNGb3JlQ29sb3JzPXQuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlLmNvbG9ycyxsLmZvbnRXZWlnaHQ9dC5jb25maWcueGF4aXMuZ3JvdXAuc3R5bGUuZm9udFdlaWdodCxsLmNzc0NsYXNzPXQuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlLmNzc0NsYXNzKSx0aGlzLmRyYXdYQXhpc0xhYmVsQW5kR3JvdXAoITEsZSxhLHMsITEsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG9bdF0uY29scyplfSksbCl9aWYodm9pZCAwIT09dC5jb25maWcueGF4aXMudGl0bGUudGV4dCl7dmFyIGg9ZS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLXRpdGxlXCJ9KSxjPWUuZHJhd1RleHQoe3g6dC5nbG9iYWxzLmdyaWRXaWR0aC8yK3QuY29uZmlnLnhheGlzLnRpdGxlLm9mZnNldFgseTp0aGlzLm9mZlkrcGFyc2VGbG9hdCh0aGlzLnhheGlzRm9udFNpemUpKyhcImJvdHRvbVwiPT09dC5jb25maWcueGF4aXMucG9zaXRpb24/dC5nbG9iYWxzLnhBeGlzTGFiZWxzSGVpZ2h0Oi10Lmdsb2JhbHMueEF4aXNMYWJlbHNIZWlnaHQtMTApK3QuY29uZmlnLnhheGlzLnRpdGxlLm9mZnNldFksdGV4dDp0LmNvbmZpZy54YXhpcy50aXRsZS50ZXh0LHRleHRBbmNob3I6XCJtaWRkbGVcIixmb250U2l6ZTp0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OnQuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDp0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjp0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5jb2xvcixjc3NDbGFzczpcImFwZXhjaGFydHMteGF4aXMtdGl0bGUtdGV4dCBcIit0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5jc3NDbGFzc30pO2guYWRkKGMpLGkuYWRkKGgpfWlmKHQuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIuc2hvdyl7dmFyIGQ9dC5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzLGc9ZS5kcmF3TGluZSh0Lmdsb2JhbHMucGFkSG9yaXpvbnRhbCt0LmNvbmZpZy54YXhpcy5heGlzQm9yZGVyLm9mZnNldFgtZCx0aGlzLm9mZlksdGhpcy54YXhpc0JvcmRlcldpZHRoK2QsdGhpcy5vZmZZLHQuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIuY29sb3IsMCx0aGlzLnhheGlzQm9yZGVySGVpZ2h0KTt0aGlzLmVsZ3JpZCYmdGhpcy5lbGdyaWQuZWxHcmlkQm9yZGVycyYmdC5jb25maWcuZ3JpZC5zaG93P3RoaXMuZWxncmlkLmVsR3JpZEJvcmRlcnMuYWRkKGcpOmkuYWRkKGcpfXJldHVybiBpfX0se2tleTpcImRyYXdYQXhpc0xhYmVsQW5kR3JvdXBcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscil7dmFyIG8sbj10aGlzLGw9YXJndW1lbnRzLmxlbmd0aD42JiZ2b2lkIDAhPT1hcmd1bWVudHNbNl0/YXJndW1lbnRzWzZdOnt9LGg9W10sYz1bXSxkPXRoaXMudyxnPWwueGF4aXNGb250U2l6ZXx8dGhpcy54YXhpc0ZvbnRTaXplLHU9bC54YXhpc0ZvbnRGYW1pbHl8fHRoaXMueGF4aXNGb250RmFtaWx5LHA9bC54YXhpc0ZvcmVDb2xvcnN8fHRoaXMueGF4aXNGb3JlQ29sb3JzLGY9bC5mb250V2VpZ2h0fHxkLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFdlaWdodCx4PWwuY3NzQ2xhc3N8fGQuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5jc3NDbGFzcyxiPWQuZ2xvYmFscy5wYWRIb3Jpem9udGFsLHY9YS5sZW5ndGgsbT1cImNhdGVnb3J5XCI9PT1kLmNvbmZpZy54YXhpcy50eXBlP2QuZ2xvYmFscy5kYXRhUG9pbnRzOnY7aWYoMD09PW0mJnY+bSYmKG09dikscyl7dmFyIHk9bT4xP20tMTptO289ZC5nbG9iYWxzLmdyaWRXaWR0aC95LGI9YityKDAsbykvMitkLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WH1lbHNlIG89ZC5nbG9iYWxzLmdyaWRXaWR0aC9tLGI9YityKDAsbykrZC5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFg7Zm9yKHZhciB3PWZ1bmN0aW9uKHMpe3ZhciBsPWItcihzLG8pLzIrZC5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFg7MD09PXMmJjE9PT12JiZvLzI9PT1iJiYxPT09bSYmKGw9ZC5nbG9iYWxzLmdyaWRXaWR0aC8yKTt2YXIgeT1uLmF4ZXNVdGlscy5nZXRMYWJlbChhLGQuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMsbCxzLGgsZyx0KSx3PTI4O2QuZ2xvYmFscy5yb3RhdGVYTGFiZWxzJiZ0JiYodz0yMiksZC5jb25maWcueGF4aXMudGl0bGUudGV4dCYmXCJ0b3BcIj09PWQuY29uZmlnLnhheGlzLnBvc2l0aW9uJiYodys9cGFyc2VGbG9hdChkLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250U2l6ZSkrMiksdHx8KHc9dytwYXJzZUZsb2F0KGcpKyhkLmdsb2JhbHMueEF4aXNMYWJlbHNIZWlnaHQtZC5nbG9iYWxzLnhBeGlzR3JvdXBMYWJlbHNIZWlnaHQpKyhkLmdsb2JhbHMucm90YXRlWExhYmVscz8xMDowKSkseT12b2lkIDAhPT1kLmNvbmZpZy54YXhpcy50aWNrQW1vdW50JiZcImRhdGFQb2ludHNcIiE9PWQuY29uZmlnLnhheGlzLnRpY2tBbW91bnQmJlwiZGF0ZXRpbWVcIiE9PWQuY29uZmlnLnhheGlzLnR5cGU/bi5heGVzVXRpbHMuY2hlY2tMYWJlbEJhc2VkT25UaWNrYW1vdW50KHMseSx2KTpuLmF4ZXNVdGlscy5jaGVja0Zvck92ZXJmbG93aW5nTGFiZWxzKHMseSx2LGgsYyk7aWYoZC5jb25maWcueGF4aXMubGFiZWxzLnNob3cpe3ZhciBrPWUuZHJhd1RleHQoe3g6eS54LHk6bi5vZmZZK2QuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRZK3ctKFwidG9wXCI9PT1kLmNvbmZpZy54YXhpcy5wb3NpdGlvbj9kLmdsb2JhbHMueEF4aXNIZWlnaHQrZC5jb25maWcueGF4aXMuYXhpc1RpY2tzLmhlaWdodC0yOjApLHRleHQ6eS50ZXh0LHRleHRBbmNob3I6XCJtaWRkbGVcIixmb250V2VpZ2h0OnkuaXNCb2xkPzYwMDpmLGZvbnRTaXplOmcsZm9udEZhbWlseTp1LGZvcmVDb2xvcjpBcnJheS5pc0FycmF5KHApP3QmJmQuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYz9wW2QuZ2xvYmFscy5taW5YK3MtMV06cFtzXTpwLGlzUGxhaW5UZXh0OiExLGNzc0NsYXNzOih0P1wiYXBleGNoYXJ0cy14YXhpcy1sYWJlbCBcIjpcImFwZXhjaGFydHMteGF4aXMtZ3JvdXAtbGFiZWwgXCIpK3h9KTtpZihpLmFkZChrKSxrLm9uKFwiY2xpY2tcIiwoZnVuY3Rpb24odCl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZC5jb25maWcuY2hhcnQuZXZlbnRzLnhBeGlzTGFiZWxDbGljayl7dmFyIGU9T2JqZWN0LmFzc2lnbih7fSxkLHtsYWJlbEluZGV4OnN9KTtkLmNvbmZpZy5jaGFydC5ldmVudHMueEF4aXNMYWJlbENsaWNrKHQsbi5jdHgsZSl9fSkpLHQpe3ZhciBBPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhkLmdsb2JhbHMuU1ZHTlMsXCJ0aXRsZVwiKTtBLnRleHRDb250ZW50PUFycmF5LmlzQXJyYXkoeS50ZXh0KT95LnRleHQuam9pbihcIiBcIik6eS50ZXh0LGsubm9kZS5hcHBlbmRDaGlsZChBKSxcIlwiIT09eS50ZXh0JiYoaC5wdXNoKHkudGV4dCksYy5wdXNoKHkpKX19czx2LTEmJihiKz1yKHMrMSxvKSl9LGs9MDtrPD12LTE7aysrKXcoayl9fSx7a2V5OlwiZHJhd1hheGlzSW52ZXJzZWRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpLGE9dGhpcyxzPXRoaXMudyxyPW5ldyBtKHRoaXMuY3R4KSxvPXMuY29uZmlnLnlheGlzWzBdLm9wcG9zaXRlP3MuZ2xvYmFscy50cmFuc2xhdGVZQXhpc1hbdF06MCxuPXIuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcyBhcGV4Y2hhcnRzLXhheGlzLWludmVyc2VkXCIscmVsOnR9KSxsPXIuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy10ZXh0cy1nIGFwZXhjaGFydHMteGF4aXMtaW52ZXJzZWQtdGV4dHMtZ1wiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIitvK1wiLCAwKVwifSk7bi5hZGQobCk7dmFyIGg9W107aWYocy5jb25maWcueWF4aXNbdF0uc2hvdylmb3IodmFyIGM9MDtjPHRoaXMueGF4aXNMYWJlbHMubGVuZ3RoO2MrKyloLnB1c2godGhpcy54YXhpc0xhYmVsc1tjXSk7ZT1zLmdsb2JhbHMuZ3JpZEhlaWdodC9oLmxlbmd0aCxpPS1lLzIuMjt2YXIgZD1zLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXSxnPXMuY29uZmlnLnlheGlzWzBdLmxhYmVscztpZihnLnNob3cpZm9yKHZhciB1PWZ1bmN0aW9uKG8pe3ZhciBuPXZvaWQgMD09PWhbb10/XCJcIjpoW29dO249ZChuLHtzZXJpZXNJbmRleDp0LGRhdGFQb2ludEluZGV4Om8sdzpzfSk7dmFyIGM9YS5heGVzVXRpbHMuZ2V0WUF4aXNGb3JlQ29sb3IoZy5zdHlsZS5jb2xvcnMsdCksdT0wO0FycmF5LmlzQXJyYXkobikmJih1PW4ubGVuZ3RoLzIqcGFyc2VJbnQoZy5zdHlsZS5mb250U2l6ZSwxMCkpO3ZhciBwPWcub2Zmc2V0WC0xNSxmPVwiZW5kXCI7YS55YXhpcy5vcHBvc2l0ZSYmKGY9XCJzdGFydFwiKSxcImxlZnRcIj09PXMuY29uZmlnLnlheGlzWzBdLmxhYmVscy5hbGlnbj8ocD1nLm9mZnNldFgsZj1cInN0YXJ0XCIpOlwiY2VudGVyXCI9PT1zLmNvbmZpZy55YXhpc1swXS5sYWJlbHMuYWxpZ24/KHA9Zy5vZmZzZXRYLGY9XCJtaWRkbGVcIik6XCJyaWdodFwiPT09cy5jb25maWcueWF4aXNbMF0ubGFiZWxzLmFsaWduJiYoZj1cImVuZFwiKTt2YXIgeD1yLmRyYXdUZXh0KHt4OnAseTppK2UrZy5vZmZzZXRZLXUsdGV4dDpuLHRleHRBbmNob3I6Zixmb3JlQ29sb3I6QXJyYXkuaXNBcnJheShjKT9jW29dOmMsZm9udFNpemU6Zy5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5Omcuc3R5bGUuZm9udEZhbWlseSxmb250V2VpZ2h0Omcuc3R5bGUuZm9udFdlaWdodCxpc1BsYWluVGV4dDohMSxjc3NDbGFzczpcImFwZXhjaGFydHMteWF4aXMtbGFiZWwgXCIrZy5zdHlsZS5jc3NDbGFzcyxtYXhXaWR0aDpnLm1heFdpZHRofSk7bC5hZGQoeCkseC5vbihcImNsaWNrXCIsKGZ1bmN0aW9uKHQpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHMuY29uZmlnLmNoYXJ0LmV2ZW50cy54QXhpc0xhYmVsQ2xpY2spe3ZhciBlPU9iamVjdC5hc3NpZ24oe30scyx7bGFiZWxJbmRleDpvfSk7cy5jb25maWcuY2hhcnQuZXZlbnRzLnhBeGlzTGFiZWxDbGljayh0LGEuY3R4LGUpfX0pKTt2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMocy5nbG9iYWxzLlNWR05TLFwidGl0bGVcIik7aWYoYi50ZXh0Q29udGVudD1BcnJheS5pc0FycmF5KG4pP24uam9pbihcIiBcIik6bix4Lm5vZGUuYXBwZW5kQ2hpbGQoYiksMCE9PXMuY29uZmlnLnlheGlzW3RdLmxhYmVscy5yb3RhdGUpe3ZhciB2PXIucm90YXRlQXJvdW5kQ2VudGVyKHgubm9kZSk7eC5ub2RlLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwicm90YXRlKFwiLmNvbmNhdChzLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMucm90YXRlLFwiIDAgXCIpLmNvbmNhdCh2LnksXCIpXCIpKX1pKz1lfSxwPTA7cDw9aC5sZW5ndGgtMTtwKyspdShwKTtpZih2b2lkIDAhPT1zLmNvbmZpZy55YXhpc1swXS50aXRsZS50ZXh0KXt2YXIgZj1yLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXMtdGl0bGUgYXBleGNoYXJ0cy14YXhpcy10aXRsZS1pbnZlcnNlZFwiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIitvK1wiLCAwKVwifSkseD1yLmRyYXdUZXh0KHt4OnMuY29uZmlnLnlheGlzWzBdLnRpdGxlLm9mZnNldFgseTpzLmdsb2JhbHMuZ3JpZEhlaWdodC8yK3MuY29uZmlnLnlheGlzWzBdLnRpdGxlLm9mZnNldFksdGV4dDpzLmNvbmZpZy55YXhpc1swXS50aXRsZS50ZXh0LHRleHRBbmNob3I6XCJtaWRkbGVcIixmb3JlQ29sb3I6cy5jb25maWcueWF4aXNbMF0udGl0bGUuc3R5bGUuY29sb3IsZm9udFNpemU6cy5jb25maWcueWF4aXNbMF0udGl0bGUuc3R5bGUuZm9udFNpemUsZm9udFdlaWdodDpzLmNvbmZpZy55YXhpc1swXS50aXRsZS5zdHlsZS5mb250V2VpZ2h0LGZvbnRGYW1pbHk6cy5jb25maWcueWF4aXNbMF0udGl0bGUuc3R5bGUuZm9udEZhbWlseSxjc3NDbGFzczpcImFwZXhjaGFydHMteWF4aXMtdGl0bGUtdGV4dCBcIitzLmNvbmZpZy55YXhpc1swXS50aXRsZS5zdHlsZS5jc3NDbGFzc30pO2YuYWRkKHgpLG4uYWRkKGYpfXZhciBiPTA7dGhpcy5pc0NhdGVnb3J5QmFySG9yaXpvbnRhbCYmcy5jb25maWcueWF4aXNbMF0ub3Bwb3NpdGUmJihiPXMuZ2xvYmFscy5ncmlkV2lkdGgpO3ZhciB2PXMuY29uZmlnLnhheGlzLmF4aXNCb3JkZXI7aWYodi5zaG93KXt2YXIgeT1yLmRyYXdMaW5lKHMuZ2xvYmFscy5wYWRIb3Jpem9udGFsK3Yub2Zmc2V0WCtiLDErdi5vZmZzZXRZLHMuZ2xvYmFscy5wYWRIb3Jpem9udGFsK3Yub2Zmc2V0WCtiLHMuZ2xvYmFscy5ncmlkSGVpZ2h0K3Yub2Zmc2V0WSx2LmNvbG9yLDApO3RoaXMuZWxncmlkJiZ0aGlzLmVsZ3JpZC5lbEdyaWRCb3JkZXJzJiZzLmNvbmZpZy5ncmlkLnNob3c/dGhpcy5lbGdyaWQuZWxHcmlkQm9yZGVycy5hZGQoeSk6bi5hZGQoeSl9cmV0dXJuIHMuY29uZmlnLnlheGlzWzBdLmF4aXNUaWNrcy5zaG93JiZ0aGlzLmF4ZXNVdGlscy5kcmF3WUF4aXNUaWNrcyhiLGgubGVuZ3RoLHMuY29uZmlnLnlheGlzWzBdLmF4aXNCb3JkZXIscy5jb25maWcueWF4aXNbMF0uYXhpc1RpY2tzLDAsZSxuKSxufX0se2tleTpcImRyYXdYYXhpc1RpY2tzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudyxzPXQ7aWYoISh0PDB8fHQtMj5hLmdsb2JhbHMuZ3JpZFdpZHRoKSl7dmFyIHI9dGhpcy5vZmZZK2EuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5vZmZzZXRZO2lmKGU9ZStyK2EuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5oZWlnaHQsXCJ0b3BcIj09PWEuY29uZmlnLnhheGlzLnBvc2l0aW9uJiYoZT1yLWEuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5oZWlnaHQpLGEuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5zaG93KXt2YXIgbz1uZXcgbSh0aGlzLmN0eCkuZHJhd0xpbmUodCthLmNvbmZpZy54YXhpcy5heGlzVGlja3Mub2Zmc2V0WCxyK2EuY29uZmlnLnhheGlzLm9mZnNldFkscythLmNvbmZpZy54YXhpcy5heGlzVGlja3Mub2Zmc2V0WCxlK2EuY29uZmlnLnhheGlzLm9mZnNldFksYS5jb25maWcueGF4aXMuYXhpc1RpY2tzLmNvbG9yKTtpLmFkZChvKSxvLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMteGF4aXMtdGlja1wiKX19fX0se2tleTpcImdldFhBeGlzVGlja3NQb3NpdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPVtdLGk9dGhpcy54YXhpc0xhYmVscy5sZW5ndGgsYT10Lmdsb2JhbHMucGFkSG9yaXpvbnRhbDtpZih0Lmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLmxlbmd0aD4wKWZvcih2YXIgcz0wO3M8aTtzKyspYT10aGlzLnhheGlzTGFiZWxzW3NdLnBvc2l0aW9uLGUucHVzaChhKTtlbHNlIGZvcih2YXIgcj1pLG89MDtvPHI7bysrKXt2YXIgbj1yO3QuZ2xvYmFscy5pc1hOdW1lcmljJiZcImJhclwiIT09dC5jb25maWcuY2hhcnQudHlwZSYmKG4tPTEpLGErPXQuZ2xvYmFscy5ncmlkV2lkdGgvbixlLnB1c2goYSl9cmV0dXJuIGV9fSx7a2V5OlwieEF4aXNMYWJlbENvcnJlY3Rpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT1uZXcgbSh0aGlzLmN0eCksaT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteGF4aXMtdGV4dHMtZ1wiKSxhPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy14YXhpcy10ZXh0cy1nIHRleHQ6bm90KC5hcGV4Y2hhcnRzLXhheGlzLWdyb3VwLWxhYmVsKVwiKSxzPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy15YXhpcy1pbnZlcnNlZCB0ZXh0XCIpLHI9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXhheGlzLWludmVyc2VkLXRleHRzLWcgdGV4dCB0c3BhblwiKTtpZih0Lmdsb2JhbHMucm90YXRlWExhYmVsc3x8dC5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZUFsd2F5cylmb3IodmFyIG89MDtvPGEubGVuZ3RoO28rKyl7dmFyIG49ZS5yb3RhdGVBcm91bmRDZW50ZXIoYVtvXSk7bi55PW4ueS0xLG4ueD1uLngrMSxhW29dLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwicm90YXRlKFwiLmNvbmNhdCh0LmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlLFwiIFwiKS5jb25jYXQobi54LFwiIFwiKS5jb25jYXQobi55LFwiKVwiKSksYVtvXS5zZXRBdHRyaWJ1dGUoXCJ0ZXh0LWFuY2hvclwiLFwiZW5kXCIpO2kuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJ0cmFuc2xhdGUoMCwgXCIuY29uY2F0KC0xMCxcIilcIikpO3ZhciBsPWFbb10uY2hpbGROb2Rlczt0LmNvbmZpZy54YXhpcy5sYWJlbHMudHJpbSYmQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChsLChmdW5jdGlvbihpKXtlLnBsYWNlVGV4dFdpdGhFbGxpcHNpcyhpLGkudGV4dENvbnRlbnQsdC5nbG9iYWxzLnhBeGlzTGFiZWxzSGVpZ2h0LShcImJvdHRvbVwiPT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9uPzIwOjEwKSl9KSl9ZWxzZSFmdW5jdGlvbigpe2Zvcih2YXIgaT10Lmdsb2JhbHMuZ3JpZFdpZHRoLyh0Lmdsb2JhbHMubGFiZWxzLmxlbmd0aCsxKSxzPTA7czxhLmxlbmd0aDtzKyspe3ZhciByPWFbc10uY2hpbGROb2Rlczt0LmNvbmZpZy54YXhpcy5sYWJlbHMudHJpbSYmXCJkYXRldGltZVwiIT09dC5jb25maWcueGF4aXMudHlwZSYmQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChyLChmdW5jdGlvbih0KXtlLnBsYWNlVGV4dFdpdGhFbGxpcHNpcyh0LHQudGV4dENvbnRlbnQsaSl9KSl9fSgpO2lmKHMubGVuZ3RoPjApe3ZhciBoPXNbcy5sZW5ndGgtMV0uZ2V0QkJveCgpLGM9c1swXS5nZXRCQm94KCk7aC54PC0yMCYmc1tzLmxlbmd0aC0xXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNbcy5sZW5ndGgtMV0pLGMueCtjLndpZHRoPnQuZ2xvYmFscy5ncmlkV2lkdGgmJiF0Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZzWzBdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc1swXSk7Zm9yKHZhciBkPTA7ZDxyLmxlbmd0aDtkKyspZS5wbGFjZVRleHRXaXRoRWxsaXBzaXMocltkXSxyW2RdLnRleHRDb250ZW50LHQuY29uZmlnLnlheGlzWzBdLmxhYmVscy5tYXhXaWR0aC0odC5jb25maWcueWF4aXNbMF0udGl0bGUudGV4dD8yKnBhcnNlRmxvYXQodC5jb25maWcueWF4aXNbMF0udGl0bGUuc3R5bGUuZm9udFNpemUpOjApLTE1KX19fV0pLHR9KCksaj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudzt2YXIgaT10aGlzLnc7dGhpcy54YXhpc0xhYmVscz1pLmdsb2JhbHMubGFiZWxzLnNsaWNlKCksdGhpcy5heGVzVXRpbHM9bmV3IEIoZSksdGhpcy5pc1JhbmdlQmFyPWkuZ2xvYmFscy5zZXJpZXNSYW5nZS5sZW5ndGgsaS5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscy5sZW5ndGg+MCYmKHRoaXMueGF4aXNMYWJlbHM9aS5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscy5zbGljZSgpKX1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd0dyaWRBcmVhXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbCxlPXRoaXMudyxpPW5ldyBtKHRoaXMuY3R4KTtudWxsPT09dCYmKHQ9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWdyaWRcIn0pKTt2YXIgYT1pLmRyYXdMaW5lKGUuZ2xvYmFscy5wYWRIb3Jpem9udGFsLDEsZS5nbG9iYWxzLnBhZEhvcml6b250YWwsZS5nbG9iYWxzLmdyaWRIZWlnaHQsXCJ0cmFuc3BhcmVudFwiKSxzPWkuZHJhd0xpbmUoZS5nbG9iYWxzLnBhZEhvcml6b250YWwsZS5nbG9iYWxzLmdyaWRIZWlnaHQsZS5nbG9iYWxzLmdyaWRXaWR0aCxlLmdsb2JhbHMuZ3JpZEhlaWdodCxcInRyYW5zcGFyZW50XCIpO3JldHVybiB0LmFkZChzKSx0LmFkZChhKSx0fX0se2tleTpcImRyYXdHcmlkXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1udWxsO3JldHVybiB0aGlzLncuZ2xvYmFscy5heGlzQ2hhcnRzJiYodD10aGlzLnJlbmRlckdyaWQoKSx0aGlzLmRyYXdHcmlkQXJlYSh0LmVsKSksdH19LHtrZXk6XCJjcmVhdGVHcmlkTWFza1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5nbG9iYWxzLGk9bmV3IG0odGhpcy5jdHgpLGE9QXJyYXkuaXNBcnJheSh0LmNvbmZpZy5zdHJva2Uud2lkdGgpPzA6dC5jb25maWcuc3Ryb2tlLndpZHRoO2lmKEFycmF5LmlzQXJyYXkodC5jb25maWcuc3Ryb2tlLndpZHRoKSl7dmFyIHM9MDt0LmNvbmZpZy5zdHJva2Uud2lkdGguZm9yRWFjaCgoZnVuY3Rpb24odCl7cz1NYXRoLm1heChzLHQpfSkpLGE9c31lLmRvbS5lbEdyaWRSZWN0TWFzaz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZS5TVkdOUyxcImNsaXBQYXRoXCIpLGUuZG9tLmVsR3JpZFJlY3RNYXNrLnNldEF0dHJpYnV0ZShcImlkXCIsXCJncmlkUmVjdE1hc2tcIi5jb25jYXQoZS5jdWlkKSksZS5kb20uZWxHcmlkUmVjdE1hcmtlck1hc2s9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuU1ZHTlMsXCJjbGlwUGF0aFwiKSxlLmRvbS5lbEdyaWRSZWN0TWFya2VyTWFzay5zZXRBdHRyaWJ1dGUoXCJpZFwiLFwiZ3JpZFJlY3RNYXJrZXJNYXNrXCIuY29uY2F0KGUuY3VpZCkpLGUuZG9tLmVsRm9yZWNhc3RNYXNrPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLlNWR05TLFwiY2xpcFBhdGhcIiksZS5kb20uZWxGb3JlY2FzdE1hc2suc2V0QXR0cmlidXRlKFwiaWRcIixcImZvcmVjYXN0TWFza1wiLmNvbmNhdChlLmN1aWQpKSxlLmRvbS5lbE5vbkZvcmVjYXN0TWFzaz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZS5TVkdOUyxcImNsaXBQYXRoXCIpLGUuZG9tLmVsTm9uRm9yZWNhc3RNYXNrLnNldEF0dHJpYnV0ZShcImlkXCIsXCJub25Gb3JlY2FzdE1hc2tcIi5jb25jYXQoZS5jdWlkKSk7dmFyIHI9dC5jb25maWcuY2hhcnQudHlwZSxvPTAsbj0wOyhcImJhclwiPT09cnx8XCJyYW5nZUJhclwiPT09cnx8XCJjYW5kbGVzdGlja1wiPT09cnx8XCJib3hQbG90XCI9PT1yfHx0Lmdsb2JhbHMuY29tYm9CYXJDb3VudD4wKSYmdC5nbG9iYWxzLmlzWE51bWVyaWMmJiF0Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYobz10LmNvbmZpZy5ncmlkLnBhZGRpbmcubGVmdCxuPXQuY29uZmlnLmdyaWQucGFkZGluZy5yaWdodCxlLmJhclBhZEZvck51bWVyaWNBeGlzPm8mJihvPWUuYmFyUGFkRm9yTnVtZXJpY0F4aXMsbj1lLmJhclBhZEZvck51bWVyaWNBeGlzKSksZS5kb20uZWxHcmlkUmVjdD1pLmRyYXdSZWN0KC1hLzItby0yLC1hLzIsZS5ncmlkV2lkdGgrYStuK28rNCxlLmdyaWRIZWlnaHQrYSwwLFwiI2ZmZlwiKTt2YXIgbD10Lmdsb2JhbHMubWFya2Vycy5sYXJnZXN0U2l6ZSsxO2UuZG9tLmVsR3JpZFJlY3RNYXJrZXI9aS5kcmF3UmVjdCgyKi1sLDIqLWwsZS5ncmlkV2lkdGgrNCpsLGUuZ3JpZEhlaWdodCs0KmwsMCxcIiNmZmZcIiksZS5kb20uZWxHcmlkUmVjdE1hc2suYXBwZW5kQ2hpbGQoZS5kb20uZWxHcmlkUmVjdC5ub2RlKSxlLmRvbS5lbEdyaWRSZWN0TWFya2VyTWFzay5hcHBlbmRDaGlsZChlLmRvbS5lbEdyaWRSZWN0TWFya2VyLm5vZGUpO3ZhciBoPWUuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiZGVmc1wiKTtoLmFwcGVuZENoaWxkKGUuZG9tLmVsR3JpZFJlY3RNYXNrKSxoLmFwcGVuZENoaWxkKGUuZG9tLmVsRm9yZWNhc3RNYXNrKSxoLmFwcGVuZENoaWxkKGUuZG9tLmVsTm9uRm9yZWNhc3RNYXNrKSxoLmFwcGVuZENoaWxkKGUuZG9tLmVsR3JpZFJlY3RNYXJrZXJNYXNrKX19LHtrZXk6XCJfZHJhd0dyaWRMaW5lc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaSxpPXQueDEsYT10LnkxLHM9dC54MixyPXQueTIsbz10LnhDb3VudCxuPXQucGFyZW50LGw9dGhpcy53O2lmKCEoMD09PWUmJmwuZ2xvYmFscy5za2lwRmlyc3RUaW1lbGluZWxhYmVsfHxlPT09by0xJiZsLmdsb2JhbHMuc2tpcExhc3RUaW1lbGluZWxhYmVsJiYhbC5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlcnx8XCJyYWRhclwiPT09bC5jb25maWcuY2hhcnQudHlwZSkpe2wuY29uZmlnLmdyaWQueGF4aXMubGluZXMuc2hvdyYmdGhpcy5fZHJhd0dyaWRMaW5lKHtpOmUseDE6aSx5MTphLHgyOnMseTI6cix4Q291bnQ6byxwYXJlbnQ6bn0pO3ZhciBoPTA7aWYobC5nbG9iYWxzLmhhc1hheGlzR3JvdXBzJiZcImJldHdlZW5cIj09PWwuY29uZmlnLnhheGlzLnRpY2tQbGFjZW1lbnQpe3ZhciBjPWwuZ2xvYmFscy5ncm91cHM7aWYoYyl7Zm9yKHZhciBkPTAsZz0wO2Q8ZSYmZzxjLmxlbmd0aDtnKyspZCs9Y1tnXS5jb2xzO2Q9PT1lJiYoaD0uNipsLmdsb2JhbHMueEF4aXNMYWJlbHNIZWlnaHQpfX1uZXcgVih0aGlzLmN0eCkuZHJhd1hheGlzVGlja3MoaSxoLGwuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwpfX19LHtrZXk6XCJfZHJhd0dyaWRMaW5lXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pLGk9dC54MSxhPXQueTEscz10LngyLHI9dC55MixvPXQueENvdW50LG49dC5wYXJlbnQsbD10aGlzLncsaD0hMSxjPW4ubm9kZS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWdyaWRsaW5lcy1ob3Jpem9udGFsXCIpLGQ9bC5jb25maWcuZ3JpZC5zdHJva2VEYXNoQXJyYXksZz1sLmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXM7KDA9PT1hJiYwPT09cnx8MD09PWkmJjA9PT1zKSYmKGg9ITApLGE9PT1sLmdsb2JhbHMuZ3JpZEhlaWdodCYmcj09PWwuZ2xvYmFscy5ncmlkSGVpZ2h0JiYoaD0hMCksIWwuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fDAhPT1lJiZlIT09by0xfHwoaD0hMCk7dmFyIHU9bmV3IG0odGhpcykuZHJhd0xpbmUoaS0oYz9nOjApLGEscysoYz9nOjApLHIsbC5jb25maWcuZ3JpZC5ib3JkZXJDb2xvcixkKTt1Lm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZ3JpZGxpbmVcIiksaCYmbC5jb25maWcuZ3JpZC5zaG93P3RoaXMuZWxHcmlkQm9yZGVycy5hZGQodSk6bi5hZGQodSl9fSx7a2V5OlwiX2RyYXdHcmlkQmFuZFJlY3RcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmMsaT10LngxLGE9dC55MSxzPXQueDIscj10LnkyLG89dC50eXBlLG49dGhpcy53LGw9bmV3IG0odGhpcy5jdHgpLGg9bi5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzO2lmKFwiY29sdW1uXCIhPT1vfHxcImRhdGV0aW1lXCIhPT1uLmNvbmZpZy54YXhpcy50eXBlKXt2YXIgYz1uLmNvbmZpZy5ncmlkW29dLmNvbG9yc1tlXSxkPWwuZHJhd1JlY3QoaS0oXCJyb3dcIj09PW8/aDowKSxhLHMrKFwicm93XCI9PT1vPzIqaDowKSxyLDAsYyxuLmNvbmZpZy5ncmlkW29dLm9wYWNpdHkpO3RoaXMuZWxnLmFkZChkKSxkLmF0dHIoXCJjbGlwLXBhdGhcIixcInVybCgjZ3JpZFJlY3RNYXNrXCIuY29uY2F0KG4uZ2xvYmFscy5jdWlkLFwiKVwiKSksZC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWdyaWQtXCIuY29uY2F0KG8pKX19fSx7a2V5OlwiX2RyYXdYWUxpbmVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXQueENvdW50LGE9dC50aWNrQW1vdW50LHM9dGhpcy53O2lmKHMuY29uZmlnLmdyaWQueGF4aXMubGluZXMuc2hvd3x8cy5jb25maWcueGF4aXMuYXhpc1RpY2tzLnNob3cpe3ZhciByLG89cy5nbG9iYWxzLnBhZEhvcml6b250YWwsbj1zLmdsb2JhbHMuZ3JpZEhlaWdodDtzLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLmxlbmd0aD9mdW5jdGlvbih0KXtmb3IodmFyIGE9dC54QyxzPXQueDEscj10LnkxLG89dC54MixuPXQueTIsbD0wO2w8YTtsKyspcz1lLnhheGlzTGFiZWxzW2xdLnBvc2l0aW9uLG89ZS54YXhpc0xhYmVsc1tsXS5wb3NpdGlvbixlLl9kcmF3R3JpZExpbmVzKHtpOmwseDE6cyx5MTpyLHgyOm8seTI6bix4Q291bnQ6aSxwYXJlbnQ6ZS5lbGdyaWRMaW5lc1Z9KX0oe3hDOmkseDE6byx5MTowLHgyOnIseTI6bn0pOihzLmdsb2JhbHMuaXNYTnVtZXJpYyYmKGk9cy5nbG9iYWxzLnhBeGlzU2NhbGUucmVzdWx0Lmxlbmd0aCksZnVuY3Rpb24odCl7Zm9yKHZhciBhPXQueEMscj10LngxLG89dC55MSxuPXQueDIsbD10LnkyLGg9MDtoPGErKHMuZ2xvYmFscy5pc1hOdW1lcmljPzA6MSk7aCsrKTA9PT1oJiYxPT09YSYmMT09PXMuZ2xvYmFscy5kYXRhUG9pbnRzJiYobj1yPXMuZ2xvYmFscy5ncmlkV2lkdGgvMiksZS5fZHJhd0dyaWRMaW5lcyh7aTpoLHgxOnIseTE6byx4MjpuLHkyOmwseENvdW50OmkscGFyZW50OmUuZWxncmlkTGluZXNWfSksbj1yKz1zLmdsb2JhbHMuZ3JpZFdpZHRoLyhzLmdsb2JhbHMuaXNYTnVtZXJpYz9hLTE6YSl9KHt4QzppLHgxOm8seTE6MCx4MjpyLHkyOm59KSl9aWYocy5jb25maWcuZ3JpZC55YXhpcy5saW5lcy5zaG93KXt2YXIgbD0wLGg9MCxjPXMuZ2xvYmFscy5ncmlkV2lkdGgsZD1hKzE7dGhpcy5pc1JhbmdlQmFyJiYoZD1zLmdsb2JhbHMubGFiZWxzLmxlbmd0aCk7Zm9yKHZhciBnPTA7ZzxkKyh0aGlzLmlzUmFuZ2VCYXI/MTowKTtnKyspdGhpcy5fZHJhd0dyaWRMaW5lKHtpOmcseENvdW50OmQrKHRoaXMuaXNSYW5nZUJhcj8xOjApLHgxOjAseTE6bCx4MjpjLHkyOmgscGFyZW50OnRoaXMuZWxncmlkTGluZXNIfSksaD1sKz1zLmdsb2JhbHMuZ3JpZEhlaWdodC8odGhpcy5pc1JhbmdlQmFyP2Q6YSl9fX0se2tleTpcIl9kcmF3SW52ZXJ0ZWRYWUxpbmVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC54Q291bnQsaT10aGlzLnc7aWYoaS5jb25maWcuZ3JpZC54YXhpcy5saW5lcy5zaG93fHxpLmNvbmZpZy54YXhpcy5heGlzVGlja3Muc2hvdylmb3IodmFyIGEscz1pLmdsb2JhbHMucGFkSG9yaXpvbnRhbCxyPWkuZ2xvYmFscy5ncmlkSGVpZ2h0LG89MDtvPGUrMTtvKyspe2kuY29uZmlnLmdyaWQueGF4aXMubGluZXMuc2hvdyYmdGhpcy5fZHJhd0dyaWRMaW5lKHtpOm8seENvdW50OmUrMSx4MTpzLHkxOjAseDI6YSx5MjpyLHBhcmVudDp0aGlzLmVsZ3JpZExpbmVzVn0pLG5ldyBWKHRoaXMuY3R4KS5kcmF3WGF4aXNUaWNrcyhzLDAsaS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbCksYT1zPXMraS5nbG9iYWxzLmdyaWRXaWR0aC9lKy4zfWlmKGkuY29uZmlnLmdyaWQueWF4aXMubGluZXMuc2hvdylmb3IodmFyIG49MCxsPTAsaD1pLmdsb2JhbHMuZ3JpZFdpZHRoLGM9MDtjPGkuZ2xvYmFscy5kYXRhUG9pbnRzKzE7YysrKXRoaXMuX2RyYXdHcmlkTGluZSh7aTpjLHhDb3VudDppLmdsb2JhbHMuZGF0YVBvaW50cysxLHgxOjAseTE6bix4MjpoLHkyOmwscGFyZW50OnRoaXMuZWxncmlkTGluZXNIfSksbD1uKz1pLmdsb2JhbHMuZ3JpZEhlaWdodC9pLmdsb2JhbHMuZGF0YVBvaW50c319LHtrZXk6XCJyZW5kZXJHcmlkXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT1uZXcgbSh0aGlzLmN0eCk7dGhpcy5lbGc9ZS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWdyaWRcIn0pLHRoaXMuZWxncmlkTGluZXNIPWUuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1ncmlkbGluZXMtaG9yaXpvbnRhbFwifSksdGhpcy5lbGdyaWRMaW5lc1Y9ZS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWdyaWRsaW5lcy12ZXJ0aWNhbFwifSksdGhpcy5lbEdyaWRCb3JkZXJzPWUuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1ncmlkLWJvcmRlcnNcIn0pLHRoaXMuZWxnLmFkZCh0aGlzLmVsZ3JpZExpbmVzSCksdGhpcy5lbGcuYWRkKHRoaXMuZWxncmlkTGluZXNWKSx0LmNvbmZpZy5ncmlkLnNob3d8fCh0aGlzLmVsZ3JpZExpbmVzVi5oaWRlKCksdGhpcy5lbGdyaWRMaW5lc0guaGlkZSgpLHRoaXMuZWxHcmlkQm9yZGVycy5oaWRlKCkpO2Zvcih2YXIgaSxhPXQuZ2xvYmFscy55QXhpc1NjYWxlLmxlbmd0aD90Lmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQubGVuZ3RoLTE6NSxzPTA7czx0Lmdsb2JhbHMuc2VyaWVzLmxlbmd0aCYmKHZvaWQgMCE9PXQuZ2xvYmFscy55QXhpc1NjYWxlW3NdJiYoYT10Lmdsb2JhbHMueUF4aXNTY2FsZVtzXS5yZXN1bHQubGVuZ3RoLTEpLCEoYT4yKSk7cysrKTtyZXR1cm4hdC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8dGhpcy5pc1JhbmdlQmFyPyhpPXRoaXMueGF4aXNMYWJlbHMubGVuZ3RoLHRoaXMuaXNSYW5nZUJhciYmKGktLSxhPXQuZ2xvYmFscy5sYWJlbHMubGVuZ3RoLHQuY29uZmlnLnhheGlzLnRpY2tBbW91bnQmJnQuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXImJihpPXQuY29uZmlnLnhheGlzLnRpY2tBbW91bnQpKSx0aGlzLl9kcmF3WFlMaW5lcyh7eENvdW50OmksdGlja0Ftb3VudDphfSkpOihpPWEsYT10Lmdsb2JhbHMueFRpY2tBbW91bnQsdGhpcy5fZHJhd0ludmVydGVkWFlMaW5lcyh7eENvdW50OmksdGlja0Ftb3VudDphfSkpLHRoaXMuZHJhd0dyaWRCYW5kcyhpLGEpLHtlbDp0aGlzLmVsZyxlbEdyaWRCb3JkZXJzOnRoaXMuZWxHcmlkQm9yZGVycyx4QXhpc1RpY2tXaWR0aDp0Lmdsb2JhbHMuZ3JpZFdpZHRoL2l9fX0se2tleTpcImRyYXdHcmlkQmFuZHNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztpZih2b2lkIDAhPT1pLmNvbmZpZy5ncmlkLnJvdy5jb2xvcnMmJmkuY29uZmlnLmdyaWQucm93LmNvbG9ycy5sZW5ndGg+MClmb3IodmFyIGE9MCxzPWkuZ2xvYmFscy5ncmlkSGVpZ2h0L2Uscj1pLmdsb2JhbHMuZ3JpZFdpZHRoLG89MCxuPTA7bzxlO28rKyxuKyspbj49aS5jb25maWcuZ3JpZC5yb3cuY29sb3JzLmxlbmd0aCYmKG49MCksdGhpcy5fZHJhd0dyaWRCYW5kUmVjdCh7YzpuLHgxOjAseTE6YSx4MjpyLHkyOnMsdHlwZTpcInJvd1wifSksYSs9aS5nbG9iYWxzLmdyaWRIZWlnaHQvZTtpZih2b2lkIDAhPT1pLmNvbmZpZy5ncmlkLmNvbHVtbi5jb2xvcnMmJmkuY29uZmlnLmdyaWQuY29sdW1uLmNvbG9ycy5sZW5ndGg+MClmb3IodmFyIGw9aS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8XCJjYXRlZ29yeVwiIT09aS5jb25maWcueGF4aXMudHlwZSYmIWkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYz90OnQtMSxoPWkuZ2xvYmFscy5wYWRIb3Jpem9udGFsLGM9aS5nbG9iYWxzLnBhZEhvcml6b250YWwraS5nbG9iYWxzLmdyaWRXaWR0aC9sLGQ9aS5nbG9iYWxzLmdyaWRIZWlnaHQsZz0wLHU9MDtnPHQ7ZysrLHUrKyl1Pj1pLmNvbmZpZy5ncmlkLmNvbHVtbi5jb2xvcnMubGVuZ3RoJiYodT0wKSx0aGlzLl9kcmF3R3JpZEJhbmRSZWN0KHtjOnUseDE6aCx5MTowLHgyOmMseTI6ZCx0eXBlOlwiY29sdW1uXCJ9KSxoKz1pLmdsb2JhbHMuZ3JpZFdpZHRoL2x9fV0pLHR9KCksXz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwibmljZVNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MTAsYT1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106MCxzPWFyZ3VtZW50cy5sZW5ndGg+ND9hcmd1bWVudHNbNF06dm9pZCAwLHI9dGhpcy53LG89TWF0aC5hYnMoZS10KTtpZihcImRhdGFQb2ludHNcIj09PShpPXRoaXMuX2FkanVzdFRpY2tzRm9yU21hbGxSYW5nZShpLGEsbykpJiYoaT1yLmdsb2JhbHMuZGF0YVBvaW50cy0xKSx0PT09TnVtYmVyLk1JTl9WQUxVRSYmMD09PWV8fCF4LmlzTnVtYmVyKHQpJiYheC5pc051bWJlcihlKXx8dD09PU51bWJlci5NSU5fVkFMVUUmJmU9PT0tTnVtYmVyLk1BWF9WQUxVRSlyZXR1cm4gdD0wLGU9aSx0aGlzLmxpbmVhclNjYWxlKHQsZSxpKTt0PmU/KGNvbnNvbGUud2FybihcImF4aXMubWluIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gYXhpcy5tYXhcIiksZT10Ky4xKTp0PT09ZSYmKHQ9MD09PXQ/MDp0LS41LGU9MD09PWU/MjplKy41KTt2YXIgbj1bXTtvPDEmJnMmJihcImNhbmRsZXN0aWNrXCI9PT1yLmNvbmZpZy5jaGFydC50eXBlfHxcImNhbmRsZXN0aWNrXCI9PT1yLmNvbmZpZy5zZXJpZXNbYV0udHlwZXx8XCJib3hQbG90XCI9PT1yLmNvbmZpZy5jaGFydC50eXBlfHxcImJveFBsb3RcIj09PXIuY29uZmlnLnNlcmllc1thXS50eXBlfHxyLmdsb2JhbHMuaXNSYW5nZURhdGEpJiYoZSo9MS4wMSk7dmFyIGw9aSsxO2w8Mj9sPTI6bD4yJiYobC09Mik7dmFyIGg9by9sLGM9TWF0aC5mbG9vcih4LmxvZzEwKGgpKSxkPU1hdGgucG93KDEwLGMpLGc9TWF0aC5yb3VuZChoL2QpO2c8MSYmKGc9MSk7dmFyIHU9ZypkLHA9dSpNYXRoLmZsb29yKHQvdSksZj11Kk1hdGguY2VpbChlL3UpLGI9cDtpZihzJiZvPjIpe2Zvcig7bi5wdXNoKGIpLCEoKGIrPXUpPmYpOyk7cmV0dXJue3Jlc3VsdDpuLG5pY2VNaW46blswXSxuaWNlTWF4Om5bbi5sZW5ndGgtMV19fXZhciB2PXQ7KG49W10pLnB1c2godik7Zm9yKHZhciBtPU1hdGguYWJzKGUtdCkvaSx5PTA7eTw9aTt5Kyspdis9bSxuLnB1c2godik7cmV0dXJuIG5bbi5sZW5ndGgtMl0+PWUmJm4ucG9wKCkse3Jlc3VsdDpuLG5pY2VNaW46blswXSxuaWNlTWF4Om5bbi5sZW5ndGgtMV19fX0se2tleTpcImxpbmVhclNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MTAsYT1hcmd1bWVudHMubGVuZ3RoPjM/YXJndW1lbnRzWzNdOnZvaWQgMCxzPU1hdGguYWJzKGUtdCk7XCJkYXRhUG9pbnRzXCI9PT0oaT10aGlzLl9hZGp1c3RUaWNrc0ZvclNtYWxsUmFuZ2UoaSxhLHMpKSYmKGk9dGhpcy53Lmdsb2JhbHMuZGF0YVBvaW50cy0xKTt2YXIgcj1zL2k7aT09PU51bWJlci5NQVhfVkFMVUUmJihpPTEwLHI9MSk7Zm9yKHZhciBvPVtdLG49dDtpPj0wOylvLnB1c2gobiksbis9cixpLT0xO3JldHVybntyZXN1bHQ6byxuaWNlTWluOm9bMF0sbmljZU1heDpvW28ubGVuZ3RoLTFdfX19LHtrZXk6XCJsb2dhcml0aG1pY1NjYWxlTmljZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtlPD0wJiYoZT1NYXRoLm1heCh0LGkpKSx0PD0wJiYodD1NYXRoLm1pbihlLGkpKTtmb3IodmFyIGE9W10scz1NYXRoLmNlaWwoTWF0aC5sb2coZSkvTWF0aC5sb2coaSkrMSkscj1NYXRoLmZsb29yKE1hdGgubG9nKHQpL01hdGgubG9nKGkpKTtyPHM7cisrKWEucHVzaChNYXRoLnBvdyhpLHIpKTtyZXR1cm57cmVzdWx0OmEsbmljZU1pbjphWzBdLG5pY2VNYXg6YVthLmxlbmd0aC0xXX19fSx7a2V5OlwibG9nYXJpdGhtaWNTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtlPD0wJiYoZT1NYXRoLm1heCh0LGkpKSx0PD0wJiYodD1NYXRoLm1pbihlLGkpKTtmb3IodmFyIGE9W10scz1NYXRoLmxvZyhlKS9NYXRoLmxvZyhpKSxyPU1hdGgubG9nKHQpL01hdGgubG9nKGkpLG89cy1yLG49TWF0aC5yb3VuZChvKSxsPW8vbixoPTAsYz1yO2g8bjtoKyssYys9bClhLnB1c2goTWF0aC5wb3coaSxjKSk7cmV0dXJuIGEucHVzaChNYXRoLnBvdyhpLHMpKSx7cmVzdWx0OmEsbmljZU1pbjp0LG5pY2VNYXg6ZX19fSx7a2V5OlwiX2FkanVzdFRpY2tzRm9yU21hbGxSYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10O2lmKHZvaWQgMCE9PWUmJnRoaXMudy5jb25maWcueWF4aXNbZV0ubGFiZWxzLmZvcm1hdHRlciYmdm9pZCAwPT09dGhpcy53LmNvbmZpZy55YXhpc1tlXS50aWNrQW1vdW50KXt2YXIgcz1OdW1iZXIodGhpcy53LmNvbmZpZy55YXhpc1tlXS5sYWJlbHMuZm9ybWF0dGVyKDEpKTt4LmlzTnVtYmVyKHMpJiYwPT09dGhpcy53Lmdsb2JhbHMueVZhbHVlRGVjaW1hbCYmKGE9TWF0aC5jZWlsKGkpKX1yZXR1cm4gYTx0P2E6dH19LHtrZXk6XCJzZXRZU2NhbGVGb3JJbmRleFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLncuZ2xvYmFscyxzPXRoaXMudy5jb25maWcscj1hLmlzQmFySG9yaXpvbnRhbD9zLnhheGlzOnMueWF4aXNbdF07dm9pZCAwPT09YS55QXhpc1NjYWxlW3RdJiYoYS55QXhpc1NjYWxlW3RdPVtdKTt2YXIgbz1NYXRoLmFicyhpLWUpO2lmKHIubG9nYXJpdGhtaWMmJm88PTUmJihhLmludmFsaWRMb2dTY2FsZT0hMCksci5sb2dhcml0aG1pYyYmbz41KWEuYWxsU2VyaWVzQ29sbGFwc2VkPSExLGEueUF4aXNTY2FsZVt0XT10aGlzLmxvZ2FyaXRobWljU2NhbGUoZSxpLHIubG9nQmFzZSksYS55QXhpc1NjYWxlW3RdPXIuZm9yY2VOaWNlU2NhbGU/dGhpcy5sb2dhcml0aG1pY1NjYWxlTmljZShlLGksci5sb2dCYXNlKTp0aGlzLmxvZ2FyaXRobWljU2NhbGUoZSxpLHIubG9nQmFzZSk7ZWxzZSBpZihpIT09LU51bWJlci5NQVhfVkFMVUUmJnguaXNOdW1iZXIoaSkpaWYoYS5hbGxTZXJpZXNDb2xsYXBzZWQ9ITEsdm9pZCAwPT09ci5taW4mJnZvaWQgMD09PXIubWF4fHxyLmZvcmNlTmljZVNjYWxlKXt2YXIgbj12b2lkIDA9PT1zLnlheGlzW3RdLm1heCYmdm9pZCAwPT09cy55YXhpc1t0XS5taW58fHMueWF4aXNbdF0uZm9yY2VOaWNlU2NhbGU7YS55QXhpc1NjYWxlW3RdPXRoaXMubmljZVNjYWxlKGUsaSxyLnRpY2tBbW91bnQ/ci50aWNrQW1vdW50Om88NSYmbz4xP28rMTo1LHQsbil9ZWxzZSBhLnlBeGlzU2NhbGVbdF09dGhpcy5saW5lYXJTY2FsZShlLGksci50aWNrQW1vdW50LHQpO2Vsc2UgYS55QXhpc1NjYWxlW3RdPXRoaXMubGluZWFyU2NhbGUoMCw1LDUpfX0se2tleTpcInNldFhTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9aS5nbG9iYWxzLHM9aS5jb25maWcueGF4aXMscj1NYXRoLmFicyhlLXQpO3JldHVybiBlIT09LU51bWJlci5NQVhfVkFMVUUmJnguaXNOdW1iZXIoZSk/YS54QXhpc1NjYWxlPXRoaXMubGluZWFyU2NhbGUodCxlLHMudGlja0Ftb3VudD9zLnRpY2tBbW91bnQ6cjw1JiZyPjE/cisxOjUsMCk6YS54QXhpc1NjYWxlPXRoaXMubGluZWFyU2NhbGUoMCw1LDUpLGEueEF4aXNTY2FsZX19LHtrZXk6XCJzZXRNdWx0aXBsZVlTY2FsZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncuZ2xvYmFscyxpPXRoaXMudy5jb25maWcsYT1lLm1pbllBcnIuY29uY2F0KFtdKSxzPWUubWF4WUFyci5jb25jYXQoW10pLHI9W107aS55YXhpcy5mb3JFYWNoKChmdW5jdGlvbihlLG8pe3ZhciBuPW87aS5zZXJpZXMuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXt0Lm5hbWU9PT1lLnNlcmllc05hbWUmJihuPWksbyE9PWk/ci5wdXNoKHtpbmRleDppLHNpbWlsYXJJbmRleDpvLGFscmVhZHlFeGlzdHM6ITB9KTpyLnB1c2goe2luZGV4Oml9KSl9KSk7dmFyIGw9YVtuXSxoPXNbbl07dC5zZXRZU2NhbGVGb3JJbmRleChvLGwsaCl9KSksdGhpcy5zYW1lU2NhbGVJbk11bHRpcGxlQXhlcyhhLHMscil9fSx7a2V5Olwic2FtZVNjYWxlSW5NdWx0aXBsZUF4ZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcyxzPXRoaXMudy5jb25maWcscj10aGlzLncuZ2xvYmFscyxvPVtdO2kuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5hbHJlYWR5RXhpc3RzJiYodm9pZCAwPT09b1t0LmluZGV4XSYmKG9bdC5pbmRleF09W10pLG9bdC5pbmRleF0ucHVzaCh0LmluZGV4KSxvW3QuaW5kZXhdLnB1c2godC5zaW1pbGFySW5kZXgpKX0pKSxyLnlBeGlzU2FtZVNjYWxlSW5kaWNlcz1vLG8uZm9yRWFjaCgoZnVuY3Rpb24odCxlKXtvLmZvckVhY2goKGZ1bmN0aW9uKGksYSl7dmFyIHMscjtlIT09YSYmKHM9dCxyPWkscy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybi0xIT09ci5pbmRleE9mKHQpfSkpKS5sZW5ndGg+MCYmKG9bZV09b1tlXS5jb25jYXQob1thXSkpfSkpfSkpO3ZhciBuPW8ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKGUsaSl7cmV0dXJuIHQuaW5kZXhPZihlKT09PWl9KSl9KSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5zb3J0KCl9KSk7bz1vLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuISF0fSkpO3ZhciBsPW4uc2xpY2UoKSxoPWwubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCl9KSk7bD1sLmZpbHRlcigoZnVuY3Rpb24odCxlKXtyZXR1cm4gaC5pbmRleE9mKEpTT04uc3RyaW5naWZ5KHQpKT09PWV9KSk7dmFyIGM9W10sZD1bXTt0LmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7bC5mb3JFYWNoKChmdW5jdGlvbihhLHMpe2EuaW5kZXhPZihpKT4tMSYmKHZvaWQgMD09PWNbc10mJihjW3NdPVtdLGRbc109W10pLGNbc10ucHVzaCh7a2V5OmksdmFsdWU6dH0pLGRbc10ucHVzaCh7a2V5OmksdmFsdWU6ZVtpXX0pKX0pKX0pKTt2YXIgZz1BcnJheS5hcHBseShudWxsLEFycmF5KGwubGVuZ3RoKSkubWFwKE51bWJlci5wcm90b3R5cGUudmFsdWVPZixOdW1iZXIuTUlOX1ZBTFVFKSx1PUFycmF5LmFwcGx5KG51bGwsQXJyYXkobC5sZW5ndGgpKS5tYXAoTnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mLC1OdW1iZXIuTUFYX1ZBTFVFKTtjLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5mb3JFYWNoKChmdW5jdGlvbih0LGkpe2dbZV09TWF0aC5taW4odC52YWx1ZSxnW2VdKX0pKX0pKSxkLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5mb3JFYWNoKChmdW5jdGlvbih0LGkpe3VbZV09TWF0aC5tYXgodC52YWx1ZSx1W2VdKX0pKX0pKSx0LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7ZC5mb3JFYWNoKChmdW5jdGlvbih0LGkpe3ZhciBvPWdbaV0sbj11W2ldO3MuY2hhcnQuc3RhY2tlZCYmKG49MCx0LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC52YWx1ZSE9PS1OdW1iZXIuTUFYX1ZBTFVFJiYobis9dC52YWx1ZSksbyE9PU51bWJlci5NSU5fVkFMVUUmJihvKz1jW2ldW2VdLnZhbHVlKX0pKSksdC5mb3JFYWNoKChmdW5jdGlvbihpLGwpe3RbbF0ua2V5PT09ZSYmKHZvaWQgMCE9PXMueWF4aXNbZV0ubWluJiYobz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBzLnlheGlzW2VdLm1pbj9zLnlheGlzW2VdLm1pbihyLm1pblkpOnMueWF4aXNbZV0ubWluKSx2b2lkIDAhPT1zLnlheGlzW2VdLm1heCYmKG49XCJmdW5jdGlvblwiPT10eXBlb2Ygcy55YXhpc1tlXS5tYXg/cy55YXhpc1tlXS5tYXgoci5tYXhZKTpzLnlheGlzW2VdLm1heCksYS5zZXRZU2NhbGVGb3JJbmRleChlLG8sbikpfSkpfSkpfSkpfX0se2tleTpcImF1dG9TY2FsZVlcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dHx8KHQ9dGhpcyk7dmFyIGE9dC53O2lmKGEuZ2xvYmFscy5pc011bHRpcGxlWUF4aXN8fGEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoKXJldHVybiBjb25zb2xlLndhcm4oXCJhdXRvU2NhbGVZYXhpcyBpcyBub3Qgc3VwcG9ydGVkIGluIGEgbXVsdGkteWF4aXMgY2hhcnQuXCIpLGU7dmFyIHM9YS5nbG9iYWxzLnNlcmllc1hbMF0scj1hLmNvbmZpZy5jaGFydC5zdGFja2VkO3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKHQsbyl7Zm9yKHZhciBuPTAsbD0wO2w8cy5sZW5ndGg7bCsrKWlmKHNbbF0+PWkueGF4aXMubWluKXtuPWw7YnJlYWt9dmFyIGgsYyxkPWEuZ2xvYmFscy5taW5ZQXJyW29dLGc9YS5nbG9iYWxzLm1heFlBcnJbb10sdT1hLmdsb2JhbHMuc3RhY2tlZFNlcmllc1RvdGFsczthLmdsb2JhbHMuc2VyaWVzLmZvckVhY2goKGZ1bmN0aW9uKG8sbCl7dmFyIHA9b1tuXTtyPyhwPXVbbl0saD1jPXAsdS5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3NbZV08PWkueGF4aXMubWF4JiZzW2VdPj1pLnhheGlzLm1pbiYmKHQ+YyYmbnVsbCE9PXQmJihjPXQpLG9bZV08aCYmbnVsbCE9PW9bZV0mJihoPW9bZV0pKX0pKSk6KGg9Yz1wLG8uZm9yRWFjaCgoZnVuY3Rpb24odCxlKXtpZihzW2VdPD1pLnhheGlzLm1heCYmc1tlXT49aS54YXhpcy5taW4pe3ZhciByPXQsbz10O2EuZ2xvYmFscy5zZXJpZXMuZm9yRWFjaCgoZnVuY3Rpb24oaSxhKXtudWxsIT09dCYmKHI9TWF0aC5taW4oaVtlXSxyKSxvPU1hdGgubWF4KGlbZV0sbykpfSkpLG8+YyYmbnVsbCE9PW8mJihjPW8pLHI8aCYmbnVsbCE9PXImJihoPXIpfX0pKSksdm9pZCAwPT09aCYmdm9pZCAwPT09YyYmKGg9ZCxjPWcpLGMqPWM8MD8uOToxLjEsMD09PShoKj1oPDA/MS4xOi45KSYmMD09PWMmJihoPS0xLGM9MSksYzwwJiZjPGcmJihjPWcpLGg8MCYmaD5kJiYoaD1kKSxlLmxlbmd0aD4xPyhlW2xdLm1pbj12b2lkIDA9PT10Lm1pbj9oOnQubWluLGVbbF0ubWF4PXZvaWQgMD09PXQubWF4P2M6dC5tYXgpOihlWzBdLm1pbj12b2lkIDA9PT10Lm1pbj9oOnQubWluLGVbMF0ubWF4PXZvaWQgMD09PXQubWF4P2M6dC5tYXgpfSkpfSkpLGV9fV0pLHR9KCksVT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnNjYWxlcz1uZXcgXyhlKX1yZXR1cm4gcih0LFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZXRZUmFuZ2UoKSx0aGlzLnNldFhSYW5nZSgpLHRoaXMuc2V0WlJhbmdlKCl9fSx7a2V5OlwiZ2V0TWluWU1heFlcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06TnVtYmVyLk1BWF9WQUxVRSxpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTotTnVtYmVyLk1BWF9WQUxVRSxhPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpudWxsLHM9dGhpcy53LmNvbmZpZyxyPXRoaXMudy5nbG9iYWxzLG89LU51bWJlci5NQVhfVkFMVUUsbj1OdW1iZXIuTUlOX1ZBTFVFO251bGw9PT1hJiYoYT10KzEpO3ZhciBsPXIuc2VyaWVzLGg9bCxjPWw7XCJjYW5kbGVzdGlja1wiPT09cy5jaGFydC50eXBlPyhoPXIuc2VyaWVzQ2FuZGxlTCxjPXIuc2VyaWVzQ2FuZGxlSCk6XCJib3hQbG90XCI9PT1zLmNoYXJ0LnR5cGU/KGg9ci5zZXJpZXNDYW5kbGVPLGM9ci5zZXJpZXNDYW5kbGVDKTpyLmlzUmFuZ2VEYXRhJiYoaD1yLnNlcmllc1JhbmdlU3RhcnQsYz1yLnNlcmllc1JhbmdlRW5kKTtmb3IodmFyIGQ9dDtkPGE7ZCsrKXtyLmRhdGFQb2ludHM9TWF0aC5tYXgoci5kYXRhUG9pbnRzLGxbZF0ubGVuZ3RoKSxyLmNhdGVnb3J5TGFiZWxzLmxlbmd0aCYmKHIuZGF0YVBvaW50cz1yLmNhdGVnb3J5TGFiZWxzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXR9KSkubGVuZ3RoKTtmb3IodmFyIGc9MDtnPHIuc2VyaWVzW2RdLmxlbmd0aDtnKyspe3ZhciB1PWxbZF1bZ107bnVsbCE9PXUmJnguaXNOdW1iZXIodSk/KHZvaWQgMCE9PWNbZF1bZ10mJihvPU1hdGgubWF4KG8sY1tkXVtnXSksZT1NYXRoLm1pbihlLGNbZF1bZ10pKSx2b2lkIDAhPT1oW2RdW2ddJiYoZT1NYXRoLm1pbihlLGhbZF1bZ10pLGk9TWF0aC5tYXgoaSxoW2RdW2ddKSksXCJjYW5kbGVzdGlja1wiIT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlJiZcImJveFBsb3RcIiE9PXRoaXMudy5jb25maWcuY2hhcnQudHlwZSYmXCJyYW5nZUFyZWFcIj09PXRoaXMudy5jb25maWcuY2hhcnQudHlwZSYmXCJyYW5nZUJhclwiPT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlfHwoXCJjYW5kbGVzdGlja1wiIT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlJiZcImJveFBsb3RcIiE9PXRoaXMudy5jb25maWcuY2hhcnQudHlwZXx8dm9pZCAwIT09ci5zZXJpZXNDYW5kbGVDW2RdW2ddJiYobz1NYXRoLm1heChvLHIuc2VyaWVzQ2FuZGxlT1tkXVtnXSksbz1NYXRoLm1heChvLHIuc2VyaWVzQ2FuZGxlSFtkXVtnXSksbz1NYXRoLm1heChvLHIuc2VyaWVzQ2FuZGxlTFtkXVtnXSksbz1NYXRoLm1heChvLHIuc2VyaWVzQ2FuZGxlQ1tkXVtnXSksXCJib3hQbG90XCI9PT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUmJihvPU1hdGgubWF4KG8sci5zZXJpZXNDYW5kbGVNW2RdW2ddKSkpLCFzLnNlcmllc1tkXS50eXBlfHxcImNhbmRsZXN0aWNrXCI9PT1zLnNlcmllc1tkXS50eXBlJiZcImJveFBsb3RcIj09PXMuc2VyaWVzW2RdLnR5cGUmJlwicmFuZ2VBcmVhXCI9PT1zLnNlcmllc1tkXS50eXBlJiZcInJhbmdlQmFyXCI9PT1zLnNlcmllc1tkXS50eXBlfHwobz1NYXRoLm1heChvLHIuc2VyaWVzW2RdW2ddKSxlPU1hdGgubWluKGUsci5zZXJpZXNbZF1bZ10pKSxpPW8pLHIuc2VyaWVzR29hbHNbZF0mJnIuc2VyaWVzR29hbHNbZF1bZ10mJkFycmF5LmlzQXJyYXkoci5zZXJpZXNHb2Fsc1tkXVtnXSkmJnIuc2VyaWVzR29hbHNbZF1bZ10uZm9yRWFjaCgoZnVuY3Rpb24odCl7biE9PU51bWJlci5NSU5fVkFMVUUmJihuPU1hdGgubWluKG4sdC52YWx1ZSksZT1uKSxvPU1hdGgubWF4KG8sdC52YWx1ZSksaT1vfSkpLHguaXNGbG9hdCh1KSYmKHU9eC5ub0V4cG9uZW50cyh1KSxyLnlWYWx1ZURlY2ltYWw9TWF0aC5tYXgoci55VmFsdWVEZWNpbWFsLHUudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMV0ubGVuZ3RoKSksbj5oW2RdW2ddJiZoW2RdW2ddPDAmJihuPWhbZF1bZ10pKTpyLmhhc051bGxWYWx1ZXM9ITB9fXJldHVyblwicmFuZ2VCYXJcIj09PXMuY2hhcnQudHlwZSYmci5zZXJpZXNSYW5nZVN0YXJ0Lmxlbmd0aCYmci5pc0Jhckhvcml6b250YWwmJihuPWUpLFwiYmFyXCI9PT1zLmNoYXJ0LnR5cGUmJihuPDAmJm88MCYmKG89MCksbj09PU51bWJlci5NSU5fVkFMVUUmJihuPTApKSx7bWluWTpuLG1heFk6byxsb3dlc3RZOmUsaGlnaGVzdFk6aX19fSx7a2V5Olwic2V0WVJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscyxlPXRoaXMudy5jb25maWc7dC5tYXhZPS1OdW1iZXIuTUFYX1ZBTFVFLHQubWluWT1OdW1iZXIuTUlOX1ZBTFVFO3ZhciBpPU51bWJlci5NQVhfVkFMVUU7aWYodC5pc011bHRpcGxlWUF4aXMpZm9yKHZhciBhPTA7YTx0LnNlcmllcy5sZW5ndGg7YSsrKXt2YXIgcz10aGlzLmdldE1pbllNYXhZKGEsaSxudWxsLGErMSk7dC5taW5ZQXJyLnB1c2gocy5taW5ZKSx0Lm1heFlBcnIucHVzaChzLm1heFkpLGk9cy5sb3dlc3RZfXZhciByPXRoaXMuZ2V0TWluWU1heFkoMCxpLG51bGwsdC5zZXJpZXMubGVuZ3RoKTtpZih0Lm1pblk9ci5taW5ZLHQubWF4WT1yLm1heFksaT1yLmxvd2VzdFksZS5jaGFydC5zdGFja2VkJiZ0aGlzLl9zZXRTdGFja2VkTWluTWF4KCksKFwibGluZVwiPT09ZS5jaGFydC50eXBlfHxcImFyZWFcIj09PWUuY2hhcnQudHlwZXx8XCJjYW5kbGVzdGlja1wiPT09ZS5jaGFydC50eXBlfHxcImJveFBsb3RcIj09PWUuY2hhcnQudHlwZXx8XCJyYW5nZUJhclwiPT09ZS5jaGFydC50eXBlJiYhdC5pc0Jhckhvcml6b250YWwpJiZ0Lm1pblk9PT1OdW1iZXIuTUlOX1ZBTFVFJiZpIT09LU51bWJlci5NQVhfVkFMVUUmJmkhPT10Lm1heFkpe3ZhciBvPXQubWF4WS1pOyhpPj0wJiZpPD0xMHx8dm9pZCAwIT09ZS55YXhpc1swXS5taW58fHZvaWQgMCE9PWUueWF4aXNbMF0ubWF4KSYmKG89MCksdC5taW5ZPWktNSpvLzEwMCxpPjAmJnQubWluWTwwJiYodC5taW5ZPTApLHQubWF4WT10Lm1heFkrNSpvLzEwMH1pZihlLnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7dm9pZCAwIT09ZS5tYXgmJihcIm51bWJlclwiPT10eXBlb2YgZS5tYXg/dC5tYXhZQXJyW2ldPWUubWF4OlwiZnVuY3Rpb25cIj09dHlwZW9mIGUubWF4JiYodC5tYXhZQXJyW2ldPWUubWF4KHQuaXNNdWx0aXBsZVlBeGlzP3QubWF4WUFycltpXTp0Lm1heFkpKSx0Lm1heFk9dC5tYXhZQXJyW2ldKSx2b2lkIDAhPT1lLm1pbiYmKFwibnVtYmVyXCI9PXR5cGVvZiBlLm1pbj90Lm1pbllBcnJbaV09ZS5taW46XCJmdW5jdGlvblwiPT10eXBlb2YgZS5taW4mJih0Lm1pbllBcnJbaV09ZS5taW4odC5pc011bHRpcGxlWUF4aXM/dC5taW5ZQXJyW2ldPT09TnVtYmVyLk1JTl9WQUxVRT8wOnQubWluWUFycltpXTp0Lm1pblkpKSx0Lm1pblk9dC5taW5ZQXJyW2ldKX0pKSx0LmlzQmFySG9yaXpvbnRhbCl7W1wibWluXCIsXCJtYXhcIl0uZm9yRWFjaCgoZnVuY3Rpb24oaSl7dm9pZCAwIT09ZS54YXhpc1tpXSYmXCJudW1iZXJcIj09dHlwZW9mIGUueGF4aXNbaV0mJihcIm1pblwiPT09aT90Lm1pblk9ZS54YXhpc1tpXTp0Lm1heFk9ZS54YXhpc1tpXSl9KSl9cmV0dXJuIHQuaXNNdWx0aXBsZVlBeGlzPyh0aGlzLnNjYWxlcy5zZXRNdWx0aXBsZVlTY2FsZXMoKSx0Lm1pblk9aSx0LnlBeGlzU2NhbGUuZm9yRWFjaCgoZnVuY3Rpb24oZSxpKXt0Lm1pbllBcnJbaV09ZS5uaWNlTWluLHQubWF4WUFycltpXT1lLm5pY2VNYXh9KSkpOih0aGlzLnNjYWxlcy5zZXRZU2NhbGVGb3JJbmRleCgwLHQubWluWSx0Lm1heFkpLHQubWluWT10LnlBeGlzU2NhbGVbMF0ubmljZU1pbix0Lm1heFk9dC55QXhpc1NjYWxlWzBdLm5pY2VNYXgsdC5taW5ZQXJyWzBdPXQueUF4aXNTY2FsZVswXS5uaWNlTWluLHQubWF4WUFyclswXT10LnlBeGlzU2NhbGVbMF0ubmljZU1heCkse21pblk6dC5taW5ZLG1heFk6dC5tYXhZLG1pbllBcnI6dC5taW5ZQXJyLG1heFlBcnI6dC5tYXhZQXJyLHlBeGlzU2NhbGU6dC55QXhpc1NjYWxlfX19LHtrZXk6XCJzZXRYUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzLGU9dGhpcy53LmNvbmZpZyxpPVwibnVtZXJpY1wiPT09ZS54YXhpcy50eXBlfHxcImRhdGV0aW1lXCI9PT1lLnhheGlzLnR5cGV8fFwiY2F0ZWdvcnlcIj09PWUueGF4aXMudHlwZSYmIXQubm9MYWJlbHNQcm92aWRlZHx8dC5ub0xhYmVsc1Byb3ZpZGVkfHx0LmlzWE51bWVyaWM7aWYodC5pc1hOdW1lcmljJiZmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8dC5zZXJpZXMubGVuZ3RoO2UrKylpZih0LmxhYmVsc1tlXSlmb3IodmFyIGk9MDtpPHQubGFiZWxzW2VdLmxlbmd0aDtpKyspbnVsbCE9PXQubGFiZWxzW2VdW2ldJiZ4LmlzTnVtYmVyKHQubGFiZWxzW2VdW2ldKSYmKHQubWF4WD1NYXRoLm1heCh0Lm1heFgsdC5sYWJlbHNbZV1baV0pLHQuaW5pdGlhbE1heFg9TWF0aC5tYXgodC5tYXhYLHQubGFiZWxzW2VdW2ldKSx0Lm1pblg9TWF0aC5taW4odC5taW5YLHQubGFiZWxzW2VdW2ldKSx0LmluaXRpYWxNaW5YPU1hdGgubWluKHQubWluWCx0LmxhYmVsc1tlXVtpXSkpfSgpLHQubm9MYWJlbHNQcm92aWRlZCYmMD09PWUueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGgmJih0Lm1heFg9dC5sYWJlbHNbdC5sYWJlbHMubGVuZ3RoLTFdLHQuaW5pdGlhbE1heFg9dC5sYWJlbHNbdC5sYWJlbHMubGVuZ3RoLTFdLHQubWluWD0xLHQuaW5pdGlhbE1pblg9MSksdC5pc1hOdW1lcmljfHx0Lm5vTGFiZWxzUHJvdmlkZWR8fHQuZGF0YUZvcm1hdFhOdW1lcmljKXt2YXIgYTtpZih2b2lkIDA9PT1lLnhheGlzLnRpY2tBbW91bnQ/KGE9TWF0aC5yb3VuZCh0LnN2Z1dpZHRoLzE1MCksXCJudW1lcmljXCI9PT1lLnhheGlzLnR5cGUmJnQuZGF0YVBvaW50czwzMCYmKGE9dC5kYXRhUG9pbnRzLTEpLGE+dC5kYXRhUG9pbnRzJiYwIT09dC5kYXRhUG9pbnRzJiYoYT10LmRhdGFQb2ludHMtMSkpOlwiZGF0YVBvaW50c1wiPT09ZS54YXhpcy50aWNrQW1vdW50Pyh0LnNlcmllcy5sZW5ndGg+MSYmKGE9dC5zZXJpZXNbdC5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGgtMSksdC5pc1hOdW1lcmljJiYoYT10Lm1heFgtdC5taW5YLTEpKTphPWUueGF4aXMudGlja0Ftb3VudCx0LnhUaWNrQW1vdW50PWEsdm9pZCAwIT09ZS54YXhpcy5tYXgmJlwibnVtYmVyXCI9PXR5cGVvZiBlLnhheGlzLm1heCYmKHQubWF4WD1lLnhheGlzLm1heCksdm9pZCAwIT09ZS54YXhpcy5taW4mJlwibnVtYmVyXCI9PXR5cGVvZiBlLnhheGlzLm1pbiYmKHQubWluWD1lLnhheGlzLm1pbiksdm9pZCAwIT09ZS54YXhpcy5yYW5nZSYmKHQubWluWD10Lm1heFgtZS54YXhpcy5yYW5nZSksdC5taW5YIT09TnVtYmVyLk1BWF9WQUxVRSYmdC5tYXhYIT09LU51bWJlci5NQVhfVkFMVUUpaWYoZS54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJiF0LmRhdGFGb3JtYXRYTnVtZXJpYyl7Zm9yKHZhciBzPVtdLHI9dC5taW5YLTE7cjx0Lm1heFg7cisrKXMucHVzaChyKzEpO3QueEF4aXNTY2FsZT17cmVzdWx0OnMsbmljZU1pbjpzWzBdLG5pY2VNYXg6c1tzLmxlbmd0aC0xXX19ZWxzZSB0LnhBeGlzU2NhbGU9dGhpcy5zY2FsZXMuc2V0WFNjYWxlKHQubWluWCx0Lm1heFgpO2Vsc2UgdC54QXhpc1NjYWxlPXRoaXMuc2NhbGVzLmxpbmVhclNjYWxlKDEsYSxhKSx0Lm5vTGFiZWxzUHJvdmlkZWQmJnQubGFiZWxzLmxlbmd0aD4wJiYodC54QXhpc1NjYWxlPXRoaXMuc2NhbGVzLmxpbmVhclNjYWxlKDEsdC5sYWJlbHMubGVuZ3RoLGEtMSksdC5zZXJpZXNYPXQubGFiZWxzLnNsaWNlKCkpO2kmJih0LmxhYmVscz10LnhBeGlzU2NhbGUucmVzdWx0LnNsaWNlKCkpfXJldHVybiB0LmlzQmFySG9yaXpvbnRhbCYmdC5sYWJlbHMubGVuZ3RoJiYodC54VGlja0Ftb3VudD10LmxhYmVscy5sZW5ndGgpLHRoaXMuX2hhbmRsZVNpbmdsZURhdGFQb2ludCgpLHRoaXMuX2dldE1pblhEaWZmKCkse21pblg6dC5taW5YLG1heFg6dC5tYXhYfX19LHtrZXk6XCJzZXRaUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzO2lmKHQuaXNEYXRhWFlaKWZvcih2YXIgZT0wO2U8dC5zZXJpZXMubGVuZ3RoO2UrKylpZih2b2lkIDAhPT10LnNlcmllc1pbZV0pZm9yKHZhciBpPTA7aTx0LnNlcmllc1pbZV0ubGVuZ3RoO2krKyludWxsIT09dC5zZXJpZXNaW2VdW2ldJiZ4LmlzTnVtYmVyKHQuc2VyaWVzWltlXVtpXSkmJih0Lm1heFo9TWF0aC5tYXgodC5tYXhaLHQuc2VyaWVzWltlXVtpXSksdC5taW5aPU1hdGgubWluKHQubWluWix0LnNlcmllc1pbZV1baV0pKX19LHtrZXk6XCJfaGFuZGxlU2luZ2xlRGF0YVBvaW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscyxlPXRoaXMudy5jb25maWc7aWYodC5taW5YPT09dC5tYXhYKXt2YXIgaT1uZXcgSSh0aGlzLmN0eCk7aWYoXCJkYXRldGltZVwiPT09ZS54YXhpcy50eXBlKXt2YXIgYT1pLmdldERhdGUodC5taW5YKTtlLnhheGlzLmxhYmVscy5kYXRldGltZVVUQz9hLnNldFVUQ0RhdGUoYS5nZXRVVENEYXRlKCktMik6YS5zZXREYXRlKGEuZ2V0RGF0ZSgpLTIpLHQubWluWD1uZXcgRGF0ZShhKS5nZXRUaW1lKCk7dmFyIHM9aS5nZXREYXRlKHQubWF4WCk7ZS54YXhpcy5sYWJlbHMuZGF0ZXRpbWVVVEM/cy5zZXRVVENEYXRlKHMuZ2V0VVRDRGF0ZSgpKzIpOnMuc2V0RGF0ZShzLmdldERhdGUoKSsyKSx0Lm1heFg9bmV3IERhdGUocykuZ2V0VGltZSgpfWVsc2UoXCJudW1lcmljXCI9PT1lLnhheGlzLnR5cGV8fFwiY2F0ZWdvcnlcIj09PWUueGF4aXMudHlwZSYmIXQubm9MYWJlbHNQcm92aWRlZCkmJih0Lm1pblg9dC5taW5YLTIsdC5pbml0aWFsTWluWD10Lm1pblgsdC5tYXhYPXQubWF4WCsyLHQuaW5pdGlhbE1heFg9dC5tYXhYKX19fSx7a2V5OlwiX2dldE1pblhEaWZmXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFsczt0LmlzWE51bWVyaWMmJnQuc2VyaWVzWC5mb3JFYWNoKChmdW5jdGlvbihlLGkpezE9PT1lLmxlbmd0aCYmZS5wdXNoKHQuc2VyaWVzWFt0Lm1heFZhbHNJbkFycmF5SW5kZXhdW3Quc2VyaWVzWFt0Lm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aC0xXSk7dmFyIGE9ZS5zbGljZSgpO2Euc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC1lfSkpLGEuZm9yRWFjaCgoZnVuY3Rpb24oZSxpKXtpZihpPjApe3ZhciBzPWUtYVtpLTFdO3M+MCYmKHQubWluWERpZmY9TWF0aC5taW4ocyx0Lm1pblhEaWZmKSl9fSkpLDEhPT10LmRhdGFQb2ludHMmJnQubWluWERpZmYhPT1OdW1iZXIuTUFYX1ZBTFVFfHwodC5taW5YRGlmZj0uNSl9KSl9fSx7a2V5OlwiX3NldFN0YWNrZWRNaW5NYXhcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncuZ2xvYmFscztpZihlLnNlcmllcy5sZW5ndGgpe3ZhciBpPWUuc2VyaWVzR3JvdXBzO2kubGVuZ3RofHwoaT1bdGhpcy53LmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5uYW1lfSkpXSk7dmFyIGE9e30scz17fTtpLmZvckVhY2goKGZ1bmN0aW9uKGkpe2FbaV09W10sc1tpXT1bXSx0LncuY29uZmlnLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkuaW5kZXhPZih0Lm5hbWUpPi0xP2U6bnVsbH0pKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09dH0pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtmb3IodmFyIHI9MDtyPGUuc2VyaWVzW2UubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoO3IrKyl2b2lkIDA9PT1hW2ldW3JdJiYoYVtpXVtyXT0wLHNbaV1bcl09MCksbnVsbCE9PWUuc2VyaWVzW3RdW3JdJiZ4LmlzTnVtYmVyKGUuc2VyaWVzW3RdW3JdKSYmKGUuc2VyaWVzW3RdW3JdPjA/YVtpXVtyXSs9cGFyc2VGbG9hdChlLnNlcmllc1t0XVtyXSkrMWUtNDpzW2ldW3JdKz1wYXJzZUZsb2F0KGUuc2VyaWVzW3RdW3JdKSl9KSl9KSksT2JqZWN0LmVudHJpZXMoYSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGk9Zyh0LDEpWzBdO2FbaV0uZm9yRWFjaCgoZnVuY3Rpb24odCxyKXtlLm1heFk9TWF0aC5tYXgoZS5tYXhZLGFbaV1bcl0pLGUubWluWT1NYXRoLm1pbihlLm1pblksc1tpXVtyXSl9KSl9KSl9fX1dKSx0fSgpLHE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy5lbGdyaWQ9aSx0aGlzLnc9ZS53O3ZhciBzPXRoaXMudzt0aGlzLnhheGlzRm9udFNpemU9cy5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplLHRoaXMuYXhpc0ZvbnRGYW1pbHk9cy5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksdGhpcy54YXhpc0ZvcmVDb2xvcnM9cy5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmNvbG9ycyx0aGlzLmlzQ2F0ZWdvcnlCYXJIb3Jpem9udGFsPVwiYmFyXCI9PT1zLmNvbmZpZy5jaGFydC50eXBlJiZzLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbCx0aGlzLnhBeGlzb2ZmWD0wLFwiYm90dG9tXCI9PT1zLmNvbmZpZy54YXhpcy5wb3NpdGlvbiYmKHRoaXMueEF4aXNvZmZYPXMuZ2xvYmFscy5ncmlkSGVpZ2h0KSx0aGlzLmRyYXduTGFiZWxzPVtdLHRoaXMuYXhlc1V0aWxzPW5ldyBCKGUpfXJldHVybiByKHQsW3trZXk6XCJkcmF3WWF4aXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53LGE9bmV3IG0odGhpcy5jdHgpLHM9aS5jb25maWcueWF4aXNbdF0ubGFiZWxzLnN0eWxlLHI9cy5mb250U2l6ZSxvPXMuZm9udEZhbWlseSxuPXMuZm9udFdlaWdodCxsPWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy15YXhpc1wiLHJlbDp0LHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIitpLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW3RdK1wiLCAwKVwifSk7aWYodGhpcy5heGVzVXRpbHMuaXNZQXhpc0hpZGRlbih0KSlyZXR1cm4gbDt2YXIgaD1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXMtdGV4dHMtZ1wifSk7bC5hZGQoaCk7dmFyIGM9aS5nbG9iYWxzLnlBeGlzU2NhbGVbdF0ucmVzdWx0Lmxlbmd0aC0xLGQ9aS5nbG9iYWxzLmdyaWRIZWlnaHQvYyxnPWkuZ2xvYmFscy50cmFuc2xhdGVZLHU9aS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbdF0scD1pLmdsb2JhbHMueUF4aXNTY2FsZVt0XS5yZXN1bHQuc2xpY2UoKTtwPXRoaXMuYXhlc1V0aWxzLmNoZWNrRm9yUmV2ZXJzZWRMYWJlbHModCxwKTt2YXIgZj1cIlwiO2lmKGkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5zaG93KWZvcih2YXIgeD1mdW5jdGlvbihsKXt2YXIgeD1wW2xdO3g9dSh4LGwsaSk7dmFyIGI9aS5jb25maWcueWF4aXNbdF0ubGFiZWxzLnBhZGRpbmc7aS5jb25maWcueWF4aXNbdF0ub3Bwb3NpdGUmJjAhPT1pLmNvbmZpZy55YXhpcy5sZW5ndGgmJihiKj0tMSk7dmFyIHY9XCJlbmRcIjtpLmNvbmZpZy55YXhpc1t0XS5vcHBvc2l0ZSYmKHY9XCJzdGFydFwiKSxcImxlZnRcIj09PWkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5hbGlnbj92PVwic3RhcnRcIjpcImNlbnRlclwiPT09aS5jb25maWcueWF4aXNbdF0ubGFiZWxzLmFsaWduP3Y9XCJtaWRkbGVcIjpcInJpZ2h0XCI9PT1pLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMuYWxpZ24mJih2PVwiZW5kXCIpO3ZhciBtPWUuYXhlc1V0aWxzLmdldFlBeGlzRm9yZUNvbG9yKHMuY29sb3JzLHQpLHk9YS5kcmF3VGV4dCh7eDpiLHk6ZytjLzEwK2kuY29uZmlnLnlheGlzW3RdLmxhYmVscy5vZmZzZXRZKzEsdGV4dDp4LHRleHRBbmNob3I6dixmb250U2l6ZTpyLGZvbnRGYW1pbHk6byxmb250V2VpZ2h0Om4sbWF4V2lkdGg6aS5jb25maWcueWF4aXNbdF0ubGFiZWxzLm1heFdpZHRoLGZvcmVDb2xvcjpBcnJheS5pc0FycmF5KG0pP21bbF06bSxpc1BsYWluVGV4dDohMSxjc3NDbGFzczpcImFwZXhjaGFydHMteWF4aXMtbGFiZWwgXCIrcy5jc3NDbGFzc30pO2w9PT1jJiYoZj15KSxoLmFkZCh5KTt2YXIgdz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoaS5nbG9iYWxzLlNWR05TLFwidGl0bGVcIik7aWYody50ZXh0Q29udGVudD1BcnJheS5pc0FycmF5KHgpP3guam9pbihcIiBcIik6eCx5Lm5vZGUuYXBwZW5kQ2hpbGQodyksMCE9PWkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5yb3RhdGUpe3ZhciBrPWEucm90YXRlQXJvdW5kQ2VudGVyKGYubm9kZSksQT1hLnJvdGF0ZUFyb3VuZENlbnRlcih5Lm5vZGUpO3kubm9kZS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInJvdGF0ZShcIi5jb25jYXQoaS5jb25maWcueWF4aXNbdF0ubGFiZWxzLnJvdGF0ZSxcIiBcIikuY29uY2F0KGsueCxcIiBcIikuY29uY2F0KEEueSxcIilcIikpfWcrPWR9LGI9YztiPj0wO2ItLSl4KGIpO2lmKHZvaWQgMCE9PWkuY29uZmlnLnlheGlzW3RdLnRpdGxlLnRleHQpe3ZhciB2PWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy10aXRsZVwifSkseT0wO2kuY29uZmlnLnlheGlzW3RdLm9wcG9zaXRlJiYoeT1pLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW3RdKTt2YXIgdz1hLmRyYXdUZXh0KHt4OnkseTppLmdsb2JhbHMuZ3JpZEhlaWdodC8yK2kuZ2xvYmFscy50cmFuc2xhdGVZK2kuY29uZmlnLnlheGlzW3RdLnRpdGxlLm9mZnNldFksdGV4dDppLmNvbmZpZy55YXhpc1t0XS50aXRsZS50ZXh0LHRleHRBbmNob3I6XCJlbmRcIixmb3JlQ29sb3I6aS5jb25maWcueWF4aXNbdF0udGl0bGUuc3R5bGUuY29sb3IsZm9udFNpemU6aS5jb25maWcueWF4aXNbdF0udGl0bGUuc3R5bGUuZm9udFNpemUsZm9udFdlaWdodDppLmNvbmZpZy55YXhpc1t0XS50aXRsZS5zdHlsZS5mb250V2VpZ2h0LGZvbnRGYW1pbHk6aS5jb25maWcueWF4aXNbdF0udGl0bGUuc3R5bGUuZm9udEZhbWlseSxjc3NDbGFzczpcImFwZXhjaGFydHMteWF4aXMtdGl0bGUtdGV4dCBcIitpLmNvbmZpZy55YXhpc1t0XS50aXRsZS5zdHlsZS5jc3NDbGFzc30pO3YuYWRkKHcpLGwuYWRkKHYpfXZhciBrPWkuY29uZmlnLnlheGlzW3RdLmF4aXNCb3JkZXIsQT0zMStrLm9mZnNldFg7aWYoaS5jb25maWcueWF4aXNbdF0ub3Bwb3NpdGUmJihBPS0zMS1rLm9mZnNldFgpLGsuc2hvdyl7dmFyIFM9YS5kcmF3TGluZShBLGkuZ2xvYmFscy50cmFuc2xhdGVZK2sub2Zmc2V0WS0yLEEsaS5nbG9iYWxzLmdyaWRIZWlnaHQraS5nbG9iYWxzLnRyYW5zbGF0ZVkray5vZmZzZXRZKzIsay5jb2xvciwwLGsud2lkdGgpO2wuYWRkKFMpfXJldHVybiBpLmNvbmZpZy55YXhpc1t0XS5heGlzVGlja3Muc2hvdyYmdGhpcy5heGVzVXRpbHMuZHJhd1lBeGlzVGlja3MoQSxjLGssaS5jb25maWcueWF4aXNbdF0uYXhpc1RpY2tzLHQsZCxsKSxsfX0se2tleTpcImRyYXdZYXhpc0ludmVyc2VkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpLGE9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzIGFwZXhjaGFydHMteWF4aXMtaW52ZXJzZWRcIn0pLHM9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLXRleHRzLWdcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIuY29uY2F0KGUuZ2xvYmFscy50cmFuc2xhdGVYQXhpc1gsXCIsIFwiKS5jb25jYXQoZS5nbG9iYWxzLnRyYW5zbGF0ZVhBeGlzWSxcIilcIil9KTthLmFkZChzKTt2YXIgcj1lLmdsb2JhbHMueUF4aXNTY2FsZVt0XS5yZXN1bHQubGVuZ3RoLTEsbz1lLmdsb2JhbHMuZ3JpZFdpZHRoL3IrLjEsbj1vK2UuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRYLGw9ZS5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcixoPWUuZ2xvYmFscy55QXhpc1NjYWxlW3RdLnJlc3VsdC5zbGljZSgpLGM9ZS5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscztjLmxlbmd0aD4wJiYodGhpcy54YXhpc0xhYmVscz1jLnNsaWNlKCkscj0oaD1jLnNsaWNlKCkpLmxlbmd0aCksaD10aGlzLmF4ZXNVdGlscy5jaGVja0ZvclJldmVyc2VkTGFiZWxzKHQsaCk7dmFyIGQ9Yy5sZW5ndGg7aWYoZS5jb25maWcueGF4aXMubGFiZWxzLnNob3cpZm9yKHZhciBnPWQ/MDpyO2Q/ZzxkOmc+PTA7ZD9nKys6Zy0tKXt2YXIgdT1oW2ddO3U9bCh1LGcsZSk7dmFyIHA9ZS5nbG9iYWxzLmdyaWRXaWR0aCtlLmdsb2JhbHMucGFkSG9yaXpvbnRhbC0obi1vK2UuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRYKTtpZihjLmxlbmd0aCl7dmFyIGY9dGhpcy5heGVzVXRpbHMuZ2V0TGFiZWwoaCxjLHAsZyx0aGlzLmRyYXduTGFiZWxzLHRoaXMueGF4aXNGb250U2l6ZSk7cD1mLngsdT1mLnRleHQsdGhpcy5kcmF3bkxhYmVscy5wdXNoKGYudGV4dCksMD09PWcmJmUuZ2xvYmFscy5za2lwRmlyc3RUaW1lbGluZWxhYmVsJiYodT1cIlwiKSxnPT09aC5sZW5ndGgtMSYmZS5nbG9iYWxzLnNraXBMYXN0VGltZWxpbmVsYWJlbCYmKHU9XCJcIil9dmFyIHg9aS5kcmF3VGV4dCh7eDpwLHk6dGhpcy54QXhpc29mZlgrZS5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFkrMzAtKFwidG9wXCI9PT1lLmNvbmZpZy54YXhpcy5wb3NpdGlvbj9lLmdsb2JhbHMueEF4aXNIZWlnaHQrZS5jb25maWcueGF4aXMuYXhpc1RpY2tzLmhlaWdodC0yOjApLHRleHQ6dSx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9yZUNvbG9yOkFycmF5LmlzQXJyYXkodGhpcy54YXhpc0ZvcmVDb2xvcnMpP3RoaXMueGF4aXNGb3JlQ29sb3JzW3RdOnRoaXMueGF4aXNGb3JlQ29sb3JzLGZvbnRTaXplOnRoaXMueGF4aXNGb250U2l6ZSxmb250RmFtaWx5OnRoaXMueGF4aXNGb250RmFtaWx5LGZvbnRXZWlnaHQ6ZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRXZWlnaHQsaXNQbGFpblRleHQ6ITEsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLWxhYmVsIFwiK2UuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5jc3NDbGFzc30pO3MuYWRkKHgpLHgudHNwYW4odSk7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuZ2xvYmFscy5TVkdOUyxcInRpdGxlXCIpO2IudGV4dENvbnRlbnQ9dSx4Lm5vZGUuYXBwZW5kQ2hpbGQoYiksbis9b31yZXR1cm4gdGhpcy5pbnZlcnNlZFlBeGlzVGl0bGVUZXh0KGEpLHRoaXMuaW52ZXJzZWRZQXhpc0JvcmRlcihhKSxhfX0se2tleTpcImludmVyc2VkWUF4aXNCb3JkZXJcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCksYT1lLmNvbmZpZy54YXhpcy5heGlzQm9yZGVyO2lmKGEuc2hvdyl7dmFyIHM9MDtcImJhclwiPT09ZS5jb25maWcuY2hhcnQudHlwZSYmZS5nbG9iYWxzLmlzWE51bWVyaWMmJihzLT0xNSk7dmFyIHI9aS5kcmF3TGluZShlLmdsb2JhbHMucGFkSG9yaXpvbnRhbCtzK2Eub2Zmc2V0WCx0aGlzLnhBeGlzb2ZmWCxlLmdsb2JhbHMuZ3JpZFdpZHRoLHRoaXMueEF4aXNvZmZYLGEuY29sb3IsMCxhLmhlaWdodCk7dGhpcy5lbGdyaWQmJnRoaXMuZWxncmlkLmVsR3JpZEJvcmRlcnMmJmUuY29uZmlnLmdyaWQuc2hvdz90aGlzLmVsZ3JpZC5lbEdyaWRCb3JkZXJzLmFkZChyKTp0LmFkZChyKX19fSx7a2V5OlwiaW52ZXJzZWRZQXhpc1RpdGxlVGV4dFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBtKHRoaXMuY3R4KTtpZih2b2lkIDAhPT1lLmNvbmZpZy54YXhpcy50aXRsZS50ZXh0KXt2YXIgYT1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteGF4aXMtdGl0bGUgYXBleGNoYXJ0cy15YXhpcy10aXRsZS1pbnZlcnNlZFwifSkscz1pLmRyYXdUZXh0KHt4OmUuZ2xvYmFscy5ncmlkV2lkdGgvMitlLmNvbmZpZy54YXhpcy50aXRsZS5vZmZzZXRYLHk6dGhpcy54QXhpc29mZlgrcGFyc2VGbG9hdCh0aGlzLnhheGlzRm9udFNpemUpK3BhcnNlRmxvYXQoZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFNpemUpK2UuY29uZmlnLnhheGlzLnRpdGxlLm9mZnNldFkrMjAsdGV4dDplLmNvbmZpZy54YXhpcy50aXRsZS50ZXh0LHRleHRBbmNob3I6XCJtaWRkbGVcIixmb250U2l6ZTplLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OmUuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDplLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjplLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5jb2xvcixjc3NDbGFzczpcImFwZXhjaGFydHMteGF4aXMtdGl0bGUtdGV4dCBcIitlLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5jc3NDbGFzc30pO2EuYWRkKHMpLHQuYWRkKGEpfX19LHtrZXk6XCJ5QXhpc1RpdGxlUm90YXRlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1uZXcgbSh0aGlzLmN0eCkscz17d2lkdGg6MCxoZWlnaHQ6MH0scj17d2lkdGg6MCxoZWlnaHQ6MH0sbz1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiIC5hcGV4Y2hhcnRzLXlheGlzW3JlbD0nXCIuY29uY2F0KHQsXCInXSAuYXBleGNoYXJ0cy15YXhpcy10ZXh0cy1nXCIpKTtudWxsIT09byYmKHM9by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7dmFyIG49aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXlheGlzW3JlbD0nXCIuY29uY2F0KHQsXCInXSAuYXBleGNoYXJ0cy15YXhpcy10aXRsZSB0ZXh0XCIpKTtpZihudWxsIT09biYmKHI9bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksbnVsbCE9PW4pe3ZhciBsPXRoaXMueFBhZGRpbmdGb3JZQXhpc1RpdGxlKHQscyxyLGUpO24uc2V0QXR0cmlidXRlKFwieFwiLGwueFBvcy0oZT8xMDowKSl9aWYobnVsbCE9PW4pe3ZhciBoPWEucm90YXRlQXJvdW5kQ2VudGVyKG4pO24uc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJyb3RhdGUoXCIuY29uY2F0KGU/LTEqaS5jb25maWcueWF4aXNbdF0udGl0bGUucm90YXRlOmkuY29uZmlnLnlheGlzW3RdLnRpdGxlLnJvdGF0ZSxcIiBcIikuY29uY2F0KGgueCxcIiBcIikuY29uY2F0KGgueSxcIilcIikpfX19LHtrZXk6XCJ4UGFkZGluZ0ZvcllBeGlzVGl0bGVcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz10aGlzLncscj0wLG89MCxuPTEwO3JldHVybiB2b2lkIDA9PT1zLmNvbmZpZy55YXhpc1t0XS50aXRsZS50ZXh0fHx0PDA/e3hQb3M6byxwYWRkOjB9OihhPyhvPWUud2lkdGgrcy5jb25maWcueWF4aXNbdF0udGl0bGUub2Zmc2V0WCtpLndpZHRoLzIrbi8yLDA9PT0ocis9MSkmJihvLT1uLzIpKToobz0tMSplLndpZHRoK3MuY29uZmlnLnlheGlzW3RdLnRpdGxlLm9mZnNldFgrbi8yK2kud2lkdGgvMixzLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYobj0yNSxvPS0xKmUud2lkdGgtcy5jb25maWcueWF4aXNbdF0udGl0bGUub2Zmc2V0WC1uKSkse3hQb3M6byxwYWRkOm59KX19LHtrZXk6XCJzZXRZQXhpc1hQb3NpdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9MCxzPTAscj0xOCxvPTE7aS5jb25maWcueWF4aXMubGVuZ3RoPjEmJih0aGlzLm11bHRpcGxlWXM9ITApLGkuY29uZmlnLnlheGlzLm1hcCgoZnVuY3Rpb24obixsKXt2YXIgaD1pLmdsb2JhbHMuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YobCk+LTF8fCFuLnNob3d8fG4uZmxvYXRpbmd8fDA9PT10W2xdLndpZHRoLGM9dFtsXS53aWR0aCtlW2xdLndpZHRoO24ub3Bwb3NpdGU/aS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD8ocz1pLmdsb2JhbHMuZ3JpZFdpZHRoK2kuZ2xvYmFscy50cmFuc2xhdGVYLTEsaS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFtsXT1zLW4ubGFiZWxzLm9mZnNldFgpOihzPWkuZ2xvYmFscy5ncmlkV2lkdGgraS5nbG9iYWxzLnRyYW5zbGF0ZVgrbyxofHwobz1vK2MrMjApLGkuZ2xvYmFscy50cmFuc2xhdGVZQXhpc1hbbF09cy1uLmxhYmVscy5vZmZzZXRYKzIwKTooYT1pLmdsb2JhbHMudHJhbnNsYXRlWC1yLGh8fChyPXIrYysyMCksaS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFtsXT1hK24ubGFiZWxzLm9mZnNldFgpfSkpfX0se2tleTpcInNldFlBeGlzVGV4dEFsaWdubWVudHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhcGV4Y2hhcnRzLXlheGlzXCIpOyhlPXgubGlzdFRvQXJyYXkoZSkpLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7dmFyIGE9dC5jb25maWcueWF4aXNbaV07aWYoYSYmIWEuZmxvYXRpbmcmJnZvaWQgMCE9PWEubGFiZWxzLmFsaWduKXt2YXIgcz10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteWF4aXNbcmVsPSdcIi5jb25jYXQoaSxcIiddIC5hcGV4Y2hhcnRzLXlheGlzLXRleHRzLWdcIikpLHI9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXlheGlzW3JlbD0nXCIuY29uY2F0KGksXCInXSAuYXBleGNoYXJ0cy15YXhpcy1sYWJlbFwiKSk7cj14Lmxpc3RUb0FycmF5KHIpO3ZhciBvPXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XCJsZWZ0XCI9PT1hLmxhYmVscy5hbGlnbj8oci5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3Quc2V0QXR0cmlidXRlKFwidGV4dC1hbmNob3JcIixcInN0YXJ0XCIpfSkpLGEub3Bwb3NpdGV8fHMuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJ0cmFuc2xhdGUoLVwiLmNvbmNhdChvLndpZHRoLFwiLCAwKVwiKSkpOlwiY2VudGVyXCI9PT1hLmxhYmVscy5hbGlnbj8oci5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3Quc2V0QXR0cmlidXRlKFwidGV4dC1hbmNob3JcIixcIm1pZGRsZVwiKX0pKSxzLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwidHJhbnNsYXRlKFwiLmNvbmNhdChvLndpZHRoLzIqKGEub3Bwb3NpdGU/MTotMSksXCIsIDApXCIpKSk6XCJyaWdodFwiPT09YS5sYWJlbHMuYWxpZ24mJihyLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5zZXRBdHRyaWJ1dGUoXCJ0ZXh0LWFuY2hvclwiLFwiZW5kXCIpfSkpLGEub3Bwb3NpdGUmJnMuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJ0cmFuc2xhdGUoXCIuY29uY2F0KG8ud2lkdGgsXCIsIDApXCIpKSl9fSkpfX1dKSx0fSgpLFo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5kb2N1bWVudEV2ZW50PXguYmluZCh0aGlzLmRvY3VtZW50RXZlbnQsdGhpcyl9cmV0dXJuIHIodCxbe2tleTpcImFkZEV2ZW50TGlzdGVuZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztpLmdsb2JhbHMuZXZlbnRzLmhhc093blByb3BlcnR5KHQpP2kuZ2xvYmFscy5ldmVudHNbdF0ucHVzaChlKTppLmdsb2JhbHMuZXZlbnRzW3RdPVtlXX19LHtrZXk6XCJyZW1vdmVFdmVudExpc3RlbmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aWYoaS5nbG9iYWxzLmV2ZW50cy5oYXNPd25Qcm9wZXJ0eSh0KSl7dmFyIGE9aS5nbG9iYWxzLmV2ZW50c1t0XS5pbmRleE9mKGUpOy0xIT09YSYmaS5nbG9iYWxzLmV2ZW50c1t0XS5zcGxpY2UoYSwxKX19fSx7a2V5OlwiZmlyZUV2ZW50XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aWYoaS5nbG9iYWxzLmV2ZW50cy5oYXNPd25Qcm9wZXJ0eSh0KSl7ZSYmZS5sZW5ndGh8fChlPVtdKTtmb3IodmFyIGE9aS5nbG9iYWxzLmV2ZW50c1t0XSxzPWEubGVuZ3RoLHI9MDtyPHM7cisrKWFbcl0uYXBwbHkobnVsbCxlKX19fSx7a2V5Olwic2V0dXBFdmVudEhhbmRsZXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9dGhpcy5jdHgsYT1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKGUuZ2xvYmFscy5jaGFydENsYXNzKTt0aGlzLmN0eC5ldmVudExpc3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7YS5hZGRFdmVudExpc3RlbmVyKHQsKGZ1bmN0aW9uKHQpe3ZhciBhPU9iamVjdC5hc3NpZ24oe30sZSx7c2VyaWVzSW5kZXg6ZS5nbG9iYWxzLmNhcHR1cmVkU2VyaWVzSW5kZXgsZGF0YVBvaW50SW5kZXg6ZS5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXh9KTtcIm1vdXNlbW92ZVwiPT09dC50eXBlfHxcInRvdWNobW92ZVwiPT09dC50eXBlP1wiZnVuY3Rpb25cIj09dHlwZW9mIGUuY29uZmlnLmNoYXJ0LmV2ZW50cy5tb3VzZU1vdmUmJmUuY29uZmlnLmNoYXJ0LmV2ZW50cy5tb3VzZU1vdmUodCxpLGEpOlwibW91c2VsZWF2ZVwiPT09dC50eXBlfHxcInRvdWNobGVhdmVcIj09PXQudHlwZT9cImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbmZpZy5jaGFydC5ldmVudHMubW91c2VMZWF2ZSYmZS5jb25maWcuY2hhcnQuZXZlbnRzLm1vdXNlTGVhdmUodCxpLGEpOihcIm1vdXNldXBcIj09PXQudHlwZSYmMT09PXQud2hpY2h8fFwidG91Y2hlbmRcIj09PXQudHlwZSkmJihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbmZpZy5jaGFydC5ldmVudHMuY2xpY2smJmUuY29uZmlnLmNoYXJ0LmV2ZW50cy5jbGljayh0LGksYSksaS5jdHguZXZlbnRzLmZpcmVFdmVudChcImNsaWNrXCIsW3QsaSxhXSkpfSkse2NhcHR1cmU6ITEscGFzc2l2ZTohMH0pfSkpLHRoaXMuY3R4LmV2ZW50TGlzdC5mb3JFYWNoKChmdW5jdGlvbihpKXtlLmdsb2JhbHMuZG9tLmJhc2VFbC5hZGRFdmVudExpc3RlbmVyKGksdC5kb2N1bWVudEV2ZW50LHtwYXNzaXZlOiEwfSl9KSksdGhpcy5jdHguY29yZS5zZXR1cEJydXNoSGFuZGxlcigpfX0se2tleTpcImRvY3VtZW50RXZlbnRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10LnRhcmdldC5jbGFzc05hbWU7aWYoXCJjbGlja1wiPT09dC50eXBlKXt2YXIgYT1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtbWVudVwiKTthJiZhLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbWVudS1vcGVuXCIpJiZcImFwZXhjaGFydHMtbWVudS1pY29uXCIhPT1pJiZhLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLW1lbnUtb3BlblwiKX1lLmdsb2JhbHMuY2xpZW50WD1cInRvdWNobW92ZVwiPT09dC50eXBlP3QudG91Y2hlc1swXS5jbGllbnRYOnQuY2xpZW50WCxlLmdsb2JhbHMuY2xpZW50WT1cInRvdWNobW92ZVwiPT09dC50eXBlP3QudG91Y2hlc1swXS5jbGllbnRZOnQuY2xpZW50WX19XSksdH0oKSwkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJzZXRDdXJyZW50TG9jYWxlVmFsdWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LmNvbmZpZy5jaGFydC5sb2NhbGVzO3dpbmRvdy5BcGV4LmNoYXJ0JiZ3aW5kb3cuQXBleC5jaGFydC5sb2NhbGVzJiZ3aW5kb3cuQXBleC5jaGFydC5sb2NhbGVzLmxlbmd0aD4wJiYoZT10aGlzLncuY29uZmlnLmNoYXJ0LmxvY2FsZXMuY29uY2F0KHdpbmRvdy5BcGV4LmNoYXJ0LmxvY2FsZXMpKTt2YXIgaT1lLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZT09PXR9KSlbMF07aWYoIWkpdGhyb3cgbmV3IEVycm9yKFwiV3JvbmcgbG9jYWxlIG5hbWUgcHJvdmlkZWQuIFBsZWFzZSBtYWtlIHN1cmUgeW91IHNldCB0aGUgY29ycmVjdCBsb2NhbGUgbmFtZSBpbiBvcHRpb25zXCIpO3ZhciBhPXguZXh0ZW5kKEMsaSk7dGhpcy53Lmdsb2JhbHMubG9jYWxlPWEub3B0aW9uc319XSksdH0oKSxKPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJkcmF3QXhpc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGksYSxzPXRoaXMscj10aGlzLncuZ2xvYmFscyxvPXRoaXMudy5jb25maWcsbj1uZXcgVih0aGlzLmN0eCxlKSxsPW5ldyBxKHRoaXMuY3R4LGUpO3IuYXhpc0NoYXJ0cyYmXCJyYWRhclwiIT09dCYmKHIuaXNCYXJIb3Jpem9udGFsPyhhPWwuZHJhd1lheGlzSW52ZXJzZWQoMCksaT1uLmRyYXdYYXhpc0ludmVyc2VkKDApLHIuZG9tLmVsR3JhcGhpY2FsLmFkZChpKSxyLmRvbS5lbEdyYXBoaWNhbC5hZGQoYSkpOihpPW4uZHJhd1hheGlzKCksci5kb20uZWxHcmFwaGljYWwuYWRkKGkpLG8ueWF4aXMubWFwKChmdW5jdGlvbih0LGUpe2lmKC0xPT09ci5pZ25vcmVZQXhpc0luZGV4ZXMuaW5kZXhPZihlKSYmKGE9bC5kcmF3WWF4aXMoZSksci5kb20uUGFwZXIuYWRkKGEpLFwiYmFja1wiPT09cy53LmNvbmZpZy5ncmlkLnBvc2l0aW9uKSl7dmFyIGk9ci5kb20uUGFwZXIuY2hpbGRyZW4oKVsxXTtpLnJlbW92ZSgpLHIuZG9tLlBhcGVyLmFkZChpKX19KSkpKX19XSksdH0oKSxRPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJkcmF3WENyb3NzaGFpcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPW5ldyBtKHRoaXMuY3R4KSxpPW5ldyB2KHRoaXMuY3R4KSxhPXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuZmlsbC5ncmFkaWVudCxzPXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuZHJvcFNoYWRvdyxyPXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuZmlsbC50eXBlLG89YS5jb2xvckZyb20sbj1hLmNvbG9yVG8sbD1hLm9wYWNpdHlGcm9tLGg9YS5vcGFjaXR5VG8sYz1hLnN0b3BzLGQ9cy5lbmFibGVkLGc9cy5sZWZ0LHU9cy50b3AscD1zLmJsdXIsZj1zLmNvbG9yLGI9cy5vcGFjaXR5LHk9dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5maWxsLmNvbG9yO2lmKHQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuc2hvdyl7XCJncmFkaWVudFwiPT09ciYmKHk9ZS5kcmF3R3JhZGllbnQoXCJ2ZXJ0aWNhbFwiLG8sbixsLGgsbnVsbCxjLG51bGwpKTt2YXIgdz1lLmRyYXdSZWN0KCk7MT09PXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgmJih3PWUuZHJhd0xpbmUoKSk7dmFyIGs9dC5nbG9iYWxzLmdyaWRIZWlnaHQ7KCF4LmlzTnVtYmVyKGspfHxrPDApJiYoaz0wKTt2YXIgQT10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoOygheC5pc051bWJlcihBKXx8QTwwKSYmKEE9MCksdy5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMteGNyb3NzaGFpcnNcIix4OjAseTowLHkyOmssd2lkdGg6QSxoZWlnaHQ6ayxmaWxsOnksZmlsdGVyOlwibm9uZVwiLFwiZmlsbC1vcGFjaXR5XCI6dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5vcGFjaXR5LHN0cm9rZTp0LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnN0cm9rZS5jb2xvcixcInN0cm9rZS13aWR0aFwiOnQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuc3Ryb2tlLndpZHRoLFwic3Ryb2tlLWRhc2hhcnJheVwiOnQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuc3Ryb2tlLmRhc2hBcnJheX0pLGQmJih3PWkuZHJvcFNoYWRvdyh3LHtsZWZ0OmcsdG9wOnUsYmx1cjpwLGNvbG9yOmYsb3BhY2l0eTpifSkpLHQuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHcpfX19LHtrZXk6XCJkcmF3WUNyb3NzaGFpcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPW5ldyBtKHRoaXMuY3R4KSxpPXQuY29uZmlnLnlheGlzWzBdLmNyb3NzaGFpcnMsYT10Lmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXM7aWYodC5jb25maWcueWF4aXNbMF0uY3Jvc3NoYWlycy5zaG93KXt2YXIgcz1lLmRyYXdMaW5lKC1hLDAsdC5nbG9iYWxzLmdyaWRXaWR0aCthLDAsaS5zdHJva2UuY29sb3IsaS5zdHJva2UuZGFzaEFycmF5LGkuc3Ryb2tlLndpZHRoKTtzLmF0dHIoe2NsYXNzOlwiYXBleGNoYXJ0cy15Y3Jvc3NoYWlyc1wifSksdC5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQocyl9dmFyIHI9ZS5kcmF3TGluZSgtYSwwLHQuZ2xvYmFscy5ncmlkV2lkdGgrYSwwLGkuc3Ryb2tlLmNvbG9yLDAsMCk7ci5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMteWNyb3NzaGFpcnMtaGlkZGVuXCJ9KSx0Lmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChyKX19XSksdH0oKSxLPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJjaGVja1Jlc3BvbnNpdmVDb25maWdcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53LGE9aS5jb25maWc7aWYoMCE9PWEucmVzcG9uc2l2ZS5sZW5ndGgpe3ZhciBzPWEucmVzcG9uc2l2ZS5zbGljZSgpO3Muc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5icmVha3BvaW50PmUuYnJlYWtwb2ludD8xOmUuYnJlYWtwb2ludD50LmJyZWFrcG9pbnQ/LTE6MH0pKS5yZXZlcnNlKCk7dmFyIHI9bmV3IEUoe30pLG89ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sYT1zWzBdLmJyZWFrcG9pbnQsbz13aW5kb3cuaW5uZXJXaWR0aD4wP3dpbmRvdy5pbm5lcldpZHRoOnNjcmVlbi53aWR0aDtpZihvPmEpe3ZhciBuPXkuZXh0ZW5kQXJyYXlQcm9wcyhyLGkuZ2xvYmFscy5pbml0aWFsQ29uZmlnLGkpO3Q9eC5leHRlbmQobix0KSx0PXguZXh0ZW5kKGkuY29uZmlnLHQpLGUub3ZlcnJpZGVSZXNwb25zaXZlT3B0aW9ucyh0KX1lbHNlIGZvcih2YXIgbD0wO2w8cy5sZW5ndGg7bCsrKW88c1tsXS5icmVha3BvaW50JiYodD15LmV4dGVuZEFycmF5UHJvcHMocixzW2xdLm9wdGlvbnMsaSksdD14LmV4dGVuZChpLmNvbmZpZyx0KSxlLm92ZXJyaWRlUmVzcG9uc2l2ZU9wdGlvbnModCkpfTtpZih0KXt2YXIgbj15LmV4dGVuZEFycmF5UHJvcHMocix0LGkpO249eC5leHRlbmQoaS5jb25maWcsbiksbyhuPXguZXh0ZW5kKG4sdCkpfWVsc2Ugbyh7fSl9fX0se2tleTpcIm92ZXJyaWRlUmVzcG9uc2l2ZU9wdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgRSh0KS5pbml0KHtyZXNwb25zaXZlT3ZlcnJpZGU6ITB9KTt0aGlzLncuY29uZmlnPWV9fV0pLHR9KCksdHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMuY29sb3JzPVtdLHRoaXMudz1lLnc7dmFyIGk9dGhpcy53O3RoaXMuaXNDb2xvckZuPSExLHRoaXMuaXNIZWF0bWFwRGlzdHJpYnV0ZWQ9XCJ0cmVlbWFwXCI9PT1pLmNvbmZpZy5jaGFydC50eXBlJiZpLmNvbmZpZy5wbG90T3B0aW9ucy50cmVlbWFwLmRpc3RyaWJ1dGVkfHxcImhlYXRtYXBcIj09PWkuY29uZmlnLmNoYXJ0LnR5cGUmJmkuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAuZGlzdHJpYnV0ZWQsdGhpcy5pc0JhckRpc3RyaWJ1dGVkPWkuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kaXN0cmlidXRlZCYmKFwiYmFyXCI9PT1pLmNvbmZpZy5jaGFydC50eXBlfHxcInJhbmdlQmFyXCI9PT1pLmNvbmZpZy5jaGFydC50eXBlKX1yZXR1cm4gcih0LFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZXREZWZhdWx0Q29sb3JzKCl9fSx7a2V5Olwic2V0RGVmYXVsdENvbG9yc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPW5ldyB4O2lmKGUuZ2xvYmFscy5kb20uZWxXcmFwLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRoZW1lLVwiLmNvbmNhdChlLmNvbmZpZy50aGVtZS5tb2RlKSksdm9pZCAwPT09ZS5jb25maWcuY29sb3JzP2UuZ2xvYmFscy5jb2xvcnM9dGhpcy5wcmVkZWZpbmVkKCk6KGUuZ2xvYmFscy5jb2xvcnM9ZS5jb25maWcuY29sb3JzLEFycmF5LmlzQXJyYXkoZS5jb25maWcuY29sb3JzKSYmZS5jb25maWcuY29sb3JzLmxlbmd0aD4wJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbmZpZy5jb2xvcnNbMF0mJihlLmdsb2JhbHMuY29sb3JzPWUuY29uZmlnLnNlcmllcy5tYXAoKGZ1bmN0aW9uKGksYSl7dmFyIHM9ZS5jb25maWcuY29sb3JzW2FdO3JldHVybiBzfHwocz1lLmNvbmZpZy5jb2xvcnNbMF0pLFwiZnVuY3Rpb25cIj09dHlwZW9mIHM/KHQuaXNDb2xvckZuPSEwLHMoe3ZhbHVlOmUuZ2xvYmFscy5heGlzQ2hhcnRzP2UuZ2xvYmFscy5zZXJpZXNbYV1bMF0/ZS5nbG9iYWxzLnNlcmllc1thXVswXTowOmUuZ2xvYmFscy5zZXJpZXNbYV0sc2VyaWVzSW5kZXg6YSxkYXRhUG9pbnRJbmRleDphLHc6ZX0pKTpzfSkpKSksZS5nbG9iYWxzLnNlcmllc0NvbG9ycy5tYXAoKGZ1bmN0aW9uKHQsaSl7dCYmKGUuZ2xvYmFscy5jb2xvcnNbaV09dCl9KSksZS5jb25maWcudGhlbWUubW9ub2Nocm9tZS5lbmFibGVkKXt2YXIgYT1bXSxzPWUuZ2xvYmFscy5zZXJpZXMubGVuZ3RoOyh0aGlzLmlzQmFyRGlzdHJpYnV0ZWR8fHRoaXMuaXNIZWF0bWFwRGlzdHJpYnV0ZWQpJiYocz1lLmdsb2JhbHMuc2VyaWVzWzBdLmxlbmd0aCplLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCk7Zm9yKHZhciByPWUuY29uZmlnLnRoZW1lLm1vbm9jaHJvbWUuY29sb3Isbz0xLyhzL2UuY29uZmlnLnRoZW1lLm1vbm9jaHJvbWUuc2hhZGVJbnRlbnNpdHkpLG49ZS5jb25maWcudGhlbWUubW9ub2Nocm9tZS5zaGFkZVRvLGw9MCxoPTA7aDxzO2grKyl7dmFyIGM9dm9pZCAwO1wiZGFya1wiPT09bj8oYz1pLnNoYWRlQ29sb3IoLTEqbCxyKSxsKz1vKTooYz1pLnNoYWRlQ29sb3IobCxyKSxsKz1vKSxhLnB1c2goYyl9ZS5nbG9iYWxzLmNvbG9ycz1hLnNsaWNlKCl9dmFyIGQ9ZS5nbG9iYWxzLmNvbG9ycy5zbGljZSgpO3RoaXMucHVzaEV4dHJhQ29sb3JzKGUuZ2xvYmFscy5jb2xvcnMpO1tcImZpbGxcIixcInN0cm9rZVwiXS5mb3JFYWNoKChmdW5jdGlvbihpKXt2b2lkIDA9PT1lLmNvbmZpZ1tpXS5jb2xvcnM/ZS5nbG9iYWxzW2ldLmNvbG9ycz10LmlzQ29sb3JGbj9lLmNvbmZpZy5jb2xvcnM6ZDplLmdsb2JhbHNbaV0uY29sb3JzPWUuY29uZmlnW2ldLmNvbG9ycy5zbGljZSgpLHQucHVzaEV4dHJhQ29sb3JzKGUuZ2xvYmFsc1tpXS5jb2xvcnMpfSkpLHZvaWQgMD09PWUuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzP2UuZ2xvYmFscy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9ycz1kOmUuZ2xvYmFscy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9ycz1lLmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9ycy5zbGljZSgpLHRoaXMucHVzaEV4dHJhQ29sb3JzKGUuZ2xvYmFscy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9ycyw1MCksdm9pZCAwPT09ZS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIucG9seWdvbnMuZmlsbC5jb2xvcnM/ZS5nbG9iYWxzLnJhZGFyUG9seWdvbnMuZmlsbC5jb2xvcnM9W1wiZGFya1wiPT09ZS5jb25maWcudGhlbWUubW9kZT9cIiM0MjQyNDJcIjpcIm5vbmVcIl06ZS5nbG9iYWxzLnJhZGFyUG9seWdvbnMuZmlsbC5jb2xvcnM9ZS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIucG9seWdvbnMuZmlsbC5jb2xvcnMuc2xpY2UoKSx0aGlzLnB1c2hFeHRyYUNvbG9ycyhlLmdsb2JhbHMucmFkYXJQb2x5Z29ucy5maWxsLmNvbG9ycywyMCksdm9pZCAwPT09ZS5jb25maWcubWFya2Vycy5jb2xvcnM/ZS5nbG9iYWxzLm1hcmtlcnMuY29sb3JzPWQ6ZS5nbG9iYWxzLm1hcmtlcnMuY29sb3JzPWUuY29uZmlnLm1hcmtlcnMuY29sb3JzLnNsaWNlKCksdGhpcy5wdXNoRXh0cmFDb2xvcnMoZS5nbG9iYWxzLm1hcmtlcnMuY29sb3JzKX19LHtrZXk6XCJwdXNoRXh0cmFDb2xvcnNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsLGE9dGhpcy53LHM9ZXx8YS5nbG9iYWxzLnNlcmllcy5sZW5ndGg7aWYobnVsbD09PWkmJihpPXRoaXMuaXNCYXJEaXN0cmlidXRlZHx8dGhpcy5pc0hlYXRtYXBEaXN0cmlidXRlZHx8XCJoZWF0bWFwXCI9PT1hLmNvbmZpZy5jaGFydC50eXBlJiZhLmNvbmZpZy5wbG90T3B0aW9ucy5oZWF0bWFwLmNvbG9yU2NhbGUuaW52ZXJzZSksaSYmYS5nbG9iYWxzLnNlcmllcy5sZW5ndGgmJihzPWEuZ2xvYmFscy5zZXJpZXNbYS5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aCphLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCksdC5sZW5ndGg8cylmb3IodmFyIHI9cy10Lmxlbmd0aCxvPTA7bzxyO28rKyl0LnB1c2godFtvXSl9fSx7a2V5OlwidXBkYXRlVGhlbWVPcHRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dC5jaGFydD10LmNoYXJ0fHx7fSx0LnRvb2x0aXA9dC50b29sdGlwfHx7fTt2YXIgZT10LnRoZW1lLm1vZGV8fFwibGlnaHRcIixpPXQudGhlbWUucGFsZXR0ZT90LnRoZW1lLnBhbGV0dGU6XCJkYXJrXCI9PT1lP1wicGFsZXR0ZTRcIjpcInBhbGV0dGUxXCIsYT10LmNoYXJ0LmZvcmVDb2xvcj90LmNoYXJ0LmZvcmVDb2xvcjpcImRhcmtcIj09PWU/XCIjZjZmN2Y4XCI6XCIjMzczZDNmXCI7cmV0dXJuIHQudG9vbHRpcC50aGVtZT1lLHQuY2hhcnQuZm9yZUNvbG9yPWEsdC50aGVtZS5wYWxldHRlPWksdH19LHtrZXk6XCJwcmVkZWZpbmVkXCIsdmFsdWU6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy53LmNvbmZpZy50aGVtZS5wYWxldHRlKXtjYXNlXCJwYWxldHRlMVwiOmRlZmF1bHQ6dGhpcy5jb2xvcnM9W1wiIzAwOEZGQlwiLFwiIzAwRTM5NlwiLFwiI0ZFQjAxOVwiLFwiI0ZGNDU2MFwiLFwiIzc3NUREMFwiXTticmVhaztjYXNlXCJwYWxldHRlMlwiOnRoaXMuY29sb3JzPVtcIiMzZjUxYjVcIixcIiMwM2E5ZjRcIixcIiM0Y2FmNTBcIixcIiNmOWNlMWRcIixcIiNGRjk4MDBcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTNcIjp0aGlzLmNvbG9ycz1bXCIjMzNiMmRmXCIsXCIjNTQ2RTdBXCIsXCIjZDQ1MjZlXCIsXCIjMTNkOGFhXCIsXCIjQTU5NzhCXCJdO2JyZWFrO2Nhc2VcInBhbGV0dGU0XCI6dGhpcy5jb2xvcnM9W1wiIzRlY2RjNFwiLFwiI2M3ZjQ2NFwiLFwiIzgxRDRGQVwiLFwiI2ZkNmE2YVwiLFwiIzU0NkU3QVwiXTticmVhaztjYXNlXCJwYWxldHRlNVwiOnRoaXMuY29sb3JzPVtcIiMyYjkwOGZcIixcIiNmOWEzYTRcIixcIiM5MGVlN2VcIixcIiNmYTQ0NDNcIixcIiM2OWQyZTdcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTZcIjp0aGlzLmNvbG9ycz1bXCIjNDQ5REQxXCIsXCIjRjg2NjI0XCIsXCIjRUEzNTQ2XCIsXCIjNjYyRTlCXCIsXCIjQzVEODZEXCJdO2JyZWFrO2Nhc2VcInBhbGV0dGU3XCI6dGhpcy5jb2xvcnM9W1wiI0Q3MjYzRFwiLFwiIzFCOTk4QlwiLFwiIzJFMjk0RVwiLFwiI0Y0NjAzNlwiLFwiI0UyQzA0NFwiXTticmVhaztjYXNlXCJwYWxldHRlOFwiOnRoaXMuY29sb3JzPVtcIiM2NjJFOUJcIixcIiNGODY2MjRcIixcIiNGOUM4MEVcIixcIiNFQTM1NDZcIixcIiM0M0JDQ0RcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTlcIjp0aGlzLmNvbG9ycz1bXCIjNUM0NzQyXCIsXCIjQTU5NzhCXCIsXCIjOEQ1QjRDXCIsXCIjNUEyQTI3XCIsXCIjQzRCQkFGXCJdO2JyZWFrO2Nhc2VcInBhbGV0dGUxMFwiOnRoaXMuY29sb3JzPVtcIiNBMzAwRDZcIixcIiM3RDAyRUJcIixcIiM1NjUzRkVcIixcIiMyOTgzRkZcIixcIiMwMEIxRjJcIl19cmV0dXJuIHRoaXMuY29sb3JzfX1dKSx0fSgpLGV0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmRyYXdUaXRsZVN1YnRpdGxlKFwidGl0bGVcIiksdGhpcy5kcmF3VGl0bGVTdWJ0aXRsZShcInN1YnRpdGxlXCIpfX0se2tleTpcImRyYXdUaXRsZVN1YnRpdGxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9XCJ0aXRsZVwiPT09dD9lLmNvbmZpZy50aXRsZTplLmNvbmZpZy5zdWJ0aXRsZSxhPWUuZ2xvYmFscy5zdmdXaWR0aC8yLHM9aS5vZmZzZXRZLHI9XCJtaWRkbGVcIjtpZihcImxlZnRcIj09PWkuYWxpZ24/KGE9MTAscj1cInN0YXJ0XCIpOlwicmlnaHRcIj09PWkuYWxpZ24mJihhPWUuZ2xvYmFscy5zdmdXaWR0aC0xMCxyPVwiZW5kXCIpLGErPWkub2Zmc2V0WCxzPXMrcGFyc2VJbnQoaS5zdHlsZS5mb250U2l6ZSwxMCkraS5tYXJnaW4vMix2b2lkIDAhPT1pLnRleHQpe3ZhciBvPW5ldyBtKHRoaXMuY3R4KS5kcmF3VGV4dCh7eDphLHk6cyx0ZXh0OmkudGV4dCx0ZXh0QW5jaG9yOnIsZm9udFNpemU6aS5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5Omkuc3R5bGUuZm9udEZhbWlseSxmb250V2VpZ2h0Omkuc3R5bGUuZm9udFdlaWdodCxmb3JlQ29sb3I6aS5zdHlsZS5jb2xvcixvcGFjaXR5OjF9KTtvLm5vZGUuc2V0QXR0cmlidXRlKFwiY2xhc3NcIixcImFwZXhjaGFydHMtXCIuY29uY2F0KHQsXCItdGV4dFwiKSksZS5nbG9iYWxzLmRvbS5QYXBlci5hZGQobyl9fX1dKSx0fSgpLGl0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmRDdHg9ZX1yZXR1cm4gcih0LFt7a2V5OlwiZ2V0VGl0bGVTdWJ0aXRsZUNvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPTAsYT0wLHM9XCJ0aXRsZVwiPT09dD9lLmNvbmZpZy50aXRsZS5mbG9hdGluZzplLmNvbmZpZy5zdWJ0aXRsZS5mbG9hdGluZyxyPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQodCxcIi10ZXh0XCIpKTtpZihudWxsIT09ciYmIXMpe3ZhciBvPXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aT1vLndpZHRoLGE9ZS5nbG9iYWxzLmF4aXNDaGFydHM/by5oZWlnaHQrNTpvLmhlaWdodH1yZXR1cm57d2lkdGg6aSxoZWlnaHQ6YX19fSx7a2V5OlwiZ2V0TGVnZW5kc1JlY3RcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwO3QuY29uZmlnLmxlZ2VuZC5oZWlnaHR8fFwidG9wXCIhPT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJlwiYm90dG9tXCIhPT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb258fChlLnN0eWxlLm1heEhlaWdodD10Lmdsb2JhbHMuc3ZnSGVpZ2h0LzIrXCJweFwiKTt2YXIgaT1PYmplY3QuYXNzaWduKHt9LHguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGUpKTtyZXR1cm4gbnVsbCE9PWUmJiF0LmNvbmZpZy5sZWdlbmQuZmxvYXRpbmcmJnQuY29uZmlnLmxlZ2VuZC5zaG93P3RoaXMuZEN0eC5sZ1JlY3Q9e3g6aS54LHk6aS55LGhlaWdodDppLmhlaWdodCx3aWR0aDowPT09aS5oZWlnaHQ/MDppLndpZHRofTp0aGlzLmRDdHgubGdSZWN0PXt4OjAseTowLGhlaWdodDowLHdpZHRoOjB9LFwibGVmdFwiIT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9uJiZcInJpZ2h0XCIhPT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb258fDEuNSp0aGlzLmRDdHgubGdSZWN0LndpZHRoPnQuZ2xvYmFscy5zdmdXaWR0aCYmKHRoaXMuZEN0eC5sZ1JlY3Qud2lkdGg9dC5nbG9iYWxzLnN2Z1dpZHRoLzEuNSksdGhpcy5kQ3R4LmxnUmVjdH19LHtrZXk6XCJnZXRMYXJnZXN0U3RyaW5nRnJvbU11bHRpQXJyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10O2lmKHRoaXMudy5nbG9iYWxzLmlzTXVsdGlMaW5lWCl7dmFyIGE9ZS5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dC5sZW5ndGg6MX0pKSxzPU1hdGgubWF4LmFwcGx5KE1hdGgsdShhKSk7aT1lW2EuaW5kZXhPZihzKV19cmV0dXJuIGl9fV0pLHR9KCksYXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuZEN0eD1lfXJldHVybiByKHQsW3trZXk6XCJnZXR4QXhpc0xhYmVsc0Nvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLncsaT1lLmdsb2JhbHMubGFiZWxzLnNsaWNlKCk7aWYoZS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYwPT09aS5sZW5ndGgmJihpPWUuZ2xvYmFscy5jYXRlZ29yeUxhYmVscyksZS5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscy5sZW5ndGg+MCl7dmFyIGE9dGhpcy5nZXR4QXhpc1RpbWVTY2FsZUxhYmVsc0Nvb3JkcygpO3Q9e3dpZHRoOmEud2lkdGgsaGVpZ2h0OmEuaGVpZ2h0fSxlLmdsb2JhbHMucm90YXRlWExhYmVscz0hMX1lbHNle3RoaXMuZEN0eC5sZ1dpZHRoRm9yU2lkZUxlZ2VuZHM9XCJsZWZ0XCIhPT1lLmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJlwicmlnaHRcIiE9PWUuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbnx8ZS5jb25maWcubGVnZW5kLmZsb2F0aW5nPzA6dGhpcy5kQ3R4LmxnUmVjdC53aWR0aDt2YXIgcz1lLmdsb2JhbHMueExhYmVsRm9ybWF0dGVyLHI9eC5nZXRMYXJnZXN0U3RyaW5nRnJvbUFycihpKSxvPXRoaXMuZEN0eC5kaW1IZWxwZXJzLmdldExhcmdlc3RTdHJpbmdGcm9tTXVsdGlBcnIocixpKTtlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYobz1yPWUuZ2xvYmFscy55QXhpc1NjYWxlWzBdLnJlc3VsdC5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQubGVuZ3RoPmUubGVuZ3RoP3Q6ZX0pLDApKTt2YXIgbj1uZXcgVCh0aGlzLmRDdHguY3R4KSxsPXI7cj1uLnhMYWJlbEZvcm1hdChzLHIsbCx7aTp2b2lkIDAsZGF0ZUZvcm1hdHRlcjpuZXcgSSh0aGlzLmRDdHguY3R4KS5mb3JtYXREYXRlLHc6ZX0pLG89bi54TGFiZWxGb3JtYXQocyxvLGwse2k6dm9pZCAwLGRhdGVGb3JtYXR0ZXI6bmV3IEkodGhpcy5kQ3R4LmN0eCkuZm9ybWF0RGF0ZSx3OmV9KSwoZS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiZ2b2lkIDA9PT1yfHxcIlwiPT09U3RyaW5nKHIpLnRyaW0oKSkmJihvPXI9XCIxXCIpO3ZhciBoPW5ldyBtKHRoaXMuZEN0eC5jdHgpLGM9aC5nZXRUZXh0UmVjdHMocixlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUpLGQ9YztpZihyIT09byYmKGQ9aC5nZXRUZXh0UmVjdHMobyxlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUpKSwodD17d2lkdGg6Yy53aWR0aD49ZC53aWR0aD9jLndpZHRoOmQud2lkdGgsaGVpZ2h0OmMuaGVpZ2h0Pj1kLmhlaWdodD9jLmhlaWdodDpkLmhlaWdodH0pLndpZHRoKmkubGVuZ3RoPmUuZ2xvYmFscy5zdmdXaWR0aC10aGlzLmRDdHgubGdXaWR0aEZvclNpZGVMZWdlbmRzLXRoaXMuZEN0eC55QXhpc1dpZHRoLXRoaXMuZEN0eC5ncmlkUGFkLmxlZnQtdGhpcy5kQ3R4LmdyaWRQYWQucmlnaHQmJjAhPT1lLmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlfHxlLmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlQWx3YXlzKXtpZighZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCl7ZS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM9ITA7dmFyIGc9ZnVuY3Rpb24odCl7cmV0dXJuIGguZ2V0VGV4dFJlY3RzKHQsZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplLGUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250RmFtaWx5LFwicm90YXRlKFwiLmNvbmNhdChlLmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlLFwiIDAgMClcIiksITEpfTtjPWcociksciE9PW8mJihkPWcobykpLHQuaGVpZ2h0PShjLmhlaWdodD5kLmhlaWdodD9jLmhlaWdodDpkLmhlaWdodCkvMS41LHQud2lkdGg9Yy53aWR0aD5kLndpZHRoP2Mud2lkdGg6ZC53aWR0aH19ZWxzZSBlLmdsb2JhbHMucm90YXRlWExhYmVscz0hMX1yZXR1cm4gZS5jb25maWcueGF4aXMubGFiZWxzLnNob3d8fCh0PXt3aWR0aDowLGhlaWdodDowfSkse3dpZHRoOnQud2lkdGgsaGVpZ2h0OnQuaGVpZ2h0fX19LHtrZXk6XCJnZXR4QXhpc0dyb3VwTGFiZWxzQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMudztpZighZS5nbG9iYWxzLmhhc1hheGlzR3JvdXBzKXJldHVybnt3aWR0aDowLGhlaWdodDowfTt2YXIgaSxhPShudWxsPT09KHQ9ZS5jb25maWcueGF4aXMuZ3JvdXAuc3R5bGUpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmZvbnRTaXplKXx8ZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplLHM9ZS5nbG9iYWxzLmdyb3Vwcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRpdGxlfSkpLHI9eC5nZXRMYXJnZXN0U3RyaW5nRnJvbUFycihzKSxvPXRoaXMuZEN0eC5kaW1IZWxwZXJzLmdldExhcmdlc3RTdHJpbmdGcm9tTXVsdGlBcnIocixzKSxuPW5ldyBtKHRoaXMuZEN0eC5jdHgpLGw9bi5nZXRUZXh0UmVjdHMocixhKSxoPWw7cmV0dXJuIHIhPT1vJiYoaD1uLmdldFRleHRSZWN0cyhvLGEpKSxpPXt3aWR0aDpsLndpZHRoPj1oLndpZHRoP2wud2lkdGg6aC53aWR0aCxoZWlnaHQ6bC5oZWlnaHQ+PWguaGVpZ2h0P2wuaGVpZ2h0OmguaGVpZ2h0fSxlLmNvbmZpZy54YXhpcy5sYWJlbHMuc2hvd3x8KGk9e3dpZHRoOjAsaGVpZ2h0OjB9KSx7d2lkdGg6aS53aWR0aCxoZWlnaHQ6aS5oZWlnaHR9fX0se2tleTpcImdldHhBeGlzVGl0bGVDb29yZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPTAsaT0wO2lmKHZvaWQgMCE9PXQuY29uZmlnLnhheGlzLnRpdGxlLnRleHQpe3ZhciBhPW5ldyBtKHRoaXMuZEN0eC5jdHgpLmdldFRleHRSZWN0cyh0LmNvbmZpZy54YXhpcy50aXRsZS50ZXh0LHQuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRTaXplKTtlPWEud2lkdGgsaT1hLmhlaWdodH1yZXR1cm57d2lkdGg6ZSxoZWlnaHQ6aX19fSx7a2V5OlwiZ2V0eEF4aXNUaW1lU2NhbGVMYWJlbHNDb29yZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy53O3RoaXMuZEN0eC50aW1lc2NhbGVMYWJlbHM9ZS5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscy5zbGljZSgpO3ZhciBpPXRoaXMuZEN0eC50aW1lc2NhbGVMYWJlbHMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZX0pKSxhPWkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT10Pyhjb25zb2xlLmVycm9yKFwiWW91IGhhdmUgcG9zc2libHkgc3VwcGxpZWQgaW52YWxpZCBEYXRlIGZvcm1hdC4gUGxlYXNlIHN1cHBseSBhIHZhbGlkIEphdmFTY3JpcHQgRGF0ZVwiKSwwKTp0Lmxlbmd0aD5lLmxlbmd0aD90OmV9KSwwKTtyZXR1cm4gMS4wNSoodD1uZXcgbSh0aGlzLmRDdHguY3R4KS5nZXRUZXh0UmVjdHMoYSxlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUpKS53aWR0aCppLmxlbmd0aD5lLmdsb2JhbHMuZ3JpZFdpZHRoJiYwIT09ZS5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZSYmKGUuZ2xvYmFscy5vdmVybGFwcGluZ1hMYWJlbHM9ITApLHR9fSx7a2V5OlwiYWRkaXRpb25hbFBhZGRpbmdYTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudyxhPWkuZ2xvYmFscyxzPWkuY29uZmlnLHI9cy54YXhpcy50eXBlLG89dC53aWR0aDthLnNraXBMYXN0VGltZWxpbmVsYWJlbD0hMSxhLnNraXBGaXJzdFRpbWVsaW5lbGFiZWw9ITE7dmFyIG49aS5jb25maWcueWF4aXNbMF0ub3Bwb3NpdGUmJmkuZ2xvYmFscy5pc0Jhckhvcml6b250YWwsbD1mdW5jdGlvbih0LG4pe3MueWF4aXMubGVuZ3RoPjEmJmZ1bmN0aW9uKHQpe3JldHVybi0xIT09YS5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YodCl9KG4pfHxmdW5jdGlvbih0KXtpZihlLmRDdHgudGltZXNjYWxlTGFiZWxzJiZlLmRDdHgudGltZXNjYWxlTGFiZWxzLmxlbmd0aCl7dmFyIG49ZS5kQ3R4LnRpbWVzY2FsZUxhYmVsc1swXSxsPWUuZEN0eC50aW1lc2NhbGVMYWJlbHNbZS5kQ3R4LnRpbWVzY2FsZUxhYmVscy5sZW5ndGgtMV0ucG9zaXRpb24rby8xLjc1LWUuZEN0eC55QXhpc1dpZHRoUmlnaHQsaD1uLnBvc2l0aW9uLW8vMS43NStlLmRDdHgueUF4aXNXaWR0aExlZnQsYz1cInJpZ2h0XCI9PT1pLmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJmUuZEN0eC5sZ1JlY3Qud2lkdGg+MD9lLmRDdHgubGdSZWN0LndpZHRoOjA7bD5hLnN2Z1dpZHRoLWEudHJhbnNsYXRlWC1jJiYoYS5za2lwTGFzdFRpbWVsaW5lbGFiZWw9ITApLGg8LSh0LnNob3cmJiF0LmZsb2F0aW5nfHxcImJhclwiIT09cy5jaGFydC50eXBlJiZcImNhbmRsZXN0aWNrXCIhPT1zLmNoYXJ0LnR5cGUmJlwicmFuZ2VCYXJcIiE9PXMuY2hhcnQudHlwZSYmXCJib3hQbG90XCIhPT1zLmNoYXJ0LnR5cGU/MTA6by8xLjc1KSYmKGEuc2tpcEZpcnN0VGltZWxpbmVsYWJlbD0hMCl9ZWxzZVwiZGF0ZXRpbWVcIj09PXI/ZS5kQ3R4LmdyaWRQYWQucmlnaHQ8byYmIWEucm90YXRlWExhYmVscyYmKGEuc2tpcExhc3RUaW1lbGluZWxhYmVsPSEwKTpcImRhdGV0aW1lXCIhPT1yJiZlLmRDdHguZ3JpZFBhZC5yaWdodDxvLzItZS5kQ3R4LnlBeGlzV2lkdGhSaWdodCYmIWEucm90YXRlWExhYmVscyYmIWkuY29uZmlnLnhheGlzLmxhYmVscy50cmltJiYoXCJiZXR3ZWVuXCIhPT1pLmNvbmZpZy54YXhpcy50aWNrUGxhY2VtZW50fHxpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKSYmKGUuZEN0eC54UGFkUmlnaHQ9by8yKzEpfSh0KX07cy55YXhpcy5mb3JFYWNoKChmdW5jdGlvbih0LGkpe24/KGUuZEN0eC5ncmlkUGFkLmxlZnQ8byYmKGUuZEN0eC54UGFkTGVmdD1vLzIrMSksZS5kQ3R4LnhQYWRSaWdodD1vLzIrMSk6bCh0LGkpfSkpfX1dKSx0fSgpLHN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmRDdHg9ZX1yZXR1cm4gcih0LFt7a2V5OlwiZ2V0eUF4aXNMYWJlbHNDb29yZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1bXSxhPTEwLHM9bmV3IEIodGhpcy5kQ3R4LmN0eCk7cmV0dXJuIGUuY29uZmlnLnlheGlzLm1hcCgoZnVuY3Rpb24ocixvKXt2YXIgbj1lLmdsb2JhbHMueUF4aXNTY2FsZVtvXSxsPTA7aWYoIXMuaXNZQXhpc0hpZGRlbihvKSYmci5sYWJlbHMuc2hvdyYmdm9pZCAwIT09ci5sYWJlbHMubWluV2lkdGgmJihsPXIubGFiZWxzLm1pbldpZHRoKSwhcy5pc1lBeGlzSGlkZGVuKG8pJiZyLmxhYmVscy5zaG93JiZuLnJlc3VsdC5sZW5ndGgpe3ZhciBoPWUuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzW29dLGM9bi5uaWNlTWluPT09TnVtYmVyLk1JTl9WQUxVRT8wOm4ubmljZU1pbixkPVN0cmluZyhjKS5sZW5ndGg+U3RyaW5nKG4ubmljZU1heCkubGVuZ3RoP2M6bi5uaWNlTWF4LGc9aChkLHtzZXJpZXNJbmRleDpvLGRhdGFQb2ludEluZGV4Oi0xLHc6ZX0pLHU9ZztpZih2b2lkIDAhPT1nJiYwIT09Zy5sZW5ndGh8fChnPWQpLGUuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpe2E9MDt2YXIgcD1lLmdsb2JhbHMubGFiZWxzLnNsaWNlKCk7Zz1oKGc9eC5nZXRMYXJnZXN0U3RyaW5nRnJvbUFycihwKSx7c2VyaWVzSW5kZXg6byxkYXRhUG9pbnRJbmRleDotMSx3OmV9KSx1PXQuZEN0eC5kaW1IZWxwZXJzLmdldExhcmdlc3RTdHJpbmdGcm9tTXVsdGlBcnIoZyxwKX12YXIgZj1uZXcgbSh0LmRDdHguY3R4KSxiPVwicm90YXRlKFwiLmNvbmNhdChyLmxhYmVscy5yb3RhdGUsXCIgMCAwKVwiKSx2PWYuZ2V0VGV4dFJlY3RzKGcsci5sYWJlbHMuc3R5bGUuZm9udFNpemUsci5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSxiLCExKSx5PXY7ZyE9PXUmJih5PWYuZ2V0VGV4dFJlY3RzKHUsci5sYWJlbHMuc3R5bGUuZm9udFNpemUsci5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSxiLCExKSksaS5wdXNoKHt3aWR0aDoobD55LndpZHRofHxsPnYud2lkdGg/bDp5LndpZHRoPnYud2lkdGg/eS53aWR0aDp2LndpZHRoKSthLGhlaWdodDp5LmhlaWdodD52LmhlaWdodD95LmhlaWdodDp2LmhlaWdodH0pfWVsc2UgaS5wdXNoKHt3aWR0aDowLGhlaWdodDowfSl9KSksaX19LHtrZXk6XCJnZXR5QXhpc1RpdGxlQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9W107cmV0dXJuIGUuY29uZmlnLnlheGlzLm1hcCgoZnVuY3Rpb24oZSxhKXtpZihlLnNob3cmJnZvaWQgMCE9PWUudGl0bGUudGV4dCl7dmFyIHM9bmV3IG0odC5kQ3R4LmN0eCkscj1cInJvdGF0ZShcIi5jb25jYXQoZS50aXRsZS5yb3RhdGUsXCIgMCAwKVwiKSxvPXMuZ2V0VGV4dFJlY3RzKGUudGl0bGUudGV4dCxlLnRpdGxlLnN0eWxlLmZvbnRTaXplLGUudGl0bGUuc3R5bGUuZm9udEZhbWlseSxyLCExKTtpLnB1c2goe3dpZHRoOm8ud2lkdGgsaGVpZ2h0Om8uaGVpZ2h0fSl9ZWxzZSBpLnB1c2goe3dpZHRoOjAsaGVpZ2h0OjB9KX0pKSxpfX0se2tleTpcImdldFRvdGFsWUF4aXNXaWR0aFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9MCxpPTAsYT0wLHM9dC5nbG9iYWxzLnlBeGlzU2NhbGUubGVuZ3RoPjE/MTA6MCxyPW5ldyBCKHRoaXMuZEN0eC5jdHgpLG89ZnVuY3Rpb24obyxuKXt2YXIgbD10LmNvbmZpZy55YXhpc1tuXS5mbG9hdGluZyxoPTA7by53aWR0aD4wJiYhbD8oaD1vLndpZHRoK3MsZnVuY3Rpb24oZSl7cmV0dXJuIHQuZ2xvYmFscy5pZ25vcmVZQXhpc0luZGV4ZXMuaW5kZXhPZihlKT4tMX0obikmJihoPWgtby53aWR0aC1zKSk6aD1sfHxyLmlzWUF4aXNIaWRkZW4obik/MDo1LHQuY29uZmlnLnlheGlzW25dLm9wcG9zaXRlP2ErPWg6aSs9aCxlKz1ofTtyZXR1cm4gdC5nbG9iYWxzLnlMYWJlbHNDb29yZHMubWFwKChmdW5jdGlvbih0LGUpe28odCxlKX0pKSx0Lmdsb2JhbHMueVRpdGxlQ29vcmRzLm1hcCgoZnVuY3Rpb24odCxlKXtvKHQsZSl9KSksdC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmIXQuY29uZmlnLnlheGlzWzBdLmZsb2F0aW5nJiYoZT10Lmdsb2JhbHMueUxhYmVsc0Nvb3Jkc1swXS53aWR0aCt0Lmdsb2JhbHMueVRpdGxlQ29vcmRzWzBdLndpZHRoKzE1KSx0aGlzLmRDdHgueUF4aXNXaWR0aExlZnQ9aSx0aGlzLmRDdHgueUF4aXNXaWR0aFJpZ2h0PWEsZX19XSksdH0oKSxydD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5kQ3R4PWV9cmV0dXJuIHIodCxbe2tleTpcImdyaWRQYWRGb3JDb2x1bW5zSW5OdW1lcmljQXhpc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztpZihlLmdsb2JhbHMubm9EYXRhfHxlLmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkKXJldHVybiAwO3ZhciBpPWZ1bmN0aW9uKHQpe3JldHVyblwiYmFyXCI9PT10fHxcInJhbmdlQmFyXCI9PT10fHxcImNhbmRsZXN0aWNrXCI9PT10fHxcImJveFBsb3RcIj09PXR9LGE9ZS5jb25maWcuY2hhcnQudHlwZSxzPTAscj1pKGEpP2UuY29uZmlnLnNlcmllcy5sZW5ndGg6MTtpZihlLmdsb2JhbHMuY29tYm9CYXJDb3VudD4wJiYocj1lLmdsb2JhbHMuY29tYm9CYXJDb3VudCksZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5mb3JFYWNoKChmdW5jdGlvbih0KXtpKHQudHlwZSkmJihyLT0xKX0pKSxlLmNvbmZpZy5jaGFydC5zdGFja2VkJiYocj0xKSwoaShhKXx8ZS5nbG9iYWxzLmNvbWJvQmFyQ291bnQ+MCkmJmUuZ2xvYmFscy5pc1hOdW1lcmljJiYhZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmcj4wKXt2YXIgbyxuLGw9TWF0aC5hYnMoZS5nbG9iYWxzLmluaXRpYWxNYXhYLWUuZ2xvYmFscy5pbml0aWFsTWluWCk7bDw9MyYmKGw9ZS5nbG9iYWxzLmRhdGFQb2ludHMpLG89bC90LGUuZ2xvYmFscy5taW5YRGlmZiYmZS5nbG9iYWxzLm1pblhEaWZmL28+MCYmKG49ZS5nbG9iYWxzLm1pblhEaWZmL28pLG4+dC8yJiYobi89MiksKHM9bi9yKnBhcnNlSW50KGUuY29uZmlnLnBsb3RPcHRpb25zLmJhci5jb2x1bW5XaWR0aCwxMCkvMTAwKTwxJiYocz0xKSxzPXMvKHI+MT8xOjEuNSkrNSxlLmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXM9c31yZXR1cm4gc319LHtrZXk6XCJncmlkUGFkRm9ydGl0bGVTdWJ0aXRsZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPWUuZ2xvYmFscyxhPXRoaXMuZEN0eC5pc1NwYXJrbGluZXx8IWUuZ2xvYmFscy5heGlzQ2hhcnRzPzA6MTA7W1widGl0bGVcIixcInN1YnRpdGxlXCJdLmZvckVhY2goKGZ1bmN0aW9uKGkpe3ZvaWQgMCE9PWUuY29uZmlnW2ldLnRleHQ/YSs9ZS5jb25maWdbaV0ubWFyZ2luOmErPXQuZEN0eC5pc1NwYXJrbGluZXx8IWUuZ2xvYmFscy5heGlzQ2hhcnRzPzA6NX0pKSwhZS5jb25maWcubGVnZW5kLnNob3d8fFwiYm90dG9tXCIhPT1lLmNvbmZpZy5sZWdlbmQucG9zaXRpb258fGUuY29uZmlnLmxlZ2VuZC5mbG9hdGluZ3x8ZS5nbG9iYWxzLmF4aXNDaGFydHN8fChhKz0xMCk7dmFyIHM9dGhpcy5kQ3R4LmRpbUhlbHBlcnMuZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcyhcInRpdGxlXCIpLHI9dGhpcy5kQ3R4LmRpbUhlbHBlcnMuZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcyhcInN1YnRpdGxlXCIpO2kuZ3JpZEhlaWdodD1pLmdyaWRIZWlnaHQtcy5oZWlnaHQtci5oZWlnaHQtYSxpLnRyYW5zbGF0ZVk9aS50cmFuc2xhdGVZK3MuaGVpZ2h0K3IuaGVpZ2h0K2F9fSx7a2V5Olwic2V0R3JpZFhQb3NGb3JEdWFsWUF4aXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPW5ldyBCKHRoaXMuZEN0eC5jdHgpO2kuY29uZmlnLnlheGlzLm1hcCgoZnVuY3Rpb24ocyxyKXstMSE9PWkuZ2xvYmFscy5pZ25vcmVZQXhpc0luZGV4ZXMuaW5kZXhPZihyKXx8cy5mbG9hdGluZ3x8YS5pc1lBeGlzSGlkZGVuKHIpfHwocy5vcHBvc2l0ZSYmKGkuZ2xvYmFscy50cmFuc2xhdGVYPWkuZ2xvYmFscy50cmFuc2xhdGVYLShlW3JdLndpZHRoK3Rbcl0ud2lkdGgpLXBhcnNlSW50KGkuY29uZmlnLnlheGlzW3JdLmxhYmVscy5zdHlsZS5mb250U2l6ZSwxMCkvMS4yLTEyKSxpLmdsb2JhbHMudHJhbnNsYXRlWDwyJiYoaS5nbG9iYWxzLnRyYW5zbGF0ZVg9MikpfSkpfX1dKSx0fSgpLG90PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMubGdSZWN0PXt9LHRoaXMueUF4aXNXaWR0aD0wLHRoaXMueUF4aXNXaWR0aExlZnQ9MCx0aGlzLnlBeGlzV2lkdGhSaWdodD0wLHRoaXMueEF4aXNIZWlnaHQ9MCx0aGlzLmlzU3BhcmtsaW5lPXRoaXMudy5jb25maWcuY2hhcnQuc3BhcmtsaW5lLmVuYWJsZWQsdGhpcy5kaW1IZWxwZXJzPW5ldyBpdCh0aGlzKSx0aGlzLmRpbVlBeGlzPW5ldyBzdCh0aGlzKSx0aGlzLmRpbVhBeGlzPW5ldyBhdCh0aGlzKSx0aGlzLmRpbUdyaWQ9bmV3IHJ0KHRoaXMpLHRoaXMubGdXaWR0aEZvclNpZGVMZWdlbmRzPTAsdGhpcy5ncmlkUGFkPXRoaXMudy5jb25maWcuZ3JpZC5wYWRkaW5nLHRoaXMueFBhZFJpZ2h0PTAsdGhpcy54UGFkTGVmdD0wfXJldHVybiByKHQsW3trZXk6XCJwbG90Q29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9ZS5nbG9iYWxzO3RoaXMubGdSZWN0PXRoaXMuZGltSGVscGVycy5nZXRMZWdlbmRzUmVjdCgpLHRoaXMuaXNTcGFya2xpbmUmJihlLmNvbmZpZy5tYXJrZXJzLmRpc2NyZXRlLmxlbmd0aD4wfHxlLmNvbmZpZy5tYXJrZXJzLnNpemU+MCkmJk9iamVjdC5lbnRyaWVzKHRoaXMuZ3JpZFBhZCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIGk9ZyhlLDIpLGE9aVswXSxzPWlbMV07dC5ncmlkUGFkW2FdPU1hdGgubWF4KHMsdC53Lmdsb2JhbHMubWFya2Vycy5sYXJnZXN0U2l6ZS8xLjUpfSkpLGkuYXhpc0NoYXJ0cz90aGlzLnNldERpbWVuc2lvbnNGb3JBeGlzQ2hhcnRzKCk6dGhpcy5zZXREaW1lbnNpb25zRm9yTm9uQXhpc0NoYXJ0cygpLHRoaXMuZGltR3JpZC5ncmlkUGFkRm9ydGl0bGVTdWJ0aXRsZSgpLGkuZ3JpZEhlaWdodD1pLmdyaWRIZWlnaHQtdGhpcy5ncmlkUGFkLnRvcC10aGlzLmdyaWRQYWQuYm90dG9tLGkuZ3JpZFdpZHRoPWkuZ3JpZFdpZHRoLXRoaXMuZ3JpZFBhZC5sZWZ0LXRoaXMuZ3JpZFBhZC5yaWdodC10aGlzLnhQYWRSaWdodC10aGlzLnhQYWRMZWZ0O3ZhciBhPXRoaXMuZGltR3JpZC5ncmlkUGFkRm9yQ29sdW1uc0luTnVtZXJpY0F4aXMoaS5ncmlkV2lkdGgpO2kuZ3JpZFdpZHRoPWkuZ3JpZFdpZHRoLTIqYSxpLnRyYW5zbGF0ZVg9aS50cmFuc2xhdGVYK3RoaXMuZ3JpZFBhZC5sZWZ0K3RoaXMueFBhZExlZnQrKGE+MD9hKzQ6MCksaS50cmFuc2xhdGVZPWkudHJhbnNsYXRlWSt0aGlzLmdyaWRQYWQudG9wfX0se2tleTpcInNldERpbWVuc2lvbnNGb3JBeGlzQ2hhcnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9ZS5nbG9iYWxzLGE9dGhpcy5kaW1ZQXhpcy5nZXR5QXhpc0xhYmVsc0Nvb3JkcygpLHM9dGhpcy5kaW1ZQXhpcy5nZXR5QXhpc1RpdGxlQ29vcmRzKCk7ZS5nbG9iYWxzLnlMYWJlbHNDb29yZHM9W10sZS5nbG9iYWxzLnlUaXRsZUNvb3Jkcz1bXSxlLmNvbmZpZy55YXhpcy5tYXAoKGZ1bmN0aW9uKHQsaSl7ZS5nbG9iYWxzLnlMYWJlbHNDb29yZHMucHVzaCh7d2lkdGg6YVtpXS53aWR0aCxpbmRleDppfSksZS5nbG9iYWxzLnlUaXRsZUNvb3Jkcy5wdXNoKHt3aWR0aDpzW2ldLndpZHRoLGluZGV4Oml9KX0pKSx0aGlzLnlBeGlzV2lkdGg9dGhpcy5kaW1ZQXhpcy5nZXRUb3RhbFlBeGlzV2lkdGgoKTt2YXIgcj10aGlzLmRpbVhBeGlzLmdldHhBeGlzTGFiZWxzQ29vcmRzKCksbz10aGlzLmRpbVhBeGlzLmdldHhBeGlzR3JvdXBMYWJlbHNDb29yZHMoKSxuPXRoaXMuZGltWEF4aXMuZ2V0eEF4aXNUaXRsZUNvb3JkcygpO3RoaXMuY29uZGl0aW9uYWxDaGVja3NGb3JBeGlzQ29vcmRzKHIsbixvKSxpLnRyYW5zbGF0ZVhBeGlzWT1lLmdsb2JhbHMucm90YXRlWExhYmVscz90aGlzLnhBeGlzSGVpZ2h0Lzg6LTQsaS50cmFuc2xhdGVYQXhpc1g9ZS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHMmJmUuZ2xvYmFscy5pc1hOdW1lcmljJiZlLmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlPD0tNDU/LXRoaXMueEF4aXNXaWR0aC80OjAsZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKGkucm90YXRlWExhYmVscz0hMSxpLnRyYW5zbGF0ZVhBeGlzWT1wYXJzZUludChlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUsMTApLzEuNSotMSksaS50cmFuc2xhdGVYQXhpc1k9aS50cmFuc2xhdGVYQXhpc1krZS5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFksaS50cmFuc2xhdGVYQXhpc1g9aS50cmFuc2xhdGVYQXhpc1grZS5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFg7dmFyIGw9dGhpcy55QXhpc1dpZHRoLGg9dGhpcy54QXhpc0hlaWdodDtpLnhBeGlzTGFiZWxzSGVpZ2h0PXRoaXMueEF4aXNIZWlnaHQtbi5oZWlnaHQsaS54QXhpc0dyb3VwTGFiZWxzSGVpZ2h0PWkueEF4aXNMYWJlbHNIZWlnaHQtci5oZWlnaHQsaS54QXhpc0xhYmVsc1dpZHRoPXRoaXMueEF4aXNXaWR0aCxpLnhBeGlzSGVpZ2h0PXRoaXMueEF4aXNIZWlnaHQ7dmFyIGM9MTA7KFwicmFkYXJcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGV8fHRoaXMuaXNTcGFya2xpbmUpJiYobD0wLGg9aS5nb2xkZW5QYWRkaW5nKSx0aGlzLmlzU3BhcmtsaW5lJiYodGhpcy5sZ1JlY3Q9e2hlaWdodDowLHdpZHRoOjB9KSwodGhpcy5pc1NwYXJrbGluZXx8XCJ0cmVlbWFwXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlKSYmKGw9MCxoPTAsYz0wKSx0aGlzLmlzU3BhcmtsaW5lfHx0aGlzLmRpbVhBeGlzLmFkZGl0aW9uYWxQYWRkaW5nWExhYmVscyhyKTt2YXIgZD1mdW5jdGlvbigpe2kudHJhbnNsYXRlWD1sLGkuZ3JpZEhlaWdodD1pLnN2Z0hlaWdodC10LmxnUmVjdC5oZWlnaHQtaC0odC5pc1NwYXJrbGluZXx8XCJ0cmVlbWFwXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlPzA6ZS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM/MTA6MTUpLGkuZ3JpZFdpZHRoPWkuc3ZnV2lkdGgtbH07c3dpdGNoKFwidG9wXCI9PT1lLmNvbmZpZy54YXhpcy5wb3NpdGlvbiYmKGM9aS54QXhpc0hlaWdodC1lLmNvbmZpZy54YXhpcy5heGlzVGlja3MuaGVpZ2h0LTUpLGUuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbil7Y2FzZVwiYm90dG9tXCI6aS50cmFuc2xhdGVZPWMsZCgpO2JyZWFrO2Nhc2VcInRvcFwiOmkudHJhbnNsYXRlWT10aGlzLmxnUmVjdC5oZWlnaHQrYyxkKCk7YnJlYWs7Y2FzZVwibGVmdFwiOmkudHJhbnNsYXRlWT1jLGkudHJhbnNsYXRlWD10aGlzLmxnUmVjdC53aWR0aCtsLGkuZ3JpZEhlaWdodD1pLnN2Z0hlaWdodC1oLTEyLGkuZ3JpZFdpZHRoPWkuc3ZnV2lkdGgtdGhpcy5sZ1JlY3Qud2lkdGgtbDticmVhaztjYXNlXCJyaWdodFwiOmkudHJhbnNsYXRlWT1jLGkudHJhbnNsYXRlWD1sLGkuZ3JpZEhlaWdodD1pLnN2Z0hlaWdodC1oLTEyLGkuZ3JpZFdpZHRoPWkuc3ZnV2lkdGgtdGhpcy5sZ1JlY3Qud2lkdGgtbC01O2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiTGVnZW5kIHBvc2l0aW9uIG5vdCBzdXBwb3J0ZWRcIil9dGhpcy5kaW1HcmlkLnNldEdyaWRYUG9zRm9yRHVhbFlBeGlzKHMsYSksbmV3IHEodGhpcy5jdHgpLnNldFlBeGlzWFBvc2l0aW9uKGEscyl9fSx7a2V5Olwic2V0RGltZW5zaW9uc0Zvck5vbkF4aXNDaGFydHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuZ2xvYmFscyxpPXQuY29uZmlnLGE9MDt0LmNvbmZpZy5sZWdlbmQuc2hvdyYmIXQuY29uZmlnLmxlZ2VuZC5mbG9hdGluZyYmKGE9MjApO3ZhciBzPVwicGllXCI9PT1pLmNoYXJ0LnR5cGV8fFwicG9sYXJBcmVhXCI9PT1pLmNoYXJ0LnR5cGV8fFwiZG9udXRcIj09PWkuY2hhcnQudHlwZT9cInBpZVwiOlwicmFkaWFsQmFyXCIscj1pLnBsb3RPcHRpb25zW3NdLm9mZnNldFksbz1pLnBsb3RPcHRpb25zW3NdLm9mZnNldFg7aWYoIWkubGVnZW5kLnNob3d8fGkubGVnZW5kLmZsb2F0aW5nKXJldHVybiBlLmdyaWRIZWlnaHQ9ZS5zdmdIZWlnaHQtaS5ncmlkLnBhZGRpbmcubGVmdCtpLmdyaWQucGFkZGluZy5yaWdodCxlLmdyaWRXaWR0aD1lLmdyaWRIZWlnaHQsZS50cmFuc2xhdGVZPXIsdm9pZChlLnRyYW5zbGF0ZVg9bysoZS5zdmdXaWR0aC1lLmdyaWRXaWR0aCkvMik7c3dpdGNoKGkubGVnZW5kLnBvc2l0aW9uKXtjYXNlXCJib3R0b21cIjplLmdyaWRIZWlnaHQ9ZS5zdmdIZWlnaHQtdGhpcy5sZ1JlY3QuaGVpZ2h0LWUuZ29sZGVuUGFkZGluZyxlLmdyaWRXaWR0aD1lLnN2Z1dpZHRoLGUudHJhbnNsYXRlWT1yLTEwLGUudHJhbnNsYXRlWD1vKyhlLnN2Z1dpZHRoLWUuZ3JpZFdpZHRoKS8yO2JyZWFrO2Nhc2VcInRvcFwiOmUuZ3JpZEhlaWdodD1lLnN2Z0hlaWdodC10aGlzLmxnUmVjdC5oZWlnaHQtZS5nb2xkZW5QYWRkaW5nLGUuZ3JpZFdpZHRoPWUuc3ZnV2lkdGgsZS50cmFuc2xhdGVZPXRoaXMubGdSZWN0LmhlaWdodCtyKzEwLGUudHJhbnNsYXRlWD1vKyhlLnN2Z1dpZHRoLWUuZ3JpZFdpZHRoKS8yO2JyZWFrO2Nhc2VcImxlZnRcIjplLmdyaWRXaWR0aD1lLnN2Z1dpZHRoLXRoaXMubGdSZWN0LndpZHRoLWEsZS5ncmlkSGVpZ2h0PVwiYXV0b1wiIT09aS5jaGFydC5oZWlnaHQ/ZS5zdmdIZWlnaHQ6ZS5ncmlkV2lkdGgsZS50cmFuc2xhdGVZPXIsZS50cmFuc2xhdGVYPW8rdGhpcy5sZ1JlY3Qud2lkdGgrYTticmVhaztjYXNlXCJyaWdodFwiOmUuZ3JpZFdpZHRoPWUuc3ZnV2lkdGgtdGhpcy5sZ1JlY3Qud2lkdGgtYS01LGUuZ3JpZEhlaWdodD1cImF1dG9cIiE9PWkuY2hhcnQuaGVpZ2h0P2Uuc3ZnSGVpZ2h0OmUuZ3JpZFdpZHRoLGUudHJhbnNsYXRlWT1yLGUudHJhbnNsYXRlWD1vKzEwO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiTGVnZW5kIHBvc2l0aW9uIG5vdCBzdXBwb3J0ZWRcIil9fX0se2tleTpcImNvbmRpdGlvbmFsQ2hlY2tzRm9yQXhpc0Nvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLncscz1hLmdsb2JhbHMuaGFzWGF4aXNHcm91cHM/MjoxLHI9aS5oZWlnaHQrdC5oZWlnaHQrZS5oZWlnaHQsbz1hLmdsb2JhbHMuaXNNdWx0aUxpbmVYPzEuMjphLmdsb2JhbHMuTElORV9IRUlHSFRfUkFUSU8sbj1hLmdsb2JhbHMucm90YXRlWExhYmVscz8yMjoxMCxsPWEuZ2xvYmFscy5yb3RhdGVYTGFiZWxzJiZcImJvdHRvbVwiPT09YS5jb25maWcubGVnZW5kLnBvc2l0aW9uPzEwOjA7dGhpcy54QXhpc0hlaWdodD1yKm8rcypuK2wsdGhpcy54QXhpc1dpZHRoPXQud2lkdGgsdGhpcy54QXhpc0hlaWdodC1lLmhlaWdodD5hLmNvbmZpZy54YXhpcy5sYWJlbHMubWF4SGVpZ2h0JiYodGhpcy54QXhpc0hlaWdodD1hLmNvbmZpZy54YXhpcy5sYWJlbHMubWF4SGVpZ2h0KSxhLmNvbmZpZy54YXhpcy5sYWJlbHMubWluSGVpZ2h0JiZ0aGlzLnhBeGlzSGVpZ2h0PGEuY29uZmlnLnhheGlzLmxhYmVscy5taW5IZWlnaHQmJih0aGlzLnhBeGlzSGVpZ2h0PWEuY29uZmlnLnhheGlzLmxhYmVscy5taW5IZWlnaHQpLGEuY29uZmlnLnhheGlzLmZsb2F0aW5nJiYodGhpcy54QXhpc0hlaWdodD0wKTt2YXIgaD0wLGM9MDthLmNvbmZpZy55YXhpcy5mb3JFYWNoKChmdW5jdGlvbih0KXtoKz10LmxhYmVscy5taW5XaWR0aCxjKz10LmxhYmVscy5tYXhXaWR0aH0pKSx0aGlzLnlBeGlzV2lkdGg8aCYmKHRoaXMueUF4aXNXaWR0aD1oKSx0aGlzLnlBeGlzV2lkdGg+YyYmKHRoaXMueUF4aXNXaWR0aD1jKX19XSksdH0oKSxudD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5sZ0N0eD1lfXJldHVybiByKHQsW3trZXk6XCJnZXRMZWdlbmRTdHlsZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTt0LnNldEF0dHJpYnV0ZShcInR5cGVcIixcInRleHQvY3NzXCIpO3ZhciBlPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFwiXFx0XFxuICAgIFxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZCB7XFx0XFxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xcdFxcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XFx0XFxuICAgICAgICBwYWRkaW5nOiAwIDEwcHg7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWJvdHRvbSwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tdG9wIHtcXHRcXG4gICAgICAgIGZsZXgtd3JhcDogd3JhcFxcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1yaWdodCwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tbGVmdCB7XFx0XFxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcdFxcbiAgICAgICAgYm90dG9tOiAwO1xcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1ib3R0b20uYXBleGNoYXJ0cy1hbGlnbi1sZWZ0LCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi10b3AuYXBleGNoYXJ0cy1hbGlnbi1sZWZ0LCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1yaWdodCwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tbGVmdCB7XFx0XFxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWJvdHRvbS5hcGV4Y2hhcnRzLWFsaWduLWNlbnRlciwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tdG9wLmFwZXhjaGFydHMtYWxpZ24tY2VudGVyIHtcXHRcXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOyAgXFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWJvdHRvbS5hcGV4Y2hhcnRzLWFsaWduLXJpZ2h0LCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi10b3AuYXBleGNoYXJ0cy1hbGlnbi1yaWdodCB7XFx0XFxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVzIHtcXHRcXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcXHRcXG4gICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWJvdHRvbSAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVzLCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi10b3AgLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllc3tcXHRcXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XFx0XFxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQtdGV4dCB7XFx0XFxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFx0XFxuICAgICAgICBmb250LXNpemU6IDE0cHg7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0ICosIC5hcGV4Y2hhcnRzLWxlZ2VuZC1tYXJrZXIgKiB7XFx0XFxuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLW1hcmtlciB7XFx0XFxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFx0XFxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFx0XFxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XFx0XFxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDNweDtcXHRcXG4gICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XFxuICAgICAgfVxcdFxcbiAgICAgIFxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcGV4Y2hhcnRzLWFsaWduLXJpZ2h0IC5hcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXMsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcGV4Y2hhcnRzLWFsaWduLWxlZnQgLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllc3tcXHRcXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllcy5hcGV4Y2hhcnRzLW5vLWNsaWNrIHtcXHRcXG4gICAgICAgIGN1cnNvcjogYXV0bztcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kIC5hcGV4Y2hhcnRzLWhpZGRlbi16ZXJvLXNlcmllcywgLmFwZXhjaGFydHMtbGVnZW5kIC5hcGV4Y2hhcnRzLWhpZGRlbi1udWxsLXNlcmllcyB7XFx0XFxuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWluYWN0aXZlLWxlZ2VuZCB7XFx0XFxuICAgICAgICBvcGFjaXR5OiAwLjQ1O1xcdFxcbiAgICAgIH1cIik7cmV0dXJuIHQuYXBwZW5kQ2hpbGQoZSksdH19LHtrZXk6XCJnZXRMZWdlbmRCQm94XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1sZWdlbmRcIikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZT10LndpZHRoO3JldHVybntjbHdoOnQuaGVpZ2h0LGNsd3c6ZX19fSx7a2V5OlwiYXBwZW5kVG9Gb3JlaWduT2JqZWN0XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLncuZ2xvYmFscy5kb20uZWxMZWdlbmRGb3JlaWduLmFwcGVuZENoaWxkKHRoaXMuZ2V0TGVnZW5kU3R5bGVzKCkpfX0se2tleTpcInRvZ2dsZURhdGFTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMsYT10aGlzLnc7aWYoYS5nbG9iYWxzLmF4aXNDaGFydHN8fFwicmFkaWFsQmFyXCI9PT1hLmNvbmZpZy5jaGFydC50eXBlKXthLmdsb2JhbHMucmVzaXplZD0hMDt2YXIgcz1udWxsLHI9bnVsbDtpZihhLmdsb2JhbHMucmlzaW5nU2VyaWVzPVtdLGEuZ2xvYmFscy5heGlzQ2hhcnRzPyhzPWEuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIi5jb25jYXQodCxcIiddXCIpKSxyPXBhcnNlSW50KHMuZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIiksMTApKToocz1hLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VyaWVzW3JlbD0nXCIuY29uY2F0KHQrMSxcIiddXCIpKSxyPXBhcnNlSW50KHMuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xKSxlKVt7Y3M6YS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcyxjc2k6YS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXN9LHtjczphLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzLGNzaTphLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlc31dLmZvckVhY2goKGZ1bmN0aW9uKHQpe2kucmlzZUNvbGxhcHNlZFNlcmllcyh0LmNzLHQuY3NpLHIpfSkpO2Vsc2UgdGhpcy5oaWRlU2VyaWVzKHtzZXJpZXNFbDpzLHJlYWxJbmRleDpyfSl9ZWxzZXt2YXIgbz1hLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIiAuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIi5jb25jYXQodCsxLFwiJ10gcGF0aFwiKSksbj1hLmNvbmZpZy5jaGFydC50eXBlO2lmKFwicGllXCI9PT1ufHxcInBvbGFyQXJlYVwiPT09bnx8XCJkb251dFwiPT09bil7dmFyIGw9YS5jb25maWcucGxvdE9wdGlvbnMucGllLmRvbnV0LmxhYmVscztuZXcgbSh0aGlzLmxnQ3R4LmN0eCkucGF0aE1vdXNlRG93bihvLm1lbWJlcnNbMF0sbnVsbCksdGhpcy5sZ0N0eC5jdHgucGllLnByaW50RGF0YUxhYmVsc0lubmVyKG8ubWVtYmVyc1swXS5ub2RlLGwpfW8uZmlyZShcImNsaWNrXCIpfX19LHtrZXk6XCJoaWRlU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5zZXJpZXNFbCxpPXQucmVhbEluZGV4LGE9dGhpcy53LHM9eC5jbG9uZShhLmNvbmZpZy5zZXJpZXMpO2lmKGEuZ2xvYmFscy5heGlzQ2hhcnRzKXt2YXIgcj0hMTtpZihhLmNvbmZpZy55YXhpc1tpXSYmYS5jb25maWcueWF4aXNbaV0uc2hvdyYmYS5jb25maWcueWF4aXNbaV0uc2hvd0Fsd2F5cyYmKHI9ITAsYS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihpKTwwJiYoYS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllcy5wdXNoKHtpbmRleDppLGRhdGE6c1tpXS5kYXRhLnNsaWNlKCksdHlwZTplLnBhcmVudE5vZGUuY2xhc3NOYW1lLmJhc2VWYWwuc3BsaXQoXCItXCIpWzFdfSksYS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMucHVzaChpKSkpLCFyKXthLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLnB1c2goe2luZGV4OmksZGF0YTpzW2ldLmRhdGEuc2xpY2UoKSx0eXBlOmUucGFyZW50Tm9kZS5jbGFzc05hbWUuYmFzZVZhbC5zcGxpdChcIi1cIilbMV19KSxhLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5wdXNoKGkpO3ZhciBvPWEuZ2xvYmFscy5yaXNpbmdTZXJpZXMuaW5kZXhPZihpKTthLmdsb2JhbHMucmlzaW5nU2VyaWVzLnNwbGljZShvLDEpfX1lbHNlIGEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMucHVzaCh7aW5kZXg6aSxkYXRhOnNbaV19KSxhLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5wdXNoKGkpO2Zvcih2YXIgbj1lLmNoaWxkTm9kZXMsbD0wO2w8bi5sZW5ndGg7bCsrKW5bbF0uY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwXCIpJiYobltsXS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWhpZGVcIik/bltsXS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1oaWRlXCIpOm5bbF0uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtaGlkZVwiKSk7YS5nbG9iYWxzLmFsbFNlcmllc0NvbGxhcHNlZD1hLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aD09PWEuY29uZmlnLnNlcmllcy5sZW5ndGgscz10aGlzLl9nZXRTZXJpZXNCYXNlZE9uQ29sbGFwc2VkU3RhdGUocyksdGhpcy5sZ0N0eC5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlU2VyaWVzKHMsYS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQpfX0se2tleTpcInJpc2VDb2xsYXBzZWRTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53LHM9eC5jbG9uZShhLmNvbmZpZy5zZXJpZXMpO2lmKHQubGVuZ3RoPjApe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXRbcl0uaW5kZXg9PT1pJiYoYS5nbG9iYWxzLmF4aXNDaGFydHM/KHNbaV0uZGF0YT10W3JdLmRhdGEuc2xpY2UoKSx0LnNwbGljZShyLDEpLGUuc3BsaWNlKHIsMSksYS5nbG9iYWxzLnJpc2luZ1Nlcmllcy5wdXNoKGkpKTooc1tpXT10W3JdLmRhdGEsdC5zcGxpY2UociwxKSxlLnNwbGljZShyLDEpLGEuZ2xvYmFscy5yaXNpbmdTZXJpZXMucHVzaChpKSkpO3M9dGhpcy5fZ2V0U2VyaWVzQmFzZWRPbkNvbGxhcHNlZFN0YXRlKHMpLHRoaXMubGdDdHguY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZVNlcmllcyhzLGEuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkKX19fSx7a2V5OlwiX2dldFNlcmllc0Jhc2VkT25Db2xsYXBzZWRTdGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztyZXR1cm4gZS5nbG9iYWxzLmF4aXNDaGFydHM/dC5mb3JFYWNoKChmdW5jdGlvbihpLGEpe2UuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoYSk+LTEmJih0W2FdLmRhdGE9W10pfSkpOnQuZm9yRWFjaCgoZnVuY3Rpb24oaSxhKXtlLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGEpPi0xJiYodFthXT0wKX0pKSx0fX1dKSx0fSgpLGx0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMub25MZWdlbmRDbGljaz10aGlzLm9uTGVnZW5kQ2xpY2suYmluZCh0aGlzKSx0aGlzLm9uTGVnZW5kSG92ZXJlZD10aGlzLm9uTGVnZW5kSG92ZXJlZC5iaW5kKHRoaXMpLHRoaXMuaXNCYXJzRGlzdHJpYnV0ZWQ9XCJiYXJcIj09PXRoaXMudy5jb25maWcuY2hhcnQudHlwZSYmdGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGlzdHJpYnV0ZWQmJjE9PT10aGlzLncuY29uZmlnLnNlcmllcy5sZW5ndGgsdGhpcy5sZWdlbmRIZWxwZXJzPW5ldyBudCh0aGlzKX1yZXR1cm4gcih0LFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5nbG9iYWxzLGk9dC5jb25maWc7aWYoKGkubGVnZW5kLnNob3dGb3JTaW5nbGVTZXJpZXMmJjE9PT1lLnNlcmllcy5sZW5ndGh8fHRoaXMuaXNCYXJzRGlzdHJpYnV0ZWR8fGUuc2VyaWVzLmxlbmd0aD4xfHwhZS5heGlzQ2hhcnRzKSYmaS5sZWdlbmQuc2hvdyl7Zm9yKDtlLmRvbS5lbExlZ2VuZFdyYXAuZmlyc3RDaGlsZDspZS5kb20uZWxMZWdlbmRXcmFwLnJlbW92ZUNoaWxkKGUuZG9tLmVsTGVnZW5kV3JhcC5maXJzdENoaWxkKTt0aGlzLmRyYXdMZWdlbmRzKCkseC5pc0lFMTEoKT9kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF0uYXBwZW5kQ2hpbGQodGhpcy5sZWdlbmRIZWxwZXJzLmdldExlZ2VuZFN0eWxlcygpKTp0aGlzLmxlZ2VuZEhlbHBlcnMuYXBwZW5kVG9Gb3JlaWduT2JqZWN0KCksXCJib3R0b21cIj09PWkubGVnZW5kLnBvc2l0aW9ufHxcInRvcFwiPT09aS5sZWdlbmQucG9zaXRpb24/dGhpcy5sZWdlbmRBbGlnbkhvcml6b250YWwoKTpcInJpZ2h0XCIhPT1pLmxlZ2VuZC5wb3NpdGlvbiYmXCJsZWZ0XCIhPT1pLmxlZ2VuZC5wb3NpdGlvbnx8dGhpcy5sZWdlbmRBbGlnblZlcnRpY2FsKCl9fX0se2tleTpcImRyYXdMZWdlbmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9ZS5jb25maWcubGVnZW5kLmZvbnRGYW1pbHksYT1lLmdsb2JhbHMuc2VyaWVzTmFtZXMscz1lLmdsb2JhbHMuY29sb3JzLnNsaWNlKCk7aWYoXCJoZWF0bWFwXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlKXt2YXIgcj1lLmNvbmZpZy5wbG90T3B0aW9ucy5oZWF0bWFwLmNvbG9yU2NhbGUucmFuZ2VzO2E9ci5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWU/dC5uYW1lOnQuZnJvbStcIiAtIFwiK3QudG99KSkscz1yLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuY29sb3J9KSl9ZWxzZSB0aGlzLmlzQmFyc0Rpc3RyaWJ1dGVkJiYoYT1lLmdsb2JhbHMubGFiZWxzLnNsaWNlKCkpO2UuY29uZmlnLmxlZ2VuZC5jdXN0b21MZWdlbmRJdGVtcy5sZW5ndGgmJihhPWUuY29uZmlnLmxlZ2VuZC5jdXN0b21MZWdlbmRJdGVtcyk7Zm9yKHZhciBvPWUuZ2xvYmFscy5sZWdlbmRGb3JtYXR0ZXIsbj1lLmNvbmZpZy5sZWdlbmQuaW52ZXJzZU9yZGVyLGw9bj9hLmxlbmd0aC0xOjA7bj9sPj0wOmw8PWEubGVuZ3RoLTE7bj9sLS06bCsrKXt2YXIgaD1vKGFbbF0se3Nlcmllc0luZGV4OmwsdzplfSksYz0hMSxkPSExO2lmKGUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoPjApZm9yKHZhciBnPTA7ZzxlLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aDtnKyspZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc1tnXS5pbmRleD09PWwmJihjPSEwKTtpZihlLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5sZW5ndGg+MClmb3IodmFyIHU9MDt1PGUuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmxlbmd0aDt1KyspZS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXNbdV09PT1sJiYoZD0hMCk7dmFyIHA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7cC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyXCIpO3ZhciBmPWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLm9mZnNldFgsYj1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5vZmZzZXRZLHY9ZS5jb25maWcubGVnZW5kLm1hcmtlcnMuaGVpZ2h0LHc9ZS5jb25maWcubGVnZW5kLm1hcmtlcnMud2lkdGgsaz1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5zdHJva2VXaWR0aCxBPWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLnN0cm9rZUNvbG9yLFM9ZS5jb25maWcubGVnZW5kLm1hcmtlcnMucmFkaXVzLEM9cC5zdHlsZTtDLmJhY2tncm91bmQ9c1tsXSxDLmNvbG9yPXNbbF0sQy5zZXRQcm9wZXJ0eShcImJhY2tncm91bmRcIixzW2xdLFwiaW1wb3J0YW50XCIpLGUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmZpbGxDb2xvcnMmJmUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmZpbGxDb2xvcnNbbF0mJihDLmJhY2tncm91bmQ9ZS5jb25maWcubGVnZW5kLm1hcmtlcnMuZmlsbENvbG9yc1tsXSksdm9pZCAwIT09ZS5nbG9iYWxzLnNlcmllc0NvbG9yc1tsXSYmKEMuYmFja2dyb3VuZD1lLmdsb2JhbHMuc2VyaWVzQ29sb3JzW2xdLEMuY29sb3I9ZS5nbG9iYWxzLnNlcmllc0NvbG9yc1tsXSksQy5oZWlnaHQ9QXJyYXkuaXNBcnJheSh2KT9wYXJzZUZsb2F0KHZbbF0pK1wicHhcIjpwYXJzZUZsb2F0KHYpK1wicHhcIixDLndpZHRoPUFycmF5LmlzQXJyYXkodyk/cGFyc2VGbG9hdCh3W2xdKStcInB4XCI6cGFyc2VGbG9hdCh3KStcInB4XCIsQy5sZWZ0PShBcnJheS5pc0FycmF5KGYpP3BhcnNlRmxvYXQoZltsXSk6cGFyc2VGbG9hdChmKSkrXCJweFwiLEMudG9wPShBcnJheS5pc0FycmF5KGIpP3BhcnNlRmxvYXQoYltsXSk6cGFyc2VGbG9hdChiKSkrXCJweFwiLEMuYm9yZGVyV2lkdGg9QXJyYXkuaXNBcnJheShrKT9rW2xdOmssQy5ib3JkZXJDb2xvcj1BcnJheS5pc0FycmF5KEEpP0FbbF06QSxDLmJvcmRlclJhZGl1cz1BcnJheS5pc0FycmF5KFMpP3BhcnNlRmxvYXQoU1tsXSkrXCJweFwiOnBhcnNlRmxvYXQoUykrXCJweFwiLGUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmN1c3RvbUhUTUwmJihBcnJheS5pc0FycmF5KGUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmN1c3RvbUhUTUwpP2UuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmN1c3RvbUhUTUxbbF0mJihwLmlubmVySFRNTD1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5jdXN0b21IVE1MW2xdKCkpOnAuaW5uZXJIVE1MPWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmN1c3RvbUhUTUwoKSksbS5zZXRBdHRycyhwLHtyZWw6bCsxLFwiZGF0YTpjb2xsYXBzZWRcIjpjfHxkfSksKGN8fGQpJiZwLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWluYWN0aXZlLWxlZ2VuZFwiKTt2YXIgTD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLFA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7UC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1sZWdlbmQtdGV4dFwiKSxQLmlubmVySFRNTD1BcnJheS5pc0FycmF5KGgpP2guam9pbihcIiBcIik6aDt2YXIgST1lLmNvbmZpZy5sZWdlbmQubGFiZWxzLnVzZVNlcmllc0NvbG9ycz9lLmdsb2JhbHMuY29sb3JzW2xdOmUuY29uZmlnLmxlZ2VuZC5sYWJlbHMuY29sb3JzO0l8fChJPWUuY29uZmlnLmNoYXJ0LmZvcmVDb2xvciksUC5zdHlsZS5jb2xvcj1JLFAuc3R5bGUuZm9udFNpemU9cGFyc2VGbG9hdChlLmNvbmZpZy5sZWdlbmQuZm9udFNpemUpK1wicHhcIixQLnN0eWxlLmZvbnRXZWlnaHQ9ZS5jb25maWcubGVnZW5kLmZvbnRXZWlnaHQsUC5zdHlsZS5mb250RmFtaWx5PWl8fGUuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksbS5zZXRBdHRycyhQLHtyZWw6bCsxLGk6bCxcImRhdGE6ZGVmYXVsdC10ZXh0XCI6ZW5jb2RlVVJJQ29tcG9uZW50KGgpLFwiZGF0YTpjb2xsYXBzZWRcIjpjfHxkfSksTC5hcHBlbmRDaGlsZChwKSxMLmFwcGVuZENoaWxkKFApO3ZhciBUPW5ldyB5KHRoaXMuY3R4KTtpZighZS5jb25maWcubGVnZW5kLnNob3dGb3JaZXJvU2VyaWVzKTA9PT1ULmdldFNlcmllc1RvdGFsQnlJbmRleChsKSYmVC5zZXJpZXNIYXZlU2FtZVZhbHVlcyhsKSYmIVQuaXNTZXJpZXNOdWxsKGwpJiYtMT09PWUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YobCkmJi0xPT09ZS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihsKSYmTC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1oaWRkZW4temVyby1zZXJpZXNcIik7ZS5jb25maWcubGVnZW5kLnNob3dGb3JOdWxsU2VyaWVzfHxULmlzU2VyaWVzTnVsbChsKSYmLTE9PT1lLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGwpJiYtMT09PWUuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YobCkmJkwuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtaGlkZGVuLW51bGwtc2VyaWVzXCIpLGUuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLmFwcGVuZENoaWxkKEwpLGUuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFsaWduLVwiLmNvbmNhdChlLmNvbmZpZy5sZWdlbmQuaG9yaXpvbnRhbEFsaWduKSksZS5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAuY2xhc3NMaXN0LmFkZChcImFweC1sZWdlbmQtcG9zaXRpb24tXCIrZS5jb25maWcubGVnZW5kLnBvc2l0aW9uKSxMLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXNcIiksTC5zdHlsZS5tYXJnaW49XCJcIi5jb25jYXQoZS5jb25maWcubGVnZW5kLml0ZW1NYXJnaW4udmVydGljYWwsXCJweCBcIikuY29uY2F0KGUuY29uZmlnLmxlZ2VuZC5pdGVtTWFyZ2luLmhvcml6b250YWwsXCJweFwiKSxlLmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcC5zdHlsZS53aWR0aD1lLmNvbmZpZy5sZWdlbmQud2lkdGg/ZS5jb25maWcubGVnZW5kLndpZHRoK1wicHhcIjpcIlwiLGUuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLnN0eWxlLmhlaWdodD1lLmNvbmZpZy5sZWdlbmQuaGVpZ2h0P2UuY29uZmlnLmxlZ2VuZC5oZWlnaHQrXCJweFwiOlwiXCIsbS5zZXRBdHRycyhMLHtyZWw6bCsxLHNlcmllc05hbWU6eC5lc2NhcGVTdHJpbmcoYVtsXSksXCJkYXRhOmNvbGxhcHNlZFwiOmN8fGR9KSwoY3x8ZCkmJkwuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtaW5hY3RpdmUtbGVnZW5kXCIpLGUuY29uZmlnLmxlZ2VuZC5vbkl0ZW1DbGljay50b2dnbGVEYXRhU2VyaWVzfHxMLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLW5vLWNsaWNrXCIpfWUuZ2xvYmFscy5kb20uZWxXcmFwLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHQub25MZWdlbmRDbGljaywhMCksZS5jb25maWcubGVnZW5kLm9uSXRlbUhvdmVyLmhpZ2hsaWdodERhdGFTZXJpZXMmJjA9PT1lLmNvbmZpZy5sZWdlbmQuY3VzdG9tTGVnZW5kSXRlbXMubGVuZ3RoJiYoZS5nbG9iYWxzLmRvbS5lbFdyYXAuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLHQub25MZWdlbmRIb3ZlcmVkLCEwKSxlLmdsb2JhbHMuZG9tLmVsV3JhcC5hZGRFdmVudExpc3RlbmVyKFwibW91c2VvdXRcIix0Lm9uTGVnZW5kSG92ZXJlZCwhMCkpfX0se2tleTpcInNldExlZ2VuZFdyYXBYWVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9aS5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAscz1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9MCxvPTA7aWYoXCJib3R0b21cIj09PWkuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbilvKz1pLmdsb2JhbHMuc3ZnSGVpZ2h0LXMuaGVpZ2h0LzI7ZWxzZSBpZihcInRvcFwiPT09aS5jb25maWcubGVnZW5kLnBvc2l0aW9uKXt2YXIgbj1uZXcgb3QodGhpcy5jdHgpLGw9bi5kaW1IZWxwZXJzLmdldFRpdGxlU3VidGl0bGVDb29yZHMoXCJ0aXRsZVwiKS5oZWlnaHQsaD1uLmRpbUhlbHBlcnMuZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcyhcInN1YnRpdGxlXCIpLmhlaWdodDtvPW8rKGw+MD9sLTEwOjApKyhoPjA/aC0xMDowKX1hLnN0eWxlLnBvc2l0aW9uPVwiYWJzb2x1dGVcIixyPXIrdCtpLmNvbmZpZy5sZWdlbmQub2Zmc2V0WCxvPW8rZStpLmNvbmZpZy5sZWdlbmQub2Zmc2V0WSxhLnN0eWxlLmxlZnQ9citcInB4XCIsYS5zdHlsZS50b3A9bytcInB4XCIsXCJib3R0b21cIj09PWkuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbj8oYS5zdHlsZS50b3A9XCJhdXRvXCIsYS5zdHlsZS5ib3R0b209NS1pLmNvbmZpZy5sZWdlbmQub2Zmc2V0WStcInB4XCIpOlwicmlnaHRcIj09PWkuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmKGEuc3R5bGUubGVmdD1cImF1dG9cIixhLnN0eWxlLnJpZ2h0PTI1K2kuY29uZmlnLmxlZ2VuZC5vZmZzZXRYK1wicHhcIik7W1wid2lkdGhcIixcImhlaWdodFwiXS5mb3JFYWNoKChmdW5jdGlvbih0KXthLnN0eWxlW3RdJiYoYS5zdHlsZVt0XT1wYXJzZUludChpLmNvbmZpZy5sZWdlbmRbdF0sMTApK1wicHhcIil9KSl9fSx7a2V5OlwibGVnZW5kQWxpZ25Ib3Jpem9udGFsXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dC5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAuc3R5bGUucmlnaHQ9MDt2YXIgZT10aGlzLmxlZ2VuZEhlbHBlcnMuZ2V0TGVnZW5kQkJveCgpLGk9bmV3IG90KHRoaXMuY3R4KSxhPWkuZGltSGVscGVycy5nZXRUaXRsZVN1YnRpdGxlQ29vcmRzKFwidGl0bGVcIikscz1pLmRpbUhlbHBlcnMuZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcyhcInN1YnRpdGxlXCIpLHI9MDtcImJvdHRvbVwiPT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9uP3I9LWUuY2x3aC8xLjg6XCJ0b3BcIj09PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmKHI9YS5oZWlnaHQrcy5oZWlnaHQrdC5jb25maWcudGl0bGUubWFyZ2luK3QuY29uZmlnLnN1YnRpdGxlLm1hcmdpbi0xMCksdGhpcy5zZXRMZWdlbmRXcmFwWFkoMjAscil9fSx7a2V5OlwibGVnZW5kQWxpZ25WZXJ0aWNhbFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dGhpcy5sZWdlbmRIZWxwZXJzLmdldExlZ2VuZEJCb3goKSxpPTA7XCJsZWZ0XCI9PT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJihpPTIwKSxcInJpZ2h0XCI9PT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJihpPXQuZ2xvYmFscy5zdmdXaWR0aC1lLmNsd3ctMTApLHRoaXMuc2V0TGVnZW5kV3JhcFhZKGksMjApfX0se2tleTpcIm9uTGVnZW5kSG92ZXJlZFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPXQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLXRleHRcIil8fHQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLW1hcmtlclwiKTtpZihcImhlYXRtYXBcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGV8fHRoaXMuaXNCYXJzRGlzdHJpYnV0ZWQpe2lmKGkpe3ZhciBhPXBhcnNlSW50KHQudGFyZ2V0LmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMTt0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KFwibGVnZW5kSG92ZXJcIixbdGhpcy5jdHgsYSx0aGlzLnddKSxuZXcgTih0aGlzLmN0eCkuaGlnaGxpZ2h0UmFuZ2VJblNlcmllcyh0LHQudGFyZ2V0KX19ZWxzZSF0LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWluYWN0aXZlLWxlZ2VuZFwiKSYmaSYmbmV3IE4odGhpcy5jdHgpLnRvZ2dsZVNlcmllc09uSG92ZXIodCx0LnRhcmdldCl9fSx7a2V5Olwib25MZWdlbmRDbGlja1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztpZighZS5jb25maWcubGVnZW5kLmN1c3RvbUxlZ2VuZEl0ZW1zLmxlbmd0aCYmKHQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLXRleHRcIil8fHQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLW1hcmtlclwiKSkpe3ZhciBpPXBhcnNlSW50KHQudGFyZ2V0LmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMSxhPVwidHJ1ZVwiPT09dC50YXJnZXQuZ2V0QXR0cmlidXRlKFwiZGF0YTpjb2xsYXBzZWRcIikscz10aGlzLncuY29uZmlnLmNoYXJ0LmV2ZW50cy5sZWdlbmRDbGljaztcImZ1bmN0aW9uXCI9PXR5cGVvZiBzJiZzKHRoaXMuY3R4LGksdGhpcy53KSx0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KFwibGVnZW5kQ2xpY2tcIixbdGhpcy5jdHgsaSx0aGlzLnddKTt2YXIgcj10aGlzLncuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLm9uQ2xpY2s7XCJmdW5jdGlvblwiPT10eXBlb2YgciYmdC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyXCIpJiYocih0aGlzLmN0eCxpLHRoaXMudyksdGhpcy5jdHguZXZlbnRzLmZpcmVFdmVudChcImxlZ2VuZE1hcmtlckNsaWNrXCIsW3RoaXMuY3R4LGksdGhpcy53XSkpLFwidHJlZW1hcFwiIT09ZS5jb25maWcuY2hhcnQudHlwZSYmXCJoZWF0bWFwXCIhPT1lLmNvbmZpZy5jaGFydC50eXBlJiYhdGhpcy5pc0JhcnNEaXN0cmlidXRlZCYmZS5jb25maWcubGVnZW5kLm9uSXRlbUNsaWNrLnRvZ2dsZURhdGFTZXJpZXMmJnRoaXMubGVnZW5kSGVscGVycy50b2dnbGVEYXRhU2VyaWVzKGksYSl9fX1dKSx0fSgpLGh0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53O3ZhciBpPXRoaXMudzt0aGlzLmV2PXRoaXMudy5jb25maWcuY2hhcnQuZXZlbnRzLHRoaXMuc2VsZWN0ZWRDbGFzcz1cImFwZXhjaGFydHMtc2VsZWN0ZWRcIix0aGlzLmxvY2FsZVZhbHVlcz10aGlzLncuZ2xvYmFscy5sb2NhbGUudG9vbGJhcix0aGlzLm1pblg9aS5nbG9iYWxzLm1pblgsdGhpcy5tYXhYPWkuZ2xvYmFscy5tYXhYfXJldHVybiByKHQsW3trZXk6XCJjcmVhdGVUb29sYmFyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9ZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKX0sYT1pKCk7aWYoYS5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLFwiYXBleGNoYXJ0cy10b29sYmFyXCIpLGEuc3R5bGUudG9wPWUuY29uZmlnLmNoYXJ0LnRvb2xiYXIub2Zmc2V0WStcInB4XCIsYS5zdHlsZS5yaWdodD0zLWUuY29uZmlnLmNoYXJ0LnRvb2xiYXIub2Zmc2V0WCtcInB4XCIsZS5nbG9iYWxzLmRvbS5lbFdyYXAuYXBwZW5kQ2hpbGQoYSksdGhpcy5lbFpvb209aSgpLHRoaXMuZWxab29tSW49aSgpLHRoaXMuZWxab29tT3V0PWkoKSx0aGlzLmVsUGFuPWkoKSx0aGlzLmVsU2VsZWN0aW9uPWkoKSx0aGlzLmVsWm9vbVJlc2V0PWkoKSx0aGlzLmVsTWVudUljb249aSgpLHRoaXMuZWxNZW51PWkoKSx0aGlzLmVsQ3VzdG9tSWNvbnM9W10sdGhpcy50PWUuY29uZmlnLmNoYXJ0LnRvb2xiYXIudG9vbHMsQXJyYXkuaXNBcnJheSh0aGlzLnQuY3VzdG9tSWNvbnMpKWZvcih2YXIgcz0wO3M8dGhpcy50LmN1c3RvbUljb25zLmxlbmd0aDtzKyspdGhpcy5lbEN1c3RvbUljb25zLnB1c2goaSgpKTt2YXIgcj1bXSxvPWZ1bmN0aW9uKGksYSxzKXt2YXIgbz1pLnRvTG93ZXJDYXNlKCk7dC50W29dJiZlLmNvbmZpZy5jaGFydC56b29tLmVuYWJsZWQmJnIucHVzaCh7ZWw6YSxpY29uOlwic3RyaW5nXCI9PXR5cGVvZiB0LnRbb10/dC50W29dOnMsdGl0bGU6dC5sb2NhbGVWYWx1ZXNbaV0sY2xhc3M6XCJhcGV4Y2hhcnRzLVwiLmNvbmNhdChvLFwiLWljb25cIil9KX07byhcInpvb21JblwiLHRoaXMuZWxab29tSW4sJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cXG4gICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBmaWxsPVwibm9uZVwiLz5cXG4gICAgPHBhdGggZD1cIk0xMyA3aC0ydjRIN3YyaDR2NGgydi00aDR2LTJoLTRWN3ptLTEtNUM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCIvPlxcbjwvc3ZnPlxcbicpLG8oXCJ6b29tT3V0XCIsdGhpcy5lbFpvb21PdXQsJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cXG4gICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBmaWxsPVwibm9uZVwiLz5cXG4gICAgPHBhdGggZD1cIk03IDExdjJoMTB2LTJIN3ptNS05QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIi8+XFxuPC9zdmc+XFxuJyk7dmFyIG49ZnVuY3Rpb24oaSl7dC50W2ldJiZlLmNvbmZpZy5jaGFydFtpXS5lbmFibGVkJiZyLnB1c2goe2VsOlwiem9vbVwiPT09aT90LmVsWm9vbTp0LmVsU2VsZWN0aW9uLGljb246XCJzdHJpbmdcIj09dHlwZW9mIHQudFtpXT90LnRbaV06XCJ6b29tXCI9PT1pPyc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwiIzAwMDAwMFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIj5cXG4gICAgPHBhdGggZD1cIk0xNS41IDE0aC0uNzlsLS4yOC0uMjdDMTUuNDEgMTIuNTkgMTYgMTEuMTEgMTYgOS41IDE2IDUuOTEgMTMuMDkgMyA5LjUgM1MzIDUuOTEgMyA5LjUgNS45MSAxNiA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0elwiLz5cXG4gICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMFYwelwiIGZpbGw9XCJub25lXCIvPlxcbiAgICA8cGF0aCBkPVwiTTEyIDEwaC0ydjJIOXYtMkg3VjloMlY3aDF2MmgydjF6XCIvPlxcbjwvc3ZnPic6JzxzdmcgZmlsbD1cIiM2RTgxOTJcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxcbiAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIvPlxcbiAgICA8cGF0aCBkPVwiTTMgNWgyVjNjLTEuMSAwLTIgLjktMiAyem0wIDhoMnYtMkgzdjJ6bTQgOGgydi0ySDd2MnpNMyA5aDJWN0gzdjJ6bTEwLTZoLTJ2MmgyVjN6bTYgMHYyaDJjMC0xLjEtLjktMi0yLTJ6TTUgMjF2LTJIM2MwIDEuMS45IDIgMiAyem0tMi00aDJ2LTJIM3Yyek05IDNIN3YyaDJWM3ptMiAxOGgydi0yaC0ydjJ6bTgtOGgydi0yaC0ydjJ6bTAgOGMxLjEgMCAyLS45IDItMmgtMnYyem0wLTEyaDJWN2gtMnYyem0wIDhoMnYtMmgtMnYyem0tNCA0aDJ2LTJoLTJ2MnptMC0xNmgyVjNoLTJ2MnpcIi8+XFxuPC9zdmc+Jyx0aXRsZTp0LmxvY2FsZVZhbHVlc1tcInpvb21cIj09PWk/XCJzZWxlY3Rpb25ab29tXCI6XCJzZWxlY3Rpb25cIl0sY2xhc3M6ZS5nbG9iYWxzLmlzVG91Y2hEZXZpY2U/XCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCI6XCJhcGV4Y2hhcnRzLVwiLmNvbmNhdChpLFwiLWljb25cIil9KX07bihcInpvb21cIiksbihcInNlbGVjdGlvblwiKSx0aGlzLnQucGFuJiZlLmNvbmZpZy5jaGFydC56b29tLmVuYWJsZWQmJnIucHVzaCh7ZWw6dGhpcy5lbFBhbixpY29uOlwic3RyaW5nXCI9PXR5cGVvZiB0aGlzLnQucGFuP3RoaXMudC5wYW46JzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIGZpbGw9XCIjMDAwMDAwXCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNFwiPlxcbiAgICA8ZGVmcz5cXG4gICAgICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgaWQ9XCJhXCIvPlxcbiAgICA8L2RlZnM+XFxuICAgIDxjbGlwUGF0aCBpZD1cImJcIj5cXG4gICAgICAgIDx1c2Ugb3ZlcmZsb3c9XCJ2aXNpYmxlXCIgeGxpbms6aHJlZj1cIiNhXCIvPlxcbiAgICA8L2NsaXBQYXRoPlxcbiAgICA8cGF0aCBjbGlwLXBhdGg9XCJ1cmwoI2IpXCIgZD1cIk0yMyA1LjVWMjBjMCAyLjItMS44IDQtNCA0aC03LjNjLTEuMDggMC0yLjEtLjQzLTIuODUtMS4xOUwxIDE0LjgzczEuMjYtMS4yMyAxLjMtMS4yNWMuMjItLjE5LjQ5LS4yOS43OS0uMjkuMjIgMCAuNDIuMDYuNi4xNi4wNC4wMSA0LjMxIDIuNDYgNC4zMSAyLjQ2VjRjMC0uODMuNjctMS41IDEuNS0xLjVTMTEgMy4xNyAxMSA0djdoMVYxLjVjMC0uODMuNjctMS41IDEuNS0xLjVTMTUgLjY3IDE1IDEuNVYxMWgxVjIuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVYxMWgxVjUuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNXpcIi8+XFxuPC9zdmc+Jyx0aXRsZTp0aGlzLmxvY2FsZVZhbHVlcy5wYW4sY2xhc3M6ZS5nbG9iYWxzLmlzVG91Y2hEZXZpY2U/XCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCI6XCJhcGV4Y2hhcnRzLXBhbi1pY29uXCJ9KSxvKFwicmVzZXRcIix0aGlzLmVsWm9vbVJlc2V0LCc8c3ZnIGZpbGw9XCIjMDAwMDAwXCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cXG4gICAgPHBhdGggZD1cIk0xMCAyMHYtNmg0djZoNXYtOGgzTDEyIDMgMiAxMmgzdjh6XCIvPlxcbiAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIvPlxcbjwvc3ZnPicpLHRoaXMudC5kb3dubG9hZCYmci5wdXNoKHtlbDp0aGlzLmVsTWVudUljb24saWNvbjpcInN0cmluZ1wiPT10eXBlb2YgdGhpcy50LmRvd25sb2FkP3RoaXMudC5kb3dubG9hZDonPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPjxwYXRoIGZpbGw9XCJub25lXCIgZD1cIk0wIDBoMjR2MjRIMFYwelwiLz48cGF0aCBkPVwiTTMgMThoMTh2LTJIM3Yyem0wLTVoMTh2LTJIM3Yyem0wLTd2MmgxOFY2SDN6XCIvPjwvc3ZnPicsdGl0bGU6dGhpcy5sb2NhbGVWYWx1ZXMubWVudSxjbGFzczpcImFwZXhjaGFydHMtbWVudS1pY29uXCJ9KTtmb3IodmFyIGw9MDtsPHRoaXMuZWxDdXN0b21JY29ucy5sZW5ndGg7bCsrKXIucHVzaCh7ZWw6dGhpcy5lbEN1c3RvbUljb25zW2xdLGljb246dGhpcy50LmN1c3RvbUljb25zW2xdLmljb24sdGl0bGU6dGhpcy50LmN1c3RvbUljb25zW2xdLnRpdGxlLGluZGV4OnRoaXMudC5jdXN0b21JY29uc1tsXS5pbmRleCxjbGFzczpcImFwZXhjaGFydHMtdG9vbGJhci1jdXN0b20taWNvbiBcIit0aGlzLnQuY3VzdG9tSWNvbnNbbF0uY2xhc3N9KTtyLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5pbmRleCYmeC5tb3ZlSW5kZXhJbkFycmF5KHIsZSx0LmluZGV4KX0pKTtmb3IodmFyIGg9MDtoPHIubGVuZ3RoO2grKyltLnNldEF0dHJzKHJbaF0uZWwse2NsYXNzOnJbaF0uY2xhc3MsdGl0bGU6cltoXS50aXRsZX0pLHJbaF0uZWwuaW5uZXJIVE1MPXJbaF0uaWNvbixhLmFwcGVuZENoaWxkKHJbaF0uZWwpO3RoaXMuX2NyZWF0ZUhhbWJ1cmdlck1lbnUoYSksZS5nbG9iYWxzLnpvb21FbmFibGVkP3RoaXMuZWxab29tLmNsYXNzTGlzdC5hZGQodGhpcy5zZWxlY3RlZENsYXNzKTplLmdsb2JhbHMucGFuRW5hYmxlZD90aGlzLmVsUGFuLmNsYXNzTGlzdC5hZGQodGhpcy5zZWxlY3RlZENsYXNzKTplLmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZCYmdGhpcy5lbFNlbGVjdGlvbi5jbGFzc0xpc3QuYWRkKHRoaXMuc2VsZWN0ZWRDbGFzcyksdGhpcy5hZGRUb29sYmFyRXZlbnRMaXN0ZW5lcnMoKX19LHtrZXk6XCJfY3JlYXRlSGFtYnVyZ2VyTWVudVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuZWxNZW51SXRlbXM9W10sdC5hcHBlbmRDaGlsZCh0aGlzLmVsTWVudSksbS5zZXRBdHRycyh0aGlzLmVsTWVudSx7Y2xhc3M6XCJhcGV4Y2hhcnRzLW1lbnVcIn0pO3ZhciBlPVt7bmFtZTpcImV4cG9ydFNWR1wiLHRpdGxlOnRoaXMubG9jYWxlVmFsdWVzLmV4cG9ydFRvU1ZHfSx7bmFtZTpcImV4cG9ydFBOR1wiLHRpdGxlOnRoaXMubG9jYWxlVmFsdWVzLmV4cG9ydFRvUE5HfSx7bmFtZTpcImV4cG9ydENTVlwiLHRpdGxlOnRoaXMubG9jYWxlVmFsdWVzLmV4cG9ydFRvQ1NWfV07dGhpcy53Lmdsb2JhbHMuYWxsU2VyaWVzSGFzRXF1YWxYfHxlLnNwbGljZSgyLDEpO2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKXRoaXMuZWxNZW51SXRlbXMucHVzaChkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKSx0aGlzLmVsTWVudUl0ZW1zW2ldLmlubmVySFRNTD1lW2ldLnRpdGxlLG0uc2V0QXR0cnModGhpcy5lbE1lbnVJdGVtc1tpXSx7Y2xhc3M6XCJhcGV4Y2hhcnRzLW1lbnUtaXRlbSBcIi5jb25jYXQoZVtpXS5uYW1lKSx0aXRsZTplW2ldLnRpdGxlfSksdGhpcy5lbE1lbnUuYXBwZW5kQ2hpbGQodGhpcy5lbE1lbnVJdGVtc1tpXSl9fSx7a2V5OlwiYWRkVG9vbGJhckV2ZW50TGlzdGVuZXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuZWxab29tUmVzZXQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy5oYW5kbGVab29tUmVzZXQuYmluZCh0aGlzKSksdGhpcy5lbFNlbGVjdGlvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLnRvZ2dsZVpvb21TZWxlY3Rpb24uYmluZCh0aGlzLFwic2VsZWN0aW9uXCIpKSx0aGlzLmVsWm9vbS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLnRvZ2dsZVpvb21TZWxlY3Rpb24uYmluZCh0aGlzLFwiem9vbVwiKSksdGhpcy5lbFpvb21Jbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLmhhbmRsZVpvb21Jbi5iaW5kKHRoaXMpKSx0aGlzLmVsWm9vbU91dC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLmhhbmRsZVpvb21PdXQuYmluZCh0aGlzKSksdGhpcy5lbFBhbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLnRvZ2dsZVBhbm5pbmcuYmluZCh0aGlzKSksdGhpcy5lbE1lbnVJY29uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMudG9nZ2xlTWVudS5iaW5kKHRoaXMpKSx0aGlzLmVsTWVudUl0ZW1zLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UuY2xhc3NMaXN0LmNvbnRhaW5zKFwiZXhwb3J0U1ZHXCIpP2UuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdC5oYW5kbGVEb3dubG9hZC5iaW5kKHQsXCJzdmdcIikpOmUuY2xhc3NMaXN0LmNvbnRhaW5zKFwiZXhwb3J0UE5HXCIpP2UuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdC5oYW5kbGVEb3dubG9hZC5iaW5kKHQsXCJwbmdcIikpOmUuY2xhc3NMaXN0LmNvbnRhaW5zKFwiZXhwb3J0Q1NWXCIpJiZlLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHQuaGFuZGxlRG93bmxvYWQuYmluZCh0LFwiY3N2XCIpKX0pKTtmb3IodmFyIGU9MDtlPHRoaXMudC5jdXN0b21JY29ucy5sZW5ndGg7ZSsrKXRoaXMuZWxDdXN0b21JY29uc1tlXS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLnQuY3VzdG9tSWNvbnNbZV0uY2xpY2suYmluZCh0aGlzLHRoaXMuY3R4LHRoaXMuY3R4LncpKX19LHtrZXk6XCJ0b2dnbGVab29tU2VsZWN0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5jdHguZ2V0U3luY2VkQ2hhcnRzKCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5jdHgudG9vbGJhci50b2dnbGVPdGhlckNvbnRyb2xzKCk7dmFyIGk9XCJzZWxlY3Rpb25cIj09PXQ/ZS5jdHgudG9vbGJhci5lbFNlbGVjdGlvbjplLmN0eC50b29sYmFyLmVsWm9vbSxhPVwic2VsZWN0aW9uXCI9PT10P1wic2VsZWN0aW9uRW5hYmxlZFwiOlwiem9vbUVuYWJsZWRcIjtlLncuZ2xvYmFsc1thXT0hZS53Lmdsb2JhbHNbYV0saS5jbGFzc0xpc3QuY29udGFpbnMoZS5jdHgudG9vbGJhci5zZWxlY3RlZENsYXNzKT9pLmNsYXNzTGlzdC5yZW1vdmUoZS5jdHgudG9vbGJhci5zZWxlY3RlZENsYXNzKTppLmNsYXNzTGlzdC5hZGQoZS5jdHgudG9vbGJhci5zZWxlY3RlZENsYXNzKX0pKX19LHtrZXk6XCJnZXRUb29sYmFySWNvbnNSZWZlcmVuY2VcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudzt0aGlzLmVsWm9vbXx8KHRoaXMuZWxab29tPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy16b29tLWljb25cIikpLHRoaXMuZWxQYW58fCh0aGlzLmVsUGFuPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1wYW4taWNvblwiKSksdGhpcy5lbFNlbGVjdGlvbnx8KHRoaXMuZWxTZWxlY3Rpb249dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1pY29uXCIpKX19LHtrZXk6XCJlbmFibGVab29tUGFuRnJvbVRvb2xiYXJcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLnRvZ2dsZU90aGVyQ29udHJvbHMoKSxcInBhblwiPT09dD90aGlzLncuZ2xvYmFscy5wYW5FbmFibGVkPSEwOnRoaXMudy5nbG9iYWxzLnpvb21FbmFibGVkPSEwO3ZhciBlPVwicGFuXCI9PT10P3RoaXMuZWxQYW46dGhpcy5lbFpvb20saT1cInBhblwiPT09dD90aGlzLmVsWm9vbTp0aGlzLmVsUGFuO2UmJmUuY2xhc3NMaXN0LmFkZCh0aGlzLnNlbGVjdGVkQ2xhc3MpLGkmJmkuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLnNlbGVjdGVkQ2xhc3MpfX0se2tleTpcInRvZ2dsZVBhbm5pbmdcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY3R4LmdldFN5bmNlZENoYXJ0cygpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuY3R4LnRvb2xiYXIudG9nZ2xlT3RoZXJDb250cm9scygpLHQudy5nbG9iYWxzLnBhbkVuYWJsZWQ9IXQudy5nbG9iYWxzLnBhbkVuYWJsZWQsdC5jdHgudG9vbGJhci5lbFBhbi5jbGFzc0xpc3QuY29udGFpbnModC5jdHgudG9vbGJhci5zZWxlY3RlZENsYXNzKT90LmN0eC50b29sYmFyLmVsUGFuLmNsYXNzTGlzdC5yZW1vdmUodC5jdHgudG9vbGJhci5zZWxlY3RlZENsYXNzKTp0LmN0eC50b29sYmFyLmVsUGFuLmNsYXNzTGlzdC5hZGQodC5jdHgudG9vbGJhci5zZWxlY3RlZENsYXNzKX0pKX19LHtrZXk6XCJ0b2dnbGVPdGhlckNvbnRyb2xzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53O2UuZ2xvYmFscy5wYW5FbmFibGVkPSExLGUuZ2xvYmFscy56b29tRW5hYmxlZD0hMSxlLmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZD0hMSx0aGlzLmdldFRvb2xiYXJJY29uc1JlZmVyZW5jZSgpLFt0aGlzLmVsUGFuLHRoaXMuZWxTZWxlY3Rpb24sdGhpcy5lbFpvb21dLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UmJmUuY2xhc3NMaXN0LnJlbW92ZSh0LnNlbGVjdGVkQ2xhc3MpfSkpfX0se2tleTpcImhhbmRsZVpvb21JblwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O3QuZ2xvYmFscy5pc1JhbmdlQmFyJiYodGhpcy5taW5YPXQuZ2xvYmFscy5taW5ZLHRoaXMubWF4WD10Lmdsb2JhbHMubWF4WSk7dmFyIGU9KHRoaXMubWluWCt0aGlzLm1heFgpLzIsaT0odGhpcy5taW5YK2UpLzIsYT0odGhpcy5tYXhYK2UpLzIscz10aGlzLl9nZXROZXdNaW5YTWF4WChpLGEpO3QuZ2xvYmFscy5kaXNhYmxlWm9vbUlufHx0aGlzLnpvb21VcGRhdGVPcHRpb25zKHMubWluWCxzLm1heFgpfX0se2tleTpcImhhbmRsZVpvb21PdXRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudztpZih0Lmdsb2JhbHMuaXNSYW5nZUJhciYmKHRoaXMubWluWD10Lmdsb2JhbHMubWluWSx0aGlzLm1heFg9dC5nbG9iYWxzLm1heFkpLCEoXCJkYXRldGltZVwiPT09dC5jb25maWcueGF4aXMudHlwZSYmbmV3IERhdGUodGhpcy5taW5YKS5nZXRVVENGdWxsWWVhcigpPDFlMykpe3ZhciBlPSh0aGlzLm1pblgrdGhpcy5tYXhYKS8yLGk9dGhpcy5taW5YLShlLXRoaXMubWluWCksYT10aGlzLm1heFgtKGUtdGhpcy5tYXhYKSxzPXRoaXMuX2dldE5ld01pblhNYXhYKGksYSk7dC5nbG9iYWxzLmRpc2FibGVab29tT3V0fHx0aGlzLnpvb21VcGRhdGVPcHRpb25zKHMubWluWCxzLm1heFgpfX19LHtrZXk6XCJfZ2V0TmV3TWluWE1heFhcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudy5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljO3JldHVybnttaW5YOmk/TWF0aC5mbG9vcih0KTp0LG1heFg6aT9NYXRoLmZsb29yKGUpOmV9fX0se2tleTpcInpvb21VcGRhdGVPcHRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aWYodm9pZCAwIT09dHx8dm9pZCAwIT09ZSl7aWYoIShpLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJih0PDEmJih0PTEsZT1pLmdsb2JhbHMuZGF0YVBvaW50cyksZS10PDIpKSl7dmFyIGE9e21pbjp0LG1heDplfSxzPXRoaXMuZ2V0QmVmb3JlWm9vbVJhbmdlKGEpO3MmJihhPXMueGF4aXMpO3ZhciByPXt4YXhpczphfSxvPXguY2xvbmUoaS5nbG9iYWxzLmluaXRpYWxDb25maWcueWF4aXMpO2lmKGkuY29uZmlnLmNoYXJ0Lnpvb20uYXV0b1NjYWxlWWF4aXMpbz1uZXcgXyh0aGlzLmN0eCkuYXV0b1NjYWxlWSh0aGlzLmN0eCxvLHt4YXhpczphfSk7aS5jb25maWcuY2hhcnQuZ3JvdXB8fChyLnlheGlzPW8pLHRoaXMudy5nbG9iYWxzLnpvb21lZD0hMCx0aGlzLmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVPcHRpb25zKHIsITEsdGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCksdGhpcy56b29tQ2FsbGJhY2soYSxvKX19ZWxzZSB0aGlzLmhhbmRsZVpvb21SZXNldCgpfX0se2tleTpcInpvb21DYWxsYmFja1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7XCJmdW5jdGlvblwiPT10eXBlb2YgdGhpcy5ldi56b29tZWQmJnRoaXMuZXYuem9vbWVkKHRoaXMuY3R4LHt4YXhpczp0LHlheGlzOmV9KX19LHtrZXk6XCJnZXRCZWZvcmVab29tUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPW51bGw7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdGhpcy5ldi5iZWZvcmVab29tJiYoaT10aGlzLmV2LmJlZm9yZVpvb20odGhpcyx7eGF4aXM6dCx5YXhpczplfSkpLGl9fSx7a2V5OlwidG9nZ2xlTWVudVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt3aW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXt0LmVsTWVudS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLW1lbnUtb3BlblwiKT90LmVsTWVudS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1tZW51LW9wZW5cIik6dC5lbE1lbnUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtbWVudS1vcGVuXCIpfSksMCl9fSx7a2V5OlwiaGFuZGxlRG93bmxvYWRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgRyh0aGlzLmN0eCk7c3dpdGNoKHQpe2Nhc2VcInN2Z1wiOmkuZXhwb3J0VG9TVkcodGhpcy5jdHgpO2JyZWFrO2Nhc2VcInBuZ1wiOmkuZXhwb3J0VG9QbmcodGhpcy5jdHgpO2JyZWFrO2Nhc2VcImNzdlwiOmkuZXhwb3J0VG9DU1Yoe3NlcmllczplLmNvbmZpZy5zZXJpZXMsY29sdW1uRGVsaW1pdGVyOmUuY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LmNzdi5jb2x1bW5EZWxpbWl0ZXJ9KX19fSx7a2V5OlwiaGFuZGxlWm9vbVJlc2V0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5jdHguZ2V0U3luY2VkQ2hhcnRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC53O2lmKGUuZ2xvYmFscy5sYXN0WEF4aXMubWluPXZvaWQgMCxlLmdsb2JhbHMubGFzdFhBeGlzLm1heD12b2lkIDAsdC51cGRhdGVIZWxwZXJzLnJldmVydERlZmF1bHRBeGlzTWluTWF4KCksXCJmdW5jdGlvblwiPT10eXBlb2YgZS5jb25maWcuY2hhcnQuZXZlbnRzLmJlZm9yZVJlc2V0Wm9vbSl7dmFyIGk9ZS5jb25maWcuY2hhcnQuZXZlbnRzLmJlZm9yZVJlc2V0Wm9vbSh0LGUpO2kmJnQudXBkYXRlSGVscGVycy5yZXZlcnREZWZhdWx0QXhpc01pbk1heChpKX1cImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbmZpZy5jaGFydC5ldmVudHMuem9vbWVkJiZ0LmN0eC50b29sYmFyLnpvb21DYWxsYmFjayh7bWluOmUuY29uZmlnLnhheGlzLm1pbixtYXg6ZS5jb25maWcueGF4aXMubWF4fSksZS5nbG9iYWxzLnpvb21lZD0hMTt2YXIgYT10LmN0eC5zZXJpZXMuZW1wdHlDb2xsYXBzZWRTZXJpZXMoeC5jbG9uZShlLmdsb2JhbHMuaW5pdGlhbFNlcmllcykpO3QudXBkYXRlSGVscGVycy5fdXBkYXRlU2VyaWVzKGEsZS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQpfSkpfX0se2tleTpcImRlc3Ryb3lcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZWxab29tPW51bGwsdGhpcy5lbFpvb21Jbj1udWxsLHRoaXMuZWxab29tT3V0PW51bGwsdGhpcy5lbFBhbj1udWxsLHRoaXMuZWxTZWxlY3Rpb249bnVsbCx0aGlzLmVsWm9vbVJlc2V0PW51bGwsdGhpcy5lbE1lbnVJY29uPW51bGx9fV0pLHR9KCksY3Q9ZnVuY3Rpb24odCl7bihpLGh0KTt2YXIgZT1kKGkpO2Z1bmN0aW9uIGkodCl7dmFyIHM7cmV0dXJuIGEodGhpcyxpKSwocz1lLmNhbGwodGhpcyx0KSkuY3R4PXQscy53PXQudyxzLmRyYWdnZWQ9ITEscy5ncmFwaGljcz1uZXcgbShzLmN0eCkscy5ldmVudExpc3Q9W1wibW91c2Vkb3duXCIsXCJtb3VzZWxlYXZlXCIsXCJtb3VzZW1vdmVcIixcInRvdWNoc3RhcnRcIixcInRvdWNobW92ZVwiLFwibW91c2V1cFwiLFwidG91Y2hlbmRcIl0scy5jbGllbnRYPTAscy5jbGllbnRZPTAscy5zdGFydFg9MCxzLmVuZFg9MCxzLmRyYWdYPTAscy5zdGFydFk9MCxzLmVuZFk9MCxzLmRyYWdZPTAscy5tb3ZlRGlyZWN0aW9uPVwibm9uZVwiLHN9cmV0dXJuIHIoaSxbe2tleTpcImluaXRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dC54eVJhdGlvcyxhPXRoaXMudyxzPXRoaXM7dGhpcy54eVJhdGlvcz1pLHRoaXMuem9vbVJlY3Q9dGhpcy5ncmFwaGljcy5kcmF3UmVjdCgwLDAsMCwwKSx0aGlzLnNlbGVjdGlvblJlY3Q9dGhpcy5ncmFwaGljcy5kcmF3UmVjdCgwLDAsMCwwKSx0aGlzLmdyaWRSZWN0PWEuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1ncmlkXCIpLHRoaXMuem9vbVJlY3Qubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy16b29tLXJlY3RcIiksdGhpcy5zZWxlY3Rpb25SZWN0Lm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3RcIiksYS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQodGhpcy56b29tUmVjdCksYS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQodGhpcy5zZWxlY3Rpb25SZWN0KSxcInhcIj09PWEuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi50eXBlP3RoaXMuc2xEcmFnZ2FibGVSZWN0PXRoaXMuc2VsZWN0aW9uUmVjdC5kcmFnZ2FibGUoe21pblg6MCxtaW5ZOjAsbWF4WDphLmdsb2JhbHMuZ3JpZFdpZHRoLG1heFk6YS5nbG9iYWxzLmdyaWRIZWlnaHR9KS5vbihcImRyYWdtb3ZlXCIsdGhpcy5zZWxlY3Rpb25EcmFnZ2luZy5iaW5kKHRoaXMsXCJkcmFnZ2luZ1wiKSk6XCJ5XCI9PT1hLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24udHlwZT90aGlzLnNsRHJhZ2dhYmxlUmVjdD10aGlzLnNlbGVjdGlvblJlY3QuZHJhZ2dhYmxlKHttaW5YOjAsbWF4WDphLmdsb2JhbHMuZ3JpZFdpZHRofSkub24oXCJkcmFnbW92ZVwiLHRoaXMuc2VsZWN0aW9uRHJhZ2dpbmcuYmluZCh0aGlzLFwiZHJhZ2dpbmdcIikpOnRoaXMuc2xEcmFnZ2FibGVSZWN0PXRoaXMuc2VsZWN0aW9uUmVjdC5kcmFnZ2FibGUoKS5vbihcImRyYWdtb3ZlXCIsdGhpcy5zZWxlY3Rpb25EcmFnZ2luZy5iaW5kKHRoaXMsXCJkcmFnZ2luZ1wiKSksdGhpcy5wcmVzZWxlY3RlZFNlbGVjdGlvbigpLHRoaXMuaG92ZXJBcmVhPWEuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCJcIi5jb25jYXQoYS5nbG9iYWxzLmNoYXJ0Q2xhc3MsXCIgLmFwZXhjaGFydHMtc3ZnXCIpKSx0aGlzLmhvdmVyQXJlYS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy16b29tYWJsZVwiKSx0aGlzLmV2ZW50TGlzdC5mb3JFYWNoKChmdW5jdGlvbih0KXtlLmhvdmVyQXJlYS5hZGRFdmVudExpc3RlbmVyKHQscy5zdmdNb3VzZUV2ZW50cy5iaW5kKHMsaSkse2NhcHR1cmU6ITEscGFzc2l2ZTohMH0pfSkpfX0se2tleTpcImRlc3Ryb3lcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2xEcmFnZ2FibGVSZWN0JiYodGhpcy5zbERyYWdnYWJsZVJlY3QuZHJhZ2dhYmxlKCExKSx0aGlzLnNsRHJhZ2dhYmxlUmVjdC5vZmYoKSx0aGlzLnNlbGVjdGlvblJlY3Qub2ZmKCkpLHRoaXMuc2VsZWN0aW9uUmVjdD1udWxsLHRoaXMuem9vbVJlY3Q9bnVsbCx0aGlzLmdyaWRSZWN0PW51bGx9fSx7a2V5Olwic3ZnTW91c2VFdmVudHNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPXRoaXMscz10aGlzLmN0eC50b29sYmFyLHI9aS5nbG9iYWxzLnpvb21FbmFibGVkP2kuY29uZmlnLmNoYXJ0Lnpvb20udHlwZTppLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24udHlwZSxvPWkuY29uZmlnLmNoYXJ0LnRvb2xiYXIuYXV0b1NlbGVjdGVkO2lmKGUuc2hpZnRLZXk/KHRoaXMuc2hpZnRXYXNQcmVzc2VkPSEwLHMuZW5hYmxlWm9vbVBhbkZyb21Ub29sYmFyKFwicGFuXCI9PT1vP1wiem9vbVwiOlwicGFuXCIpKTp0aGlzLnNoaWZ0V2FzUHJlc3NlZCYmKHMuZW5hYmxlWm9vbVBhbkZyb21Ub29sYmFyKG8pLHRoaXMuc2hpZnRXYXNQcmVzc2VkPSExKSxlLnRhcmdldCl7dmFyIG4sbD1lLnRhcmdldC5jbGFzc0xpc3Q7aWYoZS50YXJnZXQucGFyZW50Tm9kZSYmbnVsbCE9PWUudGFyZ2V0LnBhcmVudE5vZGUmJihuPWUudGFyZ2V0LnBhcmVudE5vZGUuY2xhc3NMaXN0KSwhKGwuY29udGFpbnMoXCJhcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0XCIpfHxsLmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyXCIpfHxsLmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1sZWdlbmQtdGV4dFwiKXx8biYmbi5jb250YWlucyhcImFwZXhjaGFydHMtdG9vbGJhclwiKSkpe2lmKGEuY2xpZW50WD1cInRvdWNobW92ZVwiPT09ZS50eXBlfHxcInRvdWNoc3RhcnRcIj09PWUudHlwZT9lLnRvdWNoZXNbMF0uY2xpZW50WDpcInRvdWNoZW5kXCI9PT1lLnR5cGU/ZS5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRYOmUuY2xpZW50WCxhLmNsaWVudFk9XCJ0b3VjaG1vdmVcIj09PWUudHlwZXx8XCJ0b3VjaHN0YXJ0XCI9PT1lLnR5cGU/ZS50b3VjaGVzWzBdLmNsaWVudFk6XCJ0b3VjaGVuZFwiPT09ZS50eXBlP2UuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WTplLmNsaWVudFksXCJtb3VzZWRvd25cIj09PWUudHlwZSYmMT09PWUud2hpY2gpe3ZhciBoPWEuZ3JpZFJlY3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7YS5zdGFydFg9YS5jbGllbnRYLWgubGVmdCxhLnN0YXJ0WT1hLmNsaWVudFktaC50b3AsYS5kcmFnZ2VkPSExLGEudy5nbG9iYWxzLm1vdXNlZG93bj0hMH1pZigoXCJtb3VzZW1vdmVcIj09PWUudHlwZSYmMT09PWUud2hpY2h8fFwidG91Y2htb3ZlXCI9PT1lLnR5cGUpJiYoYS5kcmFnZ2VkPSEwLGkuZ2xvYmFscy5wYW5FbmFibGVkPyhpLmdsb2JhbHMuc2VsZWN0aW9uPW51bGwsYS53Lmdsb2JhbHMubW91c2Vkb3duJiZhLnBhbkRyYWdnaW5nKHtjb250ZXh0OmEsem9vbXR5cGU6cix4eVJhdGlvczp0fSkpOihhLncuZ2xvYmFscy5tb3VzZWRvd24mJmkuZ2xvYmFscy56b29tRW5hYmxlZHx8YS53Lmdsb2JhbHMubW91c2Vkb3duJiZpLmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZCkmJihhLnNlbGVjdGlvbj1hLnNlbGVjdGlvbkRyYXdpbmcoe2NvbnRleHQ6YSx6b29tdHlwZTpyfSkpKSxcIm1vdXNldXBcIj09PWUudHlwZXx8XCJ0b3VjaGVuZFwiPT09ZS50eXBlfHxcIm1vdXNlbGVhdmVcIj09PWUudHlwZSl7dmFyIGM9YS5ncmlkUmVjdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTthLncuZ2xvYmFscy5tb3VzZWRvd24mJihhLmVuZFg9YS5jbGllbnRYLWMubGVmdCxhLmVuZFk9YS5jbGllbnRZLWMudG9wLGEuZHJhZ1g9TWF0aC5hYnMoYS5lbmRYLWEuc3RhcnRYKSxhLmRyYWdZPU1hdGguYWJzKGEuZW5kWS1hLnN0YXJ0WSksKGkuZ2xvYmFscy56b29tRW5hYmxlZHx8aS5nbG9iYWxzLnNlbGVjdGlvbkVuYWJsZWQpJiZhLnNlbGVjdGlvbkRyYXduKHtjb250ZXh0OmEsem9vbXR5cGU6cn0pLGkuZ2xvYmFscy5wYW5FbmFibGVkJiZpLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJmEuZGVsYXllZFBhblNjcm9sbGVkKCkpLGkuZ2xvYmFscy56b29tRW5hYmxlZCYmYS5oaWRlU2VsZWN0aW9uUmVjdCh0aGlzLnNlbGVjdGlvblJlY3QpLGEuZHJhZ2dlZD0hMSxhLncuZ2xvYmFscy5tb3VzZWRvd249ITF9dGhpcy5tYWtlU2VsZWN0aW9uUmVjdERyYWdnYWJsZSgpfX19fSx7a2V5OlwibWFrZVNlbGVjdGlvblJlY3REcmFnZ2FibGVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudztpZih0aGlzLnNlbGVjdGlvblJlY3Qpe3ZhciBlPXRoaXMuc2VsZWN0aW9uUmVjdC5ub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2Uud2lkdGg+MCYmZS5oZWlnaHQ+MCYmdGhpcy5zbERyYWdnYWJsZVJlY3Quc2VsZWN0aXplKHtwb2ludHM6XCJsLCByXCIscG9pbnRTaXplOjgscG9pbnRUeXBlOlwicmVjdFwifSkucmVzaXplKHtjb25zdHJhaW50OnttaW5YOjAsbWluWTowLG1heFg6dC5nbG9iYWxzLmdyaWRXaWR0aCxtYXhZOnQuZ2xvYmFscy5ncmlkSGVpZ2h0fX0pLm9uKFwicmVzaXppbmdcIix0aGlzLnNlbGVjdGlvbkRyYWdnaW5nLmJpbmQodGhpcyxcInJlc2l6aW5nXCIpKX19fSx7a2V5OlwicHJlc2VsZWN0ZWRTZWxlY3Rpb25cIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXRoaXMueHlSYXRpb3M7aWYoIXQuZ2xvYmFscy56b29tRW5hYmxlZClpZih2b2lkIDAhPT10Lmdsb2JhbHMuc2VsZWN0aW9uJiZudWxsIT09dC5nbG9iYWxzLnNlbGVjdGlvbil0aGlzLmRyYXdTZWxlY3Rpb25SZWN0KHQuZ2xvYmFscy5zZWxlY3Rpb24pO2Vsc2UgaWYodm9pZCAwIT09dC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnhheGlzLm1pbiYmdm9pZCAwIT09dC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnhheGlzLm1heCl7dmFyIGk9KHQuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi54YXhpcy5taW4tdC5nbG9iYWxzLm1pblgpL2UueFJhdGlvLGE9e3g6aSx5OjAsd2lkdGg6dC5nbG9iYWxzLmdyaWRXaWR0aC0odC5nbG9iYWxzLm1heFgtdC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnhheGlzLm1heCkvZS54UmF0aW8taSxoZWlnaHQ6dC5nbG9iYWxzLmdyaWRIZWlnaHQsdHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCxzZWxlY3Rpb25FbmFibGVkOiEwfTt0aGlzLmRyYXdTZWxlY3Rpb25SZWN0KGEpLHRoaXMubWFrZVNlbGVjdGlvblJlY3REcmFnZ2FibGUoKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uJiZ0LmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uKHRoaXMuY3R4LHt4YXhpczp7bWluOnQuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi54YXhpcy5taW4sbWF4OnQuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi54YXhpcy5tYXh9LHlheGlzOnt9fSl9fX0se2tleTpcImRyYXdTZWxlY3Rpb25SZWN0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC54LGk9dC55LGE9dC53aWR0aCxzPXQuaGVpZ2h0LHI9dC50cmFuc2xhdGVYLG89dm9pZCAwPT09cj8wOnIsbj10LnRyYW5zbGF0ZVksbD12b2lkIDA9PT1uPzA6bixoPXRoaXMudyxjPXRoaXMuem9vbVJlY3QsZD10aGlzLnNlbGVjdGlvblJlY3Q7aWYodGhpcy5kcmFnZ2VkfHxudWxsIT09aC5nbG9iYWxzLnNlbGVjdGlvbil7dmFyIGc9e3RyYW5zZm9ybTpcInRyYW5zbGF0ZShcIitvK1wiLCBcIitsK1wiKVwifTtoLmdsb2JhbHMuem9vbUVuYWJsZWQmJnRoaXMuZHJhZ2dlZCYmKGE8MCYmKGE9MSksYy5hdHRyKHt4OmUseTppLHdpZHRoOmEsaGVpZ2h0OnMsZmlsbDpoLmNvbmZpZy5jaGFydC56b29tLnpvb21lZEFyZWEuZmlsbC5jb2xvcixcImZpbGwtb3BhY2l0eVwiOmguY29uZmlnLmNoYXJ0Lnpvb20uem9vbWVkQXJlYS5maWxsLm9wYWNpdHksc3Ryb2tlOmguY29uZmlnLmNoYXJ0Lnpvb20uem9vbWVkQXJlYS5zdHJva2UuY29sb3IsXCJzdHJva2Utd2lkdGhcIjpoLmNvbmZpZy5jaGFydC56b29tLnpvb21lZEFyZWEuc3Ryb2tlLndpZHRoLFwic3Ryb2tlLW9wYWNpdHlcIjpoLmNvbmZpZy5jaGFydC56b29tLnpvb21lZEFyZWEuc3Ryb2tlLm9wYWNpdHl9KSxtLnNldEF0dHJzKGMubm9kZSxnKSksaC5nbG9iYWxzLnNlbGVjdGlvbkVuYWJsZWQmJihkLmF0dHIoe3g6ZSx5Omksd2lkdGg6YT4wP2E6MCxoZWlnaHQ6cz4wP3M6MCxmaWxsOmguY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5maWxsLmNvbG9yLFwiZmlsbC1vcGFjaXR5XCI6aC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLmZpbGwub3BhY2l0eSxzdHJva2U6aC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnN0cm9rZS5jb2xvcixcInN0cm9rZS13aWR0aFwiOmguY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5zdHJva2Uud2lkdGgsXCJzdHJva2UtZGFzaGFycmF5XCI6aC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnN0cm9rZS5kYXNoQXJyYXksXCJzdHJva2Utb3BhY2l0eVwiOmguY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5zdHJva2Uub3BhY2l0eX0pLG0uc2V0QXR0cnMoZC5ub2RlLGcpKX19fSx7a2V5OlwiaGlkZVNlbGVjdGlvblJlY3RcIix2YWx1ZTpmdW5jdGlvbih0KXt0JiZ0LmF0dHIoe3g6MCx5OjAsd2lkdGg6MCxoZWlnaHQ6MH0pfX0se2tleTpcInNlbGVjdGlvbkRyYXdpbmdcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmNvbnRleHQsaT10Lnpvb210eXBlLGE9dGhpcy53LHM9ZSxyPXRoaXMuZ3JpZFJlY3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz1zLnN0YXJ0WC0xLG49cy5zdGFydFksbD0hMSxoPSExLGM9cy5jbGllbnRYLXIubGVmdC1vLGQ9cy5jbGllbnRZLXIudG9wLW4sZz17fTtyZXR1cm4gTWF0aC5hYnMoYytvKT5hLmdsb2JhbHMuZ3JpZFdpZHRoP2M9YS5nbG9iYWxzLmdyaWRXaWR0aC1vOnMuY2xpZW50WC1yLmxlZnQ8MCYmKGM9byksbz5zLmNsaWVudFgtci5sZWZ0JiYobD0hMCxjPU1hdGguYWJzKGMpKSxuPnMuY2xpZW50WS1yLnRvcCYmKGg9ITAsZD1NYXRoLmFicyhkKSksZz1cInhcIj09PWk/e3g6bD9vLWM6byx5OjAsd2lkdGg6YyxoZWlnaHQ6YS5nbG9iYWxzLmdyaWRIZWlnaHR9OlwieVwiPT09aT97eDowLHk6aD9uLWQ6bix3aWR0aDphLmdsb2JhbHMuZ3JpZFdpZHRoLGhlaWdodDpkfTp7eDpsP28tYzpvLHk6aD9uLWQ6bix3aWR0aDpjLGhlaWdodDpkfSxzLmRyYXdTZWxlY3Rpb25SZWN0KGcpLHMuc2VsZWN0aW9uRHJhZ2dpbmcoXCJyZXNpemluZ1wiKSxnfX0se2tleTpcInNlbGVjdGlvbkRyYWdnaW5nXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLGE9dGhpcy53LHM9dGhpcy54eVJhdGlvcyxyPXRoaXMuc2VsZWN0aW9uUmVjdCxvPTA7XCJyZXNpemluZ1wiPT09dCYmKG89MzApO3ZhciBuPWZ1bmN0aW9uKHQpe3JldHVybiBwYXJzZUZsb2F0KHIubm9kZS5nZXRBdHRyaWJ1dGUodCkpfSxsPXt4Om4oXCJ4XCIpLHk6bihcInlcIiksd2lkdGg6bihcIndpZHRoXCIpLGhlaWdodDpuKFwiaGVpZ2h0XCIpfTthLmdsb2JhbHMuc2VsZWN0aW9uPWwsXCJmdW5jdGlvblwiPT10eXBlb2YgYS5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbiYmYS5nbG9iYWxzLnNlbGVjdGlvbkVuYWJsZWQmJihjbGVhclRpbWVvdXQodGhpcy53Lmdsb2JhbHMuc2VsZWN0aW9uUmVzaXplVGltZXIpLHRoaXMudy5nbG9iYWxzLnNlbGVjdGlvblJlc2l6ZVRpbWVyPXdpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpe3ZhciB0PWkuZ3JpZFJlY3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZT1yLm5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz17eGF4aXM6e21pbjphLmdsb2JhbHMueEF4aXNTY2FsZS5uaWNlTWluKyhlLmxlZnQtdC5sZWZ0KSpzLnhSYXRpbyxtYXg6YS5nbG9iYWxzLnhBeGlzU2NhbGUubmljZU1pbisoZS5yaWdodC10LmxlZnQpKnMueFJhdGlvfSx5YXhpczp7bWluOmEuZ2xvYmFscy55QXhpc1NjYWxlWzBdLm5pY2VNaW4rKHQuYm90dG9tLWUuYm90dG9tKSpzLnlSYXRpb1swXSxtYXg6YS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ubmljZU1heC0oZS50b3AtdC50b3ApKnMueVJhdGlvWzBdfX07YS5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbihpLmN0eCxvKSxhLmNvbmZpZy5jaGFydC5icnVzaC5lbmFibGVkJiZ2b2lkIDAhPT1hLmNvbmZpZy5jaGFydC5ldmVudHMuYnJ1c2hTY3JvbGxlZCYmYS5jb25maWcuY2hhcnQuZXZlbnRzLmJydXNoU2Nyb2xsZWQoaS5jdHgsbyl9KSxvKSl9fSx7a2V5Olwic2VsZWN0aW9uRHJhd25cIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmNvbnRleHQsaT10Lnpvb210eXBlLGE9dGhpcy53LHM9ZSxyPXRoaXMueHlSYXRpb3Msbz10aGlzLmN0eC50b29sYmFyO2lmKHMuc3RhcnRYPnMuZW5kWCl7dmFyIG49cy5zdGFydFg7cy5zdGFydFg9cy5lbmRYLHMuZW5kWD1ufWlmKHMuc3RhcnRZPnMuZW5kWSl7dmFyIGw9cy5zdGFydFk7cy5zdGFydFk9cy5lbmRZLHMuZW5kWT1sfXZhciBoPXZvaWQgMCxjPXZvaWQgMDthLmdsb2JhbHMuaXNSYW5nZUJhcj8oaD1hLmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWluK3Muc3RhcnRYKnIuaW52ZXJ0ZWRZUmF0aW8sYz1hLmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWluK3MuZW5kWCpyLmludmVydGVkWVJhdGlvKTooaD1hLmdsb2JhbHMueEF4aXNTY2FsZS5uaWNlTWluK3Muc3RhcnRYKnIueFJhdGlvLGM9YS5nbG9iYWxzLnhBeGlzU2NhbGUubmljZU1pbitzLmVuZFgqci54UmF0aW8pO3ZhciBkPVtdLGc9W107aWYoYS5jb25maWcueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXtkLnB1c2goYS5nbG9iYWxzLnlBeGlzU2NhbGVbZV0ubmljZU1heC1yLnlSYXRpb1tlXSpzLnN0YXJ0WSksZy5wdXNoKGEuZ2xvYmFscy55QXhpc1NjYWxlW2VdLm5pY2VNYXgtci55UmF0aW9bZV0qcy5lbmRZKX0pKSxzLmRyYWdnZWQmJihzLmRyYWdYPjEwfHxzLmRyYWdZPjEwKSYmaCE9PWMpaWYoYS5nbG9iYWxzLnpvb21FbmFibGVkKXt2YXIgdT14LmNsb25lKGEuZ2xvYmFscy5pbml0aWFsQ29uZmlnLnlheGlzKSxwPXguY2xvbmUoYS5nbG9iYWxzLmluaXRpYWxDb25maWcueGF4aXMpO2lmKGEuZ2xvYmFscy56b29tZWQ9ITAsYS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYoaD1NYXRoLmZsb29yKGgpLGM9TWF0aC5mbG9vcihjKSxoPDEmJihoPTEsYz1hLmdsb2JhbHMuZGF0YVBvaW50cyksYy1oPDImJihjPWgrMSkpLFwieHlcIiE9PWkmJlwieFwiIT09aXx8KHA9e21pbjpoLG1heDpjfSksXCJ4eVwiIT09aSYmXCJ5XCIhPT1pfHx1LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dVtlXS5taW49Z1tlXSx1W2VdLm1heD1kW2VdfSkpLGEuY29uZmlnLmNoYXJ0Lnpvb20uYXV0b1NjYWxlWWF4aXMpe3ZhciBmPW5ldyBfKHMuY3R4KTt1PWYuYXV0b1NjYWxlWShzLmN0eCx1LHt4YXhpczpwfSl9aWYobyl7dmFyIGI9by5nZXRCZWZvcmVab29tUmFuZ2UocCx1KTtiJiYocD1iLnhheGlzP2IueGF4aXM6cCx1PWIueWF4aXM/Yi55YXhpczp1KX12YXIgdj17eGF4aXM6cH07YS5jb25maWcuY2hhcnQuZ3JvdXB8fCh2LnlheGlzPXUpLHMuY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZU9wdGlvbnModiwhMSxzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmNvbmZpZy5jaGFydC5ldmVudHMuem9vbWVkJiZvLnpvb21DYWxsYmFjayhwLHUpfWVsc2UgaWYoYS5nbG9iYWxzLnNlbGVjdGlvbkVuYWJsZWQpe3ZhciBtLHk9bnVsbDttPXttaW46aCxtYXg6Y30sXCJ4eVwiIT09aSYmXCJ5XCIhPT1pfHwoeT14LmNsb25lKGEuY29uZmlnLnlheGlzKSkuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt5W2VdLm1pbj1nW2VdLHlbZV0ubWF4PWRbZV19KSksYS5nbG9iYWxzLnNlbGVjdGlvbj1zLnNlbGVjdGlvbixcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uJiZhLmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uKHMuY3R4LHt4YXhpczptLHlheGlzOnl9KX19fSx7a2V5OlwicGFuRHJhZ2dpbmdcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmNvbnRleHQsaT10aGlzLncsYT1lO2lmKHZvaWQgMCE9PWkuZ2xvYmFscy5sYXN0Q2xpZW50UG9zaXRpb24ueCl7dmFyIHM9aS5nbG9iYWxzLmxhc3RDbGllbnRQb3NpdGlvbi54LWEuY2xpZW50WCxyPWkuZ2xvYmFscy5sYXN0Q2xpZW50UG9zaXRpb24ueS1hLmNsaWVudFk7TWF0aC5hYnMocyk+TWF0aC5hYnMocikmJnM+MD90aGlzLm1vdmVEaXJlY3Rpb249XCJsZWZ0XCI6TWF0aC5hYnMocyk+TWF0aC5hYnMocikmJnM8MD90aGlzLm1vdmVEaXJlY3Rpb249XCJyaWdodFwiOk1hdGguYWJzKHIpPk1hdGguYWJzKHMpJiZyPjA/dGhpcy5tb3ZlRGlyZWN0aW9uPVwidXBcIjpNYXRoLmFicyhyKT5NYXRoLmFicyhzKSYmcjwwJiYodGhpcy5tb3ZlRGlyZWN0aW9uPVwiZG93blwiKX1pLmdsb2JhbHMubGFzdENsaWVudFBvc2l0aW9uPXt4OmEuY2xpZW50WCx5OmEuY2xpZW50WX07dmFyIG89aS5nbG9iYWxzLmlzUmFuZ2VCYXI/aS5nbG9iYWxzLm1pblk6aS5nbG9iYWxzLm1pblgsbj1pLmdsb2JhbHMuaXNSYW5nZUJhcj9pLmdsb2JhbHMubWF4WTppLmdsb2JhbHMubWF4WDtpLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWN8fGEucGFuU2Nyb2xsZWQobyxuKX19LHtrZXk6XCJkZWxheWVkUGFuU2Nyb2xsZWRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuZ2xvYmFscy5taW5YLGk9dC5nbG9iYWxzLm1heFgsYT0odC5nbG9iYWxzLm1heFgtdC5nbG9iYWxzLm1pblgpLzI7XCJsZWZ0XCI9PT10aGlzLm1vdmVEaXJlY3Rpb24/KGU9dC5nbG9iYWxzLm1pblgrYSxpPXQuZ2xvYmFscy5tYXhYK2EpOlwicmlnaHRcIj09PXRoaXMubW92ZURpcmVjdGlvbiYmKGU9dC5nbG9iYWxzLm1pblgtYSxpPXQuZ2xvYmFscy5tYXhYLWEpLGU9TWF0aC5mbG9vcihlKSxpPU1hdGguZmxvb3IoaSksdGhpcy51cGRhdGVTY3JvbGxlZENoYXJ0KHt4YXhpczp7bWluOmUsbWF4Oml9fSxlLGkpfX0se2tleTpcInBhblNjcm9sbGVkXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT10aGlzLnh5UmF0aW9zLHM9eC5jbG9uZShpLmdsb2JhbHMuaW5pdGlhbENvbmZpZy55YXhpcykscj1hLnhSYXRpbyxvPWkuZ2xvYmFscy5taW5YLG49aS5nbG9iYWxzLm1heFg7aS5nbG9iYWxzLmlzUmFuZ2VCYXImJihyPWEuaW52ZXJ0ZWRZUmF0aW8sbz1pLmdsb2JhbHMubWluWSxuPWkuZ2xvYmFscy5tYXhZKSxcImxlZnRcIj09PXRoaXMubW92ZURpcmVjdGlvbj8odD1vK2kuZ2xvYmFscy5ncmlkV2lkdGgvMTUqcixlPW4raS5nbG9iYWxzLmdyaWRXaWR0aC8xNSpyKTpcInJpZ2h0XCI9PT10aGlzLm1vdmVEaXJlY3Rpb24mJih0PW8taS5nbG9iYWxzLmdyaWRXaWR0aC8xNSpyLGU9bi1pLmdsb2JhbHMuZ3JpZFdpZHRoLzE1KnIpLGkuZ2xvYmFscy5pc1JhbmdlQmFyfHwodDxpLmdsb2JhbHMuaW5pdGlhbE1pblh8fGU+aS5nbG9iYWxzLmluaXRpYWxNYXhYKSYmKHQ9byxlPW4pO3ZhciBsPXttaW46dCxtYXg6ZX07aS5jb25maWcuY2hhcnQuem9vbS5hdXRvU2NhbGVZYXhpcyYmKHM9bmV3IF8odGhpcy5jdHgpLmF1dG9TY2FsZVkodGhpcy5jdHgscyx7eGF4aXM6bH0pKTt2YXIgaD17eGF4aXM6e21pbjp0LG1heDplfX07aS5jb25maWcuY2hhcnQuZ3JvdXB8fChoLnlheGlzPXMpLHRoaXMudXBkYXRlU2Nyb2xsZWRDaGFydChoLHQsZSl9fSx7a2V5OlwidXBkYXRlU2Nyb2xsZWRDaGFydFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLnc7dGhpcy5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlT3B0aW9ucyh0LCExLCExKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmNvbmZpZy5jaGFydC5ldmVudHMuc2Nyb2xsZWQmJmEuY29uZmlnLmNoYXJ0LmV2ZW50cy5zY3JvbGxlZCh0aGlzLmN0eCx7eGF4aXM6e21pbjplLG1heDppfX0pfX1dKSxpfSgpLGR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLnR0Q3R4PWUsdGhpcy5jdHg9ZS5jdHh9cmV0dXJuIHIodCxbe2tleTpcImdldE5lYXJlc3RWYWx1ZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmhvdmVyQXJlYSxpPXQuZWxHcmlkLGE9dC5jbGllbnRYLHM9dC5jbGllbnRZLHI9dGhpcy53LG89aS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPW8ud2lkdGgsbD1vLmhlaWdodCxoPW4vKHIuZ2xvYmFscy5kYXRhUG9pbnRzLTEpLGM9bC9yLmdsb2JhbHMuZGF0YVBvaW50cyxkPXRoaXMuaGFzQmFycygpOyFyLmdsb2JhbHMuY29tYm9DaGFydHMmJiFkfHxyLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWN8fChoPW4vci5nbG9iYWxzLmRhdGFQb2ludHMpO3ZhciBnPWEtby5sZWZ0LXIuZ2xvYmFscy5iYXJQYWRGb3JOdW1lcmljQXhpcyx1PXMtby50b3A7ZzwwfHx1PDB8fGc+bnx8dT5sPyhlLmNsYXNzTGlzdC5yZW1vdmUoXCJob3ZlcmluZy16b29tXCIpLGUuY2xhc3NMaXN0LnJlbW92ZShcImhvdmVyaW5nLXBhblwiKSk6ci5nbG9iYWxzLnpvb21FbmFibGVkPyhlLmNsYXNzTGlzdC5yZW1vdmUoXCJob3ZlcmluZy1wYW5cIiksZS5jbGFzc0xpc3QuYWRkKFwiaG92ZXJpbmctem9vbVwiKSk6ci5nbG9iYWxzLnBhbkVuYWJsZWQmJihlLmNsYXNzTGlzdC5yZW1vdmUoXCJob3ZlcmluZy16b29tXCIpLGUuY2xhc3NMaXN0LmFkZChcImhvdmVyaW5nLXBhblwiKSk7dmFyIHA9TWF0aC5yb3VuZChnL2gpLGY9TWF0aC5mbG9vcih1L2MpO2QmJiFyLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJihwPU1hdGguY2VpbChnL2gpLHAtPTEpO3ZhciBiPW51bGwsdj1udWxsLG09W10seT1bXTtpZihyLmdsb2JhbHMuc2VyaWVzWHZhbHVlcy5mb3JFYWNoKChmdW5jdGlvbih0KXttLnB1c2goW3RbMF0rMWUtNl0uY29uY2F0KHQpKX0pKSxyLmdsb2JhbHMuc2VyaWVzWXZhbHVlcy5mb3JFYWNoKChmdW5jdGlvbih0KXt5LnB1c2goW3RbMF0rMWUtNl0uY29uY2F0KHQpKX0pKSxtPW0ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB4LmlzTnVtYmVyKHQpfSkpfSkpLHk9eS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHguaXNOdW1iZXIodCl9KSl9KSksci5nbG9iYWxzLmlzWE51bWVyaWMpe3ZhciB3PXRoaXMudHRDdHguZ2V0RWxHcmlkKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaz1nKih3LndpZHRoL24pLEE9dSoody5oZWlnaHQvbCk7Yj0odj10aGlzLmNsb3Nlc3RJbk11bHRpQXJyYXkoayxBLG0seSkpLmluZGV4LHA9di5qLG51bGwhPT1iJiYobT1yLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1tiXSxwPSh2PXRoaXMuY2xvc2VzdEluQXJyYXkoayxtKSkuaW5kZXgpfXJldHVybiByLmdsb2JhbHMuY2FwdHVyZWRTZXJpZXNJbmRleD1udWxsPT09Yj8tMTpiLCghcHx8cDwxKSYmKHA9MCksci5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD9yLmdsb2JhbHMuY2FwdHVyZWREYXRhUG9pbnRJbmRleD1mOnIuZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4PXAse2NhcHR1cmVkU2VyaWVzOmIsajpyLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsP2Y6cCxob3Zlclg6Zyxob3Zlclk6dX19fSx7a2V5OlwiY2xvc2VzdEluTXVsdGlBcnJheVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPXRoaXMudyxyPTAsbz1udWxsLG49LTE7cy5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MT9yPXRoaXMuZ2V0Rmlyc3RBY3RpdmVYQXJyYXkoaSk6bz0wO3ZhciBsPWlbcl1bMF0saD1NYXRoLmFicyh0LWwpO2lmKGkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5mb3JFYWNoKChmdW5jdGlvbihlLGkpe3ZhciBhPU1hdGguYWJzKHQtZSk7YTxoJiYoaD1hLG49aSl9KSl9KSksLTEhPT1uKXt2YXIgYz1hW3JdW25dLGQ9TWF0aC5hYnMoZS1jKTtvPXIsYS5mb3JFYWNoKChmdW5jdGlvbih0LGkpe3ZhciBhPU1hdGguYWJzKGUtdFtuXSk7YTxkJiYoZD1hLG89aSl9KSl9cmV0dXJue2luZGV4Om8sajpufX19LHtrZXk6XCJnZXRGaXJzdEFjdGl2ZVhBcnJheVwiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLncsaT0wLGE9dC5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQubGVuZ3RoPjA/ZTotMX0pKSxzPTA7czxhLmxlbmd0aDtzKyspaWYoLTEhPT1hW3NdJiYtMT09PWUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YocykmJi0xPT09ZS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihzKSl7aT1hW3NdO2JyZWFrfXJldHVybiBpfX0se2tleTpcImNsb3Nlc3RJbkFycmF5XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9ZVswXSxhPW51bGwscz1NYXRoLmFicyh0LWkpLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG89TWF0aC5hYnModC1lW3JdKTtvPHMmJihzPW8sYT1yKX1yZXR1cm57aW5kZXg6YX19fSx7a2V5OlwiaXNYb3ZlcmxhcFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPVtdLGk9dGhpcy53Lmdsb2JhbHMuc2VyaWVzWC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDAhPT10WzBdfSkpO2lmKGkubGVuZ3RoPjApZm9yKHZhciBhPTA7YTxpLmxlbmd0aC0xO2ErKyl2b2lkIDAhPT1pW2FdW3RdJiZ2b2lkIDAhPT1pW2ErMV1bdF0mJmlbYV1bdF0hPT1pW2ErMV1bdF0mJmUucHVzaChcInVuRXF1YWxcIik7cmV0dXJuIDA9PT1lLmxlbmd0aH19LHtrZXk6XCJpc0luaXRpYWxTZXJpZXNTYW1lTGVuXCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9ITAsZT10aGlzLncuZ2xvYmFscy5pbml0aWFsU2VyaWVzLGk9MDtpPGUubGVuZ3RoLTE7aSsrKWlmKGVbaV0uZGF0YS5sZW5ndGghPT1lW2krMV0uZGF0YS5sZW5ndGgpe3Q9ITE7YnJlYWt9cmV0dXJuIHR9fSx7a2V5OlwiZ2V0QmFyc0hlaWdodFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB1KHQpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLmdldEJCb3goKS5oZWlnaHR9KSwwKX19LHtrZXk6XCJnZXRFbE1hcmtlcnNcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgdD90aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIi5jb25jYXQodCxcIiddIC5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzLXdyYXAgPiAqXCIpKTp0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwID4gKlwiKX19LHtrZXk6XCJnZXRBbGxNYXJrZXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwXCIpOyh0PXUodCkpLnNvcnQoKGZ1bmN0aW9uKHQsZSl7dmFyIGk9TnVtYmVyKHQuZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIikpLGE9TnVtYmVyKGUuZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIikpO3JldHVybiBhPGk/MTphPmk/LTE6MH0pKTt2YXIgZT1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtlLnB1c2godC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtbWFya2VyXCIpKX0pKSxlfX0se2tleTpcImhhc01hcmtlcnNcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5nZXRFbE1hcmtlcnModCkubGVuZ3RoPjB9fSx7a2V5OlwiZ2V0RWxCYXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtYmFyLXNlcmllcywgIC5hcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLXNlcmllcywgLmFwZXhjaGFydHMtYm94UGxvdC1zZXJpZXMsIC5hcGV4Y2hhcnRzLXJhbmdlYmFyLXNlcmllc1wiKX19LHtrZXk6XCJoYXNCYXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRFbEJhcnMoKS5sZW5ndGg+MH19LHtrZXk6XCJnZXRIb3Zlck1hcmtlclNpemVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1lLmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemU7cmV0dXJuIHZvaWQgMD09PWkmJihpPWUuZ2xvYmFscy5tYXJrZXJzLnNpemVbdF0rZS5jb25maWcubWFya2Vycy5ob3Zlci5zaXplT2Zmc2V0KSxpfX0se2tleTpcInRvZ2dsZUFsbFRvb2x0aXBTZXJpZXNHcm91cHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10aGlzLnR0Q3R4OzA9PT1pLmFsbFRvb2x0aXBTZXJpZXNHcm91cHMubGVuZ3RoJiYoaS5hbGxUb29sdGlwU2VyaWVzR3JvdXBzPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cFwiKSk7Zm9yKHZhciBhPWkuYWxsVG9vbHRpcFNlcmllc0dyb3VwcyxzPTA7czxhLmxlbmd0aDtzKyspXCJlbmFibGVcIj09PXQ/KGFbc10uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpLGFbc10uc3R5bGUuZGlzcGxheT1lLmNvbmZpZy50b29sdGlwLml0ZW1zLmRpc3BsYXkpOihhW3NdLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSxhW3NdLnN0eWxlLmRpc3BsYXk9XCJub25lXCIpfX1dKSx0fSgpLGd0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmN0eD1lLmN0eCx0aGlzLnR0Q3R4PWUsdGhpcy50b29sdGlwVXRpbD1uZXcgZHQoZSl9cmV0dXJuIHIodCxbe2tleTpcImRyYXdTZXJpZXNUZXh0c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuc2hhcmVkLGk9dm9pZCAwPT09ZXx8ZSxhPXQudHRJdGVtcyxzPXQuaSxyPXZvaWQgMD09PXM/MDpzLG89dC5qLG49dm9pZCAwPT09bz9udWxsOm8sbD10LnkxLGg9dC55MixjPXQuZSxkPXRoaXMudzt2b2lkIDAhPT1kLmNvbmZpZy50b29sdGlwLmN1c3RvbT90aGlzLmhhbmRsZUN1c3RvbVRvb2x0aXAoe2k6cixqOm4seTE6bCx5MjpoLHc6ZH0pOnRoaXMudG9nZ2xlQWN0aXZlSW5hY3RpdmVTZXJpZXMoaSk7dmFyIGc9dGhpcy5nZXRWYWx1ZXNUb1ByaW50KHtpOnIsajpufSk7dGhpcy5wcmludExhYmVscyh7aTpyLGo6bix2YWx1ZXM6Zyx0dEl0ZW1zOmEsc2hhcmVkOmksZTpjfSk7dmFyIHU9dGhpcy50dEN0eC5nZXRFbFRvb2x0aXAoKTt0aGlzLnR0Q3R4LnRvb2x0aXBSZWN0LnR0V2lkdGg9dS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCx0aGlzLnR0Q3R4LnRvb2x0aXBSZWN0LnR0SGVpZ2h0PXUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0fX0se2tleTpcInByaW50TGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGksYT10aGlzLHM9dC5pLHI9dC5qLG89dC52YWx1ZXMsbj10LnR0SXRlbXMsbD10LnNoYXJlZCxoPXQuZSxjPXRoaXMudyxkPVtdLGc9ZnVuY3Rpb24odCl7cmV0dXJuIGMuZ2xvYmFscy5zZXJpZXNHb2Fsc1t0XSYmYy5nbG9iYWxzLnNlcmllc0dvYWxzW3RdW3JdJiZBcnJheS5pc0FycmF5KGMuZ2xvYmFscy5zZXJpZXNHb2Fsc1t0XVtyXSl9LHU9by54VmFsLHA9by56VmFsLGY9by54QXhpc1RUVmFsLHg9XCJcIixiPWMuZ2xvYmFscy5jb2xvcnNbc107bnVsbCE9PXImJmMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kaXN0cmlidXRlZCYmKGI9Yy5nbG9iYWxzLmNvbG9yc1tyXSk7Zm9yKHZhciB2PWZ1bmN0aW9uKHQsbyl7dmFyIHY9YS5nZXRGb3JtYXR0ZXJzKHMpO3g9YS5nZXRTZXJpZXNOYW1lKHtmbjp2LnlMYlRpdGxlRm9ybWF0dGVyLGluZGV4OnMsc2VyaWVzSW5kZXg6cyxqOnJ9KSxcInRyZWVtYXBcIj09PWMuY29uZmlnLmNoYXJ0LnR5cGUmJih4PXYueUxiVGl0bGVGb3JtYXR0ZXIoU3RyaW5nKGMuY29uZmlnLnNlcmllc1tzXS5kYXRhW3JdLngpLHtzZXJpZXM6Yy5nbG9iYWxzLnNlcmllcyxzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsdzpjfSkpO3ZhciBtPWMuY29uZmlnLnRvb2x0aXAuaW52ZXJzZU9yZGVyP286dDtpZihjLmdsb2JhbHMuYXhpc0NoYXJ0cyl7dmFyIHk9ZnVuY3Rpb24odCl7dmFyIGUsaSxhLHM7cmV0dXJuIGMuZ2xvYmFscy5pc1JhbmdlRGF0YT92LnlMYkZvcm1hdHRlcihudWxsPT09KGU9Yy5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnQpfHx2b2lkIDA9PT1lfHxudWxsPT09KGk9ZVt0XSl8fHZvaWQgMD09PWk/dm9pZCAwOmlbcl0se3NlcmllczpjLmdsb2JhbHMuc2VyaWVzUmFuZ2VTdGFydCxzZXJpZXNJbmRleDp0LGRhdGFQb2ludEluZGV4OnIsdzpjfSkrXCIgLSBcIit2LnlMYkZvcm1hdHRlcihudWxsPT09KGE9Yy5nbG9iYWxzLnNlcmllc1JhbmdlRW5kKXx8dm9pZCAwPT09YXx8bnVsbD09PShzPWFbdF0pfHx2b2lkIDA9PT1zP3ZvaWQgMDpzW3JdLHtzZXJpZXM6Yy5nbG9iYWxzLnNlcmllc1JhbmdlRW5kLHNlcmllc0luZGV4OnQsZGF0YVBvaW50SW5kZXg6cix3OmN9KTp2LnlMYkZvcm1hdHRlcihjLmdsb2JhbHMuc2VyaWVzW3RdW3JdLHtzZXJpZXM6Yy5nbG9iYWxzLnNlcmllcyxzZXJpZXNJbmRleDp0LGRhdGFQb2ludEluZGV4OnIsdzpjfSl9O2lmKGwpdj1hLmdldEZvcm1hdHRlcnMobSkseD1hLmdldFNlcmllc05hbWUoe2ZuOnYueUxiVGl0bGVGb3JtYXR0ZXIsaW5kZXg6bSxzZXJpZXNJbmRleDpzLGo6cn0pLGI9Yy5nbG9iYWxzLmNvbG9yc1ttXSxpPXkobSksZyhtKSYmKGQ9Yy5nbG9iYWxzLnNlcmllc0dvYWxzW21dW3JdLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJue2F0dHJzOnQsdmFsOnYueUxiRm9ybWF0dGVyKHQudmFsdWUse3Nlcmllc0luZGV4Om0sZGF0YVBvaW50SW5kZXg6cix3OmN9KX19KSkpO2Vsc2V7dmFyIHcsaz1udWxsPT1ofHxudWxsPT09KHc9aC50YXJnZXQpfHx2b2lkIDA9PT13P3ZvaWQgMDp3LmdldEF0dHJpYnV0ZShcImZpbGxcIik7ayYmKGI9LTEhPT1rLmluZGV4T2YoXCJ1cmxcIik/ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihrLnN1YnN0cig0KS5zbGljZSgwLC0xKSkuY2hpbGROb2Rlc1swXS5nZXRBdHRyaWJ1dGUoXCJzdHJva2VcIik6ayksaT15KHMpLGcocykmJkFycmF5LmlzQXJyYXkoYy5nbG9iYWxzLnNlcmllc0dvYWxzW3NdW3JdKSYmKGQ9Yy5nbG9iYWxzLnNlcmllc0dvYWxzW3NdW3JdLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJue2F0dHJzOnQsdmFsOnYueUxiRm9ybWF0dGVyKHQudmFsdWUse3Nlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6cix3OmN9KX19KSkpfX1udWxsPT09ciYmKGk9di55TGJGb3JtYXR0ZXIoYy5nbG9iYWxzLnNlcmllc1tzXSxlKGUoe30sYykse30se3Nlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6c30pKSksYS5ET01IYW5kbGluZyh7aTpzLHQ6bSxqOnIsdHRJdGVtczpuLHZhbHVlczp7dmFsOmksZ29hbFZhbHM6ZCx4VmFsOnUseEF4aXNUVFZhbDpmLHpWYWw6cH0sc2VyaWVzTmFtZTp4LHNoYXJlZDpsLHBDb2xvcjpifSl9LG09MCx5PWMuZ2xvYmFscy5zZXJpZXMubGVuZ3RoLTE7bTxjLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDttKysseS0tKXYobSx5KX19LHtrZXk6XCJnZXRGb3JtYXR0ZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLncsYT1pLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1t0XTtyZXR1cm4gdm9pZCAwIT09aS5nbG9iYWxzLnR0VmFsP0FycmF5LmlzQXJyYXkoaS5nbG9iYWxzLnR0VmFsKT8oYT1pLmdsb2JhbHMudHRWYWxbdF0mJmkuZ2xvYmFscy50dFZhbFt0XS5mb3JtYXR0ZXIsZT1pLmdsb2JhbHMudHRWYWxbdF0mJmkuZ2xvYmFscy50dFZhbFt0XS50aXRsZSYmaS5nbG9iYWxzLnR0VmFsW3RdLnRpdGxlLmZvcm1hdHRlcik6KGE9aS5nbG9iYWxzLnR0VmFsLmZvcm1hdHRlcixcImZ1bmN0aW9uXCI9PXR5cGVvZiBpLmdsb2JhbHMudHRWYWwudGl0bGUuZm9ybWF0dGVyJiYoZT1pLmdsb2JhbHMudHRWYWwudGl0bGUuZm9ybWF0dGVyKSk6ZT1pLmNvbmZpZy50b29sdGlwLnkudGl0bGUuZm9ybWF0dGVyLFwiZnVuY3Rpb25cIiE9dHlwZW9mIGEmJihhPWkuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzWzBdP2kuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzWzBdOmZ1bmN0aW9uKHQpe3JldHVybiB0fSksXCJmdW5jdGlvblwiIT10eXBlb2YgZSYmKGU9ZnVuY3Rpb24odCl7cmV0dXJuIHR9KSx7eUxiRm9ybWF0dGVyOmEseUxiVGl0bGVGb3JtYXR0ZXI6ZX19fSx7a2V5OlwiZ2V0U2VyaWVzTmFtZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZm4saT10LmluZGV4LGE9dC5zZXJpZXNJbmRleCxzPXQuaixyPXRoaXMudztyZXR1cm4gZShTdHJpbmcoci5nbG9iYWxzLnNlcmllc05hbWVzW2ldKSx7c2VyaWVzOnIuZ2xvYmFscy5zZXJpZXMsc2VyaWVzSW5kZXg6YSxkYXRhUG9pbnRJbmRleDpzLHc6cn0pfX0se2tleTpcIkRPTUhhbmRsaW5nXCIsdmFsdWU6ZnVuY3Rpb24odCl7dC5pO3ZhciBlPXQudCxpPXQuaixhPXQudHRJdGVtcyxzPXQudmFsdWVzLHI9dC5zZXJpZXNOYW1lLG89dC5zaGFyZWQsbj10LnBDb2xvcixsPXRoaXMudyxoPXRoaXMudHRDdHgsYz1zLnZhbCxkPXMuZ29hbFZhbHMsZz1zLnhWYWwsdT1zLnhBeGlzVFRWYWwscD1zLnpWYWwsZj1udWxsO2Y9YVtlXS5jaGlsZHJlbixsLmNvbmZpZy50b29sdGlwLmZpbGxTZXJpZXNDb2xvciYmKGFbZV0uc3R5bGUuYmFja2dyb3VuZENvbG9yPW4sZlswXS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiKSxoLnNob3dUb29sdGlwVGl0bGUmJihudWxsPT09aC50b29sdGlwVGl0bGUmJihoLnRvb2x0aXBUaXRsZT1sLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcC10aXRsZVwiKSksaC50b29sdGlwVGl0bGUuaW5uZXJIVE1MPWcpLGguaXNYQXhpc1Rvb2x0aXBFbmFibGVkJiYoaC54YXhpc1Rvb2x0aXBUZXh0LmlubmVySFRNTD1cIlwiIT09dT91OmcpO3ZhciB4PWFbZV0ucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC15LWxhYmVsXCIpO3gmJih4LmlubmVySFRNTD1yfHxcIlwiKTt2YXIgYj1hW2VdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQteS12YWx1ZVwiKTtiJiYoYi5pbm5lckhUTUw9dm9pZCAwIT09Yz9jOlwiXCIpLGZbMF0mJmZbMF0uY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy10b29sdGlwLW1hcmtlclwiKSYmKGwuY29uZmlnLnRvb2x0aXAubWFya2VyLmZpbGxDb2xvcnMmJkFycmF5LmlzQXJyYXkobC5jb25maWcudG9vbHRpcC5tYXJrZXIuZmlsbENvbG9ycykmJihuPWwuY29uZmlnLnRvb2x0aXAubWFya2VyLmZpbGxDb2xvcnNbZV0pLGZbMF0uc3R5bGUuYmFja2dyb3VuZENvbG9yPW4pLGwuY29uZmlnLnRvb2x0aXAubWFya2VyLnNob3d8fChmWzBdLnN0eWxlLmRpc3BsYXk9XCJub25lXCIpO3ZhciB2PWFbZV0ucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy1sYWJlbFwiKSxtPWFbZV0ucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy12YWx1ZVwiKTtpZihkLmxlbmd0aCYmbC5nbG9iYWxzLnNlcmllc0dvYWxzW2VdKXt2YXIgeT1mdW5jdGlvbigpe3ZhciB0PVwiPGRpdiA+XCIsZT1cIjxkaXY+XCI7ZC5mb3JFYWNoKChmdW5jdGlvbihpLGEpe3QrPScgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXhcIj48c3BhbiBjbGFzcz1cImFwZXhjaGFydHMtdG9vbHRpcC1tYXJrZXJcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICcuY29uY2F0KGkuYXR0cnMuc3Ryb2tlQ29sb3IsJzsgaGVpZ2h0OiAzcHg7IGJvcmRlci1yYWRpdXM6IDA7IHRvcDogNXB4O1wiPjwvc3Bhbj4gJykuY29uY2F0KGkuYXR0cnMubmFtZSxcIjwvZGl2PlwiKSxlKz1cIjxkaXY+XCIuY29uY2F0KGkudmFsLFwiPC9kaXY+XCIpfSkpLHYuaW5uZXJIVE1MPXQrXCI8L2Rpdj5cIixtLmlubmVySFRNTD1lK1wiPC9kaXY+XCJ9O28/bC5nbG9iYWxzLnNlcmllc0dvYWxzW2VdW2ldJiZBcnJheS5pc0FycmF5KGwuZ2xvYmFscy5zZXJpZXNHb2Fsc1tlXVtpXSk/eSgpOih2LmlubmVySFRNTD1cIlwiLG0uaW5uZXJIVE1MPVwiXCIpOnkoKX1lbHNlIHYuaW5uZXJIVE1MPVwiXCIsbS5pbm5lckhUTUw9XCJcIjtudWxsIT09cCYmKGFbZV0ucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC16LWxhYmVsXCIpLmlubmVySFRNTD1sLmNvbmZpZy50b29sdGlwLnoudGl0bGUsYVtlXS5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXotdmFsdWVcIikuaW5uZXJIVE1MPXZvaWQgMCE9PXA/cDpcIlwiKTtvJiZmWzBdJiYobnVsbD09Y3x8bC5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihlKT4tMXx8bC5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihlKT4tMT9mWzBdLnBhcmVudE5vZGUuc3R5bGUuZGlzcGxheT1cIm5vbmVcIjpmWzBdLnBhcmVudE5vZGUuc3R5bGUuZGlzcGxheT1sLmNvbmZpZy50b29sdGlwLml0ZW1zLmRpc3BsYXkpfX0se2tleTpcInRvZ2dsZUFjdGl2ZUluYWN0aXZlU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O2lmKHQpdGhpcy50b29sdGlwVXRpbC50b2dnbGVBbGxUb29sdGlwU2VyaWVzR3JvdXBzKFwiZW5hYmxlXCIpO2Vsc2V7dGhpcy50b29sdGlwVXRpbC50b2dnbGVBbGxUb29sdGlwU2VyaWVzR3JvdXBzKFwiZGlzYWJsZVwiKTt2YXIgaT1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXBcIik7aSYmKGkuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpLGkuc3R5bGUuZGlzcGxheT1lLmNvbmZpZy50b29sdGlwLml0ZW1zLmRpc3BsYXkpfX19LHtrZXk6XCJnZXRWYWx1ZXNUb1ByaW50XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pLGk9dC5qLGE9dGhpcy53LHM9dGhpcy5jdHguc2VyaWVzLmZpbHRlcmVkU2VyaWVzWCgpLHI9XCJcIixvPVwiXCIsbj1udWxsLGw9bnVsbCxoPXtzZXJpZXM6YS5nbG9iYWxzLnNlcmllcyxzZXJpZXNJbmRleDplLGRhdGFQb2ludEluZGV4OmksdzphfSxjPWEuZ2xvYmFscy50dFpGb3JtYXR0ZXI7bnVsbD09PWk/bD1hLmdsb2JhbHMuc2VyaWVzW2VdOmEuZ2xvYmFscy5pc1hOdW1lcmljJiZcInRyZWVtYXBcIiE9PWEuY29uZmlnLmNoYXJ0LnR5cGU/KHI9c1tlXVtpXSwwPT09c1tlXS5sZW5ndGgmJihyPXNbdGhpcy50b29sdGlwVXRpbC5nZXRGaXJzdEFjdGl2ZVhBcnJheShzKV1baV0pKTpyPXZvaWQgMCE9PWEuZ2xvYmFscy5sYWJlbHNbaV0/YS5nbG9iYWxzLmxhYmVsc1tpXTpcIlwiO3ZhciBkPXI7YS5nbG9iYWxzLmlzWE51bWVyaWMmJlwiZGF0ZXRpbWVcIj09PWEuY29uZmlnLnhheGlzLnR5cGU/cj1uZXcgVCh0aGlzLmN0eCkueExhYmVsRm9ybWF0KGEuZ2xvYmFscy50dEtleUZvcm1hdHRlcixkLGQse2k6dm9pZCAwLGRhdGVGb3JtYXR0ZXI6bmV3IEkodGhpcy5jdHgpLmZvcm1hdERhdGUsdzp0aGlzLnd9KTpyPWEuZ2xvYmFscy5pc0Jhckhvcml6b250YWw/YS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF0oZCxoKTphLmdsb2JhbHMueExhYmVsRm9ybWF0dGVyKGQsaCk7cmV0dXJuIHZvaWQgMCE9PWEuY29uZmlnLnRvb2x0aXAueC5mb3JtYXR0ZXImJihyPWEuZ2xvYmFscy50dEtleUZvcm1hdHRlcihkLGgpKSxhLmdsb2JhbHMuc2VyaWVzWi5sZW5ndGg+MCYmYS5nbG9iYWxzLnNlcmllc1pbZV0ubGVuZ3RoPjAmJihuPWMoYS5nbG9iYWxzLnNlcmllc1pbZV1baV0sYSkpLG89XCJmdW5jdGlvblwiPT10eXBlb2YgYS5jb25maWcueGF4aXMudG9vbHRpcC5mb3JtYXR0ZXI/YS5nbG9iYWxzLnhheGlzVG9vbHRpcEZvcm1hdHRlcihkLGgpOnIse3ZhbDpBcnJheS5pc0FycmF5KGwpP2wuam9pbihcIiBcIik6bCx4VmFsOkFycmF5LmlzQXJyYXkocik/ci5qb2luKFwiIFwiKTpyLHhBeGlzVFRWYWw6QXJyYXkuaXNBcnJheShvKT9vLmpvaW4oXCIgXCIpOm8selZhbDpufX19LHtrZXk6XCJoYW5kbGVDdXN0b21Ub29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pLGk9dC5qLGE9dC55MSxzPXQueTIscj10Lncsbz10aGlzLnR0Q3R4LmdldEVsVG9vbHRpcCgpLG49ci5jb25maWcudG9vbHRpcC5jdXN0b207QXJyYXkuaXNBcnJheShuKSYmbltlXSYmKG49bltlXSksby5pbm5lckhUTUw9bih7Y3R4OnRoaXMuY3R4LHNlcmllczpyLmdsb2JhbHMuc2VyaWVzLHNlcmllc0luZGV4OmUsZGF0YVBvaW50SW5kZXg6aSx5MTphLHkyOnMsdzpyfSl9fV0pLHR9KCksdXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnR0Q3R4PWUsdGhpcy5jdHg9ZS5jdHgsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwibW92ZVhDcm9zc2hhaXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGwsaT10aGlzLnR0Q3R4LGE9dGhpcy53LHM9aS5nZXRFbFhDcm9zc2hhaXJzKCkscj10LWkueGNyb3NzaGFpcnNXaWR0aC8yLG89YS5nbG9iYWxzLmxhYmVscy5zbGljZSgpLmxlbmd0aDtpZihudWxsIT09ZSYmKHI9YS5nbG9iYWxzLmdyaWRXaWR0aC9vKmUpLG51bGw9PT1zfHxhLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsfHwocy5zZXRBdHRyaWJ1dGUoXCJ4XCIscikscy5zZXRBdHRyaWJ1dGUoXCJ4MVwiLHIpLHMuc2V0QXR0cmlidXRlKFwieDJcIixyKSxzLnNldEF0dHJpYnV0ZShcInkyXCIsYS5nbG9iYWxzLmdyaWRIZWlnaHQpLHMuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpKSxyPDAmJihyPTApLHI+YS5nbG9iYWxzLmdyaWRXaWR0aCYmKHI9YS5nbG9iYWxzLmdyaWRXaWR0aCksaS5pc1hBeGlzVG9vbHRpcEVuYWJsZWQpe3ZhciBuPXI7XCJ0aWNrV2lkdGhcIiE9PWEuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgmJlwiYmFyV2lkdGhcIiE9PWEuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGh8fChuPXIraS54Y3Jvc3NoYWlyc1dpZHRoLzIpLHRoaXMubW92ZVhBeGlzVG9vbHRpcChuKX19fSx7a2V5OlwibW92ZVlDcm9zc2hhaXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy50dEN0eDtudWxsIT09ZS55Y3Jvc3NoYWlycyYmbS5zZXRBdHRycyhlLnljcm9zc2hhaXJzLHt5MTp0LHkyOnR9KSxudWxsIT09ZS55Y3Jvc3NoYWlyc0hpZGRlbiYmbS5zZXRBdHRycyhlLnljcm9zc2hhaXJzSGlkZGVuLHt5MTp0LHkyOnR9KX19LHtrZXk6XCJtb3ZlWEF4aXNUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dGhpcy50dEN0eDtpZihudWxsIT09aS54YXhpc1Rvb2x0aXAmJjAhPT1pLnhjcm9zc2hhaXJzV2lkdGgpe2kueGF4aXNUb29sdGlwLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKTt2YXIgYT1pLnhheGlzT2ZmWStlLmNvbmZpZy54YXhpcy50b29sdGlwLm9mZnNldFkrZS5nbG9iYWxzLnRyYW5zbGF0ZVkrMStlLmNvbmZpZy54YXhpcy5vZmZzZXRZO2lmKHQtPWkueGF4aXNUb29sdGlwLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoLzIsIWlzTmFOKHQpKXt0Kz1lLmdsb2JhbHMudHJhbnNsYXRlWDt2YXIgcztzPW5ldyBtKHRoaXMuY3R4KS5nZXRUZXh0UmVjdHMoaS54YXhpc1Rvb2x0aXBUZXh0LmlubmVySFRNTCksaS54YXhpc1Rvb2x0aXBUZXh0LnN0eWxlLm1pbldpZHRoPXMud2lkdGgrXCJweFwiLGkueGF4aXNUb29sdGlwLnN0eWxlLmxlZnQ9dCtcInB4XCIsaS54YXhpc1Rvb2x0aXAuc3R5bGUudG9wPWErXCJweFwifX19fSx7a2V5OlwibW92ZVlBeGlzVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPXRoaXMudHRDdHg7bnVsbD09PWkueWF4aXNUVEVscyYmKGkueWF4aXNUVEVscz1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMteWF4aXN0b29sdGlwXCIpKTt2YXIgYT1wYXJzZUludChpLnljcm9zc2hhaXJzSGlkZGVuLmdldEF0dHJpYnV0ZShcInkxXCIpLDEwKSxzPWUuZ2xvYmFscy50cmFuc2xhdGVZK2Escj1pLnlheGlzVFRFbHNbdF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0LG89ZS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFt0XS0yO2UuY29uZmlnLnlheGlzW3RdLm9wcG9zaXRlJiYoby09MjYpLHMtPXIvMiwtMT09PWUuZ2xvYmFscy5pZ25vcmVZQXhpc0luZGV4ZXMuaW5kZXhPZih0KT8oaS55YXhpc1RURWxzW3RdLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSxpLnlheGlzVFRFbHNbdF0uc3R5bGUudG9wPXMrXCJweFwiLGkueWF4aXNUVEVsc1t0XS5zdHlsZS5sZWZ0PW8rZS5jb25maWcueWF4aXNbdF0udG9vbHRpcC5vZmZzZXRYK1wicHhcIik6aS55YXhpc1RURWxzW3RdLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKX19LHtrZXk6XCJtb3ZlVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGwsYT10aGlzLncscz10aGlzLnR0Q3R4LHI9cy5nZXRFbFRvb2x0aXAoKSxvPXMudG9vbHRpcFJlY3Qsbj1udWxsIT09aT9wYXJzZUZsb2F0KGkpOjEsbD1wYXJzZUZsb2F0KHQpK24rNSxoPXBhcnNlRmxvYXQoZSkrbi8yO2lmKGw+YS5nbG9iYWxzLmdyaWRXaWR0aC8yJiYobD1sLW8udHRXaWR0aC1uLTEwKSxsPmEuZ2xvYmFscy5ncmlkV2lkdGgtby50dFdpZHRoLTEwJiYobD1hLmdsb2JhbHMuZ3JpZFdpZHRoLW8udHRXaWR0aCksbDwtMjAmJihsPS0yMCksYS5jb25maWcudG9vbHRpcC5mb2xsb3dDdXJzb3Ipe3ZhciBjPXMuZ2V0RWxHcmlkKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7KGw9cy5lLmNsaWVudFgtYy5sZWZ0KT5hLmdsb2JhbHMuZ3JpZFdpZHRoLzImJihsLT1zLnRvb2x0aXBSZWN0LnR0V2lkdGgpLChoPXMuZS5jbGllbnRZK2EuZ2xvYmFscy50cmFuc2xhdGVZLWMudG9wKT5hLmdsb2JhbHMuZ3JpZEhlaWdodC8yJiYoaC09cy50b29sdGlwUmVjdC50dEhlaWdodCl9ZWxzZSBhLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsfHxvLnR0SGVpZ2h0LzIraD5hLmdsb2JhbHMuZ3JpZEhlaWdodCYmKGg9YS5nbG9iYWxzLmdyaWRIZWlnaHQtby50dEhlaWdodCthLmdsb2JhbHMudHJhbnNsYXRlWSk7aXNOYU4obCl8fChsKz1hLmdsb2JhbHMudHJhbnNsYXRlWCxyLnN0eWxlLmxlZnQ9bCtcInB4XCIsci5zdHlsZS50b3A9aCtcInB4XCIpfX0se2tleTpcIm1vdmVNYXJrZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT10aGlzLnR0Q3R4O2lmKGkuZ2xvYmFscy5tYXJrZXJzLnNpemVbdF0+MClmb3IodmFyIHM9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIiAuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIi5jb25jYXQodCxcIiddIC5hcGV4Y2hhcnRzLW1hcmtlclwiKSkscj0wO3I8cy5sZW5ndGg7cisrKXBhcnNlSW50KHNbcl0uZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKT09PWUmJihhLm1hcmtlci5yZXNldFBvaW50c1NpemUoKSxhLm1hcmtlci5lbmxhcmdlQ3VycmVudFBvaW50KGUsc1tyXSkpO2Vsc2UgYS5tYXJrZXIucmVzZXRQb2ludHNTaXplKCksdGhpcy5tb3ZlRHluYW1pY1BvaW50T25Ib3ZlcihlLHQpfX0se2tleTpcIm1vdmVEeW5hbWljUG9pbnRPbkhvdmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaSxhLHM9dGhpcy53LHI9dGhpcy50dEN0eCxvPXMuZ2xvYmFscy5wb2ludHNBcnJheSxuPXIudG9vbHRpcFV0aWwuZ2V0SG92ZXJNYXJrZXJTaXplKGUpLGw9cy5jb25maWcuc2VyaWVzW2VdLnR5cGU7aWYoIWx8fFwiY29sdW1uXCIhPT1sJiZcImNhbmRsZXN0aWNrXCIhPT1sJiZcImJveFBsb3RcIiE9PWwpe2k9b1tlXVt0XVswXSxhPW9bZV1bdF1bMV0/b1tlXVt0XVsxXTowO3ZhciBoPXMuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIi5jb25jYXQoZSxcIiddIC5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzIGNpcmNsZVwiKSk7aCYmYTxzLmdsb2JhbHMuZ3JpZEhlaWdodCYmYT4wJiYoaC5zZXRBdHRyaWJ1dGUoXCJyXCIsbiksaC5zZXRBdHRyaWJ1dGUoXCJjeFwiLGkpLGguc2V0QXR0cmlidXRlKFwiY3lcIixhKSksdGhpcy5tb3ZlWENyb3NzaGFpcnMoaSksci5maXhlZFRvb2x0aXB8fHRoaXMubW92ZVRvb2x0aXAoaSxhLG4pfX19LHtrZXk6XCJtb3ZlRHluYW1pY1BvaW50c09uSG92ZXJcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMudHRDdHgsYT1pLncscz0wLHI9MCxvPWEuZ2xvYmFscy5wb2ludHNBcnJheTtlPW5ldyBOKHRoaXMuY3R4KS5nZXRBY3RpdmVDb25maWdTZXJpZXNJbmRleChcImFzY1wiLFtcImxpbmVcIixcImFyZWFcIixcInNjYXR0ZXJcIixcImJ1YmJsZVwiXSk7dmFyIG49aS50b29sdGlwVXRpbC5nZXRIb3Zlck1hcmtlclNpemUoZSk7b1tlXSYmKHM9b1tlXVt0XVswXSxyPW9bZV1bdF1bMV0pO3ZhciBsPWkudG9vbHRpcFV0aWwuZ2V0QWxsTWFya2VycygpO2lmKG51bGwhPT1sKWZvcih2YXIgaD0wO2g8YS5nbG9iYWxzLnNlcmllcy5sZW5ndGg7aCsrKXt2YXIgYz1vW2hdO2lmKGEuZ2xvYmFscy5jb21ib0NoYXJ0cyYmdm9pZCAwPT09YyYmbC5zcGxpY2UoaCwwLG51bGwpLGMmJmMubGVuZ3RoKXt2YXIgZD1vW2hdW3RdWzFdLGc9dm9pZCAwO2lmKGxbaF0uc2V0QXR0cmlidXRlKFwiY3hcIixzKSxcInJhbmdlQXJlYVwiPT09YS5jb25maWcuY2hhcnQudHlwZSYmIWEuZ2xvYmFscy5jb21ib0NoYXJ0cyl7dmFyIHU9dCthLmdsb2JhbHMuc2VyaWVzW2hdLmxlbmd0aDtnPW9baF1bdV1bMV0sZC09TWF0aC5hYnMoZC1nKS8yfW51bGwhPT1kJiYhaXNOYU4oZCkmJmQ8YS5nbG9iYWxzLmdyaWRIZWlnaHQrbiYmZCtuPjA/KGxbaF0mJmxbaF0uc2V0QXR0cmlidXRlKFwiclwiLG4pLGxbaF0mJmxbaF0uc2V0QXR0cmlidXRlKFwiY3lcIixkKSk6bFtoXSYmbFtoXS5zZXRBdHRyaWJ1dGUoXCJyXCIsMCl9fXRoaXMubW92ZVhDcm9zc2hhaXJzKHMpLGkuZml4ZWRUb29sdGlwfHx0aGlzLm1vdmVUb29sdGlwKHMscnx8YS5nbG9iYWxzLmdyaWRIZWlnaHQsbil9fSx7a2V5OlwibW92ZVN0aWNreVRvb2x0aXBPdmVyQmFyc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9dGhpcy50dEN0eCxzPWkuZ2xvYmFscy5jb2x1bW5TZXJpZXM/aS5nbG9iYWxzLmNvbHVtblNlcmllcy5sZW5ndGg6aS5nbG9iYWxzLnNlcmllcy5sZW5ndGgscj1zPj0yJiZzJTI9PTA/TWF0aC5mbG9vcihzLzIpOk1hdGguZmxvb3Iocy8yKSsxO2kuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihyPW5ldyBOKHRoaXMuY3R4KS5nZXRBY3RpdmVDb25maWdTZXJpZXNJbmRleChcImRlc2NcIikrMSk7dmFyIG89aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWJhci1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW3JlbD0nXCIuY29uY2F0KHIsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQodCxcIiddLCAuYXBleGNoYXJ0cy1jYW5kbGVzdGljay1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW3JlbD0nXCIpLmNvbmNhdChyLFwiJ10gcGF0aFtqPSdcIikuY29uY2F0KHQsXCInXSwgLmFwZXhjaGFydHMtYm94UGxvdC1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW3JlbD0nXCIpLmNvbmNhdChyLFwiJ10gcGF0aFtqPSdcIikuY29uY2F0KHQsXCInXSwgLmFwZXhjaGFydHMtcmFuZ2ViYXItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9J1wiKS5jb25jYXQocixcIiddIHBhdGhbaj0nXCIpLmNvbmNhdCh0LFwiJ11cIikpO298fFwibnVtYmVyXCIhPXR5cGVvZiBlfHwobz1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtYmFyLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIi5jb25jYXQoZSxcIiddIHBhdGhbaj0nXCIpLmNvbmNhdCh0LFwiJ10sXFxuICAgICAgICAuYXBleGNoYXJ0cy1jYW5kbGVzdGljay1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIpLmNvbmNhdChlLFwiJ10gcGF0aFtqPSdcIikuY29uY2F0KHQsXCInXSxcXG4gICAgICAgIC5hcGV4Y2hhcnRzLWJveFBsb3Qtc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiKS5jb25jYXQoZSxcIiddIHBhdGhbaj0nXCIpLmNvbmNhdCh0LFwiJ10sXFxuICAgICAgICAuYXBleGNoYXJ0cy1yYW5nZWJhci1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIpLmNvbmNhdChlLFwiJ10gcGF0aFtqPSdcIikuY29uY2F0KHQsXCInXVwiKSkpO3ZhciBuPW8/cGFyc2VGbG9hdChvLmdldEF0dHJpYnV0ZShcImN4XCIpKTowLGw9bz9wYXJzZUZsb2F0KG8uZ2V0QXR0cmlidXRlKFwiY3lcIikpOjAsaD1vP3BhcnNlRmxvYXQoby5nZXRBdHRyaWJ1dGUoXCJiYXJXaWR0aFwiKSk6MCxjPWEuZ2V0RWxHcmlkKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZD1vJiYoby5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLWFyZWFcIil8fG8uY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1ib3hQbG90LWFyZWFcIikpO2kuZ2xvYmFscy5pc1hOdW1lcmljPyhvJiYhZCYmKG4tPXMlMiE9MD9oLzI6MCksbyYmZCYmaS5nbG9iYWxzLmNvbWJvQ2hhcnRzJiYobi09aC8yKSk6aS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8KG49YS54QXhpc1RpY2tzUG9zaXRpb25zW3QtMV0rYS5kYXRhUG9pbnRzRGl2aWRlZFdpZHRoLzIsaXNOYU4obikmJihuPWEueEF4aXNUaWNrc1Bvc2l0aW9uc1t0XS1hLmRhdGFQb2ludHNEaXZpZGVkV2lkdGgvMikpLGkuZ2xvYmFscy5pc0Jhckhvcml6b250YWw/bC09YS50b29sdGlwUmVjdC50dEhlaWdodDppLmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcj9sPWEuZS5jbGllbnRZLWMudG9wLWEudG9vbHRpcFJlY3QudHRIZWlnaHQvMjpsK2EudG9vbHRpcFJlY3QudHRIZWlnaHQrMTU+aS5nbG9iYWxzLmdyaWRIZWlnaHQmJihsPWkuZ2xvYmFscy5ncmlkSGVpZ2h0KSxpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsfHx0aGlzLm1vdmVYQ3Jvc3NoYWlycyhuKSxhLmZpeGVkVG9vbHRpcHx8dGhpcy5tb3ZlVG9vbHRpcChuLGx8fGkuZ2xvYmFscy5ncmlkSGVpZ2h0KX19XSksdH0oKSxwdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy50dEN0eD1lLHRoaXMuY3R4PWUuY3R4LHRoaXMudG9vbHRpcFBvc2l0aW9uPW5ldyB1dChlKX1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd0R5bmFtaWNQb2ludHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPW5ldyBtKHRoaXMuY3R4KSxpPW5ldyBEKHRoaXMuY3R4KSxhPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXNcIik7YT11KGEpLHQuY29uZmlnLmNoYXJ0LnN0YWNrZWQmJmEuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gcGFyc2VGbG9hdCh0LmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpKS1wYXJzZUZsb2F0KGUuZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIikpfSkpO2Zvcih2YXIgcz0wO3M8YS5sZW5ndGg7cysrKXt2YXIgcj1hW3NdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwXCIpO2lmKG51bGwhPT1yKXt2YXIgbz12b2lkIDAsbj1cImFwZXhjaGFydHMtbWFya2VyIHdcIi5jb25jYXQoKE1hdGgucmFuZG9tKCkrMSkudG9TdHJpbmcoMzYpLnN1YnN0cmluZyg0KSk7XCJsaW5lXCIhPT10LmNvbmZpZy5jaGFydC50eXBlJiZcImFyZWFcIiE9PXQuY29uZmlnLmNoYXJ0LnR5cGV8fHQuZ2xvYmFscy5jb21ib0NoYXJ0c3x8dC5jb25maWcudG9vbHRpcC5pbnRlcnNlY3R8fChuKz1cIiBuby1wb2ludGVyLWV2ZW50c1wiKTt2YXIgbD1pLmdldE1hcmtlckNvbmZpZyh7Y3NzQ2xhc3M6bixzZXJpZXNJbmRleDpOdW1iZXIoci5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSl9KTsobz1lLmRyYXdNYXJrZXIoMCwwLGwpKS5ub2RlLnNldEF0dHJpYnV0ZShcImRlZmF1bHQtbWFya2VyLXNpemVcIiwwKTt2YXIgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlModC5nbG9iYWxzLlNWR05TLFwiZ1wiKTtoLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzXCIpLGguYXBwZW5kQ2hpbGQoby5ub2RlKSxyLmFwcGVuZENoaWxkKGgpfX19fSx7a2V5OlwiZW5sYXJnZUN1cnJlbnRQb2ludFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGwsYT1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106bnVsbCxzPXRoaXMudztcImJ1YmJsZVwiIT09cy5jb25maWcuY2hhcnQudHlwZSYmdGhpcy5uZXdQb2ludFNpemUodCxlKTt2YXIgcj1lLmdldEF0dHJpYnV0ZShcImN4XCIpLG89ZS5nZXRBdHRyaWJ1dGUoXCJjeVwiKTtpZihudWxsIT09aSYmbnVsbCE9PWEmJihyPWksbz1hKSx0aGlzLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWENyb3NzaGFpcnMociksIXRoaXMuZml4ZWRUb29sdGlwKXtpZihcInJhZGFyXCI9PT1zLmNvbmZpZy5jaGFydC50eXBlKXt2YXIgbj10aGlzLnR0Q3R4LmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3I9dGhpcy50dEN0eC5lLmNsaWVudFgtbi5sZWZ0fXRoaXMudG9vbHRpcFBvc2l0aW9uLm1vdmVUb29sdGlwKHIsbyxzLmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemUpfX19LHtrZXk6XCJlbmxhcmdlUG9pbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudyxpPXRoaXMsYT10aGlzLnR0Q3R4LHM9dCxyPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXM6bm90KC5hcGV4Y2hhcnRzLXNlcmllcy1jb2xsYXBzZWQpIC5hcGV4Y2hhcnRzLW1hcmtlclwiKSxvPWUuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZSxuPTA7bjxyLmxlbmd0aDtuKyspe3ZhciBsPXJbbl0uZ2V0QXR0cmlidXRlKFwicmVsXCIpLGg9cltuXS5nZXRBdHRyaWJ1dGUoXCJpbmRleFwiKTtpZih2b2lkIDA9PT1vJiYobz1lLmdsb2JhbHMubWFya2Vycy5zaXplW2hdK2UuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZU9mZnNldCkscz09PXBhcnNlSW50KGwsMTApKXtpLm5ld1BvaW50U2l6ZShzLHJbbl0pO3ZhciBjPXJbbl0uZ2V0QXR0cmlidXRlKFwiY3hcIiksZD1yW25dLmdldEF0dHJpYnV0ZShcImN5XCIpO2kudG9vbHRpcFBvc2l0aW9uLm1vdmVYQ3Jvc3NoYWlycyhjKSxhLmZpeGVkVG9vbHRpcHx8aS50b29sdGlwUG9zaXRpb24ubW92ZVRvb2x0aXAoYyxkLG8pfWVsc2UgaS5vbGRQb2ludFNpemUocltuXSl9fX0se2tleTpcIm5ld1BvaW50U2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9aS5jb25maWcubWFya2Vycy5ob3Zlci5zaXplLHM9MD09PXQ/ZS5wYXJlbnROb2RlLmZpcnN0Q2hpbGQ6ZS5wYXJlbnROb2RlLmxhc3RDaGlsZDtpZihcIjBcIiE9PXMuZ2V0QXR0cmlidXRlKFwiZGVmYXVsdC1tYXJrZXItc2l6ZVwiKSl7dmFyIHI9cGFyc2VJbnQocy5nZXRBdHRyaWJ1dGUoXCJpbmRleFwiKSwxMCk7dm9pZCAwPT09YSYmKGE9aS5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtyXStpLmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemVPZmZzZXQpLGE8MCYmKGE9MCkscy5zZXRBdHRyaWJ1dGUoXCJyXCIsYSl9fX0se2tleTpcIm9sZFBvaW50U2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXBhcnNlRmxvYXQodC5nZXRBdHRyaWJ1dGUoXCJkZWZhdWx0LW1hcmtlci1zaXplXCIpKTt0LnNldEF0dHJpYnV0ZShcInJcIixlKX19LHtrZXk6XCJyZXNldFBvaW50c1NpemVcIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXM6bm90KC5hcGV4Y2hhcnRzLXNlcmllcy1jb2xsYXBzZWQpIC5hcGV4Y2hhcnRzLW1hcmtlclwiKSxlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciBpPXBhcnNlRmxvYXQodFtlXS5nZXRBdHRyaWJ1dGUoXCJkZWZhdWx0LW1hcmtlci1zaXplXCIpKTt4LmlzTnVtYmVyKGkpJiZpPj0wP3RbZV0uc2V0QXR0cmlidXRlKFwiclwiLGkpOnRbZV0uc2V0QXR0cmlidXRlKFwiclwiLDApfX19XSksdH0oKSxmdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy50dEN0eD1lfXJldHVybiByKHQsW3trZXk6XCJnZXRBdHRyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gcGFyc2VGbG9hdCh0LnRhcmdldC5nZXRBdHRyaWJ1dGUoZSkpfX0se2tleTpcImhhbmRsZUhlYXRUcmVlVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZSxpPXQub3B0LGE9dC54LHM9dC55LHI9dC50eXBlLG89dGhpcy50dEN0eCxuPXRoaXMudztpZihlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLVwiLmNvbmNhdChyLFwiLXJlY3RcIikpKXt2YXIgbD10aGlzLmdldEF0dHIoZSxcImlcIiksaD10aGlzLmdldEF0dHIoZSxcImpcIiksYz10aGlzLmdldEF0dHIoZSxcImN4XCIpLGQ9dGhpcy5nZXRBdHRyKGUsXCJjeVwiKSxnPXRoaXMuZ2V0QXR0cihlLFwid2lkdGhcIiksdT10aGlzLmdldEF0dHIoZSxcImhlaWdodFwiKTtpZihvLnRvb2x0aXBMYWJlbHMuZHJhd1Nlcmllc1RleHRzKHt0dEl0ZW1zOmkudHRJdGVtcyxpOmwsajpoLHNoYXJlZDohMSxlOmV9KSxuLmdsb2JhbHMuY2FwdHVyZWRTZXJpZXNJbmRleD1sLG4uZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4PWgsYT1jK28udG9vbHRpcFJlY3QudHRXaWR0aC8yK2cscz1kK28udG9vbHRpcFJlY3QudHRIZWlnaHQvMi11LzIsby50b29sdGlwUG9zaXRpb24ubW92ZVhDcm9zc2hhaXJzKGMrZy8yKSxhPm4uZ2xvYmFscy5ncmlkV2lkdGgvMiYmKGE9Yy1vLnRvb2x0aXBSZWN0LnR0V2lkdGgvMitnKSxvLncuY29uZmlnLnRvb2x0aXAuZm9sbG93Q3Vyc29yKXt2YXIgcD1uLmdsb2JhbHMuZG9tLmVsV3JhcC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTthPW4uZ2xvYmFscy5jbGllbnRYLXAubGVmdC0oYT5uLmdsb2JhbHMuZ3JpZFdpZHRoLzI/by50b29sdGlwUmVjdC50dFdpZHRoOjApLHM9bi5nbG9iYWxzLmNsaWVudFktcC50b3AtKHM+bi5nbG9iYWxzLmdyaWRIZWlnaHQvMj9vLnRvb2x0aXBSZWN0LnR0SGVpZ2h0OjApfX1yZXR1cm57eDphLHk6c319fSx7a2V5OlwiaGFuZGxlTWFya2VyVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGksYT10LmUscz10Lm9wdCxyPXQueCxvPXQueSxuPXRoaXMudyxsPXRoaXMudHRDdHg7aWYoYS50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1tYXJrZXJcIikpe3ZhciBoPXBhcnNlSW50KHMucGF0aHMuZ2V0QXR0cmlidXRlKFwiY3hcIiksMTApLGM9cGFyc2VJbnQocy5wYXRocy5nZXRBdHRyaWJ1dGUoXCJjeVwiKSwxMCksZD1wYXJzZUZsb2F0KHMucGF0aHMuZ2V0QXR0cmlidXRlKFwidmFsXCIpKTtpZihpPXBhcnNlSW50KHMucGF0aHMuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKSxlPXBhcnNlSW50KHMucGF0aHMucGFyZW50Tm9kZS5wYXJlbnROb2RlLnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xLGwuaW50ZXJzZWN0KXt2YXIgZz14LmZpbmRBbmNlc3RvcihzLnBhdGhzLFwiYXBleGNoYXJ0cy1zZXJpZXNcIik7ZyYmKGU9cGFyc2VJbnQoZy5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSwxMCkpfWlmKGwudG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoe3R0SXRlbXM6cy50dEl0ZW1zLGk6ZSxqOmksc2hhcmVkOiFsLnNob3dPbkludGVyc2VjdCYmbi5jb25maWcudG9vbHRpcC5zaGFyZWQsZTphfSksXCJtb3VzZXVwXCI9PT1hLnR5cGUmJmwubWFya2VyQ2xpY2soYSxlLGkpLG4uZ2xvYmFscy5jYXB0dXJlZFNlcmllc0luZGV4PWUsbi5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXg9aSxyPWgsbz1jK24uZ2xvYmFscy50cmFuc2xhdGVZLTEuNCpsLnRvb2x0aXBSZWN0LnR0SGVpZ2h0LGwudy5jb25maWcudG9vbHRpcC5mb2xsb3dDdXJzb3Ipe3ZhciB1PWwuZ2V0RWxHcmlkKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7bz1sLmUuY2xpZW50WStuLmdsb2JhbHMudHJhbnNsYXRlWS11LnRvcH1kPDAmJihvPWMpLGwubWFya2VyLmVubGFyZ2VDdXJyZW50UG9pbnQoaSxzLnBhdGhzLHIsbyl9cmV0dXJue3g6cix5Om99fX0se2tleTpcImhhbmRsZUJhclRvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpLGE9dC5lLHM9dC5vcHQscj10aGlzLncsbz10aGlzLnR0Q3R4LG49by5nZXRFbFRvb2x0aXAoKSxsPTAsaD0wLGM9MCxkPXRoaXMuZ2V0QmFyVG9vbHRpcFhZKHtlOmEsb3B0OnN9KTtlPWQuaTt2YXIgZz1kLmJhckhlaWdodCx1PWQuajtyLmdsb2JhbHMuY2FwdHVyZWRTZXJpZXNJbmRleD1lLHIuZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4PXUsci5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmby50b29sdGlwVXRpbC5oYXNCYXJzKCl8fCFyLmNvbmZpZy50b29sdGlwLnNoYXJlZD8oaD1kLngsYz1kLnksaT1BcnJheS5pc0FycmF5KHIuY29uZmlnLnN0cm9rZS53aWR0aCk/ci5jb25maWcuc3Ryb2tlLndpZHRoW2VdOnIuY29uZmlnLnN0cm9rZS53aWR0aCxsPWgpOnIuZ2xvYmFscy5jb21ib0NoYXJ0c3x8ci5jb25maWcudG9vbHRpcC5zaGFyZWR8fChsLz0yKSxpc05hTihjKSYmKGM9ci5nbG9iYWxzLnN2Z0hlaWdodC1vLnRvb2x0aXBSZWN0LnR0SGVpZ2h0KTt2YXIgcD1wYXJzZUludChzLnBhdGhzLnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIiksMTApLGY9ci5nbG9iYWxzLmlzTXVsdGlwbGVZQXhpcz9yLmNvbmZpZy55YXhpc1twXSYmci5jb25maWcueWF4aXNbcF0ucmV2ZXJzZWQ6ci5jb25maWcueWF4aXNbMF0ucmV2ZXJzZWQ7aWYoaCtvLnRvb2x0aXBSZWN0LnR0V2lkdGg+ci5nbG9iYWxzLmdyaWRXaWR0aCYmIWY/aC09by50b29sdGlwUmVjdC50dFdpZHRoOmg8MCYmKGg9MCksby53LmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcil7dmFyIHg9by5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtjPW8uZS5jbGllbnRZLXgudG9wfW51bGw9PT1vLnRvb2x0aXAmJihvLnRvb2x0aXA9ci5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXBcIikpLHIuY29uZmlnLnRvb2x0aXAuc2hhcmVkfHwoci5nbG9iYWxzLmNvbWJvQmFyQ291bnQ+MD9vLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWENyb3NzaGFpcnMobCtpLzIpOm8udG9vbHRpcFBvc2l0aW9uLm1vdmVYQ3Jvc3NoYWlycyhsKSksIW8uZml4ZWRUb29sdGlwJiYoIXIuY29uZmlnLnRvb2x0aXAuc2hhcmVkfHxyLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZvLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSkmJihmJiYoaC09by50b29sdGlwUmVjdC50dFdpZHRoKTwwJiYoaD0wKSwhZnx8ci5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmby50b29sdGlwVXRpbC5oYXNCYXJzKCl8fChjPWMrZy0yKihyLmdsb2JhbHMuc2VyaWVzW2VdW3VdPDA/ZzowKSksYz1jK3IuZ2xvYmFscy50cmFuc2xhdGVZLW8udG9vbHRpcFJlY3QudHRIZWlnaHQvMixuLnN0eWxlLmxlZnQ9aCtyLmdsb2JhbHMudHJhbnNsYXRlWCtcInB4XCIsbi5zdHlsZS50b3A9YytcInB4XCIpfX0se2tleTpcImdldEJhclRvb2x0aXBYWVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZSxpPXQub3B0LGE9dGhpcy53LHM9bnVsbCxyPXRoaXMudHRDdHgsbz0wLG49MCxsPTAsaD0wLGM9MCxkPWUudGFyZ2V0LmNsYXNzTGlzdDtpZihkLmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1iYXItYXJlYVwiKXx8ZC5jb250YWlucyhcImFwZXhjaGFydHMtY2FuZGxlc3RpY2stYXJlYVwiKXx8ZC5jb250YWlucyhcImFwZXhjaGFydHMtYm94UGxvdC1hcmVhXCIpfHxkLmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1yYW5nZWJhci1hcmVhXCIpKXt2YXIgZz1lLnRhcmdldCx1PWcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscD1pLmVsR3JpZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxmPXUuaGVpZ2h0O2M9dS5oZWlnaHQ7dmFyIHg9dS53aWR0aCxiPXBhcnNlSW50KGcuZ2V0QXR0cmlidXRlKFwiY3hcIiksMTApLHY9cGFyc2VJbnQoZy5nZXRBdHRyaWJ1dGUoXCJjeVwiKSwxMCk7aD1wYXJzZUZsb2F0KGcuZ2V0QXR0cmlidXRlKFwiYmFyV2lkdGhcIikpO3ZhciBtPVwidG91Y2htb3ZlXCI9PT1lLnR5cGU/ZS50b3VjaGVzWzBdLmNsaWVudFg6ZS5jbGllbnRYO3M9cGFyc2VJbnQoZy5nZXRBdHRyaWJ1dGUoXCJqXCIpLDEwKSxvPXBhcnNlSW50KGcucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTE7dmFyIHk9Zy5nZXRBdHRyaWJ1dGUoXCJkYXRhLXJhbmdlLXkxXCIpLHc9Zy5nZXRBdHRyaWJ1dGUoXCJkYXRhLXJhbmdlLXkyXCIpO2EuZ2xvYmFscy5jb21ib0NoYXJ0cyYmKG89cGFyc2VJbnQoZy5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpLDEwKSksci50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyh7dHRJdGVtczppLnR0SXRlbXMsaTpvLGo6cyx5MTp5P3BhcnNlSW50KHksMTApOm51bGwseTI6dz9wYXJzZUludCh3LDEwKTpudWxsLHNoYXJlZDohci5zaG93T25JbnRlcnNlY3QmJmEuY29uZmlnLnRvb2x0aXAuc2hhcmVkLGU6ZX0pLGEuY29uZmlnLnRvb2x0aXAuZm9sbG93Q3Vyc29yP2EuZ2xvYmFscy5pc0Jhckhvcml6b250YWw/KG49bS1wLmxlZnQrMTUsbD12LXIuZGF0YVBvaW50c0RpdmlkZWRIZWlnaHQrZi8yLXIudG9vbHRpcFJlY3QudHRIZWlnaHQvMik6KG49YS5nbG9iYWxzLmlzWE51bWVyaWM/Yi14LzI6Yi1yLmRhdGFQb2ludHNEaXZpZGVkV2lkdGgreC8yLGw9ZS5jbGllbnRZLXAudG9wLXIudG9vbHRpcFJlY3QudHRIZWlnaHQvMi0xNSk6YS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD8oKG49Yik8ci54eVJhdGlvcy5iYXNlTGluZUludmVydGVkWSYmKG49Yi1yLnRvb2x0aXBSZWN0LnR0V2lkdGgpLGw9di1yLmRhdGFQb2ludHNEaXZpZGVkSGVpZ2h0K2YvMi1yLnRvb2x0aXBSZWN0LnR0SGVpZ2h0LzIpOihuPWEuZ2xvYmFscy5pc1hOdW1lcmljP2IteC8yOmItci5kYXRhUG9pbnRzRGl2aWRlZFdpZHRoK3gvMixsPXYpfXJldHVybnt4Om4seTpsLGJhckhlaWdodDpjLGJhcldpZHRoOmgsaTpvLGo6c319fV0pLHR9KCkseHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMudHRDdHg9ZX1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1hheGlzVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dGhpcy50dEN0eCxpPVwiYm90dG9tXCI9PT10LmNvbmZpZy54YXhpcy5wb3NpdGlvbjtlLnhheGlzT2ZmWT1pP3QuZ2xvYmFscy5ncmlkSGVpZ2h0KzE6LXQuZ2xvYmFscy54QXhpc0hlaWdodC10LmNvbmZpZy54YXhpcy5heGlzVGlja3MuaGVpZ2h0KzM7dmFyIGE9aT9cImFwZXhjaGFydHMteGF4aXN0b29sdGlwIGFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbVwiOlwiYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAgYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdG9wXCIscz10Lmdsb2JhbHMuZG9tLmVsV3JhcDtlLmlzWEF4aXNUb29sdGlwRW5hYmxlZCYmKG51bGw9PT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteGF4aXN0b29sdGlwXCIpJiYoZS54YXhpc1Rvb2x0aXA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxlLnhheGlzVG9vbHRpcC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLGErXCIgYXBleGNoYXJ0cy10aGVtZS1cIit0LmNvbmZpZy50b29sdGlwLnRoZW1lKSxzLmFwcGVuZENoaWxkKGUueGF4aXNUb29sdGlwKSxlLnhheGlzVG9vbHRpcFRleHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxlLnhheGlzVG9vbHRpcFRleHQuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRleHRcIiksZS54YXhpc1Rvb2x0aXBUZXh0LnN0eWxlLmZvbnRGYW1pbHk9dC5jb25maWcueGF4aXMudG9vbHRpcC5zdHlsZS5mb250RmFtaWx5fHx0LmNvbmZpZy5jaGFydC5mb250RmFtaWx5LGUueGF4aXNUb29sdGlwVGV4dC5zdHlsZS5mb250U2l6ZT10LmNvbmZpZy54YXhpcy50b29sdGlwLnN0eWxlLmZvbnRTaXplLGUueGF4aXNUb29sdGlwLmFwcGVuZENoaWxkKGUueGF4aXNUb29sdGlwVGV4dCkpKX19LHtrZXk6XCJkcmF3WWF4aXNUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy53LGU9dGhpcy50dEN0eCxpPWZ1bmN0aW9uKGkpe3ZhciBhPXQuY29uZmlnLnlheGlzW2ldLm9wcG9zaXRlfHx0LmNvbmZpZy55YXhpc1tpXS5jcm9zc2hhaXJzLm9wcG9zaXRlO2UueWF4aXNPZmZYPWE/dC5nbG9iYWxzLmdyaWRXaWR0aCsxOjE7dmFyIHM9XCJhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcCBhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1cIi5jb25jYXQoaSxhP1wiIGFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0XCI6XCIgYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdFwiKTt0Lmdsb2JhbHMueUF4aXNTYW1lU2NhbGVJbmRpY2VzLm1hcCgoZnVuY3Rpb24oZSxhKXtlLm1hcCgoZnVuY3Rpb24oZSxhKXthPT09aSYmKHMrPXQuY29uZmlnLnlheGlzW2FdLnNob3c/XCIgXCI6XCIgYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtaGlkZGVuXCIpfSkpfSkpO3ZhciByPXQuZ2xvYmFscy5kb20uZWxXcmFwO251bGw9PT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteWF4aXN0b29sdGlwIGFwZXhjaGFydHMteWF4aXN0b29sdGlwLVwiLmNvbmNhdChpKSkmJihlLnlheGlzVG9vbHRpcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGUueWF4aXNUb29sdGlwLnNldEF0dHJpYnV0ZShcImNsYXNzXCIscytcIiBhcGV4Y2hhcnRzLXRoZW1lLVwiK3QuY29uZmlnLnRvb2x0aXAudGhlbWUpLHIuYXBwZW5kQ2hpbGQoZS55YXhpc1Rvb2x0aXApLDA9PT1pJiYoZS55YXhpc1Rvb2x0aXBUZXh0PVtdKSxlLnlheGlzVG9vbHRpcFRleHRbaV09ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxlLnlheGlzVG9vbHRpcFRleHRbaV0uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMteWF4aXN0b29sdGlwLXRleHRcIiksZS55YXhpc1Rvb2x0aXAuYXBwZW5kQ2hpbGQoZS55YXhpc1Rvb2x0aXBUZXh0W2ldKSl9LGE9MDthPHQuY29uZmlnLnlheGlzLmxlbmd0aDthKyspaShhKX19LHtrZXk6XCJzZXRYQ3Jvc3NoYWlyV2lkdGhcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXRoaXMudHRDdHgsaT1lLmdldEVsWENyb3NzaGFpcnMoKTtpZihlLnhjcm9zc2hhaXJzV2lkdGg9cGFyc2VJbnQodC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCwxMCksdC5nbG9iYWxzLmNvbWJvQ2hhcnRzKXt2YXIgYT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtYmFyLWFyZWFcIik7aWYobnVsbCE9PWEmJlwiYmFyV2lkdGhcIj09PXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgpe3ZhciBzPXBhcnNlRmxvYXQoYS5nZXRBdHRyaWJ1dGUoXCJiYXJXaWR0aFwiKSk7ZS54Y3Jvc3NoYWlyc1dpZHRoPXN9ZWxzZSBpZihcInRpY2tXaWR0aFwiPT09dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCl7dmFyIHI9dC5nbG9iYWxzLmxhYmVscy5sZW5ndGg7ZS54Y3Jvc3NoYWlyc1dpZHRoPXQuZ2xvYmFscy5ncmlkV2lkdGgvcn19ZWxzZSBpZihcInRpY2tXaWR0aFwiPT09dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCl7dmFyIG89dC5nbG9iYWxzLmxhYmVscy5sZW5ndGg7ZS54Y3Jvc3NoYWlyc1dpZHRoPXQuZ2xvYmFscy5ncmlkV2lkdGgvb31lbHNlIGlmKFwiYmFyV2lkdGhcIj09PXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgpe3ZhciBuPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1iYXItYXJlYVwiKTtpZihudWxsIT09bil7dmFyIGw9cGFyc2VGbG9hdChuLmdldEF0dHJpYnV0ZShcImJhcldpZHRoXCIpKTtlLnhjcm9zc2hhaXJzV2lkdGg9bH1lbHNlIGUueGNyb3NzaGFpcnNXaWR0aD0xfXQuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihlLnhjcm9zc2hhaXJzV2lkdGg9MCksbnVsbCE9PWkmJmUueGNyb3NzaGFpcnNXaWR0aD4wJiZpLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsZS54Y3Jvc3NoYWlyc1dpZHRoKX19LHtrZXk6XCJoYW5kbGVZQ3Jvc3NoYWlyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10aGlzLnR0Q3R4O2UueWNyb3NzaGFpcnM9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzXCIpLGUueWNyb3NzaGFpcnNIaWRkZW49dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzLWhpZGRlblwiKX19LHtrZXk6XCJkcmF3WWF4aXNUb29sdGlwVGV4dFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLnR0Q3R4LHM9dGhpcy53LHI9cy5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbdF07aWYoYS55YXhpc1Rvb2x0aXBzW3RdKXt2YXIgbz1hLmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49KGUtby50b3ApKmkueVJhdGlvW3RdLGw9cy5nbG9iYWxzLm1heFlBcnJbdF0tcy5nbG9iYWxzLm1pbllBcnJbdF0saD1zLmdsb2JhbHMubWluWUFyclt0XSsobC1uKTthLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWUNyb3NzaGFpcnMoZS1vLnRvcCksYS55YXhpc1Rvb2x0aXBUZXh0W3RdLmlubmVySFRNTD1yKGgpLGEudG9vbHRpcFBvc2l0aW9uLm1vdmVZQXhpc1Rvb2x0aXAodCl9fX1dKSx0fSgpLGJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53O3ZhciBpPXRoaXMudzt0aGlzLnRDb25maWc9aS5jb25maWcudG9vbHRpcCx0aGlzLnRvb2x0aXBVdGlsPW5ldyBkdCh0aGlzKSx0aGlzLnRvb2x0aXBMYWJlbHM9bmV3IGd0KHRoaXMpLHRoaXMudG9vbHRpcFBvc2l0aW9uPW5ldyB1dCh0aGlzKSx0aGlzLm1hcmtlcj1uZXcgcHQodGhpcyksdGhpcy5pbnRlcnNlY3Q9bmV3IGZ0KHRoaXMpLHRoaXMuYXhlc1Rvb2x0aXA9bmV3IHh0KHRoaXMpLHRoaXMuc2hvd09uSW50ZXJzZWN0PXRoaXMudENvbmZpZy5pbnRlcnNlY3QsdGhpcy5zaG93VG9vbHRpcFRpdGxlPXRoaXMudENvbmZpZy54LnNob3csdGhpcy5maXhlZFRvb2x0aXA9dGhpcy50Q29uZmlnLmZpeGVkLmVuYWJsZWQsdGhpcy54YXhpc1Rvb2x0aXA9bnVsbCx0aGlzLnlheGlzVFRFbHM9bnVsbCx0aGlzLmlzQmFyU2hhcmVkPSFpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZ0aGlzLnRDb25maWcuc2hhcmVkLHRoaXMubGFzdEhvdmVyVGltZT1EYXRlLm5vdygpfXJldHVybiByKHQsW3trZXk6XCJnZXRFbFRvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdHx8KHQ9dGhpcyksdC53Lmdsb2JhbHMuZG9tLmJhc2VFbD90LncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwXCIpOm51bGx9fSx7a2V5OlwiZ2V0RWxYQ3Jvc3NoYWlyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXhjcm9zc2hhaXJzXCIpfX0se2tleTpcImdldEVsR3JpZFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWdyaWRcIil9fSx7a2V5OlwiZHJhd1Rvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7dGhpcy54eVJhdGlvcz10LHRoaXMuaXNYQXhpc1Rvb2x0aXBFbmFibGVkPWUuY29uZmlnLnhheGlzLnRvb2x0aXAuZW5hYmxlZCYmZS5nbG9iYWxzLmF4aXNDaGFydHMsdGhpcy55YXhpc1Rvb2x0aXBzPWUuY29uZmlnLnlheGlzLm1hcCgoZnVuY3Rpb24odCxpKXtyZXR1cm4hISh0LnNob3cmJnQudG9vbHRpcC5lbmFibGVkJiZlLmdsb2JhbHMuYXhpc0NoYXJ0cyl9KSksdGhpcy5hbGxUb29sdGlwU2VyaWVzR3JvdXBzPVtdLGUuZ2xvYmFscy5heGlzQ2hhcnRzfHwodGhpcy5zaG93VG9vbHRpcFRpdGxlPSExKTt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO2lmKGkuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcFwiKSxlLmNvbmZpZy50b29sdGlwLmNzc0NsYXNzJiZpLmNsYXNzTGlzdC5hZGQoZS5jb25maWcudG9vbHRpcC5jc3NDbGFzcyksaS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10aGVtZS1cIi5jb25jYXQodGhpcy50Q29uZmlnLnRoZW1lKSksZS5nbG9iYWxzLmRvbS5lbFdyYXAuYXBwZW5kQ2hpbGQoaSksZS5nbG9iYWxzLmF4aXNDaGFydHMpe3RoaXMuYXhlc1Rvb2x0aXAuZHJhd1hheGlzVG9vbHRpcCgpLHRoaXMuYXhlc1Rvb2x0aXAuZHJhd1lheGlzVG9vbHRpcCgpLHRoaXMuYXhlc1Rvb2x0aXAuc2V0WENyb3NzaGFpcldpZHRoKCksdGhpcy5heGVzVG9vbHRpcC5oYW5kbGVZQ3Jvc3NoYWlyKCk7dmFyIGE9bmV3IFYodGhpcy5jdHgpO3RoaXMueEF4aXNUaWNrc1Bvc2l0aW9ucz1hLmdldFhBeGlzVGlja3NQb3NpdGlvbnMoKX1pZighZS5nbG9iYWxzLmNvbWJvQ2hhcnRzJiYhdGhpcy50Q29uZmlnLmludGVyc2VjdCYmXCJyYW5nZUJhclwiIT09ZS5jb25maWcuY2hhcnQudHlwZXx8dGhpcy50Q29uZmlnLnNoYXJlZHx8KHRoaXMuc2hvd09uSW50ZXJzZWN0PSEwKSwwIT09ZS5jb25maWcubWFya2Vycy5zaXplJiYwIT09ZS5nbG9iYWxzLm1hcmtlcnMubGFyZ2VzdFNpemV8fHRoaXMubWFya2VyLmRyYXdEeW5hbWljUG9pbnRzKHRoaXMpLGUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoIT09ZS5nbG9iYWxzLnNlcmllcy5sZW5ndGgpe3RoaXMuZGF0YVBvaW50c0RpdmlkZWRIZWlnaHQ9ZS5nbG9iYWxzLmdyaWRIZWlnaHQvZS5nbG9iYWxzLmRhdGFQb2ludHMsdGhpcy5kYXRhUG9pbnRzRGl2aWRlZFdpZHRoPWUuZ2xvYmFscy5ncmlkV2lkdGgvZS5nbG9iYWxzLmRhdGFQb2ludHMsdGhpcy5zaG93VG9vbHRpcFRpdGxlJiYodGhpcy50b29sdGlwVGl0bGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSx0aGlzLnRvb2x0aXBUaXRsZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLXRpdGxlXCIpLHRoaXMudG9vbHRpcFRpdGxlLnN0eWxlLmZvbnRGYW1pbHk9dGhpcy50Q29uZmlnLnN0eWxlLmZvbnRGYW1pbHl8fGUuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksdGhpcy50b29sdGlwVGl0bGUuc3R5bGUuZm9udFNpemU9dGhpcy50Q29uZmlnLnN0eWxlLmZvbnRTaXplLGkuYXBwZW5kQ2hpbGQodGhpcy50b29sdGlwVGl0bGUpKTt2YXIgcz1lLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDsoZS5nbG9iYWxzLnh5Q2hhcnRzfHxlLmdsb2JhbHMuY29tYm9DaGFydHMpJiZ0aGlzLnRDb25maWcuc2hhcmVkJiYocz10aGlzLnNob3dPbkludGVyc2VjdD8xOmUuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKSx0aGlzLmxlZ2VuZExhYmVscz1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtbGVnZW5kLXRleHRcIiksdGhpcy50dEl0ZW1zPXRoaXMuY3JlYXRlVFRFbGVtZW50cyhzKSx0aGlzLmFkZFNWR0V2ZW50cygpfX19LHtrZXk6XCJjcmVhdGVUVEVsZW1lbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMsaT10aGlzLncsYT1bXSxzPXRoaXMuZ2V0RWxUb29sdGlwKCkscj1mdW5jdGlvbihyKXt2YXIgbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO28uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXBcIiksby5zdHlsZS5vcmRlcj1pLmNvbmZpZy50b29sdGlwLmludmVyc2VPcmRlcj90LXI6cisxLGUudENvbmZpZy5zaGFyZWQmJmUudENvbmZpZy5lbmFibGVkT25TZXJpZXMmJkFycmF5LmlzQXJyYXkoZS50Q29uZmlnLmVuYWJsZWRPblNlcmllcykmJmUudENvbmZpZy5lbmFibGVkT25TZXJpZXMuaW5kZXhPZihyKTwwJiZvLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwLWhpZGRlblwiKTt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtuLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtbWFya2VyXCIpLG4uc3R5bGUuYmFja2dyb3VuZENvbG9yPWkuZ2xvYmFscy5jb2xvcnNbcl0sby5hcHBlbmRDaGlsZChuKTt2YXIgbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO2wuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC10ZXh0XCIpLGwuc3R5bGUuZm9udEZhbWlseT1lLnRDb25maWcuc3R5bGUuZm9udEZhbWlseXx8aS5jb25maWcuY2hhcnQuZm9udEZhbWlseSxsLnN0eWxlLmZvbnRTaXplPWUudENvbmZpZy5zdHlsZS5mb250U2l6ZSxbXCJ5XCIsXCJnb2Fsc1wiLFwielwiXS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO2UuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC1cIi5jb25jYXQodCxcIi1ncm91cFwiKSk7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7aS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLXRleHQtXCIuY29uY2F0KHQsXCItbGFiZWxcIikpLGUuYXBwZW5kQ2hpbGQoaSk7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7YS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLXRleHQtXCIuY29uY2F0KHQsXCItdmFsdWVcIikpLGUuYXBwZW5kQ2hpbGQoYSksbC5hcHBlbmRDaGlsZChlKX0pKSxvLmFwcGVuZENoaWxkKGwpLHMuYXBwZW5kQ2hpbGQobyksYS5wdXNoKG8pfSxvPTA7bzx0O28rKylyKG8pO3JldHVybiBhfX0se2tleTpcImFkZFNWR0V2ZW50c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5jb25maWcuY2hhcnQudHlwZSxpPXRoaXMuZ2V0RWxUb29sdGlwKCksYT0hKFwiYmFyXCIhPT1lJiZcImNhbmRsZXN0aWNrXCIhPT1lJiZcImJveFBsb3RcIiE9PWUmJlwicmFuZ2VCYXJcIiE9PWUpLHM9XCJhcmVhXCI9PT1lfHxcImxpbmVcIj09PWV8fFwic2NhdHRlclwiPT09ZXx8XCJidWJibGVcIj09PWV8fFwicmFkYXJcIj09PWUscj10Lmdsb2JhbHMuZG9tLlBhcGVyLm5vZGUsbz10aGlzLmdldEVsR3JpZCgpO28mJih0aGlzLnNlcmllc0JvdW5kPW8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO3ZhciBuLGw9W10saD1bXSxjPXtob3ZlckFyZWE6cixlbEdyaWQ6byx0b29sdGlwRWw6aSx0b29sdGlwWTpsLHRvb2x0aXBYOmgsdHRJdGVtczp0aGlzLnR0SXRlbXN9O2lmKHQuZ2xvYmFscy5heGlzQ2hhcnRzJiYocz9uPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6bG9uZ2VzdFNlcmllcz0ndHJ1ZSddIC5hcGV4Y2hhcnRzLW1hcmtlclwiKTphP249dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy1iYXItYXJlYSwgLmFwZXhjaGFydHMtc2VyaWVzIC5hcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLWFyZWEsIC5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy1ib3hQbG90LWFyZWEsIC5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy1yYW5nZWJhci1hcmVhXCIpOlwiaGVhdG1hcFwiIT09ZSYmXCJ0cmVlbWFwXCIhPT1lfHwobj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzIC5hcGV4Y2hhcnRzLWhlYXRtYXAsIC5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy10cmVlbWFwXCIpKSxuJiZuLmxlbmd0aCkpZm9yKHZhciBkPTA7ZDxuLmxlbmd0aDtkKyspbC5wdXNoKG5bZF0uZ2V0QXR0cmlidXRlKFwiY3lcIikpLGgucHVzaChuW2RdLmdldEF0dHJpYnV0ZShcImN4XCIpKTtpZih0Lmdsb2JhbHMueHlDaGFydHMmJiF0aGlzLnNob3dPbkludGVyc2VjdHx8dC5nbG9iYWxzLmNvbWJvQ2hhcnRzJiYhdGhpcy5zaG93T25JbnRlcnNlY3R8fGEmJnRoaXMudG9vbHRpcFV0aWwuaGFzQmFycygpJiZ0aGlzLnRDb25maWcuc2hhcmVkKXRoaXMuYWRkUGF0aHNFdmVudExpc3RlbmVycyhbcl0sYyk7ZWxzZSBpZihhJiYhdC5nbG9iYWxzLmNvbWJvQ2hhcnRzfHxzJiZ0aGlzLnNob3dPbkludGVyc2VjdCl0aGlzLmFkZERhdGFwb2ludEV2ZW50c0xpc3RlbmVycyhjKTtlbHNlIGlmKCF0Lmdsb2JhbHMuYXhpc0NoYXJ0c3x8XCJoZWF0bWFwXCI9PT1lfHxcInRyZWVtYXBcIj09PWUpe3ZhciBnPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXNcIik7dGhpcy5hZGRQYXRoc0V2ZW50TGlzdGVuZXJzKGcsYyl9aWYodGhpcy5zaG93T25JbnRlcnNlY3Qpe3ZhciB1PXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1saW5lLXNlcmllcyAuYXBleGNoYXJ0cy1tYXJrZXIsIC5hcGV4Y2hhcnRzLWFyZWEtc2VyaWVzIC5hcGV4Y2hhcnRzLW1hcmtlclwiKTt1Lmxlbmd0aD4wJiZ0aGlzLmFkZFBhdGhzRXZlbnRMaXN0ZW5lcnModSxjKSx0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSYmIXRoaXMudENvbmZpZy5zaGFyZWQmJnRoaXMuYWRkRGF0YXBvaW50RXZlbnRzTGlzdGVuZXJzKGMpfX19LHtrZXk6XCJkcmF3Rml4ZWRUb29sdGlwUmVjdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dGhpcy5nZXRFbFRvb2x0aXAoKSxpPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYT1pLndpZHRoKzEwLHM9aS5oZWlnaHQrMTAscj10aGlzLnRDb25maWcuZml4ZWQub2Zmc2V0WCxvPXRoaXMudENvbmZpZy5maXhlZC5vZmZzZXRZLG49dGhpcy50Q29uZmlnLmZpeGVkLnBvc2l0aW9uLnRvTG93ZXJDYXNlKCk7cmV0dXJuIG4uaW5kZXhPZihcInJpZ2h0XCIpPi0xJiYocj1yK3QuZ2xvYmFscy5zdmdXaWR0aC1hKzEwKSxuLmluZGV4T2YoXCJib3R0b21cIik+LTEmJihvPW8rdC5nbG9iYWxzLnN2Z0hlaWdodC1zLTEwKSxlLnN0eWxlLmxlZnQ9citcInB4XCIsZS5zdHlsZS50b3A9bytcInB4XCIse3g6cix5Om8sdHRXaWR0aDphLHR0SGVpZ2h0OnN9fX0se2tleTpcImFkZERhdGFwb2ludEV2ZW50c0xpc3RlbmVyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzIC5hcGV4Y2hhcnRzLW1hcmtlciwgLmFwZXhjaGFydHMtYmFyLWFyZWEsIC5hcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLWFyZWEsIC5hcGV4Y2hhcnRzLWJveFBsb3QtYXJlYSwgLmFwZXhjaGFydHMtcmFuZ2ViYXItYXJlYVwiKTt0aGlzLmFkZFBhdGhzRXZlbnRMaXN0ZW5lcnMoZSx0KX19LHtrZXk6XCJhZGRQYXRoc0V2ZW50TGlzdGVuZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9dGhpcyxhPWZ1bmN0aW9uKGEpe3ZhciBzPXtwYXRoczp0W2FdLHRvb2x0aXBFbDplLnRvb2x0aXBFbCx0b29sdGlwWTplLnRvb2x0aXBZLHRvb2x0aXBYOmUudG9vbHRpcFgsZWxHcmlkOmUuZWxHcmlkLGhvdmVyQXJlYTplLmhvdmVyQXJlYSx0dEl0ZW1zOmUudHRJdGVtc307W1wibW91c2Vtb3ZlXCIsXCJtb3VzZXVwXCIsXCJ0b3VjaG1vdmVcIixcIm1vdXNlb3V0XCIsXCJ0b3VjaGVuZFwiXS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0W2FdLmFkZEV2ZW50TGlzdGVuZXIoZSxpLm9uU2VyaWVzSG92ZXIuYmluZChpLHMpLHtjYXB0dXJlOiExLHBhc3NpdmU6ITB9KX0pKX0scz0wO3M8dC5sZW5ndGg7cysrKWEocyl9fSx7a2V5Olwib25TZXJpZXNIb3ZlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxhPURhdGUubm93KCktdGhpcy5sYXN0SG92ZXJUaW1lO2E+PTEwMD90aGlzLnNlcmllc0hvdmVyKHQsZSk6KGNsZWFyVGltZW91dCh0aGlzLnNlcmllc0hvdmVyVGltZW91dCksdGhpcy5zZXJpZXNIb3ZlclRpbWVvdXQ9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtpLnNlcmllc0hvdmVyKHQsZSl9KSwxMDAtYSkpfX0se2tleTpcInNlcmllc0hvdmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzO3RoaXMubGFzdEhvdmVyVGltZT1EYXRlLm5vdygpO3ZhciBhPVtdLHM9dGhpcy53O3MuY29uZmlnLmNoYXJ0Lmdyb3VwJiYoYT10aGlzLmN0eC5nZXRHcm91cGVkQ2hhcnRzKCkpLHMuZ2xvYmFscy5heGlzQ2hhcnRzJiYocy5nbG9iYWxzLm1pblg9PT0tMS8wJiZzLmdsb2JhbHMubWF4WD09PTEvMHx8MD09PXMuZ2xvYmFscy5kYXRhUG9pbnRzKXx8KGEubGVuZ3RoP2EuZm9yRWFjaCgoZnVuY3Rpb24oYSl7dmFyIHM9aS5nZXRFbFRvb2x0aXAoYSkscj17cGF0aHM6dC5wYXRocyx0b29sdGlwRWw6cyx0b29sdGlwWTp0LnRvb2x0aXBZLHRvb2x0aXBYOnQudG9vbHRpcFgsZWxHcmlkOnQuZWxHcmlkLGhvdmVyQXJlYTp0LmhvdmVyQXJlYSx0dEl0ZW1zOmEudy5nbG9iYWxzLnRvb2x0aXAudHRJdGVtc307YS53Lmdsb2JhbHMubWluWD09PWkudy5nbG9iYWxzLm1pblgmJmEudy5nbG9iYWxzLm1heFg9PT1pLncuZ2xvYmFscy5tYXhYJiZhLncuZ2xvYmFscy50b29sdGlwLnNlcmllc0hvdmVyQnlDb250ZXh0KHtjaGFydEN0eDphLHR0Q3R4OmEudy5nbG9iYWxzLnRvb2x0aXAsb3B0OnIsZTplfSl9KSk6dGhpcy5zZXJpZXNIb3ZlckJ5Q29udGV4dCh7Y2hhcnRDdHg6dGhpcy5jdHgsdHRDdHg6dGhpcy53Lmdsb2JhbHMudG9vbHRpcCxvcHQ6dCxlOmV9KSl9fSx7a2V5Olwic2VyaWVzSG92ZXJCeUNvbnRleHRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmNoYXJ0Q3R4LGk9dC50dEN0eCxhPXQub3B0LHM9dC5lLHI9ZS53LG89dGhpcy5nZXRFbFRvb2x0aXAoKTtpZihvKXtpZihpLnRvb2x0aXBSZWN0PXt4OjAseTowLHR0V2lkdGg6by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCx0dEhlaWdodDpvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodH0saS5lPXMsaS50b29sdGlwVXRpbC5oYXNCYXJzKCkmJiFyLmdsb2JhbHMuY29tYm9DaGFydHMmJiFpLmlzQmFyU2hhcmVkKWlmKHRoaXMudENvbmZpZy5vbkRhdGFzZXRIb3Zlci5oaWdobGlnaHREYXRhU2VyaWVzKW5ldyBOKGUpLnRvZ2dsZVNlcmllc09uSG92ZXIocyxzLnRhcmdldC5wYXJlbnROb2RlKTtpLmZpeGVkVG9vbHRpcCYmaS5kcmF3Rml4ZWRUb29sdGlwUmVjdCgpLHIuZ2xvYmFscy5heGlzQ2hhcnRzP2kuYXhpc0NoYXJ0c1Rvb2x0aXBzKHtlOnMsb3B0OmEsdG9vbHRpcFJlY3Q6aS50b29sdGlwUmVjdH0pOmkubm9uQXhpc0NoYXJ0c1Rvb2x0aXBzKHtlOnMsb3B0OmEsdG9vbHRpcFJlY3Q6aS50b29sdGlwUmVjdH0pfX19LHtrZXk6XCJheGlzQ2hhcnRzVG9vbHRpcHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpLGE9dC5lLHM9dC5vcHQscj10aGlzLncsbz1zLmVsR3JpZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPVwidG91Y2htb3ZlXCI9PT1hLnR5cGU/YS50b3VjaGVzWzBdLmNsaWVudFg6YS5jbGllbnRYLGw9XCJ0b3VjaG1vdmVcIj09PWEudHlwZT9hLnRvdWNoZXNbMF0uY2xpZW50WTphLmNsaWVudFk7aWYodGhpcy5jbGllbnRZPWwsdGhpcy5jbGllbnRYPW4sci5nbG9iYWxzLmNhcHR1cmVkU2VyaWVzSW5kZXg9LTEsci5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXg9LTEsbDxvLnRvcHx8bD5vLnRvcCtvLmhlaWdodCl0aGlzLmhhbmRsZU1vdXNlT3V0KHMpO2Vsc2V7aWYoQXJyYXkuaXNBcnJheSh0aGlzLnRDb25maWcuZW5hYmxlZE9uU2VyaWVzKSYmIXIuY29uZmlnLnRvb2x0aXAuc2hhcmVkKXt2YXIgaD1wYXJzZUludChzLnBhdGhzLmdldEF0dHJpYnV0ZShcImluZGV4XCIpLDEwKTtpZih0aGlzLnRDb25maWcuZW5hYmxlZE9uU2VyaWVzLmluZGV4T2YoaCk8MClyZXR1cm4gdm9pZCB0aGlzLmhhbmRsZU1vdXNlT3V0KHMpfXZhciBjPXRoaXMuZ2V0RWxUb29sdGlwKCksZD10aGlzLmdldEVsWENyb3NzaGFpcnMoKSxnPXIuZ2xvYmFscy54eUNoYXJ0c3x8XCJiYXJcIj09PXIuY29uZmlnLmNoYXJ0LnR5cGUmJiFyLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZ0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSYmdGhpcy50Q29uZmlnLnNoYXJlZHx8ci5nbG9iYWxzLmNvbWJvQ2hhcnRzJiZ0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKTtpZihcIm1vdXNlbW92ZVwiPT09YS50eXBlfHxcInRvdWNobW92ZVwiPT09YS50eXBlfHxcIm1vdXNldXBcIj09PWEudHlwZSl7aWYoci5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGgrci5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllcy5sZW5ndGg9PT1yLmdsb2JhbHMuc2VyaWVzLmxlbmd0aClyZXR1cm47bnVsbCE9PWQmJmQuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpO3ZhciB1PXRoaXMueWF4aXNUb29sdGlwcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiEwPT09dH0pKTtpZihudWxsIT09dGhpcy55Y3Jvc3NoYWlycyYmdS5sZW5ndGgmJnRoaXMueWNyb3NzaGFpcnMuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpLGcmJiF0aGlzLnNob3dPbkludGVyc2VjdCl0aGlzLmhhbmRsZVN0aWNreVRvb2x0aXAoYSxuLGwscyk7ZWxzZSBpZihcImhlYXRtYXBcIj09PXIuY29uZmlnLmNoYXJ0LnR5cGV8fFwidHJlZW1hcFwiPT09ci5jb25maWcuY2hhcnQudHlwZSl7dmFyIHA9dGhpcy5pbnRlcnNlY3QuaGFuZGxlSGVhdFRyZWVUb29sdGlwKHtlOmEsb3B0OnMseDplLHk6aSx0eXBlOnIuY29uZmlnLmNoYXJ0LnR5cGV9KTtlPXAueCxpPXAueSxjLnN0eWxlLmxlZnQ9ZStcInB4XCIsYy5zdHlsZS50b3A9aStcInB4XCJ9ZWxzZSB0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSYmdGhpcy5pbnRlcnNlY3QuaGFuZGxlQmFyVG9vbHRpcCh7ZTphLG9wdDpzfSksdGhpcy50b29sdGlwVXRpbC5oYXNNYXJrZXJzKCkmJnRoaXMuaW50ZXJzZWN0LmhhbmRsZU1hcmtlclRvb2x0aXAoe2U6YSxvcHQ6cyx4OmUseTppfSk7aWYodGhpcy55YXhpc1Rvb2x0aXBzLmxlbmd0aClmb3IodmFyIGY9MDtmPHIuY29uZmlnLnlheGlzLmxlbmd0aDtmKyspdGhpcy5heGVzVG9vbHRpcC5kcmF3WWF4aXNUb29sdGlwVGV4dChmLGwsdGhpcy54eVJhdGlvcyk7cy50b29sdGlwRWwuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpfWVsc2VcIm1vdXNlb3V0XCIhPT1hLnR5cGUmJlwidG91Y2hlbmRcIiE9PWEudHlwZXx8dGhpcy5oYW5kbGVNb3VzZU91dChzKX19fSx7a2V5Olwibm9uQXhpc0NoYXJ0c1Rvb2x0aXBzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5lLGk9dC5vcHQsYT10LnRvb2x0aXBSZWN0LHM9dGhpcy53LHI9aS5wYXRocy5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksbz10aGlzLmdldEVsVG9vbHRpcCgpLG49cy5nbG9iYWxzLmRvbS5lbFdyYXAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoXCJtb3VzZW1vdmVcIj09PWUudHlwZXx8XCJ0b3VjaG1vdmVcIj09PWUudHlwZSl7by5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksdGhpcy50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyh7dHRJdGVtczppLnR0SXRlbXMsaTpwYXJzZUludChyLDEwKS0xLHNoYXJlZDohMX0pO3ZhciBsPXMuZ2xvYmFscy5jbGllbnRYLW4ubGVmdC1hLnR0V2lkdGgvMixoPXMuZ2xvYmFscy5jbGllbnRZLW4udG9wLWEudHRIZWlnaHQtMTA7aWYoby5zdHlsZS5sZWZ0PWwrXCJweFwiLG8uc3R5bGUudG9wPWgrXCJweFwiLHMuY29uZmlnLmxlZ2VuZC50b29sdGlwSG92ZXJGb3JtYXR0ZXIpe3ZhciBjPXItMSxkPSgwLHMuY29uZmlnLmxlZ2VuZC50b29sdGlwSG92ZXJGb3JtYXR0ZXIpKHRoaXMubGVnZW5kTGFiZWxzW2NdLmdldEF0dHJpYnV0ZShcImRhdGE6ZGVmYXVsdC10ZXh0XCIpLHtzZXJpZXNJbmRleDpjLGRhdGFQb2ludEluZGV4OmMsdzpzfSk7dGhpcy5sZWdlbmRMYWJlbHNbY10uaW5uZXJIVE1MPWR9fWVsc2VcIm1vdXNlb3V0XCIhPT1lLnR5cGUmJlwidG91Y2hlbmRcIiE9PWUudHlwZXx8KG8uY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpLHMuY29uZmlnLmxlZ2VuZC50b29sdGlwSG92ZXJGb3JtYXR0ZXImJnRoaXMubGVnZW5kTGFiZWxzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2V0QXR0cmlidXRlKFwiZGF0YTpkZWZhdWx0LXRleHRcIik7dC5pbm5lckhUTUw9ZGVjb2RlVVJJQ29tcG9uZW50KGUpfSkpKX19LHtrZXk6XCJoYW5kbGVTdGlja3lUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9dGhpcy53LHI9dGhpcy50b29sdGlwVXRpbC5nZXROZWFyZXN0VmFsdWVzKHtjb250ZXh0OnRoaXMsaG92ZXJBcmVhOmEuaG92ZXJBcmVhLGVsR3JpZDphLmVsR3JpZCxjbGllbnRYOmUsY2xpZW50WTppfSksbz1yLmosbj1yLmNhcHR1cmVkU2VyaWVzO3MuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluY2x1ZGVzKG4pJiYobj1udWxsKTt2YXIgbD1hLmVsR3JpZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZihyLmhvdmVyWDwwfHxyLmhvdmVyWD5sLndpZHRoKXRoaXMuaGFuZGxlTW91c2VPdXQoYSk7ZWxzZSBpZihudWxsIT09bil0aGlzLmhhbmRsZVN0aWNreUNhcHR1cmVkU2VyaWVzKHQsbixhLG8pO2Vsc2UgaWYodGhpcy50b29sdGlwVXRpbC5pc1hvdmVybGFwKG8pfHxzLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKXt2YXIgaD1zLmdsb2JhbHMuc2VyaWVzLmZpbmRJbmRleCgoZnVuY3Rpb24odCxlKXtyZXR1cm4hcy5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5jbHVkZXMoZSl9KSk7dGhpcy5jcmVhdGUodCx0aGlzLGgsbyxhLnR0SXRlbXMpfX19LHtrZXk6XCJoYW5kbGVTdGlja3lDYXB0dXJlZFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPXRoaXMudztpZighdGhpcy50Q29uZmlnLnNoYXJlZCYmbnVsbD09PXMuZ2xvYmFscy5zZXJpZXNbZV1bYV0pcmV0dXJuIHZvaWQgdGhpcy5oYW5kbGVNb3VzZU91dChpKTtpZih2b2lkIDAhPT1zLmdsb2JhbHMuc2VyaWVzW2VdW2FdKXRoaXMudENvbmZpZy5zaGFyZWQmJnRoaXMudG9vbHRpcFV0aWwuaXNYb3ZlcmxhcChhKSYmdGhpcy50b29sdGlwVXRpbC5pc0luaXRpYWxTZXJpZXNTYW1lTGVuKCk/dGhpcy5jcmVhdGUodCx0aGlzLGUsYSxpLnR0SXRlbXMpOnRoaXMuY3JlYXRlKHQsdGhpcyxlLGEsaS50dEl0ZW1zLCExKTtlbHNlIGlmKHRoaXMudG9vbHRpcFV0aWwuaXNYb3ZlcmxhcChhKSl7dmFyIHI9cy5nbG9iYWxzLnNlcmllcy5maW5kSW5kZXgoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIXMuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluY2x1ZGVzKGUpfSkpO3RoaXMuY3JlYXRlKHQsdGhpcyxyLGEsaS50dEl0ZW1zKX19fSx7a2V5OlwiZGVhY3RpdmF0ZUhvdmVyRmlsdGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy53LGU9bmV3IG0odGhpcy5jdHgpLGk9dC5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoXCIuYXBleGNoYXJ0cy1iYXItYXJlYVwiKSxhPTA7YTxpLmxlbmd0aDthKyspZS5wYXRoTW91c2VMZWF2ZShpW2FdKX19LHtrZXk6XCJoYW5kbGVNb3VzZU91dFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPXRoaXMuZ2V0RWxYQ3Jvc3NoYWlycygpO2lmKHQudG9vbHRpcEVsLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSx0aGlzLmRlYWN0aXZhdGVIb3ZlckZpbHRlcigpLFwiYnViYmxlXCIhPT1lLmNvbmZpZy5jaGFydC50eXBlJiZ0aGlzLm1hcmtlci5yZXNldFBvaW50c1NpemUoKSxudWxsIT09aSYmaS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksbnVsbCE9PXRoaXMueWNyb3NzaGFpcnMmJnRoaXMueWNyb3NzaGFpcnMuY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpLHRoaXMuaXNYQXhpc1Rvb2x0aXBFbmFibGVkJiZ0aGlzLnhheGlzVG9vbHRpcC5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksdGhpcy55YXhpc1Rvb2x0aXBzLmxlbmd0aCl7bnVsbD09PXRoaXMueWF4aXNUVEVscyYmKHRoaXMueWF4aXNUVEVscz1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMteWF4aXN0b29sdGlwXCIpKTtmb3IodmFyIGE9MDthPHRoaXMueWF4aXNUVEVscy5sZW5ndGg7YSsrKXRoaXMueWF4aXNUVEVsc1thXS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1hY3RpdmVcIil9ZS5jb25maWcubGVnZW5kLnRvb2x0aXBIb3ZlckZvcm1hdHRlciYmdGhpcy5sZWdlbmRMYWJlbHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRBdHRyaWJ1dGUoXCJkYXRhOmRlZmF1bHQtdGV4dFwiKTt0LmlubmVySFRNTD1kZWNvZGVVUklDb21wb25lbnQoZSl9KSl9fSx7a2V5OlwibWFya2VyQ2xpY2tcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53O1wiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29uZmlnLmNoYXJ0LmV2ZW50cy5tYXJrZXJDbGljayYmYS5jb25maWcuY2hhcnQuZXZlbnRzLm1hcmtlckNsaWNrKHQsdGhpcy5jdHgse3Nlcmllc0luZGV4OmUsZGF0YVBvaW50SW5kZXg6aSx3OmF9KSx0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KFwibWFya2VyQ2xpY2tcIixbdCx0aGlzLmN0eCx7c2VyaWVzSW5kZXg6ZSxkYXRhUG9pbnRJbmRleDppLHc6YX1dKX19LHtrZXk6XCJjcmVhdGVcIix2YWx1ZTpmdW5jdGlvbih0LGksYSxzLHIpe3ZhciBvLG4sbCxoLGMsZCxnLHUscCxmLHgsYix2LHksdyxrLEE9YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0/YXJndW1lbnRzWzVdOm51bGwsUz10aGlzLncsQz1pO1wibW91c2V1cFwiPT09dC50eXBlJiZ0aGlzLm1hcmtlckNsaWNrKHQsYSxzKSxudWxsPT09QSYmKEE9dGhpcy50Q29uZmlnLnNoYXJlZCk7dmFyIEw9dGhpcy50b29sdGlwVXRpbC5oYXNNYXJrZXJzKGEpLFA9dGhpcy50b29sdGlwVXRpbC5nZXRFbEJhcnMoKTtpZihTLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyKXt2YXIgST1TLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyLFQ9QXJyYXkuZnJvbSh0aGlzLmxlZ2VuZExhYmVscyk7VC5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LmdldEF0dHJpYnV0ZShcImRhdGE6ZGVmYXVsdC10ZXh0XCIpO3QuaW5uZXJIVE1MPWRlY29kZVVSSUNvbXBvbmVudChlKX0pKTtmb3IodmFyIE09MDtNPFQubGVuZ3RoO00rKyl7dmFyIFg9VFtNXSx6PXBhcnNlSW50KFguZ2V0QXR0cmlidXRlKFwiaVwiKSwxMCksRT1kZWNvZGVVUklDb21wb25lbnQoWC5nZXRBdHRyaWJ1dGUoXCJkYXRhOmRlZmF1bHQtdGV4dFwiKSksWT1JKEUse3Nlcmllc0luZGV4OkE/ejphLGRhdGFQb2ludEluZGV4OnMsdzpTfSk7aWYoQSlYLmlubmVySFRNTD1TLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHopPDA/WTpFO2Vsc2UgaWYoWC5pbm5lckhUTUw9ej09PWE/WTpFLGE9PT16KWJyZWFrfX12YXIgRj1lKGUoe3R0SXRlbXM6cixpOmEsajpzfSx2b2lkIDAhPT0obnVsbD09PShvPVMuZ2xvYmFscy5zZXJpZXNSYW5nZSl8fHZvaWQgMD09PW98fG51bGw9PT0obj1vW2FdKXx8dm9pZCAwPT09bnx8bnVsbD09PShsPW5bc10pfHx2b2lkIDA9PT1sfHxudWxsPT09KGg9bC55WzBdKXx8dm9pZCAwPT09aD92b2lkIDA6aC55MSkmJnt5MTpudWxsPT09KGM9Uy5nbG9iYWxzLnNlcmllc1JhbmdlKXx8dm9pZCAwPT09Y3x8bnVsbD09PShkPWNbYV0pfHx2b2lkIDA9PT1kfHxudWxsPT09KGc9ZFtzXSl8fHZvaWQgMD09PWd8fG51bGw9PT0odT1nLnlbMF0pfHx2b2lkIDA9PT11P3ZvaWQgMDp1LnkxfSksdm9pZCAwIT09KG51bGw9PT0ocD1TLmdsb2JhbHMuc2VyaWVzUmFuZ2UpfHx2b2lkIDA9PT1wfHxudWxsPT09KGY9cFthXSl8fHZvaWQgMD09PWZ8fG51bGw9PT0oeD1mW3NdKXx8dm9pZCAwPT09eHx8bnVsbD09PShiPXgueVswXSl8fHZvaWQgMD09PWI/dm9pZCAwOmIueTIpJiZ7eTI6bnVsbD09PSh2PVMuZ2xvYmFscy5zZXJpZXNSYW5nZSl8fHZvaWQgMD09PXZ8fG51bGw9PT0oeT12W2FdKXx8dm9pZCAwPT09eXx8bnVsbD09PSh3PXlbc10pfHx2b2lkIDA9PT13fHxudWxsPT09KGs9dy55WzBdKXx8dm9pZCAwPT09az92b2lkIDA6ay55Mn0pO2lmKEEpe2lmKEMudG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoZShlKHt9LEYpLHt9LHtzaGFyZWQ6IXRoaXMuc2hvd09uSW50ZXJzZWN0JiZ0aGlzLnRDb25maWcuc2hhcmVkfSkpLEwpUy5nbG9iYWxzLm1hcmtlcnMubGFyZ2VzdFNpemU+MD9DLm1hcmtlci5lbmxhcmdlUG9pbnRzKHMpOkMudG9vbHRpcFBvc2l0aW9uLm1vdmVEeW5hbWljUG9pbnRzT25Ib3ZlcihzKTtlbHNlIGlmKHRoaXMudG9vbHRpcFV0aWwuaGFzQmFycygpJiYodGhpcy5iYXJTZXJpZXNIZWlnaHQ9dGhpcy50b29sdGlwVXRpbC5nZXRCYXJzSGVpZ2h0KFApLHRoaXMuYmFyU2VyaWVzSGVpZ2h0PjApKXt2YXIgUj1uZXcgbSh0aGlzLmN0eCksRD1TLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIi5hcGV4Y2hhcnRzLWJhci1hcmVhW2o9J1wiLmNvbmNhdChzLFwiJ11cIikpO3RoaXMuZGVhY3RpdmF0ZUhvdmVyRmlsdGVyKCksdGhpcy50b29sdGlwUG9zaXRpb24ubW92ZVN0aWNreVRvb2x0aXBPdmVyQmFycyhzLGEpO2Zvcih2YXIgSD0wO0g8RC5sZW5ndGg7SCsrKVIucGF0aE1vdXNlRW50ZXIoRFtIXSl9fWVsc2UgQy50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyhlKHtzaGFyZWQ6ITF9LEYpKSx0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSYmQy50b29sdGlwUG9zaXRpb24ubW92ZVN0aWNreVRvb2x0aXBPdmVyQmFycyhzLGEpLEwmJkMudG9vbHRpcFBvc2l0aW9uLm1vdmVNYXJrZXJzKGEscyl9fV0pLHR9KCksdnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuYmFyQ3R4PWUsdGhpcy50b3RhbEZvcm1hdHRlcj10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kYXRhTGFiZWxzLnRvdGFsLmZvcm1hdHRlcix0aGlzLnRvdGFsRm9ybWF0dGVyfHwodGhpcy50b3RhbEZvcm1hdHRlcj10aGlzLncuY29uZmlnLmRhdGFMYWJlbHMuZm9ybWF0dGVyKX1yZXR1cm4gcih0LFt7a2V5OlwiaGFuZGxlQmFyRGF0YUxhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQueCxpPXQueSxhPXQueTEscz10LnkyLHI9dC5pLG89dC5qLG49dC5yZWFsSW5kZXgsbD10Lmdyb3VwSW5kZXgsaD10LnNlcmllcyxjPXQuYmFySGVpZ2h0LGQ9dC5iYXJXaWR0aCxnPXQuYmFyWVBvc2l0aW9uLHU9dC52aXNpYmxlU2VyaWVzLHA9dC5yZW5kZXJlZFBhdGgsZj10aGlzLncseD1uZXcgbSh0aGlzLmJhckN0eC5jdHgpLGI9QXJyYXkuaXNBcnJheSh0aGlzLmJhckN0eC5zdHJva2VXaWR0aCk/dGhpcy5iYXJDdHguc3Ryb2tlV2lkdGhbbl06dGhpcy5iYXJDdHguc3Ryb2tlV2lkdGgsdj1lK3BhcnNlRmxvYXQoZCp1KSx5PWkrcGFyc2VGbG9hdChjKnUpO2YuZ2xvYmFscy5pc1hOdW1lcmljJiYhZi5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKHY9ZStwYXJzZUZsb2F0KGQqKHUrMSkpLHk9aStwYXJzZUZsb2F0KGMqKHUrMSkpLWIpO3ZhciB3LGs9bnVsbCxBPWUsUz1pLEM9e30sTD1mLmNvbmZpZy5kYXRhTGFiZWxzLFA9dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kYXRhTGFiZWxzLEk9dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kYXRhTGFiZWxzLnRvdGFsO3ZvaWQgMCE9PWcmJnRoaXMuYmFyQ3R4LmlzUmFuZ2VCYXImJih5PWcsUz1nKTt2YXIgVD1MLm9mZnNldFgsTT1MLm9mZnNldFksWD17d2lkdGg6MCxoZWlnaHQ6MH07aWYoZi5jb25maWcuZGF0YUxhYmVscy5lbmFibGVkKXt2YXIgej10aGlzLmJhckN0eC5zZXJpZXNbcl1bb107WD14LmdldFRleHRSZWN0cyhmLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXSh6KSxwYXJzZUZsb2F0KEwuc3R5bGUuZm9udFNpemUpKX12YXIgRT17eDplLHk6aSxpOnIsajpvLHJlYWxJbmRleDpuLGdyb3VwSW5kZXg6bHx8LTEscmVuZGVyZWRQYXRoOnAsYmN4OnYsYmN5OnksYmFySGVpZ2h0OmMsYmFyV2lkdGg6ZCx0ZXh0UmVjdHM6WCxzdHJva2VXaWR0aDpiLGRhdGFMYWJlbHNYOkEsZGF0YUxhYmVsc1k6UyxkYXRhTGFiZWxzQ29uZmlnOkwsYmFyRGF0YUxhYmVsc0NvbmZpZzpQLGJhclRvdGFsRGF0YUxhYmVsc0NvbmZpZzpJLG9mZlg6VCxvZmZZOk19O3JldHVybiBDPXRoaXMuYmFyQ3R4LmlzSG9yaXpvbnRhbD90aGlzLmNhbGN1bGF0ZUJhcnNEYXRhTGFiZWxzUG9zaXRpb24oRSk6dGhpcy5jYWxjdWxhdGVDb2x1bW5zRGF0YUxhYmVsc1Bvc2l0aW9uKEUpLHAuYXR0cih7Y3k6Qy5iY3ksY3g6Qy5iY3gsajpvLHZhbDpoW3JdW29dLGJhckhlaWdodDpjLGJhcldpZHRoOmR9KSx3PXRoaXMuZHJhd0NhbGN1bGF0ZWREYXRhTGFiZWxzKHt4OkMuZGF0YUxhYmVsc1gseTpDLmRhdGFMYWJlbHNZLHZhbDp0aGlzLmJhckN0eC5pc1JhbmdlQmFyP1thLHNdOmhbcl1bb10saTpuLGo6byxiYXJXaWR0aDpkLGJhckhlaWdodDpjLHRleHRSZWN0czpYLGRhdGFMYWJlbHNDb25maWc6TH0pLGYuY29uZmlnLmNoYXJ0LnN0YWNrZWQmJkkuZW5hYmxlZCYmKGs9dGhpcy5kcmF3VG90YWxEYXRhTGFiZWxzKHt4OkMudG90YWxEYXRhTGFiZWxzWCx5OkMudG90YWxEYXRhTGFiZWxzWSxyZWFsSW5kZXg6bix0ZXh0QW5jaG9yOkMudG90YWxEYXRhTGFiZWxzQW5jaG9yLHZhbDp0aGlzLmdldFN0YWNrZWRUb3RhbERhdGFMYWJlbCh7cmVhbEluZGV4Om4sajpvfSksZGF0YUxhYmVsc0NvbmZpZzpMLGJhclRvdGFsRGF0YUxhYmVsc0NvbmZpZzpJfSkpLHtkYXRhTGFiZWxzOncsdG90YWxEYXRhTGFiZWxzOmt9fX0se2tleTpcImdldFN0YWNrZWRUb3RhbERhdGFMYWJlbFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBpPXQucmVhbEluZGV4LGE9dC5qLHM9dGhpcy53LHI9dGhpcy5iYXJDdHguc3RhY2tlZFNlcmllc1RvdGFsc1thXTtyZXR1cm4gdGhpcy50b3RhbEZvcm1hdHRlciYmKHI9dGhpcy50b3RhbEZvcm1hdHRlcihyLGUoZSh7fSxzKSx7fSx7c2VyaWVzSW5kZXg6aSxkYXRhUG9pbnRJbmRleDphLHc6c30pKSkscn19LHtrZXk6XCJjYWxjdWxhdGVDb2x1bW5zRGF0YUxhYmVsc1Bvc2l0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaSxhLHM9dGhpcy53LHI9dC5pLG89dC5qLG49dC5yZWFsSW5kZXgsbD10Lmdyb3VwSW5kZXgsaD10LnksYz10LmJjeCxkPXQuYmFyV2lkdGgsZz10LmJhckhlaWdodCx1PXQudGV4dFJlY3RzLHA9dC5kYXRhTGFiZWxzWSxmPXQuZGF0YUxhYmVsc0NvbmZpZyx4PXQuYmFyRGF0YUxhYmVsc0NvbmZpZyxiPXQuYmFyVG90YWxEYXRhTGFiZWxzQ29uZmlnLHY9dC5zdHJva2VXaWR0aCx5PXQub2ZmWCx3PXQub2ZmWTtnPU1hdGguYWJzKGcpO3ZhciBrPVwidmVydGljYWxcIj09PXMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kYXRhTGFiZWxzLm9yaWVudGF0aW9uO2M9Yy12LzIrKC0xIT09bD9sKmQ6MCk7dmFyIEE9cy5nbG9iYWxzLmdyaWRXaWR0aC9zLmdsb2JhbHMuZGF0YVBvaW50cztpZihlPXMuZ2xvYmFscy5pc1hOdW1lcmljP2MtZC8yK3k6Yy1BK2QvMit5LGspe2U9ZSt1LmhlaWdodC8yLXYvMi0yfXZhciBTPXRoaXMuYmFyQ3R4LnNlcmllc1tyXVtvXTwwLEM9aDtzd2l0Y2godGhpcy5iYXJDdHguaXNSZXZlcnNlZCYmKEM9aC1nKyhTPzIqZzowKSxoLT1nKSx4LnBvc2l0aW9uKXtjYXNlXCJjZW50ZXJcIjpwPWs/Uz9DK2cvMit3OkMrZy8yLXc6Uz9DLWcvMit1LmhlaWdodC8yK3c6QytnLzIrdS5oZWlnaHQvMi13O2JyZWFrO2Nhc2VcImJvdHRvbVwiOnA9az9TP0MrZyt3OkMrZy13OlM/Qy1nK3UuaGVpZ2h0K3YrdzpDK2ctdS5oZWlnaHQvMit2LXc7YnJlYWs7Y2FzZVwidG9wXCI6cD1rP1M/Qyt3OkMtdzpTP0MtdS5oZWlnaHQvMi13OkMrdS5oZWlnaHQrd31pZih0aGlzLmJhckN0eC5sYXN0QWN0aXZlQmFyU2VyaWVJbmRleD09PW4mJmIuZW5hYmxlZCl7dmFyIEw9bmV3IG0odGhpcy5iYXJDdHguY3R4KS5nZXRUZXh0UmVjdHModGhpcy5nZXRTdGFja2VkVG90YWxEYXRhTGFiZWwoe3JlYWxJbmRleDpuLGo6b30pLGYuZm9udFNpemUpO2k9Uz9DLUwuaGVpZ2h0LzItdy1iLm9mZnNldFkrMTg6QytMLmhlaWdodCt3K2Iub2Zmc2V0WS0xOCxhPWUrYi5vZmZzZXRYfXJldHVybiBzLmNvbmZpZy5jaGFydC5zdGFja2VkfHwocDwwP3A9MCt2OnArdS5oZWlnaHQvMz5zLmdsb2JhbHMuZ3JpZEhlaWdodCYmKHA9cy5nbG9iYWxzLmdyaWRIZWlnaHQtdikpLHtiY3g6YyxiY3k6aCxkYXRhTGFiZWxzWDplLGRhdGFMYWJlbHNZOnAsdG90YWxEYXRhTGFiZWxzWDphLHRvdGFsRGF0YUxhYmVsc1k6aSx0b3RhbERhdGFMYWJlbHNBbmNob3I6XCJtaWRkbGVcIn19fSx7a2V5OlwiY2FsY3VsYXRlQmFyc0RhdGFMYWJlbHNQb3NpdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPXQueCxhPXQuaSxzPXQuaixyPXQucmVhbEluZGV4LG89dC5ncm91cEluZGV4LG49dC5iY3ksbD10LmJhckhlaWdodCxoPXQuYmFyV2lkdGgsYz10LnRleHRSZWN0cyxkPXQuZGF0YUxhYmVsc1gsZz10LnN0cm9rZVdpZHRoLHU9dC5kYXRhTGFiZWxzQ29uZmlnLHA9dC5iYXJEYXRhTGFiZWxzQ29uZmlnLGY9dC5iYXJUb3RhbERhdGFMYWJlbHNDb25maWcseD10Lm9mZlgsYj10Lm9mZlksdj1lLmdsb2JhbHMuZ3JpZEhlaWdodC9lLmdsb2JhbHMuZGF0YVBvaW50cztoPU1hdGguYWJzKGgpO3ZhciB5LHcsaz0obis9LTEhPT1vP28qbDowKS0odGhpcy5iYXJDdHguaXNSYW5nZUJhcj8wOnYpK2wvMitjLmhlaWdodC8yK2ItMyxBPVwic3RhcnRcIixTPXRoaXMuYmFyQ3R4LnNlcmllc1thXVtzXTwwLEM9aTtzd2l0Y2godGhpcy5iYXJDdHguaXNSZXZlcnNlZCYmKEM9aStoLShTPzIqaDowKSxpPWUuZ2xvYmFscy5ncmlkV2lkdGgtaCkscC5wb3NpdGlvbil7Y2FzZVwiY2VudGVyXCI6ZD1TP0MraC8yLXg6TWF0aC5tYXgoYy53aWR0aC8yLEMtaC8yKSt4O2JyZWFrO2Nhc2VcImJvdHRvbVwiOmQ9Uz9DK2gtZy1NYXRoLnJvdW5kKGMud2lkdGgvMikteDpDLWgrZytNYXRoLnJvdW5kKGMud2lkdGgvMikreDticmVhaztjYXNlXCJ0b3BcIjpkPVM/Qy1nK01hdGgucm91bmQoYy53aWR0aC8yKS14OkMtZy1NYXRoLnJvdW5kKGMud2lkdGgvMikreH1pZih0aGlzLmJhckN0eC5sYXN0QWN0aXZlQmFyU2VyaWVJbmRleD09PXImJmYuZW5hYmxlZCl7dmFyIEw9bmV3IG0odGhpcy5iYXJDdHguY3R4KS5nZXRUZXh0UmVjdHModGhpcy5nZXRTdGFja2VkVG90YWxEYXRhTGFiZWwoe3JlYWxJbmRleDpyLGo6c30pLHUuZm9udFNpemUpO1M/KHk9Qy1nK01hdGgucm91bmQoTC53aWR0aC8yKS14LWYub2Zmc2V0WC0xNSxBPVwiZW5kXCIpOnk9Qy1nLU1hdGgucm91bmQoTC53aWR0aC8yKSt4K2Yub2Zmc2V0WCsxNSx3PWsrZi5vZmZzZXRZfXJldHVybiBlLmNvbmZpZy5jaGFydC5zdGFja2VkfHwoZDwwP2Q9ZCtjLndpZHRoK2c6ZCtjLndpZHRoLzI+ZS5nbG9iYWxzLmdyaWRXaWR0aCYmKGQ9ZS5nbG9iYWxzLmdyaWRXaWR0aC1jLndpZHRoLWcpKSx7YmN4OmksYmN5Om4sZGF0YUxhYmVsc1g6ZCxkYXRhTGFiZWxzWTprLHRvdGFsRGF0YUxhYmVsc1g6eSx0b3RhbERhdGFMYWJlbHNZOncsdG90YWxEYXRhTGFiZWxzQW5jaG9yOkF9fX0se2tleTpcImRyYXdDYWxjdWxhdGVkRGF0YUxhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBpPXQueCxhPXQueSxzPXQudmFsLHI9dC5pLG89dC5qLG49dC50ZXh0UmVjdHMsbD10LmJhckhlaWdodCxoPXQuYmFyV2lkdGgsYz10LmRhdGFMYWJlbHNDb25maWcsZD10aGlzLncsZz1cInJvdGF0ZSgwKVwiO1widmVydGljYWxcIj09PWQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kYXRhTGFiZWxzLm9yaWVudGF0aW9uJiYoZz1cInJvdGF0ZSgtOTAsIFwiLmNvbmNhdChpLFwiLCBcIikuY29uY2F0KGEsXCIpXCIpKTt2YXIgdT1uZXcgTyh0aGlzLmJhckN0eC5jdHgpLHA9bmV3IG0odGhpcy5iYXJDdHguY3R4KSxmPWMuZm9ybWF0dGVyLHg9bnVsbCxiPWQuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2Yocik+LTE7aWYoYy5lbmFibGVkJiYhYil7eD1wLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YS1sYWJlbHNcIix0cmFuc2Zvcm06Z30pO3ZhciB2PVwiXCI7dm9pZCAwIT09cyYmKHY9ZihzLGUoZSh7fSxkKSx7fSx7c2VyaWVzSW5kZXg6cixkYXRhUG9pbnRJbmRleDpvLHc6ZH0pKSksIXMmJmQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5oaWRlWmVyb0JhcnNXaGVuR3JvdXBlZCYmKHY9XCJcIik7dmFyIHk9ZC5nbG9iYWxzLnNlcmllc1tyXVtvXTwwLHc9ZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRhdGFMYWJlbHMucG9zaXRpb247aWYoXCJ2ZXJ0aWNhbFwiPT09ZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRhdGFMYWJlbHMub3JpZW50YXRpb24mJihcInRvcFwiPT09dyYmKGMudGV4dEFuY2hvcj15P1wiZW5kXCI6XCJzdGFydFwiKSxcImNlbnRlclwiPT09dyYmKGMudGV4dEFuY2hvcj1cIm1pZGRsZVwiKSxcImJvdHRvbVwiPT09dyYmKGMudGV4dEFuY2hvcj15P1wiZW5kXCI6XCJzdGFydFwiKSksdGhpcy5iYXJDdHguaXNSYW5nZUJhciYmdGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kYXRhTGFiZWxzLmhpZGVPdmVyZmxvd2luZ0xhYmVscyloPHAuZ2V0VGV4dFJlY3RzKHYscGFyc2VGbG9hdChjLnN0eWxlLmZvbnRTaXplKSkud2lkdGgmJih2PVwiXCIpO2QuY29uZmlnLmNoYXJ0LnN0YWNrZWQmJnRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuZGF0YUxhYmVscy5oaWRlT3ZlcmZsb3dpbmdMYWJlbHMmJih0aGlzLmJhckN0eC5pc0hvcml6b250YWw/bi53aWR0aC8xLjY+TWF0aC5hYnMoaCkmJih2PVwiXCIpOm4uaGVpZ2h0LzEuNj5NYXRoLmFicyhsKSYmKHY9XCJcIikpO3ZhciBrPWUoe30sYyk7dGhpcy5iYXJDdHguaXNIb3Jpem9udGFsJiZzPDAmJihcInN0YXJ0XCI9PT1jLnRleHRBbmNob3I/ay50ZXh0QW5jaG9yPVwiZW5kXCI6XCJlbmRcIj09PWMudGV4dEFuY2hvciYmKGsudGV4dEFuY2hvcj1cInN0YXJ0XCIpKSx1LnBsb3REYXRhTGFiZWxzVGV4dCh7eDppLHk6YSx0ZXh0OnYsaTpyLGo6byxwYXJlbnQ6eCxkYXRhTGFiZWxzQ29uZmlnOmssYWx3YXlzRHJhd0RhdGFMYWJlbDohMCxvZmZzZXRDb3JyZWN0aW9uOiEwfSl9cmV0dXJuIHh9fSx7a2V5OlwiZHJhd1RvdGFsRGF0YUxhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dC54LGE9dC55LHM9dC52YWwscj10LnJlYWxJbmRleCxvPXQudGV4dEFuY2hvcixuPXQuYmFyVG90YWxEYXRhTGFiZWxzQ29uZmlnLGw9bmV3IG0odGhpcy5iYXJDdHguY3R4KTtyZXR1cm4gbi5lbmFibGVkJiZ2b2lkIDAhPT1pJiZ2b2lkIDAhPT1hJiZ0aGlzLmJhckN0eC5sYXN0QWN0aXZlQmFyU2VyaWVJbmRleD09PXImJihlPWwuZHJhd1RleHQoe3g6aSx5OmEsZm9yZUNvbG9yOm4uc3R5bGUuY29sb3IsdGV4dDpzLHRleHRBbmNob3I6byxmb250RmFtaWx5Om4uc3R5bGUuZm9udEZhbWlseSxmb250U2l6ZTpuLnN0eWxlLmZvbnRTaXplLGZvbnRXZWlnaHQ6bi5zdHlsZS5mb250V2VpZ2h0fSkpLGV9fV0pLHR9KCksbXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuYmFyQ3R4PWV9cmV0dXJuIHIodCxbe2tleTpcImluaXRWYXJpYWJsZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7dGhpcy5iYXJDdHguc2VyaWVzPXQsdGhpcy5iYXJDdHgudG90YWxJdGVtcz0wLHRoaXMuYmFyQ3R4LnNlcmllc0xlbj0wLHRoaXMuYmFyQ3R4LnZpc2libGVJPS0xLHRoaXMuYmFyQ3R4LnZpc2libGVJdGVtcz0xO2Zvcih2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKWlmKHRbaV0ubGVuZ3RoPjAmJih0aGlzLmJhckN0eC5zZXJpZXNMZW49dGhpcy5iYXJDdHguc2VyaWVzTGVuKzEsdGhpcy5iYXJDdHgudG90YWxJdGVtcys9dFtpXS5sZW5ndGgpLGUuZ2xvYmFscy5pc1hOdW1lcmljKWZvcih2YXIgYT0wO2E8dFtpXS5sZW5ndGg7YSsrKWUuZ2xvYmFscy5zZXJpZXNYW2ldW2FdPmUuZ2xvYmFscy5taW5YJiZlLmdsb2JhbHMuc2VyaWVzWFtpXVthXTxlLmdsb2JhbHMubWF4WCYmdGhpcy5iYXJDdHgudmlzaWJsZUl0ZW1zKys7ZWxzZSB0aGlzLmJhckN0eC52aXNpYmxlSXRlbXM9ZS5nbG9iYWxzLmRhdGFQb2ludHM7MD09PXRoaXMuYmFyQ3R4LnNlcmllc0xlbiYmKHRoaXMuYmFyQ3R4LnNlcmllc0xlbj0xKSx0aGlzLmJhckN0eC56ZXJvU2VyaWVzZXM9W10sZS5nbG9iYWxzLmNvbWJvQ2hhcnRzfHx0aGlzLmNoZWNrWmVyb1Nlcmllcyh7c2VyaWVzOnR9KX19LHtrZXk6XCJpbml0aWFsUG9zaXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksYSxzLHIsbyxuLGw9dGhpcy53LGg9bC5nbG9iYWxzLmRhdGFQb2ludHM7dGhpcy5iYXJDdHguaXNSYW5nZUJhciYmKGg9bC5nbG9iYWxzLmxhYmVscy5sZW5ndGgpO3ZhciBjPXRoaXMuYmFyQ3R4LnNlcmllc0xlbjtpZihsLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIucmFuZ2VCYXJHcm91cFJvd3MmJihjPTEpLHRoaXMuYmFyQ3R4LmlzSG9yaXpvbnRhbClzPShpPWwuZ2xvYmFscy5ncmlkSGVpZ2h0L2gpL2MsbC5nbG9iYWxzLmlzWE51bWVyaWMmJihzPShpPWwuZ2xvYmFscy5ncmlkSGVpZ2h0L3RoaXMuYmFyQ3R4LnRvdGFsSXRlbXMpL3RoaXMuYmFyQ3R4LnNlcmllc0xlbikscz1zKnBhcnNlSW50KHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuYmFySGVpZ2h0LDEwKS8xMDAsLTE9PT1TdHJpbmcodGhpcy5iYXJDdHguYmFyT3B0aW9ucy5iYXJIZWlnaHQpLmluZGV4T2YoXCIlXCIpJiYocz1wYXJzZUludCh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmJhckhlaWdodCwxMCkpLG49dGhpcy5iYXJDdHguYmFzZUxpbmVJbnZlcnRlZFkrbC5nbG9iYWxzLnBhZEhvcml6b250YWwrKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQ/bC5nbG9iYWxzLmdyaWRXaWR0aDowKS0odGhpcy5iYXJDdHguaXNSZXZlcnNlZD8yKnRoaXMuYmFyQ3R4LmJhc2VMaW5lSW52ZXJ0ZWRZOjApLGU9KGktcyp0aGlzLmJhckN0eC5zZXJpZXNMZW4pLzI7ZWxzZXtpZihhPWwuZ2xvYmFscy5ncmlkV2lkdGgvdGhpcy5iYXJDdHgudmlzaWJsZUl0ZW1zLGwuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKGE9bC5nbG9iYWxzLmdyaWRXaWR0aC9sLmdsb2JhbHMuZGF0YVBvaW50cykscj1hL3RoaXMuYmFyQ3R4LnNlcmllc0xlbipwYXJzZUludCh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbHVtbldpZHRoLDEwKS8xMDAsbC5nbG9iYWxzLmlzWE51bWVyaWMpe3ZhciBkPXRoaXMuYmFyQ3R4LnhSYXRpbztsLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJihkPXRoaXMuYmFyQ3R4LmluaXRpYWxYUmF0aW8pLGwuZ2xvYmFscy5taW5YRGlmZiYmLjUhPT1sLmdsb2JhbHMubWluWERpZmYmJmwuZ2xvYmFscy5taW5YRGlmZi9kPjAmJihhPWwuZ2xvYmFscy5taW5YRGlmZi9kKSwocj1hL3RoaXMuYmFyQ3R4LnNlcmllc0xlbipwYXJzZUludCh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbHVtbldpZHRoLDEwKS8xMDApPDEmJihyPTEpfS0xPT09U3RyaW5nKHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sdW1uV2lkdGgpLmluZGV4T2YoXCIlXCIpJiYocj1wYXJzZUludCh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbHVtbldpZHRoLDEwKSksbz1sLmdsb2JhbHMuZ3JpZEhlaWdodC10aGlzLmJhckN0eC5iYXNlTGluZVlbdGhpcy5iYXJDdHgueWF4aXNJbmRleF0tKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQ/bC5nbG9iYWxzLmdyaWRIZWlnaHQ6MCkrKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQ/Mip0aGlzLmJhckN0eC5iYXNlTGluZVlbdGhpcy5iYXJDdHgueWF4aXNJbmRleF06MCksdD1sLmdsb2JhbHMucGFkSG9yaXpvbnRhbCsoYS1yKnRoaXMuYmFyQ3R4LnNlcmllc0xlbikvMn1yZXR1cm57eDp0LHk6ZSx5RGl2aXNpb246aSx4RGl2aXNpb246YSxiYXJIZWlnaHQ6cyxiYXJXaWR0aDpyLHplcm9IOm8semVyb1c6bn19fSx7a2V5OlwiaW5pdGlhbGl6ZVN0YWNrZWRQcmV2VmFyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQudztlLmdsb2JhbHMuaGFzU2VyaWVzR3JvdXBzP2UuZ2xvYmFscy5zZXJpZXNHcm91cHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dFtlXXx8KHRbZV09e30pLHRbZV0ucHJldlk9W10sdFtlXS5wcmV2WD1bXSx0W2VdLnByZXZZRj1bXSx0W2VdLnByZXZYRj1bXSx0W2VdLnByZXZZVmFsPVtdLHRbZV0ucHJldlhWYWw9W119KSk6KHQucHJldlk9W10sdC5wcmV2WD1bXSx0LnByZXZZRj1bXSx0LnByZXZYRj1bXSx0LnByZXZZVmFsPVtdLHQucHJldlhWYWw9W10pfX0se2tleTpcImluaXRpYWxpemVTdGFja2VkWFlWYXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC53O2UuZ2xvYmFscy5oYXNTZXJpZXNHcm91cHM/ZS5nbG9iYWxzLnNlcmllc0dyb3Vwcy5mb3JFYWNoKChmdW5jdGlvbihlKXt0W2VdfHwodFtlXT17fSksdFtlXS54QXJyaj1bXSx0W2VdLnhBcnJqRj1bXSx0W2VdLnhBcnJqVmFsPVtdLHRbZV0ueUFycmo9W10sdFtlXS55QXJyakY9W10sdFtlXS55QXJyalZhbD1bXX0pKToodC54QXJyaj1bXSx0LnhBcnJqRj1bXSx0LnhBcnJqVmFsPVtdLHQueUFycmo9W10sdC55QXJyakY9W10sdC55QXJyalZhbD1bXSl9fSx7a2V5OlwiZ2V0UGF0aEZpbGxDb2xvclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzLHIsbyxuLGw9dGhpcy53LGg9bmV3IFIodGhpcy5iYXJDdHguY3R4KSxjPW51bGwsZD10aGlzLmJhckN0eC5iYXJPcHRpb25zLmRpc3RyaWJ1dGVkP2k6ZTt0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5yYW5nZXMubGVuZ3RoPjAmJnRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLnJhbmdlcy5tYXAoKGZ1bmN0aW9uKGEpe3RbZV1baV0+PWEuZnJvbSYmdFtlXVtpXTw9YS50byYmKGM9YS5jb2xvcil9KSk7cmV0dXJuIGwuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldJiZsLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXS5maWxsQ29sb3ImJihjPWwuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldLmZpbGxDb2xvciksaC5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOnRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuZGlzdHJpYnV0ZWQ/ZDphLGRhdGFQb2ludEluZGV4OmksY29sb3I6Yyx2YWx1ZTp0W2VdW2ldLGZpbGxDb25maWc6bnVsbD09PShzPWwuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldKXx8dm9pZCAwPT09cz92b2lkIDA6cy5maWxsLGZpbGxUeXBlOm51bGwhPT0ocj1sLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXSkmJnZvaWQgMCE9PXImJm51bGwhPT0obz1yLmZpbGwpJiZ2b2lkIDAhPT1vJiZvLnR5cGU/bnVsbD09PShuPWwuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldKXx8dm9pZCAwPT09bj92b2lkIDA6bi5maWxsLnR5cGU6bC5jb25maWcuZmlsbC50eXBlfSl9fSx7a2V5OlwiZ2V0U3Ryb2tlV2lkdGhcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9MCxzPXRoaXMudztyZXR1cm4gdGhpcy5iYXJDdHguc2VyaWVzW3RdW2VdP3RoaXMuYmFyQ3R4LmlzTnVsbFZhbHVlPSExOnRoaXMuYmFyQ3R4LmlzTnVsbFZhbHVlPSEwLHMuY29uZmlnLnN0cm9rZS5zaG93JiYodGhpcy5iYXJDdHguaXNOdWxsVmFsdWV8fChhPUFycmF5LmlzQXJyYXkodGhpcy5iYXJDdHguc3Ryb2tlV2lkdGgpP3RoaXMuYmFyQ3R4LnN0cm9rZVdpZHRoW2ldOnRoaXMuYmFyQ3R4LnN0cm9rZVdpZHRoKSksYX19LHtrZXk6XCJzaG91bGRBcHBseVJhZGl1c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPSExO3JldHVybiBlLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzPjAmJihlLmNvbmZpZy5jaGFydC5zdGFja2VkJiZcImxhc3RcIj09PWUuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXNXaGVuU3RhY2tlZD90aGlzLmJhckN0eC5sYXN0QWN0aXZlQmFyU2VyaWVJbmRleD09PXQmJihpPSEwKTppPSEwKSxpfX0se2tleTpcImJhckJhY2tncm91bmRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmosaT10LmksYT10LngxLHM9dC54MixyPXQueTEsbz10LnkyLG49dC5lbFNlcmllcyxsPXRoaXMudyxoPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCksYz1uZXcgTih0aGlzLmJhckN0eC5jdHgpLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KCk7aWYodGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMuYmFja2dyb3VuZEJhckNvbG9ycy5sZW5ndGg+MCYmYz09PWkpe2U+PXRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnMubGVuZ3RoJiYoZSU9dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMuYmFja2dyb3VuZEJhckNvbG9ycy5sZW5ndGgpO3ZhciBkPXRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnNbZV0sZz1oLmRyYXdSZWN0KHZvaWQgMCE9PWE/YTowLHZvaWQgMCE9PXI/cjowLHZvaWQgMCE9PXM/czpsLmdsb2JhbHMuZ3JpZFdpZHRoLHZvaWQgMCE9PW8/bzpsLmdsb2JhbHMuZ3JpZEhlaWdodCx0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5iYWNrZ3JvdW5kQmFyUmFkaXVzLGQsdGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMuYmFja2dyb3VuZEJhck9wYWNpdHkpO24uYWRkKGcpLGcubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1iYWNrZ3JvdW5kQmFyXCIpfX19LHtrZXk6XCJnZXRDb2x1bW5QYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dC5iYXJXaWR0aCxhPXQuYmFyWFBvc2l0aW9uLHM9dC55MSxyPXQueTIsbz10LnN0cm9rZVdpZHRoLG49dC5zZXJpZXNHcm91cCxsPXQucmVhbEluZGV4LGg9dC5pLGM9dC5qLGQ9dC53LGc9bmV3IG0odGhpcy5iYXJDdHguY3R4KTsobz1BcnJheS5pc0FycmF5KG8pP29bbF06byl8fChvPTApO3ZhciB1PWkscD1hO251bGwhPT0oZT1kLmNvbmZpZy5zZXJpZXNbbF0uZGF0YVtjXSkmJnZvaWQgMCE9PWUmJmUuY29sdW1uV2lkdGhPZmZzZXQmJihwPWEtZC5jb25maWcuc2VyaWVzW2xdLmRhdGFbY10uY29sdW1uV2lkdGhPZmZzZXQvMix1PWkrZC5jb25maWcuc2VyaWVzW2xdLmRhdGFbY10uY29sdW1uV2lkdGhPZmZzZXQpO3ZhciBmPXAseD1wK3U7cys9LjAwMSxyKz0uMDAxO3ZhciBiPWcubW92ZShmLHMpLHY9Zy5tb3ZlKGYscykseT1nLmxpbmUoeC1vLHMpO2lmKGQuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYodj10aGlzLmJhckN0eC5nZXRQcmV2aW91c1BhdGgobCxjLCExKSksYj1iK2cubGluZShmLHIpK2cubGluZSh4LW8scikrZy5saW5lKHgtbyxzKSsoXCJhcm91bmRcIj09PWQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXNBcHBsaWNhdGlvbj9cIiBaXCI6XCIgelwiKSx2PXYrZy5saW5lKGYscykreSt5K3kreSt5K2cubGluZShmLHMpKyhcImFyb3VuZFwiPT09ZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJvcmRlclJhZGl1c0FwcGxpY2F0aW9uP1wiIFpcIjpcIiB6XCIpLHRoaXMuc2hvdWxkQXBwbHlSYWRpdXMobCkmJihiPWcucm91bmRQYXRoQ29ybmVycyhiLGQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXMpKSxkLmNvbmZpZy5jaGFydC5zdGFja2VkKXt2YXIgdz10aGlzLmJhckN0eDtkLmdsb2JhbHMuaGFzU2VyaWVzR3JvdXBzJiZuJiYodz10aGlzLmJhckN0eFtuXSksdy55QXJyai5wdXNoKHIpLHcueUFycmpGLnB1c2goTWF0aC5hYnMocy1yKSksdy55QXJyalZhbC5wdXNoKHRoaXMuYmFyQ3R4LnNlcmllc1toXVtjXSl9cmV0dXJue3BhdGhUbzpiLHBhdGhGcm9tOnZ9fX0se2tleTpcImdldEJhcnBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10LmJhcllQb3NpdGlvbixhPXQuYmFySGVpZ2h0LHM9dC54MSxyPXQueDIsbz10LnN0cm9rZVdpZHRoLG49dC5zZXJpZXNHcm91cCxsPXQucmVhbEluZGV4LGg9dC5pLGM9dC5qLGQ9dC53LGc9bmV3IG0odGhpcy5iYXJDdHguY3R4KTsobz1BcnJheS5pc0FycmF5KG8pP29bbF06byl8fChvPTApO3ZhciB1PWkscD1hO251bGwhPT0oZT1kLmNvbmZpZy5zZXJpZXNbbF0uZGF0YVtjXSkmJnZvaWQgMCE9PWUmJmUuYmFySGVpZ2h0T2Zmc2V0JiYodT1pLWQuY29uZmlnLnNlcmllc1tsXS5kYXRhW2NdLmJhckhlaWdodE9mZnNldC8yLHA9YStkLmNvbmZpZy5zZXJpZXNbbF0uZGF0YVtjXS5iYXJIZWlnaHRPZmZzZXQpO3ZhciBmPXUseD11K3A7cys9LjAwMSxyKz0uMDAxO3ZhciBiPWcubW92ZShzLGYpLHY9Zy5tb3ZlKHMsZik7ZC5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoPjAmJih2PXRoaXMuYmFyQ3R4LmdldFByZXZpb3VzUGF0aChsLGMsITEpKTt2YXIgeT1nLmxpbmUocyx4LW8pO2lmKGI9YitnLmxpbmUocixmKStnLmxpbmUocix4LW8pK3krKFwiYXJvdW5kXCI9PT1kLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzQXBwbGljYXRpb24/XCIgWlwiOlwiIHpcIiksdj12K2cubGluZShzLGYpK3kreSt5K3kreStnLmxpbmUocyxmKSsoXCJhcm91bmRcIj09PWQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXNBcHBsaWNhdGlvbj9cIiBaXCI6XCIgelwiKSx0aGlzLnNob3VsZEFwcGx5UmFkaXVzKGwpJiYoYj1nLnJvdW5kUGF0aENvcm5lcnMoYixkLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzKSksZC5jb25maWcuY2hhcnQuc3RhY2tlZCl7dmFyIHc9dGhpcy5iYXJDdHg7ZC5nbG9iYWxzLmhhc1Nlcmllc0dyb3VwcyYmbiYmKHc9dGhpcy5iYXJDdHhbbl0pLHcueEFycmoucHVzaChyKSx3LnhBcnJqRi5wdXNoKE1hdGguYWJzKHMtcikpLHcueEFycmpWYWwucHVzaCh0aGlzLmJhckN0eC5zZXJpZXNbaF1bY10pfXJldHVybntwYXRoVG86YixwYXRoRnJvbTp2fX19LHtrZXk6XCJjaGVja1plcm9TZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5zZXJpZXMsaT10aGlzLncsYT0wO2E8ZS5sZW5ndGg7YSsrKXtmb3IodmFyIHM9MCxyPTA7cjxlW2kuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGg7cisrKXMrPWVbYV1bcl07MD09PXMmJnRoaXMuYmFyQ3R4Lnplcm9TZXJpZXNlcy5wdXNoKGEpfX19LHtrZXk6XCJnZXRYRm9yVmFsdWVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0/ZTpudWxsO3JldHVybiBudWxsIT10JiYoaT1lK3QvdGhpcy5iYXJDdHguaW52ZXJ0ZWRZUmF0aW8tMioodGhpcy5iYXJDdHguaXNSZXZlcnNlZD90L3RoaXMuYmFyQ3R4LmludmVydGVkWVJhdGlvOjApKSxpfX0se2tleTpcImdldFlGb3JWYWx1ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXT9lOm51bGw7cmV0dXJuIG51bGwhPXQmJihpPWUtdC90aGlzLmJhckN0eC55UmF0aW9bdGhpcy5iYXJDdHgueWF4aXNJbmRleF0rMioodGhpcy5iYXJDdHguaXNSZXZlcnNlZD90L3RoaXMuYmFyQ3R4LnlSYXRpb1t0aGlzLmJhckN0eC55YXhpc0luZGV4XTowKSksaX19LHtrZXk6XCJnZXRHb2FsVmFsdWVzXCIsdmFsdWU6ZnVuY3Rpb24odCxpLGEscyxyKXt2YXIgbj10aGlzLGw9dGhpcy53LGg9W10sYz1mdW5jdGlvbihlLHMpe3ZhciByO2gucHVzaCgobyhyPXt9LHQsXCJ4XCI9PT10P24uZ2V0WEZvclZhbHVlKGUsaSwhMSk6bi5nZXRZRm9yVmFsdWUoZSxhLCExKSksbyhyLFwiYXR0cnNcIixzKSxyKSl9O2lmKGwuZ2xvYmFscy5zZXJpZXNHb2Fsc1tzXSYmbC5nbG9iYWxzLnNlcmllc0dvYWxzW3NdW3JdJiZBcnJheS5pc0FycmF5KGwuZ2xvYmFscy5zZXJpZXNHb2Fsc1tzXVtyXSkmJmwuZ2xvYmFscy5zZXJpZXNHb2Fsc1tzXVtyXS5mb3JFYWNoKChmdW5jdGlvbih0KXtjKHQudmFsdWUsdCl9KSksdGhpcy5iYXJDdHguYmFyT3B0aW9ucy5pc0R1bWJiZWxsJiZsLmdsb2JhbHMuc2VyaWVzUmFuZ2UubGVuZ3RoKXt2YXIgZD10aGlzLmJhckN0eC5iYXJPcHRpb25zLmR1bWJiZWxsQ29sb3JzP3RoaXMuYmFyQ3R4LmJhck9wdGlvbnMuZHVtYmJlbGxDb2xvcnM6bC5nbG9iYWxzLmNvbG9ycyxnPXtzdHJva2VIZWlnaHQ6XCJ4XCI9PT10PzA6bC5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtzXSxzdHJva2VXaWR0aDpcInhcIj09PXQ/bC5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtzXTowLHN0cm9rZURhc2hBcnJheTowLHN0cm9rZUxpbmVDYXA6XCJyb3VuZFwiLHN0cm9rZUNvbG9yOkFycmF5LmlzQXJyYXkoZFtzXSk/ZFtzXVswXTpkW3NdfTtjKGwuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0W3NdW3JdLGcpLGMobC5nbG9iYWxzLnNlcmllc1JhbmdlRW5kW3NdW3JdLGUoZSh7fSxnKSx7fSx7c3Ryb2tlQ29sb3I6QXJyYXkuaXNBcnJheShkW3NdKT9kW3NdWzFdOmRbc119KSl9cmV0dXJuIGh9fSx7a2V5OlwiZHJhd0dvYWxMaW5lXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5iYXJYUG9zaXRpb24saT10LmJhcllQb3NpdGlvbixhPXQuZ29hbFgscz10LmdvYWxZLHI9dC5iYXJXaWR0aCxvPXQuYmFySGVpZ2h0LG49bmV3IG0odGhpcy5iYXJDdHguY3R4KSxsPW4uZ3JvdXAoe2NsYXNzTmFtZTpcImFwZXhjaGFydHMtYmFyLWdvYWxzLWdyb3Vwc1wifSk7bC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCIpLHRoaXMuYmFyQ3R4LncuZ2xvYmFscy5kZWxheWVkRWxlbWVudHMucHVzaCh7ZWw6bC5ub2RlfSksbC5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFya2VyTWFza1wiLmNvbmNhdCh0aGlzLmJhckN0eC53Lmdsb2JhbHMuY3VpZCxcIilcIikpO3ZhciBoPW51bGw7cmV0dXJuIHRoaXMuYmFyQ3R4LmlzSG9yaXpvbnRhbD9BcnJheS5pc0FycmF5KGEpJiZhLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXZvaWQgMCE9PXQuYXR0cnMuc3Ryb2tlSGVpZ2h0P3QuYXR0cnMuc3Ryb2tlSGVpZ2h0Om8vMixhPWkrZStvLzI7aD1uLmRyYXdMaW5lKHQueCxhLTIqZSx0LngsYSx0LmF0dHJzLnN0cm9rZUNvbG9yP3QuYXR0cnMuc3Ryb2tlQ29sb3I6dm9pZCAwLHQuYXR0cnMuc3Ryb2tlRGFzaEFycmF5LHQuYXR0cnMuc3Ryb2tlV2lkdGg/dC5hdHRycy5zdHJva2VXaWR0aDoyLHQuYXR0cnMuc3Ryb2tlTGluZUNhcCksbC5hZGQoaCl9KSk6QXJyYXkuaXNBcnJheShzKSYmcy5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgaT12b2lkIDAhPT10LmF0dHJzLnN0cm9rZVdpZHRoP3QuYXR0cnMuc3Ryb2tlV2lkdGg6ci8yLGE9ZStpK3IvMjtoPW4uZHJhd0xpbmUoYS0yKmksdC55LGEsdC55LHQuYXR0cnMuc3Ryb2tlQ29sb3I/dC5hdHRycy5zdHJva2VDb2xvcjp2b2lkIDAsdC5hdHRycy5zdHJva2VEYXNoQXJyYXksdC5hdHRycy5zdHJva2VIZWlnaHQ/dC5hdHRycy5zdHJva2VIZWlnaHQ6Mix0LmF0dHJzLnN0cm9rZUxpbmVDYXApLGwuYWRkKGgpfSkpLGx9fV0pLHR9KCkseXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudzt2YXIgcz10aGlzLnc7dGhpcy5iYXJPcHRpb25zPXMuY29uZmlnLnBsb3RPcHRpb25zLmJhcix0aGlzLmlzSG9yaXpvbnRhbD10aGlzLmJhck9wdGlvbnMuaG9yaXpvbnRhbCx0aGlzLnN0cm9rZVdpZHRoPXMuY29uZmlnLnN0cm9rZS53aWR0aCx0aGlzLmlzTnVsbFZhbHVlPSExLHRoaXMuaXNSYW5nZUJhcj1zLmdsb2JhbHMuc2VyaWVzUmFuZ2UubGVuZ3RoJiZ0aGlzLmlzSG9yaXpvbnRhbCx0aGlzLnh5UmF0aW9zPWksbnVsbCE9PXRoaXMueHlSYXRpb3MmJih0aGlzLnhSYXRpbz1pLnhSYXRpbyx0aGlzLmluaXRpYWxYUmF0aW89aS5pbml0aWFsWFJhdGlvLHRoaXMueVJhdGlvPWkueVJhdGlvLHRoaXMuaW52ZXJ0ZWRYUmF0aW89aS5pbnZlcnRlZFhSYXRpbyx0aGlzLmludmVydGVkWVJhdGlvPWkuaW52ZXJ0ZWRZUmF0aW8sdGhpcy5iYXNlTGluZVk9aS5iYXNlTGluZVksdGhpcy5iYXNlTGluZUludmVydGVkWT1pLmJhc2VMaW5lSW52ZXJ0ZWRZKSx0aGlzLnlheGlzSW5kZXg9MCx0aGlzLnNlcmllc0xlbj0wO3ZhciByPW5ldyBOKHRoaXMuY3R4KTt0aGlzLmxhc3RBY3RpdmVCYXJTZXJpZUluZGV4PXIuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoXCJkZXNjXCIsW1wiYmFyXCIsXCJjb2x1bW5cIl0pO3ZhciBvPXIuZ2V0QmFyU2VyaWVzSW5kaWNlcygpLG49bmV3IHkodGhpcy5jdHgpO3RoaXMuc3RhY2tlZFNlcmllc1RvdGFscz1uLmdldFN0YWNrZWRTZXJpZXNUb3RhbHModGhpcy53LmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbih0LGUpe3JldHVybi0xPT09by5pbmRleE9mKGUpP2U6LTF9KSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4tMSE9PXR9KSkpLHRoaXMuYmFySGVscGVycz1uZXcgbXQodGhpcyl9cmV0dXJuIHIodCxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0LGkpe3ZhciBhPXRoaXMudyxzPW5ldyBtKHRoaXMuY3R4KSxyPW5ldyB5KHRoaXMuY3R4LGEpO3Q9ci5nZXRMb2dTZXJpZXModCksdGhpcy5zZXJpZXM9dCx0aGlzLnlSYXRpbz1yLmdldExvZ1lSYXRpb3ModGhpcy55UmF0aW8pLHRoaXMuYmFySGVscGVycy5pbml0VmFyaWFibGVzKHQpO3ZhciBvPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1iYXItc2VyaWVzIGFwZXhjaGFydHMtcGxvdC1zZXJpZXNcIn0pO2EuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZCYmdGhpcy50b3RhbEl0ZW1zPnRoaXMuYmFyT3B0aW9ucy5kYXRhTGFiZWxzLm1heEl0ZW1zJiZjb25zb2xlLndhcm4oXCJXQVJOSU5HOiBEYXRhTGFiZWxzIGFyZSBlbmFibGVkIGJ1dCB0aGVyZSBhcmUgdG9vIG1hbnkgdG8gZGlzcGxheS4gVGhpcyBtYXkgY2F1c2UgcGVyZm9ybWFuY2UgaXNzdWUgd2hlbiByZW5kZXJpbmcuXCIpO2Zvcih2YXIgbj0wLGw9MDtuPHQubGVuZ3RoO24rKyxsKyspe3ZhciBoLGMsZCxnLHU9dm9pZCAwLHA9dm9pZCAwLGY9W10sYj1bXSx2PWEuZ2xvYmFscy5jb21ib0NoYXJ0cz9pW25dOm4sdz1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzXCIscmVsOm4rMSxzZXJpZXNOYW1lOnguZXNjYXBlU3RyaW5nKGEuZ2xvYmFscy5zZXJpZXNOYW1lc1t2XSksXCJkYXRhOnJlYWxJbmRleFwiOnZ9KTt0aGlzLmN0eC5zZXJpZXMuYWRkQ29sbGFwc2VkQ2xhc3NUb1Nlcmllcyh3LHYpLHRbbl0ubGVuZ3RoPjAmJih0aGlzLnZpc2libGVJPXRoaXMudmlzaWJsZUkrMSk7dmFyIGs9MCxBPTA7dGhpcy55UmF0aW8ubGVuZ3RoPjEmJih0aGlzLnlheGlzSW5kZXg9diksdGhpcy5pc1JldmVyc2VkPWEuY29uZmlnLnlheGlzW3RoaXMueWF4aXNJbmRleF0mJmEuY29uZmlnLnlheGlzW3RoaXMueWF4aXNJbmRleF0ucmV2ZXJzZWQ7dmFyIFM9dGhpcy5iYXJIZWxwZXJzLmluaXRpYWxQb3NpdGlvbnMoKTtwPVMueSxrPVMuYmFySGVpZ2h0LGM9Uy55RGl2aXNpb24sZz1TLnplcm9XLHU9Uy54LEE9Uy5iYXJXaWR0aCxoPVMueERpdmlzaW9uLGQ9Uy56ZXJvSCx0aGlzLmhvcml6b250YWx8fGIucHVzaCh1K0EvMik7Zm9yKHZhciBDPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIsXCJkYXRhOnJlYWxJbmRleFwiOnZ9KSxMPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1iYXItZ29hbHMtbWFya2Vyc1wiLHN0eWxlOlwicG9pbnRlci1ldmVudHM6IG5vbmVcIn0pLFA9MDtQPGEuZ2xvYmFscy5kYXRhUG9pbnRzO1ArKyl7dmFyIEk9dGhpcy5iYXJIZWxwZXJzLmdldFN0cm9rZVdpZHRoKG4sUCx2KSxUPW51bGwsTT17aW5kZXhlczp7aTpuLGo6UCxyZWFsSW5kZXg6dixiYzpsfSx4OnUseTpwLHN0cm9rZVdpZHRoOkksZWxTZXJpZXM6d307dGhpcy5pc0hvcml6b250YWw/KFQ9dGhpcy5kcmF3QmFyUGF0aHMoZShlKHt9LE0pLHt9LHtiYXJIZWlnaHQ6ayx6ZXJvVzpnLHlEaXZpc2lvbjpjfSkpLEE9dGhpcy5zZXJpZXNbbl1bUF0vdGhpcy5pbnZlcnRlZFlSYXRpbyk6KFQ9dGhpcy5kcmF3Q29sdW1uUGF0aHMoZShlKHt9LE0pLHt9LHt4RGl2aXNpb246aCxiYXJXaWR0aDpBLHplcm9IOmR9KSksaz10aGlzLnNlcmllc1tuXVtQXS90aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdKTt2YXIgWD10aGlzLmJhckhlbHBlcnMuZHJhd0dvYWxMaW5lKHtiYXJYUG9zaXRpb246VC5iYXJYUG9zaXRpb24sYmFyWVBvc2l0aW9uOlQuYmFyWVBvc2l0aW9uLGdvYWxYOlQuZ29hbFgsZ29hbFk6VC5nb2FsWSxiYXJIZWlnaHQ6ayxiYXJXaWR0aDpBfSk7WCYmTC5hZGQoWCkscD1ULnksdT1ULngsUD4wJiZiLnB1c2godStBLzIpLGYucHVzaChwKTt2YXIgej10aGlzLmJhckhlbHBlcnMuZ2V0UGF0aEZpbGxDb2xvcih0LG4sUCx2KTt0aGlzLnJlbmRlclNlcmllcyh7cmVhbEluZGV4OnYscGF0aEZpbGw6eixqOlAsaTpuLHBhdGhGcm9tOlQucGF0aEZyb20scGF0aFRvOlQucGF0aFRvLHN0cm9rZVdpZHRoOkksZWxTZXJpZXM6dyx4OnUseTpwLHNlcmllczp0LGJhckhlaWdodDpULmJhckhlaWdodD9ULmJhckhlaWdodDprLGJhcldpZHRoOlQuYmFyV2lkdGg/VC5iYXJXaWR0aDpBLGVsRGF0YUxhYmVsc1dyYXA6QyxlbEdvYWxzTWFya2VyczpMLHZpc2libGVTZXJpZXM6dGhpcy52aXNpYmxlSSx0eXBlOlwiYmFyXCJ9KX1hLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1t2XT1iLGEuZ2xvYmFscy5zZXJpZXNZdmFsdWVzW3ZdPWYsby5hZGQodyl9cmV0dXJuIG99fSx7a2V5OlwicmVuZGVyU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5yZWFsSW5kZXgsaT10LnBhdGhGaWxsLGE9dC5saW5lRmlsbCxzPXQuaixyPXQuaSxvPXQuZ3JvdXBJbmRleCxuPXQucGF0aEZyb20sbD10LnBhdGhUbyxoPXQuc3Ryb2tlV2lkdGgsYz10LmVsU2VyaWVzLGQ9dC54LGc9dC55LHU9dC55MSxwPXQueTIsZj10LnNlcmllcyx4PXQuYmFySGVpZ2h0LGI9dC5iYXJXaWR0aCx5PXQuYmFyWVBvc2l0aW9uLHc9dC5lbERhdGFMYWJlbHNXcmFwLGs9dC5lbEdvYWxzTWFya2VycyxBPXQudmlzaWJsZVNlcmllcyxTPXQudHlwZSxDPXRoaXMudyxMPW5ldyBtKHRoaXMuY3R4KTthfHwoYT10aGlzLmJhck9wdGlvbnMuZGlzdHJpYnV0ZWQ/Qy5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbc106Qy5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbZV0pLEMuY29uZmlnLnNlcmllc1tyXS5kYXRhW3NdJiZDLmNvbmZpZy5zZXJpZXNbcl0uZGF0YVtzXS5zdHJva2VDb2xvciYmKGE9Qy5jb25maWcuc2VyaWVzW3JdLmRhdGFbc10uc3Ryb2tlQ29sb3IpLHRoaXMuaXNOdWxsVmFsdWUmJihpPVwibm9uZVwiKTt2YXIgUD1zL0MuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuYW5pbWF0ZUdyYWR1YWxseS5kZWxheSooQy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZC9DLmdsb2JhbHMuZGF0YVBvaW50cykvMi40LEk9TC5yZW5kZXJQYXRocyh7aTpyLGo6cyxyZWFsSW5kZXg6ZSxwYXRoRnJvbTpuLHBhdGhUbzpsLHN0cm9rZTphLHN0cm9rZVdpZHRoOmgsc3Ryb2tlTGluZUNhcDpDLmNvbmZpZy5zdHJva2UubGluZUNhcCxmaWxsOmksYW5pbWF0aW9uRGVsYXk6UCxpbml0aWFsU3BlZWQ6Qy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCxkYXRhQ2hhbmdlU3BlZWQ6Qy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkLGNsYXNzTmFtZTpcImFwZXhjaGFydHMtXCIuY29uY2F0KFMsXCItYXJlYVwiKX0pO0kuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hc2tcIi5jb25jYXQoQy5nbG9iYWxzLmN1aWQsXCIpXCIpKTt2YXIgVD1DLmNvbmZpZy5mb3JlY2FzdERhdGFQb2ludHM7VC5jb3VudD4wJiZzPj1DLmdsb2JhbHMuZGF0YVBvaW50cy1ULmNvdW50JiYoSS5ub2RlLnNldEF0dHJpYnV0ZShcInN0cm9rZS1kYXNoYXJyYXlcIixULmRhc2hBcnJheSksSS5ub2RlLnNldEF0dHJpYnV0ZShcInN0cm9rZS13aWR0aFwiLFQuc3Ryb2tlV2lkdGgpLEkubm9kZS5zZXRBdHRyaWJ1dGUoXCJmaWxsLW9wYWNpdHlcIixULmZpbGxPcGFjaXR5KSksdm9pZCAwIT09dSYmdm9pZCAwIT09cCYmKEkuYXR0cihcImRhdGEtcmFuZ2UteTFcIix1KSxJLmF0dHIoXCJkYXRhLXJhbmdlLXkyXCIscCkpLG5ldyB2KHRoaXMuY3R4KS5zZXRTZWxlY3Rpb25GaWx0ZXIoSSxlLHMpLGMuYWRkKEkpO3ZhciBNPW5ldyB2dCh0aGlzKS5oYW5kbGVCYXJEYXRhTGFiZWxzKHt4OmQseTpnLHkxOnUseTI6cCxpOnIsajpzLHNlcmllczpmLHJlYWxJbmRleDplLGdyb3VwSW5kZXg6byxiYXJIZWlnaHQ6eCxiYXJXaWR0aDpiLGJhcllQb3NpdGlvbjp5LHJlbmRlcmVkUGF0aDpJLHZpc2libGVTZXJpZXM6QX0pO3JldHVybiBudWxsIT09TS5kYXRhTGFiZWxzJiZ3LmFkZChNLmRhdGFMYWJlbHMpLE0udG90YWxEYXRhTGFiZWxzJiZ3LmFkZChNLnRvdGFsRGF0YUxhYmVscyksYy5hZGQodyksayYmYy5hZGQoayksY319LHtrZXk6XCJkcmF3QmFyUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXQuaW5kZXhlcyxhPXQuYmFySGVpZ2h0LHM9dC5zdHJva2VXaWR0aCxyPXQuemVyb1csbz10Lngsbj10LnksbD10LnlEaXZpc2lvbixoPXQuZWxTZXJpZXMsYz10aGlzLncsZD1pLmksZz1pLmo7aWYoYy5nbG9iYWxzLmlzWE51bWVyaWMpZT0obj0oYy5nbG9iYWxzLnNlcmllc1hbZF1bZ10tYy5nbG9iYWxzLm1pblgpL3RoaXMuaW52ZXJ0ZWRYUmF0aW8tYSkrYSp0aGlzLnZpc2libGVJO2Vsc2UgaWYoYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhpZGVaZXJvQmFyc1doZW5Hcm91cGVkKXt2YXIgdT0wLHA9MDtjLmdsb2JhbHMuc2VyaWVzUGVyY2VudC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3RbZ10mJnUrKyxlPGQmJjA9PT10W2ddJiZwKyt9KSksdT4wJiYoYT10aGlzLnNlcmllc0xlbiphL3UpLGU9bithKnRoaXMudmlzaWJsZUksZS09YSpwfWVsc2UgZT1uK2EqdGhpcy52aXNpYmxlSTtvPXRoaXMuYmFySGVscGVycy5nZXRYRm9yVmFsdWUodGhpcy5zZXJpZXNbZF1bZ10scik7dmFyIGY9dGhpcy5iYXJIZWxwZXJzLmdldEJhcnBhdGhzKHtiYXJZUG9zaXRpb246ZSxiYXJIZWlnaHQ6YSx4MTpyLHgyOm8sc3Ryb2tlV2lkdGg6cyxzZXJpZXM6dGhpcy5zZXJpZXMscmVhbEluZGV4OmkucmVhbEluZGV4LGk6ZCxqOmcsdzpjfSk7cmV0dXJuIGMuZ2xvYmFscy5pc1hOdW1lcmljfHwobis9bCksdGhpcy5iYXJIZWxwZXJzLmJhckJhY2tncm91bmQoe2o6ZyxpOmQseTE6ZS1hKnRoaXMudmlzaWJsZUkseTI6YSp0aGlzLnNlcmllc0xlbixlbFNlcmllczpofSkse3BhdGhUbzpmLnBhdGhUbyxwYXRoRnJvbTpmLnBhdGhGcm9tLHg6byx5Om4sZ29hbFg6dGhpcy5iYXJIZWxwZXJzLmdldEdvYWxWYWx1ZXMoXCJ4XCIscixudWxsLGQsZyksYmFyWVBvc2l0aW9uOmUsYmFySGVpZ2h0OmF9fX0se2tleTpcImRyYXdDb2x1bW5QYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dC5pbmRleGVzLGE9dC54LHM9dC55LHI9dC54RGl2aXNpb24sbz10LmJhcldpZHRoLG49dC56ZXJvSCxsPXQuc3Ryb2tlV2lkdGgsaD10LmVsU2VyaWVzLGM9dGhpcy53LGQ9aS5yZWFsSW5kZXgsZz1pLmksdT1pLmoscD1pLmJjO2lmKGMuZ2xvYmFscy5pc1hOdW1lcmljKXt2YXIgZj1kO2MuZ2xvYmFscy5zZXJpZXNYW2RdLmxlbmd0aHx8KGY9Yy5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXgpLGMuZ2xvYmFscy5zZXJpZXNYW2ZdW3VdJiYoYT0oYy5nbG9iYWxzLnNlcmllc1hbZl1bdV0tYy5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvLW8qdGhpcy5zZXJpZXNMZW4vMiksZT1hK28qdGhpcy52aXNpYmxlSX1lbHNlIGlmKGMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5oaWRlWmVyb0JhcnNXaGVuR3JvdXBlZCl7dmFyIHg9MCxiPTA7Yy5nbG9iYWxzLnNlcmllc1BlcmNlbnQuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0W3VdJiZ4KyssZTxnJiYwPT09dFt1XSYmYisrfSkpLHg+MCYmKG89dGhpcy5zZXJpZXNMZW4qby94KSxlPWErbyp0aGlzLnZpc2libGVJLGUtPW8qYn1lbHNlIGU9YStvKnRoaXMudmlzaWJsZUk7cz10aGlzLmJhckhlbHBlcnMuZ2V0WUZvclZhbHVlKHRoaXMuc2VyaWVzW2ddW3VdLG4pO3ZhciB2PXRoaXMuYmFySGVscGVycy5nZXRDb2x1bW5QYXRocyh7YmFyWFBvc2l0aW9uOmUsYmFyV2lkdGg6byx5MTpuLHkyOnMsc3Ryb2tlV2lkdGg6bCxzZXJpZXM6dGhpcy5zZXJpZXMscmVhbEluZGV4OmkucmVhbEluZGV4LGk6ZyxqOnUsdzpjfSk7cmV0dXJuIGMuZ2xvYmFscy5pc1hOdW1lcmljfHwoYSs9ciksdGhpcy5iYXJIZWxwZXJzLmJhckJhY2tncm91bmQoe2JjOnAsajp1LGk6Zyx4MTplLWwvMi1vKnRoaXMudmlzaWJsZUkseDI6byp0aGlzLnNlcmllc0xlbitsLzIsZWxTZXJpZXM6aH0pLHtwYXRoVG86di5wYXRoVG8scGF0aEZyb206di5wYXRoRnJvbSx4OmEseTpzLGdvYWxZOnRoaXMuYmFySGVscGVycy5nZXRHb2FsVmFsdWVzKFwieVwiLG51bGwsbixnLHUpLGJhclhQb3NpdGlvbjplLGJhcldpZHRoOm99fX0se2tleTpcImdldFByZXZpb3VzUGF0aFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpLGE9dGhpcy53LHM9MDtzPGEuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aDtzKyspe3ZhciByPWEuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3NdO3IucGF0aHMmJnIucGF0aHMubGVuZ3RoPjAmJnBhcnNlSW50KHIucmVhbEluZGV4LDEwKT09PXBhcnNlSW50KHQsMTApJiZ2b2lkIDAhPT1hLmdsb2JhbHMucHJldmlvdXNQYXRoc1tzXS5wYXRoc1tlXSYmKGk9YS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbc10ucGF0aHNbZV0uZCl9cmV0dXJuIGl9fV0pLHR9KCksd3Q9ZnVuY3Rpb24odCl7bihzLHl0KTt2YXIgaT1kKHMpO2Z1bmN0aW9uIHMoKXtyZXR1cm4gYSh0aGlzLHMpLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiByKHMsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCxpKXt2YXIgYT10aGlzLHM9dGhpcy53O3RoaXMuZ3JhcGhpY3M9bmV3IG0odGhpcy5jdHgpLHRoaXMuYmFyPW5ldyB5dCh0aGlzLmN0eCx0aGlzLnh5UmF0aW9zKTt2YXIgcj1uZXcgeSh0aGlzLmN0eCxzKTt0PXIuZ2V0TG9nU2VyaWVzKHQpLHRoaXMueVJhdGlvPXIuZ2V0TG9nWVJhdGlvcyh0aGlzLnlSYXRpbyksdGhpcy5iYXJIZWxwZXJzLmluaXRWYXJpYWJsZXModCksXCIxMDAlXCI9PT1zLmNvbmZpZy5jaGFydC5zdGFja1R5cGUmJih0PXMuZ2xvYmFscy5zZXJpZXNQZXJjZW50LnNsaWNlKCkpLHRoaXMuc2VyaWVzPXQsdGhpcy5iYXJIZWxwZXJzLmluaXRpYWxpemVTdGFja2VkUHJldlZhcnModGhpcyk7Zm9yKHZhciBvPXRoaXMuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1iYXItc2VyaWVzIGFwZXhjaGFydHMtcGxvdC1zZXJpZXNcIn0pLG49MCxsPTAsaD1mdW5jdGlvbihyLGgpe3ZhciBjPXZvaWQgMCxkPXZvaWQgMCxnPXZvaWQgMCx1PXZvaWQgMCxwPS0xO2EuZ3JvdXBDdHg9YSxzLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5pbmRleE9mKHMuY29uZmlnLnNlcmllc1tyXS5uYW1lKT4tMSYmKHA9ZSl9KSksLTEhPT1wJiYoYS5ncm91cEN0eD1hW3MuZ2xvYmFscy5zZXJpZXNHcm91cHNbcF1dKTt2YXIgZj1bXSxiPVtdLHY9cy5nbG9iYWxzLmNvbWJvQ2hhcnRzP2lbcl06cjthLnlSYXRpby5sZW5ndGg+MSYmKGEueWF4aXNJbmRleD12KSxhLmlzUmV2ZXJzZWQ9cy5jb25maWcueWF4aXNbYS55YXhpc0luZGV4XSYmcy5jb25maWcueWF4aXNbYS55YXhpc0luZGV4XS5yZXZlcnNlZDt2YXIgbT1hLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzXCIsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhzLmdsb2JhbHMuc2VyaWVzTmFtZXNbdl0pLHJlbDpyKzEsXCJkYXRhOnJlYWxJbmRleFwiOnZ9KTthLmN0eC5zZXJpZXMuYWRkQ29sbGFwc2VkQ2xhc3NUb1NlcmllcyhtLHYpO3ZhciB5PWEuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIsXCJkYXRhOnJlYWxJbmRleFwiOnZ9KSx3PWEuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1iYXItZ29hbHMtbWFya2Vyc1wiLHN0eWxlOlwicG9pbnRlci1ldmVudHM6IG5vbmVcIn0pLGs9MCxBPTAsUz1hLmluaXRpYWxQb3NpdGlvbnMobixsLGMsZCxnLHUpO2w9Uy55LGs9Uy5iYXJIZWlnaHQsZD1TLnlEaXZpc2lvbix1PVMuemVyb1csbj1TLngsQT1TLmJhcldpZHRoLGM9Uy54RGl2aXNpb24sZz1TLnplcm9ILGEuYmFySGVscGVycy5pbml0aWFsaXplU3RhY2tlZFhZVmFycyhhKSwxPT09YS5ncm91cEN0eC5wcmV2WS5sZW5ndGgmJmEuZ3JvdXBDdHgucHJldllbMF0uZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiBpc05hTih0KX0pKSYmKGEuZ3JvdXBDdHgucHJldllbMF09YS5ncm91cEN0eC5wcmV2WVswXS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBnfSkpLGEuZ3JvdXBDdHgucHJldllGWzBdPWEuZ3JvdXBDdHgucHJldllGWzBdLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIDB9KSkpO2Zvcih2YXIgQz0wO0M8cy5nbG9iYWxzLmRhdGFQb2ludHM7QysrKXt2YXIgTD1hLmJhckhlbHBlcnMuZ2V0U3Ryb2tlV2lkdGgocixDLHYpLFA9e2luZGV4ZXM6e2k6cixqOkMscmVhbEluZGV4OnYsYmM6aH0sc3Ryb2tlV2lkdGg6TCx4Om4seTpsLGVsU2VyaWVzOm0sZ3JvdXBJbmRleDpwLHNlcmllc0dyb3VwOnMuZ2xvYmFscy5zZXJpZXNHcm91cHNbcF19LEk9bnVsbDthLmlzSG9yaXpvbnRhbD8oST1hLmRyYXdTdGFja2VkQmFyUGF0aHMoZShlKHt9LFApLHt9LHt6ZXJvVzp1LGJhckhlaWdodDprLHlEaXZpc2lvbjpkfSkpLEE9YS5zZXJpZXNbcl1bQ10vYS5pbnZlcnRlZFlSYXRpbyk6KEk9YS5kcmF3U3RhY2tlZENvbHVtblBhdGhzKGUoZSh7fSxQKSx7fSx7eERpdmlzaW9uOmMsYmFyV2lkdGg6QSx6ZXJvSDpnfSkpLGs9YS5zZXJpZXNbcl1bQ10vYS55UmF0aW9bYS55YXhpc0luZGV4XSk7dmFyIFQ9YS5iYXJIZWxwZXJzLmRyYXdHb2FsTGluZSh7YmFyWFBvc2l0aW9uOkkuYmFyWFBvc2l0aW9uLGJhcllQb3NpdGlvbjpJLmJhcllQb3NpdGlvbixnb2FsWDpJLmdvYWxYLGdvYWxZOkkuZ29hbFksYmFySGVpZ2h0OmssYmFyV2lkdGg6QX0pO1QmJncuYWRkKFQpLGw9SS55LG49SS54LGYucHVzaChuKSxiLnB1c2gobCk7dmFyIE09YS5iYXJIZWxwZXJzLmdldFBhdGhGaWxsQ29sb3IodCxyLEMsdik7bT1hLnJlbmRlclNlcmllcyh7cmVhbEluZGV4OnYscGF0aEZpbGw6TSxqOkMsaTpyLGdyb3VwSW5kZXg6cCxwYXRoRnJvbTpJLnBhdGhGcm9tLHBhdGhUbzpJLnBhdGhUbyxzdHJva2VXaWR0aDpMLGVsU2VyaWVzOm0seDpuLHk6bCxzZXJpZXM6dCxiYXJIZWlnaHQ6ayxiYXJXaWR0aDpBLGVsRGF0YUxhYmVsc1dyYXA6eSxlbEdvYWxzTWFya2Vyczp3LHR5cGU6XCJiYXJcIix2aXNpYmxlU2VyaWVzOjB9KX1zLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1t2XT1mLHMuZ2xvYmFscy5zZXJpZXNZdmFsdWVzW3ZdPWIsYS5ncm91cEN0eC5wcmV2WS5wdXNoKGEuZ3JvdXBDdHgueUFycmopLGEuZ3JvdXBDdHgucHJldllGLnB1c2goYS5ncm91cEN0eC55QXJyakYpLGEuZ3JvdXBDdHgucHJldllWYWwucHVzaChhLmdyb3VwQ3R4LnlBcnJqVmFsKSxhLmdyb3VwQ3R4LnByZXZYLnB1c2goYS5ncm91cEN0eC54QXJyaiksYS5ncm91cEN0eC5wcmV2WEYucHVzaChhLmdyb3VwQ3R4LnhBcnJqRiksYS5ncm91cEN0eC5wcmV2WFZhbC5wdXNoKGEuZ3JvdXBDdHgueEFycmpWYWwpLG8uYWRkKG0pfSxjPTAsZD0wO2M8dC5sZW5ndGg7YysrLGQrKyloKGMsZCk7cmV0dXJuIG99fSx7a2V5OlwiaW5pdGlhbFBvc2l0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyKXt2YXIgbyxuLGwsaCxjPXRoaXMudzt0aGlzLmlzSG9yaXpvbnRhbD8obz0obz1hPWMuZ2xvYmFscy5ncmlkSGVpZ2h0L2MuZ2xvYmFscy5kYXRhUG9pbnRzKSpwYXJzZUludChjLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYmFySGVpZ2h0LDEwKS8xMDAsbnVsbCE9PShsPWMuZ2xvYmFscy5zZXJpZXNHcm91cHMpJiZ2b2lkIDAhPT1sJiZsLmxlbmd0aCYmKG8vPWMuZ2xvYmFscy5zZXJpZXNHcm91cHMubGVuZ3RoKSwtMT09PVN0cmluZyhjLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYmFySGVpZ2h0KS5pbmRleE9mKFwiJVwiKSYmKG89cGFyc2VJbnQoYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJhckhlaWdodCwxMCkpLHI9dGhpcy5iYXNlTGluZUludmVydGVkWStjLmdsb2JhbHMucGFkSG9yaXpvbnRhbCsodGhpcy5pc1JldmVyc2VkP2MuZ2xvYmFscy5ncmlkV2lkdGg6MCktKHRoaXMuaXNSZXZlcnNlZD8yKnRoaXMuYmFzZUxpbmVJbnZlcnRlZFk6MCksZT0oYS1vKS8yKToobj1pPWMuZ2xvYmFscy5ncmlkV2lkdGgvYy5nbG9iYWxzLmRhdGFQb2ludHMsbj1jLmdsb2JhbHMuaXNYTnVtZXJpYyYmYy5nbG9iYWxzLmRhdGFQb2ludHM+MT8oaT1jLmdsb2JhbHMubWluWERpZmYvdGhpcy54UmF0aW8pKnBhcnNlSW50KHRoaXMuYmFyT3B0aW9ucy5jb2x1bW5XaWR0aCwxMCkvMTAwOm4qcGFyc2VJbnQoYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmNvbHVtbldpZHRoLDEwKS8xMDAsbnVsbCE9PShoPWMuZ2xvYmFscy5zZXJpZXNHcm91cHMpJiZ2b2lkIDAhPT1oJiZoLmxlbmd0aCYmKG4vPWMuZ2xvYmFscy5zZXJpZXNHcm91cHMubGVuZ3RoKSwtMT09PVN0cmluZyhjLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuY29sdW1uV2lkdGgpLmluZGV4T2YoXCIlXCIpJiYobj1wYXJzZUludChjLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuY29sdW1uV2lkdGgsMTApKSxzPWMuZ2xvYmFscy5ncmlkSGVpZ2h0LXRoaXMuYmFzZUxpbmVZW3RoaXMueWF4aXNJbmRleF0tKHRoaXMuaXNSZXZlcnNlZD9jLmdsb2JhbHMuZ3JpZEhlaWdodDowKSsodGhpcy5pc1JldmVyc2VkPzIqdGhpcy5iYXNlTGluZVlbdGhpcy55YXhpc0luZGV4XTowKSx0PWMuZ2xvYmFscy5wYWRIb3Jpem9udGFsKyhpLW4pLzIpO3JldHVybnt4OnQseTplLHlEaXZpc2lvbjphLHhEaXZpc2lvbjppLGJhckhlaWdodDpvLGJhcldpZHRoOm4semVyb0g6cyx6ZXJvVzpyfX19LHtrZXk6XCJkcmF3U3RhY2tlZEJhclBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlLGk9dC5pbmRleGVzLGE9dC5iYXJIZWlnaHQscz10LnN0cm9rZVdpZHRoLHI9dC56ZXJvVyxvPXQueCxuPXQueSxsPXQuZ3JvdXBJbmRleCxoPXQuc2VyaWVzR3JvdXAsYz10LnlEaXZpc2lvbixkPXQuZWxTZXJpZXMsZz10aGlzLncsdT1uKygtMSE9PWw/bCphOjApLHA9aS5pLGY9aS5qLHg9MCxiPTA7Yjx0aGlzLmdyb3VwQ3R4LnByZXZYRi5sZW5ndGg7YisrKXgrPXRoaXMuZ3JvdXBDdHgucHJldlhGW2JdW2ZdO3ZhciB2PXA7aWYoaCYmKHY9aC5pbmRleE9mKGcuY29uZmlnLnNlcmllc1twXS5uYW1lKSksdj4wKXt2YXIgbT1yO3RoaXMuZ3JvdXBDdHgucHJldlhWYWxbdi0xXVtmXTwwP209dGhpcy5zZXJpZXNbcF1bZl0+PTA/dGhpcy5ncm91cEN0eC5wcmV2WFt2LTFdW2ZdK3gtMioodGhpcy5pc1JldmVyc2VkP3g6MCk6dGhpcy5ncm91cEN0eC5wcmV2WFt2LTFdW2ZdOnRoaXMuZ3JvdXBDdHgucHJldlhWYWxbdi0xXVtmXT49MCYmKG09dGhpcy5zZXJpZXNbcF1bZl0+PTA/dGhpcy5ncm91cEN0eC5wcmV2WFt2LTFdW2ZdOnRoaXMuZ3JvdXBDdHgucHJldlhbdi0xXVtmXS14KzIqKHRoaXMuaXNSZXZlcnNlZD94OjApKSxlPW19ZWxzZSBlPXI7bz1udWxsPT09dGhpcy5zZXJpZXNbcF1bZl0/ZTplK3RoaXMuc2VyaWVzW3BdW2ZdL3RoaXMuaW52ZXJ0ZWRZUmF0aW8tMioodGhpcy5pc1JldmVyc2VkP3RoaXMuc2VyaWVzW3BdW2ZdL3RoaXMuaW52ZXJ0ZWRZUmF0aW86MCk7dmFyIHk9dGhpcy5iYXJIZWxwZXJzLmdldEJhcnBhdGhzKHtiYXJZUG9zaXRpb246dSxiYXJIZWlnaHQ6YSx4MTplLHgyOm8sc3Ryb2tlV2lkdGg6cyxzZXJpZXM6dGhpcy5zZXJpZXMscmVhbEluZGV4OmkucmVhbEluZGV4LHNlcmllc0dyb3VwOmgsaTpwLGo6Zix3Omd9KTtyZXR1cm4gdGhpcy5iYXJIZWxwZXJzLmJhckJhY2tncm91bmQoe2o6ZixpOnAseTE6dSx5MjphLGVsU2VyaWVzOmR9KSxuKz1jLHtwYXRoVG86eS5wYXRoVG8scGF0aEZyb206eS5wYXRoRnJvbSxnb2FsWDp0aGlzLmJhckhlbHBlcnMuZ2V0R29hbFZhbHVlcyhcInhcIixyLG51bGwscCxmKSxiYXJZUG9zaXRpb246dSx4Om8seTpufX19LHtrZXk6XCJkcmF3U3RhY2tlZENvbHVtblBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleGVzLGk9dC54LGE9dC55LHM9dC54RGl2aXNpb24scj10LmJhcldpZHRoLG89dC56ZXJvSCxuPXQuZ3JvdXBJbmRleCxsPXQuc2VyaWVzR3JvdXAsaD10LmVsU2VyaWVzLGM9dGhpcy53LGQ9ZS5pLGc9ZS5qLHU9ZS5iYztpZihjLmdsb2JhbHMuaXNYTnVtZXJpYyl7dmFyIHA9Yy5nbG9iYWxzLnNlcmllc1hbZF1bZ107cHx8KHA9MCksaT0ocC1jLmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW8tci8yLGMuZ2xvYmFscy5zZXJpZXNHcm91cHMubGVuZ3RoJiYoaT0ocC1jLmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW8tci8yKmMuZ2xvYmFscy5zZXJpZXNHcm91cHMubGVuZ3RoKX1mb3IodmFyIGYseD1pKygtMSE9PW4/bipyOjApLGI9MCx2PTA7djx0aGlzLmdyb3VwQ3R4LnByZXZZRi5sZW5ndGg7disrKWIrPWlzTmFOKHRoaXMuZ3JvdXBDdHgucHJldllGW3ZdW2ddKT8wOnRoaXMuZ3JvdXBDdHgucHJldllGW3ZdW2ddO3ZhciBtPWQ7aWYobCYmKG09bC5pbmRleE9mKGMuY29uZmlnLnNlcmllc1tkXS5uYW1lKSksbT4wJiYhYy5nbG9iYWxzLmlzWE51bWVyaWN8fG0+MCYmYy5nbG9iYWxzLmlzWE51bWVyaWMmJmMuZ2xvYmFscy5zZXJpZXNYW2QtMV1bZ109PT1jLmdsb2JhbHMuc2VyaWVzWFtkXVtnXSl7dmFyIHksdyxrLEE9TWF0aC5taW4odGhpcy55UmF0aW8ubGVuZ3RoKzEsZCsxKTtpZih2b2lkIDAhPT10aGlzLmdyb3VwQ3R4LnByZXZZW20tMV0mJnRoaXMuZ3JvdXBDdHgucHJldllbbS0xXS5sZW5ndGgpZm9yKHZhciBTPTE7UzxBO1MrKyl7dmFyIEM7aWYoIWlzTmFOKG51bGw9PT0oQz10aGlzLmdyb3VwQ3R4LnByZXZZW20tU10pfHx2b2lkIDA9PT1DP3ZvaWQgMDpDW2ddKSl7az10aGlzLmdyb3VwQ3R4LnByZXZZW20tU11bZ107YnJlYWt9fWZvcih2YXIgTD0xO0w8QTtMKyspe3ZhciBQLEk7aWYoKG51bGw9PT0oUD10aGlzLmdyb3VwQ3R4LnByZXZZVmFsW20tTF0pfHx2b2lkIDA9PT1QP3ZvaWQgMDpQW2ddKTwwKXt3PXRoaXMuc2VyaWVzW2RdW2ddPj0wP2stYisyKih0aGlzLmlzUmV2ZXJzZWQ/YjowKTprO2JyZWFrfWlmKChudWxsPT09KEk9dGhpcy5ncm91cEN0eC5wcmV2WVZhbFttLUxdKXx8dm9pZCAwPT09ST92b2lkIDA6SVtnXSk+PTApe3c9dGhpcy5zZXJpZXNbZF1bZ10+PTA/azprK2ItMioodGhpcy5pc1JldmVyc2VkP2I6MCk7YnJlYWt9fXZvaWQgMD09PXcmJih3PWMuZ2xvYmFscy5ncmlkSGVpZ2h0KSxmPW51bGwhPT0oeT10aGlzLmdyb3VwQ3R4LnByZXZZRlswXSkmJnZvaWQgMCE9PXkmJnkuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiAwPT09dH0pKSYmdGhpcy5ncm91cEN0eC5wcmV2WUYuc2xpY2UoMSxtKS5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiBpc05hTih0KX0pKX0pKT9vOnd9ZWxzZSBmPW87YT10aGlzLnNlcmllc1tkXVtnXT9mLXRoaXMuc2VyaWVzW2RdW2ddL3RoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0rMioodGhpcy5pc1JldmVyc2VkP3RoaXMuc2VyaWVzW2RdW2ddL3RoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF06MCk6Zjt2YXIgVD10aGlzLmJhckhlbHBlcnMuZ2V0Q29sdW1uUGF0aHMoe2JhclhQb3NpdGlvbjp4LGJhcldpZHRoOnIseTE6Zix5MjphLHlSYXRpbzp0aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdLHN0cm9rZVdpZHRoOnRoaXMuc3Ryb2tlV2lkdGgsc2VyaWVzOnRoaXMuc2VyaWVzLHNlcmllc0dyb3VwOmwscmVhbEluZGV4OmUucmVhbEluZGV4LGk6ZCxqOmcsdzpjfSk7cmV0dXJuIHRoaXMuYmFySGVscGVycy5iYXJCYWNrZ3JvdW5kKHtiYzp1LGo6ZyxpOmQseDE6eCx4MjpyLGVsU2VyaWVzOmh9KSxpKz1zLHtwYXRoVG86VC5wYXRoVG8scGF0aEZyb206VC5wYXRoRnJvbSxnb2FsWTp0aGlzLmJhckhlbHBlcnMuZ2V0R29hbFZhbHVlcyhcInlcIixudWxsLG8sZCxnKSxiYXJYUG9zaXRpb246eCx4OmMuZ2xvYmFscy5pc1hOdW1lcmljP2ktczppLHk6YX19fV0pLHN9KCksa3Q9ZnVuY3Rpb24odCl7bihzLHl0KTt2YXIgaT1kKHMpO2Z1bmN0aW9uIHMoKXtyZXR1cm4gYSh0aGlzLHMpLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiByKHMsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCxpLGEpe3ZhciBzPXRoaXMscj10aGlzLncsbz1uZXcgbSh0aGlzLmN0eCksbj1yLmdsb2JhbHMuY29tYm9DaGFydHM/aTpyLmNvbmZpZy5jaGFydC50eXBlLGw9bmV3IFIodGhpcy5jdHgpO3RoaXMuY2FuZGxlc3RpY2tPcHRpb25zPXRoaXMudy5jb25maWcucGxvdE9wdGlvbnMuY2FuZGxlc3RpY2ssdGhpcy5ib3hPcHRpb25zPXRoaXMudy5jb25maWcucGxvdE9wdGlvbnMuYm94UGxvdCx0aGlzLmlzSG9yaXpvbnRhbD1yLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbDt2YXIgaD1uZXcgeSh0aGlzLmN0eCxyKTt0PWguZ2V0TG9nU2VyaWVzKHQpLHRoaXMuc2VyaWVzPXQsdGhpcy55UmF0aW89aC5nZXRMb2dZUmF0aW9zKHRoaXMueVJhdGlvKSx0aGlzLmJhckhlbHBlcnMuaW5pdFZhcmlhYmxlcyh0KTtmb3IodmFyIGM9by5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLVwiLmNvbmNhdChuLFwiLXNlcmllcyBhcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzXCIpfSksZD1mdW5jdGlvbihpKXtzLmlzQm94UGxvdD1cImJveFBsb3RcIj09PXIuY29uZmlnLmNoYXJ0LnR5cGV8fFwiYm94UGxvdFwiPT09ci5jb25maWcuc2VyaWVzW2ldLnR5cGU7dmFyIG4saCxkLGcsdT12b2lkIDAscD12b2lkIDAsZj1bXSxiPVtdLHY9ci5nbG9iYWxzLmNvbWJvQ2hhcnRzP2FbaV06aSxtPW8uZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXNcIixzZXJpZXNOYW1lOnguZXNjYXBlU3RyaW5nKHIuZ2xvYmFscy5zZXJpZXNOYW1lc1t2XSkscmVsOmkrMSxcImRhdGE6cmVhbEluZGV4XCI6dn0pO3MuY3R4LnNlcmllcy5hZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzKG0sdiksdFtpXS5sZW5ndGg+MCYmKHMudmlzaWJsZUk9cy52aXNpYmxlSSsxKTt2YXIgeSx3O3MueVJhdGlvLmxlbmd0aD4xJiYocy55YXhpc0luZGV4PXYpO3ZhciBrPXMuYmFySGVscGVycy5pbml0aWFsUG9zaXRpb25zKCk7cD1rLnkseT1rLmJhckhlaWdodCxoPWsueURpdmlzaW9uLGc9ay56ZXJvVyx1PWsueCx3PWsuYmFyV2lkdGgsbj1rLnhEaXZpc2lvbixkPWsuemVyb0gsYi5wdXNoKHUrdy8yKTtmb3IodmFyIEE9by5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIixcImRhdGE6cmVhbEluZGV4XCI6dn0pLFM9ZnVuY3Rpb24oYSl7dmFyIG89cy5iYXJIZWxwZXJzLmdldFN0cm9rZVdpZHRoKGksYSx2KSxjPW51bGwseD17aW5kZXhlczp7aTppLGo6YSxyZWFsSW5kZXg6dn0seDp1LHk6cCxzdHJva2VXaWR0aDpvLGVsU2VyaWVzOm19O2M9cy5pc0hvcml6b250YWw/cy5kcmF3SG9yaXpvbnRhbEJveFBhdGhzKGUoZSh7fSx4KSx7fSx7eURpdmlzaW9uOmgsYmFySGVpZ2h0OnksemVyb1c6Z30pKTpzLmRyYXdWZXJ0aWNhbEJveFBhdGhzKGUoZSh7fSx4KSx7fSx7eERpdmlzaW9uOm4sYmFyV2lkdGg6dyx6ZXJvSDpkfSkpLHA9Yy55LHU9Yy54LGE+MCYmYi5wdXNoKHUrdy8yKSxmLnB1c2gocCksYy5wYXRoVG8uZm9yRWFjaCgoZnVuY3Rpb24oZSxuKXt2YXIgaD0hcy5pc0JveFBsb3QmJnMuY2FuZGxlc3RpY2tPcHRpb25zLndpY2sudXNlRmlsbENvbG9yP2MuY29sb3Jbbl06ci5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbaV0sZD1sLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6dixkYXRhUG9pbnRJbmRleDphLGNvbG9yOmMuY29sb3Jbbl0sdmFsdWU6dFtpXVthXX0pO3MucmVuZGVyU2VyaWVzKHtyZWFsSW5kZXg6dixwYXRoRmlsbDpkLGxpbmVGaWxsOmgsajphLGk6aSxwYXRoRnJvbTpjLnBhdGhGcm9tLHBhdGhUbzplLHN0cm9rZVdpZHRoOm8sZWxTZXJpZXM6bSx4OnUseTpwLHNlcmllczp0LGJhckhlaWdodDp5LGJhcldpZHRoOncsZWxEYXRhTGFiZWxzV3JhcDpBLHZpc2libGVTZXJpZXM6cy52aXNpYmxlSSx0eXBlOnIuY29uZmlnLmNoYXJ0LnR5cGV9KX0pKX0sQz0wO0M8ci5nbG9iYWxzLmRhdGFQb2ludHM7QysrKVMoQyk7ci5nbG9iYWxzLnNlcmllc1h2YWx1ZXNbdl09YixyLmdsb2JhbHMuc2VyaWVzWXZhbHVlc1t2XT1mLGMuYWRkKG0pfSxnPTA7Zzx0Lmxlbmd0aDtnKyspZChnKTtyZXR1cm4gY319LHtrZXk6XCJkcmF3VmVydGljYWxCb3hQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhlcyxpPXQueDt0Lnk7dmFyIGE9dC54RGl2aXNpb24scz10LmJhcldpZHRoLHI9dC56ZXJvSCxvPXQuc3Ryb2tlV2lkdGgsbj10aGlzLncsbD1uZXcgbSh0aGlzLmN0eCksaD1lLmksYz1lLmosZD0hMCxnPW4uY29uZmlnLnBsb3RPcHRpb25zLmNhbmRsZXN0aWNrLmNvbG9ycy51cHdhcmQsdT1uLmNvbmZpZy5wbG90T3B0aW9ucy5jYW5kbGVzdGljay5jb2xvcnMuZG93bndhcmQscD1cIlwiO3RoaXMuaXNCb3hQbG90JiYocD1bdGhpcy5ib3hPcHRpb25zLmNvbG9ycy5sb3dlcix0aGlzLmJveE9wdGlvbnMuY29sb3JzLnVwcGVyXSk7dmFyIGY9dGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSx4PWUucmVhbEluZGV4LGI9dGhpcy5nZXRPSExDVmFsdWUoeCxjKSx2PXIseT1yO2Iubz5iLmMmJihkPSExKTt2YXIgdz1NYXRoLm1pbihiLm8sYi5jKSxrPU1hdGgubWF4KGIubyxiLmMpLEE9Yi5tO24uZ2xvYmFscy5pc1hOdW1lcmljJiYoaT0obi5nbG9iYWxzLnNlcmllc1hbeF1bY10tbi5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvLXMvMik7dmFyIFM9aStzKnRoaXMudmlzaWJsZUk7dm9pZCAwPT09dGhpcy5zZXJpZXNbaF1bY118fG51bGw9PT10aGlzLnNlcmllc1toXVtjXT8odz1yLGs9cik6KHc9ci13L2Ysaz1yLWsvZix2PXItYi5oL2YseT1yLWIubC9mLEE9ci1iLm0vZik7dmFyIEM9bC5tb3ZlKFMsciksTD1sLm1vdmUoUytzLzIsdyk7cmV0dXJuIG4uZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYoTD10aGlzLmdldFByZXZpb3VzUGF0aCh4LGMsITApKSxDPXRoaXMuaXNCb3hQbG90P1tsLm1vdmUoUyx3KStsLmxpbmUoUytzLzIsdykrbC5saW5lKFMrcy8yLHYpK2wubGluZShTK3MvNCx2KStsLmxpbmUoUytzLXMvNCx2KStsLmxpbmUoUytzLzIsdikrbC5saW5lKFMrcy8yLHcpK2wubGluZShTK3MsdykrbC5saW5lKFMrcyxBKStsLmxpbmUoUyxBKStsLmxpbmUoUyx3K28vMiksbC5tb3ZlKFMsQSkrbC5saW5lKFMrcyxBKStsLmxpbmUoUytzLGspK2wubGluZShTK3MvMixrKStsLmxpbmUoUytzLzIseSkrbC5saW5lKFMrcy1zLzQseSkrbC5saW5lKFMrcy80LHkpK2wubGluZShTK3MvMix5KStsLmxpbmUoUytzLzIsaykrbC5saW5lKFMsaykrbC5saW5lKFMsQSkrXCJ6XCJdOltsLm1vdmUoUyxrKStsLmxpbmUoUytzLzIsaykrbC5saW5lKFMrcy8yLHYpK2wubGluZShTK3MvMixrKStsLmxpbmUoUytzLGspK2wubGluZShTK3MsdykrbC5saW5lKFMrcy8yLHcpK2wubGluZShTK3MvMix5KStsLmxpbmUoUytzLzIsdykrbC5saW5lKFMsdykrbC5saW5lKFMsay1vLzIpXSxMKz1sLm1vdmUoUyx3KSxuLmdsb2JhbHMuaXNYTnVtZXJpY3x8KGkrPWEpLHtwYXRoVG86QyxwYXRoRnJvbTpMLHg6aSx5OmssYmFyWFBvc2l0aW9uOlMsY29sb3I6dGhpcy5pc0JveFBsb3Q/cDpkP1tnXTpbdV19fX0se2tleTpcImRyYXdIb3Jpem9udGFsQm94UGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4ZXM7dC54O3ZhciBpPXQueSxhPXQueURpdmlzaW9uLHM9dC5iYXJIZWlnaHQscj10Lnplcm9XLG89dC5zdHJva2VXaWR0aCxuPXRoaXMudyxsPW5ldyBtKHRoaXMuY3R4KSxoPWUuaSxjPWUuaixkPXRoaXMuYm94T3B0aW9ucy5jb2xvcnMubG93ZXI7dGhpcy5pc0JveFBsb3QmJihkPVt0aGlzLmJveE9wdGlvbnMuY29sb3JzLmxvd2VyLHRoaXMuYm94T3B0aW9ucy5jb2xvcnMudXBwZXJdKTt2YXIgZz10aGlzLmludmVydGVkWVJhdGlvLHU9ZS5yZWFsSW5kZXgscD10aGlzLmdldE9ITENWYWx1ZSh1LGMpLGY9cix4PXIsYj1NYXRoLm1pbihwLm8scC5jKSx2PU1hdGgubWF4KHAubyxwLmMpLHk9cC5tO24uZ2xvYmFscy5pc1hOdW1lcmljJiYoaT0obi5nbG9iYWxzLnNlcmllc1hbdV1bY10tbi5nbG9iYWxzLm1pblgpL3RoaXMuaW52ZXJ0ZWRYUmF0aW8tcy8yKTt2YXIgdz1pK3MqdGhpcy52aXNpYmxlSTt2b2lkIDA9PT10aGlzLnNlcmllc1toXVtjXXx8bnVsbD09PXRoaXMuc2VyaWVzW2hdW2NdPyhiPXIsdj1yKTooYj1yK2IvZyx2PXIrdi9nLGY9citwLmgvZyx4PXIrcC5sL2cseT1yK3AubS9nKTt2YXIgaz1sLm1vdmUocix3KSxBPWwubW92ZShiLHcrcy8yKTtyZXR1cm4gbi5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoPjAmJihBPXRoaXMuZ2V0UHJldmlvdXNQYXRoKHUsYywhMCkpLGs9W2wubW92ZShiLHcpK2wubGluZShiLHcrcy8yKStsLmxpbmUoZix3K3MvMikrbC5saW5lKGYsdytzLzItcy80KStsLmxpbmUoZix3K3MvMitzLzQpK2wubGluZShmLHcrcy8yKStsLmxpbmUoYix3K3MvMikrbC5saW5lKGIsdytzKStsLmxpbmUoeSx3K3MpK2wubGluZSh5LHcpK2wubGluZShiK28vMix3KSxsLm1vdmUoeSx3KStsLmxpbmUoeSx3K3MpK2wubGluZSh2LHcrcykrbC5saW5lKHYsdytzLzIpK2wubGluZSh4LHcrcy8yKStsLmxpbmUoeCx3K3Mtcy80KStsLmxpbmUoeCx3K3MvNCkrbC5saW5lKHgsdytzLzIpK2wubGluZSh2LHcrcy8yKStsLmxpbmUodix3KStsLmxpbmUoeSx3KStcInpcIl0sQSs9bC5tb3ZlKGIsdyksbi5nbG9iYWxzLmlzWE51bWVyaWN8fChpKz1hKSx7cGF0aFRvOmsscGF0aEZyb206QSx4OnYseTppLGJhcllQb3NpdGlvbjp3LGNvbG9yOmR9fX0se2tleTpcImdldE9ITENWYWx1ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O3JldHVybntvOnRoaXMuaXNCb3hQbG90P2kuZ2xvYmFscy5zZXJpZXNDYW5kbGVIW3RdW2VdOmkuZ2xvYmFscy5zZXJpZXNDYW5kbGVPW3RdW2VdLGg6dGhpcy5pc0JveFBsb3Q/aS5nbG9iYWxzLnNlcmllc0NhbmRsZU9bdF1bZV06aS5nbG9iYWxzLnNlcmllc0NhbmRsZUhbdF1bZV0sbTppLmdsb2JhbHMuc2VyaWVzQ2FuZGxlTVt0XVtlXSxsOnRoaXMuaXNCb3hQbG90P2kuZ2xvYmFscy5zZXJpZXNDYW5kbGVDW3RdW2VdOmkuZ2xvYmFscy5zZXJpZXNDYW5kbGVMW3RdW2VdLGM6dGhpcy5pc0JveFBsb3Q/aS5nbG9iYWxzLnNlcmllc0NhbmRsZUxbdF1bZV06aS5nbG9iYWxzLnNlcmllc0NhbmRsZUNbdF1bZV19fX1dKSxzfSgpLEF0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJjaGVja0NvbG9yUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPSExLGk9dC5jb25maWcucGxvdE9wdGlvbnNbdC5jb25maWcuY2hhcnQudHlwZV07cmV0dXJuIGkuY29sb3JTY2FsZS5yYW5nZXMubGVuZ3RoPjAmJmkuY29sb3JTY2FsZS5yYW5nZXMubWFwKChmdW5jdGlvbih0LGkpe3QuZnJvbTw9MCYmKGU9ITApfSkpLGV9fSx7a2V5OlwiZ2V0U2hhZGVDb2xvclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPXRoaXMudyxyPTEsbz1zLmNvbmZpZy5wbG90T3B0aW9uc1t0XS5zaGFkZUludGVuc2l0eSxuPXRoaXMuZGV0ZXJtaW5lQ29sb3IodCxlLGkpO3MuZ2xvYmFscy5oYXNOZWdzfHxhP3I9cy5jb25maWcucGxvdE9wdGlvbnNbdF0ucmV2ZXJzZU5lZ2F0aXZlU2hhZGU/bi5wZXJjZW50PDA/bi5wZXJjZW50LzEwMCooMS4yNSpvKTooMS1uLnBlcmNlbnQvMTAwKSooMS4yNSpvKTpuLnBlcmNlbnQ8PTA/MS0oMStuLnBlcmNlbnQvMTAwKSpvOigxLW4ucGVyY2VudC8xMDApKm86KHI9MS1uLnBlcmNlbnQvMTAwLFwidHJlZW1hcFwiPT09dCYmKHI9KDEtbi5wZXJjZW50LzEwMCkqKDEuMjUqbykpKTt2YXIgbD1uLmNvbG9yLGg9bmV3IHg7cmV0dXJuIHMuY29uZmlnLnBsb3RPcHRpb25zW3RdLmVuYWJsZVNoYWRlcyYmKGw9XCJkYXJrXCI9PT10aGlzLncuY29uZmlnLnRoZW1lLm1vZGU/eC5oZXhUb1JnYmEoaC5zaGFkZUNvbG9yKC0xKnIsbi5jb2xvcikscy5jb25maWcuZmlsbC5vcGFjaXR5KTp4LmhleFRvUmdiYShoLnNoYWRlQ29sb3IocixuLmNvbG9yKSxzLmNvbmZpZy5maWxsLm9wYWNpdHkpKSx7Y29sb3I6bCxjb2xvclByb3BzOm59fX0se2tleTpcImRldGVybWluZUNvbG9yXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudyxzPWEuZ2xvYmFscy5zZXJpZXNbZV1baV0scj1hLmNvbmZpZy5wbG90T3B0aW9uc1t0XSxvPXIuY29sb3JTY2FsZS5pbnZlcnNlP2k6ZTtyLmRpc3RyaWJ1dGVkJiZcInRyZWVtYXBcIj09PWEuY29uZmlnLmNoYXJ0LnR5cGUmJihvPWkpO3ZhciBuPWEuZ2xvYmFscy5jb2xvcnNbb10sbD1udWxsLGg9TWF0aC5taW4uYXBwbHkoTWF0aCx1KGEuZ2xvYmFscy5zZXJpZXNbZV0pKSxjPU1hdGgubWF4LmFwcGx5KE1hdGgsdShhLmdsb2JhbHMuc2VyaWVzW2VdKSk7ci5kaXN0cmlidXRlZHx8XCJoZWF0bWFwXCIhPT10fHwoaD1hLmdsb2JhbHMubWluWSxjPWEuZ2xvYmFscy5tYXhZKSx2b2lkIDAhPT1yLmNvbG9yU2NhbGUubWluJiYoaD1yLmNvbG9yU2NhbGUubWluPGEuZ2xvYmFscy5taW5ZP3IuY29sb3JTY2FsZS5taW46YS5nbG9iYWxzLm1pblksYz1yLmNvbG9yU2NhbGUubWF4PmEuZ2xvYmFscy5tYXhZP3IuY29sb3JTY2FsZS5tYXg6YS5nbG9iYWxzLm1heFkpO3ZhciBkPU1hdGguYWJzKGMpK01hdGguYWJzKGgpLGc9MTAwKnMvKDA9PT1kP2QtMWUtNjpkKTtyLmNvbG9yU2NhbGUucmFuZ2VzLmxlbmd0aD4wJiZyLmNvbG9yU2NhbGUucmFuZ2VzLm1hcCgoZnVuY3Rpb24odCxlKXtpZihzPj10LmZyb20mJnM8PXQudG8pe249dC5jb2xvcixsPXQuZm9yZUNvbG9yP3QuZm9yZUNvbG9yOm51bGwsaD10LmZyb20sYz10LnRvO3ZhciBpPU1hdGguYWJzKGMpK01hdGguYWJzKGgpO2c9MTAwKnMvKDA9PT1pP2ktMWUtNjppKX19KSk7cmV0dXJue2NvbG9yOm4sZm9yZUNvbG9yOmwscGVyY2VudDpnfX19LHtrZXk6XCJjYWxjdWxhdGVEYXRhTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC50ZXh0LGk9dC54LGE9dC55LHM9dC5pLHI9dC5qLG89dC5jb2xvclByb3BzLG49dC5mb250U2l6ZSxsPXRoaXMudy5jb25maWcuZGF0YUxhYmVscyxoPW5ldyBtKHRoaXMuY3R4KSxjPW5ldyBPKHRoaXMuY3R4KSxkPW51bGw7aWYobC5lbmFibGVkKXtkPWguZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhLWxhYmVsc1wifSk7dmFyIGc9bC5vZmZzZXRYLHU9bC5vZmZzZXRZLHA9aStnLGY9YStwYXJzZUZsb2F0KGwuc3R5bGUuZm9udFNpemUpLzMrdTtjLnBsb3REYXRhTGFiZWxzVGV4dCh7eDpwLHk6Zix0ZXh0OmUsaTpzLGo6cixjb2xvcjpvLmZvcmVDb2xvcixwYXJlbnQ6ZCxmb250U2l6ZTpuLGRhdGFMYWJlbHNDb25maWc6bH0pfXJldHVybiBkfX0se2tleTpcImFkZExpc3RlbmVyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBtKHRoaXMuY3R4KTt0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIixlLnBhdGhNb3VzZUVudGVyLmJpbmQodGhpcyx0KSksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsZS5wYXRoTW91c2VMZWF2ZS5iaW5kKHRoaXMsdCkpLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsZS5wYXRoTW91c2VEb3duLmJpbmQodGhpcyx0KSl9fV0pLHR9KCksU3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnhSYXRpbz1pLnhSYXRpbyx0aGlzLnlSYXRpbz1pLnlSYXRpbyx0aGlzLmR5bmFtaWNBbmltPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLHRoaXMuaGVscGVycz1uZXcgQXQoZSksdGhpcy5yZWN0UmFkaXVzPXRoaXMudy5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5yYWRpdXMsdGhpcy5zdHJva2VXaWR0aD10aGlzLncuY29uZmlnLnN0cm9rZS5zaG93P3RoaXMudy5jb25maWcuc3Ryb2tlLndpZHRoOjB9cmV0dXJuIHIodCxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCksYT1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtaGVhdG1hcFwifSk7YS5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFza1wiLmNvbmNhdChlLmdsb2JhbHMuY3VpZCxcIilcIikpO3ZhciBzPWUuZ2xvYmFscy5ncmlkV2lkdGgvZS5nbG9iYWxzLmRhdGFQb2ludHMscj1lLmdsb2JhbHMuZ3JpZEhlaWdodC9lLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCxvPTAsbj0hMTt0aGlzLm5lZ1JhbmdlPXRoaXMuaGVscGVycy5jaGVja0NvbG9yUmFuZ2UoKTt2YXIgbD10LnNsaWNlKCk7ZS5jb25maWcueWF4aXNbMF0ucmV2ZXJzZWQmJihuPSEwLGwucmV2ZXJzZSgpKTtmb3IodmFyIGg9bj8wOmwubGVuZ3RoLTE7bj9oPGwubGVuZ3RoOmg+PTA7bj9oKys6aC0tKXt2YXIgYz1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzIGFwZXhjaGFydHMtaGVhdG1hcC1zZXJpZXNcIixzZXJpZXNOYW1lOnguZXNjYXBlU3RyaW5nKGUuZ2xvYmFscy5zZXJpZXNOYW1lc1toXSkscmVsOmgrMSxcImRhdGE6cmVhbEluZGV4XCI6aH0pO2lmKHRoaXMuY3R4LnNlcmllcy5hZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzKGMsaCksZS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgZD1lLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93O25ldyB2KHRoaXMuY3R4KS5kcm9wU2hhZG93KGMsZCxoKX1mb3IodmFyIGc9MCx1PWUuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAuc2hhZGVJbnRlbnNpdHkscD0wO3A8bFtoXS5sZW5ndGg7cCsrKXt2YXIgZj10aGlzLmhlbHBlcnMuZ2V0U2hhZGVDb2xvcihlLmNvbmZpZy5jaGFydC50eXBlLGgscCx0aGlzLm5lZ1JhbmdlKSxiPWYuY29sb3IseT1mLmNvbG9yUHJvcHM7aWYoXCJpbWFnZVwiPT09ZS5jb25maWcuZmlsbC50eXBlKWI9bmV3IFIodGhpcy5jdHgpLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6aCxkYXRhUG9pbnRJbmRleDpwLG9wYWNpdHk6ZS5nbG9iYWxzLmhhc05lZ3M/eS5wZXJjZW50PDA/MS0oMSt5LnBlcmNlbnQvMTAwKTp1K3kucGVyY2VudC8xMDA6eS5wZXJjZW50LzEwMCxwYXR0ZXJuSUQ6eC5yYW5kb21JZCgpLHdpZHRoOmUuY29uZmlnLmZpbGwuaW1hZ2Uud2lkdGg/ZS5jb25maWcuZmlsbC5pbWFnZS53aWR0aDpzLGhlaWdodDplLmNvbmZpZy5maWxsLmltYWdlLmhlaWdodD9lLmNvbmZpZy5maWxsLmltYWdlLmhlaWdodDpyfSk7dmFyIHc9dGhpcy5yZWN0UmFkaXVzLGs9aS5kcmF3UmVjdChnLG8scyxyLHcpO2lmKGsuYXR0cih7Y3g6ZyxjeTpvfSksay5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWhlYXRtYXAtcmVjdFwiKSxjLmFkZChrKSxrLmF0dHIoe2ZpbGw6YixpOmgsaW5kZXg6aCxqOnAsdmFsOmxbaF1bcF0sXCJzdHJva2Utd2lkdGhcIjp0aGlzLnN0cm9rZVdpZHRoLHN0cm9rZTplLmNvbmZpZy5wbG90T3B0aW9ucy5oZWF0bWFwLnVzZUZpbGxDb2xvckFzU3Ryb2tlP2I6ZS5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbMF0sY29sb3I6Yn0pLHRoaXMuaGVscGVycy5hZGRMaXN0ZW5lcnMoayksZS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkJiYhZS5nbG9iYWxzLmRhdGFDaGFuZ2VkKXt2YXIgQT0xO2UuZ2xvYmFscy5yZXNpemVkfHwoQT1lLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkKSx0aGlzLmFuaW1hdGVIZWF0TWFwKGssZyxvLHMscixBKX1pZihlLmdsb2JhbHMuZGF0YUNoYW5nZWQpe3ZhciBTPTE7aWYodGhpcy5keW5hbWljQW5pbS5lbmFibGVkJiZlLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZSl7Uz10aGlzLmR5bmFtaWNBbmltLnNwZWVkO3ZhciBDPWUuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2hdJiZlLmdsb2JhbHMucHJldmlvdXNQYXRoc1toXVtwXSYmZS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbaF1bcF0uY29sb3I7Q3x8KEM9XCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDApXCIpLHRoaXMuYW5pbWF0ZUhlYXRDb2xvcihrLHguaXNDb2xvckhleChDKT9DOngucmdiMmhleChDKSx4LmlzQ29sb3JIZXgoYik/Yjp4LnJnYjJoZXgoYiksUyl9fXZhciBMPSgwLGUuY29uZmlnLmRhdGFMYWJlbHMuZm9ybWF0dGVyKShlLmdsb2JhbHMuc2VyaWVzW2hdW3BdLHt2YWx1ZTplLmdsb2JhbHMuc2VyaWVzW2hdW3BdLHNlcmllc0luZGV4OmgsZGF0YVBvaW50SW5kZXg6cCx3OmV9KSxQPXRoaXMuaGVscGVycy5jYWxjdWxhdGVEYXRhTGFiZWxzKHt0ZXh0OkwseDpnK3MvMix5Om8rci8yLGk6aCxqOnAsY29sb3JQcm9wczp5LHNlcmllczpsfSk7bnVsbCE9PVAmJmMuYWRkKFApLGcrPXN9bys9cixhLmFkZChjKX12YXIgST1lLmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQuc2xpY2UoKTtlLmNvbmZpZy55YXhpc1swXS5yZXZlcnNlZD9JLnVuc2hpZnQoXCJcIik6SS5wdXNoKFwiXCIpLGUuZ2xvYmFscy55QXhpc1NjYWxlWzBdLnJlc3VsdD1JO3ZhciBUPWUuZ2xvYmFscy5ncmlkSGVpZ2h0L2UuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO3JldHVybiBlLmNvbmZpZy55YXhpc1swXS5sYWJlbHMub2Zmc2V0WT0tVC8yLGF9fSx7a2V5OlwiYW5pbWF0ZUhlYXRNYXBcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscil7dmFyIG89bmV3IGIodGhpcy5jdHgpO28uYW5pbWF0ZVJlY3QodCx7eDplK2EvMix5Omkrcy8yLHdpZHRoOjAsaGVpZ2h0OjB9LHt4OmUseTppLHdpZHRoOmEsaGVpZ2h0OnN9LHIsKGZ1bmN0aW9uKCl7by5hbmltYXRpb25Db21wbGV0ZWQodCl9KSl9fSx7a2V5OlwiYW5pbWF0ZUhlYXRDb2xvclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3QuYXR0cih7ZmlsbDplfSkuYW5pbWF0ZShhKS5hdHRyKHtmaWxsOml9KX19XSksdH0oKSxDdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1lBeGlzVGV4dHNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz10aGlzLncscj1zLmNvbmZpZy55YXhpc1swXSxvPXMuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzWzBdO3JldHVybiBuZXcgbSh0aGlzLmN0eCkuZHJhd1RleHQoe3g6dCtyLmxhYmVscy5vZmZzZXRYLHk6ZStyLmxhYmVscy5vZmZzZXRZLHRleHQ6byhhLGkpLHRleHRBbmNob3I6XCJtaWRkbGVcIixmb250U2l6ZTpyLmxhYmVscy5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OnIubGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksZm9yZUNvbG9yOkFycmF5LmlzQXJyYXkoci5sYWJlbHMuc3R5bGUuY29sb3JzKT9yLmxhYmVscy5zdHlsZS5jb2xvcnNbaV06ci5sYWJlbHMuc3R5bGUuY29sb3JzfSl9fV0pLHR9KCksTHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnc7dmFyIGk9dGhpcy53O3RoaXMuY2hhcnRUeXBlPXRoaXMudy5jb25maWcuY2hhcnQudHlwZSx0aGlzLmluaXRpYWxBbmltPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkLHRoaXMuZHluYW1pY0FuaW09dGhpcy5pbml0aWFsQW5pbSYmdGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCx0aGlzLmFuaW1CZWdpbkFycj1bMF0sdGhpcy5hbmltRHVyPTAsdGhpcy5kb251dERhdGFMYWJlbHM9dGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZG9udXQubGFiZWxzLHRoaXMubGluZUNvbG9yQXJyPXZvaWQgMCE9PWkuZ2xvYmFscy5zdHJva2UuY29sb3JzP2kuZ2xvYmFscy5zdHJva2UuY29sb3JzOmkuZ2xvYmFscy5jb2xvcnMsdGhpcy5kZWZhdWx0U2l6ZT1NYXRoLm1pbihpLmdsb2JhbHMuZ3JpZFdpZHRoLGkuZ2xvYmFscy5ncmlkSGVpZ2h0KSx0aGlzLmNlbnRlclk9dGhpcy5kZWZhdWx0U2l6ZS8yLHRoaXMuY2VudGVyWD1pLmdsb2JhbHMuZ3JpZFdpZHRoLzIsXCJyYWRpYWxCYXJcIj09PWkuY29uZmlnLmNoYXJ0LnR5cGU/dGhpcy5mdWxsQW5nbGU9MzYwOnRoaXMuZnVsbEFuZ2xlPU1hdGguYWJzKGkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5lbmRBbmdsZS1pLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuc3RhcnRBbmdsZSksdGhpcy5pbml0aWFsQW5nbGU9aS5jb25maWcucGxvdE9wdGlvbnMucGllLnN0YXJ0QW5nbGUldGhpcy5mdWxsQW5nbGUsaS5nbG9iYWxzLnJhZGlhbFNpemU9dGhpcy5kZWZhdWx0U2l6ZS8yLjA1LWkuY29uZmlnLnN0cm9rZS53aWR0aC0oaS5jb25maWcuY2hhcnQuc3BhcmtsaW5lLmVuYWJsZWQ/MDppLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmJsdXIpLHRoaXMuZG9udXRTaXplPWkuZ2xvYmFscy5yYWRpYWxTaXplKnBhcnNlSW50KGkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kb251dC5zaXplLDEwKS8xMDAsdGhpcy5tYXhZPTAsdGhpcy5zbGljZUxhYmVscz1bXSx0aGlzLnNsaWNlU2l6ZXM9W10sdGhpcy5wcmV2U2VjdG9yQW5nbGVBcnI9W119cmV0dXJuIHIodCxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53LGE9bmV3IG0odGhpcy5jdHgpO2lmKHRoaXMucmV0PWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1waWVcIn0pLGkuZ2xvYmFscy5ub0RhdGEpcmV0dXJuIHRoaXMucmV0O2Zvcih2YXIgcz0wLHI9MDtyPHQubGVuZ3RoO3IrKylzKz14Lm5lZ1RvWmVybyh0W3JdKTt2YXIgbz1bXSxuPWEuZ3JvdXAoKTswPT09cyYmKHM9MWUtNSksdC5mb3JFYWNoKChmdW5jdGlvbih0KXtlLm1heFk9TWF0aC5tYXgoZS5tYXhZLHQpfSkpLGkuY29uZmlnLnlheGlzWzBdLm1heCYmKHRoaXMubWF4WT1pLmNvbmZpZy55YXhpc1swXS5tYXgpLFwiYmFja1wiPT09aS5jb25maWcuZ3JpZC5wb3NpdGlvbiYmXCJwb2xhckFyZWFcIj09PXRoaXMuY2hhcnRUeXBlJiZ0aGlzLmRyYXdQb2xhckVsZW1lbnRzKHRoaXMucmV0KTtmb3IodmFyIGw9MDtsPHQubGVuZ3RoO2wrKyl7dmFyIGg9dGhpcy5mdWxsQW5nbGUqeC5uZWdUb1plcm8odFtsXSkvcztvLnB1c2goaCksXCJwb2xhckFyZWFcIj09PXRoaXMuY2hhcnRUeXBlPyhvW2xdPXRoaXMuZnVsbEFuZ2xlL3QubGVuZ3RoLHRoaXMuc2xpY2VTaXplcy5wdXNoKGkuZ2xvYmFscy5yYWRpYWxTaXplKnRbbF0vdGhpcy5tYXhZKSk6dGhpcy5zbGljZVNpemVzLnB1c2goaS5nbG9iYWxzLnJhZGlhbFNpemUpfWlmKGkuZ2xvYmFscy5kYXRhQ2hhbmdlZCl7Zm9yKHZhciBjLGQ9MCxnPTA7ZzxpLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg7ZysrKWQrPXgubmVnVG9aZXJvKGkuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2ddKTtmb3IodmFyIHU9MDt1PGkuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aDt1KyspYz10aGlzLmZ1bGxBbmdsZSp4Lm5lZ1RvWmVybyhpLmdsb2JhbHMucHJldmlvdXNQYXRoc1t1XSkvZCx0aGlzLnByZXZTZWN0b3JBbmdsZUFyci5wdXNoKGMpfXRoaXMuZG9udXRTaXplPDAmJih0aGlzLmRvbnV0U2l6ZT0wKTt2YXIgcD1pLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuY3VzdG9tU2NhbGUsZj1pLmdsb2JhbHMuZ3JpZFdpZHRoLzIsYj1pLmdsb2JhbHMuZ3JpZEhlaWdodC8yLHY9Zi1pLmdsb2JhbHMuZ3JpZFdpZHRoLzIqcCx5PWItaS5nbG9iYWxzLmdyaWRIZWlnaHQvMipwO2lmKFwiZG9udXRcIj09PXRoaXMuY2hhcnRUeXBlKXt2YXIgdz1hLmRyYXdDaXJjbGUodGhpcy5kb251dFNpemUpO3cuYXR0cih7Y3g6dGhpcy5jZW50ZXJYLGN5OnRoaXMuY2VudGVyWSxmaWxsOmkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kb251dC5iYWNrZ3JvdW5kP2kuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kb251dC5iYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIn0pLG4uYWRkKHcpfXZhciBrPXRoaXMuZHJhd0FyY3Mobyx0KTtpZih0aGlzLnNsaWNlTGFiZWxzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2suYWRkKHQpfSkpLG4uYXR0cih7dHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdCh2LFwiLCBcIikuY29uY2F0KHksXCIpIHNjYWxlKFwiKS5jb25jYXQocCxcIilcIil9KSxuLmFkZChrKSx0aGlzLnJldC5hZGQobiksdGhpcy5kb251dERhdGFMYWJlbHMuc2hvdyl7dmFyIEE9dGhpcy5yZW5kZXJJbm5lckRhdGFMYWJlbHModGhpcy5kb251dERhdGFMYWJlbHMse2hvbGxvd1NpemU6dGhpcy5kb251dFNpemUsY2VudGVyWDp0aGlzLmNlbnRlclgsY2VudGVyWTp0aGlzLmNlbnRlclksb3BhY2l0eTp0aGlzLmRvbnV0RGF0YUxhYmVscy5zaG93LHRyYW5zbGF0ZVg6dix0cmFuc2xhdGVZOnl9KTt0aGlzLnJldC5hZGQoQSl9cmV0dXJuXCJmcm9udFwiPT09aS5jb25maWcuZ3JpZC5wb3NpdGlvbiYmXCJwb2xhckFyZWFcIj09PXRoaXMuY2hhcnRUeXBlJiZ0aGlzLmRyYXdQb2xhckVsZW1lbnRzKHRoaXMucmV0KSx0aGlzLnJldH19LHtrZXk6XCJkcmF3QXJjc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9bmV3IHYodGhpcy5jdHgpLHM9bmV3IG0odGhpcy5jdHgpLHI9bmV3IFIodGhpcy5jdHgpLG89cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNsaWNlc1wifSksbj10aGlzLmluaXRpYWxBbmdsZSxsPXRoaXMuaW5pdGlhbEFuZ2xlLGg9dGhpcy5pbml0aWFsQW5nbGUsYz10aGlzLmluaXRpYWxBbmdsZTt0aGlzLnN0cm9rZVdpZHRoPWkuY29uZmlnLnN0cm9rZS5zaG93P2kuY29uZmlnLnN0cm9rZS53aWR0aDowO2Zvcih2YXIgZD0wO2Q8dC5sZW5ndGg7ZCsrKXt2YXIgZz1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzIGFwZXhjaGFydHMtcGllLXNlcmllc1wiLHNlcmllc05hbWU6eC5lc2NhcGVTdHJpbmcoaS5nbG9iYWxzLnNlcmllc05hbWVzW2RdKSxyZWw6ZCsxLFwiZGF0YTpyZWFsSW5kZXhcIjpkfSk7by5hZGQoZyksbD1jLGg9KG49aCkrdFtkXSxjPWwrdGhpcy5wcmV2U2VjdG9yQW5nbGVBcnJbZF07dmFyIHU9aDxuP3RoaXMuZnVsbEFuZ2xlK2gtbjpoLW4scD1yLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6ZCxzaXplOnRoaXMuc2xpY2VTaXplc1tkXSx2YWx1ZTplW2RdfSksZj10aGlzLmdldENoYW5nZWRQYXRoKGwsYyksYj1zLmRyYXdQYXRoKHtkOmYsc3Ryb2tlOkFycmF5LmlzQXJyYXkodGhpcy5saW5lQ29sb3JBcnIpP3RoaXMubGluZUNvbG9yQXJyW2RdOnRoaXMubGluZUNvbG9yQXJyLHN0cm9rZVdpZHRoOjAsZmlsbDpwLGZpbGxPcGFjaXR5OmkuY29uZmlnLmZpbGwub3BhY2l0eSxjbGFzc2VzOlwiYXBleGNoYXJ0cy1waWUtYXJlYSBhcGV4Y2hhcnRzLVwiLmNvbmNhdCh0aGlzLmNoYXJ0VHlwZS50b0xvd2VyQ2FzZSgpLFwiLXNsaWNlLVwiKS5jb25jYXQoZCl9KTtpZihiLmF0dHIoe2luZGV4OjAsajpkfSksYS5zZXRTZWxlY3Rpb25GaWx0ZXIoYiwwLGQpLGkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIHk9aS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdzthLmRyb3BTaGFkb3coYix5LGQpfXRoaXMuYWRkTGlzdGVuZXJzKGIsdGhpcy5kb251dERhdGFMYWJlbHMpLG0uc2V0QXR0cnMoYi5ub2RlLHtcImRhdGE6YW5nbGVcIjp1LFwiZGF0YTpzdGFydEFuZ2xlXCI6bixcImRhdGE6c3Ryb2tlV2lkdGhcIjp0aGlzLnN0cm9rZVdpZHRoLFwiZGF0YTp2YWx1ZVwiOmVbZF19KTt2YXIgdz17eDowLHk6MH07XCJwaWVcIj09PXRoaXMuY2hhcnRUeXBlfHxcInBvbGFyQXJlYVwiPT09dGhpcy5jaGFydFR5cGU/dz14LnBvbGFyVG9DYXJ0ZXNpYW4odGhpcy5jZW50ZXJYLHRoaXMuY2VudGVyWSxpLmdsb2JhbHMucmFkaWFsU2l6ZS8xLjI1K2kuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kYXRhTGFiZWxzLm9mZnNldCwobit1LzIpJXRoaXMuZnVsbEFuZ2xlKTpcImRvbnV0XCI9PT10aGlzLmNoYXJ0VHlwZSYmKHc9eC5wb2xhclRvQ2FydGVzaWFuKHRoaXMuY2VudGVyWCx0aGlzLmNlbnRlclksKGkuZ2xvYmFscy5yYWRpYWxTaXplK3RoaXMuZG9udXRTaXplKS8yK2kuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kYXRhTGFiZWxzLm9mZnNldCwobit1LzIpJXRoaXMuZnVsbEFuZ2xlKSksZy5hZGQoYik7dmFyIGs9MDtpZighdGhpcy5pbml0aWFsQW5pbXx8aS5nbG9iYWxzLnJlc2l6ZWR8fGkuZ2xvYmFscy5kYXRhQ2hhbmdlZD90aGlzLmFuaW1CZWdpbkFyci5wdXNoKDApOigwPT09KGs9dS90aGlzLmZ1bGxBbmdsZSppLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkKSYmKGs9MSksdGhpcy5hbmltRHVyPWsrdGhpcy5hbmltRHVyLHRoaXMuYW5pbUJlZ2luQXJyLnB1c2godGhpcy5hbmltRHVyKSksdGhpcy5keW5hbWljQW5pbSYmaS5nbG9iYWxzLmRhdGFDaGFuZ2VkP3RoaXMuYW5pbWF0ZVBhdGhzKGIse3NpemU6dGhpcy5zbGljZVNpemVzW2RdLGVuZEFuZ2xlOmgsc3RhcnRBbmdsZTpuLHByZXZTdGFydEFuZ2xlOmwscHJldkVuZEFuZ2xlOmMsYW5pbWF0ZVN0YXJ0aW5nUG9zOiEwLGk6ZCxhbmltQmVnaW5BcnI6dGhpcy5hbmltQmVnaW5BcnIsc2hvdWxkU2V0UHJldlBhdGhzOiEwLGR1cjppLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWR9KTp0aGlzLmFuaW1hdGVQYXRocyhiLHtzaXplOnRoaXMuc2xpY2VTaXplc1tkXSxlbmRBbmdsZTpoLHN0YXJ0QW5nbGU6bixpOmQsdG90YWxJdGVtczp0Lmxlbmd0aC0xLGFuaW1CZWdpbkFycjp0aGlzLmFuaW1CZWdpbkFycixkdXI6a30pLGkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5leHBhbmRPbkNsaWNrJiZcInBvbGFyQXJlYVwiIT09dGhpcy5jaGFydFR5cGUmJmIuY2xpY2sodGhpcy5waWVDbGlja2VkLmJpbmQodGhpcyxkKSksdm9pZCAwIT09aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1swXSYmaS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1swXS5pbmRleE9mKGQpPi0xJiZ0aGlzLnBpZUNsaWNrZWQoZCksaS5jb25maWcuZGF0YUxhYmVscy5lbmFibGVkKXt2YXIgQT13LngsUz13LnksQz0xMDAqdS90aGlzLmZ1bGxBbmdsZStcIiVcIjtpZigwIT09dSYmaS5jb25maWcucGxvdE9wdGlvbnMucGllLmRhdGFMYWJlbHMubWluQW5nbGVUb1Nob3dMYWJlbDx0W2RdKXt2YXIgTD1pLmNvbmZpZy5kYXRhTGFiZWxzLmZvcm1hdHRlcjt2b2lkIDAhPT1MJiYoQz1MKGkuZ2xvYmFscy5zZXJpZXNQZXJjZW50W2RdWzBdLHtzZXJpZXNJbmRleDpkLHc6aX0pKTt2YXIgUD1pLmdsb2JhbHMuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnNbZF0sST1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YWxhYmVsc1wifSksVD1zLmRyYXdUZXh0KHt4OkEseTpTLHRleHQ6Qyx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9udFNpemU6aS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OmkuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuZm9udEZhbWlseSxmb250V2VpZ2h0OmkuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuZm9udFdlaWdodCxmb3JlQ29sb3I6UH0pO2lmKEkuYWRkKFQpLGkuY29uZmlnLmRhdGFMYWJlbHMuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgTT1pLmNvbmZpZy5kYXRhTGFiZWxzLmRyb3BTaGFkb3c7YS5kcm9wU2hhZG93KFQsTSl9VC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXBpZS1sYWJlbFwiKSxpLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmFuaW1hdGUmJiExPT09aS5nbG9iYWxzLnJlc2l6ZWQmJihULm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtcGllLWxhYmVsLWRlbGF5XCIpLFQubm9kZS5zdHlsZS5hbmltYXRpb25EZWxheT1pLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkLzk0MCtcInNcIiksdGhpcy5zbGljZUxhYmVscy5wdXNoKEkpfX19cmV0dXJuIG99fSx7a2V5OlwiYWRkTGlzdGVuZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1uZXcgbSh0aGlzLmN0eCk7dC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsaS5wYXRoTW91c2VFbnRlci5iaW5kKHRoaXMsdCkpLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLGkucGF0aE1vdXNlTGVhdmUuYmluZCh0aGlzLHQpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIix0aGlzLnJldmVydERhdGFMYWJlbHNJbm5lci5iaW5kKHRoaXMsdC5ub2RlLGUpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLGkucGF0aE1vdXNlRG93bi5iaW5kKHRoaXMsdCkpLHRoaXMuZG9udXREYXRhTGFiZWxzLnRvdGFsLnNob3dBbHdheXN8fCh0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIix0aGlzLnByaW50RGF0YUxhYmVsc0lubmVyLmJpbmQodGhpcyx0Lm5vZGUsZSkpLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsdGhpcy5wcmludERhdGFMYWJlbHNJbm5lci5iaW5kKHRoaXMsdC5ub2RlLGUpKSl9fSx7a2V5OlwiYW5pbWF0ZVBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1lLmVuZEFuZ2xlPGUuc3RhcnRBbmdsZT90aGlzLmZ1bGxBbmdsZStlLmVuZEFuZ2xlLWUuc3RhcnRBbmdsZTplLmVuZEFuZ2xlLWUuc3RhcnRBbmdsZSxzPWEscj1lLnN0YXJ0QW5nbGUsbz1lLnN0YXJ0QW5nbGU7dm9pZCAwIT09ZS5wcmV2U3RhcnRBbmdsZSYmdm9pZCAwIT09ZS5wcmV2RW5kQW5nbGUmJihyPWUucHJldkVuZEFuZ2xlLHM9ZS5wcmV2RW5kQW5nbGU8ZS5wcmV2U3RhcnRBbmdsZT90aGlzLmZ1bGxBbmdsZStlLnByZXZFbmRBbmdsZS1lLnByZXZTdGFydEFuZ2xlOmUucHJldkVuZEFuZ2xlLWUucHJldlN0YXJ0QW5nbGUpLGUuaT09PWkuY29uZmlnLnNlcmllcy5sZW5ndGgtMSYmKGErbz50aGlzLmZ1bGxBbmdsZT9lLmVuZEFuZ2xlPWUuZW5kQW5nbGUtKGErbyk6YStvPHRoaXMuZnVsbEFuZ2xlJiYoZS5lbmRBbmdsZT1lLmVuZEFuZ2xlKyh0aGlzLmZ1bGxBbmdsZS0oYStvKSkpKSxhPT09dGhpcy5mdWxsQW5nbGUmJihhPXRoaXMuZnVsbEFuZ2xlLS4wMSksdGhpcy5hbmltYXRlQXJjKHQscixvLGEscyxlKX19LHtrZXk6XCJhbmltYXRlQXJjXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzLHIpe3ZhciBvLG49dGhpcyxsPXRoaXMudyxoPW5ldyBiKHRoaXMuY3R4KSxjPXIuc2l6ZTsoaXNOYU4oZSl8fGlzTmFOKHMpKSYmKGU9aSxzPWEsci5kdXI9MCk7dmFyIGQ9YSxnPWksdT1lPGk/dGhpcy5mdWxsQW5nbGUrZS1pOmUtaTtsLmdsb2JhbHMuZGF0YUNoYW5nZWQmJnIuc2hvdWxkU2V0UHJldlBhdGhzJiZyLnByZXZFbmRBbmdsZSYmKG89bi5nZXRQaWVQYXRoKHttZTpuLHN0YXJ0QW5nbGU6ci5wcmV2U3RhcnRBbmdsZSxhbmdsZTpyLnByZXZFbmRBbmdsZTxyLnByZXZTdGFydEFuZ2xlP3RoaXMuZnVsbEFuZ2xlK3IucHJldkVuZEFuZ2xlLXIucHJldlN0YXJ0QW5nbGU6ci5wcmV2RW5kQW5nbGUtci5wcmV2U3RhcnRBbmdsZSxzaXplOmN9KSx0LmF0dHIoe2Q6b30pKSwwIT09ci5kdXI/dC5hbmltYXRlKHIuZHVyLGwuZ2xvYmFscy5lYXNpbmcsci5hbmltQmVnaW5BcnJbci5pXSkuYWZ0ZXJBbGwoKGZ1bmN0aW9uKCl7XCJwaWVcIiE9PW4uY2hhcnRUeXBlJiZcImRvbnV0XCIhPT1uLmNoYXJ0VHlwZSYmXCJwb2xhckFyZWFcIiE9PW4uY2hhcnRUeXBlfHx0aGlzLmFuaW1hdGUobC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkKS5hdHRyKHtcInN0cm9rZS13aWR0aFwiOm4uc3Ryb2tlV2lkdGh9KSxyLmk9PT1sLmNvbmZpZy5zZXJpZXMubGVuZ3RoLTEmJmguYW5pbWF0aW9uQ29tcGxldGVkKHQpfSkpLmR1cmluZygoZnVuY3Rpb24obCl7ZD11KyhhLXUpKmwsci5hbmltYXRlU3RhcnRpbmdQb3MmJihkPXMrKGEtcykqbCxnPWUtcysoaS0oZS1zKSkqbCksbz1uLmdldFBpZVBhdGgoe21lOm4sc3RhcnRBbmdsZTpnLGFuZ2xlOmQsc2l6ZTpjfSksdC5ub2RlLnNldEF0dHJpYnV0ZShcImRhdGE6cGF0aE9yaWdcIixvKSx0LmF0dHIoe2Q6b30pfSkpOihvPW4uZ2V0UGllUGF0aCh7bWU6bixzdGFydEFuZ2xlOmcsYW5nbGU6YSxzaXplOmN9KSxyLmlzVHJhY2t8fChsLmdsb2JhbHMuYW5pbWF0aW9uRW5kZWQ9ITApLHQubm9kZS5zZXRBdHRyaWJ1dGUoXCJkYXRhOnBhdGhPcmlnXCIsbyksdC5hdHRyKHtkOm8sXCJzdHJva2Utd2lkdGhcIjpuLnN0cm9rZVdpZHRofSkpfX0se2tleTpcInBpZUNsaWNrZWRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMudyxhPXRoaXMscz1hLnNsaWNlU2l6ZXNbdF0rKGkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5leHBhbmRPbkNsaWNrPzQ6MCkscj1pLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdChhLmNoYXJ0VHlwZS50b0xvd2VyQ2FzZSgpLFwiLXNsaWNlLVwiKS5jb25jYXQodCkpLm1lbWJlcnNbMF07aWYoXCJ0cnVlXCIhPT1yLmF0dHIoXCJkYXRhOnBpZUNsaWNrZWRcIikpe3ZhciBvPWkuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhcGV4Y2hhcnRzLXBpZS1hcmVhXCIpO0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwobywoZnVuY3Rpb24odCl7dC5zZXRBdHRyaWJ1dGUoXCJkYXRhOnBpZUNsaWNrZWRcIixcImZhbHNlXCIpO3ZhciBlPXQuZ2V0QXR0cmlidXRlKFwiZGF0YTpwYXRoT3JpZ1wiKTtlJiZ0LnNldEF0dHJpYnV0ZShcImRcIixlKX0pKSxyLmF0dHIoXCJkYXRhOnBpZUNsaWNrZWRcIixcInRydWVcIik7dmFyIG49cGFyc2VJbnQoci5hdHRyKFwiZGF0YTpzdGFydEFuZ2xlXCIpLDEwKSxsPXBhcnNlSW50KHIuYXR0cihcImRhdGE6YW5nbGVcIiksMTApO2U9YS5nZXRQaWVQYXRoKHttZTphLHN0YXJ0QW5nbGU6bixhbmdsZTpsLHNpemU6c30pLDM2MCE9PWwmJnIucGxvdChlKX1lbHNle3IuYXR0cih7XCJkYXRhOnBpZUNsaWNrZWRcIjpcImZhbHNlXCJ9KSx0aGlzLnJldmVydERhdGFMYWJlbHNJbm5lcihyLm5vZGUsdGhpcy5kb251dERhdGFMYWJlbHMpO3ZhciBoPXIuYXR0cihcImRhdGE6cGF0aE9yaWdcIik7ci5hdHRyKHtkOmh9KX19fSx7a2V5OlwiZ2V0Q2hhbmdlZFBhdGhcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPVwiXCI7cmV0dXJuIHRoaXMuZHluYW1pY0FuaW0mJnRoaXMudy5nbG9iYWxzLmRhdGFDaGFuZ2VkJiYoaT10aGlzLmdldFBpZVBhdGgoe21lOnRoaXMsc3RhcnRBbmdsZTp0LGFuZ2xlOmUtdCxzaXplOnRoaXMuc2l6ZX0pKSxpfX0se2tleTpcImdldFBpZVBhdGhcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10Lm1lLGk9dC5zdGFydEFuZ2xlLGE9dC5hbmdsZSxzPXQuc2l6ZSxyPWksbz1NYXRoLlBJKihyLTkwKS8xODAsbj1hK2k7TWF0aC5jZWlsKG4pPj10aGlzLmZ1bGxBbmdsZSt0aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5zdGFydEFuZ2xlJXRoaXMuZnVsbEFuZ2xlJiYobj10aGlzLmZ1bGxBbmdsZSt0aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5zdGFydEFuZ2xlJXRoaXMuZnVsbEFuZ2xlLS4wMSksTWF0aC5jZWlsKG4pPnRoaXMuZnVsbEFuZ2xlJiYobi09dGhpcy5mdWxsQW5nbGUpO3ZhciBsPU1hdGguUEkqKG4tOTApLzE4MCxoPWUuY2VudGVyWCtzKk1hdGguY29zKG8pLGM9ZS5jZW50ZXJZK3MqTWF0aC5zaW4obyksZD1lLmNlbnRlclgrcypNYXRoLmNvcyhsKSxnPWUuY2VudGVyWStzKk1hdGguc2luKGwpLHU9eC5wb2xhclRvQ2FydGVzaWFuKGUuY2VudGVyWCxlLmNlbnRlclksZS5kb251dFNpemUsbikscD14LnBvbGFyVG9DYXJ0ZXNpYW4oZS5jZW50ZXJYLGUuY2VudGVyWSxlLmRvbnV0U2l6ZSxyKSxmPWE+MTgwPzE6MCxiPVtcIk1cIixoLGMsXCJBXCIscyxzLDAsZiwxLGQsZ107cmV0dXJuXCJkb251dFwiPT09ZS5jaGFydFR5cGU/W10uY29uY2F0KGIsW1wiTFwiLHUueCx1LnksXCJBXCIsZS5kb251dFNpemUsZS5kb251dFNpemUsMCxmLDAscC54LHAueSxcIkxcIixoLGMsXCJ6XCJdKS5qb2luKFwiIFwiKTpcInBpZVwiPT09ZS5jaGFydFR5cGV8fFwicG9sYXJBcmVhXCI9PT1lLmNoYXJ0VHlwZT9bXS5jb25jYXQoYixbXCJMXCIsZS5jZW50ZXJYLGUuY2VudGVyWSxcIkxcIixoLGNdKS5qb2luKFwiIFwiKTpbXS5jb25jYXQoYikuam9pbihcIiBcIil9fSx7a2V5OlwiZHJhd1BvbGFyRWxlbWVudHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgXyh0aGlzLmN0eCksYT1uZXcgbSh0aGlzLmN0eCkscz1uZXcgQ3QodGhpcy5jdHgpLHI9YS5ncm91cCgpLG89YS5ncm91cCgpLG49aS5uaWNlU2NhbGUoMCxNYXRoLmNlaWwodGhpcy5tYXhZKSxlLmNvbmZpZy55YXhpc1swXS50aWNrQW1vdW50LDAsITApLGw9bi5yZXN1bHQucmV2ZXJzZSgpLGg9bi5yZXN1bHQubGVuZ3RoO3RoaXMubWF4WT1uLm5pY2VNYXg7Zm9yKHZhciBjPWUuZ2xvYmFscy5yYWRpYWxTaXplLGQ9Yy8oaC0xKSxnPTA7ZzxoLTE7ZysrKXt2YXIgdT1hLmRyYXdDaXJjbGUoYyk7aWYodS5hdHRyKHtjeDp0aGlzLmNlbnRlclgsY3k6dGhpcy5jZW50ZXJZLGZpbGw6XCJub25lXCIsXCJzdHJva2Utd2lkdGhcIjplLmNvbmZpZy5wbG90T3B0aW9ucy5wb2xhckFyZWEucmluZ3Muc3Ryb2tlV2lkdGgsc3Ryb2tlOmUuY29uZmlnLnBsb3RPcHRpb25zLnBvbGFyQXJlYS5yaW5ncy5zdHJva2VDb2xvcn0pLGUuY29uZmlnLnlheGlzWzBdLnNob3cpe3ZhciBwPXMuZHJhd1lBeGlzVGV4dHModGhpcy5jZW50ZXJYLHRoaXMuY2VudGVyWS1jK3BhcnNlSW50KGUuY29uZmlnLnlheGlzWzBdLmxhYmVscy5zdHlsZS5mb250U2l6ZSwxMCkvMixnLGxbZ10pO28uYWRkKHApfXIuYWRkKHUpLGMtPWR9dGhpcy5kcmF3U3Bva2VzKHQpLHQuYWRkKHIpLHQuYWRkKG8pfX0se2tleTpcInJlbmRlcklubmVyRGF0YUxhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9bmV3IG0odGhpcy5jdHgpLHM9YS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHMtZ3JvdXBcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIuY29uY2F0KGUudHJhbnNsYXRlWD9lLnRyYW5zbGF0ZVg6MCxcIiwgXCIpLmNvbmNhdChlLnRyYW5zbGF0ZVk/ZS50cmFuc2xhdGVZOjAsXCIpIHNjYWxlKFwiKS5jb25jYXQoaS5jb25maWcucGxvdE9wdGlvbnMucGllLmN1c3RvbVNjYWxlLFwiKVwiKX0pLHI9dC50b3RhbC5zaG93O3Mubm9kZS5zdHlsZS5vcGFjaXR5PWUub3BhY2l0eTt2YXIgbyxuLGw9ZS5jZW50ZXJYLGg9ZS5jZW50ZXJZO289dm9pZCAwPT09dC5uYW1lLmNvbG9yP2kuZ2xvYmFscy5jb2xvcnNbMF06dC5uYW1lLmNvbG9yO3ZhciBjPXQubmFtZS5mb250U2l6ZSxkPXQubmFtZS5mb250RmFtaWx5LGc9dC5uYW1lLmZvbnRXZWlnaHQ7bj12b2lkIDA9PT10LnZhbHVlLmNvbG9yP2kuY29uZmlnLmNoYXJ0LmZvcmVDb2xvcjp0LnZhbHVlLmNvbG9yO3ZhciB1PXQudmFsdWUuZm9ybWF0dGVyLHA9XCJcIixmPVwiXCI7aWYocj8obz10LnRvdGFsLmNvbG9yLGM9dC50b3RhbC5mb250U2l6ZSxkPXQudG90YWwuZm9udEZhbWlseSxnPXQudG90YWwuZm9udFdlaWdodCxmPXQudG90YWwubGFiZWwscD10LnRvdGFsLmZvcm1hdHRlcihpKSk6MT09PWkuZ2xvYmFscy5zZXJpZXMubGVuZ3RoJiYocD11KGkuZ2xvYmFscy5zZXJpZXNbMF0saSksZj1pLmdsb2JhbHMuc2VyaWVzTmFtZXNbMF0pLGYmJihmPXQubmFtZS5mb3JtYXR0ZXIoZix0LnRvdGFsLnNob3csaSkpLHQubmFtZS5zaG93KXt2YXIgeD1hLmRyYXdUZXh0KHt4OmwseTpoK3BhcnNlRmxvYXQodC5uYW1lLm9mZnNldFkpLHRleHQ6Zix0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9yZUNvbG9yOm8sZm9udFNpemU6Yyxmb250V2VpZ2h0OmcsZm9udEZhbWlseTpkfSk7eC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWRhdGFsYWJlbC1sYWJlbFwiKSxzLmFkZCh4KX1pZih0LnZhbHVlLnNob3cpe3ZhciBiPXQubmFtZS5zaG93P3BhcnNlRmxvYXQodC52YWx1ZS5vZmZzZXRZKSsxNjp0LnZhbHVlLm9mZnNldFksdj1hLmRyYXdUZXh0KHt4OmwseTpoK2IsdGV4dDpwLHRleHRBbmNob3I6XCJtaWRkbGVcIixmb3JlQ29sb3I6bixmb250V2VpZ2h0OnQudmFsdWUuZm9udFdlaWdodCxmb250U2l6ZTp0LnZhbHVlLmZvbnRTaXplLGZvbnRGYW1pbHk6dC52YWx1ZS5mb250RmFtaWx5fSk7di5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWRhdGFsYWJlbC12YWx1ZVwiKSxzLmFkZCh2KX1yZXR1cm4gc319LHtrZXk6XCJwcmludElubmVyTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHMscj10aGlzLnc7YT9zPXZvaWQgMD09PXQubmFtZS5jb2xvcj9yLmdsb2JhbHMuY29sb3JzW3BhcnNlSW50KGEucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTFdOnQubmFtZS5jb2xvcjpyLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xJiZ0LnRvdGFsLnNob3cmJihzPXQudG90YWwuY29sb3IpO3ZhciBvPXIuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1kYXRhbGFiZWwtbGFiZWxcIiksbj1yLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVsLXZhbHVlXCIpO2k9KDAsdC52YWx1ZS5mb3JtYXR0ZXIpKGksciksYXx8XCJmdW5jdGlvblwiIT10eXBlb2YgdC50b3RhbC5mb3JtYXR0ZXJ8fChpPXQudG90YWwuZm9ybWF0dGVyKHIpKTt2YXIgbD1lPT09dC50b3RhbC5sYWJlbDtlPXQubmFtZS5mb3JtYXR0ZXIoZSxsLHIpLG51bGwhPT1vJiYoby50ZXh0Q29udGVudD1lKSxudWxsIT09biYmKG4udGV4dENvbnRlbnQ9aSksbnVsbCE9PW8mJihvLnN0eWxlLmZpbGw9cyl9fSx7a2V5OlwicHJpbnREYXRhTGFiZWxzSW5uZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPXQuZ2V0QXR0cmlidXRlKFwiZGF0YTp2YWx1ZVwiKSxzPWkuZ2xvYmFscy5zZXJpZXNOYW1lc1twYXJzZUludCh0LnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xXTtpLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xJiZ0aGlzLnByaW50SW5uZXJMYWJlbHMoZSxzLGEsdCk7dmFyIHI9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWRhdGFsYWJlbHMtZ3JvdXBcIik7bnVsbCE9PXImJihyLnN0eWxlLm9wYWNpdHk9MSl9fSx7a2V5OlwiZHJhd1Nwb2tlc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLncsYT1uZXcgbSh0aGlzLmN0eCkscz1pLmNvbmZpZy5wbG90T3B0aW9ucy5wb2xhckFyZWEuc3Bva2VzO2lmKDAhPT1zLnN0cm9rZVdpZHRoKXtmb3IodmFyIHI9W10sbz0zNjAvaS5nbG9iYWxzLnNlcmllcy5sZW5ndGgsbj0wO248aS5nbG9iYWxzLnNlcmllcy5sZW5ndGg7bisrKXIucHVzaCh4LnBvbGFyVG9DYXJ0ZXNpYW4odGhpcy5jZW50ZXJYLHRoaXMuY2VudGVyWSxpLmdsb2JhbHMucmFkaWFsU2l6ZSxpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuc3RhcnRBbmdsZStvKm4pKTtyLmZvckVhY2goKGZ1bmN0aW9uKGkscil7dmFyIG89YS5kcmF3TGluZShpLngsaS55LGUuY2VudGVyWCxlLmNlbnRlclksQXJyYXkuaXNBcnJheShzLmNvbm5lY3RvckNvbG9ycyk/cy5jb25uZWN0b3JDb2xvcnNbcl06cy5jb25uZWN0b3JDb2xvcnMpO3QuYWRkKG8pfSkpfX19LHtrZXk6XCJyZXZlcnREYXRhTGFiZWxzSW5uZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcyxzPXRoaXMudyxyPXMuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1kYXRhbGFiZWxzLWdyb3VwXCIpLG89ITEsbj1zLmdsb2JhbHMuZG9tLmJhc2VFbC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYXBleGNoYXJ0cy1waWUtYXJlYVwiKSxsPWZ1bmN0aW9uKHQpe3ZhciBpPXQubWFrZVNsaWNlT3V0LHM9dC5wcmludExhYmVsO0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwobiwoZnVuY3Rpb24odCl7XCJ0cnVlXCI9PT10LmdldEF0dHJpYnV0ZShcImRhdGE6cGllQ2xpY2tlZFwiKSYmKGkmJihvPSEwKSxzJiZhLnByaW50RGF0YUxhYmVsc0lubmVyKHQsZSkpfSkpfTtpZihsKHttYWtlU2xpY2VPdXQ6ITAscHJpbnRMYWJlbDohMX0pLGUudG90YWwuc2hvdyYmcy5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MSlvJiYhZS50b3RhbC5zaG93QWx3YXlzP2woe21ha2VTbGljZU91dDohMSxwcmludExhYmVsOiEwfSk6dGhpcy5wcmludElubmVyTGFiZWxzKGUsZS50b3RhbC5sYWJlbCxlLnRvdGFsLmZvcm1hdHRlcihzKSk7ZWxzZSBpZihsKHttYWtlU2xpY2VPdXQ6ITEscHJpbnRMYWJlbDohMH0pLCFvKWlmKHMuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHMubGVuZ3RoJiZzLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xKWlmKHMuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbMF0ubGVuZ3RoPjApe3ZhciBoPXMuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbMF0sYz1zLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KHRoaXMuY2hhcnRUeXBlLnRvTG93ZXJDYXNlKCksXCItc2xpY2UtXCIpLmNvbmNhdChoKSk7dGhpcy5wcmludERhdGFMYWJlbHNJbm5lcihjLGUpfWVsc2UgciYmcy5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50cy5sZW5ndGgmJjA9PT1zLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzWzBdLmxlbmd0aCYmKHIuc3R5bGUub3BhY2l0eT0wKTtlbHNlIHImJnMuZ2xvYmFscy5zZXJpZXMubGVuZ3RoPjEmJihyLnN0eWxlLm9wYWNpdHk9MCl9fV0pLHR9KCksUHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5jaGFydFR5cGU9dGhpcy53LmNvbmZpZy5jaGFydC50eXBlLHRoaXMuaW5pdGlhbEFuaW09dGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQsdGhpcy5keW5hbWljQW5pbT10aGlzLmluaXRpYWxBbmltJiZ0aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkLHRoaXMuYW5pbUR1cj0wO3ZhciBpPXRoaXMudzt0aGlzLmdyYXBoaWNzPW5ldyBtKHRoaXMuY3R4KSx0aGlzLmxpbmVDb2xvckFycj12b2lkIDAhPT1pLmdsb2JhbHMuc3Ryb2tlLmNvbG9ycz9pLmdsb2JhbHMuc3Ryb2tlLmNvbG9yczppLmdsb2JhbHMuY29sb3JzLHRoaXMuZGVmYXVsdFNpemU9aS5nbG9iYWxzLnN2Z0hlaWdodDxpLmdsb2JhbHMuc3ZnV2lkdGg/aS5nbG9iYWxzLmdyaWRIZWlnaHQrMS41KmkuZ2xvYmFscy5nb2xkZW5QYWRkaW5nOmkuZ2xvYmFscy5ncmlkV2lkdGgsdGhpcy5pc0xvZz1pLmNvbmZpZy55YXhpc1swXS5sb2dhcml0aG1pYyx0aGlzLmNvcmVVdGlscz1uZXcgeSh0aGlzLmN0eCksdGhpcy5tYXhWYWx1ZT10aGlzLmlzTG9nP3RoaXMuY29yZVV0aWxzLmdldExvZ1ZhbChpLmdsb2JhbHMubWF4WSwwKTppLmdsb2JhbHMubWF4WSx0aGlzLm1pblZhbHVlPXRoaXMuaXNMb2c/dGhpcy5jb3JlVXRpbHMuZ2V0TG9nVmFsKHRoaXMudy5nbG9iYWxzLm1pblksMCk6aS5nbG9iYWxzLm1pblksdGhpcy5wb2x5Z29ucz1pLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRhci5wb2x5Z29ucyx0aGlzLnN0cm9rZVdpZHRoPWkuY29uZmlnLnN0cm9rZS5zaG93P2kuY29uZmlnLnN0cm9rZS53aWR0aDowLHRoaXMuc2l6ZT10aGlzLmRlZmF1bHRTaXplLzIuMS10aGlzLnN0cm9rZVdpZHRoLWkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuYmx1cixpLmNvbmZpZy54YXhpcy5sYWJlbHMuc2hvdyYmKHRoaXMuc2l6ZT10aGlzLnNpemUtaS5nbG9iYWxzLnhBeGlzTGFiZWxzV2lkdGgvMS43NSksdm9pZCAwIT09aS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIuc2l6ZSYmKHRoaXMuc2l6ZT1pLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRhci5zaXplKSx0aGlzLmRhdGFSYWRpdXNPZlBlcmNlbnQ9W10sdGhpcy5kYXRhUmFkaXVzPVtdLHRoaXMuYW5nbGVBcnI9W10sdGhpcy55YXhpc0xhYmVsc1RleHRzUG9zPVtdfXJldHVybiByKHQsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcyxhPXRoaXMudyxzPW5ldyBSKHRoaXMuY3R4KSxyPVtdLG89bmV3IE8odGhpcy5jdHgpO3QubGVuZ3RoJiYodGhpcy5kYXRhUG9pbnRzTGVuPXRbYS5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aCksdGhpcy5kaXNBbmdsZT0yKk1hdGguUEkvdGhpcy5kYXRhUG9pbnRzTGVuO3ZhciBuPWEuZ2xvYmFscy5ncmlkV2lkdGgvMixsPWEuZ2xvYmFscy5ncmlkSGVpZ2h0LzIsaD1uK2EuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLm9mZnNldFgsYz1sK2EuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLm9mZnNldFksZD10aGlzLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcmFkYXItc2VyaWVzIGFwZXhjaGFydHMtcGxvdC1zZXJpZXNcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIuY29uY2F0KGh8fDAsXCIsIFwiKS5jb25jYXQoY3x8MCxcIilcIil9KSxnPVtdLHU9bnVsbCxwPW51bGw7aWYodGhpcy55YXhpc0xhYmVscz10aGlzLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXNcIn0pLHQuZm9yRWFjaCgoZnVuY3Rpb24odCxuKXt2YXIgbD10Lmxlbmd0aD09PWEuZ2xvYmFscy5kYXRhUG9pbnRzLGg9aS5ncmFwaGljcy5ncm91cCgpLmF0dHIoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXNcIixcImRhdGE6bG9uZ2VzdFNlcmllc1wiOmwsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhhLmdsb2JhbHMuc2VyaWVzTmFtZXNbbl0pLHJlbDpuKzEsXCJkYXRhOnJlYWxJbmRleFwiOm59KTtpLmRhdGFSYWRpdXNPZlBlcmNlbnRbbl09W10saS5kYXRhUmFkaXVzW25dPVtdLGkuYW5nbGVBcnJbbl09W10sdC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3ZhciBhPU1hdGguYWJzKGkubWF4VmFsdWUtaS5taW5WYWx1ZSk7dCs9TWF0aC5hYnMoaS5taW5WYWx1ZSksaS5pc0xvZyYmKHQ9aS5jb3JlVXRpbHMuZ2V0TG9nVmFsKHQsMCkpLGkuZGF0YVJhZGl1c09mUGVyY2VudFtuXVtlXT10L2EsaS5kYXRhUmFkaXVzW25dW2VdPWkuZGF0YVJhZGl1c09mUGVyY2VudFtuXVtlXSppLnNpemUsaS5hbmdsZUFycltuXVtlXT1lKmkuZGlzQW5nbGV9KSksZz1pLmdldERhdGFQb2ludHNQb3MoaS5kYXRhUmFkaXVzW25dLGkuYW5nbGVBcnJbbl0pO3ZhciBjPWkuY3JlYXRlUGF0aHMoZyx7eDowLHk6MH0pO3U9aS5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzLXdyYXAgYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwifSkscD1pLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YWxhYmVsc1wiLFwiZGF0YTpyZWFsSW5kZXhcIjpufSksYS5nbG9iYWxzLmRlbGF5ZWRFbGVtZW50cy5wdXNoKHtlbDp1Lm5vZGUsaW5kZXg6bn0pO3ZhciBkPXtpOm4scmVhbEluZGV4Om4sYW5pbWF0aW9uRGVsYXk6bixpbml0aWFsU3BlZWQ6YS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCxkYXRhQ2hhbmdlU3BlZWQ6YS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkLGNsYXNzTmFtZTpcImFwZXhjaGFydHMtcmFkYXJcIixzaG91bGRDbGlwVG9HcmlkOiExLGJpbmRFdmVudHNPblBhdGhzOiExLHN0cm9rZTphLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1tuXSxzdHJva2VMaW5lQ2FwOmEuY29uZmlnLnN0cm9rZS5saW5lQ2FwfSxmPW51bGw7YS5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoPjAmJihmPWkuZ2V0UHJldmlvdXNQYXRoKG4pKTtmb3IodmFyIGI9MDtiPGMubGluZVBhdGhzVG8ubGVuZ3RoO2IrKyl7dmFyIG09aS5ncmFwaGljcy5yZW5kZXJQYXRocyhlKGUoe30sZCkse30se3BhdGhGcm9tOm51bGw9PT1mP2MubGluZVBhdGhzRnJvbVtiXTpmLHBhdGhUbzpjLmxpbmVQYXRoc1RvW2JdLHN0cm9rZVdpZHRoOkFycmF5LmlzQXJyYXkoaS5zdHJva2VXaWR0aCk/aS5zdHJva2VXaWR0aFtuXTppLnN0cm9rZVdpZHRoLGZpbGw6XCJub25lXCIsZHJhd1NoYWRvdzohMX0pKTtoLmFkZChtKTt2YXIgeT1zLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6bn0pLHc9aS5ncmFwaGljcy5yZW5kZXJQYXRocyhlKGUoe30sZCkse30se3BhdGhGcm9tOm51bGw9PT1mP2MuYXJlYVBhdGhzRnJvbVtiXTpmLHBhdGhUbzpjLmFyZWFQYXRoc1RvW2JdLHN0cm9rZVdpZHRoOjAsZmlsbDp5LGRyYXdTaGFkb3c6ITF9KSk7aWYoYS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgaz1uZXcgdihpLmN0eCksQT1hLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93O2suZHJvcFNoYWRvdyh3LE9iamVjdC5hc3NpZ24oe30sQSx7bm9Vc2VyU3BhY2VPblVzZTohMH0pLG4pfWguYWRkKHcpfXQuZm9yRWFjaCgoZnVuY3Rpb24odCxzKXt2YXIgcj1uZXcgRChpLmN0eCkuZ2V0TWFya2VyQ29uZmlnKHtjc3NDbGFzczpcImFwZXhjaGFydHMtbWFya2VyXCIsc2VyaWVzSW5kZXg6bixkYXRhUG9pbnRJbmRleDpzfSksbD1pLmdyYXBoaWNzLmRyYXdNYXJrZXIoZ1tzXS54LGdbc10ueSxyKTtsLmF0dHIoXCJyZWxcIixzKSxsLmF0dHIoXCJqXCIscyksbC5hdHRyKFwiaW5kZXhcIixuKSxsLm5vZGUuc2V0QXR0cmlidXRlKFwiZGVmYXVsdC1tYXJrZXItc2l6ZVwiLHIucFNpemUpO3ZhciBjPWkuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vyc1wifSk7YyYmYy5hZGQobCksdS5hZGQoYyksaC5hZGQodSk7dmFyIGQ9YS5jb25maWcuZGF0YUxhYmVscztpZihkLmVuYWJsZWQpe3ZhciBmPWQuZm9ybWF0dGVyKGEuZ2xvYmFscy5zZXJpZXNbbl1bc10se3Nlcmllc0luZGV4Om4sZGF0YVBvaW50SW5kZXg6cyx3OmF9KTtvLnBsb3REYXRhTGFiZWxzVGV4dCh7eDpnW3NdLngseTpnW3NdLnksdGV4dDpmLHRleHRBbmNob3I6XCJtaWRkbGVcIixpOm4sajpuLHBhcmVudDpwLG9mZnNldENvcnJlY3Rpb246ITEsZGF0YUxhYmVsc0NvbmZpZzplKHt9LGQpfSl9aC5hZGQocCl9KSksci5wdXNoKGgpfSkpLHRoaXMuZHJhd1BvbHlnb25zKHtwYXJlbnQ6ZH0pLGEuY29uZmlnLnhheGlzLmxhYmVscy5zaG93KXt2YXIgZj10aGlzLmRyYXdYQXhpc1RleHRzKCk7ZC5hZGQoZil9cmV0dXJuIHIuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZC5hZGQodCl9KSksZC5hZGQodGhpcy55YXhpc0xhYmVscyksZH19LHtrZXk6XCJkcmF3UG9seWdvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcyxpPXRoaXMudyxhPXQucGFyZW50LHM9bmV3IEN0KHRoaXMuY3R4KSxyPWkuZ2xvYmFscy55QXhpc1NjYWxlWzBdLnJlc3VsdC5yZXZlcnNlKCksbz1yLmxlbmd0aCxuPVtdLGw9dGhpcy5zaXplLyhvLTEpLGg9MDtoPG87aCsrKW5baF09bCpoO24ucmV2ZXJzZSgpO3ZhciBjPVtdLGQ9W107bi5mb3JFYWNoKChmdW5jdGlvbih0LGkpe3ZhciBhPXguZ2V0UG9seWdvblBvcyh0LGUuZGF0YVBvaW50c0xlbikscz1cIlwiO2EuZm9yRWFjaCgoZnVuY3Rpb24odCxhKXtpZigwPT09aSl7dmFyIHI9ZS5ncmFwaGljcy5kcmF3TGluZSh0LngsdC55LDAsMCxBcnJheS5pc0FycmF5KGUucG9seWdvbnMuY29ubmVjdG9yQ29sb3JzKT9lLnBvbHlnb25zLmNvbm5lY3RvckNvbG9yc1thXTplLnBvbHlnb25zLmNvbm5lY3RvckNvbG9ycyk7ZC5wdXNoKHIpfTA9PT1hJiZlLnlheGlzTGFiZWxzVGV4dHNQb3MucHVzaCh7eDp0LngseTp0Lnl9KSxzKz10LngrXCIsXCIrdC55K1wiIFwifSkpLGMucHVzaChzKX0pKSxjLmZvckVhY2goKGZ1bmN0aW9uKHQscyl7dmFyIHI9ZS5wb2x5Z29ucy5zdHJva2VDb2xvcnMsbz1lLnBvbHlnb25zLnN0cm9rZVdpZHRoLG49ZS5ncmFwaGljcy5kcmF3UG9seWdvbih0LEFycmF5LmlzQXJyYXkocik/cltzXTpyLEFycmF5LmlzQXJyYXkobyk/b1tzXTpvLGkuZ2xvYmFscy5yYWRhclBvbHlnb25zLmZpbGwuY29sb3JzW3NdKTthLmFkZChuKX0pKSxkLmZvckVhY2goKGZ1bmN0aW9uKHQpe2EuYWRkKHQpfSkpLGkuY29uZmlnLnlheGlzWzBdLnNob3cmJnRoaXMueWF4aXNMYWJlbHNUZXh0c1Bvcy5mb3JFYWNoKChmdW5jdGlvbih0LGkpe3ZhciBhPXMuZHJhd1lBeGlzVGV4dHModC54LHQueSxpLHJbaV0pO2UueWF4aXNMYWJlbHMuYWRkKGEpfSkpfX0se2tleTpcImRyYXdYQXhpc1RleHRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGk9dGhpcy53LGE9aS5jb25maWcueGF4aXMubGFiZWxzLHM9dGhpcy5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzXCJ9KSxyPXguZ2V0UG9seWdvblBvcyh0aGlzLnNpemUsdGhpcy5kYXRhUG9pbnRzTGVuKTtyZXR1cm4gaS5nbG9iYWxzLmxhYmVscy5mb3JFYWNoKChmdW5jdGlvbihvLG4pe3ZhciBsPWkuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXIsaD1uZXcgTyh0LmN0eCk7aWYocltuXSl7dmFyIGM9dC5nZXRUZXh0UG9zKHJbbl0sdC5zaXplKSxkPWwobyx7c2VyaWVzSW5kZXg6LTEsZGF0YVBvaW50SW5kZXg6bix3Oml9KTtoLnBsb3REYXRhTGFiZWxzVGV4dCh7eDpjLm5ld1gseTpjLm5ld1ksdGV4dDpkLHRleHRBbmNob3I6Yy50ZXh0QW5jaG9yLGk6bixqOm4scGFyZW50OnMsY29sb3I6QXJyYXkuaXNBcnJheShhLnN0eWxlLmNvbG9ycykmJmEuc3R5bGUuY29sb3JzW25dP2Euc3R5bGUuY29sb3JzW25dOlwiI2E4YThhOFwiLGRhdGFMYWJlbHNDb25maWc6ZSh7dGV4dEFuY2hvcjpjLnRleHRBbmNob3IsZHJvcFNoYWRvdzp7ZW5hYmxlZDohMX19LGEpLG9mZnNldENvcnJlY3Rpb246ITF9KX19KSksc319LHtrZXk6XCJjcmVhdGVQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxhPVtdLHM9W10scj1bXSxvPVtdO2lmKHQubGVuZ3RoKXtzPVt0aGlzLmdyYXBoaWNzLm1vdmUoZS54LGUueSldLG89W3RoaXMuZ3JhcGhpY3MubW92ZShlLngsZS55KV07dmFyIG49dGhpcy5ncmFwaGljcy5tb3ZlKHRbMF0ueCx0WzBdLnkpLGw9dGhpcy5ncmFwaGljcy5tb3ZlKHRbMF0ueCx0WzBdLnkpO3QuZm9yRWFjaCgoZnVuY3Rpb24oZSxhKXtuKz1pLmdyYXBoaWNzLmxpbmUoZS54LGUueSksbCs9aS5ncmFwaGljcy5saW5lKGUueCxlLnkpLGE9PT10Lmxlbmd0aC0xJiYobis9XCJaXCIsbCs9XCJaXCIpfSkpLGEucHVzaChuKSxyLnB1c2gobCl9cmV0dXJue2xpbmVQYXRoc0Zyb206cyxsaW5lUGF0aHNUbzphLGFyZWFQYXRoc0Zyb206byxhcmVhUGF0aHNUbzpyfX19LHtrZXk6XCJnZXRUZXh0UG9zXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1cIm1pZGRsZVwiLGE9dC54LHM9dC55O3JldHVybiBNYXRoLmFicyh0LngpPj0xMD90Lng+MD8oaT1cInN0YXJ0XCIsYSs9MTApOnQueDwwJiYoaT1cImVuZFwiLGEtPTEwKTppPVwibWlkZGxlXCIsTWF0aC5hYnModC55KT49ZS0xMCYmKHQueTwwP3MtPTEwOnQueT4wJiYocys9MTApKSx7dGV4dEFuY2hvcjppLG5ld1g6YSxuZXdZOnN9fX0se2tleTpcImdldFByZXZpb3VzUGF0aFwiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLncsaT1udWxsLGE9MDthPGUuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aDthKyspe3ZhciBzPWUuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2FdO3MucGF0aHMubGVuZ3RoPjAmJnBhcnNlSW50KHMucmVhbEluZGV4LDEwKT09PXBhcnNlSW50KHQsMTApJiZ2b2lkIDAhPT1lLmdsb2JhbHMucHJldmlvdXNQYXRoc1thXS5wYXRoc1swXSYmKGk9ZS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbYV0ucGF0aHNbMF0uZCl9cmV0dXJuIGl9fSx7a2V5OlwiZ2V0RGF0YVBvaW50c1Bvc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnRoaXMuZGF0YVBvaW50c0xlbjt0PXR8fFtdLGU9ZXx8W107Zm9yKHZhciBhPVtdLHM9MDtzPGk7cysrKXt2YXIgcj17fTtyLng9dFtzXSpNYXRoLnNpbihlW3NdKSxyLnk9LXRbc10qTWF0aC5jb3MoZVtzXSksYS5wdXNoKHIpfXJldHVybiBhfX1dKSx0fSgpLEl0PWZ1bmN0aW9uKHQpe24oaSxMdCk7dmFyIGU9ZChpKTtmdW5jdGlvbiBpKHQpe3ZhciBzO2EodGhpcyxpKSwocz1lLmNhbGwodGhpcyx0KSkuY3R4PXQscy53PXQudyxzLmFuaW1CZWdpbkFycj1bMF0scy5hbmltRHVyPTA7dmFyIHI9cy53O3JldHVybiBzLnN0YXJ0QW5nbGU9ci5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnN0YXJ0QW5nbGUscy5lbmRBbmdsZT1yLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuZW5kQW5nbGUscy50b3RhbEFuZ2xlPU1hdGguYWJzKHIuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5lbmRBbmdsZS1yLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuc3RhcnRBbmdsZSkscy50cmFja1N0YXJ0QW5nbGU9ci5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnRyYWNrLnN0YXJ0QW5nbGUscy50cmFja0VuZEFuZ2xlPXIuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjay5lbmRBbmdsZSxzLmRvbnV0RGF0YUxhYmVscz1zLncuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5kYXRhTGFiZWxzLHMucmFkaWFsRGF0YUxhYmVscz1zLmRvbnV0RGF0YUxhYmVscyxzLnRyYWNrU3RhcnRBbmdsZXx8KHMudHJhY2tTdGFydEFuZ2xlPXMuc3RhcnRBbmdsZSkscy50cmFja0VuZEFuZ2xlfHwocy50cmFja0VuZEFuZ2xlPXMuZW5kQW5nbGUpLDM2MD09PXMuZW5kQW5nbGUmJihzLmVuZEFuZ2xlPTM1OS45OSkscy5tYXJnaW49cGFyc2VJbnQoci5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnRyYWNrLm1hcmdpbiwxMCksc31yZXR1cm4gcihpLFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBtKHRoaXMuY3R4KSxhPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1yYWRpYWxiYXJcIn0pO2lmKGUuZ2xvYmFscy5ub0RhdGEpcmV0dXJuIGE7dmFyIHM9aS5ncm91cCgpLHI9dGhpcy5kZWZhdWx0U2l6ZS8yLG89ZS5nbG9iYWxzLmdyaWRXaWR0aC8yLG49dGhpcy5kZWZhdWx0U2l6ZS8yLjA1O2UuY29uZmlnLmNoYXJ0LnNwYXJrbGluZS5lbmFibGVkfHwobj1uLWUuY29uZmlnLnN0cm9rZS53aWR0aC1lLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmJsdXIpO3ZhciBsPWUuZ2xvYmFscy5maWxsLmNvbG9ycztpZihlLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIudHJhY2suc2hvdyl7dmFyIGg9dGhpcy5kcmF3VHJhY2tzKHtzaXplOm4sY2VudGVyWDpvLGNlbnRlclk6cixjb2xvckFycjpsLHNlcmllczp0fSk7cy5hZGQoaCl9dmFyIGM9dGhpcy5kcmF3QXJjcyh7c2l6ZTpuLGNlbnRlclg6byxjZW50ZXJZOnIsY29sb3JBcnI6bCxzZXJpZXM6dH0pLGQ9MzYwO2UuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5zdGFydEFuZ2xlPDAmJihkPXRoaXMudG90YWxBbmdsZSk7dmFyIGc9KDM2MC1kKS8zNjA7aWYoZS5nbG9iYWxzLnJhZGlhbFNpemU9bi1uKmcsdGhpcy5yYWRpYWxEYXRhTGFiZWxzLnZhbHVlLnNob3cpe3ZhciB1PU1hdGgubWF4KHRoaXMucmFkaWFsRGF0YUxhYmVscy52YWx1ZS5vZmZzZXRZLHRoaXMucmFkaWFsRGF0YUxhYmVscy5uYW1lLm9mZnNldFkpO2UuZ2xvYmFscy5yYWRpYWxTaXplKz11Kmd9cmV0dXJuIHMuYWRkKGMuZyksXCJmcm9udFwiPT09ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5wb3NpdGlvbiYmKGMuZy5hZGQoYy5lbEhvbGxvdyksYy5kYXRhTGFiZWxzJiZjLmcuYWRkKGMuZGF0YUxhYmVscykpLGEuYWRkKHMpLGF9fSx7a2V5OlwiZHJhd1RyYWNrc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBtKHRoaXMuY3R4KSxhPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy10cmFja3NcIn0pLHM9bmV3IHYodGhpcy5jdHgpLHI9bmV3IFIodGhpcy5jdHgpLG89dGhpcy5nZXRTdHJva2VXaWR0aCh0KTt0LnNpemU9dC5zaXplLW8vMjtmb3IodmFyIG49MDtuPHQuc2VyaWVzLmxlbmd0aDtuKyspe3ZhciBsPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1yYWRpYWxiYXItdHJhY2sgYXBleGNoYXJ0cy10cmFja1wifSk7YS5hZGQobCksbC5hdHRyKHtyZWw6bisxfSksdC5zaXplPXQuc2l6ZS1vLXRoaXMubWFyZ2luO3ZhciBoPWUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjayxjPXIuZmlsbFBhdGgoe3Nlcmllc051bWJlcjowLHNpemU6dC5zaXplLGZpbGxDb2xvcnM6QXJyYXkuaXNBcnJheShoLmJhY2tncm91bmQpP2guYmFja2dyb3VuZFtuXTpoLmJhY2tncm91bmQsc29saWQ6ITB9KSxkPXRoaXMudHJhY2tTdGFydEFuZ2xlLGc9dGhpcy50cmFja0VuZEFuZ2xlO01hdGguYWJzKGcpK01hdGguYWJzKGQpPj0zNjAmJihnPTM2MC1NYXRoLmFicyh0aGlzLnN0YXJ0QW5nbGUpLS4xKTt2YXIgdT1pLmRyYXdQYXRoKHtkOlwiXCIsc3Ryb2tlOmMsc3Ryb2tlV2lkdGg6bypwYXJzZUludChoLnN0cm9rZVdpZHRoLDEwKS8xMDAsZmlsbDpcIm5vbmVcIixzdHJva2VPcGFjaXR5Omgub3BhY2l0eSxjbGFzc2VzOlwiYXBleGNoYXJ0cy1yYWRpYWxiYXItYXJlYVwifSk7aWYoaC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBwPWguZHJvcFNoYWRvdztzLmRyb3BTaGFkb3codSxwKX1sLmFkZCh1KSx1LmF0dHIoXCJpZFwiLFwiYXBleGNoYXJ0cy1yYWRpYWxiYXJUcmFjay1cIituKSx0aGlzLmFuaW1hdGVQYXRocyh1LHtjZW50ZXJYOnQuY2VudGVyWCxjZW50ZXJZOnQuY2VudGVyWSxlbmRBbmdsZTpnLHN0YXJ0QW5nbGU6ZCxzaXplOnQuc2l6ZSxpOm4sdG90YWxJdGVtczoyLGFuaW1CZWdpbkFycjowLGR1cjowLGlzVHJhY2s6ITAsZWFzaW5nOmUuZ2xvYmFscy5lYXNpbmd9KX1yZXR1cm4gYX19LHtrZXk6XCJkcmF3QXJjc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBtKHRoaXMuY3R4KSxhPW5ldyBSKHRoaXMuY3R4KSxzPW5ldyB2KHRoaXMuY3R4KSxyPWkuZ3JvdXAoKSxvPXRoaXMuZ2V0U3Ryb2tlV2lkdGgodCk7dC5zaXplPXQuc2l6ZS1vLzI7dmFyIG49ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5iYWNrZ3JvdW5kLGw9dC5zaXplLW8qdC5zZXJpZXMubGVuZ3RoLXRoaXMubWFyZ2luKnQuc2VyaWVzLmxlbmd0aC1vKnBhcnNlSW50KGUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjay5zdHJva2VXaWR0aCwxMCkvMTAwLzIsaD1sLWUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cubWFyZ2luO3ZvaWQgMCE9PWUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2UmJihuPXRoaXMuZHJhd0hvbGxvd0ltYWdlKHQscixsLG4pKTt2YXIgYz10aGlzLmRyYXdIb2xsb3coe3NpemU6aCxjZW50ZXJYOnQuY2VudGVyWCxjZW50ZXJZOnQuY2VudGVyWSxmaWxsOm58fFwidHJhbnNwYXJlbnRcIn0pO2lmKGUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgZD1lLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmRyb3BTaGFkb3c7cy5kcm9wU2hhZG93KGMsZCl9dmFyIGc9MTshdGhpcy5yYWRpYWxEYXRhTGFiZWxzLnRvdGFsLnNob3cmJmUuZ2xvYmFscy5zZXJpZXMubGVuZ3RoPjEmJihnPTApO3ZhciB1PW51bGw7dGhpcy5yYWRpYWxEYXRhTGFiZWxzLnNob3cmJih1PXRoaXMucmVuZGVySW5uZXJEYXRhTGFiZWxzKHRoaXMucmFkaWFsRGF0YUxhYmVscyx7aG9sbG93U2l6ZTpsLGNlbnRlclg6dC5jZW50ZXJYLGNlbnRlclk6dC5jZW50ZXJZLG9wYWNpdHk6Z30pKSxcImJhY2tcIj09PWUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cucG9zaXRpb24mJihyLmFkZChjKSx1JiZyLmFkZCh1KSk7dmFyIHA9ITE7ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmludmVyc2VPcmRlciYmKHA9ITApO2Zvcih2YXIgZj1wP3Quc2VyaWVzLmxlbmd0aC0xOjA7cD9mPj0wOmY8dC5zZXJpZXMubGVuZ3RoO3A/Zi0tOmYrKyl7dmFyIGI9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcyBhcGV4Y2hhcnRzLXJhZGlhbC1zZXJpZXNcIixzZXJpZXNOYW1lOnguZXNjYXBlU3RyaW5nKGUuZ2xvYmFscy5zZXJpZXNOYW1lc1tmXSl9KTtyLmFkZChiKSxiLmF0dHIoe3JlbDpmKzEsXCJkYXRhOnJlYWxJbmRleFwiOmZ9KSx0aGlzLmN0eC5zZXJpZXMuYWRkQ29sbGFwc2VkQ2xhc3NUb1NlcmllcyhiLGYpLHQuc2l6ZT10LnNpemUtby10aGlzLm1hcmdpbjt2YXIgeT1hLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6ZixzaXplOnQuc2l6ZSx2YWx1ZTp0LnNlcmllc1tmXX0pLHc9dGhpcy5zdGFydEFuZ2xlLGs9dm9pZCAwLEE9eC5uZWdUb1plcm8odC5zZXJpZXNbZl0+MTAwPzEwMDp0LnNlcmllc1tmXSkvMTAwLFM9TWF0aC5yb3VuZCh0aGlzLnRvdGFsQW5nbGUqQSkrdGhpcy5zdGFydEFuZ2xlLEM9dm9pZCAwO2UuZ2xvYmFscy5kYXRhQ2hhbmdlZCYmKGs9dGhpcy5zdGFydEFuZ2xlLEM9TWF0aC5yb3VuZCh0aGlzLnRvdGFsQW5nbGUqeC5uZWdUb1plcm8oZS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbZl0pLzEwMCkrayksTWF0aC5hYnMoUykrTWF0aC5hYnModyk+PTM2MCYmKFMtPS4wMSksTWF0aC5hYnMoQykrTWF0aC5hYnMoayk+PTM2MCYmKEMtPS4wMSk7dmFyIEw9Uy13LFA9QXJyYXkuaXNBcnJheShlLmNvbmZpZy5zdHJva2UuZGFzaEFycmF5KT9lLmNvbmZpZy5zdHJva2UuZGFzaEFycmF5W2ZdOmUuY29uZmlnLnN0cm9rZS5kYXNoQXJyYXksST1pLmRyYXdQYXRoKHtkOlwiXCIsc3Ryb2tlOnksc3Ryb2tlV2lkdGg6byxmaWxsOlwibm9uZVwiLGZpbGxPcGFjaXR5OmUuY29uZmlnLmZpbGwub3BhY2l0eSxjbGFzc2VzOlwiYXBleGNoYXJ0cy1yYWRpYWxiYXItYXJlYSBhcGV4Y2hhcnRzLXJhZGlhbGJhci1zbGljZS1cIitmLHN0cm9rZURhc2hBcnJheTpQfSk7aWYobS5zZXRBdHRycyhJLm5vZGUse1wiZGF0YTphbmdsZVwiOkwsXCJkYXRhOnZhbHVlXCI6dC5zZXJpZXNbZl19KSxlLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBUPWUuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7cy5kcm9wU2hhZG93KEksVCxmKX1zLnNldFNlbGVjdGlvbkZpbHRlcihJLDAsZiksdGhpcy5hZGRMaXN0ZW5lcnMoSSx0aGlzLnJhZGlhbERhdGFMYWJlbHMpLGIuYWRkKEkpLEkuYXR0cih7aW5kZXg6MCxqOmZ9KTt2YXIgTT0wOyF0aGlzLmluaXRpYWxBbmltfHxlLmdsb2JhbHMucmVzaXplZHx8ZS5nbG9iYWxzLmRhdGFDaGFuZ2VkfHwoTT1lLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkKSxlLmdsb2JhbHMuZGF0YUNoYW5nZWQmJihNPWUuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZCksdGhpcy5hbmltRHVyPU0vKDEuMip0LnNlcmllcy5sZW5ndGgpK3RoaXMuYW5pbUR1cix0aGlzLmFuaW1CZWdpbkFyci5wdXNoKHRoaXMuYW5pbUR1ciksdGhpcy5hbmltYXRlUGF0aHMoSSx7Y2VudGVyWDp0LmNlbnRlclgsY2VudGVyWTp0LmNlbnRlclksZW5kQW5nbGU6UyxzdGFydEFuZ2xlOncscHJldkVuZEFuZ2xlOkMscHJldlN0YXJ0QW5nbGU6ayxzaXplOnQuc2l6ZSxpOmYsdG90YWxJdGVtczoyLGFuaW1CZWdpbkFycjp0aGlzLmFuaW1CZWdpbkFycixkdXI6TSxzaG91bGRTZXRQcmV2UGF0aHM6ITAsZWFzaW5nOmUuZ2xvYmFscy5lYXNpbmd9KX1yZXR1cm57ZzpyLGVsSG9sbG93OmMsZGF0YUxhYmVsczp1fX19LHtrZXk6XCJkcmF3SG9sbG93XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9bmV3IG0odGhpcy5jdHgpLmRyYXdDaXJjbGUoMip0LnNpemUpO3JldHVybiBlLmF0dHIoe2NsYXNzOlwiYXBleGNoYXJ0cy1yYWRpYWxiYXItaG9sbG93XCIsY3g6dC5jZW50ZXJYLGN5OnQuY2VudGVyWSxyOnQuc2l6ZSxmaWxsOnQuZmlsbH0pLGV9fSx7a2V5OlwiZHJhd0hvbGxvd0ltYWdlXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9dGhpcy53LHI9bmV3IFIodGhpcy5jdHgpLG89eC5yYW5kb21JZCgpLG49cy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZTtpZihzLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlQ2xpcHBlZClyLmNsaXBwZWRJbWdBcmVhKHt3aWR0aDppLGhlaWdodDppLGltYWdlOm4scGF0dGVybklEOlwicGF0dGVyblwiLmNvbmNhdChzLmdsb2JhbHMuY3VpZCkuY29uY2F0KG8pfSksYT1cInVybCgjcGF0dGVyblwiLmNvbmNhdChzLmdsb2JhbHMuY3VpZCkuY29uY2F0KG8sXCIpXCIpO2Vsc2V7dmFyIGw9cy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZVdpZHRoLGg9cy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZUhlaWdodDtpZih2b2lkIDA9PT1sJiZ2b2lkIDA9PT1oKXt2YXIgYz1zLmdsb2JhbHMuZG9tLlBhcGVyLmltYWdlKG4pLmxvYWRlZCgoZnVuY3Rpb24oZSl7dGhpcy5tb3ZlKHQuY2VudGVyWC1lLndpZHRoLzIrcy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZU9mZnNldFgsdC5jZW50ZXJZLWUuaGVpZ2h0LzIrcy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZU9mZnNldFkpfSkpO2UuYWRkKGMpfWVsc2V7dmFyIGQ9cy5nbG9iYWxzLmRvbS5QYXBlci5pbWFnZShuKS5sb2FkZWQoKGZ1bmN0aW9uKGUpe3RoaXMubW92ZSh0LmNlbnRlclgtbC8yK3MuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VPZmZzZXRYLHQuY2VudGVyWS1oLzIrcy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZU9mZnNldFkpLHRoaXMuc2l6ZShsLGgpfSkpO2UuYWRkKGQpfX1yZXR1cm4gYX19LHtrZXk6XCJnZXRTdHJva2VXaWR0aFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztyZXR1cm4gdC5zaXplKigxMDAtcGFyc2VJbnQoZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5zaXplLDEwKSkvMTAwLyh0LnNlcmllcy5sZW5ndGgrMSktdGhpcy5tYXJnaW59fV0pLGl9KCksVHQ9ZnVuY3Rpb24odCl7bihzLHl0KTt2YXIgaT1kKHMpO2Z1bmN0aW9uIHMoKXtyZXR1cm4gYSh0aGlzLHMpLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiByKHMsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCxpKXt2YXIgYT10aGlzLncscz1uZXcgbSh0aGlzLmN0eCk7dGhpcy5yYW5nZUJhck9wdGlvbnM9dGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5yYW5nZUJhcix0aGlzLnNlcmllcz10LHRoaXMuc2VyaWVzUmFuZ2VTdGFydD1hLmdsb2JhbHMuc2VyaWVzUmFuZ2VTdGFydCx0aGlzLnNlcmllc1JhbmdlRW5kPWEuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZCx0aGlzLmJhckhlbHBlcnMuaW5pdFZhcmlhYmxlcyh0KTtmb3IodmFyIHI9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXJhbmdlYmFyLXNlcmllcyBhcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzXCJ9KSxvPTA7bzx0Lmxlbmd0aDtvKyspe3ZhciBuLGwsaCxjPXZvaWQgMCxkPXZvaWQgMCxnPXZvaWQgMCx1PWEuZ2xvYmFscy5jb21ib0NoYXJ0cz9pW29dOm8scD1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzXCIsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhhLmdsb2JhbHMuc2VyaWVzTmFtZXNbdV0pLHJlbDpvKzEsXCJkYXRhOnJlYWxJbmRleFwiOnV9KTt0aGlzLmN0eC5zZXJpZXMuYWRkQ29sbGFwc2VkQ2xhc3NUb1NlcmllcyhwLHUpLHRbb10ubGVuZ3RoPjAmJih0aGlzLnZpc2libGVJPXRoaXMudmlzaWJsZUkrMSk7dmFyIGY9MCxiPTA7dGhpcy55UmF0aW8ubGVuZ3RoPjEmJih0aGlzLnlheGlzSW5kZXg9dSk7dmFyIHY9dGhpcy5iYXJIZWxwZXJzLmluaXRpYWxQb3NpdGlvbnMoKTtkPXYueSxoPXYuemVyb1csYz12LngsYj12LmJhcldpZHRoLG49di54RGl2aXNpb24sbD12Lnplcm9IO2Zvcih2YXIgeT1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YWxhYmVsc1wiLFwiZGF0YTpyZWFsSW5kZXhcIjp1fSksdz1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcmFuZ2ViYXItZ29hbHMtbWFya2Vyc1wiLHN0eWxlOlwicG9pbnRlci1ldmVudHM6IG5vbmVcIn0pLGs9MDtrPGEuZ2xvYmFscy5kYXRhUG9pbnRzO2srKyl7dmFyIEE9dGhpcy5iYXJIZWxwZXJzLmdldFN0cm9rZVdpZHRoKG8sayx1KSxTPXRoaXMuc2VyaWVzUmFuZ2VTdGFydFtvXVtrXSxDPXRoaXMuc2VyaWVzUmFuZ2VFbmRbb11ba10sTD1udWxsLFA9bnVsbCxJPXt4OmMseTpkLHN0cm9rZVdpZHRoOkEsZWxTZXJpZXM6cH07aWYoZz12LnlEaXZpc2lvbixmPXYuYmFySGVpZ2h0LHRoaXMuaXNIb3Jpem9udGFsKXtQPWQrZip0aGlzLnZpc2libGVJO3ZhciBUPXRoaXMuc2VyaWVzTGVuO2EuY29uZmlnLnBsb3RPcHRpb25zLmJhci5yYW5nZUJhckdyb3VwUm93cyYmKFQ9MSk7dmFyIE09KGctZipUKS8yO2lmKHZvaWQgMD09PWEuY29uZmlnLnNlcmllc1tvXS5kYXRhW2tdKWJyZWFrO2lmKGEuY29uZmlnLnNlcmllc1tvXS5kYXRhW2tdLngpe3ZhciBYPXRoaXMuZGV0ZWN0T3ZlcmxhcHBpbmdCYXJzKHtpOm8sajprLGJhcllQb3NpdGlvbjpQLHNydHk6TSxiYXJIZWlnaHQ6Zix5RGl2aXNpb246Zyxpbml0UG9zaXRpb25zOnZ9KTtmPVguYmFySGVpZ2h0LFA9WC5iYXJZUG9zaXRpb259Yj0oTD10aGlzLmRyYXdSYW5nZUJhclBhdGhzKGUoe2luZGV4ZXM6e2k6byxqOmsscmVhbEluZGV4OnV9LGJhckhlaWdodDpmLGJhcllQb3NpdGlvbjpQLHplcm9XOmgseURpdmlzaW9uOmcseTE6Uyx5MjpDfSxJKSkpLmJhcldpZHRofWVsc2UgZj0oTD10aGlzLmRyYXdSYW5nZUNvbHVtblBhdGhzKGUoe2luZGV4ZXM6e2k6byxqOmsscmVhbEluZGV4OnV9LHplcm9IOmwsYmFyV2lkdGg6Yix4RGl2aXNpb246bn0sSSkpKS5iYXJIZWlnaHQ7dmFyIHo9dGhpcy5iYXJIZWxwZXJzLmRyYXdHb2FsTGluZSh7YmFyWFBvc2l0aW9uOkwuYmFyWFBvc2l0aW9uLGJhcllQb3NpdGlvbjpQLGdvYWxYOkwuZ29hbFgsZ29hbFk6TC5nb2FsWSxiYXJIZWlnaHQ6ZixiYXJXaWR0aDpifSk7eiYmdy5hZGQoeiksZD1MLnksYz1MLng7dmFyIEU9dGhpcy5iYXJIZWxwZXJzLmdldFBhdGhGaWxsQ29sb3IodCxvLGssdSksWT1hLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1t1XTt0aGlzLnJlbmRlclNlcmllcyh7cmVhbEluZGV4OnUscGF0aEZpbGw6RSxsaW5lRmlsbDpZLGo6ayxpOm8seDpjLHk6ZCx5MTpTLHkyOkMscGF0aEZyb206TC5wYXRoRnJvbSxwYXRoVG86TC5wYXRoVG8sc3Ryb2tlV2lkdGg6QSxlbFNlcmllczpwLHNlcmllczp0LGJhckhlaWdodDpmLGJhcllQb3NpdGlvbjpQLGJhcldpZHRoOmIsZWxEYXRhTGFiZWxzV3JhcDp5LGVsR29hbHNNYXJrZXJzOncsdmlzaWJsZVNlcmllczp0aGlzLnZpc2libGVJLHR5cGU6XCJyYW5nZWJhclwifSl9ci5hZGQocCl9cmV0dXJuIHJ9fSx7a2V5OlwiZGV0ZWN0T3ZlcmxhcHBpbmdCYXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pLGk9dC5qLGE9dC5iYXJZUG9zaXRpb24scz10LnNydHkscj10LmJhckhlaWdodCxvPXQueURpdmlzaW9uLG49dC5pbml0UG9zaXRpb25zLGw9dGhpcy53LGg9W10sYz1sLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXS5yYW5nZU5hbWUsZD1sLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXS54LGc9bC5nbG9iYWxzLmxhYmVscy5pbmRleE9mKGQpLHU9bC5nbG9iYWxzLnNlcmllc1JhbmdlW2VdLmZpbmRJbmRleCgoZnVuY3Rpb24odCl7cmV0dXJuIHQueD09PWQmJnQub3ZlcmxhcHMubGVuZ3RoPjB9KSk7cmV0dXJuIGE9bC5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyR3JvdXBSb3dzP3MrbypnOnMrcip0aGlzLnZpc2libGVJK28qZyx1Pi0xJiYhbC5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyT3ZlcmxhcCYmKGg9bC5nbG9iYWxzLnNlcmllc1JhbmdlW2VdW3VdLm92ZXJsYXBzKS5pbmRleE9mKGMpPi0xJiYoYT0ocj1uLmJhckhlaWdodC9oLmxlbmd0aCkqdGhpcy52aXNpYmxlSStvKigxMDAtcGFyc2VJbnQodGhpcy5iYXJPcHRpb25zLmJhckhlaWdodCwxMCkpLzEwMC8yK3IqKHRoaXMudmlzaWJsZUkraC5pbmRleE9mKGMpKStvKmcpLHtiYXJZUG9zaXRpb246YSxiYXJIZWlnaHQ6cn19fSx7a2V5OlwiZHJhd1JhbmdlQ29sdW1uUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4ZXMsaT10Lng7dC5zdHJva2VXaWR0aDt2YXIgYT10LnhEaXZpc2lvbixzPXQuYmFyV2lkdGgscj10Lnplcm9ILG89dGhpcy53LG49ZS5pLGw9ZS5qLGg9dGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSxjPWUucmVhbEluZGV4LGQ9dGhpcy5nZXRSYW5nZVZhbHVlKGMsbCksZz1NYXRoLm1pbihkLnN0YXJ0LGQuZW5kKSx1PU1hdGgubWF4KGQuc3RhcnQsZC5lbmQpO28uZ2xvYmFscy5pc1hOdW1lcmljJiYoaT0oby5nbG9iYWxzLnNlcmllc1hbbl1bbF0tby5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvLXMvMik7dmFyIHA9aStzKnRoaXMudmlzaWJsZUk7dm9pZCAwPT09dGhpcy5zZXJpZXNbbl1bbF18fG51bGw9PT10aGlzLnNlcmllc1tuXVtsXT9nPXI6KGc9ci1nL2gsdT1yLXUvaCk7dmFyIGY9TWF0aC5hYnModS1nKSx4PXRoaXMuYmFySGVscGVycy5nZXRDb2x1bW5QYXRocyh7YmFyWFBvc2l0aW9uOnAsYmFyV2lkdGg6cyx5MTpnLHkyOnUsc3Ryb2tlV2lkdGg6dGhpcy5zdHJva2VXaWR0aCxzZXJpZXM6dGhpcy5zZXJpZXNSYW5nZUVuZCxyZWFsSW5kZXg6ZS5yZWFsSW5kZXgsaTpjLGo6bCx3Om99KTtyZXR1cm4gby5nbG9iYWxzLmlzWE51bWVyaWN8fChpKz1hKSx7cGF0aFRvOngucGF0aFRvLHBhdGhGcm9tOngucGF0aEZyb20sYmFySGVpZ2h0OmYseDppLHk6dSxnb2FsWTp0aGlzLmJhckhlbHBlcnMuZ2V0R29hbFZhbHVlcyhcInlcIixudWxsLHIsbixsKSxiYXJYUG9zaXRpb246cH19fSx7a2V5OlwiZHJhd1JhbmdlQmFyUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4ZXMsaT10LnksYT10LnkxLHM9dC55MixyPXQueURpdmlzaW9uLG89dC5iYXJIZWlnaHQsbj10LmJhcllQb3NpdGlvbixsPXQuemVyb1csaD10aGlzLncsYz1sK2EvdGhpcy5pbnZlcnRlZFlSYXRpbyxkPWwrcy90aGlzLmludmVydGVkWVJhdGlvLGc9TWF0aC5hYnMoZC1jKSx1PXRoaXMuYmFySGVscGVycy5nZXRCYXJwYXRocyh7YmFyWVBvc2l0aW9uOm4sYmFySGVpZ2h0Om8seDE6Yyx4MjpkLHN0cm9rZVdpZHRoOnRoaXMuc3Ryb2tlV2lkdGgsc2VyaWVzOnRoaXMuc2VyaWVzUmFuZ2VFbmQsaTplLnJlYWxJbmRleCxyZWFsSW5kZXg6ZS5yZWFsSW5kZXgsajplLmosdzpofSk7cmV0dXJuIGguZ2xvYmFscy5pc1hOdW1lcmljfHwoaSs9cikse3BhdGhUbzp1LnBhdGhUbyxwYXRoRnJvbTp1LnBhdGhGcm9tLGJhcldpZHRoOmcseDpkLGdvYWxYOnRoaXMuYmFySGVscGVycy5nZXRHb2FsVmFsdWVzKFwieFwiLGwsbnVsbCxlLnJlYWxJbmRleCxlLmopLHk6aX19fSx7a2V5OlwiZ2V0UmFuZ2VWYWx1ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O3JldHVybntzdGFydDppLmdsb2JhbHMuc2VyaWVzUmFuZ2VTdGFydFt0XVtlXSxlbmQ6aS5nbG9iYWxzLnNlcmllc1JhbmdlRW5kW3RdW2VdfX19XSksc30oKSxNdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5saW5lQ3R4PWV9cmV0dXJuIHIodCxbe2tleTpcInNhbWVWYWx1ZVNlcmllc0ZpeFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2lmKChcImdyYWRpZW50XCI9PT1pLmNvbmZpZy5maWxsLnR5cGV8fFwiZ3JhZGllbnRcIj09PWkuY29uZmlnLmZpbGwudHlwZVt0XSkmJm5ldyB5KHRoaXMubGluZUN0eC5jdHgsaSkuc2VyaWVzSGF2ZVNhbWVWYWx1ZXModCkpe3ZhciBhPWVbdF0uc2xpY2UoKTthW2EubGVuZ3RoLTFdPWFbYS5sZW5ndGgtMV0rMWUtNixlW3RdPWF9cmV0dXJuIGV9fSx7a2V5OlwiY2FsY3VsYXRlUG9pbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5zZXJpZXMsaT10LnJlYWxJbmRleCxhPXQueCxzPXQueSxyPXQuaSxvPXQuaixuPXQucHJldlksbD10aGlzLncsaD1bXSxjPVtdO2lmKDA9PT1vKXt2YXIgZD10aGlzLmxpbmVDdHguY2F0ZWdvcnlBeGlzQ29ycmVjdGlvbitsLmNvbmZpZy5tYXJrZXJzLm9mZnNldFg7bC5nbG9iYWxzLmlzWE51bWVyaWMmJihkPShsLmdsb2JhbHMuc2VyaWVzWFtpXVswXS1sLmdsb2JhbHMubWluWCkvdGhpcy5saW5lQ3R4LnhSYXRpbytsLmNvbmZpZy5tYXJrZXJzLm9mZnNldFgpLGgucHVzaChkKSxjLnB1c2goeC5pc051bWJlcihlW3JdWzBdKT9uK2wuY29uZmlnLm1hcmtlcnMub2Zmc2V0WTpudWxsKSxoLnB1c2goYStsLmNvbmZpZy5tYXJrZXJzLm9mZnNldFgpLGMucHVzaCh4LmlzTnVtYmVyKGVbcl1bbysxXSk/cytsLmNvbmZpZy5tYXJrZXJzLm9mZnNldFk6bnVsbCl9ZWxzZSBoLnB1c2goYStsLmNvbmZpZy5tYXJrZXJzLm9mZnNldFgpLGMucHVzaCh4LmlzTnVtYmVyKGVbcl1bbysxXSk/cytsLmNvbmZpZy5tYXJrZXJzLm9mZnNldFk6bnVsbCk7cmV0dXJue3g6aCx5OmN9fX0se2tleTpcImNoZWNrUHJldmlvdXNQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LnBhdGhGcm9tTGluZSxpPXQucGF0aEZyb21BcmVhLGE9dC5yZWFsSW5kZXgscz10aGlzLncscj0wO3I8cy5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoO3IrKyl7dmFyIG89cy5nbG9iYWxzLnByZXZpb3VzUGF0aHNbcl07KFwibGluZVwiPT09by50eXBlfHxcImFyZWFcIj09PW8udHlwZSkmJm8ucGF0aHMubGVuZ3RoPjAmJnBhcnNlSW50KG8ucmVhbEluZGV4LDEwKT09PXBhcnNlSW50KGEsMTApJiYoXCJsaW5lXCI9PT1vLnR5cGU/KHRoaXMubGluZUN0eC5hcHBlbmRQYXRoRnJvbT0hMSxlPXMuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3JdLnBhdGhzWzBdLmQpOlwiYXJlYVwiPT09by50eXBlJiYodGhpcy5saW5lQ3R4LmFwcGVuZFBhdGhGcm9tPSExLGk9cy5nbG9iYWxzLnByZXZpb3VzUGF0aHNbcl0ucGF0aHNbMF0uZCxzLmNvbmZpZy5zdHJva2Uuc2hvdyYmcy5nbG9iYWxzLnByZXZpb3VzUGF0aHNbcl0ucGF0aHNbMV0mJihlPXMuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3JdLnBhdGhzWzFdLmQpKSl9cmV0dXJue3BhdGhGcm9tTGluZTplLHBhdGhGcm9tQXJlYTppfX19LHtrZXk6XCJkZXRlcm1pbmVGaXJzdFByZXZZXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10LmksYT10LnNlcmllcyxzPXQucHJldlkscj10LmxpbmVZUG9zaXRpb24sbz10aGlzLnc7aWYodm9pZCAwIT09KG51bGw9PT0oZT1hW2ldKXx8dm9pZCAwPT09ZT92b2lkIDA6ZVswXSkpcz0ocj1vLmNvbmZpZy5jaGFydC5zdGFja2VkJiZpPjA/dGhpcy5saW5lQ3R4LnByZXZTZXJpZXNZW2ktMV1bMF06dGhpcy5saW5lQ3R4Lnplcm9ZKS1hW2ldWzBdL3RoaXMubGluZUN0eC55UmF0aW9bdGhpcy5saW5lQ3R4LnlheGlzSW5kZXhdKzIqKHRoaXMubGluZUN0eC5pc1JldmVyc2VkP2FbaV1bMF0vdGhpcy5saW5lQ3R4LnlSYXRpb1t0aGlzLmxpbmVDdHgueWF4aXNJbmRleF06MCk7ZWxzZSBpZihvLmNvbmZpZy5jaGFydC5zdGFja2VkJiZpPjAmJnZvaWQgMD09PWFbaV1bMF0pZm9yKHZhciBuPWktMTtuPj0wO24tLSlpZihudWxsIT09YVtuXVswXSYmdm9pZCAwIT09YVtuXVswXSl7cz1yPXRoaXMubGluZUN0eC5wcmV2U2VyaWVzWVtuXVswXTticmVha31yZXR1cm57cHJldlk6cyxsaW5lWVBvc2l0aW9uOnJ9fX1dKSx0fSgpLFh0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkscyl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnh5UmF0aW9zPWksdGhpcy5wb2ludHNDaGFydD0hKFwiYnViYmxlXCIhPT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUmJlwic2NhdHRlclwiIT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlKXx8cyx0aGlzLnNjYXR0ZXI9bmV3IEgodGhpcy5jdHgpLHRoaXMubm9OZWdhdGl2ZXM9dGhpcy53Lmdsb2JhbHMubWluWD09PU51bWJlci5NQVhfVkFMVUUsdGhpcy5saW5lSGVscGVycz1uZXcgTXQodGhpcyksdGhpcy5tYXJrZXJzPW5ldyBEKHRoaXMuY3R4KSx0aGlzLnByZXZTZXJpZXNZPVtdLHRoaXMuY2F0ZWdvcnlBeGlzQ29ycmVjdGlvbj0wLHRoaXMueWF4aXNJbmRleD0wfXJldHVybiByKHQsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCxpLGEscyl7dmFyIHI9dGhpcy53LG89bmV3IG0odGhpcy5jdHgpLG49ci5nbG9iYWxzLmNvbWJvQ2hhcnRzP2k6ci5jb25maWcuY2hhcnQudHlwZSxsPW8uZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1cIi5jb25jYXQobixcIi1zZXJpZXMgYXBleGNoYXJ0cy1wbG90LXNlcmllc1wiKX0pLGg9bmV3IHkodGhpcy5jdHgscik7dGhpcy55UmF0aW89dGhpcy54eVJhdGlvcy55UmF0aW8sdGhpcy56UmF0aW89dGhpcy54eVJhdGlvcy56UmF0aW8sdGhpcy54UmF0aW89dGhpcy54eVJhdGlvcy54UmF0aW8sdGhpcy5iYXNlTGluZVk9dGhpcy54eVJhdGlvcy5iYXNlTGluZVksdD1oLmdldExvZ1Nlcmllcyh0KSx0aGlzLnlSYXRpbz1oLmdldExvZ1lSYXRpb3ModGhpcy55UmF0aW8pO2Zvcih2YXIgYz1bXSxkPTA7ZDx0Lmxlbmd0aDtkKyspe3Q9dGhpcy5saW5lSGVscGVycy5zYW1lVmFsdWVTZXJpZXNGaXgoZCx0KTt2YXIgZz1yLmdsb2JhbHMuY29tYm9DaGFydHM/YVtkXTpkO3RoaXMuX2luaXRTZXJpZVZhcmlhYmxlcyh0LGQsZyk7dmFyIHU9W10scD1bXSxmPXIuZ2xvYmFscy5wYWRIb3Jpem9udGFsK3RoaXMuY2F0ZWdvcnlBeGlzQ29ycmVjdGlvbjt0aGlzLmN0eC5zZXJpZXMuYWRkQ29sbGFwc2VkQ2xhc3NUb1Nlcmllcyh0aGlzLmVsU2VyaWVzLGcpLHIuZ2xvYmFscy5pc1hOdW1lcmljJiZyLmdsb2JhbHMuc2VyaWVzWC5sZW5ndGg+MCYmKGY9KHIuZ2xvYmFscy5zZXJpZXNYW2ddWzBdLXIuZ2xvYmFscy5taW5YKS90aGlzLnhSYXRpbykscC5wdXNoKGYpO3ZhciB4LGI9Zix2PXZvaWQgMCx3PWIsaz10aGlzLnplcm9ZLEE9dGhpcy56ZXJvWTtrPXRoaXMubGluZUhlbHBlcnMuZGV0ZXJtaW5lRmlyc3RQcmV2WSh7aTpkLHNlcmllczp0LHByZXZZOmssbGluZVlQb3NpdGlvbjowfSkucHJldlksdS5wdXNoKGspLHg9aztcInJhbmdlQXJlYVwiPT09biYmKHY9QT10aGlzLmxpbmVIZWxwZXJzLmRldGVybWluZUZpcnN0UHJldlkoe2k6ZCxzZXJpZXM6cyxwcmV2WTpBLGxpbmVZUG9zaXRpb246MH0pLnByZXZZKTt2YXIgUz17dHlwZTpuLHNlcmllczp0LHJlYWxJbmRleDpnLGk6ZCx4OmYseToxLHBYOmIscFk6eCxwYXRoc0Zyb206dGhpcy5fY2FsY3VsYXRlUGF0aHNGcm9tKHt0eXBlOm4sc2VyaWVzOnQsaTpkLHJlYWxJbmRleDpnLHByZXZYOncscHJldlk6ayxwcmV2WTI6QX0pLGxpbmVQYXRoczpbXSxhcmVhUGF0aHM6W10sc2VyaWVzSW5kZXg6YSxsaW5lWVBvc2l0aW9uOjAseEFycmo6cCx5QXJyajp1LHNlcmllc1JhbmdlRW5kOnN9LEM9dGhpcy5faXRlcmF0ZU92ZXJEYXRhUG9pbnRzKGUoZSh7fSxTKSx7fSx7aXRlcmF0aW9uczpcInJhbmdlQXJlYVwiPT09bj90W2RdLmxlbmd0aC0xOnZvaWQgMCxpc1JhbmdlU3RhcnQ6ITB9KSk7aWYoXCJyYW5nZUFyZWFcIj09PW4pe3ZhciBMPXRoaXMuX2NhbGN1bGF0ZVBhdGhzRnJvbSh7c2VyaWVzOnMsaTpkLHJlYWxJbmRleDpnLHByZXZYOncscHJldlk6QX0pLFA9dGhpcy5faXRlcmF0ZU92ZXJEYXRhUG9pbnRzKGUoZSh7fSxTKSx7fSx7c2VyaWVzOnMscFk6dixwYXRoc0Zyb206TCxpdGVyYXRpb25zOnNbZF0ubGVuZ3RoLTEsaXNSYW5nZVN0YXJ0OiExfSkpO0MubGluZVBhdGhzWzBdPVAubGluZVBhdGgrQy5saW5lUGF0aCxDLnBhdGhGcm9tTGluZT1QLnBhdGhGcm9tTGluZStDLnBhdGhGcm9tTGluZX10aGlzLl9oYW5kbGVQYXRocyh7dHlwZTpuLHJlYWxJbmRleDpnLGk6ZCxwYXRoczpDfSksdGhpcy5lbFNlcmllcy5hZGQodGhpcy5lbFBvaW50c01haW4pLHRoaXMuZWxTZXJpZXMuYWRkKHRoaXMuZWxEYXRhTGFiZWxzV3JhcCksYy5wdXNoKHRoaXMuZWxTZXJpZXMpfWlmKHIuY29uZmlnLmNoYXJ0LnN0YWNrZWQpZm9yKHZhciBJPWMubGVuZ3RoO0k+MDtJLS0pbC5hZGQoY1tJLTFdKTtlbHNlIGZvcih2YXIgVD0wO1Q8Yy5sZW5ndGg7VCsrKWwuYWRkKGNbVF0pO3JldHVybiBsfX0se2tleTpcIl9pbml0U2VyaWVWYXJpYWJsZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53LHM9bmV3IG0odGhpcy5jdHgpO3RoaXMueERpdmlzaW9uPWEuZ2xvYmFscy5ncmlkV2lkdGgvKGEuZ2xvYmFscy5kYXRhUG9pbnRzLShcIm9uXCI9PT1hLmNvbmZpZy54YXhpcy50aWNrUGxhY2VtZW50PzE6MCkpLHRoaXMuc3Ryb2tlV2lkdGg9QXJyYXkuaXNBcnJheShhLmNvbmZpZy5zdHJva2Uud2lkdGgpP2EuY29uZmlnLnN0cm9rZS53aWR0aFtpXTphLmNvbmZpZy5zdHJva2Uud2lkdGgsdGhpcy55UmF0aW8ubGVuZ3RoPjEmJih0aGlzLnlheGlzSW5kZXg9aSksdGhpcy5pc1JldmVyc2VkPWEuY29uZmlnLnlheGlzW3RoaXMueWF4aXNJbmRleF0mJmEuY29uZmlnLnlheGlzW3RoaXMueWF4aXNJbmRleF0ucmV2ZXJzZWQsdGhpcy56ZXJvWT1hLmdsb2JhbHMuZ3JpZEhlaWdodC10aGlzLmJhc2VMaW5lWVt0aGlzLnlheGlzSW5kZXhdLSh0aGlzLmlzUmV2ZXJzZWQ/YS5nbG9iYWxzLmdyaWRIZWlnaHQ6MCkrKHRoaXMuaXNSZXZlcnNlZD8yKnRoaXMuYmFzZUxpbmVZW3RoaXMueWF4aXNJbmRleF06MCksdGhpcy5hcmVhQm90dG9tWT10aGlzLnplcm9ZLCh0aGlzLnplcm9ZPmEuZ2xvYmFscy5ncmlkSGVpZ2h0fHxcImVuZFwiPT09YS5jb25maWcucGxvdE9wdGlvbnMuYXJlYS5maWxsVG8pJiYodGhpcy5hcmVhQm90dG9tWT1hLmdsb2JhbHMuZ3JpZEhlaWdodCksdGhpcy5jYXRlZ29yeUF4aXNDb3JyZWN0aW9uPXRoaXMueERpdmlzaW9uLzIsdGhpcy5lbFNlcmllcz1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzXCIsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhhLmdsb2JhbHMuc2VyaWVzTmFtZXNbaV0pfSksdGhpcy5lbFBvaW50c01haW49cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzLXdyYXBcIixcImRhdGE6cmVhbEluZGV4XCI6aX0pLHRoaXMuZWxEYXRhTGFiZWxzV3JhcD1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YWxhYmVsc1wiLFwiZGF0YTpyZWFsSW5kZXhcIjppfSk7dmFyIHI9dFtlXS5sZW5ndGg9PT1hLmdsb2JhbHMuZGF0YVBvaW50czt0aGlzLmVsU2VyaWVzLmF0dHIoe1wiZGF0YTpsb25nZXN0U2VyaWVzXCI6cixyZWw6ZSsxLFwiZGF0YTpyZWFsSW5kZXhcIjppfSksdGhpcy5hcHBlbmRQYXRoRnJvbT0hMH19LHtrZXk6XCJfY2FsY3VsYXRlUGF0aHNGcm9tXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaSxhLHMscj10LnR5cGUsbz10LnNlcmllcyxuPXQuaSxsPXQucmVhbEluZGV4LGg9dC5wcmV2WCxjPXQucHJldlksZD10LnByZXZZMixnPXRoaXMudyx1PW5ldyBtKHRoaXMuY3R4KTtpZihudWxsPT09b1tuXVswXSl7Zm9yKHZhciBwPTA7cDxvW25dLmxlbmd0aDtwKyspaWYobnVsbCE9PW9bbl1bcF0pe2g9dGhpcy54RGl2aXNpb24qcCxjPXRoaXMuemVyb1ktb1tuXVtwXS90aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdLGU9dS5tb3ZlKGgsYyksaT11Lm1vdmUoaCx0aGlzLmFyZWFCb3R0b21ZKTticmVha319ZWxzZSBlPXUubW92ZShoLGMpLFwicmFuZ2VBcmVhXCI9PT1yJiYoZT11Lm1vdmUoaCxkKSt1LmxpbmUoaCxjKSksaT11Lm1vdmUoaCx0aGlzLmFyZWFCb3R0b21ZKSt1LmxpbmUoaCxjKTtpZihhPXUubW92ZSgtMSx0aGlzLnplcm9ZKSt1LmxpbmUoLTEsdGhpcy56ZXJvWSkscz11Lm1vdmUoLTEsdGhpcy56ZXJvWSkrdS5saW5lKC0xLHRoaXMuemVyb1kpLGcuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wKXt2YXIgZj10aGlzLmxpbmVIZWxwZXJzLmNoZWNrUHJldmlvdXNQYXRocyh7cGF0aEZyb21MaW5lOmEscGF0aEZyb21BcmVhOnMscmVhbEluZGV4Omx9KTthPWYucGF0aEZyb21MaW5lLHM9Zi5wYXRoRnJvbUFyZWF9cmV0dXJue3ByZXZYOmgscHJldlk6YyxsaW5lUGF0aDplLGFyZWFQYXRoOmkscGF0aEZyb21MaW5lOmEscGF0aEZyb21BcmVhOnN9fX0se2tleTpcIl9oYW5kbGVQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBpPXQudHlwZSxhPXQucmVhbEluZGV4LHM9dC5pLHI9dC5wYXRocyxvPXRoaXMudyxuPW5ldyBtKHRoaXMuY3R4KSxsPW5ldyBSKHRoaXMuY3R4KTt0aGlzLnByZXZTZXJpZXNZLnB1c2goci55QXJyaiksby5nbG9iYWxzLnNlcmllc1h2YWx1ZXNbYV09ci54QXJyaixvLmdsb2JhbHMuc2VyaWVzWXZhbHVlc1thXT1yLnlBcnJqO3ZhciBoPW8uY29uZmlnLmZvcmVjYXN0RGF0YVBvaW50cztpZihoLmNvdW50PjAmJlwicmFuZ2VBcmVhXCIhPT1pKXt2YXIgYz1vLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1thXVtvLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1thXS5sZW5ndGgtaC5jb3VudC0xXSxkPW4uZHJhd1JlY3QoYywwLG8uZ2xvYmFscy5ncmlkV2lkdGgsby5nbG9iYWxzLmdyaWRIZWlnaHQsMCk7by5nbG9iYWxzLmRvbS5lbEZvcmVjYXN0TWFzay5hcHBlbmRDaGlsZChkLm5vZGUpO3ZhciBnPW4uZHJhd1JlY3QoMCwwLGMsby5nbG9iYWxzLmdyaWRIZWlnaHQsMCk7by5nbG9iYWxzLmRvbS5lbE5vbkZvcmVjYXN0TWFzay5hcHBlbmRDaGlsZChnLm5vZGUpfXRoaXMucG9pbnRzQ2hhcnR8fG8uZ2xvYmFscy5kZWxheWVkRWxlbWVudHMucHVzaCh7ZWw6dGhpcy5lbFBvaW50c01haW4ubm9kZSxpbmRleDphfSk7dmFyIHU9e2k6cyxyZWFsSW5kZXg6YSxhbmltYXRpb25EZWxheTpzLGluaXRpYWxTcGVlZDpvLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkLGRhdGFDaGFuZ2VTcGVlZDpvLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQsY2xhc3NOYW1lOlwiYXBleGNoYXJ0cy1cIi5jb25jYXQoaSl9O2lmKFwiYXJlYVwiPT09aSlmb3IodmFyIHA9bC5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOmF9KSxmPTA7ZjxyLmFyZWFQYXRocy5sZW5ndGg7ZisrKXt2YXIgeD1uLnJlbmRlclBhdGhzKGUoZSh7fSx1KSx7fSx7cGF0aEZyb206ci5wYXRoRnJvbUFyZWEscGF0aFRvOnIuYXJlYVBhdGhzW2ZdLHN0cm9rZTpcIm5vbmVcIixzdHJva2VXaWR0aDowLHN0cm9rZUxpbmVDYXA6bnVsbCxmaWxsOnB9KSk7dGhpcy5lbFNlcmllcy5hZGQoeCl9aWYoby5jb25maWcuc3Ryb2tlLnNob3cmJiF0aGlzLnBvaW50c0NoYXJ0KXt2YXIgYj1udWxsO2lmKFwibGluZVwiPT09aSliPWwuZmlsbFBhdGgoe3Nlcmllc051bWJlcjphLGk6c30pO2Vsc2UgaWYoXCJzb2xpZFwiPT09by5jb25maWcuc3Ryb2tlLmZpbGwudHlwZSliPW8uZ2xvYmFscy5zdHJva2UuY29sb3JzW2FdO2Vsc2V7dmFyIHY9by5jb25maWcuZmlsbDtvLmNvbmZpZy5maWxsPW8uY29uZmlnLnN0cm9rZS5maWxsLGI9bC5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOmEsaTpzfSksby5jb25maWcuZmlsbD12fWZvcih2YXIgeT0wO3k8ci5saW5lUGF0aHMubGVuZ3RoO3krKyl7dmFyIHc9YjtcInJhbmdlQXJlYVwiPT09aSYmKHc9bC5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOmF9KSk7dmFyIGs9ZShlKHt9LHUpLHt9LHtwYXRoRnJvbTpyLnBhdGhGcm9tTGluZSxwYXRoVG86ci5saW5lUGF0aHNbeV0sc3Ryb2tlOmIsc3Ryb2tlV2lkdGg6dGhpcy5zdHJva2VXaWR0aCxzdHJva2VMaW5lQ2FwOm8uY29uZmlnLnN0cm9rZS5saW5lQ2FwLGZpbGw6XCJyYW5nZUFyZWFcIj09PWk/dzpcIm5vbmVcIn0pLEE9bi5yZW5kZXJQYXRocyhrKTtpZih0aGlzLmVsU2VyaWVzLmFkZChBKSxBLmF0dHIoXCJmaWxsLXJ1bGVcIixcImV2ZW5vZGRcIiksaC5jb3VudD4wJiZcInJhbmdlQXJlYVwiIT09aSl7dmFyIFM9bi5yZW5kZXJQYXRocyhrKTtTLm5vZGUuc2V0QXR0cmlidXRlKFwic3Ryb2tlLWRhc2hhcnJheVwiLGguZGFzaEFycmF5KSxoLnN0cm9rZVdpZHRoJiZTLm5vZGUuc2V0QXR0cmlidXRlKFwic3Ryb2tlLXdpZHRoXCIsaC5zdHJva2VXaWR0aCksdGhpcy5lbFNlcmllcy5hZGQoUyksUy5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2ZvcmVjYXN0TWFza1wiLmNvbmNhdChvLmdsb2JhbHMuY3VpZCxcIilcIikpLEEuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNub25Gb3JlY2FzdE1hc2tcIi5jb25jYXQoby5nbG9iYWxzLmN1aWQsXCIpXCIpKX19fX19LHtrZXk6XCJfaXRlcmF0ZU92ZXJEYXRhUG9pbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC50eXBlLGk9dC5zZXJpZXMsYT10Lml0ZXJhdGlvbnMscz10LnJlYWxJbmRleCxyPXQuaSxvPXQueCxuPXQueSxsPXQucFgsaD10LnBZLGM9dC5wYXRoc0Zyb20sZD10LmxpbmVQYXRocyxnPXQuYXJlYVBhdGhzLHU9dC5zZXJpZXNJbmRleCxwPXQubGluZVlQb3NpdGlvbixmPXQueEFycmosYj10LnlBcnJqLHY9dC5pc1JhbmdlU3RhcnQseT10LnNlcmllc1JhbmdlRW5kLHc9dGhpcy53LGs9bmV3IG0odGhpcy5jdHgpLEE9dGhpcy55UmF0aW8sUz1jLnByZXZZLEM9Yy5saW5lUGF0aCxMPWMuYXJlYVBhdGgsUD1jLnBhdGhGcm9tTGluZSxJPWMucGF0aEZyb21BcmVhLFQ9eC5pc051bWJlcih3Lmdsb2JhbHMubWluWUFycltzXSk/dy5nbG9iYWxzLm1pbllBcnJbc106dy5nbG9iYWxzLm1pblk7YXx8KGE9dy5nbG9iYWxzLmRhdGFQb2ludHM+MT93Lmdsb2JhbHMuZGF0YVBvaW50cy0xOncuZ2xvYmFscy5kYXRhUG9pbnRzKTtmb3IodmFyIE09bixYPTA7WDxhO1grKyl7dmFyIHo9dm9pZCAwPT09aVtyXVtYKzFdfHxudWxsPT09aVtyXVtYKzFdO2lmKHcuZ2xvYmFscy5pc1hOdW1lcmljKXt2YXIgRT13Lmdsb2JhbHMuc2VyaWVzWFtzXVtYKzFdO3ZvaWQgMD09PXcuZ2xvYmFscy5zZXJpZXNYW3NdW1grMV0mJihFPXcuZ2xvYmFscy5zZXJpZXNYW3NdW2EtMV0pLG89KEUtdy5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvfWVsc2Ugbys9dGhpcy54RGl2aXNpb247aWYody5jb25maWcuY2hhcnQuc3RhY2tlZClpZihyPjAmJncuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoPHcuY29uZmlnLnNlcmllcy5sZW5ndGgtMSl7cD10aGlzLnByZXZTZXJpZXNZW2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT10LGk9MDtpPHcuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO2krKylpZih3Lmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHQpPi0xKXtlLS07YnJlYWt9cmV0dXJuIGU+PTA/ZTowfShyLTEpXVtYKzFdfWVsc2UgcD10aGlzLnplcm9ZO2Vsc2UgcD10aGlzLnplcm9ZO3o/bj1wLVQvQVt0aGlzLnlheGlzSW5kZXhdKzIqKHRoaXMuaXNSZXZlcnNlZD9UL0FbdGhpcy55YXhpc0luZGV4XTowKToobj1wLWlbcl1bWCsxXS9BW3RoaXMueWF4aXNJbmRleF0rMioodGhpcy5pc1JldmVyc2VkP2lbcl1bWCsxXS9BW3RoaXMueWF4aXNJbmRleF06MCksXCJyYW5nZUFyZWFcIj09PWUmJihNPXAteVtyXVtYKzFdL0FbdGhpcy55YXhpc0luZGV4XSsyKih0aGlzLmlzUmV2ZXJzZWQ/eVtyXVtYKzFdL0FbdGhpcy55YXhpc0luZGV4XTowKSkpLGYucHVzaChvKSxiLnB1c2gobik7dmFyIFk9dGhpcy5saW5lSGVscGVycy5jYWxjdWxhdGVQb2ludHMoe3NlcmllczppLHg6byx5Om4scmVhbEluZGV4OnMsaTpyLGo6WCxwcmV2WTpTfSksRj10aGlzLl9jcmVhdGVQYXRocyh7dHlwZTplLHNlcmllczppLGk6cixyZWFsSW5kZXg6cyxqOlgseDpvLHk6bix5MjpNLHBYOmwscFk6aCxsaW5lUGF0aDpDLGFyZWFQYXRoOkwsbGluZVBhdGhzOmQsYXJlYVBhdGhzOmcsc2VyaWVzSW5kZXg6dSxpc1JhbmdlU3RhcnQ6dn0pO2c9Ri5hcmVhUGF0aHMsZD1GLmxpbmVQYXRocyxsPUYucFgsaD1GLnBZLEw9Ri5hcmVhUGF0aCxDPUYubGluZVBhdGgsdGhpcy5hcHBlbmRQYXRoRnJvbSYmKFArPWsubGluZShvLHRoaXMuemVyb1kpLEkrPWsubGluZShvLHRoaXMuemVyb1kpKSx0aGlzLmhhbmRsZU51bGxEYXRhUG9pbnRzKGksWSxyLFgscyksdGhpcy5faGFuZGxlTWFya2Vyc0FuZExhYmVscyh7dHlwZTplLHBvaW50c1BvczpZLGk6cixqOlgscmVhbEluZGV4OnMsaXNSYW5nZVN0YXJ0OnZ9KX1yZXR1cm57eUFycmo6Yix4QXJyajpmLHBhdGhGcm9tQXJlYTpJLGFyZWFQYXRoczpnLHBhdGhGcm9tTGluZTpQLGxpbmVQYXRoczpkLGxpbmVQYXRoOkMsYXJlYVBhdGg6TH19fSx7a2V5OlwiX2hhbmRsZU1hcmtlcnNBbmRMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnR5cGUsaT10LnBvaW50c1BvcyxhPXQuaXNSYW5nZVN0YXJ0LHM9dC5pLHI9dC5qLG89dC5yZWFsSW5kZXgsbj10aGlzLncsbD1uZXcgTyh0aGlzLmN0eCk7aWYodGhpcy5wb2ludHNDaGFydCl0aGlzLnNjYXR0ZXIuZHJhdyh0aGlzLmVsU2VyaWVzLHIse3JlYWxJbmRleDpvLHBvaW50c1BvczppLHpSYXRpbzp0aGlzLnpSYXRpbyxlbFBhcmVudDp0aGlzLmVsUG9pbnRzTWFpbn0pO2Vsc2V7bi5nbG9iYWxzLnNlcmllc1tzXS5sZW5ndGg+MSYmdGhpcy5lbFBvaW50c01haW4ubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwiKTt2YXIgaD10aGlzLm1hcmtlcnMucGxvdENoYXJ0TWFya2VycyhpLG8scisxKTtudWxsIT09aCYmdGhpcy5lbFBvaW50c01haW4uYWRkKGgpfXZhciBjPWwuZHJhd0RhdGFMYWJlbCh7dHlwZTplLGlzUmFuZ2VTdGFydDphLHBvczppLGk6byxqOnIrMX0pO251bGwhPT1jJiZ0aGlzLmVsRGF0YUxhYmVsc1dyYXAuYWRkKGMpfX0se2tleTpcIl9jcmVhdGVQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQudHlwZSxpPXQuc2VyaWVzLGE9dC5pLHM9dC5yZWFsSW5kZXgscj10Lmosbz10Lngsbj10LnksbD10LnkyLGg9dC5wWCxjPXQucFksZD10LmxpbmVQYXRoLGc9dC5hcmVhUGF0aCx1PXQubGluZVBhdGhzLHA9dC5hcmVhUGF0aHMsZj10LnNlcmllc0luZGV4LHg9dC5pc1JhbmdlU3RhcnQsYj10aGlzLncsdj1uZXcgbSh0aGlzLmN0eCkseT1iLmNvbmZpZy5zdHJva2UuY3VydmUsdz10aGlzLmFyZWFCb3R0b21ZO2lmKEFycmF5LmlzQXJyYXkoYi5jb25maWcuc3Ryb2tlLmN1cnZlKSYmKHk9QXJyYXkuaXNBcnJheShmKT9iLmNvbmZpZy5zdHJva2UuY3VydmVbZlthXV06Yi5jb25maWcuc3Ryb2tlLmN1cnZlW2FdKSxcInNtb290aFwiPT09eSl7dmFyIGs9LjM1KihvLWgpO2IuZ2xvYmFscy5oYXNOdWxsVmFsdWVzPyhudWxsIT09aVthXVtyXSYmKG51bGwhPT1pW2FdW3IrMV0/KGQ9di5tb3ZlKGgsYykrdi5jdXJ2ZShoK2ssYyxvLWssbixvKzEsbiksZz12Lm1vdmUoaCsxLGMpK3YuY3VydmUoaCtrLGMsby1rLG4sbysxLG4pK3YubGluZShvLHcpK3YubGluZShoLHcpK1wielwiKTooZD12Lm1vdmUoaCxjKSxnPXYubW92ZShoLGMpK1wielwiKSksdS5wdXNoKGQpLHAucHVzaChnKSk6KGQrPXYuY3VydmUoaCtrLGMsby1rLG4sbyxuKSxnKz12LmN1cnZlKGgrayxjLG8tayxuLG8sbikpLGg9byxjPW4scj09PWlbYV0ubGVuZ3RoLTImJihnPWcrdi5jdXJ2ZShoLGMsbyxuLG8sdykrdi5tb3ZlKG8sbikrXCJ6XCIsXCJyYW5nZUFyZWFcIj09PWUmJng/ZD1kK3YuY3VydmUoaCxjLG8sbixvLGwpK3YubW92ZShvLGwpK1wielwiOmIuZ2xvYmFscy5oYXNOdWxsVmFsdWVzfHwodS5wdXNoKGQpLHAucHVzaChnKSkpfWVsc2V7aWYobnVsbD09PWlbYV1bcisxXSl7ZCs9di5tb3ZlKG8sbik7dmFyIEE9Yi5nbG9iYWxzLmlzWE51bWVyaWM/KGIuZ2xvYmFscy5zZXJpZXNYW3NdW3JdLWIuZ2xvYmFscy5taW5YKS90aGlzLnhSYXRpbzpvLXRoaXMueERpdmlzaW9uO2c9Zyt2LmxpbmUoQSx3KSt2Lm1vdmUobyxuKStcInpcIn1udWxsPT09aVthXVtyXSYmKGQrPXYubW92ZShvLG4pLGcrPXYubW92ZShvLHcpKSxcInN0ZXBsaW5lXCI9PT15PyhkPWQrdi5saW5lKG8sbnVsbCxcIkhcIikrdi5saW5lKG51bGwsbixcIlZcIiksZz1nK3YubGluZShvLG51bGwsXCJIXCIpK3YubGluZShudWxsLG4sXCJWXCIpKTpcInN0cmFpZ2h0XCI9PT15JiYoZCs9di5saW5lKG8sbiksZys9di5saW5lKG8sbikpLHI9PT1pW2FdLmxlbmd0aC0yJiYoZz1nK3YubGluZShvLHcpK3YubW92ZShvLG4pK1wielwiLFwicmFuZ2VBcmVhXCI9PT1lJiZ4P2Q9ZCt2LmxpbmUobyxsKSt2Lm1vdmUobyxsKStcInpcIjoodS5wdXNoKGQpLHAucHVzaChnKSkpfXJldHVybntsaW5lUGF0aHM6dSxhcmVhUGF0aHM6cCxwWDpoLHBZOmMsbGluZVBhdGg6ZCxhcmVhUGF0aDpnfX19LHtrZXk6XCJoYW5kbGVOdWxsRGF0YVBvaW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyl7dmFyIHI9dGhpcy53O2lmKG51bGw9PT10W2ldW2FdJiZyLmNvbmZpZy5tYXJrZXJzLnNob3dOdWxsRGF0YVBvaW50c3x8MT09PXRbaV0ubGVuZ3RoKXt2YXIgbz10aGlzLm1hcmtlcnMucGxvdENoYXJ0TWFya2VycyhlLHMsYSsxLHRoaXMuc3Ryb2tlV2lkdGgtci5jb25maWcubWFya2Vycy5zdHJva2VXaWR0aC8yLCEwKTtudWxsIT09byYmdGhpcy5lbFBvaW50c01haW4uYWRkKG8pfX19XSksdH0oKTt3aW5kb3cuVHJlZW1hcFNxdWFyZWQ9e30sd2luZG93LlRyZWVtYXBTcXVhcmVkLmdlbmVyYXRlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGksYSxzKXt0aGlzLnhvZmZzZXQ9ZSx0aGlzLnlvZmZzZXQ9aSx0aGlzLmhlaWdodD1zLHRoaXMud2lkdGg9YSx0aGlzLnNob3J0ZXN0RWRnZT1mdW5jdGlvbigpe3JldHVybiBNYXRoLm1pbih0aGlzLmhlaWdodCx0aGlzLndpZHRoKX0sdGhpcy5nZXRDb29yZGluYXRlcz1mdW5jdGlvbih0KXt2YXIgZSxpPVtdLGE9dGhpcy54b2Zmc2V0LHM9dGhpcy55b2Zmc2V0LG89cih0KS90aGlzLmhlaWdodCxuPXIodCkvdGhpcy53aWR0aDtpZih0aGlzLndpZHRoPj10aGlzLmhlaWdodClmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKWkucHVzaChbYSxzLGErbyxzK3RbZV0vb10pLHMrPXRbZV0vbztlbHNlIGZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspaS5wdXNoKFthLHMsYSt0W2VdL24scytuXSksYSs9dFtlXS9uO3JldHVybiBpfSx0aGlzLmN1dEFyZWE9ZnVuY3Rpb24oZSl7dmFyIGk7aWYodGhpcy53aWR0aD49dGhpcy5oZWlnaHQpe3ZhciBhPWUvdGhpcy5oZWlnaHQscz10aGlzLndpZHRoLWE7aT1uZXcgdCh0aGlzLnhvZmZzZXQrYSx0aGlzLnlvZmZzZXQscyx0aGlzLmhlaWdodCl9ZWxzZXt2YXIgcj1lL3RoaXMud2lkdGgsbz10aGlzLmhlaWdodC1yO2k9bmV3IHQodGhpcy54b2Zmc2V0LHRoaXMueW9mZnNldCtyLHRoaXMud2lkdGgsbyl9cmV0dXJuIGl9fWZ1bmN0aW9uIGUoZSxhLHMsbyxuKXtvPXZvaWQgMD09PW8/MDpvLG49dm9pZCAwPT09bj8wOm47dmFyIGw9aShmdW5jdGlvbih0LGUpe3ZhciBpLGE9W10scz1lL3IodCk7Zm9yKGk9MDtpPHQubGVuZ3RoO2krKylhW2ldPXRbaV0qcztyZXR1cm4gYX0oZSxhKnMpLFtdLG5ldyB0KG8sbixhLHMpLFtdKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGUsaSxhPVtdO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspZm9yKGk9MDtpPHRbZV0ubGVuZ3RoO2krKylhLnB1c2godFtlXVtpXSk7cmV0dXJuIGF9KGwpfWZ1bmN0aW9uIGkodCxlLHMsbyl7dmFyIG4sbCxoO2lmKDAhPT10Lmxlbmd0aClyZXR1cm4gbj1zLnNob3J0ZXN0RWRnZSgpLGZ1bmN0aW9uKHQsZSxpKXt2YXIgcztpZigwPT09dC5sZW5ndGgpcmV0dXJuITA7KHM9dC5zbGljZSgpKS5wdXNoKGUpO3ZhciByPWEodCxpKSxvPWEocyxpKTtyZXR1cm4gcj49b30oZSxsPXRbMF0sbik/KGUucHVzaChsKSxpKHQuc2xpY2UoMSksZSxzLG8pKTooaD1zLmN1dEFyZWEocihlKSxvKSxvLnB1c2gocy5nZXRDb29yZGluYXRlcyhlKSksaSh0LFtdLGgsbykpLG87by5wdXNoKHMuZ2V0Q29vcmRpbmF0ZXMoZSkpfWZ1bmN0aW9uIGEodCxlKXt2YXIgaT1NYXRoLm1pbi5hcHBseShNYXRoLHQpLGE9TWF0aC5tYXguYXBwbHkoTWF0aCx0KSxzPXIodCk7cmV0dXJuIE1hdGgubWF4KE1hdGgucG93KGUsMikqYS9NYXRoLnBvdyhzLDIpLE1hdGgucG93KHMsMikvKE1hdGgucG93KGUsMikqaSkpfWZ1bmN0aW9uIHModCl7cmV0dXJuIHQmJnQuY29uc3RydWN0b3I9PT1BcnJheX1mdW5jdGlvbiByKHQpe3ZhciBlLGk9MDtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKWkrPXRbZV07cmV0dXJuIGl9ZnVuY3Rpb24gbyh0KXt2YXIgZSxpPTA7aWYocyh0WzBdKSlmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKWkrPW8odFtlXSk7ZWxzZSBpPXIodCk7cmV0dXJuIGl9cmV0dXJuIGZ1bmN0aW9uIHQoaSxhLHIsbixsKXtuPXZvaWQgMD09PW4/MDpuLGw9dm9pZCAwPT09bD8wOmw7dmFyIGgsYyxkPVtdLGc9W107aWYocyhpWzBdKSl7Zm9yKGM9MDtjPGkubGVuZ3RoO2MrKylkW2NdPW8oaVtjXSk7Zm9yKGg9ZShkLGEscixuLGwpLGM9MDtjPGkubGVuZ3RoO2MrKylnLnB1c2godChpW2NdLGhbY11bMl0taFtjXVswXSxoW2NdWzNdLWhbY11bMV0saFtjXVswXSxoW2NdWzFdKSl9ZWxzZSBnPWUoaSxhLHIsbixsKTtyZXR1cm4gZ319KCk7dmFyIHp0LEV0LFl0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5zdHJva2VXaWR0aD10aGlzLncuY29uZmlnLnN0cm9rZS53aWR0aCx0aGlzLmhlbHBlcnM9bmV3IEF0KGUpLHRoaXMuZHluYW1pY0FuaW09dGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24sdGhpcy5sYWJlbHM9W119cmV0dXJuIHIodCxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53LGE9bmV3IG0odGhpcy5jdHgpLHM9bmV3IFIodGhpcy5jdHgpLHI9YS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXRyZWVtYXBcIn0pO2lmKGkuZ2xvYmFscy5ub0RhdGEpcmV0dXJuIHI7dmFyIG89W107cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmFicyh0KX0pKTtvLnB1c2goZSl9KSksdGhpcy5uZWdSYW5nZT10aGlzLmhlbHBlcnMuY2hlY2tDb2xvclJhbmdlKCksaS5jb25maWcuc2VyaWVzLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7dC5kYXRhLmZvckVhY2goKGZ1bmN0aW9uKHQpe0FycmF5LmlzQXJyYXkoZS5sYWJlbHNbaV0pfHwoZS5sYWJlbHNbaV09W10pLGUubGFiZWxzW2ldLnB1c2godC54KX0pKX0pKSx3aW5kb3cuVHJlZW1hcFNxdWFyZWQuZ2VuZXJhdGUobyxpLmdsb2JhbHMuZ3JpZFdpZHRoLGkuZ2xvYmFscy5ncmlkSGVpZ2h0KS5mb3JFYWNoKChmdW5jdGlvbihvLG4pe3ZhciBsPWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMgYXBleGNoYXJ0cy10cmVlbWFwLXNlcmllc1wiLHNlcmllc05hbWU6eC5lc2NhcGVTdHJpbmcoaS5nbG9iYWxzLnNlcmllc05hbWVzW25dKSxyZWw6bisxLFwiZGF0YTpyZWFsSW5kZXhcIjpufSk7aWYoaS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgaD1pLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93O25ldyB2KGUuY3R4KS5kcm9wU2hhZG93KHIsaCxuKX12YXIgYz1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YS1sYWJlbHNcIn0pO28uZm9yRWFjaCgoZnVuY3Rpb24ocixvKXt2YXIgaD1yWzBdLGM9clsxXSxkPXJbMl0sZz1yWzNdLHU9YS5kcmF3UmVjdChoLGMsZC1oLGctYywwLFwiI2ZmZlwiLDEsZS5zdHJva2VXaWR0aCxpLmNvbmZpZy5wbG90T3B0aW9ucy50cmVlbWFwLnVzZUZpbGxDb2xvckFzU3Ryb2tlP2Y6aS5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbbl0pO3UuYXR0cih7Y3g6aCxjeTpjLGluZGV4Om4saTpuLGo6byx3aWR0aDpkLWgsaGVpZ2h0OmctY30pO3ZhciBwPWUuaGVscGVycy5nZXRTaGFkZUNvbG9yKGkuY29uZmlnLmNoYXJ0LnR5cGUsbixvLGUubmVnUmFuZ2UpLGY9cC5jb2xvcjt2b2lkIDAhPT1pLmNvbmZpZy5zZXJpZXNbbl0uZGF0YVtvXSYmaS5jb25maWcuc2VyaWVzW25dLmRhdGFbb10uZmlsbENvbG9yJiYoZj1pLmNvbmZpZy5zZXJpZXNbbl0uZGF0YVtvXS5maWxsQ29sb3IpO3ZhciB4PXMuZmlsbFBhdGgoe2NvbG9yOmYsc2VyaWVzTnVtYmVyOm4sZGF0YVBvaW50SW5kZXg6b30pO3Uubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10cmVlbWFwLXJlY3RcIiksdS5hdHRyKHtmaWxsOnh9KSxlLmhlbHBlcnMuYWRkTGlzdGVuZXJzKHUpO3ZhciBiPXt4OmgrKGQtaCkvMix5OmMrKGctYykvMix3aWR0aDowLGhlaWdodDowfSx2PXt4OmgseTpjLHdpZHRoOmQtaCxoZWlnaHQ6Zy1jfTtpZihpLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQmJiFpLmdsb2JhbHMuZGF0YUNoYW5nZWQpe3ZhciBtPTE7aS5nbG9iYWxzLnJlc2l6ZWR8fChtPWkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQpLGUuYW5pbWF0ZVRyZWVtYXAodSxiLHYsbSl9aWYoaS5nbG9iYWxzLmRhdGFDaGFuZ2VkKXt2YXIgeT0xO2UuZHluYW1pY0FuaW0uZW5hYmxlZCYmaS5nbG9iYWxzLnNob3VsZEFuaW1hdGUmJih5PWUuZHluYW1pY0FuaW0uc3BlZWQsaS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbbl0mJmkuZ2xvYmFscy5wcmV2aW91c1BhdGhzW25dW29dJiZpLmdsb2JhbHMucHJldmlvdXNQYXRoc1tuXVtvXS5yZWN0JiYoYj1pLmdsb2JhbHMucHJldmlvdXNQYXRoc1tuXVtvXS5yZWN0KSxlLmFuaW1hdGVUcmVlbWFwKHUsYix2LHkpKX12YXIgdz1lLmdldEZvbnRTaXplKHIpLGs9aS5jb25maWcuZGF0YUxhYmVscy5mb3JtYXR0ZXIoZS5sYWJlbHNbbl1bb10se3ZhbHVlOmkuZ2xvYmFscy5zZXJpZXNbbl1bb10sc2VyaWVzSW5kZXg6bixkYXRhUG9pbnRJbmRleDpvLHc6aX0pLEE9ZS5oZWxwZXJzLmNhbGN1bGF0ZURhdGFMYWJlbHMoe3RleHQ6ayx4OihoK2QpLzIseTooYytnKS8yK2Uuc3Ryb2tlV2lkdGgvMit3LzMsaTpuLGo6byxjb2xvclByb3BzOnAsZm9udFNpemU6dyxzZXJpZXM6dH0pO2kuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZCYmQSYmZS5yb3RhdGVUb0ZpdExhYmVsKEEsdyxrLGgsYyxkLGcpLGwuYWRkKHUpLG51bGwhPT1BJiZsLmFkZChBKX0pKSxsLmFkZChjKSxyLmFkZChsKX0pKSxyfX0se2tleTpcImdldEZvbnRTaXplXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O3ZhciBpLGEscyxyLG89ZnVuY3Rpb24gdChlKXt2YXIgaSxhPTA7aWYoQXJyYXkuaXNBcnJheShlWzBdKSlmb3IoaT0wO2k8ZS5sZW5ndGg7aSsrKWErPXQoZVtpXSk7ZWxzZSBmb3IoaT0wO2k8ZS5sZW5ndGg7aSsrKWErPWVbaV0ubGVuZ3RoO3JldHVybiBhfSh0aGlzLmxhYmVscykvZnVuY3Rpb24gdChlKXt2YXIgaSxhPTA7aWYoQXJyYXkuaXNBcnJheShlWzBdKSlmb3IoaT0wO2k8ZS5sZW5ndGg7aSsrKWErPXQoZVtpXSk7ZWxzZSBmb3IoaT0wO2k8ZS5sZW5ndGg7aSsrKWErPTE7cmV0dXJuIGF9KHRoaXMubGFiZWxzKTtyZXR1cm4gaT10WzJdLXRbMF0sYT10WzNdLXRbMV0scz1pKmEscj1NYXRoLnBvdyhzLC41KSxNYXRoLm1pbihyL28scGFyc2VJbnQoZS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5mb250U2l6ZSwxMCkpfX0se2tleTpcInJvdGF0ZVRvRml0TGFiZWxcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscixvKXt2YXIgbj1uZXcgbSh0aGlzLmN0eCksbD1uLmdldFRleHRSZWN0cyhpLGUpO2lmKGwud2lkdGgrdGhpcy53LmNvbmZpZy5zdHJva2Uud2lkdGgrNT5yLWEmJmwud2lkdGg8PW8tcyl7dmFyIGg9bi5yb3RhdGVBcm91bmRDZW50ZXIodC5ub2RlKTt0Lm5vZGUuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJyb3RhdGUoLTkwIFwiLmNvbmNhdChoLngsXCIgXCIpLmNvbmNhdChoLnksXCIpXCIpKX19fSx7a2V5OlwiYW5pbWF0ZVRyZWVtYXBcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz1uZXcgYih0aGlzLmN0eCk7cy5hbmltYXRlUmVjdCh0LHt4OmUueCx5OmUueSx3aWR0aDplLndpZHRoLGhlaWdodDplLmhlaWdodH0se3g6aS54LHk6aS55LHdpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0fSxhLChmdW5jdGlvbigpe3MuYW5pbWF0aW9uQ29tcGxldGVkKHQpfSkpfX1dKSx0fSgpLEZ0PTg2NDAwLFJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMudGltZVNjYWxlQXJyYXk9W10sdGhpcy51dGM9dGhpcy53LmNvbmZpZy54YXhpcy5sYWJlbHMuZGF0ZXRpbWVVVEN9cmV0dXJuIHIodCxbe2tleTpcImNhbGN1bGF0ZVRpbWVTY2FsZVRpY2tzXCIsdmFsdWU6ZnVuY3Rpb24odCxpKXt2YXIgYT10aGlzLHM9dGhpcy53O2lmKHMuZ2xvYmFscy5hbGxTZXJpZXNDb2xsYXBzZWQpcmV0dXJuIHMuZ2xvYmFscy5sYWJlbHM9W10scy5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscz1bXSxbXTt2YXIgcj1uZXcgSSh0aGlzLmN0eCksbz0oaS10KS84NjRlNTt0aGlzLmRldGVybWluZUludGVydmFsKG8pLHMuZ2xvYmFscy5kaXNhYmxlWm9vbUluPSExLHMuZ2xvYmFscy5kaXNhYmxlWm9vbU91dD0hMSxvPC4wMDAxMTU3NDA3NDA3NDA3NDA3NT9zLmdsb2JhbHMuZGlzYWJsZVpvb21Jbj0hMDpvPjVlNCYmKHMuZ2xvYmFscy5kaXNhYmxlWm9vbU91dD0hMCk7dmFyIG49ci5nZXRUaW1lVW5pdHNmcm9tVGltZXN0YW1wKHQsaSx0aGlzLnV0YyksbD1zLmdsb2JhbHMuZ3JpZFdpZHRoL28saD1sLzI0LGM9aC82MCxkPWMvNjAsZz1NYXRoLmZsb29yKDI0Km8pLHU9TWF0aC5mbG9vcigxNDQwKm8pLHA9TWF0aC5mbG9vcihvKkZ0KSxmPU1hdGguZmxvb3IobykseD1NYXRoLmZsb29yKG8vMzApLGI9TWF0aC5mbG9vcihvLzM2NSksdj17bWluTWlsbGlzZWNvbmQ6bi5taW5NaWxsaXNlY29uZCxtaW5TZWNvbmQ6bi5taW5TZWNvbmQsbWluTWludXRlOm4ubWluTWludXRlLG1pbkhvdXI6bi5taW5Ib3VyLG1pbkRhdGU6bi5taW5EYXRlLG1pbk1vbnRoOm4ubWluTW9udGgsbWluWWVhcjpuLm1pblllYXJ9LG09e2ZpcnN0VmFsOnYsY3VycmVudE1pbGxpc2Vjb25kOnYubWluTWlsbGlzZWNvbmQsY3VycmVudFNlY29uZDp2Lm1pblNlY29uZCxjdXJyZW50TWludXRlOnYubWluTWludXRlLGN1cnJlbnRIb3VyOnYubWluSG91cixjdXJyZW50TW9udGhEYXRlOnYubWluRGF0ZSxjdXJyZW50RGF0ZTp2Lm1pbkRhdGUsY3VycmVudE1vbnRoOnYubWluTW9udGgsY3VycmVudFllYXI6di5taW5ZZWFyLGRheXNXaWR0aE9uWEF4aXM6bCxob3Vyc1dpZHRoT25YQXhpczpoLG1pbnV0ZXNXaWR0aE9uWEF4aXM6YyxzZWNvbmRzV2lkdGhPblhBeGlzOmQsbnVtYmVyT2ZTZWNvbmRzOnAsbnVtYmVyT2ZNaW51dGVzOnUsbnVtYmVyT2ZIb3VyczpnLG51bWJlck9mRGF5czpmLG51bWJlck9mTW9udGhzOngsbnVtYmVyT2ZZZWFyczpifTtzd2l0Y2godGhpcy50aWNrSW50ZXJ2YWwpe2Nhc2VcInllYXJzXCI6dGhpcy5nZW5lcmF0ZVllYXJTY2FsZShtKTticmVhaztjYXNlXCJtb250aHNcIjpjYXNlXCJoYWxmX3llYXJcIjp0aGlzLmdlbmVyYXRlTW9udGhTY2FsZShtKTticmVhaztjYXNlXCJtb250aHNfZGF5c1wiOmNhc2VcIm1vbnRoc19mb3J0bmlnaHRcIjpjYXNlXCJkYXlzXCI6Y2FzZVwid2Vla19kYXlzXCI6dGhpcy5nZW5lcmF0ZURheVNjYWxlKG0pO2JyZWFrO2Nhc2VcImhvdXJzXCI6dGhpcy5nZW5lcmF0ZUhvdXJTY2FsZShtKTticmVhaztjYXNlXCJtaW51dGVzX2ZpdmVzXCI6Y2FzZVwibWludXRlc1wiOnRoaXMuZ2VuZXJhdGVNaW51dGVTY2FsZShtKTticmVhaztjYXNlXCJzZWNvbmRzX3RlbnNcIjpjYXNlXCJzZWNvbmRzX2ZpdmVzXCI6Y2FzZVwic2Vjb25kc1wiOnRoaXMuZ2VuZXJhdGVTZWNvbmRTY2FsZShtKX12YXIgeT10aGlzLnRpbWVTY2FsZUFycmF5Lm1hcCgoZnVuY3Rpb24odCl7dmFyIGk9e3Bvc2l0aW9uOnQucG9zaXRpb24sdW5pdDp0LnVuaXQseWVhcjp0LnllYXIsZGF5OnQuZGF5P3QuZGF5OjEsaG91cjp0LmhvdXI/dC5ob3VyOjAsbW9udGg6dC5tb250aCsxfTtyZXR1cm5cIm1vbnRoXCI9PT10LnVuaXQ/ZShlKHt9LGkpLHt9LHtkYXk6MSx2YWx1ZTp0LnZhbHVlKzF9KTpcImRheVwiPT09dC51bml0fHxcImhvdXJcIj09PXQudW5pdD9lKGUoe30saSkse30se3ZhbHVlOnQudmFsdWV9KTpcIm1pbnV0ZVwiPT09dC51bml0P2UoZSh7fSxpKSx7fSx7dmFsdWU6dC52YWx1ZSxtaW51dGU6dC52YWx1ZX0pOlwic2Vjb25kXCI9PT10LnVuaXQ/ZShlKHt9LGkpLHt9LHt2YWx1ZTp0LnZhbHVlLG1pbnV0ZTp0Lm1pbnV0ZSxzZWNvbmQ6dC5zZWNvbmR9KTp0fSkpO3JldHVybiB5LmZpbHRlcigoZnVuY3Rpb24odCl7dmFyIGU9MSxpPU1hdGguY2VpbChzLmdsb2JhbHMuZ3JpZFdpZHRoLzEyMCkscj10LnZhbHVlO3ZvaWQgMCE9PXMuY29uZmlnLnhheGlzLnRpY2tBbW91bnQmJihpPXMuY29uZmlnLnhheGlzLnRpY2tBbW91bnQpLHkubGVuZ3RoPmkmJihlPU1hdGguZmxvb3IoeS5sZW5ndGgvaSkpO3ZhciBvPSExLG49ITE7c3dpdGNoKGEudGlja0ludGVydmFsKXtjYXNlXCJ5ZWFyc1wiOlwieWVhclwiPT09dC51bml0JiYobz0hMCk7YnJlYWs7Y2FzZVwiaGFsZl95ZWFyXCI6ZT03LFwieWVhclwiPT09dC51bml0JiYobz0hMCk7YnJlYWs7Y2FzZVwibW9udGhzXCI6ZT0xLFwieWVhclwiPT09dC51bml0JiYobz0hMCk7YnJlYWs7Y2FzZVwibW9udGhzX2ZvcnRuaWdodFwiOmU9MTUsXCJ5ZWFyXCIhPT10LnVuaXQmJlwibW9udGhcIiE9PXQudW5pdHx8KG89ITApLDMwPT09ciYmKG49ITApO2JyZWFrO2Nhc2VcIm1vbnRoc19kYXlzXCI6ZT0xMCxcIm1vbnRoXCI9PT10LnVuaXQmJihvPSEwKSwzMD09PXImJihuPSEwKTticmVhaztjYXNlXCJ3ZWVrX2RheXNcIjplPTgsXCJtb250aFwiPT09dC51bml0JiYobz0hMCk7YnJlYWs7Y2FzZVwiZGF5c1wiOmU9MSxcIm1vbnRoXCI9PT10LnVuaXQmJihvPSEwKTticmVhaztjYXNlXCJob3Vyc1wiOlwiZGF5XCI9PT10LnVuaXQmJihvPSEwKTticmVhaztjYXNlXCJtaW51dGVzX2ZpdmVzXCI6Y2FzZVwic2Vjb25kc19maXZlc1wiOnIlNSE9MCYmKG49ITApO2JyZWFrO2Nhc2VcInNlY29uZHNfdGVuc1wiOnIlMTAhPTAmJihuPSEwKX1pZihcImhvdXJzXCI9PT1hLnRpY2tJbnRlcnZhbHx8XCJtaW51dGVzX2ZpdmVzXCI9PT1hLnRpY2tJbnRlcnZhbHx8XCJzZWNvbmRzX3RlbnNcIj09PWEudGlja0ludGVydmFsfHxcInNlY29uZHNfZml2ZXNcIj09PWEudGlja0ludGVydmFsKXtpZighbilyZXR1cm4hMH1lbHNlIGlmKChyJWU9PTB8fG8pJiYhbilyZXR1cm4hMH0pKX19LHtrZXk6XCJyZWNhbGNEaW1lbnNpb25zQmFzZWRPbkZvcm1hdFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9dGhpcy5mb3JtYXREYXRlcyh0KSxzPXRoaXMucmVtb3ZlT3ZlcmxhcHBpbmdUUyhhKTtpLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzPXMuc2xpY2UoKSxuZXcgb3QodGhpcy5jdHgpLnBsb3RDb29yZHMoKX19LHtrZXk6XCJkZXRlcm1pbmVJbnRlcnZhbFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPTI0KnQsaT02MCplO3N3aXRjaCghMCl7Y2FzZSB0LzM2NT41OnRoaXMudGlja0ludGVydmFsPVwieWVhcnNcIjticmVhaztjYXNlIHQ+ODAwOnRoaXMudGlja0ludGVydmFsPVwiaGFsZl95ZWFyXCI7YnJlYWs7Y2FzZSB0PjE4MDp0aGlzLnRpY2tJbnRlcnZhbD1cIm1vbnRoc1wiO2JyZWFrO2Nhc2UgdD45MDp0aGlzLnRpY2tJbnRlcnZhbD1cIm1vbnRoc19mb3J0bmlnaHRcIjticmVhaztjYXNlIHQ+NjA6dGhpcy50aWNrSW50ZXJ2YWw9XCJtb250aHNfZGF5c1wiO2JyZWFrO2Nhc2UgdD4zMDp0aGlzLnRpY2tJbnRlcnZhbD1cIndlZWtfZGF5c1wiO2JyZWFrO2Nhc2UgdD4yOnRoaXMudGlja0ludGVydmFsPVwiZGF5c1wiO2JyZWFrO2Nhc2UgZT4yLjQ6dGhpcy50aWNrSW50ZXJ2YWw9XCJob3Vyc1wiO2JyZWFrO2Nhc2UgaT4xNTp0aGlzLnRpY2tJbnRlcnZhbD1cIm1pbnV0ZXNfZml2ZXNcIjticmVhaztjYXNlIGk+NTp0aGlzLnRpY2tJbnRlcnZhbD1cIm1pbnV0ZXNcIjticmVhaztjYXNlIGk+MTp0aGlzLnRpY2tJbnRlcnZhbD1cInNlY29uZHNfdGVuc1wiO2JyZWFrO2Nhc2UgNjAqaT4yMDp0aGlzLnRpY2tJbnRlcnZhbD1cInNlY29uZHNfZml2ZXNcIjticmVhaztkZWZhdWx0OnRoaXMudGlja0ludGVydmFsPVwic2Vjb25kc1wifX19LHtrZXk6XCJnZW5lcmF0ZVllYXJTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZmlyc3RWYWwsaT10LmN1cnJlbnRNb250aCxhPXQuY3VycmVudFllYXIscz10LmRheXNXaWR0aE9uWEF4aXMscj10Lm51bWJlck9mWWVhcnMsbz1lLm1pblllYXIsbj0wLGw9bmV3IEkodGhpcy5jdHgpLGg9XCJ5ZWFyXCI7aWYoZS5taW5EYXRlPjF8fGUubWluTW9udGg+MCl7dmFyIGM9bC5kZXRlcm1pbmVSZW1haW5pbmdEYXlzT2ZZZWFyKGUubWluWWVhcixlLm1pbk1vbnRoLGUubWluRGF0ZSk7bj0obC5kZXRlcm1pbmVEYXlzT2ZZZWFyKGUubWluWWVhciktYysxKSpzLG89ZS5taW5ZZWFyKzEsdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpuLHZhbHVlOm8sdW5pdDpoLHllYXI6byxtb250aDp4Lm1vbnRoTW9kKGkrMSl9KX1lbHNlIDE9PT1lLm1pbkRhdGUmJjA9PT1lLm1pbk1vbnRoJiZ0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOm4sdmFsdWU6byx1bml0OmgseWVhcjphLG1vbnRoOngubW9udGhNb2QoaSsxKX0pO2Zvcih2YXIgZD1vLGc9bix1PTA7dTxyO3UrKylkKyssZz1sLmRldGVybWluZURheXNPZlllYXIoZC0xKSpzK2csdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpnLHZhbHVlOmQsdW5pdDpoLHllYXI6ZCxtb250aDoxfSl9fSx7a2V5OlwiZ2VuZXJhdGVNb250aFNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5maXJzdFZhbCxpPXQuY3VycmVudE1vbnRoRGF0ZSxhPXQuY3VycmVudE1vbnRoLHM9dC5jdXJyZW50WWVhcixyPXQuZGF5c1dpZHRoT25YQXhpcyxvPXQubnVtYmVyT2ZNb250aHMsbj1hLGw9MCxoPW5ldyBJKHRoaXMuY3R4KSxjPVwibW9udGhcIixkPTA7aWYoZS5taW5EYXRlPjEpe2w9KGguZGV0ZXJtaW5lRGF5c09mTW9udGhzKGErMSxlLm1pblllYXIpLWkrMSkqcixuPXgubW9udGhNb2QoYSsxKTt2YXIgZz1zK2QsdT14Lm1vbnRoTW9kKG4pLHA9bjswPT09biYmKGM9XCJ5ZWFyXCIscD1nLHU9MSxnKz1kKz0xKSx0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmwsdmFsdWU6cCx1bml0OmMseWVhcjpnLG1vbnRoOnV9KX1lbHNlIHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246bCx2YWx1ZTpuLHVuaXQ6Yyx5ZWFyOnMsbW9udGg6eC5tb250aE1vZChhKX0pO2Zvcih2YXIgZj1uKzEsYj1sLHY9MCxtPTE7djxvO3YrKyxtKyspezA9PT0oZj14Lm1vbnRoTW9kKGYpKT8oYz1cInllYXJcIixkKz0xKTpjPVwibW9udGhcIjt2YXIgeT10aGlzLl9nZXRZZWFyKHMsZixkKTtiPWguZGV0ZXJtaW5lRGF5c09mTW9udGhzKGYseSkqcitiO3ZhciB3PTA9PT1mP3k6Zjt0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmIsdmFsdWU6dyx1bml0OmMseWVhcjp5LG1vbnRoOjA9PT1mPzE6Zn0pLGYrK319fSx7a2V5OlwiZ2VuZXJhdGVEYXlTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZmlyc3RWYWwsaT10LmN1cnJlbnRNb250aCxhPXQuY3VycmVudFllYXIscz10LmhvdXJzV2lkdGhPblhBeGlzLHI9dC5udW1iZXJPZkRheXMsbz1uZXcgSSh0aGlzLmN0eCksbj1cImRheVwiLGw9ZS5taW5EYXRlKzEsaD1sLGM9ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0Pm8uZGV0ZXJtaW5lRGF5c09mTW9udGhzKGUrMSxpKT8oaD0xLG49XCJtb250aFwiLGc9ZSs9MSxlKTplfSxkPSgyNC1lLm1pbkhvdXIpKnMsZz1sLHU9YyhoLGksYSk7MD09PWUubWluSG91ciYmMT09PWUubWluRGF0ZT8oZD0wLGc9eC5tb250aE1vZChlLm1pbk1vbnRoKSxuPVwibW9udGhcIixoPWUubWluRGF0ZSxyKyspOjEhPT1lLm1pbkRhdGUmJjA9PT1lLm1pbkhvdXImJjA9PT1lLm1pbk1pbnV0ZSYmKGQ9MCxsPWUubWluRGF0ZSxnPWwsdT1jKGg9bCxpLGEpKSx0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmQsdmFsdWU6Zyx1bml0Om4seWVhcjp0aGlzLl9nZXRZZWFyKGEsdSwwKSxtb250aDp4Lm1vbnRoTW9kKHUpLGRheTpofSk7Zm9yKHZhciBwPWQsZj0wO2Y8cjtmKyspe249XCJkYXlcIix1PWMoaCs9MSx1LHRoaXMuX2dldFllYXIoYSx1LDApKTt2YXIgYj10aGlzLl9nZXRZZWFyKGEsdSwwKTtwPTI0KnMrcDt2YXIgdj0xPT09aD94Lm1vbnRoTW9kKHUpOmg7dGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpwLHZhbHVlOnYsdW5pdDpuLHllYXI6Yixtb250aDp4Lm1vbnRoTW9kKHUpLGRheTp2fSl9fX0se2tleTpcImdlbmVyYXRlSG91clNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5maXJzdFZhbCxpPXQuY3VycmVudERhdGUsYT10LmN1cnJlbnRNb250aCxzPXQuY3VycmVudFllYXIscj10Lm1pbnV0ZXNXaWR0aE9uWEF4aXMsbz10Lm51bWJlck9mSG91cnMsbj1uZXcgSSh0aGlzLmN0eCksbD1cImhvdXJcIixoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+bi5kZXRlcm1pbmVEYXlzT2ZNb250aHMoZSsxLHMpJiYoZj0xLGUrPTEpLHttb250aDplLGRhdGU6Zn19LGM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD5uLmRldGVybWluZURheXNPZk1vbnRocyhlKzEscyk/ZSs9MTplfSxkPTYwLShlLm1pbk1pbnV0ZStlLm1pblNlY29uZC82MCksZz1kKnIsdT1lLm1pbkhvdXIrMSxwPXUrMTs2MD09PWQmJihnPTAscD0odT1lLm1pbkhvdXIpKzEpO3ZhciBmPWksYj1jKGYsYSk7dGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpnLHZhbHVlOnUsdW5pdDpsLGRheTpmLGhvdXI6cCx5ZWFyOnMsbW9udGg6eC5tb250aE1vZChiKX0pO2Zvcih2YXIgdj1nLG09MDttPG87bSsrKXtpZihsPVwiaG91clwiLHA+PTI0KXA9MCxsPVwiZGF5XCIsYj1oKGYrPTEsYikubW9udGgsYj1jKGYsYik7dmFyIHk9dGhpcy5fZ2V0WWVhcihzLGIsMCk7dj02MCpyK3Y7dmFyIHc9MD09PXA/ZjpwO3RoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246dix2YWx1ZTp3LHVuaXQ6bCxob3VyOnAsZGF5OmYseWVhcjp5LG1vbnRoOngubW9udGhNb2QoYil9KSxwKyt9fX0se2tleTpcImdlbmVyYXRlTWludXRlU2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5jdXJyZW50TWlsbGlzZWNvbmQsaT10LmN1cnJlbnRTZWNvbmQsYT10LmN1cnJlbnRNaW51dGUscz10LmN1cnJlbnRIb3VyLHI9dC5jdXJyZW50RGF0ZSxvPXQuY3VycmVudE1vbnRoLG49dC5jdXJyZW50WWVhcixsPXQubWludXRlc1dpZHRoT25YQXhpcyxoPXQuc2Vjb25kc1dpZHRoT25YQXhpcyxjPXQubnVtYmVyT2ZNaW51dGVzLGQ9YSsxLGc9cix1PW8scD1uLGY9cyxiPSg2MC1pLWUvMWUzKSpoLHY9MDt2PGM7disrKWQ+PTYwJiYoZD0wLDI0PT09KGYrPTEpJiYoZj0wKSksdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpiLHZhbHVlOmQsdW5pdDpcIm1pbnV0ZVwiLGhvdXI6ZixtaW51dGU6ZCxkYXk6Zyx5ZWFyOnRoaXMuX2dldFllYXIocCx1LDApLG1vbnRoOngubW9udGhNb2QodSl9KSxiKz1sLGQrK319LHtrZXk6XCJnZW5lcmF0ZVNlY29uZFNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuY3VycmVudE1pbGxpc2Vjb25kLGk9dC5jdXJyZW50U2Vjb25kLGE9dC5jdXJyZW50TWludXRlLHM9dC5jdXJyZW50SG91cixyPXQuY3VycmVudERhdGUsbz10LmN1cnJlbnRNb250aCxuPXQuY3VycmVudFllYXIsbD10LnNlY29uZHNXaWR0aE9uWEF4aXMsaD10Lm51bWJlck9mU2Vjb25kcyxjPWkrMSxkPWEsZz1yLHU9byxwPW4sZj1zLGI9KDFlMy1lKS8xZTMqbCx2PTA7djxoO3YrKyljPj02MCYmKGM9MCwrK2Q+PTYwJiYoZD0wLDI0PT09KytmJiYoZj0wKSkpLHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246Yix2YWx1ZTpjLHVuaXQ6XCJzZWNvbmRcIixob3VyOmYsbWludXRlOmQsc2Vjb25kOmMsZGF5OmcseWVhcjp0aGlzLl9nZXRZZWFyKHAsdSwwKSxtb250aDp4Lm1vbnRoTW9kKHUpfSksYis9bCxjKyt9fSx7a2V5OlwiY3JlYXRlUmF3RGF0ZVN0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dC55ZWFyO3JldHVybiAwPT09dC5tb250aCYmKHQubW9udGg9MSksaSs9XCItXCIrKFwiMFwiK3QubW9udGgudG9TdHJpbmcoKSkuc2xpY2UoLTIpLFwiZGF5XCI9PT10LnVuaXQ/aSs9XCJkYXlcIj09PXQudW5pdD9cIi1cIisoXCIwXCIrZSkuc2xpY2UoLTIpOlwiLTAxXCI6aSs9XCItXCIrKFwiMFwiKyh0LmRheT90LmRheTpcIjFcIikpLnNsaWNlKC0yKSxcImhvdXJcIj09PXQudW5pdD9pKz1cImhvdXJcIj09PXQudW5pdD9cIlRcIisoXCIwXCIrZSkuc2xpY2UoLTIpOlwiVDAwXCI6aSs9XCJUXCIrKFwiMFwiKyh0LmhvdXI/dC5ob3VyOlwiMFwiKSkuc2xpY2UoLTIpLFwibWludXRlXCI9PT10LnVuaXQ/aSs9XCI6XCIrKFwiMFwiK2UpLnNsaWNlKC0yKTppKz1cIjpcIisodC5taW51dGU/KFwiMFwiK3QubWludXRlKS5zbGljZSgtMik6XCIwMFwiKSxcInNlY29uZFwiPT09dC51bml0P2krPVwiOlwiKyhcIjBcIitlKS5zbGljZSgtMik6aSs9XCI6MDBcIix0aGlzLnV0YyYmKGkrPVwiLjAwMFpcIiksaX19LHtrZXk6XCJmb3JtYXREYXRlc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLnc7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXt2YXIgYT10LnZhbHVlLnRvU3RyaW5nKCkscz1uZXcgSShlLmN0eCkscj1lLmNyZWF0ZVJhd0RhdGVTdHJpbmcodCxhKSxvPXMuZ2V0RGF0ZShzLnBhcnNlRGF0ZShyKSk7aWYoZS51dGN8fChvPXMuZ2V0RGF0ZShzLnBhcnNlRGF0ZVdpdGhUaW1lem9uZShyKSkpLHZvaWQgMD09PWkuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXQpe3ZhciBuPVwiZGQgTU1NXCIsbD1pLmNvbmZpZy54YXhpcy5sYWJlbHMuZGF0ZXRpbWVGb3JtYXR0ZXI7XCJ5ZWFyXCI9PT10LnVuaXQmJihuPWwueWVhciksXCJtb250aFwiPT09dC51bml0JiYobj1sLm1vbnRoKSxcImRheVwiPT09dC51bml0JiYobj1sLmRheSksXCJob3VyXCI9PT10LnVuaXQmJihuPWwuaG91ciksXCJtaW51dGVcIj09PXQudW5pdCYmKG49bC5taW51dGUpLFwic2Vjb25kXCI9PT10LnVuaXQmJihuPWwuc2Vjb25kKSxhPXMuZm9ybWF0RGF0ZShvLG4pfWVsc2UgYT1zLmZvcm1hdERhdGUobyxpLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0KTtyZXR1cm57ZGF0ZVN0cmluZzpyLHBvc2l0aW9uOnQucG9zaXRpb24sdmFsdWU6YSx1bml0OnQudW5pdCx5ZWFyOnQueWVhcixtb250aDp0Lm1vbnRofX0pKX19LHtrZXk6XCJyZW1vdmVPdmVybGFwcGluZ1RTXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLGE9bmV3IG0odGhpcy5jdHgpLHM9ITE7dC5sZW5ndGg+MCYmdFswXS52YWx1ZSYmdC5ldmVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWUubGVuZ3RoPT09dFswXS52YWx1ZS5sZW5ndGh9KSkmJihzPSEwLGU9YS5nZXRUZXh0UmVjdHModFswXS52YWx1ZSkud2lkdGgpO3ZhciByPTAsbz10Lm1hcCgoZnVuY3Rpb24obyxuKXtpZihuPjAmJmkudy5jb25maWcueGF4aXMubGFiZWxzLmhpZGVPdmVybGFwcGluZ0xhYmVscyl7dmFyIGw9cz9lOmEuZ2V0VGV4dFJlY3RzKHRbcl0udmFsdWUpLndpZHRoLGg9dFtyXS5wb3NpdGlvbjtyZXR1cm4gby5wb3NpdGlvbj5oK2wrMTA/KHI9bixvKTpudWxsfXJldHVybiBvfSkpO3JldHVybiBvPW8uZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9PXR9KSl9fSx7a2V5OlwiX2dldFllYXJcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHQrTWF0aC5mbG9vcihlLzEyKStpfX1dKSx0fSgpLER0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe2EodGhpcyx0KSx0aGlzLmN0eD1pLHRoaXMudz1pLncsdGhpcy5lbD1lfXJldHVybiByKHQsW3trZXk6XCJzZXR1cEVsZW1lbnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscyxlPXRoaXMudy5jb25maWcsaT1lLmNoYXJ0LnR5cGU7dC5heGlzQ2hhcnRzPVtcImxpbmVcIixcImFyZWFcIixcImJhclwiLFwicmFuZ2VCYXJcIixcInJhbmdlQXJlYVwiLFwiY2FuZGxlc3RpY2tcIixcImJveFBsb3RcIixcInNjYXR0ZXJcIixcImJ1YmJsZVwiLFwicmFkYXJcIixcImhlYXRtYXBcIixcInRyZWVtYXBcIl0uaW5kZXhPZihpKT4tMSx0Lnh5Q2hhcnRzPVtcImxpbmVcIixcImFyZWFcIixcImJhclwiLFwicmFuZ2VCYXJcIixcInJhbmdlQXJlYVwiLFwiY2FuZGxlc3RpY2tcIixcImJveFBsb3RcIixcInNjYXR0ZXJcIixcImJ1YmJsZVwiXS5pbmRleE9mKGkpPi0xLHQuaXNCYXJIb3Jpem9udGFsPShcImJhclwiPT09ZS5jaGFydC50eXBlfHxcInJhbmdlQmFyXCI9PT1lLmNoYXJ0LnR5cGV8fFwiYm94UGxvdFwiPT09ZS5jaGFydC50eXBlKSYmZS5wbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbCx0LmNoYXJ0Q2xhc3M9XCIuYXBleGNoYXJ0c1wiK3QuY2hhcnRJRCx0LmRvbS5iYXNlRWw9dGhpcy5lbCx0LmRvbS5lbFdyYXA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxtLnNldEF0dHJzKHQuZG9tLmVsV3JhcCx7aWQ6dC5jaGFydENsYXNzLnN1YnN0cmluZygxKSxjbGFzczpcImFwZXhjaGFydHMtY2FudmFzIFwiK3QuY2hhcnRDbGFzcy5zdWJzdHJpbmcoMSl9KSx0aGlzLmVsLmFwcGVuZENoaWxkKHQuZG9tLmVsV3JhcCksdC5kb20uUGFwZXI9bmV3IHdpbmRvdy5TVkcuRG9jKHQuZG9tLmVsV3JhcCksdC5kb20uUGFwZXIuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLXN2Z1wiLFwieG1sbnM6ZGF0YVwiOlwiQXBleENoYXJ0c05TXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdChlLmNoYXJ0Lm9mZnNldFgsXCIsIFwiKS5jb25jYXQoZS5jaGFydC5vZmZzZXRZLFwiKVwiKX0pLHQuZG9tLlBhcGVyLm5vZGUuc3R5bGUuYmFja2dyb3VuZD1lLmNoYXJ0LmJhY2tncm91bmQsdGhpcy5zZXRTVkdEaW1lbnNpb25zKCksdC5kb20uZWxMZWdlbmRGb3JlaWduPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LlNWR05TLFwiZm9yZWlnbk9iamVjdFwiKSxtLnNldEF0dHJzKHQuZG9tLmVsTGVnZW5kRm9yZWlnbix7eDowLHk6MCx3aWR0aDp0LnN2Z1dpZHRoLGhlaWdodDp0LnN2Z0hlaWdodH0pLHQuZG9tLmVsTGVnZW5kV3JhcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHQuZG9tLmVsTGVnZW5kV3JhcC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1sZWdlbmRcIiksdC5kb20uZWxMZWdlbmRXcmFwLnNldEF0dHJpYnV0ZShcInhtbG5zXCIsXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCIpLHQuZG9tLmVsTGVnZW5kRm9yZWlnbi5hcHBlbmRDaGlsZCh0LmRvbS5lbExlZ2VuZFdyYXApLHQuZG9tLlBhcGVyLm5vZGUuYXBwZW5kQ2hpbGQodC5kb20uZWxMZWdlbmRGb3JlaWduKSx0LmRvbS5lbEdyYXBoaWNhbD10LmRvbS5QYXBlci5ncm91cCgpLmF0dHIoe2NsYXNzOlwiYXBleGNoYXJ0cy1pbm5lciBhcGV4Y2hhcnRzLWdyYXBoaWNhbFwifSksdC5kb20uZWxEZWZzPXQuZG9tLlBhcGVyLmRlZnMoKSx0LmRvbS5QYXBlci5hZGQodC5kb20uZWxHcmFwaGljYWwpLHQuZG9tLmVsR3JhcGhpY2FsLmFkZCh0LmRvbS5lbERlZnMpfX0se2tleTpcInBsb3RDaGFydFR5cGVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPWkuY29uZmlnLHM9aS5nbG9iYWxzLHI9e3NlcmllczpbXSxpOltdfSxvPXtzZXJpZXM6W10saTpbXX0sbj17c2VyaWVzOltdLGk6W119LGw9e3NlcmllczpbXSxpOltdfSxoPXtzZXJpZXM6W10saTpbXX0sYz17c2VyaWVzOltdLGk6W119LGQ9e3NlcmllczpbXSxpOltdfSxnPXtzZXJpZXM6W10saTpbXX0sdT17c2VyaWVzOltdLHNlcmllc1JhbmdlRW5kOltdLGk6W119O3Muc2VyaWVzLm1hcCgoZnVuY3Rpb24oZSxwKXt2YXIgZj0wO3ZvaWQgMCE9PXRbcF0udHlwZT8oXCJjb2x1bW5cIj09PXRbcF0udHlwZXx8XCJiYXJcIj09PXRbcF0udHlwZT8ocy5zZXJpZXMubGVuZ3RoPjEmJmEucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWwmJmNvbnNvbGUud2FybihcIkhvcml6b250YWwgYmFycyBhcmUgbm90IHN1cHBvcnRlZCBpbiBhIG1peGVkL2NvbWJvIGNoYXJ0LiBQbGVhc2UgdHVybiBvZmYgYHBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsYFwiKSxoLnNlcmllcy5wdXNoKGUpLGguaS5wdXNoKHApLGYrKyxpLmdsb2JhbHMuY29sdW1uU2VyaWVzPWguc2VyaWVzKTpcImFyZWFcIj09PXRbcF0udHlwZT8oby5zZXJpZXMucHVzaChlKSxvLmkucHVzaChwKSxmKyspOlwibGluZVwiPT09dFtwXS50eXBlPyhyLnNlcmllcy5wdXNoKGUpLHIuaS5wdXNoKHApLGYrKyk6XCJzY2F0dGVyXCI9PT10W3BdLnR5cGU/KG4uc2VyaWVzLnB1c2goZSksbi5pLnB1c2gocCkpOlwiYnViYmxlXCI9PT10W3BdLnR5cGU/KGwuc2VyaWVzLnB1c2goZSksbC5pLnB1c2gocCksZisrKTpcImNhbmRsZXN0aWNrXCI9PT10W3BdLnR5cGU/KGMuc2VyaWVzLnB1c2goZSksYy5pLnB1c2gocCksZisrKTpcImJveFBsb3RcIj09PXRbcF0udHlwZT8oZC5zZXJpZXMucHVzaChlKSxkLmkucHVzaChwKSxmKyspOlwicmFuZ2VCYXJcIj09PXRbcF0udHlwZT8oZy5zZXJpZXMucHVzaChlKSxnLmkucHVzaChwKSxmKyspOlwicmFuZ2VBcmVhXCI9PT10W3BdLnR5cGU/KHUuc2VyaWVzLnB1c2gocy5zZXJpZXNSYW5nZVN0YXJ0W3BdKSx1LnNlcmllc1JhbmdlRW5kLnB1c2gocy5zZXJpZXNSYW5nZUVuZFtwXSksdS5pLnB1c2gocCksZisrKTpjb25zb2xlLndhcm4oXCJZb3UgaGF2ZSBzcGVjaWZpZWQgYW4gdW5yZWNvZ25pemVkIGNoYXJ0IHR5cGUuIEF2YWlsYWJsZSB0eXBlcyBmb3IgdGhpcyBwcm9wZXJ0eSBhcmUgbGluZS9hcmVhL2NvbHVtbi9iYXIvc2NhdHRlci9idWJibGUvY2FuZGxlc3RpY2svYm94UGxvdC9yYW5nZUJhci9yYW5nZUFyZWFcIiksZj4xJiYocy5jb21ib0NoYXJ0cz0hMCkpOihyLnNlcmllcy5wdXNoKGUpLHIuaS5wdXNoKHApKX0pKTt2YXIgcD1uZXcgWHQodGhpcy5jdHgsZSksZj1uZXcga3QodGhpcy5jdHgsZSk7dGhpcy5jdHgucGllPW5ldyBMdCh0aGlzLmN0eCk7dmFyIHg9bmV3IEl0KHRoaXMuY3R4KTt0aGlzLmN0eC5yYW5nZUJhcj1uZXcgVHQodGhpcy5jdHgsZSk7dmFyIGI9bmV3IFB0KHRoaXMuY3R4KSx2PVtdO2lmKHMuY29tYm9DaGFydHMpe2lmKG8uc2VyaWVzLmxlbmd0aD4wJiZ2LnB1c2gocC5kcmF3KG8uc2VyaWVzLFwiYXJlYVwiLG8uaSkpLGguc2VyaWVzLmxlbmd0aD4wKWlmKGkuY29uZmlnLmNoYXJ0LnN0YWNrZWQpe3ZhciBtPW5ldyB3dCh0aGlzLmN0eCxlKTt2LnB1c2gobS5kcmF3KGguc2VyaWVzLGguaSkpfWVsc2UgdGhpcy5jdHguYmFyPW5ldyB5dCh0aGlzLmN0eCxlKSx2LnB1c2godGhpcy5jdHguYmFyLmRyYXcoaC5zZXJpZXMsaC5pKSk7aWYodS5zZXJpZXMubGVuZ3RoPjAmJnYucHVzaChwLmRyYXcodS5zZXJpZXMsXCJyYW5nZUFyZWFcIix1LmksdS5zZXJpZXNSYW5nZUVuZCkpLHIuc2VyaWVzLmxlbmd0aD4wJiZ2LnB1c2gocC5kcmF3KHIuc2VyaWVzLFwibGluZVwiLHIuaSkpLGMuc2VyaWVzLmxlbmd0aD4wJiZ2LnB1c2goZi5kcmF3KGMuc2VyaWVzLFwiY2FuZGxlc3RpY2tcIixjLmkpKSxkLnNlcmllcy5sZW5ndGg+MCYmdi5wdXNoKGYuZHJhdyhkLnNlcmllcyxcImJveFBsb3RcIixkLmkpKSxnLnNlcmllcy5sZW5ndGg+MCYmdi5wdXNoKHRoaXMuY3R4LnJhbmdlQmFyLmRyYXcoZy5zZXJpZXMsZy5pKSksbi5zZXJpZXMubGVuZ3RoPjApe3ZhciB5PW5ldyBYdCh0aGlzLmN0eCxlLCEwKTt2LnB1c2goeS5kcmF3KG4uc2VyaWVzLFwic2NhdHRlclwiLG4uaSkpfWlmKGwuc2VyaWVzLmxlbmd0aD4wKXt2YXIgdz1uZXcgWHQodGhpcy5jdHgsZSwhMCk7di5wdXNoKHcuZHJhdyhsLnNlcmllcyxcImJ1YmJsZVwiLGwuaSkpfX1lbHNlIHN3aXRjaChhLmNoYXJ0LnR5cGUpe2Nhc2VcImxpbmVcIjp2PXAuZHJhdyhzLnNlcmllcyxcImxpbmVcIik7YnJlYWs7Y2FzZVwiYXJlYVwiOnY9cC5kcmF3KHMuc2VyaWVzLFwiYXJlYVwiKTticmVhaztjYXNlXCJiYXJcIjppZihhLmNoYXJ0LnN0YWNrZWQpdj1uZXcgd3QodGhpcy5jdHgsZSkuZHJhdyhzLnNlcmllcyk7ZWxzZSB0aGlzLmN0eC5iYXI9bmV3IHl0KHRoaXMuY3R4LGUpLHY9dGhpcy5jdHguYmFyLmRyYXcocy5zZXJpZXMpO2JyZWFrO2Nhc2VcImNhbmRsZXN0aWNrXCI6dj1uZXcga3QodGhpcy5jdHgsZSkuZHJhdyhzLnNlcmllcyxcImNhbmRsZXN0aWNrXCIpO2JyZWFrO2Nhc2VcImJveFBsb3RcIjp2PW5ldyBrdCh0aGlzLmN0eCxlKS5kcmF3KHMuc2VyaWVzLFwiYm94UGxvdFwiKTticmVhaztjYXNlXCJyYW5nZUJhclwiOnY9dGhpcy5jdHgucmFuZ2VCYXIuZHJhdyhzLnNlcmllcyk7YnJlYWs7Y2FzZVwicmFuZ2VBcmVhXCI6dj1wLmRyYXcocy5zZXJpZXNSYW5nZVN0YXJ0LFwicmFuZ2VBcmVhXCIsdm9pZCAwLHMuc2VyaWVzUmFuZ2VFbmQpO2JyZWFrO2Nhc2VcImhlYXRtYXBcIjp2PW5ldyBTdCh0aGlzLmN0eCxlKS5kcmF3KHMuc2VyaWVzKTticmVhaztjYXNlXCJ0cmVlbWFwXCI6dj1uZXcgWXQodGhpcy5jdHgsZSkuZHJhdyhzLnNlcmllcyk7YnJlYWs7Y2FzZVwicGllXCI6Y2FzZVwiZG9udXRcIjpjYXNlXCJwb2xhckFyZWFcIjp2PXRoaXMuY3R4LnBpZS5kcmF3KHMuc2VyaWVzKTticmVhaztjYXNlXCJyYWRpYWxCYXJcIjp2PXguZHJhdyhzLnNlcmllcyk7YnJlYWs7Y2FzZVwicmFkYXJcIjp2PWIuZHJhdyhzLnNlcmllcyk7YnJlYWs7ZGVmYXVsdDp2PXAuZHJhdyhzLnNlcmllcyl9cmV0dXJuIHZ9fSx7a2V5Olwic2V0U1ZHRGltZW5zaW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMsZT10aGlzLncuY29uZmlnO3Quc3ZnV2lkdGg9ZS5jaGFydC53aWR0aCx0LnN2Z0hlaWdodD1lLmNoYXJ0LmhlaWdodDt2YXIgaT14LmdldERpbWVuc2lvbnModGhpcy5lbCksYT1lLmNoYXJ0LndpZHRoLnRvU3RyaW5nKCkuc3BsaXQoL1swLTldKy9nKS5wb3AoKTtcIiVcIj09PWE/eC5pc051bWJlcihpWzBdKSYmKDA9PT1pWzBdLndpZHRoJiYoaT14LmdldERpbWVuc2lvbnModGhpcy5lbC5wYXJlbnROb2RlKSksdC5zdmdXaWR0aD1pWzBdKnBhcnNlSW50KGUuY2hhcnQud2lkdGgsMTApLzEwMCk6XCJweFwiIT09YSYmXCJcIiE9PWF8fCh0LnN2Z1dpZHRoPXBhcnNlSW50KGUuY2hhcnQud2lkdGgsMTApKTt2YXIgcz1lLmNoYXJ0LmhlaWdodC50b1N0cmluZygpLnNwbGl0KC9bMC05XSsvZykucG9wKCk7aWYoXCJhdXRvXCIhPT10LnN2Z0hlaWdodCYmXCJcIiE9PXQuc3ZnSGVpZ2h0KWlmKFwiJVwiPT09cyl7dmFyIHI9eC5nZXREaW1lbnNpb25zKHRoaXMuZWwucGFyZW50Tm9kZSk7dC5zdmdIZWlnaHQ9clsxXSpwYXJzZUludChlLmNoYXJ0LmhlaWdodCwxMCkvMTAwfWVsc2UgdC5zdmdIZWlnaHQ9cGFyc2VJbnQoZS5jaGFydC5oZWlnaHQsMTApO2Vsc2UgdC5heGlzQ2hhcnRzP3Quc3ZnSGVpZ2h0PXQuc3ZnV2lkdGgvMS42MTp0LnN2Z0hlaWdodD10LnN2Z1dpZHRoLzEuMjtpZih0LnN2Z1dpZHRoPDAmJih0LnN2Z1dpZHRoPTApLHQuc3ZnSGVpZ2h0PDAmJih0LnN2Z0hlaWdodD0wKSxtLnNldEF0dHJzKHQuZG9tLlBhcGVyLm5vZGUse3dpZHRoOnQuc3ZnV2lkdGgsaGVpZ2h0OnQuc3ZnSGVpZ2h0fSksXCIlXCIhPT1zKXt2YXIgbz1lLmNoYXJ0LnNwYXJrbGluZS5lbmFibGVkPzA6dC5heGlzQ2hhcnRzP2UuY2hhcnQucGFyZW50SGVpZ2h0T2Zmc2V0OjA7dC5kb20uUGFwZXIubm9kZS5wYXJlbnROb2RlLnBhcmVudE5vZGUuc3R5bGUubWluSGVpZ2h0PXQuc3ZnSGVpZ2h0K28rXCJweFwifXQuZG9tLmVsV3JhcC5zdHlsZS53aWR0aD10LnN2Z1dpZHRoK1wicHhcIix0LmRvbS5lbFdyYXAuc3R5bGUuaGVpZ2h0PXQuc3ZnSGVpZ2h0K1wicHhcIn19LHtrZXk6XCJzaGlmdEdyYXBoUG9zaXRpb25cIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzLGU9dC50cmFuc2xhdGVZLGk9e3RyYW5zZm9ybTpcInRyYW5zbGF0ZShcIit0LnRyYW5zbGF0ZVgrXCIsIFwiK2UrXCIpXCJ9O20uc2V0QXR0cnModC5kb20uZWxHcmFwaGljYWwubm9kZSxpKX19LHtrZXk6XCJyZXNpemVOb25BeGlzQ2hhcnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMsaT0wLGE9dC5jb25maWcuY2hhcnQuc3BhcmtsaW5lLmVuYWJsZWQ/MToxNTthKz10LmNvbmZpZy5ncmlkLnBhZGRpbmcuYm90dG9tLFwidG9wXCIhPT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJlwiYm90dG9tXCIhPT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb258fCF0LmNvbmZpZy5sZWdlbmQuc2hvd3x8dC5jb25maWcubGVnZW5kLmZsb2F0aW5nfHwoaT1uZXcgbHQodGhpcy5jdHgpLmxlZ2VuZEhlbHBlcnMuZ2V0TGVnZW5kQkJveCgpLmNsd2grMTApO3ZhciBzPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1yYWRpYWxiYXIsIC5hcGV4Y2hhcnRzLXBpZVwiKSxyPTIuMDUqdC5nbG9iYWxzLnJhZGlhbFNpemU7aWYocyYmIXQuY29uZmlnLmNoYXJ0LnNwYXJrbGluZS5lbmFibGVkJiYwIT09dC5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnN0YXJ0QW5nbGUpe3ZhciBvPXguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHMpO3I9by5ib3R0b207dmFyIG49by5ib3R0b20tby50b3A7cj1NYXRoLm1heCgyLjA1KnQuZ2xvYmFscy5yYWRpYWxTaXplLG4pfXZhciBsPXIrZS50cmFuc2xhdGVZK2krYTtlLmRvbS5lbExlZ2VuZEZvcmVpZ24mJmUuZG9tLmVsTGVnZW5kRm9yZWlnbi5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIixsKSx0LmNvbmZpZy5jaGFydC5oZWlnaHQmJlN0cmluZyh0LmNvbmZpZy5jaGFydC5oZWlnaHQpLmluZGV4T2YoXCIlXCIpPjB8fChlLmRvbS5lbFdyYXAuc3R5bGUuaGVpZ2h0PWwrXCJweFwiLG0uc2V0QXR0cnMoZS5kb20uUGFwZXIubm9kZSx7aGVpZ2h0Omx9KSxlLmRvbS5QYXBlci5ub2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZS5zdHlsZS5taW5IZWlnaHQ9bCtcInB4XCIpfX0se2tleTpcImNvcmVDYWxjdWxhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe25ldyBVKHRoaXMuY3R4KS5pbml0KCl9fSx7a2V5OlwicmVzZXRHbG9iYWxzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9ZnVuY3Rpb24oKXtyZXR1cm4gdC53LmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbih0KXtyZXR1cm5bXX0pKX0saT1uZXcgWSxhPXRoaXMudy5nbG9iYWxzO2kuaW5pdEdsb2JhbFZhcnMoYSksYS5zZXJpZXNYdmFsdWVzPWUoKSxhLnNlcmllc1l2YWx1ZXM9ZSgpfX0se2tleTpcImlzTXVsdGlwbGVZXCIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLncuY29uZmlnLnlheGlzLmNvbnN0cnVjdG9yPT09QXJyYXkmJnRoaXMudy5jb25maWcueWF4aXMubGVuZ3RoPjEpcmV0dXJuIHRoaXMudy5nbG9iYWxzLmlzTXVsdGlwbGVZQXhpcz0hMCwhMH19LHtrZXk6XCJ4eVNldHRpbmdzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1udWxsLGU9dGhpcy53O2lmKGUuZ2xvYmFscy5heGlzQ2hhcnRzKXtpZihcImJhY2tcIj09PWUuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMucG9zaXRpb24pbmV3IFEodGhpcy5jdHgpLmRyYXdYQ3Jvc3NoYWlycygpO2lmKFwiYmFja1wiPT09ZS5jb25maWcueWF4aXNbMF0uY3Jvc3NoYWlycy5wb3NpdGlvbiluZXcgUSh0aGlzLmN0eCkuZHJhd1lDcm9zc2hhaXJzKCk7aWYoXCJkYXRldGltZVwiPT09ZS5jb25maWcueGF4aXMudHlwZSYmdm9pZCAwPT09ZS5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlcil7dGhpcy5jdHgudGltZVNjYWxlPW5ldyBSdCh0aGlzLmN0eCk7dmFyIGk9W107aXNGaW5pdGUoZS5nbG9iYWxzLm1pblgpJiZpc0Zpbml0ZShlLmdsb2JhbHMubWF4WCkmJiFlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsP2k9dGhpcy5jdHgudGltZVNjYWxlLmNhbGN1bGF0ZVRpbWVTY2FsZVRpY2tzKGUuZ2xvYmFscy5taW5YLGUuZ2xvYmFscy5tYXhYKTplLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYoaT10aGlzLmN0eC50aW1lU2NhbGUuY2FsY3VsYXRlVGltZVNjYWxlVGlja3MoZS5nbG9iYWxzLm1pblksZS5nbG9iYWxzLm1heFkpKSx0aGlzLmN0eC50aW1lU2NhbGUucmVjYWxjRGltZW5zaW9uc0Jhc2VkT25Gb3JtYXQoaSl9dD1uZXcgeSh0aGlzLmN0eCkuZ2V0Q2FsY3VsYXRlZFJhdGlvcygpfXJldHVybiB0fX0se2tleTpcInVwZGF0ZVNvdXJjZUNoYXJ0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5jdHgudy5nbG9iYWxzLnNlbGVjdGlvbj12b2lkIDAsdGhpcy5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlT3B0aW9ucyh7Y2hhcnQ6e3NlbGVjdGlvbjp7eGF4aXM6e21pbjp0LncuZ2xvYmFscy5taW5YLG1heDp0LncuZ2xvYmFscy5tYXhYfX19fSwhMSwhMSl9fSx7a2V5Olwic2V0dXBCcnVzaEhhbmRsZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsaT10aGlzLnc7aWYoaS5jb25maWcuY2hhcnQuYnJ1c2guZW5hYmxlZCYmXCJmdW5jdGlvblwiIT10eXBlb2YgaS5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbil7dmFyIGE9aS5jb25maWcuY2hhcnQuYnJ1c2gudGFyZ2V0c3x8W2kuY29uZmlnLmNoYXJ0LmJydXNoLnRhcmdldF07YS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgaT1BcGV4Q2hhcnRzLmdldENoYXJ0QnlJRChlKTtpLncuZ2xvYmFscy5icnVzaFNvdXJjZT10LmN0eCxcImZ1bmN0aW9uXCIhPXR5cGVvZiBpLncuY29uZmlnLmNoYXJ0LmV2ZW50cy56b29tZWQmJihpLncuY29uZmlnLmNoYXJ0LmV2ZW50cy56b29tZWQ9ZnVuY3Rpb24oKXt0LnVwZGF0ZVNvdXJjZUNoYXJ0KGkpfSksXCJmdW5jdGlvblwiIT10eXBlb2YgaS53LmNvbmZpZy5jaGFydC5ldmVudHMuc2Nyb2xsZWQmJihpLncuY29uZmlnLmNoYXJ0LmV2ZW50cy5zY3JvbGxlZD1mdW5jdGlvbigpe3QudXBkYXRlU291cmNlQ2hhcnQoaSl9KX0pKSxpLmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uPWZ1bmN0aW9uKHQscyl7YS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgYT1BcGV4Q2hhcnRzLmdldENoYXJ0QnlJRCh0KSxyPXguY2xvbmUoaS5jb25maWcueWF4aXMpO2lmKGkuY29uZmlnLmNoYXJ0LmJydXNoLmF1dG9TY2FsZVlheGlzJiYxPT09YS53Lmdsb2JhbHMuc2VyaWVzLmxlbmd0aCl7dmFyIG89bmV3IF8oYSk7cj1vLmF1dG9TY2FsZVkoYSxyLHMpfXZhciBuPWEudy5jb25maWcueWF4aXMucmVkdWNlKChmdW5jdGlvbih0LGkscyl7cmV0dXJuW10uY29uY2F0KHUodCksW2UoZSh7fSxhLncuY29uZmlnLnlheGlzW3NdKSx7fSx7bWluOnJbMF0ubWluLG1heDpyWzBdLm1heH0pXSl9KSxbXSk7YS5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlT3B0aW9ucyh7eGF4aXM6e21pbjpzLnhheGlzLm1pbixtYXg6cy54YXhpcy5tYXh9LHlheGlzOm59LCExLCExLCExLCExKX0pKX19fX1dKSx0fSgpLEh0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJfdXBkYXRlT3B0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsYT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLHM9IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXSxyPSEoYXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10pfHxhcmd1bWVudHNbM10sbz1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XSYmYXJndW1lbnRzWzRdO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24obil7dmFyIGw9W2UuY3R4XTtyJiYobD1lLmN0eC5nZXRTeW5jZWRDaGFydHMoKSksZS5jdHgudy5nbG9iYWxzLmlzRXhlY0NhbGxlZCYmKGw9W2UuY3R4XSxlLmN0eC53Lmdsb2JhbHMuaXNFeGVjQ2FsbGVkPSExKSxsLmZvckVhY2goKGZ1bmN0aW9uKHIsaCl7dmFyIGM9ci53O2lmKGMuZ2xvYmFscy5zaG91bGRBbmltYXRlPXMsYXx8KGMuZ2xvYmFscy5yZXNpemVkPSEwLGMuZ2xvYmFscy5kYXRhQ2hhbmdlZD0hMCxzJiZyLnNlcmllcy5nZXRQcmV2aW91c1BhdGhzKCkpLHQmJlwib2JqZWN0XCI9PT1pKHQpJiYoci5jb25maWc9bmV3IEUodCksdD15LmV4dGVuZEFycmF5UHJvcHMoci5jb25maWcsdCxjKSxyLncuZ2xvYmFscy5jaGFydElEIT09ZS5jdHgudy5nbG9iYWxzLmNoYXJ0SUQmJmRlbGV0ZSB0LnNlcmllcyxjLmNvbmZpZz14LmV4dGVuZChjLmNvbmZpZyx0KSxvJiYoYy5nbG9iYWxzLmxhc3RYQXhpcz10LnhheGlzP3guY2xvbmUodC54YXhpcyk6W10sYy5nbG9iYWxzLmxhc3RZQXhpcz10LnlheGlzP3guY2xvbmUodC55YXhpcyk6W10sYy5nbG9iYWxzLmluaXRpYWxDb25maWc9eC5leHRlbmQoe30sYy5jb25maWcpLGMuZ2xvYmFscy5pbml0aWFsU2VyaWVzPXguY2xvbmUoYy5jb25maWcuc2VyaWVzKSx0LnNlcmllcykpKXtmb3IodmFyIGQ9MDtkPGMuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmxlbmd0aDtkKyspe3ZhciBnPWMuY29uZmlnLnNlcmllc1tjLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlc1tkXV07Yy5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc1tkXS5kYXRhPWMuZ2xvYmFscy5heGlzQ2hhcnRzP2cuZGF0YS5zbGljZSgpOmd9Zm9yKHZhciB1PTA7dTxjLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5sZW5ndGg7dSsrKXt2YXIgcD1jLmNvbmZpZy5zZXJpZXNbYy5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXNbdV1dO2MuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNbdV0uZGF0YT1jLmdsb2JhbHMuYXhpc0NoYXJ0cz9wLmRhdGEuc2xpY2UoKTpwfXIuc2VyaWVzLmVtcHR5Q29sbGFwc2VkU2VyaWVzKGMuY29uZmlnLnNlcmllcyl9cmV0dXJuIHIudXBkYXRlKHQpLnRoZW4oKGZ1bmN0aW9uKCl7aD09PWwubGVuZ3RoLTEmJm4ocil9KSl9KSl9KSl9fSx7a2V5OlwiX3VwZGF0ZVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxhPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl07cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihzKXt2YXIgcixvPWkudztyZXR1cm4gby5nbG9iYWxzLnNob3VsZEFuaW1hdGU9ZSxvLmdsb2JhbHMuZGF0YUNoYW5nZWQ9ITAsZSYmaS5jdHguc2VyaWVzLmdldFByZXZpb3VzUGF0aHMoKSxvLmdsb2JhbHMuYXhpc0NoYXJ0cz8oMD09PShyPXQubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBpLl9leHRlbmRTZXJpZXModCxlKX0pKSkubGVuZ3RoJiYocj1be2RhdGE6W119XSksby5jb25maWcuc2VyaWVzPXIpOm8uY29uZmlnLnNlcmllcz10LnNsaWNlKCksYSYmKG8uZ2xvYmFscy5pbml0aWFsQ29uZmlnLnNlcmllcz14LmNsb25lKG8uY29uZmlnLnNlcmllcyksby5nbG9iYWxzLmluaXRpYWxTZXJpZXM9eC5jbG9uZShvLmNvbmZpZy5zZXJpZXMpKSxpLmN0eC51cGRhdGUoKS50aGVuKChmdW5jdGlvbigpe3MoaS5jdHgpfSkpfSkpfX0se2tleTpcIl9leHRlbmRTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0LGkpe3ZhciBhPXRoaXMudyxzPWEuY29uZmlnLnNlcmllc1tpXTtyZXR1cm4gZShlKHt9LGEuY29uZmlnLnNlcmllc1tpXSkse30se25hbWU6dC5uYW1lP3QubmFtZTpzJiZzLm5hbWUsY29sb3I6dC5jb2xvcj90LmNvbG9yOnMmJnMuY29sb3IsdHlwZTp0LnR5cGU/dC50eXBlOnMmJnMudHlwZSxkYXRhOnQuZGF0YT90LmRhdGE6cyYmcy5kYXRhfSl9fSx7a2V5OlwidG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1udWxsLHM9XCIuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIi5jb25jYXQodCxcIiddXCIpO3JldHVybiBpLmdsb2JhbHMuYXhpc0NoYXJ0cz9hPWkuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiXCIuY29uY2F0KHMsXCIgcGF0aFtqPSdcIikuY29uY2F0KGUsXCInXSwgXCIpLmNvbmNhdChzLFwiIGNpcmNsZVtqPSdcIikuY29uY2F0KGUsXCInXSwgXCIpLmNvbmNhdChzLFwiIHJlY3Rbaj0nXCIpLmNvbmNhdChlLFwiJ11cIikpLm1lbWJlcnNbMF06dm9pZCAwPT09ZSYmKGE9aS5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoXCJcIi5jb25jYXQocyxcIiBwYXRoW2o9J1wiKS5jb25jYXQodCxcIiddXCIpKS5tZW1iZXJzWzBdLFwicGllXCIhPT1pLmNvbmZpZy5jaGFydC50eXBlJiZcInBvbGFyQXJlYVwiIT09aS5jb25maWcuY2hhcnQudHlwZSYmXCJkb251dFwiIT09aS5jb25maWcuY2hhcnQudHlwZXx8dGhpcy5jdHgucGllLnBpZUNsaWNrZWQodCkpLGE/KG5ldyBtKHRoaXMuY3R4KS5wYXRoTW91c2VEb3duKGEsbnVsbCksYS5ub2RlP2Eubm9kZTpudWxsKTooY29uc29sZS53YXJuKFwidG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uOiBFbGVtZW50IG5vdCBmb3VuZFwiKSxudWxsKX19LHtrZXk6XCJmb3JjZVhBeGlzVXBkYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O2lmKFtcIm1pblwiLFwibWF4XCJdLmZvckVhY2goKGZ1bmN0aW9uKGkpe3ZvaWQgMCE9PXQueGF4aXNbaV0mJihlLmNvbmZpZy54YXhpc1tpXT10LnhheGlzW2ldLGUuZ2xvYmFscy5sYXN0WEF4aXNbaV09dC54YXhpc1tpXSl9KSksdC54YXhpcy5jYXRlZ29yaWVzJiZ0LnhheGlzLmNhdGVnb3JpZXMubGVuZ3RoJiYoZS5jb25maWcueGF4aXMuY2F0ZWdvcmllcz10LnhheGlzLmNhdGVnb3JpZXMpLGUuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyl7dmFyIGk9bmV3IHoodCk7dD1pLmNvbnZlcnRDYXRUb051bWVyaWNYYXhpcyh0LHRoaXMuY3R4KX1yZXR1cm4gdH19LHtrZXk6XCJmb3JjZVlBeGlzVXBkYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY2hhcnQmJnQuY2hhcnQuc3RhY2tlZCYmXCIxMDAlXCI9PT10LmNoYXJ0LnN0YWNrVHlwZSYmKEFycmF5LmlzQXJyYXkodC55YXhpcyk/dC55YXhpcy5mb3JFYWNoKChmdW5jdGlvbihlLGkpe3QueWF4aXNbaV0ubWluPTAsdC55YXhpc1tpXS5tYXg9MTAwfSkpOih0LnlheGlzLm1pbj0wLHQueWF4aXMubWF4PTEwMCkpLHR9fSx7a2V5OlwicmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXhcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53LGE9aS5nbG9iYWxzLmxhc3RYQXhpcyxzPWkuZ2xvYmFscy5sYXN0WUF4aXM7dCYmdC54YXhpcyYmKGE9dC54YXhpcyksdCYmdC55YXhpcyYmKHM9dC55YXhpcyksaS5jb25maWcueGF4aXMubWluPWEubWluLGkuY29uZmlnLnhheGlzLm1heD1hLm1heDt2YXIgcj1mdW5jdGlvbih0KXt2b2lkIDAhPT1zW3RdJiYoaS5jb25maWcueWF4aXNbdF0ubWluPXNbdF0ubWluLGkuY29uZmlnLnlheGlzW3RdLm1heD1zW3RdLm1heCl9O2kuY29uZmlnLnlheGlzLm1hcCgoZnVuY3Rpb24odCxhKXtpLmdsb2JhbHMuem9vbWVkfHx2b2lkIDAhPT1zW2FdP3IoYSk6dm9pZCAwIT09ZS5jdHgub3B0cy55YXhpc1thXSYmKHQubWluPWUuY3R4Lm9wdHMueWF4aXNbYV0ubWluLHQubWF4PWUuY3R4Lm9wdHMueWF4aXNbYV0ubWF4KX0pKX19XSksdH0oKTt6dD1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp2b2lkIDAsRXQ9ZnVuY3Rpb24odCxlKXt2YXIgYT0odm9pZCAwIT09dGhpcz90aGlzOnQpLlNWRz1mdW5jdGlvbih0KXtpZihhLnN1cHBvcnRlZClyZXR1cm4gdD1uZXcgYS5Eb2ModCksYS5wYXJzZXIuZHJhd3x8YS5wcmVwYXJlKCksdH07aWYoYS5ucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsYS54bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvXCIsYS54bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIixhLnN2Z2pzPVwiaHR0cDovL3N2Z2pzLmRldlwiLGEuc3VwcG9ydGVkPSEwLCFhLnN1cHBvcnRlZClyZXR1cm4hMTthLmRpZD0xZTMsYS5laWQ9ZnVuY3Rpb24odCl7cmV0dXJuXCJTdmdqc1wiK2QodCkrYS5kaWQrK30sYS5jcmVhdGU9ZnVuY3Rpb24odCl7dmFyIGk9ZS5jcmVhdGVFbGVtZW50TlModGhpcy5ucyx0KTtyZXR1cm4gaS5zZXRBdHRyaWJ1dGUoXCJpZFwiLHRoaXMuZWlkKHQpKSxpfSxhLmV4dGVuZD1mdW5jdGlvbigpe3ZhciB0LGU7ZT0odD1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpLnBvcCgpO2Zvcih2YXIgaT10Lmxlbmd0aC0xO2k+PTA7aS0tKWlmKHRbaV0pZm9yKHZhciBzIGluIGUpdFtpXS5wcm90b3R5cGVbc109ZVtzXTthLlNldCYmYS5TZXQuaW5oZXJpdCYmYS5TZXQuaW5oZXJpdCgpfSxhLmludmVudD1mdW5jdGlvbih0KXt2YXIgZT1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmNyZWF0ZT90LmNyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLGEuY3JlYXRlKHQuY3JlYXRlKSl9O3JldHVybiB0LmluaGVyaXQmJihlLnByb3RvdHlwZT1uZXcgdC5pbmhlcml0KSx0LmV4dGVuZCYmYS5leHRlbmQoZSx0LmV4dGVuZCksdC5jb25zdHJ1Y3QmJmEuZXh0ZW5kKHQucGFyZW50fHxhLkNvbnRhaW5lcix0LmNvbnN0cnVjdCksZX0sYS5hZG9wdD1mdW5jdGlvbihlKXtyZXR1cm4gZT9lLmluc3RhbmNlP2UuaW5zdGFuY2U6KChpPVwic3ZnXCI9PWUubm9kZU5hbWU/ZS5wYXJlbnROb2RlIGluc3RhbmNlb2YgdC5TVkdFbGVtZW50P25ldyBhLk5lc3RlZDpuZXcgYS5Eb2M6XCJsaW5lYXJHcmFkaWVudFwiPT1lLm5vZGVOYW1lP25ldyBhLkdyYWRpZW50KFwibGluZWFyXCIpOlwicmFkaWFsR3JhZGllbnRcIj09ZS5ub2RlTmFtZT9uZXcgYS5HcmFkaWVudChcInJhZGlhbFwiKTphW2QoZS5ub2RlTmFtZSldP25ldyhhW2QoZS5ub2RlTmFtZSldKTpuZXcgYS5FbGVtZW50KGUpKS50eXBlPWUubm9kZU5hbWUsaS5ub2RlPWUsZS5pbnN0YW5jZT1pLGkgaW5zdGFuY2VvZiBhLkRvYyYmaS5uYW1lc3BhY2UoKS5kZWZzKCksaS5zZXREYXRhKEpTT04ucGFyc2UoZS5nZXRBdHRyaWJ1dGUoXCJzdmdqczpkYXRhXCIpKXx8e30pLGkpOm51bGw7dmFyIGl9LGEucHJlcGFyZT1mdW5jdGlvbigpe3ZhciB0PWUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJib2R5XCIpWzBdLGk9KHQ/bmV3IGEuRG9jKHQpOmEuYWRvcHQoZS5kb2N1bWVudEVsZW1lbnQpLm5lc3RlZCgpKS5zaXplKDIsMCk7YS5wYXJzZXI9e2JvZHk6dHx8ZS5kb2N1bWVudEVsZW1lbnQsZHJhdzppLnN0eWxlKFwib3BhY2l0eTowO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTEwMCU7dG9wOi0xMDAlO292ZXJmbG93OmhpZGRlblwiKS5ub2RlLHBvbHk6aS5wb2x5bGluZSgpLm5vZGUscGF0aDppLnBhdGgoKS5ub2RlLG5hdGl2ZTphLmNyZWF0ZShcInN2Z1wiKX19LGEucGFyc2VyPXtuYXRpdmU6YS5jcmVhdGUoXCJzdmdcIil9LGUuYWRkRXZlbnRMaXN0ZW5lcihcIkRPTUNvbnRlbnRMb2FkZWRcIiwoZnVuY3Rpb24oKXthLnBhcnNlci5kcmF3fHxhLnByZXBhcmUoKX0pLCExKSxhLnJlZ2V4PXtudW1iZXJBbmRVbml0Oi9eKFsrLV0/KFxcZCsoXFwuXFxkKik/fFxcLlxcZCspKGVbKy1dP1xcZCspPykoW2EteiVdKikkL2ksaGV4Oi9eIz8oW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkkL2kscmdiOi9yZ2JcXCgoXFxkKyksKFxcZCspLChcXGQrKVxcKS8scmVmZXJlbmNlOi8jKFthLXowLTlcXC1fXSspL2ksdHJhbnNmb3JtczovXFwpXFxzKiw/XFxzKi8sd2hpdGVzcGFjZTovXFxzL2csaXNIZXg6L14jW2EtZjAtOV17Myw2fSQvaSxpc1JnYjovXnJnYlxcKC8saXNDc3M6L1teOl0rOlteO10rOz8vLGlzQmxhbms6L14oXFxzKyk/JC8saXNOdW1iZXI6L15bKy1dPyhcXGQrKFxcLlxcZCopP3xcXC5cXGQrKShlWystXT9cXGQrKT8kL2ksaXNQZXJjZW50Oi9eLT9bXFxkXFwuXSslJC8saXNJbWFnZTovXFwuKGpwZ3xqcGVnfHBuZ3xnaWZ8c3ZnKShcXD9bXj1dKy4qKT8vaSxkZWxpbWl0ZXI6L1tcXHMsXSsvLGh5cGhlbjovKFteZV0pXFwtL2dpLHBhdGhMZXR0ZXJzOi9bTUxIVkNTUVRBWl0vZ2ksaXNQYXRoTGV0dGVyOi9bTUxIVkNTUVRBWl0vaSxudW1iZXJzV2l0aERvdHM6LygoXFxkP1xcLlxcZCsoPzplWystXT9cXGQrKT8pKCg/OlxcLlxcZCsoPzplWystXT9cXGQrKT8pKykpKy9naSxkb3RzOi9cXC4vZ30sYS51dGlscz17bWFwOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPXQubGVuZ3RoLGE9W10scz0wO3M8aTtzKyspYS5wdXNoKGUodFtzXSkpO3JldHVybiBhfSxmaWx0ZXI6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9dC5sZW5ndGgsYT1bXSxzPTA7czxpO3MrKyllKHRbc10pJiZhLnB1c2godFtzXSk7cmV0dXJuIGF9LGZpbHRlclNWR0VsZW1lbnRzOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmZpbHRlcihlLChmdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHQuU1ZHRWxlbWVudH0pKX19LGEuZGVmYXVsdHM9e2F0dHJzOntcImZpbGwtb3BhY2l0eVwiOjEsXCJzdHJva2Utb3BhY2l0eVwiOjEsXCJzdHJva2Utd2lkdGhcIjowLFwic3Ryb2tlLWxpbmVqb2luXCI6XCJtaXRlclwiLFwic3Ryb2tlLWxpbmVjYXBcIjpcImJ1dHRcIixmaWxsOlwiIzAwMDAwMFwiLHN0cm9rZTpcIiMwMDAwMDBcIixvcGFjaXR5OjEseDowLHk6MCxjeDowLGN5OjAsd2lkdGg6MCxoZWlnaHQ6MCxyOjAscng6MCxyeTowLG9mZnNldDowLFwic3RvcC1vcGFjaXR5XCI6MSxcInN0b3AtY29sb3JcIjpcIiMwMDAwMDBcIixcImZvbnQtc2l6ZVwiOjE2LFwiZm9udC1mYW1pbHlcIjpcIkhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWZcIixcInRleHQtYW5jaG9yXCI6XCJzdGFydFwifX0sYS5Db2xvcj1mdW5jdGlvbih0KXt2YXIgZSxzO3RoaXMucj0wLHRoaXMuZz0wLHRoaXMuYj0wLHQmJihcInN0cmluZ1wiPT10eXBlb2YgdD9hLnJlZ2V4LmlzUmdiLnRlc3QodCk/KGU9YS5yZWdleC5yZ2IuZXhlYyh0LnJlcGxhY2UoYS5yZWdleC53aGl0ZXNwYWNlLFwiXCIpKSx0aGlzLnI9cGFyc2VJbnQoZVsxXSksdGhpcy5nPXBhcnNlSW50KGVbMl0pLHRoaXMuYj1wYXJzZUludChlWzNdKSk6YS5yZWdleC5pc0hleC50ZXN0KHQpJiYoZT1hLnJlZ2V4LmhleC5leGVjKDQ9PShzPXQpLmxlbmd0aD9bXCIjXCIscy5zdWJzdHJpbmcoMSwyKSxzLnN1YnN0cmluZygxLDIpLHMuc3Vic3RyaW5nKDIsMykscy5zdWJzdHJpbmcoMiwzKSxzLnN1YnN0cmluZygzLDQpLHMuc3Vic3RyaW5nKDMsNCldLmpvaW4oXCJcIik6cyksdGhpcy5yPXBhcnNlSW50KGVbMV0sMTYpLHRoaXMuZz1wYXJzZUludChlWzJdLDE2KSx0aGlzLmI9cGFyc2VJbnQoZVszXSwxNikpOlwib2JqZWN0XCI9PT1pKHQpJiYodGhpcy5yPXQucix0aGlzLmc9dC5nLHRoaXMuYj10LmIpKX0sYS5leHRlbmQoYS5Db2xvcix7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b0hleCgpfSx0b0hleDpmdW5jdGlvbigpe3JldHVyblwiI1wiK2codGhpcy5yKStnKHRoaXMuZykrZyh0aGlzLmIpfSx0b1JnYjpmdW5jdGlvbigpe3JldHVyblwicmdiKFwiK1t0aGlzLnIsdGhpcy5nLHRoaXMuYl0uam9pbigpK1wiKVwifSxicmlnaHRuZXNzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuci8yNTUqLjMrdGhpcy5nLzI1NSouNTkrdGhpcy5iLzI1NSouMTF9LG1vcnBoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uPW5ldyBhLkNvbG9yKHQpLHRoaXN9LGF0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uPyh0PXQ8MD8wOnQ+MT8xOnQsbmV3IGEuQ29sb3Ioe3I6fn4odGhpcy5yKyh0aGlzLmRlc3RpbmF0aW9uLnItdGhpcy5yKSp0KSxnOn5+KHRoaXMuZysodGhpcy5kZXN0aW5hdGlvbi5nLXRoaXMuZykqdCksYjp+fih0aGlzLmIrKHRoaXMuZGVzdGluYXRpb24uYi10aGlzLmIpKnQpfSkpOnRoaXN9fSksYS5Db2xvci50ZXN0PWZ1bmN0aW9uKHQpe3JldHVybiB0Kz1cIlwiLGEucmVnZXguaXNIZXgudGVzdCh0KXx8YS5yZWdleC5pc1JnYi50ZXN0KHQpfSxhLkNvbG9yLmlzUmdiPWZ1bmN0aW9uKHQpe3JldHVybiB0JiZcIm51bWJlclwiPT10eXBlb2YgdC5yJiZcIm51bWJlclwiPT10eXBlb2YgdC5nJiZcIm51bWJlclwiPT10eXBlb2YgdC5ifSxhLkNvbG9yLmlzQ29sb3I9ZnVuY3Rpb24odCl7cmV0dXJuIGEuQ29sb3IuaXNSZ2IodCl8fGEuQ29sb3IudGVzdCh0KX0sYS5BcnJheT1mdW5jdGlvbih0LGUpezA9PSh0PSh0fHxbXSkudmFsdWVPZigpKS5sZW5ndGgmJmUmJih0PWUudmFsdWVPZigpKSx0aGlzLnZhbHVlPXRoaXMucGFyc2UodCl9LGEuZXh0ZW5kKGEuQXJyYXkse3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWUuam9pbihcIiBcIil9LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX0scGFyc2U6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9dC52YWx1ZU9mKCksQXJyYXkuaXNBcnJheSh0KT90OnRoaXMuc3BsaXQodCl9fSksYS5Qb2ludEFycmF5PWZ1bmN0aW9uKHQsZSl7YS5BcnJheS5jYWxsKHRoaXMsdCxlfHxbWzAsMF1dKX0sYS5Qb2ludEFycmF5LnByb3RvdHlwZT1uZXcgYS5BcnJheSxhLlBvaW50QXJyYXkucHJvdG90eXBlLmNvbnN0cnVjdG9yPWEuUG9pbnRBcnJheTtmb3IodmFyIHM9e006ZnVuY3Rpb24odCxlLGkpe3JldHVybiBlLng9aS54PXRbMF0sZS55PWkueT10WzFdLFtcIk1cIixlLngsZS55XX0sTDpmdW5jdGlvbih0LGUpe3JldHVybiBlLng9dFswXSxlLnk9dFsxXSxbXCJMXCIsdFswXSx0WzFdXX0sSDpmdW5jdGlvbih0LGUpe3JldHVybiBlLng9dFswXSxbXCJIXCIsdFswXV19LFY6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS55PXRbMF0sW1wiVlwiLHRbMF1dfSxDOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUueD10WzRdLGUueT10WzVdLFtcIkNcIix0WzBdLHRbMV0sdFsyXSx0WzNdLHRbNF0sdFs1XV19LFE6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS54PXRbMl0sZS55PXRbM10sW1wiUVwiLHRbMF0sdFsxXSx0WzJdLHRbM11dfSxaOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gZS54PWkueCxlLnk9aS55LFtcIlpcIl19fSxyPVwibWxodnF0Y3NhelwiLnNwbGl0KFwiXCIpLG89MCxuPXIubGVuZ3RoO288bjsrK28pc1tyW29dXT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxpLGEpe2lmKFwiSFwiPT10KWVbMF09ZVswXStpLng7ZWxzZSBpZihcIlZcIj09dCllWzBdPWVbMF0raS55O2Vsc2UgaWYoXCJBXCI9PXQpZVs1XT1lWzVdK2kueCxlWzZdPWVbNl0raS55O2Vsc2UgZm9yKHZhciByPTAsbz1lLmxlbmd0aDtyPG87KytyKWVbcl09ZVtyXSsociUyP2kueTppLngpO2lmKHMmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHNbdF0pcmV0dXJuIHNbdF0oZSxpLGEpfX0ocltvXS50b1VwcGVyQ2FzZSgpKTthLlBhdGhBcnJheT1mdW5jdGlvbih0LGUpe2EuQXJyYXkuY2FsbCh0aGlzLHQsZXx8W1tcIk1cIiwwLDBdXSl9LGEuUGF0aEFycmF5LnByb3RvdHlwZT1uZXcgYS5BcnJheSxhLlBhdGhBcnJheS5wcm90b3R5cGUuY29uc3RydWN0b3I9YS5QYXRoQXJyYXksYS5leHRlbmQoYS5QYXRoQXJyYXkse3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLGk9dC5sZW5ndGgsYT1cIlwiO2U8aTtlKyspYSs9dFtlXVswXSxudWxsIT10W2VdWzFdJiYoYSs9dFtlXVsxXSxudWxsIT10W2VdWzJdJiYoYSs9XCIgXCIsYSs9dFtlXVsyXSxudWxsIT10W2VdWzNdJiYoYSs9XCIgXCIsYSs9dFtlXVszXSxhKz1cIiBcIixhKz10W2VdWzRdLG51bGwhPXRbZV1bNV0mJihhKz1cIiBcIixhKz10W2VdWzVdLGErPVwiIFwiLGErPXRbZV1bNl0sbnVsbCE9dFtlXVs3XSYmKGErPVwiIFwiLGErPXRbZV1bN10pKSkpKTtyZXR1cm4gYStcIiBcIn0odGhpcy52YWx1ZSl9LG1vdmU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmJib3goKTtyZXR1cm4gaS54LGkueSx0aGlzfSxhdDpmdW5jdGlvbih0KXtpZighdGhpcy5kZXN0aW5hdGlvbilyZXR1cm4gdGhpcztmb3IodmFyIGU9dGhpcy52YWx1ZSxpPXRoaXMuZGVzdGluYXRpb24udmFsdWUscz1bXSxyPW5ldyBhLlBhdGhBcnJheSxvPTAsbj1lLmxlbmd0aDtvPG47bysrKXtzW29dPVtlW29dWzBdXTtmb3IodmFyIGw9MSxoPWVbb10ubGVuZ3RoO2w8aDtsKyspc1tvXVtsXT1lW29dW2xdKyhpW29dW2xdLWVbb11bbF0pKnQ7XCJBXCI9PT1zW29dWzBdJiYoc1tvXVs0XT0rKDAhPXNbb11bNF0pLHNbb11bNV09KygwIT1zW29dWzVdKSl9cmV0dXJuIHIudmFsdWU9cyxyfSxwYXJzZTpmdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgYS5QYXRoQXJyYXkpcmV0dXJuIHQudmFsdWVPZigpO3ZhciBlLGk9e006MixMOjIsSDoxLFY6MSxDOjYsUzo0LFE6NCxUOjIsQTo3LFo6MH07dD1cInN0cmluZ1wiPT10eXBlb2YgdD90LnJlcGxhY2UoYS5yZWdleC5udW1iZXJzV2l0aERvdHMsaCkucmVwbGFjZShhLnJlZ2V4LnBhdGhMZXR0ZXJzLFwiICQmIFwiKS5yZXBsYWNlKGEucmVnZXguaHlwaGVuLFwiJDEgLVwiKS50cmltKCkuc3BsaXQoYS5yZWdleC5kZWxpbWl0ZXIpOnQucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybltdLmNvbmNhdC5jYWxsKHQsZSl9KSxbXSk7dmFyIHI9W10sbz1uZXcgYS5Qb2ludCxuPW5ldyBhLlBvaW50LGw9MCxjPXQubGVuZ3RoO2Rve2EucmVnZXguaXNQYXRoTGV0dGVyLnRlc3QodFtsXSk/KGU9dFtsXSwrK2wpOlwiTVwiPT1lP2U9XCJMXCI6XCJtXCI9PWUmJihlPVwibFwiKSxyLnB1c2goc1tlXS5jYWxsKG51bGwsdC5zbGljZShsLGwrPWlbZS50b1VwcGVyQ2FzZSgpXSkubWFwKHBhcnNlRmxvYXQpLG8sbikpfXdoaWxlKGM+bCk7cmV0dXJuIHJ9LGJib3g6ZnVuY3Rpb24oKXtyZXR1cm4gYS5wYXJzZXIuZHJhd3x8YS5wcmVwYXJlKCksYS5wYXJzZXIucGF0aC5zZXRBdHRyaWJ1dGUoXCJkXCIsdGhpcy50b1N0cmluZygpKSxhLnBhcnNlci5wYXRoLmdldEJCb3goKX19KSxhLk51bWJlcj1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQsZSl7dGhpcy52YWx1ZT0wLHRoaXMudW5pdD1lfHxcIlwiLFwibnVtYmVyXCI9PXR5cGVvZiB0P3RoaXMudmFsdWU9aXNOYU4odCk/MDppc0Zpbml0ZSh0KT90OnQ8MD8tMzRlMzc6MzRlMzc6XCJzdHJpbmdcIj09dHlwZW9mIHQ/KGU9dC5tYXRjaChhLnJlZ2V4Lm51bWJlckFuZFVuaXQpKSYmKHRoaXMudmFsdWU9cGFyc2VGbG9hdChlWzFdKSxcIiVcIj09ZVs1XT90aGlzLnZhbHVlLz0xMDA6XCJzXCI9PWVbNV0mJih0aGlzLnZhbHVlKj0xZTMpLHRoaXMudW5pdD1lWzVdKTp0IGluc3RhbmNlb2YgYS5OdW1iZXImJih0aGlzLnZhbHVlPXQudmFsdWVPZigpLHRoaXMudW5pdD10LnVuaXQpfSxleHRlbmQ6e3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuKFwiJVwiPT10aGlzLnVuaXQ/fn4oMWU4KnRoaXMudmFsdWUpLzFlNjpcInNcIj09dGhpcy51bml0P3RoaXMudmFsdWUvMWUzOnRoaXMudmFsdWUpK3RoaXMudW5pdH0sdG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoKX0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfSxwbHVzOmZ1bmN0aW9uKHQpe3JldHVybiB0PW5ldyBhLk51bWJlcih0KSxuZXcgYS5OdW1iZXIodGhpcyt0LHRoaXMudW5pdHx8dC51bml0KX0sbWludXM6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bmV3IGEuTnVtYmVyKHQpLG5ldyBhLk51bWJlcih0aGlzLXQsdGhpcy51bml0fHx0LnVuaXQpfSx0aW1lczpmdW5jdGlvbih0KXtyZXR1cm4gdD1uZXcgYS5OdW1iZXIodCksbmV3IGEuTnVtYmVyKHRoaXMqdCx0aGlzLnVuaXR8fHQudW5pdCl9LGRpdmlkZTpmdW5jdGlvbih0KXtyZXR1cm4gdD1uZXcgYS5OdW1iZXIodCksbmV3IGEuTnVtYmVyKHRoaXMvdCx0aGlzLnVuaXR8fHQudW5pdCl9LHRvOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBhLk51bWJlcih0aGlzKTtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdCYmKGUudW5pdD10KSxlfSxtb3JwaDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbj1uZXcgYS5OdW1iZXIodCksdC5yZWxhdGl2ZSYmKHRoaXMuZGVzdGluYXRpb24udmFsdWUrPXRoaXMudmFsdWUpLHRoaXN9LGF0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uP25ldyBhLk51bWJlcih0aGlzLmRlc3RpbmF0aW9uKS5taW51cyh0aGlzKS50aW1lcyh0KS5wbHVzKHRoaXMpOnRoaXN9fX0pLGEuRWxlbWVudD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuX3N0cm9rZT1hLmRlZmF1bHRzLmF0dHJzLnN0cm9rZSx0aGlzLl9ldmVudD1udWxsLHRoaXMuZG9tPXt9LCh0aGlzLm5vZGU9dCkmJih0aGlzLnR5cGU9dC5ub2RlTmFtZSx0aGlzLm5vZGUuaW5zdGFuY2U9dGhpcyx0aGlzLl9zdHJva2U9dC5nZXRBdHRyaWJ1dGUoXCJzdHJva2VcIil8fHRoaXMuX3N0cm9rZSl9LGV4dGVuZDp7eDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwieFwiLHQpfSx5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJ5XCIsdCl9LGN4OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMueCgpK3RoaXMud2lkdGgoKS8yOnRoaXMueCh0LXRoaXMud2lkdGgoKS8yKX0sY3k6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy55KCkrdGhpcy5oZWlnaHQoKS8yOnRoaXMueSh0LXRoaXMuaGVpZ2h0KCkvMil9LG1vdmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy54KHQpLnkoZSl9LGNlbnRlcjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmN4KHQpLmN5KGUpfSx3aWR0aDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwid2lkdGhcIix0KX0saGVpZ2h0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJoZWlnaHRcIix0KX0sc2l6ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXUodGhpcyx0LGUpO3JldHVybiB0aGlzLndpZHRoKG5ldyBhLk51bWJlcihpLndpZHRoKSkuaGVpZ2h0KG5ldyBhLk51bWJlcihpLmhlaWdodCkpfSxjbG9uZTpmdW5jdGlvbih0KXt0aGlzLndyaXRlRGF0YVRvRG9tKCk7dmFyIGU9eCh0aGlzLm5vZGUuY2xvbmVOb2RlKCEwKSk7cmV0dXJuIHQ/dC5hZGQoZSk6dGhpcy5hZnRlcihlKSxlfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5yZW1vdmVFbGVtZW50KHRoaXMpLHRoaXN9LHJlcGxhY2U6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYWZ0ZXIodCkucmVtb3ZlKCksdH0sYWRkVG86ZnVuY3Rpb24odCl7cmV0dXJuIHQucHV0KHRoaXMpfSxwdXRJbjpmdW5jdGlvbih0KXtyZXR1cm4gdC5hZGQodGhpcyl9LGlkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJpZFwiLHQpfSxzaG93OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3R5bGUoXCJkaXNwbGF5XCIsXCJcIil9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHlsZShcImRpc3BsYXlcIixcIm5vbmVcIil9LHZpc2libGU6ZnVuY3Rpb24oKXtyZXR1cm5cIm5vbmVcIiE9dGhpcy5zdHlsZShcImRpc3BsYXlcIil9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXR0cihcImlkXCIpfSxjbGFzc2VzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5hdHRyKFwiY2xhc3NcIik7cmV0dXJuIG51bGw9PXQ/W106dC50cmltKCkuc3BsaXQoYS5yZWdleC5kZWxpbWl0ZXIpfSxoYXNDbGFzczpmdW5jdGlvbih0KXtyZXR1cm4tMSE9dGhpcy5jbGFzc2VzKCkuaW5kZXhPZih0KX0sYWRkQ2xhc3M6ZnVuY3Rpb24odCl7aWYoIXRoaXMuaGFzQ2xhc3ModCkpe3ZhciBlPXRoaXMuY2xhc3NlcygpO2UucHVzaCh0KSx0aGlzLmF0dHIoXCJjbGFzc1wiLGUuam9pbihcIiBcIikpfXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oYXNDbGFzcyh0KSYmdGhpcy5hdHRyKFwiY2xhc3NcIix0aGlzLmNsYXNzZXMoKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlIT10fSkpLmpvaW4oXCIgXCIpKSx0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oYXNDbGFzcyh0KT90aGlzLnJlbW92ZUNsYXNzKHQpOnRoaXMuYWRkQ2xhc3ModCl9LHJlZmVyZW5jZTpmdW5jdGlvbih0KXtyZXR1cm4gYS5nZXQodGhpcy5hdHRyKHQpKX0scGFyZW50OmZ1bmN0aW9uKGUpe3ZhciBpPXRoaXM7aWYoIWkubm9kZS5wYXJlbnROb2RlKXJldHVybiBudWxsO2lmKGk9YS5hZG9wdChpLm5vZGUucGFyZW50Tm9kZSksIWUpcmV0dXJuIGk7Zm9yKDtpJiZpLm5vZGUgaW5zdGFuY2VvZiB0LlNWR0VsZW1lbnQ7KXtpZihcInN0cmluZ1wiPT10eXBlb2YgZT9pLm1hdGNoZXMoZSk6aSBpbnN0YW5jZW9mIGUpcmV0dXJuIGk7aWYoIWkubm9kZS5wYXJlbnROb2RlfHxcIiNkb2N1bWVudFwiPT1pLm5vZGUucGFyZW50Tm9kZS5ub2RlTmFtZSlyZXR1cm4gbnVsbDtpPWEuYWRvcHQoaS5ub2RlLnBhcmVudE5vZGUpfX0sZG9jOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBhLkRvYz90aGlzOnRoaXMucGFyZW50KGEuRG9jKX0scGFyZW50czpmdW5jdGlvbih0KXt2YXIgZT1bXSxpPXRoaXM7ZG97aWYoIShpPWkucGFyZW50KHQpKXx8IWkubm9kZSlicmVhaztlLnB1c2goaSl9d2hpbGUoaS5wYXJlbnQpO3JldHVybiBlfSxtYXRjaGVzOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0LGUpe3JldHVybih0Lm1hdGNoZXN8fHQubWF0Y2hlc1NlbGVjdG9yfHx0Lm1zTWF0Y2hlc1NlbGVjdG9yfHx0Lm1vek1hdGNoZXNTZWxlY3Rvcnx8dC53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fHQub01hdGNoZXNTZWxlY3RvcikuY2FsbCh0LGUpfSh0aGlzLm5vZGUsdCl9LG5hdGl2ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGV9LHN2ZzpmdW5jdGlvbih0KXt2YXIgaT1lLmNyZWF0ZUVsZW1lbnQoXCJzdmdcIik7aWYoISh0JiZ0aGlzIGluc3RhbmNlb2YgYS5QYXJlbnQpKXJldHVybiBpLmFwcGVuZENoaWxkKHQ9ZS5jcmVhdGVFbGVtZW50KFwic3ZnXCIpKSx0aGlzLndyaXRlRGF0YVRvRG9tKCksdC5hcHBlbmRDaGlsZCh0aGlzLm5vZGUuY2xvbmVOb2RlKCEwKSksaS5pbm5lckhUTUwucmVwbGFjZSgvXjxzdmc+LyxcIlwiKS5yZXBsYWNlKC88XFwvc3ZnPiQvLFwiXCIpO2kuaW5uZXJIVE1MPVwiPHN2Zz5cIit0LnJlcGxhY2UoL1xcbi8sXCJcIikucmVwbGFjZSgvPChbXFx3Oi1dKykoW148XSs/KVxcLz4vZyxcIjwkMSQyPjwvJDE+XCIpK1wiPC9zdmc+XCI7Zm9yKHZhciBzPTAscj1pLmZpcnN0Q2hpbGQuY2hpbGROb2Rlcy5sZW5ndGg7czxyO3MrKyl0aGlzLm5vZGUuYXBwZW5kQ2hpbGQoaS5maXJzdENoaWxkLmZpcnN0Q2hpbGQpO3JldHVybiB0aGlzfSx3cml0ZURhdGFUb0RvbTpmdW5jdGlvbigpe3JldHVybih0aGlzLmVhY2h8fHRoaXMubGluZXMpJiYodGhpcy5lYWNoP3RoaXM6dGhpcy5saW5lcygpKS5lYWNoKChmdW5jdGlvbigpe3RoaXMud3JpdGVEYXRhVG9Eb20oKX0pKSx0aGlzLm5vZGUucmVtb3ZlQXR0cmlidXRlKFwic3ZnanM6ZGF0YVwiKSxPYmplY3Qua2V5cyh0aGlzLmRvbSkubGVuZ3RoJiZ0aGlzLm5vZGUuc2V0QXR0cmlidXRlKFwic3ZnanM6ZGF0YVwiLEpTT04uc3RyaW5naWZ5KHRoaXMuZG9tKSksdGhpc30sc2V0RGF0YTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kb209dCx0aGlzfSxpczpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCxlKXtyZXR1cm4gdCBpbnN0YW5jZW9mIGV9KHRoaXMsdCl9fX0pLGEuZWFzaW5nPXtcIi1cIjpmdW5jdGlvbih0KXtyZXR1cm4gdH0sXCI8PlwiOmZ1bmN0aW9uKHQpe3JldHVybi1NYXRoLmNvcyh0Kk1hdGguUEkpLzIrLjV9LFwiPlwiOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnNpbih0Kk1hdGguUEkvMil9LFwiPFwiOmZ1bmN0aW9uKHQpe3JldHVybiAxLU1hdGguY29zKHQqTWF0aC5QSS8yKX19LGEubW9ycGg9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsaSl7cmV0dXJuIG5ldyBhLk1vcnBoT2JqKGUsaSkuYXQodCl9fSxhLlNpdHVhdGlvbj1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuaW5pdD0hMSx0aGlzLnJldmVyc2VkPSExLHRoaXMucmV2ZXJzaW5nPSExLHRoaXMuZHVyYXRpb249bmV3IGEuTnVtYmVyKHQuZHVyYXRpb24pLnZhbHVlT2YoKSx0aGlzLmRlbGF5PW5ldyBhLk51bWJlcih0LmRlbGF5KS52YWx1ZU9mKCksdGhpcy5zdGFydD0rbmV3IERhdGUrdGhpcy5kZWxheSx0aGlzLmZpbmlzaD10aGlzLnN0YXJ0K3RoaXMuZHVyYXRpb24sdGhpcy5lYXNlPXQuZWFzZSx0aGlzLmxvb3A9MCx0aGlzLmxvb3BzPSExLHRoaXMuYW5pbWF0aW9ucz17fSx0aGlzLmF0dHJzPXt9LHRoaXMuc3R5bGVzPXt9LHRoaXMudHJhbnNmb3Jtcz1bXSx0aGlzLm9uY2U9e319fSksYS5GWD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuX3RhcmdldD10LHRoaXMuc2l0dWF0aW9ucz1bXSx0aGlzLmFjdGl2ZT0hMSx0aGlzLnNpdHVhdGlvbj1udWxsLHRoaXMucGF1c2VkPSExLHRoaXMubGFzdFBvcz0wLHRoaXMucG9zPTAsdGhpcy5hYnNQb3M9MCx0aGlzLl9zcGVlZD0xfSxleHRlbmQ6e2FuaW1hdGU6ZnVuY3Rpb24odCxlLHMpe1wib2JqZWN0XCI9PT1pKHQpJiYoZT10LmVhc2Uscz10LmRlbGF5LHQ9dC5kdXJhdGlvbik7dmFyIHI9bmV3IGEuU2l0dWF0aW9uKHtkdXJhdGlvbjp0fHwxZTMsZGVsYXk6c3x8MCxlYXNlOmEuZWFzaW5nW2V8fFwiLVwiXXx8ZX0pO3JldHVybiB0aGlzLnF1ZXVlKHIpLHRoaXN9LHRhcmdldDpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdCBpbnN0YW5jZW9mIGEuRWxlbWVudD8odGhpcy5fdGFyZ2V0PXQsdGhpcyk6dGhpcy5fdGFyZ2V0fSx0aW1lVG9BYnNQb3M6ZnVuY3Rpb24odCl7cmV0dXJuKHQtdGhpcy5zaXR1YXRpb24uc3RhcnQpLyh0aGlzLnNpdHVhdGlvbi5kdXJhdGlvbi90aGlzLl9zcGVlZCl9LGFic1Bvc1RvVGltZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zaXR1YXRpb24uZHVyYXRpb24vdGhpcy5fc3BlZWQqdCt0aGlzLnNpdHVhdGlvbi5zdGFydH0sc3RhcnRBbmltRnJhbWU6ZnVuY3Rpb24oKXt0aGlzLnN0b3BBbmltRnJhbWUoKSx0aGlzLmFuaW1hdGlvbkZyYW1lPXQucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7dGhpcy5zdGVwKCl9LmJpbmQodGhpcykpfSxzdG9wQW5pbUZyYW1lOmZ1bmN0aW9uKCl7dC5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmFuaW1hdGlvbkZyYW1lKX0sc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5hY3RpdmUmJnRoaXMuc2l0dWF0aW9uJiYodGhpcy5hY3RpdmU9ITAsdGhpcy5zdGFydEN1cnJlbnQoKSksdGhpc30sc3RhcnRDdXJyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l0dWF0aW9uLnN0YXJ0PStuZXcgRGF0ZSt0aGlzLnNpdHVhdGlvbi5kZWxheS90aGlzLl9zcGVlZCx0aGlzLnNpdHVhdGlvbi5maW5pc2g9dGhpcy5zaXR1YXRpb24uc3RhcnQrdGhpcy5zaXR1YXRpb24uZHVyYXRpb24vdGhpcy5fc3BlZWQsdGhpcy5pbml0QW5pbWF0aW9ucygpLnN0ZXAoKX0scXVldWU6ZnVuY3Rpb24odCl7cmV0dXJuKFwiZnVuY3Rpb25cIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBhLlNpdHVhdGlvbikmJnRoaXMuc2l0dWF0aW9ucy5wdXNoKHQpLHRoaXMuc2l0dWF0aW9ufHwodGhpcy5zaXR1YXRpb249dGhpcy5zaXR1YXRpb25zLnNoaWZ0KCkpLHRoaXN9LGRlcXVldWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdG9wKCksdGhpcy5zaXR1YXRpb249dGhpcy5zaXR1YXRpb25zLnNoaWZ0KCksdGhpcy5zaXR1YXRpb24mJih0aGlzLnNpdHVhdGlvbiBpbnN0YW5jZW9mIGEuU2l0dWF0aW9uP3RoaXMuc3RhcnQoKTp0aGlzLnNpdHVhdGlvbi5jYWxsKHRoaXMpKSx0aGlzfSxpbml0QW5pbWF0aW9uczpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5zaXR1YXRpb247aWYoZS5pbml0KXJldHVybiB0aGlzO2Zvcih2YXIgaSBpbiBlLmFuaW1hdGlvbnMpe3Q9dGhpcy50YXJnZXQoKVtpXSgpLEFycmF5LmlzQXJyYXkodCl8fCh0PVt0XSksQXJyYXkuaXNBcnJheShlLmFuaW1hdGlvbnNbaV0pfHwoZS5hbmltYXRpb25zW2ldPVtlLmFuaW1hdGlvbnNbaV1dKTtmb3IodmFyIHM9dC5sZW5ndGg7cy0tOyllLmFuaW1hdGlvbnNbaV1bc11pbnN0YW5jZW9mIGEuTnVtYmVyJiYodFtzXT1uZXcgYS5OdW1iZXIodFtzXSkpLGUuYW5pbWF0aW9uc1tpXVtzXT10W3NdLm1vcnBoKGUuYW5pbWF0aW9uc1tpXVtzXSl9Zm9yKHZhciBpIGluIGUuYXR0cnMpZS5hdHRyc1tpXT1uZXcgYS5Nb3JwaE9iaih0aGlzLnRhcmdldCgpLmF0dHIoaSksZS5hdHRyc1tpXSk7Zm9yKHZhciBpIGluIGUuc3R5bGVzKWUuc3R5bGVzW2ldPW5ldyBhLk1vcnBoT2JqKHRoaXMudGFyZ2V0KCkuc3R5bGUoaSksZS5zdHlsZXNbaV0pO3JldHVybiBlLmluaXRpYWxUcmFuc2Zvcm1hdGlvbj10aGlzLnRhcmdldCgpLm1hdHJpeGlmeSgpLGUuaW5pdD0hMCx0aGlzfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l0dWF0aW9ucz1bXSx0aGlzfSxjbGVhckN1cnJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaXR1YXRpb249bnVsbCx0aGlzfSxzdG9wOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5hY3RpdmU7cmV0dXJuIHRoaXMuYWN0aXZlPSExLGUmJnRoaXMuY2xlYXJRdWV1ZSgpLHQmJnRoaXMuc2l0dWF0aW9uJiYoIWkmJnRoaXMuc3RhcnRDdXJyZW50KCksdGhpcy5hdEVuZCgpKSx0aGlzLnN0b3BBbmltRnJhbWUoKSx0aGlzLmNsZWFyQ3VycmVudCgpfSxhZnRlcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmxhc3QoKTtyZXR1cm4gdGhpcy50YXJnZXQoKS5vbihcImZpbmlzaGVkLmZ4XCIsKGZ1bmN0aW9uIGkoYSl7YS5kZXRhaWwuc2l0dWF0aW9uPT1lJiYodC5jYWxsKHRoaXMsZSksdGhpcy5vZmYoXCJmaW5pc2hlZC5meFwiLGkpKX0pKSx0aGlzLl9jYWxsU3RhcnQoKX0sZHVyaW5nOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubGFzdCgpLGk9ZnVuY3Rpb24oaSl7aS5kZXRhaWwuc2l0dWF0aW9uPT1lJiZ0LmNhbGwodGhpcyxpLmRldGFpbC5wb3MsYS5tb3JwaChpLmRldGFpbC5wb3MpLGkuZGV0YWlsLmVhc2VkLGUpfTtyZXR1cm4gdGhpcy50YXJnZXQoKS5vZmYoXCJkdXJpbmcuZnhcIixpKS5vbihcImR1cmluZy5meFwiLGkpLHRoaXMuYWZ0ZXIoKGZ1bmN0aW9uKCl7dGhpcy5vZmYoXCJkdXJpbmcuZnhcIixpKX0pKSx0aGlzLl9jYWxsU3RhcnQoKX0sYWZ0ZXJBbGw6ZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24gZShpKXt0LmNhbGwodGhpcyksdGhpcy5vZmYoXCJhbGxmaW5pc2hlZC5meFwiLGUpfTtyZXR1cm4gdGhpcy50YXJnZXQoKS5vZmYoXCJhbGxmaW5pc2hlZC5meFwiLGUpLm9uKFwiYWxsZmluaXNoZWQuZnhcIixlKSx0aGlzLl9jYWxsU3RhcnQoKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNpdHVhdGlvbnMubGVuZ3RoP3RoaXMuc2l0dWF0aW9uc1t0aGlzLnNpdHVhdGlvbnMubGVuZ3RoLTFdOnRoaXMuc2l0dWF0aW9ufSxhZGQ6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLmxhc3QoKVtpfHxcImFuaW1hdGlvbnNcIl1bdF09ZSx0aGlzLl9jYWxsU3RhcnQoKX0sc3RlcDpmdW5jdGlvbih0KXt2YXIgZSxpLGE7dHx8KHRoaXMuYWJzUG9zPXRoaXMudGltZVRvQWJzUG9zKCtuZXcgRGF0ZSkpLCExIT09dGhpcy5zaXR1YXRpb24ubG9vcHM/KGU9TWF0aC5tYXgodGhpcy5hYnNQb3MsMCksaT1NYXRoLmZsb29yKGUpLCEwPT09dGhpcy5zaXR1YXRpb24ubG9vcHN8fGk8dGhpcy5zaXR1YXRpb24ubG9vcHM/KHRoaXMucG9zPWUtaSxhPXRoaXMuc2l0dWF0aW9uLmxvb3AsdGhpcy5zaXR1YXRpb24ubG9vcD1pKToodGhpcy5hYnNQb3M9dGhpcy5zaXR1YXRpb24ubG9vcHMsdGhpcy5wb3M9MSxhPXRoaXMuc2l0dWF0aW9uLmxvb3AtMSx0aGlzLnNpdHVhdGlvbi5sb29wPXRoaXMuc2l0dWF0aW9uLmxvb3BzKSx0aGlzLnNpdHVhdGlvbi5yZXZlcnNpbmcmJih0aGlzLnNpdHVhdGlvbi5yZXZlcnNlZD10aGlzLnNpdHVhdGlvbi5yZXZlcnNlZCE9Qm9vbGVhbigodGhpcy5zaXR1YXRpb24ubG9vcC1hKSUyKSkpOih0aGlzLmFic1Bvcz1NYXRoLm1pbih0aGlzLmFic1BvcywxKSx0aGlzLnBvcz10aGlzLmFic1BvcyksdGhpcy5wb3M8MCYmKHRoaXMucG9zPTApLHRoaXMuc2l0dWF0aW9uLnJldmVyc2VkJiYodGhpcy5wb3M9MS10aGlzLnBvcyk7dmFyIHM9dGhpcy5zaXR1YXRpb24uZWFzZSh0aGlzLnBvcyk7Zm9yKHZhciByIGluIHRoaXMuc2l0dWF0aW9uLm9uY2Upcj50aGlzLmxhc3RQb3MmJnI8PXMmJih0aGlzLnNpdHVhdGlvbi5vbmNlW3JdLmNhbGwodGhpcy50YXJnZXQoKSx0aGlzLnBvcyxzKSxkZWxldGUgdGhpcy5zaXR1YXRpb24ub25jZVtyXSk7cmV0dXJuIHRoaXMuYWN0aXZlJiZ0aGlzLnRhcmdldCgpLmZpcmUoXCJkdXJpbmdcIix7cG9zOnRoaXMucG9zLGVhc2VkOnMsZng6dGhpcyxzaXR1YXRpb246dGhpcy5zaXR1YXRpb259KSx0aGlzLnNpdHVhdGlvbj8odGhpcy5lYWNoQXQoKSwxPT10aGlzLnBvcyYmIXRoaXMuc2l0dWF0aW9uLnJldmVyc2VkfHx0aGlzLnNpdHVhdGlvbi5yZXZlcnNlZCYmMD09dGhpcy5wb3M/KHRoaXMuc3RvcEFuaW1GcmFtZSgpLHRoaXMudGFyZ2V0KCkuZmlyZShcImZpbmlzaGVkXCIse2Z4OnRoaXMsc2l0dWF0aW9uOnRoaXMuc2l0dWF0aW9ufSksdGhpcy5zaXR1YXRpb25zLmxlbmd0aHx8KHRoaXMudGFyZ2V0KCkuZmlyZShcImFsbGZpbmlzaGVkXCIpLHRoaXMuc2l0dWF0aW9ucy5sZW5ndGh8fCh0aGlzLnRhcmdldCgpLm9mZihcIi5meFwiKSx0aGlzLmFjdGl2ZT0hMSkpLHRoaXMuYWN0aXZlP3RoaXMuZGVxdWV1ZSgpOnRoaXMuY2xlYXJDdXJyZW50KCkpOiF0aGlzLnBhdXNlZCYmdGhpcy5hY3RpdmUmJnRoaXMuc3RhcnRBbmltRnJhbWUoKSx0aGlzLmxhc3RQb3M9cyx0aGlzKTp0aGlzfSxlYWNoQXQ6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMsaT10aGlzLnRhcmdldCgpLHM9dGhpcy5zaXR1YXRpb247Zm9yKHZhciByIGluIHMuYW5pbWF0aW9ucyl0PVtdLmNvbmNhdChzLmFuaW1hdGlvbnNbcl0pLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuXCJzdHJpbmdcIiE9dHlwZW9mIHQmJnQuYXQ/dC5hdChzLmVhc2UoZS5wb3MpLGUucG9zKTp0fSkpLGlbcl0uYXBwbHkoaSx0KTtmb3IodmFyIHIgaW4gcy5hdHRycyl0PVtyXS5jb25jYXQocy5hdHRyc1tyXSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgdCYmdC5hdD90LmF0KHMuZWFzZShlLnBvcyksZS5wb3MpOnR9KSksaS5hdHRyLmFwcGx5KGksdCk7Zm9yKHZhciByIGluIHMuc3R5bGVzKXQ9W3JdLmNvbmNhdChzLnN0eWxlc1tyXSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgdCYmdC5hdD90LmF0KHMuZWFzZShlLnBvcyksZS5wb3MpOnR9KSksaS5zdHlsZS5hcHBseShpLHQpO2lmKHMudHJhbnNmb3Jtcy5sZW5ndGgpe3Q9cy5pbml0aWFsVHJhbnNmb3JtYXRpb24scj0wO2Zvcih2YXIgbz1zLnRyYW5zZm9ybXMubGVuZ3RoO3I8bztyKyspe3ZhciBuPXMudHJhbnNmb3Jtc1tyXTtuIGluc3RhbmNlb2YgYS5NYXRyaXg/dD1uLnJlbGF0aXZlP3QubXVsdGlwbHkoKG5ldyBhLk1hdHJpeCkubW9ycGgobikuYXQocy5lYXNlKHRoaXMucG9zKSkpOnQubW9ycGgobikuYXQocy5lYXNlKHRoaXMucG9zKSk6KG4ucmVsYXRpdmV8fG4udW5kbyh0LmV4dHJhY3QoKSksdD10Lm11bHRpcGx5KG4uYXQocy5lYXNlKHRoaXMucG9zKSkpKX1pLm1hdHJpeCh0KX1yZXR1cm4gdGhpc30sb25jZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy5sYXN0KCk7cmV0dXJuIGl8fCh0PWEuZWFzZSh0KSksYS5vbmNlW3RdPWUsdGhpc30sX2NhbGxTdGFydDpmdW5jdGlvbigpe3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhpcy5zdGFydCgpfS5iaW5kKHRoaXMpLDApLHRoaXN9fSxwYXJlbnQ6YS5FbGVtZW50LGNvbnN0cnVjdDp7YW5pbWF0ZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuKHRoaXMuZnh8fCh0aGlzLmZ4PW5ldyBhLkZYKHRoaXMpKSkuYW5pbWF0ZSh0LGUsaSl9LGRlbGF5OmZ1bmN0aW9uKHQpe3JldHVybih0aGlzLmZ4fHwodGhpcy5meD1uZXcgYS5GWCh0aGlzKSkpLmRlbGF5KHQpfSxzdG9wOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZngmJnRoaXMuZnguc3RvcCh0LGUpLHRoaXN9LGZpbmlzaDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZ4JiZ0aGlzLmZ4LmZpbmlzaCgpLHRoaXN9fX0pLGEuTW9ycGhPYmo9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0LGUpe3JldHVybiBhLkNvbG9yLmlzQ29sb3IoZSk/bmV3IGEuQ29sb3IodCkubW9ycGgoZSk6YS5yZWdleC5kZWxpbWl0ZXIudGVzdCh0KT9hLnJlZ2V4LnBhdGhMZXR0ZXJzLnRlc3QodCk/bmV3IGEuUGF0aEFycmF5KHQpLm1vcnBoKGUpOm5ldyBhLkFycmF5KHQpLm1vcnBoKGUpOmEucmVnZXgubnVtYmVyQW5kVW5pdC50ZXN0KGUpP25ldyBhLk51bWJlcih0KS5tb3JwaChlKToodGhpcy52YWx1ZT10LHZvaWQodGhpcy5kZXN0aW5hdGlvbj1lKSl9LGV4dGVuZDp7YXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZTwxP3RoaXMudmFsdWU6dGhpcy5kZXN0aW5hdGlvbn0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfX19KSxhLmV4dGVuZChhLkZYLHthdHRyOmZ1bmN0aW9uKHQsZSxhKXtpZihcIm9iamVjdFwiPT09aSh0KSlmb3IodmFyIHMgaW4gdCl0aGlzLmF0dHIocyx0W3NdKTtlbHNlIHRoaXMuYWRkKHQsZSxcImF0dHJzXCIpO3JldHVybiB0aGlzfSxwbG90OmZ1bmN0aW9uKHQsZSxpLGEpe3JldHVybiA0PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMucGxvdChbdCxlLGksYV0pOnRoaXMuYWRkKFwicGxvdFwiLG5ldyh0aGlzLnRhcmdldCgpLm1vcnBoQXJyYXkpKHQpKX19KSxhLkJveD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQsZSxzLHIpe2lmKCEoXCJvYmplY3RcIiE9PWkodCl8fHQgaW5zdGFuY2VvZiBhLkVsZW1lbnQpKXJldHVybiBhLkJveC5jYWxsKHRoaXMsbnVsbCE9dC5sZWZ0P3QubGVmdDp0LngsbnVsbCE9dC50b3A/dC50b3A6dC55LHQud2lkdGgsdC5oZWlnaHQpO3ZhciBvOzQ9PWFyZ3VtZW50cy5sZW5ndGgmJih0aGlzLng9dCx0aGlzLnk9ZSx0aGlzLndpZHRoPXMsdGhpcy5oZWlnaHQ9ciksbnVsbD09KG89dGhpcykueCYmKG8ueD0wLG8ueT0wLG8ud2lkdGg9MCxvLmhlaWdodD0wKSxvLnc9by53aWR0aCxvLmg9by5oZWlnaHQsby54Mj1vLngrby53aWR0aCxvLnkyPW8ueStvLmhlaWdodCxvLmN4PW8ueCtvLndpZHRoLzIsby5jeT1vLnkrby5oZWlnaHQvMn19KSxhLkJCb3g9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXtpZihhLkJveC5hcHBseSh0aGlzLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSksdCBpbnN0YW5jZW9mIGEuRWxlbWVudCl7dmFyIGk7dHJ5e2lmKCFlLmRvY3VtZW50RWxlbWVudC5jb250YWlucyl7Zm9yKHZhciBzPXQubm9kZTtzLnBhcmVudE5vZGU7KXM9cy5wYXJlbnROb2RlO2lmKHMhPWUpdGhyb3cgbmV3IEVycm9yKFwiRWxlbWVudCBub3QgaW4gdGhlIGRvbVwiKX1pPXQubm9kZS5nZXRCQm94KCl9Y2F0Y2goZSl7aWYodCBpbnN0YW5jZW9mIGEuU2hhcGUpe2EucGFyc2VyLmRyYXd8fGEucHJlcGFyZSgpO3ZhciByPXQuY2xvbmUoYS5wYXJzZXIuZHJhdy5pbnN0YW5jZSkuc2hvdygpO3ImJnIubm9kZSYmXCJmdW5jdGlvblwiPT10eXBlb2Ygci5ub2RlLmdldEJCb3gmJihpPXIubm9kZS5nZXRCQm94KCkpLHImJlwiZnVuY3Rpb25cIj09dHlwZW9mIHIucmVtb3ZlJiZyLnJlbW92ZSgpfWVsc2UgaT17eDp0Lm5vZGUuY2xpZW50TGVmdCx5OnQubm9kZS5jbGllbnRUb3Asd2lkdGg6dC5ub2RlLmNsaWVudFdpZHRoLGhlaWdodDp0Lm5vZGUuY2xpZW50SGVpZ2h0fX1hLkJveC5jYWxsKHRoaXMsaSl9fSxpbmhlcml0OmEuQm94LHBhcmVudDphLkVsZW1lbnQsY29uc3RydWN0OntiYm94OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBhLkJCb3godGhpcyl9fX0pLGEuQkJveC5wcm90b3R5cGUuY29uc3RydWN0b3I9YS5CQm94LGEuTWF0cml4PWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dmFyIGU9ZihbMSwwLDAsMSwwLDBdKTt0PW51bGw9PT10P2U6dCBpbnN0YW5jZW9mIGEuRWxlbWVudD90Lm1hdHJpeGlmeSgpOlwic3RyaW5nXCI9PXR5cGVvZiB0P2YodC5zcGxpdChhLnJlZ2V4LmRlbGltaXRlcikubWFwKHBhcnNlRmxvYXQpKTo2PT1hcmd1bWVudHMubGVuZ3RoP2YoW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKTpBcnJheS5pc0FycmF5KHQpP2YodCk6dCYmXCJvYmplY3RcIj09PWkodCk/dDplO2Zvcih2YXIgcz12Lmxlbmd0aC0xO3M+PTA7LS1zKXRoaXNbdltzXV09bnVsbCE9dFt2W3NdXT90W3Zbc11dOmVbdltzXV19LGV4dGVuZDp7ZXh0cmFjdDpmdW5jdGlvbigpe3ZhciB0PXAodGhpcywwLDEpO3AodGhpcywxLDApO3ZhciBlPTE4MC9NYXRoLlBJKk1hdGguYXRhbjIodC55LHQueCktOTA7cmV0dXJue3g6dGhpcy5lLHk6dGhpcy5mLHRyYW5zZm9ybWVkWDoodGhpcy5lKk1hdGguY29zKGUqTWF0aC5QSS8xODApK3RoaXMuZipNYXRoLnNpbihlKk1hdGguUEkvMTgwKSkvTWF0aC5zcXJ0KHRoaXMuYSp0aGlzLmErdGhpcy5iKnRoaXMuYiksdHJhbnNmb3JtZWRZOih0aGlzLmYqTWF0aC5jb3MoZSpNYXRoLlBJLzE4MCkrdGhpcy5lKk1hdGguc2luKC1lKk1hdGguUEkvMTgwKSkvTWF0aC5zcXJ0KHRoaXMuYyp0aGlzLmMrdGhpcy5kKnRoaXMuZCkscm90YXRpb246ZSxhOnRoaXMuYSxiOnRoaXMuYixjOnRoaXMuYyxkOnRoaXMuZCxlOnRoaXMuZSxmOnRoaXMuZixtYXRyaXg6bmV3IGEuTWF0cml4KHRoaXMpfX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGEuTWF0cml4KHRoaXMpfSxtb3JwaDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbj1uZXcgYS5NYXRyaXgodCksdGhpc30sbXVsdGlwbHk6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBhLk1hdHJpeCh0aGlzLm5hdGl2ZSgpLm11bHRpcGx5KGZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgYS5NYXRyaXh8fCh0PW5ldyBhLk1hdHJpeCh0KSksdH0odCkubmF0aXZlKCkpKX0saW52ZXJzZTpmdW5jdGlvbigpe3JldHVybiBuZXcgYS5NYXRyaXgodGhpcy5uYXRpdmUoKS5pbnZlcnNlKCkpfSx0cmFuc2xhdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGEuTWF0cml4KHRoaXMubmF0aXZlKCkudHJhbnNsYXRlKHR8fDAsZXx8MCkpfSxuYXRpdmU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9YS5wYXJzZXIubmF0aXZlLmNyZWF0ZVNWR01hdHJpeCgpLGU9di5sZW5ndGgtMTtlPj0wO2UtLSl0W3ZbZV1dPXRoaXNbdltlXV07cmV0dXJuIHR9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuXCJtYXRyaXgoXCIrYih0aGlzLmEpK1wiLFwiK2IodGhpcy5iKStcIixcIitiKHRoaXMuYykrXCIsXCIrYih0aGlzLmQpK1wiLFwiK2IodGhpcy5lKStcIixcIitiKHRoaXMuZikrXCIpXCJ9fSxwYXJlbnQ6YS5FbGVtZW50LGNvbnN0cnVjdDp7Y3RtOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBhLk1hdHJpeCh0aGlzLm5vZGUuZ2V0Q1RNKCkpfSxzY3JlZW5DVE06ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgYS5OZXN0ZWQpe3ZhciB0PXRoaXMucmVjdCgxLDEpLGU9dC5ub2RlLmdldFNjcmVlbkNUTSgpO3JldHVybiB0LnJlbW92ZSgpLG5ldyBhLk1hdHJpeChlKX1yZXR1cm4gbmV3IGEuTWF0cml4KHRoaXMubm9kZS5nZXRTY3JlZW5DVE0oKSl9fX0pLGEuUG9pbnQ9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0LGUpe3ZhciBhO2E9QXJyYXkuaXNBcnJheSh0KT97eDp0WzBdLHk6dFsxXX06XCJvYmplY3RcIj09PWkodCk/e3g6dC54LHk6dC55fTpudWxsIT10P3t4OnQseTpudWxsIT1lP2U6dH06e3g6MCx5OjB9LHRoaXMueD1hLngsdGhpcy55PWEueX0sZXh0ZW5kOntjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgYS5Qb2ludCh0aGlzKX0sbW9ycGg6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbj1uZXcgYS5Qb2ludCh0LGUpLHRoaXN9fX0pLGEuZXh0ZW5kKGEuRWxlbWVudCx7cG9pbnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGEuUG9pbnQodCxlKS50cmFuc2Zvcm0odGhpcy5zY3JlZW5DVE0oKS5pbnZlcnNlKCkpfX0pLGEuZXh0ZW5kKGEuRWxlbWVudCx7YXR0cjpmdW5jdGlvbih0LGUscyl7aWYobnVsbD09dCl7Zm9yKHQ9e30scz0oZT10aGlzLm5vZGUuYXR0cmlidXRlcykubGVuZ3RoLTE7cz49MDtzLS0pdFtlW3NdLm5vZGVOYW1lXT1hLnJlZ2V4LmlzTnVtYmVyLnRlc3QoZVtzXS5ub2RlVmFsdWUpP3BhcnNlRmxvYXQoZVtzXS5ub2RlVmFsdWUpOmVbc10ubm9kZVZhbHVlO3JldHVybiB0fWlmKFwib2JqZWN0XCI9PT1pKHQpKWZvcih2YXIgciBpbiB0KXRoaXMuYXR0cihyLHRbcl0pO2Vsc2UgaWYobnVsbD09PWUpdGhpcy5ub2RlLnJlbW92ZUF0dHJpYnV0ZSh0KTtlbHNle2lmKG51bGw9PWUpcmV0dXJuIG51bGw9PShlPXRoaXMubm9kZS5nZXRBdHRyaWJ1dGUodCkpP2EuZGVmYXVsdHMuYXR0cnNbdF06YS5yZWdleC5pc051bWJlci50ZXN0KGUpP3BhcnNlRmxvYXQoZSk6ZTtcInN0cm9rZS13aWR0aFwiPT10P3RoaXMuYXR0cihcInN0cm9rZVwiLHBhcnNlRmxvYXQoZSk+MD90aGlzLl9zdHJva2U6bnVsbCk6XCJzdHJva2VcIj09dCYmKHRoaXMuX3N0cm9rZT1lKSxcImZpbGxcIiE9dCYmXCJzdHJva2VcIiE9dHx8KGEucmVnZXguaXNJbWFnZS50ZXN0KGUpJiYoZT10aGlzLmRvYygpLmRlZnMoKS5pbWFnZShlLDAsMCkpLGUgaW5zdGFuY2VvZiBhLkltYWdlJiYoZT10aGlzLmRvYygpLmRlZnMoKS5wYXR0ZXJuKDAsMCwoZnVuY3Rpb24oKXt0aGlzLmFkZChlKX0pKSkpLFwibnVtYmVyXCI9PXR5cGVvZiBlP2U9bmV3IGEuTnVtYmVyKGUpOmEuQ29sb3IuaXNDb2xvcihlKT9lPW5ldyBhLkNvbG9yKGUpOkFycmF5LmlzQXJyYXkoZSkmJihlPW5ldyBhLkFycmF5KGUpKSxcImxlYWRpbmdcIj09dD90aGlzLmxlYWRpbmcmJnRoaXMubGVhZGluZyhlKTpcInN0cmluZ1wiPT10eXBlb2Ygcz90aGlzLm5vZGUuc2V0QXR0cmlidXRlTlMocyx0LGUudG9TdHJpbmcoKSk6dGhpcy5ub2RlLnNldEF0dHJpYnV0ZSh0LGUudG9TdHJpbmcoKSksIXRoaXMucmVidWlsZHx8XCJmb250LXNpemVcIiE9dCYmXCJ4XCIhPXR8fHRoaXMucmVidWlsZCh0LGUpfXJldHVybiB0aGlzfX0pLGEuZXh0ZW5kKGEuRWxlbWVudCx7dHJhbnNmb3JtOmZ1bmN0aW9uKHQsZSl7dmFyIHM7cmV0dXJuXCJvYmplY3RcIiE9PWkodCk/KHM9bmV3IGEuTWF0cml4KHRoaXMpLmV4dHJhY3QoKSxcInN0cmluZ1wiPT10eXBlb2YgdD9zW3RdOnMpOihzPW5ldyBhLk1hdHJpeCh0aGlzKSxlPSEhZXx8ISF0LnJlbGF0aXZlLG51bGwhPXQuYSYmKHM9ZT9zLm11bHRpcGx5KG5ldyBhLk1hdHJpeCh0KSk6bmV3IGEuTWF0cml4KHQpKSx0aGlzLmF0dHIoXCJ0cmFuc2Zvcm1cIixzKSl9fSksYS5leHRlbmQoYS5FbGVtZW50LHt1bnRyYW5zZm9ybTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmF0dHIoXCJ0cmFuc2Zvcm1cIixudWxsKX0sbWF0cml4aWZ5OmZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuYXR0cihcInRyYW5zZm9ybVwiKXx8XCJcIikuc3BsaXQoYS5yZWdleC50cmFuc2Zvcm1zKS5zbGljZSgwLC0xKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPXQudHJpbSgpLnNwbGl0KFwiKFwiKTtyZXR1cm5bZVswXSxlWzFdLnNwbGl0KGEucmVnZXguZGVsaW1pdGVyKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBwYXJzZUZsb2F0KHQpfSkpXX0pKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuXCJtYXRyaXhcIj09ZVswXT90Lm11bHRpcGx5KGYoZVsxXSkpOnRbZVswXV0uYXBwbHkodCxlWzFdKX0pLG5ldyBhLk1hdHJpeCl9LHRvUGFyZW50OmZ1bmN0aW9uKHQpe2lmKHRoaXM9PXQpcmV0dXJuIHRoaXM7dmFyIGU9dGhpcy5zY3JlZW5DVE0oKSxpPXQuc2NyZWVuQ1RNKCkuaW52ZXJzZSgpO3JldHVybiB0aGlzLmFkZFRvKHQpLnVudHJhbnNmb3JtKCkudHJhbnNmb3JtKGkubXVsdGlwbHkoZSkpLHRoaXN9LHRvRG9jOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9QYXJlbnQodGhpcy5kb2MoKSl9fSksYS5UcmFuc2Zvcm1hdGlvbj1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQsZSl7aWYoYXJndW1lbnRzLmxlbmd0aD4xJiZcImJvb2xlYW5cIiE9dHlwZW9mIGUpcmV0dXJuIHRoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIGE9MCxzPXRoaXMuYXJndW1lbnRzLmxlbmd0aDthPHM7KythKXRoaXNbdGhpcy5hcmd1bWVudHNbYV1dPXRbYV07ZWxzZSBpZih0JiZcIm9iamVjdFwiPT09aSh0KSlmb3IoYT0wLHM9dGhpcy5hcmd1bWVudHMubGVuZ3RoO2E8czsrK2EpdGhpc1t0aGlzLmFyZ3VtZW50c1thXV09dFt0aGlzLmFyZ3VtZW50c1thXV07dGhpcy5pbnZlcnNlZD0hMSwhMD09PWUmJih0aGlzLmludmVyc2VkPSEwKX19KSxhLlRyYW5zbGF0ZT1hLmludmVudCh7cGFyZW50OmEuTWF0cml4LGluaGVyaXQ6YS5UcmFuc2Zvcm1hdGlvbixjcmVhdGU6ZnVuY3Rpb24odCxlKXt0aGlzLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKX0sZXh0ZW5kOnthcmd1bWVudHM6W1widHJhbnNmb3JtZWRYXCIsXCJ0cmFuc2Zvcm1lZFlcIl0sbWV0aG9kOlwidHJhbnNsYXRlXCJ9fSksYS5leHRlbmQoYS5FbGVtZW50LHtzdHlsZTpmdW5jdGlvbih0LGUpe2lmKDA9PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMubm9kZS5zdHlsZS5jc3NUZXh0fHxcIlwiO2lmKGFyZ3VtZW50cy5sZW5ndGg8MilpZihcIm9iamVjdFwiPT09aSh0KSlmb3IodmFyIHMgaW4gdCl0aGlzLnN0eWxlKHMsdFtzXSk7ZWxzZXtpZighYS5yZWdleC5pc0Nzcy50ZXN0KHQpKXJldHVybiB0aGlzLm5vZGUuc3R5bGVbYyh0KV07Zm9yKHQ9dC5zcGxpdCgvXFxzKjtcXHMqLykuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4hIXR9KSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGxpdCgvXFxzKjpcXHMqLyl9KSk7ZT10LnBvcCgpOyl0aGlzLnN0eWxlKGVbMF0sZVsxXSl9ZWxzZSB0aGlzLm5vZGUuc3R5bGVbYyh0KV09bnVsbD09PWV8fGEucmVnZXguaXNCbGFuay50ZXN0KGUpP1wiXCI6ZTtyZXR1cm4gdGhpc319KSxhLlBhcmVudD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLHQpfSxpbmhlcml0OmEuRWxlbWVudCxleHRlbmQ6e2NoaWxkcmVuOmZ1bmN0aW9uKCl7cmV0dXJuIGEudXRpbHMubWFwKGEudXRpbHMuZmlsdGVyU1ZHRWxlbWVudHModGhpcy5ub2RlLmNoaWxkTm9kZXMpLChmdW5jdGlvbih0KXtyZXR1cm4gYS5hZG9wdCh0KX0pKX0sYWRkOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PWU/dGhpcy5ub2RlLmFwcGVuZENoaWxkKHQubm9kZSk6dC5ub2RlIT10aGlzLm5vZGUuY2hpbGROb2Rlc1tlXSYmdGhpcy5ub2RlLmluc2VydEJlZm9yZSh0Lm5vZGUsdGhpcy5ub2RlLmNoaWxkTm9kZXNbZV0pLHRoaXN9LHB1dDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmFkZCh0LGUpLHR9LGhhczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbmRleCh0KT49MH0saW5kZXg6ZnVuY3Rpb24odCl7cmV0dXJuW10uc2xpY2UuY2FsbCh0aGlzLm5vZGUuY2hpbGROb2RlcykuaW5kZXhPZih0Lm5vZGUpfSxnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGEuYWRvcHQodGhpcy5ub2RlLmNoaWxkTm9kZXNbdF0pfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCh0aGlzLm5vZGUuY2hpbGROb2Rlcy5sZW5ndGgtMSl9LGVhY2g6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9dGhpcy5jaGlsZHJlbigpLHM9MCxyPWkubGVuZ3RoO3M8cjtzKyspaVtzXWluc3RhbmNlb2YgYS5FbGVtZW50JiZ0LmFwcGx5KGlbc10sW3MsaV0pLGUmJmlbc11pbnN0YW5jZW9mIGEuQ29udGFpbmVyJiZpW3NdLmVhY2godCxlKTtyZXR1cm4gdGhpc30scmVtb3ZlRWxlbWVudDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5ub2RlLnJlbW92ZUNoaWxkKHQubm9kZSksdGhpc30sY2xlYXI6ZnVuY3Rpb24oKXtmb3IoO3RoaXMubm9kZS5oYXNDaGlsZE5vZGVzKCk7KXRoaXMubm9kZS5yZW1vdmVDaGlsZCh0aGlzLm5vZGUubGFzdENoaWxkKTtyZXR1cm4gZGVsZXRlIHRoaXMuX2RlZnMsdGhpc30sZGVmczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvYygpLmRlZnMoKX19fSksYS5leHRlbmQoYS5QYXJlbnQse3VuZ3JvdXA6ZnVuY3Rpb24odCxlKXtyZXR1cm4gMD09PWV8fHRoaXMgaW5zdGFuY2VvZiBhLkRlZnN8fHRoaXMubm9kZT09YS5wYXJzZXIuZHJhd3x8KHQ9dHx8KHRoaXMgaW5zdGFuY2VvZiBhLkRvYz90aGlzOnRoaXMucGFyZW50KGEuUGFyZW50KSksZT1lfHwxLzAsdGhpcy5lYWNoKChmdW5jdGlvbigpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgYS5EZWZzP3RoaXM6dGhpcyBpbnN0YW5jZW9mIGEuUGFyZW50P3RoaXMudW5ncm91cCh0LGUtMSk6dGhpcy50b1BhcmVudCh0KX0pKSx0aGlzLm5vZGUuZmlyc3RDaGlsZHx8dGhpcy5yZW1vdmUoKSksdGhpc30sZmxhdHRlbjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnVuZ3JvdXAodCxlKX19KSxhLkNvbnRhaW5lcj1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLHQpfSxpbmhlcml0OmEuUGFyZW50fSksYS5WaWV3Qm94PWEuaW52ZW50KHtwYXJlbnQ6YS5Db250YWluZXIsY29uc3RydWN0Ont9fSksW1wiY2xpY2tcIixcImRibGNsaWNrXCIsXCJtb3VzZWRvd25cIixcIm1vdXNldXBcIixcIm1vdXNlb3ZlclwiLFwibW91c2VvdXRcIixcIm1vdXNlbW92ZVwiLFwidG91Y2hzdGFydFwiLFwidG91Y2htb3ZlXCIsXCJ0b3VjaGxlYXZlXCIsXCJ0b3VjaGVuZFwiLFwidG91Y2hjYW5jZWxcIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7YS5FbGVtZW50LnByb3RvdHlwZVt0XT1mdW5jdGlvbihlKXtyZXR1cm4gYS5vbih0aGlzLm5vZGUsdCxlKSx0aGlzfX0pKSxhLmxpc3RlbmVycz1bXSxhLmhhbmRsZXJNYXA9W10sYS5saXN0ZW5lcklkPTAsYS5vbj1mdW5jdGlvbih0LGUsaSxzLHIpe3ZhciBvPWkuYmluZChzfHx0Lmluc3RhbmNlfHx0KSxuPShhLmhhbmRsZXJNYXAuaW5kZXhPZih0KSsxfHxhLmhhbmRsZXJNYXAucHVzaCh0KSktMSxsPWUuc3BsaXQoXCIuXCIpWzBdLGg9ZS5zcGxpdChcIi5cIilbMV18fFwiKlwiO2EubGlzdGVuZXJzW25dPWEubGlzdGVuZXJzW25dfHx7fSxhLmxpc3RlbmVyc1tuXVtsXT1hLmxpc3RlbmVyc1tuXVtsXXx8e30sYS5saXN0ZW5lcnNbbl1bbF1baF09YS5saXN0ZW5lcnNbbl1bbF1baF18fHt9LGkuX3N2Z2pzTGlzdGVuZXJJZHx8KGkuX3N2Z2pzTGlzdGVuZXJJZD0rK2EubGlzdGVuZXJJZCksYS5saXN0ZW5lcnNbbl1bbF1baF1baS5fc3ZnanNMaXN0ZW5lcklkXT1vLHQuYWRkRXZlbnRMaXN0ZW5lcihsLG8scnx8e3Bhc3NpdmU6ITB9KX0sYS5vZmY9ZnVuY3Rpb24odCxlLGkpe3ZhciBzPWEuaGFuZGxlck1hcC5pbmRleE9mKHQpLHI9ZSYmZS5zcGxpdChcIi5cIilbMF0sbz1lJiZlLnNwbGl0KFwiLlwiKVsxXSxuPVwiXCI7aWYoLTEhPXMpaWYoaSl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgaSYmKGk9aS5fc3ZnanNMaXN0ZW5lcklkKSwhaSlyZXR1cm47YS5saXN0ZW5lcnNbc11bcl0mJmEubGlzdGVuZXJzW3NdW3JdW298fFwiKlwiXSYmKHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihyLGEubGlzdGVuZXJzW3NdW3JdW298fFwiKlwiXVtpXSwhMSksZGVsZXRlIGEubGlzdGVuZXJzW3NdW3JdW298fFwiKlwiXVtpXSl9ZWxzZSBpZihvJiZyKXtpZihhLmxpc3RlbmVyc1tzXVtyXSYmYS5saXN0ZW5lcnNbc11bcl1bb10pe2Zvcih2YXIgbCBpbiBhLmxpc3RlbmVyc1tzXVtyXVtvXSlhLm9mZih0LFtyLG9dLmpvaW4oXCIuXCIpLGwpO2RlbGV0ZSBhLmxpc3RlbmVyc1tzXVtyXVtvXX19ZWxzZSBpZihvKWZvcih2YXIgaCBpbiBhLmxpc3RlbmVyc1tzXSlmb3IodmFyIG4gaW4gYS5saXN0ZW5lcnNbc11baF0pbz09PW4mJmEub2ZmKHQsW2gsb10uam9pbihcIi5cIikpO2Vsc2UgaWYocil7aWYoYS5saXN0ZW5lcnNbc11bcl0pe2Zvcih2YXIgbiBpbiBhLmxpc3RlbmVyc1tzXVtyXSlhLm9mZih0LFtyLG5dLmpvaW4oXCIuXCIpKTtkZWxldGUgYS5saXN0ZW5lcnNbc11bcl19fWVsc2V7Zm9yKHZhciBoIGluIGEubGlzdGVuZXJzW3NdKWEub2ZmKHQsaCk7ZGVsZXRlIGEubGlzdGVuZXJzW3NdLGRlbGV0ZSBhLmhhbmRsZXJNYXBbc119fSxhLmV4dGVuZChhLkVsZW1lbnQse29uOmZ1bmN0aW9uKHQsZSxpLHMpe3JldHVybiBhLm9uKHRoaXMubm9kZSx0LGUsaSxzKSx0aGlzfSxvZmY6ZnVuY3Rpb24odCxlKXtyZXR1cm4gYS5vZmYodGhpcy5ub2RlLHQsZSksdGhpc30sZmlyZTpmdW5jdGlvbihlLGkpe3JldHVybiBlIGluc3RhbmNlb2YgdC5FdmVudD90aGlzLm5vZGUuZGlzcGF0Y2hFdmVudChlKTp0aGlzLm5vZGUuZGlzcGF0Y2hFdmVudChlPW5ldyBhLkN1c3RvbUV2ZW50KGUse2RldGFpbDppLGNhbmNlbGFibGU6ITB9KSksdGhpcy5fZXZlbnQ9ZSx0aGlzfSxldmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ldmVudH19KSxhLkRlZnM9YS5pbnZlbnQoe2NyZWF0ZTpcImRlZnNcIixpbmhlcml0OmEuQ29udGFpbmVyfSksYS5HPWEuaW52ZW50KHtjcmVhdGU6XCJnXCIsaW5oZXJpdDphLkNvbnRhaW5lcixleHRlbmQ6e3g6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy50cmFuc2Zvcm0oXCJ4XCIpOnRoaXMudHJhbnNmb3JtKHt4OnQtdGhpcy54KCl9LCEwKX19LGNvbnN0cnVjdDp7Z3JvdXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuRyl9fX0pLGEuRG9jPWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dCYmKFwic3ZnXCI9PSh0PVwic3RyaW5nXCI9PXR5cGVvZiB0P2UuZ2V0RWxlbWVudEJ5SWQodCk6dCkubm9kZU5hbWU/dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdCk6KHRoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLGEuY3JlYXRlKFwic3ZnXCIpKSx0LmFwcGVuZENoaWxkKHRoaXMubm9kZSksdGhpcy5zaXplKFwiMTAwJVwiLFwiMTAwJVwiKSksdGhpcy5uYW1lc3BhY2UoKS5kZWZzKCkpfSxpbmhlcml0OmEuQ29udGFpbmVyLGV4dGVuZDp7bmFtZXNwYWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXR0cih7eG1sbnM6YS5ucyx2ZXJzaW9uOlwiMS4xXCJ9KS5hdHRyKFwieG1sbnM6eGxpbmtcIixhLnhsaW5rLGEueG1sbnMpLmF0dHIoXCJ4bWxuczpzdmdqc1wiLGEuc3ZnanMsYS54bWxucyl9LGRlZnM6ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gdGhpcy5fZGVmc3x8KCh0PXRoaXMubm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZShcImRlZnNcIilbMF0pP3RoaXMuX2RlZnM9YS5hZG9wdCh0KTp0aGlzLl9kZWZzPW5ldyBhLkRlZnMsdGhpcy5ub2RlLmFwcGVuZENoaWxkKHRoaXMuX2RlZnMubm9kZSkpLHRoaXMuX2RlZnN9LHBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUucGFyZW50Tm9kZSYmXCIjZG9jdW1lbnRcIiE9dGhpcy5ub2RlLnBhcmVudE5vZGUubm9kZU5hbWU/dGhpcy5ub2RlLnBhcmVudE5vZGU6bnVsbH0scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkucmVtb3ZlQ2hpbGQodGhpcy5ub2RlKSx0aGlzfSxjbGVhcjpmdW5jdGlvbigpe2Zvcig7dGhpcy5ub2RlLmhhc0NoaWxkTm9kZXMoKTspdGhpcy5ub2RlLnJlbW92ZUNoaWxkKHRoaXMubm9kZS5sYXN0Q2hpbGQpO3JldHVybiBkZWxldGUgdGhpcy5fZGVmcyxhLnBhcnNlci5kcmF3JiYhYS5wYXJzZXIuZHJhdy5wYXJlbnROb2RlJiZ0aGlzLm5vZGUuYXBwZW5kQ2hpbGQoYS5wYXJzZXIuZHJhdyksdGhpc30sY2xvbmU6ZnVuY3Rpb24odCl7dGhpcy53cml0ZURhdGFUb0RvbSgpO3ZhciBlPXRoaXMubm9kZSxpPXgoZS5jbG9uZU5vZGUoITApKTtyZXR1cm4gdD8odC5ub2RlfHx0KS5hcHBlbmRDaGlsZChpLm5vZGUpOmUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaS5ub2RlLGUubmV4dFNpYmxpbmcpLGl9fX0pLGEuZXh0ZW5kKGEuRWxlbWVudCx7fSksYS5HcmFkaWVudD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLGEuY3JlYXRlKHQrXCJHcmFkaWVudFwiKSksdGhpcy50eXBlPXR9LGluaGVyaXQ6YS5Db250YWluZXIsZXh0ZW5kOnthdDpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlN0b3ApLnVwZGF0ZSh0LGUsaSl9LHVwZGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbGVhcigpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJnQuY2FsbCh0aGlzLHRoaXMpLHRoaXN9LGZpbGw6ZnVuY3Rpb24oKXtyZXR1cm5cInVybCgjXCIrdGhpcy5pZCgpK1wiKVwifSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwoKX0sYXR0cjpmdW5jdGlvbih0LGUsaSl7cmV0dXJuXCJ0cmFuc2Zvcm1cIj09dCYmKHQ9XCJncmFkaWVudFRyYW5zZm9ybVwiKSxhLkNvbnRhaW5lci5wcm90b3R5cGUuYXR0ci5jYWxsKHRoaXMsdCxlLGkpfX0sY29uc3RydWN0OntncmFkaWVudDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmRlZnMoKS5ncmFkaWVudCh0LGUpfX19KSxhLmV4dGVuZChhLkdyYWRpZW50LGEuRlgse2Zyb206ZnVuY3Rpb24odCxlKXtyZXR1cm5cInJhZGlhbFwiPT0odGhpcy5fdGFyZ2V0fHx0aGlzKS50eXBlP3RoaXMuYXR0cih7Zng6bmV3IGEuTnVtYmVyKHQpLGZ5Om5ldyBhLk51bWJlcihlKX0pOnRoaXMuYXR0cih7eDE6bmV3IGEuTnVtYmVyKHQpLHkxOm5ldyBhLk51bWJlcihlKX0pfSx0bzpmdW5jdGlvbih0LGUpe3JldHVyblwicmFkaWFsXCI9PSh0aGlzLl90YXJnZXR8fHRoaXMpLnR5cGU/dGhpcy5hdHRyKHtjeDpuZXcgYS5OdW1iZXIodCksY3k6bmV3IGEuTnVtYmVyKGUpfSk6dGhpcy5hdHRyKHt4MjpuZXcgYS5OdW1iZXIodCkseTI6bmV3IGEuTnVtYmVyKGUpfSl9fSksYS5leHRlbmQoYS5EZWZzLHtncmFkaWVudDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnB1dChuZXcgYS5HcmFkaWVudCh0KSkudXBkYXRlKGUpfX0pLGEuU3RvcD1hLmludmVudCh7Y3JlYXRlOlwic3RvcFwiLGluaGVyaXQ6YS5FbGVtZW50LGV4dGVuZDp7dXBkYXRlOmZ1bmN0aW9uKHQpe3JldHVybihcIm51bWJlclwiPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIGEuTnVtYmVyKSYmKHQ9e29mZnNldDphcmd1bWVudHNbMF0sY29sb3I6YXJndW1lbnRzWzFdLG9wYWNpdHk6YXJndW1lbnRzWzJdfSksbnVsbCE9dC5vcGFjaXR5JiZ0aGlzLmF0dHIoXCJzdG9wLW9wYWNpdHlcIix0Lm9wYWNpdHkpLG51bGwhPXQuY29sb3ImJnRoaXMuYXR0cihcInN0b3AtY29sb3JcIix0LmNvbG9yKSxudWxsIT10Lm9mZnNldCYmdGhpcy5hdHRyKFwib2Zmc2V0XCIsbmV3IGEuTnVtYmVyKHQub2Zmc2V0KSksdGhpc319fSksYS5QYXR0ZXJuPWEuaW52ZW50KHtjcmVhdGU6XCJwYXR0ZXJuXCIsaW5oZXJpdDphLkNvbnRhaW5lcixleHRlbmQ6e2ZpbGw6ZnVuY3Rpb24oKXtyZXR1cm5cInVybCgjXCIrdGhpcy5pZCgpK1wiKVwifSx1cGRhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xlYXIoKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiZ0LmNhbGwodGhpcyx0aGlzKSx0aGlzfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwoKX0sYXR0cjpmdW5jdGlvbih0LGUsaSl7cmV0dXJuXCJ0cmFuc2Zvcm1cIj09dCYmKHQ9XCJwYXR0ZXJuVHJhbnNmb3JtXCIpLGEuQ29udGFpbmVyLnByb3RvdHlwZS5hdHRyLmNhbGwodGhpcyx0LGUsaSl9fSxjb25zdHJ1Y3Q6e3BhdHRlcm46ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLmRlZnMoKS5wYXR0ZXJuKHQsZSxpKX19fSksYS5leHRlbmQoYS5EZWZzLHtwYXR0ZXJuOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuUGF0dGVybikudXBkYXRlKGkpLmF0dHIoe3g6MCx5OjAsd2lkdGg6dCxoZWlnaHQ6ZSxwYXR0ZXJuVW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwifSl9fSksYS5TaGFwZT1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLHQpfSxpbmhlcml0OmEuRWxlbWVudH0pLGEuU3ltYm9sPWEuaW52ZW50KHtjcmVhdGU6XCJzeW1ib2xcIixpbmhlcml0OmEuQ29udGFpbmVyLGNvbnN0cnVjdDp7c3ltYm9sOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlN5bWJvbCl9fX0pLGEuVXNlPWEuaW52ZW50KHtjcmVhdGU6XCJ1c2VcIixpbmhlcml0OmEuU2hhcGUsZXh0ZW5kOntlbGVtZW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYXR0cihcImhyZWZcIiwoZXx8XCJcIikrXCIjXCIrdCxhLnhsaW5rKX19LGNvbnN0cnVjdDp7dXNlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlVzZSkuZWxlbWVudCh0LGUpfX19KSxhLlJlY3Q9YS5pbnZlbnQoe2NyZWF0ZTpcInJlY3RcIixpbmhlcml0OmEuU2hhcGUsY29uc3RydWN0OntyZWN0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlJlY3QpLnNpemUodCxlKX19fSksYS5DaXJjbGU9YS5pbnZlbnQoe2NyZWF0ZTpcImNpcmNsZVwiLGluaGVyaXQ6YS5TaGFwZSxjb25zdHJ1Y3Q6e2NpcmNsZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuQ2lyY2xlKS5yeChuZXcgYS5OdW1iZXIodCkuZGl2aWRlKDIpKS5tb3ZlKDAsMCl9fX0pLGEuZXh0ZW5kKGEuQ2lyY2xlLGEuRlgse3J4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJyXCIsdCl9LHJ5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJ4KHQpfX0pLGEuRWxsaXBzZT1hLmludmVudCh7Y3JlYXRlOlwiZWxsaXBzZVwiLGluaGVyaXQ6YS5TaGFwZSxjb25zdHJ1Y3Q6e2VsbGlwc2U6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuRWxsaXBzZSkuc2l6ZSh0LGUpLm1vdmUoMCwwKX19fSksYS5leHRlbmQoYS5FbGxpcHNlLGEuUmVjdCxhLkZYLHtyeDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwicnhcIix0KX0scnk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcInJ5XCIsdCl9fSksYS5leHRlbmQoYS5DaXJjbGUsYS5FbGxpcHNlLHt4OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuY3goKS10aGlzLnJ4KCk6dGhpcy5jeCh0K3RoaXMucngoKSl9LHk6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5jeSgpLXRoaXMucnkoKTp0aGlzLmN5KHQrdGhpcy5yeSgpKX0sY3g6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hdHRyKFwiY3hcIik6dGhpcy5hdHRyKFwiY3hcIix0KX0sY3k6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hdHRyKFwiY3lcIik6dGhpcy5hdHRyKFwiY3lcIix0KX0sd2lkdGg6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/Mip0aGlzLnJ4KCk6dGhpcy5yeChuZXcgYS5OdW1iZXIodCkuZGl2aWRlKDIpKX0saGVpZ2h0OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10PzIqdGhpcy5yeSgpOnRoaXMucnkobmV3IGEuTnVtYmVyKHQpLmRpdmlkZSgyKSl9LHNpemU6ZnVuY3Rpb24odCxlKXt2YXIgaT11KHRoaXMsdCxlKTtyZXR1cm4gdGhpcy5yeChuZXcgYS5OdW1iZXIoaS53aWR0aCkuZGl2aWRlKDIpKS5yeShuZXcgYS5OdW1iZXIoaS5oZWlnaHQpLmRpdmlkZSgyKSl9fSksYS5MaW5lPWEuaW52ZW50KHtjcmVhdGU6XCJsaW5lXCIsaW5oZXJpdDphLlNoYXBlLGV4dGVuZDp7YXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGEuUG9pbnRBcnJheShbW3RoaXMuYXR0cihcIngxXCIpLHRoaXMuYXR0cihcInkxXCIpXSxbdGhpcy5hdHRyKFwieDJcIiksdGhpcy5hdHRyKFwieTJcIildXSl9LHBsb3Q6ZnVuY3Rpb24odCxlLGkscyl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hcnJheSgpOih0PXZvaWQgMCE9PWU/e3gxOnQseTE6ZSx4MjppLHkyOnN9Om5ldyBhLlBvaW50QXJyYXkodCkudG9MaW5lKCksdGhpcy5hdHRyKHQpKX0sbW92ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmF0dHIodGhpcy5hcnJheSgpLm1vdmUodCxlKS50b0xpbmUoKSl9LHNpemU6ZnVuY3Rpb24odCxlKXt2YXIgaT11KHRoaXMsdCxlKTtyZXR1cm4gdGhpcy5hdHRyKHRoaXMuYXJyYXkoKS5zaXplKGkud2lkdGgsaS5oZWlnaHQpLnRvTGluZSgpKX19LGNvbnN0cnVjdDp7bGluZTpmdW5jdGlvbih0LGUsaSxzKXtyZXR1cm4gYS5MaW5lLnByb3RvdHlwZS5wbG90LmFwcGx5KHRoaXMucHV0KG5ldyBhLkxpbmUpLG51bGwhPXQ/W3QsZSxpLHNdOlswLDAsMCwwXSl9fX0pLGEuUG9seWxpbmU9YS5pbnZlbnQoe2NyZWF0ZTpcInBvbHlsaW5lXCIsaW5oZXJpdDphLlNoYXBlLGNvbnN0cnVjdDp7cG9seWxpbmU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlBvbHlsaW5lKS5wbG90KHR8fG5ldyBhLlBvaW50QXJyYXkpfX19KSxhLlBvbHlnb249YS5pbnZlbnQoe2NyZWF0ZTpcInBvbHlnb25cIixpbmhlcml0OmEuU2hhcGUsY29uc3RydWN0Ontwb2x5Z29uOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnB1dChuZXcgYS5Qb2x5Z29uKS5wbG90KHR8fG5ldyBhLlBvaW50QXJyYXkpfX19KSxhLmV4dGVuZChhLlBvbHlsaW5lLGEuUG9seWdvbix7YXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXJyYXl8fCh0aGlzLl9hcnJheT1uZXcgYS5Qb2ludEFycmF5KHRoaXMuYXR0cihcInBvaW50c1wiKSkpfSxwbG90OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYXJyYXkoKTp0aGlzLmNsZWFyKCkuYXR0cihcInBvaW50c1wiLFwic3RyaW5nXCI9PXR5cGVvZiB0P3Q6dGhpcy5fYXJyYXk9bmV3IGEuUG9pbnRBcnJheSh0KSl9LGNsZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIGRlbGV0ZSB0aGlzLl9hcnJheSx0aGlzfSxtb3ZlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYXR0cihcInBvaW50c1wiLHRoaXMuYXJyYXkoKS5tb3ZlKHQsZSkpfSxzaXplOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dSh0aGlzLHQsZSk7cmV0dXJuIHRoaXMuYXR0cihcInBvaW50c1wiLHRoaXMuYXJyYXkoKS5zaXplKGkud2lkdGgsaS5oZWlnaHQpKX19KSxhLmV4dGVuZChhLkxpbmUsYS5Qb2x5bGluZSxhLlBvbHlnb24se21vcnBoQXJyYXk6YS5Qb2ludEFycmF5LHg6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5iYm94KCkueDp0aGlzLm1vdmUodCx0aGlzLmJib3goKS55KX0seTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmJib3goKS55OnRoaXMubW92ZSh0aGlzLmJib3goKS54LHQpfSx3aWR0aDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmJib3goKTtyZXR1cm4gbnVsbD09dD9lLndpZHRoOnRoaXMuc2l6ZSh0LGUuaGVpZ2h0KX0saGVpZ2h0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuYmJveCgpO3JldHVybiBudWxsPT10P2UuaGVpZ2h0OnRoaXMuc2l6ZShlLndpZHRoLHQpfX0pLGEuUGF0aD1hLmludmVudCh7Y3JlYXRlOlwicGF0aFwiLGluaGVyaXQ6YS5TaGFwZSxleHRlbmQ6e21vcnBoQXJyYXk6YS5QYXRoQXJyYXksYXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXJyYXl8fCh0aGlzLl9hcnJheT1uZXcgYS5QYXRoQXJyYXkodGhpcy5hdHRyKFwiZFwiKSkpfSxwbG90OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYXJyYXkoKTp0aGlzLmNsZWFyKCkuYXR0cihcImRcIixcInN0cmluZ1wiPT10eXBlb2YgdD90OnRoaXMuX2FycmF5PW5ldyBhLlBhdGhBcnJheSh0KSl9LGNsZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIGRlbGV0ZSB0aGlzLl9hcnJheSx0aGlzfX0sY29uc3RydWN0OntwYXRoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnB1dChuZXcgYS5QYXRoKS5wbG90KHR8fG5ldyBhLlBhdGhBcnJheSl9fX0pLGEuSW1hZ2U9YS5pbnZlbnQoe2NyZWF0ZTpcImltYWdlXCIsaW5oZXJpdDphLlNoYXBlLGV4dGVuZDp7bG9hZDpmdW5jdGlvbihlKXtpZighZSlyZXR1cm4gdGhpczt2YXIgaT10aGlzLHM9bmV3IHQuSW1hZ2U7cmV0dXJuIGEub24ocyxcImxvYWRcIiwoZnVuY3Rpb24oKXthLm9mZihzKTt2YXIgdD1pLnBhcmVudChhLlBhdHRlcm4pO251bGwhPT10JiYoMD09aS53aWR0aCgpJiYwPT1pLmhlaWdodCgpJiZpLnNpemUocy53aWR0aCxzLmhlaWdodCksdCYmMD09dC53aWR0aCgpJiYwPT10LmhlaWdodCgpJiZ0LnNpemUoaS53aWR0aCgpLGkuaGVpZ2h0KCkpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGkuX2xvYWRlZCYmaS5fbG9hZGVkLmNhbGwoaSx7d2lkdGg6cy53aWR0aCxoZWlnaHQ6cy5oZWlnaHQscmF0aW86cy53aWR0aC9zLmhlaWdodCx1cmw6ZX0pKX0pKSxhLm9uKHMsXCJlcnJvclwiLChmdW5jdGlvbih0KXthLm9mZihzKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBpLl9lcnJvciYmaS5fZXJyb3IuY2FsbChpLHQpfSkpLHRoaXMuYXR0cihcImhyZWZcIixzLnNyYz10aGlzLnNyYz1lLGEueGxpbmspfSxsb2FkZWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2xvYWRlZD10LHRoaXN9LGVycm9yOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9lcnJvcj10LHRoaXN9fSxjb25zdHJ1Y3Q6e2ltYWdlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuSW1hZ2UpLmxvYWQodCkuc2l6ZShlfHwwLGl8fGV8fDApfX19KSxhLlRleHQ9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLGEuY3JlYXRlKFwidGV4dFwiKSksdGhpcy5kb20ubGVhZGluZz1uZXcgYS5OdW1iZXIoMS4zKSx0aGlzLl9yZWJ1aWxkPSEwLHRoaXMuX2J1aWxkPSExLHRoaXMuYXR0cihcImZvbnQtZmFtaWx5XCIsYS5kZWZhdWx0cy5hdHRyc1tcImZvbnQtZmFtaWx5XCJdKX0saW5oZXJpdDphLlNoYXBlLGV4dGVuZDp7eDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmF0dHIoXCJ4XCIpOnRoaXMuYXR0cihcInhcIix0KX0sdGV4dDpmdW5jdGlvbih0KXtpZih2b2lkIDA9PT10KXt0PVwiXCI7Zm9yKHZhciBlPXRoaXMubm9kZS5jaGlsZE5vZGVzLGk9MCxzPWUubGVuZ3RoO2k8czsrK2kpMCE9aSYmMyE9ZVtpXS5ub2RlVHlwZSYmMT09YS5hZG9wdChlW2ldKS5kb20ubmV3TGluZWQmJih0Kz1cIlxcblwiKSx0Kz1lW2ldLnRleHRDb250ZW50O3JldHVybiB0fWlmKHRoaXMuY2xlYXIoKS5idWlsZCghMCksXCJmdW5jdGlvblwiPT10eXBlb2YgdCl0LmNhbGwodGhpcyx0aGlzKTtlbHNle2k9MDtmb3IodmFyIHI9KHQ9dC5zcGxpdChcIlxcblwiKSkubGVuZ3RoO2k8cjtpKyspdGhpcy50c3Bhbih0W2ldKS5uZXdMaW5lKCl9cmV0dXJuIHRoaXMuYnVpbGQoITEpLnJlYnVpbGQoKX0sc2l6ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwiZm9udC1zaXplXCIsdCkucmVidWlsZCgpfSxsZWFkaW5nOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuZG9tLmxlYWRpbmc6KHRoaXMuZG9tLmxlYWRpbmc9bmV3IGEuTnVtYmVyKHQpLHRoaXMucmVidWlsZCgpKX0sbGluZXM6ZnVuY3Rpb24oKXt2YXIgdD0odGhpcy50ZXh0UGF0aCYmdGhpcy50ZXh0UGF0aCgpfHx0aGlzKS5ub2RlLGU9YS51dGlscy5tYXAoYS51dGlscy5maWx0ZXJTVkdFbGVtZW50cyh0LmNoaWxkTm9kZXMpLChmdW5jdGlvbih0KXtyZXR1cm4gYS5hZG9wdCh0KX0pKTtyZXR1cm4gbmV3IGEuU2V0KGUpfSxyZWJ1aWxkOmZ1bmN0aW9uKHQpe2lmKFwiYm9vbGVhblwiPT10eXBlb2YgdCYmKHRoaXMuX3JlYnVpbGQ9dCksdGhpcy5fcmVidWlsZCl7dmFyIGU9dGhpcyxpPTAscz10aGlzLmRvbS5sZWFkaW5nKm5ldyBhLk51bWJlcih0aGlzLmF0dHIoXCJmb250LXNpemVcIikpO3RoaXMubGluZXMoKS5lYWNoKChmdW5jdGlvbigpe3RoaXMuZG9tLm5ld0xpbmVkJiYoZS50ZXh0UGF0aCgpfHx0aGlzLmF0dHIoXCJ4XCIsZS5hdHRyKFwieFwiKSksXCJcXG5cIj09dGhpcy50ZXh0KCk/aSs9czoodGhpcy5hdHRyKFwiZHlcIixzK2kpLGk9MCkpfSkpLHRoaXMuZmlyZShcInJlYnVpbGRcIil9cmV0dXJuIHRoaXN9LGJ1aWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9idWlsZD0hIXQsdGhpc30sc2V0RGF0YTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kb209dCx0aGlzLmRvbS5sZWFkaW5nPW5ldyBhLk51bWJlcih0LmxlYWRpbmd8fDEuMyksdGhpc319LGNvbnN0cnVjdDp7dGV4dDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuVGV4dCkudGV4dCh0KX0scGxhaW46ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlRleHQpLnBsYWluKHQpfX19KSxhLlRzcGFuPWEuaW52ZW50KHtjcmVhdGU6XCJ0c3BhblwiLGluaGVyaXQ6YS5TaGFwZSxleHRlbmQ6e3RleHQ6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5ub2RlLnRleHRDb250ZW50Kyh0aGlzLmRvbS5uZXdMaW5lZD9cIlxcblwiOlwiXCIpOihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3QuY2FsbCh0aGlzLHRoaXMpOnRoaXMucGxhaW4odCksdGhpcyl9LGR4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJkeFwiLHQpfSxkeTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwiZHlcIix0KX0sbmV3TGluZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMucGFyZW50KGEuVGV4dCk7cmV0dXJuIHRoaXMuZG9tLm5ld0xpbmVkPSEwLHRoaXMuZHkodC5kb20ubGVhZGluZyp0LmF0dHIoXCJmb250LXNpemVcIikpLmF0dHIoXCJ4XCIsdC54KCkpfX19KSxhLmV4dGVuZChhLlRleHQsYS5Uc3Bhbix7cGxhaW46ZnVuY3Rpb24odCl7cmV0dXJuITE9PT10aGlzLl9idWlsZCYmdGhpcy5jbGVhcigpLHRoaXMubm9kZS5hcHBlbmRDaGlsZChlLmNyZWF0ZVRleHROb2RlKHQpKSx0aGlzfSx0c3BhbjpmdW5jdGlvbih0KXt2YXIgZT0odGhpcy50ZXh0UGF0aCYmdGhpcy50ZXh0UGF0aCgpfHx0aGlzKS5ub2RlLGk9bmV3IGEuVHNwYW47cmV0dXJuITE9PT10aGlzLl9idWlsZCYmdGhpcy5jbGVhcigpLGUuYXBwZW5kQ2hpbGQoaS5ub2RlKSxpLnRleHQodCl9LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PSh0aGlzLnRleHRQYXRoJiZ0aGlzLnRleHRQYXRoKCl8fHRoaXMpLm5vZGU7dC5oYXNDaGlsZE5vZGVzKCk7KXQucmVtb3ZlQ2hpbGQodC5sYXN0Q2hpbGQpO3JldHVybiB0aGlzfSxsZW5ndGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLmdldENvbXB1dGVkVGV4dExlbmd0aCgpfX0pLGEuVGV4dFBhdGg9YS5pbnZlbnQoe2NyZWF0ZTpcInRleHRQYXRoXCIsaW5oZXJpdDphLlBhcmVudCxwYXJlbnQ6YS5UZXh0LGNvbnN0cnVjdDp7bW9ycGhBcnJheTphLlBhdGhBcnJheSxhcnJheTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudHJhY2soKTtyZXR1cm4gdD90LmFycmF5KCk6bnVsbH0scGxvdDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnRyYWNrKCksaT1udWxsO3JldHVybiBlJiYoaT1lLnBsb3QodCkpLG51bGw9PXQ/aTp0aGlzfSx0cmFjazpmdW5jdGlvbigpe3ZhciB0PXRoaXMudGV4dFBhdGgoKTtpZih0KXJldHVybiB0LnJlZmVyZW5jZShcImhyZWZcIil9LHRleHRQYXRoOmZ1bmN0aW9uKCl7aWYodGhpcy5ub2RlLmZpcnN0Q2hpbGQmJlwidGV4dFBhdGhcIj09dGhpcy5ub2RlLmZpcnN0Q2hpbGQubm9kZU5hbWUpcmV0dXJuIGEuYWRvcHQodGhpcy5ub2RlLmZpcnN0Q2hpbGQpfX19KSxhLk5lc3RlZD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYS5jcmVhdGUoXCJzdmdcIikpLHRoaXMuc3R5bGUoXCJvdmVyZmxvd1wiLFwidmlzaWJsZVwiKX0saW5oZXJpdDphLkNvbnRhaW5lcixjb25zdHJ1Y3Q6e25lc3RlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1dChuZXcgYS5OZXN0ZWQpfX19KTt2YXIgbD17c3Ryb2tlOltcImNvbG9yXCIsXCJ3aWR0aFwiLFwib3BhY2l0eVwiLFwibGluZWNhcFwiLFwibGluZWpvaW5cIixcIm1pdGVybGltaXRcIixcImRhc2hhcnJheVwiLFwiZGFzaG9mZnNldFwiXSxmaWxsOltcImNvbG9yXCIsXCJvcGFjaXR5XCIsXCJydWxlXCJdLHByZWZpeDpmdW5jdGlvbih0LGUpe3JldHVyblwiY29sb3JcIj09ZT90OnQrXCItXCIrZX19O2Z1bmN0aW9uIGgodCxlLGkscyl7cmV0dXJuIGkrcy5yZXBsYWNlKGEucmVnZXguZG90cyxcIiAuXCIpfWZ1bmN0aW9uIGModCl7cmV0dXJuIHQudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8tKC4pL2csKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUudG9VcHBlckNhc2UoKX0pKX1mdW5jdGlvbiBkKHQpe3JldHVybiB0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSl9ZnVuY3Rpb24gZyh0KXt2YXIgZT10LnRvU3RyaW5nKDE2KTtyZXR1cm4gMT09ZS5sZW5ndGg/XCIwXCIrZTplfWZ1bmN0aW9uIHUodCxlLGkpe2lmKG51bGw9PWV8fG51bGw9PWkpe3ZhciBhPXQuYmJveCgpO251bGw9PWU/ZT1hLndpZHRoL2EuaGVpZ2h0Kmk6bnVsbD09aSYmKGk9YS5oZWlnaHQvYS53aWR0aCplKX1yZXR1cm57d2lkdGg6ZSxoZWlnaHQ6aX19ZnVuY3Rpb24gcCh0LGUsaSl7cmV0dXJue3g6ZSp0LmEraSp0LmMrMCx5OmUqdC5iK2kqdC5kKzB9fWZ1bmN0aW9uIGYodCl7cmV0dXJue2E6dFswXSxiOnRbMV0sYzp0WzJdLGQ6dFszXSxlOnRbNF0sZjp0WzVdfX1mdW5jdGlvbiB4KGUpe2Zvcih2YXIgaT1lLmNoaWxkTm9kZXMubGVuZ3RoLTE7aT49MDtpLS0pZS5jaGlsZE5vZGVzW2ldaW5zdGFuY2VvZiB0LlNWR0VsZW1lbnQmJngoZS5jaGlsZE5vZGVzW2ldKTtyZXR1cm4gYS5hZG9wdChlKS5pZChhLmVpZChlLm5vZGVOYW1lKSl9ZnVuY3Rpb24gYih0KXtyZXR1cm4gTWF0aC5hYnModCk+MWUtMzc/dDowfVtcImZpbGxcIixcInN0cm9rZVwiXS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT17fTtlW3RdPWZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpcmV0dXJuIHRoaXM7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGV8fGEuQ29sb3IuaXNSZ2IoZSl8fGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUuZmlsbCl0aGlzLmF0dHIodCxlKTtlbHNlIGZvcih2YXIgaT1sW3RdLmxlbmd0aC0xO2k+PTA7aS0tKW51bGwhPWVbbFt0XVtpXV0mJnRoaXMuYXR0cihsLnByZWZpeCh0LGxbdF1baV0pLGVbbFt0XVtpXV0pO3JldHVybiB0aGlzfSxhLmV4dGVuZChhLkVsZW1lbnQsYS5GWCxlKX0pKSxhLmV4dGVuZChhLkVsZW1lbnQsYS5GWCx7dHJhbnNsYXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMudHJhbnNmb3JtKHt4OnQseTplfSl9LG1hdHJpeDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwidHJhbnNmb3JtXCIsbmV3IGEuTWF0cml4KDY9PWFyZ3VtZW50cy5sZW5ndGg/W10uc2xpY2UuY2FsbChhcmd1bWVudHMpOnQpKX0sb3BhY2l0eTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwib3BhY2l0eVwiLHQpfSxkeDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54KG5ldyBhLk51bWJlcih0KS5wbHVzKHRoaXMgaW5zdGFuY2VvZiBhLkZYPzA6dGhpcy54KCkpLCEwKX0sZHk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueShuZXcgYS5OdW1iZXIodCkucGx1cyh0aGlzIGluc3RhbmNlb2YgYS5GWD8wOnRoaXMueSgpKSwhMCl9fSksYS5leHRlbmQoYS5QYXRoLHtsZW5ndGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLmdldFRvdGFsTGVuZ3RoKCl9LHBvaW50QXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubm9kZS5nZXRQb2ludEF0TGVuZ3RoKHQpfX0pLGEuU2V0PWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7QXJyYXkuaXNBcnJheSh0KT90aGlzLm1lbWJlcnM9dDp0aGlzLmNsZWFyKCl9LGV4dGVuZDp7YWRkOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSxlPTAsaT10Lmxlbmd0aDtlPGk7ZSsrKXRoaXMubWVtYmVycy5wdXNoKHRbZV0pO3JldHVybiB0aGlzfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pbmRleCh0KTtyZXR1cm4gZT4tMSYmdGhpcy5tZW1iZXJzLnNwbGljZShlLDEpLHRoaXN9LGVhY2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsaT10aGlzLm1lbWJlcnMubGVuZ3RoO2U8aTtlKyspdC5hcHBseSh0aGlzLm1lbWJlcnNbZV0sW2UsdGhpcy5tZW1iZXJzXSk7cmV0dXJuIHRoaXN9LGNsZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVtYmVycz1bXSx0aGlzfSxsZW5ndGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZW1iZXJzLmxlbmd0aH0saGFzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmluZGV4KHQpPj0wfSxpbmRleDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tZW1iZXJzLmluZGV4T2YodCl9LGdldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tZW1iZXJzW3RdfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCh0aGlzLm1lbWJlcnMubGVuZ3RoLTEpfSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVtYmVyc319LGNvbnN0cnVjdDp7c2V0OmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgYS5TZXQodCl9fX0pLGEuRlguU2V0PWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5zZXQ9dH19KSxhLlNldC5pbmhlcml0PWZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIGEuU2hhcGUucHJvdG90eXBlKVwiZnVuY3Rpb25cIj09dHlwZW9mIGEuU2hhcGUucHJvdG90eXBlW2VdJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBhLlNldC5wcm90b3R5cGVbZV0mJnQucHVzaChlKTtmb3IodmFyIGUgaW4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXthLlNldC5wcm90b3R5cGVbdF09ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCxpPXRoaXMubWVtYmVycy5sZW5ndGg7ZTxpO2UrKyl0aGlzLm1lbWJlcnNbZV0mJlwiZnVuY3Rpb25cIj09dHlwZW9mIHRoaXMubWVtYmVyc1tlXVt0XSYmdGhpcy5tZW1iZXJzW2VdW3RdLmFwcGx5KHRoaXMubWVtYmVyc1tlXSxhcmd1bWVudHMpO3JldHVyblwiYW5pbWF0ZVwiPT10P3RoaXMuZnh8fCh0aGlzLmZ4PW5ldyBhLkZYLlNldCh0aGlzKSk6dGhpc319KSksdD1bXSxhLkZYLnByb3RvdHlwZSlcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLkZYLnByb3RvdHlwZVtlXSYmXCJmdW5jdGlvblwiIT10eXBlb2YgYS5GWC5TZXQucHJvdG90eXBlW2VdJiZ0LnB1c2goZSk7dC5mb3JFYWNoKChmdW5jdGlvbih0KXthLkZYLlNldC5wcm90b3R5cGVbdF09ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCxpPXRoaXMuc2V0Lm1lbWJlcnMubGVuZ3RoO2U8aTtlKyspdGhpcy5zZXQubWVtYmVyc1tlXS5meFt0XS5hcHBseSh0aGlzLnNldC5tZW1iZXJzW2VdLmZ4LGFyZ3VtZW50cyk7cmV0dXJuIHRoaXN9fSkpfSxhLmV4dGVuZChhLkVsZW1lbnQse30pLGEuZXh0ZW5kKGEuRWxlbWVudCx7cmVtZW1iZXI6ZnVuY3Rpb24odCxlKXtpZihcIm9iamVjdFwiPT09aShhcmd1bWVudHNbMF0pKWZvcih2YXIgYSBpbiB0KXRoaXMucmVtZW1iZXIoYSx0W2FdKTtlbHNle2lmKDE9PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMubWVtb3J5KClbdF07dGhpcy5tZW1vcnkoKVt0XT1lfXJldHVybiB0aGlzfSxmb3JnZXQ6ZnVuY3Rpb24oKXtpZigwPT1hcmd1bWVudHMubGVuZ3RoKXRoaXMuX21lbW9yeT17fTtlbHNlIGZvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLTE7dD49MDt0LS0pZGVsZXRlIHRoaXMubWVtb3J5KClbYXJndW1lbnRzW3RdXTtyZXR1cm4gdGhpc30sbWVtb3J5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21lbW9yeXx8KHRoaXMuX21lbW9yeT17fSl9fSksYS5nZXQ9ZnVuY3Rpb24odCl7dmFyIGk9ZS5nZXRFbGVtZW50QnlJZChmdW5jdGlvbih0KXt2YXIgZT0odHx8XCJcIikudG9TdHJpbmcoKS5tYXRjaChhLnJlZ2V4LnJlZmVyZW5jZSk7aWYoZSlyZXR1cm4gZVsxXX0odCl8fHQpO3JldHVybiBhLmFkb3B0KGkpfSxhLnNlbGVjdD1mdW5jdGlvbih0LGkpe3JldHVybiBuZXcgYS5TZXQoYS51dGlscy5tYXAoKGl8fGUpLnF1ZXJ5U2VsZWN0b3JBbGwodCksKGZ1bmN0aW9uKHQpe3JldHVybiBhLmFkb3B0KHQpfSkpKX0sYS5leHRlbmQoYS5QYXJlbnQse3NlbGVjdDpmdW5jdGlvbih0KXtyZXR1cm4gYS5zZWxlY3QodCx0aGlzLm5vZGUpfX0pO3ZhciB2PVwiYWJjZGVmXCIuc3BsaXQoXCJcIik7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdC5DdXN0b21FdmVudCl7dmFyIG09ZnVuY3Rpb24odCxpKXtpPWl8fHtidWJibGVzOiExLGNhbmNlbGFibGU6ITEsZGV0YWlsOnZvaWQgMH07dmFyIGE9ZS5jcmVhdGVFdmVudChcIkN1c3RvbUV2ZW50XCIpO3JldHVybiBhLmluaXRDdXN0b21FdmVudCh0LGkuYnViYmxlcyxpLmNhbmNlbGFibGUsaS5kZXRhaWwpLGF9O20ucHJvdG90eXBlPXQuRXZlbnQucHJvdG90eXBlLGEuQ3VzdG9tRXZlbnQ9bX1lbHNlIGEuQ3VzdG9tRXZlbnQ9dC5DdXN0b21FdmVudDtyZXR1cm4gYX0sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgoZnVuY3Rpb24oKXtyZXR1cm4gRXQoenQsenQuZG9jdW1lbnQpfSkpOlwib2JqZWN0XCI9PT0oXCJ1bmRlZmluZWRcIj09dHlwZW9mIGV4cG9ydHM/XCJ1bmRlZmluZWRcIjppKGV4cG9ydHMpKSYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz16dC5kb2N1bWVudD9FdCh6dCx6dC5kb2N1bWVudCk6ZnVuY3Rpb24odCl7cmV0dXJuIEV0KHQsdC5kb2N1bWVudCl9Onp0LlNWRz1FdCh6dCx6dC5kb2N1bWVudCksXG4vKiEgc3ZnLmZpbHRlci5qcyAtIHYyLjAuMiAtIDIwMTYtMDItMjRcbiogaHR0cHM6Ly9naXRodWIuY29tL3dvdXQvc3ZnLmZpbHRlci5qc1xuKiBDb3B5cmlnaHQgKGMpIDIwMTYgV291dCBGaWVyZW5zOyBMaWNlbnNlZCBNSVQgKi9cbmZ1bmN0aW9uKCl7U1ZHLkZpbHRlcj1TVkcuaW52ZW50KHtjcmVhdGU6XCJmaWx0ZXJcIixpbmhlcml0OlNWRy5QYXJlbnQsZXh0ZW5kOntzb3VyY2U6XCJTb3VyY2VHcmFwaGljXCIsc291cmNlQWxwaGE6XCJTb3VyY2VBbHBoYVwiLGJhY2tncm91bmQ6XCJCYWNrZ3JvdW5kSW1hZ2VcIixiYWNrZ3JvdW5kQWxwaGE6XCJCYWNrZ3JvdW5kQWxwaGFcIixmaWxsOlwiRmlsbFBhaW50XCIsc3Ryb2tlOlwiU3Ryb2tlUGFpbnRcIixhdXRvU2V0SW46ITAscHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYWRkKHQsZSksIXQuYXR0cihcImluXCIpJiZ0aGlzLmF1dG9TZXRJbiYmdC5hdHRyKFwiaW5cIix0aGlzLnNvdXJjZSksdC5hdHRyKFwicmVzdWx0XCIpfHx0LmF0dHIoXCJyZXN1bHRcIix0KSx0fSxibGVuZDpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuQmxlbmRFZmZlY3QodCxlLGkpKX0sY29sb3JNYXRyaXg6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5Db2xvck1hdHJpeEVmZmVjdCh0LGUpKX0sY29udm9sdmVNYXRyaXg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuQ29udm9sdmVNYXRyaXhFZmZlY3QodCkpfSxjb21wb25lbnRUcmFuc2ZlcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5Db21wb25lbnRUcmFuc2ZlckVmZmVjdCh0KSl9LGNvbXBvc2l0ZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuQ29tcG9zaXRlRWZmZWN0KHQsZSxpKSl9LGZsb29kOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuRmxvb2RFZmZlY3QodCxlKSl9LG9mZnNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLk9mZnNldEVmZmVjdCh0LGUpKX0saW1hZ2U6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuSW1hZ2VFZmZlY3QodCkpfSxtZXJnZTpmdW5jdGlvbigpe3ZhciB0PVt2b2lkIDBdO2Zvcih2YXIgZSBpbiBhcmd1bWVudHMpdC5wdXNoKGFyZ3VtZW50c1tlXSk7cmV0dXJuIHRoaXMucHV0KG5ldyhTVkcuTWVyZ2VFZmZlY3QuYmluZC5hcHBseShTVkcuTWVyZ2VFZmZlY3QsdCkpKX0sZ2F1c3NpYW5CbHVyOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuR2F1c3NpYW5CbHVyRWZmZWN0KHQsZSkpfSxtb3JwaG9sb2d5OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuTW9ycGhvbG9neUVmZmVjdCh0LGUpKX0sZGlmZnVzZUxpZ2h0aW5nOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5EaWZmdXNlTGlnaHRpbmdFZmZlY3QodCxlLGkpKX0sZGlzcGxhY2VtZW50TWFwOmZ1bmN0aW9uKHQsZSxpLGEscyl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuRGlzcGxhY2VtZW50TWFwRWZmZWN0KHQsZSxpLGEscykpfSxzcGVjdWxhckxpZ2h0aW5nOmZ1bmN0aW9uKHQsZSxpLGEpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLlNwZWN1bGFyTGlnaHRpbmdFZmZlY3QodCxlLGksYSkpfSx0aWxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuVGlsZUVmZmVjdCl9LHR1cmJ1bGVuY2U6ZnVuY3Rpb24odCxlLGksYSxzKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5UdXJidWxlbmNlRWZmZWN0KHQsZSxpLGEscykpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVyblwidXJsKCNcIit0aGlzLmF0dHIoXCJpZFwiKStcIilcIn19fSksU1ZHLmV4dGVuZChTVkcuRGVmcyx7ZmlsdGVyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucHV0KG5ldyBTVkcuRmlsdGVyKTtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiZ0LmNhbGwoZSxlKSxlfX0pLFNWRy5leHRlbmQoU1ZHLkNvbnRhaW5lcix7ZmlsdGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRlZnMoKS5maWx0ZXIodCl9fSksU1ZHLmV4dGVuZChTVkcuRWxlbWVudCxTVkcuRyxTVkcuTmVzdGVkLHtmaWx0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZmlsdGVyZXI9dCBpbnN0YW5jZW9mIFNWRy5FbGVtZW50P3Q6dGhpcy5kb2MoKS5maWx0ZXIodCksdGhpcy5kb2MoKSYmdGhpcy5maWx0ZXJlci5kb2MoKSE9PXRoaXMuZG9jKCkmJnRoaXMuZG9jKCkuZGVmcygpLmFkZCh0aGlzLmZpbHRlcmVyKSx0aGlzLmF0dHIoXCJmaWx0ZXJcIix0aGlzLmZpbHRlcmVyKSx0aGlzLmZpbHRlcmVyfSx1bmZpbHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5maWx0ZXJlciYmITA9PT10JiZ0aGlzLmZpbHRlcmVyLnJlbW92ZSgpLGRlbGV0ZSB0aGlzLmZpbHRlcmVyLHRoaXMuYXR0cihcImZpbHRlclwiLG51bGwpfX0pLFNWRy5FZmZlY3Q9U1ZHLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpfSxpbmhlcml0OlNWRy5FbGVtZW50LGV4dGVuZDp7aW46ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5zZWxlY3QoJ1tyZXN1bHQ9XCInK3RoaXMuYXR0cihcImluXCIpKydcIl0nKS5nZXQoMCl8fHRoaXMuYXR0cihcImluXCIpOnRoaXMuYXR0cihcImluXCIsdCl9LHJlc3VsdDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmF0dHIoXCJyZXN1bHRcIik6dGhpcy5hdHRyKFwicmVzdWx0XCIsdCl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVzdWx0KCl9fX0pLFNWRy5QYXJlbnRFZmZlY3Q9U1ZHLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpfSxpbmhlcml0OlNWRy5QYXJlbnQsZXh0ZW5kOntpbjpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnNlbGVjdCgnW3Jlc3VsdD1cIicrdGhpcy5hdHRyKFwiaW5cIikrJ1wiXScpLmdldCgwKXx8dGhpcy5hdHRyKFwiaW5cIik6dGhpcy5hdHRyKFwiaW5cIix0KX0scmVzdWx0OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYXR0cihcInJlc3VsdFwiKTp0aGlzLmF0dHIoXCJyZXN1bHRcIix0KX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXN1bHQoKX19fSk7dmFyIHQ9e2JsZW5kOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuYmxlbmQodGhpcyx0LGUpfSxjb2xvck1hdHJpeDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmNvbG9yTWF0cml4KHQsZSkuaW4odGhpcyl9LGNvbnZvbHZlTWF0cml4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmNvbnZvbHZlTWF0cml4KHQpLmluKHRoaXMpfSxjb21wb25lbnRUcmFuc2ZlcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5jb21wb25lbnRUcmFuc2Zlcih0KS5pbih0aGlzKX0sY29tcG9zaXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuY29tcG9zaXRlKHRoaXMsdCxlKX0sZmxvb2Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5mbG9vZCh0LGUpfSxvZmZzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5vZmZzZXQodCxlKS5pbih0aGlzKX0saW1hZ2U6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuaW1hZ2UodCl9LG1lcmdlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkubWVyZ2UuYXBwbHkodGhpcy5wYXJlbnQoKSxbdGhpc10uY29uY2F0KGFyZ3VtZW50cykpfSxnYXVzc2lhbkJsdXI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5nYXVzc2lhbkJsdXIodCxlKS5pbih0aGlzKX0sbW9ycGhvbG9neTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLm1vcnBob2xvZ3kodCxlKS5pbih0aGlzKX0sZGlmZnVzZUxpZ2h0aW5nOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5kaWZmdXNlTGlnaHRpbmcodCxlLGkpLmluKHRoaXMpfSxkaXNwbGFjZW1lbnRNYXA6ZnVuY3Rpb24odCxlLGksYSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuZGlzcGxhY2VtZW50TWFwKHRoaXMsdCxlLGksYSl9LHNwZWN1bGFyTGlnaHRpbmc6ZnVuY3Rpb24odCxlLGksYSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuc3BlY3VsYXJMaWdodGluZyh0LGUsaSxhKS5pbih0aGlzKX0sdGlsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnRpbGUoKS5pbih0aGlzKX0sdHVyYnVsZW5jZTpmdW5jdGlvbih0LGUsaSxhLHMpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnR1cmJ1bGVuY2UodCxlLGksYSxzKS5pbih0aGlzKX19O1NWRy5leHRlbmQoU1ZHLkVmZmVjdCx0KSxTVkcuZXh0ZW5kKFNWRy5QYXJlbnRFZmZlY3QsdCksU1ZHLkNoaWxkRWZmZWN0PVNWRy5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzKX0saW5oZXJpdDpTVkcuRWxlbWVudCxleHRlbmQ6e2luOmZ1bmN0aW9uKHQpe3RoaXMuYXR0cihcImluXCIsdCl9fX0pO3ZhciBlPXtibGVuZDpmdW5jdGlvbih0LGUsaSl7dGhpcy5hdHRyKHtpbjp0LGluMjplLG1vZGU6aXx8XCJub3JtYWxcIn0pfSxjb2xvck1hdHJpeDpmdW5jdGlvbih0LGUpe1wibWF0cml4XCI9PXQmJihlPXMoZSkpLHRoaXMuYXR0cih7dHlwZTp0LHZhbHVlczp2b2lkIDA9PT1lP251bGw6ZX0pfSxjb252b2x2ZU1hdHJpeDpmdW5jdGlvbih0KXt0PXModCksdGhpcy5hdHRyKHtvcmRlcjpNYXRoLnNxcnQodC5zcGxpdChcIiBcIikubGVuZ3RoKSxrZXJuZWxNYXRyaXg6dH0pfSxjb21wb3NpdGU6ZnVuY3Rpb24odCxlLGkpe3RoaXMuYXR0cih7aW46dCxpbjI6ZSxvcGVyYXRvcjppfSl9LGZsb29kOmZ1bmN0aW9uKHQsZSl7dGhpcy5hdHRyKFwiZmxvb2QtY29sb3JcIix0KSxudWxsIT1lJiZ0aGlzLmF0dHIoXCJmbG9vZC1vcGFjaXR5XCIsZSl9LG9mZnNldDpmdW5jdGlvbih0LGUpe3RoaXMuYXR0cih7ZHg6dCxkeTplfSl9LGltYWdlOmZ1bmN0aW9uKHQpe3RoaXMuYXR0cihcImhyZWZcIix0LFNWRy54bGluayl9LGRpc3BsYWNlbWVudE1hcDpmdW5jdGlvbih0LGUsaSxhLHMpe3RoaXMuYXR0cih7aW46dCxpbjI6ZSxzY2FsZTppLHhDaGFubmVsU2VsZWN0b3I6YSx5Q2hhbm5lbFNlbGVjdG9yOnN9KX0sZ2F1c3NpYW5CbHVyOmZ1bmN0aW9uKHQsZSl7bnVsbCE9dHx8bnVsbCE9ZT90aGlzLmF0dHIoXCJzdGREZXZpYXRpb25cIixmdW5jdGlvbih0KXtpZighQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdDtmb3IodmFyIGU9MCxpPXQubGVuZ3RoLGE9W107ZTxpO2UrKylhLnB1c2godFtlXSk7cmV0dXJuIGEuam9pbihcIiBcIil9KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpKTp0aGlzLmF0dHIoXCJzdGREZXZpYXRpb25cIixcIjAgMFwiKX0sbW9ycGhvbG9neTpmdW5jdGlvbih0LGUpe3RoaXMuYXR0cih7b3BlcmF0b3I6dCxyYWRpdXM6ZX0pfSx0aWxlOmZ1bmN0aW9uKCl7fSx0dXJidWxlbmNlOmZ1bmN0aW9uKHQsZSxpLGEscyl7dGhpcy5hdHRyKHtudW1PY3RhdmVzOmUsc2VlZDppLHN0aXRjaFRpbGVzOmEsYmFzZUZyZXF1ZW5jeTp0LHR5cGU6c30pfX0saT17bWVyZ2U6ZnVuY3Rpb24oKXt2YXIgdDtpZihhcmd1bWVudHNbMF1pbnN0YW5jZW9mIFNWRy5TZXQpe3ZhciBlPXRoaXM7YXJndW1lbnRzWzBdLmVhY2goKGZ1bmN0aW9uKHQpe3RoaXMgaW5zdGFuY2VvZiBTVkcuTWVyZ2VOb2RlP2UucHV0KHRoaXMpOih0aGlzIGluc3RhbmNlb2YgU1ZHLkVmZmVjdHx8dGhpcyBpbnN0YW5jZW9mIFNWRy5QYXJlbnRFZmZlY3QpJiZlLnB1dChuZXcgU1ZHLk1lcmdlTm9kZSh0aGlzKSl9KSl9ZWxzZXt0PUFycmF5LmlzQXJyYXkoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO2Zvcih2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKXRbaV1pbnN0YW5jZW9mIFNWRy5NZXJnZU5vZGU/dGhpcy5wdXQodFtpXSk6dGhpcy5wdXQobmV3IFNWRy5NZXJnZU5vZGUodFtpXSkpfX0sY29tcG9uZW50VHJhbnNmZXI6ZnVuY3Rpb24odCl7aWYodGhpcy5yZ2I9bmV3IFNWRy5TZXQsW1wiclwiLFwiZ1wiLFwiYlwiLFwiYVwiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3RoaXNbdF09bmV3KFNWR1tcIkZ1bmNcIit0LnRvVXBwZXJDYXNlKCldKShcImlkZW50aXR5XCIpLHRoaXMucmdiLmFkZCh0aGlzW3RdKSx0aGlzLm5vZGUuYXBwZW5kQ2hpbGQodGhpc1t0XS5ub2RlKX0uYmluZCh0aGlzKSksdClmb3IodmFyIGUgaW4gdC5yZ2ImJihbXCJyXCIsXCJnXCIsXCJiXCJdLmZvckVhY2goZnVuY3Rpb24oZSl7dGhpc1tlXS5hdHRyKHQucmdiKX0uYmluZCh0aGlzKSksZGVsZXRlIHQucmdiKSx0KXRoaXNbZV0uYXR0cih0W2VdKX0sZGlmZnVzZUxpZ2h0aW5nOmZ1bmN0aW9uKHQsZSxpKXt0aGlzLmF0dHIoe3N1cmZhY2VTY2FsZTp0LGRpZmZ1c2VDb25zdGFudDplLGtlcm5lbFVuaXRMZW5ndGg6aX0pfSxzcGVjdWxhckxpZ2h0aW5nOmZ1bmN0aW9uKHQsZSxpLGEpe3RoaXMuYXR0cih7c3VyZmFjZVNjYWxlOnQsZGlmZnVzZUNvbnN0YW50OmUsc3BlY3VsYXJFeHBvbmVudDppLGtlcm5lbFVuaXRMZW5ndGg6YX0pfX0sYT17ZGlzdGFudExpZ2h0OmZ1bmN0aW9uKHQsZSl7dGhpcy5hdHRyKHthemltdXRoOnQsZWxldmF0aW9uOmV9KX0scG9pbnRMaWdodDpmdW5jdGlvbih0LGUsaSl7dGhpcy5hdHRyKHt4OnQseTplLHo6aX0pfSxzcG90TGlnaHQ6ZnVuY3Rpb24odCxlLGksYSxzLHIpe3RoaXMuYXR0cih7eDp0LHk6ZSx6OmkscG9pbnRzQXRYOmEscG9pbnRzQXRZOnMscG9pbnRzQXRaOnJ9KX0sbWVyZ2VOb2RlOmZ1bmN0aW9uKHQpe3RoaXMuYXR0cihcImluXCIsdCl9fTtmdW5jdGlvbiBzKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpJiYodD1uZXcgU1ZHLkFycmF5KHQpKSx0LnRvU3RyaW5nKCkucmVwbGFjZSgvXlxccysvLFwiXCIpLnJlcGxhY2UoL1xccyskLyxcIlwiKS5yZXBsYWNlKC9cXHMrL2csXCIgXCIpfWZ1bmN0aW9uIHIoKXt2YXIgdD1mdW5jdGlvbigpe307Zm9yKHZhciBlIGluXCJmdW5jdGlvblwiPT10eXBlb2YgYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGgtMV0mJih0PWFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoLTFdLEFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChhcmd1bWVudHMsYXJndW1lbnRzLmxlbmd0aC0xLDEpKSxhcmd1bWVudHMpZm9yKHZhciBpIGluIGFyZ3VtZW50c1tlXSl0KGFyZ3VtZW50c1tlXVtpXSxpLGFyZ3VtZW50c1tlXSl9W1wiclwiLFwiZ1wiLFwiYlwiLFwiYVwiXS5mb3JFYWNoKChmdW5jdGlvbih0KXthW1wiRnVuY1wiK3QudG9VcHBlckNhc2UoKV09ZnVuY3Rpb24odCl7c3dpdGNoKHRoaXMuYXR0cihcInR5cGVcIix0KSx0KXtjYXNlXCJ0YWJsZVwiOnRoaXMuYXR0cihcInRhYmxlVmFsdWVzXCIsYXJndW1lbnRzWzFdKTticmVhaztjYXNlXCJsaW5lYXJcIjp0aGlzLmF0dHIoXCJzbG9wZVwiLGFyZ3VtZW50c1sxXSksdGhpcy5hdHRyKFwiaW50ZXJjZXB0XCIsYXJndW1lbnRzWzJdKTticmVhaztjYXNlXCJnYW1tYVwiOnRoaXMuYXR0cihcImFtcGxpdHVkZVwiLGFyZ3VtZW50c1sxXSksdGhpcy5hdHRyKFwiZXhwb25lbnRcIixhcmd1bWVudHNbMl0pLHRoaXMuYXR0cihcIm9mZnNldFwiLGFyZ3VtZW50c1syXSl9fX0pKSxyKGUsKGZ1bmN0aW9uKHQsZSl7dmFyIGk9ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpO1NWR1tpK1wiRWZmZWN0XCJdPVNWRy5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLFNWRy5jcmVhdGUoXCJmZVwiK2kpKSx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLnJlc3VsdCh0aGlzLmF0dHIoXCJpZFwiKStcIk91dFwiKX0saW5oZXJpdDpTVkcuRWZmZWN0LGV4dGVuZDp7fX0pfSkpLHIoaSwoZnVuY3Rpb24odCxlKXt2YXIgaT1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSk7U1ZHW2krXCJFZmZlY3RcIl09U1ZHLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsU1ZHLmNyZWF0ZShcImZlXCIraSkpLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMucmVzdWx0KHRoaXMuYXR0cihcImlkXCIpK1wiT3V0XCIpfSxpbmhlcml0OlNWRy5QYXJlbnRFZmZlY3QsZXh0ZW5kOnt9fSl9KSkscihhLChmdW5jdGlvbih0LGUpe3ZhciBpPWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKTtTVkdbaV09U1ZHLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsU1ZHLmNyZWF0ZShcImZlXCIraSkpLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxpbmhlcml0OlNWRy5DaGlsZEVmZmVjdCxleHRlbmQ6e319KX0pKSxTVkcuZXh0ZW5kKFNWRy5NZXJnZUVmZmVjdCx7aW46ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBTVkcuTWVyZ2VOb2RlP3RoaXMuYWRkKHQsMCk6dGhpcy5hZGQobmV3IFNWRy5NZXJnZU5vZGUodCksMCksdGhpc319KSxTVkcuZXh0ZW5kKFNWRy5Db21wb3NpdGVFZmZlY3QsU1ZHLkJsZW5kRWZmZWN0LFNWRy5EaXNwbGFjZW1lbnRNYXBFZmZlY3Qse2luMjpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnNlbGVjdCgnW3Jlc3VsdD1cIicrdGhpcy5hdHRyKFwiaW4yXCIpKydcIl0nKS5nZXQoMCl8fHRoaXMuYXR0cihcImluMlwiKTp0aGlzLmF0dHIoXCJpbjJcIix0KX19KSxTVkcuZmlsdGVyPXtzZXBpYXRvbmU6Wy4zNDMsLjY2OSwuMTE5LDAsMCwuMjQ5LC42MjYsLjEzLDAsMCwuMTcyLC4zMzQsLjExMSwwLDAsMCwwLDAsMSwwXX19LmNhbGwodm9pZCAwKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxzLHIsbyxuLGwsaCl7Zm9yKHZhciBjPXQuc2xpY2UocyxyfHxoKSxkPW8uc2xpY2UobixsfHxoKSxnPTAsdT17cG9zOlswLDBdLHN0YXJ0OlswLDBdfSxwPXtwb3M6WzAsMF0sc3RhcnQ6WzAsMF19Ozspe2lmKGNbZ109ZS5jYWxsKHUsY1tnXSksZFtnXT1lLmNhbGwocCxkW2ddKSxjW2ddWzBdIT1kW2ddWzBdfHxcIk1cIj09Y1tnXVswXXx8XCJBXCI9PWNbZ11bMF0mJihjW2ddWzRdIT1kW2ddWzRdfHxjW2ddWzVdIT1kW2ddWzVdKT8oQXJyYXkucHJvdG90eXBlLnNwbGljZS5hcHBseShjLFtnLDFdLmNvbmNhdChhLmNhbGwodSxjW2ddKSkpLEFycmF5LnByb3RvdHlwZS5zcGxpY2UuYXBwbHkoZCxbZywxXS5jb25jYXQoYS5jYWxsKHAsZFtnXSkpKSk6KGNbZ109aS5jYWxsKHUsY1tnXSksZFtnXT1pLmNhbGwocCxkW2ddKSksKytnPT1jLmxlbmd0aCYmZz09ZC5sZW5ndGgpYnJlYWs7Zz09Yy5sZW5ndGgmJmMucHVzaChbXCJDXCIsdS5wb3NbMF0sdS5wb3NbMV0sdS5wb3NbMF0sdS5wb3NbMV0sdS5wb3NbMF0sdS5wb3NbMV1dKSxnPT1kLmxlbmd0aCYmZC5wdXNoKFtcIkNcIixwLnBvc1swXSxwLnBvc1sxXSxwLnBvc1swXSxwLnBvc1sxXSxwLnBvc1swXSxwLnBvc1sxXV0pfXJldHVybntzdGFydDpjLGRlc3Q6ZH19ZnVuY3Rpb24gZSh0KXtzd2l0Y2godFswXSl7Y2FzZVwielwiOmNhc2VcIlpcIjp0WzBdPVwiTFwiLHRbMV09dGhpcy5zdGFydFswXSx0WzJdPXRoaXMuc3RhcnRbMV07YnJlYWs7Y2FzZVwiSFwiOnRbMF09XCJMXCIsdFsyXT10aGlzLnBvc1sxXTticmVhaztjYXNlXCJWXCI6dFswXT1cIkxcIix0WzJdPXRbMV0sdFsxXT10aGlzLnBvc1swXTticmVhaztjYXNlXCJUXCI6dFswXT1cIlFcIix0WzNdPXRbMV0sdFs0XT10WzJdLHRbMV09dGhpcy5yZWZsZWN0aW9uWzFdLHRbMl09dGhpcy5yZWZsZWN0aW9uWzBdO2JyZWFrO2Nhc2VcIlNcIjp0WzBdPVwiQ1wiLHRbNl09dFs0XSx0WzVdPXRbM10sdFs0XT10WzJdLHRbM109dFsxXSx0WzJdPXRoaXMucmVmbGVjdGlvblsxXSx0WzFdPXRoaXMucmVmbGVjdGlvblswXX1yZXR1cm4gdH1mdW5jdGlvbiBpKHQpe3ZhciBlPXQubGVuZ3RoO3JldHVybiB0aGlzLnBvcz1bdFtlLTJdLHRbZS0xXV0sLTEhPVwiU0NRVFwiLmluZGV4T2YodFswXSkmJih0aGlzLnJlZmxlY3Rpb249WzIqdGhpcy5wb3NbMF0tdFtlLTRdLDIqdGhpcy5wb3NbMV0tdFtlLTNdXSksdH1mdW5jdGlvbiBhKHQpe3ZhciBlPVt0XTtzd2l0Y2godFswXSl7Y2FzZVwiTVwiOnJldHVybiB0aGlzLnBvcz10aGlzLnN0YXJ0PVt0WzFdLHRbMl1dLGU7Y2FzZVwiTFwiOnRbNV09dFszXT10WzFdLHRbNl09dFs0XT10WzJdLHRbMV09dGhpcy5wb3NbMF0sdFsyXT10aGlzLnBvc1sxXTticmVhaztjYXNlXCJRXCI6dFs2XT10WzRdLHRbNV09dFszXSx0WzRdPTEqdFs0XS8zKzIqdFsyXS8zLHRbM109MSp0WzNdLzMrMip0WzFdLzMsdFsyXT0xKnRoaXMucG9zWzFdLzMrMip0WzJdLzMsdFsxXT0xKnRoaXMucG9zWzBdLzMrMip0WzFdLzM7YnJlYWs7Y2FzZVwiQVwiOmU9ZnVuY3Rpb24odCxlKXt2YXIgaSxhLHMscixvLG4sbCxoLGMsZCxnLHUscCxmLHgsYix2LG0seSx3LGssQSxTLEMsTCxQLEk9TWF0aC5hYnMoZVsxXSksVD1NYXRoLmFicyhlWzJdKSxNPWVbM10lMzYwLFg9ZVs0XSx6PWVbNV0sRT1lWzZdLFk9ZVs3XSxGPW5ldyBTVkcuUG9pbnQodCksUj1uZXcgU1ZHLlBvaW50KEUsWSksRD1bXTtpZigwPT09SXx8MD09PVR8fEYueD09PVIueCYmRi55PT09Ui55KXJldHVybltbXCJDXCIsRi54LEYueSxSLngsUi55LFIueCxSLnldXTtpPW5ldyBTVkcuUG9pbnQoKEYueC1SLngpLzIsKEYueS1SLnkpLzIpLnRyYW5zZm9ybSgobmV3IFNWRy5NYXRyaXgpLnJvdGF0ZShNKSksKGE9aS54KmkueC8oSSpJKStpLnkqaS55LyhUKlQpKT4xJiYoSSo9YT1NYXRoLnNxcnQoYSksVCo9YSk7cz0obmV3IFNWRy5NYXRyaXgpLnJvdGF0ZShNKS5zY2FsZSgxL0ksMS9UKS5yb3RhdGUoLU0pLEY9Ri50cmFuc2Zvcm0ocyksUj1SLnRyYW5zZm9ybShzKSxyPVtSLngtRi54LFIueS1GLnldLG49clswXSpyWzBdK3JbMV0qclsxXSxvPU1hdGguc3FydChuKSxyWzBdLz1vLHJbMV0vPW8sbD1uPDQ/TWF0aC5zcXJ0KDEtbi80KTowLFg9PT16JiYobCo9LTEpO2g9bmV3IFNWRy5Qb2ludCgoUi54K0YueCkvMitsKi1yWzFdLChSLnkrRi55KS8yK2wqclswXSksYz1uZXcgU1ZHLlBvaW50KEYueC1oLngsRi55LWgueSksZD1uZXcgU1ZHLlBvaW50KFIueC1oLngsUi55LWgueSksZz1NYXRoLmFjb3MoYy54L01hdGguc3FydChjLngqYy54K2MueSpjLnkpKSxjLnk8MCYmKGcqPS0xKTt1PU1hdGguYWNvcyhkLngvTWF0aC5zcXJ0KGQueCpkLngrZC55KmQueSkpLGQueTwwJiYodSo9LTEpO3omJmc+dSYmKHUrPTIqTWF0aC5QSSk7IXomJmc8dSYmKHUtPTIqTWF0aC5QSSk7Zm9yKGY9TWF0aC5jZWlsKDIqTWF0aC5hYnMoZy11KS9NYXRoLlBJKSxiPVtdLHY9ZyxwPSh1LWcpL2YseD00Kk1hdGgudGFuKHAvNCkvMyxrPTA7azw9ZjtrKyspeT1NYXRoLmNvcyh2KSxtPU1hdGguc2luKHYpLHc9bmV3IFNWRy5Qb2ludChoLngreSxoLnkrbSksYltrXT1bbmV3IFNWRy5Qb2ludCh3LngreCptLHcueS14KnkpLHcsbmV3IFNWRy5Qb2ludCh3LngteCptLHcueSt4KnkpXSx2Kz1wO2ZvcihiWzBdWzBdPWJbMF1bMV0uY2xvbmUoKSxiW2IubGVuZ3RoLTFdWzJdPWJbYi5sZW5ndGgtMV1bMV0uY2xvbmUoKSxzPShuZXcgU1ZHLk1hdHJpeCkucm90YXRlKE0pLnNjYWxlKEksVCkucm90YXRlKC1NKSxrPTAsQT1iLmxlbmd0aDtrPEE7aysrKWJba11bMF09YltrXVswXS50cmFuc2Zvcm0ocyksYltrXVsxXT1iW2tdWzFdLnRyYW5zZm9ybShzKSxiW2tdWzJdPWJba11bMl0udHJhbnNmb3JtKHMpO2ZvcihrPTEsQT1iLmxlbmd0aDtrPEE7aysrKVM9KHc9YltrLTFdWzJdKS54LEM9dy55LEw9KHc9YltrXVswXSkueCxQPXcueSxFPSh3PWJba11bMV0pLngsWT13LnksRC5wdXNoKFtcIkNcIixTLEMsTCxQLEUsWV0pO3JldHVybiBEfSh0aGlzLnBvcyx0KSx0PWVbMF19cmV0dXJuIHRbMF09XCJDXCIsdGhpcy5wb3M9W3RbNV0sdFs2XV0sdGhpcy5yZWZsZWN0aW9uPVsyKnRbNV0tdFszXSwyKnRbNl0tdFs0XV0sZX1mdW5jdGlvbiBzKHQsZSl7aWYoITE9PT1lKXJldHVybiExO2Zvcih2YXIgaT1lLGE9dC5sZW5ndGg7aTxhOysraSlpZihcIk1cIj09dFtpXVswXSlyZXR1cm4gaTtyZXR1cm4hMX1TVkcuZXh0ZW5kKFNWRy5QYXRoQXJyYXkse21vcnBoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgaT10aGlzLnZhbHVlLGE9dGhpcy5wYXJzZShlKSxyPTAsbz0wLG49ITEsbD0hMTshMSE9PXJ8fCExIT09bzspe3ZhciBoO249cyhpLCExIT09ciYmcisxKSxsPXMoYSwhMSE9PW8mJm8rMSksITE9PT1yJiYocj0wPT0oaD1uZXcgU1ZHLlBhdGhBcnJheShjLnN0YXJ0KS5iYm94KCkpLmhlaWdodHx8MD09aC53aWR0aD9pLnB1c2goaVswXSktMTppLnB1c2goW1wiTVwiLGgueCtoLndpZHRoLzIsaC55K2guaGVpZ2h0LzJdKS0xKSwhMT09PW8mJihvPTA9PShoPW5ldyBTVkcuUGF0aEFycmF5KGMuZGVzdCkuYmJveCgpKS5oZWlnaHR8fDA9PWgud2lkdGg/YS5wdXNoKGFbMF0pLTE6YS5wdXNoKFtcIk1cIixoLngraC53aWR0aC8yLGgueStoLmhlaWdodC8yXSktMSk7dmFyIGM9dChpLHIsbixhLG8sbCk7aT1pLnNsaWNlKDAscikuY29uY2F0KGMuc3RhcnQsITE9PT1uP1tdOmkuc2xpY2UobikpLGE9YS5zbGljZSgwLG8pLmNvbmNhdChjLmRlc3QsITE9PT1sP1tdOmEuc2xpY2UobCkpLHI9ITEhPT1uJiZyK2Muc3RhcnQubGVuZ3RoLG89ITEhPT1sJiZvK2MuZGVzdC5sZW5ndGh9cmV0dXJuIHRoaXMudmFsdWU9aSx0aGlzLmRlc3RpbmF0aW9uPW5ldyBTVkcuUGF0aEFycmF5LHRoaXMuZGVzdGluYXRpb24udmFsdWU9YSx0aGlzfX0pfSgpLFxuLyohIHN2Zy5kcmFnZ2FibGUuanMgLSB2Mi4yLjIgLSAyMDE5LTAxLTA4XG4qIGh0dHBzOi8vZ2l0aHViLmNvbS9zdmdkb3Rqcy9zdmcuZHJhZ2dhYmxlLmpzXG4qIENvcHlyaWdodCAoYykgMjAxOSBXb3V0IEZpZXJlbnM7IExpY2Vuc2VkIE1JVCAqL1xuZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3QucmVtZW1iZXIoXCJfZHJhZ2dhYmxlXCIsdGhpcyksdGhpcy5lbD10fXQucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzO3RoaXMuY29uc3RyYWludD10LHRoaXMudmFsdWU9ZSx0aGlzLmVsLm9uKFwibW91c2Vkb3duLmRyYWdcIiwoZnVuY3Rpb24odCl7aS5zdGFydCh0KX0pKSx0aGlzLmVsLm9uKFwidG91Y2hzdGFydC5kcmFnXCIsKGZ1bmN0aW9uKHQpe2kuc3RhcnQodCl9KSl9LHQucHJvdG90eXBlLnRyYW5zZm9ybVBvaW50PWZ1bmN0aW9uKHQsZSl7dmFyIGk9KHQ9dHx8d2luZG93LmV2ZW50KS5jaGFuZ2VkVG91Y2hlcyYmdC5jaGFuZ2VkVG91Y2hlc1swXXx8dDtyZXR1cm4gdGhpcy5wLng9aS5jbGllbnRYLShlfHwwKSx0aGlzLnAueT1pLmNsaWVudFksdGhpcy5wLm1hdHJpeFRyYW5zZm9ybSh0aGlzLm0pfSx0LnByb3RvdHlwZS5nZXRCQm94PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbC5iYm94KCk7cmV0dXJuIHRoaXMuZWwgaW5zdGFuY2VvZiBTVkcuTmVzdGVkJiYodD10aGlzLmVsLnJib3goKSksKHRoaXMuZWwgaW5zdGFuY2VvZiBTVkcuR3x8dGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5Vc2V8fHRoaXMuZWwgaW5zdGFuY2VvZiBTVkcuTmVzdGVkKSYmKHQueD10aGlzLmVsLngoKSx0Lnk9dGhpcy5lbC55KCkpLHR9LHQucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKHQpe2lmKFwiY2xpY2tcIiE9dC50eXBlJiZcIm1vdXNlZG93blwiIT10LnR5cGUmJlwibW91c2Vtb3ZlXCIhPXQudHlwZXx8MT09KHQud2hpY2h8fHQuYnV0dG9ucykpe3ZhciBlPXRoaXM7aWYodGhpcy5lbC5maXJlKFwiYmVmb3JlZHJhZ1wiLHtldmVudDp0LGhhbmRsZXI6dGhpc30pLCF0aGlzLmVsLmV2ZW50KCkuZGVmYXVsdFByZXZlbnRlZCl7dC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5wYXJlbnQ9dGhpcy5wYXJlbnR8fHRoaXMuZWwucGFyZW50KFNWRy5OZXN0ZWQpfHx0aGlzLmVsLnBhcmVudChTVkcuRG9jKSx0aGlzLnA9dGhpcy5wYXJlbnQubm9kZS5jcmVhdGVTVkdQb2ludCgpLHRoaXMubT10aGlzLmVsLm5vZGUuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpO3ZhciBpLGE9dGhpcy5nZXRCQm94KCk7aWYodGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5UZXh0KXN3aXRjaChpPXRoaXMuZWwubm9kZS5nZXRDb21wdXRlZFRleHRMZW5ndGgoKSx0aGlzLmVsLmF0dHIoXCJ0ZXh0LWFuY2hvclwiKSl7Y2FzZVwibWlkZGxlXCI6aS89MjticmVhaztjYXNlXCJzdGFydFwiOmk9MH10aGlzLnN0YXJ0UG9pbnRzPXtwb2ludDp0aGlzLnRyYW5zZm9ybVBvaW50KHQsaSksYm94OmEsdHJhbnNmb3JtOnRoaXMuZWwudHJhbnNmb3JtKCl9LFNWRy5vbih3aW5kb3csXCJtb3VzZW1vdmUuZHJhZ1wiLChmdW5jdGlvbih0KXtlLmRyYWcodCl9KSksU1ZHLm9uKHdpbmRvdyxcInRvdWNobW92ZS5kcmFnXCIsKGZ1bmN0aW9uKHQpe2UuZHJhZyh0KX0pKSxTVkcub24od2luZG93LFwibW91c2V1cC5kcmFnXCIsKGZ1bmN0aW9uKHQpe2UuZW5kKHQpfSkpLFNWRy5vbih3aW5kb3csXCJ0b3VjaGVuZC5kcmFnXCIsKGZ1bmN0aW9uKHQpe2UuZW5kKHQpfSkpLHRoaXMuZWwuZmlyZShcImRyYWdzdGFydFwiLHtldmVudDp0LHA6dGhpcy5zdGFydFBvaW50cy5wb2ludCxtOnRoaXMubSxoYW5kbGVyOnRoaXN9KX19fSx0LnByb3RvdHlwZS5kcmFnPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0QkJveCgpLGk9dGhpcy50cmFuc2Zvcm1Qb2ludCh0KSxhPXRoaXMuc3RhcnRQb2ludHMuYm94LngraS54LXRoaXMuc3RhcnRQb2ludHMucG9pbnQueCxzPXRoaXMuc3RhcnRQb2ludHMuYm94LnkraS55LXRoaXMuc3RhcnRQb2ludHMucG9pbnQueSxyPXRoaXMuY29uc3RyYWludCxvPWkueC10aGlzLnN0YXJ0UG9pbnRzLnBvaW50Lngsbj1pLnktdGhpcy5zdGFydFBvaW50cy5wb2ludC55O2lmKHRoaXMuZWwuZmlyZShcImRyYWdtb3ZlXCIse2V2ZW50OnQscDppLG06dGhpcy5tLGhhbmRsZXI6dGhpc30pLHRoaXMuZWwuZXZlbnQoKS5kZWZhdWx0UHJldmVudGVkKXJldHVybiBpO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHIpe3ZhciBsPXIuY2FsbCh0aGlzLmVsLGEscyx0aGlzLm0pO1wiYm9vbGVhblwiPT10eXBlb2YgbCYmKGw9e3g6bCx5Omx9KSwhMD09PWwueD90aGlzLmVsLngoYSk6ITEhPT1sLngmJnRoaXMuZWwueChsLngpLCEwPT09bC55P3RoaXMuZWwueShzKTohMSE9PWwueSYmdGhpcy5lbC55KGwueSl9ZWxzZVwib2JqZWN0XCI9PXR5cGVvZiByJiYobnVsbCE9ci5taW5YJiZhPHIubWluWD9vPShhPXIubWluWCktdGhpcy5zdGFydFBvaW50cy5ib3gueDpudWxsIT1yLm1heFgmJmE+ci5tYXhYLWUud2lkdGgmJihvPShhPXIubWF4WC1lLndpZHRoKS10aGlzLnN0YXJ0UG9pbnRzLmJveC54KSxudWxsIT1yLm1pblkmJnM8ci5taW5ZP249KHM9ci5taW5ZKS10aGlzLnN0YXJ0UG9pbnRzLmJveC55Om51bGwhPXIubWF4WSYmcz5yLm1heFktZS5oZWlnaHQmJihuPShzPXIubWF4WS1lLmhlaWdodCktdGhpcy5zdGFydFBvaW50cy5ib3gueSksbnVsbCE9ci5zbmFwVG9HcmlkJiYoYS09YSVyLnNuYXBUb0dyaWQscy09cyVyLnNuYXBUb0dyaWQsby09byVyLnNuYXBUb0dyaWQsbi09biVyLnNuYXBUb0dyaWQpLHRoaXMuZWwgaW5zdGFuY2VvZiBTVkcuRz90aGlzLmVsLm1hdHJpeCh0aGlzLnN0YXJ0UG9pbnRzLnRyYW5zZm9ybSkudHJhbnNmb3JtKHt4Om8seTpufSwhMCk6dGhpcy5lbC5tb3ZlKGEscykpO3JldHVybiBpfSx0LnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5kcmFnKHQpO3RoaXMuZWwuZmlyZShcImRyYWdlbmRcIix7ZXZlbnQ6dCxwOmUsbTp0aGlzLm0saGFuZGxlcjp0aGlzfSksU1ZHLm9mZih3aW5kb3csXCJtb3VzZW1vdmUuZHJhZ1wiKSxTVkcub2ZmKHdpbmRvdyxcInRvdWNobW92ZS5kcmFnXCIpLFNWRy5vZmYod2luZG93LFwibW91c2V1cC5kcmFnXCIpLFNWRy5vZmYod2luZG93LFwidG91Y2hlbmQuZHJhZ1wiKX0sU1ZHLmV4dGVuZChTVkcuRWxlbWVudCx7ZHJhZ2dhYmxlOmZ1bmN0aW9uKGUsaSl7XCJmdW5jdGlvblwiIT10eXBlb2YgZSYmXCJvYmplY3RcIiE9dHlwZW9mIGV8fChpPWUsZT0hMCk7dmFyIGE9dGhpcy5yZW1lbWJlcihcIl9kcmFnZ2FibGVcIil8fG5ldyB0KHRoaXMpO3JldHVybihlPXZvaWQgMD09PWV8fGUpP2EuaW5pdChpfHx7fSxlKToodGhpcy5vZmYoXCJtb3VzZWRvd24uZHJhZ1wiKSx0aGlzLm9mZihcInRvdWNoc3RhcnQuZHJhZ1wiKSksdGhpc319KX0uY2FsbCh2b2lkIDApLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmVsPXQsdC5yZW1lbWJlcihcIl9zZWxlY3RIYW5kbGVyXCIsdGhpcyksdGhpcy5wb2ludFNlbGVjdGlvbj17aXNTZWxlY3RlZDohMX0sdGhpcy5yZWN0U2VsZWN0aW9uPXtpc1NlbGVjdGVkOiExfSx0aGlzLnBvaW50c0xpc3Q9e2x0OlswLDBdLHJ0OltcIndpZHRoXCIsMF0scmI6W1wid2lkdGhcIixcImhlaWdodFwiXSxsYjpbMCxcImhlaWdodFwiXSx0OltcIndpZHRoXCIsMF0scjpbXCJ3aWR0aFwiLFwiaGVpZ2h0XCJdLGI6W1wid2lkdGhcIixcImhlaWdodFwiXSxsOlswLFwiaGVpZ2h0XCJdfSx0aGlzLnBvaW50Q29vcmQ9ZnVuY3Rpb24odCxlLGkpe3ZhciBhPVwic3RyaW5nXCIhPXR5cGVvZiB0P3Q6ZVt0XTtyZXR1cm4gaT9hLzI6YX0sdGhpcy5wb2ludENvb3Jkcz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMucG9pbnRzTGlzdFt0XTtyZXR1cm57eDp0aGlzLnBvaW50Q29vcmQoaVswXSxlLFwidFwiPT09dHx8XCJiXCI9PT10KSx5OnRoaXMucG9pbnRDb29yZChpWzFdLGUsXCJyXCI9PT10fHxcImxcIj09PXQpfX19dC5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuZWwuYmJveCgpO3RoaXMub3B0aW9ucz17fTt2YXIgYT10aGlzLmVsLnNlbGVjdGl6ZS5kZWZhdWx0cy5wb2ludHM7Zm9yKHZhciBzIGluIHRoaXMuZWwuc2VsZWN0aXplLmRlZmF1bHRzKXRoaXMub3B0aW9uc1tzXT10aGlzLmVsLnNlbGVjdGl6ZS5kZWZhdWx0c1tzXSx2b2lkIDAhPT1lW3NdJiYodGhpcy5vcHRpb25zW3NdPWVbc10pO3ZhciByPVtcInBvaW50c1wiLFwicG9pbnRzRXhjbHVkZVwiXTtmb3IodmFyIHMgaW4gcil7dmFyIG89dGhpcy5vcHRpb25zW3Jbc11dO1wic3RyaW5nXCI9PXR5cGVvZiBvP289by5sZW5ndGg+MD9vLnNwbGl0KC9cXHMqLFxccyovaSk6W106XCJib29sZWFuXCI9PXR5cGVvZiBvJiZcInBvaW50c1wiPT09cltzXSYmKG89bz9hOltdKSx0aGlzLm9wdGlvbnNbcltzXV09b310aGlzLm9wdGlvbnMucG9pbnRzPVthLHRoaXMub3B0aW9ucy5wb2ludHNdLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmluZGV4T2YodCk+LTF9KSl9KSksdGhpcy5vcHRpb25zLnBvaW50cz1bdGhpcy5vcHRpb25zLnBvaW50cyx0aGlzLm9wdGlvbnMucG9pbnRzRXhjbHVkZV0ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIGUuaW5kZXhPZih0KTwwfSkpfSkpLHRoaXMucGFyZW50PXRoaXMuZWwucGFyZW50KCksdGhpcy5uZXN0ZWQ9dGhpcy5uZXN0ZWR8fHRoaXMucGFyZW50Lmdyb3VwKCksdGhpcy5uZXN0ZWQubWF0cml4KG5ldyBTVkcuTWF0cml4KHRoaXMuZWwpLnRyYW5zbGF0ZShpLngsaS55KSksdGhpcy5vcHRpb25zLmRlZXBTZWxlY3QmJi0xIT09W1wibGluZVwiLFwicG9seWxpbmVcIixcInBvbHlnb25cIl0uaW5kZXhPZih0aGlzLmVsLnR5cGUpP3RoaXMuc2VsZWN0UG9pbnRzKHQpOnRoaXMuc2VsZWN0UmVjdCh0KSx0aGlzLm9ic2VydmUoKSx0aGlzLmNsZWFudXAoKX0sdC5wcm90b3R5cGUuc2VsZWN0UG9pbnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnBvaW50U2VsZWN0aW9uLmlzU2VsZWN0ZWQ9dCx0aGlzLnBvaW50U2VsZWN0aW9uLnNldHx8KHRoaXMucG9pbnRTZWxlY3Rpb24uc2V0PXRoaXMucGFyZW50LnNldCgpLHRoaXMuZHJhd1BvaW50cygpKSx0aGlzfSx0LnByb3RvdHlwZS5nZXRQb2ludEFycmF5PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbC5iYm94KCk7cmV0dXJuIHRoaXMuZWwuYXJyYXkoKS52YWx1ZU9mKCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm5bZVswXS10LngsZVsxXS10LnldfSkpfSx0LnByb3RvdHlwZS5kcmF3UG9pbnRzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMsZT10aGlzLmdldFBvaW50QXJyYXkoKSxpPTAsYT1lLmxlbmd0aDtpPGE7KytpKXt2YXIgcz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oaSl7KGk9aXx8d2luZG93LmV2ZW50KS5wcmV2ZW50RGVmYXVsdD9pLnByZXZlbnREZWZhdWx0KCk6aS5yZXR1cm5WYWx1ZT0hMSxpLnN0b3BQcm9wYWdhdGlvbigpO3ZhciBhPWkucGFnZVh8fGkudG91Y2hlc1swXS5wYWdlWCxzPWkucGFnZVl8fGkudG91Y2hlc1swXS5wYWdlWTt0LmVsLmZpcmUoXCJwb2ludFwiLHt4OmEseTpzLGk6ZSxldmVudDppfSl9fShpKSxyPXRoaXMuZHJhd1BvaW50KGVbaV1bMF0sZVtpXVsxXSkuYWRkQ2xhc3ModGhpcy5vcHRpb25zLmNsYXNzUG9pbnRzKS5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuY2xhc3NQb2ludHMrXCJfcG9pbnRcIikub24oXCJ0b3VjaHN0YXJ0XCIscykub24oXCJtb3VzZWRvd25cIixzKTt0aGlzLnBvaW50U2VsZWN0aW9uLnNldC5hZGQocil9fSx0LnByb3RvdHlwZS5kcmF3UG9pbnQ9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLm9wdGlvbnMucG9pbnRUeXBlO3N3aXRjaChpKXtjYXNlXCJjaXJjbGVcIjpyZXR1cm4gdGhpcy5kcmF3Q2lyY2xlKHQsZSk7Y2FzZVwicmVjdFwiOnJldHVybiB0aGlzLmRyYXdSZWN0KHQsZSk7ZGVmYXVsdDppZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBpKXJldHVybiBpLmNhbGwodGhpcyx0LGUpO3Rocm93IG5ldyBFcnJvcihcIlVua25vd24gXCIraStcIiBwb2ludCB0eXBlIVwiKX19LHQucHJvdG90eXBlLmRyYXdDaXJjbGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5uZXN0ZWQuY2lyY2xlKHRoaXMub3B0aW9ucy5wb2ludFNpemUpLmNlbnRlcih0LGUpfSx0LnByb3RvdHlwZS5kcmF3UmVjdD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm5lc3RlZC5yZWN0KHRoaXMub3B0aW9ucy5wb2ludFNpemUsdGhpcy5vcHRpb25zLnBvaW50U2l6ZSkuY2VudGVyKHQsZSl9LHQucHJvdG90eXBlLnVwZGF0ZVBvaW50U2VsZWN0aW9uPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRQb2ludEFycmF5KCk7dGhpcy5wb2ludFNlbGVjdGlvbi5zZXQuZWFjaCgoZnVuY3Rpb24oZSl7dGhpcy5jeCgpPT09dFtlXVswXSYmdGhpcy5jeSgpPT09dFtlXVsxXXx8dGhpcy5jZW50ZXIodFtlXVswXSx0W2VdWzFdKX0pKX0sdC5wcm90b3R5cGUudXBkYXRlUmVjdFNlbGVjdGlvbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLmVsLmJib3goKTtpZih0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldCgwKS5hdHRyKHt3aWR0aDplLndpZHRoLGhlaWdodDplLmhlaWdodH0pLHRoaXMub3B0aW9ucy5wb2ludHMubGVuZ3RoJiZ0aGlzLm9wdGlvbnMucG9pbnRzLm1hcCgoZnVuY3Rpb24oaSxhKXt2YXIgcz10LnBvaW50Q29vcmRzKGksZSk7dC5yZWN0U2VsZWN0aW9uLnNldC5nZXQoYSsxKS5jZW50ZXIocy54LHMueSl9KSksdGhpcy5vcHRpb25zLnJvdGF0aW9uUG9pbnQpe3ZhciBpPXRoaXMucmVjdFNlbGVjdGlvbi5zZXQubGVuZ3RoKCk7dGhpcy5yZWN0U2VsZWN0aW9uLnNldC5nZXQoaS0xKS5jZW50ZXIoZS53aWR0aC8yLDIwKX19LHQucHJvdG90eXBlLnNlbGVjdFJlY3Q9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMuZWwuYmJveCgpO2Z1bmN0aW9uIGEodCl7cmV0dXJuIGZ1bmN0aW9uKGkpeyhpPWl8fHdpbmRvdy5ldmVudCkucHJldmVudERlZmF1bHQ/aS5wcmV2ZW50RGVmYXVsdCgpOmkucmV0dXJuVmFsdWU9ITEsaS5zdG9wUHJvcGFnYXRpb24oKTt2YXIgYT1pLnBhZ2VYfHxpLnRvdWNoZXNbMF0ucGFnZVgscz1pLnBhZ2VZfHxpLnRvdWNoZXNbMF0ucGFnZVk7ZS5lbC5maXJlKHQse3g6YSx5OnMsZXZlbnQ6aX0pfX1pZih0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZD10LHRoaXMucmVjdFNlbGVjdGlvbi5zZXQ9dGhpcy5yZWN0U2VsZWN0aW9uLnNldHx8dGhpcy5wYXJlbnQuc2V0KCksdGhpcy5yZWN0U2VsZWN0aW9uLnNldC5nZXQoMCl8fHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuYWRkKHRoaXMubmVzdGVkLnJlY3QoaS53aWR0aCxpLmhlaWdodCkuYWRkQ2xhc3ModGhpcy5vcHRpb25zLmNsYXNzUmVjdCkpLHRoaXMub3B0aW9ucy5wb2ludHMubGVuZ3RoJiZ0aGlzLnJlY3RTZWxlY3Rpb24uc2V0Lmxlbmd0aCgpPDIpe3RoaXMub3B0aW9ucy5wb2ludHMubWFwKChmdW5jdGlvbih0LHMpe3ZhciByPWUucG9pbnRDb29yZHModCxpKSxvPWUuZHJhd1BvaW50KHIueCxyLnkpLmF0dHIoXCJjbGFzc1wiLGUub3B0aW9ucy5jbGFzc1BvaW50cytcIl9cIit0KS5vbihcIm1vdXNlZG93blwiLGEodCkpLm9uKFwidG91Y2hzdGFydFwiLGEodCkpO2UucmVjdFNlbGVjdGlvbi5zZXQuYWRkKG8pfSkpLHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZWFjaCgoZnVuY3Rpb24oKXt0aGlzLmFkZENsYXNzKGUub3B0aW9ucy5jbGFzc1BvaW50cyl9KSl9aWYodGhpcy5vcHRpb25zLnJvdGF0aW9uUG9pbnQmJih0aGlzLm9wdGlvbnMucG9pbnRzJiYhdGhpcy5yZWN0U2VsZWN0aW9uLnNldC5nZXQoOSl8fCF0aGlzLm9wdGlvbnMucG9pbnRzJiYhdGhpcy5yZWN0U2VsZWN0aW9uLnNldC5nZXQoMSkpKXt2YXIgcz1mdW5jdGlvbih0KXsodD10fHx3aW5kb3cuZXZlbnQpLnByZXZlbnREZWZhdWx0P3QucHJldmVudERlZmF1bHQoKTp0LnJldHVyblZhbHVlPSExLHQuc3RvcFByb3BhZ2F0aW9uKCk7dmFyIGk9dC5wYWdlWHx8dC50b3VjaGVzWzBdLnBhZ2VYLGE9dC5wYWdlWXx8dC50b3VjaGVzWzBdLnBhZ2VZO2UuZWwuZmlyZShcInJvdFwiLHt4OmkseTphLGV2ZW50OnR9KX0scj10aGlzLmRyYXdQb2ludChpLndpZHRoLzIsMjApLmF0dHIoXCJjbGFzc1wiLHRoaXMub3B0aW9ucy5jbGFzc1BvaW50cytcIl9yb3RcIikub24oXCJ0b3VjaHN0YXJ0XCIscykub24oXCJtb3VzZWRvd25cIixzKTt0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmFkZChyKX19LHQucHJvdG90eXBlLmhhbmRsZXI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsLmJib3goKTt0aGlzLm5lc3RlZC5tYXRyaXgobmV3IFNWRy5NYXRyaXgodGhpcy5lbCkudHJhbnNsYXRlKHQueCx0LnkpKSx0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZCYmdGhpcy51cGRhdGVSZWN0U2VsZWN0aW9uKCksdGhpcy5wb2ludFNlbGVjdGlvbi5pc1NlbGVjdGVkJiZ0aGlzLnVwZGF0ZVBvaW50U2VsZWN0aW9uKCl9LHQucHJvdG90eXBlLm9ic2VydmU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2lmKE11dGF0aW9uT2JzZXJ2ZXIpaWYodGhpcy5yZWN0U2VsZWN0aW9uLmlzU2VsZWN0ZWR8fHRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZCl0aGlzLm9ic2VydmVySW5zdD10aGlzLm9ic2VydmVySW5zdHx8bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKGZ1bmN0aW9uKCl7dC5oYW5kbGVyKCl9KSksdGhpcy5vYnNlcnZlckluc3Qub2JzZXJ2ZSh0aGlzLmVsLm5vZGUse2F0dHJpYnV0ZXM6ITB9KTtlbHNlIHRyeXt0aGlzLm9ic2VydmVySW5zdC5kaXNjb25uZWN0KCksZGVsZXRlIHRoaXMub2JzZXJ2ZXJJbnN0fWNhdGNoKHQpe31lbHNlIHRoaXMuZWwub2ZmKFwiRE9NQXR0ck1vZGlmaWVkLnNlbGVjdFwiKSwodGhpcy5yZWN0U2VsZWN0aW9uLmlzU2VsZWN0ZWR8fHRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZCkmJnRoaXMuZWwub24oXCJET01BdHRyTW9kaWZpZWQuc2VsZWN0XCIsKGZ1bmN0aW9uKCl7dC5oYW5kbGVyKCl9KSl9LHQucHJvdG90eXBlLmNsZWFudXA9ZnVuY3Rpb24oKXshdGhpcy5yZWN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQmJnRoaXMucmVjdFNlbGVjdGlvbi5zZXQmJih0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmVhY2goKGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmUoKX0pKSx0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmNsZWFyKCksZGVsZXRlIHRoaXMucmVjdFNlbGVjdGlvbi5zZXQpLCF0aGlzLnBvaW50U2VsZWN0aW9uLmlzU2VsZWN0ZWQmJnRoaXMucG9pbnRTZWxlY3Rpb24uc2V0JiYodGhpcy5wb2ludFNlbGVjdGlvbi5zZXQuZWFjaCgoZnVuY3Rpb24oKXt0aGlzLnJlbW92ZSgpfSkpLHRoaXMucG9pbnRTZWxlY3Rpb24uc2V0LmNsZWFyKCksZGVsZXRlIHRoaXMucG9pbnRTZWxlY3Rpb24uc2V0KSx0aGlzLnBvaW50U2VsZWN0aW9uLmlzU2VsZWN0ZWR8fHRoaXMucmVjdFNlbGVjdGlvbi5pc1NlbGVjdGVkfHwodGhpcy5uZXN0ZWQucmVtb3ZlKCksZGVsZXRlIHRoaXMubmVzdGVkKX0sU1ZHLmV4dGVuZChTVkcuRWxlbWVudCx7c2VsZWN0aXplOmZ1bmN0aW9uKGUsaSl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGUmJihpPWUsZT0hMCksKHRoaXMucmVtZW1iZXIoXCJfc2VsZWN0SGFuZGxlclwiKXx8bmV3IHQodGhpcykpLmluaXQodm9pZCAwPT09ZXx8ZSxpfHx7fSksdGhpc319KSxTVkcuRWxlbWVudC5wcm90b3R5cGUuc2VsZWN0aXplLmRlZmF1bHRzPXtwb2ludHM6W1wibHRcIixcInJ0XCIsXCJyYlwiLFwibGJcIixcInRcIixcInJcIixcImJcIixcImxcIl0scG9pbnRzRXhjbHVkZTpbXSxjbGFzc1JlY3Q6XCJzdmdfc2VsZWN0X2JvdW5kaW5nUmVjdFwiLGNsYXNzUG9pbnRzOlwic3ZnX3NlbGVjdF9wb2ludHNcIixwb2ludFNpemU6Nyxyb3RhdGlvblBvaW50OiEwLGRlZXBTZWxlY3Q6ITEscG9pbnRUeXBlOlwiY2lyY2xlXCJ9fSgpLGZ1bmN0aW9uKCl7KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0LnJlbWVtYmVyKFwiX3Jlc2l6ZUhhbmRsZXJcIix0aGlzKSx0aGlzLmVsPXQsdGhpcy5wYXJhbWV0ZXJzPXt9LHRoaXMubGFzdFVwZGF0ZUNhbGw9bnVsbCx0aGlzLnA9dC5kb2MoKS5ub2RlLmNyZWF0ZVNWR1BvaW50KCl9dC5wcm90b3R5cGUudHJhbnNmb3JtUG9pbnQ9ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLnAueD10LSh0aGlzLm9mZnNldC54LXdpbmRvdy5wYWdlWE9mZnNldCksdGhpcy5wLnk9ZS0odGhpcy5vZmZzZXQueS13aW5kb3cucGFnZVlPZmZzZXQpLHRoaXMucC5tYXRyaXhUcmFuc2Zvcm0oaXx8dGhpcy5tKX0sdC5wcm90b3R5cGUuX2V4dHJhY3RQb3NpdGlvbj1mdW5jdGlvbih0KXtyZXR1cm57eDpudWxsIT10LmNsaWVudFg/dC5jbGllbnRYOnQudG91Y2hlc1swXS5jbGllbnRYLHk6bnVsbCE9dC5jbGllbnRZP3QuY2xpZW50WTp0LnRvdWNoZXNbMF0uY2xpZW50WX19LHQucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZih0aGlzLnN0b3AoKSxcInN0b3BcIiE9PXQpe2Zvcih2YXIgaSBpbiB0aGlzLm9wdGlvbnM9e30sdGhpcy5lbC5yZXNpemUuZGVmYXVsdHMpdGhpcy5vcHRpb25zW2ldPXRoaXMuZWwucmVzaXplLmRlZmF1bHRzW2ldLHZvaWQgMCE9PXRbaV0mJih0aGlzLm9wdGlvbnNbaV09dFtpXSk7dGhpcy5lbC5vbihcImx0LnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oXCJydC5yZXNpemVcIiwoZnVuY3Rpb24odCl7ZS5yZXNpemUodHx8d2luZG93LmV2ZW50KX0pKSx0aGlzLmVsLm9uKFwicmIucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbihcImxiLnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oXCJ0LnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oXCJyLnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oXCJiLnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oXCJsLnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oXCJyb3QucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbihcInBvaW50LnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMudXBkYXRlKCl9fSx0LnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWwub2ZmKFwibHQucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwicnQucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwicmIucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwibGIucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwidC5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJyLnJlc2l6ZVwiKSx0aGlzLmVsLm9mZihcImIucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwibC5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJyb3QucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwicG9pbnQucmVzaXplXCIpLHRoaXN9LHQucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMubT10aGlzLmVsLm5vZGUuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpLHRoaXMub2Zmc2V0PXt4OndpbmRvdy5wYWdlWE9mZnNldCx5OndpbmRvdy5wYWdlWU9mZnNldH07dmFyIGk9dGhpcy5fZXh0cmFjdFBvc2l0aW9uKHQuZGV0YWlsLmV2ZW50KTtpZih0aGlzLnBhcmFtZXRlcnM9e3R5cGU6dGhpcy5lbC50eXBlLHA6dGhpcy50cmFuc2Zvcm1Qb2ludChpLngsaS55KSx4OnQuZGV0YWlsLngseTp0LmRldGFpbC55LGJveDp0aGlzLmVsLmJib3goKSxyb3RhdGlvbjp0aGlzLmVsLnRyYW5zZm9ybSgpLnJvdGF0aW9ufSxcInRleHRcIj09PXRoaXMuZWwudHlwZSYmKHRoaXMucGFyYW1ldGVycy5mb250U2l6ZT10aGlzLmVsLmF0dHIoKVtcImZvbnQtc2l6ZVwiXSksdm9pZCAwIT09dC5kZXRhaWwuaSl7dmFyIGE9dGhpcy5lbC5hcnJheSgpLnZhbHVlT2YoKTt0aGlzLnBhcmFtZXRlcnMuaT10LmRldGFpbC5pLHRoaXMucGFyYW1ldGVycy5wb2ludENvb3Jkcz1bYVt0LmRldGFpbC5pXVswXSxhW3QuZGV0YWlsLmldWzFdXX1zd2l0Y2godC50eXBlKXtjYXNlXCJsdFwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUpO2lmKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgtaVswXT4wJiZ0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC1pWzFdPjApe2lmKFwidGV4dFwiPT09dGhpcy5wYXJhbWV0ZXJzLnR5cGUpcmV0dXJuIHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngraVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLHZvaWQgdGhpcy5lbC5hdHRyKFwiZm9udC1zaXplXCIsdGhpcy5wYXJhbWV0ZXJzLmZvbnRTaXplLWlbMF0pO2k9dGhpcy5jaGVja0FzcGVjdFJhdGlvKGkpLHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngraVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkraVsxXSkuc2l6ZSh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLWlbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtaVsxXSl9fTticmVhaztjYXNlXCJydFwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUsMik7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCtpWzBdPjAmJnRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LWlbMV0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm4gdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueC1pWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSksdm9pZCB0aGlzLmVsLmF0dHIoXCJmb250LXNpemVcIix0aGlzLnBhcmFtZXRlcnMuZm9udFNpemUraVswXSk7aT10aGlzLmNoZWNrQXNwZWN0UmF0aW8oaSwhMCksdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCx0aGlzLnBhcmFtZXRlcnMuYm94LnkraVsxXSkuc2l6ZSh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK2lbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtaVsxXSl9fTticmVhaztjYXNlXCJyYlwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUsMCk7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCtpWzBdPjAmJnRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K2lbMV0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm4gdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueC1pWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSksdm9pZCB0aGlzLmVsLmF0dHIoXCJmb250LXNpemVcIix0aGlzLnBhcmFtZXRlcnMuZm9udFNpemUraVswXSk7aT10aGlzLmNoZWNrQXNwZWN0UmF0aW8oaSksdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLnNpemUodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCtpWzBdLHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K2lbMV0pfX07YnJlYWs7Y2FzZVwibGJcIjp0aGlzLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnNuYXBUb0dyaWQodCxlLDEpO2lmKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgtaVswXT4wJiZ0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCtpWzFdPjApe2lmKFwidGV4dFwiPT09dGhpcy5wYXJhbWV0ZXJzLnR5cGUpcmV0dXJuIHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngraVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLHZvaWQgdGhpcy5lbC5hdHRyKFwiZm9udC1zaXplXCIsdGhpcy5wYXJhbWV0ZXJzLmZvbnRTaXplLWlbMF0pO2k9dGhpcy5jaGVja0FzcGVjdFJhdGlvKGksITApLHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngraVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLnNpemUodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC1pWzBdLHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K2lbMV0pfX07YnJlYWs7Y2FzZVwidFwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUsMik7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtaVsxXT4wKXtpZihcInRleHRcIj09PXRoaXMucGFyYW1ldGVycy50eXBlKXJldHVybjt0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54LHRoaXMucGFyYW1ldGVycy5ib3gueStpWzFdKS5oZWlnaHQodGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtaVsxXSl9fTticmVhaztjYXNlXCJyXCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSwwKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK2lbMF0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm47dGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLndpZHRoKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgraVswXSl9fTticmVhaztjYXNlXCJiXCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSwwKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCtpWzFdPjApe2lmKFwidGV4dFwiPT09dGhpcy5wYXJhbWV0ZXJzLnR5cGUpcmV0dXJuO3RoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngsdGhpcy5wYXJhbWV0ZXJzLmJveC55KS5oZWlnaHQodGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQraVsxXSl9fTticmVhaztjYXNlXCJsXCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSwxKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLWlbMF0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm47dGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCtpWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSkud2lkdGgodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC1pWzBdKX19O2JyZWFrO2Nhc2VcInJvdFwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXQrdGhpcy5wYXJhbWV0ZXJzLnAueCxhPWUrdGhpcy5wYXJhbWV0ZXJzLnAueSxzPU1hdGguYXRhbjIodGhpcy5wYXJhbWV0ZXJzLnAueS10aGlzLnBhcmFtZXRlcnMuYm94LnktdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQvMix0aGlzLnBhcmFtZXRlcnMucC54LXRoaXMucGFyYW1ldGVycy5ib3gueC10aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLzIpLHI9TWF0aC5hdGFuMihhLXRoaXMucGFyYW1ldGVycy5ib3gueS10aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC8yLGktdGhpcy5wYXJhbWV0ZXJzLmJveC54LXRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgvMiksbz10aGlzLnBhcmFtZXRlcnMucm90YXRpb24rMTgwKihyLXMpL01hdGguUEkrdGhpcy5vcHRpb25zLnNuYXBUb0FuZ2xlLzI7dGhpcy5lbC5jZW50ZXIodGhpcy5wYXJhbWV0ZXJzLmJveC5jeCx0aGlzLnBhcmFtZXRlcnMuYm94LmN5KS5yb3RhdGUoby1vJXRoaXMub3B0aW9ucy5zbmFwVG9BbmdsZSx0aGlzLnBhcmFtZXRlcnMuYm94LmN4LHRoaXMucGFyYW1ldGVycy5ib3guY3kpfTticmVhaztjYXNlXCJwb2ludFwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUsdGhpcy5wYXJhbWV0ZXJzLnBvaW50Q29vcmRzWzBdLHRoaXMucGFyYW1ldGVycy5wb2ludENvb3Jkc1sxXSksYT10aGlzLmVsLmFycmF5KCkudmFsdWVPZigpO2FbdGhpcy5wYXJhbWV0ZXJzLmldWzBdPXRoaXMucGFyYW1ldGVycy5wb2ludENvb3Jkc1swXStpWzBdLGFbdGhpcy5wYXJhbWV0ZXJzLmldWzFdPXRoaXMucGFyYW1ldGVycy5wb2ludENvb3Jkc1sxXStpWzFdLHRoaXMuZWwucGxvdChhKX19dGhpcy5lbC5maXJlKFwicmVzaXplc3RhcnRcIix7ZHg6dGhpcy5wYXJhbWV0ZXJzLngsZHk6dGhpcy5wYXJhbWV0ZXJzLnksZXZlbnQ6dH0pLFNWRy5vbih3aW5kb3csXCJ0b3VjaG1vdmUucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UudXBkYXRlKHR8fHdpbmRvdy5ldmVudCl9KSksU1ZHLm9uKHdpbmRvdyxcInRvdWNoZW5kLnJlc2l6ZVwiLChmdW5jdGlvbigpe2UuZG9uZSgpfSkpLFNWRy5vbih3aW5kb3csXCJtb3VzZW1vdmUucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UudXBkYXRlKHR8fHdpbmRvdy5ldmVudCl9KSksU1ZHLm9uKHdpbmRvdyxcIm1vdXNldXAucmVzaXplXCIsKGZ1bmN0aW9uKCl7ZS5kb25lKCl9KSl9LHQucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0KXtpZih0KXt2YXIgZT10aGlzLl9leHRyYWN0UG9zaXRpb24odCksaT10aGlzLnRyYW5zZm9ybVBvaW50KGUueCxlLnkpLGE9aS54LXRoaXMucGFyYW1ldGVycy5wLngscz1pLnktdGhpcy5wYXJhbWV0ZXJzLnAueTt0aGlzLmxhc3RVcGRhdGVDYWxsPVthLHNdLHRoaXMuY2FsYyhhLHMpLHRoaXMuZWwuZmlyZShcInJlc2l6aW5nXCIse2R4OmEsZHk6cyxldmVudDp0fSl9ZWxzZSB0aGlzLmxhc3RVcGRhdGVDYWxsJiZ0aGlzLmNhbGModGhpcy5sYXN0VXBkYXRlQ2FsbFswXSx0aGlzLmxhc3RVcGRhdGVDYWxsWzFdKX0sdC5wcm90b3R5cGUuZG9uZT1mdW5jdGlvbigpe3RoaXMubGFzdFVwZGF0ZUNhbGw9bnVsbCxTVkcub2ZmKHdpbmRvdyxcIm1vdXNlbW92ZS5yZXNpemVcIiksU1ZHLm9mZih3aW5kb3csXCJtb3VzZXVwLnJlc2l6ZVwiKSxTVkcub2ZmKHdpbmRvdyxcInRvdWNobW92ZS5yZXNpemVcIiksU1ZHLm9mZih3aW5kb3csXCJ0b3VjaGVuZC5yZXNpemVcIiksdGhpcy5lbC5maXJlKFwicmVzaXplZG9uZVwiKX0sdC5wcm90b3R5cGUuc25hcFRvR3JpZD1mdW5jdGlvbih0LGUsaSxhKXt2YXIgcztyZXR1cm4gdm9pZCAwIT09YT9zPVsoaSt0KSV0aGlzLm9wdGlvbnMuc25hcFRvR3JpZCwoYStlKSV0aGlzLm9wdGlvbnMuc25hcFRvR3JpZF06KGk9bnVsbD09aT8zOmkscz1bKHRoaXMucGFyYW1ldGVycy5ib3gueCt0KygxJmk/MDp0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoKSkldGhpcy5vcHRpb25zLnNuYXBUb0dyaWQsKHRoaXMucGFyYW1ldGVycy5ib3gueStlKygyJmk/MDp0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCkpJXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkXSksdDwwJiYoc1swXS09dGhpcy5vcHRpb25zLnNuYXBUb0dyaWQpLGU8MCYmKHNbMV0tPXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkKSx0LT1NYXRoLmFicyhzWzBdKTx0aGlzLm9wdGlvbnMuc25hcFRvR3JpZC8yP3NbMF06c1swXS0odDwwPy10aGlzLm9wdGlvbnMuc25hcFRvR3JpZDp0aGlzLm9wdGlvbnMuc25hcFRvR3JpZCksZS09TWF0aC5hYnMoc1sxXSk8dGhpcy5vcHRpb25zLnNuYXBUb0dyaWQvMj9zWzFdOnNbMV0tKGU8MD8tdGhpcy5vcHRpb25zLnNuYXBUb0dyaWQ6dGhpcy5vcHRpb25zLnNuYXBUb0dyaWQpLHRoaXMuY29uc3RyYWludFRvQm94KHQsZSxpLGEpfSx0LnByb3RvdHlwZS5jb25zdHJhaW50VG9Cb3g9ZnVuY3Rpb24odCxlLGksYSl7dmFyIHMscixvPXRoaXMub3B0aW9ucy5jb25zdHJhaW50fHx7fTtyZXR1cm4gdm9pZCAwIT09YT8ocz1pLHI9YSk6KHM9dGhpcy5wYXJhbWV0ZXJzLmJveC54KygxJmk/MDp0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoKSxyPXRoaXMucGFyYW1ldGVycy5ib3gueSsoMiZpPzA6dGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQpKSx2b2lkIDAhPT1vLm1pblgmJnMrdDxvLm1pblgmJih0PW8ubWluWC1zKSx2b2lkIDAhPT1vLm1heFgmJnMrdD5vLm1heFgmJih0PW8ubWF4WC1zKSx2b2lkIDAhPT1vLm1pblkmJnIrZTxvLm1pblkmJihlPW8ubWluWS1yKSx2b2lkIDAhPT1vLm1heFkmJnIrZT5vLm1heFkmJihlPW8ubWF4WS1yKSxbdCxlXX0sdC5wcm90b3R5cGUuY2hlY2tBc3BlY3RSYXRpbz1mdW5jdGlvbih0LGUpe2lmKCF0aGlzLm9wdGlvbnMuc2F2ZUFzcGVjdFJhdGlvKXJldHVybiB0O3ZhciBpPXQuc2xpY2UoKSxhPXRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgvdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQscz10aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK3RbMF0scj10aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC10WzFdLG89cy9yO3JldHVybiBvPGE/KGlbMV09cy9hLXRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LGUmJihpWzFdPS1pWzFdKSk6bz5hJiYoaVswXT10aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLXIqYSxlJiYoaVswXT0taVswXSkpLGl9LFNWRy5leHRlbmQoU1ZHLkVsZW1lbnQse3Jlc2l6ZTpmdW5jdGlvbihlKXtyZXR1cm4odGhpcy5yZW1lbWJlcihcIl9yZXNpemVIYW5kbGVyXCIpfHxuZXcgdCh0aGlzKSkuaW5pdChlfHx7fSksdGhpc319KSxTVkcuRWxlbWVudC5wcm90b3R5cGUucmVzaXplLmRlZmF1bHRzPXtzbmFwVG9BbmdsZTouMSxzbmFwVG9HcmlkOjEsY29uc3RyYWludDp7fSxzYXZlQXNwZWN0UmF0aW86ITF9fSkuY2FsbCh0aGlzKX0oKSx2b2lkIDA9PT13aW5kb3cuQXBleCYmKHdpbmRvdy5BcGV4PXt9KTt2YXIgT3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImluaXRNb2R1bGVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmN0eC5wdWJsaWNNZXRob2RzPVtcInVwZGF0ZU9wdGlvbnNcIixcInVwZGF0ZVNlcmllc1wiLFwiYXBwZW5kRGF0YVwiLFwiYXBwZW5kU2VyaWVzXCIsXCJ0b2dnbGVTZXJpZXNcIixcInNob3dTZXJpZXNcIixcImhpZGVTZXJpZXNcIixcInNldExvY2FsZVwiLFwicmVzZXRTZXJpZXNcIixcInpvb21YXCIsXCJ0b2dnbGVEYXRhUG9pbnRTZWxlY3Rpb25cIixcImRhdGFVUklcIixcImV4cG9ydFRvQ1NWXCIsXCJhZGRYYXhpc0Fubm90YXRpb25cIixcImFkZFlheGlzQW5ub3RhdGlvblwiLFwiYWRkUG9pbnRBbm5vdGF0aW9uXCIsXCJjbGVhckFubm90YXRpb25zXCIsXCJyZW1vdmVBbm5vdGF0aW9uXCIsXCJwYXBlclwiLFwiZGVzdHJveVwiXSx0aGlzLmN0eC5ldmVudExpc3Q9W1wiY2xpY2tcIixcIm1vdXNlZG93blwiLFwibW91c2Vtb3ZlXCIsXCJtb3VzZWxlYXZlXCIsXCJ0b3VjaHN0YXJ0XCIsXCJ0b3VjaG1vdmVcIixcInRvdWNobGVhdmVcIixcIm1vdXNldXBcIixcInRvdWNoZW5kXCJdLHRoaXMuY3R4LmFuaW1hdGlvbnM9bmV3IGIodGhpcy5jdHgpLHRoaXMuY3R4LmF4ZXM9bmV3IEoodGhpcy5jdHgpLHRoaXMuY3R4LmNvcmU9bmV3IER0KHRoaXMuY3R4LmVsLHRoaXMuY3R4KSx0aGlzLmN0eC5jb25maWc9bmV3IEUoe30pLHRoaXMuY3R4LmRhdGE9bmV3IFcodGhpcy5jdHgpLHRoaXMuY3R4LmdyaWQ9bmV3IGoodGhpcy5jdHgpLHRoaXMuY3R4LmdyYXBoaWNzPW5ldyBtKHRoaXMuY3R4KSx0aGlzLmN0eC5jb3JlVXRpbHM9bmV3IHkodGhpcy5jdHgpLHRoaXMuY3R4LmNyb3NzaGFpcnM9bmV3IFEodGhpcy5jdHgpLHRoaXMuY3R4LmV2ZW50cz1uZXcgWih0aGlzLmN0eCksdGhpcy5jdHguZXhwb3J0cz1uZXcgRyh0aGlzLmN0eCksdGhpcy5jdHgubG9jYWxpemF0aW9uPW5ldyAkKHRoaXMuY3R4KSx0aGlzLmN0eC5vcHRpb25zPW5ldyBMLHRoaXMuY3R4LnJlc3BvbnNpdmU9bmV3IEsodGhpcy5jdHgpLHRoaXMuY3R4LnNlcmllcz1uZXcgTih0aGlzLmN0eCksdGhpcy5jdHgudGhlbWU9bmV3IHR0KHRoaXMuY3R4KSx0aGlzLmN0eC5mb3JtYXR0ZXJzPW5ldyBUKHRoaXMuY3R4KSx0aGlzLmN0eC50aXRsZVN1YnRpdGxlPW5ldyBldCh0aGlzLmN0eCksdGhpcy5jdHgubGVnZW5kPW5ldyBsdCh0aGlzLmN0eCksdGhpcy5jdHgudG9vbGJhcj1uZXcgaHQodGhpcy5jdHgpLHRoaXMuY3R4LnRvb2x0aXA9bmV3IGJ0KHRoaXMuY3R4KSx0aGlzLmN0eC5kaW1lbnNpb25zPW5ldyBvdCh0aGlzLmN0eCksdGhpcy5jdHgudXBkYXRlSGVscGVycz1uZXcgSHQodGhpcy5jdHgpLHRoaXMuY3R4Lnpvb21QYW5TZWxlY3Rpb249bmV3IGN0KHRoaXMuY3R4KSx0aGlzLmN0eC53Lmdsb2JhbHMudG9vbHRpcD1uZXcgYnQodGhpcy5jdHgpfX1dKSx0fSgpLE50PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJjbGVhclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaXNVcGRhdGluZzt0aGlzLmN0eC56b29tUGFuU2VsZWN0aW9uJiZ0aGlzLmN0eC56b29tUGFuU2VsZWN0aW9uLmRlc3Ryb3koKSx0aGlzLmN0eC50b29sYmFyJiZ0aGlzLmN0eC50b29sYmFyLmRlc3Ryb3koKSx0aGlzLmN0eC5hbmltYXRpb25zPW51bGwsdGhpcy5jdHguYXhlcz1udWxsLHRoaXMuY3R4LmFubm90YXRpb25zPW51bGwsdGhpcy5jdHguY29yZT1udWxsLHRoaXMuY3R4LmRhdGE9bnVsbCx0aGlzLmN0eC5ncmlkPW51bGwsdGhpcy5jdHguc2VyaWVzPW51bGwsdGhpcy5jdHgucmVzcG9uc2l2ZT1udWxsLHRoaXMuY3R4LnRoZW1lPW51bGwsdGhpcy5jdHguZm9ybWF0dGVycz1udWxsLHRoaXMuY3R4LnRpdGxlU3VidGl0bGU9bnVsbCx0aGlzLmN0eC5sZWdlbmQ9bnVsbCx0aGlzLmN0eC5kaW1lbnNpb25zPW51bGwsdGhpcy5jdHgub3B0aW9ucz1udWxsLHRoaXMuY3R4LmNyb3NzaGFpcnM9bnVsbCx0aGlzLmN0eC56b29tUGFuU2VsZWN0aW9uPW51bGwsdGhpcy5jdHgudXBkYXRlSGVscGVycz1udWxsLHRoaXMuY3R4LnRvb2xiYXI9bnVsbCx0aGlzLmN0eC5sb2NhbGl6YXRpb249bnVsbCx0aGlzLmN0eC53Lmdsb2JhbHMudG9vbHRpcD1udWxsLHRoaXMuY2xlYXJEb21FbGVtZW50cyh7aXNVcGRhdGluZzplfSl9fSx7a2V5Olwia2lsbFNWR1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3QuZWFjaCgoZnVuY3Rpb24odCxlKXt0aGlzLnJlbW92ZUNsYXNzKFwiKlwiKSx0aGlzLm9mZigpLHRoaXMuc3RvcCgpfSksITApLHQudW5ncm91cCgpLHQuY2xlYXIoKX19LHtrZXk6XCJjbGVhckRvbUVsZW1lbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXQuaXNVcGRhdGluZyxhPXRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5ub2RlO2EucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnBhcmVudE5vZGUmJiFpJiYoYS5wYXJlbnROb2RlLnBhcmVudE5vZGUuc3R5bGUubWluSGVpZ2h0PVwidW5zZXRcIik7dmFyIHM9dGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbDtzJiZ0aGlzLmN0eC5ldmVudExpc3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7cy5yZW1vdmVFdmVudExpc3RlbmVyKHQsZS5jdHguZXZlbnRzLmRvY3VtZW50RXZlbnQpfSkpO3ZhciByPXRoaXMudy5nbG9iYWxzLmRvbTtpZihudWxsIT09dGhpcy5jdHguZWwpZm9yKDt0aGlzLmN0eC5lbC5maXJzdENoaWxkOyl0aGlzLmN0eC5lbC5yZW1vdmVDaGlsZCh0aGlzLmN0eC5lbC5maXJzdENoaWxkKTt0aGlzLmtpbGxTVkcoci5QYXBlciksci5QYXBlci5yZW1vdmUoKSxyLmVsV3JhcD1udWxsLHIuZWxHcmFwaGljYWw9bnVsbCxyLmVsTGVnZW5kV3JhcD1udWxsLHIuZWxMZWdlbmRGb3JlaWduPW51bGwsci5iYXNlRWw9bnVsbCxyLmVsR3JpZFJlY3Q9bnVsbCxyLmVsR3JpZFJlY3RNYXNrPW51bGwsci5lbEdyaWRSZWN0TWFya2VyTWFzaz1udWxsLHIuZWxGb3JlY2FzdE1hc2s9bnVsbCxyLmVsTm9uRm9yZWNhc3RNYXNrPW51bGwsci5lbERlZnM9bnVsbH19XSksdH0oKSxXdD1uZXcgV2Vha01hcDt2YXIgQnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7YSh0aGlzLHQpLHRoaXMub3B0cz1pLHRoaXMuY3R4PXRoaXMsdGhpcy53PW5ldyBGKGkpLmluaXQoKSx0aGlzLmVsPWUsdGhpcy53Lmdsb2JhbHMuY3VpZD14LnJhbmRvbUlkKCksdGhpcy53Lmdsb2JhbHMuY2hhcnRJRD10aGlzLncuY29uZmlnLmNoYXJ0LmlkP3guZXNjYXBlU3RyaW5nKHRoaXMudy5jb25maWcuY2hhcnQuaWQpOnRoaXMudy5nbG9iYWxzLmN1aWQsbmV3IE90KHRoaXMpLmluaXRNb2R1bGVzKCksdGhpcy5jcmVhdGU9eC5iaW5kKHRoaXMuY3JlYXRlLHRoaXMpLHRoaXMud2luZG93UmVzaXplSGFuZGxlcj10aGlzLl93aW5kb3dSZXNpemVIYW5kbGVyLmJpbmQodGhpcyksdGhpcy5wYXJlbnRSZXNpemVIYW5kbGVyPXRoaXMuX3BhcmVudFJlc2l6ZUNhbGxiYWNrLmJpbmQodGhpcyl9cmV0dXJuIHIodCxbe2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsaSl7aWYobnVsbCE9PXQuZWwpe3ZvaWQgMD09PUFwZXguX2NoYXJ0SW5zdGFuY2VzJiYoQXBleC5fY2hhcnRJbnN0YW5jZXM9W10pLHQudy5jb25maWcuY2hhcnQuaWQmJkFwZXguX2NoYXJ0SW5zdGFuY2VzLnB1c2goe2lkOnQudy5nbG9iYWxzLmNoYXJ0SUQsZ3JvdXA6dC53LmNvbmZpZy5jaGFydC5ncm91cCxjaGFydDp0fSksdC5zZXRMb2NhbGUodC53LmNvbmZpZy5jaGFydC5kZWZhdWx0TG9jYWxlKTt2YXIgYT10LncuY29uZmlnLmNoYXJ0LmV2ZW50cy5iZWZvcmVNb3VudDtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBhJiZhKHQsdC53KSx0LmV2ZW50cy5maXJlRXZlbnQoXCJiZWZvcmVNb3VudFwiLFt0LHQud10pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsdC53aW5kb3dSZXNpemVIYW5kbGVyKSxmdW5jdGlvbih0LGUpe3ZhciBpPSExO2lmKHQubm9kZVR5cGUhPT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpe3ZhciBhPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XCJub25lXCIhPT10LnN0eWxlLmRpc3BsYXkmJjAhPT1hLndpZHRofHwoaT0hMCl9dmFyIHM9bmV3IFJlc2l6ZU9ic2VydmVyKChmdW5jdGlvbihhKXtpJiZlLmNhbGwodCxhKSxpPSEwfSkpO3Qubm9kZVR5cGU9PT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU/QXJyYXkuZnJvbSh0LmNoaWxkcmVuKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gcy5vYnNlcnZlKHQpfSkpOnMub2JzZXJ2ZSh0KSxXdC5zZXQoZSxzKX0odC5lbC5wYXJlbnROb2RlLHQucGFyZW50UmVzaXplSGFuZGxlciksIXQuY3NzKXt2YXIgcz10LmVsLmdldFJvb3ROb2RlJiZ0LmVsLmdldFJvb3ROb2RlKCkscj14LmlzKFwiU2hhZG93Um9vdFwiLHMpLG89dC5lbC5vd25lckRvY3VtZW50LG49by5nZXRFbGVtZW50QnlJZChcImFwZXhjaGFydHMtY3NzXCIpOyFyJiZufHwodC5jc3M9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpLHQuY3NzLmlkPVwiYXBleGNoYXJ0cy1jc3NcIix0LmNzcy50ZXh0Q29udGVudD0nQGtleWZyYW1lcyBvcGFxdWUge1xcbiAgMCUge1xcbiAgICAgIG9wYWNpdHk6IDBcXG4gIH1cXG5cXG4gIHRvIHtcXG4gICAgICBvcGFjaXR5OiAxXFxuICB9XFxufVxcblxcbkBrZXlmcmFtZXMgcmVzaXplYW5pbSB7XFxuICAwJSx0byB7XFxuICAgICAgb3BhY2l0eTogMFxcbiAgfVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1jYW52YXMge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgdXNlci1zZWxlY3Q6IG5vbmVcXG59XFxuXFxuLmFwZXhjaGFydHMtY2FudmFzIDo6LXdlYmtpdC1zY3JvbGxiYXIge1xcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xcbiAgd2lkdGg6IDZweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy1jYW52YXMgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XFxuICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLC41KTtcXG4gIGJveC1zaGFkb3c6IDAgMCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuNSk7XFxuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuNSlcXG59XFxuXFxuLmFwZXhjaGFydHMtaW5uZXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRleHQgdHNwYW4ge1xcbiAgZm9udC1mYW1pbHk6IGluaGVyaXRcXG59XFxuXFxuLmxlZ2VuZC1tb3VzZW92ZXItaW5hY3RpdmUge1xcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbDtcXG4gIG9wYWNpdHk6IC4yXFxufVxcblxcbi5hcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0IHtcXG4gIHBhZGRpbmctbGVmdDogMTVweDtcXG4gIG1hcmdpbi1sZWZ0OiAtMTVweDtcXG59XFxuXFxuLmFwZXhjaGFydHMtc2VyaWVzLWNvbGxhcHNlZCB7XFxuICBvcGFjaXR5OiAwXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAge1xcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xcbiAgYm94LXNoYWRvdzogMnB4IDJweCA2cHggLTRweCAjOTk5O1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgZm9udC1zaXplOiAxNHB4O1xcbiAgbGVmdDogNjJweDtcXG4gIG9wYWNpdHk6IDA7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMjBweDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICB6LWluZGV4OiAxMjtcXG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLWFjdGl2ZSB7XFxuICBvcGFjaXR5OiAxO1xcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQge1xcbiAgYm9yZGVyOiAxcHggc29saWQgI2UzZTNlMztcXG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsLjk2KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLmFwZXhjaGFydHMtdGhlbWUtZGFyayB7XFxuICBjb2xvcjogI2ZmZjtcXG4gIGJhY2tncm91bmQ6IHJnYmEoMzAsMzAsMzAsLjgpXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAgKiB7XFxuICBmb250LWZhbWlseTogaW5oZXJpdFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXRpdGxlIHtcXG4gIHBhZGRpbmc6IDZweDtcXG4gIGZvbnQtc2l6ZTogMTVweDtcXG4gIG1hcmdpbi1ib3R0b206IDRweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtdG9vbHRpcC10aXRsZSB7XFxuICBiYWNrZ3JvdW5kOiAjZWNlZmYxO1xcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGRcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtdG9vbHRpcC10aXRsZSB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC43KTtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMzMzXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy12YWx1ZSwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQteS12YWx1ZSwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtei12YWx1ZSB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBtYXJnaW4tbGVmdDogNXB4O1xcbiAgZm9udC13ZWlnaHQ6IDYwMFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtbGFiZWw6ZW1wdHksLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlOmVtcHR5LC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC15LWxhYmVsOmVtcHR5LC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC15LXZhbHVlOmVtcHR5LC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC16LXZhbHVlOmVtcHR5LC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGU6ZW1wdHkge1xcbiAgZGlzcGxheTogbm9uZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtbGFiZWwsLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlIHtcXG4gIHBhZGRpbmc6IDZweCAwIDVweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLWdvYWxzLWdyb3VwLC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy1sYWJlbCwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtdmFsdWUge1xcbiAgZGlzcGxheTogZmxleFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtbGFiZWw6bm90KDplbXB0eSksLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlOm5vdCg6ZW1wdHkpIHtcXG4gIG1hcmdpbi10b3A6IC02cHhcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1tYXJrZXIge1xcbiAgd2lkdGg6IDEycHg7XFxuICBoZWlnaHQ6IDEycHg7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB0b3A6IDA7XFxuICBtYXJnaW4tcmlnaHQ6IDEwcHg7XFxuICBib3JkZXItcmFkaXVzOiA1MCVcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXAge1xcbiAgcGFkZGluZzogMCAxMHB4O1xcbiAgZGlzcGxheTogbm9uZTtcXG4gIHRleHQtYWxpZ246IGxlZnQ7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XFxuICBhbGlnbi1pdGVtczogY2VudGVyXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwLmFwZXhjaGFydHMtYWN0aXZlIC5hcGV4Y2hhcnRzLXRvb2x0aXAtbWFya2VyIHtcXG4gIG9wYWNpdHk6IDFcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXAuYXBleGNoYXJ0cy1hY3RpdmUsLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXA6bGFzdC1jaGlsZCB7XFxuICBwYWRkaW5nLWJvdHRvbTogNHB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwLWhpZGRlbiB7XFxuICBvcGFjaXR5OiAwO1xcbiAgaGVpZ2h0OiAwO1xcbiAgbGluZS1oZWlnaHQ6IDA7XFxuICBwYWRkaW5nOiAwIWltcG9ydGFudFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXktZ3JvdXAge1xcbiAgcGFkZGluZzogNnB4IDAgNXB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLWN1c3RvbS10b29sdGlwLC5hcGV4Y2hhcnRzLXRvb2x0aXAtYm94IHtcXG4gIHBhZGRpbmc6IDRweCA4cHhcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1ib3hQbG90IHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2VcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1ib3g+ZGl2IHtcXG4gIG1hcmdpbjogNHB4IDBcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1ib3ggc3Bhbi52YWx1ZSB7XFxuICBmb250LXdlaWdodDogNzAwXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtcmFuZ2ViYXIge1xcbiAgcGFkZGluZzogNXB4IDhweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXJhbmdlYmFyIC5jYXRlZ29yeSB7XFxuICBmb250LXdlaWdodDogNjAwO1xcbiAgY29sb3I6ICM3NzdcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1yYW5nZWJhciAuc2VyaWVzLW5hbWUge1xcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgbWFyZ2luLWJvdHRvbTogNXB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcCwuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAge1xcbiAgb3BhY2l0eTogMDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgY29sb3I6ICMzNzNkM2Y7XFxuICBmb250LXNpemU6IDEzcHg7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB6LWluZGV4OiAxMDtcXG4gIGJhY2tncm91bmQ6ICNlY2VmZjE7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjOTBhNGFlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcCB7XFxuICBwYWRkaW5nOiA5cHggMTBweDtcXG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLmFwZXhjaGFydHMtdGhlbWUtZGFyayB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC43KTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwwLDAsLjUpO1xcbiAgY29sb3I6ICNmZmZcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwOmFmdGVyLC5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcDpiZWZvcmUge1xcbiAgbGVmdDogNTAlO1xcbiAgYm9yZGVyOiBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIGNvbnRlbnQ6IFwiIFwiO1xcbiAgaGVpZ2h0OiAwO1xcbiAgd2lkdGg6IDA7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXA6YWZ0ZXIge1xcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci13aWR0aDogNnB4O1xcbiAgbWFyZ2luLWxlZnQ6IC02cHhcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwOmJlZm9yZSB7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLXdpZHRoOiA3cHg7XFxuICBtYXJnaW4tbGVmdDogLTdweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tOmFmdGVyLC5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b206YmVmb3JlIHtcXG4gIGJvdHRvbTogMTAwJVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdG9wOmFmdGVyLC5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3A6YmVmb3JlIHtcXG4gIHRvcDogMTAwJVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tOmFmdGVyIHtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6ICNlY2VmZjFcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbTpiZWZvcmUge1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzkwYTRhZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tLmFwZXhjaGFydHMtdGhlbWUtZGFyazphZnRlciwuYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tLmFwZXhjaGFydHMtdGhlbWUtZGFyazpiZWZvcmUge1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgwLDAsMCwuNSlcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcDphZnRlciB7XFxuICBib3JkZXItdG9wLWNvbG9yOiAjZWNlZmYxXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3A6YmVmb3JlIHtcXG4gIGJvcmRlci10b3AtY29sb3I6ICM5MGE0YWVcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YWZ0ZXIsLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YmVmb3JlIHtcXG4gIGJvcmRlci10b3AtY29sb3I6IHJnYmEoMCwwLDAsLjUpXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC5hcGV4Y2hhcnRzLWFjdGl2ZSB7XFxuICBvcGFjaXR5OiAxO1xcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAge1xcbiAgcGFkZGluZzogNHB4IDEwcHhcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLmFwZXhjaGFydHMtdGhlbWUtZGFyayB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC43KTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwwLDAsLjUpO1xcbiAgY29sb3I6ICNmZmZcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwOmFmdGVyLC5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcDpiZWZvcmUge1xcbiAgdG9wOiA1MCU7XFxuICBib3JkZXI6IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgY29udGVudDogXCIgXCI7XFxuICBoZWlnaHQ6IDA7XFxuICB3aWR0aDogMDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcDphZnRlciB7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLXdpZHRoOiA2cHg7XFxuICBtYXJnaW4tdG9wOiAtNnB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcDpiZWZvcmUge1xcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci13aWR0aDogN3B4O1xcbiAgbWFyZ2luLXRvcDogLTdweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdDphZnRlciwuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdDpiZWZvcmUge1xcbiAgbGVmdDogMTAwJVxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtcmlnaHQ6YWZ0ZXIsLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0OmJlZm9yZSB7XFxuICByaWdodDogMTAwJVxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdDphZnRlciB7XFxuICBib3JkZXItbGVmdC1jb2xvcjogI2VjZWZmMVxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdDpiZWZvcmUge1xcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICM5MGE0YWVcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQuYXBleGNoYXJ0cy10aGVtZS1kYXJrOmFmdGVyLC5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1sZWZ0LmFwZXhjaGFydHMtdGhlbWUtZGFyazpiZWZvcmUge1xcbiAgYm9yZGVyLWxlZnQtY29sb3I6IHJnYmEoMCwwLDAsLjUpXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodDphZnRlciB7XFxuICBib3JkZXItcmlnaHQtY29sb3I6ICNlY2VmZjFcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0OmJlZm9yZSB7XFxuICBib3JkZXItcmlnaHQtY29sb3I6ICM5MGE0YWVcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0LmFwZXhjaGFydHMtdGhlbWUtZGFyazphZnRlciwuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtcmlnaHQuYXBleGNoYXJ0cy10aGVtZS1kYXJrOmJlZm9yZSB7XFxuICBib3JkZXItcmlnaHQtY29sb3I6IHJnYmEoMCwwLDAsLjUpXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC5hcGV4Y2hhcnRzLWFjdGl2ZSB7XFxuICBvcGFjaXR5OiAxXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1oaWRkZW4ge1xcbiAgZGlzcGxheTogbm9uZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14Y3Jvc3NoYWlycywuYXBleGNoYXJ0cy15Y3Jvc3NoYWlycyB7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIG9wYWNpdHk6IDA7XFxuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhjcm9zc2hhaXJzLmFwZXhjaGFydHMtYWN0aXZlLC5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzLmFwZXhjaGFydHMtYWN0aXZlIHtcXG4gIG9wYWNpdHk6IDE7XFxuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXFxufVxcblxcbi5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzLWhpZGRlbiB7XFxuICBvcGFjaXR5OiAwXFxufVxcblxcbi5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0IHtcXG4gIGN1cnNvcjogbW92ZVxcbn1cXG5cXG4uc3ZnX3NlbGVjdF9ib3VuZGluZ1JlY3QsLnN2Z19zZWxlY3RfcG9pbnRzX3JvdCB7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIG9wYWNpdHk6IDA7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW5cXG59XFxuXFxuLmFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3QrZyAuc3ZnX3NlbGVjdF9ib3VuZGluZ1JlY3QsLmFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3QrZyAuc3ZnX3NlbGVjdF9wb2ludHNfcm90IHtcXG4gIG9wYWNpdHk6IDA7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW5cXG59XFxuXFxuLmFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3QrZyAuc3ZnX3NlbGVjdF9wb2ludHNfbCwuYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdCtnIC5zdmdfc2VsZWN0X3BvaW50c19yIHtcXG4gIGN1cnNvcjogZXctcmVzaXplO1xcbiAgb3BhY2l0eTogMTtcXG4gIHZpc2liaWxpdHk6IHZpc2libGVcXG59XFxuXFxuLnN2Z19zZWxlY3RfcG9pbnRzIHtcXG4gIGZpbGw6ICNlZmVmZWY7XFxuICBzdHJva2U6ICMzMzM7XFxuICByeDogMlxcbn1cXG5cXG4uYXBleGNoYXJ0cy1zdmcuYXBleGNoYXJ0cy16b29tYWJsZS5ob3ZlcmluZy16b29tIHtcXG4gIGN1cnNvcjogY3Jvc3NoYWlyXFxufVxcblxcbi5hcGV4Y2hhcnRzLXN2Zy5hcGV4Y2hhcnRzLXpvb21hYmxlLmhvdmVyaW5nLXBhbiB7XFxuICBjdXJzb3I6IG1vdmVcXG59XFxuXFxuLmFwZXhjaGFydHMtbWVudS1pY29uLC5hcGV4Y2hhcnRzLXBhbi1pY29uLC5hcGV4Y2hhcnRzLXJlc2V0LWljb24sLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb24sLmFwZXhjaGFydHMtdG9vbGJhci1jdXN0b20taWNvbiwuYXBleGNoYXJ0cy16b29tLWljb24sLmFwZXhjaGFydHMtem9vbWluLWljb24sLmFwZXhjaGFydHMtem9vbW91dC1pY29uIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIHdpZHRoOiAyMHB4O1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgbGluZS1oZWlnaHQ6IDI0cHg7XFxuICBjb2xvcjogIzZlODE5MjtcXG4gIHRleHQtYWxpZ246IGNlbnRlclxcbn1cXG5cXG4uYXBleGNoYXJ0cy1tZW51LWljb24gc3ZnLC5hcGV4Y2hhcnRzLXJlc2V0LWljb24gc3ZnLC5hcGV4Y2hhcnRzLXpvb20taWNvbiBzdmcsLmFwZXhjaGFydHMtem9vbWluLWljb24gc3ZnLC5hcGV4Y2hhcnRzLXpvb21vdXQtaWNvbiBzdmcge1xcbiAgZmlsbDogIzZlODE5Mlxcbn1cXG5cXG4uYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvbiBzdmcge1xcbiAgZmlsbDogIzQ0NDtcXG4gIHRyYW5zZm9ybTogc2NhbGUoLjc2KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLW1lbnUtaWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy1wYW4taWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy1yZXNldC1pY29uIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1pY29uIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXRvb2xiYXItY3VzdG9tLWljb24gc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtem9vbS1pY29uIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXpvb21pbi1pY29uIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXpvb21vdXQtaWNvbiBzdmcge1xcbiAgZmlsbDogI2YzZjRmNVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtcmVzZXQtem9vbS1pY29uLmFwZXhjaGFydHMtc2VsZWN0ZWQgc3ZnLC5hcGV4Y2hhcnRzLWNhbnZhcyAuYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvbi5hcGV4Y2hhcnRzLXNlbGVjdGVkIHN2ZywuYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtem9vbS1pY29uLmFwZXhjaGFydHMtc2VsZWN0ZWQgc3ZnIHtcXG4gIGZpbGw6ICMwMDhmZmJcXG59XFxuXFxuLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtbWVudS1pY29uOmhvdmVyIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy1yZXNldC1pY29uOmhvdmVyIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvbjpub3QoLmFwZXhjaGFydHMtc2VsZWN0ZWQpOmhvdmVyIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy16b29tLWljb246bm90KC5hcGV4Y2hhcnRzLXNlbGVjdGVkKTpob3ZlciBzdmcsLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtem9vbWluLWljb246aG92ZXIgc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLXpvb21vdXQtaWNvbjpob3ZlciBzdmcge1xcbiAgZmlsbDogIzMzM1xcbn1cXG5cXG4uYXBleGNoYXJ0cy1tZW51LWljb24sLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb24ge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXJlc2V0LWljb24ge1xcbiAgbWFyZ2luLWxlZnQ6IDVweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy1tZW51LWljb24sLmFwZXhjaGFydHMtcmVzZXQtaWNvbiwuYXBleGNoYXJ0cy16b29tLWljb24ge1xcbiAgdHJhbnNmb3JtOiBzY2FsZSguODUpXFxufVxcblxcbi5hcGV4Y2hhcnRzLXpvb21pbi1pY29uLC5hcGV4Y2hhcnRzLXpvb21vdXQtaWNvbiB7XFxuICB0cmFuc2Zvcm06IHNjYWxlKC43KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy16b29tb3V0LWljb24ge1xcbiAgbWFyZ2luLXJpZ2h0OiAzcHhcXG59XFxuXFxuLmFwZXhjaGFydHMtcGFuLWljb24ge1xcbiAgdHJhbnNmb3JtOiBzY2FsZSguNjIpO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgbGVmdDogMXB4O1xcbiAgdG9wOiAwXFxufVxcblxcbi5hcGV4Y2hhcnRzLXBhbi1pY29uIHN2ZyB7XFxuICBmaWxsOiAjZmZmO1xcbiAgc3Ryb2tlOiAjNmU4MTkyO1xcbiAgc3Ryb2tlLXdpZHRoOiAyXFxufVxcblxcbi5hcGV4Y2hhcnRzLXBhbi1pY29uLmFwZXhjaGFydHMtc2VsZWN0ZWQgc3ZnIHtcXG4gIHN0cm9rZTogIzAwOGZmYlxcbn1cXG5cXG4uYXBleGNoYXJ0cy1wYW4taWNvbjpub3QoLmFwZXhjaGFydHMtc2VsZWN0ZWQpOmhvdmVyIHN2ZyB7XFxuICBzdHJva2U6ICMzMzNcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbGJhciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB6LWluZGV4OiAxMTtcXG4gIG1heC13aWR0aDogMTc2cHg7XFxuICB0ZXh0LWFsaWduOiByaWdodDtcXG4gIGJvcmRlci1yYWRpdXM6IDNweDtcXG4gIHBhZGRpbmc6IDAgNnB4IDJweDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICBhbGlnbi1pdGVtczogY2VudGVyXFxufVxcblxcbi5hcGV4Y2hhcnRzLW1lbnUge1xcbiAgYmFja2dyb3VuZDogI2ZmZjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMTAwJTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XFxuICBib3JkZXItcmFkaXVzOiAzcHg7XFxuICBwYWRkaW5nOiAzcHg7XFxuICByaWdodDogMTBweDtcXG4gIG9wYWNpdHk6IDA7XFxuICBtaW4td2lkdGg6IDExMHB4O1xcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lXFxufVxcblxcbi5hcGV4Y2hhcnRzLW1lbnUuYXBleGNoYXJ0cy1tZW51LW9wZW4ge1xcbiAgb3BhY2l0eTogMTtcXG4gIHBvaW50ZXItZXZlbnRzOiBhbGw7XFxuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXFxufVxcblxcbi5hcGV4Y2hhcnRzLW1lbnUtaXRlbSB7XFxuICBwYWRkaW5nOiA2cHggN3B4O1xcbiAgZm9udC1zaXplOiAxMnB4O1xcbiAgY3Vyc29yOiBwb2ludGVyXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLW1lbnUtaXRlbTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kOiAjZWVlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtbWVudSB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC43KTtcXG4gIGNvbG9yOiAjZmZmXFxufVxcblxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NzY4cHgpIHtcXG4gIC5hcGV4Y2hhcnRzLWNhbnZhczpob3ZlciAuYXBleGNoYXJ0cy10b29sYmFyIHtcXG4gICAgICBvcGFjaXR5OiAxXFxuICB9XFxufVxcblxcbi5hcGV4Y2hhcnRzLWNhbnZhcyAuYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlbiwuYXBleGNoYXJ0cy1kYXRhbGFiZWwuYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlbiwuYXBleGNoYXJ0cy1oaWRlIC5hcGV4Y2hhcnRzLXNlcmllcy1wb2ludHMge1xcbiAgb3BhY2l0eTogMFxcbn1cXG5cXG4uYXBleGNoYXJ0cy1kYXRhbGFiZWwsLmFwZXhjaGFydHMtZGF0YWxhYmVsLWxhYmVsLC5hcGV4Y2hhcnRzLWRhdGFsYWJlbC12YWx1ZSwuYXBleGNoYXJ0cy1kYXRhbGFiZWxzLC5hcGV4Y2hhcnRzLXBpZS1sYWJlbCB7XFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1waWUtbGFiZWwtZGVsYXkge1xcbiAgb3BhY2l0eTogMDtcXG4gIGFuaW1hdGlvbi1uYW1lOiBvcGFxdWU7XFxuICBhbmltYXRpb24tZHVyYXRpb246IC4zcztcXG4gIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xcbiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1hbm5vdGF0aW9uLXJlY3QsLmFwZXhjaGFydHMtYXJlYS1zZXJpZXMgLmFwZXhjaGFydHMtYXJlYSwuYXBleGNoYXJ0cy1hcmVhLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2VycyAuYXBleGNoYXJ0cy1tYXJrZXIubm8tcG9pbnRlci1ldmVudHMsLmFwZXhjaGFydHMtZ3JpZGxpbmUsLmFwZXhjaGFydHMtbGluZSwuYXBleGNoYXJ0cy1saW5lLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2VycyAuYXBleGNoYXJ0cy1tYXJrZXIubm8tcG9pbnRlci1ldmVudHMsLmFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbi1sYWJlbCwuYXBleGNoYXJ0cy1yYWRhci1zZXJpZXMgcGF0aCwuYXBleGNoYXJ0cy1yYWRhci1zZXJpZXMgcG9seWdvbiwuYXBleGNoYXJ0cy10b29sYmFyIHN2ZywuYXBleGNoYXJ0cy10b29sdGlwIC5hcGV4Y2hhcnRzLW1hcmtlciwuYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9uLWxhYmVsLC5hcGV4Y2hhcnRzLXlheGlzLWFubm90YXRpb24tbGFiZWwsLmFwZXhjaGFydHMtem9vbS1yZWN0IHtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lXFxufVxcblxcbi5hcGV4Y2hhcnRzLW1hcmtlciB7XFxuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXFxufVxcblxcbi5yZXNpemUtdHJpZ2dlcnMge1xcbiAgYW5pbWF0aW9uOiAxbXMgcmVzaXplYW5pbTtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIG9wYWNpdHk6IDA7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMTAwJTtcXG4gIG92ZXJmbG93OiBoaWRkZW5cXG59XFxuXFxuLmNvbnRyYWN0LXRyaWdnZXI6YmVmb3JlLC5yZXNpemUtdHJpZ2dlcnMsLnJlc2l6ZS10cmlnZ2Vycz5kaXYge1xcbiAgY29udGVudDogXCIgXCI7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDBcXG59XFxuXFxuLnJlc2l6ZS10cmlnZ2Vycz5kaXYge1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBiYWNrZ3JvdW5kOiAjZWVlO1xcbiAgb3ZlcmZsb3c6IGF1dG9cXG59XFxuXFxuLmNvbnRyYWN0LXRyaWdnZXI6YmVmb3JlIHtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB3aWR0aDogMjAwJTtcXG4gIGhlaWdodDogMjAwJVxcbn1cXG4nLHI/cy5wcmVwZW5kKHQuY3NzKTpvLmhlYWQuYXBwZW5kQ2hpbGQodC5jc3MpKX12YXIgbD10LmNyZWF0ZSh0LncuY29uZmlnLnNlcmllcyx7fSk7aWYoIWwpcmV0dXJuIGUodCk7dC5tb3VudChsKS50aGVuKChmdW5jdGlvbigpe1wiZnVuY3Rpb25cIj09dHlwZW9mIHQudy5jb25maWcuY2hhcnQuZXZlbnRzLm1vdW50ZWQmJnQudy5jb25maWcuY2hhcnQuZXZlbnRzLm1vdW50ZWQodCx0LncpLHQuZXZlbnRzLmZpcmVFdmVudChcIm1vdW50ZWRcIixbdCx0LnddKSxlKGwpfSkpLmNhdGNoKChmdW5jdGlvbih0KXtpKHQpfSkpfWVsc2UgaShuZXcgRXJyb3IoXCJFbGVtZW50IG5vdCBmb3VuZFwiKSl9KSl9fSx7a2V5OlwiY3JlYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7bmV3IE90KHRoaXMpLmluaXRNb2R1bGVzKCk7dmFyIGE9dGhpcy53Lmdsb2JhbHM7KGEubm9EYXRhPSExLGEuYW5pbWF0aW9uRW5kZWQ9ITEsdGhpcy5yZXNwb25zaXZlLmNoZWNrUmVzcG9uc2l2ZUNvbmZpZyhlKSxpLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMpJiZuZXcgeihpLmNvbmZpZykuY29udmVydENhdFRvTnVtZXJpY1hheGlzKGkuY29uZmlnLHRoaXMuY3R4KTtpZihudWxsPT09dGhpcy5lbClyZXR1cm4gYS5hbmltYXRpb25FbmRlZD0hMCxudWxsO2lmKHRoaXMuY29yZS5zZXR1cEVsZW1lbnRzKCksXCJ0cmVlbWFwXCI9PT1pLmNvbmZpZy5jaGFydC50eXBlJiYoaS5jb25maWcuZ3JpZC5zaG93PSExLGkuY29uZmlnLnlheGlzWzBdLnNob3c9ITEpLDA9PT1hLnN2Z1dpZHRoKXJldHVybiBhLmFuaW1hdGlvbkVuZGVkPSEwLG51bGw7dmFyIHM9eS5jaGVja0NvbWJvU2VyaWVzKHQpO2EuY29tYm9DaGFydHM9cy5jb21ib0NoYXJ0cyxhLmNvbWJvQmFyQ291bnQ9cy5jb21ib0JhckNvdW50O3ZhciByPXQuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRhdGEmJjA9PT10LmRhdGEubGVuZ3RofSkpOygwPT09dC5sZW5ndGh8fHIpJiZ0aGlzLnNlcmllcy5oYW5kbGVOb0RhdGEoKSx0aGlzLmV2ZW50cy5zZXR1cEV2ZW50SGFuZGxlcnMoKSx0aGlzLmRhdGEucGFyc2VEYXRhKHQpLHRoaXMudGhlbWUuaW5pdCgpLG5ldyBEKHRoaXMpLnNldEdsb2JhbE1hcmtlclNpemUoKSx0aGlzLmZvcm1hdHRlcnMuc2V0TGFiZWxGb3JtYXR0ZXJzKCksdGhpcy50aXRsZVN1YnRpdGxlLmRyYXcoKSxhLm5vRGF0YSYmYS5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoIT09YS5zZXJpZXMubGVuZ3RoJiYhaS5jb25maWcubGVnZW5kLnNob3dGb3JTaW5nbGVTZXJpZXN8fHRoaXMubGVnZW5kLmluaXQoKSx0aGlzLnNlcmllcy5oYXNBbGxTZXJpZXNFcXVhbFgoKSxhLmF4aXNDaGFydHMmJih0aGlzLmNvcmUuY29yZUNhbGN1bGF0aW9ucygpLFwiY2F0ZWdvcnlcIiE9PWkuY29uZmlnLnhheGlzLnR5cGUmJnRoaXMuZm9ybWF0dGVycy5zZXRMYWJlbEZvcm1hdHRlcnMoKSx0aGlzLmN0eC50b29sYmFyLm1pblg9aS5nbG9iYWxzLm1pblgsdGhpcy5jdHgudG9vbGJhci5tYXhYPWkuZ2xvYmFscy5tYXhYKSx0aGlzLmZvcm1hdHRlcnMuaGVhdG1hcExhYmVsRm9ybWF0dGVycygpLG5ldyB5KHRoaXMpLmdldExhcmdlc3RNYXJrZXJTaXplKCksdGhpcy5kaW1lbnNpb25zLnBsb3RDb29yZHMoKTt2YXIgbz10aGlzLmNvcmUueHlTZXR0aW5ncygpO3RoaXMuZ3JpZC5jcmVhdGVHcmlkTWFzaygpO3ZhciBuPXRoaXMuY29yZS5wbG90Q2hhcnRUeXBlKHQsbyksbD1uZXcgTyh0aGlzKTtyZXR1cm4gbC5icmluZ0ZvcndhcmQoKSxpLmNvbmZpZy5kYXRhTGFiZWxzLmJhY2tncm91bmQuZW5hYmxlZCYmbC5kYXRhTGFiZWxzQmFja2dyb3VuZCgpLHRoaXMuY29yZS5zaGlmdEdyYXBoUG9zaXRpb24oKSx7ZWxHcmFwaDpuLHh5UmF0aW9zOm8sZGltZW5zaW9uczp7cGxvdDp7bGVmdDppLmdsb2JhbHMudHJhbnNsYXRlWCx0b3A6aS5nbG9iYWxzLnRyYW5zbGF0ZVksd2lkdGg6aS5nbG9iYWxzLmdyaWRXaWR0aCxoZWlnaHQ6aS5nbG9iYWxzLmdyaWRIZWlnaHR9fX19fSx7a2V5OlwibW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbCxpPXRoaXMsYT1pLnc7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihzLHIpe2lmKG51bGw9PT1pLmVsKXJldHVybiByKG5ldyBFcnJvcihcIk5vdCBlbm91Z2ggZGF0YSB0byBkaXNwbGF5IG9yIHRhcmdldCBlbGVtZW50IG5vdCBmb3VuZFwiKSk7KG51bGw9PT1lfHxhLmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkKSYmaS5zZXJpZXMuaGFuZGxlTm9EYXRhKCksaS5ncmlkPW5ldyBqKGkpO3ZhciBvPWkuZ3JpZC5kcmF3R3JpZCgpO2lmKGkuYW5ub3RhdGlvbnM9bmV3IFAoaSksaS5hbm5vdGF0aW9ucy5kcmF3SW1hZ2VBbm5vcygpLGkuYW5ub3RhdGlvbnMuZHJhd1RleHRBbm5vcygpLFwiYmFja1wiPT09YS5jb25maWcuZ3JpZC5wb3NpdGlvbiYmbyYmYS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQoby5lbCksQXJyYXkuaXNBcnJheShlLmVsR3JhcGgpKWZvcih2YXIgbj0wO248ZS5lbEdyYXBoLmxlbmd0aDtuKyspYS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQoZS5lbEdyYXBoW25dKTtlbHNlIGEuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKGUuZWxHcmFwaCk7XCJmcm9udFwiPT09YS5jb25maWcuZ3JpZC5wb3NpdGlvbiYmbyYmYS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQoby5lbCksbyYmby5lbEdyaWRCb3JkZXJzJiZvLmVsR3JpZEJvcmRlcnMubm9kZSYmYS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQoby5lbEdyaWRCb3JkZXJzKSxcImZyb250XCI9PT1hLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnBvc2l0aW9uJiZpLmNyb3NzaGFpcnMuZHJhd1hDcm9zc2hhaXJzKCksXCJmcm9udFwiPT09YS5jb25maWcueWF4aXNbMF0uY3Jvc3NoYWlycy5wb3NpdGlvbiYmaS5jcm9zc2hhaXJzLmRyYXdZQ3Jvc3NoYWlycygpLFwidHJlZW1hcFwiIT09YS5jb25maWcuY2hhcnQudHlwZSYmaS5heGVzLmRyYXdBeGlzKGEuY29uZmlnLmNoYXJ0LnR5cGUsbyk7dmFyIGw9bmV3IFYodC5jdHgsbyksaD1uZXcgcSh0LmN0eCxvKTtpZihudWxsIT09byYmKGwueEF4aXNMYWJlbENvcnJlY3Rpb25zKG8ueEF4aXNUaWNrV2lkdGgpLGguc2V0WUF4aXNUZXh0QWxpZ25tZW50cygpLGEuY29uZmlnLnlheGlzLm1hcCgoZnVuY3Rpb24odCxlKXstMT09PWEuZ2xvYmFscy5pZ25vcmVZQXhpc0luZGV4ZXMuaW5kZXhPZihlKSYmaC55QXhpc1RpdGxlUm90YXRlKGUsdC5vcHBvc2l0ZSl9KSkpLGkuYW5ub3RhdGlvbnMuZHJhd0F4ZXNBbm5vdGF0aW9ucygpLCFhLmdsb2JhbHMubm9EYXRhKXtpZihhLmNvbmZpZy50b29sdGlwLmVuYWJsZWQmJiFhLmdsb2JhbHMubm9EYXRhJiZpLncuZ2xvYmFscy50b29sdGlwLmRyYXdUb29sdGlwKGUueHlSYXRpb3MpLGEuZ2xvYmFscy5heGlzQ2hhcnRzJiYoYS5nbG9iYWxzLmlzWE51bWVyaWN8fGEuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpY3x8YS5nbG9iYWxzLmlzUmFuZ2VCYXIpKShhLmNvbmZpZy5jaGFydC56b29tLmVuYWJsZWR8fGEuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbiYmYS5jb25maWcuY2hhcnQuc2VsZWN0aW9uLmVuYWJsZWR8fGEuY29uZmlnLmNoYXJ0LnBhbiYmYS5jb25maWcuY2hhcnQucGFuLmVuYWJsZWQpJiZpLnpvb21QYW5TZWxlY3Rpb24uaW5pdCh7eHlSYXRpb3M6ZS54eVJhdGlvc30pO2Vsc2V7dmFyIGM9YS5jb25maWcuY2hhcnQudG9vbGJhci50b29scztbXCJ6b29tXCIsXCJ6b29taW5cIixcInpvb21vdXRcIixcInNlbGVjdGlvblwiLFwicGFuXCIsXCJyZXNldFwiXS5mb3JFYWNoKChmdW5jdGlvbih0KXtjW3RdPSExfSkpfWEuY29uZmlnLmNoYXJ0LnRvb2xiYXIuc2hvdyYmIWEuZ2xvYmFscy5hbGxTZXJpZXNDb2xsYXBzZWQmJmkudG9vbGJhci5jcmVhdGVUb29sYmFyKCl9YS5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLmxlbmd0aD4wJiZhLmdsb2JhbHMubWVtb3J5Lm1ldGhvZHNUb0V4ZWMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5tZXRob2QodC5wYXJhbXMsITEsdC5jb250ZXh0KX0pKSxhLmdsb2JhbHMuYXhpc0NoYXJ0c3x8YS5nbG9iYWxzLm5vRGF0YXx8aS5jb3JlLnJlc2l6ZU5vbkF4aXNDaGFydHMoKSxzKGkpfSkpfX0se2tleTpcImRlc3Ryb3lcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGU7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIix0aGlzLndpbmRvd1Jlc2l6ZUhhbmRsZXIpLHRoaXMuZWwucGFyZW50Tm9kZSx0PXRoaXMucGFyZW50UmVzaXplSGFuZGxlciwoZT1XdC5nZXQodCkpJiYoZS5kaXNjb25uZWN0KCksV3QuZGVsZXRlKHQpKTt2YXIgaT10aGlzLncuY29uZmlnLmNoYXJ0LmlkO2kmJkFwZXguX2NoYXJ0SW5zdGFuY2VzLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5pZD09PXguZXNjYXBlU3RyaW5nKGkpJiZBcGV4Ll9jaGFydEluc3RhbmNlcy5zcGxpY2UoZSwxKX0pKSxuZXcgTnQodGhpcy5jdHgpLmNsZWFyKHtpc1VwZGF0aW5nOiExfSl9fSx7a2V5OlwidXBkYXRlT3B0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLGE9IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXSxzPSEoYXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10pfHxhcmd1bWVudHNbM10scj0hKGFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdKXx8YXJndW1lbnRzWzRdLG89dGhpcy53O3JldHVybiBvLmdsb2JhbHMuc2VsZWN0aW9uPXZvaWQgMCx0LnNlcmllcyYmKHRoaXMuc2VyaWVzLnJlc2V0U2VyaWVzKCExLCEwLCExKSx0LnNlcmllcy5sZW5ndGgmJnQuc2VyaWVzWzBdLmRhdGEmJih0LnNlcmllcz10LnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQsaSl7cmV0dXJuIGUudXBkYXRlSGVscGVycy5fZXh0ZW5kU2VyaWVzKHQsaSl9KSkpLHRoaXMudXBkYXRlSGVscGVycy5yZXZlcnREZWZhdWx0QXhpc01pbk1heCgpKSx0LnhheGlzJiYodD10aGlzLnVwZGF0ZUhlbHBlcnMuZm9yY2VYQXhpc1VwZGF0ZSh0KSksdC55YXhpcyYmKHQ9dGhpcy51cGRhdGVIZWxwZXJzLmZvcmNlWUF4aXNVcGRhdGUodCkpLG8uZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmxlbmd0aD4wJiZ0aGlzLnNlcmllcy5jbGVhclByZXZpb3VzUGF0aHMoKSx0LnRoZW1lJiYodD10aGlzLnRoZW1lLnVwZGF0ZVRoZW1lT3B0aW9ucyh0KSksdGhpcy51cGRhdGVIZWxwZXJzLl91cGRhdGVPcHRpb25zKHQsaSxhLHMscil9fSx7a2V5OlwidXBkYXRlU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06W10sZT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLGk9IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXTtyZXR1cm4gdGhpcy5zZXJpZXMucmVzZXRTZXJpZXMoITEpLHRoaXMudXBkYXRlSGVscGVycy5yZXZlcnREZWZhdWx0QXhpc01pbk1heCgpLHRoaXMudXBkYXRlSGVscGVycy5fdXBkYXRlU2VyaWVzKHQsZSxpKX19LHtrZXk6XCJhcHBlbmRTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLGk9IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXSxhPXRoaXMudy5jb25maWcuc2VyaWVzLnNsaWNlKCk7cmV0dXJuIGEucHVzaCh0KSx0aGlzLnNlcmllcy5yZXNldFNlcmllcyghMSksdGhpcy51cGRhdGVIZWxwZXJzLnJldmVydERlZmF1bHRBeGlzTWluTWF4KCksdGhpcy51cGRhdGVIZWxwZXJzLl91cGRhdGVTZXJpZXMoYSxlLGkpfX0se2tleTpcImFwcGVuZERhdGFcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLGk9dGhpcztpLncuZ2xvYmFscy5kYXRhQ2hhbmdlZD0hMCxpLnNlcmllcy5nZXRQcmV2aW91c1BhdGhzKCk7Zm9yKHZhciBhPWkudy5jb25maWcuc2VyaWVzLnNsaWNlKCkscz0wO3M8YS5sZW5ndGg7cysrKWlmKG51bGwhPT10W3NdJiZ2b2lkIDAhPT10W3NdKWZvcih2YXIgcj0wO3I8dFtzXS5kYXRhLmxlbmd0aDtyKyspYVtzXS5kYXRhLnB1c2godFtzXS5kYXRhW3JdKTtyZXR1cm4gaS53LmNvbmZpZy5zZXJpZXM9YSxlJiYoaS53Lmdsb2JhbHMuaW5pdGlhbFNlcmllcz14LmNsb25lKGkudy5jb25maWcuc2VyaWVzKSksdGhpcy51cGRhdGUoKX19LHtrZXk6XCJ1cGRhdGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oaSxhKXtuZXcgTnQoZS5jdHgpLmNsZWFyKHtpc1VwZGF0aW5nOiEwfSk7dmFyIHM9ZS5jcmVhdGUoZS53LmNvbmZpZy5zZXJpZXMsdCk7aWYoIXMpcmV0dXJuIGkoZSk7ZS5tb3VudChzKS50aGVuKChmdW5jdGlvbigpe1wiZnVuY3Rpb25cIj09dHlwZW9mIGUudy5jb25maWcuY2hhcnQuZXZlbnRzLnVwZGF0ZWQmJmUudy5jb25maWcuY2hhcnQuZXZlbnRzLnVwZGF0ZWQoZSxlLncpLGUuZXZlbnRzLmZpcmVFdmVudChcInVwZGF0ZWRcIixbZSxlLnddKSxlLncuZ2xvYmFscy5pc0RpcnR5PSEwLGkoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpe2EodCl9KSl9KSl9fSx7a2V5OlwiZ2V0U3luY2VkQ2hhcnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldEdyb3VwZWRDaGFydHMoKSxlPVt0aGlzXTtyZXR1cm4gdC5sZW5ndGgmJihlPVtdLHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5wdXNoKHQpfSkpKSxlfX0se2tleTpcImdldEdyb3VwZWRDaGFydHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIEFwZXguX2NoYXJ0SW5zdGFuY2VzLmZpbHRlcigoZnVuY3Rpb24odCl7aWYodC5ncm91cClyZXR1cm4hMH0pKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0LncuY29uZmlnLmNoYXJ0Lmdyb3VwPT09ZS5ncm91cD9lLmNoYXJ0OnR9KSl9fSx7a2V5OlwidG9nZ2xlU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2VyaWVzLnRvZ2dsZVNlcmllcyh0KX19LHtrZXk6XCJoaWdobGlnaHRTZXJpZXNPbkxlZ2VuZEhvdmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5zZXJpZXMudG9nZ2xlU2VyaWVzT25Ib3Zlcih0LGUpfX0se2tleTpcInNob3dTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLnNlcmllcy5zaG93U2VyaWVzKHQpfX0se2tleTpcImhpZGVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLnNlcmllcy5oaWRlU2VyaWVzKHQpfX0se2tleTpcInJlc2V0U2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD0hKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdKXx8YXJndW1lbnRzWzBdLGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXTt0aGlzLnNlcmllcy5yZXNldFNlcmllcyh0LGUpfX0se2tleTpcImFkZEV2ZW50TGlzdGVuZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMuZXZlbnRzLmFkZEV2ZW50TGlzdGVuZXIodCxlKX19LHtrZXk6XCJyZW1vdmVFdmVudExpc3RlbmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0aGlzLmV2ZW50cy5yZW1vdmVFdmVudExpc3RlbmVyKHQsZSl9fSx7a2V5OlwiYWRkWGF4aXNBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp2b2lkIDAsYT10aGlzO2kmJihhPWkpLGEuYW5ub3RhdGlvbnMuYWRkWGF4aXNBbm5vdGF0aW9uRXh0ZXJuYWwodCxlLGEpfX0se2tleTpcImFkZFlheGlzQW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06dm9pZCAwLGE9dGhpcztpJiYoYT1pKSxhLmFubm90YXRpb25zLmFkZFlheGlzQW5ub3RhdGlvbkV4dGVybmFsKHQsZSxhKX19LHtrZXk6XCJhZGRQb2ludEFubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnZvaWQgMCxhPXRoaXM7aSYmKGE9aSksYS5hbm5vdGF0aW9ucy5hZGRQb2ludEFubm90YXRpb25FeHRlcm5hbCh0LGUsYSl9fSx7a2V5OlwiY2xlYXJBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnZvaWQgMCxlPXRoaXM7dCYmKGU9dCksZS5hbm5vdGF0aW9ucy5jbGVhckFubm90YXRpb25zKGUpfX0se2tleTpcInJlbW92ZUFubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dm9pZCAwLGk9dGhpcztlJiYoaT1lKSxpLmFubm90YXRpb25zLnJlbW92ZUFubm90YXRpb24oaSx0KX19LHtrZXk6XCJnZXRDaGFydEFyZWFcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1pbm5lclwiKX19LHtrZXk6XCJnZXRTZXJpZXNUb3RhbFhSYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuY29yZVV0aWxzLmdldFNlcmllc1RvdGFsc1hSYW5nZSh0LGUpfX0se2tleTpcImdldEhpZ2hlc3RWYWx1ZUluU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MDtyZXR1cm4gbmV3IFUodGhpcy5jdHgpLmdldE1pbllNYXhZKHQpLmhpZ2hlc3RZfX0se2tleTpcImdldExvd2VzdFZhbHVlSW5TZXJpZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowO3JldHVybiBuZXcgVSh0aGlzLmN0eCkuZ2V0TWluWU1heFkodCkubG93ZXN0WX19LHtrZXk6XCJnZXRTZXJpZXNUb3RhbFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLnNlcmllc1RvdGFsc319LHtrZXk6XCJ0b2dnbGVEYXRhUG9pbnRTZWxlY3Rpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnVwZGF0ZUhlbHBlcnMudG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uKHQsZSl9fSx7a2V5Olwiem9vbVhcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMuY3R4LnRvb2xiYXIuem9vbVVwZGF0ZU9wdGlvbnModCxlKX19LHtrZXk6XCJzZXRMb2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmxvY2FsaXphdGlvbi5zZXRDdXJyZW50TG9jYWxlVmFsdWVzKHQpfX0se2tleTpcImRhdGFVUklcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IEcodGhpcy5jdHgpLmRhdGFVUkkodCl9fSx7a2V5OlwiZXhwb3J0VG9DU1ZcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fTtyZXR1cm4gbmV3IEcodGhpcy5jdHgpLmV4cG9ydFRvQ1NWKHQpfX0se2tleTpcInBhcGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyfX0se2tleTpcIl9wYXJlbnRSZXNpemVDYWxsYmFja1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy53Lmdsb2JhbHMuYW5pbWF0aW9uRW5kZWQmJnRoaXMudy5jb25maWcuY2hhcnQucmVkcmF3T25QYXJlbnRSZXNpemUmJnRoaXMuX3dpbmRvd1Jlc2l6ZSgpfX0se2tleTpcIl93aW5kb3dSZXNpemVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7Y2xlYXJUaW1lb3V0KHRoaXMudy5nbG9iYWxzLnJlc2l6ZVRpbWVyKSx0aGlzLncuZ2xvYmFscy5yZXNpemVUaW1lcj13aW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXt0LncuZ2xvYmFscy5yZXNpemVkPSEwLHQudy5nbG9iYWxzLmRhdGFDaGFuZ2VkPSExLHQuY3R4LnVwZGF0ZSgpfSksMTUwKX19LHtrZXk6XCJfd2luZG93UmVzaXplSGFuZGxlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LmNvbmZpZy5jaGFydC5yZWRyYXdPbldpbmRvd1Jlc2l6ZTtcImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiYodD10KCkpLHQmJnRoaXMuX3dpbmRvd1Jlc2l6ZSgpfX1dLFt7a2V5OlwiZ2V0Q2hhcnRCeUlEXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9eC5lc2NhcGVTdHJpbmcodCksaT1BcGV4Ll9jaGFydEluc3RhbmNlcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkPT09ZX0pKVswXTtyZXR1cm4gaSYmaS5jaGFydH19LHtrZXk6XCJpbml0T25Mb2FkXCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIltkYXRhLWFwZXhjaGFydHNdXCIpLGk9MDtpPGUubGVuZ3RoO2krKyl7bmV3IHQoZVtpXSxKU09OLnBhcnNlKGVbaV0uZ2V0QXR0cmlidXRlKFwiZGF0YS1vcHRpb25zXCIpKSkucmVuZGVyKCl9fX0se2tleTpcImV4ZWNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuZ2V0Q2hhcnRCeUlEKHQpO2lmKGkpe2kudy5nbG9iYWxzLmlzRXhlY0NhbGxlZD0hMDt2YXIgYT1udWxsO2lmKC0xIT09aS5wdWJsaWNNZXRob2RzLmluZGV4T2YoZSkpe2Zvcih2YXIgcz1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KHM+Mj9zLTI6MCksbz0yO288cztvKyspcltvLTJdPWFyZ3VtZW50c1tvXTthPWlbZV0uYXBwbHkoaSxyKX1yZXR1cm4gYX19fSx7a2V5OlwibWVyZ2VcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB4LmV4dGVuZCh0LGUpfX1dKSx0fSgpO21vZHVsZS5leHBvcnRzPUJ0O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9heGlvcycpOyIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xudmFyIHNldHRsZSA9IHJlcXVpcmUoJy4vLi4vY29yZS9zZXR0bGUnKTtcbnZhciBjb29raWVzID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL2Nvb2tpZXMnKTtcbnZhciBidWlsZFVSTCA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9idWlsZFVSTCcpO1xudmFyIGJ1aWxkRnVsbFBhdGggPSByZXF1aXJlKCcuLi9jb3JlL2J1aWxkRnVsbFBhdGgnKTtcbnZhciBwYXJzZUhlYWRlcnMgPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvcGFyc2VIZWFkZXJzJyk7XG52YXIgaXNVUkxTYW1lT3JpZ2luID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL2lzVVJMU2FtZU9yaWdpbicpO1xudmFyIGNyZWF0ZUVycm9yID0gcmVxdWlyZSgnLi4vY29yZS9jcmVhdGVFcnJvcicpO1xudmFyIGRlZmF1bHRzID0gcmVxdWlyZSgnLi4vZGVmYXVsdHMnKTtcbnZhciBDYW5jZWwgPSByZXF1aXJlKCcuLi9jYW5jZWwvQ2FuY2VsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24geGhyQWRhcHRlcihjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIGRpc3BhdGNoWGhyUmVxdWVzdChyZXNvbHZlLCByZWplY3QpIHtcbiAgICB2YXIgcmVxdWVzdERhdGEgPSBjb25maWcuZGF0YTtcbiAgICB2YXIgcmVxdWVzdEhlYWRlcnMgPSBjb25maWcuaGVhZGVycztcbiAgICB2YXIgcmVzcG9uc2VUeXBlID0gY29uZmlnLnJlc3BvbnNlVHlwZTtcbiAgICB2YXIgb25DYW5jZWxlZDtcbiAgICBmdW5jdGlvbiBkb25lKCkge1xuICAgICAgaWYgKGNvbmZpZy5jYW5jZWxUb2tlbikge1xuICAgICAgICBjb25maWcuY2FuY2VsVG9rZW4udW5zdWJzY3JpYmUob25DYW5jZWxlZCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcuc2lnbmFsKSB7XG4gICAgICAgIGNvbmZpZy5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkNhbmNlbGVkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodXRpbHMuaXNGb3JtRGF0YShyZXF1ZXN0RGF0YSkpIHtcbiAgICAgIGRlbGV0ZSByZXF1ZXN0SGVhZGVyc1snQ29udGVudC1UeXBlJ107IC8vIExldCB0aGUgYnJvd3NlciBzZXQgaXRcbiAgICB9XG5cbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuXG4gICAgLy8gSFRUUCBiYXNpYyBhdXRoZW50aWNhdGlvblxuICAgIGlmIChjb25maWcuYXV0aCkge1xuICAgICAgdmFyIHVzZXJuYW1lID0gY29uZmlnLmF1dGgudXNlcm5hbWUgfHwgJyc7XG4gICAgICB2YXIgcGFzc3dvcmQgPSBjb25maWcuYXV0aC5wYXNzd29yZCA/IHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChjb25maWcuYXV0aC5wYXNzd29yZCkpIDogJyc7XG4gICAgICByZXF1ZXN0SGVhZGVycy5BdXRob3JpemF0aW9uID0gJ0Jhc2ljICcgKyBidG9hKHVzZXJuYW1lICsgJzonICsgcGFzc3dvcmQpO1xuICAgIH1cblxuICAgIHZhciBmdWxsUGF0aCA9IGJ1aWxkRnVsbFBhdGgoY29uZmlnLmJhc2VVUkwsIGNvbmZpZy51cmwpO1xuICAgIHJlcXVlc3Qub3Blbihjb25maWcubWV0aG9kLnRvVXBwZXJDYXNlKCksIGJ1aWxkVVJMKGZ1bGxQYXRoLCBjb25maWcucGFyYW1zLCBjb25maWcucGFyYW1zU2VyaWFsaXplciksIHRydWUpO1xuXG4gICAgLy8gU2V0IHRoZSByZXF1ZXN0IHRpbWVvdXQgaW4gTVNcbiAgICByZXF1ZXN0LnRpbWVvdXQgPSBjb25maWcudGltZW91dDtcblxuICAgIGZ1bmN0aW9uIG9ubG9hZGVuZCgpIHtcbiAgICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBQcmVwYXJlIHRoZSByZXNwb25zZVxuICAgICAgdmFyIHJlc3BvbnNlSGVhZGVycyA9ICdnZXRBbGxSZXNwb25zZUhlYWRlcnMnIGluIHJlcXVlc3QgPyBwYXJzZUhlYWRlcnMocmVxdWVzdC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkgOiBudWxsO1xuICAgICAgdmFyIHJlc3BvbnNlRGF0YSA9ICFyZXNwb25zZVR5cGUgfHwgcmVzcG9uc2VUeXBlID09PSAndGV4dCcgfHwgIHJlc3BvbnNlVHlwZSA9PT0gJ2pzb24nID9cbiAgICAgICAgcmVxdWVzdC5yZXNwb25zZVRleHQgOiByZXF1ZXN0LnJlc3BvbnNlO1xuICAgICAgdmFyIHJlc3BvbnNlID0ge1xuICAgICAgICBkYXRhOiByZXNwb25zZURhdGEsXG4gICAgICAgIHN0YXR1czogcmVxdWVzdC5zdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IHJlcXVlc3Quc3RhdHVzVGV4dCxcbiAgICAgICAgaGVhZGVyczogcmVzcG9uc2VIZWFkZXJzLFxuICAgICAgICBjb25maWc6IGNvbmZpZyxcbiAgICAgICAgcmVxdWVzdDogcmVxdWVzdFxuICAgICAgfTtcblxuICAgICAgc2V0dGxlKGZ1bmN0aW9uIF9yZXNvbHZlKHZhbHVlKSB7XG4gICAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9LCBmdW5jdGlvbiBfcmVqZWN0KGVycikge1xuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSwgcmVzcG9uc2UpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoJ29ubG9hZGVuZCcgaW4gcmVxdWVzdCkge1xuICAgICAgLy8gVXNlIG9ubG9hZGVuZCBpZiBhdmFpbGFibGVcbiAgICAgIHJlcXVlc3Qub25sb2FkZW5kID0gb25sb2FkZW5kO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBMaXN0ZW4gZm9yIHJlYWR5IHN0YXRlIHRvIGVtdWxhdGUgb25sb2FkZW5kXG4gICAgICByZXF1ZXN0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uIGhhbmRsZUxvYWQoKSB7XG4gICAgICAgIGlmICghcmVxdWVzdCB8fCByZXF1ZXN0LnJlYWR5U3RhdGUgIT09IDQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgcmVxdWVzdCBlcnJvcmVkIG91dCBhbmQgd2UgZGlkbid0IGdldCBhIHJlc3BvbnNlLCB0aGlzIHdpbGwgYmVcbiAgICAgICAgLy8gaGFuZGxlZCBieSBvbmVycm9yIGluc3RlYWRcbiAgICAgICAgLy8gV2l0aCBvbmUgZXhjZXB0aW9uOiByZXF1ZXN0IHRoYXQgdXNpbmcgZmlsZTogcHJvdG9jb2wsIG1vc3QgYnJvd3NlcnNcbiAgICAgICAgLy8gd2lsbCByZXR1cm4gc3RhdHVzIGFzIDAgZXZlbiB0aG91Z2ggaXQncyBhIHN1Y2Nlc3NmdWwgcmVxdWVzdFxuICAgICAgICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IDAgJiYgIShyZXF1ZXN0LnJlc3BvbnNlVVJMICYmIHJlcXVlc3QucmVzcG9uc2VVUkwuaW5kZXhPZignZmlsZTonKSA9PT0gMCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVhZHlzdGF0ZSBoYW5kbGVyIGlzIGNhbGxpbmcgYmVmb3JlIG9uZXJyb3Igb3Igb250aW1lb3V0IGhhbmRsZXJzLFxuICAgICAgICAvLyBzbyB3ZSBzaG91bGQgY2FsbCBvbmxvYWRlbmQgb24gdGhlIG5leHQgJ3RpY2snXG4gICAgICAgIHNldFRpbWVvdXQob25sb2FkZW5kKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGJyb3dzZXIgcmVxdWVzdCBjYW5jZWxsYXRpb24gKGFzIG9wcG9zZWQgdG8gYSBtYW51YWwgY2FuY2VsbGF0aW9uKVxuICAgIHJlcXVlc3Qub25hYm9ydCA9IGZ1bmN0aW9uIGhhbmRsZUFib3J0KCkge1xuICAgICAgaWYgKCFyZXF1ZXN0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmVqZWN0KGNyZWF0ZUVycm9yKCdSZXF1ZXN0IGFib3J0ZWQnLCBjb25maWcsICdFQ09OTkFCT1JURUQnLCByZXF1ZXN0KSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH07XG5cbiAgICAvLyBIYW5kbGUgbG93IGxldmVsIG5ldHdvcmsgZXJyb3JzXG4gICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gaGFuZGxlRXJyb3IoKSB7XG4gICAgICAvLyBSZWFsIGVycm9ycyBhcmUgaGlkZGVuIGZyb20gdXMgYnkgdGhlIGJyb3dzZXJcbiAgICAgIC8vIG9uZXJyb3Igc2hvdWxkIG9ubHkgZmlyZSBpZiBpdCdzIGEgbmV0d29yayBlcnJvclxuICAgICAgcmVqZWN0KGNyZWF0ZUVycm9yKCdOZXR3b3JrIEVycm9yJywgY29uZmlnLCBudWxsLCByZXF1ZXN0KSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH07XG5cbiAgICAvLyBIYW5kbGUgdGltZW91dFxuICAgIHJlcXVlc3Qub250aW1lb3V0ID0gZnVuY3Rpb24gaGFuZGxlVGltZW91dCgpIHtcbiAgICAgIHZhciB0aW1lb3V0RXJyb3JNZXNzYWdlID0gY29uZmlnLnRpbWVvdXQgPyAndGltZW91dCBvZiAnICsgY29uZmlnLnRpbWVvdXQgKyAnbXMgZXhjZWVkZWQnIDogJ3RpbWVvdXQgZXhjZWVkZWQnO1xuICAgICAgdmFyIHRyYW5zaXRpb25hbCA9IGNvbmZpZy50cmFuc2l0aW9uYWwgfHwgZGVmYXVsdHMudHJhbnNpdGlvbmFsO1xuICAgICAgaWYgKGNvbmZpZy50aW1lb3V0RXJyb3JNZXNzYWdlKSB7XG4gICAgICAgIHRpbWVvdXRFcnJvck1lc3NhZ2UgPSBjb25maWcudGltZW91dEVycm9yTWVzc2FnZTtcbiAgICAgIH1cbiAgICAgIHJlamVjdChjcmVhdGVFcnJvcihcbiAgICAgICAgdGltZW91dEVycm9yTWVzc2FnZSxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICB0cmFuc2l0aW9uYWwuY2xhcmlmeVRpbWVvdXRFcnJvciA/ICdFVElNRURPVVQnIDogJ0VDT05OQUJPUlRFRCcsXG4gICAgICAgIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEFkZCB4c3JmIGhlYWRlclxuICAgIC8vIFRoaXMgaXMgb25seSBkb25lIGlmIHJ1bm5pbmcgaW4gYSBzdGFuZGFyZCBicm93c2VyIGVudmlyb25tZW50LlxuICAgIC8vIFNwZWNpZmljYWxseSBub3QgaWYgd2UncmUgaW4gYSB3ZWIgd29ya2VyLCBvciByZWFjdC1uYXRpdmUuXG4gICAgaWYgKHV0aWxzLmlzU3RhbmRhcmRCcm93c2VyRW52KCkpIHtcbiAgICAgIC8vIEFkZCB4c3JmIGhlYWRlclxuICAgICAgdmFyIHhzcmZWYWx1ZSA9IChjb25maWcud2l0aENyZWRlbnRpYWxzIHx8IGlzVVJMU2FtZU9yaWdpbihmdWxsUGF0aCkpICYmIGNvbmZpZy54c3JmQ29va2llTmFtZSA/XG4gICAgICAgIGNvb2tpZXMucmVhZChjb25maWcueHNyZkNvb2tpZU5hbWUpIDpcbiAgICAgICAgdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoeHNyZlZhbHVlKSB7XG4gICAgICAgIHJlcXVlc3RIZWFkZXJzW2NvbmZpZy54c3JmSGVhZGVyTmFtZV0gPSB4c3JmVmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRkIGhlYWRlcnMgdG8gdGhlIHJlcXVlc3RcbiAgICBpZiAoJ3NldFJlcXVlc3RIZWFkZXInIGluIHJlcXVlc3QpIHtcbiAgICAgIHV0aWxzLmZvckVhY2gocmVxdWVzdEhlYWRlcnMsIGZ1bmN0aW9uIHNldFJlcXVlc3RIZWFkZXIodmFsLCBrZXkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiByZXF1ZXN0RGF0YSA9PT0gJ3VuZGVmaW5lZCcgJiYga2V5LnRvTG93ZXJDYXNlKCkgPT09ICdjb250ZW50LXR5cGUnKSB7XG4gICAgICAgICAgLy8gUmVtb3ZlIENvbnRlbnQtVHlwZSBpZiBkYXRhIGlzIHVuZGVmaW5lZFxuICAgICAgICAgIGRlbGV0ZSByZXF1ZXN0SGVhZGVyc1trZXldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE90aGVyd2lzZSBhZGQgaGVhZGVyIHRvIHRoZSByZXF1ZXN0XG4gICAgICAgICAgcmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKGtleSwgdmFsKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhDcmVkZW50aWFscyB0byByZXF1ZXN0IGlmIG5lZWRlZFxuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnLndpdGhDcmVkZW50aWFscykpIHtcbiAgICAgIHJlcXVlc3Qud2l0aENyZWRlbnRpYWxzID0gISFjb25maWcud2l0aENyZWRlbnRpYWxzO1xuICAgIH1cblxuICAgIC8vIEFkZCByZXNwb25zZVR5cGUgdG8gcmVxdWVzdCBpZiBuZWVkZWRcbiAgICBpZiAocmVzcG9uc2VUeXBlICYmIHJlc3BvbnNlVHlwZSAhPT0gJ2pzb24nKSB7XG4gICAgICByZXF1ZXN0LnJlc3BvbnNlVHlwZSA9IGNvbmZpZy5yZXNwb25zZVR5cGU7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHByb2dyZXNzIGlmIG5lZWRlZFxuICAgIGlmICh0eXBlb2YgY29uZmlnLm9uRG93bmxvYWRQcm9ncmVzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIGNvbmZpZy5vbkRvd25sb2FkUHJvZ3Jlc3MpO1xuICAgIH1cblxuICAgIC8vIE5vdCBhbGwgYnJvd3NlcnMgc3VwcG9ydCB1cGxvYWQgZXZlbnRzXG4gICAgaWYgKHR5cGVvZiBjb25maWcub25VcGxvYWRQcm9ncmVzcyA9PT0gJ2Z1bmN0aW9uJyAmJiByZXF1ZXN0LnVwbG9hZCkge1xuICAgICAgcmVxdWVzdC51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCBjb25maWcub25VcGxvYWRQcm9ncmVzcyk7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZy5jYW5jZWxUb2tlbiB8fCBjb25maWcuc2lnbmFsKSB7XG4gICAgICAvLyBIYW5kbGUgY2FuY2VsbGF0aW9uXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgICAgb25DYW5jZWxlZCA9IGZ1bmN0aW9uKGNhbmNlbCkge1xuICAgICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmVqZWN0KCFjYW5jZWwgfHwgKGNhbmNlbCAmJiBjYW5jZWwudHlwZSkgPyBuZXcgQ2FuY2VsKCdjYW5jZWxlZCcpIDogY2FuY2VsKTtcbiAgICAgICAgcmVxdWVzdC5hYm9ydCgpO1xuICAgICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICAgIH07XG5cbiAgICAgIGNvbmZpZy5jYW5jZWxUb2tlbiAmJiBjb25maWcuY2FuY2VsVG9rZW4uc3Vic2NyaWJlKG9uQ2FuY2VsZWQpO1xuICAgICAgaWYgKGNvbmZpZy5zaWduYWwpIHtcbiAgICAgICAgY29uZmlnLnNpZ25hbC5hYm9ydGVkID8gb25DYW5jZWxlZCgpIDogY29uZmlnLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQ2FuY2VsZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcmVxdWVzdERhdGEpIHtcbiAgICAgIHJlcXVlc3REYXRhID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBTZW5kIHRoZSByZXF1ZXN0XG4gICAgcmVxdWVzdC5zZW5kKHJlcXVlc3REYXRhKTtcbiAgfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4vaGVscGVycy9iaW5kJyk7XG52YXIgQXhpb3MgPSByZXF1aXJlKCcuL2NvcmUvQXhpb3MnKTtcbnZhciBtZXJnZUNvbmZpZyA9IHJlcXVpcmUoJy4vY29yZS9tZXJnZUNvbmZpZycpO1xudmFyIGRlZmF1bHRzID0gcmVxdWlyZSgnLi9kZWZhdWx0cycpO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiBBeGlvc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBkZWZhdWx0Q29uZmlnIFRoZSBkZWZhdWx0IGNvbmZpZyBmb3IgdGhlIGluc3RhbmNlXG4gKiBAcmV0dXJuIHtBeGlvc30gQSBuZXcgaW5zdGFuY2Ugb2YgQXhpb3NcbiAqL1xuZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2UoZGVmYXVsdENvbmZpZykge1xuICB2YXIgY29udGV4dCA9IG5ldyBBeGlvcyhkZWZhdWx0Q29uZmlnKTtcbiAgdmFyIGluc3RhbmNlID0gYmluZChBeGlvcy5wcm90b3R5cGUucmVxdWVzdCwgY29udGV4dCk7XG5cbiAgLy8gQ29weSBheGlvcy5wcm90b3R5cGUgdG8gaW5zdGFuY2VcbiAgdXRpbHMuZXh0ZW5kKGluc3RhbmNlLCBBeGlvcy5wcm90b3R5cGUsIGNvbnRleHQpO1xuXG4gIC8vIENvcHkgY29udGV4dCB0byBpbnN0YW5jZVxuICB1dGlscy5leHRlbmQoaW5zdGFuY2UsIGNvbnRleHQpO1xuXG4gIC8vIEZhY3RvcnkgZm9yIGNyZWF0aW5nIG5ldyBpbnN0YW5jZXNcbiAgaW5zdGFuY2UuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKGluc3RhbmNlQ29uZmlnKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUluc3RhbmNlKG1lcmdlQ29uZmlnKGRlZmF1bHRDb25maWcsIGluc3RhbmNlQ29uZmlnKSk7XG4gIH07XG5cbiAgcmV0dXJuIGluc3RhbmNlO1xufVxuXG4vLyBDcmVhdGUgdGhlIGRlZmF1bHQgaW5zdGFuY2UgdG8gYmUgZXhwb3J0ZWRcbnZhciBheGlvcyA9IGNyZWF0ZUluc3RhbmNlKGRlZmF1bHRzKTtcblxuLy8gRXhwb3NlIEF4aW9zIGNsYXNzIHRvIGFsbG93IGNsYXNzIGluaGVyaXRhbmNlXG5heGlvcy5BeGlvcyA9IEF4aW9zO1xuXG4vLyBFeHBvc2UgQ2FuY2VsICYgQ2FuY2VsVG9rZW5cbmF4aW9zLkNhbmNlbCA9IHJlcXVpcmUoJy4vY2FuY2VsL0NhbmNlbCcpO1xuYXhpb3MuQ2FuY2VsVG9rZW4gPSByZXF1aXJlKCcuL2NhbmNlbC9DYW5jZWxUb2tlbicpO1xuYXhpb3MuaXNDYW5jZWwgPSByZXF1aXJlKCcuL2NhbmNlbC9pc0NhbmNlbCcpO1xuYXhpb3MuVkVSU0lPTiA9IHJlcXVpcmUoJy4vZW52L2RhdGEnKS52ZXJzaW9uO1xuXG4vLyBFeHBvc2UgYWxsL3NwcmVhZFxuYXhpb3MuYWxsID0gZnVuY3Rpb24gYWxsKHByb21pc2VzKSB7XG4gIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcyk7XG59O1xuYXhpb3Muc3ByZWFkID0gcmVxdWlyZSgnLi9oZWxwZXJzL3NwcmVhZCcpO1xuXG4vLyBFeHBvc2UgaXNBeGlvc0Vycm9yXG5heGlvcy5pc0F4aW9zRXJyb3IgPSByZXF1aXJlKCcuL2hlbHBlcnMvaXNBeGlvc0Vycm9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gYXhpb3M7XG5cbi8vIEFsbG93IHVzZSBvZiBkZWZhdWx0IGltcG9ydCBzeW50YXggaW4gVHlwZVNjcmlwdFxubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGF4aW9zO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEEgYENhbmNlbGAgaXMgYW4gb2JqZWN0IHRoYXQgaXMgdGhyb3duIHdoZW4gYW4gb3BlcmF0aW9uIGlzIGNhbmNlbGVkLlxuICpcbiAqIEBjbGFzc1xuICogQHBhcmFtIHtzdHJpbmc9fSBtZXNzYWdlIFRoZSBtZXNzYWdlLlxuICovXG5mdW5jdGlvbiBDYW5jZWwobWVzc2FnZSkge1xuICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xufVxuXG5DYW5jZWwucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHJldHVybiAnQ2FuY2VsJyArICh0aGlzLm1lc3NhZ2UgPyAnOiAnICsgdGhpcy5tZXNzYWdlIDogJycpO1xufTtcblxuQ2FuY2VsLnByb3RvdHlwZS5fX0NBTkNFTF9fID0gdHJ1ZTtcblxubW9kdWxlLmV4cG9ydHMgPSBDYW5jZWw7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBDYW5jZWwgPSByZXF1aXJlKCcuL0NhbmNlbCcpO1xuXG4vKipcbiAqIEEgYENhbmNlbFRva2VuYCBpcyBhbiBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCB0byByZXF1ZXN0IGNhbmNlbGxhdGlvbiBvZiBhbiBvcGVyYXRpb24uXG4gKlxuICogQGNsYXNzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBleGVjdXRvciBUaGUgZXhlY3V0b3IgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIENhbmNlbFRva2VuKGV4ZWN1dG9yKSB7XG4gIGlmICh0eXBlb2YgZXhlY3V0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdleGVjdXRvciBtdXN0IGJlIGEgZnVuY3Rpb24uJyk7XG4gIH1cblxuICB2YXIgcmVzb2x2ZVByb21pc2U7XG5cbiAgdGhpcy5wcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gcHJvbWlzZUV4ZWN1dG9yKHJlc29sdmUpIHtcbiAgICByZXNvbHZlUHJvbWlzZSA9IHJlc29sdmU7XG4gIH0pO1xuXG4gIHZhciB0b2tlbiA9IHRoaXM7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgdGhpcy5wcm9taXNlLnRoZW4oZnVuY3Rpb24oY2FuY2VsKSB7XG4gICAgaWYgKCF0b2tlbi5fbGlzdGVuZXJzKSByZXR1cm47XG5cbiAgICB2YXIgaTtcbiAgICB2YXIgbCA9IHRva2VuLl9saXN0ZW5lcnMubGVuZ3RoO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgdG9rZW4uX2xpc3RlbmVyc1tpXShjYW5jZWwpO1xuICAgIH1cbiAgICB0b2tlbi5fbGlzdGVuZXJzID0gbnVsbDtcbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgdGhpcy5wcm9taXNlLnRoZW4gPSBmdW5jdGlvbihvbmZ1bGZpbGxlZCkge1xuICAgIHZhciBfcmVzb2x2ZTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkge1xuICAgICAgdG9rZW4uc3Vic2NyaWJlKHJlc29sdmUpO1xuICAgICAgX3Jlc29sdmUgPSByZXNvbHZlO1xuICAgIH0pLnRoZW4ob25mdWxmaWxsZWQpO1xuXG4gICAgcHJvbWlzZS5jYW5jZWwgPSBmdW5jdGlvbiByZWplY3QoKSB7XG4gICAgICB0b2tlbi51bnN1YnNjcmliZShfcmVzb2x2ZSk7XG4gICAgfTtcblxuICAgIHJldHVybiBwcm9taXNlO1xuICB9O1xuXG4gIGV4ZWN1dG9yKGZ1bmN0aW9uIGNhbmNlbChtZXNzYWdlKSB7XG4gICAgaWYgKHRva2VuLnJlYXNvbikge1xuICAgICAgLy8gQ2FuY2VsbGF0aW9uIGhhcyBhbHJlYWR5IGJlZW4gcmVxdWVzdGVkXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdG9rZW4ucmVhc29uID0gbmV3IENhbmNlbChtZXNzYWdlKTtcbiAgICByZXNvbHZlUHJvbWlzZSh0b2tlbi5yZWFzb24pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBUaHJvd3MgYSBgQ2FuY2VsYCBpZiBjYW5jZWxsYXRpb24gaGFzIGJlZW4gcmVxdWVzdGVkLlxuICovXG5DYW5jZWxUb2tlbi5wcm90b3R5cGUudGhyb3dJZlJlcXVlc3RlZCA9IGZ1bmN0aW9uIHRocm93SWZSZXF1ZXN0ZWQoKSB7XG4gIGlmICh0aGlzLnJlYXNvbikge1xuICAgIHRocm93IHRoaXMucmVhc29uO1xuICB9XG59O1xuXG4vKipcbiAqIFN1YnNjcmliZSB0byB0aGUgY2FuY2VsIHNpZ25hbFxuICovXG5cbkNhbmNlbFRva2VuLnByb3RvdHlwZS5zdWJzY3JpYmUgPSBmdW5jdGlvbiBzdWJzY3JpYmUobGlzdGVuZXIpIHtcbiAgaWYgKHRoaXMucmVhc29uKSB7XG4gICAgbGlzdGVuZXIodGhpcy5yZWFzb24pO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICh0aGlzLl9saXN0ZW5lcnMpIHtcbiAgICB0aGlzLl9saXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fbGlzdGVuZXJzID0gW2xpc3RlbmVyXTtcbiAgfVxufTtcblxuLyoqXG4gKiBVbnN1YnNjcmliZSBmcm9tIHRoZSBjYW5jZWwgc2lnbmFsXG4gKi9cblxuQ2FuY2VsVG9rZW4ucHJvdG90eXBlLnVuc3Vic2NyaWJlID0gZnVuY3Rpb24gdW5zdWJzY3JpYmUobGlzdGVuZXIpIHtcbiAgaWYgKCF0aGlzLl9saXN0ZW5lcnMpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIGluZGV4ID0gdGhpcy5fbGlzdGVuZXJzLmluZGV4T2YobGlzdGVuZXIpO1xuICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgdGhpcy5fbGlzdGVuZXJzLnNwbGljZShpbmRleCwgMSk7XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBhIG5ldyBgQ2FuY2VsVG9rZW5gIGFuZCBhIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLFxuICogY2FuY2VscyB0aGUgYENhbmNlbFRva2VuYC5cbiAqL1xuQ2FuY2VsVG9rZW4uc291cmNlID0gZnVuY3Rpb24gc291cmNlKCkge1xuICB2YXIgY2FuY2VsO1xuICB2YXIgdG9rZW4gPSBuZXcgQ2FuY2VsVG9rZW4oZnVuY3Rpb24gZXhlY3V0b3IoYykge1xuICAgIGNhbmNlbCA9IGM7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIHRva2VuOiB0b2tlbixcbiAgICBjYW5jZWw6IGNhbmNlbFxuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBDYW5jZWxUb2tlbjtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0NhbmNlbCh2YWx1ZSkge1xuICByZXR1cm4gISEodmFsdWUgJiYgdmFsdWUuX19DQU5DRUxfXyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG52YXIgYnVpbGRVUkwgPSByZXF1aXJlKCcuLi9oZWxwZXJzL2J1aWxkVVJMJyk7XG52YXIgSW50ZXJjZXB0b3JNYW5hZ2VyID0gcmVxdWlyZSgnLi9JbnRlcmNlcHRvck1hbmFnZXInKTtcbnZhciBkaXNwYXRjaFJlcXVlc3QgPSByZXF1aXJlKCcuL2Rpc3BhdGNoUmVxdWVzdCcpO1xudmFyIG1lcmdlQ29uZmlnID0gcmVxdWlyZSgnLi9tZXJnZUNvbmZpZycpO1xudmFyIHZhbGlkYXRvciA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvdmFsaWRhdG9yJyk7XG5cbnZhciB2YWxpZGF0b3JzID0gdmFsaWRhdG9yLnZhbGlkYXRvcnM7XG4vKipcbiAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBBeGlvc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBpbnN0YW5jZUNvbmZpZyBUaGUgZGVmYXVsdCBjb25maWcgZm9yIHRoZSBpbnN0YW5jZVxuICovXG5mdW5jdGlvbiBBeGlvcyhpbnN0YW5jZUNvbmZpZykge1xuICB0aGlzLmRlZmF1bHRzID0gaW5zdGFuY2VDb25maWc7XG4gIHRoaXMuaW50ZXJjZXB0b3JzID0ge1xuICAgIHJlcXVlc3Q6IG5ldyBJbnRlcmNlcHRvck1hbmFnZXIoKSxcbiAgICByZXNwb25zZTogbmV3IEludGVyY2VwdG9yTWFuYWdlcigpXG4gIH07XG59XG5cbi8qKlxuICogRGlzcGF0Y2ggYSByZXF1ZXN0XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnIHNwZWNpZmljIGZvciB0aGlzIHJlcXVlc3QgKG1lcmdlZCB3aXRoIHRoaXMuZGVmYXVsdHMpXG4gKi9cbkF4aW9zLnByb3RvdHlwZS5yZXF1ZXN0ID0gZnVuY3Rpb24gcmVxdWVzdChjb25maWdPclVybCwgY29uZmlnKSB7XG4gIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xuICAvLyBBbGxvdyBmb3IgYXhpb3MoJ2V4YW1wbGUvdXJsJ1ssIGNvbmZpZ10pIGEgbGEgZmV0Y2ggQVBJXG4gIGlmICh0eXBlb2YgY29uZmlnT3JVcmwgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uZmlnID0gY29uZmlnIHx8IHt9O1xuICAgIGNvbmZpZy51cmwgPSBjb25maWdPclVybDtcbiAgfSBlbHNlIHtcbiAgICBjb25maWcgPSBjb25maWdPclVybCB8fCB7fTtcbiAgfVxuXG4gIGlmICghY29uZmlnLnVybCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUHJvdmlkZWQgY29uZmlnIHVybCBpcyBub3QgdmFsaWQnKTtcbiAgfVxuXG4gIGNvbmZpZyA9IG1lcmdlQ29uZmlnKHRoaXMuZGVmYXVsdHMsIGNvbmZpZyk7XG5cbiAgLy8gU2V0IGNvbmZpZy5tZXRob2RcbiAgaWYgKGNvbmZpZy5tZXRob2QpIHtcbiAgICBjb25maWcubWV0aG9kID0gY29uZmlnLm1ldGhvZC50b0xvd2VyQ2FzZSgpO1xuICB9IGVsc2UgaWYgKHRoaXMuZGVmYXVsdHMubWV0aG9kKSB7XG4gICAgY29uZmlnLm1ldGhvZCA9IHRoaXMuZGVmYXVsdHMubWV0aG9kLnRvTG93ZXJDYXNlKCk7XG4gIH0gZWxzZSB7XG4gICAgY29uZmlnLm1ldGhvZCA9ICdnZXQnO1xuICB9XG5cbiAgdmFyIHRyYW5zaXRpb25hbCA9IGNvbmZpZy50cmFuc2l0aW9uYWw7XG5cbiAgaWYgKHRyYW5zaXRpb25hbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdmFsaWRhdG9yLmFzc2VydE9wdGlvbnModHJhbnNpdGlvbmFsLCB7XG4gICAgICBzaWxlbnRKU09OUGFyc2luZzogdmFsaWRhdG9ycy50cmFuc2l0aW9uYWwodmFsaWRhdG9ycy5ib29sZWFuKSxcbiAgICAgIGZvcmNlZEpTT05QYXJzaW5nOiB2YWxpZGF0b3JzLnRyYW5zaXRpb25hbCh2YWxpZGF0b3JzLmJvb2xlYW4pLFxuICAgICAgY2xhcmlmeVRpbWVvdXRFcnJvcjogdmFsaWRhdG9ycy50cmFuc2l0aW9uYWwodmFsaWRhdG9ycy5ib29sZWFuKVxuICAgIH0sIGZhbHNlKTtcbiAgfVxuXG4gIC8vIGZpbHRlciBvdXQgc2tpcHBlZCBpbnRlcmNlcHRvcnNcbiAgdmFyIHJlcXVlc3RJbnRlcmNlcHRvckNoYWluID0gW107XG4gIHZhciBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgPSB0cnVlO1xuICB0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LmZvckVhY2goZnVuY3Rpb24gdW5zaGlmdFJlcXVlc3RJbnRlcmNlcHRvcnMoaW50ZXJjZXB0b3IpIHtcbiAgICBpZiAodHlwZW9mIGludGVyY2VwdG9yLnJ1bldoZW4gPT09ICdmdW5jdGlvbicgJiYgaW50ZXJjZXB0b3IucnVuV2hlbihjb25maWcpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycyA9IHN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycyAmJiBpbnRlcmNlcHRvci5zeW5jaHJvbm91cztcblxuICAgIHJlcXVlc3RJbnRlcmNlcHRvckNoYWluLnVuc2hpZnQoaW50ZXJjZXB0b3IuZnVsZmlsbGVkLCBpbnRlcmNlcHRvci5yZWplY3RlZCk7XG4gIH0pO1xuXG4gIHZhciByZXNwb25zZUludGVyY2VwdG9yQ2hhaW4gPSBbXTtcbiAgdGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbiBwdXNoUmVzcG9uc2VJbnRlcmNlcHRvcnMoaW50ZXJjZXB0b3IpIHtcbiAgICByZXNwb25zZUludGVyY2VwdG9yQ2hhaW4ucHVzaChpbnRlcmNlcHRvci5mdWxmaWxsZWQsIGludGVyY2VwdG9yLnJlamVjdGVkKTtcbiAgfSk7XG5cbiAgdmFyIHByb21pc2U7XG5cbiAgaWYgKCFzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMpIHtcbiAgICB2YXIgY2hhaW4gPSBbZGlzcGF0Y2hSZXF1ZXN0LCB1bmRlZmluZWRdO1xuXG4gICAgQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkoY2hhaW4sIHJlcXVlc3RJbnRlcmNlcHRvckNoYWluKTtcbiAgICBjaGFpbiA9IGNoYWluLmNvbmNhdChyZXNwb25zZUludGVyY2VwdG9yQ2hhaW4pO1xuXG4gICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShjb25maWcpO1xuICAgIHdoaWxlIChjaGFpbi5sZW5ndGgpIHtcbiAgICAgIHByb21pc2UgPSBwcm9taXNlLnRoZW4oY2hhaW4uc2hpZnQoKSwgY2hhaW4uc2hpZnQoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cblxuXG4gIHZhciBuZXdDb25maWcgPSBjb25maWc7XG4gIHdoaWxlIChyZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbi5sZW5ndGgpIHtcbiAgICB2YXIgb25GdWxmaWxsZWQgPSByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbi5zaGlmdCgpO1xuICAgIHZhciBvblJlamVjdGVkID0gcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4uc2hpZnQoKTtcbiAgICB0cnkge1xuICAgICAgbmV3Q29uZmlnID0gb25GdWxmaWxsZWQobmV3Q29uZmlnKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgb25SZWplY3RlZChlcnJvcik7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB0cnkge1xuICAgIHByb21pc2UgPSBkaXNwYXRjaFJlcXVlc3QobmV3Q29uZmlnKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICB9XG5cbiAgd2hpbGUgKHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbi5sZW5ndGgpIHtcbiAgICBwcm9taXNlID0gcHJvbWlzZS50aGVuKHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbi5zaGlmdCgpLCByZXNwb25zZUludGVyY2VwdG9yQ2hhaW4uc2hpZnQoKSk7XG4gIH1cblxuICByZXR1cm4gcHJvbWlzZTtcbn07XG5cbkF4aW9zLnByb3RvdHlwZS5nZXRVcmkgPSBmdW5jdGlvbiBnZXRVcmkoY29uZmlnKSB7XG4gIGlmICghY29uZmlnLnVybCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUHJvdmlkZWQgY29uZmlnIHVybCBpcyBub3QgdmFsaWQnKTtcbiAgfVxuICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xuICByZXR1cm4gYnVpbGRVUkwoY29uZmlnLnVybCwgY29uZmlnLnBhcmFtcywgY29uZmlnLnBhcmFtc1NlcmlhbGl6ZXIpLnJlcGxhY2UoL15cXD8vLCAnJyk7XG59O1xuXG4vLyBQcm92aWRlIGFsaWFzZXMgZm9yIHN1cHBvcnRlZCByZXF1ZXN0IG1ldGhvZHNcbnV0aWxzLmZvckVhY2goWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAnb3B0aW9ucyddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kTm9EYXRhKG1ldGhvZCkge1xuICAvKmVzbGludCBmdW5jLW5hbWVzOjAqL1xuICBBeGlvcy5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uKHVybCwgY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdChtZXJnZUNvbmZpZyhjb25maWcgfHwge30sIHtcbiAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAgdXJsOiB1cmwsXG4gICAgICBkYXRhOiAoY29uZmlnIHx8IHt9KS5kYXRhXG4gICAgfSkpO1xuICB9O1xufSk7XG5cbnV0aWxzLmZvckVhY2goWydwb3N0JywgJ3B1dCcsICdwYXRjaCddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kV2l0aERhdGEobWV0aG9kKSB7XG4gIC8qZXNsaW50IGZ1bmMtbmFtZXM6MCovXG4gIEF4aW9zLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24odXJsLCBkYXRhLCBjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KG1lcmdlQ29uZmlnKGNvbmZpZyB8fCB7fSwge1xuICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICB1cmw6IHVybCxcbiAgICAgIGRhdGE6IGRhdGFcbiAgICB9KSk7XG4gIH07XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBBeGlvcztcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG5mdW5jdGlvbiBJbnRlcmNlcHRvck1hbmFnZXIoKSB7XG4gIHRoaXMuaGFuZGxlcnMgPSBbXTtcbn1cblxuLyoqXG4gKiBBZGQgYSBuZXcgaW50ZXJjZXB0b3IgdG8gdGhlIHN0YWNrXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVsZmlsbGVkIFRoZSBmdW5jdGlvbiB0byBoYW5kbGUgYHRoZW5gIGZvciBhIGBQcm9taXNlYFxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVqZWN0ZWQgVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSBgcmVqZWN0YCBmb3IgYSBgUHJvbWlzZWBcbiAqXG4gKiBAcmV0dXJuIHtOdW1iZXJ9IEFuIElEIHVzZWQgdG8gcmVtb3ZlIGludGVyY2VwdG9yIGxhdGVyXG4gKi9cbkludGVyY2VwdG9yTWFuYWdlci5wcm90b3R5cGUudXNlID0gZnVuY3Rpb24gdXNlKGZ1bGZpbGxlZCwgcmVqZWN0ZWQsIG9wdGlvbnMpIHtcbiAgdGhpcy5oYW5kbGVycy5wdXNoKHtcbiAgICBmdWxmaWxsZWQ6IGZ1bGZpbGxlZCxcbiAgICByZWplY3RlZDogcmVqZWN0ZWQsXG4gICAgc3luY2hyb25vdXM6IG9wdGlvbnMgPyBvcHRpb25zLnN5bmNocm9ub3VzIDogZmFsc2UsXG4gICAgcnVuV2hlbjogb3B0aW9ucyA/IG9wdGlvbnMucnVuV2hlbiA6IG51bGxcbiAgfSk7XG4gIHJldHVybiB0aGlzLmhhbmRsZXJzLmxlbmd0aCAtIDE7XG59O1xuXG4vKipcbiAqIFJlbW92ZSBhbiBpbnRlcmNlcHRvciBmcm9tIHRoZSBzdGFja1xuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBpZCBUaGUgSUQgdGhhdCB3YXMgcmV0dXJuZWQgYnkgYHVzZWBcbiAqL1xuSW50ZXJjZXB0b3JNYW5hZ2VyLnByb3RvdHlwZS5lamVjdCA9IGZ1bmN0aW9uIGVqZWN0KGlkKSB7XG4gIGlmICh0aGlzLmhhbmRsZXJzW2lkXSkge1xuICAgIHRoaXMuaGFuZGxlcnNbaWRdID0gbnVsbDtcbiAgfVxufTtcblxuLyoqXG4gKiBJdGVyYXRlIG92ZXIgYWxsIHRoZSByZWdpc3RlcmVkIGludGVyY2VwdG9yc1xuICpcbiAqIFRoaXMgbWV0aG9kIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIHNraXBwaW5nIG92ZXIgYW55XG4gKiBpbnRlcmNlcHRvcnMgdGhhdCBtYXkgaGF2ZSBiZWNvbWUgYG51bGxgIGNhbGxpbmcgYGVqZWN0YC5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgZnVuY3Rpb24gdG8gY2FsbCBmb3IgZWFjaCBpbnRlcmNlcHRvclxuICovXG5JbnRlcmNlcHRvck1hbmFnZXIucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbiBmb3JFYWNoKGZuKSB7XG4gIHV0aWxzLmZvckVhY2godGhpcy5oYW5kbGVycywgZnVuY3Rpb24gZm9yRWFjaEhhbmRsZXIoaCkge1xuICAgIGlmIChoICE9PSBudWxsKSB7XG4gICAgICBmbihoKTtcbiAgICB9XG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBJbnRlcmNlcHRvck1hbmFnZXI7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBpc0Fic29sdXRlVVJMID0gcmVxdWlyZSgnLi4vaGVscGVycy9pc0Fic29sdXRlVVJMJyk7XG52YXIgY29tYmluZVVSTHMgPSByZXF1aXJlKCcuLi9oZWxwZXJzL2NvbWJpbmVVUkxzJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBVUkwgYnkgY29tYmluaW5nIHRoZSBiYXNlVVJMIHdpdGggdGhlIHJlcXVlc3RlZFVSTCxcbiAqIG9ubHkgd2hlbiB0aGUgcmVxdWVzdGVkVVJMIGlzIG5vdCBhbHJlYWR5IGFuIGFic29sdXRlIFVSTC5cbiAqIElmIHRoZSByZXF1ZXN0VVJMIGlzIGFic29sdXRlLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJlcXVlc3RlZFVSTCB1bnRvdWNoZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2VVUkwgVGhlIGJhc2UgVVJMXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVxdWVzdGVkVVJMIEFic29sdXRlIG9yIHJlbGF0aXZlIFVSTCB0byBjb21iaW5lXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29tYmluZWQgZnVsbCBwYXRoXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYnVpbGRGdWxsUGF0aChiYXNlVVJMLCByZXF1ZXN0ZWRVUkwpIHtcbiAgaWYgKGJhc2VVUkwgJiYgIWlzQWJzb2x1dGVVUkwocmVxdWVzdGVkVVJMKSkge1xuICAgIHJldHVybiBjb21iaW5lVVJMcyhiYXNlVVJMLCByZXF1ZXN0ZWRVUkwpO1xuICB9XG4gIHJldHVybiByZXF1ZXN0ZWRVUkw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZW5oYW5jZUVycm9yID0gcmVxdWlyZSgnLi9lbmhhbmNlRXJyb3InKTtcblxuLyoqXG4gKiBDcmVhdGUgYW4gRXJyb3Igd2l0aCB0aGUgc3BlY2lmaWVkIG1lc3NhZ2UsIGNvbmZpZywgZXJyb3IgY29kZSwgcmVxdWVzdCBhbmQgcmVzcG9uc2UuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIFRoZSBjb25maWcuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2NvZGVdIFRoZSBlcnJvciBjb2RlIChmb3IgZXhhbXBsZSwgJ0VDT05OQUJPUlRFRCcpLlxuICogQHBhcmFtIHtPYmplY3R9IFtyZXF1ZXN0XSBUaGUgcmVxdWVzdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVzcG9uc2VdIFRoZSByZXNwb25zZS5cbiAqIEByZXR1cm5zIHtFcnJvcn0gVGhlIGNyZWF0ZWQgZXJyb3IuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlRXJyb3IobWVzc2FnZSwgY29uZmlnLCBjb2RlLCByZXF1ZXN0LCByZXNwb25zZSkge1xuICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIHJldHVybiBlbmhhbmNlRXJyb3IoZXJyb3IsIGNvbmZpZywgY29kZSwgcmVxdWVzdCwgcmVzcG9uc2UpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xudmFyIHRyYW5zZm9ybURhdGEgPSByZXF1aXJlKCcuL3RyYW5zZm9ybURhdGEnKTtcbnZhciBpc0NhbmNlbCA9IHJlcXVpcmUoJy4uL2NhbmNlbC9pc0NhbmNlbCcpO1xudmFyIGRlZmF1bHRzID0gcmVxdWlyZSgnLi4vZGVmYXVsdHMnKTtcbnZhciBDYW5jZWwgPSByZXF1aXJlKCcuLi9jYW5jZWwvQ2FuY2VsJyk7XG5cbi8qKlxuICogVGhyb3dzIGEgYENhbmNlbGAgaWYgY2FuY2VsbGF0aW9uIGhhcyBiZWVuIHJlcXVlc3RlZC5cbiAqL1xuZnVuY3Rpb24gdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpIHtcbiAgaWYgKGNvbmZpZy5jYW5jZWxUb2tlbikge1xuICAgIGNvbmZpZy5jYW5jZWxUb2tlbi50aHJvd0lmUmVxdWVzdGVkKCk7XG4gIH1cblxuICBpZiAoY29uZmlnLnNpZ25hbCAmJiBjb25maWcuc2lnbmFsLmFib3J0ZWQpIHtcbiAgICB0aHJvdyBuZXcgQ2FuY2VsKCdjYW5jZWxlZCcpO1xuICB9XG59XG5cbi8qKlxuICogRGlzcGF0Y2ggYSByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIgdXNpbmcgdGhlIGNvbmZpZ3VyZWQgYWRhcHRlci5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gY29uZmlnIFRoZSBjb25maWcgdGhhdCBpcyB0byBiZSB1c2VkIGZvciB0aGUgcmVxdWVzdFxuICogQHJldHVybnMge1Byb21pc2V9IFRoZSBQcm9taXNlIHRvIGJlIGZ1bGZpbGxlZFxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRpc3BhdGNoUmVxdWVzdChjb25maWcpIHtcbiAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xuXG4gIC8vIEVuc3VyZSBoZWFkZXJzIGV4aXN0XG4gIGNvbmZpZy5oZWFkZXJzID0gY29uZmlnLmhlYWRlcnMgfHwge307XG5cbiAgLy8gVHJhbnNmb3JtIHJlcXVlc3QgZGF0YVxuICBjb25maWcuZGF0YSA9IHRyYW5zZm9ybURhdGEuY2FsbChcbiAgICBjb25maWcsXG4gICAgY29uZmlnLmRhdGEsXG4gICAgY29uZmlnLmhlYWRlcnMsXG4gICAgY29uZmlnLnRyYW5zZm9ybVJlcXVlc3RcbiAgKTtcblxuICAvLyBGbGF0dGVuIGhlYWRlcnNcbiAgY29uZmlnLmhlYWRlcnMgPSB1dGlscy5tZXJnZShcbiAgICBjb25maWcuaGVhZGVycy5jb21tb24gfHwge30sXG4gICAgY29uZmlnLmhlYWRlcnNbY29uZmlnLm1ldGhvZF0gfHwge30sXG4gICAgY29uZmlnLmhlYWRlcnNcbiAgKTtcblxuICB1dGlscy5mb3JFYWNoKFxuICAgIFsnZGVsZXRlJywgJ2dldCcsICdoZWFkJywgJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJywgJ2NvbW1vbiddLFxuICAgIGZ1bmN0aW9uIGNsZWFuSGVhZGVyQ29uZmlnKG1ldGhvZCkge1xuICAgICAgZGVsZXRlIGNvbmZpZy5oZWFkZXJzW21ldGhvZF07XG4gICAgfVxuICApO1xuXG4gIHZhciBhZGFwdGVyID0gY29uZmlnLmFkYXB0ZXIgfHwgZGVmYXVsdHMuYWRhcHRlcjtcblxuICByZXR1cm4gYWRhcHRlcihjb25maWcpLnRoZW4oZnVuY3Rpb24gb25BZGFwdGVyUmVzb2x1dGlvbihyZXNwb25zZSkge1xuICAgIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcblxuICAgIC8vIFRyYW5zZm9ybSByZXNwb25zZSBkYXRhXG4gICAgcmVzcG9uc2UuZGF0YSA9IHRyYW5zZm9ybURhdGEuY2FsbChcbiAgICAgIGNvbmZpZyxcbiAgICAgIHJlc3BvbnNlLmRhdGEsXG4gICAgICByZXNwb25zZS5oZWFkZXJzLFxuICAgICAgY29uZmlnLnRyYW5zZm9ybVJlc3BvbnNlXG4gICAgKTtcblxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfSwgZnVuY3Rpb24gb25BZGFwdGVyUmVqZWN0aW9uKHJlYXNvbikge1xuICAgIGlmICghaXNDYW5jZWwocmVhc29uKSkge1xuICAgICAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xuXG4gICAgICAvLyBUcmFuc2Zvcm0gcmVzcG9uc2UgZGF0YVxuICAgICAgaWYgKHJlYXNvbiAmJiByZWFzb24ucmVzcG9uc2UpIHtcbiAgICAgICAgcmVhc29uLnJlc3BvbnNlLmRhdGEgPSB0cmFuc2Zvcm1EYXRhLmNhbGwoXG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIHJlYXNvbi5yZXNwb25zZS5kYXRhLFxuICAgICAgICAgIHJlYXNvbi5yZXNwb25zZS5oZWFkZXJzLFxuICAgICAgICAgIGNvbmZpZy50cmFuc2Zvcm1SZXNwb25zZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChyZWFzb24pO1xuICB9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogVXBkYXRlIGFuIEVycm9yIHdpdGggdGhlIHNwZWNpZmllZCBjb25maWcsIGVycm9yIGNvZGUsIGFuZCByZXNwb25zZS5cbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJvciBUaGUgZXJyb3IgdG8gdXBkYXRlLlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnLlxuICogQHBhcmFtIHtzdHJpbmd9IFtjb2RlXSBUaGUgZXJyb3IgY29kZSAoZm9yIGV4YW1wbGUsICdFQ09OTkFCT1JURUQnKS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVxdWVzdF0gVGhlIHJlcXVlc3QuXG4gKiBAcGFyYW0ge09iamVjdH0gW3Jlc3BvbnNlXSBUaGUgcmVzcG9uc2UuXG4gKiBAcmV0dXJucyB7RXJyb3J9IFRoZSBlcnJvci5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBlbmhhbmNlRXJyb3IoZXJyb3IsIGNvbmZpZywgY29kZSwgcmVxdWVzdCwgcmVzcG9uc2UpIHtcbiAgZXJyb3IuY29uZmlnID0gY29uZmlnO1xuICBpZiAoY29kZSkge1xuICAgIGVycm9yLmNvZGUgPSBjb2RlO1xuICB9XG5cbiAgZXJyb3IucmVxdWVzdCA9IHJlcXVlc3Q7XG4gIGVycm9yLnJlc3BvbnNlID0gcmVzcG9uc2U7XG4gIGVycm9yLmlzQXhpb3NFcnJvciA9IHRydWU7XG5cbiAgZXJyb3IudG9KU09OID0gZnVuY3Rpb24gdG9KU09OKCkge1xuICAgIHJldHVybiB7XG4gICAgICAvLyBTdGFuZGFyZFxuICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlLFxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgLy8gTWljcm9zb2Z0XG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgIG51bWJlcjogdGhpcy5udW1iZXIsXG4gICAgICAvLyBNb3ppbGxhXG4gICAgICBmaWxlTmFtZTogdGhpcy5maWxlTmFtZSxcbiAgICAgIGxpbmVOdW1iZXI6IHRoaXMubGluZU51bWJlcixcbiAgICAgIGNvbHVtbk51bWJlcjogdGhpcy5jb2x1bW5OdW1iZXIsXG4gICAgICBzdGFjazogdGhpcy5zdGFjayxcbiAgICAgIC8vIEF4aW9zXG4gICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgY29kZTogdGhpcy5jb2RlLFxuICAgICAgc3RhdHVzOiB0aGlzLnJlc3BvbnNlICYmIHRoaXMucmVzcG9uc2Uuc3RhdHVzID8gdGhpcy5yZXNwb25zZS5zdGF0dXMgOiBudWxsXG4gICAgfTtcbiAgfTtcbiAgcmV0dXJuIGVycm9yO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcblxuLyoqXG4gKiBDb25maWctc3BlY2lmaWMgbWVyZ2UtZnVuY3Rpb24gd2hpY2ggY3JlYXRlcyBhIG5ldyBjb25maWctb2JqZWN0XG4gKiBieSBtZXJnaW5nIHR3byBjb25maWd1cmF0aW9uIG9iamVjdHMgdG9nZXRoZXIuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZzFcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBOZXcgb2JqZWN0IHJlc3VsdGluZyBmcm9tIG1lcmdpbmcgY29uZmlnMiB0byBjb25maWcxXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbWVyZ2VDb25maWcoY29uZmlnMSwgY29uZmlnMikge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgY29uZmlnMiA9IGNvbmZpZzIgfHwge307XG4gIHZhciBjb25maWcgPSB7fTtcblxuICBmdW5jdGlvbiBnZXRNZXJnZWRWYWx1ZSh0YXJnZXQsIHNvdXJjZSkge1xuICAgIGlmICh1dGlscy5pc1BsYWluT2JqZWN0KHRhcmdldCkgJiYgdXRpbHMuaXNQbGFpbk9iamVjdChzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gdXRpbHMubWVyZ2UodGFyZ2V0LCBzb3VyY2UpO1xuICAgIH0gZWxzZSBpZiAodXRpbHMuaXNQbGFpbk9iamVjdChzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gdXRpbHMubWVyZ2Uoe30sIHNvdXJjZSk7XG4gICAgfSBlbHNlIGlmICh1dGlscy5pc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiBzb3VyY2Uuc2xpY2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiBtZXJnZURlZXBQcm9wZXJ0aWVzKHByb3ApIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzJbcHJvcF0pKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUoY29uZmlnMVtwcm9wXSwgY29uZmlnMltwcm9wXSk7XG4gICAgfSBlbHNlIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnMVtwcm9wXSkpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzFbcHJvcF0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiB2YWx1ZUZyb21Db25maWcyKHByb3ApIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzJbcHJvcF0pKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcyW3Byb3BdKTtcbiAgICB9XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cbiAgZnVuY3Rpb24gZGVmYXVsdFRvQ29uZmlnMihwcm9wKSB7XG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcyW3Byb3BdKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgY29uZmlnMltwcm9wXSk7XG4gICAgfSBlbHNlIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnMVtwcm9wXSkpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzFbcHJvcF0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiBtZXJnZURpcmVjdEtleXMocHJvcCkge1xuICAgIGlmIChwcm9wIGluIGNvbmZpZzIpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZShjb25maWcxW3Byb3BdLCBjb25maWcyW3Byb3BdKTtcbiAgICB9IGVsc2UgaWYgKHByb3AgaW4gY29uZmlnMSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgY29uZmlnMVtwcm9wXSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIG1lcmdlTWFwID0ge1xuICAgICd1cmwnOiB2YWx1ZUZyb21Db25maWcyLFxuICAgICdtZXRob2QnOiB2YWx1ZUZyb21Db25maWcyLFxuICAgICdkYXRhJzogdmFsdWVGcm9tQ29uZmlnMixcbiAgICAnYmFzZVVSTCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3RyYW5zZm9ybVJlcXVlc3QnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd0cmFuc2Zvcm1SZXNwb25zZSc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3BhcmFtc1NlcmlhbGl6ZXInOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd0aW1lb3V0JzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAndGltZW91dE1lc3NhZ2UnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd3aXRoQ3JlZGVudGlhbHMnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdhZGFwdGVyJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAncmVzcG9uc2VUeXBlJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAneHNyZkNvb2tpZU5hbWUnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd4c3JmSGVhZGVyTmFtZSc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ29uVXBsb2FkUHJvZ3Jlc3MnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdvbkRvd25sb2FkUHJvZ3Jlc3MnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdkZWNvbXByZXNzJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnbWF4Q29udGVudExlbmd0aCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ21heEJvZHlMZW5ndGgnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd0cmFuc3BvcnQnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdodHRwQWdlbnQnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdodHRwc0FnZW50JzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnY2FuY2VsVG9rZW4nOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdzb2NrZXRQYXRoJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAncmVzcG9uc2VFbmNvZGluZyc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3ZhbGlkYXRlU3RhdHVzJzogbWVyZ2VEaXJlY3RLZXlzXG4gIH07XG5cbiAgdXRpbHMuZm9yRWFjaChPYmplY3Qua2V5cyhjb25maWcxKS5jb25jYXQoT2JqZWN0LmtleXMoY29uZmlnMikpLCBmdW5jdGlvbiBjb21wdXRlQ29uZmlnVmFsdWUocHJvcCkge1xuICAgIHZhciBtZXJnZSA9IG1lcmdlTWFwW3Byb3BdIHx8IG1lcmdlRGVlcFByb3BlcnRpZXM7XG4gICAgdmFyIGNvbmZpZ1ZhbHVlID0gbWVyZ2UocHJvcCk7XG4gICAgKHV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZ1ZhbHVlKSAmJiBtZXJnZSAhPT0gbWVyZ2VEaXJlY3RLZXlzKSB8fCAoY29uZmlnW3Byb3BdID0gY29uZmlnVmFsdWUpO1xuICB9KTtcblxuICByZXR1cm4gY29uZmlnO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGNyZWF0ZUVycm9yID0gcmVxdWlyZSgnLi9jcmVhdGVFcnJvcicpO1xuXG4vKipcbiAqIFJlc29sdmUgb3IgcmVqZWN0IGEgUHJvbWlzZSBiYXNlZCBvbiByZXNwb25zZSBzdGF0dXMuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVzb2x2ZSBBIGZ1bmN0aW9uIHRoYXQgcmVzb2x2ZXMgdGhlIHByb21pc2UuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWplY3QgQSBmdW5jdGlvbiB0aGF0IHJlamVjdHMgdGhlIHByb21pc2UuXG4gKiBAcGFyYW0ge29iamVjdH0gcmVzcG9uc2UgVGhlIHJlc3BvbnNlLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHJlc3BvbnNlKSB7XG4gIHZhciB2YWxpZGF0ZVN0YXR1cyA9IHJlc3BvbnNlLmNvbmZpZy52YWxpZGF0ZVN0YXR1cztcbiAgaWYgKCFyZXNwb25zZS5zdGF0dXMgfHwgIXZhbGlkYXRlU3RhdHVzIHx8IHZhbGlkYXRlU3RhdHVzKHJlc3BvbnNlLnN0YXR1cykpIHtcbiAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgfSBlbHNlIHtcbiAgICByZWplY3QoY3JlYXRlRXJyb3IoXG4gICAgICAnUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAnICsgcmVzcG9uc2Uuc3RhdHVzLFxuICAgICAgcmVzcG9uc2UuY29uZmlnLFxuICAgICAgbnVsbCxcbiAgICAgIHJlc3BvbnNlLnJlcXVlc3QsXG4gICAgICByZXNwb25zZVxuICAgICkpO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG52YXIgZGVmYXVsdHMgPSByZXF1aXJlKCcuLy4uL2RlZmF1bHRzJyk7XG5cbi8qKlxuICogVHJhbnNmb3JtIHRoZSBkYXRhIGZvciBhIHJlcXVlc3Qgb3IgYSByZXNwb25zZVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fFN0cmluZ30gZGF0YSBUaGUgZGF0YSB0byBiZSB0cmFuc2Zvcm1lZFxuICogQHBhcmFtIHtBcnJheX0gaGVhZGVycyBUaGUgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3Qgb3IgcmVzcG9uc2VcbiAqIEBwYXJhbSB7QXJyYXl8RnVuY3Rpb259IGZucyBBIHNpbmdsZSBmdW5jdGlvbiBvciBBcnJheSBvZiBmdW5jdGlvbnNcbiAqIEByZXR1cm5zIHsqfSBUaGUgcmVzdWx0aW5nIHRyYW5zZm9ybWVkIGRhdGFcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB0cmFuc2Zvcm1EYXRhKGRhdGEsIGhlYWRlcnMsIGZucykge1xuICB2YXIgY29udGV4dCA9IHRoaXMgfHwgZGVmYXVsdHM7XG4gIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xuICB1dGlscy5mb3JFYWNoKGZucywgZnVuY3Rpb24gdHJhbnNmb3JtKGZuKSB7XG4gICAgZGF0YSA9IGZuLmNhbGwoY29udGV4dCwgZGF0YSwgaGVhZGVycyk7XG4gIH0pO1xuXG4gIHJldHVybiBkYXRhO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xudmFyIG5vcm1hbGl6ZUhlYWRlck5hbWUgPSByZXF1aXJlKCcuL2hlbHBlcnMvbm9ybWFsaXplSGVhZGVyTmFtZScpO1xudmFyIGVuaGFuY2VFcnJvciA9IHJlcXVpcmUoJy4vY29yZS9lbmhhbmNlRXJyb3InKTtcblxudmFyIERFRkFVTFRfQ09OVEVOVF9UWVBFID0ge1xuICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcbn07XG5cbmZ1bmN0aW9uIHNldENvbnRlbnRUeXBlSWZVbnNldChoZWFkZXJzLCB2YWx1ZSkge1xuICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGhlYWRlcnMpICYmIHV0aWxzLmlzVW5kZWZpbmVkKGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddKSkge1xuICAgIGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gdmFsdWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RGVmYXVsdEFkYXB0ZXIoKSB7XG4gIHZhciBhZGFwdGVyO1xuICBpZiAodHlwZW9mIFhNTEh0dHBSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIC8vIEZvciBicm93c2VycyB1c2UgWEhSIGFkYXB0ZXJcbiAgICBhZGFwdGVyID0gcmVxdWlyZSgnLi9hZGFwdGVycy94aHInKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHByb2Nlc3MpID09PSAnW29iamVjdCBwcm9jZXNzXScpIHtcbiAgICAvLyBGb3Igbm9kZSB1c2UgSFRUUCBhZGFwdGVyXG4gICAgYWRhcHRlciA9IHJlcXVpcmUoJy4vYWRhcHRlcnMvaHR0cCcpO1xuICB9XG4gIHJldHVybiBhZGFwdGVyO1xufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnlTYWZlbHkocmF3VmFsdWUsIHBhcnNlciwgZW5jb2Rlcikge1xuICBpZiAodXRpbHMuaXNTdHJpbmcocmF3VmFsdWUpKSB7XG4gICAgdHJ5IHtcbiAgICAgIChwYXJzZXIgfHwgSlNPTi5wYXJzZSkocmF3VmFsdWUpO1xuICAgICAgcmV0dXJuIHV0aWxzLnRyaW0ocmF3VmFsdWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlLm5hbWUgIT09ICdTeW50YXhFcnJvcicpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gKGVuY29kZXIgfHwgSlNPTi5zdHJpbmdpZnkpKHJhd1ZhbHVlKTtcbn1cblxudmFyIGRlZmF1bHRzID0ge1xuXG4gIHRyYW5zaXRpb25hbDoge1xuICAgIHNpbGVudEpTT05QYXJzaW5nOiB0cnVlLFxuICAgIGZvcmNlZEpTT05QYXJzaW5nOiB0cnVlLFxuICAgIGNsYXJpZnlUaW1lb3V0RXJyb3I6IGZhbHNlXG4gIH0sXG5cbiAgYWRhcHRlcjogZ2V0RGVmYXVsdEFkYXB0ZXIoKSxcblxuICB0cmFuc2Zvcm1SZXF1ZXN0OiBbZnVuY3Rpb24gdHJhbnNmb3JtUmVxdWVzdChkYXRhLCBoZWFkZXJzKSB7XG4gICAgbm9ybWFsaXplSGVhZGVyTmFtZShoZWFkZXJzLCAnQWNjZXB0Jyk7XG4gICAgbm9ybWFsaXplSGVhZGVyTmFtZShoZWFkZXJzLCAnQ29udGVudC1UeXBlJyk7XG5cbiAgICBpZiAodXRpbHMuaXNGb3JtRGF0YShkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNBcnJheUJ1ZmZlcihkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNCdWZmZXIoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzU3RyZWFtKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0ZpbGUoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzQmxvYihkYXRhKVxuICAgICkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGlmICh1dGlscy5pc0FycmF5QnVmZmVyVmlldyhkYXRhKSkge1xuICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICAgIH1cbiAgICBpZiAodXRpbHMuaXNVUkxTZWFyY2hQYXJhbXMoZGF0YSkpIHtcbiAgICAgIHNldENvbnRlbnRUeXBlSWZVbnNldChoZWFkZXJzLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgnKTtcbiAgICAgIHJldHVybiBkYXRhLnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIGlmICh1dGlscy5pc09iamVjdChkYXRhKSB8fCAoaGVhZGVycyAmJiBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9PT0gJ2FwcGxpY2F0aW9uL2pzb24nKSkge1xuICAgICAgc2V0Q29udGVudFR5cGVJZlVuc2V0KGhlYWRlcnMsICdhcHBsaWNhdGlvbi9qc29uJyk7XG4gICAgICByZXR1cm4gc3RyaW5naWZ5U2FmZWx5KGRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfV0sXG5cbiAgdHJhbnNmb3JtUmVzcG9uc2U6IFtmdW5jdGlvbiB0cmFuc2Zvcm1SZXNwb25zZShkYXRhKSB7XG4gICAgdmFyIHRyYW5zaXRpb25hbCA9IHRoaXMudHJhbnNpdGlvbmFsIHx8IGRlZmF1bHRzLnRyYW5zaXRpb25hbDtcbiAgICB2YXIgc2lsZW50SlNPTlBhcnNpbmcgPSB0cmFuc2l0aW9uYWwgJiYgdHJhbnNpdGlvbmFsLnNpbGVudEpTT05QYXJzaW5nO1xuICAgIHZhciBmb3JjZWRKU09OUGFyc2luZyA9IHRyYW5zaXRpb25hbCAmJiB0cmFuc2l0aW9uYWwuZm9yY2VkSlNPTlBhcnNpbmc7XG4gICAgdmFyIHN0cmljdEpTT05QYXJzaW5nID0gIXNpbGVudEpTT05QYXJzaW5nICYmIHRoaXMucmVzcG9uc2VUeXBlID09PSAnanNvbic7XG5cbiAgICBpZiAoc3RyaWN0SlNPTlBhcnNpbmcgfHwgKGZvcmNlZEpTT05QYXJzaW5nICYmIHV0aWxzLmlzU3RyaW5nKGRhdGEpICYmIGRhdGEubGVuZ3RoKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZGF0YSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChzdHJpY3RKU09OUGFyc2luZykge1xuICAgICAgICAgIGlmIChlLm5hbWUgPT09ICdTeW50YXhFcnJvcicpIHtcbiAgICAgICAgICAgIHRocm93IGVuaGFuY2VFcnJvcihlLCB0aGlzLCAnRV9KU09OX1BBUlNFJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfV0sXG5cbiAgLyoqXG4gICAqIEEgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgdG8gYWJvcnQgYSByZXF1ZXN0LiBJZiBzZXQgdG8gMCAoZGVmYXVsdCkgYVxuICAgKiB0aW1lb3V0IGlzIG5vdCBjcmVhdGVkLlxuICAgKi9cbiAgdGltZW91dDogMCxcblxuICB4c3JmQ29va2llTmFtZTogJ1hTUkYtVE9LRU4nLFxuICB4c3JmSGVhZGVyTmFtZTogJ1gtWFNSRi1UT0tFTicsXG5cbiAgbWF4Q29udGVudExlbmd0aDogLTEsXG4gIG1heEJvZHlMZW5ndGg6IC0xLFxuXG4gIHZhbGlkYXRlU3RhdHVzOiBmdW5jdGlvbiB2YWxpZGF0ZVN0YXR1cyhzdGF0dXMpIHtcbiAgICByZXR1cm4gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDA7XG4gIH0sXG5cbiAgaGVhZGVyczoge1xuICAgIGNvbW1vbjoge1xuICAgICAgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyonXG4gICAgfVxuICB9XG59O1xuXG51dGlscy5mb3JFYWNoKFsnZGVsZXRlJywgJ2dldCcsICdoZWFkJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2ROb0RhdGEobWV0aG9kKSB7XG4gIGRlZmF1bHRzLmhlYWRlcnNbbWV0aG9kXSA9IHt9O1xufSk7XG5cbnV0aWxzLmZvckVhY2goWydwb3N0JywgJ3B1dCcsICdwYXRjaCddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kV2l0aERhdGEobWV0aG9kKSB7XG4gIGRlZmF1bHRzLmhlYWRlcnNbbWV0aG9kXSA9IHV0aWxzLm1lcmdlKERFRkFVTFRfQ09OVEVOVF9UWVBFKTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmF1bHRzO1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7XG4gIFwidmVyc2lvblwiOiBcIjAuMjUuMFwiXG59OyIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBiaW5kKGZuLCB0aGlzQXJnKSB7XG4gIHJldHVybiBmdW5jdGlvbiB3cmFwKCkge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB9XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xuICB9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG5mdW5jdGlvbiBlbmNvZGUodmFsKSB7XG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQodmFsKS5cbiAgICByZXBsYWNlKC8lM0EvZ2ksICc6JykuXG4gICAgcmVwbGFjZSgvJTI0L2csICckJykuXG4gICAgcmVwbGFjZSgvJTJDL2dpLCAnLCcpLlxuICAgIHJlcGxhY2UoLyUyMC9nLCAnKycpLlxuICAgIHJlcGxhY2UoLyU1Qi9naSwgJ1snKS5cbiAgICByZXBsYWNlKC8lNUQvZ2ksICddJyk7XG59XG5cbi8qKlxuICogQnVpbGQgYSBVUkwgYnkgYXBwZW5kaW5nIHBhcmFtcyB0byB0aGUgZW5kXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybCBUaGUgYmFzZSBvZiB0aGUgdXJsIChlLmcuLCBodHRwOi8vd3d3Lmdvb2dsZS5jb20pXG4gKiBAcGFyYW0ge29iamVjdH0gW3BhcmFtc10gVGhlIHBhcmFtcyB0byBiZSBhcHBlbmRlZFxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGZvcm1hdHRlZCB1cmxcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBidWlsZFVSTCh1cmwsIHBhcmFtcywgcGFyYW1zU2VyaWFsaXplcikge1xuICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgaWYgKCFwYXJhbXMpIHtcbiAgICByZXR1cm4gdXJsO1xuICB9XG5cbiAgdmFyIHNlcmlhbGl6ZWRQYXJhbXM7XG4gIGlmIChwYXJhbXNTZXJpYWxpemVyKSB7XG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHBhcmFtc1NlcmlhbGl6ZXIocGFyYW1zKTtcbiAgfSBlbHNlIGlmICh1dGlscy5pc1VSTFNlYXJjaFBhcmFtcyhwYXJhbXMpKSB7XG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHBhcmFtcy50b1N0cmluZygpO1xuICB9IGVsc2Uge1xuICAgIHZhciBwYXJ0cyA9IFtdO1xuXG4gICAgdXRpbHMuZm9yRWFjaChwYXJhbXMsIGZ1bmN0aW9uIHNlcmlhbGl6ZSh2YWwsIGtleSkge1xuICAgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh1dGlscy5pc0FycmF5KHZhbCkpIHtcbiAgICAgICAga2V5ID0ga2V5ICsgJ1tdJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbCA9IFt2YWxdO1xuICAgICAgfVxuXG4gICAgICB1dGlscy5mb3JFYWNoKHZhbCwgZnVuY3Rpb24gcGFyc2VWYWx1ZSh2KSB7XG4gICAgICAgIGlmICh1dGlscy5pc0RhdGUodikpIHtcbiAgICAgICAgICB2ID0gdi50b0lTT1N0cmluZygpO1xuICAgICAgICB9IGVsc2UgaWYgKHV0aWxzLmlzT2JqZWN0KHYpKSB7XG4gICAgICAgICAgdiA9IEpTT04uc3RyaW5naWZ5KHYpO1xuICAgICAgICB9XG4gICAgICAgIHBhcnRzLnB1c2goZW5jb2RlKGtleSkgKyAnPScgKyBlbmNvZGUodikpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBzZXJpYWxpemVkUGFyYW1zID0gcGFydHMuam9pbignJicpO1xuICB9XG5cbiAgaWYgKHNlcmlhbGl6ZWRQYXJhbXMpIHtcbiAgICB2YXIgaGFzaG1hcmtJbmRleCA9IHVybC5pbmRleE9mKCcjJyk7XG4gICAgaWYgKGhhc2htYXJrSW5kZXggIT09IC0xKSB7XG4gICAgICB1cmwgPSB1cmwuc2xpY2UoMCwgaGFzaG1hcmtJbmRleCk7XG4gICAgfVxuXG4gICAgdXJsICs9ICh1cmwuaW5kZXhPZignPycpID09PSAtMSA/ICc/JyA6ICcmJykgKyBzZXJpYWxpemVkUGFyYW1zO1xuICB9XG5cbiAgcmV0dXJuIHVybDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBVUkwgYnkgY29tYmluaW5nIHRoZSBzcGVjaWZpZWQgVVJMc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVVJMIFRoZSBiYXNlIFVSTFxuICogQHBhcmFtIHtzdHJpbmd9IHJlbGF0aXZlVVJMIFRoZSByZWxhdGl2ZSBVUkxcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21iaW5lZCBVUkxcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjb21iaW5lVVJMcyhiYXNlVVJMLCByZWxhdGl2ZVVSTCkge1xuICByZXR1cm4gcmVsYXRpdmVVUkxcbiAgICA/IGJhc2VVUkwucmVwbGFjZSgvXFwvKyQvLCAnJykgKyAnLycgKyByZWxhdGl2ZVVSTC5yZXBsYWNlKC9eXFwvKy8sICcnKVxuICAgIDogYmFzZVVSTDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAoXG4gIHV0aWxzLmlzU3RhbmRhcmRCcm93c2VyRW52KCkgP1xuXG4gIC8vIFN0YW5kYXJkIGJyb3dzZXIgZW52cyBzdXBwb3J0IGRvY3VtZW50LmNvb2tpZVxuICAgIChmdW5jdGlvbiBzdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3cml0ZTogZnVuY3Rpb24gd3JpdGUobmFtZSwgdmFsdWUsIGV4cGlyZXMsIHBhdGgsIGRvbWFpbiwgc2VjdXJlKSB7XG4gICAgICAgICAgdmFyIGNvb2tpZSA9IFtdO1xuICAgICAgICAgIGNvb2tpZS5wdXNoKG5hbWUgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpKTtcblxuICAgICAgICAgIGlmICh1dGlscy5pc051bWJlcihleHBpcmVzKSkge1xuICAgICAgICAgICAgY29va2llLnB1c2goJ2V4cGlyZXM9JyArIG5ldyBEYXRlKGV4cGlyZXMpLnRvR01UU3RyaW5nKCkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh1dGlscy5pc1N0cmluZyhwYXRoKSkge1xuICAgICAgICAgICAgY29va2llLnB1c2goJ3BhdGg9JyArIHBhdGgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh1dGlscy5pc1N0cmluZyhkb21haW4pKSB7XG4gICAgICAgICAgICBjb29raWUucHVzaCgnZG9tYWluPScgKyBkb21haW4pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzZWN1cmUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGNvb2tpZS5wdXNoKCdzZWN1cmUnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkb2N1bWVudC5jb29raWUgPSBjb29raWUuam9pbignOyAnKTtcbiAgICAgICAgfSxcblxuICAgICAgICByZWFkOiBmdW5jdGlvbiByZWFkKG5hbWUpIHtcbiAgICAgICAgICB2YXIgbWF0Y2ggPSBkb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgnKF58O1xcXFxzKikoJyArIG5hbWUgKyAnKT0oW147XSopJykpO1xuICAgICAgICAgIHJldHVybiAobWF0Y2ggPyBkZWNvZGVVUklDb21wb25lbnQobWF0Y2hbM10pIDogbnVsbCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUobmFtZSkge1xuICAgICAgICAgIHRoaXMud3JpdGUobmFtZSwgJycsIERhdGUubm93KCkgLSA4NjQwMDAwMCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSkoKSA6XG5cbiAgLy8gTm9uIHN0YW5kYXJkIGJyb3dzZXIgZW52ICh3ZWIgd29ya2VycywgcmVhY3QtbmF0aXZlKSBsYWNrIG5lZWRlZCBzdXBwb3J0LlxuICAgIChmdW5jdGlvbiBub25TdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3cml0ZTogZnVuY3Rpb24gd3JpdGUoKSB7fSxcbiAgICAgICAgcmVhZDogZnVuY3Rpb24gcmVhZCgpIHsgcmV0dXJuIG51bGw7IH0sXG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge31cbiAgICAgIH07XG4gICAgfSkoKVxuKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBVUkwgaXMgYWJzb2x1dGVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIFRoZSBVUkwgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHNwZWNpZmllZCBVUkwgaXMgYWJzb2x1dGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQWJzb2x1dGVVUkwodXJsKSB7XG4gIC8vIEEgVVJMIGlzIGNvbnNpZGVyZWQgYWJzb2x1dGUgaWYgaXQgYmVnaW5zIHdpdGggXCI8c2NoZW1lPjovL1wiIG9yIFwiLy9cIiAocHJvdG9jb2wtcmVsYXRpdmUgVVJMKS5cbiAgLy8gUkZDIDM5ODYgZGVmaW5lcyBzY2hlbWUgbmFtZSBhcyBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgYmVnaW5uaW5nIHdpdGggYSBsZXR0ZXIgYW5kIGZvbGxvd2VkXG4gIC8vIGJ5IGFueSBjb21iaW5hdGlvbiBvZiBsZXR0ZXJzLCBkaWdpdHMsIHBsdXMsIHBlcmlvZCwgb3IgaHlwaGVuLlxuICByZXR1cm4gL14oW2Etel1bYS16XFxkK1xcLS5dKjopP1xcL1xcLy9pLnRlc3QodXJsKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHBheWxvYWQgaXMgYW4gZXJyb3IgdGhyb3duIGJ5IEF4aW9zXG4gKlxuICogQHBhcmFtIHsqfSBwYXlsb2FkIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgcGF5bG9hZCBpcyBhbiBlcnJvciB0aHJvd24gYnkgQXhpb3MsIG90aGVyd2lzZSBmYWxzZVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQXhpb3NFcnJvcihwYXlsb2FkKSB7XG4gIHJldHVybiB1dGlscy5pc09iamVjdChwYXlsb2FkKSAmJiAocGF5bG9hZC5pc0F4aW9zRXJyb3IgPT09IHRydWUpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgdXRpbHMuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSA/XG5cbiAgLy8gU3RhbmRhcmQgYnJvd3NlciBlbnZzIGhhdmUgZnVsbCBzdXBwb3J0IG9mIHRoZSBBUElzIG5lZWRlZCB0byB0ZXN0XG4gIC8vIHdoZXRoZXIgdGhlIHJlcXVlc3QgVVJMIGlzIG9mIHRoZSBzYW1lIG9yaWdpbiBhcyBjdXJyZW50IGxvY2F0aW9uLlxuICAgIChmdW5jdGlvbiBzdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgICB2YXIgbXNpZSA9IC8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gICAgICB2YXIgdXJsUGFyc2luZ05vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICB2YXIgb3JpZ2luVVJMO1xuXG4gICAgICAvKipcbiAgICAqIFBhcnNlIGEgVVJMIHRvIGRpc2NvdmVyIGl0J3MgY29tcG9uZW50c1xuICAgICpcbiAgICAqIEBwYXJhbSB7U3RyaW5nfSB1cmwgVGhlIFVSTCB0byBiZSBwYXJzZWRcbiAgICAqIEByZXR1cm5zIHtPYmplY3R9XG4gICAgKi9cbiAgICAgIGZ1bmN0aW9uIHJlc29sdmVVUkwodXJsKSB7XG4gICAgICAgIHZhciBocmVmID0gdXJsO1xuXG4gICAgICAgIGlmIChtc2llKSB7XG4gICAgICAgIC8vIElFIG5lZWRzIGF0dHJpYnV0ZSBzZXQgdHdpY2UgdG8gbm9ybWFsaXplIHByb3BlcnRpZXNcbiAgICAgICAgICB1cmxQYXJzaW5nTm9kZS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBocmVmKTtcbiAgICAgICAgICBocmVmID0gdXJsUGFyc2luZ05vZGUuaHJlZjtcbiAgICAgICAgfVxuXG4gICAgICAgIHVybFBhcnNpbmdOb2RlLnNldEF0dHJpYnV0ZSgnaHJlZicsIGhyZWYpO1xuXG4gICAgICAgIC8vIHVybFBhcnNpbmdOb2RlIHByb3ZpZGVzIHRoZSBVcmxVdGlscyBpbnRlcmZhY2UgLSBodHRwOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jdXJsdXRpbHNcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBocmVmOiB1cmxQYXJzaW5nTm9kZS5ocmVmLFxuICAgICAgICAgIHByb3RvY29sOiB1cmxQYXJzaW5nTm9kZS5wcm90b2NvbCA/IHVybFBhcnNpbmdOb2RlLnByb3RvY29sLnJlcGxhY2UoLzokLywgJycpIDogJycsXG4gICAgICAgICAgaG9zdDogdXJsUGFyc2luZ05vZGUuaG9zdCxcbiAgICAgICAgICBzZWFyY2g6IHVybFBhcnNpbmdOb2RlLnNlYXJjaCA/IHVybFBhcnNpbmdOb2RlLnNlYXJjaC5yZXBsYWNlKC9eXFw/LywgJycpIDogJycsXG4gICAgICAgICAgaGFzaDogdXJsUGFyc2luZ05vZGUuaGFzaCA/IHVybFBhcnNpbmdOb2RlLmhhc2gucmVwbGFjZSgvXiMvLCAnJykgOiAnJyxcbiAgICAgICAgICBob3N0bmFtZTogdXJsUGFyc2luZ05vZGUuaG9zdG5hbWUsXG4gICAgICAgICAgcG9ydDogdXJsUGFyc2luZ05vZGUucG9ydCxcbiAgICAgICAgICBwYXRobmFtZTogKHVybFBhcnNpbmdOb2RlLnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gJy8nKSA/XG4gICAgICAgICAgICB1cmxQYXJzaW5nTm9kZS5wYXRobmFtZSA6XG4gICAgICAgICAgICAnLycgKyB1cmxQYXJzaW5nTm9kZS5wYXRobmFtZVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBvcmlnaW5VUkwgPSByZXNvbHZlVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcblxuICAgICAgLyoqXG4gICAgKiBEZXRlcm1pbmUgaWYgYSBVUkwgc2hhcmVzIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgY3VycmVudCBsb2NhdGlvblxuICAgICpcbiAgICAqIEBwYXJhbSB7U3RyaW5nfSByZXF1ZXN0VVJMIFRoZSBVUkwgdG8gdGVzdFxuICAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgVVJMIHNoYXJlcyB0aGUgc2FtZSBvcmlnaW4sIG90aGVyd2lzZSBmYWxzZVxuICAgICovXG4gICAgICByZXR1cm4gZnVuY3Rpb24gaXNVUkxTYW1lT3JpZ2luKHJlcXVlc3RVUkwpIHtcbiAgICAgICAgdmFyIHBhcnNlZCA9ICh1dGlscy5pc1N0cmluZyhyZXF1ZXN0VVJMKSkgPyByZXNvbHZlVVJMKHJlcXVlc3RVUkwpIDogcmVxdWVzdFVSTDtcbiAgICAgICAgcmV0dXJuIChwYXJzZWQucHJvdG9jb2wgPT09IG9yaWdpblVSTC5wcm90b2NvbCAmJlxuICAgICAgICAgICAgcGFyc2VkLmhvc3QgPT09IG9yaWdpblVSTC5ob3N0KTtcbiAgICAgIH07XG4gICAgfSkoKSA6XG5cbiAgLy8gTm9uIHN0YW5kYXJkIGJyb3dzZXIgZW52cyAod2ViIHdvcmtlcnMsIHJlYWN0LW5hdGl2ZSkgbGFjayBuZWVkZWQgc3VwcG9ydC5cbiAgICAoZnVuY3Rpb24gbm9uU3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIGlzVVJMU2FtZU9yaWdpbigpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9O1xuICAgIH0pKClcbik7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbm9ybWFsaXplSGVhZGVyTmFtZShoZWFkZXJzLCBub3JtYWxpemVkTmFtZSkge1xuICB1dGlscy5mb3JFYWNoKGhlYWRlcnMsIGZ1bmN0aW9uIHByb2Nlc3NIZWFkZXIodmFsdWUsIG5hbWUpIHtcbiAgICBpZiAobmFtZSAhPT0gbm9ybWFsaXplZE5hbWUgJiYgbmFtZS50b1VwcGVyQ2FzZSgpID09PSBub3JtYWxpemVkTmFtZS50b1VwcGVyQ2FzZSgpKSB7XG4gICAgICBoZWFkZXJzW25vcm1hbGl6ZWROYW1lXSA9IHZhbHVlO1xuICAgICAgZGVsZXRlIGhlYWRlcnNbbmFtZV07XG4gICAgfVxuICB9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxuLy8gSGVhZGVycyB3aG9zZSBkdXBsaWNhdGVzIGFyZSBpZ25vcmVkIGJ5IG5vZGVcbi8vIGMuZi4gaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9odHRwLmh0bWwjaHR0cF9tZXNzYWdlX2hlYWRlcnNcbnZhciBpZ25vcmVEdXBsaWNhdGVPZiA9IFtcbiAgJ2FnZScsICdhdXRob3JpemF0aW9uJywgJ2NvbnRlbnQtbGVuZ3RoJywgJ2NvbnRlbnQtdHlwZScsICdldGFnJyxcbiAgJ2V4cGlyZXMnLCAnZnJvbScsICdob3N0JywgJ2lmLW1vZGlmaWVkLXNpbmNlJywgJ2lmLXVubW9kaWZpZWQtc2luY2UnLFxuICAnbGFzdC1tb2RpZmllZCcsICdsb2NhdGlvbicsICdtYXgtZm9yd2FyZHMnLCAncHJveHktYXV0aG9yaXphdGlvbicsXG4gICdyZWZlcmVyJywgJ3JldHJ5LWFmdGVyJywgJ3VzZXItYWdlbnQnXG5dO1xuXG4vKipcbiAqIFBhcnNlIGhlYWRlcnMgaW50byBhbiBvYmplY3RcbiAqXG4gKiBgYGBcbiAqIERhdGU6IFdlZCwgMjcgQXVnIDIwMTQgMDg6NTg6NDkgR01UXG4gKiBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb25cbiAqIENvbm5lY3Rpb246IGtlZXAtYWxpdmVcbiAqIFRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaGVhZGVycyBIZWFkZXJzIG5lZWRpbmcgdG8gYmUgcGFyc2VkXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBIZWFkZXJzIHBhcnNlZCBpbnRvIGFuIG9iamVjdFxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHBhcnNlSGVhZGVycyhoZWFkZXJzKSB7XG4gIHZhciBwYXJzZWQgPSB7fTtcbiAgdmFyIGtleTtcbiAgdmFyIHZhbDtcbiAgdmFyIGk7XG5cbiAgaWYgKCFoZWFkZXJzKSB7IHJldHVybiBwYXJzZWQ7IH1cblxuICB1dGlscy5mb3JFYWNoKGhlYWRlcnMuc3BsaXQoJ1xcbicpLCBmdW5jdGlvbiBwYXJzZXIobGluZSkge1xuICAgIGkgPSBsaW5lLmluZGV4T2YoJzonKTtcbiAgICBrZXkgPSB1dGlscy50cmltKGxpbmUuc3Vic3RyKDAsIGkpKS50b0xvd2VyQ2FzZSgpO1xuICAgIHZhbCA9IHV0aWxzLnRyaW0obGluZS5zdWJzdHIoaSArIDEpKTtcblxuICAgIGlmIChrZXkpIHtcbiAgICAgIGlmIChwYXJzZWRba2V5XSAmJiBpZ25vcmVEdXBsaWNhdGVPZi5pbmRleE9mKGtleSkgPj0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoa2V5ID09PSAnc2V0LWNvb2tpZScpIHtcbiAgICAgICAgcGFyc2VkW2tleV0gPSAocGFyc2VkW2tleV0gPyBwYXJzZWRba2V5XSA6IFtdKS5jb25jYXQoW3ZhbF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyc2VkW2tleV0gPSBwYXJzZWRba2V5XSA/IHBhcnNlZFtrZXldICsgJywgJyArIHZhbCA6IHZhbDtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBwYXJzZWQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFN5bnRhY3RpYyBzdWdhciBmb3IgaW52b2tpbmcgYSBmdW5jdGlvbiBhbmQgZXhwYW5kaW5nIGFuIGFycmF5IGZvciBhcmd1bWVudHMuXG4gKlxuICogQ29tbW9uIHVzZSBjYXNlIHdvdWxkIGJlIHRvIHVzZSBgRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5YC5cbiAqXG4gKiAgYGBganNcbiAqICBmdW5jdGlvbiBmKHgsIHksIHopIHt9XG4gKiAgdmFyIGFyZ3MgPSBbMSwgMiwgM107XG4gKiAgZi5hcHBseShudWxsLCBhcmdzKTtcbiAqICBgYGBcbiAqXG4gKiBXaXRoIGBzcHJlYWRgIHRoaXMgZXhhbXBsZSBjYW4gYmUgcmUtd3JpdHRlbi5cbiAqXG4gKiAgYGBganNcbiAqICBzcHJlYWQoZnVuY3Rpb24oeCwgeSwgeikge30pKFsxLCAyLCAzXSk7XG4gKiAgYGBgXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn1cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzcHJlYWQoY2FsbGJhY2spIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHdyYXAoYXJyKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrLmFwcGx5KG51bGwsIGFycik7XG4gIH07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2Vudi9kYXRhJykudmVyc2lvbjtcblxudmFyIHZhbGlkYXRvcnMgPSB7fTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcblsnb2JqZWN0JywgJ2Jvb2xlYW4nLCAnbnVtYmVyJywgJ2Z1bmN0aW9uJywgJ3N0cmluZycsICdzeW1ib2wnXS5mb3JFYWNoKGZ1bmN0aW9uKHR5cGUsIGkpIHtcbiAgdmFsaWRhdG9yc1t0eXBlXSA9IGZ1bmN0aW9uIHZhbGlkYXRvcih0aGluZykge1xuICAgIHJldHVybiB0eXBlb2YgdGhpbmcgPT09IHR5cGUgfHwgJ2EnICsgKGkgPCAxID8gJ24gJyA6ICcgJykgKyB0eXBlO1xuICB9O1xufSk7XG5cbnZhciBkZXByZWNhdGVkV2FybmluZ3MgPSB7fTtcblxuLyoqXG4gKiBUcmFuc2l0aW9uYWwgb3B0aW9uIHZhbGlkYXRvclxuICogQHBhcmFtIHtmdW5jdGlvbnxib29sZWFuP30gdmFsaWRhdG9yIC0gc2V0IHRvIGZhbHNlIGlmIHRoZSB0cmFuc2l0aW9uYWwgb3B0aW9uIGhhcyBiZWVuIHJlbW92ZWRcbiAqIEBwYXJhbSB7c3RyaW5nP30gdmVyc2lvbiAtIGRlcHJlY2F0ZWQgdmVyc2lvbiAvIHJlbW92ZWQgc2luY2UgdmVyc2lvblxuICogQHBhcmFtIHtzdHJpbmc/fSBtZXNzYWdlIC0gc29tZSBtZXNzYWdlIHdpdGggYWRkaXRpb25hbCBpbmZvXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb259XG4gKi9cbnZhbGlkYXRvcnMudHJhbnNpdGlvbmFsID0gZnVuY3Rpb24gdHJhbnNpdGlvbmFsKHZhbGlkYXRvciwgdmVyc2lvbiwgbWVzc2FnZSkge1xuICBmdW5jdGlvbiBmb3JtYXRNZXNzYWdlKG9wdCwgZGVzYykge1xuICAgIHJldHVybiAnW0F4aW9zIHYnICsgVkVSU0lPTiArICddIFRyYW5zaXRpb25hbCBvcHRpb24gXFwnJyArIG9wdCArICdcXCcnICsgZGVzYyArIChtZXNzYWdlID8gJy4gJyArIG1lc3NhZ2UgOiAnJyk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUsIG9wdCwgb3B0cykge1xuICAgIGlmICh2YWxpZGF0b3IgPT09IGZhbHNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoZm9ybWF0TWVzc2FnZShvcHQsICcgaGFzIGJlZW4gcmVtb3ZlZCcgKyAodmVyc2lvbiA/ICcgaW4gJyArIHZlcnNpb24gOiAnJykpKTtcbiAgICB9XG5cbiAgICBpZiAodmVyc2lvbiAmJiAhZGVwcmVjYXRlZFdhcm5pbmdzW29wdF0pIHtcbiAgICAgIGRlcHJlY2F0ZWRXYXJuaW5nc1tvcHRdID0gdHJ1ZTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGZvcm1hdE1lc3NhZ2UoXG4gICAgICAgICAgb3B0LFxuICAgICAgICAgICcgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSB2JyArIHZlcnNpb24gKyAnIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5lYXIgZnV0dXJlJ1xuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0b3IgPyB2YWxpZGF0b3IodmFsdWUsIG9wdCwgb3B0cykgOiB0cnVlO1xuICB9O1xufTtcblxuLyoqXG4gKiBBc3NlcnQgb2JqZWN0J3MgcHJvcGVydGllcyB0eXBlXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9uc1xuICogQHBhcmFtIHtvYmplY3R9IHNjaGVtYVxuICogQHBhcmFtIHtib29sZWFuP30gYWxsb3dVbmtub3duXG4gKi9cblxuZnVuY3Rpb24gYXNzZXJ0T3B0aW9ucyhvcHRpb25zLCBzY2hlbWEsIGFsbG93VW5rbm93bikge1xuICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICB9XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMob3B0aW9ucyk7XG4gIHZhciBpID0ga2V5cy5sZW5ndGg7XG4gIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgdmFyIG9wdCA9IGtleXNbaV07XG4gICAgdmFyIHZhbGlkYXRvciA9IHNjaGVtYVtvcHRdO1xuICAgIGlmICh2YWxpZGF0b3IpIHtcbiAgICAgIHZhciB2YWx1ZSA9IG9wdGlvbnNbb3B0XTtcbiAgICAgIHZhciByZXN1bHQgPSB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbGlkYXRvcih2YWx1ZSwgb3B0LCBvcHRpb25zKTtcbiAgICAgIGlmIChyZXN1bHQgIT09IHRydWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9uICcgKyBvcHQgKyAnIG11c3QgYmUgJyArIHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGFsbG93VW5rbm93biAhPT0gdHJ1ZSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ1Vua25vd24gb3B0aW9uICcgKyBvcHQpO1xuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYXNzZXJ0T3B0aW9uczogYXNzZXJ0T3B0aW9ucyxcbiAgdmFsaWRhdG9yczogdmFsaWRhdG9yc1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGJpbmQgPSByZXF1aXJlKCcuL2hlbHBlcnMvYmluZCcpO1xuXG4vLyB1dGlscyBpcyBhIGxpYnJhcnkgb2YgZ2VuZXJpYyBoZWxwZXIgZnVuY3Rpb25zIG5vbi1zcGVjaWZpYyB0byBheGlvc1xuXG52YXIgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIEFycmF5XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gQXJyYXksIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5KHZhbCkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWwpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIHVuZGVmaW5lZFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB1bmRlZmluZWQsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1VuZGVmaW5lZCh2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICd1bmRlZmluZWQnO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgQnVmZmVyXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBCdWZmZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0J1ZmZlcih2YWwpIHtcbiAgcmV0dXJuIHZhbCAhPT0gbnVsbCAmJiAhaXNVbmRlZmluZWQodmFsKSAmJiB2YWwuY29uc3RydWN0b3IgIT09IG51bGwgJiYgIWlzVW5kZWZpbmVkKHZhbC5jb25zdHJ1Y3RvcilcbiAgICAmJiB0eXBlb2YgdmFsLmNvbnN0cnVjdG9yLmlzQnVmZmVyID09PSAnZnVuY3Rpb24nICYmIHZhbC5jb25zdHJ1Y3Rvci5pc0J1ZmZlcih2YWwpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIEFycmF5QnVmZmVyXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gQXJyYXlCdWZmZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5QnVmZmVyKHZhbCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRm9ybURhdGFcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBGb3JtRGF0YSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRm9ybURhdGEodmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEZvcm1EYXRhXSc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSB2aWV3IG9uIGFuIEFycmF5QnVmZmVyXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSB2aWV3IG9uIGFuIEFycmF5QnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUJ1ZmZlclZpZXcodmFsKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmICgodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJykgJiYgKEFycmF5QnVmZmVyLmlzVmlldykpIHtcbiAgICByZXN1bHQgPSBBcnJheUJ1ZmZlci5pc1ZpZXcodmFsKTtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgPSAodmFsKSAmJiAodmFsLmJ1ZmZlcikgJiYgKGlzQXJyYXlCdWZmZXIodmFsLmJ1ZmZlcikpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBTdHJpbmdcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFN0cmluZywgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3RyaW5nKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZyc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBOdW1iZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIE51bWJlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTnVtYmVyKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ251bWJlcic7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gT2JqZWN0XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gT2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QodmFsKSB7XG4gIHJldHVybiB2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBwbGFpbiBPYmplY3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgcGxhaW4gT2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWwpIHtcbiAgaWYgKHRvU3RyaW5nLmNhbGwodmFsKSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbCk7XG4gIHJldHVybiBwcm90b3R5cGUgPT09IG51bGwgfHwgcHJvdG90eXBlID09PSBPYmplY3QucHJvdG90eXBlO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRGF0ZVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRGF0ZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRGF0ZSh2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRmlsZVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRmlsZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRmlsZSh2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgRmlsZV0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgQmxvYlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgQmxvYiwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQmxvYih2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgQmxvYl0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRnVuY3Rpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEZ1bmN0aW9uLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFN0cmVhbVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgU3RyZWFtLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJlYW0odmFsKSB7XG4gIHJldHVybiBpc09iamVjdCh2YWwpICYmIGlzRnVuY3Rpb24odmFsLnBpcGUpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzVVJMU2VhcmNoUGFyYW1zKHZhbCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBVUkxTZWFyY2hQYXJhbXNdJztcbn1cblxuLyoqXG4gKiBUcmltIGV4Y2VzcyB3aGl0ZXNwYWNlIG9mZiB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgYSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyIFRoZSBTdHJpbmcgdG8gdHJpbVxuICogQHJldHVybnMge1N0cmluZ30gVGhlIFN0cmluZyBmcmVlZCBvZiBleGNlc3Mgd2hpdGVzcGFjZVxuICovXG5mdW5jdGlvbiB0cmltKHN0cikge1xuICByZXR1cm4gc3RyLnRyaW0gPyBzdHIudHJpbSgpIDogc3RyLnJlcGxhY2UoL15cXHMrfFxccyskL2csICcnKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgd2UncmUgcnVubmluZyBpbiBhIHN0YW5kYXJkIGJyb3dzZXIgZW52aXJvbm1lbnRcbiAqXG4gKiBUaGlzIGFsbG93cyBheGlvcyB0byBydW4gaW4gYSB3ZWIgd29ya2VyLCBhbmQgcmVhY3QtbmF0aXZlLlxuICogQm90aCBlbnZpcm9ubWVudHMgc3VwcG9ydCBYTUxIdHRwUmVxdWVzdCwgYnV0IG5vdCBmdWxseSBzdGFuZGFyZCBnbG9iYWxzLlxuICpcbiAqIHdlYiB3b3JrZXJzOlxuICogIHR5cGVvZiB3aW5kb3cgLT4gdW5kZWZpbmVkXG4gKiAgdHlwZW9mIGRvY3VtZW50IC0+IHVuZGVmaW5lZFxuICpcbiAqIHJlYWN0LW5hdGl2ZTpcbiAqICBuYXZpZ2F0b3IucHJvZHVjdCAtPiAnUmVhY3ROYXRpdmUnXG4gKiBuYXRpdmVzY3JpcHRcbiAqICBuYXZpZ2F0b3IucHJvZHVjdCAtPiAnTmF0aXZlU2NyaXB0JyBvciAnTlMnXG4gKi9cbmZ1bmN0aW9uIGlzU3RhbmRhcmRCcm93c2VyRW52KCkge1xuICBpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgKG5hdmlnYXRvci5wcm9kdWN0ID09PSAnUmVhY3ROYXRpdmUnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLnByb2R1Y3QgPT09ICdOYXRpdmVTY3JpcHQnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLnByb2R1Y3QgPT09ICdOUycpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnXG4gICk7XG59XG5cbi8qKlxuICogSXRlcmF0ZSBvdmVyIGFuIEFycmF5IG9yIGFuIE9iamVjdCBpbnZva2luZyBhIGZ1bmN0aW9uIGZvciBlYWNoIGl0ZW0uXG4gKlxuICogSWYgYG9iamAgaXMgYW4gQXJyYXkgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgcGFzc2luZ1xuICogdGhlIHZhbHVlLCBpbmRleCwgYW5kIGNvbXBsZXRlIGFycmF5IGZvciBlYWNoIGl0ZW0uXG4gKlxuICogSWYgJ29iaicgaXMgYW4gT2JqZWN0IGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIHBhc3NpbmdcbiAqIHRoZSB2YWx1ZSwga2V5LCBhbmQgY29tcGxldGUgb2JqZWN0IGZvciBlYWNoIHByb3BlcnR5LlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fEFycmF5fSBvYmogVGhlIG9iamVjdCB0byBpdGVyYXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgY2FsbGJhY2sgdG8gaW52b2tlIGZvciBlYWNoIGl0ZW1cbiAqL1xuZnVuY3Rpb24gZm9yRWFjaChvYmosIGZuKSB7XG4gIC8vIERvbid0IGJvdGhlciBpZiBubyB2YWx1ZSBwcm92aWRlZFxuICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRm9yY2UgYW4gYXJyYXkgaWYgbm90IGFscmVhZHkgc29tZXRoaW5nIGl0ZXJhYmxlXG4gIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xuICAgIG9iaiA9IFtvYmpdO1xuICB9XG5cbiAgaWYgKGlzQXJyYXkob2JqKSkge1xuICAgIC8vIEl0ZXJhdGUgb3ZlciBhcnJheSB2YWx1ZXNcbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IG9iai5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGZuLmNhbGwobnVsbCwgb2JqW2ldLCBpLCBvYmopO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBJdGVyYXRlIG92ZXIgb2JqZWN0IGtleXNcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICBmbi5jYWxsKG51bGwsIG9ialtrZXldLCBrZXksIG9iaik7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQWNjZXB0cyB2YXJhcmdzIGV4cGVjdGluZyBlYWNoIGFyZ3VtZW50IHRvIGJlIGFuIG9iamVjdCwgdGhlblxuICogaW1tdXRhYmx5IG1lcmdlcyB0aGUgcHJvcGVydGllcyBvZiBlYWNoIG9iamVjdCBhbmQgcmV0dXJucyByZXN1bHQuXG4gKlxuICogV2hlbiBtdWx0aXBsZSBvYmplY3RzIGNvbnRhaW4gdGhlIHNhbWUga2V5IHRoZSBsYXRlciBvYmplY3QgaW5cbiAqIHRoZSBhcmd1bWVudHMgbGlzdCB3aWxsIHRha2UgcHJlY2VkZW5jZS5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYGpzXG4gKiB2YXIgcmVzdWx0ID0gbWVyZ2Uoe2ZvbzogMTIzfSwge2ZvbzogNDU2fSk7XG4gKiBjb25zb2xlLmxvZyhyZXN1bHQuZm9vKTsgLy8gb3V0cHV0cyA0NTZcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmoxIE9iamVjdCB0byBtZXJnZVxuICogQHJldHVybnMge09iamVjdH0gUmVzdWx0IG9mIGFsbCBtZXJnZSBwcm9wZXJ0aWVzXG4gKi9cbmZ1bmN0aW9uIG1lcmdlKC8qIG9iajEsIG9iajIsIG9iajMsIC4uLiAqLykge1xuICB2YXIgcmVzdWx0ID0ge307XG4gIGZ1bmN0aW9uIGFzc2lnblZhbHVlKHZhbCwga2V5KSB7XG4gICAgaWYgKGlzUGxhaW5PYmplY3QocmVzdWx0W2tleV0pICYmIGlzUGxhaW5PYmplY3QodmFsKSkge1xuICAgICAgcmVzdWx0W2tleV0gPSBtZXJnZShyZXN1bHRba2V5XSwgdmFsKTtcbiAgICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QodmFsKSkge1xuICAgICAgcmVzdWx0W2tleV0gPSBtZXJnZSh7fSwgdmFsKTtcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsKSkge1xuICAgICAgcmVzdWx0W2tleV0gPSB2YWwuc2xpY2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0W2tleV0gPSB2YWw7XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgZm9yRWFjaChhcmd1bWVudHNbaV0sIGFzc2lnblZhbHVlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEV4dGVuZHMgb2JqZWN0IGEgYnkgbXV0YWJseSBhZGRpbmcgdG8gaXQgdGhlIHByb3BlcnRpZXMgb2Ygb2JqZWN0IGIuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGEgVGhlIG9iamVjdCB0byBiZSBleHRlbmRlZFxuICogQHBhcmFtIHtPYmplY3R9IGIgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbVxuICogQHBhcmFtIHtPYmplY3R9IHRoaXNBcmcgVGhlIG9iamVjdCB0byBiaW5kIGZ1bmN0aW9uIHRvXG4gKiBAcmV0dXJuIHtPYmplY3R9IFRoZSByZXN1bHRpbmcgdmFsdWUgb2Ygb2JqZWN0IGFcbiAqL1xuZnVuY3Rpb24gZXh0ZW5kKGEsIGIsIHRoaXNBcmcpIHtcbiAgZm9yRWFjaChiLCBmdW5jdGlvbiBhc3NpZ25WYWx1ZSh2YWwsIGtleSkge1xuICAgIGlmICh0aGlzQXJnICYmIHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGFba2V5XSA9IGJpbmQodmFsLCB0aGlzQXJnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYVtrZXldID0gdmFsO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBhO1xufVxuXG4vKipcbiAqIFJlbW92ZSBieXRlIG9yZGVyIG1hcmtlci4gVGhpcyBjYXRjaGVzIEVGIEJCIEJGICh0aGUgVVRGLTggQk9NKVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IHdpdGggQk9NXG4gKiBAcmV0dXJuIHtzdHJpbmd9IGNvbnRlbnQgdmFsdWUgd2l0aG91dCBCT01cbiAqL1xuZnVuY3Rpb24gc3RyaXBCT00oY29udGVudCkge1xuICBpZiAoY29udGVudC5jaGFyQ29kZUF0KDApID09PSAweEZFRkYpIHtcbiAgICBjb250ZW50ID0gY29udGVudC5zbGljZSgxKTtcbiAgfVxuICByZXR1cm4gY29udGVudDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGlzQXJyYXk6IGlzQXJyYXksXG4gIGlzQXJyYXlCdWZmZXI6IGlzQXJyYXlCdWZmZXIsXG4gIGlzQnVmZmVyOiBpc0J1ZmZlcixcbiAgaXNGb3JtRGF0YTogaXNGb3JtRGF0YSxcbiAgaXNBcnJheUJ1ZmZlclZpZXc6IGlzQXJyYXlCdWZmZXJWaWV3LFxuICBpc1N0cmluZzogaXNTdHJpbmcsXG4gIGlzTnVtYmVyOiBpc051bWJlcixcbiAgaXNPYmplY3Q6IGlzT2JqZWN0LFxuICBpc1BsYWluT2JqZWN0OiBpc1BsYWluT2JqZWN0LFxuICBpc1VuZGVmaW5lZDogaXNVbmRlZmluZWQsXG4gIGlzRGF0ZTogaXNEYXRlLFxuICBpc0ZpbGU6IGlzRmlsZSxcbiAgaXNCbG9iOiBpc0Jsb2IsXG4gIGlzRnVuY3Rpb246IGlzRnVuY3Rpb24sXG4gIGlzU3RyZWFtOiBpc1N0cmVhbSxcbiAgaXNVUkxTZWFyY2hQYXJhbXM6IGlzVVJMU2VhcmNoUGFyYW1zLFxuICBpc1N0YW5kYXJkQnJvd3NlckVudjogaXNTdGFuZGFyZEJyb3dzZXJFbnYsXG4gIGZvckVhY2g6IGZvckVhY2gsXG4gIG1lcmdlOiBtZXJnZSxcbiAgZXh0ZW5kOiBleHRlbmQsXG4gIHRyaW06IHRyaW0sXG4gIHN0cmlwQk9NOiBzdHJpcEJPTVxufTtcbiIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9lbmMtYmFzZTY0XCIpLCByZXF1aXJlKFwiLi9tZDVcIiksIHJlcXVpcmUoXCIuL2V2cGtkZlwiKSwgcmVxdWlyZShcIi4vY2lwaGVyLWNvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4vZW5jLWJhc2U2NFwiLCBcIi4vbWQ1XCIsIFwiLi9ldnBrZGZcIiwgXCIuL2NpcGhlci1jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfbGliID0gQy5saWI7XG5cdCAgICB2YXIgQmxvY2tDaXBoZXIgPSBDX2xpYi5CbG9ja0NpcGhlcjtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cblx0ICAgIC8vIExvb2t1cCB0YWJsZXNcblx0ICAgIHZhciBTQk9YID0gW107XG5cdCAgICB2YXIgSU5WX1NCT1ggPSBbXTtcblx0ICAgIHZhciBTVUJfTUlYXzAgPSBbXTtcblx0ICAgIHZhciBTVUJfTUlYXzEgPSBbXTtcblx0ICAgIHZhciBTVUJfTUlYXzIgPSBbXTtcblx0ICAgIHZhciBTVUJfTUlYXzMgPSBbXTtcblx0ICAgIHZhciBJTlZfU1VCX01JWF8wID0gW107XG5cdCAgICB2YXIgSU5WX1NVQl9NSVhfMSA9IFtdO1xuXHQgICAgdmFyIElOVl9TVUJfTUlYXzIgPSBbXTtcblx0ICAgIHZhciBJTlZfU1VCX01JWF8zID0gW107XG5cblx0ICAgIC8vIENvbXB1dGUgbG9va3VwIHRhYmxlc1xuXHQgICAgKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAvLyBDb21wdXRlIGRvdWJsZSB0YWJsZVxuXHQgICAgICAgIHZhciBkID0gW107XG5cdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7IGkrKykge1xuXHQgICAgICAgICAgICBpZiAoaSA8IDEyOCkge1xuXHQgICAgICAgICAgICAgICAgZFtpXSA9IGkgPDwgMTtcblx0ICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIGRbaV0gPSAoaSA8PCAxKSBeIDB4MTFiO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgLy8gV2FsayBHRigyXjgpXG5cdCAgICAgICAgdmFyIHggPSAwO1xuXHQgICAgICAgIHZhciB4aSA9IDA7XG5cdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7IGkrKykge1xuXHQgICAgICAgICAgICAvLyBDb21wdXRlIHNib3hcblx0ICAgICAgICAgICAgdmFyIHN4ID0geGkgXiAoeGkgPDwgMSkgXiAoeGkgPDwgMikgXiAoeGkgPDwgMykgXiAoeGkgPDwgNCk7XG5cdCAgICAgICAgICAgIHN4ID0gKHN4ID4+PiA4KSBeIChzeCAmIDB4ZmYpIF4gMHg2Mztcblx0ICAgICAgICAgICAgU0JPWFt4XSA9IHN4O1xuXHQgICAgICAgICAgICBJTlZfU0JPWFtzeF0gPSB4O1xuXG5cdCAgICAgICAgICAgIC8vIENvbXB1dGUgbXVsdGlwbGljYXRpb25cblx0ICAgICAgICAgICAgdmFyIHgyID0gZFt4XTtcblx0ICAgICAgICAgICAgdmFyIHg0ID0gZFt4Ml07XG5cdCAgICAgICAgICAgIHZhciB4OCA9IGRbeDRdO1xuXG5cdCAgICAgICAgICAgIC8vIENvbXB1dGUgc3ViIGJ5dGVzLCBtaXggY29sdW1ucyB0YWJsZXNcblx0ICAgICAgICAgICAgdmFyIHQgPSAoZFtzeF0gKiAweDEwMSkgXiAoc3ggKiAweDEwMTAxMDApO1xuXHQgICAgICAgICAgICBTVUJfTUlYXzBbeF0gPSAodCA8PCAyNCkgfCAodCA+Pj4gOCk7XG5cdCAgICAgICAgICAgIFNVQl9NSVhfMVt4XSA9ICh0IDw8IDE2KSB8ICh0ID4+PiAxNik7XG5cdCAgICAgICAgICAgIFNVQl9NSVhfMlt4XSA9ICh0IDw8IDgpICB8ICh0ID4+PiAyNCk7XG5cdCAgICAgICAgICAgIFNVQl9NSVhfM1t4XSA9IHQ7XG5cblx0ICAgICAgICAgICAgLy8gQ29tcHV0ZSBpbnYgc3ViIGJ5dGVzLCBpbnYgbWl4IGNvbHVtbnMgdGFibGVzXG5cdCAgICAgICAgICAgIHZhciB0ID0gKHg4ICogMHgxMDEwMTAxKSBeICh4NCAqIDB4MTAwMDEpIF4gKHgyICogMHgxMDEpIF4gKHggKiAweDEwMTAxMDApO1xuXHQgICAgICAgICAgICBJTlZfU1VCX01JWF8wW3N4XSA9ICh0IDw8IDI0KSB8ICh0ID4+PiA4KTtcblx0ICAgICAgICAgICAgSU5WX1NVQl9NSVhfMVtzeF0gPSAodCA8PCAxNikgfCAodCA+Pj4gMTYpO1xuXHQgICAgICAgICAgICBJTlZfU1VCX01JWF8yW3N4XSA9ICh0IDw8IDgpICB8ICh0ID4+PiAyNCk7XG5cdCAgICAgICAgICAgIElOVl9TVUJfTUlYXzNbc3hdID0gdDtcblxuXHQgICAgICAgICAgICAvLyBDb21wdXRlIG5leHQgY291bnRlclxuXHQgICAgICAgICAgICBpZiAoIXgpIHtcblx0ICAgICAgICAgICAgICAgIHggPSB4aSA9IDE7XG5cdCAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICB4ID0geDIgXiBkW2RbZFt4OCBeIHgyXV1dO1xuXHQgICAgICAgICAgICAgICAgeGkgXj0gZFtkW3hpXV07XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICB9KCkpO1xuXG5cdCAgICAvLyBQcmVjb21wdXRlZCBSY29uIGxvb2t1cFxuXHQgICAgdmFyIFJDT04gPSBbMHgwMCwgMHgwMSwgMHgwMiwgMHgwNCwgMHgwOCwgMHgxMCwgMHgyMCwgMHg0MCwgMHg4MCwgMHgxYiwgMHgzNl07XG5cblx0ICAgIC8qKlxuXHQgICAgICogQUVTIGJsb2NrIGNpcGhlciBhbGdvcml0aG0uXG5cdCAgICAgKi9cblx0ICAgIHZhciBBRVMgPSBDX2FsZ28uQUVTID0gQmxvY2tDaXBoZXIuZXh0ZW5kKHtcblx0ICAgICAgICBfZG9SZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB2YXIgdDtcblxuXHQgICAgICAgICAgICAvLyBTa2lwIHJlc2V0IG9mIG5Sb3VuZHMgaGFzIGJlZW4gc2V0IGJlZm9yZSBhbmQga2V5IGRpZCBub3QgY2hhbmdlXG5cdCAgICAgICAgICAgIGlmICh0aGlzLl9uUm91bmRzICYmIHRoaXMuX2tleVByaW9yUmVzZXQgPT09IHRoaXMuX2tleSkge1xuXHQgICAgICAgICAgICAgICAgcmV0dXJuO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBrZXkgPSB0aGlzLl9rZXlQcmlvclJlc2V0ID0gdGhpcy5fa2V5O1xuXHQgICAgICAgICAgICB2YXIga2V5V29yZHMgPSBrZXkud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBrZXlTaXplID0ga2V5LnNpZ0J5dGVzIC8gNDtcblxuXHQgICAgICAgICAgICAvLyBDb21wdXRlIG51bWJlciBvZiByb3VuZHNcblx0ICAgICAgICAgICAgdmFyIG5Sb3VuZHMgPSB0aGlzLl9uUm91bmRzID0ga2V5U2l6ZSArIDY7XG5cblx0ICAgICAgICAgICAgLy8gQ29tcHV0ZSBudW1iZXIgb2Yga2V5IHNjaGVkdWxlIHJvd3Ncblx0ICAgICAgICAgICAgdmFyIGtzUm93cyA9IChuUm91bmRzICsgMSkgKiA0O1xuXG5cdCAgICAgICAgICAgIC8vIENvbXB1dGUga2V5IHNjaGVkdWxlXG5cdCAgICAgICAgICAgIHZhciBrZXlTY2hlZHVsZSA9IHRoaXMuX2tleVNjaGVkdWxlID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIGtzUm93ID0gMDsga3NSb3cgPCBrc1Jvd3M7IGtzUm93KyspIHtcblx0ICAgICAgICAgICAgICAgIGlmIChrc1JvdyA8IGtleVNpemUpIHtcblx0ICAgICAgICAgICAgICAgICAgICBrZXlTY2hlZHVsZVtrc1Jvd10gPSBrZXlXb3Jkc1trc1Jvd107XG5cdCAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgICAgIHQgPSBrZXlTY2hlZHVsZVtrc1JvdyAtIDFdO1xuXG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKCEoa3NSb3cgJSBrZXlTaXplKSkge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAvLyBSb3Qgd29yZFxuXHQgICAgICAgICAgICAgICAgICAgICAgICB0ID0gKHQgPDwgOCkgfCAodCA+Pj4gMjQpO1xuXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1YiB3b3JkXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAoU0JPWFt0ID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHQgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8IChTQk9YWyh0ID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgU0JPWFt0ICYgMHhmZl07XG5cblx0ICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWl4IFJjb25cblx0ICAgICAgICAgICAgICAgICAgICAgICAgdCBePSBSQ09OWyhrc1JvdyAvIGtleVNpemUpIHwgMF0gPDwgMjQ7XG5cdCAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXlTaXplID4gNiAmJiBrc1JvdyAlIGtleVNpemUgPT0gNCkge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdWIgd29yZFxuXHQgICAgICAgICAgICAgICAgICAgICAgICB0ID0gKFNCT1hbdCA+Pj4gMjRdIDw8IDI0KSB8IChTQk9YWyh0ID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsodCA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IFNCT1hbdCAmIDB4ZmZdO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgICAgIGtleVNjaGVkdWxlW2tzUm93XSA9IGtleVNjaGVkdWxlW2tzUm93IC0ga2V5U2l6ZV0gXiB0O1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gQ29tcHV0ZSBpbnYga2V5IHNjaGVkdWxlXG5cdCAgICAgICAgICAgIHZhciBpbnZLZXlTY2hlZHVsZSA9IHRoaXMuX2ludktleVNjaGVkdWxlID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIGludktzUm93ID0gMDsgaW52S3NSb3cgPCBrc1Jvd3M7IGludktzUm93KyspIHtcblx0ICAgICAgICAgICAgICAgIHZhciBrc1JvdyA9IGtzUm93cyAtIGludktzUm93O1xuXG5cdCAgICAgICAgICAgICAgICBpZiAoaW52S3NSb3cgJSA0KSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBrZXlTY2hlZHVsZVtrc1Jvd107XG5cdCAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciB0ID0ga2V5U2NoZWR1bGVba3NSb3cgLSA0XTtcblx0ICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgaWYgKGludktzUm93IDwgNCB8fCBrc1JvdyA8PSA0KSB7XG5cdCAgICAgICAgICAgICAgICAgICAgaW52S2V5U2NoZWR1bGVbaW52S3NSb3ddID0gdDtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgICAgaW52S2V5U2NoZWR1bGVbaW52S3NSb3ddID0gSU5WX1NVQl9NSVhfMFtTQk9YW3QgPj4+IDI0XV0gXiBJTlZfU1VCX01JWF8xW1NCT1hbKHQgPj4+IDE2KSAmIDB4ZmZdXSBeXG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5WX1NVQl9NSVhfMltTQk9YWyh0ID4+PiA4KSAmIDB4ZmZdXSBeIElOVl9TVUJfTUlYXzNbU0JPWFt0ICYgMHhmZl1dO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGVuY3J5cHRCbG9jazogZnVuY3Rpb24gKE0sIG9mZnNldCkge1xuXHQgICAgICAgICAgICB0aGlzLl9kb0NyeXB0QmxvY2soTSwgb2Zmc2V0LCB0aGlzLl9rZXlTY2hlZHVsZSwgU1VCX01JWF8wLCBTVUJfTUlYXzEsIFNVQl9NSVhfMiwgU1VCX01JWF8zLCBTQk9YKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgZGVjcnlwdEJsb2NrOiBmdW5jdGlvbiAoTSwgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIC8vIFN3YXAgMm5kIGFuZCA0dGggcm93c1xuXHQgICAgICAgICAgICB2YXIgdCA9IE1bb2Zmc2V0ICsgMV07XG5cdCAgICAgICAgICAgIE1bb2Zmc2V0ICsgMV0gPSBNW29mZnNldCArIDNdO1xuXHQgICAgICAgICAgICBNW29mZnNldCArIDNdID0gdDtcblxuXHQgICAgICAgICAgICB0aGlzLl9kb0NyeXB0QmxvY2soTSwgb2Zmc2V0LCB0aGlzLl9pbnZLZXlTY2hlZHVsZSwgSU5WX1NVQl9NSVhfMCwgSU5WX1NVQl9NSVhfMSwgSU5WX1NVQl9NSVhfMiwgSU5WX1NVQl9NSVhfMywgSU5WX1NCT1gpO1xuXG5cdCAgICAgICAgICAgIC8vIEludiBzd2FwIDJuZCBhbmQgNHRoIHJvd3Ncblx0ICAgICAgICAgICAgdmFyIHQgPSBNW29mZnNldCArIDFdO1xuXHQgICAgICAgICAgICBNW29mZnNldCArIDFdID0gTVtvZmZzZXQgKyAzXTtcblx0ICAgICAgICAgICAgTVtvZmZzZXQgKyAzXSA9IHQ7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb0NyeXB0QmxvY2s6IGZ1bmN0aW9uIChNLCBvZmZzZXQsIGtleVNjaGVkdWxlLCBTVUJfTUlYXzAsIFNVQl9NSVhfMSwgU1VCX01JWF8yLCBTVUJfTUlYXzMsIFNCT1gpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIG5Sb3VuZHMgPSB0aGlzLl9uUm91bmRzO1xuXG5cdCAgICAgICAgICAgIC8vIEdldCBpbnB1dCwgYWRkIHJvdW5kIGtleVxuXHQgICAgICAgICAgICB2YXIgczAgPSBNW29mZnNldF0gICAgIF4ga2V5U2NoZWR1bGVbMF07XG5cdCAgICAgICAgICAgIHZhciBzMSA9IE1bb2Zmc2V0ICsgMV0gXiBrZXlTY2hlZHVsZVsxXTtcblx0ICAgICAgICAgICAgdmFyIHMyID0gTVtvZmZzZXQgKyAyXSBeIGtleVNjaGVkdWxlWzJdO1xuXHQgICAgICAgICAgICB2YXIgczMgPSBNW29mZnNldCArIDNdIF4ga2V5U2NoZWR1bGVbM107XG5cblx0ICAgICAgICAgICAgLy8gS2V5IHNjaGVkdWxlIHJvdyBjb3VudGVyXG5cdCAgICAgICAgICAgIHZhciBrc1JvdyA9IDQ7XG5cblx0ICAgICAgICAgICAgLy8gUm91bmRzXG5cdCAgICAgICAgICAgIGZvciAodmFyIHJvdW5kID0gMTsgcm91bmQgPCBuUm91bmRzOyByb3VuZCsrKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBTaGlmdCByb3dzLCBzdWIgYnl0ZXMsIG1peCBjb2x1bW5zLCBhZGQgcm91bmQga2V5XG5cdCAgICAgICAgICAgICAgICB2YXIgdDAgPSBTVUJfTUlYXzBbczAgPj4+IDI0XSBeIFNVQl9NSVhfMVsoczEgPj4+IDE2KSAmIDB4ZmZdIF4gU1VCX01JWF8yWyhzMiA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhfM1tzMyAmIDB4ZmZdIF4ga2V5U2NoZWR1bGVba3NSb3crK107XG5cdCAgICAgICAgICAgICAgICB2YXIgdDEgPSBTVUJfTUlYXzBbczEgPj4+IDI0XSBeIFNVQl9NSVhfMVsoczIgPj4+IDE2KSAmIDB4ZmZdIF4gU1VCX01JWF8yWyhzMyA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhfM1tzMCAmIDB4ZmZdIF4ga2V5U2NoZWR1bGVba3NSb3crK107XG5cdCAgICAgICAgICAgICAgICB2YXIgdDIgPSBTVUJfTUlYXzBbczIgPj4+IDI0XSBeIFNVQl9NSVhfMVsoczMgPj4+IDE2KSAmIDB4ZmZdIF4gU1VCX01JWF8yWyhzMCA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhfM1tzMSAmIDB4ZmZdIF4ga2V5U2NoZWR1bGVba3NSb3crK107XG5cdCAgICAgICAgICAgICAgICB2YXIgdDMgPSBTVUJfTUlYXzBbczMgPj4+IDI0XSBeIFNVQl9NSVhfMVsoczAgPj4+IDE2KSAmIDB4ZmZdIF4gU1VCX01JWF8yWyhzMSA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhfM1tzMiAmIDB4ZmZdIF4ga2V5U2NoZWR1bGVba3NSb3crK107XG5cblx0ICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBzdGF0ZVxuXHQgICAgICAgICAgICAgICAgczAgPSB0MDtcblx0ICAgICAgICAgICAgICAgIHMxID0gdDE7XG5cdCAgICAgICAgICAgICAgICBzMiA9IHQyO1xuXHQgICAgICAgICAgICAgICAgczMgPSB0Mztcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIFNoaWZ0IHJvd3MsIHN1YiBieXRlcywgYWRkIHJvdW5kIGtleVxuXHQgICAgICAgICAgICB2YXIgdDAgPSAoKFNCT1hbczAgPj4+IDI0XSA8PCAyNCkgfCAoU0JPWFsoczEgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8IChTQk9YWyhzMiA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IFNCT1hbczMgJiAweGZmXSkgXiBrZXlTY2hlZHVsZVtrc1JvdysrXTtcblx0ICAgICAgICAgICAgdmFyIHQxID0gKChTQk9YW3MxID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMyID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczMgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MwICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK107XG5cdCAgICAgICAgICAgIHZhciB0MiA9ICgoU0JPWFtzMiA+Pj4gMjRdIDw8IDI0KSB8IChTQk9YWyhzMyA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKFNCT1hbKHMwID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgU0JPWFtzMSAmIDB4ZmZdKSBeIGtleVNjaGVkdWxlW2tzUm93KytdO1xuXHQgICAgICAgICAgICB2YXIgdDMgPSAoKFNCT1hbczMgPj4+IDI0XSA8PCAyNCkgfCAoU0JPWFsoczAgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8IChTQk9YWyhzMSA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IFNCT1hbczIgJiAweGZmXSkgXiBrZXlTY2hlZHVsZVtrc1JvdysrXTtcblxuXHQgICAgICAgICAgICAvLyBTZXQgb3V0cHV0XG5cdCAgICAgICAgICAgIE1bb2Zmc2V0XSAgICAgPSB0MDtcblx0ICAgICAgICAgICAgTVtvZmZzZXQgKyAxXSA9IHQxO1xuXHQgICAgICAgICAgICBNW29mZnNldCArIDJdID0gdDI7XG5cdCAgICAgICAgICAgIE1bb2Zmc2V0ICsgM10gPSB0Mztcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAga2V5U2l6ZTogMjU2LzMyXG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbnMgdG8gdGhlIGNpcGhlcidzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGNpcGhlcnRleHQgPSBDcnlwdG9KUy5BRVMuZW5jcnlwdChtZXNzYWdlLCBrZXksIGNmZyk7XG5cdCAgICAgKiAgICAgdmFyIHBsYWludGV4dCAgPSBDcnlwdG9KUy5BRVMuZGVjcnlwdChjaXBoZXJ0ZXh0LCBrZXksIGNmZyk7XG5cdCAgICAgKi9cblx0ICAgIEMuQUVTID0gQmxvY2tDaXBoZXIuX2NyZWF0ZUhlbHBlcihBRVMpO1xuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLkFFUztcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9ldnBrZGZcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4vZXZwa2RmXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQvKipcblx0ICogQ2lwaGVyIGNvcmUgY29tcG9uZW50cy5cblx0ICovXG5cdENyeXB0b0pTLmxpYi5DaXBoZXIgfHwgKGZ1bmN0aW9uICh1bmRlZmluZWQpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIEJhc2UgPSBDX2xpYi5CYXNlO1xuXHQgICAgdmFyIFdvcmRBcnJheSA9IENfbGliLldvcmRBcnJheTtcblx0ICAgIHZhciBCdWZmZXJlZEJsb2NrQWxnb3JpdGhtID0gQ19saWIuQnVmZmVyZWRCbG9ja0FsZ29yaXRobTtcblx0ICAgIHZhciBDX2VuYyA9IEMuZW5jO1xuXHQgICAgdmFyIFV0ZjggPSBDX2VuYy5VdGY4O1xuXHQgICAgdmFyIEJhc2U2NCA9IENfZW5jLkJhc2U2NDtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cdCAgICB2YXIgRXZwS0RGID0gQ19hbGdvLkV2cEtERjtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBBYnN0cmFjdCBiYXNlIGNpcGhlciB0ZW1wbGF0ZS5cblx0ICAgICAqXG5cdCAgICAgKiBAcHJvcGVydHkge251bWJlcn0ga2V5U2l6ZSBUaGlzIGNpcGhlcidzIGtleSBzaXplLiBEZWZhdWx0OiA0ICgxMjggYml0cylcblx0ICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBpdlNpemUgVGhpcyBjaXBoZXIncyBJViBzaXplLiBEZWZhdWx0OiA0ICgxMjggYml0cylcblx0ICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBfRU5DX1hGT1JNX01PREUgQSBjb25zdGFudCByZXByZXNlbnRpbmcgZW5jcnlwdGlvbiBtb2RlLlxuXHQgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IF9ERUNfWEZPUk1fTU9ERSBBIGNvbnN0YW50IHJlcHJlc2VudGluZyBkZWNyeXB0aW9uIG1vZGUuXG5cdCAgICAgKi9cblx0ICAgIHZhciBDaXBoZXIgPSBDX2xpYi5DaXBoZXIgPSBCdWZmZXJlZEJsb2NrQWxnb3JpdGhtLmV4dGVuZCh7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29uZmlndXJhdGlvbiBvcHRpb25zLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHByb3BlcnR5IHtXb3JkQXJyYXl9IGl2IFRoZSBJViB0byB1c2UgZm9yIHRoaXMgb3BlcmF0aW9uLlxuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNmZzogQmFzZS5leHRlbmQoKSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENyZWF0ZXMgdGhpcyBjaXBoZXIgaW4gZW5jcnlwdGlvbiBtb2RlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl9IGtleSBUaGUga2V5LlxuXHQgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcgKE9wdGlvbmFsKSBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHVzZSBmb3IgdGhpcyBvcGVyYXRpb24uXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtDaXBoZXJ9IEEgY2lwaGVyIGluc3RhbmNlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgY2lwaGVyID0gQ3J5cHRvSlMuYWxnby5BRVMuY3JlYXRlRW5jcnlwdG9yKGtleVdvcmRBcnJheSwgeyBpdjogaXZXb3JkQXJyYXkgfSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgY3JlYXRlRW5jcnlwdG9yOiBmdW5jdGlvbiAoa2V5LCBjZmcpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlKHRoaXMuX0VOQ19YRk9STV9NT0RFLCBrZXksIGNmZyk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENyZWF0ZXMgdGhpcyBjaXBoZXIgaW4gZGVjcnlwdGlvbiBtb2RlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl9IGtleSBUaGUga2V5LlxuXHQgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcgKE9wdGlvbmFsKSBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHVzZSBmb3IgdGhpcyBvcGVyYXRpb24uXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtDaXBoZXJ9IEEgY2lwaGVyIGluc3RhbmNlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgY2lwaGVyID0gQ3J5cHRvSlMuYWxnby5BRVMuY3JlYXRlRGVjcnlwdG9yKGtleVdvcmRBcnJheSwgeyBpdjogaXZXb3JkQXJyYXkgfSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgY3JlYXRlRGVjcnlwdG9yOiBmdW5jdGlvbiAoa2V5LCBjZmcpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlKHRoaXMuX0RFQ19YRk9STV9NT0RFLCBrZXksIGNmZyk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEluaXRpYWxpemVzIGEgbmV3bHkgY3JlYXRlZCBjaXBoZXIuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0geGZvcm1Nb2RlIEVpdGhlciB0aGUgZW5jcnlwdGlvbiBvciBkZWNyeXB0aW9uIHRyYW5zb3JtYXRpb24gbW9kZSBjb25zdGFudC5cblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheX0ga2V5IFRoZSBrZXkuXG5cdCAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGNmZyAoT3B0aW9uYWwpIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdXNlIGZvciB0aGlzIG9wZXJhdGlvbi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGNpcGhlciA9IENyeXB0b0pTLmFsZ28uQUVTLmNyZWF0ZShDcnlwdG9KUy5hbGdvLkFFUy5fRU5DX1hGT1JNX01PREUsIGtleVdvcmRBcnJheSwgeyBpdjogaXZXb3JkQXJyYXkgfSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgaW5pdDogZnVuY3Rpb24gKHhmb3JtTW9kZSwga2V5LCBjZmcpIHtcblx0ICAgICAgICAgICAgLy8gQXBwbHkgY29uZmlnIGRlZmF1bHRzXG5cdCAgICAgICAgICAgIHRoaXMuY2ZnID0gdGhpcy5jZmcuZXh0ZW5kKGNmZyk7XG5cblx0ICAgICAgICAgICAgLy8gU3RvcmUgdHJhbnNmb3JtIG1vZGUgYW5kIGtleVxuXHQgICAgICAgICAgICB0aGlzLl94Zm9ybU1vZGUgPSB4Zm9ybU1vZGU7XG5cdCAgICAgICAgICAgIHRoaXMuX2tleSA9IGtleTtcblxuXHQgICAgICAgICAgICAvLyBTZXQgaW5pdGlhbCB2YWx1ZXNcblx0ICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBSZXNldHMgdGhpcyBjaXBoZXIgdG8gaXRzIGluaXRpYWwgc3RhdGUuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIGNpcGhlci5yZXNldCgpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHJlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFJlc2V0IGRhdGEgYnVmZmVyXG5cdCAgICAgICAgICAgIEJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0ucmVzZXQuY2FsbCh0aGlzKTtcblxuXHQgICAgICAgICAgICAvLyBQZXJmb3JtIGNvbmNyZXRlLWNpcGhlciBsb2dpY1xuXHQgICAgICAgICAgICB0aGlzLl9kb1Jlc2V0KCk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEFkZHMgZGF0YSB0byBiZSBlbmNyeXB0ZWQgb3IgZGVjcnlwdGVkLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBkYXRhVXBkYXRlIFRoZSBkYXRhIHRvIGVuY3J5cHQgb3IgZGVjcnlwdC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIGRhdGEgYWZ0ZXIgcHJvY2Vzc2luZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGVuY3J5cHRlZCA9IGNpcGhlci5wcm9jZXNzKCdkYXRhJyk7XG5cdCAgICAgICAgICogICAgIHZhciBlbmNyeXB0ZWQgPSBjaXBoZXIucHJvY2Vzcyh3b3JkQXJyYXkpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHByb2Nlc3M6IGZ1bmN0aW9uIChkYXRhVXBkYXRlKSB7XG5cdCAgICAgICAgICAgIC8vIEFwcGVuZFxuXHQgICAgICAgICAgICB0aGlzLl9hcHBlbmQoZGF0YVVwZGF0ZSk7XG5cblx0ICAgICAgICAgICAgLy8gUHJvY2VzcyBhdmFpbGFibGUgYmxvY2tzXG5cdCAgICAgICAgICAgIHJldHVybiB0aGlzLl9wcm9jZXNzKCk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEZpbmFsaXplcyB0aGUgZW5jcnlwdGlvbiBvciBkZWNyeXB0aW9uIHByb2Nlc3MuXG5cdCAgICAgICAgICogTm90ZSB0aGF0IHRoZSBmaW5hbGl6ZSBvcGVyYXRpb24gaXMgZWZmZWN0aXZlbHkgYSBkZXN0cnVjdGl2ZSwgcmVhZC1vbmNlIG9wZXJhdGlvbi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gZGF0YVVwZGF0ZSBUaGUgZmluYWwgZGF0YSB0byBlbmNyeXB0IG9yIGRlY3J5cHQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBkYXRhIGFmdGVyIGZpbmFsIHByb2Nlc3NpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBlbmNyeXB0ZWQgPSBjaXBoZXIuZmluYWxpemUoKTtcblx0ICAgICAgICAgKiAgICAgdmFyIGVuY3J5cHRlZCA9IGNpcGhlci5maW5hbGl6ZSgnZGF0YScpO1xuXHQgICAgICAgICAqICAgICB2YXIgZW5jcnlwdGVkID0gY2lwaGVyLmZpbmFsaXplKHdvcmRBcnJheSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgZmluYWxpemU6IGZ1bmN0aW9uIChkYXRhVXBkYXRlKSB7XG5cdCAgICAgICAgICAgIC8vIEZpbmFsIGRhdGEgdXBkYXRlXG5cdCAgICAgICAgICAgIGlmIChkYXRhVXBkYXRlKSB7XG5cdCAgICAgICAgICAgICAgICB0aGlzLl9hcHBlbmQoZGF0YVVwZGF0ZSk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBQZXJmb3JtIGNvbmNyZXRlLWNpcGhlciBsb2dpY1xuXHQgICAgICAgICAgICB2YXIgZmluYWxQcm9jZXNzZWREYXRhID0gdGhpcy5fZG9GaW5hbGl6ZSgpO1xuXG5cdCAgICAgICAgICAgIHJldHVybiBmaW5hbFByb2Nlc3NlZERhdGE7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGtleVNpemU6IDEyOC8zMixcblxuXHQgICAgICAgIGl2U2l6ZTogMTI4LzMyLFxuXG5cdCAgICAgICAgX0VOQ19YRk9STV9NT0RFOiAxLFxuXG5cdCAgICAgICAgX0RFQ19YRk9STV9NT0RFOiAyLFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ3JlYXRlcyBzaG9ydGN1dCBmdW5jdGlvbnMgdG8gYSBjaXBoZXIncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtDaXBoZXJ9IGNpcGhlciBUaGUgY2lwaGVyIHRvIGNyZWF0ZSBhIGhlbHBlciBmb3IuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtPYmplY3R9IEFuIG9iamVjdCB3aXRoIGVuY3J5cHQgYW5kIGRlY3J5cHQgc2hvcnRjdXQgZnVuY3Rpb25zLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgQUVTID0gQ3J5cHRvSlMubGliLkNpcGhlci5fY3JlYXRlSGVscGVyKENyeXB0b0pTLmFsZ28uQUVTKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBfY3JlYXRlSGVscGVyOiAoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICBmdW5jdGlvbiBzZWxlY3RDaXBoZXJTdHJhdGVneShrZXkpIHtcblx0ICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yga2V5ID09ICdzdHJpbmcnKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBhc3N3b3JkQmFzZWRDaXBoZXI7XG5cdCAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgICAgIHJldHVybiBTZXJpYWxpemFibGVDaXBoZXI7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGNpcGhlcikge1xuXHQgICAgICAgICAgICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAgICAgICAgICAgICBlbmNyeXB0OiBmdW5jdGlvbiAobWVzc2FnZSwga2V5LCBjZmcpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdENpcGhlclN0cmF0ZWd5KGtleSkuZW5jcnlwdChjaXBoZXIsIG1lc3NhZ2UsIGtleSwgY2ZnKTtcblx0ICAgICAgICAgICAgICAgICAgICB9LFxuXG5cdCAgICAgICAgICAgICAgICAgICAgZGVjcnlwdDogZnVuY3Rpb24gKGNpcGhlcnRleHQsIGtleSwgY2ZnKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3RDaXBoZXJTdHJhdGVneShrZXkpLmRlY3J5cHQoY2lwaGVyLCBjaXBoZXJ0ZXh0LCBrZXksIGNmZyk7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgfTtcblx0ICAgICAgICAgICAgfTtcblx0ICAgICAgICB9KCkpXG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBBYnN0cmFjdCBiYXNlIHN0cmVhbSBjaXBoZXIgdGVtcGxhdGUuXG5cdCAgICAgKlxuXHQgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IGJsb2NrU2l6ZSBUaGUgbnVtYmVyIG9mIDMyLWJpdCB3b3JkcyB0aGlzIGNpcGhlciBvcGVyYXRlcyBvbi4gRGVmYXVsdDogMSAoMzIgYml0cylcblx0ICAgICAqL1xuXHQgICAgdmFyIFN0cmVhbUNpcGhlciA9IENfbGliLlN0cmVhbUNpcGhlciA9IENpcGhlci5leHRlbmQoe1xuXHQgICAgICAgIF9kb0ZpbmFsaXplOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFByb2Nlc3MgcGFydGlhbCBibG9ja3Ncblx0ICAgICAgICAgICAgdmFyIGZpbmFsUHJvY2Vzc2VkQmxvY2tzID0gdGhpcy5fcHJvY2VzcyghISdmbHVzaCcpO1xuXG5cdCAgICAgICAgICAgIHJldHVybiBmaW5hbFByb2Nlc3NlZEJsb2Nrcztcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgYmxvY2tTaXplOiAxXG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBNb2RlIG5hbWVzcGFjZS5cblx0ICAgICAqL1xuXHQgICAgdmFyIENfbW9kZSA9IEMubW9kZSA9IHt9O1xuXG5cdCAgICAvKipcblx0ICAgICAqIEFic3RyYWN0IGJhc2UgYmxvY2sgY2lwaGVyIG1vZGUgdGVtcGxhdGUuXG5cdCAgICAgKi9cblx0ICAgIHZhciBCbG9ja0NpcGhlck1vZGUgPSBDX2xpYi5CbG9ja0NpcGhlck1vZGUgPSBCYXNlLmV4dGVuZCh7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ3JlYXRlcyB0aGlzIG1vZGUgZm9yIGVuY3J5cHRpb24uXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge0NpcGhlcn0gY2lwaGVyIEEgYmxvY2sgY2lwaGVyIGluc3RhbmNlLlxuXHQgICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGl2IFRoZSBJViB3b3Jkcy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIG1vZGUgPSBDcnlwdG9KUy5tb2RlLkNCQy5jcmVhdGVFbmNyeXB0b3IoY2lwaGVyLCBpdi53b3Jkcyk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgY3JlYXRlRW5jcnlwdG9yOiBmdW5jdGlvbiAoY2lwaGVyLCBpdikge1xuXHQgICAgICAgICAgICByZXR1cm4gdGhpcy5FbmNyeXB0b3IuY3JlYXRlKGNpcGhlciwgaXYpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDcmVhdGVzIHRoaXMgbW9kZSBmb3IgZGVjcnlwdGlvbi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7Q2lwaGVyfSBjaXBoZXIgQSBibG9jayBjaXBoZXIgaW5zdGFuY2UuXG5cdCAgICAgICAgICogQHBhcmFtIHtBcnJheX0gaXYgVGhlIElWIHdvcmRzLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgbW9kZSA9IENyeXB0b0pTLm1vZGUuQ0JDLmNyZWF0ZURlY3J5cHRvcihjaXBoZXIsIGl2LndvcmRzKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBjcmVhdGVEZWNyeXB0b3I6IGZ1bmN0aW9uIChjaXBoZXIsIGl2KSB7XG5cdCAgICAgICAgICAgIHJldHVybiB0aGlzLkRlY3J5cHRvci5jcmVhdGUoY2lwaGVyLCBpdik7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEluaXRpYWxpemVzIGEgbmV3bHkgY3JlYXRlZCBtb2RlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtDaXBoZXJ9IGNpcGhlciBBIGJsb2NrIGNpcGhlciBpbnN0YW5jZS5cblx0ICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBpdiBUaGUgSVYgd29yZHMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBtb2RlID0gQ3J5cHRvSlMubW9kZS5DQkMuRW5jcnlwdG9yLmNyZWF0ZShjaXBoZXIsIGl2LndvcmRzKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBpbml0OiBmdW5jdGlvbiAoY2lwaGVyLCBpdikge1xuXHQgICAgICAgICAgICB0aGlzLl9jaXBoZXIgPSBjaXBoZXI7XG5cdCAgICAgICAgICAgIHRoaXMuX2l2ID0gaXY7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogQ2lwaGVyIEJsb2NrIENoYWluaW5nIG1vZGUuXG5cdCAgICAgKi9cblx0ICAgIHZhciBDQkMgPSBDX21vZGUuQ0JDID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBBYnN0cmFjdCBiYXNlIENCQyBtb2RlLlxuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHZhciBDQkMgPSBCbG9ja0NpcGhlck1vZGUuZXh0ZW5kKCk7XG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDQkMgZW5jcnlwdG9yLlxuXHQgICAgICAgICAqL1xuXHQgICAgICAgIENCQy5FbmNyeXB0b3IgPSBDQkMuZXh0ZW5kKHtcblx0ICAgICAgICAgICAgLyoqXG5cdCAgICAgICAgICAgICAqIFByb2Nlc3NlcyB0aGUgZGF0YSBibG9jayBhdCBvZmZzZXQuXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IHdvcmRzIFRoZSBkYXRhIHdvcmRzIHRvIG9wZXJhdGUgb24uXG5cdCAgICAgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQgVGhlIG9mZnNldCB3aGVyZSB0aGUgYmxvY2sgc3RhcnRzLlxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiAgICAgbW9kZS5wcm9jZXNzQmxvY2soZGF0YS53b3Jkcywgb2Zmc2V0KTtcblx0ICAgICAgICAgICAgICovXG5cdCAgICAgICAgICAgIHByb2Nlc3NCbG9jazogZnVuY3Rpb24gKHdvcmRzLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICAgICAgdmFyIGNpcGhlciA9IHRoaXMuX2NpcGhlcjtcblx0ICAgICAgICAgICAgICAgIHZhciBibG9ja1NpemUgPSBjaXBoZXIuYmxvY2tTaXplO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBYT1IgYW5kIGVuY3J5cHRcblx0ICAgICAgICAgICAgICAgIHhvckJsb2NrLmNhbGwodGhpcywgd29yZHMsIG9mZnNldCwgYmxvY2tTaXplKTtcblx0ICAgICAgICAgICAgICAgIGNpcGhlci5lbmNyeXB0QmxvY2sod29yZHMsIG9mZnNldCk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRoaXMgYmxvY2sgdG8gdXNlIHdpdGggbmV4dCBibG9ja1xuXHQgICAgICAgICAgICAgICAgdGhpcy5fcHJldkJsb2NrID0gd29yZHMuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBibG9ja1NpemUpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfSk7XG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDQkMgZGVjcnlwdG9yLlxuXHQgICAgICAgICAqL1xuXHQgICAgICAgIENCQy5EZWNyeXB0b3IgPSBDQkMuZXh0ZW5kKHtcblx0ICAgICAgICAgICAgLyoqXG5cdCAgICAgICAgICAgICAqIFByb2Nlc3NlcyB0aGUgZGF0YSBibG9jayBhdCBvZmZzZXQuXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IHdvcmRzIFRoZSBkYXRhIHdvcmRzIHRvIG9wZXJhdGUgb24uXG5cdCAgICAgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQgVGhlIG9mZnNldCB3aGVyZSB0aGUgYmxvY2sgc3RhcnRzLlxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiAgICAgbW9kZS5wcm9jZXNzQmxvY2soZGF0YS53b3Jkcywgb2Zmc2V0KTtcblx0ICAgICAgICAgICAgICovXG5cdCAgICAgICAgICAgIHByb2Nlc3NCbG9jazogZnVuY3Rpb24gKHdvcmRzLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICAgICAgdmFyIGNpcGhlciA9IHRoaXMuX2NpcGhlcjtcblx0ICAgICAgICAgICAgICAgIHZhciBibG9ja1NpemUgPSBjaXBoZXIuYmxvY2tTaXplO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBSZW1lbWJlciB0aGlzIGJsb2NrIHRvIHVzZSB3aXRoIG5leHQgYmxvY2tcblx0ICAgICAgICAgICAgICAgIHZhciB0aGlzQmxvY2sgPSB3b3Jkcy5zbGljZShvZmZzZXQsIG9mZnNldCArIGJsb2NrU2l6ZSk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIERlY3J5cHQgYW5kIFhPUlxuXHQgICAgICAgICAgICAgICAgY2lwaGVyLmRlY3J5cHRCbG9jayh3b3Jkcywgb2Zmc2V0KTtcblx0ICAgICAgICAgICAgICAgIHhvckJsb2NrLmNhbGwodGhpcywgd29yZHMsIG9mZnNldCwgYmxvY2tTaXplKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gVGhpcyBibG9jayBiZWNvbWVzIHRoZSBwcmV2aW91cyBibG9ja1xuXHQgICAgICAgICAgICAgICAgdGhpcy5fcHJldkJsb2NrID0gdGhpc0Jsb2NrO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfSk7XG5cblx0ICAgICAgICBmdW5jdGlvbiB4b3JCbG9jayh3b3Jkcywgb2Zmc2V0LCBibG9ja1NpemUpIHtcblx0ICAgICAgICAgICAgdmFyIGJsb2NrO1xuXG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBpdiA9IHRoaXMuX2l2O1xuXG5cdCAgICAgICAgICAgIC8vIENob29zZSBtaXhpbmcgYmxvY2tcblx0ICAgICAgICAgICAgaWYgKGl2KSB7XG5cdCAgICAgICAgICAgICAgICBibG9jayA9IGl2O1xuXG5cdCAgICAgICAgICAgICAgICAvLyBSZW1vdmUgSVYgZm9yIHN1YnNlcXVlbnQgYmxvY2tzXG5cdCAgICAgICAgICAgICAgICB0aGlzLl9pdiA9IHVuZGVmaW5lZDtcblx0ICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIGJsb2NrID0gdGhpcy5fcHJldkJsb2NrO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gWE9SIGJsb2Nrc1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJsb2NrU2l6ZTsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICB3b3Jkc1tvZmZzZXQgKyBpXSBePSBibG9ja1tpXTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBDQkM7XG5cdCAgICB9KCkpO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFBhZGRpbmcgbmFtZXNwYWNlLlxuXHQgICAgICovXG5cdCAgICB2YXIgQ19wYWQgPSBDLnBhZCA9IHt9O1xuXG5cdCAgICAvKipcblx0ICAgICAqIFBLQ1MgIzUvNyBwYWRkaW5nIHN0cmF0ZWd5LlxuXHQgICAgICovXG5cdCAgICB2YXIgUGtjczcgPSBDX3BhZC5Qa2NzNyA9IHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBQYWRzIGRhdGEgdXNpbmcgdGhlIGFsZ29yaXRobSBkZWZpbmVkIGluIFBLQ1MgIzUvNy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fSBkYXRhIFRoZSBkYXRhIHRvIHBhZC5cblx0ICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gYmxvY2tTaXplIFRoZSBtdWx0aXBsZSB0aGF0IHRoZSBkYXRhIHNob3VsZCBiZSBwYWRkZWQgdG8uXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIENyeXB0b0pTLnBhZC5Qa2NzNy5wYWQod29yZEFycmF5LCA0KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBwYWQ6IGZ1bmN0aW9uIChkYXRhLCBibG9ja1NpemUpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIGJsb2NrU2l6ZUJ5dGVzID0gYmxvY2tTaXplICogNDtcblxuXHQgICAgICAgICAgICAvLyBDb3VudCBwYWRkaW5nIGJ5dGVzXG5cdCAgICAgICAgICAgIHZhciBuUGFkZGluZ0J5dGVzID0gYmxvY2tTaXplQnl0ZXMgLSBkYXRhLnNpZ0J5dGVzICUgYmxvY2tTaXplQnl0ZXM7XG5cblx0ICAgICAgICAgICAgLy8gQ3JlYXRlIHBhZGRpbmcgd29yZFxuXHQgICAgICAgICAgICB2YXIgcGFkZGluZ1dvcmQgPSAoblBhZGRpbmdCeXRlcyA8PCAyNCkgfCAoblBhZGRpbmdCeXRlcyA8PCAxNikgfCAoblBhZGRpbmdCeXRlcyA8PCA4KSB8IG5QYWRkaW5nQnl0ZXM7XG5cblx0ICAgICAgICAgICAgLy8gQ3JlYXRlIHBhZGRpbmdcblx0ICAgICAgICAgICAgdmFyIHBhZGRpbmdXb3JkcyA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5QYWRkaW5nQnl0ZXM7IGkgKz0gNCkge1xuXHQgICAgICAgICAgICAgICAgcGFkZGluZ1dvcmRzLnB1c2gocGFkZGluZ1dvcmQpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIHZhciBwYWRkaW5nID0gV29yZEFycmF5LmNyZWF0ZShwYWRkaW5nV29yZHMsIG5QYWRkaW5nQnl0ZXMpO1xuXG5cdCAgICAgICAgICAgIC8vIEFkZCBwYWRkaW5nXG5cdCAgICAgICAgICAgIGRhdGEuY29uY2F0KHBhZGRpbmcpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBVbnBhZHMgZGF0YSB0aGF0IGhhZCBiZWVuIHBhZGRlZCB1c2luZyB0aGUgYWxnb3JpdGhtIGRlZmluZWQgaW4gUEtDUyAjNS83LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl9IGRhdGEgVGhlIGRhdGEgdG8gdW5wYWQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIENyeXB0b0pTLnBhZC5Qa2NzNy51bnBhZCh3b3JkQXJyYXkpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHVucGFkOiBmdW5jdGlvbiAoZGF0YSkge1xuXHQgICAgICAgICAgICAvLyBHZXQgbnVtYmVyIG9mIHBhZGRpbmcgYnl0ZXMgZnJvbSBsYXN0IGJ5dGVcblx0ICAgICAgICAgICAgdmFyIG5QYWRkaW5nQnl0ZXMgPSBkYXRhLndvcmRzWyhkYXRhLnNpZ0J5dGVzIC0gMSkgPj4+IDJdICYgMHhmZjtcblxuXHQgICAgICAgICAgICAvLyBSZW1vdmUgcGFkZGluZ1xuXHQgICAgICAgICAgICBkYXRhLnNpZ0J5dGVzIC09IG5QYWRkaW5nQnl0ZXM7XG5cdCAgICAgICAgfVxuXHQgICAgfTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBBYnN0cmFjdCBiYXNlIGJsb2NrIGNpcGhlciB0ZW1wbGF0ZS5cblx0ICAgICAqXG5cdCAgICAgKiBAcHJvcGVydHkge251bWJlcn0gYmxvY2tTaXplIFRoZSBudW1iZXIgb2YgMzItYml0IHdvcmRzIHRoaXMgY2lwaGVyIG9wZXJhdGVzIG9uLiBEZWZhdWx0OiA0ICgxMjggYml0cylcblx0ICAgICAqL1xuXHQgICAgdmFyIEJsb2NrQ2lwaGVyID0gQ19saWIuQmxvY2tDaXBoZXIgPSBDaXBoZXIuZXh0ZW5kKHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcHJvcGVydHkge01vZGV9IG1vZGUgVGhlIGJsb2NrIG1vZGUgdG8gdXNlLiBEZWZhdWx0OiBDQkNcblx0ICAgICAgICAgKiBAcHJvcGVydHkge1BhZGRpbmd9IHBhZGRpbmcgVGhlIHBhZGRpbmcgc3RyYXRlZ3kgdG8gdXNlLiBEZWZhdWx0OiBQa2NzN1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNmZzogQ2lwaGVyLmNmZy5leHRlbmQoe1xuXHQgICAgICAgICAgICBtb2RlOiBDQkMsXG5cdCAgICAgICAgICAgIHBhZGRpbmc6IFBrY3M3XG5cdCAgICAgICAgfSksXG5cblx0ICAgICAgICByZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB2YXIgbW9kZUNyZWF0b3I7XG5cblx0ICAgICAgICAgICAgLy8gUmVzZXQgY2lwaGVyXG5cdCAgICAgICAgICAgIENpcGhlci5yZXNldC5jYWxsKHRoaXMpO1xuXG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgY2ZnID0gdGhpcy5jZmc7XG5cdCAgICAgICAgICAgIHZhciBpdiA9IGNmZy5pdjtcblx0ICAgICAgICAgICAgdmFyIG1vZGUgPSBjZmcubW9kZTtcblxuXHQgICAgICAgICAgICAvLyBSZXNldCBibG9jayBtb2RlXG5cdCAgICAgICAgICAgIGlmICh0aGlzLl94Zm9ybU1vZGUgPT0gdGhpcy5fRU5DX1hGT1JNX01PREUpIHtcblx0ICAgICAgICAgICAgICAgIG1vZGVDcmVhdG9yID0gbW9kZS5jcmVhdGVFbmNyeXB0b3I7XG5cdCAgICAgICAgICAgIH0gZWxzZSAvKiBpZiAodGhpcy5feGZvcm1Nb2RlID09IHRoaXMuX0RFQ19YRk9STV9NT0RFKSAqLyB7XG5cdCAgICAgICAgICAgICAgICBtb2RlQ3JlYXRvciA9IG1vZGUuY3JlYXRlRGVjcnlwdG9yO1xuXHQgICAgICAgICAgICAgICAgLy8gS2VlcCBhdCBsZWFzdCBvbmUgYmxvY2sgaW4gdGhlIGJ1ZmZlciBmb3IgdW5wYWRkaW5nXG5cdCAgICAgICAgICAgICAgICB0aGlzLl9taW5CdWZmZXJTaXplID0gMTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIGlmICh0aGlzLl9tb2RlICYmIHRoaXMuX21vZGUuX19jcmVhdG9yID09IG1vZGVDcmVhdG9yKSB7XG5cdCAgICAgICAgICAgICAgICB0aGlzLl9tb2RlLmluaXQodGhpcywgaXYgJiYgaXYud29yZHMpO1xuXHQgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5fbW9kZSA9IG1vZGVDcmVhdG9yLmNhbGwobW9kZSwgdGhpcywgaXYgJiYgaXYud29yZHMpO1xuXHQgICAgICAgICAgICAgICAgdGhpcy5fbW9kZS5fX2NyZWF0b3IgPSBtb2RlQ3JlYXRvcjtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9Qcm9jZXNzQmxvY2s6IGZ1bmN0aW9uICh3b3Jkcywgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIHRoaXMuX21vZGUucHJvY2Vzc0Jsb2NrKHdvcmRzLCBvZmZzZXQpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9GaW5hbGl6ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB2YXIgZmluYWxQcm9jZXNzZWRCbG9ja3M7XG5cblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIHBhZGRpbmcgPSB0aGlzLmNmZy5wYWRkaW5nO1xuXG5cdCAgICAgICAgICAgIC8vIEZpbmFsaXplXG5cdCAgICAgICAgICAgIGlmICh0aGlzLl94Zm9ybU1vZGUgPT0gdGhpcy5fRU5DX1hGT1JNX01PREUpIHtcblx0ICAgICAgICAgICAgICAgIC8vIFBhZCBkYXRhXG5cdCAgICAgICAgICAgICAgICBwYWRkaW5nLnBhZCh0aGlzLl9kYXRhLCB0aGlzLmJsb2NrU2l6ZSk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIFByb2Nlc3MgZmluYWwgYmxvY2tzXG5cdCAgICAgICAgICAgICAgICBmaW5hbFByb2Nlc3NlZEJsb2NrcyA9IHRoaXMuX3Byb2Nlc3MoISEnZmx1c2gnKTtcblx0ICAgICAgICAgICAgfSBlbHNlIC8qIGlmICh0aGlzLl94Zm9ybU1vZGUgPT0gdGhpcy5fREVDX1hGT1JNX01PREUpICovIHtcblx0ICAgICAgICAgICAgICAgIC8vIFByb2Nlc3MgZmluYWwgYmxvY2tzXG5cdCAgICAgICAgICAgICAgICBmaW5hbFByb2Nlc3NlZEJsb2NrcyA9IHRoaXMuX3Byb2Nlc3MoISEnZmx1c2gnKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gVW5wYWQgZGF0YVxuXHQgICAgICAgICAgICAgICAgcGFkZGluZy51bnBhZChmaW5hbFByb2Nlc3NlZEJsb2Nrcyk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICByZXR1cm4gZmluYWxQcm9jZXNzZWRCbG9ja3M7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGJsb2NrU2l6ZTogMTI4LzMyXG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBBIGNvbGxlY3Rpb24gb2YgY2lwaGVyIHBhcmFtZXRlcnMuXG5cdCAgICAgKlxuXHQgICAgICogQHByb3BlcnR5IHtXb3JkQXJyYXl9IGNpcGhlcnRleHQgVGhlIHJhdyBjaXBoZXJ0ZXh0LlxuXHQgICAgICogQHByb3BlcnR5IHtXb3JkQXJyYXl9IGtleSBUaGUga2V5IHRvIHRoaXMgY2lwaGVydGV4dC5cblx0ICAgICAqIEBwcm9wZXJ0eSB7V29yZEFycmF5fSBpdiBUaGUgSVYgdXNlZCBpbiB0aGUgY2lwaGVyaW5nIG9wZXJhdGlvbi5cblx0ICAgICAqIEBwcm9wZXJ0eSB7V29yZEFycmF5fSBzYWx0IFRoZSBzYWx0IHVzZWQgd2l0aCBhIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uLlxuXHQgICAgICogQHByb3BlcnR5IHtDaXBoZXJ9IGFsZ29yaXRobSBUaGUgY2lwaGVyIGFsZ29yaXRobS5cblx0ICAgICAqIEBwcm9wZXJ0eSB7TW9kZX0gbW9kZSBUaGUgYmxvY2sgbW9kZSB1c2VkIGluIHRoZSBjaXBoZXJpbmcgb3BlcmF0aW9uLlxuXHQgICAgICogQHByb3BlcnR5IHtQYWRkaW5nfSBwYWRkaW5nIFRoZSBwYWRkaW5nIHNjaGVtZSB1c2VkIGluIHRoZSBjaXBoZXJpbmcgb3BlcmF0aW9uLlxuXHQgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IGJsb2NrU2l6ZSBUaGUgYmxvY2sgc2l6ZSBvZiB0aGUgY2lwaGVyLlxuXHQgICAgICogQHByb3BlcnR5IHtGb3JtYXR9IGZvcm1hdHRlciBUaGUgZGVmYXVsdCBmb3JtYXR0aW5nIHN0cmF0ZWd5IHRvIGNvbnZlcnQgdGhpcyBjaXBoZXIgcGFyYW1zIG9iamVjdCB0byBhIHN0cmluZy5cblx0ICAgICAqL1xuXHQgICAgdmFyIENpcGhlclBhcmFtcyA9IENfbGliLkNpcGhlclBhcmFtcyA9IEJhc2UuZXh0ZW5kKHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBJbml0aWFsaXplcyBhIG5ld2x5IGNyZWF0ZWQgY2lwaGVyIHBhcmFtcyBvYmplY3QuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gY2lwaGVyUGFyYW1zIEFuIG9iamVjdCB3aXRoIGFueSBvZiB0aGUgcG9zc2libGUgY2lwaGVyIHBhcmFtZXRlcnMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBjaXBoZXJQYXJhbXMgPSBDcnlwdG9KUy5saWIuQ2lwaGVyUGFyYW1zLmNyZWF0ZSh7XG5cdCAgICAgICAgICogICAgICAgICBjaXBoZXJ0ZXh0OiBjaXBoZXJ0ZXh0V29yZEFycmF5LFxuXHQgICAgICAgICAqICAgICAgICAga2V5OiBrZXlXb3JkQXJyYXksXG5cdCAgICAgICAgICogICAgICAgICBpdjogaXZXb3JkQXJyYXksXG5cdCAgICAgICAgICogICAgICAgICBzYWx0OiBzYWx0V29yZEFycmF5LFxuXHQgICAgICAgICAqICAgICAgICAgYWxnb3JpdGhtOiBDcnlwdG9KUy5hbGdvLkFFUyxcblx0ICAgICAgICAgKiAgICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuQ0JDLFxuXHQgICAgICAgICAqICAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBLQ1M3LFxuXHQgICAgICAgICAqICAgICAgICAgYmxvY2tTaXplOiA0LFxuXHQgICAgICAgICAqICAgICAgICAgZm9ybWF0dGVyOiBDcnlwdG9KUy5mb3JtYXQuT3BlblNTTFxuXHQgICAgICAgICAqICAgICB9KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBpbml0OiBmdW5jdGlvbiAoY2lwaGVyUGFyYW1zKSB7XG5cdCAgICAgICAgICAgIHRoaXMubWl4SW4oY2lwaGVyUGFyYW1zKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgdGhpcyBjaXBoZXIgcGFyYW1zIG9iamVjdCB0byBhIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7Rm9ybWF0fSBmb3JtYXR0ZXIgKE9wdGlvbmFsKSBUaGUgZm9ybWF0dGluZyBzdHJhdGVneSB0byB1c2UuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBzdHJpbmdpZmllZCBjaXBoZXIgcGFyYW1zLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHRocm93cyBFcnJvciBJZiBuZWl0aGVyIHRoZSBmb3JtYXR0ZXIgbm9yIHRoZSBkZWZhdWx0IGZvcm1hdHRlciBpcyBzZXQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBzdHJpbmcgPSBjaXBoZXJQYXJhbXMgKyAnJztcblx0ICAgICAgICAgKiAgICAgdmFyIHN0cmluZyA9IGNpcGhlclBhcmFtcy50b1N0cmluZygpO1xuXHQgICAgICAgICAqICAgICB2YXIgc3RyaW5nID0gY2lwaGVyUGFyYW1zLnRvU3RyaW5nKENyeXB0b0pTLmZvcm1hdC5PcGVuU1NMKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICB0b1N0cmluZzogZnVuY3Rpb24gKGZvcm1hdHRlcikge1xuXHQgICAgICAgICAgICByZXR1cm4gKGZvcm1hdHRlciB8fCB0aGlzLmZvcm1hdHRlcikuc3RyaW5naWZ5KHRoaXMpO1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIEZvcm1hdCBuYW1lc3BhY2UuXG5cdCAgICAgKi9cblx0ICAgIHZhciBDX2Zvcm1hdCA9IEMuZm9ybWF0ID0ge307XG5cblx0ICAgIC8qKlxuXHQgICAgICogT3BlblNTTCBmb3JtYXR0aW5nIHN0cmF0ZWd5LlxuXHQgICAgICovXG5cdCAgICB2YXIgT3BlblNTTEZvcm1hdHRlciA9IENfZm9ybWF0Lk9wZW5TU0wgPSB7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgYSBjaXBoZXIgcGFyYW1zIG9iamVjdCB0byBhbiBPcGVuU1NMLWNvbXBhdGlibGUgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtDaXBoZXJQYXJhbXN9IGNpcGhlclBhcmFtcyBUaGUgY2lwaGVyIHBhcmFtcyBvYmplY3QuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBPcGVuU1NMLWNvbXBhdGlibGUgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgb3BlblNTTFN0cmluZyA9IENyeXB0b0pTLmZvcm1hdC5PcGVuU1NMLnN0cmluZ2lmeShjaXBoZXJQYXJhbXMpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHN0cmluZ2lmeTogZnVuY3Rpb24gKGNpcGhlclBhcmFtcykge1xuXHQgICAgICAgICAgICB2YXIgd29yZEFycmF5O1xuXG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgY2lwaGVydGV4dCA9IGNpcGhlclBhcmFtcy5jaXBoZXJ0ZXh0O1xuXHQgICAgICAgICAgICB2YXIgc2FsdCA9IGNpcGhlclBhcmFtcy5zYWx0O1xuXG5cdCAgICAgICAgICAgIC8vIEZvcm1hdFxuXHQgICAgICAgICAgICBpZiAoc2FsdCkge1xuXHQgICAgICAgICAgICAgICAgd29yZEFycmF5ID0gV29yZEFycmF5LmNyZWF0ZShbMHg1MzYxNmM3NCwgMHg2NTY0NWY1Zl0pLmNvbmNhdChzYWx0KS5jb25jYXQoY2lwaGVydGV4dCk7XG5cdCAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICB3b3JkQXJyYXkgPSBjaXBoZXJ0ZXh0O1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIHdvcmRBcnJheS50b1N0cmluZyhCYXNlNjQpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyBhbiBPcGVuU1NMLWNvbXBhdGlibGUgc3RyaW5nIHRvIGEgY2lwaGVyIHBhcmFtcyBvYmplY3QuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3BlblNTTFN0ciBUaGUgT3BlblNTTC1jb21wYXRpYmxlIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge0NpcGhlclBhcmFtc30gVGhlIGNpcGhlciBwYXJhbXMgb2JqZWN0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgY2lwaGVyUGFyYW1zID0gQ3J5cHRvSlMuZm9ybWF0Lk9wZW5TU0wucGFyc2Uob3BlblNTTFN0cmluZyk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgcGFyc2U6IGZ1bmN0aW9uIChvcGVuU1NMU3RyKSB7XG5cdCAgICAgICAgICAgIHZhciBzYWx0O1xuXG5cdCAgICAgICAgICAgIC8vIFBhcnNlIGJhc2U2NFxuXHQgICAgICAgICAgICB2YXIgY2lwaGVydGV4dCA9IEJhc2U2NC5wYXJzZShvcGVuU1NMU3RyKTtcblxuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICB2YXIgY2lwaGVydGV4dFdvcmRzID0gY2lwaGVydGV4dC53b3JkcztcblxuXHQgICAgICAgICAgICAvLyBUZXN0IGZvciBzYWx0XG5cdCAgICAgICAgICAgIGlmIChjaXBoZXJ0ZXh0V29yZHNbMF0gPT0gMHg1MzYxNmM3NCAmJiBjaXBoZXJ0ZXh0V29yZHNbMV0gPT0gMHg2NTY0NWY1Zikge1xuXHQgICAgICAgICAgICAgICAgLy8gRXh0cmFjdCBzYWx0XG5cdCAgICAgICAgICAgICAgICBzYWx0ID0gV29yZEFycmF5LmNyZWF0ZShjaXBoZXJ0ZXh0V29yZHMuc2xpY2UoMiwgNCkpO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBSZW1vdmUgc2FsdCBmcm9tIGNpcGhlcnRleHRcblx0ICAgICAgICAgICAgICAgIGNpcGhlcnRleHRXb3Jkcy5zcGxpY2UoMCwgNCk7XG5cdCAgICAgICAgICAgICAgICBjaXBoZXJ0ZXh0LnNpZ0J5dGVzIC09IDE2O1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIENpcGhlclBhcmFtcy5jcmVhdGUoeyBjaXBoZXJ0ZXh0OiBjaXBoZXJ0ZXh0LCBzYWx0OiBzYWx0IH0pO1xuXHQgICAgICAgIH1cblx0ICAgIH07XG5cblx0ICAgIC8qKlxuXHQgICAgICogQSBjaXBoZXIgd3JhcHBlciB0aGF0IHJldHVybnMgY2lwaGVydGV4dCBhcyBhIHNlcmlhbGl6YWJsZSBjaXBoZXIgcGFyYW1zIG9iamVjdC5cblx0ICAgICAqL1xuXHQgICAgdmFyIFNlcmlhbGl6YWJsZUNpcGhlciA9IENfbGliLlNlcmlhbGl6YWJsZUNpcGhlciA9IEJhc2UuZXh0ZW5kKHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcHJvcGVydHkge0Zvcm1hdHRlcn0gZm9ybWF0IFRoZSBmb3JtYXR0aW5nIHN0cmF0ZWd5IHRvIGNvbnZlcnQgY2lwaGVyIHBhcmFtIG9iamVjdHMgdG8gYW5kIGZyb20gYSBzdHJpbmcuIERlZmF1bHQ6IE9wZW5TU0xcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBjZmc6IEJhc2UuZXh0ZW5kKHtcblx0ICAgICAgICAgICAgZm9ybWF0OiBPcGVuU1NMRm9ybWF0dGVyXG5cdCAgICAgICAgfSksXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBFbmNyeXB0cyBhIG1lc3NhZ2UuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge0NpcGhlcn0gY2lwaGVyIFRoZSBjaXBoZXIgYWxnb3JpdGhtIHRvIHVzZS5cblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gZW5jcnlwdC5cblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheX0ga2V5IFRoZSBrZXkuXG5cdCAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGNmZyAoT3B0aW9uYWwpIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdXNlIGZvciB0aGlzIG9wZXJhdGlvbi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge0NpcGhlclBhcmFtc30gQSBjaXBoZXIgcGFyYW1zIG9iamVjdC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGNpcGhlcnRleHRQYXJhbXMgPSBDcnlwdG9KUy5saWIuU2VyaWFsaXphYmxlQ2lwaGVyLmVuY3J5cHQoQ3J5cHRvSlMuYWxnby5BRVMsIG1lc3NhZ2UsIGtleSk7XG5cdCAgICAgICAgICogICAgIHZhciBjaXBoZXJ0ZXh0UGFyYW1zID0gQ3J5cHRvSlMubGliLlNlcmlhbGl6YWJsZUNpcGhlci5lbmNyeXB0KENyeXB0b0pTLmFsZ28uQUVTLCBtZXNzYWdlLCBrZXksIHsgaXY6IGl2IH0pO1xuXHQgICAgICAgICAqICAgICB2YXIgY2lwaGVydGV4dFBhcmFtcyA9IENyeXB0b0pTLmxpYi5TZXJpYWxpemFibGVDaXBoZXIuZW5jcnlwdChDcnlwdG9KUy5hbGdvLkFFUywgbWVzc2FnZSwga2V5LCB7IGl2OiBpdiwgZm9ybWF0OiBDcnlwdG9KUy5mb3JtYXQuT3BlblNTTCB9KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBlbmNyeXB0OiBmdW5jdGlvbiAoY2lwaGVyLCBtZXNzYWdlLCBrZXksIGNmZykge1xuXHQgICAgICAgICAgICAvLyBBcHBseSBjb25maWcgZGVmYXVsdHNcblx0ICAgICAgICAgICAgY2ZnID0gdGhpcy5jZmcuZXh0ZW5kKGNmZyk7XG5cblx0ICAgICAgICAgICAgLy8gRW5jcnlwdFxuXHQgICAgICAgICAgICB2YXIgZW5jcnlwdG9yID0gY2lwaGVyLmNyZWF0ZUVuY3J5cHRvcihrZXksIGNmZyk7XG5cdCAgICAgICAgICAgIHZhciBjaXBoZXJ0ZXh0ID0gZW5jcnlwdG9yLmZpbmFsaXplKG1lc3NhZ2UpO1xuXG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBjaXBoZXJDZmcgPSBlbmNyeXB0b3IuY2ZnO1xuXG5cdCAgICAgICAgICAgIC8vIENyZWF0ZSBhbmQgcmV0dXJuIHNlcmlhbGl6YWJsZSBjaXBoZXIgcGFyYW1zXG5cdCAgICAgICAgICAgIHJldHVybiBDaXBoZXJQYXJhbXMuY3JlYXRlKHtcblx0ICAgICAgICAgICAgICAgIGNpcGhlcnRleHQ6IGNpcGhlcnRleHQsXG5cdCAgICAgICAgICAgICAgICBrZXk6IGtleSxcblx0ICAgICAgICAgICAgICAgIGl2OiBjaXBoZXJDZmcuaXYsXG5cdCAgICAgICAgICAgICAgICBhbGdvcml0aG06IGNpcGhlcixcblx0ICAgICAgICAgICAgICAgIG1vZGU6IGNpcGhlckNmZy5tb2RlLFxuXHQgICAgICAgICAgICAgICAgcGFkZGluZzogY2lwaGVyQ2ZnLnBhZGRpbmcsXG5cdCAgICAgICAgICAgICAgICBibG9ja1NpemU6IGNpcGhlci5ibG9ja1NpemUsXG5cdCAgICAgICAgICAgICAgICBmb3JtYXR0ZXI6IGNmZy5mb3JtYXRcblx0ICAgICAgICAgICAgfSk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIERlY3J5cHRzIHNlcmlhbGl6ZWQgY2lwaGVydGV4dC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7Q2lwaGVyfSBjaXBoZXIgVGhlIGNpcGhlciBhbGdvcml0aG0gdG8gdXNlLlxuXHQgICAgICAgICAqIEBwYXJhbSB7Q2lwaGVyUGFyYW1zfHN0cmluZ30gY2lwaGVydGV4dCBUaGUgY2lwaGVydGV4dCB0byBkZWNyeXB0LlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fSBrZXkgVGhlIGtleS5cblx0ICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIChPcHRpb25hbCkgVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB1c2UgZm9yIHRoaXMgb3BlcmF0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgcGxhaW50ZXh0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgcGxhaW50ZXh0ID0gQ3J5cHRvSlMubGliLlNlcmlhbGl6YWJsZUNpcGhlci5kZWNyeXB0KENyeXB0b0pTLmFsZ28uQUVTLCBmb3JtYXR0ZWRDaXBoZXJ0ZXh0LCBrZXksIHsgaXY6IGl2LCBmb3JtYXQ6IENyeXB0b0pTLmZvcm1hdC5PcGVuU1NMIH0pO1xuXHQgICAgICAgICAqICAgICB2YXIgcGxhaW50ZXh0ID0gQ3J5cHRvSlMubGliLlNlcmlhbGl6YWJsZUNpcGhlci5kZWNyeXB0KENyeXB0b0pTLmFsZ28uQUVTLCBjaXBoZXJ0ZXh0UGFyYW1zLCBrZXksIHsgaXY6IGl2LCBmb3JtYXQ6IENyeXB0b0pTLmZvcm1hdC5PcGVuU1NMIH0pO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGRlY3J5cHQ6IGZ1bmN0aW9uIChjaXBoZXIsIGNpcGhlcnRleHQsIGtleSwgY2ZnKSB7XG5cdCAgICAgICAgICAgIC8vIEFwcGx5IGNvbmZpZyBkZWZhdWx0c1xuXHQgICAgICAgICAgICBjZmcgPSB0aGlzLmNmZy5leHRlbmQoY2ZnKTtcblxuXHQgICAgICAgICAgICAvLyBDb252ZXJ0IHN0cmluZyB0byBDaXBoZXJQYXJhbXNcblx0ICAgICAgICAgICAgY2lwaGVydGV4dCA9IHRoaXMuX3BhcnNlKGNpcGhlcnRleHQsIGNmZy5mb3JtYXQpO1xuXG5cdCAgICAgICAgICAgIC8vIERlY3J5cHRcblx0ICAgICAgICAgICAgdmFyIHBsYWludGV4dCA9IGNpcGhlci5jcmVhdGVEZWNyeXB0b3Ioa2V5LCBjZmcpLmZpbmFsaXplKGNpcGhlcnRleHQuY2lwaGVydGV4dCk7XG5cblx0ICAgICAgICAgICAgcmV0dXJuIHBsYWludGV4dDtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgc2VyaWFsaXplZCBjaXBoZXJ0ZXh0IHRvIENpcGhlclBhcmFtcyxcblx0ICAgICAgICAgKiBlbHNlIGFzc3VtZWQgQ2lwaGVyUGFyYW1zIGFscmVhZHkgYW5kIHJldHVybnMgY2lwaGVydGV4dCB1bmNoYW5nZWQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge0NpcGhlclBhcmFtc3xzdHJpbmd9IGNpcGhlcnRleHQgVGhlIGNpcGhlcnRleHQuXG5cdCAgICAgICAgICogQHBhcmFtIHtGb3JtYXR0ZXJ9IGZvcm1hdCBUaGUgZm9ybWF0dGluZyBzdHJhdGVneSB0byB1c2UgdG8gcGFyc2Ugc2VyaWFsaXplZCBjaXBoZXJ0ZXh0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7Q2lwaGVyUGFyYW1zfSBUaGUgdW5zZXJpYWxpemVkIGNpcGhlcnRleHQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBjaXBoZXJ0ZXh0UGFyYW1zID0gQ3J5cHRvSlMubGliLlNlcmlhbGl6YWJsZUNpcGhlci5fcGFyc2UoY2lwaGVydGV4dFN0cmluZ09yUGFyYW1zLCBmb3JtYXQpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIF9wYXJzZTogZnVuY3Rpb24gKGNpcGhlcnRleHQsIGZvcm1hdCkge1xuXHQgICAgICAgICAgICBpZiAodHlwZW9mIGNpcGhlcnRleHQgPT0gJ3N0cmluZycpIHtcblx0ICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXQucGFyc2UoY2lwaGVydGV4dCwgdGhpcyk7XG5cdCAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICByZXR1cm4gY2lwaGVydGV4dDtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIEtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uIG5hbWVzcGFjZS5cblx0ICAgICAqL1xuXHQgICAgdmFyIENfa2RmID0gQy5rZGYgPSB7fTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBPcGVuU1NMIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uLlxuXHQgICAgICovXG5cdCAgICB2YXIgT3BlblNTTEtkZiA9IENfa2RmLk9wZW5TU0wgPSB7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogRGVyaXZlcyBhIGtleSBhbmQgSVYgZnJvbSBhIHBhc3N3b3JkLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHBhc3N3b3JkIFRoZSBwYXNzd29yZCB0byBkZXJpdmUgZnJvbS5cblx0ICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0ga2V5U2l6ZSBUaGUgc2l6ZSBpbiB3b3JkcyBvZiB0aGUga2V5IHRvIGdlbmVyYXRlLlxuXHQgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpdlNpemUgVGhlIHNpemUgaW4gd29yZHMgb2YgdGhlIElWIHRvIGdlbmVyYXRlLlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gc2FsdCAoT3B0aW9uYWwpIEEgNjQtYml0IHNhbHQgdG8gdXNlLiBJZiBvbWl0dGVkLCBhIHNhbHQgd2lsbCBiZSBnZW5lcmF0ZWQgcmFuZG9tbHkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtDaXBoZXJQYXJhbXN9IEEgY2lwaGVyIHBhcmFtcyBvYmplY3Qgd2l0aCB0aGUga2V5LCBJViwgYW5kIHNhbHQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBkZXJpdmVkUGFyYW1zID0gQ3J5cHRvSlMua2RmLk9wZW5TU0wuZXhlY3V0ZSgnUGFzc3dvcmQnLCAyNTYvMzIsIDEyOC8zMik7XG5cdCAgICAgICAgICogICAgIHZhciBkZXJpdmVkUGFyYW1zID0gQ3J5cHRvSlMua2RmLk9wZW5TU0wuZXhlY3V0ZSgnUGFzc3dvcmQnLCAyNTYvMzIsIDEyOC8zMiwgJ3NhbHRzYWx0Jyk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgZXhlY3V0ZTogZnVuY3Rpb24gKHBhc3N3b3JkLCBrZXlTaXplLCBpdlNpemUsIHNhbHQpIHtcblx0ICAgICAgICAgICAgLy8gR2VuZXJhdGUgcmFuZG9tIHNhbHRcblx0ICAgICAgICAgICAgaWYgKCFzYWx0KSB7XG5cdCAgICAgICAgICAgICAgICBzYWx0ID0gV29yZEFycmF5LnJhbmRvbSg2NC84KTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIERlcml2ZSBrZXkgYW5kIElWXG5cdCAgICAgICAgICAgIHZhciBrZXkgPSBFdnBLREYuY3JlYXRlKHsga2V5U2l6ZToga2V5U2l6ZSArIGl2U2l6ZSB9KS5jb21wdXRlKHBhc3N3b3JkLCBzYWx0KTtcblxuXHQgICAgICAgICAgICAvLyBTZXBhcmF0ZSBrZXkgYW5kIElWXG5cdCAgICAgICAgICAgIHZhciBpdiA9IFdvcmRBcnJheS5jcmVhdGUoa2V5LndvcmRzLnNsaWNlKGtleVNpemUpLCBpdlNpemUgKiA0KTtcblx0ICAgICAgICAgICAga2V5LnNpZ0J5dGVzID0ga2V5U2l6ZSAqIDQ7XG5cblx0ICAgICAgICAgICAgLy8gUmV0dXJuIHBhcmFtc1xuXHQgICAgICAgICAgICByZXR1cm4gQ2lwaGVyUGFyYW1zLmNyZWF0ZSh7IGtleToga2V5LCBpdjogaXYsIHNhbHQ6IHNhbHQgfSk7XG5cdCAgICAgICAgfVxuXHQgICAgfTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBBIHNlcmlhbGl6YWJsZSBjaXBoZXIgd3JhcHBlciB0aGF0IGRlcml2ZXMgdGhlIGtleSBmcm9tIGEgcGFzc3dvcmQsXG5cdCAgICAgKiBhbmQgcmV0dXJucyBjaXBoZXJ0ZXh0IGFzIGEgc2VyaWFsaXphYmxlIGNpcGhlciBwYXJhbXMgb2JqZWN0LlxuXHQgICAgICovXG5cdCAgICB2YXIgUGFzc3dvcmRCYXNlZENpcGhlciA9IENfbGliLlBhc3N3b3JkQmFzZWRDaXBoZXIgPSBTZXJpYWxpemFibGVDaXBoZXIuZXh0ZW5kKHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcHJvcGVydHkge0tERn0ga2RmIFRoZSBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbiB0byB1c2UgdG8gZ2VuZXJhdGUgYSBrZXkgYW5kIElWIGZyb20gYSBwYXNzd29yZC4gRGVmYXVsdDogT3BlblNTTFxuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNmZzogU2VyaWFsaXphYmxlQ2lwaGVyLmNmZy5leHRlbmQoe1xuXHQgICAgICAgICAgICBrZGY6IE9wZW5TU0xLZGZcblx0ICAgICAgICB9KSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEVuY3J5cHRzIGEgbWVzc2FnZSB1c2luZyBhIHBhc3N3b3JkLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtDaXBoZXJ9IGNpcGhlciBUaGUgY2lwaGVyIGFsZ29yaXRobSB0byB1c2UuXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGVuY3J5cHQuXG5cdCAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHBhc3N3b3JkIFRoZSBwYXNzd29yZC5cblx0ICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIChPcHRpb25hbCkgVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB1c2UgZm9yIHRoaXMgb3BlcmF0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7Q2lwaGVyUGFyYW1zfSBBIGNpcGhlciBwYXJhbXMgb2JqZWN0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgY2lwaGVydGV4dFBhcmFtcyA9IENyeXB0b0pTLmxpYi5QYXNzd29yZEJhc2VkQ2lwaGVyLmVuY3J5cHQoQ3J5cHRvSlMuYWxnby5BRVMsIG1lc3NhZ2UsICdwYXNzd29yZCcpO1xuXHQgICAgICAgICAqICAgICB2YXIgY2lwaGVydGV4dFBhcmFtcyA9IENyeXB0b0pTLmxpYi5QYXNzd29yZEJhc2VkQ2lwaGVyLmVuY3J5cHQoQ3J5cHRvSlMuYWxnby5BRVMsIG1lc3NhZ2UsICdwYXNzd29yZCcsIHsgZm9ybWF0OiBDcnlwdG9KUy5mb3JtYXQuT3BlblNTTCB9KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBlbmNyeXB0OiBmdW5jdGlvbiAoY2lwaGVyLCBtZXNzYWdlLCBwYXNzd29yZCwgY2ZnKSB7XG5cdCAgICAgICAgICAgIC8vIEFwcGx5IGNvbmZpZyBkZWZhdWx0c1xuXHQgICAgICAgICAgICBjZmcgPSB0aGlzLmNmZy5leHRlbmQoY2ZnKTtcblxuXHQgICAgICAgICAgICAvLyBEZXJpdmUga2V5IGFuZCBvdGhlciBwYXJhbXNcblx0ICAgICAgICAgICAgdmFyIGRlcml2ZWRQYXJhbXMgPSBjZmcua2RmLmV4ZWN1dGUocGFzc3dvcmQsIGNpcGhlci5rZXlTaXplLCBjaXBoZXIuaXZTaXplKTtcblxuXHQgICAgICAgICAgICAvLyBBZGQgSVYgdG8gY29uZmlnXG5cdCAgICAgICAgICAgIGNmZy5pdiA9IGRlcml2ZWRQYXJhbXMuaXY7XG5cblx0ICAgICAgICAgICAgLy8gRW5jcnlwdFxuXHQgICAgICAgICAgICB2YXIgY2lwaGVydGV4dCA9IFNlcmlhbGl6YWJsZUNpcGhlci5lbmNyeXB0LmNhbGwodGhpcywgY2lwaGVyLCBtZXNzYWdlLCBkZXJpdmVkUGFyYW1zLmtleSwgY2ZnKTtcblxuXHQgICAgICAgICAgICAvLyBNaXggaW4gZGVyaXZlZCBwYXJhbXNcblx0ICAgICAgICAgICAgY2lwaGVydGV4dC5taXhJbihkZXJpdmVkUGFyYW1zKTtcblxuXHQgICAgICAgICAgICByZXR1cm4gY2lwaGVydGV4dDtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogRGVjcnlwdHMgc2VyaWFsaXplZCBjaXBoZXJ0ZXh0IHVzaW5nIGEgcGFzc3dvcmQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge0NpcGhlcn0gY2lwaGVyIFRoZSBjaXBoZXIgYWxnb3JpdGhtIHRvIHVzZS5cblx0ICAgICAgICAgKiBAcGFyYW0ge0NpcGhlclBhcmFtc3xzdHJpbmd9IGNpcGhlcnRleHQgVGhlIGNpcGhlcnRleHQgdG8gZGVjcnlwdC5cblx0ICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGFzc3dvcmQgVGhlIHBhc3N3b3JkLlxuXHQgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcgKE9wdGlvbmFsKSBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHVzZSBmb3IgdGhpcyBvcGVyYXRpb24uXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBwbGFpbnRleHQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBwbGFpbnRleHQgPSBDcnlwdG9KUy5saWIuUGFzc3dvcmRCYXNlZENpcGhlci5kZWNyeXB0KENyeXB0b0pTLmFsZ28uQUVTLCBmb3JtYXR0ZWRDaXBoZXJ0ZXh0LCAncGFzc3dvcmQnLCB7IGZvcm1hdDogQ3J5cHRvSlMuZm9ybWF0Lk9wZW5TU0wgfSk7XG5cdCAgICAgICAgICogICAgIHZhciBwbGFpbnRleHQgPSBDcnlwdG9KUy5saWIuUGFzc3dvcmRCYXNlZENpcGhlci5kZWNyeXB0KENyeXB0b0pTLmFsZ28uQUVTLCBjaXBoZXJ0ZXh0UGFyYW1zLCAncGFzc3dvcmQnLCB7IGZvcm1hdDogQ3J5cHRvSlMuZm9ybWF0Lk9wZW5TU0wgfSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgZGVjcnlwdDogZnVuY3Rpb24gKGNpcGhlciwgY2lwaGVydGV4dCwgcGFzc3dvcmQsIGNmZykge1xuXHQgICAgICAgICAgICAvLyBBcHBseSBjb25maWcgZGVmYXVsdHNcblx0ICAgICAgICAgICAgY2ZnID0gdGhpcy5jZmcuZXh0ZW5kKGNmZyk7XG5cblx0ICAgICAgICAgICAgLy8gQ29udmVydCBzdHJpbmcgdG8gQ2lwaGVyUGFyYW1zXG5cdCAgICAgICAgICAgIGNpcGhlcnRleHQgPSB0aGlzLl9wYXJzZShjaXBoZXJ0ZXh0LCBjZmcuZm9ybWF0KTtcblxuXHQgICAgICAgICAgICAvLyBEZXJpdmUga2V5IGFuZCBvdGhlciBwYXJhbXNcblx0ICAgICAgICAgICAgdmFyIGRlcml2ZWRQYXJhbXMgPSBjZmcua2RmLmV4ZWN1dGUocGFzc3dvcmQsIGNpcGhlci5rZXlTaXplLCBjaXBoZXIuaXZTaXplLCBjaXBoZXJ0ZXh0LnNhbHQpO1xuXG5cdCAgICAgICAgICAgIC8vIEFkZCBJViB0byBjb25maWdcblx0ICAgICAgICAgICAgY2ZnLml2ID0gZGVyaXZlZFBhcmFtcy5pdjtcblxuXHQgICAgICAgICAgICAvLyBEZWNyeXB0XG5cdCAgICAgICAgICAgIHZhciBwbGFpbnRleHQgPSBTZXJpYWxpemFibGVDaXBoZXIuZGVjcnlwdC5jYWxsKHRoaXMsIGNpcGhlciwgY2lwaGVydGV4dCwgZGVyaXZlZFBhcmFtcy5rZXksIGNmZyk7XG5cblx0ICAgICAgICAgICAgcmV0dXJuIHBsYWludGV4dDtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblx0fSgpKTtcblxuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSkge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdHJvb3QuQ3J5cHRvSlMgPSBmYWN0b3J5KCk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKCkge1xuXG5cdC8qZ2xvYmFscyB3aW5kb3csIGdsb2JhbCwgcmVxdWlyZSovXG5cblx0LyoqXG5cdCAqIENyeXB0b0pTIGNvcmUgY29tcG9uZW50cy5cblx0ICovXG5cdHZhciBDcnlwdG9KUyA9IENyeXB0b0pTIHx8IChmdW5jdGlvbiAoTWF0aCwgdW5kZWZpbmVkKSB7XG5cblx0ICAgIHZhciBjcnlwdG87XG5cblx0ICAgIC8vIE5hdGl2ZSBjcnlwdG8gZnJvbSB3aW5kb3cgKEJyb3dzZXIpXG5cdCAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmNyeXB0bykge1xuXHQgICAgICAgIGNyeXB0byA9IHdpbmRvdy5jcnlwdG87XG5cdCAgICB9XG5cblx0ICAgIC8vIE5hdGl2ZSBjcnlwdG8gaW4gd2ViIHdvcmtlciAoQnJvd3Nlcilcblx0ICAgIGlmICh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5jcnlwdG8pIHtcblx0ICAgICAgICBjcnlwdG8gPSBzZWxmLmNyeXB0bztcblx0ICAgIH1cblxuXHQgICAgLy8gTmF0aXZlIGNyeXB0byBmcm9tIHdvcmtlclxuXHQgICAgaWYgKHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWxUaGlzLmNyeXB0bykge1xuXHQgICAgICAgIGNyeXB0byA9IGdsb2JhbFRoaXMuY3J5cHRvO1xuXHQgICAgfVxuXG5cdCAgICAvLyBOYXRpdmUgKGV4cGVyaW1lbnRhbCBJRSAxMSkgY3J5cHRvIGZyb20gd2luZG93IChCcm93c2VyKVxuXHQgICAgaWYgKCFjcnlwdG8gJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lm1zQ3J5cHRvKSB7XG5cdCAgICAgICAgY3J5cHRvID0gd2luZG93Lm1zQ3J5cHRvO1xuXHQgICAgfVxuXG5cdCAgICAvLyBOYXRpdmUgY3J5cHRvIGZyb20gZ2xvYmFsIChOb2RlSlMpXG5cdCAgICBpZiAoIWNyeXB0byAmJiB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWwuY3J5cHRvKSB7XG5cdCAgICAgICAgY3J5cHRvID0gZ2xvYmFsLmNyeXB0bztcblx0ICAgIH1cblxuXHQgICAgLy8gTmF0aXZlIGNyeXB0byBpbXBvcnQgdmlhIHJlcXVpcmUgKE5vZGVKUylcblx0ICAgIGlmICghY3J5cHRvICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgICAgdHJ5IHtcblx0ICAgICAgICAgICAgY3J5cHRvID0gcmVxdWlyZSgnY3J5cHRvJyk7XG5cdCAgICAgICAgfSBjYXRjaCAoZXJyKSB7fVxuXHQgICAgfVxuXG5cdCAgICAvKlxuXHQgICAgICogQ3J5cHRvZ3JhcGhpY2FsbHkgc2VjdXJlIHBzZXVkb3JhbmRvbSBudW1iZXIgZ2VuZXJhdG9yXG5cdCAgICAgKlxuXHQgICAgICogQXMgTWF0aC5yYW5kb20oKSBpcyBjcnlwdG9ncmFwaGljYWxseSBub3Qgc2FmZSB0byB1c2Vcblx0ICAgICAqL1xuXHQgICAgdmFyIGNyeXB0b1NlY3VyZVJhbmRvbUludCA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICBpZiAoY3J5cHRvKSB7XG5cdCAgICAgICAgICAgIC8vIFVzZSBnZXRSYW5kb21WYWx1ZXMgbWV0aG9kIChCcm93c2VyKVxuXHQgICAgICAgICAgICBpZiAodHlwZW9mIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAgICAgICAgICAgIHRyeSB7XG5cdCAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQzMkFycmF5KDEpKVswXTtcblx0ICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge31cblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIFVzZSByYW5kb21CeXRlcyBtZXRob2QgKE5vZGVKUylcblx0ICAgICAgICAgICAgaWYgKHR5cGVvZiBjcnlwdG8ucmFuZG9tQnl0ZXMgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAgICAgICAgICAgIHRyeSB7XG5cdCAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyeXB0by5yYW5kb21CeXRlcyg0KS5yZWFkSW50MzJMRSgpO1xuXHQgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7fVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOYXRpdmUgY3J5cHRvIG1vZHVsZSBjb3VsZCBub3QgYmUgdXNlZCB0byBnZXQgc2VjdXJlIHJhbmRvbSBudW1iZXIuJyk7XG5cdCAgICB9O1xuXG5cdCAgICAvKlxuXHQgICAgICogTG9jYWwgcG9seWZpbGwgb2YgT2JqZWN0LmNyZWF0ZVxuXG5cdCAgICAgKi9cblx0ICAgIHZhciBjcmVhdGUgPSBPYmplY3QuY3JlYXRlIHx8IChmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgZnVuY3Rpb24gRigpIHt9XG5cblx0ICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG9iaikge1xuXHQgICAgICAgICAgICB2YXIgc3VidHlwZTtcblxuXHQgICAgICAgICAgICBGLnByb3RvdHlwZSA9IG9iajtcblxuXHQgICAgICAgICAgICBzdWJ0eXBlID0gbmV3IEYoKTtcblxuXHQgICAgICAgICAgICBGLnByb3RvdHlwZSA9IG51bGw7XG5cblx0ICAgICAgICAgICAgcmV0dXJuIHN1YnR5cGU7XG5cdCAgICAgICAgfTtcblx0ICAgIH0oKSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogQ3J5cHRvSlMgbmFtZXNwYWNlLlxuXHQgICAgICovXG5cdCAgICB2YXIgQyA9IHt9O1xuXG5cdCAgICAvKipcblx0ICAgICAqIExpYnJhcnkgbmFtZXNwYWNlLlxuXHQgICAgICovXG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYiA9IHt9O1xuXG5cdCAgICAvKipcblx0ICAgICAqIEJhc2Ugb2JqZWN0IGZvciBwcm90b3R5cGFsIGluaGVyaXRhbmNlLlxuXHQgICAgICovXG5cdCAgICB2YXIgQmFzZSA9IENfbGliLkJhc2UgPSAoZnVuY3Rpb24gKCkge1xuXG5cblx0ICAgICAgICByZXR1cm4ge1xuXHQgICAgICAgICAgICAvKipcblx0ICAgICAgICAgICAgICogQ3JlYXRlcyBhIG5ldyBvYmplY3QgdGhhdCBpbmhlcml0cyBmcm9tIHRoaXMgb2JqZWN0LlxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3ZlcnJpZGVzIFByb3BlcnRpZXMgdG8gY29weSBpbnRvIHRoZSBuZXcgb2JqZWN0LlxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiBAcmV0dXJuIHtPYmplY3R9IFRoZSBuZXcgb2JqZWN0LlxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqICAgICB2YXIgTXlUeXBlID0gQ3J5cHRvSlMubGliLkJhc2UuZXh0ZW5kKHtcblx0ICAgICAgICAgICAgICogICAgICAgICBmaWVsZDogJ3ZhbHVlJyxcblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogICAgICAgICBtZXRob2Q6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgICogICAgICAgICB9XG5cdCAgICAgICAgICAgICAqICAgICB9KTtcblx0ICAgICAgICAgICAgICovXG5cdCAgICAgICAgICAgIGV4dGVuZDogZnVuY3Rpb24gKG92ZXJyaWRlcykge1xuXHQgICAgICAgICAgICAgICAgLy8gU3Bhd25cblx0ICAgICAgICAgICAgICAgIHZhciBzdWJ0eXBlID0gY3JlYXRlKHRoaXMpO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBBdWdtZW50XG5cdCAgICAgICAgICAgICAgICBpZiAob3ZlcnJpZGVzKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgc3VidHlwZS5taXhJbihvdmVycmlkZXMpO1xuXHQgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICAvLyBDcmVhdGUgZGVmYXVsdCBpbml0aWFsaXplclxuXHQgICAgICAgICAgICAgICAgaWYgKCFzdWJ0eXBlLmhhc093blByb3BlcnR5KCdpbml0JykgfHwgdGhpcy5pbml0ID09PSBzdWJ0eXBlLmluaXQpIHtcblx0ICAgICAgICAgICAgICAgICAgICBzdWJ0eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHN1YnR5cGUuJHN1cGVyLmluaXQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0ICAgICAgICAgICAgICAgICAgICB9O1xuXHQgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICAvLyBJbml0aWFsaXplcidzIHByb3RvdHlwZSBpcyB0aGUgc3VidHlwZSBvYmplY3Rcblx0ICAgICAgICAgICAgICAgIHN1YnR5cGUuaW5pdC5wcm90b3R5cGUgPSBzdWJ0eXBlO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBSZWZlcmVuY2Ugc3VwZXJ0eXBlXG5cdCAgICAgICAgICAgICAgICBzdWJ0eXBlLiRzdXBlciA9IHRoaXM7XG5cblx0ICAgICAgICAgICAgICAgIHJldHVybiBzdWJ0eXBlO1xuXHQgICAgICAgICAgICB9LFxuXG5cdCAgICAgICAgICAgIC8qKlxuXHQgICAgICAgICAgICAgKiBFeHRlbmRzIHRoaXMgb2JqZWN0IGFuZCBydW5zIHRoZSBpbml0IG1ldGhvZC5cblx0ICAgICAgICAgICAgICogQXJndW1lbnRzIHRvIGNyZWF0ZSgpIHdpbGwgYmUgcGFzc2VkIHRvIGluaXQoKS5cblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogQHJldHVybiB7T2JqZWN0fSBUaGUgbmV3IG9iamVjdC5cblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiAgICAgdmFyIGluc3RhbmNlID0gTXlUeXBlLmNyZWF0ZSgpO1xuXHQgICAgICAgICAgICAgKi9cblx0ICAgICAgICAgICAgY3JlYXRlOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgICAgICB2YXIgaW5zdGFuY2UgPSB0aGlzLmV4dGVuZCgpO1xuXHQgICAgICAgICAgICAgICAgaW5zdGFuY2UuaW5pdC5hcHBseShpbnN0YW5jZSwgYXJndW1lbnRzKTtcblxuXHQgICAgICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlO1xuXHQgICAgICAgICAgICB9LFxuXG5cdCAgICAgICAgICAgIC8qKlxuXHQgICAgICAgICAgICAgKiBJbml0aWFsaXplcyBhIG5ld2x5IGNyZWF0ZWQgb2JqZWN0LlxuXHQgICAgICAgICAgICAgKiBPdmVycmlkZSB0aGlzIG1ldGhvZCB0byBhZGQgc29tZSBsb2dpYyB3aGVuIHlvdXIgb2JqZWN0cyBhcmUgY3JlYXRlZC5cblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogICAgIHZhciBNeVR5cGUgPSBDcnlwdG9KUy5saWIuQmFzZS5leHRlbmQoe1xuXHQgICAgICAgICAgICAgKiAgICAgICAgIGluaXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgICogICAgICAgICAgICAgLy8gLi4uXG5cdCAgICAgICAgICAgICAqICAgICAgICAgfVxuXHQgICAgICAgICAgICAgKiAgICAgfSk7XG5cdCAgICAgICAgICAgICAqL1xuXHQgICAgICAgICAgICBpbml0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIH0sXG5cblx0ICAgICAgICAgICAgLyoqXG5cdCAgICAgICAgICAgICAqIENvcGllcyBwcm9wZXJ0aWVzIGludG8gdGhpcyBvYmplY3QuXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wZXJ0aWVzIFRoZSBwcm9wZXJ0aWVzIHRvIG1peCBpbi5cblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogICAgIE15VHlwZS5taXhJbih7XG5cdCAgICAgICAgICAgICAqICAgICAgICAgZmllbGQ6ICd2YWx1ZSdcblx0ICAgICAgICAgICAgICogICAgIH0pO1xuXHQgICAgICAgICAgICAgKi9cblx0ICAgICAgICAgICAgbWl4SW46IGZ1bmN0aW9uIChwcm9wZXJ0aWVzKSB7XG5cdCAgICAgICAgICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eU5hbWUgaW4gcHJvcGVydGllcykge1xuXHQgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHByb3BlcnR5TmFtZSkpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1twcm9wZXJ0eU5hbWVdID0gcHJvcGVydGllc1twcm9wZXJ0eU5hbWVdO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgLy8gSUUgd29uJ3QgY29weSB0b1N0cmluZyB1c2luZyB0aGUgbG9vcCBhYm92ZVxuXHQgICAgICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoJ3RvU3RyaW5nJykpIHtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLnRvU3RyaW5nID0gcHJvcGVydGllcy50b1N0cmluZztcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfSxcblxuXHQgICAgICAgICAgICAvKipcblx0ICAgICAgICAgICAgICogQ3JlYXRlcyBhIGNvcHkgb2YgdGhpcyBvYmplY3QuXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqIEByZXR1cm4ge09iamVjdH0gVGhlIGNsb25lLlxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiAgICAgdmFyIGNsb25lID0gaW5zdGFuY2UuY2xvbmUoKTtcblx0ICAgICAgICAgICAgICovXG5cdCAgICAgICAgICAgIGNsb25lOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbml0LnByb3RvdHlwZS5leHRlbmQodGhpcyk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9O1xuXHQgICAgfSgpKTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBBbiBhcnJheSBvZiAzMi1iaXQgd29yZHMuXG5cdCAgICAgKlxuXHQgICAgICogQHByb3BlcnR5IHtBcnJheX0gd29yZHMgVGhlIGFycmF5IG9mIDMyLWJpdCB3b3Jkcy5cblx0ICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBzaWdCeXRlcyBUaGUgbnVtYmVyIG9mIHNpZ25pZmljYW50IGJ5dGVzIGluIHRoaXMgd29yZCBhcnJheS5cblx0ICAgICAqL1xuXHQgICAgdmFyIFdvcmRBcnJheSA9IENfbGliLldvcmRBcnJheSA9IEJhc2UuZXh0ZW5kKHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBJbml0aWFsaXplcyBhIG5ld2x5IGNyZWF0ZWQgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IHdvcmRzIChPcHRpb25hbCkgQW4gYXJyYXkgb2YgMzItYml0IHdvcmRzLlxuXHQgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzaWdCeXRlcyAoT3B0aW9uYWwpIFRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgYnl0ZXMgaW4gdGhlIHdvcmRzLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgd29yZEFycmF5ID0gQ3J5cHRvSlMubGliLldvcmRBcnJheS5jcmVhdGUoKTtcblx0ICAgICAgICAgKiAgICAgdmFyIHdvcmRBcnJheSA9IENyeXB0b0pTLmxpYi5Xb3JkQXJyYXkuY3JlYXRlKFsweDAwMDEwMjAzLCAweDA0MDUwNjA3XSk7XG5cdCAgICAgICAgICogICAgIHZhciB3b3JkQXJyYXkgPSBDcnlwdG9KUy5saWIuV29yZEFycmF5LmNyZWF0ZShbMHgwMDAxMDIwMywgMHgwNDA1MDYwN10sIDYpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGluaXQ6IGZ1bmN0aW9uICh3b3Jkcywgc2lnQnl0ZXMpIHtcblx0ICAgICAgICAgICAgd29yZHMgPSB0aGlzLndvcmRzID0gd29yZHMgfHwgW107XG5cblx0ICAgICAgICAgICAgaWYgKHNpZ0J5dGVzICE9IHVuZGVmaW5lZCkge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5zaWdCeXRlcyA9IHNpZ0J5dGVzO1xuXHQgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5zaWdCeXRlcyA9IHdvcmRzLmxlbmd0aCAqIDQ7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgdGhpcyB3b3JkIGFycmF5IHRvIGEgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtFbmNvZGVyfSBlbmNvZGVyIChPcHRpb25hbCkgVGhlIGVuY29kaW5nIHN0cmF0ZWd5IHRvIHVzZS4gRGVmYXVsdDogQ3J5cHRvSlMuZW5jLkhleFxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgc3RyaW5naWZpZWQgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHN0cmluZyA9IHdvcmRBcnJheSArICcnO1xuXHQgICAgICAgICAqICAgICB2YXIgc3RyaW5nID0gd29yZEFycmF5LnRvU3RyaW5nKCk7XG5cdCAgICAgICAgICogICAgIHZhciBzdHJpbmcgPSB3b3JkQXJyYXkudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLlV0ZjgpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHRvU3RyaW5nOiBmdW5jdGlvbiAoZW5jb2Rlcikge1xuXHQgICAgICAgICAgICByZXR1cm4gKGVuY29kZXIgfHwgSGV4KS5zdHJpbmdpZnkodGhpcyk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbmNhdGVuYXRlcyBhIHdvcmQgYXJyYXkgdG8gdGhpcyB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl9IHdvcmRBcnJheSBUaGUgd29yZCBhcnJheSB0byBhcHBlbmQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoaXMgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgd29yZEFycmF5MS5jb25jYXQod29yZEFycmF5Mik7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgY29uY2F0OiBmdW5jdGlvbiAod29yZEFycmF5KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgdGhpc1dvcmRzID0gdGhpcy53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIHRoYXRXb3JkcyA9IHdvcmRBcnJheS53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIHRoaXNTaWdCeXRlcyA9IHRoaXMuc2lnQnl0ZXM7XG5cdCAgICAgICAgICAgIHZhciB0aGF0U2lnQnl0ZXMgPSB3b3JkQXJyYXkuc2lnQnl0ZXM7XG5cblx0ICAgICAgICAgICAgLy8gQ2xhbXAgZXhjZXNzIGJpdHNcblx0ICAgICAgICAgICAgdGhpcy5jbGFtcCgpO1xuXG5cdCAgICAgICAgICAgIC8vIENvbmNhdFxuXHQgICAgICAgICAgICBpZiAodGhpc1NpZ0J5dGVzICUgNCkge1xuXHQgICAgICAgICAgICAgICAgLy8gQ29weSBvbmUgYnl0ZSBhdCBhIHRpbWVcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhhdFNpZ0J5dGVzOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgdGhhdEJ5dGUgPSAodGhhdFdvcmRzW2kgPj4+IDJdID4+PiAoMjQgLSAoaSAlIDQpICogOCkpICYgMHhmZjtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzV29yZHNbKHRoaXNTaWdCeXRlcyArIGkpID4+PiAyXSB8PSB0aGF0Qnl0ZSA8PCAoMjQgLSAoKHRoaXNTaWdCeXRlcyArIGkpICUgNCkgKiA4KTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIC8vIENvcHkgb25lIHdvcmQgYXQgYSB0aW1lXG5cdCAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRoYXRTaWdCeXRlczsgaiArPSA0KSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpc1dvcmRzWyh0aGlzU2lnQnl0ZXMgKyBqKSA+Pj4gMl0gPSB0aGF0V29yZHNbaiA+Pj4gMl07XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgdGhpcy5zaWdCeXRlcyArPSB0aGF0U2lnQnl0ZXM7XG5cblx0ICAgICAgICAgICAgLy8gQ2hhaW5hYmxlXG5cdCAgICAgICAgICAgIHJldHVybiB0aGlzO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBSZW1vdmVzIGluc2lnbmlmaWNhbnQgYml0cy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgd29yZEFycmF5LmNsYW1wKCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgY2xhbXA6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciB3b3JkcyA9IHRoaXMud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBzaWdCeXRlcyA9IHRoaXMuc2lnQnl0ZXM7XG5cblx0ICAgICAgICAgICAgLy8gQ2xhbXBcblx0ICAgICAgICAgICAgd29yZHNbc2lnQnl0ZXMgPj4+IDJdICY9IDB4ZmZmZmZmZmYgPDwgKDMyIC0gKHNpZ0J5dGVzICUgNCkgKiA4KTtcblx0ICAgICAgICAgICAgd29yZHMubGVuZ3RoID0gTWF0aC5jZWlsKHNpZ0J5dGVzIC8gNCk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENyZWF0ZXMgYSBjb3B5IG9mIHRoaXMgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIGNsb25lLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgY2xvbmUgPSB3b3JkQXJyYXkuY2xvbmUoKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBjbG9uZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB2YXIgY2xvbmUgPSBCYXNlLmNsb25lLmNhbGwodGhpcyk7XG5cdCAgICAgICAgICAgIGNsb25lLndvcmRzID0gdGhpcy53b3Jkcy5zbGljZSgwKTtcblxuXHQgICAgICAgICAgICByZXR1cm4gY2xvbmU7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENyZWF0ZXMgYSB3b3JkIGFycmF5IGZpbGxlZCB3aXRoIHJhbmRvbSBieXRlcy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuQnl0ZXMgVGhlIG51bWJlciBvZiByYW5kb20gYnl0ZXMgdG8gZ2VuZXJhdGUuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSByYW5kb20gd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHdvcmRBcnJheSA9IENyeXB0b0pTLmxpYi5Xb3JkQXJyYXkucmFuZG9tKDE2KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICByYW5kb206IGZ1bmN0aW9uIChuQnl0ZXMpIHtcblx0ICAgICAgICAgICAgdmFyIHdvcmRzID0gW107XG5cblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuQnl0ZXM7IGkgKz0gNCkge1xuXHQgICAgICAgICAgICAgICAgd29yZHMucHVzaChjcnlwdG9TZWN1cmVSYW5kb21JbnQoKSk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICByZXR1cm4gbmV3IFdvcmRBcnJheS5pbml0KHdvcmRzLCBuQnl0ZXMpO1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIEVuY29kZXIgbmFtZXNwYWNlLlxuXHQgICAgICovXG5cdCAgICB2YXIgQ19lbmMgPSBDLmVuYyA9IHt9O1xuXG5cdCAgICAvKipcblx0ICAgICAqIEhleCBlbmNvZGluZyBzdHJhdGVneS5cblx0ICAgICAqL1xuXHQgICAgdmFyIEhleCA9IENfZW5jLkhleCA9IHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyBhIHdvcmQgYXJyYXkgdG8gYSBoZXggc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl9IHdvcmRBcnJheSBUaGUgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGhleCBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBoZXhTdHJpbmcgPSBDcnlwdG9KUy5lbmMuSGV4LnN0cmluZ2lmeSh3b3JkQXJyYXkpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHN0cmluZ2lmeTogZnVuY3Rpb24gKHdvcmRBcnJheSkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIHdvcmRzID0gd29yZEFycmF5LndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgc2lnQnl0ZXMgPSB3b3JkQXJyYXkuc2lnQnl0ZXM7XG5cblx0ICAgICAgICAgICAgLy8gQ29udmVydFxuXHQgICAgICAgICAgICB2YXIgaGV4Q2hhcnMgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaWdCeXRlczsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICB2YXIgYml0ZSA9ICh3b3Jkc1tpID4+PiAyXSA+Pj4gKDI0IC0gKGkgJSA0KSAqIDgpKSAmIDB4ZmY7XG5cdCAgICAgICAgICAgICAgICBoZXhDaGFycy5wdXNoKChiaXRlID4+PiA0KS50b1N0cmluZygxNikpO1xuXHQgICAgICAgICAgICAgICAgaGV4Q2hhcnMucHVzaCgoYml0ZSAmIDB4MGYpLnRvU3RyaW5nKDE2KSk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICByZXR1cm4gaGV4Q2hhcnMuam9pbignJyk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIGEgaGV4IHN0cmluZyB0byBhIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gaGV4U3RyIFRoZSBoZXggc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHdvcmRBcnJheSA9IENyeXB0b0pTLmVuYy5IZXgucGFyc2UoaGV4U3RyaW5nKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBwYXJzZTogZnVuY3Rpb24gKGhleFN0cikge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICB2YXIgaGV4U3RyTGVuZ3RoID0gaGV4U3RyLmxlbmd0aDtcblxuXHQgICAgICAgICAgICAvLyBDb252ZXJ0XG5cdCAgICAgICAgICAgIHZhciB3b3JkcyA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhleFN0ckxlbmd0aDsgaSArPSAyKSB7XG5cdCAgICAgICAgICAgICAgICB3b3Jkc1tpID4+PiAzXSB8PSBwYXJzZUludChoZXhTdHIuc3Vic3RyKGksIDIpLCAxNikgPDwgKDI0IC0gKGkgJSA4KSAqIDQpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIG5ldyBXb3JkQXJyYXkuaW5pdCh3b3JkcywgaGV4U3RyTGVuZ3RoIC8gMik7XG5cdCAgICAgICAgfVxuXHQgICAgfTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBMYXRpbjEgZW5jb2Rpbmcgc3RyYXRlZ3kuXG5cdCAgICAgKi9cblx0ICAgIHZhciBMYXRpbjEgPSBDX2VuYy5MYXRpbjEgPSB7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgYSB3b3JkIGFycmF5IHRvIGEgTGF0aW4xIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fSB3b3JkQXJyYXkgVGhlIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBMYXRpbjEgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgbGF0aW4xU3RyaW5nID0gQ3J5cHRvSlMuZW5jLkxhdGluMS5zdHJpbmdpZnkod29yZEFycmF5KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBzdHJpbmdpZnk6IGZ1bmN0aW9uICh3b3JkQXJyYXkpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciB3b3JkcyA9IHdvcmRBcnJheS53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIHNpZ0J5dGVzID0gd29yZEFycmF5LnNpZ0J5dGVzO1xuXG5cdCAgICAgICAgICAgIC8vIENvbnZlcnRcblx0ICAgICAgICAgICAgdmFyIGxhdGluMUNoYXJzID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2lnQnl0ZXM7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgdmFyIGJpdGUgPSAod29yZHNbaSA+Pj4gMl0gPj4+ICgyNCAtIChpICUgNCkgKiA4KSkgJiAweGZmO1xuXHQgICAgICAgICAgICAgICAgbGF0aW4xQ2hhcnMucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGJpdGUpKTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiBsYXRpbjFDaGFycy5qb2luKCcnKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgYSBMYXRpbjEgc3RyaW5nIHRvIGEgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBsYXRpbjFTdHIgVGhlIExhdGluMSBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgd29yZEFycmF5ID0gQ3J5cHRvSlMuZW5jLkxhdGluMS5wYXJzZShsYXRpbjFTdHJpbmcpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHBhcnNlOiBmdW5jdGlvbiAobGF0aW4xU3RyKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBsYXRpbjFTdHJMZW5ndGggPSBsYXRpbjFTdHIubGVuZ3RoO1xuXG5cdCAgICAgICAgICAgIC8vIENvbnZlcnRcblx0ICAgICAgICAgICAgdmFyIHdvcmRzID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGF0aW4xU3RyTGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIHdvcmRzW2kgPj4+IDJdIHw9IChsYXRpbjFTdHIuY2hhckNvZGVBdChpKSAmIDB4ZmYpIDw8ICgyNCAtIChpICUgNCkgKiA4KTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiBuZXcgV29yZEFycmF5LmluaXQod29yZHMsIGxhdGluMVN0ckxlbmd0aCk7XG5cdCAgICAgICAgfVxuXHQgICAgfTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBVVEYtOCBlbmNvZGluZyBzdHJhdGVneS5cblx0ICAgICAqL1xuXHQgICAgdmFyIFV0ZjggPSBDX2VuYy5VdGY4ID0ge1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIGEgd29yZCBhcnJheSB0byBhIFVURi04IHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fSB3b3JkQXJyYXkgVGhlIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBVVEYtOCBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciB1dGY4U3RyaW5nID0gQ3J5cHRvSlMuZW5jLlV0Zjguc3RyaW5naWZ5KHdvcmRBcnJheSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgc3RyaW5naWZ5OiBmdW5jdGlvbiAod29yZEFycmF5KSB7XG5cdCAgICAgICAgICAgIHRyeSB7XG5cdCAgICAgICAgICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShMYXRpbjEuc3RyaW5naWZ5KHdvcmRBcnJheSkpKTtcblx0ICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuXHQgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYWxmb3JtZWQgVVRGLTggZGF0YScpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIGEgVVRGLTggc3RyaW5nIHRvIGEgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1dGY4U3RyIFRoZSBVVEYtOCBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgd29yZEFycmF5ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UodXRmOFN0cmluZyk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgcGFyc2U6IGZ1bmN0aW9uICh1dGY4U3RyKSB7XG5cdCAgICAgICAgICAgIHJldHVybiBMYXRpbjEucGFyc2UodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHV0ZjhTdHIpKSk7XG5cdCAgICAgICAgfVxuXHQgICAgfTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBBYnN0cmFjdCBidWZmZXJlZCBibG9jayBhbGdvcml0aG0gdGVtcGxhdGUuXG5cdCAgICAgKlxuXHQgICAgICogVGhlIHByb3BlcnR5IGJsb2NrU2l6ZSBtdXN0IGJlIGltcGxlbWVudGVkIGluIGEgY29uY3JldGUgc3VidHlwZS5cblx0ICAgICAqXG5cdCAgICAgKiBAcHJvcGVydHkge251bWJlcn0gX21pbkJ1ZmZlclNpemUgVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCBzaG91bGQgYmUga2VwdCB1bnByb2Nlc3NlZCBpbiB0aGUgYnVmZmVyLiBEZWZhdWx0OiAwXG5cdCAgICAgKi9cblx0ICAgIHZhciBCdWZmZXJlZEJsb2NrQWxnb3JpdGhtID0gQ19saWIuQnVmZmVyZWRCbG9ja0FsZ29yaXRobSA9IEJhc2UuZXh0ZW5kKHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBSZXNldHMgdGhpcyBibG9jayBhbGdvcml0aG0ncyBkYXRhIGJ1ZmZlciB0byBpdHMgaW5pdGlhbCBzdGF0ZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgYnVmZmVyZWRCbG9ja0FsZ29yaXRobS5yZXNldCgpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHJlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIEluaXRpYWwgdmFsdWVzXG5cdCAgICAgICAgICAgIHRoaXMuX2RhdGEgPSBuZXcgV29yZEFycmF5LmluaXQoKTtcblx0ICAgICAgICAgICAgdGhpcy5fbkRhdGFCeXRlcyA9IDA7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEFkZHMgbmV3IGRhdGEgdG8gdGhpcyBibG9jayBhbGdvcml0aG0ncyBidWZmZXIuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IGRhdGEgVGhlIGRhdGEgdG8gYXBwZW5kLiBTdHJpbmdzIGFyZSBjb252ZXJ0ZWQgdG8gYSBXb3JkQXJyYXkgdXNpbmcgVVRGLTguXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIGJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0uX2FwcGVuZCgnZGF0YScpO1xuXHQgICAgICAgICAqICAgICBidWZmZXJlZEJsb2NrQWxnb3JpdGhtLl9hcHBlbmQod29yZEFycmF5KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBfYXBwZW5kOiBmdW5jdGlvbiAoZGF0YSkge1xuXHQgICAgICAgICAgICAvLyBDb252ZXJ0IHN0cmluZyB0byBXb3JkQXJyYXksIGVsc2UgYXNzdW1lIFdvcmRBcnJheSBhbHJlYWR5XG5cdCAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0YSA9PSAnc3RyaW5nJykge1xuXHQgICAgICAgICAgICAgICAgZGF0YSA9IFV0ZjgucGFyc2UoZGF0YSk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBBcHBlbmRcblx0ICAgICAgICAgICAgdGhpcy5fZGF0YS5jb25jYXQoZGF0YSk7XG5cdCAgICAgICAgICAgIHRoaXMuX25EYXRhQnl0ZXMgKz0gZGF0YS5zaWdCeXRlcztcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogUHJvY2Vzc2VzIGF2YWlsYWJsZSBkYXRhIGJsb2Nrcy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIFRoaXMgbWV0aG9kIGludm9rZXMgX2RvUHJvY2Vzc0Jsb2NrKG9mZnNldCksIHdoaWNoIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgYSBjb25jcmV0ZSBzdWJ0eXBlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtib29sZWFufSBkb0ZsdXNoIFdoZXRoZXIgYWxsIGJsb2NrcyBhbmQgcGFydGlhbCBibG9ja3Mgc2hvdWxkIGJlIHByb2Nlc3NlZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIHByb2Nlc3NlZCBkYXRhLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgcHJvY2Vzc2VkRGF0YSA9IGJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0uX3Byb2Nlc3MoKTtcblx0ICAgICAgICAgKiAgICAgdmFyIHByb2Nlc3NlZERhdGEgPSBidWZmZXJlZEJsb2NrQWxnb3JpdGhtLl9wcm9jZXNzKCEhJ2ZsdXNoJyk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgX3Byb2Nlc3M6IGZ1bmN0aW9uIChkb0ZsdXNoKSB7XG5cdCAgICAgICAgICAgIHZhciBwcm9jZXNzZWRXb3JkcztcblxuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLl9kYXRhO1xuXHQgICAgICAgICAgICB2YXIgZGF0YVdvcmRzID0gZGF0YS53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIGRhdGFTaWdCeXRlcyA9IGRhdGEuc2lnQnl0ZXM7XG5cdCAgICAgICAgICAgIHZhciBibG9ja1NpemUgPSB0aGlzLmJsb2NrU2l6ZTtcblx0ICAgICAgICAgICAgdmFyIGJsb2NrU2l6ZUJ5dGVzID0gYmxvY2tTaXplICogNDtcblxuXHQgICAgICAgICAgICAvLyBDb3VudCBibG9ja3MgcmVhZHlcblx0ICAgICAgICAgICAgdmFyIG5CbG9ja3NSZWFkeSA9IGRhdGFTaWdCeXRlcyAvIGJsb2NrU2l6ZUJ5dGVzO1xuXHQgICAgICAgICAgICBpZiAoZG9GbHVzaCkge1xuXHQgICAgICAgICAgICAgICAgLy8gUm91bmQgdXAgdG8gaW5jbHVkZSBwYXJ0aWFsIGJsb2Nrc1xuXHQgICAgICAgICAgICAgICAgbkJsb2Nrc1JlYWR5ID0gTWF0aC5jZWlsKG5CbG9ja3NSZWFkeSk7XG5cdCAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAvLyBSb3VuZCBkb3duIHRvIGluY2x1ZGUgb25seSBmdWxsIGJsb2Nrcyxcblx0ICAgICAgICAgICAgICAgIC8vIGxlc3MgdGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCBtdXN0IHJlbWFpbiBpbiB0aGUgYnVmZmVyXG5cdCAgICAgICAgICAgICAgICBuQmxvY2tzUmVhZHkgPSBNYXRoLm1heCgobkJsb2Nrc1JlYWR5IHwgMCkgLSB0aGlzLl9taW5CdWZmZXJTaXplLCAwKTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIENvdW50IHdvcmRzIHJlYWR5XG5cdCAgICAgICAgICAgIHZhciBuV29yZHNSZWFkeSA9IG5CbG9ja3NSZWFkeSAqIGJsb2NrU2l6ZTtcblxuXHQgICAgICAgICAgICAvLyBDb3VudCBieXRlcyByZWFkeVxuXHQgICAgICAgICAgICB2YXIgbkJ5dGVzUmVhZHkgPSBNYXRoLm1pbihuV29yZHNSZWFkeSAqIDQsIGRhdGFTaWdCeXRlcyk7XG5cblx0ICAgICAgICAgICAgLy8gUHJvY2VzcyBibG9ja3Ncblx0ICAgICAgICAgICAgaWYgKG5Xb3Jkc1JlYWR5KSB7XG5cdCAgICAgICAgICAgICAgICBmb3IgKHZhciBvZmZzZXQgPSAwOyBvZmZzZXQgPCBuV29yZHNSZWFkeTsgb2Zmc2V0ICs9IGJsb2NrU2l6ZSkge1xuXHQgICAgICAgICAgICAgICAgICAgIC8vIFBlcmZvcm0gY29uY3JldGUtYWxnb3JpdGhtIGxvZ2ljXG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5fZG9Qcm9jZXNzQmxvY2soZGF0YVdvcmRzLCBvZmZzZXQpO1xuXHQgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICAvLyBSZW1vdmUgcHJvY2Vzc2VkIHdvcmRzXG5cdCAgICAgICAgICAgICAgICBwcm9jZXNzZWRXb3JkcyA9IGRhdGFXb3Jkcy5zcGxpY2UoMCwgbldvcmRzUmVhZHkpO1xuXHQgICAgICAgICAgICAgICAgZGF0YS5zaWdCeXRlcyAtPSBuQnl0ZXNSZWFkeTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIFJldHVybiBwcm9jZXNzZWQgd29yZHNcblx0ICAgICAgICAgICAgcmV0dXJuIG5ldyBXb3JkQXJyYXkuaW5pdChwcm9jZXNzZWRXb3JkcywgbkJ5dGVzUmVhZHkpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDcmVhdGVzIGEgY29weSBvZiB0aGlzIG9iamVjdC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge09iamVjdH0gVGhlIGNsb25lLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgY2xvbmUgPSBidWZmZXJlZEJsb2NrQWxnb3JpdGhtLmNsb25lKCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgY2xvbmU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdmFyIGNsb25lID0gQmFzZS5jbG9uZS5jYWxsKHRoaXMpO1xuXHQgICAgICAgICAgICBjbG9uZS5fZGF0YSA9IHRoaXMuX2RhdGEuY2xvbmUoKTtcblxuXHQgICAgICAgICAgICByZXR1cm4gY2xvbmU7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9taW5CdWZmZXJTaXplOiAwXG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBBYnN0cmFjdCBoYXNoZXIgdGVtcGxhdGUuXG5cdCAgICAgKlxuXHQgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IGJsb2NrU2l6ZSBUaGUgbnVtYmVyIG9mIDMyLWJpdCB3b3JkcyB0aGlzIGhhc2hlciBvcGVyYXRlcyBvbi4gRGVmYXVsdDogMTYgKDUxMiBiaXRzKVxuXHQgICAgICovXG5cdCAgICB2YXIgSGFzaGVyID0gQ19saWIuSGFzaGVyID0gQnVmZmVyZWRCbG9ja0FsZ29yaXRobS5leHRlbmQoe1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cblx0ICAgICAgICAgKi9cblx0ICAgICAgICBjZmc6IEJhc2UuZXh0ZW5kKCksXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBJbml0aWFsaXplcyBhIG5ld2x5IGNyZWF0ZWQgaGFzaGVyLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGNmZyAoT3B0aW9uYWwpIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdXNlIGZvciB0aGlzIGhhc2ggY29tcHV0YXRpb24uXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBoYXNoZXIgPSBDcnlwdG9KUy5hbGdvLlNIQTI1Ni5jcmVhdGUoKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBpbml0OiBmdW5jdGlvbiAoY2ZnKSB7XG5cdCAgICAgICAgICAgIC8vIEFwcGx5IGNvbmZpZyBkZWZhdWx0c1xuXHQgICAgICAgICAgICB0aGlzLmNmZyA9IHRoaXMuY2ZnLmV4dGVuZChjZmcpO1xuXG5cdCAgICAgICAgICAgIC8vIFNldCBpbml0aWFsIHZhbHVlc1xuXHQgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIFJlc2V0cyB0aGlzIGhhc2hlciB0byBpdHMgaW5pdGlhbCBzdGF0ZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgaGFzaGVyLnJlc2V0KCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgcmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgLy8gUmVzZXQgZGF0YSBidWZmZXJcblx0ICAgICAgICAgICAgQnVmZmVyZWRCbG9ja0FsZ29yaXRobS5yZXNldC5jYWxsKHRoaXMpO1xuXG5cdCAgICAgICAgICAgIC8vIFBlcmZvcm0gY29uY3JldGUtaGFzaGVyIGxvZ2ljXG5cdCAgICAgICAgICAgIHRoaXMuX2RvUmVzZXQoKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogVXBkYXRlcyB0aGlzIGhhc2hlciB3aXRoIGEgbWVzc2FnZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZVVwZGF0ZSBUaGUgbWVzc2FnZSB0byBhcHBlbmQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtIYXNoZXJ9IFRoaXMgaGFzaGVyLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICBoYXNoZXIudXBkYXRlKCdtZXNzYWdlJyk7XG5cdCAgICAgICAgICogICAgIGhhc2hlci51cGRhdGUod29yZEFycmF5KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uIChtZXNzYWdlVXBkYXRlKSB7XG5cdCAgICAgICAgICAgIC8vIEFwcGVuZFxuXHQgICAgICAgICAgICB0aGlzLl9hcHBlbmQobWVzc2FnZVVwZGF0ZSk7XG5cblx0ICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBoYXNoXG5cdCAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3MoKTtcblxuXHQgICAgICAgICAgICAvLyBDaGFpbmFibGVcblx0ICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEZpbmFsaXplcyB0aGUgaGFzaCBjb21wdXRhdGlvbi5cblx0ICAgICAgICAgKiBOb3RlIHRoYXQgdGhlIGZpbmFsaXplIG9wZXJhdGlvbiBpcyBlZmZlY3RpdmVseSBhIGRlc3RydWN0aXZlLCByZWFkLW9uY2Ugb3BlcmF0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlVXBkYXRlIChPcHRpb25hbCkgQSBmaW5hbCBtZXNzYWdlIHVwZGF0ZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIGhhc2guXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBoYXNoID0gaGFzaGVyLmZpbmFsaXplKCk7XG5cdCAgICAgICAgICogICAgIHZhciBoYXNoID0gaGFzaGVyLmZpbmFsaXplKCdtZXNzYWdlJyk7XG5cdCAgICAgICAgICogICAgIHZhciBoYXNoID0gaGFzaGVyLmZpbmFsaXplKHdvcmRBcnJheSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgZmluYWxpemU6IGZ1bmN0aW9uIChtZXNzYWdlVXBkYXRlKSB7XG5cdCAgICAgICAgICAgIC8vIEZpbmFsIG1lc3NhZ2UgdXBkYXRlXG5cdCAgICAgICAgICAgIGlmIChtZXNzYWdlVXBkYXRlKSB7XG5cdCAgICAgICAgICAgICAgICB0aGlzLl9hcHBlbmQobWVzc2FnZVVwZGF0ZSk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBQZXJmb3JtIGNvbmNyZXRlLWhhc2hlciBsb2dpY1xuXHQgICAgICAgICAgICB2YXIgaGFzaCA9IHRoaXMuX2RvRmluYWxpemUoKTtcblxuXHQgICAgICAgICAgICByZXR1cm4gaGFzaDtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgYmxvY2tTaXplOiA1MTIvMzIsXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDcmVhdGVzIGEgc2hvcnRjdXQgZnVuY3Rpb24gdG8gYSBoYXNoZXIncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtIYXNoZXJ9IGhhc2hlciBUaGUgaGFzaGVyIHRvIGNyZWF0ZSBhIGhlbHBlciBmb3IuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtGdW5jdGlvbn0gVGhlIHNob3J0Y3V0IGZ1bmN0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgU0hBMjU2ID0gQ3J5cHRvSlMubGliLkhhc2hlci5fY3JlYXRlSGVscGVyKENyeXB0b0pTLmFsZ28uU0hBMjU2KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBfY3JlYXRlSGVscGVyOiBmdW5jdGlvbiAoaGFzaGVyKSB7XG5cdCAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAobWVzc2FnZSwgY2ZnKSB7XG5cdCAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGhhc2hlci5pbml0KGNmZykuZmluYWxpemUobWVzc2FnZSk7XG5cdCAgICAgICAgICAgIH07XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENyZWF0ZXMgYSBzaG9ydGN1dCBmdW5jdGlvbiB0byB0aGUgSE1BQydzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge0hhc2hlcn0gaGFzaGVyIFRoZSBoYXNoZXIgdG8gdXNlIGluIHRoaXMgSE1BQyBoZWxwZXIuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtGdW5jdGlvbn0gVGhlIHNob3J0Y3V0IGZ1bmN0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgSG1hY1NIQTI1NiA9IENyeXB0b0pTLmxpYi5IYXNoZXIuX2NyZWF0ZUhtYWNIZWxwZXIoQ3J5cHRvSlMuYWxnby5TSEEyNTYpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIF9jcmVhdGVIbWFjSGVscGVyOiBmdW5jdGlvbiAoaGFzaGVyKSB7XG5cdCAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAobWVzc2FnZSwga2V5KSB7XG5cdCAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENfYWxnby5ITUFDLmluaXQoaGFzaGVyLCBrZXkpLmZpbmFsaXplKG1lc3NhZ2UpO1xuXHQgICAgICAgICAgICB9O1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIEFsZ29yaXRobSBuYW1lc3BhY2UuXG5cdCAgICAgKi9cblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ28gPSB7fTtcblxuXHQgICAgcmV0dXJuIEM7XG5cdH0oTWF0aCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTO1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSkge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfbGliID0gQy5saWI7XG5cdCAgICB2YXIgV29yZEFycmF5ID0gQ19saWIuV29yZEFycmF5O1xuXHQgICAgdmFyIENfZW5jID0gQy5lbmM7XG5cblx0ICAgIC8qKlxuXHQgICAgICogQmFzZTY0IGVuY29kaW5nIHN0cmF0ZWd5LlxuXHQgICAgICovXG5cdCAgICB2YXIgQmFzZTY0ID0gQ19lbmMuQmFzZTY0ID0ge1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIGEgd29yZCBhcnJheSB0byBhIEJhc2U2NCBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheX0gd29yZEFycmF5IFRoZSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgQmFzZTY0IHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGJhc2U2NFN0cmluZyA9IENyeXB0b0pTLmVuYy5CYXNlNjQuc3RyaW5naWZ5KHdvcmRBcnJheSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgc3RyaW5naWZ5OiBmdW5jdGlvbiAod29yZEFycmF5KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgd29yZHMgPSB3b3JkQXJyYXkud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBzaWdCeXRlcyA9IHdvcmRBcnJheS5zaWdCeXRlcztcblx0ICAgICAgICAgICAgdmFyIG1hcCA9IHRoaXMuX21hcDtcblxuXHQgICAgICAgICAgICAvLyBDbGFtcCBleGNlc3MgYml0c1xuXHQgICAgICAgICAgICB3b3JkQXJyYXkuY2xhbXAoKTtcblxuXHQgICAgICAgICAgICAvLyBDb252ZXJ0XG5cdCAgICAgICAgICAgIHZhciBiYXNlNjRDaGFycyA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpZ0J5dGVzOyBpICs9IDMpIHtcblx0ICAgICAgICAgICAgICAgIHZhciBieXRlMSA9ICh3b3Jkc1tpID4+PiAyXSAgICAgICA+Pj4gKDI0IC0gKGkgJSA0KSAqIDgpKSAgICAgICAmIDB4ZmY7XG5cdCAgICAgICAgICAgICAgICB2YXIgYnl0ZTIgPSAod29yZHNbKGkgKyAxKSA+Pj4gMl0gPj4+ICgyNCAtICgoaSArIDEpICUgNCkgKiA4KSkgJiAweGZmO1xuXHQgICAgICAgICAgICAgICAgdmFyIGJ5dGUzID0gKHdvcmRzWyhpICsgMikgPj4+IDJdID4+PiAoMjQgLSAoKGkgKyAyKSAlIDQpICogOCkpICYgMHhmZjtcblxuXHQgICAgICAgICAgICAgICAgdmFyIHRyaXBsZXQgPSAoYnl0ZTEgPDwgMTYpIHwgKGJ5dGUyIDw8IDgpIHwgYnl0ZTM7XG5cblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyAoaiA8IDQpICYmIChpICsgaiAqIDAuNzUgPCBzaWdCeXRlcyk7IGorKykge1xuXHQgICAgICAgICAgICAgICAgICAgIGJhc2U2NENoYXJzLnB1c2gobWFwLmNoYXJBdCgodHJpcGxldCA+Pj4gKDYgKiAoMyAtIGopKSkgJiAweDNmKSk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBBZGQgcGFkZGluZ1xuXHQgICAgICAgICAgICB2YXIgcGFkZGluZ0NoYXIgPSBtYXAuY2hhckF0KDY0KTtcblx0ICAgICAgICAgICAgaWYgKHBhZGRpbmdDaGFyKSB7XG5cdCAgICAgICAgICAgICAgICB3aGlsZSAoYmFzZTY0Q2hhcnMubGVuZ3RoICUgNCkge1xuXHQgICAgICAgICAgICAgICAgICAgIGJhc2U2NENoYXJzLnB1c2gocGFkZGluZ0NoYXIpO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGJhc2U2NENoYXJzLmpvaW4oJycpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyBhIEJhc2U2NCBzdHJpbmcgdG8gYSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NFN0ciBUaGUgQmFzZTY0IHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciB3b3JkQXJyYXkgPSBDcnlwdG9KUy5lbmMuQmFzZTY0LnBhcnNlKGJhc2U2NFN0cmluZyk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgcGFyc2U6IGZ1bmN0aW9uIChiYXNlNjRTdHIpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBiYXNlNjRTdHJMZW5ndGggPSBiYXNlNjRTdHIubGVuZ3RoO1xuXHQgICAgICAgICAgICB2YXIgbWFwID0gdGhpcy5fbWFwO1xuXHQgICAgICAgICAgICB2YXIgcmV2ZXJzZU1hcCA9IHRoaXMuX3JldmVyc2VNYXA7XG5cblx0ICAgICAgICAgICAgaWYgKCFyZXZlcnNlTWFwKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgcmV2ZXJzZU1hcCA9IHRoaXMuX3JldmVyc2VNYXAgPSBbXTtcblx0ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1hcC5sZW5ndGg7IGorKykge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICByZXZlcnNlTWFwW21hcC5jaGFyQ29kZUF0KGopXSA9IGo7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gSWdub3JlIHBhZGRpbmdcblx0ICAgICAgICAgICAgdmFyIHBhZGRpbmdDaGFyID0gbWFwLmNoYXJBdCg2NCk7XG5cdCAgICAgICAgICAgIGlmIChwYWRkaW5nQ2hhcikge1xuXHQgICAgICAgICAgICAgICAgdmFyIHBhZGRpbmdJbmRleCA9IGJhc2U2NFN0ci5pbmRleE9mKHBhZGRpbmdDaGFyKTtcblx0ICAgICAgICAgICAgICAgIGlmIChwYWRkaW5nSW5kZXggIT09IC0xKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgYmFzZTY0U3RyTGVuZ3RoID0gcGFkZGluZ0luZGV4O1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gQ29udmVydFxuXHQgICAgICAgICAgICByZXR1cm4gcGFyc2VMb29wKGJhc2U2NFN0ciwgYmFzZTY0U3RyTGVuZ3RoLCByZXZlcnNlTWFwKTtcblxuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfbWFwOiAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0nXG5cdCAgICB9O1xuXG5cdCAgICBmdW5jdGlvbiBwYXJzZUxvb3AoYmFzZTY0U3RyLCBiYXNlNjRTdHJMZW5ndGgsIHJldmVyc2VNYXApIHtcblx0ICAgICAgdmFyIHdvcmRzID0gW107XG5cdCAgICAgIHZhciBuQnl0ZXMgPSAwO1xuXHQgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhc2U2NFN0ckxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgICBpZiAoaSAlIDQpIHtcblx0ICAgICAgICAgICAgICB2YXIgYml0czEgPSByZXZlcnNlTWFwW2Jhc2U2NFN0ci5jaGFyQ29kZUF0KGkgLSAxKV0gPDwgKChpICUgNCkgKiAyKTtcblx0ICAgICAgICAgICAgICB2YXIgYml0czIgPSByZXZlcnNlTWFwW2Jhc2U2NFN0ci5jaGFyQ29kZUF0KGkpXSA+Pj4gKDYgLSAoaSAlIDQpICogMik7XG5cdCAgICAgICAgICAgICAgdmFyIGJpdHNDb21iaW5lZCA9IGJpdHMxIHwgYml0czI7XG5cdCAgICAgICAgICAgICAgd29yZHNbbkJ5dGVzID4+PiAyXSB8PSBiaXRzQ29tYmluZWQgPDwgKDI0IC0gKG5CeXRlcyAlIDQpICogOCk7XG5cdCAgICAgICAgICAgICAgbkJ5dGVzKys7XG5cdCAgICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIFdvcmRBcnJheS5jcmVhdGUod29yZHMsIG5CeXRlcyk7XG5cdCAgICB9XG5cdH0oKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMuZW5jLkJhc2U2NDtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIFdvcmRBcnJheSA9IENfbGliLldvcmRBcnJheTtcblx0ICAgIHZhciBDX2VuYyA9IEMuZW5jO1xuXG5cdCAgICAvKipcblx0ICAgICAqIEJhc2U2NHVybCBlbmNvZGluZyBzdHJhdGVneS5cblx0ICAgICAqL1xuXHQgICAgdmFyIEJhc2U2NHVybCA9IENfZW5jLkJhc2U2NHVybCA9IHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyBhIHdvcmQgYXJyYXkgdG8gYSBCYXNlNjR1cmwgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl9IHdvcmRBcnJheSBUaGUgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gdXJsU2FmZSBXaGV0aGVyIHRvIHVzZSB1cmwgc2FmZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgQmFzZTY0dXJsIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGJhc2U2NFN0cmluZyA9IENyeXB0b0pTLmVuYy5CYXNlNjR1cmwuc3RyaW5naWZ5KHdvcmRBcnJheSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgc3RyaW5naWZ5OiBmdW5jdGlvbiAod29yZEFycmF5LCB1cmxTYWZlPXRydWUpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciB3b3JkcyA9IHdvcmRBcnJheS53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIHNpZ0J5dGVzID0gd29yZEFycmF5LnNpZ0J5dGVzO1xuXHQgICAgICAgICAgICB2YXIgbWFwID0gdXJsU2FmZSA/IHRoaXMuX3NhZmVfbWFwIDogdGhpcy5fbWFwO1xuXG5cdCAgICAgICAgICAgIC8vIENsYW1wIGV4Y2VzcyBiaXRzXG5cdCAgICAgICAgICAgIHdvcmRBcnJheS5jbGFtcCgpO1xuXG5cdCAgICAgICAgICAgIC8vIENvbnZlcnRcblx0ICAgICAgICAgICAgdmFyIGJhc2U2NENoYXJzID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2lnQnl0ZXM7IGkgKz0gMykge1xuXHQgICAgICAgICAgICAgICAgdmFyIGJ5dGUxID0gKHdvcmRzW2kgPj4+IDJdICAgICAgID4+PiAoMjQgLSAoaSAlIDQpICogOCkpICAgICAgICYgMHhmZjtcblx0ICAgICAgICAgICAgICAgIHZhciBieXRlMiA9ICh3b3Jkc1soaSArIDEpID4+PiAyXSA+Pj4gKDI0IC0gKChpICsgMSkgJSA0KSAqIDgpKSAmIDB4ZmY7XG5cdCAgICAgICAgICAgICAgICB2YXIgYnl0ZTMgPSAod29yZHNbKGkgKyAyKSA+Pj4gMl0gPj4+ICgyNCAtICgoaSArIDIpICUgNCkgKiA4KSkgJiAweGZmO1xuXG5cdCAgICAgICAgICAgICAgICB2YXIgdHJpcGxldCA9IChieXRlMSA8PCAxNikgfCAoYnl0ZTIgPDwgOCkgfCBieXRlMztcblxuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IChqIDwgNCkgJiYgKGkgKyBqICogMC43NSA8IHNpZ0J5dGVzKTsgaisrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgYmFzZTY0Q2hhcnMucHVzaChtYXAuY2hhckF0KCh0cmlwbGV0ID4+PiAoNiAqICgzIC0gaikpKSAmIDB4M2YpKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIEFkZCBwYWRkaW5nXG5cdCAgICAgICAgICAgIHZhciBwYWRkaW5nQ2hhciA9IG1hcC5jaGFyQXQoNjQpO1xuXHQgICAgICAgICAgICBpZiAocGFkZGluZ0NoYXIpIHtcblx0ICAgICAgICAgICAgICAgIHdoaWxlIChiYXNlNjRDaGFycy5sZW5ndGggJSA0KSB7XG5cdCAgICAgICAgICAgICAgICAgICAgYmFzZTY0Q2hhcnMucHVzaChwYWRkaW5nQ2hhcik7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICByZXR1cm4gYmFzZTY0Q2hhcnMuam9pbignJyk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIGEgQmFzZTY0dXJsIHN0cmluZyB0byBhIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gYmFzZTY0U3RyIFRoZSBCYXNlNjR1cmwgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtib29sZWFufSB1cmxTYWZlIFdoZXRoZXIgdG8gdXNlIHVybCBzYWZlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgd29yZEFycmF5ID0gQ3J5cHRvSlMuZW5jLkJhc2U2NHVybC5wYXJzZShiYXNlNjRTdHJpbmcpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHBhcnNlOiBmdW5jdGlvbiAoYmFzZTY0U3RyLCB1cmxTYWZlPXRydWUpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBiYXNlNjRTdHJMZW5ndGggPSBiYXNlNjRTdHIubGVuZ3RoO1xuXHQgICAgICAgICAgICB2YXIgbWFwID0gdXJsU2FmZSA/IHRoaXMuX3NhZmVfbWFwIDogdGhpcy5fbWFwO1xuXHQgICAgICAgICAgICB2YXIgcmV2ZXJzZU1hcCA9IHRoaXMuX3JldmVyc2VNYXA7XG5cblx0ICAgICAgICAgICAgaWYgKCFyZXZlcnNlTWFwKSB7XG5cdCAgICAgICAgICAgICAgICByZXZlcnNlTWFwID0gdGhpcy5fcmV2ZXJzZU1hcCA9IFtdO1xuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBtYXAubGVuZ3RoOyBqKyspIHtcblx0ICAgICAgICAgICAgICAgICAgICByZXZlcnNlTWFwW21hcC5jaGFyQ29kZUF0KGopXSA9IGo7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBJZ25vcmUgcGFkZGluZ1xuXHQgICAgICAgICAgICB2YXIgcGFkZGluZ0NoYXIgPSBtYXAuY2hhckF0KDY0KTtcblx0ICAgICAgICAgICAgaWYgKHBhZGRpbmdDaGFyKSB7XG5cdCAgICAgICAgICAgICAgICB2YXIgcGFkZGluZ0luZGV4ID0gYmFzZTY0U3RyLmluZGV4T2YocGFkZGluZ0NoYXIpO1xuXHQgICAgICAgICAgICAgICAgaWYgKHBhZGRpbmdJbmRleCAhPT0gLTEpIHtcblx0ICAgICAgICAgICAgICAgICAgICBiYXNlNjRTdHJMZW5ndGggPSBwYWRkaW5nSW5kZXg7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBDb252ZXJ0XG5cdCAgICAgICAgICAgIHJldHVybiBwYXJzZUxvb3AoYmFzZTY0U3RyLCBiYXNlNjRTdHJMZW5ndGgsIHJldmVyc2VNYXApO1xuXG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9tYXA6ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPScsXG5cdCAgICAgICAgX3NhZmVfbWFwOiAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODktXycsXG5cdCAgICB9O1xuXG5cdCAgICBmdW5jdGlvbiBwYXJzZUxvb3AoYmFzZTY0U3RyLCBiYXNlNjRTdHJMZW5ndGgsIHJldmVyc2VNYXApIHtcblx0ICAgICAgICB2YXIgd29yZHMgPSBbXTtcblx0ICAgICAgICB2YXIgbkJ5dGVzID0gMDtcblx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhc2U2NFN0ckxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgICAgIGlmIChpICUgNCkge1xuXHQgICAgICAgICAgICAgICAgdmFyIGJpdHMxID0gcmV2ZXJzZU1hcFtiYXNlNjRTdHIuY2hhckNvZGVBdChpIC0gMSldIDw8ICgoaSAlIDQpICogMik7XG5cdCAgICAgICAgICAgICAgICB2YXIgYml0czIgPSByZXZlcnNlTWFwW2Jhc2U2NFN0ci5jaGFyQ29kZUF0KGkpXSA+Pj4gKDYgLSAoaSAlIDQpICogMik7XG5cdCAgICAgICAgICAgICAgICB2YXIgYml0c0NvbWJpbmVkID0gYml0czEgfCBiaXRzMjtcblx0ICAgICAgICAgICAgICAgIHdvcmRzW25CeXRlcyA+Pj4gMl0gfD0gYml0c0NvbWJpbmVkIDw8ICgyNCAtIChuQnl0ZXMgJSA0KSAqIDgpO1xuXHQgICAgICAgICAgICAgICAgbkJ5dGVzKys7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIFdvcmRBcnJheS5jcmVhdGUod29yZHMsIG5CeXRlcyk7XG5cdCAgICB9XG5cdH0oKSk7XG5cblx0cmV0dXJuIENyeXB0b0pTLmVuYy5CYXNlNjR1cmw7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5KSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAoKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBXb3JkQXJyYXkgPSBDX2xpYi5Xb3JkQXJyYXk7XG5cdCAgICB2YXIgQ19lbmMgPSBDLmVuYztcblxuXHQgICAgLyoqXG5cdCAgICAgKiBVVEYtMTYgQkUgZW5jb2Rpbmcgc3RyYXRlZ3kuXG5cdCAgICAgKi9cblx0ICAgIHZhciBVdGYxNkJFID0gQ19lbmMuVXRmMTYgPSBDX2VuYy5VdGYxNkJFID0ge1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIGEgd29yZCBhcnJheSB0byBhIFVURi0xNiBCRSBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheX0gd29yZEFycmF5IFRoZSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgVVRGLTE2IEJFIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHV0ZjE2U3RyaW5nID0gQ3J5cHRvSlMuZW5jLlV0ZjE2LnN0cmluZ2lmeSh3b3JkQXJyYXkpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHN0cmluZ2lmeTogZnVuY3Rpb24gKHdvcmRBcnJheSkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIHdvcmRzID0gd29yZEFycmF5LndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgc2lnQnl0ZXMgPSB3b3JkQXJyYXkuc2lnQnl0ZXM7XG5cblx0ICAgICAgICAgICAgLy8gQ29udmVydFxuXHQgICAgICAgICAgICB2YXIgdXRmMTZDaGFycyA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpZ0J5dGVzOyBpICs9IDIpIHtcblx0ICAgICAgICAgICAgICAgIHZhciBjb2RlUG9pbnQgPSAod29yZHNbaSA+Pj4gMl0gPj4+ICgxNiAtIChpICUgNCkgKiA4KSkgJiAweGZmZmY7XG5cdCAgICAgICAgICAgICAgICB1dGYxNkNoYXJzLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlUG9pbnQpKTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiB1dGYxNkNoYXJzLmpvaW4oJycpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyBhIFVURi0xNiBCRSBzdHJpbmcgdG8gYSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHV0ZjE2U3RyIFRoZSBVVEYtMTYgQkUgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHdvcmRBcnJheSA9IENyeXB0b0pTLmVuYy5VdGYxNi5wYXJzZSh1dGYxNlN0cmluZyk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgcGFyc2U6IGZ1bmN0aW9uICh1dGYxNlN0cikge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICB2YXIgdXRmMTZTdHJMZW5ndGggPSB1dGYxNlN0ci5sZW5ndGg7XG5cblx0ICAgICAgICAgICAgLy8gQ29udmVydFxuXHQgICAgICAgICAgICB2YXIgd29yZHMgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1dGYxNlN0ckxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICB3b3Jkc1tpID4+PiAxXSB8PSB1dGYxNlN0ci5jaGFyQ29kZUF0KGkpIDw8ICgxNiAtIChpICUgMikgKiAxNik7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICByZXR1cm4gV29yZEFycmF5LmNyZWF0ZSh3b3JkcywgdXRmMTZTdHJMZW5ndGggKiAyKTtcblx0ICAgICAgICB9XG5cdCAgICB9O1xuXG5cdCAgICAvKipcblx0ICAgICAqIFVURi0xNiBMRSBlbmNvZGluZyBzdHJhdGVneS5cblx0ICAgICAqL1xuXHQgICAgQ19lbmMuVXRmMTZMRSA9IHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyBhIHdvcmQgYXJyYXkgdG8gYSBVVEYtMTYgTEUgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl9IHdvcmRBcnJheSBUaGUgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIFVURi0xNiBMRSBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciB1dGYxNlN0ciA9IENyeXB0b0pTLmVuYy5VdGYxNkxFLnN0cmluZ2lmeSh3b3JkQXJyYXkpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHN0cmluZ2lmeTogZnVuY3Rpb24gKHdvcmRBcnJheSkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIHdvcmRzID0gd29yZEFycmF5LndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgc2lnQnl0ZXMgPSB3b3JkQXJyYXkuc2lnQnl0ZXM7XG5cblx0ICAgICAgICAgICAgLy8gQ29udmVydFxuXHQgICAgICAgICAgICB2YXIgdXRmMTZDaGFycyA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpZ0J5dGVzOyBpICs9IDIpIHtcblx0ICAgICAgICAgICAgICAgIHZhciBjb2RlUG9pbnQgPSBzd2FwRW5kaWFuKCh3b3Jkc1tpID4+PiAyXSA+Pj4gKDE2IC0gKGkgJSA0KSAqIDgpKSAmIDB4ZmZmZik7XG5cdCAgICAgICAgICAgICAgICB1dGYxNkNoYXJzLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlUG9pbnQpKTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiB1dGYxNkNoYXJzLmpvaW4oJycpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyBhIFVURi0xNiBMRSBzdHJpbmcgdG8gYSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHV0ZjE2U3RyIFRoZSBVVEYtMTYgTEUgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHdvcmRBcnJheSA9IENyeXB0b0pTLmVuYy5VdGYxNkxFLnBhcnNlKHV0ZjE2U3RyKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBwYXJzZTogZnVuY3Rpb24gKHV0ZjE2U3RyKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciB1dGYxNlN0ckxlbmd0aCA9IHV0ZjE2U3RyLmxlbmd0aDtcblxuXHQgICAgICAgICAgICAvLyBDb252ZXJ0XG5cdCAgICAgICAgICAgIHZhciB3b3JkcyA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHV0ZjE2U3RyTGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIHdvcmRzW2kgPj4+IDFdIHw9IHN3YXBFbmRpYW4odXRmMTZTdHIuY2hhckNvZGVBdChpKSA8PCAoMTYgLSAoaSAlIDIpICogMTYpKTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiBXb3JkQXJyYXkuY3JlYXRlKHdvcmRzLCB1dGYxNlN0ckxlbmd0aCAqIDIpO1xuXHQgICAgICAgIH1cblx0ICAgIH07XG5cblx0ICAgIGZ1bmN0aW9uIHN3YXBFbmRpYW4od29yZCkge1xuXHQgICAgICAgIHJldHVybiAoKHdvcmQgPDwgOCkgJiAweGZmMDBmZjAwKSB8ICgod29yZCA+Pj4gOCkgJiAweDAwZmYwMGZmKTtcblx0ICAgIH1cblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5lbmMuVXRmMTY7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vc2hhMVwiKSwgcmVxdWlyZShcIi4vaG1hY1wiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9zaGExXCIsIFwiLi9obWFjXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfbGliID0gQy5saWI7XG5cdCAgICB2YXIgQmFzZSA9IENfbGliLkJhc2U7XG5cdCAgICB2YXIgV29yZEFycmF5ID0gQ19saWIuV29yZEFycmF5O1xuXHQgICAgdmFyIENfYWxnbyA9IEMuYWxnbztcblx0ICAgIHZhciBNRDUgPSBDX2FsZ28uTUQ1O1xuXG5cdCAgICAvKipcblx0ICAgICAqIFRoaXMga2V5IGRlcml2YXRpb24gZnVuY3Rpb24gaXMgbWVhbnQgdG8gY29uZm9ybSB3aXRoIEVWUF9CeXRlc1RvS2V5LlxuXHQgICAgICogd3d3Lm9wZW5zc2wub3JnL2RvY3MvY3J5cHRvL0VWUF9CeXRlc1RvS2V5Lmh0bWxcblx0ICAgICAqL1xuXHQgICAgdmFyIEV2cEtERiA9IENfYWxnby5FdnBLREYgPSBCYXNlLmV4dGVuZCh7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29uZmlndXJhdGlvbiBvcHRpb25zLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IGtleVNpemUgVGhlIGtleSBzaXplIGluIHdvcmRzIHRvIGdlbmVyYXRlLiBEZWZhdWx0OiA0ICgxMjggYml0cylcblx0ICAgICAgICAgKiBAcHJvcGVydHkge0hhc2hlcn0gaGFzaGVyIFRoZSBoYXNoIGFsZ29yaXRobSB0byB1c2UuIERlZmF1bHQ6IE1ENVxuXHQgICAgICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBpdGVyYXRpb25zIFRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucyB0byBwZXJmb3JtLiBEZWZhdWx0OiAxXG5cdCAgICAgICAgICovXG5cdCAgICAgICAgY2ZnOiBCYXNlLmV4dGVuZCh7XG5cdCAgICAgICAgICAgIGtleVNpemU6IDEyOC8zMixcblx0ICAgICAgICAgICAgaGFzaGVyOiBNRDUsXG5cdCAgICAgICAgICAgIGl0ZXJhdGlvbnM6IDFcblx0ICAgICAgICB9KSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEluaXRpYWxpemVzIGEgbmV3bHkgY3JlYXRlZCBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcgKE9wdGlvbmFsKSBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHVzZSBmb3IgdGhlIGRlcml2YXRpb24uXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBrZGYgPSBDcnlwdG9KUy5hbGdvLkV2cEtERi5jcmVhdGUoKTtcblx0ICAgICAgICAgKiAgICAgdmFyIGtkZiA9IENyeXB0b0pTLmFsZ28uRXZwS0RGLmNyZWF0ZSh7IGtleVNpemU6IDggfSk7XG5cdCAgICAgICAgICogICAgIHZhciBrZGYgPSBDcnlwdG9KUy5hbGdvLkV2cEtERi5jcmVhdGUoeyBrZXlTaXplOiA4LCBpdGVyYXRpb25zOiAxMDAwIH0pO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGluaXQ6IGZ1bmN0aW9uIChjZmcpIHtcblx0ICAgICAgICAgICAgdGhpcy5jZmcgPSB0aGlzLmNmZy5leHRlbmQoY2ZnKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogRGVyaXZlcyBhIGtleSBmcm9tIGEgcGFzc3dvcmQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IHBhc3N3b3JkIFRoZSBwYXNzd29yZC5cblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IHNhbHQgQSBzYWx0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgZGVyaXZlZCBrZXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBrZXkgPSBrZGYuY29tcHV0ZShwYXNzd29yZCwgc2FsdCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgY29tcHV0ZTogZnVuY3Rpb24gKHBhc3N3b3JkLCBzYWx0KSB7XG5cdCAgICAgICAgICAgIHZhciBibG9jaztcblxuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICB2YXIgY2ZnID0gdGhpcy5jZmc7XG5cblx0ICAgICAgICAgICAgLy8gSW5pdCBoYXNoZXJcblx0ICAgICAgICAgICAgdmFyIGhhc2hlciA9IGNmZy5oYXNoZXIuY3JlYXRlKCk7XG5cblx0ICAgICAgICAgICAgLy8gSW5pdGlhbCB2YWx1ZXNcblx0ICAgICAgICAgICAgdmFyIGRlcml2ZWRLZXkgPSBXb3JkQXJyYXkuY3JlYXRlKCk7XG5cblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBkZXJpdmVkS2V5V29yZHMgPSBkZXJpdmVkS2V5LndvcmRzO1xuXHQgICAgICAgICAgICB2YXIga2V5U2l6ZSA9IGNmZy5rZXlTaXplO1xuXHQgICAgICAgICAgICB2YXIgaXRlcmF0aW9ucyA9IGNmZy5pdGVyYXRpb25zO1xuXG5cdCAgICAgICAgICAgIC8vIEdlbmVyYXRlIGtleVxuXHQgICAgICAgICAgICB3aGlsZSAoZGVyaXZlZEtleVdvcmRzLmxlbmd0aCA8IGtleVNpemUpIHtcblx0ICAgICAgICAgICAgICAgIGlmIChibG9jaykge1xuXHQgICAgICAgICAgICAgICAgICAgIGhhc2hlci51cGRhdGUoYmxvY2spO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgYmxvY2sgPSBoYXNoZXIudXBkYXRlKHBhc3N3b3JkKS5maW5hbGl6ZShzYWx0KTtcblx0ICAgICAgICAgICAgICAgIGhhc2hlci5yZXNldCgpO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBJdGVyYXRpb25zXG5cdCAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGl0ZXJhdGlvbnM7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgICAgIGJsb2NrID0gaGFzaGVyLmZpbmFsaXplKGJsb2NrKTtcblx0ICAgICAgICAgICAgICAgICAgICBoYXNoZXIucmVzZXQoKTtcblx0ICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgZGVyaXZlZEtleS5jb25jYXQoYmxvY2spO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGRlcml2ZWRLZXkuc2lnQnl0ZXMgPSBrZXlTaXplICogNDtcblxuXHQgICAgICAgICAgICByZXR1cm4gZGVyaXZlZEtleTtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBEZXJpdmVzIGEga2V5IGZyb20gYSBwYXNzd29yZC5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IHBhc3N3b3JkIFRoZSBwYXNzd29yZC5cblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gc2FsdCBBIHNhbHQuXG5cdCAgICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIChPcHRpb25hbCkgVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB1c2UgZm9yIHRoaXMgY29tcHV0YXRpb24uXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgZGVyaXZlZCBrZXkuXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBrZXkgPSBDcnlwdG9KUy5FdnBLREYocGFzc3dvcmQsIHNhbHQpO1xuXHQgICAgICogICAgIHZhciBrZXkgPSBDcnlwdG9KUy5FdnBLREYocGFzc3dvcmQsIHNhbHQsIHsga2V5U2l6ZTogOCB9KTtcblx0ICAgICAqICAgICB2YXIga2V5ID0gQ3J5cHRvSlMuRXZwS0RGKHBhc3N3b3JkLCBzYWx0LCB7IGtleVNpemU6IDgsIGl0ZXJhdGlvbnM6IDEwMDAgfSk7XG5cdCAgICAgKi9cblx0ICAgIEMuRXZwS0RGID0gZnVuY3Rpb24gKHBhc3N3b3JkLCBzYWx0LCBjZmcpIHtcblx0ICAgICAgICByZXR1cm4gRXZwS0RGLmNyZWF0ZShjZmcpLmNvbXB1dGUocGFzc3dvcmQsIHNhbHQpO1xuXHQgICAgfTtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5FdnBLREY7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vY2lwaGVyLWNvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4vY2lwaGVyLWNvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAodW5kZWZpbmVkKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBDaXBoZXJQYXJhbXMgPSBDX2xpYi5DaXBoZXJQYXJhbXM7XG5cdCAgICB2YXIgQ19lbmMgPSBDLmVuYztcblx0ICAgIHZhciBIZXggPSBDX2VuYy5IZXg7XG5cdCAgICB2YXIgQ19mb3JtYXQgPSBDLmZvcm1hdDtcblxuXHQgICAgdmFyIEhleEZvcm1hdHRlciA9IENfZm9ybWF0LkhleCA9IHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyB0aGUgY2lwaGVydGV4dCBvZiBhIGNpcGhlciBwYXJhbXMgb2JqZWN0IHRvIGEgaGV4YWRlY2ltYWxseSBlbmNvZGVkIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7Q2lwaGVyUGFyYW1zfSBjaXBoZXJQYXJhbXMgVGhlIGNpcGhlciBwYXJhbXMgb2JqZWN0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgaGV4YWRlY2ltYWxseSBlbmNvZGVkIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGhleFN0cmluZyA9IENyeXB0b0pTLmZvcm1hdC5IZXguc3RyaW5naWZ5KGNpcGhlclBhcmFtcyk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgc3RyaW5naWZ5OiBmdW5jdGlvbiAoY2lwaGVyUGFyYW1zKSB7XG5cdCAgICAgICAgICAgIHJldHVybiBjaXBoZXJQYXJhbXMuY2lwaGVydGV4dC50b1N0cmluZyhIZXgpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyBhIGhleGFkZWNpbWFsbHkgZW5jb2RlZCBjaXBoZXJ0ZXh0IHN0cmluZyB0byBhIGNpcGhlciBwYXJhbXMgb2JqZWN0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGlucHV0IFRoZSBoZXhhZGVjaW1hbGx5IGVuY29kZWQgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7Q2lwaGVyUGFyYW1zfSBUaGUgY2lwaGVyIHBhcmFtcyBvYmplY3QuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBjaXBoZXJQYXJhbXMgPSBDcnlwdG9KUy5mb3JtYXQuSGV4LnBhcnNlKGhleFN0cmluZyk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgcGFyc2U6IGZ1bmN0aW9uIChpbnB1dCkge1xuXHQgICAgICAgICAgICB2YXIgY2lwaGVydGV4dCA9IEhleC5wYXJzZShpbnB1dCk7XG5cdCAgICAgICAgICAgIHJldHVybiBDaXBoZXJQYXJhbXMuY3JlYXRlKHsgY2lwaGVydGV4dDogY2lwaGVydGV4dCB9KTtcblx0ICAgICAgICB9XG5cdCAgICB9O1xuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLmZvcm1hdC5IZXg7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5KSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAoKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBCYXNlID0gQ19saWIuQmFzZTtcblx0ICAgIHZhciBDX2VuYyA9IEMuZW5jO1xuXHQgICAgdmFyIFV0ZjggPSBDX2VuYy5VdGY4O1xuXHQgICAgdmFyIENfYWxnbyA9IEMuYWxnbztcblxuXHQgICAgLyoqXG5cdCAgICAgKiBITUFDIGFsZ29yaXRobS5cblx0ICAgICAqL1xuXHQgICAgdmFyIEhNQUMgPSBDX2FsZ28uSE1BQyA9IEJhc2UuZXh0ZW5kKHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBJbml0aWFsaXplcyBhIG5ld2x5IGNyZWF0ZWQgSE1BQy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7SGFzaGVyfSBoYXNoZXIgVGhlIGhhc2ggYWxnb3JpdGhtIHRvIHVzZS5cblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IGtleSBUaGUgc2VjcmV0IGtleS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGhtYWNIYXNoZXIgPSBDcnlwdG9KUy5hbGdvLkhNQUMuY3JlYXRlKENyeXB0b0pTLmFsZ28uU0hBMjU2LCBrZXkpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGluaXQ6IGZ1bmN0aW9uIChoYXNoZXIsIGtleSkge1xuXHQgICAgICAgICAgICAvLyBJbml0IGhhc2hlclxuXHQgICAgICAgICAgICBoYXNoZXIgPSB0aGlzLl9oYXNoZXIgPSBuZXcgaGFzaGVyLmluaXQoKTtcblxuXHQgICAgICAgICAgICAvLyBDb252ZXJ0IHN0cmluZyB0byBXb3JkQXJyYXksIGVsc2UgYXNzdW1lIFdvcmRBcnJheSBhbHJlYWR5XG5cdCAgICAgICAgICAgIGlmICh0eXBlb2Yga2V5ID09ICdzdHJpbmcnKSB7XG5cdCAgICAgICAgICAgICAgICBrZXkgPSBVdGY4LnBhcnNlKGtleSk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGhhc2hlckJsb2NrU2l6ZSA9IGhhc2hlci5ibG9ja1NpemU7XG5cdCAgICAgICAgICAgIHZhciBoYXNoZXJCbG9ja1NpemVCeXRlcyA9IGhhc2hlckJsb2NrU2l6ZSAqIDQ7XG5cblx0ICAgICAgICAgICAgLy8gQWxsb3cgYXJiaXRyYXJ5IGxlbmd0aCBrZXlzXG5cdCAgICAgICAgICAgIGlmIChrZXkuc2lnQnl0ZXMgPiBoYXNoZXJCbG9ja1NpemVCeXRlcykge1xuXHQgICAgICAgICAgICAgICAga2V5ID0gaGFzaGVyLmZpbmFsaXplKGtleSk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBDbGFtcCBleGNlc3MgYml0c1xuXHQgICAgICAgICAgICBrZXkuY2xhbXAoKTtcblxuXHQgICAgICAgICAgICAvLyBDbG9uZSBrZXkgZm9yIGlubmVyIGFuZCBvdXRlciBwYWRzXG5cdCAgICAgICAgICAgIHZhciBvS2V5ID0gdGhpcy5fb0tleSA9IGtleS5jbG9uZSgpO1xuXHQgICAgICAgICAgICB2YXIgaUtleSA9IHRoaXMuX2lLZXkgPSBrZXkuY2xvbmUoKTtcblxuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIG9LZXlXb3JkcyA9IG9LZXkud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBpS2V5V29yZHMgPSBpS2V5LndvcmRzO1xuXG5cdCAgICAgICAgICAgIC8vIFhPUiBrZXlzIHdpdGggcGFkIGNvbnN0YW50c1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhhc2hlckJsb2NrU2l6ZTsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICBvS2V5V29yZHNbaV0gXj0gMHg1YzVjNWM1Yztcblx0ICAgICAgICAgICAgICAgIGlLZXlXb3Jkc1tpXSBePSAweDM2MzYzNjM2O1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIG9LZXkuc2lnQnl0ZXMgPSBpS2V5LnNpZ0J5dGVzID0gaGFzaGVyQmxvY2tTaXplQnl0ZXM7XG5cblx0ICAgICAgICAgICAgLy8gU2V0IGluaXRpYWwgdmFsdWVzXG5cdCAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogUmVzZXRzIHRoaXMgSE1BQyB0byBpdHMgaW5pdGlhbCBzdGF0ZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgaG1hY0hhc2hlci5yZXNldCgpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHJlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBoYXNoZXIgPSB0aGlzLl9oYXNoZXI7XG5cblx0ICAgICAgICAgICAgLy8gUmVzZXRcblx0ICAgICAgICAgICAgaGFzaGVyLnJlc2V0KCk7XG5cdCAgICAgICAgICAgIGhhc2hlci51cGRhdGUodGhpcy5faUtleSk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIFVwZGF0ZXMgdGhpcyBITUFDIHdpdGggYSBtZXNzYWdlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlVXBkYXRlIFRoZSBtZXNzYWdlIHRvIGFwcGVuZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge0hNQUN9IFRoaXMgSE1BQyBpbnN0YW5jZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgaG1hY0hhc2hlci51cGRhdGUoJ21lc3NhZ2UnKTtcblx0ICAgICAgICAgKiAgICAgaG1hY0hhc2hlci51cGRhdGUod29yZEFycmF5KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uIChtZXNzYWdlVXBkYXRlKSB7XG5cdCAgICAgICAgICAgIHRoaXMuX2hhc2hlci51cGRhdGUobWVzc2FnZVVwZGF0ZSk7XG5cblx0ICAgICAgICAgICAgLy8gQ2hhaW5hYmxlXG5cdCAgICAgICAgICAgIHJldHVybiB0aGlzO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBGaW5hbGl6ZXMgdGhlIEhNQUMgY29tcHV0YXRpb24uXG5cdCAgICAgICAgICogTm90ZSB0aGF0IHRoZSBmaW5hbGl6ZSBvcGVyYXRpb24gaXMgZWZmZWN0aXZlbHkgYSBkZXN0cnVjdGl2ZSwgcmVhZC1vbmNlIG9wZXJhdGlvbi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZVVwZGF0ZSAoT3B0aW9uYWwpIEEgZmluYWwgbWVzc2FnZSB1cGRhdGUuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBITUFDLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgaG1hYyA9IGhtYWNIYXNoZXIuZmluYWxpemUoKTtcblx0ICAgICAgICAgKiAgICAgdmFyIGhtYWMgPSBobWFjSGFzaGVyLmZpbmFsaXplKCdtZXNzYWdlJyk7XG5cdCAgICAgICAgICogICAgIHZhciBobWFjID0gaG1hY0hhc2hlci5maW5hbGl6ZSh3b3JkQXJyYXkpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGZpbmFsaXplOiBmdW5jdGlvbiAobWVzc2FnZVVwZGF0ZSkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICB2YXIgaGFzaGVyID0gdGhpcy5faGFzaGVyO1xuXG5cdCAgICAgICAgICAgIC8vIENvbXB1dGUgSE1BQ1xuXHQgICAgICAgICAgICB2YXIgaW5uZXJIYXNoID0gaGFzaGVyLmZpbmFsaXplKG1lc3NhZ2VVcGRhdGUpO1xuXHQgICAgICAgICAgICBoYXNoZXIucmVzZXQoKTtcblx0ICAgICAgICAgICAgdmFyIGhtYWMgPSBoYXNoZXIuZmluYWxpemUodGhpcy5fb0tleS5jbG9uZSgpLmNvbmNhdChpbm5lckhhc2gpKTtcblxuXHQgICAgICAgICAgICByZXR1cm4gaG1hYztcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblx0fSgpKTtcblxuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL3g2NC1jb3JlXCIpLCByZXF1aXJlKFwiLi9saWItdHlwZWRhcnJheXNcIiksIHJlcXVpcmUoXCIuL2VuYy11dGYxNlwiKSwgcmVxdWlyZShcIi4vZW5jLWJhc2U2NFwiKSwgcmVxdWlyZShcIi4vZW5jLWJhc2U2NHVybFwiKSwgcmVxdWlyZShcIi4vbWQ1XCIpLCByZXF1aXJlKFwiLi9zaGExXCIpLCByZXF1aXJlKFwiLi9zaGEyNTZcIiksIHJlcXVpcmUoXCIuL3NoYTIyNFwiKSwgcmVxdWlyZShcIi4vc2hhNTEyXCIpLCByZXF1aXJlKFwiLi9zaGEzODRcIiksIHJlcXVpcmUoXCIuL3NoYTNcIiksIHJlcXVpcmUoXCIuL3JpcGVtZDE2MFwiKSwgcmVxdWlyZShcIi4vaG1hY1wiKSwgcmVxdWlyZShcIi4vcGJrZGYyXCIpLCByZXF1aXJlKFwiLi9ldnBrZGZcIiksIHJlcXVpcmUoXCIuL2NpcGhlci1jb3JlXCIpLCByZXF1aXJlKFwiLi9tb2RlLWNmYlwiKSwgcmVxdWlyZShcIi4vbW9kZS1jdHJcIiksIHJlcXVpcmUoXCIuL21vZGUtY3RyLWdsYWRtYW5cIiksIHJlcXVpcmUoXCIuL21vZGUtb2ZiXCIpLCByZXF1aXJlKFwiLi9tb2RlLWVjYlwiKSwgcmVxdWlyZShcIi4vcGFkLWFuc2l4OTIzXCIpLCByZXF1aXJlKFwiLi9wYWQtaXNvMTAxMjZcIiksIHJlcXVpcmUoXCIuL3BhZC1pc285Nzk3MVwiKSwgcmVxdWlyZShcIi4vcGFkLXplcm9wYWRkaW5nXCIpLCByZXF1aXJlKFwiLi9wYWQtbm9wYWRkaW5nXCIpLCByZXF1aXJlKFwiLi9mb3JtYXQtaGV4XCIpLCByZXF1aXJlKFwiLi9hZXNcIiksIHJlcXVpcmUoXCIuL3RyaXBsZWRlc1wiKSwgcmVxdWlyZShcIi4vcmM0XCIpLCByZXF1aXJlKFwiLi9yYWJiaXRcIiksIHJlcXVpcmUoXCIuL3JhYmJpdC1sZWdhY3lcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4veDY0LWNvcmVcIiwgXCIuL2xpYi10eXBlZGFycmF5c1wiLCBcIi4vZW5jLXV0ZjE2XCIsIFwiLi9lbmMtYmFzZTY0XCIsIFwiLi9lbmMtYmFzZTY0dXJsXCIsIFwiLi9tZDVcIiwgXCIuL3NoYTFcIiwgXCIuL3NoYTI1NlwiLCBcIi4vc2hhMjI0XCIsIFwiLi9zaGE1MTJcIiwgXCIuL3NoYTM4NFwiLCBcIi4vc2hhM1wiLCBcIi4vcmlwZW1kMTYwXCIsIFwiLi9obWFjXCIsIFwiLi9wYmtkZjJcIiwgXCIuL2V2cGtkZlwiLCBcIi4vY2lwaGVyLWNvcmVcIiwgXCIuL21vZGUtY2ZiXCIsIFwiLi9tb2RlLWN0clwiLCBcIi4vbW9kZS1jdHItZ2xhZG1hblwiLCBcIi4vbW9kZS1vZmJcIiwgXCIuL21vZGUtZWNiXCIsIFwiLi9wYWQtYW5zaXg5MjNcIiwgXCIuL3BhZC1pc28xMDEyNlwiLCBcIi4vcGFkLWlzbzk3OTcxXCIsIFwiLi9wYWQtemVyb3BhZGRpbmdcIiwgXCIuL3BhZC1ub3BhZGRpbmdcIiwgXCIuL2Zvcm1hdC1oZXhcIiwgXCIuL2Flc1wiLCBcIi4vdHJpcGxlZGVzXCIsIFwiLi9yYzRcIiwgXCIuL3JhYmJpdFwiLCBcIi4vcmFiYml0LWxlZ2FjeVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdHJvb3QuQ3J5cHRvSlMgPSBmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdHJldHVybiBDcnlwdG9KUztcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIENoZWNrIGlmIHR5cGVkIGFycmF5cyBhcmUgc3VwcG9ydGVkXG5cdCAgICBpZiAodHlwZW9mIEFycmF5QnVmZmVyICE9ICdmdW5jdGlvbicpIHtcblx0ICAgICAgICByZXR1cm47XG5cdCAgICB9XG5cblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIFdvcmRBcnJheSA9IENfbGliLldvcmRBcnJheTtcblxuXHQgICAgLy8gUmVmZXJlbmNlIG9yaWdpbmFsIGluaXRcblx0ICAgIHZhciBzdXBlckluaXQgPSBXb3JkQXJyYXkuaW5pdDtcblxuXHQgICAgLy8gQXVnbWVudCBXb3JkQXJyYXkuaW5pdCB0byBoYW5kbGUgdHlwZWQgYXJyYXlzXG5cdCAgICB2YXIgc3ViSW5pdCA9IFdvcmRBcnJheS5pbml0ID0gZnVuY3Rpb24gKHR5cGVkQXJyYXkpIHtcblx0ICAgICAgICAvLyBDb252ZXJ0IGJ1ZmZlcnMgdG8gdWludDhcblx0ICAgICAgICBpZiAodHlwZWRBcnJheSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG5cdCAgICAgICAgICAgIHR5cGVkQXJyYXkgPSBuZXcgVWludDhBcnJheSh0eXBlZEFycmF5KTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICAvLyBDb252ZXJ0IG90aGVyIGFycmF5IHZpZXdzIHRvIHVpbnQ4XG5cdCAgICAgICAgaWYgKFxuXHQgICAgICAgICAgICB0eXBlZEFycmF5IGluc3RhbmNlb2YgSW50OEFycmF5IHx8XG5cdCAgICAgICAgICAgICh0eXBlb2YgVWludDhDbGFtcGVkQXJyYXkgIT09IFwidW5kZWZpbmVkXCIgJiYgdHlwZWRBcnJheSBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5KSB8fFxuXHQgICAgICAgICAgICB0eXBlZEFycmF5IGluc3RhbmNlb2YgSW50MTZBcnJheSB8fFxuXHQgICAgICAgICAgICB0eXBlZEFycmF5IGluc3RhbmNlb2YgVWludDE2QXJyYXkgfHxcblx0ICAgICAgICAgICAgdHlwZWRBcnJheSBpbnN0YW5jZW9mIEludDMyQXJyYXkgfHxcblx0ICAgICAgICAgICAgdHlwZWRBcnJheSBpbnN0YW5jZW9mIFVpbnQzMkFycmF5IHx8XG5cdCAgICAgICAgICAgIHR5cGVkQXJyYXkgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXkgfHxcblx0ICAgICAgICAgICAgdHlwZWRBcnJheSBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheVxuXHQgICAgICAgICkge1xuXHQgICAgICAgICAgICB0eXBlZEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkodHlwZWRBcnJheS5idWZmZXIsIHR5cGVkQXJyYXkuYnl0ZU9mZnNldCwgdHlwZWRBcnJheS5ieXRlTGVuZ3RoKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICAvLyBIYW5kbGUgVWludDhBcnJheVxuXHQgICAgICAgIGlmICh0eXBlZEFycmF5IGluc3RhbmNlb2YgVWludDhBcnJheSkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICB2YXIgdHlwZWRBcnJheUJ5dGVMZW5ndGggPSB0eXBlZEFycmF5LmJ5dGVMZW5ndGg7XG5cblx0ICAgICAgICAgICAgLy8gRXh0cmFjdCBieXRlc1xuXHQgICAgICAgICAgICB2YXIgd29yZHMgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlZEFycmF5Qnl0ZUxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICB3b3Jkc1tpID4+PiAyXSB8PSB0eXBlZEFycmF5W2ldIDw8ICgyNCAtIChpICUgNCkgKiA4KTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIEluaXRpYWxpemUgdGhpcyB3b3JkIGFycmF5XG5cdCAgICAgICAgICAgIHN1cGVySW5pdC5jYWxsKHRoaXMsIHdvcmRzLCB0eXBlZEFycmF5Qnl0ZUxlbmd0aCk7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgLy8gRWxzZSBjYWxsIG5vcm1hbCBpbml0XG5cdCAgICAgICAgICAgIHN1cGVySW5pdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHQgICAgICAgIH1cblx0ICAgIH07XG5cblx0ICAgIHN1YkluaXQucHJvdG90eXBlID0gV29yZEFycmF5O1xuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLmxpYi5Xb3JkQXJyYXk7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5KSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAoTWF0aCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfbGliID0gQy5saWI7XG5cdCAgICB2YXIgV29yZEFycmF5ID0gQ19saWIuV29yZEFycmF5O1xuXHQgICAgdmFyIEhhc2hlciA9IENfbGliLkhhc2hlcjtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cblx0ICAgIC8vIENvbnN0YW50cyB0YWJsZVxuXHQgICAgdmFyIFQgPSBbXTtcblxuXHQgICAgLy8gQ29tcHV0ZSBjb25zdGFudHNcblx0ICAgIChmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2NDsgaSsrKSB7XG5cdCAgICAgICAgICAgIFRbaV0gPSAoTWF0aC5hYnMoTWF0aC5zaW4oaSArIDEpKSAqIDB4MTAwMDAwMDAwKSB8IDA7XG5cdCAgICAgICAgfVxuXHQgICAgfSgpKTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBNRDUgaGFzaCBhbGdvcml0aG0uXG5cdCAgICAgKi9cblx0ICAgIHZhciBNRDUgPSBDX2FsZ28uTUQ1ID0gSGFzaGVyLmV4dGVuZCh7XG5cdCAgICAgICAgX2RvUmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdGhpcy5faGFzaCA9IG5ldyBXb3JkQXJyYXkuaW5pdChbXG5cdCAgICAgICAgICAgICAgICAweDY3NDUyMzAxLCAweGVmY2RhYjg5LFxuXHQgICAgICAgICAgICAgICAgMHg5OGJhZGNmZSwgMHgxMDMyNTQ3NlxuXHQgICAgICAgICAgICBdKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvUHJvY2Vzc0Jsb2NrOiBmdW5jdGlvbiAoTSwgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIC8vIFN3YXAgZW5kaWFuXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0X2kgPSBvZmZzZXQgKyBpO1xuXHQgICAgICAgICAgICAgICAgdmFyIE1fb2Zmc2V0X2kgPSBNW29mZnNldF9pXTtcblxuXHQgICAgICAgICAgICAgICAgTVtvZmZzZXRfaV0gPSAoXG5cdCAgICAgICAgICAgICAgICAgICAgKCgoTV9vZmZzZXRfaSA8PCA4KSAgfCAoTV9vZmZzZXRfaSA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcblx0ICAgICAgICAgICAgICAgICAgICAoKChNX29mZnNldF9pIDw8IDI0KSB8IChNX29mZnNldF9pID4+PiA4KSkgICYgMHhmZjAwZmYwMClcblx0ICAgICAgICAgICAgICAgICk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIEggPSB0aGlzLl9oYXNoLndvcmRzO1xuXG5cdCAgICAgICAgICAgIHZhciBNX29mZnNldF8wICA9IE1bb2Zmc2V0ICsgMF07XG5cdCAgICAgICAgICAgIHZhciBNX29mZnNldF8xICA9IE1bb2Zmc2V0ICsgMV07XG5cdCAgICAgICAgICAgIHZhciBNX29mZnNldF8yICA9IE1bb2Zmc2V0ICsgMl07XG5cdCAgICAgICAgICAgIHZhciBNX29mZnNldF8zICA9IE1bb2Zmc2V0ICsgM107XG5cdCAgICAgICAgICAgIHZhciBNX29mZnNldF80ICA9IE1bb2Zmc2V0ICsgNF07XG5cdCAgICAgICAgICAgIHZhciBNX29mZnNldF81ICA9IE1bb2Zmc2V0ICsgNV07XG5cdCAgICAgICAgICAgIHZhciBNX29mZnNldF82ICA9IE1bb2Zmc2V0ICsgNl07XG5cdCAgICAgICAgICAgIHZhciBNX29mZnNldF83ICA9IE1bb2Zmc2V0ICsgN107XG5cdCAgICAgICAgICAgIHZhciBNX29mZnNldF84ICA9IE1bb2Zmc2V0ICsgOF07XG5cdCAgICAgICAgICAgIHZhciBNX29mZnNldF85ICA9IE1bb2Zmc2V0ICsgOV07XG5cdCAgICAgICAgICAgIHZhciBNX29mZnNldF8xMCA9IE1bb2Zmc2V0ICsgMTBdO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfMTEgPSBNW29mZnNldCArIDExXTtcblx0ICAgICAgICAgICAgdmFyIE1fb2Zmc2V0XzEyID0gTVtvZmZzZXQgKyAxMl07XG5cdCAgICAgICAgICAgIHZhciBNX29mZnNldF8xMyA9IE1bb2Zmc2V0ICsgMTNdO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfMTQgPSBNW29mZnNldCArIDE0XTtcblx0ICAgICAgICAgICAgdmFyIE1fb2Zmc2V0XzE1ID0gTVtvZmZzZXQgKyAxNV07XG5cblx0ICAgICAgICAgICAgLy8gV29ya2luZyB2YXJpYWxiZXNcblx0ICAgICAgICAgICAgdmFyIGEgPSBIWzBdO1xuXHQgICAgICAgICAgICB2YXIgYiA9IEhbMV07XG5cdCAgICAgICAgICAgIHZhciBjID0gSFsyXTtcblx0ICAgICAgICAgICAgdmFyIGQgPSBIWzNdO1xuXG5cdCAgICAgICAgICAgIC8vIENvbXB1dGF0aW9uXG5cdCAgICAgICAgICAgIGEgPSBGRihhLCBiLCBjLCBkLCBNX29mZnNldF8wLCAgNywgIFRbMF0pO1xuXHQgICAgICAgICAgICBkID0gRkYoZCwgYSwgYiwgYywgTV9vZmZzZXRfMSwgIDEyLCBUWzFdKTtcblx0ICAgICAgICAgICAgYyA9IEZGKGMsIGQsIGEsIGIsIE1fb2Zmc2V0XzIsICAxNywgVFsyXSk7XG5cdCAgICAgICAgICAgIGIgPSBGRihiLCBjLCBkLCBhLCBNX29mZnNldF8zLCAgMjIsIFRbM10pO1xuXHQgICAgICAgICAgICBhID0gRkYoYSwgYiwgYywgZCwgTV9vZmZzZXRfNCwgIDcsICBUWzRdKTtcblx0ICAgICAgICAgICAgZCA9IEZGKGQsIGEsIGIsIGMsIE1fb2Zmc2V0XzUsICAxMiwgVFs1XSk7XG5cdCAgICAgICAgICAgIGMgPSBGRihjLCBkLCBhLCBiLCBNX29mZnNldF82LCAgMTcsIFRbNl0pO1xuXHQgICAgICAgICAgICBiID0gRkYoYiwgYywgZCwgYSwgTV9vZmZzZXRfNywgIDIyLCBUWzddKTtcblx0ICAgICAgICAgICAgYSA9IEZGKGEsIGIsIGMsIGQsIE1fb2Zmc2V0XzgsICA3LCAgVFs4XSk7XG5cdCAgICAgICAgICAgIGQgPSBGRihkLCBhLCBiLCBjLCBNX29mZnNldF85LCAgMTIsIFRbOV0pO1xuXHQgICAgICAgICAgICBjID0gRkYoYywgZCwgYSwgYiwgTV9vZmZzZXRfMTAsIDE3LCBUWzEwXSk7XG5cdCAgICAgICAgICAgIGIgPSBGRihiLCBjLCBkLCBhLCBNX29mZnNldF8xMSwgMjIsIFRbMTFdKTtcblx0ICAgICAgICAgICAgYSA9IEZGKGEsIGIsIGMsIGQsIE1fb2Zmc2V0XzEyLCA3LCAgVFsxMl0pO1xuXHQgICAgICAgICAgICBkID0gRkYoZCwgYSwgYiwgYywgTV9vZmZzZXRfMTMsIDEyLCBUWzEzXSk7XG5cdCAgICAgICAgICAgIGMgPSBGRihjLCBkLCBhLCBiLCBNX29mZnNldF8xNCwgMTcsIFRbMTRdKTtcblx0ICAgICAgICAgICAgYiA9IEZGKGIsIGMsIGQsIGEsIE1fb2Zmc2V0XzE1LCAyMiwgVFsxNV0pO1xuXG5cdCAgICAgICAgICAgIGEgPSBHRyhhLCBiLCBjLCBkLCBNX29mZnNldF8xLCAgNSwgIFRbMTZdKTtcblx0ICAgICAgICAgICAgZCA9IEdHKGQsIGEsIGIsIGMsIE1fb2Zmc2V0XzYsICA5LCAgVFsxN10pO1xuXHQgICAgICAgICAgICBjID0gR0coYywgZCwgYSwgYiwgTV9vZmZzZXRfMTEsIDE0LCBUWzE4XSk7XG5cdCAgICAgICAgICAgIGIgPSBHRyhiLCBjLCBkLCBhLCBNX29mZnNldF8wLCAgMjAsIFRbMTldKTtcblx0ICAgICAgICAgICAgYSA9IEdHKGEsIGIsIGMsIGQsIE1fb2Zmc2V0XzUsICA1LCAgVFsyMF0pO1xuXHQgICAgICAgICAgICBkID0gR0coZCwgYSwgYiwgYywgTV9vZmZzZXRfMTAsIDksICBUWzIxXSk7XG5cdCAgICAgICAgICAgIGMgPSBHRyhjLCBkLCBhLCBiLCBNX29mZnNldF8xNSwgMTQsIFRbMjJdKTtcblx0ICAgICAgICAgICAgYiA9IEdHKGIsIGMsIGQsIGEsIE1fb2Zmc2V0XzQsICAyMCwgVFsyM10pO1xuXHQgICAgICAgICAgICBhID0gR0coYSwgYiwgYywgZCwgTV9vZmZzZXRfOSwgIDUsICBUWzI0XSk7XG5cdCAgICAgICAgICAgIGQgPSBHRyhkLCBhLCBiLCBjLCBNX29mZnNldF8xNCwgOSwgIFRbMjVdKTtcblx0ICAgICAgICAgICAgYyA9IEdHKGMsIGQsIGEsIGIsIE1fb2Zmc2V0XzMsICAxNCwgVFsyNl0pO1xuXHQgICAgICAgICAgICBiID0gR0coYiwgYywgZCwgYSwgTV9vZmZzZXRfOCwgIDIwLCBUWzI3XSk7XG5cdCAgICAgICAgICAgIGEgPSBHRyhhLCBiLCBjLCBkLCBNX29mZnNldF8xMywgNSwgIFRbMjhdKTtcblx0ICAgICAgICAgICAgZCA9IEdHKGQsIGEsIGIsIGMsIE1fb2Zmc2V0XzIsICA5LCAgVFsyOV0pO1xuXHQgICAgICAgICAgICBjID0gR0coYywgZCwgYSwgYiwgTV9vZmZzZXRfNywgIDE0LCBUWzMwXSk7XG5cdCAgICAgICAgICAgIGIgPSBHRyhiLCBjLCBkLCBhLCBNX29mZnNldF8xMiwgMjAsIFRbMzFdKTtcblxuXHQgICAgICAgICAgICBhID0gSEgoYSwgYiwgYywgZCwgTV9vZmZzZXRfNSwgIDQsICBUWzMyXSk7XG5cdCAgICAgICAgICAgIGQgPSBISChkLCBhLCBiLCBjLCBNX29mZnNldF84LCAgMTEsIFRbMzNdKTtcblx0ICAgICAgICAgICAgYyA9IEhIKGMsIGQsIGEsIGIsIE1fb2Zmc2V0XzExLCAxNiwgVFszNF0pO1xuXHQgICAgICAgICAgICBiID0gSEgoYiwgYywgZCwgYSwgTV9vZmZzZXRfMTQsIDIzLCBUWzM1XSk7XG5cdCAgICAgICAgICAgIGEgPSBISChhLCBiLCBjLCBkLCBNX29mZnNldF8xLCAgNCwgIFRbMzZdKTtcblx0ICAgICAgICAgICAgZCA9IEhIKGQsIGEsIGIsIGMsIE1fb2Zmc2V0XzQsICAxMSwgVFszN10pO1xuXHQgICAgICAgICAgICBjID0gSEgoYywgZCwgYSwgYiwgTV9vZmZzZXRfNywgIDE2LCBUWzM4XSk7XG5cdCAgICAgICAgICAgIGIgPSBISChiLCBjLCBkLCBhLCBNX29mZnNldF8xMCwgMjMsIFRbMzldKTtcblx0ICAgICAgICAgICAgYSA9IEhIKGEsIGIsIGMsIGQsIE1fb2Zmc2V0XzEzLCA0LCAgVFs0MF0pO1xuXHQgICAgICAgICAgICBkID0gSEgoZCwgYSwgYiwgYywgTV9vZmZzZXRfMCwgIDExLCBUWzQxXSk7XG5cdCAgICAgICAgICAgIGMgPSBISChjLCBkLCBhLCBiLCBNX29mZnNldF8zLCAgMTYsIFRbNDJdKTtcblx0ICAgICAgICAgICAgYiA9IEhIKGIsIGMsIGQsIGEsIE1fb2Zmc2V0XzYsICAyMywgVFs0M10pO1xuXHQgICAgICAgICAgICBhID0gSEgoYSwgYiwgYywgZCwgTV9vZmZzZXRfOSwgIDQsICBUWzQ0XSk7XG5cdCAgICAgICAgICAgIGQgPSBISChkLCBhLCBiLCBjLCBNX29mZnNldF8xMiwgMTEsIFRbNDVdKTtcblx0ICAgICAgICAgICAgYyA9IEhIKGMsIGQsIGEsIGIsIE1fb2Zmc2V0XzE1LCAxNiwgVFs0Nl0pO1xuXHQgICAgICAgICAgICBiID0gSEgoYiwgYywgZCwgYSwgTV9vZmZzZXRfMiwgIDIzLCBUWzQ3XSk7XG5cblx0ICAgICAgICAgICAgYSA9IElJKGEsIGIsIGMsIGQsIE1fb2Zmc2V0XzAsICA2LCAgVFs0OF0pO1xuXHQgICAgICAgICAgICBkID0gSUkoZCwgYSwgYiwgYywgTV9vZmZzZXRfNywgIDEwLCBUWzQ5XSk7XG5cdCAgICAgICAgICAgIGMgPSBJSShjLCBkLCBhLCBiLCBNX29mZnNldF8xNCwgMTUsIFRbNTBdKTtcblx0ICAgICAgICAgICAgYiA9IElJKGIsIGMsIGQsIGEsIE1fb2Zmc2V0XzUsICAyMSwgVFs1MV0pO1xuXHQgICAgICAgICAgICBhID0gSUkoYSwgYiwgYywgZCwgTV9vZmZzZXRfMTIsIDYsICBUWzUyXSk7XG5cdCAgICAgICAgICAgIGQgPSBJSShkLCBhLCBiLCBjLCBNX29mZnNldF8zLCAgMTAsIFRbNTNdKTtcblx0ICAgICAgICAgICAgYyA9IElJKGMsIGQsIGEsIGIsIE1fb2Zmc2V0XzEwLCAxNSwgVFs1NF0pO1xuXHQgICAgICAgICAgICBiID0gSUkoYiwgYywgZCwgYSwgTV9vZmZzZXRfMSwgIDIxLCBUWzU1XSk7XG5cdCAgICAgICAgICAgIGEgPSBJSShhLCBiLCBjLCBkLCBNX29mZnNldF84LCAgNiwgIFRbNTZdKTtcblx0ICAgICAgICAgICAgZCA9IElJKGQsIGEsIGIsIGMsIE1fb2Zmc2V0XzE1LCAxMCwgVFs1N10pO1xuXHQgICAgICAgICAgICBjID0gSUkoYywgZCwgYSwgYiwgTV9vZmZzZXRfNiwgIDE1LCBUWzU4XSk7XG5cdCAgICAgICAgICAgIGIgPSBJSShiLCBjLCBkLCBhLCBNX29mZnNldF8xMywgMjEsIFRbNTldKTtcblx0ICAgICAgICAgICAgYSA9IElJKGEsIGIsIGMsIGQsIE1fb2Zmc2V0XzQsICA2LCAgVFs2MF0pO1xuXHQgICAgICAgICAgICBkID0gSUkoZCwgYSwgYiwgYywgTV9vZmZzZXRfMTEsIDEwLCBUWzYxXSk7XG5cdCAgICAgICAgICAgIGMgPSBJSShjLCBkLCBhLCBiLCBNX29mZnNldF8yLCAgMTUsIFRbNjJdKTtcblx0ICAgICAgICAgICAgYiA9IElJKGIsIGMsIGQsIGEsIE1fb2Zmc2V0XzksICAyMSwgVFs2M10pO1xuXG5cdCAgICAgICAgICAgIC8vIEludGVybWVkaWF0ZSBoYXNoIHZhbHVlXG5cdCAgICAgICAgICAgIEhbMF0gPSAoSFswXSArIGEpIHwgMDtcblx0ICAgICAgICAgICAgSFsxXSA9IChIWzFdICsgYikgfCAwO1xuXHQgICAgICAgICAgICBIWzJdID0gKEhbMl0gKyBjKSB8IDA7XG5cdCAgICAgICAgICAgIEhbM10gPSAoSFszXSArIGQpIHwgMDtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvRmluYWxpemU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy5fZGF0YTtcblx0ICAgICAgICAgICAgdmFyIGRhdGFXb3JkcyA9IGRhdGEud29yZHM7XG5cblx0ICAgICAgICAgICAgdmFyIG5CaXRzVG90YWwgPSB0aGlzLl9uRGF0YUJ5dGVzICogODtcblx0ICAgICAgICAgICAgdmFyIG5CaXRzTGVmdCA9IGRhdGEuc2lnQnl0ZXMgKiA4O1xuXG5cdCAgICAgICAgICAgIC8vIEFkZCBwYWRkaW5nXG5cdCAgICAgICAgICAgIGRhdGFXb3Jkc1tuQml0c0xlZnQgPj4+IDVdIHw9IDB4ODAgPDwgKDI0IC0gbkJpdHNMZWZ0ICUgMzIpO1xuXG5cdCAgICAgICAgICAgIHZhciBuQml0c1RvdGFsSCA9IE1hdGguZmxvb3IobkJpdHNUb3RhbCAvIDB4MTAwMDAwMDAwKTtcblx0ICAgICAgICAgICAgdmFyIG5CaXRzVG90YWxMID0gbkJpdHNUb3RhbDtcblx0ICAgICAgICAgICAgZGF0YVdvcmRzWygoKG5CaXRzTGVmdCArIDY0KSA+Pj4gOSkgPDwgNCkgKyAxNV0gPSAoXG5cdCAgICAgICAgICAgICAgICAoKChuQml0c1RvdGFsSCA8PCA4KSAgfCAobkJpdHNUb3RhbEggPj4+IDI0KSkgJiAweDAwZmYwMGZmKSB8XG5cdCAgICAgICAgICAgICAgICAoKChuQml0c1RvdGFsSCA8PCAyNCkgfCAobkJpdHNUb3RhbEggPj4+IDgpKSAgJiAweGZmMDBmZjAwKVxuXHQgICAgICAgICAgICApO1xuXHQgICAgICAgICAgICBkYXRhV29yZHNbKCgobkJpdHNMZWZ0ICsgNjQpID4+PiA5KSA8PCA0KSArIDE0XSA9IChcblx0ICAgICAgICAgICAgICAgICgoKG5CaXRzVG90YWxMIDw8IDgpICB8IChuQml0c1RvdGFsTCA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcblx0ICAgICAgICAgICAgICAgICgoKG5CaXRzVG90YWxMIDw8IDI0KSB8IChuQml0c1RvdGFsTCA+Pj4gOCkpICAmIDB4ZmYwMGZmMDApXG5cdCAgICAgICAgICAgICk7XG5cblx0ICAgICAgICAgICAgZGF0YS5zaWdCeXRlcyA9IChkYXRhV29yZHMubGVuZ3RoICsgMSkgKiA0O1xuXG5cdCAgICAgICAgICAgIC8vIEhhc2ggZmluYWwgYmxvY2tzXG5cdCAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3MoKTtcblxuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGhhc2ggPSB0aGlzLl9oYXNoO1xuXHQgICAgICAgICAgICB2YXIgSCA9IGhhc2gud29yZHM7XG5cblx0ICAgICAgICAgICAgLy8gU3dhcCBlbmRpYW5cblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgICAgICB2YXIgSF9pID0gSFtpXTtcblxuXHQgICAgICAgICAgICAgICAgSFtpXSA9ICgoKEhfaSA8PCA4KSAgfCAoSF9pID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuXHQgICAgICAgICAgICAgICAgICAgICAgICgoKEhfaSA8PCAyNCkgfCAoSF9pID4+PiA4KSkgICYgMHhmZjAwZmYwMCk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBSZXR1cm4gZmluYWwgY29tcHV0ZWQgaGFzaFxuXHQgICAgICAgICAgICByZXR1cm4gaGFzaDtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgY2xvbmU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdmFyIGNsb25lID0gSGFzaGVyLmNsb25lLmNhbGwodGhpcyk7XG5cdCAgICAgICAgICAgIGNsb25lLl9oYXNoID0gdGhpcy5faGFzaC5jbG9uZSgpO1xuXG5cdCAgICAgICAgICAgIHJldHVybiBjbG9uZTtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgZnVuY3Rpb24gRkYoYSwgYiwgYywgZCwgeCwgcywgdCkge1xuXHQgICAgICAgIHZhciBuID0gYSArICgoYiAmIGMpIHwgKH5iICYgZCkpICsgeCArIHQ7XG5cdCAgICAgICAgcmV0dXJuICgobiA8PCBzKSB8IChuID4+PiAoMzIgLSBzKSkpICsgYjtcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gR0coYSwgYiwgYywgZCwgeCwgcywgdCkge1xuXHQgICAgICAgIHZhciBuID0gYSArICgoYiAmIGQpIHwgKGMgJiB+ZCkpICsgeCArIHQ7XG5cdCAgICAgICAgcmV0dXJuICgobiA8PCBzKSB8IChuID4+PiAoMzIgLSBzKSkpICsgYjtcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gSEgoYSwgYiwgYywgZCwgeCwgcywgdCkge1xuXHQgICAgICAgIHZhciBuID0gYSArIChiIF4gYyBeIGQpICsgeCArIHQ7XG5cdCAgICAgICAgcmV0dXJuICgobiA8PCBzKSB8IChuID4+PiAoMzIgLSBzKSkpICsgYjtcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gSUkoYSwgYiwgYywgZCwgeCwgcywgdCkge1xuXHQgICAgICAgIHZhciBuID0gYSArIChjIF4gKGIgfCB+ZCkpICsgeCArIHQ7XG5cdCAgICAgICAgcmV0dXJuICgobiA8PCBzKSB8IChuID4+PiAoMzIgLSBzKSkpICsgYjtcblx0ICAgIH1cblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbiB0byB0aGUgaGFzaGVyJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gaGFzaC5cblx0ICAgICAqXG5cdCAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBoYXNoLlxuXHQgICAgICpcblx0ICAgICAqIEBzdGF0aWNcblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgaGFzaCA9IENyeXB0b0pTLk1ENSgnbWVzc2FnZScpO1xuXHQgICAgICogICAgIHZhciBoYXNoID0gQ3J5cHRvSlMuTUQ1KHdvcmRBcnJheSk7XG5cdCAgICAgKi9cblx0ICAgIEMuTUQ1ID0gSGFzaGVyLl9jcmVhdGVIZWxwZXIoTUQ1KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbiB0byB0aGUgSE1BQydzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGhhc2guXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IGtleSBUaGUgc2VjcmV0IGtleS5cblx0ICAgICAqXG5cdCAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBITUFDLlxuXHQgICAgICpcblx0ICAgICAqIEBzdGF0aWNcblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgaG1hYyA9IENyeXB0b0pTLkhtYWNNRDUobWVzc2FnZSwga2V5KTtcblx0ICAgICAqL1xuXHQgICAgQy5IbWFjTUQ1ID0gSGFzaGVyLl9jcmVhdGVIbWFjSGVscGVyKE1ENSk7XG5cdH0oTWF0aCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLk1ENTtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9jaXBoZXItY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9jaXBoZXItY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0LyoqXG5cdCAqIENpcGhlciBGZWVkYmFjayBibG9jayBtb2RlLlxuXHQgKi9cblx0Q3J5cHRvSlMubW9kZS5DRkIgPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgdmFyIENGQiA9IENyeXB0b0pTLmxpYi5CbG9ja0NpcGhlck1vZGUuZXh0ZW5kKCk7XG5cblx0ICAgIENGQi5FbmNyeXB0b3IgPSBDRkIuZXh0ZW5kKHtcblx0ICAgICAgICBwcm9jZXNzQmxvY2s6IGZ1bmN0aW9uICh3b3Jkcywgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgY2lwaGVyID0gdGhpcy5fY2lwaGVyO1xuXHQgICAgICAgICAgICB2YXIgYmxvY2tTaXplID0gY2lwaGVyLmJsb2NrU2l6ZTtcblxuXHQgICAgICAgICAgICBnZW5lcmF0ZUtleXN0cmVhbUFuZEVuY3J5cHQuY2FsbCh0aGlzLCB3b3Jkcywgb2Zmc2V0LCBibG9ja1NpemUsIGNpcGhlcik7XG5cblx0ICAgICAgICAgICAgLy8gUmVtZW1iZXIgdGhpcyBibG9jayB0byB1c2Ugd2l0aCBuZXh0IGJsb2NrXG5cdCAgICAgICAgICAgIHRoaXMuX3ByZXZCbG9jayA9IHdvcmRzLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgYmxvY2tTaXplKTtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgQ0ZCLkRlY3J5cHRvciA9IENGQi5leHRlbmQoe1xuXHQgICAgICAgIHByb2Nlc3NCbG9jazogZnVuY3Rpb24gKHdvcmRzLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBjaXBoZXIgPSB0aGlzLl9jaXBoZXI7XG5cdCAgICAgICAgICAgIHZhciBibG9ja1NpemUgPSBjaXBoZXIuYmxvY2tTaXplO1xuXG5cdCAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRoaXMgYmxvY2sgdG8gdXNlIHdpdGggbmV4dCBibG9ja1xuXHQgICAgICAgICAgICB2YXIgdGhpc0Jsb2NrID0gd29yZHMuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBibG9ja1NpemUpO1xuXG5cdCAgICAgICAgICAgIGdlbmVyYXRlS2V5c3RyZWFtQW5kRW5jcnlwdC5jYWxsKHRoaXMsIHdvcmRzLCBvZmZzZXQsIGJsb2NrU2l6ZSwgY2lwaGVyKTtcblxuXHQgICAgICAgICAgICAvLyBUaGlzIGJsb2NrIGJlY29tZXMgdGhlIHByZXZpb3VzIGJsb2NrXG5cdCAgICAgICAgICAgIHRoaXMuX3ByZXZCbG9jayA9IHRoaXNCbG9jaztcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgZnVuY3Rpb24gZ2VuZXJhdGVLZXlzdHJlYW1BbmRFbmNyeXB0KHdvcmRzLCBvZmZzZXQsIGJsb2NrU2l6ZSwgY2lwaGVyKSB7XG5cdCAgICAgICAgdmFyIGtleXN0cmVhbTtcblxuXHQgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgdmFyIGl2ID0gdGhpcy5faXY7XG5cblx0ICAgICAgICAvLyBHZW5lcmF0ZSBrZXlzdHJlYW1cblx0ICAgICAgICBpZiAoaXYpIHtcblx0ICAgICAgICAgICAga2V5c3RyZWFtID0gaXYuc2xpY2UoMCk7XG5cblx0ICAgICAgICAgICAgLy8gUmVtb3ZlIElWIGZvciBzdWJzZXF1ZW50IGJsb2Nrc1xuXHQgICAgICAgICAgICB0aGlzLl9pdiA9IHVuZGVmaW5lZDtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICBrZXlzdHJlYW0gPSB0aGlzLl9wcmV2QmxvY2s7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGNpcGhlci5lbmNyeXB0QmxvY2soa2V5c3RyZWFtLCAwKTtcblxuXHQgICAgICAgIC8vIEVuY3J5cHRcblx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJsb2NrU2l6ZTsgaSsrKSB7XG5cdCAgICAgICAgICAgIHdvcmRzW29mZnNldCArIGldIF49IGtleXN0cmVhbVtpXTtcblx0ICAgICAgICB9XG5cdCAgICB9XG5cblx0ICAgIHJldHVybiBDRkI7XG5cdH0oKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMubW9kZS5DRkI7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vY2lwaGVyLWNvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4vY2lwaGVyLWNvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdC8qKiBAcHJlc2VydmVcblx0ICogQ291bnRlciBibG9jayBtb2RlIGNvbXBhdGlibGUgd2l0aCAgRHIgQnJpYW4gR2xhZG1hbiBmaWxlZW5jLmNcblx0ICogZGVyaXZlZCBmcm9tIENyeXB0b0pTLm1vZGUuQ1RSXG5cdCAqIEphbiBIcnVieSBqaHJ1Ynkud2ViQGdtYWlsLmNvbVxuXHQgKi9cblx0Q3J5cHRvSlMubW9kZS5DVFJHbGFkbWFuID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIHZhciBDVFJHbGFkbWFuID0gQ3J5cHRvSlMubGliLkJsb2NrQ2lwaGVyTW9kZS5leHRlbmQoKTtcblxuXHRcdGZ1bmN0aW9uIGluY1dvcmQod29yZClcblx0XHR7XG5cdFx0XHRpZiAoKCh3b3JkID4+IDI0KSAmIDB4ZmYpID09PSAweGZmKSB7IC8vb3ZlcmZsb3dcblx0XHRcdHZhciBiMSA9ICh3b3JkID4+IDE2KSYweGZmO1xuXHRcdFx0dmFyIGIyID0gKHdvcmQgPj4gOCkmMHhmZjtcblx0XHRcdHZhciBiMyA9IHdvcmQgJiAweGZmO1xuXG5cdFx0XHRpZiAoYjEgPT09IDB4ZmYpIC8vIG92ZXJmbG93IGIxXG5cdFx0XHR7XG5cdFx0XHRiMSA9IDA7XG5cdFx0XHRpZiAoYjIgPT09IDB4ZmYpXG5cdFx0XHR7XG5cdFx0XHRcdGIyID0gMDtcblx0XHRcdFx0aWYgKGIzID09PSAweGZmKVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0YjMgPSAwO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2Vcblx0XHRcdFx0e1xuXHRcdFx0XHRcdCsrYjM7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGVsc2Vcblx0XHRcdHtcblx0XHRcdFx0KytiMjtcblx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGVsc2Vcblx0XHRcdHtcblx0XHRcdCsrYjE7XG5cdFx0XHR9XG5cblx0XHRcdHdvcmQgPSAwO1xuXHRcdFx0d29yZCArPSAoYjEgPDwgMTYpO1xuXHRcdFx0d29yZCArPSAoYjIgPDwgOCk7XG5cdFx0XHR3b3JkICs9IGIzO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZVxuXHRcdFx0e1xuXHRcdFx0d29yZCArPSAoMHgwMSA8PCAyNCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gd29yZDtcblx0XHR9XG5cblx0XHRmdW5jdGlvbiBpbmNDb3VudGVyKGNvdW50ZXIpXG5cdFx0e1xuXHRcdFx0aWYgKChjb3VudGVyWzBdID0gaW5jV29yZChjb3VudGVyWzBdKSkgPT09IDApXG5cdFx0XHR7XG5cdFx0XHRcdC8vIGVuY3JfZGF0YSBpbiBmaWxlZW5jLmMgZnJvbSAgRHIgQnJpYW4gR2xhZG1hbidzIGNvdW50cyBvbmx5IHdpdGggRFdPUkQgaiA8IDhcblx0XHRcdFx0Y291bnRlclsxXSA9IGluY1dvcmQoY291bnRlclsxXSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gY291bnRlcjtcblx0XHR9XG5cblx0ICAgIHZhciBFbmNyeXB0b3IgPSBDVFJHbGFkbWFuLkVuY3J5cHRvciA9IENUUkdsYWRtYW4uZXh0ZW5kKHtcblx0ICAgICAgICBwcm9jZXNzQmxvY2s6IGZ1bmN0aW9uICh3b3Jkcywgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgY2lwaGVyID0gdGhpcy5fY2lwaGVyXG5cdCAgICAgICAgICAgIHZhciBibG9ja1NpemUgPSBjaXBoZXIuYmxvY2tTaXplO1xuXHQgICAgICAgICAgICB2YXIgaXYgPSB0aGlzLl9pdjtcblx0ICAgICAgICAgICAgdmFyIGNvdW50ZXIgPSB0aGlzLl9jb3VudGVyO1xuXG5cdCAgICAgICAgICAgIC8vIEdlbmVyYXRlIGtleXN0cmVhbVxuXHQgICAgICAgICAgICBpZiAoaXYpIHtcblx0ICAgICAgICAgICAgICAgIGNvdW50ZXIgPSB0aGlzLl9jb3VudGVyID0gaXYuc2xpY2UoMCk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBJViBmb3Igc3Vic2VxdWVudCBibG9ja3Ncblx0ICAgICAgICAgICAgICAgIHRoaXMuX2l2ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgICAgICB9XG5cblx0XHRcdFx0aW5jQ291bnRlcihjb3VudGVyKTtcblxuXHRcdFx0XHR2YXIga2V5c3RyZWFtID0gY291bnRlci5zbGljZSgwKTtcblx0ICAgICAgICAgICAgY2lwaGVyLmVuY3J5cHRCbG9jayhrZXlzdHJlYW0sIDApO1xuXG5cdCAgICAgICAgICAgIC8vIEVuY3J5cHRcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBibG9ja1NpemU7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgd29yZHNbb2Zmc2V0ICsgaV0gXj0ga2V5c3RyZWFtW2ldO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIENUUkdsYWRtYW4uRGVjcnlwdG9yID0gRW5jcnlwdG9yO1xuXG5cdCAgICByZXR1cm4gQ1RSR2xhZG1hbjtcblx0fSgpKTtcblxuXG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMubW9kZS5DVFJHbGFkbWFuO1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL2NpcGhlci1jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL2NpcGhlci1jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQvKipcblx0ICogQ291bnRlciBibG9jayBtb2RlLlxuXHQgKi9cblx0Q3J5cHRvSlMubW9kZS5DVFIgPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgdmFyIENUUiA9IENyeXB0b0pTLmxpYi5CbG9ja0NpcGhlck1vZGUuZXh0ZW5kKCk7XG5cblx0ICAgIHZhciBFbmNyeXB0b3IgPSBDVFIuRW5jcnlwdG9yID0gQ1RSLmV4dGVuZCh7XG5cdCAgICAgICAgcHJvY2Vzc0Jsb2NrOiBmdW5jdGlvbiAod29yZHMsIG9mZnNldCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGNpcGhlciA9IHRoaXMuX2NpcGhlclxuXHQgICAgICAgICAgICB2YXIgYmxvY2tTaXplID0gY2lwaGVyLmJsb2NrU2l6ZTtcblx0ICAgICAgICAgICAgdmFyIGl2ID0gdGhpcy5faXY7XG5cdCAgICAgICAgICAgIHZhciBjb3VudGVyID0gdGhpcy5fY291bnRlcjtcblxuXHQgICAgICAgICAgICAvLyBHZW5lcmF0ZSBrZXlzdHJlYW1cblx0ICAgICAgICAgICAgaWYgKGl2KSB7XG5cdCAgICAgICAgICAgICAgICBjb3VudGVyID0gdGhpcy5fY291bnRlciA9IGl2LnNsaWNlKDApO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBSZW1vdmUgSVYgZm9yIHN1YnNlcXVlbnQgYmxvY2tzXG5cdCAgICAgICAgICAgICAgICB0aGlzLl9pdiA9IHVuZGVmaW5lZDtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB2YXIga2V5c3RyZWFtID0gY291bnRlci5zbGljZSgwKTtcblx0ICAgICAgICAgICAgY2lwaGVyLmVuY3J5cHRCbG9jayhrZXlzdHJlYW0sIDApO1xuXG5cdCAgICAgICAgICAgIC8vIEluY3JlbWVudCBjb3VudGVyXG5cdCAgICAgICAgICAgIGNvdW50ZXJbYmxvY2tTaXplIC0gMV0gPSAoY291bnRlcltibG9ja1NpemUgLSAxXSArIDEpIHwgMFxuXG5cdCAgICAgICAgICAgIC8vIEVuY3J5cHRcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBibG9ja1NpemU7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgd29yZHNbb2Zmc2V0ICsgaV0gXj0ga2V5c3RyZWFtW2ldO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIENUUi5EZWNyeXB0b3IgPSBFbmNyeXB0b3I7XG5cblx0ICAgIHJldHVybiBDVFI7XG5cdH0oKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMubW9kZS5DVFI7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vY2lwaGVyLWNvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4vY2lwaGVyLWNvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdC8qKlxuXHQgKiBFbGVjdHJvbmljIENvZGVib29rIGJsb2NrIG1vZGUuXG5cdCAqL1xuXHRDcnlwdG9KUy5tb2RlLkVDQiA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICB2YXIgRUNCID0gQ3J5cHRvSlMubGliLkJsb2NrQ2lwaGVyTW9kZS5leHRlbmQoKTtcblxuXHQgICAgRUNCLkVuY3J5cHRvciA9IEVDQi5leHRlbmQoe1xuXHQgICAgICAgIHByb2Nlc3NCbG9jazogZnVuY3Rpb24gKHdvcmRzLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgdGhpcy5fY2lwaGVyLmVuY3J5cHRCbG9jayh3b3Jkcywgb2Zmc2V0KTtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgRUNCLkRlY3J5cHRvciA9IEVDQi5leHRlbmQoe1xuXHQgICAgICAgIHByb2Nlc3NCbG9jazogZnVuY3Rpb24gKHdvcmRzLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgdGhpcy5fY2lwaGVyLmRlY3J5cHRCbG9jayh3b3Jkcywgb2Zmc2V0KTtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgcmV0dXJuIEVDQjtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5tb2RlLkVDQjtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9jaXBoZXItY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9jaXBoZXItY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0LyoqXG5cdCAqIE91dHB1dCBGZWVkYmFjayBibG9jayBtb2RlLlxuXHQgKi9cblx0Q3J5cHRvSlMubW9kZS5PRkIgPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgdmFyIE9GQiA9IENyeXB0b0pTLmxpYi5CbG9ja0NpcGhlck1vZGUuZXh0ZW5kKCk7XG5cblx0ICAgIHZhciBFbmNyeXB0b3IgPSBPRkIuRW5jcnlwdG9yID0gT0ZCLmV4dGVuZCh7XG5cdCAgICAgICAgcHJvY2Vzc0Jsb2NrOiBmdW5jdGlvbiAod29yZHMsIG9mZnNldCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGNpcGhlciA9IHRoaXMuX2NpcGhlclxuXHQgICAgICAgICAgICB2YXIgYmxvY2tTaXplID0gY2lwaGVyLmJsb2NrU2l6ZTtcblx0ICAgICAgICAgICAgdmFyIGl2ID0gdGhpcy5faXY7XG5cdCAgICAgICAgICAgIHZhciBrZXlzdHJlYW0gPSB0aGlzLl9rZXlzdHJlYW07XG5cblx0ICAgICAgICAgICAgLy8gR2VuZXJhdGUga2V5c3RyZWFtXG5cdCAgICAgICAgICAgIGlmIChpdikge1xuXHQgICAgICAgICAgICAgICAga2V5c3RyZWFtID0gdGhpcy5fa2V5c3RyZWFtID0gaXYuc2xpY2UoMCk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBJViBmb3Igc3Vic2VxdWVudCBibG9ja3Ncblx0ICAgICAgICAgICAgICAgIHRoaXMuX2l2ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGNpcGhlci5lbmNyeXB0QmxvY2soa2V5c3RyZWFtLCAwKTtcblxuXHQgICAgICAgICAgICAvLyBFbmNyeXB0XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmxvY2tTaXplOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIHdvcmRzW29mZnNldCArIGldIF49IGtleXN0cmVhbVtpXTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICBPRkIuRGVjcnlwdG9yID0gRW5jcnlwdG9yO1xuXG5cdCAgICByZXR1cm4gT0ZCO1xuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLm1vZGUuT0ZCO1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL2NpcGhlci1jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL2NpcGhlci1jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQvKipcblx0ICogQU5TSSBYLjkyMyBwYWRkaW5nIHN0cmF0ZWd5LlxuXHQgKi9cblx0Q3J5cHRvSlMucGFkLkFuc2lYOTIzID0ge1xuXHQgICAgcGFkOiBmdW5jdGlvbiAoZGF0YSwgYmxvY2tTaXplKSB7XG5cdCAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgdmFyIGRhdGFTaWdCeXRlcyA9IGRhdGEuc2lnQnl0ZXM7XG5cdCAgICAgICAgdmFyIGJsb2NrU2l6ZUJ5dGVzID0gYmxvY2tTaXplICogNDtcblxuXHQgICAgICAgIC8vIENvdW50IHBhZGRpbmcgYnl0ZXNcblx0ICAgICAgICB2YXIgblBhZGRpbmdCeXRlcyA9IGJsb2NrU2l6ZUJ5dGVzIC0gZGF0YVNpZ0J5dGVzICUgYmxvY2tTaXplQnl0ZXM7XG5cblx0ICAgICAgICAvLyBDb21wdXRlIGxhc3QgYnl0ZSBwb3NpdGlvblxuXHQgICAgICAgIHZhciBsYXN0Qnl0ZVBvcyA9IGRhdGFTaWdCeXRlcyArIG5QYWRkaW5nQnl0ZXMgLSAxO1xuXG5cdCAgICAgICAgLy8gUGFkXG5cdCAgICAgICAgZGF0YS5jbGFtcCgpO1xuXHQgICAgICAgIGRhdGEud29yZHNbbGFzdEJ5dGVQb3MgPj4+IDJdIHw9IG5QYWRkaW5nQnl0ZXMgPDwgKDI0IC0gKGxhc3RCeXRlUG9zICUgNCkgKiA4KTtcblx0ICAgICAgICBkYXRhLnNpZ0J5dGVzICs9IG5QYWRkaW5nQnl0ZXM7XG5cdCAgICB9LFxuXG5cdCAgICB1bnBhZDogZnVuY3Rpb24gKGRhdGEpIHtcblx0ICAgICAgICAvLyBHZXQgbnVtYmVyIG9mIHBhZGRpbmcgYnl0ZXMgZnJvbSBsYXN0IGJ5dGVcblx0ICAgICAgICB2YXIgblBhZGRpbmdCeXRlcyA9IGRhdGEud29yZHNbKGRhdGEuc2lnQnl0ZXMgLSAxKSA+Pj4gMl0gJiAweGZmO1xuXG5cdCAgICAgICAgLy8gUmVtb3ZlIHBhZGRpbmdcblx0ICAgICAgICBkYXRhLnNpZ0J5dGVzIC09IG5QYWRkaW5nQnl0ZXM7XG5cdCAgICB9XG5cdH07XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMucGFkLkFuc2l4OTIzO1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL2NpcGhlci1jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL2NpcGhlci1jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQvKipcblx0ICogSVNPIDEwMTI2IHBhZGRpbmcgc3RyYXRlZ3kuXG5cdCAqL1xuXHRDcnlwdG9KUy5wYWQuSXNvMTAxMjYgPSB7XG5cdCAgICBwYWQ6IGZ1bmN0aW9uIChkYXRhLCBibG9ja1NpemUpIHtcblx0ICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgIHZhciBibG9ja1NpemVCeXRlcyA9IGJsb2NrU2l6ZSAqIDQ7XG5cblx0ICAgICAgICAvLyBDb3VudCBwYWRkaW5nIGJ5dGVzXG5cdCAgICAgICAgdmFyIG5QYWRkaW5nQnl0ZXMgPSBibG9ja1NpemVCeXRlcyAtIGRhdGEuc2lnQnl0ZXMgJSBibG9ja1NpemVCeXRlcztcblxuXHQgICAgICAgIC8vIFBhZFxuXHQgICAgICAgIGRhdGEuY29uY2F0KENyeXB0b0pTLmxpYi5Xb3JkQXJyYXkucmFuZG9tKG5QYWRkaW5nQnl0ZXMgLSAxKSkuXG5cdCAgICAgICAgICAgICBjb25jYXQoQ3J5cHRvSlMubGliLldvcmRBcnJheS5jcmVhdGUoW25QYWRkaW5nQnl0ZXMgPDwgMjRdLCAxKSk7XG5cdCAgICB9LFxuXG5cdCAgICB1bnBhZDogZnVuY3Rpb24gKGRhdGEpIHtcblx0ICAgICAgICAvLyBHZXQgbnVtYmVyIG9mIHBhZGRpbmcgYnl0ZXMgZnJvbSBsYXN0IGJ5dGVcblx0ICAgICAgICB2YXIgblBhZGRpbmdCeXRlcyA9IGRhdGEud29yZHNbKGRhdGEuc2lnQnl0ZXMgLSAxKSA+Pj4gMl0gJiAweGZmO1xuXG5cdCAgICAgICAgLy8gUmVtb3ZlIHBhZGRpbmdcblx0ICAgICAgICBkYXRhLnNpZ0J5dGVzIC09IG5QYWRkaW5nQnl0ZXM7XG5cdCAgICB9XG5cdH07XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMucGFkLklzbzEwMTI2O1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL2NpcGhlci1jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL2NpcGhlci1jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQvKipcblx0ICogSVNPL0lFQyA5Nzk3LTEgUGFkZGluZyBNZXRob2QgMi5cblx0ICovXG5cdENyeXB0b0pTLnBhZC5Jc285Nzk3MSA9IHtcblx0ICAgIHBhZDogZnVuY3Rpb24gKGRhdGEsIGJsb2NrU2l6ZSkge1xuXHQgICAgICAgIC8vIEFkZCAweDgwIGJ5dGVcblx0ICAgICAgICBkYXRhLmNvbmNhdChDcnlwdG9KUy5saWIuV29yZEFycmF5LmNyZWF0ZShbMHg4MDAwMDAwMF0sIDEpKTtcblxuXHQgICAgICAgIC8vIFplcm8gcGFkIHRoZSByZXN0XG5cdCAgICAgICAgQ3J5cHRvSlMucGFkLlplcm9QYWRkaW5nLnBhZChkYXRhLCBibG9ja1NpemUpO1xuXHQgICAgfSxcblxuXHQgICAgdW5wYWQ6IGZ1bmN0aW9uIChkYXRhKSB7XG5cdCAgICAgICAgLy8gUmVtb3ZlIHplcm8gcGFkZGluZ1xuXHQgICAgICAgIENyeXB0b0pTLnBhZC5aZXJvUGFkZGluZy51bnBhZChkYXRhKTtcblxuXHQgICAgICAgIC8vIFJlbW92ZSBvbmUgbW9yZSBieXRlIC0tIHRoZSAweDgwIGJ5dGVcblx0ICAgICAgICBkYXRhLnNpZ0J5dGVzLS07XG5cdCAgICB9XG5cdH07XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMucGFkLklzbzk3OTcxO1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL2NpcGhlci1jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL2NpcGhlci1jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQvKipcblx0ICogQSBub29wIHBhZGRpbmcgc3RyYXRlZ3kuXG5cdCAqL1xuXHRDcnlwdG9KUy5wYWQuTm9QYWRkaW5nID0ge1xuXHQgICAgcGFkOiBmdW5jdGlvbiAoKSB7XG5cdCAgICB9LFxuXG5cdCAgICB1bnBhZDogZnVuY3Rpb24gKCkge1xuXHQgICAgfVxuXHR9O1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLnBhZC5Ob1BhZGRpbmc7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vY2lwaGVyLWNvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4vY2lwaGVyLWNvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdC8qKlxuXHQgKiBaZXJvIHBhZGRpbmcgc3RyYXRlZ3kuXG5cdCAqL1xuXHRDcnlwdG9KUy5wYWQuWmVyb1BhZGRpbmcgPSB7XG5cdCAgICBwYWQ6IGZ1bmN0aW9uIChkYXRhLCBibG9ja1NpemUpIHtcblx0ICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgIHZhciBibG9ja1NpemVCeXRlcyA9IGJsb2NrU2l6ZSAqIDQ7XG5cblx0ICAgICAgICAvLyBQYWRcblx0ICAgICAgICBkYXRhLmNsYW1wKCk7XG5cdCAgICAgICAgZGF0YS5zaWdCeXRlcyArPSBibG9ja1NpemVCeXRlcyAtICgoZGF0YS5zaWdCeXRlcyAlIGJsb2NrU2l6ZUJ5dGVzKSB8fCBibG9ja1NpemVCeXRlcyk7XG5cdCAgICB9LFxuXG5cdCAgICB1bnBhZDogZnVuY3Rpb24gKGRhdGEpIHtcblx0ICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgIHZhciBkYXRhV29yZHMgPSBkYXRhLndvcmRzO1xuXG5cdCAgICAgICAgLy8gVW5wYWRcblx0ICAgICAgICB2YXIgaSA9IGRhdGEuc2lnQnl0ZXMgLSAxO1xuXHQgICAgICAgIGZvciAodmFyIGkgPSBkYXRhLnNpZ0J5dGVzIC0gMTsgaSA+PSAwOyBpLS0pIHtcblx0ICAgICAgICAgICAgaWYgKCgoZGF0YVdvcmRzW2kgPj4+IDJdID4+PiAoMjQgLSAoaSAlIDQpICogOCkpICYgMHhmZikpIHtcblx0ICAgICAgICAgICAgICAgIGRhdGEuc2lnQnl0ZXMgPSBpICsgMTtcblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgfVxuXHR9O1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLnBhZC5aZXJvUGFkZGluZztcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9zaGExXCIpLCByZXF1aXJlKFwiLi9obWFjXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL3NoYTFcIiwgXCIuL2htYWNcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAoKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBCYXNlID0gQ19saWIuQmFzZTtcblx0ICAgIHZhciBXb3JkQXJyYXkgPSBDX2xpYi5Xb3JkQXJyYXk7XG5cdCAgICB2YXIgQ19hbGdvID0gQy5hbGdvO1xuXHQgICAgdmFyIFNIQTEgPSBDX2FsZ28uU0hBMTtcblx0ICAgIHZhciBITUFDID0gQ19hbGdvLkhNQUM7XG5cblx0ICAgIC8qKlxuXHQgICAgICogUGFzc3dvcmQtQmFzZWQgS2V5IERlcml2YXRpb24gRnVuY3Rpb24gMiBhbGdvcml0aG0uXG5cdCAgICAgKi9cblx0ICAgIHZhciBQQktERjIgPSBDX2FsZ28uUEJLREYyID0gQmFzZS5leHRlbmQoe1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBrZXlTaXplIFRoZSBrZXkgc2l6ZSBpbiB3b3JkcyB0byBnZW5lcmF0ZS4gRGVmYXVsdDogNCAoMTI4IGJpdHMpXG5cdCAgICAgICAgICogQHByb3BlcnR5IHtIYXNoZXJ9IGhhc2hlciBUaGUgaGFzaGVyIHRvIHVzZS4gRGVmYXVsdDogU0hBMVxuXHQgICAgICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBpdGVyYXRpb25zIFRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucyB0byBwZXJmb3JtLiBEZWZhdWx0OiAxXG5cdCAgICAgICAgICovXG5cdCAgICAgICAgY2ZnOiBCYXNlLmV4dGVuZCh7XG5cdCAgICAgICAgICAgIGtleVNpemU6IDEyOC8zMixcblx0ICAgICAgICAgICAgaGFzaGVyOiBTSEExLFxuXHQgICAgICAgICAgICBpdGVyYXRpb25zOiAxXG5cdCAgICAgICAgfSksXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBJbml0aWFsaXplcyBhIG5ld2x5IGNyZWF0ZWQga2V5IGRlcml2YXRpb24gZnVuY3Rpb24uXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIChPcHRpb25hbCkgVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB1c2UgZm9yIHRoZSBkZXJpdmF0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIga2RmID0gQ3J5cHRvSlMuYWxnby5QQktERjIuY3JlYXRlKCk7XG5cdCAgICAgICAgICogICAgIHZhciBrZGYgPSBDcnlwdG9KUy5hbGdvLlBCS0RGMi5jcmVhdGUoeyBrZXlTaXplOiA4IH0pO1xuXHQgICAgICAgICAqICAgICB2YXIga2RmID0gQ3J5cHRvSlMuYWxnby5QQktERjIuY3JlYXRlKHsga2V5U2l6ZTogOCwgaXRlcmF0aW9uczogMTAwMCB9KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBpbml0OiBmdW5jdGlvbiAoY2ZnKSB7XG5cdCAgICAgICAgICAgIHRoaXMuY2ZnID0gdGhpcy5jZmcuZXh0ZW5kKGNmZyk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbXB1dGVzIHRoZSBQYXNzd29yZC1CYXNlZCBLZXkgRGVyaXZhdGlvbiBGdW5jdGlvbiAyLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBwYXNzd29yZCBUaGUgcGFzc3dvcmQuXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBzYWx0IEEgc2FsdC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIGRlcml2ZWQga2V5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIga2V5ID0ga2RmLmNvbXB1dGUocGFzc3dvcmQsIHNhbHQpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNvbXB1dGU6IGZ1bmN0aW9uIChwYXNzd29yZCwgc2FsdCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICB2YXIgY2ZnID0gdGhpcy5jZmc7XG5cblx0ICAgICAgICAgICAgLy8gSW5pdCBITUFDXG5cdCAgICAgICAgICAgIHZhciBobWFjID0gSE1BQy5jcmVhdGUoY2ZnLmhhc2hlciwgcGFzc3dvcmQpO1xuXG5cdCAgICAgICAgICAgIC8vIEluaXRpYWwgdmFsdWVzXG5cdCAgICAgICAgICAgIHZhciBkZXJpdmVkS2V5ID0gV29yZEFycmF5LmNyZWF0ZSgpO1xuXHQgICAgICAgICAgICB2YXIgYmxvY2tJbmRleCA9IFdvcmRBcnJheS5jcmVhdGUoWzB4MDAwMDAwMDFdKTtcblxuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGRlcml2ZWRLZXlXb3JkcyA9IGRlcml2ZWRLZXkud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBibG9ja0luZGV4V29yZHMgPSBibG9ja0luZGV4LndvcmRzO1xuXHQgICAgICAgICAgICB2YXIga2V5U2l6ZSA9IGNmZy5rZXlTaXplO1xuXHQgICAgICAgICAgICB2YXIgaXRlcmF0aW9ucyA9IGNmZy5pdGVyYXRpb25zO1xuXG5cdCAgICAgICAgICAgIC8vIEdlbmVyYXRlIGtleVxuXHQgICAgICAgICAgICB3aGlsZSAoZGVyaXZlZEtleVdvcmRzLmxlbmd0aCA8IGtleVNpemUpIHtcblx0ICAgICAgICAgICAgICAgIHZhciBibG9jayA9IGhtYWMudXBkYXRlKHNhbHQpLmZpbmFsaXplKGJsb2NrSW5kZXgpO1xuXHQgICAgICAgICAgICAgICAgaG1hYy5yZXNldCgpO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgICAgIHZhciBibG9ja1dvcmRzID0gYmxvY2sud29yZHM7XG5cdCAgICAgICAgICAgICAgICB2YXIgYmxvY2tXb3Jkc0xlbmd0aCA9IGJsb2NrV29yZHMubGVuZ3RoO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBJdGVyYXRpb25zXG5cdCAgICAgICAgICAgICAgICB2YXIgaW50ZXJtZWRpYXRlID0gYmxvY2s7XG5cdCAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGl0ZXJhdGlvbnM7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgICAgIGludGVybWVkaWF0ZSA9IGhtYWMuZmluYWxpemUoaW50ZXJtZWRpYXRlKTtcblx0ICAgICAgICAgICAgICAgICAgICBobWFjLnJlc2V0KCk7XG5cblx0ICAgICAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICAgICAgICAgIHZhciBpbnRlcm1lZGlhdGVXb3JkcyA9IGludGVybWVkaWF0ZS53b3JkcztcblxuXHQgICAgICAgICAgICAgICAgICAgIC8vIFhPUiBpbnRlcm1lZGlhdGUgd2l0aCBibG9ja1xuXHQgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYmxvY2tXb3Jkc0xlbmd0aDsgaisrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrV29yZHNbal0gXj0gaW50ZXJtZWRpYXRlV29yZHNbal07XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICBkZXJpdmVkS2V5LmNvbmNhdChibG9jayk7XG5cdCAgICAgICAgICAgICAgICBibG9ja0luZGV4V29yZHNbMF0rKztcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBkZXJpdmVkS2V5LnNpZ0J5dGVzID0ga2V5U2l6ZSAqIDQ7XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGRlcml2ZWRLZXk7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogQ29tcHV0ZXMgdGhlIFBhc3N3b3JkLUJhc2VkIEtleSBEZXJpdmF0aW9uIEZ1bmN0aW9uIDIuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBwYXNzd29yZCBUaGUgcGFzc3dvcmQuXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IHNhbHQgQSBzYWx0LlxuXHQgICAgICogQHBhcmFtIHtPYmplY3R9IGNmZyAoT3B0aW9uYWwpIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdXNlIGZvciB0aGlzIGNvbXB1dGF0aW9uLlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIGRlcml2ZWQga2V5LlxuXHQgICAgICpcblx0ICAgICAqIEBzdGF0aWNcblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIga2V5ID0gQ3J5cHRvSlMuUEJLREYyKHBhc3N3b3JkLCBzYWx0KTtcblx0ICAgICAqICAgICB2YXIga2V5ID0gQ3J5cHRvSlMuUEJLREYyKHBhc3N3b3JkLCBzYWx0LCB7IGtleVNpemU6IDggfSk7XG5cdCAgICAgKiAgICAgdmFyIGtleSA9IENyeXB0b0pTLlBCS0RGMihwYXNzd29yZCwgc2FsdCwgeyBrZXlTaXplOiA4LCBpdGVyYXRpb25zOiAxMDAwIH0pO1xuXHQgICAgICovXG5cdCAgICBDLlBCS0RGMiA9IGZ1bmN0aW9uIChwYXNzd29yZCwgc2FsdCwgY2ZnKSB7XG5cdCAgICAgICAgcmV0dXJuIFBCS0RGMi5jcmVhdGUoY2ZnKS5jb21wdXRlKHBhc3N3b3JkLCBzYWx0KTtcblx0ICAgIH07XG5cdH0oKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMuUEJLREYyO1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL2VuYy1iYXNlNjRcIiksIHJlcXVpcmUoXCIuL21kNVwiKSwgcmVxdWlyZShcIi4vZXZwa2RmXCIpLCByZXF1aXJlKFwiLi9jaXBoZXItY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9lbmMtYmFzZTY0XCIsIFwiLi9tZDVcIiwgXCIuL2V2cGtkZlwiLCBcIi4vY2lwaGVyLWNvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAoKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBTdHJlYW1DaXBoZXIgPSBDX2xpYi5TdHJlYW1DaXBoZXI7XG5cdCAgICB2YXIgQ19hbGdvID0gQy5hbGdvO1xuXG5cdCAgICAvLyBSZXVzYWJsZSBvYmplY3RzXG5cdCAgICB2YXIgUyAgPSBbXTtcblx0ICAgIHZhciBDXyA9IFtdO1xuXHQgICAgdmFyIEcgID0gW107XG5cblx0ICAgIC8qKlxuXHQgICAgICogUmFiYml0IHN0cmVhbSBjaXBoZXIgYWxnb3JpdGhtLlxuXHQgICAgICpcblx0ICAgICAqIFRoaXMgaXMgYSBsZWdhY3kgdmVyc2lvbiB0aGF0IG5lZ2xlY3RlZCB0byBjb252ZXJ0IHRoZSBrZXkgdG8gbGl0dGxlLWVuZGlhbi5cblx0ICAgICAqIFRoaXMgZXJyb3IgZG9lc24ndCBhZmZlY3QgdGhlIGNpcGhlcidzIHNlY3VyaXR5LFxuXHQgICAgICogYnV0IGl0IGRvZXMgYWZmZWN0IGl0cyBjb21wYXRpYmlsaXR5IHdpdGggb3RoZXIgaW1wbGVtZW50YXRpb25zLlxuXHQgICAgICovXG5cdCAgICB2YXIgUmFiYml0TGVnYWN5ID0gQ19hbGdvLlJhYmJpdExlZ2FjeSA9IFN0cmVhbUNpcGhlci5leHRlbmQoe1xuXHQgICAgICAgIF9kb1Jlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgSyA9IHRoaXMuX2tleS53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIGl2ID0gdGhpcy5jZmcuaXY7XG5cblx0ICAgICAgICAgICAgLy8gR2VuZXJhdGUgaW5pdGlhbCBzdGF0ZSB2YWx1ZXNcblx0ICAgICAgICAgICAgdmFyIFggPSB0aGlzLl9YID0gW1xuXHQgICAgICAgICAgICAgICAgS1swXSwgKEtbM10gPDwgMTYpIHwgKEtbMl0gPj4+IDE2KSxcblx0ICAgICAgICAgICAgICAgIEtbMV0sIChLWzBdIDw8IDE2KSB8IChLWzNdID4+PiAxNiksXG5cdCAgICAgICAgICAgICAgICBLWzJdLCAoS1sxXSA8PCAxNikgfCAoS1swXSA+Pj4gMTYpLFxuXHQgICAgICAgICAgICAgICAgS1szXSwgKEtbMl0gPDwgMTYpIHwgKEtbMV0gPj4+IDE2KVxuXHQgICAgICAgICAgICBdO1xuXG5cdCAgICAgICAgICAgIC8vIEdlbmVyYXRlIGluaXRpYWwgY291bnRlciB2YWx1ZXNcblx0ICAgICAgICAgICAgdmFyIEMgPSB0aGlzLl9DID0gW1xuXHQgICAgICAgICAgICAgICAgKEtbMl0gPDwgMTYpIHwgKEtbMl0gPj4+IDE2KSwgKEtbMF0gJiAweGZmZmYwMDAwKSB8IChLWzFdICYgMHgwMDAwZmZmZiksXG5cdCAgICAgICAgICAgICAgICAoS1szXSA8PCAxNikgfCAoS1szXSA+Pj4gMTYpLCAoS1sxXSAmIDB4ZmZmZjAwMDApIHwgKEtbMl0gJiAweDAwMDBmZmZmKSxcblx0ICAgICAgICAgICAgICAgIChLWzBdIDw8IDE2KSB8IChLWzBdID4+PiAxNiksIChLWzJdICYgMHhmZmZmMDAwMCkgfCAoS1szXSAmIDB4MDAwMGZmZmYpLFxuXHQgICAgICAgICAgICAgICAgKEtbMV0gPDwgMTYpIHwgKEtbMV0gPj4+IDE2KSwgKEtbM10gJiAweGZmZmYwMDAwKSB8IChLWzBdICYgMHgwMDAwZmZmZilcblx0ICAgICAgICAgICAgXTtcblxuXHQgICAgICAgICAgICAvLyBDYXJyeSBiaXRcblx0ICAgICAgICAgICAgdGhpcy5fYiA9IDA7XG5cblx0ICAgICAgICAgICAgLy8gSXRlcmF0ZSB0aGUgc3lzdGVtIGZvdXIgdGltZXNcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIG5leHRTdGF0ZS5jYWxsKHRoaXMpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gTW9kaWZ5IHRoZSBjb3VudGVyc1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgQ1tpXSBePSBYWyhpICsgNCkgJiA3XTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIElWIHNldHVwXG5cdCAgICAgICAgICAgIGlmIChpdikge1xuXHQgICAgICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgICAgICB2YXIgSVYgPSBpdi53b3Jkcztcblx0ICAgICAgICAgICAgICAgIHZhciBJVl8wID0gSVZbMF07XG5cdCAgICAgICAgICAgICAgICB2YXIgSVZfMSA9IElWWzFdO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBHZW5lcmF0ZSBmb3VyIHN1YnZlY3RvcnNcblx0ICAgICAgICAgICAgICAgIHZhciBpMCA9ICgoKElWXzAgPDwgOCkgfCAoSVZfMCA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHwgKCgoSVZfMCA8PCAyNCkgfCAoSVZfMCA+Pj4gOCkpICYgMHhmZjAwZmYwMCk7XG5cdCAgICAgICAgICAgICAgICB2YXIgaTIgPSAoKChJVl8xIDw8IDgpIHwgKElWXzEgPj4+IDI0KSkgJiAweDAwZmYwMGZmKSB8ICgoKElWXzEgPDwgMjQpIHwgKElWXzEgPj4+IDgpKSAmIDB4ZmYwMGZmMDApO1xuXHQgICAgICAgICAgICAgICAgdmFyIGkxID0gKGkwID4+PiAxNikgfCAoaTIgJiAweGZmZmYwMDAwKTtcblx0ICAgICAgICAgICAgICAgIHZhciBpMyA9IChpMiA8PCAxNikgIHwgKGkwICYgMHgwMDAwZmZmZik7XG5cblx0ICAgICAgICAgICAgICAgIC8vIE1vZGlmeSBjb3VudGVyIHZhbHVlc1xuXHQgICAgICAgICAgICAgICAgQ1swXSBePSBpMDtcblx0ICAgICAgICAgICAgICAgIENbMV0gXj0gaTE7XG5cdCAgICAgICAgICAgICAgICBDWzJdIF49IGkyO1xuXHQgICAgICAgICAgICAgICAgQ1szXSBePSBpMztcblx0ICAgICAgICAgICAgICAgIENbNF0gXj0gaTA7XG5cdCAgICAgICAgICAgICAgICBDWzVdIF49IGkxO1xuXHQgICAgICAgICAgICAgICAgQ1s2XSBePSBpMjtcblx0ICAgICAgICAgICAgICAgIENbN10gXj0gaTM7XG5cblx0ICAgICAgICAgICAgICAgIC8vIEl0ZXJhdGUgdGhlIHN5c3RlbSBmb3VyIHRpbWVzXG5cdCAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgICAgIG5leHRTdGF0ZS5jYWxsKHRoaXMpO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb1Byb2Nlc3NCbG9jazogZnVuY3Rpb24gKE0sIG9mZnNldCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICB2YXIgWCA9IHRoaXMuX1g7XG5cblx0ICAgICAgICAgICAgLy8gSXRlcmF0ZSB0aGUgc3lzdGVtXG5cdCAgICAgICAgICAgIG5leHRTdGF0ZS5jYWxsKHRoaXMpO1xuXG5cdCAgICAgICAgICAgIC8vIEdlbmVyYXRlIGZvdXIga2V5c3RyZWFtIHdvcmRzXG5cdCAgICAgICAgICAgIFNbMF0gPSBYWzBdIF4gKFhbNV0gPj4+IDE2KSBeIChYWzNdIDw8IDE2KTtcblx0ICAgICAgICAgICAgU1sxXSA9IFhbMl0gXiAoWFs3XSA+Pj4gMTYpIF4gKFhbNV0gPDwgMTYpO1xuXHQgICAgICAgICAgICBTWzJdID0gWFs0XSBeIChYWzFdID4+PiAxNikgXiAoWFs3XSA8PCAxNik7XG5cdCAgICAgICAgICAgIFNbM10gPSBYWzZdIF4gKFhbM10gPj4+IDE2KSBeIChYWzFdIDw8IDE2KTtcblxuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgLy8gU3dhcCBlbmRpYW5cblx0ICAgICAgICAgICAgICAgIFNbaV0gPSAoKChTW2ldIDw8IDgpICB8IChTW2ldID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuXHQgICAgICAgICAgICAgICAgICAgICAgICgoKFNbaV0gPDwgMjQpIHwgKFNbaV0gPj4+IDgpKSAgJiAweGZmMDBmZjAwKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gRW5jcnlwdFxuXHQgICAgICAgICAgICAgICAgTVtvZmZzZXQgKyBpXSBePSBTW2ldO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGJsb2NrU2l6ZTogMTI4LzMyLFxuXG5cdCAgICAgICAgaXZTaXplOiA2NC8zMlxuXHQgICAgfSk7XG5cblx0ICAgIGZ1bmN0aW9uIG5leHRTdGF0ZSgpIHtcblx0ICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICB2YXIgWCA9IHRoaXMuX1g7XG5cdCAgICAgICAgdmFyIEMgPSB0aGlzLl9DO1xuXG5cdCAgICAgICAgLy8gU2F2ZSBvbGQgY291bnRlciB2YWx1ZXNcblx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykge1xuXHQgICAgICAgICAgICBDX1tpXSA9IENbaV07XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgLy8gQ2FsY3VsYXRlIG5ldyBjb3VudGVyIHZhbHVlc1xuXHQgICAgICAgIENbMF0gPSAoQ1swXSArIDB4NGQzNGQzNGQgKyB0aGlzLl9iKSB8IDA7XG5cdCAgICAgICAgQ1sxXSA9IChDWzFdICsgMHhkMzRkMzRkMyArICgoQ1swXSA+Pj4gMCkgPCAoQ19bMF0gPj4+IDApID8gMSA6IDApKSB8IDA7XG5cdCAgICAgICAgQ1syXSA9IChDWzJdICsgMHgzNGQzNGQzNCArICgoQ1sxXSA+Pj4gMCkgPCAoQ19bMV0gPj4+IDApID8gMSA6IDApKSB8IDA7XG5cdCAgICAgICAgQ1szXSA9IChDWzNdICsgMHg0ZDM0ZDM0ZCArICgoQ1syXSA+Pj4gMCkgPCAoQ19bMl0gPj4+IDApID8gMSA6IDApKSB8IDA7XG5cdCAgICAgICAgQ1s0XSA9IChDWzRdICsgMHhkMzRkMzRkMyArICgoQ1szXSA+Pj4gMCkgPCAoQ19bM10gPj4+IDApID8gMSA6IDApKSB8IDA7XG5cdCAgICAgICAgQ1s1XSA9IChDWzVdICsgMHgzNGQzNGQzNCArICgoQ1s0XSA+Pj4gMCkgPCAoQ19bNF0gPj4+IDApID8gMSA6IDApKSB8IDA7XG5cdCAgICAgICAgQ1s2XSA9IChDWzZdICsgMHg0ZDM0ZDM0ZCArICgoQ1s1XSA+Pj4gMCkgPCAoQ19bNV0gPj4+IDApID8gMSA6IDApKSB8IDA7XG5cdCAgICAgICAgQ1s3XSA9IChDWzddICsgMHhkMzRkMzRkMyArICgoQ1s2XSA+Pj4gMCkgPCAoQ19bNl0gPj4+IDApID8gMSA6IDApKSB8IDA7XG5cdCAgICAgICAgdGhpcy5fYiA9IChDWzddID4+PiAwKSA8IChDX1s3XSA+Pj4gMCkgPyAxIDogMDtcblxuXHQgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgZy12YWx1ZXNcblx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykge1xuXHQgICAgICAgICAgICB2YXIgZ3ggPSBYW2ldICsgQ1tpXTtcblxuXHQgICAgICAgICAgICAvLyBDb25zdHJ1Y3QgaGlnaCBhbmQgbG93IGFyZ3VtZW50IGZvciBzcXVhcmluZ1xuXHQgICAgICAgICAgICB2YXIgZ2EgPSBneCAmIDB4ZmZmZjtcblx0ICAgICAgICAgICAgdmFyIGdiID0gZ3ggPj4+IDE2O1xuXG5cdCAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBoaWdoIGFuZCBsb3cgcmVzdWx0IG9mIHNxdWFyaW5nXG5cdCAgICAgICAgICAgIHZhciBnaCA9ICgoKChnYSAqIGdhKSA+Pj4gMTcpICsgZ2EgKiBnYikgPj4+IDE1KSArIGdiICogZ2I7XG5cdCAgICAgICAgICAgIHZhciBnbCA9ICgoKGd4ICYgMHhmZmZmMDAwMCkgKiBneCkgfCAwKSArICgoKGd4ICYgMHgwMDAwZmZmZikgKiBneCkgfCAwKTtcblxuXHQgICAgICAgICAgICAvLyBIaWdoIFhPUiBsb3dcblx0ICAgICAgICAgICAgR1tpXSA9IGdoIF4gZ2w7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgLy8gQ2FsY3VsYXRlIG5ldyBzdGF0ZSB2YWx1ZXNcblx0ICAgICAgICBYWzBdID0gKEdbMF0gKyAoKEdbN10gPDwgMTYpIHwgKEdbN10gPj4+IDE2KSkgKyAoKEdbNl0gPDwgMTYpIHwgKEdbNl0gPj4+IDE2KSkpIHwgMDtcblx0ICAgICAgICBYWzFdID0gKEdbMV0gKyAoKEdbMF0gPDwgOCkgIHwgKEdbMF0gPj4+IDI0KSkgKyBHWzddKSB8IDA7XG5cdCAgICAgICAgWFsyXSA9IChHWzJdICsgKChHWzFdIDw8IDE2KSB8IChHWzFdID4+PiAxNikpICsgKChHWzBdIDw8IDE2KSB8IChHWzBdID4+PiAxNikpKSB8IDA7XG5cdCAgICAgICAgWFszXSA9IChHWzNdICsgKChHWzJdIDw8IDgpICB8IChHWzJdID4+PiAyNCkpICsgR1sxXSkgfCAwO1xuXHQgICAgICAgIFhbNF0gPSAoR1s0XSArICgoR1szXSA8PCAxNikgfCAoR1szXSA+Pj4gMTYpKSArICgoR1syXSA8PCAxNikgfCAoR1syXSA+Pj4gMTYpKSkgfCAwO1xuXHQgICAgICAgIFhbNV0gPSAoR1s1XSArICgoR1s0XSA8PCA4KSAgfCAoR1s0XSA+Pj4gMjQpKSArIEdbM10pIHwgMDtcblx0ICAgICAgICBYWzZdID0gKEdbNl0gKyAoKEdbNV0gPDwgMTYpIHwgKEdbNV0gPj4+IDE2KSkgKyAoKEdbNF0gPDwgMTYpIHwgKEdbNF0gPj4+IDE2KSkpIHwgMDtcblx0ICAgICAgICBYWzddID0gKEdbN10gKyAoKEdbNl0gPDwgOCkgIHwgKEdbNl0gPj4+IDI0KSkgKyBHWzVdKSB8IDA7XG5cdCAgICB9XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb25zIHRvIHRoZSBjaXBoZXIncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBjaXBoZXJ0ZXh0ID0gQ3J5cHRvSlMuUmFiYml0TGVnYWN5LmVuY3J5cHQobWVzc2FnZSwga2V5LCBjZmcpO1xuXHQgICAgICogICAgIHZhciBwbGFpbnRleHQgID0gQ3J5cHRvSlMuUmFiYml0TGVnYWN5LmRlY3J5cHQoY2lwaGVydGV4dCwga2V5LCBjZmcpO1xuXHQgICAgICovXG5cdCAgICBDLlJhYmJpdExlZ2FjeSA9IFN0cmVhbUNpcGhlci5fY3JlYXRlSGVscGVyKFJhYmJpdExlZ2FjeSk7XG5cdH0oKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMuUmFiYml0TGVnYWN5O1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL2VuYy1iYXNlNjRcIiksIHJlcXVpcmUoXCIuL21kNVwiKSwgcmVxdWlyZShcIi4vZXZwa2RmXCIpLCByZXF1aXJlKFwiLi9jaXBoZXItY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9lbmMtYmFzZTY0XCIsIFwiLi9tZDVcIiwgXCIuL2V2cGtkZlwiLCBcIi4vY2lwaGVyLWNvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAoKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBTdHJlYW1DaXBoZXIgPSBDX2xpYi5TdHJlYW1DaXBoZXI7XG5cdCAgICB2YXIgQ19hbGdvID0gQy5hbGdvO1xuXG5cdCAgICAvLyBSZXVzYWJsZSBvYmplY3RzXG5cdCAgICB2YXIgUyAgPSBbXTtcblx0ICAgIHZhciBDXyA9IFtdO1xuXHQgICAgdmFyIEcgID0gW107XG5cblx0ICAgIC8qKlxuXHQgICAgICogUmFiYml0IHN0cmVhbSBjaXBoZXIgYWxnb3JpdGhtXG5cdCAgICAgKi9cblx0ICAgIHZhciBSYWJiaXQgPSBDX2FsZ28uUmFiYml0ID0gU3RyZWFtQ2lwaGVyLmV4dGVuZCh7XG5cdCAgICAgICAgX2RvUmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBLID0gdGhpcy5fa2V5LndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgaXYgPSB0aGlzLmNmZy5pdjtcblxuXHQgICAgICAgICAgICAvLyBTd2FwIGVuZGlhblxuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgS1tpXSA9ICgoKEtbaV0gPDwgOCkgIHwgKEtbaV0gPj4+IDI0KSkgJiAweDAwZmYwMGZmKSB8XG5cdCAgICAgICAgICAgICAgICAgICAgICAgKCgoS1tpXSA8PCAyNCkgfCAoS1tpXSA+Pj4gOCkpICAmIDB4ZmYwMGZmMDApO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gR2VuZXJhdGUgaW5pdGlhbCBzdGF0ZSB2YWx1ZXNcblx0ICAgICAgICAgICAgdmFyIFggPSB0aGlzLl9YID0gW1xuXHQgICAgICAgICAgICAgICAgS1swXSwgKEtbM10gPDwgMTYpIHwgKEtbMl0gPj4+IDE2KSxcblx0ICAgICAgICAgICAgICAgIEtbMV0sIChLWzBdIDw8IDE2KSB8IChLWzNdID4+PiAxNiksXG5cdCAgICAgICAgICAgICAgICBLWzJdLCAoS1sxXSA8PCAxNikgfCAoS1swXSA+Pj4gMTYpLFxuXHQgICAgICAgICAgICAgICAgS1szXSwgKEtbMl0gPDwgMTYpIHwgKEtbMV0gPj4+IDE2KVxuXHQgICAgICAgICAgICBdO1xuXG5cdCAgICAgICAgICAgIC8vIEdlbmVyYXRlIGluaXRpYWwgY291bnRlciB2YWx1ZXNcblx0ICAgICAgICAgICAgdmFyIEMgPSB0aGlzLl9DID0gW1xuXHQgICAgICAgICAgICAgICAgKEtbMl0gPDwgMTYpIHwgKEtbMl0gPj4+IDE2KSwgKEtbMF0gJiAweGZmZmYwMDAwKSB8IChLWzFdICYgMHgwMDAwZmZmZiksXG5cdCAgICAgICAgICAgICAgICAoS1szXSA8PCAxNikgfCAoS1szXSA+Pj4gMTYpLCAoS1sxXSAmIDB4ZmZmZjAwMDApIHwgKEtbMl0gJiAweDAwMDBmZmZmKSxcblx0ICAgICAgICAgICAgICAgIChLWzBdIDw8IDE2KSB8IChLWzBdID4+PiAxNiksIChLWzJdICYgMHhmZmZmMDAwMCkgfCAoS1szXSAmIDB4MDAwMGZmZmYpLFxuXHQgICAgICAgICAgICAgICAgKEtbMV0gPDwgMTYpIHwgKEtbMV0gPj4+IDE2KSwgKEtbM10gJiAweGZmZmYwMDAwKSB8IChLWzBdICYgMHgwMDAwZmZmZilcblx0ICAgICAgICAgICAgXTtcblxuXHQgICAgICAgICAgICAvLyBDYXJyeSBiaXRcblx0ICAgICAgICAgICAgdGhpcy5fYiA9IDA7XG5cblx0ICAgICAgICAgICAgLy8gSXRlcmF0ZSB0aGUgc3lzdGVtIGZvdXIgdGltZXNcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIG5leHRTdGF0ZS5jYWxsKHRoaXMpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gTW9kaWZ5IHRoZSBjb3VudGVyc1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgQ1tpXSBePSBYWyhpICsgNCkgJiA3XTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIElWIHNldHVwXG5cdCAgICAgICAgICAgIGlmIChpdikge1xuXHQgICAgICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgICAgICB2YXIgSVYgPSBpdi53b3Jkcztcblx0ICAgICAgICAgICAgICAgIHZhciBJVl8wID0gSVZbMF07XG5cdCAgICAgICAgICAgICAgICB2YXIgSVZfMSA9IElWWzFdO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBHZW5lcmF0ZSBmb3VyIHN1YnZlY3RvcnNcblx0ICAgICAgICAgICAgICAgIHZhciBpMCA9ICgoKElWXzAgPDwgOCkgfCAoSVZfMCA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHwgKCgoSVZfMCA8PCAyNCkgfCAoSVZfMCA+Pj4gOCkpICYgMHhmZjAwZmYwMCk7XG5cdCAgICAgICAgICAgICAgICB2YXIgaTIgPSAoKChJVl8xIDw8IDgpIHwgKElWXzEgPj4+IDI0KSkgJiAweDAwZmYwMGZmKSB8ICgoKElWXzEgPDwgMjQpIHwgKElWXzEgPj4+IDgpKSAmIDB4ZmYwMGZmMDApO1xuXHQgICAgICAgICAgICAgICAgdmFyIGkxID0gKGkwID4+PiAxNikgfCAoaTIgJiAweGZmZmYwMDAwKTtcblx0ICAgICAgICAgICAgICAgIHZhciBpMyA9IChpMiA8PCAxNikgIHwgKGkwICYgMHgwMDAwZmZmZik7XG5cblx0ICAgICAgICAgICAgICAgIC8vIE1vZGlmeSBjb3VudGVyIHZhbHVlc1xuXHQgICAgICAgICAgICAgICAgQ1swXSBePSBpMDtcblx0ICAgICAgICAgICAgICAgIENbMV0gXj0gaTE7XG5cdCAgICAgICAgICAgICAgICBDWzJdIF49IGkyO1xuXHQgICAgICAgICAgICAgICAgQ1szXSBePSBpMztcblx0ICAgICAgICAgICAgICAgIENbNF0gXj0gaTA7XG5cdCAgICAgICAgICAgICAgICBDWzVdIF49IGkxO1xuXHQgICAgICAgICAgICAgICAgQ1s2XSBePSBpMjtcblx0ICAgICAgICAgICAgICAgIENbN10gXj0gaTM7XG5cblx0ICAgICAgICAgICAgICAgIC8vIEl0ZXJhdGUgdGhlIHN5c3RlbSBmb3VyIHRpbWVzXG5cdCAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgICAgIG5leHRTdGF0ZS5jYWxsKHRoaXMpO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb1Byb2Nlc3NCbG9jazogZnVuY3Rpb24gKE0sIG9mZnNldCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICB2YXIgWCA9IHRoaXMuX1g7XG5cblx0ICAgICAgICAgICAgLy8gSXRlcmF0ZSB0aGUgc3lzdGVtXG5cdCAgICAgICAgICAgIG5leHRTdGF0ZS5jYWxsKHRoaXMpO1xuXG5cdCAgICAgICAgICAgIC8vIEdlbmVyYXRlIGZvdXIga2V5c3RyZWFtIHdvcmRzXG5cdCAgICAgICAgICAgIFNbMF0gPSBYWzBdIF4gKFhbNV0gPj4+IDE2KSBeIChYWzNdIDw8IDE2KTtcblx0ICAgICAgICAgICAgU1sxXSA9IFhbMl0gXiAoWFs3XSA+Pj4gMTYpIF4gKFhbNV0gPDwgMTYpO1xuXHQgICAgICAgICAgICBTWzJdID0gWFs0XSBeIChYWzFdID4+PiAxNikgXiAoWFs3XSA8PCAxNik7XG5cdCAgICAgICAgICAgIFNbM10gPSBYWzZdIF4gKFhbM10gPj4+IDE2KSBeIChYWzFdIDw8IDE2KTtcblxuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgLy8gU3dhcCBlbmRpYW5cblx0ICAgICAgICAgICAgICAgIFNbaV0gPSAoKChTW2ldIDw8IDgpICB8IChTW2ldID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuXHQgICAgICAgICAgICAgICAgICAgICAgICgoKFNbaV0gPDwgMjQpIHwgKFNbaV0gPj4+IDgpKSAgJiAweGZmMDBmZjAwKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gRW5jcnlwdFxuXHQgICAgICAgICAgICAgICAgTVtvZmZzZXQgKyBpXSBePSBTW2ldO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGJsb2NrU2l6ZTogMTI4LzMyLFxuXG5cdCAgICAgICAgaXZTaXplOiA2NC8zMlxuXHQgICAgfSk7XG5cblx0ICAgIGZ1bmN0aW9uIG5leHRTdGF0ZSgpIHtcblx0ICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICB2YXIgWCA9IHRoaXMuX1g7XG5cdCAgICAgICAgdmFyIEMgPSB0aGlzLl9DO1xuXG5cdCAgICAgICAgLy8gU2F2ZSBvbGQgY291bnRlciB2YWx1ZXNcblx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykge1xuXHQgICAgICAgICAgICBDX1tpXSA9IENbaV07XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgLy8gQ2FsY3VsYXRlIG5ldyBjb3VudGVyIHZhbHVlc1xuXHQgICAgICAgIENbMF0gPSAoQ1swXSArIDB4NGQzNGQzNGQgKyB0aGlzLl9iKSB8IDA7XG5cdCAgICAgICAgQ1sxXSA9IChDWzFdICsgMHhkMzRkMzRkMyArICgoQ1swXSA+Pj4gMCkgPCAoQ19bMF0gPj4+IDApID8gMSA6IDApKSB8IDA7XG5cdCAgICAgICAgQ1syXSA9IChDWzJdICsgMHgzNGQzNGQzNCArICgoQ1sxXSA+Pj4gMCkgPCAoQ19bMV0gPj4+IDApID8gMSA6IDApKSB8IDA7XG5cdCAgICAgICAgQ1szXSA9IChDWzNdICsgMHg0ZDM0ZDM0ZCArICgoQ1syXSA+Pj4gMCkgPCAoQ19bMl0gPj4+IDApID8gMSA6IDApKSB8IDA7XG5cdCAgICAgICAgQ1s0XSA9IChDWzRdICsgMHhkMzRkMzRkMyArICgoQ1szXSA+Pj4gMCkgPCAoQ19bM10gPj4+IDApID8gMSA6IDApKSB8IDA7XG5cdCAgICAgICAgQ1s1XSA9IChDWzVdICsgMHgzNGQzNGQzNCArICgoQ1s0XSA+Pj4gMCkgPCAoQ19bNF0gPj4+IDApID8gMSA6IDApKSB8IDA7XG5cdCAgICAgICAgQ1s2XSA9IChDWzZdICsgMHg0ZDM0ZDM0ZCArICgoQ1s1XSA+Pj4gMCkgPCAoQ19bNV0gPj4+IDApID8gMSA6IDApKSB8IDA7XG5cdCAgICAgICAgQ1s3XSA9IChDWzddICsgMHhkMzRkMzRkMyArICgoQ1s2XSA+Pj4gMCkgPCAoQ19bNl0gPj4+IDApID8gMSA6IDApKSB8IDA7XG5cdCAgICAgICAgdGhpcy5fYiA9IChDWzddID4+PiAwKSA8IChDX1s3XSA+Pj4gMCkgPyAxIDogMDtcblxuXHQgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgZy12YWx1ZXNcblx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykge1xuXHQgICAgICAgICAgICB2YXIgZ3ggPSBYW2ldICsgQ1tpXTtcblxuXHQgICAgICAgICAgICAvLyBDb25zdHJ1Y3QgaGlnaCBhbmQgbG93IGFyZ3VtZW50IGZvciBzcXVhcmluZ1xuXHQgICAgICAgICAgICB2YXIgZ2EgPSBneCAmIDB4ZmZmZjtcblx0ICAgICAgICAgICAgdmFyIGdiID0gZ3ggPj4+IDE2O1xuXG5cdCAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBoaWdoIGFuZCBsb3cgcmVzdWx0IG9mIHNxdWFyaW5nXG5cdCAgICAgICAgICAgIHZhciBnaCA9ICgoKChnYSAqIGdhKSA+Pj4gMTcpICsgZ2EgKiBnYikgPj4+IDE1KSArIGdiICogZ2I7XG5cdCAgICAgICAgICAgIHZhciBnbCA9ICgoKGd4ICYgMHhmZmZmMDAwMCkgKiBneCkgfCAwKSArICgoKGd4ICYgMHgwMDAwZmZmZikgKiBneCkgfCAwKTtcblxuXHQgICAgICAgICAgICAvLyBIaWdoIFhPUiBsb3dcblx0ICAgICAgICAgICAgR1tpXSA9IGdoIF4gZ2w7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgLy8gQ2FsY3VsYXRlIG5ldyBzdGF0ZSB2YWx1ZXNcblx0ICAgICAgICBYWzBdID0gKEdbMF0gKyAoKEdbN10gPDwgMTYpIHwgKEdbN10gPj4+IDE2KSkgKyAoKEdbNl0gPDwgMTYpIHwgKEdbNl0gPj4+IDE2KSkpIHwgMDtcblx0ICAgICAgICBYWzFdID0gKEdbMV0gKyAoKEdbMF0gPDwgOCkgIHwgKEdbMF0gPj4+IDI0KSkgKyBHWzddKSB8IDA7XG5cdCAgICAgICAgWFsyXSA9IChHWzJdICsgKChHWzFdIDw8IDE2KSB8IChHWzFdID4+PiAxNikpICsgKChHWzBdIDw8IDE2KSB8IChHWzBdID4+PiAxNikpKSB8IDA7XG5cdCAgICAgICAgWFszXSA9IChHWzNdICsgKChHWzJdIDw8IDgpICB8IChHWzJdID4+PiAyNCkpICsgR1sxXSkgfCAwO1xuXHQgICAgICAgIFhbNF0gPSAoR1s0XSArICgoR1szXSA8PCAxNikgfCAoR1szXSA+Pj4gMTYpKSArICgoR1syXSA8PCAxNikgfCAoR1syXSA+Pj4gMTYpKSkgfCAwO1xuXHQgICAgICAgIFhbNV0gPSAoR1s1XSArICgoR1s0XSA8PCA4KSAgfCAoR1s0XSA+Pj4gMjQpKSArIEdbM10pIHwgMDtcblx0ICAgICAgICBYWzZdID0gKEdbNl0gKyAoKEdbNV0gPDwgMTYpIHwgKEdbNV0gPj4+IDE2KSkgKyAoKEdbNF0gPDwgMTYpIHwgKEdbNF0gPj4+IDE2KSkpIHwgMDtcblx0ICAgICAgICBYWzddID0gKEdbN10gKyAoKEdbNl0gPDwgOCkgIHwgKEdbNl0gPj4+IDI0KSkgKyBHWzVdKSB8IDA7XG5cdCAgICB9XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb25zIHRvIHRoZSBjaXBoZXIncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBjaXBoZXJ0ZXh0ID0gQ3J5cHRvSlMuUmFiYml0LmVuY3J5cHQobWVzc2FnZSwga2V5LCBjZmcpO1xuXHQgICAgICogICAgIHZhciBwbGFpbnRleHQgID0gQ3J5cHRvSlMuUmFiYml0LmRlY3J5cHQoY2lwaGVydGV4dCwga2V5LCBjZmcpO1xuXHQgICAgICovXG5cdCAgICBDLlJhYmJpdCA9IFN0cmVhbUNpcGhlci5fY3JlYXRlSGVscGVyKFJhYmJpdCk7XG5cdH0oKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMuUmFiYml0O1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL2VuYy1iYXNlNjRcIiksIHJlcXVpcmUoXCIuL21kNVwiKSwgcmVxdWlyZShcIi4vZXZwa2RmXCIpLCByZXF1aXJlKFwiLi9jaXBoZXItY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9lbmMtYmFzZTY0XCIsIFwiLi9tZDVcIiwgXCIuL2V2cGtkZlwiLCBcIi4vY2lwaGVyLWNvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAoKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBTdHJlYW1DaXBoZXIgPSBDX2xpYi5TdHJlYW1DaXBoZXI7XG5cdCAgICB2YXIgQ19hbGdvID0gQy5hbGdvO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFJDNCBzdHJlYW0gY2lwaGVyIGFsZ29yaXRobS5cblx0ICAgICAqL1xuXHQgICAgdmFyIFJDNCA9IENfYWxnby5SQzQgPSBTdHJlYW1DaXBoZXIuZXh0ZW5kKHtcblx0ICAgICAgICBfZG9SZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGtleSA9IHRoaXMuX2tleTtcblx0ICAgICAgICAgICAgdmFyIGtleVdvcmRzID0ga2V5LndvcmRzO1xuXHQgICAgICAgICAgICB2YXIga2V5U2lnQnl0ZXMgPSBrZXkuc2lnQnl0ZXM7XG5cblx0ICAgICAgICAgICAgLy8gSW5pdCBzYm94XG5cdCAgICAgICAgICAgIHZhciBTID0gdGhpcy5fUyA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1NjsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICBTW2ldID0gaTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIEtleSBzZXR1cFxuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgaiA9IDA7IGkgPCAyNTY7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgdmFyIGtleUJ5dGVJbmRleCA9IGkgJSBrZXlTaWdCeXRlcztcblx0ICAgICAgICAgICAgICAgIHZhciBrZXlCeXRlID0gKGtleVdvcmRzW2tleUJ5dGVJbmRleCA+Pj4gMl0gPj4+ICgyNCAtIChrZXlCeXRlSW5kZXggJSA0KSAqIDgpKSAmIDB4ZmY7XG5cblx0ICAgICAgICAgICAgICAgIGogPSAoaiArIFNbaV0gKyBrZXlCeXRlKSAlIDI1NjtcblxuXHQgICAgICAgICAgICAgICAgLy8gU3dhcFxuXHQgICAgICAgICAgICAgICAgdmFyIHQgPSBTW2ldO1xuXHQgICAgICAgICAgICAgICAgU1tpXSA9IFNbal07XG5cdCAgICAgICAgICAgICAgICBTW2pdID0gdDtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIENvdW50ZXJzXG5cdCAgICAgICAgICAgIHRoaXMuX2kgPSB0aGlzLl9qID0gMDtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvUHJvY2Vzc0Jsb2NrOiBmdW5jdGlvbiAoTSwgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIE1bb2Zmc2V0XSBePSBnZW5lcmF0ZUtleXN0cmVhbVdvcmQuY2FsbCh0aGlzKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAga2V5U2l6ZTogMjU2LzMyLFxuXG5cdCAgICAgICAgaXZTaXplOiAwXG5cdCAgICB9KTtcblxuXHQgICAgZnVuY3Rpb24gZ2VuZXJhdGVLZXlzdHJlYW1Xb3JkKCkge1xuXHQgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgIHZhciBTID0gdGhpcy5fUztcblx0ICAgICAgICB2YXIgaSA9IHRoaXMuX2k7XG5cdCAgICAgICAgdmFyIGogPSB0aGlzLl9qO1xuXG5cdCAgICAgICAgLy8gR2VuZXJhdGUga2V5c3RyZWFtIHdvcmRcblx0ICAgICAgICB2YXIga2V5c3RyZWFtV29yZCA9IDA7XG5cdCAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCA0OyBuKyspIHtcblx0ICAgICAgICAgICAgaSA9IChpICsgMSkgJSAyNTY7XG5cdCAgICAgICAgICAgIGogPSAoaiArIFNbaV0pICUgMjU2O1xuXG5cdCAgICAgICAgICAgIC8vIFN3YXBcblx0ICAgICAgICAgICAgdmFyIHQgPSBTW2ldO1xuXHQgICAgICAgICAgICBTW2ldID0gU1tqXTtcblx0ICAgICAgICAgICAgU1tqXSA9IHQ7XG5cblx0ICAgICAgICAgICAga2V5c3RyZWFtV29yZCB8PSBTWyhTW2ldICsgU1tqXSkgJSAyNTZdIDw8ICgyNCAtIG4gKiA4KTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICAvLyBVcGRhdGUgY291bnRlcnNcblx0ICAgICAgICB0aGlzLl9pID0gaTtcblx0ICAgICAgICB0aGlzLl9qID0gajtcblxuXHQgICAgICAgIHJldHVybiBrZXlzdHJlYW1Xb3JkO1xuXHQgICAgfVxuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9ucyB0byB0aGUgY2lwaGVyJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgY2lwaGVydGV4dCA9IENyeXB0b0pTLlJDNC5lbmNyeXB0KG1lc3NhZ2UsIGtleSwgY2ZnKTtcblx0ICAgICAqICAgICB2YXIgcGxhaW50ZXh0ICA9IENyeXB0b0pTLlJDNC5kZWNyeXB0KGNpcGhlcnRleHQsIGtleSwgY2ZnKTtcblx0ICAgICAqL1xuXHQgICAgQy5SQzQgPSBTdHJlYW1DaXBoZXIuX2NyZWF0ZUhlbHBlcihSQzQpO1xuXG5cdCAgICAvKipcblx0ICAgICAqIE1vZGlmaWVkIFJDNCBzdHJlYW0gY2lwaGVyIGFsZ29yaXRobS5cblx0ICAgICAqL1xuXHQgICAgdmFyIFJDNERyb3AgPSBDX2FsZ28uUkM0RHJvcCA9IFJDNC5leHRlbmQoe1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBkcm9wIFRoZSBudW1iZXIgb2Yga2V5c3RyZWFtIHdvcmRzIHRvIGRyb3AuIERlZmF1bHQgMTkyXG5cdCAgICAgICAgICovXG5cdCAgICAgICAgY2ZnOiBSQzQuY2ZnLmV4dGVuZCh7XG5cdCAgICAgICAgICAgIGRyb3A6IDE5MlxuXHQgICAgICAgIH0pLFxuXG5cdCAgICAgICAgX2RvUmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgUkM0Ll9kb1Jlc2V0LmNhbGwodGhpcyk7XG5cblx0ICAgICAgICAgICAgLy8gRHJvcFxuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5jZmcuZHJvcDsgaSA+IDA7IGktLSkge1xuXHQgICAgICAgICAgICAgICAgZ2VuZXJhdGVLZXlzdHJlYW1Xb3JkLmNhbGwodGhpcyk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbnMgdG8gdGhlIGNpcGhlcidzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGNpcGhlcnRleHQgPSBDcnlwdG9KUy5SQzREcm9wLmVuY3J5cHQobWVzc2FnZSwga2V5LCBjZmcpO1xuXHQgICAgICogICAgIHZhciBwbGFpbnRleHQgID0gQ3J5cHRvSlMuUkM0RHJvcC5kZWNyeXB0KGNpcGhlcnRleHQsIGtleSwgY2ZnKTtcblx0ICAgICAqL1xuXHQgICAgQy5SQzREcm9wID0gU3RyZWFtQ2lwaGVyLl9jcmVhdGVIZWxwZXIoUkM0RHJvcCk7XG5cdH0oKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMuUkM0O1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSkge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQvKiogQHByZXNlcnZlXG5cdChjKSAyMDEyIGJ5IEPDqWRyaWMgTWVzbmlsLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXG5cdFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcblxuXHQgICAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG5cdCAgICAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuXHRUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG5cdCovXG5cblx0KGZ1bmN0aW9uIChNYXRoKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBXb3JkQXJyYXkgPSBDX2xpYi5Xb3JkQXJyYXk7XG5cdCAgICB2YXIgSGFzaGVyID0gQ19saWIuSGFzaGVyO1xuXHQgICAgdmFyIENfYWxnbyA9IEMuYWxnbztcblxuXHQgICAgLy8gQ29uc3RhbnRzIHRhYmxlXG5cdCAgICB2YXIgX3psID0gV29yZEFycmF5LmNyZWF0ZShbXG5cdCAgICAgICAgMCwgIDEsICAyLCAgMywgIDQsICA1LCAgNiwgIDcsICA4LCAgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSxcblx0ICAgICAgICA3LCAgNCwgMTMsICAxLCAxMCwgIDYsIDE1LCAgMywgMTIsICAwLCAgOSwgIDUsICAyLCAxNCwgMTEsICA4LFxuXHQgICAgICAgIDMsIDEwLCAxNCwgIDQsICA5LCAxNSwgIDgsICAxLCAgMiwgIDcsICAwLCAgNiwgMTMsIDExLCAgNSwgMTIsXG5cdCAgICAgICAgMSwgIDksIDExLCAxMCwgIDAsICA4LCAxMiwgIDQsIDEzLCAgMywgIDcsIDE1LCAxNCwgIDUsICA2LCAgMixcblx0ICAgICAgICA0LCAgMCwgIDUsICA5LCAgNywgMTIsICAyLCAxMCwgMTQsICAxLCAgMywgIDgsIDExLCAgNiwgMTUsIDEzXSk7XG5cdCAgICB2YXIgX3pyID0gV29yZEFycmF5LmNyZWF0ZShbXG5cdCAgICAgICAgNSwgMTQsICA3LCAgMCwgIDksICAyLCAxMSwgIDQsIDEzLCAgNiwgMTUsICA4LCAgMSwgMTAsICAzLCAxMixcblx0ICAgICAgICA2LCAxMSwgIDMsICA3LCAgMCwgMTMsICA1LCAxMCwgMTQsIDE1LCAgOCwgMTIsICA0LCAgOSwgIDEsICAyLFxuXHQgICAgICAgIDE1LCAgNSwgIDEsICAzLCAgNywgMTQsICA2LCAgOSwgMTEsICA4LCAxMiwgIDIsIDEwLCAgMCwgIDQsIDEzLFxuXHQgICAgICAgIDgsICA2LCAgNCwgIDEsICAzLCAxMSwgMTUsICAwLCAgNSwgMTIsICAyLCAxMywgIDksICA3LCAxMCwgMTQsXG5cdCAgICAgICAgMTIsIDE1LCAxMCwgIDQsICAxLCAgNSwgIDgsICA3LCAgNiwgIDIsIDEzLCAxNCwgIDAsICAzLCAgOSwgMTFdKTtcblx0ICAgIHZhciBfc2wgPSBXb3JkQXJyYXkuY3JlYXRlKFtcblx0ICAgICAgICAgMTEsIDE0LCAxNSwgMTIsICA1LCAgOCwgIDcsICA5LCAxMSwgMTMsIDE0LCAxNSwgIDYsICA3LCAgOSwgIDgsXG5cdCAgICAgICAgNywgNiwgICA4LCAxMywgMTEsICA5LCAgNywgMTUsICA3LCAxMiwgMTUsICA5LCAxMSwgIDcsIDEzLCAxMixcblx0ICAgICAgICAxMSwgMTMsICA2LCAgNywgMTQsICA5LCAxMywgMTUsIDE0LCAgOCwgMTMsICA2LCAgNSwgMTIsICA3LCAgNSxcblx0ICAgICAgICAgIDExLCAxMiwgMTQsIDE1LCAxNCwgMTUsICA5LCAgOCwgIDksIDE0LCAgNSwgIDYsICA4LCAgNiwgIDUsIDEyLFxuXHQgICAgICAgIDksIDE1LCAgNSwgMTEsICA2LCAgOCwgMTMsIDEyLCAgNSwgMTIsIDEzLCAxNCwgMTEsICA4LCAgNSwgIDYgXSk7XG5cdCAgICB2YXIgX3NyID0gV29yZEFycmF5LmNyZWF0ZShbXG5cdCAgICAgICAgOCwgIDksICA5LCAxMSwgMTMsIDE1LCAxNSwgIDUsICA3LCAgNywgIDgsIDExLCAxNCwgMTQsIDEyLCAgNixcblx0ICAgICAgICA5LCAxMywgMTUsICA3LCAxMiwgIDgsICA5LCAxMSwgIDcsICA3LCAxMiwgIDcsICA2LCAxNSwgMTMsIDExLFxuXHQgICAgICAgIDksICA3LCAxNSwgMTEsICA4LCAgNiwgIDYsIDE0LCAxMiwgMTMsICA1LCAxNCwgMTMsIDEzLCAgNywgIDUsXG5cdCAgICAgICAgMTUsICA1LCAgOCwgMTEsIDE0LCAxNCwgIDYsIDE0LCAgNiwgIDksIDEyLCAgOSwgMTIsICA1LCAxNSwgIDgsXG5cdCAgICAgICAgOCwgIDUsIDEyLCAgOSwgMTIsICA1LCAxNCwgIDYsICA4LCAxMywgIDYsICA1LCAxNSwgMTMsIDExLCAxMSBdKTtcblxuXHQgICAgdmFyIF9obCA9ICBXb3JkQXJyYXkuY3JlYXRlKFsgMHgwMDAwMDAwMCwgMHg1QTgyNzk5OSwgMHg2RUQ5RUJBMSwgMHg4RjFCQkNEQywgMHhBOTUzRkQ0RV0pO1xuXHQgICAgdmFyIF9ociA9ICBXb3JkQXJyYXkuY3JlYXRlKFsgMHg1MEEyOEJFNiwgMHg1QzRERDEyNCwgMHg2RDcwM0VGMywgMHg3QTZENzZFOSwgMHgwMDAwMDAwMF0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFJJUEVNRDE2MCBoYXNoIGFsZ29yaXRobS5cblx0ICAgICAqL1xuXHQgICAgdmFyIFJJUEVNRDE2MCA9IENfYWxnby5SSVBFTUQxNjAgPSBIYXNoZXIuZXh0ZW5kKHtcblx0ICAgICAgICBfZG9SZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB0aGlzLl9oYXNoICA9IFdvcmRBcnJheS5jcmVhdGUoWzB4Njc0NTIzMDEsIDB4RUZDREFCODksIDB4OThCQURDRkUsIDB4MTAzMjU0NzYsIDB4QzNEMkUxRjBdKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvUHJvY2Vzc0Jsb2NrOiBmdW5jdGlvbiAoTSwgb2Zmc2V0KSB7XG5cblx0ICAgICAgICAgICAgLy8gU3dhcCBlbmRpYW5cblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgICAgIHZhciBvZmZzZXRfaSA9IG9mZnNldCArIGk7XG5cdCAgICAgICAgICAgICAgICB2YXIgTV9vZmZzZXRfaSA9IE1bb2Zmc2V0X2ldO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBTd2FwXG5cdCAgICAgICAgICAgICAgICBNW29mZnNldF9pXSA9IChcblx0ICAgICAgICAgICAgICAgICAgICAoKChNX29mZnNldF9pIDw8IDgpICB8IChNX29mZnNldF9pID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuXHQgICAgICAgICAgICAgICAgICAgICgoKE1fb2Zmc2V0X2kgPDwgMjQpIHwgKE1fb2Zmc2V0X2kgPj4+IDgpKSAgJiAweGZmMDBmZjAwKVxuXHQgICAgICAgICAgICAgICAgKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICB2YXIgSCAgPSB0aGlzLl9oYXNoLndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgaGwgPSBfaGwud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBociA9IF9oci53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIHpsID0gX3psLndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgenIgPSBfenIud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBzbCA9IF9zbC53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIHNyID0gX3NyLndvcmRzO1xuXG5cdCAgICAgICAgICAgIC8vIFdvcmtpbmcgdmFyaWFibGVzXG5cdCAgICAgICAgICAgIHZhciBhbCwgYmwsIGNsLCBkbCwgZWw7XG5cdCAgICAgICAgICAgIHZhciBhciwgYnIsIGNyLCBkciwgZXI7XG5cblx0ICAgICAgICAgICAgYXIgPSBhbCA9IEhbMF07XG5cdCAgICAgICAgICAgIGJyID0gYmwgPSBIWzFdO1xuXHQgICAgICAgICAgICBjciA9IGNsID0gSFsyXTtcblx0ICAgICAgICAgICAgZHIgPSBkbCA9IEhbM107XG5cdCAgICAgICAgICAgIGVyID0gZWwgPSBIWzRdO1xuXHQgICAgICAgICAgICAvLyBDb21wdXRhdGlvblxuXHQgICAgICAgICAgICB2YXIgdDtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA4MDsgaSArPSAxKSB7XG5cdCAgICAgICAgICAgICAgICB0ID0gKGFsICsgIE1bb2Zmc2V0K3psW2ldXSl8MDtcblx0ICAgICAgICAgICAgICAgIGlmIChpPDE2KXtcblx0XHQgICAgICAgICAgICB0ICs9ICBmMShibCxjbCxkbCkgKyBobFswXTtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaTwzMikge1xuXHRcdCAgICAgICAgICAgIHQgKz0gIGYyKGJsLGNsLGRsKSArIGhsWzFdO1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpPDQ4KSB7XG5cdFx0ICAgICAgICAgICAgdCArPSAgZjMoYmwsY2wsZGwpICsgaGxbMl07XG5cdCAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGk8NjQpIHtcblx0XHQgICAgICAgICAgICB0ICs9ICBmNChibCxjbCxkbCkgKyBobFszXTtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ly8gaWYgKGk8ODApIHtcblx0XHQgICAgICAgICAgICB0ICs9ICBmNShibCxjbCxkbCkgKyBobFs0XTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIHQgPSB0fDA7XG5cdCAgICAgICAgICAgICAgICB0ID0gIHJvdGwodCxzbFtpXSk7XG5cdCAgICAgICAgICAgICAgICB0ID0gKHQrZWwpfDA7XG5cdCAgICAgICAgICAgICAgICBhbCA9IGVsO1xuXHQgICAgICAgICAgICAgICAgZWwgPSBkbDtcblx0ICAgICAgICAgICAgICAgIGRsID0gcm90bChjbCwgMTApO1xuXHQgICAgICAgICAgICAgICAgY2wgPSBibDtcblx0ICAgICAgICAgICAgICAgIGJsID0gdDtcblxuXHQgICAgICAgICAgICAgICAgdCA9IChhciArIE1bb2Zmc2V0K3pyW2ldXSl8MDtcblx0ICAgICAgICAgICAgICAgIGlmIChpPDE2KXtcblx0XHQgICAgICAgICAgICB0ICs9ICBmNShicixjcixkcikgKyBoclswXTtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaTwzMikge1xuXHRcdCAgICAgICAgICAgIHQgKz0gIGY0KGJyLGNyLGRyKSArIGhyWzFdO1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpPDQ4KSB7XG5cdFx0ICAgICAgICAgICAgdCArPSAgZjMoYnIsY3IsZHIpICsgaHJbMl07XG5cdCAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGk8NjQpIHtcblx0XHQgICAgICAgICAgICB0ICs9ICBmMihicixjcixkcikgKyBoclszXTtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ly8gaWYgKGk8ODApIHtcblx0XHQgICAgICAgICAgICB0ICs9ICBmMShicixjcixkcikgKyBocls0XTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIHQgPSB0fDA7XG5cdCAgICAgICAgICAgICAgICB0ID0gIHJvdGwodCxzcltpXSkgO1xuXHQgICAgICAgICAgICAgICAgdCA9ICh0K2VyKXwwO1xuXHQgICAgICAgICAgICAgICAgYXIgPSBlcjtcblx0ICAgICAgICAgICAgICAgIGVyID0gZHI7XG5cdCAgICAgICAgICAgICAgICBkciA9IHJvdGwoY3IsIDEwKTtcblx0ICAgICAgICAgICAgICAgIGNyID0gYnI7XG5cdCAgICAgICAgICAgICAgICBiciA9IHQ7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgLy8gSW50ZXJtZWRpYXRlIGhhc2ggdmFsdWVcblx0ICAgICAgICAgICAgdCAgICA9IChIWzFdICsgY2wgKyBkcil8MDtcblx0ICAgICAgICAgICAgSFsxXSA9IChIWzJdICsgZGwgKyBlcil8MDtcblx0ICAgICAgICAgICAgSFsyXSA9IChIWzNdICsgZWwgKyBhcil8MDtcblx0ICAgICAgICAgICAgSFszXSA9IChIWzRdICsgYWwgKyBicil8MDtcblx0ICAgICAgICAgICAgSFs0XSA9IChIWzBdICsgYmwgKyBjcil8MDtcblx0ICAgICAgICAgICAgSFswXSA9ICB0O1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9GaW5hbGl6ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLl9kYXRhO1xuXHQgICAgICAgICAgICB2YXIgZGF0YVdvcmRzID0gZGF0YS53b3JkcztcblxuXHQgICAgICAgICAgICB2YXIgbkJpdHNUb3RhbCA9IHRoaXMuX25EYXRhQnl0ZXMgKiA4O1xuXHQgICAgICAgICAgICB2YXIgbkJpdHNMZWZ0ID0gZGF0YS5zaWdCeXRlcyAqIDg7XG5cblx0ICAgICAgICAgICAgLy8gQWRkIHBhZGRpbmdcblx0ICAgICAgICAgICAgZGF0YVdvcmRzW25CaXRzTGVmdCA+Pj4gNV0gfD0gMHg4MCA8PCAoMjQgLSBuQml0c0xlZnQgJSAzMik7XG5cdCAgICAgICAgICAgIGRhdGFXb3Jkc1soKChuQml0c0xlZnQgKyA2NCkgPj4+IDkpIDw8IDQpICsgMTRdID0gKFxuXHQgICAgICAgICAgICAgICAgKCgobkJpdHNUb3RhbCA8PCA4KSAgfCAobkJpdHNUb3RhbCA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcblx0ICAgICAgICAgICAgICAgICgoKG5CaXRzVG90YWwgPDwgMjQpIHwgKG5CaXRzVG90YWwgPj4+IDgpKSAgJiAweGZmMDBmZjAwKVxuXHQgICAgICAgICAgICApO1xuXHQgICAgICAgICAgICBkYXRhLnNpZ0J5dGVzID0gKGRhdGFXb3Jkcy5sZW5ndGggKyAxKSAqIDQ7XG5cblx0ICAgICAgICAgICAgLy8gSGFzaCBmaW5hbCBibG9ja3Ncblx0ICAgICAgICAgICAgdGhpcy5fcHJvY2VzcygpO1xuXG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgaGFzaCA9IHRoaXMuX2hhc2g7XG5cdCAgICAgICAgICAgIHZhciBIID0gaGFzaC53b3JkcztcblxuXHQgICAgICAgICAgICAvLyBTd2FwIGVuZGlhblxuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDU7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgICAgIHZhciBIX2kgPSBIW2ldO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBTd2FwXG5cdCAgICAgICAgICAgICAgICBIW2ldID0gKCgoSF9pIDw8IDgpICB8IChIX2kgPj4+IDI0KSkgJiAweDAwZmYwMGZmKSB8XG5cdCAgICAgICAgICAgICAgICAgICAgICAgKCgoSF9pIDw8IDI0KSB8IChIX2kgPj4+IDgpKSAgJiAweGZmMDBmZjAwKTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIFJldHVybiBmaW5hbCBjb21wdXRlZCBoYXNoXG5cdCAgICAgICAgICAgIHJldHVybiBoYXNoO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBjbG9uZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB2YXIgY2xvbmUgPSBIYXNoZXIuY2xvbmUuY2FsbCh0aGlzKTtcblx0ICAgICAgICAgICAgY2xvbmUuX2hhc2ggPSB0aGlzLl9oYXNoLmNsb25lKCk7XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGNsb25lO1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cblx0ICAgIGZ1bmN0aW9uIGYxKHgsIHksIHopIHtcblx0ICAgICAgICByZXR1cm4gKCh4KSBeICh5KSBeICh6KSk7XG5cblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gZjIoeCwgeSwgeikge1xuXHQgICAgICAgIHJldHVybiAoKCh4KSYoeSkpIHwgKCh+eCkmKHopKSk7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIGYzKHgsIHksIHopIHtcblx0ICAgICAgICByZXR1cm4gKCgoeCkgfCAofih5KSkpIF4gKHopKTtcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gZjQoeCwgeSwgeikge1xuXHQgICAgICAgIHJldHVybiAoKCh4KSAmICh6KSkgfCAoKHkpJih+KHopKSkpO1xuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBmNSh4LCB5LCB6KSB7XG5cdCAgICAgICAgcmV0dXJuICgoeCkgXiAoKHkpIHwofih6KSkpKTtcblxuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiByb3RsKHgsbikge1xuXHQgICAgICAgIHJldHVybiAoeDw8bikgfCAoeD4+PigzMi1uKSk7XG5cdCAgICB9XG5cblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbiB0byB0aGUgaGFzaGVyJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gaGFzaC5cblx0ICAgICAqXG5cdCAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBoYXNoLlxuXHQgICAgICpcblx0ICAgICAqIEBzdGF0aWNcblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgaGFzaCA9IENyeXB0b0pTLlJJUEVNRDE2MCgnbWVzc2FnZScpO1xuXHQgICAgICogICAgIHZhciBoYXNoID0gQ3J5cHRvSlMuUklQRU1EMTYwKHdvcmRBcnJheSk7XG5cdCAgICAgKi9cblx0ICAgIEMuUklQRU1EMTYwID0gSGFzaGVyLl9jcmVhdGVIZWxwZXIoUklQRU1EMTYwKTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbiB0byB0aGUgSE1BQydzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGhhc2guXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IGtleSBUaGUgc2VjcmV0IGtleS5cblx0ICAgICAqXG5cdCAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBITUFDLlxuXHQgICAgICpcblx0ICAgICAqIEBzdGF0aWNcblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgaG1hYyA9IENyeXB0b0pTLkhtYWNSSVBFTUQxNjAobWVzc2FnZSwga2V5KTtcblx0ICAgICAqL1xuXHQgICAgQy5IbWFjUklQRU1EMTYwID0gSGFzaGVyLl9jcmVhdGVIbWFjSGVscGVyKFJJUEVNRDE2MCk7XG5cdH0oTWF0aCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLlJJUEVNRDE2MDtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIFdvcmRBcnJheSA9IENfbGliLldvcmRBcnJheTtcblx0ICAgIHZhciBIYXNoZXIgPSBDX2xpYi5IYXNoZXI7XG5cdCAgICB2YXIgQ19hbGdvID0gQy5hbGdvO1xuXG5cdCAgICAvLyBSZXVzYWJsZSBvYmplY3Rcblx0ICAgIHZhciBXID0gW107XG5cblx0ICAgIC8qKlxuXHQgICAgICogU0hBLTEgaGFzaCBhbGdvcml0aG0uXG5cdCAgICAgKi9cblx0ICAgIHZhciBTSEExID0gQ19hbGdvLlNIQTEgPSBIYXNoZXIuZXh0ZW5kKHtcblx0ICAgICAgICBfZG9SZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB0aGlzLl9oYXNoID0gbmV3IFdvcmRBcnJheS5pbml0KFtcblx0ICAgICAgICAgICAgICAgIDB4Njc0NTIzMDEsIDB4ZWZjZGFiODksXG5cdCAgICAgICAgICAgICAgICAweDk4YmFkY2ZlLCAweDEwMzI1NDc2LFxuXHQgICAgICAgICAgICAgICAgMHhjM2QyZTFmMFxuXHQgICAgICAgICAgICBdKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvUHJvY2Vzc0Jsb2NrOiBmdW5jdGlvbiAoTSwgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBIID0gdGhpcy5faGFzaC53b3JkcztcblxuXHQgICAgICAgICAgICAvLyBXb3JraW5nIHZhcmlhYmxlc1xuXHQgICAgICAgICAgICB2YXIgYSA9IEhbMF07XG5cdCAgICAgICAgICAgIHZhciBiID0gSFsxXTtcblx0ICAgICAgICAgICAgdmFyIGMgPSBIWzJdO1xuXHQgICAgICAgICAgICB2YXIgZCA9IEhbM107XG5cdCAgICAgICAgICAgIHZhciBlID0gSFs0XTtcblxuXHQgICAgICAgICAgICAvLyBDb21wdXRhdGlvblxuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDgwOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIGlmIChpIDwgMTYpIHtcblx0ICAgICAgICAgICAgICAgICAgICBXW2ldID0gTVtvZmZzZXQgKyBpXSB8IDA7XG5cdCAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBuID0gV1tpIC0gM10gXiBXW2kgLSA4XSBeIFdbaSAtIDE0XSBeIFdbaSAtIDE2XTtcblx0ICAgICAgICAgICAgICAgICAgICBXW2ldID0gKG4gPDwgMSkgfCAobiA+Pj4gMzEpO1xuXHQgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICB2YXIgdCA9ICgoYSA8PCA1KSB8IChhID4+PiAyNykpICsgZSArIFdbaV07XG5cdCAgICAgICAgICAgICAgICBpZiAoaSA8IDIwKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdCArPSAoKGIgJiBjKSB8ICh+YiAmIGQpKSArIDB4NWE4Mjc5OTk7XG5cdCAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGkgPCA0MCkge1xuXHQgICAgICAgICAgICAgICAgICAgIHQgKz0gKGIgXiBjIF4gZCkgKyAweDZlZDllYmExO1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpIDwgNjApIHtcblx0ICAgICAgICAgICAgICAgICAgICB0ICs9ICgoYiAmIGMpIHwgKGIgJiBkKSB8IChjICYgZCkpIC0gMHg3MGU0NDMyNDtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSAvKiBpZiAoaSA8IDgwKSAqLyB7XG5cdCAgICAgICAgICAgICAgICAgICAgdCArPSAoYiBeIGMgXiBkKSAtIDB4MzU5ZDNlMmE7XG5cdCAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgIGUgPSBkO1xuXHQgICAgICAgICAgICAgICAgZCA9IGM7XG5cdCAgICAgICAgICAgICAgICBjID0gKGIgPDwgMzApIHwgKGIgPj4+IDIpO1xuXHQgICAgICAgICAgICAgICAgYiA9IGE7XG5cdCAgICAgICAgICAgICAgICBhID0gdDtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIEludGVybWVkaWF0ZSBoYXNoIHZhbHVlXG5cdCAgICAgICAgICAgIEhbMF0gPSAoSFswXSArIGEpIHwgMDtcblx0ICAgICAgICAgICAgSFsxXSA9IChIWzFdICsgYikgfCAwO1xuXHQgICAgICAgICAgICBIWzJdID0gKEhbMl0gKyBjKSB8IDA7XG5cdCAgICAgICAgICAgIEhbM10gPSAoSFszXSArIGQpIHwgMDtcblx0ICAgICAgICAgICAgSFs0XSA9IChIWzRdICsgZSkgfCAwO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9GaW5hbGl6ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLl9kYXRhO1xuXHQgICAgICAgICAgICB2YXIgZGF0YVdvcmRzID0gZGF0YS53b3JkcztcblxuXHQgICAgICAgICAgICB2YXIgbkJpdHNUb3RhbCA9IHRoaXMuX25EYXRhQnl0ZXMgKiA4O1xuXHQgICAgICAgICAgICB2YXIgbkJpdHNMZWZ0ID0gZGF0YS5zaWdCeXRlcyAqIDg7XG5cblx0ICAgICAgICAgICAgLy8gQWRkIHBhZGRpbmdcblx0ICAgICAgICAgICAgZGF0YVdvcmRzW25CaXRzTGVmdCA+Pj4gNV0gfD0gMHg4MCA8PCAoMjQgLSBuQml0c0xlZnQgJSAzMik7XG5cdCAgICAgICAgICAgIGRhdGFXb3Jkc1soKChuQml0c0xlZnQgKyA2NCkgPj4+IDkpIDw8IDQpICsgMTRdID0gTWF0aC5mbG9vcihuQml0c1RvdGFsIC8gMHgxMDAwMDAwMDApO1xuXHQgICAgICAgICAgICBkYXRhV29yZHNbKCgobkJpdHNMZWZ0ICsgNjQpID4+PiA5KSA8PCA0KSArIDE1XSA9IG5CaXRzVG90YWw7XG5cdCAgICAgICAgICAgIGRhdGEuc2lnQnl0ZXMgPSBkYXRhV29yZHMubGVuZ3RoICogNDtcblxuXHQgICAgICAgICAgICAvLyBIYXNoIGZpbmFsIGJsb2Nrc1xuXHQgICAgICAgICAgICB0aGlzLl9wcm9jZXNzKCk7XG5cblx0ICAgICAgICAgICAgLy8gUmV0dXJuIGZpbmFsIGNvbXB1dGVkIGhhc2hcblx0ICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2hhc2g7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGNsb25lOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHZhciBjbG9uZSA9IEhhc2hlci5jbG9uZS5jYWxsKHRoaXMpO1xuXHQgICAgICAgICAgICBjbG9uZS5faGFzaCA9IHRoaXMuX2hhc2guY2xvbmUoKTtcblxuXHQgICAgICAgICAgICByZXR1cm4gY2xvbmU7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb24gdG8gdGhlIGhhc2hlcidzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGhhc2guXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgaGFzaC5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGhhc2ggPSBDcnlwdG9KUy5TSEExKCdtZXNzYWdlJyk7XG5cdCAgICAgKiAgICAgdmFyIGhhc2ggPSBDcnlwdG9KUy5TSEExKHdvcmRBcnJheSk7XG5cdCAgICAgKi9cblx0ICAgIEMuU0hBMSA9IEhhc2hlci5fY3JlYXRlSGVscGVyKFNIQTEpO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9uIHRvIHRoZSBITUFDJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gaGFzaC5cblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30ga2V5IFRoZSBzZWNyZXQga2V5LlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIEhNQUMuXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBobWFjID0gQ3J5cHRvSlMuSG1hY1NIQTEobWVzc2FnZSwga2V5KTtcblx0ICAgICAqL1xuXHQgICAgQy5IbWFjU0hBMSA9IEhhc2hlci5fY3JlYXRlSG1hY0hlbHBlcihTSEExKTtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5TSEExO1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL3NoYTI1NlwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9zaGEyNTZcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAoKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBXb3JkQXJyYXkgPSBDX2xpYi5Xb3JkQXJyYXk7XG5cdCAgICB2YXIgQ19hbGdvID0gQy5hbGdvO1xuXHQgICAgdmFyIFNIQTI1NiA9IENfYWxnby5TSEEyNTY7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU0hBLTIyNCBoYXNoIGFsZ29yaXRobS5cblx0ICAgICAqL1xuXHQgICAgdmFyIFNIQTIyNCA9IENfYWxnby5TSEEyMjQgPSBTSEEyNTYuZXh0ZW5kKHtcblx0ICAgICAgICBfZG9SZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB0aGlzLl9oYXNoID0gbmV3IFdvcmRBcnJheS5pbml0KFtcblx0ICAgICAgICAgICAgICAgIDB4YzEwNTllZDgsIDB4MzY3Y2Q1MDcsIDB4MzA3MGRkMTcsIDB4ZjcwZTU5MzksXG5cdCAgICAgICAgICAgICAgICAweGZmYzAwYjMxLCAweDY4NTgxNTExLCAweDY0Zjk4ZmE3LCAweGJlZmE0ZmE0XG5cdCAgICAgICAgICAgIF0pO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9GaW5hbGl6ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB2YXIgaGFzaCA9IFNIQTI1Ni5fZG9GaW5hbGl6ZS5jYWxsKHRoaXMpO1xuXG5cdCAgICAgICAgICAgIGhhc2guc2lnQnl0ZXMgLT0gNDtcblxuXHQgICAgICAgICAgICByZXR1cm4gaGFzaDtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbiB0byB0aGUgaGFzaGVyJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gaGFzaC5cblx0ICAgICAqXG5cdCAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBoYXNoLlxuXHQgICAgICpcblx0ICAgICAqIEBzdGF0aWNcblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgaGFzaCA9IENyeXB0b0pTLlNIQTIyNCgnbWVzc2FnZScpO1xuXHQgICAgICogICAgIHZhciBoYXNoID0gQ3J5cHRvSlMuU0hBMjI0KHdvcmRBcnJheSk7XG5cdCAgICAgKi9cblx0ICAgIEMuU0hBMjI0ID0gU0hBMjU2Ll9jcmVhdGVIZWxwZXIoU0hBMjI0KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbiB0byB0aGUgSE1BQydzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGhhc2guXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IGtleSBUaGUgc2VjcmV0IGtleS5cblx0ICAgICAqXG5cdCAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBITUFDLlxuXHQgICAgICpcblx0ICAgICAqIEBzdGF0aWNcblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgaG1hYyA9IENyeXB0b0pTLkhtYWNTSEEyMjQobWVzc2FnZSwga2V5KTtcblx0ICAgICAqL1xuXHQgICAgQy5IbWFjU0hBMjI0ID0gU0hBMjU2Ll9jcmVhdGVIbWFjSGVscGVyKFNIQTIyNCk7XG5cdH0oKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMuU0hBMjI0O1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSkge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKE1hdGgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIFdvcmRBcnJheSA9IENfbGliLldvcmRBcnJheTtcblx0ICAgIHZhciBIYXNoZXIgPSBDX2xpYi5IYXNoZXI7XG5cdCAgICB2YXIgQ19hbGdvID0gQy5hbGdvO1xuXG5cdCAgICAvLyBJbml0aWFsaXphdGlvbiBhbmQgcm91bmQgY29uc3RhbnRzIHRhYmxlc1xuXHQgICAgdmFyIEggPSBbXTtcblx0ICAgIHZhciBLID0gW107XG5cblx0ICAgIC8vIENvbXB1dGUgY29uc3RhbnRzXG5cdCAgICAoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIGZ1bmN0aW9uIGlzUHJpbWUobikge1xuXHQgICAgICAgICAgICB2YXIgc3FydE4gPSBNYXRoLnNxcnQobik7XG5cdCAgICAgICAgICAgIGZvciAodmFyIGZhY3RvciA9IDI7IGZhY3RvciA8PSBzcXJ0TjsgZmFjdG9yKyspIHtcblx0ICAgICAgICAgICAgICAgIGlmICghKG4gJSBmYWN0b3IpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIHRydWU7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgZnVuY3Rpb24gZ2V0RnJhY3Rpb25hbEJpdHMobikge1xuXHQgICAgICAgICAgICByZXR1cm4gKChuIC0gKG4gfCAwKSkgKiAweDEwMDAwMDAwMCkgfCAwO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHZhciBuID0gMjtcblx0ICAgICAgICB2YXIgblByaW1lID0gMDtcblx0ICAgICAgICB3aGlsZSAoblByaW1lIDwgNjQpIHtcblx0ICAgICAgICAgICAgaWYgKGlzUHJpbWUobikpIHtcblx0ICAgICAgICAgICAgICAgIGlmIChuUHJpbWUgPCA4KSB7XG5cdCAgICAgICAgICAgICAgICAgICAgSFtuUHJpbWVdID0gZ2V0RnJhY3Rpb25hbEJpdHMoTWF0aC5wb3cobiwgMSAvIDIpKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIEtbblByaW1lXSA9IGdldEZyYWN0aW9uYWxCaXRzKE1hdGgucG93KG4sIDEgLyAzKSk7XG5cblx0ICAgICAgICAgICAgICAgIG5QcmltZSsrO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgbisrO1xuXHQgICAgICAgIH1cblx0ICAgIH0oKSk7XG5cblx0ICAgIC8vIFJldXNhYmxlIG9iamVjdFxuXHQgICAgdmFyIFcgPSBbXTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTSEEtMjU2IGhhc2ggYWxnb3JpdGhtLlxuXHQgICAgICovXG5cdCAgICB2YXIgU0hBMjU2ID0gQ19hbGdvLlNIQTI1NiA9IEhhc2hlci5leHRlbmQoe1xuXHQgICAgICAgIF9kb1Jlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHRoaXMuX2hhc2ggPSBuZXcgV29yZEFycmF5LmluaXQoSC5zbGljZSgwKSk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb1Byb2Nlc3NCbG9jazogZnVuY3Rpb24gKE0sIG9mZnNldCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICB2YXIgSCA9IHRoaXMuX2hhc2gud29yZHM7XG5cblx0ICAgICAgICAgICAgLy8gV29ya2luZyB2YXJpYWJsZXNcblx0ICAgICAgICAgICAgdmFyIGEgPSBIWzBdO1xuXHQgICAgICAgICAgICB2YXIgYiA9IEhbMV07XG5cdCAgICAgICAgICAgIHZhciBjID0gSFsyXTtcblx0ICAgICAgICAgICAgdmFyIGQgPSBIWzNdO1xuXHQgICAgICAgICAgICB2YXIgZSA9IEhbNF07XG5cdCAgICAgICAgICAgIHZhciBmID0gSFs1XTtcblx0ICAgICAgICAgICAgdmFyIGcgPSBIWzZdO1xuXHQgICAgICAgICAgICB2YXIgaCA9IEhbN107XG5cblx0ICAgICAgICAgICAgLy8gQ29tcHV0YXRpb25cblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2NDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICBpZiAoaSA8IDE2KSB7XG5cdCAgICAgICAgICAgICAgICAgICAgV1tpXSA9IE1bb2Zmc2V0ICsgaV0gfCAwO1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgZ2FtbWEweCA9IFdbaSAtIDE1XTtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgZ2FtbWEwICA9ICgoZ2FtbWEweCA8PCAyNSkgfCAoZ2FtbWEweCA+Pj4gNykpICBeXG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGdhbW1hMHggPDwgMTQpIHwgKGdhbW1hMHggPj4+IDE4KSkgXlxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnYW1tYTB4ID4+PiAzKTtcblxuXHQgICAgICAgICAgICAgICAgICAgIHZhciBnYW1tYTF4ID0gV1tpIC0gMl07XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGdhbW1hMSAgPSAoKGdhbW1hMXggPDwgMTUpIHwgKGdhbW1hMXggPj4+IDE3KSkgXlxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChnYW1tYTF4IDw8IDEzKSB8IChnYW1tYTF4ID4+PiAxOSkpIF5cblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2FtbWExeCA+Pj4gMTApO1xuXG5cdCAgICAgICAgICAgICAgICAgICAgV1tpXSA9IGdhbW1hMCArIFdbaSAtIDddICsgZ2FtbWExICsgV1tpIC0gMTZdO1xuXHQgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICB2YXIgY2ggID0gKGUgJiBmKSBeICh+ZSAmIGcpO1xuXHQgICAgICAgICAgICAgICAgdmFyIG1haiA9IChhICYgYikgXiAoYSAmIGMpIF4gKGIgJiBjKTtcblxuXHQgICAgICAgICAgICAgICAgdmFyIHNpZ21hMCA9ICgoYSA8PCAzMCkgfCAoYSA+Pj4gMikpIF4gKChhIDw8IDE5KSB8IChhID4+PiAxMykpIF4gKChhIDw8IDEwKSB8IChhID4+PiAyMikpO1xuXHQgICAgICAgICAgICAgICAgdmFyIHNpZ21hMSA9ICgoZSA8PCAyNikgfCAoZSA+Pj4gNikpIF4gKChlIDw8IDIxKSB8IChlID4+PiAxMSkpIF4gKChlIDw8IDcpICB8IChlID4+PiAyNSkpO1xuXG5cdCAgICAgICAgICAgICAgICB2YXIgdDEgPSBoICsgc2lnbWExICsgY2ggKyBLW2ldICsgV1tpXTtcblx0ICAgICAgICAgICAgICAgIHZhciB0MiA9IHNpZ21hMCArIG1hajtcblxuXHQgICAgICAgICAgICAgICAgaCA9IGc7XG5cdCAgICAgICAgICAgICAgICBnID0gZjtcblx0ICAgICAgICAgICAgICAgIGYgPSBlO1xuXHQgICAgICAgICAgICAgICAgZSA9IChkICsgdDEpIHwgMDtcblx0ICAgICAgICAgICAgICAgIGQgPSBjO1xuXHQgICAgICAgICAgICAgICAgYyA9IGI7XG5cdCAgICAgICAgICAgICAgICBiID0gYTtcblx0ICAgICAgICAgICAgICAgIGEgPSAodDEgKyB0MikgfCAwO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gSW50ZXJtZWRpYXRlIGhhc2ggdmFsdWVcblx0ICAgICAgICAgICAgSFswXSA9IChIWzBdICsgYSkgfCAwO1xuXHQgICAgICAgICAgICBIWzFdID0gKEhbMV0gKyBiKSB8IDA7XG5cdCAgICAgICAgICAgIEhbMl0gPSAoSFsyXSArIGMpIHwgMDtcblx0ICAgICAgICAgICAgSFszXSA9IChIWzNdICsgZCkgfCAwO1xuXHQgICAgICAgICAgICBIWzRdID0gKEhbNF0gKyBlKSB8IDA7XG5cdCAgICAgICAgICAgIEhbNV0gPSAoSFs1XSArIGYpIHwgMDtcblx0ICAgICAgICAgICAgSFs2XSA9IChIWzZdICsgZykgfCAwO1xuXHQgICAgICAgICAgICBIWzddID0gKEhbN10gKyBoKSB8IDA7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb0ZpbmFsaXplOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgZGF0YSA9IHRoaXMuX2RhdGE7XG5cdCAgICAgICAgICAgIHZhciBkYXRhV29yZHMgPSBkYXRhLndvcmRzO1xuXG5cdCAgICAgICAgICAgIHZhciBuQml0c1RvdGFsID0gdGhpcy5fbkRhdGFCeXRlcyAqIDg7XG5cdCAgICAgICAgICAgIHZhciBuQml0c0xlZnQgPSBkYXRhLnNpZ0J5dGVzICogODtcblxuXHQgICAgICAgICAgICAvLyBBZGQgcGFkZGluZ1xuXHQgICAgICAgICAgICBkYXRhV29yZHNbbkJpdHNMZWZ0ID4+PiA1XSB8PSAweDgwIDw8ICgyNCAtIG5CaXRzTGVmdCAlIDMyKTtcblx0ICAgICAgICAgICAgZGF0YVdvcmRzWygoKG5CaXRzTGVmdCArIDY0KSA+Pj4gOSkgPDwgNCkgKyAxNF0gPSBNYXRoLmZsb29yKG5CaXRzVG90YWwgLyAweDEwMDAwMDAwMCk7XG5cdCAgICAgICAgICAgIGRhdGFXb3Jkc1soKChuQml0c0xlZnQgKyA2NCkgPj4+IDkpIDw8IDQpICsgMTVdID0gbkJpdHNUb3RhbDtcblx0ICAgICAgICAgICAgZGF0YS5zaWdCeXRlcyA9IGRhdGFXb3Jkcy5sZW5ndGggKiA0O1xuXG5cdCAgICAgICAgICAgIC8vIEhhc2ggZmluYWwgYmxvY2tzXG5cdCAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3MoKTtcblxuXHQgICAgICAgICAgICAvLyBSZXR1cm4gZmluYWwgY29tcHV0ZWQgaGFzaFxuXHQgICAgICAgICAgICByZXR1cm4gdGhpcy5faGFzaDtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgY2xvbmU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdmFyIGNsb25lID0gSGFzaGVyLmNsb25lLmNhbGwodGhpcyk7XG5cdCAgICAgICAgICAgIGNsb25lLl9oYXNoID0gdGhpcy5faGFzaC5jbG9uZSgpO1xuXG5cdCAgICAgICAgICAgIHJldHVybiBjbG9uZTtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbiB0byB0aGUgaGFzaGVyJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gaGFzaC5cblx0ICAgICAqXG5cdCAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBoYXNoLlxuXHQgICAgICpcblx0ICAgICAqIEBzdGF0aWNcblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgaGFzaCA9IENyeXB0b0pTLlNIQTI1NignbWVzc2FnZScpO1xuXHQgICAgICogICAgIHZhciBoYXNoID0gQ3J5cHRvSlMuU0hBMjU2KHdvcmRBcnJheSk7XG5cdCAgICAgKi9cblx0ICAgIEMuU0hBMjU2ID0gSGFzaGVyLl9jcmVhdGVIZWxwZXIoU0hBMjU2KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbiB0byB0aGUgSE1BQydzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGhhc2guXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IGtleSBUaGUgc2VjcmV0IGtleS5cblx0ICAgICAqXG5cdCAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBITUFDLlxuXHQgICAgICpcblx0ICAgICAqIEBzdGF0aWNcblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgaG1hYyA9IENyeXB0b0pTLkhtYWNTSEEyNTYobWVzc2FnZSwga2V5KTtcblx0ICAgICAqL1xuXHQgICAgQy5IbWFjU0hBMjU2ID0gSGFzaGVyLl9jcmVhdGVIbWFjSGVscGVyKFNIQTI1Nik7XG5cdH0oTWF0aCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLlNIQTI1NjtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi94NjQtY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi94NjQtY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uIChNYXRoKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBXb3JkQXJyYXkgPSBDX2xpYi5Xb3JkQXJyYXk7XG5cdCAgICB2YXIgSGFzaGVyID0gQ19saWIuSGFzaGVyO1xuXHQgICAgdmFyIENfeDY0ID0gQy54NjQ7XG5cdCAgICB2YXIgWDY0V29yZCA9IENfeDY0LldvcmQ7XG5cdCAgICB2YXIgQ19hbGdvID0gQy5hbGdvO1xuXG5cdCAgICAvLyBDb25zdGFudHMgdGFibGVzXG5cdCAgICB2YXIgUkhPX09GRlNFVFMgPSBbXTtcblx0ICAgIHZhciBQSV9JTkRFWEVTICA9IFtdO1xuXHQgICAgdmFyIFJPVU5EX0NPTlNUQU5UUyA9IFtdO1xuXG5cdCAgICAvLyBDb21wdXRlIENvbnN0YW50c1xuXHQgICAgKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAvLyBDb21wdXRlIHJobyBvZmZzZXQgY29uc3RhbnRzXG5cdCAgICAgICAgdmFyIHggPSAxLCB5ID0gMDtcblx0ICAgICAgICBmb3IgKHZhciB0ID0gMDsgdCA8IDI0OyB0KyspIHtcblx0ICAgICAgICAgICAgUkhPX09GRlNFVFNbeCArIDUgKiB5XSA9ICgodCArIDEpICogKHQgKyAyKSAvIDIpICUgNjQ7XG5cblx0ICAgICAgICAgICAgdmFyIG5ld1ggPSB5ICUgNTtcblx0ICAgICAgICAgICAgdmFyIG5ld1kgPSAoMiAqIHggKyAzICogeSkgJSA1O1xuXHQgICAgICAgICAgICB4ID0gbmV3WDtcblx0ICAgICAgICAgICAgeSA9IG5ld1k7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgLy8gQ29tcHV0ZSBwaSBpbmRleCBjb25zdGFudHNcblx0ICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IDU7IHgrKykge1xuXHQgICAgICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IDU7IHkrKykge1xuXHQgICAgICAgICAgICAgICAgUElfSU5ERVhFU1t4ICsgNSAqIHldID0geSArICgoMiAqIHggKyAzICogeSkgJSA1KSAqIDU7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cblx0ICAgICAgICAvLyBDb21wdXRlIHJvdW5kIGNvbnN0YW50c1xuXHQgICAgICAgIHZhciBMRlNSID0gMHgwMTtcblx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI0OyBpKyspIHtcblx0ICAgICAgICAgICAgdmFyIHJvdW5kQ29uc3RhbnRNc3cgPSAwO1xuXHQgICAgICAgICAgICB2YXIgcm91bmRDb25zdGFudExzdyA9IDA7XG5cblx0ICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA3OyBqKyspIHtcblx0ICAgICAgICAgICAgICAgIGlmIChMRlNSICYgMHgwMSkge1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBiaXRQb3NpdGlvbiA9ICgxIDw8IGopIC0gMTtcblx0ICAgICAgICAgICAgICAgICAgICBpZiAoYml0UG9zaXRpb24gPCAzMikge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICByb3VuZENvbnN0YW50THN3IF49IDEgPDwgYml0UG9zaXRpb247XG5cdCAgICAgICAgICAgICAgICAgICAgfSBlbHNlIC8qIGlmIChiaXRQb3NpdGlvbiA+PSAzMikgKi8ge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICByb3VuZENvbnN0YW50TXN3IF49IDEgPDwgKGJpdFBvc2l0aW9uIC0gMzIpO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSBuZXh0IExGU1Jcblx0ICAgICAgICAgICAgICAgIGlmIChMRlNSICYgMHg4MCkge1xuXHQgICAgICAgICAgICAgICAgICAgIC8vIFByaW1pdGl2ZSBwb2x5bm9taWFsIG92ZXIgR0YoMik6IHheOCArIHheNiArIHheNSArIHheNCArIDFcblx0ICAgICAgICAgICAgICAgICAgICBMRlNSID0gKExGU1IgPDwgMSkgXiAweDcxO1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICBMRlNSIDw8PSAxO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgUk9VTkRfQ09OU1RBTlRTW2ldID0gWDY0V29yZC5jcmVhdGUocm91bmRDb25zdGFudE1zdywgcm91bmRDb25zdGFudExzdyk7XG5cdCAgICAgICAgfVxuXHQgICAgfSgpKTtcblxuXHQgICAgLy8gUmV1c2FibGUgb2JqZWN0cyBmb3IgdGVtcG9yYXJ5IHZhbHVlc1xuXHQgICAgdmFyIFQgPSBbXTtcblx0ICAgIChmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTsgaSsrKSB7XG5cdCAgICAgICAgICAgIFRbaV0gPSBYNjRXb3JkLmNyZWF0ZSgpO1xuXHQgICAgICAgIH1cblx0ICAgIH0oKSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU0hBLTMgaGFzaCBhbGdvcml0aG0uXG5cdCAgICAgKi9cblx0ICAgIHZhciBTSEEzID0gQ19hbGdvLlNIQTMgPSBIYXNoZXIuZXh0ZW5kKHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcHJvcGVydHkge251bWJlcn0gb3V0cHV0TGVuZ3RoXG5cdCAgICAgICAgICogICBUaGUgZGVzaXJlZCBudW1iZXIgb2YgYml0cyBpbiB0aGUgb3V0cHV0IGhhc2guXG5cdCAgICAgICAgICogICBPbmx5IHZhbHVlcyBwZXJtaXR0ZWQgYXJlOiAyMjQsIDI1NiwgMzg0LCA1MTIuXG5cdCAgICAgICAgICogICBEZWZhdWx0OiA1MTJcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBjZmc6IEhhc2hlci5jZmcuZXh0ZW5kKHtcblx0ICAgICAgICAgICAgb3V0cHV0TGVuZ3RoOiA1MTJcblx0ICAgICAgICB9KSxcblxuXHQgICAgICAgIF9kb1Jlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHZhciBzdGF0ZSA9IHRoaXMuX3N0YXRlID0gW11cblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICBzdGF0ZVtpXSA9IG5ldyBYNjRXb3JkLmluaXQoKTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHRoaXMuYmxvY2tTaXplID0gKDE2MDAgLSAyICogdGhpcy5jZmcub3V0cHV0TGVuZ3RoKSAvIDMyO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9Qcm9jZXNzQmxvY2s6IGZ1bmN0aW9uIChNLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBzdGF0ZSA9IHRoaXMuX3N0YXRlO1xuXHQgICAgICAgICAgICB2YXIgbkJsb2NrU2l6ZUxhbmVzID0gdGhpcy5ibG9ja1NpemUgLyAyO1xuXG5cdCAgICAgICAgICAgIC8vIEFic29yYlxuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5CbG9ja1NpemVMYW5lczsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgICAgIHZhciBNMmkgID0gTVtvZmZzZXQgKyAyICogaV07XG5cdCAgICAgICAgICAgICAgICB2YXIgTTJpMSA9IE1bb2Zmc2V0ICsgMiAqIGkgKyAxXTtcblxuXHQgICAgICAgICAgICAgICAgLy8gU3dhcCBlbmRpYW5cblx0ICAgICAgICAgICAgICAgIE0yaSA9IChcblx0ICAgICAgICAgICAgICAgICAgICAoKChNMmkgPDwgOCkgIHwgKE0yaSA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcblx0ICAgICAgICAgICAgICAgICAgICAoKChNMmkgPDwgMjQpIHwgKE0yaSA+Pj4gOCkpICAmIDB4ZmYwMGZmMDApXG5cdCAgICAgICAgICAgICAgICApO1xuXHQgICAgICAgICAgICAgICAgTTJpMSA9IChcblx0ICAgICAgICAgICAgICAgICAgICAoKChNMmkxIDw8IDgpICB8IChNMmkxID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuXHQgICAgICAgICAgICAgICAgICAgICgoKE0yaTEgPDwgMjQpIHwgKE0yaTEgPj4+IDgpKSAgJiAweGZmMDBmZjAwKVxuXHQgICAgICAgICAgICAgICAgKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gQWJzb3JiIG1lc3NhZ2UgaW50byBzdGF0ZVxuXHQgICAgICAgICAgICAgICAgdmFyIGxhbmUgPSBzdGF0ZVtpXTtcblx0ICAgICAgICAgICAgICAgIGxhbmUuaGlnaCBePSBNMmkxO1xuXHQgICAgICAgICAgICAgICAgbGFuZS5sb3cgIF49IE0yaTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIFJvdW5kc1xuXHQgICAgICAgICAgICBmb3IgKHZhciByb3VuZCA9IDA7IHJvdW5kIDwgMjQ7IHJvdW5kKyspIHtcblx0ICAgICAgICAgICAgICAgIC8vIFRoZXRhXG5cdCAgICAgICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IDU7IHgrKykge1xuXHQgICAgICAgICAgICAgICAgICAgIC8vIE1peCBjb2x1bW4gbGFuZXNcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgdE1zdyA9IDAsIHRMc3cgPSAwO1xuXHQgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgNTsgeSsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsYW5lID0gc3RhdGVbeCArIDUgKiB5XTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdE1zdyBePSBsYW5lLmhpZ2g7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRMc3cgXj0gbGFuZS5sb3c7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICAgICAgLy8gVGVtcG9yYXJ5IHZhbHVlc1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBUeCA9IFRbeF07XG5cdCAgICAgICAgICAgICAgICAgICAgVHguaGlnaCA9IHRNc3c7XG5cdCAgICAgICAgICAgICAgICAgICAgVHgubG93ICA9IHRMc3c7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IDU7IHgrKykge1xuXHQgICAgICAgICAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBUeDQgPSBUWyh4ICsgNCkgJSA1XTtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgVHgxID0gVFsoeCArIDEpICUgNV07XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIFR4MU1zdyA9IFR4MS5oaWdoO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBUeDFMc3cgPSBUeDEubG93O1xuXG5cdCAgICAgICAgICAgICAgICAgICAgLy8gTWl4IHN1cnJvdW5kaW5nIGNvbHVtbnNcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgdE1zdyA9IFR4NC5oaWdoIF4gKChUeDFNc3cgPDwgMSkgfCAoVHgxTHN3ID4+PiAzMSkpO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciB0THN3ID0gVHg0LmxvdyAgXiAoKFR4MUxzdyA8PCAxKSB8IChUeDFNc3cgPj4+IDMxKSk7XG5cdCAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCA1OyB5KyspIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmUgPSBzdGF0ZVt4ICsgNSAqIHldO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBsYW5lLmhpZ2ggXj0gdE1zdztcblx0ICAgICAgICAgICAgICAgICAgICAgICAgbGFuZS5sb3cgIF49IHRMc3c7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICAvLyBSaG8gUGlcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGxhbmVJbmRleCA9IDE7IGxhbmVJbmRleCA8IDI1OyBsYW5lSW5kZXgrKykge1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciB0TXN3O1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciB0THN3O1xuXG5cdCAgICAgICAgICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmUgPSBzdGF0ZVtsYW5lSW5kZXhdO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBsYW5lTXN3ID0gbGFuZS5oaWdoO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBsYW5lTHN3ID0gbGFuZS5sb3c7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIHJob09mZnNldCA9IFJIT19PRkZTRVRTW2xhbmVJbmRleF07XG5cblx0ICAgICAgICAgICAgICAgICAgICAvLyBSb3RhdGUgbGFuZXNcblx0ICAgICAgICAgICAgICAgICAgICBpZiAocmhvT2Zmc2V0IDwgMzIpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdE1zdyA9IChsYW5lTXN3IDw8IHJob09mZnNldCkgfCAobGFuZUxzdyA+Pj4gKDMyIC0gcmhvT2Zmc2V0KSk7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRMc3cgPSAobGFuZUxzdyA8PCByaG9PZmZzZXQpIHwgKGxhbmVNc3cgPj4+ICgzMiAtIHJob09mZnNldCkpO1xuXHQgICAgICAgICAgICAgICAgICAgIH0gZWxzZSAvKiBpZiAocmhvT2Zmc2V0ID49IDMyKSAqLyB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRNc3cgPSAobGFuZUxzdyA8PCAocmhvT2Zmc2V0IC0gMzIpKSB8IChsYW5lTXN3ID4+PiAoNjQgLSByaG9PZmZzZXQpKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdExzdyA9IChsYW5lTXN3IDw8IChyaG9PZmZzZXQgLSAzMikpIHwgKGxhbmVMc3cgPj4+ICg2NCAtIHJob09mZnNldCkpO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgICAgIC8vIFRyYW5zcG9zZSBsYW5lc1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBUUGlMYW5lID0gVFtQSV9JTkRFWEVTW2xhbmVJbmRleF1dO1xuXHQgICAgICAgICAgICAgICAgICAgIFRQaUxhbmUuaGlnaCA9IHRNc3c7XG5cdCAgICAgICAgICAgICAgICAgICAgVFBpTGFuZS5sb3cgID0gdExzdztcblx0ICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgLy8gUmhvIHBpIGF0IHggPSB5ID0gMFxuXHQgICAgICAgICAgICAgICAgdmFyIFQwID0gVFswXTtcblx0ICAgICAgICAgICAgICAgIHZhciBzdGF0ZTAgPSBzdGF0ZVswXTtcblx0ICAgICAgICAgICAgICAgIFQwLmhpZ2ggPSBzdGF0ZTAuaGlnaDtcblx0ICAgICAgICAgICAgICAgIFQwLmxvdyAgPSBzdGF0ZTAubG93O1xuXG5cdCAgICAgICAgICAgICAgICAvLyBDaGlcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgNTsgeCsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCA1OyB5KyspIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsYW5lSW5kZXggPSB4ICsgNSAqIHk7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsYW5lID0gc3RhdGVbbGFuZUluZGV4XTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIFRMYW5lID0gVFtsYW5lSW5kZXhdO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB2YXIgVHgxTGFuZSA9IFRbKCh4ICsgMSkgJSA1KSArIDUgKiB5XTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIFR4MkxhbmUgPSBUWygoeCArIDIpICUgNSkgKyA1ICogeV07XG5cblx0ICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWl4IHJvd3Ncblx0ICAgICAgICAgICAgICAgICAgICAgICAgbGFuZS5oaWdoID0gVExhbmUuaGlnaCBeICh+VHgxTGFuZS5oaWdoICYgVHgyTGFuZS5oaWdoKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgbGFuZS5sb3cgID0gVExhbmUubG93ICBeICh+VHgxTGFuZS5sb3cgICYgVHgyTGFuZS5sb3cpO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgLy8gSW90YVxuXHQgICAgICAgICAgICAgICAgdmFyIGxhbmUgPSBzdGF0ZVswXTtcblx0ICAgICAgICAgICAgICAgIHZhciByb3VuZENvbnN0YW50ID0gUk9VTkRfQ09OU1RBTlRTW3JvdW5kXTtcblx0ICAgICAgICAgICAgICAgIGxhbmUuaGlnaCBePSByb3VuZENvbnN0YW50LmhpZ2g7XG5cdCAgICAgICAgICAgICAgICBsYW5lLmxvdyAgXj0gcm91bmRDb25zdGFudC5sb3c7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvRmluYWxpemU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy5fZGF0YTtcblx0ICAgICAgICAgICAgdmFyIGRhdGFXb3JkcyA9IGRhdGEud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBuQml0c1RvdGFsID0gdGhpcy5fbkRhdGFCeXRlcyAqIDg7XG5cdCAgICAgICAgICAgIHZhciBuQml0c0xlZnQgPSBkYXRhLnNpZ0J5dGVzICogODtcblx0ICAgICAgICAgICAgdmFyIGJsb2NrU2l6ZUJpdHMgPSB0aGlzLmJsb2NrU2l6ZSAqIDMyO1xuXG5cdCAgICAgICAgICAgIC8vIEFkZCBwYWRkaW5nXG5cdCAgICAgICAgICAgIGRhdGFXb3Jkc1tuQml0c0xlZnQgPj4+IDVdIHw9IDB4MSA8PCAoMjQgLSBuQml0c0xlZnQgJSAzMik7XG5cdCAgICAgICAgICAgIGRhdGFXb3Jkc1soKE1hdGguY2VpbCgobkJpdHNMZWZ0ICsgMSkgLyBibG9ja1NpemVCaXRzKSAqIGJsb2NrU2l6ZUJpdHMpID4+PiA1KSAtIDFdIHw9IDB4ODA7XG5cdCAgICAgICAgICAgIGRhdGEuc2lnQnl0ZXMgPSBkYXRhV29yZHMubGVuZ3RoICogNDtcblxuXHQgICAgICAgICAgICAvLyBIYXNoIGZpbmFsIGJsb2Nrc1xuXHQgICAgICAgICAgICB0aGlzLl9wcm9jZXNzKCk7XG5cblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBzdGF0ZSA9IHRoaXMuX3N0YXRlO1xuXHQgICAgICAgICAgICB2YXIgb3V0cHV0TGVuZ3RoQnl0ZXMgPSB0aGlzLmNmZy5vdXRwdXRMZW5ndGggLyA4O1xuXHQgICAgICAgICAgICB2YXIgb3V0cHV0TGVuZ3RoTGFuZXMgPSBvdXRwdXRMZW5ndGhCeXRlcyAvIDg7XG5cblx0ICAgICAgICAgICAgLy8gU3F1ZWV6ZVxuXHQgICAgICAgICAgICB2YXIgaGFzaFdvcmRzID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3V0cHV0TGVuZ3RoTGFuZXM7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgICAgICB2YXIgbGFuZSA9IHN0YXRlW2ldO1xuXHQgICAgICAgICAgICAgICAgdmFyIGxhbmVNc3cgPSBsYW5lLmhpZ2g7XG5cdCAgICAgICAgICAgICAgICB2YXIgbGFuZUxzdyA9IGxhbmUubG93O1xuXG5cdCAgICAgICAgICAgICAgICAvLyBTd2FwIGVuZGlhblxuXHQgICAgICAgICAgICAgICAgbGFuZU1zdyA9IChcblx0ICAgICAgICAgICAgICAgICAgICAoKChsYW5lTXN3IDw8IDgpICB8IChsYW5lTXN3ID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuXHQgICAgICAgICAgICAgICAgICAgICgoKGxhbmVNc3cgPDwgMjQpIHwgKGxhbmVNc3cgPj4+IDgpKSAgJiAweGZmMDBmZjAwKVxuXHQgICAgICAgICAgICAgICAgKTtcblx0ICAgICAgICAgICAgICAgIGxhbmVMc3cgPSAoXG5cdCAgICAgICAgICAgICAgICAgICAgKCgobGFuZUxzdyA8PCA4KSAgfCAobGFuZUxzdyA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcblx0ICAgICAgICAgICAgICAgICAgICAoKChsYW5lTHN3IDw8IDI0KSB8IChsYW5lTHN3ID4+PiA4KSkgICYgMHhmZjAwZmYwMClcblx0ICAgICAgICAgICAgICAgICk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIFNxdWVlemUgc3RhdGUgdG8gcmV0cmlldmUgaGFzaFxuXHQgICAgICAgICAgICAgICAgaGFzaFdvcmRzLnB1c2gobGFuZUxzdyk7XG5cdCAgICAgICAgICAgICAgICBoYXNoV29yZHMucHVzaChsYW5lTXN3KTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIFJldHVybiBmaW5hbCBjb21wdXRlZCBoYXNoXG5cdCAgICAgICAgICAgIHJldHVybiBuZXcgV29yZEFycmF5LmluaXQoaGFzaFdvcmRzLCBvdXRwdXRMZW5ndGhCeXRlcyk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGNsb25lOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHZhciBjbG9uZSA9IEhhc2hlci5jbG9uZS5jYWxsKHRoaXMpO1xuXG5cdCAgICAgICAgICAgIHZhciBzdGF0ZSA9IGNsb25lLl9zdGF0ZSA9IHRoaXMuX3N0YXRlLnNsaWNlKDApO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIHN0YXRlW2ldID0gc3RhdGVbaV0uY2xvbmUoKTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiBjbG9uZTtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbiB0byB0aGUgaGFzaGVyJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gaGFzaC5cblx0ICAgICAqXG5cdCAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBoYXNoLlxuXHQgICAgICpcblx0ICAgICAqIEBzdGF0aWNcblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgaGFzaCA9IENyeXB0b0pTLlNIQTMoJ21lc3NhZ2UnKTtcblx0ICAgICAqICAgICB2YXIgaGFzaCA9IENyeXB0b0pTLlNIQTMod29yZEFycmF5KTtcblx0ICAgICAqL1xuXHQgICAgQy5TSEEzID0gSGFzaGVyLl9jcmVhdGVIZWxwZXIoU0hBMyk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb24gdG8gdGhlIEhNQUMncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBoYXNoLlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBrZXkgVGhlIHNlY3JldCBrZXkuXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgSE1BQy5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGhtYWMgPSBDcnlwdG9KUy5IbWFjU0hBMyhtZXNzYWdlLCBrZXkpO1xuXHQgICAgICovXG5cdCAgICBDLkhtYWNTSEEzID0gSGFzaGVyLl9jcmVhdGVIbWFjSGVscGVyKFNIQTMpO1xuXHR9KE1hdGgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5TSEEzO1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL3g2NC1jb3JlXCIpLCByZXF1aXJlKFwiLi9zaGE1MTJcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4veDY0LWNvcmVcIiwgXCIuL3NoYTUxMlwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX3g2NCA9IEMueDY0O1xuXHQgICAgdmFyIFg2NFdvcmQgPSBDX3g2NC5Xb3JkO1xuXHQgICAgdmFyIFg2NFdvcmRBcnJheSA9IENfeDY0LldvcmRBcnJheTtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cdCAgICB2YXIgU0hBNTEyID0gQ19hbGdvLlNIQTUxMjtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTSEEtMzg0IGhhc2ggYWxnb3JpdGhtLlxuXHQgICAgICovXG5cdCAgICB2YXIgU0hBMzg0ID0gQ19hbGdvLlNIQTM4NCA9IFNIQTUxMi5leHRlbmQoe1xuXHQgICAgICAgIF9kb1Jlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHRoaXMuX2hhc2ggPSBuZXcgWDY0V29yZEFycmF5LmluaXQoW1xuXHQgICAgICAgICAgICAgICAgbmV3IFg2NFdvcmQuaW5pdCgweGNiYmI5ZDVkLCAweGMxMDU5ZWQ4KSwgbmV3IFg2NFdvcmQuaW5pdCgweDYyOWEyOTJhLCAweDM2N2NkNTA3KSxcblx0ICAgICAgICAgICAgICAgIG5ldyBYNjRXb3JkLmluaXQoMHg5MTU5MDE1YSwgMHgzMDcwZGQxNyksIG5ldyBYNjRXb3JkLmluaXQoMHgxNTJmZWNkOCwgMHhmNzBlNTkzOSksXG5cdCAgICAgICAgICAgICAgICBuZXcgWDY0V29yZC5pbml0KDB4NjczMzI2NjcsIDB4ZmZjMDBiMzEpLCBuZXcgWDY0V29yZC5pbml0KDB4OGViNDRhODcsIDB4Njg1ODE1MTEpLFxuXHQgICAgICAgICAgICAgICAgbmV3IFg2NFdvcmQuaW5pdCgweGRiMGMyZTBkLCAweDY0Zjk4ZmE3KSwgbmV3IFg2NFdvcmQuaW5pdCgweDQ3YjU0ODFkLCAweGJlZmE0ZmE0KVxuXHQgICAgICAgICAgICBdKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvRmluYWxpemU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdmFyIGhhc2ggPSBTSEE1MTIuX2RvRmluYWxpemUuY2FsbCh0aGlzKTtcblxuXHQgICAgICAgICAgICBoYXNoLnNpZ0J5dGVzIC09IDE2O1xuXG5cdCAgICAgICAgICAgIHJldHVybiBoYXNoO1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9uIHRvIHRoZSBoYXNoZXIncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBoYXNoLlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIGhhc2guXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBoYXNoID0gQ3J5cHRvSlMuU0hBMzg0KCdtZXNzYWdlJyk7XG5cdCAgICAgKiAgICAgdmFyIGhhc2ggPSBDcnlwdG9KUy5TSEEzODQod29yZEFycmF5KTtcblx0ICAgICAqL1xuXHQgICAgQy5TSEEzODQgPSBTSEE1MTIuX2NyZWF0ZUhlbHBlcihTSEEzODQpO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9uIHRvIHRoZSBITUFDJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gaGFzaC5cblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30ga2V5IFRoZSBzZWNyZXQga2V5LlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIEhNQUMuXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBobWFjID0gQ3J5cHRvSlMuSG1hY1NIQTM4NChtZXNzYWdlLCBrZXkpO1xuXHQgICAgICovXG5cdCAgICBDLkhtYWNTSEEzODQgPSBTSEE1MTIuX2NyZWF0ZUhtYWNIZWxwZXIoU0hBMzg0KTtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5TSEEzODQ7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4veDY0LWNvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4veDY0LWNvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAoKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBIYXNoZXIgPSBDX2xpYi5IYXNoZXI7XG5cdCAgICB2YXIgQ194NjQgPSBDLng2NDtcblx0ICAgIHZhciBYNjRXb3JkID0gQ194NjQuV29yZDtcblx0ICAgIHZhciBYNjRXb3JkQXJyYXkgPSBDX3g2NC5Xb3JkQXJyYXk7XG5cdCAgICB2YXIgQ19hbGdvID0gQy5hbGdvO1xuXG5cdCAgICBmdW5jdGlvbiBYNjRXb3JkX2NyZWF0ZSgpIHtcblx0ICAgICAgICByZXR1cm4gWDY0V29yZC5jcmVhdGUuYXBwbHkoWDY0V29yZCwgYXJndW1lbnRzKTtcblx0ICAgIH1cblxuXHQgICAgLy8gQ29uc3RhbnRzXG5cdCAgICB2YXIgSyA9IFtcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDQyOGEyZjk4LCAweGQ3MjhhZTIyKSwgWDY0V29yZF9jcmVhdGUoMHg3MTM3NDQ5MSwgMHgyM2VmNjVjZCksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHhiNWMwZmJjZiwgMHhlYzRkM2IyZiksIFg2NFdvcmRfY3JlYXRlKDB4ZTliNWRiYTUsIDB4ODE4OWRiYmMpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4Mzk1NmMyNWIsIDB4ZjM0OGI1MzgpLCBYNjRXb3JkX2NyZWF0ZSgweDU5ZjExMWYxLCAweGI2MDVkMDE5KSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDkyM2Y4MmE0LCAweGFmMTk0ZjliKSwgWDY0V29yZF9jcmVhdGUoMHhhYjFjNWVkNSwgMHhkYTZkODExOCksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHhkODA3YWE5OCwgMHhhMzAzMDI0MiksIFg2NFdvcmRfY3JlYXRlKDB4MTI4MzViMDEsIDB4NDU3MDZmYmUpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4MjQzMTg1YmUsIDB4NGVlNGIyOGMpLCBYNjRXb3JkX2NyZWF0ZSgweDU1MGM3ZGMzLCAweGQ1ZmZiNGUyKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDcyYmU1ZDc0LCAweGYyN2I4OTZmKSwgWDY0V29yZF9jcmVhdGUoMHg4MGRlYjFmZSwgMHgzYjE2OTZiMSksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHg5YmRjMDZhNywgMHgyNWM3MTIzNSksIFg2NFdvcmRfY3JlYXRlKDB4YzE5YmYxNzQsIDB4Y2Y2OTI2OTQpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4ZTQ5YjY5YzEsIDB4OWVmMTRhZDIpLCBYNjRXb3JkX2NyZWF0ZSgweGVmYmU0Nzg2LCAweDM4NGYyNWUzKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDBmYzE5ZGM2LCAweDhiOGNkNWI1KSwgWDY0V29yZF9jcmVhdGUoMHgyNDBjYTFjYywgMHg3N2FjOWM2NSksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHgyZGU5MmM2ZiwgMHg1OTJiMDI3NSksIFg2NFdvcmRfY3JlYXRlKDB4NGE3NDg0YWEsIDB4NmVhNmU0ODMpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4NWNiMGE5ZGMsIDB4YmQ0MWZiZDQpLCBYNjRXb3JkX2NyZWF0ZSgweDc2Zjk4OGRhLCAweDgzMTE1M2I1KSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDk4M2U1MTUyLCAweGVlNjZkZmFiKSwgWDY0V29yZF9jcmVhdGUoMHhhODMxYzY2ZCwgMHgyZGI0MzIxMCksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHhiMDAzMjdjOCwgMHg5OGZiMjEzZiksIFg2NFdvcmRfY3JlYXRlKDB4YmY1OTdmYzcsIDB4YmVlZjBlZTQpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4YzZlMDBiZjMsIDB4M2RhODhmYzIpLCBYNjRXb3JkX2NyZWF0ZSgweGQ1YTc5MTQ3LCAweDkzMGFhNzI1KSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDA2Y2E2MzUxLCAweGUwMDM4MjZmKSwgWDY0V29yZF9jcmVhdGUoMHgxNDI5Mjk2NywgMHgwYTBlNmU3MCksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHgyN2I3MGE4NSwgMHg0NmQyMmZmYyksIFg2NFdvcmRfY3JlYXRlKDB4MmUxYjIxMzgsIDB4NWMyNmM5MjYpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4NGQyYzZkZmMsIDB4NWFjNDJhZWQpLCBYNjRXb3JkX2NyZWF0ZSgweDUzMzgwZDEzLCAweDlkOTViM2RmKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDY1MGE3MzU0LCAweDhiYWY2M2RlKSwgWDY0V29yZF9jcmVhdGUoMHg3NjZhMGFiYiwgMHgzYzc3YjJhOCksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHg4MWMyYzkyZSwgMHg0N2VkYWVlNiksIFg2NFdvcmRfY3JlYXRlKDB4OTI3MjJjODUsIDB4MTQ4MjM1M2IpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4YTJiZmU4YTEsIDB4NGNmMTAzNjQpLCBYNjRXb3JkX2NyZWF0ZSgweGE4MWE2NjRiLCAweGJjNDIzMDAxKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweGMyNGI4YjcwLCAweGQwZjg5NzkxKSwgWDY0V29yZF9jcmVhdGUoMHhjNzZjNTFhMywgMHgwNjU0YmUzMCksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHhkMTkyZTgxOSwgMHhkNmVmNTIxOCksIFg2NFdvcmRfY3JlYXRlKDB4ZDY5OTA2MjQsIDB4NTU2NWE5MTApLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4ZjQwZTM1ODUsIDB4NTc3MTIwMmEpLCBYNjRXb3JkX2NyZWF0ZSgweDEwNmFhMDcwLCAweDMyYmJkMWI4KSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDE5YTRjMTE2LCAweGI4ZDJkMGM4KSwgWDY0V29yZF9jcmVhdGUoMHgxZTM3NmMwOCwgMHg1MTQxYWI1MyksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHgyNzQ4Nzc0YywgMHhkZjhlZWI5OSksIFg2NFdvcmRfY3JlYXRlKDB4MzRiMGJjYjUsIDB4ZTE5YjQ4YTgpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4MzkxYzBjYjMsIDB4YzVjOTVhNjMpLCBYNjRXb3JkX2NyZWF0ZSgweDRlZDhhYTRhLCAweGUzNDE4YWNiKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDViOWNjYTRmLCAweDc3NjNlMzczKSwgWDY0V29yZF9jcmVhdGUoMHg2ODJlNmZmMywgMHhkNmIyYjhhMyksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHg3NDhmODJlZSwgMHg1ZGVmYjJmYyksIFg2NFdvcmRfY3JlYXRlKDB4NzhhNTYzNmYsIDB4NDMxNzJmNjApLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4ODRjODc4MTQsIDB4YTFmMGFiNzIpLCBYNjRXb3JkX2NyZWF0ZSgweDhjYzcwMjA4LCAweDFhNjQzOWVjKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDkwYmVmZmZhLCAweDIzNjMxZTI4KSwgWDY0V29yZF9jcmVhdGUoMHhhNDUwNmNlYiwgMHhkZTgyYmRlOSksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHhiZWY5YTNmNywgMHhiMmM2NzkxNSksIFg2NFdvcmRfY3JlYXRlKDB4YzY3MTc4ZjIsIDB4ZTM3MjUzMmIpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4Y2EyNzNlY2UsIDB4ZWEyNjYxOWMpLCBYNjRXb3JkX2NyZWF0ZSgweGQxODZiOGM3LCAweDIxYzBjMjA3KSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweGVhZGE3ZGQ2LCAweGNkZTBlYjFlKSwgWDY0V29yZF9jcmVhdGUoMHhmNTdkNGY3ZiwgMHhlZTZlZDE3OCksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHgwNmYwNjdhYSwgMHg3MjE3NmZiYSksIFg2NFdvcmRfY3JlYXRlKDB4MGE2MzdkYzUsIDB4YTJjODk4YTYpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4MTEzZjk4MDQsIDB4YmVmOTBkYWUpLCBYNjRXb3JkX2NyZWF0ZSgweDFiNzEwYjM1LCAweDEzMWM0NzFiKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDI4ZGI3N2Y1LCAweDIzMDQ3ZDg0KSwgWDY0V29yZF9jcmVhdGUoMHgzMmNhYWI3YiwgMHg0MGM3MjQ5MyksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHgzYzllYmUwYSwgMHgxNWM5YmViYyksIFg2NFdvcmRfY3JlYXRlKDB4NDMxZDY3YzQsIDB4OWMxMDBkNGMpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4NGNjNWQ0YmUsIDB4Y2IzZTQyYjYpLCBYNjRXb3JkX2NyZWF0ZSgweDU5N2YyOTljLCAweGZjNjU3ZTJhKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDVmY2I2ZmFiLCAweDNhZDZmYWVjKSwgWDY0V29yZF9jcmVhdGUoMHg2YzQ0MTk4YywgMHg0YTQ3NTgxNylcblx0ICAgIF07XG5cblx0ICAgIC8vIFJldXNhYmxlIG9iamVjdHNcblx0ICAgIHZhciBXID0gW107XG5cdCAgICAoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODA7IGkrKykge1xuXHQgICAgICAgICAgICBXW2ldID0gWDY0V29yZF9jcmVhdGUoKTtcblx0ICAgICAgICB9XG5cdCAgICB9KCkpO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNIQS01MTIgaGFzaCBhbGdvcml0aG0uXG5cdCAgICAgKi9cblx0ICAgIHZhciBTSEE1MTIgPSBDX2FsZ28uU0hBNTEyID0gSGFzaGVyLmV4dGVuZCh7XG5cdCAgICAgICAgX2RvUmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdGhpcy5faGFzaCA9IG5ldyBYNjRXb3JkQXJyYXkuaW5pdChbXG5cdCAgICAgICAgICAgICAgICBuZXcgWDY0V29yZC5pbml0KDB4NmEwOWU2NjcsIDB4ZjNiY2M5MDgpLCBuZXcgWDY0V29yZC5pbml0KDB4YmI2N2FlODUsIDB4ODRjYWE3M2IpLFxuXHQgICAgICAgICAgICAgICAgbmV3IFg2NFdvcmQuaW5pdCgweDNjNmVmMzcyLCAweGZlOTRmODJiKSwgbmV3IFg2NFdvcmQuaW5pdCgweGE1NGZmNTNhLCAweDVmMWQzNmYxKSxcblx0ICAgICAgICAgICAgICAgIG5ldyBYNjRXb3JkLmluaXQoMHg1MTBlNTI3ZiwgMHhhZGU2ODJkMSksIG5ldyBYNjRXb3JkLmluaXQoMHg5YjA1Njg4YywgMHgyYjNlNmMxZiksXG5cdCAgICAgICAgICAgICAgICBuZXcgWDY0V29yZC5pbml0KDB4MWY4M2Q5YWIsIDB4ZmI0MWJkNmIpLCBuZXcgWDY0V29yZC5pbml0KDB4NWJlMGNkMTksIDB4MTM3ZTIxNzkpXG5cdCAgICAgICAgICAgIF0pO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9Qcm9jZXNzQmxvY2s6IGZ1bmN0aW9uIChNLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBIID0gdGhpcy5faGFzaC53b3JkcztcblxuXHQgICAgICAgICAgICB2YXIgSDAgPSBIWzBdO1xuXHQgICAgICAgICAgICB2YXIgSDEgPSBIWzFdO1xuXHQgICAgICAgICAgICB2YXIgSDIgPSBIWzJdO1xuXHQgICAgICAgICAgICB2YXIgSDMgPSBIWzNdO1xuXHQgICAgICAgICAgICB2YXIgSDQgPSBIWzRdO1xuXHQgICAgICAgICAgICB2YXIgSDUgPSBIWzVdO1xuXHQgICAgICAgICAgICB2YXIgSDYgPSBIWzZdO1xuXHQgICAgICAgICAgICB2YXIgSDcgPSBIWzddO1xuXG5cdCAgICAgICAgICAgIHZhciBIMGggPSBIMC5oaWdoO1xuXHQgICAgICAgICAgICB2YXIgSDBsID0gSDAubG93O1xuXHQgICAgICAgICAgICB2YXIgSDFoID0gSDEuaGlnaDtcblx0ICAgICAgICAgICAgdmFyIEgxbCA9IEgxLmxvdztcblx0ICAgICAgICAgICAgdmFyIEgyaCA9IEgyLmhpZ2g7XG5cdCAgICAgICAgICAgIHZhciBIMmwgPSBIMi5sb3c7XG5cdCAgICAgICAgICAgIHZhciBIM2ggPSBIMy5oaWdoO1xuXHQgICAgICAgICAgICB2YXIgSDNsID0gSDMubG93O1xuXHQgICAgICAgICAgICB2YXIgSDRoID0gSDQuaGlnaDtcblx0ICAgICAgICAgICAgdmFyIEg0bCA9IEg0Lmxvdztcblx0ICAgICAgICAgICAgdmFyIEg1aCA9IEg1LmhpZ2g7XG5cdCAgICAgICAgICAgIHZhciBINWwgPSBINS5sb3c7XG5cdCAgICAgICAgICAgIHZhciBINmggPSBINi5oaWdoO1xuXHQgICAgICAgICAgICB2YXIgSDZsID0gSDYubG93O1xuXHQgICAgICAgICAgICB2YXIgSDdoID0gSDcuaGlnaDtcblx0ICAgICAgICAgICAgdmFyIEg3bCA9IEg3LmxvdztcblxuXHQgICAgICAgICAgICAvLyBXb3JraW5nIHZhcmlhYmxlc1xuXHQgICAgICAgICAgICB2YXIgYWggPSBIMGg7XG5cdCAgICAgICAgICAgIHZhciBhbCA9IEgwbDtcblx0ICAgICAgICAgICAgdmFyIGJoID0gSDFoO1xuXHQgICAgICAgICAgICB2YXIgYmwgPSBIMWw7XG5cdCAgICAgICAgICAgIHZhciBjaCA9IEgyaDtcblx0ICAgICAgICAgICAgdmFyIGNsID0gSDJsO1xuXHQgICAgICAgICAgICB2YXIgZGggPSBIM2g7XG5cdCAgICAgICAgICAgIHZhciBkbCA9IEgzbDtcblx0ICAgICAgICAgICAgdmFyIGVoID0gSDRoO1xuXHQgICAgICAgICAgICB2YXIgZWwgPSBINGw7XG5cdCAgICAgICAgICAgIHZhciBmaCA9IEg1aDtcblx0ICAgICAgICAgICAgdmFyIGZsID0gSDVsO1xuXHQgICAgICAgICAgICB2YXIgZ2ggPSBINmg7XG5cdCAgICAgICAgICAgIHZhciBnbCA9IEg2bDtcblx0ICAgICAgICAgICAgdmFyIGhoID0gSDdoO1xuXHQgICAgICAgICAgICB2YXIgaGwgPSBIN2w7XG5cblx0ICAgICAgICAgICAgLy8gUm91bmRzXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODA7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgdmFyIFdpbDtcblx0ICAgICAgICAgICAgICAgIHZhciBXaWg7XG5cblx0ICAgICAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgICAgICB2YXIgV2kgPSBXW2ldO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBFeHRlbmQgbWVzc2FnZVxuXHQgICAgICAgICAgICAgICAgaWYgKGkgPCAxNikge1xuXHQgICAgICAgICAgICAgICAgICAgIFdpaCA9IFdpLmhpZ2ggPSBNW29mZnNldCArIGkgKiAyXSAgICAgfCAwO1xuXHQgICAgICAgICAgICAgICAgICAgIFdpbCA9IFdpLmxvdyAgPSBNW29mZnNldCArIGkgKiAyICsgMV0gfCAwO1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICAvLyBHYW1tYTBcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgZ2FtbWEweCAgPSBXW2kgLSAxNV07XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGdhbW1hMHhoID0gZ2FtbWEweC5oaWdoO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBnYW1tYTB4bCA9IGdhbW1hMHgubG93O1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBnYW1tYTBoICA9ICgoZ2FtbWEweGggPj4+IDEpIHwgKGdhbW1hMHhsIDw8IDMxKSkgXiAoKGdhbW1hMHhoID4+PiA4KSB8IChnYW1tYTB4bCA8PCAyNCkpIF4gKGdhbW1hMHhoID4+PiA3KTtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgZ2FtbWEwbCAgPSAoKGdhbW1hMHhsID4+PiAxKSB8IChnYW1tYTB4aCA8PCAzMSkpIF4gKChnYW1tYTB4bCA+Pj4gOCkgfCAoZ2FtbWEweGggPDwgMjQpKSBeICgoZ2FtbWEweGwgPj4+IDcpIHwgKGdhbW1hMHhoIDw8IDI1KSk7XG5cblx0ICAgICAgICAgICAgICAgICAgICAvLyBHYW1tYTFcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgZ2FtbWExeCAgPSBXW2kgLSAyXTtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgZ2FtbWExeGggPSBnYW1tYTF4LmhpZ2g7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGdhbW1hMXhsID0gZ2FtbWExeC5sb3c7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGdhbW1hMWggID0gKChnYW1tYTF4aCA+Pj4gMTkpIHwgKGdhbW1hMXhsIDw8IDEzKSkgXiAoKGdhbW1hMXhoIDw8IDMpIHwgKGdhbW1hMXhsID4+PiAyOSkpIF4gKGdhbW1hMXhoID4+PiA2KTtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgZ2FtbWExbCAgPSAoKGdhbW1hMXhsID4+PiAxOSkgfCAoZ2FtbWExeGggPDwgMTMpKSBeICgoZ2FtbWExeGwgPDwgMykgfCAoZ2FtbWExeGggPj4+IDI5KSkgXiAoKGdhbW1hMXhsID4+PiA2KSB8IChnYW1tYTF4aCA8PCAyNikpO1xuXG5cdCAgICAgICAgICAgICAgICAgICAgLy8gV1tpXSA9IGdhbW1hMCArIFdbaSAtIDddICsgZ2FtbWExICsgV1tpIC0gMTZdXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIFdpNyAgPSBXW2kgLSA3XTtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgV2k3aCA9IFdpNy5oaWdoO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBXaTdsID0gV2k3LmxvdztcblxuXHQgICAgICAgICAgICAgICAgICAgIHZhciBXaTE2ICA9IFdbaSAtIDE2XTtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgV2kxNmggPSBXaTE2LmhpZ2g7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIFdpMTZsID0gV2kxNi5sb3c7XG5cblx0ICAgICAgICAgICAgICAgICAgICBXaWwgPSBnYW1tYTBsICsgV2k3bDtcblx0ICAgICAgICAgICAgICAgICAgICBXaWggPSBnYW1tYTBoICsgV2k3aCArICgoV2lsID4+PiAwKSA8IChnYW1tYTBsID4+PiAwKSA/IDEgOiAwKTtcblx0ICAgICAgICAgICAgICAgICAgICBXaWwgPSBXaWwgKyBnYW1tYTFsO1xuXHQgICAgICAgICAgICAgICAgICAgIFdpaCA9IFdpaCArIGdhbW1hMWggKyAoKFdpbCA+Pj4gMCkgPCAoZ2FtbWExbCA+Pj4gMCkgPyAxIDogMCk7XG5cdCAgICAgICAgICAgICAgICAgICAgV2lsID0gV2lsICsgV2kxNmw7XG5cdCAgICAgICAgICAgICAgICAgICAgV2loID0gV2loICsgV2kxNmggKyAoKFdpbCA+Pj4gMCkgPCAoV2kxNmwgPj4+IDApID8gMSA6IDApO1xuXG5cdCAgICAgICAgICAgICAgICAgICAgV2kuaGlnaCA9IFdpaDtcblx0ICAgICAgICAgICAgICAgICAgICBXaS5sb3cgID0gV2lsO1xuXHQgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICB2YXIgY2hoICA9IChlaCAmIGZoKSBeICh+ZWggJiBnaCk7XG5cdCAgICAgICAgICAgICAgICB2YXIgY2hsICA9IChlbCAmIGZsKSBeICh+ZWwgJiBnbCk7XG5cdCAgICAgICAgICAgICAgICB2YXIgbWFqaCA9IChhaCAmIGJoKSBeIChhaCAmIGNoKSBeIChiaCAmIGNoKTtcblx0ICAgICAgICAgICAgICAgIHZhciBtYWpsID0gKGFsICYgYmwpIF4gKGFsICYgY2wpIF4gKGJsICYgY2wpO1xuXG5cdCAgICAgICAgICAgICAgICB2YXIgc2lnbWEwaCA9ICgoYWggPj4+IDI4KSB8IChhbCA8PCA0KSkgIF4gKChhaCA8PCAzMCkgIHwgKGFsID4+PiAyKSkgXiAoKGFoIDw8IDI1KSB8IChhbCA+Pj4gNykpO1xuXHQgICAgICAgICAgICAgICAgdmFyIHNpZ21hMGwgPSAoKGFsID4+PiAyOCkgfCAoYWggPDwgNCkpICBeICgoYWwgPDwgMzApICB8IChhaCA+Pj4gMikpIF4gKChhbCA8PCAyNSkgfCAoYWggPj4+IDcpKTtcblx0ICAgICAgICAgICAgICAgIHZhciBzaWdtYTFoID0gKChlaCA+Pj4gMTQpIHwgKGVsIDw8IDE4KSkgXiAoKGVoID4+PiAxOCkgfCAoZWwgPDwgMTQpKSBeICgoZWggPDwgMjMpIHwgKGVsID4+PiA5KSk7XG5cdCAgICAgICAgICAgICAgICB2YXIgc2lnbWExbCA9ICgoZWwgPj4+IDE0KSB8IChlaCA8PCAxOCkpIF4gKChlbCA+Pj4gMTgpIHwgKGVoIDw8IDE0KSkgXiAoKGVsIDw8IDIzKSB8IChlaCA+Pj4gOSkpO1xuXG5cdCAgICAgICAgICAgICAgICAvLyB0MSA9IGggKyBzaWdtYTEgKyBjaCArIEtbaV0gKyBXW2ldXG5cdCAgICAgICAgICAgICAgICB2YXIgS2kgID0gS1tpXTtcblx0ICAgICAgICAgICAgICAgIHZhciBLaWggPSBLaS5oaWdoO1xuXHQgICAgICAgICAgICAgICAgdmFyIEtpbCA9IEtpLmxvdztcblxuXHQgICAgICAgICAgICAgICAgdmFyIHQxbCA9IGhsICsgc2lnbWExbDtcblx0ICAgICAgICAgICAgICAgIHZhciB0MWggPSBoaCArIHNpZ21hMWggKyAoKHQxbCA+Pj4gMCkgPCAoaGwgPj4+IDApID8gMSA6IDApO1xuXHQgICAgICAgICAgICAgICAgdmFyIHQxbCA9IHQxbCArIGNobDtcblx0ICAgICAgICAgICAgICAgIHZhciB0MWggPSB0MWggKyBjaGggKyAoKHQxbCA+Pj4gMCkgPCAoY2hsID4+PiAwKSA/IDEgOiAwKTtcblx0ICAgICAgICAgICAgICAgIHZhciB0MWwgPSB0MWwgKyBLaWw7XG5cdCAgICAgICAgICAgICAgICB2YXIgdDFoID0gdDFoICsgS2loICsgKCh0MWwgPj4+IDApIDwgKEtpbCA+Pj4gMCkgPyAxIDogMCk7XG5cdCAgICAgICAgICAgICAgICB2YXIgdDFsID0gdDFsICsgV2lsO1xuXHQgICAgICAgICAgICAgICAgdmFyIHQxaCA9IHQxaCArIFdpaCArICgodDFsID4+PiAwKSA8IChXaWwgPj4+IDApID8gMSA6IDApO1xuXG5cdCAgICAgICAgICAgICAgICAvLyB0MiA9IHNpZ21hMCArIG1halxuXHQgICAgICAgICAgICAgICAgdmFyIHQybCA9IHNpZ21hMGwgKyBtYWpsO1xuXHQgICAgICAgICAgICAgICAgdmFyIHQyaCA9IHNpZ21hMGggKyBtYWpoICsgKCh0MmwgPj4+IDApIDwgKHNpZ21hMGwgPj4+IDApID8gMSA6IDApO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBVcGRhdGUgd29ya2luZyB2YXJpYWJsZXNcblx0ICAgICAgICAgICAgICAgIGhoID0gZ2g7XG5cdCAgICAgICAgICAgICAgICBobCA9IGdsO1xuXHQgICAgICAgICAgICAgICAgZ2ggPSBmaDtcblx0ICAgICAgICAgICAgICAgIGdsID0gZmw7XG5cdCAgICAgICAgICAgICAgICBmaCA9IGVoO1xuXHQgICAgICAgICAgICAgICAgZmwgPSBlbDtcblx0ICAgICAgICAgICAgICAgIGVsID0gKGRsICsgdDFsKSB8IDA7XG5cdCAgICAgICAgICAgICAgICBlaCA9IChkaCArIHQxaCArICgoZWwgPj4+IDApIDwgKGRsID4+PiAwKSA/IDEgOiAwKSkgfCAwO1xuXHQgICAgICAgICAgICAgICAgZGggPSBjaDtcblx0ICAgICAgICAgICAgICAgIGRsID0gY2w7XG5cdCAgICAgICAgICAgICAgICBjaCA9IGJoO1xuXHQgICAgICAgICAgICAgICAgY2wgPSBibDtcblx0ICAgICAgICAgICAgICAgIGJoID0gYWg7XG5cdCAgICAgICAgICAgICAgICBibCA9IGFsO1xuXHQgICAgICAgICAgICAgICAgYWwgPSAodDFsICsgdDJsKSB8IDA7XG5cdCAgICAgICAgICAgICAgICBhaCA9ICh0MWggKyB0MmggKyAoKGFsID4+PiAwKSA8ICh0MWwgPj4+IDApID8gMSA6IDApKSB8IDA7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBJbnRlcm1lZGlhdGUgaGFzaCB2YWx1ZVxuXHQgICAgICAgICAgICBIMGwgPSBIMC5sb3cgID0gKEgwbCArIGFsKTtcblx0ICAgICAgICAgICAgSDAuaGlnaCA9IChIMGggKyBhaCArICgoSDBsID4+PiAwKSA8IChhbCA+Pj4gMCkgPyAxIDogMCkpO1xuXHQgICAgICAgICAgICBIMWwgPSBIMS5sb3cgID0gKEgxbCArIGJsKTtcblx0ICAgICAgICAgICAgSDEuaGlnaCA9IChIMWggKyBiaCArICgoSDFsID4+PiAwKSA8IChibCA+Pj4gMCkgPyAxIDogMCkpO1xuXHQgICAgICAgICAgICBIMmwgPSBIMi5sb3cgID0gKEgybCArIGNsKTtcblx0ICAgICAgICAgICAgSDIuaGlnaCA9IChIMmggKyBjaCArICgoSDJsID4+PiAwKSA8IChjbCA+Pj4gMCkgPyAxIDogMCkpO1xuXHQgICAgICAgICAgICBIM2wgPSBIMy5sb3cgID0gKEgzbCArIGRsKTtcblx0ICAgICAgICAgICAgSDMuaGlnaCA9IChIM2ggKyBkaCArICgoSDNsID4+PiAwKSA8IChkbCA+Pj4gMCkgPyAxIDogMCkpO1xuXHQgICAgICAgICAgICBINGwgPSBINC5sb3cgID0gKEg0bCArIGVsKTtcblx0ICAgICAgICAgICAgSDQuaGlnaCA9IChINGggKyBlaCArICgoSDRsID4+PiAwKSA8IChlbCA+Pj4gMCkgPyAxIDogMCkpO1xuXHQgICAgICAgICAgICBINWwgPSBINS5sb3cgID0gKEg1bCArIGZsKTtcblx0ICAgICAgICAgICAgSDUuaGlnaCA9IChINWggKyBmaCArICgoSDVsID4+PiAwKSA8IChmbCA+Pj4gMCkgPyAxIDogMCkpO1xuXHQgICAgICAgICAgICBINmwgPSBINi5sb3cgID0gKEg2bCArIGdsKTtcblx0ICAgICAgICAgICAgSDYuaGlnaCA9IChINmggKyBnaCArICgoSDZsID4+PiAwKSA8IChnbCA+Pj4gMCkgPyAxIDogMCkpO1xuXHQgICAgICAgICAgICBIN2wgPSBINy5sb3cgID0gKEg3bCArIGhsKTtcblx0ICAgICAgICAgICAgSDcuaGlnaCA9IChIN2ggKyBoaCArICgoSDdsID4+PiAwKSA8IChobCA+Pj4gMCkgPyAxIDogMCkpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9GaW5hbGl6ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLl9kYXRhO1xuXHQgICAgICAgICAgICB2YXIgZGF0YVdvcmRzID0gZGF0YS53b3JkcztcblxuXHQgICAgICAgICAgICB2YXIgbkJpdHNUb3RhbCA9IHRoaXMuX25EYXRhQnl0ZXMgKiA4O1xuXHQgICAgICAgICAgICB2YXIgbkJpdHNMZWZ0ID0gZGF0YS5zaWdCeXRlcyAqIDg7XG5cblx0ICAgICAgICAgICAgLy8gQWRkIHBhZGRpbmdcblx0ICAgICAgICAgICAgZGF0YVdvcmRzW25CaXRzTGVmdCA+Pj4gNV0gfD0gMHg4MCA8PCAoMjQgLSBuQml0c0xlZnQgJSAzMik7XG5cdCAgICAgICAgICAgIGRhdGFXb3Jkc1soKChuQml0c0xlZnQgKyAxMjgpID4+PiAxMCkgPDwgNSkgKyAzMF0gPSBNYXRoLmZsb29yKG5CaXRzVG90YWwgLyAweDEwMDAwMDAwMCk7XG5cdCAgICAgICAgICAgIGRhdGFXb3Jkc1soKChuQml0c0xlZnQgKyAxMjgpID4+PiAxMCkgPDwgNSkgKyAzMV0gPSBuQml0c1RvdGFsO1xuXHQgICAgICAgICAgICBkYXRhLnNpZ0J5dGVzID0gZGF0YVdvcmRzLmxlbmd0aCAqIDQ7XG5cblx0ICAgICAgICAgICAgLy8gSGFzaCBmaW5hbCBibG9ja3Ncblx0ICAgICAgICAgICAgdGhpcy5fcHJvY2VzcygpO1xuXG5cdCAgICAgICAgICAgIC8vIENvbnZlcnQgaGFzaCB0byAzMi1iaXQgd29yZCBhcnJheSBiZWZvcmUgcmV0dXJuaW5nXG5cdCAgICAgICAgICAgIHZhciBoYXNoID0gdGhpcy5faGFzaC50b1gzMigpO1xuXG5cdCAgICAgICAgICAgIC8vIFJldHVybiBmaW5hbCBjb21wdXRlZCBoYXNoXG5cdCAgICAgICAgICAgIHJldHVybiBoYXNoO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBjbG9uZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB2YXIgY2xvbmUgPSBIYXNoZXIuY2xvbmUuY2FsbCh0aGlzKTtcblx0ICAgICAgICAgICAgY2xvbmUuX2hhc2ggPSB0aGlzLl9oYXNoLmNsb25lKCk7XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGNsb25lO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBibG9ja1NpemU6IDEwMjQvMzJcblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9uIHRvIHRoZSBoYXNoZXIncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBoYXNoLlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIGhhc2guXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBoYXNoID0gQ3J5cHRvSlMuU0hBNTEyKCdtZXNzYWdlJyk7XG5cdCAgICAgKiAgICAgdmFyIGhhc2ggPSBDcnlwdG9KUy5TSEE1MTIod29yZEFycmF5KTtcblx0ICAgICAqL1xuXHQgICAgQy5TSEE1MTIgPSBIYXNoZXIuX2NyZWF0ZUhlbHBlcihTSEE1MTIpO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9uIHRvIHRoZSBITUFDJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gaGFzaC5cblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30ga2V5IFRoZSBzZWNyZXQga2V5LlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIEhNQUMuXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBobWFjID0gQ3J5cHRvSlMuSG1hY1NIQTUxMihtZXNzYWdlLCBrZXkpO1xuXHQgICAgICovXG5cdCAgICBDLkhtYWNTSEE1MTIgPSBIYXNoZXIuX2NyZWF0ZUhtYWNIZWxwZXIoU0hBNTEyKTtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5TSEE1MTI7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vZW5jLWJhc2U2NFwiKSwgcmVxdWlyZShcIi4vbWQ1XCIpLCByZXF1aXJlKFwiLi9ldnBrZGZcIiksIHJlcXVpcmUoXCIuL2NpcGhlci1jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL2VuYy1iYXNlNjRcIiwgXCIuL21kNVwiLCBcIi4vZXZwa2RmXCIsIFwiLi9jaXBoZXItY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIFdvcmRBcnJheSA9IENfbGliLldvcmRBcnJheTtcblx0ICAgIHZhciBCbG9ja0NpcGhlciA9IENfbGliLkJsb2NrQ2lwaGVyO1xuXHQgICAgdmFyIENfYWxnbyA9IEMuYWxnbztcblxuXHQgICAgLy8gUGVybXV0ZWQgQ2hvaWNlIDEgY29uc3RhbnRzXG5cdCAgICB2YXIgUEMxID0gW1xuXHQgICAgICAgIDU3LCA0OSwgNDEsIDMzLCAyNSwgMTcsIDksICAxLFxuXHQgICAgICAgIDU4LCA1MCwgNDIsIDM0LCAyNiwgMTgsIDEwLCAyLFxuXHQgICAgICAgIDU5LCA1MSwgNDMsIDM1LCAyNywgMTksIDExLCAzLFxuXHQgICAgICAgIDYwLCA1MiwgNDQsIDM2LCA2MywgNTUsIDQ3LCAzOSxcblx0ICAgICAgICAzMSwgMjMsIDE1LCA3LCAgNjIsIDU0LCA0NiwgMzgsXG5cdCAgICAgICAgMzAsIDIyLCAxNCwgNiwgIDYxLCA1MywgNDUsIDM3LFxuXHQgICAgICAgIDI5LCAyMSwgMTMsIDUsICAyOCwgMjAsIDEyLCA0XG5cdCAgICBdO1xuXG5cdCAgICAvLyBQZXJtdXRlZCBDaG9pY2UgMiBjb25zdGFudHNcblx0ICAgIHZhciBQQzIgPSBbXG5cdCAgICAgICAgMTQsIDE3LCAxMSwgMjQsIDEsICA1LFxuXHQgICAgICAgIDMsICAyOCwgMTUsIDYsICAyMSwgMTAsXG5cdCAgICAgICAgMjMsIDE5LCAxMiwgNCwgIDI2LCA4LFxuXHQgICAgICAgIDE2LCA3LCAgMjcsIDIwLCAxMywgMixcblx0ICAgICAgICA0MSwgNTIsIDMxLCAzNywgNDcsIDU1LFxuXHQgICAgICAgIDMwLCA0MCwgNTEsIDQ1LCAzMywgNDgsXG5cdCAgICAgICAgNDQsIDQ5LCAzOSwgNTYsIDM0LCA1Myxcblx0ICAgICAgICA0NiwgNDIsIDUwLCAzNiwgMjksIDMyXG5cdCAgICBdO1xuXG5cdCAgICAvLyBDdW11bGF0aXZlIGJpdCBzaGlmdCBjb25zdGFudHNcblx0ICAgIHZhciBCSVRfU0hJRlRTID0gWzEsICAyLCAgNCwgIDYsICA4LCAgMTAsIDEyLCAxNCwgMTUsIDE3LCAxOSwgMjEsIDIzLCAyNSwgMjcsIDI4XTtcblxuXHQgICAgLy8gU0JPWGVzIGFuZCByb3VuZCBwZXJtdXRhdGlvbiBjb25zdGFudHNcblx0ICAgIHZhciBTQk9YX1AgPSBbXG5cdCAgICAgICAge1xuXHQgICAgICAgICAgICAweDA6IDB4ODA4MjAwLFxuXHQgICAgICAgICAgICAweDEwMDAwMDAwOiAweDgwMDAsXG5cdCAgICAgICAgICAgIDB4MjAwMDAwMDA6IDB4ODA4MDAyLFxuXHQgICAgICAgICAgICAweDMwMDAwMDAwOiAweDIsXG5cdCAgICAgICAgICAgIDB4NDAwMDAwMDA6IDB4MjAwLFxuXHQgICAgICAgICAgICAweDUwMDAwMDAwOiAweDgwODIwMixcblx0ICAgICAgICAgICAgMHg2MDAwMDAwMDogMHg4MDAyMDIsXG5cdCAgICAgICAgICAgIDB4NzAwMDAwMDA6IDB4ODAwMDAwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDAwOiAweDIwMixcblx0ICAgICAgICAgICAgMHg5MDAwMDAwMDogMHg4MDAyMDAsXG5cdCAgICAgICAgICAgIDB4YTAwMDAwMDA6IDB4ODIwMCxcblx0ICAgICAgICAgICAgMHhiMDAwMDAwMDogMHg4MDgwMDAsXG5cdCAgICAgICAgICAgIDB4YzAwMDAwMDA6IDB4ODAwMixcblx0ICAgICAgICAgICAgMHhkMDAwMDAwMDogMHg4MDAwMDIsXG5cdCAgICAgICAgICAgIDB4ZTAwMDAwMDA6IDB4MCxcblx0ICAgICAgICAgICAgMHhmMDAwMDAwMDogMHg4MjAyLFxuXHQgICAgICAgICAgICAweDgwMDAwMDA6IDB4MCxcblx0ICAgICAgICAgICAgMHgxODAwMDAwMDogMHg4MDgyMDIsXG5cdCAgICAgICAgICAgIDB4MjgwMDAwMDA6IDB4ODIwMixcblx0ICAgICAgICAgICAgMHgzODAwMDAwMDogMHg4MDAwLFxuXHQgICAgICAgICAgICAweDQ4MDAwMDAwOiAweDgwODIwMCxcblx0ICAgICAgICAgICAgMHg1ODAwMDAwMDogMHgyMDAsXG5cdCAgICAgICAgICAgIDB4NjgwMDAwMDA6IDB4ODA4MDAyLFxuXHQgICAgICAgICAgICAweDc4MDAwMDAwOiAweDIsXG5cdCAgICAgICAgICAgIDB4ODgwMDAwMDA6IDB4ODAwMjAwLFxuXHQgICAgICAgICAgICAweDk4MDAwMDAwOiAweDgyMDAsXG5cdCAgICAgICAgICAgIDB4YTgwMDAwMDA6IDB4ODA4MDAwLFxuXHQgICAgICAgICAgICAweGI4MDAwMDAwOiAweDgwMDIwMixcblx0ICAgICAgICAgICAgMHhjODAwMDAwMDogMHg4MDAwMDIsXG5cdCAgICAgICAgICAgIDB4ZDgwMDAwMDA6IDB4ODAwMixcblx0ICAgICAgICAgICAgMHhlODAwMDAwMDogMHgyMDIsXG5cdCAgICAgICAgICAgIDB4ZjgwMDAwMDA6IDB4ODAwMDAwLFxuXHQgICAgICAgICAgICAweDE6IDB4ODAwMCxcblx0ICAgICAgICAgICAgMHgxMDAwMDAwMTogMHgyLFxuXHQgICAgICAgICAgICAweDIwMDAwMDAxOiAweDgwODIwMCxcblx0ICAgICAgICAgICAgMHgzMDAwMDAwMTogMHg4MDAwMDAsXG5cdCAgICAgICAgICAgIDB4NDAwMDAwMDE6IDB4ODA4MDAyLFxuXHQgICAgICAgICAgICAweDUwMDAwMDAxOiAweDgyMDAsXG5cdCAgICAgICAgICAgIDB4NjAwMDAwMDE6IDB4MjAwLFxuXHQgICAgICAgICAgICAweDcwMDAwMDAxOiAweDgwMDIwMixcblx0ICAgICAgICAgICAgMHg4MDAwMDAwMTogMHg4MDgyMDIsXG5cdCAgICAgICAgICAgIDB4OTAwMDAwMDE6IDB4ODA4MDAwLFxuXHQgICAgICAgICAgICAweGEwMDAwMDAxOiAweDgwMDAwMixcblx0ICAgICAgICAgICAgMHhiMDAwMDAwMTogMHg4MjAyLFxuXHQgICAgICAgICAgICAweGMwMDAwMDAxOiAweDIwMixcblx0ICAgICAgICAgICAgMHhkMDAwMDAwMTogMHg4MDAyMDAsXG5cdCAgICAgICAgICAgIDB4ZTAwMDAwMDE6IDB4ODAwMixcblx0ICAgICAgICAgICAgMHhmMDAwMDAwMTogMHgwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDE6IDB4ODA4MjAyLFxuXHQgICAgICAgICAgICAweDE4MDAwMDAxOiAweDgwODAwMCxcblx0ICAgICAgICAgICAgMHgyODAwMDAwMTogMHg4MDAwMDAsXG5cdCAgICAgICAgICAgIDB4MzgwMDAwMDE6IDB4MjAwLFxuXHQgICAgICAgICAgICAweDQ4MDAwMDAxOiAweDgwMDAsXG5cdCAgICAgICAgICAgIDB4NTgwMDAwMDE6IDB4ODAwMDAyLFxuXHQgICAgICAgICAgICAweDY4MDAwMDAxOiAweDIsXG5cdCAgICAgICAgICAgIDB4NzgwMDAwMDE6IDB4ODIwMixcblx0ICAgICAgICAgICAgMHg4ODAwMDAwMTogMHg4MDAyLFxuXHQgICAgICAgICAgICAweDk4MDAwMDAxOiAweDgwMDIwMixcblx0ICAgICAgICAgICAgMHhhODAwMDAwMTogMHgyMDIsXG5cdCAgICAgICAgICAgIDB4YjgwMDAwMDE6IDB4ODA4MjAwLFxuXHQgICAgICAgICAgICAweGM4MDAwMDAxOiAweDgwMDIwMCxcblx0ICAgICAgICAgICAgMHhkODAwMDAwMTogMHgwLFxuXHQgICAgICAgICAgICAweGU4MDAwMDAxOiAweDgyMDAsXG5cdCAgICAgICAgICAgIDB4ZjgwMDAwMDE6IDB4ODA4MDAyXG5cdCAgICAgICAgfSxcblx0ICAgICAgICB7XG5cdCAgICAgICAgICAgIDB4MDogMHg0MDA4NDAxMCxcblx0ICAgICAgICAgICAgMHgxMDAwMDAwOiAweDQwMDAsXG5cdCAgICAgICAgICAgIDB4MjAwMDAwMDogMHg4MDAwMCxcblx0ICAgICAgICAgICAgMHgzMDAwMDAwOiAweDQwMDgwMDEwLFxuXHQgICAgICAgICAgICAweDQwMDAwMDA6IDB4NDAwMDAwMTAsXG5cdCAgICAgICAgICAgIDB4NTAwMDAwMDogMHg0MDA4NDAwMCxcblx0ICAgICAgICAgICAgMHg2MDAwMDAwOiAweDQwMDA0MDAwLFxuXHQgICAgICAgICAgICAweDcwMDAwMDA6IDB4MTAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMDogMHg4NDAwMCxcblx0ICAgICAgICAgICAgMHg5MDAwMDAwOiAweDQwMDA0MDEwLFxuXHQgICAgICAgICAgICAweGEwMDAwMDA6IDB4NDAwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4YjAwMDAwMDogMHg4NDAxMCxcblx0ICAgICAgICAgICAgMHhjMDAwMDAwOiAweDgwMDEwLFxuXHQgICAgICAgICAgICAweGQwMDAwMDA6IDB4MCxcblx0ICAgICAgICAgICAgMHhlMDAwMDAwOiAweDQwMTAsXG5cdCAgICAgICAgICAgIDB4ZjAwMDAwMDogMHg0MDA4MDAwMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDA6IDB4NDAwMDQwMDAsXG5cdCAgICAgICAgICAgIDB4MTgwMDAwMDogMHg4NDAxMCxcblx0ICAgICAgICAgICAgMHgyODAwMDAwOiAweDEwLFxuXHQgICAgICAgICAgICAweDM4MDAwMDA6IDB4NDAwMDQwMTAsXG5cdCAgICAgICAgICAgIDB4NDgwMDAwMDogMHg0MDA4NDAxMCxcblx0ICAgICAgICAgICAgMHg1ODAwMDAwOiAweDQwMDAwMDAwLFxuXHQgICAgICAgICAgICAweDY4MDAwMDA6IDB4ODAwMDAsXG5cdCAgICAgICAgICAgIDB4NzgwMDAwMDogMHg0MDA4MDAxMCxcblx0ICAgICAgICAgICAgMHg4ODAwMDAwOiAweDgwMDEwLFxuXHQgICAgICAgICAgICAweDk4MDAwMDA6IDB4MCxcblx0ICAgICAgICAgICAgMHhhODAwMDAwOiAweDQwMDAsXG5cdCAgICAgICAgICAgIDB4YjgwMDAwMDogMHg0MDA4MDAwMCxcblx0ICAgICAgICAgICAgMHhjODAwMDAwOiAweDQwMDAwMDEwLFxuXHQgICAgICAgICAgICAweGQ4MDAwMDA6IDB4ODQwMDAsXG5cdCAgICAgICAgICAgIDB4ZTgwMDAwMDogMHg0MDA4NDAwMCxcblx0ICAgICAgICAgICAgMHhmODAwMDAwOiAweDQwMTAsXG5cdCAgICAgICAgICAgIDB4MTAwMDAwMDA6IDB4MCxcblx0ICAgICAgICAgICAgMHgxMTAwMDAwMDogMHg0MDA4MDAxMCxcblx0ICAgICAgICAgICAgMHgxMjAwMDAwMDogMHg0MDAwNDAxMCxcblx0ICAgICAgICAgICAgMHgxMzAwMDAwMDogMHg0MDA4NDAwMCxcblx0ICAgICAgICAgICAgMHgxNDAwMDAwMDogMHg0MDA4MDAwMCxcblx0ICAgICAgICAgICAgMHgxNTAwMDAwMDogMHgxMCxcblx0ICAgICAgICAgICAgMHgxNjAwMDAwMDogMHg4NDAxMCxcblx0ICAgICAgICAgICAgMHgxNzAwMDAwMDogMHg0MDAwLFxuXHQgICAgICAgICAgICAweDE4MDAwMDAwOiAweDQwMTAsXG5cdCAgICAgICAgICAgIDB4MTkwMDAwMDA6IDB4ODAwMDAsXG5cdCAgICAgICAgICAgIDB4MWEwMDAwMDA6IDB4ODAwMTAsXG5cdCAgICAgICAgICAgIDB4MWIwMDAwMDA6IDB4NDAwMDAwMTAsXG5cdCAgICAgICAgICAgIDB4MWMwMDAwMDA6IDB4ODQwMDAsXG5cdCAgICAgICAgICAgIDB4MWQwMDAwMDA6IDB4NDAwMDQwMDAsXG5cdCAgICAgICAgICAgIDB4MWUwMDAwMDA6IDB4NDAwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MWYwMDAwMDA6IDB4NDAwODQwMTAsXG5cdCAgICAgICAgICAgIDB4MTA4MDAwMDA6IDB4ODQwMTAsXG5cdCAgICAgICAgICAgIDB4MTE4MDAwMDA6IDB4ODAwMDAsXG5cdCAgICAgICAgICAgIDB4MTI4MDAwMDA6IDB4NDAwODAwMDAsXG5cdCAgICAgICAgICAgIDB4MTM4MDAwMDA6IDB4NDAwMCxcblx0ICAgICAgICAgICAgMHgxNDgwMDAwMDogMHg0MDAwNDAwMCxcblx0ICAgICAgICAgICAgMHgxNTgwMDAwMDogMHg0MDA4NDAxMCxcblx0ICAgICAgICAgICAgMHgxNjgwMDAwMDogMHgxMCxcblx0ICAgICAgICAgICAgMHgxNzgwMDAwMDogMHg0MDAwMDAwMCxcblx0ICAgICAgICAgICAgMHgxODgwMDAwMDogMHg0MDA4NDAwMCxcblx0ICAgICAgICAgICAgMHgxOTgwMDAwMDogMHg0MDAwMDAxMCxcblx0ICAgICAgICAgICAgMHgxYTgwMDAwMDogMHg0MDAwNDAxMCxcblx0ICAgICAgICAgICAgMHgxYjgwMDAwMDogMHg4MDAxMCxcblx0ICAgICAgICAgICAgMHgxYzgwMDAwMDogMHgwLFxuXHQgICAgICAgICAgICAweDFkODAwMDAwOiAweDQwMTAsXG5cdCAgICAgICAgICAgIDB4MWU4MDAwMDA6IDB4NDAwODAwMTAsXG5cdCAgICAgICAgICAgIDB4MWY4MDAwMDA6IDB4ODQwMDBcblx0ICAgICAgICB9LFxuXHQgICAgICAgIHtcblx0ICAgICAgICAgICAgMHgwOiAweDEwNCxcblx0ICAgICAgICAgICAgMHgxMDAwMDA6IDB4MCxcblx0ICAgICAgICAgICAgMHgyMDAwMDA6IDB4NDAwMDEwMCxcblx0ICAgICAgICAgICAgMHgzMDAwMDA6IDB4MTAxMDQsXG5cdCAgICAgICAgICAgIDB4NDAwMDAwOiAweDEwMDA0LFxuXHQgICAgICAgICAgICAweDUwMDAwMDogMHg0MDAwMDA0LFxuXHQgICAgICAgICAgICAweDYwMDAwMDogMHg0MDEwMTA0LFxuXHQgICAgICAgICAgICAweDcwMDAwMDogMHg0MDEwMDAwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDogMHg0MDAwMDAwLFxuXHQgICAgICAgICAgICAweDkwMDAwMDogMHg0MDEwMTAwLFxuXHQgICAgICAgICAgICAweGEwMDAwMDogMHgxMDEwMCxcblx0ICAgICAgICAgICAgMHhiMDAwMDA6IDB4NDAxMDAwNCxcblx0ICAgICAgICAgICAgMHhjMDAwMDA6IDB4NDAwMDEwNCxcblx0ICAgICAgICAgICAgMHhkMDAwMDA6IDB4MTAwMDAsXG5cdCAgICAgICAgICAgIDB4ZTAwMDAwOiAweDQsXG5cdCAgICAgICAgICAgIDB4ZjAwMDAwOiAweDEwMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDogMHg0MDEwMTAwLFxuXHQgICAgICAgICAgICAweDE4MDAwMDogMHg0MDEwMDA0LFxuXHQgICAgICAgICAgICAweDI4MDAwMDogMHgwLFxuXHQgICAgICAgICAgICAweDM4MDAwMDogMHg0MDAwMTAwLFxuXHQgICAgICAgICAgICAweDQ4MDAwMDogMHg0MDAwMDA0LFxuXHQgICAgICAgICAgICAweDU4MDAwMDogMHgxMDAwMCxcblx0ICAgICAgICAgICAgMHg2ODAwMDA6IDB4MTAwMDQsXG5cdCAgICAgICAgICAgIDB4NzgwMDAwOiAweDEwNCxcblx0ICAgICAgICAgICAgMHg4ODAwMDA6IDB4NCxcblx0ICAgICAgICAgICAgMHg5ODAwMDA6IDB4MTAwLFxuXHQgICAgICAgICAgICAweGE4MDAwMDogMHg0MDEwMDAwLFxuXHQgICAgICAgICAgICAweGI4MDAwMDogMHgxMDEwNCxcblx0ICAgICAgICAgICAgMHhjODAwMDA6IDB4MTAxMDAsXG5cdCAgICAgICAgICAgIDB4ZDgwMDAwOiAweDQwMDAxMDQsXG5cdCAgICAgICAgICAgIDB4ZTgwMDAwOiAweDQwMTAxMDQsXG5cdCAgICAgICAgICAgIDB4ZjgwMDAwOiAweDQwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTAwMDAwMDogMHg0MDEwMTAwLFxuXHQgICAgICAgICAgICAweDExMDAwMDA6IDB4MTAwMDQsXG5cdCAgICAgICAgICAgIDB4MTIwMDAwMDogMHgxMDAwMCxcblx0ICAgICAgICAgICAgMHgxMzAwMDAwOiAweDQwMDAxMDAsXG5cdCAgICAgICAgICAgIDB4MTQwMDAwMDogMHgxMDAsXG5cdCAgICAgICAgICAgIDB4MTUwMDAwMDogMHg0MDEwMTA0LFxuXHQgICAgICAgICAgICAweDE2MDAwMDA6IDB4NDAwMDAwNCxcblx0ICAgICAgICAgICAgMHgxNzAwMDAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4MTgwMDAwMDogMHg0MDAwMTA0LFxuXHQgICAgICAgICAgICAweDE5MDAwMDA6IDB4NDAwMDAwMCxcblx0ICAgICAgICAgICAgMHgxYTAwMDAwOiAweDQsXG5cdCAgICAgICAgICAgIDB4MWIwMDAwMDogMHgxMDEwMCxcblx0ICAgICAgICAgICAgMHgxYzAwMDAwOiAweDQwMTAwMDAsXG5cdCAgICAgICAgICAgIDB4MWQwMDAwMDogMHgxMDQsXG5cdCAgICAgICAgICAgIDB4MWUwMDAwMDogMHgxMDEwNCxcblx0ICAgICAgICAgICAgMHgxZjAwMDAwOiAweDQwMTAwMDQsXG5cdCAgICAgICAgICAgIDB4MTA4MDAwMDogMHg0MDAwMDAwLFxuXHQgICAgICAgICAgICAweDExODAwMDA6IDB4MTA0LFxuXHQgICAgICAgICAgICAweDEyODAwMDA6IDB4NDAxMDEwMCxcblx0ICAgICAgICAgICAgMHgxMzgwMDAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4MTQ4MDAwMDogMHgxMDAwNCxcblx0ICAgICAgICAgICAgMHgxNTgwMDAwOiAweDQwMDAxMDAsXG5cdCAgICAgICAgICAgIDB4MTY4MDAwMDogMHgxMDAsXG5cdCAgICAgICAgICAgIDB4MTc4MDAwMDogMHg0MDEwMDA0LFxuXHQgICAgICAgICAgICAweDE4ODAwMDA6IDB4MTAwMDAsXG5cdCAgICAgICAgICAgIDB4MTk4MDAwMDogMHg0MDEwMTA0LFxuXHQgICAgICAgICAgICAweDFhODAwMDA6IDB4MTAxMDQsXG5cdCAgICAgICAgICAgIDB4MWI4MDAwMDogMHg0MDAwMDA0LFxuXHQgICAgICAgICAgICAweDFjODAwMDA6IDB4NDAwMDEwNCxcblx0ICAgICAgICAgICAgMHgxZDgwMDAwOiAweDQwMTAwMDAsXG5cdCAgICAgICAgICAgIDB4MWU4MDAwMDogMHg0LFxuXHQgICAgICAgICAgICAweDFmODAwMDA6IDB4MTAxMDBcblx0ICAgICAgICB9LFxuXHQgICAgICAgIHtcblx0ICAgICAgICAgICAgMHgwOiAweDgwNDAxMDAwLFxuXHQgICAgICAgICAgICAweDEwMDAwOiAweDgwMDAxMDQwLFxuXHQgICAgICAgICAgICAweDIwMDAwOiAweDQwMTA0MCxcblx0ICAgICAgICAgICAgMHgzMDAwMDogMHg4MDQwMDAwMCxcblx0ICAgICAgICAgICAgMHg0MDAwMDogMHgwLFxuXHQgICAgICAgICAgICAweDUwMDAwOiAweDQwMTAwMCxcblx0ICAgICAgICAgICAgMHg2MDAwMDogMHg4MDAwMDA0MCxcblx0ICAgICAgICAgICAgMHg3MDAwMDogMHg0MDAwNDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDA6IDB4ODAwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4OTAwMDA6IDB4NDAwMDAwLFxuXHQgICAgICAgICAgICAweGEwMDAwOiAweDQwLFxuXHQgICAgICAgICAgICAweGIwMDAwOiAweDgwMDAxMDAwLFxuXHQgICAgICAgICAgICAweGMwMDAwOiAweDgwNDAwMDQwLFxuXHQgICAgICAgICAgICAweGQwMDAwOiAweDEwNDAsXG5cdCAgICAgICAgICAgIDB4ZTAwMDA6IDB4MTAwMCxcblx0ICAgICAgICAgICAgMHhmMDAwMDogMHg4MDQwMTA0MCxcblx0ICAgICAgICAgICAgMHg4MDAwOiAweDgwMDAxMDQwLFxuXHQgICAgICAgICAgICAweDE4MDAwOiAweDQwLFxuXHQgICAgICAgICAgICAweDI4MDAwOiAweDgwNDAwMDQwLFxuXHQgICAgICAgICAgICAweDM4MDAwOiAweDgwMDAxMDAwLFxuXHQgICAgICAgICAgICAweDQ4MDAwOiAweDQwMTAwMCxcblx0ICAgICAgICAgICAgMHg1ODAwMDogMHg4MDQwMTA0MCxcblx0ICAgICAgICAgICAgMHg2ODAwMDogMHgwLFxuXHQgICAgICAgICAgICAweDc4MDAwOiAweDgwNDAwMDAwLFxuXHQgICAgICAgICAgICAweDg4MDAwOiAweDEwMDAsXG5cdCAgICAgICAgICAgIDB4OTgwMDA6IDB4ODA0MDEwMDAsXG5cdCAgICAgICAgICAgIDB4YTgwMDA6IDB4NDAwMDAwLFxuXHQgICAgICAgICAgICAweGI4MDAwOiAweDEwNDAsXG5cdCAgICAgICAgICAgIDB4YzgwMDA6IDB4ODAwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4ZDgwMDA6IDB4NDAwMDQwLFxuXHQgICAgICAgICAgICAweGU4MDAwOiAweDQwMTA0MCxcblx0ICAgICAgICAgICAgMHhmODAwMDogMHg4MDAwMDA0MCxcblx0ICAgICAgICAgICAgMHgxMDAwMDA6IDB4NDAwMDQwLFxuXHQgICAgICAgICAgICAweDExMDAwMDogMHg0MDEwMDAsXG5cdCAgICAgICAgICAgIDB4MTIwMDAwOiAweDgwMDAwMDQwLFxuXHQgICAgICAgICAgICAweDEzMDAwMDogMHgwLFxuXHQgICAgICAgICAgICAweDE0MDAwMDogMHgxMDQwLFxuXHQgICAgICAgICAgICAweDE1MDAwMDogMHg4MDQwMDA0MCxcblx0ICAgICAgICAgICAgMHgxNjAwMDA6IDB4ODA0MDEwMDAsXG5cdCAgICAgICAgICAgIDB4MTcwMDAwOiAweDgwMDAxMDQwLFxuXHQgICAgICAgICAgICAweDE4MDAwMDogMHg4MDQwMTA0MCxcblx0ICAgICAgICAgICAgMHgxOTAwMDA6IDB4ODAwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MWEwMDAwOiAweDgwNDAwMDAwLFxuXHQgICAgICAgICAgICAweDFiMDAwMDogMHg0MDEwNDAsXG5cdCAgICAgICAgICAgIDB4MWMwMDAwOiAweDgwMDAxMDAwLFxuXHQgICAgICAgICAgICAweDFkMDAwMDogMHg0MDAwMDAsXG5cdCAgICAgICAgICAgIDB4MWUwMDAwOiAweDQwLFxuXHQgICAgICAgICAgICAweDFmMDAwMDogMHgxMDAwLFxuXHQgICAgICAgICAgICAweDEwODAwMDogMHg4MDQwMDAwMCxcblx0ICAgICAgICAgICAgMHgxMTgwMDA6IDB4ODA0MDEwNDAsXG5cdCAgICAgICAgICAgIDB4MTI4MDAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4MTM4MDAwOiAweDQwMTAwMCxcblx0ICAgICAgICAgICAgMHgxNDgwMDA6IDB4NDAwMDQwLFxuXHQgICAgICAgICAgICAweDE1ODAwMDogMHg4MDAwMDAwMCxcblx0ICAgICAgICAgICAgMHgxNjgwMDA6IDB4ODAwMDEwNDAsXG5cdCAgICAgICAgICAgIDB4MTc4MDAwOiAweDQwLFxuXHQgICAgICAgICAgICAweDE4ODAwMDogMHg4MDAwMDA0MCxcblx0ICAgICAgICAgICAgMHgxOTgwMDA6IDB4MTAwMCxcblx0ICAgICAgICAgICAgMHgxYTgwMDA6IDB4ODAwMDEwMDAsXG5cdCAgICAgICAgICAgIDB4MWI4MDAwOiAweDgwNDAwMDQwLFxuXHQgICAgICAgICAgICAweDFjODAwMDogMHgxMDQwLFxuXHQgICAgICAgICAgICAweDFkODAwMDogMHg4MDQwMTAwMCxcblx0ICAgICAgICAgICAgMHgxZTgwMDA6IDB4NDAwMDAwLFxuXHQgICAgICAgICAgICAweDFmODAwMDogMHg0MDEwNDBcblx0ICAgICAgICB9LFxuXHQgICAgICAgIHtcblx0ICAgICAgICAgICAgMHgwOiAweDgwLFxuXHQgICAgICAgICAgICAweDEwMDA6IDB4MTA0MDAwMCxcblx0ICAgICAgICAgICAgMHgyMDAwOiAweDQwMDAwLFxuXHQgICAgICAgICAgICAweDMwMDA6IDB4MjAwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4NDAwMDogMHgyMDA0MDA4MCxcblx0ICAgICAgICAgICAgMHg1MDAwOiAweDEwMDAwODAsXG5cdCAgICAgICAgICAgIDB4NjAwMDogMHgyMTAwMDA4MCxcblx0ICAgICAgICAgICAgMHg3MDAwOiAweDQwMDgwLFxuXHQgICAgICAgICAgICAweDgwMDA6IDB4MTAwMDAwMCxcblx0ICAgICAgICAgICAgMHg5MDAwOiAweDIwMDQwMDAwLFxuXHQgICAgICAgICAgICAweGEwMDA6IDB4MjAwMDAwODAsXG5cdCAgICAgICAgICAgIDB4YjAwMDogMHgyMTA0MDA4MCxcblx0ICAgICAgICAgICAgMHhjMDAwOiAweDIxMDQwMDAwLFxuXHQgICAgICAgICAgICAweGQwMDA6IDB4MCxcblx0ICAgICAgICAgICAgMHhlMDAwOiAweDEwNDAwODAsXG5cdCAgICAgICAgICAgIDB4ZjAwMDogMHgyMTAwMDAwMCxcblx0ICAgICAgICAgICAgMHg4MDA6IDB4MTA0MDA4MCxcblx0ICAgICAgICAgICAgMHgxODAwOiAweDIxMDAwMDgwLFxuXHQgICAgICAgICAgICAweDI4MDA6IDB4ODAsXG5cdCAgICAgICAgICAgIDB4MzgwMDogMHgxMDQwMDAwLFxuXHQgICAgICAgICAgICAweDQ4MDA6IDB4NDAwMDAsXG5cdCAgICAgICAgICAgIDB4NTgwMDogMHgyMDA0MDA4MCxcblx0ICAgICAgICAgICAgMHg2ODAwOiAweDIxMDQwMDAwLFxuXHQgICAgICAgICAgICAweDc4MDA6IDB4MjAwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4ODgwMDogMHgyMDA0MDAwMCxcblx0ICAgICAgICAgICAgMHg5ODAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4YTgwMDogMHgyMTA0MDA4MCxcblx0ICAgICAgICAgICAgMHhiODAwOiAweDEwMDAwODAsXG5cdCAgICAgICAgICAgIDB4YzgwMDogMHgyMDAwMDA4MCxcblx0ICAgICAgICAgICAgMHhkODAwOiAweDIxMDAwMDAwLFxuXHQgICAgICAgICAgICAweGU4MDA6IDB4MTAwMDAwMCxcblx0ICAgICAgICAgICAgMHhmODAwOiAweDQwMDgwLFxuXHQgICAgICAgICAgICAweDEwMDAwOiAweDQwMDAwLFxuXHQgICAgICAgICAgICAweDExMDAwOiAweDgwLFxuXHQgICAgICAgICAgICAweDEyMDAwOiAweDIwMDAwMDAwLFxuXHQgICAgICAgICAgICAweDEzMDAwOiAweDIxMDAwMDgwLFxuXHQgICAgICAgICAgICAweDE0MDAwOiAweDEwMDAwODAsXG5cdCAgICAgICAgICAgIDB4MTUwMDA6IDB4MjEwNDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTYwMDA6IDB4MjAwNDAwODAsXG5cdCAgICAgICAgICAgIDB4MTcwMDA6IDB4MTAwMDAwMCxcblx0ICAgICAgICAgICAgMHgxODAwMDogMHgyMTA0MDA4MCxcblx0ICAgICAgICAgICAgMHgxOTAwMDogMHgyMTAwMDAwMCxcblx0ICAgICAgICAgICAgMHgxYTAwMDogMHgxMDQwMDAwLFxuXHQgICAgICAgICAgICAweDFiMDAwOiAweDIwMDQwMDAwLFxuXHQgICAgICAgICAgICAweDFjMDAwOiAweDQwMDgwLFxuXHQgICAgICAgICAgICAweDFkMDAwOiAweDIwMDAwMDgwLFxuXHQgICAgICAgICAgICAweDFlMDAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4MWYwMDA6IDB4MTA0MDA4MCxcblx0ICAgICAgICAgICAgMHgxMDgwMDogMHgyMTAwMDA4MCxcblx0ICAgICAgICAgICAgMHgxMTgwMDogMHgxMDAwMDAwLFxuXHQgICAgICAgICAgICAweDEyODAwOiAweDEwNDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTM4MDA6IDB4MjAwNDAwODAsXG5cdCAgICAgICAgICAgIDB4MTQ4MDA6IDB4MjAwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTU4MDA6IDB4MTA0MDA4MCxcblx0ICAgICAgICAgICAgMHgxNjgwMDogMHg4MCxcblx0ICAgICAgICAgICAgMHgxNzgwMDogMHgyMTA0MDAwMCxcblx0ICAgICAgICAgICAgMHgxODgwMDogMHg0MDA4MCxcblx0ICAgICAgICAgICAgMHgxOTgwMDogMHgyMTA0MDA4MCxcblx0ICAgICAgICAgICAgMHgxYTgwMDogMHgwLFxuXHQgICAgICAgICAgICAweDFiODAwOiAweDIxMDAwMDAwLFxuXHQgICAgICAgICAgICAweDFjODAwOiAweDEwMDAwODAsXG5cdCAgICAgICAgICAgIDB4MWQ4MDA6IDB4NDAwMDAsXG5cdCAgICAgICAgICAgIDB4MWU4MDA6IDB4MjAwNDAwMDAsXG5cdCAgICAgICAgICAgIDB4MWY4MDA6IDB4MjAwMDAwODBcblx0ICAgICAgICB9LFxuXHQgICAgICAgIHtcblx0ICAgICAgICAgICAgMHgwOiAweDEwMDAwMDA4LFxuXHQgICAgICAgICAgICAweDEwMDogMHgyMDAwLFxuXHQgICAgICAgICAgICAweDIwMDogMHgxMDIwMDAwMCxcblx0ICAgICAgICAgICAgMHgzMDA6IDB4MTAyMDIwMDgsXG5cdCAgICAgICAgICAgIDB4NDAwOiAweDEwMDAyMDAwLFxuXHQgICAgICAgICAgICAweDUwMDogMHgyMDAwMDAsXG5cdCAgICAgICAgICAgIDB4NjAwOiAweDIwMDAwOCxcblx0ICAgICAgICAgICAgMHg3MDA6IDB4MTAwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4ODAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4OTAwOiAweDEwMDAyMDA4LFxuXHQgICAgICAgICAgICAweGEwMDogMHgyMDIwMDAsXG5cdCAgICAgICAgICAgIDB4YjAwOiAweDgsXG5cdCAgICAgICAgICAgIDB4YzAwOiAweDEwMjAwMDA4LFxuXHQgICAgICAgICAgICAweGQwMDogMHgyMDIwMDgsXG5cdCAgICAgICAgICAgIDB4ZTAwOiAweDIwMDgsXG5cdCAgICAgICAgICAgIDB4ZjAwOiAweDEwMjAyMDAwLFxuXHQgICAgICAgICAgICAweDgwOiAweDEwMjAwMDAwLFxuXHQgICAgICAgICAgICAweDE4MDogMHgxMDIwMjAwOCxcblx0ICAgICAgICAgICAgMHgyODA6IDB4OCxcblx0ICAgICAgICAgICAgMHgzODA6IDB4MjAwMDAwLFxuXHQgICAgICAgICAgICAweDQ4MDogMHgyMDIwMDgsXG5cdCAgICAgICAgICAgIDB4NTgwOiAweDEwMDAwMDA4LFxuXHQgICAgICAgICAgICAweDY4MDogMHgxMDAwMjAwMCxcblx0ICAgICAgICAgICAgMHg3ODA6IDB4MjAwOCxcblx0ICAgICAgICAgICAgMHg4ODA6IDB4MjAwMDA4LFxuXHQgICAgICAgICAgICAweDk4MDogMHgyMDAwLFxuXHQgICAgICAgICAgICAweGE4MDogMHgxMDAwMjAwOCxcblx0ICAgICAgICAgICAgMHhiODA6IDB4MTAyMDAwMDgsXG5cdCAgICAgICAgICAgIDB4YzgwOiAweDAsXG5cdCAgICAgICAgICAgIDB4ZDgwOiAweDEwMjAyMDAwLFxuXHQgICAgICAgICAgICAweGU4MDogMHgyMDIwMDAsXG5cdCAgICAgICAgICAgIDB4ZjgwOiAweDEwMDAwMDAwLFxuXHQgICAgICAgICAgICAweDEwMDA6IDB4MTAwMDIwMDAsXG5cdCAgICAgICAgICAgIDB4MTEwMDogMHgxMDIwMDAwOCxcblx0ICAgICAgICAgICAgMHgxMjAwOiAweDEwMjAyMDA4LFxuXHQgICAgICAgICAgICAweDEzMDA6IDB4MjAwOCxcblx0ICAgICAgICAgICAgMHgxNDAwOiAweDIwMDAwMCxcblx0ICAgICAgICAgICAgMHgxNTAwOiAweDEwMDAwMDAwLFxuXHQgICAgICAgICAgICAweDE2MDA6IDB4MTAwMDAwMDgsXG5cdCAgICAgICAgICAgIDB4MTcwMDogMHgyMDIwMDAsXG5cdCAgICAgICAgICAgIDB4MTgwMDogMHgyMDIwMDgsXG5cdCAgICAgICAgICAgIDB4MTkwMDogMHgwLFxuXHQgICAgICAgICAgICAweDFhMDA6IDB4OCxcblx0ICAgICAgICAgICAgMHgxYjAwOiAweDEwMjAwMDAwLFxuXHQgICAgICAgICAgICAweDFjMDA6IDB4MjAwMCxcblx0ICAgICAgICAgICAgMHgxZDAwOiAweDEwMDAyMDA4LFxuXHQgICAgICAgICAgICAweDFlMDA6IDB4MTAyMDIwMDAsXG5cdCAgICAgICAgICAgIDB4MWYwMDogMHgyMDAwMDgsXG5cdCAgICAgICAgICAgIDB4MTA4MDogMHg4LFxuXHQgICAgICAgICAgICAweDExODA6IDB4MjAyMDAwLFxuXHQgICAgICAgICAgICAweDEyODA6IDB4MjAwMDAwLFxuXHQgICAgICAgICAgICAweDEzODA6IDB4MTAwMDAwMDgsXG5cdCAgICAgICAgICAgIDB4MTQ4MDogMHgxMDAwMjAwMCxcblx0ICAgICAgICAgICAgMHgxNTgwOiAweDIwMDgsXG5cdCAgICAgICAgICAgIDB4MTY4MDogMHgxMDIwMjAwOCxcblx0ICAgICAgICAgICAgMHgxNzgwOiAweDEwMjAwMDAwLFxuXHQgICAgICAgICAgICAweDE4ODA6IDB4MTAyMDIwMDAsXG5cdCAgICAgICAgICAgIDB4MTk4MDogMHgxMDIwMDAwOCxcblx0ICAgICAgICAgICAgMHgxYTgwOiAweDIwMDAsXG5cdCAgICAgICAgICAgIDB4MWI4MDogMHgyMDIwMDgsXG5cdCAgICAgICAgICAgIDB4MWM4MDogMHgyMDAwMDgsXG5cdCAgICAgICAgICAgIDB4MWQ4MDogMHgwLFxuXHQgICAgICAgICAgICAweDFlODA6IDB4MTAwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MWY4MDogMHgxMDAwMjAwOFxuXHQgICAgICAgIH0sXG5cdCAgICAgICAge1xuXHQgICAgICAgICAgICAweDA6IDB4MTAwMDAwLFxuXHQgICAgICAgICAgICAweDEwOiAweDIwMDA0MDEsXG5cdCAgICAgICAgICAgIDB4MjA6IDB4NDAwLFxuXHQgICAgICAgICAgICAweDMwOiAweDEwMDQwMSxcblx0ICAgICAgICAgICAgMHg0MDogMHgyMTAwNDAxLFxuXHQgICAgICAgICAgICAweDUwOiAweDAsXG5cdCAgICAgICAgICAgIDB4NjA6IDB4MSxcblx0ICAgICAgICAgICAgMHg3MDogMHgyMTAwMDAxLFxuXHQgICAgICAgICAgICAweDgwOiAweDIwMDA0MDAsXG5cdCAgICAgICAgICAgIDB4OTA6IDB4MTAwMDAxLFxuXHQgICAgICAgICAgICAweGEwOiAweDIwMDAwMDEsXG5cdCAgICAgICAgICAgIDB4YjA6IDB4MjEwMDQwMCxcblx0ICAgICAgICAgICAgMHhjMDogMHgyMTAwMDAwLFxuXHQgICAgICAgICAgICAweGQwOiAweDQwMSxcblx0ICAgICAgICAgICAgMHhlMDogMHgxMDA0MDAsXG5cdCAgICAgICAgICAgIDB4ZjA6IDB4MjAwMDAwMCxcblx0ICAgICAgICAgICAgMHg4OiAweDIxMDAwMDEsXG5cdCAgICAgICAgICAgIDB4MTg6IDB4MCxcblx0ICAgICAgICAgICAgMHgyODogMHgyMDAwNDAxLFxuXHQgICAgICAgICAgICAweDM4OiAweDIxMDA0MDAsXG5cdCAgICAgICAgICAgIDB4NDg6IDB4MTAwMDAwLFxuXHQgICAgICAgICAgICAweDU4OiAweDIwMDAwMDEsXG5cdCAgICAgICAgICAgIDB4Njg6IDB4MjAwMDAwMCxcblx0ICAgICAgICAgICAgMHg3ODogMHg0MDEsXG5cdCAgICAgICAgICAgIDB4ODg6IDB4MTAwNDAxLFxuXHQgICAgICAgICAgICAweDk4OiAweDIwMDA0MDAsXG5cdCAgICAgICAgICAgIDB4YTg6IDB4MjEwMDAwMCxcblx0ICAgICAgICAgICAgMHhiODogMHgxMDAwMDEsXG5cdCAgICAgICAgICAgIDB4Yzg6IDB4NDAwLFxuXHQgICAgICAgICAgICAweGQ4OiAweDIxMDA0MDEsXG5cdCAgICAgICAgICAgIDB4ZTg6IDB4MSxcblx0ICAgICAgICAgICAgMHhmODogMHgxMDA0MDAsXG5cdCAgICAgICAgICAgIDB4MTAwOiAweDIwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTEwOiAweDEwMDAwMCxcblx0ICAgICAgICAgICAgMHgxMjA6IDB4MjAwMDQwMSxcblx0ICAgICAgICAgICAgMHgxMzA6IDB4MjEwMDAwMSxcblx0ICAgICAgICAgICAgMHgxNDA6IDB4MTAwMDAxLFxuXHQgICAgICAgICAgICAweDE1MDogMHgyMDAwNDAwLFxuXHQgICAgICAgICAgICAweDE2MDogMHgyMTAwNDAwLFxuXHQgICAgICAgICAgICAweDE3MDogMHgxMDA0MDEsXG5cdCAgICAgICAgICAgIDB4MTgwOiAweDQwMSxcblx0ICAgICAgICAgICAgMHgxOTA6IDB4MjEwMDQwMSxcblx0ICAgICAgICAgICAgMHgxYTA6IDB4MTAwNDAwLFxuXHQgICAgICAgICAgICAweDFiMDogMHgxLFxuXHQgICAgICAgICAgICAweDFjMDogMHgwLFxuXHQgICAgICAgICAgICAweDFkMDogMHgyMTAwMDAwLFxuXHQgICAgICAgICAgICAweDFlMDogMHgyMDAwMDAxLFxuXHQgICAgICAgICAgICAweDFmMDogMHg0MDAsXG5cdCAgICAgICAgICAgIDB4MTA4OiAweDEwMDQwMCxcblx0ICAgICAgICAgICAgMHgxMTg6IDB4MjAwMDQwMSxcblx0ICAgICAgICAgICAgMHgxMjg6IDB4MjEwMDAwMSxcblx0ICAgICAgICAgICAgMHgxMzg6IDB4MSxcblx0ICAgICAgICAgICAgMHgxNDg6IDB4MjAwMDAwMCxcblx0ICAgICAgICAgICAgMHgxNTg6IDB4MTAwMDAwLFxuXHQgICAgICAgICAgICAweDE2ODogMHg0MDEsXG5cdCAgICAgICAgICAgIDB4MTc4OiAweDIxMDA0MDAsXG5cdCAgICAgICAgICAgIDB4MTg4OiAweDIwMDAwMDEsXG5cdCAgICAgICAgICAgIDB4MTk4OiAweDIxMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MWE4OiAweDAsXG5cdCAgICAgICAgICAgIDB4MWI4OiAweDIxMDA0MDEsXG5cdCAgICAgICAgICAgIDB4MWM4OiAweDEwMDQwMSxcblx0ICAgICAgICAgICAgMHgxZDg6IDB4NDAwLFxuXHQgICAgICAgICAgICAweDFlODogMHgyMDAwNDAwLFxuXHQgICAgICAgICAgICAweDFmODogMHgxMDAwMDFcblx0ICAgICAgICB9LFxuXHQgICAgICAgIHtcblx0ICAgICAgICAgICAgMHgwOiAweDgwMDA4MjAsXG5cdCAgICAgICAgICAgIDB4MTogMHgyMDAwMCxcblx0ICAgICAgICAgICAgMHgyOiAweDgwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MzogMHgyMCxcblx0ICAgICAgICAgICAgMHg0OiAweDIwMDIwLFxuXHQgICAgICAgICAgICAweDU6IDB4ODAyMDgyMCxcblx0ICAgICAgICAgICAgMHg2OiAweDgwMjA4MDAsXG5cdCAgICAgICAgICAgIDB4NzogMHg4MDAsXG5cdCAgICAgICAgICAgIDB4ODogMHg4MDIwMDAwLFxuXHQgICAgICAgICAgICAweDk6IDB4ODAwMDgwMCxcblx0ICAgICAgICAgICAgMHhhOiAweDIwODAwLFxuXHQgICAgICAgICAgICAweGI6IDB4ODAyMDAyMCxcblx0ICAgICAgICAgICAgMHhjOiAweDgyMCxcblx0ICAgICAgICAgICAgMHhkOiAweDAsXG5cdCAgICAgICAgICAgIDB4ZTogMHg4MDAwMDIwLFxuXHQgICAgICAgICAgICAweGY6IDB4MjA4MjAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMDA6IDB4ODAwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDAxOiAweDgwMjA4MjAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMDI6IDB4ODAwMDgyMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwMzogMHg4MDAwMDAwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDA0OiAweDgwMjAwMDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMDU6IDB4MjA4MDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMDY6IDB4MjA4MjAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMDc6IDB4MjAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMDg6IDB4ODAwMDAyMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwOTogMHg4MjAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMGE6IDB4MjAwMjAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMGI6IDB4ODAyMDgwMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwYzogMHgwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDBkOiAweDgwMjAwMjAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMGU6IDB4ODAwMDgwMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwZjogMHgyMDAwMCxcblx0ICAgICAgICAgICAgMHgxMDogMHgyMDgyMCxcblx0ICAgICAgICAgICAgMHgxMTogMHg4MDIwODAwLFxuXHQgICAgICAgICAgICAweDEyOiAweDIwLFxuXHQgICAgICAgICAgICAweDEzOiAweDgwMCxcblx0ICAgICAgICAgICAgMHgxNDogMHg4MDAwODAwLFxuXHQgICAgICAgICAgICAweDE1OiAweDgwMDAwMjAsXG5cdCAgICAgICAgICAgIDB4MTY6IDB4ODAyMDAyMCxcblx0ICAgICAgICAgICAgMHgxNzogMHgyMDAwMCxcblx0ICAgICAgICAgICAgMHgxODogMHgwLFxuXHQgICAgICAgICAgICAweDE5OiAweDIwMDIwLFxuXHQgICAgICAgICAgICAweDFhOiAweDgwMjAwMDAsXG5cdCAgICAgICAgICAgIDB4MWI6IDB4ODAwMDgyMCxcblx0ICAgICAgICAgICAgMHgxYzogMHg4MDIwODIwLFxuXHQgICAgICAgICAgICAweDFkOiAweDIwODAwLFxuXHQgICAgICAgICAgICAweDFlOiAweDgyMCxcblx0ICAgICAgICAgICAgMHgxZjogMHg4MDAwMDAwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDEwOiAweDIwMDAwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDExOiAweDgwMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAxMjogMHg4MDIwMDIwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDEzOiAweDIwODIwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDE0OiAweDIwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDE1OiAweDgwMjAwMDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMTY6IDB4ODAwMDAwMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAxNzogMHg4MDAwODIwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDE4OiAweDgwMjA4MjAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMTk6IDB4ODAwMDAyMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAxYTogMHg4MDAwODAwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDFiOiAweDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMWM6IDB4MjA4MDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMWQ6IDB4ODIwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDFlOiAweDIwMDIwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDFmOiAweDgwMjA4MDBcblx0ICAgICAgICB9XG5cdCAgICBdO1xuXG5cdCAgICAvLyBNYXNrcyB0aGF0IHNlbGVjdCB0aGUgU0JPWCBpbnB1dFxuXHQgICAgdmFyIFNCT1hfTUFTSyA9IFtcblx0ICAgICAgICAweGY4MDAwMDAxLCAweDFmODAwMDAwLCAweDAxZjgwMDAwLCAweDAwMWY4MDAwLFxuXHQgICAgICAgIDB4MDAwMWY4MDAsIDB4MDAwMDFmODAsIDB4MDAwMDAxZjgsIDB4ODAwMDAwMWZcblx0ICAgIF07XG5cblx0ICAgIC8qKlxuXHQgICAgICogREVTIGJsb2NrIGNpcGhlciBhbGdvcml0aG0uXG5cdCAgICAgKi9cblx0ICAgIHZhciBERVMgPSBDX2FsZ28uREVTID0gQmxvY2tDaXBoZXIuZXh0ZW5kKHtcblx0ICAgICAgICBfZG9SZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGtleSA9IHRoaXMuX2tleTtcblx0ICAgICAgICAgICAgdmFyIGtleVdvcmRzID0ga2V5LndvcmRzO1xuXG5cdCAgICAgICAgICAgIC8vIFNlbGVjdCA1NiBiaXRzIGFjY29yZGluZyB0byBQQzFcblx0ICAgICAgICAgICAgdmFyIGtleUJpdHMgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1NjsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICB2YXIga2V5Qml0UG9zID0gUEMxW2ldIC0gMTtcblx0ICAgICAgICAgICAgICAgIGtleUJpdHNbaV0gPSAoa2V5V29yZHNba2V5Qml0UG9zID4+PiA1XSA+Pj4gKDMxIC0ga2V5Qml0UG9zICUgMzIpKSAmIDE7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBBc3NlbWJsZSAxNiBzdWJrZXlzXG5cdCAgICAgICAgICAgIHZhciBzdWJLZXlzID0gdGhpcy5fc3ViS2V5cyA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBuU3ViS2V5ID0gMDsgblN1YktleSA8IDE2OyBuU3ViS2V5KyspIHtcblx0ICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBzdWJrZXlcblx0ICAgICAgICAgICAgICAgIHZhciBzdWJLZXkgPSBzdWJLZXlzW25TdWJLZXldID0gW107XG5cblx0ICAgICAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgICAgICB2YXIgYml0U2hpZnQgPSBCSVRfU0hJRlRTW25TdWJLZXldO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBTZWxlY3QgNDggYml0cyBhY2NvcmRpbmcgdG8gUEMyXG5cdCAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI0OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgICAgICAvLyBTZWxlY3QgZnJvbSB0aGUgbGVmdCAyOCBrZXkgYml0c1xuXHQgICAgICAgICAgICAgICAgICAgIHN1YktleVsoaSAvIDYpIHwgMF0gfD0ga2V5Qml0c1soKFBDMltpXSAtIDEpICsgYml0U2hpZnQpICUgMjhdIDw8ICgzMSAtIGkgJSA2KTtcblxuXHQgICAgICAgICAgICAgICAgICAgIC8vIFNlbGVjdCBmcm9tIHRoZSByaWdodCAyOCBrZXkgYml0c1xuXHQgICAgICAgICAgICAgICAgICAgIHN1YktleVs0ICsgKChpIC8gNikgfCAwKV0gfD0ga2V5Qml0c1syOCArICgoKFBDMltpICsgMjRdIC0gMSkgKyBiaXRTaGlmdCkgJSAyOCldIDw8ICgzMSAtIGkgJSA2KTtcblx0ICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgLy8gU2luY2UgZWFjaCBzdWJrZXkgaXMgYXBwbGllZCB0byBhbiBleHBhbmRlZCAzMi1iaXQgaW5wdXQsXG5cdCAgICAgICAgICAgICAgICAvLyB0aGUgc3Via2V5IGNhbiBiZSBicm9rZW4gaW50byA4IHZhbHVlcyBzY2FsZWQgdG8gMzItYml0cyxcblx0ICAgICAgICAgICAgICAgIC8vIHdoaWNoIGFsbG93cyB0aGUga2V5IHRvIGJlIHVzZWQgd2l0aG91dCBleHBhbnNpb25cblx0ICAgICAgICAgICAgICAgIHN1YktleVswXSA9IChzdWJLZXlbMF0gPDwgMSkgfCAoc3ViS2V5WzBdID4+PiAzMSk7XG5cdCAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IDc7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgICAgIHN1YktleVtpXSA9IHN1YktleVtpXSA+Pj4gKChpIC0gMSkgKiA0ICsgMyk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBzdWJLZXlbN10gPSAoc3ViS2V5WzddIDw8IDUpIHwgKHN1YktleVs3XSA+Pj4gMjcpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gQ29tcHV0ZSBpbnZlcnNlIHN1YmtleXNcblx0ICAgICAgICAgICAgdmFyIGludlN1YktleXMgPSB0aGlzLl9pbnZTdWJLZXlzID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgaW52U3ViS2V5c1tpXSA9IHN1YktleXNbMTUgLSBpXTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBlbmNyeXB0QmxvY2s6IGZ1bmN0aW9uIChNLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgdGhpcy5fZG9DcnlwdEJsb2NrKE0sIG9mZnNldCwgdGhpcy5fc3ViS2V5cyk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGRlY3J5cHRCbG9jazogZnVuY3Rpb24gKE0sIG9mZnNldCkge1xuXHQgICAgICAgICAgICB0aGlzLl9kb0NyeXB0QmxvY2soTSwgb2Zmc2V0LCB0aGlzLl9pbnZTdWJLZXlzKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvQ3J5cHRCbG9jazogZnVuY3Rpb24gKE0sIG9mZnNldCwgc3ViS2V5cykge1xuXHQgICAgICAgICAgICAvLyBHZXQgaW5wdXRcblx0ICAgICAgICAgICAgdGhpcy5fbEJsb2NrID0gTVtvZmZzZXRdO1xuXHQgICAgICAgICAgICB0aGlzLl9yQmxvY2sgPSBNW29mZnNldCArIDFdO1xuXG5cdCAgICAgICAgICAgIC8vIEluaXRpYWwgcGVybXV0YXRpb25cblx0ICAgICAgICAgICAgZXhjaGFuZ2VMUi5jYWxsKHRoaXMsIDQsICAweDBmMGYwZjBmKTtcblx0ICAgICAgICAgICAgZXhjaGFuZ2VMUi5jYWxsKHRoaXMsIDE2LCAweDAwMDBmZmZmKTtcblx0ICAgICAgICAgICAgZXhjaGFuZ2VSTC5jYWxsKHRoaXMsIDIsICAweDMzMzMzMzMzKTtcblx0ICAgICAgICAgICAgZXhjaGFuZ2VSTC5jYWxsKHRoaXMsIDgsICAweDAwZmYwMGZmKTtcblx0ICAgICAgICAgICAgZXhjaGFuZ2VMUi5jYWxsKHRoaXMsIDEsICAweDU1NTU1NTU1KTtcblxuXHQgICAgICAgICAgICAvLyBSb3VuZHNcblx0ICAgICAgICAgICAgZm9yICh2YXIgcm91bmQgPSAwOyByb3VuZCA8IDE2OyByb3VuZCsrKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgICAgIHZhciBzdWJLZXkgPSBzdWJLZXlzW3JvdW5kXTtcblx0ICAgICAgICAgICAgICAgIHZhciBsQmxvY2sgPSB0aGlzLl9sQmxvY2s7XG5cdCAgICAgICAgICAgICAgICB2YXIgckJsb2NrID0gdGhpcy5fckJsb2NrO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBGZWlzdGVsIGZ1bmN0aW9uXG5cdCAgICAgICAgICAgICAgICB2YXIgZiA9IDA7XG5cdCAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgICAgIGYgfD0gU0JPWF9QW2ldWygockJsb2NrIF4gc3ViS2V5W2ldKSAmIFNCT1hfTUFTS1tpXSkgPj4+IDBdO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgdGhpcy5fbEJsb2NrID0gckJsb2NrO1xuXHQgICAgICAgICAgICAgICAgdGhpcy5fckJsb2NrID0gbEJsb2NrIF4gZjtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIFVuZG8gc3dhcCBmcm9tIGxhc3Qgcm91bmRcblx0ICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9sQmxvY2s7XG5cdCAgICAgICAgICAgIHRoaXMuX2xCbG9jayA9IHRoaXMuX3JCbG9jaztcblx0ICAgICAgICAgICAgdGhpcy5fckJsb2NrID0gdDtcblxuXHQgICAgICAgICAgICAvLyBGaW5hbCBwZXJtdXRhdGlvblxuXHQgICAgICAgICAgICBleGNoYW5nZUxSLmNhbGwodGhpcywgMSwgIDB4NTU1NTU1NTUpO1xuXHQgICAgICAgICAgICBleGNoYW5nZVJMLmNhbGwodGhpcywgOCwgIDB4MDBmZjAwZmYpO1xuXHQgICAgICAgICAgICBleGNoYW5nZVJMLmNhbGwodGhpcywgMiwgIDB4MzMzMzMzMzMpO1xuXHQgICAgICAgICAgICBleGNoYW5nZUxSLmNhbGwodGhpcywgMTYsIDB4MDAwMGZmZmYpO1xuXHQgICAgICAgICAgICBleGNoYW5nZUxSLmNhbGwodGhpcywgNCwgIDB4MGYwZjBmMGYpO1xuXG5cdCAgICAgICAgICAgIC8vIFNldCBvdXRwdXRcblx0ICAgICAgICAgICAgTVtvZmZzZXRdID0gdGhpcy5fbEJsb2NrO1xuXHQgICAgICAgICAgICBNW29mZnNldCArIDFdID0gdGhpcy5fckJsb2NrO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBrZXlTaXplOiA2NC8zMixcblxuXHQgICAgICAgIGl2U2l6ZTogNjQvMzIsXG5cblx0ICAgICAgICBibG9ja1NpemU6IDY0LzMyXG5cdCAgICB9KTtcblxuXHQgICAgLy8gU3dhcCBiaXRzIGFjcm9zcyB0aGUgbGVmdCBhbmQgcmlnaHQgd29yZHNcblx0ICAgIGZ1bmN0aW9uIGV4Y2hhbmdlTFIob2Zmc2V0LCBtYXNrKSB7XG5cdCAgICAgICAgdmFyIHQgPSAoKHRoaXMuX2xCbG9jayA+Pj4gb2Zmc2V0KSBeIHRoaXMuX3JCbG9jaykgJiBtYXNrO1xuXHQgICAgICAgIHRoaXMuX3JCbG9jayBePSB0O1xuXHQgICAgICAgIHRoaXMuX2xCbG9jayBePSB0IDw8IG9mZnNldDtcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gZXhjaGFuZ2VSTChvZmZzZXQsIG1hc2spIHtcblx0ICAgICAgICB2YXIgdCA9ICgodGhpcy5fckJsb2NrID4+PiBvZmZzZXQpIF4gdGhpcy5fbEJsb2NrKSAmIG1hc2s7XG5cdCAgICAgICAgdGhpcy5fbEJsb2NrIF49IHQ7XG5cdCAgICAgICAgdGhpcy5fckJsb2NrIF49IHQgPDwgb2Zmc2V0O1xuXHQgICAgfVxuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9ucyB0byB0aGUgY2lwaGVyJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgY2lwaGVydGV4dCA9IENyeXB0b0pTLkRFUy5lbmNyeXB0KG1lc3NhZ2UsIGtleSwgY2ZnKTtcblx0ICAgICAqICAgICB2YXIgcGxhaW50ZXh0ICA9IENyeXB0b0pTLkRFUy5kZWNyeXB0KGNpcGhlcnRleHQsIGtleSwgY2ZnKTtcblx0ICAgICAqL1xuXHQgICAgQy5ERVMgPSBCbG9ja0NpcGhlci5fY3JlYXRlSGVscGVyKERFUyk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogVHJpcGxlLURFUyBibG9jayBjaXBoZXIgYWxnb3JpdGhtLlxuXHQgICAgICovXG5cdCAgICB2YXIgVHJpcGxlREVTID0gQ19hbGdvLlRyaXBsZURFUyA9IEJsb2NrQ2lwaGVyLmV4dGVuZCh7XG5cdCAgICAgICAgX2RvUmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBrZXkgPSB0aGlzLl9rZXk7XG5cdCAgICAgICAgICAgIHZhciBrZXlXb3JkcyA9IGtleS53b3Jkcztcblx0ICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBrZXkgbGVuZ3RoIGlzIHZhbGlkICg2NCwgMTI4IG9yID49IDE5MiBiaXQpXG5cdCAgICAgICAgICAgIGlmIChrZXlXb3Jkcy5sZW5ndGggIT09IDIgJiYga2V5V29yZHMubGVuZ3RoICE9PSA0ICYmIGtleVdvcmRzLmxlbmd0aCA8IDYpIHtcblx0ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBrZXkgbGVuZ3RoIC0gM0RFUyByZXF1aXJlcyB0aGUga2V5IGxlbmd0aCB0byBiZSA2NCwgMTI4LCAxOTIgb3IgPjE5Mi4nKTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIEV4dGVuZCB0aGUga2V5IGFjY29yZGluZyB0byB0aGUga2V5aW5nIG9wdGlvbnMgZGVmaW5lZCBpbiAzREVTIHN0YW5kYXJkXG5cdCAgICAgICAgICAgIHZhciBrZXkxID0ga2V5V29yZHMuc2xpY2UoMCwgMik7XG5cdCAgICAgICAgICAgIHZhciBrZXkyID0ga2V5V29yZHMubGVuZ3RoIDwgNCA/IGtleVdvcmRzLnNsaWNlKDAsIDIpIDoga2V5V29yZHMuc2xpY2UoMiwgNCk7XG5cdCAgICAgICAgICAgIHZhciBrZXkzID0ga2V5V29yZHMubGVuZ3RoIDwgNiA/IGtleVdvcmRzLnNsaWNlKDAsIDIpIDoga2V5V29yZHMuc2xpY2UoNCwgNik7XG5cblx0ICAgICAgICAgICAgLy8gQ3JlYXRlIERFUyBpbnN0YW5jZXNcblx0ICAgICAgICAgICAgdGhpcy5fZGVzMSA9IERFUy5jcmVhdGVFbmNyeXB0b3IoV29yZEFycmF5LmNyZWF0ZShrZXkxKSk7XG5cdCAgICAgICAgICAgIHRoaXMuX2RlczIgPSBERVMuY3JlYXRlRW5jcnlwdG9yKFdvcmRBcnJheS5jcmVhdGUoa2V5MikpO1xuXHQgICAgICAgICAgICB0aGlzLl9kZXMzID0gREVTLmNyZWF0ZUVuY3J5cHRvcihXb3JkQXJyYXkuY3JlYXRlKGtleTMpKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgZW5jcnlwdEJsb2NrOiBmdW5jdGlvbiAoTSwgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIHRoaXMuX2RlczEuZW5jcnlwdEJsb2NrKE0sIG9mZnNldCk7XG5cdCAgICAgICAgICAgIHRoaXMuX2RlczIuZGVjcnlwdEJsb2NrKE0sIG9mZnNldCk7XG5cdCAgICAgICAgICAgIHRoaXMuX2RlczMuZW5jcnlwdEJsb2NrKE0sIG9mZnNldCk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGRlY3J5cHRCbG9jazogZnVuY3Rpb24gKE0sIG9mZnNldCkge1xuXHQgICAgICAgICAgICB0aGlzLl9kZXMzLmRlY3J5cHRCbG9jayhNLCBvZmZzZXQpO1xuXHQgICAgICAgICAgICB0aGlzLl9kZXMyLmVuY3J5cHRCbG9jayhNLCBvZmZzZXQpO1xuXHQgICAgICAgICAgICB0aGlzLl9kZXMxLmRlY3J5cHRCbG9jayhNLCBvZmZzZXQpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBrZXlTaXplOiAxOTIvMzIsXG5cblx0ICAgICAgICBpdlNpemU6IDY0LzMyLFxuXG5cdCAgICAgICAgYmxvY2tTaXplOiA2NC8zMlxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb25zIHRvIHRoZSBjaXBoZXIncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBjaXBoZXJ0ZXh0ID0gQ3J5cHRvSlMuVHJpcGxlREVTLmVuY3J5cHQobWVzc2FnZSwga2V5LCBjZmcpO1xuXHQgICAgICogICAgIHZhciBwbGFpbnRleHQgID0gQ3J5cHRvSlMuVHJpcGxlREVTLmRlY3J5cHQoY2lwaGVydGV4dCwga2V5LCBjZmcpO1xuXHQgICAgICovXG5cdCAgICBDLlRyaXBsZURFUyA9IEJsb2NrQ2lwaGVyLl9jcmVhdGVIZWxwZXIoVHJpcGxlREVTKTtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5UcmlwbGVERVM7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5KSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAodW5kZWZpbmVkKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBCYXNlID0gQ19saWIuQmFzZTtcblx0ICAgIHZhciBYMzJXb3JkQXJyYXkgPSBDX2xpYi5Xb3JkQXJyYXk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogeDY0IG5hbWVzcGFjZS5cblx0ICAgICAqL1xuXHQgICAgdmFyIENfeDY0ID0gQy54NjQgPSB7fTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBBIDY0LWJpdCB3b3JkLlxuXHQgICAgICovXG5cdCAgICB2YXIgWDY0V29yZCA9IENfeDY0LldvcmQgPSBCYXNlLmV4dGVuZCh7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogSW5pdGlhbGl6ZXMgYSBuZXdseSBjcmVhdGVkIDY0LWJpdCB3b3JkLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGhpZ2ggVGhlIGhpZ2ggMzIgYml0cy5cblx0ICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gbG93IFRoZSBsb3cgMzIgYml0cy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHg2NFdvcmQgPSBDcnlwdG9KUy54NjQuV29yZC5jcmVhdGUoMHgwMDAxMDIwMywgMHgwNDA1MDYwNyk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgaW5pdDogZnVuY3Rpb24gKGhpZ2gsIGxvdykge1xuXHQgICAgICAgICAgICB0aGlzLmhpZ2ggPSBoaWdoO1xuXHQgICAgICAgICAgICB0aGlzLmxvdyA9IGxvdztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBCaXR3aXNlIE5PVHMgdGhpcyB3b3JkLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7WDY0V29yZH0gQSBuZXcgeDY0LVdvcmQgb2JqZWN0IGFmdGVyIG5lZ2F0aW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgbmVnYXRlZCA9IHg2NFdvcmQubm90KCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgLy8gbm90OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIHZhciBoaWdoID0gfnRoaXMuaGlnaDtcblx0ICAgICAgICAgICAgLy8gdmFyIGxvdyA9IH50aGlzLmxvdztcblxuXHQgICAgICAgICAgICAvLyByZXR1cm4gWDY0V29yZC5jcmVhdGUoaGlnaCwgbG93KTtcblx0ICAgICAgICAvLyB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQml0d2lzZSBBTkRzIHRoaXMgd29yZCB3aXRoIHRoZSBwYXNzZWQgd29yZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7WDY0V29yZH0gd29yZCBUaGUgeDY0LVdvcmQgdG8gQU5EIHdpdGggdGhpcyB3b3JkLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7WDY0V29yZH0gQSBuZXcgeDY0LVdvcmQgb2JqZWN0IGFmdGVyIEFORGluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGFuZGVkID0geDY0V29yZC5hbmQoYW5vdGhlclg2NFdvcmQpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIC8vIGFuZDogZnVuY3Rpb24gKHdvcmQpIHtcblx0ICAgICAgICAgICAgLy8gdmFyIGhpZ2ggPSB0aGlzLmhpZ2ggJiB3b3JkLmhpZ2g7XG5cdCAgICAgICAgICAgIC8vIHZhciBsb3cgPSB0aGlzLmxvdyAmIHdvcmQubG93O1xuXG5cdCAgICAgICAgICAgIC8vIHJldHVybiBYNjRXb3JkLmNyZWF0ZShoaWdoLCBsb3cpO1xuXHQgICAgICAgIC8vIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBCaXR3aXNlIE9ScyB0aGlzIHdvcmQgd2l0aCB0aGUgcGFzc2VkIHdvcmQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1g2NFdvcmR9IHdvcmQgVGhlIHg2NC1Xb3JkIHRvIE9SIHdpdGggdGhpcyB3b3JkLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7WDY0V29yZH0gQSBuZXcgeDY0LVdvcmQgb2JqZWN0IGFmdGVyIE9SaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgb3JlZCA9IHg2NFdvcmQub3IoYW5vdGhlclg2NFdvcmQpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIC8vIG9yOiBmdW5jdGlvbiAod29yZCkge1xuXHQgICAgICAgICAgICAvLyB2YXIgaGlnaCA9IHRoaXMuaGlnaCB8IHdvcmQuaGlnaDtcblx0ICAgICAgICAgICAgLy8gdmFyIGxvdyA9IHRoaXMubG93IHwgd29yZC5sb3c7XG5cblx0ICAgICAgICAgICAgLy8gcmV0dXJuIFg2NFdvcmQuY3JlYXRlKGhpZ2gsIGxvdyk7XG5cdCAgICAgICAgLy8gfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEJpdHdpc2UgWE9ScyB0aGlzIHdvcmQgd2l0aCB0aGUgcGFzc2VkIHdvcmQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1g2NFdvcmR9IHdvcmQgVGhlIHg2NC1Xb3JkIHRvIFhPUiB3aXRoIHRoaXMgd29yZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1g2NFdvcmR9IEEgbmV3IHg2NC1Xb3JkIG9iamVjdCBhZnRlciBYT1JpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciB4b3JlZCA9IHg2NFdvcmQueG9yKGFub3RoZXJYNjRXb3JkKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICAvLyB4b3I6IGZ1bmN0aW9uICh3b3JkKSB7XG5cdCAgICAgICAgICAgIC8vIHZhciBoaWdoID0gdGhpcy5oaWdoIF4gd29yZC5oaWdoO1xuXHQgICAgICAgICAgICAvLyB2YXIgbG93ID0gdGhpcy5sb3cgXiB3b3JkLmxvdztcblxuXHQgICAgICAgICAgICAvLyByZXR1cm4gWDY0V29yZC5jcmVhdGUoaGlnaCwgbG93KTtcblx0ICAgICAgICAvLyB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogU2hpZnRzIHRoaXMgd29yZCBuIGJpdHMgdG8gdGhlIGxlZnQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGJpdHMgdG8gc2hpZnQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtYNjRXb3JkfSBBIG5ldyB4NjQtV29yZCBvYmplY3QgYWZ0ZXIgc2hpZnRpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBzaGlmdGVkID0geDY0V29yZC5zaGlmdEwoMjUpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIC8vIHNoaWZ0TDogZnVuY3Rpb24gKG4pIHtcblx0ICAgICAgICAgICAgLy8gaWYgKG4gPCAzMikge1xuXHQgICAgICAgICAgICAgICAgLy8gdmFyIGhpZ2ggPSAodGhpcy5oaWdoIDw8IG4pIHwgKHRoaXMubG93ID4+PiAoMzIgLSBuKSk7XG5cdCAgICAgICAgICAgICAgICAvLyB2YXIgbG93ID0gdGhpcy5sb3cgPDwgbjtcblx0ICAgICAgICAgICAgLy8gfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIC8vIHZhciBoaWdoID0gdGhpcy5sb3cgPDwgKG4gLSAzMik7XG5cdCAgICAgICAgICAgICAgICAvLyB2YXIgbG93ID0gMDtcblx0ICAgICAgICAgICAgLy8gfVxuXG5cdCAgICAgICAgICAgIC8vIHJldHVybiBYNjRXb3JkLmNyZWF0ZShoaWdoLCBsb3cpO1xuXHQgICAgICAgIC8vIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBTaGlmdHMgdGhpcyB3b3JkIG4gYml0cyB0byB0aGUgcmlnaHQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGJpdHMgdG8gc2hpZnQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtYNjRXb3JkfSBBIG5ldyB4NjQtV29yZCBvYmplY3QgYWZ0ZXIgc2hpZnRpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBzaGlmdGVkID0geDY0V29yZC5zaGlmdFIoNyk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgLy8gc2hpZnRSOiBmdW5jdGlvbiAobikge1xuXHQgICAgICAgICAgICAvLyBpZiAobiA8IDMyKSB7XG5cdCAgICAgICAgICAgICAgICAvLyB2YXIgbG93ID0gKHRoaXMubG93ID4+PiBuKSB8ICh0aGlzLmhpZ2ggPDwgKDMyIC0gbikpO1xuXHQgICAgICAgICAgICAgICAgLy8gdmFyIGhpZ2ggPSB0aGlzLmhpZ2ggPj4+IG47XG5cdCAgICAgICAgICAgIC8vIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAvLyB2YXIgbG93ID0gdGhpcy5oaWdoID4+PiAobiAtIDMyKTtcblx0ICAgICAgICAgICAgICAgIC8vIHZhciBoaWdoID0gMDtcblx0ICAgICAgICAgICAgLy8gfVxuXG5cdCAgICAgICAgICAgIC8vIHJldHVybiBYNjRXb3JkLmNyZWF0ZShoaWdoLCBsb3cpO1xuXHQgICAgICAgIC8vIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBSb3RhdGVzIHRoaXMgd29yZCBuIGJpdHMgdG8gdGhlIGxlZnQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGJpdHMgdG8gcm90YXRlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7WDY0V29yZH0gQSBuZXcgeDY0LVdvcmQgb2JqZWN0IGFmdGVyIHJvdGF0aW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgcm90YXRlZCA9IHg2NFdvcmQucm90TCgyNSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgLy8gcm90TDogZnVuY3Rpb24gKG4pIHtcblx0ICAgICAgICAgICAgLy8gcmV0dXJuIHRoaXMuc2hpZnRMKG4pLm9yKHRoaXMuc2hpZnRSKDY0IC0gbikpO1xuXHQgICAgICAgIC8vIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBSb3RhdGVzIHRoaXMgd29yZCBuIGJpdHMgdG8gdGhlIHJpZ2h0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiBiaXRzIHRvIHJvdGF0ZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1g2NFdvcmR9IEEgbmV3IHg2NC1Xb3JkIG9iamVjdCBhZnRlciByb3RhdGluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHJvdGF0ZWQgPSB4NjRXb3JkLnJvdFIoNyk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgLy8gcm90UjogZnVuY3Rpb24gKG4pIHtcblx0ICAgICAgICAgICAgLy8gcmV0dXJuIHRoaXMuc2hpZnRSKG4pLm9yKHRoaXMuc2hpZnRMKDY0IC0gbikpO1xuXHQgICAgICAgIC8vIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBBZGRzIHRoaXMgd29yZCB3aXRoIHRoZSBwYXNzZWQgd29yZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7WDY0V29yZH0gd29yZCBUaGUgeDY0LVdvcmQgdG8gYWRkIHdpdGggdGhpcyB3b3JkLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7WDY0V29yZH0gQSBuZXcgeDY0LVdvcmQgb2JqZWN0IGFmdGVyIGFkZGluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGFkZGVkID0geDY0V29yZC5hZGQoYW5vdGhlclg2NFdvcmQpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIC8vIGFkZDogZnVuY3Rpb24gKHdvcmQpIHtcblx0ICAgICAgICAgICAgLy8gdmFyIGxvdyA9ICh0aGlzLmxvdyArIHdvcmQubG93KSB8IDA7XG5cdCAgICAgICAgICAgIC8vIHZhciBjYXJyeSA9IChsb3cgPj4+IDApIDwgKHRoaXMubG93ID4+PiAwKSA/IDEgOiAwO1xuXHQgICAgICAgICAgICAvLyB2YXIgaGlnaCA9ICh0aGlzLmhpZ2ggKyB3b3JkLmhpZ2ggKyBjYXJyeSkgfCAwO1xuXG5cdCAgICAgICAgICAgIC8vIHJldHVybiBYNjRXb3JkLmNyZWF0ZShoaWdoLCBsb3cpO1xuXHQgICAgICAgIC8vIH1cblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIEFuIGFycmF5IG9mIDY0LWJpdCB3b3Jkcy5cblx0ICAgICAqXG5cdCAgICAgKiBAcHJvcGVydHkge0FycmF5fSB3b3JkcyBUaGUgYXJyYXkgb2YgQ3J5cHRvSlMueDY0LldvcmQgb2JqZWN0cy5cblx0ICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBzaWdCeXRlcyBUaGUgbnVtYmVyIG9mIHNpZ25pZmljYW50IGJ5dGVzIGluIHRoaXMgd29yZCBhcnJheS5cblx0ICAgICAqL1xuXHQgICAgdmFyIFg2NFdvcmRBcnJheSA9IENfeDY0LldvcmRBcnJheSA9IEJhc2UuZXh0ZW5kKHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBJbml0aWFsaXplcyBhIG5ld2x5IGNyZWF0ZWQgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IHdvcmRzIChPcHRpb25hbCkgQW4gYXJyYXkgb2YgQ3J5cHRvSlMueDY0LldvcmQgb2JqZWN0cy5cblx0ICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gc2lnQnl0ZXMgKE9wdGlvbmFsKSBUaGUgbnVtYmVyIG9mIHNpZ25pZmljYW50IGJ5dGVzIGluIHRoZSB3b3Jkcy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHdvcmRBcnJheSA9IENyeXB0b0pTLng2NC5Xb3JkQXJyYXkuY3JlYXRlKCk7XG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHdvcmRBcnJheSA9IENyeXB0b0pTLng2NC5Xb3JkQXJyYXkuY3JlYXRlKFtcblx0ICAgICAgICAgKiAgICAgICAgIENyeXB0b0pTLng2NC5Xb3JkLmNyZWF0ZSgweDAwMDEwMjAzLCAweDA0MDUwNjA3KSxcblx0ICAgICAgICAgKiAgICAgICAgIENyeXB0b0pTLng2NC5Xb3JkLmNyZWF0ZSgweDE4MTkxYTFiLCAweDFjMWQxZTFmKVxuXHQgICAgICAgICAqICAgICBdKTtcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgd29yZEFycmF5ID0gQ3J5cHRvSlMueDY0LldvcmRBcnJheS5jcmVhdGUoW1xuXHQgICAgICAgICAqICAgICAgICAgQ3J5cHRvSlMueDY0LldvcmQuY3JlYXRlKDB4MDAwMTAyMDMsIDB4MDQwNTA2MDcpLFxuXHQgICAgICAgICAqICAgICAgICAgQ3J5cHRvSlMueDY0LldvcmQuY3JlYXRlKDB4MTgxOTFhMWIsIDB4MWMxZDFlMWYpXG5cdCAgICAgICAgICogICAgIF0sIDEwKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBpbml0OiBmdW5jdGlvbiAod29yZHMsIHNpZ0J5dGVzKSB7XG5cdCAgICAgICAgICAgIHdvcmRzID0gdGhpcy53b3JkcyA9IHdvcmRzIHx8IFtdO1xuXG5cdCAgICAgICAgICAgIGlmIChzaWdCeXRlcyAhPSB1bmRlZmluZWQpIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMuc2lnQnl0ZXMgPSBzaWdCeXRlcztcblx0ICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMuc2lnQnl0ZXMgPSB3b3Jkcy5sZW5ndGggKiA4O1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIHRoaXMgNjQtYml0IHdvcmQgYXJyYXkgdG8gYSAzMi1iaXQgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge0NyeXB0b0pTLmxpYi5Xb3JkQXJyYXl9IFRoaXMgd29yZCBhcnJheSdzIGRhdGEgYXMgYSAzMi1iaXQgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHgzMldvcmRBcnJheSA9IHg2NFdvcmRBcnJheS50b1gzMigpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHRvWDMyOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgeDY0V29yZHMgPSB0aGlzLndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgeDY0V29yZHNMZW5ndGggPSB4NjRXb3Jkcy5sZW5ndGg7XG5cblx0ICAgICAgICAgICAgLy8gQ29udmVydFxuXHQgICAgICAgICAgICB2YXIgeDMyV29yZHMgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4NjRXb3Jkc0xlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICB2YXIgeDY0V29yZCA9IHg2NFdvcmRzW2ldO1xuXHQgICAgICAgICAgICAgICAgeDMyV29yZHMucHVzaCh4NjRXb3JkLmhpZ2gpO1xuXHQgICAgICAgICAgICAgICAgeDMyV29yZHMucHVzaCh4NjRXb3JkLmxvdyk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICByZXR1cm4gWDMyV29yZEFycmF5LmNyZWF0ZSh4MzJXb3JkcywgdGhpcy5zaWdCeXRlcyk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENyZWF0ZXMgYSBjb3B5IG9mIHRoaXMgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1g2NFdvcmRBcnJheX0gVGhlIGNsb25lLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgY2xvbmUgPSB4NjRXb3JkQXJyYXkuY2xvbmUoKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBjbG9uZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB2YXIgY2xvbmUgPSBCYXNlLmNsb25lLmNhbGwodGhpcyk7XG5cblx0ICAgICAgICAgICAgLy8gQ2xvbmUgXCJ3b3Jkc1wiIGFycmF5XG5cdCAgICAgICAgICAgIHZhciB3b3JkcyA9IGNsb25lLndvcmRzID0gdGhpcy53b3Jkcy5zbGljZSgwKTtcblxuXHQgICAgICAgICAgICAvLyBDbG9uZSBlYWNoIFg2NFdvcmQgb2JqZWN0XG5cdCAgICAgICAgICAgIHZhciB3b3Jkc0xlbmd0aCA9IHdvcmRzLmxlbmd0aDtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3b3Jkc0xlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICB3b3Jkc1tpXSA9IHdvcmRzW2ldLmNsb25lKCk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICByZXR1cm4gY2xvbmU7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cdH0oKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlM7XG5cbn0pKTsiLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuZHBfX2lucHV0X3dyYXB7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJTtib3gtc2l6aW5nOnVuc2V0fS5kcF9faW5wdXRfd3JhcDpmb2N1c3tib3JkZXItY29sb3I6dmFyKC0tZHAtYm9yZGVyLWNvbG9yLWhvdmVyKTtvdXRsaW5lOm5vbmV9LmRwX19pbnB1dHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRwLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tZHAtYm9yZGVyLXJhZGl1cyk7Zm9udC1mYW1pbHk6dmFyKC0tZHAtZm9udC1mYW1pbHkpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tZHAtYm9yZGVyLWNvbG9yKTtvdXRsaW5lOm5vbmU7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjJzIGN1YmljLWJlemllcigwLjY0NSwgMC4wNDUsIDAuMzU1LCAxKTt3aWR0aDoxMDAlO2ZvbnQtc2l6ZTp2YXIoLS1kcC1mb250LXNpemUpO2xpbmUtaGVpZ2h0OmNhbGModmFyKC0tZHAtZm9udC1zaXplKSoxLjUpO3BhZGRpbmc6dmFyKC0tZHAtaW5wdXQtcGFkZGluZyk7Y29sb3I6dmFyKC0tZHAtdGV4dC1jb2xvcik7Ym94LXNpemluZzpib3JkZXItYm94fS5kcF9faW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXJ7b3BhY2l0eTouN30uZHBfX2lucHV0OjpwbGFjZWhvbGRlcntvcGFjaXR5Oi43fS5kcF9faW5wdXQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWRwLWJvcmRlci1jb2xvci1ob3Zlcil9LmRwX19pbnB1dF9yZWd7Y2FyZXQtY29sb3I6cmdiYSgwLDAsMCwwKX0uZHBfX2lucHV0X2ZvY3Vze2JvcmRlci1jb2xvcjp2YXIoLS1kcC1ib3JkZXItY29sb3ItaG92ZXIpfS5kcF9fZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1kcC1kaXNhYmxlZC1jb2xvcil9LmRwX19kaXNhYmxlZDo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1kcC1kaXNhYmxlZC1jb2xvci10ZXh0KX0uZHBfX2Rpc2FibGVkOjpwbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1kcC1kaXNhYmxlZC1jb2xvci10ZXh0KX0uZHBfX2lucHV0X2ljb25ze2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOnZhcigtLWRwLWZvbnQtc2l6ZSk7aGVpZ2h0OnZhcigtLWRwLWZvbnQtc2l6ZSk7c3Ryb2tlLXdpZHRoOjA7Zm9udC1zaXplOnZhcigtLWRwLWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6Y2FsYyh2YXIoLS1kcC1mb250LXNpemUpKjEuNSk7cGFkZGluZzo2cHggMTJweDtjb2xvcjp2YXIoLS1kcC1pY29uLWNvbG9yKTtib3gtc2l6aW5nOmNvbnRlbnQtYm94fS5kcF9faW5wdXRfaWNvbntjdXJzb3I6cG9pbnRlcjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO2xlZnQ6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTtjb2xvcjp2YXIoLS1kcC1pY29uLWNvbG9yKX0uZHBfX2NsZWFyX2ljb257cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdodDowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO2N1cnNvcjpwb2ludGVyO2NvbG9yOnZhcigtLWRwLWljb24tY29sb3IpfS5kcF9faW5wdXRfaWNvbl9wYWR7cGFkZGluZy1sZWZ0OnZhcigtLWRwLWlucHV0LWljb24tcGFkZGluZyl9LmRwX19pbnB1dF92YWxpZHtib3gtc2hhZG93OjAgMCB2YXIoLS1kcC1ib3JkZXItcmFkaXVzKSB2YXIoLS1kcC1zdWNjZXNzLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tZHAtc3VjY2Vzcy1jb2xvcil9LmRwX19pbnB1dF92YWxpZDpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tZHAtc3VjY2Vzcy1jb2xvcil9LmRwX19pbnB1dF9pbnZhbGlke2JveC1zaGFkb3c6MCAwIHZhcigtLWRwLWJvcmRlci1yYWRpdXMpIHZhcigtLWRwLWRhbmdlci1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWRwLWRhbmdlci1jb2xvcil9LmRwX19pbnB1dF9pbnZhbGlkOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1kcC1kYW5nZXItY29sb3IpfS5kcF9fbWVudXtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOnZhcigtLWRwLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tZHAtYm9yZGVyLXJhZGl1cyk7bWluLXdpZHRoOnZhcigtLWRwLW1lbnUtbWluLXdpZHRoKTtmb250LWZhbWlseTp2YXIoLS1kcC1mb250LWZhbWlseSk7Zm9udC1zaXplOnZhcigtLWRwLWZvbnQtc2l6ZSk7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2JvcmRlcjoxcHggc29saWQgdmFyKC0tZHAtbWVudS1ib3JkZXItY29sb3IpO2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZHBfX21lbnU6OmFmdGVye2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZHBfX21lbnU6OmJlZm9yZXtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmRwX19tZW51OmZvY3Vze2JvcmRlcjoxcHggc29saWQgdmFyKC0tZHAtbWVudS1ib3JkZXItY29sb3IpO291dGxpbmU6bm9uZX0uZHBfX21lbnVfaW5uZXJ7cGFkZGluZzp2YXIoLS1kcC1tZW51LXBhZGRpbmcpfS5kcF9fbWVudV9pbmRleHt6LWluZGV4Ojk5OTk5fS5kcF9fbWVudV9yZWFkb25seSwuZHBfX21lbnVfZGlzYWJsZWR7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDt6LWluZGV4OjF9LmRwX19tZW51X2Rpc2FibGVke2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuNSk7Y3Vyc29yOm5vdC1hbGxvd2VkfS5kcF9fbWVudV9yZWFkb25seXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMCk7Y3Vyc29yOmRlZmF1bHR9LmRwX19hcnJvd190b3B7bGVmdDo1MCU7dG9wOi0xcHg7aGVpZ2h0OjEycHg7d2lkdGg6MTJweDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRwLWJhY2tncm91bmQtY29sb3IpO3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1sZWZ0OjFweCBzb2xpZCB2YXIoLS1kcC1tZW51LWJvcmRlci1jb2xvcik7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tZHAtbWVudS1ib3JkZXItY29sb3IpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwgLTUwJSkgcm90YXRlKDQ1ZGVnKX0uZHBfX2Fycm93X2JvdHRvbXtsZWZ0OjUwJTtib3R0b206LTFweDtoZWlnaHQ6MTJweDt3aWR0aDoxMnB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHAtYmFja2dyb3VuZC1jb2xvcik7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCB2YXIoLS1kcC1tZW51LWJvcmRlci1jb2xvcik7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tZHAtbWVudS1ib3JkZXItY29sb3IpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwgNTAlKSByb3RhdGUoNDVkZWcpfS5kcF9fYWN0aW9uX2V4dHJhe3RleHQtYWxpZ246Y2VudGVyO3BhZGRpbmc6MnB4IDB9LmRwX19wcmVzZXRfcmFuZ2Vze3BhZGRpbmc6NXB4O2JvcmRlci1yaWdodDoxcHggc29saWQgdmFyKC0tZHAtYm9yZGVyLWNvbG9yKX0uZHBfX3NpZGViYXJfbGVmdHtwYWRkaW5nOjVweDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHZhcigtLWRwLWJvcmRlci1jb2xvcil9LmRwX19zaWRlYmFyX3JpZ2h0e3BhZGRpbmc6NXB4O2JvcmRlci1sZWZ0OjFweCBzb2xpZCB2YXIoLS1kcC1ib3JkZXItY29sb3IpfS5kcF9fcHJlc2V0X3Jhbmdle3BhZGRpbmc6NXB4O2Rpc3BsYXk6YmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO2NvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tZHAtYm9yZGVyLXJhZGl1cyk7dHJhbnNpdGlvbjp2YXIoLS1kcC1jb21tb24tdHJhbnNpdGlvbil9LmRwX19wcmVzZXRfcmFuZ2U6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kcC1ob3Zlci1jb2xvcik7Y3Vyc29yOnBvaW50ZXJ9LmRwX19tZW51X2NvbnRlbnRfd3JhcHBlcntkaXNwbGF5OmZsZXh9LmRwX19jYWxlbmRhcl9oZWFkZXJ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2NvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpO3doaXRlLXNwYWNlOm5vd3JhcDtmb250LXdlaWdodDpib2xkfS5kcF9fY2FsZW5kYXJfaGVhZGVyX2l0ZW17dGV4dC1hbGlnbjpjZW50ZXI7ZmxleC1ncm93OjE7aGVpZ2h0OnZhcigtLWRwLWNlbGwtc2l6ZSk7cGFkZGluZzp2YXIoLS1kcC1jZWxsLXBhZGRpbmcpO3dpZHRoOnZhcigtLWRwLWNlbGwtc2l6ZSk7Ym94LXNpemluZzpib3JkZXItYm94fS5kcF9fY2FsZW5kYXJfcm93e2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW46dmFyKC0tZHAtcm93LW1hcmluZyl9LmRwX19jYWxlbmRhcl9pdGVte3RleHQtYWxpZ246Y2VudGVyO2ZsZXgtZ3JvdzoxO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjp2YXIoLS1kcC10ZXh0LWNvbG9yKX0uZHBfX2NhbGVuZGFye3Bvc2l0aW9uOnJlbGF0aXZlfS5kcF9fY2FsZW5kYXJfaGVhZGVyX2NlbGx7Ym9yZGVyLWJvdHRvbTp0aGluIHNvbGlkIHZhcigtLWRwLWJvcmRlci1jb2xvcik7cGFkZGluZzp2YXIoLS1kcC1jYWxlbmRhci1oZWFkZXItY2VsbC1wYWRkaW5nKX0uZHBfX2NlbGxfaW5uZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjt0ZXh0LWFsaWduOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2JvcmRlci1yYWRpdXM6dmFyKC0tZHAtY2VsbC1ib3JkZXItcmFkaXVzKTtoZWlnaHQ6dmFyKC0tZHAtY2VsbC1zaXplKTtwYWRkaW5nOnZhcigtLWRwLWNlbGwtcGFkZGluZyk7d2lkdGg6dmFyKC0tZHAtY2VsbC1zaXplKTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsMCk7Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlfS5kcF9fY2VsbF9pbm5lcjpob3Zlcnt0cmFuc2l0aW9uOmFsbCAuMnN9LmRwX19jZWxsX2F1dG9fcmFuZ2Vfc3RhcnQsLmRwX19kYXRlX2hvdmVyX3N0YXJ0OmhvdmVyLC5kcF9fcmFuZ2Vfc3RhcnR7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5kcF9fY2VsbF9hdXRvX3JhbmdlX2VuZCwuZHBfX2RhdGVfaG92ZXJfZW5kOmhvdmVyLC5kcF9fcmFuZ2VfZW5ke2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjB9LmRwX19yYW5nZV9lbmQsLmRwX19yYW5nZV9zdGFydCwuZHBfX2FjdGl2ZV9kYXRle2JhY2tncm91bmQ6dmFyKC0tZHAtcHJpbWFyeS1jb2xvcik7Y29sb3I6dmFyKC0tZHAtcHJpbWFyeS10ZXh0LWNvbG9yKX0uZHBfX2NlbGxfYXV0b19yYW5nZV9lbmQsLmRwX19jZWxsX2F1dG9fcmFuZ2Vfc3RhcnR7Ym9yZGVyLXRvcDoxcHggZGFzaGVkIHZhcigtLWRwLXByaW1hcnktY29sb3IpO2JvcmRlci1ib3R0b206MXB4IGRhc2hlZCB2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKX0uZHBfX2RhdGVfaG92ZXJfZW5kOmhvdmVyLC5kcF9fZGF0ZV9ob3Zlcl9zdGFydDpob3ZlciwuZHBfX2RhdGVfaG92ZXI6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1kcC1ob3Zlci1jb2xvcik7Y29sb3I6dmFyKC0tZHAtaG92ZXItdGV4dC1jb2xvcil9LmRwX19jZWxsX29mZnNldHtjb2xvcjp2YXIoLS1kcC1zZWNvbmRhcnktY29sb3IpfS5kcF9fY2VsbF9kaXNhYmxlZHtjb2xvcjp2YXIoLS1kcC1zZWNvbmRhcnktY29sb3IpO2N1cnNvcjpub3QtYWxsb3dlZH0uZHBfX3JhbmdlX2JldHdlZW57YmFja2dyb3VuZDp2YXIoLS1kcC1ob3Zlci1jb2xvcik7Ym9yZGVyLXJhZGl1czowO2JvcmRlcjoxcHggc29saWQgdmFyKC0tZHAtaG92ZXItY29sb3IpfS5kcF9fcmFuZ2VfYmV0d2Vlbl93ZWVre2JhY2tncm91bmQ6dmFyKC0tZHAtcHJpbWFyeS1jb2xvcik7Y29sb3I6dmFyKC0tZHAtcHJpbWFyeS10ZXh0LWNvbG9yKTtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tZHAtcHJpbWFyeS1jb2xvcik7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tZHAtcHJpbWFyeS1jb2xvcil9LmRwX190b2RheXtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWRwLXByaW1hcnktY29sb3IpfS5kcF9fd2Vla19udW17Y29sb3I6dmFyKC0tZHAtc2Vjb25kYXJ5LWNvbG9yKTt0ZXh0LWFsaWduOmNlbnRlcn0uZHBfX2NlbGxfYXV0b19yYW5nZXtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXRvcDoxcHggZGFzaGVkIHZhcigtLWRwLXByaW1hcnktY29sb3IpO2JvcmRlci1ib3R0b206MXB4IGRhc2hlZCB2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKX0uZHBfX2NlbGxfYXV0b19yYW5nZV9zdGFydHtib3JkZXItbGVmdDoxcHggZGFzaGVkIHZhcigtLWRwLXByaW1hcnktY29sb3IpfS5kcF9fY2VsbF9hdXRvX3JhbmdlX2VuZHtib3JkZXItcmlnaHQ6MXB4IGRhc2hlZCB2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKX0uZHBfX2NhbGVuZGFyX2hlYWRlcl9zZXBhcmF0b3J7d2lkdGg6MTAwJTtoZWlnaHQ6MXB4O2JhY2tncm91bmQ6dmFyKC0tZHAtYm9yZGVyLWNvbG9yKX0uZHBfX2NhbGVuZGFyX25leHR7bWFyZ2luLWxlZnQ6dmFyKC0tZHAtbXVsdGktY2FsZW5kYXJzLXNwYWNpbmcpfS5kcF9fbWFya2VyX2xpbmUsLmRwX19tYXJrZXJfZG90e2hlaWdodDo1cHg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kcC1tYXJrZXItY29sb3IpO3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowfS5kcF9fbWFya2VyX2RvdHt3aWR0aDo1cHg7Ym9yZGVyLXJhZGl1czo1MCU7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSl9LmRwX19tYXJrZXJfbGluZXt3aWR0aDoxMDAlO2xlZnQ6MH0uZHBfX21hcmtlcl90b29sdGlwe3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6dmFyKC0tZHAtYm9yZGVyLXJhZGl1cyk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kcC10b29sdGlwLWNvbG9yKTtwYWRkaW5nOjVweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWRwLWJvcmRlci1jb2xvcik7ei1pbmRleDo5OTk5OTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y3Vyc29yOmRlZmF1bHR9LmRwX190b29sdGlwX2NvbnRlbnR7d2hpdGUtc3BhY2U6bm93cmFwfS5kcF9fdG9vbHRpcF90ZXh0e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC1mbG93OnJvdyBub3dyYXA7Y29sb3I6dmFyKC0tZHAtdGV4dC1jb2xvcil9LmRwX190b29sdGlwX21hcmt7aGVpZ2h0OjVweDt3aWR0aDo1cHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kcC10ZXh0LWNvbG9yKTtjb2xvcjp2YXIoLS1kcC10ZXh0LWNvbG9yKTttYXJnaW4tcmlnaHQ6NXB4fS5kcF9fYXJyb3dfYm90dG9tX3Rwe2JvdHRvbTowO2hlaWdodDo4cHg7d2lkdGg6OHB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHAtdG9vbHRpcC1jb2xvcik7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCB2YXIoLS1kcC1ib3JkZXItY29sb3IpO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWRwLWJvcmRlci1jb2xvcik7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLCA1MCUpIHJvdGF0ZSg0NWRlZyl9LmRwX19pbnN0YW5jZV9jYWxlbmRhcntwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlfUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKHdpZHRoIDw9IDYwMHB4KXsuZHBfX2ZsZXhfZGlzcGxheXtmbGV4LWRpcmVjdGlvbjpjb2x1bW59fS5kcF9fY2VsbF9oaWdobGlnaHR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kcC1oaWdobGlnaHQtY29sb3IpfS5kcF9fbW9udGhfeWVhcl9yb3d7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6dmFyKC0tZHAtbW9udGgteWVhci1yb3ctaGVpZ2h0KTtjb2xvcjp2YXIoLS1kcC10ZXh0LWNvbG9yKTtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmRwX19pbm5lcl9uYXZ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2N1cnNvcjpwb2ludGVyO2hlaWdodDp2YXIoLS1kcC1tb250aC15ZWFyLXJvdy1idXR0b24tc2l6ZSk7d2lkdGg6dmFyKC0tZHAtbW9udGgteWVhci1yb3ctYnV0dG9uLXNpemUpO2NvbG9yOnZhcigtLWRwLWljb24tY29sb3IpO3RleHQtYWxpZ246Y2VudGVyO2JvcmRlci1yYWRpdXM6NTAlfS5kcF9faW5uZXJfbmF2IHN2Z3toZWlnaHQ6dmFyKC0tZHAtYnV0dG9uLWljb24taGVpZ2h0KTt3aWR0aDp2YXIoLS1kcC1idXR0b24taWNvbi1oZWlnaHQpfS5kcF9faW5uZXJfbmF2OmhvdmVye2JhY2tncm91bmQ6dmFyKC0tZHAtaG92ZXItY29sb3IpO2NvbG9yOnZhcigtLWRwLWhvdmVyLWljb24tY29sb3IpfS5kcF9faW5uZXJfbmF2X2Rpc2FibGVkOmhvdmVyLC5kcF9faW5uZXJfbmF2X2Rpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tZHAtZGlzYWJsZWQtY29sb3IpO2NvbG9yOnZhcigtLWRwLWRpc2FibGVkLWNvbG9yLXRleHQpO2N1cnNvcjpub3QtYWxsb3dlZH0uZHBfX21vbnRoX3llYXJfc2VsZWN0e3dpZHRoOjUwJTt0ZXh0LWFsaWduOmNlbnRlcjtjdXJzb3I6cG9pbnRlcjtoZWlnaHQ6dmFyKC0tZHAtbW9udGgteWVhci1yb3ctaGVpZ2h0KTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Ym9yZGVyLXJhZGl1czp2YXIoLS1kcC1ib3JkZXItcmFkaXVzKTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6dmFyKC0tZHAtdGV4dC1jb2xvcil9LmRwX19tb250aF95ZWFyX3NlbGVjdDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWRwLWhvdmVyLWNvbG9yKTtjb2xvcjp2YXIoLS1kcC1ob3Zlci10ZXh0LWNvbG9yKX0uZHBfX21vbnRoX3llYXJfd3JhcHtkaXNwbGF5OmZsZXg7d2lkdGg6MTAwJX0uZHBfX3llYXJfZGlzYWJsZV9zZWxlY3R7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZH0uZHBfX292ZXJsYXl7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kOnZhcigtLWRwLWJhY2tncm91bmQtY29sb3IpO3RvcDowO2xlZnQ6MDt0cmFuc2l0aW9uOm9wYWNpdHkgMXMgZWFzZS1vdXQ7ei1pbmRleDo5OTk5OTtmb250LWZhbWlseTp2YXIoLS1kcC1mb250LWZhbWlseSk7Y29sb3I6dmFyKC0tZHAtdGV4dC1jb2xvcik7Ym94LXNpemluZzpib3JkZXItYm94fS5kcF9fb3ZlcmxheV9jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNre2JveC1zaGFkb3c6dmFyKC0tZHAtc2Nyb2xsLWJhci1iYWNrZ3JvdW5kKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRwLXNjcm9sbC1iYXItYmFja2dyb3VuZCl9LmRwX19vdmVybGF5X2NvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXJ7d2lkdGg6NXB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHAtc2Nyb2xsLWJhci1iYWNrZ3JvdW5kKX0uZHBfX292ZXJsYXlfY29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhci10aHVtYntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRwLXNjcm9sbC1iYXItY29sb3IpO2JvcmRlci1yYWRpdXM6MTBweH0uZHBfX292ZXJsYXk6Zm9jdXN7Ym9yZGVyOm5vbmU7b3V0bGluZTpub25lfS5kcF9fY29udGFpbmVyX2ZsZXh7ZGlzcGxheTpmbGV4fS5kcF9fY29udGFpbmVyX2Jsb2Nre2Rpc3BsYXk6YmxvY2t9LmRwX19vdmVybGF5X2NvbnRhaW5lcntmbGV4LWRpcmVjdGlvbjpjb2x1bW47b3ZlcmZsb3cteTphdXRvfS5kcF9fdGltZV9waWNrZXJfb3ZlcmxheV9jb250YWluZXJ7aGVpZ2h0OjEwMCV9LmRwX19vdmVybGF5X3Jvd3twYWRkaW5nOjA7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6ZmxleDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvO2ZsZXgtd3JhcDp3cmFwO21heC13aWR0aDoxMDAlO3dpZHRoOjEwMCU7YWxpZ24taXRlbXM6Y2VudGVyfS5kcF9fZmxleF9yb3d7ZmxleDoxfS5kcF9fb3ZlcmxheV9jb2x7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjMzJTtwYWRkaW5nOnZhcigtLWRwLW92ZXJsYXktY29sLXBhZGRpbmcpO3doaXRlLXNwYWNlOm5vd3JhcH0uZHBfX292ZXJsYXlfY2VsbF9wYWR7cGFkZGluZzp2YXIoLS1kcC1jb21tb24tcGFkZGluZykgMH0uZHBfX292ZXJsYXlfY2VsbF9hY3RpdmV7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyLXJhZGl1czp2YXIoLS1kcC1ib3JkZXItcmFkaXVzKTt0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5kOnZhcigtLWRwLXByaW1hcnktY29sb3IpO2NvbG9yOnZhcigtLWRwLXByaW1hcnktdGV4dC1jb2xvcil9LmRwX19vdmVybGF5X2NlbGx7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyLXJhZGl1czp2YXIoLS1kcC1ib3JkZXItcmFkaXVzKTt0ZXh0LWFsaWduOmNlbnRlcn0uZHBfX292ZXJsYXlfY2VsbDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWRwLWhvdmVyLWNvbG9yKTtjb2xvcjp2YXIoLS1kcC1ob3Zlci10ZXh0LWNvbG9yKX0uZHBfX2NlbGxfaW5fYmV0d2VlbntiYWNrZ3JvdW5kOnZhcigtLWRwLWhvdmVyLWNvbG9yKTtjb2xvcjp2YXIoLS1kcC1ob3Zlci10ZXh0LWNvbG9yKX0uZHBfX292ZXJfYWN0aW9uX3Njcm9sbHtyaWdodDo1cHg7Ym94LXNpemluZzpib3JkZXItYm94fS5kcF9fb3ZlcmxheV9jZWxsX2Rpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kOnZhcigtLWRwLWRpc2FibGVkLWNvbG9yKX0uZHBfX292ZXJsYXlfY2VsbF9kaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWRwLWRpc2FibGVkLWNvbG9yKX0uZHBfX292ZXJsYXlfY2VsbF9hY3RpdmVfZGlzYWJsZWR7Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tncm91bmQ6dmFyKC0tZHAtcHJpbWFyeS1kaXNhYmxlZC1jb2xvcil9LmRwX19vdmVybGF5X2NlbGxfYWN0aXZlX2Rpc2FibGVkOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tZHAtcHJpbWFyeS1kaXNhYmxlZC1jb2xvcil9LmRwX19tb250aF9waWNrZXJfaGVhZGVye2Rpc3BsYXk6ZmxleDt3aWR0aDoxMDAlO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtoZWlnaHQ6dmFyKC0tZHAtY2VsbC1zaXplKX0uZHBfX3RpbWVfaW5wdXR7d2lkdGg6MTAwJTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2ZvbnQtZmFtaWx5OnZhcigtLWRwLWZvbnQtZmFtaWx5KTtjb2xvcjp2YXIoLS1kcC10ZXh0LWNvbG9yKX0uZHBfX3RpbWVfY29sX3JlZ3twYWRkaW5nOjAgMjBweH0uZHBfX3RpbWVfY29sX3JlZ193aXRoX2J1dHRvbntwYWRkaW5nOjAgMTVweH0uZHBfX3RpbWVfY29sX3NlY3twYWRkaW5nOjAgMTBweH0uZHBfX3RpbWVfY29sX3NlY193aXRoX2J1dHRvbntwYWRkaW5nOjAgNXB4fS5kcF9fdGltZV9jb2x7Zm9udC1zaXplOnZhcigtLWRwLXRpbWUtZm9udC1zaXplKTt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5kcF9fdGltZV9kaXNwbGF5e2N1cnNvcjpwb2ludGVyO2NvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tZHAtYm9yZGVyLXJhZGl1cyk7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3BhZGRpbmc6MCAzcHh9LmRwX190aW1lX2Rpc3BsYXk6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1kcC1ob3Zlci1jb2xvcik7Y29sb3I6dmFyKC0tZHAtaG92ZXItdGV4dC1jb2xvcil9LmRwX19pbmNfZGVjX2J1dHRvbntwYWRkaW5nOjVweDttYXJnaW46MDtoZWlnaHQ6dmFyKC0tZHAtdGltZS1pbmMtZGVjLWJ1dHRvbi1zaXplKTt3aWR0aDp2YXIoLS1kcC10aW1lLWluYy1kZWMtYnV0dG9uLXNpemUpO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtjdXJzb3I6cG9pbnRlcjtib3JkZXItcmFkaXVzOjUwJTtjb2xvcjp2YXIoLS1kcC1pY29uLWNvbG9yKTtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmRwX19pbmNfZGVjX2J1dHRvbiBzdmd7aGVpZ2h0OnZhcigtLWRwLXRpbWUtaW5jLWRlYy1idXR0b24tc2l6ZSk7d2lkdGg6dmFyKC0tZHAtdGltZS1pbmMtZGVjLWJ1dHRvbi1zaXplKX0uZHBfX2luY19kZWNfYnV0dG9uOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tZHAtaG92ZXItY29sb3IpO2NvbG9yOnZhcigtLWRwLXByaW1hcnktY29sb3IpfS5kcF9faW5jX2RlY19idXR0b25fZGlzYWJsZWQ6aG92ZXIsLmRwX19pbmNfZGVjX2J1dHRvbl9kaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLWRwLWRpc2FibGVkLWNvbG9yKTtjb2xvcjp2YXIoLS1kcC1kaXNhYmxlZC1jb2xvci10ZXh0KTtjdXJzb3I6bm90LWFsbG93ZWR9LmRwX19wbV9hbV9idXR0b257YmFja2dyb3VuZDp2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKTtjb2xvcjp2YXIoLS1kcC1wcmltYXJ5LXRleHQtY29sb3IpO2JvcmRlcjpub25lO3BhZGRpbmc6dmFyKC0tZHAtY29tbW9uLXBhZGRpbmcpO2JvcmRlci1yYWRpdXM6dmFyKC0tZHAtYm9yZGVyLXJhZGl1cyk7Y3Vyc29yOnBvaW50ZXJ9LmRwX19hY3Rpb25fcm93e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7d2lkdGg6MTAwJTtwYWRkaW5nOnZhcigtLWRwLWNvbW1vbi1wYWRkaW5nKTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6dmFyKC0tZHAtdGV4dC1jb2xvcik7ZmxleC1mbG93OnJvdyBub3dyYXB9LmRwX19hY3Rpb25fcm93IHN2Z3toZWlnaHQ6dmFyKC0tZHAtYnV0dG9uLWljb24taGVpZ2h0KTt3aWR0aDphdXRvfS5kcF9fc2VsZWN0aW9uX3ByZXZpZXd7ZGlzcGxheTpibG9jaztjb2xvcjp2YXIoLS1kcC10ZXh0LWNvbG9yKTtmb250LXNpemU6dmFyKC0tZHAtcHJldmlldy1mb250LXNpemUpO292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpc30uZHBfX2FjdGlvbl9idXR0b25ze2Rpc3BsYXk6ZmxleDtmbGV4OjA7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDttYXJnaW4tbGVmdDphdXRvfS5kcF9fYWN0aW9uX2J1dHRvbntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMCk7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLDApO3BhZGRpbmc6dmFyKC0tZHAtYWN0aW9uLWJ1dHRvbnMtcGFkZGluZyk7bGluZS1oZWlnaHQ6aW5pdGlhbDttYXJnaW4tbGVmdDozcHg7aGVpZ2h0OnZhcigtLWRwLWFjdGlvbi1idXR0b24taGVpZ2h0KTtjdXJzb3I6cG9pbnRlcjtib3JkZXItcmFkaXVzOnZhcigtLWRwLWJvcmRlci1yYWRpdXMpfS5kcF9fYWN0aW9uX3NlbGVjdHtiYWNrZ3JvdW5kOnZhcigtLWRwLXByaW1hcnktY29sb3IpO2NvbG9yOnZhcigtLWRwLXByaW1hcnktdGV4dC1jb2xvcil9LmRwX19hY3Rpb25fc2VsZWN0OmhvdmVye2JhY2tncm91bmQ6dmFyKC0tZHAtcHJpbWFyeS1jb2xvcik7dHJhbnNpdGlvbjp2YXIoLS1kcC1hY3Rpb24tcm93LXRyYW5zdGlvbil9LmRwX19hY3Rpb25fc2VsZWN0OmRpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tZHAtcHJpbWFyeS1kaXNhYmxlZC1jb2xvcik7Y3Vyc29yOm5vdC1hbGxvd2VkfS5kcF9fYWN0aW9uX2NhbmNlbHtjb2xvcjp2YXIoLS1kcC10ZXh0LWNvbG9yKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWRwLWJvcmRlci1jb2xvcil9LmRwX19hY3Rpb25fY2FuY2VsOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKTt0cmFuc2l0aW9uOnZhcigtLWRwLWFjdGlvbi1yb3ctdHJhbnN0aW9uKX06cm9vdHstLWRwLWNvbW1vbi10cmFuc2l0aW9uOiBhbGwgMC4xcyBlYXNlLWluOy0tZHAtbWVudS1wYWRkaW5nOiA2cHggOHB4Oy0tZHAtYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjFzOy0tZHAtbWVudS1hcHBlYXItdHJhbnNpdGlvbi10aW1pbmc6IGN1YmljLWJlemllciguNCwgMCwgMSwgMSk7LS1kcC10cmFuc2l0aW9uLXRpbWluZzogZWFzZS1vdXQ7LS1kcC1hY3Rpb24tcm93LXRyYW5zdGlvbjogYWxsIDAuMnMgZWFzZS1pbjstLWRwLWZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBibGlua21hY3N5c3RlbWZvbnQsIFxcXCJTZWdvZSBVSVxcXCIsIHJvYm90bywgb3h5Z2VuLCB1YnVudHUsIGNhbnRhcmVsbCwgXFxcIk9wZW4gU2Fuc1xcXCIsIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIHNhbnMtc2VyaWY7LS1kcC1ib3JkZXItcmFkaXVzOiA0cHg7LS1kcC1jZWxsLWJvcmRlci1yYWRpdXM6IDRweDstLWRwLXRyYW5zaXRpb24tbGVuZ3RoOiAyMnB4Oy0tZHAtdHJhbnNpdGlvbi10aW1pbmctZ2VuZXJhbDogMC4xczstLWRwLWJ1dHRvbi1oZWlnaHQ6IDM1cHg7LS1kcC1tb250aC15ZWFyLXJvdy1oZWlnaHQ6IDM1cHg7LS1kcC1tb250aC15ZWFyLXJvdy1idXR0b24tc2l6ZTogMjVweDstLWRwLWJ1dHRvbi1pY29uLWhlaWdodDogMjBweDstLWRwLWNhbGVuZGFyLXdyYXAtcGFkZGluZzogMCA1cHg7LS1kcC1jZWxsLXNpemU6IDM1cHg7LS1kcC1jZWxsLXBhZGRpbmc6IDVweDstLWRwLWNvbW1vbi1wYWRkaW5nOiAxMHB4Oy0tZHAtaW5wdXQtaWNvbi1wYWRkaW5nOiAzNXB4Oy0tZHAtaW5wdXQtcGFkZGluZzogNnB4IDMwcHggNnB4IDEycHg7LS1kcC1tZW51LW1pbi13aWR0aDogMjYwcHg7LS1kcC1hY3Rpb24tYnV0dG9ucy1wYWRkaW5nOiAxcHggNnB4Oy0tZHAtcm93LW1hcmluZzogNXB4IDA7LS1kcC1jYWxlbmRhci1oZWFkZXItY2VsbC1wYWRkaW5nOiAwLjVyZW07LS1kcC1tdWx0aS1jYWxlbmRhcnMtc3BhY2luZzogMTBweDstLWRwLW92ZXJsYXktY29sLXBhZGRpbmc6IDNweDstLWRwLXRpbWUtaW5jLWRlYy1idXR0b24tc2l6ZTogMzJweDstLWRwLWZvbnQtc2l6ZTogMXJlbTstLWRwLXByZXZpZXctZm9udC1zaXplOiAwLjhyZW07LS1kcC10aW1lLWZvbnQtc2l6ZTogMnJlbTstLWRwLWFjdGlvbi1idXR0b24taGVpZ2h0OiAyMnB4fS5kcF9fdGhlbWVfZGFya3stLWRwLWJhY2tncm91bmQtY29sb3I6ICMyMTIxMjE7LS1kcC10ZXh0LWNvbG9yOiAjZmZmOy0tZHAtaG92ZXItY29sb3I6ICM0ODQ4NDg7LS1kcC1ob3Zlci10ZXh0LWNvbG9yOiAjZmZmOy0tZHAtaG92ZXItaWNvbi1jb2xvcjogIzk1OTU5NTstLWRwLXByaW1hcnktY29sb3I6ICMwMDVjYjI7LS1kcC1wcmltYXJ5LWRpc2FibGVkLWNvbG9yOiAjNjFhOGVhOy0tZHAtcHJpbWFyeS10ZXh0LWNvbG9yOiAjZmZmOy0tZHAtc2Vjb25kYXJ5LWNvbG9yOiAjYTlhOWE5Oy0tZHAtYm9yZGVyLWNvbG9yOiAjMmQyZDJkOy0tZHAtbWVudS1ib3JkZXItY29sb3I6ICMyZDJkMmQ7LS1kcC1ib3JkZXItY29sb3ItaG92ZXI6ICNhYWFlYjc7LS1kcC1kaXNhYmxlZC1jb2xvcjogIzczNzM3MzstLWRwLWRpc2FibGVkLWNvbG9yLXRleHQ6ICNkMGQwZDA7LS1kcC1zY3JvbGwtYmFyLWJhY2tncm91bmQ6ICMyMTIxMjE7LS1kcC1zY3JvbGwtYmFyLWNvbG9yOiAjNDg0ODQ4Oy0tZHAtc3VjY2Vzcy1jb2xvcjogIzAwNzAxYTstLWRwLXN1Y2Nlc3MtY29sb3ItZGlzYWJsZWQ6ICM0MjhmNTk7LS1kcC1pY29uLWNvbG9yOiAjOTU5NTk1Oy0tZHAtZGFuZ2VyLWNvbG9yOiAjZTUzOTM1Oy0tZHAtbWFya2VyLWNvbG9yOiAjZTUzOTM1Oy0tZHAtdG9vbHRpcC1jb2xvcjogIzNlM2UzZTstLWRwLWhpZ2hsaWdodC1jb2xvcjogcmdiKDAgOTIgMTc4IC8gMjAlKX0uZHBfX3RoZW1lX2xpZ2h0ey0tZHAtYmFja2dyb3VuZC1jb2xvcjogI2ZmZjstLWRwLXRleHQtY29sb3I6ICMyMTIxMjE7LS1kcC1ob3Zlci1jb2xvcjogI2YzZjNmMzstLWRwLWhvdmVyLXRleHQtY29sb3I6ICMyMTIxMjE7LS1kcC1ob3Zlci1pY29uLWNvbG9yOiAjOTU5NTk1Oy0tZHAtcHJpbWFyeS1jb2xvcjogIzE5NzZkMjstLWRwLXByaW1hcnktZGlzYWJsZWQtY29sb3I6ICM2YmFjZWE7LS1kcC1wcmltYXJ5LXRleHQtY29sb3I6ICNmOGY1ZjU7LS1kcC1zZWNvbmRhcnktY29sb3I6ICNjMGM0Y2M7LS1kcC1ib3JkZXItY29sb3I6ICNkZGQ7LS1kcC1tZW51LWJvcmRlci1jb2xvcjogI2RkZDstLWRwLWJvcmRlci1jb2xvci1ob3ZlcjogI2FhYWViNzstLWRwLWRpc2FibGVkLWNvbG9yOiAjZjZmNmY2Oy0tZHAtc2Nyb2xsLWJhci1iYWNrZ3JvdW5kOiAjZjNmM2YzOy0tZHAtc2Nyb2xsLWJhci1jb2xvcjogIzk1OTU5NTstLWRwLXN1Y2Nlc3MtY29sb3I6ICM3NmQyNzU7LS1kcC1zdWNjZXNzLWNvbG9yLWRpc2FibGVkOiAjYTNkOWIxOy0tZHAtaWNvbi1jb2xvcjogIzk1OTU5NTstLWRwLWRhbmdlci1jb2xvcjogI2ZmNmY2MDstLWRwLW1hcmtlci1jb2xvcjogI2ZmNmY2MDstLWRwLXRvb2x0aXAtY29sb3I6ICNmYWZhZmE7LS1kcC1kaXNhYmxlZC1jb2xvci10ZXh0OiAjOGU4ZThlOy0tZHAtaGlnaGxpZ2h0LWNvbG9yOiByZ2IoMjUgMTE4IDIxMCAvIDEwJSl9LmRwX19idG57YmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lO2ZvbnQ6aW5oZXJpdDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOnZhcigtLWRwLWNvbW1vbi10cmFuc2l0aW9uKTtsaW5lLWhlaWdodDpub3JtYWx9LmRwX19tYWlue2ZvbnQtZmFtaWx5OnZhcigtLWRwLWZvbnQtZmFtaWx5KTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LmRwX19wb2ludGVye2N1cnNvcjpwb2ludGVyfS5kcF9faWNvbntzdHJva2U6Y3VycmVudGNvbG9yO2ZpbGw6Y3VycmVudGNvbG9yfS5kcF9fYnV0dG9ue3dpZHRoOjEwMCU7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6dmFyKC0tZHAtaWNvbi1jb2xvcik7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjthbGlnbi1jb250ZW50OmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3BhZGRpbmc6dmFyKC0tZHAtY29tbW9uLXBhZGRpbmcpO2JveC1zaXppbmc6Ym9yZGVyLWJveDtoZWlnaHQ6dmFyKC0tZHAtYnV0dG9uLWhlaWdodCl9LmRwX19idXR0b24uZHBfX292ZXJsYXlfYWN0aW9ue3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowfS5kcF9fYnV0dG9uOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tZHAtaG92ZXItY29sb3IpO2NvbG9yOnZhcigtLWRwLWhvdmVyLWljb24tY29sb3IpfS5kcF9fYnV0dG9uIHN2Z3toZWlnaHQ6dmFyKC0tZHAtYnV0dG9uLWljb24taGVpZ2h0KTt3aWR0aDphdXRvfS5kcF9fYnV0dG9uX2JvdHRvbXtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWRwLWJvcmRlci1yYWRpdXMpO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWRwLWJvcmRlci1yYWRpdXMpfS5kcF9fZmxleF9kaXNwbGF5e2Rpc3BsYXk6ZmxleH0uZHBfX2ZsZXhfZGlzcGxheV93aXRoX2lucHV0e2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5kcF9fcmVsYXRpdmV7cG9zaXRpb246cmVsYXRpdmV9LmNhbGVuZGFyLW5leHQtZW50ZXItYWN0aXZlLC5jYWxlbmRhci1uZXh0LWxlYXZlLWFjdGl2ZSwuY2FsZW5kYXItcHJldi1lbnRlci1hY3RpdmUsLmNhbGVuZGFyLXByZXYtbGVhdmUtYWN0aXZle3RyYW5zaXRpb246YWxsIHZhcigtLWRwLXRyYW5zaXRpb24tdGltaW5nLWdlbmVyYWwpIGVhc2Utb3V0fS5jYWxlbmRhci1uZXh0LWVudGVyLWZyb217b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVYKHZhcigtLWRwLXRyYW5zaXRpb24tbGVuZ3RoKSl9LmNhbGVuZGFyLW5leHQtbGVhdmUtdG97b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVYKGNhbGModmFyKC0tZHAtdHJhbnNpdGlvbi1sZW5ndGgpICogLTEpKX0uY2FsZW5kYXItcHJldi1lbnRlci1mcm9te29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWChjYWxjKHZhcigtLWRwLXRyYW5zaXRpb24tbGVuZ3RoKSAqIC0xKSl9LmNhbGVuZGFyLXByZXYtbGVhdmUtdG97b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVYKHZhcigtLWRwLXRyYW5zaXRpb24tbGVuZ3RoKSl9LmRwLXNsaWRlLXVwLWVudGVyLWFjdGl2ZSwuZHAtc2xpZGUtdXAtbGVhdmUtYWN0aXZlLC5kcC1zbGlkZS1kb3duLWVudGVyLWFjdGl2ZSwuZHAtc2xpZGUtZG93bi1sZWF2ZS1hY3RpdmV7dHJhbnNpdGlvbjphbGwgdmFyKC0tZHAtYW5pbWF0aW9uLWR1cmF0aW9uKSB2YXIoLS1kcC10cmFuc2l0aW9uLXRpbWluZyl9LmRwLXNsaWRlLWRvd24tbGVhdmUtdG8sLmRwLXNsaWRlLXVwLWVudGVyLWZyb217b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKHZhcigtLWRwLXRyYW5zaXRpb24tbGVuZ3RoKSl9LmRwLXNsaWRlLWRvd24tZW50ZXItZnJvbSwuZHAtc2xpZGUtdXAtbGVhdmUtdG97b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKGNhbGModmFyKC0tZHAtdHJhbnNpdGlvbi1sZW5ndGgpICogLTEpKX0uZHBfX21lbnVfdHJhbnNpdGlvbmVke3RyYW5zaXRpb246YWxsIHZhcigtLWRwLWFuaW1hdGlvbi1kdXJhdGlvbikgdmFyKC0tZHAtbWVudS1hcHBlYXItdHJhbnNpdGlvbi10aW1pbmcpfS8qIyBzb3VyY2VNYXBwaW5nVVJMPW1haW4uY3NzLm1hcCAqL1xcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AdnVlcGljL3Z1ZS1kYXRlcGlja2VyL3NyYy9WdWVEYXRlUGlja2VyL3N0eWxlL2NvbXBvbmVudHMvX0RhdGVwaWNrZXJJbnB1dC5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQHZ1ZXBpYy92dWUtZGF0ZXBpY2tlci9zcmMvVnVlRGF0ZVBpY2tlci9zdHlsZS9jb21wb25lbnRzL19EYXRlcGlja2VyTWVudS5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQHZ1ZXBpYy92dWUtZGF0ZXBpY2tlci9zcmMvVnVlRGF0ZVBpY2tlci9zdHlsZS9jb21wb25lbnRzL19DYWxlbmRhci5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQHZ1ZXBpYy92dWUtZGF0ZXBpY2tlci9zcmMvVnVlRGF0ZVBpY2tlci9zdHlsZS9jb21wb25lbnRzL19Nb250aFllYXJJbnB1dC5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQHZ1ZXBpYy92dWUtZGF0ZXBpY2tlci9zcmMvVnVlRGF0ZVBpY2tlci9zdHlsZS9jb21wb25lbnRzL19TZWxlY3Rpb25HcmlkLnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AdnVlcGljL3Z1ZS1kYXRlcGlja2VyL3NyYy9WdWVEYXRlUGlja2VyL3N0eWxlL2NvbXBvbmVudHMvX1RpbWVJbnB1dC5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQHZ1ZXBpYy92dWUtZGF0ZXBpY2tlci9zcmMvVnVlRGF0ZVBpY2tlci9zdHlsZS9jb21wb25lbnRzL19BY3Rpb25Sb3cuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0B2dWVwaWMvdnVlLWRhdGVwaWNrZXIvc3JjL1Z1ZURhdGVQaWNrZXIvc3R5bGUvbWFpbi5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLGdCQUNFLGlCQUFBLENBQ0EsVUFBQSxDQUNBLGdCQUFBLENBRUEsc0JBQ0UseUNBQUEsQ0FDQSxZQUFBLENBSUosV0FDRSwyQ0FBQSxDQUNBLHFDQUFBLENBQ0EsaUNBQUEsQ0FDQSx1Q0FBQSxDQUNBLFlBQUEsQ0FDQSxnRUFBQSxDQUNBLFVBQUEsQ0FDQSw2QkFBQSxDQUNBLHlDQUFBLENBQ0EsK0JBQUEsQ0FDQSwwQkFBQSxDQUNBLHFCQUFBLENBRUEsNkJBQ0UsVUFBQSxDQURGLHdCQUNFLFVBQUEsQ0FHRixpQkFDRSx5Q0FBQSxDQUlKLGVBQ0UseUJBQUEsQ0FHRixpQkFDRSx5Q0FBQSxDQUdGLGNBQ0UsbUNBQUEsQ0FFQSxnQ0FDRSxtQ0FBQSxDQURGLDJCQUNFLG1DQUFBLENBSUosaUJBQ0Usb0JBQUEsQ0FDQSx5QkFBQSxDQUNBLDBCQUFBLENBQ0EsY0FBQSxDQUNBLDZCQUFBLENBQ0EseUNBQUEsQ0FDQSxnQkFBQSxDQUNBLDBCQUFBLENBQ0Esc0JBQUEsQ0FHRixnQkFDRSxjQUFBLENBQ0EsaUJBQUEsQ0FDQSxPQUFBLENBQ0EsTUFBQSxDQUNBLDBCQUFBLENBQ0EsMEJBQUEsQ0FHRixnQkFDRSxpQkFBQSxDQUNBLE9BQUEsQ0FDQSxPQUFBLENBQ0EsMEJBQUEsQ0FDQSxjQUFBLENBQ0Es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QUEsQ0FDQSwyQkFBQSxDQUNBLG9DQUFBLENBQ0Esd0JBQUEsQ0FDQSwwQkFBQSxDQUNBLDBCQUFBLENBQ0EsMkJBQUEsQ0FDQSxpQ0FBQSxDQUNBLDJDQUFBLENBR0YsU0FDRSxlQUFBLENBQ0EsV0FBQSxDQUNBLFlBQUEsQ0FDQSxjQUFBLENBQ0Esc0NBQUEsQ0FDQSxrQkFBQSxDQUdGLFVBQ0UsaUNBQUEsQ0FDQSx3QkFBQSxDQUFBLHFCQUFBLENBQUEsZ0JBQUEsQ0FDQSxxQkFBQSxDQUNBLGlCQUFBLENBQ0EsVUFBQSxDQUdGLGFBQ0UsY0FBQSxDQUlGLFVBQ0UsbUJBQUEsQ0FDQSxpQkFBQSxDQUlGLFlBQ0UsVUFBQSxDQUNBLGlCQUFBLENBQ0EsMEJBQUEsQ0FDQSxjQUFBLENBQ0EsWUFBQSxDQUNBLGtCQUFBLENBQ0Esb0JBQUEsQ0FDQSxzQkFBQSxDQUNBLGdDQUFBLENBQ0EscUJBQUEsQ0FDQSw4QkFBQSxDQUVBLCtCQUNFLGlCQUFBLENBQ0EsUUFBQSxDQUdGLGtCQUNFLGdDQUFBLENBQ0EsZ0NBQUEsQ0FHRixnQkFDRSxtQ0FBQSxDQUNBLFVBQUEsQ0FJSixtQkFDRSxpREFBQSxDQUNBLGtEQUFBLENBR0Ysa0JBQ0UsWUFBQSxDQUdGLDZCQUNFLHFCQUFBLENBQ0Esc0JBQUEsQ0FHRixjQUNFLGlCQUFBLENBR0YsZ0hBSUUsMkRBQUEsQ0FHRiwwQkFDRSxTQUFBLENBQ0EsaURBQUEsQ0FHRix3QkFDRSxTQUFBLENBQ0EsNERBQUEsQ0FHRiwwQkFDRSxTQUFBLENBQ0EsNERBQUEsQ0FHRix3QkFDRSxTQUFBLENBQ0EsaURBQUEsQ0FHRiw0R0FJRSx1RUFBQSxDQUdGLGdEQUVFLFNBQUEsQ0FDQSxpREFBQSxDQUdGLGdEQUVFLFNBQUEsQ0FDQSw0REFBQSxDQUdGLHVCQUNFLG1GQUFBLENBQUEsbUNBQUFcIixcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIubXVsdGlzZWxlY3R7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6dmFyKC0tbXMtYmcsI2ZmZik7Ym9yZGVyOnZhcigtLW1zLWJvcmRlci13aWR0aCwxcHgpIHNvbGlkIHZhcigtLW1zLWJvcmRlci1jb2xvciwjZDFkNWRiKTtib3JkZXItcmFkaXVzOnZhcigtLW1zLXJhZGl1cyw0cHgpO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7Zm9udC1zaXplOnZhcigtLW1zLWZvbnQtc2l6ZSwxcmVtKTtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7bWFyZ2luOjAgYXV0bzttaW4taGVpZ2h0OmNhbGModmFyKC0tbXMtYm9yZGVyLXdpZHRoLCAxcHgpKjIgKyB2YXIoLS1tcy1mb250LXNpemUsIDFyZW0pKnZhcigtLW1zLWxpbmUtaGVpZ2h0LCAxLjM3NSkgKyB2YXIoLS1tcy1weSwgLjVyZW0pKjIpO291dGxpbmU6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlfS5tdWx0aXNlbGVjdC5pcy1vcGVue2JvcmRlci1yYWRpdXM6dmFyKC0tbXMtcmFkaXVzLDRweCkgdmFyKC0tbXMtcmFkaXVzLDRweCkgMCAwfS5tdWx0aXNlbGVjdC5pcy1vcGVuLXRvcHtib3JkZXItcmFkaXVzOjAgMCB2YXIoLS1tcy1yYWRpdXMsNHB4KSB2YXIoLS1tcy1yYWRpdXMsNHB4KX0ubXVsdGlzZWxlY3QuaXMtZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1iZy1kaXNhYmxlZCwjZjNmNGY2KTtjdXJzb3I6ZGVmYXVsdH0ubXVsdGlzZWxlY3QuaXMtYWN0aXZle2JvcmRlcjp2YXIoLS1tcy1ib3JkZXItd2lkdGgtYWN0aXZlLHZhcigtLW1zLWJvcmRlci13aWR0aCwxcHgpKSBzb2xpZCB2YXIoLS1tcy1ib3JkZXItY29sb3ItYWN0aXZlLHZhcigtLW1zLWJvcmRlci1jb2xvciwjZDFkNWRiKSk7Ym94LXNoYWRvdzowIDAgMCB2YXIoLS1tcy1yaW5nLXdpZHRoLDNweCkgdmFyKC0tbXMtcmluZy1jb2xvcixyZ2JhKDE2LDE4NSwxMjksLjE4OCkpfS5tdWx0aXNlbGVjdC13cmFwcGVye2FsaWduLWl0ZW1zOmNlbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpmbGV4LWVuZDttYXJnaW46MCBhdXRvO21pbi1oZWlnaHQ6Y2FsYyh2YXIoLS1tcy1ib3JkZXItd2lkdGgsIDFweCkqMiArIHZhcigtLW1zLWZvbnQtc2l6ZSwgMXJlbSkqdmFyKC0tbXMtbGluZS1oZWlnaHQsIDEuMzc1KSArIHZhcigtLW1zLXB5LCAuNXJlbSkqMik7b3V0bGluZTpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9Lm11bHRpc2VsZWN0LW11bHRpcGxlLWxhYmVsLC5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlciwubXVsdGlzZWxlY3Qtc2luZ2xlLWxhYmVse2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7bGVmdDowO2xpbmUtaGVpZ2h0OnZhcigtLW1zLWxpbmUtaGVpZ2h0LDEuMzc1KTttYXgtd2lkdGg6MTAwJTtwYWRkaW5nLWxlZnQ6dmFyKC0tbXMtcHgsLjg3NXJlbSk7cGFkZGluZy1yaWdodDpjYWxjKDEuMjVyZW0gKyB2YXIoLS1tcy1weCwgLjg3NXJlbSkqMyk7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MH0ubXVsdGlzZWxlY3QtcGxhY2Vob2xkZXJ7Y29sb3I6dmFyKC0tbXMtcGxhY2Vob2xkZXItY29sb3IsIzljYTNhZil9Lm11bHRpc2VsZWN0LXNpbmdsZS1sYWJlbC10ZXh0e2Rpc3BsYXk6YmxvY2s7bWF4LXdpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS5tdWx0aXNlbGVjdC1zZWFyY2h7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lO2JhY2tncm91bmQ6dmFyKC0tbXMtYmcsI2ZmZik7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czp2YXIoLS1tcy1yYWRpdXMsNHB4KTtib3R0b206MDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtoZWlnaHQ6MTAwJTtsZWZ0OjA7b3V0bGluZTpub25lO3BhZGRpbmctbGVmdDp2YXIoLS1tcy1weCwuODc1cmVtKTtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3dpZHRoOjEwMCV9Lm11bHRpc2VsZWN0LXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiwubXVsdGlzZWxlY3Qtc2VhcmNoOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uLC5tdWx0aXNlbGVjdC1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uLC5tdWx0aXNlbGVjdC1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0ubXVsdGlzZWxlY3QtdGFnc3thbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZsZXgtZ3JvdzoxO2ZsZXgtc2hyaW5rOjE7ZmxleC13cmFwOndyYXA7bWFyZ2luOnZhcigtLW1zLXRhZy1teSwuMjVyZW0pIDAgMDtwYWRkaW5nLWxlZnQ6dmFyKC0tbXMtcHksLjVyZW0pfS5tdWx0aXNlbGVjdC10YWd7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6dmFyKC0tbXMtdGFnLWJnLCMxMGI5ODEpO2JvcmRlci1yYWRpdXM6dmFyKC0tbXMtdGFnLXJhZGl1cyw0cHgpO2NvbG9yOnZhcigtLW1zLXRhZy1jb2xvciwjZmZmKTtkaXNwbGF5OmZsZXg7Zm9udC1zaXplOnZhcigtLW1zLXRhZy1mb250LXNpemUsLjg3NXJlbSk7Zm9udC13ZWlnaHQ6dmFyKC0tbXMtdGFnLWZvbnQtd2VpZ2h0LDYwMCk7bGluZS1oZWlnaHQ6dmFyKC0tbXMtdGFnLWxpbmUtaGVpZ2h0LDEuMjVyZW0pO21hcmdpbi1ib3R0b206dmFyKC0tbXMtdGFnLW15LC4yNXJlbSk7bWFyZ2luLXJpZ2h0OnZhcigtLW1zLXRhZy1teCwuMjVyZW0pO3BhZGRpbmc6dmFyKC0tbXMtdGFnLXB5LC4xMjVyZW0pIDAgdmFyKC0tbXMtdGFnLXB5LC4xMjVyZW0pIHZhcigtLW1zLXRhZy1weCwuNXJlbSk7d2hpdGUtc3BhY2U6bm93cmFwfS5tdWx0aXNlbGVjdC10YWcuaXMtZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1tcy10YWctYmctZGlzYWJsZWQsIzljYTNhZik7Y29sb3I6dmFyKC0tbXMtdGFnLWNvbG9yLWRpc2FibGVkLCNmZmYpO3BhZGRpbmctcmlnaHQ6dmFyKC0tbXMtdGFnLXB4LC41cmVtKX0ubXVsdGlzZWxlY3QtdGFnLXJlbW92ZXthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyLXJhZGl1czp2YXIoLS1tcy10YWctcmVtb3ZlLXJhZGl1cyw0cHgpO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbjp2YXIoLS1tcy10YWctcmVtb3ZlLW15LDApIHZhcigtLW1zLXRhZy1yZW1vdmUtbXgsLjEyNXJlbSk7cGFkZGluZzp2YXIoLS1tcy10YWctcmVtb3ZlLXB5LC4yNXJlbSkgdmFyKC0tbXMtdGFnLXJlbW92ZS1weCwuMjVyZW0pfS5tdWx0aXNlbGVjdC10YWctcmVtb3ZlOmhvdmVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDYzKX0ubXVsdGlzZWxlY3QtdGFnLXJlbW92ZS1pY29ue2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDouNzVyZW07LXdlYmtpdC1tYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMjAgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J20yMDcuNiAyNTYgMTA3LjcyLTEwNy43MmM2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4bC0yNS4wMy0yNS4wM2MtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEwxNjAgMjA4LjQgNTIuMjggMTAwLjY4Yy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDQuNjggMTI1LjdjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThMMTEyLjQgMjU2IDQuNjggMzYzLjcyYy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4bDI1LjAzIDI1LjAzYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBMMTYwIDMwMy42bDEwNy43MiAxMDcuNzJjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMGwyNS4wMy0yNS4wM2M2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4TDIwNy42IDI1NnonLyUzRSUzQy9zdmclM0VcXFwiKTttYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMjAgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J20yMDcuNiAyNTYgMTA3LjcyLTEwNy43MmM2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4bC0yNS4wMy0yNS4wM2MtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEwxNjAgMjA4LjQgNTIuMjggMTAwLjY4Yy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDQuNjggMTI1LjdjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThMMTEyLjQgMjU2IDQuNjggMzYzLjcyYy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4bDI1LjAzIDI1LjAzYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBMMTYwIDMwMy42bDEwNy43MiAxMDcuNzJjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMGwyNS4wMy0yNS4wM2M2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4TDIwNy42IDI1NnonLyUzRSUzQy9zdmclM0VcXFwiKTstd2Via2l0LW1hc2stcG9zaXRpb246Y2VudGVyO21hc2stcG9zaXRpb246Y2VudGVyOy13ZWJraXQtbWFzay1yZXBlYXQ6bm8tcmVwZWF0O21hc2stcmVwZWF0Om5vLXJlcGVhdDstd2Via2l0LW1hc2stc2l6ZTpjb250YWluO21hc2stc2l6ZTpjb250YWluO29wYWNpdHk6Ljg7d2lkdGg6Ljc1cmVtfS5tdWx0aXNlbGVjdC10YWdzLXNlYXJjaC13cmFwcGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZsZXgtZ3JvdzoxO2ZsZXgtc2hyaW5rOjE7aGVpZ2h0OjEwMCU7bWFyZ2luOjAgdmFyKC0tbXMtdGFnLW14LDRweCkgdmFyKC0tbXMtdGFnLW15LDRweCk7cG9zaXRpb246cmVsYXRpdmV9Lm11bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoLWNvcHl7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjFweDt2aXNpYmlsaXR5OmhpZGRlbjt3aGl0ZS1zcGFjZTpwcmUtd3JhcDt3aWR0aDoxMDAlfS5tdWx0aXNlbGVjdC10YWdzLXNlYXJjaHstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7Ym9yZGVyOjA7Ym90dG9tOjA7Ym94LXNpemluZzpib3JkZXItYm94O2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7bGVmdDowO291dGxpbmU6bm9uZTtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MDt3aWR0aDoxMDAlfS5tdWx0aXNlbGVjdC10YWdzLXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiwubXVsdGlzZWxlY3QtdGFncy1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24sLm11bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoOjotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiwubXVsdGlzZWxlY3QtdGFncy1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0ubXVsdGlzZWxlY3QtaW5pZml0ZXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWluLWhlaWdodDpjYWxjKHZhcigtLW1zLWJvcmRlci13aWR0aCwgMXB4KSoyICsgdmFyKC0tbXMtZm9udC1zaXplLCAxcmVtKSp2YXIoLS1tcy1saW5lLWhlaWdodCwgMS4zNzUpICsgdmFyKC0tbXMtcHksIC41cmVtKSoyKTt3aWR0aDoxMDAlfS5tdWx0aXNlbGVjdC1pbmlmaXRlLXNwaW5uZXIsLm11bHRpc2VsZWN0LXNwaW5uZXJ7YW5pbWF0aW9uOm11bHRpc2VsZWN0LXNwaW4gMXMgbGluZWFyIGluZmluaXRlO2JhY2tncm91bmQtY29sb3I6dmFyKC0tbXMtc3Bpbm5lci1jb2xvciwjMTBiOTgxKTtmbGV4LWdyb3c6MDtmbGV4LXNocmluazowO2hlaWdodDoxcmVtOy13ZWJraXQtbWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgNTEyIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdtNDU2LjQzMyAzNzEuNzItMjcuNzktMTYuMDQ1Yy03LjE5Mi00LjE1Mi0xMC4wNTItMTMuMTM2LTYuNDg3LTIwLjYzNiAyNS44Mi01NC4zMjggMjMuNTY2LTExOC42MDItNi43NjgtMTcxLjAzLTMwLjI2NS01Mi41MjktODQuODAyLTg2LjYyMS0xNDQuNzYtOTEuNDI0QzI2Mi4zNSA3MS45MjIgMjU2IDY0Ljk1MyAyNTYgNTYuNjQ5VjI0LjU2YzAtOS4zMSA3LjkxNi0xNi42MDkgMTcuMjA0LTE1Ljk2IDgxLjc5NSA1LjcxNyAxNTYuNDEyIDUxLjkwMiAxOTcuNjExIDEyMy40MDggNDEuMzAxIDcxLjM4NSA0My45OSAxNTkuMDk2IDguMDQyIDIzMi43OTItNC4wODIgOC4zNjktMTQuMzYxIDExLjU3NS0yMi40MjQgNi45MnonLyUzRSUzQy9zdmclM0VcXFwiKTttYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCA1MTIgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J200NTYuNDMzIDM3MS43Mi0yNy43OS0xNi4wNDVjLTcuMTkyLTQuMTUyLTEwLjA1Mi0xMy4xMzYtNi40ODctMjAuNjM2IDI1LjgyLTU0LjMyOCAyMy41NjYtMTE4LjYwMi02Ljc2OC0xNzEuMDMtMzAuMjY1LTUyLjUyOS04NC44MDItODYuNjIxLTE0NC43Ni05MS40MjRDMjYyLjM1IDcxLjkyMiAyNTYgNjQuOTUzIDI1NiA1Ni42NDlWMjQuNTZjMC05LjMxIDcuOTE2LTE2LjYwOSAxNy4yMDQtMTUuOTYgODEuNzk1IDUuNzE3IDE1Ni40MTIgNTEuOTAyIDE5Ny42MTEgMTIzLjQwOCA0MS4zMDEgNzEuMzg1IDQzLjk5IDE1OS4wOTYgOC4wNDIgMjMyLjc5Mi00LjA4MiA4LjM2OS0xNC4zNjEgMTEuNTc1LTIyLjQyNCA2LjkyeicvJTNFJTNDL3N2ZyUzRVxcXCIpOy13ZWJraXQtbWFzay1wb3NpdGlvbjpjZW50ZXI7bWFzay1wb3NpdGlvbjpjZW50ZXI7LXdlYmtpdC1tYXNrLXJlcGVhdDpuby1yZXBlYXQ7bWFzay1yZXBlYXQ6bm8tcmVwZWF0Oy13ZWJraXQtbWFzay1zaXplOmNvbnRhaW47bWFzay1zaXplOmNvbnRhaW47d2lkdGg6MXJlbTt6LWluZGV4OjEwfS5tdWx0aXNlbGVjdC1zcGlubmVye21hcmdpbjowIHZhcigtLW1zLXB4LC44NzVyZW0pIDAgMH0ubXVsdGlzZWxlY3QtY2xlYXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZ3JvdzowO2ZsZXgtc2hyaW5rOjA7b3BhY2l0eToxO3BhZGRpbmc6MCB2YXIoLS1tcy1weCwuODc1cmVtKSAwIDA7cG9zaXRpb246cmVsYXRpdmU7dHJhbnNpdGlvbjouM3M7ei1pbmRleDoxMH0ubXVsdGlzZWxlY3QtY2xlYXI6aG92ZXIgLm11bHRpc2VsZWN0LWNsZWFyLWljb257YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tcy1jbGVhci1jb2xvci1ob3ZlciwjMDAwKX0ubXVsdGlzZWxlY3QtY2xlYXItaWNvbntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1zLWNsZWFyLWNvbG9yLCM5OTkpO2Rpc3BsYXk6aW5saW5lLWJsb2NrOy13ZWJraXQtbWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzIwIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdtMjA3LjYgMjU2IDEwNy43Mi0xMDcuNzJjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OGwtMjUuMDMtMjUuMDNjLTYuMjMtNi4yMy0xNi4zNC02LjIzLTIyLjU4IDBMMTYwIDIwOC40IDUyLjI4IDEwMC42OGMtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEw0LjY4IDEyNS43Yy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4TDExMi40IDI1NiA0LjY4IDM2My43MmMtNi4yMyA2LjIzLTYuMjMgMTYuMzQgMCAyMi41OGwyNS4wMyAyNS4wM2M2LjIzIDYuMjMgMTYuMzQgNi4yMyAyMi41OCAwTDE2MCAzMDMuNmwxMDcuNzIgMTA3LjcyYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBsMjUuMDMtMjUuMDNjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OEwyMDcuNiAyNTZ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7bWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzIwIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdtMjA3LjYgMjU2IDEwNy43Mi0xMDcuNzJjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OGwtMjUuMDMtMjUuMDNjLTYuMjMtNi4yMy0xNi4zNC02LjIzLTIyLjU4IDBMMTYwIDIwOC40IDUyLjI4IDEwMC42OGMtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEw0LjY4IDEyNS43Yy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4TDExMi40IDI1NiA0LjY4IDM2My43MmMtNi4yMyA2LjIzLTYuMjMgMTYuMzQgMCAyMi41OGwyNS4wMyAyNS4wM2M2LjIzIDYuMjMgMTYuMzQgNi4yMyAyMi41OCAwTDE2MCAzMDMuNmwxMDcuNzIgMTA3LjcyYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBsMjUuMDMtMjUuMDNjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OEwyMDcuNiAyNTZ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7dHJhbnNpdGlvbjouM3N9Lm11bHRpc2VsZWN0LWNhcmV0LC5tdWx0aXNlbGVjdC1jbGVhci1pY29ue2hlaWdodDoxLjEyNXJlbTstd2Via2l0LW1hc2stcG9zaXRpb246Y2VudGVyO21hc2stcG9zaXRpb246Y2VudGVyOy13ZWJraXQtbWFzay1yZXBlYXQ6bm8tcmVwZWF0O21hc2stcmVwZWF0Om5vLXJlcGVhdDstd2Via2l0LW1hc2stc2l6ZTpjb250YWluO21hc2stc2l6ZTpjb250YWluO3dpZHRoOi42MjVyZW19Lm11bHRpc2VsZWN0LWNhcmV0e2JhY2tncm91bmQtY29sb3I6dmFyKC0tbXMtY2FyZXQtY29sb3IsIzk5OSk7ZmxleC1ncm93OjA7ZmxleC1zaHJpbms6MDttYXJnaW46MCB2YXIoLS1tcy1weCwuODc1cmVtKSAwIDA7LXdlYmtpdC1tYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMjAgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J00zMS4zIDE5MmgyNTcuM2MxNy44IDAgMjYuNyAyMS41IDE0LjEgMzQuMUwxNzQuMSAzNTQuOGMtNy44IDcuOC0yMC41IDcuOC0yOC4zIDBMMTcuMiAyMjYuMUM0LjYgMjEzLjUgMTMuNSAxOTIgMzEuMyAxOTJ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7bWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzIwIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdNMzEuMyAxOTJoMjU3LjNjMTcuOCAwIDI2LjcgMjEuNSAxNC4xIDM0LjFMMTc0LjEgMzU0LjhjLTcuOCA3LjgtMjAuNSA3LjgtMjguMyAwTDE3LjIgMjI2LjFDNC42IDIxMy41IDEzLjUgMTkyIDMxLjMgMTkyeicvJTNFJTNDL3N2ZyUzRVxcXCIpO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3M7ei1pbmRleDoxMH0ubXVsdGlzZWxlY3QtY2FyZXQuaXMtb3Blbntwb2ludGVyLWV2ZW50czphdXRvO3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX0ubXVsdGlzZWxlY3QtZHJvcGRvd257LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7YmFja2dyb3VuZDp2YXIoLS1tcy1kcm9wZG93bi1iZywjZmZmKTtib3JkZXI6dmFyKC0tbXMtZHJvcGRvd24tYm9yZGVyLXdpZHRoLDFweCkgc29saWQgdmFyKC0tbXMtZHJvcGRvd24tYm9yZGVyLWNvbG9yLCNkMWQ1ZGIpO2JvcmRlci1yYWRpdXM6MCAwIHZhcigtLW1zLWRyb3Bkb3duLXJhZGl1cyw0cHgpIHZhcigtLW1zLWRyb3Bkb3duLXJhZGl1cyw0cHgpO2JvdHRvbTowO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bGVmdDpjYWxjKHZhcigtLW1zLWJvcmRlci13aWR0aCwgMXB4KSotMSk7bWFyZ2luLXRvcDpjYWxjKHZhcigtLW1zLWJvcmRlci13aWR0aCwgMXB4KSotMSk7bWF4LWhlaWdodDp2YXIoLS1tcy1tYXgtaGVpZ2h0LDEwcmVtKTtvdXRsaW5lOm5vbmU7b3ZlcmZsb3cteTpzY3JvbGw7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6Y2FsYyh2YXIoLS1tcy1ib3JkZXItd2lkdGgsIDFweCkqLTEpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpO3otaW5kZXg6MTAwfS5tdWx0aXNlbGVjdC1kcm9wZG93bi5pcy10b3B7Ym9yZGVyLXJhZGl1czp2YXIoLS1tcy1kcm9wZG93bi1yYWRpdXMsNHB4KSB2YXIoLS1tcy1kcm9wZG93bi1yYWRpdXMsNHB4KSAwIDA7Ym90dG9tOmF1dG87dG9wOnZhcigtLW1zLWJvcmRlci13aWR0aCwxcHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKX0ubXVsdGlzZWxlY3QtZHJvcGRvd24uaXMtaGlkZGVue2Rpc3BsYXk6bm9uZX0ubXVsdGlzZWxlY3Qtb3B0aW9uc3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2xpc3Qtc3R5bGU6bm9uZTttYXJnaW46MDtwYWRkaW5nOjB9Lm11bHRpc2VsZWN0LWdyb3Vwe21hcmdpbjowO3BhZGRpbmc6MH0ubXVsdGlzZWxlY3QtZ3JvdXAtbGFiZWx7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtYmcsI2U1ZTdlYik7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOnZhcigtLW1zLWdyb3VwLWxhYmVsLWNvbG9yLCMzNzQxNTEpO2N1cnNvcjpkZWZhdWx0O2Rpc3BsYXk6ZmxleDtmb250LXNpemU6Ljg3NXJlbTtmb250LXdlaWdodDo2MDA7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7bGluZS1oZWlnaHQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtbGluZS1oZWlnaHQsMS4zNzUpO3BhZGRpbmc6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtcHksLjNyZW0pIHZhcigtLW1zLWdyb3VwLWxhYmVsLXB4LC43NXJlbSk7dGV4dC1hbGlnbjpsZWZ0O3RleHQtZGVjb3JhdGlvbjpub25lfS5tdWx0aXNlbGVjdC1ncm91cC1sYWJlbC5pcy1wb2ludGFibGV7Y3Vyc29yOnBvaW50ZXJ9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVsLmlzLXBvaW50ZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1ncm91cC1sYWJlbC1iZy1wb2ludGVkLCNkMWQ1ZGIpO2NvbG9yOnZhcigtLW1zLWdyb3VwLWxhYmVsLWNvbG9yLXBvaW50ZWQsIzM3NDE1MSl9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVsLmlzLXNlbGVjdGVke2JhY2tncm91bmQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtYmctc2VsZWN0ZWQsIzA1OTY2OSk7Y29sb3I6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtY29sb3Itc2VsZWN0ZWQsI2ZmZil9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVsLmlzLWRpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtYmctZGlzYWJsZWQsI2YzZjRmNik7Y29sb3I6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtY29sb3ItZGlzYWJsZWQsI2QxZDVkYik7Y3Vyc29yOm5vdC1hbGxvd2VkfS5tdWx0aXNlbGVjdC1ncm91cC1sYWJlbC5pcy1zZWxlY3RlZC5pcy1wb2ludGVke2JhY2tncm91bmQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtYmctc2VsZWN0ZWQtcG9pbnRlZCwjMGM5ZTcwKTtjb2xvcjp2YXIoLS1tcy1ncm91cC1sYWJlbC1jb2xvci1zZWxlY3RlZC1wb2ludGVkLCNmZmYpfS5tdWx0aXNlbGVjdC1ncm91cC1sYWJlbC5pcy1zZWxlY3RlZC5pcy1kaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLWdyb3VwLWxhYmVsLWJnLXNlbGVjdGVkLWRpc2FibGVkLCM3NWNmYjEpO2NvbG9yOnZhcigtLW1zLWdyb3VwLWxhYmVsLWNvbG9yLXNlbGVjdGVkLWRpc2FibGVkLCNkMWZhZTUpfS5tdWx0aXNlbGVjdC1ncm91cC1vcHRpb25ze21hcmdpbjowO3BhZGRpbmc6MH0ubXVsdGlzZWxlY3Qtb3B0aW9ue2FsaWduLWl0ZW1zOmNlbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZTp2YXIoLS1tcy1vcHRpb24tZm9udC1zaXplLDFyZW0pO2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O2xpbmUtaGVpZ2h0OnZhcigtLW1zLW9wdGlvbi1saW5lLWhlaWdodCwxLjM3NSk7cGFkZGluZzp2YXIoLS1tcy1vcHRpb24tcHksLjVyZW0pIHZhcigtLW1zLW9wdGlvbi1weCwuNzVyZW0pO3RleHQtYWxpZ246bGVmdDt0ZXh0LWRlY29yYXRpb246bm9uZX0ubXVsdGlzZWxlY3Qtb3B0aW9uLmlzLXBvaW50ZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1vcHRpb24tYmctcG9pbnRlZCwjZjNmNGY2KTtjb2xvcjp2YXIoLS1tcy1vcHRpb24tY29sb3ItcG9pbnRlZCwjMWYyOTM3KX0ubXVsdGlzZWxlY3Qtb3B0aW9uLmlzLXNlbGVjdGVke2JhY2tncm91bmQ6dmFyKC0tbXMtb3B0aW9uLWJnLXNlbGVjdGVkLCMxMGI5ODEpO2NvbG9yOnZhcigtLW1zLW9wdGlvbi1jb2xvci1zZWxlY3RlZCwjZmZmKX0ubXVsdGlzZWxlY3Qtb3B0aW9uLmlzLWRpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tbXMtb3B0aW9uLWJnLWRpc2FibGVkLCNmZmYpO2NvbG9yOnZhcigtLW1zLW9wdGlvbi1jb2xvci1kaXNhYmxlZCwjZDFkNWRiKTtjdXJzb3I6bm90LWFsbG93ZWR9Lm11bHRpc2VsZWN0LW9wdGlvbi5pcy1zZWxlY3RlZC5pcy1wb2ludGVke2JhY2tncm91bmQ6dmFyKC0tbXMtb3B0aW9uLWJnLXNlbGVjdGVkLXBvaW50ZWQsIzI2YzA4ZSk7Y29sb3I6dmFyKC0tbXMtb3B0aW9uLWNvbG9yLXNlbGVjdGVkLXBvaW50ZWQsI2ZmZil9Lm11bHRpc2VsZWN0LW9wdGlvbi5pcy1zZWxlY3RlZC5pcy1kaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLW9wdGlvbi1iZy1zZWxlY3RlZC1kaXNhYmxlZCwjODdkY2MwKTtjb2xvcjp2YXIoLS1tcy1vcHRpb24tY29sb3Itc2VsZWN0ZWQtZGlzYWJsZWQsI2QxZmFlNSl9Lm11bHRpc2VsZWN0LW5vLW9wdGlvbnMsLm11bHRpc2VsZWN0LW5vLXJlc3VsdHN7Y29sb3I6dmFyKC0tbXMtZW1wdHktY29sb3IsIzRiNTU2Myk7cGFkZGluZzp2YXIoLS1tcy1vcHRpb24tcHksLjVyZW0pIHZhcigtLW1zLW9wdGlvbi1weCwuNzVyZW0pfS5tdWx0aXNlbGVjdC1mYWtlLWlucHV0e2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOjA7Ym90dG9tOi0xcHg7Zm9udC1zaXplOjA7aGVpZ2h0OjFweDtsZWZ0OjA7b3V0bGluZTpub25lO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3dpZHRoOjEwMCV9Lm11bHRpc2VsZWN0LWZha2UtaW5wdXQ6YWN0aXZlLC5tdWx0aXNlbGVjdC1mYWtlLWlucHV0OmZvY3Vze291dGxpbmU6bm9uZX0ubXVsdGlzZWxlY3QtYXNzaXN0aXZlLXRleHR7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweH0ubXVsdGlzZWxlY3Qtc3BhY2Vye2Rpc3BsYXk6bm9uZX1bZGlyPXJ0bF0gLm11bHRpc2VsZWN0LW11bHRpcGxlLWxhYmVsLFtkaXI9cnRsXSAubXVsdGlzZWxlY3QtcGxhY2Vob2xkZXIsW2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC1zaW5nbGUtbGFiZWx7bGVmdDphdXRvO3BhZGRpbmctbGVmdDpjYWxjKDEuMjVyZW0gKyB2YXIoLS1tcy1weCwgLjg3NXJlbSkqMyk7cGFkZGluZy1yaWdodDp2YXIoLS1tcy1weCwuODc1cmVtKTtyaWdodDowfVtkaXI9cnRsXSAubXVsdGlzZWxlY3Qtc2VhcmNoe3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6dmFyKC0tbXMtcHgsLjg3NXJlbSl9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC10YWdze3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6dmFyKC0tbXMtcHksLjVyZW0pfVtkaXI9cnRsXSAubXVsdGlzZWxlY3QtdGFne21hcmdpbi1sZWZ0OnZhcigtLW1zLXRhZy1teCwuMjVyZW0pO21hcmdpbi1yaWdodDowO3BhZGRpbmc6dmFyKC0tbXMtdGFnLXB5LC4xMjVyZW0pIHZhcigtLW1zLXRhZy1weCwuNXJlbSkgdmFyKC0tbXMtdGFnLXB5LC4xMjVyZW0pIDB9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC10YWcuaXMtZGlzYWJsZWR7cGFkZGluZy1sZWZ0OnZhcigtLW1zLXRhZy1weCwuNXJlbSl9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC1jYXJldCxbZGlyPXJ0bF0gLm11bHRpc2VsZWN0LXNwaW5uZXJ7bWFyZ2luOjAgMCAwIHZhcigtLW1zLXB4LC44NzVyZW0pfVtkaXI9cnRsXSAubXVsdGlzZWxlY3QtY2xlYXJ7cGFkZGluZzowIDAgMCB2YXIoLS1tcy1weCwuODc1cmVtKX1Aa2V5ZnJhbWVzIG11bHRpc2VsZWN0LXNwaW57MCV7dHJhbnNmb3JtOnJvdGF0ZSgwKX10b3t0cmFuc2Zvcm06cm90YXRlKDF0dXJuKX19XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0B2dWVmb3JtL211bHRpc2VsZWN0L3RoZW1lcy9kZWZhdWx0LmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQSxhQUFhLGtCQUFrQixDQUFDLDRCQUE0QixDQUFDLHNFQUFzRSxDQUFDLGtDQUFrQyxDQUFDLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsa0NBQWtDLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDLCtIQUErSCxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMscUJBQXFCLDJEQUEyRCxDQUFDLHlCQUF5QiwyREFBMkQsQ0FBQyx5QkFBeUIsd0NBQXdDLENBQUMsY0FBYyxDQUFDLHVCQUF1QixrSUFBa0ksQ0FBQyxvRkFBb0YsQ0FBQyxxQkFBcUIsa0JBQWtCLENBQUMscUJBQXFCLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsK0hBQStILENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQywrRUFBK0Usa0JBQWtCLENBQUMsc0JBQXNCLENBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDLFdB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QixDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMseUNBQXlDLENBQUMsMEJBQTBCLENBQUMsOENBQThDLENBQUMsNERBQTRELENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLCtCQUErQiw4Q0FBOEMsQ0FBQyw0Q0FBNEMsQ0FBQyxnQ0FBZ0MsK0NBQStDLENBQUMsMENBQTBDLENBQUMsZ0NBQWdDLDRDQUE0QyxDQUFDLDZDQUE2QyxDQUFDLGtCQUFrQixDQUFDLDJDQUEyQyx1REFBdUQsQ0FBQyxrREFBa0QsQ0FBQyw0Q0FBNEMsd0RBQXdELENBQUMsc0RBQXNELENBQUMsZ0RBQWdELG1DQUFtQyxDQUFDLDREQUE0RCxDQUFDLHdCQUF3QixzQkFBc0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyw2REFBNkQsWUFBWSxDQUFDLDRCQUE0QixrQkFBa0IsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLFlBQVksQ0FBQyw2R0FBNkcsU0FBUyxDQUFDLG9EQUFvRCxDQUFDLGtDQUFrQyxDQUFDLE9BQU8sQ0FBQyw4QkFBOEIsY0FBYyxDQUFDLGtDQUFrQyxDQUFDLDRCQUE0QixjQUFjLENBQUMsZ0NBQWdDLENBQUMsMkJBQTJCLG1DQUFtQyxDQUFDLGNBQWMsQ0FBQyxrRkFBa0YsQ0FBQyx1Q0FBdUMsbUNBQW1DLENBQUMsNERBQTRELGlDQUFpQyxDQUFDLDZCQUE2QixrQ0FBa0MsQ0FBQyw0QkFBNEIsR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLHVCQUF1QixDQUFDXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5tdWx0aXNlbGVjdHthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDp2YXIoLS1tcy1iZywjZmZmKTtib3JkZXI6dmFyKC0tbXMtYm9yZGVyLXdpZHRoLDFweCkgc29saWQgdmFyKC0tbXMtYm9yZGVyLWNvbG9yLCNkMWQ1ZGIpO2JvcmRlci1yYWRpdXM6dmFyKC0tbXMtcmFkaXVzLDRweCk7Ym94LXNpemluZzpib3JkZXItYm94O2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6ZmxleDtmb250LXNpemU6dmFyKC0tbXMtZm9udC1zaXplLDFyZW0pO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDttYXJnaW46MCBhdXRvO21pbi1oZWlnaHQ6Y2FsYyh2YXIoLS1tcy1ib3JkZXItd2lkdGgsIDFweCkqMiArIHZhcigtLW1zLWZvbnQtc2l6ZSwgMXJlbSkqdmFyKC0tbXMtbGluZS1oZWlnaHQsIDEuMzc1KSArIHZhcigtLW1zLXB5LCAuNXJlbSkqMik7b3V0bGluZTpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9Lm11bHRpc2VsZWN0LmlzLW9wZW57Ym9yZGVyLXJhZGl1czp2YXIoLS1tcy1yYWRpdXMsNHB4KSB2YXIoLS1tcy1yYWRpdXMsNHB4KSAwIDB9Lm11bHRpc2VsZWN0LmlzLW9wZW4tdG9we2JvcmRlci1yYWRpdXM6MCAwIHZhcigtLW1zLXJhZGl1cyw0cHgpIHZhcigtLW1zLXJhZGl1cyw0cHgpfS5tdWx0aXNlbGVjdC5pcy1kaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLWJnLWRpc2FibGVkLCNmM2Y0ZjYpO2N1cnNvcjpkZWZhdWx0fS5tdWx0aXNlbGVjdC5pcy1hY3RpdmV7Ym9yZGVyOnZhcigtLW1zLWJvcmRlci13aWR0aC1hY3RpdmUsdmFyKC0tbXMtYm9yZGVyLXdpZHRoLDFweCkpIHNvbGlkIHZhcigtLW1zLWJvcmRlci1jb2xvci1hY3RpdmUsdmFyKC0tbXMtYm9yZGVyLWNvbG9yLCNkMWQ1ZGIpKTtib3gtc2hhZG93OjAgMCAwIHZhcigtLW1zLXJpbmctd2lkdGgsM3B4KSB2YXIoLS1tcy1yaW5nLWNvbG9yLHJnYmEoMTYsMTg1LDEyOSwuMTg4KSl9Lm11bHRpc2VsZWN0LXdyYXBwZXJ7YWxpZ24taXRlbXM6Y2VudGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO21hcmdpbjowIGF1dG87bWluLWhlaWdodDpjYWxjKHZhcigtLW1zLWJvcmRlci13aWR0aCwgMXB4KSoyICsgdmFyKC0tbXMtZm9udC1zaXplLCAxcmVtKSp2YXIoLS1tcy1saW5lLWhlaWdodCwgMS4zNzUpICsgdmFyKC0tbXMtcHksIC41cmVtKSoyKTtvdXRsaW5lOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJX0ubXVsdGlzZWxlY3QtbXVsdGlwbGUtbGFiZWwsLm11bHRpc2VsZWN0LXBsYWNlaG9sZGVyLC5tdWx0aXNlbGVjdC1zaW5nbGUtbGFiZWx7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MTAwJTtsZWZ0OjA7bGluZS1oZWlnaHQ6dmFyKC0tbXMtbGluZS1oZWlnaHQsMS4zNzUpO21heC13aWR0aDoxMDAlO3BhZGRpbmctbGVmdDp2YXIoLS1tcy1weCwuODc1cmVtKTtwYWRkaW5nLXJpZ2h0OmNhbGMoMS4yNXJlbSArIHZhcigtLW1zLXB4LCAuODc1cmVtKSozKTtwb2ludGVyLWV2ZW50czpub25lO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowfS5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1tcy1wbGFjZWhvbGRlci1jb2xvciwjOWNhM2FmKX0ubXVsdGlzZWxlY3Qtc2luZ2xlLWxhYmVsLXRleHR7ZGlzcGxheTpibG9jazttYXgtd2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9Lm11bHRpc2VsZWN0LXNlYXJjaHstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZDp2YXIoLS1tcy1iZywjZmZmKTtib3JkZXI6MDtib3JkZXItcmFkaXVzOnZhcigtLW1zLXJhZGl1cyw0cHgpO2JvdHRvbTowO2JveC1zaXppbmc6Ym9yZGVyLWJveDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2hlaWdodDoxMDAlO2xlZnQ6MDtvdXRsaW5lOm5vbmU7cGFkZGluZy1sZWZ0OnZhcigtLW1zLXB4LC44NzVyZW0pO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjA7d2lkdGg6MTAwJX0ubXVsdGlzZWxlY3Qtc2VhcmNoOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLC5tdWx0aXNlbGVjdC1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24sLm11bHRpc2VsZWN0LXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1idXR0b24sLm11bHRpc2VsZWN0LXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfS5tdWx0aXNlbGVjdC10YWdze2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjE7ZmxleC1zaHJpbms6MTtmbGV4LXdyYXA6d3JhcDttYXJnaW46dmFyKC0tbXMtdGFnLW15LC4yNXJlbSkgMCAwO3BhZGRpbmctbGVmdDp2YXIoLS1tcy1weSwuNXJlbSl9Lm11bHRpc2VsZWN0LXRhZ3thbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDp2YXIoLS1tcy10YWctYmcsIzEwYjk4MSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1tcy10YWctcmFkaXVzLDRweCk7Y29sb3I6dmFyKC0tbXMtdGFnLWNvbG9yLCNmZmYpO2Rpc3BsYXk6ZmxleDtmb250LXNpemU6dmFyKC0tbXMtdGFnLWZvbnQtc2l6ZSwuODc1cmVtKTtmb250LXdlaWdodDp2YXIoLS1tcy10YWctZm9udC13ZWlnaHQsNjAwKTtsaW5lLWhlaWdodDp2YXIoLS1tcy10YWctbGluZS1oZWlnaHQsMS4yNXJlbSk7bWFyZ2luLWJvdHRvbTp2YXIoLS1tcy10YWctbXksLjI1cmVtKTttYXJnaW4tcmlnaHQ6dmFyKC0tbXMtdGFnLW14LC4yNXJlbSk7cGFkZGluZzp2YXIoLS1tcy10YWctcHksLjEyNXJlbSkgMCB2YXIoLS1tcy10YWctcHksLjEyNXJlbSkgdmFyKC0tbXMtdGFnLXB4LC41cmVtKTt3aGl0ZS1zcGFjZTpub3dyYXB9Lm11bHRpc2VsZWN0LXRhZy5pcy1kaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLXRhZy1iZy1kaXNhYmxlZCwjOWNhM2FmKTtjb2xvcjp2YXIoLS1tcy10YWctY29sb3ItZGlzYWJsZWQsI2ZmZik7cGFkZGluZy1yaWdodDp2YXIoLS1tcy10YWctcHgsLjVyZW0pfS5tdWx0aXNlbGVjdC10YWctcmVtb3Zle2FsaWduLWl0ZW1zOmNlbnRlcjtib3JkZXItcmFkaXVzOnZhcigtLW1zLXRhZy1yZW1vdmUtcmFkaXVzLDRweCk7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luOnZhcigtLW1zLXRhZy1yZW1vdmUtbXksMCkgdmFyKC0tbXMtdGFnLXJlbW92ZS1teCwuMTI1cmVtKTtwYWRkaW5nOnZhcigtLW1zLXRhZy1yZW1vdmUtcHksLjI1cmVtKSB2YXIoLS1tcy10YWctcmVtb3ZlLXB4LC4yNXJlbSl9Lm11bHRpc2VsZWN0LXRhZy1yZW1vdmU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNjMpfS5tdWx0aXNlbGVjdC10YWctcmVtb3ZlLWljb257YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3I7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0Oi43NXJlbTstd2Via2l0LW1hc2staW1hZ2U6dXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgdmlld0JveD0nMCAwIDMyMCA1MTInIGZpbGw9J2N1cnJlbnRDb2xvcicgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nbTIwNy42IDI1NiAxMDcuNzItMTA3LjcyYzYuMjMtNi4yMyA2LjIzLTE2LjM0IDAtMjIuNThsLTI1LjAzLTI1LjAzYy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDE2MCAyMDguNCA1Mi4yOCAxMDAuNjhjLTYuMjMtNi4yMy0xNi4zNC02LjIzLTIyLjU4IDBMNC42OCAxMjUuN2MtNi4yMyA2LjIzLTYuMjMgMTYuMzQgMCAyMi41OEwxMTIuNCAyNTYgNC42OCAzNjMuNzJjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThsMjUuMDMgMjUuMDNjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMEwxNjAgMzAzLjZsMTA3LjcyIDEwNy43MmM2LjIzIDYuMjMgMTYuMzQgNi4yMyAyMi41OCAwbDI1LjAzLTI1LjAzYzYuMjMtNi4yMyA2LjIzLTE2LjM0IDAtMjIuNThMMjA3LjYgMjU2eicvJTNFJTNDL3N2ZyUzRVxcXCIpO21hc2staW1hZ2U6dXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgdmlld0JveD0nMCAwIDMyMCA1MTInIGZpbGw9J2N1cnJlbnRDb2xvcicgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nbTIwNy42IDI1NiAxMDcuNzItMTA3LjcyYzYuMjMtNi4yMyA2LjIzLTE2LjM0IDAtMjIuNThsLTI1LjAzLTI1LjAzYy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDE2MCAyMDguNCA1Mi4yOCAxMDAuNjhjLTYuMjMtNi4yMy0xNi4zNC02LjIzLTIyLjU4IDBMNC42OCAxMjUuN2MtNi4yMyA2LjIzLTYuMjMgMTYuMzQgMCAyMi41OEwxMTIuNCAyNTYgNC42OCAzNjMuNzJjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThsMjUuMDMgMjUuMDNjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMEwxNjAgMzAzLjZsMTA3LjcyIDEwNy43MmM2LjIzIDYuMjMgMTYuMzQgNi4yMyAyMi41OCAwbDI1LjAzLTI1LjAzYzYuMjMtNi4yMyA2LjIzLTE2LjM0IDAtMjIuNThMMjA3LjYgMjU2eicvJTNFJTNDL3N2ZyUzRVxcXCIpOy13ZWJraXQtbWFzay1wb3NpdGlvbjpjZW50ZXI7bWFzay1wb3NpdGlvbjpjZW50ZXI7LXdlYmtpdC1tYXNrLXJlcGVhdDpuby1yZXBlYXQ7bWFzay1yZXBlYXQ6bm8tcmVwZWF0Oy13ZWJraXQtbWFzay1zaXplOmNvbnRhaW47bWFzay1zaXplOmNvbnRhaW47b3BhY2l0eTouODt3aWR0aDouNzVyZW19Lm11bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoLXdyYXBwZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmxleC1ncm93OjE7ZmxleC1zaHJpbms6MTtoZWlnaHQ6MTAwJTttYXJnaW46MCB2YXIoLS1tcy10YWctbXgsNHB4KSB2YXIoLS1tcy10YWctbXksNHB4KTtwb3NpdGlvbjpyZWxhdGl2ZX0ubXVsdGlzZWxlY3QtdGFncy1zZWFyY2gtY29weXtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MXB4O3Zpc2liaWxpdHk6aGlkZGVuO3doaXRlLXNwYWNlOnByZS13cmFwO3dpZHRoOjEwMCV9Lm11bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoey13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTtib3JkZXI6MDtib3R0b206MDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtsZWZ0OjA7b3V0bGluZTpub25lO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3dpZHRoOjEwMCV9Lm11bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLC5tdWx0aXNlbGVjdC10YWdzLXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiwubXVsdGlzZWxlY3QtdGFncy1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uLC5tdWx0aXNlbGVjdC10YWdzLXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfS5tdWx0aXNlbGVjdC1pbmlmaXRle2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjttaW4taGVpZ2h0OmNhbGModmFyKC0tbXMtYm9yZGVyLXdpZHRoLCAxcHgpKjIgKyB2YXIoLS1tcy1mb250LXNpemUsIDFyZW0pKnZhcigtLW1zLWxpbmUtaGVpZ2h0LCAxLjM3NSkgKyB2YXIoLS1tcy1weSwgLjVyZW0pKjIpO3dpZHRoOjEwMCV9Lm11bHRpc2VsZWN0LWluaWZpdGUtc3Bpbm5lciwubXVsdGlzZWxlY3Qtc3Bpbm5lcnthbmltYXRpb246bXVsdGlzZWxlY3Qtc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tcy1zcGlubmVyLWNvbG9yLCMxMGI5ODEpO2ZsZXgtZ3JvdzowO2ZsZXgtc2hyaW5rOjA7aGVpZ2h0OjFyZW07LXdlYmtpdC1tYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCA1MTIgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J200NTYuNDMzIDM3MS43Mi0yNy43OS0xNi4wNDVjLTcuMTkyLTQuMTUyLTEwLjA1Mi0xMy4xMzYtNi40ODctMjAuNjM2IDI1LjgyLTU0LjMyOCAyMy41NjYtMTE4LjYwMi02Ljc2OC0xNzEuMDMtMzAuMjY1LTUyLjUyOS04NC44MDItODYuNjIxLTE0NC43Ni05MS40MjRDMjYyLjM1IDcxLjkyMiAyNTYgNjQuOTUzIDI1NiA1Ni42NDlWMjQuNTZjMC05LjMxIDcuOTE2LTE2LjYwOSAxNy4yMDQtMTUuOTYgODEuNzk1IDUuNzE3IDE1Ni40MTIgNTEuOTAyIDE5Ny42MTEgMTIzLjQwOCA0MS4zMDEgNzEuMzg1IDQzLjk5IDE1OS4wOTYgOC4wNDIgMjMyLjc5Mi00LjA4MiA4LjM2OS0xNC4zNjEgMTEuNTc1LTIyLjQyNCA2LjkyeicvJTNFJTNDL3N2ZyUzRVxcXCIpO21hc2staW1hZ2U6dXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgdmlld0JveD0nMCAwIDUxMiA1MTInIGZpbGw9J2N1cnJlbnRDb2xvcicgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nbTQ1Ni40MzMgMzcxLjcyLTI3Ljc5LTE2LjA0NWMtNy4xOTItNC4xNTItMTAuMDUyLTEzLjEzNi02LjQ4Ny0yMC42MzYgMjUuODItNTQuMzI4IDIzLjU2Ni0xMTguNjAyLTYuNzY4LTE3MS4wMy0zMC4yNjUtNTIuNTI5LTg0LjgwMi04Ni42MjEtMTQ0Ljc2LTkxLjQyNEMyNjIuMzUgNzEuOTIyIDI1NiA2NC45NTMgMjU2IDU2LjY0OVYyNC41NmMwLTkuMzEgNy45MTYtMTYuNjA5IDE3LjIwNC0xNS45NiA4MS43OTUgNS43MTcgMTU2LjQxMiA1MS45MDIgMTk3LjYxMSAxMjMuNDA4IDQxLjMwMSA3MS4zODUgNDMuOTkgMTU5LjA5NiA4LjA0MiAyMzIuNzkyLTQuMDgyIDguMzY5LTE0LjM2MSAxMS41NzUtMjIuNDI0IDYuOTJ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7LXdlYmtpdC1tYXNrLXBvc2l0aW9uOmNlbnRlcjttYXNrLXBvc2l0aW9uOmNlbnRlcjstd2Via2l0LW1hc2stcmVwZWF0Om5vLXJlcGVhdDttYXNrLXJlcGVhdDpuby1yZXBlYXQ7LXdlYmtpdC1tYXNrLXNpemU6Y29udGFpbjttYXNrLXNpemU6Y29udGFpbjt3aWR0aDoxcmVtO3otaW5kZXg6MTB9Lm11bHRpc2VsZWN0LXNwaW5uZXJ7bWFyZ2luOjAgdmFyKC0tbXMtcHgsLjg3NXJlbSkgMCAwfS5tdWx0aXNlbGVjdC1jbGVhcntkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjA7ZmxleC1zaHJpbms6MDtvcGFjaXR5OjE7cGFkZGluZzowIHZhcigtLW1zLXB4LC44NzVyZW0pIDAgMDtwb3NpdGlvbjpyZWxhdGl2ZTt0cmFuc2l0aW9uOi4zczt6LWluZGV4OjEwfS5tdWx0aXNlbGVjdC1jbGVhcjpob3ZlciAubXVsdGlzZWxlY3QtY2xlYXItaWNvbntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1zLWNsZWFyLWNvbG9yLWhvdmVyLCMwMDApfS5tdWx0aXNlbGVjdC1jbGVhci1pY29ue2JhY2tncm91bmQtY29sb3I6dmFyKC0tbXMtY2xlYXItY29sb3IsIzk5OSk7ZGlzcGxheTppbmxpbmUtYmxvY2s7LXdlYmtpdC1tYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMjAgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J20yMDcuNiAyNTYgMTA3LjcyLTEwNy43MmM2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4bC0yNS4wMy0yNS4wM2MtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEwxNjAgMjA4LjQgNTIuMjggMTAwLjY4Yy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDQuNjggMTI1LjdjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThMMTEyLjQgMjU2IDQuNjggMzYzLjcyYy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4bDI1LjAzIDI1LjAzYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBMMTYwIDMwMy42bDEwNy43MiAxMDcuNzJjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMGwyNS4wMy0yNS4wM2M2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4TDIwNy42IDI1NnonLyUzRSUzQy9zdmclM0VcXFwiKTttYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMjAgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J20yMDcuNiAyNTYgMTA3LjcyLTEwNy43MmM2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4bC0yNS4wMy0yNS4wM2MtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEwxNjAgMjA4LjQgNTIuMjggMTAwLjY4Yy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDQuNjggMTI1LjdjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThMMTEyLjQgMjU2IDQuNjggMzYzLjcyYy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4bDI1LjAzIDI1LjAzYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBMMTYwIDMwMy42bDEwNy43MiAxMDcuNzJjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMGwyNS4wMy0yNS4wM2M2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4TDIwNy42IDI1NnonLyUzRSUzQy9zdmclM0VcXFwiKTt0cmFuc2l0aW9uOi4zc30ubXVsdGlzZWxlY3QtY2FyZXQsLm11bHRpc2VsZWN0LWNsZWFyLWljb257aGVpZ2h0OjEuMTI1cmVtOy13ZWJraXQtbWFzay1wb3NpdGlvbjpjZW50ZXI7bWFzay1wb3NpdGlvbjpjZW50ZXI7LXdlYmtpdC1tYXNrLXJlcGVhdDpuby1yZXBlYXQ7bWFzay1yZXBlYXQ6bm8tcmVwZWF0Oy13ZWJraXQtbWFzay1zaXplOmNvbnRhaW47bWFzay1zaXplOmNvbnRhaW47d2lkdGg6LjYyNXJlbX0ubXVsdGlzZWxlY3QtY2FyZXR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tcy1jYXJldC1jb2xvciwjOTk5KTtmbGV4LWdyb3c6MDtmbGV4LXNocmluazowO21hcmdpbjowIHZhcigtLW1zLXB4LC44NzVyZW0pIDAgMDstd2Via2l0LW1hc2staW1hZ2U6dXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgdmlld0JveD0nMCAwIDMyMCA1MTInIGZpbGw9J2N1cnJlbnRDb2xvcicgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nTTMxLjMgMTkyaDI1Ny4zYzE3LjggMCAyNi43IDIxLjUgMTQuMSAzNC4xTDE3NC4xIDM1NC44Yy03LjggNy44LTIwLjUgNy44LTI4LjMgMEwxNy4yIDIyNi4xQzQuNiAyMTMuNSAxMy41IDE5MiAzMS4zIDE5MnonLyUzRSUzQy9zdmclM0VcXFwiKTttYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMjAgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J00zMS4zIDE5MmgyNTcuM2MxNy44IDAgMjYuNyAyMS41IDE0LjEgMzQuMUwxNzQuMSAzNTQuOGMtNy44IDcuOC0yMC41IDcuOC0yOC4zIDBMMTcuMiAyMjYuMUM0LjYgMjEzLjUgMTMuNSAxOTIgMzEuMyAxOTJ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpO3RyYW5zaXRpb246dHJhbnNmb3JtIC4zczt6LWluZGV4OjEwfS5tdWx0aXNlbGVjdC1jYXJldC5pcy1vcGVue3BvaW50ZXItZXZlbnRzOmF1dG87dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfS5tdWx0aXNlbGVjdC1kcm9wZG93bnstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDtiYWNrZ3JvdW5kOnZhcigtLW1zLWRyb3Bkb3duLWJnLCNmZmYpO2JvcmRlcjp2YXIoLS1tcy1kcm9wZG93bi1ib3JkZXItd2lkdGgsMXB4KSBzb2xpZCB2YXIoLS1tcy1kcm9wZG93bi1ib3JkZXItY29sb3IsI2QxZDVkYik7Ym9yZGVyLXJhZGl1czowIDAgdmFyKC0tbXMtZHJvcGRvd24tcmFkaXVzLDRweCkgdmFyKC0tbXMtZHJvcGRvd24tcmFkaXVzLDRweCk7Ym90dG9tOjA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtsZWZ0OmNhbGModmFyKC0tbXMtYm9yZGVyLXdpZHRoLCAxcHgpKi0xKTttYXJnaW4tdG9wOmNhbGModmFyKC0tbXMtYm9yZGVyLXdpZHRoLCAxcHgpKi0xKTttYXgtaGVpZ2h0OnZhcigtLW1zLW1heC1oZWlnaHQsMTByZW0pO291dGxpbmU6bm9uZTtvdmVyZmxvdy15OnNjcm9sbDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDpjYWxjKHZhcigtLW1zLWJvcmRlci13aWR0aCwgMXB4KSotMSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTAwJSk7ei1pbmRleDoxMDB9Lm11bHRpc2VsZWN0LWRyb3Bkb3duLmlzLXRvcHtib3JkZXItcmFkaXVzOnZhcigtLW1zLWRyb3Bkb3duLXJhZGl1cyw0cHgpIHZhcigtLW1zLWRyb3Bkb3duLXJhZGl1cyw0cHgpIDAgMDtib3R0b206YXV0bzt0b3A6dmFyKC0tbXMtYm9yZGVyLXdpZHRoLDFweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEwMCUpfS5tdWx0aXNlbGVjdC1kcm9wZG93bi5pcy1oaWRkZW57ZGlzcGxheTpub25lfS5tdWx0aXNlbGVjdC1vcHRpb25ze2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bGlzdC1zdHlsZTpub25lO21hcmdpbjowO3BhZGRpbmc6MH0ubXVsdGlzZWxlY3QtZ3JvdXB7bWFyZ2luOjA7cGFkZGluZzowfS5tdWx0aXNlbGVjdC1ncm91cC1sYWJlbHthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDp2YXIoLS1tcy1ncm91cC1sYWJlbC1iZywjZTVlN2ViKTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtY29sb3IsIzM3NDE1MSk7Y3Vyc29yOmRlZmF1bHQ7ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZTouODc1cmVtO2ZvbnQtd2VpZ2h0OjYwMDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDtsaW5lLWhlaWdodDp2YXIoLS1tcy1ncm91cC1sYWJlbC1saW5lLWhlaWdodCwxLjM3NSk7cGFkZGluZzp2YXIoLS1tcy1ncm91cC1sYWJlbC1weSwuM3JlbSkgdmFyKC0tbXMtZ3JvdXAtbGFiZWwtcHgsLjc1cmVtKTt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVsLmlzLXBvaW50YWJsZXtjdXJzb3I6cG9pbnRlcn0ubXVsdGlzZWxlY3QtZ3JvdXAtbGFiZWwuaXMtcG9pbnRlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLWdyb3VwLWxhYmVsLWJnLXBvaW50ZWQsI2QxZDVkYik7Y29sb3I6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtY29sb3ItcG9pbnRlZCwjMzc0MTUxKX0ubXVsdGlzZWxlY3QtZ3JvdXAtbGFiZWwuaXMtc2VsZWN0ZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1ncm91cC1sYWJlbC1iZy1zZWxlY3RlZCwjMDU5NjY5KTtjb2xvcjp2YXIoLS1tcy1ncm91cC1sYWJlbC1jb2xvci1zZWxlY3RlZCwjZmZmKX0ubXVsdGlzZWxlY3QtZ3JvdXAtbGFiZWwuaXMtZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1ncm91cC1sYWJlbC1iZy1kaXNhYmxlZCwjZjNmNGY2KTtjb2xvcjp2YXIoLS1tcy1ncm91cC1sYWJlbC1jb2xvci1kaXNhYmxlZCwjZDFkNWRiKTtjdXJzb3I6bm90LWFsbG93ZWR9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVsLmlzLXNlbGVjdGVkLmlzLXBvaW50ZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1ncm91cC1sYWJlbC1iZy1zZWxlY3RlZC1wb2ludGVkLCMwYzllNzApO2NvbG9yOnZhcigtLW1zLWdyb3VwLWxhYmVsLWNvbG9yLXNlbGVjdGVkLXBvaW50ZWQsI2ZmZil9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVsLmlzLXNlbGVjdGVkLmlzLWRpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtYmctc2VsZWN0ZWQtZGlzYWJsZWQsIzc1Y2ZiMSk7Y29sb3I6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtY29sb3Itc2VsZWN0ZWQtZGlzYWJsZWQsI2QxZmFlNSl9Lm11bHRpc2VsZWN0LWdyb3VwLW9wdGlvbnN7bWFyZ2luOjA7cGFkZGluZzowfS5tdWx0aXNlbGVjdC1vcHRpb257YWxpZ24taXRlbXM6Y2VudGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7Zm9udC1zaXplOnZhcigtLW1zLW9wdGlvbi1mb250LXNpemUsMXJlbSk7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7bGluZS1oZWlnaHQ6dmFyKC0tbXMtb3B0aW9uLWxpbmUtaGVpZ2h0LDEuMzc1KTtwYWRkaW5nOnZhcigtLW1zLW9wdGlvbi1weSwuNXJlbSkgdmFyKC0tbXMtb3B0aW9uLXB4LC43NXJlbSk7dGV4dC1hbGlnbjpsZWZ0O3RleHQtZGVjb3JhdGlvbjpub25lfS5tdWx0aXNlbGVjdC1vcHRpb24uaXMtcG9pbnRlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLW9wdGlvbi1iZy1wb2ludGVkLCNmM2Y0ZjYpO2NvbG9yOnZhcigtLW1zLW9wdGlvbi1jb2xvci1wb2ludGVkLCMxZjI5MzcpfS5tdWx0aXNlbGVjdC1vcHRpb24uaXMtc2VsZWN0ZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1vcHRpb24tYmctc2VsZWN0ZWQsIzEwYjk4MSk7Y29sb3I6dmFyKC0tbXMtb3B0aW9uLWNvbG9yLXNlbGVjdGVkLCNmZmYpfS5tdWx0aXNlbGVjdC1vcHRpb24uaXMtZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1vcHRpb24tYmctZGlzYWJsZWQsI2ZmZik7Y29sb3I6dmFyKC0tbXMtb3B0aW9uLWNvbG9yLWRpc2FibGVkLCNkMWQ1ZGIpO2N1cnNvcjpub3QtYWxsb3dlZH0ubXVsdGlzZWxlY3Qtb3B0aW9uLmlzLXNlbGVjdGVkLmlzLXBvaW50ZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1vcHRpb24tYmctc2VsZWN0ZWQtcG9pbnRlZCwjMjZjMDhlKTtjb2xvcjp2YXIoLS1tcy1vcHRpb24tY29sb3Itc2VsZWN0ZWQtcG9pbnRlZCwjZmZmKX0ubXVsdGlzZWxlY3Qtb3B0aW9uLmlzLXNlbGVjdGVkLmlzLWRpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tbXMtb3B0aW9uLWJnLXNlbGVjdGVkLWRpc2FibGVkLCM4N2RjYzApO2NvbG9yOnZhcigtLW1zLW9wdGlvbi1jb2xvci1zZWxlY3RlZC1kaXNhYmxlZCwjZDFmYWU1KX0ubXVsdGlzZWxlY3Qtbm8tb3B0aW9ucywubXVsdGlzZWxlY3Qtbm8tcmVzdWx0c3tjb2xvcjp2YXIoLS1tcy1lbXB0eS1jb2xvciwjNGI1NTYzKTtwYWRkaW5nOnZhcigtLW1zLW9wdGlvbi1weSwuNXJlbSkgdmFyKC0tbXMtb3B0aW9uLXB4LC43NXJlbSl9Lm11bHRpc2VsZWN0LWZha2UtaW5wdXR7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6MDtib3R0b206LTFweDtmb250LXNpemU6MDtoZWlnaHQ6MXB4O2xlZnQ6MDtvdXRsaW5lOm5vbmU7cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7d2lkdGg6MTAwJX0ubXVsdGlzZWxlY3QtZmFrZS1pbnB1dDphY3RpdmUsLm11bHRpc2VsZWN0LWZha2UtaW5wdXQ6Zm9jdXN7b3V0bGluZTpub25lfS5tdWx0aXNlbGVjdC1hc3Npc3RpdmUtdGV4dHtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4fS5tdWx0aXNlbGVjdC1zcGFjZXJ7ZGlzcGxheTpub25lfVtkaXI9cnRsXSAubXVsdGlzZWxlY3QtbXVsdGlwbGUtbGFiZWwsW2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlcixbZGlyPXJ0bF0gLm11bHRpc2VsZWN0LXNpbmdsZS1sYWJlbHtsZWZ0OmF1dG87cGFkZGluZy1sZWZ0OmNhbGMoMS4yNXJlbSArIHZhcigtLW1zLXB4LCAuODc1cmVtKSozKTtwYWRkaW5nLXJpZ2h0OnZhcigtLW1zLXB4LC44NzVyZW0pO3JpZ2h0OjB9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC1zZWFyY2h7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDp2YXIoLS1tcy1weCwuODc1cmVtKX1bZGlyPXJ0bF0gLm11bHRpc2VsZWN0LXRhZ3N7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDp2YXIoLS1tcy1weSwuNXJlbSl9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC10YWd7bWFyZ2luLWxlZnQ6dmFyKC0tbXMtdGFnLW14LC4yNXJlbSk7bWFyZ2luLXJpZ2h0OjA7cGFkZGluZzp2YXIoLS1tcy10YWctcHksLjEyNXJlbSkgdmFyKC0tbXMtdGFnLXB4LC41cmVtKSB2YXIoLS1tcy10YWctcHksLjEyNXJlbSkgMH1bZGlyPXJ0bF0gLm11bHRpc2VsZWN0LXRhZy5pcy1kaXNhYmxlZHtwYWRkaW5nLWxlZnQ6dmFyKC0tbXMtdGFnLXB4LC41cmVtKX1bZGlyPXJ0bF0gLm11bHRpc2VsZWN0LWNhcmV0LFtkaXI9cnRsXSAubXVsdGlzZWxlY3Qtc3Bpbm5lcnttYXJnaW46MCAwIDAgdmFyKC0tbXMtcHgsLjg3NXJlbSl9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC1jbGVhcntwYWRkaW5nOjAgMCAwIHZhcigtLW1zLXB4LC44NzVyZW0pfUBrZXlmcmFtZXMgbXVsdGlzZWxlY3Qtc3BpbnswJXt0cmFuc2Zvcm06cm90YXRlKDApfXRve3RyYW5zZm9ybTpyb3RhdGUoMXR1cm4pfX1cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qXG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG4vLyBjc3MgYmFzZSBjb2RlLCBpbmplY3RlZCBieSB0aGUgY3NzLWxvYWRlclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTsgLy8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKTtcblxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgcmV0dXJuIFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpLmNvbmNhdChjb250ZW50LCBcIn1cIik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pLmpvaW4oXCJcIik7XG4gIH07IC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5cblxuICBsaXN0LmkgPSBmdW5jdGlvbiAobW9kdWxlcywgbWVkaWFRdWVyeSwgZGVkdXBlKSB7XG4gICAgaWYgKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgIG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIFwiXCJdXTtcbiAgICB9XG5cbiAgICB2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuXG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItZGVzdHJ1Y3R1cmluZ1xuICAgICAgICB2YXIgaWQgPSB0aGlzW2ldWzBdO1xuXG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG1vZHVsZXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgaXRlbSA9IFtdLmNvbmNhdChtb2R1bGVzW19pXSk7XG5cbiAgICAgIGlmIChkZWR1cGUgJiYgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29udGludWVcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZWRpYVF1ZXJ5KSB7XG4gICAgICAgIGlmICghaXRlbVsyXSkge1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYVF1ZXJ5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMl0gPSBcIlwiLmNvbmNhdChtZWRpYVF1ZXJ5LCBcIiBhbmQgXCIpLmNvbmNhdChpdGVtWzJdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsaXN0LnB1c2goaXRlbSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBsaXN0O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7IHJldHVybiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyLCBpKSB8fCBfbm9uSXRlcmFibGVSZXN0KCk7IH1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHsgdmFyIF9pID0gYXJyICYmICh0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIGFycltTeW1ib2wuaXRlcmF0b3JdIHx8IGFycltcIkBAaXRlcmF0b3JcIl0pOyBpZiAoX2kgPT0gbnVsbCkgcmV0dXJuOyB2YXIgX2FyciA9IFtdOyB2YXIgX24gPSB0cnVlOyB2YXIgX2QgPSBmYWxzZTsgdmFyIF9zLCBfZTsgdHJ5IHsgZm9yIChfaSA9IF9pLmNhbGwoYXJyKTsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkgeyBfYXJyLnB1c2goX3MudmFsdWUpOyBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7IH0gfSBjYXRjaCAoZXJyKSB7IF9kID0gdHJ1ZTsgX2UgPSBlcnI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0gIT0gbnVsbCkgX2lbXCJyZXR1cm5cIl0oKTsgfSBmaW5hbGx5IHsgaWYgKF9kKSB0aHJvdyBfZTsgfSB9IHJldHVybiBfYXJyOyB9XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSkge1xuICB2YXIgX2l0ZW0gPSBfc2xpY2VkVG9BcnJheShpdGVtLCA0KSxcbiAgICAgIGNvbnRlbnQgPSBfaXRlbVsxXSxcbiAgICAgIGNzc01hcHBpbmcgPSBfaXRlbVszXTtcblxuICBpZiAoIWNzc01hcHBpbmcpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYnRvYSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gICAgdmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGNzc01hcHBpbmcpKSkpO1xuICAgIHZhciBkYXRhID0gXCJzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxcIi5jb25jYXQoYmFzZTY0KTtcbiAgICB2YXIgc291cmNlTWFwcGluZyA9IFwiLyojIFwiLmNvbmNhdChkYXRhLCBcIiAqL1wiKTtcbiAgICB2YXIgc291cmNlVVJMcyA9IGNzc01hcHBpbmcuc291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgcmV0dXJuIFwiLyojIHNvdXJjZVVSTD1cIi5jb25jYXQoY3NzTWFwcGluZy5zb3VyY2VSb290IHx8IFwiXCIpLmNvbmNhdChzb3VyY2UsIFwiICovXCIpO1xuICAgIH0pO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oXCJcXG5cIik7XG4gIH1cblxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZExlYWRpbmdaZXJvcyhudW1iZXIsIHRhcmdldExlbmd0aCkge1xuICB2YXIgc2lnbiA9IG51bWJlciA8IDAgPyAnLScgOiAnJztcbiAgdmFyIG91dHB1dCA9IE1hdGguYWJzKG51bWJlcikudG9TdHJpbmcoKTtcbiAgd2hpbGUgKG91dHB1dC5sZW5ndGggPCB0YXJnZXRMZW5ndGgpIHtcbiAgICBvdXRwdXQgPSAnMCcgKyBvdXRwdXQ7XG4gIH1cbiAgcmV0dXJuIHNpZ24gKyBvdXRwdXQ7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYXNzaWduKHRhcmdldCwgb2JqZWN0KSB7XG4gIGlmICh0YXJnZXQgPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2Fzc2lnbiByZXF1aXJlcyB0aGF0IGlucHV0IHBhcmFtZXRlciBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQnKTtcbiAgfVxuICBmb3IgKHZhciBwcm9wZXJ0eSBpbiBvYmplY3QpIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpKSB7XG4gICAgICA7XG4gICAgICB0YXJnZXRbcHJvcGVydHldID0gb2JqZWN0W3Byb3BlcnR5XTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRhcmdldDtcbn0iLCJpbXBvcnQgYXNzaWduIGZyb20gXCIuLi9hc3NpZ24vaW5kZXguanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNsb25lT2JqZWN0KG9iamVjdCkge1xuICByZXR1cm4gYXNzaWduKHt9LCBvYmplY3QpO1xufSIsImltcG9ydCBkZWZhdWx0TG9jYWxlIGZyb20gXCIuLi8uLi9sb2NhbGUvZW4tVVMvaW5kZXguanNcIjtcbmV4cG9ydCBkZWZhdWx0IGRlZmF1bHRMb2NhbGU7IiwidmFyIGRlZmF1bHRPcHRpb25zID0ge307XG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdE9wdGlvbnMoKSB7XG4gIHJldHVybiBkZWZhdWx0T3B0aW9ucztcbn1cbmV4cG9ydCBmdW5jdGlvbiBzZXREZWZhdWx0T3B0aW9ucyhuZXdPcHRpb25zKSB7XG4gIGRlZmF1bHRPcHRpb25zID0gbmV3T3B0aW9ucztcbn0iLCJpbXBvcnQgZ2V0VVRDRGF5T2ZZZWFyIGZyb20gXCIuLi8uLi8uLi9fbGliL2dldFVUQ0RheU9mWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IGdldFVUQ0lTT1dlZWsgZnJvbSBcIi4uLy4uLy4uL19saWIvZ2V0VVRDSVNPV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IGdldFVUQ0lTT1dlZWtZZWFyIGZyb20gXCIuLi8uLi8uLi9fbGliL2dldFVUQ0lTT1dlZWtZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0VVRDV2VlayBmcm9tIFwiLi4vLi4vLi4vX2xpYi9nZXRVVENXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0VVRDV2Vla1llYXIgZnJvbSBcIi4uLy4uLy4uL19saWIvZ2V0VVRDV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCBhZGRMZWFkaW5nWmVyb3MgZnJvbSBcIi4uLy4uL2FkZExlYWRpbmdaZXJvcy9pbmRleC5qc1wiO1xuaW1wb3J0IGxpZ2h0Rm9ybWF0dGVycyBmcm9tIFwiLi4vbGlnaHRGb3JtYXR0ZXJzL2luZGV4LmpzXCI7XG52YXIgZGF5UGVyaW9kRW51bSA9IHtcbiAgYW06ICdhbScsXG4gIHBtOiAncG0nLFxuICBtaWRuaWdodDogJ21pZG5pZ2h0JyxcbiAgbm9vbjogJ25vb24nLFxuICBtb3JuaW5nOiAnbW9ybmluZycsXG4gIGFmdGVybm9vbjogJ2FmdGVybm9vbicsXG4gIGV2ZW5pbmc6ICdldmVuaW5nJyxcbiAgbmlnaHQ6ICduaWdodCdcbn07XG4vKlxuICogfCAgICAgfCBVbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBVbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfC0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCAgYSAgfCBBTSwgUE0gICAgICAgICAgICAgICAgICAgICAgICAgfCAgQSogfCBNaWxsaXNlY29uZHMgaW4gZGF5ICAgICAgICAgICAgfFxuICogfCAgYiAgfCBBTSwgUE0sIG5vb24sIG1pZG5pZ2h0ICAgICAgICAgfCAgQiAgfCBGbGV4aWJsZSBkYXkgcGVyaW9kICAgICAgICAgICAgfFxuICogfCAgYyAgfCBTdGFuZC1hbG9uZSBsb2NhbCBkYXkgb2Ygd2VlayAgfCAgQyogfCBMb2NhbGl6ZWQgaG91ciB3LyBkYXkgcGVyaW9kICAgfFxuICogfCAgZCAgfCBEYXkgb2YgbW9udGggICAgICAgICAgICAgICAgICAgfCAgRCAgfCBEYXkgb2YgeWVhciAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgZSAgfCBMb2NhbCBkYXkgb2Ygd2VlayAgICAgICAgICAgICAgfCAgRSAgfCBEYXkgb2Ygd2VlayAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgZiAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgRiogfCBEYXkgb2Ygd2VlayBpbiBtb250aCAgICAgICAgICAgfFxuICogfCAgZyogfCBNb2RpZmllZCBKdWxpYW4gZGF5ICAgICAgICAgICAgfCAgRyAgfCBFcmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgaCAgfCBIb3VyIFsxLTEyXSAgICAgICAgICAgICAgICAgICAgfCAgSCAgfCBIb3VyIFswLTIzXSAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgaSEgfCBJU08gZGF5IG9mIHdlZWsgICAgICAgICAgICAgICAgfCAgSSEgfCBJU08gd2VlayBvZiB5ZWFyICAgICAgICAgICAgICAgfFxuICogfCAgaiogfCBMb2NhbGl6ZWQgaG91ciB3LyBkYXkgcGVyaW9kICAgfCAgSiogfCBMb2NhbGl6ZWQgaG91ciB3L28gZGF5IHBlcmlvZCAgfFxuICogfCAgayAgfCBIb3VyIFsxLTI0XSAgICAgICAgICAgICAgICAgICAgfCAgSyAgfCBIb3VyIFswLTExXSAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgbCogfCAoZGVwcmVjYXRlZCkgICAgICAgICAgICAgICAgICAgfCAgTCAgfCBTdGFuZC1hbG9uZSBtb250aCAgICAgICAgICAgICAgfFxuICogfCAgbSAgfCBNaW51dGUgICAgICAgICAgICAgICAgICAgICAgICAgfCAgTSAgfCBNb250aCAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgbiAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgTiAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgbyEgfCBPcmRpbmFsIG51bWJlciBtb2RpZmllciAgICAgICAgfCAgTyAgfCBUaW1lem9uZSAoR01UKSAgICAgICAgICAgICAgICAgfFxuICogfCAgcCEgfCBMb25nIGxvY2FsaXplZCB0aW1lICAgICAgICAgICAgfCAgUCEgfCBMb25nIGxvY2FsaXplZCBkYXRlICAgICAgICAgICAgfFxuICogfCAgcSAgfCBTdGFuZC1hbG9uZSBxdWFydGVyICAgICAgICAgICAgfCAgUSAgfCBRdWFydGVyICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgciogfCBSZWxhdGVkIEdyZWdvcmlhbiB5ZWFyICAgICAgICAgfCAgUiEgfCBJU08gd2Vlay1udW1iZXJpbmcgeWVhciAgICAgICAgfFxuICogfCAgcyAgfCBTZWNvbmQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgUyAgfCBGcmFjdGlvbiBvZiBzZWNvbmQgICAgICAgICAgICAgfFxuICogfCAgdCEgfCBTZWNvbmRzIHRpbWVzdGFtcCAgICAgICAgICAgICAgfCAgVCEgfCBNaWxsaXNlY29uZHMgdGltZXN0YW1wICAgICAgICAgfFxuICogfCAgdSAgfCBFeHRlbmRlZCB5ZWFyICAgICAgICAgICAgICAgICAgfCAgVSogfCBDeWNsaWMgeWVhciAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgdiogfCBUaW1lem9uZSAoZ2VuZXJpYyBub24tbG9jYXQuKSAgfCAgViogfCBUaW1lem9uZSAobG9jYXRpb24pICAgICAgICAgICAgfFxuICogfCAgdyAgfCBMb2NhbCB3ZWVrIG9mIHllYXIgICAgICAgICAgICAgfCAgVyogfCBXZWVrIG9mIG1vbnRoICAgICAgICAgICAgICAgICAgfFxuICogfCAgeCAgfCBUaW1lem9uZSAoSVNPLTg2MDEgdy9vIFopICAgICAgfCAgWCAgfCBUaW1lem9uZSAoSVNPLTg2MDEpICAgICAgICAgICAgfFxuICogfCAgeSAgfCBZZWFyIChhYnMpICAgICAgICAgICAgICAgICAgICAgfCAgWSAgfCBMb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgfFxuICogfCAgeiAgfCBUaW1lem9uZSAoc3BlY2lmaWMgbm9uLWxvY2F0LikgfCAgWiogfCBUaW1lem9uZSAoYWxpYXNlcykgICAgICAgICAgICAgfFxuICpcbiAqIExldHRlcnMgbWFya2VkIGJ5ICogYXJlIG5vdCBpbXBsZW1lbnRlZCBidXQgcmVzZXJ2ZWQgYnkgVW5pY29kZSBzdGFuZGFyZC5cbiAqXG4gKiBMZXR0ZXJzIG1hcmtlZCBieSAhIGFyZSBub24tc3RhbmRhcmQsIGJ1dCBpbXBsZW1lbnRlZCBieSBkYXRlLWZuczpcbiAqIC0gYG9gIG1vZGlmaWVzIHRoZSBwcmV2aW91cyB0b2tlbiB0byB0dXJuIGl0IGludG8gYW4gb3JkaW5hbCAoc2VlIGBmb3JtYXRgIGRvY3MpXG4gKiAtIGBpYCBpcyBJU08gZGF5IG9mIHdlZWsuIEZvciBgaWAgYW5kIGBpaWAgaXMgcmV0dXJucyBudW1lcmljIElTTyB3ZWVrIGRheXMsXG4gKiAgIGkuZS4gNyBmb3IgU3VuZGF5LCAxIGZvciBNb25kYXksIGV0Yy5cbiAqIC0gYElgIGlzIElTTyB3ZWVrIG9mIHllYXIsIGFzIG9wcG9zZWQgdG8gYHdgIHdoaWNoIGlzIGxvY2FsIHdlZWsgb2YgeWVhci5cbiAqIC0gYFJgIGlzIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyLCBhcyBvcHBvc2VkIHRvIGBZYCB3aGljaCBpcyBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyLlxuICogICBgUmAgaXMgc3VwcG9zZWQgdG8gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGBJYCBhbmQgYGlgXG4gKiAgIGZvciB1bml2ZXJzYWwgSVNPIHdlZWstbnVtYmVyaW5nIGRhdGUsIHdoZXJlYXNcbiAqICAgYFlgIGlzIHN1cHBvc2VkIHRvIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBgd2AgYW5kIGBlYFxuICogICBmb3Igd2Vlay1udW1iZXJpbmcgZGF0ZSBzcGVjaWZpYyB0byB0aGUgbG9jYWxlLlxuICogLSBgUGAgaXMgbG9uZyBsb2NhbGl6ZWQgZGF0ZSBmb3JtYXRcbiAqIC0gYHBgIGlzIGxvbmcgbG9jYWxpemVkIHRpbWUgZm9ybWF0XG4gKi9cblxudmFyIGZvcm1hdHRlcnMgPSB7XG4gIC8vIEVyYVxuICBHOiBmdW5jdGlvbiBHKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIHZhciBlcmEgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCkgPiAwID8gMSA6IDA7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gQUQsIEJDXG4gICAgICBjYXNlICdHJzpcbiAgICAgIGNhc2UgJ0dHJzpcbiAgICAgIGNhc2UgJ0dHRyc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5lcmEoZXJhLCB7XG4gICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCdcbiAgICAgICAgfSk7XG4gICAgICAvLyBBLCBCXG4gICAgICBjYXNlICdHR0dHRyc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5lcmEoZXJhLCB7XG4gICAgICAgICAgd2lkdGg6ICduYXJyb3cnXG4gICAgICAgIH0pO1xuICAgICAgLy8gQW5ubyBEb21pbmksIEJlZm9yZSBDaHJpc3RcbiAgICAgIGNhc2UgJ0dHR0cnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmVyYShlcmEsIHtcbiAgICAgICAgICB3aWR0aDogJ3dpZGUnXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgLy8gWWVhclxuICB5OiBmdW5jdGlvbiB5KGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIC8vIE9yZGluYWwgbnVtYmVyXG4gICAgaWYgKHRva2VuID09PSAneW8nKSB7XG4gICAgICB2YXIgc2lnbmVkWWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICAgIC8vIFJldHVybnMgMSBmb3IgMSBCQyAod2hpY2ggaXMgeWVhciAwIGluIEphdmFTY3JpcHQpXG4gICAgICB2YXIgeWVhciA9IHNpZ25lZFllYXIgPiAwID8gc2lnbmVkWWVhciA6IDEgLSBzaWduZWRZZWFyO1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoeWVhciwge1xuICAgICAgICB1bml0OiAneWVhcidcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbGlnaHRGb3JtYXR0ZXJzLnkoZGF0ZSwgdG9rZW4pO1xuICB9LFxuICAvLyBMb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gIFk6IGZ1bmN0aW9uIFkoZGF0ZSwgdG9rZW4sIGxvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIHNpZ25lZFdlZWtZZWFyID0gZ2V0VVRDV2Vla1llYXIoZGF0ZSwgb3B0aW9ucyk7XG4gICAgLy8gUmV0dXJucyAxIGZvciAxIEJDICh3aGljaCBpcyB5ZWFyIDAgaW4gSmF2YVNjcmlwdClcbiAgICB2YXIgd2Vla1llYXIgPSBzaWduZWRXZWVrWWVhciA+IDAgPyBzaWduZWRXZWVrWWVhciA6IDEgLSBzaWduZWRXZWVrWWVhcjtcblxuICAgIC8vIFR3byBkaWdpdCB5ZWFyXG4gICAgaWYgKHRva2VuID09PSAnWVknKSB7XG4gICAgICB2YXIgdHdvRGlnaXRZZWFyID0gd2Vla1llYXIgJSAxMDA7XG4gICAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKHR3b0RpZ2l0WWVhciwgMik7XG4gICAgfVxuXG4gICAgLy8gT3JkaW5hbCBudW1iZXJcbiAgICBpZiAodG9rZW4gPT09ICdZbycpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKHdlZWtZZWFyLCB7XG4gICAgICAgIHVuaXQ6ICd5ZWFyJ1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gUGFkZGluZ1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3Mod2Vla1llYXIsIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gIFI6IGZ1bmN0aW9uIFIoZGF0ZSwgdG9rZW4pIHtcbiAgICB2YXIgaXNvV2Vla1llYXIgPSBnZXRVVENJU09XZWVrWWVhcihkYXRlKTtcblxuICAgIC8vIFBhZGRpbmdcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGlzb1dlZWtZZWFyLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuICAvLyBFeHRlbmRlZCB5ZWFyLiBUaGlzIGlzIGEgc2luZ2xlIG51bWJlciBkZXNpZ25hdGluZyB0aGUgeWVhciBvZiB0aGlzIGNhbGVuZGFyIHN5c3RlbS5cbiAgLy8gVGhlIG1haW4gZGlmZmVyZW5jZSBiZXR3ZWVuIGB5YCBhbmQgYHVgIGxvY2FsaXplcnMgYXJlIEIuQy4geWVhcnM6XG4gIC8vIHwgWWVhciB8IGB5YCB8IGB1YCB8XG4gIC8vIHwtLS0tLS18LS0tLS18LS0tLS18XG4gIC8vIHwgQUMgMSB8ICAgMSB8ICAgMSB8XG4gIC8vIHwgQkMgMSB8ICAgMSB8ICAgMCB8XG4gIC8vIHwgQkMgMiB8ICAgMiB8ICAtMSB8XG4gIC8vIEFsc28gYHl5YCBhbHdheXMgcmV0dXJucyB0aGUgbGFzdCB0d28gZGlnaXRzIG9mIGEgeWVhcixcbiAgLy8gd2hpbGUgYHV1YCBwYWRzIHNpbmdsZSBkaWdpdCB5ZWFycyB0byAyIGNoYXJhY3RlcnMgYW5kIHJldHVybnMgb3RoZXIgeWVhcnMgdW5jaGFuZ2VkLlxuICB1OiBmdW5jdGlvbiB1KGRhdGUsIHRva2VuKSB7XG4gICAgdmFyIHllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyh5ZWFyLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuICAvLyBRdWFydGVyXG4gIFE6IGZ1bmN0aW9uIFEoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgdmFyIHF1YXJ0ZXIgPSBNYXRoLmNlaWwoKGRhdGUuZ2V0VVRDTW9udGgoKSArIDEpIC8gMyk7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gMSwgMiwgMywgNFxuICAgICAgY2FzZSAnUSc6XG4gICAgICAgIHJldHVybiBTdHJpbmcocXVhcnRlcik7XG4gICAgICAvLyAwMSwgMDIsIDAzLCAwNFxuICAgICAgY2FzZSAnUVEnOlxuICAgICAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKHF1YXJ0ZXIsIDIpO1xuICAgICAgLy8gMXN0LCAybmQsIDNyZCwgNHRoXG4gICAgICBjYXNlICdRbyc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKHF1YXJ0ZXIsIHtcbiAgICAgICAgICB1bml0OiAncXVhcnRlcidcbiAgICAgICAgfSk7XG4gICAgICAvLyBRMSwgUTIsIFEzLCBRNFxuICAgICAgY2FzZSAnUVFRJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLnF1YXJ0ZXIocXVhcnRlciwge1xuICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIDEsIDIsIDMsIDQgKG5hcnJvdyBxdWFydGVyOyBjb3VsZCBiZSBub3QgbnVtZXJpY2FsKVxuICAgICAgY2FzZSAnUVFRUVEnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUucXVhcnRlcihxdWFydGVyLCB7XG4gICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIDFzdCBxdWFydGVyLCAybmQgcXVhcnRlciwgLi4uXG4gICAgICBjYXNlICdRUVFRJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5xdWFydGVyKHF1YXJ0ZXIsIHtcbiAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIC8vIFN0YW5kLWFsb25lIHF1YXJ0ZXJcbiAgcTogZnVuY3Rpb24gcShkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgcXVhcnRlciA9IE1hdGguY2VpbCgoZGF0ZS5nZXRVVENNb250aCgpICsgMSkgLyAzKTtcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyAxLCAyLCAzLCA0XG4gICAgICBjYXNlICdxJzpcbiAgICAgICAgcmV0dXJuIFN0cmluZyhxdWFydGVyKTtcbiAgICAgIC8vIDAxLCAwMiwgMDMsIDA0XG4gICAgICBjYXNlICdxcSc6XG4gICAgICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MocXVhcnRlciwgMik7XG4gICAgICAvLyAxc3QsIDJuZCwgM3JkLCA0dGhcbiAgICAgIGNhc2UgJ3FvJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIocXVhcnRlciwge1xuICAgICAgICAgIHVuaXQ6ICdxdWFydGVyJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFExLCBRMiwgUTMsIFE0XG4gICAgICBjYXNlICdxcXEnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUucXVhcnRlcihxdWFydGVyLCB7XG4gICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgIH0pO1xuICAgICAgLy8gMSwgMiwgMywgNCAobmFycm93IHF1YXJ0ZXI7IGNvdWxkIGJlIG5vdCBudW1lcmljYWwpXG4gICAgICBjYXNlICdxcXFxcSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5xdWFydGVyKHF1YXJ0ZXIsIHtcbiAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgIH0pO1xuICAgICAgLy8gMXN0IHF1YXJ0ZXIsIDJuZCBxdWFydGVyLCAuLi5cbiAgICAgIGNhc2UgJ3FxcXEnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLnF1YXJ0ZXIocXVhcnRlciwge1xuICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgLy8gTW9udGhcbiAgTTogZnVuY3Rpb24gTShkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgbW9udGggPSBkYXRlLmdldFVUQ01vbnRoKCk7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgY2FzZSAnTSc6XG4gICAgICBjYXNlICdNTSc6XG4gICAgICAgIHJldHVybiBsaWdodEZvcm1hdHRlcnMuTShkYXRlLCB0b2tlbik7XG4gICAgICAvLyAxc3QsIDJuZCwgLi4uLCAxMnRoXG4gICAgICBjYXNlICdNbyc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKG1vbnRoICsgMSwge1xuICAgICAgICAgIHVuaXQ6ICdtb250aCdcbiAgICAgICAgfSk7XG4gICAgICAvLyBKYW4sIEZlYiwgLi4uLCBEZWNcbiAgICAgIGNhc2UgJ01NTSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5tb250aChtb250aCwge1xuICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIEosIEYsIC4uLiwgRFxuICAgICAgY2FzZSAnTU1NTU0nOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUubW9udGgobW9udGgsIHtcbiAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgLy8gSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXJcbiAgICAgIGNhc2UgJ01NTU0nOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm1vbnRoKG1vbnRoLCB7XG4gICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgfVxuICB9LFxuICAvLyBTdGFuZC1hbG9uZSBtb250aFxuICBMOiBmdW5jdGlvbiBMKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIHZhciBtb250aCA9IGRhdGUuZ2V0VVRDTW9udGgoKTtcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyAxLCAyLCAuLi4sIDEyXG4gICAgICBjYXNlICdMJzpcbiAgICAgICAgcmV0dXJuIFN0cmluZyhtb250aCArIDEpO1xuICAgICAgLy8gMDEsIDAyLCAuLi4sIDEyXG4gICAgICBjYXNlICdMTCc6XG4gICAgICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MobW9udGggKyAxLCAyKTtcbiAgICAgIC8vIDFzdCwgMm5kLCAuLi4sIDEydGhcbiAgICAgIGNhc2UgJ0xvJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIobW9udGggKyAxLCB7XG4gICAgICAgICAgdW5pdDogJ21vbnRoJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIEphbiwgRmViLCAuLi4sIERlY1xuICAgICAgY2FzZSAnTExMJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm1vbnRoKG1vbnRoLCB7XG4gICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgIH0pO1xuICAgICAgLy8gSiwgRiwgLi4uLCBEXG4gICAgICBjYXNlICdMTExMTCc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5tb250aChtb250aCwge1xuICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgfSk7XG4gICAgICAvLyBKYW51YXJ5LCBGZWJydWFyeSwgLi4uLCBEZWNlbWJlclxuICAgICAgY2FzZSAnTExMTCc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbG9jYWxpemUubW9udGgobW9udGgsIHtcbiAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIC8vIExvY2FsIHdlZWsgb2YgeWVhclxuICB3OiBmdW5jdGlvbiB3KGRhdGUsIHRva2VuLCBsb2NhbGl6ZSwgb3B0aW9ucykge1xuICAgIHZhciB3ZWVrID0gZ2V0VVRDV2VlayhkYXRlLCBvcHRpb25zKTtcbiAgICBpZiAodG9rZW4gPT09ICd3bycpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKHdlZWssIHtcbiAgICAgICAgdW5pdDogJ3dlZWsnXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyh3ZWVrLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuICAvLyBJU08gd2VlayBvZiB5ZWFyXG4gIEk6IGZ1bmN0aW9uIEkoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgdmFyIGlzb1dlZWsgPSBnZXRVVENJU09XZWVrKGRhdGUpO1xuICAgIGlmICh0b2tlbiA9PT0gJ0lvJykge1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoaXNvV2Vlaywge1xuICAgICAgICB1bml0OiAnd2VlaydcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGlzb1dlZWssIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIERheSBvZiB0aGUgbW9udGhcbiAgZDogZnVuY3Rpb24gZChkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICBpZiAodG9rZW4gPT09ICdkbycpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGRhdGUuZ2V0VVRDRGF0ZSgpLCB7XG4gICAgICAgIHVuaXQ6ICdkYXRlJ1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBsaWdodEZvcm1hdHRlcnMuZChkYXRlLCB0b2tlbik7XG4gIH0sXG4gIC8vIERheSBvZiB5ZWFyXG4gIEQ6IGZ1bmN0aW9uIEQoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgdmFyIGRheU9mWWVhciA9IGdldFVUQ0RheU9mWWVhcihkYXRlKTtcbiAgICBpZiAodG9rZW4gPT09ICdEbycpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGRheU9mWWVhciwge1xuICAgICAgICB1bml0OiAnZGF5T2ZZZWFyJ1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoZGF5T2ZZZWFyLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuICAvLyBEYXkgb2Ygd2Vla1xuICBFOiBmdW5jdGlvbiBFKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIHZhciBkYXlPZldlZWsgPSBkYXRlLmdldFVUQ0RheSgpO1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIFR1ZVxuICAgICAgY2FzZSAnRSc6XG4gICAgICBjYXNlICdFRSc6XG4gICAgICBjYXNlICdFRUUnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFRcbiAgICAgIGNhc2UgJ0VFRUVFJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgLy8gVHVcbiAgICAgIGNhc2UgJ0VFRUVFRSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgLy8gVHVlc2RheVxuICAgICAgY2FzZSAnRUVFRSc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgLy8gTG9jYWwgZGF5IG9mIHdlZWtcbiAgZTogZnVuY3Rpb24gZShkYXRlLCB0b2tlbiwgbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgZGF5T2ZXZWVrID0gZGF0ZS5nZXRVVENEYXkoKTtcbiAgICB2YXIgbG9jYWxEYXlPZldlZWsgPSAoZGF5T2ZXZWVrIC0gb3B0aW9ucy53ZWVrU3RhcnRzT24gKyA4KSAlIDcgfHwgNztcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyBOdW1lcmljYWwgdmFsdWUgKE50aCBkYXkgb2Ygd2VlayB3aXRoIGN1cnJlbnQgbG9jYWxlIG9yIHdlZWtTdGFydHNPbilcbiAgICAgIGNhc2UgJ2UnOlxuICAgICAgICByZXR1cm4gU3RyaW5nKGxvY2FsRGF5T2ZXZWVrKTtcbiAgICAgIC8vIFBhZGRlZCBudW1lcmljYWwgdmFsdWVcbiAgICAgIGNhc2UgJ2VlJzpcbiAgICAgICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhsb2NhbERheU9mV2VlaywgMik7XG4gICAgICAvLyAxc3QsIDJuZCwgLi4uLCA3dGhcbiAgICAgIGNhc2UgJ2VvJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIobG9jYWxEYXlPZldlZWssIHtcbiAgICAgICAgICB1bml0OiAnZGF5J1xuICAgICAgICB9KTtcbiAgICAgIGNhc2UgJ2VlZSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgLy8gVFxuICAgICAgY2FzZSAnZWVlZWUnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICAvLyBUdVxuICAgICAgY2FzZSAnZWVlZWVlJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICAvLyBUdWVzZGF5XG4gICAgICBjYXNlICdlZWVlJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgfVxuICB9LFxuICAvLyBTdGFuZC1hbG9uZSBsb2NhbCBkYXkgb2Ygd2Vla1xuICBjOiBmdW5jdGlvbiBjKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSwgb3B0aW9ucykge1xuICAgIHZhciBkYXlPZldlZWsgPSBkYXRlLmdldFVUQ0RheSgpO1xuICAgIHZhciBsb2NhbERheU9mV2VlayA9IChkYXlPZldlZWsgLSBvcHRpb25zLndlZWtTdGFydHNPbiArIDgpICUgNyB8fCA3O1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIE51bWVyaWNhbCB2YWx1ZSAoc2FtZSBhcyBpbiBgZWApXG4gICAgICBjYXNlICdjJzpcbiAgICAgICAgcmV0dXJuIFN0cmluZyhsb2NhbERheU9mV2Vlayk7XG4gICAgICAvLyBQYWRkZWQgbnVtZXJpY2FsIHZhbHVlXG4gICAgICBjYXNlICdjYyc6XG4gICAgICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MobG9jYWxEYXlPZldlZWssIHRva2VuLmxlbmd0aCk7XG4gICAgICAvLyAxc3QsIDJuZCwgLi4uLCA3dGhcbiAgICAgIGNhc2UgJ2NvJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIobG9jYWxEYXlPZldlZWssIHtcbiAgICAgICAgICB1bml0OiAnZGF5J1xuICAgICAgICB9KTtcbiAgICAgIGNhc2UgJ2NjYyc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgIH0pO1xuICAgICAgLy8gVFxuICAgICAgY2FzZSAnY2NjY2MnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgfSk7XG4gICAgICAvLyBUdVxuICAgICAgY2FzZSAnY2NjY2NjJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgfSk7XG4gICAgICAvLyBUdWVzZGF5XG4gICAgICBjYXNlICdjY2NjJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgfSk7XG4gICAgfVxuICB9LFxuICAvLyBJU08gZGF5IG9mIHdlZWtcbiAgaTogZnVuY3Rpb24gaShkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgZGF5T2ZXZWVrID0gZGF0ZS5nZXRVVENEYXkoKTtcbiAgICB2YXIgaXNvRGF5T2ZXZWVrID0gZGF5T2ZXZWVrID09PSAwID8gNyA6IGRheU9mV2VlaztcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyAyXG4gICAgICBjYXNlICdpJzpcbiAgICAgICAgcmV0dXJuIFN0cmluZyhpc29EYXlPZldlZWspO1xuICAgICAgLy8gMDJcbiAgICAgIGNhc2UgJ2lpJzpcbiAgICAgICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhpc29EYXlPZldlZWssIHRva2VuLmxlbmd0aCk7XG4gICAgICAvLyAybmRcbiAgICAgIGNhc2UgJ2lvJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoaXNvRGF5T2ZXZWVrLCB7XG4gICAgICAgICAgdW5pdDogJ2RheSdcbiAgICAgICAgfSk7XG4gICAgICAvLyBUdWVcbiAgICAgIGNhc2UgJ2lpaSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgLy8gVFxuICAgICAgY2FzZSAnaWlpaWknOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICAvLyBUdVxuICAgICAgY2FzZSAnaWlpaWlpJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICAvLyBUdWVzZGF5XG4gICAgICBjYXNlICdpaWlpJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgfVxuICB9LFxuICAvLyBBTSBvciBQTVxuICBhOiBmdW5jdGlvbiBhKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIHZhciBob3VycyA9IGRhdGUuZ2V0VVRDSG91cnMoKTtcbiAgICB2YXIgZGF5UGVyaW9kRW51bVZhbHVlID0gaG91cnMgLyAxMiA+PSAxID8gJ3BtJyA6ICdhbSc7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgY2FzZSAnYSc6XG4gICAgICBjYXNlICdhYSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7XG4gICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgY2FzZSAnYWFhJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSkudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNhc2UgJ2FhYWFhJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHtcbiAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgY2FzZSAnYWFhYSc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5UGVyaW9kKGRheVBlcmlvZEVudW1WYWx1ZSwge1xuICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgLy8gQU0sIFBNLCBtaWRuaWdodCwgbm9vblxuICBiOiBmdW5jdGlvbiBiKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIHZhciBob3VycyA9IGRhdGUuZ2V0VVRDSG91cnMoKTtcbiAgICB2YXIgZGF5UGVyaW9kRW51bVZhbHVlO1xuICAgIGlmIChob3VycyA9PT0gMTIpIHtcbiAgICAgIGRheVBlcmlvZEVudW1WYWx1ZSA9IGRheVBlcmlvZEVudW0ubm9vbjtcbiAgICB9IGVsc2UgaWYgKGhvdXJzID09PSAwKSB7XG4gICAgICBkYXlQZXJpb2RFbnVtVmFsdWUgPSBkYXlQZXJpb2RFbnVtLm1pZG5pZ2h0O1xuICAgIH0gZWxzZSB7XG4gICAgICBkYXlQZXJpb2RFbnVtVmFsdWUgPSBob3VycyAvIDEyID49IDEgPyAncG0nIDogJ2FtJztcbiAgICB9XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgY2FzZSAnYic6XG4gICAgICBjYXNlICdiYic6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7XG4gICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgY2FzZSAnYmJiJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSkudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNhc2UgJ2JiYmJiJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHtcbiAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgY2FzZSAnYmJiYic6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5UGVyaW9kKGRheVBlcmlvZEVudW1WYWx1ZSwge1xuICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgLy8gaW4gdGhlIG1vcm5pbmcsIGluIHRoZSBhZnRlcm5vb24sIGluIHRoZSBldmVuaW5nLCBhdCBuaWdodFxuICBCOiBmdW5jdGlvbiBCKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIHZhciBob3VycyA9IGRhdGUuZ2V0VVRDSG91cnMoKTtcbiAgICB2YXIgZGF5UGVyaW9kRW51bVZhbHVlO1xuICAgIGlmIChob3VycyA+PSAxNykge1xuICAgICAgZGF5UGVyaW9kRW51bVZhbHVlID0gZGF5UGVyaW9kRW51bS5ldmVuaW5nO1xuICAgIH0gZWxzZSBpZiAoaG91cnMgPj0gMTIpIHtcbiAgICAgIGRheVBlcmlvZEVudW1WYWx1ZSA9IGRheVBlcmlvZEVudW0uYWZ0ZXJub29uO1xuICAgIH0gZWxzZSBpZiAoaG91cnMgPj0gNCkge1xuICAgICAgZGF5UGVyaW9kRW51bVZhbHVlID0gZGF5UGVyaW9kRW51bS5tb3JuaW5nO1xuICAgIH0gZWxzZSB7XG4gICAgICBkYXlQZXJpb2RFbnVtVmFsdWUgPSBkYXlQZXJpb2RFbnVtLm5pZ2h0O1xuICAgIH1cbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICBjYXNlICdCJzpcbiAgICAgIGNhc2UgJ0JCJzpcbiAgICAgIGNhc2UgJ0JCQic6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7XG4gICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgY2FzZSAnQkJCQkInOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5UGVyaW9kKGRheVBlcmlvZEVudW1WYWx1ZSwge1xuICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICBjYXNlICdCQkJCJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7XG4gICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgfVxuICB9LFxuICAvLyBIb3VyIFsxLTEyXVxuICBoOiBmdW5jdGlvbiBoKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIGlmICh0b2tlbiA9PT0gJ2hvJykge1xuICAgICAgdmFyIGhvdXJzID0gZGF0ZS5nZXRVVENIb3VycygpICUgMTI7XG4gICAgICBpZiAoaG91cnMgPT09IDApIGhvdXJzID0gMTI7XG4gICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihob3Vycywge1xuICAgICAgICB1bml0OiAnaG91cidcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbGlnaHRGb3JtYXR0ZXJzLmgoZGF0ZSwgdG9rZW4pO1xuICB9LFxuICAvLyBIb3VyIFswLTIzXVxuICBIOiBmdW5jdGlvbiBIKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIGlmICh0b2tlbiA9PT0gJ0hvJykge1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoZGF0ZS5nZXRVVENIb3VycygpLCB7XG4gICAgICAgIHVuaXQ6ICdob3VyJ1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBsaWdodEZvcm1hdHRlcnMuSChkYXRlLCB0b2tlbik7XG4gIH0sXG4gIC8vIEhvdXIgWzAtMTFdXG4gIEs6IGZ1bmN0aW9uIEsoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgdmFyIGhvdXJzID0gZGF0ZS5nZXRVVENIb3VycygpICUgMTI7XG4gICAgaWYgKHRva2VuID09PSAnS28nKSB7XG4gICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihob3Vycywge1xuICAgICAgICB1bml0OiAnaG91cidcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGhvdXJzLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuICAvLyBIb3VyIFsxLTI0XVxuICBrOiBmdW5jdGlvbiBrKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIHZhciBob3VycyA9IGRhdGUuZ2V0VVRDSG91cnMoKTtcbiAgICBpZiAoaG91cnMgPT09IDApIGhvdXJzID0gMjQ7XG4gICAgaWYgKHRva2VuID09PSAna28nKSB7XG4gICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihob3Vycywge1xuICAgICAgICB1bml0OiAnaG91cidcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGhvdXJzLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuICAvLyBNaW51dGVcbiAgbTogZnVuY3Rpb24gbShkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICBpZiAodG9rZW4gPT09ICdtbycpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGRhdGUuZ2V0VVRDTWludXRlcygpLCB7XG4gICAgICAgIHVuaXQ6ICdtaW51dGUnXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGxpZ2h0Rm9ybWF0dGVycy5tKGRhdGUsIHRva2VuKTtcbiAgfSxcbiAgLy8gU2Vjb25kXG4gIHM6IGZ1bmN0aW9uIHMoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgaWYgKHRva2VuID09PSAnc28nKSB7XG4gICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihkYXRlLmdldFVUQ1NlY29uZHMoKSwge1xuICAgICAgICB1bml0OiAnc2Vjb25kJ1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBsaWdodEZvcm1hdHRlcnMucyhkYXRlLCB0b2tlbik7XG4gIH0sXG4gIC8vIEZyYWN0aW9uIG9mIHNlY29uZFxuICBTOiBmdW5jdGlvbiBTKGRhdGUsIHRva2VuKSB7XG4gICAgcmV0dXJuIGxpZ2h0Rm9ybWF0dGVycy5TKGRhdGUsIHRva2VuKTtcbiAgfSxcbiAgLy8gVGltZXpvbmUgKElTTy04NjAxLiBJZiBvZmZzZXQgaXMgMCwgb3V0cHV0IGlzIGFsd2F5cyBgJ1onYClcbiAgWDogZnVuY3Rpb24gWChkYXRlLCB0b2tlbiwgX2xvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIG9yaWdpbmFsRGF0ZSA9IG9wdGlvbnMuX29yaWdpbmFsRGF0ZSB8fCBkYXRlO1xuICAgIHZhciB0aW1lem9uZU9mZnNldCA9IG9yaWdpbmFsRGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpO1xuICAgIGlmICh0aW1lem9uZU9mZnNldCA9PT0gMCkge1xuICAgICAgcmV0dXJuICdaJztcbiAgICB9XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gSG91cnMgYW5kIG9wdGlvbmFsIG1pbnV0ZXNcbiAgICAgIGNhc2UgJ1gnOlxuICAgICAgICByZXR1cm4gZm9ybWF0VGltZXpvbmVXaXRoT3B0aW9uYWxNaW51dGVzKHRpbWV6b25lT2Zmc2V0KTtcblxuICAgICAgLy8gSG91cnMsIG1pbnV0ZXMgYW5kIG9wdGlvbmFsIHNlY29uZHMgd2l0aG91dCBgOmAgZGVsaW1pdGVyXG4gICAgICAvLyBOb3RlOiBuZWl0aGVyIElTTy04NjAxIG5vciBKYXZhU2NyaXB0IHN1cHBvcnRzIHNlY29uZHMgaW4gdGltZXpvbmUgb2Zmc2V0c1xuICAgICAgLy8gc28gdGhpcyB0b2tlbiBhbHdheXMgaGFzIHRoZSBzYW1lIG91dHB1dCBhcyBgWFhgXG4gICAgICBjYXNlICdYWFhYJzpcbiAgICAgIGNhc2UgJ1hYJzpcbiAgICAgICAgLy8gSG91cnMgYW5kIG1pbnV0ZXMgd2l0aG91dCBgOmAgZGVsaW1pdGVyXG4gICAgICAgIHJldHVybiBmb3JtYXRUaW1lem9uZSh0aW1lem9uZU9mZnNldCk7XG5cbiAgICAgIC8vIEhvdXJzLCBtaW51dGVzIGFuZCBvcHRpb25hbCBzZWNvbmRzIHdpdGggYDpgIGRlbGltaXRlclxuICAgICAgLy8gTm90ZTogbmVpdGhlciBJU08tODYwMSBub3IgSmF2YVNjcmlwdCBzdXBwb3J0cyBzZWNvbmRzIGluIHRpbWV6b25lIG9mZnNldHNcbiAgICAgIC8vIHNvIHRoaXMgdG9rZW4gYWx3YXlzIGhhcyB0aGUgc2FtZSBvdXRwdXQgYXMgYFhYWGBcbiAgICAgIGNhc2UgJ1hYWFhYJzpcbiAgICAgIGNhc2UgJ1hYWCc6IC8vIEhvdXJzIGFuZCBtaW51dGVzIHdpdGggYDpgIGRlbGltaXRlclxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZvcm1hdFRpbWV6b25lKHRpbWV6b25lT2Zmc2V0LCAnOicpO1xuICAgIH1cbiAgfSxcbiAgLy8gVGltZXpvbmUgKElTTy04NjAxLiBJZiBvZmZzZXQgaXMgMCwgb3V0cHV0IGlzIGAnKzAwOjAwJ2Agb3IgZXF1aXZhbGVudClcbiAgeDogZnVuY3Rpb24geChkYXRlLCB0b2tlbiwgX2xvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIG9yaWdpbmFsRGF0ZSA9IG9wdGlvbnMuX29yaWdpbmFsRGF0ZSB8fCBkYXRlO1xuICAgIHZhciB0aW1lem9uZU9mZnNldCA9IG9yaWdpbmFsRGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpO1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIEhvdXJzIGFuZCBvcHRpb25hbCBtaW51dGVzXG4gICAgICBjYXNlICd4JzpcbiAgICAgICAgcmV0dXJuIGZvcm1hdFRpbWV6b25lV2l0aE9wdGlvbmFsTWludXRlcyh0aW1lem9uZU9mZnNldCk7XG5cbiAgICAgIC8vIEhvdXJzLCBtaW51dGVzIGFuZCBvcHRpb25hbCBzZWNvbmRzIHdpdGhvdXQgYDpgIGRlbGltaXRlclxuICAgICAgLy8gTm90ZTogbmVpdGhlciBJU08tODYwMSBub3IgSmF2YVNjcmlwdCBzdXBwb3J0cyBzZWNvbmRzIGluIHRpbWV6b25lIG9mZnNldHNcbiAgICAgIC8vIHNvIHRoaXMgdG9rZW4gYWx3YXlzIGhhcyB0aGUgc2FtZSBvdXRwdXQgYXMgYHh4YFxuICAgICAgY2FzZSAneHh4eCc6XG4gICAgICBjYXNlICd4eCc6XG4gICAgICAgIC8vIEhvdXJzIGFuZCBtaW51dGVzIHdpdGhvdXQgYDpgIGRlbGltaXRlclxuICAgICAgICByZXR1cm4gZm9ybWF0VGltZXpvbmUodGltZXpvbmVPZmZzZXQpO1xuXG4gICAgICAvLyBIb3VycywgbWludXRlcyBhbmQgb3B0aW9uYWwgc2Vjb25kcyB3aXRoIGA6YCBkZWxpbWl0ZXJcbiAgICAgIC8vIE5vdGU6IG5laXRoZXIgSVNPLTg2MDEgbm9yIEphdmFTY3JpcHQgc3VwcG9ydHMgc2Vjb25kcyBpbiB0aW1lem9uZSBvZmZzZXRzXG4gICAgICAvLyBzbyB0aGlzIHRva2VuIGFsd2F5cyBoYXMgdGhlIHNhbWUgb3V0cHV0IGFzIGB4eHhgXG4gICAgICBjYXNlICd4eHh4eCc6XG4gICAgICBjYXNlICd4eHgnOiAvLyBIb3VycyBhbmQgbWludXRlcyB3aXRoIGA6YCBkZWxpbWl0ZXJcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmb3JtYXRUaW1lem9uZSh0aW1lem9uZU9mZnNldCwgJzonKTtcbiAgICB9XG4gIH0sXG4gIC8vIFRpbWV6b25lIChHTVQpXG4gIE86IGZ1bmN0aW9uIE8oZGF0ZSwgdG9rZW4sIF9sb2NhbGl6ZSwgb3B0aW9ucykge1xuICAgIHZhciBvcmlnaW5hbERhdGUgPSBvcHRpb25zLl9vcmlnaW5hbERhdGUgfHwgZGF0ZTtcbiAgICB2YXIgdGltZXpvbmVPZmZzZXQgPSBvcmlnaW5hbERhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKTtcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyBTaG9ydFxuICAgICAgY2FzZSAnTyc6XG4gICAgICBjYXNlICdPTyc6XG4gICAgICBjYXNlICdPT08nOlxuICAgICAgICByZXR1cm4gJ0dNVCcgKyBmb3JtYXRUaW1lem9uZVNob3J0KHRpbWV6b25lT2Zmc2V0LCAnOicpO1xuICAgICAgLy8gTG9uZ1xuICAgICAgY2FzZSAnT09PTyc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ0dNVCcgKyBmb3JtYXRUaW1lem9uZSh0aW1lem9uZU9mZnNldCwgJzonKTtcbiAgICB9XG4gIH0sXG4gIC8vIFRpbWV6b25lIChzcGVjaWZpYyBub24tbG9jYXRpb24pXG4gIHo6IGZ1bmN0aW9uIHooZGF0ZSwgdG9rZW4sIF9sb2NhbGl6ZSwgb3B0aW9ucykge1xuICAgIHZhciBvcmlnaW5hbERhdGUgPSBvcHRpb25zLl9vcmlnaW5hbERhdGUgfHwgZGF0ZTtcbiAgICB2YXIgdGltZXpvbmVPZmZzZXQgPSBvcmlnaW5hbERhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKTtcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyBTaG9ydFxuICAgICAgY2FzZSAneic6XG4gICAgICBjYXNlICd6eic6XG4gICAgICBjYXNlICd6enonOlxuICAgICAgICByZXR1cm4gJ0dNVCcgKyBmb3JtYXRUaW1lem9uZVNob3J0KHRpbWV6b25lT2Zmc2V0LCAnOicpO1xuICAgICAgLy8gTG9uZ1xuICAgICAgY2FzZSAnenp6eic6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ0dNVCcgKyBmb3JtYXRUaW1lem9uZSh0aW1lem9uZU9mZnNldCwgJzonKTtcbiAgICB9XG4gIH0sXG4gIC8vIFNlY29uZHMgdGltZXN0YW1wXG4gIHQ6IGZ1bmN0aW9uIHQoZGF0ZSwgdG9rZW4sIF9sb2NhbGl6ZSwgb3B0aW9ucykge1xuICAgIHZhciBvcmlnaW5hbERhdGUgPSBvcHRpb25zLl9vcmlnaW5hbERhdGUgfHwgZGF0ZTtcbiAgICB2YXIgdGltZXN0YW1wID0gTWF0aC5mbG9vcihvcmlnaW5hbERhdGUuZ2V0VGltZSgpIC8gMTAwMCk7XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyh0aW1lc3RhbXAsIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIE1pbGxpc2Vjb25kcyB0aW1lc3RhbXBcbiAgVDogZnVuY3Rpb24gVChkYXRlLCB0b2tlbiwgX2xvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIG9yaWdpbmFsRGF0ZSA9IG9wdGlvbnMuX29yaWdpbmFsRGF0ZSB8fCBkYXRlO1xuICAgIHZhciB0aW1lc3RhbXAgPSBvcmlnaW5hbERhdGUuZ2V0VGltZSgpO1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3ModGltZXN0YW1wLCB0b2tlbi5sZW5ndGgpO1xuICB9XG59O1xuZnVuY3Rpb24gZm9ybWF0VGltZXpvbmVTaG9ydChvZmZzZXQsIGRpcnR5RGVsaW1pdGVyKSB7XG4gIHZhciBzaWduID0gb2Zmc2V0ID4gMCA/ICctJyA6ICcrJztcbiAgdmFyIGFic09mZnNldCA9IE1hdGguYWJzKG9mZnNldCk7XG4gIHZhciBob3VycyA9IE1hdGguZmxvb3IoYWJzT2Zmc2V0IC8gNjApO1xuICB2YXIgbWludXRlcyA9IGFic09mZnNldCAlIDYwO1xuICBpZiAobWludXRlcyA9PT0gMCkge1xuICAgIHJldHVybiBzaWduICsgU3RyaW5nKGhvdXJzKTtcbiAgfVxuICB2YXIgZGVsaW1pdGVyID0gZGlydHlEZWxpbWl0ZXIgfHwgJyc7XG4gIHJldHVybiBzaWduICsgU3RyaW5nKGhvdXJzKSArIGRlbGltaXRlciArIGFkZExlYWRpbmdaZXJvcyhtaW51dGVzLCAyKTtcbn1cbmZ1bmN0aW9uIGZvcm1hdFRpbWV6b25lV2l0aE9wdGlvbmFsTWludXRlcyhvZmZzZXQsIGRpcnR5RGVsaW1pdGVyKSB7XG4gIGlmIChvZmZzZXQgJSA2MCA9PT0gMCkge1xuICAgIHZhciBzaWduID0gb2Zmc2V0ID4gMCA/ICctJyA6ICcrJztcbiAgICByZXR1cm4gc2lnbiArIGFkZExlYWRpbmdaZXJvcyhNYXRoLmFicyhvZmZzZXQpIC8gNjAsIDIpO1xuICB9XG4gIHJldHVybiBmb3JtYXRUaW1lem9uZShvZmZzZXQsIGRpcnR5RGVsaW1pdGVyKTtcbn1cbmZ1bmN0aW9uIGZvcm1hdFRpbWV6b25lKG9mZnNldCwgZGlydHlEZWxpbWl0ZXIpIHtcbiAgdmFyIGRlbGltaXRlciA9IGRpcnR5RGVsaW1pdGVyIHx8ICcnO1xuICB2YXIgc2lnbiA9IG9mZnNldCA+IDAgPyAnLScgOiAnKyc7XG4gIHZhciBhYnNPZmZzZXQgPSBNYXRoLmFicyhvZmZzZXQpO1xuICB2YXIgaG91cnMgPSBhZGRMZWFkaW5nWmVyb3MoTWF0aC5mbG9vcihhYnNPZmZzZXQgLyA2MCksIDIpO1xuICB2YXIgbWludXRlcyA9IGFkZExlYWRpbmdaZXJvcyhhYnNPZmZzZXQgJSA2MCwgMik7XG4gIHJldHVybiBzaWduICsgaG91cnMgKyBkZWxpbWl0ZXIgKyBtaW51dGVzO1xufVxuZXhwb3J0IGRlZmF1bHQgZm9ybWF0dGVyczsiLCJpbXBvcnQgYWRkTGVhZGluZ1plcm9zIGZyb20gXCIuLi8uLi9hZGRMZWFkaW5nWmVyb3MvaW5kZXguanNcIjtcbi8qXG4gKiB8ICAgICB8IFVuaXQgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFVuaXQgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8ICBhICB8IEFNLCBQTSAgICAgICAgICAgICAgICAgICAgICAgICB8ICBBKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBkICB8IERheSBvZiBtb250aCAgICAgICAgICAgICAgICAgICB8ICBEICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBoICB8IEhvdXIgWzEtMTJdICAgICAgICAgICAgICAgICAgICB8ICBIICB8IEhvdXIgWzAtMjNdICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBtICB8IE1pbnV0ZSAgICAgICAgICAgICAgICAgICAgICAgICB8ICBNICB8IE1vbnRoICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBzICB8IFNlY29uZCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBTICB8IEZyYWN0aW9uIG9mIHNlY29uZCAgICAgICAgICAgICB8XG4gKiB8ICB5ICB8IFllYXIgKGFicykgICAgICAgICAgICAgICAgICAgICB8ICBZICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKlxuICogTGV0dGVycyBtYXJrZWQgYnkgKiBhcmUgbm90IGltcGxlbWVudGVkIGJ1dCByZXNlcnZlZCBieSBVbmljb2RlIHN0YW5kYXJkLlxuICovXG52YXIgZm9ybWF0dGVycyA9IHtcbiAgLy8gWWVhclxuICB5OiBmdW5jdGlvbiB5KGRhdGUsIHRva2VuKSB7XG4gICAgLy8gRnJvbSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIzNS90cjM1LTMxL3RyMzUtZGF0ZXMuaHRtbCNEYXRlX0Zvcm1hdF90b2tlbnNcbiAgICAvLyB8IFllYXIgICAgIHwgICAgIHkgfCB5eSB8ICAgeXl5IHwgIHl5eXkgfCB5eXl5eSB8XG4gICAgLy8gfC0tLS0tLS0tLS18LS0tLS0tLXwtLS0tfC0tLS0tLS18LS0tLS0tLXwtLS0tLS0tfFxuICAgIC8vIHwgQUQgMSAgICAgfCAgICAgMSB8IDAxIHwgICAwMDEgfCAgMDAwMSB8IDAwMDAxIHxcbiAgICAvLyB8IEFEIDEyICAgIHwgICAgMTIgfCAxMiB8ICAgMDEyIHwgIDAwMTIgfCAwMDAxMiB8XG4gICAgLy8gfCBBRCAxMjMgICB8ICAgMTIzIHwgMjMgfCAgIDEyMyB8ICAwMTIzIHwgMDAxMjMgfFxuICAgIC8vIHwgQUQgMTIzNCAgfCAgMTIzNCB8IDM0IHwgIDEyMzQgfCAgMTIzNCB8IDAxMjM0IHxcbiAgICAvLyB8IEFEIDEyMzQ1IHwgMTIzNDUgfCA0NSB8IDEyMzQ1IHwgMTIzNDUgfCAxMjM0NSB8XG5cbiAgICB2YXIgc2lnbmVkWWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICAvLyBSZXR1cm5zIDEgZm9yIDEgQkMgKHdoaWNoIGlzIHllYXIgMCBpbiBKYXZhU2NyaXB0KVxuICAgIHZhciB5ZWFyID0gc2lnbmVkWWVhciA+IDAgPyBzaWduZWRZZWFyIDogMSAtIHNpZ25lZFllYXI7XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyh0b2tlbiA9PT0gJ3l5JyA/IHllYXIgJSAxMDAgOiB5ZWFyLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuICAvLyBNb250aFxuICBNOiBmdW5jdGlvbiBNKGRhdGUsIHRva2VuKSB7XG4gICAgdmFyIG1vbnRoID0gZGF0ZS5nZXRVVENNb250aCgpO1xuICAgIHJldHVybiB0b2tlbiA9PT0gJ00nID8gU3RyaW5nKG1vbnRoICsgMSkgOiBhZGRMZWFkaW5nWmVyb3MobW9udGggKyAxLCAyKTtcbiAgfSxcbiAgLy8gRGF5IG9mIHRoZSBtb250aFxuICBkOiBmdW5jdGlvbiBkKGRhdGUsIHRva2VuKSB7XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhkYXRlLmdldFVUQ0RhdGUoKSwgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbiAgLy8gQU0gb3IgUE1cbiAgYTogZnVuY3Rpb24gYShkYXRlLCB0b2tlbikge1xuICAgIHZhciBkYXlQZXJpb2RFbnVtVmFsdWUgPSBkYXRlLmdldFVUQ0hvdXJzKCkgLyAxMiA+PSAxID8gJ3BtJyA6ICdhbSc7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgY2FzZSAnYSc6XG4gICAgICBjYXNlICdhYSc6XG4gICAgICAgIHJldHVybiBkYXlQZXJpb2RFbnVtVmFsdWUudG9VcHBlckNhc2UoKTtcbiAgICAgIGNhc2UgJ2FhYSc6XG4gICAgICAgIHJldHVybiBkYXlQZXJpb2RFbnVtVmFsdWU7XG4gICAgICBjYXNlICdhYWFhYSc6XG4gICAgICAgIHJldHVybiBkYXlQZXJpb2RFbnVtVmFsdWVbMF07XG4gICAgICBjYXNlICdhYWFhJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBkYXlQZXJpb2RFbnVtVmFsdWUgPT09ICdhbScgPyAnYS5tLicgOiAncC5tLic7XG4gICAgfVxuICB9LFxuICAvLyBIb3VyIFsxLTEyXVxuICBoOiBmdW5jdGlvbiBoKGRhdGUsIHRva2VuKSB7XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhkYXRlLmdldFVUQ0hvdXJzKCkgJSAxMiB8fCAxMiwgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbiAgLy8gSG91ciBbMC0yM11cbiAgSDogZnVuY3Rpb24gSChkYXRlLCB0b2tlbikge1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoZGF0ZS5nZXRVVENIb3VycygpLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuICAvLyBNaW51dGVcbiAgbTogZnVuY3Rpb24gbShkYXRlLCB0b2tlbikge1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoZGF0ZS5nZXRVVENNaW51dGVzKCksIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIFNlY29uZFxuICBzOiBmdW5jdGlvbiBzKGRhdGUsIHRva2VuKSB7XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhkYXRlLmdldFVUQ1NlY29uZHMoKSwgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbiAgLy8gRnJhY3Rpb24gb2Ygc2Vjb25kXG4gIFM6IGZ1bmN0aW9uIFMoZGF0ZSwgdG9rZW4pIHtcbiAgICB2YXIgbnVtYmVyT2ZEaWdpdHMgPSB0b2tlbi5sZW5ndGg7XG4gICAgdmFyIG1pbGxpc2Vjb25kcyA9IGRhdGUuZ2V0VVRDTWlsbGlzZWNvbmRzKCk7XG4gICAgdmFyIGZyYWN0aW9uYWxTZWNvbmRzID0gTWF0aC5mbG9vcihtaWxsaXNlY29uZHMgKiBNYXRoLnBvdygxMCwgbnVtYmVyT2ZEaWdpdHMgLSAzKSk7XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhmcmFjdGlvbmFsU2Vjb25kcywgdG9rZW4ubGVuZ3RoKTtcbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IGZvcm1hdHRlcnM7IiwidmFyIGRhdGVMb25nRm9ybWF0dGVyID0gZnVuY3Rpb24gZGF0ZUxvbmdGb3JtYXR0ZXIocGF0dGVybiwgZm9ybWF0TG9uZykge1xuICBzd2l0Y2ggKHBhdHRlcm4pIHtcbiAgICBjYXNlICdQJzpcbiAgICAgIHJldHVybiBmb3JtYXRMb25nLmRhdGUoe1xuICAgICAgICB3aWR0aDogJ3Nob3J0J1xuICAgICAgfSk7XG4gICAgY2FzZSAnUFAnOlxuICAgICAgcmV0dXJuIGZvcm1hdExvbmcuZGF0ZSh7XG4gICAgICAgIHdpZHRoOiAnbWVkaXVtJ1xuICAgICAgfSk7XG4gICAgY2FzZSAnUFBQJzpcbiAgICAgIHJldHVybiBmb3JtYXRMb25nLmRhdGUoe1xuICAgICAgICB3aWR0aDogJ2xvbmcnXG4gICAgICB9KTtcbiAgICBjYXNlICdQUFBQJzpcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZvcm1hdExvbmcuZGF0ZSh7XG4gICAgICAgIHdpZHRoOiAnZnVsbCdcbiAgICAgIH0pO1xuICB9XG59O1xudmFyIHRpbWVMb25nRm9ybWF0dGVyID0gZnVuY3Rpb24gdGltZUxvbmdGb3JtYXR0ZXIocGF0dGVybiwgZm9ybWF0TG9uZykge1xuICBzd2l0Y2ggKHBhdHRlcm4pIHtcbiAgICBjYXNlICdwJzpcbiAgICAgIHJldHVybiBmb3JtYXRMb25nLnRpbWUoe1xuICAgICAgICB3aWR0aDogJ3Nob3J0J1xuICAgICAgfSk7XG4gICAgY2FzZSAncHAnOlxuICAgICAgcmV0dXJuIGZvcm1hdExvbmcudGltZSh7XG4gICAgICAgIHdpZHRoOiAnbWVkaXVtJ1xuICAgICAgfSk7XG4gICAgY2FzZSAncHBwJzpcbiAgICAgIHJldHVybiBmb3JtYXRMb25nLnRpbWUoe1xuICAgICAgICB3aWR0aDogJ2xvbmcnXG4gICAgICB9KTtcbiAgICBjYXNlICdwcHBwJzpcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZvcm1hdExvbmcudGltZSh7XG4gICAgICAgIHdpZHRoOiAnZnVsbCdcbiAgICAgIH0pO1xuICB9XG59O1xudmFyIGRhdGVUaW1lTG9uZ0Zvcm1hdHRlciA9IGZ1bmN0aW9uIGRhdGVUaW1lTG9uZ0Zvcm1hdHRlcihwYXR0ZXJuLCBmb3JtYXRMb25nKSB7XG4gIHZhciBtYXRjaFJlc3VsdCA9IHBhdHRlcm4ubWF0Y2goLyhQKykocCspPy8pIHx8IFtdO1xuICB2YXIgZGF0ZVBhdHRlcm4gPSBtYXRjaFJlc3VsdFsxXTtcbiAgdmFyIHRpbWVQYXR0ZXJuID0gbWF0Y2hSZXN1bHRbMl07XG4gIGlmICghdGltZVBhdHRlcm4pIHtcbiAgICByZXR1cm4gZGF0ZUxvbmdGb3JtYXR0ZXIocGF0dGVybiwgZm9ybWF0TG9uZyk7XG4gIH1cbiAgdmFyIGRhdGVUaW1lRm9ybWF0O1xuICBzd2l0Y2ggKGRhdGVQYXR0ZXJuKSB7XG4gICAgY2FzZSAnUCc6XG4gICAgICBkYXRlVGltZUZvcm1hdCA9IGZvcm1hdExvbmcuZGF0ZVRpbWUoe1xuICAgICAgICB3aWR0aDogJ3Nob3J0J1xuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdQUCc6XG4gICAgICBkYXRlVGltZUZvcm1hdCA9IGZvcm1hdExvbmcuZGF0ZVRpbWUoe1xuICAgICAgICB3aWR0aDogJ21lZGl1bSdcbiAgICAgIH0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnUFBQJzpcbiAgICAgIGRhdGVUaW1lRm9ybWF0ID0gZm9ybWF0TG9uZy5kYXRlVGltZSh7XG4gICAgICAgIHdpZHRoOiAnbG9uZydcbiAgICAgIH0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnUFBQUCc6XG4gICAgZGVmYXVsdDpcbiAgICAgIGRhdGVUaW1lRm9ybWF0ID0gZm9ybWF0TG9uZy5kYXRlVGltZSh7XG4gICAgICAgIHdpZHRoOiAnZnVsbCdcbiAgICAgIH0pO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIGRhdGVUaW1lRm9ybWF0LnJlcGxhY2UoJ3t7ZGF0ZX19JywgZGF0ZUxvbmdGb3JtYXR0ZXIoZGF0ZVBhdHRlcm4sIGZvcm1hdExvbmcpKS5yZXBsYWNlKCd7e3RpbWV9fScsIHRpbWVMb25nRm9ybWF0dGVyKHRpbWVQYXR0ZXJuLCBmb3JtYXRMb25nKSk7XG59O1xudmFyIGxvbmdGb3JtYXR0ZXJzID0ge1xuICBwOiB0aW1lTG9uZ0Zvcm1hdHRlcixcbiAgUDogZGF0ZVRpbWVMb25nRm9ybWF0dGVyXG59O1xuZXhwb3J0IGRlZmF1bHQgbG9uZ0Zvcm1hdHRlcnM7IiwiLyoqXG4gKiBHb29nbGUgQ2hyb21lIGFzIG9mIDY3LjAuMzM5Ni44NyBpbnRyb2R1Y2VkIHRpbWV6b25lcyB3aXRoIG9mZnNldCB0aGF0IGluY2x1ZGVzIHNlY29uZHMuXG4gKiBUaGV5IHVzdWFsbHkgYXBwZWFyIGZvciBkYXRlcyB0aGF0IGRlbm90ZSB0aW1lIGJlZm9yZSB0aGUgdGltZXpvbmVzIHdlcmUgaW50cm9kdWNlZFxuICogKGUuZy4gZm9yICdFdXJvcGUvUHJhZ3VlJyB0aW1lem9uZSB0aGUgb2Zmc2V0IGlzIEdNVCswMDo1Nzo0NCBiZWZvcmUgMSBPY3RvYmVyIDE4OTFcbiAqIGFuZCBHTVQrMDE6MDA6MDAgYWZ0ZXIgdGhhdCBkYXRlKVxuICpcbiAqIERhdGUjZ2V0VGltZXpvbmVPZmZzZXQgcmV0dXJucyB0aGUgb2Zmc2V0IGluIG1pbnV0ZXMgYW5kIHdvdWxkIHJldHVybiA1NyBmb3IgdGhlIGV4YW1wbGUgYWJvdmUsXG4gKiB3aGljaCB3b3VsZCBsZWFkIHRvIGluY29ycmVjdCBjYWxjdWxhdGlvbnMuXG4gKlxuICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB0aW1lem9uZSBvZmZzZXQgaW4gbWlsbGlzZWNvbmRzIHRoYXQgdGFrZXMgc2Vjb25kcyBpbiBhY2NvdW50LlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKGRhdGUpIHtcbiAgdmFyIHV0Y0RhdGUgPSBuZXcgRGF0ZShEYXRlLlVUQyhkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCksIGRhdGUuZ2V0SG91cnMoKSwgZGF0ZS5nZXRNaW51dGVzKCksIGRhdGUuZ2V0U2Vjb25kcygpLCBkYXRlLmdldE1pbGxpc2Vjb25kcygpKSk7XG4gIHV0Y0RhdGUuc2V0VVRDRnVsbFllYXIoZGF0ZS5nZXRGdWxsWWVhcigpKTtcbiAgcmV0dXJuIGRhdGUuZ2V0VGltZSgpIC0gdXRjRGF0ZS5nZXRUaW1lKCk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbnZhciBNSUxMSVNFQ09ORFNfSU5fREFZID0gODY0MDAwMDA7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRVVENEYXlPZlllYXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgdGltZXN0YW1wID0gZGF0ZS5nZXRUaW1lKCk7XG4gIGRhdGUuc2V0VVRDTW9udGgoMCwgMSk7XG4gIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBzdGFydE9mWWVhclRpbWVzdGFtcCA9IGRhdGUuZ2V0VGltZSgpO1xuICB2YXIgZGlmZmVyZW5jZSA9IHRpbWVzdGFtcCAtIHN0YXJ0T2ZZZWFyVGltZXN0YW1wO1xuICByZXR1cm4gTWF0aC5mbG9vcihkaWZmZXJlbmNlIC8gTUlMTElTRUNPTkRTX0lOX0RBWSkgKyAxO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uLy4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZVVENJU09XZWVrIGZyb20gXCIuLi9zdGFydE9mVVRDSVNPV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZVVENJU09XZWVrWWVhciBmcm9tIFwiLi4vc3RhcnRPZlVUQ0lTT1dlZWtZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbnZhciBNSUxMSVNFQ09ORFNfSU5fV0VFSyA9IDYwNDgwMDAwMDtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFVUQ0lTT1dlZWsoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGlmZiA9IHN0YXJ0T2ZVVENJU09XZWVrKGRhdGUpLmdldFRpbWUoKSAtIHN0YXJ0T2ZVVENJU09XZWVrWWVhcihkYXRlKS5nZXRUaW1lKCk7XG5cbiAgLy8gUm91bmQgdGhlIG51bWJlciBvZiBkYXlzIHRvIHRoZSBuZWFyZXN0IGludGVnZXJcbiAgLy8gYmVjYXVzZSB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiBhIHdlZWsgaXMgbm90IGNvbnN0YW50XG4gIC8vIChlLmcuIGl0J3MgZGlmZmVyZW50IGluIHRoZSB3ZWVrIG9mIHRoZSBkYXlsaWdodCBzYXZpbmcgdGltZSBjbG9jayBzaGlmdClcbiAgcmV0dXJuIE1hdGgucm91bmQoZGlmZiAvIE1JTExJU0VDT05EU19JTl9XRUVLKSArIDE7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mVVRDSVNPV2VlayBmcm9tIFwiLi4vc3RhcnRPZlVUQ0lTT1dlZWsvaW5kZXguanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFVUQ0lTT1dlZWtZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gIHZhciBmb3VydGhPZkphbnVhcnlPZk5leHRZZWFyID0gbmV3IERhdGUoMCk7XG4gIGZvdXJ0aE9mSmFudWFyeU9mTmV4dFllYXIuc2V0VVRDRnVsbFllYXIoeWVhciArIDEsIDAsIDQpO1xuICBmb3VydGhPZkphbnVhcnlPZk5leHRZZWFyLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgc3RhcnRPZk5leHRZZWFyID0gc3RhcnRPZlVUQ0lTT1dlZWsoZm91cnRoT2ZKYW51YXJ5T2ZOZXh0WWVhcik7XG4gIHZhciBmb3VydGhPZkphbnVhcnlPZlRoaXNZZWFyID0gbmV3IERhdGUoMCk7XG4gIGZvdXJ0aE9mSmFudWFyeU9mVGhpc1llYXIuc2V0VVRDRnVsbFllYXIoeWVhciwgMCwgNCk7XG4gIGZvdXJ0aE9mSmFudWFyeU9mVGhpc1llYXIuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBzdGFydE9mVGhpc1llYXIgPSBzdGFydE9mVVRDSVNPV2Vlayhmb3VydGhPZkphbnVhcnlPZlRoaXNZZWFyKTtcbiAgaWYgKGRhdGUuZ2V0VGltZSgpID49IHN0YXJ0T2ZOZXh0WWVhci5nZXRUaW1lKCkpIHtcbiAgICByZXR1cm4geWVhciArIDE7XG4gIH0gZWxzZSBpZiAoZGF0ZS5nZXRUaW1lKCkgPj0gc3RhcnRPZlRoaXNZZWFyLmdldFRpbWUoKSkge1xuICAgIHJldHVybiB5ZWFyO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB5ZWFyIC0gMTtcbiAgfVxufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uLy4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZVVENXZWVrIGZyb20gXCIuLi9zdGFydE9mVVRDV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZVVENXZWVrWWVhciBmcm9tIFwiLi4vc3RhcnRPZlVUQ1dlZWtZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbnZhciBNSUxMSVNFQ09ORFNfSU5fV0VFSyA9IDYwNDgwMDAwMDtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFVUQ1dlZWsoZGlydHlEYXRlLCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGlmZiA9IHN0YXJ0T2ZVVENXZWVrKGRhdGUsIG9wdGlvbnMpLmdldFRpbWUoKSAtIHN0YXJ0T2ZVVENXZWVrWWVhcihkYXRlLCBvcHRpb25zKS5nZXRUaW1lKCk7XG5cbiAgLy8gUm91bmQgdGhlIG51bWJlciBvZiBkYXlzIHRvIHRoZSBuZWFyZXN0IGludGVnZXJcbiAgLy8gYmVjYXVzZSB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiBhIHdlZWsgaXMgbm90IGNvbnN0YW50XG4gIC8vIChlLmcuIGl0J3MgZGlmZmVyZW50IGluIHRoZSB3ZWVrIG9mIHRoZSBkYXlsaWdodCBzYXZpbmcgdGltZSBjbG9jayBzaGlmdClcbiAgcmV0dXJuIE1hdGgucm91bmQoZGlmZiAvIE1JTExJU0VDT05EU19JTl9XRUVLKSArIDE7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mVVRDV2VlayBmcm9tIFwiLi4vc3RhcnRPZlVUQ1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFVUQ1dlZWtZZWFyKGRpcnR5RGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX3JlZjIsIF9yZWYzLCBfb3B0aW9ucyRmaXJzdFdlZWtDb24sIF9vcHRpb25zJGxvY2FsZSwgX29wdGlvbnMkbG9jYWxlJG9wdGlvLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDI7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgeWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9IHRvSW50ZWdlcigoX3JlZiA9IChfcmVmMiA9IChfcmVmMyA9IChfb3B0aW9ucyRmaXJzdFdlZWtDb24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRmaXJzdFdlZWtDb24gIT09IHZvaWQgMCA/IF9vcHRpb25zJGZpcnN0V2Vla0NvbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPSBfb3B0aW9ucyRsb2NhbGUub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlJG9wdGlvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUkb3B0aW8uZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiBkZWZhdWx0T3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDAgPyBfcmVmMiA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsMi5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiAxKTtcblxuICAvLyBUZXN0IGlmIHdlZWtTdGFydHNPbiBpcyBiZXR3ZWVuIDEgYW5kIDcgX2FuZF8gaXMgbm90IE5hTlxuICBpZiAoIShmaXJzdFdlZWtDb250YWluc0RhdGUgPj0gMSAmJiBmaXJzdFdlZWtDb250YWluc0RhdGUgPD0gNykpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignZmlyc3RXZWVrQ29udGFpbnNEYXRlIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3IGluY2x1c2l2ZWx5Jyk7XG4gIH1cbiAgdmFyIGZpcnN0V2Vla09mTmV4dFllYXIgPSBuZXcgRGF0ZSgwKTtcbiAgZmlyc3RXZWVrT2ZOZXh0WWVhci5zZXRVVENGdWxsWWVhcih5ZWFyICsgMSwgMCwgZmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgZmlyc3RXZWVrT2ZOZXh0WWVhci5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgdmFyIHN0YXJ0T2ZOZXh0WWVhciA9IHN0YXJ0T2ZVVENXZWVrKGZpcnN0V2Vla09mTmV4dFllYXIsIG9wdGlvbnMpO1xuICB2YXIgZmlyc3RXZWVrT2ZUaGlzWWVhciA9IG5ldyBEYXRlKDApO1xuICBmaXJzdFdlZWtPZlRoaXNZZWFyLnNldFVUQ0Z1bGxZZWFyKHllYXIsIDAsIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSk7XG4gIGZpcnN0V2Vla09mVGhpc1llYXIuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBzdGFydE9mVGhpc1llYXIgPSBzdGFydE9mVVRDV2VlayhmaXJzdFdlZWtPZlRoaXNZZWFyLCBvcHRpb25zKTtcbiAgaWYgKGRhdGUuZ2V0VGltZSgpID49IHN0YXJ0T2ZOZXh0WWVhci5nZXRUaW1lKCkpIHtcbiAgICByZXR1cm4geWVhciArIDE7XG4gIH0gZWxzZSBpZiAoZGF0ZS5nZXRUaW1lKCkgPj0gc3RhcnRPZlRoaXNZZWFyLmdldFRpbWUoKSkge1xuICAgIHJldHVybiB5ZWFyO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB5ZWFyIC0gMTtcbiAgfVxufSIsInZhciBwcm90ZWN0ZWREYXlPZlllYXJUb2tlbnMgPSBbJ0QnLCAnREQnXTtcbnZhciBwcm90ZWN0ZWRXZWVrWWVhclRva2VucyA9IFsnWVknLCAnWVlZWSddO1xuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvdGVjdGVkRGF5T2ZZZWFyVG9rZW4odG9rZW4pIHtcbiAgcmV0dXJuIHByb3RlY3RlZERheU9mWWVhclRva2Vucy5pbmRleE9mKHRva2VuKSAhPT0gLTE7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNQcm90ZWN0ZWRXZWVrWWVhclRva2VuKHRva2VuKSB7XG4gIHJldHVybiBwcm90ZWN0ZWRXZWVrWWVhclRva2Vucy5pbmRleE9mKHRva2VuKSAhPT0gLTE7XG59XG5leHBvcnQgZnVuY3Rpb24gdGhyb3dQcm90ZWN0ZWRFcnJvcih0b2tlbiwgZm9ybWF0LCBpbnB1dCkge1xuICBpZiAodG9rZW4gPT09ICdZWVlZJykge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiVXNlIGB5eXl5YCBpbnN0ZWFkIG9mIGBZWVlZYCAoaW4gYFwiLmNvbmNhdChmb3JtYXQsIFwiYCkgZm9yIGZvcm1hdHRpbmcgeWVhcnMgdG8gdGhlIGlucHV0IGBcIikuY29uY2F0KGlucHV0LCBcImA7IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFwiKSk7XG4gIH0gZWxzZSBpZiAodG9rZW4gPT09ICdZWScpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIlVzZSBgeXlgIGluc3RlYWQgb2YgYFlZYCAoaW4gYFwiLmNvbmNhdChmb3JtYXQsIFwiYCkgZm9yIGZvcm1hdHRpbmcgeWVhcnMgdG8gdGhlIGlucHV0IGBcIikuY29uY2F0KGlucHV0LCBcImA7IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFwiKSk7XG4gIH0gZWxzZSBpZiAodG9rZW4gPT09ICdEJykge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiVXNlIGBkYCBpbnN0ZWFkIG9mIGBEYCAoaW4gYFwiLmNvbmNhdChmb3JtYXQsIFwiYCkgZm9yIGZvcm1hdHRpbmcgZGF5cyBvZiB0aGUgbW9udGggdG8gdGhlIGlucHV0IGBcIikuY29uY2F0KGlucHV0LCBcImA7IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFwiKSk7XG4gIH0gZWxzZSBpZiAodG9rZW4gPT09ICdERCcpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIlVzZSBgZGRgIGluc3RlYWQgb2YgYEREYCAoaW4gYFwiLmNvbmNhdChmb3JtYXQsIFwiYCkgZm9yIGZvcm1hdHRpbmcgZGF5cyBvZiB0aGUgbW9udGggdG8gdGhlIGlucHV0IGBcIikuY29uY2F0KGlucHV0LCBcImA7IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFwiKSk7XG4gIH1cbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZXF1aXJlZEFyZ3MocmVxdWlyZWQsIGFyZ3MpIHtcbiAgaWYgKGFyZ3MubGVuZ3RoIDwgcmVxdWlyZWQpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHJlcXVpcmVkICsgJyBhcmd1bWVudCcgKyAocmVxdWlyZWQgPiAxID8gJ3MnIDogJycpICsgJyByZXF1aXJlZCwgYnV0IG9ubHkgJyArIGFyZ3MubGVuZ3RoICsgJyBwcmVzZW50Jyk7XG4gIH1cbn0iLCJ2YXIgcm91bmRpbmdNYXAgPSB7XG4gIGNlaWw6IE1hdGguY2VpbCxcbiAgcm91bmQ6IE1hdGgucm91bmQsXG4gIGZsb29yOiBNYXRoLmZsb29yLFxuICB0cnVuYzogZnVuY3Rpb24gdHJ1bmModmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPCAwID8gTWF0aC5jZWlsKHZhbHVlKSA6IE1hdGguZmxvb3IodmFsdWUpO1xuICB9IC8vIE1hdGgudHJ1bmMgaXMgbm90IHN1cHBvcnRlZCBieSBJRVxufTtcblxudmFyIGRlZmF1bHRSb3VuZGluZ01ldGhvZCA9ICd0cnVuYyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0Um91bmRpbmdNZXRob2QobWV0aG9kKSB7XG4gIHJldHVybiBtZXRob2QgPyByb3VuZGluZ01hcFttZXRob2RdIDogcm91bmRpbmdNYXBbZGVmYXVsdFJvdW5kaW5nTWV0aG9kXTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi8uLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuLi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0VVRDRGF5KGRpcnR5RGF0ZSwgZGlydHlEYXksIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9yZWYyLCBfcmVmMywgX29wdGlvbnMkd2Vla1N0YXJ0c09uLCBfb3B0aW9ucyRsb2NhbGUsIF9vcHRpb25zJGxvY2FsZSRvcHRpbywgX2RlZmF1bHRPcHRpb25zJGxvY2FsLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyO1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIHdlZWtTdGFydHNPbiA9IHRvSW50ZWdlcigoX3JlZiA9IChfcmVmMiA9IChfcmVmMyA9IChfb3B0aW9ucyR3ZWVrU3RhcnRzT24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gIT09IHZvaWQgMCA/IF9vcHRpb25zJHdlZWtTdGFydHNPbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPSBfb3B0aW9ucyRsb2NhbGUub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlJG9wdGlvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUkb3B0aW8ud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiBkZWZhdWx0T3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDAgPyBfcmVmMiA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsMi53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiAwKTtcblxuICAvLyBUZXN0IGlmIHdlZWtTdGFydHNPbiBpcyBiZXR3ZWVuIDAgYW5kIDYgX2FuZF8gaXMgbm90IE5hTlxuICBpZiAoISh3ZWVrU3RhcnRzT24gPj0gMCAmJiB3ZWVrU3RhcnRzT24gPD0gNikpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignd2Vla1N0YXJ0c09uIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2IGluY2x1c2l2ZWx5Jyk7XG4gIH1cbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRheSA9IHRvSW50ZWdlcihkaXJ0eURheSk7XG4gIHZhciBjdXJyZW50RGF5ID0gZGF0ZS5nZXRVVENEYXkoKTtcbiAgdmFyIHJlbWFpbmRlciA9IGRheSAlIDc7XG4gIHZhciBkYXlJbmRleCA9IChyZW1haW5kZXIgKyA3KSAlIDc7XG4gIHZhciBkaWZmID0gKGRheUluZGV4IDwgd2Vla1N0YXJ0c09uID8gNyA6IDApICsgZGF5IC0gY3VycmVudERheTtcbiAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpICsgZGlmZik7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uLy4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi90b0ludGVnZXIvaW5kZXguanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldFVUQ0lTT0RheShkaXJ0eURhdGUsIGRpcnR5RGF5KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF5ID0gdG9JbnRlZ2VyKGRpcnR5RGF5KTtcbiAgaWYgKGRheSAlIDcgPT09IDApIHtcbiAgICBkYXkgPSBkYXkgLSA3O1xuICB9XG4gIHZhciB3ZWVrU3RhcnRzT24gPSAxO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgY3VycmVudERheSA9IGRhdGUuZ2V0VVRDRGF5KCk7XG4gIHZhciByZW1haW5kZXIgPSBkYXkgJSA3O1xuICB2YXIgZGF5SW5kZXggPSAocmVtYWluZGVyICsgNykgJSA3O1xuICB2YXIgZGlmZiA9IChkYXlJbmRleCA8IHdlZWtTdGFydHNPbiA/IDcgOiAwKSArIGRheSAtIGN1cnJlbnREYXk7XG4gIGRhdGUuc2V0VVRDRGF0ZShkYXRlLmdldFVUQ0RhdGUoKSArIGRpZmYpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uLy4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGdldFVUQ0lTT1dlZWsgZnJvbSBcIi4uL2dldFVUQ0lTT1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0VVRDSVNPV2VlayhkaXJ0eURhdGUsIGRpcnR5SVNPV2Vlaykge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGlzb1dlZWsgPSB0b0ludGVnZXIoZGlydHlJU09XZWVrKTtcbiAgdmFyIGRpZmYgPSBnZXRVVENJU09XZWVrKGRhdGUpIC0gaXNvV2VlaztcbiAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpIC0gZGlmZiAqIDcpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uLy4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGdldFVUQ1dlZWsgZnJvbSBcIi4uL2dldFVUQ1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0VVRDV2VlayhkaXJ0eURhdGUsIGRpcnR5V2Vlaywgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHdlZWsgPSB0b0ludGVnZXIoZGlydHlXZWVrKTtcbiAgdmFyIGRpZmYgPSBnZXRVVENXZWVrKGRhdGUsIG9wdGlvbnMpIC0gd2VlaztcbiAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpIC0gZGlmZiAqIDcpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi8uLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZlVUQ0lTT1dlZWsoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgd2Vla1N0YXJ0c09uID0gMTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRheSA9IGRhdGUuZ2V0VVRDRGF5KCk7XG4gIHZhciBkaWZmID0gKGRheSA8IHdlZWtTdGFydHNPbiA/IDcgOiAwKSArIGRheSAtIHdlZWtTdGFydHNPbjtcbiAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpIC0gZGlmZik7XG4gIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCBnZXRVVENJU09XZWVrWWVhciBmcm9tIFwiLi4vZ2V0VVRDSVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mVVRDSVNPV2VlayBmcm9tIFwiLi4vc3RhcnRPZlVUQ0lTT1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZlVUQ0lTT1dlZWtZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIHllYXIgPSBnZXRVVENJU09XZWVrWWVhcihkaXJ0eURhdGUpO1xuICB2YXIgZm91cnRoT2ZKYW51YXJ5ID0gbmV3IERhdGUoMCk7XG4gIGZvdXJ0aE9mSmFudWFyeS5zZXRVVENGdWxsWWVhcih5ZWFyLCAwLCA0KTtcbiAgZm91cnRoT2ZKYW51YXJ5LnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgZGF0ZSA9IHN0YXJ0T2ZVVENJU09XZWVrKGZvdXJ0aE9mSmFudWFyeSk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uLy4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mVVRDV2VlayhkaXJ0eURhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9yZWYyLCBfcmVmMywgX29wdGlvbnMkd2Vla1N0YXJ0c09uLCBfb3B0aW9ucyRsb2NhbGUsIF9vcHRpb25zJGxvY2FsZSRvcHRpbywgX2RlZmF1bHRPcHRpb25zJGxvY2FsLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyO1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIHdlZWtTdGFydHNPbiA9IHRvSW50ZWdlcigoX3JlZiA9IChfcmVmMiA9IChfcmVmMyA9IChfb3B0aW9ucyR3ZWVrU3RhcnRzT24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gIT09IHZvaWQgMCA/IF9vcHRpb25zJHdlZWtTdGFydHNPbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPSBfb3B0aW9ucyRsb2NhbGUub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlJG9wdGlvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUkb3B0aW8ud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiBkZWZhdWx0T3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDAgPyBfcmVmMiA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsMi53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiAwKTtcblxuICAvLyBUZXN0IGlmIHdlZWtTdGFydHNPbiBpcyBiZXR3ZWVuIDAgYW5kIDYgX2FuZF8gaXMgbm90IE5hTlxuICBpZiAoISh3ZWVrU3RhcnRzT24gPj0gMCAmJiB3ZWVrU3RhcnRzT24gPD0gNikpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignd2Vla1N0YXJ0c09uIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2IGluY2x1c2l2ZWx5Jyk7XG4gIH1cbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRheSA9IGRhdGUuZ2V0VVRDRGF5KCk7XG4gIHZhciBkaWZmID0gKGRheSA8IHdlZWtTdGFydHNPbiA/IDcgOiAwKSArIGRheSAtIHdlZWtTdGFydHNPbjtcbiAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpIC0gZGlmZik7XG4gIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCBnZXRVVENXZWVrWWVhciBmcm9tIFwiLi4vZ2V0VVRDV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZVVENXZWVrIGZyb20gXCIuLi9zdGFydE9mVVRDV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuLi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZlVUQ1dlZWtZZWFyKGRpcnR5RGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX3JlZjIsIF9yZWYzLCBfb3B0aW9ucyRmaXJzdFdlZWtDb24sIF9vcHRpb25zJGxvY2FsZSwgX29wdGlvbnMkbG9jYWxlJG9wdGlvLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDI7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICB2YXIgZmlyc3RXZWVrQ29udGFpbnNEYXRlID0gdG9JbnRlZ2VyKChfcmVmID0gKF9yZWYyID0gKF9yZWYzID0gKF9vcHRpb25zJGZpcnN0V2Vla0NvbiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9vcHRpb25zJGZpcnN0V2Vla0NvbiAhPT0gdm9pZCAwID8gX29wdGlvbnMkZmlyc3RXZWVrQ29uIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9IF9vcHRpb25zJGxvY2FsZS5vcHRpb25zKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb25zJGxvY2FsZSRvcHRpby5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYzICE9PSB2b2lkIDAgPyBfcmVmMyA6IGRlZmF1bHRPcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZjIgIT09IHZvaWQgMCA/IF9yZWYyIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IDEpO1xuICB2YXIgeWVhciA9IGdldFVUQ1dlZWtZZWFyKGRpcnR5RGF0ZSwgb3B0aW9ucyk7XG4gIHZhciBmaXJzdFdlZWsgPSBuZXcgRGF0ZSgwKTtcbiAgZmlyc3RXZWVrLnNldFVUQ0Z1bGxZZWFyKHllYXIsIDAsIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSk7XG4gIGZpcnN0V2Vlay5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgdmFyIGRhdGUgPSBzdGFydE9mVVRDV2VlayhmaXJzdFdlZWssIG9wdGlvbnMpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0b0ludGVnZXIoZGlydHlOdW1iZXIpIHtcbiAgaWYgKGRpcnR5TnVtYmVyID09PSBudWxsIHx8IGRpcnR5TnVtYmVyID09PSB0cnVlIHx8IGRpcnR5TnVtYmVyID09PSBmYWxzZSkge1xuICAgIHJldHVybiBOYU47XG4gIH1cbiAgdmFyIG51bWJlciA9IE51bWJlcihkaXJ0eU51bWJlcik7XG4gIGlmIChpc05hTihudW1iZXIpKSB7XG4gICAgcmV0dXJuIG51bWJlcjtcbiAgfVxuICByZXR1cm4gbnVtYmVyIDwgMCA/IE1hdGguY2VpbChudW1iZXIpIDogTWF0aC5mbG9vcihudW1iZXIpO1xufSIsImltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2ZcIjtcbmltcG9ydCBhZGREYXlzIGZyb20gXCIuLi9hZGREYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkTW9udGhzIGZyb20gXCIuLi9hZGRNb250aHMvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGFkZFxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMgYW5kIHNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMgYW5kIHNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7RHVyYXRpb259IGR1cmF0aW9uIC0gdGhlIG9iamVjdCB3aXRoIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3VycywgbWludXRlcyBhbmQgc2Vjb25kcyB0byBiZSBhZGRlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICpcbiAqIHwgS2V5ICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgeWVhcnMgICAgICAgICAgfCBBbW91bnQgb2YgeWVhcnMgdG8gYmUgYWRkZWQgICAgICAgIHxcbiAqIHwgbW9udGhzICAgICAgICAgfCBBbW91bnQgb2YgbW9udGhzIHRvIGJlIGFkZGVkICAgICAgIHxcbiAqIHwgd2Vla3MgICAgICAgICAgfCBBbW91bnQgb2Ygd2Vla3MgdG8gYmUgYWRkZWQgICAgICAgIHxcbiAqIHwgZGF5cyAgICAgICAgICAgfCBBbW91bnQgb2YgZGF5cyB0byBiZSBhZGRlZCAgICAgICAgIHxcbiAqIHwgaG91cnMgICAgICAgICAgfCBBbW91bnQgb2YgaG91cnMgdG8gYmUgYWRkZWQgICAgICAgIHxcbiAqIHwgbWludXRlcyAgICAgICAgfCBBbW91bnQgb2YgbWludXRlcyB0byBiZSBhZGRlZCAgICAgIHxcbiAqIHwgc2Vjb25kcyAgICAgICAgfCBBbW91bnQgb2Ygc2Vjb25kcyB0byBiZSBhZGRlZCAgICAgIHxcbiAqXG4gKiBBbGwgdmFsdWVzIGRlZmF1bHQgdG8gMFxuICpcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgc2Vjb25kcyBhZGRlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgdGhlIGZvbGxvd2luZyBkdXJhdGlvbiB0byAxIFNlcHRlbWJlciAyMDE0LCAxMDoxOTo1MFxuICogY29uc3QgcmVzdWx0ID0gYWRkKG5ldyBEYXRlKDIwMTQsIDgsIDEsIDEwLCAxOSwgNTApLCB7XG4gKiAgIHllYXJzOiAyLFxuICogICBtb250aHM6IDksXG4gKiAgIHdlZWtzOiAxLFxuICogICBkYXlzOiA3LFxuICogICBob3VyczogNSxcbiAqICAgbWludXRlczogOSxcbiAqICAgc2Vjb25kczogMzAsXG4gKiB9KVxuICogLy89PiBUaHUgSnVuIDE1IDIwMTcgMTU6Mjk6MjBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWRkKGRpcnR5RGF0ZSwgZHVyYXRpb24pIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIGlmICghZHVyYXRpb24gfHwgX3R5cGVvZihkdXJhdGlvbikgIT09ICdvYmplY3QnKSByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgdmFyIHllYXJzID0gZHVyYXRpb24ueWVhcnMgPyB0b0ludGVnZXIoZHVyYXRpb24ueWVhcnMpIDogMDtcbiAgdmFyIG1vbnRocyA9IGR1cmF0aW9uLm1vbnRocyA/IHRvSW50ZWdlcihkdXJhdGlvbi5tb250aHMpIDogMDtcbiAgdmFyIHdlZWtzID0gZHVyYXRpb24ud2Vla3MgPyB0b0ludGVnZXIoZHVyYXRpb24ud2Vla3MpIDogMDtcbiAgdmFyIGRheXMgPSBkdXJhdGlvbi5kYXlzID8gdG9JbnRlZ2VyKGR1cmF0aW9uLmRheXMpIDogMDtcbiAgdmFyIGhvdXJzID0gZHVyYXRpb24uaG91cnMgPyB0b0ludGVnZXIoZHVyYXRpb24uaG91cnMpIDogMDtcbiAgdmFyIG1pbnV0ZXMgPSBkdXJhdGlvbi5taW51dGVzID8gdG9JbnRlZ2VyKGR1cmF0aW9uLm1pbnV0ZXMpIDogMDtcbiAgdmFyIHNlY29uZHMgPSBkdXJhdGlvbi5zZWNvbmRzID8gdG9JbnRlZ2VyKGR1cmF0aW9uLnNlY29uZHMpIDogMDtcblxuICAvLyBBZGQgeWVhcnMgYW5kIG1vbnRoc1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGF0ZVdpdGhNb250aHMgPSBtb250aHMgfHwgeWVhcnMgPyBhZGRNb250aHMoZGF0ZSwgbW9udGhzICsgeWVhcnMgKiAxMikgOiBkYXRlO1xuXG4gIC8vIEFkZCB3ZWVrcyBhbmQgZGF5c1xuICB2YXIgZGF0ZVdpdGhEYXlzID0gZGF5cyB8fCB3ZWVrcyA/IGFkZERheXMoZGF0ZVdpdGhNb250aHMsIGRheXMgKyB3ZWVrcyAqIDcpIDogZGF0ZVdpdGhNb250aHM7XG5cbiAgLy8gQWRkIGRheXMsIGhvdXJzLCBtaW51dGVzIGFuZCBzZWNvbmRzXG4gIHZhciBtaW51dGVzVG9BZGQgPSBtaW51dGVzICsgaG91cnMgKiA2MDtcbiAgdmFyIHNlY29uZHNUb0FkZCA9IHNlY29uZHMgKyBtaW51dGVzVG9BZGQgKiA2MDtcbiAgdmFyIG1zVG9BZGQgPSBzZWNvbmRzVG9BZGQgKiAxMDAwO1xuICB2YXIgZmluYWxEYXRlID0gbmV3IERhdGUoZGF0ZVdpdGhEYXlzLmdldFRpbWUoKSArIG1zVG9BZGQpO1xuICByZXR1cm4gZmluYWxEYXRlO1xufSIsImltcG9ydCBpc1dlZWtlbmQgZnJvbSBcIi4uL2lzV2Vla2VuZC9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCBpc1N1bmRheSBmcm9tIFwiLi4vaXNTdW5kYXkvaW5kZXguanNcIjtcbmltcG9ydCBpc1NhdHVyZGF5IGZyb20gXCIuLi9pc1NhdHVyZGF5L2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGFkZEJ1c2luZXNzRGF5c1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYnVzaW5lc3MgZGF5cyAobW9uIC0gZnJpKSB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBidXNpbmVzcyBkYXlzIChtb24gLSBmcmkpIHRvIHRoZSBnaXZlbiBkYXRlLCBpZ25vcmluZyB3ZWVrZW5kcy5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2YgYnVzaW5lc3MgZGF5cyB0byBiZSBhZGRlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBidXNpbmVzcyBkYXlzIGFkZGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCAxMCBidXNpbmVzcyBkYXlzIHRvIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRCdXNpbmVzc0RheXMobmV3IERhdGUoMjAxNCwgOCwgMSksIDEwKVxuICogLy89PiBNb24gU2VwIDE1IDIwMTQgMDA6MDA6MDAgKHNraXBwZWQgd2Vla2VuZCBkYXlzKVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRCdXNpbmVzc0RheXMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHN0YXJ0ZWRPbldlZWtlbmQgPSBpc1dlZWtlbmQoZGF0ZSk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICBpZiAoaXNOYU4oYW1vdW50KSkgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIHZhciBob3VycyA9IGRhdGUuZ2V0SG91cnMoKTtcbiAgdmFyIHNpZ24gPSBhbW91bnQgPCAwID8gLTEgOiAxO1xuICB2YXIgZnVsbFdlZWtzID0gdG9JbnRlZ2VyKGFtb3VudCAvIDUpO1xuICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyBmdWxsV2Vla3MgKiA3KTtcblxuICAvLyBHZXQgcmVtYWluaW5nIGRheXMgbm90IHBhcnQgb2YgYSBmdWxsIHdlZWtcbiAgdmFyIHJlc3REYXlzID0gTWF0aC5hYnMoYW1vdW50ICUgNSk7XG5cbiAgLy8gTG9vcHMgb3ZlciByZW1haW5pbmcgZGF5c1xuICB3aGlsZSAocmVzdERheXMgPiAwKSB7XG4gICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgc2lnbik7XG4gICAgaWYgKCFpc1dlZWtlbmQoZGF0ZSkpIHJlc3REYXlzIC09IDE7XG4gIH1cblxuICAvLyBJZiB0aGUgZGF0ZSBpcyBhIHdlZWtlbmQgZGF5IGFuZCB3ZSByZWR1Y2UgYSBkaXZpZGFibGUgb2ZcbiAgLy8gNSBmcm9tIGl0LCB3ZSBsYW5kIG9uIGEgd2Vla2VuZCBkYXRlLlxuICAvLyBUbyBjb3VudGVyIHRoaXMsIHdlIGFkZCBkYXlzIGFjY29yZGluZ2x5IHRvIGxhbmQgb24gdGhlIG5leHQgYnVzaW5lc3MgZGF5XG4gIGlmIChzdGFydGVkT25XZWVrZW5kICYmIGlzV2Vla2VuZChkYXRlKSAmJiBhbW91bnQgIT09IDApIHtcbiAgICAvLyBJZiB3ZSdyZSByZWR1Y2luZyBkYXlzLCB3ZSB3YW50IHRvIGFkZCBkYXlzIHVudGlsIHdlIGxhbmQgb24gYSB3ZWVrZGF5XG4gICAgLy8gSWYgd2UncmUgYWRkaW5nIGRheXMgd2Ugd2FudCB0byByZWR1Y2UgZGF5cyB1bnRpbCB3ZSBsYW5kIG9uIGEgd2Vla2RheVxuICAgIGlmIChpc1NhdHVyZGF5KGRhdGUpKSBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyAoc2lnbiA8IDAgPyAyIDogLTEpKTtcbiAgICBpZiAoaXNTdW5kYXkoZGF0ZSkpIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIChzaWduIDwgMCA/IDEgOiAtMikpO1xuICB9XG5cbiAgLy8gUmVzdG9yZSBob3VycyB0byBhdm9pZCBEU1QgbGFnXG4gIGRhdGUuc2V0SG91cnMoaG91cnMpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBhZGREYXlzXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGRheXMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIGRheXMgdG8gYmUgYWRkZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSAtIHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBkYXlzIGFkZGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IC0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDEwIGRheXMgdG8gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZERheXMobmV3IERhdGUoMjAxNCwgOCwgMSksIDEwKVxuICogLy89PiBUaHUgU2VwIDExIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWRkRGF5cyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgaWYgKGlzTmFOKGFtb3VudCkpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxuICBpZiAoIWFtb3VudCkge1xuICAgIC8vIElmIDAgZGF5cywgbm8tb3AgdG8gYXZvaWQgY2hhbmdpbmcgdGltZXMgaW4gdGhlIGhvdXIgYmVmb3JlIGVuZCBvZiBEU1RcbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxuICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyBhbW91bnQpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IGFkZE1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vYWRkTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xudmFyIE1JTExJU0VDT05EU19JTl9IT1VSID0gMzYwMDAwMDtcblxuLyoqXG4gKiBAbmFtZSBhZGRIb3Vyc1xuICogQGNhdGVnb3J5IEhvdXIgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGhvdXJzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGhvdXJzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiBob3VycyB0byBiZSBhZGRlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBob3VycyBhZGRlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgMiBob3VycyB0byAxMCBKdWx5IDIwMTQgMjM6MDA6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRIb3VycyhuZXcgRGF0ZSgyMDE0LCA2LCAxMCwgMjMsIDApLCAyKVxuICogLy89PiBGcmkgSnVsIDExIDIwMTQgMDE6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWRkSG91cnMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIHJldHVybiBhZGRNaWxsaXNlY29uZHMoZGlydHlEYXRlLCBhbW91bnQgKiBNSUxMSVNFQ09ORFNfSU5fSE9VUik7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCBnZXRJU09XZWVrWWVhciBmcm9tIFwiLi4vZ2V0SVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCBzZXRJU09XZWVrWWVhciBmcm9tIFwiLi4vc2V0SVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGFkZElTT1dlZWtZZWFyc1xuICogQGNhdGVnb3J5IElTTyBXZWVrLU51bWJlcmluZyBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2YgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIHRvIGJlIGFkZGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFycyBhZGRlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgNSBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgdG8gMiBKdWx5IDIwMTA6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRJU09XZWVrWWVhcnMobmV3IERhdGUoMjAxMCwgNiwgMiksIDUpXG4gKiAvLz0+IEZyaSBKdW4gMjYgMjAxNSAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRJU09XZWVrWWVhcnMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIHJldHVybiBzZXRJU09XZWVrWWVhcihkaXJ0eURhdGUsIGdldElTT1dlZWtZZWFyKGRpcnR5RGF0ZSkgKyBhbW91bnQpO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGFkZE1pbGxpc2Vjb25kc1xuICogQGNhdGVnb3J5IE1pbGxpc2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiBtaWxsaXNlY29uZHMgdG8gYmUgYWRkZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgbWlsbGlzZWNvbmRzIGFkZGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCA3NTAgbWlsbGlzZWNvbmRzIHRvIDEwIEp1bHkgMjAxNCAxMjo0NTozMC4wMDA6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRNaWxsaXNlY29uZHMobmV3IERhdGUoMjAxNCwgNiwgMTAsIDEyLCA0NSwgMzAsIDApLCA3NTApXG4gKiAvLz0+IFRodSBKdWwgMTAgMjAxNCAxMjo0NTozMC43NTBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWRkTWlsbGlzZWNvbmRzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciB0aW1lc3RhbXAgPSB0b0RhdGUoZGlydHlEYXRlKS5nZXRUaW1lKCk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gbmV3IERhdGUodGltZXN0YW1wICsgYW1vdW50KTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IGFkZE1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vYWRkTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xudmFyIE1JTExJU0VDT05EU19JTl9NSU5VVEUgPSA2MDAwMDtcblxuLyoqXG4gKiBAbmFtZSBhZGRNaW51dGVzXG4gKiBAY2F0ZWdvcnkgTWludXRlIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaW51dGVzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbnV0ZXMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIG1pbnV0ZXMgdG8gYmUgYWRkZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgbWludXRlcyBhZGRlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgMzAgbWludXRlcyB0byAxMCBKdWx5IDIwMTQgMTI6MDA6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRNaW51dGVzKG5ldyBEYXRlKDIwMTQsIDYsIDEwLCAxMiwgMCksIDMwKVxuICogLy89PiBUaHUgSnVsIDEwIDIwMTQgMTI6MzA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWRkTWludXRlcyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIGFkZE1pbGxpc2Vjb25kcyhkaXJ0eURhdGUsIGFtb3VudCAqIE1JTExJU0VDT05EU19JTl9NSU5VVEUpO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGFkZE1vbnRoc1xuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtb250aHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbW9udGhzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiBtb250aHMgdG8gYmUgYWRkZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgbW9udGhzIGFkZGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCA1IG1vbnRocyB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gYWRkTW9udGhzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCA1KVxuICogLy89PiBTdW4gRmViIDAxIDIwMTUgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWRkTW9udGhzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICBpZiAoaXNOYU4oYW1vdW50KSkge1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG4gIGlmICghYW1vdW50KSB7XG4gICAgLy8gSWYgMCBtb250aHMsIG5vLW9wIHRvIGF2b2lkIGNoYW5naW5nIHRpbWVzIGluIHRoZSBob3VyIGJlZm9yZSBlbmQgb2YgRFNUXG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cbiAgdmFyIGRheU9mTW9udGggPSBkYXRlLmdldERhdGUoKTtcblxuICAvLyBUaGUgSlMgRGF0ZSBvYmplY3Qgc3VwcG9ydHMgZGF0ZSBtYXRoIGJ5IGFjY2VwdGluZyBvdXQtb2YtYm91bmRzIHZhbHVlcyBmb3JcbiAgLy8gbW9udGgsIGRheSwgZXRjLiBGb3IgZXhhbXBsZSwgbmV3IERhdGUoMjAyMCwgMCwgMCkgcmV0dXJucyAzMSBEZWMgMjAxOSBhbmRcbiAgLy8gbmV3IERhdGUoMjAyMCwgMTMsIDEpIHJldHVybnMgMSBGZWIgMjAyMS4gIFRoaXMgaXMgKmFsbW9zdCogdGhlIGJlaGF2aW9yIHdlXG4gIC8vIHdhbnQgZXhjZXB0IHRoYXQgZGF0ZXMgd2lsbCB3cmFwIGFyb3VuZCB0aGUgZW5kIG9mIGEgbW9udGgsIG1lYW5pbmcgdGhhdFxuICAvLyBuZXcgRGF0ZSgyMDIwLCAxMywgMzEpIHdpbGwgcmV0dXJuIDMgTWFyIDIwMjEgbm90IDI4IEZlYiAyMDIxIGFzIGRlc2lyZWQuIFNvXG4gIC8vIHdlJ2xsIGRlZmF1bHQgdG8gdGhlIGVuZCBvZiB0aGUgZGVzaXJlZCBtb250aCBieSBhZGRpbmcgMSB0byB0aGUgZGVzaXJlZFxuICAvLyBtb250aCBhbmQgdXNpbmcgYSBkYXRlIG9mIDAgdG8gYmFjayB1cCBvbmUgZGF5IHRvIHRoZSBlbmQgb2YgdGhlIGRlc2lyZWRcbiAgLy8gbW9udGguXG4gIHZhciBlbmRPZkRlc2lyZWRNb250aCA9IG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpKTtcbiAgZW5kT2ZEZXNpcmVkTW9udGguc2V0TW9udGgoZGF0ZS5nZXRNb250aCgpICsgYW1vdW50ICsgMSwgMCk7XG4gIHZhciBkYXlzSW5Nb250aCA9IGVuZE9mRGVzaXJlZE1vbnRoLmdldERhdGUoKTtcbiAgaWYgKGRheU9mTW9udGggPj0gZGF5c0luTW9udGgpIHtcbiAgICAvLyBJZiB3ZSdyZSBhbHJlYWR5IGF0IHRoZSBlbmQgb2YgdGhlIG1vbnRoLCB0aGVuIHRoaXMgaXMgdGhlIGNvcnJlY3QgZGF0ZVxuICAgIC8vIGFuZCB3ZSdyZSBkb25lLlxuICAgIHJldHVybiBlbmRPZkRlc2lyZWRNb250aDtcbiAgfSBlbHNlIHtcbiAgICAvLyBPdGhlcndpc2UsIHdlIG5vdyBrbm93IHRoYXQgc2V0dGluZyB0aGUgb3JpZ2luYWwgZGF5LW9mLW1vbnRoIHZhbHVlIHdvbid0XG4gICAgLy8gY2F1c2UgYW4gb3ZlcmZsb3csIHNvIHNldCB0aGUgZGVzaXJlZCBkYXktb2YtbW9udGguIE5vdGUgdGhhdCB3ZSBjYW4ndFxuICAgIC8vIGp1c3Qgc2V0IHRoZSBkYXRlIG9mIGBlbmRPZkRlc2lyZWRNb250aGAgYmVjYXVzZSB0aGF0IG9iamVjdCBtYXkgaGF2ZSBoYWRcbiAgICAvLyBpdHMgdGltZSBjaGFuZ2VkIGluIHRoZSB1bnVzdWFsIGNhc2Ugd2hlcmUgd2hlcmUgYSBEU1QgdHJhbnNpdGlvbiB3YXMgb25cbiAgICAvLyB0aGUgbGFzdCBkYXkgb2YgdGhlIG1vbnRoIGFuZCBpdHMgbG9jYWwgdGltZSB3YXMgaW4gdGhlIGhvdXIgc2tpcHBlZCBvclxuICAgIC8vIHJlcGVhdGVkIG5leHQgdG8gYSBEU1QgdHJhbnNpdGlvbi4gIFNvIHdlIHVzZSBgZGF0ZWAgaW5zdGVhZCB3aGljaCBpc1xuICAgIC8vIGd1YXJhbnRlZWQgdG8gc3RpbGwgaGF2ZSB0aGUgb3JpZ2luYWwgdGltZS5cbiAgICBkYXRlLnNldEZ1bGxZZWFyKGVuZE9mRGVzaXJlZE1vbnRoLmdldEZ1bGxZZWFyKCksIGVuZE9mRGVzaXJlZE1vbnRoLmdldE1vbnRoKCksIGRheU9mTW9udGgpO1xuICAgIHJldHVybiBkYXRlO1xuICB9XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCBhZGRNb250aHMgZnJvbSBcIi4uL2FkZE1vbnRocy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgYWRkUXVhcnRlcnNcbiAqIEBjYXRlZ29yeSBRdWFydGVyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB5ZWFyIHF1YXJ0ZXJzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHllYXIgcXVhcnRlcnMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIHF1YXJ0ZXJzIHRvIGJlIGFkZGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIHF1YXJ0ZXJzIGFkZGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCAxIHF1YXJ0ZXIgdG8gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZFF1YXJ0ZXJzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCAxKVxuICogLy89PiBNb24gRGVjIDAxIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWRkUXVhcnRlcnMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIHZhciBtb250aHMgPSBhbW91bnQgKiAzO1xuICByZXR1cm4gYWRkTW9udGhzKGRpcnR5RGF0ZSwgbW9udGhzKTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IGFkZE1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vYWRkTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBhZGRTZWNvbmRzXG4gKiBAY2F0ZWdvcnkgU2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIHNlY29uZHMgdG8gYmUgYWRkZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgc2Vjb25kcyBhZGRlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgMzAgc2Vjb25kcyB0byAxMCBKdWx5IDIwMTQgMTI6NDU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRTZWNvbmRzKG5ldyBEYXRlKDIwMTQsIDYsIDEwLCAxMiwgNDUsIDApLCAzMClcbiAqIC8vPT4gVGh1IEp1bCAxMCAyMDE0IDEyOjQ1OjMwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZFNlY29uZHMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIHJldHVybiBhZGRNaWxsaXNlY29uZHMoZGlydHlEYXRlLCBhbW91bnQgKiAxMDAwKTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IGFkZERheXMgZnJvbSBcIi4uL2FkZERheXMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGFkZFdlZWtzXG4gKiBAY2F0ZWdvcnkgV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2Ygd2Vla3MgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2Ygd2VlayB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2Ygd2Vla3MgdG8gYmUgYWRkZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgd2Vla3MgYWRkZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDQgd2Vla3MgdG8gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZFdlZWtzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCA0KVxuICogLy89PiBNb24gU2VwIDI5IDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWRkV2Vla3MoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIHZhciBkYXlzID0gYW1vdW50ICogNztcbiAgcmV0dXJuIGFkZERheXMoZGlydHlEYXRlLCBkYXlzKTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IGFkZE1vbnRocyBmcm9tIFwiLi4vYWRkTW9udGhzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBhZGRZZWFyc1xuICogQGNhdGVnb3J5IFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHllYXJzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHllYXJzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiB5ZWFycyB0byBiZSBhZGRlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSB5ZWFycyBhZGRlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgNSB5ZWFycyB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gYWRkWWVhcnMobmV3IERhdGUoMjAxNCwgOCwgMSksIDUpXG4gKiAvLz0+IFN1biBTZXAgMDEgMjAxOSAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRZZWFycyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIGFkZE1vbnRocyhkaXJ0eURhdGUsIGFtb3VudCAqIDEyKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGFyZUludGVydmFsc092ZXJsYXBwaW5nXG4gKiBAY2F0ZWdvcnkgSW50ZXJ2YWwgSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIHRpbWUgaW50ZXJ2YWwgb3ZlcmxhcHBpbmcgd2l0aCBhbm90aGVyIHRpbWUgaW50ZXJ2YWw/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gdGltZSBpbnRlcnZhbCBvdmVybGFwcGluZyB3aXRoIGFub3RoZXIgdGltZSBpbnRlcnZhbD8gQWRqYWNlbnQgaW50ZXJ2YWxzIGRvIG5vdCBjb3VudCBhcyBvdmVybGFwcGluZy5cbiAqXG4gKiBAcGFyYW0ge0ludGVydmFsfSBpbnRlcnZhbExlZnQgLSB0aGUgZmlyc3QgaW50ZXJ2YWwgdG8gY29tcGFyZS4gU2VlIFtJbnRlcnZhbF17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9JbnRlcnZhbH1cbiAqIEBwYXJhbSB7SW50ZXJ2YWx9IGludGVydmFsUmlnaHQgLSB0aGUgc2Vjb25kIGludGVydmFsIHRvIGNvbXBhcmUuIFNlZSBbSW50ZXJ2YWxde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvSW50ZXJ2YWx9XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gdGhlIG9iamVjdCB3aXRoIG9wdGlvbnNcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuaW5jbHVzaXZlPWZhbHNlXSAtIHdoZXRoZXIgdGhlIGNvbXBhcmlzb24gaXMgaW5jbHVzaXZlIG9yIG5vdFxuICogQHJldHVybnMge0Jvb2xlYW59IHdoZXRoZXIgdGhlIHRpbWUgaW50ZXJ2YWxzIGFyZSBvdmVybGFwcGluZ1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gVGhlIHN0YXJ0IG9mIGFuIGludGVydmFsIGNhbm5vdCBiZSBhZnRlciBpdHMgZW5kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBEYXRlIGluIGludGVydmFsIGNhbm5vdCBiZSBgSW52YWxpZCBEYXRlYFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3Igb3ZlcmxhcHBpbmcgdGltZSBpbnRlcnZhbHM6XG4gKiBhcmVJbnRlcnZhbHNPdmVybGFwcGluZyhcbiAqICAgeyBzdGFydDogbmV3IERhdGUoMjAxNCwgMCwgMTApLCBlbmQ6IG5ldyBEYXRlKDIwMTQsIDAsIDIwKSB9LFxuICogICB7IHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAwLCAxNyksIGVuZDogbmV3IERhdGUoMjAxNCwgMCwgMjEpIH1cbiAqIClcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3Igbm9uLW92ZXJsYXBwaW5nIHRpbWUgaW50ZXJ2YWxzOlxuICogYXJlSW50ZXJ2YWxzT3ZlcmxhcHBpbmcoXG4gKiAgIHsgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDAsIDEwKSwgZW5kOiBuZXcgRGF0ZSgyMDE0LCAwLCAyMCkgfSxcbiAqICAgeyBzdGFydDogbmV3IERhdGUoMjAxNCwgMCwgMjEpLCBlbmQ6IG5ldyBEYXRlKDIwMTQsIDAsIDIyKSB9XG4gKiApXG4gKiAvLz0+IGZhbHNlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciBhZGphY2VudCB0aW1lIGludGVydmFsczpcbiAqIGFyZUludGVydmFsc092ZXJsYXBwaW5nKFxuICogICB7IHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAwLCAxMCksIGVuZDogbmV3IERhdGUoMjAxNCwgMCwgMjApIH0sXG4gKiAgIHsgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDAsIDIwKSwgZW5kOiBuZXcgRGF0ZSgyMDE0LCAwLCAzMCkgfVxuICogKVxuICogLy89PiBmYWxzZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBVc2luZyB0aGUgaW5jbHVzaXZlIG9wdGlvbjpcbiAqIGFyZUludGVydmFsc092ZXJsYXBwaW5nKFxuICogICB7IHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAwLCAxMCksIGVuZDogbmV3IERhdGUoMjAxNCwgMCwgMjApIH0sXG4gKiAgIHsgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDAsIDIwKSwgZW5kOiBuZXcgRGF0ZSgyMDE0LCAwLCAyNCkgfVxuICogKVxuICogLy89PiBmYWxzZVxuICogYXJlSW50ZXJ2YWxzT3ZlcmxhcHBpbmcoXG4gKiAgIHsgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDAsIDEwKSwgZW5kOiBuZXcgRGF0ZSgyMDE0LCAwLCAyMCkgfSxcbiAqICAgeyBzdGFydDogbmV3IERhdGUoMjAxNCwgMCwgMjApLCBlbmQ6IG5ldyBEYXRlKDIwMTQsIDAsIDI0KSB9LFxuICogICB7IGluY2x1c2l2ZTogdHJ1ZSB9XG4gKiApXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYXJlSW50ZXJ2YWxzT3ZlcmxhcHBpbmcoaW50ZXJ2YWxMZWZ0LCBpbnRlcnZhbFJpZ2h0LCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgbGVmdFN0YXJ0VGltZSA9IHRvRGF0ZShpbnRlcnZhbExlZnQgPT09IG51bGwgfHwgaW50ZXJ2YWxMZWZ0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBpbnRlcnZhbExlZnQuc3RhcnQpLmdldFRpbWUoKTtcbiAgdmFyIGxlZnRFbmRUaW1lID0gdG9EYXRlKGludGVydmFsTGVmdCA9PT0gbnVsbCB8fCBpbnRlcnZhbExlZnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGludGVydmFsTGVmdC5lbmQpLmdldFRpbWUoKTtcbiAgdmFyIHJpZ2h0U3RhcnRUaW1lID0gdG9EYXRlKGludGVydmFsUmlnaHQgPT09IG51bGwgfHwgaW50ZXJ2YWxSaWdodCA9PT0gdm9pZCAwID8gdm9pZCAwIDogaW50ZXJ2YWxSaWdodC5zdGFydCkuZ2V0VGltZSgpO1xuICB2YXIgcmlnaHRFbmRUaW1lID0gdG9EYXRlKGludGVydmFsUmlnaHQgPT09IG51bGwgfHwgaW50ZXJ2YWxSaWdodCA9PT0gdm9pZCAwID8gdm9pZCAwIDogaW50ZXJ2YWxSaWdodC5lbmQpLmdldFRpbWUoKTtcblxuICAvLyBUaHJvdyBhbiBleGNlcHRpb24gaWYgc3RhcnQgZGF0ZSBpcyBhZnRlciBlbmQgZGF0ZSBvciBpZiBhbnkgZGF0ZSBpcyBgSW52YWxpZCBEYXRlYFxuICBpZiAoIShsZWZ0U3RhcnRUaW1lIDw9IGxlZnRFbmRUaW1lICYmIHJpZ2h0U3RhcnRUaW1lIDw9IHJpZ2h0RW5kVGltZSkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBpbnRlcnZhbCcpO1xuICB9XG4gIGlmIChvcHRpb25zICE9PSBudWxsICYmIG9wdGlvbnMgIT09IHZvaWQgMCAmJiBvcHRpb25zLmluY2x1c2l2ZSkge1xuICAgIHJldHVybiBsZWZ0U3RhcnRUaW1lIDw9IHJpZ2h0RW5kVGltZSAmJiByaWdodFN0YXJ0VGltZSA8PSBsZWZ0RW5kVGltZTtcbiAgfVxuICByZXR1cm4gbGVmdFN0YXJ0VGltZSA8IHJpZ2h0RW5kVGltZSAmJiByaWdodFN0YXJ0VGltZSA8IGxlZnRFbmRUaW1lO1xufSIsImltcG9ydCBtYXggZnJvbSBcIi4uL21heC9pbmRleC5qc1wiO1xuaW1wb3J0IG1pbiBmcm9tIFwiLi4vbWluL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBjbGFtcFxuICogQGNhdGVnb3J5IEludGVydmFsIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiBhIGRhdGUgYm91bmRlZCBieSB0aGUgc3RhcnQgYW5kIHRoZSBlbmQgb2YgdGhlIGdpdmVuIGludGVydmFsXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDbGFtcHMgYSBkYXRlIHRvIHRoZSBsb3dlciBib3VuZCB3aXRoIHRoZSBzdGFydCBvZiB0aGUgaW50ZXJ2YWwgYW5kIHRoZSB1cHBlclxuICogYm91bmQgd2l0aCB0aGUgZW5kIG9mIHRoZSBpbnRlcnZhbC5cbiAqXG4gKiAtIFdoZW4gdGhlIGRhdGUgaXMgbGVzcyB0aGFuIHRoZSBzdGFydCBvZiB0aGUgaW50ZXJ2YWwsIHRoZSBzdGFydCBpcyByZXR1cm5lZC5cbiAqIC0gV2hlbiB0aGUgZGF0ZSBpcyBncmVhdGVyIHRoYW4gdGhlIGVuZCBvZiB0aGUgaW50ZXJ2YWwsIHRoZSBlbmQgaXMgcmV0dXJuZWQuXG4gKiAtIE90aGVyd2lzZSB0aGUgZGF0ZSBpcyByZXR1cm5lZC5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hhdCBpcyBNYXIsIDIxLCAyMDIxIGJvdW5kZWQgdG8gYW4gaW50ZXJ2YWwgc3RhcnRpbmcgYXQgTWFyLCAyMiwgMjAyMSBhbmQgZW5kaW5nIGF0IEFwciwgMDEsIDIwMjFcbiAqIGNvbnN0IHJlc3VsdCA9IGNsYW1wKG5ldyBEYXRlKDIwMjEsIDIsIDIxKSwge1xuICogICBzdGFydDogbmV3IERhdGUoMjAyMSwgMiwgMjIpLFxuICogICBlbmQ6IG5ldyBEYXRlKDIwMjEsIDMsIDEpLFxuICogfSlcbiAqIC8vPT4gTW9uIE1hciAyMiAyMDIxIDAwOjAwOjAwXG4gKlxuICogQHBhcmFtIHtEYXRlIHwgTnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgYm91bmRlZFxuICogQHBhcmFtIHtJbnRlcnZhbH0gaW50ZXJ2YWwgLSB0aGUgaW50ZXJ2YWwgdG8gYm91bmQgdG9cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZGF0ZSBib3VuZGVkIGJ5IHRoZSBzdGFydCBhbmQgdGhlIGVuZCBvZiB0aGUgaW50ZXJ2YWxcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY2xhbXAoZGF0ZSwgX3JlZikge1xuICB2YXIgc3RhcnQgPSBfcmVmLnN0YXJ0LFxuICAgIGVuZCA9IF9yZWYuZW5kO1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIG1pbihbbWF4KFtkYXRlLCBzdGFydF0pLCBlbmRdKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGNsb3Nlc3RJbmRleFRvXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiBhbiBpbmRleCBvZiB0aGUgY2xvc2VzdCBkYXRlIGZyb20gdGhlIGFycmF5IGNvbXBhcmluZyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiBhbiBpbmRleCBvZiB0aGUgY2xvc2VzdCBkYXRlIGZyb20gdGhlIGFycmF5IGNvbXBhcmluZyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGUgfCBOdW1iZXJ9IGRhdGVUb0NvbXBhcmUgLSB0aGUgZGF0ZSB0byBjb21wYXJlIHdpdGhcbiAqIEBwYXJhbSB7QXJyYXk8RGF0ZT4gfCBBcnJheTxudW1iZXI+fSBkYXRlc0FycmF5IC0gdGhlIGFycmF5IHRvIHNlYXJjaFxuICogQHJldHVybnMge051bWJlciB8IHVuZGVmaW5lZH0gYW4gaW5kZXggb2YgdGhlIGRhdGUgY2xvc2VzdCB0byB0aGUgZ2l2ZW4gZGF0ZSBvciB1bmRlZmluZWQgaWYgbm8gdmFsaWQgdmFsdWUgaXMgZ2l2ZW5cbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggZGF0ZSBpcyBjbG9zZXIgdG8gNiBTZXB0ZW1iZXIgMjAxNT9cbiAqIGNvbnN0IGRhdGVUb0NvbXBhcmUgPSBuZXcgRGF0ZSgyMDE1LCA4LCA2KVxuICogY29uc3QgZGF0ZXNBcnJheSA9IFtcbiAqICAgbmV3IERhdGUoMjAxNSwgMCwgMSksXG4gKiAgIG5ldyBEYXRlKDIwMTYsIDAsIDEpLFxuICogICBuZXcgRGF0ZSgyMDE3LCAwLCAxKVxuICogXVxuICogY29uc3QgcmVzdWx0ID0gY2xvc2VzdEluZGV4VG8oZGF0ZVRvQ29tcGFyZSwgZGF0ZXNBcnJheSlcbiAqIC8vPT4gMVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjbG9zZXN0SW5kZXhUbyhkaXJ0eURhdGVUb0NvbXBhcmUsIGRpcnR5RGF0ZXNBcnJheSkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVUb0NvbXBhcmUgPSB0b0RhdGUoZGlydHlEYXRlVG9Db21wYXJlKTtcbiAgaWYgKGlzTmFOKE51bWJlcihkYXRlVG9Db21wYXJlKSkpIHJldHVybiBOYU47XG4gIHZhciB0aW1lVG9Db21wYXJlID0gZGF0ZVRvQ29tcGFyZS5nZXRUaW1lKCk7XG4gIHZhciBkYXRlc0FycmF5O1xuICAvLyBgZGlydHlEYXRlc0FycmF5YCBpcyB1bmRlZmluZWQgb3IgbnVsbFxuICBpZiAoZGlydHlEYXRlc0FycmF5ID09IG51bGwpIHtcbiAgICBkYXRlc0FycmF5ID0gW107XG5cbiAgICAvLyBgZGlydHlEYXRlc0FycmF5YCBpcyBBcnJheSwgU2V0IG9yIE1hcCwgb3Igb2JqZWN0IHdpdGggY3VzdG9tIGBmb3JFYWNoYCBtZXRob2RcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGlydHlEYXRlc0FycmF5LmZvckVhY2ggPT09ICdmdW5jdGlvbicpIHtcbiAgICBkYXRlc0FycmF5ID0gZGlydHlEYXRlc0FycmF5O1xuXG4gICAgLy8gSWYgYGRpcnR5RGF0ZXNBcnJheWAgaXMgQXJyYXktbGlrZSBPYmplY3QsIGNvbnZlcnQgdG8gQXJyYXkuIE90aGVyd2lzZSwgbWFrZSBpdCBlbXB0eSBBcnJheVxuICB9IGVsc2Uge1xuICAgIGRhdGVzQXJyYXkgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkaXJ0eURhdGVzQXJyYXkpO1xuICB9XG4gIHZhciByZXN1bHQ7XG4gIHZhciBtaW5EaXN0YW5jZTtcbiAgZGF0ZXNBcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChkaXJ0eURhdGUsIGluZGV4KSB7XG4gICAgdmFyIGN1cnJlbnREYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gICAgaWYgKGlzTmFOKE51bWJlcihjdXJyZW50RGF0ZSkpKSB7XG4gICAgICByZXN1bHQgPSBOYU47XG4gICAgICBtaW5EaXN0YW5jZSA9IE5hTjtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGRpc3RhbmNlID0gTWF0aC5hYnModGltZVRvQ29tcGFyZSAtIGN1cnJlbnREYXRlLmdldFRpbWUoKSk7XG4gICAgaWYgKHJlc3VsdCA9PSBudWxsIHx8IGRpc3RhbmNlIDwgTnVtYmVyKG1pbkRpc3RhbmNlKSkge1xuICAgICAgcmVzdWx0ID0gaW5kZXg7XG4gICAgICBtaW5EaXN0YW5jZSA9IGRpc3RhbmNlO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBjbG9zZXN0VG9cbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIGEgZGF0ZSBmcm9tIHRoZSBhcnJheSBjbG9zZXN0IHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIGEgZGF0ZSBmcm9tIHRoZSBhcnJheSBjbG9zZXN0IHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IE51bWJlcn0gZGF0ZVRvQ29tcGFyZSAtIHRoZSBkYXRlIHRvIGNvbXBhcmUgd2l0aFxuICogQHBhcmFtIHtBcnJheTxEYXRlPiB8IEFycmF5PG51bWJlcj59IGRhdGVzQXJyYXkgLSB0aGUgYXJyYXkgdG8gc2VhcmNoXG4gKiBAcmV0dXJucyB7RGF0ZSB8IHVuZGVmaW5lZH0gdGhlIGRhdGUgZnJvbSB0aGUgYXJyYXkgY2xvc2VzdCB0byB0aGUgZ2l2ZW4gZGF0ZSBvciB1bmRlZmluZWQgaWYgbm8gdmFsaWQgdmFsdWUgaXMgZ2l2ZW5cbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggZGF0ZSBpcyBjbG9zZXIgdG8gNiBTZXB0ZW1iZXIgMjAxNTogMSBKYW51YXJ5IDIwMDAgb3IgMSBKYW51YXJ5IDIwMzA/XG4gKiBjb25zdCBkYXRlVG9Db21wYXJlID0gbmV3IERhdGUoMjAxNSwgOCwgNilcbiAqIGNvbnN0IHJlc3VsdCA9IGNsb3Nlc3RUbyhkYXRlVG9Db21wYXJlLCBbXG4gKiAgIG5ldyBEYXRlKDIwMDAsIDAsIDEpLFxuICogICBuZXcgRGF0ZSgyMDMwLCAwLCAxKVxuICogXSlcbiAqIC8vPT4gVHVlIEphbiAwMSAyMDMwIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNsb3Nlc3RUbyhkaXJ0eURhdGVUb0NvbXBhcmUsIGRpcnR5RGF0ZXNBcnJheSkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVUb0NvbXBhcmUgPSB0b0RhdGUoZGlydHlEYXRlVG9Db21wYXJlKTtcbiAgaWYgKGlzTmFOKE51bWJlcihkYXRlVG9Db21wYXJlKSkpIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB2YXIgdGltZVRvQ29tcGFyZSA9IGRhdGVUb0NvbXBhcmUuZ2V0VGltZSgpO1xuICB2YXIgZGF0ZXNBcnJheTtcbiAgLy8gYGRpcnR5RGF0ZXNBcnJheWAgaXMgdW5kZWZpbmVkIG9yIG51bGxcbiAgaWYgKGRpcnR5RGF0ZXNBcnJheSA9PSBudWxsKSB7XG4gICAgZGF0ZXNBcnJheSA9IFtdO1xuXG4gICAgLy8gYGRpcnR5RGF0ZXNBcnJheWAgaXMgQXJyYXksIFNldCBvciBNYXAsIG9yIG9iamVjdCB3aXRoIGN1c3RvbSBgZm9yRWFjaGAgbWV0aG9kXG4gIH0gZWxzZSBpZiAodHlwZW9mIGRpcnR5RGF0ZXNBcnJheS5mb3JFYWNoID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZGF0ZXNBcnJheSA9IGRpcnR5RGF0ZXNBcnJheTtcblxuICAgIC8vIElmIGBkaXJ0eURhdGVzQXJyYXlgIGlzIEFycmF5LWxpa2UgT2JqZWN0LCBjb252ZXJ0IHRvIEFycmF5LiBPdGhlcndpc2UsIG1ha2UgaXQgZW1wdHkgQXJyYXlcbiAgfSBlbHNlIHtcbiAgICBkYXRlc0FycmF5ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZGlydHlEYXRlc0FycmF5KTtcbiAgfVxuICB2YXIgcmVzdWx0O1xuICB2YXIgbWluRGlzdGFuY2U7XG4gIGRhdGVzQXJyYXkuZm9yRWFjaChmdW5jdGlvbiAoZGlydHlEYXRlKSB7XG4gICAgdmFyIGN1cnJlbnREYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gICAgaWYgKGlzTmFOKE51bWJlcihjdXJyZW50RGF0ZSkpKSB7XG4gICAgICByZXN1bHQgPSBuZXcgRGF0ZShOYU4pO1xuICAgICAgbWluRGlzdGFuY2UgPSBOYU47XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBkaXN0YW5jZSA9IE1hdGguYWJzKHRpbWVUb0NvbXBhcmUgLSBjdXJyZW50RGF0ZS5nZXRUaW1lKCkpO1xuICAgIGlmIChyZXN1bHQgPT0gbnVsbCB8fCBkaXN0YW5jZSA8IE51bWJlcihtaW5EaXN0YW5jZSkpIHtcbiAgICAgIHJlc3VsdCA9IGN1cnJlbnREYXRlO1xuICAgICAgbWluRGlzdGFuY2UgPSBkaXN0YW5jZTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgY29tcGFyZUFzY1xuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb21wYXJlIHRoZSB0d28gZGF0ZXMgYW5kIHJldHVybiAtMSwgMCBvciAxLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29tcGFyZSB0aGUgdHdvIGRhdGVzIGFuZCByZXR1cm4gMSBpZiB0aGUgZmlyc3QgZGF0ZSBpcyBhZnRlciB0aGUgc2Vjb25kLFxuICogLTEgaWYgdGhlIGZpcnN0IGRhdGUgaXMgYmVmb3JlIHRoZSBzZWNvbmQgb3IgMCBpZiBkYXRlcyBhcmUgZXF1YWwuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgZmlyc3QgZGF0ZSB0byBjb21wYXJlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgc2Vjb25kIGRhdGUgdG8gY29tcGFyZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvblxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb21wYXJlIDExIEZlYnJ1YXJ5IDE5ODcgYW5kIDEwIEp1bHkgMTk4OTpcbiAqIGNvbnN0IHJlc3VsdCA9IGNvbXBhcmVBc2MobmV3IERhdGUoMTk4NywgMSwgMTEpLCBuZXcgRGF0ZSgxOTg5LCA2LCAxMCkpXG4gKiAvLz0+IC0xXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNvcnQgdGhlIGFycmF5IG9mIGRhdGVzOlxuICogY29uc3QgcmVzdWx0ID0gW1xuICogICBuZXcgRGF0ZSgxOTk1LCA2LCAyKSxcbiAqICAgbmV3IERhdGUoMTk4NywgMSwgMTEpLFxuICogICBuZXcgRGF0ZSgxOTg5LCA2LCAxMClcbiAqIF0uc29ydChjb21wYXJlQXNjKVxuICogLy89PiBbXG4gKiAvLyAgIFdlZCBGZWIgMTEgMTk4NyAwMDowMDowMCxcbiAqIC8vICAgTW9uIEp1bCAxMCAxOTg5IDAwOjAwOjAwLFxuICogLy8gICBTdW4gSnVsIDAyIDE5OTUgMDA6MDA6MDBcbiAqIC8vIF1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29tcGFyZUFzYyhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0ID0gdG9EYXRlKGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgZGF0ZVJpZ2h0ID0gdG9EYXRlKGRpcnR5RGF0ZVJpZ2h0KTtcbiAgdmFyIGRpZmYgPSBkYXRlTGVmdC5nZXRUaW1lKCkgLSBkYXRlUmlnaHQuZ2V0VGltZSgpO1xuICBpZiAoZGlmZiA8IDApIHtcbiAgICByZXR1cm4gLTE7XG4gIH0gZWxzZSBpZiAoZGlmZiA+IDApIHtcbiAgICByZXR1cm4gMTtcbiAgICAvLyBSZXR1cm4gMCBpZiBkaWZmIGlzIDA7IHJldHVybiBOYU4gaWYgZGlmZiBpcyBOYU5cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZGlmZjtcbiAgfVxufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgY29tcGFyZURlc2NcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29tcGFyZSB0aGUgdHdvIGRhdGVzIHJldmVyc2UgY2hyb25vbG9naWNhbGx5IGFuZCByZXR1cm4gLTEsIDAgb3IgMS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbXBhcmUgdGhlIHR3byBkYXRlcyBhbmQgcmV0dXJuIC0xIGlmIHRoZSBmaXJzdCBkYXRlIGlzIGFmdGVyIHRoZSBzZWNvbmQsXG4gKiAxIGlmIHRoZSBmaXJzdCBkYXRlIGlzIGJlZm9yZSB0aGUgc2Vjb25kIG9yIDAgaWYgZGF0ZXMgYXJlIGVxdWFsLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGZpcnN0IGRhdGUgdG8gY29tcGFyZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIHNlY29uZCBkYXRlIHRvIGNvbXBhcmVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb25cbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29tcGFyZSAxMSBGZWJydWFyeSAxOTg3IGFuZCAxMCBKdWx5IDE5ODkgcmV2ZXJzZSBjaHJvbm9sb2dpY2FsbHk6XG4gKiBjb25zdCByZXN1bHQgPSBjb21wYXJlRGVzYyhuZXcgRGF0ZSgxOTg3LCAxLCAxMSksIG5ldyBEYXRlKDE5ODksIDYsIDEwKSlcbiAqIC8vPT4gMVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTb3J0IHRoZSBhcnJheSBvZiBkYXRlcyBpbiByZXZlcnNlIGNocm9ub2xvZ2ljYWwgb3JkZXI6XG4gKiBjb25zdCByZXN1bHQgPSBbXG4gKiAgIG5ldyBEYXRlKDE5OTUsIDYsIDIpLFxuICogICBuZXcgRGF0ZSgxOTg3LCAxLCAxMSksXG4gKiAgIG5ldyBEYXRlKDE5ODksIDYsIDEwKVxuICogXS5zb3J0KGNvbXBhcmVEZXNjKVxuICogLy89PiBbXG4gKiAvLyAgIFN1biBKdWwgMDIgMTk5NSAwMDowMDowMCxcbiAqIC8vICAgTW9uIEp1bCAxMCAxOTg5IDAwOjAwOjAwLFxuICogLy8gICBXZWQgRmViIDExIDE5ODcgMDA6MDA6MDBcbiAqIC8vIF1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29tcGFyZURlc2MoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdCA9IHRvRGF0ZShkaXJ0eURhdGVMZWZ0KTtcbiAgdmFyIGRhdGVSaWdodCA9IHRvRGF0ZShkaXJ0eURhdGVSaWdodCk7XG4gIHZhciBkaWZmID0gZGF0ZUxlZnQuZ2V0VGltZSgpIC0gZGF0ZVJpZ2h0LmdldFRpbWUoKTtcbiAgaWYgKGRpZmYgPiAwKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9IGVsc2UgaWYgKGRpZmYgPCAwKSB7XG4gICAgcmV0dXJuIDE7XG4gICAgLy8gUmV0dXJuIDAgaWYgZGlmZiBpcyAwOyByZXR1cm4gTmFOIGlmIGRpZmYgaXMgTmFOXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGRpZmY7XG4gIH1cbn0iLCIvKipcbiAqIERheXMgaW4gMSB3ZWVrLlxuICpcbiAqIEBuYW1lIGRheXNJbldlZWtcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqIEBkZWZhdWx0XG4gKi9cbmV4cG9ydCB2YXIgZGF5c0luV2VlayA9IDc7XG5cbi8qKlxuICogRGF5cyBpbiAxIHllYXJcbiAqIE9uZSB5ZWFycyBlcXVhbHMgMzY1LjI0MjUgZGF5cyBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6XG4gKlxuICogPiBMZWFwIHllYXIgb2NjdXJlcyBldmVyeSA0IHllYXJzLCBleGNlcHQgZm9yIHllYXJzIHRoYXQgYXJlIGRpdmlzYWJsZSBieSAxMDAgYW5kIG5vdCBkaXZpc2FibGUgYnkgNDAwLlxuICogPiAxIG1lYW4geWVhciA9ICgzNjUrMS80LTEvMTAwKzEvNDAwKSBkYXlzID0gMzY1LjI0MjUgZGF5c1xuICpcbiAqIEBuYW1lIGRheXNJblllYXJcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqIEBkZWZhdWx0XG4gKi9cbmV4cG9ydCB2YXIgZGF5c0luWWVhciA9IDM2NS4yNDI1O1xuXG4vKipcbiAqIE1heGltdW0gYWxsb3dlZCB0aW1lLlxuICpcbiAqIEBuYW1lIG1heFRpbWVcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqIEBkZWZhdWx0XG4gKi9cbmV4cG9ydCB2YXIgbWF4VGltZSA9IE1hdGgucG93KDEwLCA4KSAqIDI0ICogNjAgKiA2MCAqIDEwMDA7XG5cbi8qKlxuICogTWlsbGlzZWNvbmRzIGluIDEgbWludXRlXG4gKlxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5NaW51dGVcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqIEBkZWZhdWx0XG4gKi9cbmV4cG9ydCB2YXIgbWlsbGlzZWNvbmRzSW5NaW51dGUgPSA2MDAwMDtcblxuLyoqXG4gKiBNaWxsaXNlY29uZHMgaW4gMSBob3VyXG4gKlxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5Ib3VyXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5leHBvcnQgdmFyIG1pbGxpc2Vjb25kc0luSG91ciA9IDM2MDAwMDA7XG5cbi8qKlxuICogTWlsbGlzZWNvbmRzIGluIDEgc2Vjb25kXG4gKlxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5TZWNvbmRcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqIEBkZWZhdWx0XG4gKi9cbmV4cG9ydCB2YXIgbWlsbGlzZWNvbmRzSW5TZWNvbmQgPSAxMDAwO1xuXG4vKipcbiAqIE1pbmltdW0gYWxsb3dlZCB0aW1lLlxuICpcbiAqIEBuYW1lIG1pblRpbWVcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqIEBkZWZhdWx0XG4gKi9cbmV4cG9ydCB2YXIgbWluVGltZSA9IC1tYXhUaW1lO1xuXG4vKipcbiAqIE1pbnV0ZXMgaW4gMSBob3VyXG4gKlxuICogQG5hbWUgbWludXRlc0luSG91clxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBtaW51dGVzSW5Ib3VyID0gNjA7XG5cbi8qKlxuICogTW9udGhzIGluIDEgcXVhcnRlclxuICpcbiAqIEBuYW1lIG1vbnRoc0luUXVhcnRlclxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBtb250aHNJblF1YXJ0ZXIgPSAzO1xuXG4vKipcbiAqIE1vbnRocyBpbiAxIHllYXJcbiAqXG4gKiBAbmFtZSBtb250aHNJblllYXJcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqIEBkZWZhdWx0XG4gKi9cbmV4cG9ydCB2YXIgbW9udGhzSW5ZZWFyID0gMTI7XG5cbi8qKlxuICogUXVhcnRlcnMgaW4gMSB5ZWFyXG4gKlxuICogQG5hbWUgcXVhcnRlcnNJblllYXJcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqIEBkZWZhdWx0XG4gKi9cbmV4cG9ydCB2YXIgcXVhcnRlcnNJblllYXIgPSA0O1xuXG4vKipcbiAqIFNlY29uZHMgaW4gMSBob3VyXG4gKlxuICogQG5hbWUgc2Vjb25kc0luSG91clxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBzZWNvbmRzSW5Ib3VyID0gMzYwMDtcblxuLyoqXG4gKiBTZWNvbmRzIGluIDEgbWludXRlXG4gKlxuICogQG5hbWUgc2Vjb25kc0luTWludXRlXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5leHBvcnQgdmFyIHNlY29uZHNJbk1pbnV0ZSA9IDYwO1xuXG4vKipcbiAqIFNlY29uZHMgaW4gMSBkYXlcbiAqXG4gKiBAbmFtZSBzZWNvbmRzSW5EYXlcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqIEBkZWZhdWx0XG4gKi9cbmV4cG9ydCB2YXIgc2Vjb25kc0luRGF5ID0gc2Vjb25kc0luSG91ciAqIDI0O1xuXG4vKipcbiAqIFNlY29uZHMgaW4gMSB3ZWVrXG4gKlxuICogQG5hbWUgc2Vjb25kc0luV2Vla1xuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuZXhwb3J0IHZhciBzZWNvbmRzSW5XZWVrID0gc2Vjb25kc0luRGF5ICogNztcblxuLyoqXG4gKiBTZWNvbmRzIGluIDEgeWVhclxuICpcbiAqIEBuYW1lIHNlY29uZHNJblllYXJcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqIEBkZWZhdWx0XG4gKi9cbmV4cG9ydCB2YXIgc2Vjb25kc0luWWVhciA9IHNlY29uZHNJbkRheSAqIGRheXNJblllYXI7XG5cbi8qKlxuICogU2Vjb25kcyBpbiAxIG1vbnRoXG4gKlxuICogQG5hbWUgc2Vjb25kc0luTW9udGhcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqIEBkZWZhdWx0XG4gKi9cbmV4cG9ydCB2YXIgc2Vjb25kc0luTW9udGggPSBzZWNvbmRzSW5ZZWFyIC8gMTI7XG5cbi8qKlxuICogU2Vjb25kcyBpbiAxIHF1YXJ0ZXJcbiAqXG4gKiBAbmFtZSBzZWNvbmRzSW5RdWFydGVyXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5leHBvcnQgdmFyIHNlY29uZHNJblF1YXJ0ZXIgPSBzZWNvbmRzSW5Nb250aCAqIDM7IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IGRheXNJbldlZWsgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGRheXNUb1dlZWtzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IGRheXMgdG8gd2Vla3MuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgbnVtYmVyIG9mIGRheXMgdG8gYSBmdWxsIG51bWJlciBvZiB3ZWVrcy5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gZGF5cyAtIG51bWJlciBvZiBkYXlzIHRvIGJlIGNvbnZlcnRlZFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBudW1iZXIgb2YgZGF5cyBjb252ZXJ0ZWQgaW4gd2Vla3NcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDE0IGRheXMgdG8gd2Vla3M6XG4gKiBjb25zdCByZXN1bHQgPSBkYXlzVG9XZWVrcygxNClcbiAqIC8vPT4gMlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJdCB1c2VzIGZsb29yIHJvdW5kaW5nOlxuICogY29uc3QgcmVzdWx0ID0gZGF5c1RvV2Vla3MoMTMpXG4gKiAvLz0+IDFcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGF5c1RvV2Vla3MoZGF5cykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIHdlZWtzID0gZGF5cyAvIGRheXNJbldlZWs7XG4gIHJldHVybiBNYXRoLmZsb29yKHdlZWtzKTtcbn0iLCJpbXBvcnQgYWRkRGF5cyBmcm9tIFwiLi4vYWRkRGF5cy9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgaXNTYW1lRGF5IGZyb20gXCIuLi9pc1NhbWVEYXkvaW5kZXguanNcIjtcbmltcG9ydCBpc1ZhbGlkIGZyb20gXCIuLi9pc1ZhbGlkL2luZGV4LmpzXCI7XG5pbXBvcnQgaXNXZWVrZW5kIGZyb20gXCIuLi9pc1dlZWtlbmQvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbkJ1c2luZXNzRGF5c1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBidXNpbmVzcyBkYXlzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgYnVzaW5lc3MgZGF5IHBlcmlvZHMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKiBCdXNpbmVzcyBkYXlzIGJlaW5nIGRheXMgdGhhdCBhcmVudCBpbiB0aGUgd2Vla2VuZC5cbiAqIExpa2UgYGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5c2AsIHRoZSBmdW5jdGlvbiByZW1vdmVzIHRoZSB0aW1lcyBmcm9tXG4gKiB0aGUgZGF0ZXMgYmVmb3JlIGNhbGN1bGF0aW5nIHRoZSBkaWZmZXJlbmNlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBlYXJsaWVyIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgYnVzaW5lc3MgZGF5c1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBidXNpbmVzcyBkYXlzIGFyZSBiZXR3ZWVuXG4gKiAvLyAxMCBKYW51YXJ5IDIwMTQgYW5kIDIwIEp1bHkgMjAxND9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkJ1c2luZXNzRGF5cyhcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMjApLFxuICogICBuZXcgRGF0ZSgyMDE0LCAwLCAxMClcbiAqIClcbiAqIC8vPT4gMTM2XG4gKlxuICogLy8gSG93IG1hbnkgYnVzaW5lc3MgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMzAgTm92ZW1iZXIgMjAyMSBhbmQgMSBOb3ZlbWJlciAyMDIxP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluQnVzaW5lc3NEYXlzKFxuICogICBuZXcgRGF0ZSgyMDIxLCAxMCwgMzApLFxuICogICBuZXcgRGF0ZSgyMDIxLCAxMCwgMSlcbiAqIClcbiAqIC8vPT4gMjFcbiAqXG4gKiAvLyBIb3cgbWFueSBidXNpbmVzcyBkYXlzIGFyZSBiZXR3ZWVuXG4gKiAvLyAxIE5vdmVtYmVyIDIwMjEgYW5kIDEgRGVjZW1iZXIgMjAyMT9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkJ1c2luZXNzRGF5cyhcbiAqICAgbmV3IERhdGUoMjAyMSwgMTAsIDEpLFxuICogICBuZXcgRGF0ZSgyMDIxLCAxMSwgMSlcbiAqIClcbiAqIC8vPT4gLTIyXG4gKlxuICogLy8gSG93IG1hbnkgYnVzaW5lc3MgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMSBOb3ZlbWJlciAyMDIxIGFuZCAxIE5vdmVtYmVyIDIwMjEgP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluQnVzaW5lc3NEYXlzKFxuICogICBuZXcgRGF0ZSgyMDIxLCAxMCwgMSksXG4gKiAgIG5ldyBEYXRlKDIwMjEsIDEwLCAxKVxuICogKVxuICogLy89PiAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbkJ1c2luZXNzRGF5cyhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0ID0gdG9EYXRlKGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgZGF0ZVJpZ2h0ID0gdG9EYXRlKGRpcnR5RGF0ZVJpZ2h0KTtcbiAgaWYgKCFpc1ZhbGlkKGRhdGVMZWZ0KSB8fCAhaXNWYWxpZChkYXRlUmlnaHQpKSByZXR1cm4gTmFOO1xuICB2YXIgY2FsZW5kYXJEaWZmZXJlbmNlID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICB2YXIgc2lnbiA9IGNhbGVuZGFyRGlmZmVyZW5jZSA8IDAgPyAtMSA6IDE7XG4gIHZhciB3ZWVrcyA9IHRvSW50ZWdlcihjYWxlbmRhckRpZmZlcmVuY2UgLyA3KTtcbiAgdmFyIHJlc3VsdCA9IHdlZWtzICogNTtcbiAgZGF0ZVJpZ2h0ID0gYWRkRGF5cyhkYXRlUmlnaHQsIHdlZWtzICogNyk7XG5cbiAgLy8gdGhlIGxvb3AgYmVsb3cgd2lsbCBydW4gYXQgbW9zdCA2IHRpbWVzIHRvIGFjY291bnQgZm9yIHRoZSByZW1haW5pbmcgZGF5cyB0aGF0IGRvbid0IG1ha2V1cCBhIGZ1bGwgd2Vla1xuICB3aGlsZSAoIWlzU2FtZURheShkYXRlTGVmdCwgZGF0ZVJpZ2h0KSkge1xuICAgIC8vIHNpZ24gaXMgdXNlZCB0byBhY2NvdW50IGZvciBib3RoIG5lZ2F0aXZlIGFuZCBwb3NpdGl2ZSBkaWZmZXJlbmNlc1xuICAgIHJlc3VsdCArPSBpc1dlZWtlbmQoZGF0ZVJpZ2h0KSA/IDAgOiBzaWduO1xuICAgIGRhdGVSaWdodCA9IGFkZERheXMoZGF0ZVJpZ2h0LCBzaWduKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0ID09PSAwID8gMCA6IHJlc3VsdDtcbn0iLCJpbXBvcnQgZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vX2xpYi9nZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZkRheSBmcm9tIFwiLi4vc3RhcnRPZkRheS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbnZhciBNSUxMSVNFQ09ORFNfSU5fREFZID0gODY0MDAwMDA7XG5cbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIGRheXMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBjYWxlbmRhciBkYXlzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLiBUaGlzIG1lYW5zIHRoYXQgdGhlIHRpbWVzIGFyZSByZW1vdmVkXG4gKiBmcm9tIHRoZSBkYXRlcyBhbmQgdGhlbiB0aGUgZGlmZmVyZW5jZSBpbiBkYXlzIGlzIGNhbGN1bGF0ZWQuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIGVhcmxpZXIgZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBjYWxlbmRhciBkYXlzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGNhbGVuZGFyIGRheXMgYXJlIGJldHdlZW5cbiAqIC8vIDIgSnVseSAyMDExIDIzOjAwOjAwIGFuZCAyIEp1bHkgMjAxMiAwMDowMDowMD9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhcbiAqICAgbmV3IERhdGUoMjAxMiwgNiwgMiwgMCwgMCksXG4gKiAgIG5ldyBEYXRlKDIwMTEsIDYsIDIsIDIzLCAwKVxuICogKVxuICogLy89PiAzNjZcbiAqIC8vIEhvdyBtYW55IGNhbGVuZGFyIGRheXMgYXJlIGJldHdlZW5cbiAqIC8vIDIgSnVseSAyMDExIDIzOjU5OjAwIGFuZCAzIEp1bHkgMjAxMSAwMDowMTowMD9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhcbiAqICAgbmV3IERhdGUoMjAxMSwgNiwgMywgMCwgMSksXG4gKiAgIG5ldyBEYXRlKDIwMTEsIDYsIDIsIDIzLCA1OSlcbiAqIClcbiAqIC8vPT4gMVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBzdGFydE9mRGF5TGVmdCA9IHN0YXJ0T2ZEYXkoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBzdGFydE9mRGF5UmlnaHQgPSBzdGFydE9mRGF5KGRpcnR5RGF0ZVJpZ2h0KTtcbiAgdmFyIHRpbWVzdGFtcExlZnQgPSBzdGFydE9mRGF5TGVmdC5nZXRUaW1lKCkgLSBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKHN0YXJ0T2ZEYXlMZWZ0KTtcbiAgdmFyIHRpbWVzdGFtcFJpZ2h0ID0gc3RhcnRPZkRheVJpZ2h0LmdldFRpbWUoKSAtIGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoc3RhcnRPZkRheVJpZ2h0KTtcblxuICAvLyBSb3VuZCB0aGUgbnVtYmVyIG9mIGRheXMgdG8gdGhlIG5lYXJlc3QgaW50ZWdlclxuICAvLyBiZWNhdXNlIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGluIGEgZGF5IGlzIG5vdCBjb25zdGFudFxuICAvLyAoZS5nLiBpdCdzIGRpZmZlcmVudCBpbiB0aGUgZGF5IG9mIHRoZSBkYXlsaWdodCBzYXZpbmcgdGltZSBjbG9jayBzaGlmdClcbiAgcmV0dXJuIE1hdGgucm91bmQoKHRpbWVzdGFtcExlZnQgLSB0aW1lc3RhbXBSaWdodCkgLyBNSUxMSVNFQ09ORFNfSU5fREFZKTtcbn0iLCJpbXBvcnQgZ2V0SVNPV2Vla1llYXIgZnJvbSBcIi4uL2dldElTT1dlZWtZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5DYWxlbmRhcklTT1dlZWtZZWFyc1xuICogQGNhdGVnb3J5IElTTyBXZWVrLU51bWJlcmluZyBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFycyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFycyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIGVhcmxpZXIgZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBjYWxlbmRhciBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgY2FsZW5kYXIgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIGFyZSAxIEphbnVhcnkgMjAxMCBhbmQgMSBKYW51YXJ5IDIwMTI/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5DYWxlbmRhcklTT1dlZWtZZWFycyhcbiAqICAgbmV3IERhdGUoMjAxMiwgMCwgMSksXG4gKiAgIG5ldyBEYXRlKDIwMTAsIDAsIDEpXG4gKiApXG4gKiAvLz0+IDJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlmZmVyZW5jZUluQ2FsZW5kYXJJU09XZWVrWWVhcnMoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBnZXRJU09XZWVrWWVhcihkaXJ0eURhdGVMZWZ0KSAtIGdldElTT1dlZWtZZWFyKGRpcnR5RGF0ZVJpZ2h0KTtcbn0iLCJpbXBvcnQgZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vX2xpYi9nZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZklTT1dlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZJU09XZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xudmFyIE1JTExJU0VDT05EU19JTl9XRUVLID0gNjA0ODAwMDAwO1xuXG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbkNhbGVuZGFySVNPV2Vla3NcbiAqIEBjYXRlZ29yeSBJU08gV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBjYWxlbmRhciBJU08gd2Vla3MgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBjYWxlbmRhciBJU08gd2Vla3MgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBlYXJsaWVyIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgSVNPIHdlZWtzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGNhbGVuZGFyIElTTyB3ZWVrcyBhcmUgYmV0d2VlbiA2IEp1bHkgMjAxNCBhbmQgMjEgSnVseSAyMDE0P1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJJU09XZWVrcyhcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMjEpLFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCA2KVxuICogKVxuICogLy89PiAzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbkNhbGVuZGFySVNPV2Vla3MoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBzdGFydE9mSVNPV2Vla0xlZnQgPSBzdGFydE9mSVNPV2VlayhkaXJ0eURhdGVMZWZ0KTtcbiAgdmFyIHN0YXJ0T2ZJU09XZWVrUmlnaHQgPSBzdGFydE9mSVNPV2VlayhkaXJ0eURhdGVSaWdodCk7XG4gIHZhciB0aW1lc3RhbXBMZWZ0ID0gc3RhcnRPZklTT1dlZWtMZWZ0LmdldFRpbWUoKSAtIGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoc3RhcnRPZklTT1dlZWtMZWZ0KTtcbiAgdmFyIHRpbWVzdGFtcFJpZ2h0ID0gc3RhcnRPZklTT1dlZWtSaWdodC5nZXRUaW1lKCkgLSBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKHN0YXJ0T2ZJU09XZWVrUmlnaHQpO1xuXG4gIC8vIFJvdW5kIHRoZSBudW1iZXIgb2YgZGF5cyB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyXG4gIC8vIGJlY2F1c2UgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaW4gYSB3ZWVrIGlzIG5vdCBjb25zdGFudFxuICAvLyAoZS5nLiBpdCdzIGRpZmZlcmVudCBpbiB0aGUgd2VlayBvZiB0aGUgZGF5bGlnaHQgc2F2aW5nIHRpbWUgY2xvY2sgc2hpZnQpXG4gIHJldHVybiBNYXRoLnJvdW5kKCh0aW1lc3RhbXBMZWZ0IC0gdGltZXN0YW1wUmlnaHQpIC8gTUlMTElTRUNPTkRTX0lOX1dFRUspO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHNcbiAqIEBjYXRlZ29yeSBNb250aCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBjYWxlbmRhciBtb250aHMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBjYWxlbmRhciBtb250aHMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIGVhcmxpZXIgZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBjYWxlbmRhciBtb250aHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgY2FsZW5kYXIgbW9udGhzIGFyZSBiZXR3ZWVuIDMxIEphbnVhcnkgMjAxNCBhbmQgMSBTZXB0ZW1iZXIgMjAxND9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyTW9udGhzKFxuICogICBuZXcgRGF0ZSgyMDE0LCA4LCAxKSxcbiAqICAgbmV3IERhdGUoMjAxNCwgMCwgMzEpXG4gKiApXG4gKiAvLz0+IDhcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdCA9IHRvRGF0ZShkaXJ0eURhdGVMZWZ0KTtcbiAgdmFyIGRhdGVSaWdodCA9IHRvRGF0ZShkaXJ0eURhdGVSaWdodCk7XG4gIHZhciB5ZWFyRGlmZiA9IGRhdGVMZWZ0LmdldEZ1bGxZZWFyKCkgLSBkYXRlUmlnaHQuZ2V0RnVsbFllYXIoKTtcbiAgdmFyIG1vbnRoRGlmZiA9IGRhdGVMZWZ0LmdldE1vbnRoKCkgLSBkYXRlUmlnaHQuZ2V0TW9udGgoKTtcbiAgcmV0dXJuIHllYXJEaWZmICogMTIgKyBtb250aERpZmY7XG59IiwiaW1wb3J0IGdldFF1YXJ0ZXIgZnJvbSBcIi4uL2dldFF1YXJ0ZXIvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluQ2FsZW5kYXJRdWFydGVyc1xuICogQGNhdGVnb3J5IFF1YXJ0ZXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgcXVhcnRlcnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBjYWxlbmRhciBxdWFydGVycyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgZWFybGllciBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIHF1YXJ0ZXJzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGNhbGVuZGFyIHF1YXJ0ZXJzIGFyZSBiZXR3ZWVuIDMxIERlY2VtYmVyIDIwMTMgYW5kIDIgSnVseSAyMDE0P1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJRdWFydGVycyhcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiksXG4gKiAgIG5ldyBEYXRlKDIwMTMsIDExLCAzMSlcbiAqIClcbiAqIC8vPT4gM1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5DYWxlbmRhclF1YXJ0ZXJzKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnQgPSB0b0RhdGUoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBkYXRlUmlnaHQgPSB0b0RhdGUoZGlydHlEYXRlUmlnaHQpO1xuICB2YXIgeWVhckRpZmYgPSBkYXRlTGVmdC5nZXRGdWxsWWVhcigpIC0gZGF0ZVJpZ2h0LmdldEZ1bGxZZWFyKCk7XG4gIHZhciBxdWFydGVyRGlmZiA9IGdldFF1YXJ0ZXIoZGF0ZUxlZnQpIC0gZ2V0UXVhcnRlcihkYXRlUmlnaHQpO1xuICByZXR1cm4geWVhckRpZmYgKiA0ICsgcXVhcnRlckRpZmY7XG59IiwiaW1wb3J0IHN0YXJ0T2ZXZWVrIGZyb20gXCIuLi9zdGFydE9mV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMgZnJvbSBcIi4uL19saWIvZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbnZhciBNSUxMSVNFQ09ORFNfSU5fV0VFSyA9IDYwNDgwMDAwMDtcblxuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5DYWxlbmRhcldlZWtzXG4gKiBAY2F0ZWdvcnkgV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBjYWxlbmRhciB3ZWVrcyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIHdlZWtzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBlYXJsaWVyIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBjYWxlbmRhciB3ZWVrc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBjYWxlbmRhciB3ZWVrcyBhcmUgYmV0d2VlbiA1IEp1bHkgMjAxNCBhbmQgMjAgSnVseSAyMDE0P1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJXZWVrcyhcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMjApLFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCA1KVxuICogKVxuICogLy89PiAzXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRoZSB3ZWVrIHN0YXJ0cyBvbiBNb25kYXksXG4gKiAvLyBob3cgbWFueSBjYWxlbmRhciB3ZWVrcyBhcmUgYmV0d2VlbiA1IEp1bHkgMjAxNCBhbmQgMjAgSnVseSAyMDE0P1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJXZWVrcyhcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMjApLFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCA1KSxcbiAqICAgeyB3ZWVrU3RhcnRzT246IDEgfVxuICogKVxuICogLy89PiAyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbkNhbGVuZGFyV2Vla3MoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQsIG9wdGlvbnMpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBzdGFydE9mV2Vla0xlZnQgPSBzdGFydE9mV2VlayhkaXJ0eURhdGVMZWZ0LCBvcHRpb25zKTtcbiAgdmFyIHN0YXJ0T2ZXZWVrUmlnaHQgPSBzdGFydE9mV2VlayhkaXJ0eURhdGVSaWdodCwgb3B0aW9ucyk7XG4gIHZhciB0aW1lc3RhbXBMZWZ0ID0gc3RhcnRPZldlZWtMZWZ0LmdldFRpbWUoKSAtIGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoc3RhcnRPZldlZWtMZWZ0KTtcbiAgdmFyIHRpbWVzdGFtcFJpZ2h0ID0gc3RhcnRPZldlZWtSaWdodC5nZXRUaW1lKCkgLSBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKHN0YXJ0T2ZXZWVrUmlnaHQpO1xuXG4gIC8vIFJvdW5kIHRoZSBudW1iZXIgb2YgZGF5cyB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyXG4gIC8vIGJlY2F1c2UgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaW4gYSB3ZWVrIGlzIG5vdCBjb25zdGFudFxuICAvLyAoZS5nLiBpdCdzIGRpZmZlcmVudCBpbiB0aGUgd2VlayBvZiB0aGUgZGF5bGlnaHQgc2F2aW5nIHRpbWUgY2xvY2sgc2hpZnQpXG4gIHJldHVybiBNYXRoLnJvdW5kKCh0aW1lc3RhbXBMZWZ0IC0gdGltZXN0YW1wUmlnaHQpIC8gTUlMTElTRUNPTkRTX0lOX1dFRUspO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluQ2FsZW5kYXJZZWFyc1xuICogQGNhdGVnb3J5IFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgeWVhcnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBjYWxlbmRhciB5ZWFycyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgZWFybGllciBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIHllYXJzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGNhbGVuZGFyIHllYXJzIGFyZSBiZXR3ZWVuIDMxIERlY2VtYmVyIDIwMTMgYW5kIDExIEZlYnJ1YXJ5IDIwMTU/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzKFxuICogICBuZXcgRGF0ZSgyMDE1LCAxLCAxMSksXG4gKiAgIG5ldyBEYXRlKDIwMTMsIDExLCAzMSlcbiAqIClcbiAqIC8vPT4gMlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnQgPSB0b0RhdGUoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBkYXRlUmlnaHQgPSB0b0RhdGUoZGlydHlEYXRlUmlnaHQpO1xuICByZXR1cm4gZGF0ZUxlZnQuZ2V0RnVsbFllYXIoKSAtIGRhdGVSaWdodC5nZXRGdWxsWWVhcigpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiOyAvLyBMaWtlIGBjb21wYXJlQXNjYCBidXQgdXNlcyBsb2NhbCB0aW1lIG5vdCBVVEMsIHdoaWNoIGlzIG5lZWRlZFxuLy8gZm9yIGFjY3VyYXRlIGVxdWFsaXR5IGNvbXBhcmlzb25zIG9mIFVUQyB0aW1lc3RhbXBzIHRoYXQgZW5kIHVwXG4vLyBoYXZpbmcgdGhlIHNhbWUgcmVwcmVzZW50YXRpb24gaW4gbG9jYWwgdGltZSwgZS5nLiBvbmUgaG91ciBiZWZvcmVcbi8vIERTVCBlbmRzIHZzLiB0aGUgaW5zdGFudCB0aGF0IERTVCBlbmRzLlxuZnVuY3Rpb24gY29tcGFyZUxvY2FsQXNjKGRhdGVMZWZ0LCBkYXRlUmlnaHQpIHtcbiAgdmFyIGRpZmYgPSBkYXRlTGVmdC5nZXRGdWxsWWVhcigpIC0gZGF0ZVJpZ2h0LmdldEZ1bGxZZWFyKCkgfHwgZGF0ZUxlZnQuZ2V0TW9udGgoKSAtIGRhdGVSaWdodC5nZXRNb250aCgpIHx8IGRhdGVMZWZ0LmdldERhdGUoKSAtIGRhdGVSaWdodC5nZXREYXRlKCkgfHwgZGF0ZUxlZnQuZ2V0SG91cnMoKSAtIGRhdGVSaWdodC5nZXRIb3VycygpIHx8IGRhdGVMZWZ0LmdldE1pbnV0ZXMoKSAtIGRhdGVSaWdodC5nZXRNaW51dGVzKCkgfHwgZGF0ZUxlZnQuZ2V0U2Vjb25kcygpIC0gZGF0ZVJpZ2h0LmdldFNlY29uZHMoKSB8fCBkYXRlTGVmdC5nZXRNaWxsaXNlY29uZHMoKSAtIGRhdGVSaWdodC5nZXRNaWxsaXNlY29uZHMoKTtcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9IGVsc2UgaWYgKGRpZmYgPiAwKSB7XG4gICAgcmV0dXJuIDE7XG4gICAgLy8gUmV0dXJuIDAgaWYgZGlmZiBpcyAwOyByZXR1cm4gTmFOIGlmIGRpZmYgaXMgTmFOXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGRpZmY7XG4gIH1cbn1cblxuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5EYXlzXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGZ1bGwgZGF5cyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGZ1bGwgZGF5IHBlcmlvZHMgYmV0d2VlbiB0d28gZGF0ZXMuIEZyYWN0aW9uYWwgZGF5cyBhcmVcbiAqIHRydW5jYXRlZCB0b3dhcmRzIHplcm8uXG4gKlxuICogT25lIFwiZnVsbCBkYXlcIiBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiBhIGxvY2FsIHRpbWUgaW4gb25lIGRheSB0byB0aGUgc2FtZVxuICogbG9jYWwgdGltZSBvbiB0aGUgbmV4dCBvciBwcmV2aW91cyBkYXkuIEEgZnVsbCBkYXkgY2FuIHNvbWV0aW1lcyBiZSBsZXNzIHRoYW5cbiAqIG9yIG1vcmUgdGhhbiAyNCBob3VycyBpZiBhIGRheWxpZ2h0IHNhdmluZ3MgY2hhbmdlIGhhcHBlbnMgYmV0d2VlbiB0d28gZGF0ZXMuXG4gKlxuICogVG8gaWdub3JlIERTVCBhbmQgb25seSBtZWFzdXJlIGV4YWN0IDI0LWhvdXIgcGVyaW9kcywgdXNlIHRoaXMgaW5zdGVhZDpcbiAqIGBNYXRoLmZsb29yKGRpZmZlcmVuY2VJbkhvdXJzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpLzI0KXwwYC5cbiAqXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIGVhcmxpZXIgZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBmdWxsIGRheXMgYWNjb3JkaW5nIHRvIHRoZSBsb2NhbCB0aW1lem9uZVxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBmdWxsIGRheXMgYXJlIGJldHdlZW5cbiAqIC8vIDIgSnVseSAyMDExIDIzOjAwOjAwIGFuZCAyIEp1bHkgMjAxMiAwMDowMDowMD9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkRheXMoXG4gKiAgIG5ldyBEYXRlKDIwMTIsIDYsIDIsIDAsIDApLFxuICogICBuZXcgRGF0ZSgyMDExLCA2LCAyLCAyMywgMClcbiAqIClcbiAqIC8vPT4gMzY1XG4gKiAvLyBIb3cgbWFueSBmdWxsIGRheXMgYXJlIGJldHdlZW5cbiAqIC8vIDIgSnVseSAyMDExIDIzOjU5OjAwIGFuZCAzIEp1bHkgMjAxMSAwMDowMTowMD9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkRheXMoXG4gKiAgIG5ldyBEYXRlKDIwMTEsIDYsIDMsIDAsIDEpLFxuICogICBuZXcgRGF0ZSgyMDExLCA2LCAyLCAyMywgNTkpXG4gKiApXG4gKiAvLz0+IDBcbiAqIC8vIEhvdyBtYW55IGZ1bGwgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMSBNYXJjaCAyMDIwIDA6MDAgYW5kIDEgSnVuZSAyMDIwIDA6MDAgP1xuICogLy8gTm90ZTogYmVjYXVzZSBsb2NhbCB0aW1lIGlzIHVzZWQsIHRoZVxuICogLy8gcmVzdWx0IHdpbGwgYWx3YXlzIGJlIDkyIGRheXMsIGV2ZW4gaW5cbiAqIC8vIHRpbWUgem9uZXMgd2hlcmUgRFNUIHN0YXJ0cyBhbmQgdGhlXG4gKiAvLyBwZXJpb2QgaGFzIG9ubHkgOTIqMjQtMSBob3Vycy5cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkRheXMoXG4gKiAgIG5ldyBEYXRlKDIwMjAsIDUsIDEpLFxuICogICBuZXcgRGF0ZSgyMDIwLCAyLCAxKVxuICogKVxuLy89PiA5MlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5EYXlzKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnQgPSB0b0RhdGUoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBkYXRlUmlnaHQgPSB0b0RhdGUoZGlydHlEYXRlUmlnaHQpO1xuICB2YXIgc2lnbiA9IGNvbXBhcmVMb2NhbEFzYyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgdmFyIGRpZmZlcmVuY2UgPSBNYXRoLmFicyhkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMoZGF0ZUxlZnQsIGRhdGVSaWdodCkpO1xuICBkYXRlTGVmdC5zZXREYXRlKGRhdGVMZWZ0LmdldERhdGUoKSAtIHNpZ24gKiBkaWZmZXJlbmNlKTtcblxuICAvLyBNYXRoLmFicyhkaWZmIGluIGZ1bGwgZGF5cyAtIGRpZmYgaW4gY2FsZW5kYXIgZGF5cykgPT09IDEgaWYgbGFzdCBjYWxlbmRhciBkYXkgaXMgbm90IGZ1bGxcbiAgLy8gSWYgc28sIHJlc3VsdCBtdXN0IGJlIGRlY3JlYXNlZCBieSAxIGluIGFic29sdXRlIHZhbHVlXG4gIHZhciBpc0xhc3REYXlOb3RGdWxsID0gTnVtYmVyKGNvbXBhcmVMb2NhbEFzYyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSA9PT0gLXNpZ24pO1xuICB2YXIgcmVzdWx0ID0gc2lnbiAqIChkaWZmZXJlbmNlIC0gaXNMYXN0RGF5Tm90RnVsbCk7XG4gIC8vIFByZXZlbnQgbmVnYXRpdmUgemVyb1xuICByZXR1cm4gcmVzdWx0ID09PSAwID8gMCA6IHJlc3VsdDtcbn0iLCJpbXBvcnQgeyBtaWxsaXNlY29uZHNJbkhvdXIgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXRSb3VuZGluZ01ldGhvZCB9IGZyb20gXCIuLi9fbGliL3JvdW5kaW5nTWV0aG9kcy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5Ib3Vyc1xuICogQGNhdGVnb3J5IEhvdXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgaG91cnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBob3VycyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgZWFybGllciBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5yb3VuZGluZ01ldGhvZD0ndHJ1bmMnXSAtIGEgcm91bmRpbmcgbWV0aG9kIChgY2VpbGAsIGBmbG9vcmAsIGByb3VuZGAgb3IgYHRydW5jYClcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgaG91cnNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgaG91cnMgYXJlIGJldHdlZW4gMiBKdWx5IDIwMTQgMDY6NTA6MDAgYW5kIDIgSnVseSAyMDE0IDE5OjAwOjAwP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluSG91cnMoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDE5LCAwKSxcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgNiwgNTApXG4gKiApXG4gKiAvLz0+IDEyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbkhvdXJzKGRhdGVMZWZ0LCBkYXRlUmlnaHQsIG9wdGlvbnMpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkaWZmID0gZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpIC8gbWlsbGlzZWNvbmRzSW5Ib3VyO1xuICByZXR1cm4gZ2V0Um91bmRpbmdNZXRob2Qob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnJvdW5kaW5nTWV0aG9kKShkaWZmKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5DYWxlbmRhcklTT1dlZWtZZWFycyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJJU09XZWVrWWVhcnMvaW5kZXguanNcIjtcbmltcG9ydCBjb21wYXJlQXNjIGZyb20gXCIuLi9jb21wYXJlQXNjL2luZGV4LmpzXCI7XG5pbXBvcnQgc3ViSVNPV2Vla1llYXJzIGZyb20gXCIuLi9zdWJJU09XZWVrWWVhcnMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbklTT1dlZWtZZWFyc1xuICogQGNhdGVnb3J5IElTTyBXZWVrLU51bWJlcmluZyBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGZ1bGwgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgZnVsbCBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBlYXJsaWVyIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgZnVsbCBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgZnVsbCBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgYXJlIGJldHdlZW4gMSBKYW51YXJ5IDIwMTAgYW5kIDEgSmFudWFyeSAyMDEyP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluSVNPV2Vla1llYXJzKFxuICogICBuZXcgRGF0ZSgyMDEyLCAwLCAxKSxcbiAqICAgbmV3IERhdGUoMjAxMCwgMCwgMSlcbiAqIClcbiAqIC8vPT4gMVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5JU09XZWVrWWVhcnMoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdCA9IHRvRGF0ZShkaXJ0eURhdGVMZWZ0KTtcbiAgdmFyIGRhdGVSaWdodCA9IHRvRGF0ZShkaXJ0eURhdGVSaWdodCk7XG4gIHZhciBzaWduID0gY29tcGFyZUFzYyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgdmFyIGRpZmZlcmVuY2UgPSBNYXRoLmFicyhkaWZmZXJlbmNlSW5DYWxlbmRhcklTT1dlZWtZZWFycyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSk7XG4gIGRhdGVMZWZ0ID0gc3ViSVNPV2Vla1llYXJzKGRhdGVMZWZ0LCBzaWduICogZGlmZmVyZW5jZSk7XG5cbiAgLy8gTWF0aC5hYnMoZGlmZiBpbiBmdWxsIElTTyB5ZWFycyAtIGRpZmYgaW4gY2FsZW5kYXIgSVNPIHllYXJzKSA9PT0gMVxuICAvLyBpZiBsYXN0IGNhbGVuZGFyIElTTyB5ZWFyIGlzIG5vdCBmdWxsXG4gIC8vIElmIHNvLCByZXN1bHQgbXVzdCBiZSBkZWNyZWFzZWQgYnkgMSBpbiBhYnNvbHV0ZSB2YWx1ZVxuICB2YXIgaXNMYXN0SVNPV2Vla1llYXJOb3RGdWxsID0gTnVtYmVyKGNvbXBhcmVBc2MoZGF0ZUxlZnQsIGRhdGVSaWdodCkgPT09IC1zaWduKTtcbiAgdmFyIHJlc3VsdCA9IHNpZ24gKiAoZGlmZmVyZW5jZSAtIGlzTGFzdElTT1dlZWtZZWFyTm90RnVsbCk7XG4gIC8vIFByZXZlbnQgbmVnYXRpdmUgemVyb1xuICByZXR1cm4gcmVzdWx0ID09PSAwID8gMCA6IHJlc3VsdDtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbk1pbGxpc2Vjb25kc1xuICogQGNhdGVnb3J5IE1pbGxpc2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgZWFybGllciBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBtaWxsaXNlY29uZHMgYXJlIGJldHdlZW5cbiAqIC8vIDIgSnVseSAyMDE0IDEyOjMwOjIwLjYwMCBhbmQgMiBKdWx5IDIwMTQgMTI6MzA6MjEuNzAwP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzKFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyLCAxMiwgMzAsIDIxLCA3MDApLFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyLCAxMiwgMzAsIDIwLCA2MDApXG4gKiApXG4gKiAvLz0+IDExMDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHJldHVybiB0b0RhdGUoZGF0ZUxlZnQpLmdldFRpbWUoKSAtIHRvRGF0ZShkYXRlUmlnaHQpLmdldFRpbWUoKTtcbn0iLCJpbXBvcnQgeyBtaWxsaXNlY29uZHNJbk1pbnV0ZSB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldFJvdW5kaW5nTWV0aG9kIH0gZnJvbSBcIi4uL19saWIvcm91bmRpbmdNZXRob2RzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbk1pbnV0ZXNcbiAqIEBjYXRlZ29yeSBNaW51dGUgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgbWludXRlcyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgc2lnbmVkIG51bWJlciBvZiBmdWxsIChyb3VuZGVkIHRvd2FyZHMgMCkgbWludXRlcyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgZWFybGllciBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5yb3VuZGluZ01ldGhvZD0ndHJ1bmMnXSAtIGEgcm91bmRpbmcgbWV0aG9kIChgY2VpbGAsIGBmbG9vcmAsIGByb3VuZGAgb3IgYHRydW5jYClcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgbWludXRlc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBtaW51dGVzIGFyZSBiZXR3ZWVuIDIgSnVseSAyMDE0IDEyOjA3OjU5IGFuZCAyIEp1bHkgMjAxNCAxMjoyMDowMD9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbk1pbnV0ZXMoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDEyLCAyMCwgMCksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDEyLCA3LCA1OSlcbiAqIClcbiAqIC8vPT4gMTJcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgbWludXRlcyBhcmUgYmV0d2VlbiAxMDowMTo1OSBhbmQgMTA6MDA6MDBcbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbk1pbnV0ZXMoXG4gKiAgIG5ldyBEYXRlKDIwMDAsIDAsIDEsIDEwLCAwLCAwKSxcbiAqICAgbmV3IERhdGUoMjAwMCwgMCwgMSwgMTAsIDEsIDU5KVxuICogKVxuICogLy89PiAtMVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5NaW51dGVzKGRhdGVMZWZ0LCBkYXRlUmlnaHQsIG9wdGlvbnMpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkaWZmID0gZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpIC8gbWlsbGlzZWNvbmRzSW5NaW51dGU7XG4gIHJldHVybiBnZXRSb3VuZGluZ01ldGhvZChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMucm91bmRpbmdNZXRob2QpKGRpZmYpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbkNhbGVuZGFyTW9udGhzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocy9pbmRleC5qc1wiO1xuaW1wb3J0IGNvbXBhcmVBc2MgZnJvbSBcIi4uL2NvbXBhcmVBc2MvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgaXNMYXN0RGF5T2ZNb250aCBmcm9tIFwiLi4vaXNMYXN0RGF5T2ZNb250aC9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5Nb250aHNcbiAqIEBjYXRlZ29yeSBNb250aCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBmdWxsIG1vbnRocyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGZ1bGwgbW9udGhzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzIHVzaW5nIHRydW5jIGFzIGEgZGVmYXVsdCByb3VuZGluZyBtZXRob2QuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIGVhcmxpZXIgZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBmdWxsIG1vbnRoc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBmdWxsIG1vbnRocyBhcmUgYmV0d2VlbiAzMSBKYW51YXJ5IDIwMTQgYW5kIDEgU2VwdGVtYmVyIDIwMTQ/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5Nb250aHMobmV3IERhdGUoMjAxNCwgOCwgMSksIG5ldyBEYXRlKDIwMTQsIDAsIDMxKSlcbiAqIC8vPT4gN1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5Nb250aHMoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdCA9IHRvRGF0ZShkaXJ0eURhdGVMZWZ0KTtcbiAgdmFyIGRhdGVSaWdodCA9IHRvRGF0ZShkaXJ0eURhdGVSaWdodCk7XG4gIHZhciBzaWduID0gY29tcGFyZUFzYyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgdmFyIGRpZmZlcmVuY2UgPSBNYXRoLmFicyhkaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSk7XG4gIHZhciByZXN1bHQ7XG5cbiAgLy8gQ2hlY2sgZm9yIHRoZSBkaWZmZXJlbmNlIG9mIGxlc3MgdGhhbiBtb250aFxuICBpZiAoZGlmZmVyZW5jZSA8IDEpIHtcbiAgICByZXN1bHQgPSAwO1xuICB9IGVsc2Uge1xuICAgIGlmIChkYXRlTGVmdC5nZXRNb250aCgpID09PSAxICYmIGRhdGVMZWZ0LmdldERhdGUoKSA+IDI3KSB7XG4gICAgICAvLyBUaGlzIHdpbGwgY2hlY2sgaWYgdGhlIGRhdGUgaXMgZW5kIG9mIEZlYiBhbmQgYXNzaWduIGEgaGlnaGVyIGVuZCBvZiBtb250aCBkYXRlXG4gICAgICAvLyB0byBjb21wYXJlIGl0IHdpdGggSmFuXG4gICAgICBkYXRlTGVmdC5zZXREYXRlKDMwKTtcbiAgICB9XG4gICAgZGF0ZUxlZnQuc2V0TW9udGgoZGF0ZUxlZnQuZ2V0TW9udGgoKSAtIHNpZ24gKiBkaWZmZXJlbmNlKTtcblxuICAgIC8vIE1hdGguYWJzKGRpZmYgaW4gZnVsbCBtb250aHMgLSBkaWZmIGluIGNhbGVuZGFyIG1vbnRocykgPT09IDEgaWYgbGFzdCBjYWxlbmRhciBtb250aCBpcyBub3QgZnVsbFxuICAgIC8vIElmIHNvLCByZXN1bHQgbXVzdCBiZSBkZWNyZWFzZWQgYnkgMSBpbiBhYnNvbHV0ZSB2YWx1ZVxuICAgIHZhciBpc0xhc3RNb250aE5vdEZ1bGwgPSBjb21wYXJlQXNjKGRhdGVMZWZ0LCBkYXRlUmlnaHQpID09PSAtc2lnbjtcblxuICAgIC8vIENoZWNrIGZvciBjYXNlcyBvZiBvbmUgZnVsbCBjYWxlbmRhciBtb250aFxuICAgIGlmIChpc0xhc3REYXlPZk1vbnRoKHRvRGF0ZShkaXJ0eURhdGVMZWZ0KSkgJiYgZGlmZmVyZW5jZSA9PT0gMSAmJiBjb21wYXJlQXNjKGRpcnR5RGF0ZUxlZnQsIGRhdGVSaWdodCkgPT09IDEpIHtcbiAgICAgIGlzTGFzdE1vbnRoTm90RnVsbCA9IGZhbHNlO1xuICAgIH1cbiAgICByZXN1bHQgPSBzaWduICogKGRpZmZlcmVuY2UgLSBOdW1iZXIoaXNMYXN0TW9udGhOb3RGdWxsKSk7XG4gIH1cblxuICAvLyBQcmV2ZW50IG5lZ2F0aXZlIHplcm9cbiAgcmV0dXJuIHJlc3VsdCA9PT0gMCA/IDAgOiByZXN1bHQ7XG59IiwiaW1wb3J0IGRpZmZlcmVuY2VJbk1vbnRocyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluTW9udGhzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0Um91bmRpbmdNZXRob2QgfSBmcm9tIFwiLi4vX2xpYi9yb3VuZGluZ01ldGhvZHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluUXVhcnRlcnNcbiAqIEBjYXRlZ29yeSBRdWFydGVyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIHF1YXJ0ZXJzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgcXVhcnRlcnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIGVhcmxpZXIgZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdGlvbnMucm91bmRpbmdNZXRob2Q9J3RydW5jJ10gLSBhIHJvdW5kaW5nIG1ldGhvZCAoYGNlaWxgLCBgZmxvb3JgLCBgcm91bmRgIG9yIGB0cnVuY2ApXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGZ1bGwgcXVhcnRlcnNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgZnVsbCBxdWFydGVycyBhcmUgYmV0d2VlbiAzMSBEZWNlbWJlciAyMDEzIGFuZCAyIEp1bHkgMjAxND9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJblF1YXJ0ZXJzKG5ldyBEYXRlKDIwMTQsIDYsIDIpLCBuZXcgRGF0ZSgyMDEzLCAxMSwgMzEpKVxuICogLy89PiAyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJblF1YXJ0ZXJzKGRhdGVMZWZ0LCBkYXRlUmlnaHQsIG9wdGlvbnMpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkaWZmID0gZGlmZmVyZW5jZUluTW9udGhzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpIC8gMztcbiAgcmV0dXJuIGdldFJvdW5kaW5nTWV0aG9kKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5yb3VuZGluZ01ldGhvZCkoZGlmZik7XG59IiwiaW1wb3J0IGRpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0Um91bmRpbmdNZXRob2QgfSBmcm9tIFwiLi4vX2xpYi9yb3VuZGluZ01ldGhvZHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluU2Vjb25kc1xuICogQGNhdGVnb3J5IFNlY29uZCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBzZWNvbmRzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgZWFybGllciBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5yb3VuZGluZ01ldGhvZD0ndHJ1bmMnXSAtIGEgcm91bmRpbmcgbWV0aG9kIChgY2VpbGAsIGBmbG9vcmAsIGByb3VuZGAgb3IgYHRydW5jYClcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2Ygc2Vjb25kc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBzZWNvbmRzIGFyZSBiZXR3ZWVuXG4gKiAvLyAyIEp1bHkgMjAxNCAxMjozMDowNy45OTkgYW5kIDIgSnVseSAyMDE0IDEyOjMwOjIwLjAwMD9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJblNlY29uZHMoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDEyLCAzMCwgMjAsIDApLFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyLCAxMiwgMzAsIDcsIDk5OSlcbiAqIClcbiAqIC8vPT4gMTJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlmZmVyZW5jZUluU2Vjb25kcyhkYXRlTGVmdCwgZGF0ZVJpZ2h0LCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGlmZiA9IGRpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSAvIDEwMDA7XG4gIHJldHVybiBnZXRSb3VuZGluZ01ldGhvZChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMucm91bmRpbmdNZXRob2QpKGRpZmYpO1xufSIsImltcG9ydCBkaWZmZXJlbmNlSW5EYXlzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5EYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0Um91bmRpbmdNZXRob2QgfSBmcm9tIFwiLi4vX2xpYi9yb3VuZGluZ01ldGhvZHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluV2Vla3NcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGZ1bGwgd2Vla3MgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBmdWxsIHdlZWtzIGJldHdlZW4gdHdvIGRhdGVzLiBGcmFjdGlvbmFsIHdlZWtzIGFyZVxuICogdHJ1bmNhdGVkIHRvd2FyZHMgemVybyBieSBkZWZhdWx0LlxuICpcbiAqIE9uZSBcImZ1bGwgd2Vla1wiIGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIGEgbG9jYWwgdGltZSBpbiBvbmUgZGF5IHRvIHRoZSBzYW1lXG4gKiBsb2NhbCB0aW1lIDcgZGF5cyBlYXJsaWVyIG9yIGxhdGVyLiBBIGZ1bGwgd2VlayBjYW4gc29tZXRpbWVzIGJlIGxlc3MgdGhhblxuICogb3IgbW9yZSB0aGFuIDcqMjQgaG91cnMgaWYgYSBkYXlsaWdodCBzYXZpbmdzIGNoYW5nZSBoYXBwZW5zIGJldHdlZW4gdHdvIGRhdGVzLlxuICpcbiAqIFRvIGlnbm9yZSBEU1QgYW5kIG9ubHkgbWVhc3VyZSBleGFjdCA3KjI0LWhvdXIgcGVyaW9kcywgdXNlIHRoaXMgaW5zdGVhZDpcbiAqIGBNYXRoLmZsb29yKGRpZmZlcmVuY2VJbkhvdXJzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpLyg3KjI0KSl8MGAuXG4gKlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBlYXJsaWVyIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRpb25zLnJvdW5kaW5nTWV0aG9kPSd0cnVuYyddIC0gYSByb3VuZGluZyBtZXRob2QgKGBjZWlsYCwgYGZsb29yYCwgYHJvdW5kYCBvciBgdHJ1bmNgKVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBmdWxsIHdlZWtzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGZ1bGwgd2Vla3MgYXJlIGJldHdlZW4gNSBKdWx5IDIwMTQgYW5kIDIwIEp1bHkgMjAxND9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbldlZWtzKG5ldyBEYXRlKDIwMTQsIDYsIDIwKSwgbmV3IERhdGUoMjAxNCwgNiwgNSkpXG4gKiAvLz0+IDJcbiAqXG4gKiAvLyBIb3cgbWFueSBmdWxsIHdlZWtzIGFyZSBiZXR3ZWVuXG4gKiAvLyAxIE1hcmNoIDIwMjAgMDowMCBhbmQgNiBKdW5lIDIwMjAgMDowMCA/XG4gKiAvLyBOb3RlOiBiZWNhdXNlIGxvY2FsIHRpbWUgaXMgdXNlZCwgdGhlXG4gKiAvLyByZXN1bHQgd2lsbCBhbHdheXMgYmUgOCB3ZWVrcyAoNTQgZGF5cyksXG4gKiAvLyBldmVuIGlmIERTVCBzdGFydHMgYW5kIHRoZSBwZXJpb2QgaGFzXG4gKiAvLyBvbmx5IDU0KjI0LTEgaG91cnMuXG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5XZWVrcyhcbiAqICAgbmV3IERhdGUoMjAyMCwgNSwgMSksXG4gKiAgIG5ldyBEYXRlKDIwMjAsIDIsIDYpXG4gKiApXG4gKiAvLz0+IDhcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlmZmVyZW5jZUluV2Vla3MoZGF0ZUxlZnQsIGRhdGVSaWdodCwgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRpZmYgPSBkaWZmZXJlbmNlSW5EYXlzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpIC8gNztcbiAgcmV0dXJuIGdldFJvdW5kaW5nTWV0aG9kKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5yb3VuZGluZ01ldGhvZCkoZGlmZik7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluQ2FsZW5kYXJZZWFycyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJZZWFycy9pbmRleC5qc1wiO1xuaW1wb3J0IGNvbXBhcmVBc2MgZnJvbSBcIi4uL2NvbXBhcmVBc2MvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJblllYXJzXG4gKiBAY2F0ZWdvcnkgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBmdWxsIHllYXJzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgZnVsbCB5ZWFycyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgZWFybGllciBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGZ1bGwgeWVhcnNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgZnVsbCB5ZWFycyBhcmUgYmV0d2VlbiAzMSBEZWNlbWJlciAyMDEzIGFuZCAxMSBGZWJydWFyeSAyMDE1P1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluWWVhcnMobmV3IERhdGUoMjAxNSwgMSwgMTEpLCBuZXcgRGF0ZSgyMDEzLCAxMSwgMzEpKVxuICogLy89PiAxXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJblllYXJzKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnQgPSB0b0RhdGUoZGlydHlEYXRlTGVmdCk7XG4gIHZhciBkYXRlUmlnaHQgPSB0b0RhdGUoZGlydHlEYXRlUmlnaHQpO1xuICB2YXIgc2lnbiA9IGNvbXBhcmVBc2MoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gIHZhciBkaWZmZXJlbmNlID0gTWF0aC5hYnMoZGlmZmVyZW5jZUluQ2FsZW5kYXJZZWFycyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSk7XG5cbiAgLy8gU2V0IGJvdGggZGF0ZXMgdG8gYSB2YWxpZCBsZWFwIHllYXIgZm9yIGFjY3VyYXRlIGNvbXBhcmlzb24gd2hlbiBkZWFsaW5nXG4gIC8vIHdpdGggbGVhcCBkYXlzXG4gIGRhdGVMZWZ0LnNldEZ1bGxZZWFyKDE1ODQpO1xuICBkYXRlUmlnaHQuc2V0RnVsbFllYXIoMTU4NCk7XG5cbiAgLy8gTWF0aC5hYnMoZGlmZiBpbiBmdWxsIHllYXJzIC0gZGlmZiBpbiBjYWxlbmRhciB5ZWFycykgPT09IDEgaWYgbGFzdCBjYWxlbmRhciB5ZWFyIGlzIG5vdCBmdWxsXG4gIC8vIElmIHNvLCByZXN1bHQgbXVzdCBiZSBkZWNyZWFzZWQgYnkgMSBpbiBhYnNvbHV0ZSB2YWx1ZVxuICB2YXIgaXNMYXN0WWVhck5vdEZ1bGwgPSBjb21wYXJlQXNjKGRhdGVMZWZ0LCBkYXRlUmlnaHQpID09PSAtc2lnbjtcbiAgdmFyIHJlc3VsdCA9IHNpZ24gKiAoZGlmZmVyZW5jZSAtIE51bWJlcihpc0xhc3RZZWFyTm90RnVsbCkpO1xuICAvLyBQcmV2ZW50IG5lZ2F0aXZlIHplcm9cbiAgcmV0dXJuIHJlc3VsdCA9PT0gMCA/IDAgOiByZXN1bHQ7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlYWNoRGF5T2ZJbnRlcnZhbFxuICogQGNhdGVnb3J5IEludGVydmFsIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgYXJyYXkgb2YgZGF0ZXMgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSBpbnRlcnZhbC5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgYXJyYXkgb2YgZGF0ZXMgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSBpbnRlcnZhbC5cbiAqXG4gKiBAcGFyYW0ge0ludGVydmFsfSBpbnRlcnZhbCAtIHRoZSBpbnRlcnZhbC4gU2VlIFtJbnRlcnZhbF17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9JbnRlcnZhbH1cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRpb25zLnN0ZXA9MV0gLSB0aGUgc3RlcCB0byBpbmNyZW1lbnQgYnkuIFRoZSB2YWx1ZSBzaG91bGQgYmUgbW9yZSB0aGFuIDEuXG4gKiBAcmV0dXJucyB7RGF0ZVtdfSB0aGUgYXJyYXkgd2l0aCBzdGFydHMgb2YgZGF5cyBmcm9tIHRoZSBkYXkgb2YgdGhlIGludGVydmFsIHN0YXJ0IHRvIHRoZSBkYXkgb2YgdGhlIGludGVydmFsIGVuZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5zdGVwYCBtdXN0IGJlIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiAxXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBUaGUgc3RhcnQgb2YgYW4gaW50ZXJ2YWwgY2Fubm90IGJlIGFmdGVyIGl0cyBlbmRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IERhdGUgaW4gaW50ZXJ2YWwgY2Fubm90IGJlIGBJbnZhbGlkIERhdGVgXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEVhY2ggZGF5IGJldHdlZW4gNiBPY3RvYmVyIDIwMTQgYW5kIDEwIE9jdG9iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVhY2hEYXlPZkludGVydmFsKHtcbiAqICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDksIDYpLFxuICogICBlbmQ6IG5ldyBEYXRlKDIwMTQsIDksIDEwKVxuICogfSlcbiAqIC8vPT4gW1xuICogLy8gICBNb24gT2N0IDA2IDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFR1ZSBPY3QgMDcgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgV2VkIE9jdCAwOCAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBUaHUgT2N0IDA5IDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIEZyaSBPY3QgMTAgMjAxNCAwMDowMDowMFxuICogLy8gXVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlYWNoRGF5T2ZJbnRlcnZhbChkaXJ0eUludGVydmFsLCBvcHRpb25zKSB7XG4gIHZhciBfb3B0aW9ucyRzdGVwO1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGludGVydmFsID0gZGlydHlJbnRlcnZhbCB8fCB7fTtcbiAgdmFyIHN0YXJ0RGF0ZSA9IHRvRGF0ZShpbnRlcnZhbC5zdGFydCk7XG4gIHZhciBlbmREYXRlID0gdG9EYXRlKGludGVydmFsLmVuZCk7XG4gIHZhciBlbmRUaW1lID0gZW5kRGF0ZS5nZXRUaW1lKCk7XG5cbiAgLy8gVGhyb3cgYW4gZXhjZXB0aW9uIGlmIHN0YXJ0IGRhdGUgaXMgYWZ0ZXIgZW5kIGRhdGUgb3IgaWYgYW55IGRhdGUgaXMgYEludmFsaWQgRGF0ZWBcbiAgaWYgKCEoc3RhcnREYXRlLmdldFRpbWUoKSA8PSBlbmRUaW1lKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIGludGVydmFsJyk7XG4gIH1cbiAgdmFyIGRhdGVzID0gW107XG4gIHZhciBjdXJyZW50RGF0ZSA9IHN0YXJ0RGF0ZTtcbiAgY3VycmVudERhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBzdGVwID0gTnVtYmVyKChfb3B0aW9ucyRzdGVwID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnN0ZXApICE9PSBudWxsICYmIF9vcHRpb25zJHN0ZXAgIT09IHZvaWQgMCA/IF9vcHRpb25zJHN0ZXAgOiAxKTtcbiAgaWYgKHN0ZXAgPCAxIHx8IGlzTmFOKHN0ZXApKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYG9wdGlvbnMuc3RlcGAgbXVzdCBiZSBhIG51bWJlciBncmVhdGVyIHRoYW4gMScpO1xuICB3aGlsZSAoY3VycmVudERhdGUuZ2V0VGltZSgpIDw9IGVuZFRpbWUpIHtcbiAgICBkYXRlcy5wdXNoKHRvRGF0ZShjdXJyZW50RGF0ZSkpO1xuICAgIGN1cnJlbnREYXRlLnNldERhdGUoY3VycmVudERhdGUuZ2V0RGF0ZSgpICsgc3RlcCk7XG4gICAgY3VycmVudERhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIH1cbiAgcmV0dXJuIGRhdGVzO1xufSIsImltcG9ydCBhZGRIb3VycyBmcm9tIFwiLi4vYWRkSG91cnMvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZWFjaEhvdXJPZkludGVydmFsXG4gKiBAY2F0ZWdvcnkgSW50ZXJ2YWwgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBhcnJheSBvZiBob3VycyB3aXRoaW4gdGhlIHNwZWNpZmllZCB0aW1lIGludGVydmFsLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBhcnJheSBvZiBob3VycyB3aXRoaW4gdGhlIHNwZWNpZmllZCB0aW1lIGludGVydmFsLlxuICpcbiAqIEBwYXJhbSB7SW50ZXJ2YWx9IGludGVydmFsIC0gdGhlIGludGVydmFsLiBTZWUgW0ludGVydmFsXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0ludGVydmFsfVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMuc3RlcD0xXSAtIHRoZSBzdGVwIHRvIGluY3JlbWVudCBieS4gVGhlIHZhbHVlIHNob3VsZCBiZSBtb3JlIHRoYW4gMS5cbiAqIEByZXR1cm5zIHtEYXRlW119IHRoZSBhcnJheSB3aXRoIHN0YXJ0cyBvZiBob3VycyBmcm9tIHRoZSBob3VyIG9mIHRoZSBpbnRlcnZhbCBzdGFydCB0byB0aGUgaG91ciBvZiB0aGUgaW50ZXJ2YWwgZW5kXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLnN0ZXBgIG11c3QgYmUgYSBudW1iZXIgZ3JlYXRlciB0aGFuIDFcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IFRoZSBzdGFydCBvZiBhbiBpbnRlcnZhbCBjYW5ub3QgYmUgYWZ0ZXIgaXRzIGVuZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gRGF0ZSBpbiBpbnRlcnZhbCBjYW5ub3QgYmUgYEludmFsaWQgRGF0ZWBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRWFjaCBob3VyIGJldHdlZW4gNiBPY3RvYmVyIDIwMTQsIDEyOjAwIGFuZCA2IE9jdG9iZXIgMjAxNCwgMTU6MDBcbiAqIGNvbnN0IHJlc3VsdCA9IGVhY2hIb3VyT2ZJbnRlcnZhbCh7XG4gKiAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCA5LCA2LCAxMiksXG4gKiAgIGVuZDogbmV3IERhdGUoMjAxNCwgOSwgNiwgMTUpXG4gKiB9KVxuICogLy89PiBbXG4gKiAvLyAgIE1vbiBPY3QgMDYgMjAxNCAxMjowMDowMCxcbiAqIC8vICAgTW9uIE9jdCAwNiAyMDE0IDEzOjAwOjAwLFxuICogLy8gICBNb24gT2N0IDA2IDIwMTQgMTQ6MDA6MDAsXG4gKiAvLyAgIE1vbiBPY3QgMDYgMjAxNCAxNTowMDowMFxuICogLy8gXVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlYWNoSG91ck9mSW50ZXJ2YWwoZGlydHlJbnRlcnZhbCwgb3B0aW9ucykge1xuICB2YXIgX29wdGlvbnMkc3RlcDtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBpbnRlcnZhbCA9IGRpcnR5SW50ZXJ2YWwgfHwge307XG4gIHZhciBzdGFydERhdGUgPSB0b0RhdGUoaW50ZXJ2YWwuc3RhcnQpO1xuICB2YXIgZW5kRGF0ZSA9IHRvRGF0ZShpbnRlcnZhbC5lbmQpO1xuICB2YXIgc3RhcnRUaW1lID0gc3RhcnREYXRlLmdldFRpbWUoKTtcbiAgdmFyIGVuZFRpbWUgPSBlbmREYXRlLmdldFRpbWUoKTtcblxuICAvLyBUaHJvdyBhbiBleGNlcHRpb24gaWYgc3RhcnQgZGF0ZSBpcyBhZnRlciBlbmQgZGF0ZSBvciBpZiBhbnkgZGF0ZSBpcyBgSW52YWxpZCBEYXRlYFxuICBpZiAoIShzdGFydFRpbWUgPD0gZW5kVGltZSkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBpbnRlcnZhbCcpO1xuICB9XG4gIHZhciBkYXRlcyA9IFtdO1xuICB2YXIgY3VycmVudERhdGUgPSBzdGFydERhdGU7XG4gIGN1cnJlbnREYXRlLnNldE1pbnV0ZXMoMCwgMCwgMCk7XG4gIHZhciBzdGVwID0gTnVtYmVyKChfb3B0aW9ucyRzdGVwID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnN0ZXApICE9PSBudWxsICYmIF9vcHRpb25zJHN0ZXAgIT09IHZvaWQgMCA/IF9vcHRpb25zJHN0ZXAgOiAxKTtcbiAgaWYgKHN0ZXAgPCAxIHx8IGlzTmFOKHN0ZXApKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYG9wdGlvbnMuc3RlcGAgbXVzdCBiZSBhIG51bWJlciBncmVhdGVyIHRoYW4gMScpO1xuICB3aGlsZSAoY3VycmVudERhdGUuZ2V0VGltZSgpIDw9IGVuZFRpbWUpIHtcbiAgICBkYXRlcy5wdXNoKHRvRGF0ZShjdXJyZW50RGF0ZSkpO1xuICAgIGN1cnJlbnREYXRlID0gYWRkSG91cnMoY3VycmVudERhdGUsIHN0ZXApO1xuICB9XG4gIHJldHVybiBkYXRlcztcbn0iLCJpbXBvcnQgYWRkTWludXRlcyBmcm9tIFwiLi4vYWRkTWludXRlcy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZk1pbnV0ZSBmcm9tIFwiLi4vc3RhcnRPZk1pbnV0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZWFjaE1pbnV0ZU9mSW50ZXJ2YWxcbiAqIEBjYXRlZ29yeSBJbnRlcnZhbCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGFycmF5IG9mIG1pbnV0ZXMgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSBpbnRlcnZhbC5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybnMgdGhlIGFycmF5IG9mIG1pbnV0ZXMgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSBpbnRlcnZhbC5cbiAqXG4gKiBAcGFyYW0ge0ludGVydmFsfSBpbnRlcnZhbCAtIHRoZSBpbnRlcnZhbC4gU2VlIFtJbnRlcnZhbF17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9JbnRlcnZhbH1cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRpb25zLnN0ZXA9MV0gLSB0aGUgc3RlcCB0byBpbmNyZW1lbnQgYnkuIFRoZSBzdGVwIG11c3QgYmUgZXF1YWwgdG8gb3IgZ3JlYXRlciB0aGFuIDFcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHJldHVybnMge0RhdGVbXX0gdGhlIGFycmF5IHdpdGggc3RhcnRzIG9mIG1pbnV0ZXMgZnJvbSB0aGUgbWludXRlIG9mIHRoZSBpbnRlcnZhbCBzdGFydCB0byB0aGUgbWludXRlIG9mIHRoZSBpbnRlcnZhbCBlbmRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLnN0ZXBgIG11c3QgYmUgYSBudW1iZXIgZXF1YWwgdG8gb3IgZ3JlYXRlciB0aGFuIDFcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IFRoZSBzdGFydCBvZiBhbiBpbnRlcnZhbCBjYW5ub3QgYmUgYWZ0ZXIgaXRzIGVuZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gRGF0ZSBpbiBpbnRlcnZhbCBjYW5ub3QgYmUgYEludmFsaWQgRGF0ZWBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRWFjaCBtaW51dGUgYmV0d2VlbiAxNCBPY3RvYmVyIDIwMjAsIDEzOjAwIGFuZCAxNCBPY3RvYmVyIDIwMjAsIDEzOjAzXG4gKiBjb25zdCByZXN1bHQgPSBlYWNoTWludXRlT2ZJbnRlcnZhbCh7XG4gKiAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCA5LCAxNCwgMTMpLFxuICogICBlbmQ6IG5ldyBEYXRlKDIwMTQsIDksIDE0LCAxMywgMylcbiAqIH0pXG4gKiAvLz0+IFtcbiAqIC8vICAgV2VkIE9jdCAxNCAyMDE0IDEzOjAwOjAwLFxuICogLy8gICBXZWQgT2N0IDE0IDIwMTQgMTM6MDE6MDAsXG4gKiAvLyAgIFdlZCBPY3QgMTQgMjAxNCAxMzowMjowMCxcbiAqIC8vICAgV2VkIE9jdCAxNCAyMDE0IDEzOjAzOjAwXG4gKiAvLyBdXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVhY2hNaW51dGVPZkludGVydmFsKGludGVydmFsLCBvcHRpb25zKSB7XG4gIHZhciBfb3B0aW9ucyRzdGVwO1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIHN0YXJ0RGF0ZSA9IHN0YXJ0T2ZNaW51dGUodG9EYXRlKGludGVydmFsLnN0YXJ0KSk7XG4gIHZhciBlbmREYXRlID0gdG9EYXRlKGludGVydmFsLmVuZCk7XG4gIHZhciBzdGFydFRpbWUgPSBzdGFydERhdGUuZ2V0VGltZSgpO1xuICB2YXIgZW5kVGltZSA9IGVuZERhdGUuZ2V0VGltZSgpO1xuICBpZiAoc3RhcnRUaW1lID49IGVuZFRpbWUpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBpbnRlcnZhbCcpO1xuICB9XG4gIHZhciBkYXRlcyA9IFtdO1xuICB2YXIgY3VycmVudERhdGUgPSBzdGFydERhdGU7XG4gIHZhciBzdGVwID0gTnVtYmVyKChfb3B0aW9ucyRzdGVwID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnN0ZXApICE9PSBudWxsICYmIF9vcHRpb25zJHN0ZXAgIT09IHZvaWQgMCA/IF9vcHRpb25zJHN0ZXAgOiAxKTtcbiAgaWYgKHN0ZXAgPCAxIHx8IGlzTmFOKHN0ZXApKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYG9wdGlvbnMuc3RlcGAgbXVzdCBiZSBhIG51bWJlciBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gMScpO1xuICB3aGlsZSAoY3VycmVudERhdGUuZ2V0VGltZSgpIDw9IGVuZFRpbWUpIHtcbiAgICBkYXRlcy5wdXNoKHRvRGF0ZShjdXJyZW50RGF0ZSkpO1xuICAgIGN1cnJlbnREYXRlID0gYWRkTWludXRlcyhjdXJyZW50RGF0ZSwgc3RlcCk7XG4gIH1cbiAgcmV0dXJuIGRhdGVzO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZWFjaE1vbnRoT2ZJbnRlcnZhbFxuICogQGNhdGVnb3J5IEludGVydmFsIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgYXJyYXkgb2YgbW9udGhzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHRpbWUgaW50ZXJ2YWwuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGFycmF5IG9mIG1vbnRocyB3aXRoaW4gdGhlIHNwZWNpZmllZCB0aW1lIGludGVydmFsLlxuICpcbiAqIEBwYXJhbSB7SW50ZXJ2YWx9IGludGVydmFsIC0gdGhlIGludGVydmFsLiBTZWUgW0ludGVydmFsXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0ludGVydmFsfVxuICogQHJldHVybnMge0RhdGVbXX0gdGhlIGFycmF5IHdpdGggc3RhcnRzIG9mIG1vbnRocyBmcm9tIHRoZSBtb250aCBvZiB0aGUgaW50ZXJ2YWwgc3RhcnQgdG8gdGhlIG1vbnRoIG9mIHRoZSBpbnRlcnZhbCBlbmRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gVGhlIHN0YXJ0IG9mIGFuIGludGVydmFsIGNhbm5vdCBiZSBhZnRlciBpdHMgZW5kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBEYXRlIGluIGludGVydmFsIGNhbm5vdCBiZSBgSW52YWxpZCBEYXRlYFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFYWNoIG1vbnRoIGJldHdlZW4gNiBGZWJydWFyeSAyMDE0IGFuZCAxMCBBdWd1c3QgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVhY2hNb250aE9mSW50ZXJ2YWwoe1xuICogICBzdGFydDogbmV3IERhdGUoMjAxNCwgMSwgNiksXG4gKiAgIGVuZDogbmV3IERhdGUoMjAxNCwgNywgMTApXG4gKiB9KVxuICogLy89PiBbXG4gKiAvLyAgIFNhdCBGZWIgMDEgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgU2F0IE1hciAwMSAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBUdWUgQXByIDAxIDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFRodSBNYXkgMDEgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgU3VuIEp1biAwMSAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBUdWUgSnVsIDAxIDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIEZyaSBBdWcgMDEgMjAxNCAwMDowMDowMFxuICogLy8gXVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlYWNoTW9udGhPZkludGVydmFsKGRpcnR5SW50ZXJ2YWwpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBpbnRlcnZhbCA9IGRpcnR5SW50ZXJ2YWwgfHwge307XG4gIHZhciBzdGFydERhdGUgPSB0b0RhdGUoaW50ZXJ2YWwuc3RhcnQpO1xuICB2YXIgZW5kRGF0ZSA9IHRvRGF0ZShpbnRlcnZhbC5lbmQpO1xuICB2YXIgZW5kVGltZSA9IGVuZERhdGUuZ2V0VGltZSgpO1xuICB2YXIgZGF0ZXMgPSBbXTtcblxuICAvLyBUaHJvdyBhbiBleGNlcHRpb24gaWYgc3RhcnQgZGF0ZSBpcyBhZnRlciBlbmQgZGF0ZSBvciBpZiBhbnkgZGF0ZSBpcyBgSW52YWxpZCBEYXRlYFxuICBpZiAoIShzdGFydERhdGUuZ2V0VGltZSgpIDw9IGVuZFRpbWUpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgaW50ZXJ2YWwnKTtcbiAgfVxuICB2YXIgY3VycmVudERhdGUgPSBzdGFydERhdGU7XG4gIGN1cnJlbnREYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICBjdXJyZW50RGF0ZS5zZXREYXRlKDEpO1xuICB3aGlsZSAoY3VycmVudERhdGUuZ2V0VGltZSgpIDw9IGVuZFRpbWUpIHtcbiAgICBkYXRlcy5wdXNoKHRvRGF0ZShjdXJyZW50RGF0ZSkpO1xuICAgIGN1cnJlbnREYXRlLnNldE1vbnRoKGN1cnJlbnREYXRlLmdldE1vbnRoKCkgKyAxKTtcbiAgfVxuICByZXR1cm4gZGF0ZXM7XG59IiwiaW1wb3J0IGFkZFF1YXJ0ZXJzIGZyb20gXCIuLi9hZGRRdWFydGVycy9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZRdWFydGVyIGZyb20gXCIuLi9zdGFydE9mUXVhcnRlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlYWNoUXVhcnRlck9mSW50ZXJ2YWxcbiAqIEBjYXRlZ29yeSBJbnRlcnZhbCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGFycmF5IG9mIHF1YXJ0ZXJzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHRpbWUgaW50ZXJ2YWwuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGFycmF5IG9mIHF1YXJ0ZXJzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHRpbWUgaW50ZXJ2YWwuXG4gKlxuICogQHBhcmFtIHtJbnRlcnZhbH0gaW50ZXJ2YWwgLSB0aGUgaW50ZXJ2YWwuIFNlZSBbSW50ZXJ2YWxde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvSW50ZXJ2YWx9XG4gKiBAcmV0dXJucyB7RGF0ZVtdfSB0aGUgYXJyYXkgd2l0aCBzdGFydHMgb2YgcXVhcnRlcnMgZnJvbSB0aGUgcXVhcnRlciBvZiB0aGUgaW50ZXJ2YWwgc3RhcnQgdG8gdGhlIHF1YXJ0ZXIgb2YgdGhlIGludGVydmFsIGVuZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBUaGUgc3RhcnQgb2YgYW4gaW50ZXJ2YWwgY2Fubm90IGJlIGFmdGVyIGl0cyBlbmRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IERhdGUgaW4gaW50ZXJ2YWwgY2Fubm90IGJlIGBJbnZhbGlkIERhdGVgXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEVhY2ggcXVhcnRlciB3aXRoaW4gaW50ZXJ2YWwgNiBGZWJydWFyeSAyMDE0IC0gMTAgQXVndXN0IDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBlYWNoUXVhcnRlck9mSW50ZXJ2YWwoe1xuICogICBzdGFydDogbmV3IERhdGUoMjAxNCwgMSwgNiksXG4gKiAgIGVuZDogbmV3IERhdGUoMjAxNCwgNywgMTApXG4gKiB9KVxuICogLy89PiBbXG4gKiAvLyAgIFdlZCBKYW4gMDEgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgVHVlIEFwciAwMSAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBUdWUgSnVsIDAxIDIwMTQgMDA6MDA6MDAsXG4gKiAvLyBdXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVhY2hRdWFydGVyT2ZJbnRlcnZhbChkaXJ0eUludGVydmFsKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgaW50ZXJ2YWwgPSBkaXJ0eUludGVydmFsIHx8IHt9O1xuICB2YXIgc3RhcnREYXRlID0gdG9EYXRlKGludGVydmFsLnN0YXJ0KTtcbiAgdmFyIGVuZERhdGUgPSB0b0RhdGUoaW50ZXJ2YWwuZW5kKTtcbiAgdmFyIGVuZFRpbWUgPSBlbmREYXRlLmdldFRpbWUoKTtcblxuICAvLyBUaHJvdyBhbiBleGNlcHRpb24gaWYgc3RhcnQgZGF0ZSBpcyBhZnRlciBlbmQgZGF0ZSBvciBpZiBhbnkgZGF0ZSBpcyBgSW52YWxpZCBEYXRlYFxuICBpZiAoIShzdGFydERhdGUuZ2V0VGltZSgpIDw9IGVuZFRpbWUpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgaW50ZXJ2YWwnKTtcbiAgfVxuICB2YXIgc3RhcnREYXRlUXVhcnRlciA9IHN0YXJ0T2ZRdWFydGVyKHN0YXJ0RGF0ZSk7XG4gIHZhciBlbmREYXRlUXVhcnRlciA9IHN0YXJ0T2ZRdWFydGVyKGVuZERhdGUpO1xuICBlbmRUaW1lID0gZW5kRGF0ZVF1YXJ0ZXIuZ2V0VGltZSgpO1xuICB2YXIgcXVhcnRlcnMgPSBbXTtcbiAgdmFyIGN1cnJlbnRRdWFydGVyID0gc3RhcnREYXRlUXVhcnRlcjtcbiAgd2hpbGUgKGN1cnJlbnRRdWFydGVyLmdldFRpbWUoKSA8PSBlbmRUaW1lKSB7XG4gICAgcXVhcnRlcnMucHVzaCh0b0RhdGUoY3VycmVudFF1YXJ0ZXIpKTtcbiAgICBjdXJyZW50UXVhcnRlciA9IGFkZFF1YXJ0ZXJzKGN1cnJlbnRRdWFydGVyLCAxKTtcbiAgfVxuICByZXR1cm4gcXVhcnRlcnM7XG59IiwiaW1wb3J0IGFkZFdlZWtzIGZyb20gXCIuLi9hZGRXZWVrcy9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZXZWVrIGZyb20gXCIuLi9zdGFydE9mV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlYWNoV2Vla09mSW50ZXJ2YWxcbiAqIEBjYXRlZ29yeSBJbnRlcnZhbCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGFycmF5IG9mIHdlZWtzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHRpbWUgaW50ZXJ2YWwuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGFycmF5IG9mIHdlZWtzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHRpbWUgaW50ZXJ2YWwuXG4gKlxuICogQHBhcmFtIHtJbnRlcnZhbH0gaW50ZXJ2YWwgLSB0aGUgaW50ZXJ2YWwuIFNlZSBbSW50ZXJ2YWxde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvSW50ZXJ2YWx9XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEByZXR1cm5zIHtEYXRlW119IHRoZSBhcnJheSB3aXRoIHN0YXJ0cyBvZiB3ZWVrcyBmcm9tIHRoZSB3ZWVrIG9mIHRoZSBpbnRlcnZhbCBzdGFydCB0byB0aGUgd2VlayBvZiB0aGUgaW50ZXJ2YWwgZW5kXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLndlZWtTdGFydHNPbmAgbXVzdCBiZSAwLCAxLCAuLi4sIDZcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IFRoZSBzdGFydCBvZiBhbiBpbnRlcnZhbCBjYW5ub3QgYmUgYWZ0ZXIgaXRzIGVuZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gRGF0ZSBpbiBpbnRlcnZhbCBjYW5ub3QgYmUgYEludmFsaWQgRGF0ZWBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRWFjaCB3ZWVrIHdpdGhpbiBpbnRlcnZhbCA2IE9jdG9iZXIgMjAxNCAtIDIzIE5vdmVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBlYWNoV2Vla09mSW50ZXJ2YWwoe1xuICogICBzdGFydDogbmV3IERhdGUoMjAxNCwgOSwgNiksXG4gKiAgIGVuZDogbmV3IERhdGUoMjAxNCwgMTAsIDIzKVxuICogfSlcbiAqIC8vPT4gW1xuICogLy8gICBTdW4gT2N0IDA1IDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBPY3QgMTIgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgU3VuIE9jdCAxOSAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBTdW4gT2N0IDI2IDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBOb3YgMDIgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgU3VuIE5vdiAwOSAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBTdW4gTm92IDE2IDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBOb3YgMjMgMjAxNCAwMDowMDowMFxuICogLy8gXVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlYWNoV2Vla09mSW50ZXJ2YWwoZGlydHlJbnRlcnZhbCwgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGludGVydmFsID0gZGlydHlJbnRlcnZhbCB8fCB7fTtcbiAgdmFyIHN0YXJ0RGF0ZSA9IHRvRGF0ZShpbnRlcnZhbC5zdGFydCk7XG4gIHZhciBlbmREYXRlID0gdG9EYXRlKGludGVydmFsLmVuZCk7XG4gIHZhciBlbmRUaW1lID0gZW5kRGF0ZS5nZXRUaW1lKCk7XG5cbiAgLy8gVGhyb3cgYW4gZXhjZXB0aW9uIGlmIHN0YXJ0IGRhdGUgaXMgYWZ0ZXIgZW5kIGRhdGUgb3IgaWYgYW55IGRhdGUgaXMgYEludmFsaWQgRGF0ZWBcbiAgaWYgKCEoc3RhcnREYXRlLmdldFRpbWUoKSA8PSBlbmRUaW1lKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIGludGVydmFsJyk7XG4gIH1cbiAgdmFyIHN0YXJ0RGF0ZVdlZWsgPSBzdGFydE9mV2VlayhzdGFydERhdGUsIG9wdGlvbnMpO1xuICB2YXIgZW5kRGF0ZVdlZWsgPSBzdGFydE9mV2VlayhlbmREYXRlLCBvcHRpb25zKTtcblxuICAvLyBTb21lIHRpbWV6b25lcyBzd2l0Y2ggRFNUIGF0IG1pZG5pZ2h0LCBtYWtpbmcgc3RhcnQgb2YgZGF5IHVucmVsaWFibGUgaW4gdGhlc2UgdGltZXpvbmVzLCAzcG0gaXMgYSBzYWZlIGJldFxuICBzdGFydERhdGVXZWVrLnNldEhvdXJzKDE1KTtcbiAgZW5kRGF0ZVdlZWsuc2V0SG91cnMoMTUpO1xuICBlbmRUaW1lID0gZW5kRGF0ZVdlZWsuZ2V0VGltZSgpO1xuICB2YXIgd2Vla3MgPSBbXTtcbiAgdmFyIGN1cnJlbnRXZWVrID0gc3RhcnREYXRlV2VlaztcbiAgd2hpbGUgKGN1cnJlbnRXZWVrLmdldFRpbWUoKSA8PSBlbmRUaW1lKSB7XG4gICAgY3VycmVudFdlZWsuc2V0SG91cnMoMCk7XG4gICAgd2Vla3MucHVzaCh0b0RhdGUoY3VycmVudFdlZWspKTtcbiAgICBjdXJyZW50V2VlayA9IGFkZFdlZWtzKGN1cnJlbnRXZWVrLCAxKTtcbiAgICBjdXJyZW50V2Vlay5zZXRIb3VycygxNSk7XG4gIH1cbiAgcmV0dXJuIHdlZWtzO1xufSIsImltcG9ydCBlYWNoRGF5T2ZJbnRlcnZhbCBmcm9tIFwiLi4vZWFjaERheU9mSW50ZXJ2YWwvaW5kZXguanNcIjtcbmltcG9ydCBpc1N1bmRheSBmcm9tIFwiLi4vaXNTdW5kYXkvaW5kZXguanNcIjtcbmltcG9ydCBpc1dlZWtlbmQgZnJvbSBcIi4uL2lzV2Vla2VuZC9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZWFjaFdlZWtlbmRPZkludGVydmFsXG4gKiBAY2F0ZWdvcnkgSW50ZXJ2YWwgSGVscGVyc1xuICogQHN1bW1hcnkgTGlzdCBhbGwgdGhlIFNhdHVyZGF5cyBhbmQgU3VuZGF5cyBpbiB0aGUgZ2l2ZW4gZGF0ZSBpbnRlcnZhbC5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCBhbGwgdGhlIFNhdHVyZGF5cyBhbmQgU3VuZGF5cyBpbiB0aGUgZ2l2ZW4gZGF0ZSBpbnRlcnZhbC5cbiAqXG4gKiBAcGFyYW0ge0ludGVydmFsfSBpbnRlcnZhbCAtIHRoZSBnaXZlbiBpbnRlcnZhbC4gU2VlIFtJbnRlcnZhbF17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9JbnRlcnZhbH1cbiAqIEByZXR1cm5zIHtEYXRlW119IGFuIGFycmF5IGNvbnRhaW5pbmcgYWxsIHRoZSBTYXR1cmRheXMgYW5kIFN1bmRheXNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gVGhlIHN0YXJ0IG9mIGFuIGludGVydmFsIGNhbm5vdCBiZSBhZnRlciBpdHMgZW5kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBEYXRlIGluIGludGVydmFsIGNhbm5vdCBiZSBgSW52YWxpZCBEYXRlYFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBMaXN0cyBhbGwgU2F0dXJkYXlzIGFuZCBTdW5kYXlzIGluIHRoZSBnaXZlbiBkYXRlIGludGVydmFsXG4gKiBjb25zdCByZXN1bHQgPSBlYWNoV2Vla2VuZE9mSW50ZXJ2YWwoe1xuICogICBzdGFydDogbmV3IERhdGUoMjAxOCwgOCwgMTcpLFxuICogICBlbmQ6IG5ldyBEYXRlKDIwMTgsIDgsIDMwKVxuICogfSlcbiAqIC8vPT4gW1xuICogLy8gICBTYXQgU2VwIDIyIDIwMTggMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBTZXAgMjMgMjAxOCAwMDowMDowMCxcbiAqIC8vICAgU2F0IFNlcCAyOSAyMDE4IDAwOjAwOjAwLFxuICogLy8gICBTdW4gU2VwIDMwIDIwMTggMDA6MDA6MDBcbiAqIC8vIF1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZWFjaFdlZWtlbmRPZkludGVydmFsKGludGVydmFsKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUludGVydmFsID0gZWFjaERheU9mSW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICB2YXIgd2Vla2VuZHMgPSBbXTtcbiAgdmFyIGluZGV4ID0gMDtcbiAgd2hpbGUgKGluZGV4IDwgZGF0ZUludGVydmFsLmxlbmd0aCkge1xuICAgIHZhciBkYXRlID0gZGF0ZUludGVydmFsW2luZGV4KytdO1xuICAgIGlmIChpc1dlZWtlbmQoZGF0ZSkpIHtcbiAgICAgIHdlZWtlbmRzLnB1c2goZGF0ZSk7XG4gICAgICBpZiAoaXNTdW5kYXkoZGF0ZSkpIGluZGV4ID0gaW5kZXggKyA1O1xuICAgIH1cbiAgfVxuICByZXR1cm4gd2Vla2VuZHM7XG59IiwiaW1wb3J0IGVhY2hXZWVrZW5kT2ZJbnRlcnZhbCBmcm9tIFwiLi4vZWFjaFdlZWtlbmRPZkludGVydmFsL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZk1vbnRoIGZyb20gXCIuLi9zdGFydE9mTW9udGgvaW5kZXguanNcIjtcbmltcG9ydCBlbmRPZk1vbnRoIGZyb20gXCIuLi9lbmRPZk1vbnRoL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlYWNoV2Vla2VuZE9mTW9udGhcbiAqIEBjYXRlZ29yeSBNb250aCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBMaXN0IGFsbCB0aGUgU2F0dXJkYXlzIGFuZCBTdW5kYXlzIGluIHRoZSBnaXZlbiBtb250aC5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCBhbGwgdGhlIFNhdHVyZGF5cyBhbmQgU3VuZGF5cyBpbiB0aGUgZ2l2ZW4gbW9udGguXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBtb250aFxuICogQHJldHVybnMge0RhdGVbXX0gYW4gYXJyYXkgY29udGFpbmluZyBhbGwgdGhlIFNhdHVyZGF5cyBhbmQgU3VuZGF5c1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBUaGUgcGFzc2VkIGRhdGUgaXMgaW52YWxpZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBMaXN0cyBhbGwgU2F0dXJkYXlzIGFuZCBTdW5kYXlzIGluIHRoZSBnaXZlbiBtb250aFxuICogY29uc3QgcmVzdWx0ID0gZWFjaFdlZWtlbmRPZk1vbnRoKG5ldyBEYXRlKDIwMjIsIDEsIDEpKVxuICogLy89PiBbXG4gKiAvLyAgIFNhdCBGZWIgMDUgMjAyMiAwMDowMDowMCxcbiAqIC8vICAgU3VuIEZlYiAwNiAyMDIyIDAwOjAwOjAwLFxuICogLy8gICBTYXQgRmViIDEyIDIwMjIgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBGZWIgMTMgMjAyMiAwMDowMDowMCxcbiAqIC8vICAgU2F0IEZlYiAxOSAyMDIyIDAwOjAwOjAwLFxuICogLy8gICBTdW4gRmViIDIwIDIwMjIgMDA6MDA6MDAsXG4gKiAvLyAgIFNhdCBGZWIgMjYgMjAyMiAwMDowMDowMCxcbiAqIC8vICAgU3VuIEZlYiAyNyAyMDIyIDAwOjAwOjAwXG4gKiAvLyBdXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVhY2hXZWVrZW5kT2ZNb250aChkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBzdGFydERhdGUgPSBzdGFydE9mTW9udGgoZGlydHlEYXRlKTtcbiAgaWYgKGlzTmFOKHN0YXJ0RGF0ZS5nZXRUaW1lKCkpKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHBhc3NlZCBkYXRlIGlzIGludmFsaWQnKTtcbiAgdmFyIGVuZERhdGUgPSBlbmRPZk1vbnRoKGRpcnR5RGF0ZSk7XG4gIHJldHVybiBlYWNoV2Vla2VuZE9mSW50ZXJ2YWwoe1xuICAgIHN0YXJ0OiBzdGFydERhdGUsXG4gICAgZW5kOiBlbmREYXRlXG4gIH0pO1xufSIsImltcG9ydCBlYWNoV2Vla2VuZE9mSW50ZXJ2YWwgZnJvbSBcIi4uL2VhY2hXZWVrZW5kT2ZJbnRlcnZhbC9pbmRleC5qc1wiO1xuaW1wb3J0IGVuZE9mWWVhciBmcm9tIFwiLi4vZW5kT2ZZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZlllYXIgZnJvbSBcIi4uL3N0YXJ0T2ZZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlYWNoV2Vla2VuZE9mWWVhclxuICogQGNhdGVnb3J5IFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgTGlzdCBhbGwgdGhlIFNhdHVyZGF5cyBhbmQgU3VuZGF5cyBpbiB0aGUgeWVhci5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCBhbGwgdGhlIFNhdHVyZGF5cyBhbmQgU3VuZGF5cyBpbiB0aGUgeWVhci5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIHllYXJcbiAqIEByZXR1cm5zIHtEYXRlW119IGFuIGFycmF5IGNvbnRhaW5pbmcgYWxsIHRoZSBTYXR1cmRheXMgYW5kIFN1bmRheXNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gVGhlIHBhc3NlZCBkYXRlIGlzIGludmFsaWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gTGlzdHMgYWxsIFNhdHVyZGF5cyBhbmQgU3VuZGF5cyBpbiB0aGUgeWVhclxuICogY29uc3QgcmVzdWx0ID0gZWFjaFdlZWtlbmRPZlllYXIobmV3IERhdGUoMjAyMCwgMSwgMSkpXG4gKiAvLz0+IFtcbiAqIC8vICAgU2F0IEphbiAwMyAyMDIwIDAwOjAwOjAwLFxuICogLy8gICBTdW4gSmFuIDA0IDIwMjAgMDA6MDA6MDAsXG4gKiAvLyAgIC4uLlxuICogLy8gICBTdW4gRGVjIDI3IDIwMjAgMDA6MDA6MDBcbiAqIC8vIF1cbiAqIF1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZWFjaFdlZWtlbmRPZlllYXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgc3RhcnREYXRlID0gc3RhcnRPZlllYXIoZGlydHlEYXRlKTtcbiAgdmFyIGVuZERhdGUgPSBlbmRPZlllYXIoZGlydHlEYXRlKTtcbiAgcmV0dXJuIGVhY2hXZWVrZW5kT2ZJbnRlcnZhbCh7XG4gICAgc3RhcnQ6IHN0YXJ0RGF0ZSxcbiAgICBlbmQ6IGVuZERhdGVcbiAgfSk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlYWNoWWVhck9mSW50ZXJ2YWxcbiAqIEBjYXRlZ29yeSBJbnRlcnZhbCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGFycmF5IG9mIHllYXJseSB0aW1lc3RhbXBzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHRpbWUgaW50ZXJ2YWwuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGFycmF5IG9mIHllYXJseSB0aW1lc3RhbXBzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHRpbWUgaW50ZXJ2YWwuXG4gKlxuICogQHBhcmFtIHtJbnRlcnZhbH0gaW50ZXJ2YWwgLSB0aGUgaW50ZXJ2YWwuIFNlZSBbSW50ZXJ2YWxde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvSW50ZXJ2YWx9XG4gKiBAcmV0dXJucyB7RGF0ZVtdfSB0aGUgYXJyYXkgd2l0aCBzdGFydHMgb2YgeWVhcmx5IHRpbWVzdGFtcHMgZnJvbSB0aGUgbW9udGggb2YgdGhlIGludGVydmFsIHN0YXJ0IHRvIHRoZSBtb250aCBvZiB0aGUgaW50ZXJ2YWwgZW5kXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IFRoZSBzdGFydCBvZiBhbiBpbnRlcnZhbCBjYW5ub3QgYmUgYWZ0ZXIgaXRzIGVuZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gRGF0ZSBpbiBpbnRlcnZhbCBjYW5ub3QgYmUgYEludmFsaWQgRGF0ZWBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRWFjaCB5ZWFyIGJldHdlZW4gNiBGZWJydWFyeSAyMDE0IGFuZCAxMCBBdWd1c3QgMjAxNzpcbiAqIGNvbnN0IHJlc3VsdCA9IGVhY2hZZWFyT2ZJbnRlcnZhbCh7XG4gKiAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAxLCA2KSxcbiAqICAgZW5kOiBuZXcgRGF0ZSgyMDE3LCA3LCAxMClcbiAqIH0pXG4gKiAvLz0+IFtcbiAqIC8vICAgV2VkIEphbiAwMSAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBUaHUgSmFuIDAxIDIwMTUgMDA6MDA6MDAsXG4gKiAvLyAgIEZyaSBKYW4gMDEgMjAxNiAwMDowMDowMCxcbiAqIC8vICAgU3VuIEphbiAwMSAyMDE3IDAwOjAwOjAwXG4gKiAvLyBdXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVhY2hZZWFyT2ZJbnRlcnZhbChkaXJ0eUludGVydmFsKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgaW50ZXJ2YWwgPSBkaXJ0eUludGVydmFsIHx8IHt9O1xuICB2YXIgc3RhcnREYXRlID0gdG9EYXRlKGludGVydmFsLnN0YXJ0KTtcbiAgdmFyIGVuZERhdGUgPSB0b0RhdGUoaW50ZXJ2YWwuZW5kKTtcbiAgdmFyIGVuZFRpbWUgPSBlbmREYXRlLmdldFRpbWUoKTtcblxuICAvLyBUaHJvdyBhbiBleGNlcHRpb24gaWYgc3RhcnQgZGF0ZSBpcyBhZnRlciBlbmQgZGF0ZSBvciBpZiBhbnkgZGF0ZSBpcyBgSW52YWxpZCBEYXRlYFxuICBpZiAoIShzdGFydERhdGUuZ2V0VGltZSgpIDw9IGVuZFRpbWUpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgaW50ZXJ2YWwnKTtcbiAgfVxuICB2YXIgZGF0ZXMgPSBbXTtcbiAgdmFyIGN1cnJlbnREYXRlID0gc3RhcnREYXRlO1xuICBjdXJyZW50RGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgY3VycmVudERhdGUuc2V0TW9udGgoMCwgMSk7XG4gIHdoaWxlIChjdXJyZW50RGF0ZS5nZXRUaW1lKCkgPD0gZW5kVGltZSkge1xuICAgIGRhdGVzLnB1c2godG9EYXRlKGN1cnJlbnREYXRlKSk7XG4gICAgY3VycmVudERhdGUuc2V0RnVsbFllYXIoY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSArIDEpO1xuICB9XG4gIHJldHVybiBkYXRlcztcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVuZE9mRGF5XG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZW5kIG9mIGEgZGF5IGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZW5kIG9mIGEgZGF5IGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGVuZCBvZiBhIGRheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBlbmQgb2YgYSBkYXkgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBlbmRPZkRheShuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89PiBUdWUgU2VwIDAyIDIwMTQgMjM6NTk6NTkuOTk5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVuZE9mRGF5KGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgZGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVuZE9mRGVjYWRlXG4gKiBAY2F0ZWdvcnkgRGVjYWRlIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZW5kIG9mIGEgZGVjYWRlIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZW5kIG9mIGEgZGVjYWRlIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZW5kIG9mIGEgZGVjYWRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7MHwxfDJ9IFtvcHRpb25zLmFkZGl0aW9uYWxEaWdpdHM9Ml0gLSBwYXNzZWQgdG8gYHRvRGF0ZWAuIFNlZSBbdG9EYXRlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL3RvRGF0ZX1cbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuYWRkaXRpb25hbERpZ2l0c2AgbXVzdCBiZSAwLCAxIG9yIDJcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGVuZCBvZiBhIGRlY2FkZSBmb3IgMTIgTWF5IDE5ODQgMDA6MDA6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBlbmRPZkRlY2FkZShuZXcgRGF0ZSgxOTg0LCA0LCAxMiwgMDAsIDAwLCAwMCkpXG4gKiAvLz0+IERlYyAzMSAxOTg5IDIzOjU5OjU5Ljk5OVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbmRPZkRlY2FkZShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICB2YXIgZGVjYWRlID0gOSArIE1hdGguZmxvb3IoeWVhciAvIDEwKSAqIDEwO1xuICBkYXRlLnNldEZ1bGxZZWFyKGRlY2FkZSwgMTEsIDMxKTtcbiAgZGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVuZE9mSG91clxuICogQGNhdGVnb3J5IEhvdXIgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBlbmQgb2YgYW4gaG91ciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGVuZCBvZiBhbiBob3VyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGVuZCBvZiBhbiBob3VyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGVuZCBvZiBhbiBob3VyIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gZW5kT2ZIb3VyKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSkpXG4gKiAvLz0+IFR1ZSBTZXAgMDIgMjAxNCAxMTo1OTo1OS45OTlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW5kT2ZIb3VyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgZGF0ZS5zZXRNaW51dGVzKDU5LCA1OSwgOTk5KTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IGVuZE9mV2VlayBmcm9tIFwiLi4vZW5kT2ZXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlbmRPZklTT1dlZWtcbiAqIEBjYXRlZ29yeSBJU08gV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGVuZCBvZiBhbiBJU08gd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGVuZCBvZiBhbiBJU08gd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZW5kIG9mIGFuIElTTyB3ZWVrXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGVuZCBvZiBhbiBJU08gd2VlayBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVuZE9mSVNPV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89PiBTdW4gU2VwIDA3IDIwMTQgMjM6NTk6NTkuOTk5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVuZE9mSVNPV2VlayhkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBlbmRPZldlZWsoZGlydHlEYXRlLCB7XG4gICAgd2Vla1N0YXJ0c09uOiAxXG4gIH0pO1xufSIsImltcG9ydCBnZXRJU09XZWVrWWVhciBmcm9tIFwiLi4vZ2V0SVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mSVNPV2VlayBmcm9tIFwiLi4vc3RhcnRPZklTT1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVuZE9mSVNPV2Vla1llYXJcbiAqIEBjYXRlZ29yeSBJU08gV2Vlay1OdW1iZXJpbmcgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGVuZCBvZiBhbiBJU08gd2Vlay1udW1iZXJpbmcgeWVhciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGVuZCBvZiBhbiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcixcbiAqIHdoaWNoIGFsd2F5cyBzdGFydHMgMyBkYXlzIGJlZm9yZSB0aGUgeWVhcidzIGZpcnN0IFRodXJzZGF5LlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGVuZCBvZiBhbiBJU08gd2Vlay1udW1iZXJpbmcgeWVhclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBlbmQgb2YgYW4gSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgZm9yIDIgSnVseSAyMDA1OlxuICogY29uc3QgcmVzdWx0ID0gZW5kT2ZJU09XZWVrWWVhcihuZXcgRGF0ZSgyMDA1LCA2LCAyKSlcbiAqIC8vPT4gU3VuIEphbiAwMSAyMDA2IDIzOjU5OjU5Ljk5OVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbmRPZklTT1dlZWtZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIHllYXIgPSBnZXRJU09XZWVrWWVhcihkaXJ0eURhdGUpO1xuICB2YXIgZm91cnRoT2ZKYW51YXJ5T2ZOZXh0WWVhciA9IG5ldyBEYXRlKDApO1xuICBmb3VydGhPZkphbnVhcnlPZk5leHRZZWFyLnNldEZ1bGxZZWFyKHllYXIgKyAxLCAwLCA0KTtcbiAgZm91cnRoT2ZKYW51YXJ5T2ZOZXh0WWVhci5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgdmFyIGRhdGUgPSBzdGFydE9mSVNPV2Vlayhmb3VydGhPZkphbnVhcnlPZk5leHRZZWFyKTtcbiAgZGF0ZS5zZXRNaWxsaXNlY29uZHMoZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSAtIDEpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVuZE9mTWludXRlXG4gKiBAY2F0ZWdvcnkgTWludXRlIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZW5kIG9mIGEgbWludXRlIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZW5kIG9mIGEgbWludXRlIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGVuZCBvZiBhIG1pbnV0ZVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBlbmQgb2YgYSBtaW51dGUgZm9yIDEgRGVjZW1iZXIgMjAxNCAyMjoxNTo0NS40MDA6XG4gKiBjb25zdCByZXN1bHQgPSBlbmRPZk1pbnV0ZShuZXcgRGF0ZSgyMDE0LCAxMSwgMSwgMjIsIDE1LCA0NSwgNDAwKSlcbiAqIC8vPT4gTW9uIERlYyAwMSAyMDE0IDIyOjE1OjU5Ljk5OVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbmRPZk1pbnV0ZShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIGRhdGUuc2V0U2Vjb25kcyg1OSwgOTk5KTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlbmRPZk1vbnRoXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBlbmQgb2YgYSBtb250aCBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGVuZCBvZiBhIG1vbnRoIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGVuZCBvZiBhIG1vbnRoXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGVuZCBvZiBhIG1vbnRoIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gZW5kT2ZNb250aChuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89PiBUdWUgU2VwIDMwIDIwMTQgMjM6NTk6NTkuOTk5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVuZE9mTW9udGgoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgbW9udGggPSBkYXRlLmdldE1vbnRoKCk7XG4gIGRhdGUuc2V0RnVsbFllYXIoZGF0ZS5nZXRGdWxsWWVhcigpLCBtb250aCArIDEsIDApO1xuICBkYXRlLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZW5kT2ZRdWFydGVyXG4gKiBAY2F0ZWdvcnkgUXVhcnRlciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGVuZCBvZiBhIHllYXIgcXVhcnRlciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGVuZCBvZiBhIHllYXIgcXVhcnRlciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBlbmQgb2YgYSBxdWFydGVyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGVuZCBvZiBhIHF1YXJ0ZXIgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBlbmRPZlF1YXJ0ZXIobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPT4gVHVlIFNlcCAzMCAyMDE0IDIzOjU5OjU5Ljk5OVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbmRPZlF1YXJ0ZXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgY3VycmVudE1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xuICB2YXIgbW9udGggPSBjdXJyZW50TW9udGggLSBjdXJyZW50TW9udGggJSAzICsgMztcbiAgZGF0ZS5zZXRNb250aChtb250aCwgMCk7XG4gIGRhdGUuc2V0SG91cnMoMjMsIDU5LCA1OSwgOTk5KTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBlbmRPZlNlY29uZFxuICogQGNhdGVnb3J5IFNlY29uZCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGVuZCBvZiBhIHNlY29uZCBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGVuZCBvZiBhIHNlY29uZCBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBlbmQgb2YgYSBzZWNvbmRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgZW5kIG9mIGEgc2Vjb25kIGZvciAxIERlY2VtYmVyIDIwMTQgMjI6MTU6NDUuNDAwOlxuICogY29uc3QgcmVzdWx0ID0gZW5kT2ZTZWNvbmQobmV3IERhdGUoMjAxNCwgMTEsIDEsIDIyLCAxNSwgNDUsIDQwMCkpXG4gKiAvLz0+IE1vbiBEZWMgMDEgMjAxNCAyMjoxNTo0NS45OTlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW5kT2ZTZWNvbmQoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICBkYXRlLnNldE1pbGxpc2Vjb25kcyg5OTkpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgZW5kT2ZEYXkgZnJvbSBcIi4uL2VuZE9mRGF5L2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGVuZE9mVG9kYXlcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBlbmQgb2YgdG9kYXkuXG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBlbmQgb2YgdG9kYXkuXG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgRGF0ZS5ub3coKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZW5kIG9mIHRvZGF5XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDYgT2N0b2JlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gZW5kT2ZUb2RheSgpXG4gKiAvLz0+IE1vbiBPY3QgNiAyMDE0IDIzOjU5OjU5Ljk5OVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbmRPZlRvZGF5KCkge1xuICByZXR1cm4gZW5kT2ZEYXkoRGF0ZS5ub3coKSk7XG59IiwiLyoqXG4gKiBAbmFtZSBlbmRPZlRvbW9ycm93XG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZW5kIG9mIHRvbW9ycm93LlxuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZW5kIG9mIHRvbW9ycm93LlxuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYG5ldyBEYXRlKClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGVuZCBvZiB0b21vcnJvd1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyA2IE9jdG9iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVuZE9mVG9tb3Jyb3coKVxuICogLy89PiBUdWUgT2N0IDcgMjAxNCAyMzo1OTo1OS45OTlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZW5kT2ZUb21vcnJvdygpIHtcbiAgdmFyIG5vdyA9IG5ldyBEYXRlKCk7XG4gIHZhciB5ZWFyID0gbm93LmdldEZ1bGxZZWFyKCk7XG4gIHZhciBtb250aCA9IG5vdy5nZXRNb250aCgpO1xuICB2YXIgZGF5ID0gbm93LmdldERhdGUoKTtcbiAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgwKTtcbiAgZGF0ZS5zZXRGdWxsWWVhcih5ZWFyLCBtb250aCwgZGF5ICsgMSk7XG4gIGRhdGUuc2V0SG91cnMoMjMsIDU5LCA1OSwgOTk5KTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZW5kT2ZXZWVrXG4gKiBAY2F0ZWdvcnkgV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGVuZCBvZiBhIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBlbmQgb2YgYSB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZW5kIG9mIGEgd2Vla1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBlbmQgb2YgYSB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gZW5kT2ZXZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz0+IFNhdCBTZXAgMDYgMjAxNCAyMzo1OTo1OS45OTlcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdGhlIHdlZWsgc3RhcnRzIG9uIE1vbmRheSwgdGhlIGVuZCBvZiB0aGUgd2VlayBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVuZE9mV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApLCB7IHdlZWtTdGFydHNPbjogMSB9KVxuICogLy89PiBTdW4gU2VwIDA3IDIwMTQgMjM6NTk6NTkuOTk5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVuZE9mV2VlayhkaXJ0eURhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9yZWYyLCBfcmVmMywgX29wdGlvbnMkd2Vla1N0YXJ0c09uLCBfb3B0aW9ucyRsb2NhbGUsIF9vcHRpb25zJGxvY2FsZSRvcHRpbywgX2RlZmF1bHRPcHRpb25zJGxvY2FsLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyO1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIHdlZWtTdGFydHNPbiA9IHRvSW50ZWdlcigoX3JlZiA9IChfcmVmMiA9IChfcmVmMyA9IChfb3B0aW9ucyR3ZWVrU3RhcnRzT24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gIT09IHZvaWQgMCA/IF9vcHRpb25zJHdlZWtTdGFydHNPbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPSBfb3B0aW9ucyRsb2NhbGUub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlJG9wdGlvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUkb3B0aW8ud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiBkZWZhdWx0T3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDAgPyBfcmVmMiA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsMi53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiAwKTtcblxuICAvLyBUZXN0IGlmIHdlZWtTdGFydHNPbiBpcyBiZXR3ZWVuIDAgYW5kIDYgX2FuZF8gaXMgbm90IE5hTlxuICBpZiAoISh3ZWVrU3RhcnRzT24gPj0gMCAmJiB3ZWVrU3RhcnRzT24gPD0gNikpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignd2Vla1N0YXJ0c09uIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2IGluY2x1c2l2ZWx5Jyk7XG4gIH1cbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRheSA9IGRhdGUuZ2V0RGF5KCk7XG4gIHZhciBkaWZmID0gKGRheSA8IHdlZWtTdGFydHNPbiA/IC03IDogMCkgKyA2IC0gKGRheSAtIHdlZWtTdGFydHNPbik7XG4gIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIGRpZmYpO1xuICBkYXRlLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZW5kT2ZZZWFyXG4gKiBAY2F0ZWdvcnkgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGVuZCBvZiBhIHllYXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBlbmQgb2YgYSB5ZWFyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGVuZCBvZiBhIHllYXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgZW5kIG9mIGEgeWVhciBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVuZE9mWWVhcihuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDAwKSlcbiAqIC8vPT4gV2VkIERlYyAzMSAyMDE0IDIzOjU5OjU5Ljk5OVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbmRPZlllYXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgZGF0ZS5zZXRGdWxsWWVhcih5ZWFyICsgMSwgMCwgMCk7XG4gIGRhdGUuc2V0SG91cnMoMjMsIDU5LCA1OSwgOTk5KTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiLyoqXG4gKiBAbmFtZSBlbmRPZlllc3RlcmRheVxuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGVuZCBvZiB5ZXN0ZXJkYXkuXG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBlbmQgb2YgeWVzdGVyZGF5LlxuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYG5ldyBEYXRlKClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGVuZCBvZiB5ZXN0ZXJkYXlcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgNiBPY3RvYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBlbmRPZlllc3RlcmRheSgpXG4gKiAvLz0+IFN1biBPY3QgNSAyMDE0IDIzOjU5OjU5Ljk5OVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbmRPZlllc3RlcmRheSgpIHtcbiAgdmFyIG5vdyA9IG5ldyBEYXRlKCk7XG4gIHZhciB5ZWFyID0gbm93LmdldEZ1bGxZZWFyKCk7XG4gIHZhciBtb250aCA9IG5vdy5nZXRNb250aCgpO1xuICB2YXIgZGF5ID0gbm93LmdldERhdGUoKTtcbiAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgwKTtcbiAgZGF0ZS5zZXRGdWxsWWVhcih5ZWFyLCBtb250aCwgZGF5IC0gMSk7XG4gIGRhdGUuc2V0SG91cnMoMjMsIDU5LCA1OSwgOTk5KTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IGlzVmFsaWQgZnJvbSBcIi4uL2lzVmFsaWQvaW5kZXguanNcIjtcbmltcG9ydCBzdWJNaWxsaXNlY29uZHMgZnJvbSBcIi4uL3N1Yk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgZm9ybWF0dGVycyBmcm9tIFwiLi4vX2xpYi9mb3JtYXQvZm9ybWF0dGVycy9pbmRleC5qc1wiO1xuaW1wb3J0IGxvbmdGb3JtYXR0ZXJzIGZyb20gXCIuLi9fbGliL2Zvcm1hdC9sb25nRm9ybWF0dGVycy9pbmRleC5qc1wiO1xuaW1wb3J0IGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMgZnJvbSBcIi4uL19saWIvZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgaXNQcm90ZWN0ZWREYXlPZlllYXJUb2tlbiwgaXNQcm90ZWN0ZWRXZWVrWWVhclRva2VuLCB0aHJvd1Byb3RlY3RlZEVycm9yIH0gZnJvbSBcIi4uL19saWIvcHJvdGVjdGVkVG9rZW5zL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL19saWIvZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbmltcG9ydCBkZWZhdWx0TG9jYWxlIGZyb20gXCIuLi9fbGliL2RlZmF1bHRMb2NhbGUvaW5kZXguanNcIjsgLy8gVGhpcyBSZWdFeHAgY29uc2lzdHMgb2YgdGhyZWUgcGFydHMgc2VwYXJhdGVkIGJ5IGB8YDpcbi8vIC0gW3lZUXFNTHdJZERlY2loSEtrbXNdbyBtYXRjaGVzIGFueSBhdmFpbGFibGUgb3JkaW5hbCBudW1iZXIgdG9rZW5cbi8vICAgKG9uZSBvZiB0aGUgY2VydGFpbiBsZXR0ZXJzIGZvbGxvd2VkIGJ5IGBvYClcbi8vIC0gKFxcdylcXDEqIG1hdGNoZXMgYW55IHNlcXVlbmNlcyBvZiB0aGUgc2FtZSBsZXR0ZXJcbi8vIC0gJycgbWF0Y2hlcyB0d28gcXVvdGUgY2hhcmFjdGVycyBpbiBhIHJvd1xuLy8gLSAnKCcnfFteJ10pKygnfCQpIG1hdGNoZXMgYW55dGhpbmcgc3Vycm91bmRlZCBieSB0d28gcXVvdGUgY2hhcmFjdGVycyAoJyksXG4vLyAgIGV4Y2VwdCBhIHNpbmdsZSBxdW90ZSBzeW1ib2wsIHdoaWNoIGVuZHMgdGhlIHNlcXVlbmNlLlxuLy8gICBUd28gcXVvdGUgY2hhcmFjdGVycyBkbyBub3QgZW5kIHRoZSBzZXF1ZW5jZS5cbi8vICAgSWYgdGhlcmUgaXMgbm8gbWF0Y2hpbmcgc2luZ2xlIHF1b3RlXG4vLyAgIHRoZW4gdGhlIHNlcXVlbmNlIHdpbGwgY29udGludWUgdW50aWwgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLlxuLy8gLSAuIG1hdGNoZXMgYW55IHNpbmdsZSBjaGFyYWN0ZXIgdW5tYXRjaGVkIGJ5IHByZXZpb3VzIHBhcnRzIG9mIHRoZSBSZWdFeHBzXG52YXIgZm9ybWF0dGluZ1Rva2Vuc1JlZ0V4cCA9IC9beVlRcU1Md0lkRGVjaWhIS2ttc11vfChcXHcpXFwxKnwnJ3wnKCcnfFteJ10pKygnfCQpfC4vZztcblxuLy8gVGhpcyBSZWdFeHAgY2F0Y2hlcyBzeW1ib2xzIGVzY2FwZWQgYnkgcXVvdGVzLCBhbmQgYWxzb1xuLy8gc2VxdWVuY2VzIG9mIHN5bWJvbHMgUCwgcCwgYW5kIHRoZSBjb21iaW5hdGlvbnMgbGlrZSBgUFBQUFBQUHBwcHBwYFxudmFyIGxvbmdGb3JtYXR0aW5nVG9rZW5zUmVnRXhwID0gL1ArcCt8UCt8cCt8Jyd8JygnJ3xbXiddKSsoJ3wkKXwuL2c7XG52YXIgZXNjYXBlZFN0cmluZ1JlZ0V4cCA9IC9eJyhbXl0qPyknPyQvO1xudmFyIGRvdWJsZVF1b3RlUmVnRXhwID0gLycnL2c7XG52YXIgdW5lc2NhcGVkTGF0aW5DaGFyYWN0ZXJSZWdFeHAgPSAvW2EtekEtWl0vO1xuXG4vKipcbiAqIEBuYW1lIGZvcm1hdFxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBGb3JtYXQgdGhlIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZyBpbiB0aGUgZ2l2ZW4gZm9ybWF0LiBUaGUgcmVzdWx0IG1heSB2YXJ5IGJ5IGxvY2FsZS5cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBgZm9ybWF0YCB0b2tlbnMgZGlmZmVyIGZyb20gTW9tZW50LmpzIGFuZCBvdGhlciBsaWJyYXJpZXMuXG4gKiA+IFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICpcbiAqIFRoZSBjaGFyYWN0ZXJzIHdyYXBwZWQgYmV0d2VlbiB0d28gc2luZ2xlIHF1b3RlcyBjaGFyYWN0ZXJzICgnKSBhcmUgZXNjYXBlZC5cbiAqIFR3byBzaW5nbGUgcXVvdGVzIGluIGEgcm93LCB3aGV0aGVyIGluc2lkZSBvciBvdXRzaWRlIGEgcXVvdGVkIHNlcXVlbmNlLCByZXByZXNlbnQgYSAncmVhbCcgc2luZ2xlIHF1b3RlLlxuICogKHNlZSB0aGUgbGFzdCBleGFtcGxlKVxuICpcbiAqIEZvcm1hdCBvZiB0aGUgc3RyaW5nIGlzIGJhc2VkIG9uIFVuaWNvZGUgVGVjaG5pY2FsIFN0YW5kYXJkICMzNTpcbiAqIGh0dHBzOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIzNS90cjM1LWRhdGVzLmh0bWwjRGF0ZV9GaWVsZF9TeW1ib2xfVGFibGVcbiAqIHdpdGggYSBmZXcgYWRkaXRpb25zIChzZWUgbm90ZSA3IGJlbG93IHRoZSB0YWJsZSkuXG4gKlxuICogQWNjZXB0ZWQgcGF0dGVybnM6XG4gKiB8IFVuaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQYXR0ZXJuIHwgUmVzdWx0IGV4YW1wbGVzICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgfFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLXxcbiAqIHwgRXJhICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEcuLkdHRyAgfCBBRCwgQkMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBHR0dHICAgIHwgQW5ubyBEb21pbmksIEJlZm9yZSBDaHJpc3QgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR0dHR0cgICB8IEEsIEIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgQ2FsZW5kYXIgeWVhciAgICAgICAgICAgICAgICAgICB8IHkgICAgICAgfCA0NCwgMSwgMTkwMCwgMjAxNyAgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB5byAgICAgIHwgNDR0aCwgMXN0LCAwdGgsIDE3dGggICAgICAgICAgICAgIHwgNSw3ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeXkgICAgICB8IDQ0LCAwMSwgMDAsIDE3ICAgICAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHl5eSAgICAgfCAwNDQsIDAwMSwgMTkwMCwgMjAxNyAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB5eXl5ICAgIHwgMDA0NCwgMDAwMSwgMTkwMCwgMjAxNyAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeXl5eXkgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMsNSAgIHxcbiAqIHwgTG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhciAgICAgICB8IFkgICAgICAgfCA0NCwgMSwgMTkwMCwgMjAxNyAgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBZbyAgICAgIHwgNDR0aCwgMXN0LCAxOTAwdGgsIDIwMTd0aCAgICAgICAgIHwgNSw3ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWVkgICAgICB8IDQ0LCAwMSwgMDAsIDE3ICAgICAgICAgICAgICAgICAgICB8IDUsOCAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFlZWSAgICAgfCAwNDQsIDAwMSwgMTkwMCwgMjAxNyAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBZWVlZICAgIHwgMDA0NCwgMDAwMSwgMTkwMCwgMjAxNyAgICAgICAgICAgIHwgNSw4ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWVlZWVkgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMsNSAgIHxcbiAqIHwgSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgICAgICAgICB8IFIgICAgICAgfCAtNDMsIDAsIDEsIDE5MDAsIDIwMTcgICAgICAgICAgICAgfCA1LDcgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSUiAgICAgIHwgLTQzLCAwMCwgMDEsIDE5MDAsIDIwMTcgICAgICAgICAgIHwgNSw3ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUlJSICAgICB8IC0wNDMsIDAwMCwgMDAxLCAxOTAwLCAyMDE3ICAgICAgICB8IDUsNyAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJSUlIgICAgfCAtMDA0MywgMDAwMCwgMDAwMSwgMTkwMCwgMjAxNyAgICAgfCA1LDcgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSUlJSUiAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMyw1LDcgfFxuICogfCBFeHRlbmRlZCB5ZWFyICAgICAgICAgICAgICAgICAgIHwgdSAgICAgICB8IC00MywgMCwgMSwgMTkwMCwgMjAxNyAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHV1ICAgICAgfCAtNDMsIDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1dXUgICAgIHwgLTA0MywgMDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdXV1dSAgICB8IC0wMDQzLCAwMDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHV1dXV1ICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzLDUgICB8XG4gKiB8IFF1YXJ0ZXIgKGZvcm1hdHRpbmcpICAgICAgICAgICAgfCBRICAgICAgIHwgMSwgMiwgMywgNCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUW8gICAgICB8IDFzdCwgMm5kLCAzcmQsIDR0aCAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFFRICAgICAgfCAwMSwgMDIsIDAzLCAwNCAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRUVEgICAgIHwgUTEsIFEyLCBRMywgUTQgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUVFRUSAgICB8IDFzdCBxdWFydGVyLCAybmQgcXVhcnRlciwgLi4uICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFFRUVFRICAgfCAxLCAyLCAzLCA0ICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICAgICB8XG4gKiB8IFF1YXJ0ZXIgKHN0YW5kLWFsb25lKSAgICAgICAgICAgfCBxICAgICAgIHwgMSwgMiwgMywgNCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcW8gICAgICB8IDFzdCwgMm5kLCAzcmQsIDR0aCAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHFxICAgICAgfCAwMSwgMDIsIDAzLCAwNCAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBxcXEgICAgIHwgUTEsIFEyLCBRMywgUTQgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcXFxcSAgICB8IDFzdCBxdWFydGVyLCAybmQgcXVhcnRlciwgLi4uICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHFxcXFxICAgfCAxLCAyLCAzLCA0ICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICAgICB8XG4gKiB8IE1vbnRoIChmb3JtYXR0aW5nKSAgICAgICAgICAgICAgfCBNICAgICAgIHwgMSwgMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW8gICAgICB8IDFzdCwgMm5kLCAuLi4sIDEydGggICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1NICAgICAgfCAwMSwgMDIsIC4uLiwgMTIgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNTU0gICAgIHwgSmFuLCBGZWIsIC4uLiwgRGVjICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTU1NTSAgICB8IEphbnVhcnksIEZlYnJ1YXJ5LCAuLi4sIERlY2VtYmVyICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1NTU1NICAgfCBKLCBGLCAuLi4sIEQgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IE1vbnRoIChzdGFuZC1hbG9uZSkgICAgICAgICAgICAgfCBMICAgICAgIHwgMSwgMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTG8gICAgICB8IDFzdCwgMm5kLCAuLi4sIDEydGggICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExMICAgICAgfCAwMSwgMDIsIC4uLiwgMTIgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMTEwgICAgIHwgSmFuLCBGZWIsIC4uLiwgRGVjICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTExMTCAgICB8IEphbnVhcnksIEZlYnJ1YXJ5LCAuLi4sIERlY2VtYmVyICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExMTExMICAgfCBKLCBGLCAuLi4sIEQgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IExvY2FsIHdlZWsgb2YgeWVhciAgICAgICAgICAgICAgfCB3ICAgICAgIHwgMSwgMiwgLi4uLCA1MyAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd28gICAgICB8IDFzdCwgMm5kLCAuLi4sIDUzdGggICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHd3ICAgICAgfCAwMSwgMDIsIC4uLiwgNTMgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IElTTyB3ZWVrIG9mIHllYXIgICAgICAgICAgICAgICAgfCBJICAgICAgIHwgMSwgMiwgLi4uLCA1MyAgICAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSW8gICAgICB8IDFzdCwgMm5kLCAuLi4sIDUzdGggICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IElJICAgICAgfCAwMSwgMDIsIC4uLiwgNTMgICAgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8IERheSBvZiBtb250aCAgICAgICAgICAgICAgICAgICAgfCBkICAgICAgIHwgMSwgMiwgLi4uLCAzMSAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZG8gICAgICB8IDFzdCwgMm5kLCAuLi4sIDMxc3QgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRkICAgICAgfCAwMSwgMDIsIC4uLiwgMzEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IERheSBvZiB5ZWFyICAgICAgICAgICAgICAgICAgICAgfCBEICAgICAgIHwgMSwgMiwgLi4uLCAzNjUsIDM2NiAgICAgICAgICAgICAgIHwgOSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRG8gICAgICB8IDFzdCwgMm5kLCAuLi4sIDM2NXRoLCAzNjZ0aCAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEREICAgICAgfCAwMSwgMDIsIC4uLiwgMzY1LCAzNjYgICAgICAgICAgICAgfCA5ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEREQgICAgIHwgMDAxLCAwMDIsIC4uLiwgMzY1LCAzNjYgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRERERCAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMgICAgIHxcbiAqIHwgRGF5IG9mIHdlZWsgKGZvcm1hdHRpbmcpICAgICAgICB8IEUuLkVFRSAgfCBNb24sIFR1ZSwgV2VkLCAuLi4sIFN1biAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFRUVFICAgIHwgTW9uZGF5LCBUdWVzZGF5LCAuLi4sIFN1bmRheSAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRUVFRUUgICB8IE0sIFQsIFcsIFQsIEYsIFMsIFMgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEVFRUVFRSAgfCBNbywgVHUsIFdlLCBUaCwgRnIsIFNhLCBTdSAgICAgICAgfCAgICAgICB8XG4gKiB8IElTTyBkYXkgb2Ygd2VlayAoZm9ybWF0dGluZykgICAgfCBpICAgICAgIHwgMSwgMiwgMywgLi4uLCA3ICAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW8gICAgICB8IDFzdCwgMm5kLCAuLi4sIDd0aCAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlpICAgICAgfCAwMSwgMDIsIC4uLiwgMDcgICAgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpaWkgICAgIHwgTW9uLCBUdWUsIFdlZCwgLi4uLCBTdW4gICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaWlpaSAgICB8IE1vbmRheSwgVHVlc2RheSwgLi4uLCBTdW5kYXkgICAgICB8IDIsNyAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlpaWlpICAgfCBNLCBULCBXLCBULCBGLCBTLCBTICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpaWlpaWkgIHwgTW8sIFR1LCBXZSwgVGgsIEZyLCBTYSwgU3UgICAgICAgIHwgNyAgICAgfFxuICogfCBMb2NhbCBkYXkgb2Ygd2VlayAoZm9ybWF0dGluZykgIHwgZSAgICAgICB8IDIsIDMsIDQsIC4uLiwgMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVvICAgICAgfCAybmQsIDNyZCwgLi4uLCAxc3QgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlZSAgICAgIHwgMDIsIDAzLCAuLi4sIDAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZWVlICAgICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3VuICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVlZWUgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlZWVlZSAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZWVlZWVlICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU2EsIFN1ICAgICAgICB8ICAgICAgIHxcbiAqIHwgTG9jYWwgZGF5IG9mIHdlZWsgKHN0YW5kLWFsb25lKSB8IGMgICAgICAgfCAyLCAzLCA0LCAuLi4sIDEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjbyAgICAgIHwgMm5kLCAzcmQsIC4uLiwgMXN0ICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2MgICAgICB8IDAyLCAwMywgLi4uLCAwMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNjYyAgICAgfCBNb24sIFR1ZSwgV2VkLCAuLi4sIFN1biAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjY2NjICAgIHwgTW9uZGF5LCBUdWVzZGF5LCAuLi4sIFN1bmRheSAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2NjY2MgICB8IE0sIFQsIFcsIFQsIEYsIFMsIFMgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNjY2NjYyAgfCBNbywgVHUsIFdlLCBUaCwgRnIsIFNhLCBTdSAgICAgICAgfCAgICAgICB8XG4gKiB8IEFNLCBQTSAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhLi5hYSAgIHwgQU0sIFBNICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWFhICAgICB8IGFtLCBwbSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFhYWEgICAgfCBhLm0uLCBwLm0uICAgICAgICAgICAgICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYWFhYSAgIHwgYSwgcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBBTSwgUE0sIG5vb24sIG1pZG5pZ2h0ICAgICAgICAgIHwgYi4uYmIgICB8IEFNLCBQTSwgbm9vbiwgbWlkbmlnaHQgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGJiYiAgICAgfCBhbSwgcG0sIG5vb24sIG1pZG5pZ2h0ICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBiYmJiICAgIHwgYS5tLiwgcC5tLiwgbm9vbiwgbWlkbmlnaHQgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYmJiYmIgICB8IGEsIHAsIG4sIG1pICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgRmxleGlibGUgZGF5IHBlcmlvZCAgICAgICAgICAgICB8IEIuLkJCQiAgfCBhdCBuaWdodCwgaW4gdGhlIG1vcm5pbmcsIC4uLiAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCQkJCICAgIHwgYXQgbmlnaHQsIGluIHRoZSBtb3JuaW5nLCAuLi4gICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQkJCQkIgICB8IGF0IG5pZ2h0LCBpbiB0aGUgbW9ybmluZywgLi4uICAgICB8ICAgICAgIHxcbiAqIHwgSG91ciBbMS0xMl0gICAgICAgICAgICAgICAgICAgICB8IGggICAgICAgfCAxLCAyLCAuLi4sIDExLCAxMiAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBobyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTF0aCwgMTJ0aCAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaGggICAgICB8IDAxLCAwMiwgLi4uLCAxMSwgMTIgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSG91ciBbMC0yM10gICAgICAgICAgICAgICAgICAgICB8IEggICAgICAgfCAwLCAxLCAyLCAuLi4sIDIzICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBIbyAgICAgIHwgMHRoLCAxc3QsIDJuZCwgLi4uLCAyM3JkICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSEggICAgICB8IDAwLCAwMSwgMDIsIC4uLiwgMjMgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSG91ciBbMC0xMV0gICAgICAgICAgICAgICAgICAgICB8IEsgICAgICAgfCAxLCAyLCAuLi4sIDExLCAwICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBLbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTF0aCwgMHRoICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgS0sgICAgICB8IDAxLCAwMiwgLi4uLCAxMSwgMDAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSG91ciBbMS0yNF0gICAgICAgICAgICAgICAgICAgICB8IGsgICAgICAgfCAyNCwgMSwgMiwgLi4uLCAyMyAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBrbyAgICAgIHwgMjR0aCwgMXN0LCAybmQsIC4uLiwgMjNyZCAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwga2sgICAgICB8IDI0LCAwMSwgMDIsIC4uLiwgMjMgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgTWludXRlICAgICAgICAgICAgICAgICAgICAgICAgICB8IG0gICAgICAgfCAwLCAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBtbyAgICAgIHwgMHRoLCAxc3QsIC4uLiwgNTl0aCAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbW0gICAgICB8IDAwLCAwMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgU2Vjb25kICAgICAgICAgICAgICAgICAgICAgICAgICB8IHMgICAgICAgfCAwLCAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzbyAgICAgIHwgMHRoLCAxc3QsIC4uLiwgNTl0aCAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3MgICAgICB8IDAwLCAwMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgRnJhY3Rpb24gb2Ygc2Vjb25kICAgICAgICAgICAgICB8IFMgICAgICAgfCAwLCAxLCAuLi4sIDkgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTUyAgICAgIHwgMDAsIDAxLCAuLi4sIDk5ICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU1NTICAgICB8IDAwMCwgMDAxLCAuLi4sIDk5OSAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNTU1MgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzICAgICB8XG4gKiB8IFRpbWV6b25lIChJU08tODYwMSB3LyBaKSAgICAgICAgfCBYICAgICAgIHwgLTA4LCArMDUzMCwgWiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWFggICAgICB8IC0wODAwLCArMDUzMCwgWiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFhYWCAgICAgfCAtMDg6MDAsICswNTozMCwgWiAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBYWFhYICAgIHwgLTA4MDAsICswNTMwLCBaLCArMTIzNDU2ICAgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWFhYWFggICB8IC0wODowMCwgKzA1OjMwLCBaLCArMTI6MzQ6NTYgICAgICB8ICAgICAgIHxcbiAqIHwgVGltZXpvbmUgKElTTy04NjAxIHcvbyBaKSAgICAgICB8IHggICAgICAgfCAtMDgsICswNTMwLCArMDAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB4eCAgICAgIHwgLTA4MDAsICswNTMwLCArMDAwMCAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeHh4ICAgICB8IC0wODowMCwgKzA1OjMwLCArMDA6MDAgICAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHh4eHggICAgfCAtMDgwMCwgKzA1MzAsICswMDAwLCArMTIzNDU2ICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB4eHh4eCAgIHwgLTA4OjAwLCArMDU6MzAsICswMDowMCwgKzEyOjM0OjU2IHwgICAgICAgfFxuICogfCBUaW1lem9uZSAoR01UKSAgICAgICAgICAgICAgICAgIHwgTy4uLk9PTyB8IEdNVC04LCBHTVQrNTozMCwgR01UKzAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE9PT08gICAgfCBHTVQtMDg6MDAsIEdNVCswNTozMCwgR01UKzAwOjAwICAgfCAyICAgICB8XG4gKiB8IFRpbWV6b25lIChzcGVjaWZpYyBub24tbG9jYXQuKSAgfCB6Li4uenp6IHwgR01ULTgsIEdNVCs1OjMwLCBHTVQrMCAgICAgICAgICAgIHwgNiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgenp6eiAgICB8IEdNVC0wODowMCwgR01UKzA1OjMwLCBHTVQrMDA6MDAgICB8IDIsNiAgIHxcbiAqIHwgU2Vjb25kcyB0aW1lc3RhbXAgICAgICAgICAgICAgICB8IHQgICAgICAgfCA1MTI5Njk1MjAgICAgICAgICAgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0dCAgICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMyw3ICAgfFxuICogfCBNaWxsaXNlY29uZHMgdGltZXN0YW1wICAgICAgICAgIHwgVCAgICAgICB8IDUxMjk2OTUyMDkwMCAgICAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRUICAgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzLDcgICB8XG4gKiB8IExvbmcgbG9jYWxpemVkIGRhdGUgICAgICAgICAgICAgfCBQICAgICAgIHwgMDQvMjkvMTQ1MyAgICAgICAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUFAgICAgICB8IEFwciAyOSwgMTQ1MyAgICAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBQUCAgICAgfCBBcHJpbCAyOXRoLCAxNDUzICAgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQUFBQICAgIHwgRnJpZGF5LCBBcHJpbCAyOXRoLCAxNDUzICAgICAgICAgIHwgMiw3ICAgfFxuICogfCBMb25nIGxvY2FsaXplZCB0aW1lICAgICAgICAgICAgIHwgcCAgICAgICB8IDEyOjAwIEFNICAgICAgICAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBwICAgICAgfCAxMjowMDowMCBBTSAgICAgICAgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwcHAgICAgIHwgMTI6MDA6MDAgQU0gR01UKzIgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcHBwcCAgICB8IDEyOjAwOjAwIEFNIEdNVCswMjowMCAgICAgICAgICAgICB8IDIsNyAgIHxcbiAqIHwgQ29tYmluYXRpb24gb2YgZGF0ZSBhbmQgdGltZSAgICB8IFBwICAgICAgfCAwNC8yOS8xNDUzLCAxMjowMCBBTSAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQUHBwICAgIHwgQXByIDI5LCAxNDUzLCAxMjowMDowMCBBTSAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUFBQcHBwICB8IEFwcmlsIDI5dGgsIDE0NTMgYXQgLi4uICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBQUFBwcHBwfCBGcmlkYXksIEFwcmlsIDI5dGgsIDE0NTMgYXQgLi4uICAgfCAyLDcgICB8XG4gKiBOb3RlczpcbiAqIDEuIFwiRm9ybWF0dGluZ1wiIHVuaXRzIChlLmcuIGZvcm1hdHRpbmcgcXVhcnRlcikgaW4gdGhlIGRlZmF1bHQgZW4tVVMgbG9jYWxlXG4gKiAgICBhcmUgdGhlIHNhbWUgYXMgXCJzdGFuZC1hbG9uZVwiIHVuaXRzLCBidXQgYXJlIGRpZmZlcmVudCBpbiBzb21lIGxhbmd1YWdlcy5cbiAqICAgIFwiRm9ybWF0dGluZ1wiIHVuaXRzIGFyZSBkZWNsaW5lZCBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIG9mIHRoZSBsYW5ndWFnZVxuICogICAgaW4gdGhlIGNvbnRleHQgb2YgYSBkYXRlLiBcIlN0YW5kLWFsb25lXCIgdW5pdHMgYXJlIGFsd2F5cyBub21pbmF0aXZlIHNpbmd1bGFyOlxuICpcbiAqICAgIGBmb3JtYXQobmV3IERhdGUoMjAxNywgMTAsIDYpLCAnZG8gTExMTCcsIHtsb2NhbGU6IGNzfSkgLy89PiAnNi4gbGlzdG9wYWQnYFxuICpcbiAqICAgIGBmb3JtYXQobmV3IERhdGUoMjAxNywgMTAsIDYpLCAnZG8gTU1NTScsIHtsb2NhbGU6IGNzfSkgLy89PiAnNi4gbGlzdG9wYWR1J2BcbiAqXG4gKiAyLiBBbnkgc2VxdWVuY2Ugb2YgdGhlIGlkZW50aWNhbCBsZXR0ZXJzIGlzIGEgcGF0dGVybiwgdW5sZXNzIGl0IGlzIGVzY2FwZWQgYnlcbiAqICAgIHRoZSBzaW5nbGUgcXVvdGUgY2hhcmFjdGVycyAoc2VlIGJlbG93KS5cbiAqICAgIElmIHRoZSBzZXF1ZW5jZSBpcyBsb25nZXIgdGhhbiBsaXN0ZWQgaW4gdGFibGUgKGUuZy4gYEVFRUVFRUVFRUVFYClcbiAqICAgIHRoZSBvdXRwdXQgd2lsbCBiZSB0aGUgc2FtZSBhcyBkZWZhdWx0IHBhdHRlcm4gZm9yIHRoaXMgdW5pdCwgdXN1YWxseVxuICogICAgdGhlIGxvbmdlc3Qgb25lIChpbiBjYXNlIG9mIElTTyB3ZWVrZGF5cywgYEVFRUVgKS4gRGVmYXVsdCBwYXR0ZXJucyBmb3IgdW5pdHNcbiAqICAgIGFyZSBtYXJrZWQgd2l0aCBcIjJcIiBpbiB0aGUgbGFzdCBjb2x1bW4gb2YgdGhlIHRhYmxlLlxuICpcbiAqICAgIGBmb3JtYXQobmV3IERhdGUoMjAxNywgMTAsIDYpLCAnTU1NJykgLy89PiAnTm92J2BcbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ01NTU0nKSAvLz0+ICdOb3ZlbWJlcidgXG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdNTU1NTScpIC8vPT4gJ04nYFxuICpcbiAqICAgIGBmb3JtYXQobmV3IERhdGUoMjAxNywgMTAsIDYpLCAnTU1NTU1NJykgLy89PiAnTm92ZW1iZXInYFxuICpcbiAqICAgIGBmb3JtYXQobmV3IERhdGUoMjAxNywgMTAsIDYpLCAnTU1NTU1NTScpIC8vPT4gJ05vdmVtYmVyJ2BcbiAqXG4gKiAzLiBTb21lIHBhdHRlcm5zIGNvdWxkIGJlIHVubGltaXRlZCBsZW5ndGggKHN1Y2ggYXMgYHl5eXl5eXl5YCkuXG4gKiAgICBUaGUgb3V0cHV0IHdpbGwgYmUgcGFkZGVkIHdpdGggemVyb3MgdG8gbWF0Y2ggdGhlIGxlbmd0aCBvZiB0aGUgcGF0dGVybi5cbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ3l5eXl5eXl5JykgLy89PiAnMDAwMDIwMTcnYFxuICpcbiAqIDQuIGBRUVFRUWAgYW5kIGBxcXFxcWAgY291bGQgYmUgbm90IHN0cmljdGx5IG51bWVyaWNhbCBpbiBzb21lIGxvY2FsZXMuXG4gKiAgICBUaGVzZSB0b2tlbnMgcmVwcmVzZW50IHRoZSBzaG9ydGVzdCBmb3JtIG9mIHRoZSBxdWFydGVyLlxuICpcbiAqIDUuIFRoZSBtYWluIGRpZmZlcmVuY2UgYmV0d2VlbiBgeWAgYW5kIGB1YCBwYXR0ZXJucyBhcmUgQi5DLiB5ZWFyczpcbiAqXG4gKiAgICB8IFllYXIgfCBgeWAgfCBgdWAgfFxuICogICAgfC0tLS0tLXwtLS0tLXwtLS0tLXxcbiAqICAgIHwgQUMgMSB8ICAgMSB8ICAgMSB8XG4gKiAgICB8IEJDIDEgfCAgIDEgfCAgIDAgfFxuICogICAgfCBCQyAyIHwgICAyIHwgIC0xIHxcbiAqXG4gKiAgICBBbHNvIGB5eWAgYWx3YXlzIHJldHVybnMgdGhlIGxhc3QgdHdvIGRpZ2l0cyBvZiBhIHllYXIsXG4gKiAgICB3aGlsZSBgdXVgIHBhZHMgc2luZ2xlIGRpZ2l0IHllYXJzIHRvIDIgY2hhcmFjdGVycyBhbmQgcmV0dXJucyBvdGhlciB5ZWFycyB1bmNoYW5nZWQ6XG4gKlxuICogICAgfCBZZWFyIHwgYHl5YCB8IGB1dWAgfFxuICogICAgfC0tLS0tLXwtLS0tLS18LS0tLS0tfFxuICogICAgfCAxICAgIHwgICAwMSB8ICAgMDEgfFxuICogICAgfCAxNCAgIHwgICAxNCB8ICAgMTQgfFxuICogICAgfCAzNzYgIHwgICA3NiB8ICAzNzYgfFxuICogICAgfCAxNDUzIHwgICA1MyB8IDE0NTMgfFxuICpcbiAqICAgIFRoZSBzYW1lIGRpZmZlcmVuY2UgaXMgdHJ1ZSBmb3IgbG9jYWwgYW5kIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFycyAoYFlgIGFuZCBgUmApLFxuICogICAgZXhjZXB0IGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXJzIGFyZSBkZXBlbmRlbnQgb24gYG9wdGlvbnMud2Vla1N0YXJ0c09uYFxuICogICAgYW5kIGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgKGNvbXBhcmUgW2dldElTT1dlZWtZZWFyXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL2dldElTT1dlZWtZZWFyfVxuICogICAgYW5kIFtnZXRXZWVrWWVhcl17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9nZXRXZWVrWWVhcn0pLlxuICpcbiAqIDYuIFNwZWNpZmljIG5vbi1sb2NhdGlvbiB0aW1lem9uZXMgYXJlIGN1cnJlbnRseSB1bmF2YWlsYWJsZSBpbiBgZGF0ZS1mbnNgLFxuICogICAgc28gcmlnaHQgbm93IHRoZXNlIHRva2VucyBmYWxsIGJhY2sgdG8gR01UIHRpbWV6b25lcy5cbiAqXG4gKiA3LiBUaGVzZSBwYXR0ZXJucyBhcmUgbm90IGluIHRoZSBVbmljb2RlIFRlY2huaWNhbCBTdGFuZGFyZCAjMzU6XG4gKiAgICAtIGBpYDogSVNPIGRheSBvZiB3ZWVrXG4gKiAgICAtIGBJYDogSVNPIHdlZWsgb2YgeWVhclxuICogICAgLSBgUmA6IElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gKiAgICAtIGB0YDogc2Vjb25kcyB0aW1lc3RhbXBcbiAqICAgIC0gYFRgOiBtaWxsaXNlY29uZHMgdGltZXN0YW1wXG4gKiAgICAtIGBvYDogb3JkaW5hbCBudW1iZXIgbW9kaWZpZXJcbiAqICAgIC0gYFBgOiBsb25nIGxvY2FsaXplZCBkYXRlXG4gKiAgICAtIGBwYDogbG9uZyBsb2NhbGl6ZWQgdGltZVxuICpcbiAqIDguIGBZWWAgYW5kIGBZWVlZYCB0b2tlbnMgcmVwcmVzZW50IHdlZWstbnVtYmVyaW5nIHllYXJzIGJ1dCB0aGV5IGFyZSBvZnRlbiBjb25mdXNlZCB3aXRoIHllYXJzLlxuICogICAgWW91IHNob3VsZCBlbmFibGUgYG9wdGlvbnMudXNlQWRkaXRpb25hbFdlZWtZZWFyVG9rZW5zYCB0byB1c2UgdGhlbS4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKlxuICogOS4gYERgIGFuZCBgRERgIHRva2VucyByZXByZXNlbnQgZGF5cyBvZiB0aGUgeWVhciBidXQgdGhleSBhcmUgb2Z0ZW4gY29uZnVzZWQgd2l0aCBkYXlzIG9mIHRoZSBtb250aC5cbiAqICAgIFlvdSBzaG91bGQgZW5hYmxlIGBvcHRpb25zLnVzZUFkZGl0aW9uYWxEYXlPZlllYXJUb2tlbnNgIHRvIHVzZSB0aGVtLiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBmb3JtYXQgLSB0aGUgc3RyaW5nIG9mIHRva2Vuc1xuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlPTFdIC0gdGhlIGRheSBvZiBKYW51YXJ5LCB3aGljaCBpc1xuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy51c2VBZGRpdGlvbmFsV2Vla1llYXJUb2tlbnM9ZmFsc2VdIC0gaWYgdHJ1ZSwgYWxsb3dzIHVzYWdlIG9mIHRoZSB3ZWVrLW51bWJlcmluZyB5ZWFyIHRva2VucyBgWVlgIGFuZCBgWVlZWWA7XG4gKiAgIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy51c2VBZGRpdGlvbmFsRGF5T2ZZZWFyVG9rZW5zPWZhbHNlXSAtIGlmIHRydWUsIGFsbG93cyB1c2FnZSBvZiB0aGUgZGF5IG9mIHllYXIgdG9rZW5zIGBEYCBhbmQgYEREYDtcbiAqICAgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgZGF0ZWAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5sb2NhbGVgIG11c3QgY29udGFpbiBgbG9jYWxpemVgIHByb3BlcnR5XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5sb2NhbGVgIG11c3QgY29udGFpbiBgZm9ybWF0TG9uZ2AgcHJvcGVydHlcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLndlZWtTdGFydHNPbmAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDZcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDdcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IHVzZSBgeXl5eWAgaW5zdGVhZCBvZiBgWVlZWWAgZm9yIGZvcm1hdHRpbmcgeWVhcnMgdXNpbmcgW2Zvcm1hdCBwcm92aWRlZF0gdG8gdGhlIGlucHV0IFtpbnB1dCBwcm92aWRlZF07IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gdXNlIGB5eWAgaW5zdGVhZCBvZiBgWVlgIGZvciBmb3JtYXR0aW5nIHllYXJzIHVzaW5nIFtmb3JtYXQgcHJvdmlkZWRdIHRvIHRoZSBpbnB1dCBbaW5wdXQgcHJvdmlkZWRdOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IHVzZSBgZGAgaW5zdGVhZCBvZiBgRGAgZm9yIGZvcm1hdHRpbmcgZGF5cyBvZiB0aGUgbW9udGggdXNpbmcgW2Zvcm1hdCBwcm92aWRlZF0gdG8gdGhlIGlucHV0IFtpbnB1dCBwcm92aWRlZF07IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gdXNlIGBkZGAgaW5zdGVhZCBvZiBgRERgIGZvciBmb3JtYXR0aW5nIGRheXMgb2YgdGhlIG1vbnRoIHVzaW5nIFtmb3JtYXQgcHJvdmlkZWRdIHRvIHRoZSBpbnB1dCBbaW5wdXQgcHJvdmlkZWRdOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGZvcm1hdCBzdHJpbmcgY29udGFpbnMgYW4gdW5lc2NhcGVkIGxhdGluIGFscGhhYmV0IGNoYXJhY3RlclxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTEgRmVicnVhcnkgMjAxNCBpbiBtaWRkbGUtZW5kaWFuIGZvcm1hdDpcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdChuZXcgRGF0ZSgyMDE0LCAxLCAxMSksICdNTS9kZC95eXl5JylcbiAqIC8vPT4gJzAyLzExLzIwMTQnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAyIEp1bHkgMjAxNCBpbiBFc3BlcmFudG86XG4gKiBpbXBvcnQgeyBlb0xvY2FsZSB9IGZyb20gJ2RhdGUtZm5zL2xvY2FsZS9lbydcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdChuZXcgRGF0ZSgyMDE0LCA2LCAyKSwgXCJkbyAnZGUnIE1NTU0geXl5eVwiLCB7XG4gKiAgIGxvY2FsZTogZW9Mb2NhbGVcbiAqIH0pXG4gKiAvLz0+ICcyLWEgZGUganVsaW8gMjAxNCdcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRXNjYXBlIHN0cmluZyBieSBzaW5nbGUgcXVvdGUgY2hhcmFjdGVyczpcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdChuZXcgRGF0ZSgyMDE0LCA2LCAyLCAxNSksIFwiaCAnbycnY2xvY2snXCIpXG4gKiAvLz0+IFwiMyBvJ2Nsb2NrXCJcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmb3JtYXQoZGlydHlEYXRlLCBkaXJ0eUZvcm1hdFN0ciwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX29wdGlvbnMkbG9jYWxlLCBfcmVmMiwgX3JlZjMsIF9yZWY0LCBfb3B0aW9ucyRmaXJzdFdlZWtDb24sIF9vcHRpb25zJGxvY2FsZTIsIF9vcHRpb25zJGxvY2FsZTIkb3B0aSwgX2RlZmF1bHRPcHRpb25zJGxvY2FsLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLCBfcmVmNSwgX3JlZjYsIF9yZWY3LCBfb3B0aW9ucyR3ZWVrU3RhcnRzT24sIF9vcHRpb25zJGxvY2FsZTMsIF9vcHRpb25zJGxvY2FsZTMkb3B0aSwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMywgX2RlZmF1bHRPcHRpb25zJGxvY2FsNDtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBmb3JtYXRTdHIgPSBTdHJpbmcoZGlydHlGb3JtYXRTdHIpO1xuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICB2YXIgbG9jYWxlID0gKF9yZWYgPSAoX29wdGlvbnMkbG9jYWxlID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmxvY2FsZSkgIT09IG51bGwgJiYgX29wdGlvbnMkbG9jYWxlICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRsb2NhbGUgOiBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiBkZWZhdWx0TG9jYWxlO1xuICB2YXIgZmlyc3RXZWVrQ29udGFpbnNEYXRlID0gdG9JbnRlZ2VyKChfcmVmMiA9IChfcmVmMyA9IChfcmVmNCA9IChfb3B0aW9ucyRmaXJzdFdlZWtDb24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRmaXJzdFdlZWtDb24gIT09IHZvaWQgMCA/IF9vcHRpb25zJGZpcnN0V2Vla0NvbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZTIgPSBvcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZTIkb3B0aSA9IF9vcHRpb25zJGxvY2FsZTIub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlMiRvcHRpID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUyJG9wdGkuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmNCAhPT0gdm9pZCAwID8gX3JlZjQgOiBkZWZhdWx0T3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYzICE9PSB2b2lkIDAgPyBfcmVmMyA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsMi5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDAgPyBfcmVmMiA6IDEpO1xuXG4gIC8vIFRlc3QgaWYgd2Vla1N0YXJ0c09uIGlzIGJldHdlZW4gMSBhbmQgNyBfYW5kXyBpcyBub3QgTmFOXG4gIGlmICghKGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA+PSAxICYmIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA8PSA3KSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdmaXJzdFdlZWtDb250YWluc0RhdGUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDcgaW5jbHVzaXZlbHknKTtcbiAgfVxuICB2YXIgd2Vla1N0YXJ0c09uID0gdG9JbnRlZ2VyKChfcmVmNSA9IChfcmVmNiA9IChfcmVmNyA9IChfb3B0aW9ucyR3ZWVrU3RhcnRzT24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gIT09IHZvaWQgMCA/IF9vcHRpb25zJHdlZWtTdGFydHNPbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZTMgPSBvcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlMyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZTMkb3B0aSA9IF9vcHRpb25zJGxvY2FsZTMub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlMyRvcHRpID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUzJG9wdGkud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmNyAhPT0gdm9pZCAwID8gX3JlZjcgOiBkZWZhdWx0T3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWY2ICE9PSB2b2lkIDAgPyBfcmVmNiA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwzID0gZGVmYXVsdE9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwzID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsNCA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDMub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsNCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsNC53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWY1ICE9PSB2b2lkIDAgPyBfcmVmNSA6IDApO1xuXG4gIC8vIFRlc3QgaWYgd2Vla1N0YXJ0c09uIGlzIGJldHdlZW4gMCBhbmQgNiBfYW5kXyBpcyBub3QgTmFOXG4gIGlmICghKHdlZWtTdGFydHNPbiA+PSAwICYmIHdlZWtTdGFydHNPbiA8PSA2KSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd3ZWVrU3RhcnRzT24gbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYgaW5jbHVzaXZlbHknKTtcbiAgfVxuICBpZiAoIWxvY2FsZS5sb2NhbGl6ZSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdsb2NhbGUgbXVzdCBjb250YWluIGxvY2FsaXplIHByb3BlcnR5Jyk7XG4gIH1cbiAgaWYgKCFsb2NhbGUuZm9ybWF0TG9uZykge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdsb2NhbGUgbXVzdCBjb250YWluIGZvcm1hdExvbmcgcHJvcGVydHknKTtcbiAgfVxuICB2YXIgb3JpZ2luYWxEYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIGlmICghaXNWYWxpZChvcmlnaW5hbERhdGUpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgdGltZSB2YWx1ZScpO1xuICB9XG5cbiAgLy8gQ29udmVydCB0aGUgZGF0ZSBpbiBzeXN0ZW0gdGltZXpvbmUgdG8gdGhlIHNhbWUgZGF0ZSBpbiBVVEMrMDA6MDAgdGltZXpvbmUuXG4gIC8vIFRoaXMgZW5zdXJlcyB0aGF0IHdoZW4gVVRDIGZ1bmN0aW9ucyB3aWxsIGJlIGltcGxlbWVudGVkLCBsb2NhbGVzIHdpbGwgYmUgY29tcGF0aWJsZSB3aXRoIHRoZW0uXG4gIC8vIFNlZSBhbiBpc3N1ZSBhYm91dCBVVEMgZnVuY3Rpb25zOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvaXNzdWVzLzM3NlxuICB2YXIgdGltZXpvbmVPZmZzZXQgPSBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKG9yaWdpbmFsRGF0ZSk7XG4gIHZhciB1dGNEYXRlID0gc3ViTWlsbGlzZWNvbmRzKG9yaWdpbmFsRGF0ZSwgdGltZXpvbmVPZmZzZXQpO1xuICB2YXIgZm9ybWF0dGVyT3B0aW9ucyA9IHtcbiAgICBmaXJzdFdlZWtDb250YWluc0RhdGU6IGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSxcbiAgICB3ZWVrU3RhcnRzT246IHdlZWtTdGFydHNPbixcbiAgICBsb2NhbGU6IGxvY2FsZSxcbiAgICBfb3JpZ2luYWxEYXRlOiBvcmlnaW5hbERhdGVcbiAgfTtcbiAgdmFyIHJlc3VsdCA9IGZvcm1hdFN0ci5tYXRjaChsb25nRm9ybWF0dGluZ1Rva2Vuc1JlZ0V4cCkubWFwKGZ1bmN0aW9uIChzdWJzdHJpbmcpIHtcbiAgICB2YXIgZmlyc3RDaGFyYWN0ZXIgPSBzdWJzdHJpbmdbMF07XG4gICAgaWYgKGZpcnN0Q2hhcmFjdGVyID09PSAncCcgfHwgZmlyc3RDaGFyYWN0ZXIgPT09ICdQJykge1xuICAgICAgdmFyIGxvbmdGb3JtYXR0ZXIgPSBsb25nRm9ybWF0dGVyc1tmaXJzdENoYXJhY3Rlcl07XG4gICAgICByZXR1cm4gbG9uZ0Zvcm1hdHRlcihzdWJzdHJpbmcsIGxvY2FsZS5mb3JtYXRMb25nKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1YnN0cmluZztcbiAgfSkuam9pbignJykubWF0Y2goZm9ybWF0dGluZ1Rva2Vuc1JlZ0V4cCkubWFwKGZ1bmN0aW9uIChzdWJzdHJpbmcpIHtcbiAgICAvLyBSZXBsYWNlIHR3byBzaW5nbGUgcXVvdGUgY2hhcmFjdGVycyB3aXRoIG9uZSBzaW5nbGUgcXVvdGUgY2hhcmFjdGVyXG4gICAgaWYgKHN1YnN0cmluZyA9PT0gXCInJ1wiKSB7XG4gICAgICByZXR1cm4gXCInXCI7XG4gICAgfVxuICAgIHZhciBmaXJzdENoYXJhY3RlciA9IHN1YnN0cmluZ1swXTtcbiAgICBpZiAoZmlyc3RDaGFyYWN0ZXIgPT09IFwiJ1wiKSB7XG4gICAgICByZXR1cm4gY2xlYW5Fc2NhcGVkU3RyaW5nKHN1YnN0cmluZyk7XG4gICAgfVxuICAgIHZhciBmb3JtYXR0ZXIgPSBmb3JtYXR0ZXJzW2ZpcnN0Q2hhcmFjdGVyXTtcbiAgICBpZiAoZm9ybWF0dGVyKSB7XG4gICAgICBpZiAoIShvcHRpb25zICE9PSBudWxsICYmIG9wdGlvbnMgIT09IHZvaWQgMCAmJiBvcHRpb25zLnVzZUFkZGl0aW9uYWxXZWVrWWVhclRva2VucykgJiYgaXNQcm90ZWN0ZWRXZWVrWWVhclRva2VuKHN1YnN0cmluZykpIHtcbiAgICAgICAgdGhyb3dQcm90ZWN0ZWRFcnJvcihzdWJzdHJpbmcsIGRpcnR5Rm9ybWF0U3RyLCBTdHJpbmcoZGlydHlEYXRlKSk7XG4gICAgICB9XG4gICAgICBpZiAoIShvcHRpb25zICE9PSBudWxsICYmIG9wdGlvbnMgIT09IHZvaWQgMCAmJiBvcHRpb25zLnVzZUFkZGl0aW9uYWxEYXlPZlllYXJUb2tlbnMpICYmIGlzUHJvdGVjdGVkRGF5T2ZZZWFyVG9rZW4oc3Vic3RyaW5nKSkge1xuICAgICAgICB0aHJvd1Byb3RlY3RlZEVycm9yKHN1YnN0cmluZywgZGlydHlGb3JtYXRTdHIsIFN0cmluZyhkaXJ0eURhdGUpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmb3JtYXR0ZXIodXRjRGF0ZSwgc3Vic3RyaW5nLCBsb2NhbGUubG9jYWxpemUsIGZvcm1hdHRlck9wdGlvbnMpO1xuICAgIH1cbiAgICBpZiAoZmlyc3RDaGFyYWN0ZXIubWF0Y2godW5lc2NhcGVkTGF0aW5DaGFyYWN0ZXJSZWdFeHApKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignRm9ybWF0IHN0cmluZyBjb250YWlucyBhbiB1bmVzY2FwZWQgbGF0aW4gYWxwaGFiZXQgY2hhcmFjdGVyIGAnICsgZmlyc3RDaGFyYWN0ZXIgKyAnYCcpO1xuICAgIH1cbiAgICByZXR1cm4gc3Vic3RyaW5nO1xuICB9KS5qb2luKCcnKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGNsZWFuRXNjYXBlZFN0cmluZyhpbnB1dCkge1xuICB2YXIgbWF0Y2hlZCA9IGlucHV0Lm1hdGNoKGVzY2FwZWRTdHJpbmdSZWdFeHApO1xuICBpZiAoIW1hdGNoZWQpIHtcbiAgICByZXR1cm4gaW5wdXQ7XG4gIH1cbiAgcmV0dXJuIG1hdGNoZWRbMV0ucmVwbGFjZShkb3VibGVRdW90ZVJlZ0V4cCwgXCInXCIpO1xufSIsImltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL19saWIvZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbmltcG9ydCBjb21wYXJlQXNjIGZyb20gXCIuLi9jb21wYXJlQXNjL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluTW9udGhzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5Nb250aHMvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5TZWNvbmRzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5TZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgZGVmYXVsdExvY2FsZSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0TG9jYWxlL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBjbG9uZU9iamVjdCBmcm9tIFwiLi4vX2xpYi9jbG9uZU9iamVjdC9pbmRleC5qc1wiO1xuaW1wb3J0IGFzc2lnbiBmcm9tIFwiLi4vX2xpYi9hc3NpZ24vaW5kZXguanNcIjtcbmltcG9ydCBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9fbGliL2dldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG52YXIgTUlOVVRFU19JTl9EQVkgPSAxNDQwO1xudmFyIE1JTlVURVNfSU5fQUxNT1NUX1RXT19EQVlTID0gMjUyMDtcbnZhciBNSU5VVEVTX0lOX01PTlRIID0gNDMyMDA7XG52YXIgTUlOVVRFU19JTl9UV09fTU9OVEhTID0gODY0MDA7XG5cbi8qKlxuICogQG5hbWUgZm9ybWF0RGlzdGFuY2VcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcyBpbiB3b3Jkcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMgaW4gd29yZHMuXG4gKlxuICogfCBEaXN0YW5jZSBiZXR3ZWVuIGRhdGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCAwIC4uLiAzMCBzZWNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGxlc3MgdGhhbiBhIG1pbnV0ZSAgfFxuICogfCAzMCBzZWNzIC4uLiAxIG1pbiAzMCBzZWNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEgbWludXRlICAgICAgICAgICAgfFxuICogfCAxIG1pbiAzMCBzZWNzIC4uLiA0NCBtaW5zIDMwIHNlY3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFsyLi40NF0gbWludXRlcyAgICAgfFxuICogfCA0NCBtaW5zIC4uLiAzMCBzZWNzIC4uLiA4OSBtaW5zIDMwIHNlY3MgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFib3V0IDEgaG91ciAgICAgICAgfFxuICogfCA4OSBtaW5zIDMwIHNlY3MgLi4uIDIzIGhycyA1OSBtaW5zIDMwIHNlY3MgICAgICAgICAgICAgICAgICAgICAgICB8IGFib3V0IFsyLi4yNF0gaG91cnMgfFxuICogfCAyMyBocnMgNTkgbWlucyAzMCBzZWNzIC4uLiA0MSBocnMgNTkgbWlucyAzMCBzZWNzICAgICAgICAgICAgICAgICB8IDEgZGF5ICAgICAgICAgICAgICAgfFxuICogfCA0MSBocnMgNTkgbWlucyAzMCBzZWNzIC4uLiAyOSBkYXlzIDIzIGhycyA1OSBtaW5zIDMwIHNlY3MgICAgICAgICB8IFsyLi4zMF0gZGF5cyAgICAgICAgfFxuICogfCAyOSBkYXlzIDIzIGhycyA1OSBtaW5zIDMwIHNlY3MgLi4uIDQ0IGRheXMgMjMgaHJzIDU5IG1pbnMgMzAgc2VjcyB8IGFib3V0IDEgbW9udGggICAgICAgfFxuICogfCA0NCBkYXlzIDIzIGhycyA1OSBtaW5zIDMwIHNlY3MgLi4uIDU5IGRheXMgMjMgaHJzIDU5IG1pbnMgMzAgc2VjcyB8IGFib3V0IDIgbW9udGhzICAgICAgfFxuICogfCA1OSBkYXlzIDIzIGhycyA1OSBtaW5zIDMwIHNlY3MgLi4uIDEgeXIgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFsyLi4xMl0gbW9udGhzICAgICAgfFxuICogfCAxIHlyIC4uLiAxIHlyIDMgbW9udGhzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFib3V0IDEgeWVhciAgICAgICAgfFxuICogfCAxIHlyIDMgbW9udGhzIC4uLiAxIHlyIDkgbW9udGggcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG92ZXIgMSB5ZWFyICAgICAgICAgfFxuICogfCAxIHlyIDkgbW9udGhzIC4uLiAyIHlycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFsbW9zdCAyIHllYXJzICAgICAgfFxuICogfCBOIHlycyAuLi4gTiB5cnMgMyBtb250aHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFib3V0IE4geWVhcnMgICAgICAgfFxuICogfCBOIHlycyAzIG1vbnRocyAuLi4gTiB5cnMgOSBtb250aHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG92ZXIgTiB5ZWFycyAgICAgICAgfFxuICogfCBOIHlycyA5IG1vbnRocyAuLi4gTisxIHlycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFsbW9zdCBOKzEgeWVhcnMgICAgfFxuICpcbiAqIFdpdGggYG9wdGlvbnMuaW5jbHVkZVNlY29uZHMgPT0gdHJ1ZWA6XG4gKiB8IERpc3RhbmNlIGJldHdlZW4gZGF0ZXMgfCBSZXN1bHQgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8IDAgc2VjcyAuLi4gNSBzZWNzICAgICAgfCBsZXNzIHRoYW4gNSBzZWNvbmRzICB8XG4gKiB8IDUgc2VjcyAuLi4gMTAgc2VjcyAgICAgfCBsZXNzIHRoYW4gMTAgc2Vjb25kcyB8XG4gKiB8IDEwIHNlY3MgLi4uIDIwIHNlY3MgICAgfCBsZXNzIHRoYW4gMjAgc2Vjb25kcyB8XG4gKiB8IDIwIHNlY3MgLi4uIDQwIHNlY3MgICAgfCBoYWxmIGEgbWludXRlICAgICAgICB8XG4gKiB8IDQwIHNlY3MgLi4uIDYwIHNlY3MgICAgfCBsZXNzIHRoYW4gYSBtaW51dGUgICB8XG4gKiB8IDYwIHNlY3MgLi4uIDkwIHNlY3MgICAgfCAxIG1pbnV0ZSAgICAgICAgICAgICB8XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBiYXNlRGF0ZSAtIHRoZSBkYXRlIHRvIGNvbXBhcmUgd2l0aFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLmluY2x1ZGVTZWNvbmRzPWZhbHNlXSAtIGRpc3RhbmNlcyBsZXNzIHRoYW4gYSBtaW51dGUgYXJlIG1vcmUgZGV0YWlsZWRcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuYWRkU3VmZml4PWZhbHNlXSAtIHJlc3VsdCBpbmRpY2F0ZXMgaWYgdGhlIHNlY29uZCBkYXRlIGlzIGVhcmxpZXIgb3IgbGF0ZXIgdGhhbiB0aGUgZmlyc3RcbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHJldHVybnMge1N0cmluZ30gdGhlIGRpc3RhbmNlIGluIHdvcmRzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgZGF0ZWAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgYmFzZURhdGVgIG11c3Qgbm90IGJlIEludmFsaWQgRGF0ZVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMubG9jYWxlYCBtdXN0IGNvbnRhaW4gYGZvcm1hdERpc3RhbmNlYCBwcm9wZXJ0eVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGF0IGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIDIgSnVseSAyMDE0IGFuZCAxIEphbnVhcnkgMjAxNT9cbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlKG5ldyBEYXRlKDIwMTQsIDYsIDIpLCBuZXcgRGF0ZSgyMDE1LCAwLCAxKSlcbiAqIC8vPT4gJzYgbW9udGhzJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGF0IGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIDEgSmFudWFyeSAyMDE1IDAwOjAwOjE1XG4gKiAvLyBhbmQgMSBKYW51YXJ5IDIwMTUgMDA6MDA6MDAsIGluY2x1ZGluZyBzZWNvbmRzP1xuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0RGlzdGFuY2UoXG4gKiAgIG5ldyBEYXRlKDIwMTUsIDAsIDEsIDAsIDAsIDE1KSxcbiAqICAgbmV3IERhdGUoMjAxNSwgMCwgMSwgMCwgMCwgMCksXG4gKiAgIHsgaW5jbHVkZVNlY29uZHM6IHRydWUgfVxuICogKVxuICogLy89PiAnbGVzcyB0aGFuIDIwIHNlY29uZHMnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoYXQgaXMgdGhlIGRpc3RhbmNlIGZyb20gMSBKYW51YXJ5IDIwMTZcbiAqIC8vIHRvIDEgSmFudWFyeSAyMDE1LCB3aXRoIGEgc3VmZml4P1xuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0RGlzdGFuY2UobmV3IERhdGUoMjAxNSwgMCwgMSksIG5ldyBEYXRlKDIwMTYsIDAsIDEpLCB7XG4gKiAgIGFkZFN1ZmZpeDogdHJ1ZVxuICogfSlcbiAqIC8vPT4gJ2Fib3V0IDEgeWVhciBhZ28nXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoYXQgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gMSBBdWd1c3QgMjAxNiBhbmQgMSBKYW51YXJ5IDIwMTUgaW4gRXNwZXJhbnRvP1xuICogaW1wb3J0IHsgZW9Mb2NhbGUgfSBmcm9tICdkYXRlLWZucy9sb2NhbGUvZW8nXG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXREaXN0YW5jZShuZXcgRGF0ZSgyMDE2LCA3LCAxKSwgbmV3IERhdGUoMjAxNSwgMCwgMSksIHtcbiAqICAgbG9jYWxlOiBlb0xvY2FsZVxuICogfSlcbiAqIC8vPT4gJ3BsaSBvbCAxIGphcm8nXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0RGlzdGFuY2UoZGlydHlEYXRlLCBkaXJ0eUJhc2VEYXRlLCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfb3B0aW9ucyRsb2NhbGU7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICB2YXIgbG9jYWxlID0gKF9yZWYgPSAoX29wdGlvbnMkbG9jYWxlID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmxvY2FsZSkgIT09IG51bGwgJiYgX29wdGlvbnMkbG9jYWxlICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRsb2NhbGUgOiBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiBkZWZhdWx0TG9jYWxlO1xuICBpZiAoIWxvY2FsZS5mb3JtYXREaXN0YW5jZSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdsb2NhbGUgbXVzdCBjb250YWluIGZvcm1hdERpc3RhbmNlIHByb3BlcnR5Jyk7XG4gIH1cbiAgdmFyIGNvbXBhcmlzb24gPSBjb21wYXJlQXNjKGRpcnR5RGF0ZSwgZGlydHlCYXNlRGF0ZSk7XG4gIGlmIChpc05hTihjb21wYXJpc29uKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHRpbWUgdmFsdWUnKTtcbiAgfVxuICB2YXIgbG9jYWxpemVPcHRpb25zID0gYXNzaWduKGNsb25lT2JqZWN0KG9wdGlvbnMpLCB7XG4gICAgYWRkU3VmZml4OiBCb29sZWFuKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5hZGRTdWZmaXgpLFxuICAgIGNvbXBhcmlzb246IGNvbXBhcmlzb25cbiAgfSk7XG4gIHZhciBkYXRlTGVmdDtcbiAgdmFyIGRhdGVSaWdodDtcbiAgaWYgKGNvbXBhcmlzb24gPiAwKSB7XG4gICAgZGF0ZUxlZnQgPSB0b0RhdGUoZGlydHlCYXNlRGF0ZSk7XG4gICAgZGF0ZVJpZ2h0ID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIH0gZWxzZSB7XG4gICAgZGF0ZUxlZnQgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgICBkYXRlUmlnaHQgPSB0b0RhdGUoZGlydHlCYXNlRGF0ZSk7XG4gIH1cbiAgdmFyIHNlY29uZHMgPSBkaWZmZXJlbmNlSW5TZWNvbmRzKGRhdGVSaWdodCwgZGF0ZUxlZnQpO1xuICB2YXIgb2Zmc2V0SW5TZWNvbmRzID0gKGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoZGF0ZVJpZ2h0KSAtIGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoZGF0ZUxlZnQpKSAvIDEwMDA7XG4gIHZhciBtaW51dGVzID0gTWF0aC5yb3VuZCgoc2Vjb25kcyAtIG9mZnNldEluU2Vjb25kcykgLyA2MCk7XG4gIHZhciBtb250aHM7XG5cbiAgLy8gMCB1cCB0byAyIG1pbnNcbiAgaWYgKG1pbnV0ZXMgPCAyKSB7XG4gICAgaWYgKG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdm9pZCAwICYmIG9wdGlvbnMuaW5jbHVkZVNlY29uZHMpIHtcbiAgICAgIGlmIChzZWNvbmRzIDwgNSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCdsZXNzVGhhblhTZWNvbmRzJywgNSwgbG9jYWxpemVPcHRpb25zKTtcbiAgICAgIH0gZWxzZSBpZiAoc2Vjb25kcyA8IDEwKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ2xlc3NUaGFuWFNlY29uZHMnLCAxMCwgbG9jYWxpemVPcHRpb25zKTtcbiAgICAgIH0gZWxzZSBpZiAoc2Vjb25kcyA8IDIwKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ2xlc3NUaGFuWFNlY29uZHMnLCAyMCwgbG9jYWxpemVPcHRpb25zKTtcbiAgICAgIH0gZWxzZSBpZiAoc2Vjb25kcyA8IDQwKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ2hhbGZBTWludXRlJywgMCwgbG9jYWxpemVPcHRpb25zKTtcbiAgICAgIH0gZWxzZSBpZiAoc2Vjb25kcyA8IDYwKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ2xlc3NUaGFuWE1pbnV0ZXMnLCAxLCBsb2NhbGl6ZU9wdGlvbnMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgneE1pbnV0ZXMnLCAxLCBsb2NhbGl6ZU9wdGlvbnMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobWludXRlcyA9PT0gMCkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCdsZXNzVGhhblhNaW51dGVzJywgMSwgbG9jYWxpemVPcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ3hNaW51dGVzJywgbWludXRlcywgbG9jYWxpemVPcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAyIG1pbnMgdXAgdG8gMC43NSBocnNcbiAgfSBlbHNlIGlmIChtaW51dGVzIDwgNDUpIHtcbiAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCd4TWludXRlcycsIG1pbnV0ZXMsIGxvY2FsaXplT3B0aW9ucyk7XG5cbiAgICAvLyAwLjc1IGhycyB1cCB0byAxLjUgaHJzXG4gIH0gZWxzZSBpZiAobWludXRlcyA8IDkwKSB7XG4gICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgnYWJvdXRYSG91cnMnLCAxLCBsb2NhbGl6ZU9wdGlvbnMpO1xuXG4gICAgLy8gMS41IGhycyB1cCB0byAyNCBocnNcbiAgfSBlbHNlIGlmIChtaW51dGVzIDwgTUlOVVRFU19JTl9EQVkpIHtcbiAgICB2YXIgaG91cnMgPSBNYXRoLnJvdW5kKG1pbnV0ZXMgLyA2MCk7XG4gICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgnYWJvdXRYSG91cnMnLCBob3VycywgbG9jYWxpemVPcHRpb25zKTtcblxuICAgIC8vIDEgZGF5IHVwIHRvIDEuNzUgZGF5c1xuICB9IGVsc2UgaWYgKG1pbnV0ZXMgPCBNSU5VVEVTX0lOX0FMTU9TVF9UV09fREFZUykge1xuICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ3hEYXlzJywgMSwgbG9jYWxpemVPcHRpb25zKTtcblxuICAgIC8vIDEuNzUgZGF5cyB1cCB0byAzMCBkYXlzXG4gIH0gZWxzZSBpZiAobWludXRlcyA8IE1JTlVURVNfSU5fTU9OVEgpIHtcbiAgICB2YXIgZGF5cyA9IE1hdGgucm91bmQobWludXRlcyAvIE1JTlVURVNfSU5fREFZKTtcbiAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCd4RGF5cycsIGRheXMsIGxvY2FsaXplT3B0aW9ucyk7XG5cbiAgICAvLyAxIG1vbnRoIHVwIHRvIDIgbW9udGhzXG4gIH0gZWxzZSBpZiAobWludXRlcyA8IE1JTlVURVNfSU5fVFdPX01PTlRIUykge1xuICAgIG1vbnRocyA9IE1hdGgucm91bmQobWludXRlcyAvIE1JTlVURVNfSU5fTU9OVEgpO1xuICAgIHJldHVybiBsb2NhbGUuZm9ybWF0RGlzdGFuY2UoJ2Fib3V0WE1vbnRocycsIG1vbnRocywgbG9jYWxpemVPcHRpb25zKTtcbiAgfVxuICBtb250aHMgPSBkaWZmZXJlbmNlSW5Nb250aHMoZGF0ZVJpZ2h0LCBkYXRlTGVmdCk7XG5cbiAgLy8gMiBtb250aHMgdXAgdG8gMTIgbW9udGhzXG4gIGlmIChtb250aHMgPCAxMikge1xuICAgIHZhciBuZWFyZXN0TW9udGggPSBNYXRoLnJvdW5kKG1pbnV0ZXMgLyBNSU5VVEVTX0lOX01PTlRIKTtcbiAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCd4TW9udGhzJywgbmVhcmVzdE1vbnRoLCBsb2NhbGl6ZU9wdGlvbnMpO1xuXG4gICAgLy8gMSB5ZWFyIHVwIHRvIG1heCBEYXRlXG4gIH0gZWxzZSB7XG4gICAgdmFyIG1vbnRoc1NpbmNlU3RhcnRPZlllYXIgPSBtb250aHMgJSAxMjtcbiAgICB2YXIgeWVhcnMgPSBNYXRoLmZsb29yKG1vbnRocyAvIDEyKTtcblxuICAgIC8vIE4geWVhcnMgdXAgdG8gMSB5ZWFycyAzIG1vbnRoc1xuICAgIGlmIChtb250aHNTaW5jZVN0YXJ0T2ZZZWFyIDwgMykge1xuICAgICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgnYWJvdXRYWWVhcnMnLCB5ZWFycywgbG9jYWxpemVPcHRpb25zKTtcblxuICAgICAgLy8gTiB5ZWFycyAzIG1vbnRocyB1cCB0byBOIHllYXJzIDkgbW9udGhzXG4gICAgfSBlbHNlIGlmIChtb250aHNTaW5jZVN0YXJ0T2ZZZWFyIDwgOSkge1xuICAgICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgnb3ZlclhZZWFycycsIHllYXJzLCBsb2NhbGl6ZU9wdGlvbnMpO1xuXG4gICAgICAvLyBOIHllYXJzIDkgbW9udGhzIHVwIHRvIE4geWVhciAxMiBtb250aHNcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgnYWxtb3N0WFllYXJzJywgeWVhcnMgKyAxLCBsb2NhbGl6ZU9wdGlvbnMpO1xuICAgIH1cbiAgfVxufSIsImltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL19saWIvZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbmltcG9ydCBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9fbGliL2dldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCBjb21wYXJlQXNjIGZyb20gXCIuLi9jb21wYXJlQXNjL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBjbG9uZU9iamVjdCBmcm9tIFwiLi4vX2xpYi9jbG9uZU9iamVjdC9pbmRleC5qc1wiO1xuaW1wb3J0IGFzc2lnbiBmcm9tIFwiLi4vX2xpYi9hc3NpZ24vaW5kZXguanNcIjtcbmltcG9ydCBkZWZhdWx0TG9jYWxlIGZyb20gXCIuLi9fbGliL2RlZmF1bHRMb2NhbGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG52YXIgTUlMTElTRUNPTkRTX0lOX01JTlVURSA9IDEwMDAgKiA2MDtcbnZhciBNSU5VVEVTX0lOX0RBWSA9IDYwICogMjQ7XG52YXIgTUlOVVRFU19JTl9NT05USCA9IE1JTlVURVNfSU5fREFZICogMzA7XG52YXIgTUlOVVRFU19JTl9ZRUFSID0gTUlOVVRFU19JTl9EQVkgKiAzNjU7XG5cbi8qKlxuICogQG5hbWUgZm9ybWF0RGlzdGFuY2VTdHJpY3RcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcyBpbiB3b3Jkcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMgaW4gd29yZHMsIHVzaW5nIHN0cmljdCB1bml0cy5cbiAqIFRoaXMgaXMgbGlrZSBgZm9ybWF0RGlzdGFuY2VgLCBidXQgZG9lcyBub3QgdXNlIGhlbHBlcnMgbGlrZSAnYWxtb3N0JywgJ292ZXInLFxuICogJ2xlc3MgdGhhbicgYW5kIHRoZSBsaWtlLlxuICpcbiAqIHwgRGlzdGFuY2UgYmV0d2VlbiBkYXRlcyB8IFJlc3VsdCAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8IDAgLi4uIDU5IHNlY3MgICAgICAgICAgfCBbMC4uNTldIHNlY29uZHMgICAgIHxcbiAqIHwgMSAuLi4gNTkgbWlucyAgICAgICAgICB8IFsxLi41OV0gbWludXRlcyAgICAgfFxuICogfCAxIC4uLiAyMyBocnMgICAgICAgICAgIHwgWzEuLjIzXSBob3VycyAgICAgICB8XG4gKiB8IDEgLi4uIDI5IGRheXMgICAgICAgICAgfCBbMS4uMjldIGRheXMgICAgICAgIHxcbiAqIHwgMSAuLi4gMTEgbW9udGhzICAgICAgICB8IFsxLi4xMV0gbW9udGhzICAgICAgfFxuICogfCAxIC4uLiBOIHllYXJzICAgICAgICAgIHwgWzEuLk5dICB5ZWFycyAgICAgICB8XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBiYXNlRGF0ZSAtIHRoZSBkYXRlIHRvIGNvbXBhcmUgd2l0aFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLmFkZFN1ZmZpeD1mYWxzZV0gLSByZXN1bHQgaW5kaWNhdGVzIGlmIHRoZSBzZWNvbmQgZGF0ZSBpcyBlYXJsaWVyIG9yIGxhdGVyIHRoYW4gdGhlIGZpcnN0XG4gKiBAcGFyYW0geydzZWNvbmQnfCdtaW51dGUnfCdob3VyJ3wnZGF5J3wnbW9udGgnfCd5ZWFyJ30gW29wdGlvbnMudW5pdF0gLSBpZiBzcGVjaWZpZWQsIHdpbGwgZm9yY2UgYSB1bml0XG4gKiBAcGFyYW0geydmbG9vcid8J2NlaWwnfCdyb3VuZCd9IFtvcHRpb25zLnJvdW5kaW5nTWV0aG9kPSdyb3VuZCddIC0gd2hpY2ggd2F5IHRvIHJvdW5kIHBhcnRpYWwgdW5pdHNcbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHJldHVybnMge1N0cmluZ30gdGhlIGRpc3RhbmNlIGluIHdvcmRzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgZGF0ZWAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgYmFzZURhdGVgIG11c3Qgbm90IGJlIEludmFsaWQgRGF0ZVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMucm91bmRpbmdNZXRob2RgIG11c3QgYmUgJ2Zsb29yJywgJ2NlaWwnIG9yICdyb3VuZCdcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLnVuaXRgIG11c3QgYmUgJ3NlY29uZCcsICdtaW51dGUnLCAnaG91cicsICdkYXknLCAnbW9udGgnIG9yICd5ZWFyJ1xuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMubG9jYWxlYCBtdXN0IGNvbnRhaW4gYGZvcm1hdERpc3RhbmNlYCBwcm9wZXJ0eVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGF0IGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIDIgSnVseSAyMDE0IGFuZCAxIEphbnVhcnkgMjAxNT9cbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlU3RyaWN0KG5ldyBEYXRlKDIwMTQsIDYsIDIpLCBuZXcgRGF0ZSgyMDE1LCAwLCAyKSlcbiAqIC8vPT4gJzYgbW9udGhzJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGF0IGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIDEgSmFudWFyeSAyMDE1IDAwOjAwOjE1XG4gKiAvLyBhbmQgMSBKYW51YXJ5IDIwMTUgMDA6MDA6MDA/XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXREaXN0YW5jZVN0cmljdChcbiAqICAgbmV3IERhdGUoMjAxNSwgMCwgMSwgMCwgMCwgMTUpLFxuICogICBuZXcgRGF0ZSgyMDE1LCAwLCAxLCAwLCAwLCAwKVxuICogKVxuICogLy89PiAnMTUgc2Vjb25kcydcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hhdCBpcyB0aGUgZGlzdGFuY2UgZnJvbSAxIEphbnVhcnkgMjAxNlxuICogLy8gdG8gMSBKYW51YXJ5IDIwMTUsIHdpdGggYSBzdWZmaXg/XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXREaXN0YW5jZVN0cmljdChuZXcgRGF0ZSgyMDE1LCAwLCAxKSwgbmV3IERhdGUoMjAxNiwgMCwgMSksIHtcbiAqICAgYWRkU3VmZml4OiB0cnVlXG4gKiB9KVxuICogLy89PiAnMSB5ZWFyIGFnbydcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hhdCBpcyB0aGUgZGlzdGFuY2UgZnJvbSAxIEphbnVhcnkgMjAxNlxuICogLy8gdG8gMSBKYW51YXJ5IDIwMTUsIGluIG1pbnV0ZXM/XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXREaXN0YW5jZVN0cmljdChuZXcgRGF0ZSgyMDE2LCAwLCAxKSwgbmV3IERhdGUoMjAxNSwgMCwgMSksIHtcbiAqICAgdW5pdDogJ21pbnV0ZSdcbiAqIH0pXG4gKiAvLz0+ICc1MjU2MDAgbWludXRlcydcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hhdCBpcyB0aGUgZGlzdGFuY2UgZnJvbSAxIEphbnVhcnkgMjAxNVxuICogLy8gdG8gMjggSmFudWFyeSAyMDE1LCBpbiBtb250aHMsIHJvdW5kZWQgdXA/XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXREaXN0YW5jZVN0cmljdChuZXcgRGF0ZSgyMDE1LCAwLCAyOCksIG5ldyBEYXRlKDIwMTUsIDAsIDEpLCB7XG4gKiAgIHVuaXQ6ICdtb250aCcsXG4gKiAgIHJvdW5kaW5nTWV0aG9kOiAnY2VpbCdcbiAqIH0pXG4gKiAvLz0+ICcxIG1vbnRoJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGF0IGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIDEgQXVndXN0IDIwMTYgYW5kIDEgSmFudWFyeSAyMDE1IGluIEVzcGVyYW50bz9cbiAqIGltcG9ydCB7IGVvTG9jYWxlIH0gZnJvbSAnZGF0ZS1mbnMvbG9jYWxlL2VvJ1xuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0RGlzdGFuY2VTdHJpY3QobmV3IERhdGUoMjAxNiwgNywgMSksIG5ldyBEYXRlKDIwMTUsIDAsIDEpLCB7XG4gKiAgIGxvY2FsZTogZW9Mb2NhbGVcbiAqIH0pXG4gKiAvLz0+ICcxIGphcm8nXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0RGlzdGFuY2VTdHJpY3QoZGlydHlEYXRlLCBkaXJ0eUJhc2VEYXRlLCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfb3B0aW9ucyRsb2NhbGUsIF9vcHRpb25zJHJvdW5kaW5nTWV0aDtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIHZhciBsb2NhbGUgPSAoX3JlZiA9IChfb3B0aW9ucyRsb2NhbGUgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMubG9jYWxlKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRsb2NhbGUgIT09IHZvaWQgMCA/IF9vcHRpb25zJGxvY2FsZSA6IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IGRlZmF1bHRMb2NhbGU7XG4gIGlmICghbG9jYWxlLmZvcm1hdERpc3RhbmNlKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2xvY2FsZSBtdXN0IGNvbnRhaW4gbG9jYWxpemUuZm9ybWF0RGlzdGFuY2UgcHJvcGVydHknKTtcbiAgfVxuICB2YXIgY29tcGFyaXNvbiA9IGNvbXBhcmVBc2MoZGlydHlEYXRlLCBkaXJ0eUJhc2VEYXRlKTtcbiAgaWYgKGlzTmFOKGNvbXBhcmlzb24pKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgdGltZSB2YWx1ZScpO1xuICB9XG4gIHZhciBsb2NhbGl6ZU9wdGlvbnMgPSBhc3NpZ24oY2xvbmVPYmplY3Qob3B0aW9ucyksIHtcbiAgICBhZGRTdWZmaXg6IEJvb2xlYW4ob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmFkZFN1ZmZpeCksXG4gICAgY29tcGFyaXNvbjogY29tcGFyaXNvblxuICB9KTtcbiAgdmFyIGRhdGVMZWZ0O1xuICB2YXIgZGF0ZVJpZ2h0O1xuICBpZiAoY29tcGFyaXNvbiA+IDApIHtcbiAgICBkYXRlTGVmdCA9IHRvRGF0ZShkaXJ0eUJhc2VEYXRlKTtcbiAgICBkYXRlUmlnaHQgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgfSBlbHNlIHtcbiAgICBkYXRlTGVmdCA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICAgIGRhdGVSaWdodCA9IHRvRGF0ZShkaXJ0eUJhc2VEYXRlKTtcbiAgfVxuICB2YXIgcm91bmRpbmdNZXRob2QgPSBTdHJpbmcoKF9vcHRpb25zJHJvdW5kaW5nTWV0aCA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5yb3VuZGluZ01ldGhvZCkgIT09IG51bGwgJiYgX29wdGlvbnMkcm91bmRpbmdNZXRoICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRyb3VuZGluZ01ldGggOiAncm91bmQnKTtcbiAgdmFyIHJvdW5kaW5nTWV0aG9kRm47XG4gIGlmIChyb3VuZGluZ01ldGhvZCA9PT0gJ2Zsb29yJykge1xuICAgIHJvdW5kaW5nTWV0aG9kRm4gPSBNYXRoLmZsb29yO1xuICB9IGVsc2UgaWYgKHJvdW5kaW5nTWV0aG9kID09PSAnY2VpbCcpIHtcbiAgICByb3VuZGluZ01ldGhvZEZuID0gTWF0aC5jZWlsO1xuICB9IGVsc2UgaWYgKHJvdW5kaW5nTWV0aG9kID09PSAncm91bmQnKSB7XG4gICAgcm91bmRpbmdNZXRob2RGbiA9IE1hdGgucm91bmQ7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJyb3VuZGluZ01ldGhvZCBtdXN0IGJlICdmbG9vcicsICdjZWlsJyBvciAncm91bmQnXCIpO1xuICB9XG4gIHZhciBtaWxsaXNlY29uZHMgPSBkYXRlUmlnaHQuZ2V0VGltZSgpIC0gZGF0ZUxlZnQuZ2V0VGltZSgpO1xuICB2YXIgbWludXRlcyA9IG1pbGxpc2Vjb25kcyAvIE1JTExJU0VDT05EU19JTl9NSU5VVEU7XG4gIHZhciB0aW1lem9uZU9mZnNldCA9IGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoZGF0ZVJpZ2h0KSAtIGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoZGF0ZUxlZnQpO1xuXG4gIC8vIFVzZSBEU1Qtbm9ybWFsaXplZCBkaWZmZXJlbmNlIGluIG1pbnV0ZXMgZm9yIHllYXJzLCBtb250aHMgYW5kIGRheXM7XG4gIC8vIHVzZSByZWd1bGFyIGRpZmZlcmVuY2UgaW4gbWludXRlcyBmb3IgaG91cnMsIG1pbnV0ZXMgYW5kIHNlY29uZHMuXG4gIHZhciBkc3ROb3JtYWxpemVkTWludXRlcyA9IChtaWxsaXNlY29uZHMgLSB0aW1lem9uZU9mZnNldCkgLyBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFO1xuICB2YXIgZGVmYXVsdFVuaXQgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMudW5pdDtcbiAgdmFyIHVuaXQ7XG4gIGlmICghZGVmYXVsdFVuaXQpIHtcbiAgICBpZiAobWludXRlcyA8IDEpIHtcbiAgICAgIHVuaXQgPSAnc2Vjb25kJztcbiAgICB9IGVsc2UgaWYgKG1pbnV0ZXMgPCA2MCkge1xuICAgICAgdW5pdCA9ICdtaW51dGUnO1xuICAgIH0gZWxzZSBpZiAobWludXRlcyA8IE1JTlVURVNfSU5fREFZKSB7XG4gICAgICB1bml0ID0gJ2hvdXInO1xuICAgIH0gZWxzZSBpZiAoZHN0Tm9ybWFsaXplZE1pbnV0ZXMgPCBNSU5VVEVTX0lOX01PTlRIKSB7XG4gICAgICB1bml0ID0gJ2RheSc7XG4gICAgfSBlbHNlIGlmIChkc3ROb3JtYWxpemVkTWludXRlcyA8IE1JTlVURVNfSU5fWUVBUikge1xuICAgICAgdW5pdCA9ICdtb250aCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVuaXQgPSAneWVhcic7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHVuaXQgPSBTdHJpbmcoZGVmYXVsdFVuaXQpO1xuICB9XG5cbiAgLy8gMCB1cCB0byA2MCBzZWNvbmRzXG4gIGlmICh1bml0ID09PSAnc2Vjb25kJykge1xuICAgIHZhciBzZWNvbmRzID0gcm91bmRpbmdNZXRob2RGbihtaWxsaXNlY29uZHMgLyAxMDAwKTtcbiAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCd4U2Vjb25kcycsIHNlY29uZHMsIGxvY2FsaXplT3B0aW9ucyk7XG5cbiAgICAvLyAxIHVwIHRvIDYwIG1pbnNcbiAgfSBlbHNlIGlmICh1bml0ID09PSAnbWludXRlJykge1xuICAgIHZhciByb3VuZGVkTWludXRlcyA9IHJvdW5kaW5nTWV0aG9kRm4obWludXRlcyk7XG4gICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgneE1pbnV0ZXMnLCByb3VuZGVkTWludXRlcywgbG9jYWxpemVPcHRpb25zKTtcblxuICAgIC8vIDEgdXAgdG8gMjQgaG91cnNcbiAgfSBlbHNlIGlmICh1bml0ID09PSAnaG91cicpIHtcbiAgICB2YXIgaG91cnMgPSByb3VuZGluZ01ldGhvZEZuKG1pbnV0ZXMgLyA2MCk7XG4gICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgneEhvdXJzJywgaG91cnMsIGxvY2FsaXplT3B0aW9ucyk7XG5cbiAgICAvLyAxIHVwIHRvIDMwIGRheXNcbiAgfSBlbHNlIGlmICh1bml0ID09PSAnZGF5Jykge1xuICAgIHZhciBkYXlzID0gcm91bmRpbmdNZXRob2RGbihkc3ROb3JtYWxpemVkTWludXRlcyAvIE1JTlVURVNfSU5fREFZKTtcbiAgICByZXR1cm4gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCd4RGF5cycsIGRheXMsIGxvY2FsaXplT3B0aW9ucyk7XG5cbiAgICAvLyAxIHVwIHRvIDEyIG1vbnRoc1xuICB9IGVsc2UgaWYgKHVuaXQgPT09ICdtb250aCcpIHtcbiAgICB2YXIgbW9udGhzID0gcm91bmRpbmdNZXRob2RGbihkc3ROb3JtYWxpemVkTWludXRlcyAvIE1JTlVURVNfSU5fTU9OVEgpO1xuICAgIHJldHVybiBtb250aHMgPT09IDEyICYmIGRlZmF1bHRVbml0ICE9PSAnbW9udGgnID8gbG9jYWxlLmZvcm1hdERpc3RhbmNlKCd4WWVhcnMnLCAxLCBsb2NhbGl6ZU9wdGlvbnMpIDogbG9jYWxlLmZvcm1hdERpc3RhbmNlKCd4TW9udGhzJywgbW9udGhzLCBsb2NhbGl6ZU9wdGlvbnMpO1xuXG4gICAgLy8gMSB5ZWFyIHVwIHRvIG1heCBEYXRlXG4gIH0gZWxzZSBpZiAodW5pdCA9PT0gJ3llYXInKSB7XG4gICAgdmFyIHllYXJzID0gcm91bmRpbmdNZXRob2RGbihkc3ROb3JtYWxpemVkTWludXRlcyAvIE1JTlVURVNfSU5fWUVBUik7XG4gICAgcmV0dXJuIGxvY2FsZS5mb3JtYXREaXN0YW5jZSgneFllYXJzJywgeWVhcnMsIGxvY2FsaXplT3B0aW9ucyk7XG4gIH1cbiAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJ1bml0IG11c3QgYmUgJ3NlY29uZCcsICdtaW51dGUnLCAnaG91cicsICdkYXknLCAnbW9udGgnIG9yICd5ZWFyJ1wiKTtcbn0iLCJpbXBvcnQgZGlzdGFuY2VJbldvcmRzIGZyb20gXCIuLi9mb3JtYXREaXN0YW5jZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZm9ybWF0RGlzdGFuY2VUb05vd1xuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIGdpdmVuIGRhdGUgYW5kIG5vdyBpbiB3b3Jkcy5cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIGdpdmVuIGRhdGUgYW5kIG5vdyBpbiB3b3Jkcy5cbiAqXG4gKiB8IERpc3RhbmNlIHRvIG5vdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICB8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8IDAgLi4uIDMwIHNlY3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbGVzcyB0aGFuIGEgbWludXRlICB8XG4gKiB8IDMwIHNlY3MgLi4uIDEgbWluIDMwIHNlY3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMSBtaW51dGUgICAgICAgICAgICB8XG4gKiB8IDEgbWluIDMwIHNlY3MgLi4uIDQ0IG1pbnMgMzAgc2VjcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWzIuLjQ0XSBtaW51dGVzICAgICB8XG4gKiB8IDQ0IG1pbnMgLi4uIDMwIHNlY3MgLi4uIDg5IG1pbnMgMzAgc2VjcyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWJvdXQgMSBob3VyICAgICAgICB8XG4gKiB8IDg5IG1pbnMgMzAgc2VjcyAuLi4gMjMgaHJzIDU5IG1pbnMgMzAgc2VjcyAgICAgICAgICAgICAgICAgICAgICAgIHwgYWJvdXQgWzIuLjI0XSBob3VycyB8XG4gKiB8IDIzIGhycyA1OSBtaW5zIDMwIHNlY3MgLi4uIDQxIGhycyA1OSBtaW5zIDMwIHNlY3MgICAgICAgICAgICAgICAgIHwgMSBkYXkgICAgICAgICAgICAgICB8XG4gKiB8IDQxIGhycyA1OSBtaW5zIDMwIHNlY3MgLi4uIDI5IGRheXMgMjMgaHJzIDU5IG1pbnMgMzAgc2VjcyAgICAgICAgIHwgWzIuLjMwXSBkYXlzICAgICAgICB8XG4gKiB8IDI5IGRheXMgMjMgaHJzIDU5IG1pbnMgMzAgc2VjcyAuLi4gNDQgZGF5cyAyMyBocnMgNTkgbWlucyAzMCBzZWNzIHwgYWJvdXQgMSBtb250aCAgICAgICB8XG4gKiB8IDQ0IGRheXMgMjMgaHJzIDU5IG1pbnMgMzAgc2VjcyAuLi4gNTkgZGF5cyAyMyBocnMgNTkgbWlucyAzMCBzZWNzIHwgYWJvdXQgMiBtb250aHMgICAgICB8XG4gKiB8IDU5IGRheXMgMjMgaHJzIDU5IG1pbnMgMzAgc2VjcyAuLi4gMSB5ciAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWzIuLjEyXSBtb250aHMgICAgICB8XG4gKiB8IDEgeXIgLi4uIDEgeXIgMyBtb250aHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWJvdXQgMSB5ZWFyICAgICAgICB8XG4gKiB8IDEgeXIgMyBtb250aHMgLi4uIDEgeXIgOSBtb250aCBzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3ZlciAxIHllYXIgICAgICAgICB8XG4gKiB8IDEgeXIgOSBtb250aHMgLi4uIDIgeXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxtb3N0IDIgeWVhcnMgICAgICB8XG4gKiB8IE4geXJzIC4uLiBOIHlycyAzIG1vbnRocyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWJvdXQgTiB5ZWFycyAgICAgICB8XG4gKiB8IE4geXJzIDMgbW9udGhzIC4uLiBOIHlycyA5IG1vbnRocyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3ZlciBOIHllYXJzICAgICAgICB8XG4gKiB8IE4geXJzIDkgbW9udGhzIC4uLiBOKzEgeXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxtb3N0IE4rMSB5ZWFycyAgICB8XG4gKlxuICogV2l0aCBgb3B0aW9ucy5pbmNsdWRlU2Vjb25kcyA9PSB0cnVlYDpcbiAqIHwgRGlzdGFuY2UgdG8gbm93ICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgMCBzZWNzIC4uLiA1IHNlY3MgICB8IGxlc3MgdGhhbiA1IHNlY29uZHMgIHxcbiAqIHwgNSBzZWNzIC4uLiAxMCBzZWNzICB8IGxlc3MgdGhhbiAxMCBzZWNvbmRzIHxcbiAqIHwgMTAgc2VjcyAuLi4gMjAgc2VjcyB8IGxlc3MgdGhhbiAyMCBzZWNvbmRzIHxcbiAqIHwgMjAgc2VjcyAuLi4gNDAgc2VjcyB8IGhhbGYgYSBtaW51dGUgICAgICAgIHxcbiAqIHwgNDAgc2VjcyAuLi4gNjAgc2VjcyB8IGxlc3MgdGhhbiBhIG1pbnV0ZSAgIHxcbiAqIHwgNjAgc2VjcyAuLi4gOTAgc2VjcyB8IDEgbWludXRlICAgICAgICAgICAgIHxcbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBEYXRlLm5vdygpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gdGhlIG9iamVjdCB3aXRoIG9wdGlvbnNcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuaW5jbHVkZVNlY29uZHM9ZmFsc2VdIC0gZGlzdGFuY2VzIGxlc3MgdGhhbiBhIG1pbnV0ZSBhcmUgbW9yZSBkZXRhaWxlZFxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5hZGRTdWZmaXg9ZmFsc2VdIC0gcmVzdWx0IHNwZWNpZmllcyBpZiBub3cgaXMgZWFybGllciBvciBsYXRlciB0aGFuIHRoZSBwYXNzZWQgZGF0ZVxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgZGlzdGFuY2UgaW4gd29yZHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYGRhdGVgIG11c3Qgbm90IGJlIEludmFsaWQgRGF0ZVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMubG9jYWxlYCBtdXN0IGNvbnRhaW4gYGZvcm1hdERpc3RhbmNlYCBwcm9wZXJ0eVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyAxIEphbnVhcnkgMjAxNSwgd2hhdCBpcyB0aGUgZGlzdGFuY2UgdG8gMiBKdWx5IDIwMTQ/XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXREaXN0YW5jZVRvTm93KFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyKVxuICogKVxuICogLy89PiAnNiBtb250aHMnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIG5vdyBpcyAxIEphbnVhcnkgMjAxNSAwMDowMDowMCxcbiAqIC8vIHdoYXQgaXMgdGhlIGRpc3RhbmNlIHRvIDEgSmFudWFyeSAyMDE1IDAwOjAwOjE1LCBpbmNsdWRpbmcgc2Vjb25kcz9cbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlVG9Ob3coXG4gKiAgIG5ldyBEYXRlKDIwMTUsIDAsIDEsIDAsIDAsIDE1KSxcbiAqICAge2luY2x1ZGVTZWNvbmRzOiB0cnVlfVxuICogKVxuICogLy89PiAnbGVzcyB0aGFuIDIwIHNlY29uZHMnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDEgSmFudWFyeSAyMDE1LFxuICogLy8gd2hhdCBpcyB0aGUgZGlzdGFuY2UgdG8gMSBKYW51YXJ5IDIwMTYsIHdpdGggYSBzdWZmaXg/XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXREaXN0YW5jZVRvTm93KFxuICogICBuZXcgRGF0ZSgyMDE2LCAwLCAxKSxcbiAqICAge2FkZFN1ZmZpeDogdHJ1ZX1cbiAqIClcbiAqIC8vPT4gJ2luIGFib3V0IDEgeWVhcidcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgMSBKYW51YXJ5IDIwMTUsXG4gKiAvLyB3aGF0IGlzIHRoZSBkaXN0YW5jZSB0byAxIEF1Z3VzdCAyMDE2IGluIEVzcGVyYW50bz9cbiAqIGNvbnN0IGVvTG9jYWxlID0gcmVxdWlyZSgnZGF0ZS1mbnMvbG9jYWxlL2VvJylcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlVG9Ob3coXG4gKiAgIG5ldyBEYXRlKDIwMTYsIDcsIDEpLFxuICogICB7bG9jYWxlOiBlb0xvY2FsZX1cbiAqIClcbiAqIC8vPT4gJ3BsaSBvbCAxIGphcm8nXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdERpc3RhbmNlVG9Ob3coZGlydHlEYXRlLCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gZGlzdGFuY2VJbldvcmRzKGRpcnR5RGF0ZSwgRGF0ZS5ub3coKSwgb3B0aW9ucyk7XG59IiwiaW1wb3J0IGZvcm1hdERpc3RhbmNlU3RyaWN0IGZyb20gXCIuLi9mb3JtYXREaXN0YW5jZVN0cmljdC9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZm9ybWF0RGlzdGFuY2VUb05vd1N0cmljdFxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIGdpdmVuIGRhdGUgYW5kIG5vdyBpbiB3b3Jkcy5cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzIGluIHdvcmRzLCB1c2luZyBzdHJpY3QgdW5pdHMuXG4gKiBUaGlzIGlzIGxpa2UgYGZvcm1hdERpc3RhbmNlYCwgYnV0IGRvZXMgbm90IHVzZSBoZWxwZXJzIGxpa2UgJ2FsbW9zdCcsICdvdmVyJyxcbiAqICdsZXNzIHRoYW4nIGFuZCB0aGUgbGlrZS5cbiAqXG4gKiB8IERpc3RhbmNlIGJldHdlZW4gZGF0ZXMgfCBSZXN1bHQgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCAwIC4uLiA1OSBzZWNzICAgICAgICAgIHwgWzAuLjU5XSBzZWNvbmRzICAgICB8XG4gKiB8IDEgLi4uIDU5IG1pbnMgICAgICAgICAgfCBbMS4uNTldIG1pbnV0ZXMgICAgIHxcbiAqIHwgMSAuLi4gMjMgaHJzICAgICAgICAgICB8IFsxLi4yM10gaG91cnMgICAgICAgfFxuICogfCAxIC4uLiAyOSBkYXlzICAgICAgICAgIHwgWzEuLjI5XSBkYXlzICAgICAgICB8XG4gKiB8IDEgLi4uIDExIG1vbnRocyAgICAgICAgfCBbMS4uMTFdIG1vbnRocyAgICAgIHxcbiAqIHwgMSAuLi4gTiB5ZWFycyAgICAgICAgICB8IFsxLi5OXSAgeWVhcnMgICAgICAgfFxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLmFkZFN1ZmZpeD1mYWxzZV0gLSByZXN1bHQgaW5kaWNhdGVzIGlmIHRoZSBzZWNvbmQgZGF0ZSBpcyBlYXJsaWVyIG9yIGxhdGVyIHRoYW4gdGhlIGZpcnN0XG4gKiBAcGFyYW0geydzZWNvbmQnfCdtaW51dGUnfCdob3VyJ3wnZGF5J3wnbW9udGgnfCd5ZWFyJ30gW29wdGlvbnMudW5pdF0gLSBpZiBzcGVjaWZpZWQsIHdpbGwgZm9yY2UgYSB1bml0XG4gKiBAcGFyYW0geydmbG9vcid8J2NlaWwnfCdyb3VuZCd9IFtvcHRpb25zLnJvdW5kaW5nTWV0aG9kPSdyb3VuZCddIC0gd2hpY2ggd2F5IHRvIHJvdW5kIHBhcnRpYWwgdW5pdHNcbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHJldHVybnMge1N0cmluZ30gdGhlIGRpc3RhbmNlIGluIHdvcmRzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBkYXRlYCBtdXN0IG5vdCBiZSBJbnZhbGlkIERhdGVcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmxvY2FsZWAgbXVzdCBjb250YWluIGBmb3JtYXREaXN0YW5jZWAgcHJvcGVydHlcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgMSBKYW51YXJ5IDIwMTUsIHdoYXQgaXMgdGhlIGRpc3RhbmNlIHRvIDIgSnVseSAyMDE0P1xuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0RGlzdGFuY2VUb05vd1N0cmljdChcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMilcbiAqIClcbiAqIC8vPT4gJzYgbW9udGhzJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiBub3cgaXMgMSBKYW51YXJ5IDIwMTUgMDA6MDA6MDAsXG4gKiAvLyB3aGF0IGlzIHRoZSBkaXN0YW5jZSB0byAxIEphbnVhcnkgMjAxNSAwMDowMDoxNSwgaW5jbHVkaW5nIHNlY29uZHM/XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXREaXN0YW5jZVRvTm93U3RyaWN0KFxuICogICBuZXcgRGF0ZSgyMDE1LCAwLCAxLCAwLCAwLCAxNSlcbiAqIClcbiAqIC8vPT4gJzE1IHNlY29uZHMnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDEgSmFudWFyeSAyMDE1LFxuICogLy8gd2hhdCBpcyB0aGUgZGlzdGFuY2UgdG8gMSBKYW51YXJ5IDIwMTYsIHdpdGggYSBzdWZmaXg/XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXREaXN0YW5jZVRvTm93U3RyaWN0KFxuICogICBuZXcgRGF0ZSgyMDE2LCAwLCAxKSxcbiAqICAge2FkZFN1ZmZpeDogdHJ1ZX1cbiAqIClcbiAqIC8vPT4gJ2luIDEgeWVhcidcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgMjggSmFudWFyeSAyMDE1LFxuICogLy8gd2hhdCBpcyB0aGUgZGlzdGFuY2UgdG8gMSBKYW51YXJ5IDIwMTUsIGluIG1vbnRocywgcm91bmRlZCB1cD8/XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXREaXN0YW5jZVRvTm93U3RyaWN0KG5ldyBEYXRlKDIwMTUsIDAsIDEpLCB7XG4gKiAgIHVuaXQ6ICdtb250aCcsXG4gKiAgIHJvdW5kaW5nTWV0aG9kOiAnY2VpbCdcbiAqIH0pXG4gKiAvLz0+ICcxIG1vbnRoJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyAxIEphbnVhcnkgMjAxNSxcbiAqIC8vIHdoYXQgaXMgdGhlIGRpc3RhbmNlIHRvIDEgSmFudWFyeSAyMDE2IGluIEVzcGVyYW50bz9cbiAqIGNvbnN0IGVvTG9jYWxlID0gcmVxdWlyZSgnZGF0ZS1mbnMvbG9jYWxlL2VvJylcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERpc3RhbmNlVG9Ob3dTdHJpY3QoXG4gKiAgIG5ldyBEYXRlKDIwMTYsIDAsIDEpLFxuICogICB7bG9jYWxlOiBlb0xvY2FsZX1cbiAqIClcbiAqIC8vPT4gJzEgamFybydcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0RGlzdGFuY2VUb05vd1N0cmljdChkaXJ0eURhdGUsIG9wdGlvbnMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBmb3JtYXREaXN0YW5jZVN0cmljdChkaXJ0eURhdGUsIERhdGUubm93KCksIG9wdGlvbnMpO1xufSIsImltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL19saWIvZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbmltcG9ydCBkZWZhdWx0TG9jYWxlIGZyb20gXCIuLi9fbGliL2RlZmF1bHRMb2NhbGUvaW5kZXguanNcIjtcbnZhciBkZWZhdWx0Rm9ybWF0ID0gWyd5ZWFycycsICdtb250aHMnLCAnd2Vla3MnLCAnZGF5cycsICdob3VycycsICdtaW51dGVzJywgJ3NlY29uZHMnXTtcblxuLyoqXG4gKiBAbmFtZSBmb3JtYXREdXJhdGlvblxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBGb3JtYXRzIGEgZHVyYXRpb24gaW4gaHVtYW4tcmVhZGFibGUgZm9ybWF0XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gaHVtYW4tcmVhZGFibGUgZHVyYXRpb24gc3RyaW5nIGkuZS4gXCI5IG1vbnRocyAyIGRheXNcIlxuICpcbiAqIEBwYXJhbSB7RHVyYXRpb259IGR1cmF0aW9uIC0gdGhlIGR1cmF0aW9uIHRvIGZvcm1hdFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBbb3B0aW9ucy5mb3JtYXQ9Wyd5ZWFycycsICdtb250aHMnLCAnd2Vla3MnLCAnZGF5cycsICdob3VycycsICdtaW51dGVzJywgJ3NlY29uZHMnXV0gLSB0aGUgYXJyYXkgb2YgdW5pdHMgdG8gZm9ybWF0XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnplcm89ZmFsc2VdIC0gc2hvdWxkIHplcm9zIGJlIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQ/XG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuZGVsaW1pdGVyPScgJ10gLSBkZWxpbWl0ZXIgc3RyaW5nXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEByZXR1cm5zIHtzdHJpbmd9IHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmdcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3JtYXQgZnVsbCBkdXJhdGlvblxuICogZm9ybWF0RHVyYXRpb24oe1xuICogICB5ZWFyczogMixcbiAqICAgbW9udGhzOiA5LFxuICogICB3ZWVrczogMSxcbiAqICAgZGF5czogNyxcbiAqICAgaG91cnM6IDUsXG4gKiAgIG1pbnV0ZXM6IDksXG4gKiAgIHNlY29uZHM6IDMwXG4gKiB9KVxuICogLy89PiAnMiB5ZWFycyA5IG1vbnRocyAxIHdlZWsgNyBkYXlzIDUgaG91cnMgOSBtaW51dGVzIDMwIHNlY29uZHMnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvcm1hdCBwYXJ0aWFsIGR1cmF0aW9uXG4gKiBmb3JtYXREdXJhdGlvbih7IG1vbnRoczogOSwgZGF5czogMiB9KVxuICogLy89PiAnOSBtb250aHMgMiBkYXlzJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDdXN0b21pemUgdGhlIGZvcm1hdFxuICogZm9ybWF0RHVyYXRpb24oXG4gKiAgIHtcbiAqICAgICB5ZWFyczogMixcbiAqICAgICBtb250aHM6IDksXG4gKiAgICAgd2Vla3M6IDEsXG4gKiAgICAgZGF5czogNyxcbiAqICAgICBob3VyczogNSxcbiAqICAgICBtaW51dGVzOiA5LFxuICogICAgIHNlY29uZHM6IDMwXG4gKiAgIH0sXG4gKiAgIHsgZm9ybWF0OiBbJ21vbnRocycsICd3ZWVrcyddIH1cbiAqICkgPT09ICc5IG1vbnRocyAxIHdlZWsnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEN1c3RvbWl6ZSB0aGUgemVyb3MgcHJlc2VuY2VcbiAqIGZvcm1hdER1cmF0aW9uKHsgeWVhcnM6IDAsIG1vbnRoczogOSB9KVxuICogLy89PiAnOSBtb250aHMnXG4gKiBmb3JtYXREdXJhdGlvbih7IHllYXJzOiAwLCBtb250aHM6IDkgfSwgeyB6ZXJvOiB0cnVlIH0pXG4gKiAvLz0+ICcwIHllYXJzIDkgbW9udGhzJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDdXN0b21pemUgdGhlIGRlbGltaXRlclxuICogZm9ybWF0RHVyYXRpb24oeyB5ZWFyczogMiwgbW9udGhzOiA5LCB3ZWVrczogMyB9LCB7IGRlbGltaXRlcjogJywgJyB9KVxuICogLy89PiAnMiB5ZWFycywgOSBtb250aHMsIDMgd2Vla3MnXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdER1cmF0aW9uKGR1cmF0aW9uLCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfb3B0aW9ucyRsb2NhbGUsIF9vcHRpb25zJGZvcm1hdCwgX29wdGlvbnMkemVybywgX29wdGlvbnMkZGVsaW1pdGVyO1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDEpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiMSBhcmd1bWVudCByZXF1aXJlZCwgYnV0IG9ubHkgXCIuY29uY2F0KGFyZ3VtZW50cy5sZW5ndGgsIFwiIHByZXNlbnRcIikpO1xuICB9XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIHZhciBsb2NhbGUgPSAoX3JlZiA9IChfb3B0aW9ucyRsb2NhbGUgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMubG9jYWxlKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRsb2NhbGUgIT09IHZvaWQgMCA/IF9vcHRpb25zJGxvY2FsZSA6IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IGRlZmF1bHRMb2NhbGU7XG4gIHZhciBmb3JtYXQgPSAoX29wdGlvbnMkZm9ybWF0ID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmZvcm1hdCkgIT09IG51bGwgJiYgX29wdGlvbnMkZm9ybWF0ICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRmb3JtYXQgOiBkZWZhdWx0Rm9ybWF0O1xuICB2YXIgemVybyA9IChfb3B0aW9ucyR6ZXJvID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnplcm8pICE9PSBudWxsICYmIF9vcHRpb25zJHplcm8gIT09IHZvaWQgMCA/IF9vcHRpb25zJHplcm8gOiBmYWxzZTtcbiAgdmFyIGRlbGltaXRlciA9IChfb3B0aW9ucyRkZWxpbWl0ZXIgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZGVsaW1pdGVyKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRkZWxpbWl0ZXIgIT09IHZvaWQgMCA/IF9vcHRpb25zJGRlbGltaXRlciA6ICcgJztcbiAgaWYgKCFsb2NhbGUuZm9ybWF0RGlzdGFuY2UpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IGZvcm1hdC5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgdW5pdCkge1xuICAgIHZhciB0b2tlbiA9IFwieFwiLmNvbmNhdCh1bml0LnJlcGxhY2UoLyheLikvLCBmdW5jdGlvbiAobSkge1xuICAgICAgcmV0dXJuIG0udG9VcHBlckNhc2UoKTtcbiAgICB9KSk7XG4gICAgdmFyIHZhbHVlID0gZHVyYXRpb25bdW5pdF07XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgKHplcm8gfHwgZHVyYXRpb25bdW5pdF0pKSB7XG4gICAgICByZXR1cm4gYWNjLmNvbmNhdChsb2NhbGUuZm9ybWF0RGlzdGFuY2UodG9rZW4sIHZhbHVlKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKS5qb2luKGRlbGltaXRlcik7XG4gIHJldHVybiByZXN1bHQ7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkTGVhZGluZ1plcm9zIGZyb20gXCIuLi9fbGliL2FkZExlYWRpbmdaZXJvcy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZm9ybWF0SVNPXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEZvcm1hdCB0aGUgZGF0ZSBhY2NvcmRpbmcgdG8gdGhlIElTTyA4NjAxIHN0YW5kYXJkIChodHRwczovL3N1cHBvcnQuc2FzLmNvbS9kb2N1bWVudGF0aW9uL2NkbC9lbi9scmRpY3QvNjQzMTYvSFRNTC9kZWZhdWx0L3ZpZXdlci5odG0jYTAwMzE2OTgxNC5odG0pLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcgaW4gSVNPIDg2MDEgZm9ybWF0LiBPcHRpb25zIG1heSBiZSBwYXNzZWQgdG8gY29udHJvbCB0aGUgcGFydHMgYW5kIG5vdGF0aW9ucyBvZiB0aGUgZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHsnZXh0ZW5kZWQnfCdiYXNpYyd9IFtvcHRpb25zLmZvcm1hdD0nZXh0ZW5kZWQnXSAtIGlmICdiYXNpYycsIGhpZGUgZGVsaW1pdGVycyBiZXR3ZWVuIGRhdGUgYW5kIHRpbWUgdmFsdWVzLlxuICogQHBhcmFtIHsnY29tcGxldGUnfCdkYXRlJ3wndGltZSd9IFtvcHRpb25zLnJlcHJlc2VudGF0aW9uPSdjb21wbGV0ZSddIC0gZm9ybWF0IGRhdGUsIHRpbWUgd2l0aCBsb2NhbCB0aW1lIHpvbmUsIG9yIGJvdGguXG4gKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nIChpbiBsb2NhbCB0aW1lIHpvbmUpXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBkYXRlYCBtdXN0IG5vdCBiZSBJbnZhbGlkIERhdGVcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmZvcm1hdGAgbXVzdCBiZSAnZXh0ZW5kZWQnIG9yICdiYXNpYydcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLnJlcHJlc2VudGF0aW9uYCBtdXN0IGJlICdkYXRlJywgJ3RpbWUnIG9yICdjb21wbGV0ZSdcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDE4IFNlcHRlbWJlciAyMDE5IGluIElTTyA4NjAxIGZvcm1hdCAobG9jYWwgdGltZSB6b25lIGlzIFVUQyk6XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXRJU08obmV3IERhdGUoMjAxOSwgOCwgMTgsIDE5LCAwLCA1MikpXG4gKiAvLz0+ICcyMDE5LTA5LTE4VDE5OjAwOjUyWidcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDE4IFNlcHRlbWJlciAyMDE5IGluIElTTyA4NjAxLCBzaG9ydCBmb3JtYXQgKGxvY2FsIHRpbWUgem9uZSBpcyBVVEMpOlxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0SVNPKG5ldyBEYXRlKDIwMTksIDgsIDE4LCAxOSwgMCwgNTIpLCB7IGZvcm1hdDogJ2Jhc2ljJyB9KVxuICogLy89PiAnMjAxOTA5MThUMTkwMDUyJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTggU2VwdGVtYmVyIDIwMTkgaW4gSVNPIDg2MDEgZm9ybWF0LCBkYXRlIG9ubHk6XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXRJU08obmV3IERhdGUoMjAxOSwgOCwgMTgsIDE5LCAwLCA1MiksIHsgcmVwcmVzZW50YXRpb246ICdkYXRlJyB9KVxuICogLy89PiAnMjAxOS0wOS0xOCdcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDE4IFNlcHRlbWJlciAyMDE5IGluIElTTyA4NjAxIGZvcm1hdCwgdGltZSBvbmx5IChsb2NhbCB0aW1lIHpvbmUgaXMgVVRDKTpcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdElTTyhuZXcgRGF0ZSgyMDE5LCA4LCAxOCwgMTksIDAsIDUyKSwgeyByZXByZXNlbnRhdGlvbjogJ3RpbWUnIH0pXG4gKiAvLz0+ICcxOTowMDo1MlonXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdElTTyhkYXRlLCBvcHRpb25zKSB7XG4gIHZhciBfb3B0aW9ucyRmb3JtYXQsIF9vcHRpb25zJHJlcHJlc2VudGF0aTtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBvcmlnaW5hbERhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIGlmIChpc05hTihvcmlnaW5hbERhdGUuZ2V0VGltZSgpKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHRpbWUgdmFsdWUnKTtcbiAgfVxuICB2YXIgZm9ybWF0ID0gU3RyaW5nKChfb3B0aW9ucyRmb3JtYXQgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZm9ybWF0KSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRmb3JtYXQgIT09IHZvaWQgMCA/IF9vcHRpb25zJGZvcm1hdCA6ICdleHRlbmRlZCcpO1xuICB2YXIgcmVwcmVzZW50YXRpb24gPSBTdHJpbmcoKF9vcHRpb25zJHJlcHJlc2VudGF0aSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5yZXByZXNlbnRhdGlvbikgIT09IG51bGwgJiYgX29wdGlvbnMkcmVwcmVzZW50YXRpICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRyZXByZXNlbnRhdGkgOiAnY29tcGxldGUnKTtcbiAgaWYgKGZvcm1hdCAhPT0gJ2V4dGVuZGVkJyAmJiBmb3JtYXQgIT09ICdiYXNpYycpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcImZvcm1hdCBtdXN0IGJlICdleHRlbmRlZCcgb3IgJ2Jhc2ljJ1wiKTtcbiAgfVxuICBpZiAocmVwcmVzZW50YXRpb24gIT09ICdkYXRlJyAmJiByZXByZXNlbnRhdGlvbiAhPT0gJ3RpbWUnICYmIHJlcHJlc2VudGF0aW9uICE9PSAnY29tcGxldGUnKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJyZXByZXNlbnRhdGlvbiBtdXN0IGJlICdkYXRlJywgJ3RpbWUnLCBvciAnY29tcGxldGUnXCIpO1xuICB9XG4gIHZhciByZXN1bHQgPSAnJztcbiAgdmFyIHR6T2Zmc2V0ID0gJyc7XG4gIHZhciBkYXRlRGVsaW1pdGVyID0gZm9ybWF0ID09PSAnZXh0ZW5kZWQnID8gJy0nIDogJyc7XG4gIHZhciB0aW1lRGVsaW1pdGVyID0gZm9ybWF0ID09PSAnZXh0ZW5kZWQnID8gJzonIDogJyc7XG5cbiAgLy8gUmVwcmVzZW50YXRpb24gaXMgZWl0aGVyICdkYXRlJyBvciAnY29tcGxldGUnXG4gIGlmIChyZXByZXNlbnRhdGlvbiAhPT0gJ3RpbWUnKSB7XG4gICAgdmFyIGRheSA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0RGF0ZSgpLCAyKTtcbiAgICB2YXIgbW9udGggPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldE1vbnRoKCkgKyAxLCAyKTtcbiAgICB2YXIgeWVhciA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0RnVsbFllYXIoKSwgNCk7XG5cbiAgICAvLyB5eXl5TU1kZCBvciB5eXl5LU1NLWRkLlxuICAgIHJlc3VsdCA9IFwiXCIuY29uY2F0KHllYXIpLmNvbmNhdChkYXRlRGVsaW1pdGVyKS5jb25jYXQobW9udGgpLmNvbmNhdChkYXRlRGVsaW1pdGVyKS5jb25jYXQoZGF5KTtcbiAgfVxuXG4gIC8vIFJlcHJlc2VudGF0aW9uIGlzIGVpdGhlciAndGltZScgb3IgJ2NvbXBsZXRlJ1xuICBpZiAocmVwcmVzZW50YXRpb24gIT09ICdkYXRlJykge1xuICAgIC8vIEFkZCB0aGUgdGltZXpvbmUuXG4gICAgdmFyIG9mZnNldCA9IG9yaWdpbmFsRGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpO1xuICAgIGlmIChvZmZzZXQgIT09IDApIHtcbiAgICAgIHZhciBhYnNvbHV0ZU9mZnNldCA9IE1hdGguYWJzKG9mZnNldCk7XG4gICAgICB2YXIgaG91ck9mZnNldCA9IGFkZExlYWRpbmdaZXJvcyhNYXRoLmZsb29yKGFic29sdXRlT2Zmc2V0IC8gNjApLCAyKTtcbiAgICAgIHZhciBtaW51dGVPZmZzZXQgPSBhZGRMZWFkaW5nWmVyb3MoYWJzb2x1dGVPZmZzZXQgJSA2MCwgMik7XG4gICAgICAvLyBJZiBsZXNzIHRoYW4gMCwgdGhlIHNpZ24gaXMgKywgYmVjYXVzZSBpdCBpcyBhaGVhZCBvZiB0aW1lLlxuICAgICAgdmFyIHNpZ24gPSBvZmZzZXQgPCAwID8gJysnIDogJy0nO1xuICAgICAgdHpPZmZzZXQgPSBcIlwiLmNvbmNhdChzaWduKS5jb25jYXQoaG91ck9mZnNldCwgXCI6XCIpLmNvbmNhdChtaW51dGVPZmZzZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0ek9mZnNldCA9ICdaJztcbiAgICB9XG4gICAgdmFyIGhvdXIgPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldEhvdXJzKCksIDIpO1xuICAgIHZhciBtaW51dGUgPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldE1pbnV0ZXMoKSwgMik7XG4gICAgdmFyIHNlY29uZCA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0U2Vjb25kcygpLCAyKTtcblxuICAgIC8vIElmIHRoZXJlJ3MgYWxzbyBkYXRlLCBzZXBhcmF0ZSBpdCB3aXRoIHRpbWUgd2l0aCAnVCdcbiAgICB2YXIgc2VwYXJhdG9yID0gcmVzdWx0ID09PSAnJyA/ICcnIDogJ1QnO1xuXG4gICAgLy8gQ3JlYXRlcyBhIHRpbWUgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgaG91ciwgbWludXRlLCBhbmQgc2Vjb25kLCBzZXBhcmF0ZWQgYnkgZGVsaW1pdGVycywgaWYgZGVmaW5lZC5cbiAgICB2YXIgdGltZSA9IFtob3VyLCBtaW51dGUsIHNlY29uZF0uam9pbih0aW1lRGVsaW1pdGVyKTtcblxuICAgIC8vIEhIbW1zcyBvciBISDptbTpzcy5cbiAgICByZXN1bHQgPSBcIlwiLmNvbmNhdChyZXN1bHQpLmNvbmNhdChzZXBhcmF0b3IpLmNvbmNhdCh0aW1lKS5jb25jYXQodHpPZmZzZXQpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgaXNWYWxpZCBmcm9tIFwiLi4vaXNWYWxpZC9pbmRleC5qc1wiO1xuaW1wb3J0IGFkZExlYWRpbmdaZXJvcyBmcm9tIFwiLi4vX2xpYi9hZGRMZWFkaW5nWmVyb3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZm9ybWF0SVNPOTA3NVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBGb3JtYXQgdGhlIGRhdGUgYWNjb3JkaW5nIHRvIHRoZSBJU08gOTA3NSBzdGFuZGFyZCAoaHR0cHM6Ly9kZXYubXlzcWwuY29tL2RvYy9yZWZtYW4vNS43L2VuL2RhdGUtYW5kLXRpbWUtZnVuY3Rpb25zLmh0bWwjZnVuY3Rpb25fZ2V0LWZvcm1hdCkuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZyBpbiBJU08gOTA3NSBmb3JtYXQuIE9wdGlvbnMgbWF5IGJlIHBhc3NlZCB0byBjb250cm9sIHRoZSBwYXJ0cyBhbmQgbm90YXRpb25zIG9mIHRoZSBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0geydleHRlbmRlZCd8J2Jhc2ljJ30gW29wdGlvbnMuZm9ybWF0PSdleHRlbmRlZCddIC0gaWYgJ2Jhc2ljJywgaGlkZSBkZWxpbWl0ZXJzIGJldHdlZW4gZGF0ZSBhbmQgdGltZSB2YWx1ZXMuXG4gKiBAcGFyYW0geydjb21wbGV0ZSd8J2RhdGUnfCd0aW1lJ30gW29wdGlvbnMucmVwcmVzZW50YXRpb249J2NvbXBsZXRlJ10gLSBmb3JtYXQgZGF0ZSwgdGltZSwgb3IgYm90aC5cbiAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmdcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYGRhdGVgIG11c3Qgbm90IGJlIEludmFsaWQgRGF0ZVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuZm9ybWF0YCBtdXN0IGJlICdleHRlbmRlZCcgb3IgJ2Jhc2ljJ1xuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMucmVwcmVzZW50YXRpb25gIG11c3QgYmUgJ2RhdGUnLCAndGltZScgb3IgJ2NvbXBsZXRlJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTggU2VwdGVtYmVyIDIwMTkgaW4gSVNPIDkwNzUgZm9ybWF0OlxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0SVNPOTA3NShuZXcgRGF0ZSgyMDE5LCA4LCAxOCwgMTksIDAsIDUyKSlcbiAqIC8vPT4gJzIwMTktMDktMTggMTk6MDA6NTInXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxOCBTZXB0ZW1iZXIgMjAxOSBpbiBJU08gOTA3NSwgc2hvcnQgZm9ybWF0OlxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0SVNPOTA3NShuZXcgRGF0ZSgyMDE5LCA4LCAxOCwgMTksIDAsIDUyKSwgeyBmb3JtYXQ6ICdiYXNpYycgfSlcbiAqIC8vPT4gJzIwMTkwOTE4IDE5MDA1MidcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDE4IFNlcHRlbWJlciAyMDE5IGluIElTTyA5MDc1IGZvcm1hdCwgZGF0ZSBvbmx5OlxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0SVNPOTA3NShuZXcgRGF0ZSgyMDE5LCA4LCAxOCwgMTksIDAsIDUyKSwgeyByZXByZXNlbnRhdGlvbjogJ2RhdGUnIH0pXG4gKiAvLz0+ICcyMDE5LTA5LTE4J1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTggU2VwdGVtYmVyIDIwMTkgaW4gSVNPIDkwNzUgZm9ybWF0LCB0aW1lIG9ubHk6XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXRJU085MDc1KG5ldyBEYXRlKDIwMTksIDgsIDE4LCAxOSwgMCwgNTIpLCB7IHJlcHJlc2VudGF0aW9uOiAndGltZScgfSlcbiAqIC8vPT4gJzE5OjAwOjUyJ1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmb3JtYXRJU085MDc1KGRpcnR5RGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX29wdGlvbnMkZm9ybWF0LCBfb3B0aW9ucyRyZXByZXNlbnRhdGk7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCIxIGFyZ3VtZW50IHJlcXVpcmVkLCBidXQgb25seSBcIi5jb25jYXQoYXJndW1lbnRzLmxlbmd0aCwgXCIgcHJlc2VudFwiKSk7XG4gIH1cbiAgdmFyIG9yaWdpbmFsRGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICBpZiAoIWlzVmFsaWQob3JpZ2luYWxEYXRlKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHRpbWUgdmFsdWUnKTtcbiAgfVxuICB2YXIgZm9ybWF0ID0gU3RyaW5nKChfb3B0aW9ucyRmb3JtYXQgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZm9ybWF0KSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRmb3JtYXQgIT09IHZvaWQgMCA/IF9vcHRpb25zJGZvcm1hdCA6ICdleHRlbmRlZCcpO1xuICB2YXIgcmVwcmVzZW50YXRpb24gPSBTdHJpbmcoKF9vcHRpb25zJHJlcHJlc2VudGF0aSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5yZXByZXNlbnRhdGlvbikgIT09IG51bGwgJiYgX29wdGlvbnMkcmVwcmVzZW50YXRpICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRyZXByZXNlbnRhdGkgOiAnY29tcGxldGUnKTtcbiAgaWYgKGZvcm1hdCAhPT0gJ2V4dGVuZGVkJyAmJiBmb3JtYXQgIT09ICdiYXNpYycpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcImZvcm1hdCBtdXN0IGJlICdleHRlbmRlZCcgb3IgJ2Jhc2ljJ1wiKTtcbiAgfVxuICBpZiAocmVwcmVzZW50YXRpb24gIT09ICdkYXRlJyAmJiByZXByZXNlbnRhdGlvbiAhPT0gJ3RpbWUnICYmIHJlcHJlc2VudGF0aW9uICE9PSAnY29tcGxldGUnKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJyZXByZXNlbnRhdGlvbiBtdXN0IGJlICdkYXRlJywgJ3RpbWUnLCBvciAnY29tcGxldGUnXCIpO1xuICB9XG4gIHZhciByZXN1bHQgPSAnJztcbiAgdmFyIGRhdGVEZWxpbWl0ZXIgPSBmb3JtYXQgPT09ICdleHRlbmRlZCcgPyAnLScgOiAnJztcbiAgdmFyIHRpbWVEZWxpbWl0ZXIgPSBmb3JtYXQgPT09ICdleHRlbmRlZCcgPyAnOicgOiAnJztcblxuICAvLyBSZXByZXNlbnRhdGlvbiBpcyBlaXRoZXIgJ2RhdGUnIG9yICdjb21wbGV0ZSdcbiAgaWYgKHJlcHJlc2VudGF0aW9uICE9PSAndGltZScpIHtcbiAgICB2YXIgZGF5ID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXREYXRlKCksIDIpO1xuICAgIHZhciBtb250aCA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0TW9udGgoKSArIDEsIDIpO1xuICAgIHZhciB5ZWFyID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXRGdWxsWWVhcigpLCA0KTtcblxuICAgIC8vIHl5eXlNTWRkIG9yIHl5eXktTU0tZGQuXG4gICAgcmVzdWx0ID0gXCJcIi5jb25jYXQoeWVhcikuY29uY2F0KGRhdGVEZWxpbWl0ZXIpLmNvbmNhdChtb250aCkuY29uY2F0KGRhdGVEZWxpbWl0ZXIpLmNvbmNhdChkYXkpO1xuICB9XG5cbiAgLy8gUmVwcmVzZW50YXRpb24gaXMgZWl0aGVyICd0aW1lJyBvciAnY29tcGxldGUnXG4gIGlmIChyZXByZXNlbnRhdGlvbiAhPT0gJ2RhdGUnKSB7XG4gICAgdmFyIGhvdXIgPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldEhvdXJzKCksIDIpO1xuICAgIHZhciBtaW51dGUgPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldE1pbnV0ZXMoKSwgMik7XG4gICAgdmFyIHNlY29uZCA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0U2Vjb25kcygpLCAyKTtcblxuICAgIC8vIElmIHRoZXJlJ3MgYWxzbyBkYXRlLCBzZXBhcmF0ZSBpdCB3aXRoIHRpbWUgd2l0aCBhIHNwYWNlXG4gICAgdmFyIHNlcGFyYXRvciA9IHJlc3VsdCA9PT0gJycgPyAnJyA6ICcgJztcblxuICAgIC8vIEhIbW1zcyBvciBISDptbTpzcy5cbiAgICByZXN1bHQgPSBcIlwiLmNvbmNhdChyZXN1bHQpLmNvbmNhdChzZXBhcmF0b3IpLmNvbmNhdChob3VyKS5jb25jYXQodGltZURlbGltaXRlcikuY29uY2F0KG1pbnV0ZSkuY29uY2F0KHRpbWVEZWxpbWl0ZXIpLmNvbmNhdChzZWNvbmQpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZlwiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZm9ybWF0SVNPRHVyYXRpb25cbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgRm9ybWF0IGEgZHVyYXRpb24gb2JqZWN0IGFjY29yZGluZyBhcyBJU08gODYwMSBkdXJhdGlvbiBzdHJpbmdcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEZvcm1hdCBhIGR1cmF0aW9uIG9iamVjdCBhY2NvcmRpbmcgdG8gdGhlIElTTyA4NjAxIGR1cmF0aW9uIHN0YW5kYXJkIChodHRwczovL3d3dy5kaWdpLmNvbS9yZXNvdXJjZXMvZG9jdW1lbnRhdGlvbi9kaWdpZG9jcy85MDAwMTQzNy0xMy9yZWZlcmVuY2Uvcl9pc29fODYwMV9kdXJhdGlvbl9mb3JtYXQuaHRtKVxuICpcbiAqIEBwYXJhbSB7RHVyYXRpb259IGR1cmF0aW9uIC0gdGhlIGR1cmF0aW9uIHRvIGZvcm1hdFxuICpcbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBJU08gODYwMSBkdXJhdGlvbiBzdHJpbmdcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gUmVxdWlyZXMgMSBhcmd1bWVudFxuICogQHRocm93cyB7RXJyb3J9IEFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvcm1hdCB0aGUgZ2l2ZW4gZHVyYXRpb24gYXMgSVNPIDg2MDEgc3RyaW5nXG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXRJU09EdXJhdGlvbih7XG4gKiAgIHllYXJzOiAzOSxcbiAqICAgbW9udGhzOiAyLFxuICogICBkYXlzOiAyMCxcbiAqICAgaG91cnM6IDcsXG4gKiAgIG1pbnV0ZXM6IDUsXG4gKiAgIHNlY29uZHM6IDBcbiAqIH0pXG4gKiAvLz0+ICdQMzlZMk0yMERUMEgwTTBTJ1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmb3JtYXRJU09EdXJhdGlvbihkdXJhdGlvbikge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgaWYgKF90eXBlb2YoZHVyYXRpb24pICE9PSAnb2JqZWN0JykgdGhyb3cgbmV3IEVycm9yKCdEdXJhdGlvbiBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICB2YXIgX2R1cmF0aW9uJHllYXJzID0gZHVyYXRpb24ueWVhcnMsXG4gICAgeWVhcnMgPSBfZHVyYXRpb24keWVhcnMgPT09IHZvaWQgMCA/IDAgOiBfZHVyYXRpb24keWVhcnMsXG4gICAgX2R1cmF0aW9uJG1vbnRocyA9IGR1cmF0aW9uLm1vbnRocyxcbiAgICBtb250aHMgPSBfZHVyYXRpb24kbW9udGhzID09PSB2b2lkIDAgPyAwIDogX2R1cmF0aW9uJG1vbnRocyxcbiAgICBfZHVyYXRpb24kZGF5cyA9IGR1cmF0aW9uLmRheXMsXG4gICAgZGF5cyA9IF9kdXJhdGlvbiRkYXlzID09PSB2b2lkIDAgPyAwIDogX2R1cmF0aW9uJGRheXMsXG4gICAgX2R1cmF0aW9uJGhvdXJzID0gZHVyYXRpb24uaG91cnMsXG4gICAgaG91cnMgPSBfZHVyYXRpb24kaG91cnMgPT09IHZvaWQgMCA/IDAgOiBfZHVyYXRpb24kaG91cnMsXG4gICAgX2R1cmF0aW9uJG1pbnV0ZXMgPSBkdXJhdGlvbi5taW51dGVzLFxuICAgIG1pbnV0ZXMgPSBfZHVyYXRpb24kbWludXRlcyA9PT0gdm9pZCAwID8gMCA6IF9kdXJhdGlvbiRtaW51dGVzLFxuICAgIF9kdXJhdGlvbiRzZWNvbmRzID0gZHVyYXRpb24uc2Vjb25kcyxcbiAgICBzZWNvbmRzID0gX2R1cmF0aW9uJHNlY29uZHMgPT09IHZvaWQgMCA/IDAgOiBfZHVyYXRpb24kc2Vjb25kcztcbiAgcmV0dXJuIFwiUFwiLmNvbmNhdCh5ZWFycywgXCJZXCIpLmNvbmNhdChtb250aHMsIFwiTVwiKS5jb25jYXQoZGF5cywgXCJEVFwiKS5jb25jYXQoaG91cnMsIFwiSFwiKS5jb25jYXQobWludXRlcywgXCJNXCIpLmNvbmNhdChzZWNvbmRzLCBcIlNcIik7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgaXNWYWxpZCBmcm9tIFwiLi4vaXNWYWxpZC9pbmRleC5qc1wiO1xuaW1wb3J0IGFkZExlYWRpbmdaZXJvcyBmcm9tIFwiLi4vX2xpYi9hZGRMZWFkaW5nWmVyb3MvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGZvcm1hdFJGQzMzMzlcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgRm9ybWF0IHRoZSBkYXRlIGFjY29yZGluZyB0byB0aGUgUkZDIDMzMzkgc3RhbmRhcmQgKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzMzM5I3NlY3Rpb24tNS42KS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nIGluIFJGQyAzMzM5IGZvcm1hdC4gT3B0aW9ucyBtYXkgYmUgcGFzc2VkIHRvIGNvbnRyb2wgdGhlIHBhcnRzIGFuZCBub3RhdGlvbnMgb2YgdGhlIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7MHwxfDJ8M30gW29wdGlvbnMuZnJhY3Rpb25EaWdpdHM9MF0gLSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50IGFmdGVyIHNlY29uZHNcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmdcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYGRhdGVgIG11c3Qgbm90IGJlIEludmFsaWQgRGF0ZVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuZnJhY3Rpb25EaWdpdHNgIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAzXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxOCBTZXB0ZW1iZXIgMjAxOSBpbiBSRkMgMzMzOSBmb3JtYXQ6XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXRSRkMzMzM5KG5ldyBEYXRlKDIwMTksIDgsIDE4LCAxOSwgMCwgNTIpKVxuICogLy89PiAnMjAxOS0wOS0xOFQxOTowMDo1MlonXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxOCBTZXB0ZW1iZXIgMjAxOSBpbiBSRkMgMzMzOSBmb3JtYXQsIDIgZGlnaXRzIG9mIHNlY29uZCBmcmFjdGlvbjpcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdFJGQzMzMzkobmV3IERhdGUoMjAxOSwgOCwgMTgsIDE5LCAwLCA1MiwgMjM0KSwgeyBmcmFjdGlvbkRpZ2l0czogMiB9KVxuICogLy89PiAnMjAxOS0wOS0xOFQxOTowMDo1Mi4yM1onXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxOCBTZXB0ZW1iZXIgMjAxOSBpbiBSRkMgMzMzOSBmb3JtYXQsIDMgZGlnaXRzIG9mIHNlY29uZCBmcmFjdGlvblxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0UkZDMzMzOShuZXcgRGF0ZSgyMDE5LCA4LCAxOCwgMTksIDAsIDUyLCAyMzQpLCB7IGZyYWN0aW9uRGlnaXRzOiAzIH0pXG4gKiAvLz0+ICcyMDE5LTA5LTE4VDE5OjAwOjUyLjIzNFonXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdFJGQzMzMzkoZGlydHlEYXRlLCBvcHRpb25zKSB7XG4gIHZhciBfb3B0aW9ucyRmcmFjdGlvbkRpZ2k7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCIxIGFyZ3VtZW50cyByZXF1aXJlZCwgYnV0IG9ubHkgXCIuY29uY2F0KGFyZ3VtZW50cy5sZW5ndGgsIFwiIHByZXNlbnRcIikpO1xuICB9XG4gIHZhciBvcmlnaW5hbERhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgaWYgKCFpc1ZhbGlkKG9yaWdpbmFsRGF0ZSkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCB0aW1lIHZhbHVlJyk7XG4gIH1cbiAgdmFyIGZyYWN0aW9uRGlnaXRzID0gTnVtYmVyKChfb3B0aW9ucyRmcmFjdGlvbkRpZ2kgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZnJhY3Rpb25EaWdpdHMpICE9PSBudWxsICYmIF9vcHRpb25zJGZyYWN0aW9uRGlnaSAhPT0gdm9pZCAwID8gX29wdGlvbnMkZnJhY3Rpb25EaWdpIDogMCk7XG5cbiAgLy8gVGVzdCBpZiBmcmFjdGlvbkRpZ2l0cyBpcyBiZXR3ZWVuIDAgYW5kIDMgX2FuZF8gaXMgbm90IE5hTlxuICBpZiAoIShmcmFjdGlvbkRpZ2l0cyA+PSAwICYmIGZyYWN0aW9uRGlnaXRzIDw9IDMpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2ZyYWN0aW9uRGlnaXRzIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAzIGluY2x1c2l2ZWx5Jyk7XG4gIH1cbiAgdmFyIGRheSA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0RGF0ZSgpLCAyKTtcbiAgdmFyIG1vbnRoID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXRNb250aCgpICsgMSwgMik7XG4gIHZhciB5ZWFyID0gb3JpZ2luYWxEYXRlLmdldEZ1bGxZZWFyKCk7XG4gIHZhciBob3VyID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXRIb3VycygpLCAyKTtcbiAgdmFyIG1pbnV0ZSA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0TWludXRlcygpLCAyKTtcbiAgdmFyIHNlY29uZCA9IGFkZExlYWRpbmdaZXJvcyhvcmlnaW5hbERhdGUuZ2V0U2Vjb25kcygpLCAyKTtcbiAgdmFyIGZyYWN0aW9uYWxTZWNvbmQgPSAnJztcbiAgaWYgKGZyYWN0aW9uRGlnaXRzID4gMCkge1xuICAgIHZhciBtaWxsaXNlY29uZHMgPSBvcmlnaW5hbERhdGUuZ2V0TWlsbGlzZWNvbmRzKCk7XG4gICAgdmFyIGZyYWN0aW9uYWxTZWNvbmRzID0gTWF0aC5mbG9vcihtaWxsaXNlY29uZHMgKiBNYXRoLnBvdygxMCwgZnJhY3Rpb25EaWdpdHMgLSAzKSk7XG4gICAgZnJhY3Rpb25hbFNlY29uZCA9ICcuJyArIGFkZExlYWRpbmdaZXJvcyhmcmFjdGlvbmFsU2Vjb25kcywgZnJhY3Rpb25EaWdpdHMpO1xuICB9XG4gIHZhciBvZmZzZXQgPSAnJztcbiAgdmFyIHR6T2Zmc2V0ID0gb3JpZ2luYWxEYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gIGlmICh0ek9mZnNldCAhPT0gMCkge1xuICAgIHZhciBhYnNvbHV0ZU9mZnNldCA9IE1hdGguYWJzKHR6T2Zmc2V0KTtcbiAgICB2YXIgaG91ck9mZnNldCA9IGFkZExlYWRpbmdaZXJvcyh0b0ludGVnZXIoYWJzb2x1dGVPZmZzZXQgLyA2MCksIDIpO1xuICAgIHZhciBtaW51dGVPZmZzZXQgPSBhZGRMZWFkaW5nWmVyb3MoYWJzb2x1dGVPZmZzZXQgJSA2MCwgMik7XG4gICAgLy8gSWYgbGVzcyB0aGFuIDAsIHRoZSBzaWduIGlzICssIGJlY2F1c2UgaXQgaXMgYWhlYWQgb2YgdGltZS5cbiAgICB2YXIgc2lnbiA9IHR6T2Zmc2V0IDwgMCA/ICcrJyA6ICctJztcbiAgICBvZmZzZXQgPSBcIlwiLmNvbmNhdChzaWduKS5jb25jYXQoaG91ck9mZnNldCwgXCI6XCIpLmNvbmNhdChtaW51dGVPZmZzZXQpO1xuICB9IGVsc2Uge1xuICAgIG9mZnNldCA9ICdaJztcbiAgfVxuICByZXR1cm4gXCJcIi5jb25jYXQoeWVhciwgXCItXCIpLmNvbmNhdChtb250aCwgXCItXCIpLmNvbmNhdChkYXksIFwiVFwiKS5jb25jYXQoaG91ciwgXCI6XCIpLmNvbmNhdChtaW51dGUsIFwiOlwiKS5jb25jYXQoc2Vjb25kKS5jb25jYXQoZnJhY3Rpb25hbFNlY29uZCkuY29uY2F0KG9mZnNldCk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgaXNWYWxpZCBmcm9tIFwiLi4vaXNWYWxpZC9pbmRleC5qc1wiO1xuaW1wb3J0IGFkZExlYWRpbmdaZXJvcyBmcm9tIFwiLi4vX2xpYi9hZGRMZWFkaW5nWmVyb3MvaW5kZXguanNcIjtcbnZhciBkYXlzID0gWydTdW4nLCAnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnXTtcbnZhciBtb250aHMgPSBbJ0phbicsICdGZWInLCAnTWFyJywgJ0FwcicsICdNYXknLCAnSnVuJywgJ0p1bCcsICdBdWcnLCAnU2VwJywgJ09jdCcsICdOb3YnLCAnRGVjJ107XG5cbi8qKlxuICogQG5hbWUgZm9ybWF0UkZDNzIzMVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBGb3JtYXQgdGhlIGRhdGUgYWNjb3JkaW5nIHRvIHRoZSBSRkMgNzIzMSBzdGFuZGFyZCAoaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi03LjEuMS4xKS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nIGluIFJGQyA3MjMxIGZvcm1hdC5cbiAqIFRoZSByZXN1bHQgd2lsbCBhbHdheXMgYmUgaW4gVVRDIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge1N0cmluZ30gdGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZ1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgZGF0ZWAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxOCBTZXB0ZW1iZXIgMjAxOSBpbiBSRkMgNzIzMSBmb3JtYXQ6XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXRSRkM3MjMxKG5ldyBEYXRlKDIwMTksIDgsIDE4LCAxOSwgMCwgNTIpKVxuICogLy89PiAnV2VkLCAxOCBTZXAgMjAxOSAxOTowMDo1MiBHTVQnXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdFJGQzcyMzEoZGlydHlEYXRlKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCIxIGFyZ3VtZW50cyByZXF1aXJlZCwgYnV0IG9ubHkgXCIuY29uY2F0KGFyZ3VtZW50cy5sZW5ndGgsIFwiIHByZXNlbnRcIikpO1xuICB9XG4gIHZhciBvcmlnaW5hbERhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgaWYgKCFpc1ZhbGlkKG9yaWdpbmFsRGF0ZSkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCB0aW1lIHZhbHVlJyk7XG4gIH1cbiAgdmFyIGRheU5hbWUgPSBkYXlzW29yaWdpbmFsRGF0ZS5nZXRVVENEYXkoKV07XG4gIHZhciBkYXlPZk1vbnRoID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXRVVENEYXRlKCksIDIpO1xuICB2YXIgbW9udGhOYW1lID0gbW9udGhzW29yaWdpbmFsRGF0ZS5nZXRVVENNb250aCgpXTtcbiAgdmFyIHllYXIgPSBvcmlnaW5hbERhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgdmFyIGhvdXIgPSBhZGRMZWFkaW5nWmVyb3Mob3JpZ2luYWxEYXRlLmdldFVUQ0hvdXJzKCksIDIpO1xuICB2YXIgbWludXRlID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXRVVENNaW51dGVzKCksIDIpO1xuICB2YXIgc2Vjb25kID0gYWRkTGVhZGluZ1plcm9zKG9yaWdpbmFsRGF0ZS5nZXRVVENTZWNvbmRzKCksIDIpO1xuXG4gIC8vIFJlc3VsdCB2YXJpYWJsZXMuXG4gIHJldHVybiBcIlwiLmNvbmNhdChkYXlOYW1lLCBcIiwgXCIpLmNvbmNhdChkYXlPZk1vbnRoLCBcIiBcIikuY29uY2F0KG1vbnRoTmFtZSwgXCIgXCIpLmNvbmNhdCh5ZWFyLCBcIiBcIikuY29uY2F0KGhvdXIsIFwiOlwiKS5jb25jYXQobWludXRlLCBcIjpcIikuY29uY2F0KHNlY29uZCwgXCIgR01UXCIpO1xufSIsImltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL19saWIvZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cy9pbmRleC5qc1wiO1xuaW1wb3J0IGZvcm1hdCBmcm9tIFwiLi4vZm9ybWF0L2luZGV4LmpzXCI7XG5pbXBvcnQgZGVmYXVsdExvY2FsZSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0TG9jYWxlL2luZGV4LmpzXCI7XG5pbXBvcnQgc3ViTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9zdWJNaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMgZnJvbSBcIi4uL19saWIvZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGZvcm1hdFJlbGF0aXZlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJlcHJlc2VudCB0aGUgZGF0ZSBpbiB3b3JkcyByZWxhdGl2ZSB0byB0aGUgZ2l2ZW4gYmFzZSBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmVwcmVzZW50IHRoZSBkYXRlIGluIHdvcmRzIHJlbGF0aXZlIHRvIHRoZSBnaXZlbiBiYXNlIGRhdGUuXG4gKlxuICogfCBEaXN0YW5jZSB0byB0aGUgYmFzZSBkYXRlIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgUHJldmlvdXMgNiBkYXlzICAgICAgICAgICB8IGxhc3QgU3VuZGF5IGF0IDA0OjMwIEFNICAgfFxuICogfCBMYXN0IGRheSAgICAgICAgICAgICAgICAgIHwgeWVzdGVyZGF5IGF0IDA0OjMwIEFNICAgICB8XG4gKiB8IFNhbWUgZGF5ICAgICAgICAgICAgICAgICAgfCB0b2RheSBhdCAwNDozMCBBTSAgICAgICAgIHxcbiAqIHwgTmV4dCBkYXkgICAgICAgICAgICAgICAgICB8IHRvbW9ycm93IGF0IDA0OjMwIEFNICAgICAgfFxuICogfCBOZXh0IDYgZGF5cyAgICAgICAgICAgICAgIHwgU3VuZGF5IGF0IDA0OjMwIEFNICAgICAgICB8XG4gKiB8IE90aGVyICAgICAgICAgICAgICAgICAgICAgfCAxMi8zMS8yMDE3ICAgICAgICAgICAgICAgIHxcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gZm9ybWF0XG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBiYXNlRGF0ZSAtIHRoZSBkYXRlIHRvIGNvbXBhcmUgd2l0aFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgZGF0ZSBpbiB3b3Jkc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYGRhdGVgIG11c3Qgbm90IGJlIEludmFsaWQgRGF0ZVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYGJhc2VEYXRlYCBtdXN0IG5vdCBiZSBJbnZhbGlkIERhdGVcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLndlZWtTdGFydHNPbmAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDZcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmxvY2FsZWAgbXVzdCBjb250YWluIGBsb2NhbGl6ZWAgcHJvcGVydHlcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmxvY2FsZWAgbXVzdCBjb250YWluIGBmb3JtYXRMb25nYCBwcm9wZXJ0eVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMubG9jYWxlYCBtdXN0IGNvbnRhaW4gYGZvcm1hdFJlbGF0aXZlYCBwcm9wZXJ0eVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgdGhlIGRhdGUgb2YgNiBkYXlzIGFnbyBpbiB3b3JkcyByZWxhdGl2ZSB0byB0aGUgZ2l2ZW4gYmFzZSBkYXRlLiBJbiB0aGlzIGV4YW1wbGUsIHRvZGF5IGlzIFdlZG5lc2RheVxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0UmVsYXRpdmUoYWRkRGF5cyhuZXcgRGF0ZSgpLCAtNiksIG5ldyBEYXRlKCkpXG4gKiAvLz0+IFwibGFzdCBUaHVyc2RheSBhdCAxMjo0NSBBTVwiXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdFJlbGF0aXZlKGRpcnR5RGF0ZSwgZGlydHlCYXNlRGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX29wdGlvbnMkbG9jYWxlLCBfcmVmMiwgX3JlZjMsIF9yZWY0LCBfb3B0aW9ucyR3ZWVrU3RhcnRzT24sIF9vcHRpb25zJGxvY2FsZTIsIF9vcHRpb25zJGxvY2FsZTIkb3B0aSwgX2RlZmF1bHRPcHRpb25zJGxvY2FsLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyO1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGJhc2VEYXRlID0gdG9EYXRlKGRpcnR5QmFzZURhdGUpO1xuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICB2YXIgbG9jYWxlID0gKF9yZWYgPSAoX29wdGlvbnMkbG9jYWxlID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmxvY2FsZSkgIT09IG51bGwgJiYgX29wdGlvbnMkbG9jYWxlICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRsb2NhbGUgOiBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiBkZWZhdWx0TG9jYWxlO1xuICB2YXIgd2Vla1N0YXJ0c09uID0gdG9JbnRlZ2VyKChfcmVmMiA9IChfcmVmMyA9IChfcmVmNCA9IChfb3B0aW9ucyR3ZWVrU3RhcnRzT24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gIT09IHZvaWQgMCA/IF9vcHRpb25zJHdlZWtTdGFydHNPbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZTIgPSBvcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZTIkb3B0aSA9IF9vcHRpb25zJGxvY2FsZTIub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlMiRvcHRpID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUyJG9wdGkud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmNCAhPT0gdm9pZCAwID8gX3JlZjQgOiBkZWZhdWx0T3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYzICE9PSB2b2lkIDAgPyBfcmVmMyA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsMi53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDAgPyBfcmVmMiA6IDApO1xuICBpZiAoIWxvY2FsZS5sb2NhbGl6ZSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdsb2NhbGUgbXVzdCBjb250YWluIGxvY2FsaXplIHByb3BlcnR5Jyk7XG4gIH1cbiAgaWYgKCFsb2NhbGUuZm9ybWF0TG9uZykge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdsb2NhbGUgbXVzdCBjb250YWluIGZvcm1hdExvbmcgcHJvcGVydHknKTtcbiAgfVxuICBpZiAoIWxvY2FsZS5mb3JtYXRSZWxhdGl2ZSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdsb2NhbGUgbXVzdCBjb250YWluIGZvcm1hdFJlbGF0aXZlIHByb3BlcnR5Jyk7XG4gIH1cbiAgdmFyIGRpZmYgPSBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMoZGF0ZSwgYmFzZURhdGUpO1xuICBpZiAoaXNOYU4oZGlmZikpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCB0aW1lIHZhbHVlJyk7XG4gIH1cbiAgdmFyIHRva2VuO1xuICBpZiAoZGlmZiA8IC02KSB7XG4gICAgdG9rZW4gPSAnb3RoZXInO1xuICB9IGVsc2UgaWYgKGRpZmYgPCAtMSkge1xuICAgIHRva2VuID0gJ2xhc3RXZWVrJztcbiAgfSBlbHNlIGlmIChkaWZmIDwgMCkge1xuICAgIHRva2VuID0gJ3llc3RlcmRheSc7XG4gIH0gZWxzZSBpZiAoZGlmZiA8IDEpIHtcbiAgICB0b2tlbiA9ICd0b2RheSc7XG4gIH0gZWxzZSBpZiAoZGlmZiA8IDIpIHtcbiAgICB0b2tlbiA9ICd0b21vcnJvdyc7XG4gIH0gZWxzZSBpZiAoZGlmZiA8IDcpIHtcbiAgICB0b2tlbiA9ICduZXh0V2Vlayc7XG4gIH0gZWxzZSB7XG4gICAgdG9rZW4gPSAnb3RoZXInO1xuICB9XG4gIHZhciB1dGNEYXRlID0gc3ViTWlsbGlzZWNvbmRzKGRhdGUsIGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoZGF0ZSkpO1xuICB2YXIgdXRjQmFzZURhdGUgPSBzdWJNaWxsaXNlY29uZHMoYmFzZURhdGUsIGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoYmFzZURhdGUpKTtcbiAgdmFyIGZvcm1hdFN0ciA9IGxvY2FsZS5mb3JtYXRSZWxhdGl2ZSh0b2tlbiwgdXRjRGF0ZSwgdXRjQmFzZURhdGUsIHtcbiAgICBsb2NhbGU6IGxvY2FsZSxcbiAgICB3ZWVrU3RhcnRzT246IHdlZWtTdGFydHNPblxuICB9KTtcbiAgcmV0dXJuIGZvcm1hdChkYXRlLCBmb3JtYXRTdHIsIHtcbiAgICBsb2NhbGU6IGxvY2FsZSxcbiAgICB3ZWVrU3RhcnRzT246IHdlZWtTdGFydHNPblxuICB9KTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBmcm9tVW5peFRpbWVcbiAqIEBjYXRlZ29yeSBUaW1lc3RhbXAgSGVscGVyc1xuICogQHN1bW1hcnkgQ3JlYXRlIGEgZGF0ZSBmcm9tIGEgVW5peCB0aW1lc3RhbXAuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDcmVhdGUgYSBkYXRlIGZyb20gYSBVbml4IHRpbWVzdGFtcCAoaW4gc2Vjb25kcykuIERlY2ltYWwgdmFsdWVzIHdpbGwgYmUgZGlzY2FyZGVkLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSB1bml4VGltZSAtIHRoZSBnaXZlbiBVbml4IHRpbWVzdGFtcCAoaW4gc2Vjb25kcylcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgZGF0ZVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENyZWF0ZSB0aGUgZGF0ZSAyOSBGZWJydWFyeSAyMDEyIDExOjQ1OjA1OlxuICogY29uc3QgcmVzdWx0ID0gZnJvbVVuaXhUaW1lKDEzMzA1MTU5MDUpXG4gKiAvLz0+IFdlZCBGZWIgMjkgMjAxMiAxMTo0NTowNVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmcm9tVW5peFRpbWUoZGlydHlVbml4VGltZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIHVuaXhUaW1lID0gdG9JbnRlZ2VyKGRpcnR5VW5peFRpbWUpO1xuICByZXR1cm4gdG9EYXRlKHVuaXhUaW1lICogMTAwMCk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXREYXRlXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgZGF5IG9mIHRoZSBtb250aCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgZGF5IG9mIHRoZSBtb250aCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBkYXkgb2YgbW9udGhcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCBkYXkgb2YgdGhlIG1vbnRoIGlzIDI5IEZlYnJ1YXJ5IDIwMTI/XG4gKiBjb25zdCByZXN1bHQgPSBnZXREYXRlKG5ldyBEYXRlKDIwMTIsIDEsIDI5KSlcbiAqIC8vPT4gMjlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RGF0ZShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkYXlPZk1vbnRoID0gZGF0ZS5nZXREYXRlKCk7XG4gIHJldHVybiBkYXlPZk1vbnRoO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0RGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIGRheSBvZiB0aGUgd2VlayBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgZGF5IG9mIHRoZSB3ZWVrIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMgezB8MXwyfDN8NHw1fDZ9IHRoZSBkYXkgb2Ygd2VlaywgMCByZXByZXNlbnRzIFN1bmRheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIGRheSBvZiB0aGUgd2VlayBpcyAyOSBGZWJydWFyeSAyMDEyP1xuICogY29uc3QgcmVzdWx0ID0gZ2V0RGF5KG5ldyBEYXRlKDIwMTIsIDEsIDI5KSlcbiAqIC8vPT4gM1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREYXkoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGF5ID0gZGF0ZS5nZXREYXkoKTtcbiAgcmV0dXJuIGRheTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mWWVhciBmcm9tIFwiLi4vc3RhcnRPZlllYXIvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0RGF5T2ZZZWFyXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgZGF5IG9mIHRoZSB5ZWFyIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBkYXkgb2YgdGhlIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgZGF5IG9mIHllYXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCBkYXkgb2YgdGhlIHllYXIgaXMgMiBKdWx5IDIwMTQ/XG4gKiBjb25zdCByZXN1bHQgPSBnZXREYXlPZlllYXIobmV3IERhdGUoMjAxNCwgNiwgMikpXG4gKiAvLz0+IDE4M1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREYXlPZlllYXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGlmZiA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhkYXRlLCBzdGFydE9mWWVhcihkYXRlKSk7XG4gIHZhciBkYXlPZlllYXIgPSBkaWZmICsgMTtcbiAgcmV0dXJuIGRheU9mWWVhcjtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldERheXNJbk1vbnRoXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgZGF5cyBpbiBhIG1vbnRoIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgZGF5cyBpbiBhIG1vbnRoIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBkYXlzIGluIGEgbW9udGhcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBkYXlzIGFyZSBpbiBGZWJydWFyeSAyMDAwP1xuICogY29uc3QgcmVzdWx0ID0gZ2V0RGF5c0luTW9udGgobmV3IERhdGUoMjAwMCwgMSkpXG4gKiAvLz0+IDI5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERheXNJbk1vbnRoKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIHZhciBtb250aEluZGV4ID0gZGF0ZS5nZXRNb250aCgpO1xuICB2YXIgbGFzdERheU9mTW9udGggPSBuZXcgRGF0ZSgwKTtcbiAgbGFzdERheU9mTW9udGguc2V0RnVsbFllYXIoeWVhciwgbW9udGhJbmRleCArIDEsIDApO1xuICBsYXN0RGF5T2ZNb250aC5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIGxhc3REYXlPZk1vbnRoLmdldERhdGUoKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBpc0xlYXBZZWFyIGZyb20gXCIuLi9pc0xlYXBZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXREYXlzSW5ZZWFyXG4gKiBAY2F0ZWdvcnkgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBkYXlzIGluIGEgeWVhciBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGRheXMgaW4gYSB5ZWFyIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIG51bWJlciBvZiBkYXlzIGluIGEgeWVhclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGRheXMgYXJlIGluIDIwMTI/XG4gKiBjb25zdCByZXN1bHQgPSBnZXREYXlzSW5ZZWFyKG5ldyBEYXRlKDIwMTIsIDAsIDEpKVxuICogLy89PiAzNjZcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RGF5c0luWWVhcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIGlmIChTdHJpbmcobmV3IERhdGUoZGF0ZSkpID09PSAnSW52YWxpZCBEYXRlJykge1xuICAgIHJldHVybiBOYU47XG4gIH1cbiAgcmV0dXJuIGlzTGVhcFllYXIoZGF0ZSkgPyAzNjYgOiAzNjU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXREZWNhZGVcbiAqIEBjYXRlZ29yeSBEZWNhZGUgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBkZWNhZGUgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIGRlY2FkZSBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSB5ZWFyIG9mIGRlY2FkZVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIGRlY2FkZSBiZWxvbmdzIDI3IE5vdmVtYmVyIDE5NDI/XG4gKiBjb25zdCByZXN1bHQgPSBnZXREZWNhZGUobmV3IERhdGUoMTk0MiwgMTAsIDI3KSlcbiAqIC8vPT4gMTk0MFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREZWNhZGUoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgdmFyIGRlY2FkZSA9IE1hdGguZmxvb3IoeWVhciAvIDEwKSAqIDEwO1xuICByZXR1cm4gZGVjYWRlO1xufSIsImltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIGFzIGdldEludGVybmFsRGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuaW1wb3J0IGFzc2lnbiBmcm9tIFwiLi4vX2xpYi9hc3NpZ24vaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0RGVmYXVsdE9wdGlvbnNcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IGRlZmF1bHQgb3B0aW9ucy5cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm5zIGFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIGRlZmF1bHRzIGZvclxuICogYG9wdGlvbnMubG9jYWxlYCwgYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBhbmQgYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYFxuICogYXJndW1lbnRzIGZvciBhbGwgZnVuY3Rpb25zLlxuICpcbiAqIFlvdSBjYW4gY2hhbmdlIHRoZXNlIHdpdGggW3NldERlZmF1bHRPcHRpb25zXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL3NldERlZmF1bHRPcHRpb25zfS5cbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBkZWZhdWx0IG9wdGlvbnNcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcmVzdWx0ID0gZ2V0RGVmYXVsdE9wdGlvbnMoKVxuICogLy89PiB7fVxuICpcbiAqIEBleGFtcGxlXG4gKiBzZXREZWZhdWx0T3B0aW9ucyh7IHdlZWtTdGFyc09uOiAxLCBmaXJzdFdlZWtDb250YWluc0RhdGU6IDQgfSlcbiAqIGNvbnN0IHJlc3VsdCA9IGdldERlZmF1bHRPcHRpb25zKClcbiAqIC8vPT4geyB3ZWVrU3RhcnNPbjogMSwgZmlyc3RXZWVrQ29udGFpbnNEYXRlOiA0IH1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RGVmYXVsdE9wdGlvbnMoKSB7XG4gIHJldHVybiBhc3NpZ24oe30sIGdldEludGVybmFsRGVmYXVsdE9wdGlvbnMoKSk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXRIb3Vyc1xuICogQGNhdGVnb3J5IEhvdXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBob3VycyBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgaG91cnMgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgaG91cnNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBHZXQgdGhlIGhvdXJzIG9mIDI5IEZlYnJ1YXJ5IDIwMTIgMTE6NDU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBnZXRIb3VycyhuZXcgRGF0ZSgyMDEyLCAxLCAyOSwgMTEsIDQ1KSlcbiAqIC8vPT4gMTFcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0SG91cnMoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgaG91cnMgPSBkYXRlLmdldEhvdXJzKCk7XG4gIHJldHVybiBob3Vycztcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldElTT0RheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBkYXkgb2YgdGhlIElTTyB3ZWVrIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBkYXkgb2YgdGhlIElTTyB3ZWVrIG9mIHRoZSBnaXZlbiBkYXRlLFxuICogd2hpY2ggaXMgNyBmb3IgU3VuZGF5LCAxIGZvciBNb25kYXkgZXRjLlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBkYXkgb2YgSVNPIHdlZWtcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCBkYXkgb2YgdGhlIElTTyB3ZWVrIGlzIDI2IEZlYnJ1YXJ5IDIwMTI/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRJU09EYXkobmV3IERhdGUoMjAxMiwgMSwgMjYpKVxuICogLy89PiA3XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldElTT0RheShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkYXkgPSBkYXRlLmdldERheSgpO1xuICBpZiAoZGF5ID09PSAwKSB7XG4gICAgZGF5ID0gNztcbiAgfVxuICByZXR1cm4gZGF5O1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZJU09XZWVrIGZyb20gXCIuLi9zdGFydE9mSVNPV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZJU09XZWVrWWVhciBmcm9tIFwiLi4vc3RhcnRPZklTT1dlZWtZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xudmFyIE1JTExJU0VDT05EU19JTl9XRUVLID0gNjA0ODAwMDAwO1xuXG4vKipcbiAqIEBuYW1lIGdldElTT1dlZWtcbiAqIEBjYXRlZ29yeSBJU08gV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIElTTyB3ZWVrIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBJU08gd2VlayBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgSVNPIHdlZWtcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCB3ZWVrIG9mIHRoZSBJU08td2VlayBudW1iZXJpbmcgeWVhciBpcyAyIEphbnVhcnkgMjAwNT9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldElTT1dlZWsobmV3IERhdGUoMjAwNSwgMCwgMikpXG4gKiAvLz0+IDUzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldElTT1dlZWsoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGlmZiA9IHN0YXJ0T2ZJU09XZWVrKGRhdGUpLmdldFRpbWUoKSAtIHN0YXJ0T2ZJU09XZWVrWWVhcihkYXRlKS5nZXRUaW1lKCk7XG5cbiAgLy8gUm91bmQgdGhlIG51bWJlciBvZiBkYXlzIHRvIHRoZSBuZWFyZXN0IGludGVnZXJcbiAgLy8gYmVjYXVzZSB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiBhIHdlZWsgaXMgbm90IGNvbnN0YW50XG4gIC8vIChlLmcuIGl0J3MgZGlmZmVyZW50IGluIHRoZSB3ZWVrIG9mIHRoZSBkYXlsaWdodCBzYXZpbmcgdGltZSBjbG9jayBzaGlmdClcbiAgcmV0dXJuIE1hdGgucm91bmQoZGlmZiAvIE1JTExJU0VDT05EU19JTl9XRUVLKSArIDE7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZklTT1dlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZJU09XZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXRJU09XZWVrWWVhclxuICogQGNhdGVnb3J5IElTTyBXZWVrLU51bWJlcmluZyBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyIG9mIHRoZSBnaXZlbiBkYXRlLFxuICogd2hpY2ggYWx3YXlzIHN0YXJ0cyAzIGRheXMgYmVmb3JlIHRoZSB5ZWFyJ3MgZmlyc3QgVGh1cnNkYXkuXG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggSVNPLXdlZWsgbnVtYmVyaW5nIHllYXIgaXMgMiBKYW51YXJ5IDIwMDU/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRJU09XZWVrWWVhcihuZXcgRGF0ZSgyMDA1LCAwLCAyKSlcbiAqIC8vPT4gMjAwNFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRJU09XZWVrWWVhcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICB2YXIgZm91cnRoT2ZKYW51YXJ5T2ZOZXh0WWVhciA9IG5ldyBEYXRlKDApO1xuICBmb3VydGhPZkphbnVhcnlPZk5leHRZZWFyLnNldEZ1bGxZZWFyKHllYXIgKyAxLCAwLCA0KTtcbiAgZm91cnRoT2ZKYW51YXJ5T2ZOZXh0WWVhci5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgdmFyIHN0YXJ0T2ZOZXh0WWVhciA9IHN0YXJ0T2ZJU09XZWVrKGZvdXJ0aE9mSmFudWFyeU9mTmV4dFllYXIpO1xuICB2YXIgZm91cnRoT2ZKYW51YXJ5T2ZUaGlzWWVhciA9IG5ldyBEYXRlKDApO1xuICBmb3VydGhPZkphbnVhcnlPZlRoaXNZZWFyLnNldEZ1bGxZZWFyKHllYXIsIDAsIDQpO1xuICBmb3VydGhPZkphbnVhcnlPZlRoaXNZZWFyLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgc3RhcnRPZlRoaXNZZWFyID0gc3RhcnRPZklTT1dlZWsoZm91cnRoT2ZKYW51YXJ5T2ZUaGlzWWVhcik7XG4gIGlmIChkYXRlLmdldFRpbWUoKSA+PSBzdGFydE9mTmV4dFllYXIuZ2V0VGltZSgpKSB7XG4gICAgcmV0dXJuIHllYXIgKyAxO1xuICB9IGVsc2UgaWYgKGRhdGUuZ2V0VGltZSgpID49IHN0YXJ0T2ZUaGlzWWVhci5nZXRUaW1lKCkpIHtcbiAgICByZXR1cm4geWVhcjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4geWVhciAtIDE7XG4gIH1cbn0iLCJpbXBvcnQgc3RhcnRPZklTT1dlZWtZZWFyIGZyb20gXCIuLi9zdGFydE9mSVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCBhZGRXZWVrcyBmcm9tIFwiLi4vYWRkV2Vla3MvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG52YXIgTUlMTElTRUNPTkRTX0lOX1dFRUsgPSA2MDQ4MDAwMDA7XG5cbi8qKlxuICogQG5hbWUgZ2V0SVNPV2Vla3NJblllYXJcbiAqIEBjYXRlZ29yeSBJU08gV2Vlay1OdW1iZXJpbmcgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiB3ZWVrcyBpbiBhbiBJU08gd2Vlay1udW1iZXJpbmcgeWVhciBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIHdlZWtzIGluIGFuIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgSVNPIHdlZWtzIGluIGEgeWVhclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IHdlZWtzIGFyZSBpbiBJU08gd2Vlay1udW1iZXJpbmcgeWVhciAyMDE1P1xuICogY29uc3QgcmVzdWx0ID0gZ2V0SVNPV2Vla3NJblllYXIobmV3IERhdGUoMjAxNSwgMSwgMTEpKVxuICogLy89PiA1M1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRJU09XZWVrc0luWWVhcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciB0aGlzWWVhciA9IHN0YXJ0T2ZJU09XZWVrWWVhcihkaXJ0eURhdGUpO1xuICB2YXIgbmV4dFllYXIgPSBzdGFydE9mSVNPV2Vla1llYXIoYWRkV2Vla3ModGhpc1llYXIsIDYwKSk7XG4gIHZhciBkaWZmID0gbmV4dFllYXIudmFsdWVPZigpIC0gdGhpc1llYXIudmFsdWVPZigpO1xuICAvLyBSb3VuZCB0aGUgbnVtYmVyIG9mIHdlZWtzIHRvIHRoZSBuZWFyZXN0IGludGVnZXJcbiAgLy8gYmVjYXVzZSB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiBhIHdlZWsgaXMgbm90IGNvbnN0YW50XG4gIC8vIChlLmcuIGl0J3MgZGlmZmVyZW50IGluIHRoZSB3ZWVrIG9mIHRoZSBkYXlsaWdodCBzYXZpbmcgdGltZSBjbG9jayBzaGlmdClcbiAgcmV0dXJuIE1hdGgucm91bmQoZGlmZiAvIE1JTExJU0VDT05EU19JTl9XRUVLKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldE1pbGxpc2Vjb25kc1xuICogQGNhdGVnb3J5IE1pbGxpc2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbWlsbGlzZWNvbmRzIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBtaWxsaXNlY29uZHMgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbWlsbGlzZWNvbmRzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gR2V0IHRoZSBtaWxsaXNlY29uZHMgb2YgMjkgRmVicnVhcnkgMjAxMiAxMTo0NTowNS4xMjM6XG4gKiBjb25zdCByZXN1bHQgPSBnZXRNaWxsaXNlY29uZHMobmV3IERhdGUoMjAxMiwgMSwgMjksIDExLCA0NSwgNSwgMTIzKSlcbiAqIC8vPT4gMTIzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE1pbGxpc2Vjb25kcyhkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBtaWxsaXNlY29uZHMgPSBkYXRlLmdldE1pbGxpc2Vjb25kcygpO1xuICByZXR1cm4gbWlsbGlzZWNvbmRzO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0TWludXRlc1xuICogQGNhdGVnb3J5IE1pbnV0ZSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG1pbnV0ZXMgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG1pbnV0ZXMgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbWludXRlc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEdldCB0aGUgbWludXRlcyBvZiAyOSBGZWJydWFyeSAyMDEyIDExOjQ1OjA1OlxuICogY29uc3QgcmVzdWx0ID0gZ2V0TWludXRlcyhuZXcgRGF0ZSgyMDEyLCAxLCAyOSwgMTEsIDQ1LCA1KSlcbiAqIC8vPT4gNDVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0TWludXRlcyhkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBtaW51dGVzID0gZGF0ZS5nZXRNaW51dGVzKCk7XG4gIHJldHVybiBtaW51dGVzO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgZ2V0TW9udGhcbiAqIEBjYXRlZ29yeSBNb250aCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG1vbnRoIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBtb250aCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBtb250aFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIG1vbnRoIGlzIDI5IEZlYnJ1YXJ5IDIwMTI/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRNb250aChuZXcgRGF0ZSgyMDEyLCAxLCAyOSkpXG4gKiAvLz0+IDFcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0TW9udGgoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgbW9udGggPSBkYXRlLmdldE1vbnRoKCk7XG4gIHJldHVybiBtb250aDtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG52YXIgTUlMTElTRUNPTkRTX0lOX0RBWSA9IDI0ICogNjAgKiA2MCAqIDEwMDA7XG5cbi8qKlxuICogQG5hbWUgZ2V0T3ZlcmxhcHBpbmdEYXlzSW5JbnRlcnZhbHNcbiAqIEBjYXRlZ29yeSBJbnRlcnZhbCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBkYXlzIHRoYXQgb3ZlcmxhcCBpbiB0d28gdGltZSBpbnRlcnZhbHNcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGRheXMgdGhhdCBvdmVybGFwIGluIHR3byB0aW1lIGludGVydmFsc1xuICpcbiAqIEBwYXJhbSB7SW50ZXJ2YWx9IGludGVydmFsTGVmdCAtIHRoZSBmaXJzdCBpbnRlcnZhbCB0byBjb21wYXJlLiBTZWUgW0ludGVydmFsXXtAbGluayBkb2NzL0ludGVydmFsfVxuICogQHBhcmFtIHtJbnRlcnZhbH0gaW50ZXJ2YWxSaWdodCAtIHRoZSBzZWNvbmQgaW50ZXJ2YWwgdG8gY29tcGFyZS4gU2VlIFtJbnRlcnZhbF17QGxpbmsgZG9jcy9JbnRlcnZhbH1cbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgZGF5cyB0aGF0IG92ZXJsYXAgaW4gdHdvIHRpbWUgaW50ZXJ2YWxzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBUaGUgc3RhcnQgb2YgYW4gaW50ZXJ2YWwgY2Fubm90IGJlIGFmdGVyIGl0cyBlbmRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IERhdGUgaW4gaW50ZXJ2YWwgY2Fubm90IGJlIGBJbnZhbGlkIERhdGVgXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciBvdmVybGFwcGluZyB0aW1lIGludGVydmFscyBhZGRzIDEgZm9yIGVhY2ggc3RhcnRlZCBvdmVybGFwcGluZyBkYXk6XG4gKiBnZXRPdmVybGFwcGluZ0RheXNJbkludGVydmFscyhcbiAqICAgeyBzdGFydDogbmV3IERhdGUoMjAxNCwgMCwgMTApLCBlbmQ6IG5ldyBEYXRlKDIwMTQsIDAsIDIwKSB9LFxuICogICB7IHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAwLCAxNyksIGVuZDogbmV3IERhdGUoMjAxNCwgMCwgMjEpIH1cbiAqIClcbiAqIC8vPT4gM1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3Igbm9uLW92ZXJsYXBwaW5nIHRpbWUgaW50ZXJ2YWxzIHJldHVybnMgMDpcbiAqIGdldE92ZXJsYXBwaW5nRGF5c0luSW50ZXJ2YWxzKFxuICogICB7IHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAwLCAxMCksIGVuZDogbmV3IERhdGUoMjAxNCwgMCwgMjApIH0sXG4gKiAgIHsgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDAsIDIxKSwgZW5kOiBuZXcgRGF0ZSgyMDE0LCAwLCAyMikgfVxuICogKVxuICogLy89PiAwXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T3ZlcmxhcHBpbmdEYXlzSW5JbnRlcnZhbHMoZGlydHlJbnRlcnZhbExlZnQsIGRpcnR5SW50ZXJ2YWxSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGludGVydmFsTGVmdCA9IGRpcnR5SW50ZXJ2YWxMZWZ0IHx8IHt9O1xuICB2YXIgaW50ZXJ2YWxSaWdodCA9IGRpcnR5SW50ZXJ2YWxSaWdodCB8fCB7fTtcbiAgdmFyIGxlZnRTdGFydFRpbWUgPSB0b0RhdGUoaW50ZXJ2YWxMZWZ0LnN0YXJ0KS5nZXRUaW1lKCk7XG4gIHZhciBsZWZ0RW5kVGltZSA9IHRvRGF0ZShpbnRlcnZhbExlZnQuZW5kKS5nZXRUaW1lKCk7XG4gIHZhciByaWdodFN0YXJ0VGltZSA9IHRvRGF0ZShpbnRlcnZhbFJpZ2h0LnN0YXJ0KS5nZXRUaW1lKCk7XG4gIHZhciByaWdodEVuZFRpbWUgPSB0b0RhdGUoaW50ZXJ2YWxSaWdodC5lbmQpLmdldFRpbWUoKTtcblxuICAvLyBUaHJvdyBhbiBleGNlcHRpb24gaWYgc3RhcnQgZGF0ZSBpcyBhZnRlciBlbmQgZGF0ZSBvciBpZiBhbnkgZGF0ZSBpcyBgSW52YWxpZCBEYXRlYFxuICBpZiAoIShsZWZ0U3RhcnRUaW1lIDw9IGxlZnRFbmRUaW1lICYmIHJpZ2h0U3RhcnRUaW1lIDw9IHJpZ2h0RW5kVGltZSkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBpbnRlcnZhbCcpO1xuICB9XG4gIHZhciBpc092ZXJsYXBwaW5nID0gbGVmdFN0YXJ0VGltZSA8IHJpZ2h0RW5kVGltZSAmJiByaWdodFN0YXJ0VGltZSA8IGxlZnRFbmRUaW1lO1xuICBpZiAoIWlzT3ZlcmxhcHBpbmcpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICB2YXIgb3ZlcmxhcFN0YXJ0RGF0ZSA9IHJpZ2h0U3RhcnRUaW1lIDwgbGVmdFN0YXJ0VGltZSA/IGxlZnRTdGFydFRpbWUgOiByaWdodFN0YXJ0VGltZTtcbiAgdmFyIG92ZXJsYXBFbmREYXRlID0gcmlnaHRFbmRUaW1lID4gbGVmdEVuZFRpbWUgPyBsZWZ0RW5kVGltZSA6IHJpZ2h0RW5kVGltZTtcbiAgdmFyIGRpZmZlcmVuY2VJbk1zID0gb3ZlcmxhcEVuZERhdGUgLSBvdmVybGFwU3RhcnREYXRlO1xuICByZXR1cm4gTWF0aC5jZWlsKGRpZmZlcmVuY2VJbk1zIC8gTUlMTElTRUNPTkRTX0lOX0RBWSk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXRRdWFydGVyXG4gKiBAY2F0ZWdvcnkgUXVhcnRlciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIHllYXIgcXVhcnRlciBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgeWVhciBxdWFydGVyIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIHF1YXJ0ZXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCBxdWFydGVyIGlzIDIgSnVseSAyMDE0P1xuICogY29uc3QgcmVzdWx0ID0gZ2V0UXVhcnRlcihuZXcgRGF0ZSgyMDE0LCA2LCAyKSlcbiAqIC8vPT4gM1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRRdWFydGVyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHF1YXJ0ZXIgPSBNYXRoLmZsb29yKGRhdGUuZ2V0TW9udGgoKSAvIDMpICsgMTtcbiAgcmV0dXJuIHF1YXJ0ZXI7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXRTZWNvbmRzXG4gKiBAY2F0ZWdvcnkgU2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgc2Vjb25kcyBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgc2Vjb25kcyBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBzZWNvbmRzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gR2V0IHRoZSBzZWNvbmRzIG9mIDI5IEZlYnJ1YXJ5IDIwMTIgMTE6NDU6MDUuMTIzOlxuICogY29uc3QgcmVzdWx0ID0gZ2V0U2Vjb25kcyhuZXcgRGF0ZSgyMDEyLCAxLCAyOSwgMTEsIDQ1LCA1LCAxMjMpKVxuICogLy89PiA1XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFNlY29uZHMoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgc2Vjb25kcyA9IGRhdGUuZ2V0U2Vjb25kcygpO1xuICByZXR1cm4gc2Vjb25kcztcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldFRpbWVcbiAqIEBjYXRlZ29yeSBUaW1lc3RhbXAgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBtaWxsaXNlY29uZHMgdGltZXN0YW1wIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBtaWxsaXNlY29uZHMgdGltZXN0YW1wIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIHRpbWVzdGFtcFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEdldCB0aGUgdGltZXN0YW1wIG9mIDI5IEZlYnJ1YXJ5IDIwMTIgMTE6NDU6MDUuMTIzOlxuICogY29uc3QgcmVzdWx0ID0gZ2V0VGltZShuZXcgRGF0ZSgyMDEyLCAxLCAyOSwgMTEsIDQ1LCA1LCAxMjMpKVxuICogLy89PiAxMzMwNTE1OTA1MTIzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFRpbWUoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgdGltZXN0YW1wID0gZGF0ZS5nZXRUaW1lKCk7XG4gIHJldHVybiB0aW1lc3RhbXA7XG59IiwiaW1wb3J0IGdldFRpbWUgZnJvbSBcIi4uL2dldFRpbWUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldFVuaXhUaW1lXG4gKiBAY2F0ZWdvcnkgVGltZXN0YW1wIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgc2Vjb25kcyB0aW1lc3RhbXAgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIHNlY29uZHMgdGltZXN0YW1wIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZ2l2ZW4gZGF0ZVxuICogQHJldHVybnMge051bWJlcn0gdGhlIHRpbWVzdGFtcFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEdldCB0aGUgdGltZXN0YW1wIG9mIDI5IEZlYnJ1YXJ5IDIwMTIgMTE6NDU6MDUgQ0VUOlxuICogY29uc3QgcmVzdWx0ID0gZ2V0VW5peFRpbWUobmV3IERhdGUoMjAxMiwgMSwgMjksIDExLCA0NSwgNSkpXG4gKiAvLz0+IDEzMzA1MTIzMDVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VW5peFRpbWUoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gTWF0aC5mbG9vcihnZXRUaW1lKGRpcnR5RGF0ZSkgLyAxMDAwKTtcbn0iLCJpbXBvcnQgc3RhcnRPZldlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZldlZWtZZWFyIGZyb20gXCIuLi9zdGFydE9mV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbnZhciBNSUxMSVNFQ09ORFNfSU5fV0VFSyA9IDYwNDgwMDAwMDtcblxuLyoqXG4gKiBAbmFtZSBnZXRXZWVrXG4gKiBAY2F0ZWdvcnkgV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIGxvY2FsIHdlZWsgaW5kZXggb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIGxvY2FsIHdlZWsgaW5kZXggb2YgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgZXhhY3QgY2FsY3VsYXRpb24gZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mXG4gKiBgb3B0aW9ucy53ZWVrU3RhcnRzT25gICh3aGljaCBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlaylcbiAqIGFuZCBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgICh3aGljaCBpcyB0aGUgZGF5IG9mIEphbnVhcnksIHdoaWNoIGlzIGFsd2F5cyBpblxuICogdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHdlZWstbnVtYmVyaW5nIHllYXIpXG4gKlxuICogV2VlayBudW1iZXJpbmc6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlZWsjV2Vla19udW1iZXJpbmdcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHBhcmFtIHsxfDJ8M3w0fDV8Nnw3fSBbb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGU9MV0gLSB0aGUgZGF5IG9mIEphbnVhcnksIHdoaWNoIGlzIGFsd2F5cyBpbiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhclxuICogQHJldHVybnMge051bWJlcn0gdGhlIHdlZWtcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNlxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgN1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCB3ZWVrIG9mIHRoZSBsb2NhbCB3ZWVrIG51bWJlcmluZyB5ZWFyIGlzIDIgSmFudWFyeSAyMDA1IHdpdGggZGVmYXVsdCBvcHRpb25zP1xuICogY29uc3QgcmVzdWx0ID0gZ2V0V2VlayhuZXcgRGF0ZSgyMDA1LCAwLCAyKSlcbiAqIC8vPT4gMlxuICpcbiAqIC8vIFdoaWNoIHdlZWsgb2YgdGhlIGxvY2FsIHdlZWsgbnVtYmVyaW5nIHllYXIgaXMgMiBKYW51YXJ5IDIwMDUsXG4gKiAvLyBpZiBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayxcbiAqIC8vIGFuZCB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhciBhbHdheXMgY29udGFpbnMgNCBKYW51YXJ5P1xuICogY29uc3QgcmVzdWx0ID0gZ2V0V2VlayhuZXcgRGF0ZSgyMDA1LCAwLCAyKSwge1xuICogICB3ZWVrU3RhcnRzT246IDEsXG4gKiAgIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZTogNFxuICogfSlcbiAqIC8vPT4gNTNcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXZWVrKGRpcnR5RGF0ZSwgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRpZmYgPSBzdGFydE9mV2VlayhkYXRlLCBvcHRpb25zKS5nZXRUaW1lKCkgLSBzdGFydE9mV2Vla1llYXIoZGF0ZSwgb3B0aW9ucykuZ2V0VGltZSgpO1xuXG4gIC8vIFJvdW5kIHRoZSBudW1iZXIgb2YgZGF5cyB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyXG4gIC8vIGJlY2F1c2UgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaW4gYSB3ZWVrIGlzIG5vdCBjb25zdGFudFxuICAvLyAoZS5nLiBpdCdzIGRpZmZlcmVudCBpbiB0aGUgd2VlayBvZiB0aGUgZGF5bGlnaHQgc2F2aW5nIHRpbWUgY2xvY2sgc2hpZnQpXG4gIHJldHVybiBNYXRoLnJvdW5kKGRpZmYgLyBNSUxMSVNFQ09ORFNfSU5fV0VFSykgKyAxO1xufSIsImltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL19saWIvZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbmltcG9ydCBnZXREYXRlIGZyb20gXCIuLi9nZXREYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0RGF5IGZyb20gXCIuLi9nZXREYXkvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mTW9udGggZnJvbSBcIi4uL3N0YXJ0T2ZNb250aC9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldFdlZWtPZk1vbnRoXG4gKiBAY2F0ZWdvcnkgV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIHdlZWsgb2YgdGhlIG1vbnRoIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSB3ZWVrIG9mIHRoZSBtb250aCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHJldHVybnMge051bWJlcn0gdGhlIHdlZWsgb2YgbW9udGhcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNiBpbmNsdXNpdmVseVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCB3ZWVrIG9mIHRoZSBtb250aCBpcyA5IE5vdmVtYmVyIDIwMTc/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRXZWVrT2ZNb250aChuZXcgRGF0ZSgyMDE3LCAxMCwgOSkpXG4gKiAvLz0+IDJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2Vla09mTW9udGgoZGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX3JlZjIsIF9yZWYzLCBfb3B0aW9ucyR3ZWVrU3RhcnRzT24sIF9vcHRpb25zJGxvY2FsZSwgX29wdGlvbnMkbG9jYWxlJG9wdGlvLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDI7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICB2YXIgd2Vla1N0YXJ0c09uID0gdG9JbnRlZ2VyKChfcmVmID0gKF9yZWYyID0gKF9yZWYzID0gKF9vcHRpb25zJHdlZWtTdGFydHNPbiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9vcHRpb25zJHdlZWtTdGFydHNPbiAhPT0gdm9pZCAwID8gX29wdGlvbnMkd2Vla1N0YXJ0c09uIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9IF9vcHRpb25zJGxvY2FsZS5vcHRpb25zKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb25zJGxvY2FsZSRvcHRpby53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYzICE9PSB2b2lkIDAgPyBfcmVmMyA6IGRlZmF1bHRPcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjIgIT09IHZvaWQgMCA/IF9yZWYyIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IDApO1xuICBpZiAoISh3ZWVrU3RhcnRzT24gPj0gMCAmJiB3ZWVrU3RhcnRzT24gPD0gNikpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignd2Vla1N0YXJ0c09uIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2IGluY2x1c2l2ZWx5Jyk7XG4gIH1cbiAgdmFyIGN1cnJlbnREYXlPZk1vbnRoID0gZ2V0RGF0ZShkYXRlKTtcbiAgaWYgKGlzTmFOKGN1cnJlbnREYXlPZk1vbnRoKSkgcmV0dXJuIE5hTjtcbiAgdmFyIHN0YXJ0V2Vla0RheSA9IGdldERheShzdGFydE9mTW9udGgoZGF0ZSkpO1xuICB2YXIgbGFzdERheU9mRmlyc3RXZWVrID0gd2Vla1N0YXJ0c09uIC0gc3RhcnRXZWVrRGF5O1xuICBpZiAobGFzdERheU9mRmlyc3RXZWVrIDw9IDApIGxhc3REYXlPZkZpcnN0V2VlayArPSA3O1xuICB2YXIgcmVtYWluaW5nRGF5c0FmdGVyRmlyc3RXZWVrID0gY3VycmVudERheU9mTW9udGggLSBsYXN0RGF5T2ZGaXJzdFdlZWs7XG4gIHJldHVybiBNYXRoLmNlaWwocmVtYWluaW5nRGF5c0FmdGVyRmlyc3RXZWVrIC8gNykgKyAxO1xufSIsImltcG9ydCBzdGFydE9mV2VlayBmcm9tIFwiLi4vc3RhcnRPZldlZWsvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuLi9fbGliL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldFdlZWtZZWFyXG4gKiBAY2F0ZWdvcnkgV2Vlay1OdW1iZXJpbmcgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgZXhhY3QgY2FsY3VsYXRpb24gZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mXG4gKiBgb3B0aW9ucy53ZWVrU3RhcnRzT25gICh3aGljaCBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlaylcbiAqIGFuZCBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgICh3aGljaCBpcyB0aGUgZGF5IG9mIEphbnVhcnksIHdoaWNoIGlzIGFsd2F5cyBpblxuICogdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHdlZWstbnVtYmVyaW5nIHllYXIpXG4gKlxuICogV2VlayBudW1iZXJpbmc6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlZWsjV2Vla19udW1iZXJpbmdcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHBhcmFtIHsxfDJ8M3w0fDV8Nnw3fSBbb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGU9MV0gLSB0aGUgZGF5IG9mIEphbnVhcnksIHdoaWNoIGlzIGFsd2F5cyBpbiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhclxuICogQHJldHVybnMge051bWJlcn0gdGhlIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNlxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgN1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCB3ZWVrIG51bWJlcmluZyB5ZWFyIGlzIDI2IERlY2VtYmVyIDIwMDQgd2l0aCB0aGUgZGVmYXVsdCBzZXR0aW5ncz9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldFdlZWtZZWFyKG5ldyBEYXRlKDIwMDQsIDExLCAyNikpXG4gKiAvLz0+IDIwMDVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggd2VlayBudW1iZXJpbmcgeWVhciBpcyAyNiBEZWNlbWJlciAyMDA0IGlmIHdlZWsgc3RhcnRzIG9uIFNhdHVyZGF5P1xuICogY29uc3QgcmVzdWx0ID0gZ2V0V2Vla1llYXIobmV3IERhdGUoMjAwNCwgMTEsIDI2KSwgeyB3ZWVrU3RhcnRzT246IDYgfSlcbiAqIC8vPT4gMjAwNFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCB3ZWVrIG51bWJlcmluZyB5ZWFyIGlzIDI2IERlY2VtYmVyIDIwMDQgaWYgdGhlIGZpcnN0IHdlZWsgY29udGFpbnMgNCBKYW51YXJ5P1xuICogY29uc3QgcmVzdWx0ID0gZ2V0V2Vla1llYXIobmV3IERhdGUoMjAwNCwgMTEsIDI2KSwgeyBmaXJzdFdlZWtDb250YWluc0RhdGU6IDQgfSlcbiAqIC8vPT4gMjAwNFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXZWVrWWVhcihkaXJ0eURhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9yZWYyLCBfcmVmMywgX29wdGlvbnMkZmlyc3RXZWVrQ29uLCBfb3B0aW9ucyRsb2NhbGUsIF9vcHRpb25zJGxvY2FsZSRvcHRpbywgX2RlZmF1bHRPcHRpb25zJGxvY2FsLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyO1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIHZhciBmaXJzdFdlZWtDb250YWluc0RhdGUgPSB0b0ludGVnZXIoKF9yZWYgPSAoX3JlZjIgPSAoX3JlZjMgPSAoX29wdGlvbnMkZmlyc3RXZWVrQ29uID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX29wdGlvbnMkZmlyc3RXZWVrQ29uICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRmaXJzdFdlZWtDb24gOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUgPSBvcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlJG9wdGlvID0gX29wdGlvbnMkbG9jYWxlLm9wdGlvbnMpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX29wdGlvbnMkbG9jYWxlJG9wdGlvLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZjMgIT09IHZvaWQgMCA/IF9yZWYzIDogZGVmYXVsdE9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdm9pZCAwID8gX3JlZjIgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsID0gZGVmYXVsdE9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID0gX2RlZmF1bHRPcHRpb25zJGxvY2FsLm9wdGlvbnMpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB2b2lkIDAgPyBfcmVmIDogMSk7XG5cbiAgLy8gVGVzdCBpZiB3ZWVrU3RhcnRzT24gaXMgYmV0d2VlbiAxIGFuZCA3IF9hbmRfIGlzIG5vdCBOYU5cbiAgaWYgKCEoZmlyc3RXZWVrQ29udGFpbnNEYXRlID49IDEgJiYgZmlyc3RXZWVrQ29udGFpbnNEYXRlIDw9IDcpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2ZpcnN0V2Vla0NvbnRhaW5zRGF0ZSBtdXN0IGJlIGJldHdlZW4gMSBhbmQgNyBpbmNsdXNpdmVseScpO1xuICB9XG4gIHZhciBmaXJzdFdlZWtPZk5leHRZZWFyID0gbmV3IERhdGUoMCk7XG4gIGZpcnN0V2Vla09mTmV4dFllYXIuc2V0RnVsbFllYXIoeWVhciArIDEsIDAsIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSk7XG4gIGZpcnN0V2Vla09mTmV4dFllYXIuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBzdGFydE9mTmV4dFllYXIgPSBzdGFydE9mV2VlayhmaXJzdFdlZWtPZk5leHRZZWFyLCBvcHRpb25zKTtcbiAgdmFyIGZpcnN0V2Vla09mVGhpc1llYXIgPSBuZXcgRGF0ZSgwKTtcbiAgZmlyc3RXZWVrT2ZUaGlzWWVhci5zZXRGdWxsWWVhcih5ZWFyLCAwLCBmaXJzdFdlZWtDb250YWluc0RhdGUpO1xuICBmaXJzdFdlZWtPZlRoaXNZZWFyLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgc3RhcnRPZlRoaXNZZWFyID0gc3RhcnRPZldlZWsoZmlyc3RXZWVrT2ZUaGlzWWVhciwgb3B0aW9ucyk7XG4gIGlmIChkYXRlLmdldFRpbWUoKSA+PSBzdGFydE9mTmV4dFllYXIuZ2V0VGltZSgpKSB7XG4gICAgcmV0dXJuIHllYXIgKyAxO1xuICB9IGVsc2UgaWYgKGRhdGUuZ2V0VGltZSgpID49IHN0YXJ0T2ZUaGlzWWVhci5nZXRUaW1lKCkpIHtcbiAgICByZXR1cm4geWVhcjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4geWVhciAtIDE7XG4gIH1cbn0iLCJpbXBvcnQgZGlmZmVyZW5jZUluQ2FsZW5kYXJXZWVrcyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJXZWVrcy9pbmRleC5qc1wiO1xuaW1wb3J0IGxhc3REYXlPZk1vbnRoIGZyb20gXCIuLi9sYXN0RGF5T2ZNb250aC9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZNb250aCBmcm9tIFwiLi4vc3RhcnRPZk1vbnRoL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBnZXRXZWVrc0luTW9udGhcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIHdlZWtzIGEgbW9udGggc3BhbnMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBjYWxlbmRhciB3ZWVrcyB0aGUgbW9udGggaW4gdGhlIGdpdmVuIGRhdGUgc3BhbnMuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBnaXZlbiBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgd2Vla3NcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLndlZWtTdGFydHNPbmAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDZcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgY2FsZW5kYXIgd2Vla3MgZG9lcyBGZWJydWFyeSAyMDE1IHNwYW4/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRXZWVrc0luTW9udGgobmV3IERhdGUoMjAxNSwgMSwgOCkpXG4gKiAvLz0+IDRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdGhlIHdlZWsgc3RhcnRzIG9uIE1vbmRheSxcbiAqIC8vIGhvdyBtYW55IGNhbGVuZGFyIHdlZWtzIGRvZXMgSnVseSAyMDE3IHNwYW4/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRXZWVrc0luTW9udGgobmV3IERhdGUoMjAxNywgNiwgNSksIHsgd2Vla1N0YXJ0c09uOiAxIH0pXG4gKiAvLz0+IDZcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2Vla3NJbk1vbnRoKGRhdGUsIG9wdGlvbnMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBkaWZmZXJlbmNlSW5DYWxlbmRhcldlZWtzKGxhc3REYXlPZk1vbnRoKGRhdGUpLCBzdGFydE9mTW9udGgoZGF0ZSksIG9wdGlvbnMpICsgMTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGdldFllYXJcbiAqIEBjYXRlZ29yeSBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgeWVhciBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgeWVhciBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGdpdmVuIGRhdGVcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggeWVhciBpcyAyIEp1bHkgMjAxND9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldFllYXIobmV3IERhdGUoMjAxNCwgNiwgMikpXG4gKiAvLz0+IDIwMTRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0WWVhcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiB0b0RhdGUoZGlydHlEYXRlKS5nZXRGdWxsWWVhcigpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBtaWxsaXNlY29uZHNJbkhvdXIgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGhvdXJzVG9NaWxsaXNlY29uZHNcbiAqIEBjYXRlZ29yeSAgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IGhvdXJzIHRvIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2YgaG91cnMgdG8gYSBmdWxsIG51bWJlciBvZiBtaWxsaXNlY29uZHMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGhvdXJzIC0gbnVtYmVyIG9mIGhvdXJzIHRvIGJlIGNvbnZlcnRlZFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBudW1iZXIgb2YgaG91cnMgY29udmVydGVkIHRvIG1pbGxpc2Vjb25kc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgMiBob3VycyB0byBtaWxsaXNlY29uZHM6XG4gKiBjb25zdCByZXN1bHQgPSBob3Vyc1RvTWlsbGlzZWNvbmRzKDIpXG4gKiAvLz0+IDcyMDAwMDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaG91cnNUb01pbGxpc2Vjb25kcyhob3Vycykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIE1hdGguZmxvb3IoaG91cnMgKiBtaWxsaXNlY29uZHNJbkhvdXIpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBtaW51dGVzSW5Ib3VyIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBob3Vyc1RvTWludXRlc1xuICogQGNhdGVnb3J5IENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCBob3VycyB0byBtaW51dGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiBob3VycyB0byBhIGZ1bGwgbnVtYmVyIG9mIG1pbnV0ZXMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGhvdXJzIC0gbnVtYmVyIG9mIGhvdXJzIHRvIGJlIGNvbnZlcnRlZFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBudW1iZXIgb2YgaG91cnMgY29udmVydGVkIGluIG1pbnV0ZXNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDIgaG91cnMgdG8gbWludXRlczpcbiAqIGNvbnN0IHJlc3VsdCA9IGhvdXJzVG9NaW51dGVzKDIpXG4gKiAvLz0+IDEyMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBob3Vyc1RvTWludXRlcyhob3Vycykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIE1hdGguZmxvb3IoaG91cnMgKiBtaW51dGVzSW5Ib3VyKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgc2Vjb25kc0luSG91ciB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaG91cnNUb1NlY29uZHNcbiAqIEBjYXRlZ29yeSBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgaG91cnMgdG8gc2Vjb25kcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2YgaG91cnMgdG8gYSBmdWxsIG51bWJlciBvZiBzZWNvbmRzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBob3VycyAtIG51bWJlciBvZiBob3VycyB0byBiZSBjb252ZXJ0ZWRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIGhvdXJzIGNvbnZlcnRlZCBpbiBzZWNvbmRzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCAyIGhvdXJzIHRvIHNlY29uZHM6XG4gKiBjb25zdCByZXN1bHQgPSBob3Vyc1RvU2Vjb25kcygyKVxuICogLy89PiA3MjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGhvdXJzVG9TZWNvbmRzKGhvdXJzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gTWF0aC5mbG9vcihob3VycyAqIHNlY29uZHNJbkhvdXIpO1xufSIsIi8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBgc2NyaXB0cy9idWlsZC9pbmRpY2VzLnRzYC4gUGxlYXNlLCBkb24ndCBjaGFuZ2UgaXQuXG5leHBvcnQgeyBkZWZhdWx0IGFzIGFkZCB9IGZyb20gXCIuL2FkZC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhZGRCdXNpbmVzc0RheXMgfSBmcm9tIFwiLi9hZGRCdXNpbmVzc0RheXMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYWRkRGF5cyB9IGZyb20gXCIuL2FkZERheXMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYWRkSG91cnMgfSBmcm9tIFwiLi9hZGRIb3Vycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhZGRJU09XZWVrWWVhcnMgfSBmcm9tIFwiLi9hZGRJU09XZWVrWWVhcnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYWRkTWlsbGlzZWNvbmRzIH0gZnJvbSBcIi4vYWRkTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFkZE1pbnV0ZXMgfSBmcm9tIFwiLi9hZGRNaW51dGVzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFkZE1vbnRocyB9IGZyb20gXCIuL2FkZE1vbnRocy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhZGRRdWFydGVycyB9IGZyb20gXCIuL2FkZFF1YXJ0ZXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFkZFNlY29uZHMgfSBmcm9tIFwiLi9hZGRTZWNvbmRzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFkZFdlZWtzIH0gZnJvbSBcIi4vYWRkV2Vla3MvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYWRkWWVhcnMgfSBmcm9tIFwiLi9hZGRZZWFycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhcmVJbnRlcnZhbHNPdmVybGFwcGluZyB9IGZyb20gXCIuL2FyZUludGVydmFsc092ZXJsYXBwaW5nL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNsYW1wIH0gZnJvbSBcIi4vY2xhbXAvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY2xvc2VzdEluZGV4VG8gfSBmcm9tIFwiLi9jbG9zZXN0SW5kZXhUby9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjbG9zZXN0VG8gfSBmcm9tIFwiLi9jbG9zZXN0VG8vaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY29tcGFyZUFzYyB9IGZyb20gXCIuL2NvbXBhcmVBc2MvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY29tcGFyZURlc2MgfSBmcm9tIFwiLi9jb21wYXJlRGVzYy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkYXlzVG9XZWVrcyB9IGZyb20gXCIuL2RheXNUb1dlZWtzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VJbkJ1c2luZXNzRGF5cyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbkJ1c2luZXNzRGF5cy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5DYWxlbmRhckRheXMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluQ2FsZW5kYXJJU09XZWVrWWVhcnMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5DYWxlbmRhcklTT1dlZWtZZWFycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkaWZmZXJlbmNlSW5DYWxlbmRhcklTT1dlZWtzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJJU09XZWVrcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbkNhbGVuZGFyTW9udGhzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VJbkNhbGVuZGFyUXVhcnRlcnMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5DYWxlbmRhclF1YXJ0ZXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VJbkNhbGVuZGFyV2Vla3MgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5DYWxlbmRhcldlZWtzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VJbkNhbGVuZGFyWWVhcnMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VJbkRheXMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5EYXlzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VJbkhvdXJzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluSG91cnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluSVNPV2Vla1llYXJzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluSVNPV2Vla1llYXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkaWZmZXJlbmNlSW5NaW51dGVzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluTWludXRlcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkaWZmZXJlbmNlSW5Nb250aHMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5Nb250aHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZUluUXVhcnRlcnMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5RdWFydGVycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkaWZmZXJlbmNlSW5TZWNvbmRzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluU2Vjb25kcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkaWZmZXJlbmNlSW5XZWVrcyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbldlZWtzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VJblllYXJzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluWWVhcnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZWFjaERheU9mSW50ZXJ2YWwgfSBmcm9tIFwiLi9lYWNoRGF5T2ZJbnRlcnZhbC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlYWNoSG91ck9mSW50ZXJ2YWwgfSBmcm9tIFwiLi9lYWNoSG91ck9mSW50ZXJ2YWwvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZWFjaE1pbnV0ZU9mSW50ZXJ2YWwgfSBmcm9tIFwiLi9lYWNoTWludXRlT2ZJbnRlcnZhbC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlYWNoTW9udGhPZkludGVydmFsIH0gZnJvbSBcIi4vZWFjaE1vbnRoT2ZJbnRlcnZhbC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlYWNoUXVhcnRlck9mSW50ZXJ2YWwgfSBmcm9tIFwiLi9lYWNoUXVhcnRlck9mSW50ZXJ2YWwvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZWFjaFdlZWtPZkludGVydmFsIH0gZnJvbSBcIi4vZWFjaFdlZWtPZkludGVydmFsL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVhY2hXZWVrZW5kT2ZJbnRlcnZhbCB9IGZyb20gXCIuL2VhY2hXZWVrZW5kT2ZJbnRlcnZhbC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlYWNoV2Vla2VuZE9mTW9udGggfSBmcm9tIFwiLi9lYWNoV2Vla2VuZE9mTW9udGgvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZWFjaFdlZWtlbmRPZlllYXIgfSBmcm9tIFwiLi9lYWNoV2Vla2VuZE9mWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlYWNoWWVhck9mSW50ZXJ2YWwgfSBmcm9tIFwiLi9lYWNoWWVhck9mSW50ZXJ2YWwvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZW5kT2ZEYXkgfSBmcm9tIFwiLi9lbmRPZkRheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlbmRPZkRlY2FkZSB9IGZyb20gXCIuL2VuZE9mRGVjYWRlL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuZE9mSG91ciB9IGZyb20gXCIuL2VuZE9mSG91ci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlbmRPZklTT1dlZWsgfSBmcm9tIFwiLi9lbmRPZklTT1dlZWsvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZW5kT2ZJU09XZWVrWWVhciB9IGZyb20gXCIuL2VuZE9mSVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZW5kT2ZNaW51dGUgfSBmcm9tIFwiLi9lbmRPZk1pbnV0ZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlbmRPZk1vbnRoIH0gZnJvbSBcIi4vZW5kT2ZNb250aC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlbmRPZlF1YXJ0ZXIgfSBmcm9tIFwiLi9lbmRPZlF1YXJ0ZXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZW5kT2ZTZWNvbmQgfSBmcm9tIFwiLi9lbmRPZlNlY29uZC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlbmRPZlRvZGF5IH0gZnJvbSBcIi4vZW5kT2ZUb2RheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlbmRPZlRvbW9ycm93IH0gZnJvbSBcIi4vZW5kT2ZUb21vcnJvdy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlbmRPZldlZWsgfSBmcm9tIFwiLi9lbmRPZldlZWsvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZW5kT2ZZZWFyIH0gZnJvbSBcIi4vZW5kT2ZZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuZE9mWWVzdGVyZGF5IH0gZnJvbSBcIi4vZW5kT2ZZZXN0ZXJkYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZm9ybWF0IH0gZnJvbSBcIi4vZm9ybWF0L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZvcm1hdERpc3RhbmNlIH0gZnJvbSBcIi4vZm9ybWF0RGlzdGFuY2UvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZm9ybWF0RGlzdGFuY2VTdHJpY3QgfSBmcm9tIFwiLi9mb3JtYXREaXN0YW5jZVN0cmljdC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmb3JtYXREaXN0YW5jZVRvTm93IH0gZnJvbSBcIi4vZm9ybWF0RGlzdGFuY2VUb05vdy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmb3JtYXREaXN0YW5jZVRvTm93U3RyaWN0IH0gZnJvbSBcIi4vZm9ybWF0RGlzdGFuY2VUb05vd1N0cmljdC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmb3JtYXREdXJhdGlvbiB9IGZyb20gXCIuL2Zvcm1hdER1cmF0aW9uL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZvcm1hdElTTyB9IGZyb20gXCIuL2Zvcm1hdElTTy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmb3JtYXRJU085MDc1IH0gZnJvbSBcIi4vZm9ybWF0SVNPOTA3NS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmb3JtYXRJU09EdXJhdGlvbiB9IGZyb20gXCIuL2Zvcm1hdElTT0R1cmF0aW9uL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZvcm1hdFJGQzMzMzkgfSBmcm9tIFwiLi9mb3JtYXRSRkMzMzM5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZvcm1hdFJGQzcyMzEgfSBmcm9tIFwiLi9mb3JtYXRSRkM3MjMxL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZvcm1hdFJlbGF0aXZlIH0gZnJvbSBcIi4vZm9ybWF0UmVsYXRpdmUvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZnJvbVVuaXhUaW1lIH0gZnJvbSBcIi4vZnJvbVVuaXhUaW1lL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldERhdGUgfSBmcm9tIFwiLi9nZXREYXRlL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldERheSB9IGZyb20gXCIuL2dldERheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXREYXlPZlllYXIgfSBmcm9tIFwiLi9nZXREYXlPZlllYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0RGF5c0luTW9udGggfSBmcm9tIFwiLi9nZXREYXlzSW5Nb250aC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXREYXlzSW5ZZWFyIH0gZnJvbSBcIi4vZ2V0RGF5c0luWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXREZWNhZGUgfSBmcm9tIFwiLi9nZXREZWNhZGUvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi9nZXREZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRIb3VycyB9IGZyb20gXCIuL2dldEhvdXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldElTT0RheSB9IGZyb20gXCIuL2dldElTT0RheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRJU09XZWVrIH0gZnJvbSBcIi4vZ2V0SVNPV2Vlay9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRJU09XZWVrWWVhciB9IGZyb20gXCIuL2dldElTT1dlZWtZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldElTT1dlZWtzSW5ZZWFyIH0gZnJvbSBcIi4vZ2V0SVNPV2Vla3NJblllYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0TWlsbGlzZWNvbmRzIH0gZnJvbSBcIi4vZ2V0TWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldE1pbnV0ZXMgfSBmcm9tIFwiLi9nZXRNaW51dGVzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldE1vbnRoIH0gZnJvbSBcIi4vZ2V0TW9udGgvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0T3ZlcmxhcHBpbmdEYXlzSW5JbnRlcnZhbHMgfSBmcm9tIFwiLi9nZXRPdmVybGFwcGluZ0RheXNJbkludGVydmFscy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRRdWFydGVyIH0gZnJvbSBcIi4vZ2V0UXVhcnRlci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRTZWNvbmRzIH0gZnJvbSBcIi4vZ2V0U2Vjb25kcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRUaW1lIH0gZnJvbSBcIi4vZ2V0VGltZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRVbml4VGltZSB9IGZyb20gXCIuL2dldFVuaXhUaW1lL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldFdlZWsgfSBmcm9tIFwiLi9nZXRXZWVrL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldFdlZWtPZk1vbnRoIH0gZnJvbSBcIi4vZ2V0V2Vla09mTW9udGgvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0V2Vla1llYXIgfSBmcm9tIFwiLi9nZXRXZWVrWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRXZWVrc0luTW9udGggfSBmcm9tIFwiLi9nZXRXZWVrc0luTW9udGgvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0WWVhciB9IGZyb20gXCIuL2dldFllYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaG91cnNUb01pbGxpc2Vjb25kcyB9IGZyb20gXCIuL2hvdXJzVG9NaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaG91cnNUb01pbnV0ZXMgfSBmcm9tIFwiLi9ob3Vyc1RvTWludXRlcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBob3Vyc1RvU2Vjb25kcyB9IGZyb20gXCIuL2hvdXJzVG9TZWNvbmRzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGludGVydmFsVG9EdXJhdGlvbiB9IGZyb20gXCIuL2ludGVydmFsVG9EdXJhdGlvbi9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpbnRsRm9ybWF0IH0gZnJvbSBcIi4vaW50bEZvcm1hdC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpbnRsRm9ybWF0RGlzdGFuY2UgfSBmcm9tIFwiLi9pbnRsRm9ybWF0RGlzdGFuY2UvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNBZnRlciB9IGZyb20gXCIuL2lzQWZ0ZXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNCZWZvcmUgfSBmcm9tIFwiLi9pc0JlZm9yZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0RhdGUgfSBmcm9tIFwiLi9pc0RhdGUvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNFcXVhbCB9IGZyb20gXCIuL2lzRXF1YWwvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNFeGlzdHMgfSBmcm9tIFwiLi9pc0V4aXN0cy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0ZpcnN0RGF5T2ZNb250aCB9IGZyb20gXCIuL2lzRmlyc3REYXlPZk1vbnRoL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzRnJpZGF5IH0gZnJvbSBcIi4vaXNGcmlkYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNGdXR1cmUgfSBmcm9tIFwiLi9pc0Z1dHVyZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0xhc3REYXlPZk1vbnRoIH0gZnJvbSBcIi4vaXNMYXN0RGF5T2ZNb250aC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0xlYXBZZWFyIH0gZnJvbSBcIi4vaXNMZWFwWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc01hdGNoIH0gZnJvbSBcIi4vaXNNYXRjaC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc01vbmRheSB9IGZyb20gXCIuL2lzTW9uZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzUGFzdCB9IGZyb20gXCIuL2lzUGFzdC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1NhbWVEYXkgfSBmcm9tIFwiLi9pc1NhbWVEYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNTYW1lSG91ciB9IGZyb20gXCIuL2lzU2FtZUhvdXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNTYW1lSVNPV2VlayB9IGZyb20gXCIuL2lzU2FtZUlTT1dlZWsvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNTYW1lSVNPV2Vla1llYXIgfSBmcm9tIFwiLi9pc1NhbWVJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1NhbWVNaW51dGUgfSBmcm9tIFwiLi9pc1NhbWVNaW51dGUvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNTYW1lTW9udGggfSBmcm9tIFwiLi9pc1NhbWVNb250aC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1NhbWVRdWFydGVyIH0gZnJvbSBcIi4vaXNTYW1lUXVhcnRlci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1NhbWVTZWNvbmQgfSBmcm9tIFwiLi9pc1NhbWVTZWNvbmQvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNTYW1lV2VlayB9IGZyb20gXCIuL2lzU2FtZVdlZWsvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNTYW1lWWVhciB9IGZyb20gXCIuL2lzU2FtZVllYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNTYXR1cmRheSB9IGZyb20gXCIuL2lzU2F0dXJkYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNTdW5kYXkgfSBmcm9tIFwiLi9pc1N1bmRheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1RoaXNIb3VyIH0gZnJvbSBcIi4vaXNUaGlzSG91ci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1RoaXNJU09XZWVrIH0gZnJvbSBcIi4vaXNUaGlzSVNPV2Vlay9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1RoaXNNaW51dGUgfSBmcm9tIFwiLi9pc1RoaXNNaW51dGUvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNUaGlzTW9udGggfSBmcm9tIFwiLi9pc1RoaXNNb250aC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1RoaXNRdWFydGVyIH0gZnJvbSBcIi4vaXNUaGlzUXVhcnRlci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1RoaXNTZWNvbmQgfSBmcm9tIFwiLi9pc1RoaXNTZWNvbmQvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNUaGlzV2VlayB9IGZyb20gXCIuL2lzVGhpc1dlZWsvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNUaGlzWWVhciB9IGZyb20gXCIuL2lzVGhpc1llYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNUaHVyc2RheSB9IGZyb20gXCIuL2lzVGh1cnNkYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNUb2RheSB9IGZyb20gXCIuL2lzVG9kYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNUb21vcnJvdyB9IGZyb20gXCIuL2lzVG9tb3Jyb3cvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNUdWVzZGF5IH0gZnJvbSBcIi4vaXNUdWVzZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzVmFsaWQgfSBmcm9tIFwiLi9pc1ZhbGlkL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzV2VkbmVzZGF5IH0gZnJvbSBcIi4vaXNXZWRuZXNkYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNXZWVrZW5kIH0gZnJvbSBcIi4vaXNXZWVrZW5kL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzV2l0aGluSW50ZXJ2YWwgfSBmcm9tIFwiLi9pc1dpdGhpbkludGVydmFsL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzWWVzdGVyZGF5IH0gZnJvbSBcIi4vaXNZZXN0ZXJkYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbGFzdERheU9mRGVjYWRlIH0gZnJvbSBcIi4vbGFzdERheU9mRGVjYWRlL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGxhc3REYXlPZklTT1dlZWsgfSBmcm9tIFwiLi9sYXN0RGF5T2ZJU09XZWVrL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGxhc3REYXlPZklTT1dlZWtZZWFyIH0gZnJvbSBcIi4vbGFzdERheU9mSVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbGFzdERheU9mTW9udGggfSBmcm9tIFwiLi9sYXN0RGF5T2ZNb250aC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBsYXN0RGF5T2ZRdWFydGVyIH0gZnJvbSBcIi4vbGFzdERheU9mUXVhcnRlci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBsYXN0RGF5T2ZXZWVrIH0gZnJvbSBcIi4vbGFzdERheU9mV2Vlay9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBsYXN0RGF5T2ZZZWFyIH0gZnJvbSBcIi4vbGFzdERheU9mWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBsaWdodEZvcm1hdCB9IGZyb20gXCIuL2xpZ2h0Rm9ybWF0L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1heCB9IGZyb20gXCIuL21heC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtaWxsaXNlY29uZHMgfSBmcm9tIFwiLi9taWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbWlsbGlzZWNvbmRzVG9Ib3VycyB9IGZyb20gXCIuL21pbGxpc2Vjb25kc1RvSG91cnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbWlsbGlzZWNvbmRzVG9NaW51dGVzIH0gZnJvbSBcIi4vbWlsbGlzZWNvbmRzVG9NaW51dGVzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1pbGxpc2Vjb25kc1RvU2Vjb25kcyB9IGZyb20gXCIuL21pbGxpc2Vjb25kc1RvU2Vjb25kcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtaW4gfSBmcm9tIFwiLi9taW4vaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbWludXRlc1RvSG91cnMgfSBmcm9tIFwiLi9taW51dGVzVG9Ib3Vycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtaW51dGVzVG9NaWxsaXNlY29uZHMgfSBmcm9tIFwiLi9taW51dGVzVG9NaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbWludXRlc1RvU2Vjb25kcyB9IGZyb20gXCIuL21pbnV0ZXNUb1NlY29uZHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbW9udGhzVG9RdWFydGVycyB9IGZyb20gXCIuL21vbnRoc1RvUXVhcnRlcnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbW9udGhzVG9ZZWFycyB9IGZyb20gXCIuL21vbnRoc1RvWWVhcnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbmV4dERheSB9IGZyb20gXCIuL25leHREYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbmV4dEZyaWRheSB9IGZyb20gXCIuL25leHRGcmlkYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbmV4dE1vbmRheSB9IGZyb20gXCIuL25leHRNb25kYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbmV4dFNhdHVyZGF5IH0gZnJvbSBcIi4vbmV4dFNhdHVyZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG5leHRTdW5kYXkgfSBmcm9tIFwiLi9uZXh0U3VuZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG5leHRUaHVyc2RheSB9IGZyb20gXCIuL25leHRUaHVyc2RheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBuZXh0VHVlc2RheSB9IGZyb20gXCIuL25leHRUdWVzZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG5leHRXZWRuZXNkYXkgfSBmcm9tIFwiLi9uZXh0V2VkbmVzZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHBhcnNlIH0gZnJvbSBcIi4vcGFyc2UvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcGFyc2VJU08gfSBmcm9tIFwiLi9wYXJzZUlTTy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwYXJzZUpTT04gfSBmcm9tIFwiLi9wYXJzZUpTT04vaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcHJldmlvdXNEYXkgfSBmcm9tIFwiLi9wcmV2aW91c0RheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwcmV2aW91c0ZyaWRheSB9IGZyb20gXCIuL3ByZXZpb3VzRnJpZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByZXZpb3VzTW9uZGF5IH0gZnJvbSBcIi4vcHJldmlvdXNNb25kYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcHJldmlvdXNTYXR1cmRheSB9IGZyb20gXCIuL3ByZXZpb3VzU2F0dXJkYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcHJldmlvdXNTdW5kYXkgfSBmcm9tIFwiLi9wcmV2aW91c1N1bmRheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwcmV2aW91c1RodXJzZGF5IH0gZnJvbSBcIi4vcHJldmlvdXNUaHVyc2RheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwcmV2aW91c1R1ZXNkYXkgfSBmcm9tIFwiLi9wcmV2aW91c1R1ZXNkYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcHJldmlvdXNXZWRuZXNkYXkgfSBmcm9tIFwiLi9wcmV2aW91c1dlZG5lc2RheS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBxdWFydGVyc1RvTW9udGhzIH0gZnJvbSBcIi4vcXVhcnRlcnNUb01vbnRocy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBxdWFydGVyc1RvWWVhcnMgfSBmcm9tIFwiLi9xdWFydGVyc1RvWWVhcnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcm91bmRUb05lYXJlc3RNaW51dGVzIH0gZnJvbSBcIi4vcm91bmRUb05lYXJlc3RNaW51dGVzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNlY29uZHNUb0hvdXJzIH0gZnJvbSBcIi4vc2Vjb25kc1RvSG91cnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2Vjb25kc1RvTWlsbGlzZWNvbmRzIH0gZnJvbSBcIi4vc2Vjb25kc1RvTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNlY29uZHNUb01pbnV0ZXMgfSBmcm9tIFwiLi9zZWNvbmRzVG9NaW51dGVzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldCB9IGZyb20gXCIuL3NldC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXREYXRlIH0gZnJvbSBcIi4vc2V0RGF0ZS9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXREYXkgfSBmcm9tIFwiLi9zZXREYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2V0RGF5T2ZZZWFyIH0gZnJvbSBcIi4vc2V0RGF5T2ZZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4vc2V0RGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2V0SG91cnMgfSBmcm9tIFwiLi9zZXRIb3Vycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXRJU09EYXkgfSBmcm9tIFwiLi9zZXRJU09EYXkvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2V0SVNPV2VlayB9IGZyb20gXCIuL3NldElTT1dlZWsvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2V0SVNPV2Vla1llYXIgfSBmcm9tIFwiLi9zZXRJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXRNaWxsaXNlY29uZHMgfSBmcm9tIFwiLi9zZXRNaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2V0TWludXRlcyB9IGZyb20gXCIuL3NldE1pbnV0ZXMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2V0TW9udGggfSBmcm9tIFwiLi9zZXRNb250aC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXRRdWFydGVyIH0gZnJvbSBcIi4vc2V0UXVhcnRlci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXRTZWNvbmRzIH0gZnJvbSBcIi4vc2V0U2Vjb25kcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXRXZWVrIH0gZnJvbSBcIi4vc2V0V2Vlay9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXRXZWVrWWVhciB9IGZyb20gXCIuL3NldFdlZWtZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldFllYXIgfSBmcm9tIFwiLi9zZXRZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN0YXJ0T2ZEYXkgfSBmcm9tIFwiLi9zdGFydE9mRGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN0YXJ0T2ZEZWNhZGUgfSBmcm9tIFwiLi9zdGFydE9mRGVjYWRlL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN0YXJ0T2ZIb3VyIH0gZnJvbSBcIi4vc3RhcnRPZkhvdXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3RhcnRPZklTT1dlZWsgfSBmcm9tIFwiLi9zdGFydE9mSVNPV2Vlay9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGFydE9mSVNPV2Vla1llYXIgfSBmcm9tIFwiLi9zdGFydE9mSVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3RhcnRPZk1pbnV0ZSB9IGZyb20gXCIuL3N0YXJ0T2ZNaW51dGUvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3RhcnRPZk1vbnRoIH0gZnJvbSBcIi4vc3RhcnRPZk1vbnRoL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN0YXJ0T2ZRdWFydGVyIH0gZnJvbSBcIi4vc3RhcnRPZlF1YXJ0ZXIvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3RhcnRPZlNlY29uZCB9IGZyb20gXCIuL3N0YXJ0T2ZTZWNvbmQvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3RhcnRPZlRvZGF5IH0gZnJvbSBcIi4vc3RhcnRPZlRvZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN0YXJ0T2ZUb21vcnJvdyB9IGZyb20gXCIuL3N0YXJ0T2ZUb21vcnJvdy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGFydE9mV2VlayB9IGZyb20gXCIuL3N0YXJ0T2ZXZWVrL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN0YXJ0T2ZXZWVrWWVhciB9IGZyb20gXCIuL3N0YXJ0T2ZXZWVrWWVhci9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGFydE9mWWVhciB9IGZyb20gXCIuL3N0YXJ0T2ZZZWFyL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN0YXJ0T2ZZZXN0ZXJkYXkgfSBmcm9tIFwiLi9zdGFydE9mWWVzdGVyZGF5L2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN1YiB9IGZyb20gXCIuL3N1Yi9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdWJCdXNpbmVzc0RheXMgfSBmcm9tIFwiLi9zdWJCdXNpbmVzc0RheXMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3ViRGF5cyB9IGZyb20gXCIuL3N1YkRheXMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3ViSG91cnMgfSBmcm9tIFwiLi9zdWJIb3Vycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdWJJU09XZWVrWWVhcnMgfSBmcm9tIFwiLi9zdWJJU09XZWVrWWVhcnMvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3ViTWlsbGlzZWNvbmRzIH0gZnJvbSBcIi4vc3ViTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN1Yk1pbnV0ZXMgfSBmcm9tIFwiLi9zdWJNaW51dGVzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN1Yk1vbnRocyB9IGZyb20gXCIuL3N1Yk1vbnRocy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdWJRdWFydGVycyB9IGZyb20gXCIuL3N1YlF1YXJ0ZXJzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN1YlNlY29uZHMgfSBmcm9tIFwiLi9zdWJTZWNvbmRzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN1YldlZWtzIH0gZnJvbSBcIi4vc3ViV2Vla3MvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3ViWWVhcnMgfSBmcm9tIFwiLi9zdWJZZWFycy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUvaW5kZXguanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgd2Vla3NUb0RheXMgfSBmcm9tIFwiLi93ZWVrc1RvRGF5cy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB5ZWFyc1RvTW9udGhzIH0gZnJvbSBcIi4veWVhcnNUb01vbnRocy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB5ZWFyc1RvUXVhcnRlcnMgfSBmcm9tIFwiLi95ZWFyc1RvUXVhcnRlcnMvaW5kZXguanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbnN0YW50cy9pbmRleC5qc1wiOyIsImltcG9ydCBjb21wYXJlQXNjIGZyb20gXCIuLi9jb21wYXJlQXNjL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkIGZyb20gXCIuLi9hZGQvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5EYXlzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5EYXlzL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluSG91cnMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkhvdXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluTWludXRlcyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluTWludXRlcy9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbk1vbnRocyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluTW9udGhzL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluU2Vjb25kcyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluU2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJblllYXJzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5ZZWFycy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpbnRlcnZhbFRvRHVyYXRpb25cbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCBpbnRlcnZhbCB0byBkdXJhdGlvblxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIGludGVydmFsIG9iamVjdCB0byBhIGR1cmF0aW9uIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge0ludGVydmFsfSBpbnRlcnZhbCAtIHRoZSBpbnRlcnZhbCB0byBjb252ZXJ0IHRvIGR1cmF0aW9uXG4gKlxuICogQHJldHVybnMge0R1cmF0aW9ufSBUaGUgZHVyYXRpb24gT2JqZWN0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IFJlcXVpcmVzIDIgYXJndW1lbnRzXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgc3RhcnRgIG11c3Qgbm90IGJlIEludmFsaWQgRGF0ZVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYGVuZGAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEdldCB0aGUgZHVyYXRpb24gYmV0d2VlbiBKYW51YXJ5IDE1LCAxOTI5IGFuZCBBcHJpbCA0LCAxOTY4LlxuICogaW50ZXJ2YWxUb0R1cmF0aW9uKHtcbiAqICAgc3RhcnQ6IG5ldyBEYXRlKDE5MjksIDAsIDE1LCAxMiwgMCwgMCksXG4gKiAgIGVuZDogbmV3IERhdGUoMTk2OCwgMywgNCwgMTksIDUsIDApXG4gKiB9KVxuICogLy8gPT4geyB5ZWFyczogMzksIG1vbnRoczogMiwgZGF5czogMjAsIGhvdXJzOiA3LCBtaW51dGVzOiA1LCBzZWNvbmRzOiAwIH1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW50ZXJ2YWxUb0R1cmF0aW9uKGludGVydmFsKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgc3RhcnQgPSB0b0RhdGUoaW50ZXJ2YWwuc3RhcnQpO1xuICB2YXIgZW5kID0gdG9EYXRlKGludGVydmFsLmVuZCk7XG4gIGlmIChpc05hTihzdGFydC5nZXRUaW1lKCkpKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignU3RhcnQgRGF0ZSBpcyBpbnZhbGlkJyk7XG4gIGlmIChpc05hTihlbmQuZ2V0VGltZSgpKSkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0VuZCBEYXRlIGlzIGludmFsaWQnKTtcbiAgdmFyIGR1cmF0aW9uID0ge307XG4gIGR1cmF0aW9uLnllYXJzID0gTWF0aC5hYnMoZGlmZmVyZW5jZUluWWVhcnMoZW5kLCBzdGFydCkpO1xuICB2YXIgc2lnbiA9IGNvbXBhcmVBc2MoZW5kLCBzdGFydCk7XG4gIHZhciByZW1haW5pbmdNb250aHMgPSBhZGQoc3RhcnQsIHtcbiAgICB5ZWFyczogc2lnbiAqIGR1cmF0aW9uLnllYXJzXG4gIH0pO1xuICBkdXJhdGlvbi5tb250aHMgPSBNYXRoLmFicyhkaWZmZXJlbmNlSW5Nb250aHMoZW5kLCByZW1haW5pbmdNb250aHMpKTtcbiAgdmFyIHJlbWFpbmluZ0RheXMgPSBhZGQocmVtYWluaW5nTW9udGhzLCB7XG4gICAgbW9udGhzOiBzaWduICogZHVyYXRpb24ubW9udGhzXG4gIH0pO1xuICBkdXJhdGlvbi5kYXlzID0gTWF0aC5hYnMoZGlmZmVyZW5jZUluRGF5cyhlbmQsIHJlbWFpbmluZ0RheXMpKTtcbiAgdmFyIHJlbWFpbmluZ0hvdXJzID0gYWRkKHJlbWFpbmluZ0RheXMsIHtcbiAgICBkYXlzOiBzaWduICogZHVyYXRpb24uZGF5c1xuICB9KTtcbiAgZHVyYXRpb24uaG91cnMgPSBNYXRoLmFicyhkaWZmZXJlbmNlSW5Ib3VycyhlbmQsIHJlbWFpbmluZ0hvdXJzKSk7XG4gIHZhciByZW1haW5pbmdNaW51dGVzID0gYWRkKHJlbWFpbmluZ0hvdXJzLCB7XG4gICAgaG91cnM6IHNpZ24gKiBkdXJhdGlvbi5ob3Vyc1xuICB9KTtcbiAgZHVyYXRpb24ubWludXRlcyA9IE1hdGguYWJzKGRpZmZlcmVuY2VJbk1pbnV0ZXMoZW5kLCByZW1haW5pbmdNaW51dGVzKSk7XG4gIHZhciByZW1haW5pbmdTZWNvbmRzID0gYWRkKHJlbWFpbmluZ01pbnV0ZXMsIHtcbiAgICBtaW51dGVzOiBzaWduICogZHVyYXRpb24ubWludXRlc1xuICB9KTtcbiAgZHVyYXRpb24uc2Vjb25kcyA9IE1hdGguYWJzKGRpZmZlcmVuY2VJblNlY29uZHMoZW5kLCByZW1haW5pbmdTZWNvbmRzKSk7XG4gIHJldHVybiBkdXJhdGlvbjtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpbnRsRm9ybWF0XG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5ICBGb3JtYXQgdGhlIGRhdGUgd2l0aCBJbnRsLkRhdGVUaW1lRm9ybWF0IChodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9JbnRsL0RhdGVUaW1lRm9ybWF0KS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nIGluIHRoZSBnaXZlbiBmb3JtYXQuXG4gKiBUaGUgbWV0aG9kIHVzZXMgW2BJbnRsLkRhdGVUaW1lRm9ybWF0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvSW50bC9EYXRlVGltZUZvcm1hdCkgaW5zaWRlLlxuICogZm9ybWF0T3B0aW9ucyBhcmUgdGhlIHNhbWUgYXMgW2BJbnRsLkRhdGVUaW1lRm9ybWF0YCBvcHRpb25zXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9JbnRsL0RhdGVUaW1lRm9ybWF0I3VzaW5nX29wdGlvbnMpXG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCBiZWZvcmUgTm9kZSB2ZXJzaW9uIDEzLjAuMCwgb25seSB0aGUgbG9jYWxlIGRhdGEgZm9yIGVuLVVTIGlzIGF2YWlsYWJsZSBieSBkZWZhdWx0LlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGFyZ3VtZW50IC0gdGhlIG9yaWdpbmFsIGRhdGUuXG4gKiBAcGFyYW0ge09iamVjdH0gW2Zvcm1hdE9wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7J2xvb2t1cCd8J2Jlc3QgZml0J30gW2Zvcm1hdE9wdGlvbnMubG9jYWxlTWF0Y2hlcj0nYmVzdCBmaXQnXSAtIGxvY2FsZSBzZWxlY3Rpb24gYWxnb3JpdGhtLlxuICogQHBhcmFtIHsnbmFycm93J3wnc2hvcnQnfCdsb25nJ30gW2Zvcm1hdE9wdGlvbnMud2Vla2RheV0gLSByZXByZXNlbnRhdGlvbiB0aGUgZGF5cyBvZiB0aGUgd2Vlay5cbiAqIEBwYXJhbSB7J25hcnJvdyd8J3Nob3J0J3wnbG9uZyd9IFtmb3JtYXRPcHRpb25zLmVyYV0gLSByZXByZXNlbnRhdGlvbiBvZiBlcmFzLlxuICogQHBhcmFtIHsnbnVtZXJpYyd8JzItZGlnaXQnfSBbZm9ybWF0T3B0aW9ucy55ZWFyXSAtIHJlcHJlc2VudGF0aW9uIG9mIHllYXJzLlxuICogQHBhcmFtIHsnbnVtZXJpYyd8JzItZGlnaXQnfCduYXJyb3cnfCdzaG9ydCd8J2xvbmcnfSBbZm9ybWF0T3B0aW9ucy5tb250aD0nbnVtZXJpYyddIC0gcmVwcmVzZW50YXRpb24gb2YgbW9udGguXG4gKiBAcGFyYW0geydudW1lcmljJ3wnMi1kaWdpdCd9IFtmb3JtYXRPcHRpb25zLmRheT0nbnVtZXJpYyddIC0gcmVwcmVzZW50YXRpb24gb2YgZGF5LlxuICogQHBhcmFtIHsnbnVtZXJpYyd8JzItZGlnaXQnfSBbZm9ybWF0T3B0aW9ucy5ob3VyPSdudW1lcmljJ10gLSByZXByZXNlbnRhdGlvbiBvZiBob3Vycy5cbiAqIEBwYXJhbSB7J251bWVyaWMnfCcyLWRpZ2l0J30gW2Zvcm1hdE9wdGlvbnMubWludXRlXSAtIHJlcHJlc2VudGF0aW9uIG9mIG1pbnV0ZXMuXG4gKiBAcGFyYW0geydudW1lcmljJ3wnMi1kaWdpdCd9IFtmb3JtYXRPcHRpb25zLnNlY29uZF0gLSByZXByZXNlbnRhdGlvbiBvZiBzZWNvbmRzLlxuICogQHBhcmFtIHsnc2hvcnQnfCdsb25nJ30gW2Zvcm1hdE9wdGlvbnMudGltZVpvbmVOYW1lXSAtIHJlcHJlc2VudGF0aW9uIG9mIG5hbWVzIG9mIHRpbWUgem9uZXMuXG4gKiBAcGFyYW0geydiYXNpYyd8J2Jlc3QgZml0J30gW2Zvcm1hdE9wdGlvbnMuZm9ybWF0TWF0Y2hlcj0nYmVzdCBmaXQnXSAtIGZvcm1hdCBzZWxlY3Rpb24gYWxnb3JpdGhtLlxuICogQHBhcmFtIHtCb29sZWFufSBbZm9ybWF0T3B0aW9ucy5ob3VyMTJdIC0gZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHVzZSAxMi1ob3VyIHRpbWUgZm9ybWF0LlxuICogQHBhcmFtIHtTdHJpbmd9IFtmb3JtYXRPcHRpb25zLnRpbWVab25lXSAtIHRoZSB0aW1lIHpvbmUgdG8gdXNlLlxuICogQHBhcmFtIHtPYmplY3R9IFtsb2NhbGVPcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIGxvY2FsZS5cbiAqIEBwYXJhbSB7U3RyaW5nfFN0cmluZ1tdfSBbbG9jYWxlT3B0aW9ucy5sb2NhbGVdIC0gdGhlIGxvY2FsZSBjb2RlXG4gKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nLlxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkLlxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYGRhdGVgIG11c3Qgbm90IGJlIEludmFsaWQgRGF0ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTAgT2N0b2JlciAyMDE5IGluIEdlcm1hbi5cbiAqIC8vIENvbnZlcnQgdGhlIGRhdGUgd2l0aCBmb3JtYXQncyBvcHRpb25zIGFuZCBsb2NhbGUncyBvcHRpb25zLlxuICogY29uc3QgcmVzdWx0ID0gaW50bEZvcm1hdChuZXcgRGF0ZSgyMDE5LCA5LCA0LCAxMiwgMzAsIDEzLCA0NTYpLCB7XG4gKiAgICAgIHdlZWtkYXk6ICdsb25nJyxcbiAqICAgICAgeWVhcjogJ251bWVyaWMnLFxuICogICAgICBtb250aDogJ2xvbmcnLFxuICogICAgICBkYXk6ICdudW1lcmljJyxcbiAqICAgIH0sIHtcbiAqICAgICAgbG9jYWxlOiAnZGUtREUnLFxuICogIH0pXG4gKiAvLz0+IEZyZWl0YWcsIDQuIE9rdG9iZXIgMjAxOVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTAgT2N0b2JlciAyMDE5LlxuICogLy8gQ29udmVydCB0aGUgZGF0ZSB3aXRoIGZvcm1hdCdzIG9wdGlvbnMuXG4gKiBjb25zdCByZXN1bHQgPSBpbnRsRm9ybWF0LmRlZmF1bHQobmV3IERhdGUoMjAxOSwgOSwgNCwgMTIsIDMwLCAxMywgNDU2KSwge1xuICogICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gKiAgICAgIG1vbnRoOiAnbnVtZXJpYycsXG4gKiAgICAgIGRheTogJ251bWVyaWMnLFxuICogICAgICBob3VyOiAnbnVtZXJpYycsXG4gKiAgfSlcbiAqIC8vPT4gMTAvNC8yMDE5LCAxMiBQTVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTAgT2N0b2JlciAyMDE5IGluIEtvcmVhbi5cbiAqIC8vIENvbnZlcnQgdGhlIGRhdGUgd2l0aCBsb2NhbGUncyBvcHRpb25zLlxuICogY29uc3QgcmVzdWx0ID0gaW50bEZvcm1hdChuZXcgRGF0ZSgyMDE5LCA5LCA0LCAxMiwgMzAsIDEzLCA0NTYpLCB7XG4gKiAgICAgIGxvY2FsZTogJ2tvLUtSJyxcbiAqICB9KVxuICogLy89PiAyMDE5LiAxMC4gNC5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDEwIE9jdG9iZXIgMjAxOSBpbiBtaWRkbGUtZW5kaWFuIGZvcm1hdDpcbiAqIGNvbnN0IHJlc3VsdCA9IGludGxGb3JtYXQobmV3IERhdGUoMjAxOSwgOSwgNCwgMTIsIDMwLCAxMywgNDU2KSlcbiAqIC8vPT4gMTAvNC8yMDE5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGludGxGb3JtYXQoZGF0ZSwgZm9ybWF0T3JMb2NhbGUsIGxvY2FsZU9wdGlvbnMpIHtcbiAgdmFyIF9sb2NhbGVPcHRpb25zO1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGZvcm1hdE9wdGlvbnM7XG4gIGlmIChpc0Zvcm1hdE9wdGlvbnMoZm9ybWF0T3JMb2NhbGUpKSB7XG4gICAgZm9ybWF0T3B0aW9ucyA9IGZvcm1hdE9yTG9jYWxlO1xuICB9IGVsc2Uge1xuICAgIGxvY2FsZU9wdGlvbnMgPSBmb3JtYXRPckxvY2FsZTtcbiAgfVxuICByZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoKF9sb2NhbGVPcHRpb25zID0gbG9jYWxlT3B0aW9ucykgPT09IG51bGwgfHwgX2xvY2FsZU9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9sb2NhbGVPcHRpb25zLmxvY2FsZSwgZm9ybWF0T3B0aW9ucykuZm9ybWF0KGRhdGUpO1xufVxuZnVuY3Rpb24gaXNGb3JtYXRPcHRpb25zKG9wdHMpIHtcbiAgcmV0dXJuIG9wdHMgIT09IHVuZGVmaW5lZCAmJiAhKCdsb2NhbGUnIGluIG9wdHMpO1xufSIsImltcG9ydCB7IHNlY29uZHNJbkRheSwgc2Vjb25kc0luSG91ciwgc2Vjb25kc0luTWludXRlLCBzZWNvbmRzSW5Nb250aCwgc2Vjb25kc0luUXVhcnRlciwgc2Vjb25kc0luV2Vlaywgc2Vjb25kc0luWWVhciB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cy9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbkNhbGVuZGFyTW9udGhzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocy9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbkNhbGVuZGFyUXVhcnRlcnMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkNhbGVuZGFyUXVhcnRlcnMvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5DYWxlbmRhcldlZWtzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5DYWxlbmRhcldlZWtzL2luZGV4LmpzXCI7XG5pbXBvcnQgZGlmZmVyZW5jZUluQ2FsZW5kYXJZZWFycyBmcm9tIFwiLi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJZZWFycy9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbkhvdXJzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5Ib3Vycy9pbmRleC5qc1wiO1xuaW1wb3J0IGRpZmZlcmVuY2VJbk1pbnV0ZXMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbk1pbnV0ZXMvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5TZWNvbmRzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5TZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGludGxGb3JtYXREaXN0YW5jZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBGb3JtYXRzIGRpc3RhbmNlIGJldHdlZW4gdHdvIGRhdGVzIGluIGEgaHVtYW4tcmVhZGFibGUgZm9ybWF0XG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoZSBmdW5jdGlvbiBjYWxjdWxhdGVzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGRhdGVzIGFuZCBmb3JtYXRzIGl0IGFzIGEgaHVtYW4tcmVhZGFibGUgc3RyaW5nLlxuICpcbiAqIFRoZSBmdW5jdGlvbiB3aWxsIHBpY2sgdGhlIG1vc3QgYXBwcm9wcmlhdGUgdW5pdCBkZXBlbmRpbmcgb24gdGhlIGRpc3RhbmNlIGJldHdlZW4gZGF0ZXMuIEZvciBleGFtcGxlLCBpZiB0aGUgZGlzdGFuY2UgaXMgYSBmZXcgaG91cnMsIGl0IG1pZ2h0IHJldHVybiBgeCBob3Vyc2AuIElmIHRoZSBkaXN0YW5jZSBpcyBhIGZldyBtb250aHMsIGl0IG1pZ2h0IHJldHVybiBgeCBtb250aHNgLlxuICpcbiAqIFlvdSBjYW4gYWxzbyBzcGVjaWZ5IGEgdW5pdCB0byBmb3JjZSB1c2luZyBpdCByZWdhcmRsZXNzIG9mIHRoZSBkaXN0YW5jZSB0byBnZXQgYSByZXN1bHQgbGlrZSBgMTIzNDU2IGhvdXJzYC5cbiAqXG4gKiBTZWUgdGhlIHRhYmxlIGJlbG93IGZvciB0aGUgdW5pdCBwaWNraW5nIGxvZ2ljOlxuICpcbiAqIHwgRGlzdGFuY2UgYmV0d2VlbiBkYXRlcyB8IFJlc3VsdCAocGFzdCkgIHwgUmVzdWx0IChmdXR1cmUpIHxcbiAqIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tIHxcbiAqIHwgMCBzZWNvbmRzICAgICAgICAgICAgICB8IG5vdyAgICAgICAgICAgIHwgbm93ICAgICAgICAgICAgIHxcbiAqIHwgMS01OSBzZWNvbmRzICAgICAgICAgICB8IFggc2Vjb25kcyBhZ28gIHwgaW4gWCBzZWNvbmRzICAgIHxcbiAqIHwgMS01OSBtaW51dGVzICAgICAgICAgICB8IFggbWludXRlcyBhZ28gIHwgaW4gWCBtaW51dGVzICAgIHxcbiAqIHwgMS0yMyBob3VycyAgICAgICAgICAgICB8IFggaG91cnMgYWdvICAgIHwgaW4gWCBob3VycyAgICAgIHxcbiAqIHwgMSBkYXkgICAgICAgICAgICAgICAgICB8IHllc3RlcmRheSAgICAgIHwgdG9tb3Jyb3cgICAgICAgIHxcbiAqIHwgMi02IGRheXMgICAgICAgICAgICAgICB8IFggZGF5cyBhZ28gICAgIHwgaW4gWCBkYXlzICAgICAgIHxcbiAqIHwgNyBkYXlzICAgICAgICAgICAgICAgICB8IGxhc3Qgd2VlayAgICAgIHwgbmV4dCB3ZWVrICAgICAgIHxcbiAqIHwgOCBkYXlzLTEgbW9udGggICAgICAgICB8IFggd2Vla3MgYWdvICAgIHwgaW4gWCB3ZWVrcyAgICAgIHxcbiAqIHwgMSBtb250aCAgICAgICAgICAgICAgICB8IGxhc3QgbW9udGggICAgIHwgbmV4dCBtb250aCAgICAgIHxcbiAqIHwgMi0zIG1vbnRocyAgICAgICAgICAgICB8IFggbW9udGhzIGFnbyAgIHwgaW4gWCBtb250aHMgICAgIHxcbiAqIHwgMSBxdWFydGVyICAgICAgICAgICAgICB8IGxhc3QgcXVhcnRlciAgIHwgbmV4dCBxdWFydGVyICAgIHxcbiAqIHwgMi0zIHF1YXJ0ZXJzICAgICAgICAgICB8IFggcXVhcnRlcnMgYWdvIHwgaW4gWCBxdWFydGVycyAgIHxcbiAqIHwgMSB5ZWFyICAgICAgICAgICAgICAgICB8IGxhc3QgeWVhciAgICAgIHwgbmV4dCB5ZWFyICAgICAgIHxcbiAqIHwgMisgeWVhcnMgICAgICAgICAgICAgICB8IFggeWVhcnMgYWdvICAgIHwgaW4gWCB5ZWFycyAgICAgIHxcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGJhc2VEYXRlIC0gdGhlIGRhdGUgdG8gY29tcGFyZSB3aXRoLlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdGlvbnMudW5pdF0gLSBmb3JtYXRzIHRoZSBkaXN0YW5jZSB3aXRoIHRoZSBnaXZlbiB1bml0ICgneWVhcicsICdxdWFydGVyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcpLlxuICogQHBhcmFtIHtTdHJpbmd8U3RyaW5nW119IFtvcHRpb25zLmxvY2FsZV0gLSB0aGUgbG9jYWxlIHRvIHVzZS5cbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5sb2NhbGVNYXRjaGVyPSdiZXN0IGZpdCddIC0gdGhlIGxvY2FsZSBtYXRjaGluZyBhbGdvcml0aG0gdG8gdXNlLiBPdGhlciB2YWx1ZTogJ2xvb2t1cCcuXG4gKiBTZWUgTUROIGZvciBkZXRhaWxzIFtMb2NhbGUgaWRlbnRpZmljYXRpb24gYW5kIG5lZ290aWF0aW9uXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9JbnRsI2xvY2FsZV9pZGVudGlmaWNhdGlvbl9hbmRfbmVnb3RpYXRpb24pXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdGlvbnMubnVtZXJpYz0nYXV0byddIC0gdGhlIG91dHB1dCBtZXNzYWdlIGZvcm1hdC4gVGhlIHZhbHVlcyBhcmUgJ2F1dG8nIChlLmcuIGB5ZXN0ZXJkYXlgKSwgJ2Fsd2F5cycoZS5nLiBgMSBkYXkgYWdvYCkuXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdGlvbnMuc3R5bGU9J2xvbmcnXSAtIHRoZSBsZW5ndGggb2YgdGhlIHJlc3VsdC4gVGhlIHZhbHVlcyBhcmU6ICdsb25nJyAoZS5nLiBgMSBtb250aGApLCAnc2hvcnQnIChlLmcuICdpbiAxIG1vLicpLCAnbmFycm93JyAoZS5nLiAnaW4gMSBtby4nKS5cbiAqIFRoZSBuYXJyb3cgb25lIGNvdWxkIGJlIHNpbWlsYXIgdG8gdGhlIHNob3J0IG9uZSBmb3Igc29tZSBsb2NhbGVzLlxuICogQHJldHVybnMge1N0cmluZ30gdGhlIGRpc3RhbmNlIGluIHdvcmRzIGFjY29yZGluZyB0byBsYW5ndWFnZS1zZW5zaXRpdmUgcmVsYXRpdmUgdGltZSBmb3JtYXR0aW5nLlxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYGRhdGVgIG11c3Qgbm90IGJlIEludmFsaWQgRGF0ZVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYGJhc2VEYXRlYCBtdXN0IG5vdCBiZSBJbnZhbGlkIERhdGVcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLnVuaXRgIG11c3Qgbm90IGJlIGludmFsaWQgVW5pdFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMubG9jYWxlYCBtdXN0IG5vdCBiZSBpbnZhbGlkIGxvY2FsZVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMubG9jYWxlTWF0Y2hlcmAgbXVzdCBub3QgYmUgaW52YWxpZCBsb2NhbGVNYXRjaGVyXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5udW1lcmljYCBtdXN0IG5vdCBiZSBpbnZhbGlkIG51bWVyaWNcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLnN0eWxlYCBtdXN0IG5vdCBiZSBpbnZhbGlkIHN0eWxlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoYXQgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIGRhdGVzIHdoZW4gdGhlIGZpc3QgZGF0ZSBpcyBhZnRlciB0aGUgc2Vjb25kP1xuICogaW50bEZvcm1hdERpc3RhbmNlKFxuICogICBuZXcgRGF0ZSgxOTg2LCAzLCA0LCAxMSwgMzAsIDApLFxuICogICBuZXcgRGF0ZSgxOTg2LCAzLCA0LCAxMCwgMzAsIDApXG4gKiApXG4gKiAvLz0+ICdpbiAxIGhvdXInXG4gKlxuICogLy8gV2hhdCBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgZGF0ZXMgd2hlbiB0aGUgZmlzdCBkYXRlIGlzIGJlZm9yZSB0aGUgc2Vjb25kP1xuICogaW50bEZvcm1hdERpc3RhbmNlKFxuICogICBuZXcgRGF0ZSgxOTg2LCAzLCA0LCAxMCwgMzAsIDApLFxuICogICBuZXcgRGF0ZSgxOTg2LCAzLCA0LCAxMSwgMzAsIDApXG4gKiApXG4gKiAvLz0+ICcxIGhvdXIgYWdvJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBVc2UgdGhlIHVuaXQgb3B0aW9uIHRvIGZvcmNlIHRoZSBmdW5jdGlvbiB0byBvdXRwdXQgdGhlIHJlc3VsdCBpbiBxdWFydGVycy4gV2l0aG91dCBzZXR0aW5nIGl0LCB0aGUgZXhhbXBsZSB3b3VsZCByZXR1cm4gXCJuZXh0IHllYXJcIlxuICogaW50bEZvcm1hdERpc3RhbmNlKFxuICogICBuZXcgRGF0ZSgxOTg3LCA2LCA0LCAxMCwgMzAsIDApLFxuICogICBuZXcgRGF0ZSgxOTg2LCAzLCA0LCAxMCwgMzAsIDApLFxuICogICB7IHVuaXQ6ICdxdWFydGVyJyB9XG4gKiApXG4gKiAvLz0+ICdpbiA1IHF1YXJ0ZXJzJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBVc2UgdGhlIGxvY2FsZSBvcHRpb24gdG8gZ2V0IHRoZSByZXN1bHQgaW4gU3BhbmlzaC4gV2l0aG91dCBzZXR0aW5nIGl0LCB0aGUgZXhhbXBsZSB3b3VsZCByZXR1cm4gXCJpbiAxIGhvdXJcIi5cbiAqIGludGxGb3JtYXREaXN0YW5jZShcbiAqICAgbmV3IERhdGUoMTk4NiwgMywgNCwgMTEsIDMwLCAwKSxcbiAqICAgbmV3IERhdGUoMTk4NiwgMywgNCwgMTAsIDMwLCAwKSxcbiAqICAgeyBsb2NhbGU6ICdlcycgfVxuICogKVxuICogLy89PiAnZGVudHJvIGRlIDEgaG9yYSdcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVXNlIHRoZSBudW1lcmljIG9wdGlvbiB0byBmb3JjZSB0aGUgZnVuY3Rpb24gdG8gdXNlIG51bWVyaWMgdmFsdWVzLiBXaXRob3V0IHNldHRpbmcgaXQsIHRoZSBleGFtcGxlIHdvdWxkIHJldHVybiBcInRvbW9ycm93XCIuXG4gKiBpbnRsRm9ybWF0RGlzdGFuY2UoXG4gKiAgIG5ldyBEYXRlKDE5ODYsIDMsIDUsIDExLCAzMCwgMCksXG4gKiAgIG5ldyBEYXRlKDE5ODYsIDMsIDQsIDExLCAzMCwgMCksXG4gKiAgIHsgbnVtZXJpYzogJ2Fsd2F5cycgfVxuICogKVxuICogLy89PiAnaW4gMSBkYXknXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFVzZSB0aGUgc3R5bGUgb3B0aW9uIHRvIGZvcmNlIHRoZSBmdW5jdGlvbiB0byB1c2Ugc2hvcnQgdmFsdWVzLiBXaXRob3V0IHNldHRpbmcgaXQsIHRoZSBleGFtcGxlIHdvdWxkIHJldHVybiBcImluIDIgeWVhcnNcIi5cbiAqIGludGxGb3JtYXREaXN0YW5jZShcbiAqICAgbmV3IERhdGUoMTk4OCwgMywgNCwgMTEsIDMwLCAwKSxcbiAqICAgbmV3IERhdGUoMTk4NiwgMywgNCwgMTEsIDMwLCAwKSxcbiAqICAgeyBzdHlsZTogJ3Nob3J0JyB9XG4gKiApXG4gKiAvLz0+ICdpbiAyIHlyJ1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbnRsRm9ybWF0RGlzdGFuY2UoZGF0ZSwgYmFzZURhdGUsIG9wdGlvbnMpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciB2YWx1ZSA9IDA7XG4gIHZhciB1bml0O1xuICB2YXIgZGF0ZUxlZnQgPSB0b0RhdGUoZGF0ZSk7XG4gIHZhciBkYXRlUmlnaHQgPSB0b0RhdGUoYmFzZURhdGUpO1xuICBpZiAoIShvcHRpb25zICE9PSBudWxsICYmIG9wdGlvbnMgIT09IHZvaWQgMCAmJiBvcHRpb25zLnVuaXQpKSB7XG4gICAgLy8gR2V0IHRoZSB1bml0IGJhc2VkIG9uIGRpZmZJblNlY29uZHMgY2FsY3VsYXRpb25zIGlmIG5vIHVuaXQgaXMgc3BlY2lmaWVkXG4gICAgdmFyIGRpZmZJblNlY29uZHMgPSBkaWZmZXJlbmNlSW5TZWNvbmRzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpOyAvLyBUaGUgc21hbGxlc3QgdW5pdFxuXG4gICAgaWYgKE1hdGguYWJzKGRpZmZJblNlY29uZHMpIDwgc2Vjb25kc0luTWludXRlKSB7XG4gICAgICB2YWx1ZSA9IGRpZmZlcmVuY2VJblNlY29uZHMoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gICAgICB1bml0ID0gJ3NlY29uZCc7XG4gICAgfSBlbHNlIGlmIChNYXRoLmFicyhkaWZmSW5TZWNvbmRzKSA8IHNlY29uZHNJbkhvdXIpIHtcbiAgICAgIHZhbHVlID0gZGlmZmVyZW5jZUluTWludXRlcyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgICAgIHVuaXQgPSAnbWludXRlJztcbiAgICB9IGVsc2UgaWYgKE1hdGguYWJzKGRpZmZJblNlY29uZHMpIDwgc2Vjb25kc0luRGF5ICYmIE1hdGguYWJzKGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSkgPCAxKSB7XG4gICAgICB2YWx1ZSA9IGRpZmZlcmVuY2VJbkhvdXJzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICAgICAgdW5pdCA9ICdob3VyJztcbiAgICB9IGVsc2UgaWYgKE1hdGguYWJzKGRpZmZJblNlY29uZHMpIDwgc2Vjb25kc0luV2VlayAmJiAodmFsdWUgPSBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMoZGF0ZUxlZnQsIGRhdGVSaWdodCkpICYmIE1hdGguYWJzKHZhbHVlKSA8IDcpIHtcbiAgICAgIHVuaXQgPSAnZGF5JztcbiAgICB9IGVsc2UgaWYgKE1hdGguYWJzKGRpZmZJblNlY29uZHMpIDwgc2Vjb25kc0luTW9udGgpIHtcbiAgICAgIHZhbHVlID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJXZWVrcyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgICAgIHVuaXQgPSAnd2Vlayc7XG4gICAgfSBlbHNlIGlmIChNYXRoLmFicyhkaWZmSW5TZWNvbmRzKSA8IHNlY29uZHNJblF1YXJ0ZXIpIHtcbiAgICAgIHZhbHVlID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gICAgICB1bml0ID0gJ21vbnRoJztcbiAgICB9IGVsc2UgaWYgKE1hdGguYWJzKGRpZmZJblNlY29uZHMpIDwgc2Vjb25kc0luWWVhcikge1xuICAgICAgaWYgKGRpZmZlcmVuY2VJbkNhbGVuZGFyUXVhcnRlcnMoZGF0ZUxlZnQsIGRhdGVSaWdodCkgPCA0KSB7XG4gICAgICAgIC8vIFRvIGZpbHRlciBvdXQgY2FzZXMgdGhhdCBhcmUgbGVzcyB0aGFuIGEgeWVhciBidXQgbWF0Y2ggNCBxdWFydGVyc1xuICAgICAgICB2YWx1ZSA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyUXVhcnRlcnMoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gICAgICAgIHVuaXQgPSAncXVhcnRlcic7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyWWVhcnMoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gICAgICAgIHVuaXQgPSAneWVhcic7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJZZWFycyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgICAgIHVuaXQgPSAneWVhcic7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIEdldCB0aGUgdmFsdWUgaWYgdW5pdCBpcyBzcGVjaWZpZWRcbiAgICB1bml0ID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnVuaXQ7XG4gICAgaWYgKHVuaXQgPT09ICdzZWNvbmQnKSB7XG4gICAgICB2YWx1ZSA9IGRpZmZlcmVuY2VJblNlY29uZHMoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gICAgfSBlbHNlIGlmICh1bml0ID09PSAnbWludXRlJykge1xuICAgICAgdmFsdWUgPSBkaWZmZXJlbmNlSW5NaW51dGVzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICAgIH0gZWxzZSBpZiAodW5pdCA9PT0gJ2hvdXInKSB7XG4gICAgICB2YWx1ZSA9IGRpZmZlcmVuY2VJbkhvdXJzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICAgIH0gZWxzZSBpZiAodW5pdCA9PT0gJ2RheScpIHtcbiAgICAgIHZhbHVlID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICAgIH0gZWxzZSBpZiAodW5pdCA9PT0gJ3dlZWsnKSB7XG4gICAgICB2YWx1ZSA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyV2Vla3MoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gICAgfSBlbHNlIGlmICh1bml0ID09PSAnbW9udGgnKSB7XG4gICAgICB2YWx1ZSA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyTW9udGhzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICAgIH0gZWxzZSBpZiAodW5pdCA9PT0gJ3F1YXJ0ZXInKSB7XG4gICAgICB2YWx1ZSA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyUXVhcnRlcnMoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gICAgfSBlbHNlIGlmICh1bml0ID09PSAneWVhcicpIHtcbiAgICAgIHZhbHVlID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJZZWFycyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgICB9XG4gIH1cbiAgdmFyIHJ0ZiA9IG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMubG9jYWxlLCB7XG4gICAgbG9jYWxlTWF0Y2hlcjogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmxvY2FsZU1hdGNoZXIsXG4gICAgbnVtZXJpYzogKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5udW1lcmljKSB8fCAnYXV0bycsXG4gICAgc3R5bGU6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5zdHlsZVxuICB9KTtcbiAgcmV0dXJuIHJ0Zi5mb3JtYXQodmFsdWUsIHVuaXQpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNBZnRlclxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZmlyc3QgZGF0ZSBhZnRlciB0aGUgc2Vjb25kIG9uZT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBmaXJzdCBkYXRlIGFmdGVyIHRoZSBzZWNvbmQgb25lP1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0aGF0IHNob3VsZCBiZSBhZnRlciB0aGUgb3RoZXIgb25lIHRvIHJldHVybiB0cnVlXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlVG9Db21wYXJlIC0gdGhlIGRhdGUgdG8gY29tcGFyZSB3aXRoXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGZpcnN0IGRhdGUgaXMgYWZ0ZXIgdGhlIHNlY29uZCBkYXRlXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElzIDEwIEp1bHkgMTk4OSBhZnRlciAxMSBGZWJydWFyeSAxOTg3P1xuICogY29uc3QgcmVzdWx0ID0gaXNBZnRlcihuZXcgRGF0ZSgxOTg5LCA2LCAxMCksIG5ldyBEYXRlKDE5ODcsIDEsIDExKSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0FmdGVyKGRpcnR5RGF0ZSwgZGlydHlEYXRlVG9Db21wYXJlKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGF0ZVRvQ29tcGFyZSA9IHRvRGF0ZShkaXJ0eURhdGVUb0NvbXBhcmUpO1xuICByZXR1cm4gZGF0ZS5nZXRUaW1lKCkgPiBkYXRlVG9Db21wYXJlLmdldFRpbWUoKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzQmVmb3JlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBmaXJzdCBkYXRlIGJlZm9yZSB0aGUgc2Vjb25kIG9uZT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBmaXJzdCBkYXRlIGJlZm9yZSB0aGUgc2Vjb25kIG9uZT9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdGhhdCBzaG91bGQgYmUgYmVmb3JlIHRoZSBvdGhlciBvbmUgdG8gcmV0dXJuIHRydWVcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVUb0NvbXBhcmUgLSB0aGUgZGF0ZSB0byBjb21wYXJlIHdpdGhcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZmlyc3QgZGF0ZSBpcyBiZWZvcmUgdGhlIHNlY29uZCBkYXRlXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElzIDEwIEp1bHkgMTk4OSBiZWZvcmUgMTEgRmVicnVhcnkgMTk4Nz9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzQmVmb3JlKG5ldyBEYXRlKDE5ODksIDYsIDEwKSwgbmV3IERhdGUoMTk4NywgMSwgMTEpKVxuICogLy89PiBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0JlZm9yZShkaXJ0eURhdGUsIGRpcnR5RGF0ZVRvQ29tcGFyZSkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRhdGVUb0NvbXBhcmUgPSB0b0RhdGUoZGlydHlEYXRlVG9Db21wYXJlKTtcbiAgcmV0dXJuIGRhdGUuZ2V0VGltZSgpIDwgZGF0ZVRvQ29tcGFyZS5nZXRUaW1lKCk7XG59IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZlwiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNEYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiB2YWx1ZSBhIGRhdGU/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGFuIGluc3RhbmNlIG9mIERhdGUuIFRoZSBmdW5jdGlvbiB3b3JrcyBmb3IgZGF0ZXMgdHJhbnNmZXJyZWQgYWNyb3NzIGlmcmFtZXMuXG4gKlxuICogQHBhcmFtIHsqfSB2YWx1ZSAtIHRoZSB2YWx1ZSB0byBjaGVja1xuICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGEgZGF0ZVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgYSB2YWxpZCBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gaXNEYXRlKG5ldyBEYXRlKCkpXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIGFuIGludmFsaWQgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzRGF0ZShuZXcgRGF0ZShOYU4pKVxuICogLy89PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciBzb21lIHZhbHVlOlxuICogY29uc3QgcmVzdWx0ID0gaXNEYXRlKCcyMDE0LTAyLTMxJylcbiAqIC8vPT4gZmFsc2VcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIGFuIG9iamVjdDpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzRGF0ZSh7fSlcbiAqIC8vPT4gZmFsc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNEYXRlKHZhbHVlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBEYXRlIHx8IF90eXBlb2YodmFsdWUpID09PSAnb2JqZWN0JyAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBEYXRlXSc7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc0VxdWFsXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgZXF1YWw/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBcmUgdGhlIGdpdmVuIGRhdGVzIGVxdWFsP1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGZpcnN0IGRhdGUgdG8gY29tcGFyZVxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIHNlY29uZCBkYXRlIHRvIGNvbXBhcmVcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZXMgYXJlIGVxdWFsXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSAyIEp1bHkgMjAxNCAwNjozMDo0NS4wMDAgYW5kIDIgSnVseSAyMDE0IDA2OjMwOjQ1LjUwMCBlcXVhbD9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzRXF1YWwoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDYsIDMwLCA0NSwgMCksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDYsIDMwLCA0NSwgNTAwKVxuICogKVxuICogLy89PiBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0VxdWFsKGRpcnR5TGVmdERhdGUsIGRpcnR5UmlnaHREYXRlKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnQgPSB0b0RhdGUoZGlydHlMZWZ0RGF0ZSk7XG4gIHZhciBkYXRlUmlnaHQgPSB0b0RhdGUoZGlydHlSaWdodERhdGUpO1xuICByZXR1cm4gZGF0ZUxlZnQuZ2V0VGltZSgpID09PSBkYXRlUmlnaHQuZ2V0VGltZSgpO1xufSIsIi8qKlxuICogQG5hbWUgaXNFeGlzdHNcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgZXhpc3RzP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBhcmd1bWVudHMgY29udmVydCB0byBhbiBleGlzdGluZyBkYXRlLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSB5ZWFyIG9mIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcGFyYW0ge051bWJlcn0gbW9udGggb2YgdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7TnVtYmVyfSBkYXkgb2YgdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBleGlzdHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMyBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIHRoZSB2YWxpZCBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gaXNFeGlzdHMoMjAxOCwgMCwgMzEpXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIHRoZSBpbnZhbGlkIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSBpc0V4aXN0cygyMDE4LCAxLCAzMSlcbiAqIC8vPT4gZmFsc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNFeGlzdHMoeWVhciwgbW9udGgsIGRheSkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDMpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCczIGFyZ3VtZW50IHJlcXVpcmVkLCBidXQgb25seSAnICsgYXJndW1lbnRzLmxlbmd0aCArICcgcHJlc2VudCcpO1xuICB9XG4gIHZhciBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIGRheSk7XG4gIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCkgPT09IHllYXIgJiYgZGF0ZS5nZXRNb250aCgpID09PSBtb250aCAmJiBkYXRlLmdldERhdGUoKSA9PT0gZGF5O1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNGaXJzdERheU9mTW9udGhcbiAqIEBjYXRlZ29yeSBNb250aCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSB0aGUgZmlyc3QgZGF5IG9mIGEgbW9udGg/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSB0aGUgZmlyc3QgZGF5IG9mIGEgbW9udGg/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgdGhlIGZpcnN0IGRheSBvZiBhIG1vbnRoXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXMgMSBTZXB0ZW1iZXIgMjAxNCB0aGUgZmlyc3QgZGF5IG9mIGEgbW9udGg/XG4gKiBjb25zdCByZXN1bHQgPSBpc0ZpcnN0RGF5T2ZNb250aChuZXcgRGF0ZSgyMDE0LCA4LCAxKSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0ZpcnN0RGF5T2ZNb250aChkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiB0b0RhdGUoZGlydHlEYXRlKS5nZXREYXRlKCkgPT09IDE7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc0ZyaWRheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgRnJpZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgRnJpZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIEZyaWRheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElzIDI2IFNlcHRlbWJlciAyMDE0IEZyaWRheT9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzRnJpZGF5KG5ldyBEYXRlKDIwMTQsIDgsIDI2KSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0ZyaWRheShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiB0b0RhdGUoZGlydHlEYXRlKS5nZXREYXkoKSA9PT0gNTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzRnV0dXJlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBmdXR1cmU/XG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIGZ1dHVyZT9cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBEYXRlLm5vdygpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgaW4gdGhlIGZ1dHVyZVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDYgT2N0b2JlciAyMDE0LCBpcyAzMSBEZWNlbWJlciAyMDE0IGluIHRoZSBmdXR1cmU/XG4gKiBjb25zdCByZXN1bHQgPSBpc0Z1dHVyZShuZXcgRGF0ZSgyMDE0LCAxMSwgMzEpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzRnV0dXJlKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHRvRGF0ZShkaXJ0eURhdGUpLmdldFRpbWUoKSA+IERhdGUubm93KCk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgZW5kT2ZEYXkgZnJvbSBcIi4uL2VuZE9mRGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgZW5kT2ZNb250aCBmcm9tIFwiLi4vZW5kT2ZNb250aC9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNMYXN0RGF5T2ZNb250aFxuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIHRoZSBsYXN0IGRheSBvZiBhIG1vbnRoP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgdGhlIGxhc3QgZGF5IG9mIGEgbW9udGg/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgdGhlIGxhc3QgZGF5IG9mIGEgbW9udGhcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJcyAyOCBGZWJydWFyeSAyMDE0IHRoZSBsYXN0IGRheSBvZiBhIG1vbnRoP1xuICogY29uc3QgcmVzdWx0ID0gaXNMYXN0RGF5T2ZNb250aChuZXcgRGF0ZSgyMDE0LCAxLCAyOCkpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNMYXN0RGF5T2ZNb250aChkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHJldHVybiBlbmRPZkRheShkYXRlKS5nZXRUaW1lKCkgPT09IGVuZE9mTW9udGgoZGF0ZSkuZ2V0VGltZSgpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNMZWFwWWVhclxuICogQGNhdGVnb3J5IFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIGxlYXAgeWVhcj9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBsZWFwIHllYXI/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgaW4gdGhlIGxlYXAgeWVhclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElzIDEgU2VwdGVtYmVyIDIwMTIgaW4gdGhlIGxlYXAgeWVhcj9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzTGVhcFllYXIobmV3IERhdGUoMjAxMiwgOCwgMSkpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNMZWFwWWVhcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICByZXR1cm4geWVhciAlIDQwMCA9PT0gMCB8fCB5ZWFyICUgNCA9PT0gMCAmJiB5ZWFyICUgMTAwICE9PSAwO1xufSIsImltcG9ydCBwYXJzZSBmcm9tIFwiLi4vcGFyc2UvaW5kZXguanNcIjtcbmltcG9ydCBpc1ZhbGlkIGZyb20gXCIuLi9pc1ZhbGlkL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc01hdGNoXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IHZhbGlkYXRlcyB0aGUgZGF0ZSBzdHJpbmcgYWdhaW5zdCBnaXZlbiBmb3JtYXRzXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHRydWUgaWYgZ2l2ZW4gZGF0ZSBpcyBzdHJpbmcgY29ycmVjdCBhZ2FpbnN0IHRoZSBnaXZlbiBmb3JtYXQgZWxzZVxuICogd2lsbCByZXR1cm4gZmFsc2UuXG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYGZvcm1hdGAgdG9rZW5zIGRpZmZlciBmcm9tIE1vbWVudC5qcyBhbmQgb3RoZXIgbGlicmFyaWVzLlxuICogPiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqXG4gKiBUaGUgY2hhcmFjdGVycyBpbiB0aGUgZm9ybWF0IHN0cmluZyB3cmFwcGVkIGJldHdlZW4gdHdvIHNpbmdsZSBxdW90ZXMgY2hhcmFjdGVycyAoJykgYXJlIGVzY2FwZWQuXG4gKiBUd28gc2luZ2xlIHF1b3RlcyBpbiBhIHJvdywgd2hldGhlciBpbnNpZGUgb3Igb3V0c2lkZSBhIHF1b3RlZCBzZXF1ZW5jZSwgcmVwcmVzZW50IGEgJ3JlYWwnIHNpbmdsZSBxdW90ZS5cbiAqXG4gKiBGb3JtYXQgb2YgdGhlIGZvcm1hdCBzdHJpbmcgaXMgYmFzZWQgb24gVW5pY29kZSBUZWNobmljYWwgU3RhbmRhcmQgIzM1OlxuICogaHR0cHM6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjM1L3RyMzUtZGF0ZXMuaHRtbCNEYXRlX0ZpZWxkX1N5bWJvbF9UYWJsZVxuICogd2l0aCBhIGZldyBhZGRpdGlvbnMgKHNlZSBub3RlIDUgYmVsb3cgdGhlIHRhYmxlKS5cbiAqXG4gKiBOb3QgYWxsIHRva2VucyBhcmUgY29tcGF0aWJsZS4gQ29tYmluYXRpb25zIHRoYXQgZG9uJ3QgbWFrZSBzZW5zZSBvciBjb3VsZCBsZWFkIHRvIGJ1Z3MgYXJlIHByb2hpYml0ZWRcbiAqIGFuZCB3aWxsIHRocm93IGBSYW5nZUVycm9yYC4gRm9yIGV4YW1wbGUgdXNhZ2Ugb2YgMjQtaG91ciBmb3JtYXQgdG9rZW4gd2l0aCBBTS9QTSB0b2tlbiB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbjpcbiAqXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiBpc01hdGNoKCcyMyBBTScsICdISCBhJylcbiAqIC8vPT4gUmFuZ2VFcnJvcjogVGhlIGZvcm1hdCBzdHJpbmcgbXVzdG4ndCBjb250YWluIGBISGAgYW5kIGBhYCBhdCB0aGUgc2FtZSB0aW1lXG4gKiBgYGBcbiAqXG4gKiBTZWUgdGhlIGNvbXBhdGliaWxpdHkgdGFibGU6IGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL3NwcmVhZHNoZWV0cy9kL2UvMlBBQ1gtMXZRT1BVM3hVaHBsbGw2ZHlvTW1WVVhIS2xfOENSRHM2X3VlTG1leDNTb3F3aHVvbGt1TjNPMDVsNHJxeDVoMWRLWDhlYjQ2VWwtQ0NTcnEvcHViaHRtbD9naWQ9MCZzaW5nbGU9dHJ1ZVxuICpcbiAqIEFjY2VwdGVkIGZvcm1hdCBzdHJpbmcgcGF0dGVybnM6XG4gKiB8IFVuaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFByaW9yfCBQYXR0ZXJuIHwgUmVzdWx0IGV4YW1wbGVzICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgfFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLXxcbiAqIHwgRXJhICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE0MCB8IEcuLkdHRyAgfCBBRCwgQkMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBHR0dHICAgIHwgQW5ubyBEb21pbmksIEJlZm9yZSBDaHJpc3QgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgR0dHR0cgICB8IEEsIEIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgQ2FsZW5kYXIgeWVhciAgICAgICAgICAgICAgICAgICB8IDEzMCB8IHkgICAgICAgfCA0NCwgMSwgMTkwMCwgMjAxNywgOTk5OSAgICAgICAgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB5byAgICAgIHwgNDR0aCwgMXN0LCAxOTAwdGgsIDk5OTk5OTl0aCAgICAgIHwgNCw1ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeXkgICAgICB8IDQ0LCAwMSwgMDAsIDE3ICAgICAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHl5eSAgICAgfCAwNDQsIDAwMSwgMTIzLCA5OTkgICAgICAgICAgICAgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB5eXl5ICAgIHwgMDA0NCwgMDAwMSwgMTkwMCwgMjAxNyAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeXl5eXkgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIsNCAgIHxcbiAqIHwgTG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhciAgICAgICB8IDEzMCB8IFkgICAgICAgfCA0NCwgMSwgMTkwMCwgMjAxNywgOTAwMCAgICAgICAgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBZbyAgICAgIHwgNDR0aCwgMXN0LCAxOTAwdGgsIDk5OTk5OTl0aCAgICAgIHwgNCw1ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWVkgICAgICB8IDQ0LCAwMSwgMDAsIDE3ICAgICAgICAgICAgICAgICAgICB8IDQsNiAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFlZWSAgICAgfCAwNDQsIDAwMSwgMTIzLCA5OTkgICAgICAgICAgICAgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBZWVlZICAgIHwgMDA0NCwgMDAwMSwgMTkwMCwgMjAxNyAgICAgICAgICAgIHwgNCw2ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWVlZWVkgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIsNCAgIHxcbiAqIHwgSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgICAgICAgICB8IDEzMCB8IFIgICAgICAgfCAtNDMsIDEsIDE5MDAsIDIwMTcsIDk5OTksIC05OTk5ICAgfCA0LDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBSUiAgICAgIHwgLTQzLCAwMSwgMDAsIDE3ICAgICAgICAgICAgICAgICAgIHwgNCw1ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUlJSICAgICB8IC0wNDMsIDAwMSwgMTIzLCA5OTksIC05OTkgICAgICAgICB8IDQsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFJSUlIgICAgfCAtMDA0MywgMDAwMSwgMjAxNywgOTk5OSwgLTk5OTkgICAgfCA0LDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBSUlJSUiAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiw0LDUgfFxuICogfCBFeHRlbmRlZCB5ZWFyICAgICAgICAgICAgICAgICAgIHwgMTMwIHwgdSAgICAgICB8IC00MywgMSwgMTkwMCwgMjAxNywgOTk5OSwgLTk5OSAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHV1ICAgICAgfCAtNDMsIDAxLCA5OSwgLTk5ICAgICAgICAgICAgICAgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB1dXUgICAgIHwgLTA0MywgMDAxLCAxMjMsIDk5OSwgLTk5OSAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgdXV1dSAgICB8IC0wMDQzLCAwMDAxLCAyMDE3LCA5OTk5LCAtOTk5OSAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHV1dXV1ICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyLDQgICB8XG4gKiB8IFF1YXJ0ZXIgKGZvcm1hdHRpbmcpICAgICAgICAgICAgfCAxMjAgfCBRICAgICAgIHwgMSwgMiwgMywgNCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUW8gICAgICB8IDFzdCwgMm5kLCAzcmQsIDR0aCAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFFRICAgICAgfCAwMSwgMDIsIDAzLCAwNCAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBRUVEgICAgIHwgUTEsIFEyLCBRMywgUTQgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUVFRUSAgICB8IDFzdCBxdWFydGVyLCAybmQgcXVhcnRlciwgLi4uICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFFRUVFRICAgfCAxLCAyLCAzLCA0ICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICAgICB8XG4gKiB8IFF1YXJ0ZXIgKHN0YW5kLWFsb25lKSAgICAgICAgICAgfCAxMjAgfCBxICAgICAgIHwgMSwgMiwgMywgNCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgcW8gICAgICB8IDFzdCwgMm5kLCAzcmQsIDR0aCAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHFxICAgICAgfCAwMSwgMDIsIDAzLCAwNCAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBxcXEgICAgIHwgUTEsIFEyLCBRMywgUTQgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgcXFxcSAgICB8IDFzdCBxdWFydGVyLCAybmQgcXVhcnRlciwgLi4uICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHFxcXFxICAgfCAxLCAyLCAzLCA0ICAgICAgICAgICAgICAgICAgICAgICAgfCAzICAgICB8XG4gKiB8IE1vbnRoIChmb3JtYXR0aW5nKSAgICAgICAgICAgICAgfCAxMTAgfCBNICAgICAgIHwgMSwgMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTW8gICAgICB8IDFzdCwgMm5kLCAuLi4sIDEydGggICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IE1NICAgICAgfCAwMSwgMDIsIC4uLiwgMTIgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBNTU0gICAgIHwgSmFuLCBGZWIsIC4uLiwgRGVjICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTU1NTSAgICB8IEphbnVhcnksIEZlYnJ1YXJ5LCAuLi4sIERlY2VtYmVyICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IE1NTU1NICAgfCBKLCBGLCAuLi4sIEQgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IE1vbnRoIChzdGFuZC1hbG9uZSkgICAgICAgICAgICAgfCAxMTAgfCBMICAgICAgIHwgMSwgMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTG8gICAgICB8IDFzdCwgMm5kLCAuLi4sIDEydGggICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IExMICAgICAgfCAwMSwgMDIsIC4uLiwgMTIgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBMTEwgICAgIHwgSmFuLCBGZWIsIC4uLiwgRGVjICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTExMTCAgICB8IEphbnVhcnksIEZlYnJ1YXJ5LCAuLi4sIERlY2VtYmVyICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IExMTExMICAgfCBKLCBGLCAuLi4sIEQgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IExvY2FsIHdlZWsgb2YgeWVhciAgICAgICAgICAgICAgfCAxMDAgfCB3ICAgICAgIHwgMSwgMiwgLi4uLCA1MyAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgd28gICAgICB8IDFzdCwgMm5kLCAuLi4sIDUzdGggICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHd3ICAgICAgfCAwMSwgMDIsIC4uLiwgNTMgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IElTTyB3ZWVrIG9mIHllYXIgICAgICAgICAgICAgICAgfCAxMDAgfCBJICAgICAgIHwgMSwgMiwgLi4uLCA1MyAgICAgICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgSW8gICAgICB8IDFzdCwgMm5kLCAuLi4sIDUzdGggICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IElJICAgICAgfCAwMSwgMDIsIC4uLiwgNTMgICAgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8IERheSBvZiBtb250aCAgICAgICAgICAgICAgICAgICAgfCAgOTAgfCBkICAgICAgIHwgMSwgMiwgLi4uLCAzMSAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZG8gICAgICB8IDFzdCwgMm5kLCAuLi4sIDMxc3QgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGRkICAgICAgfCAwMSwgMDIsIC4uLiwgMzEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IERheSBvZiB5ZWFyICAgICAgICAgICAgICAgICAgICAgfCAgOTAgfCBEICAgICAgIHwgMSwgMiwgLi4uLCAzNjUsIDM2NiAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgRG8gICAgICB8IDFzdCwgMm5kLCAuLi4sIDM2NXRoLCAzNjZ0aCAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEREICAgICAgfCAwMSwgMDIsIC4uLiwgMzY1LCAzNjYgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBEREQgICAgIHwgMDAxLCAwMDIsIC4uLiwgMzY1LCAzNjYgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgRERERCAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgRGF5IG9mIHdlZWsgKGZvcm1hdHRpbmcpICAgICAgICB8ICA5MCB8IEUuLkVFRSAgfCBNb24sIFR1ZSwgV2VkLCAuLi4sIFN1ICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBFRUVFICAgIHwgTW9uZGF5LCBUdWVzZGF5LCAuLi4sIFN1bmRheSAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgRUVFRUUgICB8IE0sIFQsIFcsIFQsIEYsIFMsIFMgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEVFRUVFRSAgfCBNbywgVHUsIFdlLCBUaCwgRnIsIFNhLCBTdSAgICAgICAgfCAgICAgICB8XG4gKiB8IElTTyBkYXkgb2Ygd2VlayAoZm9ybWF0dGluZykgICAgfCAgOTAgfCBpICAgICAgIHwgMSwgMiwgMywgLi4uLCA3ICAgICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaW8gICAgICB8IDFzdCwgMm5kLCAuLi4sIDd0aCAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGlpICAgICAgfCAwMSwgMDIsIC4uLiwgMDcgICAgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBpaWkgICAgIHwgTW9uLCBUdWUsIFdlZCwgLi4uLCBTdSAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaWlpaSAgICB8IE1vbmRheSwgVHVlc2RheSwgLi4uLCBTdW5kYXkgICAgICB8IDIsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGlpaWlpICAgfCBNLCBULCBXLCBULCBGLCBTLCBTICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBpaWlpaWkgIHwgTW8sIFR1LCBXZSwgVGgsIEZyLCBTYSwgU3UgICAgICAgIHwgNSAgICAgfFxuICogfCBMb2NhbCBkYXkgb2Ygd2VlayAoZm9ybWF0dGluZykgIHwgIDkwIHwgZSAgICAgICB8IDIsIDMsIDQsIC4uLiwgMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGVvICAgICAgfCAybmQsIDNyZCwgLi4uLCAxc3QgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBlZSAgICAgIHwgMDIsIDAzLCAuLi4sIDAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZWVlICAgICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3UgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGVlZWUgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBlZWVlZSAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZWVlZWVlICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU2EsIFN1ICAgICAgICB8ICAgICAgIHxcbiAqIHwgTG9jYWwgZGF5IG9mIHdlZWsgKHN0YW5kLWFsb25lKSB8ICA5MCB8IGMgICAgICAgfCAyLCAzLCA0LCAuLi4sIDEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBjbyAgICAgIHwgMm5kLCAzcmQsIC4uLiwgMXN0ICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgY2MgICAgICB8IDAyLCAwMywgLi4uLCAwMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGNjYyAgICAgfCBNb24sIFR1ZSwgV2VkLCAuLi4sIFN1ICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBjY2NjICAgIHwgTW9uZGF5LCBUdWVzZGF5LCAuLi4sIFN1bmRheSAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgY2NjY2MgICB8IE0sIFQsIFcsIFQsIEYsIFMsIFMgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGNjY2NjYyAgfCBNbywgVHUsIFdlLCBUaCwgRnIsIFNhLCBTdSAgICAgICAgfCAgICAgICB8XG4gKiB8IEFNLCBQTSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgODAgfCBhLi5hYWEgIHwgQU0sIFBNICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgYWFhYSAgICB8IGEubS4sIHAubS4gICAgICAgICAgICAgICAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGFhYWFhICAgfCBhLCBwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IEFNLCBQTSwgbm9vbiwgbWlkbmlnaHQgICAgICAgICAgfCAgODAgfCBiLi5iYmIgIHwgQU0sIFBNLCBub29uLCBtaWRuaWdodCAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgYmJiYiAgICB8IGEubS4sIHAubS4sIG5vb24sIG1pZG5pZ2h0ICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGJiYmJiICAgfCBhLCBwLCBuLCBtaSAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IEZsZXhpYmxlIGRheSBwZXJpb2QgICAgICAgICAgICAgfCAgODAgfCBCLi5CQkIgIHwgYXQgbmlnaHQsIGluIHRoZSBtb3JuaW5nLCAuLi4gICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgQkJCQiAgICB8IGF0IG5pZ2h0LCBpbiB0aGUgbW9ybmluZywgLi4uICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEJCQkJCICAgfCBhdCBuaWdodCwgaW4gdGhlIG1vcm5pbmcsIC4uLiAgICAgfCAgICAgICB8XG4gKiB8IEhvdXIgWzEtMTJdICAgICAgICAgICAgICAgICAgICAgfCAgNzAgfCBoICAgICAgIHwgMSwgMiwgLi4uLCAxMSwgMTIgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaG8gICAgICB8IDFzdCwgMm5kLCAuLi4sIDExdGgsIDEydGggICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGhoICAgICAgfCAwMSwgMDIsIC4uLiwgMTEsIDEyICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IEhvdXIgWzAtMjNdICAgICAgICAgICAgICAgICAgICAgfCAgNzAgfCBIICAgICAgIHwgMCwgMSwgMiwgLi4uLCAyMyAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgSG8gICAgICB8IDB0aCwgMXN0LCAybmQsIC4uLiwgMjNyZCAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEhIICAgICAgfCAwMCwgMDEsIDAyLCAuLi4sIDIzICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IEhvdXIgWzAtMTFdICAgICAgICAgICAgICAgICAgICAgfCAgNzAgfCBLICAgICAgIHwgMSwgMiwgLi4uLCAxMSwgMCAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgS28gICAgICB8IDFzdCwgMm5kLCAuLi4sIDExdGgsIDB0aCAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEtLICAgICAgfCAwMSwgMDIsIC4uLiwgMTEsIDAwICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IEhvdXIgWzEtMjRdICAgICAgICAgICAgICAgICAgICAgfCAgNzAgfCBrICAgICAgIHwgMjQsIDEsIDIsIC4uLiwgMjMgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwga28gICAgICB8IDI0dGgsIDFzdCwgMm5kLCAuLi4sIDIzcmQgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGtrICAgICAgfCAyNCwgMDEsIDAyLCAuLi4sIDIzICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IE1pbnV0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNjAgfCBtICAgICAgIHwgMCwgMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgbW8gICAgICB8IDB0aCwgMXN0LCAuLi4sIDU5dGggICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IG1tICAgICAgfCAwMCwgMDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IFNlY29uZCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTAgfCBzICAgICAgIHwgMCwgMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgc28gICAgICB8IDB0aCwgMXN0LCAuLi4sIDU5dGggICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHNzICAgICAgfCAwMCwgMDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IFNlY29uZHMgdGltZXN0YW1wICAgICAgICAgICAgICAgfCAgNDAgfCB0ICAgICAgIHwgNTEyOTY5NTIwICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgdHQgICAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgRnJhY3Rpb24gb2Ygc2Vjb25kICAgICAgICAgICAgICB8ICAzMCB8IFMgICAgICAgfCAwLCAxLCAuLi4sIDkgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBTUyAgICAgIHwgMDAsIDAxLCAuLi4sIDk5ICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgU1NTICAgICB8IDAwMCwgMDAxLCAuLi4sIDk5OSAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFNTU1MgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8IE1pbGxpc2Vjb25kcyB0aW1lc3RhbXAgICAgICAgICAgfCAgMjAgfCBUICAgICAgIHwgNTEyOTY5NTIwOTAwICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgVFQgICAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgVGltZXpvbmUgKElTTy04NjAxIHcvIFopICAgICAgICB8ICAxMCB8IFggICAgICAgfCAtMDgsICswNTMwLCBaICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBYWCAgICAgIHwgLTA4MDAsICswNTMwLCBaICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWFhYICAgICB8IC0wODowMCwgKzA1OjMwLCBaICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFhYWFggICAgfCAtMDgwMCwgKzA1MzAsIFosICsxMjM0NTYgICAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBYWFhYWCAgIHwgLTA4OjAwLCArMDU6MzAsIFosICsxMjozNDo1NiAgICAgIHwgICAgICAgfFxuICogfCBUaW1lem9uZSAoSVNPLTg2MDEgdy9vIFopICAgICAgIHwgIDEwIHwgeCAgICAgICB8IC0wOCwgKzA1MzAsICswMCAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHh4ICAgICAgfCAtMDgwMCwgKzA1MzAsICswMDAwICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB4eHggICAgIHwgLTA4OjAwLCArMDU6MzAsICswMDowMCAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeHh4eCAgICB8IC0wODAwLCArMDUzMCwgKzAwMDAsICsxMjM0NTYgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHh4eHh4ICAgfCAtMDg6MDAsICswNTozMCwgKzAwOjAwLCArMTI6MzQ6NTYgfCAgICAgICB8XG4gKiB8IExvbmcgbG9jYWxpemVkIGRhdGUgICAgICAgICAgICAgfCAgTkEgfCBQICAgICAgIHwgMDUvMjkvMTQ1MyAgICAgICAgICAgICAgICAgICAgICAgIHwgNSw4ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUFAgICAgICB8IE1heSAyOSwgMTQ1MyAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFBQUCAgICAgfCBNYXkgMjl0aCwgMTQ1MyAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBQUFBQICAgIHwgU3VuZGF5LCBNYXkgMjl0aCwgMTQ1MyAgICAgICAgICAgIHwgMiw1LDggfFxuICogfCBMb25nIGxvY2FsaXplZCB0aW1lICAgICAgICAgICAgIHwgIE5BIHwgcCAgICAgICB8IDEyOjAwIEFNICAgICAgICAgICAgICAgICAgICAgICAgICB8IDUsOCAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHBwICAgICAgfCAxMjowMDowMCBBTSAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IENvbWJpbmF0aW9uIG9mIGRhdGUgYW5kIHRpbWUgICAgfCAgTkEgfCBQcCAgICAgIHwgMDUvMjkvMTQ1MywgMTI6MDAgQU0gICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUFBwcCAgICB8IE1heSAyOSwgMTQ1MywgMTI6MDA6MDAgQU0gICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFBQUHBwICAgfCBNYXkgMjl0aCwgMTQ1MyBhdCAuLi4gICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBQUFBQcHAgIHwgU3VuZGF5LCBNYXkgMjl0aCwgMTQ1MyBhdCAuLi4gICAgIHwgMiw1LDggfFxuICogTm90ZXM6XG4gKiAxLiBcIkZvcm1hdHRpbmdcIiB1bml0cyAoZS5nLiBmb3JtYXR0aW5nIHF1YXJ0ZXIpIGluIHRoZSBkZWZhdWx0IGVuLVVTIGxvY2FsZVxuICogICAgYXJlIHRoZSBzYW1lIGFzIFwic3RhbmQtYWxvbmVcIiB1bml0cywgYnV0IGFyZSBkaWZmZXJlbnQgaW4gc29tZSBsYW5ndWFnZXMuXG4gKiAgICBcIkZvcm1hdHRpbmdcIiB1bml0cyBhcmUgZGVjbGluZWQgYWNjb3JkaW5nIHRvIHRoZSBydWxlcyBvZiB0aGUgbGFuZ3VhZ2VcbiAqICAgIGluIHRoZSBjb250ZXh0IG9mIGEgZGF0ZS4gXCJTdGFuZC1hbG9uZVwiIHVuaXRzIGFyZSBhbHdheXMgbm9taW5hdGl2ZSBzaW5ndWxhci5cbiAqICAgIEluIGBmb3JtYXRgIGZ1bmN0aW9uLCB0aGV5IHdpbGwgcHJvZHVjZSBkaWZmZXJlbnQgcmVzdWx0OlxuICpcbiAqICAgIGBmb3JtYXQobmV3IERhdGUoMjAxNywgMTAsIDYpLCAnZG8gTExMTCcsIHtsb2NhbGU6IGNzfSkgLy89PiAnNi4gbGlzdG9wYWQnYFxuICpcbiAqICAgIGBmb3JtYXQobmV3IERhdGUoMjAxNywgMTAsIDYpLCAnZG8gTU1NTScsIHtsb2NhbGU6IGNzfSkgLy89PiAnNi4gbGlzdG9wYWR1J2BcbiAqXG4gKiAgICBgaXNNYXRjaGAgd2lsbCB0cnkgdG8gbWF0Y2ggYm90aCBmb3JtYXR0aW5nIGFuZCBzdGFuZC1hbG9uZSB1bml0cyBpbnRlcmNoYW5nYWJseS5cbiAqXG4gKiAyLiBBbnkgc2VxdWVuY2Ugb2YgdGhlIGlkZW50aWNhbCBsZXR0ZXJzIGlzIGEgcGF0dGVybiwgdW5sZXNzIGl0IGlzIGVzY2FwZWQgYnlcbiAqICAgIHRoZSBzaW5nbGUgcXVvdGUgY2hhcmFjdGVycyAoc2VlIGJlbG93KS5cbiAqICAgIElmIHRoZSBzZXF1ZW5jZSBpcyBsb25nZXIgdGhhbiBsaXN0ZWQgaW4gdGFibGU6XG4gKiAgICAtIGZvciBudW1lcmljYWwgdW5pdHMgKGB5eXl5eXl5eWApIGBpc01hdGNoYCB3aWxsIHRyeSB0byBtYXRjaCBhIG51bWJlclxuICogICAgICBhcyB3aWRlIGFzIHRoZSBzZXF1ZW5jZVxuICogICAgLSBmb3IgdGV4dCB1bml0cyAoYE1NTU1NTU1NYCkgYGlzTWF0Y2hgIHdpbGwgdHJ5IHRvIG1hdGNoIHRoZSB3aWRlc3QgdmFyaWF0aW9uIG9mIHRoZSB1bml0LlxuICogICAgICBUaGVzZSB2YXJpYXRpb25zIGFyZSBtYXJrZWQgd2l0aCBcIjJcIiBpbiB0aGUgbGFzdCBjb2x1bW4gb2YgdGhlIHRhYmxlLlxuICpcbiAqIDMuIGBRUVFRUWAgYW5kIGBxcXFxcWAgY291bGQgYmUgbm90IHN0cmljdGx5IG51bWVyaWNhbCBpbiBzb21lIGxvY2FsZXMuXG4gKiAgICBUaGVzZSB0b2tlbnMgcmVwcmVzZW50IHRoZSBzaG9ydGVzdCBmb3JtIG9mIHRoZSBxdWFydGVyLlxuICpcbiAqIDQuIFRoZSBtYWluIGRpZmZlcmVuY2UgYmV0d2VlbiBgeWAgYW5kIGB1YCBwYXR0ZXJucyBhcmUgQi5DLiB5ZWFyczpcbiAqXG4gKiAgICB8IFllYXIgfCBgeWAgfCBgdWAgfFxuICogICAgfC0tLS0tLXwtLS0tLXwtLS0tLXxcbiAqICAgIHwgQUMgMSB8ICAgMSB8ICAgMSB8XG4gKiAgICB8IEJDIDEgfCAgIDEgfCAgIDAgfFxuICogICAgfCBCQyAyIHwgICAyIHwgIC0xIHxcbiAqXG4gKiAgICBBbHNvIGB5eWAgd2lsbCB0cnkgdG8gZ3Vlc3MgdGhlIGNlbnR1cnkgb2YgdHdvIGRpZ2l0IHllYXIgYnkgcHJveGltaXR5IHdpdGggYHJlZmVyZW5jZURhdGVgOlxuICpcbiAqICAgIGBpc01hdGNoKCc1MCcsICd5eScpIC8vPT4gdHJ1ZWBcbiAqXG4gKiAgICBgaXNNYXRjaCgnNzUnLCAneXknKSAvLz0+IHRydWVgXG4gKlxuICogICAgd2hpbGUgYHV1YCB3aWxsIHVzZSB0aGUgeWVhciBhcyBpczpcbiAqXG4gKiAgICBgaXNNYXRjaCgnNTAnLCAndXUnKSAvLz0+IHRydWVgXG4gKlxuICogICAgYGlzTWF0Y2goJzc1JywgJ3V1JykgLy89PiB0cnVlYFxuICpcbiAqICAgIFRoZSBzYW1lIGRpZmZlcmVuY2UgaXMgdHJ1ZSBmb3IgbG9jYWwgYW5kIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFycyAoYFlgIGFuZCBgUmApLFxuICogICAgZXhjZXB0IGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXJzIGFyZSBkZXBlbmRlbnQgb24gYG9wdGlvbnMud2Vla1N0YXJ0c09uYFxuICogICAgYW5kIGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgKGNvbXBhcmUgW3NldElTT1dlZWtZZWFyXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL3NldElTT1dlZWtZZWFyfVxuICogICAgYW5kIFtzZXRXZWVrWWVhcl17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9zZXRXZWVrWWVhcn0pLlxuICpcbiAqIDUuIFRoZXNlIHBhdHRlcm5zIGFyZSBub3QgaW4gdGhlIFVuaWNvZGUgVGVjaG5pY2FsIFN0YW5kYXJkICMzNTpcbiAqICAgIC0gYGlgOiBJU08gZGF5IG9mIHdlZWtcbiAqICAgIC0gYElgOiBJU08gd2VlayBvZiB5ZWFyXG4gKiAgICAtIGBSYDogSVNPIHdlZWstbnVtYmVyaW5nIHllYXJcbiAqICAgIC0gYG9gOiBvcmRpbmFsIG51bWJlciBtb2RpZmllclxuICogICAgLSBgUGA6IGxvbmcgbG9jYWxpemVkIGRhdGVcbiAqICAgIC0gYHBgOiBsb25nIGxvY2FsaXplZCB0aW1lXG4gKlxuICogNi4gYFlZYCBhbmQgYFlZWVlgIHRva2VucyByZXByZXNlbnQgd2Vlay1udW1iZXJpbmcgeWVhcnMgYnV0IHRoZXkgYXJlIG9mdGVuIGNvbmZ1c2VkIHdpdGggeWVhcnMuXG4gKiAgICBZb3Ugc2hvdWxkIGVuYWJsZSBgb3B0aW9ucy51c2VBZGRpdGlvbmFsV2Vla1llYXJUb2tlbnNgIHRvIHVzZSB0aGVtLiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqXG4gKiA3LiBgRGAgYW5kIGBERGAgdG9rZW5zIHJlcHJlc2VudCBkYXlzIG9mIHRoZSB5ZWFyIGJ1dCB0aGV5IGFyZSBvZnRoZW4gY29uZnVzZWQgd2l0aCBkYXlzIG9mIHRoZSBtb250aC5cbiAqICAgIFlvdSBzaG91bGQgZW5hYmxlIGBvcHRpb25zLnVzZUFkZGl0aW9uYWxEYXlPZlllYXJUb2tlbnNgIHRvIHVzZSB0aGVtLiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqXG4gKiA4LiBgUCtgIHRva2VucyBkbyBub3QgaGF2ZSBhIGRlZmluZWQgcHJpb3JpdHkgc2luY2UgdGhleSBhcmUgbWVyZWx5IGFsaWFzZXMgdG8gb3RoZXIgdG9rZW5zIGJhc2VkXG4gKiAgICBvbiB0aGUgZ2l2ZW4gbG9jYWxlLlxuICpcbiAqICAgIHVzaW5nIGBlbi1VU2AgbG9jYWxlOiBgUGAgPT4gYE1NL2RkL3l5eXlgXG4gKiAgICB1c2luZyBgZW4tVVNgIGxvY2FsZTogYHBgID0+IGBoaDptbSBhYFxuICogICAgdXNpbmcgYHB0LUJSYCBsb2NhbGU6IGBQYCA9PiBgZGQvTU0veXl5eWBcbiAqICAgIHVzaW5nIGBwdC1CUmAgbG9jYWxlOiBgcGAgPT4gYEhIOm1tYFxuICpcbiAqIFZhbHVlcyB3aWxsIGJlIGNoZWNrZWQgaW4gdGhlIGRlc2NlbmRpbmcgb3JkZXIgb2YgaXRzIHVuaXQncyBwcmlvcml0eS5cbiAqIFVuaXRzIG9mIGFuIGVxdWFsIHByaW9yaXR5IG92ZXJ3cml0ZSBlYWNoIG90aGVyIGluIHRoZSBvcmRlciBvZiBhcHBlYXJhbmNlLlxuICpcbiAqIElmIG5vIHZhbHVlcyBvZiBoaWdoZXIgcHJpb3JpdHkgYXJlIG1hdGNoZWQgKGUuZy4gd2hlbiBtYXRjaGluZyBzdHJpbmcgJ0phbnVhcnkgMXN0JyB3aXRob3V0IGEgeWVhciksXG4gKiB0aGUgdmFsdWVzIHdpbGwgYmUgdGFrZW4gZnJvbSB0b2RheSdzIHVzaW5nIGBuZXcgRGF0ZSgpYCBkYXRlIHdoaWNoIHdvcmtzIGFzIGEgY29udGV4dCBvZiBwYXJzaW5nLlxuICpcbiAqIFRoZSByZXN1bHQgbWF5IHZhcnkgYnkgbG9jYWxlLlxuICpcbiAqIElmIGBmb3JtYXRTdHJpbmdgIG1hdGNoZXMgd2l0aCBgZGF0ZVN0cmluZ2AgYnV0IGRvZXMgbm90IHByb3ZpZGVzIHRva2VucywgYHJlZmVyZW5jZURhdGVgIHdpbGwgYmUgcmV0dXJuZWQuXG4gKlxuICpcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gZGF0ZVN0cmluZyAtIHRoZSBkYXRlIHN0cmluZyB0byB2ZXJpZnlcbiAqIEBwYXJhbSB7U3RyaW5nfSBmb3JtYXRTdHJpbmcgLSB0aGUgc3RyaW5nIG9mIHRva2Vuc1xuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcGFyYW0gezF8MnwzfDR8NXw2fDd9IFtvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZT0xXSAtIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLnVzZUFkZGl0aW9uYWxXZWVrWWVhclRva2Vucz1mYWxzZV0gLSBpZiB0cnVlLCBhbGxvd3MgdXNhZ2Ugb2YgdGhlIHdlZWstbnVtYmVyaW5nIHllYXIgdG9rZW5zIGBZWWAgYW5kIGBZWVlZYDtcbiAqICAgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLnVzZUFkZGl0aW9uYWxEYXlPZlllYXJUb2tlbnM9ZmFsc2VdIC0gaWYgdHJ1ZSwgYWxsb3dzIHVzYWdlIG9mIHRoZSBkYXkgb2YgeWVhciB0b2tlbnMgYERgIGFuZCBgRERgO1xuICogICBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEByZXR1cm5zIHtCb29sZWFufVxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNlxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgN1xuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMubG9jYWxlYCBtdXN0IGNvbnRhaW4gYG1hdGNoYCBwcm9wZXJ0eVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gdXNlIGB5eXl5YCBpbnN0ZWFkIG9mIGBZWVlZYCBmb3IgZm9ybWF0dGluZyB5ZWFyczsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSB1c2UgYHl5YCBpbnN0ZWFkIG9mIGBZWWAgZm9yIGZvcm1hdHRpbmcgeWVhcnM7IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gdXNlIGBkYCBpbnN0ZWFkIG9mIGBEYCBmb3IgZm9ybWF0dGluZyBkYXlzIG9mIHRoZSBtb250aDsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSB1c2UgYGRkYCBpbnN0ZWFkIG9mIGBERGAgZm9yIGZvcm1hdHRpbmcgZGF5cyBvZiB0aGUgbW9udGg7IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gZm9ybWF0IHN0cmluZyBjb250YWlucyBhbiB1bmVzY2FwZWQgbGF0aW4gYWxwaGFiZXQgY2hhcmFjdGVyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIE1hdGNoIDExIEZlYnJ1YXJ5IDIwMTQgZnJvbSBtaWRkbGUtZW5kaWFuIGZvcm1hdDpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzTWF0Y2goJzAyLzExLzIwMTQnLCAnTU0vZGQveXl5eScpXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gTWF0Y2ggMjh0aCBvZiBGZWJydWFyeSBpbiBFc3BlcmFudG8gbG9jYWxlIGluIHRoZSBjb250ZXh0IG9mIDIwMTAgeWVhcjpcbiAqIGltcG9ydCBlbyBmcm9tICdkYXRlLWZucy9sb2NhbGUvZW8nXG4gKiBjb25zdCByZXN1bHQgPSBpc01hdGNoKCcyOC1hIGRlIGZlYnJ1YXJvJywgXCJkbyAnZGUnIE1NTU1cIiwge1xuICogICBsb2NhbGU6IGVvXG4gKiB9KVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzTWF0Y2goZGF0ZVN0cmluZywgZm9ybWF0U3RyaW5nLCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICByZXR1cm4gaXNWYWxpZChwYXJzZShkYXRlU3RyaW5nLCBmb3JtYXRTdHJpbmcsIG5ldyBEYXRlKCksIG9wdGlvbnMpKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzTW9uZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBNb25kYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBNb25kYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgTW9uZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXMgMjIgU2VwdGVtYmVyIDIwMTQgTW9uZGF5P1xuICogY29uc3QgcmVzdWx0ID0gaXNNb25kYXkobmV3IERhdGUoMjAxNCwgOCwgMjIpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzTW9uZGF5KGRhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiB0b0RhdGUoZGF0ZSkuZ2V0RGF5KCkgPT09IDE7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1Bhc3RcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIHBhc3Q/XG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIHBhc3Q/XG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgRGF0ZS5ub3coKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIGluIHRoZSBwYXN0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgNiBPY3RvYmVyIDIwMTQsIGlzIDIgSnVseSAyMDE0IGluIHRoZSBwYXN0P1xuICogY29uc3QgcmVzdWx0ID0gaXNQYXN0KG5ldyBEYXRlKDIwMTQsIDYsIDIpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzUGFzdChkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiB0b0RhdGUoZGlydHlEYXRlKS5nZXRUaW1lKCkgPCBEYXRlLm5vdygpO1xufSIsImltcG9ydCBzdGFydE9mRGF5IGZyb20gXCIuLi9zdGFydE9mRGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1NhbWVEYXlcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSBkYXkgKGFuZCB5ZWFyIGFuZCBtb250aCk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIGRheSAoYW5kIHllYXIgYW5kIG1vbnRoKT9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBmaXJzdCBkYXRlIHRvIGNoZWNrXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgc2Vjb25kIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZXMgYXJlIGluIHRoZSBzYW1lIGRheSAoYW5kIHllYXIgYW5kIG1vbnRoKVxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgNCBTZXB0ZW1iZXIgMDY6MDA6MDAgYW5kIDQgU2VwdGVtYmVyIDE4OjAwOjAwIGluIHRoZSBzYW1lIGRheT9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZURheShuZXcgRGF0ZSgyMDE0LCA4LCA0LCA2LCAwKSwgbmV3IERhdGUoMjAxNCwgOCwgNCwgMTgsIDApKVxuICogLy89PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSA0IFNlcHRlbWJlciBhbmQgNCBPY3RvYmVyIGluIHRoZSBzYW1lIGRheT9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZURheShuZXcgRGF0ZSgyMDE0LCA4LCA0KSwgbmV3IERhdGUoMjAxNCwgOSwgNCkpXG4gKiAvLz0+IGZhbHNlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSA0IFNlcHRlbWJlciwgMjAxNCBhbmQgNCBTZXB0ZW1iZXIsIDIwMTUgaW4gdGhlIHNhbWUgZGF5P1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lRGF5KG5ldyBEYXRlKDIwMTQsIDgsIDQpLCBuZXcgRGF0ZSgyMDE1LCA4LCA0KSlcbiAqIC8vPT4gZmFsc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNTYW1lRGF5KGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnRTdGFydE9mRGF5ID0gc3RhcnRPZkRheShkaXJ0eURhdGVMZWZ0KTtcbiAgdmFyIGRhdGVSaWdodFN0YXJ0T2ZEYXkgPSBzdGFydE9mRGF5KGRpcnR5RGF0ZVJpZ2h0KTtcbiAgcmV0dXJuIGRhdGVMZWZ0U3RhcnRPZkRheS5nZXRUaW1lKCkgPT09IGRhdGVSaWdodFN0YXJ0T2ZEYXkuZ2V0VGltZSgpO1xufSIsImltcG9ydCBzdGFydE9mSG91ciBmcm9tIFwiLi4vc3RhcnRPZkhvdXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzU2FtZUhvdXJcbiAqIEBjYXRlZ29yeSBIb3VyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgaW4gdGhlIHNhbWUgaG91ciAoYW5kIHNhbWUgZGF5KT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgaW4gdGhlIHNhbWUgaG91ciAoYW5kIHNhbWUgZGF5KT9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBmaXJzdCBkYXRlIHRvIGNoZWNrXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgc2Vjb25kIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZXMgYXJlIGluIHRoZSBzYW1lIGhvdXIgKGFuZCBzYW1lIGRheSlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDQgU2VwdGVtYmVyIDIwMTQgMDY6MDA6MDAgYW5kIDQgU2VwdGVtYmVyIDA2OjMwOjAwIGluIHRoZSBzYW1lIGhvdXI/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVIb3VyKG5ldyBEYXRlKDIwMTQsIDgsIDQsIDYsIDApLCBuZXcgRGF0ZSgyMDE0LCA4LCA0LCA2LCAzMCkpXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDQgU2VwdGVtYmVyIDIwMTQgMDY6MDA6MDAgYW5kIDUgU2VwdGVtYmVyIDA2OjAwOjAwIGluIHRoZSBzYW1lIGhvdXI/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVIb3VyKG5ldyBEYXRlKDIwMTQsIDgsIDQsIDYsIDApLCBuZXcgRGF0ZSgyMDE0LCA4LCA1LCA2LCAwKSlcbiAqIC8vPT4gZmFsc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNTYW1lSG91cihkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0U3RhcnRPZkhvdXIgPSBzdGFydE9mSG91cihkaXJ0eURhdGVMZWZ0KTtcbiAgdmFyIGRhdGVSaWdodFN0YXJ0T2ZIb3VyID0gc3RhcnRPZkhvdXIoZGlydHlEYXRlUmlnaHQpO1xuICByZXR1cm4gZGF0ZUxlZnRTdGFydE9mSG91ci5nZXRUaW1lKCkgPT09IGRhdGVSaWdodFN0YXJ0T2ZIb3VyLmdldFRpbWUoKTtcbn0iLCJpbXBvcnQgaXNTYW1lV2VlayBmcm9tIFwiLi4vaXNTYW1lV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNTYW1lSVNPV2Vla1xuICogQGNhdGVnb3J5IElTTyBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgaW4gdGhlIHNhbWUgSVNPIHdlZWsgKGFuZCB5ZWFyKT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgaW4gdGhlIHNhbWUgSVNPIHdlZWsgKGFuZCB5ZWFyKT9cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgZmlyc3QgZGF0ZSB0byBjaGVja1xuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIHNlY29uZCBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGVzIGFyZSBpbiB0aGUgc2FtZSBJU08gd2VlayAoYW5kIHllYXIpXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSAxIFNlcHRlbWJlciAyMDE0IGFuZCA3IFNlcHRlbWJlciAyMDE0IGluIHRoZSBzYW1lIElTTyB3ZWVrP1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lSVNPV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgbmV3IERhdGUoMjAxNCwgOCwgNykpXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDEgU2VwdGVtYmVyIDIwMTQgYW5kIDEgU2VwdGVtYmVyIDIwMTUgaW4gdGhlIHNhbWUgSVNPIHdlZWs/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVJU09XZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCBuZXcgRGF0ZSgyMDE1LCA4LCAxKSlcbiAqIC8vPT4gZmFsc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNTYW1lSVNPV2VlayhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGlzU2FtZVdlZWsoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQsIHtcbiAgICB3ZWVrU3RhcnRzT246IDFcbiAgfSk7XG59IiwiaW1wb3J0IHN0YXJ0T2ZJU09XZWVrWWVhciBmcm9tIFwiLi4vc3RhcnRPZklTT1dlZWtZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1NhbWVJU09XZWVrWWVhclxuICogQGNhdGVnb3J5IElTTyBXZWVrLU51bWJlcmluZyBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgaW4gdGhlIHNhbWUgSVNPIHdlZWstbnVtYmVyaW5nIHllYXI/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyP1xuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBmaXJzdCBkYXRlIHRvIGNoZWNrXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgc2Vjb25kIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZXMgYXJlIGluIHRoZSBzYW1lIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSAyOSBEZWNlbWJlciAyMDAzIGFuZCAyIEphbnVhcnkgMjAwNSBpbiB0aGUgc2FtZSBJU08gd2Vlay1udW1iZXJpbmcgeWVhcj9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZUlTT1dlZWtZZWFyKG5ldyBEYXRlKDIwMDMsIDExLCAyOSksIG5ldyBEYXRlKDIwMDUsIDAsIDIpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzU2FtZUlTT1dlZWtZZWFyKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnRTdGFydE9mWWVhciA9IHN0YXJ0T2ZJU09XZWVrWWVhcihkaXJ0eURhdGVMZWZ0KTtcbiAgdmFyIGRhdGVSaWdodFN0YXJ0T2ZZZWFyID0gc3RhcnRPZklTT1dlZWtZZWFyKGRpcnR5RGF0ZVJpZ2h0KTtcbiAgcmV0dXJuIGRhdGVMZWZ0U3RhcnRPZlllYXIuZ2V0VGltZSgpID09PSBkYXRlUmlnaHRTdGFydE9mWWVhci5nZXRUaW1lKCk7XG59IiwiaW1wb3J0IHN0YXJ0T2ZNaW51dGUgZnJvbSBcIi4uL3N0YXJ0T2ZNaW51dGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzU2FtZU1pbnV0ZVxuICogQGNhdGVnb3J5IE1pbnV0ZSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIG1pbnV0ZSAoYW5kIGhvdXIgYW5kIGRheSk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIG1pbnV0ZSAoYW5kIGhvdXIgYW5kIGRheSk/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgZmlyc3QgZGF0ZSB0byBjaGVja1xuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIHNlY29uZCBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGVzIGFyZSBpbiB0aGUgc2FtZSBtaW51dGUgKGFuZCBob3VyIGFuZCBkYXkpXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSA0IFNlcHRlbWJlciAyMDE0IDA2OjMwOjAwIGFuZCA0IFNlcHRlbWJlciAyMDE0IDA2OjMwOjE1IGluIHRoZSBzYW1lIG1pbnV0ZT9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZU1pbnV0ZShcbiAqICAgbmV3IERhdGUoMjAxNCwgOCwgNCwgNiwgMzApLFxuICogICBuZXcgRGF0ZSgyMDE0LCA4LCA0LCA2LCAzMCwgMTUpXG4gKiApXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDQgU2VwdGVtYmVyIDIwMTQgMDY6MzA6MDAgYW5kIDUgU2VwdGVtYmVyIDIwMTQgMDY6MzA6MDAgaW4gdGhlIHNhbWUgbWludXRlP1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lTWludXRlKFxuICogICBuZXcgRGF0ZSgyMDE0LCA4LCA0LCA2LCAzMCksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDgsIDUsIDYsIDMwKVxuICogKVxuICogLy89PiBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1NhbWVNaW51dGUoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdFN0YXJ0T2ZNaW51dGUgPSBzdGFydE9mTWludXRlKGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgZGF0ZVJpZ2h0U3RhcnRPZk1pbnV0ZSA9IHN0YXJ0T2ZNaW51dGUoZGlydHlEYXRlUmlnaHQpO1xuICByZXR1cm4gZGF0ZUxlZnRTdGFydE9mTWludXRlLmdldFRpbWUoKSA9PT0gZGF0ZVJpZ2h0U3RhcnRPZk1pbnV0ZS5nZXRUaW1lKCk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1NhbWVNb250aFxuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgaW4gdGhlIHNhbWUgbW9udGggKGFuZCB5ZWFyKT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgaW4gdGhlIHNhbWUgbW9udGggKGFuZCB5ZWFyKT9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBmaXJzdCBkYXRlIHRvIGNoZWNrXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgc2Vjb25kIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZXMgYXJlIGluIHRoZSBzYW1lIG1vbnRoIChhbmQgeWVhcilcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDIgU2VwdGVtYmVyIDIwMTQgYW5kIDI1IFNlcHRlbWJlciAyMDE0IGluIHRoZSBzYW1lIG1vbnRoP1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lTW9udGgobmV3IERhdGUoMjAxNCwgOCwgMiksIG5ldyBEYXRlKDIwMTQsIDgsIDI1KSlcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgMiBTZXB0ZW1iZXIgMjAxNCBhbmQgMjUgU2VwdGVtYmVyIDIwMTUgaW4gdGhlIHNhbWUgbW9udGg/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVNb250aChuZXcgRGF0ZSgyMDE0LCA4LCAyKSwgbmV3IERhdGUoMjAxNSwgOCwgMjUpKVxuICogLy89PiBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1NhbWVNb250aChkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0ID0gdG9EYXRlKGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgZGF0ZVJpZ2h0ID0gdG9EYXRlKGRpcnR5RGF0ZVJpZ2h0KTtcbiAgcmV0dXJuIGRhdGVMZWZ0LmdldEZ1bGxZZWFyKCkgPT09IGRhdGVSaWdodC5nZXRGdWxsWWVhcigpICYmIGRhdGVMZWZ0LmdldE1vbnRoKCkgPT09IGRhdGVSaWdodC5nZXRNb250aCgpO1xufSIsImltcG9ydCBzdGFydE9mUXVhcnRlciBmcm9tIFwiLi4vc3RhcnRPZlF1YXJ0ZXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzU2FtZVF1YXJ0ZXJcbiAqIEBjYXRlZ29yeSBRdWFydGVyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgaW4gdGhlIHNhbWUgcXVhcnRlciAoYW5kIHllYXIpP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSBxdWFydGVyIChhbmQgeWVhcik/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZUxlZnQgLSB0aGUgZmlyc3QgZGF0ZSB0byBjaGVja1xuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZVJpZ2h0IC0gdGhlIHNlY29uZCBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGVzIGFyZSBpbiB0aGUgc2FtZSBxdWFydGVyIChhbmQgeWVhcilcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDEgSmFudWFyeSAyMDE0IGFuZCA4IE1hcmNoIDIwMTQgaW4gdGhlIHNhbWUgcXVhcnRlcj9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZVF1YXJ0ZXIobmV3IERhdGUoMjAxNCwgMCwgMSksIG5ldyBEYXRlKDIwMTQsIDIsIDgpKVxuICogLy89PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSAxIEphbnVhcnkgMjAxNCBhbmQgMSBKYW51YXJ5IDIwMTUgaW4gdGhlIHNhbWUgcXVhcnRlcj9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZVF1YXJ0ZXIobmV3IERhdGUoMjAxNCwgMCwgMSksIG5ldyBEYXRlKDIwMTUsIDAsIDEpKVxuICogLy89PiBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1NhbWVRdWFydGVyKGRpcnR5RGF0ZUxlZnQsIGRpcnR5RGF0ZVJpZ2h0KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZUxlZnRTdGFydE9mUXVhcnRlciA9IHN0YXJ0T2ZRdWFydGVyKGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgZGF0ZVJpZ2h0U3RhcnRPZlF1YXJ0ZXIgPSBzdGFydE9mUXVhcnRlcihkaXJ0eURhdGVSaWdodCk7XG4gIHJldHVybiBkYXRlTGVmdFN0YXJ0T2ZRdWFydGVyLmdldFRpbWUoKSA9PT0gZGF0ZVJpZ2h0U3RhcnRPZlF1YXJ0ZXIuZ2V0VGltZSgpO1xufSIsImltcG9ydCBzdGFydE9mU2Vjb25kIGZyb20gXCIuLi9zdGFydE9mU2Vjb25kL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1NhbWVTZWNvbmRcbiAqIEBjYXRlZ29yeSBTZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSBzZWNvbmQgKGFuZCBob3VyIGFuZCBkYXkpP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSBzZWNvbmQgKGFuZCBob3VyIGFuZCBkYXkpP1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGZpcnN0IGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBzZWNvbmQgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlcyBhcmUgaW4gdGhlIHNhbWUgc2Vjb25kIChhbmQgaG91ciBhbmQgZGF5KVxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgNCBTZXB0ZW1iZXIgMjAxNCAwNjozMDoxNS4wMDAgYW5kIDQgU2VwdGVtYmVyIDIwMTQgMDY6MzAuMTUuNTAwIGluIHRoZSBzYW1lIHNlY29uZD9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZVNlY29uZChcbiAqICAgbmV3IERhdGUoMjAxNCwgOCwgNCwgNiwgMzAsIDE1KSxcbiAqICAgbmV3IERhdGUoMjAxNCwgOCwgNCwgNiwgMzAsIDE1LCA1MDApXG4gKiApXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDQgU2VwdGVtYmVyIDIwMTQgMDY6MDA6MTUuMDAwIGFuZCA0IFNlcHRlbWJlciAyMDE0IDA2OjAxLjE1LjAwMCBpbiB0aGUgc2FtZSBzZWNvbmQ/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVTZWNvbmQoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDgsIDQsIDYsIDAsIDE1KSxcbiAqICAgbmV3IERhdGUoMjAxNCwgOCwgNCwgNiwgMSwgMTUpXG4gKiApXG4gKiAvLz0+IGZhbHNlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSA0IFNlcHRlbWJlciAyMDE0IDA2OjAwOjE1LjAwMCBhbmQgNSBTZXB0ZW1iZXIgMjAxNCAwNjowMC4xNS4wMDAgaW4gdGhlIHNhbWUgc2Vjb25kP1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lU2Vjb25kKFxuICogICBuZXcgRGF0ZSgyMDE0LCA4LCA0LCA2LCAwLCAxNSksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDgsIDUsIDYsIDAsIDE1KVxuICogKVxuICogLy89PiBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1NhbWVTZWNvbmQoZGlydHlEYXRlTGVmdCwgZGlydHlEYXRlUmlnaHQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlTGVmdFN0YXJ0T2ZTZWNvbmQgPSBzdGFydE9mU2Vjb25kKGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgZGF0ZVJpZ2h0U3RhcnRPZlNlY29uZCA9IHN0YXJ0T2ZTZWNvbmQoZGlydHlEYXRlUmlnaHQpO1xuICByZXR1cm4gZGF0ZUxlZnRTdGFydE9mU2Vjb25kLmdldFRpbWUoKSA9PT0gZGF0ZVJpZ2h0U3RhcnRPZlNlY29uZC5nZXRUaW1lKCk7XG59IiwiaW1wb3J0IHN0YXJ0T2ZXZWVrIGZyb20gXCIuLi9zdGFydE9mV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNTYW1lV2Vla1xuICogQGNhdGVnb3J5IFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSB3ZWVrIChhbmQgbW9udGggYW5kIHllYXIpP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSB3ZWVrIChhbmQgbW9udGggYW5kIHllYXIpP1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVMZWZ0IC0gdGhlIGZpcnN0IGRhdGUgdG8gY2hlY2tcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGVSaWdodCAtIHRoZSBzZWNvbmQgZGF0ZSB0byBjaGVja1xuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGVzIGFyZSBpbiB0aGUgc2FtZSB3ZWVrIChhbmQgbW9udGggYW5kIHllYXIpXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSAzMSBBdWd1c3QgMjAxNCBhbmQgNCBTZXB0ZW1iZXIgMjAxNCBpbiB0aGUgc2FtZSB3ZWVrP1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lV2VlayhuZXcgRGF0ZSgyMDE0LCA3LCAzMSksIG5ldyBEYXRlKDIwMTQsIDgsIDQpKVxuICogLy89PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHdlZWsgc3RhcnRzIHdpdGggTW9uZGF5LFxuICogLy8gYXJlIDMxIEF1Z3VzdCAyMDE0IGFuZCA0IFNlcHRlbWJlciAyMDE0IGluIHRoZSBzYW1lIHdlZWs/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVXZWVrKG5ldyBEYXRlKDIwMTQsIDcsIDMxKSwgbmV3IERhdGUoMjAxNCwgOCwgNCksIHtcbiAqICAgd2Vla1N0YXJ0c09uOiAxXG4gKiB9KVxuICogLy89PiBmYWxzZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgMSBKYW51YXJ5IDIwMTQgYW5kIDEgSmFudWFyeSAyMDE1IGluIHRoZSBzYW1lIHdlZWs/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVXZWVrKG5ldyBEYXRlKDIwMTQsIDAsIDEpLCBuZXcgRGF0ZSgyMDE1LCAwLCAxKSlcbiAqIC8vPT4gZmFsc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNTYW1lV2VlayhkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCwgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0U3RhcnRPZldlZWsgPSBzdGFydE9mV2VlayhkaXJ0eURhdGVMZWZ0LCBvcHRpb25zKTtcbiAgdmFyIGRhdGVSaWdodFN0YXJ0T2ZXZWVrID0gc3RhcnRPZldlZWsoZGlydHlEYXRlUmlnaHQsIG9wdGlvbnMpO1xuICByZXR1cm4gZGF0ZUxlZnRTdGFydE9mV2Vlay5nZXRUaW1lKCkgPT09IGRhdGVSaWdodFN0YXJ0T2ZXZWVrLmdldFRpbWUoKTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzU2FtZVllYXJcbiAqIEBjYXRlZ29yeSBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgaW4gdGhlIHNhbWUgeWVhcj9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgaW4gdGhlIHNhbWUgeWVhcj9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlTGVmdCAtIHRoZSBmaXJzdCBkYXRlIHRvIGNoZWNrXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlUmlnaHQgLSB0aGUgc2Vjb25kIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZXMgYXJlIGluIHRoZSBzYW1lIHllYXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDIgU2VwdGVtYmVyIDIwMTQgYW5kIDI1IFNlcHRlbWJlciAyMDE0IGluIHRoZSBzYW1lIHllYXI/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVZZWFyKG5ldyBEYXRlKDIwMTQsIDgsIDIpLCBuZXcgRGF0ZSgyMDE0LCA4LCAyNSkpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNTYW1lWWVhcihkaXJ0eURhdGVMZWZ0LCBkaXJ0eURhdGVSaWdodCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVMZWZ0ID0gdG9EYXRlKGRpcnR5RGF0ZUxlZnQpO1xuICB2YXIgZGF0ZVJpZ2h0ID0gdG9EYXRlKGRpcnR5RGF0ZVJpZ2h0KTtcbiAgcmV0dXJuIGRhdGVMZWZ0LmdldEZ1bGxZZWFyKCkgPT09IGRhdGVSaWdodC5nZXRGdWxsWWVhcigpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNTYXR1cmRheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgU2F0dXJkYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBTYXR1cmRheT9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyBTYXR1cmRheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElzIDI3IFNlcHRlbWJlciAyMDE0IFNhdHVyZGF5P1xuICogY29uc3QgcmVzdWx0ID0gaXNTYXR1cmRheShuZXcgRGF0ZSgyMDE0LCA4LCAyNykpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNTYXR1cmRheShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiB0b0RhdGUoZGlydHlEYXRlKS5nZXREYXkoKSA9PT0gNjtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzU3VuZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBTdW5kYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBTdW5kYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgU3VuZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXMgMjEgU2VwdGVtYmVyIDIwMTQgU3VuZGF5P1xuICogY29uc3QgcmVzdWx0ID0gaXNTdW5kYXkobmV3IERhdGUoMjAxNCwgOCwgMjEpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzU3VuZGF5KGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHRvRGF0ZShkaXJ0eURhdGUpLmdldERheSgpID09PSAwO1xufSIsImltcG9ydCBpc1NhbWVIb3VyIGZyb20gXCIuLi9pc1NhbWVIb3VyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1RoaXNIb3VyXG4gKiBAY2F0ZWdvcnkgSG91ciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgc2FtZSBob3VyIGFzIHRoZSBjdXJyZW50IGRhdGU/XG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIHNhbWUgaG91ciBhcyB0aGUgY3VycmVudCBkYXRlP1xuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYERhdGUubm93KClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyBpbiB0aGlzIGhvdXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiBub3cgaXMgMjUgU2VwdGVtYmVyIDIwMTQgMTg6MzA6MTUuNTAwLFxuICogLy8gaXMgMjUgU2VwdGVtYmVyIDIwMTQgMTg6MDA6MDAgaW4gdGhpcyBob3VyP1xuICogY29uc3QgcmVzdWx0ID0gaXNUaGlzSG91cihuZXcgRGF0ZSgyMDE0LCA4LCAyNSwgMTgpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzVGhpc0hvdXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gaXNTYW1lSG91cihEYXRlLm5vdygpLCBkaXJ0eURhdGUpO1xufSIsImltcG9ydCBpc1NhbWVJU09XZWVrIGZyb20gXCIuLi9pc1NhbWVJU09XZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1RoaXNJU09XZWVrXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIHNhbWUgSVNPIHdlZWsgYXMgdGhlIGN1cnJlbnQgZGF0ZT9cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgc2FtZSBJU08gd2VlayBhcyB0aGUgY3VycmVudCBkYXRlP1xuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBEYXRlLm5vdygpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgaW4gdGhpcyBJU08gd2Vla1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDI1IFNlcHRlbWJlciAyMDE0LCBpcyAyMiBTZXB0ZW1iZXIgMjAxNCBpbiB0aGlzIElTTyB3ZWVrP1xuICogY29uc3QgcmVzdWx0ID0gaXNUaGlzSVNPV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyMikpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUaGlzSVNPV2VlayhkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBpc1NhbWVJU09XZWVrKGRpcnR5RGF0ZSwgRGF0ZS5ub3coKSk7XG59IiwiaW1wb3J0IGlzU2FtZU1pbnV0ZSBmcm9tIFwiLi4vaXNTYW1lTWludXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1RoaXNNaW51dGVcbiAqIEBjYXRlZ29yeSBNaW51dGUgSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIHNhbWUgbWludXRlIGFzIHRoZSBjdXJyZW50IGRhdGU/XG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIHNhbWUgbWludXRlIGFzIHRoZSBjdXJyZW50IGRhdGU/XG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgRGF0ZS5ub3coKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIGluIHRoaXMgbWludXRlXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgbm93IGlzIDI1IFNlcHRlbWJlciAyMDE0IDE4OjMwOjE1LjUwMCxcbiAqIC8vIGlzIDI1IFNlcHRlbWJlciAyMDE0IDE4OjMwOjAwIGluIHRoaXMgbWludXRlP1xuICogY29uc3QgcmVzdWx0ID0gaXNUaGlzTWludXRlKG5ldyBEYXRlKDIwMTQsIDgsIDI1LCAxOCwgMzApKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzVGhpc01pbnV0ZShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBpc1NhbWVNaW51dGUoRGF0ZS5ub3coKSwgZGlydHlEYXRlKTtcbn0iLCJpbXBvcnQgaXNTYW1lTW9udGggZnJvbSBcIi4uL2lzU2FtZU1vbnRoL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1RoaXNNb250aFxuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBzYW1lIG1vbnRoIGFzIHRoZSBjdXJyZW50IGRhdGU/XG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIHNhbWUgbW9udGggYXMgdGhlIGN1cnJlbnQgZGF0ZT9cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBEYXRlLm5vdygpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgaW4gdGhpcyBtb250aFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDI1IFNlcHRlbWJlciAyMDE0LCBpcyAxNSBTZXB0ZW1iZXIgMjAxNCBpbiB0aGlzIG1vbnRoP1xuICogY29uc3QgcmVzdWx0ID0gaXNUaGlzTW9udGgobmV3IERhdGUoMjAxNCwgOCwgMTUpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzVGhpc01vbnRoKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGlzU2FtZU1vbnRoKERhdGUubm93KCksIGRpcnR5RGF0ZSk7XG59IiwiaW1wb3J0IGlzU2FtZVF1YXJ0ZXIgZnJvbSBcIi4uL2lzU2FtZVF1YXJ0ZXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzVGhpc1F1YXJ0ZXJcbiAqIEBjYXRlZ29yeSBRdWFydGVyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBzYW1lIHF1YXJ0ZXIgYXMgdGhlIGN1cnJlbnQgZGF0ZT9cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgc2FtZSBxdWFydGVyIGFzIHRoZSBjdXJyZW50IGRhdGU/XG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgRGF0ZS5ub3coKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIGluIHRoaXMgcXVhcnRlclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDI1IFNlcHRlbWJlciAyMDE0LCBpcyAyIEp1bHkgMjAxNCBpbiB0aGlzIHF1YXJ0ZXI/XG4gKiBjb25zdCByZXN1bHQgPSBpc1RoaXNRdWFydGVyKG5ldyBEYXRlKDIwMTQsIDYsIDIpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzVGhpc1F1YXJ0ZXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gaXNTYW1lUXVhcnRlcihEYXRlLm5vdygpLCBkaXJ0eURhdGUpO1xufSIsImltcG9ydCBpc1NhbWVTZWNvbmQgZnJvbSBcIi4uL2lzU2FtZVNlY29uZC9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNUaGlzU2Vjb25kXG4gKiBAY2F0ZWdvcnkgU2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBzYW1lIHNlY29uZCBhcyB0aGUgY3VycmVudCBkYXRlP1xuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBzYW1lIHNlY29uZCBhcyB0aGUgY3VycmVudCBkYXRlP1xuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYERhdGUubm93KClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyBpbiB0aGlzIHNlY29uZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIG5vdyBpcyAyNSBTZXB0ZW1iZXIgMjAxNCAxODozMDoxNS41MDAsXG4gKiAvLyBpcyAyNSBTZXB0ZW1iZXIgMjAxNCAxODozMDoxNS4wMDAgaW4gdGhpcyBzZWNvbmQ/XG4gKiBjb25zdCByZXN1bHQgPSBpc1RoaXNTZWNvbmQobmV3IERhdGUoMjAxNCwgOCwgMjUsIDE4LCAzMCwgMTUpKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzVGhpc1NlY29uZChkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBpc1NhbWVTZWNvbmQoRGF0ZS5ub3coKSwgZGlydHlEYXRlKTtcbn0iLCJpbXBvcnQgaXNTYW1lV2VlayBmcm9tIFwiLi4vaXNTYW1lV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNUaGlzV2Vla1xuICogQGNhdGVnb3J5IFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIHNhbWUgd2VlayBhcyB0aGUgY3VycmVudCBkYXRlP1xuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBzYW1lIHdlZWsgYXMgdGhlIGN1cnJlbnQgZGF0ZT9cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBEYXRlLm5vdygpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gdGhlIG9iamVjdCB3aXRoIG9wdGlvbnNcbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyBpbiB0aGlzIHdlZWtcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyAyNSBTZXB0ZW1iZXIgMjAxNCwgaXMgMjEgU2VwdGVtYmVyIDIwMTQgaW4gdGhpcyB3ZWVrP1xuICogY29uc3QgcmVzdWx0ID0gaXNUaGlzV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyMSkpXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgMjUgU2VwdGVtYmVyIDIwMTQgYW5kIHdlZWsgc3RhcnRzIHdpdGggTW9uZGF5XG4gKiAvLyBpcyAyMSBTZXB0ZW1iZXIgMjAxNCBpbiB0aGlzIHdlZWs/XG4gKiBjb25zdCByZXN1bHQgPSBpc1RoaXNXZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIxKSwgeyB3ZWVrU3RhcnRzT246IDEgfSlcbiAqIC8vPT4gZmFsc2VcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RoaXNXZWVrKGRpcnR5RGF0ZSwgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGlzU2FtZVdlZWsoZGlydHlEYXRlLCBEYXRlLm5vdygpLCBvcHRpb25zKTtcbn0iLCJpbXBvcnQgaXNTYW1lWWVhciBmcm9tIFwiLi4vaXNTYW1lWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNUaGlzWWVhclxuICogQGNhdGVnb3J5IFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgaW4gdGhlIHNhbWUgeWVhciBhcyB0aGUgY3VycmVudCBkYXRlP1xuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBzYW1lIHllYXIgYXMgdGhlIGN1cnJlbnQgZGF0ZT9cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBEYXRlLm5vdygpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgaW4gdGhpcyB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdG9kYXkgaXMgMjUgU2VwdGVtYmVyIDIwMTQsIGlzIDIgSnVseSAyMDE0IGluIHRoaXMgeWVhcj9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzVGhpc1llYXIobmV3IERhdGUoMjAxNCwgNiwgMikpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUaGlzWWVhcihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBpc1NhbWVZZWFyKGRpcnR5RGF0ZSwgRGF0ZS5ub3coKSk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1RodXJzZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBUaHVyc2RheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIFRodXJzZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIFRodXJzZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXMgMjUgU2VwdGVtYmVyIDIwMTQgVGh1cnNkYXk/XG4gKiBjb25zdCByZXN1bHQgPSBpc1RodXJzZGF5KG5ldyBEYXRlKDIwMTQsIDgsIDI1KSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RodXJzZGF5KGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHRvRGF0ZShkaXJ0eURhdGUpLmdldERheSgpID09PSA0O1xufSIsImltcG9ydCBpc1NhbWVEYXkgZnJvbSBcIi4uL2lzU2FtZURheS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNUb2RheVxuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSB0b2RheT9cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSB0b2RheT9cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBEYXRlLm5vdygpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgdG9kYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyA2IE9jdG9iZXIgMjAxNCwgaXMgNiBPY3RvYmVyIDE0OjAwOjAwIHRvZGF5P1xuICogY29uc3QgcmVzdWx0ID0gaXNUb2RheShuZXcgRGF0ZSgyMDE0LCA5LCA2LCAxNCwgMCkpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUb2RheShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBpc1NhbWVEYXkoZGlydHlEYXRlLCBEYXRlLm5vdygpKTtcbn0iLCJpbXBvcnQgYWRkRGF5cyBmcm9tIFwiLi4vYWRkRGF5cy9pbmRleC5qc1wiO1xuaW1wb3J0IGlzU2FtZURheSBmcm9tIFwiLi4vaXNTYW1lRGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1RvbW9ycm93XG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIHRvbW9ycm93P1xuICogQHB1cmUgZmFsc2VcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIHRvbW9ycm93P1xuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYERhdGUubm93KClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyB0b21vcnJvd1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDYgT2N0b2JlciAyMDE0LCBpcyA3IE9jdG9iZXIgMTQ6MDA6MDAgdG9tb3Jyb3c/XG4gKiBjb25zdCByZXN1bHQgPSBpc1RvbW9ycm93KG5ldyBEYXRlKDIwMTQsIDksIDcsIDE0LCAwKSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RvbW9ycm93KGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGlzU2FtZURheShkaXJ0eURhdGUsIGFkZERheXMoRGF0ZS5ub3coKSwgMSkpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgaXNUdWVzZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSBUdWVzZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgVHVlc2RheT9cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtCb29sZWFufSB0aGUgZGF0ZSBpcyBUdWVzZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXMgMjMgU2VwdGVtYmVyIDIwMTQgVHVlc2RheT9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzVHVlc2RheShuZXcgRGF0ZSgyMDE0LCA4LCAyMykpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUdWVzZGF5KGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHRvRGF0ZShkaXJ0eURhdGUpLmdldERheSgpID09PSAyO1xufSIsImltcG9ydCBpc0RhdGUgZnJvbSBcIi4uL2lzRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1ZhbGlkXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIHZhbGlkP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJucyBmYWxzZSBpZiBhcmd1bWVudCBpcyBJbnZhbGlkIERhdGUgYW5kIHRydWUgb3RoZXJ3aXNlLlxuICogQXJndW1lbnQgaXMgY29udmVydGVkIHRvIERhdGUgdXNpbmcgYHRvRGF0ZWAuIFNlZSBbdG9EYXRlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL3RvRGF0ZX1cbiAqIEludmFsaWQgRGF0ZSBpcyBhIERhdGUsIHdob3NlIHRpbWUgdmFsdWUgaXMgTmFOLlxuICpcbiAqIFRpbWUgdmFsdWUgb2YgRGF0ZTogaHR0cDovL2VzNS5naXRodWIuaW8vI3gxNS45LjEuMVxuICpcbiAqIEBwYXJhbSB7Kn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgdmFsaWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgdGhlIHZhbGlkIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSBpc1ZhbGlkKG5ldyBEYXRlKDIwMTQsIDEsIDMxKSlcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgdGhlIHZhbHVlLCBjb252ZXJ0YWJsZSBpbnRvIGEgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzVmFsaWQoMTM5MzgwNDgwMDAwMClcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgdGhlIGludmFsaWQgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzVmFsaWQobmV3IERhdGUoJycpKVxuICogLy89PiBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1ZhbGlkKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgaWYgKCFpc0RhdGUoZGlydHlEYXRlKSAmJiB0eXBlb2YgZGlydHlEYXRlICE9PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICByZXR1cm4gIWlzTmFOKE51bWJlcihkYXRlKSk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1dlZG5lc2RheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgV2VkbmVzZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgV2VkbmVzZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIFdlZG5lc2RheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElzIDI0IFNlcHRlbWJlciAyMDE0IFdlZG5lc2RheT9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzV2VkbmVzZGF5KG5ldyBEYXRlKDIwMTQsIDgsIDI0KSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1dlZG5lc2RheShkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiB0b0RhdGUoZGlydHlEYXRlKS5nZXREYXkoKSA9PT0gMztcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzV2Vla2VuZFxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgRG9lcyB0aGUgZ2l2ZW4gZGF0ZSBmYWxsIG9uIGEgd2Vla2VuZD9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIERvZXMgdGhlIGdpdmVuIGRhdGUgZmFsbCBvbiBhIHdlZWtlbmQ/XG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgZmFsbHMgb24gYSB3ZWVrZW5kXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRG9lcyA1IE9jdG9iZXIgMjAxNCBmYWxsIG9uIGEgd2Vla2VuZD9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzV2Vla2VuZChuZXcgRGF0ZSgyMDE0LCA5LCA1KSlcbiAqIC8vPT4gdHJ1ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1dlZWtlbmQoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGF5ID0gZGF0ZS5nZXREYXkoKTtcbiAgcmV0dXJuIGRheSA9PT0gMCB8fCBkYXkgPT09IDY7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1dpdGhpbkludGVydmFsXG4gKiBAY2F0ZWdvcnkgSW50ZXJ2YWwgSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgd2l0aGluIHRoZSBpbnRlcnZhbD9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIHdpdGhpbiB0aGUgaW50ZXJ2YWw/IChJbmNsdWRpbmcgc3RhcnQgYW5kIGVuZC4pXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcGFyYW0ge0ludGVydmFsfSBpbnRlcnZhbCAtIHRoZSBpbnRlcnZhbCB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIHdpdGhpbiB0aGUgaW50ZXJ2YWxcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IFRoZSBzdGFydCBvZiBhbiBpbnRlcnZhbCBjYW5ub3QgYmUgYWZ0ZXIgaXRzIGVuZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gRGF0ZSBpbiBpbnRlcnZhbCBjYW5ub3QgYmUgYEludmFsaWQgRGF0ZWBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIHRoZSBkYXRlIHdpdGhpbiB0aGUgaW50ZXJ2YWw6XG4gKiBpc1dpdGhpbkludGVydmFsKG5ldyBEYXRlKDIwMTQsIDAsIDMpLCB7XG4gKiAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCAwLCAxKSxcbiAqICAgZW5kOiBuZXcgRGF0ZSgyMDE0LCAwLCA3KVxuICogfSlcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgdGhlIGRhdGUgb3V0c2lkZSBvZiB0aGUgaW50ZXJ2YWw6XG4gKiBpc1dpdGhpbkludGVydmFsKG5ldyBEYXRlKDIwMTQsIDAsIDEwKSwge1xuICogICBzdGFydDogbmV3IERhdGUoMjAxNCwgMCwgMSksXG4gKiAgIGVuZDogbmV3IERhdGUoMjAxNCwgMCwgNylcbiAqIH0pXG4gKiAvLz0+IGZhbHNlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciBkYXRlIGVxdWFsIHRvIGludGVydmFsIHN0YXJ0OlxuICogaXNXaXRoaW5JbnRlcnZhbChkYXRlLCB7IHN0YXJ0LCBlbmQ6IGRhdGUgfSkgLy8gPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgZGF0ZSBlcXVhbCB0byBpbnRlcnZhbCBlbmQ6XG4gKiBpc1dpdGhpbkludGVydmFsKGRhdGUsIHsgc3RhcnQ6IGRhdGUsIGVuZCB9KSAvLyA9PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzV2l0aGluSW50ZXJ2YWwoZGlydHlEYXRlLCBpbnRlcnZhbCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIHRpbWUgPSB0b0RhdGUoZGlydHlEYXRlKS5nZXRUaW1lKCk7XG4gIHZhciBzdGFydFRpbWUgPSB0b0RhdGUoaW50ZXJ2YWwuc3RhcnQpLmdldFRpbWUoKTtcbiAgdmFyIGVuZFRpbWUgPSB0b0RhdGUoaW50ZXJ2YWwuZW5kKS5nZXRUaW1lKCk7XG5cbiAgLy8gVGhyb3cgYW4gZXhjZXB0aW9uIGlmIHN0YXJ0IGRhdGUgaXMgYWZ0ZXIgZW5kIGRhdGUgb3IgaWYgYW55IGRhdGUgaXMgYEludmFsaWQgRGF0ZWBcbiAgaWYgKCEoc3RhcnRUaW1lIDw9IGVuZFRpbWUpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgaW50ZXJ2YWwnKTtcbiAgfVxuICByZXR1cm4gdGltZSA+PSBzdGFydFRpbWUgJiYgdGltZSA8PSBlbmRUaW1lO1xufSIsImltcG9ydCBpc1NhbWVEYXkgZnJvbSBcIi4uL2lzU2FtZURheS9pbmRleC5qc1wiO1xuaW1wb3J0IHN1YkRheXMgZnJvbSBcIi4uL3N1YkRheXMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzWWVzdGVyZGF5XG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIHllc3RlcmRheT9cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZ2l2ZW4gZGF0ZSB5ZXN0ZXJkYXk/XG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgRGF0ZS5ub3coKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IHRoZSBkYXRlIGlzIHllc3RlcmRheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDYgT2N0b2JlciAyMDE0LCBpcyA1IE9jdG9iZXIgMTQ6MDA6MDAgeWVzdGVyZGF5P1xuICogY29uc3QgcmVzdWx0ID0gaXNZZXN0ZXJkYXkobmV3IERhdGUoMjAxNCwgOSwgNSwgMTQsIDApKVxuICogLy89PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzWWVzdGVyZGF5KGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIGlzU2FtZURheShkaXJ0eURhdGUsIHN1YkRheXMoRGF0ZS5ub3coKSwgMSkpO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbGFzdERheU9mRGVjYWRlXG4gKiBAY2F0ZWdvcnkgRGVjYWRlIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgbGFzdCBkYXkgb2YgYSBkZWNhZGUgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBsYXN0IGRheSBvZiBhIGRlY2FkZSBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGxhc3QgZGF5IG9mIGEgZGVjYWRlXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGxhc3QgZGF5IG9mIGEgZGVjYWRlIGZvciAyMSBEZWNlbWJlciAyMDEyIDIxOjEyOjAwOlxuICogY29uc3QgcmVzdWx0ID0gbGFzdERheU9mRGVjYWRlKG5ldyBEYXRlKDIwMTIsIDExLCAyMSwgMjEsIDEyLCAwMCkpXG4gKiAvLz0+IFdlZCBEZWMgMzEgMjAxOSAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsYXN0RGF5T2ZEZWNhZGUoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgdmFyIGRlY2FkZSA9IDkgKyBNYXRoLmZsb29yKHllYXIgLyAxMCkgKiAxMDtcbiAgZGF0ZS5zZXRGdWxsWWVhcihkZWNhZGUgKyAxLCAwLCAwKTtcbiAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IGxhc3REYXlPZldlZWsgZnJvbSBcIi4uL2xhc3REYXlPZldlZWsvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGxhc3REYXlPZklTT1dlZWtcbiAqIEBjYXRlZ29yeSBJU08gV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGxhc3QgZGF5IG9mIGFuIElTTyB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgbGFzdCBkYXkgb2YgYW4gSVNPIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGxhc3QgZGF5IG9mIGFuIElTTyB3ZWVrXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGxhc3QgZGF5IG9mIGFuIElTTyB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gbGFzdERheU9mSVNPV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89PiBTdW4gU2VwIDA3IDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGFzdERheU9mSVNPV2VlayhkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBsYXN0RGF5T2ZXZWVrKGRpcnR5RGF0ZSwge1xuICAgIHdlZWtTdGFydHNPbjogMVxuICB9KTtcbn0iLCJpbXBvcnQgZ2V0SVNPV2Vla1llYXIgZnJvbSBcIi4uL2dldElTT1dlZWtZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZklTT1dlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZJU09XZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBsYXN0RGF5T2ZJU09XZWVrWWVhclxuICogQGNhdGVnb3J5IElTTyBXZWVrLU51bWJlcmluZyBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgbGFzdCBkYXkgb2YgYW4gSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBsYXN0IGRheSBvZiBhbiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcixcbiAqIHdoaWNoIGFsd2F5cyBzdGFydHMgMyBkYXlzIGJlZm9yZSB0aGUgeWVhcidzIGZpcnN0IFRodXJzZGF5LlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIGVuZCBvZiBhbiBJU08gd2Vlay1udW1iZXJpbmcgeWVhclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBsYXN0IGRheSBvZiBhbiBJU08gd2Vlay1udW1iZXJpbmcgeWVhciBmb3IgMiBKdWx5IDIwMDU6XG4gKiBjb25zdCByZXN1bHQgPSBsYXN0RGF5T2ZJU09XZWVrWWVhcihuZXcgRGF0ZSgyMDA1LCA2LCAyKSlcbiAqIC8vPT4gU3VuIEphbiAwMSAyMDA2IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxhc3REYXlPZklTT1dlZWtZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIHllYXIgPSBnZXRJU09XZWVrWWVhcihkaXJ0eURhdGUpO1xuICB2YXIgZm91cnRoT2ZKYW51YXJ5ID0gbmV3IERhdGUoMCk7XG4gIGZvdXJ0aE9mSmFudWFyeS5zZXRGdWxsWWVhcih5ZWFyICsgMSwgMCwgNCk7XG4gIGZvdXJ0aE9mSmFudWFyeS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgdmFyIGRhdGUgPSBzdGFydE9mSVNPV2Vlayhmb3VydGhPZkphbnVhcnkpO1xuICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgLSAxKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBsYXN0RGF5T2ZNb250aFxuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgbGFzdCBkYXkgb2YgYSBtb250aCBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGxhc3QgZGF5IG9mIGEgbW9udGggZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbGFzdCBkYXkgb2YgYSBtb250aFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBsYXN0IGRheSBvZiBhIG1vbnRoIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gbGFzdERheU9mTW9udGgobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPT4gVHVlIFNlcCAzMCAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxhc3REYXlPZk1vbnRoKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIG1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xuICBkYXRlLnNldEZ1bGxZZWFyKGRhdGUuZ2V0RnVsbFllYXIoKSwgbW9udGggKyAxLCAwKTtcbiAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBsYXN0RGF5T2ZRdWFydGVyXG4gKiBAY2F0ZWdvcnkgUXVhcnRlciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGxhc3QgZGF5IG9mIGEgeWVhciBxdWFydGVyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgbGFzdCBkYXkgb2YgYSB5ZWFyIHF1YXJ0ZXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHswfDF8Mn0gW29wdGlvbnMuYWRkaXRpb25hbERpZ2l0cz0yXSAtIHBhc3NlZCB0byBgdG9EYXRlYC4gU2VlIFt0b0RhdGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvdG9EYXRlfVxuICogQHJldHVybnMge0RhdGV9IHRoZSBsYXN0IGRheSBvZiBhIHF1YXJ0ZXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuYWRkaXRpb25hbERpZ2l0c2AgbXVzdCBiZSAwLCAxIG9yIDJcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGxhc3QgZGF5IG9mIGEgcXVhcnRlciBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGxhc3REYXlPZlF1YXJ0ZXIobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPT4gVHVlIFNlcCAzMCAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxhc3REYXlPZlF1YXJ0ZXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgY3VycmVudE1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xuICB2YXIgbW9udGggPSBjdXJyZW50TW9udGggLSBjdXJyZW50TW9udGggJSAzICsgMztcbiAgZGF0ZS5zZXRNb250aChtb250aCwgMCk7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuLi9fbGliL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGxhc3REYXlPZldlZWtcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgbGFzdCBkYXkgb2YgYSB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgbGFzdCBkYXkgb2YgYSB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbGFzdCBkYXkgb2YgYSB3ZWVrXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLndlZWtTdGFydHNPbmAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDZcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGxhc3QgZGF5IG9mIGEgd2VlayBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGxhc3REYXlPZldlZWsobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPT4gU2F0IFNlcCAwNiAyMDE0IDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRoZSB3ZWVrIHN0YXJ0cyBvbiBNb25kYXksIHRoZSBsYXN0IGRheSBvZiB0aGUgd2VlayBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGxhc3REYXlPZldlZWsobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSwgeyB3ZWVrU3RhcnRzT246IDEgfSlcbiAqIC8vPT4gU3VuIFNlcCAwNyAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxhc3REYXlPZldlZWsoZGlydHlEYXRlLCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfcmVmMiwgX3JlZjMsIF9vcHRpb25zJHdlZWtTdGFydHNPbiwgX29wdGlvbnMkbG9jYWxlLCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8sIF9kZWZhdWx0T3B0aW9ucyRsb2NhbCwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMjtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIHZhciB3ZWVrU3RhcnRzT24gPSB0b0ludGVnZXIoKF9yZWYgPSAoX3JlZjIgPSAoX3JlZjMgPSAoX29wdGlvbnMkd2Vla1N0YXJ0c09uID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX29wdGlvbnMkd2Vla1N0YXJ0c09uICE9PSB2b2lkIDAgPyBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUgPSBvcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlJG9wdGlvID0gX29wdGlvbnMkbG9jYWxlLm9wdGlvbnMpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX29wdGlvbnMkbG9jYWxlJG9wdGlvLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjMgIT09IHZvaWQgMCA/IF9yZWYzIDogZGVmYXVsdE9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdm9pZCAwID8gX3JlZjIgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsID0gZGVmYXVsdE9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID0gX2RlZmF1bHRPcHRpb25zJGxvY2FsLm9wdGlvbnMpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB2b2lkIDAgPyBfcmVmIDogMCk7XG5cbiAgLy8gVGVzdCBpZiB3ZWVrU3RhcnRzT24gaXMgYmV0d2VlbiAwIGFuZCA2IF9hbmRfIGlzIG5vdCBOYU5cbiAgaWYgKCEod2Vla1N0YXJ0c09uID49IDAgJiYgd2Vla1N0YXJ0c09uIDw9IDYpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3dlZWtTdGFydHNPbiBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNicpO1xuICB9XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkYXkgPSBkYXRlLmdldERheSgpO1xuICB2YXIgZGlmZiA9IChkYXkgPCB3ZWVrU3RhcnRzT24gPyAtNyA6IDApICsgNiAtIChkYXkgLSB3ZWVrU3RhcnRzT24pO1xuICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyBkaWZmKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBsYXN0RGF5T2ZZZWFyXG4gKiBAY2F0ZWdvcnkgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGxhc3QgZGF5IG9mIGEgeWVhciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGxhc3QgZGF5IG9mIGEgeWVhciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBsYXN0IGRheSBvZiBhIHllYXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgbGFzdCBkYXkgb2YgYSB5ZWFyIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gbGFzdERheU9mWWVhcihuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDAwKSlcbiAqIC8vPT4gV2VkIERlYyAzMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxhc3REYXlPZlllYXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgZGF0ZS5zZXRGdWxsWWVhcih5ZWFyICsgMSwgMCwgMCk7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGZvcm1hdHRlcnMgZnJvbSBcIi4uL19saWIvZm9ybWF0L2xpZ2h0Rm9ybWF0dGVycy9pbmRleC5qc1wiO1xuaW1wb3J0IGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMgZnJvbSBcIi4uL19saWIvZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IGlzVmFsaWQgZnJvbSBcIi4uL2lzVmFsaWQvaW5kZXguanNcIjtcbmltcG9ydCBzdWJNaWxsaXNlY29uZHMgZnJvbSBcIi4uL3N1Yk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjsgLy8gVGhpcyBSZWdFeHAgY29uc2lzdHMgb2YgdGhyZWUgcGFydHMgc2VwYXJhdGVkIGJ5IGB8YDpcbi8vIC0gKFxcdylcXDEqIG1hdGNoZXMgYW55IHNlcXVlbmNlcyBvZiB0aGUgc2FtZSBsZXR0ZXJcbi8vIC0gJycgbWF0Y2hlcyB0d28gcXVvdGUgY2hhcmFjdGVycyBpbiBhIHJvd1xuLy8gLSAnKCcnfFteJ10pKygnfCQpIG1hdGNoZXMgYW55dGhpbmcgc3Vycm91bmRlZCBieSB0d28gcXVvdGUgY2hhcmFjdGVycyAoJyksXG4vLyAgIGV4Y2VwdCBhIHNpbmdsZSBxdW90ZSBzeW1ib2wsIHdoaWNoIGVuZHMgdGhlIHNlcXVlbmNlLlxuLy8gICBUd28gcXVvdGUgY2hhcmFjdGVycyBkbyBub3QgZW5kIHRoZSBzZXF1ZW5jZS5cbi8vICAgSWYgdGhlcmUgaXMgbm8gbWF0Y2hpbmcgc2luZ2xlIHF1b3RlXG4vLyAgIHRoZW4gdGhlIHNlcXVlbmNlIHdpbGwgY29udGludWUgdW50aWwgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLlxuLy8gLSAuIG1hdGNoZXMgYW55IHNpbmdsZSBjaGFyYWN0ZXIgdW5tYXRjaGVkIGJ5IHByZXZpb3VzIHBhcnRzIG9mIHRoZSBSZWdFeHBzXG52YXIgZm9ybWF0dGluZ1Rva2Vuc1JlZ0V4cCA9IC8oXFx3KVxcMSp8Jyd8JygnJ3xbXiddKSsoJ3wkKXwuL2c7XG52YXIgZXNjYXBlZFN0cmluZ1JlZ0V4cCA9IC9eJyhbXl0qPyknPyQvO1xudmFyIGRvdWJsZVF1b3RlUmVnRXhwID0gLycnL2c7XG52YXIgdW5lc2NhcGVkTGF0aW5DaGFyYWN0ZXJSZWdFeHAgPSAvW2EtekEtWl0vO1xuXG4vKipcbiAqIEBuYW1lIGxpZ2h0Rm9ybWF0XG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEZvcm1hdCB0aGUgZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nIGluIHRoZSBnaXZlbiBmb3JtYXQuIFVubGlrZSBgZm9ybWF0YCxcbiAqIGBsaWdodEZvcm1hdGAgZG9lc24ndCB1c2UgbG9jYWxlcyBhbmQgb3V0cHV0cyBkYXRlIHVzaW5nIHRoZSBtb3N0IHBvcHVsYXIgdG9rZW5zLlxuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhlIGBsaWdodEZvcm1hdGAgdG9rZW5zIGRpZmZlciBmcm9tIE1vbWVudC5qcyBhbmQgb3RoZXIgbGlicmFyaWVzLlxuICogPiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqXG4gKiBUaGUgY2hhcmFjdGVycyB3cmFwcGVkIGJldHdlZW4gdHdvIHNpbmdsZSBxdW90ZXMgY2hhcmFjdGVycyAoJykgYXJlIGVzY2FwZWQuXG4gKiBUd28gc2luZ2xlIHF1b3RlcyBpbiBhIHJvdywgd2hldGhlciBpbnNpZGUgb3Igb3V0c2lkZSBhIHF1b3RlZCBzZXF1ZW5jZSwgcmVwcmVzZW50IGEgJ3JlYWwnIHNpbmdsZSBxdW90ZS5cbiAqXG4gKiBGb3JtYXQgb2YgdGhlIHN0cmluZyBpcyBiYXNlZCBvbiBVbmljb2RlIFRlY2huaWNhbCBTdGFuZGFyZCAjMzU6XG4gKiBodHRwczovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMzUvdHIzNS1kYXRlcy5odG1sI0RhdGVfRmllbGRfU3ltYm9sX1RhYmxlXG4gKlxuICogQWNjZXB0ZWQgcGF0dGVybnM6XG4gKiB8IFVuaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQYXR0ZXJuIHwgUmVzdWx0IGV4YW1wbGVzICAgICAgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCBBTSwgUE0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgYS4uYWFhICB8IEFNLCBQTSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYWFhICAgIHwgYS5tLiwgcC5tLiAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFhYWFhICAgfCBhLCBwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBDYWxlbmRhciB5ZWFyICAgICAgICAgICAgICAgICAgIHwgeSAgICAgICB8IDQ0LCAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB5eSAgICAgIHwgNDQsIDAxLCAwMCwgMTcgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHl5eSAgICAgfCAwNDQsIDAwMSwgMDAwLCAwMTcgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeXl5eSAgICB8IDAwNDQsIDAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICB8XG4gKiB8IE1vbnRoIChmb3JtYXR0aW5nKSAgICAgICAgICAgICAgfCBNICAgICAgIHwgMSwgMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1NICAgICAgfCAwMSwgMDIsIC4uLiwgMTIgICAgICAgICAgICAgICAgICAgfFxuICogfCBEYXkgb2YgbW9udGggICAgICAgICAgICAgICAgICAgIHwgZCAgICAgICB8IDEsIDIsIC4uLiwgMzEgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZCAgICAgIHwgMDEsIDAyLCAuLi4sIDMxICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgSG91ciBbMS0xMl0gICAgICAgICAgICAgICAgICAgICB8IGggICAgICAgfCAxLCAyLCAuLi4sIDExLCAxMiAgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaGggICAgICB8IDAxLCAwMiwgLi4uLCAxMSwgMTIgICAgICAgICAgICAgICB8XG4gKiB8IEhvdXIgWzAtMjNdICAgICAgICAgICAgICAgICAgICAgfCBIICAgICAgIHwgMCwgMSwgMiwgLi4uLCAyMyAgICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEhIICAgICAgfCAwMCwgMDEsIDAyLCAuLi4sIDIzICAgICAgICAgICAgICAgfFxuICogfCBNaW51dGUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbSAgICAgICB8IDAsIDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBtbSAgICAgIHwgMDAsIDAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgU2Vjb25kICAgICAgICAgICAgICAgICAgICAgICAgICB8IHMgICAgICAgfCAwLCAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3MgICAgICB8IDAwLCAwMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICB8XG4gKiB8IEZyYWN0aW9uIG9mIHNlY29uZCAgICAgICAgICAgICAgfCBTICAgICAgIHwgMCwgMSwgLi4uLCA5ICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNTICAgICAgfCAwMCwgMDEsIC4uLiwgOTkgICAgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU1NTICAgICB8IDAwMCwgMDAxLCAuLi4sIDk5OSAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTU1NTICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBmb3JtYXQgLSB0aGUgc3RyaW5nIG9mIHRva2Vuc1xuICogQHJldHVybnMge1N0cmluZ30gdGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZ1xuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gZm9ybWF0IHN0cmluZyBjb250YWlucyBhbiB1bmVzY2FwZWQgbGF0aW4gYWxwaGFiZXQgY2hhcmFjdGVyXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJlc3VsdCA9IGxpZ2h0Rm9ybWF0KG5ldyBEYXRlKDIwMTQsIDEsIDExKSwgJ3l5eXktTU0tZGQnKVxuICogLy89PiAnMjAxNC0wMi0xMSdcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsaWdodEZvcm1hdChkaXJ0eURhdGUsIGZvcm1hdFN0cikge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIG9yaWdpbmFsRGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICBpZiAoIWlzVmFsaWQob3JpZ2luYWxEYXRlKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHRpbWUgdmFsdWUnKTtcbiAgfVxuXG4gIC8vIENvbnZlcnQgdGhlIGRhdGUgaW4gc3lzdGVtIHRpbWV6b25lIHRvIHRoZSBzYW1lIGRhdGUgaW4gVVRDKzAwOjAwIHRpbWV6b25lLlxuICAvLyBUaGlzIGVuc3VyZXMgdGhhdCB3aGVuIFVUQyBmdW5jdGlvbnMgd2lsbCBiZSBpbXBsZW1lbnRlZCwgbG9jYWxlcyB3aWxsIGJlIGNvbXBhdGlibGUgd2l0aCB0aGVtLlxuICAvLyBTZWUgYW4gaXNzdWUgYWJvdXQgVVRDIGZ1bmN0aW9uczogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2lzc3Vlcy8zNzZcbiAgdmFyIHRpbWV6b25lT2Zmc2V0ID0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhvcmlnaW5hbERhdGUpO1xuICB2YXIgdXRjRGF0ZSA9IHN1Yk1pbGxpc2Vjb25kcyhvcmlnaW5hbERhdGUsIHRpbWV6b25lT2Zmc2V0KTtcbiAgdmFyIHRva2VucyA9IGZvcm1hdFN0ci5tYXRjaChmb3JtYXR0aW5nVG9rZW5zUmVnRXhwKTtcblxuICAvLyBUaGUgb25seSBjYXNlIHdoZW4gZm9ybWF0dGluZ1Rva2Vuc1JlZ0V4cCBkb2Vzbid0IG1hdGNoIHRoZSBzdHJpbmcgaXMgd2hlbiBpdCdzIGVtcHR5XG4gIGlmICghdG9rZW5zKSByZXR1cm4gJyc7XG4gIHZhciByZXN1bHQgPSB0b2tlbnMubWFwKGZ1bmN0aW9uIChzdWJzdHJpbmcpIHtcbiAgICAvLyBSZXBsYWNlIHR3byBzaW5nbGUgcXVvdGUgY2hhcmFjdGVycyB3aXRoIG9uZSBzaW5nbGUgcXVvdGUgY2hhcmFjdGVyXG4gICAgaWYgKHN1YnN0cmluZyA9PT0gXCInJ1wiKSB7XG4gICAgICByZXR1cm4gXCInXCI7XG4gICAgfVxuICAgIHZhciBmaXJzdENoYXJhY3RlciA9IHN1YnN0cmluZ1swXTtcbiAgICBpZiAoZmlyc3RDaGFyYWN0ZXIgPT09IFwiJ1wiKSB7XG4gICAgICByZXR1cm4gY2xlYW5Fc2NhcGVkU3RyaW5nKHN1YnN0cmluZyk7XG4gICAgfVxuICAgIHZhciBmb3JtYXR0ZXIgPSBmb3JtYXR0ZXJzW2ZpcnN0Q2hhcmFjdGVyXTtcbiAgICBpZiAoZm9ybWF0dGVyKSB7XG4gICAgICByZXR1cm4gZm9ybWF0dGVyKHV0Y0RhdGUsIHN1YnN0cmluZyk7XG4gICAgfVxuICAgIGlmIChmaXJzdENoYXJhY3Rlci5tYXRjaCh1bmVzY2FwZWRMYXRpbkNoYXJhY3RlclJlZ0V4cCkpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdGb3JtYXQgc3RyaW5nIGNvbnRhaW5zIGFuIHVuZXNjYXBlZCBsYXRpbiBhbHBoYWJldCBjaGFyYWN0ZXIgYCcgKyBmaXJzdENoYXJhY3RlciArICdgJyk7XG4gICAgfVxuICAgIHJldHVybiBzdWJzdHJpbmc7XG4gIH0pLmpvaW4oJycpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gY2xlYW5Fc2NhcGVkU3RyaW5nKGlucHV0KSB7XG4gIHZhciBtYXRjaGVzID0gaW5wdXQubWF0Y2goZXNjYXBlZFN0cmluZ1JlZ0V4cCk7XG4gIGlmICghbWF0Y2hlcykge1xuICAgIHJldHVybiBpbnB1dDtcbiAgfVxuICByZXR1cm4gbWF0Y2hlc1sxXS5yZXBsYWNlKGRvdWJsZVF1b3RlUmVnRXhwLCBcIidcIik7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYnVpbGRGb3JtYXRMb25nRm4oYXJncykge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcbiAgICAvLyBUT0RPOiBSZW1vdmUgU3RyaW5nKClcbiAgICB2YXIgd2lkdGggPSBvcHRpb25zLndpZHRoID8gU3RyaW5nKG9wdGlvbnMud2lkdGgpIDogYXJncy5kZWZhdWx0V2lkdGg7XG4gICAgdmFyIGZvcm1hdCA9IGFyZ3MuZm9ybWF0c1t3aWR0aF0gfHwgYXJncy5mb3JtYXRzW2FyZ3MuZGVmYXVsdFdpZHRoXTtcbiAgICByZXR1cm4gZm9ybWF0O1xuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGJ1aWxkTG9jYWxpemVGbihhcmdzKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoZGlydHlJbmRleCwgb3B0aW9ucykge1xuICAgIHZhciBjb250ZXh0ID0gb3B0aW9ucyAhPT0gbnVsbCAmJiBvcHRpb25zICE9PSB2b2lkIDAgJiYgb3B0aW9ucy5jb250ZXh0ID8gU3RyaW5nKG9wdGlvbnMuY29udGV4dCkgOiAnc3RhbmRhbG9uZSc7XG4gICAgdmFyIHZhbHVlc0FycmF5O1xuICAgIGlmIChjb250ZXh0ID09PSAnZm9ybWF0dGluZycgJiYgYXJncy5mb3JtYXR0aW5nVmFsdWVzKSB7XG4gICAgICB2YXIgZGVmYXVsdFdpZHRoID0gYXJncy5kZWZhdWx0Rm9ybWF0dGluZ1dpZHRoIHx8IGFyZ3MuZGVmYXVsdFdpZHRoO1xuICAgICAgdmFyIHdpZHRoID0gb3B0aW9ucyAhPT0gbnVsbCAmJiBvcHRpb25zICE9PSB2b2lkIDAgJiYgb3B0aW9ucy53aWR0aCA/IFN0cmluZyhvcHRpb25zLndpZHRoKSA6IGRlZmF1bHRXaWR0aDtcbiAgICAgIHZhbHVlc0FycmF5ID0gYXJncy5mb3JtYXR0aW5nVmFsdWVzW3dpZHRoXSB8fCBhcmdzLmZvcm1hdHRpbmdWYWx1ZXNbZGVmYXVsdFdpZHRoXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIF9kZWZhdWx0V2lkdGggPSBhcmdzLmRlZmF1bHRXaWR0aDtcbiAgICAgIHZhciBfd2lkdGggPSBvcHRpb25zICE9PSBudWxsICYmIG9wdGlvbnMgIT09IHZvaWQgMCAmJiBvcHRpb25zLndpZHRoID8gU3RyaW5nKG9wdGlvbnMud2lkdGgpIDogYXJncy5kZWZhdWx0V2lkdGg7XG4gICAgICB2YWx1ZXNBcnJheSA9IGFyZ3MudmFsdWVzW193aWR0aF0gfHwgYXJncy52YWx1ZXNbX2RlZmF1bHRXaWR0aF07XG4gICAgfVxuICAgIHZhciBpbmRleCA9IGFyZ3MuYXJndW1lbnRDYWxsYmFjayA/IGFyZ3MuYXJndW1lbnRDYWxsYmFjayhkaXJ0eUluZGV4KSA6IGRpcnR5SW5kZXg7XG4gICAgLy8gQHRzLWlnbm9yZTogRm9yIHNvbWUgcmVhc29uIFR5cGVTY3JpcHQganVzdCBkb24ndCB3YW50IHRvIG1hdGNoIGl0LCBubyBtYXR0ZXIgaG93IGhhcmQgd2UgdHJ5LiBJIGNoYWxsZW5nZSB5b3UgdG8gdHJ5IHRvIHJlbW92ZSBpdCFcbiAgICByZXR1cm4gdmFsdWVzQXJyYXlbaW5kZXhdO1xuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGJ1aWxkTWF0Y2hGbihhcmdzKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICAgIHZhciB3aWR0aCA9IG9wdGlvbnMud2lkdGg7XG4gICAgdmFyIG1hdGNoUGF0dGVybiA9IHdpZHRoICYmIGFyZ3MubWF0Y2hQYXR0ZXJuc1t3aWR0aF0gfHwgYXJncy5tYXRjaFBhdHRlcm5zW2FyZ3MuZGVmYXVsdE1hdGNoV2lkdGhdO1xuICAgIHZhciBtYXRjaFJlc3VsdCA9IHN0cmluZy5tYXRjaChtYXRjaFBhdHRlcm4pO1xuICAgIGlmICghbWF0Y2hSZXN1bHQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgbWF0Y2hlZFN0cmluZyA9IG1hdGNoUmVzdWx0WzBdO1xuICAgIHZhciBwYXJzZVBhdHRlcm5zID0gd2lkdGggJiYgYXJncy5wYXJzZVBhdHRlcm5zW3dpZHRoXSB8fCBhcmdzLnBhcnNlUGF0dGVybnNbYXJncy5kZWZhdWx0UGFyc2VXaWR0aF07XG4gICAgdmFyIGtleSA9IEFycmF5LmlzQXJyYXkocGFyc2VQYXR0ZXJucykgPyBmaW5kSW5kZXgocGFyc2VQYXR0ZXJucywgZnVuY3Rpb24gKHBhdHRlcm4pIHtcbiAgICAgIHJldHVybiBwYXR0ZXJuLnRlc3QobWF0Y2hlZFN0cmluZyk7XG4gICAgfSkgOiBmaW5kS2V5KHBhcnNlUGF0dGVybnMsIGZ1bmN0aW9uIChwYXR0ZXJuKSB7XG4gICAgICByZXR1cm4gcGF0dGVybi50ZXN0KG1hdGNoZWRTdHJpbmcpO1xuICAgIH0pO1xuICAgIHZhciB2YWx1ZTtcbiAgICB2YWx1ZSA9IGFyZ3MudmFsdWVDYWxsYmFjayA/IGFyZ3MudmFsdWVDYWxsYmFjayhrZXkpIDoga2V5O1xuICAgIHZhbHVlID0gb3B0aW9ucy52YWx1ZUNhbGxiYWNrID8gb3B0aW9ucy52YWx1ZUNhbGxiYWNrKHZhbHVlKSA6IHZhbHVlO1xuICAgIHZhciByZXN0ID0gc3RyaW5nLnNsaWNlKG1hdGNoZWRTdHJpbmcubGVuZ3RoKTtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgcmVzdDogcmVzdFxuICAgIH07XG4gIH07XG59XG5mdW5jdGlvbiBmaW5kS2V5KG9iamVjdCwgcHJlZGljYXRlKSB7XG4gIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KGtleSkgJiYgcHJlZGljYXRlKG9iamVjdFtrZXldKSkge1xuICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbmZ1bmN0aW9uIGZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlKSB7XG4gIGZvciAodmFyIGtleSA9IDA7IGtleSA8IGFycmF5Lmxlbmd0aDsga2V5KyspIHtcbiAgICBpZiAocHJlZGljYXRlKGFycmF5W2tleV0pKSB7XG4gICAgICByZXR1cm4ga2V5O1xuICAgIH1cbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGJ1aWxkTWF0Y2hQYXR0ZXJuRm4oYXJncykge1xuICByZXR1cm4gZnVuY3Rpb24gKHN0cmluZykge1xuICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgICB2YXIgbWF0Y2hSZXN1bHQgPSBzdHJpbmcubWF0Y2goYXJncy5tYXRjaFBhdHRlcm4pO1xuICAgIGlmICghbWF0Y2hSZXN1bHQpIHJldHVybiBudWxsO1xuICAgIHZhciBtYXRjaGVkU3RyaW5nID0gbWF0Y2hSZXN1bHRbMF07XG4gICAgdmFyIHBhcnNlUmVzdWx0ID0gc3RyaW5nLm1hdGNoKGFyZ3MucGFyc2VQYXR0ZXJuKTtcbiAgICBpZiAoIXBhcnNlUmVzdWx0KSByZXR1cm4gbnVsbDtcbiAgICB2YXIgdmFsdWUgPSBhcmdzLnZhbHVlQ2FsbGJhY2sgPyBhcmdzLnZhbHVlQ2FsbGJhY2socGFyc2VSZXN1bHRbMF0pIDogcGFyc2VSZXN1bHRbMF07XG4gICAgdmFsdWUgPSBvcHRpb25zLnZhbHVlQ2FsbGJhY2sgPyBvcHRpb25zLnZhbHVlQ2FsbGJhY2sodmFsdWUpIDogdmFsdWU7XG4gICAgdmFyIHJlc3QgPSBzdHJpbmcuc2xpY2UobWF0Y2hlZFN0cmluZy5sZW5ndGgpO1xuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICByZXN0OiByZXN0XG4gICAgfTtcbiAgfTtcbn0iLCJ2YXIgZm9ybWF0RGlzdGFuY2VMb2NhbGUgPSB7XG4gIGxlc3NUaGFuWFNlY29uZHM6IHtcbiAgICBvbmU6ICdsZXNzIHRoYW4gYSBzZWNvbmQnLFxuICAgIG90aGVyOiAnbGVzcyB0aGFuIHt7Y291bnR9fSBzZWNvbmRzJ1xuICB9LFxuICB4U2Vjb25kczoge1xuICAgIG9uZTogJzEgc2Vjb25kJyxcbiAgICBvdGhlcjogJ3t7Y291bnR9fSBzZWNvbmRzJ1xuICB9LFxuICBoYWxmQU1pbnV0ZTogJ2hhbGYgYSBtaW51dGUnLFxuICBsZXNzVGhhblhNaW51dGVzOiB7XG4gICAgb25lOiAnbGVzcyB0aGFuIGEgbWludXRlJyxcbiAgICBvdGhlcjogJ2xlc3MgdGhhbiB7e2NvdW50fX0gbWludXRlcydcbiAgfSxcbiAgeE1pbnV0ZXM6IHtcbiAgICBvbmU6ICcxIG1pbnV0ZScsXG4gICAgb3RoZXI6ICd7e2NvdW50fX0gbWludXRlcydcbiAgfSxcbiAgYWJvdXRYSG91cnM6IHtcbiAgICBvbmU6ICdhYm91dCAxIGhvdXInLFxuICAgIG90aGVyOiAnYWJvdXQge3tjb3VudH19IGhvdXJzJ1xuICB9LFxuICB4SG91cnM6IHtcbiAgICBvbmU6ICcxIGhvdXInLFxuICAgIG90aGVyOiAne3tjb3VudH19IGhvdXJzJ1xuICB9LFxuICB4RGF5czoge1xuICAgIG9uZTogJzEgZGF5JyxcbiAgICBvdGhlcjogJ3t7Y291bnR9fSBkYXlzJ1xuICB9LFxuICBhYm91dFhXZWVrczoge1xuICAgIG9uZTogJ2Fib3V0IDEgd2VlaycsXG4gICAgb3RoZXI6ICdhYm91dCB7e2NvdW50fX0gd2Vla3MnXG4gIH0sXG4gIHhXZWVrczoge1xuICAgIG9uZTogJzEgd2VlaycsXG4gICAgb3RoZXI6ICd7e2NvdW50fX0gd2Vla3MnXG4gIH0sXG4gIGFib3V0WE1vbnRoczoge1xuICAgIG9uZTogJ2Fib3V0IDEgbW9udGgnLFxuICAgIG90aGVyOiAnYWJvdXQge3tjb3VudH19IG1vbnRocydcbiAgfSxcbiAgeE1vbnRoczoge1xuICAgIG9uZTogJzEgbW9udGgnLFxuICAgIG90aGVyOiAne3tjb3VudH19IG1vbnRocydcbiAgfSxcbiAgYWJvdXRYWWVhcnM6IHtcbiAgICBvbmU6ICdhYm91dCAxIHllYXInLFxuICAgIG90aGVyOiAnYWJvdXQge3tjb3VudH19IHllYXJzJ1xuICB9LFxuICB4WWVhcnM6IHtcbiAgICBvbmU6ICcxIHllYXInLFxuICAgIG90aGVyOiAne3tjb3VudH19IHllYXJzJ1xuICB9LFxuICBvdmVyWFllYXJzOiB7XG4gICAgb25lOiAnb3ZlciAxIHllYXInLFxuICAgIG90aGVyOiAnb3ZlciB7e2NvdW50fX0geWVhcnMnXG4gIH0sXG4gIGFsbW9zdFhZZWFyczoge1xuICAgIG9uZTogJ2FsbW9zdCAxIHllYXInLFxuICAgIG90aGVyOiAnYWxtb3N0IHt7Y291bnR9fSB5ZWFycydcbiAgfVxufTtcbnZhciBmb3JtYXREaXN0YW5jZSA9IGZ1bmN0aW9uIGZvcm1hdERpc3RhbmNlKHRva2VuLCBjb3VudCwgb3B0aW9ucykge1xuICB2YXIgcmVzdWx0O1xuICB2YXIgdG9rZW5WYWx1ZSA9IGZvcm1hdERpc3RhbmNlTG9jYWxlW3Rva2VuXTtcbiAgaWYgKHR5cGVvZiB0b2tlblZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJlc3VsdCA9IHRva2VuVmFsdWU7XG4gIH0gZWxzZSBpZiAoY291bnQgPT09IDEpIHtcbiAgICByZXN1bHQgPSB0b2tlblZhbHVlLm9uZTtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgPSB0b2tlblZhbHVlLm90aGVyLnJlcGxhY2UoJ3t7Y291bnR9fScsIGNvdW50LnRvU3RyaW5nKCkpO1xuICB9XG4gIGlmIChvcHRpb25zICE9PSBudWxsICYmIG9wdGlvbnMgIT09IHZvaWQgMCAmJiBvcHRpb25zLmFkZFN1ZmZpeCkge1xuICAgIGlmIChvcHRpb25zLmNvbXBhcmlzb24gJiYgb3B0aW9ucy5jb21wYXJpc29uID4gMCkge1xuICAgICAgcmV0dXJuICdpbiAnICsgcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgJyBhZ28nO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZvcm1hdERpc3RhbmNlOyIsImltcG9ydCBidWlsZEZvcm1hdExvbmdGbiBmcm9tIFwiLi4vLi4vLi4vX2xpYi9idWlsZEZvcm1hdExvbmdGbi9pbmRleC5qc1wiO1xudmFyIGRhdGVGb3JtYXRzID0ge1xuICBmdWxsOiAnRUVFRSwgTU1NTSBkbywgeScsXG4gIGxvbmc6ICdNTU1NIGRvLCB5JyxcbiAgbWVkaXVtOiAnTU1NIGQsIHknLFxuICBzaG9ydDogJ01NL2RkL3l5eXknXG59O1xudmFyIHRpbWVGb3JtYXRzID0ge1xuICBmdWxsOiAnaDptbTpzcyBhIHp6enonLFxuICBsb25nOiAnaDptbTpzcyBhIHonLFxuICBtZWRpdW06ICdoOm1tOnNzIGEnLFxuICBzaG9ydDogJ2g6bW0gYSdcbn07XG52YXIgZGF0ZVRpbWVGb3JtYXRzID0ge1xuICBmdWxsOiBcInt7ZGF0ZX19ICdhdCcge3t0aW1lfX1cIixcbiAgbG9uZzogXCJ7e2RhdGV9fSAnYXQnIHt7dGltZX19XCIsXG4gIG1lZGl1bTogJ3t7ZGF0ZX19LCB7e3RpbWV9fScsXG4gIHNob3J0OiAne3tkYXRlfX0sIHt7dGltZX19J1xufTtcbnZhciBmb3JtYXRMb25nID0ge1xuICBkYXRlOiBidWlsZEZvcm1hdExvbmdGbih7XG4gICAgZm9ybWF0czogZGF0ZUZvcm1hdHMsXG4gICAgZGVmYXVsdFdpZHRoOiAnZnVsbCdcbiAgfSksXG4gIHRpbWU6IGJ1aWxkRm9ybWF0TG9uZ0ZuKHtcbiAgICBmb3JtYXRzOiB0aW1lRm9ybWF0cyxcbiAgICBkZWZhdWx0V2lkdGg6ICdmdWxsJ1xuICB9KSxcbiAgZGF0ZVRpbWU6IGJ1aWxkRm9ybWF0TG9uZ0ZuKHtcbiAgICBmb3JtYXRzOiBkYXRlVGltZUZvcm1hdHMsXG4gICAgZGVmYXVsdFdpZHRoOiAnZnVsbCdcbiAgfSlcbn07XG5leHBvcnQgZGVmYXVsdCBmb3JtYXRMb25nOyIsInZhciBmb3JtYXRSZWxhdGl2ZUxvY2FsZSA9IHtcbiAgbGFzdFdlZWs6IFwiJ2xhc3QnIGVlZWUgJ2F0JyBwXCIsXG4gIHllc3RlcmRheTogXCIneWVzdGVyZGF5IGF0JyBwXCIsXG4gIHRvZGF5OiBcIid0b2RheSBhdCcgcFwiLFxuICB0b21vcnJvdzogXCIndG9tb3Jyb3cgYXQnIHBcIixcbiAgbmV4dFdlZWs6IFwiZWVlZSAnYXQnIHBcIixcbiAgb3RoZXI6ICdQJ1xufTtcbnZhciBmb3JtYXRSZWxhdGl2ZSA9IGZ1bmN0aW9uIGZvcm1hdFJlbGF0aXZlKHRva2VuLCBfZGF0ZSwgX2Jhc2VEYXRlLCBfb3B0aW9ucykge1xuICByZXR1cm4gZm9ybWF0UmVsYXRpdmVMb2NhbGVbdG9rZW5dO1xufTtcbmV4cG9ydCBkZWZhdWx0IGZvcm1hdFJlbGF0aXZlOyIsImltcG9ydCBidWlsZExvY2FsaXplRm4gZnJvbSBcIi4uLy4uLy4uL19saWIvYnVpbGRMb2NhbGl6ZUZuL2luZGV4LmpzXCI7XG52YXIgZXJhVmFsdWVzID0ge1xuICBuYXJyb3c6IFsnQicsICdBJ10sXG4gIGFiYnJldmlhdGVkOiBbJ0JDJywgJ0FEJ10sXG4gIHdpZGU6IFsnQmVmb3JlIENocmlzdCcsICdBbm5vIERvbWluaSddXG59O1xudmFyIHF1YXJ0ZXJWYWx1ZXMgPSB7XG4gIG5hcnJvdzogWycxJywgJzInLCAnMycsICc0J10sXG4gIGFiYnJldmlhdGVkOiBbJ1ExJywgJ1EyJywgJ1EzJywgJ1E0J10sXG4gIHdpZGU6IFsnMXN0IHF1YXJ0ZXInLCAnMm5kIHF1YXJ0ZXInLCAnM3JkIHF1YXJ0ZXInLCAnNHRoIHF1YXJ0ZXInXVxufTtcblxuLy8gTm90ZTogaW4gRW5nbGlzaCwgdGhlIG5hbWVzIG9mIGRheXMgb2YgdGhlIHdlZWsgYW5kIG1vbnRocyBhcmUgY2FwaXRhbGl6ZWQuXG4vLyBJZiB5b3UgYXJlIG1ha2luZyBhIG5ldyBsb2NhbGUgYmFzZWQgb24gdGhpcyBvbmUsIGNoZWNrIGlmIHRoZSBzYW1lIGlzIHRydWUgZm9yIHRoZSBsYW5ndWFnZSB5b3UncmUgd29ya2luZyBvbi5cbi8vIEdlbmVyYWxseSwgZm9ybWF0dGVkIGRhdGVzIHNob3VsZCBsb29rIGxpa2UgdGhleSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhIHNlbnRlbmNlLFxuLy8gZS5nLiBpbiBTcGFuaXNoIGxhbmd1YWdlIHRoZSB3ZWVrZGF5cyBhbmQgbW9udGhzIHNob3VsZCBiZSBpbiB0aGUgbG93ZXJjYXNlLlxudmFyIG1vbnRoVmFsdWVzID0ge1xuICBuYXJyb3c6IFsnSicsICdGJywgJ00nLCAnQScsICdNJywgJ0onLCAnSicsICdBJywgJ1MnLCAnTycsICdOJywgJ0QnXSxcbiAgYWJicmV2aWF0ZWQ6IFsnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLCAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXSxcbiAgd2lkZTogWydKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJywgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ11cbn07XG52YXIgZGF5VmFsdWVzID0ge1xuICBuYXJyb3c6IFsnUycsICdNJywgJ1QnLCAnVycsICdUJywgJ0YnLCAnUyddLFxuICBzaG9ydDogWydTdScsICdNbycsICdUdScsICdXZScsICdUaCcsICdGcicsICdTYSddLFxuICBhYmJyZXZpYXRlZDogWydTdW4nLCAnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnXSxcbiAgd2lkZTogWydTdW5kYXknLCAnTW9uZGF5JywgJ1R1ZXNkYXknLCAnV2VkbmVzZGF5JywgJ1RodXJzZGF5JywgJ0ZyaWRheScsICdTYXR1cmRheSddXG59O1xudmFyIGRheVBlcmlvZFZhbHVlcyA9IHtcbiAgbmFycm93OiB7XG4gICAgYW06ICdhJyxcbiAgICBwbTogJ3AnLFxuICAgIG1pZG5pZ2h0OiAnbWknLFxuICAgIG5vb246ICduJyxcbiAgICBtb3JuaW5nOiAnbW9ybmluZycsXG4gICAgYWZ0ZXJub29uOiAnYWZ0ZXJub29uJyxcbiAgICBldmVuaW5nOiAnZXZlbmluZycsXG4gICAgbmlnaHQ6ICduaWdodCdcbiAgfSxcbiAgYWJicmV2aWF0ZWQ6IHtcbiAgICBhbTogJ0FNJyxcbiAgICBwbTogJ1BNJyxcbiAgICBtaWRuaWdodDogJ21pZG5pZ2h0JyxcbiAgICBub29uOiAnbm9vbicsXG4gICAgbW9ybmluZzogJ21vcm5pbmcnLFxuICAgIGFmdGVybm9vbjogJ2FmdGVybm9vbicsXG4gICAgZXZlbmluZzogJ2V2ZW5pbmcnLFxuICAgIG5pZ2h0OiAnbmlnaHQnXG4gIH0sXG4gIHdpZGU6IHtcbiAgICBhbTogJ2EubS4nLFxuICAgIHBtOiAncC5tLicsXG4gICAgbWlkbmlnaHQ6ICdtaWRuaWdodCcsXG4gICAgbm9vbjogJ25vb24nLFxuICAgIG1vcm5pbmc6ICdtb3JuaW5nJyxcbiAgICBhZnRlcm5vb246ICdhZnRlcm5vb24nLFxuICAgIGV2ZW5pbmc6ICdldmVuaW5nJyxcbiAgICBuaWdodDogJ25pZ2h0J1xuICB9XG59O1xudmFyIGZvcm1hdHRpbmdEYXlQZXJpb2RWYWx1ZXMgPSB7XG4gIG5hcnJvdzoge1xuICAgIGFtOiAnYScsXG4gICAgcG06ICdwJyxcbiAgICBtaWRuaWdodDogJ21pJyxcbiAgICBub29uOiAnbicsXG4gICAgbW9ybmluZzogJ2luIHRoZSBtb3JuaW5nJyxcbiAgICBhZnRlcm5vb246ICdpbiB0aGUgYWZ0ZXJub29uJyxcbiAgICBldmVuaW5nOiAnaW4gdGhlIGV2ZW5pbmcnLFxuICAgIG5pZ2h0OiAnYXQgbmlnaHQnXG4gIH0sXG4gIGFiYnJldmlhdGVkOiB7XG4gICAgYW06ICdBTScsXG4gICAgcG06ICdQTScsXG4gICAgbWlkbmlnaHQ6ICdtaWRuaWdodCcsXG4gICAgbm9vbjogJ25vb24nLFxuICAgIG1vcm5pbmc6ICdpbiB0aGUgbW9ybmluZycsXG4gICAgYWZ0ZXJub29uOiAnaW4gdGhlIGFmdGVybm9vbicsXG4gICAgZXZlbmluZzogJ2luIHRoZSBldmVuaW5nJyxcbiAgICBuaWdodDogJ2F0IG5pZ2h0J1xuICB9LFxuICB3aWRlOiB7XG4gICAgYW06ICdhLm0uJyxcbiAgICBwbTogJ3AubS4nLFxuICAgIG1pZG5pZ2h0OiAnbWlkbmlnaHQnLFxuICAgIG5vb246ICdub29uJyxcbiAgICBtb3JuaW5nOiAnaW4gdGhlIG1vcm5pbmcnLFxuICAgIGFmdGVybm9vbjogJ2luIHRoZSBhZnRlcm5vb24nLFxuICAgIGV2ZW5pbmc6ICdpbiB0aGUgZXZlbmluZycsXG4gICAgbmlnaHQ6ICdhdCBuaWdodCdcbiAgfVxufTtcbnZhciBvcmRpbmFsTnVtYmVyID0gZnVuY3Rpb24gb3JkaW5hbE51bWJlcihkaXJ0eU51bWJlciwgX29wdGlvbnMpIHtcbiAgdmFyIG51bWJlciA9IE51bWJlcihkaXJ0eU51bWJlcik7XG5cbiAgLy8gSWYgb3JkaW5hbCBudW1iZXJzIGRlcGVuZCBvbiBjb250ZXh0LCBmb3IgZXhhbXBsZSxcbiAgLy8gaWYgdGhleSBhcmUgZGlmZmVyZW50IGZvciBkaWZmZXJlbnQgZ3JhbW1hdGljYWwgZ2VuZGVycyxcbiAgLy8gdXNlIGBvcHRpb25zLnVuaXRgLlxuICAvL1xuICAvLyBgdW5pdGAgY2FuIGJlICd5ZWFyJywgJ3F1YXJ0ZXInLCAnbW9udGgnLCAnd2VlaycsICdkYXRlJywgJ2RheU9mWWVhcicsXG4gIC8vICdkYXknLCAnaG91cicsICdtaW51dGUnLCAnc2Vjb25kJy5cblxuICB2YXIgcmVtMTAwID0gbnVtYmVyICUgMTAwO1xuICBpZiAocmVtMTAwID4gMjAgfHwgcmVtMTAwIDwgMTApIHtcbiAgICBzd2l0Y2ggKHJlbTEwMCAlIDEwKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHJldHVybiBudW1iZXIgKyAnc3QnO1xuICAgICAgY2FzZSAyOlxuICAgICAgICByZXR1cm4gbnVtYmVyICsgJ25kJztcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgcmV0dXJuIG51bWJlciArICdyZCc7XG4gICAgfVxuICB9XG4gIHJldHVybiBudW1iZXIgKyAndGgnO1xufTtcbnZhciBsb2NhbGl6ZSA9IHtcbiAgb3JkaW5hbE51bWJlcjogb3JkaW5hbE51bWJlcixcbiAgZXJhOiBidWlsZExvY2FsaXplRm4oe1xuICAgIHZhbHVlczogZXJhVmFsdWVzLFxuICAgIGRlZmF1bHRXaWR0aDogJ3dpZGUnXG4gIH0pLFxuICBxdWFydGVyOiBidWlsZExvY2FsaXplRm4oe1xuICAgIHZhbHVlczogcXVhcnRlclZhbHVlcyxcbiAgICBkZWZhdWx0V2lkdGg6ICd3aWRlJyxcbiAgICBhcmd1bWVudENhbGxiYWNrOiBmdW5jdGlvbiBhcmd1bWVudENhbGxiYWNrKHF1YXJ0ZXIpIHtcbiAgICAgIHJldHVybiBxdWFydGVyIC0gMTtcbiAgICB9XG4gIH0pLFxuICBtb250aDogYnVpbGRMb2NhbGl6ZUZuKHtcbiAgICB2YWx1ZXM6IG1vbnRoVmFsdWVzLFxuICAgIGRlZmF1bHRXaWR0aDogJ3dpZGUnXG4gIH0pLFxuICBkYXk6IGJ1aWxkTG9jYWxpemVGbih7XG4gICAgdmFsdWVzOiBkYXlWYWx1ZXMsXG4gICAgZGVmYXVsdFdpZHRoOiAnd2lkZSdcbiAgfSksXG4gIGRheVBlcmlvZDogYnVpbGRMb2NhbGl6ZUZuKHtcbiAgICB2YWx1ZXM6IGRheVBlcmlvZFZhbHVlcyxcbiAgICBkZWZhdWx0V2lkdGg6ICd3aWRlJyxcbiAgICBmb3JtYXR0aW5nVmFsdWVzOiBmb3JtYXR0aW5nRGF5UGVyaW9kVmFsdWVzLFxuICAgIGRlZmF1bHRGb3JtYXR0aW5nV2lkdGg6ICd3aWRlJ1xuICB9KVxufTtcbmV4cG9ydCBkZWZhdWx0IGxvY2FsaXplOyIsImltcG9ydCBidWlsZE1hdGNoRm4gZnJvbSBcIi4uLy4uLy4uL19saWIvYnVpbGRNYXRjaEZuL2luZGV4LmpzXCI7XG5pbXBvcnQgYnVpbGRNYXRjaFBhdHRlcm5GbiBmcm9tIFwiLi4vLi4vLi4vX2xpYi9idWlsZE1hdGNoUGF0dGVybkZuL2luZGV4LmpzXCI7XG52YXIgbWF0Y2hPcmRpbmFsTnVtYmVyUGF0dGVybiA9IC9eKFxcZCspKHRofHN0fG5kfHJkKT8vaTtcbnZhciBwYXJzZU9yZGluYWxOdW1iZXJQYXR0ZXJuID0gL1xcZCsvaTtcbnZhciBtYXRjaEVyYVBhdHRlcm5zID0ge1xuICBuYXJyb3c6IC9eKGJ8YSkvaSxcbiAgYWJicmV2aWF0ZWQ6IC9eKGJcXC4/XFxzP2NcXC4/fGJcXC4/XFxzP2NcXC4/XFxzP2VcXC4/fGFcXC4/XFxzP2RcXC4/fGNcXC4/XFxzP2VcXC4/KS9pLFxuICB3aWRlOiAvXihiZWZvcmUgY2hyaXN0fGJlZm9yZSBjb21tb24gZXJhfGFubm8gZG9taW5pfGNvbW1vbiBlcmEpL2lcbn07XG52YXIgcGFyc2VFcmFQYXR0ZXJucyA9IHtcbiAgYW55OiBbL15iL2ksIC9eKGF8YykvaV1cbn07XG52YXIgbWF0Y2hRdWFydGVyUGF0dGVybnMgPSB7XG4gIG5hcnJvdzogL15bMTIzNF0vaSxcbiAgYWJicmV2aWF0ZWQ6IC9ecVsxMjM0XS9pLFxuICB3aWRlOiAvXlsxMjM0XSh0aHxzdHxuZHxyZCk/IHF1YXJ0ZXIvaVxufTtcbnZhciBwYXJzZVF1YXJ0ZXJQYXR0ZXJucyA9IHtcbiAgYW55OiBbLzEvaSwgLzIvaSwgLzMvaSwgLzQvaV1cbn07XG52YXIgbWF0Y2hNb250aFBhdHRlcm5zID0ge1xuICBuYXJyb3c6IC9eW2pmbWFzb25kXS9pLFxuICBhYmJyZXZpYXRlZDogL14oamFufGZlYnxtYXJ8YXByfG1heXxqdW58anVsfGF1Z3xzZXB8b2N0fG5vdnxkZWMpL2ksXG4gIHdpZGU6IC9eKGphbnVhcnl8ZmVicnVhcnl8bWFyY2h8YXByaWx8bWF5fGp1bmV8anVseXxhdWd1c3R8c2VwdGVtYmVyfG9jdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1iZXIpL2lcbn07XG52YXIgcGFyc2VNb250aFBhdHRlcm5zID0ge1xuICBuYXJyb3c6IFsvXmovaSwgL15mL2ksIC9ebS9pLCAvXmEvaSwgL15tL2ksIC9eai9pLCAvXmovaSwgL15hL2ksIC9ecy9pLCAvXm8vaSwgL15uL2ksIC9eZC9pXSxcbiAgYW55OiBbL15qYS9pLCAvXmYvaSwgL15tYXIvaSwgL15hcC9pLCAvXm1heS9pLCAvXmp1bi9pLCAvXmp1bC9pLCAvXmF1L2ksIC9ecy9pLCAvXm8vaSwgL15uL2ksIC9eZC9pXVxufTtcbnZhciBtYXRjaERheVBhdHRlcm5zID0ge1xuICBuYXJyb3c6IC9eW3NtdHdmXS9pLFxuICBzaG9ydDogL14oc3V8bW98dHV8d2V8dGh8ZnJ8c2EpL2ksXG4gIGFiYnJldmlhdGVkOiAvXihzdW58bW9ufHR1ZXx3ZWR8dGh1fGZyaXxzYXQpL2ksXG4gIHdpZGU6IC9eKHN1bmRheXxtb25kYXl8dHVlc2RheXx3ZWRuZXNkYXl8dGh1cnNkYXl8ZnJpZGF5fHNhdHVyZGF5KS9pXG59O1xudmFyIHBhcnNlRGF5UGF0dGVybnMgPSB7XG4gIG5hcnJvdzogWy9ecy9pLCAvXm0vaSwgL150L2ksIC9edy9pLCAvXnQvaSwgL15mL2ksIC9ecy9pXSxcbiAgYW55OiBbL15zdS9pLCAvXm0vaSwgL150dS9pLCAvXncvaSwgL150aC9pLCAvXmYvaSwgL15zYS9pXVxufTtcbnZhciBtYXRjaERheVBlcmlvZFBhdHRlcm5zID0ge1xuICBuYXJyb3c6IC9eKGF8cHxtaXxufChpbiB0aGV8YXQpIChtb3JuaW5nfGFmdGVybm9vbnxldmVuaW5nfG5pZ2h0KSkvaSxcbiAgYW55OiAvXihbYXBdXFwuP1xccz9tXFwuP3xtaWRuaWdodHxub29ufChpbiB0aGV8YXQpIChtb3JuaW5nfGFmdGVybm9vbnxldmVuaW5nfG5pZ2h0KSkvaVxufTtcbnZhciBwYXJzZURheVBlcmlvZFBhdHRlcm5zID0ge1xuICBhbnk6IHtcbiAgICBhbTogL15hL2ksXG4gICAgcG06IC9ecC9pLFxuICAgIG1pZG5pZ2h0OiAvXm1pL2ksXG4gICAgbm9vbjogL15uby9pLFxuICAgIG1vcm5pbmc6IC9tb3JuaW5nL2ksXG4gICAgYWZ0ZXJub29uOiAvYWZ0ZXJub29uL2ksXG4gICAgZXZlbmluZzogL2V2ZW5pbmcvaSxcbiAgICBuaWdodDogL25pZ2h0L2lcbiAgfVxufTtcbnZhciBtYXRjaCA9IHtcbiAgb3JkaW5hbE51bWJlcjogYnVpbGRNYXRjaFBhdHRlcm5Gbih7XG4gICAgbWF0Y2hQYXR0ZXJuOiBtYXRjaE9yZGluYWxOdW1iZXJQYXR0ZXJuLFxuICAgIHBhcnNlUGF0dGVybjogcGFyc2VPcmRpbmFsTnVtYmVyUGF0dGVybixcbiAgICB2YWx1ZUNhbGxiYWNrOiBmdW5jdGlvbiB2YWx1ZUNhbGxiYWNrKHZhbHVlKSB7XG4gICAgICByZXR1cm4gcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgICB9XG4gIH0pLFxuICBlcmE6IGJ1aWxkTWF0Y2hGbih7XG4gICAgbWF0Y2hQYXR0ZXJuczogbWF0Y2hFcmFQYXR0ZXJucyxcbiAgICBkZWZhdWx0TWF0Y2hXaWR0aDogJ3dpZGUnLFxuICAgIHBhcnNlUGF0dGVybnM6IHBhcnNlRXJhUGF0dGVybnMsXG4gICAgZGVmYXVsdFBhcnNlV2lkdGg6ICdhbnknXG4gIH0pLFxuICBxdWFydGVyOiBidWlsZE1hdGNoRm4oe1xuICAgIG1hdGNoUGF0dGVybnM6IG1hdGNoUXVhcnRlclBhdHRlcm5zLFxuICAgIGRlZmF1bHRNYXRjaFdpZHRoOiAnd2lkZScsXG4gICAgcGFyc2VQYXR0ZXJuczogcGFyc2VRdWFydGVyUGF0dGVybnMsXG4gICAgZGVmYXVsdFBhcnNlV2lkdGg6ICdhbnknLFxuICAgIHZhbHVlQ2FsbGJhY2s6IGZ1bmN0aW9uIHZhbHVlQ2FsbGJhY2soaW5kZXgpIHtcbiAgICAgIHJldHVybiBpbmRleCArIDE7XG4gICAgfVxuICB9KSxcbiAgbW9udGg6IGJ1aWxkTWF0Y2hGbih7XG4gICAgbWF0Y2hQYXR0ZXJuczogbWF0Y2hNb250aFBhdHRlcm5zLFxuICAgIGRlZmF1bHRNYXRjaFdpZHRoOiAnd2lkZScsXG4gICAgcGFyc2VQYXR0ZXJuczogcGFyc2VNb250aFBhdHRlcm5zLFxuICAgIGRlZmF1bHRQYXJzZVdpZHRoOiAnYW55J1xuICB9KSxcbiAgZGF5OiBidWlsZE1hdGNoRm4oe1xuICAgIG1hdGNoUGF0dGVybnM6IG1hdGNoRGF5UGF0dGVybnMsXG4gICAgZGVmYXVsdE1hdGNoV2lkdGg6ICd3aWRlJyxcbiAgICBwYXJzZVBhdHRlcm5zOiBwYXJzZURheVBhdHRlcm5zLFxuICAgIGRlZmF1bHRQYXJzZVdpZHRoOiAnYW55J1xuICB9KSxcbiAgZGF5UGVyaW9kOiBidWlsZE1hdGNoRm4oe1xuICAgIG1hdGNoUGF0dGVybnM6IG1hdGNoRGF5UGVyaW9kUGF0dGVybnMsXG4gICAgZGVmYXVsdE1hdGNoV2lkdGg6ICdhbnknLFxuICAgIHBhcnNlUGF0dGVybnM6IHBhcnNlRGF5UGVyaW9kUGF0dGVybnMsXG4gICAgZGVmYXVsdFBhcnNlV2lkdGg6ICdhbnknXG4gIH0pXG59O1xuZXhwb3J0IGRlZmF1bHQgbWF0Y2g7IiwiaW1wb3J0IGZvcm1hdERpc3RhbmNlIGZyb20gXCIuL19saWIvZm9ybWF0RGlzdGFuY2UvaW5kZXguanNcIjtcbmltcG9ydCBmb3JtYXRMb25nIGZyb20gXCIuL19saWIvZm9ybWF0TG9uZy9pbmRleC5qc1wiO1xuaW1wb3J0IGZvcm1hdFJlbGF0aXZlIGZyb20gXCIuL19saWIvZm9ybWF0UmVsYXRpdmUvaW5kZXguanNcIjtcbmltcG9ydCBsb2NhbGl6ZSBmcm9tIFwiLi9fbGliL2xvY2FsaXplL2luZGV4LmpzXCI7XG5pbXBvcnQgbWF0Y2ggZnJvbSBcIi4vX2xpYi9tYXRjaC9pbmRleC5qc1wiO1xuLyoqXG4gKiBAdHlwZSB7TG9jYWxlfVxuICogQGNhdGVnb3J5IExvY2FsZXNcbiAqIEBzdW1tYXJ5IEVuZ2xpc2ggbG9jYWxlIChVbml0ZWQgU3RhdGVzKS5cbiAqIEBsYW5ndWFnZSBFbmdsaXNoXG4gKiBAaXNvLTYzOS0yIGVuZ1xuICogQGF1dGhvciBTYXNoYSBLb3NzIFtAa29zc25vY29ycF17QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2tvc3Nub2NvcnB9XG4gKiBAYXV0aG9yIExlc2hhIEtvc3MgW0BsZXNoYWtvc3Nde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9sZXNoYWtvc3N9XG4gKi9cbnZhciBsb2NhbGUgPSB7XG4gIGNvZGU6ICdlbi1VUycsXG4gIGZvcm1hdERpc3RhbmNlOiBmb3JtYXREaXN0YW5jZSxcbiAgZm9ybWF0TG9uZzogZm9ybWF0TG9uZyxcbiAgZm9ybWF0UmVsYXRpdmU6IGZvcm1hdFJlbGF0aXZlLFxuICBsb2NhbGl6ZTogbG9jYWxpemUsXG4gIG1hdGNoOiBtYXRjaCxcbiAgb3B0aW9uczoge1xuICAgIHdlZWtTdGFydHNPbjogMCAvKiBTdW5kYXkgKi8sXG4gICAgZmlyc3RXZWVrQ29udGFpbnNEYXRlOiAxXG4gIH1cbn07XG5leHBvcnQgZGVmYXVsdCBsb2NhbGU7IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZlwiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBtYXhcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBsYXRlc3Qgb2YgdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBsYXRlc3Qgb2YgdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBwYXJhbSB7RGF0ZVtdfE51bWJlcltdfSBkYXRlc0FycmF5IC0gdGhlIGRhdGVzIHRvIGNvbXBhcmVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbGF0ZXN0IG9mIHRoZSBkYXRlc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIG9mIHRoZXNlIGRhdGVzIGlzIHRoZSBsYXRlc3Q/XG4gKiBjb25zdCByZXN1bHQgPSBtYXgoW1xuICogICBuZXcgRGF0ZSgxOTg5LCA2LCAxMCksXG4gKiAgIG5ldyBEYXRlKDE5ODcsIDEsIDExKSxcbiAqICAgbmV3IERhdGUoMTk5NSwgNiwgMiksXG4gKiAgIG5ldyBEYXRlKDE5OTAsIDAsIDEpXG4gKiBdKVxuICogLy89PiBTdW4gSnVsIDAyIDE5OTUgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWF4KGRpcnR5RGF0ZXNBcnJheSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVzQXJyYXk7XG4gIC8vIGBkaXJ0eURhdGVzQXJyYXlgIGlzIEFycmF5LCBTZXQgb3IgTWFwLCBvciBvYmplY3Qgd2l0aCBjdXN0b20gYGZvckVhY2hgIG1ldGhvZFxuICBpZiAoZGlydHlEYXRlc0FycmF5ICYmIHR5cGVvZiBkaXJ0eURhdGVzQXJyYXkuZm9yRWFjaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRhdGVzQXJyYXkgPSBkaXJ0eURhdGVzQXJyYXk7XG5cbiAgICAvLyBJZiBgZGlydHlEYXRlc0FycmF5YCBpcyBBcnJheS1saWtlIE9iamVjdCwgY29udmVydCB0byBBcnJheS5cbiAgfSBlbHNlIGlmIChfdHlwZW9mKGRpcnR5RGF0ZXNBcnJheSkgPT09ICdvYmplY3QnICYmIGRpcnR5RGF0ZXNBcnJheSAhPT0gbnVsbCkge1xuICAgIGRhdGVzQXJyYXkgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkaXJ0eURhdGVzQXJyYXkpO1xuICB9IGVsc2Uge1xuICAgIC8vIGBkaXJ0eURhdGVzQXJyYXlgIGlzIG5vbi1pdGVyYWJsZSwgcmV0dXJuIEludmFsaWQgRGF0ZVxuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG4gIHZhciByZXN1bHQ7XG4gIGRhdGVzQXJyYXkuZm9yRWFjaChmdW5jdGlvbiAoZGlydHlEYXRlKSB7XG4gICAgdmFyIGN1cnJlbnREYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkIHx8IHJlc3VsdCA8IGN1cnJlbnREYXRlIHx8IGlzTmFOKE51bWJlcihjdXJyZW50RGF0ZSkpKSB7XG4gICAgICByZXN1bHQgPSBjdXJyZW50RGF0ZTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0IHx8IG5ldyBEYXRlKE5hTik7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8vIExlYXAgeWVhciBvY2N1cmVzIGV2ZXJ5IDQgeWVhcnMsIGV4Y2VwdCBmb3IgeWVhcnMgdGhhdCBhcmUgZGl2aXNhYmxlIGJ5IDEwMCBhbmQgbm90IGRpdmlzYWJsZSBieSA0MDAuXG4vLyAxIG1lYW4geWVhciA9ICgzNjUrMS80LTEvMTAwKzEvNDAwKSBkYXlzID0gMzY1LjI0MjUgZGF5c1xudmFyIGRheXNJblllYXIgPSAzNjUuMjQyNTtcblxuLyoqXG4gKiBAbmFtZSBtaWxsaXNlY29uZHNcbiAqIEBjYXRlZ29yeSBNaWxsaXNlY29uZCBIZWxwZXJzXG4gKiBAc3VtbWFyeVxuICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiB0aGUgc3BlY2lmaWVkLCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMgYW5kIHNlY29uZHMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGluIHRoZSBzcGVjaWZpZWQsIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3VycywgbWludXRlcyBhbmQgc2Vjb25kcy5cbiAqXG4gKiBPbmUgeWVhcnMgZXF1YWxzIDM2NS4yNDI1IGRheXMgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOlxuICpcbiAqID4gTGVhcCB5ZWFyIG9jY3VyZXMgZXZlcnkgNCB5ZWFycywgZXhjZXB0IGZvciB5ZWFycyB0aGF0IGFyZSBkaXZpc2FibGUgYnkgMTAwIGFuZCBub3QgZGl2aXNhYmxlIGJ5IDQwMC5cbiAqID4gMSBtZWFuIHllYXIgPSAoMzY1KzEvNC0xLzEwMCsxLzQwMCkgZGF5cyA9IDM2NS4yNDI1IGRheXNcbiAqXG4gKiBPbmUgbW9udGggaXMgYSB5ZWFyIGRpdmlkZWQgYnkgMTIuXG4gKlxuICogQHBhcmFtIHtEdXJhdGlvbn0gZHVyYXRpb24gLSB0aGUgb2JqZWN0IHdpdGggeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMsIGhvdXJzLCBtaW51dGVzIGFuZCBzZWNvbmRzIHRvIGJlIGFkZGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbWlsbGlzZWNvbmRzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gMSB5ZWFyIGluIG1pbGxpc2Vjb25kc1xuICogbWlsbGlzZWNvbmRzKHsgeWVhcnM6IDEgfSlcbiAqIC8vPT4gMzE1NTY5NTIwMDBcbiAqXG4gKiAvLyAzIG1vbnRocyBpbiBtaWxsaXNlY29uZHNcbiAqIG1pbGxpc2Vjb25kcyh7IG1vbnRoczogMyB9KVxuICogLy89PiA3ODg5MjM4MDAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1pbGxpc2Vjb25kcyhfcmVmKSB7XG4gIHZhciB5ZWFycyA9IF9yZWYueWVhcnMsXG4gICAgbW9udGhzID0gX3JlZi5tb250aHMsXG4gICAgd2Vla3MgPSBfcmVmLndlZWtzLFxuICAgIGRheXMgPSBfcmVmLmRheXMsXG4gICAgaG91cnMgPSBfcmVmLmhvdXJzLFxuICAgIG1pbnV0ZXMgPSBfcmVmLm1pbnV0ZXMsXG4gICAgc2Vjb25kcyA9IF9yZWYuc2Vjb25kcztcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciB0b3RhbERheXMgPSAwO1xuICBpZiAoeWVhcnMpIHRvdGFsRGF5cyArPSB5ZWFycyAqIGRheXNJblllYXI7XG4gIGlmIChtb250aHMpIHRvdGFsRGF5cyArPSBtb250aHMgKiAoZGF5c0luWWVhciAvIDEyKTtcbiAgaWYgKHdlZWtzKSB0b3RhbERheXMgKz0gd2Vla3MgKiA3O1xuICBpZiAoZGF5cykgdG90YWxEYXlzICs9IGRheXM7XG4gIHZhciB0b3RhbFNlY29uZHMgPSB0b3RhbERheXMgKiAyNCAqIDYwICogNjA7XG4gIGlmIChob3VycykgdG90YWxTZWNvbmRzICs9IGhvdXJzICogNjAgKiA2MDtcbiAgaWYgKG1pbnV0ZXMpIHRvdGFsU2Vjb25kcyArPSBtaW51dGVzICogNjA7XG4gIGlmIChzZWNvbmRzKSB0b3RhbFNlY29uZHMgKz0gc2Vjb25kcztcbiAgcmV0dXJuIE1hdGgucm91bmQodG90YWxTZWNvbmRzICogMTAwMCk7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IG1pbGxpc2Vjb25kc0luSG91ciB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbWlsbGlzZWNvbmRzVG9Ib3Vyc1xuICogQGNhdGVnb3J5IENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCBtaWxsaXNlY29uZHMgdG8gaG91cnMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBhIGZ1bGwgbnVtYmVyIG9mIGhvdXJzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBtaWxsaXNlY29uZHMgLSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGJlIGNvbnZlcnRlZFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGNvbnZlcnRlZCBpbiBob3Vyc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgNzIwMDAwMCBtaWxsaXNlY29uZHMgdG8gaG91cnM6XG4gKiBjb25zdCByZXN1bHQgPSBtaWxsaXNlY29uZHNUb0hvdXJzKDcyMDAwMDApXG4gKiAvLz0+IDJcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXQgdXNlcyBmbG9vciByb3VuZGluZzpcbiAqIGNvbnN0IHJlc3VsdCA9IG1pbGxpc2Vjb25kc1RvSG91cnMoNzE5OTk5OSlcbiAqIC8vPT4gMVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtaWxsaXNlY29uZHNUb0hvdXJzKG1pbGxpc2Vjb25kcykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGhvdXJzID0gbWlsbGlzZWNvbmRzIC8gbWlsbGlzZWNvbmRzSW5Ib3VyO1xuICByZXR1cm4gTWF0aC5mbG9vcihob3Vycyk7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IG1pbGxpc2Vjb25kc0luTWludXRlIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBtaWxsaXNlY29uZHNUb01pbnV0ZXNcbiAqIEBjYXRlZ29yeSBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgbWlsbGlzZWNvbmRzIHRvIG1pbnV0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBhIGZ1bGwgbnVtYmVyIG9mIG1pbnV0ZXMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IG1pbGxpc2Vjb25kcyAtIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gYmUgY29udmVydGVkLlxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGNvbnZlcnRlZCBpbiBtaW51dGVzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCA2MDAwMCBtaWxsaXNlY29uZHMgdG8gbWludXRlczpcbiAqIGNvbnN0IHJlc3VsdCA9IG1pbGxpc2Vjb25kc1RvTWludXRlcyg2MDAwMClcbiAqIC8vPT4gMVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJdCB1c2VzIGZsb29yIHJvdW5kaW5nOlxuICogY29uc3QgcmVzdWx0ID0gbWlsbGlzZWNvbmRzVG9NaW51dGVzKDExOTk5OSlcbiAqIC8vPT4gMVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtaWxsaXNlY29uZHNUb01pbnV0ZXMobWlsbGlzZWNvbmRzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgbWludXRlcyA9IG1pbGxpc2Vjb25kcyAvIG1pbGxpc2Vjb25kc0luTWludXRlO1xuICByZXR1cm4gTWF0aC5mbG9vcihtaW51dGVzKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5TZWNvbmQgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc1RvU2Vjb25kc1xuICogQGNhdGVnb3J5IENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCBtaWxsaXNlY29uZHMgdG8gc2Vjb25kcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGEgZnVsbCBudW1iZXIgb2Ygc2Vjb25kcy5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gbWlsbGlzZWNvbmRzIC0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBiZSBjb252ZXJ0ZWRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBjb252ZXJ0ZWQgaW4gc2Vjb25kc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgMTAwMCBtaWxpc2Vjb25kcyB0byBzZWNvbmRzOlxuICogY29uc3QgcmVzdWx0ID0gbWlsbGlzZWNvbmRzVG9TZWNvbmRzKDEwMDApXG4gKiAvLz0+IDFcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXQgdXNlcyBmbG9vciByb3VuZGluZzpcbiAqIGNvbnN0IHJlc3VsdCA9IG1pbGxpc2Vjb25kc1RvU2Vjb25kcygxOTk5KVxuICogLy89PiAxXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1pbGxpc2Vjb25kc1RvU2Vjb25kcyhtaWxsaXNlY29uZHMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBzZWNvbmRzID0gbWlsbGlzZWNvbmRzIC8gbWlsbGlzZWNvbmRzSW5TZWNvbmQ7XG4gIHJldHVybiBNYXRoLmZsb29yKHNlY29uZHMpO1xufSIsImltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2ZcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbWluXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybnMgdGhlIGVhcmxpZXN0IG9mIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybnMgdGhlIGVhcmxpZXN0IG9mIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAcGFyYW0ge0RhdGVbXXxOdW1iZXJbXX0gZGF0ZXNBcnJheSAtIHRoZSBkYXRlcyB0byBjb21wYXJlXG4gKiBAcmV0dXJucyB7RGF0ZX0gLSB0aGUgZWFybGllc3Qgb2YgdGhlIGRhdGVzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggb2YgdGhlc2UgZGF0ZXMgaXMgdGhlIGVhcmxpZXN0P1xuICogY29uc3QgcmVzdWx0ID0gbWluKFtcbiAqICAgbmV3IERhdGUoMTk4OSwgNiwgMTApLFxuICogICBuZXcgRGF0ZSgxOTg3LCAxLCAxMSksXG4gKiAgIG5ldyBEYXRlKDE5OTUsIDYsIDIpLFxuICogICBuZXcgRGF0ZSgxOTkwLCAwLCAxKVxuICogXSlcbiAqIC8vPT4gV2VkIEZlYiAxMSAxOTg3IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1pbihkaXJ0eURhdGVzQXJyYXkpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlc0FycmF5O1xuICAvLyBgZGlydHlEYXRlc0FycmF5YCBpcyBBcnJheSwgU2V0IG9yIE1hcCwgb3Igb2JqZWN0IHdpdGggY3VzdG9tIGBmb3JFYWNoYCBtZXRob2RcbiAgaWYgKGRpcnR5RGF0ZXNBcnJheSAmJiB0eXBlb2YgZGlydHlEYXRlc0FycmF5LmZvckVhY2ggPT09ICdmdW5jdGlvbicpIHtcbiAgICBkYXRlc0FycmF5ID0gZGlydHlEYXRlc0FycmF5O1xuICAgIC8vIElmIGBkaXJ0eURhdGVzQXJyYXlgIGlzIEFycmF5LWxpa2UgT2JqZWN0LCBjb252ZXJ0IHRvIEFycmF5LlxuICB9IGVsc2UgaWYgKF90eXBlb2YoZGlydHlEYXRlc0FycmF5KSA9PT0gJ29iamVjdCcgJiYgZGlydHlEYXRlc0FycmF5ICE9PSBudWxsKSB7XG4gICAgZGF0ZXNBcnJheSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGRpcnR5RGF0ZXNBcnJheSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gYGRpcnR5RGF0ZXNBcnJheWAgaXMgbm9uLWl0ZXJhYmxlLCByZXR1cm4gSW52YWxpZCBEYXRlXG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbiAgdmFyIHJlc3VsdDtcbiAgZGF0ZXNBcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChkaXJ0eURhdGUpIHtcbiAgICB2YXIgY3VycmVudERhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQgfHwgcmVzdWx0ID4gY3VycmVudERhdGUgfHwgaXNOYU4oY3VycmVudERhdGUuZ2V0RGF0ZSgpKSkge1xuICAgICAgcmVzdWx0ID0gY3VycmVudERhdGU7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdCB8fCBuZXcgRGF0ZShOYU4pO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBtaW51dGVzSW5Ib3VyIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBtaW51dGVzVG9Ib3Vyc1xuICogQGNhdGVnb3J5IENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCBtaW51dGVzIHRvIGhvdXJzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiBtaW51dGVzIHRvIGEgZnVsbCBudW1iZXIgb2YgaG91cnMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IG1pbnV0ZXMgLSBudW1iZXIgb2YgbWludXRlcyB0byBiZSBjb252ZXJ0ZWRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIG1pbnV0ZXMgY29udmVydGVkIGluIGhvdXJzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCAxNDAgbWludXRlcyB0byBob3VyczpcbiAqIGNvbnN0IHJlc3VsdCA9IG1pbnV0ZXNUb0hvdXJzKDEyMClcbiAqIC8vPT4gMlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJdCB1c2VzIGZsb29yIHJvdW5kaW5nOlxuICogY29uc3QgcmVzdWx0ID0gbWludXRlc1RvSG91cnMoMTc5KVxuICogLy89PiAyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1pbnV0ZXNUb0hvdXJzKG1pbnV0ZXMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBob3VycyA9IG1pbnV0ZXMgLyBtaW51dGVzSW5Ib3VyO1xuICByZXR1cm4gTWF0aC5mbG9vcihob3Vycyk7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IG1pbGxpc2Vjb25kc0luTWludXRlIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBtaW51dGVzVG9NaWxsaXNlY29uZHNcbiAqIEBjYXRlZ29yeSBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgbWludXRlcyB0byBtaWxsaXNlY29uZHMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgbnVtYmVyIG9mIG1pbnV0ZXMgdG8gYSBmdWxsIG51bWJlciBvZiBtaWxsaXNlY29uZHMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IG1pbnV0ZXMgLSBudW1iZXIgb2YgbWludXRlcyB0byBiZSBjb252ZXJ0ZWRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIG1pbnV0ZXMgY29udmVydGVkIGluIG1pbGxpc2Vjb25kc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgMiBtaW51dGVzIHRvIG1pbGxpc2Vjb25kc1xuICogY29uc3QgcmVzdWx0ID0gbWludXRlc1RvTWlsbGlzZWNvbmRzKDIpXG4gKiAvLz0+IDEyMDAwMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtaW51dGVzVG9NaWxsaXNlY29uZHMobWludXRlcykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIE1hdGguZmxvb3IobWludXRlcyAqIG1pbGxpc2Vjb25kc0luTWludXRlKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgc2Vjb25kc0luTWludXRlIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBtaW51dGVzVG9TZWNvbmRzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IG1pbnV0ZXMgdG8gc2Vjb25kcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2YgbWludXRlcyB0byBhIGZ1bGwgbnVtYmVyIG9mIHNlY29uZHMuXG4gKlxuICogQHBhcmFtIHsgbnVtYmVyIH0gbWludXRlcyAtIG51bWJlciBvZiBtaW51dGVzIHRvIGJlIGNvbnZlcnRlZFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBudW1iZXIgb2YgbWludXRlcyBjb252ZXJ0ZWQgaW4gc2Vjb25kc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgMiBtaW51dGVzIHRvIHNlY29uZHNcbiAqIGNvbnN0IHJlc3VsdCA9IG1pbnV0ZXNUb1NlY29uZHMoMilcbiAqIC8vPT4gMTIwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1pbnV0ZXNUb1NlY29uZHMobWludXRlcykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIE1hdGguZmxvb3IobWludXRlcyAqIHNlY29uZHNJbk1pbnV0ZSk7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IG1vbnRoc0luUXVhcnRlciB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbW9udGhzVG9RdWFydGVyc1xuICogQGNhdGVnb3J5IENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCBudW1iZXIgb2YgbW9udGhzIHRvIHF1YXJ0ZXJzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiBtb250aHMgdG8gYSBmdWxsIG51bWJlciBvZiBxdWFydGVycy5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gbW9udGhzIC0gbnVtYmVyIG9mIG1vbnRocyB0byBiZSBjb252ZXJ0ZWQuXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBtb250aHMgY29udmVydGVkIGluIHF1YXJ0ZXJzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCA2IG1vbnRocyB0byBxdWFydGVyczpcbiAqIGNvbnN0IHJlc3VsdCA9IG1vbnRoc1RvUXVhcnRlcnMoNilcbiAqIC8vPT4gMlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJdCB1c2VzIGZsb29yIHJvdW5kaW5nOlxuICogY29uc3QgcmVzdWx0ID0gbW9udGhzVG9RdWFydGVycyg3KVxuICogLy89PiAyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1vbnRoc1RvUXVhcnRlcnMobW9udGhzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgcXVhcnRlcnMgPSBtb250aHMgLyBtb250aHNJblF1YXJ0ZXI7XG4gIHJldHVybiBNYXRoLmZsb29yKHF1YXJ0ZXJzKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgbW9udGhzSW5ZZWFyIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBtb250aHNUb1llYXJzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IG51bWJlciBvZiBtb250aHMgdG8geWVhcnMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgbnVtYmVyIG9mIG1vbnRocyB0byBhIGZ1bGwgbnVtYmVyIG9mIHllYXJzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBtb250aHMgLSBudW1iZXIgb2YgbW9udGhzIHRvIGJlIGNvbnZlcnRlZFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBudW1iZXIgb2YgbW9udGhzIGNvbnZlcnRlZCBpbiB5ZWFyc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgMzYgbW9udGhzIHRvIHllYXJzOlxuICogY29uc3QgcmVzdWx0ID0gbW9udGhzVG9ZZWFycygzNilcbiAqIC8vPT4gM1xuICpcbiAqIC8vIEl0IHVzZXMgZmxvb3Igcm91bmRpbmc6XG4gKiBjb25zdCByZXN1bHQgPSBtb250aHNUb1llYXJzKDQwKVxuICogLy89PiAzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1vbnRoc1RvWWVhcnMobW9udGhzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgeWVhcnMgPSBtb250aHMgLyBtb250aHNJblllYXI7XG4gIHJldHVybiBNYXRoLmZsb29yKHllYXJzKTtcbn0iLCJpbXBvcnQgYWRkRGF5cyBmcm9tIFwiLi4vYWRkRGF5cy9pbmRleC5qc1wiO1xuaW1wb3J0IGdldERheSBmcm9tIFwiLi4vZ2V0RGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBuZXh0RGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBXaGVuIGlzIHRoZSBuZXh0IGRheSBvZiB0aGUgd2Vlaz9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFdoZW4gaXMgdGhlIG5leHQgZGF5IG9mIHRoZSB3ZWVrPyAwLTYgdGhlIGRheSBvZiB0aGUgd2VlaywgMCByZXByZXNlbnRzIFN1bmRheS5cbiAqXG4gKiBAcGFyYW0ge0RhdGUgfCBudW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBjaGVja1xuICogQHBhcmFtIHtEYXl9IGRheSAtIGRheSBvZiB0aGUgd2Vla1xuICogQHJldHVybnMge0RhdGV9IC0gdGhlIGRhdGUgaXMgdGhlIG5leHQgZGF5IG9mIHdlZWtcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gLSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBuZXh0IE1vbmRheSBhZnRlciBNYXIsIDIwLCAyMDIwP1xuICogY29uc3QgcmVzdWx0ID0gbmV4dERheShuZXcgRGF0ZSgyMDIwLCAyLCAyMCksIDEpXG4gKiAvLz0+IE1vbiBNYXIgMjMgMjAyMCAwMDowMDowMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBuZXh0IFR1ZXNkYXkgYWZ0ZXIgTWFyLCAyMSwgMjAyMD9cbiAqIGNvbnN0IHJlc3VsdCA9IG5leHREYXkobmV3IERhdGUoMjAyMCwgMiwgMjEpLCAyKVxuICogLy89PiBUdWUgTWFyIDI0IDIwMjAgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbmV4dERheShkYXRlLCBkYXkpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkZWx0YSA9IGRheSAtIGdldERheShkYXRlKTtcbiAgaWYgKGRlbHRhIDw9IDApIGRlbHRhICs9IDc7XG4gIHJldHVybiBhZGREYXlzKGRhdGUsIGRlbHRhKTtcbn0iLCJpbXBvcnQgbmV4dERheSBmcm9tIFwiLi4vbmV4dERheS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbmV4dEZyaWRheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgV2hlbiBpcyB0aGUgbmV4dCBGcmlkYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBXaGVuIGlzIHRoZSBuZXh0IEZyaWRheT9cbiAqXG4gKiBAcGFyYW0ge0RhdGUgfCBudW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBzdGFydCBjb3VudGluZyBmcm9tXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5leHQgRnJpZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hlbiBpcyB0aGUgbmV4dCBGcmlkYXkgYWZ0ZXIgTWFyLCAyMiwgMjAyMD9cbiAqIGNvbnN0IHJlc3VsdCA9IG5leHRGcmlkYXkobmV3IERhdGUoMjAyMCwgMiwgMjIpKVxuICogLy89PiBGcmkgTWFyIDI3IDIwMjAgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbmV4dEZyaWRheShkYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gbmV4dERheShkYXRlLCA1KTtcbn0iLCJpbXBvcnQgbmV4dERheSBmcm9tIFwiLi4vbmV4dERheS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbmV4dE1vbmRheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgV2hlbiBpcyB0aGUgbmV4dCBNb25kYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBXaGVuIGlzIHRoZSBuZXh0IE1vbmRheT9cbiAqXG4gKiBAcGFyYW0ge0RhdGUgfCBudW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBzdGFydCBjb3VudGluZyBmcm9tXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5leHQgTW9uZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hlbiBpcyB0aGUgbmV4dCBNb25kYXkgYWZ0ZXIgTWFyLCAyMiwgMjAyMD9cbiAqIGNvbnN0IHJlc3VsdCA9IG5leHRNb25kYXkobmV3IERhdGUoMjAyMCwgMiwgMjIpKVxuICogLy89PiBNb24gTWFyIDIzIDIwMjAgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbmV4dE1vbmRheShkYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gbmV4dERheShkYXRlLCAxKTtcbn0iLCJpbXBvcnQgbmV4dERheSBmcm9tIFwiLi4vbmV4dERheS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbmV4dFNhdHVyZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBXaGVuIGlzIHRoZSBuZXh0IFNhdHVyZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogV2hlbiBpcyB0aGUgbmV4dCBTYXR1cmRheT9cbiAqXG4gKiBAcGFyYW0ge0RhdGUgfCBudW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBzdGFydCBjb3VudGluZyBmcm9tXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5leHQgU2F0dXJkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBuZXh0IFNhdHVyZGF5IGFmdGVyIE1hciwgMjIsIDIwMjA/XG4gKiBjb25zdCByZXN1bHQgPSBuZXh0U2F0dXJkYXkobmV3IERhdGUoMjAyMCwgMiwgMjIpKVxuICogLy89PiBTYXQgTWFyIDI4IDIwMjAgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbmV4dFNhdHVyZGF5KGRhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBuZXh0RGF5KGRhdGUsIDYpO1xufSIsImltcG9ydCBuZXh0RGF5IGZyb20gXCIuLi9uZXh0RGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBuZXh0U3VuZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBXaGVuIGlzIHRoZSBuZXh0IFN1bmRheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFdoZW4gaXMgdGhlIG5leHQgU3VuZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IG51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIHN0YXJ0IGNvdW50aW5nIGZyb21cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV4dCBTdW5kYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBuZXh0IFN1bmRheSBhZnRlciBNYXIsIDIyLCAyMDIwP1xuICogY29uc3QgcmVzdWx0ID0gbmV4dFN1bmRheShuZXcgRGF0ZSgyMDIwLCAyLCAyMikpXG4gKiAvLz0+IFN1biBNYXIgMjkgMjAyMCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBuZXh0U3VuZGF5KGRhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBuZXh0RGF5KGRhdGUsIDApO1xufSIsImltcG9ydCBuZXh0RGF5IGZyb20gXCIuLi9uZXh0RGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBuZXh0VGh1cnNkYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFdoZW4gaXMgdGhlIG5leHQgVGh1cnNkYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBXaGVuIGlzIHRoZSBuZXh0IFRodXJzZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IG51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIHN0YXJ0IGNvdW50aW5nIGZyb21cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV4dCBUaHVyc2RheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gaXMgdGhlIG5leHQgVGh1cnNkYXkgYWZ0ZXIgTWFyLCAyMiwgMjAyMD9cbiAqIGNvbnN0IHJlc3VsdCA9IG5leHRUaHVyc2RheShuZXcgRGF0ZSgyMDIwLCAyLCAyMikpXG4gKiAvLz0+IFRodXIgTWFyIDI2IDIwMjAgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbmV4dFRodXJzZGF5KGRhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBuZXh0RGF5KGRhdGUsIDQpO1xufSIsImltcG9ydCBuZXh0RGF5IGZyb20gXCIuLi9uZXh0RGF5L2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBuZXh0VHVlc2RheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgV2hlbiBpcyB0aGUgbmV4dCBUdWVzZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogV2hlbiBpcyB0aGUgbmV4dCBUdWVzZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IG51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIHN0YXJ0IGNvdW50aW5nIGZyb21cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV4dCBUdWVzZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hlbiBpcyB0aGUgbmV4dCBUdWVzZGF5IGFmdGVyIE1hciwgMjIsIDIwMjA/XG4gKiBjb25zdCByZXN1bHQgPSBuZXh0VHVlc2RheShuZXcgRGF0ZSgyMDIwLCAyLCAyMikpXG4gKiAvLz0+IFR1ZSBNYXIgMjQgMjAyMCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBuZXh0VHVlc2RheShkYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gbmV4dERheShkYXRlLCAyKTtcbn0iLCJpbXBvcnQgbmV4dERheSBmcm9tIFwiLi4vbmV4dERheS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgbmV4dFdlZG5lc2RheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgV2hlbiBpcyB0aGUgbmV4dCBXZWRuZXNkYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBXaGVuIGlzIHRoZSBuZXh0IFdlZG5lc2RheT9cbiAqXG4gKiBAcGFyYW0ge0RhdGUgfCBudW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBzdGFydCBjb3VudGluZyBmcm9tXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5leHQgV2VkbmVzZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hlbiBpcyB0aGUgbmV4dCBXZWRuZXNkYXkgYWZ0ZXIgTWFyLCAyMiwgMjAyMD9cbiAqIGNvbnN0IHJlc3VsdCA9IG5leHRXZWRuZXNkYXkobmV3IERhdGUoMjAyMCwgMiwgMjIpKVxuICogLy89PiBXZWQgTWFyIDI1IDIwMjAgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbmV4dFdlZG5lc2RheShkYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gbmV4dERheShkYXRlLCAzKTtcbn0iLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBWYWx1ZVNldHRlciB9IGZyb20gXCIuL1NldHRlci5qc1wiO1xuZXhwb3J0IHZhciBQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBQYXJzZXIoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFBhcnNlcik7XG4gICAgX2RlZmluZVByb3BlcnR5KHRoaXMsIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIHZvaWQgMCk7XG4gICAgX2RlZmluZVByb3BlcnR5KHRoaXMsIFwicHJpb3JpdHlcIiwgdm9pZCAwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkodGhpcywgXCJzdWJQcmlvcml0eVwiLCB2b2lkIDApO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhQYXJzZXIsIFt7XG4gICAga2V5OiBcInJ1blwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBydW4oZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoLCBvcHRpb25zKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdGhpcy5wYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gsIG9wdGlvbnMpO1xuICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzZXR0ZXI6IG5ldyBWYWx1ZVNldHRlcihyZXN1bHQudmFsdWUsIHRoaXMudmFsaWRhdGUsIHRoaXMuc2V0LCB0aGlzLnByaW9yaXR5LCB0aGlzLnN1YlByaW9yaXR5KSxcbiAgICAgICAgcmVzdDogcmVzdWx0LnJlc3RcbiAgICAgIH07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF91dGNEYXRlLCBfdmFsdWUsIF9vcHRpb25zKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFBhcnNlcjtcbn0oKTsiLCJpbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbnZhciBUSU1FWk9ORV9VTklUX1BSSU9SSVRZID0gMTA7XG5leHBvcnQgdmFyIFNldHRlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFNldHRlcigpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU2V0dGVyKTtcbiAgICBfZGVmaW5lUHJvcGVydHkodGhpcywgXCJwcmlvcml0eVwiLCB2b2lkIDApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInN1YlByaW9yaXR5XCIsIDApO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhTZXR0ZXIsIFt7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF91dGNEYXRlLCBfb3B0aW9ucykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBTZXR0ZXI7XG59KCk7XG5leHBvcnQgdmFyIFZhbHVlU2V0dGVyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfU2V0dGVyKSB7XG4gIF9pbmhlcml0cyhWYWx1ZVNldHRlciwgX1NldHRlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoVmFsdWVTZXR0ZXIpO1xuICBmdW5jdGlvbiBWYWx1ZVNldHRlcih2YWx1ZSwgdmFsaWRhdGVWYWx1ZSwgc2V0VmFsdWUsIHByaW9yaXR5LCBzdWJQcmlvcml0eSkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVmFsdWVTZXR0ZXIpO1xuICAgIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcyk7XG4gICAgX3RoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICBfdGhpcy52YWxpZGF0ZVZhbHVlID0gdmFsaWRhdGVWYWx1ZTtcbiAgICBfdGhpcy5zZXRWYWx1ZSA9IHNldFZhbHVlO1xuICAgIF90aGlzLnByaW9yaXR5ID0gcHJpb3JpdHk7XG4gICAgaWYgKHN1YlByaW9yaXR5KSB7XG4gICAgICBfdGhpcy5zdWJQcmlvcml0eSA9IHN1YlByaW9yaXR5O1xuICAgIH1cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKFZhbHVlU2V0dGVyLCBbe1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZSh1dGNEYXRlLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZVZhbHVlKHV0Y0RhdGUsIHRoaXMudmFsdWUsIG9wdGlvbnMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KHV0Y0RhdGUsIGZsYWdzLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXRWYWx1ZSh1dGNEYXRlLCBmbGFncywgdGhpcy52YWx1ZSwgb3B0aW9ucyk7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBWYWx1ZVNldHRlcjtcbn0oU2V0dGVyKTtcbmV4cG9ydCB2YXIgRGF0ZVRvU3lzdGVtVGltZXpvbmVTZXR0ZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9TZXR0ZXIyKSB7XG4gIF9pbmhlcml0cyhEYXRlVG9TeXN0ZW1UaW1lem9uZVNldHRlciwgX1NldHRlcjIpO1xuICB2YXIgX3N1cGVyMiA9IF9jcmVhdGVTdXBlcihEYXRlVG9TeXN0ZW1UaW1lem9uZVNldHRlcik7XG4gIGZ1bmN0aW9uIERhdGVUb1N5c3RlbVRpbWV6b25lU2V0dGVyKCkge1xuICAgIHZhciBfdGhpczI7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIERhdGVUb1N5c3RlbVRpbWV6b25lU2V0dGVyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzMiA9IF9zdXBlcjIuY2FsbC5hcHBseShfc3VwZXIyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcInByaW9yaXR5XCIsIFRJTUVaT05FX1VOSVRfUFJJT1JJVFkpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwic3ViUHJpb3JpdHlcIiwgLTEpO1xuICAgIHJldHVybiBfdGhpczI7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKERhdGVUb1N5c3RlbVRpbWV6b25lU2V0dGVyLCBbe1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIGZsYWdzKSB7XG4gICAgICBpZiAoZmxhZ3MudGltZXN0YW1wSXNTZXQpIHtcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgICB9XG4gICAgICB2YXIgY29udmVydGVkRGF0ZSA9IG5ldyBEYXRlKDApO1xuICAgICAgY29udmVydGVkRGF0ZS5zZXRGdWxsWWVhcihkYXRlLmdldFVUQ0Z1bGxZZWFyKCksIGRhdGUuZ2V0VVRDTW9udGgoKSwgZGF0ZS5nZXRVVENEYXRlKCkpO1xuICAgICAgY29udmVydGVkRGF0ZS5zZXRIb3VycyhkYXRlLmdldFVUQ0hvdXJzKCksIGRhdGUuZ2V0VVRDTWludXRlcygpLCBkYXRlLmdldFVUQ1NlY29uZHMoKSwgZGF0ZS5nZXRVVENNaWxsaXNlY29uZHMoKSk7XG4gICAgICByZXR1cm4gY29udmVydGVkRGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIERhdGVUb1N5c3RlbVRpbWV6b25lU2V0dGVyO1xufShTZXR0ZXIpOyIsImV4cG9ydCB2YXIgbnVtZXJpY1BhdHRlcm5zID0ge1xuICBtb250aDogL14oMVswLTJdfDA/XFxkKS8sXG4gIC8vIDAgdG8gMTJcbiAgZGF0ZTogL14oM1swLTFdfFswLTJdP1xcZCkvLFxuICAvLyAwIHRvIDMxXG4gIGRheU9mWWVhcjogL14oMzZbMC02XXwzWzAtNV1cXGR8WzAtMl0/XFxkP1xcZCkvLFxuICAvLyAwIHRvIDM2NlxuICB3ZWVrOiAvXig1WzAtM118WzAtNF0/XFxkKS8sXG4gIC8vIDAgdG8gNTNcbiAgaG91cjIzaDogL14oMlswLTNdfFswLTFdP1xcZCkvLFxuICAvLyAwIHRvIDIzXG4gIGhvdXIyNGg6IC9eKDJbMC00XXxbMC0xXT9cXGQpLyxcbiAgLy8gMCB0byAyNFxuICBob3VyMTFoOiAvXigxWzAtMV18MD9cXGQpLyxcbiAgLy8gMCB0byAxMVxuICBob3VyMTJoOiAvXigxWzAtMl18MD9cXGQpLyxcbiAgLy8gMCB0byAxMlxuICBtaW51dGU6IC9eWzAtNV0/XFxkLyxcbiAgLy8gMCB0byA1OVxuICBzZWNvbmQ6IC9eWzAtNV0/XFxkLyxcbiAgLy8gMCB0byA1OVxuXG4gIHNpbmdsZURpZ2l0OiAvXlxcZC8sXG4gIC8vIDAgdG8gOVxuICB0d29EaWdpdHM6IC9eXFxkezEsMn0vLFxuICAvLyAwIHRvIDk5XG4gIHRocmVlRGlnaXRzOiAvXlxcZHsxLDN9LyxcbiAgLy8gMCB0byA5OTlcbiAgZm91ckRpZ2l0czogL15cXGR7MSw0fS8sXG4gIC8vIDAgdG8gOTk5OVxuXG4gIGFueURpZ2l0c1NpZ25lZDogL14tP1xcZCsvLFxuICBzaW5nbGVEaWdpdFNpZ25lZDogL14tP1xcZC8sXG4gIC8vIDAgdG8gOSwgLTAgdG8gLTlcbiAgdHdvRGlnaXRzU2lnbmVkOiAvXi0/XFxkezEsMn0vLFxuICAvLyAwIHRvIDk5LCAtMCB0byAtOTlcbiAgdGhyZWVEaWdpdHNTaWduZWQ6IC9eLT9cXGR7MSwzfS8sXG4gIC8vIDAgdG8gOTk5LCAtMCB0byAtOTk5XG4gIGZvdXJEaWdpdHNTaWduZWQ6IC9eLT9cXGR7MSw0fS8gLy8gMCB0byA5OTk5LCAtMCB0byAtOTk5OVxufTtcblxuZXhwb3J0IHZhciB0aW1lem9uZVBhdHRlcm5zID0ge1xuICBiYXNpY09wdGlvbmFsTWludXRlczogL14oWystXSkoXFxkezJ9KShcXGR7Mn0pP3xaLyxcbiAgYmFzaWM6IC9eKFsrLV0pKFxcZHsyfSkoXFxkezJ9KXxaLyxcbiAgYmFzaWNPcHRpb25hbFNlY29uZHM6IC9eKFsrLV0pKFxcZHsyfSkoXFxkezJ9KSgoXFxkezJ9KSk/fFovLFxuICBleHRlbmRlZDogL14oWystXSkoXFxkezJ9KTooXFxkezJ9KXxaLyxcbiAgZXh0ZW5kZWRPcHRpb25hbFNlY29uZHM6IC9eKFsrLV0pKFxcZHsyfSk6KFxcZHsyfSkoOihcXGR7Mn0pKT98Wi9cbn07IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBkYXlQZXJpb2RFbnVtVG9Ib3VycyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBBTVBNTWlkbmlnaHRQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKEFNUE1NaWRuaWdodFBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoQU1QTU1pZG5pZ2h0UGFyc2VyKTtcbiAgZnVuY3Rpb24gQU1QTU1pZG5pZ2h0UGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQU1QTU1pZG5pZ2h0UGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgODApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydhJywgJ0InLCAnSCcsICdrJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKEFNUE1NaWRuaWdodFBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ2InOlxuICAgICAgICBjYXNlICdiYic6XG4gICAgICAgIGNhc2UgJ2JiYic6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgICAgY2FzZSAnYmJiYmInOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIGNhc2UgJ2JiYmInOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKGRheVBlcmlvZEVudW1Ub0hvdXJzKHZhbHVlKSwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIEFNUE1NaWRuaWdodFBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IGRheVBlcmlvZEVudW1Ub0hvdXJzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIEFNUE1QYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKEFNUE1QYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEFNUE1QYXJzZXIpO1xuICBmdW5jdGlvbiBBTVBNUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQU1QTVBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDgwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnYicsICdCJywgJ0gnLCAnaycsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhBTVBNUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnYSc6XG4gICAgICAgIGNhc2UgJ2FhJzpcbiAgICAgICAgY2FzZSAnYWFhJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgICBjYXNlICdhYWFhYSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgICAgY2FzZSAnYWFhYSc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoZGF5UGVyaW9kRW51bVRvSG91cnModmFsdWUpLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gQU1QTVBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IGlzTGVhcFllYXJJbmRleCwgcGFyc2VORGlnaXRzLCBwYXJzZU51bWVyaWNQYXR0ZXJuIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG52YXIgREFZU19JTl9NT05USCA9IFszMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXTtcbnZhciBEQVlTX0lOX01PTlRIX0xFQVBfWUVBUiA9IFszMSwgMjksIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXTtcblxuLy8gRGF5IG9mIHRoZSBtb250aFxuZXhwb3J0IHZhciBEYXRlUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhEYXRlUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihEYXRlUGFyc2VyKTtcbiAgZnVuY3Rpb24gRGF0ZVBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIERhdGVQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCA5MCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInN1YlByaW9yaXR5XCIsIDEpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydZJywgJ1InLCAncScsICdRJywgJ3cnLCAnSScsICdEJywgJ2knLCAnZScsICdjJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKERhdGVQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuZGF0ZSwgZGF0ZVN0cmluZyk7XG4gICAgICAgIGNhc2UgJ2RvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAnZGF0ZSdcbiAgICAgICAgICB9KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKGRhdGUsIHZhbHVlKSB7XG4gICAgICB2YXIgeWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICAgIHZhciBpc0xlYXBZZWFyID0gaXNMZWFwWWVhckluZGV4KHllYXIpO1xuICAgICAgdmFyIG1vbnRoID0gZGF0ZS5nZXRVVENNb250aCgpO1xuICAgICAgaWYgKGlzTGVhcFllYXIpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID49IDEgJiYgdmFsdWUgPD0gREFZU19JTl9NT05USF9MRUFQX1lFQVJbbW9udGhdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID49IDEgJiYgdmFsdWUgPD0gREFZU19JTl9NT05USFttb250aF07XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgZGF0ZS5zZXRVVENEYXRlKHZhbHVlKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIERhdGVQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU51bWVyaWNQYXR0ZXJuLCBwYXJzZU5EaWdpdHMsIGlzTGVhcFllYXJJbmRleCB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBEYXlPZlllYXJQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKERheU9mWWVhclBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoRGF5T2ZZZWFyUGFyc2VyKTtcbiAgZnVuY3Rpb24gRGF5T2ZZZWFyUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRGF5T2ZZZWFyUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgOTApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJzdWJwcmlvcml0eVwiLCAxKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnWScsICdSJywgJ3EnLCAnUScsICdNJywgJ0wnLCAndycsICdJJywgJ2QnLCAnRScsICdpJywgJ2UnLCAnYycsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhEYXlPZlllYXJQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgY2FzZSAnREQnOlxuICAgICAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5kYXlPZlllYXIsIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICdEbyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ2RhdGUnXG4gICAgICAgICAgfSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShkYXRlLCB2YWx1ZSkge1xuICAgICAgdmFyIHllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgICB2YXIgaXNMZWFwWWVhciA9IGlzTGVhcFllYXJJbmRleCh5ZWFyKTtcbiAgICAgIGlmIChpc0xlYXBZZWFyKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IDM2NjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IDM2NTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBkYXRlLnNldFVUQ01vbnRoKDAsIHZhbHVlKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIERheU9mWWVhclBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCBzZXRVVENEYXkgZnJvbSBcIi4uLy4uLy4uL19saWIvc2V0VVRDRGF5L2luZGV4LmpzXCI7IC8vIERheSBvZiB3ZWVrXG5leHBvcnQgdmFyIERheVBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoRGF5UGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihEYXlQYXJzZXIpO1xuICBmdW5jdGlvbiBEYXlQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBEYXlQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCA5MCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ0QnLCAnaScsICdlJywgJ2MnLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoRGF5UGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgLy8gVHVlXG4gICAgICAgIGNhc2UgJ0UnOlxuICAgICAgICBjYXNlICdFRSc6XG4gICAgICAgIGNhc2UgJ0VFRSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gVFxuICAgICAgICBjYXNlICdFRUVFRSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gVHVcbiAgICAgICAgY2FzZSAnRUVFRUVFJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnc2hvcnQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBUdWVzZGF5XG4gICAgICAgIGNhc2UgJ0VFRUUnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMCAmJiB2YWx1ZSA8PSA2O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgIGRhdGUgPSBzZXRVVENEYXkoZGF0ZSwgdmFsdWUsIG9wdGlvbnMpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gRGF5UGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgZGF5UGVyaW9kRW51bVRvSG91cnMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjsgLy8gaW4gdGhlIG1vcm5pbmcsIGluIHRoZSBhZnRlcm5vb24sIGluIHRoZSBldmVuaW5nLCBhdCBuaWdodFxuZXhwb3J0IHZhciBEYXlQZXJpb2RQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKERheVBlcmlvZFBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoRGF5UGVyaW9kUGFyc2VyKTtcbiAgZnVuY3Rpb24gRGF5UGVyaW9kUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRGF5UGVyaW9kUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgODApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydhJywgJ2InLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoRGF5UGVyaW9kUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnQic6XG4gICAgICAgIGNhc2UgJ0JCJzpcbiAgICAgICAgY2FzZSAnQkJCJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgICBjYXNlICdCQkJCQic6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgICAgY2FzZSAnQkJCQic6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoZGF5UGVyaW9kRW51bVRvSG91cnModmFsdWUpLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gRGF5UGVyaW9kUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuZXhwb3J0IHZhciBFcmFQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKEVyYVBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoRXJhUGFyc2VyKTtcbiAgZnVuY3Rpb24gRXJhUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRXJhUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTQwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnUicsICd1JywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKEVyYVBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIC8vIEFELCBCQ1xuICAgICAgICBjYXNlICdHJzpcbiAgICAgICAgY2FzZSAnR0cnOlxuICAgICAgICBjYXNlICdHR0cnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5lcmEoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCdcbiAgICAgICAgICB9KSB8fCBtYXRjaC5lcmEoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIEEsIEJcbiAgICAgICAgY2FzZSAnR0dHR0cnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5lcmEoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIEFubm8gRG9taW5pLCBCZWZvcmUgQ2hyaXN0XG4gICAgICAgIGNhc2UgJ0dHR0cnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXRjaC5lcmEoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICd3aWRlJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmVyYShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmVyYShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdydcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBmbGFncywgdmFsdWUpIHtcbiAgICAgIGZsYWdzLmVyYSA9IHZhbHVlO1xuICAgICAgZGF0ZS5zZXRVVENGdWxsWWVhcih2YWx1ZSwgMCwgMSk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBFcmFQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU5EaWdpdHNTaWduZWQgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgRXh0ZW5kZWRZZWFyUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhFeHRlbmRlZFllYXJQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEV4dGVuZGVkWWVhclBhcnNlcik7XG4gIGZ1bmN0aW9uIEV4dGVuZGVkWWVhclBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEV4dGVuZGVkWWVhclBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDEzMCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ0cnLCAneScsICdZJywgJ1InLCAndycsICdJJywgJ2knLCAnZScsICdjJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKEV4dGVuZGVkWWVhclBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4pIHtcbiAgICAgIGlmICh0b2tlbiA9PT0gJ3UnKSB7XG4gICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHNTaWduZWQoNCwgZGF0ZVN0cmluZyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFyc2VORGlnaXRzU2lnbmVkKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgZGF0ZS5zZXRVVENGdWxsWWVhcih2YWx1ZSwgMCwgMSk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBFeHRlbmRlZFllYXJQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBtYXBWYWx1ZSwgcGFyc2VORGlnaXRzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIEZyYWN0aW9uT2ZTZWNvbmRQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKEZyYWN0aW9uT2ZTZWNvbmRQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEZyYWN0aW9uT2ZTZWNvbmRQYXJzZXIpO1xuICBmdW5jdGlvbiBGcmFjdGlvbk9mU2Vjb25kUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRnJhY3Rpb25PZlNlY29uZFBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDMwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoRnJhY3Rpb25PZlNlY29uZFBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4pIHtcbiAgICAgIHZhciB2YWx1ZUNhbGxiYWNrID0gZnVuY3Rpb24gdmFsdWVDYWxsYmFjayh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcih2YWx1ZSAqIE1hdGgucG93KDEwLCAtdG9rZW4ubGVuZ3RoICsgMykpO1xuICAgICAgfTtcbiAgICAgIHJldHVybiBtYXBWYWx1ZShwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKSwgdmFsdWVDYWxsYmFjayk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgZGF0ZS5zZXRVVENNaWxsaXNlY29uZHModmFsdWUpO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBGcmFjdGlvbk9mU2Vjb25kUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbnVtZXJpY1BhdHRlcm5zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VOdW1lcmljUGF0dGVybiwgcGFyc2VORGlnaXRzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIEhvdXIwVG8xMVBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoSG91cjBUbzExUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihIb3VyMFRvMTFQYXJzZXIpO1xuICBmdW5jdGlvbiBIb3VyMFRvMTFQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBIb3VyMFRvMTFQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCA3MCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ2gnLCAnSCcsICdrJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKEhvdXIwVG8xMVBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ0snOlxuICAgICAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5ob3VyMTFoLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgY2FzZSAnS28nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICdob3VyJ1xuICAgICAgICAgIH0pO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMCAmJiB2YWx1ZSA8PSAxMTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICB2YXIgaXNQTSA9IGRhdGUuZ2V0VVRDSG91cnMoKSA+PSAxMjtcbiAgICAgIGlmIChpc1BNICYmIHZhbHVlIDwgMTIpIHtcbiAgICAgICAgZGF0ZS5zZXRVVENIb3Vycyh2YWx1ZSArIDEyLCAwLCAwLCAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGUuc2V0VVRDSG91cnModmFsdWUsIDAsIDAsIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBIb3VyMFRvMTFQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU51bWVyaWNQYXR0ZXJuLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgSG91cjB0bzIzUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhIb3VyMHRvMjNQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEhvdXIwdG8yM1BhcnNlcik7XG4gIGZ1bmN0aW9uIEhvdXIwdG8yM1BhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEhvdXIwdG8yM1BhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDcwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnYScsICdiJywgJ2gnLCAnSycsICdrJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKEhvdXIwdG8yM1BhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ0gnOlxuICAgICAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5ob3VyMjNoLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgY2FzZSAnSG8nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICdob3VyJ1xuICAgICAgICAgIH0pO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMCAmJiB2YWx1ZSA8PSAyMztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKHZhbHVlLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gSG91cjB0bzIzUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbnVtZXJpY1BhdHRlcm5zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VOdW1lcmljUGF0dGVybiwgcGFyc2VORGlnaXRzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIEhvdXIxVG8yNFBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoSG91cjFUbzI0UGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihIb3VyMVRvMjRQYXJzZXIpO1xuICBmdW5jdGlvbiBIb3VyMVRvMjRQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBIb3VyMVRvMjRQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCA3MCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ2EnLCAnYicsICdoJywgJ0gnLCAnSycsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhIb3VyMVRvMjRQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdrJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuaG91cjI0aCwgZGF0ZVN0cmluZyk7XG4gICAgICAgIGNhc2UgJ2tvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAnaG91cidcbiAgICAgICAgICB9KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDEgJiYgdmFsdWUgPD0gMjQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgdmFyIGhvdXJzID0gdmFsdWUgPD0gMjQgPyB2YWx1ZSAlIDI0IDogdmFsdWU7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKGhvdXJzLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gSG91cjFUbzI0UGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbnVtZXJpY1BhdHRlcm5zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VOdW1lcmljUGF0dGVybiwgcGFyc2VORGlnaXRzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIEhvdXIxdG8xMlBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoSG91cjF0bzEyUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihIb3VyMXRvMTJQYXJzZXIpO1xuICBmdW5jdGlvbiBIb3VyMXRvMTJQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBIb3VyMXRvMTJQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCA3MCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ0gnLCAnSycsICdrJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKEhvdXIxdG8xMlBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ2gnOlxuICAgICAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5ob3VyMTJoLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgY2FzZSAnaG8nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICdob3VyJ1xuICAgICAgICAgIH0pO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSAxMjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICB2YXIgaXNQTSA9IGRhdGUuZ2V0VVRDSG91cnMoKSA+PSAxMjtcbiAgICAgIGlmIChpc1BNICYmIHZhbHVlIDwgMTIpIHtcbiAgICAgICAgZGF0ZS5zZXRVVENIb3Vycyh2YWx1ZSArIDEyLCAwLCAwLCAwKTtcbiAgICAgIH0gZWxzZSBpZiAoIWlzUE0gJiYgdmFsdWUgPT09IDEyKSB7XG4gICAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRlLnNldFVUQ0hvdXJzKHZhbHVlLCAwLCAwLCAwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gSG91cjF0bzEyUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbWFwVmFsdWUsIHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuaW1wb3J0IHNldFVUQ0lTT0RheSBmcm9tIFwiLi4vLi4vLi4vX2xpYi9zZXRVVENJU09EYXkvaW5kZXguanNcIjsgLy8gSVNPIGRheSBvZiB3ZWVrXG5leHBvcnQgdmFyIElTT0RheVBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoSVNPRGF5UGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihJU09EYXlQYXJzZXIpO1xuICBmdW5jdGlvbiBJU09EYXlQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBJU09EYXlQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCA5MCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ3knLCAnWScsICd1JywgJ3EnLCAnUScsICdNJywgJ0wnLCAndycsICdkJywgJ0QnLCAnRScsICdlJywgJ2MnLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoSVNPRGF5UGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHZhciB2YWx1ZUNhbGxiYWNrID0gZnVuY3Rpb24gdmFsdWVDYWxsYmFjayh2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUgPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gNztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICAvLyAyXG4gICAgICAgIGNhc2UgJ2knOlxuICAgICAgICBjYXNlICdpaSc6XG4gICAgICAgICAgLy8gMDJcbiAgICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgICAgIC8vIDJuZFxuICAgICAgICBjYXNlICdpbyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ2RheSdcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gVHVlXG4gICAgICAgIGNhc2UgJ2lpaSc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIFRcbiAgICAgICAgY2FzZSAnaWlpaWknOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICAvLyBUdVxuICAgICAgICBjYXNlICdpaWlpaWknOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICAvLyBUdWVzZGF5XG4gICAgICAgIGNhc2UgJ2lpaWknOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDEgJiYgdmFsdWUgPD0gNztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBkYXRlID0gc2V0VVRDSVNPRGF5KGRhdGUsIHZhbHVlKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIElTT0RheVBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IHRpbWV6b25lUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBwYXJzZVRpbWV6b25lUGF0dGVybiB9IGZyb20gXCIuLi91dGlscy5qc1wiOyAvLyBUaW1lem9uZSAoSVNPLTg2MDEpXG5leHBvcnQgdmFyIElTT1RpbWV6b25lUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhJU09UaW1lem9uZVBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoSVNPVGltZXpvbmVQYXJzZXIpO1xuICBmdW5jdGlvbiBJU09UaW1lem9uZVBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIElTT1RpbWV6b25lUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWyd0JywgJ1QnLCAnWCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKElTT1RpbWV6b25lUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbikge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICd4JzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VUaW1lem9uZVBhdHRlcm4odGltZXpvbmVQYXR0ZXJucy5iYXNpY09wdGlvbmFsTWludXRlcywgZGF0ZVN0cmluZyk7XG4gICAgICAgIGNhc2UgJ3h4JzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VUaW1lem9uZVBhdHRlcm4odGltZXpvbmVQYXR0ZXJucy5iYXNpYywgZGF0ZVN0cmluZyk7XG4gICAgICAgIGNhc2UgJ3h4eHgnOlxuICAgICAgICAgIHJldHVybiBwYXJzZVRpbWV6b25lUGF0dGVybih0aW1lem9uZVBhdHRlcm5zLmJhc2ljT3B0aW9uYWxTZWNvbmRzLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgY2FzZSAneHh4eHgnOlxuICAgICAgICAgIHJldHVybiBwYXJzZVRpbWV6b25lUGF0dGVybih0aW1lem9uZVBhdHRlcm5zLmV4dGVuZGVkT3B0aW9uYWxTZWNvbmRzLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgY2FzZSAneHh4JzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gcGFyc2VUaW1lem9uZVBhdHRlcm4odGltZXpvbmVQYXR0ZXJucy5leHRlbmRlZCwgZGF0ZVN0cmluZyk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBpZiAoZmxhZ3MudGltZXN0YW1wSXNTZXQpIHtcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkgLSB2YWx1ZSk7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBJU09UaW1lem9uZVBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IHRpbWV6b25lUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBwYXJzZVRpbWV6b25lUGF0dGVybiB9IGZyb20gXCIuLi91dGlscy5qc1wiOyAvLyBUaW1lem9uZSAoSVNPLTg2MDEuICswMDowMCBpcyBgJ1onYClcbmV4cG9ydCB2YXIgSVNPVGltZXpvbmVXaXRoWlBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoSVNPVGltZXpvbmVXaXRoWlBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoSVNPVGltZXpvbmVXaXRoWlBhcnNlcik7XG4gIGZ1bmN0aW9uIElTT1RpbWV6b25lV2l0aFpQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBJU09UaW1lem9uZVdpdGhaUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWyd0JywgJ1QnLCAneCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKElTT1RpbWV6b25lV2l0aFpQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ1gnOlxuICAgICAgICAgIHJldHVybiBwYXJzZVRpbWV6b25lUGF0dGVybih0aW1lem9uZVBhdHRlcm5zLmJhc2ljT3B0aW9uYWxNaW51dGVzLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgY2FzZSAnWFgnOlxuICAgICAgICAgIHJldHVybiBwYXJzZVRpbWV6b25lUGF0dGVybih0aW1lem9uZVBhdHRlcm5zLmJhc2ljLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgY2FzZSAnWFhYWCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlVGltZXpvbmVQYXR0ZXJuKHRpbWV6b25lUGF0dGVybnMuYmFzaWNPcHRpb25hbFNlY29uZHMsIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICdYWFhYWCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlVGltZXpvbmVQYXR0ZXJuKHRpbWV6b25lUGF0dGVybnMuZXh0ZW5kZWRPcHRpb25hbFNlY29uZHMsIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICdYWFgnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZVRpbWV6b25lUGF0dGVybih0aW1lem9uZVBhdHRlcm5zLmV4dGVuZGVkLCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBmbGFncywgdmFsdWUpIHtcbiAgICAgIGlmIChmbGFncy50aW1lc3RhbXBJc1NldCkge1xuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSAtIHZhbHVlKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIElTT1RpbWV6b25lV2l0aFpQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU51bWVyaWNQYXR0ZXJuLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmltcG9ydCBzZXRVVENJU09XZWVrIGZyb20gXCIuLi8uLi8uLi9fbGliL3NldFVUQ0lTT1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mVVRDSVNPV2VlayBmcm9tIFwiLi4vLi4vLi4vX2xpYi9zdGFydE9mVVRDSVNPV2Vlay9pbmRleC5qc1wiOyAvLyBJU08gd2VlayBvZiB5ZWFyXG5leHBvcnQgdmFyIElTT1dlZWtQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKElTT1dlZWtQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKElTT1dlZWtQYXJzZXIpO1xuICBmdW5jdGlvbiBJU09XZWVrUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgSVNPV2Vla1BhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDEwMCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ3knLCAnWScsICd1JywgJ3EnLCAnUScsICdNJywgJ0wnLCAndycsICdkJywgJ0QnLCAnZScsICdjJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKElTT1dlZWtQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdJJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMud2VlaywgZGF0ZVN0cmluZyk7XG4gICAgICAgIGNhc2UgJ0lvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAnd2VlaydcbiAgICAgICAgICB9KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDEgJiYgdmFsdWUgPD0gNTM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHN0YXJ0T2ZVVENJU09XZWVrKHNldFVUQ0lTT1dlZWsoZGF0ZSwgdmFsdWUpKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIElTT1dlZWtQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU5EaWdpdHNTaWduZWQgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmltcG9ydCBzdGFydE9mVVRDSVNPV2VlayBmcm9tIFwiLi4vLi4vLi4vX2xpYi9zdGFydE9mVVRDSVNPV2Vlay9pbmRleC5qc1wiOyAvLyBJU08gd2Vlay1udW1iZXJpbmcgeWVhclxuZXhwb3J0IHZhciBJU09XZWVrWWVhclBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoSVNPV2Vla1llYXJQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKElTT1dlZWtZZWFyUGFyc2VyKTtcbiAgZnVuY3Rpb24gSVNPV2Vla1llYXJQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBJU09XZWVrWWVhclBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDEzMCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ0cnLCAneScsICdZJywgJ3UnLCAnUScsICdxJywgJ00nLCAnTCcsICd3JywgJ2QnLCAnRCcsICdlJywgJ2MnLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoSVNPV2Vla1llYXJQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuKSB7XG4gICAgICBpZiAodG9rZW4gPT09ICdSJykge1xuICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzU2lnbmVkKDQsIGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0c1NpZ25lZCh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KF9kYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICB2YXIgZmlyc3RXZWVrT2ZZZWFyID0gbmV3IERhdGUoMCk7XG4gICAgICBmaXJzdFdlZWtPZlllYXIuc2V0VVRDRnVsbFllYXIodmFsdWUsIDAsIDQpO1xuICAgICAgZmlyc3RXZWVrT2ZZZWFyLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIHN0YXJ0T2ZVVENJU09XZWVrKGZpcnN0V2Vla09mWWVhcik7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBJU09XZWVrWWVhclBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG1hcFZhbHVlLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmltcG9ydCBzZXRVVENEYXkgZnJvbSBcIi4uLy4uLy4uL19saWIvc2V0VVRDRGF5L2luZGV4LmpzXCI7IC8vIExvY2FsIGRheSBvZiB3ZWVrXG5leHBvcnQgdmFyIExvY2FsRGF5UGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhMb2NhbERheVBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoTG9jYWxEYXlQYXJzZXIpO1xuICBmdW5jdGlvbiBMb2NhbERheVBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIExvY2FsRGF5UGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgOTApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWyd5JywgJ1InLCAndScsICdxJywgJ1EnLCAnTScsICdMJywgJ0knLCAnZCcsICdEJywgJ0UnLCAnaScsICdjJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKExvY2FsRGF5UGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gsIG9wdGlvbnMpIHtcbiAgICAgIHZhciB2YWx1ZUNhbGxiYWNrID0gZnVuY3Rpb24gdmFsdWVDYWxsYmFjayh2YWx1ZSkge1xuICAgICAgICB2YXIgd2hvbGVXZWVrRGF5cyA9IE1hdGguZmxvb3IoKHZhbHVlIC0gMSkgLyA3KSAqIDc7XG4gICAgICAgIHJldHVybiAodmFsdWUgKyBvcHRpb25zLndlZWtTdGFydHNPbiArIDYpICUgNyArIHdob2xlV2Vla0RheXM7XG4gICAgICB9O1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICAvLyAzXG4gICAgICAgIGNhc2UgJ2UnOlxuICAgICAgICBjYXNlICdlZSc6XG4gICAgICAgICAgLy8gMDNcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUocGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICAvLyAzcmRcbiAgICAgICAgY2FzZSAnZW8nOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICdkYXknXG4gICAgICAgICAgfSksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICAvLyBUdWVcbiAgICAgICAgY2FzZSAnZWVlJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnc2hvcnQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBUXG4gICAgICAgIGNhc2UgJ2VlZWVlJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBUdVxuICAgICAgICBjYXNlICdlZWVlZWUnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIFR1ZXNkYXlcbiAgICAgICAgY2FzZSAnZWVlZSc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnc2hvcnQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDY7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgZGF0ZSA9IHNldFVUQ0RheShkYXRlLCB2YWx1ZSwgb3B0aW9ucyk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBMb2NhbERheVBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IHBhcnNlTnVtZXJpY1BhdHRlcm4sIHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuaW1wb3J0IHNldFVUQ1dlZWsgZnJvbSBcIi4uLy4uLy4uL19saWIvc2V0VVRDV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZVVENXZWVrIGZyb20gXCIuLi8uLi8uLi9fbGliL3N0YXJ0T2ZVVENXZWVrL2luZGV4LmpzXCI7IC8vIExvY2FsIHdlZWsgb2YgeWVhclxuZXhwb3J0IHZhciBMb2NhbFdlZWtQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKExvY2FsV2Vla1BhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoTG9jYWxXZWVrUGFyc2VyKTtcbiAgZnVuY3Rpb24gTG9jYWxXZWVrUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTG9jYWxXZWVrUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTAwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsneScsICdSJywgJ3UnLCAncScsICdRJywgJ00nLCAnTCcsICdJJywgJ2QnLCAnRCcsICdpJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKExvY2FsV2Vla1BhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy53ZWVrLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgY2FzZSAnd28nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICd3ZWVrJ1xuICAgICAgICAgIH0pO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSA1MztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gc3RhcnRPZlVUQ1dlZWsoc2V0VVRDV2VlayhkYXRlLCB2YWx1ZSwgb3B0aW9ucyksIG9wdGlvbnMpO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gTG9jYWxXZWVrUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgcGFyc2VORGlnaXRzLCBub3JtYWxpemVUd29EaWdpdFllYXIsIG1hcFZhbHVlIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgZ2V0VVRDV2Vla1llYXIgZnJvbSBcIi4uLy4uLy4uL19saWIvZ2V0VVRDV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mVVRDV2VlayBmcm9tIFwiLi4vLi4vLi4vX2xpYi9zdGFydE9mVVRDV2Vlay9pbmRleC5qc1wiO1xuLy8gTG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhclxuZXhwb3J0IHZhciBMb2NhbFdlZWtZZWFyUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhMb2NhbFdlZWtZZWFyUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihMb2NhbFdlZWtZZWFyUGFyc2VyKTtcbiAgZnVuY3Rpb24gTG9jYWxXZWVrWWVhclBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIExvY2FsV2Vla1llYXJQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCAxMzApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWyd5JywgJ1InLCAndScsICdRJywgJ3EnLCAnTScsICdMJywgJ0knLCAnZCcsICdEJywgJ2knLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoTG9jYWxXZWVrWWVhclBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICB2YXIgdmFsdWVDYWxsYmFjayA9IGZ1bmN0aW9uIHZhbHVlQ2FsbGJhY2soeWVhcikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHllYXI6IHllYXIsXG4gICAgICAgICAgaXNUd29EaWdpdFllYXI6IHRva2VuID09PSAnWVknXG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdZJzpcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUocGFyc2VORGlnaXRzKDQsIGRhdGVTdHJpbmcpLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgICAgY2FzZSAnWW8nOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICd5ZWFyJ1xuICAgICAgICAgIH0pLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUocGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5pc1R3b0RpZ2l0WWVhciB8fCB2YWx1ZS55ZWFyID4gMDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBmbGFncywgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgIHZhciBjdXJyZW50WWVhciA9IGdldFVUQ1dlZWtZZWFyKGRhdGUsIG9wdGlvbnMpO1xuICAgICAgaWYgKHZhbHVlLmlzVHdvRGlnaXRZZWFyKSB7XG4gICAgICAgIHZhciBub3JtYWxpemVkVHdvRGlnaXRZZWFyID0gbm9ybWFsaXplVHdvRGlnaXRZZWFyKHZhbHVlLnllYXIsIGN1cnJlbnRZZWFyKTtcbiAgICAgICAgZGF0ZS5zZXRVVENGdWxsWWVhcihub3JtYWxpemVkVHdvRGlnaXRZZWFyLCAwLCBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSk7XG4gICAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICAgIHJldHVybiBzdGFydE9mVVRDV2VlayhkYXRlLCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICAgIHZhciB5ZWFyID0gISgnZXJhJyBpbiBmbGFncykgfHwgZmxhZ3MuZXJhID09PSAxID8gdmFsdWUueWVhciA6IDEgLSB2YWx1ZS55ZWFyO1xuICAgICAgZGF0ZS5zZXRVVENGdWxsWWVhcih5ZWFyLCAwLCBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIHN0YXJ0T2ZVVENXZWVrKGRhdGUsIG9wdGlvbnMpO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gTG9jYWxXZWVrWWVhclBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IHBhcnNlTnVtZXJpY1BhdHRlcm4sIHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBNaW51dGVQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKE1pbnV0ZVBhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoTWludXRlUGFyc2VyKTtcbiAgZnVuY3Rpb24gTWludXRlUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTWludXRlUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgNjApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWyd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhNaW51dGVQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMubWludXRlLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgY2FzZSAnbW8nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICdtaW51dGUnXG4gICAgICAgICAgfSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDU5O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDTWludXRlcyh2YWx1ZSwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIE1pbnV0ZVBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IG1hcFZhbHVlLCBwYXJzZU5EaWdpdHMsIHBhcnNlTnVtZXJpY1BhdHRlcm4gfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmV4cG9ydCB2YXIgTW9udGhQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKE1vbnRoUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihNb250aFBhcnNlcik7XG4gIGZ1bmN0aW9uIE1vbnRoUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTW9udGhQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydZJywgJ1InLCAncScsICdRJywgJ0wnLCAndycsICdJJywgJ0QnLCAnaScsICdlJywgJ2MnLCAndCcsICdUJ10pO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCAxMTApO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoTW9udGhQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgdmFyIHZhbHVlQ2FsbGJhY2sgPSBmdW5jdGlvbiB2YWx1ZUNhbGxiYWNrKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSAtIDE7XG4gICAgICB9O1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICAvLyAxLCAyLCAuLi4sIDEyXG4gICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5tb250aCwgZGF0ZVN0cmluZyksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICAvLyAwMSwgMDIsIC4uLiwgMTJcbiAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShwYXJzZU5EaWdpdHMoMiwgZGF0ZVN0cmluZyksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICAvLyAxc3QsIDJuZCwgLi4uLCAxMnRoXG4gICAgICAgIGNhc2UgJ01vJzpcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUobWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAnbW9udGgnXG4gICAgICAgICAgfSksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICAvLyBKYW4sIEZlYiwgLi4uLCBEZWNcbiAgICAgICAgY2FzZSAnTU1NJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gubW9udGgoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gSiwgRiwgLi4uLCBEXG4gICAgICAgIGNhc2UgJ01NTU1NJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gubW9udGgoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIEphbnVhcnksIEZlYnJ1YXJ5LCAuLi4sIERlY2VtYmVyXG4gICAgICAgIGNhc2UgJ01NTU0nOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2gubW9udGgoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMCAmJiB2YWx1ZSA8PSAxMTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBkYXRlLnNldFVUQ01vbnRoKHZhbHVlLCAxKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIE1vbnRoUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgcGFyc2VORGlnaXRzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIFF1YXJ0ZXJQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKFF1YXJ0ZXJQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFF1YXJ0ZXJQYXJzZXIpO1xuICBmdW5jdGlvbiBRdWFydGVyUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUXVhcnRlclBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDEyMCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ1knLCAnUicsICdxJywgJ00nLCAnTCcsICd3JywgJ0knLCAnZCcsICdEJywgJ2knLCAnZScsICdjJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKFF1YXJ0ZXJQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICAvLyAxLCAyLCAzLCA0XG4gICAgICAgIGNhc2UgJ1EnOlxuICAgICAgICBjYXNlICdRUSc6XG4gICAgICAgICAgLy8gMDEsIDAyLCAwMywgMDRcbiAgICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgICAgIC8vIDFzdCwgMm5kLCAzcmQsIDR0aFxuICAgICAgICBjYXNlICdRbyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ3F1YXJ0ZXInXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIFExLCBRMiwgUTMsIFE0XG4gICAgICAgIGNhc2UgJ1FRUSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLnF1YXJ0ZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5xdWFydGVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyAxLCAyLCAzLCA0IChuYXJyb3cgcXVhcnRlcjsgY291bGQgYmUgbm90IG51bWVyaWNhbClcbiAgICAgICAgY2FzZSAnUVFRUVEnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5xdWFydGVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyAxc3QgcXVhcnRlciwgMm5kIHF1YXJ0ZXIsIC4uLlxuICAgICAgICBjYXNlICdRUVFRJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gucXVhcnRlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2gucXVhcnRlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLnF1YXJ0ZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDEgJiYgdmFsdWUgPD0gNDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBkYXRlLnNldFVUQ01vbnRoKCh2YWx1ZSAtIDEpICogMywgMSk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBRdWFydGVyUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbnVtZXJpY1BhdHRlcm5zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VOdW1lcmljUGF0dGVybiwgcGFyc2VORGlnaXRzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIFNlY29uZFBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoU2Vjb25kUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihTZWNvbmRQYXJzZXIpO1xuICBmdW5jdGlvbiBTZWNvbmRQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTZWNvbmRQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCA1MCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKFNlY29uZFBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5zZWNvbmQsIGRhdGVTdHJpbmcpO1xuICAgICAgICBjYXNlICdzbyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ3NlY29uZCdcbiAgICAgICAgICB9KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gNTk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgZGF0ZS5zZXRVVENTZWNvbmRzKHZhbHVlLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gU2Vjb25kUGFyc2VyO1xufShQYXJzZXIpOyIsImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNcIjtcbmltcG9ydCBfY3JlYXRlU3VwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZVN1cGVyXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbWFwVmFsdWUsIHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuaW1wb3J0IHNldFVUQ0RheSBmcm9tIFwiLi4vLi4vLi4vX2xpYi9zZXRVVENEYXkvaW5kZXguanNcIjsgLy8gU3RhbmQtYWxvbmUgbG9jYWwgZGF5IG9mIHdlZWtcbmV4cG9ydCB2YXIgU3RhbmRBbG9uZUxvY2FsRGF5UGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhTdGFuZEFsb25lTG9jYWxEYXlQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFN0YW5kQWxvbmVMb2NhbERheVBhcnNlcik7XG4gIGZ1bmN0aW9uIFN0YW5kQWxvbmVMb2NhbERheVBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFN0YW5kQWxvbmVMb2NhbERheVBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDkwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsneScsICdSJywgJ3UnLCAncScsICdRJywgJ00nLCAnTCcsICdJJywgJ2QnLCAnRCcsICdFJywgJ2knLCAnZScsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhTdGFuZEFsb25lTG9jYWxEYXlQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCwgb3B0aW9ucykge1xuICAgICAgdmFyIHZhbHVlQ2FsbGJhY2sgPSBmdW5jdGlvbiB2YWx1ZUNhbGxiYWNrKHZhbHVlKSB7XG4gICAgICAgIHZhciB3aG9sZVdlZWtEYXlzID0gTWF0aC5mbG9vcigodmFsdWUgLSAxKSAvIDcpICogNztcbiAgICAgICAgcmV0dXJuICh2YWx1ZSArIG9wdGlvbnMud2Vla1N0YXJ0c09uICsgNikgJSA3ICsgd2hvbGVXZWVrRGF5cztcbiAgICAgIH07XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIC8vIDNcbiAgICAgICAgY2FzZSAnYyc6XG4gICAgICAgIGNhc2UgJ2NjJzpcbiAgICAgICAgICAvLyAwM1xuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIDNyZFxuICAgICAgICBjYXNlICdjbyc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ2RheSdcbiAgICAgICAgICB9KSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIFR1ZVxuICAgICAgICBjYXNlICdjY2MnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIFRcbiAgICAgICAgY2FzZSAnY2NjY2MnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIFR1XG4gICAgICAgIGNhc2UgJ2NjY2NjYyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gVHVlc2RheVxuICAgICAgICBjYXNlICdjY2NjJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gNjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICBkYXRlID0gc2V0VVRDRGF5KGRhdGUsIHZhbHVlLCBvcHRpb25zKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFN0YW5kQWxvbmVMb2NhbERheVBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IHBhcnNlTnVtZXJpY1BhdHRlcm4sIHBhcnNlTkRpZ2l0cywgbWFwVmFsdWUgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgU3RhbmRBbG9uZU1vbnRoUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhTdGFuZEFsb25lTW9udGhQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFN0YW5kQWxvbmVNb250aFBhcnNlcik7XG4gIGZ1bmN0aW9uIFN0YW5kQWxvbmVNb250aFBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFN0YW5kQWxvbmVNb250aFBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDExMCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ1knLCAnUicsICdxJywgJ1EnLCAnTScsICd3JywgJ0knLCAnRCcsICdpJywgJ2UnLCAnYycsICd0JywgJ1QnXSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhTdGFuZEFsb25lTW9udGhQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgdmFyIHZhbHVlQ2FsbGJhY2sgPSBmdW5jdGlvbiB2YWx1ZUNhbGxiYWNrKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSAtIDE7XG4gICAgICB9O1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICAvLyAxLCAyLCAuLi4sIDEyXG4gICAgICAgIGNhc2UgJ0wnOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5tb250aCwgZGF0ZVN0cmluZyksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICAvLyAwMSwgMDIsIC4uLiwgMTJcbiAgICAgICAgY2FzZSAnTEwnOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShwYXJzZU5EaWdpdHMoMiwgZGF0ZVN0cmluZyksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICAvLyAxc3QsIDJuZCwgLi4uLCAxMnRoXG4gICAgICAgIGNhc2UgJ0xvJzpcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUobWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAnbW9udGgnXG4gICAgICAgICAgfSksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICAvLyBKYW4sIEZlYiwgLi4uLCBEZWNcbiAgICAgICAgY2FzZSAnTExMJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gubW9udGgoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KSB8fCBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gSiwgRiwgLi4uLCBEXG4gICAgICAgIGNhc2UgJ0xMTExMJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gubW9udGgoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIEphbnVhcnksIEZlYnJ1YXJ5LCAuLi4sIERlY2VtYmVyXG4gICAgICAgIGNhc2UgJ0xMTEwnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSkgfHwgbWF0Y2gubW9udGgoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KSB8fCBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMCAmJiB2YWx1ZSA8PSAxMTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBkYXRlLnNldFVUQ01vbnRoKHZhbHVlLCAxKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFN0YW5kQWxvbmVNb250aFBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBTdGFuZEFsb25lUXVhcnRlclBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoU3RhbmRBbG9uZVF1YXJ0ZXJQYXJzZXIsIF9QYXJzZXIpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFN0YW5kQWxvbmVRdWFydGVyUGFyc2VyKTtcbiAgZnVuY3Rpb24gU3RhbmRBbG9uZVF1YXJ0ZXJQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTdGFuZEFsb25lUXVhcnRlclBhcnNlcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDEyMCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ1knLCAnUicsICdRJywgJ00nLCAnTCcsICd3JywgJ0knLCAnZCcsICdEJywgJ2knLCAnZScsICdjJywgJ3QnLCAnVCddKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKFN0YW5kQWxvbmVRdWFydGVyUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgLy8gMSwgMiwgMywgNFxuICAgICAgICBjYXNlICdxJzpcbiAgICAgICAgY2FzZSAncXEnOlxuICAgICAgICAgIC8vIDAxLCAwMiwgMDMsIDA0XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgICAgICAvLyAxc3QsIDJuZCwgM3JkLCA0dGhcbiAgICAgICAgY2FzZSAncW8nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICdxdWFydGVyJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBRMSwgUTIsIFEzLCBRNFxuICAgICAgICBjYXNlICdxcXEnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5xdWFydGVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSkgfHwgbWF0Y2gucXVhcnRlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gMSwgMiwgMywgNCAobmFycm93IHF1YXJ0ZXI7IGNvdWxkIGJlIG5vdCBudW1lcmljYWwpXG4gICAgICAgIGNhc2UgJ3FxcXFxJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gucXVhcnRlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gMXN0IHF1YXJ0ZXIsIDJuZCBxdWFydGVyLCAuLi5cbiAgICAgICAgY2FzZSAncXFxcSc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLnF1YXJ0ZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLnF1YXJ0ZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KSB8fCBtYXRjaC5xdWFydGVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IDQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgZGF0ZS5zZXRVVENNb250aCgodmFsdWUgLSAxKSAqIDMsIDEpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gU3RhbmRBbG9uZVF1YXJ0ZXJQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBwYXJzZUFueURpZ2l0c1NpZ25lZCB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBUaW1lc3RhbXBNaWxsaXNlY29uZHNQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKFRpbWVzdGFtcE1pbGxpc2Vjb25kc1BhcnNlciwgX1BhcnNlcik7XG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoVGltZXN0YW1wTWlsbGlzZWNvbmRzUGFyc2VyKTtcbiAgZnVuY3Rpb24gVGltZXN0YW1wTWlsbGlzZWNvbmRzUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVGltZXN0YW1wTWlsbGlzZWNvbmRzUGFyc2VyKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMjApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgJyonKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKFRpbWVzdGFtcE1pbGxpc2Vjb25kc1BhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZykge1xuICAgICAgcmV0dXJuIHBhcnNlQW55RGlnaXRzU2lnbmVkKGRhdGVTdHJpbmcpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KF9kYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gW25ldyBEYXRlKHZhbHVlKSwge1xuICAgICAgICB0aW1lc3RhbXBJc1NldDogdHJ1ZVxuICAgICAgfV07XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBUaW1lc3RhbXBNaWxsaXNlY29uZHNQYXJzZXI7XG59KFBhcnNlcik7IiwiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBwYXJzZUFueURpZ2l0c1NpZ25lZCB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBUaW1lc3RhbXBTZWNvbmRzUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhUaW1lc3RhbXBTZWNvbmRzUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihUaW1lc3RhbXBTZWNvbmRzUGFyc2VyKTtcbiAgZnVuY3Rpb24gVGltZXN0YW1wU2Vjb25kc1BhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRpbWVzdGFtcFNlY29uZHNQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCA0MCk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCAnKicpO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoVGltZXN0YW1wU2Vjb25kc1BhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZykge1xuICAgICAgcmV0dXJuIHBhcnNlQW55RGlnaXRzU2lnbmVkKGRhdGVTdHJpbmcpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KF9kYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gW25ldyBEYXRlKHZhbHVlICogMTAwMCksIHtcbiAgICAgICAgdGltZXN0YW1wSXNTZXQ6IHRydWVcbiAgICAgIH1dO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gVGltZXN0YW1wU2Vjb25kc1BhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzXCI7XG5pbXBvcnQgX2NyZWF0ZVN1cGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG1hcFZhbHVlLCBub3JtYWxpemVUd29EaWdpdFllYXIsIHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuLy8gRnJvbSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIzNS90cjM1LTMxL3RyMzUtZGF0ZXMuaHRtbCNEYXRlX0Zvcm1hdF9QYXR0ZXJuc1xuLy8gfCBZZWFyICAgICB8ICAgICB5IHwgeXkgfCAgIHl5eSB8ICB5eXl5IHwgeXl5eXkgfFxuLy8gfC0tLS0tLS0tLS18LS0tLS0tLXwtLS0tfC0tLS0tLS18LS0tLS0tLXwtLS0tLS0tfFxuLy8gfCBBRCAxICAgICB8ICAgICAxIHwgMDEgfCAgIDAwMSB8ICAwMDAxIHwgMDAwMDEgfFxuLy8gfCBBRCAxMiAgICB8ICAgIDEyIHwgMTIgfCAgIDAxMiB8ICAwMDEyIHwgMDAwMTIgfFxuLy8gfCBBRCAxMjMgICB8ICAgMTIzIHwgMjMgfCAgIDEyMyB8ICAwMTIzIHwgMDAxMjMgfFxuLy8gfCBBRCAxMjM0ICB8ICAxMjM0IHwgMzQgfCAgMTIzNCB8ICAxMjM0IHwgMDEyMzQgfFxuLy8gfCBBRCAxMjM0NSB8IDEyMzQ1IHwgNDUgfCAxMjM0NSB8IDEyMzQ1IHwgMTIzNDUgfFxuZXhwb3J0IHZhciBZZWFyUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhZZWFyUGFyc2VyLCBfUGFyc2VyKTtcbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihZZWFyUGFyc2VyKTtcbiAgZnVuY3Rpb24gWWVhclBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFllYXJQYXJzZXIpO1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCAxMzApO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydZJywgJ1InLCAndScsICd3JywgJ0knLCAnaScsICdlJywgJ2MnLCAndCcsICdUJ10pO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoWWVhclBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICB2YXIgdmFsdWVDYWxsYmFjayA9IGZ1bmN0aW9uIHZhbHVlQ2FsbGJhY2soeWVhcikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHllYXI6IHllYXIsXG4gICAgICAgICAgaXNUd29EaWdpdFllYXI6IHRva2VuID09PSAneXknXG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUocGFyc2VORGlnaXRzKDQsIGRhdGVTdHJpbmcpLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgICAgY2FzZSAneW8nOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICd5ZWFyJ1xuICAgICAgICAgIH0pLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUocGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5pc1R3b0RpZ2l0WWVhciB8fCB2YWx1ZS55ZWFyID4gMDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBmbGFncywgdmFsdWUpIHtcbiAgICAgIHZhciBjdXJyZW50WWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICAgIGlmICh2YWx1ZS5pc1R3b0RpZ2l0WWVhcikge1xuICAgICAgICB2YXIgbm9ybWFsaXplZFR3b0RpZ2l0WWVhciA9IG5vcm1hbGl6ZVR3b0RpZ2l0WWVhcih2YWx1ZS55ZWFyLCBjdXJyZW50WWVhcik7XG4gICAgICAgIGRhdGUuc2V0VVRDRnVsbFllYXIobm9ybWFsaXplZFR3b0RpZ2l0WWVhciwgMCwgMSk7XG4gICAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgfVxuICAgICAgdmFyIHllYXIgPSAhKCdlcmEnIGluIGZsYWdzKSB8fCBmbGFncy5lcmEgPT09IDEgPyB2YWx1ZS55ZWFyIDogMSAtIHZhbHVlLnllYXI7XG4gICAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHllYXIsIDAsIDEpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gWWVhclBhcnNlcjtcbn0oUGFyc2VyKTsiLCJpbXBvcnQgeyBFcmFQYXJzZXIgfSBmcm9tIFwiLi9FcmFQYXJzZXIuanNcIjtcbmltcG9ydCB7IFllYXJQYXJzZXIgfSBmcm9tIFwiLi9ZZWFyUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBMb2NhbFdlZWtZZWFyUGFyc2VyIH0gZnJvbSBcIi4vTG9jYWxXZWVrWWVhclBhcnNlci5qc1wiO1xuaW1wb3J0IHsgSVNPV2Vla1llYXJQYXJzZXIgfSBmcm9tIFwiLi9JU09XZWVrWWVhclBhcnNlci5qc1wiO1xuaW1wb3J0IHsgRXh0ZW5kZWRZZWFyUGFyc2VyIH0gZnJvbSBcIi4vRXh0ZW5kZWRZZWFyUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBRdWFydGVyUGFyc2VyIH0gZnJvbSBcIi4vUXVhcnRlclBhcnNlci5qc1wiO1xuaW1wb3J0IHsgU3RhbmRBbG9uZVF1YXJ0ZXJQYXJzZXIgfSBmcm9tIFwiLi9TdGFuZEFsb25lUXVhcnRlclBhcnNlci5qc1wiO1xuaW1wb3J0IHsgTW9udGhQYXJzZXIgfSBmcm9tIFwiLi9Nb250aFBhcnNlci5qc1wiO1xuaW1wb3J0IHsgU3RhbmRBbG9uZU1vbnRoUGFyc2VyIH0gZnJvbSBcIi4vU3RhbmRBbG9uZU1vbnRoUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBMb2NhbFdlZWtQYXJzZXIgfSBmcm9tIFwiLi9Mb2NhbFdlZWtQYXJzZXIuanNcIjtcbmltcG9ydCB7IElTT1dlZWtQYXJzZXIgfSBmcm9tIFwiLi9JU09XZWVrUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBEYXRlUGFyc2VyIH0gZnJvbSBcIi4vRGF0ZVBhcnNlci5qc1wiO1xuaW1wb3J0IHsgRGF5T2ZZZWFyUGFyc2VyIH0gZnJvbSBcIi4vRGF5T2ZZZWFyUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBEYXlQYXJzZXIgfSBmcm9tIFwiLi9EYXlQYXJzZXIuanNcIjtcbmltcG9ydCB7IExvY2FsRGF5UGFyc2VyIH0gZnJvbSBcIi4vTG9jYWxEYXlQYXJzZXIuanNcIjtcbmltcG9ydCB7IFN0YW5kQWxvbmVMb2NhbERheVBhcnNlciB9IGZyb20gXCIuL1N0YW5kQWxvbmVMb2NhbERheVBhcnNlci5qc1wiO1xuaW1wb3J0IHsgSVNPRGF5UGFyc2VyIH0gZnJvbSBcIi4vSVNPRGF5UGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBBTVBNUGFyc2VyIH0gZnJvbSBcIi4vQU1QTVBhcnNlci5qc1wiO1xuaW1wb3J0IHsgQU1QTU1pZG5pZ2h0UGFyc2VyIH0gZnJvbSBcIi4vQU1QTU1pZG5pZ2h0UGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBEYXlQZXJpb2RQYXJzZXIgfSBmcm9tIFwiLi9EYXlQZXJpb2RQYXJzZXIuanNcIjtcbmltcG9ydCB7IEhvdXIxdG8xMlBhcnNlciB9IGZyb20gXCIuL0hvdXIxdG8xMlBhcnNlci5qc1wiO1xuaW1wb3J0IHsgSG91cjB0bzIzUGFyc2VyIH0gZnJvbSBcIi4vSG91cjB0bzIzUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBIb3VyMFRvMTFQYXJzZXIgfSBmcm9tIFwiLi9Ib3VyMFRvMTFQYXJzZXIuanNcIjtcbmltcG9ydCB7IEhvdXIxVG8yNFBhcnNlciB9IGZyb20gXCIuL0hvdXIxVG8yNFBhcnNlci5qc1wiO1xuaW1wb3J0IHsgTWludXRlUGFyc2VyIH0gZnJvbSBcIi4vTWludXRlUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBTZWNvbmRQYXJzZXIgfSBmcm9tIFwiLi9TZWNvbmRQYXJzZXIuanNcIjtcbmltcG9ydCB7IEZyYWN0aW9uT2ZTZWNvbmRQYXJzZXIgfSBmcm9tIFwiLi9GcmFjdGlvbk9mU2Vjb25kUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBJU09UaW1lem9uZVdpdGhaUGFyc2VyIH0gZnJvbSBcIi4vSVNPVGltZXpvbmVXaXRoWlBhcnNlci5qc1wiO1xuaW1wb3J0IHsgSVNPVGltZXpvbmVQYXJzZXIgfSBmcm9tIFwiLi9JU09UaW1lem9uZVBhcnNlci5qc1wiO1xuaW1wb3J0IHsgVGltZXN0YW1wU2Vjb25kc1BhcnNlciB9IGZyb20gXCIuL1RpbWVzdGFtcFNlY29uZHNQYXJzZXIuanNcIjtcbmltcG9ydCB7IFRpbWVzdGFtcE1pbGxpc2Vjb25kc1BhcnNlciB9IGZyb20gXCIuL1RpbWVzdGFtcE1pbGxpc2Vjb25kc1BhcnNlci5qc1wiO1xuLypcbiAqIHwgICAgIHwgVW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgVW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgIGEgIHwgQU0sIFBNICAgICAgICAgICAgICAgICAgICAgICAgIHwgIEEqIHwgTWlsbGlzZWNvbmRzIGluIGRheSAgICAgICAgICAgIHxcbiAqIHwgIGIgIHwgQU0sIFBNLCBub29uLCBtaWRuaWdodCAgICAgICAgIHwgIEIgIHwgRmxleGlibGUgZGF5IHBlcmlvZCAgICAgICAgICAgIHxcbiAqIHwgIGMgIHwgU3RhbmQtYWxvbmUgbG9jYWwgZGF5IG9mIHdlZWsgIHwgIEMqIHwgTG9jYWxpemVkIGhvdXIgdy8gZGF5IHBlcmlvZCAgIHxcbiAqIHwgIGQgIHwgRGF5IG9mIG1vbnRoICAgICAgICAgICAgICAgICAgIHwgIEQgIHwgRGF5IG9mIHllYXIgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIGUgIHwgTG9jYWwgZGF5IG9mIHdlZWsgICAgICAgICAgICAgIHwgIEUgIHwgRGF5IG9mIHdlZWsgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIGYgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIEYqIHwgRGF5IG9mIHdlZWsgaW4gbW9udGggICAgICAgICAgIHxcbiAqIHwgIGcqIHwgTW9kaWZpZWQgSnVsaWFuIGRheSAgICAgICAgICAgIHwgIEcgIHwgRXJhICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIGggIHwgSG91ciBbMS0xMl0gICAgICAgICAgICAgICAgICAgIHwgIEggIHwgSG91ciBbMC0yM10gICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIGkhIHwgSVNPIGRheSBvZiB3ZWVrICAgICAgICAgICAgICAgIHwgIEkhIHwgSVNPIHdlZWsgb2YgeWVhciAgICAgICAgICAgICAgIHxcbiAqIHwgIGoqIHwgTG9jYWxpemVkIGhvdXIgdy8gZGF5IHBlcmlvZCAgIHwgIEoqIHwgTG9jYWxpemVkIGhvdXIgdy9vIGRheSBwZXJpb2QgIHxcbiAqIHwgIGsgIHwgSG91ciBbMS0yNF0gICAgICAgICAgICAgICAgICAgIHwgIEsgIHwgSG91ciBbMC0xMV0gICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIGwqIHwgKGRlcHJlY2F0ZWQpICAgICAgICAgICAgICAgICAgIHwgIEwgIHwgU3RhbmQtYWxvbmUgbW9udGggICAgICAgICAgICAgIHxcbiAqIHwgIG0gIHwgTWludXRlICAgICAgICAgICAgICAgICAgICAgICAgIHwgIE0gIHwgTW9udGggICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIG4gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIE4gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIG8hIHwgT3JkaW5hbCBudW1iZXIgbW9kaWZpZXIgICAgICAgIHwgIE8qIHwgVGltZXpvbmUgKEdNVCkgICAgICAgICAgICAgICAgIHxcbiAqIHwgIHAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIFAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIHEgIHwgU3RhbmQtYWxvbmUgcXVhcnRlciAgICAgICAgICAgIHwgIFEgIHwgUXVhcnRlciAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIHIqIHwgUmVsYXRlZCBHcmVnb3JpYW4geWVhciAgICAgICAgIHwgIFIhIHwgSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgICAgICAgIHxcbiAqIHwgIHMgIHwgU2Vjb25kICAgICAgICAgICAgICAgICAgICAgICAgIHwgIFMgIHwgRnJhY3Rpb24gb2Ygc2Vjb25kICAgICAgICAgICAgIHxcbiAqIHwgIHQhIHwgU2Vjb25kcyB0aW1lc3RhbXAgICAgICAgICAgICAgIHwgIFQhIHwgTWlsbGlzZWNvbmRzIHRpbWVzdGFtcCAgICAgICAgIHxcbiAqIHwgIHUgIHwgRXh0ZW5kZWQgeWVhciAgICAgICAgICAgICAgICAgIHwgIFUqIHwgQ3ljbGljIHllYXIgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIHYqIHwgVGltZXpvbmUgKGdlbmVyaWMgbm9uLWxvY2F0LikgIHwgIFYqIHwgVGltZXpvbmUgKGxvY2F0aW9uKSAgICAgICAgICAgIHxcbiAqIHwgIHcgIHwgTG9jYWwgd2VlayBvZiB5ZWFyICAgICAgICAgICAgIHwgIFcqIHwgV2VlayBvZiBtb250aCAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIHggIHwgVGltZXpvbmUgKElTTy04NjAxIHcvbyBaKSAgICAgIHwgIFggIHwgVGltZXpvbmUgKElTTy04NjAxKSAgICAgICAgICAgIHxcbiAqIHwgIHkgIHwgWWVhciAoYWJzKSAgICAgICAgICAgICAgICAgICAgIHwgIFkgIHwgTG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhciAgICAgIHxcbiAqIHwgIHoqIHwgVGltZXpvbmUgKHNwZWNpZmljIG5vbi1sb2NhdC4pIHwgIFoqIHwgVGltZXpvbmUgKGFsaWFzZXMpICAgICAgICAgICAgIHxcbiAqXG4gKiBMZXR0ZXJzIG1hcmtlZCBieSAqIGFyZSBub3QgaW1wbGVtZW50ZWQgYnV0IHJlc2VydmVkIGJ5IFVuaWNvZGUgc3RhbmRhcmQuXG4gKlxuICogTGV0dGVycyBtYXJrZWQgYnkgISBhcmUgbm9uLXN0YW5kYXJkLCBidXQgaW1wbGVtZW50ZWQgYnkgZGF0ZS1mbnM6XG4gKiAtIGBvYCBtb2RpZmllcyB0aGUgcHJldmlvdXMgdG9rZW4gdG8gdHVybiBpdCBpbnRvIGFuIG9yZGluYWwgKHNlZSBgcGFyc2VgIGRvY3MpXG4gKiAtIGBpYCBpcyBJU08gZGF5IG9mIHdlZWsuIEZvciBgaWAgYW5kIGBpaWAgaXMgcmV0dXJucyBudW1lcmljIElTTyB3ZWVrIGRheXMsXG4gKiAgIGkuZS4gNyBmb3IgU3VuZGF5LCAxIGZvciBNb25kYXksIGV0Yy5cbiAqIC0gYElgIGlzIElTTyB3ZWVrIG9mIHllYXIsIGFzIG9wcG9zZWQgdG8gYHdgIHdoaWNoIGlzIGxvY2FsIHdlZWsgb2YgeWVhci5cbiAqIC0gYFJgIGlzIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyLCBhcyBvcHBvc2VkIHRvIGBZYCB3aGljaCBpcyBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyLlxuICogICBgUmAgaXMgc3VwcG9zZWQgdG8gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGBJYCBhbmQgYGlgXG4gKiAgIGZvciB1bml2ZXJzYWwgSVNPIHdlZWstbnVtYmVyaW5nIGRhdGUsIHdoZXJlYXNcbiAqICAgYFlgIGlzIHN1cHBvc2VkIHRvIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBgd2AgYW5kIGBlYFxuICogICBmb3Igd2Vlay1udW1iZXJpbmcgZGF0ZSBzcGVjaWZpYyB0byB0aGUgbG9jYWxlLlxuICovXG5leHBvcnQgdmFyIHBhcnNlcnMgPSB7XG4gIEc6IG5ldyBFcmFQYXJzZXIoKSxcbiAgeTogbmV3IFllYXJQYXJzZXIoKSxcbiAgWTogbmV3IExvY2FsV2Vla1llYXJQYXJzZXIoKSxcbiAgUjogbmV3IElTT1dlZWtZZWFyUGFyc2VyKCksXG4gIHU6IG5ldyBFeHRlbmRlZFllYXJQYXJzZXIoKSxcbiAgUTogbmV3IFF1YXJ0ZXJQYXJzZXIoKSxcbiAgcTogbmV3IFN0YW5kQWxvbmVRdWFydGVyUGFyc2VyKCksXG4gIE06IG5ldyBNb250aFBhcnNlcigpLFxuICBMOiBuZXcgU3RhbmRBbG9uZU1vbnRoUGFyc2VyKCksXG4gIHc6IG5ldyBMb2NhbFdlZWtQYXJzZXIoKSxcbiAgSTogbmV3IElTT1dlZWtQYXJzZXIoKSxcbiAgZDogbmV3IERhdGVQYXJzZXIoKSxcbiAgRDogbmV3IERheU9mWWVhclBhcnNlcigpLFxuICBFOiBuZXcgRGF5UGFyc2VyKCksXG4gIGU6IG5ldyBMb2NhbERheVBhcnNlcigpLFxuICBjOiBuZXcgU3RhbmRBbG9uZUxvY2FsRGF5UGFyc2VyKCksXG4gIGk6IG5ldyBJU09EYXlQYXJzZXIoKSxcbiAgYTogbmV3IEFNUE1QYXJzZXIoKSxcbiAgYjogbmV3IEFNUE1NaWRuaWdodFBhcnNlcigpLFxuICBCOiBuZXcgRGF5UGVyaW9kUGFyc2VyKCksXG4gIGg6IG5ldyBIb3VyMXRvMTJQYXJzZXIoKSxcbiAgSDogbmV3IEhvdXIwdG8yM1BhcnNlcigpLFxuICBLOiBuZXcgSG91cjBUbzExUGFyc2VyKCksXG4gIGs6IG5ldyBIb3VyMVRvMjRQYXJzZXIoKSxcbiAgbTogbmV3IE1pbnV0ZVBhcnNlcigpLFxuICBzOiBuZXcgU2Vjb25kUGFyc2VyKCksXG4gIFM6IG5ldyBGcmFjdGlvbk9mU2Vjb25kUGFyc2VyKCksXG4gIFg6IG5ldyBJU09UaW1lem9uZVdpdGhaUGFyc2VyKCksXG4gIHg6IG5ldyBJU09UaW1lem9uZVBhcnNlcigpLFxuICB0OiBuZXcgVGltZXN0YW1wU2Vjb25kc1BhcnNlcigpLFxuICBUOiBuZXcgVGltZXN0YW1wTWlsbGlzZWNvbmRzUGFyc2VyKClcbn07IiwiaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5Ib3VyLCBtaWxsaXNlY29uZHNJbk1pbnV0ZSwgbWlsbGlzZWNvbmRzSW5TZWNvbmQgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi9jb25zdGFudHMuanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBtYXBWYWx1ZShwYXJzZUZuUmVzdWx0LCBtYXBGbikge1xuICBpZiAoIXBhcnNlRm5SZXN1bHQpIHtcbiAgICByZXR1cm4gcGFyc2VGblJlc3VsdDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHZhbHVlOiBtYXBGbihwYXJzZUZuUmVzdWx0LnZhbHVlKSxcbiAgICByZXN0OiBwYXJzZUZuUmVzdWx0LnJlc3RcbiAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU51bWVyaWNQYXR0ZXJuKHBhdHRlcm4sIGRhdGVTdHJpbmcpIHtcbiAgdmFyIG1hdGNoUmVzdWx0ID0gZGF0ZVN0cmluZy5tYXRjaChwYXR0ZXJuKTtcbiAgaWYgKCFtYXRjaFJlc3VsdCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiB7XG4gICAgdmFsdWU6IHBhcnNlSW50KG1hdGNoUmVzdWx0WzBdLCAxMCksXG4gICAgcmVzdDogZGF0ZVN0cmluZy5zbGljZShtYXRjaFJlc3VsdFswXS5sZW5ndGgpXG4gIH07XG59XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUaW1lem9uZVBhdHRlcm4ocGF0dGVybiwgZGF0ZVN0cmluZykge1xuICB2YXIgbWF0Y2hSZXN1bHQgPSBkYXRlU3RyaW5nLm1hdGNoKHBhdHRlcm4pO1xuICBpZiAoIW1hdGNoUmVzdWx0KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBJbnB1dCBpcyAnWidcbiAgaWYgKG1hdGNoUmVzdWx0WzBdID09PSAnWicpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IDAsXG4gICAgICByZXN0OiBkYXRlU3RyaW5nLnNsaWNlKDEpXG4gICAgfTtcbiAgfVxuICB2YXIgc2lnbiA9IG1hdGNoUmVzdWx0WzFdID09PSAnKycgPyAxIDogLTE7XG4gIHZhciBob3VycyA9IG1hdGNoUmVzdWx0WzJdID8gcGFyc2VJbnQobWF0Y2hSZXN1bHRbMl0sIDEwKSA6IDA7XG4gIHZhciBtaW51dGVzID0gbWF0Y2hSZXN1bHRbM10gPyBwYXJzZUludChtYXRjaFJlc3VsdFszXSwgMTApIDogMDtcbiAgdmFyIHNlY29uZHMgPSBtYXRjaFJlc3VsdFs1XSA/IHBhcnNlSW50KG1hdGNoUmVzdWx0WzVdLCAxMCkgOiAwO1xuICByZXR1cm4ge1xuICAgIHZhbHVlOiBzaWduICogKGhvdXJzICogbWlsbGlzZWNvbmRzSW5Ib3VyICsgbWludXRlcyAqIG1pbGxpc2Vjb25kc0luTWludXRlICsgc2Vjb25kcyAqIG1pbGxpc2Vjb25kc0luU2Vjb25kKSxcbiAgICByZXN0OiBkYXRlU3RyaW5nLnNsaWNlKG1hdGNoUmVzdWx0WzBdLmxlbmd0aClcbiAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFueURpZ2l0c1NpZ25lZChkYXRlU3RyaW5nKSB7XG4gIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5hbnlEaWdpdHNTaWduZWQsIGRhdGVTdHJpbmcpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTkRpZ2l0cyhuLCBkYXRlU3RyaW5nKSB7XG4gIHN3aXRjaCAobikge1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5zaW5nbGVEaWdpdCwgZGF0ZVN0cmluZyk7XG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLnR3b0RpZ2l0cywgZGF0ZVN0cmluZyk7XG4gICAgY2FzZSAzOlxuICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLnRocmVlRGlnaXRzLCBkYXRlU3RyaW5nKTtcbiAgICBjYXNlIDQ6XG4gICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuZm91ckRpZ2l0cywgZGF0ZVN0cmluZyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG5ldyBSZWdFeHAoJ15cXFxcZHsxLCcgKyBuICsgJ30nKSwgZGF0ZVN0cmluZyk7XG4gIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU5EaWdpdHNTaWduZWQobiwgZGF0ZVN0cmluZykge1xuICBzd2l0Y2ggKG4pIHtcbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuc2luZ2xlRGlnaXRTaWduZWQsIGRhdGVTdHJpbmcpO1xuICAgIGNhc2UgMjpcbiAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy50d29EaWdpdHNTaWduZWQsIGRhdGVTdHJpbmcpO1xuICAgIGNhc2UgMzpcbiAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy50aHJlZURpZ2l0c1NpZ25lZCwgZGF0ZVN0cmluZyk7XG4gICAgY2FzZSA0OlxuICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLmZvdXJEaWdpdHNTaWduZWQsIGRhdGVTdHJpbmcpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihuZXcgUmVnRXhwKCdeLT9cXFxcZHsxLCcgKyBuICsgJ30nKSwgZGF0ZVN0cmluZyk7XG4gIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBkYXlQZXJpb2RFbnVtVG9Ib3VycyhkYXlQZXJpb2QpIHtcbiAgc3dpdGNoIChkYXlQZXJpb2QpIHtcbiAgICBjYXNlICdtb3JuaW5nJzpcbiAgICAgIHJldHVybiA0O1xuICAgIGNhc2UgJ2V2ZW5pbmcnOlxuICAgICAgcmV0dXJuIDE3O1xuICAgIGNhc2UgJ3BtJzpcbiAgICBjYXNlICdub29uJzpcbiAgICBjYXNlICdhZnRlcm5vb24nOlxuICAgICAgcmV0dXJuIDEyO1xuICAgIGNhc2UgJ2FtJzpcbiAgICBjYXNlICdtaWRuaWdodCc6XG4gICAgY2FzZSAnbmlnaHQnOlxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gMDtcbiAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVR3b0RpZ2l0WWVhcih0d29EaWdpdFllYXIsIGN1cnJlbnRZZWFyKSB7XG4gIHZhciBpc0NvbW1vbkVyYSA9IGN1cnJlbnRZZWFyID4gMDtcbiAgLy8gQWJzb2x1dGUgbnVtYmVyIG9mIHRoZSBjdXJyZW50IHllYXI6XG4gIC8vIDEgLT4gMSBBQ1xuICAvLyAwIC0+IDEgQkNcbiAgLy8gLTEgLT4gMiBCQ1xuICB2YXIgYWJzQ3VycmVudFllYXIgPSBpc0NvbW1vbkVyYSA/IGN1cnJlbnRZZWFyIDogMSAtIGN1cnJlbnRZZWFyO1xuICB2YXIgcmVzdWx0O1xuICBpZiAoYWJzQ3VycmVudFllYXIgPD0gNTApIHtcbiAgICByZXN1bHQgPSB0d29EaWdpdFllYXIgfHwgMTAwO1xuICB9IGVsc2Uge1xuICAgIHZhciByYW5nZUVuZCA9IGFic0N1cnJlbnRZZWFyICsgNTA7XG4gICAgdmFyIHJhbmdlRW5kQ2VudHVyeSA9IE1hdGguZmxvb3IocmFuZ2VFbmQgLyAxMDApICogMTAwO1xuICAgIHZhciBpc1ByZXZpb3VzQ2VudHVyeSA9IHR3b0RpZ2l0WWVhciA+PSByYW5nZUVuZCAlIDEwMDtcbiAgICByZXN1bHQgPSB0d29EaWdpdFllYXIgKyByYW5nZUVuZENlbnR1cnkgLSAoaXNQcmV2aW91c0NlbnR1cnkgPyAxMDAgOiAwKTtcbiAgfVxuICByZXR1cm4gaXNDb21tb25FcmEgPyByZXN1bHQgOiAxIC0gcmVzdWx0O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTGVhcFllYXJJbmRleCh5ZWFyKSB7XG4gIHJldHVybiB5ZWFyICUgNDAwID09PSAwIHx8IHllYXIgJSA0ID09PSAwICYmIHllYXIgJSAxMDAgIT09IDA7XG59IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZlwiO1xuaW1wb3J0IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyXCI7XG5pbXBvcnQgZGVmYXVsdExvY2FsZSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0TG9jYWxlL2luZGV4LmpzXCI7XG5pbXBvcnQgc3ViTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9zdWJNaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGFzc2lnbiBmcm9tIFwiLi4vX2xpYi9hc3NpZ24vaW5kZXguanNcIjtcbmltcG9ydCBsb25nRm9ybWF0dGVycyBmcm9tIFwiLi4vX2xpYi9mb3JtYXQvbG9uZ0Zvcm1hdHRlcnMvaW5kZXguanNcIjtcbmltcG9ydCBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9fbGliL2dldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCB7IGlzUHJvdGVjdGVkRGF5T2ZZZWFyVG9rZW4sIGlzUHJvdGVjdGVkV2Vla1llYXJUb2tlbiwgdGhyb3dQcm90ZWN0ZWRFcnJvciB9IGZyb20gXCIuLi9fbGliL3Byb3RlY3RlZFRva2Vucy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBEYXRlVG9TeXN0ZW1UaW1lem9uZVNldHRlciB9IGZyb20gXCIuL19saWIvU2V0dGVyLmpzXCI7XG5pbXBvcnQgeyBwYXJzZXJzIH0gZnJvbSBcIi4vX2xpYi9wYXJzZXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuLi9fbGliL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7IC8vIFRoaXMgUmVnRXhwIGNvbnNpc3RzIG9mIHRocmVlIHBhcnRzIHNlcGFyYXRlZCBieSBgfGA6XG4vLyAtIFt5WVFxTUx3SWREZWNpaEhLa21zXW8gbWF0Y2hlcyBhbnkgYXZhaWxhYmxlIG9yZGluYWwgbnVtYmVyIHRva2VuXG4vLyAgIChvbmUgb2YgdGhlIGNlcnRhaW4gbGV0dGVycyBmb2xsb3dlZCBieSBgb2ApXG4vLyAtIChcXHcpXFwxKiBtYXRjaGVzIGFueSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgbGV0dGVyXG4vLyAtICcnIG1hdGNoZXMgdHdvIHF1b3RlIGNoYXJhY3RlcnMgaW4gYSByb3dcbi8vIC0gJygnJ3xbXiddKSsoJ3wkKSBtYXRjaGVzIGFueXRoaW5nIHN1cnJvdW5kZWQgYnkgdHdvIHF1b3RlIGNoYXJhY3RlcnMgKCcpLFxuLy8gICBleGNlcHQgYSBzaW5nbGUgcXVvdGUgc3ltYm9sLCB3aGljaCBlbmRzIHRoZSBzZXF1ZW5jZS5cbi8vICAgVHdvIHF1b3RlIGNoYXJhY3RlcnMgZG8gbm90IGVuZCB0aGUgc2VxdWVuY2UuXG4vLyAgIElmIHRoZXJlIGlzIG5vIG1hdGNoaW5nIHNpbmdsZSBxdW90ZVxuLy8gICB0aGVuIHRoZSBzZXF1ZW5jZSB3aWxsIGNvbnRpbnVlIHVudGlsIHRoZSBlbmQgb2YgdGhlIHN0cmluZy5cbi8vIC0gLiBtYXRjaGVzIGFueSBzaW5nbGUgY2hhcmFjdGVyIHVubWF0Y2hlZCBieSBwcmV2aW91cyBwYXJ0cyBvZiB0aGUgUmVnRXhwc1xudmFyIGZvcm1hdHRpbmdUb2tlbnNSZWdFeHAgPSAvW3lZUXFNTHdJZERlY2loSEtrbXNdb3woXFx3KVxcMSp8Jyd8JygnJ3xbXiddKSsoJ3wkKXwuL2c7XG5cbi8vIFRoaXMgUmVnRXhwIGNhdGNoZXMgc3ltYm9scyBlc2NhcGVkIGJ5IHF1b3RlcywgYW5kIGFsc29cbi8vIHNlcXVlbmNlcyBvZiBzeW1ib2xzIFAsIHAsIGFuZCB0aGUgY29tYmluYXRpb25zIGxpa2UgYFBQUFBQUFBwcHBwcGBcbnZhciBsb25nRm9ybWF0dGluZ1Rva2Vuc1JlZ0V4cCA9IC9QK3ArfFArfHArfCcnfCcoJyd8W14nXSkrKCd8JCl8Li9nO1xudmFyIGVzY2FwZWRTdHJpbmdSZWdFeHAgPSAvXicoW15dKj8pJz8kLztcbnZhciBkb3VibGVRdW90ZVJlZ0V4cCA9IC8nJy9nO1xudmFyIG5vdFdoaXRlc3BhY2VSZWdFeHAgPSAvXFxTLztcbnZhciB1bmVzY2FwZWRMYXRpbkNoYXJhY3RlclJlZ0V4cCA9IC9bYS16QS1aXS87XG5cbi8qKlxuICogQG5hbWUgcGFyc2VcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgUGFyc2UgdGhlIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGRhdGUgcGFyc2VkIGZyb20gc3RyaW5nIHVzaW5nIHRoZSBnaXZlbiBmb3JtYXQgc3RyaW5nLlxuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhlIGBmb3JtYXRgIHRva2VucyBkaWZmZXIgZnJvbSBNb21lbnQuanMgYW5kIG90aGVyIGxpYnJhcmllcy5cbiAqID4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKlxuICogVGhlIGNoYXJhY3RlcnMgaW4gdGhlIGZvcm1hdCBzdHJpbmcgd3JhcHBlZCBiZXR3ZWVuIHR3byBzaW5nbGUgcXVvdGVzIGNoYXJhY3RlcnMgKCcpIGFyZSBlc2NhcGVkLlxuICogVHdvIHNpbmdsZSBxdW90ZXMgaW4gYSByb3csIHdoZXRoZXIgaW5zaWRlIG9yIG91dHNpZGUgYSBxdW90ZWQgc2VxdWVuY2UsIHJlcHJlc2VudCBhICdyZWFsJyBzaW5nbGUgcXVvdGUuXG4gKlxuICogRm9ybWF0IG9mIHRoZSBmb3JtYXQgc3RyaW5nIGlzIGJhc2VkIG9uIFVuaWNvZGUgVGVjaG5pY2FsIFN0YW5kYXJkICMzNTpcbiAqIGh0dHBzOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIzNS90cjM1LWRhdGVzLmh0bWwjRGF0ZV9GaWVsZF9TeW1ib2xfVGFibGVcbiAqIHdpdGggYSBmZXcgYWRkaXRpb25zIChzZWUgbm90ZSA1IGJlbG93IHRoZSB0YWJsZSkuXG4gKlxuICogTm90IGFsbCB0b2tlbnMgYXJlIGNvbXBhdGlibGUuIENvbWJpbmF0aW9ucyB0aGF0IGRvbid0IG1ha2Ugc2Vuc2Ugb3IgY291bGQgbGVhZCB0byBidWdzIGFyZSBwcm9oaWJpdGVkXG4gKiBhbmQgd2lsbCB0aHJvdyBgUmFuZ2VFcnJvcmAuIEZvciBleGFtcGxlIHVzYWdlIG9mIDI0LWhvdXIgZm9ybWF0IHRva2VuIHdpdGggQU0vUE0gdG9rZW4gd2lsbCB0aHJvdyBhbiBleGNlcHRpb246XG4gKlxuICogYGBgamF2YXNjcmlwdFxuICogcGFyc2UoJzIzIEFNJywgJ0hIIGEnLCBuZXcgRGF0ZSgpKVxuICogLy89PiBSYW5nZUVycm9yOiBUaGUgZm9ybWF0IHN0cmluZyBtdXN0bid0IGNvbnRhaW4gYEhIYCBhbmQgYGFgIGF0IHRoZSBzYW1lIHRpbWVcbiAqIGBgYFxuICpcbiAqIFNlZSB0aGUgY29tcGF0aWJpbGl0eSB0YWJsZTogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vc3ByZWFkc2hlZXRzL2QvZS8yUEFDWC0xdlFPUFUzeFVocGxsbDZkeW9NbVZVWEhLbF84Q1JEczZfdWVMbWV4M1NvcXdodW9sa3VOM08wNWw0cnF4NWgxZEtYOGViNDZVbC1DQ1NycS9wdWJodG1sP2dpZD0wJnNpbmdsZT10cnVlXG4gKlxuICogQWNjZXB0ZWQgZm9ybWF0IHN0cmluZyBwYXR0ZXJuczpcbiAqIHwgVW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8UHJpb3J8IFBhdHRlcm4gfCBSZXN1bHQgZXhhbXBsZXMgICAgICAgICAgICAgICAgICAgfCBOb3RlcyB8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tfFxuICogfCBFcmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTQwIHwgRy4uR0dHICB8IEFELCBCQyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEdHR0cgICAgfCBBbm5vIERvbWluaSwgQmVmb3JlIENocmlzdCAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBHR0dHRyAgIHwgQSwgQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBDYWxlbmRhciB5ZWFyICAgICAgICAgICAgICAgICAgIHwgMTMwIHwgeSAgICAgICB8IDQ0LCAxLCAxOTAwLCAyMDE3LCA5OTk5ICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHlvICAgICAgfCA0NHRoLCAxc3QsIDE5MDB0aCwgOTk5OTk5OXRoICAgICAgfCA0LDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB5eSAgICAgIHwgNDQsIDAxLCAwMCwgMTcgICAgICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeXl5ICAgICB8IDA0NCwgMDAxLCAxMjMsIDk5OSAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHl5eXkgICAgfCAwMDQ0LCAwMDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB5eXl5eSAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiw0ICAgfFxuICogfCBMb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgIHwgMTMwIHwgWSAgICAgICB8IDQ0LCAxLCAxOTAwLCAyMDE3LCA5MDAwICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFlvICAgICAgfCA0NHRoLCAxc3QsIDE5MDB0aCwgOTk5OTk5OXRoICAgICAgfCA0LDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBZWSAgICAgIHwgNDQsIDAxLCAwMCwgMTcgICAgICAgICAgICAgICAgICAgIHwgNCw2ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWVlZICAgICB8IDA0NCwgMDAxLCAxMjMsIDk5OSAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFlZWVkgICAgfCAwMDQ0LCAwMDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgfCA0LDYgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBZWVlZWSAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiw0ICAgfFxuICogfCBJU08gd2Vlay1udW1iZXJpbmcgeWVhciAgICAgICAgIHwgMTMwIHwgUiAgICAgICB8IC00MywgMSwgMTkwMCwgMjAxNywgOTk5OSwgLTk5OTkgICB8IDQsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFJSICAgICAgfCAtNDMsIDAxLCAwMCwgMTcgICAgICAgICAgICAgICAgICAgfCA0LDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBSUlIgICAgIHwgLTA0MywgMDAxLCAxMjMsIDk5OSwgLTk5OSAgICAgICAgIHwgNCw1ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUlJSUiAgICB8IC0wMDQzLCAwMDAxLCAyMDE3LCA5OTk5LCAtOTk5OSAgICB8IDQsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFJSUlJSICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyLDQsNSB8XG4gKiB8IEV4dGVuZGVkIHllYXIgICAgICAgICAgICAgICAgICAgfCAxMzAgfCB1ICAgICAgIHwgLTQzLCAxLCAxOTAwLCAyMDE3LCA5OTk5LCAtOTk5ICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgdXUgICAgICB8IC00MywgMDEsIDk5LCAtOTkgICAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHV1dSAgICAgfCAtMDQzLCAwMDEsIDEyMywgOTk5LCAtOTk5ICAgICAgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB1dXV1ICAgIHwgLTAwNDMsIDAwMDEsIDIwMTcsIDk5OTksIC05OTk5ICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgdXV1dXUgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIsNCAgIHxcbiAqIHwgUXVhcnRlciAoZm9ybWF0dGluZykgICAgICAgICAgICB8IDEyMCB8IFEgICAgICAgfCAxLCAyLCAzLCA0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBRbyAgICAgIHwgMXN0LCAybmQsIDNyZCwgNHRoICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUVEgICAgICB8IDAxLCAwMiwgMDMsIDA0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFFRUSAgICAgfCBRMSwgUTIsIFEzLCBRNCAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBRUVFRICAgIHwgMXN0IHF1YXJ0ZXIsIDJuZCBxdWFydGVyLCAuLi4gICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUVFRUVEgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgUXVhcnRlciAoc3RhbmQtYWxvbmUpICAgICAgICAgICB8IDEyMCB8IHEgICAgICAgfCAxLCAyLCAzLCA0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBxbyAgICAgIHwgMXN0LCAybmQsIDNyZCwgNHRoICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgcXEgICAgICB8IDAxLCAwMiwgMDMsIDA0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHFxcSAgICAgfCBRMSwgUTIsIFEzLCBRNCAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBxcXFxICAgIHwgMXN0IHF1YXJ0ZXIsIDJuZCBxdWFydGVyLCAuLi4gICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgcXFxcXEgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8IDMgICAgIHxcbiAqIHwgTW9udGggKGZvcm1hdHRpbmcpICAgICAgICAgICAgICB8IDExMCB8IE0gICAgICAgfCAxLCAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBNbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTJ0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTU0gICAgICB8IDAxLCAwMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IE1NTSAgICAgfCBKYW4sIEZlYiwgLi4uLCBEZWMgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBNTU1NICAgIHwgSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXIgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTU1NTU0gICB8IEosIEYsIC4uLiwgRCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgTW9udGggKHN0YW5kLWFsb25lKSAgICAgICAgICAgICB8IDExMCB8IEwgICAgICAgfCAxLCAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBMbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTJ0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTEwgICAgICB8IDAxLCAwMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IExMTCAgICAgfCBKYW4sIEZlYiwgLi4uLCBEZWMgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBMTExMICAgIHwgSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXIgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTExMTEwgICB8IEosIEYsIC4uLiwgRCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgTG9jYWwgd2VlayBvZiB5ZWFyICAgICAgICAgICAgICB8IDEwMCB8IHcgICAgICAgfCAxLCAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB3byAgICAgIHwgMXN0LCAybmQsIC4uLiwgNTN0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgd3cgICAgICB8IDAxLCAwMiwgLi4uLCA1MyAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSVNPIHdlZWsgb2YgeWVhciAgICAgICAgICAgICAgICB8IDEwMCB8IEkgICAgICAgfCAxLCAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBJbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgNTN0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgSUkgICAgICB8IDAxLCAwMiwgLi4uLCA1MyAgICAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgRGF5IG9mIG1vbnRoICAgICAgICAgICAgICAgICAgICB8ICA5MCB8IGQgICAgICAgfCAxLCAyLCAuLi4sIDMxICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBkbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMzFzdCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZGQgICAgICB8IDAxLCAwMiwgLi4uLCAzMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgRGF5IG9mIHllYXIgICAgICAgICAgICAgICAgICAgICB8ICA5MCB8IEQgICAgICAgfCAxLCAyLCAuLi4sIDM2NSwgMzY2ICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBEbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMzY1dGgsIDM2NnRoICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgREQgICAgICB8IDAxLCAwMiwgLi4uLCAzNjUsIDM2NiAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IERERCAgICAgfCAwMDEsIDAwMiwgLi4uLCAzNjUsIDM2NiAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBEREREICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCBEYXkgb2Ygd2VlayAoZm9ybWF0dGluZykgICAgICAgIHwgIDkwIHwgRS4uRUVFICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3VuICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEVFRUUgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBFRUVFRSAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgRUVFRUVFICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU2EsIFN1ICAgICAgICB8ICAgICAgIHxcbiAqIHwgSVNPIGRheSBvZiB3ZWVrIChmb3JtYXR0aW5nKSAgICB8ICA5MCB8IGkgICAgICAgfCAxLCAyLCAzLCAuLi4sIDcgICAgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBpbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgN3RoICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaWkgICAgICB8IDAxLCAwMiwgLi4uLCAwNyAgICAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGlpaSAgICAgfCBNb24sIFR1ZSwgV2VkLCAuLi4sIFN1biAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBpaWlpICAgIHwgTW9uZGF5LCBUdWVzZGF5LCAuLi4sIFN1bmRheSAgICAgIHwgMiw1ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaWlpaWkgICB8IE0sIFQsIFcsIFQsIEYsIFMsIFMgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGlpaWlpaSAgfCBNbywgVHUsIFdlLCBUaCwgRnIsIFNhLCBTdSAgICAgICAgfCA1ICAgICB8XG4gKiB8IExvY2FsIGRheSBvZiB3ZWVrIChmb3JtYXR0aW5nKSAgfCAgOTAgfCBlICAgICAgIHwgMiwgMywgNCwgLi4uLCAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZW8gICAgICB8IDJuZCwgM3JkLCAuLi4sIDFzdCAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGVlICAgICAgfCAwMiwgMDMsIC4uLiwgMDEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBlZWUgICAgIHwgTW9uLCBUdWUsIFdlZCwgLi4uLCBTdW4gICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZWVlZSAgICB8IE1vbmRheSwgVHVlc2RheSwgLi4uLCBTdW5kYXkgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGVlZWVlICAgfCBNLCBULCBXLCBULCBGLCBTLCBTICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBlZWVlZWUgIHwgTW8sIFR1LCBXZSwgVGgsIEZyLCBTYSwgU3UgICAgICAgIHwgICAgICAgfFxuICogfCBMb2NhbCBkYXkgb2Ygd2VlayAoc3RhbmQtYWxvbmUpIHwgIDkwIHwgYyAgICAgICB8IDIsIDMsIDQsIC4uLiwgMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGNvICAgICAgfCAybmQsIDNyZCwgLi4uLCAxc3QgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBjYyAgICAgIHwgMDIsIDAzLCAuLi4sIDAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgY2NjICAgICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3VuICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGNjY2MgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBjY2NjYyAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgY2NjY2NjICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU2EsIFN1ICAgICAgICB8ICAgICAgIHxcbiAqIHwgQU0sIFBNICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4MCB8IGEuLmFhYSAgfCBBTSwgUE0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBhYWFhICAgIHwgYS5tLiwgcC5tLiAgICAgICAgICAgICAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgYWFhYWEgICB8IGEsIHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgQU0sIFBNLCBub29uLCBtaWRuaWdodCAgICAgICAgICB8ICA4MCB8IGIuLmJiYiAgfCBBTSwgUE0sIG5vb24sIG1pZG5pZ2h0ICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBiYmJiICAgIHwgYS5tLiwgcC5tLiwgbm9vbiwgbWlkbmlnaHQgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgYmJiYmIgICB8IGEsIHAsIG4sIG1pICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgRmxleGlibGUgZGF5IHBlcmlvZCAgICAgICAgICAgICB8ICA4MCB8IEIuLkJCQiAgfCBhdCBuaWdodCwgaW4gdGhlIG1vcm5pbmcsIC4uLiAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBCQkJCICAgIHwgYXQgbmlnaHQsIGluIHRoZSBtb3JuaW5nLCAuLi4gICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgQkJCQkIgICB8IGF0IG5pZ2h0LCBpbiB0aGUgbW9ybmluZywgLi4uICAgICB8ICAgICAgIHxcbiAqIHwgSG91ciBbMS0xMl0gICAgICAgICAgICAgICAgICAgICB8ICA3MCB8IGggICAgICAgfCAxLCAyLCAuLi4sIDExLCAxMiAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBobyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTF0aCwgMTJ0aCAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaGggICAgICB8IDAxLCAwMiwgLi4uLCAxMSwgMTIgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSG91ciBbMC0yM10gICAgICAgICAgICAgICAgICAgICB8ICA3MCB8IEggICAgICAgfCAwLCAxLCAyLCAuLi4sIDIzICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBIbyAgICAgIHwgMHRoLCAxc3QsIDJuZCwgLi4uLCAyM3JkICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgSEggICAgICB8IDAwLCAwMSwgMDIsIC4uLiwgMjMgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSG91ciBbMC0xMV0gICAgICAgICAgICAgICAgICAgICB8ICA3MCB8IEsgICAgICAgfCAxLCAyLCAuLi4sIDExLCAwICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBLbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTF0aCwgMHRoICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgS0sgICAgICB8IDAxLCAwMiwgLi4uLCAxMSwgMDAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSG91ciBbMS0yNF0gICAgICAgICAgICAgICAgICAgICB8ICA3MCB8IGsgICAgICAgfCAyNCwgMSwgMiwgLi4uLCAyMyAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBrbyAgICAgIHwgMjR0aCwgMXN0LCAybmQsIC4uLiwgMjNyZCAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwga2sgICAgICB8IDI0LCAwMSwgMDIsIC4uLiwgMjMgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgTWludXRlICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2MCB8IG0gICAgICAgfCAwLCAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBtbyAgICAgIHwgMHRoLCAxc3QsIC4uLiwgNTl0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgbW0gICAgICB8IDAwLCAwMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgU2Vjb25kICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1MCB8IHMgICAgICAgfCAwLCAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBzbyAgICAgIHwgMHRoLCAxc3QsIC4uLiwgNTl0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgc3MgICAgICB8IDAwLCAwMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgU2Vjb25kcyB0aW1lc3RhbXAgICAgICAgICAgICAgICB8ICA0MCB8IHQgICAgICAgfCA1MTI5Njk1MjAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB0dCAgICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCBGcmFjdGlvbiBvZiBzZWNvbmQgICAgICAgICAgICAgIHwgIDMwIHwgUyAgICAgICB8IDAsIDEsIC4uLiwgOSAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFNTICAgICAgfCAwMCwgMDEsIC4uLiwgOTkgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBTU1MgICAgIHwgMDAwLCAwMDEsIC4uLiwgOTk5ICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgU1NTUyAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgTWlsbGlzZWNvbmRzIHRpbWVzdGFtcCAgICAgICAgICB8ICAyMCB8IFQgICAgICAgfCA1MTI5Njk1MjA5MDAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBUVCAgICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCBUaW1lem9uZSAoSVNPLTg2MDEgdy8gWikgICAgICAgIHwgIDEwIHwgWCAgICAgICB8IC0wOCwgKzA1MzAsIFogICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFhYICAgICAgfCAtMDgwMCwgKzA1MzAsIFogICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBYWFggICAgIHwgLTA4OjAwLCArMDU6MzAsIFogICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWFhYWCAgICB8IC0wODAwLCArMDUzMCwgWiwgKzEyMzQ1NiAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFhYWFhYICAgfCAtMDg6MDAsICswNTozMCwgWiwgKzEyOjM0OjU2ICAgICAgfCAgICAgICB8XG4gKiB8IFRpbWV6b25lIChJU08tODYwMSB3L28gWikgICAgICAgfCAgMTAgfCB4ICAgICAgIHwgLTA4LCArMDUzMCwgKzAwICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeHggICAgICB8IC0wODAwLCArMDUzMCwgKzAwMDAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHh4eCAgICAgfCAtMDg6MDAsICswNTozMCwgKzAwOjAwICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB4eHh4ICAgIHwgLTA4MDAsICswNTMwLCArMDAwMCwgKzEyMzQ1NiAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeHh4eHggICB8IC0wODowMCwgKzA1OjMwLCArMDA6MDAsICsxMjozNDo1NiB8ICAgICAgIHxcbiAqIHwgTG9uZyBsb2NhbGl6ZWQgZGF0ZSAgICAgICAgICAgICB8ICBOQSB8IFAgICAgICAgfCAwNS8yOS8xNDUzICAgICAgICAgICAgICAgICAgICAgICAgfCA1LDggICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBQUCAgICAgIHwgTWF5IDI5LCAxNDUzICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUFBQICAgICB8IE1heSAyOXRoLCAxNDUzICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFBQUFAgICAgfCBTdW5kYXksIE1heSAyOXRoLCAxNDUzICAgICAgICAgICAgfCAyLDUsOCB8XG4gKiB8IExvbmcgbG9jYWxpemVkIHRpbWUgICAgICAgICAgICAgfCAgTkEgfCBwICAgICAgIHwgMTI6MDAgQU0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgNSw4ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgcHAgICAgICB8IDEyOjAwOjAwIEFNICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgQ29tYmluYXRpb24gb2YgZGF0ZSBhbmQgdGltZSAgICB8ICBOQSB8IFBwICAgICAgfCAwNS8yOS8xNDUzLCAxMjowMCBBTSAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBQUHBwICAgIHwgTWF5IDI5LCAxNDUzLCAxMjowMDowMCBBTSAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUFBQcHAgICB8IE1heSAyOXRoLCAxNDUzIGF0IC4uLiAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFBQUFBwcCAgfCBTdW5kYXksIE1heSAyOXRoLCAxNDUzIGF0IC4uLiAgICAgfCAyLDUsOCB8XG4gKiBOb3RlczpcbiAqIDEuIFwiRm9ybWF0dGluZ1wiIHVuaXRzIChlLmcuIGZvcm1hdHRpbmcgcXVhcnRlcikgaW4gdGhlIGRlZmF1bHQgZW4tVVMgbG9jYWxlXG4gKiAgICBhcmUgdGhlIHNhbWUgYXMgXCJzdGFuZC1hbG9uZVwiIHVuaXRzLCBidXQgYXJlIGRpZmZlcmVudCBpbiBzb21lIGxhbmd1YWdlcy5cbiAqICAgIFwiRm9ybWF0dGluZ1wiIHVuaXRzIGFyZSBkZWNsaW5lZCBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIG9mIHRoZSBsYW5ndWFnZVxuICogICAgaW4gdGhlIGNvbnRleHQgb2YgYSBkYXRlLiBcIlN0YW5kLWFsb25lXCIgdW5pdHMgYXJlIGFsd2F5cyBub21pbmF0aXZlIHNpbmd1bGFyLlxuICogICAgSW4gYGZvcm1hdGAgZnVuY3Rpb24sIHRoZXkgd2lsbCBwcm9kdWNlIGRpZmZlcmVudCByZXN1bHQ6XG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdkbyBMTExMJywge2xvY2FsZTogY3N9KSAvLz0+ICc2LiBsaXN0b3BhZCdgXG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdkbyBNTU1NJywge2xvY2FsZTogY3N9KSAvLz0+ICc2LiBsaXN0b3BhZHUnYFxuICpcbiAqICAgIGBwYXJzZWAgd2lsbCB0cnkgdG8gbWF0Y2ggYm90aCBmb3JtYXR0aW5nIGFuZCBzdGFuZC1hbG9uZSB1bml0cyBpbnRlcmNoYW5nYWJseS5cbiAqXG4gKiAyLiBBbnkgc2VxdWVuY2Ugb2YgdGhlIGlkZW50aWNhbCBsZXR0ZXJzIGlzIGEgcGF0dGVybiwgdW5sZXNzIGl0IGlzIGVzY2FwZWQgYnlcbiAqICAgIHRoZSBzaW5nbGUgcXVvdGUgY2hhcmFjdGVycyAoc2VlIGJlbG93KS5cbiAqICAgIElmIHRoZSBzZXF1ZW5jZSBpcyBsb25nZXIgdGhhbiBsaXN0ZWQgaW4gdGFibGU6XG4gKiAgICAtIGZvciBudW1lcmljYWwgdW5pdHMgKGB5eXl5eXl5eWApIGBwYXJzZWAgd2lsbCB0cnkgdG8gbWF0Y2ggYSBudW1iZXJcbiAqICAgICAgYXMgd2lkZSBhcyB0aGUgc2VxdWVuY2VcbiAqICAgIC0gZm9yIHRleHQgdW5pdHMgKGBNTU1NTU1NTWApIGBwYXJzZWAgd2lsbCB0cnkgdG8gbWF0Y2ggdGhlIHdpZGVzdCB2YXJpYXRpb24gb2YgdGhlIHVuaXQuXG4gKiAgICAgIFRoZXNlIHZhcmlhdGlvbnMgYXJlIG1hcmtlZCB3aXRoIFwiMlwiIGluIHRoZSBsYXN0IGNvbHVtbiBvZiB0aGUgdGFibGUuXG4gKlxuICogMy4gYFFRUVFRYCBhbmQgYHFxcXFxYCBjb3VsZCBiZSBub3Qgc3RyaWN0bHkgbnVtZXJpY2FsIGluIHNvbWUgbG9jYWxlcy5cbiAqICAgIFRoZXNlIHRva2VucyByZXByZXNlbnQgdGhlIHNob3J0ZXN0IGZvcm0gb2YgdGhlIHF1YXJ0ZXIuXG4gKlxuICogNC4gVGhlIG1haW4gZGlmZmVyZW5jZSBiZXR3ZWVuIGB5YCBhbmQgYHVgIHBhdHRlcm5zIGFyZSBCLkMuIHllYXJzOlxuICpcbiAqICAgIHwgWWVhciB8IGB5YCB8IGB1YCB8XG4gKiAgICB8LS0tLS0tfC0tLS0tfC0tLS0tfFxuICogICAgfCBBQyAxIHwgICAxIHwgICAxIHxcbiAqICAgIHwgQkMgMSB8ICAgMSB8ICAgMCB8XG4gKiAgICB8IEJDIDIgfCAgIDIgfCAgLTEgfFxuICpcbiAqICAgIEFsc28gYHl5YCB3aWxsIHRyeSB0byBndWVzcyB0aGUgY2VudHVyeSBvZiB0d28gZGlnaXQgeWVhciBieSBwcm94aW1pdHkgd2l0aCBgcmVmZXJlbmNlRGF0ZWA6XG4gKlxuICogICAgYHBhcnNlKCc1MCcsICd5eScsIG5ldyBEYXRlKDIwMTgsIDAsIDEpKSAvLz0+IFNhdCBKYW4gMDEgMjA1MCAwMDowMDowMGBcbiAqXG4gKiAgICBgcGFyc2UoJzc1JywgJ3l5JywgbmV3IERhdGUoMjAxOCwgMCwgMSkpIC8vPT4gV2VkIEphbiAwMSAxOTc1IDAwOjAwOjAwYFxuICpcbiAqICAgIHdoaWxlIGB1dWAgd2lsbCBqdXN0IGFzc2lnbiB0aGUgeWVhciBhcyBpczpcbiAqXG4gKiAgICBgcGFyc2UoJzUwJywgJ3V1JywgbmV3IERhdGUoMjAxOCwgMCwgMSkpIC8vPT4gU2F0IEphbiAwMSAwMDUwIDAwOjAwOjAwYFxuICpcbiAqICAgIGBwYXJzZSgnNzUnLCAndXUnLCBuZXcgRGF0ZSgyMDE4LCAwLCAxKSkgLy89PiBUdWUgSmFuIDAxIDAwNzUgMDA6MDA6MDBgXG4gKlxuICogICAgVGhlIHNhbWUgZGlmZmVyZW5jZSBpcyB0cnVlIGZvciBsb2NhbCBhbmQgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIChgWWAgYW5kIGBSYCksXG4gKiAgICBleGNlcHQgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhcnMgYXJlIGRlcGVuZGVudCBvbiBgb3B0aW9ucy53ZWVrU3RhcnRzT25gXG4gKiAgICBhbmQgYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCAoY29tcGFyZSBbc2V0SVNPV2Vla1llYXJde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3Mvc2V0SVNPV2Vla1llYXJ9XG4gKiAgICBhbmQgW3NldFdlZWtZZWFyXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL3NldFdlZWtZZWFyfSkuXG4gKlxuICogNS4gVGhlc2UgcGF0dGVybnMgYXJlIG5vdCBpbiB0aGUgVW5pY29kZSBUZWNobmljYWwgU3RhbmRhcmQgIzM1OlxuICogICAgLSBgaWA6IElTTyBkYXkgb2Ygd2Vla1xuICogICAgLSBgSWA6IElTTyB3ZWVrIG9mIHllYXJcbiAqICAgIC0gYFJgOiBJU08gd2Vlay1udW1iZXJpbmcgeWVhclxuICogICAgLSBgb2A6IG9yZGluYWwgbnVtYmVyIG1vZGlmaWVyXG4gKiAgICAtIGBQYDogbG9uZyBsb2NhbGl6ZWQgZGF0ZVxuICogICAgLSBgcGA6IGxvbmcgbG9jYWxpemVkIHRpbWVcbiAqXG4gKiA2LiBgWVlgIGFuZCBgWVlZWWAgdG9rZW5zIHJlcHJlc2VudCB3ZWVrLW51bWJlcmluZyB5ZWFycyBidXQgdGhleSBhcmUgb2Z0ZW4gY29uZnVzZWQgd2l0aCB5ZWFycy5cbiAqICAgIFlvdSBzaG91bGQgZW5hYmxlIGBvcHRpb25zLnVzZUFkZGl0aW9uYWxXZWVrWWVhclRva2Vuc2AgdG8gdXNlIHRoZW0uIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICpcbiAqIDcuIGBEYCBhbmQgYEREYCB0b2tlbnMgcmVwcmVzZW50IGRheXMgb2YgdGhlIHllYXIgYnV0IHRoZXkgYXJlIG9mdGhlbiBjb25mdXNlZCB3aXRoIGRheXMgb2YgdGhlIG1vbnRoLlxuICogICAgWW91IHNob3VsZCBlbmFibGUgYG9wdGlvbnMudXNlQWRkaXRpb25hbERheU9mWWVhclRva2Vuc2AgdG8gdXNlIHRoZW0uIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICpcbiAqIDguIGBQK2AgdG9rZW5zIGRvIG5vdCBoYXZlIGEgZGVmaW5lZCBwcmlvcml0eSBzaW5jZSB0aGV5IGFyZSBtZXJlbHkgYWxpYXNlcyB0byBvdGhlciB0b2tlbnMgYmFzZWRcbiAqICAgIG9uIHRoZSBnaXZlbiBsb2NhbGUuXG4gKlxuICogICAgdXNpbmcgYGVuLVVTYCBsb2NhbGU6IGBQYCA9PiBgTU0vZGQveXl5eWBcbiAqICAgIHVzaW5nIGBlbi1VU2AgbG9jYWxlOiBgcGAgPT4gYGhoOm1tIGFgXG4gKiAgICB1c2luZyBgcHQtQlJgIGxvY2FsZTogYFBgID0+IGBkZC9NTS95eXl5YFxuICogICAgdXNpbmcgYHB0LUJSYCBsb2NhbGU6IGBwYCA9PiBgSEg6bW1gXG4gKlxuICogVmFsdWVzIHdpbGwgYmUgYXNzaWduZWQgdG8gdGhlIGRhdGUgaW4gdGhlIGRlc2NlbmRpbmcgb3JkZXIgb2YgaXRzIHVuaXQncyBwcmlvcml0eS5cbiAqIFVuaXRzIG9mIGFuIGVxdWFsIHByaW9yaXR5IG92ZXJ3cml0ZSBlYWNoIG90aGVyIGluIHRoZSBvcmRlciBvZiBhcHBlYXJhbmNlLlxuICpcbiAqIElmIG5vIHZhbHVlcyBvZiBoaWdoZXIgcHJpb3JpdHkgYXJlIHBhcnNlZCAoZS5nLiB3aGVuIHBhcnNpbmcgc3RyaW5nICdKYW51YXJ5IDFzdCcgd2l0aG91dCBhIHllYXIpLFxuICogdGhlIHZhbHVlcyB3aWxsIGJlIHRha2VuIGZyb20gM3JkIGFyZ3VtZW50IGByZWZlcmVuY2VEYXRlYCB3aGljaCB3b3JrcyBhcyBhIGNvbnRleHQgb2YgcGFyc2luZy5cbiAqXG4gKiBgcmVmZXJlbmNlRGF0ZWAgbXVzdCBiZSBwYXNzZWQgZm9yIGNvcnJlY3Qgd29yayBvZiB0aGUgZnVuY3Rpb24uXG4gKiBJZiB5b3UncmUgbm90IHN1cmUgd2hpY2ggYHJlZmVyZW5jZURhdGVgIHRvIHN1cHBseSwgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIERhdGU6XG4gKiBgcGFyc2UoJzAyLzExLzIwMTQnLCAnTU0vZGQveXl5eScsIG5ldyBEYXRlKCkpYFxuICogSW4gdGhpcyBjYXNlIHBhcnNpbmcgd2lsbCBiZSBkb25lIGluIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IGRhdGUuXG4gKiBJZiBgcmVmZXJlbmNlRGF0ZWAgaXMgYEludmFsaWQgRGF0ZWAgb3IgYSB2YWx1ZSBub3QgY29udmVydGlibGUgdG8gdmFsaWQgYERhdGVgLFxuICogdGhlbiBgSW52YWxpZCBEYXRlYCB3aWxsIGJlIHJldHVybmVkLlxuICpcbiAqIFRoZSByZXN1bHQgbWF5IHZhcnkgYnkgbG9jYWxlLlxuICpcbiAqIElmIGBmb3JtYXRTdHJpbmdgIG1hdGNoZXMgd2l0aCBgZGF0ZVN0cmluZ2AgYnV0IGRvZXMgbm90IHByb3ZpZGVzIHRva2VucywgYHJlZmVyZW5jZURhdGVgIHdpbGwgYmUgcmV0dXJuZWQuXG4gKlxuICogSWYgcGFyc2luZyBmYWlsZWQsIGBJbnZhbGlkIERhdGVgIHdpbGwgYmUgcmV0dXJuZWQuXG4gKiBJbnZhbGlkIERhdGUgaXMgYSBEYXRlLCB3aG9zZSB0aW1lIHZhbHVlIGlzIE5hTi5cbiAqIFRpbWUgdmFsdWUgb2YgRGF0ZTogaHR0cDovL2VzNS5naXRodWIuaW8vI3gxNS45LjEuMVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBkYXRlU3RyaW5nIC0gdGhlIHN0cmluZyB0byBwYXJzZVxuICogQHBhcmFtIHtTdHJpbmd9IGZvcm1hdFN0cmluZyAtIHRoZSBzdHJpbmcgb2YgdG9rZW5zXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSByZWZlcmVuY2VEYXRlIC0gZGVmaW5lcyB2YWx1ZXMgbWlzc2luZyBmcm9tIHRoZSBwYXJzZWQgZGF0ZVN0cmluZ1xuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcGFyYW0gezF8MnwzfDR8NXw2fDd9IFtvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZT0xXSAtIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLnVzZUFkZGl0aW9uYWxXZWVrWWVhclRva2Vucz1mYWxzZV0gLSBpZiB0cnVlLCBhbGxvd3MgdXNhZ2Ugb2YgdGhlIHdlZWstbnVtYmVyaW5nIHllYXIgdG9rZW5zIGBZWWAgYW5kIGBZWVlZYDtcbiAqICAgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLnVzZUFkZGl0aW9uYWxEYXlPZlllYXJUb2tlbnM9ZmFsc2VdIC0gaWYgdHJ1ZSwgYWxsb3dzIHVzYWdlIG9mIHRoZSBkYXkgb2YgeWVhciB0b2tlbnMgYERgIGFuZCBgRERgO1xuICogICBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgcGFyc2VkIGRhdGVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMyBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLndlZWtTdGFydHNPbmAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDZcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDdcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmxvY2FsZWAgbXVzdCBjb250YWluIGBtYXRjaGAgcHJvcGVydHlcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IHVzZSBgeXl5eWAgaW5zdGVhZCBvZiBgWVlZWWAgZm9yIGZvcm1hdHRpbmcgeWVhcnMgdXNpbmcgW2Zvcm1hdCBwcm92aWRlZF0gdG8gdGhlIGlucHV0IFtpbnB1dCBwcm92aWRlZF07IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gdXNlIGB5eWAgaW5zdGVhZCBvZiBgWVlgIGZvciBmb3JtYXR0aW5nIHllYXJzIHVzaW5nIFtmb3JtYXQgcHJvdmlkZWRdIHRvIHRoZSBpbnB1dCBbaW5wdXQgcHJvdmlkZWRdOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IHVzZSBgZGAgaW5zdGVhZCBvZiBgRGAgZm9yIGZvcm1hdHRpbmcgZGF5cyBvZiB0aGUgbW9udGggdXNpbmcgW2Zvcm1hdCBwcm92aWRlZF0gdG8gdGhlIGlucHV0IFtpbnB1dCBwcm92aWRlZF07IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gdXNlIGBkZGAgaW5zdGVhZCBvZiBgRERgIGZvciBmb3JtYXR0aW5nIGRheXMgb2YgdGhlIG1vbnRoIHVzaW5nIFtmb3JtYXQgcHJvdmlkZWRdIHRvIHRoZSBpbnB1dCBbaW5wdXQgcHJvdmlkZWRdOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGZvcm1hdCBzdHJpbmcgY29udGFpbnMgYW4gdW5lc2NhcGVkIGxhdGluIGFscGhhYmV0IGNoYXJhY3RlclxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBQYXJzZSAxMSBGZWJydWFyeSAyMDE0IGZyb20gbWlkZGxlLWVuZGlhbiBmb3JtYXQ6XG4gKiB2YXIgcmVzdWx0ID0gcGFyc2UoJzAyLzExLzIwMTQnLCAnTU0vZGQveXl5eScsIG5ldyBEYXRlKCkpXG4gKiAvLz0+IFR1ZSBGZWIgMTEgMjAxNCAwMDowMDowMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBQYXJzZSAyOHRoIG9mIEZlYnJ1YXJ5IGluIEVzcGVyYW50byBsb2NhbGUgaW4gdGhlIGNvbnRleHQgb2YgMjAxMCB5ZWFyOlxuICogaW1wb3J0IGVvIGZyb20gJ2RhdGUtZm5zL2xvY2FsZS9lbydcbiAqIHZhciByZXN1bHQgPSBwYXJzZSgnMjgtYSBkZSBmZWJydWFybycsIFwiZG8gJ2RlJyBNTU1NXCIsIG5ldyBEYXRlKDIwMTAsIDAsIDEpLCB7XG4gKiAgIGxvY2FsZTogZW9cbiAqIH0pXG4gKiAvLz0+IFN1biBGZWIgMjggMjAxMCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwYXJzZShkaXJ0eURhdGVTdHJpbmcsIGRpcnR5Rm9ybWF0U3RyaW5nLCBkaXJ0eVJlZmVyZW5jZURhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9vcHRpb25zJGxvY2FsZSwgX3JlZjIsIF9yZWYzLCBfcmVmNCwgX29wdGlvbnMkZmlyc3RXZWVrQ29uLCBfb3B0aW9ucyRsb2NhbGUyLCBfb3B0aW9ucyRsb2NhbGUyJG9wdGksIF9kZWZhdWx0T3B0aW9ucyRsb2NhbCwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMiwgX3JlZjUsIF9yZWY2LCBfcmVmNywgX29wdGlvbnMkd2Vla1N0YXJ0c09uLCBfb3B0aW9ucyRsb2NhbGUzLCBfb3B0aW9ucyRsb2NhbGUzJG9wdGksIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDMsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDQ7XG4gIHJlcXVpcmVkQXJncygzLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZVN0cmluZyA9IFN0cmluZyhkaXJ0eURhdGVTdHJpbmcpO1xuICB2YXIgZm9ybWF0U3RyaW5nID0gU3RyaW5nKGRpcnR5Rm9ybWF0U3RyaW5nKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIGxvY2FsZSA9IChfcmVmID0gKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5sb2NhbGUpICE9PSBudWxsICYmIF9vcHRpb25zJGxvY2FsZSAhPT0gdm9pZCAwID8gX29wdGlvbnMkbG9jYWxlIDogZGVmYXVsdE9wdGlvbnMubG9jYWxlKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB2b2lkIDAgPyBfcmVmIDogZGVmYXVsdExvY2FsZTtcbiAgaWYgKCFsb2NhbGUubWF0Y2gpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignbG9jYWxlIG11c3QgY29udGFpbiBtYXRjaCBwcm9wZXJ0eScpO1xuICB9XG4gIHZhciBmaXJzdFdlZWtDb250YWluc0RhdGUgPSB0b0ludGVnZXIoKF9yZWYyID0gKF9yZWYzID0gKF9yZWY0ID0gKF9vcHRpb25zJGZpcnN0V2Vla0NvbiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9vcHRpb25zJGZpcnN0V2Vla0NvbiAhPT0gdm9pZCAwID8gX29wdGlvbnMkZmlyc3RXZWVrQ29uIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlMiA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUyID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlMiRvcHRpID0gX29wdGlvbnMkbG9jYWxlMi5vcHRpb25zKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUyJG9wdGkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb25zJGxvY2FsZTIkb3B0aS5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWY0ICE9PSB2b2lkIDAgPyBfcmVmNCA6IGRlZmF1bHRPcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZjMgIT09IHZvaWQgMCA/IF9yZWYzIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZjIgIT09IHZvaWQgMCA/IF9yZWYyIDogMSk7XG5cbiAgLy8gVGVzdCBpZiB3ZWVrU3RhcnRzT24gaXMgYmV0d2VlbiAxIGFuZCA3IF9hbmRfIGlzIG5vdCBOYU5cbiAgaWYgKCEoZmlyc3RXZWVrQ29udGFpbnNEYXRlID49IDEgJiYgZmlyc3RXZWVrQ29udGFpbnNEYXRlIDw9IDcpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2ZpcnN0V2Vla0NvbnRhaW5zRGF0ZSBtdXN0IGJlIGJldHdlZW4gMSBhbmQgNyBpbmNsdXNpdmVseScpO1xuICB9XG4gIHZhciB3ZWVrU3RhcnRzT24gPSB0b0ludGVnZXIoKF9yZWY1ID0gKF9yZWY2ID0gKF9yZWY3ID0gKF9vcHRpb25zJHdlZWtTdGFydHNPbiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9vcHRpb25zJHdlZWtTdGFydHNPbiAhPT0gdm9pZCAwID8gX29wdGlvbnMkd2Vla1N0YXJ0c09uIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlMyA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUzID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlMyRvcHRpID0gX29wdGlvbnMkbG9jYWxlMy5vcHRpb25zKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUzJG9wdGkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9vcHRpb25zJGxvY2FsZTMkb3B0aS53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWY3ICE9PSB2b2lkIDAgPyBfcmVmNyA6IGRlZmF1bHRPcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjYgIT09IHZvaWQgMCA/IF9yZWY2IDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDMgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWw0ID0gX2RlZmF1bHRPcHRpb25zJGxvY2FsMy5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWw0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmYXVsdE9wdGlvbnMkbG9jYWw0LndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjUgIT09IHZvaWQgMCA/IF9yZWY1IDogMCk7XG5cbiAgLy8gVGVzdCBpZiB3ZWVrU3RhcnRzT24gaXMgYmV0d2VlbiAwIGFuZCA2IF9hbmRfIGlzIG5vdCBOYU5cbiAgaWYgKCEod2Vla1N0YXJ0c09uID49IDAgJiYgd2Vla1N0YXJ0c09uIDw9IDYpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3dlZWtTdGFydHNPbiBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNiBpbmNsdXNpdmVseScpO1xuICB9XG4gIGlmIChmb3JtYXRTdHJpbmcgPT09ICcnKSB7XG4gICAgaWYgKGRhdGVTdHJpbmcgPT09ICcnKSB7XG4gICAgICByZXR1cm4gdG9EYXRlKGRpcnR5UmVmZXJlbmNlRGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICAgIH1cbiAgfVxuICB2YXIgc3ViRm5PcHRpb25zID0ge1xuICAgIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZTogZmlyc3RXZWVrQ29udGFpbnNEYXRlLFxuICAgIHdlZWtTdGFydHNPbjogd2Vla1N0YXJ0c09uLFxuICAgIGxvY2FsZTogbG9jYWxlXG4gIH07XG5cbiAgLy8gSWYgdGltZXpvbmUgaXNuJ3Qgc3BlY2lmaWVkLCBpdCB3aWxsIGJlIHNldCB0byB0aGUgc3lzdGVtIHRpbWV6b25lXG4gIHZhciBzZXR0ZXJzID0gW25ldyBEYXRlVG9TeXN0ZW1UaW1lem9uZVNldHRlcigpXTtcbiAgdmFyIHRva2VucyA9IGZvcm1hdFN0cmluZy5tYXRjaChsb25nRm9ybWF0dGluZ1Rva2Vuc1JlZ0V4cCkubWFwKGZ1bmN0aW9uIChzdWJzdHJpbmcpIHtcbiAgICB2YXIgZmlyc3RDaGFyYWN0ZXIgPSBzdWJzdHJpbmdbMF07XG4gICAgaWYgKGZpcnN0Q2hhcmFjdGVyIGluIGxvbmdGb3JtYXR0ZXJzKSB7XG4gICAgICB2YXIgbG9uZ0Zvcm1hdHRlciA9IGxvbmdGb3JtYXR0ZXJzW2ZpcnN0Q2hhcmFjdGVyXTtcbiAgICAgIHJldHVybiBsb25nRm9ybWF0dGVyKHN1YnN0cmluZywgbG9jYWxlLmZvcm1hdExvbmcpO1xuICAgIH1cbiAgICByZXR1cm4gc3Vic3RyaW5nO1xuICB9KS5qb2luKCcnKS5tYXRjaChmb3JtYXR0aW5nVG9rZW5zUmVnRXhwKTtcbiAgdmFyIHVzZWRUb2tlbnMgPSBbXTtcbiAgdmFyIF9pdGVyYXRvciA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHRva2VucyksXG4gICAgX3N0ZXA7XG4gIHRyeSB7XG4gICAgdmFyIF9sb29wID0gZnVuY3Rpb24gX2xvb3AoKSB7XG4gICAgICB2YXIgdG9rZW4gPSBfc3RlcC52YWx1ZTtcbiAgICAgIGlmICghKG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdm9pZCAwICYmIG9wdGlvbnMudXNlQWRkaXRpb25hbFdlZWtZZWFyVG9rZW5zKSAmJiBpc1Byb3RlY3RlZFdlZWtZZWFyVG9rZW4odG9rZW4pKSB7XG4gICAgICAgIHRocm93UHJvdGVjdGVkRXJyb3IodG9rZW4sIGZvcm1hdFN0cmluZywgZGlydHlEYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICAgIGlmICghKG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdm9pZCAwICYmIG9wdGlvbnMudXNlQWRkaXRpb25hbERheU9mWWVhclRva2VucykgJiYgaXNQcm90ZWN0ZWREYXlPZlllYXJUb2tlbih0b2tlbikpIHtcbiAgICAgICAgdGhyb3dQcm90ZWN0ZWRFcnJvcih0b2tlbiwgZm9ybWF0U3RyaW5nLCBkaXJ0eURhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgICAgdmFyIGZpcnN0Q2hhcmFjdGVyID0gdG9rZW5bMF07XG4gICAgICB2YXIgcGFyc2VyID0gcGFyc2Vyc1tmaXJzdENoYXJhY3Rlcl07XG4gICAgICBpZiAocGFyc2VyKSB7XG4gICAgICAgIHZhciBpbmNvbXBhdGlibGVUb2tlbnMgPSBwYXJzZXIuaW5jb21wYXRpYmxlVG9rZW5zO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpbmNvbXBhdGlibGVUb2tlbnMpKSB7XG4gICAgICAgICAgdmFyIGluY29tcGF0aWJsZVRva2VuID0gdXNlZFRva2Vucy5maW5kKGZ1bmN0aW9uICh1c2VkVG9rZW4pIHtcbiAgICAgICAgICAgIHJldHVybiBpbmNvbXBhdGlibGVUb2tlbnMuaW5jbHVkZXModXNlZFRva2VuLnRva2VuKSB8fCB1c2VkVG9rZW4udG9rZW4gPT09IGZpcnN0Q2hhcmFjdGVyO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChpbmNvbXBhdGlibGVUb2tlbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJUaGUgZm9ybWF0IHN0cmluZyBtdXN0bid0IGNvbnRhaW4gYFwiLmNvbmNhdChpbmNvbXBhdGlibGVUb2tlbi5mdWxsVG9rZW4sIFwiYCBhbmQgYFwiKS5jb25jYXQodG9rZW4sIFwiYCBhdCB0aGUgc2FtZSB0aW1lXCIpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAocGFyc2VyLmluY29tcGF0aWJsZVRva2VucyA9PT0gJyonICYmIHVzZWRUb2tlbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiVGhlIGZvcm1hdCBzdHJpbmcgbXVzdG4ndCBjb250YWluIGBcIi5jb25jYXQodG9rZW4sIFwiYCBhbmQgYW55IG90aGVyIHRva2VuIGF0IHRoZSBzYW1lIHRpbWVcIikpO1xuICAgICAgICB9XG4gICAgICAgIHVzZWRUb2tlbnMucHVzaCh7XG4gICAgICAgICAgdG9rZW46IGZpcnN0Q2hhcmFjdGVyLFxuICAgICAgICAgIGZ1bGxUb2tlbjogdG9rZW5cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwYXJzZVJlc3VsdCA9IHBhcnNlci5ydW4oZGF0ZVN0cmluZywgdG9rZW4sIGxvY2FsZS5tYXRjaCwgc3ViRm5PcHRpb25zKTtcbiAgICAgICAgaWYgKCFwYXJzZVJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2OiBuZXcgRGF0ZShOYU4pXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBzZXR0ZXJzLnB1c2gocGFyc2VSZXN1bHQuc2V0dGVyKTtcbiAgICAgICAgZGF0ZVN0cmluZyA9IHBhcnNlUmVzdWx0LnJlc3Q7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZmlyc3RDaGFyYWN0ZXIubWF0Y2godW5lc2NhcGVkTGF0aW5DaGFyYWN0ZXJSZWdFeHApKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0Zvcm1hdCBzdHJpbmcgY29udGFpbnMgYW4gdW5lc2NhcGVkIGxhdGluIGFscGhhYmV0IGNoYXJhY3RlciBgJyArIGZpcnN0Q2hhcmFjdGVyICsgJ2AnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlcGxhY2UgdHdvIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzIHdpdGggb25lIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJcbiAgICAgICAgaWYgKHRva2VuID09PSBcIicnXCIpIHtcbiAgICAgICAgICB0b2tlbiA9IFwiJ1wiO1xuICAgICAgICB9IGVsc2UgaWYgKGZpcnN0Q2hhcmFjdGVyID09PSBcIidcIikge1xuICAgICAgICAgIHRva2VuID0gY2xlYW5Fc2NhcGVkU3RyaW5nKHRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEN1dCB0b2tlbiBmcm9tIHN0cmluZywgb3IsIGlmIHN0cmluZyBkb2Vzbid0IG1hdGNoIHRoZSB0b2tlbiwgcmV0dXJuIEludmFsaWQgRGF0ZVxuICAgICAgICBpZiAoZGF0ZVN0cmluZy5pbmRleE9mKHRva2VuKSA9PT0gMCkge1xuICAgICAgICAgIGRhdGVTdHJpbmcgPSBkYXRlU3RyaW5nLnNsaWNlKHRva2VuLmxlbmd0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHY6IG5ldyBEYXRlKE5hTilcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICBmb3IgKF9pdGVyYXRvci5zKCk7ICEoX3N0ZXAgPSBfaXRlcmF0b3IubigpKS5kb25lOykge1xuICAgICAgdmFyIF9yZXQgPSBfbG9vcCgpO1xuICAgICAgaWYgKF90eXBlb2YoX3JldCkgPT09IFwib2JqZWN0XCIpIHJldHVybiBfcmV0LnY7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIHJlbWFpbmluZyBpbnB1dCBjb250YWlucyBzb21ldGhpbmcgb3RoZXIgdGhhbiB3aGl0ZXNwYWNlXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIF9pdGVyYXRvci5lKGVycik7XG4gIH0gZmluYWxseSB7XG4gICAgX2l0ZXJhdG9yLmYoKTtcbiAgfVxuICBpZiAoZGF0ZVN0cmluZy5sZW5ndGggPiAwICYmIG5vdFdoaXRlc3BhY2VSZWdFeHAudGVzdChkYXRlU3RyaW5nKSkge1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG4gIHZhciB1bmlxdWVQcmlvcml0eVNldHRlcnMgPSBzZXR0ZXJzLm1hcChmdW5jdGlvbiAoc2V0dGVyKSB7XG4gICAgcmV0dXJuIHNldHRlci5wcmlvcml0eTtcbiAgfSkuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgIHJldHVybiBiIC0gYTtcbiAgfSkuZmlsdGVyKGZ1bmN0aW9uIChwcmlvcml0eSwgaW5kZXgsIGFycmF5KSB7XG4gICAgcmV0dXJuIGFycmF5LmluZGV4T2YocHJpb3JpdHkpID09PSBpbmRleDtcbiAgfSkubWFwKGZ1bmN0aW9uIChwcmlvcml0eSkge1xuICAgIHJldHVybiBzZXR0ZXJzLmZpbHRlcihmdW5jdGlvbiAoc2V0dGVyKSB7XG4gICAgICByZXR1cm4gc2V0dGVyLnByaW9yaXR5ID09PSBwcmlvcml0eTtcbiAgICB9KS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gYi5zdWJQcmlvcml0eSAtIGEuc3ViUHJpb3JpdHk7XG4gICAgfSk7XG4gIH0pLm1hcChmdW5jdGlvbiAoc2V0dGVyQXJyYXkpIHtcbiAgICByZXR1cm4gc2V0dGVyQXJyYXlbMF07XG4gIH0pO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eVJlZmVyZW5jZURhdGUpO1xuICBpZiAoaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cblxuICAvLyBDb252ZXJ0IHRoZSBkYXRlIGluIHN5c3RlbSB0aW1lem9uZSB0byB0aGUgc2FtZSBkYXRlIGluIFVUQyswMDowMCB0aW1lem9uZS5cbiAgdmFyIHV0Y0RhdGUgPSBzdWJNaWxsaXNlY29uZHMoZGF0ZSwgZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhkYXRlKSk7XG4gIHZhciBmbGFncyA9IHt9O1xuICB2YXIgX2l0ZXJhdG9yMiA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHVuaXF1ZVByaW9yaXR5U2V0dGVycyksXG4gICAgX3N0ZXAyO1xuICB0cnkge1xuICAgIGZvciAoX2l0ZXJhdG9yMi5zKCk7ICEoX3N0ZXAyID0gX2l0ZXJhdG9yMi5uKCkpLmRvbmU7KSB7XG4gICAgICB2YXIgc2V0dGVyID0gX3N0ZXAyLnZhbHVlO1xuICAgICAgaWYgKCFzZXR0ZXIudmFsaWRhdGUodXRjRGF0ZSwgc3ViRm5PcHRpb25zKSkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSBzZXR0ZXIuc2V0KHV0Y0RhdGUsIGZsYWdzLCBzdWJGbk9wdGlvbnMpO1xuICAgICAgLy8gUmVzdWx0IGlzIHR1cGxlIChkYXRlLCBmbGFncylcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICAgICAgdXRjRGF0ZSA9IHJlc3VsdFswXTtcbiAgICAgICAgYXNzaWduKGZsYWdzLCByZXN1bHRbMV0pO1xuICAgICAgICAvLyBSZXN1bHQgaXMgZGF0ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXRjRGF0ZSA9IHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIF9pdGVyYXRvcjIuZShlcnIpO1xuICB9IGZpbmFsbHkge1xuICAgIF9pdGVyYXRvcjIuZigpO1xuICB9XG4gIHJldHVybiB1dGNEYXRlO1xufVxuZnVuY3Rpb24gY2xlYW5Fc2NhcGVkU3RyaW5nKGlucHV0KSB7XG4gIHJldHVybiBpbnB1dC5tYXRjaChlc2NhcGVkU3RyaW5nUmVnRXhwKVsxXS5yZXBsYWNlKGRvdWJsZVF1b3RlUmVnRXhwLCBcIidcIik7XG59IiwiaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5Ib3VyLCBtaWxsaXNlY29uZHNJbk1pbnV0ZSB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBwYXJzZUlTT1xuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBQYXJzZSBJU08gc3RyaW5nXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBQYXJzZSB0aGUgZ2l2ZW4gc3RyaW5nIGluIElTTyA4NjAxIGZvcm1hdCBhbmQgcmV0dXJuIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogRnVuY3Rpb24gYWNjZXB0cyBjb21wbGV0ZSBJU08gODYwMSBmb3JtYXRzIGFzIHdlbGwgYXMgcGFydGlhbCBpbXBsZW1lbnRhdGlvbnMuXG4gKiBJU08gODYwMTogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMVxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpc24ndCBhIHN0cmluZywgdGhlIGZ1bmN0aW9uIGNhbm5vdCBwYXJzZSB0aGUgc3RyaW5nIG9yXG4gKiB0aGUgdmFsdWVzIGFyZSBpbnZhbGlkLCBpdCByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gYXJndW1lbnQgLSB0aGUgdmFsdWUgdG8gY29udmVydFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0gezB8MXwyfSBbb3B0aW9ucy5hZGRpdGlvbmFsRGlnaXRzPTJdIC0gdGhlIGFkZGl0aW9uYWwgbnVtYmVyIG9mIGRpZ2l0cyBpbiB0aGUgZXh0ZW5kZWQgeWVhciBmb3JtYXRcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5hZGRpdGlvbmFsRGlnaXRzYCBtdXN0IGJlIDAsIDEgb3IgMlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHN0cmluZyAnMjAxNC0wMi0xMVQxMTozMDozMCcgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHBhcnNlSVNPKCcyMDE0LTAyLTExVDExOjMwOjMwJylcbiAqIC8vPT4gVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgc3RyaW5nICcrMDIwMTQxMDEnIHRvIGRhdGUsXG4gKiAvLyBpZiB0aGUgYWRkaXRpb25hbCBudW1iZXIgb2YgZGlnaXRzIGluIHRoZSBleHRlbmRlZCB5ZWFyIGZvcm1hdCBpcyAxOlxuICogY29uc3QgcmVzdWx0ID0gcGFyc2VJU08oJyswMjAxNDEwMScsIHsgYWRkaXRpb25hbERpZ2l0czogMSB9KVxuICogLy89PiBGcmkgQXByIDExIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGFyc2VJU08oYXJndW1lbnQsIG9wdGlvbnMpIHtcbiAgdmFyIF9vcHRpb25zJGFkZGl0aW9uYWxEaTtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBhZGRpdGlvbmFsRGlnaXRzID0gdG9JbnRlZ2VyKChfb3B0aW9ucyRhZGRpdGlvbmFsRGkgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuYWRkaXRpb25hbERpZ2l0cykgIT09IG51bGwgJiYgX29wdGlvbnMkYWRkaXRpb25hbERpICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRhZGRpdGlvbmFsRGkgOiAyKTtcbiAgaWYgKGFkZGl0aW9uYWxEaWdpdHMgIT09IDIgJiYgYWRkaXRpb25hbERpZ2l0cyAhPT0gMSAmJiBhZGRpdGlvbmFsRGlnaXRzICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2FkZGl0aW9uYWxEaWdpdHMgbXVzdCBiZSAwLCAxIG9yIDInKTtcbiAgfVxuICBpZiAoISh0eXBlb2YgYXJndW1lbnQgPT09ICdzdHJpbmcnIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCkgPT09ICdbb2JqZWN0IFN0cmluZ10nKSkge1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG4gIHZhciBkYXRlU3RyaW5ncyA9IHNwbGl0RGF0ZVN0cmluZyhhcmd1bWVudCk7XG4gIHZhciBkYXRlO1xuICBpZiAoZGF0ZVN0cmluZ3MuZGF0ZSkge1xuICAgIHZhciBwYXJzZVllYXJSZXN1bHQgPSBwYXJzZVllYXIoZGF0ZVN0cmluZ3MuZGF0ZSwgYWRkaXRpb25hbERpZ2l0cyk7XG4gICAgZGF0ZSA9IHBhcnNlRGF0ZShwYXJzZVllYXJSZXN1bHQucmVzdERhdGVTdHJpbmcsIHBhcnNlWWVhclJlc3VsdC55ZWFyKTtcbiAgfVxuICBpZiAoIWRhdGUgfHwgaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbiAgdmFyIHRpbWVzdGFtcCA9IGRhdGUuZ2V0VGltZSgpO1xuICB2YXIgdGltZSA9IDA7XG4gIHZhciBvZmZzZXQ7XG4gIGlmIChkYXRlU3RyaW5ncy50aW1lKSB7XG4gICAgdGltZSA9IHBhcnNlVGltZShkYXRlU3RyaW5ncy50aW1lKTtcbiAgICBpZiAoaXNOYU4odGltZSkpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICAgIH1cbiAgfVxuICBpZiAoZGF0ZVN0cmluZ3MudGltZXpvbmUpIHtcbiAgICBvZmZzZXQgPSBwYXJzZVRpbWV6b25lKGRhdGVTdHJpbmdzLnRpbWV6b25lKTtcbiAgICBpZiAoaXNOYU4ob2Zmc2V0KSkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBkaXJ0eURhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXAgKyB0aW1lKTtcbiAgICAvLyBqcyBwYXJzZWQgc3RyaW5nIGFzc3VtaW5nIGl0J3MgaW4gVVRDIHRpbWV6b25lXG4gICAgLy8gYnV0IHdlIG5lZWQgaXQgdG8gYmUgcGFyc2VkIGluIG91ciB0aW1lem9uZVxuICAgIC8vIHNvIHdlIHVzZSB1dGMgdmFsdWVzIHRvIGJ1aWxkIGRhdGUgaW4gb3VyIHRpbWV6b25lLlxuICAgIC8vIFllYXIgdmFsdWVzIGZyb20gMCB0byA5OSBtYXAgdG8gdGhlIHllYXJzIDE5MDAgdG8gMTk5OVxuICAgIC8vIHNvIHNldCB5ZWFyIGV4cGxpY2l0bHkgd2l0aCBzZXRGdWxsWWVhci5cbiAgICB2YXIgcmVzdWx0ID0gbmV3IERhdGUoMCk7XG4gICAgcmVzdWx0LnNldEZ1bGxZZWFyKGRpcnR5RGF0ZS5nZXRVVENGdWxsWWVhcigpLCBkaXJ0eURhdGUuZ2V0VVRDTW9udGgoKSwgZGlydHlEYXRlLmdldFVUQ0RhdGUoKSk7XG4gICAgcmVzdWx0LnNldEhvdXJzKGRpcnR5RGF0ZS5nZXRVVENIb3VycygpLCBkaXJ0eURhdGUuZ2V0VVRDTWludXRlcygpLCBkaXJ0eURhdGUuZ2V0VVRDU2Vjb25kcygpLCBkaXJ0eURhdGUuZ2V0VVRDTWlsbGlzZWNvbmRzKCkpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIG5ldyBEYXRlKHRpbWVzdGFtcCArIHRpbWUgKyBvZmZzZXQpO1xufVxudmFyIHBhdHRlcm5zID0ge1xuICBkYXRlVGltZURlbGltaXRlcjogL1tUIF0vLFxuICB0aW1lWm9uZURlbGltaXRlcjogL1taIF0vaSxcbiAgdGltZXpvbmU6IC8oW1orLV0uKikkL1xufTtcbnZhciBkYXRlUmVnZXggPSAvXi0/KD86KFxcZHszfSl8KFxcZHsyfSkoPzotPyhcXGR7Mn0pKT98VyhcXGR7Mn0pKD86LT8oXFxkezF9KSk/fCkkLztcbnZhciB0aW1lUmVnZXggPSAvXihcXGR7Mn0oPzpbLixdXFxkKik/KSg/Ojo/KFxcZHsyfSg/OlsuLF1cXGQqKT8pKT8oPzo6PyhcXGR7Mn0oPzpbLixdXFxkKik/KSk/JC87XG52YXIgdGltZXpvbmVSZWdleCA9IC9eKFsrLV0pKFxcZHsyfSkoPzo6PyhcXGR7Mn0pKT8kLztcbmZ1bmN0aW9uIHNwbGl0RGF0ZVN0cmluZyhkYXRlU3RyaW5nKSB7XG4gIHZhciBkYXRlU3RyaW5ncyA9IHt9O1xuICB2YXIgYXJyYXkgPSBkYXRlU3RyaW5nLnNwbGl0KHBhdHRlcm5zLmRhdGVUaW1lRGVsaW1pdGVyKTtcbiAgdmFyIHRpbWVTdHJpbmc7XG5cbiAgLy8gVGhlIHJlZ2V4IG1hdGNoIHNob3VsZCBvbmx5IHJldHVybiBhdCBtYXhpbXVtIHR3byBhcnJheSBlbGVtZW50cy5cbiAgLy8gW2RhdGVdLCBbdGltZV0sIG9yIFtkYXRlLCB0aW1lXS5cbiAgaWYgKGFycmF5Lmxlbmd0aCA+IDIpIHtcbiAgICByZXR1cm4gZGF0ZVN0cmluZ3M7XG4gIH1cbiAgaWYgKC86Ly50ZXN0KGFycmF5WzBdKSkge1xuICAgIHRpbWVTdHJpbmcgPSBhcnJheVswXTtcbiAgfSBlbHNlIHtcbiAgICBkYXRlU3RyaW5ncy5kYXRlID0gYXJyYXlbMF07XG4gICAgdGltZVN0cmluZyA9IGFycmF5WzFdO1xuICAgIGlmIChwYXR0ZXJucy50aW1lWm9uZURlbGltaXRlci50ZXN0KGRhdGVTdHJpbmdzLmRhdGUpKSB7XG4gICAgICBkYXRlU3RyaW5ncy5kYXRlID0gZGF0ZVN0cmluZy5zcGxpdChwYXR0ZXJucy50aW1lWm9uZURlbGltaXRlcilbMF07XG4gICAgICB0aW1lU3RyaW5nID0gZGF0ZVN0cmluZy5zdWJzdHIoZGF0ZVN0cmluZ3MuZGF0ZS5sZW5ndGgsIGRhdGVTdHJpbmcubGVuZ3RoKTtcbiAgICB9XG4gIH1cbiAgaWYgKHRpbWVTdHJpbmcpIHtcbiAgICB2YXIgdG9rZW4gPSBwYXR0ZXJucy50aW1lem9uZS5leGVjKHRpbWVTdHJpbmcpO1xuICAgIGlmICh0b2tlbikge1xuICAgICAgZGF0ZVN0cmluZ3MudGltZSA9IHRpbWVTdHJpbmcucmVwbGFjZSh0b2tlblsxXSwgJycpO1xuICAgICAgZGF0ZVN0cmluZ3MudGltZXpvbmUgPSB0b2tlblsxXTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0ZVN0cmluZ3MudGltZSA9IHRpbWVTdHJpbmc7XG4gICAgfVxuICB9XG4gIHJldHVybiBkYXRlU3RyaW5ncztcbn1cbmZ1bmN0aW9uIHBhcnNlWWVhcihkYXRlU3RyaW5nLCBhZGRpdGlvbmFsRGlnaXRzKSB7XG4gIHZhciByZWdleCA9IG5ldyBSZWdFeHAoJ14oPzooXFxcXGR7NH18WystXVxcXFxkeycgKyAoNCArIGFkZGl0aW9uYWxEaWdpdHMpICsgJ30pfChcXFxcZHsyfXxbKy1dXFxcXGR7JyArICgyICsgYWRkaXRpb25hbERpZ2l0cykgKyAnfSkkKScpO1xuICB2YXIgY2FwdHVyZXMgPSBkYXRlU3RyaW5nLm1hdGNoKHJlZ2V4KTtcbiAgLy8gSW52YWxpZCBJU08tZm9ybWF0dGVkIHllYXJcbiAgaWYgKCFjYXB0dXJlcykgcmV0dXJuIHtcbiAgICB5ZWFyOiBOYU4sXG4gICAgcmVzdERhdGVTdHJpbmc6ICcnXG4gIH07XG4gIHZhciB5ZWFyID0gY2FwdHVyZXNbMV0gPyBwYXJzZUludChjYXB0dXJlc1sxXSkgOiBudWxsO1xuICB2YXIgY2VudHVyeSA9IGNhcHR1cmVzWzJdID8gcGFyc2VJbnQoY2FwdHVyZXNbMl0pIDogbnVsbDtcblxuICAvLyBlaXRoZXIgeWVhciBvciBjZW50dXJ5IGlzIG51bGwsIG5vdCBib3RoXG4gIHJldHVybiB7XG4gICAgeWVhcjogY2VudHVyeSA9PT0gbnVsbCA/IHllYXIgOiBjZW50dXJ5ICogMTAwLFxuICAgIHJlc3REYXRlU3RyaW5nOiBkYXRlU3RyaW5nLnNsaWNlKChjYXB0dXJlc1sxXSB8fCBjYXB0dXJlc1syXSkubGVuZ3RoKVxuICB9O1xufVxuZnVuY3Rpb24gcGFyc2VEYXRlKGRhdGVTdHJpbmcsIHllYXIpIHtcbiAgLy8gSW52YWxpZCBJU08tZm9ybWF0dGVkIHllYXJcbiAgaWYgKHllYXIgPT09IG51bGwpIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB2YXIgY2FwdHVyZXMgPSBkYXRlU3RyaW5nLm1hdGNoKGRhdGVSZWdleCk7XG4gIC8vIEludmFsaWQgSVNPLWZvcm1hdHRlZCBzdHJpbmdcbiAgaWYgKCFjYXB0dXJlcykgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIHZhciBpc1dlZWtEYXRlID0gISFjYXB0dXJlc1s0XTtcbiAgdmFyIGRheU9mWWVhciA9IHBhcnNlRGF0ZVVuaXQoY2FwdHVyZXNbMV0pO1xuICB2YXIgbW9udGggPSBwYXJzZURhdGVVbml0KGNhcHR1cmVzWzJdKSAtIDE7XG4gIHZhciBkYXkgPSBwYXJzZURhdGVVbml0KGNhcHR1cmVzWzNdKTtcbiAgdmFyIHdlZWsgPSBwYXJzZURhdGVVbml0KGNhcHR1cmVzWzRdKTtcbiAgdmFyIGRheU9mV2VlayA9IHBhcnNlRGF0ZVVuaXQoY2FwdHVyZXNbNV0pIC0gMTtcbiAgaWYgKGlzV2Vla0RhdGUpIHtcbiAgICBpZiAoIXZhbGlkYXRlV2Vla0RhdGUoeWVhciwgd2VlaywgZGF5T2ZXZWVrKSkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gICAgfVxuICAgIHJldHVybiBkYXlPZklTT1dlZWtZZWFyKHllYXIsIHdlZWssIGRheU9mV2Vlayk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgwKTtcbiAgICBpZiAoIXZhbGlkYXRlRGF0ZSh5ZWFyLCBtb250aCwgZGF5KSB8fCAhdmFsaWRhdGVEYXlPZlllYXJEYXRlKHllYXIsIGRheU9mWWVhcikpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICAgIH1cbiAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHllYXIsIG1vbnRoLCBNYXRoLm1heChkYXlPZlllYXIsIGRheSkpO1xuICAgIHJldHVybiBkYXRlO1xuICB9XG59XG5mdW5jdGlvbiBwYXJzZURhdGVVbml0KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA/IHBhcnNlSW50KHZhbHVlKSA6IDE7XG59XG5mdW5jdGlvbiBwYXJzZVRpbWUodGltZVN0cmluZykge1xuICB2YXIgY2FwdHVyZXMgPSB0aW1lU3RyaW5nLm1hdGNoKHRpbWVSZWdleCk7XG4gIGlmICghY2FwdHVyZXMpIHJldHVybiBOYU47IC8vIEludmFsaWQgSVNPLWZvcm1hdHRlZCB0aW1lXG5cbiAgdmFyIGhvdXJzID0gcGFyc2VUaW1lVW5pdChjYXB0dXJlc1sxXSk7XG4gIHZhciBtaW51dGVzID0gcGFyc2VUaW1lVW5pdChjYXB0dXJlc1syXSk7XG4gIHZhciBzZWNvbmRzID0gcGFyc2VUaW1lVW5pdChjYXB0dXJlc1szXSk7XG4gIGlmICghdmFsaWRhdGVUaW1lKGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKSkge1xuICAgIHJldHVybiBOYU47XG4gIH1cbiAgcmV0dXJuIGhvdXJzICogbWlsbGlzZWNvbmRzSW5Ib3VyICsgbWludXRlcyAqIG1pbGxpc2Vjb25kc0luTWludXRlICsgc2Vjb25kcyAqIDEwMDA7XG59XG5mdW5jdGlvbiBwYXJzZVRpbWVVbml0KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAmJiBwYXJzZUZsb2F0KHZhbHVlLnJlcGxhY2UoJywnLCAnLicpKSB8fCAwO1xufVxuZnVuY3Rpb24gcGFyc2VUaW1lem9uZSh0aW1lem9uZVN0cmluZykge1xuICBpZiAodGltZXpvbmVTdHJpbmcgPT09ICdaJykgcmV0dXJuIDA7XG4gIHZhciBjYXB0dXJlcyA9IHRpbWV6b25lU3RyaW5nLm1hdGNoKHRpbWV6b25lUmVnZXgpO1xuICBpZiAoIWNhcHR1cmVzKSByZXR1cm4gMDtcbiAgdmFyIHNpZ24gPSBjYXB0dXJlc1sxXSA9PT0gJysnID8gLTEgOiAxO1xuICB2YXIgaG91cnMgPSBwYXJzZUludChjYXB0dXJlc1syXSk7XG4gIHZhciBtaW51dGVzID0gY2FwdHVyZXNbM10gJiYgcGFyc2VJbnQoY2FwdHVyZXNbM10pIHx8IDA7XG4gIGlmICghdmFsaWRhdGVUaW1lem9uZShob3VycywgbWludXRlcykpIHtcbiAgICByZXR1cm4gTmFOO1xuICB9XG4gIHJldHVybiBzaWduICogKGhvdXJzICogbWlsbGlzZWNvbmRzSW5Ib3VyICsgbWludXRlcyAqIG1pbGxpc2Vjb25kc0luTWludXRlKTtcbn1cbmZ1bmN0aW9uIGRheU9mSVNPV2Vla1llYXIoaXNvV2Vla1llYXIsIHdlZWssIGRheSkge1xuICB2YXIgZGF0ZSA9IG5ldyBEYXRlKDApO1xuICBkYXRlLnNldFVUQ0Z1bGxZZWFyKGlzb1dlZWtZZWFyLCAwLCA0KTtcbiAgdmFyIGZvdXJ0aE9mSmFudWFyeURheSA9IGRhdGUuZ2V0VVRDRGF5KCkgfHwgNztcbiAgdmFyIGRpZmYgPSAod2VlayAtIDEpICogNyArIGRheSArIDEgLSBmb3VydGhPZkphbnVhcnlEYXk7XG4gIGRhdGUuc2V0VVRDRGF0ZShkYXRlLmdldFVUQ0RhdGUoKSArIGRpZmYpO1xuICByZXR1cm4gZGF0ZTtcbn1cblxuLy8gVmFsaWRhdGlvbiBmdW5jdGlvbnNcblxuLy8gRmVicnVhcnkgaXMgbnVsbCB0byBoYW5kbGUgdGhlIGxlYXAgeWVhciAodXNpbmcgfHwpXG52YXIgZGF5c0luTW9udGhzID0gWzMxLCBudWxsLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMV07XG5mdW5jdGlvbiBpc0xlYXBZZWFySW5kZXgoeWVhcikge1xuICByZXR1cm4geWVhciAlIDQwMCA9PT0gMCB8fCB5ZWFyICUgNCA9PT0gMCAmJiB5ZWFyICUgMTAwICE9PSAwO1xufVxuZnVuY3Rpb24gdmFsaWRhdGVEYXRlKHllYXIsIG1vbnRoLCBkYXRlKSB7XG4gIHJldHVybiBtb250aCA+PSAwICYmIG1vbnRoIDw9IDExICYmIGRhdGUgPj0gMSAmJiBkYXRlIDw9IChkYXlzSW5Nb250aHNbbW9udGhdIHx8IChpc0xlYXBZZWFySW5kZXgoeWVhcikgPyAyOSA6IDI4KSk7XG59XG5mdW5jdGlvbiB2YWxpZGF0ZURheU9mWWVhckRhdGUoeWVhciwgZGF5T2ZZZWFyKSB7XG4gIHJldHVybiBkYXlPZlllYXIgPj0gMSAmJiBkYXlPZlllYXIgPD0gKGlzTGVhcFllYXJJbmRleCh5ZWFyKSA/IDM2NiA6IDM2NSk7XG59XG5mdW5jdGlvbiB2YWxpZGF0ZVdlZWtEYXRlKF95ZWFyLCB3ZWVrLCBkYXkpIHtcbiAgcmV0dXJuIHdlZWsgPj0gMSAmJiB3ZWVrIDw9IDUzICYmIGRheSA+PSAwICYmIGRheSA8PSA2O1xufVxuZnVuY3Rpb24gdmFsaWRhdGVUaW1lKGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKSB7XG4gIGlmIChob3VycyA9PT0gMjQpIHtcbiAgICByZXR1cm4gbWludXRlcyA9PT0gMCAmJiBzZWNvbmRzID09PSAwO1xuICB9XG4gIHJldHVybiBzZWNvbmRzID49IDAgJiYgc2Vjb25kcyA8IDYwICYmIG1pbnV0ZXMgPj0gMCAmJiBtaW51dGVzIDwgNjAgJiYgaG91cnMgPj0gMCAmJiBob3VycyA8IDI1O1xufVxuZnVuY3Rpb24gdmFsaWRhdGVUaW1lem9uZShfaG91cnMsIG1pbnV0ZXMpIHtcbiAgcmV0dXJuIG1pbnV0ZXMgPj0gMCAmJiBtaW51dGVzIDw9IDU5O1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgcGFyc2VKU09OXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFBhcnNlIGEgSlNPTiBkYXRlIHN0cmluZ1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydHMgYSBjb21wbGV0ZSBJU08gZGF0ZSBzdHJpbmcgaW4gVVRDIHRpbWUsIHRoZSB0eXBpY2FsIGZvcm1hdCBmb3IgdHJhbnNtaXR0aW5nXG4gKiBhIGRhdGUgaW4gSlNPTiwgdG8gYSBKYXZhU2NyaXB0IGBEYXRlYCBpbnN0YW5jZS5cbiAqXG4gKiBUaGlzIGlzIGEgbWluaW1hbCBpbXBsZW1lbnRhdGlvbiBmb3IgY29udmVydGluZyBkYXRlcyByZXRyaWV2ZWQgZnJvbSBhIEpTT04gQVBJIHRvXG4gKiBhIGBEYXRlYCBpbnN0YW5jZSB3aGljaCBjYW4gYmUgdXNlZCB3aXRoIG90aGVyIGZ1bmN0aW9ucyBpbiB0aGUgYGRhdGUtZm5zYCBsaWJyYXJ5LlxuICogVGhlIGZvbGxvd2luZyBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQ6XG4gKlxuICogLSBgMjAwMC0wMy0xNVQwNToyMDoxMC4xMjNaYDogVGhlIG91dHB1dCBvZiBgLnRvSVNPU3RyaW5nKClgIGFuZCBgSlNPTi5zdHJpbmdpZnkobmV3IERhdGUoKSlgXG4gKiAtIGAyMDAwLTAzLTE1VDA1OjIwOjEwWmA6IFdpdGhvdXQgbWlsbGlzZWNvbmRzXG4gKiAtIGAyMDAwLTAzLTE1VDA1OjIwOjEwKzAwOjAwYDogV2l0aCBhIHplcm8gb2Zmc2V0LCB0aGUgZGVmYXVsdCBKU09OIGVuY29kZWQgZm9ybWF0IGluIHNvbWUgb3RoZXIgbGFuZ3VhZ2VzXG4gKiAtIGAyMDAwLTAzLTE1VDA1OjIwOjEwKzA1OjQ1YDogV2l0aCBhIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIG9mZnNldCwgdGhlIGRlZmF1bHQgSlNPTiBlbmNvZGVkIGZvcm1hdCBpbiBzb21lIG90aGVyIGxhbmd1YWdlc1xuICogLSBgMjAwMC0wMy0xNVQwNToyMDoxMCswMDAwYDogV2l0aCBhIHplcm8gb2Zmc2V0IHdpdGhvdXQgYSBjb2xvblxuICogLSBgMjAwMC0wMy0xNVQwNToyMDoxMGA6IFdpdGhvdXQgYSB0cmFpbGluZyAnWicgc3ltYm9sXG4gKiAtIGAyMDAwLTAzLTE1VDA1OjIwOjEwLjEyMzQ1NjdgOiBVcCB0byA3IGRpZ2l0cyBpbiBtaWxsaXNlY29uZHMgZmllbGQuIE9ubHkgZmlyc3QgMyBhcmUgdGFrZW4gaW50byBhY2NvdW50IHNpbmNlIEpTIGRvZXMgbm90IGFsbG93IGZyYWN0aW9uYWwgbWlsbGlzZWNvbmRzXG4gKiAtIGAyMDAwLTAzLTE1IDA1OjIwOjEwYDogV2l0aCBhIHNwYWNlIGluc3RlYWQgb2YgYSAnVCcgc2VwYXJhdG9yIGZvciBBUElzIHJldHVybmluZyBhIFNRTCBkYXRlIHdpdGhvdXQgcmVmb3JtYXR0aW5nXG4gKlxuICogRm9yIGNvbnZlbmllbmNlIGFuZCBlYXNlIG9mIHVzZSB0aGVzZSBvdGhlciBpbnB1dCB0eXBlcyBhcmUgYWxzbyBzdXBwb3J0ZWRcbiAqIHZpYSBbdG9EYXRlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL3RvRGF0ZX06XG4gKlxuICogLSBBIGBEYXRlYCBpbnN0YW5jZSB3aWxsIGJlIGNsb25lZFxuICogLSBBIGBudW1iZXJgIHdpbGwgYmUgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcFxuICpcbiAqIEFueSBvdGhlciBpbnB1dCB0eXBlIG9yIGludmFsaWQgZGF0ZSBzdHJpbmdzIHdpbGwgcmV0dXJuIGFuIGBJbnZhbGlkIERhdGVgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfE51bWJlcnxEYXRlfSBhcmd1bWVudCBBIGZ1bGx5IGZvcm1lZCBJU084NjAxIGRhdGUgc3RyaW5nIHRvIGNvbnZlcnRcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBhcnNlSlNPTihhcmd1bWVudCkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgaWYgKHR5cGVvZiBhcmd1bWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YXIgcGFydHMgPSBhcmd1bWVudC5tYXRjaCgvKFxcZHs0fSktKFxcZHsyfSktKFxcZHsyfSlbVCBdKFxcZHsyfSk6KFxcZHsyfSk6KFxcZHsyfSkoPzpcXC4oXFxkezAsN30pKT8oPzpafCguKShcXGR7Mn0pOj8oXFxkezJ9KT8pPy8pO1xuICAgIGlmIChwYXJ0cykge1xuICAgICAgLy8gR3JvdXAgOCBtYXRjaGVzIHRoZSBzaWduXG4gICAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMoK3BhcnRzWzFdLCArcGFydHNbMl0gLSAxLCArcGFydHNbM10sICtwYXJ0c1s0XSAtICgrcGFydHNbOV0gfHwgMCkgKiAocGFydHNbOF0gPT0gJy0nID8gLTEgOiAxKSwgK3BhcnRzWzVdIC0gKCtwYXJ0c1sxMF0gfHwgMCkgKiAocGFydHNbOF0gPT0gJy0nID8gLTEgOiAxKSwgK3BhcnRzWzZdLCArKChwYXJ0c1s3XSB8fCAnMCcpICsgJzAwJykuc3Vic3RyaW5nKDAsIDMpKSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG4gIHJldHVybiB0b0RhdGUoYXJndW1lbnQpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0RGF5IGZyb20gXCIuLi9nZXREYXkvaW5kZXguanNcIjtcbmltcG9ydCBzdWJEYXlzIGZyb20gXCIuLi9zdWJEYXlzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHByZXZpb3VzRGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBXaGVuIGlzIHRoZSBwcmV2aW91cyBkYXkgb2YgdGhlIHdlZWs/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBXaGVuIGlzIHRoZSBwcmV2aW91cyBkYXkgb2YgdGhlIHdlZWs/IDAtNiB0aGUgZGF5IG9mIHRoZSB3ZWVrLCAwIHJlcHJlc2VudHMgU3VuZGF5LlxuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IG51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcGFyYW0ge251bWJlcn0gZGF5IC0gZGF5IG9mIHRoZSB3ZWVrXG4gKiBAcmV0dXJucyB7RGF0ZX0gLSB0aGUgZGF0ZSBpcyB0aGUgcHJldmlvdXMgZGF5IG9mIHdlZWtcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gLSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBwcmV2aW91cyBNb25kYXkgYmVmb3JlIE1hciwgMjAsIDIwMjA/XG4gKiBjb25zdCByZXN1bHQgPSBwcmV2aW91c0RheShuZXcgRGF0ZSgyMDIwLCAyLCAyMCksIDEpXG4gKiAvLz0+IE1vbiBNYXIgMTYgMjAyMCAwMDowMDowMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBwcmV2aW91cyBUdWVzZGF5IGJlZm9yZSBNYXIsIDIxLCAyMDIwP1xuICogY29uc3QgcmVzdWx0ID0gcHJldmlvdXNEYXkobmV3IERhdGUoMjAyMCwgMiwgMjEpLCAyKVxuICogLy89PiBUdWUgTWFyIDE3IDIwMjAgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcHJldmlvdXNEYXkoZGF0ZSwgZGF5KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGVsdGEgPSBnZXREYXkoZGF0ZSkgLSBkYXk7XG4gIGlmIChkZWx0YSA8PSAwKSBkZWx0YSArPSA3O1xuICByZXR1cm4gc3ViRGF5cyhkYXRlLCBkZWx0YSk7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCBwcmV2aW91c0RheSBmcm9tIFwiLi4vcHJldmlvdXNEYXkvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgcHJldmlvdXNGcmlkYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFdoZW4gaXMgdGhlIHByZXZpb3VzIEZyaWRheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFdoZW4gaXMgdGhlIHByZXZpb3VzIEZyaWRheT9cbiAqXG4gKiBAcGFyYW0ge0RhdGUgfCBudW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBzdGFydCBjb3VudGluZyBmcm9tXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHByZXZpb3VzIEZyaWRheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gaXMgdGhlIHByZXZpb3VzIEZyaWRheSBiZWZvcmUgSnVuLCAxOSwgMjAyMT9cbiAqIGNvbnN0IHJlc3VsdCA9IHByZXZpb3VzRnJpZGF5KG5ldyBEYXRlKDIwMjEsIDUsIDE5KSlcbiAqIC8vPT4gRnJpIEp1bmUgMTggMjAyMSAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwcmV2aW91c0ZyaWRheShkYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gcHJldmlvdXNEYXkoZGF0ZSwgNSk7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCBwcmV2aW91c0RheSBmcm9tIFwiLi4vcHJldmlvdXNEYXkvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgcHJldmlvdXNNb25kYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFdoZW4gaXMgdGhlIHByZXZpb3VzIE1vbmRheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFdoZW4gaXMgdGhlIHByZXZpb3VzIE1vbmRheT9cbiAqXG4gKiBAcGFyYW0ge0RhdGUgfCBudW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBzdGFydCBjb3VudGluZyBmcm9tXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHByZXZpb3VzIE1vbmRheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gaXMgdGhlIHByZXZpb3VzIE1vbmRheSBiZWZvcmUgSnVuLCAxOCwgMjAyMT9cbiAqIGNvbnN0IHJlc3VsdCA9IHByZXZpb3VzTW9uZGF5KG5ldyBEYXRlKDIwMjEsIDUsIDE4KSlcbiAqIC8vPT4gTW9uIEp1bmUgMTQgMjAyMSAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwcmV2aW91c01vbmRheShkYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gcHJldmlvdXNEYXkoZGF0ZSwgMSk7XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCBwcmV2aW91c0RheSBmcm9tIFwiLi4vcHJldmlvdXNEYXkvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgcHJldmlvdXNTYXR1cmRheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgV2hlbiBpcyB0aGUgcHJldmlvdXMgU2F0dXJkYXk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBXaGVuIGlzIHRoZSBwcmV2aW91cyBTYXR1cmRheT9cbiAqXG4gKiBAcGFyYW0ge0RhdGUgfCBudW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBzdGFydCBjb3VudGluZyBmcm9tXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHByZXZpb3VzIFNhdHVyZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hlbiBpcyB0aGUgcHJldmlvdXMgU2F0dXJkYXkgYmVmb3JlIEp1biwgMjAsIDIwMjE/XG4gKiBjb25zdCByZXN1bHQgPSBwcmV2aW91c1NhdHVyZGF5KG5ldyBEYXRlKDIwMjEsIDUsIDIwKSlcbiAqIC8vPT4gU2F0IEp1bmUgMTkgMjAyMSAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwcmV2aW91c1NhdHVyZGF5KGRhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBwcmV2aW91c0RheShkYXRlLCA2KTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHByZXZpb3VzRGF5IGZyb20gXCIuLi9wcmV2aW91c0RheS9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBwcmV2aW91c1N1bmRheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgV2hlbiBpcyB0aGUgcHJldmlvdXMgU3VuZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogV2hlbiBpcyB0aGUgcHJldmlvdXMgU3VuZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IG51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIHN0YXJ0IGNvdW50aW5nIGZyb21cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgcHJldmlvdXMgU3VuZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hlbiBpcyB0aGUgcHJldmlvdXMgU3VuZGF5IGJlZm9yZSBKdW4sIDIxLCAyMDIxP1xuICogY29uc3QgcmVzdWx0ID0gcHJldmlvdXNTdW5kYXkobmV3IERhdGUoMjAyMSwgNSwgMjEpKVxuICogLy89PiBTdW4gSnVuZSAyMCAyMDIxIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHByZXZpb3VzU3VuZGF5KGRhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBwcmV2aW91c0RheShkYXRlLCAwKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHByZXZpb3VzRGF5IGZyb20gXCIuLi9wcmV2aW91c0RheS9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBwcmV2aW91c1RodXJzZGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBXaGVuIGlzIHRoZSBwcmV2aW91cyBUaHVyc2RheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFdoZW4gaXMgdGhlIHByZXZpb3VzIFRodXJzZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IG51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIHN0YXJ0IGNvdW50aW5nIGZyb21cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgcHJldmlvdXMgVGh1cnNkYXlcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGVuIGlzIHRoZSBwcmV2aW91cyBUaHVyc2RheSBiZWZvcmUgSnVuLCAxOCwgMjAyMT9cbiAqIGNvbnN0IHJlc3VsdCA9IHByZXZpb3VzVGh1cnNkYXkobmV3IERhdGUoMjAyMSwgNSwgMTgpKVxuICogLy89PiBUaHUgSnVuZSAxNyAyMDIxIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHByZXZpb3VzVGh1cnNkYXkoZGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHByZXZpb3VzRGF5KGRhdGUsIDQpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgcHJldmlvdXNEYXkgZnJvbSBcIi4uL3ByZXZpb3VzRGF5L2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHByZXZpb3VzVHVlc2RheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgV2hlbiBpcyB0aGUgcHJldmlvdXMgVHVlc2RheT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFdoZW4gaXMgdGhlIHByZXZpb3VzIFR1ZXNkYXk/XG4gKlxuICogQHBhcmFtIHtEYXRlIHwgbnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gc3RhcnQgY291bnRpbmcgZnJvbVxuICogQHJldHVybnMge0RhdGV9IHRoZSBwcmV2aW91cyBUdWVzZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hlbiBpcyB0aGUgcHJldmlvdXMgVHVlc2RheSBiZWZvcmUgSnVuLCAxOCwgMjAyMT9cbiAqIGNvbnN0IHJlc3VsdCA9IHByZXZpb3VzVHVlc2RheShuZXcgRGF0ZSgyMDIxLCA1LCAxOCkpXG4gKiAvLz0+IFR1ZSBKdW5lIDE1IDIwMjEgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcHJldmlvdXNUdWVzZGF5KGRhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBwcmV2aW91c0RheShkYXRlLCAyKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHByZXZpb3VzRGF5IGZyb20gXCIuLi9wcmV2aW91c0RheS9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBwcmV2aW91c1dlZG5lc2RheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgV2hlbiBpcyB0aGUgcHJldmlvdXMgV2VkbmVzZGF5P1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogV2hlbiBpcyB0aGUgcHJldmlvdXMgV2VkbmVzZGF5P1xuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IG51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIHN0YXJ0IGNvdW50aW5nIGZyb21cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgcHJldmlvdXMgV2VkbmVzZGF5XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hlbiBpcyB0aGUgcHJldmlvdXMgV2VkbmVzZGF5IGJlZm9yZSBKdW4sIDE4LCAyMDIxP1xuICogY29uc3QgcmVzdWx0ID0gcHJldmlvdXNXZWRuZXNkYXkobmV3IERhdGUoMjAyMSwgNSwgMTgpKVxuICogLy89PiBXZWQgSnVuZSAxNiAyMDIxIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHByZXZpb3VzV2VkbmVzZGF5KGRhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBwcmV2aW91c0RheShkYXRlLCAzKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgbW9udGhzSW5RdWFydGVyIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBxdWFydGVyc1RvTW9udGhzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IG51bWJlciBvZiBxdWFydGVycyB0byBtb250aHMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHF1YXJ0ZXJzIHRvIGEgZnVsbCBudW1iZXIgb2YgbW9udGhzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBxdWFydGVycyAtIG51bWJlciBvZiBxdWFydGVycyB0byBiZSBjb252ZXJ0ZWRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfSB0aGUgbnVtYmVyIG9mIHF1YXJ0ZXJzIGNvbnZlcnRlZCBpbiBtb250aHNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDIgcXVhcnRlcnMgdG8gbW9udGhzXG4gKiBjb25zdCByZXN1bHQgPSBxdWFydGVyc1RvTW9udGhzKDIpXG4gKiAvLz0+IDZcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcXVhcnRlcnNUb01vbnRocyhxdWFydGVycykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIE1hdGguZmxvb3IocXVhcnRlcnMgKiBtb250aHNJblF1YXJ0ZXIpO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBxdWFydGVyc0luWWVhciB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgcXVhcnRlcnNUb1llYXJzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IG51bWJlciBvZiBxdWFydGVycyB0byB5ZWFycy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2YgcXVhcnRlcnMgdG8gYSBmdWxsIG51bWJlciBvZiB5ZWFycy5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gcXVhcnRlcnMgLSBudW1iZXIgb2YgcXVhcnRlcnMgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBxdWFydGVycyBjb252ZXJ0ZWQgaW4geWVhcnNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDggcXVhcnRlcnMgdG8geWVhcnNcbiAqIGNvbnN0IHJlc3VsdCA9IHF1YXJ0ZXJzVG9ZZWFycyg4KVxuICogLy89PiAyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEl0IHVzZXMgZmxvb3Igcm91bmRpbmc6XG4gKiBjb25zdCByZXN1bHQgPSBxdWFydGVyc1RvWWVhcnMoMTEpXG4gKiAvLz0+IDJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcXVhcnRlcnNUb1llYXJzKHF1YXJ0ZXJzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgeWVhcnMgPSBxdWFydGVycyAvIHF1YXJ0ZXJzSW5ZZWFyO1xuICByZXR1cm4gTWF0aC5mbG9vcih5ZWFycyk7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXRSb3VuZGluZ01ldGhvZCB9IGZyb20gXCIuLi9fbGliL3JvdW5kaW5nTWV0aG9kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgcm91bmRUb05lYXJlc3RNaW51dGVzXG4gKiBAY2F0ZWdvcnkgTWludXRlIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJvdW5kcyB0aGUgZ2l2ZW4gZGF0ZSB0byB0aGUgbmVhcmVzdCBtaW51dGVcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJvdW5kcyB0aGUgZ2l2ZW4gZGF0ZSB0byB0aGUgbmVhcmVzdCBtaW51dGUgKG9yIG51bWJlciBvZiBtaW51dGVzKS5cbiAqIFJvdW5kcyB1cCB3aGVuIHRoZSBnaXZlbiBkYXRlIGlzIGV4YWN0bHkgYmV0d2VlbiB0aGUgbmVhcmVzdCByb3VuZCBtaW51dGVzLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byByb3VuZFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMubmVhcmVzdFRvPTFdIC0gbmVhcmVzdCBudW1iZXIgb2YgbWludXRlcyB0byByb3VuZCB0by4gRS5nLiBgMTVgIHRvIHJvdW5kIHRvIHF1YXJ0ZXIgaG91cnMuXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdGlvbnMucm91bmRpbmdNZXRob2Q9J3RydW5jJ10gLSBhIHJvdW5kaW5nIG1ldGhvZCAoYGNlaWxgLCBgZmxvb3JgLCBgcm91bmRgIG9yIGB0cnVuY2ApXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHJvdW5kZWQgdG8gdGhlIGNsb3Nlc3QgbWludXRlXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLm5lYXJlc3RUb2AgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJvdW5kIDEwIEp1bHkgMjAxNCAxMjoxMjozNCB0byBuZWFyZXN0IG1pbnV0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHJvdW5kVG9OZWFyZXN0TWludXRlcyhuZXcgRGF0ZSgyMDE0LCA2LCAxMCwgMTIsIDEyLCAzNCkpXG4gKiAvLz0+IFRodSBKdWwgMTAgMjAxNCAxMjoxMzowMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSb3VuZCAxMCBKdWx5IDIwMTQgMTI6MDc6MzAgdG8gbmVhcmVzdCBxdWFydGVyIGhvdXI6XG4gKiBjb25zdCByZXN1bHQgPSByb3VuZFRvTmVhcmVzdE1pbnV0ZXMobmV3IERhdGUoMjAxNCwgNiwgMTAsIDEyLCAxMiwgMzQpLCB7IG5lYXJlc3RUbzogMTUgfSlcbiAqIC8vIHJvdW5kcyB1cCBiZWNhdXNlIGdpdmVuIGRhdGUgaXMgZXhhY3RseSBiZXR3ZWVuIDEyOjAwOjAwIGFuZCAxMjoxNTowMFxuICogLy89PiBUaHUgSnVsIDEwIDIwMTQgMTI6MTU6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcm91bmRUb05lYXJlc3RNaW51dGVzKGRpcnR5RGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX29wdGlvbnMkbmVhcmVzdFRvO1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDEpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCcxIGFyZ3VtZW50IHJlcXVpcmVkLCBidXQgb25seSBub25lIHByb3ZpZGVkIHByZXNlbnQnKTtcbiAgfVxuICB2YXIgbmVhcmVzdFRvID0gdG9JbnRlZ2VyKChfb3B0aW9ucyRuZWFyZXN0VG8gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMubmVhcmVzdFRvKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRuZWFyZXN0VG8gIT09IHZvaWQgMCA/IF9vcHRpb25zJG5lYXJlc3RUbyA6IDEpO1xuICBpZiAobmVhcmVzdFRvIDwgMSB8fCBuZWFyZXN0VG8gPiAzMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdgb3B0aW9ucy5uZWFyZXN0VG9gIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAzMCcpO1xuICB9XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBzZWNvbmRzID0gZGF0ZS5nZXRTZWNvbmRzKCk7IC8vIHJlbGV2YW50IGlmIG5lYXJlc3RUbyBpcyAxLCB3aGljaCBpcyB0aGUgZGVmYXVsdCBjYXNlXG4gIHZhciBtaW51dGVzID0gZGF0ZS5nZXRNaW51dGVzKCkgKyBzZWNvbmRzIC8gNjA7XG4gIHZhciByb3VuZGluZ01ldGhvZCA9IGdldFJvdW5kaW5nTWV0aG9kKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5yb3VuZGluZ01ldGhvZCk7XG4gIHZhciByb3VuZGVkTWludXRlcyA9IHJvdW5kaW5nTWV0aG9kKG1pbnV0ZXMgLyBuZWFyZXN0VG8pICogbmVhcmVzdFRvO1xuICB2YXIgcmVtYWluZGVyTWludXRlcyA9IG1pbnV0ZXMgJSBuZWFyZXN0VG87XG4gIHZhciBhZGRlZE1pbnV0ZXMgPSBNYXRoLnJvdW5kKHJlbWFpbmRlck1pbnV0ZXMgLyBuZWFyZXN0VG8pICogbmVhcmVzdFRvO1xuICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpLCBkYXRlLmdldEhvdXJzKCksIHJvdW5kZWRNaW51dGVzICsgYWRkZWRNaW51dGVzKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgc2Vjb25kc0luSG91ciB9IGZyb20gXCIuLi9jb25zdGFudHMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2Vjb25kc1RvSG91cnNcbiAqIEBjYXRlZ29yeSBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgc2Vjb25kcyB0byBob3Vycy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2Ygc2Vjb25kcyB0byBhIGZ1bGwgbnVtYmVyIG9mIGhvdXJzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBzZWNvbmRzIC0gbnVtYmVyIG9mIHNlY29uZHMgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiBzZWNvbmRzIGNvbnZlcnRlZCBpbiBob3Vyc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgNzIwMCBzZWNvbmRzIGludG8gaG91cnNcbiAqIGNvbnN0IHJlc3VsdCA9IHNlY29uZHNUb0hvdXJzKDcyMDApXG4gKiAvLz0+IDJcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXQgdXNlcyBmbG9vciByb3VuZGluZzpcbiAqIGNvbnN0IHJlc3VsdCA9IHNlY29uZHNUb0hvdXJzKDcxOTkpXG4gKiAvLz0+IDFcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2Vjb25kc1RvSG91cnMoc2Vjb25kcykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGhvdXJzID0gc2Vjb25kcyAvIHNlY29uZHNJbkhvdXI7XG4gIHJldHVybiBNYXRoLmZsb29yKGhvdXJzKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5TZWNvbmQgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHNlY29uZHNUb01pbGxpc2Vjb25kc1xuICogQGNhdGVnb3J5IENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCBzZWNvbmRzIHRvIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2Ygc2Vjb25kcyB0byBhIGZ1bGwgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gc2Vjb25kcyAtIG51bWJlciBvZiBzZWNvbmRzIHRvIGJlIGNvbnZlcnRlZFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBjb252ZXJ0ZWQgaW4gbWlsbGlzZWNvbmRzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCAyIHNlY29uZHMgaW50byBtaWxsaXNlY29uZHNcbiAqIGNvbnN0IHJlc3VsdCA9IHNlY29uZHNUb01pbGxpc2Vjb25kcygyKVxuICogLy89PiAyMDAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNlY29uZHNUb01pbGxpc2Vjb25kcyhzZWNvbmRzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gc2Vjb25kcyAqIG1pbGxpc2Vjb25kc0luU2Vjb25kO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBzZWNvbmRzSW5NaW51dGUgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHNlY29uZHNUb01pbnV0ZXNcbiAqIEBjYXRlZ29yeSBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgc2Vjb25kcyB0byBtaW51dGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiBzZWNvbmRzIHRvIGEgZnVsbCBudW1iZXIgb2YgbWludXRlcy5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gc2Vjb25kcyAtIG51bWJlciBvZiBzZWNvbmRzIHRvIGJlIGNvbnZlcnRlZFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9IHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBjb252ZXJ0ZWQgaW4gbWludXRlc1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgMTIwIHNlY29uZHMgaW50byBtaW51dGVzXG4gKiBjb25zdCByZXN1bHQgPSBzZWNvbmRzVG9NaW51dGVzKDEyMClcbiAqIC8vPT4gMlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJdCB1c2VzIGZsb29yIHJvdW5kaW5nOlxuICogY29uc3QgcmVzdWx0ID0gc2Vjb25kc1RvTWludXRlcygxMTkpXG4gKiAvLz0+IDFcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2Vjb25kc1RvTWludXRlcyhzZWNvbmRzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgbWludXRlcyA9IHNlY29uZHMgLyBzZWNvbmRzSW5NaW51dGU7XG4gIHJldHVybiBNYXRoLmZsb29yKG1pbnV0ZXMpO1xufSIsImltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2ZcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHNldE1vbnRoIGZyb20gXCIuLi9zZXRNb250aC9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHNldFxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTZXQgZGF0ZSB2YWx1ZXMgdG8gYSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU2V0IGRhdGUgdmFsdWVzIHRvIGEgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBTZXRzIHRpbWUgdmFsdWVzIHRvIGRhdGUgZnJvbSBvYmplY3QgYHZhbHVlc2AuXG4gKiBBIHZhbHVlIGlzIG5vdCBzZXQgaWYgaXQgaXMgdW5kZWZpbmVkIG9yIG51bGwgb3IgZG9lc24ndCBleGlzdCBpbiBgdmFsdWVzYC5cbiAqXG4gKiBOb3RlIGFib3V0IGJ1bmRsZSBzaXplOiBgc2V0YCBkb2VzIG5vdCBpbnRlcm5hbGx5IHVzZSBgc2V0WGAgZnVuY3Rpb25zIGZyb20gZGF0ZS1mbnMgYnV0IGluc3RlYWQgb3B0c1xuICogdG8gdXNlIG5hdGl2ZSBgRGF0ZSNzZXRYYCBtZXRob2RzLiBJZiB5b3UgdXNlIHRoaXMgZnVuY3Rpb24sIHlvdSBtYXkgbm90IHdhbnQgdG8gaW5jbHVkZSB0aGVcbiAqIG90aGVyIGBzZXRYYCBmdW5jdGlvbnMgdGhhdCBkYXRlLWZucyBwcm92aWRlcyBpZiB5b3UgYXJlIGNvbmNlcm5lZCBhYm91dCB0aGUgYnVuZGxlIHNpemUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zXG4gKiBAcGFyYW0ge051bWJlcn0gW3ZhbHVlcy55ZWFyXSAtIHRoZSBudW1iZXIgb2YgeWVhcnMgdG8gYmUgc2V0XG4gKiBAcGFyYW0ge051bWJlcn0gW3ZhbHVlcy5tb250aF0gLSB0aGUgbnVtYmVyIG9mIG1vbnRocyB0byBiZSBzZXRcbiAqIEBwYXJhbSB7TnVtYmVyfSBbdmFsdWVzLmRhdGVdIC0gdGhlIG51bWJlciBvZiBkYXlzIHRvIGJlIHNldFxuICogQHBhcmFtIHtOdW1iZXJ9IFt2YWx1ZXMuaG91cnNdIC0gdGhlIG51bWJlciBvZiBob3VycyB0byBiZSBzZXRcbiAqIEBwYXJhbSB7TnVtYmVyfSBbdmFsdWVzLm1pbnV0ZXNdIC0gdGhlIG51bWJlciBvZiBtaW51dGVzIHRvIGJlIHNldFxuICogQHBhcmFtIHtOdW1iZXJ9IFt2YWx1ZXMuc2Vjb25kc10gLSB0aGUgbnVtYmVyIG9mIHNlY29uZHMgdG8gYmUgc2V0XG4gKiBAcGFyYW0ge051bWJlcn0gW3ZhbHVlcy5taWxsaXNlY29uZHNdIC0gdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gYmUgc2V0XG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggb3B0aW9ucyBzZXRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGB2YWx1ZXNgIG11c3QgYmUgYW4gb2JqZWN0XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRyYW5zZm9ybSAxIFNlcHRlbWJlciAyMDE0IGludG8gMjAgT2N0b2JlciAyMDE1IGluIGEgc2luZ2xlIGxpbmU6XG4gKiBjb25zdCByZXN1bHQgPSBzZXQobmV3IERhdGUoMjAxNCwgOCwgMjApLCB7IHllYXI6IDIwMTUsIG1vbnRoOiA5LCBkYXRlOiAyMCB9KVxuICogLy89PiBUdWUgT2N0IDIwIDIwMTUgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IDEyIFBNIHRvIDEgU2VwdGVtYmVyIDIwMTQgMDE6MjM6NDUgdG8gMSBTZXB0ZW1iZXIgMjAxNCAxMjowMDowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldChuZXcgRGF0ZSgyMDE0LCA4LCAxLCAxLCAyMywgNDUpLCB7IGhvdXJzOiAxMiB9KVxuICogLy89PiBNb24gU2VwIDAxIDIwMTQgMTI6MjM6NDVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0KGRpcnR5RGF0ZSwgdmFsdWVzKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICBpZiAoX3R5cGVvZih2YWx1ZXMpICE9PSAnb2JqZWN0JyB8fCB2YWx1ZXMgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcigndmFsdWVzIHBhcmFtZXRlciBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICB9XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG5cbiAgLy8gQ2hlY2sgaWYgZGF0ZSBpcyBJbnZhbGlkIERhdGUgYmVjYXVzZSBEYXRlLnByb3RvdHlwZS5zZXRGdWxsWWVhciBpZ25vcmVzIHRoZSB2YWx1ZSBvZiBJbnZhbGlkIERhdGVcbiAgaWYgKGlzTmFOKGRhdGUuZ2V0VGltZSgpKSkge1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG4gIGlmICh2YWx1ZXMueWVhciAhPSBudWxsKSB7XG4gICAgZGF0ZS5zZXRGdWxsWWVhcih2YWx1ZXMueWVhcik7XG4gIH1cbiAgaWYgKHZhbHVlcy5tb250aCAhPSBudWxsKSB7XG4gICAgZGF0ZSA9IHNldE1vbnRoKGRhdGUsIHZhbHVlcy5tb250aCk7XG4gIH1cbiAgaWYgKHZhbHVlcy5kYXRlICE9IG51bGwpIHtcbiAgICBkYXRlLnNldERhdGUodG9JbnRlZ2VyKHZhbHVlcy5kYXRlKSk7XG4gIH1cbiAgaWYgKHZhbHVlcy5ob3VycyAhPSBudWxsKSB7XG4gICAgZGF0ZS5zZXRIb3Vycyh0b0ludGVnZXIodmFsdWVzLmhvdXJzKSk7XG4gIH1cbiAgaWYgKHZhbHVlcy5taW51dGVzICE9IG51bGwpIHtcbiAgICBkYXRlLnNldE1pbnV0ZXModG9JbnRlZ2VyKHZhbHVlcy5taW51dGVzKSk7XG4gIH1cbiAgaWYgKHZhbHVlcy5zZWNvbmRzICE9IG51bGwpIHtcbiAgICBkYXRlLnNldFNlY29uZHModG9JbnRlZ2VyKHZhbHVlcy5zZWNvbmRzKSk7XG4gIH1cbiAgaWYgKHZhbHVlcy5taWxsaXNlY29uZHMgIT0gbnVsbCkge1xuICAgIGRhdGUuc2V0TWlsbGlzZWNvbmRzKHRvSW50ZWdlcih2YWx1ZXMubWlsbGlzZWNvbmRzKSk7XG4gIH1cbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2V0RGF0ZVxuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTZXQgdGhlIGRheSBvZiB0aGUgbW9udGggdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZXQgdGhlIGRheSBvZiB0aGUgbW9udGggdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBkYXlPZk1vbnRoIC0gdGhlIGRheSBvZiB0aGUgbW9udGggb2YgdGhlIG5ldyBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIGRheSBvZiB0aGUgbW9udGggc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCB0aGUgMzB0aCBkYXkgb2YgdGhlIG1vbnRoIHRvIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBzZXREYXRlKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCAzMClcbiAqIC8vPT4gVHVlIFNlcCAzMCAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldERhdGUoZGlydHlEYXRlLCBkaXJ0eURheU9mTW9udGgpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkYXlPZk1vbnRoID0gdG9JbnRlZ2VyKGRpcnR5RGF5T2ZNb250aCk7XG4gIGRhdGUuc2V0RGF0ZShkYXlPZk1vbnRoKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IGFkZERheXMgZnJvbSBcIi4uL2FkZERheXMvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuLi9fbGliL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHNldERheVxuICogQGNhdGVnb3J5IFdlZWtkYXkgSGVscGVyc1xuICogQHN1bW1hcnkgU2V0IHRoZSBkYXkgb2YgdGhlIHdlZWsgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZXQgdGhlIGRheSBvZiB0aGUgd2VlayB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGRheSAtIHRoZSBkYXkgb2YgdGhlIHdlZWsgb2YgdGhlIG5ldyBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgZGF5IG9mIHRoZSB3ZWVrIHNldFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgd2VlayBkYXkgdG8gU3VuZGF5LCB3aXRoIHRoZSBkZWZhdWx0IHdlZWtTdGFydHNPbiBvZiBTdW5kYXk6XG4gKiBjb25zdCByZXN1bHQgPSBzZXREYXkobmV3IERhdGUoMjAxNCwgOCwgMSksIDApXG4gKiAvLz0+IFN1biBBdWcgMzEgMjAxNCAwMDowMDowMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgd2VlayBkYXkgdG8gU3VuZGF5LCB3aXRoIGEgd2Vla1N0YXJ0c09uIG9mIE1vbmRheTpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldERheShuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgMCwgeyB3ZWVrU3RhcnRzT246IDEgfSlcbiAqIC8vPT4gU3VuIFNlcCAwNyAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldERheShkaXJ0eURhdGUsIGRpcnR5RGF5LCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfcmVmMiwgX3JlZjMsIF9vcHRpb25zJHdlZWtTdGFydHNPbiwgX29wdGlvbnMkbG9jYWxlLCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8sIF9kZWZhdWx0T3B0aW9ucyRsb2NhbCwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMjtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIHZhciB3ZWVrU3RhcnRzT24gPSB0b0ludGVnZXIoKF9yZWYgPSAoX3JlZjIgPSAoX3JlZjMgPSAoX29wdGlvbnMkd2Vla1N0YXJ0c09uID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX29wdGlvbnMkd2Vla1N0YXJ0c09uICE9PSB2b2lkIDAgPyBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUgPSBvcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlJG9wdGlvID0gX29wdGlvbnMkbG9jYWxlLm9wdGlvbnMpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX29wdGlvbnMkbG9jYWxlJG9wdGlvLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjMgIT09IHZvaWQgMCA/IF9yZWYzIDogZGVmYXVsdE9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdm9pZCAwID8gX3JlZjIgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsID0gZGVmYXVsdE9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID0gX2RlZmF1bHRPcHRpb25zJGxvY2FsLm9wdGlvbnMpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB2b2lkIDAgPyBfcmVmIDogMCk7XG5cbiAgLy8gVGVzdCBpZiB3ZWVrU3RhcnRzT24gaXMgYmV0d2VlbiAwIGFuZCA2IF9hbmRfIGlzIG5vdCBOYU5cbiAgaWYgKCEod2Vla1N0YXJ0c09uID49IDAgJiYgd2Vla1N0YXJ0c09uIDw9IDYpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3dlZWtTdGFydHNPbiBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNiBpbmNsdXNpdmVseScpO1xuICB9XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkYXkgPSB0b0ludGVnZXIoZGlydHlEYXkpO1xuICB2YXIgY3VycmVudERheSA9IGRhdGUuZ2V0RGF5KCk7XG4gIHZhciByZW1haW5kZXIgPSBkYXkgJSA3O1xuICB2YXIgZGF5SW5kZXggPSAocmVtYWluZGVyICsgNykgJSA3O1xuICB2YXIgZGVsdGEgPSA3IC0gd2Vla1N0YXJ0c09uO1xuICB2YXIgZGlmZiA9IGRheSA8IDAgfHwgZGF5ID4gNiA/IGRheSAtIChjdXJyZW50RGF5ICsgZGVsdGEpICUgNyA6IChkYXlJbmRleCArIGRlbHRhKSAlIDcgLSAoY3VycmVudERheSArIGRlbHRhKSAlIDc7XG4gIHJldHVybiBhZGREYXlzKGRhdGUsIGRpZmYpO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHNldERheU9mWWVhclxuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTZXQgdGhlIGRheSBvZiB0aGUgeWVhciB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgZGF5IG9mIHRoZSB5ZWFyIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gZGF5T2ZZZWFyIC0gdGhlIGRheSBvZiB0aGUgeWVhciBvZiB0aGUgbmV3IGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgZGF5IG9mIHRoZSB5ZWFyIHNldFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgdGhlIDJuZCBkYXkgb2YgdGhlIHllYXIgdG8gMiBKdWx5IDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBzZXREYXlPZlllYXIobmV3IERhdGUoMjAxNCwgNiwgMiksIDIpXG4gKiAvLz0+IFRodSBKYW4gMDIgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXREYXlPZlllYXIoZGlydHlEYXRlLCBkaXJ0eURheU9mWWVhcikge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRheU9mWWVhciA9IHRvSW50ZWdlcihkaXJ0eURheU9mWWVhcik7XG4gIGRhdGUuc2V0TW9udGgoMCk7XG4gIGRhdGUuc2V0RGF0ZShkYXlPZlllYXIpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucywgc2V0RGVmYXVsdE9wdGlvbnMgYXMgc2V0SW50ZXJuYWxEZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuLi9fbGliL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZXREZWZhdWx0T3B0aW9uc1xuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTZXQgZGVmYXVsdCBvcHRpb25zIGluY2x1ZGluZyBsb2NhbGUuXG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU2V0cyB0aGUgZGVmYXVsdHMgZm9yXG4gKiBgb3B0aW9ucy5sb2NhbGVgLCBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIGFuZCBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgXG4gKiBhcmd1bWVudHMgZm9yIGFsbCBmdW5jdGlvbnMuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG5ld09wdGlvbnMgLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtMb2NhbGV9IFtuZXdPcHRpb25zLmxvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbbmV3T3B0aW9ucy53ZWVrU3RhcnRzT25dIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcGFyYW0gezF8MnwzfDR8NXw2fDd9IFtuZXdPcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZV0gLSB0aGUgZGF5IG9mIEphbnVhcnksIHdoaWNoIGlzIGFsd2F5cyBpbiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCBnbG9iYWwgbG9jYWxlOlxuICogaW1wb3J0IHsgZXMgfSBmcm9tICdkYXRlLWZucy9sb2NhbGUnXG4gKiBzZXREZWZhdWx0T3B0aW9ucyh7IGxvY2FsZTogZXMgfSlcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdChuZXcgRGF0ZSgyMDE0LCA4LCAyKSwgJ1BQUFAnKVxuICogLy89PiAnbWFydGVzLCAyIGRlIHNlcHRpZW1icmUgZGUgMjAxNCdcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3RhcnQgb2YgdGhlIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyKSlcbiAqIC8vPT4gU3VuIEF1ZyAzMSAyMDE0IDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN0YXJ0IG9mIHRoZSB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0LFxuICogLy8gd2hlbiB3ZSBzZXQgdGhhdCB3ZWVrIHN0YXJ0cyBvbiBNb25kYXkgYnkgZGVmYXVsdDpcbiAqIHNldERlZmF1bHRPcHRpb25zKHsgd2Vla1N0YXJ0c09uOiAxIH0pXG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyKSlcbiAqIC8vPT4gTW9uIFNlcCAwMSAyMDE0IDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIE1hbnVhbGx5IHNldCBvcHRpb25zIHRha2UgcHJpb3JpdHkgb3ZlciBkZWZhdWx0IG9wdGlvbnM6XG4gKiBzZXREZWZhdWx0T3B0aW9ucyh7IHdlZWtTdGFydHNPbjogMSB9KVxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZldlZWsobmV3IERhdGUoMjAxNCwgOCwgMiksIHsgd2Vla1N0YXJ0c09uOiAwIH0pXG4gKiAvLz0+IFN1biBBdWcgMzEgMjAxNCAwMDowMDowMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZW1vdmUgdGhlIG9wdGlvbiBieSBzZXR0aW5nIGl0IHRvIGB1bmRlZmluZWRgOlxuICogc2V0RGVmYXVsdE9wdGlvbnMoeyB3ZWVrU3RhcnRzT246IDEgfSlcbiAqIHNldERlZmF1bHRPcHRpb25zKHsgd2Vla1N0YXJ0c09uOiB1bmRlZmluZWQgfSlcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZXZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIpKVxuICogLy89PiBTdW4gQXVnIDMxIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0RGVmYXVsdE9wdGlvbnMobmV3T3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICBmb3IgKHZhciBwcm9wZXJ0eSBpbiBkZWZhdWx0T3B0aW9ucykge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGVmYXVsdE9wdGlvbnMsIHByb3BlcnR5KSkge1xuICAgICAgO1xuICAgICAgcmVzdWx0W3Byb3BlcnR5XSA9IGRlZmF1bHRPcHRpb25zW3Byb3BlcnR5XTtcbiAgICB9XG4gIH1cbiAgZm9yICh2YXIgX3Byb3BlcnR5IGluIG5ld09wdGlvbnMpIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG5ld09wdGlvbnMsIF9wcm9wZXJ0eSkpIHtcbiAgICAgIGlmIChuZXdPcHRpb25zW19wcm9wZXJ0eV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkZWxldGUgcmVzdWx0W19wcm9wZXJ0eV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICA7XG4gICAgICAgIHJlc3VsdFtfcHJvcGVydHldID0gbmV3T3B0aW9uc1tfcHJvcGVydHldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBzZXRJbnRlcm5hbERlZmF1bHRPcHRpb25zKHJlc3VsdCk7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2V0SG91cnNcbiAqIEBjYXRlZ29yeSBIb3VyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgaG91cnMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZXQgdGhlIGhvdXJzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gaG91cnMgLSB0aGUgaG91cnMgb2YgdGhlIG5ldyBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIGhvdXJzIHNldFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgNCBob3VycyB0byAxIFNlcHRlbWJlciAyMDE0IDExOjMwOjAwOlxuICogY29uc3QgcmVzdWx0ID0gc2V0SG91cnMobmV3IERhdGUoMjAxNCwgOCwgMSwgMTEsIDMwKSwgNClcbiAqIC8vPT4gTW9uIFNlcCAwMSAyMDE0IDA0OjMwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldEhvdXJzKGRpcnR5RGF0ZSwgZGlydHlIb3Vycykge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGhvdXJzID0gdG9JbnRlZ2VyKGRpcnR5SG91cnMpO1xuICBkYXRlLnNldEhvdXJzKGhvdXJzKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IGFkZERheXMgZnJvbSBcIi4uL2FkZERheXMvaW5kZXguanNcIjtcbmltcG9ydCBnZXRJU09EYXkgZnJvbSBcIi4uL2dldElTT0RheS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2V0SVNPRGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTZXQgdGhlIGRheSBvZiB0aGUgSVNPIHdlZWsgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZXQgdGhlIGRheSBvZiB0aGUgSVNPIHdlZWsgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKiBJU08gd2VlayBzdGFydHMgd2l0aCBNb25kYXkuXG4gKiA3IGlzIHRoZSBpbmRleCBvZiBTdW5kYXksIDEgaXMgdGhlIGluZGV4IG9mIE1vbmRheSBldGMuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBkYXkgLSB0aGUgZGF5IG9mIHRoZSBJU08gd2VlayBvZiB0aGUgbmV3IGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgZGF5IG9mIHRoZSBJU08gd2VlayBzZXRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IFN1bmRheSB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gc2V0SVNPRGF5KG5ldyBEYXRlKDIwMTQsIDgsIDEpLCA3KVxuICogLy89PiBTdW4gU2VwIDA3IDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0SVNPRGF5KGRpcnR5RGF0ZSwgZGlydHlEYXkpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkYXkgPSB0b0ludGVnZXIoZGlydHlEYXkpO1xuICB2YXIgY3VycmVudERheSA9IGdldElTT0RheShkYXRlKTtcbiAgdmFyIGRpZmYgPSBkYXkgLSBjdXJyZW50RGF5O1xuICByZXR1cm4gYWRkRGF5cyhkYXRlLCBkaWZmKTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0SVNPV2VlayBmcm9tIFwiLi4vZ2V0SVNPV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2V0SVNPV2Vla1xuICogQGNhdGVnb3J5IElTTyBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgSVNPIHdlZWsgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZXQgdGhlIElTTyB3ZWVrIHRvIHRoZSBnaXZlbiBkYXRlLCBzYXZpbmcgdGhlIHdlZWtkYXkgbnVtYmVyLlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGlzb1dlZWsgLSB0aGUgSVNPIHdlZWsgb2YgdGhlIG5ldyBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIElTTyB3ZWVrIHNldFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgdGhlIDUzcmQgSVNPIHdlZWsgdG8gNyBBdWd1c3QgMjAwNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldElTT1dlZWsobmV3IERhdGUoMjAwNCwgNywgNyksIDUzKVxuICogLy89PiBTYXQgSmFuIDAxIDIwMDUgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0SVNPV2VlayhkaXJ0eURhdGUsIGRpcnR5SVNPV2Vlaykge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGlzb1dlZWsgPSB0b0ludGVnZXIoZGlydHlJU09XZWVrKTtcbiAgdmFyIGRpZmYgPSBnZXRJU09XZWVrKGRhdGUpIC0gaXNvV2VlaztcbiAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpIC0gZGlmZiAqIDcpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZklTT1dlZWtZZWFyIGZyb20gXCIuLi9zdGFydE9mSVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMgZnJvbSBcIi4uL2RpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2V0SVNPV2Vla1llYXJcbiAqIEBjYXRlZ29yeSBJU08gV2Vlay1OdW1iZXJpbmcgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTZXQgdGhlIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU2V0IHRoZSBJU08gd2Vlay1udW1iZXJpbmcgeWVhciB0byB0aGUgZ2l2ZW4gZGF0ZSxcbiAqIHNhdmluZyB0aGUgd2VlayBudW1iZXIgYW5kIHRoZSB3ZWVrZGF5IG51bWJlci5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBpc29XZWVrWWVhciAtIHRoZSBJU08gd2Vlay1udW1iZXJpbmcgeWVhciBvZiB0aGUgbmV3IGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgc2V0XG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCBJU08gd2Vlay1udW1iZXJpbmcgeWVhciAyMDA3IHRvIDI5IERlY2VtYmVyIDIwMDg6XG4gKiBjb25zdCByZXN1bHQgPSBzZXRJU09XZWVrWWVhcihuZXcgRGF0ZSgyMDA4LCAxMSwgMjkpLCAyMDA3KVxuICogLy89PiBNb24gSmFuIDAxIDIwMDcgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0SVNPV2Vla1llYXIoZGlydHlEYXRlLCBkaXJ0eUlTT1dlZWtZZWFyKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgaXNvV2Vla1llYXIgPSB0b0ludGVnZXIoZGlydHlJU09XZWVrWWVhcik7XG4gIHZhciBkaWZmID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKGRhdGUsIHN0YXJ0T2ZJU09XZWVrWWVhcihkYXRlKSk7XG4gIHZhciBmb3VydGhPZkphbnVhcnkgPSBuZXcgRGF0ZSgwKTtcbiAgZm91cnRoT2ZKYW51YXJ5LnNldEZ1bGxZZWFyKGlzb1dlZWtZZWFyLCAwLCA0KTtcbiAgZm91cnRoT2ZKYW51YXJ5LnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICBkYXRlID0gc3RhcnRPZklTT1dlZWtZZWFyKGZvdXJ0aE9mSmFudWFyeSk7XG4gIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIGRpZmYpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZXRNaWxsaXNlY29uZHNcbiAqIEBjYXRlZ29yeSBNaWxsaXNlY29uZCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTZXQgdGhlIG1pbGxpc2Vjb25kcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgbWlsbGlzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gbWlsbGlzZWNvbmRzIC0gdGhlIG1pbGxpc2Vjb25kcyBvZiB0aGUgbmV3IGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgbWlsbGlzZWNvbmRzIHNldFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgMzAwIG1pbGxpc2Vjb25kcyB0byAxIFNlcHRlbWJlciAyMDE0IDExOjMwOjQwLjUwMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldE1pbGxpc2Vjb25kcyhuZXcgRGF0ZSgyMDE0LCA4LCAxLCAxMSwgMzAsIDQwLCA1MDApLCAzMDApXG4gKiAvLz0+IE1vbiBTZXAgMDEgMjAxNCAxMTozMDo0MC4zMDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0TWlsbGlzZWNvbmRzKGRpcnR5RGF0ZSwgZGlydHlNaWxsaXNlY29uZHMpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBtaWxsaXNlY29uZHMgPSB0b0ludGVnZXIoZGlydHlNaWxsaXNlY29uZHMpO1xuICBkYXRlLnNldE1pbGxpc2Vjb25kcyhtaWxsaXNlY29uZHMpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZXRNaW51dGVzXG4gKiBAY2F0ZWdvcnkgTWludXRlIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgbWludXRlcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgbWludXRlcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IG1pbnV0ZXMgLSB0aGUgbWludXRlcyBvZiB0aGUgbmV3IGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgbWludXRlcyBzZXRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IDQ1IG1pbnV0ZXMgdG8gMSBTZXB0ZW1iZXIgMjAxNCAxMTozMDo0MDpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldE1pbnV0ZXMobmV3IERhdGUoMjAxNCwgOCwgMSwgMTEsIDMwLCA0MCksIDQ1KVxuICogLy89PiBNb24gU2VwIDAxIDIwMTQgMTE6NDU6NDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0TWludXRlcyhkaXJ0eURhdGUsIGRpcnR5TWludXRlcykge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIG1pbnV0ZXMgPSB0b0ludGVnZXIoZGlydHlNaW51dGVzKTtcbiAgZGF0ZS5zZXRNaW51dGVzKG1pbnV0ZXMpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0RGF5c0luTW9udGggZnJvbSBcIi4uL2dldERheXNJbk1vbnRoL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZXRNb250aFxuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgbW9udGggdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZXQgdGhlIG1vbnRoIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gbW9udGggLSB0aGUgbW9udGggb2YgdGhlIG5ldyBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIG1vbnRoIHNldFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgRmVicnVhcnkgdG8gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldE1vbnRoKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCAxKVxuICogLy89PiBTYXQgRmViIDAxIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0TW9udGgoZGlydHlEYXRlLCBkaXJ0eU1vbnRoKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgbW9udGggPSB0b0ludGVnZXIoZGlydHlNb250aCk7XG4gIHZhciB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICB2YXIgZGF5ID0gZGF0ZS5nZXREYXRlKCk7XG4gIHZhciBkYXRlV2l0aERlc2lyZWRNb250aCA9IG5ldyBEYXRlKDApO1xuICBkYXRlV2l0aERlc2lyZWRNb250aC5zZXRGdWxsWWVhcih5ZWFyLCBtb250aCwgMTUpO1xuICBkYXRlV2l0aERlc2lyZWRNb250aC5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgdmFyIGRheXNJbk1vbnRoID0gZ2V0RGF5c0luTW9udGgoZGF0ZVdpdGhEZXNpcmVkTW9udGgpO1xuICAvLyBTZXQgdGhlIGxhc3QgZGF5IG9mIHRoZSBuZXcgbW9udGhcbiAgLy8gaWYgdGhlIG9yaWdpbmFsIGRhdGUgd2FzIHRoZSBsYXN0IGRheSBvZiB0aGUgbG9uZ2VyIG1vbnRoXG4gIGRhdGUuc2V0TW9udGgobW9udGgsIE1hdGgubWluKGRheSwgZGF5c0luTW9udGgpKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHNldE1vbnRoIGZyb20gXCIuLi9zZXRNb250aC9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2V0UXVhcnRlclxuICogQGNhdGVnb3J5IFF1YXJ0ZXIgSGVscGVyc1xuICogQHN1bW1hcnkgU2V0IHRoZSB5ZWFyIHF1YXJ0ZXIgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZXQgdGhlIHllYXIgcXVhcnRlciB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IHF1YXJ0ZXIgLSB0aGUgcXVhcnRlciBvZiB0aGUgbmV3IGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgcXVhcnRlciBzZXRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IHRoZSAybmQgcXVhcnRlciB0byAyIEp1bHkgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldFF1YXJ0ZXIobmV3IERhdGUoMjAxNCwgNiwgMiksIDIpXG4gKiAvLz0+IFdlZCBBcHIgMDIgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRRdWFydGVyKGRpcnR5RGF0ZSwgZGlydHlRdWFydGVyKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgcXVhcnRlciA9IHRvSW50ZWdlcihkaXJ0eVF1YXJ0ZXIpO1xuICB2YXIgb2xkUXVhcnRlciA9IE1hdGguZmxvb3IoZGF0ZS5nZXRNb250aCgpIC8gMykgKyAxO1xuICB2YXIgZGlmZiA9IHF1YXJ0ZXIgLSBvbGRRdWFydGVyO1xuICByZXR1cm4gc2V0TW9udGgoZGF0ZSwgZGF0ZS5nZXRNb250aCgpICsgZGlmZiAqIDMpO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHNldFNlY29uZHNcbiAqIEBjYXRlZ29yeSBTZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgU2V0IHRoZSBzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU2V0IHRoZSBzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gc2Vjb25kcyAtIHRoZSBzZWNvbmRzIG9mIHRoZSBuZXcgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBzZWNvbmRzIHNldFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgNDUgc2Vjb25kcyB0byAxIFNlcHRlbWJlciAyMDE0IDExOjMwOjQwOlxuICogY29uc3QgcmVzdWx0ID0gc2V0U2Vjb25kcyhuZXcgRGF0ZSgyMDE0LCA4LCAxLCAxMSwgMzAsIDQwKSwgNDUpXG4gKiAvLz0+IE1vbiBTZXAgMDEgMjAxNCAxMTozMDo0NVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRTZWNvbmRzKGRpcnR5RGF0ZSwgZGlydHlTZWNvbmRzKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgc2Vjb25kcyA9IHRvSW50ZWdlcihkaXJ0eVNlY29uZHMpO1xuICBkYXRlLnNldFNlY29uZHMoc2Vjb25kcyk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCBnZXRXZWVrIGZyb20gXCIuLi9nZXRXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzZXRXZWVrXG4gKiBAY2F0ZWdvcnkgV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTZXQgdGhlIGxvY2FsIHdlZWsgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZXQgdGhlIGxvY2FsIHdlZWsgdG8gdGhlIGdpdmVuIGRhdGUsIHNhdmluZyB0aGUgd2Vla2RheSBudW1iZXIuXG4gKiBUaGUgZXhhY3QgY2FsY3VsYXRpb24gZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mXG4gKiBgb3B0aW9ucy53ZWVrU3RhcnRzT25gICh3aGljaCBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlaylcbiAqIGFuZCBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgICh3aGljaCBpcyB0aGUgZGF5IG9mIEphbnVhcnksIHdoaWNoIGlzIGFsd2F5cyBpblxuICogdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHdlZWstbnVtYmVyaW5nIHllYXIpXG4gKlxuICogV2VlayBudW1iZXJpbmc6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlZWsjV2Vla19udW1iZXJpbmdcbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IHdlZWsgLSB0aGUgd2VlayBvZiB0aGUgbmV3IGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHBhcmFtIHsxfDJ8M3w0fDV8Nnw3fSBbb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGU9MV0gLSB0aGUgZGF5IG9mIEphbnVhcnksIHdoaWNoIGlzIGFsd2F5cyBpbiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhclxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBsb2NhbCB3ZWVrIHNldFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNlxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgN1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgdGhlIDFzdCB3ZWVrIHRvIDIgSmFudWFyeSAyMDA1IHdpdGggZGVmYXVsdCBvcHRpb25zOlxuICogY29uc3QgcmVzdWx0ID0gc2V0V2VlayhuZXcgRGF0ZSgyMDA1LCAwLCAyKSwgMSlcbiAqIC8vPT4gU3VuIERlYyAyNiAyMDA0IDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCB0aGUgMXN0IHdlZWsgdG8gMiBKYW51YXJ5IDIwMDUsXG4gKiAvLyBpZiBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayxcbiAqIC8vIGFuZCB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhciBhbHdheXMgY29udGFpbnMgNCBKYW51YXJ5OlxuICogY29uc3QgcmVzdWx0ID0gc2V0V2VlayhuZXcgRGF0ZSgyMDA1LCAwLCAyKSwgMSwge1xuICogICB3ZWVrU3RhcnRzT246IDEsXG4gKiAgIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZTogNFxuICogfSlcbiAqIC8vPT4gU3VuIEphbiA0IDIwMDQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0V2VlayhkaXJ0eURhdGUsIGRpcnR5V2Vlaywgb3B0aW9ucykge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHdlZWsgPSB0b0ludGVnZXIoZGlydHlXZWVrKTtcbiAgdmFyIGRpZmYgPSBnZXRXZWVrKGRhdGUsIG9wdGlvbnMpIC0gd2VlaztcbiAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpIC0gZGlmZiAqIDcpO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzIGZyb20gXCIuLi9kaWZmZXJlbmNlSW5DYWxlbmRhckRheXMvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mV2Vla1llYXIgZnJvbSBcIi4uL3N0YXJ0T2ZXZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL19saWIvZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2V0V2Vla1llYXJcbiAqIEBjYXRlZ29yeSBXZWVrLU51bWJlcmluZyBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhciB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhciB0byB0aGUgZ2l2ZW4gZGF0ZSxcbiAqIHNhdmluZyB0aGUgd2VlayBudW1iZXIgYW5kIHRoZSB3ZWVrZGF5IG51bWJlci5cbiAqIFRoZSBleGFjdCBjYWxjdWxhdGlvbiBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2ZcbiAqIGBvcHRpb25zLndlZWtTdGFydHNPbmAgKHdoaWNoIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrKVxuICogYW5kIGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgKHdoaWNoIGlzIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluXG4gKiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgd2Vlay1udW1iZXJpbmcgeWVhcilcbiAqXG4gKiBXZWVrIG51bWJlcmluZzogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2VlayNXZWVrX251bWJlcmluZ1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gd2Vla1llYXIgLSB0aGUgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhciBvZiB0aGUgbmV3IGRhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICogQHBhcmFtIHtMb2NhbGV9IFtvcHRpb25zLmxvY2FsZT1kZWZhdWx0TG9jYWxlXSAtIHRoZSBsb2NhbGUgb2JqZWN0LiBTZWUgW0xvY2FsZV17QGxpbmsgaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9Mb2NhbGV9XG4gKiBAcGFyYW0gezB8MXwyfDN8NHw1fDZ9IFtvcHRpb25zLndlZWtTdGFydHNPbj0wXSAtIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrICgwIC0gU3VuZGF5KVxuICogQHBhcmFtIHsxfDJ8M3w0fDV8Nnw3fSBbb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGU9MV0gLSB0aGUgZGF5IG9mIEphbnVhcnksIHdoaWNoIGlzIGFsd2F5cyBpbiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhclxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyIHNldFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNlxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgN1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgdGhlIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgMjAwNCB0byAyIEphbnVhcnkgMjAxMCB3aXRoIGRlZmF1bHQgb3B0aW9uczpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldFdlZWtZZWFyKG5ldyBEYXRlKDIwMTAsIDAsIDIpLCAyMDA0KVxuICogLy89PiBTYXQgSmFuIDAzIDIwMDQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IHRoZSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyIDIwMDQgdG8gMiBKYW51YXJ5IDIwMTAsXG4gKiAvLyBpZiBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB3ZWVrXG4gKiAvLyBhbmQgNCBKYW51YXJ5IGlzIGFsd2F5cyBpbiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhcjpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldFdlZWtZZWFyKG5ldyBEYXRlKDIwMTAsIDAsIDIpLCAyMDA0LCB7XG4gKiAgIHdlZWtTdGFydHNPbjogMSxcbiAqICAgZmlyc3RXZWVrQ29udGFpbnNEYXRlOiA0XG4gKiB9KVxuICogLy89PiBTYXQgSmFuIDAxIDIwMDUgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0V2Vla1llYXIoZGlydHlEYXRlLCBkaXJ0eVdlZWtZZWFyLCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfcmVmMiwgX3JlZjMsIF9vcHRpb25zJGZpcnN0V2Vla0NvbiwgX29wdGlvbnMkbG9jYWxlLCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8sIF9kZWZhdWx0T3B0aW9ucyRsb2NhbCwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMjtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIHZhciBmaXJzdFdlZWtDb250YWluc0RhdGUgPSB0b0ludGVnZXIoKF9yZWYgPSAoX3JlZjIgPSAoX3JlZjMgPSAoX29wdGlvbnMkZmlyc3RXZWVrQ29uID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX29wdGlvbnMkZmlyc3RXZWVrQ29uICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRmaXJzdFdlZWtDb24gOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUgPSBvcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlJG9wdGlvID0gX29wdGlvbnMkbG9jYWxlLm9wdGlvbnMpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX29wdGlvbnMkbG9jYWxlJG9wdGlvLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZjMgIT09IHZvaWQgMCA/IF9yZWYzIDogZGVmYXVsdE9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdm9pZCAwID8gX3JlZjIgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsID0gZGVmYXVsdE9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID0gX2RlZmF1bHRPcHRpb25zJGxvY2FsLm9wdGlvbnMpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB2b2lkIDAgPyBfcmVmIDogMSk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciB3ZWVrWWVhciA9IHRvSW50ZWdlcihkaXJ0eVdlZWtZZWFyKTtcbiAgdmFyIGRpZmYgPSBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMoZGF0ZSwgc3RhcnRPZldlZWtZZWFyKGRhdGUsIG9wdGlvbnMpKTtcbiAgdmFyIGZpcnN0V2VlayA9IG5ldyBEYXRlKDApO1xuICBmaXJzdFdlZWsuc2V0RnVsbFllYXIod2Vla1llYXIsIDAsIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSk7XG4gIGZpcnN0V2Vlay5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgZGF0ZSA9IHN0YXJ0T2ZXZWVrWWVhcihmaXJzdFdlZWssIG9wdGlvbnMpO1xuICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyBkaWZmKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc2V0WWVhclxuICogQGNhdGVnb3J5IFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgU2V0IHRoZSB5ZWFyIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU2V0IHRoZSB5ZWFyIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0geWVhciAtIHRoZSB5ZWFyIG9mIHRoZSBuZXcgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSB5ZWFyIHNldFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgeWVhciAyMDEzIHRvIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBzZXRZZWFyKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCAyMDEzKVxuICogLy89PiBTdW4gU2VwIDAxIDIwMTMgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0WWVhcihkaXJ0eURhdGUsIGRpcnR5WWVhcikge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHllYXIgPSB0b0ludGVnZXIoZGlydHlZZWFyKTtcblxuICAvLyBDaGVjayBpZiBkYXRlIGlzIEludmFsaWQgRGF0ZSBiZWNhdXNlIERhdGUucHJvdG90eXBlLnNldEZ1bGxZZWFyIGlnbm9yZXMgdGhlIHZhbHVlIG9mIEludmFsaWQgRGF0ZVxuICBpZiAoaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbiAgZGF0ZS5zZXRGdWxsWWVhcih5ZWFyKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdGFydE9mRGF5XG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgYSBkYXkgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiBhIGRheSBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBzdGFydCBvZiBhIGRheVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhIGRheSBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZEYXkobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPT4gVHVlIFNlcCAwMiAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZEYXkoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZEZWNhZGVcbiAqIEBjYXRlZ29yeSBEZWNhZGUgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhIGRlY2FkZSBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgZGVjYWRlIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgc3RhcnQgb2YgYSBkZWNhZGVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYSBkZWNhZGUgZm9yIDIxIE9jdG9iZXIgMjAxNSAwMDowMDowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZEZWNhZGUobmV3IERhdGUoMjAxNSwgOSwgMjEsIDAwLCAwMCwgMDApKVxuICogLy89PiBKYW4gMDEgMjAxMCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mRGVjYWRlKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIHZhciBkZWNhZGUgPSBNYXRoLmZsb29yKHllYXIgLyAxMCkgKiAxMDtcbiAgZGF0ZS5zZXRGdWxsWWVhcihkZWNhZGUsIDAsIDEpO1xuICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZIb3VyXG4gKiBAY2F0ZWdvcnkgSG91ciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGFuIGhvdXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiBhbiBob3VyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHN0YXJ0IG9mIGFuIGhvdXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYW4gaG91ciBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZIb3VyKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSkpXG4gKiAvLz0+IFR1ZSBTZXAgMDIgMjAxNCAxMTowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mSG91cihkaXJ0eURhdGUpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIGRhdGUuc2V0TWludXRlcygwLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHN0YXJ0T2ZXZWVrIGZyb20gXCIuLi9zdGFydE9mV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3RhcnRPZklTT1dlZWtcbiAqIEBjYXRlZ29yeSBJU08gV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGFuIElTTyB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYW4gSVNPIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHN0YXJ0IG9mIGFuIElTTyB3ZWVrXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGFuIElTTyB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZklTT1dlZWsobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPT4gTW9uIFNlcCAwMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZJU09XZWVrKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHN0YXJ0T2ZXZWVrKGRpcnR5RGF0ZSwge1xuICAgIHdlZWtTdGFydHNPbjogMVxuICB9KTtcbn0iLCJpbXBvcnQgZ2V0SVNPV2Vla1llYXIgZnJvbSBcIi4uL2dldElTT1dlZWtZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZklTT1dlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZJU09XZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdGFydE9mSVNPV2Vla1llYXJcbiAqIEBjYXRlZ29yeSBJU08gV2Vlay1OdW1iZXJpbmcgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGFuIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYW4gSVNPIHdlZWstbnVtYmVyaW5nIHllYXIsXG4gKiB3aGljaCBhbHdheXMgc3RhcnRzIDMgZGF5cyBiZWZvcmUgdGhlIHllYXIncyBmaXJzdCBUaHVyc2RheS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBzdGFydCBvZiBhbiBJU08gd2Vlay1udW1iZXJpbmcgeWVhclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhbiBJU08gd2Vlay1udW1iZXJpbmcgeWVhciBmb3IgMiBKdWx5IDIwMDU6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mSVNPV2Vla1llYXIobmV3IERhdGUoMjAwNSwgNiwgMikpXG4gKiAvLz0+IE1vbiBKYW4gMDMgMjAwNSAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mSVNPV2Vla1llYXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgeWVhciA9IGdldElTT1dlZWtZZWFyKGRpcnR5RGF0ZSk7XG4gIHZhciBmb3VydGhPZkphbnVhcnkgPSBuZXcgRGF0ZSgwKTtcbiAgZm91cnRoT2ZKYW51YXJ5LnNldEZ1bGxZZWFyKHllYXIsIDAsIDQpO1xuICBmb3VydGhPZkphbnVhcnkuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBkYXRlID0gc3RhcnRPZklTT1dlZWsoZm91cnRoT2ZKYW51YXJ5KTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdGFydE9mTWludXRlXG4gKiBAY2F0ZWdvcnkgTWludXRlIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgYSBtaW51dGUgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiBhIG1pbnV0ZSBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBzdGFydCBvZiBhIG1pbnV0ZVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhIG1pbnV0ZSBmb3IgMSBEZWNlbWJlciAyMDE0IDIyOjE1OjQ1LjQwMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZNaW51dGUobmV3IERhdGUoMjAxNCwgMTEsIDEsIDIyLCAxNSwgNDUsIDQwMCkpXG4gKiAvLz0+IE1vbiBEZWMgMDEgMjAxNCAyMjoxNTowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mTWludXRlKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgZGF0ZS5zZXRTZWNvbmRzKDAsIDApO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZNb250aFxuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgYSBtb250aCBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgbW9udGggZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgc3RhcnQgb2YgYSBtb250aFxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhIG1vbnRoIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZk1vbnRoKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz0+IE1vbiBTZXAgMDEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mTW9udGgoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICBkYXRlLnNldERhdGUoMSk7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3RhcnRPZlF1YXJ0ZXJcbiAqIEBjYXRlZ29yeSBRdWFydGVyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgYSB5ZWFyIHF1YXJ0ZXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiBhIHllYXIgcXVhcnRlciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHJldHVybnMge0RhdGV9IHRoZSBzdGFydCBvZiBhIHF1YXJ0ZXJcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYSBxdWFydGVyIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZlF1YXJ0ZXIobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPT4gVHVlIEp1bCAwMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZRdWFydGVyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGN1cnJlbnRNb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgdmFyIG1vbnRoID0gY3VycmVudE1vbnRoIC0gY3VycmVudE1vbnRoICUgMztcbiAgZGF0ZS5zZXRNb250aChtb250aCwgMSk7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBkYXRlO1xufSIsImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3RhcnRPZlNlY29uZFxuICogQGNhdGVnb3J5IFNlY29uZCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgc2Vjb25kIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYSBzZWNvbmQgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgc3RhcnQgb2YgYSBzZWNvbmRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYSBzZWNvbmQgZm9yIDEgRGVjZW1iZXIgMjAxNCAyMjoxNTo0NS40MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mU2Vjb25kKG5ldyBEYXRlKDIwMTQsIDExLCAxLCAyMiwgMTUsIDQ1LCA0MDApKVxuICogLy89PiBNb24gRGVjIDAxIDIwMTQgMjI6MTU6NDUuMDAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZTZWNvbmQoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICBkYXRlLnNldE1pbGxpc2Vjb25kcygwKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHN0YXJ0T2ZEYXkgZnJvbSBcIi4uL3N0YXJ0T2ZEYXkvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3RhcnRPZlRvZGF5XG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgdG9kYXkuXG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiB0b2RheS5cbiAqXG4gKiA+IOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIEZQIHN1Ym1vZHVsZSBhc1xuICogPiBpdCB1c2VzIGBEYXRlLm5vdygpYCBpbnRlcm5hbGx5IGhlbmNlIGltcHVyZSBhbmQgY2FuJ3QgYmUgc2FmZWx5IGN1cnJpZWQuXG4gKlxuICogQHJldHVybnMge0RhdGV9IHRoZSBzdGFydCBvZiB0b2RheVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0b2RheSBpcyA2IE9jdG9iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZUb2RheSgpXG4gKiAvLz0+IE1vbiBPY3QgNiAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZUb2RheSgpIHtcbiAgcmV0dXJuIHN0YXJ0T2ZEYXkoRGF0ZS5ub3coKSk7XG59IiwiLyoqXG4gKiBAbmFtZSBzdGFydE9mVG9tb3Jyb3dcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiB0b21vcnJvdy5cbiAqIEBwdXJlIGZhbHNlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIHRvbW9ycm93LlxuICpcbiAqID4g4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCBpbiB0aGUgRlAgc3VibW9kdWxlIGFzXG4gKiA+IGl0IHVzZXMgYG5ldyBEYXRlKClgIGludGVybmFsbHkgaGVuY2UgaW1wdXJlIGFuZCBjYW4ndCBiZSBzYWZlbHkgY3VycmllZC5cbiAqXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHN0YXJ0IG9mIHRvbW9ycm93XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDYgT2N0b2JlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZlRvbW9ycm93KClcbiAqIC8vPT4gVHVlIE9jdCA3IDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZlRvbW9ycm93KCkge1xuICB2YXIgbm93ID0gbmV3IERhdGUoKTtcbiAgdmFyIHllYXIgPSBub3cuZ2V0RnVsbFllYXIoKTtcbiAgdmFyIG1vbnRoID0gbm93LmdldE1vbnRoKCk7XG4gIHZhciBkYXkgPSBub3cuZ2V0RGF0ZSgpO1xuICB2YXIgZGF0ZSA9IG5ldyBEYXRlKDApO1xuICBkYXRlLnNldEZ1bGxZZWFyKHllYXIsIG1vbnRoLCBkYXkgKyAxKTtcbiAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL19saWIvZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3RhcnRPZldlZWtcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgYSB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYSB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgc3RhcnQgb2YgYSB3ZWVrXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLndlZWtTdGFydHNPbmAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDZcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGEgd2VlayBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZXZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz0+IFN1biBBdWcgMzEgMjAxNCAwMDowMDowMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0aGUgd2VlayBzdGFydHMgb24gTW9uZGF5LCB0aGUgc3RhcnQgb2YgdGhlIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApLCB7IHdlZWtTdGFydHNPbjogMSB9KVxuICogLy89PiBNb24gU2VwIDAxIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZldlZWsoZGlydHlEYXRlLCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfcmVmMiwgX3JlZjMsIF9vcHRpb25zJHdlZWtTdGFydHNPbiwgX29wdGlvbnMkbG9jYWxlLCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8sIF9kZWZhdWx0T3B0aW9ucyRsb2NhbCwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMjtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIHZhciB3ZWVrU3RhcnRzT24gPSB0b0ludGVnZXIoKF9yZWYgPSAoX3JlZjIgPSAoX3JlZjMgPSAoX29wdGlvbnMkd2Vla1N0YXJ0c09uID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX29wdGlvbnMkd2Vla1N0YXJ0c09uICE9PSB2b2lkIDAgPyBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUgPSBvcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlJG9wdGlvID0gX29wdGlvbnMkbG9jYWxlLm9wdGlvbnMpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX29wdGlvbnMkbG9jYWxlJG9wdGlvLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjMgIT09IHZvaWQgMCA/IF9yZWYzIDogZGVmYXVsdE9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdm9pZCAwID8gX3JlZjIgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsID0gZGVmYXVsdE9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID0gX2RlZmF1bHRPcHRpb25zJGxvY2FsLm9wdGlvbnMpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB2b2lkIDAgPyBfcmVmIDogMCk7XG5cbiAgLy8gVGVzdCBpZiB3ZWVrU3RhcnRzT24gaXMgYmV0d2VlbiAwIGFuZCA2IF9hbmRfIGlzIG5vdCBOYU5cbiAgaWYgKCEod2Vla1N0YXJ0c09uID49IDAgJiYgd2Vla1N0YXJ0c09uIDw9IDYpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3dlZWtTdGFydHNPbiBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNiBpbmNsdXNpdmVseScpO1xuICB9XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkYXkgPSBkYXRlLmdldERheSgpO1xuICB2YXIgZGlmZiA9IChkYXkgPCB3ZWVrU3RhcnRzT24gPyA3IDogMCkgKyBkYXkgLSB3ZWVrU3RhcnRzT247XG4gIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSAtIGRpZmYpO1xuICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgZ2V0V2Vla1llYXIgZnJvbSBcIi4uL2dldFdlZWtZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZldlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL19saWIvZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3RhcnRPZldlZWtZZWFyXG4gKiBAY2F0ZWdvcnkgV2Vlay1OdW1iZXJpbmcgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhci5cbiAqIFRoZSBleGFjdCBjYWxjdWxhdGlvbiBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2ZcbiAqIGBvcHRpb25zLndlZWtTdGFydHNPbmAgKHdoaWNoIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrKVxuICogYW5kIGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgKHdoaWNoIGlzIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluXG4gKiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgd2Vlay1udW1iZXJpbmcgeWVhcilcbiAqXG4gKiBXZWVrIG51bWJlcmluZzogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2VlayNXZWVrX251bWJlcmluZ1xuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcGFyYW0gezF8MnwzfDR8NXw2fDd9IFtvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZT0xXSAtIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHN0YXJ0IG9mIGEgd2Vlay1udW1iZXJpbmcgeWVhclxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy53ZWVrU3RhcnRzT25gIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhbiBhIHdlZWstbnVtYmVyaW5nIHllYXIgZm9yIDIgSnVseSAyMDA1IHdpdGggZGVmYXVsdCBzZXR0aW5nczpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZXZWVrWWVhcihuZXcgRGF0ZSgyMDA1LCA2LCAyKSlcbiAqIC8vPT4gU3VuIERlYyAyNiAyMDA0IDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhIHdlZWstbnVtYmVyaW5nIHllYXIgZm9yIDIgSnVseSAyMDA1XG4gKiAvLyBpZiBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB3ZWVrXG4gKiAvLyBhbmQgNCBKYW51YXJ5IGlzIGFsd2F5cyBpbiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhcjpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZXZWVrWWVhcihuZXcgRGF0ZSgyMDA1LCA2LCAyKSwge1xuICogICB3ZWVrU3RhcnRzT246IDEsXG4gKiAgIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZTogNFxuICogfSlcbiAqIC8vPT4gTW9uIEphbiAwMyAyMDA1IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZXZWVrWWVhcihkaXJ0eURhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9yZWYyLCBfcmVmMywgX29wdGlvbnMkZmlyc3RXZWVrQ29uLCBfb3B0aW9ucyRsb2NhbGUsIF9vcHRpb25zJGxvY2FsZSRvcHRpbywgX2RlZmF1bHRPcHRpb25zJGxvY2FsLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyO1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9IHRvSW50ZWdlcigoX3JlZiA9IChfcmVmMiA9IChfcmVmMyA9IChfb3B0aW9ucyRmaXJzdFdlZWtDb24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRmaXJzdFdlZWtDb24gIT09IHZvaWQgMCA/IF9vcHRpb25zJGZpcnN0V2Vla0NvbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPSBfb3B0aW9ucyRsb2NhbGUub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlJG9wdGlvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUkb3B0aW8uZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiBkZWZhdWx0T3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDAgPyBfcmVmMiA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsMi5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiAxKTtcbiAgdmFyIHllYXIgPSBnZXRXZWVrWWVhcihkaXJ0eURhdGUsIG9wdGlvbnMpO1xuICB2YXIgZmlyc3RXZWVrID0gbmV3IERhdGUoMCk7XG4gIGZpcnN0V2Vlay5zZXRGdWxsWWVhcih5ZWFyLCAwLCBmaXJzdFdlZWtDb250YWluc0RhdGUpO1xuICBmaXJzdFdlZWsuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBkYXRlID0gc3RhcnRPZldlZWsoZmlyc3RXZWVrLCBvcHRpb25zKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdGFydE9mWWVhclxuICogQGNhdGVnb3J5IFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhIHllYXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiBhIHllYXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIG9yaWdpbmFsIGRhdGVcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgc3RhcnQgb2YgYSB5ZWFyXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGEgeWVhciBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZZZWFyKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMDApKVxuICogLy89PiBXZWQgSmFuIDAxIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZlllYXIoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgY2xlYW5EYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkYXRlID0gbmV3IERhdGUoMCk7XG4gIGRhdGUuc2V0RnVsbFllYXIoY2xlYW5EYXRlLmdldEZ1bGxZZWFyKCksIDAsIDEpO1xuICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gZGF0ZTtcbn0iLCIvKipcbiAqIEBuYW1lIHN0YXJ0T2ZZZXN0ZXJkYXlcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiB5ZXN0ZXJkYXkuXG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiB5ZXN0ZXJkYXkuXG4gKlxuICogPiDimqDvuI8gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGluIHRoZSBGUCBzdWJtb2R1bGUgYXNcbiAqID4gaXQgdXNlcyBgbmV3IERhdGUoKWAgaW50ZXJuYWxseSBoZW5jZSBpbXB1cmUgYW5kIGNhbid0IGJlIHNhZmVseSBjdXJyaWVkLlxuICpcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgc3RhcnQgb2YgeWVzdGVyZGF5XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRvZGF5IGlzIDYgT2N0b2JlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZlllc3RlcmRheSgpXG4gKiAvLz0+IFN1biBPY3QgNSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZZZXN0ZXJkYXkoKSB7XG4gIHZhciBub3cgPSBuZXcgRGF0ZSgpO1xuICB2YXIgeWVhciA9IG5vdy5nZXRGdWxsWWVhcigpO1xuICB2YXIgbW9udGggPSBub3cuZ2V0TW9udGgoKTtcbiAgdmFyIGRheSA9IG5vdy5nZXREYXRlKCk7XG4gIHZhciBkYXRlID0gbmV3IERhdGUoMCk7XG4gIGRhdGUuc2V0RnVsbFllYXIoeWVhciwgbW9udGgsIGRheSAtIDEpO1xuICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gZGF0ZTtcbn0iLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mXCI7XG5pbXBvcnQgc3ViRGF5cyBmcm9tIFwiLi4vc3ViRGF5cy9pbmRleC5qc1wiO1xuaW1wb3J0IHN1Yk1vbnRocyBmcm9tIFwiLi4vc3ViTW9udGhzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgc3ViXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMsIGhvdXJzLCBtaW51dGVzIGFuZCBzZWNvbmRzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3VycywgbWludXRlcyBhbmQgc2Vjb25kcyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge0R1cmF0aW9ufSBkdXJhdGlvbiAtIHRoZSBvYmplY3Qgd2l0aCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMgYW5kIHNlY29uZHMgdG8gYmUgc3VidHJhY3RlZFxuICpcbiAqIHwgS2V5ICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8IHllYXJzICAgfCBBbW91bnQgb2YgeWVhcnMgdG8gYmUgc3VidHJhY3RlZCAgIHxcbiAqIHwgbW9udGhzICB8IEFtb3VudCBvZiBtb250aHMgdG8gYmUgc3VidHJhY3RlZCAgfFxuICogfCB3ZWVrcyAgIHwgQW1vdW50IG9mIHdlZWtzIHRvIGJlIHN1YnRyYWN0ZWQgICB8XG4gKiB8IGRheXMgICAgfCBBbW91bnQgb2YgZGF5cyB0byBiZSBzdWJ0cmFjdGVkICAgIHxcbiAqIHwgaG91cnMgICB8IEFtb3VudCBvZiBob3VycyB0byBiZSBzdWJ0cmFjdGVkICAgfFxuICogfCBtaW51dGVzIHwgQW1vdW50IG9mIG1pbnV0ZXMgdG8gYmUgc3VidHJhY3RlZCB8XG4gKiB8IHNlY29uZHMgfCBBbW91bnQgb2Ygc2Vjb25kcyB0byBiZSBzdWJ0cmFjdGVkIHxcbiAqXG4gKiBBbGwgdmFsdWVzIGRlZmF1bHQgdG8gMFxuICpcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgc2Vjb25kcyBzdWJ0cmFjdGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN1YnRyYWN0IHRoZSBmb2xsb3dpbmcgZHVyYXRpb24gZnJvbSAxNSBKdW5lIDIwMTcgMTU6Mjk6MjBcbiAqIGNvbnN0IHJlc3VsdCA9IHN1YihuZXcgRGF0ZSgyMDE3LCA1LCAxNSwgMTUsIDI5LCAyMCksIHtcbiAqICAgeWVhcnM6IDIsXG4gKiAgIG1vbnRoczogOSxcbiAqICAgd2Vla3M6IDEsXG4gKiAgIGRheXM6IDcsXG4gKiAgIGhvdXJzOiA1LFxuICogICBtaW51dGVzOiA5LFxuICogICBzZWNvbmRzOiAzMFxuICogfSlcbiAqIC8vPT4gTW9uIFNlcCAxIDIwMTQgMTA6MTk6NTBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3ViKGRhdGUsIGR1cmF0aW9uKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICBpZiAoIWR1cmF0aW9uIHx8IF90eXBlb2YoZHVyYXRpb24pICE9PSAnb2JqZWN0JykgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIHZhciB5ZWFycyA9IGR1cmF0aW9uLnllYXJzID8gdG9JbnRlZ2VyKGR1cmF0aW9uLnllYXJzKSA6IDA7XG4gIHZhciBtb250aHMgPSBkdXJhdGlvbi5tb250aHMgPyB0b0ludGVnZXIoZHVyYXRpb24ubW9udGhzKSA6IDA7XG4gIHZhciB3ZWVrcyA9IGR1cmF0aW9uLndlZWtzID8gdG9JbnRlZ2VyKGR1cmF0aW9uLndlZWtzKSA6IDA7XG4gIHZhciBkYXlzID0gZHVyYXRpb24uZGF5cyA/IHRvSW50ZWdlcihkdXJhdGlvbi5kYXlzKSA6IDA7XG4gIHZhciBob3VycyA9IGR1cmF0aW9uLmhvdXJzID8gdG9JbnRlZ2VyKGR1cmF0aW9uLmhvdXJzKSA6IDA7XG4gIHZhciBtaW51dGVzID0gZHVyYXRpb24ubWludXRlcyA/IHRvSW50ZWdlcihkdXJhdGlvbi5taW51dGVzKSA6IDA7XG4gIHZhciBzZWNvbmRzID0gZHVyYXRpb24uc2Vjb25kcyA/IHRvSW50ZWdlcihkdXJhdGlvbi5zZWNvbmRzKSA6IDA7XG5cbiAgLy8gU3VidHJhY3QgeWVhcnMgYW5kIG1vbnRoc1xuICB2YXIgZGF0ZVdpdGhvdXRNb250aHMgPSBzdWJNb250aHMoZGF0ZSwgbW9udGhzICsgeWVhcnMgKiAxMik7XG5cbiAgLy8gU3VidHJhY3Qgd2Vla3MgYW5kIGRheXNcbiAgdmFyIGRhdGVXaXRob3V0RGF5cyA9IHN1YkRheXMoZGF0ZVdpdGhvdXRNb250aHMsIGRheXMgKyB3ZWVrcyAqIDcpO1xuXG4gIC8vIFN1YnRyYWN0IGhvdXJzLCBtaW51dGVzIGFuZCBzZWNvbmRzXG4gIHZhciBtaW51dGVzdG9TdWIgPSBtaW51dGVzICsgaG91cnMgKiA2MDtcbiAgdmFyIHNlY29uZHN0b1N1YiA9IHNlY29uZHMgKyBtaW51dGVzdG9TdWIgKiA2MDtcbiAgdmFyIG1zdG9TdWIgPSBzZWNvbmRzdG9TdWIgKiAxMDAwO1xuICB2YXIgZmluYWxEYXRlID0gbmV3IERhdGUoZGF0ZVdpdGhvdXREYXlzLmdldFRpbWUoKSAtIG1zdG9TdWIpO1xuICByZXR1cm4gZmluYWxEYXRlO1xufSIsImltcG9ydCBhZGRCdXNpbmVzc0RheXMgZnJvbSBcIi4uL2FkZEJ1c2luZXNzRGF5cy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN1YkJ1c2luZXNzRGF5c1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTdWJzdHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYnVzaW5lc3MgZGF5cyAobW9uIC0gZnJpKSB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFN1YnN0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBidXNpbmVzcyBkYXlzIChtb24gLSBmcmkpIHRvIHRoZSBnaXZlbiBkYXRlLCBpZ25vcmluZyB3ZWVrZW5kcy5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2YgYnVzaW5lc3MgZGF5cyB0byBiZSBzdWJ0cmFjdGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIGJ1c2luZXNzIGRheXMgc3VidHJhY3RlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdWJzdHJhY3QgMTAgYnVzaW5lc3MgZGF5cyBmcm9tIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBzdWJCdXNpbmVzc0RheXMobmV3IERhdGUoMjAxNCwgOCwgMSksIDEwKVxuICogLy89PiBNb24gQXVnIDE4IDIwMTQgMDA6MDA6MDAgKHNraXBwZWQgd2Vla2VuZCBkYXlzKVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdWJCdXNpbmVzc0RheXMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIHJldHVybiBhZGRCdXNpbmVzc0RheXMoZGlydHlEYXRlLCAtYW1vdW50KTtcbn0iLCJpbXBvcnQgYWRkRGF5cyBmcm9tIFwiLi4vYWRkRGF5cy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN1YkRheXNcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiBkYXlzIHRvIGJlIHN1YnRyYWN0ZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgZGF5cyBzdWJ0cmFjdGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN1YnRyYWN0IDEwIGRheXMgZnJvbSAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gc3ViRGF5cyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgMTApXG4gKiAvLz0+IEZyaSBBdWcgMjIgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdWJEYXlzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gYWRkRGF5cyhkaXJ0eURhdGUsIC1hbW91bnQpO1xufSIsImltcG9ydCBhZGRIb3VycyBmcm9tIFwiLi4vYWRkSG91cnMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdWJIb3Vyc1xuICogQGNhdGVnb3J5IEhvdXIgSGVscGVyc1xuICogQHN1bW1hcnkgU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgaG91cnMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGhvdXJzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIGhvdXJzIHRvIGJlIHN1YnRyYWN0ZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgaG91cnMgc3VidHJhY3RlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdWJ0cmFjdCAyIGhvdXJzIGZyb20gMTEgSnVseSAyMDE0IDAxOjAwOjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3ViSG91cnMobmV3IERhdGUoMjAxNCwgNiwgMTEsIDEsIDApLCAyKVxuICogLy89PiBUaHUgSnVsIDEwIDIwMTQgMjM6MDA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3ViSG91cnMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIHJldHVybiBhZGRIb3VycyhkaXJ0eURhdGUsIC1hbW91bnQpO1xufSIsImltcG9ydCBhZGRJU09XZWVrWWVhcnMgZnJvbSBcIi4uL2FkZElTT1dlZWtZZWFycy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN1YklTT1dlZWtZZWFyc1xuICogQGNhdGVnb3J5IElTTyBXZWVrLU51bWJlcmluZyBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFycyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgdG8gYmUgc3VidHJhY3RlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgc3VidHJhY3RlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdWJ0cmFjdCA1IElTTyB3ZWVrLW51bWJlcmluZyB5ZWFycyBmcm9tIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBzdWJJU09XZWVrWWVhcnMobmV3IERhdGUoMjAxNCwgOCwgMSksIDUpXG4gKiAvLz0+IE1vbiBBdWcgMzEgMjAwOSAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdWJJU09XZWVrWWVhcnMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIHJldHVybiBhZGRJU09XZWVrWWVhcnMoZGlydHlEYXRlLCAtYW1vdW50KTtcbn0iLCJpbXBvcnQgYWRkTWlsbGlzZWNvbmRzIGZyb20gXCIuLi9hZGRNaWxsaXNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdWJNaWxsaXNlY29uZHNcbiAqIEBjYXRlZ29yeSBNaWxsaXNlY29uZCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaWxsaXNlY29uZHMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiBtaWxsaXNlY29uZHMgdG8gYmUgc3VidHJhY3RlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBtaWxsaXNlY29uZHMgc3VidHJhY3RlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdWJ0cmFjdCA3NTAgbWlsbGlzZWNvbmRzIGZyb20gMTAgSnVseSAyMDE0IDEyOjQ1OjMwLjAwMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN1Yk1pbGxpc2Vjb25kcyhuZXcgRGF0ZSgyMDE0LCA2LCAxMCwgMTIsIDQ1LCAzMCwgMCksIDc1MClcbiAqIC8vPT4gVGh1IEp1bCAxMCAyMDE0IDEyOjQ1OjI5LjI1MFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdWJNaWxsaXNlY29uZHMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIHJldHVybiBhZGRNaWxsaXNlY29uZHMoZGlydHlEYXRlLCAtYW1vdW50KTtcbn0iLCJpbXBvcnQgYWRkTWludXRlcyBmcm9tIFwiLi4vYWRkTWludXRlcy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN1Yk1pbnV0ZXNcbiAqIEBjYXRlZ29yeSBNaW51dGUgSGVscGVyc1xuICogQHN1bW1hcnkgU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWludXRlcyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWludXRlcyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiBtaW51dGVzIHRvIGJlIHN1YnRyYWN0ZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgbWludXRlcyBzdWJ0cmFjdGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN1YnRyYWN0IDMwIG1pbnV0ZXMgZnJvbSAxMCBKdWx5IDIwMTQgMTI6MDA6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdWJNaW51dGVzKG5ldyBEYXRlKDIwMTQsIDYsIDEwLCAxMiwgMCksIDMwKVxuICogLy89PiBUaHUgSnVsIDEwIDIwMTQgMTE6MzA6MDBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3ViTWludXRlcyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIGFkZE1pbnV0ZXMoZGlydHlEYXRlLCAtYW1vdW50KTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IGFkZE1vbnRocyBmcm9tIFwiLi4vYWRkTW9udGhzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdWJNb250aHNcbiAqIEBjYXRlZ29yeSBNb250aCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtb250aHMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1vbnRocyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiBtb250aHMgdG8gYmUgc3VidHJhY3RlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBtb250aHMgc3VidHJhY3RlZFxuICogQHRocm93cyB7VHlwZUVycm9yfSAyIGFyZ3VtZW50cyByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdWJ0cmFjdCA1IG1vbnRocyBmcm9tIDEgRmVicnVhcnkgMjAxNTpcbiAqIGNvbnN0IHJlc3VsdCA9IHN1Yk1vbnRocyhuZXcgRGF0ZSgyMDE1LCAxLCAxKSwgNSlcbiAqIC8vPT4gTW9uIFNlcCAwMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN1Yk1vbnRocyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIGFkZE1vbnRocyhkaXJ0eURhdGUsIC1hbW91bnQpO1xufSIsImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkUXVhcnRlcnMgZnJvbSBcIi4uL2FkZFF1YXJ0ZXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBzdWJRdWFydGVyc1xuICogQGNhdGVnb3J5IFF1YXJ0ZXIgSGVscGVyc1xuICogQHN1bW1hcnkgU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgeWVhciBxdWFydGVycyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgeWVhciBxdWFydGVycyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiBxdWFydGVycyB0byBiZSBzdWJ0cmFjdGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIHF1YXJ0ZXJzIHN1YnRyYWN0ZWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3VidHJhY3QgMyBxdWFydGVycyBmcm9tIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBzdWJRdWFydGVycyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgMylcbiAqIC8vPT4gU3VuIERlYyAwMSAyMDEzIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN1YlF1YXJ0ZXJzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gYWRkUXVhcnRlcnMoZGlydHlEYXRlLCAtYW1vdW50KTtcbn0iLCJpbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IGFkZFNlY29uZHMgZnJvbSBcIi4uL2FkZFNlY29uZHMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN1YlNlY29uZHNcbiAqIEBjYXRlZ29yeSBTZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2Ygc2Vjb25kcyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2Ygc2Vjb25kcyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiBzZWNvbmRzIHRvIGJlIHN1YnRyYWN0ZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgc2Vjb25kcyBzdWJ0cmFjdGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN1YnRyYWN0IDMwIHNlY29uZHMgZnJvbSAxMCBKdWx5IDIwMTQgMTI6NDU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdWJTZWNvbmRzKG5ldyBEYXRlKDIwMTQsIDYsIDEwLCAxMiwgNDUsIDApLCAzMClcbiAqIC8vPT4gVGh1IEp1bCAxMCAyMDE0IDEyOjQ0OjMwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN1YlNlY29uZHMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIHJldHVybiBhZGRTZWNvbmRzKGRpcnR5RGF0ZSwgLWFtb3VudCk7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCBhZGRXZWVrcyBmcm9tIFwiLi4vYWRkV2Vla3MvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN1YldlZWtzXG4gKiBAY2F0ZWdvcnkgV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB3ZWVrcyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2Ygd2Vla3MgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2Ygd2Vla3MgdG8gYmUgc3VidHJhY3RlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSB3ZWVrcyBzdWJ0cmFjdGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN1YnRyYWN0IDQgd2Vla3MgZnJvbSAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gc3ViV2Vla3MobmV3IERhdGUoMjAxNCwgOCwgMSksIDQpXG4gKiAvLz0+IE1vbiBBdWcgMDQgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdWJXZWVrcyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIGFkZFdlZWtzKGRpcnR5RGF0ZSwgLWFtb3VudCk7XG59IiwiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vX2xpYi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCBhZGRZZWFycyBmcm9tIFwiLi4vYWRkWWVhcnMvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN1YlllYXJzXG4gKiBAY2F0ZWdvcnkgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB5ZWFycyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgeWVhcnMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBkYXRlIC0gdGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtOdW1iZXJ9IGFtb3VudCAtIHRoZSBhbW91bnQgb2YgeWVhcnMgdG8gYmUgc3VidHJhY3RlZC4gUG9zaXRpdmUgZGVjaW1hbHMgd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmZsb29yYCwgZGVjaW1hbHMgbGVzcyB0aGFuIHplcm8gd2lsbCBiZSByb3VuZGVkIHVzaW5nIGBNYXRoLmNlaWxgLlxuICogQHJldHVybnMge0RhdGV9IHRoZSBuZXcgZGF0ZSB3aXRoIHRoZSB5ZWFycyBzdWJ0cmFjdGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN1YnRyYWN0IDUgeWVhcnMgZnJvbSAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gc3ViWWVhcnMobmV3IERhdGUoMjAxNCwgOCwgMSksIDUpXG4gKiAvLz0+IFR1ZSBTZXAgMDEgMjAwOSAwMDowMDowMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdWJZZWFycyhkaXJ0eURhdGUsIGRpcnR5QW1vdW50KSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgYW1vdW50ID0gdG9JbnRlZ2VyKGRpcnR5QW1vdW50KTtcbiAgcmV0dXJuIGFkZFllYXJzKGRpcnR5RGF0ZSwgLWFtb3VudCk7XG59IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZlwiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGFyZ3VtZW50IC0gdGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPT4gVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz0+IFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpO1xuXG4gIC8vIENsb25lIHRoZSBkYXRlXG4gIGlmIChhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHwgX3R5cGVvZihhcmd1bWVudCkgPT09ICdvYmplY3QnICYmIGFyZ1N0ciA9PT0gJ1tvYmplY3QgRGF0ZV0nKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50LmdldFRpbWUoKSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGFyZ3VtZW50ID09PSAnbnVtYmVyJyB8fCBhcmdTdHIgPT09ICdbb2JqZWN0IE51bWJlcl0nKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50KTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoKHR5cGVvZiBhcmd1bWVudCA9PT0gJ3N0cmluZycgfHwgYXJnU3RyID09PSAnW29iamVjdCBTdHJpbmddJykgJiYgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKFwiU3RhcnRpbmcgd2l0aCB2Mi4wLjAtYmV0YS4xIGRhdGUtZm5zIGRvZXNuJ3QgYWNjZXB0IHN0cmluZ3MgYXMgZGF0ZSBhcmd1bWVudHMuIFBsZWFzZSB1c2UgYHBhcnNlSVNPYCB0byBwYXJzZSBzdHJpbmdzLiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VwZ3JhZGVHdWlkZS5tZCNzdHJpbmctYXJndW1lbnRzXCIpO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybihuZXcgRXJyb3IoKS5zdGFjayk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59IiwiaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IGRheXNJbldlZWsgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHdlZWtzVG9EYXlzXG4gKiBAY2F0ZWdvcnkgQ29udmVyc2lvbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHdlZWtzIHRvIGRheXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHdlZWtzIHRvIGEgZnVsbCBudW1iZXIgb2YgZGF5cy5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gd2Vla3MgLSBudW1iZXIgb2Ygd2Vla3MgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiB3ZWVrcyBjb252ZXJ0ZWQgaW4gZGF5c1xuICogQHRocm93cyB7VHlwZUVycm9yfSAxIGFyZ3VtZW50IHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgMiB3ZWVrcyBpbnRvIGRheXNcbiAqIGNvbnN0IHJlc3VsdCA9IHdlZWtzVG9EYXlzKDIpXG4gKiAvLz0+IDE0XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHdlZWtzVG9EYXlzKHdlZWtzKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gTWF0aC5mbG9vcih3ZWVrcyAqIGRheXNJbldlZWspO1xufSIsImltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBtb250aHNJblllYXIgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHllYXJzVG9Nb250aHNcbiAqIEBjYXRlZ29yeSBDb252ZXJzaW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgeWVhcnMgdG8gbW9udGhzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIG51bWJlciBvZiB5ZWFycyB0byBhIGZ1bGwgbnVtYmVyIG9mIG1vbnRocy5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0geWVhcnMgLSBudW1iZXIgb2YgeWVhcnMgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiB5ZWFycyBjb252ZXJ0ZWQgaW4gbW9udGhzXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDEgYXJndW1lbnQgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCAyIHllYXJzIGludG8gbW9udGhzXG4gKiBjb25zdCByZXN1bHQgPSB5ZWFyc1RvTW9udGhzKDIpXG4gKiAvLz0+IDI0XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHllYXJzVG9Nb250aHMoeWVhcnMpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBNYXRoLmZsb29yKHllYXJzICogbW9udGhzSW5ZZWFyKTtcbn0iLCJpbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgcXVhcnRlcnNJblllYXIgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHllYXJzVG9RdWFydGVyc1xuICogQGNhdGVnb3J5IENvbnZlcnNpb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB5ZWFycyB0byBxdWFydGVycy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgYSBudW1iZXIgb2YgeWVhcnMgdG8gYSBmdWxsIG51bWJlciBvZiBxdWFydGVycy5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0geWVhcnMgLSBudW1iZXIgb2YgeWVhcnMgdG8gYmUgY29udmVydGVkXG4gKlxuICogQHJldHVybnMge251bWJlcn0gdGhlIG51bWJlciBvZiB5ZWFycyBjb252ZXJ0ZWQgaW4gcXVhcnRlcnNcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IDIgeWVhcnMgdG8gcXVhcnRlcnNcbiAqIGNvbnN0IHJlc3VsdCA9IHllYXJzVG9RdWFydGVycygyKVxuICogLy89PiA4XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHllYXJzVG9RdWFydGVycyh5ZWFycykge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIE1hdGguZmxvb3IoeWVhcnMgKiBxdWFydGVyc0luWWVhcik7XG59IiwiLyohXG4gKiBqUXVlcnkgSmF2YVNjcmlwdCBMaWJyYXJ5IHYzLjYuMVxuICogaHR0cHM6Ly9qcXVlcnkuY29tL1xuICpcbiAqIEluY2x1ZGVzIFNpenpsZS5qc1xuICogaHR0cHM6Ly9zaXp6bGVqcy5jb20vXG4gKlxuICogQ29weXJpZ2h0IE9wZW5KUyBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZVxuICogaHR0cHM6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqXG4gKiBEYXRlOiAyMDIyLTA4LTI2VDE3OjUyWlxuICovXG4oIGZ1bmN0aW9uKCBnbG9iYWwsIGZhY3RvcnkgKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0aWYgKCB0eXBlb2YgbW9kdWxlID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdC8vIEZvciBDb21tb25KUyBhbmQgQ29tbW9uSlMtbGlrZSBlbnZpcm9ubWVudHMgd2hlcmUgYSBwcm9wZXIgYHdpbmRvd2Bcblx0XHQvLyBpcyBwcmVzZW50LCBleGVjdXRlIHRoZSBmYWN0b3J5IGFuZCBnZXQgalF1ZXJ5LlxuXHRcdC8vIEZvciBlbnZpcm9ubWVudHMgdGhhdCBkbyBub3QgaGF2ZSBhIGB3aW5kb3dgIHdpdGggYSBgZG9jdW1lbnRgXG5cdFx0Ly8gKHN1Y2ggYXMgTm9kZS5qcyksIGV4cG9zZSBhIGZhY3RvcnkgYXMgbW9kdWxlLmV4cG9ydHMuXG5cdFx0Ly8gVGhpcyBhY2NlbnR1YXRlcyB0aGUgbmVlZCBmb3IgdGhlIGNyZWF0aW9uIG9mIGEgcmVhbCBgd2luZG93YC5cblx0XHQvLyBlLmcuIHZhciBqUXVlcnkgPSByZXF1aXJlKFwianF1ZXJ5XCIpKHdpbmRvdyk7XG5cdFx0Ly8gU2VlIHRpY2tldCB0cmFjLTE0NTQ5IGZvciBtb3JlIGluZm8uXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBnbG9iYWwuZG9jdW1lbnQgP1xuXHRcdFx0ZmFjdG9yeSggZ2xvYmFsLCB0cnVlICkgOlxuXHRcdFx0ZnVuY3Rpb24oIHcgKSB7XG5cdFx0XHRcdGlmICggIXcuZG9jdW1lbnQgKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCBcImpRdWVyeSByZXF1aXJlcyBhIHdpbmRvdyB3aXRoIGEgZG9jdW1lbnRcIiApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBmYWN0b3J5KCB3ICk7XG5cdFx0XHR9O1xuXHR9IGVsc2Uge1xuXHRcdGZhY3RvcnkoIGdsb2JhbCApO1xuXHR9XG5cbi8vIFBhc3MgdGhpcyBpZiB3aW5kb3cgaXMgbm90IGRlZmluZWQgeWV0XG59ICkoIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB0aGlzLCBmdW5jdGlvbiggd2luZG93LCBub0dsb2JhbCApIHtcblxuLy8gRWRnZSA8PSAxMiAtIDEzKywgRmlyZWZveCA8PTE4IC0gNDUrLCBJRSAxMCAtIDExLCBTYWZhcmkgNS4xIC0gOSssIGlPUyA2IC0gOS4xXG4vLyB0aHJvdyBleGNlcHRpb25zIHdoZW4gbm9uLXN0cmljdCBjb2RlIChlLmcuLCBBU1AuTkVUIDQuNSkgYWNjZXNzZXMgc3RyaWN0IG1vZGVcbi8vIGFyZ3VtZW50cy5jYWxsZWUuY2FsbGVyICh0cmFjLTEzMzM1KS4gQnV0IGFzIG9mIGpRdWVyeSAzLjAgKDIwMTYpLCBzdHJpY3QgbW9kZSBzaG91bGQgYmUgY29tbW9uXG4vLyBlbm91Z2ggdGhhdCBhbGwgc3VjaCBhdHRlbXB0cyBhcmUgZ3VhcmRlZCBpbiBhIHRyeSBibG9jay5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgYXJyID0gW107XG5cbnZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcblxudmFyIHNsaWNlID0gYXJyLnNsaWNlO1xuXG52YXIgZmxhdCA9IGFyci5mbGF0ID8gZnVuY3Rpb24oIGFycmF5ICkge1xuXHRyZXR1cm4gYXJyLmZsYXQuY2FsbCggYXJyYXkgKTtcbn0gOiBmdW5jdGlvbiggYXJyYXkgKSB7XG5cdHJldHVybiBhcnIuY29uY2F0LmFwcGx5KCBbXSwgYXJyYXkgKTtcbn07XG5cblxudmFyIHB1c2ggPSBhcnIucHVzaDtcblxudmFyIGluZGV4T2YgPSBhcnIuaW5kZXhPZjtcblxudmFyIGNsYXNzMnR5cGUgPSB7fTtcblxudmFyIHRvU3RyaW5nID0gY2xhc3MydHlwZS50b1N0cmluZztcblxudmFyIGhhc093biA9IGNsYXNzMnR5cGUuaGFzT3duUHJvcGVydHk7XG5cbnZhciBmblRvU3RyaW5nID0gaGFzT3duLnRvU3RyaW5nO1xuXG52YXIgT2JqZWN0RnVuY3Rpb25TdHJpbmcgPSBmblRvU3RyaW5nLmNhbGwoIE9iamVjdCApO1xuXG52YXIgc3VwcG9ydCA9IHt9O1xuXG52YXIgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uIGlzRnVuY3Rpb24oIG9iaiApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IENocm9tZSA8PTU3LCBGaXJlZm94IDw9NTJcblx0XHQvLyBJbiBzb21lIGJyb3dzZXJzLCB0eXBlb2YgcmV0dXJucyBcImZ1bmN0aW9uXCIgZm9yIEhUTUwgPG9iamVjdD4gZWxlbWVudHNcblx0XHQvLyAoaS5lLiwgYHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcIm9iamVjdFwiICkgPT09IFwiZnVuY3Rpb25cImApLlxuXHRcdC8vIFdlIGRvbid0IHdhbnQgdG8gY2xhc3NpZnkgKmFueSogRE9NIG5vZGUgYXMgYSBmdW5jdGlvbi5cblx0XHQvLyBTdXBwb3J0OiBRdFdlYiA8PTMuOC41LCBXZWJLaXQgPD01MzQuMzQsIHdraHRtbHRvcGRmIHRvb2wgPD0wLjEyLjVcblx0XHQvLyBQbHVzIGZvciBvbGQgV2ViS2l0LCB0eXBlb2YgcmV0dXJucyBcImZ1bmN0aW9uXCIgZm9yIEhUTUwgY29sbGVjdGlvbnNcblx0XHQvLyAoZS5nLiwgYHR5cGVvZiBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImRpdlwiKSA9PT0gXCJmdW5jdGlvblwiYCkuIChnaC00NzU2KVxuXHRcdHJldHVybiB0eXBlb2Ygb2JqID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIG9iai5ub2RlVHlwZSAhPT0gXCJudW1iZXJcIiAmJlxuXHRcdFx0dHlwZW9mIG9iai5pdGVtICE9PSBcImZ1bmN0aW9uXCI7XG5cdH07XG5cblxudmFyIGlzV2luZG93ID0gZnVuY3Rpb24gaXNXaW5kb3coIG9iaiApIHtcblx0XHRyZXR1cm4gb2JqICE9IG51bGwgJiYgb2JqID09PSBvYmoud2luZG93O1xuXHR9O1xuXG5cbnZhciBkb2N1bWVudCA9IHdpbmRvdy5kb2N1bWVudDtcblxuXG5cblx0dmFyIHByZXNlcnZlZFNjcmlwdEF0dHJpYnV0ZXMgPSB7XG5cdFx0dHlwZTogdHJ1ZSxcblx0XHRzcmM6IHRydWUsXG5cdFx0bm9uY2U6IHRydWUsXG5cdFx0bm9Nb2R1bGU6IHRydWVcblx0fTtcblxuXHRmdW5jdGlvbiBET01FdmFsKCBjb2RlLCBub2RlLCBkb2MgKSB7XG5cdFx0ZG9jID0gZG9jIHx8IGRvY3VtZW50O1xuXG5cdFx0dmFyIGksIHZhbCxcblx0XHRcdHNjcmlwdCA9IGRvYy5jcmVhdGVFbGVtZW50KCBcInNjcmlwdFwiICk7XG5cblx0XHRzY3JpcHQudGV4dCA9IGNvZGU7XG5cdFx0aWYgKCBub2RlICkge1xuXHRcdFx0Zm9yICggaSBpbiBwcmVzZXJ2ZWRTY3JpcHRBdHRyaWJ1dGVzICkge1xuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggNjQrLCBFZGdlIDE4K1xuXHRcdFx0XHQvLyBTb21lIGJyb3dzZXJzIGRvbid0IHN1cHBvcnQgdGhlIFwibm9uY2VcIiBwcm9wZXJ0eSBvbiBzY3JpcHRzLlxuXHRcdFx0XHQvLyBPbiB0aGUgb3RoZXIgaGFuZCwganVzdCB1c2luZyBgZ2V0QXR0cmlidXRlYCBpcyBub3QgZW5vdWdoIGFzXG5cdFx0XHRcdC8vIHRoZSBgbm9uY2VgIGF0dHJpYnV0ZSBpcyByZXNldCB0byBhbiBlbXB0eSBzdHJpbmcgd2hlbmV2ZXIgaXRcblx0XHRcdFx0Ly8gYmVjb21lcyBicm93c2luZy1jb250ZXh0IGNvbm5lY3RlZC5cblx0XHRcdFx0Ly8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvaHRtbC9pc3N1ZXMvMjM2OVxuXHRcdFx0XHQvLyBTZWUgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jbm9uY2UtYXR0cmlidXRlc1xuXHRcdFx0XHQvLyBUaGUgYG5vZGUuZ2V0QXR0cmlidXRlYCBjaGVjayB3YXMgYWRkZWQgZm9yIHRoZSBzYWtlIG9mXG5cdFx0XHRcdC8vIGBqUXVlcnkuZ2xvYmFsRXZhbGAgc28gdGhhdCBpdCBjYW4gZmFrZSBhIG5vbmNlLWNvbnRhaW5pbmcgbm9kZVxuXHRcdFx0XHQvLyB2aWEgYW4gb2JqZWN0LlxuXHRcdFx0XHR2YWwgPSBub2RlWyBpIF0gfHwgbm9kZS5nZXRBdHRyaWJ1dGUgJiYgbm9kZS5nZXRBdHRyaWJ1dGUoIGkgKTtcblx0XHRcdFx0aWYgKCB2YWwgKSB7XG5cdFx0XHRcdFx0c2NyaXB0LnNldEF0dHJpYnV0ZSggaSwgdmFsICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0ZG9jLmhlYWQuYXBwZW5kQ2hpbGQoIHNjcmlwdCApLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHNjcmlwdCApO1xuXHR9XG5cblxuZnVuY3Rpb24gdG9UeXBlKCBvYmogKSB7XG5cdGlmICggb2JqID09IG51bGwgKSB7XG5cdFx0cmV0dXJuIG9iaiArIFwiXCI7XG5cdH1cblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9Mi4zIG9ubHkgKGZ1bmN0aW9uaXNoIFJlZ0V4cClcblx0cmV0dXJuIHR5cGVvZiBvYmogPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIG9iaiA9PT0gXCJmdW5jdGlvblwiID9cblx0XHRjbGFzczJ0eXBlWyB0b1N0cmluZy5jYWxsKCBvYmogKSBdIHx8IFwib2JqZWN0XCIgOlxuXHRcdHR5cGVvZiBvYmo7XG59XG4vKiBnbG9iYWwgU3ltYm9sICovXG4vLyBEZWZpbmluZyB0aGlzIGdsb2JhbCBpbiAuZXNsaW50cmMuanNvbiB3b3VsZCBjcmVhdGUgYSBkYW5nZXIgb2YgdXNpbmcgdGhlIGdsb2JhbFxuLy8gdW5ndWFyZGVkIGluIGFub3RoZXIgcGxhY2UsIGl0IHNlZW1zIHNhZmVyIHRvIGRlZmluZSBnbG9iYWwgb25seSBmb3IgdGhpcyBtb2R1bGVcblxuXG5cbnZhclxuXHR2ZXJzaW9uID0gXCIzLjYuMVwiLFxuXG5cdC8vIERlZmluZSBhIGxvY2FsIGNvcHkgb2YgalF1ZXJ5XG5cdGpRdWVyeSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHtcblxuXHRcdC8vIFRoZSBqUXVlcnkgb2JqZWN0IGlzIGFjdHVhbGx5IGp1c3QgdGhlIGluaXQgY29uc3RydWN0b3IgJ2VuaGFuY2VkJ1xuXHRcdC8vIE5lZWQgaW5pdCBpZiBqUXVlcnkgaXMgY2FsbGVkIChqdXN0IGFsbG93IGVycm9yIHRvIGJlIHRocm93biBpZiBub3QgaW5jbHVkZWQpXG5cdFx0cmV0dXJuIG5ldyBqUXVlcnkuZm4uaW5pdCggc2VsZWN0b3IsIGNvbnRleHQgKTtcblx0fTtcblxualF1ZXJ5LmZuID0galF1ZXJ5LnByb3RvdHlwZSA9IHtcblxuXHQvLyBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIGpRdWVyeSBiZWluZyB1c2VkXG5cdGpxdWVyeTogdmVyc2lvbixcblxuXHRjb25zdHJ1Y3RvcjogalF1ZXJ5LFxuXG5cdC8vIFRoZSBkZWZhdWx0IGxlbmd0aCBvZiBhIGpRdWVyeSBvYmplY3QgaXMgMFxuXHRsZW5ndGg6IDAsXG5cblx0dG9BcnJheTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHNsaWNlLmNhbGwoIHRoaXMgKTtcblx0fSxcblxuXHQvLyBHZXQgdGhlIE50aCBlbGVtZW50IGluIHRoZSBtYXRjaGVkIGVsZW1lbnQgc2V0IE9SXG5cdC8vIEdldCB0aGUgd2hvbGUgbWF0Y2hlZCBlbGVtZW50IHNldCBhcyBhIGNsZWFuIGFycmF5XG5cdGdldDogZnVuY3Rpb24oIG51bSApIHtcblxuXHRcdC8vIFJldHVybiBhbGwgdGhlIGVsZW1lbnRzIGluIGEgY2xlYW4gYXJyYXlcblx0XHRpZiAoIG51bSA9PSBudWxsICkge1xuXHRcdFx0cmV0dXJuIHNsaWNlLmNhbGwoIHRoaXMgKTtcblx0XHR9XG5cblx0XHQvLyBSZXR1cm4ganVzdCB0aGUgb25lIGVsZW1lbnQgZnJvbSB0aGUgc2V0XG5cdFx0cmV0dXJuIG51bSA8IDAgPyB0aGlzWyBudW0gKyB0aGlzLmxlbmd0aCBdIDogdGhpc1sgbnVtIF07XG5cdH0sXG5cblx0Ly8gVGFrZSBhbiBhcnJheSBvZiBlbGVtZW50cyBhbmQgcHVzaCBpdCBvbnRvIHRoZSBzdGFja1xuXHQvLyAocmV0dXJuaW5nIHRoZSBuZXcgbWF0Y2hlZCBlbGVtZW50IHNldClcblx0cHVzaFN0YWNrOiBmdW5jdGlvbiggZWxlbXMgKSB7XG5cblx0XHQvLyBCdWlsZCBhIG5ldyBqUXVlcnkgbWF0Y2hlZCBlbGVtZW50IHNldFxuXHRcdHZhciByZXQgPSBqUXVlcnkubWVyZ2UoIHRoaXMuY29uc3RydWN0b3IoKSwgZWxlbXMgKTtcblxuXHRcdC8vIEFkZCB0aGUgb2xkIG9iamVjdCBvbnRvIHRoZSBzdGFjayAoYXMgYSByZWZlcmVuY2UpXG5cdFx0cmV0LnByZXZPYmplY3QgPSB0aGlzO1xuXG5cdFx0Ly8gUmV0dXJuIHRoZSBuZXdseS1mb3JtZWQgZWxlbWVudCBzZXRcblx0XHRyZXR1cm4gcmV0O1xuXHR9LFxuXG5cdC8vIEV4ZWN1dGUgYSBjYWxsYmFjayBmb3IgZXZlcnkgZWxlbWVudCBpbiB0aGUgbWF0Y2hlZCBzZXQuXG5cdGVhY2g6IGZ1bmN0aW9uKCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmVhY2goIHRoaXMsIGNhbGxiYWNrICk7XG5cdH0sXG5cblx0bWFwOiBmdW5jdGlvbiggY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkubWFwKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgaSApIHtcblx0XHRcdHJldHVybiBjYWxsYmFjay5jYWxsKCBlbGVtLCBpLCBlbGVtICk7XG5cdFx0fSApICk7XG5cdH0sXG5cblx0c2xpY2U6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggc2xpY2UuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApICk7XG5cdH0sXG5cblx0Zmlyc3Q6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLmVxKCAwICk7XG5cdH0sXG5cblx0bGFzdDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuZXEoIC0xICk7XG5cdH0sXG5cblx0ZXZlbjogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkuZ3JlcCggdGhpcywgZnVuY3Rpb24oIF9lbGVtLCBpICkge1xuXHRcdFx0cmV0dXJuICggaSArIDEgKSAlIDI7XG5cdFx0fSApICk7XG5cdH0sXG5cblx0b2RkOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGpRdWVyeS5ncmVwKCB0aGlzLCBmdW5jdGlvbiggX2VsZW0sIGkgKSB7XG5cdFx0XHRyZXR1cm4gaSAlIDI7XG5cdFx0fSApICk7XG5cdH0sXG5cblx0ZXE6IGZ1bmN0aW9uKCBpICkge1xuXHRcdHZhciBsZW4gPSB0aGlzLmxlbmd0aCxcblx0XHRcdGogPSAraSArICggaSA8IDAgPyBsZW4gOiAwICk7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqID49IDAgJiYgaiA8IGxlbiA/IFsgdGhpc1sgaiBdIF0gOiBbXSApO1xuXHR9LFxuXG5cdGVuZDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMucHJldk9iamVjdCB8fCB0aGlzLmNvbnN0cnVjdG9yKCk7XG5cdH0sXG5cblx0Ly8gRm9yIGludGVybmFsIHVzZSBvbmx5LlxuXHQvLyBCZWhhdmVzIGxpa2UgYW4gQXJyYXkncyBtZXRob2QsIG5vdCBsaWtlIGEgalF1ZXJ5IG1ldGhvZC5cblx0cHVzaDogcHVzaCxcblx0c29ydDogYXJyLnNvcnQsXG5cdHNwbGljZTogYXJyLnNwbGljZVxufTtcblxualF1ZXJ5LmV4dGVuZCA9IGpRdWVyeS5mbi5leHRlbmQgPSBmdW5jdGlvbigpIHtcblx0dmFyIG9wdGlvbnMsIG5hbWUsIHNyYywgY29weSwgY29weUlzQXJyYXksIGNsb25lLFxuXHRcdHRhcmdldCA9IGFyZ3VtZW50c1sgMCBdIHx8IHt9LFxuXHRcdGkgPSAxLFxuXHRcdGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsXG5cdFx0ZGVlcCA9IGZhbHNlO1xuXG5cdC8vIEhhbmRsZSBhIGRlZXAgY29weSBzaXR1YXRpb25cblx0aWYgKCB0eXBlb2YgdGFyZ2V0ID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRkZWVwID0gdGFyZ2V0O1xuXG5cdFx0Ly8gU2tpcCB0aGUgYm9vbGVhbiBhbmQgdGhlIHRhcmdldFxuXHRcdHRhcmdldCA9IGFyZ3VtZW50c1sgaSBdIHx8IHt9O1xuXHRcdGkrKztcblx0fVxuXG5cdC8vIEhhbmRsZSBjYXNlIHdoZW4gdGFyZ2V0IGlzIGEgc3RyaW5nIG9yIHNvbWV0aGluZyAocG9zc2libGUgaW4gZGVlcCBjb3B5KVxuXHRpZiAoIHR5cGVvZiB0YXJnZXQgIT09IFwib2JqZWN0XCIgJiYgIWlzRnVuY3Rpb24oIHRhcmdldCApICkge1xuXHRcdHRhcmdldCA9IHt9O1xuXHR9XG5cblx0Ly8gRXh0ZW5kIGpRdWVyeSBpdHNlbGYgaWYgb25seSBvbmUgYXJndW1lbnQgaXMgcGFzc2VkXG5cdGlmICggaSA9PT0gbGVuZ3RoICkge1xuXHRcdHRhcmdldCA9IHRoaXM7XG5cdFx0aS0tO1xuXHR9XG5cblx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cblx0XHQvLyBPbmx5IGRlYWwgd2l0aCBub24tbnVsbC91bmRlZmluZWQgdmFsdWVzXG5cdFx0aWYgKCAoIG9wdGlvbnMgPSBhcmd1bWVudHNbIGkgXSApICE9IG51bGwgKSB7XG5cblx0XHRcdC8vIEV4dGVuZCB0aGUgYmFzZSBvYmplY3Rcblx0XHRcdGZvciAoIG5hbWUgaW4gb3B0aW9ucyApIHtcblx0XHRcdFx0Y29weSA9IG9wdGlvbnNbIG5hbWUgXTtcblxuXHRcdFx0XHQvLyBQcmV2ZW50IE9iamVjdC5wcm90b3R5cGUgcG9sbHV0aW9uXG5cdFx0XHRcdC8vIFByZXZlbnQgbmV2ZXItZW5kaW5nIGxvb3Bcblx0XHRcdFx0aWYgKCBuYW1lID09PSBcIl9fcHJvdG9fX1wiIHx8IHRhcmdldCA9PT0gY29weSApIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFJlY3Vyc2UgaWYgd2UncmUgbWVyZ2luZyBwbGFpbiBvYmplY3RzIG9yIGFycmF5c1xuXHRcdFx0XHRpZiAoIGRlZXAgJiYgY29weSAmJiAoIGpRdWVyeS5pc1BsYWluT2JqZWN0KCBjb3B5ICkgfHxcblx0XHRcdFx0XHQoIGNvcHlJc0FycmF5ID0gQXJyYXkuaXNBcnJheSggY29weSApICkgKSApIHtcblx0XHRcdFx0XHRzcmMgPSB0YXJnZXRbIG5hbWUgXTtcblxuXHRcdFx0XHRcdC8vIEVuc3VyZSBwcm9wZXIgdHlwZSBmb3IgdGhlIHNvdXJjZSB2YWx1ZVxuXHRcdFx0XHRcdGlmICggY29weUlzQXJyYXkgJiYgIUFycmF5LmlzQXJyYXkoIHNyYyApICkge1xuXHRcdFx0XHRcdFx0Y2xvbmUgPSBbXTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKCAhY29weUlzQXJyYXkgJiYgIWpRdWVyeS5pc1BsYWluT2JqZWN0KCBzcmMgKSApIHtcblx0XHRcdFx0XHRcdGNsb25lID0ge307XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGNsb25lID0gc3JjO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjb3B5SXNBcnJheSA9IGZhbHNlO1xuXG5cdFx0XHRcdFx0Ly8gTmV2ZXIgbW92ZSBvcmlnaW5hbCBvYmplY3RzLCBjbG9uZSB0aGVtXG5cdFx0XHRcdFx0dGFyZ2V0WyBuYW1lIF0gPSBqUXVlcnkuZXh0ZW5kKCBkZWVwLCBjbG9uZSwgY29weSApO1xuXG5cdFx0XHRcdC8vIERvbid0IGJyaW5nIGluIHVuZGVmaW5lZCB2YWx1ZXNcblx0XHRcdFx0fSBlbHNlIGlmICggY29weSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHRhcmdldFsgbmFtZSBdID0gY29weTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIFJldHVybiB0aGUgbW9kaWZpZWQgb2JqZWN0XG5cdHJldHVybiB0YXJnZXQ7XG59O1xuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cblx0Ly8gVW5pcXVlIGZvciBlYWNoIGNvcHkgb2YgalF1ZXJ5IG9uIHRoZSBwYWdlXG5cdGV4cGFuZG86IFwialF1ZXJ5XCIgKyAoIHZlcnNpb24gKyBNYXRoLnJhbmRvbSgpICkucmVwbGFjZSggL1xcRC9nLCBcIlwiICksXG5cblx0Ly8gQXNzdW1lIGpRdWVyeSBpcyByZWFkeSB3aXRob3V0IHRoZSByZWFkeSBtb2R1bGVcblx0aXNSZWFkeTogdHJ1ZSxcblxuXHRlcnJvcjogZnVuY3Rpb24oIG1zZyApIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoIG1zZyApO1xuXHR9LFxuXG5cdG5vb3A6IGZ1bmN0aW9uKCkge30sXG5cblx0aXNQbGFpbk9iamVjdDogZnVuY3Rpb24oIG9iaiApIHtcblx0XHR2YXIgcHJvdG8sIEN0b3I7XG5cblx0XHQvLyBEZXRlY3Qgb2J2aW91cyBuZWdhdGl2ZXNcblx0XHQvLyBVc2UgdG9TdHJpbmcgaW5zdGVhZCBvZiBqUXVlcnkudHlwZSB0byBjYXRjaCBob3N0IG9iamVjdHNcblx0XHRpZiAoICFvYmogfHwgdG9TdHJpbmcuY2FsbCggb2JqICkgIT09IFwiW29iamVjdCBPYmplY3RdXCIgKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0cHJvdG8gPSBnZXRQcm90byggb2JqICk7XG5cblx0XHQvLyBPYmplY3RzIHdpdGggbm8gcHJvdG90eXBlIChlLmcuLCBgT2JqZWN0LmNyZWF0ZSggbnVsbCApYCkgYXJlIHBsYWluXG5cdFx0aWYgKCAhcHJvdG8gKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHQvLyBPYmplY3RzIHdpdGggcHJvdG90eXBlIGFyZSBwbGFpbiBpZmYgdGhleSB3ZXJlIGNvbnN0cnVjdGVkIGJ5IGEgZ2xvYmFsIE9iamVjdCBmdW5jdGlvblxuXHRcdEN0b3IgPSBoYXNPd24uY2FsbCggcHJvdG8sIFwiY29uc3RydWN0b3JcIiApICYmIHByb3RvLmNvbnN0cnVjdG9yO1xuXHRcdHJldHVybiB0eXBlb2YgQ3RvciA9PT0gXCJmdW5jdGlvblwiICYmIGZuVG9TdHJpbmcuY2FsbCggQ3RvciApID09PSBPYmplY3RGdW5jdGlvblN0cmluZztcblx0fSxcblxuXHRpc0VtcHR5T2JqZWN0OiBmdW5jdGlvbiggb2JqICkge1xuXHRcdHZhciBuYW1lO1xuXG5cdFx0Zm9yICggbmFtZSBpbiBvYmogKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9LFxuXG5cdC8vIEV2YWx1YXRlcyBhIHNjcmlwdCBpbiBhIHByb3ZpZGVkIGNvbnRleHQ7IGZhbGxzIGJhY2sgdG8gdGhlIGdsb2JhbCBvbmVcblx0Ly8gaWYgbm90IHNwZWNpZmllZC5cblx0Z2xvYmFsRXZhbDogZnVuY3Rpb24oIGNvZGUsIG9wdGlvbnMsIGRvYyApIHtcblx0XHRET01FdmFsKCBjb2RlLCB7IG5vbmNlOiBvcHRpb25zICYmIG9wdGlvbnMubm9uY2UgfSwgZG9jICk7XG5cdH0sXG5cblx0ZWFjaDogZnVuY3Rpb24oIG9iaiwgY2FsbGJhY2sgKSB7XG5cdFx0dmFyIGxlbmd0aCwgaSA9IDA7XG5cblx0XHRpZiAoIGlzQXJyYXlMaWtlKCBvYmogKSApIHtcblx0XHRcdGxlbmd0aCA9IG9iai5sZW5ndGg7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblx0XHRcdFx0aWYgKCBjYWxsYmFjay5jYWxsKCBvYmpbIGkgXSwgaSwgb2JqWyBpIF0gKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9yICggaSBpbiBvYmogKSB7XG5cdFx0XHRcdGlmICggY2FsbGJhY2suY2FsbCggb2JqWyBpIF0sIGksIG9ialsgaSBdICkgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG9iajtcblx0fSxcblxuXHQvLyByZXN1bHRzIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5XG5cdG1ha2VBcnJheTogZnVuY3Rpb24oIGFyciwgcmVzdWx0cyApIHtcblx0XHR2YXIgcmV0ID0gcmVzdWx0cyB8fCBbXTtcblxuXHRcdGlmICggYXJyICE9IG51bGwgKSB7XG5cdFx0XHRpZiAoIGlzQXJyYXlMaWtlKCBPYmplY3QoIGFyciApICkgKSB7XG5cdFx0XHRcdGpRdWVyeS5tZXJnZSggcmV0LFxuXHRcdFx0XHRcdHR5cGVvZiBhcnIgPT09IFwic3RyaW5nXCIgP1xuXHRcdFx0XHRcdFx0WyBhcnIgXSA6IGFyclxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cHVzaC5jYWxsKCByZXQsIGFyciApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiByZXQ7XG5cdH0sXG5cblx0aW5BcnJheTogZnVuY3Rpb24oIGVsZW0sIGFyciwgaSApIHtcblx0XHRyZXR1cm4gYXJyID09IG51bGwgPyAtMSA6IGluZGV4T2YuY2FsbCggYXJyLCBlbGVtLCBpICk7XG5cdH0sXG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5XG5cdC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXRcblx0bWVyZ2U6IGZ1bmN0aW9uKCBmaXJzdCwgc2Vjb25kICkge1xuXHRcdHZhciBsZW4gPSArc2Vjb25kLmxlbmd0aCxcblx0XHRcdGogPSAwLFxuXHRcdFx0aSA9IGZpcnN0Lmxlbmd0aDtcblxuXHRcdGZvciAoIDsgaiA8IGxlbjsgaisrICkge1xuXHRcdFx0Zmlyc3RbIGkrKyBdID0gc2Vjb25kWyBqIF07XG5cdFx0fVxuXG5cdFx0Zmlyc3QubGVuZ3RoID0gaTtcblxuXHRcdHJldHVybiBmaXJzdDtcblx0fSxcblxuXHRncmVwOiBmdW5jdGlvbiggZWxlbXMsIGNhbGxiYWNrLCBpbnZlcnQgKSB7XG5cdFx0dmFyIGNhbGxiYWNrSW52ZXJzZSxcblx0XHRcdG1hdGNoZXMgPSBbXSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0bGVuZ3RoID0gZWxlbXMubGVuZ3RoLFxuXHRcdFx0Y2FsbGJhY2tFeHBlY3QgPSAhaW52ZXJ0O1xuXG5cdFx0Ly8gR28gdGhyb3VnaCB0aGUgYXJyYXksIG9ubHkgc2F2aW5nIHRoZSBpdGVtc1xuXHRcdC8vIHRoYXQgcGFzcyB0aGUgdmFsaWRhdG9yIGZ1bmN0aW9uXG5cdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRjYWxsYmFja0ludmVyc2UgPSAhY2FsbGJhY2soIGVsZW1zWyBpIF0sIGkgKTtcblx0XHRcdGlmICggY2FsbGJhY2tJbnZlcnNlICE9PSBjYWxsYmFja0V4cGVjdCApIHtcblx0XHRcdFx0bWF0Y2hlcy5wdXNoKCBlbGVtc1sgaSBdICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG1hdGNoZXM7XG5cdH0sXG5cblx0Ly8gYXJnIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5XG5cdG1hcDogZnVuY3Rpb24oIGVsZW1zLCBjYWxsYmFjaywgYXJnICkge1xuXHRcdHZhciBsZW5ndGgsIHZhbHVlLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRyZXQgPSBbXTtcblxuXHRcdC8vIEdvIHRocm91Z2ggdGhlIGFycmF5LCB0cmFuc2xhdGluZyBlYWNoIG9mIHRoZSBpdGVtcyB0byB0aGVpciBuZXcgdmFsdWVzXG5cdFx0aWYgKCBpc0FycmF5TGlrZSggZWxlbXMgKSApIHtcblx0XHRcdGxlbmd0aCA9IGVsZW1zLmxlbmd0aDtcblx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXHRcdFx0XHR2YWx1ZSA9IGNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpLCBhcmcgKTtcblxuXHRcdFx0XHRpZiAoIHZhbHVlICE9IG51bGwgKSB7XG5cdFx0XHRcdFx0cmV0LnB1c2goIHZhbHVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdC8vIEdvIHRocm91Z2ggZXZlcnkga2V5IG9uIHRoZSBvYmplY3QsXG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAoIGkgaW4gZWxlbXMgKSB7XG5cdFx0XHRcdHZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBpIF0sIGksIGFyZyApO1xuXG5cdFx0XHRcdGlmICggdmFsdWUgIT0gbnVsbCApIHtcblx0XHRcdFx0XHRyZXQucHVzaCggdmFsdWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXNcblx0XHRyZXR1cm4gZmxhdCggcmV0ICk7XG5cdH0sXG5cblx0Ly8gQSBnbG9iYWwgR1VJRCBjb3VudGVyIGZvciBvYmplY3RzXG5cdGd1aWQ6IDEsXG5cblx0Ly8galF1ZXJ5LnN1cHBvcnQgaXMgbm90IHVzZWQgaW4gQ29yZSBidXQgb3RoZXIgcHJvamVjdHMgYXR0YWNoIHRoZWlyXG5cdC8vIHByb3BlcnRpZXMgdG8gaXQgc28gaXQgbmVlZHMgdG8gZXhpc3QuXG5cdHN1cHBvcnQ6IHN1cHBvcnRcbn0gKTtcblxuaWYgKCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgKSB7XG5cdGpRdWVyeS5mblsgU3ltYm9sLml0ZXJhdG9yIF0gPSBhcnJbIFN5bWJvbC5pdGVyYXRvciBdO1xufVxuXG4vLyBQb3B1bGF0ZSB0aGUgY2xhc3MydHlwZSBtYXBcbmpRdWVyeS5lYWNoKCBcIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IgU3ltYm9sXCIuc3BsaXQoIFwiIFwiICksXG5cdGZ1bmN0aW9uKCBfaSwgbmFtZSApIHtcblx0XHRjbGFzczJ0eXBlWyBcIltvYmplY3QgXCIgKyBuYW1lICsgXCJdXCIgXSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcblx0fSApO1xuXG5mdW5jdGlvbiBpc0FycmF5TGlrZSggb2JqICkge1xuXG5cdC8vIFN1cHBvcnQ6IHJlYWwgaU9TIDguMiBvbmx5IChub3QgcmVwcm9kdWNpYmxlIGluIHNpbXVsYXRvcilcblx0Ly8gYGluYCBjaGVjayB1c2VkIHRvIHByZXZlbnQgSklUIGVycm9yIChnaC0yMTQ1KVxuXHQvLyBoYXNPd24gaXNuJ3QgdXNlZCBoZXJlIGR1ZSB0byBmYWxzZSBuZWdhdGl2ZXNcblx0Ly8gcmVnYXJkaW5nIE5vZGVsaXN0IGxlbmd0aCBpbiBJRVxuXHR2YXIgbGVuZ3RoID0gISFvYmogJiYgXCJsZW5ndGhcIiBpbiBvYmogJiYgb2JqLmxlbmd0aCxcblx0XHR0eXBlID0gdG9UeXBlKCBvYmogKTtcblxuXHRpZiAoIGlzRnVuY3Rpb24oIG9iaiApIHx8IGlzV2luZG93KCBvYmogKSApIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRyZXR1cm4gdHlwZSA9PT0gXCJhcnJheVwiIHx8IGxlbmd0aCA9PT0gMCB8fFxuXHRcdHR5cGVvZiBsZW5ndGggPT09IFwibnVtYmVyXCIgJiYgbGVuZ3RoID4gMCAmJiAoIGxlbmd0aCAtIDEgKSBpbiBvYmo7XG59XG52YXIgU2l6emxlID1cbi8qIVxuICogU2l6emxlIENTUyBTZWxlY3RvciBFbmdpbmUgdjIuMy42XG4gKiBodHRwczovL3NpenpsZWpzLmNvbS9cbiAqXG4gKiBDb3B5cmlnaHQgSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2VcbiAqIGh0dHBzOi8vanMuZm91bmRhdGlvbi9cbiAqXG4gKiBEYXRlOiAyMDIxLTAyLTE2XG4gKi9cbiggZnVuY3Rpb24oIHdpbmRvdyApIHtcbnZhciBpLFxuXHRzdXBwb3J0LFxuXHRFeHByLFxuXHRnZXRUZXh0LFxuXHRpc1hNTCxcblx0dG9rZW5pemUsXG5cdGNvbXBpbGUsXG5cdHNlbGVjdCxcblx0b3V0ZXJtb3N0Q29udGV4dCxcblx0c29ydElucHV0LFxuXHRoYXNEdXBsaWNhdGUsXG5cblx0Ly8gTG9jYWwgZG9jdW1lbnQgdmFyc1xuXHRzZXREb2N1bWVudCxcblx0ZG9jdW1lbnQsXG5cdGRvY0VsZW0sXG5cdGRvY3VtZW50SXNIVE1MLFxuXHRyYnVnZ3lRU0EsXG5cdHJidWdneU1hdGNoZXMsXG5cdG1hdGNoZXMsXG5cdGNvbnRhaW5zLFxuXG5cdC8vIEluc3RhbmNlLXNwZWNpZmljIGRhdGFcblx0ZXhwYW5kbyA9IFwic2l6emxlXCIgKyAxICogbmV3IERhdGUoKSxcblx0cHJlZmVycmVkRG9jID0gd2luZG93LmRvY3VtZW50LFxuXHRkaXJydW5zID0gMCxcblx0ZG9uZSA9IDAsXG5cdGNsYXNzQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLFxuXHR0b2tlbkNhY2hlID0gY3JlYXRlQ2FjaGUoKSxcblx0Y29tcGlsZXJDYWNoZSA9IGNyZWF0ZUNhY2hlKCksXG5cdG5vbm5hdGl2ZVNlbGVjdG9yQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLFxuXHRzb3J0T3JkZXIgPSBmdW5jdGlvbiggYSwgYiApIHtcblx0XHRpZiAoIGEgPT09IGIgKSB7XG5cdFx0XHRoYXNEdXBsaWNhdGUgPSB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gMDtcblx0fSxcblxuXHQvLyBJbnN0YW5jZSBtZXRob2RzXG5cdGhhc093biA9ICgge30gKS5oYXNPd25Qcm9wZXJ0eSxcblx0YXJyID0gW10sXG5cdHBvcCA9IGFyci5wb3AsXG5cdHB1c2hOYXRpdmUgPSBhcnIucHVzaCxcblx0cHVzaCA9IGFyci5wdXNoLFxuXHRzbGljZSA9IGFyci5zbGljZSxcblxuXHQvLyBVc2UgYSBzdHJpcHBlZC1kb3duIGluZGV4T2YgYXMgaXQncyBmYXN0ZXIgdGhhbiBuYXRpdmVcblx0Ly8gaHR0cHM6Ly9qc3BlcmYuY29tL3Rob3ItaW5kZXhvZi12cy1mb3IvNVxuXHRpbmRleE9mID0gZnVuY3Rpb24oIGxpc3QsIGVsZW0gKSB7XG5cdFx0dmFyIGkgPSAwLFxuXHRcdFx0bGVuID0gbGlzdC5sZW5ndGg7XG5cdFx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRpZiAoIGxpc3RbIGkgXSA9PT0gZWxlbSApIHtcblx0XHRcdFx0cmV0dXJuIGk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiAtMTtcblx0fSxcblxuXHRib29sZWFucyA9IFwiY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufFwiICtcblx0XHRcImlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWRcIixcblxuXHQvLyBSZWd1bGFyIGV4cHJlc3Npb25zXG5cblx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1zZWxlY3RvcnMvI3doaXRlc3BhY2Vcblx0d2hpdGVzcGFjZSA9IFwiW1xcXFx4MjBcXFxcdFxcXFxyXFxcXG5cXFxcZl1cIixcblxuXHQvLyBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXN5bnRheC0zLyNpZGVudC10b2tlbi1kaWFncmFtXG5cdGlkZW50aWZpZXIgPSBcIig/OlxcXFxcXFxcW1xcXFxkYS1mQS1GXXsxLDZ9XCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcIj98XFxcXFxcXFxbXlxcXFxyXFxcXG5cXFxcZl18W1xcXFx3LV18W15cXDAtXFxcXHg3Zl0pK1wiLFxuXG5cdC8vIEF0dHJpYnV0ZSBzZWxlY3RvcnM6IGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jYXR0cmlidXRlLXNlbGVjdG9yc1xuXHRhdHRyaWJ1dGVzID0gXCJcXFxcW1wiICsgd2hpdGVzcGFjZSArIFwiKihcIiArIGlkZW50aWZpZXIgKyBcIikoPzpcIiArIHdoaXRlc3BhY2UgK1xuXG5cdFx0Ly8gT3BlcmF0b3IgKGNhcHR1cmUgMilcblx0XHRcIiooWypeJHwhfl0/PSlcIiArIHdoaXRlc3BhY2UgK1xuXG5cdFx0Ly8gXCJBdHRyaWJ1dGUgdmFsdWVzIG11c3QgYmUgQ1NTIGlkZW50aWZpZXJzIFtjYXB0dXJlIDVdXG5cdFx0Ly8gb3Igc3RyaW5ncyBbY2FwdHVyZSAzIG9yIGNhcHR1cmUgNF1cIlxuXHRcdFwiKig/OicoKD86XFxcXFxcXFwufFteXFxcXFxcXFwnXSkqKSd8XFxcIigoPzpcXFxcXFxcXC58W15cXFxcXFxcXFxcXCJdKSopXFxcInwoXCIgKyBpZGVudGlmaWVyICsgXCIpKXwpXCIgK1xuXHRcdHdoaXRlc3BhY2UgKyBcIipcXFxcXVwiLFxuXG5cdHBzZXVkb3MgPSBcIjooXCIgKyBpZGVudGlmaWVyICsgXCIpKD86XFxcXCgoXCIgK1xuXG5cdFx0Ly8gVG8gcmVkdWNlIHRoZSBudW1iZXIgb2Ygc2VsZWN0b3JzIG5lZWRpbmcgdG9rZW5pemUgaW4gdGhlIHByZUZpbHRlciwgcHJlZmVyIGFyZ3VtZW50czpcblx0XHQvLyAxLiBxdW90ZWQgKGNhcHR1cmUgMzsgY2FwdHVyZSA0IG9yIGNhcHR1cmUgNSlcblx0XHRcIignKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcJ10pKiknfFxcXCIoKD86XFxcXFxcXFwufFteXFxcXFxcXFxcXFwiXSkqKVxcXCIpfFwiICtcblxuXHRcdC8vIDIuIHNpbXBsZSAoY2FwdHVyZSA2KVxuXHRcdFwiKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcKClbXFxcXF1dfFwiICsgYXR0cmlidXRlcyArIFwiKSopfFwiICtcblxuXHRcdC8vIDMuIGFueXRoaW5nIGVsc2UgKGNhcHR1cmUgMilcblx0XHRcIi4qXCIgK1xuXHRcdFwiKVxcXFwpfClcIixcblxuXHQvLyBMZWFkaW5nIGFuZCBub24tZXNjYXBlZCB0cmFpbGluZyB3aGl0ZXNwYWNlLCBjYXB0dXJpbmcgc29tZSBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzIHByZWNlZGluZyB0aGUgbGF0dGVyXG5cdHJ3aGl0ZXNwYWNlID0gbmV3IFJlZ0V4cCggd2hpdGVzcGFjZSArIFwiK1wiLCBcImdcIiApLFxuXHRydHJpbSA9IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiK3woKD86XnxbXlxcXFxcXFxcXSkoPzpcXFxcXFxcXC4pKilcIiArXG5cdFx0d2hpdGVzcGFjZSArIFwiKyRcIiwgXCJnXCIgKSxcblxuXHRyY29tbWEgPSBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIiosXCIgKyB3aGl0ZXNwYWNlICsgXCIqXCIgKSxcblx0cmNvbWJpbmF0b3JzID0gbmV3IFJlZ0V4cCggXCJeXCIgKyB3aGl0ZXNwYWNlICsgXCIqKFs+K35dfFwiICsgd2hpdGVzcGFjZSArIFwiKVwiICsgd2hpdGVzcGFjZSArXG5cdFx0XCIqXCIgKSxcblx0cmRlc2NlbmQgPSBuZXcgUmVnRXhwKCB3aGl0ZXNwYWNlICsgXCJ8PlwiICksXG5cblx0cnBzZXVkbyA9IG5ldyBSZWdFeHAoIHBzZXVkb3MgKSxcblx0cmlkZW50aWZpZXIgPSBuZXcgUmVnRXhwKCBcIl5cIiArIGlkZW50aWZpZXIgKyBcIiRcIiApLFxuXG5cdG1hdGNoRXhwciA9IHtcblx0XHRcIklEXCI6IG5ldyBSZWdFeHAoIFwiXiMoXCIgKyBpZGVudGlmaWVyICsgXCIpXCIgKSxcblx0XHRcIkNMQVNTXCI6IG5ldyBSZWdFeHAoIFwiXlxcXFwuKFwiICsgaWRlbnRpZmllciArIFwiKVwiICksXG5cdFx0XCJUQUdcIjogbmV3IFJlZ0V4cCggXCJeKFwiICsgaWRlbnRpZmllciArIFwifFsqXSlcIiApLFxuXHRcdFwiQVRUUlwiOiBuZXcgUmVnRXhwKCBcIl5cIiArIGF0dHJpYnV0ZXMgKSxcblx0XHRcIlBTRVVET1wiOiBuZXcgUmVnRXhwKCBcIl5cIiArIHBzZXVkb3MgKSxcblx0XHRcIkNISUxEXCI6IG5ldyBSZWdFeHAoIFwiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFxcXChcIiArXG5cdFx0XHR3aGl0ZXNwYWNlICsgXCIqKGV2ZW58b2RkfCgoWystXXwpKFxcXFxkKilufClcIiArIHdoaXRlc3BhY2UgKyBcIiooPzooWystXXwpXCIgK1xuXHRcdFx0d2hpdGVzcGFjZSArIFwiKihcXFxcZCspfCkpXCIgKyB3aGl0ZXNwYWNlICsgXCIqXFxcXCl8KVwiLCBcImlcIiApLFxuXHRcdFwiYm9vbFwiOiBuZXcgUmVnRXhwKCBcIl4oPzpcIiArIGJvb2xlYW5zICsgXCIpJFwiLCBcImlcIiApLFxuXG5cdFx0Ly8gRm9yIHVzZSBpbiBsaWJyYXJpZXMgaW1wbGVtZW50aW5nIC5pcygpXG5cdFx0Ly8gV2UgdXNlIHRoaXMgZm9yIFBPUyBtYXRjaGluZyBpbiBgc2VsZWN0YFxuXHRcdFwibmVlZHNDb250ZXh0XCI6IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArXG5cdFx0XHRcIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcXFwoXCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcdFwiKigoPzotXFxcXGQpP1xcXFxkKilcIiArIHdoaXRlc3BhY2UgKyBcIipcXFxcKXwpKD89W14tXXwkKVwiLCBcImlcIiApXG5cdH0sXG5cblx0cmh0bWwgPSAvSFRNTCQvaSxcblx0cmlucHV0cyA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksXG5cdHJoZWFkZXIgPSAvXmhcXGQkL2ksXG5cblx0cm5hdGl2ZSA9IC9eW157XStcXHtcXHMqXFxbbmF0aXZlIFxcdy8sXG5cblx0Ly8gRWFzaWx5LXBhcnNlYWJsZS9yZXRyaWV2YWJsZSBJRCBvciBUQUcgb3IgQ0xBU1Mgc2VsZWN0b3JzXG5cdHJxdWlja0V4cHIgPSAvXig/OiMoW1xcdy1dKyl8KFxcdyspfFxcLihbXFx3LV0rKSkkLyxcblxuXHRyc2libGluZyA9IC9bK35dLyxcblxuXHQvLyBDU1MgZXNjYXBlc1xuXHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9zeW5kYXRhLmh0bWwjZXNjYXBlZC1jaGFyYWN0ZXJzXG5cdHJ1bmVzY2FwZSA9IG5ldyBSZWdFeHAoIFwiXFxcXFxcXFxbXFxcXGRhLWZBLUZdezEsNn1cIiArIHdoaXRlc3BhY2UgKyBcIj98XFxcXFxcXFwoW15cXFxcclxcXFxuXFxcXGZdKVwiLCBcImdcIiApLFxuXHRmdW5lc2NhcGUgPSBmdW5jdGlvbiggZXNjYXBlLCBub25IZXggKSB7XG5cdFx0dmFyIGhpZ2ggPSBcIjB4XCIgKyBlc2NhcGUuc2xpY2UoIDEgKSAtIDB4MTAwMDA7XG5cblx0XHRyZXR1cm4gbm9uSGV4ID9cblxuXHRcdFx0Ly8gU3RyaXAgdGhlIGJhY2tzbGFzaCBwcmVmaXggZnJvbSBhIG5vbi1oZXggZXNjYXBlIHNlcXVlbmNlXG5cdFx0XHRub25IZXggOlxuXG5cdFx0XHQvLyBSZXBsYWNlIGEgaGV4YWRlY2ltYWwgZXNjYXBlIHNlcXVlbmNlIHdpdGggdGhlIGVuY29kZWQgVW5pY29kZSBjb2RlIHBvaW50XG5cdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTExK1xuXHRcdFx0Ly8gRm9yIHZhbHVlcyBvdXRzaWRlIHRoZSBCYXNpYyBNdWx0aWxpbmd1YWwgUGxhbmUgKEJNUCksIG1hbnVhbGx5IGNvbnN0cnVjdCBhXG5cdFx0XHQvLyBzdXJyb2dhdGUgcGFpclxuXHRcdFx0aGlnaCA8IDAgP1xuXHRcdFx0XHRTdHJpbmcuZnJvbUNoYXJDb2RlKCBoaWdoICsgMHgxMDAwMCApIDpcblx0XHRcdFx0U3RyaW5nLmZyb21DaGFyQ29kZSggaGlnaCA+PiAxMCB8IDB4RDgwMCwgaGlnaCAmIDB4M0ZGIHwgMHhEQzAwICk7XG5cdH0sXG5cblx0Ly8gQ1NTIHN0cmluZy9pZGVudGlmaWVyIHNlcmlhbGl6YXRpb25cblx0Ly8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNjb21tb24tc2VyaWFsaXppbmctaWRpb21zXG5cdHJjc3Nlc2NhcGUgPSAvKFtcXDAtXFx4MWZcXHg3Zl18Xi0/XFxkKXxeLSR8W15cXDAtXFx4MWZcXHg3Zi1cXHVGRkZGXFx3LV0vZyxcblx0ZmNzc2VzY2FwZSA9IGZ1bmN0aW9uKCBjaCwgYXNDb2RlUG9pbnQgKSB7XG5cdFx0aWYgKCBhc0NvZGVQb2ludCApIHtcblxuXHRcdFx0Ly8gVSswMDAwIE5VTEwgYmVjb21lcyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSXG5cdFx0XHRpZiAoIGNoID09PSBcIlxcMFwiICkge1xuXHRcdFx0XHRyZXR1cm4gXCJcXHVGRkZEXCI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENvbnRyb2wgY2hhcmFjdGVycyBhbmQgKGRlcGVuZGVudCB1cG9uIHBvc2l0aW9uKSBudW1iZXJzIGdldCBlc2NhcGVkIGFzIGNvZGUgcG9pbnRzXG5cdFx0XHRyZXR1cm4gY2guc2xpY2UoIDAsIC0xICkgKyBcIlxcXFxcIiArXG5cdFx0XHRcdGNoLmNoYXJDb2RlQXQoIGNoLmxlbmd0aCAtIDEgKS50b1N0cmluZyggMTYgKSArIFwiIFwiO1xuXHRcdH1cblxuXHRcdC8vIE90aGVyIHBvdGVudGlhbGx5LXNwZWNpYWwgQVNDSUkgY2hhcmFjdGVycyBnZXQgYmFja3NsYXNoLWVzY2FwZWRcblx0XHRyZXR1cm4gXCJcXFxcXCIgKyBjaDtcblx0fSxcblxuXHQvLyBVc2VkIGZvciBpZnJhbWVzXG5cdC8vIFNlZSBzZXREb2N1bWVudCgpXG5cdC8vIFJlbW92aW5nIHRoZSBmdW5jdGlvbiB3cmFwcGVyIGNhdXNlcyBhIFwiUGVybWlzc2lvbiBEZW5pZWRcIlxuXHQvLyBlcnJvciBpbiBJRVxuXHR1bmxvYWRIYW5kbGVyID0gZnVuY3Rpb24oKSB7XG5cdFx0c2V0RG9jdW1lbnQoKTtcblx0fSxcblxuXHRpbkRpc2FibGVkRmllbGRzZXQgPSBhZGRDb21iaW5hdG9yKFxuXHRcdGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IHRydWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImZpZWxkc2V0XCI7XG5cdFx0fSxcblx0XHR7IGRpcjogXCJwYXJlbnROb2RlXCIsIG5leHQ6IFwibGVnZW5kXCIgfVxuXHQpO1xuXG4vLyBPcHRpbWl6ZSBmb3IgcHVzaC5hcHBseSggXywgTm9kZUxpc3QgKVxudHJ5IHtcblx0cHVzaC5hcHBseShcblx0XHQoIGFyciA9IHNsaWNlLmNhbGwoIHByZWZlcnJlZERvYy5jaGlsZE5vZGVzICkgKSxcblx0XHRwcmVmZXJyZWREb2MuY2hpbGROb2Rlc1xuXHQpO1xuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQ8NC4wXG5cdC8vIERldGVjdCBzaWxlbnRseSBmYWlsaW5nIHB1c2guYXBwbHlcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC1leHByZXNzaW9uc1xuXHRhcnJbIHByZWZlcnJlZERvYy5jaGlsZE5vZGVzLmxlbmd0aCBdLm5vZGVUeXBlO1xufSBjYXRjaCAoIGUgKSB7XG5cdHB1c2ggPSB7IGFwcGx5OiBhcnIubGVuZ3RoID9cblxuXHRcdC8vIExldmVyYWdlIHNsaWNlIGlmIHBvc3NpYmxlXG5cdFx0ZnVuY3Rpb24oIHRhcmdldCwgZWxzICkge1xuXHRcdFx0cHVzaE5hdGl2ZS5hcHBseSggdGFyZ2V0LCBzbGljZS5jYWxsKCBlbHMgKSApO1xuXHRcdH0gOlxuXG5cdFx0Ly8gU3VwcG9ydDogSUU8OVxuXHRcdC8vIE90aGVyd2lzZSBhcHBlbmQgZGlyZWN0bHlcblx0XHRmdW5jdGlvbiggdGFyZ2V0LCBlbHMgKSB7XG5cdFx0XHR2YXIgaiA9IHRhcmdldC5sZW5ndGgsXG5cdFx0XHRcdGkgPSAwO1xuXG5cdFx0XHQvLyBDYW4ndCB0cnVzdCBOb2RlTGlzdC5sZW5ndGhcblx0XHRcdHdoaWxlICggKCB0YXJnZXRbIGorKyBdID0gZWxzWyBpKysgXSApICkge31cblx0XHRcdHRhcmdldC5sZW5ndGggPSBqIC0gMTtcblx0XHR9XG5cdH07XG59XG5cbmZ1bmN0aW9uIFNpenpsZSggc2VsZWN0b3IsIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKSB7XG5cdHZhciBtLCBpLCBlbGVtLCBuaWQsIG1hdGNoLCBncm91cHMsIG5ld1NlbGVjdG9yLFxuXHRcdG5ld0NvbnRleHQgPSBjb250ZXh0ICYmIGNvbnRleHQub3duZXJEb2N1bWVudCxcblxuXHRcdC8vIG5vZGVUeXBlIGRlZmF1bHRzIHRvIDksIHNpbmNlIGNvbnRleHQgZGVmYXVsdHMgdG8gZG9jdW1lbnRcblx0XHRub2RlVHlwZSA9IGNvbnRleHQgPyBjb250ZXh0Lm5vZGVUeXBlIDogOTtcblxuXHRyZXN1bHRzID0gcmVzdWx0cyB8fCBbXTtcblxuXHQvLyBSZXR1cm4gZWFybHkgZnJvbSBjYWxscyB3aXRoIGludmFsaWQgc2VsZWN0b3Igb3IgY29udGV4dFxuXHRpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gXCJzdHJpbmdcIiB8fCAhc2VsZWN0b3IgfHxcblx0XHRub2RlVHlwZSAhPT0gMSAmJiBub2RlVHlwZSAhPT0gOSAmJiBub2RlVHlwZSAhPT0gMTEgKSB7XG5cblx0XHRyZXR1cm4gcmVzdWx0cztcblx0fVxuXG5cdC8vIFRyeSB0byBzaG9ydGN1dCBmaW5kIG9wZXJhdGlvbnMgKGFzIG9wcG9zZWQgdG8gZmlsdGVycykgaW4gSFRNTCBkb2N1bWVudHNcblx0aWYgKCAhc2VlZCApIHtcblx0XHRzZXREb2N1bWVudCggY29udGV4dCApO1xuXHRcdGNvbnRleHQgPSBjb250ZXh0IHx8IGRvY3VtZW50O1xuXG5cdFx0aWYgKCBkb2N1bWVudElzSFRNTCApIHtcblxuXHRcdFx0Ly8gSWYgdGhlIHNlbGVjdG9yIGlzIHN1ZmZpY2llbnRseSBzaW1wbGUsIHRyeSB1c2luZyBhIFwiZ2V0KkJ5KlwiIERPTSBtZXRob2Rcblx0XHRcdC8vIChleGNlcHRpbmcgRG9jdW1lbnRGcmFnbWVudCBjb250ZXh0LCB3aGVyZSB0aGUgbWV0aG9kcyBkb24ndCBleGlzdClcblx0XHRcdGlmICggbm9kZVR5cGUgIT09IDExICYmICggbWF0Y2ggPSBycXVpY2tFeHByLmV4ZWMoIHNlbGVjdG9yICkgKSApIHtcblxuXHRcdFx0XHQvLyBJRCBzZWxlY3RvclxuXHRcdFx0XHRpZiAoICggbSA9IG1hdGNoWyAxIF0gKSApIHtcblxuXHRcdFx0XHRcdC8vIERvY3VtZW50IGNvbnRleHRcblx0XHRcdFx0XHRpZiAoIG5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoIGVsZW0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKCBtICkgKSApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSwgT3BlcmEsIFdlYmtpdFxuXHRcdFx0XHRcdFx0XHQvLyBUT0RPOiBpZGVudGlmeSB2ZXJzaW9uc1xuXHRcdFx0XHRcdFx0XHQvLyBnZXRFbGVtZW50QnlJZCBjYW4gbWF0Y2ggZWxlbWVudHMgYnkgbmFtZSBpbnN0ZWFkIG9mIElEXG5cdFx0XHRcdFx0XHRcdGlmICggZWxlbS5pZCA9PT0gbSApIHtcblx0XHRcdFx0XHRcdFx0XHRyZXN1bHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBFbGVtZW50IGNvbnRleHRcblx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSwgT3BlcmEsIFdlYmtpdFxuXHRcdFx0XHRcdFx0Ly8gVE9ETzogaWRlbnRpZnkgdmVyc2lvbnNcblx0XHRcdFx0XHRcdC8vIGdldEVsZW1lbnRCeUlkIGNhbiBtYXRjaCBlbGVtZW50cyBieSBuYW1lIGluc3RlYWQgb2YgSURcblx0XHRcdFx0XHRcdGlmICggbmV3Q29udGV4dCAmJiAoIGVsZW0gPSBuZXdDb250ZXh0LmdldEVsZW1lbnRCeUlkKCBtICkgKSAmJlxuXHRcdFx0XHRcdFx0XHRjb250YWlucyggY29udGV4dCwgZWxlbSApICYmXG5cdFx0XHRcdFx0XHRcdGVsZW0uaWQgPT09IG0gKSB7XG5cblx0XHRcdFx0XHRcdFx0cmVzdWx0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBUeXBlIHNlbGVjdG9yXG5cdFx0XHRcdH0gZWxzZSBpZiAoIG1hdGNoWyAyIF0gKSB7XG5cdFx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggc2VsZWN0b3IgKSApO1xuXHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXG5cdFx0XHRcdC8vIENsYXNzIHNlbGVjdG9yXG5cdFx0XHRcdH0gZWxzZSBpZiAoICggbSA9IG1hdGNoWyAzIF0gKSAmJiBzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgJiZcblx0XHRcdFx0XHRjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgKSB7XG5cblx0XHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIG0gKSApO1xuXHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFRha2UgYWR2YW50YWdlIG9mIHF1ZXJ5U2VsZWN0b3JBbGxcblx0XHRcdGlmICggc3VwcG9ydC5xc2EgJiZcblx0XHRcdFx0IW5vbm5hdGl2ZVNlbGVjdG9yQ2FjaGVbIHNlbGVjdG9yICsgXCIgXCIgXSAmJlxuXHRcdFx0XHQoICFyYnVnZ3lRU0EgfHwgIXJidWdneVFTQS50ZXN0KCBzZWxlY3RvciApICkgJiZcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA4IG9ubHlcblx0XHRcdFx0Ly8gRXhjbHVkZSBvYmplY3QgZWxlbWVudHNcblx0XHRcdFx0KCBub2RlVHlwZSAhPT0gMSB8fCBjb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09IFwib2JqZWN0XCIgKSApIHtcblxuXHRcdFx0XHRuZXdTZWxlY3RvciA9IHNlbGVjdG9yO1xuXHRcdFx0XHRuZXdDb250ZXh0ID0gY29udGV4dDtcblxuXHRcdFx0XHQvLyBxU0EgY29uc2lkZXJzIGVsZW1lbnRzIG91dHNpZGUgYSBzY29waW5nIHJvb3Qgd2hlbiBldmFsdWF0aW5nIGNoaWxkIG9yXG5cdFx0XHRcdC8vIGRlc2NlbmRhbnQgY29tYmluYXRvcnMsIHdoaWNoIGlzIG5vdCB3aGF0IHdlIHdhbnQuXG5cdFx0XHRcdC8vIEluIHN1Y2ggY2FzZXMsIHdlIHdvcmsgYXJvdW5kIHRoZSBiZWhhdmlvciBieSBwcmVmaXhpbmcgZXZlcnkgc2VsZWN0b3IgaW4gdGhlXG5cdFx0XHRcdC8vIGxpc3Qgd2l0aCBhbiBJRCBzZWxlY3RvciByZWZlcmVuY2luZyB0aGUgc2NvcGUgY29udGV4dC5cblx0XHRcdFx0Ly8gVGhlIHRlY2huaXF1ZSBoYXMgdG8gYmUgdXNlZCBhcyB3ZWxsIHdoZW4gYSBsZWFkaW5nIGNvbWJpbmF0b3IgaXMgdXNlZFxuXHRcdFx0XHQvLyBhcyBzdWNoIHNlbGVjdG9ycyBhcmUgbm90IHJlY29nbml6ZWQgYnkgcXVlcnlTZWxlY3RvckFsbC5cblx0XHRcdFx0Ly8gVGhhbmtzIHRvIEFuZHJldyBEdXBvbnQgZm9yIHRoaXMgdGVjaG5pcXVlLlxuXHRcdFx0XHRpZiAoIG5vZGVUeXBlID09PSAxICYmXG5cdFx0XHRcdFx0KCByZGVzY2VuZC50ZXN0KCBzZWxlY3RvciApIHx8IHJjb21iaW5hdG9ycy50ZXN0KCBzZWxlY3RvciApICkgKSB7XG5cblx0XHRcdFx0XHQvLyBFeHBhbmQgY29udGV4dCBmb3Igc2libGluZyBzZWxlY3RvcnNcblx0XHRcdFx0XHRuZXdDb250ZXh0ID0gcnNpYmxpbmcudGVzdCggc2VsZWN0b3IgKSAmJiB0ZXN0Q29udGV4dCggY29udGV4dC5wYXJlbnROb2RlICkgfHxcblx0XHRcdFx0XHRcdGNvbnRleHQ7XG5cblx0XHRcdFx0XHQvLyBXZSBjYW4gdXNlIDpzY29wZSBpbnN0ZWFkIG9mIHRoZSBJRCBoYWNrIGlmIHRoZSBicm93c2VyXG5cdFx0XHRcdFx0Ly8gc3VwcG9ydHMgaXQgJiBpZiB3ZSdyZSBub3QgY2hhbmdpbmcgdGhlIGNvbnRleHQuXG5cdFx0XHRcdFx0aWYgKCBuZXdDb250ZXh0ICE9PSBjb250ZXh0IHx8ICFzdXBwb3J0LnNjb3BlICkge1xuXG5cdFx0XHRcdFx0XHQvLyBDYXB0dXJlIHRoZSBjb250ZXh0IElELCBzZXR0aW5nIGl0IGZpcnN0IGlmIG5lY2Vzc2FyeVxuXHRcdFx0XHRcdFx0aWYgKCAoIG5pZCA9IGNvbnRleHQuZ2V0QXR0cmlidXRlKCBcImlkXCIgKSApICkge1xuXHRcdFx0XHRcdFx0XHRuaWQgPSBuaWQucmVwbGFjZSggcmNzc2VzY2FwZSwgZmNzc2VzY2FwZSApO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Y29udGV4dC5zZXRBdHRyaWJ1dGUoIFwiaWRcIiwgKCBuaWQgPSBleHBhbmRvICkgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBQcmVmaXggZXZlcnkgc2VsZWN0b3IgaW4gdGhlIGxpc3Rcblx0XHRcdFx0XHRncm91cHMgPSB0b2tlbml6ZSggc2VsZWN0b3IgKTtcblx0XHRcdFx0XHRpID0gZ3JvdXBzLmxlbmd0aDtcblx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdGdyb3Vwc1sgaSBdID0gKCBuaWQgPyBcIiNcIiArIG5pZCA6IFwiOnNjb3BlXCIgKSArIFwiIFwiICtcblx0XHRcdFx0XHRcdFx0dG9TZWxlY3RvciggZ3JvdXBzWyBpIF0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0bmV3U2VsZWN0b3IgPSBncm91cHMuam9pbiggXCIsXCIgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cyxcblx0XHRcdFx0XHRcdG5ld0NvbnRleHQucXVlcnlTZWxlY3RvckFsbCggbmV3U2VsZWN0b3IgKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdH0gY2F0Y2ggKCBxc2FFcnJvciApIHtcblx0XHRcdFx0XHRub25uYXRpdmVTZWxlY3RvckNhY2hlKCBzZWxlY3RvciwgdHJ1ZSApO1xuXHRcdFx0XHR9IGZpbmFsbHkge1xuXHRcdFx0XHRcdGlmICggbmlkID09PSBleHBhbmRvICkge1xuXHRcdFx0XHRcdFx0Y29udGV4dC5yZW1vdmVBdHRyaWJ1dGUoIFwiaWRcIiApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIEFsbCBvdGhlcnNcblx0cmV0dXJuIHNlbGVjdCggc2VsZWN0b3IucmVwbGFjZSggcnRyaW0sIFwiJDFcIiApLCBjb250ZXh0LCByZXN1bHRzLCBzZWVkICk7XG59XG5cbi8qKlxuICogQ3JlYXRlIGtleS12YWx1ZSBjYWNoZXMgb2YgbGltaXRlZCBzaXplXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb24oc3RyaW5nLCBvYmplY3QpfSBSZXR1cm5zIHRoZSBPYmplY3QgZGF0YSBhZnRlciBzdG9yaW5nIGl0IG9uIGl0c2VsZiB3aXRoXG4gKlx0cHJvcGVydHkgbmFtZSB0aGUgKHNwYWNlLXN1ZmZpeGVkKSBzdHJpbmcgYW5kIChpZiB0aGUgY2FjaGUgaXMgbGFyZ2VyIHRoYW4gRXhwci5jYWNoZUxlbmd0aClcbiAqXHRkZWxldGluZyB0aGUgb2xkZXN0IGVudHJ5XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNhY2hlKCkge1xuXHR2YXIga2V5cyA9IFtdO1xuXG5cdGZ1bmN0aW9uIGNhY2hlKCBrZXksIHZhbHVlICkge1xuXG5cdFx0Ly8gVXNlIChrZXkgKyBcIiBcIikgdG8gYXZvaWQgY29sbGlzaW9uIHdpdGggbmF0aXZlIHByb3RvdHlwZSBwcm9wZXJ0aWVzIChzZWUgSXNzdWUgIzE1Nylcblx0XHRpZiAoIGtleXMucHVzaCgga2V5ICsgXCIgXCIgKSA+IEV4cHIuY2FjaGVMZW5ndGggKSB7XG5cblx0XHRcdC8vIE9ubHkga2VlcCB0aGUgbW9zdCByZWNlbnQgZW50cmllc1xuXHRcdFx0ZGVsZXRlIGNhY2hlWyBrZXlzLnNoaWZ0KCkgXTtcblx0XHR9XG5cdFx0cmV0dXJuICggY2FjaGVbIGtleSArIFwiIFwiIF0gPSB2YWx1ZSApO1xuXHR9XG5cdHJldHVybiBjYWNoZTtcbn1cblxuLyoqXG4gKiBNYXJrIGEgZnVuY3Rpb24gZm9yIHNwZWNpYWwgdXNlIGJ5IFNpenpsZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGZ1bmN0aW9uIHRvIG1hcmtcbiAqL1xuZnVuY3Rpb24gbWFya0Z1bmN0aW9uKCBmbiApIHtcblx0Zm5bIGV4cGFuZG8gXSA9IHRydWU7XG5cdHJldHVybiBmbjtcbn1cblxuLyoqXG4gKiBTdXBwb3J0IHRlc3RpbmcgdXNpbmcgYW4gZWxlbWVudFxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gUGFzc2VkIHRoZSBjcmVhdGVkIGVsZW1lbnQgYW5kIHJldHVybnMgYSBib29sZWFuIHJlc3VsdFxuICovXG5mdW5jdGlvbiBhc3NlcnQoIGZuICkge1xuXHR2YXIgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImZpZWxkc2V0XCIgKTtcblxuXHR0cnkge1xuXHRcdHJldHVybiAhIWZuKCBlbCApO1xuXHR9IGNhdGNoICggZSApIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH0gZmluYWxseSB7XG5cblx0XHQvLyBSZW1vdmUgZnJvbSBpdHMgcGFyZW50IGJ5IGRlZmF1bHRcblx0XHRpZiAoIGVsLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBlbCApO1xuXHRcdH1cblxuXHRcdC8vIHJlbGVhc2UgbWVtb3J5IGluIElFXG5cdFx0ZWwgPSBudWxsO1xuXHR9XG59XG5cbi8qKlxuICogQWRkcyB0aGUgc2FtZSBoYW5kbGVyIGZvciBhbGwgb2YgdGhlIHNwZWNpZmllZCBhdHRyc1xuICogQHBhcmFtIHtTdHJpbmd9IGF0dHJzIFBpcGUtc2VwYXJhdGVkIGxpc3Qgb2YgYXR0cmlidXRlc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciBUaGUgbWV0aG9kIHRoYXQgd2lsbCBiZSBhcHBsaWVkXG4gKi9cbmZ1bmN0aW9uIGFkZEhhbmRsZSggYXR0cnMsIGhhbmRsZXIgKSB7XG5cdHZhciBhcnIgPSBhdHRycy5zcGxpdCggXCJ8XCIgKSxcblx0XHRpID0gYXJyLmxlbmd0aDtcblxuXHR3aGlsZSAoIGktLSApIHtcblx0XHRFeHByLmF0dHJIYW5kbGVbIGFyclsgaSBdIF0gPSBoYW5kbGVyO1xuXHR9XG59XG5cbi8qKlxuICogQ2hlY2tzIGRvY3VtZW50IG9yZGVyIG9mIHR3byBzaWJsaW5nc1xuICogQHBhcmFtIHtFbGVtZW50fSBhXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGJcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IFJldHVybnMgbGVzcyB0aGFuIDAgaWYgYSBwcmVjZWRlcyBiLCBncmVhdGVyIHRoYW4gMCBpZiBhIGZvbGxvd3MgYlxuICovXG5mdW5jdGlvbiBzaWJsaW5nQ2hlY2soIGEsIGIgKSB7XG5cdHZhciBjdXIgPSBiICYmIGEsXG5cdFx0ZGlmZiA9IGN1ciAmJiBhLm5vZGVUeXBlID09PSAxICYmIGIubm9kZVR5cGUgPT09IDEgJiZcblx0XHRcdGEuc291cmNlSW5kZXggLSBiLnNvdXJjZUluZGV4O1xuXG5cdC8vIFVzZSBJRSBzb3VyY2VJbmRleCBpZiBhdmFpbGFibGUgb24gYm90aCBub2Rlc1xuXHRpZiAoIGRpZmYgKSB7XG5cdFx0cmV0dXJuIGRpZmY7XG5cdH1cblxuXHQvLyBDaGVjayBpZiBiIGZvbGxvd3MgYVxuXHRpZiAoIGN1ciApIHtcblx0XHR3aGlsZSAoICggY3VyID0gY3VyLm5leHRTaWJsaW5nICkgKSB7XG5cdFx0XHRpZiAoIGN1ciA9PT0gYiApIHtcblx0XHRcdFx0cmV0dXJuIC0xO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBhID8gMSA6IC0xO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgaW5wdXQgdHlwZXNcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUlucHV0UHNldWRvKCB0eXBlICkge1xuXHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0dmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0cmV0dXJuIG5hbWUgPT09IFwiaW5wdXRcIiAmJiBlbGVtLnR5cGUgPT09IHR5cGU7XG5cdH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBidXR0b25zXG4gKiBAcGFyYW0ge1N0cmluZ30gdHlwZVxuICovXG5mdW5jdGlvbiBjcmVhdGVCdXR0b25Qc2V1ZG8oIHR5cGUgKSB7XG5cdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHR2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRyZXR1cm4gKCBuYW1lID09PSBcImlucHV0XCIgfHwgbmFtZSA9PT0gXCJidXR0b25cIiApICYmIGVsZW0udHlwZSA9PT0gdHlwZTtcblx0fTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVkb3MgZm9yIDplbmFibGVkLzpkaXNhYmxlZFxuICogQHBhcmFtIHtCb29sZWFufSBkaXNhYmxlZCB0cnVlIGZvciA6ZGlzYWJsZWQ7IGZhbHNlIGZvciA6ZW5hYmxlZFxuICovXG5mdW5jdGlvbiBjcmVhdGVEaXNhYmxlZFBzZXVkbyggZGlzYWJsZWQgKSB7XG5cblx0Ly8gS25vd24gOmRpc2FibGVkIGZhbHNlIHBvc2l0aXZlczogZmllbGRzZXRbZGlzYWJsZWRdID4gbGVnZW5kOm50aC1vZi10eXBlKG4rMikgOmNhbi1kaXNhYmxlXG5cdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdC8vIE9ubHkgY2VydGFpbiBlbGVtZW50cyBjYW4gbWF0Y2ggOmVuYWJsZWQgb3IgOmRpc2FibGVkXG5cdFx0Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc2NyaXB0aW5nLmh0bWwjc2VsZWN0b3ItZW5hYmxlZFxuXHRcdC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI3NlbGVjdG9yLWRpc2FibGVkXG5cdFx0aWYgKCBcImZvcm1cIiBpbiBlbGVtICkge1xuXG5cdFx0XHQvLyBDaGVjayBmb3IgaW5oZXJpdGVkIGRpc2FibGVkbmVzcyBvbiByZWxldmFudCBub24tZGlzYWJsZWQgZWxlbWVudHM6XG5cdFx0XHQvLyAqIGxpc3RlZCBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudHMgaW4gYSBkaXNhYmxlZCBmaWVsZHNldFxuXHRcdFx0Ly8gICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI2NhdGVnb3J5LWxpc3RlZFxuXHRcdFx0Ly8gICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI2NvbmNlcHQtZmUtZGlzYWJsZWRcblx0XHRcdC8vICogb3B0aW9uIGVsZW1lbnRzIGluIGEgZGlzYWJsZWQgb3B0Z3JvdXBcblx0XHRcdC8vICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNjb25jZXB0LW9wdGlvbi1kaXNhYmxlZFxuXHRcdFx0Ly8gQWxsIHN1Y2ggZWxlbWVudHMgaGF2ZSBhIFwiZm9ybVwiIHByb3BlcnR5LlxuXHRcdFx0aWYgKCBlbGVtLnBhcmVudE5vZGUgJiYgZWxlbS5kaXNhYmxlZCA9PT0gZmFsc2UgKSB7XG5cblx0XHRcdFx0Ly8gT3B0aW9uIGVsZW1lbnRzIGRlZmVyIHRvIGEgcGFyZW50IG9wdGdyb3VwIGlmIHByZXNlbnRcblx0XHRcdFx0aWYgKCBcImxhYmVsXCIgaW4gZWxlbSApIHtcblx0XHRcdFx0XHRpZiAoIFwibGFiZWxcIiBpbiBlbGVtLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZWxlbS5wYXJlbnROb2RlLmRpc2FibGVkID09PSBkaXNhYmxlZDtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IGRpc2FibGVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDYgLSAxMVxuXHRcdFx0XHQvLyBVc2UgdGhlIGlzRGlzYWJsZWQgc2hvcnRjdXQgcHJvcGVydHkgdG8gY2hlY2sgZm9yIGRpc2FibGVkIGZpZWxkc2V0IGFuY2VzdG9yc1xuXHRcdFx0XHRyZXR1cm4gZWxlbS5pc0Rpc2FibGVkID09PSBkaXNhYmxlZCB8fFxuXG5cdFx0XHRcdFx0Ly8gV2hlcmUgdGhlcmUgaXMgbm8gaXNEaXNhYmxlZCwgY2hlY2sgbWFudWFsbHlcblx0XHRcdFx0XHQvKiBqc2hpbnQgLVcwMTggKi9cblx0XHRcdFx0XHRlbGVtLmlzRGlzYWJsZWQgIT09ICFkaXNhYmxlZCAmJlxuXHRcdFx0XHRcdGluRGlzYWJsZWRGaWVsZHNldCggZWxlbSApID09PSBkaXNhYmxlZDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IGRpc2FibGVkO1xuXG5cdFx0Ly8gVHJ5IHRvIHdpbm5vdyBvdXQgZWxlbWVudHMgdGhhdCBjYW4ndCBiZSBkaXNhYmxlZCBiZWZvcmUgdHJ1c3RpbmcgdGhlIGRpc2FibGVkIHByb3BlcnR5LlxuXHRcdC8vIFNvbWUgdmljdGltcyBnZXQgY2F1Z2h0IGluIG91ciBuZXQgKGxhYmVsLCBsZWdlbmQsIG1lbnUsIHRyYWNrKSwgYnV0IGl0IHNob3VsZG4ndFxuXHRcdC8vIGV2ZW4gZXhpc3Qgb24gdGhlbSwgbGV0IGFsb25lIGhhdmUgYSBib29sZWFuIHZhbHVlLlxuXHRcdH0gZWxzZSBpZiAoIFwibGFiZWxcIiBpbiBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IGRpc2FibGVkO1xuXHRcdH1cblxuXHRcdC8vIFJlbWFpbmluZyBlbGVtZW50cyBhcmUgbmVpdGhlciA6ZW5hYmxlZCBub3IgOmRpc2FibGVkXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9O1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgcG9zaXRpb25hbHNcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oIGZuICkge1xuXHRyZXR1cm4gbWFya0Z1bmN0aW9uKCBmdW5jdGlvbiggYXJndW1lbnQgKSB7XG5cdFx0YXJndW1lbnQgPSArYXJndW1lbnQ7XG5cdFx0cmV0dXJuIG1hcmtGdW5jdGlvbiggZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMgKSB7XG5cdFx0XHR2YXIgaixcblx0XHRcdFx0bWF0Y2hJbmRleGVzID0gZm4oIFtdLCBzZWVkLmxlbmd0aCwgYXJndW1lbnQgKSxcblx0XHRcdFx0aSA9IG1hdGNoSW5kZXhlcy5sZW5ndGg7XG5cblx0XHRcdC8vIE1hdGNoIGVsZW1lbnRzIGZvdW5kIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXhlc1xuXHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdGlmICggc2VlZFsgKCBqID0gbWF0Y2hJbmRleGVzWyBpIF0gKSBdICkge1xuXHRcdFx0XHRcdHNlZWRbIGogXSA9ICEoIG1hdGNoZXNbIGogXSA9IHNlZWRbIGogXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9ICk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGEgbm9kZSBmb3IgdmFsaWRpdHkgYXMgYSBTaXp6bGUgY29udGV4dFxuICogQHBhcmFtIHtFbGVtZW50fE9iamVjdD19IGNvbnRleHRcbiAqIEByZXR1cm5zIHtFbGVtZW50fE9iamVjdHxCb29sZWFufSBUaGUgaW5wdXQgbm9kZSBpZiBhY2NlcHRhYmxlLCBvdGhlcndpc2UgYSBmYWxzeSB2YWx1ZVxuICovXG5mdW5jdGlvbiB0ZXN0Q29udGV4dCggY29udGV4dCApIHtcblx0cmV0dXJuIGNvbnRleHQgJiYgdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09IFwidW5kZWZpbmVkXCIgJiYgY29udGV4dDtcbn1cblxuLy8gRXhwb3NlIHN1cHBvcnQgdmFycyBmb3IgY29udmVuaWVuY2VcbnN1cHBvcnQgPSBTaXp6bGUuc3VwcG9ydCA9IHt9O1xuXG4vKipcbiAqIERldGVjdHMgWE1MIG5vZGVzXG4gKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0fSBlbGVtIEFuIGVsZW1lbnQgb3IgYSBkb2N1bWVudFxuICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWZmIGVsZW0gaXMgYSBub24tSFRNTCBYTUwgbm9kZVxuICovXG5pc1hNTCA9IFNpenpsZS5pc1hNTCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHR2YXIgbmFtZXNwYWNlID0gZWxlbSAmJiBlbGVtLm5hbWVzcGFjZVVSSSxcblx0XHRkb2NFbGVtID0gZWxlbSAmJiAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtICkuZG9jdW1lbnRFbGVtZW50O1xuXG5cdC8vIFN1cHBvcnQ6IElFIDw9OFxuXHQvLyBBc3N1bWUgSFRNTCB3aGVuIGRvY3VtZW50RWxlbWVudCBkb2Vzbid0IHlldCBleGlzdCwgc3VjaCBhcyBpbnNpZGUgbG9hZGluZyBpZnJhbWVzXG5cdC8vIGh0dHBzOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC80ODMzXG5cdHJldHVybiAhcmh0bWwudGVzdCggbmFtZXNwYWNlIHx8IGRvY0VsZW0gJiYgZG9jRWxlbS5ub2RlTmFtZSB8fCBcIkhUTUxcIiApO1xufTtcblxuLyoqXG4gKiBTZXRzIGRvY3VtZW50LXJlbGF0ZWQgdmFyaWFibGVzIG9uY2UgYmFzZWQgb24gdGhlIGN1cnJlbnQgZG9jdW1lbnRcbiAqIEBwYXJhbSB7RWxlbWVudHxPYmplY3R9IFtkb2NdIEFuIGVsZW1lbnQgb3IgZG9jdW1lbnQgb2JqZWN0IHRvIHVzZSB0byBzZXQgdGhlIGRvY3VtZW50XG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjdXJyZW50IGRvY3VtZW50XG4gKi9cbnNldERvY3VtZW50ID0gU2l6emxlLnNldERvY3VtZW50ID0gZnVuY3Rpb24oIG5vZGUgKSB7XG5cdHZhciBoYXNDb21wYXJlLCBzdWJXaW5kb3csXG5cdFx0ZG9jID0gbm9kZSA/IG5vZGUub3duZXJEb2N1bWVudCB8fCBub2RlIDogcHJlZmVycmVkRG9jO1xuXG5cdC8vIFJldHVybiBlYXJseSBpZiBkb2MgaXMgaW52YWxpZCBvciBhbHJlYWR5IHNlbGVjdGVkXG5cdC8vIFN1cHBvcnQ6IElFIDExKywgRWRnZSAxNyAtIDE4K1xuXHQvLyBJRS9FZGdlIHNvbWV0aW1lcyB0aHJvdyBhIFwiUGVybWlzc2lvbiBkZW5pZWRcIiBlcnJvciB3aGVuIHN0cmljdC1jb21wYXJpbmdcblx0Ly8gdHdvIGRvY3VtZW50czsgc2hhbGxvdyBjb21wYXJpc29ucyB3b3JrLlxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG5cdGlmICggZG9jID09IGRvY3VtZW50IHx8IGRvYy5ub2RlVHlwZSAhPT0gOSB8fCAhZG9jLmRvY3VtZW50RWxlbWVudCApIHtcblx0XHRyZXR1cm4gZG9jdW1lbnQ7XG5cdH1cblxuXHQvLyBVcGRhdGUgZ2xvYmFsIHZhcmlhYmxlc1xuXHRkb2N1bWVudCA9IGRvYztcblx0ZG9jRWxlbSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblx0ZG9jdW1lbnRJc0hUTUwgPSAhaXNYTUwoIGRvY3VtZW50ICk7XG5cblx0Ly8gU3VwcG9ydDogSUUgOSAtIDExKywgRWRnZSAxMiAtIDE4K1xuXHQvLyBBY2Nlc3NpbmcgaWZyYW1lIGRvY3VtZW50cyBhZnRlciB1bmxvYWQgdGhyb3dzIFwicGVybWlzc2lvbiBkZW5pZWRcIiBlcnJvcnMgKGpRdWVyeSAjMTM5MzYpXG5cdC8vIFN1cHBvcnQ6IElFIDExKywgRWRnZSAxNyAtIDE4K1xuXHQvLyBJRS9FZGdlIHNvbWV0aW1lcyB0aHJvdyBhIFwiUGVybWlzc2lvbiBkZW5pZWRcIiBlcnJvciB3aGVuIHN0cmljdC1jb21wYXJpbmdcblx0Ly8gdHdvIGRvY3VtZW50czsgc2hhbGxvdyBjb21wYXJpc29ucyB3b3JrLlxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG5cdGlmICggcHJlZmVycmVkRG9jICE9IGRvY3VtZW50ICYmXG5cdFx0KCBzdWJXaW5kb3cgPSBkb2N1bWVudC5kZWZhdWx0VmlldyApICYmIHN1YldpbmRvdy50b3AgIT09IHN1YldpbmRvdyApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDExLCBFZGdlXG5cdFx0aWYgKCBzdWJXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lciApIHtcblx0XHRcdHN1YldpbmRvdy5hZGRFdmVudExpc3RlbmVyKCBcInVubG9hZFwiLCB1bmxvYWRIYW5kbGVyLCBmYWxzZSApO1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgOSAtIDEwIG9ubHlcblx0XHR9IGVsc2UgaWYgKCBzdWJXaW5kb3cuYXR0YWNoRXZlbnQgKSB7XG5cdFx0XHRzdWJXaW5kb3cuYXR0YWNoRXZlbnQoIFwib251bmxvYWRcIiwgdW5sb2FkSGFuZGxlciApO1xuXHRcdH1cblx0fVxuXG5cdC8vIFN1cHBvcnQ6IElFIDggLSAxMSssIEVkZ2UgMTIgLSAxOCssIENocm9tZSA8PTE2IC0gMjUgb25seSwgRmlyZWZveCA8PTMuNiAtIDMxIG9ubHksXG5cdC8vIFNhZmFyaSA0IC0gNSBvbmx5LCBPcGVyYSA8PTExLjYgLSAxMi54IG9ubHlcblx0Ly8gSUUvRWRnZSAmIG9sZGVyIGJyb3dzZXJzIGRvbid0IHN1cHBvcnQgdGhlIDpzY29wZSBwc2V1ZG8tY2xhc3MuXG5cdC8vIFN1cHBvcnQ6IFNhZmFyaSA2LjAgb25seVxuXHQvLyBTYWZhcmkgNi4wIHN1cHBvcnRzIDpzY29wZSBidXQgaXQncyBhbiBhbGlhcyBvZiA6cm9vdCB0aGVyZS5cblx0c3VwcG9ydC5zY29wZSA9IGFzc2VydCggZnVuY3Rpb24oIGVsICkge1xuXHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGVsICkuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKSApO1xuXHRcdHJldHVybiB0eXBlb2YgZWwucXVlcnlTZWxlY3RvckFsbCAhPT0gXCJ1bmRlZmluZWRcIiAmJlxuXHRcdFx0IWVsLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiOnNjb3BlIGZpZWxkc2V0IGRpdlwiICkubGVuZ3RoO1xuXHR9ICk7XG5cblx0LyogQXR0cmlidXRlc1xuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gU3VwcG9ydDogSUU8OFxuXHQvLyBWZXJpZnkgdGhhdCBnZXRBdHRyaWJ1dGUgcmVhbGx5IHJldHVybnMgYXR0cmlidXRlcyBhbmQgbm90IHByb3BlcnRpZXNcblx0Ly8gKGV4Y2VwdGluZyBJRTggYm9vbGVhbnMpXG5cdHN1cHBvcnQuYXR0cmlidXRlcyA9IGFzc2VydCggZnVuY3Rpb24oIGVsICkge1xuXHRcdGVsLmNsYXNzTmFtZSA9IFwiaVwiO1xuXHRcdHJldHVybiAhZWwuZ2V0QXR0cmlidXRlKCBcImNsYXNzTmFtZVwiICk7XG5cdH0gKTtcblxuXHQvKiBnZXRFbGVtZW50KHMpQnkqXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvLyBDaGVjayBpZiBnZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIikgcmV0dXJucyBvbmx5IGVsZW1lbnRzXG5cdHN1cHBvcnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPSBhc3NlcnQoIGZ1bmN0aW9uKCBlbCApIHtcblx0XHRlbC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlQ29tbWVudCggXCJcIiApICk7XG5cdFx0cmV0dXJuICFlbC5nZXRFbGVtZW50c0J5VGFnTmFtZSggXCIqXCIgKS5sZW5ndGg7XG5cdH0gKTtcblxuXHQvLyBTdXBwb3J0OiBJRTw5XG5cdHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IHJuYXRpdmUudGVzdCggZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSApO1xuXG5cdC8vIFN1cHBvcnQ6IElFPDEwXG5cdC8vIENoZWNrIGlmIGdldEVsZW1lbnRCeUlkIHJldHVybnMgZWxlbWVudHMgYnkgbmFtZVxuXHQvLyBUaGUgYnJva2VuIGdldEVsZW1lbnRCeUlkIG1ldGhvZHMgZG9uJ3QgcGljayB1cCBwcm9ncmFtbWF0aWNhbGx5LXNldCBuYW1lcyxcblx0Ly8gc28gdXNlIGEgcm91bmRhYm91dCBnZXRFbGVtZW50c0J5TmFtZSB0ZXN0XG5cdHN1cHBvcnQuZ2V0QnlJZCA9IGFzc2VydCggZnVuY3Rpb24oIGVsICkge1xuXHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGVsICkuaWQgPSBleHBhbmRvO1xuXHRcdHJldHVybiAhZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUgfHwgIWRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCBleHBhbmRvICkubGVuZ3RoO1xuXHR9ICk7XG5cblx0Ly8gSUQgZmlsdGVyIGFuZCBmaW5kXG5cdGlmICggc3VwcG9ydC5nZXRCeUlkICkge1xuXHRcdEV4cHIuZmlsdGVyWyBcIklEXCIgXSA9IGZ1bmN0aW9uKCBpZCApIHtcblx0XHRcdHZhciBhdHRySWQgPSBpZC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoIFwiaWRcIiApID09PSBhdHRySWQ7XG5cdFx0XHR9O1xuXHRcdH07XG5cdFx0RXhwci5maW5kWyBcIklEXCIgXSA9IGZ1bmN0aW9uKCBpZCwgY29udGV4dCApIHtcblx0XHRcdGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQgIT09IFwidW5kZWZpbmVkXCIgJiYgZG9jdW1lbnRJc0hUTUwgKSB7XG5cdFx0XHRcdHZhciBlbGVtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggaWQgKTtcblx0XHRcdFx0cmV0dXJuIGVsZW0gPyBbIGVsZW0gXSA6IFtdO1xuXHRcdFx0fVxuXHRcdH07XG5cdH0gZWxzZSB7XG5cdFx0RXhwci5maWx0ZXJbIFwiSURcIiBdID0gIGZ1bmN0aW9uKCBpZCApIHtcblx0XHRcdHZhciBhdHRySWQgPSBpZC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgbm9kZSA9IHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZU5vZGUgIT09IFwidW5kZWZpbmVkXCIgJiZcblx0XHRcdFx0XHRlbGVtLmdldEF0dHJpYnV0ZU5vZGUoIFwiaWRcIiApO1xuXHRcdFx0XHRyZXR1cm4gbm9kZSAmJiBub2RlLnZhbHVlID09PSBhdHRySWQ7XG5cdFx0XHR9O1xuXHRcdH07XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA2IC0gNyBvbmx5XG5cdFx0Ly8gZ2V0RWxlbWVudEJ5SWQgaXMgbm90IHJlbGlhYmxlIGFzIGEgZmluZCBzaG9ydGN1dFxuXHRcdEV4cHIuZmluZFsgXCJJRFwiIF0gPSBmdW5jdGlvbiggaWQsIGNvbnRleHQgKSB7XG5cdFx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRCeUlkICE9PSBcInVuZGVmaW5lZFwiICYmIGRvY3VtZW50SXNIVE1MICkge1xuXHRcdFx0XHR2YXIgbm9kZSwgaSwgZWxlbXMsXG5cdFx0XHRcdFx0ZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIGlkICk7XG5cblx0XHRcdFx0aWYgKCBlbGVtICkge1xuXG5cdFx0XHRcdFx0Ly8gVmVyaWZ5IHRoZSBpZCBhdHRyaWJ1dGVcblx0XHRcdFx0XHRub2RlID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCBcImlkXCIgKTtcblx0XHRcdFx0XHRpZiAoIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gaWQgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gWyBlbGVtIF07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gRmFsbCBiYWNrIG9uIGdldEVsZW1lbnRzQnlOYW1lXG5cdFx0XHRcdFx0ZWxlbXMgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlOYW1lKCBpZCApO1xuXHRcdFx0XHRcdGkgPSAwO1xuXHRcdFx0XHRcdHdoaWxlICggKCBlbGVtID0gZWxlbXNbIGkrKyBdICkgKSB7XG5cdFx0XHRcdFx0XHRub2RlID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCBcImlkXCIgKTtcblx0XHRcdFx0XHRcdGlmICggbm9kZSAmJiBub2RlLnZhbHVlID09PSBpZCApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIFsgZWxlbSBdO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiBbXTtcblx0XHRcdH1cblx0XHR9O1xuXHR9XG5cblx0Ly8gVGFnXG5cdEV4cHIuZmluZFsgXCJUQUdcIiBdID0gc3VwcG9ydC5nZXRFbGVtZW50c0J5VGFnTmFtZSA/XG5cdFx0ZnVuY3Rpb24oIHRhZywgY29udGV4dCApIHtcblx0XHRcdGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09IFwidW5kZWZpbmVkXCIgKSB7XG5cdFx0XHRcdHJldHVybiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgKTtcblxuXHRcdFx0Ly8gRG9jdW1lbnRGcmFnbWVudCBub2RlcyBkb24ndCBoYXZlIGdFQlROXG5cdFx0XHR9IGVsc2UgaWYgKCBzdXBwb3J0LnFzYSApIHtcblx0XHRcdFx0cmV0dXJuIGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCggdGFnICk7XG5cdFx0XHR9XG5cdFx0fSA6XG5cblx0XHRmdW5jdGlvbiggdGFnLCBjb250ZXh0ICkge1xuXHRcdFx0dmFyIGVsZW0sXG5cdFx0XHRcdHRtcCA9IFtdLFxuXHRcdFx0XHRpID0gMCxcblxuXHRcdFx0XHQvLyBCeSBoYXBweSBjb2luY2lkZW5jZSwgYSAoYnJva2VuKSBnRUJUTiBhcHBlYXJzIG9uIERvY3VtZW50RnJhZ21lbnQgbm9kZXMgdG9vXG5cdFx0XHRcdHJlc3VsdHMgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgKTtcblxuXHRcdFx0Ly8gRmlsdGVyIG91dCBwb3NzaWJsZSBjb21tZW50c1xuXHRcdFx0aWYgKCB0YWcgPT09IFwiKlwiICkge1xuXHRcdFx0XHR3aGlsZSAoICggZWxlbSA9IHJlc3VsdHNbIGkrKyBdICkgKSB7XG5cdFx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0XHRcdFx0dG1wLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gdG1wO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0fTtcblxuXHQvLyBDbGFzc1xuXHRFeHByLmZpbmRbIFwiQ0xBU1NcIiBdID0gc3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICYmIGZ1bmN0aW9uKCBjbGFzc05hbWUsIGNvbnRleHQgKSB7XG5cdFx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICE9PSBcInVuZGVmaW5lZFwiICYmIGRvY3VtZW50SXNIVE1MICkge1xuXHRcdFx0cmV0dXJuIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggY2xhc3NOYW1lICk7XG5cdFx0fVxuXHR9O1xuXG5cdC8qIFFTQS9tYXRjaGVzU2VsZWN0b3Jcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC8vIFFTQSBhbmQgbWF0Y2hlc1NlbGVjdG9yIHN1cHBvcnRcblxuXHQvLyBtYXRjaGVzU2VsZWN0b3IoOmFjdGl2ZSkgcmVwb3J0cyBmYWxzZSB3aGVuIHRydWUgKElFOS9PcGVyYSAxMS41KVxuXHRyYnVnZ3lNYXRjaGVzID0gW107XG5cblx0Ly8gcVNhKDpmb2N1cykgcmVwb3J0cyBmYWxzZSB3aGVuIHRydWUgKENocm9tZSAyMSlcblx0Ly8gV2UgYWxsb3cgdGhpcyBiZWNhdXNlIG9mIGEgYnVnIGluIElFOC85IHRoYXQgdGhyb3dzIGFuIGVycm9yXG5cdC8vIHdoZW5ldmVyIGBkb2N1bWVudC5hY3RpdmVFbGVtZW50YCBpcyBhY2Nlc3NlZCBvbiBhbiBpZnJhbWVcblx0Ly8gU28sIHdlIGFsbG93IDpmb2N1cyB0byBwYXNzIHRocm91Z2ggUVNBIGFsbCB0aGUgdGltZSB0byBhdm9pZCB0aGUgSUUgZXJyb3Jcblx0Ly8gU2VlIGh0dHBzOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMzM3OFxuXHRyYnVnZ3lRU0EgPSBbXTtcblxuXHRpZiAoICggc3VwcG9ydC5xc2EgPSBybmF0aXZlLnRlc3QoIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwgKSApICkge1xuXG5cdFx0Ly8gQnVpbGQgUVNBIHJlZ2V4XG5cdFx0Ly8gUmVnZXggc3RyYXRlZ3kgYWRvcHRlZCBmcm9tIERpZWdvIFBlcmluaVxuXHRcdGFzc2VydCggZnVuY3Rpb24oIGVsICkge1xuXG5cdFx0XHR2YXIgaW5wdXQ7XG5cblx0XHRcdC8vIFNlbGVjdCBpcyBzZXQgdG8gZW1wdHkgc3RyaW5nIG9uIHB1cnBvc2Vcblx0XHRcdC8vIFRoaXMgaXMgdG8gdGVzdCBJRSdzIHRyZWF0bWVudCBvZiBub3QgZXhwbGljaXRseVxuXHRcdFx0Ly8gc2V0dGluZyBhIGJvb2xlYW4gY29udGVudCBhdHRyaWJ1dGUsXG5cdFx0XHQvLyBzaW5jZSBpdHMgcHJlc2VuY2Ugc2hvdWxkIGJlIGVub3VnaFxuXHRcdFx0Ly8gaHR0cHM6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzEyMzU5XG5cdFx0XHRkb2NFbGVtLmFwcGVuZENoaWxkKCBlbCApLmlubmVySFRNTCA9IFwiPGEgaWQ9J1wiICsgZXhwYW5kbyArIFwiJz48L2E+XCIgK1xuXHRcdFx0XHRcIjxzZWxlY3QgaWQ9J1wiICsgZXhwYW5kbyArIFwiLVxcclxcXFwnIG1zYWxsb3djYXB0dXJlPScnPlwiICtcblx0XHRcdFx0XCI8b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PlwiO1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRTgsIE9wZXJhIDExLTEyLjE2XG5cdFx0XHQvLyBOb3RoaW5nIHNob3VsZCBiZSBzZWxlY3RlZCB3aGVuIGVtcHR5IHN0cmluZ3MgZm9sbG93IF49IG9yICQ9IG9yICo9XG5cdFx0XHQvLyBUaGUgdGVzdCBhdHRyaWJ1dGUgbXVzdCBiZSB1bmtub3duIGluIE9wZXJhIGJ1dCBcInNhZmVcIiBmb3IgV2luUlRcblx0XHRcdC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvaWUvaGg0NjUzODguYXNweCNhdHRyaWJ1dGVfc2VjdGlvblxuXHRcdFx0aWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKCBcIlttc2FsbG93Y2FwdHVyZV49JyddXCIgKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIlsqXiRdPVwiICsgd2hpdGVzcGFjZSArIFwiKig/OicnfFxcXCJcXFwiKVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOFxuXHRcdFx0Ly8gQm9vbGVhbiBhdHRyaWJ1dGVzIGFuZCBcInZhbHVlXCIgYXJlIG5vdCB0cmVhdGVkIGNvcnJlY3RseVxuXHRcdFx0aWYgKCAhZWwucXVlcnlTZWxlY3RvckFsbCggXCJbc2VsZWN0ZWRdXCIgKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIlxcXFxbXCIgKyB3aGl0ZXNwYWNlICsgXCIqKD86dmFsdWV8XCIgKyBib29sZWFucyArIFwiKVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IENocm9tZTwyOSwgQW5kcm9pZDw0LjQsIFNhZmFyaTw3LjArLCBpT1M8Ny4wKywgUGhhbnRvbUpTPDEuOS44K1xuXHRcdFx0aWYgKCAhZWwucXVlcnlTZWxlY3RvckFsbCggXCJbaWR+PVwiICsgZXhwYW5kbyArIFwiLV1cIiApLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwifj1cIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRSAxMSssIEVkZ2UgMTUgLSAxOCtcblx0XHRcdC8vIElFIDExL0VkZ2UgZG9uJ3QgZmluZCBlbGVtZW50cyBvbiBhIGBbbmFtZT0nJ11gIHF1ZXJ5IGluIHNvbWUgY2FzZXMuXG5cdFx0XHQvLyBBZGRpbmcgYSB0ZW1wb3JhcnkgYXR0cmlidXRlIHRvIHRoZSBkb2N1bWVudCBiZWZvcmUgdGhlIHNlbGVjdGlvbiB3b3Jrc1xuXHRcdFx0Ly8gYXJvdW5kIHRoZSBpc3N1ZS5cblx0XHRcdC8vIEludGVyZXN0aW5nbHksIElFIDEwICYgb2xkZXIgZG9uJ3Qgc2VlbSB0byBoYXZlIHRoZSBpc3N1ZS5cblx0XHRcdGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJpbnB1dFwiICk7XG5cdFx0XHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwibmFtZVwiLCBcIlwiICk7XG5cdFx0XHRlbC5hcHBlbmRDaGlsZCggaW5wdXQgKTtcblx0XHRcdGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiW25hbWU9JyddXCIgKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIlxcXFxbXCIgKyB3aGl0ZXNwYWNlICsgXCIqbmFtZVwiICsgd2hpdGVzcGFjZSArIFwiKj1cIiArXG5cdFx0XHRcdFx0d2hpdGVzcGFjZSArIFwiKig/OicnfFxcXCJcXFwiKVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFdlYmtpdC9PcGVyYSAtIDpjaGVja2VkIHNob3VsZCByZXR1cm4gc2VsZWN0ZWQgb3B0aW9uIGVsZW1lbnRzXG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVjdG9ycy0yMDExMDkyOS8jY2hlY2tlZFxuXHRcdFx0Ly8gSUU4IHRocm93cyBlcnJvciBoZXJlIGFuZCB3aWxsIG5vdCBzZWUgbGF0ZXIgdGVzdHNcblx0XHRcdGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiOmNoZWNrZWRcIiApLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiOmNoZWNrZWRcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBTYWZhcmkgOCssIGlPUyA4K1xuXHRcdFx0Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjg1MVxuXHRcdFx0Ly8gSW4tcGFnZSBgc2VsZWN0b3IjaWQgc2libGluZy1jb21iaW5hdG9yIHNlbGVjdG9yYCBmYWlsc1xuXHRcdFx0aWYgKCAhZWwucXVlcnlTZWxlY3RvckFsbCggXCJhI1wiICsgZXhwYW5kbyArIFwiKypcIiApLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiLiMuK1srfl1cIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBGaXJlZm94IDw9My42IC0gNSBvbmx5XG5cdFx0XHQvLyBPbGQgRmlyZWZveCBkb2Vzbid0IHRocm93IG9uIGEgYmFkbHktZXNjYXBlZCBpZGVudGlmaWVyLlxuXHRcdFx0ZWwucXVlcnlTZWxlY3RvckFsbCggXCJcXFxcXFxmXCIgKTtcblx0XHRcdHJidWdneVFTQS5wdXNoKCBcIltcXFxcclxcXFxuXFxcXGZdXCIgKTtcblx0XHR9ICk7XG5cblx0XHRhc3NlcnQoIGZ1bmN0aW9uKCBlbCApIHtcblx0XHRcdGVsLmlubmVySFRNTCA9IFwiPGEgaHJlZj0nJyBkaXNhYmxlZD0nZGlzYWJsZWQnPjwvYT5cIiArXG5cdFx0XHRcdFwiPHNlbGVjdCBkaXNhYmxlZD0nZGlzYWJsZWQnPjxvcHRpb24vPjwvc2VsZWN0PlwiO1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBXaW5kb3dzIDggTmF0aXZlIEFwcHNcblx0XHRcdC8vIFRoZSB0eXBlIGFuZCBuYW1lIGF0dHJpYnV0ZXMgYXJlIHJlc3RyaWN0ZWQgZHVyaW5nIC5pbm5lckhUTUwgYXNzaWdubWVudFxuXHRcdFx0dmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJpbnB1dFwiICk7XG5cdFx0XHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwidHlwZVwiLCBcImhpZGRlblwiICk7XG5cdFx0XHRlbC5hcHBlbmRDaGlsZCggaW5wdXQgKS5zZXRBdHRyaWJ1dGUoIFwibmFtZVwiLCBcIkRcIiApO1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRThcblx0XHRcdC8vIEVuZm9yY2UgY2FzZS1zZW5zaXRpdml0eSBvZiBuYW1lIGF0dHJpYnV0ZVxuXHRcdFx0aWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKCBcIltuYW1lPWRdXCIgKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIm5hbWVcIiArIHdoaXRlc3BhY2UgKyBcIipbKl4kfCF+XT89XCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gRkYgMy41IC0gOmVuYWJsZWQvOmRpc2FibGVkIGFuZCBoaWRkZW4gZWxlbWVudHMgKGhpZGRlbiBlbGVtZW50cyBhcmUgc3RpbGwgZW5hYmxlZClcblx0XHRcdC8vIElFOCB0aHJvd3MgZXJyb3IgaGVyZSBhbmQgd2lsbCBub3Qgc2VlIGxhdGVyIHRlc3RzXG5cdFx0XHRpZiAoIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiOmVuYWJsZWRcIiApLmxlbmd0aCAhPT0gMiApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiOmVuYWJsZWRcIiwgXCI6ZGlzYWJsZWRcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRTktMTErXG5cdFx0XHQvLyBJRSdzIDpkaXNhYmxlZCBzZWxlY3RvciBkb2VzIG5vdCBwaWNrIHVwIHRoZSBjaGlsZHJlbiBvZiBkaXNhYmxlZCBmaWVsZHNldHNcblx0XHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGVsICkuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0aWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKCBcIjpkaXNhYmxlZFwiICkubGVuZ3RoICE9PSAyICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCI6ZW5hYmxlZFwiLCBcIjpkaXNhYmxlZFwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IE9wZXJhIDEwIC0gMTEgb25seVxuXHRcdFx0Ly8gT3BlcmEgMTAtMTEgZG9lcyBub3QgdGhyb3cgb24gcG9zdC1jb21tYSBpbnZhbGlkIHBzZXVkb3Ncblx0XHRcdGVsLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiKiw6eFwiICk7XG5cdFx0XHRyYnVnZ3lRU0EucHVzaCggXCIsLio6XCIgKTtcblx0XHR9ICk7XG5cdH1cblxuXHRpZiAoICggc3VwcG9ydC5tYXRjaGVzU2VsZWN0b3IgPSBybmF0aXZlLnRlc3QoICggbWF0Y2hlcyA9IGRvY0VsZW0ubWF0Y2hlcyB8fFxuXHRcdGRvY0VsZW0ud2Via2l0TWF0Y2hlc1NlbGVjdG9yIHx8XG5cdFx0ZG9jRWxlbS5tb3pNYXRjaGVzU2VsZWN0b3IgfHxcblx0XHRkb2NFbGVtLm9NYXRjaGVzU2VsZWN0b3IgfHxcblx0XHRkb2NFbGVtLm1zTWF0Y2hlc1NlbGVjdG9yICkgKSApICkge1xuXG5cdFx0YXNzZXJ0KCBmdW5jdGlvbiggZWwgKSB7XG5cblx0XHRcdC8vIENoZWNrIHRvIHNlZSBpZiBpdCdzIHBvc3NpYmxlIHRvIGRvIG1hdGNoZXNTZWxlY3RvclxuXHRcdFx0Ly8gb24gYSBkaXNjb25uZWN0ZWQgbm9kZSAoSUUgOSlcblx0XHRcdHN1cHBvcnQuZGlzY29ubmVjdGVkTWF0Y2ggPSBtYXRjaGVzLmNhbGwoIGVsLCBcIipcIiApO1xuXG5cdFx0XHQvLyBUaGlzIHNob3VsZCBmYWlsIHdpdGggYW4gZXhjZXB0aW9uXG5cdFx0XHQvLyBHZWNrbyBkb2VzIG5vdCBlcnJvciwgcmV0dXJucyBmYWxzZSBpbnN0ZWFkXG5cdFx0XHRtYXRjaGVzLmNhbGwoIGVsLCBcIltzIT0nJ106eFwiICk7XG5cdFx0XHRyYnVnZ3lNYXRjaGVzLnB1c2goIFwiIT1cIiwgcHNldWRvcyApO1xuXHRcdH0gKTtcblx0fVxuXG5cdHJidWdneVFTQSA9IHJidWdneVFTQS5sZW5ndGggJiYgbmV3IFJlZ0V4cCggcmJ1Z2d5UVNBLmpvaW4oIFwifFwiICkgKTtcblx0cmJ1Z2d5TWF0Y2hlcyA9IHJidWdneU1hdGNoZXMubGVuZ3RoICYmIG5ldyBSZWdFeHAoIHJidWdneU1hdGNoZXMuam9pbiggXCJ8XCIgKSApO1xuXG5cdC8qIENvbnRhaW5zXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0aGFzQ29tcGFyZSA9IHJuYXRpdmUudGVzdCggZG9jRWxlbS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiApO1xuXG5cdC8vIEVsZW1lbnQgY29udGFpbnMgYW5vdGhlclxuXHQvLyBQdXJwb3NlZnVsbHkgc2VsZi1leGNsdXNpdmVcblx0Ly8gQXMgaW4sIGFuIGVsZW1lbnQgZG9lcyBub3QgY29udGFpbiBpdHNlbGZcblx0Y29udGFpbnMgPSBoYXNDb21wYXJlIHx8IHJuYXRpdmUudGVzdCggZG9jRWxlbS5jb250YWlucyApID9cblx0XHRmdW5jdGlvbiggYSwgYiApIHtcblx0XHRcdHZhciBhZG93biA9IGEubm9kZVR5cGUgPT09IDkgPyBhLmRvY3VtZW50RWxlbWVudCA6IGEsXG5cdFx0XHRcdGJ1cCA9IGIgJiYgYi5wYXJlbnROb2RlO1xuXHRcdFx0cmV0dXJuIGEgPT09IGJ1cCB8fCAhISggYnVwICYmIGJ1cC5ub2RlVHlwZSA9PT0gMSAmJiAoXG5cdFx0XHRcdGFkb3duLmNvbnRhaW5zID9cblx0XHRcdFx0XHRhZG93bi5jb250YWlucyggYnVwICkgOlxuXHRcdFx0XHRcdGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24gJiYgYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYnVwICkgJiAxNlxuXHRcdFx0KSApO1xuXHRcdH0gOlxuXHRcdGZ1bmN0aW9uKCBhLCBiICkge1xuXHRcdFx0aWYgKCBiICkge1xuXHRcdFx0XHR3aGlsZSAoICggYiA9IGIucGFyZW50Tm9kZSApICkge1xuXHRcdFx0XHRcdGlmICggYiA9PT0gYSApIHtcblx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH07XG5cblx0LyogU29ydGluZ1xuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gRG9jdW1lbnQgb3JkZXIgc29ydGluZ1xuXHRzb3J0T3JkZXIgPSBoYXNDb21wYXJlID9cblx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cblx0XHQvLyBGbGFnIGZvciBkdXBsaWNhdGUgcmVtb3ZhbFxuXHRcdGlmICggYSA9PT0gYiApIHtcblx0XHRcdGhhc0R1cGxpY2F0ZSA9IHRydWU7XG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cblx0XHQvLyBTb3J0IG9uIG1ldGhvZCBleGlzdGVuY2UgaWYgb25seSBvbmUgaW5wdXQgaGFzIGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uXG5cdFx0dmFyIGNvbXBhcmUgPSAhYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAtICFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO1xuXHRcdGlmICggY29tcGFyZSApIHtcblx0XHRcdHJldHVybiBjb21wYXJlO1xuXHRcdH1cblxuXHRcdC8vIENhbGN1bGF0ZSBwb3NpdGlvbiBpZiBib3RoIGlucHV0cyBiZWxvbmcgdG8gdGhlIHNhbWUgZG9jdW1lbnRcblx0XHQvLyBTdXBwb3J0OiBJRSAxMSssIEVkZ2UgMTcgLSAxOCtcblx0XHQvLyBJRS9FZGdlIHNvbWV0aW1lcyB0aHJvdyBhIFwiUGVybWlzc2lvbiBkZW5pZWRcIiBlcnJvciB3aGVuIHN0cmljdC1jb21wYXJpbmdcblx0XHQvLyB0d28gZG9jdW1lbnRzOyBzaGFsbG93IGNvbXBhcmlzb25zIHdvcmsuXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVxZXFlcVxuXHRcdGNvbXBhcmUgPSAoIGEub3duZXJEb2N1bWVudCB8fCBhICkgPT0gKCBiLm93bmVyRG9jdW1lbnQgfHwgYiApID9cblx0XHRcdGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGIgKSA6XG5cblx0XHRcdC8vIE90aGVyd2lzZSB3ZSBrbm93IHRoZXkgYXJlIGRpc2Nvbm5lY3RlZFxuXHRcdFx0MTtcblxuXHRcdC8vIERpc2Nvbm5lY3RlZCBub2Rlc1xuXHRcdGlmICggY29tcGFyZSAmIDEgfHxcblx0XHRcdCggIXN1cHBvcnQuc29ydERldGFjaGVkICYmIGIuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGEgKSA9PT0gY29tcGFyZSApICkge1xuXG5cdFx0XHQvLyBDaG9vc2UgdGhlIGZpcnN0IGVsZW1lbnQgdGhhdCBpcyByZWxhdGVkIHRvIG91ciBwcmVmZXJyZWQgZG9jdW1lbnRcblx0XHRcdC8vIFN1cHBvcnQ6IElFIDExKywgRWRnZSAxNyAtIDE4K1xuXHRcdFx0Ly8gSUUvRWRnZSBzb21ldGltZXMgdGhyb3cgYSBcIlBlcm1pc3Npb24gZGVuaWVkXCIgZXJyb3Igd2hlbiBzdHJpY3QtY29tcGFyaW5nXG5cdFx0XHQvLyB0d28gZG9jdW1lbnRzOyBzaGFsbG93IGNvbXBhcmlzb25zIHdvcmsuXG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG5cdFx0XHRpZiAoIGEgPT0gZG9jdW1lbnQgfHwgYS5vd25lckRvY3VtZW50ID09IHByZWZlcnJlZERvYyAmJlxuXHRcdFx0XHRjb250YWlucyggcHJlZmVycmVkRG9jLCBhICkgKSB7XG5cdFx0XHRcdHJldHVybiAtMTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogSUUgMTErLCBFZGdlIDE3IC0gMTgrXG5cdFx0XHQvLyBJRS9FZGdlIHNvbWV0aW1lcyB0aHJvdyBhIFwiUGVybWlzc2lvbiBkZW5pZWRcIiBlcnJvciB3aGVuIHN0cmljdC1jb21wYXJpbmdcblx0XHRcdC8vIHR3byBkb2N1bWVudHM7IHNoYWxsb3cgY29tcGFyaXNvbnMgd29yay5cblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcblx0XHRcdGlmICggYiA9PSBkb2N1bWVudCB8fCBiLm93bmVyRG9jdW1lbnQgPT0gcHJlZmVycmVkRG9jICYmXG5cdFx0XHRcdGNvbnRhaW5zKCBwcmVmZXJyZWREb2MsIGIgKSApIHtcblx0XHRcdFx0cmV0dXJuIDE7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE1haW50YWluIG9yaWdpbmFsIG9yZGVyXG5cdFx0XHRyZXR1cm4gc29ydElucHV0ID9cblx0XHRcdFx0KCBpbmRleE9mKCBzb3J0SW5wdXQsIGEgKSAtIGluZGV4T2YoIHNvcnRJbnB1dCwgYiApICkgOlxuXHRcdFx0XHQwO1xuXHRcdH1cblxuXHRcdHJldHVybiBjb21wYXJlICYgNCA/IC0xIDogMTtcblx0fSA6XG5cdGZ1bmN0aW9uKCBhLCBiICkge1xuXG5cdFx0Ly8gRXhpdCBlYXJseSBpZiB0aGUgbm9kZXMgYXJlIGlkZW50aWNhbFxuXHRcdGlmICggYSA9PT0gYiApIHtcblx0XHRcdGhhc0R1cGxpY2F0ZSA9IHRydWU7XG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cblx0XHR2YXIgY3VyLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRhdXAgPSBhLnBhcmVudE5vZGUsXG5cdFx0XHRidXAgPSBiLnBhcmVudE5vZGUsXG5cdFx0XHRhcCA9IFsgYSBdLFxuXHRcdFx0YnAgPSBbIGIgXTtcblxuXHRcdC8vIFBhcmVudGxlc3Mgbm9kZXMgYXJlIGVpdGhlciBkb2N1bWVudHMgb3IgZGlzY29ubmVjdGVkXG5cdFx0aWYgKCAhYXVwIHx8ICFidXAgKSB7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFIDExKywgRWRnZSAxNyAtIDE4K1xuXHRcdFx0Ly8gSUUvRWRnZSBzb21ldGltZXMgdGhyb3cgYSBcIlBlcm1pc3Npb24gZGVuaWVkXCIgZXJyb3Igd2hlbiBzdHJpY3QtY29tcGFyaW5nXG5cdFx0XHQvLyB0d28gZG9jdW1lbnRzOyBzaGFsbG93IGNvbXBhcmlzb25zIHdvcmsuXG5cdFx0XHQvKiBlc2xpbnQtZGlzYWJsZSBlcWVxZXEgKi9cblx0XHRcdHJldHVybiBhID09IGRvY3VtZW50ID8gLTEgOlxuXHRcdFx0XHRiID09IGRvY3VtZW50ID8gMSA6XG5cdFx0XHRcdC8qIGVzbGludC1lbmFibGUgZXFlcWVxICovXG5cdFx0XHRcdGF1cCA/IC0xIDpcblx0XHRcdFx0YnVwID8gMSA6XG5cdFx0XHRcdHNvcnRJbnB1dCA/XG5cdFx0XHRcdCggaW5kZXhPZiggc29ydElucHV0LCBhICkgLSBpbmRleE9mKCBzb3J0SW5wdXQsIGIgKSApIDpcblx0XHRcdFx0MDtcblxuXHRcdC8vIElmIHRoZSBub2RlcyBhcmUgc2libGluZ3MsIHdlIGNhbiBkbyBhIHF1aWNrIGNoZWNrXG5cdFx0fSBlbHNlIGlmICggYXVwID09PSBidXAgKSB7XG5cdFx0XHRyZXR1cm4gc2libGluZ0NoZWNrKCBhLCBiICk7XG5cdFx0fVxuXG5cdFx0Ly8gT3RoZXJ3aXNlIHdlIG5lZWQgZnVsbCBsaXN0cyBvZiB0aGVpciBhbmNlc3RvcnMgZm9yIGNvbXBhcmlzb25cblx0XHRjdXIgPSBhO1xuXHRcdHdoaWxlICggKCBjdXIgPSBjdXIucGFyZW50Tm9kZSApICkge1xuXHRcdFx0YXAudW5zaGlmdCggY3VyICk7XG5cdFx0fVxuXHRcdGN1ciA9IGI7XG5cdFx0d2hpbGUgKCAoIGN1ciA9IGN1ci5wYXJlbnROb2RlICkgKSB7XG5cdFx0XHRicC51bnNoaWZ0KCBjdXIgKTtcblx0XHR9XG5cblx0XHQvLyBXYWxrIGRvd24gdGhlIHRyZWUgbG9va2luZyBmb3IgYSBkaXNjcmVwYW5jeVxuXHRcdHdoaWxlICggYXBbIGkgXSA9PT0gYnBbIGkgXSApIHtcblx0XHRcdGkrKztcblx0XHR9XG5cblx0XHRyZXR1cm4gaSA/XG5cblx0XHRcdC8vIERvIGEgc2libGluZyBjaGVjayBpZiB0aGUgbm9kZXMgaGF2ZSBhIGNvbW1vbiBhbmNlc3RvclxuXHRcdFx0c2libGluZ0NoZWNrKCBhcFsgaSBdLCBicFsgaSBdICkgOlxuXG5cdFx0XHQvLyBPdGhlcndpc2Ugbm9kZXMgaW4gb3VyIGRvY3VtZW50IHNvcnQgZmlyc3Rcblx0XHRcdC8vIFN1cHBvcnQ6IElFIDExKywgRWRnZSAxNyAtIDE4K1xuXHRcdFx0Ly8gSUUvRWRnZSBzb21ldGltZXMgdGhyb3cgYSBcIlBlcm1pc3Npb24gZGVuaWVkXCIgZXJyb3Igd2hlbiBzdHJpY3QtY29tcGFyaW5nXG5cdFx0XHQvLyB0d28gZG9jdW1lbnRzOyBzaGFsbG93IGNvbXBhcmlzb25zIHdvcmsuXG5cdFx0XHQvKiBlc2xpbnQtZGlzYWJsZSBlcWVxZXEgKi9cblx0XHRcdGFwWyBpIF0gPT0gcHJlZmVycmVkRG9jID8gLTEgOlxuXHRcdFx0YnBbIGkgXSA9PSBwcmVmZXJyZWREb2MgPyAxIDpcblx0XHRcdC8qIGVzbGludC1lbmFibGUgZXFlcWVxICovXG5cdFx0XHQwO1xuXHR9O1xuXG5cdHJldHVybiBkb2N1bWVudDtcbn07XG5cblNpenpsZS5tYXRjaGVzID0gZnVuY3Rpb24oIGV4cHIsIGVsZW1lbnRzICkge1xuXHRyZXR1cm4gU2l6emxlKCBleHByLCBudWxsLCBudWxsLCBlbGVtZW50cyApO1xufTtcblxuU2l6emxlLm1hdGNoZXNTZWxlY3RvciA9IGZ1bmN0aW9uKCBlbGVtLCBleHByICkge1xuXHRzZXREb2N1bWVudCggZWxlbSApO1xuXG5cdGlmICggc3VwcG9ydC5tYXRjaGVzU2VsZWN0b3IgJiYgZG9jdW1lbnRJc0hUTUwgJiZcblx0XHQhbm9ubmF0aXZlU2VsZWN0b3JDYWNoZVsgZXhwciArIFwiIFwiIF0gJiZcblx0XHQoICFyYnVnZ3lNYXRjaGVzIHx8ICFyYnVnZ3lNYXRjaGVzLnRlc3QoIGV4cHIgKSApICYmXG5cdFx0KCAhcmJ1Z2d5UVNBICAgICB8fCAhcmJ1Z2d5UVNBLnRlc3QoIGV4cHIgKSApICkge1xuXG5cdFx0dHJ5IHtcblx0XHRcdHZhciByZXQgPSBtYXRjaGVzLmNhbGwoIGVsZW0sIGV4cHIgKTtcblxuXHRcdFx0Ly8gSUUgOSdzIG1hdGNoZXNTZWxlY3RvciByZXR1cm5zIGZhbHNlIG9uIGRpc2Nvbm5lY3RlZCBub2Rlc1xuXHRcdFx0aWYgKCByZXQgfHwgc3VwcG9ydC5kaXNjb25uZWN0ZWRNYXRjaCB8fFxuXG5cdFx0XHRcdC8vIEFzIHdlbGwsIGRpc2Nvbm5lY3RlZCBub2RlcyBhcmUgc2FpZCB0byBiZSBpbiBhIGRvY3VtZW50XG5cdFx0XHRcdC8vIGZyYWdtZW50IGluIElFIDlcblx0XHRcdFx0ZWxlbS5kb2N1bWVudCAmJiBlbGVtLmRvY3VtZW50Lm5vZGVUeXBlICE9PSAxMSApIHtcblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblx0XHR9IGNhdGNoICggZSApIHtcblx0XHRcdG5vbm5hdGl2ZVNlbGVjdG9yQ2FjaGUoIGV4cHIsIHRydWUgKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gU2l6emxlKCBleHByLCBkb2N1bWVudCwgbnVsbCwgWyBlbGVtIF0gKS5sZW5ndGggPiAwO1xufTtcblxuU2l6emxlLmNvbnRhaW5zID0gZnVuY3Rpb24oIGNvbnRleHQsIGVsZW0gKSB7XG5cblx0Ly8gU2V0IGRvY3VtZW50IHZhcnMgaWYgbmVlZGVkXG5cdC8vIFN1cHBvcnQ6IElFIDExKywgRWRnZSAxNyAtIDE4K1xuXHQvLyBJRS9FZGdlIHNvbWV0aW1lcyB0aHJvdyBhIFwiUGVybWlzc2lvbiBkZW5pZWRcIiBlcnJvciB3aGVuIHN0cmljdC1jb21wYXJpbmdcblx0Ly8gdHdvIGRvY3VtZW50czsgc2hhbGxvdyBjb21wYXJpc29ucyB3b3JrLlxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG5cdGlmICggKCBjb250ZXh0Lm93bmVyRG9jdW1lbnQgfHwgY29udGV4dCApICE9IGRvY3VtZW50ICkge1xuXHRcdHNldERvY3VtZW50KCBjb250ZXh0ICk7XG5cdH1cblx0cmV0dXJuIGNvbnRhaW5zKCBjb250ZXh0LCBlbGVtICk7XG59O1xuXG5TaXp6bGUuYXR0ciA9IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkge1xuXG5cdC8vIFNldCBkb2N1bWVudCB2YXJzIGlmIG5lZWRlZFxuXHQvLyBTdXBwb3J0OiBJRSAxMSssIEVkZ2UgMTcgLSAxOCtcblx0Ly8gSUUvRWRnZSBzb21ldGltZXMgdGhyb3cgYSBcIlBlcm1pc3Npb24gZGVuaWVkXCIgZXJyb3Igd2hlbiBzdHJpY3QtY29tcGFyaW5nXG5cdC8vIHR3byBkb2N1bWVudHM7IHNoYWxsb3cgY29tcGFyaXNvbnMgd29yay5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVxZXFlcVxuXHRpZiAoICggZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0gKSAhPSBkb2N1bWVudCApIHtcblx0XHRzZXREb2N1bWVudCggZWxlbSApO1xuXHR9XG5cblx0dmFyIGZuID0gRXhwci5hdHRySGFuZGxlWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSxcblxuXHRcdC8vIERvbid0IGdldCBmb29sZWQgYnkgT2JqZWN0LnByb3RvdHlwZSBwcm9wZXJ0aWVzIChqUXVlcnkgIzEzODA3KVxuXHRcdHZhbCA9IGZuICYmIGhhc093bi5jYWxsKCBFeHByLmF0dHJIYW5kbGUsIG5hbWUudG9Mb3dlckNhc2UoKSApID9cblx0XHRcdGZuKCBlbGVtLCBuYW1lLCAhZG9jdW1lbnRJc0hUTUwgKSA6XG5cdFx0XHR1bmRlZmluZWQ7XG5cblx0cmV0dXJuIHZhbCAhPT0gdW5kZWZpbmVkID9cblx0XHR2YWwgOlxuXHRcdHN1cHBvcnQuYXR0cmlidXRlcyB8fCAhZG9jdW1lbnRJc0hUTUwgP1xuXHRcdFx0ZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUgKSA6XG5cdFx0XHQoIHZhbCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSggbmFtZSApICkgJiYgdmFsLnNwZWNpZmllZCA/XG5cdFx0XHRcdHZhbC52YWx1ZSA6XG5cdFx0XHRcdG51bGw7XG59O1xuXG5TaXp6bGUuZXNjYXBlID0gZnVuY3Rpb24oIHNlbCApIHtcblx0cmV0dXJuICggc2VsICsgXCJcIiApLnJlcGxhY2UoIHJjc3Nlc2NhcGUsIGZjc3Nlc2NhcGUgKTtcbn07XG5cblNpenpsZS5lcnJvciA9IGZ1bmN0aW9uKCBtc2cgKSB7XG5cdHRocm93IG5ldyBFcnJvciggXCJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiBcIiArIG1zZyApO1xufTtcblxuLyoqXG4gKiBEb2N1bWVudCBzb3J0aW5nIGFuZCByZW1vdmluZyBkdXBsaWNhdGVzXG4gKiBAcGFyYW0ge0FycmF5TGlrZX0gcmVzdWx0c1xuICovXG5TaXp6bGUudW5pcXVlU29ydCA9IGZ1bmN0aW9uKCByZXN1bHRzICkge1xuXHR2YXIgZWxlbSxcblx0XHRkdXBsaWNhdGVzID0gW10sXG5cdFx0aiA9IDAsXG5cdFx0aSA9IDA7XG5cblx0Ly8gVW5sZXNzIHdlICprbm93KiB3ZSBjYW4gZGV0ZWN0IGR1cGxpY2F0ZXMsIGFzc3VtZSB0aGVpciBwcmVzZW5jZVxuXHRoYXNEdXBsaWNhdGUgPSAhc3VwcG9ydC5kZXRlY3REdXBsaWNhdGVzO1xuXHRzb3J0SW5wdXQgPSAhc3VwcG9ydC5zb3J0U3RhYmxlICYmIHJlc3VsdHMuc2xpY2UoIDAgKTtcblx0cmVzdWx0cy5zb3J0KCBzb3J0T3JkZXIgKTtcblxuXHRpZiAoIGhhc0R1cGxpY2F0ZSApIHtcblx0XHR3aGlsZSAoICggZWxlbSA9IHJlc3VsdHNbIGkrKyBdICkgKSB7XG5cdFx0XHRpZiAoIGVsZW0gPT09IHJlc3VsdHNbIGkgXSApIHtcblx0XHRcdFx0aiA9IGR1cGxpY2F0ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHR3aGlsZSAoIGotLSApIHtcblx0XHRcdHJlc3VsdHMuc3BsaWNlKCBkdXBsaWNhdGVzWyBqIF0sIDEgKTtcblx0XHR9XG5cdH1cblxuXHQvLyBDbGVhciBpbnB1dCBhZnRlciBzb3J0aW5nIHRvIHJlbGVhc2Ugb2JqZWN0c1xuXHQvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9zaXp6bGUvcHVsbC8yMjVcblx0c29ydElucHV0ID0gbnVsbDtcblxuXHRyZXR1cm4gcmVzdWx0cztcbn07XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiBmb3IgcmV0cmlldmluZyB0aGUgdGV4dCB2YWx1ZSBvZiBhbiBhcnJheSBvZiBET00gbm9kZXNcbiAqIEBwYXJhbSB7QXJyYXl8RWxlbWVudH0gZWxlbVxuICovXG5nZXRUZXh0ID0gU2l6emxlLmdldFRleHQgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0dmFyIG5vZGUsXG5cdFx0cmV0ID0gXCJcIixcblx0XHRpID0gMCxcblx0XHRub2RlVHlwZSA9IGVsZW0ubm9kZVR5cGU7XG5cblx0aWYgKCAhbm9kZVR5cGUgKSB7XG5cblx0XHQvLyBJZiBubyBub2RlVHlwZSwgdGhpcyBpcyBleHBlY3RlZCB0byBiZSBhbiBhcnJheVxuXHRcdHdoaWxlICggKCBub2RlID0gZWxlbVsgaSsrIF0gKSApIHtcblxuXHRcdFx0Ly8gRG8gbm90IHRyYXZlcnNlIGNvbW1lbnQgbm9kZXNcblx0XHRcdHJldCArPSBnZXRUZXh0KCBub2RlICk7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKCBub2RlVHlwZSA9PT0gMSB8fCBub2RlVHlwZSA9PT0gOSB8fCBub2RlVHlwZSA9PT0gMTEgKSB7XG5cblx0XHQvLyBVc2UgdGV4dENvbnRlbnQgZm9yIGVsZW1lbnRzXG5cdFx0Ly8gaW5uZXJUZXh0IHVzYWdlIHJlbW92ZWQgZm9yIGNvbnNpc3RlbmN5IG9mIG5ldyBsaW5lcyAoalF1ZXJ5ICMxMTE1Mylcblx0XHRpZiAoIHR5cGVvZiBlbGVtLnRleHRDb250ZW50ID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIGVsZW0udGV4dENvbnRlbnQ7XG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gVHJhdmVyc2UgaXRzIGNoaWxkcmVuXG5cdFx0XHRmb3IgKCBlbGVtID0gZWxlbS5maXJzdENoaWxkOyBlbGVtOyBlbGVtID0gZWxlbS5uZXh0U2libGluZyApIHtcblx0XHRcdFx0cmV0ICs9IGdldFRleHQoIGVsZW0gKTtcblx0XHRcdH1cblx0XHR9XG5cdH0gZWxzZSBpZiAoIG5vZGVUeXBlID09PSAzIHx8IG5vZGVUeXBlID09PSA0ICkge1xuXHRcdHJldHVybiBlbGVtLm5vZGVWYWx1ZTtcblx0fVxuXG5cdC8vIERvIG5vdCBpbmNsdWRlIGNvbW1lbnQgb3IgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiBub2Rlc1xuXG5cdHJldHVybiByZXQ7XG59O1xuXG5FeHByID0gU2l6emxlLnNlbGVjdG9ycyA9IHtcblxuXHQvLyBDYW4gYmUgYWRqdXN0ZWQgYnkgdGhlIHVzZXJcblx0Y2FjaGVMZW5ndGg6IDUwLFxuXG5cdGNyZWF0ZVBzZXVkbzogbWFya0Z1bmN0aW9uLFxuXG5cdG1hdGNoOiBtYXRjaEV4cHIsXG5cblx0YXR0ckhhbmRsZToge30sXG5cblx0ZmluZDoge30sXG5cblx0cmVsYXRpdmU6IHtcblx0XHRcIj5cIjogeyBkaXI6IFwicGFyZW50Tm9kZVwiLCBmaXJzdDogdHJ1ZSB9LFxuXHRcdFwiIFwiOiB7IGRpcjogXCJwYXJlbnROb2RlXCIgfSxcblx0XHRcIitcIjogeyBkaXI6IFwicHJldmlvdXNTaWJsaW5nXCIsIGZpcnN0OiB0cnVlIH0sXG5cdFx0XCJ+XCI6IHsgZGlyOiBcInByZXZpb3VzU2libGluZ1wiIH1cblx0fSxcblxuXHRwcmVGaWx0ZXI6IHtcblx0XHRcIkFUVFJcIjogZnVuY3Rpb24oIG1hdGNoICkge1xuXHRcdFx0bWF0Y2hbIDEgXSA9IG1hdGNoWyAxIF0ucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTtcblxuXHRcdFx0Ly8gTW92ZSB0aGUgZ2l2ZW4gdmFsdWUgdG8gbWF0Y2hbM10gd2hldGhlciBxdW90ZWQgb3IgdW5xdW90ZWRcblx0XHRcdG1hdGNoWyAzIF0gPSAoIG1hdGNoWyAzIF0gfHwgbWF0Y2hbIDQgXSB8fFxuXHRcdFx0XHRtYXRjaFsgNSBdIHx8IFwiXCIgKS5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXG5cdFx0XHRpZiAoIG1hdGNoWyAyIF0gPT09IFwifj1cIiApIHtcblx0XHRcdFx0bWF0Y2hbIDMgXSA9IFwiIFwiICsgbWF0Y2hbIDMgXSArIFwiIFwiO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gbWF0Y2guc2xpY2UoIDAsIDQgKTtcblx0XHR9LFxuXG5cdFx0XCJDSElMRFwiOiBmdW5jdGlvbiggbWF0Y2ggKSB7XG5cblx0XHRcdC8qIG1hdGNoZXMgZnJvbSBtYXRjaEV4cHJbXCJDSElMRFwiXVxuXHRcdFx0XHQxIHR5cGUgKG9ubHl8bnRofC4uLilcblx0XHRcdFx0MiB3aGF0IChjaGlsZHxvZi10eXBlKVxuXHRcdFx0XHQzIGFyZ3VtZW50IChldmVufG9kZHxcXGQqfFxcZCpuKFsrLV1cXGQrKT98Li4uKVxuXHRcdFx0XHQ0IHhuLWNvbXBvbmVudCBvZiB4bit5IGFyZ3VtZW50IChbKy1dP1xcZCpufClcblx0XHRcdFx0NSBzaWduIG9mIHhuLWNvbXBvbmVudFxuXHRcdFx0XHQ2IHggb2YgeG4tY29tcG9uZW50XG5cdFx0XHRcdDcgc2lnbiBvZiB5LWNvbXBvbmVudFxuXHRcdFx0XHQ4IHkgb2YgeS1jb21wb25lbnRcblx0XHRcdCovXG5cdFx0XHRtYXRjaFsgMSBdID0gbWF0Y2hbIDEgXS50b0xvd2VyQ2FzZSgpO1xuXG5cdFx0XHRpZiAoIG1hdGNoWyAxIF0uc2xpY2UoIDAsIDMgKSA9PT0gXCJudGhcIiApIHtcblxuXHRcdFx0XHQvLyBudGgtKiByZXF1aXJlcyBhcmd1bWVudFxuXHRcdFx0XHRpZiAoICFtYXRjaFsgMyBdICkge1xuXHRcdFx0XHRcdFNpenpsZS5lcnJvciggbWF0Y2hbIDAgXSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gbnVtZXJpYyB4IGFuZCB5IHBhcmFtZXRlcnMgZm9yIEV4cHIuZmlsdGVyLkNISUxEXG5cdFx0XHRcdC8vIHJlbWVtYmVyIHRoYXQgZmFsc2UvdHJ1ZSBjYXN0IHJlc3BlY3RpdmVseSB0byAwLzFcblx0XHRcdFx0bWF0Y2hbIDQgXSA9ICsoIG1hdGNoWyA0IF0gP1xuXHRcdFx0XHRcdG1hdGNoWyA1IF0gKyAoIG1hdGNoWyA2IF0gfHwgMSApIDpcblx0XHRcdFx0XHQyICogKCBtYXRjaFsgMyBdID09PSBcImV2ZW5cIiB8fCBtYXRjaFsgMyBdID09PSBcIm9kZFwiICkgKTtcblx0XHRcdFx0bWF0Y2hbIDUgXSA9ICsoICggbWF0Y2hbIDcgXSArIG1hdGNoWyA4IF0gKSB8fCBtYXRjaFsgMyBdID09PSBcIm9kZFwiICk7XG5cblx0XHRcdFx0Ly8gb3RoZXIgdHlwZXMgcHJvaGliaXQgYXJndW1lbnRzXG5cdFx0XHR9IGVsc2UgaWYgKCBtYXRjaFsgMyBdICkge1xuXHRcdFx0XHRTaXp6bGUuZXJyb3IoIG1hdGNoWyAwIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIG1hdGNoO1xuXHRcdH0sXG5cblx0XHRcIlBTRVVET1wiOiBmdW5jdGlvbiggbWF0Y2ggKSB7XG5cdFx0XHR2YXIgZXhjZXNzLFxuXHRcdFx0XHR1bnF1b3RlZCA9ICFtYXRjaFsgNiBdICYmIG1hdGNoWyAyIF07XG5cblx0XHRcdGlmICggbWF0Y2hFeHByWyBcIkNISUxEXCIgXS50ZXN0KCBtYXRjaFsgMCBdICkgKSB7XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBY2NlcHQgcXVvdGVkIGFyZ3VtZW50cyBhcy1pc1xuXHRcdFx0aWYgKCBtYXRjaFsgMyBdICkge1xuXHRcdFx0XHRtYXRjaFsgMiBdID0gbWF0Y2hbIDQgXSB8fCBtYXRjaFsgNSBdIHx8IFwiXCI7XG5cblx0XHRcdC8vIFN0cmlwIGV4Y2VzcyBjaGFyYWN0ZXJzIGZyb20gdW5xdW90ZWQgYXJndW1lbnRzXG5cdFx0XHR9IGVsc2UgaWYgKCB1bnF1b3RlZCAmJiBycHNldWRvLnRlc3QoIHVucXVvdGVkICkgJiZcblxuXHRcdFx0XHQvLyBHZXQgZXhjZXNzIGZyb20gdG9rZW5pemUgKHJlY3Vyc2l2ZWx5KVxuXHRcdFx0XHQoIGV4Y2VzcyA9IHRva2VuaXplKCB1bnF1b3RlZCwgdHJ1ZSApICkgJiZcblxuXHRcdFx0XHQvLyBhZHZhbmNlIHRvIHRoZSBuZXh0IGNsb3NpbmcgcGFyZW50aGVzaXNcblx0XHRcdFx0KCBleGNlc3MgPSB1bnF1b3RlZC5pbmRleE9mKCBcIilcIiwgdW5xdW90ZWQubGVuZ3RoIC0gZXhjZXNzICkgLSB1bnF1b3RlZC5sZW5ndGggKSApIHtcblxuXHRcdFx0XHQvLyBleGNlc3MgaXMgYSBuZWdhdGl2ZSBpbmRleFxuXHRcdFx0XHRtYXRjaFsgMCBdID0gbWF0Y2hbIDAgXS5zbGljZSggMCwgZXhjZXNzICk7XG5cdFx0XHRcdG1hdGNoWyAyIF0gPSB1bnF1b3RlZC5zbGljZSggMCwgZXhjZXNzICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJldHVybiBvbmx5IGNhcHR1cmVzIG5lZWRlZCBieSB0aGUgcHNldWRvIGZpbHRlciBtZXRob2QgKHR5cGUgYW5kIGFyZ3VtZW50KVxuXHRcdFx0cmV0dXJuIG1hdGNoLnNsaWNlKCAwLCAzICk7XG5cdFx0fVxuXHR9LFxuXG5cdGZpbHRlcjoge1xuXG5cdFx0XCJUQUdcIjogZnVuY3Rpb24oIG5vZGVOYW1lU2VsZWN0b3IgKSB7XG5cdFx0XHR2YXIgbm9kZU5hbWUgPSBub2RlTmFtZVNlbGVjdG9yLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICkudG9Mb3dlckNhc2UoKTtcblx0XHRcdHJldHVybiBub2RlTmFtZVNlbGVjdG9yID09PSBcIipcIiA/XG5cdFx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9IDpcblx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBub2RlTmFtZTtcblx0XHRcdFx0fTtcblx0XHR9LFxuXG5cdFx0XCJDTEFTU1wiOiBmdW5jdGlvbiggY2xhc3NOYW1lICkge1xuXHRcdFx0dmFyIHBhdHRlcm4gPSBjbGFzc0NhY2hlWyBjbGFzc05hbWUgKyBcIiBcIiBdO1xuXG5cdFx0XHRyZXR1cm4gcGF0dGVybiB8fFxuXHRcdFx0XHQoIHBhdHRlcm4gPSBuZXcgUmVnRXhwKCBcIihefFwiICsgd2hpdGVzcGFjZSArXG5cdFx0XHRcdFx0XCIpXCIgKyBjbGFzc05hbWUgKyBcIihcIiArIHdoaXRlc3BhY2UgKyBcInwkKVwiICkgKSAmJiBjbGFzc0NhY2hlKFxuXHRcdFx0XHRcdFx0Y2xhc3NOYW1lLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHBhdHRlcm4udGVzdChcblx0XHRcdFx0XHRcdFx0XHR0eXBlb2YgZWxlbS5jbGFzc05hbWUgPT09IFwic3RyaW5nXCIgJiYgZWxlbS5jbGFzc05hbWUgfHxcblx0XHRcdFx0XHRcdFx0XHR0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGUgIT09IFwidW5kZWZpbmVkXCIgJiZcblx0XHRcdFx0XHRcdFx0XHRcdGVsZW0uZ2V0QXR0cmlidXRlKCBcImNsYXNzXCIgKSB8fFxuXHRcdFx0XHRcdFx0XHRcdFwiXCJcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0fSApO1xuXHRcdH0sXG5cblx0XHRcIkFUVFJcIjogZnVuY3Rpb24oIG5hbWUsIG9wZXJhdG9yLCBjaGVjayApIHtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0dmFyIHJlc3VsdCA9IFNpenpsZS5hdHRyKCBlbGVtLCBuYW1lICk7XG5cblx0XHRcdFx0aWYgKCByZXN1bHQgPT0gbnVsbCApIHtcblx0XHRcdFx0XHRyZXR1cm4gb3BlcmF0b3IgPT09IFwiIT1cIjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoICFvcGVyYXRvciApIHtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJlc3VsdCArPSBcIlwiO1xuXG5cdFx0XHRcdC8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cblxuXHRcdFx0XHRyZXR1cm4gb3BlcmF0b3IgPT09IFwiPVwiID8gcmVzdWx0ID09PSBjaGVjayA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwiIT1cIiA/IHJlc3VsdCAhPT0gY2hlY2sgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIl49XCIgPyBjaGVjayAmJiByZXN1bHQuaW5kZXhPZiggY2hlY2sgKSA9PT0gMCA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwiKj1cIiA/IGNoZWNrICYmIHJlc3VsdC5pbmRleE9mKCBjaGVjayApID4gLTEgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIiQ9XCIgPyBjaGVjayAmJiByZXN1bHQuc2xpY2UoIC1jaGVjay5sZW5ndGggKSA9PT0gY2hlY2sgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIn49XCIgPyAoIFwiIFwiICsgcmVzdWx0LnJlcGxhY2UoIHJ3aGl0ZXNwYWNlLCBcIiBcIiApICsgXCIgXCIgKS5pbmRleE9mKCBjaGVjayApID4gLTEgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcInw9XCIgPyByZXN1bHQgPT09IGNoZWNrIHx8IHJlc3VsdC5zbGljZSggMCwgY2hlY2subGVuZ3RoICsgMSApID09PSBjaGVjayArIFwiLVwiIDpcblx0XHRcdFx0XHRmYWxzZTtcblx0XHRcdFx0LyogZXNsaW50LWVuYWJsZSBtYXgtbGVuICovXG5cblx0XHRcdH07XG5cdFx0fSxcblxuXHRcdFwiQ0hJTERcIjogZnVuY3Rpb24oIHR5cGUsIHdoYXQsIF9hcmd1bWVudCwgZmlyc3QsIGxhc3QgKSB7XG5cdFx0XHR2YXIgc2ltcGxlID0gdHlwZS5zbGljZSggMCwgMyApICE9PSBcIm50aFwiLFxuXHRcdFx0XHRmb3J3YXJkID0gdHlwZS5zbGljZSggLTQgKSAhPT0gXCJsYXN0XCIsXG5cdFx0XHRcdG9mVHlwZSA9IHdoYXQgPT09IFwib2YtdHlwZVwiO1xuXG5cdFx0XHRyZXR1cm4gZmlyc3QgPT09IDEgJiYgbGFzdCA9PT0gMCA/XG5cblx0XHRcdFx0Ly8gU2hvcnRjdXQgZm9yIDpudGgtKihuKVxuXHRcdFx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRyZXR1cm4gISFlbGVtLnBhcmVudE5vZGU7XG5cdFx0XHRcdH0gOlxuXG5cdFx0XHRcdGZ1bmN0aW9uKCBlbGVtLCBfY29udGV4dCwgeG1sICkge1xuXHRcdFx0XHRcdHZhciBjYWNoZSwgdW5pcXVlQ2FjaGUsIG91dGVyQ2FjaGUsIG5vZGUsIG5vZGVJbmRleCwgc3RhcnQsXG5cdFx0XHRcdFx0XHRkaXIgPSBzaW1wbGUgIT09IGZvcndhcmQgPyBcIm5leHRTaWJsaW5nXCIgOiBcInByZXZpb3VzU2libGluZ1wiLFxuXHRcdFx0XHRcdFx0cGFyZW50ID0gZWxlbS5wYXJlbnROb2RlLFxuXHRcdFx0XHRcdFx0bmFtZSA9IG9mVHlwZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksXG5cdFx0XHRcdFx0XHR1c2VDYWNoZSA9ICF4bWwgJiYgIW9mVHlwZSxcblx0XHRcdFx0XHRcdGRpZmYgPSBmYWxzZTtcblxuXHRcdFx0XHRcdGlmICggcGFyZW50ICkge1xuXG5cdFx0XHRcdFx0XHQvLyA6KGZpcnN0fGxhc3R8b25seSktKGNoaWxkfG9mLXR5cGUpXG5cdFx0XHRcdFx0XHRpZiAoIHNpbXBsZSApIHtcblx0XHRcdFx0XHRcdFx0d2hpbGUgKCBkaXIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0bm9kZSA9IGVsZW07XG5cdFx0XHRcdFx0XHRcdFx0d2hpbGUgKCAoIG5vZGUgPSBub2RlWyBkaXIgXSApICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBvZlR5cGUgP1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUgOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRub2RlLm5vZGVUeXBlID09PSAxICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBSZXZlcnNlIGRpcmVjdGlvbiBmb3IgOm9ubHktKiAoaWYgd2UgaGF2ZW4ndCB5ZXQgZG9uZSBzbylcblx0XHRcdFx0XHRcdFx0XHRzdGFydCA9IGRpciA9IHR5cGUgPT09IFwib25seVwiICYmICFzdGFydCAmJiBcIm5leHRTaWJsaW5nXCI7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHN0YXJ0ID0gWyBmb3J3YXJkID8gcGFyZW50LmZpcnN0Q2hpbGQgOiBwYXJlbnQubGFzdENoaWxkIF07XG5cblx0XHRcdFx0XHRcdC8vIG5vbi14bWwgOm50aC1jaGlsZCguLi4pIHN0b3JlcyBjYWNoZSBkYXRhIG9uIGBwYXJlbnRgXG5cdFx0XHRcdFx0XHRpZiAoIGZvcndhcmQgJiYgdXNlQ2FjaGUgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gU2VlayBgZWxlbWAgZnJvbSBhIHByZXZpb3VzbHktY2FjaGVkIGluZGV4XG5cblx0XHRcdFx0XHRcdFx0Ly8gLi4uaW4gYSBnemlwLWZyaWVuZGx5IHdheVxuXHRcdFx0XHRcdFx0XHRub2RlID0gcGFyZW50O1xuXHRcdFx0XHRcdFx0XHRvdXRlckNhY2hlID0gbm9kZVsgZXhwYW5kbyBdIHx8ICggbm9kZVsgZXhwYW5kbyBdID0ge30gKTtcblxuXHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8OSBvbmx5XG5cdFx0XHRcdFx0XHRcdC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KVxuXHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZSA9IG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSB8fFxuXHRcdFx0XHRcdFx0XHRcdCggb3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdID0ge30gKTtcblxuXHRcdFx0XHRcdFx0XHRjYWNoZSA9IHVuaXF1ZUNhY2hlWyB0eXBlIF0gfHwgW107XG5cdFx0XHRcdFx0XHRcdG5vZGVJbmRleCA9IGNhY2hlWyAwIF0gPT09IGRpcnJ1bnMgJiYgY2FjaGVbIDEgXTtcblx0XHRcdFx0XHRcdFx0ZGlmZiA9IG5vZGVJbmRleCAmJiBjYWNoZVsgMiBdO1xuXHRcdFx0XHRcdFx0XHRub2RlID0gbm9kZUluZGV4ICYmIHBhcmVudC5jaGlsZE5vZGVzWyBub2RlSW5kZXggXTtcblxuXHRcdFx0XHRcdFx0XHR3aGlsZSAoICggbm9kZSA9ICsrbm9kZUluZGV4ICYmIG5vZGUgJiYgbm9kZVsgZGlyIF0gfHxcblxuXHRcdFx0XHRcdFx0XHRcdC8vIEZhbGxiYWNrIHRvIHNlZWtpbmcgYGVsZW1gIGZyb20gdGhlIHN0YXJ0XG5cdFx0XHRcdFx0XHRcdFx0KCBkaWZmID0gbm9kZUluZGV4ID0gMCApIHx8IHN0YXJ0LnBvcCgpICkgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBXaGVuIGZvdW5kLCBjYWNoZSBpbmRleGVzIG9uIGBwYXJlbnRgIGFuZCBicmVha1xuXHRcdFx0XHRcdFx0XHRcdGlmICggbm9kZS5ub2RlVHlwZSA9PT0gMSAmJiArK2RpZmYgJiYgbm9kZSA9PT0gZWxlbSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlWyB0eXBlIF0gPSBbIGRpcnJ1bnMsIG5vZGVJbmRleCwgZGlmZiBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gVXNlIHByZXZpb3VzbHktY2FjaGVkIGVsZW1lbnQgaW5kZXggaWYgYXZhaWxhYmxlXG5cdFx0XHRcdFx0XHRcdGlmICggdXNlQ2FjaGUgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyAuLi5pbiBhIGd6aXAtZnJpZW5kbHkgd2F5XG5cdFx0XHRcdFx0XHRcdFx0bm9kZSA9IGVsZW07XG5cdFx0XHRcdFx0XHRcdFx0b3V0ZXJDYWNoZSA9IG5vZGVbIGV4cGFuZG8gXSB8fCAoIG5vZGVbIGV4cGFuZG8gXSA9IHt9ICk7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8OSBvbmx5XG5cdFx0XHRcdFx0XHRcdFx0Ly8gRGVmZW5kIGFnYWluc3QgY2xvbmVkIGF0dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkpXG5cdFx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gfHxcblx0XHRcdFx0XHRcdFx0XHRcdCggb3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdID0ge30gKTtcblxuXHRcdFx0XHRcdFx0XHRcdGNhY2hlID0gdW5pcXVlQ2FjaGVbIHR5cGUgXSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0XHRub2RlSW5kZXggPSBjYWNoZVsgMCBdID09PSBkaXJydW5zICYmIGNhY2hlWyAxIF07XG5cdFx0XHRcdFx0XHRcdFx0ZGlmZiA9IG5vZGVJbmRleDtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdC8vIHhtbCA6bnRoLWNoaWxkKC4uLilcblx0XHRcdFx0XHRcdFx0Ly8gb3IgOm50aC1sYXN0LWNoaWxkKC4uLikgb3IgOm50aCgtbGFzdCk/LW9mLXR5cGUoLi4uKVxuXHRcdFx0XHRcdFx0XHRpZiAoIGRpZmYgPT09IGZhbHNlICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gVXNlIHRoZSBzYW1lIGxvb3AgYXMgYWJvdmUgdG8gc2VlayBgZWxlbWAgZnJvbSB0aGUgc3RhcnRcblx0XHRcdFx0XHRcdFx0XHR3aGlsZSAoICggbm9kZSA9ICsrbm9kZUluZGV4ICYmIG5vZGUgJiYgbm9kZVsgZGlyIF0gfHxcblx0XHRcdFx0XHRcdFx0XHRcdCggZGlmZiA9IG5vZGVJbmRleCA9IDAgKSB8fCBzdGFydC5wb3AoKSApICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoICggb2ZUeXBlID9cblx0XHRcdFx0XHRcdFx0XHRcdFx0bm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lIDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0bm9kZS5ub2RlVHlwZSA9PT0gMSApICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCsrZGlmZiApIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBDYWNoZSB0aGUgaW5kZXggb2YgZWFjaCBlbmNvdW50ZXJlZCBlbGVtZW50XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggdXNlQ2FjaGUgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0b3V0ZXJDYWNoZSA9IG5vZGVbIGV4cGFuZG8gXSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KCBub2RlWyBleHBhbmRvIF0gPSB7fSApO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPDkgb25seVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoIG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSA9IHt9ICk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZVsgdHlwZSBdID0gWyBkaXJydW5zLCBkaWZmIF07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIG5vZGUgPT09IGVsZW0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gSW5jb3Jwb3JhdGUgdGhlIG9mZnNldCwgdGhlbiBjaGVjayBhZ2FpbnN0IGN5Y2xlIHNpemVcblx0XHRcdFx0XHRcdGRpZmYgLT0gbGFzdDtcblx0XHRcdFx0XHRcdHJldHVybiBkaWZmID09PSBmaXJzdCB8fCAoIGRpZmYgJSBmaXJzdCA9PT0gMCAmJiBkaWZmIC8gZmlyc3QgPj0gMCApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHR9LFxuXG5cdFx0XCJQU0VVRE9cIjogZnVuY3Rpb24oIHBzZXVkbywgYXJndW1lbnQgKSB7XG5cblx0XHRcdC8vIHBzZXVkby1jbGFzcyBuYW1lcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZVxuXHRcdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNwc2V1ZG8tY2xhc3Nlc1xuXHRcdFx0Ly8gUHJpb3JpdGl6ZSBieSBjYXNlIHNlbnNpdGl2aXR5IGluIGNhc2UgY3VzdG9tIHBzZXVkb3MgYXJlIGFkZGVkIHdpdGggdXBwZXJjYXNlIGxldHRlcnNcblx0XHRcdC8vIFJlbWVtYmVyIHRoYXQgc2V0RmlsdGVycyBpbmhlcml0cyBmcm9tIHBzZXVkb3Ncblx0XHRcdHZhciBhcmdzLFxuXHRcdFx0XHRmbiA9IEV4cHIucHNldWRvc1sgcHNldWRvIF0gfHwgRXhwci5zZXRGaWx0ZXJzWyBwc2V1ZG8udG9Mb3dlckNhc2UoKSBdIHx8XG5cdFx0XHRcdFx0U2l6emxlLmVycm9yKCBcInVuc3VwcG9ydGVkIHBzZXVkbzogXCIgKyBwc2V1ZG8gKTtcblxuXHRcdFx0Ly8gVGhlIHVzZXIgbWF5IHVzZSBjcmVhdGVQc2V1ZG8gdG8gaW5kaWNhdGUgdGhhdFxuXHRcdFx0Ly8gYXJndW1lbnRzIGFyZSBuZWVkZWQgdG8gY3JlYXRlIHRoZSBmaWx0ZXIgZnVuY3Rpb25cblx0XHRcdC8vIGp1c3QgYXMgU2l6emxlIGRvZXNcblx0XHRcdGlmICggZm5bIGV4cGFuZG8gXSApIHtcblx0XHRcdFx0cmV0dXJuIGZuKCBhcmd1bWVudCApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBCdXQgbWFpbnRhaW4gc3VwcG9ydCBmb3Igb2xkIHNpZ25hdHVyZXNcblx0XHRcdGlmICggZm4ubGVuZ3RoID4gMSApIHtcblx0XHRcdFx0YXJncyA9IFsgcHNldWRvLCBwc2V1ZG8sIFwiXCIsIGFyZ3VtZW50IF07XG5cdFx0XHRcdHJldHVybiBFeHByLnNldEZpbHRlcnMuaGFzT3duUHJvcGVydHkoIHBzZXVkby50b0xvd2VyQ2FzZSgpICkgP1xuXHRcdFx0XHRcdG1hcmtGdW5jdGlvbiggZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMgKSB7XG5cdFx0XHRcdFx0XHR2YXIgaWR4LFxuXHRcdFx0XHRcdFx0XHRtYXRjaGVkID0gZm4oIHNlZWQsIGFyZ3VtZW50ICksXG5cdFx0XHRcdFx0XHRcdGkgPSBtYXRjaGVkLmxlbmd0aDtcblx0XHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0XHRpZHggPSBpbmRleE9mKCBzZWVkLCBtYXRjaGVkWyBpIF0gKTtcblx0XHRcdFx0XHRcdFx0c2VlZFsgaWR4IF0gPSAhKCBtYXRjaGVzWyBpZHggXSA9IG1hdGNoZWRbIGkgXSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gKSA6XG5cdFx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZm4oIGVsZW0sIDAsIGFyZ3MgKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZm47XG5cdFx0fVxuXHR9LFxuXG5cdHBzZXVkb3M6IHtcblxuXHRcdC8vIFBvdGVudGlhbGx5IGNvbXBsZXggcHNldWRvc1xuXHRcdFwibm90XCI6IG1hcmtGdW5jdGlvbiggZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXG5cdFx0XHQvLyBUcmltIHRoZSBzZWxlY3RvciBwYXNzZWQgdG8gY29tcGlsZVxuXHRcdFx0Ly8gdG8gYXZvaWQgdHJlYXRpbmcgbGVhZGluZyBhbmQgdHJhaWxpbmdcblx0XHRcdC8vIHNwYWNlcyBhcyBjb21iaW5hdG9yc1xuXHRcdFx0dmFyIGlucHV0ID0gW10sXG5cdFx0XHRcdHJlc3VsdHMgPSBbXSxcblx0XHRcdFx0bWF0Y2hlciA9IGNvbXBpbGUoIHNlbGVjdG9yLnJlcGxhY2UoIHJ0cmltLCBcIiQxXCIgKSApO1xuXG5cdFx0XHRyZXR1cm4gbWF0Y2hlclsgZXhwYW5kbyBdID9cblx0XHRcdFx0bWFya0Z1bmN0aW9uKCBmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcywgX2NvbnRleHQsIHhtbCApIHtcblx0XHRcdFx0XHR2YXIgZWxlbSxcblx0XHRcdFx0XHRcdHVubWF0Y2hlZCA9IG1hdGNoZXIoIHNlZWQsIG51bGwsIHhtbCwgW10gKSxcblx0XHRcdFx0XHRcdGkgPSBzZWVkLmxlbmd0aDtcblxuXHRcdFx0XHRcdC8vIE1hdGNoIGVsZW1lbnRzIHVubWF0Y2hlZCBieSBgbWF0Y2hlcmBcblx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdGlmICggKCBlbGVtID0gdW5tYXRjaGVkWyBpIF0gKSApIHtcblx0XHRcdFx0XHRcdFx0c2VlZFsgaSBdID0gISggbWF0Y2hlc1sgaSBdID0gZWxlbSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSApIDpcblx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0sIF9jb250ZXh0LCB4bWwgKSB7XG5cdFx0XHRcdFx0aW5wdXRbIDAgXSA9IGVsZW07XG5cdFx0XHRcdFx0bWF0Y2hlciggaW5wdXQsIG51bGwsIHhtbCwgcmVzdWx0cyApO1xuXG5cdFx0XHRcdFx0Ly8gRG9uJ3Qga2VlcCB0aGUgZWxlbWVudCAoaXNzdWUgIzI5OSlcblx0XHRcdFx0XHRpbnB1dFsgMCBdID0gbnVsbDtcblx0XHRcdFx0XHRyZXR1cm4gIXJlc3VsdHMucG9wKCk7XG5cdFx0XHRcdH07XG5cdFx0fSApLFxuXG5cdFx0XCJoYXNcIjogbWFya0Z1bmN0aW9uKCBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHJldHVybiBTaXp6bGUoIHNlbGVjdG9yLCBlbGVtICkubGVuZ3RoID4gMDtcblx0XHRcdH07XG5cdFx0fSApLFxuXG5cdFx0XCJjb250YWluc1wiOiBtYXJrRnVuY3Rpb24oIGZ1bmN0aW9uKCB0ZXh0ICkge1xuXHRcdFx0dGV4dCA9IHRleHQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0cmV0dXJuICggZWxlbS50ZXh0Q29udGVudCB8fCBnZXRUZXh0KCBlbGVtICkgKS5pbmRleE9mKCB0ZXh0ICkgPiAtMTtcblx0XHRcdH07XG5cdFx0fSApLFxuXG5cdFx0Ly8gXCJXaGV0aGVyIGFuIGVsZW1lbnQgaXMgcmVwcmVzZW50ZWQgYnkgYSA6bGFuZygpIHNlbGVjdG9yXG5cdFx0Ly8gaXMgYmFzZWQgc29sZWx5IG9uIHRoZSBlbGVtZW50J3MgbGFuZ3VhZ2UgdmFsdWVcblx0XHQvLyBiZWluZyBlcXVhbCB0byB0aGUgaWRlbnRpZmllciBDLFxuXHRcdC8vIG9yIGJlZ2lubmluZyB3aXRoIHRoZSBpZGVudGlmaWVyIEMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgXCItXCIuXG5cdFx0Ly8gVGhlIG1hdGNoaW5nIG9mIEMgYWdhaW5zdCB0aGUgZWxlbWVudCdzIGxhbmd1YWdlIHZhbHVlIGlzIHBlcmZvcm1lZCBjYXNlLWluc2Vuc2l0aXZlbHkuXG5cdFx0Ly8gVGhlIGlkZW50aWZpZXIgQyBkb2VzIG5vdCBoYXZlIHRvIGJlIGEgdmFsaWQgbGFuZ3VhZ2UgbmFtZS5cIlxuXHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jbGFuZy1wc2V1ZG9cblx0XHRcImxhbmdcIjogbWFya0Z1bmN0aW9uKCBmdW5jdGlvbiggbGFuZyApIHtcblxuXHRcdFx0Ly8gbGFuZyB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaWRlbnRpZmllclxuXHRcdFx0aWYgKCAhcmlkZW50aWZpZXIudGVzdCggbGFuZyB8fCBcIlwiICkgKSB7XG5cdFx0XHRcdFNpenpsZS5lcnJvciggXCJ1bnN1cHBvcnRlZCBsYW5nOiBcIiArIGxhbmcgKTtcblx0XHRcdH1cblx0XHRcdGxhbmcgPSBsYW5nLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICkudG9Mb3dlckNhc2UoKTtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0dmFyIGVsZW1MYW5nO1xuXHRcdFx0XHRkbyB7XG5cdFx0XHRcdFx0aWYgKCAoIGVsZW1MYW5nID0gZG9jdW1lbnRJc0hUTUwgP1xuXHRcdFx0XHRcdFx0ZWxlbS5sYW5nIDpcblx0XHRcdFx0XHRcdGVsZW0uZ2V0QXR0cmlidXRlKCBcInhtbDpsYW5nXCIgKSB8fCBlbGVtLmdldEF0dHJpYnV0ZSggXCJsYW5nXCIgKSApICkge1xuXG5cdFx0XHRcdFx0XHRlbGVtTGFuZyA9IGVsZW1MYW5nLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZWxlbUxhbmcgPT09IGxhbmcgfHwgZWxlbUxhbmcuaW5kZXhPZiggbGFuZyArIFwiLVwiICkgPT09IDA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IHdoaWxlICggKCBlbGVtID0gZWxlbS5wYXJlbnROb2RlICkgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9O1xuXHRcdH0gKSxcblxuXHRcdC8vIE1pc2NlbGxhbmVvdXNcblx0XHRcInRhcmdldFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHZhciBoYXNoID0gd2luZG93LmxvY2F0aW9uICYmIHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xuXHRcdFx0cmV0dXJuIGhhc2ggJiYgaGFzaC5zbGljZSggMSApID09PSBlbGVtLmlkO1xuXHRcdH0sXG5cblx0XHRcInJvb3RcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbSA9PT0gZG9jRWxlbTtcblx0XHR9LFxuXG5cdFx0XCJmb2N1c1wiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmXG5cdFx0XHRcdCggIWRvY3VtZW50Lmhhc0ZvY3VzIHx8IGRvY3VtZW50Lmhhc0ZvY3VzKCkgKSAmJlxuXHRcdFx0XHQhISggZWxlbS50eXBlIHx8IGVsZW0uaHJlZiB8fCB+ZWxlbS50YWJJbmRleCApO1xuXHRcdH0sXG5cblx0XHQvLyBCb29sZWFuIHByb3BlcnRpZXNcblx0XHRcImVuYWJsZWRcIjogY3JlYXRlRGlzYWJsZWRQc2V1ZG8oIGZhbHNlICksXG5cdFx0XCJkaXNhYmxlZFwiOiBjcmVhdGVEaXNhYmxlZFBzZXVkbyggdHJ1ZSApLFxuXG5cdFx0XCJjaGVja2VkXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdFx0XHQvLyBJbiBDU1MzLCA6Y2hlY2tlZCBzaG91bGQgcmV0dXJuIGJvdGggY2hlY2tlZCBhbmQgc2VsZWN0ZWQgZWxlbWVudHNcblx0XHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTEvUkVDLWNzczMtc2VsZWN0b3JzLTIwMTEwOTI5LyNjaGVja2VkXG5cdFx0XHR2YXIgbm9kZU5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRyZXR1cm4gKCBub2RlTmFtZSA9PT0gXCJpbnB1dFwiICYmICEhZWxlbS5jaGVja2VkICkgfHxcblx0XHRcdFx0KCBub2RlTmFtZSA9PT0gXCJvcHRpb25cIiAmJiAhIWVsZW0uc2VsZWN0ZWQgKTtcblx0XHR9LFxuXG5cdFx0XCJzZWxlY3RlZFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdFx0Ly8gQWNjZXNzaW5nIHRoaXMgcHJvcGVydHkgbWFrZXMgc2VsZWN0ZWQtYnktZGVmYXVsdFxuXHRcdFx0Ly8gb3B0aW9ucyBpbiBTYWZhcmkgd29yayBwcm9wZXJseVxuXHRcdFx0aWYgKCBlbGVtLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcblx0XHRcdFx0ZWxlbS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBlbGVtLnNlbGVjdGVkID09PSB0cnVlO1xuXHRcdH0sXG5cblx0XHQvLyBDb250ZW50c1xuXHRcdFwiZW1wdHlcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jZW1wdHktcHNldWRvXG5cdFx0XHQvLyA6ZW1wdHkgaXMgbmVnYXRlZCBieSBlbGVtZW50ICgxKSBvciBjb250ZW50IG5vZGVzICh0ZXh0OiAzOyBjZGF0YTogNDsgZW50aXR5IHJlZjogNSksXG5cdFx0XHQvLyAgIGJ1dCBub3QgYnkgb3RoZXJzIChjb21tZW50OiA4OyBwcm9jZXNzaW5nIGluc3RydWN0aW9uOiA3OyBldGMuKVxuXHRcdFx0Ly8gbm9kZVR5cGUgPCA2IHdvcmtzIGJlY2F1c2UgYXR0cmlidXRlcyAoMikgZG8gbm90IGFwcGVhciBhcyBjaGlsZHJlblxuXHRcdFx0Zm9yICggZWxlbSA9IGVsZW0uZmlyc3RDaGlsZDsgZWxlbTsgZWxlbSA9IGVsZW0ubmV4dFNpYmxpbmcgKSB7XG5cdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA8IDYgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9LFxuXG5cdFx0XCJwYXJlbnRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gIUV4cHIucHNldWRvc1sgXCJlbXB0eVwiIF0oIGVsZW0gKTtcblx0XHR9LFxuXG5cdFx0Ly8gRWxlbWVudC9pbnB1dCB0eXBlc1xuXHRcdFwiaGVhZGVyXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIHJoZWFkZXIudGVzdCggZWxlbS5ub2RlTmFtZSApO1xuXHRcdH0sXG5cblx0XHRcImlucHV0XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIHJpbnB1dHMudGVzdCggZWxlbS5ub2RlTmFtZSApO1xuXHRcdH0sXG5cblx0XHRcImJ1dHRvblwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0cmV0dXJuIG5hbWUgPT09IFwiaW5wdXRcIiAmJiBlbGVtLnR5cGUgPT09IFwiYnV0dG9uXCIgfHwgbmFtZSA9PT0gXCJidXR0b25cIjtcblx0XHR9LFxuXG5cdFx0XCJ0ZXh0XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIGF0dHI7XG5cdFx0XHRyZXR1cm4gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImlucHV0XCIgJiZcblx0XHRcdFx0ZWxlbS50eXBlID09PSBcInRleHRcIiAmJlxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IElFPDhcblx0XHRcdFx0Ly8gTmV3IEhUTUw1IGF0dHJpYnV0ZSB2YWx1ZXMgKGUuZy4sIFwic2VhcmNoXCIpIGFwcGVhciB3aXRoIGVsZW0udHlwZSA9PT0gXCJ0ZXh0XCJcblx0XHRcdFx0KCAoIGF0dHIgPSBlbGVtLmdldEF0dHJpYnV0ZSggXCJ0eXBlXCIgKSApID09IG51bGwgfHxcblx0XHRcdFx0XHRhdHRyLnRvTG93ZXJDYXNlKCkgPT09IFwidGV4dFwiICk7XG5cdFx0fSxcblxuXHRcdC8vIFBvc2l0aW9uLWluLWNvbGxlY3Rpb25cblx0XHRcImZpcnN0XCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oIGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIFsgMCBdO1xuXHRcdH0gKSxcblxuXHRcdFwibGFzdFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKCBmdW5jdGlvbiggX21hdGNoSW5kZXhlcywgbGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuIFsgbGVuZ3RoIC0gMSBdO1xuXHRcdH0gKSxcblxuXHRcdFwiZXFcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyggZnVuY3Rpb24oIF9tYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7XG5cdFx0XHRyZXR1cm4gWyBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6IGFyZ3VtZW50IF07XG5cdFx0fSApLFxuXG5cdFx0XCJldmVuXCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oIGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHtcblx0XHRcdHZhciBpID0gMDtcblx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSArPSAyICkge1xuXHRcdFx0XHRtYXRjaEluZGV4ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoSW5kZXhlcztcblx0XHR9ICksXG5cblx0XHRcIm9kZFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKCBmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGggKSB7XG5cdFx0XHR2YXIgaSA9IDE7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkgKz0gMiApIHtcblx0XHRcdFx0bWF0Y2hJbmRleGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtYXRjaEluZGV4ZXM7XG5cdFx0fSApLFxuXG5cdFx0XCJsdFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKCBmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkge1xuXHRcdFx0dmFyIGkgPSBhcmd1bWVudCA8IDAgP1xuXHRcdFx0XHRhcmd1bWVudCArIGxlbmd0aCA6XG5cdFx0XHRcdGFyZ3VtZW50ID4gbGVuZ3RoID9cblx0XHRcdFx0XHRsZW5ndGggOlxuXHRcdFx0XHRcdGFyZ3VtZW50O1xuXHRcdFx0Zm9yICggOyAtLWkgPj0gMDsgKSB7XG5cdFx0XHRcdG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWF0Y2hJbmRleGVzO1xuXHRcdH0gKSxcblxuXHRcdFwiZ3RcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyggZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHtcblx0XHRcdHZhciBpID0gYXJndW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudDtcblx0XHRcdGZvciAoIDsgKytpIDwgbGVuZ3RoOyApIHtcblx0XHRcdFx0bWF0Y2hJbmRleGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtYXRjaEluZGV4ZXM7XG5cdFx0fSApXG5cdH1cbn07XG5cbkV4cHIucHNldWRvc1sgXCJudGhcIiBdID0gRXhwci5wc2V1ZG9zWyBcImVxXCIgXTtcblxuLy8gQWRkIGJ1dHRvbi9pbnB1dCB0eXBlIHBzZXVkb3NcbmZvciAoIGkgaW4geyByYWRpbzogdHJ1ZSwgY2hlY2tib3g6IHRydWUsIGZpbGU6IHRydWUsIHBhc3N3b3JkOiB0cnVlLCBpbWFnZTogdHJ1ZSB9ICkge1xuXHRFeHByLnBzZXVkb3NbIGkgXSA9IGNyZWF0ZUlucHV0UHNldWRvKCBpICk7XG59XG5mb3IgKCBpIGluIHsgc3VibWl0OiB0cnVlLCByZXNldDogdHJ1ZSB9ICkge1xuXHRFeHByLnBzZXVkb3NbIGkgXSA9IGNyZWF0ZUJ1dHRvblBzZXVkbyggaSApO1xufVxuXG4vLyBFYXN5IEFQSSBmb3IgY3JlYXRpbmcgbmV3IHNldEZpbHRlcnNcbmZ1bmN0aW9uIHNldEZpbHRlcnMoKSB7fVxuc2V0RmlsdGVycy5wcm90b3R5cGUgPSBFeHByLmZpbHRlcnMgPSBFeHByLnBzZXVkb3M7XG5FeHByLnNldEZpbHRlcnMgPSBuZXcgc2V0RmlsdGVycygpO1xuXG50b2tlbml6ZSA9IFNpenpsZS50b2tlbml6ZSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgcGFyc2VPbmx5ICkge1xuXHR2YXIgbWF0Y2hlZCwgbWF0Y2gsIHRva2VucywgdHlwZSxcblx0XHRzb0ZhciwgZ3JvdXBzLCBwcmVGaWx0ZXJzLFxuXHRcdGNhY2hlZCA9IHRva2VuQ2FjaGVbIHNlbGVjdG9yICsgXCIgXCIgXTtcblxuXHRpZiAoIGNhY2hlZCApIHtcblx0XHRyZXR1cm4gcGFyc2VPbmx5ID8gMCA6IGNhY2hlZC5zbGljZSggMCApO1xuXHR9XG5cblx0c29GYXIgPSBzZWxlY3Rvcjtcblx0Z3JvdXBzID0gW107XG5cdHByZUZpbHRlcnMgPSBFeHByLnByZUZpbHRlcjtcblxuXHR3aGlsZSAoIHNvRmFyICkge1xuXG5cdFx0Ly8gQ29tbWEgYW5kIGZpcnN0IHJ1blxuXHRcdGlmICggIW1hdGNoZWQgfHwgKCBtYXRjaCA9IHJjb21tYS5leGVjKCBzb0ZhciApICkgKSB7XG5cdFx0XHRpZiAoIG1hdGNoICkge1xuXG5cdFx0XHRcdC8vIERvbid0IGNvbnN1bWUgdHJhaWxpbmcgY29tbWFzIGFzIHZhbGlkXG5cdFx0XHRcdHNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoWyAwIF0ubGVuZ3RoICkgfHwgc29GYXI7XG5cdFx0XHR9XG5cdFx0XHRncm91cHMucHVzaCggKCB0b2tlbnMgPSBbXSApICk7XG5cdFx0fVxuXG5cdFx0bWF0Y2hlZCA9IGZhbHNlO1xuXG5cdFx0Ly8gQ29tYmluYXRvcnNcblx0XHRpZiAoICggbWF0Y2ggPSByY29tYmluYXRvcnMuZXhlYyggc29GYXIgKSApICkge1xuXHRcdFx0bWF0Y2hlZCA9IG1hdGNoLnNoaWZ0KCk7XG5cdFx0XHR0b2tlbnMucHVzaCgge1xuXHRcdFx0XHR2YWx1ZTogbWF0Y2hlZCxcblxuXHRcdFx0XHQvLyBDYXN0IGRlc2NlbmRhbnQgY29tYmluYXRvcnMgdG8gc3BhY2Vcblx0XHRcdFx0dHlwZTogbWF0Y2hbIDAgXS5yZXBsYWNlKCBydHJpbSwgXCIgXCIgKVxuXHRcdFx0fSApO1xuXHRcdFx0c29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hlZC5sZW5ndGggKTtcblx0XHR9XG5cblx0XHQvLyBGaWx0ZXJzXG5cdFx0Zm9yICggdHlwZSBpbiBFeHByLmZpbHRlciApIHtcblx0XHRcdGlmICggKCBtYXRjaCA9IG1hdGNoRXhwclsgdHlwZSBdLmV4ZWMoIHNvRmFyICkgKSAmJiAoICFwcmVGaWx0ZXJzWyB0eXBlIF0gfHxcblx0XHRcdFx0KCBtYXRjaCA9IHByZUZpbHRlcnNbIHR5cGUgXSggbWF0Y2ggKSApICkgKSB7XG5cdFx0XHRcdG1hdGNoZWQgPSBtYXRjaC5zaGlmdCgpO1xuXHRcdFx0XHR0b2tlbnMucHVzaCgge1xuXHRcdFx0XHRcdHZhbHVlOiBtYXRjaGVkLFxuXHRcdFx0XHRcdHR5cGU6IHR5cGUsXG5cdFx0XHRcdFx0bWF0Y2hlczogbWF0Y2hcblx0XHRcdFx0fSApO1xuXHRcdFx0XHRzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaGVkLmxlbmd0aCApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICggIW1hdGNoZWQgKSB7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblxuXHQvLyBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgaW52YWxpZCBleGNlc3Ncblx0Ly8gaWYgd2UncmUganVzdCBwYXJzaW5nXG5cdC8vIE90aGVyd2lzZSwgdGhyb3cgYW4gZXJyb3Igb3IgcmV0dXJuIHRva2Vuc1xuXHRyZXR1cm4gcGFyc2VPbmx5ID9cblx0XHRzb0Zhci5sZW5ndGggOlxuXHRcdHNvRmFyID9cblx0XHRcdFNpenpsZS5lcnJvciggc2VsZWN0b3IgKSA6XG5cblx0XHRcdC8vIENhY2hlIHRoZSB0b2tlbnNcblx0XHRcdHRva2VuQ2FjaGUoIHNlbGVjdG9yLCBncm91cHMgKS5zbGljZSggMCApO1xufTtcblxuZnVuY3Rpb24gdG9TZWxlY3RvciggdG9rZW5zICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bGVuID0gdG9rZW5zLmxlbmd0aCxcblx0XHRzZWxlY3RvciA9IFwiXCI7XG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdHNlbGVjdG9yICs9IHRva2Vuc1sgaSBdLnZhbHVlO1xuXHR9XG5cdHJldHVybiBzZWxlY3Rvcjtcbn1cblxuZnVuY3Rpb24gYWRkQ29tYmluYXRvciggbWF0Y2hlciwgY29tYmluYXRvciwgYmFzZSApIHtcblx0dmFyIGRpciA9IGNvbWJpbmF0b3IuZGlyLFxuXHRcdHNraXAgPSBjb21iaW5hdG9yLm5leHQsXG5cdFx0a2V5ID0gc2tpcCB8fCBkaXIsXG5cdFx0Y2hlY2tOb25FbGVtZW50cyA9IGJhc2UgJiYga2V5ID09PSBcInBhcmVudE5vZGVcIixcblx0XHRkb25lTmFtZSA9IGRvbmUrKztcblxuXHRyZXR1cm4gY29tYmluYXRvci5maXJzdCA/XG5cblx0XHQvLyBDaGVjayBhZ2FpbnN0IGNsb3Nlc3QgYW5jZXN0b3IvcHJlY2VkaW5nIGVsZW1lbnRcblx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0d2hpbGUgKCAoIGVsZW0gPSBlbGVtWyBkaXIgXSApICkge1xuXHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50cyApIHtcblx0XHRcdFx0XHRyZXR1cm4gbWF0Y2hlciggZWxlbSwgY29udGV4dCwgeG1sICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9IDpcblxuXHRcdC8vIENoZWNrIGFnYWluc3QgYWxsIGFuY2VzdG9yL3ByZWNlZGluZyBlbGVtZW50c1xuXHRcdGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHR2YXIgb2xkQ2FjaGUsIHVuaXF1ZUNhY2hlLCBvdXRlckNhY2hlLFxuXHRcdFx0XHRuZXdDYWNoZSA9IFsgZGlycnVucywgZG9uZU5hbWUgXTtcblxuXHRcdFx0Ly8gV2UgY2FuJ3Qgc2V0IGFyYml0cmFyeSBkYXRhIG9uIFhNTCBub2Rlcywgc28gdGhleSBkb24ndCBiZW5lZml0IGZyb20gY29tYmluYXRvciBjYWNoaW5nXG5cdFx0XHRpZiAoIHhtbCApIHtcblx0XHRcdFx0d2hpbGUgKCAoIGVsZW0gPSBlbGVtWyBkaXIgXSApICkge1xuXHRcdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkge1xuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR3aGlsZSAoICggZWxlbSA9IGVsZW1bIGRpciBdICkgKSB7XG5cdFx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7XG5cdFx0XHRcdFx0XHRvdXRlckNhY2hlID0gZWxlbVsgZXhwYW5kbyBdIHx8ICggZWxlbVsgZXhwYW5kbyBdID0ge30gKTtcblxuXHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPDkgb25seVxuXHRcdFx0XHRcdFx0Ly8gRGVmZW5kIGFnYWluc3QgY2xvbmVkIGF0dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkpXG5cdFx0XHRcdFx0XHR1bmlxdWVDYWNoZSA9IG91dGVyQ2FjaGVbIGVsZW0udW5pcXVlSUQgXSB8fFxuXHRcdFx0XHRcdFx0XHQoIG91dGVyQ2FjaGVbIGVsZW0udW5pcXVlSUQgXSA9IHt9ICk7XG5cblx0XHRcdFx0XHRcdGlmICggc2tpcCAmJiBza2lwID09PSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgKSB7XG5cdFx0XHRcdFx0XHRcdGVsZW0gPSBlbGVtWyBkaXIgXSB8fCBlbGVtO1xuXHRcdFx0XHRcdFx0fSBlbHNlIGlmICggKCBvbGRDYWNoZSA9IHVuaXF1ZUNhY2hlWyBrZXkgXSApICYmXG5cdFx0XHRcdFx0XHRcdG9sZENhY2hlWyAwIF0gPT09IGRpcnJ1bnMgJiYgb2xkQ2FjaGVbIDEgXSA9PT0gZG9uZU5hbWUgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gQXNzaWduIHRvIG5ld0NhY2hlIHNvIHJlc3VsdHMgYmFjay1wcm9wYWdhdGUgdG8gcHJldmlvdXMgZWxlbWVudHNcblx0XHRcdFx0XHRcdFx0cmV0dXJuICggbmV3Q2FjaGVbIDIgXSA9IG9sZENhY2hlWyAyIF0gKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gUmV1c2UgbmV3Y2FjaGUgc28gcmVzdWx0cyBiYWNrLXByb3BhZ2F0ZSB0byBwcmV2aW91cyBlbGVtZW50c1xuXHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZVsga2V5IF0gPSBuZXdDYWNoZTtcblxuXHRcdFx0XHRcdFx0XHQvLyBBIG1hdGNoIG1lYW5zIHdlJ3JlIGRvbmU7IGEgZmFpbCBtZWFucyB3ZSBoYXZlIHRvIGtlZXAgY2hlY2tpbmdcblx0XHRcdFx0XHRcdFx0aWYgKCAoIG5ld0NhY2hlWyAyIF0gPSBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApICkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fTtcbn1cblxuZnVuY3Rpb24gZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICkge1xuXHRyZXR1cm4gbWF0Y2hlcnMubGVuZ3RoID4gMSA/XG5cdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHZhciBpID0gbWF0Y2hlcnMubGVuZ3RoO1xuXHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdGlmICggIW1hdGNoZXJzWyBpIF0oIGVsZW0sIGNvbnRleHQsIHhtbCApICkge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSA6XG5cdFx0bWF0Y2hlcnNbIDAgXTtcbn1cblxuZnVuY3Rpb24gbXVsdGlwbGVDb250ZXh0cyggc2VsZWN0b3IsIGNvbnRleHRzLCByZXN1bHRzICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bGVuID0gY29udGV4dHMubGVuZ3RoO1xuXHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRTaXp6bGUoIHNlbGVjdG9yLCBjb250ZXh0c1sgaSBdLCByZXN1bHRzICk7XG5cdH1cblx0cmV0dXJuIHJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIGNvbmRlbnNlKCB1bm1hdGNoZWQsIG1hcCwgZmlsdGVyLCBjb250ZXh0LCB4bWwgKSB7XG5cdHZhciBlbGVtLFxuXHRcdG5ld1VubWF0Y2hlZCA9IFtdLFxuXHRcdGkgPSAwLFxuXHRcdGxlbiA9IHVubWF0Y2hlZC5sZW5ndGgsXG5cdFx0bWFwcGVkID0gbWFwICE9IG51bGw7XG5cblx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0aWYgKCAoIGVsZW0gPSB1bm1hdGNoZWRbIGkgXSApICkge1xuXHRcdFx0aWYgKCAhZmlsdGVyIHx8IGZpbHRlciggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7XG5cdFx0XHRcdG5ld1VubWF0Y2hlZC5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdGlmICggbWFwcGVkICkge1xuXHRcdFx0XHRcdG1hcC5wdXNoKCBpICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gbmV3VW5tYXRjaGVkO1xufVxuXG5mdW5jdGlvbiBzZXRNYXRjaGVyKCBwcmVGaWx0ZXIsIHNlbGVjdG9yLCBtYXRjaGVyLCBwb3N0RmlsdGVyLCBwb3N0RmluZGVyLCBwb3N0U2VsZWN0b3IgKSB7XG5cdGlmICggcG9zdEZpbHRlciAmJiAhcG9zdEZpbHRlclsgZXhwYW5kbyBdICkge1xuXHRcdHBvc3RGaWx0ZXIgPSBzZXRNYXRjaGVyKCBwb3N0RmlsdGVyICk7XG5cdH1cblx0aWYgKCBwb3N0RmluZGVyICYmICFwb3N0RmluZGVyWyBleHBhbmRvIF0gKSB7XG5cdFx0cG9zdEZpbmRlciA9IHNldE1hdGNoZXIoIHBvc3RGaW5kZXIsIHBvc3RTZWxlY3RvciApO1xuXHR9XG5cdHJldHVybiBtYXJrRnVuY3Rpb24oIGZ1bmN0aW9uKCBzZWVkLCByZXN1bHRzLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0dmFyIHRlbXAsIGksIGVsZW0sXG5cdFx0XHRwcmVNYXAgPSBbXSxcblx0XHRcdHBvc3RNYXAgPSBbXSxcblx0XHRcdHByZWV4aXN0aW5nID0gcmVzdWx0cy5sZW5ndGgsXG5cblx0XHRcdC8vIEdldCBpbml0aWFsIGVsZW1lbnRzIGZyb20gc2VlZCBvciBjb250ZXh0XG5cdFx0XHRlbGVtcyA9IHNlZWQgfHwgbXVsdGlwbGVDb250ZXh0cyhcblx0XHRcdFx0c2VsZWN0b3IgfHwgXCIqXCIsXG5cdFx0XHRcdGNvbnRleHQubm9kZVR5cGUgPyBbIGNvbnRleHQgXSA6IGNvbnRleHQsXG5cdFx0XHRcdFtdXG5cdFx0XHQpLFxuXG5cdFx0XHQvLyBQcmVmaWx0ZXIgdG8gZ2V0IG1hdGNoZXIgaW5wdXQsIHByZXNlcnZpbmcgYSBtYXAgZm9yIHNlZWQtcmVzdWx0cyBzeW5jaHJvbml6YXRpb25cblx0XHRcdG1hdGNoZXJJbiA9IHByZUZpbHRlciAmJiAoIHNlZWQgfHwgIXNlbGVjdG9yICkgP1xuXHRcdFx0XHRjb25kZW5zZSggZWxlbXMsIHByZU1hcCwgcHJlRmlsdGVyLCBjb250ZXh0LCB4bWwgKSA6XG5cdFx0XHRcdGVsZW1zLFxuXG5cdFx0XHRtYXRjaGVyT3V0ID0gbWF0Y2hlciA/XG5cblx0XHRcdFx0Ly8gSWYgd2UgaGF2ZSBhIHBvc3RGaW5kZXIsIG9yIGZpbHRlcmVkIHNlZWQsIG9yIG5vbi1zZWVkIHBvc3RGaWx0ZXIgb3IgcHJlZXhpc3RpbmcgcmVzdWx0cyxcblx0XHRcdFx0cG9zdEZpbmRlciB8fCAoIHNlZWQgPyBwcmVGaWx0ZXIgOiBwcmVleGlzdGluZyB8fCBwb3N0RmlsdGVyICkgP1xuXG5cdFx0XHRcdFx0Ly8gLi4uaW50ZXJtZWRpYXRlIHByb2Nlc3NpbmcgaXMgbmVjZXNzYXJ5XG5cdFx0XHRcdFx0W10gOlxuXG5cdFx0XHRcdFx0Ly8gLi4ub3RoZXJ3aXNlIHVzZSByZXN1bHRzIGRpcmVjdGx5XG5cdFx0XHRcdFx0cmVzdWx0cyA6XG5cdFx0XHRcdG1hdGNoZXJJbjtcblxuXHRcdC8vIEZpbmQgcHJpbWFyeSBtYXRjaGVzXG5cdFx0aWYgKCBtYXRjaGVyICkge1xuXHRcdFx0bWF0Y2hlciggbWF0Y2hlckluLCBtYXRjaGVyT3V0LCBjb250ZXh0LCB4bWwgKTtcblx0XHR9XG5cblx0XHQvLyBBcHBseSBwb3N0RmlsdGVyXG5cdFx0aWYgKCBwb3N0RmlsdGVyICkge1xuXHRcdFx0dGVtcCA9IGNvbmRlbnNlKCBtYXRjaGVyT3V0LCBwb3N0TWFwICk7XG5cdFx0XHRwb3N0RmlsdGVyKCB0ZW1wLCBbXSwgY29udGV4dCwgeG1sICk7XG5cblx0XHRcdC8vIFVuLW1hdGNoIGZhaWxpbmcgZWxlbWVudHMgYnkgbW92aW5nIHRoZW0gYmFjayB0byBtYXRjaGVySW5cblx0XHRcdGkgPSB0ZW1wLmxlbmd0aDtcblx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRpZiAoICggZWxlbSA9IHRlbXBbIGkgXSApICkge1xuXHRcdFx0XHRcdG1hdGNoZXJPdXRbIHBvc3RNYXBbIGkgXSBdID0gISggbWF0Y2hlckluWyBwb3N0TWFwWyBpIF0gXSA9IGVsZW0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICggc2VlZCApIHtcblx0XHRcdGlmICggcG9zdEZpbmRlciB8fCBwcmVGaWx0ZXIgKSB7XG5cdFx0XHRcdGlmICggcG9zdEZpbmRlciApIHtcblxuXHRcdFx0XHRcdC8vIEdldCB0aGUgZmluYWwgbWF0Y2hlck91dCBieSBjb25kZW5zaW5nIHRoaXMgaW50ZXJtZWRpYXRlIGludG8gcG9zdEZpbmRlciBjb250ZXh0c1xuXHRcdFx0XHRcdHRlbXAgPSBbXTtcblx0XHRcdFx0XHRpID0gbWF0Y2hlck91dC5sZW5ndGg7XG5cdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRpZiAoICggZWxlbSA9IG1hdGNoZXJPdXRbIGkgXSApICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIFJlc3RvcmUgbWF0Y2hlckluIHNpbmNlIGVsZW0gaXMgbm90IHlldCBhIGZpbmFsIG1hdGNoXG5cdFx0XHRcdFx0XHRcdHRlbXAucHVzaCggKCBtYXRjaGVySW5bIGkgXSA9IGVsZW0gKSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRwb3N0RmluZGVyKCBudWxsLCAoIG1hdGNoZXJPdXQgPSBbXSApLCB0ZW1wLCB4bWwgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIE1vdmUgbWF0Y2hlZCBlbGVtZW50cyBmcm9tIHNlZWQgdG8gcmVzdWx0cyB0byBrZWVwIHRoZW0gc3luY2hyb25pemVkXG5cdFx0XHRcdGkgPSBtYXRjaGVyT3V0Lmxlbmd0aDtcblx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0aWYgKCAoIGVsZW0gPSBtYXRjaGVyT3V0WyBpIF0gKSAmJlxuXHRcdFx0XHRcdFx0KCB0ZW1wID0gcG9zdEZpbmRlciA/IGluZGV4T2YoIHNlZWQsIGVsZW0gKSA6IHByZU1hcFsgaSBdICkgPiAtMSApIHtcblxuXHRcdFx0XHRcdFx0c2VlZFsgdGVtcCBdID0gISggcmVzdWx0c1sgdGVtcCBdID0gZWxlbSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0Ly8gQWRkIGVsZW1lbnRzIHRvIHJlc3VsdHMsIHRocm91Z2ggcG9zdEZpbmRlciBpZiBkZWZpbmVkXG5cdFx0fSBlbHNlIHtcblx0XHRcdG1hdGNoZXJPdXQgPSBjb25kZW5zZShcblx0XHRcdFx0bWF0Y2hlck91dCA9PT0gcmVzdWx0cyA/XG5cdFx0XHRcdFx0bWF0Y2hlck91dC5zcGxpY2UoIHByZWV4aXN0aW5nLCBtYXRjaGVyT3V0Lmxlbmd0aCApIDpcblx0XHRcdFx0XHRtYXRjaGVyT3V0XG5cdFx0XHQpO1xuXHRcdFx0aWYgKCBwb3N0RmluZGVyICkge1xuXHRcdFx0XHRwb3N0RmluZGVyKCBudWxsLCByZXN1bHRzLCBtYXRjaGVyT3V0LCB4bWwgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIG1hdGNoZXJPdXQgKTtcblx0XHRcdH1cblx0XHR9XG5cdH0gKTtcbn1cblxuZnVuY3Rpb24gbWF0Y2hlckZyb21Ub2tlbnMoIHRva2VucyApIHtcblx0dmFyIGNoZWNrQ29udGV4dCwgbWF0Y2hlciwgaixcblx0XHRsZW4gPSB0b2tlbnMubGVuZ3RoLFxuXHRcdGxlYWRpbmdSZWxhdGl2ZSA9IEV4cHIucmVsYXRpdmVbIHRva2Vuc1sgMCBdLnR5cGUgXSxcblx0XHRpbXBsaWNpdFJlbGF0aXZlID0gbGVhZGluZ1JlbGF0aXZlIHx8IEV4cHIucmVsYXRpdmVbIFwiIFwiIF0sXG5cdFx0aSA9IGxlYWRpbmdSZWxhdGl2ZSA/IDEgOiAwLFxuXG5cdFx0Ly8gVGhlIGZvdW5kYXRpb25hbCBtYXRjaGVyIGVuc3VyZXMgdGhhdCBlbGVtZW50cyBhcmUgcmVhY2hhYmxlIGZyb20gdG9wLWxldmVsIGNvbnRleHQocylcblx0XHRtYXRjaENvbnRleHQgPSBhZGRDb21iaW5hdG9yKCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtID09PSBjaGVja0NvbnRleHQ7XG5cdFx0fSwgaW1wbGljaXRSZWxhdGl2ZSwgdHJ1ZSApLFxuXHRcdG1hdGNoQW55Q29udGV4dCA9IGFkZENvbWJpbmF0b3IoIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGluZGV4T2YoIGNoZWNrQ29udGV4dCwgZWxlbSApID4gLTE7XG5cdFx0fSwgaW1wbGljaXRSZWxhdGl2ZSwgdHJ1ZSApLFxuXHRcdG1hdGNoZXJzID0gWyBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0dmFyIHJldCA9ICggIWxlYWRpbmdSZWxhdGl2ZSAmJiAoIHhtbCB8fCBjb250ZXh0ICE9PSBvdXRlcm1vc3RDb250ZXh0ICkgKSB8fCAoXG5cdFx0XHRcdCggY2hlY2tDb250ZXh0ID0gY29udGV4dCApLm5vZGVUeXBlID9cblx0XHRcdFx0XHRtYXRjaENvbnRleHQoIGVsZW0sIGNvbnRleHQsIHhtbCApIDpcblx0XHRcdFx0XHRtYXRjaEFueUNvbnRleHQoIGVsZW0sIGNvbnRleHQsIHhtbCApICk7XG5cblx0XHRcdC8vIEF2b2lkIGhhbmdpbmcgb250byBlbGVtZW50IChpc3N1ZSAjMjk5KVxuXHRcdFx0Y2hlY2tDb250ZXh0ID0gbnVsbDtcblx0XHRcdHJldHVybiByZXQ7XG5cdFx0fSBdO1xuXG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdGlmICggKCBtYXRjaGVyID0gRXhwci5yZWxhdGl2ZVsgdG9rZW5zWyBpIF0udHlwZSBdICkgKSB7XG5cdFx0XHRtYXRjaGVycyA9IFsgYWRkQ29tYmluYXRvciggZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICksIG1hdGNoZXIgKSBdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRtYXRjaGVyID0gRXhwci5maWx0ZXJbIHRva2Vuc1sgaSBdLnR5cGUgXS5hcHBseSggbnVsbCwgdG9rZW5zWyBpIF0ubWF0Y2hlcyApO1xuXG5cdFx0XHQvLyBSZXR1cm4gc3BlY2lhbCB1cG9uIHNlZWluZyBhIHBvc2l0aW9uYWwgbWF0Y2hlclxuXHRcdFx0aWYgKCBtYXRjaGVyWyBleHBhbmRvIF0gKSB7XG5cblx0XHRcdFx0Ly8gRmluZCB0aGUgbmV4dCByZWxhdGl2ZSBvcGVyYXRvciAoaWYgYW55KSBmb3IgcHJvcGVyIGhhbmRsaW5nXG5cdFx0XHRcdGogPSArK2k7XG5cdFx0XHRcdGZvciAoIDsgaiA8IGxlbjsgaisrICkge1xuXHRcdFx0XHRcdGlmICggRXhwci5yZWxhdGl2ZVsgdG9rZW5zWyBqIF0udHlwZSBdICkge1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBzZXRNYXRjaGVyKFxuXHRcdFx0XHRcdGkgPiAxICYmIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApLFxuXHRcdFx0XHRcdGkgPiAxICYmIHRvU2VsZWN0b3IoXG5cblx0XHRcdFx0XHQvLyBJZiB0aGUgcHJlY2VkaW5nIHRva2VuIHdhcyBhIGRlc2NlbmRhbnQgY29tYmluYXRvciwgaW5zZXJ0IGFuIGltcGxpY2l0IGFueS1lbGVtZW50IGAqYFxuXHRcdFx0XHRcdHRva2Vuc1xuXHRcdFx0XHRcdFx0LnNsaWNlKCAwLCBpIC0gMSApXG5cdFx0XHRcdFx0XHQuY29uY2F0KCB7IHZhbHVlOiB0b2tlbnNbIGkgLSAyIF0udHlwZSA9PT0gXCIgXCIgPyBcIipcIiA6IFwiXCIgfSApXG5cdFx0XHRcdFx0KS5yZXBsYWNlKCBydHJpbSwgXCIkMVwiICksXG5cdFx0XHRcdFx0bWF0Y2hlcixcblx0XHRcdFx0XHRpIDwgaiAmJiBtYXRjaGVyRnJvbVRva2VucyggdG9rZW5zLnNsaWNlKCBpLCBqICkgKSxcblx0XHRcdFx0XHRqIDwgbGVuICYmIG1hdGNoZXJGcm9tVG9rZW5zKCAoIHRva2VucyA9IHRva2Vucy5zbGljZSggaiApICkgKSxcblx0XHRcdFx0XHRqIDwgbGVuICYmIHRvU2VsZWN0b3IoIHRva2VucyApXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRtYXRjaGVycy5wdXNoKCBtYXRjaGVyICk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApO1xufVxuXG5mdW5jdGlvbiBtYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMoIGVsZW1lbnRNYXRjaGVycywgc2V0TWF0Y2hlcnMgKSB7XG5cdHZhciBieVNldCA9IHNldE1hdGNoZXJzLmxlbmd0aCA+IDAsXG5cdFx0YnlFbGVtZW50ID0gZWxlbWVudE1hdGNoZXJzLmxlbmd0aCA+IDAsXG5cdFx0c3VwZXJNYXRjaGVyID0gZnVuY3Rpb24oIHNlZWQsIGNvbnRleHQsIHhtbCwgcmVzdWx0cywgb3V0ZXJtb3N0ICkge1xuXHRcdFx0dmFyIGVsZW0sIGosIG1hdGNoZXIsXG5cdFx0XHRcdG1hdGNoZWRDb3VudCA9IDAsXG5cdFx0XHRcdGkgPSBcIjBcIixcblx0XHRcdFx0dW5tYXRjaGVkID0gc2VlZCAmJiBbXSxcblx0XHRcdFx0c2V0TWF0Y2hlZCA9IFtdLFxuXHRcdFx0XHRjb250ZXh0QmFja3VwID0gb3V0ZXJtb3N0Q29udGV4dCxcblxuXHRcdFx0XHQvLyBXZSBtdXN0IGFsd2F5cyBoYXZlIGVpdGhlciBzZWVkIGVsZW1lbnRzIG9yIG91dGVybW9zdCBjb250ZXh0XG5cdFx0XHRcdGVsZW1zID0gc2VlZCB8fCBieUVsZW1lbnQgJiYgRXhwci5maW5kWyBcIlRBR1wiIF0oIFwiKlwiLCBvdXRlcm1vc3QgKSxcblxuXHRcdFx0XHQvLyBVc2UgaW50ZWdlciBkaXJydW5zIGlmZiB0aGlzIGlzIHRoZSBvdXRlcm1vc3QgbWF0Y2hlclxuXHRcdFx0XHRkaXJydW5zVW5pcXVlID0gKCBkaXJydW5zICs9IGNvbnRleHRCYWNrdXAgPT0gbnVsbCA/IDEgOiBNYXRoLnJhbmRvbSgpIHx8IDAuMSApLFxuXHRcdFx0XHRsZW4gPSBlbGVtcy5sZW5ndGg7XG5cblx0XHRcdGlmICggb3V0ZXJtb3N0ICkge1xuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDExKywgRWRnZSAxNyAtIDE4K1xuXHRcdFx0XHQvLyBJRS9FZGdlIHNvbWV0aW1lcyB0aHJvdyBhIFwiUGVybWlzc2lvbiBkZW5pZWRcIiBlcnJvciB3aGVuIHN0cmljdC1jb21wYXJpbmdcblx0XHRcdFx0Ly8gdHdvIGRvY3VtZW50czsgc2hhbGxvdyBjb21wYXJpc29ucyB3b3JrLlxuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG5cdFx0XHRcdG91dGVybW9zdENvbnRleHQgPSBjb250ZXh0ID09IGRvY3VtZW50IHx8IGNvbnRleHQgfHwgb3V0ZXJtb3N0O1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBZGQgZWxlbWVudHMgcGFzc2luZyBlbGVtZW50TWF0Y2hlcnMgZGlyZWN0bHkgdG8gcmVzdWx0c1xuXHRcdFx0Ly8gU3VwcG9ydDogSUU8OSwgU2FmYXJpXG5cdFx0XHQvLyBUb2xlcmF0ZSBOb2RlTGlzdCBwcm9wZXJ0aWVzIChJRTogXCJsZW5ndGhcIjsgU2FmYXJpOiA8bnVtYmVyPikgbWF0Y2hpbmcgZWxlbWVudHMgYnkgaWRcblx0XHRcdGZvciAoIDsgaSAhPT0gbGVuICYmICggZWxlbSA9IGVsZW1zWyBpIF0gKSAhPSBudWxsOyBpKysgKSB7XG5cdFx0XHRcdGlmICggYnlFbGVtZW50ICYmIGVsZW0gKSB7XG5cdFx0XHRcdFx0aiA9IDA7XG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSAxMSssIEVkZ2UgMTcgLSAxOCtcblx0XHRcdFx0XHQvLyBJRS9FZGdlIHNvbWV0aW1lcyB0aHJvdyBhIFwiUGVybWlzc2lvbiBkZW5pZWRcIiBlcnJvciB3aGVuIHN0cmljdC1jb21wYXJpbmdcblx0XHRcdFx0XHQvLyB0d28gZG9jdW1lbnRzOyBzaGFsbG93IGNvbXBhcmlzb25zIHdvcmsuXG5cdFx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVxZXFlcVxuXHRcdFx0XHRcdGlmICggIWNvbnRleHQgJiYgZWxlbS5vd25lckRvY3VtZW50ICE9IGRvY3VtZW50ICkge1xuXHRcdFx0XHRcdFx0c2V0RG9jdW1lbnQoIGVsZW0gKTtcblx0XHRcdFx0XHRcdHhtbCA9ICFkb2N1bWVudElzSFRNTDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0d2hpbGUgKCAoIG1hdGNoZXIgPSBlbGVtZW50TWF0Y2hlcnNbIGorKyBdICkgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQgfHwgZG9jdW1lbnQsIHhtbCApICkge1xuXHRcdFx0XHRcdFx0XHRyZXN1bHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICggb3V0ZXJtb3N0ICkge1xuXHRcdFx0XHRcdFx0ZGlycnVucyA9IGRpcnJ1bnNVbmlxdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gVHJhY2sgdW5tYXRjaGVkIGVsZW1lbnRzIGZvciBzZXQgZmlsdGVyc1xuXHRcdFx0XHRpZiAoIGJ5U2V0ICkge1xuXG5cdFx0XHRcdFx0Ly8gVGhleSB3aWxsIGhhdmUgZ29uZSB0aHJvdWdoIGFsbCBwb3NzaWJsZSBtYXRjaGVyc1xuXHRcdFx0XHRcdGlmICggKCBlbGVtID0gIW1hdGNoZXIgJiYgZWxlbSApICkge1xuXHRcdFx0XHRcdFx0bWF0Y2hlZENvdW50LS07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gTGVuZ3RoZW4gdGhlIGFycmF5IGZvciBldmVyeSBlbGVtZW50LCBtYXRjaGVkIG9yIG5vdFxuXHRcdFx0XHRcdGlmICggc2VlZCApIHtcblx0XHRcdFx0XHRcdHVubWF0Y2hlZC5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIGBpYCBpcyBub3cgdGhlIGNvdW50IG9mIGVsZW1lbnRzIHZpc2l0ZWQgYWJvdmUsIGFuZCBhZGRpbmcgaXQgdG8gYG1hdGNoZWRDb3VudGBcblx0XHRcdC8vIG1ha2VzIHRoZSBsYXR0ZXIgbm9ubmVnYXRpdmUuXG5cdFx0XHRtYXRjaGVkQ291bnQgKz0gaTtcblxuXHRcdFx0Ly8gQXBwbHkgc2V0IGZpbHRlcnMgdG8gdW5tYXRjaGVkIGVsZW1lbnRzXG5cdFx0XHQvLyBOT1RFOiBUaGlzIGNhbiBiZSBza2lwcGVkIGlmIHRoZXJlIGFyZSBubyB1bm1hdGNoZWQgZWxlbWVudHMgKGkuZS4sIGBtYXRjaGVkQ291bnRgXG5cdFx0XHQvLyBlcXVhbHMgYGlgKSwgdW5sZXNzIHdlIGRpZG4ndCB2aXNpdCBfYW55XyBlbGVtZW50cyBpbiB0aGUgYWJvdmUgbG9vcCBiZWNhdXNlIHdlIGhhdmVcblx0XHRcdC8vIG5vIGVsZW1lbnQgbWF0Y2hlcnMgYW5kIG5vIHNlZWQuXG5cdFx0XHQvLyBJbmNyZW1lbnRpbmcgYW4gaW5pdGlhbGx5LXN0cmluZyBcIjBcIiBgaWAgYWxsb3dzIGBpYCB0byByZW1haW4gYSBzdHJpbmcgb25seSBpbiB0aGF0XG5cdFx0XHQvLyBjYXNlLCB3aGljaCB3aWxsIHJlc3VsdCBpbiBhIFwiMDBcIiBgbWF0Y2hlZENvdW50YCB0aGF0IGRpZmZlcnMgZnJvbSBgaWAgYnV0IGlzIGFsc29cblx0XHRcdC8vIG51bWVyaWNhbGx5IHplcm8uXG5cdFx0XHRpZiAoIGJ5U2V0ICYmIGkgIT09IG1hdGNoZWRDb3VudCApIHtcblx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdHdoaWxlICggKCBtYXRjaGVyID0gc2V0TWF0Y2hlcnNbIGorKyBdICkgKSB7XG5cdFx0XHRcdFx0bWF0Y2hlciggdW5tYXRjaGVkLCBzZXRNYXRjaGVkLCBjb250ZXh0LCB4bWwgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICggc2VlZCApIHtcblxuXHRcdFx0XHRcdC8vIFJlaW50ZWdyYXRlIGVsZW1lbnQgbWF0Y2hlcyB0byBlbGltaW5hdGUgdGhlIG5lZWQgZm9yIHNvcnRpbmdcblx0XHRcdFx0XHRpZiAoIG1hdGNoZWRDb3VudCA+IDAgKSB7XG5cdFx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdFx0aWYgKCAhKCB1bm1hdGNoZWRbIGkgXSB8fCBzZXRNYXRjaGVkWyBpIF0gKSApIHtcblx0XHRcdFx0XHRcdFx0XHRzZXRNYXRjaGVkWyBpIF0gPSBwb3AuY2FsbCggcmVzdWx0cyApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gRGlzY2FyZCBpbmRleCBwbGFjZWhvbGRlciB2YWx1ZXMgdG8gZ2V0IG9ubHkgYWN0dWFsIG1hdGNoZXNcblx0XHRcdFx0XHRzZXRNYXRjaGVkID0gY29uZGVuc2UoIHNldE1hdGNoZWQgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEFkZCBtYXRjaGVzIHRvIHJlc3VsdHNcblx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgc2V0TWF0Y2hlZCApO1xuXG5cdFx0XHRcdC8vIFNlZWRsZXNzIHNldCBtYXRjaGVzIHN1Y2NlZWRpbmcgbXVsdGlwbGUgc3VjY2Vzc2Z1bCBtYXRjaGVycyBzdGlwdWxhdGUgc29ydGluZ1xuXHRcdFx0XHRpZiAoIG91dGVybW9zdCAmJiAhc2VlZCAmJiBzZXRNYXRjaGVkLmxlbmd0aCA+IDAgJiZcblx0XHRcdFx0XHQoIG1hdGNoZWRDb3VudCArIHNldE1hdGNoZXJzLmxlbmd0aCApID4gMSApIHtcblxuXHRcdFx0XHRcdFNpenpsZS51bmlxdWVTb3J0KCByZXN1bHRzICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gT3ZlcnJpZGUgbWFuaXB1bGF0aW9uIG9mIGdsb2JhbHMgYnkgbmVzdGVkIG1hdGNoZXJzXG5cdFx0XHRpZiAoIG91dGVybW9zdCApIHtcblx0XHRcdFx0ZGlycnVucyA9IGRpcnJ1bnNVbmlxdWU7XG5cdFx0XHRcdG91dGVybW9zdENvbnRleHQgPSBjb250ZXh0QmFja3VwO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdW5tYXRjaGVkO1xuXHRcdH07XG5cblx0cmV0dXJuIGJ5U2V0ID9cblx0XHRtYXJrRnVuY3Rpb24oIHN1cGVyTWF0Y2hlciApIDpcblx0XHRzdXBlck1hdGNoZXI7XG59XG5cbmNvbXBpbGUgPSBTaXp6bGUuY29tcGlsZSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgbWF0Y2ggLyogSW50ZXJuYWwgVXNlIE9ubHkgKi8gKSB7XG5cdHZhciBpLFxuXHRcdHNldE1hdGNoZXJzID0gW10sXG5cdFx0ZWxlbWVudE1hdGNoZXJzID0gW10sXG5cdFx0Y2FjaGVkID0gY29tcGlsZXJDYWNoZVsgc2VsZWN0b3IgKyBcIiBcIiBdO1xuXG5cdGlmICggIWNhY2hlZCApIHtcblxuXHRcdC8vIEdlbmVyYXRlIGEgZnVuY3Rpb24gb2YgcmVjdXJzaXZlIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHRvIGNoZWNrIGVhY2ggZWxlbWVudFxuXHRcdGlmICggIW1hdGNoICkge1xuXHRcdFx0bWF0Y2ggPSB0b2tlbml6ZSggc2VsZWN0b3IgKTtcblx0XHR9XG5cdFx0aSA9IG1hdGNoLmxlbmd0aDtcblx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdGNhY2hlZCA9IG1hdGNoZXJGcm9tVG9rZW5zKCBtYXRjaFsgaSBdICk7XG5cdFx0XHRpZiAoIGNhY2hlZFsgZXhwYW5kbyBdICkge1xuXHRcdFx0XHRzZXRNYXRjaGVycy5wdXNoKCBjYWNoZWQgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGVsZW1lbnRNYXRjaGVycy5wdXNoKCBjYWNoZWQgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDYWNoZSB0aGUgY29tcGlsZWQgZnVuY3Rpb25cblx0XHRjYWNoZWQgPSBjb21waWxlckNhY2hlKFxuXHRcdFx0c2VsZWN0b3IsXG5cdFx0XHRtYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMoIGVsZW1lbnRNYXRjaGVycywgc2V0TWF0Y2hlcnMgKVxuXHRcdCk7XG5cblx0XHQvLyBTYXZlIHNlbGVjdG9yIGFuZCB0b2tlbml6YXRpb25cblx0XHRjYWNoZWQuc2VsZWN0b3IgPSBzZWxlY3Rvcjtcblx0fVxuXHRyZXR1cm4gY2FjaGVkO1xufTtcblxuLyoqXG4gKiBBIGxvdy1sZXZlbCBzZWxlY3Rpb24gZnVuY3Rpb24gdGhhdCB3b3JrcyB3aXRoIFNpenpsZSdzIGNvbXBpbGVkXG4gKiAgc2VsZWN0b3IgZnVuY3Rpb25zXG4gKiBAcGFyYW0ge1N0cmluZ3xGdW5jdGlvbn0gc2VsZWN0b3IgQSBzZWxlY3RvciBvciBhIHByZS1jb21waWxlZFxuICogIHNlbGVjdG9yIGZ1bmN0aW9uIGJ1aWx0IHdpdGggU2l6emxlLmNvbXBpbGVcbiAqIEBwYXJhbSB7RWxlbWVudH0gY29udGV4dFxuICogQHBhcmFtIHtBcnJheX0gW3Jlc3VsdHNdXG4gKiBAcGFyYW0ge0FycmF5fSBbc2VlZF0gQSBzZXQgb2YgZWxlbWVudHMgdG8gbWF0Y2ggYWdhaW5zdFxuICovXG5zZWxlY3QgPSBTaXp6bGUuc2VsZWN0ID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0LCByZXN1bHRzLCBzZWVkICkge1xuXHR2YXIgaSwgdG9rZW5zLCB0b2tlbiwgdHlwZSwgZmluZCxcblx0XHRjb21waWxlZCA9IHR5cGVvZiBzZWxlY3RvciA9PT0gXCJmdW5jdGlvblwiICYmIHNlbGVjdG9yLFxuXHRcdG1hdGNoID0gIXNlZWQgJiYgdG9rZW5pemUoICggc2VsZWN0b3IgPSBjb21waWxlZC5zZWxlY3RvciB8fCBzZWxlY3RvciApICk7XG5cblx0cmVzdWx0cyA9IHJlc3VsdHMgfHwgW107XG5cblx0Ly8gVHJ5IHRvIG1pbmltaXplIG9wZXJhdGlvbnMgaWYgdGhlcmUgaXMgb25seSBvbmUgc2VsZWN0b3IgaW4gdGhlIGxpc3QgYW5kIG5vIHNlZWRcblx0Ly8gKHRoZSBsYXR0ZXIgb2Ygd2hpY2ggZ3VhcmFudGVlcyB1cyBjb250ZXh0KVxuXHRpZiAoIG1hdGNoLmxlbmd0aCA9PT0gMSApIHtcblxuXHRcdC8vIFJlZHVjZSBjb250ZXh0IGlmIHRoZSBsZWFkaW5nIGNvbXBvdW5kIHNlbGVjdG9yIGlzIGFuIElEXG5cdFx0dG9rZW5zID0gbWF0Y2hbIDAgXSA9IG1hdGNoWyAwIF0uc2xpY2UoIDAgKTtcblx0XHRpZiAoIHRva2Vucy5sZW5ndGggPiAyICYmICggdG9rZW4gPSB0b2tlbnNbIDAgXSApLnR5cGUgPT09IFwiSURcIiAmJlxuXHRcdFx0Y29udGV4dC5ub2RlVHlwZSA9PT0gOSAmJiBkb2N1bWVudElzSFRNTCAmJiBFeHByLnJlbGF0aXZlWyB0b2tlbnNbIDEgXS50eXBlIF0gKSB7XG5cblx0XHRcdGNvbnRleHQgPSAoIEV4cHIuZmluZFsgXCJJRFwiIF0oIHRva2VuLm1hdGNoZXNbIDAgXVxuXHRcdFx0XHQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKSwgY29udGV4dCApIHx8IFtdIClbIDAgXTtcblx0XHRcdGlmICggIWNvbnRleHQgKSB7XG5cdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXG5cdFx0XHQvLyBQcmVjb21waWxlZCBtYXRjaGVycyB3aWxsIHN0aWxsIHZlcmlmeSBhbmNlc3RyeSwgc28gc3RlcCB1cCBhIGxldmVsXG5cdFx0XHR9IGVsc2UgaWYgKCBjb21waWxlZCApIHtcblx0XHRcdFx0Y29udGV4dCA9IGNvbnRleHQucGFyZW50Tm9kZTtcblx0XHRcdH1cblxuXHRcdFx0c2VsZWN0b3IgPSBzZWxlY3Rvci5zbGljZSggdG9rZW5zLnNoaWZ0KCkudmFsdWUubGVuZ3RoICk7XG5cdFx0fVxuXG5cdFx0Ly8gRmV0Y2ggYSBzZWVkIHNldCBmb3IgcmlnaHQtdG8tbGVmdCBtYXRjaGluZ1xuXHRcdGkgPSBtYXRjaEV4cHJbIFwibmVlZHNDb250ZXh0XCIgXS50ZXN0KCBzZWxlY3RvciApID8gMCA6IHRva2Vucy5sZW5ndGg7XG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHR0b2tlbiA9IHRva2Vuc1sgaSBdO1xuXG5cdFx0XHQvLyBBYm9ydCBpZiB3ZSBoaXQgYSBjb21iaW5hdG9yXG5cdFx0XHRpZiAoIEV4cHIucmVsYXRpdmVbICggdHlwZSA9IHRva2VuLnR5cGUgKSBdICkge1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGlmICggKCBmaW5kID0gRXhwci5maW5kWyB0eXBlIF0gKSApIHtcblxuXHRcdFx0XHQvLyBTZWFyY2gsIGV4cGFuZGluZyBjb250ZXh0IGZvciBsZWFkaW5nIHNpYmxpbmcgY29tYmluYXRvcnNcblx0XHRcdFx0aWYgKCAoIHNlZWQgPSBmaW5kKFxuXHRcdFx0XHRcdHRva2VuLm1hdGNoZXNbIDAgXS5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLFxuXHRcdFx0XHRcdHJzaWJsaW5nLnRlc3QoIHRva2Vuc1sgMCBdLnR5cGUgKSAmJiB0ZXN0Q29udGV4dCggY29udGV4dC5wYXJlbnROb2RlICkgfHxcblx0XHRcdFx0XHRcdGNvbnRleHRcblx0XHRcdFx0KSApICkge1xuXG5cdFx0XHRcdFx0Ly8gSWYgc2VlZCBpcyBlbXB0eSBvciBubyB0b2tlbnMgcmVtYWluLCB3ZSBjYW4gcmV0dXJuIGVhcmx5XG5cdFx0XHRcdFx0dG9rZW5zLnNwbGljZSggaSwgMSApO1xuXHRcdFx0XHRcdHNlbGVjdG9yID0gc2VlZC5sZW5ndGggJiYgdG9TZWxlY3RvciggdG9rZW5zICk7XG5cdFx0XHRcdFx0aWYgKCAhc2VsZWN0b3IgKSB7XG5cdFx0XHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBzZWVkICk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIENvbXBpbGUgYW5kIGV4ZWN1dGUgYSBmaWx0ZXJpbmcgZnVuY3Rpb24gaWYgb25lIGlzIG5vdCBwcm92aWRlZFxuXHQvLyBQcm92aWRlIGBtYXRjaGAgdG8gYXZvaWQgcmV0b2tlbml6YXRpb24gaWYgd2UgbW9kaWZpZWQgdGhlIHNlbGVjdG9yIGFib3ZlXG5cdCggY29tcGlsZWQgfHwgY29tcGlsZSggc2VsZWN0b3IsIG1hdGNoICkgKShcblx0XHRzZWVkLFxuXHRcdGNvbnRleHQsXG5cdFx0IWRvY3VtZW50SXNIVE1MLFxuXHRcdHJlc3VsdHMsXG5cdFx0IWNvbnRleHQgfHwgcnNpYmxpbmcudGVzdCggc2VsZWN0b3IgKSAmJiB0ZXN0Q29udGV4dCggY29udGV4dC5wYXJlbnROb2RlICkgfHwgY29udGV4dFxuXHQpO1xuXHRyZXR1cm4gcmVzdWx0cztcbn07XG5cbi8vIE9uZS10aW1lIGFzc2lnbm1lbnRzXG5cbi8vIFNvcnQgc3RhYmlsaXR5XG5zdXBwb3J0LnNvcnRTdGFibGUgPSBleHBhbmRvLnNwbGl0KCBcIlwiICkuc29ydCggc29ydE9yZGVyICkuam9pbiggXCJcIiApID09PSBleHBhbmRvO1xuXG4vLyBTdXBwb3J0OiBDaHJvbWUgMTQtMzUrXG4vLyBBbHdheXMgYXNzdW1lIGR1cGxpY2F0ZXMgaWYgdGhleSBhcmVuJ3QgcGFzc2VkIHRvIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9uXG5zdXBwb3J0LmRldGVjdER1cGxpY2F0ZXMgPSAhIWhhc0R1cGxpY2F0ZTtcblxuLy8gSW5pdGlhbGl6ZSBhZ2FpbnN0IHRoZSBkZWZhdWx0IGRvY3VtZW50XG5zZXREb2N1bWVudCgpO1xuXG4vLyBTdXBwb3J0OiBXZWJraXQ8NTM3LjMyIC0gU2FmYXJpIDYuMC4zL0Nocm9tZSAyNSAoZml4ZWQgaW4gQ2hyb21lIDI3KVxuLy8gRGV0YWNoZWQgbm9kZXMgY29uZm91bmRpbmdseSBmb2xsb3cgKmVhY2ggb3RoZXIqXG5zdXBwb3J0LnNvcnREZXRhY2hlZCA9IGFzc2VydCggZnVuY3Rpb24oIGVsICkge1xuXG5cdC8vIFNob3VsZCByZXR1cm4gMSwgYnV0IHJldHVybnMgNCAoZm9sbG93aW5nKVxuXHRyZXR1cm4gZWwuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiZmllbGRzZXRcIiApICkgJiAxO1xufSApO1xuXG4vLyBTdXBwb3J0OiBJRTw4XG4vLyBQcmV2ZW50IGF0dHJpYnV0ZS9wcm9wZXJ0eSBcImludGVycG9sYXRpb25cIlxuLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczUzNjQyOSUyOFZTLjg1JTI5LmFzcHhcbmlmICggIWFzc2VydCggZnVuY3Rpb24oIGVsICkge1xuXHRlbC5pbm5lckhUTUwgPSBcIjxhIGhyZWY9JyMnPjwvYT5cIjtcblx0cmV0dXJuIGVsLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCBcImhyZWZcIiApID09PSBcIiNcIjtcbn0gKSApIHtcblx0YWRkSGFuZGxlKCBcInR5cGV8aHJlZnxoZWlnaHR8d2lkdGhcIiwgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkge1xuXHRcdGlmICggIWlzWE1MICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lLCBuYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwidHlwZVwiID8gMSA6IDIgKTtcblx0XHR9XG5cdH0gKTtcbn1cblxuLy8gU3VwcG9ydDogSUU8OVxuLy8gVXNlIGRlZmF1bHRWYWx1ZSBpbiBwbGFjZSBvZiBnZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiKVxuaWYgKCAhc3VwcG9ydC5hdHRyaWJ1dGVzIHx8ICFhc3NlcnQoIGZ1bmN0aW9uKCBlbCApIHtcblx0ZWwuaW5uZXJIVE1MID0gXCI8aW5wdXQvPlwiO1xuXHRlbC5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSggXCJ2YWx1ZVwiLCBcIlwiICk7XG5cdHJldHVybiBlbC5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSggXCJ2YWx1ZVwiICkgPT09IFwiXCI7XG59ICkgKSB7XG5cdGFkZEhhbmRsZSggXCJ2YWx1ZVwiLCBmdW5jdGlvbiggZWxlbSwgX25hbWUsIGlzWE1MICkge1xuXHRcdGlmICggIWlzWE1MICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbnB1dFwiICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZGVmYXVsdFZhbHVlO1xuXHRcdH1cblx0fSApO1xufVxuXG4vLyBTdXBwb3J0OiBJRTw5XG4vLyBVc2UgZ2V0QXR0cmlidXRlTm9kZSB0byBmZXRjaCBib29sZWFucyB3aGVuIGdldEF0dHJpYnV0ZSBsaWVzXG5pZiAoICFhc3NlcnQoIGZ1bmN0aW9uKCBlbCApIHtcblx0cmV0dXJuIGVsLmdldEF0dHJpYnV0ZSggXCJkaXNhYmxlZFwiICkgPT0gbnVsbDtcbn0gKSApIHtcblx0YWRkSGFuZGxlKCBib29sZWFucywgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkge1xuXHRcdHZhciB2YWw7XG5cdFx0aWYgKCAhaXNYTUwgKSB7XG5cdFx0XHRyZXR1cm4gZWxlbVsgbmFtZSBdID09PSB0cnVlID8gbmFtZS50b0xvd2VyQ2FzZSgpIDpcblx0XHRcdFx0KCB2YWwgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoIG5hbWUgKSApICYmIHZhbC5zcGVjaWZpZWQgP1xuXHRcdFx0XHRcdHZhbC52YWx1ZSA6XG5cdFx0XHRcdFx0bnVsbDtcblx0XHR9XG5cdH0gKTtcbn1cblxucmV0dXJuIFNpenpsZTtcblxufSApKCB3aW5kb3cgKTtcblxuXG5cbmpRdWVyeS5maW5kID0gU2l6emxlO1xualF1ZXJ5LmV4cHIgPSBTaXp6bGUuc2VsZWN0b3JzO1xuXG4vLyBEZXByZWNhdGVkXG5qUXVlcnkuZXhwclsgXCI6XCIgXSA9IGpRdWVyeS5leHByLnBzZXVkb3M7XG5qUXVlcnkudW5pcXVlU29ydCA9IGpRdWVyeS51bmlxdWUgPSBTaXp6bGUudW5pcXVlU29ydDtcbmpRdWVyeS50ZXh0ID0gU2l6emxlLmdldFRleHQ7XG5qUXVlcnkuaXNYTUxEb2MgPSBTaXp6bGUuaXNYTUw7XG5qUXVlcnkuY29udGFpbnMgPSBTaXp6bGUuY29udGFpbnM7XG5qUXVlcnkuZXNjYXBlU2VsZWN0b3IgPSBTaXp6bGUuZXNjYXBlO1xuXG5cblxuXG52YXIgZGlyID0gZnVuY3Rpb24oIGVsZW0sIGRpciwgdW50aWwgKSB7XG5cdHZhciBtYXRjaGVkID0gW10sXG5cdFx0dHJ1bmNhdGUgPSB1bnRpbCAhPT0gdW5kZWZpbmVkO1xuXG5cdHdoaWxlICggKCBlbGVtID0gZWxlbVsgZGlyIF0gKSAmJiBlbGVtLm5vZGVUeXBlICE9PSA5ICkge1xuXHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdGlmICggdHJ1bmNhdGUgJiYgalF1ZXJ5KCBlbGVtICkuaXMoIHVudGlsICkgKSB7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0bWF0Y2hlZC5wdXNoKCBlbGVtICk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBtYXRjaGVkO1xufTtcblxuXG52YXIgc2libGluZ3MgPSBmdW5jdGlvbiggbiwgZWxlbSApIHtcblx0dmFyIG1hdGNoZWQgPSBbXTtcblxuXHRmb3IgKCA7IG47IG4gPSBuLm5leHRTaWJsaW5nICkge1xuXHRcdGlmICggbi5ub2RlVHlwZSA9PT0gMSAmJiBuICE9PSBlbGVtICkge1xuXHRcdFx0bWF0Y2hlZC5wdXNoKCBuICk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG1hdGNoZWQ7XG59O1xuXG5cbnZhciBybmVlZHNDb250ZXh0ID0galF1ZXJ5LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0O1xuXG5cblxuZnVuY3Rpb24gbm9kZU5hbWUoIGVsZW0sIG5hbWUgKSB7XG5cblx0cmV0dXJuIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lLnRvTG93ZXJDYXNlKCk7XG5cbn1cbnZhciByc2luZ2xlVGFnID0gKCAvXjwoW2Etel1bXlxcL1xcMD46XFx4MjBcXHRcXHJcXG5cXGZdKilbXFx4MjBcXHRcXHJcXG5cXGZdKlxcLz8+KD86PFxcL1xcMT58KSQvaSApO1xuXG5cblxuLy8gSW1wbGVtZW50IHRoZSBpZGVudGljYWwgZnVuY3Rpb25hbGl0eSBmb3IgZmlsdGVyIGFuZCBub3RcbmZ1bmN0aW9uIHdpbm5vdyggZWxlbWVudHMsIHF1YWxpZmllciwgbm90ICkge1xuXHRpZiAoIGlzRnVuY3Rpb24oIHF1YWxpZmllciApICkge1xuXHRcdHJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtLCBpICkge1xuXHRcdFx0cmV0dXJuICEhcXVhbGlmaWVyLmNhbGwoIGVsZW0sIGksIGVsZW0gKSAhPT0gbm90O1xuXHRcdH0gKTtcblx0fVxuXG5cdC8vIFNpbmdsZSBlbGVtZW50XG5cdGlmICggcXVhbGlmaWVyLm5vZGVUeXBlICkge1xuXHRcdHJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuICggZWxlbSA9PT0gcXVhbGlmaWVyICkgIT09IG5vdDtcblx0XHR9ICk7XG5cdH1cblxuXHQvLyBBcnJheWxpa2Ugb2YgZWxlbWVudHMgKGpRdWVyeSwgYXJndW1lbnRzLCBBcnJheSlcblx0aWYgKCB0eXBlb2YgcXVhbGlmaWVyICE9PSBcInN0cmluZ1wiICkge1xuXHRcdHJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuICggaW5kZXhPZi5jYWxsKCBxdWFsaWZpZXIsIGVsZW0gKSA+IC0xICkgIT09IG5vdDtcblx0XHR9ICk7XG5cdH1cblxuXHQvLyBGaWx0ZXJlZCBkaXJlY3RseSBmb3IgYm90aCBzaW1wbGUgYW5kIGNvbXBsZXggc2VsZWN0b3JzXG5cdHJldHVybiBqUXVlcnkuZmlsdGVyKCBxdWFsaWZpZXIsIGVsZW1lbnRzLCBub3QgKTtcbn1cblxualF1ZXJ5LmZpbHRlciA9IGZ1bmN0aW9uKCBleHByLCBlbGVtcywgbm90ICkge1xuXHR2YXIgZWxlbSA9IGVsZW1zWyAwIF07XG5cblx0aWYgKCBub3QgKSB7XG5cdFx0ZXhwciA9IFwiOm5vdChcIiArIGV4cHIgKyBcIilcIjtcblx0fVxuXG5cdGlmICggZWxlbXMubGVuZ3RoID09PSAxICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggZWxlbSwgZXhwciApID8gWyBlbGVtIF0gOiBbXTtcblx0fVxuXG5cdHJldHVybiBqUXVlcnkuZmluZC5tYXRjaGVzKCBleHByLCBqUXVlcnkuZ3JlcCggZWxlbXMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBlbGVtLm5vZGVUeXBlID09PSAxO1xuXHR9ICkgKTtcbn07XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0ZmluZDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHZhciBpLCByZXQsXG5cdFx0XHRsZW4gPSB0aGlzLmxlbmd0aCxcblx0XHRcdHNlbGYgPSB0aGlzO1xuXG5cdFx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGpRdWVyeSggc2VsZWN0b3IgKS5maWx0ZXIoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0XHRcdGlmICggalF1ZXJ5LmNvbnRhaW5zKCBzZWxmWyBpIF0sIHRoaXMgKSApIHtcblx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSApICk7XG5cdFx0fVxuXG5cdFx0cmV0ID0gdGhpcy5wdXNoU3RhY2soIFtdICk7XG5cblx0XHRmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0alF1ZXJ5LmZpbmQoIHNlbGVjdG9yLCBzZWxmWyBpIF0sIHJldCApO1xuXHRcdH1cblxuXHRcdHJldHVybiBsZW4gPiAxID8galF1ZXJ5LnVuaXF1ZVNvcnQoIHJldCApIDogcmV0O1xuXHR9LFxuXHRmaWx0ZXI6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHdpbm5vdyggdGhpcywgc2VsZWN0b3IgfHwgW10sIGZhbHNlICkgKTtcblx0fSxcblx0bm90OiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCB3aW5ub3coIHRoaXMsIHNlbGVjdG9yIHx8IFtdLCB0cnVlICkgKTtcblx0fSxcblx0aXM6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gISF3aW5ub3coXG5cdFx0XHR0aGlzLFxuXG5cdFx0XHQvLyBJZiB0aGlzIGlzIGEgcG9zaXRpb25hbC9yZWxhdGl2ZSBzZWxlY3RvciwgY2hlY2sgbWVtYmVyc2hpcCBpbiB0aGUgcmV0dXJuZWQgc2V0XG5cdFx0XHQvLyBzbyAkKFwicDpmaXJzdFwiKS5pcyhcInA6bGFzdFwiKSB3b24ndCByZXR1cm4gdHJ1ZSBmb3IgYSBkb2Mgd2l0aCB0d28gXCJwXCIuXG5cdFx0XHR0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIgJiYgcm5lZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvciApID9cblx0XHRcdFx0alF1ZXJ5KCBzZWxlY3RvciApIDpcblx0XHRcdFx0c2VsZWN0b3IgfHwgW10sXG5cdFx0XHRmYWxzZVxuXHRcdCkubGVuZ3RoO1xuXHR9XG59ICk7XG5cblxuLy8gSW5pdGlhbGl6ZSBhIGpRdWVyeSBvYmplY3RcblxuXG4vLyBBIGNlbnRyYWwgcmVmZXJlbmNlIHRvIHRoZSByb290IGpRdWVyeShkb2N1bWVudClcbnZhciByb290alF1ZXJ5LFxuXG5cdC8vIEEgc2ltcGxlIHdheSB0byBjaGVjayBmb3IgSFRNTCBzdHJpbmdzXG5cdC8vIFByaW9yaXRpemUgI2lkIG92ZXIgPHRhZz4gdG8gYXZvaWQgWFNTIHZpYSBsb2NhdGlvbi5oYXNoICh0cmFjLTk1MjEpXG5cdC8vIFN0cmljdCBIVE1MIHJlY29nbml0aW9uICh0cmFjLTExMjkwOiBtdXN0IHN0YXJ0IHdpdGggPClcblx0Ly8gU2hvcnRjdXQgc2ltcGxlICNpZCBjYXNlIGZvciBzcGVlZFxuXHRycXVpY2tFeHByID0gL14oPzpcXHMqKDxbXFx3XFxXXSs+KVtePl0qfCMoW1xcdy1dKykpJC8sXG5cblx0aW5pdCA9IGpRdWVyeS5mbi5pbml0ID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0LCByb290ICkge1xuXHRcdHZhciBtYXRjaCwgZWxlbTtcblxuXHRcdC8vIEhBTkRMRTogJChcIlwiKSwgJChudWxsKSwgJCh1bmRlZmluZWQpLCAkKGZhbHNlKVxuXHRcdGlmICggIXNlbGVjdG9yICkge1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXG5cdFx0Ly8gTWV0aG9kIGluaXQoKSBhY2NlcHRzIGFuIGFsdGVybmF0ZSByb290alF1ZXJ5XG5cdFx0Ly8gc28gbWlncmF0ZSBjYW4gc3VwcG9ydCBqUXVlcnkuc3ViIChnaC0yMTAxKVxuXHRcdHJvb3QgPSByb290IHx8IHJvb3RqUXVlcnk7XG5cblx0XHQvLyBIYW5kbGUgSFRNTCBzdHJpbmdzXG5cdFx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRpZiAoIHNlbGVjdG9yWyAwIF0gPT09IFwiPFwiICYmXG5cdFx0XHRcdHNlbGVjdG9yWyBzZWxlY3Rvci5sZW5ndGggLSAxIF0gPT09IFwiPlwiICYmXG5cdFx0XHRcdHNlbGVjdG9yLmxlbmd0aCA+PSAzICkge1xuXG5cdFx0XHRcdC8vIEFzc3VtZSB0aGF0IHN0cmluZ3MgdGhhdCBzdGFydCBhbmQgZW5kIHdpdGggPD4gYXJlIEhUTUwgYW5kIHNraXAgdGhlIHJlZ2V4IGNoZWNrXG5cdFx0XHRcdG1hdGNoID0gWyBudWxsLCBzZWxlY3RvciwgbnVsbCBdO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRtYXRjaCA9IHJxdWlja0V4cHIuZXhlYyggc2VsZWN0b3IgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTWF0Y2ggaHRtbCBvciBtYWtlIHN1cmUgbm8gY29udGV4dCBpcyBzcGVjaWZpZWQgZm9yICNpZFxuXHRcdFx0aWYgKCBtYXRjaCAmJiAoIG1hdGNoWyAxIF0gfHwgIWNvbnRleHQgKSApIHtcblxuXHRcdFx0XHQvLyBIQU5ETEU6ICQoaHRtbCkgLT4gJChhcnJheSlcblx0XHRcdFx0aWYgKCBtYXRjaFsgMSBdICkge1xuXHRcdFx0XHRcdGNvbnRleHQgPSBjb250ZXh0IGluc3RhbmNlb2YgalF1ZXJ5ID8gY29udGV4dFsgMCBdIDogY29udGV4dDtcblxuXHRcdFx0XHRcdC8vIE9wdGlvbiB0byBydW4gc2NyaXB0cyBpcyB0cnVlIGZvciBiYWNrLWNvbXBhdFxuXHRcdFx0XHRcdC8vIEludGVudGlvbmFsbHkgbGV0IHRoZSBlcnJvciBiZSB0aHJvd24gaWYgcGFyc2VIVE1MIGlzIG5vdCBwcmVzZW50XG5cdFx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCB0aGlzLCBqUXVlcnkucGFyc2VIVE1MKFxuXHRcdFx0XHRcdFx0bWF0Y2hbIDEgXSxcblx0XHRcdFx0XHRcdGNvbnRleHQgJiYgY29udGV4dC5ub2RlVHlwZSA/IGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0IDogZG9jdW1lbnQsXG5cdFx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdFx0KSApO1xuXG5cdFx0XHRcdFx0Ly8gSEFORExFOiAkKGh0bWwsIHByb3BzKVxuXHRcdFx0XHRcdGlmICggcnNpbmdsZVRhZy50ZXN0KCBtYXRjaFsgMSBdICkgJiYgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNvbnRleHQgKSApIHtcblx0XHRcdFx0XHRcdGZvciAoIG1hdGNoIGluIGNvbnRleHQgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gUHJvcGVydGllcyBvZiBjb250ZXh0IGFyZSBjYWxsZWQgYXMgbWV0aG9kcyBpZiBwb3NzaWJsZVxuXHRcdFx0XHRcdFx0XHRpZiAoIGlzRnVuY3Rpb24oIHRoaXNbIG1hdGNoIF0gKSApIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzWyBtYXRjaCBdKCBjb250ZXh0WyBtYXRjaCBdICk7XG5cblx0XHRcdFx0XHRcdFx0Ly8gLi4uYW5kIG90aGVyd2lzZSBzZXQgYXMgYXR0cmlidXRlc1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuYXR0ciggbWF0Y2gsIGNvbnRleHRbIG1hdGNoIF0gKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXG5cdFx0XHRcdC8vIEhBTkRMRTogJCgjaWQpXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCBtYXRjaFsgMiBdICk7XG5cblx0XHRcdFx0XHRpZiAoIGVsZW0gKSB7XG5cblx0XHRcdFx0XHRcdC8vIEluamVjdCB0aGUgZWxlbWVudCBkaXJlY3RseSBpbnRvIHRoZSBqUXVlcnkgb2JqZWN0XG5cdFx0XHRcdFx0XHR0aGlzWyAwIF0gPSBlbGVtO1xuXHRcdFx0XHRcdFx0dGhpcy5sZW5ndGggPSAxO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fVxuXG5cdFx0XHQvLyBIQU5ETEU6ICQoZXhwciwgJCguLi4pKVxuXHRcdFx0fSBlbHNlIGlmICggIWNvbnRleHQgfHwgY29udGV4dC5qcXVlcnkgKSB7XG5cdFx0XHRcdHJldHVybiAoIGNvbnRleHQgfHwgcm9vdCApLmZpbmQoIHNlbGVjdG9yICk7XG5cblx0XHRcdC8vIEhBTkRMRTogJChleHByLCBjb250ZXh0KVxuXHRcdFx0Ly8gKHdoaWNoIGlzIGp1c3QgZXF1aXZhbGVudCB0bzogJChjb250ZXh0KS5maW5kKGV4cHIpXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5jb25zdHJ1Y3RvciggY29udGV4dCApLmZpbmQoIHNlbGVjdG9yICk7XG5cdFx0XHR9XG5cblx0XHQvLyBIQU5ETEU6ICQoRE9NRWxlbWVudClcblx0XHR9IGVsc2UgaWYgKCBzZWxlY3Rvci5ub2RlVHlwZSApIHtcblx0XHRcdHRoaXNbIDAgXSA9IHNlbGVjdG9yO1xuXHRcdFx0dGhpcy5sZW5ndGggPSAxO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cblx0XHQvLyBIQU5ETEU6ICQoZnVuY3Rpb24pXG5cdFx0Ly8gU2hvcnRjdXQgZm9yIGRvY3VtZW50IHJlYWR5XG5cdFx0fSBlbHNlIGlmICggaXNGdW5jdGlvbiggc2VsZWN0b3IgKSApIHtcblx0XHRcdHJldHVybiByb290LnJlYWR5ICE9PSB1bmRlZmluZWQgP1xuXHRcdFx0XHRyb290LnJlYWR5KCBzZWxlY3RvciApIDpcblxuXHRcdFx0XHQvLyBFeGVjdXRlIGltbWVkaWF0ZWx5IGlmIHJlYWR5IGlzIG5vdCBwcmVzZW50XG5cdFx0XHRcdHNlbGVjdG9yKCBqUXVlcnkgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4galF1ZXJ5Lm1ha2VBcnJheSggc2VsZWN0b3IsIHRoaXMgKTtcblx0fTtcblxuLy8gR2l2ZSB0aGUgaW5pdCBmdW5jdGlvbiB0aGUgalF1ZXJ5IHByb3RvdHlwZSBmb3IgbGF0ZXIgaW5zdGFudGlhdGlvblxuaW5pdC5wcm90b3R5cGUgPSBqUXVlcnkuZm47XG5cbi8vIEluaXRpYWxpemUgY2VudHJhbCByZWZlcmVuY2VcbnJvb3RqUXVlcnkgPSBqUXVlcnkoIGRvY3VtZW50ICk7XG5cblxudmFyIHJwYXJlbnRzcHJldiA9IC9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLFxuXG5cdC8vIE1ldGhvZHMgZ3VhcmFudGVlZCB0byBwcm9kdWNlIGEgdW5pcXVlIHNldCB3aGVuIHN0YXJ0aW5nIGZyb20gYSB1bmlxdWUgc2V0XG5cdGd1YXJhbnRlZWRVbmlxdWUgPSB7XG5cdFx0Y2hpbGRyZW46IHRydWUsXG5cdFx0Y29udGVudHM6IHRydWUsXG5cdFx0bmV4dDogdHJ1ZSxcblx0XHRwcmV2OiB0cnVlXG5cdH07XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0aGFzOiBmdW5jdGlvbiggdGFyZ2V0ICkge1xuXHRcdHZhciB0YXJnZXRzID0galF1ZXJ5KCB0YXJnZXQsIHRoaXMgKSxcblx0XHRcdGwgPSB0YXJnZXRzLmxlbmd0aDtcblxuXHRcdHJldHVybiB0aGlzLmZpbHRlciggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgaSA9IDA7XG5cdFx0XHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdGlmICggalF1ZXJ5LmNvbnRhaW5zKCB0aGlzLCB0YXJnZXRzWyBpIF0gKSApIHtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRjbG9zZXN0OiBmdW5jdGlvbiggc2VsZWN0b3JzLCBjb250ZXh0ICkge1xuXHRcdHZhciBjdXIsXG5cdFx0XHRpID0gMCxcblx0XHRcdGwgPSB0aGlzLmxlbmd0aCxcblx0XHRcdG1hdGNoZWQgPSBbXSxcblx0XHRcdHRhcmdldHMgPSB0eXBlb2Ygc2VsZWN0b3JzICE9PSBcInN0cmluZ1wiICYmIGpRdWVyeSggc2VsZWN0b3JzICk7XG5cblx0XHQvLyBQb3NpdGlvbmFsIHNlbGVjdG9ycyBuZXZlciBtYXRjaCwgc2luY2UgdGhlcmUncyBubyBfc2VsZWN0aW9uXyBjb250ZXh0XG5cdFx0aWYgKCAhcm5lZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvcnMgKSApIHtcblx0XHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0Zm9yICggY3VyID0gdGhpc1sgaSBdOyBjdXIgJiYgY3VyICE9PSBjb250ZXh0OyBjdXIgPSBjdXIucGFyZW50Tm9kZSApIHtcblxuXHRcdFx0XHRcdC8vIEFsd2F5cyBza2lwIGRvY3VtZW50IGZyYWdtZW50c1xuXHRcdFx0XHRcdGlmICggY3VyLm5vZGVUeXBlIDwgMTEgJiYgKCB0YXJnZXRzID9cblx0XHRcdFx0XHRcdHRhcmdldHMuaW5kZXgoIGN1ciApID4gLTEgOlxuXG5cdFx0XHRcdFx0XHQvLyBEb24ndCBwYXNzIG5vbi1lbGVtZW50cyB0byBTaXp6bGVcblx0XHRcdFx0XHRcdGN1ci5ub2RlVHlwZSA9PT0gMSAmJlxuXHRcdFx0XHRcdFx0XHRqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoIGN1ciwgc2VsZWN0b3JzICkgKSApIHtcblxuXHRcdFx0XHRcdFx0bWF0Y2hlZC5wdXNoKCBjdXIgKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggbWF0Y2hlZC5sZW5ndGggPiAxID8galF1ZXJ5LnVuaXF1ZVNvcnQoIG1hdGNoZWQgKSA6IG1hdGNoZWQgKTtcblx0fSxcblxuXHQvLyBEZXRlcm1pbmUgdGhlIHBvc2l0aW9uIG9mIGFuIGVsZW1lbnQgd2l0aGluIHRoZSBzZXRcblx0aW5kZXg6IGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdFx0Ly8gTm8gYXJndW1lbnQsIHJldHVybiBpbmRleCBpbiBwYXJlbnRcblx0XHRpZiAoICFlbGVtICkge1xuXHRcdFx0cmV0dXJuICggdGhpc1sgMCBdICYmIHRoaXNbIDAgXS5wYXJlbnROb2RlICkgPyB0aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aCA6IC0xO1xuXHRcdH1cblxuXHRcdC8vIEluZGV4IGluIHNlbGVjdG9yXG5cdFx0aWYgKCB0eXBlb2YgZWxlbSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHJldHVybiBpbmRleE9mLmNhbGwoIGpRdWVyeSggZWxlbSApLCB0aGlzWyAwIF0gKTtcblx0XHR9XG5cblx0XHQvLyBMb2NhdGUgdGhlIHBvc2l0aW9uIG9mIHRoZSBkZXNpcmVkIGVsZW1lbnRcblx0XHRyZXR1cm4gaW5kZXhPZi5jYWxsKCB0aGlzLFxuXG5cdFx0XHQvLyBJZiBpdCByZWNlaXZlcyBhIGpRdWVyeSBvYmplY3QsIHRoZSBmaXJzdCBlbGVtZW50IGlzIHVzZWRcblx0XHRcdGVsZW0uanF1ZXJ5ID8gZWxlbVsgMCBdIDogZWxlbVxuXHRcdCk7XG5cdH0sXG5cblx0YWRkOiBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQgKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKFxuXHRcdFx0alF1ZXJ5LnVuaXF1ZVNvcnQoXG5cdFx0XHRcdGpRdWVyeS5tZXJnZSggdGhpcy5nZXQoKSwgalF1ZXJ5KCBzZWxlY3RvciwgY29udGV4dCApIClcblx0XHRcdClcblx0XHQpO1xuXHR9LFxuXG5cdGFkZEJhY2s6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gdGhpcy5hZGQoIHNlbGVjdG9yID09IG51bGwgP1xuXHRcdFx0dGhpcy5wcmV2T2JqZWN0IDogdGhpcy5wcmV2T2JqZWN0LmZpbHRlciggc2VsZWN0b3IgKVxuXHRcdCk7XG5cdH1cbn0gKTtcblxuZnVuY3Rpb24gc2libGluZyggY3VyLCBkaXIgKSB7XG5cdHdoaWxlICggKCBjdXIgPSBjdXJbIGRpciBdICkgJiYgY3VyLm5vZGVUeXBlICE9PSAxICkge31cblx0cmV0dXJuIGN1cjtcbn1cblxualF1ZXJ5LmVhY2goIHtcblx0cGFyZW50OiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHR2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlO1xuXHRcdHJldHVybiBwYXJlbnQgJiYgcGFyZW50Lm5vZGVUeXBlICE9PSAxMSA/IHBhcmVudCA6IG51bGw7XG5cdH0sXG5cdHBhcmVudHM6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBkaXIoIGVsZW0sIFwicGFyZW50Tm9kZVwiICk7XG5cdH0sXG5cdHBhcmVudHNVbnRpbDogZnVuY3Rpb24oIGVsZW0sIF9pLCB1bnRpbCApIHtcblx0XHRyZXR1cm4gZGlyKCBlbGVtLCBcInBhcmVudE5vZGVcIiwgdW50aWwgKTtcblx0fSxcblx0bmV4dDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIHNpYmxpbmcoIGVsZW0sIFwibmV4dFNpYmxpbmdcIiApO1xuXHR9LFxuXHRwcmV2OiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gc2libGluZyggZWxlbSwgXCJwcmV2aW91c1NpYmxpbmdcIiApO1xuXHR9LFxuXHRuZXh0QWxsOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZGlyKCBlbGVtLCBcIm5leHRTaWJsaW5nXCIgKTtcblx0fSxcblx0cHJldkFsbDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJwcmV2aW91c1NpYmxpbmdcIiApO1xuXHR9LFxuXHRuZXh0VW50aWw6IGZ1bmN0aW9uKCBlbGVtLCBfaSwgdW50aWwgKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJuZXh0U2libGluZ1wiLCB1bnRpbCApO1xuXHR9LFxuXHRwcmV2VW50aWw6IGZ1bmN0aW9uKCBlbGVtLCBfaSwgdW50aWwgKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJwcmV2aW91c1NpYmxpbmdcIiwgdW50aWwgKTtcblx0fSxcblx0c2libGluZ3M6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBzaWJsaW5ncyggKCBlbGVtLnBhcmVudE5vZGUgfHwge30gKS5maXJzdENoaWxkLCBlbGVtICk7XG5cdH0sXG5cdGNoaWxkcmVuOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gc2libGluZ3MoIGVsZW0uZmlyc3RDaGlsZCApO1xuXHR9LFxuXHRjb250ZW50czogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0aWYgKCBlbGVtLmNvbnRlbnREb2N1bWVudCAhPSBudWxsICYmXG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFIDExK1xuXHRcdFx0Ly8gPG9iamVjdD4gZWxlbWVudHMgd2l0aCBubyBgZGF0YWAgYXR0cmlidXRlIGhhcyBhbiBvYmplY3Rcblx0XHRcdC8vIGBjb250ZW50RG9jdW1lbnRgIHdpdGggYSBgbnVsbGAgcHJvdG90eXBlLlxuXHRcdFx0Z2V0UHJvdG8oIGVsZW0uY29udGVudERvY3VtZW50ICkgKSB7XG5cblx0XHRcdHJldHVybiBlbGVtLmNvbnRlbnREb2N1bWVudDtcblx0XHR9XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA5IC0gMTEgb25seSwgaU9TIDcgb25seSwgQW5kcm9pZCBCcm93c2VyIDw9NC4zIG9ubHlcblx0XHQvLyBUcmVhdCB0aGUgdGVtcGxhdGUgZWxlbWVudCBhcyBhIHJlZ3VsYXIgb25lIGluIGJyb3dzZXJzIHRoYXRcblx0XHQvLyBkb24ndCBzdXBwb3J0IGl0LlxuXHRcdGlmICggbm9kZU5hbWUoIGVsZW0sIFwidGVtcGxhdGVcIiApICkge1xuXHRcdFx0ZWxlbSA9IGVsZW0uY29udGVudCB8fCBlbGVtO1xuXHRcdH1cblxuXHRcdHJldHVybiBqUXVlcnkubWVyZ2UoIFtdLCBlbGVtLmNoaWxkTm9kZXMgKTtcblx0fVxufSwgZnVuY3Rpb24oIG5hbWUsIGZuICkge1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCB1bnRpbCwgc2VsZWN0b3IgKSB7XG5cdFx0dmFyIG1hdGNoZWQgPSBqUXVlcnkubWFwKCB0aGlzLCBmbiwgdW50aWwgKTtcblxuXHRcdGlmICggbmFtZS5zbGljZSggLTUgKSAhPT0gXCJVbnRpbFwiICkge1xuXHRcdFx0c2VsZWN0b3IgPSB1bnRpbDtcblx0XHR9XG5cblx0XHRpZiAoIHNlbGVjdG9yICYmIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdG1hdGNoZWQgPSBqUXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgbWF0Y2hlZCApO1xuXHRcdH1cblxuXHRcdGlmICggdGhpcy5sZW5ndGggPiAxICkge1xuXG5cdFx0XHQvLyBSZW1vdmUgZHVwbGljYXRlc1xuXHRcdFx0aWYgKCAhZ3VhcmFudGVlZFVuaXF1ZVsgbmFtZSBdICkge1xuXHRcdFx0XHRqUXVlcnkudW5pcXVlU29ydCggbWF0Y2hlZCApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZXZlcnNlIG9yZGVyIGZvciBwYXJlbnRzKiBhbmQgcHJldi1kZXJpdmF0aXZlc1xuXHRcdFx0aWYgKCBycGFyZW50c3ByZXYudGVzdCggbmFtZSApICkge1xuXHRcdFx0XHRtYXRjaGVkLnJldmVyc2UoKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIG1hdGNoZWQgKTtcblx0fTtcbn0gKTtcbnZhciBybm90aHRtbHdoaXRlID0gKCAvW15cXHgyMFxcdFxcclxcblxcZl0rL2cgKTtcblxuXG5cbi8vIENvbnZlcnQgU3RyaW5nLWZvcm1hdHRlZCBvcHRpb25zIGludG8gT2JqZWN0LWZvcm1hdHRlZCBvbmVzXG5mdW5jdGlvbiBjcmVhdGVPcHRpb25zKCBvcHRpb25zICkge1xuXHR2YXIgb2JqZWN0ID0ge307XG5cdGpRdWVyeS5lYWNoKCBvcHRpb25zLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW10sIGZ1bmN0aW9uKCBfLCBmbGFnICkge1xuXHRcdG9iamVjdFsgZmxhZyBdID0gdHJ1ZTtcblx0fSApO1xuXHRyZXR1cm4gb2JqZWN0O1xufVxuXG4vKlxuICogQ3JlYXRlIGEgY2FsbGJhY2sgbGlzdCB1c2luZyB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6XG4gKlxuICpcdG9wdGlvbnM6IGFuIG9wdGlvbmFsIGxpc3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIG9wdGlvbnMgdGhhdCB3aWxsIGNoYW5nZSBob3dcbiAqXHRcdFx0dGhlIGNhbGxiYWNrIGxpc3QgYmVoYXZlcyBvciBhIG1vcmUgdHJhZGl0aW9uYWwgb3B0aW9uIG9iamVjdFxuICpcbiAqIEJ5IGRlZmF1bHQgYSBjYWxsYmFjayBsaXN0IHdpbGwgYWN0IGxpa2UgYW4gZXZlbnQgY2FsbGJhY2sgbGlzdCBhbmQgY2FuIGJlXG4gKiBcImZpcmVkXCIgbXVsdGlwbGUgdGltZXMuXG4gKlxuICogUG9zc2libGUgb3B0aW9uczpcbiAqXG4gKlx0b25jZTpcdFx0XHR3aWxsIGVuc3VyZSB0aGUgY2FsbGJhY2sgbGlzdCBjYW4gb25seSBiZSBmaXJlZCBvbmNlIChsaWtlIGEgRGVmZXJyZWQpXG4gKlxuICpcdG1lbW9yeTpcdFx0XHR3aWxsIGtlZXAgdHJhY2sgb2YgcHJldmlvdXMgdmFsdWVzIGFuZCB3aWxsIGNhbGwgYW55IGNhbGxiYWNrIGFkZGVkXG4gKlx0XHRcdFx0XHRhZnRlciB0aGUgbGlzdCBoYXMgYmVlbiBmaXJlZCByaWdodCBhd2F5IHdpdGggdGhlIGxhdGVzdCBcIm1lbW9yaXplZFwiXG4gKlx0XHRcdFx0XHR2YWx1ZXMgKGxpa2UgYSBEZWZlcnJlZClcbiAqXG4gKlx0dW5pcXVlOlx0XHRcdHdpbGwgZW5zdXJlIGEgY2FsbGJhY2sgY2FuIG9ubHkgYmUgYWRkZWQgb25jZSAobm8gZHVwbGljYXRlIGluIHRoZSBsaXN0KVxuICpcbiAqXHRzdG9wT25GYWxzZTpcdGludGVycnVwdCBjYWxsaW5ncyB3aGVuIGEgY2FsbGJhY2sgcmV0dXJucyBmYWxzZVxuICpcbiAqL1xualF1ZXJ5LkNhbGxiYWNrcyA9IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXG5cdC8vIENvbnZlcnQgb3B0aW9ucyBmcm9tIFN0cmluZy1mb3JtYXR0ZWQgdG8gT2JqZWN0LWZvcm1hdHRlZCBpZiBuZWVkZWRcblx0Ly8gKHdlIGNoZWNrIGluIGNhY2hlIGZpcnN0KVxuXHRvcHRpb25zID0gdHlwZW9mIG9wdGlvbnMgPT09IFwic3RyaW5nXCIgP1xuXHRcdGNyZWF0ZU9wdGlvbnMoIG9wdGlvbnMgKSA6XG5cdFx0alF1ZXJ5LmV4dGVuZCgge30sIG9wdGlvbnMgKTtcblxuXHR2YXIgLy8gRmxhZyB0byBrbm93IGlmIGxpc3QgaXMgY3VycmVudGx5IGZpcmluZ1xuXHRcdGZpcmluZyxcblxuXHRcdC8vIExhc3QgZmlyZSB2YWx1ZSBmb3Igbm9uLWZvcmdldHRhYmxlIGxpc3RzXG5cdFx0bWVtb3J5LFxuXG5cdFx0Ly8gRmxhZyB0byBrbm93IGlmIGxpc3Qgd2FzIGFscmVhZHkgZmlyZWRcblx0XHRmaXJlZCxcblxuXHRcdC8vIEZsYWcgdG8gcHJldmVudCBmaXJpbmdcblx0XHRsb2NrZWQsXG5cblx0XHQvLyBBY3R1YWwgY2FsbGJhY2sgbGlzdFxuXHRcdGxpc3QgPSBbXSxcblxuXHRcdC8vIFF1ZXVlIG9mIGV4ZWN1dGlvbiBkYXRhIGZvciByZXBlYXRhYmxlIGxpc3RzXG5cdFx0cXVldWUgPSBbXSxcblxuXHRcdC8vIEluZGV4IG9mIGN1cnJlbnRseSBmaXJpbmcgY2FsbGJhY2sgKG1vZGlmaWVkIGJ5IGFkZC9yZW1vdmUgYXMgbmVlZGVkKVxuXHRcdGZpcmluZ0luZGV4ID0gLTEsXG5cblx0XHQvLyBGaXJlIGNhbGxiYWNrc1xuXHRcdGZpcmUgPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gRW5mb3JjZSBzaW5nbGUtZmlyaW5nXG5cdFx0XHRsb2NrZWQgPSBsb2NrZWQgfHwgb3B0aW9ucy5vbmNlO1xuXG5cdFx0XHQvLyBFeGVjdXRlIGNhbGxiYWNrcyBmb3IgYWxsIHBlbmRpbmcgZXhlY3V0aW9ucyxcblx0XHRcdC8vIHJlc3BlY3RpbmcgZmlyaW5nSW5kZXggb3ZlcnJpZGVzIGFuZCBydW50aW1lIGNoYW5nZXNcblx0XHRcdGZpcmVkID0gZmlyaW5nID0gdHJ1ZTtcblx0XHRcdGZvciAoIDsgcXVldWUubGVuZ3RoOyBmaXJpbmdJbmRleCA9IC0xICkge1xuXHRcdFx0XHRtZW1vcnkgPSBxdWV1ZS5zaGlmdCgpO1xuXHRcdFx0XHR3aGlsZSAoICsrZmlyaW5nSW5kZXggPCBsaXN0Lmxlbmd0aCApIHtcblxuXHRcdFx0XHRcdC8vIFJ1biBjYWxsYmFjayBhbmQgY2hlY2sgZm9yIGVhcmx5IHRlcm1pbmF0aW9uXG5cdFx0XHRcdFx0aWYgKCBsaXN0WyBmaXJpbmdJbmRleCBdLmFwcGx5KCBtZW1vcnlbIDAgXSwgbWVtb3J5WyAxIF0gKSA9PT0gZmFsc2UgJiZcblx0XHRcdFx0XHRcdG9wdGlvbnMuc3RvcE9uRmFsc2UgKSB7XG5cblx0XHRcdFx0XHRcdC8vIEp1bXAgdG8gZW5kIGFuZCBmb3JnZXQgdGhlIGRhdGEgc28gLmFkZCBkb2Vzbid0IHJlLWZpcmVcblx0XHRcdFx0XHRcdGZpcmluZ0luZGV4ID0gbGlzdC5sZW5ndGg7XG5cdFx0XHRcdFx0XHRtZW1vcnkgPSBmYWxzZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gRm9yZ2V0IHRoZSBkYXRhIGlmIHdlJ3JlIGRvbmUgd2l0aCBpdFxuXHRcdFx0aWYgKCAhb3B0aW9ucy5tZW1vcnkgKSB7XG5cdFx0XHRcdG1lbW9yeSA9IGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRmaXJpbmcgPSBmYWxzZTtcblxuXHRcdFx0Ly8gQ2xlYW4gdXAgaWYgd2UncmUgZG9uZSBmaXJpbmcgZm9yIGdvb2Rcblx0XHRcdGlmICggbG9ja2VkICkge1xuXG5cdFx0XHRcdC8vIEtlZXAgYW4gZW1wdHkgbGlzdCBpZiB3ZSBoYXZlIGRhdGEgZm9yIGZ1dHVyZSBhZGQgY2FsbHNcblx0XHRcdFx0aWYgKCBtZW1vcnkgKSB7XG5cdFx0XHRcdFx0bGlzdCA9IFtdO1xuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSwgdGhpcyBvYmplY3QgaXMgc3BlbnRcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRsaXN0ID0gXCJcIjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHQvLyBBY3R1YWwgQ2FsbGJhY2tzIG9iamVjdFxuXHRcdHNlbGYgPSB7XG5cblx0XHRcdC8vIEFkZCBhIGNhbGxiYWNrIG9yIGEgY29sbGVjdGlvbiBvZiBjYWxsYmFja3MgdG8gdGhlIGxpc3Rcblx0XHRcdGFkZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggbGlzdCApIHtcblxuXHRcdFx0XHRcdC8vIElmIHdlIGhhdmUgbWVtb3J5IGZyb20gYSBwYXN0IHJ1biwgd2Ugc2hvdWxkIGZpcmUgYWZ0ZXIgYWRkaW5nXG5cdFx0XHRcdFx0aWYgKCBtZW1vcnkgJiYgIWZpcmluZyApIHtcblx0XHRcdFx0XHRcdGZpcmluZ0luZGV4ID0gbGlzdC5sZW5ndGggLSAxO1xuXHRcdFx0XHRcdFx0cXVldWUucHVzaCggbWVtb3J5ICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0KCBmdW5jdGlvbiBhZGQoIGFyZ3MgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkuZWFjaCggYXJncywgZnVuY3Rpb24oIF8sIGFyZyApIHtcblx0XHRcdFx0XHRcdFx0aWYgKCBpc0Z1bmN0aW9uKCBhcmcgKSApIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoICFvcHRpb25zLnVuaXF1ZSB8fCAhc2VsZi5oYXMoIGFyZyApICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0bGlzdC5wdXNoKCBhcmcgKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoIGFyZyAmJiBhcmcubGVuZ3RoICYmIHRvVHlwZSggYXJnICkgIT09IFwic3RyaW5nXCIgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBJbnNwZWN0IHJlY3Vyc2l2ZWx5XG5cdFx0XHRcdFx0XHRcdFx0YWRkKCBhcmcgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSApO1xuXHRcdFx0XHRcdH0gKSggYXJndW1lbnRzICk7XG5cblx0XHRcdFx0XHRpZiAoIG1lbW9yeSAmJiAhZmlyaW5nICkge1xuXHRcdFx0XHRcdFx0ZmlyZSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIFJlbW92ZSBhIGNhbGxiYWNrIGZyb20gdGhlIGxpc3Rcblx0XHRcdHJlbW92ZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGpRdWVyeS5lYWNoKCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBfLCBhcmcgKSB7XG5cdFx0XHRcdFx0dmFyIGluZGV4O1xuXHRcdFx0XHRcdHdoaWxlICggKCBpbmRleCA9IGpRdWVyeS5pbkFycmF5KCBhcmcsIGxpc3QsIGluZGV4ICkgKSA+IC0xICkge1xuXHRcdFx0XHRcdFx0bGlzdC5zcGxpY2UoIGluZGV4LCAxICk7XG5cblx0XHRcdFx0XHRcdC8vIEhhbmRsZSBmaXJpbmcgaW5kZXhlc1xuXHRcdFx0XHRcdFx0aWYgKCBpbmRleCA8PSBmaXJpbmdJbmRleCApIHtcblx0XHRcdFx0XHRcdFx0ZmlyaW5nSW5kZXgtLTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gKTtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBDaGVjayBpZiBhIGdpdmVuIGNhbGxiYWNrIGlzIGluIHRoZSBsaXN0LlxuXHRcdFx0Ly8gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHJldHVybiB3aGV0aGVyIG9yIG5vdCBsaXN0IGhhcyBjYWxsYmFja3MgYXR0YWNoZWQuXG5cdFx0XHRoYXM6IGZ1bmN0aW9uKCBmbiApIHtcblx0XHRcdFx0cmV0dXJuIGZuID9cblx0XHRcdFx0XHRqUXVlcnkuaW5BcnJheSggZm4sIGxpc3QgKSA+IC0xIDpcblx0XHRcdFx0XHRsaXN0Lmxlbmd0aCA+IDA7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBSZW1vdmUgYWxsIGNhbGxiYWNrcyBmcm9tIHRoZSBsaXN0XG5cdFx0XHRlbXB0eTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggbGlzdCApIHtcblx0XHRcdFx0XHRsaXN0ID0gW107XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBEaXNhYmxlIC5maXJlIGFuZCAuYWRkXG5cdFx0XHQvLyBBYm9ydCBhbnkgY3VycmVudC9wZW5kaW5nIGV4ZWN1dGlvbnNcblx0XHRcdC8vIENsZWFyIGFsbCBjYWxsYmFja3MgYW5kIHZhbHVlc1xuXHRcdFx0ZGlzYWJsZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGxvY2tlZCA9IHF1ZXVlID0gW107XG5cdFx0XHRcdGxpc3QgPSBtZW1vcnkgPSBcIlwiO1xuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cdFx0XHRkaXNhYmxlZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiAhbGlzdDtcblx0XHRcdH0sXG5cblx0XHRcdC8vIERpc2FibGUgLmZpcmVcblx0XHRcdC8vIEFsc28gZGlzYWJsZSAuYWRkIHVubGVzcyB3ZSBoYXZlIG1lbW9yeSAoc2luY2UgaXQgd291bGQgaGF2ZSBubyBlZmZlY3QpXG5cdFx0XHQvLyBBYm9ydCBhbnkgcGVuZGluZyBleGVjdXRpb25zXG5cdFx0XHRsb2NrOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0bG9ja2VkID0gcXVldWUgPSBbXTtcblx0XHRcdFx0aWYgKCAhbWVtb3J5ICYmICFmaXJpbmcgKSB7XG5cdFx0XHRcdFx0bGlzdCA9IG1lbW9yeSA9IFwiXCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXHRcdFx0bG9ja2VkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuICEhbG9ja2VkO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gQ2FsbCBhbGwgY2FsbGJhY2tzIHdpdGggdGhlIGdpdmVuIGNvbnRleHQgYW5kIGFyZ3VtZW50c1xuXHRcdFx0ZmlyZVdpdGg6IGZ1bmN0aW9uKCBjb250ZXh0LCBhcmdzICkge1xuXHRcdFx0XHRpZiAoICFsb2NrZWQgKSB7XG5cdFx0XHRcdFx0YXJncyA9IGFyZ3MgfHwgW107XG5cdFx0XHRcdFx0YXJncyA9IFsgY29udGV4dCwgYXJncy5zbGljZSA/IGFyZ3Muc2xpY2UoKSA6IGFyZ3MgXTtcblx0XHRcdFx0XHRxdWV1ZS5wdXNoKCBhcmdzICk7XG5cdFx0XHRcdFx0aWYgKCAhZmlyaW5nICkge1xuXHRcdFx0XHRcdFx0ZmlyZSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIENhbGwgYWxsIHRoZSBjYWxsYmFja3Mgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzXG5cdFx0XHRmaXJlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0c2VsZi5maXJlV2l0aCggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gVG8ga25vdyBpZiB0aGUgY2FsbGJhY2tzIGhhdmUgYWxyZWFkeSBiZWVuIGNhbGxlZCBhdCBsZWFzdCBvbmNlXG5cdFx0XHRmaXJlZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiAhIWZpcmVkO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0cmV0dXJuIHNlbGY7XG59O1xuXG5cbmZ1bmN0aW9uIElkZW50aXR5KCB2ICkge1xuXHRyZXR1cm4gdjtcbn1cbmZ1bmN0aW9uIFRocm93ZXIoIGV4ICkge1xuXHR0aHJvdyBleDtcbn1cblxuZnVuY3Rpb24gYWRvcHRWYWx1ZSggdmFsdWUsIHJlc29sdmUsIHJlamVjdCwgbm9WYWx1ZSApIHtcblx0dmFyIG1ldGhvZDtcblxuXHR0cnkge1xuXG5cdFx0Ly8gQ2hlY2sgZm9yIHByb21pc2UgYXNwZWN0IGZpcnN0IHRvIHByaXZpbGVnZSBzeW5jaHJvbm91cyBiZWhhdmlvclxuXHRcdGlmICggdmFsdWUgJiYgaXNGdW5jdGlvbiggKCBtZXRob2QgPSB2YWx1ZS5wcm9taXNlICkgKSApIHtcblx0XHRcdG1ldGhvZC5jYWxsKCB2YWx1ZSApLmRvbmUoIHJlc29sdmUgKS5mYWlsKCByZWplY3QgKTtcblxuXHRcdC8vIE90aGVyIHRoZW5hYmxlc1xuXHRcdH0gZWxzZSBpZiAoIHZhbHVlICYmIGlzRnVuY3Rpb24oICggbWV0aG9kID0gdmFsdWUudGhlbiApICkgKSB7XG5cdFx0XHRtZXRob2QuY2FsbCggdmFsdWUsIHJlc29sdmUsIHJlamVjdCApO1xuXG5cdFx0Ly8gT3RoZXIgbm9uLXRoZW5hYmxlc1xuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIENvbnRyb2wgYHJlc29sdmVgIGFyZ3VtZW50cyBieSBsZXR0aW5nIEFycmF5I3NsaWNlIGNhc3QgYm9vbGVhbiBgbm9WYWx1ZWAgdG8gaW50ZWdlcjpcblx0XHRcdC8vICogZmFsc2U6IFsgdmFsdWUgXS5zbGljZSggMCApID0+IHJlc29sdmUoIHZhbHVlIClcblx0XHRcdC8vICogdHJ1ZTogWyB2YWx1ZSBdLnNsaWNlKCAxICkgPT4gcmVzb2x2ZSgpXG5cdFx0XHRyZXNvbHZlLmFwcGx5KCB1bmRlZmluZWQsIFsgdmFsdWUgXS5zbGljZSggbm9WYWx1ZSApICk7XG5cdFx0fVxuXG5cdC8vIEZvciBQcm9taXNlcy9BKywgY29udmVydCBleGNlcHRpb25zIGludG8gcmVqZWN0aW9uc1xuXHQvLyBTaW5jZSBqUXVlcnkud2hlbiBkb2Vzbid0IHVud3JhcCB0aGVuYWJsZXMsIHdlIGNhbiBza2lwIHRoZSBleHRyYSBjaGVja3MgYXBwZWFyaW5nIGluXG5cdC8vIERlZmVycmVkI3RoZW4gdG8gY29uZGl0aW9uYWxseSBzdXBwcmVzcyByZWplY3Rpb24uXG5cdH0gY2F0Y2ggKCB2YWx1ZSApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIG9ubHlcblx0XHQvLyBTdHJpY3QgbW9kZSBmdW5jdGlvbnMgaW52b2tlZCB3aXRob3V0IC5jYWxsLy5hcHBseSBnZXQgZ2xvYmFsLW9iamVjdCBjb250ZXh0XG5cdFx0cmVqZWN0LmFwcGx5KCB1bmRlZmluZWQsIFsgdmFsdWUgXSApO1xuXHR9XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblxuXHREZWZlcnJlZDogZnVuY3Rpb24oIGZ1bmMgKSB7XG5cdFx0dmFyIHR1cGxlcyA9IFtcblxuXHRcdFx0XHQvLyBhY3Rpb24sIGFkZCBsaXN0ZW5lciwgY2FsbGJhY2tzLFxuXHRcdFx0XHQvLyAuLi4gLnRoZW4gaGFuZGxlcnMsIGFyZ3VtZW50IGluZGV4LCBbZmluYWwgc3RhdGVdXG5cdFx0XHRcdFsgXCJub3RpZnlcIiwgXCJwcm9ncmVzc1wiLCBqUXVlcnkuQ2FsbGJhY2tzKCBcIm1lbW9yeVwiICksXG5cdFx0XHRcdFx0alF1ZXJ5LkNhbGxiYWNrcyggXCJtZW1vcnlcIiApLCAyIF0sXG5cdFx0XHRcdFsgXCJyZXNvbHZlXCIsIFwiZG9uZVwiLCBqUXVlcnkuQ2FsbGJhY2tzKCBcIm9uY2UgbWVtb3J5XCIgKSxcblx0XHRcdFx0XHRqUXVlcnkuQ2FsbGJhY2tzKCBcIm9uY2UgbWVtb3J5XCIgKSwgMCwgXCJyZXNvbHZlZFwiIF0sXG5cdFx0XHRcdFsgXCJyZWplY3RcIiwgXCJmYWlsXCIsIGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLFxuXHRcdFx0XHRcdGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLCAxLCBcInJlamVjdGVkXCIgXVxuXHRcdFx0XSxcblx0XHRcdHN0YXRlID0gXCJwZW5kaW5nXCIsXG5cdFx0XHRwcm9taXNlID0ge1xuXHRcdFx0XHRzdGF0ZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHN0YXRlO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRhbHdheXM6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGRlZmVycmVkLmRvbmUoIGFyZ3VtZW50cyApLmZhaWwoIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRcImNhdGNoXCI6IGZ1bmN0aW9uKCBmbiApIHtcblx0XHRcdFx0XHRyZXR1cm4gcHJvbWlzZS50aGVuKCBudWxsLCBmbiApO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIEtlZXAgcGlwZSBmb3IgYmFjay1jb21wYXRcblx0XHRcdFx0cGlwZTogZnVuY3Rpb24oIC8qIGZuRG9uZSwgZm5GYWlsLCBmblByb2dyZXNzICovICkge1xuXHRcdFx0XHRcdHZhciBmbnMgPSBhcmd1bWVudHM7XG5cblx0XHRcdFx0XHRyZXR1cm4galF1ZXJ5LkRlZmVycmVkKCBmdW5jdGlvbiggbmV3RGVmZXIgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkuZWFjaCggdHVwbGVzLCBmdW5jdGlvbiggX2ksIHR1cGxlICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIE1hcCB0dXBsZXMgKHByb2dyZXNzLCBkb25lLCBmYWlsKSB0byBhcmd1bWVudHMgKGRvbmUsIGZhaWwsIHByb2dyZXNzKVxuXHRcdFx0XHRcdFx0XHR2YXIgZm4gPSBpc0Z1bmN0aW9uKCBmbnNbIHR1cGxlWyA0IF0gXSApICYmIGZuc1sgdHVwbGVbIDQgXSBdO1xuXG5cdFx0XHRcdFx0XHRcdC8vIGRlZmVycmVkLnByb2dyZXNzKGZ1bmN0aW9uKCkgeyBiaW5kIHRvIG5ld0RlZmVyIG9yIG5ld0RlZmVyLm5vdGlmeSB9KVxuXHRcdFx0XHRcdFx0XHQvLyBkZWZlcnJlZC5kb25lKGZ1bmN0aW9uKCkgeyBiaW5kIHRvIG5ld0RlZmVyIG9yIG5ld0RlZmVyLnJlc29sdmUgfSlcblx0XHRcdFx0XHRcdFx0Ly8gZGVmZXJyZWQuZmFpbChmdW5jdGlvbigpIHsgYmluZCB0byBuZXdEZWZlciBvciBuZXdEZWZlci5yZWplY3QgfSlcblx0XHRcdFx0XHRcdFx0ZGVmZXJyZWRbIHR1cGxlWyAxIF0gXSggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHJldHVybmVkID0gZm4gJiYgZm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRcdFx0XHRcdGlmICggcmV0dXJuZWQgJiYgaXNGdW5jdGlvbiggcmV0dXJuZWQucHJvbWlzZSApICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuZWQucHJvbWlzZSgpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC5wcm9ncmVzcyggbmV3RGVmZXIubm90aWZ5IClcblx0XHRcdFx0XHRcdFx0XHRcdFx0LmRvbmUoIG5ld0RlZmVyLnJlc29sdmUgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQuZmFpbCggbmV3RGVmZXIucmVqZWN0ICk7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdG5ld0RlZmVyWyB0dXBsZVsgMCBdICsgXCJXaXRoXCIgXShcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm4gPyBbIHJldHVybmVkIF0gOiBhcmd1bWVudHNcblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0XHRmbnMgPSBudWxsO1xuXHRcdFx0XHRcdH0gKS5wcm9taXNlKCk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRoZW46IGZ1bmN0aW9uKCBvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgb25Qcm9ncmVzcyApIHtcblx0XHRcdFx0XHR2YXIgbWF4RGVwdGggPSAwO1xuXHRcdFx0XHRcdGZ1bmN0aW9uIHJlc29sdmUoIGRlcHRoLCBkZWZlcnJlZCwgaGFuZGxlciwgc3BlY2lhbCApIHtcblx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0dmFyIHRoYXQgPSB0aGlzLFxuXHRcdFx0XHRcdFx0XHRcdGFyZ3MgPSBhcmd1bWVudHMsXG5cdFx0XHRcdFx0XHRcdFx0bWlnaHRUaHJvdyA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJldHVybmVkLCB0aGVuO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4zLjMuM1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNTlcblx0XHRcdFx0XHRcdFx0XHRcdC8vIElnbm9yZSBkb3VibGUtcmVzb2x1dGlvbiBhdHRlbXB0c1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBkZXB0aCA8IG1heERlcHRoICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybmVkID0gaGFuZGxlci5hcHBseSggdGhhdCwgYXJncyApO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4xXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC00OFxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCByZXR1cm5lZCA9PT0gZGVmZXJyZWQucHJvbWlzZSgpICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCBcIlRoZW5hYmxlIHNlbGYtcmVzb2x1dGlvblwiICk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb25zIDIuMy4zLjEsIDMuNVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNTRcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTc1XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBSZXRyaWV2ZSBgdGhlbmAgb25seSBvbmNlXG5cdFx0XHRcdFx0XHRcdFx0XHR0aGVuID0gcmV0dXJuZWQgJiZcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy40XG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTY0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIE9ubHkgY2hlY2sgb2JqZWN0cyBhbmQgZnVuY3Rpb25zIGZvciB0aGVuYWJpbGl0eVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoIHR5cGVvZiByZXR1cm5lZCA9PT0gXCJvYmplY3RcIiB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGVvZiByZXR1cm5lZCA9PT0gXCJmdW5jdGlvblwiICkgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuZWQudGhlbjtcblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gSGFuZGxlIGEgcmV0dXJuZWQgdGhlbmFibGVcblx0XHRcdFx0XHRcdFx0XHRcdGlmICggaXNGdW5jdGlvbiggdGhlbiApICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIFNwZWNpYWwgcHJvY2Vzc29ycyAobm90aWZ5KSBqdXN0IHdhaXQgZm9yIHJlc29sdXRpb25cblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBzcGVjaWFsICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoZW4uY2FsbChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybmVkLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBJZGVudGl0eSwgc3BlY2lhbCApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBUaHJvd2VyLCBzcGVjaWFsIClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIE5vcm1hbCBwcm9jZXNzb3JzIChyZXNvbHZlKSBhbHNvIGhvb2sgaW50byBwcm9ncmVzc1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gLi4uYW5kIGRpc3JlZ2FyZCBvbGRlciByZXNvbHV0aW9uIHZhbHVlc1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1heERlcHRoKys7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGVuLmNhbGwoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5lZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgSWRlbnRpdHksIHNwZWNpYWwgKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgVGhyb3dlciwgc3BlY2lhbCApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBJZGVudGl0eSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVmZXJyZWQubm90aWZ5V2l0aCApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBIYW5kbGUgYWxsIG90aGVyIHJldHVybmVkIHZhbHVlc1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBPbmx5IHN1YnN0aXR1dGUgaGFuZGxlcnMgcGFzcyBvbiBjb250ZXh0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGFuZCBtdWx0aXBsZSB2YWx1ZXMgKG5vbi1zcGVjIGJlaGF2aW9yKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGhhbmRsZXIgIT09IElkZW50aXR5ICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJncyA9IFsgcmV0dXJuZWQgXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIFByb2Nlc3MgdGhlIHZhbHVlKHMpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIERlZmF1bHQgcHJvY2VzcyBpcyByZXNvbHZlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCggc3BlY2lhbCB8fCBkZWZlcnJlZC5yZXNvbHZlV2l0aCApKCB0aGF0LCBhcmdzICk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fSxcblxuXHRcdFx0XHRcdFx0XHRcdC8vIE9ubHkgbm9ybWFsIHByb2Nlc3NvcnMgKHJlc29sdmUpIGNhdGNoIGFuZCByZWplY3QgZXhjZXB0aW9uc1xuXHRcdFx0XHRcdFx0XHRcdHByb2Nlc3MgPSBzcGVjaWFsID9cblx0XHRcdFx0XHRcdFx0XHRcdG1pZ2h0VGhyb3cgOlxuXHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWlnaHRUaHJvdygpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9IGNhdGNoICggZSApIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggalF1ZXJ5LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2sgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRqUXVlcnkuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayggZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cHJvY2Vzcy5zdGFja1RyYWNlICk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuMy4zLjQuMVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTYxXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gSWdub3JlIHBvc3QtcmVzb2x1dGlvbiBleGNlcHRpb25zXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBkZXB0aCArIDEgPj0gbWF4RGVwdGggKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIE9ubHkgc3Vic3RpdHV0ZSBoYW5kbGVycyBwYXNzIG9uIGNvbnRleHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGFuZCBtdWx0aXBsZSB2YWx1ZXMgKG5vbi1zcGVjIGJlaGF2aW9yKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBoYW5kbGVyICE9PSBUaHJvd2VyICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGF0ID0gdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmdzID0gWyBlIF07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlZmVycmVkLnJlamVjdFdpdGgoIHRoYXQsIGFyZ3MgKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH07XG5cblx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuMy4zLjFcblx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNTdcblx0XHRcdFx0XHRcdFx0Ly8gUmUtcmVzb2x2ZSBwcm9taXNlcyBpbW1lZGlhdGVseSB0byBkb2RnZSBmYWxzZSByZWplY3Rpb24gZnJvbVxuXHRcdFx0XHRcdFx0XHQvLyBzdWJzZXF1ZW50IGVycm9yc1xuXHRcdFx0XHRcdFx0XHRpZiAoIGRlcHRoICkge1xuXHRcdFx0XHRcdFx0XHRcdHByb2Nlc3MoKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIENhbGwgYW4gb3B0aW9uYWwgaG9vayB0byByZWNvcmQgdGhlIHN0YWNrLCBpbiBjYXNlIG9mIGV4Y2VwdGlvblxuXHRcdFx0XHRcdFx0XHRcdC8vIHNpbmNlIGl0J3Mgb3RoZXJ3aXNlIGxvc3Qgd2hlbiBleGVjdXRpb24gZ29lcyBhc3luY1xuXHRcdFx0XHRcdFx0XHRcdGlmICggalF1ZXJ5LkRlZmVycmVkLmdldFN0YWNrSG9vayApIHtcblx0XHRcdFx0XHRcdFx0XHRcdHByb2Nlc3Muc3RhY2tUcmFjZSA9IGpRdWVyeS5EZWZlcnJlZC5nZXRTdGFja0hvb2soKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LnNldFRpbWVvdXQoIHByb2Nlc3MgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRyZXR1cm4galF1ZXJ5LkRlZmVycmVkKCBmdW5jdGlvbiggbmV3RGVmZXIgKSB7XG5cblx0XHRcdFx0XHRcdC8vIHByb2dyZXNzX2hhbmRsZXJzLmFkZCggLi4uIClcblx0XHRcdFx0XHRcdHR1cGxlc1sgMCBdWyAzIF0uYWRkKFxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKFxuXHRcdFx0XHRcdFx0XHRcdDAsXG5cdFx0XHRcdFx0XHRcdFx0bmV3RGVmZXIsXG5cdFx0XHRcdFx0XHRcdFx0aXNGdW5jdGlvbiggb25Qcm9ncmVzcyApID9cblx0XHRcdFx0XHRcdFx0XHRcdG9uUHJvZ3Jlc3MgOlxuXHRcdFx0XHRcdFx0XHRcdFx0SWRlbnRpdHksXG5cdFx0XHRcdFx0XHRcdFx0bmV3RGVmZXIubm90aWZ5V2l0aFxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0XHQvLyBmdWxmaWxsZWRfaGFuZGxlcnMuYWRkKCAuLi4gKVxuXHRcdFx0XHRcdFx0dHVwbGVzWyAxIF1bIDMgXS5hZGQoXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUoXG5cdFx0XHRcdFx0XHRcdFx0MCxcblx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlcixcblx0XHRcdFx0XHRcdFx0XHRpc0Z1bmN0aW9uKCBvbkZ1bGZpbGxlZCApID9cblx0XHRcdFx0XHRcdFx0XHRcdG9uRnVsZmlsbGVkIDpcblx0XHRcdFx0XHRcdFx0XHRcdElkZW50aXR5XG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRcdC8vIHJlamVjdGVkX2hhbmRsZXJzLmFkZCggLi4uIClcblx0XHRcdFx0XHRcdHR1cGxlc1sgMiBdWyAzIF0uYWRkKFxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKFxuXHRcdFx0XHRcdFx0XHRcdDAsXG5cdFx0XHRcdFx0XHRcdFx0bmV3RGVmZXIsXG5cdFx0XHRcdFx0XHRcdFx0aXNGdW5jdGlvbiggb25SZWplY3RlZCApID9cblx0XHRcdFx0XHRcdFx0XHRcdG9uUmVqZWN0ZWQgOlxuXHRcdFx0XHRcdFx0XHRcdFx0VGhyb3dlclxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0gKS5wcm9taXNlKCk7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gR2V0IGEgcHJvbWlzZSBmb3IgdGhpcyBkZWZlcnJlZFxuXHRcdFx0XHQvLyBJZiBvYmogaXMgcHJvdmlkZWQsIHRoZSBwcm9taXNlIGFzcGVjdCBpcyBhZGRlZCB0byB0aGUgb2JqZWN0XG5cdFx0XHRcdHByb21pc2U6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9iaiAhPSBudWxsID8galF1ZXJ5LmV4dGVuZCggb2JqLCBwcm9taXNlICkgOiBwcm9taXNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0ZGVmZXJyZWQgPSB7fTtcblxuXHRcdC8vIEFkZCBsaXN0LXNwZWNpZmljIG1ldGhvZHNcblx0XHRqUXVlcnkuZWFjaCggdHVwbGVzLCBmdW5jdGlvbiggaSwgdHVwbGUgKSB7XG5cdFx0XHR2YXIgbGlzdCA9IHR1cGxlWyAyIF0sXG5cdFx0XHRcdHN0YXRlU3RyaW5nID0gdHVwbGVbIDUgXTtcblxuXHRcdFx0Ly8gcHJvbWlzZS5wcm9ncmVzcyA9IGxpc3QuYWRkXG5cdFx0XHQvLyBwcm9taXNlLmRvbmUgPSBsaXN0LmFkZFxuXHRcdFx0Ly8gcHJvbWlzZS5mYWlsID0gbGlzdC5hZGRcblx0XHRcdHByb21pc2VbIHR1cGxlWyAxIF0gXSA9IGxpc3QuYWRkO1xuXG5cdFx0XHQvLyBIYW5kbGUgc3RhdGVcblx0XHRcdGlmICggc3RhdGVTdHJpbmcgKSB7XG5cdFx0XHRcdGxpc3QuYWRkKFxuXHRcdFx0XHRcdGZ1bmN0aW9uKCkge1xuXG5cdFx0XHRcdFx0XHQvLyBzdGF0ZSA9IFwicmVzb2x2ZWRcIiAoaS5lLiwgZnVsZmlsbGVkKVxuXHRcdFx0XHRcdFx0Ly8gc3RhdGUgPSBcInJlamVjdGVkXCJcblx0XHRcdFx0XHRcdHN0YXRlID0gc3RhdGVTdHJpbmc7XG5cdFx0XHRcdFx0fSxcblxuXHRcdFx0XHRcdC8vIHJlamVjdGVkX2NhbGxiYWNrcy5kaXNhYmxlXG5cdFx0XHRcdFx0Ly8gZnVsZmlsbGVkX2NhbGxiYWNrcy5kaXNhYmxlXG5cdFx0XHRcdFx0dHVwbGVzWyAzIC0gaSBdWyAyIF0uZGlzYWJsZSxcblxuXHRcdFx0XHRcdC8vIHJlamVjdGVkX2hhbmRsZXJzLmRpc2FibGVcblx0XHRcdFx0XHQvLyBmdWxmaWxsZWRfaGFuZGxlcnMuZGlzYWJsZVxuXHRcdFx0XHRcdHR1cGxlc1sgMyAtIGkgXVsgMyBdLmRpc2FibGUsXG5cblx0XHRcdFx0XHQvLyBwcm9ncmVzc19jYWxsYmFja3MubG9ja1xuXHRcdFx0XHRcdHR1cGxlc1sgMCBdWyAyIF0ubG9jayxcblxuXHRcdFx0XHRcdC8vIHByb2dyZXNzX2hhbmRsZXJzLmxvY2tcblx0XHRcdFx0XHR0dXBsZXNbIDAgXVsgMyBdLmxvY2tcblx0XHRcdFx0KTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gcHJvZ3Jlc3NfaGFuZGxlcnMuZmlyZVxuXHRcdFx0Ly8gZnVsZmlsbGVkX2hhbmRsZXJzLmZpcmVcblx0XHRcdC8vIHJlamVjdGVkX2hhbmRsZXJzLmZpcmVcblx0XHRcdGxpc3QuYWRkKCB0dXBsZVsgMyBdLmZpcmUgKTtcblxuXHRcdFx0Ly8gZGVmZXJyZWQubm90aWZ5ID0gZnVuY3Rpb24oKSB7IGRlZmVycmVkLm5vdGlmeVdpdGgoLi4uKSB9XG5cdFx0XHQvLyBkZWZlcnJlZC5yZXNvbHZlID0gZnVuY3Rpb24oKSB7IGRlZmVycmVkLnJlc29sdmVXaXRoKC4uLikgfVxuXHRcdFx0Ly8gZGVmZXJyZWQucmVqZWN0ID0gZnVuY3Rpb24oKSB7IGRlZmVycmVkLnJlamVjdFdpdGgoLi4uKSB9XG5cdFx0XHRkZWZlcnJlZFsgdHVwbGVbIDAgXSBdID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGRlZmVycmVkWyB0dXBsZVsgMCBdICsgXCJXaXRoXCIgXSggdGhpcyA9PT0gZGVmZXJyZWQgPyB1bmRlZmluZWQgOiB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9O1xuXG5cdFx0XHQvLyBkZWZlcnJlZC5ub3RpZnlXaXRoID0gbGlzdC5maXJlV2l0aFxuXHRcdFx0Ly8gZGVmZXJyZWQucmVzb2x2ZVdpdGggPSBsaXN0LmZpcmVXaXRoXG5cdFx0XHQvLyBkZWZlcnJlZC5yZWplY3RXaXRoID0gbGlzdC5maXJlV2l0aFxuXHRcdFx0ZGVmZXJyZWRbIHR1cGxlWyAwIF0gKyBcIldpdGhcIiBdID0gbGlzdC5maXJlV2l0aDtcblx0XHR9ICk7XG5cblx0XHQvLyBNYWtlIHRoZSBkZWZlcnJlZCBhIHByb21pc2Vcblx0XHRwcm9taXNlLnByb21pc2UoIGRlZmVycmVkICk7XG5cblx0XHQvLyBDYWxsIGdpdmVuIGZ1bmMgaWYgYW55XG5cdFx0aWYgKCBmdW5jICkge1xuXHRcdFx0ZnVuYy5jYWxsKCBkZWZlcnJlZCwgZGVmZXJyZWQgKTtcblx0XHR9XG5cblx0XHQvLyBBbGwgZG9uZSFcblx0XHRyZXR1cm4gZGVmZXJyZWQ7XG5cdH0sXG5cblx0Ly8gRGVmZXJyZWQgaGVscGVyXG5cdHdoZW46IGZ1bmN0aW9uKCBzaW5nbGVWYWx1ZSApIHtcblx0XHR2YXJcblxuXHRcdFx0Ly8gY291bnQgb2YgdW5jb21wbGV0ZWQgc3Vib3JkaW5hdGVzXG5cdFx0XHRyZW1haW5pbmcgPSBhcmd1bWVudHMubGVuZ3RoLFxuXG5cdFx0XHQvLyBjb3VudCBvZiB1bnByb2Nlc3NlZCBhcmd1bWVudHNcblx0XHRcdGkgPSByZW1haW5pbmcsXG5cblx0XHRcdC8vIHN1Ym9yZGluYXRlIGZ1bGZpbGxtZW50IGRhdGFcblx0XHRcdHJlc29sdmVDb250ZXh0cyA9IEFycmF5KCBpICksXG5cdFx0XHRyZXNvbHZlVmFsdWVzID0gc2xpY2UuY2FsbCggYXJndW1lbnRzICksXG5cblx0XHRcdC8vIHRoZSBwcmltYXJ5IERlZmVycmVkXG5cdFx0XHRwcmltYXJ5ID0galF1ZXJ5LkRlZmVycmVkKCksXG5cblx0XHRcdC8vIHN1Ym9yZGluYXRlIGNhbGxiYWNrIGZhY3Rvcnlcblx0XHRcdHVwZGF0ZUZ1bmMgPSBmdW5jdGlvbiggaSApIHtcblx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdFx0XHRyZXNvbHZlQ29udGV4dHNbIGkgXSA9IHRoaXM7XG5cdFx0XHRcdFx0cmVzb2x2ZVZhbHVlc1sgaSBdID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSA6IHZhbHVlO1xuXHRcdFx0XHRcdGlmICggISggLS1yZW1haW5pbmcgKSApIHtcblx0XHRcdFx0XHRcdHByaW1hcnkucmVzb2x2ZVdpdGgoIHJlc29sdmVDb250ZXh0cywgcmVzb2x2ZVZhbHVlcyApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHRcdH07XG5cblx0XHQvLyBTaW5nbGUtIGFuZCBlbXB0eSBhcmd1bWVudHMgYXJlIGFkb3B0ZWQgbGlrZSBQcm9taXNlLnJlc29sdmVcblx0XHRpZiAoIHJlbWFpbmluZyA8PSAxICkge1xuXHRcdFx0YWRvcHRWYWx1ZSggc2luZ2xlVmFsdWUsIHByaW1hcnkuZG9uZSggdXBkYXRlRnVuYyggaSApICkucmVzb2x2ZSwgcHJpbWFyeS5yZWplY3QsXG5cdFx0XHRcdCFyZW1haW5pbmcgKTtcblxuXHRcdFx0Ly8gVXNlIC50aGVuKCkgdG8gdW53cmFwIHNlY29uZGFyeSB0aGVuYWJsZXMgKGNmLiBnaC0zMDAwKVxuXHRcdFx0aWYgKCBwcmltYXJ5LnN0YXRlKCkgPT09IFwicGVuZGluZ1wiIHx8XG5cdFx0XHRcdGlzRnVuY3Rpb24oIHJlc29sdmVWYWx1ZXNbIGkgXSAmJiByZXNvbHZlVmFsdWVzWyBpIF0udGhlbiApICkge1xuXG5cdFx0XHRcdHJldHVybiBwcmltYXJ5LnRoZW4oKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBNdWx0aXBsZSBhcmd1bWVudHMgYXJlIGFnZ3JlZ2F0ZWQgbGlrZSBQcm9taXNlLmFsbCBhcnJheSBlbGVtZW50c1xuXHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0YWRvcHRWYWx1ZSggcmVzb2x2ZVZhbHVlc1sgaSBdLCB1cGRhdGVGdW5jKCBpICksIHByaW1hcnkucmVqZWN0ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHByaW1hcnkucHJvbWlzZSgpO1xuXHR9XG59ICk7XG5cblxuLy8gVGhlc2UgdXN1YWxseSBpbmRpY2F0ZSBhIHByb2dyYW1tZXIgbWlzdGFrZSBkdXJpbmcgZGV2ZWxvcG1lbnQsXG4vLyB3YXJuIGFib3V0IHRoZW0gQVNBUCByYXRoZXIgdGhhbiBzd2FsbG93aW5nIHRoZW0gYnkgZGVmYXVsdC5cbnZhciByZXJyb3JOYW1lcyA9IC9eKEV2YWx8SW50ZXJuYWx8UmFuZ2V8UmVmZXJlbmNlfFN5bnRheHxUeXBlfFVSSSlFcnJvciQvO1xuXG5qUXVlcnkuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayA9IGZ1bmN0aW9uKCBlcnJvciwgc3RhY2sgKSB7XG5cblx0Ly8gU3VwcG9ydDogSUUgOCAtIDkgb25seVxuXHQvLyBDb25zb2xlIGV4aXN0cyB3aGVuIGRldiB0b29scyBhcmUgb3Blbiwgd2hpY2ggY2FuIGhhcHBlbiBhdCBhbnkgdGltZVxuXHRpZiAoIHdpbmRvdy5jb25zb2xlICYmIHdpbmRvdy5jb25zb2xlLndhcm4gJiYgZXJyb3IgJiYgcmVycm9yTmFtZXMudGVzdCggZXJyb3IubmFtZSApICkge1xuXHRcdHdpbmRvdy5jb25zb2xlLndhcm4oIFwialF1ZXJ5LkRlZmVycmVkIGV4Y2VwdGlvbjogXCIgKyBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgc3RhY2sgKTtcblx0fVxufTtcblxuXG5cblxualF1ZXJ5LnJlYWR5RXhjZXB0aW9uID0gZnVuY3Rpb24oIGVycm9yICkge1xuXHR3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7XG5cdFx0dGhyb3cgZXJyb3I7XG5cdH0gKTtcbn07XG5cblxuXG5cbi8vIFRoZSBkZWZlcnJlZCB1c2VkIG9uIERPTSByZWFkeVxudmFyIHJlYWR5TGlzdCA9IGpRdWVyeS5EZWZlcnJlZCgpO1xuXG5qUXVlcnkuZm4ucmVhZHkgPSBmdW5jdGlvbiggZm4gKSB7XG5cblx0cmVhZHlMaXN0XG5cdFx0LnRoZW4oIGZuIClcblxuXHRcdC8vIFdyYXAgalF1ZXJ5LnJlYWR5RXhjZXB0aW9uIGluIGEgZnVuY3Rpb24gc28gdGhhdCB0aGUgbG9va3VwXG5cdFx0Ly8gaGFwcGVucyBhdCB0aGUgdGltZSBvZiBlcnJvciBoYW5kbGluZyBpbnN0ZWFkIG9mIGNhbGxiYWNrXG5cdFx0Ly8gcmVnaXN0cmF0aW9uLlxuXHRcdC5jYXRjaCggZnVuY3Rpb24oIGVycm9yICkge1xuXHRcdFx0alF1ZXJ5LnJlYWR5RXhjZXB0aW9uKCBlcnJvciApO1xuXHRcdH0gKTtcblxuXHRyZXR1cm4gdGhpcztcbn07XG5cbmpRdWVyeS5leHRlbmQoIHtcblxuXHQvLyBJcyB0aGUgRE9NIHJlYWR5IHRvIGJlIHVzZWQ/IFNldCB0byB0cnVlIG9uY2UgaXQgb2NjdXJzLlxuXHRpc1JlYWR5OiBmYWxzZSxcblxuXHQvLyBBIGNvdW50ZXIgdG8gdHJhY2sgaG93IG1hbnkgaXRlbXMgdG8gd2FpdCBmb3IgYmVmb3JlXG5cdC8vIHRoZSByZWFkeSBldmVudCBmaXJlcy4gU2VlIHRyYWMtNjc4MVxuXHRyZWFkeVdhaXQ6IDEsXG5cblx0Ly8gSGFuZGxlIHdoZW4gdGhlIERPTSBpcyByZWFkeVxuXHRyZWFkeTogZnVuY3Rpb24oIHdhaXQgKSB7XG5cblx0XHQvLyBBYm9ydCBpZiB0aGVyZSBhcmUgcGVuZGluZyBob2xkcyBvciB3ZSdyZSBhbHJlYWR5IHJlYWR5XG5cdFx0aWYgKCB3YWl0ID09PSB0cnVlID8gLS1qUXVlcnkucmVhZHlXYWl0IDogalF1ZXJ5LmlzUmVhZHkgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gUmVtZW1iZXIgdGhhdCB0aGUgRE9NIGlzIHJlYWR5XG5cdFx0alF1ZXJ5LmlzUmVhZHkgPSB0cnVlO1xuXG5cdFx0Ly8gSWYgYSBub3JtYWwgRE9NIFJlYWR5IGV2ZW50IGZpcmVkLCBkZWNyZW1lbnQsIGFuZCB3YWl0IGlmIG5lZWQgYmVcblx0XHRpZiAoIHdhaXQgIT09IHRydWUgJiYgLS1qUXVlcnkucmVhZHlXYWl0ID4gMCApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBJZiB0aGVyZSBhcmUgZnVuY3Rpb25zIGJvdW5kLCB0byBleGVjdXRlXG5cdFx0cmVhZHlMaXN0LnJlc29sdmVXaXRoKCBkb2N1bWVudCwgWyBqUXVlcnkgXSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5yZWFkeS50aGVuID0gcmVhZHlMaXN0LnRoZW47XG5cbi8vIFRoZSByZWFkeSBldmVudCBoYW5kbGVyIGFuZCBzZWxmIGNsZWFudXAgbWV0aG9kXG5mdW5jdGlvbiBjb21wbGV0ZWQoKSB7XG5cdGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIFwiRE9NQ29udGVudExvYWRlZFwiLCBjb21wbGV0ZWQgKTtcblx0d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIFwibG9hZFwiLCBjb21wbGV0ZWQgKTtcblx0alF1ZXJ5LnJlYWR5KCk7XG59XG5cbi8vIENhdGNoIGNhc2VzIHdoZXJlICQoZG9jdW1lbnQpLnJlYWR5KCkgaXMgY2FsbGVkXG4vLyBhZnRlciB0aGUgYnJvd3NlciBldmVudCBoYXMgYWxyZWFkeSBvY2N1cnJlZC5cbi8vIFN1cHBvcnQ6IElFIDw9OSAtIDEwIG9ubHlcbi8vIE9sZGVyIElFIHNvbWV0aW1lcyBzaWduYWxzIFwiaW50ZXJhY3RpdmVcIiB0b28gc29vblxuaWYgKCBkb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImNvbXBsZXRlXCIgfHxcblx0KCBkb2N1bWVudC5yZWFkeVN0YXRlICE9PSBcImxvYWRpbmdcIiAmJiAhZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsICkgKSB7XG5cblx0Ly8gSGFuZGxlIGl0IGFzeW5jaHJvbm91c2x5IHRvIGFsbG93IHNjcmlwdHMgdGhlIG9wcG9ydHVuaXR5IHRvIGRlbGF5IHJlYWR5XG5cdHdpbmRvdy5zZXRUaW1lb3V0KCBqUXVlcnkucmVhZHkgKTtcblxufSBlbHNlIHtcblxuXHQvLyBVc2UgdGhlIGhhbmR5IGV2ZW50IGNhbGxiYWNrXG5cdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIFwiRE9NQ29udGVudExvYWRlZFwiLCBjb21wbGV0ZWQgKTtcblxuXHQvLyBBIGZhbGxiYWNrIHRvIHdpbmRvdy5vbmxvYWQsIHRoYXQgd2lsbCBhbHdheXMgd29ya1xuXHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggXCJsb2FkXCIsIGNvbXBsZXRlZCApO1xufVxuXG5cblxuXG4vLyBNdWx0aWZ1bmN0aW9uYWwgbWV0aG9kIHRvIGdldCBhbmQgc2V0IHZhbHVlcyBvZiBhIGNvbGxlY3Rpb25cbi8vIFRoZSB2YWx1ZS9zIGNhbiBvcHRpb25hbGx5IGJlIGV4ZWN1dGVkIGlmIGl0J3MgYSBmdW5jdGlvblxudmFyIGFjY2VzcyA9IGZ1bmN0aW9uKCBlbGVtcywgZm4sIGtleSwgdmFsdWUsIGNoYWluYWJsZSwgZW1wdHlHZXQsIHJhdyApIHtcblx0dmFyIGkgPSAwLFxuXHRcdGxlbiA9IGVsZW1zLmxlbmd0aCxcblx0XHRidWxrID0ga2V5ID09IG51bGw7XG5cblx0Ly8gU2V0cyBtYW55IHZhbHVlc1xuXHRpZiAoIHRvVHlwZSgga2V5ICkgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0Y2hhaW5hYmxlID0gdHJ1ZTtcblx0XHRmb3IgKCBpIGluIGtleSApIHtcblx0XHRcdGFjY2VzcyggZWxlbXMsIGZuLCBpLCBrZXlbIGkgXSwgdHJ1ZSwgZW1wdHlHZXQsIHJhdyApO1xuXHRcdH1cblxuXHQvLyBTZXRzIG9uZSB2YWx1ZVxuXHR9IGVsc2UgaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdGNoYWluYWJsZSA9IHRydWU7XG5cblx0XHRpZiAoICFpc0Z1bmN0aW9uKCB2YWx1ZSApICkge1xuXHRcdFx0cmF3ID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZiAoIGJ1bGsgKSB7XG5cblx0XHRcdC8vIEJ1bGsgb3BlcmF0aW9ucyBydW4gYWdhaW5zdCB0aGUgZW50aXJlIHNldFxuXHRcdFx0aWYgKCByYXcgKSB7XG5cdFx0XHRcdGZuLmNhbGwoIGVsZW1zLCB2YWx1ZSApO1xuXHRcdFx0XHRmbiA9IG51bGw7XG5cblx0XHRcdC8vIC4uLmV4Y2VwdCB3aGVuIGV4ZWN1dGluZyBmdW5jdGlvbiB2YWx1ZXNcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGJ1bGsgPSBmbjtcblx0XHRcdFx0Zm4gPSBmdW5jdGlvbiggZWxlbSwgX2tleSwgdmFsdWUgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGJ1bGsuY2FsbCggalF1ZXJ5KCBlbGVtICksIHZhbHVlICk7XG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCBmbiApIHtcblx0XHRcdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0XHRmbihcblx0XHRcdFx0XHRlbGVtc1sgaSBdLCBrZXksIHJhdyA/XG5cdFx0XHRcdFx0XHR2YWx1ZSA6XG5cdFx0XHRcdFx0XHR2YWx1ZS5jYWxsKCBlbGVtc1sgaSBdLCBpLCBmbiggZWxlbXNbIGkgXSwga2V5ICkgKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGlmICggY2hhaW5hYmxlICkge1xuXHRcdHJldHVybiBlbGVtcztcblx0fVxuXG5cdC8vIEdldHNcblx0aWYgKCBidWxrICkge1xuXHRcdHJldHVybiBmbi5jYWxsKCBlbGVtcyApO1xuXHR9XG5cblx0cmV0dXJuIGxlbiA/IGZuKCBlbGVtc1sgMCBdLCBrZXkgKSA6IGVtcHR5R2V0O1xufTtcblxuXG4vLyBNYXRjaGVzIGRhc2hlZCBzdHJpbmcgZm9yIGNhbWVsaXppbmdcbnZhciBybXNQcmVmaXggPSAvXi1tcy0vLFxuXHRyZGFzaEFscGhhID0gLy0oW2Etel0pL2c7XG5cbi8vIFVzZWQgYnkgY2FtZWxDYXNlIGFzIGNhbGxiYWNrIHRvIHJlcGxhY2UoKVxuZnVuY3Rpb24gZmNhbWVsQ2FzZSggX2FsbCwgbGV0dGVyICkge1xuXHRyZXR1cm4gbGV0dGVyLnRvVXBwZXJDYXNlKCk7XG59XG5cbi8vIENvbnZlcnQgZGFzaGVkIHRvIGNhbWVsQ2FzZTsgdXNlZCBieSB0aGUgY3NzIGFuZCBkYXRhIG1vZHVsZXNcbi8vIFN1cHBvcnQ6IElFIDw9OSAtIDExLCBFZGdlIDEyIC0gMTVcbi8vIE1pY3Jvc29mdCBmb3Jnb3QgdG8gaHVtcCB0aGVpciB2ZW5kb3IgcHJlZml4ICh0cmFjLTk1NzIpXG5mdW5jdGlvbiBjYW1lbENhc2UoIHN0cmluZyApIHtcblx0cmV0dXJuIHN0cmluZy5yZXBsYWNlKCBybXNQcmVmaXgsIFwibXMtXCIgKS5yZXBsYWNlKCByZGFzaEFscGhhLCBmY2FtZWxDYXNlICk7XG59XG52YXIgYWNjZXB0RGF0YSA9IGZ1bmN0aW9uKCBvd25lciApIHtcblxuXHQvLyBBY2NlcHRzIG9ubHk6XG5cdC8vICAtIE5vZGVcblx0Ly8gICAgLSBOb2RlLkVMRU1FTlRfTk9ERVxuXHQvLyAgICAtIE5vZGUuRE9DVU1FTlRfTk9ERVxuXHQvLyAgLSBPYmplY3Rcblx0Ly8gICAgLSBBbnlcblx0cmV0dXJuIG93bmVyLm5vZGVUeXBlID09PSAxIHx8IG93bmVyLm5vZGVUeXBlID09PSA5IHx8ICEoICtvd25lci5ub2RlVHlwZSApO1xufTtcblxuXG5cblxuZnVuY3Rpb24gRGF0YSgpIHtcblx0dGhpcy5leHBhbmRvID0galF1ZXJ5LmV4cGFuZG8gKyBEYXRhLnVpZCsrO1xufVxuXG5EYXRhLnVpZCA9IDE7XG5cbkRhdGEucHJvdG90eXBlID0ge1xuXG5cdGNhY2hlOiBmdW5jdGlvbiggb3duZXIgKSB7XG5cblx0XHQvLyBDaGVjayBpZiB0aGUgb3duZXIgb2JqZWN0IGFscmVhZHkgaGFzIGEgY2FjaGVcblx0XHR2YXIgdmFsdWUgPSBvd25lclsgdGhpcy5leHBhbmRvIF07XG5cblx0XHQvLyBJZiBub3QsIGNyZWF0ZSBvbmVcblx0XHRpZiAoICF2YWx1ZSApIHtcblx0XHRcdHZhbHVlID0ge307XG5cblx0XHRcdC8vIFdlIGNhbiBhY2NlcHQgZGF0YSBmb3Igbm9uLWVsZW1lbnQgbm9kZXMgaW4gbW9kZXJuIGJyb3dzZXJzLFxuXHRcdFx0Ly8gYnV0IHdlIHNob3VsZCBub3QsIHNlZSB0cmFjLTgzMzUuXG5cdFx0XHQvLyBBbHdheXMgcmV0dXJuIGFuIGVtcHR5IG9iamVjdC5cblx0XHRcdGlmICggYWNjZXB0RGF0YSggb3duZXIgKSApIHtcblxuXHRcdFx0XHQvLyBJZiBpdCBpcyBhIG5vZGUgdW5saWtlbHkgdG8gYmUgc3RyaW5naWZ5LWVkIG9yIGxvb3BlZCBvdmVyXG5cdFx0XHRcdC8vIHVzZSBwbGFpbiBhc3NpZ25tZW50XG5cdFx0XHRcdGlmICggb3duZXIubm9kZVR5cGUgKSB7XG5cdFx0XHRcdFx0b3duZXJbIHRoaXMuZXhwYW5kbyBdID0gdmFsdWU7XG5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlIHNlY3VyZSBpdCBpbiBhIG5vbi1lbnVtZXJhYmxlIHByb3BlcnR5XG5cdFx0XHRcdC8vIGNvbmZpZ3VyYWJsZSBtdXN0IGJlIHRydWUgdG8gYWxsb3cgdGhlIHByb3BlcnR5IHRvIGJlXG5cdFx0XHRcdC8vIGRlbGV0ZWQgd2hlbiBkYXRhIGlzIHJlbW92ZWRcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoIG93bmVyLCB0aGlzLmV4cGFuZG8sIHtcblx0XHRcdFx0XHRcdHZhbHVlOiB2YWx1ZSxcblx0XHRcdFx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZVxuXHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB2YWx1ZTtcblx0fSxcblx0c2V0OiBmdW5jdGlvbiggb3duZXIsIGRhdGEsIHZhbHVlICkge1xuXHRcdHZhciBwcm9wLFxuXHRcdFx0Y2FjaGUgPSB0aGlzLmNhY2hlKCBvd25lciApO1xuXG5cdFx0Ly8gSGFuZGxlOiBbIG93bmVyLCBrZXksIHZhbHVlIF0gYXJnc1xuXHRcdC8vIEFsd2F5cyB1c2UgY2FtZWxDYXNlIGtleSAoZ2gtMjI1Nylcblx0XHRpZiAoIHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0Y2FjaGVbIGNhbWVsQ2FzZSggZGF0YSApIF0gPSB2YWx1ZTtcblxuXHRcdC8vIEhhbmRsZTogWyBvd25lciwgeyBwcm9wZXJ0aWVzIH0gXSBhcmdzXG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gQ29weSB0aGUgcHJvcGVydGllcyBvbmUtYnktb25lIHRvIHRoZSBjYWNoZSBvYmplY3Rcblx0XHRcdGZvciAoIHByb3AgaW4gZGF0YSApIHtcblx0XHRcdFx0Y2FjaGVbIGNhbWVsQ2FzZSggcHJvcCApIF0gPSBkYXRhWyBwcm9wIF07XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBjYWNoZTtcblx0fSxcblx0Z2V0OiBmdW5jdGlvbiggb3duZXIsIGtleSApIHtcblx0XHRyZXR1cm4ga2V5ID09PSB1bmRlZmluZWQgP1xuXHRcdFx0dGhpcy5jYWNoZSggb3duZXIgKSA6XG5cblx0XHRcdC8vIEFsd2F5cyB1c2UgY2FtZWxDYXNlIGtleSAoZ2gtMjI1Nylcblx0XHRcdG93bmVyWyB0aGlzLmV4cGFuZG8gXSAmJiBvd25lclsgdGhpcy5leHBhbmRvIF1bIGNhbWVsQ2FzZSgga2V5ICkgXTtcblx0fSxcblx0YWNjZXNzOiBmdW5jdGlvbiggb3duZXIsIGtleSwgdmFsdWUgKSB7XG5cblx0XHQvLyBJbiBjYXNlcyB3aGVyZSBlaXRoZXI6XG5cdFx0Ly9cblx0XHQvLyAgIDEuIE5vIGtleSB3YXMgc3BlY2lmaWVkXG5cdFx0Ly8gICAyLiBBIHN0cmluZyBrZXkgd2FzIHNwZWNpZmllZCwgYnV0IG5vIHZhbHVlIHByb3ZpZGVkXG5cdFx0Ly9cblx0XHQvLyBUYWtlIHRoZSBcInJlYWRcIiBwYXRoIGFuZCBhbGxvdyB0aGUgZ2V0IG1ldGhvZCB0byBkZXRlcm1pbmVcblx0XHQvLyB3aGljaCB2YWx1ZSB0byByZXR1cm4sIHJlc3BlY3RpdmVseSBlaXRoZXI6XG5cdFx0Ly9cblx0XHQvLyAgIDEuIFRoZSBlbnRpcmUgY2FjaGUgb2JqZWN0XG5cdFx0Ly8gICAyLiBUaGUgZGF0YSBzdG9yZWQgYXQgdGhlIGtleVxuXHRcdC8vXG5cdFx0aWYgKCBrZXkgPT09IHVuZGVmaW5lZCB8fFxuXHRcdFx0XHQoICgga2V5ICYmIHR5cGVvZiBrZXkgPT09IFwic3RyaW5nXCIgKSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgKSB7XG5cblx0XHRcdHJldHVybiB0aGlzLmdldCggb3duZXIsIGtleSApO1xuXHRcdH1cblxuXHRcdC8vIFdoZW4gdGhlIGtleSBpcyBub3QgYSBzdHJpbmcsIG9yIGJvdGggYSBrZXkgYW5kIHZhbHVlXG5cdFx0Ly8gYXJlIHNwZWNpZmllZCwgc2V0IG9yIGV4dGVuZCAoZXhpc3Rpbmcgb2JqZWN0cykgd2l0aCBlaXRoZXI6XG5cdFx0Ly9cblx0XHQvLyAgIDEuIEFuIG9iamVjdCBvZiBwcm9wZXJ0aWVzXG5cdFx0Ly8gICAyLiBBIGtleSBhbmQgdmFsdWVcblx0XHQvL1xuXHRcdHRoaXMuc2V0KCBvd25lciwga2V5LCB2YWx1ZSApO1xuXG5cdFx0Ly8gU2luY2UgdGhlIFwic2V0XCIgcGF0aCBjYW4gaGF2ZSB0d28gcG9zc2libGUgZW50cnkgcG9pbnRzXG5cdFx0Ly8gcmV0dXJuIHRoZSBleHBlY3RlZCBkYXRhIGJhc2VkIG9uIHdoaWNoIHBhdGggd2FzIHRha2VuWypdXG5cdFx0cmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IGtleTtcblx0fSxcblx0cmVtb3ZlOiBmdW5jdGlvbiggb3duZXIsIGtleSApIHtcblx0XHR2YXIgaSxcblx0XHRcdGNhY2hlID0gb3duZXJbIHRoaXMuZXhwYW5kbyBdO1xuXG5cdFx0aWYgKCBjYWNoZSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICgga2V5ICE9PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdC8vIFN1cHBvcnQgYXJyYXkgb3Igc3BhY2Ugc2VwYXJhdGVkIHN0cmluZyBvZiBrZXlzXG5cdFx0XHRpZiAoIEFycmF5LmlzQXJyYXkoIGtleSApICkge1xuXG5cdFx0XHRcdC8vIElmIGtleSBpcyBhbiBhcnJheSBvZiBrZXlzLi4uXG5cdFx0XHRcdC8vIFdlIGFsd2F5cyBzZXQgY2FtZWxDYXNlIGtleXMsIHNvIHJlbW92ZSB0aGF0LlxuXHRcdFx0XHRrZXkgPSBrZXkubWFwKCBjYW1lbENhc2UgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGtleSA9IGNhbWVsQ2FzZSgga2V5ICk7XG5cblx0XHRcdFx0Ly8gSWYgYSBrZXkgd2l0aCB0aGUgc3BhY2VzIGV4aXN0cywgdXNlIGl0LlxuXHRcdFx0XHQvLyBPdGhlcndpc2UsIGNyZWF0ZSBhbiBhcnJheSBieSBtYXRjaGluZyBub24td2hpdGVzcGFjZVxuXHRcdFx0XHRrZXkgPSBrZXkgaW4gY2FjaGUgP1xuXHRcdFx0XHRcdFsga2V5IF0gOlxuXHRcdFx0XHRcdCgga2V5Lm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW10gKTtcblx0XHRcdH1cblxuXHRcdFx0aSA9IGtleS5sZW5ndGg7XG5cblx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRkZWxldGUgY2FjaGVbIGtleVsgaSBdIF07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gUmVtb3ZlIHRoZSBleHBhbmRvIGlmIHRoZXJlJ3Mgbm8gbW9yZSBkYXRhXG5cdFx0aWYgKCBrZXkgPT09IHVuZGVmaW5lZCB8fCBqUXVlcnkuaXNFbXB0eU9iamVjdCggY2FjaGUgKSApIHtcblxuXHRcdFx0Ly8gU3VwcG9ydDogQ2hyb21lIDw9MzUgLSA0NVxuXHRcdFx0Ly8gV2Via2l0ICYgQmxpbmsgcGVyZm9ybWFuY2Ugc3VmZmVycyB3aGVuIGRlbGV0aW5nIHByb3BlcnRpZXNcblx0XHRcdC8vIGZyb20gRE9NIG5vZGVzLCBzbyBzZXQgdG8gdW5kZWZpbmVkIGluc3RlYWRcblx0XHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTM3ODYwNyAoYnVnIHJlc3RyaWN0ZWQpXG5cdFx0XHRpZiAoIG93bmVyLm5vZGVUeXBlICkge1xuXHRcdFx0XHRvd25lclsgdGhpcy5leHBhbmRvIF0gPSB1bmRlZmluZWQ7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkZWxldGUgb3duZXJbIHRoaXMuZXhwYW5kbyBdO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0aGFzRGF0YTogZnVuY3Rpb24oIG93bmVyICkge1xuXHRcdHZhciBjYWNoZSA9IG93bmVyWyB0aGlzLmV4cGFuZG8gXTtcblx0XHRyZXR1cm4gY2FjaGUgIT09IHVuZGVmaW5lZCAmJiAhalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGNhY2hlICk7XG5cdH1cbn07XG52YXIgZGF0YVByaXYgPSBuZXcgRGF0YSgpO1xuXG52YXIgZGF0YVVzZXIgPSBuZXcgRGF0YSgpO1xuXG5cblxuLy9cdEltcGxlbWVudGF0aW9uIFN1bW1hcnlcbi8vXG4vL1x0MS4gRW5mb3JjZSBBUEkgc3VyZmFjZSBhbmQgc2VtYW50aWMgY29tcGF0aWJpbGl0eSB3aXRoIDEuOS54IGJyYW5jaFxuLy9cdDIuIEltcHJvdmUgdGhlIG1vZHVsZSdzIG1haW50YWluYWJpbGl0eSBieSByZWR1Y2luZyB0aGUgc3RvcmFnZVxuLy9cdFx0cGF0aHMgdG8gYSBzaW5nbGUgbWVjaGFuaXNtLlxuLy9cdDMuIFVzZSB0aGUgc2FtZSBzaW5nbGUgbWVjaGFuaXNtIHRvIHN1cHBvcnQgXCJwcml2YXRlXCIgYW5kIFwidXNlclwiIGRhdGEuXG4vL1x0NC4gX05ldmVyXyBleHBvc2UgXCJwcml2YXRlXCIgZGF0YSB0byB1c2VyIGNvZGUgKFRPRE86IERyb3AgX2RhdGEsIF9yZW1vdmVEYXRhKVxuLy9cdDUuIEF2b2lkIGV4cG9zaW5nIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb24gdXNlciBvYmplY3RzIChlZy4gZXhwYW5kbyBwcm9wZXJ0aWVzKVxuLy9cdDYuIFByb3ZpZGUgYSBjbGVhciBwYXRoIGZvciBpbXBsZW1lbnRhdGlvbiB1cGdyYWRlIHRvIFdlYWtNYXAgaW4gMjAxNFxuXG52YXIgcmJyYWNlID0gL14oPzpcXHtbXFx3XFxXXSpcXH18XFxbW1xcd1xcV10qXFxdKSQvLFxuXHRybXVsdGlEYXNoID0gL1tBLVpdL2c7XG5cbmZ1bmN0aW9uIGdldERhdGEoIGRhdGEgKSB7XG5cdGlmICggZGF0YSA9PT0gXCJ0cnVlXCIgKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRpZiAoIGRhdGEgPT09IFwiZmFsc2VcIiApIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRpZiAoIGRhdGEgPT09IFwibnVsbFwiICkge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0Ly8gT25seSBjb252ZXJ0IHRvIGEgbnVtYmVyIGlmIGl0IGRvZXNuJ3QgY2hhbmdlIHRoZSBzdHJpbmdcblx0aWYgKCBkYXRhID09PSArZGF0YSArIFwiXCIgKSB7XG5cdFx0cmV0dXJuICtkYXRhO1xuXHR9XG5cblx0aWYgKCByYnJhY2UudGVzdCggZGF0YSApICkge1xuXHRcdHJldHVybiBKU09OLnBhcnNlKCBkYXRhICk7XG5cdH1cblxuXHRyZXR1cm4gZGF0YTtcbn1cblxuZnVuY3Rpb24gZGF0YUF0dHIoIGVsZW0sIGtleSwgZGF0YSApIHtcblx0dmFyIG5hbWU7XG5cblx0Ly8gSWYgbm90aGluZyB3YXMgZm91bmQgaW50ZXJuYWxseSwgdHJ5IHRvIGZldGNoIGFueVxuXHQvLyBkYXRhIGZyb20gdGhlIEhUTUw1IGRhdGEtKiBhdHRyaWJ1dGVcblx0aWYgKCBkYXRhID09PSB1bmRlZmluZWQgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRuYW1lID0gXCJkYXRhLVwiICsga2V5LnJlcGxhY2UoIHJtdWx0aURhc2gsIFwiLSQmXCIgKS50b0xvd2VyQ2FzZSgpO1xuXHRcdGRhdGEgPSBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApO1xuXG5cdFx0aWYgKCB0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGRhdGEgPSBnZXREYXRhKCBkYXRhICk7XG5cdFx0XHR9IGNhdGNoICggZSApIHt9XG5cblx0XHRcdC8vIE1ha2Ugc3VyZSB3ZSBzZXQgdGhlIGRhdGEgc28gaXQgaXNuJ3QgY2hhbmdlZCBsYXRlclxuXHRcdFx0ZGF0YVVzZXIuc2V0KCBlbGVtLCBrZXksIGRhdGEgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGF0YSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGRhdGE7XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0aGFzRGF0YTogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGRhdGFVc2VyLmhhc0RhdGEoIGVsZW0gKSB8fCBkYXRhUHJpdi5oYXNEYXRhKCBlbGVtICk7XG5cdH0sXG5cblx0ZGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGRhdGEgKSB7XG5cdFx0cmV0dXJuIGRhdGFVc2VyLmFjY2VzcyggZWxlbSwgbmFtZSwgZGF0YSApO1xuXHR9LFxuXG5cdHJlbW92ZURhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkge1xuXHRcdGRhdGFVc2VyLnJlbW92ZSggZWxlbSwgbmFtZSApO1xuXHR9LFxuXG5cdC8vIFRPRE86IE5vdyB0aGF0IGFsbCBjYWxscyB0byBfZGF0YSBhbmQgX3JlbW92ZURhdGEgaGF2ZSBiZWVuIHJlcGxhY2VkXG5cdC8vIHdpdGggZGlyZWN0IGNhbGxzIHRvIGRhdGFQcml2IG1ldGhvZHMsIHRoZXNlIGNhbiBiZSBkZXByZWNhdGVkLlxuXHRfZGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGRhdGEgKSB7XG5cdFx0cmV0dXJuIGRhdGFQcml2LmFjY2VzcyggZWxlbSwgbmFtZSwgZGF0YSApO1xuXHR9LFxuXG5cdF9yZW1vdmVEYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHtcblx0XHRkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIG5hbWUgKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGRhdGE6IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkge1xuXHRcdHZhciBpLCBuYW1lLCBkYXRhLFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXSxcblx0XHRcdGF0dHJzID0gZWxlbSAmJiBlbGVtLmF0dHJpYnV0ZXM7XG5cblx0XHQvLyBHZXRzIGFsbCB2YWx1ZXNcblx0XHRpZiAoIGtleSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0aWYgKCB0aGlzLmxlbmd0aCApIHtcblx0XHRcdFx0ZGF0YSA9IGRhdGFVc2VyLmdldCggZWxlbSApO1xuXG5cdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAhZGF0YVByaXYuZ2V0KCBlbGVtLCBcImhhc0RhdGFBdHRyc1wiICkgKSB7XG5cdFx0XHRcdFx0aSA9IGF0dHJzLmxlbmd0aDtcblx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgMTEgb25seVxuXHRcdFx0XHRcdFx0Ly8gVGhlIGF0dHJzIGVsZW1lbnRzIGNhbiBiZSBudWxsICh0cmFjLTE0ODk0KVxuXHRcdFx0XHRcdFx0aWYgKCBhdHRyc1sgaSBdICkge1xuXHRcdFx0XHRcdFx0XHRuYW1lID0gYXR0cnNbIGkgXS5uYW1lO1xuXHRcdFx0XHRcdFx0XHRpZiAoIG5hbWUuaW5kZXhPZiggXCJkYXRhLVwiICkgPT09IDAgKSB7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZSA9IGNhbWVsQ2FzZSggbmFtZS5zbGljZSggNSApICk7XG5cdFx0XHRcdFx0XHRcdFx0ZGF0YUF0dHIoIGVsZW0sIG5hbWUsIGRhdGFbIG5hbWUgXSApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGRhdGFQcml2LnNldCggZWxlbSwgXCJoYXNEYXRhQXR0cnNcIiwgdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBkYXRhO1xuXHRcdH1cblxuXHRcdC8vIFNldHMgbXVsdGlwbGUgdmFsdWVzXG5cdFx0aWYgKCB0eXBlb2Yga2V5ID09PSBcIm9iamVjdFwiICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGRhdGFVc2VyLnNldCggdGhpcywga2V5ICk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0dmFyIGRhdGE7XG5cblx0XHRcdC8vIFRoZSBjYWxsaW5nIGpRdWVyeSBvYmplY3QgKGVsZW1lbnQgbWF0Y2hlcykgaXMgbm90IGVtcHR5XG5cdFx0XHQvLyAoYW5kIHRoZXJlZm9yZSBoYXMgYW4gZWxlbWVudCBhcHBlYXJzIGF0IHRoaXNbIDAgXSkgYW5kIHRoZVxuXHRcdFx0Ly8gYHZhbHVlYCBwYXJhbWV0ZXIgd2FzIG5vdCB1bmRlZmluZWQuIEFuIGVtcHR5IGpRdWVyeSBvYmplY3Rcblx0XHRcdC8vIHdpbGwgcmVzdWx0IGluIGB1bmRlZmluZWRgIGZvciBlbGVtID0gdGhpc1sgMCBdIHdoaWNoIHdpbGxcblx0XHRcdC8vIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhbiBhdHRlbXB0IHRvIHJlYWQgYSBkYXRhIGNhY2hlIGlzIG1hZGUuXG5cdFx0XHRpZiAoIGVsZW0gJiYgdmFsdWUgPT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0XHQvLyBBdHRlbXB0IHRvIGdldCBkYXRhIGZyb20gdGhlIGNhY2hlXG5cdFx0XHRcdC8vIFRoZSBrZXkgd2lsbCBhbHdheXMgYmUgY2FtZWxDYXNlZCBpbiBEYXRhXG5cdFx0XHRcdGRhdGEgPSBkYXRhVXNlci5nZXQoIGVsZW0sIGtleSApO1xuXHRcdFx0XHRpZiAoIGRhdGEgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRyZXR1cm4gZGF0YTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEF0dGVtcHQgdG8gXCJkaXNjb3ZlclwiIHRoZSBkYXRhIGluXG5cdFx0XHRcdC8vIEhUTUw1IGN1c3RvbSBkYXRhLSogYXR0cnNcblx0XHRcdFx0ZGF0YSA9IGRhdGFBdHRyKCBlbGVtLCBrZXkgKTtcblx0XHRcdFx0aWYgKCBkYXRhICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBXZSB0cmllZCByZWFsbHkgaGFyZCwgYnV0IHRoZSBkYXRhIGRvZXNuJ3QgZXhpc3QuXG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2V0IHRoZSBkYXRhLi4uXG5cdFx0XHR0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHRcdC8vIFdlIGFsd2F5cyBzdG9yZSB0aGUgY2FtZWxDYXNlZCBrZXlcblx0XHRcdFx0ZGF0YVVzZXIuc2V0KCB0aGlzLCBrZXksIHZhbHVlICk7XG5cdFx0XHR9ICk7XG5cdFx0fSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxLCBudWxsLCB0cnVlICk7XG5cdH0sXG5cblx0cmVtb3ZlRGF0YTogZnVuY3Rpb24oIGtleSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGRhdGFVc2VyLnJlbW92ZSggdGhpcywga2V5ICk7XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cblxualF1ZXJ5LmV4dGVuZCgge1xuXHRxdWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGRhdGEgKSB7XG5cdFx0dmFyIHF1ZXVlO1xuXG5cdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0dHlwZSA9ICggdHlwZSB8fCBcImZ4XCIgKSArIFwicXVldWVcIjtcblx0XHRcdHF1ZXVlID0gZGF0YVByaXYuZ2V0KCBlbGVtLCB0eXBlICk7XG5cblx0XHRcdC8vIFNwZWVkIHVwIGRlcXVldWUgYnkgZ2V0dGluZyBvdXQgcXVpY2tseSBpZiB0aGlzIGlzIGp1c3QgYSBsb29rdXBcblx0XHRcdGlmICggZGF0YSApIHtcblx0XHRcdFx0aWYgKCAhcXVldWUgfHwgQXJyYXkuaXNBcnJheSggZGF0YSApICkge1xuXHRcdFx0XHRcdHF1ZXVlID0gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCB0eXBlLCBqUXVlcnkubWFrZUFycmF5KCBkYXRhICkgKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRxdWV1ZS5wdXNoKCBkYXRhICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBxdWV1ZSB8fCBbXTtcblx0XHR9XG5cdH0sXG5cblx0ZGVxdWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7XG5cdFx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXG5cdFx0dmFyIHF1ZXVlID0galF1ZXJ5LnF1ZXVlKCBlbGVtLCB0eXBlICksXG5cdFx0XHRzdGFydExlbmd0aCA9IHF1ZXVlLmxlbmd0aCxcblx0XHRcdGZuID0gcXVldWUuc2hpZnQoKSxcblx0XHRcdGhvb2tzID0galF1ZXJ5Ll9xdWV1ZUhvb2tzKCBlbGVtLCB0eXBlICksXG5cdFx0XHRuZXh0ID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGpRdWVyeS5kZXF1ZXVlKCBlbGVtLCB0eXBlICk7XG5cdFx0XHR9O1xuXG5cdFx0Ly8gSWYgdGhlIGZ4IHF1ZXVlIGlzIGRlcXVldWVkLCBhbHdheXMgcmVtb3ZlIHRoZSBwcm9ncmVzcyBzZW50aW5lbFxuXHRcdGlmICggZm4gPT09IFwiaW5wcm9ncmVzc1wiICkge1xuXHRcdFx0Zm4gPSBxdWV1ZS5zaGlmdCgpO1xuXHRcdFx0c3RhcnRMZW5ndGgtLTtcblx0XHR9XG5cblx0XHRpZiAoIGZuICkge1xuXG5cdFx0XHQvLyBBZGQgYSBwcm9ncmVzcyBzZW50aW5lbCB0byBwcmV2ZW50IHRoZSBmeCBxdWV1ZSBmcm9tIGJlaW5nXG5cdFx0XHQvLyBhdXRvbWF0aWNhbGx5IGRlcXVldWVkXG5cdFx0XHRpZiAoIHR5cGUgPT09IFwiZnhcIiApIHtcblx0XHRcdFx0cXVldWUudW5zaGlmdCggXCJpbnByb2dyZXNzXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ2xlYXIgdXAgdGhlIGxhc3QgcXVldWUgc3RvcCBmdW5jdGlvblxuXHRcdFx0ZGVsZXRlIGhvb2tzLnN0b3A7XG5cdFx0XHRmbi5jYWxsKCBlbGVtLCBuZXh0LCBob29rcyApO1xuXHRcdH1cblxuXHRcdGlmICggIXN0YXJ0TGVuZ3RoICYmIGhvb2tzICkge1xuXHRcdFx0aG9va3MuZW1wdHkuZmlyZSgpO1xuXHRcdH1cblx0fSxcblxuXHQvLyBOb3QgcHVibGljIC0gZ2VuZXJhdGUgYSBxdWV1ZUhvb2tzIG9iamVjdCwgb3IgcmV0dXJuIHRoZSBjdXJyZW50IG9uZVxuXHRfcXVldWVIb29rczogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7XG5cdFx0dmFyIGtleSA9IHR5cGUgKyBcInF1ZXVlSG9va3NcIjtcblx0XHRyZXR1cm4gZGF0YVByaXYuZ2V0KCBlbGVtLCBrZXkgKSB8fCBkYXRhUHJpdi5hY2Nlc3MoIGVsZW0sIGtleSwge1xuXHRcdFx0ZW1wdHk6IGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLmFkZCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGRhdGFQcml2LnJlbW92ZSggZWxlbSwgWyB0eXBlICsgXCJxdWV1ZVwiLCBrZXkgXSApO1xuXHRcdFx0fSApXG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0cXVldWU6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkge1xuXHRcdHZhciBzZXR0ZXIgPSAyO1xuXG5cdFx0aWYgKCB0eXBlb2YgdHlwZSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGRhdGEgPSB0eXBlO1xuXHRcdFx0dHlwZSA9IFwiZnhcIjtcblx0XHRcdHNldHRlci0tO1xuXHRcdH1cblxuXHRcdGlmICggYXJndW1lbnRzLmxlbmd0aCA8IHNldHRlciApIHtcblx0XHRcdHJldHVybiBqUXVlcnkucXVldWUoIHRoaXNbIDAgXSwgdHlwZSApO1xuXHRcdH1cblxuXHRcdHJldHVybiBkYXRhID09PSB1bmRlZmluZWQgP1xuXHRcdFx0dGhpcyA6XG5cdFx0XHR0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgcXVldWUgPSBqUXVlcnkucXVldWUoIHRoaXMsIHR5cGUsIGRhdGEgKTtcblxuXHRcdFx0XHQvLyBFbnN1cmUgYSBob29rcyBmb3IgdGhpcyBxdWV1ZVxuXHRcdFx0XHRqUXVlcnkuX3F1ZXVlSG9va3MoIHRoaXMsIHR5cGUgKTtcblxuXHRcdFx0XHRpZiAoIHR5cGUgPT09IFwiZnhcIiAmJiBxdWV1ZVsgMCBdICE9PSBcImlucHJvZ3Jlc3NcIiApIHtcblx0XHRcdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdH0sXG5cdGRlcXVldWU6IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0alF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTtcblx0XHR9ICk7XG5cdH0sXG5cdGNsZWFyUXVldWU6IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdHJldHVybiB0aGlzLnF1ZXVlKCB0eXBlIHx8IFwiZnhcIiwgW10gKTtcblx0fSxcblxuXHQvLyBHZXQgYSBwcm9taXNlIHJlc29sdmVkIHdoZW4gcXVldWVzIG9mIGEgY2VydGFpbiB0eXBlXG5cdC8vIGFyZSBlbXB0aWVkIChmeCBpcyB0aGUgdHlwZSBieSBkZWZhdWx0KVxuXHRwcm9taXNlOiBmdW5jdGlvbiggdHlwZSwgb2JqICkge1xuXHRcdHZhciB0bXAsXG5cdFx0XHRjb3VudCA9IDEsXG5cdFx0XHRkZWZlciA9IGpRdWVyeS5EZWZlcnJlZCgpLFxuXHRcdFx0ZWxlbWVudHMgPSB0aGlzLFxuXHRcdFx0aSA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0cmVzb2x2ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoICEoIC0tY291bnQgKSApIHtcblx0XHRcdFx0XHRkZWZlci5yZXNvbHZlV2l0aCggZWxlbWVudHMsIFsgZWxlbWVudHMgXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXG5cdFx0aWYgKCB0eXBlb2YgdHlwZSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdG9iaiA9IHR5cGU7XG5cdFx0XHR0eXBlID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHR0eXBlID0gdHlwZSB8fCBcImZ4XCI7XG5cblx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdHRtcCA9IGRhdGFQcml2LmdldCggZWxlbWVudHNbIGkgXSwgdHlwZSArIFwicXVldWVIb29rc1wiICk7XG5cdFx0XHRpZiAoIHRtcCAmJiB0bXAuZW1wdHkgKSB7XG5cdFx0XHRcdGNvdW50Kys7XG5cdFx0XHRcdHRtcC5lbXB0eS5hZGQoIHJlc29sdmUgKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmVzb2x2ZSgpO1xuXHRcdHJldHVybiBkZWZlci5wcm9taXNlKCBvYmogKTtcblx0fVxufSApO1xudmFyIHBudW0gPSAoIC9bKy1dPyg/OlxcZCpcXC58KVxcZCsoPzpbZUVdWystXT9cXGQrfCkvICkuc291cmNlO1xuXG52YXIgcmNzc051bSA9IG5ldyBSZWdFeHAoIFwiXig/OihbKy1dKT18KShcIiArIHBudW0gKyBcIikoW2EteiVdKikkXCIsIFwiaVwiICk7XG5cblxudmFyIGNzc0V4cGFuZCA9IFsgXCJUb3BcIiwgXCJSaWdodFwiLCBcIkJvdHRvbVwiLCBcIkxlZnRcIiBdO1xuXG52YXIgZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG5cblxuXHR2YXIgaXNBdHRhY2hlZCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICk7XG5cdFx0fSxcblx0XHRjb21wb3NlZCA9IHsgY29tcG9zZWQ6IHRydWUgfTtcblxuXHQvLyBTdXBwb3J0OiBJRSA5IC0gMTErLCBFZGdlIDEyIC0gMTgrLCBpT1MgMTAuMCAtIDEwLjIgb25seVxuXHQvLyBDaGVjayBhdHRhY2htZW50IGFjcm9zcyBzaGFkb3cgRE9NIGJvdW5kYXJpZXMgd2hlbiBwb3NzaWJsZSAoZ2gtMzUwNClcblx0Ly8gU3VwcG9ydDogaU9TIDEwLjAtMTAuMiBvbmx5XG5cdC8vIEVhcmx5IGlPUyAxMCB2ZXJzaW9ucyBzdXBwb3J0IGBhdHRhY2hTaGFkb3dgIGJ1dCBub3QgYGdldFJvb3ROb2RlYCxcblx0Ly8gbGVhZGluZyB0byBlcnJvcnMuIFdlIG5lZWQgdG8gY2hlY2sgZm9yIGBnZXRSb290Tm9kZWAuXG5cdGlmICggZG9jdW1lbnRFbGVtZW50LmdldFJvb3ROb2RlICkge1xuXHRcdGlzQXR0YWNoZWQgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApIHx8XG5cdFx0XHRcdGVsZW0uZ2V0Um9vdE5vZGUoIGNvbXBvc2VkICkgPT09IGVsZW0ub3duZXJEb2N1bWVudDtcblx0XHR9O1xuXHR9XG52YXIgaXNIaWRkZW5XaXRoaW5UcmVlID0gZnVuY3Rpb24oIGVsZW0sIGVsICkge1xuXG5cdFx0Ly8gaXNIaWRkZW5XaXRoaW5UcmVlIG1pZ2h0IGJlIGNhbGxlZCBmcm9tIGpRdWVyeSNmaWx0ZXIgZnVuY3Rpb247XG5cdFx0Ly8gaW4gdGhhdCBjYXNlLCBlbGVtZW50IHdpbGwgYmUgc2Vjb25kIGFyZ3VtZW50XG5cdFx0ZWxlbSA9IGVsIHx8IGVsZW07XG5cblx0XHQvLyBJbmxpbmUgc3R5bGUgdHJ1bXBzIGFsbFxuXHRcdHJldHVybiBlbGVtLnN0eWxlLmRpc3BsYXkgPT09IFwibm9uZVwiIHx8XG5cdFx0XHRlbGVtLnN0eWxlLmRpc3BsYXkgPT09IFwiXCIgJiZcblxuXHRcdFx0Ly8gT3RoZXJ3aXNlLCBjaGVjayBjb21wdXRlZCBzdHlsZVxuXHRcdFx0Ly8gU3VwcG9ydDogRmlyZWZveCA8PTQzIC0gNDVcblx0XHRcdC8vIERpc2Nvbm5lY3RlZCBlbGVtZW50cyBjYW4gaGF2ZSBjb21wdXRlZCBkaXNwbGF5OiBub25lLCBzbyBmaXJzdCBjb25maXJtIHRoYXQgZWxlbSBpc1xuXHRcdFx0Ly8gaW4gdGhlIGRvY3VtZW50LlxuXHRcdFx0aXNBdHRhY2hlZCggZWxlbSApICYmXG5cblx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICkgPT09IFwibm9uZVwiO1xuXHR9O1xuXG5cblxuZnVuY3Rpb24gYWRqdXN0Q1NTKCBlbGVtLCBwcm9wLCB2YWx1ZVBhcnRzLCB0d2VlbiApIHtcblx0dmFyIGFkanVzdGVkLCBzY2FsZSxcblx0XHRtYXhJdGVyYXRpb25zID0gMjAsXG5cdFx0Y3VycmVudFZhbHVlID0gdHdlZW4gP1xuXHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiB0d2Vlbi5jdXIoKTtcblx0XHRcdH0gOlxuXHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBqUXVlcnkuY3NzKCBlbGVtLCBwcm9wLCBcIlwiICk7XG5cdFx0XHR9LFxuXHRcdGluaXRpYWwgPSBjdXJyZW50VmFsdWUoKSxcblx0XHR1bml0ID0gdmFsdWVQYXJ0cyAmJiB2YWx1ZVBhcnRzWyAzIF0gfHwgKCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gPyBcIlwiIDogXCJweFwiICksXG5cblx0XHQvLyBTdGFydGluZyB2YWx1ZSBjb21wdXRhdGlvbiBpcyByZXF1aXJlZCBmb3IgcG90ZW50aWFsIHVuaXQgbWlzbWF0Y2hlc1xuXHRcdGluaXRpYWxJblVuaXQgPSBlbGVtLm5vZGVUeXBlICYmXG5cdFx0XHQoIGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSB8fCB1bml0ICE9PSBcInB4XCIgJiYgK2luaXRpYWwgKSAmJlxuXHRcdFx0cmNzc051bS5leGVjKCBqUXVlcnkuY3NzKCBlbGVtLCBwcm9wICkgKTtcblxuXHRpZiAoIGluaXRpYWxJblVuaXQgJiYgaW5pdGlhbEluVW5pdFsgMyBdICE9PSB1bml0ICkge1xuXG5cdFx0Ly8gU3VwcG9ydDogRmlyZWZveCA8PTU0XG5cdFx0Ly8gSGFsdmUgdGhlIGl0ZXJhdGlvbiB0YXJnZXQgdmFsdWUgdG8gcHJldmVudCBpbnRlcmZlcmVuY2UgZnJvbSBDU1MgdXBwZXIgYm91bmRzIChnaC0yMTQ0KVxuXHRcdGluaXRpYWwgPSBpbml0aWFsIC8gMjtcblxuXHRcdC8vIFRydXN0IHVuaXRzIHJlcG9ydGVkIGJ5IGpRdWVyeS5jc3Ncblx0XHR1bml0ID0gdW5pdCB8fCBpbml0aWFsSW5Vbml0WyAzIF07XG5cblx0XHQvLyBJdGVyYXRpdmVseSBhcHByb3hpbWF0ZSBmcm9tIGEgbm9uemVybyBzdGFydGluZyBwb2ludFxuXHRcdGluaXRpYWxJblVuaXQgPSAraW5pdGlhbCB8fCAxO1xuXG5cdFx0d2hpbGUgKCBtYXhJdGVyYXRpb25zLS0gKSB7XG5cblx0XHRcdC8vIEV2YWx1YXRlIGFuZCB1cGRhdGUgb3VyIGJlc3QgZ3Vlc3MgKGRvdWJsaW5nIGd1ZXNzZXMgdGhhdCB6ZXJvIG91dCkuXG5cdFx0XHQvLyBGaW5pc2ggaWYgdGhlIHNjYWxlIGVxdWFscyBvciBjcm9zc2VzIDEgKG1ha2luZyB0aGUgb2xkKm5ldyBwcm9kdWN0IG5vbi1wb3NpdGl2ZSkuXG5cdFx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AsIGluaXRpYWxJblVuaXQgKyB1bml0ICk7XG5cdFx0XHRpZiAoICggMSAtIHNjYWxlICkgKiAoIDEgLSAoIHNjYWxlID0gY3VycmVudFZhbHVlKCkgLyBpbml0aWFsIHx8IDAuNSApICkgPD0gMCApIHtcblx0XHRcdFx0bWF4SXRlcmF0aW9ucyA9IDA7XG5cdFx0XHR9XG5cdFx0XHRpbml0aWFsSW5Vbml0ID0gaW5pdGlhbEluVW5pdCAvIHNjYWxlO1xuXG5cdFx0fVxuXG5cdFx0aW5pdGlhbEluVW5pdCA9IGluaXRpYWxJblVuaXQgKiAyO1xuXHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCwgaW5pdGlhbEluVW5pdCArIHVuaXQgKTtcblxuXHRcdC8vIE1ha2Ugc3VyZSB3ZSB1cGRhdGUgdGhlIHR3ZWVuIHByb3BlcnRpZXMgbGF0ZXIgb25cblx0XHR2YWx1ZVBhcnRzID0gdmFsdWVQYXJ0cyB8fCBbXTtcblx0fVxuXG5cdGlmICggdmFsdWVQYXJ0cyApIHtcblx0XHRpbml0aWFsSW5Vbml0ID0gK2luaXRpYWxJblVuaXQgfHwgK2luaXRpYWwgfHwgMDtcblxuXHRcdC8vIEFwcGx5IHJlbGF0aXZlIG9mZnNldCAoKz0vLT0pIGlmIHNwZWNpZmllZFxuXHRcdGFkanVzdGVkID0gdmFsdWVQYXJ0c1sgMSBdID9cblx0XHRcdGluaXRpYWxJblVuaXQgKyAoIHZhbHVlUGFydHNbIDEgXSArIDEgKSAqIHZhbHVlUGFydHNbIDIgXSA6XG5cdFx0XHQrdmFsdWVQYXJ0c1sgMiBdO1xuXHRcdGlmICggdHdlZW4gKSB7XG5cdFx0XHR0d2Vlbi51bml0ID0gdW5pdDtcblx0XHRcdHR3ZWVuLnN0YXJ0ID0gaW5pdGlhbEluVW5pdDtcblx0XHRcdHR3ZWVuLmVuZCA9IGFkanVzdGVkO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gYWRqdXN0ZWQ7XG59XG5cblxudmFyIGRlZmF1bHREaXNwbGF5TWFwID0ge307XG5cbmZ1bmN0aW9uIGdldERlZmF1bHREaXNwbGF5KCBlbGVtICkge1xuXHR2YXIgdGVtcCxcblx0XHRkb2MgPSBlbGVtLm93bmVyRG9jdW1lbnQsXG5cdFx0bm9kZU5hbWUgPSBlbGVtLm5vZGVOYW1lLFxuXHRcdGRpc3BsYXkgPSBkZWZhdWx0RGlzcGxheU1hcFsgbm9kZU5hbWUgXTtcblxuXHRpZiAoIGRpc3BsYXkgKSB7XG5cdFx0cmV0dXJuIGRpc3BsYXk7XG5cdH1cblxuXHR0ZW1wID0gZG9jLmJvZHkuYXBwZW5kQ2hpbGQoIGRvYy5jcmVhdGVFbGVtZW50KCBub2RlTmFtZSApICk7XG5cdGRpc3BsYXkgPSBqUXVlcnkuY3NzKCB0ZW1wLCBcImRpc3BsYXlcIiApO1xuXG5cdHRlbXAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggdGVtcCApO1xuXG5cdGlmICggZGlzcGxheSA9PT0gXCJub25lXCIgKSB7XG5cdFx0ZGlzcGxheSA9IFwiYmxvY2tcIjtcblx0fVxuXHRkZWZhdWx0RGlzcGxheU1hcFsgbm9kZU5hbWUgXSA9IGRpc3BsYXk7XG5cblx0cmV0dXJuIGRpc3BsYXk7XG59XG5cbmZ1bmN0aW9uIHNob3dIaWRlKCBlbGVtZW50cywgc2hvdyApIHtcblx0dmFyIGRpc3BsYXksIGVsZW0sXG5cdFx0dmFsdWVzID0gW10sXG5cdFx0aW5kZXggPSAwLFxuXHRcdGxlbmd0aCA9IGVsZW1lbnRzLmxlbmd0aDtcblxuXHQvLyBEZXRlcm1pbmUgbmV3IGRpc3BsYXkgdmFsdWUgZm9yIGVsZW1lbnRzIHRoYXQgbmVlZCB0byBjaGFuZ2Vcblx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRlbGVtID0gZWxlbWVudHNbIGluZGV4IF07XG5cdFx0aWYgKCAhZWxlbS5zdHlsZSApIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdGRpc3BsYXkgPSBlbGVtLnN0eWxlLmRpc3BsYXk7XG5cdFx0aWYgKCBzaG93ICkge1xuXG5cdFx0XHQvLyBTaW5jZSB3ZSBmb3JjZSB2aXNpYmlsaXR5IHVwb24gY2FzY2FkZS1oaWRkZW4gZWxlbWVudHMsIGFuIGltbWVkaWF0ZSAoYW5kIHNsb3cpXG5cdFx0XHQvLyBjaGVjayBpcyByZXF1aXJlZCBpbiB0aGlzIGZpcnN0IGxvb3AgdW5sZXNzIHdlIGhhdmUgYSBub25lbXB0eSBkaXNwbGF5IHZhbHVlIChlaXRoZXJcblx0XHRcdC8vIGlubGluZSBvciBhYm91dC10by1iZS1yZXN0b3JlZClcblx0XHRcdGlmICggZGlzcGxheSA9PT0gXCJub25lXCIgKSB7XG5cdFx0XHRcdHZhbHVlc1sgaW5kZXggXSA9IGRhdGFQcml2LmdldCggZWxlbSwgXCJkaXNwbGF5XCIgKSB8fCBudWxsO1xuXHRcdFx0XHRpZiAoICF2YWx1ZXNbIGluZGV4IF0gKSB7XG5cdFx0XHRcdFx0ZWxlbS5zdHlsZS5kaXNwbGF5ID0gXCJcIjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKCBlbGVtLnN0eWxlLmRpc3BsYXkgPT09IFwiXCIgJiYgaXNIaWRkZW5XaXRoaW5UcmVlKCBlbGVtICkgKSB7XG5cdFx0XHRcdHZhbHVlc1sgaW5kZXggXSA9IGdldERlZmF1bHREaXNwbGF5KCBlbGVtICk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICggZGlzcGxheSAhPT0gXCJub25lXCIgKSB7XG5cdFx0XHRcdHZhbHVlc1sgaW5kZXggXSA9IFwibm9uZVwiO1xuXG5cdFx0XHRcdC8vIFJlbWVtYmVyIHdoYXQgd2UncmUgb3ZlcndyaXRpbmdcblx0XHRcdFx0ZGF0YVByaXYuc2V0KCBlbGVtLCBcImRpc3BsYXlcIiwgZGlzcGxheSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIFNldCB0aGUgZGlzcGxheSBvZiB0aGUgZWxlbWVudHMgaW4gYSBzZWNvbmQgbG9vcCB0byBhdm9pZCBjb25zdGFudCByZWZsb3dcblx0Zm9yICggaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRpZiAoIHZhbHVlc1sgaW5kZXggXSAhPSBudWxsICkge1xuXHRcdFx0ZWxlbWVudHNbIGluZGV4IF0uc3R5bGUuZGlzcGxheSA9IHZhbHVlc1sgaW5kZXggXTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZWxlbWVudHM7XG59XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0c2hvdzogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHNob3dIaWRlKCB0aGlzLCB0cnVlICk7XG5cdH0sXG5cdGhpZGU6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBzaG93SGlkZSggdGhpcyApO1xuXHR9LFxuXHR0b2dnbGU6IGZ1bmN0aW9uKCBzdGF0ZSApIHtcblx0XHRpZiAoIHR5cGVvZiBzdGF0ZSA9PT0gXCJib29sZWFuXCIgKSB7XG5cdFx0XHRyZXR1cm4gc3RhdGUgPyB0aGlzLnNob3coKSA6IHRoaXMuaGlkZSgpO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCBpc0hpZGRlbldpdGhpblRyZWUoIHRoaXMgKSApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkuc2hvdygpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkuaGlkZSgpO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fVxufSApO1xudmFyIHJjaGVja2FibGVUeXBlID0gKCAvXig/OmNoZWNrYm94fHJhZGlvKSQvaSApO1xuXG52YXIgcnRhZ05hbWUgPSAoIC88KFthLXpdW15cXC9cXDA+XFx4MjBcXHRcXHJcXG5cXGZdKikvaSApO1xuXG52YXIgcnNjcmlwdFR5cGUgPSAoIC9eJHxebW9kdWxlJHxcXC8oPzpqYXZhfGVjbWEpc2NyaXB0L2kgKTtcblxuXG5cbiggZnVuY3Rpb24oKSB7XG5cdHZhciBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxcblx0XHRkaXYgPSBmcmFnbWVudC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApICksXG5cdFx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImlucHV0XCIgKTtcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAtIDQuMyBvbmx5XG5cdC8vIENoZWNrIHN0YXRlIGxvc3QgaWYgdGhlIG5hbWUgaXMgc2V0ICh0cmFjLTExMjE3KVxuXHQvLyBTdXBwb3J0OiBXaW5kb3dzIFdlYiBBcHBzIChXV0EpXG5cdC8vIGBuYW1lYCBhbmQgYHR5cGVgIG11c3QgdXNlIC5zZXRBdHRyaWJ1dGUgZm9yIFdXQSAodHJhYy0xNDkwMSlcblx0aW5wdXQuc2V0QXR0cmlidXRlKCBcInR5cGVcIiwgXCJyYWRpb1wiICk7XG5cdGlucHV0LnNldEF0dHJpYnV0ZSggXCJjaGVja2VkXCIsIFwiY2hlY2tlZFwiICk7XG5cdGlucHV0LnNldEF0dHJpYnV0ZSggXCJuYW1lXCIsIFwidFwiICk7XG5cblx0ZGl2LmFwcGVuZENoaWxkKCBpbnB1dCApO1xuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjEgb25seVxuXHQvLyBPbGRlciBXZWJLaXQgZG9lc24ndCBjbG9uZSBjaGVja2VkIHN0YXRlIGNvcnJlY3RseSBpbiBmcmFnbWVudHNcblx0c3VwcG9ydC5jaGVja0Nsb25lID0gZGl2LmNsb25lTm9kZSggdHJ1ZSApLmNsb25lTm9kZSggdHJ1ZSApLmxhc3RDaGlsZC5jaGVja2VkO1xuXG5cdC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seVxuXHQvLyBNYWtlIHN1cmUgdGV4dGFyZWEgKGFuZCBjaGVja2JveCkgZGVmYXVsdFZhbHVlIGlzIHByb3Blcmx5IGNsb25lZFxuXHRkaXYuaW5uZXJIVE1MID0gXCI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+XCI7XG5cdHN1cHBvcnQubm9DbG9uZUNoZWNrZWQgPSAhIWRpdi5jbG9uZU5vZGUoIHRydWUgKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlO1xuXG5cdC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG5cdC8vIElFIDw9OSByZXBsYWNlcyA8b3B0aW9uPiB0YWdzIHdpdGggdGhlaXIgY29udGVudHMgd2hlbiBpbnNlcnRlZCBvdXRzaWRlIG9mXG5cdC8vIHRoZSBzZWxlY3QgZWxlbWVudC5cblx0ZGl2LmlubmVySFRNTCA9IFwiPG9wdGlvbj48L29wdGlvbj5cIjtcblx0c3VwcG9ydC5vcHRpb24gPSAhIWRpdi5sYXN0Q2hpbGQ7XG59ICkoKTtcblxuXG4vLyBXZSBoYXZlIHRvIGNsb3NlIHRoZXNlIHRhZ3MgdG8gc3VwcG9ydCBYSFRNTCAodHJhYy0xMzIwMClcbnZhciB3cmFwTWFwID0ge1xuXG5cdC8vIFhIVE1MIHBhcnNlcnMgZG8gbm90IG1hZ2ljYWxseSBpbnNlcnQgZWxlbWVudHMgaW4gdGhlXG5cdC8vIHNhbWUgd2F5IHRoYXQgdGFnIHNvdXAgcGFyc2VycyBkby4gU28gd2UgY2Fubm90IHNob3J0ZW5cblx0Ly8gdGhpcyBieSBvbWl0dGluZyA8dGJvZHk+IG9yIG90aGVyIHJlcXVpcmVkIGVsZW1lbnRzLlxuXHR0aGVhZDogWyAxLCBcIjx0YWJsZT5cIiwgXCI8L3RhYmxlPlwiIF0sXG5cdGNvbDogWyAyLCBcIjx0YWJsZT48Y29sZ3JvdXA+XCIsIFwiPC9jb2xncm91cD48L3RhYmxlPlwiIF0sXG5cdHRyOiBbIDIsIFwiPHRhYmxlPjx0Ym9keT5cIiwgXCI8L3Rib2R5PjwvdGFibGU+XCIgXSxcblx0dGQ6IFsgMywgXCI8dGFibGU+PHRib2R5Pjx0cj5cIiwgXCI8L3RyPjwvdGJvZHk+PC90YWJsZT5cIiBdLFxuXG5cdF9kZWZhdWx0OiBbIDAsIFwiXCIsIFwiXCIgXVxufTtcblxud3JhcE1hcC50Ym9keSA9IHdyYXBNYXAudGZvb3QgPSB3cmFwTWFwLmNvbGdyb3VwID0gd3JhcE1hcC5jYXB0aW9uID0gd3JhcE1hcC50aGVhZDtcbndyYXBNYXAudGggPSB3cmFwTWFwLnRkO1xuXG4vLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuaWYgKCAhc3VwcG9ydC5vcHRpb24gKSB7XG5cdHdyYXBNYXAub3B0Z3JvdXAgPSB3cmFwTWFwLm9wdGlvbiA9IFsgMSwgXCI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+XCIsIFwiPC9zZWxlY3Q+XCIgXTtcbn1cblxuXG5mdW5jdGlvbiBnZXRBbGwoIGNvbnRleHQsIHRhZyApIHtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSBvbmx5XG5cdC8vIFVzZSB0eXBlb2YgdG8gYXZvaWQgemVyby1hcmd1bWVudCBtZXRob2QgaW52b2NhdGlvbiBvbiBob3N0IG9iamVjdHMgKHRyYWMtMTUxNTEpXG5cdHZhciByZXQ7XG5cblx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gXCJ1bmRlZmluZWRcIiApIHtcblx0XHRyZXQgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgfHwgXCIqXCIgKTtcblxuXHR9IGVsc2UgaWYgKCB0eXBlb2YgY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsICE9PSBcInVuZGVmaW5lZFwiICkge1xuXHRcdHJldCA9IGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCggdGFnIHx8IFwiKlwiICk7XG5cblx0fSBlbHNlIHtcblx0XHRyZXQgPSBbXTtcblx0fVxuXG5cdGlmICggdGFnID09PSB1bmRlZmluZWQgfHwgdGFnICYmIG5vZGVOYW1lKCBjb250ZXh0LCB0YWcgKSApIHtcblx0XHRyZXR1cm4galF1ZXJ5Lm1lcmdlKCBbIGNvbnRleHQgXSwgcmV0ICk7XG5cdH1cblxuXHRyZXR1cm4gcmV0O1xufVxuXG5cbi8vIE1hcmsgc2NyaXB0cyBhcyBoYXZpbmcgYWxyZWFkeSBiZWVuIGV2YWx1YXRlZFxuZnVuY3Rpb24gc2V0R2xvYmFsRXZhbCggZWxlbXMsIHJlZkVsZW1lbnRzICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bCA9IGVsZW1zLmxlbmd0aDtcblxuXHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0ZGF0YVByaXYuc2V0KFxuXHRcdFx0ZWxlbXNbIGkgXSxcblx0XHRcdFwiZ2xvYmFsRXZhbFwiLFxuXHRcdFx0IXJlZkVsZW1lbnRzIHx8IGRhdGFQcml2LmdldCggcmVmRWxlbWVudHNbIGkgXSwgXCJnbG9iYWxFdmFsXCIgKVxuXHRcdCk7XG5cdH1cbn1cblxuXG52YXIgcmh0bWwgPSAvPHwmIz9cXHcrOy87XG5cbmZ1bmN0aW9uIGJ1aWxkRnJhZ21lbnQoIGVsZW1zLCBjb250ZXh0LCBzY3JpcHRzLCBzZWxlY3Rpb24sIGlnbm9yZWQgKSB7XG5cdHZhciBlbGVtLCB0bXAsIHRhZywgd3JhcCwgYXR0YWNoZWQsIGosXG5cdFx0ZnJhZ21lbnQgPSBjb250ZXh0LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxcblx0XHRub2RlcyA9IFtdLFxuXHRcdGkgPSAwLFxuXHRcdGwgPSBlbGVtcy5sZW5ndGg7XG5cblx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdGVsZW0gPSBlbGVtc1sgaSBdO1xuXG5cdFx0aWYgKCBlbGVtIHx8IGVsZW0gPT09IDAgKSB7XG5cblx0XHRcdC8vIEFkZCBub2RlcyBkaXJlY3RseVxuXHRcdFx0aWYgKCB0b1R5cGUoIGVsZW0gKSA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0XHRcdFx0Ly8gcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdFxuXHRcdFx0XHRqUXVlcnkubWVyZ2UoIG5vZGVzLCBlbGVtLm5vZGVUeXBlID8gWyBlbGVtIF0gOiBlbGVtICk7XG5cblx0XHRcdC8vIENvbnZlcnQgbm9uLWh0bWwgaW50byBhIHRleHQgbm9kZVxuXHRcdFx0fSBlbHNlIGlmICggIXJodG1sLnRlc3QoIGVsZW0gKSApIHtcblx0XHRcdFx0bm9kZXMucHVzaCggY29udGV4dC5jcmVhdGVUZXh0Tm9kZSggZWxlbSApICk7XG5cblx0XHRcdC8vIENvbnZlcnQgaHRtbCBpbnRvIERPTSBub2Rlc1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dG1wID0gdG1wIHx8IGZyYWdtZW50LmFwcGVuZENoaWxkKCBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKSApO1xuXG5cdFx0XHRcdC8vIERlc2VyaWFsaXplIGEgc3RhbmRhcmQgcmVwcmVzZW50YXRpb25cblx0XHRcdFx0dGFnID0gKCBydGFnTmFtZS5leGVjKCBlbGVtICkgfHwgWyBcIlwiLCBcIlwiIF0gKVsgMSBdLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRcdHdyYXAgPSB3cmFwTWFwWyB0YWcgXSB8fCB3cmFwTWFwLl9kZWZhdWx0O1xuXHRcdFx0XHR0bXAuaW5uZXJIVE1MID0gd3JhcFsgMSBdICsgalF1ZXJ5Lmh0bWxQcmVmaWx0ZXIoIGVsZW0gKSArIHdyYXBbIDIgXTtcblxuXHRcdFx0XHQvLyBEZXNjZW5kIHRocm91Z2ggd3JhcHBlcnMgdG8gdGhlIHJpZ2h0IGNvbnRlbnRcblx0XHRcdFx0aiA9IHdyYXBbIDAgXTtcblx0XHRcdFx0d2hpbGUgKCBqLS0gKSB7XG5cdFx0XHRcdFx0dG1wID0gdG1wLmxhc3RDaGlsZDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seVxuXHRcdFx0XHQvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdFx0XHRcdGpRdWVyeS5tZXJnZSggbm9kZXMsIHRtcC5jaGlsZE5vZGVzICk7XG5cblx0XHRcdFx0Ly8gUmVtZW1iZXIgdGhlIHRvcC1sZXZlbCBjb250YWluZXJcblx0XHRcdFx0dG1wID0gZnJhZ21lbnQuZmlyc3RDaGlsZDtcblxuXHRcdFx0XHQvLyBFbnN1cmUgdGhlIGNyZWF0ZWQgbm9kZXMgYXJlIG9ycGhhbmVkICh0cmFjLTEyMzkyKVxuXHRcdFx0XHR0bXAudGV4dENvbnRlbnQgPSBcIlwiO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIFJlbW92ZSB3cmFwcGVyIGZyb20gZnJhZ21lbnRcblx0ZnJhZ21lbnQudGV4dENvbnRlbnQgPSBcIlwiO1xuXG5cdGkgPSAwO1xuXHR3aGlsZSAoICggZWxlbSA9IG5vZGVzWyBpKysgXSApICkge1xuXG5cdFx0Ly8gU2tpcCBlbGVtZW50cyBhbHJlYWR5IGluIHRoZSBjb250ZXh0IGNvbGxlY3Rpb24gKHRyYWMtNDA4Nylcblx0XHRpZiAoIHNlbGVjdGlvbiAmJiBqUXVlcnkuaW5BcnJheSggZWxlbSwgc2VsZWN0aW9uICkgPiAtMSApIHtcblx0XHRcdGlmICggaWdub3JlZCApIHtcblx0XHRcdFx0aWdub3JlZC5wdXNoKCBlbGVtICk7XG5cdFx0XHR9XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHRhdHRhY2hlZCA9IGlzQXR0YWNoZWQoIGVsZW0gKTtcblxuXHRcdC8vIEFwcGVuZCB0byBmcmFnbWVudFxuXHRcdHRtcCA9IGdldEFsbCggZnJhZ21lbnQuYXBwZW5kQ2hpbGQoIGVsZW0gKSwgXCJzY3JpcHRcIiApO1xuXG5cdFx0Ly8gUHJlc2VydmUgc2NyaXB0IGV2YWx1YXRpb24gaGlzdG9yeVxuXHRcdGlmICggYXR0YWNoZWQgKSB7XG5cdFx0XHRzZXRHbG9iYWxFdmFsKCB0bXAgKTtcblx0XHR9XG5cblx0XHQvLyBDYXB0dXJlIGV4ZWN1dGFibGVzXG5cdFx0aWYgKCBzY3JpcHRzICkge1xuXHRcdFx0aiA9IDA7XG5cdFx0XHR3aGlsZSAoICggZWxlbSA9IHRtcFsgaisrIF0gKSApIHtcblx0XHRcdFx0aWYgKCByc2NyaXB0VHlwZS50ZXN0KCBlbGVtLnR5cGUgfHwgXCJcIiApICkge1xuXHRcdFx0XHRcdHNjcmlwdHMucHVzaCggZWxlbSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGZyYWdtZW50O1xufVxuXG5cbnZhciBydHlwZW5hbWVzcGFjZSA9IC9eKFteLl0qKSg/OlxcLiguKyl8KS87XG5cbmZ1bmN0aW9uIHJldHVyblRydWUoKSB7XG5cdHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiByZXR1cm5GYWxzZSgpIHtcblx0cmV0dXJuIGZhbHNlO1xufVxuXG4vLyBTdXBwb3J0OiBJRSA8PTkgLSAxMStcbi8vIGZvY3VzKCkgYW5kIGJsdXIoKSBhcmUgYXN5bmNocm9ub3VzLCBleGNlcHQgd2hlbiB0aGV5IGFyZSBuby1vcC5cbi8vIFNvIGV4cGVjdCBmb2N1cyB0byBiZSBzeW5jaHJvbm91cyB3aGVuIHRoZSBlbGVtZW50IGlzIGFscmVhZHkgYWN0aXZlLFxuLy8gYW5kIGJsdXIgdG8gYmUgc3luY2hyb25vdXMgd2hlbiB0aGUgZWxlbWVudCBpcyBub3QgYWxyZWFkeSBhY3RpdmUuXG4vLyAoZm9jdXMgYW5kIGJsdXIgYXJlIGFsd2F5cyBzeW5jaHJvbm91cyBpbiBvdGhlciBzdXBwb3J0ZWQgYnJvd3NlcnMsXG4vLyB0aGlzIGp1c3QgZGVmaW5lcyB3aGVuIHdlIGNhbiBjb3VudCBvbiBpdCkuXG5mdW5jdGlvbiBleHBlY3RTeW5jKCBlbGVtLCB0eXBlICkge1xuXHRyZXR1cm4gKCBlbGVtID09PSBzYWZlQWN0aXZlRWxlbWVudCgpICkgPT09ICggdHlwZSA9PT0gXCJmb2N1c1wiICk7XG59XG5cbi8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG4vLyBBY2Nlc3NpbmcgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBjYW4gdGhyb3cgdW5leHBlY3RlZGx5XG4vLyBodHRwczovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTMzOTNcbmZ1bmN0aW9uIHNhZmVBY3RpdmVFbGVtZW50KCkge1xuXHR0cnkge1xuXHRcdHJldHVybiBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuXHR9IGNhdGNoICggZXJyICkgeyB9XG59XG5cbmZ1bmN0aW9uIG9uKCBlbGVtLCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuLCBvbmUgKSB7XG5cdHZhciBvcmlnRm4sIHR5cGU7XG5cblx0Ly8gVHlwZXMgY2FuIGJlIGEgbWFwIG9mIHR5cGVzL2hhbmRsZXJzXG5cdGlmICggdHlwZW9mIHR5cGVzID09PSBcIm9iamVjdFwiICkge1xuXG5cdFx0Ly8gKCB0eXBlcy1PYmplY3QsIHNlbGVjdG9yLCBkYXRhIClcblx0XHRpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gXCJzdHJpbmdcIiApIHtcblxuXHRcdFx0Ly8gKCB0eXBlcy1PYmplY3QsIGRhdGEgKVxuXHRcdFx0ZGF0YSA9IGRhdGEgfHwgc2VsZWN0b3I7XG5cdFx0XHRzZWxlY3RvciA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0Zm9yICggdHlwZSBpbiB0eXBlcyApIHtcblx0XHRcdG9uKCBlbGVtLCB0eXBlLCBzZWxlY3RvciwgZGF0YSwgdHlwZXNbIHR5cGUgXSwgb25lICk7XG5cdFx0fVxuXHRcdHJldHVybiBlbGVtO1xuXHR9XG5cblx0aWYgKCBkYXRhID09IG51bGwgJiYgZm4gPT0gbnVsbCApIHtcblxuXHRcdC8vICggdHlwZXMsIGZuIClcblx0XHRmbiA9IHNlbGVjdG9yO1xuXHRcdGRhdGEgPSBzZWxlY3RvciA9IHVuZGVmaW5lZDtcblx0fSBlbHNlIGlmICggZm4gPT0gbnVsbCApIHtcblx0XHRpZiAoIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiApIHtcblxuXHRcdFx0Ly8gKCB0eXBlcywgc2VsZWN0b3IsIGZuIClcblx0XHRcdGZuID0gZGF0YTtcblx0XHRcdGRhdGEgPSB1bmRlZmluZWQ7XG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gKCB0eXBlcywgZGF0YSwgZm4gKVxuXHRcdFx0Zm4gPSBkYXRhO1xuXHRcdFx0ZGF0YSA9IHNlbGVjdG9yO1xuXHRcdFx0c2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9XG5cdGlmICggZm4gPT09IGZhbHNlICkge1xuXHRcdGZuID0gcmV0dXJuRmFsc2U7XG5cdH0gZWxzZSBpZiAoICFmbiApIHtcblx0XHRyZXR1cm4gZWxlbTtcblx0fVxuXG5cdGlmICggb25lID09PSAxICkge1xuXHRcdG9yaWdGbiA9IGZuO1xuXHRcdGZuID0gZnVuY3Rpb24oIGV2ZW50ICkge1xuXG5cdFx0XHQvLyBDYW4gdXNlIGFuIGVtcHR5IHNldCwgc2luY2UgZXZlbnQgY29udGFpbnMgdGhlIGluZm9cblx0XHRcdGpRdWVyeSgpLm9mZiggZXZlbnQgKTtcblx0XHRcdHJldHVybiBvcmlnRm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdH07XG5cblx0XHQvLyBVc2Ugc2FtZSBndWlkIHNvIGNhbGxlciBjYW4gcmVtb3ZlIHVzaW5nIG9yaWdGblxuXHRcdGZuLmd1aWQgPSBvcmlnRm4uZ3VpZCB8fCAoIG9yaWdGbi5ndWlkID0galF1ZXJ5Lmd1aWQrKyApO1xuXHR9XG5cdHJldHVybiBlbGVtLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdGpRdWVyeS5ldmVudC5hZGQoIHRoaXMsIHR5cGVzLCBmbiwgZGF0YSwgc2VsZWN0b3IgKTtcblx0fSApO1xufVxuXG4vKlxuICogSGVscGVyIGZ1bmN0aW9ucyBmb3IgbWFuYWdpbmcgZXZlbnRzIC0tIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLlxuICogUHJvcHMgdG8gRGVhbiBFZHdhcmRzJyBhZGRFdmVudCBsaWJyYXJ5IGZvciBtYW55IG9mIHRoZSBpZGVhcy5cbiAqL1xualF1ZXJ5LmV2ZW50ID0ge1xuXG5cdGdsb2JhbDoge30sXG5cblx0YWRkOiBmdW5jdGlvbiggZWxlbSwgdHlwZXMsIGhhbmRsZXIsIGRhdGEsIHNlbGVjdG9yICkge1xuXG5cdFx0dmFyIGhhbmRsZU9iakluLCBldmVudEhhbmRsZSwgdG1wLFxuXHRcdFx0ZXZlbnRzLCB0LCBoYW5kbGVPYmosXG5cdFx0XHRzcGVjaWFsLCBoYW5kbGVycywgdHlwZSwgbmFtZXNwYWNlcywgb3JpZ1R5cGUsXG5cdFx0XHRlbGVtRGF0YSA9IGRhdGFQcml2LmdldCggZWxlbSApO1xuXG5cdFx0Ly8gT25seSBhdHRhY2ggZXZlbnRzIHRvIG9iamVjdHMgdGhhdCBhY2NlcHQgZGF0YVxuXHRcdGlmICggIWFjY2VwdERhdGEoIGVsZW0gKSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBDYWxsZXIgY2FuIHBhc3MgaW4gYW4gb2JqZWN0IG9mIGN1c3RvbSBkYXRhIGluIGxpZXUgb2YgdGhlIGhhbmRsZXJcblx0XHRpZiAoIGhhbmRsZXIuaGFuZGxlciApIHtcblx0XHRcdGhhbmRsZU9iakluID0gaGFuZGxlcjtcblx0XHRcdGhhbmRsZXIgPSBoYW5kbGVPYmpJbi5oYW5kbGVyO1xuXHRcdFx0c2VsZWN0b3IgPSBoYW5kbGVPYmpJbi5zZWxlY3Rvcjtcblx0XHR9XG5cblx0XHQvLyBFbnN1cmUgdGhhdCBpbnZhbGlkIHNlbGVjdG9ycyB0aHJvdyBleGNlcHRpb25zIGF0IGF0dGFjaCB0aW1lXG5cdFx0Ly8gRXZhbHVhdGUgYWdhaW5zdCBkb2N1bWVudEVsZW1lbnQgaW4gY2FzZSBlbGVtIGlzIGEgbm9uLWVsZW1lbnQgbm9kZSAoZS5nLiwgZG9jdW1lbnQpXG5cdFx0aWYgKCBzZWxlY3RvciApIHtcblx0XHRcdGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggZG9jdW1lbnRFbGVtZW50LCBzZWxlY3RvciApO1xuXHRcdH1cblxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBoYW5kbGVyIGhhcyBhIHVuaXF1ZSBJRCwgdXNlZCB0byBmaW5kL3JlbW92ZSBpdCBsYXRlclxuXHRcdGlmICggIWhhbmRsZXIuZ3VpZCApIHtcblx0XHRcdGhhbmRsZXIuZ3VpZCA9IGpRdWVyeS5ndWlkKys7XG5cdFx0fVxuXG5cdFx0Ly8gSW5pdCB0aGUgZWxlbWVudCdzIGV2ZW50IHN0cnVjdHVyZSBhbmQgbWFpbiBoYW5kbGVyLCBpZiB0aGlzIGlzIHRoZSBmaXJzdFxuXHRcdGlmICggISggZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzICkgKSB7XG5cdFx0XHRldmVudHMgPSBlbGVtRGF0YS5ldmVudHMgPSBPYmplY3QuY3JlYXRlKCBudWxsICk7XG5cdFx0fVxuXHRcdGlmICggISggZXZlbnRIYW5kbGUgPSBlbGVtRGF0YS5oYW5kbGUgKSApIHtcblx0XHRcdGV2ZW50SGFuZGxlID0gZWxlbURhdGEuaGFuZGxlID0gZnVuY3Rpb24oIGUgKSB7XG5cblx0XHRcdFx0Ly8gRGlzY2FyZCB0aGUgc2Vjb25kIGV2ZW50IG9mIGEgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoKSBhbmRcblx0XHRcdFx0Ly8gd2hlbiBhbiBldmVudCBpcyBjYWxsZWQgYWZ0ZXIgYSBwYWdlIGhhcyB1bmxvYWRlZFxuXHRcdFx0XHRyZXR1cm4gdHlwZW9mIGpRdWVyeSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkICE9PSBlLnR5cGUgP1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5kaXNwYXRjaC5hcHBseSggZWxlbSwgYXJndW1lbnRzICkgOiB1bmRlZmluZWQ7XG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdC8vIEhhbmRsZSBtdWx0aXBsZSBldmVudHMgc2VwYXJhdGVkIGJ5IGEgc3BhY2Vcblx0XHR0eXBlcyA9ICggdHlwZXMgfHwgXCJcIiApLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgWyBcIlwiIF07XG5cdFx0dCA9IHR5cGVzLmxlbmd0aDtcblx0XHR3aGlsZSAoIHQtLSApIHtcblx0XHRcdHRtcCA9IHJ0eXBlbmFtZXNwYWNlLmV4ZWMoIHR5cGVzWyB0IF0gKSB8fCBbXTtcblx0XHRcdHR5cGUgPSBvcmlnVHlwZSA9IHRtcFsgMSBdO1xuXHRcdFx0bmFtZXNwYWNlcyA9ICggdG1wWyAyIF0gfHwgXCJcIiApLnNwbGl0KCBcIi5cIiApLnNvcnQoKTtcblxuXHRcdFx0Ly8gVGhlcmUgKm11c3QqIGJlIGEgdHlwZSwgbm8gYXR0YWNoaW5nIG5hbWVzcGFjZS1vbmx5IGhhbmRsZXJzXG5cdFx0XHRpZiAoICF0eXBlICkge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgZXZlbnQgY2hhbmdlcyBpdHMgdHlwZSwgdXNlIHRoZSBzcGVjaWFsIGV2ZW50IGhhbmRsZXJzIGZvciB0aGUgY2hhbmdlZCB0eXBlXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTtcblxuXHRcdFx0Ly8gSWYgc2VsZWN0b3IgZGVmaW5lZCwgZGV0ZXJtaW5lIHNwZWNpYWwgZXZlbnQgYXBpIHR5cGUsIG90aGVyd2lzZSBnaXZlbiB0eXBlXG5cdFx0XHR0eXBlID0gKCBzZWxlY3RvciA/IHNwZWNpYWwuZGVsZWdhdGVUeXBlIDogc3BlY2lhbC5iaW5kVHlwZSApIHx8IHR5cGU7XG5cblx0XHRcdC8vIFVwZGF0ZSBzcGVjaWFsIGJhc2VkIG9uIG5ld2x5IHJlc2V0IHR5cGVcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xuXG5cdFx0XHQvLyBoYW5kbGVPYmogaXMgcGFzc2VkIHRvIGFsbCBldmVudCBoYW5kbGVyc1xuXHRcdFx0aGFuZGxlT2JqID0galF1ZXJ5LmV4dGVuZCgge1xuXHRcdFx0XHR0eXBlOiB0eXBlLFxuXHRcdFx0XHRvcmlnVHlwZTogb3JpZ1R5cGUsXG5cdFx0XHRcdGRhdGE6IGRhdGEsXG5cdFx0XHRcdGhhbmRsZXI6IGhhbmRsZXIsXG5cdFx0XHRcdGd1aWQ6IGhhbmRsZXIuZ3VpZCxcblx0XHRcdFx0c2VsZWN0b3I6IHNlbGVjdG9yLFxuXHRcdFx0XHRuZWVkc0NvbnRleHQ6IHNlbGVjdG9yICYmIGpRdWVyeS5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvciApLFxuXHRcdFx0XHRuYW1lc3BhY2U6IG5hbWVzcGFjZXMuam9pbiggXCIuXCIgKVxuXHRcdFx0fSwgaGFuZGxlT2JqSW4gKTtcblxuXHRcdFx0Ly8gSW5pdCB0aGUgZXZlbnQgaGFuZGxlciBxdWV1ZSBpZiB3ZSdyZSB0aGUgZmlyc3Rcblx0XHRcdGlmICggISggaGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSApICkge1xuXHRcdFx0XHRoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdID0gW107XG5cdFx0XHRcdGhhbmRsZXJzLmRlbGVnYXRlQ291bnQgPSAwO1xuXG5cdFx0XHRcdC8vIE9ubHkgdXNlIGFkZEV2ZW50TGlzdGVuZXIgaWYgdGhlIHNwZWNpYWwgZXZlbnRzIGhhbmRsZXIgcmV0dXJucyBmYWxzZVxuXHRcdFx0XHRpZiAoICFzcGVjaWFsLnNldHVwIHx8XG5cdFx0XHRcdFx0c3BlY2lhbC5zZXR1cC5jYWxsKCBlbGVtLCBkYXRhLCBuYW1lc3BhY2VzLCBldmVudEhhbmRsZSApID09PSBmYWxzZSApIHtcblxuXHRcdFx0XHRcdGlmICggZWxlbS5hZGRFdmVudExpc3RlbmVyICkge1xuXHRcdFx0XHRcdFx0ZWxlbS5hZGRFdmVudExpc3RlbmVyKCB0eXBlLCBldmVudEhhbmRsZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHNwZWNpYWwuYWRkICkge1xuXHRcdFx0XHRzcGVjaWFsLmFkZC5jYWxsKCBlbGVtLCBoYW5kbGVPYmogKTtcblxuXHRcdFx0XHRpZiAoICFoYW5kbGVPYmouaGFuZGxlci5ndWlkICkge1xuXHRcdFx0XHRcdGhhbmRsZU9iai5oYW5kbGVyLmd1aWQgPSBoYW5kbGVyLmd1aWQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gQWRkIHRvIHRoZSBlbGVtZW50J3MgaGFuZGxlciBsaXN0LCBkZWxlZ2F0ZXMgaW4gZnJvbnRcblx0XHRcdGlmICggc2VsZWN0b3IgKSB7XG5cdFx0XHRcdGhhbmRsZXJzLnNwbGljZSggaGFuZGxlcnMuZGVsZWdhdGVDb3VudCsrLCAwLCBoYW5kbGVPYmogKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGhhbmRsZXJzLnB1c2goIGhhbmRsZU9iaiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBLZWVwIHRyYWNrIG9mIHdoaWNoIGV2ZW50cyBoYXZlIGV2ZXIgYmVlbiB1c2VkLCBmb3IgZXZlbnQgb3B0aW1pemF0aW9uXG5cdFx0XHRqUXVlcnkuZXZlbnQuZ2xvYmFsWyB0eXBlIF0gPSB0cnVlO1xuXHRcdH1cblxuXHR9LFxuXG5cdC8vIERldGFjaCBhbiBldmVudCBvciBzZXQgb2YgZXZlbnRzIGZyb20gYW4gZWxlbWVudFxuXHRyZW1vdmU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxlciwgc2VsZWN0b3IsIG1hcHBlZFR5cGVzICkge1xuXG5cdFx0dmFyIGosIG9yaWdDb3VudCwgdG1wLFxuXHRcdFx0ZXZlbnRzLCB0LCBoYW5kbGVPYmosXG5cdFx0XHRzcGVjaWFsLCBoYW5kbGVycywgdHlwZSwgbmFtZXNwYWNlcywgb3JpZ1R5cGUsXG5cdFx0XHRlbGVtRGF0YSA9IGRhdGFQcml2Lmhhc0RhdGEoIGVsZW0gKSAmJiBkYXRhUHJpdi5nZXQoIGVsZW0gKTtcblxuXHRcdGlmICggIWVsZW1EYXRhIHx8ICEoIGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cyApICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIE9uY2UgZm9yIGVhY2ggdHlwZS5uYW1lc3BhY2UgaW4gdHlwZXM7IHR5cGUgbWF5IGJlIG9taXR0ZWRcblx0XHR0eXBlcyA9ICggdHlwZXMgfHwgXCJcIiApLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgWyBcIlwiIF07XG5cdFx0dCA9IHR5cGVzLmxlbmd0aDtcblx0XHR3aGlsZSAoIHQtLSApIHtcblx0XHRcdHRtcCA9IHJ0eXBlbmFtZXNwYWNlLmV4ZWMoIHR5cGVzWyB0IF0gKSB8fCBbXTtcblx0XHRcdHR5cGUgPSBvcmlnVHlwZSA9IHRtcFsgMSBdO1xuXHRcdFx0bmFtZXNwYWNlcyA9ICggdG1wWyAyIF0gfHwgXCJcIiApLnNwbGl0KCBcIi5cIiApLnNvcnQoKTtcblxuXHRcdFx0Ly8gVW5iaW5kIGFsbCBldmVudHMgKG9uIHRoaXMgbmFtZXNwYWNlLCBpZiBwcm92aWRlZCkgZm9yIHRoZSBlbGVtZW50XG5cdFx0XHRpZiAoICF0eXBlICkge1xuXHRcdFx0XHRmb3IgKCB0eXBlIGluIGV2ZW50cyApIHtcblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCBlbGVtLCB0eXBlICsgdHlwZXNbIHQgXSwgaGFuZGxlciwgc2VsZWN0b3IsIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cdFx0XHR0eXBlID0gKCBzZWxlY3RvciA/IHNwZWNpYWwuZGVsZWdhdGVUeXBlIDogc3BlY2lhbC5iaW5kVHlwZSApIHx8IHR5cGU7XG5cdFx0XHRoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdIHx8IFtdO1xuXHRcdFx0dG1wID0gdG1wWyAyIF0gJiZcblx0XHRcdFx0bmV3IFJlZ0V4cCggXCIoXnxcXFxcLilcIiArIG5hbWVzcGFjZXMuam9pbiggXCJcXFxcLig/Oi4qXFxcXC58KVwiICkgKyBcIihcXFxcLnwkKVwiICk7XG5cblx0XHRcdC8vIFJlbW92ZSBtYXRjaGluZyBldmVudHNcblx0XHRcdG9yaWdDb3VudCA9IGogPSBoYW5kbGVycy5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoIGotLSApIHtcblx0XHRcdFx0aGFuZGxlT2JqID0gaGFuZGxlcnNbIGogXTtcblxuXHRcdFx0XHRpZiAoICggbWFwcGVkVHlwZXMgfHwgb3JpZ1R5cGUgPT09IGhhbmRsZU9iai5vcmlnVHlwZSApICYmXG5cdFx0XHRcdFx0KCAhaGFuZGxlciB8fCBoYW5kbGVyLmd1aWQgPT09IGhhbmRsZU9iai5ndWlkICkgJiZcblx0XHRcdFx0XHQoICF0bXAgfHwgdG1wLnRlc3QoIGhhbmRsZU9iai5uYW1lc3BhY2UgKSApICYmXG5cdFx0XHRcdFx0KCAhc2VsZWN0b3IgfHwgc2VsZWN0b3IgPT09IGhhbmRsZU9iai5zZWxlY3RvciB8fFxuXHRcdFx0XHRcdFx0c2VsZWN0b3IgPT09IFwiKipcIiAmJiBoYW5kbGVPYmouc2VsZWN0b3IgKSApIHtcblx0XHRcdFx0XHRoYW5kbGVycy5zcGxpY2UoIGosIDEgKTtcblxuXHRcdFx0XHRcdGlmICggaGFuZGxlT2JqLnNlbGVjdG9yICkge1xuXHRcdFx0XHRcdFx0aGFuZGxlcnMuZGVsZWdhdGVDb3VudC0tO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIHNwZWNpYWwucmVtb3ZlICkge1xuXHRcdFx0XHRcdFx0c3BlY2lhbC5yZW1vdmUuY2FsbCggZWxlbSwgaGFuZGxlT2JqICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJlbW92ZSBnZW5lcmljIGV2ZW50IGhhbmRsZXIgaWYgd2UgcmVtb3ZlZCBzb21ldGhpbmcgYW5kIG5vIG1vcmUgaGFuZGxlcnMgZXhpc3Rcblx0XHRcdC8vIChhdm9pZHMgcG90ZW50aWFsIGZvciBlbmRsZXNzIHJlY3Vyc2lvbiBkdXJpbmcgcmVtb3ZhbCBvZiBzcGVjaWFsIGV2ZW50IGhhbmRsZXJzKVxuXHRcdFx0aWYgKCBvcmlnQ291bnQgJiYgIWhhbmRsZXJzLmxlbmd0aCApIHtcblx0XHRcdFx0aWYgKCAhc3BlY2lhbC50ZWFyZG93biB8fFxuXHRcdFx0XHRcdHNwZWNpYWwudGVhcmRvd24uY2FsbCggZWxlbSwgbmFtZXNwYWNlcywgZWxlbURhdGEuaGFuZGxlICkgPT09IGZhbHNlICkge1xuXG5cdFx0XHRcdFx0alF1ZXJ5LnJlbW92ZUV2ZW50KCBlbGVtLCB0eXBlLCBlbGVtRGF0YS5oYW5kbGUgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGRlbGV0ZSBldmVudHNbIHR5cGUgXTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBSZW1vdmUgZGF0YSBhbmQgdGhlIGV4cGFuZG8gaWYgaXQncyBubyBsb25nZXIgdXNlZFxuXHRcdGlmICggalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGV2ZW50cyApICkge1xuXHRcdFx0ZGF0YVByaXYucmVtb3ZlKCBlbGVtLCBcImhhbmRsZSBldmVudHNcIiApO1xuXHRcdH1cblx0fSxcblxuXHRkaXNwYXRjaDogZnVuY3Rpb24oIG5hdGl2ZUV2ZW50ICkge1xuXG5cdFx0dmFyIGksIGosIHJldCwgbWF0Y2hlZCwgaGFuZGxlT2JqLCBoYW5kbGVyUXVldWUsXG5cdFx0XHRhcmdzID0gbmV3IEFycmF5KCBhcmd1bWVudHMubGVuZ3RoICksXG5cblx0XHRcdC8vIE1ha2UgYSB3cml0YWJsZSBqUXVlcnkuRXZlbnQgZnJvbSB0aGUgbmF0aXZlIGV2ZW50IG9iamVjdFxuXHRcdFx0ZXZlbnQgPSBqUXVlcnkuZXZlbnQuZml4KCBuYXRpdmVFdmVudCApLFxuXG5cdFx0XHRoYW5kbGVycyA9IChcblx0XHRcdFx0ZGF0YVByaXYuZ2V0KCB0aGlzLCBcImV2ZW50c1wiICkgfHwgT2JqZWN0LmNyZWF0ZSggbnVsbCApXG5cdFx0XHQpWyBldmVudC50eXBlIF0gfHwgW10sXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGV2ZW50LnR5cGUgXSB8fCB7fTtcblxuXHRcdC8vIFVzZSB0aGUgZml4LWVkIGpRdWVyeS5FdmVudCByYXRoZXIgdGhhbiB0aGUgKHJlYWQtb25seSkgbmF0aXZlIGV2ZW50XG5cdFx0YXJnc1sgMCBdID0gZXZlbnQ7XG5cblx0XHRmb3IgKCBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyApIHtcblx0XHRcdGFyZ3NbIGkgXSA9IGFyZ3VtZW50c1sgaSBdO1xuXHRcdH1cblxuXHRcdGV2ZW50LmRlbGVnYXRlVGFyZ2V0ID0gdGhpcztcblxuXHRcdC8vIENhbGwgdGhlIHByZURpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQgdHlwZSwgYW5kIGxldCBpdCBiYWlsIGlmIGRlc2lyZWRcblx0XHRpZiAoIHNwZWNpYWwucHJlRGlzcGF0Y2ggJiYgc3BlY2lhbC5wcmVEaXNwYXRjaC5jYWxsKCB0aGlzLCBldmVudCApID09PSBmYWxzZSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBEZXRlcm1pbmUgaGFuZGxlcnNcblx0XHRoYW5kbGVyUXVldWUgPSBqUXVlcnkuZXZlbnQuaGFuZGxlcnMuY2FsbCggdGhpcywgZXZlbnQsIGhhbmRsZXJzICk7XG5cblx0XHQvLyBSdW4gZGVsZWdhdGVzIGZpcnN0OyB0aGV5IG1heSB3YW50IHRvIHN0b3AgcHJvcGFnYXRpb24gYmVuZWF0aCB1c1xuXHRcdGkgPSAwO1xuXHRcdHdoaWxlICggKCBtYXRjaGVkID0gaGFuZGxlclF1ZXVlWyBpKysgXSApICYmICFldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXHRcdFx0ZXZlbnQuY3VycmVudFRhcmdldCA9IG1hdGNoZWQuZWxlbTtcblxuXHRcdFx0aiA9IDA7XG5cdFx0XHR3aGlsZSAoICggaGFuZGxlT2JqID0gbWF0Y2hlZC5oYW5kbGVyc1sgaisrIF0gKSAmJlxuXHRcdFx0XHQhZXZlbnQuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSApIHtcblxuXHRcdFx0XHQvLyBJZiB0aGUgZXZlbnQgaXMgbmFtZXNwYWNlZCwgdGhlbiBlYWNoIGhhbmRsZXIgaXMgb25seSBpbnZva2VkIGlmIGl0IGlzXG5cdFx0XHRcdC8vIHNwZWNpYWxseSB1bml2ZXJzYWwgb3IgaXRzIG5hbWVzcGFjZXMgYXJlIGEgc3VwZXJzZXQgb2YgdGhlIGV2ZW50J3MuXG5cdFx0XHRcdGlmICggIWV2ZW50LnJuYW1lc3BhY2UgfHwgaGFuZGxlT2JqLm5hbWVzcGFjZSA9PT0gZmFsc2UgfHxcblx0XHRcdFx0XHRldmVudC5ybmFtZXNwYWNlLnRlc3QoIGhhbmRsZU9iai5uYW1lc3BhY2UgKSApIHtcblxuXHRcdFx0XHRcdGV2ZW50LmhhbmRsZU9iaiA9IGhhbmRsZU9iajtcblx0XHRcdFx0XHRldmVudC5kYXRhID0gaGFuZGxlT2JqLmRhdGE7XG5cblx0XHRcdFx0XHRyZXQgPSAoICggalF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGhhbmRsZU9iai5vcmlnVHlwZSBdIHx8IHt9ICkuaGFuZGxlIHx8XG5cdFx0XHRcdFx0XHRoYW5kbGVPYmouaGFuZGxlciApLmFwcGx5KCBtYXRjaGVkLmVsZW0sIGFyZ3MgKTtcblxuXHRcdFx0XHRcdGlmICggcmV0ICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0XHRpZiAoICggZXZlbnQucmVzdWx0ID0gcmV0ICkgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRcdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDYWxsIHRoZSBwb3N0RGlzcGF0Y2ggaG9vayBmb3IgdGhlIG1hcHBlZCB0eXBlXG5cdFx0aWYgKCBzcGVjaWFsLnBvc3REaXNwYXRjaCApIHtcblx0XHRcdHNwZWNpYWwucG9zdERpc3BhdGNoLmNhbGwoIHRoaXMsIGV2ZW50ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGV2ZW50LnJlc3VsdDtcblx0fSxcblxuXHRoYW5kbGVyczogZnVuY3Rpb24oIGV2ZW50LCBoYW5kbGVycyApIHtcblx0XHR2YXIgaSwgaGFuZGxlT2JqLCBzZWwsIG1hdGNoZWRIYW5kbGVycywgbWF0Y2hlZFNlbGVjdG9ycyxcblx0XHRcdGhhbmRsZXJRdWV1ZSA9IFtdLFxuXHRcdFx0ZGVsZWdhdGVDb3VudCA9IGhhbmRsZXJzLmRlbGVnYXRlQ291bnQsXG5cdFx0XHRjdXIgPSBldmVudC50YXJnZXQ7XG5cblx0XHQvLyBGaW5kIGRlbGVnYXRlIGhhbmRsZXJzXG5cdFx0aWYgKCBkZWxlZ2F0ZUNvdW50ICYmXG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OVxuXHRcdFx0Ly8gQmxhY2staG9sZSBTVkcgPHVzZT4gaW5zdGFuY2UgdHJlZXMgKHRyYWMtMTMxODApXG5cdFx0XHRjdXIubm9kZVR5cGUgJiZcblxuXHRcdFx0Ly8gU3VwcG9ydDogRmlyZWZveCA8PTQyXG5cdFx0XHQvLyBTdXBwcmVzcyBzcGVjLXZpb2xhdGluZyBjbGlja3MgaW5kaWNhdGluZyBhIG5vbi1wcmltYXJ5IHBvaW50ZXIgYnV0dG9uICh0cmFjLTM4NjEpXG5cdFx0XHQvLyBodHRwczovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLyNldmVudC10eXBlLWNsaWNrXG5cdFx0XHQvLyBTdXBwb3J0OiBJRSAxMSBvbmx5XG5cdFx0XHQvLyAuLi5idXQgbm90IGFycm93IGtleSBcImNsaWNrc1wiIG9mIHJhZGlvIGlucHV0cywgd2hpY2ggY2FuIGhhdmUgYGJ1dHRvbmAgLTEgKGdoLTIzNDMpXG5cdFx0XHQhKCBldmVudC50eXBlID09PSBcImNsaWNrXCIgJiYgZXZlbnQuYnV0dG9uID49IDEgKSApIHtcblxuXHRcdFx0Zm9yICggOyBjdXIgIT09IHRoaXM7IGN1ciA9IGN1ci5wYXJlbnROb2RlIHx8IHRoaXMgKSB7XG5cblx0XHRcdFx0Ly8gRG9uJ3QgY2hlY2sgbm9uLWVsZW1lbnRzICh0cmFjLTEzMjA4KVxuXHRcdFx0XHQvLyBEb24ndCBwcm9jZXNzIGNsaWNrcyBvbiBkaXNhYmxlZCBlbGVtZW50cyAodHJhYy02OTExLCB0cmFjLTgxNjUsIHRyYWMtMTEzODIsIHRyYWMtMTE3NjQpXG5cdFx0XHRcdGlmICggY3VyLm5vZGVUeXBlID09PSAxICYmICEoIGV2ZW50LnR5cGUgPT09IFwiY2xpY2tcIiAmJiBjdXIuZGlzYWJsZWQgPT09IHRydWUgKSApIHtcblx0XHRcdFx0XHRtYXRjaGVkSGFuZGxlcnMgPSBbXTtcblx0XHRcdFx0XHRtYXRjaGVkU2VsZWN0b3JzID0ge307XG5cdFx0XHRcdFx0Zm9yICggaSA9IDA7IGkgPCBkZWxlZ2F0ZUNvdW50OyBpKysgKSB7XG5cdFx0XHRcdFx0XHRoYW5kbGVPYmogPSBoYW5kbGVyc1sgaSBdO1xuXG5cdFx0XHRcdFx0XHQvLyBEb24ndCBjb25mbGljdCB3aXRoIE9iamVjdC5wcm90b3R5cGUgcHJvcGVydGllcyAodHJhYy0xMzIwMylcblx0XHRcdFx0XHRcdHNlbCA9IGhhbmRsZU9iai5zZWxlY3RvciArIFwiIFwiO1xuXG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoZWRTZWxlY3RvcnNbIHNlbCBdID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0XHRcdG1hdGNoZWRTZWxlY3RvcnNbIHNlbCBdID0gaGFuZGxlT2JqLm5lZWRzQ29udGV4dCA/XG5cdFx0XHRcdFx0XHRcdFx0alF1ZXJ5KCBzZWwsIHRoaXMgKS5pbmRleCggY3VyICkgPiAtMSA6XG5cdFx0XHRcdFx0XHRcdFx0alF1ZXJ5LmZpbmQoIHNlbCwgdGhpcywgbnVsbCwgWyBjdXIgXSApLmxlbmd0aDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmICggbWF0Y2hlZFNlbGVjdG9yc1sgc2VsIF0gKSB7XG5cdFx0XHRcdFx0XHRcdG1hdGNoZWRIYW5kbGVycy5wdXNoKCBoYW5kbGVPYmogKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCBtYXRjaGVkSGFuZGxlcnMubGVuZ3RoICkge1xuXHRcdFx0XHRcdFx0aGFuZGxlclF1ZXVlLnB1c2goIHsgZWxlbTogY3VyLCBoYW5kbGVyczogbWF0Y2hlZEhhbmRsZXJzIH0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBBZGQgdGhlIHJlbWFpbmluZyAoZGlyZWN0bHktYm91bmQpIGhhbmRsZXJzXG5cdFx0Y3VyID0gdGhpcztcblx0XHRpZiAoIGRlbGVnYXRlQ291bnQgPCBoYW5kbGVycy5sZW5ndGggKSB7XG5cdFx0XHRoYW5kbGVyUXVldWUucHVzaCggeyBlbGVtOiBjdXIsIGhhbmRsZXJzOiBoYW5kbGVycy5zbGljZSggZGVsZWdhdGVDb3VudCApIH0gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaGFuZGxlclF1ZXVlO1xuXHR9LFxuXG5cdGFkZFByb3A6IGZ1bmN0aW9uKCBuYW1lLCBob29rICkge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggalF1ZXJ5LkV2ZW50LnByb3RvdHlwZSwgbmFtZSwge1xuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblxuXHRcdFx0Z2V0OiBpc0Z1bmN0aW9uKCBob29rICkgP1xuXHRcdFx0XHRmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRpZiAoIHRoaXMub3JpZ2luYWxFdmVudCApIHtcblx0XHRcdFx0XHRcdHJldHVybiBob29rKCB0aGlzLm9yaWdpbmFsRXZlbnQgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gOlxuXHRcdFx0XHRmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRpZiAoIHRoaXMub3JpZ2luYWxFdmVudCApIHtcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLm9yaWdpbmFsRXZlbnRbIG5hbWUgXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cblx0XHRcdHNldDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoIHRoaXMsIG5hbWUsIHtcblx0XHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0XHRcdFx0XHR3cml0YWJsZTogdHJ1ZSxcblx0XHRcdFx0XHR2YWx1ZTogdmFsdWVcblx0XHRcdFx0fSApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRmaXg6IGZ1bmN0aW9uKCBvcmlnaW5hbEV2ZW50ICkge1xuXHRcdHJldHVybiBvcmlnaW5hbEV2ZW50WyBqUXVlcnkuZXhwYW5kbyBdID9cblx0XHRcdG9yaWdpbmFsRXZlbnQgOlxuXHRcdFx0bmV3IGpRdWVyeS5FdmVudCggb3JpZ2luYWxFdmVudCApO1xuXHR9LFxuXG5cdHNwZWNpYWw6IHtcblx0XHRsb2FkOiB7XG5cblx0XHRcdC8vIFByZXZlbnQgdHJpZ2dlcmVkIGltYWdlLmxvYWQgZXZlbnRzIGZyb20gYnViYmxpbmcgdG8gd2luZG93LmxvYWRcblx0XHRcdG5vQnViYmxlOiB0cnVlXG5cdFx0fSxcblx0XHRjbGljazoge1xuXG5cdFx0XHQvLyBVdGlsaXplIG5hdGl2ZSBldmVudCB0byBlbnN1cmUgY29ycmVjdCBzdGF0ZSBmb3IgY2hlY2thYmxlIGlucHV0c1xuXHRcdFx0c2V0dXA6IGZ1bmN0aW9uKCBkYXRhICkge1xuXG5cdFx0XHRcdC8vIEZvciBtdXR1YWwgY29tcHJlc3NpYmlsaXR5IHdpdGggX2RlZmF1bHQsIHJlcGxhY2UgYHRoaXNgIGFjY2VzcyB3aXRoIGEgbG9jYWwgdmFyLlxuXHRcdFx0XHQvLyBgfHwgZGF0YWAgaXMgZGVhZCBjb2RlIG1lYW50IG9ubHkgdG8gcHJlc2VydmUgdGhlIHZhcmlhYmxlIHRocm91Z2ggbWluaWZpY2F0aW9uLlxuXHRcdFx0XHR2YXIgZWwgPSB0aGlzIHx8IGRhdGE7XG5cblx0XHRcdFx0Ly8gQ2xhaW0gdGhlIGZpcnN0IGhhbmRsZXJcblx0XHRcdFx0aWYgKCByY2hlY2thYmxlVHlwZS50ZXN0KCBlbC50eXBlICkgJiZcblx0XHRcdFx0XHRlbC5jbGljayAmJiBub2RlTmFtZSggZWwsIFwiaW5wdXRcIiApICkge1xuXG5cdFx0XHRcdFx0Ly8gZGF0YVByaXYuc2V0KCBlbCwgXCJjbGlja1wiLCAuLi4gKVxuXHRcdFx0XHRcdGxldmVyYWdlTmF0aXZlKCBlbCwgXCJjbGlja1wiLCByZXR1cm5UcnVlICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBSZXR1cm4gZmFsc2UgdG8gYWxsb3cgbm9ybWFsIHByb2Nlc3NpbmcgaW4gdGhlIGNhbGxlclxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9LFxuXHRcdFx0dHJpZ2dlcjogZnVuY3Rpb24oIGRhdGEgKSB7XG5cblx0XHRcdFx0Ly8gRm9yIG11dHVhbCBjb21wcmVzc2liaWxpdHkgd2l0aCBfZGVmYXVsdCwgcmVwbGFjZSBgdGhpc2AgYWNjZXNzIHdpdGggYSBsb2NhbCB2YXIuXG5cdFx0XHRcdC8vIGB8fCBkYXRhYCBpcyBkZWFkIGNvZGUgbWVhbnQgb25seSB0byBwcmVzZXJ2ZSB0aGUgdmFyaWFibGUgdGhyb3VnaCBtaW5pZmljYXRpb24uXG5cdFx0XHRcdHZhciBlbCA9IHRoaXMgfHwgZGF0YTtcblxuXHRcdFx0XHQvLyBGb3JjZSBzZXR1cCBiZWZvcmUgdHJpZ2dlcmluZyBhIGNsaWNrXG5cdFx0XHRcdGlmICggcmNoZWNrYWJsZVR5cGUudGVzdCggZWwudHlwZSApICYmXG5cdFx0XHRcdFx0ZWwuY2xpY2sgJiYgbm9kZU5hbWUoIGVsLCBcImlucHV0XCIgKSApIHtcblxuXHRcdFx0XHRcdGxldmVyYWdlTmF0aXZlKCBlbCwgXCJjbGlja1wiICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBSZXR1cm4gbm9uLWZhbHNlIHRvIGFsbG93IG5vcm1hbCBldmVudC1wYXRoIHByb3BhZ2F0aW9uXG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gRm9yIGNyb3NzLWJyb3dzZXIgY29uc2lzdGVuY3ksIHN1cHByZXNzIG5hdGl2ZSAuY2xpY2soKSBvbiBsaW5rc1xuXHRcdFx0Ly8gQWxzbyBwcmV2ZW50IGl0IGlmIHdlJ3JlIGN1cnJlbnRseSBpbnNpZGUgYSBsZXZlcmFnZWQgbmF0aXZlLWV2ZW50IHN0YWNrXG5cdFx0XHRfZGVmYXVsdDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0XHR2YXIgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuXHRcdFx0XHRyZXR1cm4gcmNoZWNrYWJsZVR5cGUudGVzdCggdGFyZ2V0LnR5cGUgKSAmJlxuXHRcdFx0XHRcdHRhcmdldC5jbGljayAmJiBub2RlTmFtZSggdGFyZ2V0LCBcImlucHV0XCIgKSAmJlxuXHRcdFx0XHRcdGRhdGFQcml2LmdldCggdGFyZ2V0LCBcImNsaWNrXCIgKSB8fFxuXHRcdFx0XHRcdG5vZGVOYW1lKCB0YXJnZXQsIFwiYVwiICk7XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdGJlZm9yZXVubG9hZDoge1xuXHRcdFx0cG9zdERpc3BhdGNoOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogRmlyZWZveCAyMCtcblx0XHRcdFx0Ly8gRmlyZWZveCBkb2Vzbid0IGFsZXJ0IGlmIHRoZSByZXR1cm5WYWx1ZSBmaWVsZCBpcyBub3Qgc2V0LlxuXHRcdFx0XHRpZiAoIGV2ZW50LnJlc3VsdCAhPT0gdW5kZWZpbmVkICYmIGV2ZW50Lm9yaWdpbmFsRXZlbnQgKSB7XG5cdFx0XHRcdFx0ZXZlbnQub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZSA9IGV2ZW50LnJlc3VsdDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufTtcblxuLy8gRW5zdXJlIHRoZSBwcmVzZW5jZSBvZiBhbiBldmVudCBsaXN0ZW5lciB0aGF0IGhhbmRsZXMgbWFudWFsbHktdHJpZ2dlcmVkXG4vLyBzeW50aGV0aWMgZXZlbnRzIGJ5IGludGVycnVwdGluZyBwcm9ncmVzcyB1bnRpbCByZWludm9rZWQgaW4gcmVzcG9uc2UgdG9cbi8vICpuYXRpdmUqIGV2ZW50cyB0aGF0IGl0IGZpcmVzIGRpcmVjdGx5LCBlbnN1cmluZyB0aGF0IHN0YXRlIGNoYW5nZXMgaGF2ZVxuLy8gYWxyZWFkeSBvY2N1cnJlZCBiZWZvcmUgb3RoZXIgbGlzdGVuZXJzIGFyZSBpbnZva2VkLlxuZnVuY3Rpb24gbGV2ZXJhZ2VOYXRpdmUoIGVsLCB0eXBlLCBleHBlY3RTeW5jICkge1xuXG5cdC8vIE1pc3NpbmcgZXhwZWN0U3luYyBpbmRpY2F0ZXMgYSB0cmlnZ2VyIGNhbGwsIHdoaWNoIG11c3QgZm9yY2Ugc2V0dXAgdGhyb3VnaCBqUXVlcnkuZXZlbnQuYWRkXG5cdGlmICggIWV4cGVjdFN5bmMgKSB7XG5cdFx0aWYgKCBkYXRhUHJpdi5nZXQoIGVsLCB0eXBlICkgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdGpRdWVyeS5ldmVudC5hZGQoIGVsLCB0eXBlLCByZXR1cm5UcnVlICk7XG5cdFx0fVxuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIFJlZ2lzdGVyIHRoZSBjb250cm9sbGVyIGFzIGEgc3BlY2lhbCB1bml2ZXJzYWwgaGFuZGxlciBmb3IgYWxsIGV2ZW50IG5hbWVzcGFjZXNcblx0ZGF0YVByaXYuc2V0KCBlbCwgdHlwZSwgZmFsc2UgKTtcblx0alF1ZXJ5LmV2ZW50LmFkZCggZWwsIHR5cGUsIHtcblx0XHRuYW1lc3BhY2U6IGZhbHNlLFxuXHRcdGhhbmRsZXI6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdHZhciBub3RBc3luYywgcmVzdWx0LFxuXHRcdFx0XHRzYXZlZCA9IGRhdGFQcml2LmdldCggdGhpcywgdHlwZSApO1xuXG5cdFx0XHRpZiAoICggZXZlbnQuaXNUcmlnZ2VyICYgMSApICYmIHRoaXNbIHR5cGUgXSApIHtcblxuXHRcdFx0XHQvLyBJbnRlcnJ1cHQgcHJvY2Vzc2luZyBvZiB0aGUgb3V0ZXIgc3ludGhldGljIC50cmlnZ2VyKCllZCBldmVudFxuXHRcdFx0XHQvLyBTYXZlZCBkYXRhIHNob3VsZCBiZSBmYWxzZSBpbiBzdWNoIGNhc2VzLCBidXQgbWlnaHQgYmUgYSBsZWZ0b3ZlciBjYXB0dXJlIG9iamVjdFxuXHRcdFx0XHQvLyBmcm9tIGFuIGFzeW5jIG5hdGl2ZSBoYW5kbGVyIChnaC00MzUwKVxuXHRcdFx0XHRpZiAoICFzYXZlZC5sZW5ndGggKSB7XG5cblx0XHRcdFx0XHQvLyBTdG9yZSBhcmd1bWVudHMgZm9yIHVzZSB3aGVuIGhhbmRsaW5nIHRoZSBpbm5lciBuYXRpdmUgZXZlbnRcblx0XHRcdFx0XHQvLyBUaGVyZSB3aWxsIGFsd2F5cyBiZSBhdCBsZWFzdCBvbmUgYXJndW1lbnQgKGFuIGV2ZW50IG9iamVjdCksIHNvIHRoaXMgYXJyYXlcblx0XHRcdFx0XHQvLyB3aWxsIG5vdCBiZSBjb25mdXNlZCB3aXRoIGEgbGVmdG92ZXIgY2FwdHVyZSBvYmplY3QuXG5cdFx0XHRcdFx0c2F2ZWQgPSBzbGljZS5jYWxsKCBhcmd1bWVudHMgKTtcblx0XHRcdFx0XHRkYXRhUHJpdi5zZXQoIHRoaXMsIHR5cGUsIHNhdmVkICk7XG5cblx0XHRcdFx0XHQvLyBUcmlnZ2VyIHRoZSBuYXRpdmUgZXZlbnQgYW5kIGNhcHR1cmUgaXRzIHJlc3VsdFxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExK1xuXHRcdFx0XHRcdC8vIGZvY3VzKCkgYW5kIGJsdXIoKSBhcmUgYXN5bmNocm9ub3VzXG5cdFx0XHRcdFx0bm90QXN5bmMgPSBleHBlY3RTeW5jKCB0aGlzLCB0eXBlICk7XG5cdFx0XHRcdFx0dGhpc1sgdHlwZSBdKCk7XG5cdFx0XHRcdFx0cmVzdWx0ID0gZGF0YVByaXYuZ2V0KCB0aGlzLCB0eXBlICk7XG5cdFx0XHRcdFx0aWYgKCBzYXZlZCAhPT0gcmVzdWx0IHx8IG5vdEFzeW5jICkge1xuXHRcdFx0XHRcdFx0ZGF0YVByaXYuc2V0KCB0aGlzLCB0eXBlLCBmYWxzZSApO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRyZXN1bHQgPSB7fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCBzYXZlZCAhPT0gcmVzdWx0ICkge1xuXG5cdFx0XHRcdFx0XHQvLyBDYW5jZWwgdGhlIG91dGVyIHN5bnRoZXRpYyBldmVudFxuXHRcdFx0XHRcdFx0ZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBDaHJvbWUgODYrXG5cdFx0XHRcdFx0XHQvLyBJbiBDaHJvbWUsIGlmIGFuIGVsZW1lbnQgaGF2aW5nIGEgZm9jdXNvdXQgaGFuZGxlciBpcyBibHVycmVkIGJ5XG5cdFx0XHRcdFx0XHQvLyBjbGlja2luZyBvdXRzaWRlIG9mIGl0LCBpdCBpbnZva2VzIHRoZSBoYW5kbGVyIHN5bmNocm9ub3VzbHkuIElmXG5cdFx0XHRcdFx0XHQvLyB0aGF0IGhhbmRsZXIgY2FsbHMgYC5yZW1vdmUoKWAgb24gdGhlIGVsZW1lbnQsIHRoZSBkYXRhIGlzIGNsZWFyZWQsXG5cdFx0XHRcdFx0XHQvLyBsZWF2aW5nIGByZXN1bHRgIHVuZGVmaW5lZC4gV2UgbmVlZCB0byBndWFyZCBhZ2FpbnN0IHRoaXMuXG5cdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0ICYmIHJlc3VsdC52YWx1ZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gSWYgdGhpcyBpcyBhbiBpbm5lciBzeW50aGV0aWMgZXZlbnQgZm9yIGFuIGV2ZW50IHdpdGggYSBidWJibGluZyBzdXJyb2dhdGVcblx0XHRcdFx0Ly8gKGZvY3VzIG9yIGJsdXIpLCBhc3N1bWUgdGhhdCB0aGUgc3Vycm9nYXRlIGFscmVhZHkgcHJvcGFnYXRlZCBmcm9tIHRyaWdnZXJpbmcgdGhlXG5cdFx0XHRcdC8vIG5hdGl2ZSBldmVudCBhbmQgcHJldmVudCB0aGF0IGZyb20gaGFwcGVuaW5nIGFnYWluIGhlcmUuXG5cdFx0XHRcdC8vIFRoaXMgdGVjaG5pY2FsbHkgZ2V0cyB0aGUgb3JkZXJpbmcgd3Jvbmcgdy5yLnQuIHRvIGAudHJpZ2dlcigpYCAoaW4gd2hpY2ggdGhlXG5cdFx0XHRcdC8vIGJ1YmJsaW5nIHN1cnJvZ2F0ZSBwcm9wYWdhdGVzICphZnRlciogdGhlIG5vbi1idWJibGluZyBiYXNlKSwgYnV0IHRoYXQgc2VlbXNcblx0XHRcdFx0Ly8gbGVzcyBiYWQgdGhhbiBkdXBsaWNhdGlvbi5cblx0XHRcdFx0fSBlbHNlIGlmICggKCBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9ICkuZGVsZWdhdGVUeXBlICkge1xuXHRcdFx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHR9XG5cblx0XHRcdC8vIElmIHRoaXMgaXMgYSBuYXRpdmUgZXZlbnQgdHJpZ2dlcmVkIGFib3ZlLCBldmVyeXRoaW5nIGlzIG5vdyBpbiBvcmRlclxuXHRcdFx0Ly8gRmlyZSBhbiBpbm5lciBzeW50aGV0aWMgZXZlbnQgd2l0aCB0aGUgb3JpZ2luYWwgYXJndW1lbnRzXG5cdFx0XHR9IGVsc2UgaWYgKCBzYXZlZC5sZW5ndGggKSB7XG5cblx0XHRcdFx0Ly8gLi4uYW5kIGNhcHR1cmUgdGhlIHJlc3VsdFxuXHRcdFx0XHRkYXRhUHJpdi5zZXQoIHRoaXMsIHR5cGUsIHtcblx0XHRcdFx0XHR2YWx1ZTogalF1ZXJ5LmV2ZW50LnRyaWdnZXIoXG5cblx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExK1xuXHRcdFx0XHRcdFx0Ly8gRXh0ZW5kIHdpdGggdGhlIHByb3RvdHlwZSB0byByZXNldCB0aGUgYWJvdmUgc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcblx0XHRcdFx0XHRcdGpRdWVyeS5leHRlbmQoIHNhdmVkWyAwIF0sIGpRdWVyeS5FdmVudC5wcm90b3R5cGUgKSxcblx0XHRcdFx0XHRcdHNhdmVkLnNsaWNlKCAxICksXG5cdFx0XHRcdFx0XHR0aGlzXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHR9ICk7XG5cblx0XHRcdFx0Ly8gQWJvcnQgaGFuZGxpbmcgb2YgdGhlIG5hdGl2ZSBldmVudFxuXHRcdFx0XHRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcblx0XHRcdH1cblx0XHR9XG5cdH0gKTtcbn1cblxualF1ZXJ5LnJlbW92ZUV2ZW50ID0gZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGhhbmRsZSApIHtcblxuXHQvLyBUaGlzIFwiaWZcIiBpcyBuZWVkZWQgZm9yIHBsYWluIG9iamVjdHNcblx0aWYgKCBlbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIgKSB7XG5cdFx0ZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyKCB0eXBlLCBoYW5kbGUgKTtcblx0fVxufTtcblxualF1ZXJ5LkV2ZW50ID0gZnVuY3Rpb24oIHNyYywgcHJvcHMgKSB7XG5cblx0Ly8gQWxsb3cgaW5zdGFudGlhdGlvbiB3aXRob3V0IHRoZSAnbmV3JyBrZXl3b3JkXG5cdGlmICggISggdGhpcyBpbnN0YW5jZW9mIGpRdWVyeS5FdmVudCApICkge1xuXHRcdHJldHVybiBuZXcgalF1ZXJ5LkV2ZW50KCBzcmMsIHByb3BzICk7XG5cdH1cblxuXHQvLyBFdmVudCBvYmplY3Rcblx0aWYgKCBzcmMgJiYgc3JjLnR5cGUgKSB7XG5cdFx0dGhpcy5vcmlnaW5hbEV2ZW50ID0gc3JjO1xuXHRcdHRoaXMudHlwZSA9IHNyYy50eXBlO1xuXG5cdFx0Ly8gRXZlbnRzIGJ1YmJsaW5nIHVwIHRoZSBkb2N1bWVudCBtYXkgaGF2ZSBiZWVuIG1hcmtlZCBhcyBwcmV2ZW50ZWRcblx0XHQvLyBieSBhIGhhbmRsZXIgbG93ZXIgZG93biB0aGUgdHJlZTsgcmVmbGVjdCB0aGUgY29ycmVjdCB2YWx1ZS5cblx0XHR0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IHNyYy5kZWZhdWx0UHJldmVudGVkIHx8XG5cdFx0XHRcdHNyYy5kZWZhdWx0UHJldmVudGVkID09PSB1bmRlZmluZWQgJiZcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9Mi4zIG9ubHlcblx0XHRcdFx0c3JjLnJldHVyblZhbHVlID09PSBmYWxzZSA/XG5cdFx0XHRyZXR1cm5UcnVlIDpcblx0XHRcdHJldHVybkZhbHNlO1xuXG5cdFx0Ly8gQ3JlYXRlIHRhcmdldCBwcm9wZXJ0aWVzXG5cdFx0Ly8gU3VwcG9ydDogU2FmYXJpIDw9NiAtIDcgb25seVxuXHRcdC8vIFRhcmdldCBzaG91bGQgbm90IGJlIGEgdGV4dCBub2RlICh0cmFjLTUwNCwgdHJhYy0xMzE0Mylcblx0XHR0aGlzLnRhcmdldCA9ICggc3JjLnRhcmdldCAmJiBzcmMudGFyZ2V0Lm5vZGVUeXBlID09PSAzICkgP1xuXHRcdFx0c3JjLnRhcmdldC5wYXJlbnROb2RlIDpcblx0XHRcdHNyYy50YXJnZXQ7XG5cblx0XHR0aGlzLmN1cnJlbnRUYXJnZXQgPSBzcmMuY3VycmVudFRhcmdldDtcblx0XHR0aGlzLnJlbGF0ZWRUYXJnZXQgPSBzcmMucmVsYXRlZFRhcmdldDtcblxuXHQvLyBFdmVudCB0eXBlXG5cdH0gZWxzZSB7XG5cdFx0dGhpcy50eXBlID0gc3JjO1xuXHR9XG5cblx0Ly8gUHV0IGV4cGxpY2l0bHkgcHJvdmlkZWQgcHJvcGVydGllcyBvbnRvIHRoZSBldmVudCBvYmplY3Rcblx0aWYgKCBwcm9wcyApIHtcblx0XHRqUXVlcnkuZXh0ZW5kKCB0aGlzLCBwcm9wcyApO1xuXHR9XG5cblx0Ly8gQ3JlYXRlIGEgdGltZXN0YW1wIGlmIGluY29taW5nIGV2ZW50IGRvZXNuJ3QgaGF2ZSBvbmVcblx0dGhpcy50aW1lU3RhbXAgPSBzcmMgJiYgc3JjLnRpbWVTdGFtcCB8fCBEYXRlLm5vdygpO1xuXG5cdC8vIE1hcmsgaXQgYXMgZml4ZWRcblx0dGhpc1sgalF1ZXJ5LmV4cGFuZG8gXSA9IHRydWU7XG59O1xuXG4vLyBqUXVlcnkuRXZlbnQgaXMgYmFzZWQgb24gRE9NMyBFdmVudHMgYXMgc3BlY2lmaWVkIGJ5IHRoZSBFQ01BU2NyaXB0IExhbmd1YWdlIEJpbmRpbmdcbi8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDAzL1dELURPTS1MZXZlbC0zLUV2ZW50cy0yMDAzMDMzMS9lY21hLXNjcmlwdC1iaW5kaW5nLmh0bWxcbmpRdWVyeS5FdmVudC5wcm90b3R5cGUgPSB7XG5cdGNvbnN0cnVjdG9yOiBqUXVlcnkuRXZlbnQsXG5cdGlzRGVmYXVsdFByZXZlbnRlZDogcmV0dXJuRmFsc2UsXG5cdGlzUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZSxcblx0aXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6IHJldHVybkZhbHNlLFxuXHRpc1NpbXVsYXRlZDogZmFsc2UsXG5cblx0cHJldmVudERlZmF1bHQ6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50O1xuXG5cdFx0dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSByZXR1cm5UcnVlO1xuXG5cdFx0aWYgKCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICkge1xuXHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdH1cblx0fSxcblx0c3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDtcblxuXHRcdHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSByZXR1cm5UcnVlO1xuXG5cdFx0aWYgKCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICkge1xuXHRcdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHR9XG5cdH0sXG5cdHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7XG5cblx0XHR0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTtcblxuXHRcdGlmICggZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCApIHtcblx0XHRcdGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5zdG9wUHJvcGFnYXRpb24oKTtcblx0fVxufTtcblxuLy8gSW5jbHVkZXMgYWxsIGNvbW1vbiBldmVudCBwcm9wcyBpbmNsdWRpbmcgS2V5RXZlbnQgYW5kIE1vdXNlRXZlbnQgc3BlY2lmaWMgcHJvcHNcbmpRdWVyeS5lYWNoKCB7XG5cdGFsdEtleTogdHJ1ZSxcblx0YnViYmxlczogdHJ1ZSxcblx0Y2FuY2VsYWJsZTogdHJ1ZSxcblx0Y2hhbmdlZFRvdWNoZXM6IHRydWUsXG5cdGN0cmxLZXk6IHRydWUsXG5cdGRldGFpbDogdHJ1ZSxcblx0ZXZlbnRQaGFzZTogdHJ1ZSxcblx0bWV0YUtleTogdHJ1ZSxcblx0cGFnZVg6IHRydWUsXG5cdHBhZ2VZOiB0cnVlLFxuXHRzaGlmdEtleTogdHJ1ZSxcblx0dmlldzogdHJ1ZSxcblx0XCJjaGFyXCI6IHRydWUsXG5cdGNvZGU6IHRydWUsXG5cdGNoYXJDb2RlOiB0cnVlLFxuXHRrZXk6IHRydWUsXG5cdGtleUNvZGU6IHRydWUsXG5cdGJ1dHRvbjogdHJ1ZSxcblx0YnV0dG9uczogdHJ1ZSxcblx0Y2xpZW50WDogdHJ1ZSxcblx0Y2xpZW50WTogdHJ1ZSxcblx0b2Zmc2V0WDogdHJ1ZSxcblx0b2Zmc2V0WTogdHJ1ZSxcblx0cG9pbnRlcklkOiB0cnVlLFxuXHRwb2ludGVyVHlwZTogdHJ1ZSxcblx0c2NyZWVuWDogdHJ1ZSxcblx0c2NyZWVuWTogdHJ1ZSxcblx0dGFyZ2V0VG91Y2hlczogdHJ1ZSxcblx0dG9FbGVtZW50OiB0cnVlLFxuXHR0b3VjaGVzOiB0cnVlLFxuXHR3aGljaDogdHJ1ZVxufSwgalF1ZXJ5LmV2ZW50LmFkZFByb3AgKTtcblxualF1ZXJ5LmVhY2goIHsgZm9jdXM6IFwiZm9jdXNpblwiLCBibHVyOiBcImZvY3Vzb3V0XCIgfSwgZnVuY3Rpb24oIHR5cGUsIGRlbGVnYXRlVHlwZSApIHtcblx0alF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSA9IHtcblxuXHRcdC8vIFV0aWxpemUgbmF0aXZlIGV2ZW50IGlmIHBvc3NpYmxlIHNvIGJsdXIvZm9jdXMgc2VxdWVuY2UgaXMgY29ycmVjdFxuXHRcdHNldHVwOiBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gQ2xhaW0gdGhlIGZpcnN0IGhhbmRsZXJcblx0XHRcdC8vIGRhdGFQcml2LnNldCggdGhpcywgXCJmb2N1c1wiLCAuLi4gKVxuXHRcdFx0Ly8gZGF0YVByaXYuc2V0KCB0aGlzLCBcImJsdXJcIiwgLi4uIClcblx0XHRcdGxldmVyYWdlTmF0aXZlKCB0aGlzLCB0eXBlLCBleHBlY3RTeW5jICk7XG5cblx0XHRcdC8vIFJldHVybiBmYWxzZSB0byBhbGxvdyBub3JtYWwgcHJvY2Vzc2luZyBpbiB0aGUgY2FsbGVyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSxcblx0XHR0cmlnZ2VyOiBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gRm9yY2Ugc2V0dXAgYmVmb3JlIHRyaWdnZXJcblx0XHRcdGxldmVyYWdlTmF0aXZlKCB0aGlzLCB0eXBlICk7XG5cblx0XHRcdC8vIFJldHVybiBub24tZmFsc2UgdG8gYWxsb3cgbm9ybWFsIGV2ZW50LXBhdGggcHJvcGFnYXRpb25cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0sXG5cblx0XHQvLyBTdXBwcmVzcyBuYXRpdmUgZm9jdXMgb3IgYmx1ciBpZiB3ZSdyZSBjdXJyZW50bHkgaW5zaWRlXG5cdFx0Ly8gYSBsZXZlcmFnZWQgbmF0aXZlLWV2ZW50IHN0YWNrXG5cdFx0X2RlZmF1bHQ6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdHJldHVybiBkYXRhUHJpdi5nZXQoIGV2ZW50LnRhcmdldCwgdHlwZSApO1xuXHRcdH0sXG5cblx0XHRkZWxlZ2F0ZVR5cGU6IGRlbGVnYXRlVHlwZVxuXHR9O1xufSApO1xuXG4vLyBDcmVhdGUgbW91c2VlbnRlci9sZWF2ZSBldmVudHMgdXNpbmcgbW91c2VvdmVyL291dCBhbmQgZXZlbnQtdGltZSBjaGVja3Ncbi8vIHNvIHRoYXQgZXZlbnQgZGVsZWdhdGlvbiB3b3JrcyBpbiBqUXVlcnkuXG4vLyBEbyB0aGUgc2FtZSBmb3IgcG9pbnRlcmVudGVyL3BvaW50ZXJsZWF2ZSBhbmQgcG9pbnRlcm92ZXIvcG9pbnRlcm91dFxuLy9cbi8vIFN1cHBvcnQ6IFNhZmFyaSA3IG9ubHlcbi8vIFNhZmFyaSBzZW5kcyBtb3VzZWVudGVyIHRvbyBvZnRlbjsgc2VlOlxuLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDcwMjU4XG4vLyBmb3IgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBidWcgKGl0IGV4aXN0ZWQgaW4gb2xkZXIgQ2hyb21lIHZlcnNpb25zIGFzIHdlbGwpLlxualF1ZXJ5LmVhY2goIHtcblx0bW91c2VlbnRlcjogXCJtb3VzZW92ZXJcIixcblx0bW91c2VsZWF2ZTogXCJtb3VzZW91dFwiLFxuXHRwb2ludGVyZW50ZXI6IFwicG9pbnRlcm92ZXJcIixcblx0cG9pbnRlcmxlYXZlOiBcInBvaW50ZXJvdXRcIlxufSwgZnVuY3Rpb24oIG9yaWcsIGZpeCApIHtcblx0alF1ZXJ5LmV2ZW50LnNwZWNpYWxbIG9yaWcgXSA9IHtcblx0XHRkZWxlZ2F0ZVR5cGU6IGZpeCxcblx0XHRiaW5kVHlwZTogZml4LFxuXG5cdFx0aGFuZGxlOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHR2YXIgcmV0LFxuXHRcdFx0XHR0YXJnZXQgPSB0aGlzLFxuXHRcdFx0XHRyZWxhdGVkID0gZXZlbnQucmVsYXRlZFRhcmdldCxcblx0XHRcdFx0aGFuZGxlT2JqID0gZXZlbnQuaGFuZGxlT2JqO1xuXG5cdFx0XHQvLyBGb3IgbW91c2VlbnRlci9sZWF2ZSBjYWxsIHRoZSBoYW5kbGVyIGlmIHJlbGF0ZWQgaXMgb3V0c2lkZSB0aGUgdGFyZ2V0LlxuXHRcdFx0Ly8gTkI6IE5vIHJlbGF0ZWRUYXJnZXQgaWYgdGhlIG1vdXNlIGxlZnQvZW50ZXJlZCB0aGUgYnJvd3NlciB3aW5kb3dcblx0XHRcdGlmICggIXJlbGF0ZWQgfHwgKCByZWxhdGVkICE9PSB0YXJnZXQgJiYgIWpRdWVyeS5jb250YWlucyggdGFyZ2V0LCByZWxhdGVkICkgKSApIHtcblx0XHRcdFx0ZXZlbnQudHlwZSA9IGhhbmRsZU9iai5vcmlnVHlwZTtcblx0XHRcdFx0cmV0ID0gaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRldmVudC50eXBlID0gZml4O1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJldDtcblx0XHR9XG5cdH07XG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblxuXHRvbjogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKSB7XG5cdFx0cmV0dXJuIG9uKCB0aGlzLCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuICk7XG5cdH0sXG5cdG9uZTogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKSB7XG5cdFx0cmV0dXJuIG9uKCB0aGlzLCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuLCAxICk7XG5cdH0sXG5cdG9mZjogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZm4gKSB7XG5cdFx0dmFyIGhhbmRsZU9iaiwgdHlwZTtcblx0XHRpZiAoIHR5cGVzICYmIHR5cGVzLnByZXZlbnREZWZhdWx0ICYmIHR5cGVzLmhhbmRsZU9iaiApIHtcblxuXHRcdFx0Ly8gKCBldmVudCApICBkaXNwYXRjaGVkIGpRdWVyeS5FdmVudFxuXHRcdFx0aGFuZGxlT2JqID0gdHlwZXMuaGFuZGxlT2JqO1xuXHRcdFx0alF1ZXJ5KCB0eXBlcy5kZWxlZ2F0ZVRhcmdldCApLm9mZihcblx0XHRcdFx0aGFuZGxlT2JqLm5hbWVzcGFjZSA/XG5cdFx0XHRcdFx0aGFuZGxlT2JqLm9yaWdUeXBlICsgXCIuXCIgKyBoYW5kbGVPYmoubmFtZXNwYWNlIDpcblx0XHRcdFx0XHRoYW5kbGVPYmoub3JpZ1R5cGUsXG5cdFx0XHRcdGhhbmRsZU9iai5zZWxlY3Rvcixcblx0XHRcdFx0aGFuZGxlT2JqLmhhbmRsZXJcblx0XHRcdCk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9XG5cdFx0aWYgKCB0eXBlb2YgdHlwZXMgPT09IFwib2JqZWN0XCIgKSB7XG5cblx0XHRcdC8vICggdHlwZXMtb2JqZWN0IFssIHNlbGVjdG9yXSApXG5cdFx0XHRmb3IgKCB0eXBlIGluIHR5cGVzICkge1xuXHRcdFx0XHR0aGlzLm9mZiggdHlwZSwgc2VsZWN0b3IsIHR5cGVzWyB0eXBlIF0gKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblx0XHRpZiAoIHNlbGVjdG9yID09PSBmYWxzZSB8fCB0eXBlb2Ygc2VsZWN0b3IgPT09IFwiZnVuY3Rpb25cIiApIHtcblxuXHRcdFx0Ly8gKCB0eXBlcyBbLCBmbl0gKVxuXHRcdFx0Zm4gPSBzZWxlY3Rvcjtcblx0XHRcdHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRpZiAoIGZuID09PSBmYWxzZSApIHtcblx0XHRcdGZuID0gcmV0dXJuRmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnJlbW92ZSggdGhpcywgdHlwZXMsIGZuLCBzZWxlY3RvciApO1xuXHRcdH0gKTtcblx0fVxufSApO1xuXG5cbnZhclxuXG5cdC8vIFN1cHBvcnQ6IElFIDw9MTAgLSAxMSwgRWRnZSAxMiAtIDEzIG9ubHlcblx0Ly8gSW4gSUUvRWRnZSB1c2luZyByZWdleCBncm91cHMgaGVyZSBjYXVzZXMgc2V2ZXJlIHNsb3dkb3ducy5cblx0Ly8gU2VlIGh0dHBzOi8vY29ubmVjdC5taWNyb3NvZnQuY29tL0lFL2ZlZWRiYWNrL2RldGFpbHMvMTczNjUxMi9cblx0cm5vSW5uZXJodG1sID0gLzxzY3JpcHR8PHN0eWxlfDxsaW5rL2ksXG5cblx0Ly8gY2hlY2tlZD1cImNoZWNrZWRcIiBvciBjaGVja2VkXG5cdHJjaGVja2VkID0gL2NoZWNrZWRcXHMqKD86W149XXw9XFxzKi5jaGVja2VkLikvaSxcblxuXHRyY2xlYW5TY3JpcHQgPSAvXlxccyo8IVxcW0NEQVRBXFxbfFxcXVxcXT5cXHMqJC9nO1xuXG4vLyBQcmVmZXIgYSB0Ym9keSBvdmVyIGl0cyBwYXJlbnQgdGFibGUgZm9yIGNvbnRhaW5pbmcgbmV3IHJvd3NcbmZ1bmN0aW9uIG1hbmlwdWxhdGlvblRhcmdldCggZWxlbSwgY29udGVudCApIHtcblx0aWYgKCBub2RlTmFtZSggZWxlbSwgXCJ0YWJsZVwiICkgJiZcblx0XHRub2RlTmFtZSggY29udGVudC5ub2RlVHlwZSAhPT0gMTEgPyBjb250ZW50IDogY29udGVudC5maXJzdENoaWxkLCBcInRyXCIgKSApIHtcblxuXHRcdHJldHVybiBqUXVlcnkoIGVsZW0gKS5jaGlsZHJlbiggXCJ0Ym9keVwiIClbIDAgXSB8fCBlbGVtO1xuXHR9XG5cblx0cmV0dXJuIGVsZW07XG59XG5cbi8vIFJlcGxhY2UvcmVzdG9yZSB0aGUgdHlwZSBhdHRyaWJ1dGUgb2Ygc2NyaXB0IGVsZW1lbnRzIGZvciBzYWZlIERPTSBtYW5pcHVsYXRpb25cbmZ1bmN0aW9uIGRpc2FibGVTY3JpcHQoIGVsZW0gKSB7XG5cdGVsZW0udHlwZSA9ICggZWxlbS5nZXRBdHRyaWJ1dGUoIFwidHlwZVwiICkgIT09IG51bGwgKSArIFwiL1wiICsgZWxlbS50eXBlO1xuXHRyZXR1cm4gZWxlbTtcbn1cbmZ1bmN0aW9uIHJlc3RvcmVTY3JpcHQoIGVsZW0gKSB7XG5cdGlmICggKCBlbGVtLnR5cGUgfHwgXCJcIiApLnNsaWNlKCAwLCA1ICkgPT09IFwidHJ1ZS9cIiApIHtcblx0XHRlbGVtLnR5cGUgPSBlbGVtLnR5cGUuc2xpY2UoIDUgKTtcblx0fSBlbHNlIHtcblx0XHRlbGVtLnJlbW92ZUF0dHJpYnV0ZSggXCJ0eXBlXCIgKTtcblx0fVxuXG5cdHJldHVybiBlbGVtO1xufVxuXG5mdW5jdGlvbiBjbG9uZUNvcHlFdmVudCggc3JjLCBkZXN0ICkge1xuXHR2YXIgaSwgbCwgdHlwZSwgcGRhdGFPbGQsIHVkYXRhT2xkLCB1ZGF0YUN1ciwgZXZlbnRzO1xuXG5cdGlmICggZGVzdC5ub2RlVHlwZSAhPT0gMSApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyAxLiBDb3B5IHByaXZhdGUgZGF0YTogZXZlbnRzLCBoYW5kbGVycywgZXRjLlxuXHRpZiAoIGRhdGFQcml2Lmhhc0RhdGEoIHNyYyApICkge1xuXHRcdHBkYXRhT2xkID0gZGF0YVByaXYuZ2V0KCBzcmMgKTtcblx0XHRldmVudHMgPSBwZGF0YU9sZC5ldmVudHM7XG5cblx0XHRpZiAoIGV2ZW50cyApIHtcblx0XHRcdGRhdGFQcml2LnJlbW92ZSggZGVzdCwgXCJoYW5kbGUgZXZlbnRzXCIgKTtcblxuXHRcdFx0Zm9yICggdHlwZSBpbiBldmVudHMgKSB7XG5cdFx0XHRcdGZvciAoIGkgPSAwLCBsID0gZXZlbnRzWyB0eXBlIF0ubGVuZ3RoOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5hZGQoIGRlc3QsIHR5cGUsIGV2ZW50c1sgdHlwZSBdWyBpIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIDIuIENvcHkgdXNlciBkYXRhXG5cdGlmICggZGF0YVVzZXIuaGFzRGF0YSggc3JjICkgKSB7XG5cdFx0dWRhdGFPbGQgPSBkYXRhVXNlci5hY2Nlc3MoIHNyYyApO1xuXHRcdHVkYXRhQ3VyID0galF1ZXJ5LmV4dGVuZCgge30sIHVkYXRhT2xkICk7XG5cblx0XHRkYXRhVXNlci5zZXQoIGRlc3QsIHVkYXRhQ3VyICk7XG5cdH1cbn1cblxuLy8gRml4IElFIGJ1Z3MsIHNlZSBzdXBwb3J0IHRlc3RzXG5mdW5jdGlvbiBmaXhJbnB1dCggc3JjLCBkZXN0ICkge1xuXHR2YXIgbm9kZU5hbWUgPSBkZXN0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cblx0Ly8gRmFpbHMgdG8gcGVyc2lzdCB0aGUgY2hlY2tlZCBzdGF0ZSBvZiBhIGNsb25lZCBjaGVja2JveCBvciByYWRpbyBidXR0b24uXG5cdGlmICggbm9kZU5hbWUgPT09IFwiaW5wdXRcIiAmJiByY2hlY2thYmxlVHlwZS50ZXN0KCBzcmMudHlwZSApICkge1xuXHRcdGRlc3QuY2hlY2tlZCA9IHNyYy5jaGVja2VkO1xuXG5cdC8vIEZhaWxzIHRvIHJldHVybiB0aGUgc2VsZWN0ZWQgb3B0aW9uIHRvIHRoZSBkZWZhdWx0IHNlbGVjdGVkIHN0YXRlIHdoZW4gY2xvbmluZyBvcHRpb25zXG5cdH0gZWxzZSBpZiAoIG5vZGVOYW1lID09PSBcImlucHV0XCIgfHwgbm9kZU5hbWUgPT09IFwidGV4dGFyZWFcIiApIHtcblx0XHRkZXN0LmRlZmF1bHRWYWx1ZSA9IHNyYy5kZWZhdWx0VmFsdWU7XG5cdH1cbn1cblxuZnVuY3Rpb24gZG9tTWFuaXAoIGNvbGxlY3Rpb24sIGFyZ3MsIGNhbGxiYWNrLCBpZ25vcmVkICkge1xuXG5cdC8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXNcblx0YXJncyA9IGZsYXQoIGFyZ3MgKTtcblxuXHR2YXIgZnJhZ21lbnQsIGZpcnN0LCBzY3JpcHRzLCBoYXNTY3JpcHRzLCBub2RlLCBkb2MsXG5cdFx0aSA9IDAsXG5cdFx0bCA9IGNvbGxlY3Rpb24ubGVuZ3RoLFxuXHRcdGlOb0Nsb25lID0gbCAtIDEsXG5cdFx0dmFsdWUgPSBhcmdzWyAwIF0sXG5cdFx0dmFsdWVJc0Z1bmN0aW9uID0gaXNGdW5jdGlvbiggdmFsdWUgKTtcblxuXHQvLyBXZSBjYW4ndCBjbG9uZU5vZGUgZnJhZ21lbnRzIHRoYXQgY29udGFpbiBjaGVja2VkLCBpbiBXZWJLaXRcblx0aWYgKCB2YWx1ZUlzRnVuY3Rpb24gfHxcblx0XHRcdCggbCA+IDEgJiYgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmXG5cdFx0XHRcdCFzdXBwb3J0LmNoZWNrQ2xvbmUgJiYgcmNoZWNrZWQudGVzdCggdmFsdWUgKSApICkge1xuXHRcdHJldHVybiBjb2xsZWN0aW9uLmVhY2goIGZ1bmN0aW9uKCBpbmRleCApIHtcblx0XHRcdHZhciBzZWxmID0gY29sbGVjdGlvbi5lcSggaW5kZXggKTtcblx0XHRcdGlmICggdmFsdWVJc0Z1bmN0aW9uICkge1xuXHRcdFx0XHRhcmdzWyAwIF0gPSB2YWx1ZS5jYWxsKCB0aGlzLCBpbmRleCwgc2VsZi5odG1sKCkgKTtcblx0XHRcdH1cblx0XHRcdGRvbU1hbmlwKCBzZWxmLCBhcmdzLCBjYWxsYmFjaywgaWdub3JlZCApO1xuXHRcdH0gKTtcblx0fVxuXG5cdGlmICggbCApIHtcblx0XHRmcmFnbWVudCA9IGJ1aWxkRnJhZ21lbnQoIGFyZ3MsIGNvbGxlY3Rpb25bIDAgXS5vd25lckRvY3VtZW50LCBmYWxzZSwgY29sbGVjdGlvbiwgaWdub3JlZCApO1xuXHRcdGZpcnN0ID0gZnJhZ21lbnQuZmlyc3RDaGlsZDtcblxuXHRcdGlmICggZnJhZ21lbnQuY2hpbGROb2Rlcy5sZW5ndGggPT09IDEgKSB7XG5cdFx0XHRmcmFnbWVudCA9IGZpcnN0O1xuXHRcdH1cblxuXHRcdC8vIFJlcXVpcmUgZWl0aGVyIG5ldyBjb250ZW50IG9yIGFuIGludGVyZXN0IGluIGlnbm9yZWQgZWxlbWVudHMgdG8gaW52b2tlIHRoZSBjYWxsYmFja1xuXHRcdGlmICggZmlyc3QgfHwgaWdub3JlZCApIHtcblx0XHRcdHNjcmlwdHMgPSBqUXVlcnkubWFwKCBnZXRBbGwoIGZyYWdtZW50LCBcInNjcmlwdFwiICksIGRpc2FibGVTY3JpcHQgKTtcblx0XHRcdGhhc1NjcmlwdHMgPSBzY3JpcHRzLmxlbmd0aDtcblxuXHRcdFx0Ly8gVXNlIHRoZSBvcmlnaW5hbCBmcmFnbWVudCBmb3IgdGhlIGxhc3QgaXRlbVxuXHRcdFx0Ly8gaW5zdGVhZCBvZiB0aGUgZmlyc3QgYmVjYXVzZSBpdCBjYW4gZW5kIHVwXG5cdFx0XHQvLyBiZWluZyBlbXB0aWVkIGluY29ycmVjdGx5IGluIGNlcnRhaW4gc2l0dWF0aW9ucyAodHJhYy04MDcwKS5cblx0XHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0bm9kZSA9IGZyYWdtZW50O1xuXG5cdFx0XHRcdGlmICggaSAhPT0gaU5vQ2xvbmUgKSB7XG5cdFx0XHRcdFx0bm9kZSA9IGpRdWVyeS5jbG9uZSggbm9kZSwgdHJ1ZSwgdHJ1ZSApO1xuXG5cdFx0XHRcdFx0Ly8gS2VlcCByZWZlcmVuY2VzIHRvIGNsb25lZCBzY3JpcHRzIGZvciBsYXRlciByZXN0b3JhdGlvblxuXHRcdFx0XHRcdGlmICggaGFzU2NyaXB0cyApIHtcblxuXHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5XG5cdFx0XHRcdFx0XHQvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdFx0XHRcdFx0XHRqUXVlcnkubWVyZ2UoIHNjcmlwdHMsIGdldEFsbCggbm9kZSwgXCJzY3JpcHRcIiApICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y2FsbGJhY2suY2FsbCggY29sbGVjdGlvblsgaSBdLCBub2RlLCBpICk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggaGFzU2NyaXB0cyApIHtcblx0XHRcdFx0ZG9jID0gc2NyaXB0c1sgc2NyaXB0cy5sZW5ndGggLSAxIF0ub3duZXJEb2N1bWVudDtcblxuXHRcdFx0XHQvLyBSZWVuYWJsZSBzY3JpcHRzXG5cdFx0XHRcdGpRdWVyeS5tYXAoIHNjcmlwdHMsIHJlc3RvcmVTY3JpcHQgKTtcblxuXHRcdFx0XHQvLyBFdmFsdWF0ZSBleGVjdXRhYmxlIHNjcmlwdHMgb24gZmlyc3QgZG9jdW1lbnQgaW5zZXJ0aW9uXG5cdFx0XHRcdGZvciAoIGkgPSAwOyBpIDwgaGFzU2NyaXB0czsgaSsrICkge1xuXHRcdFx0XHRcdG5vZGUgPSBzY3JpcHRzWyBpIF07XG5cdFx0XHRcdFx0aWYgKCByc2NyaXB0VHlwZS50ZXN0KCBub2RlLnR5cGUgfHwgXCJcIiApICYmXG5cdFx0XHRcdFx0XHQhZGF0YVByaXYuYWNjZXNzKCBub2RlLCBcImdsb2JhbEV2YWxcIiApICYmXG5cdFx0XHRcdFx0XHRqUXVlcnkuY29udGFpbnMoIGRvYywgbm9kZSApICkge1xuXG5cdFx0XHRcdFx0XHRpZiAoIG5vZGUuc3JjICYmICggbm9kZS50eXBlIHx8IFwiXCIgKS50b0xvd2VyQ2FzZSgpICAhPT0gXCJtb2R1bGVcIiApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBPcHRpb25hbCBBSkFYIGRlcGVuZGVuY3ksIGJ1dCB3b24ndCBydW4gc2NyaXB0cyBpZiBub3QgcHJlc2VudFxuXHRcdFx0XHRcdFx0XHRpZiAoIGpRdWVyeS5fZXZhbFVybCAmJiAhbm9kZS5ub01vZHVsZSApIHtcblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkuX2V2YWxVcmwoIG5vZGUuc3JjLCB7XG5cdFx0XHRcdFx0XHRcdFx0XHRub25jZTogbm9kZS5ub25jZSB8fCBub2RlLmdldEF0dHJpYnV0ZSggXCJub25jZVwiIClcblx0XHRcdFx0XHRcdFx0XHR9LCBkb2MgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBVbndyYXAgYSBDREFUQSBzZWN0aW9uIGNvbnRhaW5pbmcgc2NyaXB0IGNvbnRlbnRzLiBUaGlzIHNob3VsZG4ndCBiZVxuXHRcdFx0XHRcdFx0XHQvLyBuZWVkZWQgYXMgaW4gWE1MIGRvY3VtZW50cyB0aGV5J3JlIGFscmVhZHkgbm90IHZpc2libGUgd2hlblxuXHRcdFx0XHRcdFx0XHQvLyBpbnNwZWN0aW5nIGVsZW1lbnQgY29udGVudHMgYW5kIGluIEhUTUwgZG9jdW1lbnRzIHRoZXkgaGF2ZSBub1xuXHRcdFx0XHRcdFx0XHQvLyBtZWFuaW5nIGJ1dCB3ZSdyZSBwcmVzZXJ2aW5nIHRoYXQgbG9naWMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuXHRcdFx0XHRcdFx0XHQvLyBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBjb21wbGV0ZWx5IGluIDQuMC4gU2VlIGdoLTQ5MDQuXG5cdFx0XHRcdFx0XHRcdERPTUV2YWwoIG5vZGUudGV4dENvbnRlbnQucmVwbGFjZSggcmNsZWFuU2NyaXB0LCBcIlwiICksIG5vZGUsIGRvYyApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBjb2xsZWN0aW9uO1xufVxuXG5mdW5jdGlvbiByZW1vdmUoIGVsZW0sIHNlbGVjdG9yLCBrZWVwRGF0YSApIHtcblx0dmFyIG5vZGUsXG5cdFx0bm9kZXMgPSBzZWxlY3RvciA/IGpRdWVyeS5maWx0ZXIoIHNlbGVjdG9yLCBlbGVtICkgOiBlbGVtLFxuXHRcdGkgPSAwO1xuXG5cdGZvciAoIDsgKCBub2RlID0gbm9kZXNbIGkgXSApICE9IG51bGw7IGkrKyApIHtcblx0XHRpZiAoICFrZWVwRGF0YSAmJiBub2RlLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0alF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCBub2RlICkgKTtcblx0XHR9XG5cblx0XHRpZiAoIG5vZGUucGFyZW50Tm9kZSApIHtcblx0XHRcdGlmICgga2VlcERhdGEgJiYgaXNBdHRhY2hlZCggbm9kZSApICkge1xuXHRcdFx0XHRzZXRHbG9iYWxFdmFsKCBnZXRBbGwoIG5vZGUsIFwic2NyaXB0XCIgKSApO1xuXHRcdFx0fVxuXHRcdFx0bm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBub2RlICk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGVsZW07XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0aHRtbFByZWZpbHRlcjogZnVuY3Rpb24oIGh0bWwgKSB7XG5cdFx0cmV0dXJuIGh0bWw7XG5cdH0sXG5cblx0Y2xvbmU6IGZ1bmN0aW9uKCBlbGVtLCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApIHtcblx0XHR2YXIgaSwgbCwgc3JjRWxlbWVudHMsIGRlc3RFbGVtZW50cyxcblx0XHRcdGNsb25lID0gZWxlbS5jbG9uZU5vZGUoIHRydWUgKSxcblx0XHRcdGluUGFnZSA9IGlzQXR0YWNoZWQoIGVsZW0gKTtcblxuXHRcdC8vIEZpeCBJRSBjbG9uaW5nIGlzc3Vlc1xuXHRcdGlmICggIXN1cHBvcnQubm9DbG9uZUNoZWNrZWQgJiYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGVsZW0ubm9kZVR5cGUgPT09IDExICkgJiZcblx0XHRcdFx0IWpRdWVyeS5pc1hNTERvYyggZWxlbSApICkge1xuXG5cdFx0XHQvLyBXZSBlc2NoZXcgU2l6emxlIGhlcmUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnM6IGh0dHBzOi8vanNwZXJmLmNvbS9nZXRhbGwtdnMtc2l6emxlLzJcblx0XHRcdGRlc3RFbGVtZW50cyA9IGdldEFsbCggY2xvbmUgKTtcblx0XHRcdHNyY0VsZW1lbnRzID0gZ2V0QWxsKCBlbGVtICk7XG5cblx0XHRcdGZvciAoIGkgPSAwLCBsID0gc3JjRWxlbWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRmaXhJbnB1dCggc3JjRWxlbWVudHNbIGkgXSwgZGVzdEVsZW1lbnRzWyBpIF0gKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDb3B5IHRoZSBldmVudHMgZnJvbSB0aGUgb3JpZ2luYWwgdG8gdGhlIGNsb25lXG5cdFx0aWYgKCBkYXRhQW5kRXZlbnRzICkge1xuXHRcdFx0aWYgKCBkZWVwRGF0YUFuZEV2ZW50cyApIHtcblx0XHRcdFx0c3JjRWxlbWVudHMgPSBzcmNFbGVtZW50cyB8fCBnZXRBbGwoIGVsZW0gKTtcblx0XHRcdFx0ZGVzdEVsZW1lbnRzID0gZGVzdEVsZW1lbnRzIHx8IGdldEFsbCggY2xvbmUgKTtcblxuXHRcdFx0XHRmb3IgKCBpID0gMCwgbCA9IHNyY0VsZW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0XHRjbG9uZUNvcHlFdmVudCggc3JjRWxlbWVudHNbIGkgXSwgZGVzdEVsZW1lbnRzWyBpIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y2xvbmVDb3B5RXZlbnQoIGVsZW0sIGNsb25lICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gUHJlc2VydmUgc2NyaXB0IGV2YWx1YXRpb24gaGlzdG9yeVxuXHRcdGRlc3RFbGVtZW50cyA9IGdldEFsbCggY2xvbmUsIFwic2NyaXB0XCIgKTtcblx0XHRpZiAoIGRlc3RFbGVtZW50cy5sZW5ndGggPiAwICkge1xuXHRcdFx0c2V0R2xvYmFsRXZhbCggZGVzdEVsZW1lbnRzLCAhaW5QYWdlICYmIGdldEFsbCggZWxlbSwgXCJzY3JpcHRcIiApICk7XG5cdFx0fVxuXG5cdFx0Ly8gUmV0dXJuIHRoZSBjbG9uZWQgc2V0XG5cdFx0cmV0dXJuIGNsb25lO1xuXHR9LFxuXG5cdGNsZWFuRGF0YTogZnVuY3Rpb24oIGVsZW1zICkge1xuXHRcdHZhciBkYXRhLCBlbGVtLCB0eXBlLFxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRmb3IgKCA7ICggZWxlbSA9IGVsZW1zWyBpIF0gKSAhPT0gdW5kZWZpbmVkOyBpKysgKSB7XG5cdFx0XHRpZiAoIGFjY2VwdERhdGEoIGVsZW0gKSApIHtcblx0XHRcdFx0aWYgKCAoIGRhdGEgPSBlbGVtWyBkYXRhUHJpdi5leHBhbmRvIF0gKSApIHtcblx0XHRcdFx0XHRpZiAoIGRhdGEuZXZlbnRzICkge1xuXHRcdFx0XHRcdFx0Zm9yICggdHlwZSBpbiBkYXRhLmV2ZW50cyApIHtcblx0XHRcdFx0XHRcdFx0aWYgKCBzcGVjaWFsWyB0eXBlIF0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnJlbW92ZSggZWxlbSwgdHlwZSApO1xuXG5cdFx0XHRcdFx0XHRcdC8vIFRoaXMgaXMgYSBzaG9ydGN1dCB0byBhdm9pZCBqUXVlcnkuZXZlbnQucmVtb3ZlJ3Mgb3ZlcmhlYWRcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkucmVtb3ZlRXZlbnQoIGVsZW0sIHR5cGUsIGRhdGEuaGFuZGxlICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBDaHJvbWUgPD0zNSAtIDQ1K1xuXHRcdFx0XHRcdC8vIEFzc2lnbiB1bmRlZmluZWQgaW5zdGVhZCBvZiB1c2luZyBkZWxldGUsIHNlZSBEYXRhI3JlbW92ZVxuXHRcdFx0XHRcdGVsZW1bIGRhdGFQcml2LmV4cGFuZG8gXSA9IHVuZGVmaW5lZDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIGVsZW1bIGRhdGFVc2VyLmV4cGFuZG8gXSApIHtcblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IENocm9tZSA8PTM1IC0gNDUrXG5cdFx0XHRcdFx0Ly8gQXNzaWduIHVuZGVmaW5lZCBpbnN0ZWFkIG9mIHVzaW5nIGRlbGV0ZSwgc2VlIERhdGEjcmVtb3ZlXG5cdFx0XHRcdFx0ZWxlbVsgZGF0YVVzZXIuZXhwYW5kbyBdID0gdW5kZWZpbmVkO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0ZGV0YWNoOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHJlbW92ZSggdGhpcywgc2VsZWN0b3IsIHRydWUgKTtcblx0fSxcblxuXHRyZW1vdmU6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gcmVtb3ZlKCB0aGlzLCBzZWxlY3RvciApO1xuXHR9LFxuXG5cdHRleHQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHRyZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdGpRdWVyeS50ZXh0KCB0aGlzICkgOlxuXHRcdFx0XHR0aGlzLmVtcHR5KCkuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0aWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnRleHRDb250ZW50ID0gdmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9ICk7XG5cdFx0fSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggKTtcblx0fSxcblxuXHRhcHBlbmQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHR2YXIgdGFyZ2V0ID0gbWFuaXB1bGF0aW9uVGFyZ2V0KCB0aGlzLCBlbGVtICk7XG5cdFx0XHRcdHRhcmdldC5hcHBlbmRDaGlsZCggZWxlbSApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRwcmVwZW5kOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0dmFyIHRhcmdldCA9IG1hbmlwdWxhdGlvblRhcmdldCggdGhpcywgZWxlbSApO1xuXHRcdFx0XHR0YXJnZXQuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0YXJnZXQuZmlyc3RDaGlsZCApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRiZWZvcmU6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdGlmICggdGhpcy5wYXJlbnROb2RlICkge1xuXHRcdFx0XHR0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0aGlzICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGFmdGVyOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRpZiAoIHRoaXMucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcy5uZXh0U2libGluZyApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRlbXB0eTogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGVsZW0sXG5cdFx0XHRpID0gMDtcblxuXHRcdGZvciAoIDsgKCBlbGVtID0gdGhpc1sgaSBdICkgIT0gbnVsbDsgaSsrICkge1xuXHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXG5cdFx0XHRcdC8vIFByZXZlbnQgbWVtb3J5IGxlYWtzXG5cdFx0XHRcdGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggZWxlbSwgZmFsc2UgKSApO1xuXG5cdFx0XHRcdC8vIFJlbW92ZSBhbnkgcmVtYWluaW5nIG5vZGVzXG5cdFx0XHRcdGVsZW0udGV4dENvbnRlbnQgPSBcIlwiO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdGNsb25lOiBmdW5jdGlvbiggZGF0YUFuZEV2ZW50cywgZGVlcERhdGFBbmRFdmVudHMgKSB7XG5cdFx0ZGF0YUFuZEV2ZW50cyA9IGRhdGFBbmRFdmVudHMgPT0gbnVsbCA/IGZhbHNlIDogZGF0YUFuZEV2ZW50cztcblx0XHRkZWVwRGF0YUFuZEV2ZW50cyA9IGRlZXBEYXRhQW5kRXZlbnRzID09IG51bGwgPyBkYXRhQW5kRXZlbnRzIDogZGVlcERhdGFBbmRFdmVudHM7XG5cblx0XHRyZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5jbG9uZSggdGhpcywgZGF0YUFuZEV2ZW50cywgZGVlcERhdGFBbmRFdmVudHMgKTtcblx0XHR9ICk7XG5cdH0sXG5cblx0aHRtbDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdHZhciBlbGVtID0gdGhpc1sgMCBdIHx8IHt9LFxuXHRcdFx0XHRpID0gMCxcblx0XHRcdFx0bCA9IHRoaXMubGVuZ3RoO1xuXG5cdFx0XHRpZiAoIHZhbHVlID09PSB1bmRlZmluZWQgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdFx0cmV0dXJuIGVsZW0uaW5uZXJIVE1MO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTZWUgaWYgd2UgY2FuIHRha2UgYSBzaG9ydGN1dCBhbmQganVzdCB1c2UgaW5uZXJIVE1MXG5cdFx0XHRpZiAoIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiAhcm5vSW5uZXJodG1sLnRlc3QoIHZhbHVlICkgJiZcblx0XHRcdFx0IXdyYXBNYXBbICggcnRhZ05hbWUuZXhlYyggdmFsdWUgKSB8fCBbIFwiXCIsIFwiXCIgXSApWyAxIF0udG9Mb3dlckNhc2UoKSBdICkge1xuXG5cdFx0XHRcdHZhbHVlID0galF1ZXJ5Lmh0bWxQcmVmaWx0ZXIoIHZhbHVlICk7XG5cblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdFx0XHRlbGVtID0gdGhpc1sgaSBdIHx8IHt9O1xuXG5cdFx0XHRcdFx0XHQvLyBSZW1vdmUgZWxlbWVudCBub2RlcyBhbmQgcHJldmVudCBtZW1vcnkgbGVha3Ncblx0XHRcdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdFx0XHRcdFx0alF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCBlbGVtLCBmYWxzZSApICk7XG5cdFx0XHRcdFx0XHRcdGVsZW0uaW5uZXJIVE1MID0gdmFsdWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0ZWxlbSA9IDA7XG5cblx0XHRcdFx0Ly8gSWYgdXNpbmcgaW5uZXJIVE1MIHRocm93cyBhbiBleGNlcHRpb24sIHVzZSB0aGUgZmFsbGJhY2sgbWV0aG9kXG5cdFx0XHRcdH0gY2F0Y2ggKCBlICkge31cblx0XHRcdH1cblxuXHRcdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0XHR0aGlzLmVtcHR5KCkuYXBwZW5kKCB2YWx1ZSApO1xuXHRcdFx0fVxuXHRcdH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoICk7XG5cdH0sXG5cblx0cmVwbGFjZVdpdGg6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBpZ25vcmVkID0gW107XG5cblx0XHQvLyBNYWtlIHRoZSBjaGFuZ2VzLCByZXBsYWNpbmcgZWFjaCBub24taWdub3JlZCBjb250ZXh0IGVsZW1lbnQgd2l0aCB0aGUgbmV3IGNvbnRlbnRcblx0XHRyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgcGFyZW50ID0gdGhpcy5wYXJlbnROb2RlO1xuXG5cdFx0XHRpZiAoIGpRdWVyeS5pbkFycmF5KCB0aGlzLCBpZ25vcmVkICkgPCAwICkge1xuXHRcdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIHRoaXMgKSApO1xuXHRcdFx0XHRpZiAoIHBhcmVudCApIHtcblx0XHRcdFx0XHRwYXJlbnQucmVwbGFjZUNoaWxkKCBlbGVtLCB0aGlzICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdC8vIEZvcmNlIGNhbGxiYWNrIGludm9jYXRpb25cblx0XHR9LCBpZ25vcmVkICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmVhY2goIHtcblx0YXBwZW5kVG86IFwiYXBwZW5kXCIsXG5cdHByZXBlbmRUbzogXCJwcmVwZW5kXCIsXG5cdGluc2VydEJlZm9yZTogXCJiZWZvcmVcIixcblx0aW5zZXJ0QWZ0ZXI6IFwiYWZ0ZXJcIixcblx0cmVwbGFjZUFsbDogXCJyZXBsYWNlV2l0aFwiXG59LCBmdW5jdGlvbiggbmFtZSwgb3JpZ2luYWwgKSB7XG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHZhciBlbGVtcyxcblx0XHRcdHJldCA9IFtdLFxuXHRcdFx0aW5zZXJ0ID0galF1ZXJ5KCBzZWxlY3RvciApLFxuXHRcdFx0bGFzdCA9IGluc2VydC5sZW5ndGggLSAxLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRmb3IgKCA7IGkgPD0gbGFzdDsgaSsrICkge1xuXHRcdFx0ZWxlbXMgPSBpID09PSBsYXN0ID8gdGhpcyA6IHRoaXMuY2xvbmUoIHRydWUgKTtcblx0XHRcdGpRdWVyeSggaW5zZXJ0WyBpIF0gKVsgb3JpZ2luYWwgXSggZWxlbXMgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5XG5cdFx0XHQvLyAuZ2V0KCkgYmVjYXVzZSBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdFx0XHRwdXNoLmFwcGx5KCByZXQsIGVsZW1zLmdldCgpICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCByZXQgKTtcblx0fTtcbn0gKTtcbnZhciBybnVtbm9ucHggPSBuZXcgUmVnRXhwKCBcIl4oXCIgKyBwbnVtICsgXCIpKD8hcHgpW2EteiVdKyRcIiwgXCJpXCIgKTtcblxudmFyIHJjdXN0b21Qcm9wID0gL14tLS87XG5cblxudmFyIGdldFN0eWxlcyA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5LCBGaXJlZm94IDw9MzAgKHRyYWMtMTUwOTgsIHRyYWMtMTQxNTApXG5cdFx0Ly8gSUUgdGhyb3dzIG9uIGVsZW1lbnRzIGNyZWF0ZWQgaW4gcG9wdXBzXG5cdFx0Ly8gRkYgbWVhbndoaWxlIHRocm93cyBvbiBmcmFtZSBlbGVtZW50cyB0aHJvdWdoIFwiZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZVwiXG5cdFx0dmFyIHZpZXcgPSBlbGVtLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7XG5cblx0XHRpZiAoICF2aWV3IHx8ICF2aWV3Lm9wZW5lciApIHtcblx0XHRcdHZpZXcgPSB3aW5kb3c7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSggZWxlbSApO1xuXHR9O1xuXG52YXIgc3dhcCA9IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBjYWxsYmFjayApIHtcblx0dmFyIHJldCwgbmFtZSxcblx0XHRvbGQgPSB7fTtcblxuXHQvLyBSZW1lbWJlciB0aGUgb2xkIHZhbHVlcywgYW5kIGluc2VydCB0aGUgbmV3IG9uZXNcblx0Zm9yICggbmFtZSBpbiBvcHRpb25zICkge1xuXHRcdG9sZFsgbmFtZSBdID0gZWxlbS5zdHlsZVsgbmFtZSBdO1xuXHRcdGVsZW0uc3R5bGVbIG5hbWUgXSA9IG9wdGlvbnNbIG5hbWUgXTtcblx0fVxuXG5cdHJldCA9IGNhbGxiYWNrLmNhbGwoIGVsZW0gKTtcblxuXHQvLyBSZXZlcnQgdGhlIG9sZCB2YWx1ZXNcblx0Zm9yICggbmFtZSBpbiBvcHRpb25zICkge1xuXHRcdGVsZW0uc3R5bGVbIG5hbWUgXSA9IG9sZFsgbmFtZSBdO1xuXHR9XG5cblx0cmV0dXJuIHJldDtcbn07XG5cblxudmFyIHJib3hTdHlsZSA9IG5ldyBSZWdFeHAoIGNzc0V4cGFuZC5qb2luKCBcInxcIiApLCBcImlcIiApO1xuXG52YXIgd2hpdGVzcGFjZSA9IFwiW1xcXFx4MjBcXFxcdFxcXFxyXFxcXG5cXFxcZl1cIjtcblxuXG52YXIgcnRyaW1DU1MgPSBuZXcgUmVnRXhwKFxuXHRcIl5cIiArIHdoaXRlc3BhY2UgKyBcIit8KCg/Ol58W15cXFxcXFxcXF0pKD86XFxcXFxcXFwuKSopXCIgKyB3aGl0ZXNwYWNlICsgXCIrJFwiLFxuXHRcImdcIlxuKTtcblxuXG5cblxuKCBmdW5jdGlvbigpIHtcblxuXHQvLyBFeGVjdXRpbmcgYm90aCBwaXhlbFBvc2l0aW9uICYgYm94U2l6aW5nUmVsaWFibGUgdGVzdHMgcmVxdWlyZSBvbmx5IG9uZSBsYXlvdXRcblx0Ly8gc28gdGhleSdyZSBleGVjdXRlZCBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgdGhlIHNlY29uZCBjb21wdXRhdGlvbi5cblx0ZnVuY3Rpb24gY29tcHV0ZVN0eWxlVGVzdHMoKSB7XG5cblx0XHQvLyBUaGlzIGlzIGEgc2luZ2xldG9uLCB3ZSBuZWVkIHRvIGV4ZWN1dGUgaXQgb25seSBvbmNlXG5cdFx0aWYgKCAhZGl2ICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnRhaW5lci5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O3dpZHRoOjYwcHg7XCIgK1xuXHRcdFx0XCJtYXJnaW4tdG9wOjFweDtwYWRkaW5nOjA7Ym9yZGVyOjBcIjtcblx0XHRkaXYuc3R5bGUuY3NzVGV4dCA9XG5cdFx0XHRcInBvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OnNjcm9sbDtcIiArXG5cdFx0XHRcIm1hcmdpbjphdXRvO2JvcmRlcjoxcHg7cGFkZGluZzoxcHg7XCIgK1xuXHRcdFx0XCJ3aWR0aDo2MCU7dG9wOjElXCI7XG5cdFx0ZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKCBjb250YWluZXIgKS5hcHBlbmRDaGlsZCggZGl2ICk7XG5cblx0XHR2YXIgZGl2U3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSggZGl2ICk7XG5cdFx0cGl4ZWxQb3NpdGlvblZhbCA9IGRpdlN0eWxlLnRvcCAhPT0gXCIxJVwiO1xuXG5cdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA0LjAgLSA0LjMgb25seSwgRmlyZWZveCA8PTMgLSA0NFxuXHRcdHJlbGlhYmxlTWFyZ2luTGVmdFZhbCA9IHJvdW5kUGl4ZWxNZWFzdXJlcyggZGl2U3R5bGUubWFyZ2luTGVmdCApID09PSAxMjtcblxuXHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIC0gNC4zIG9ubHksIFNhZmFyaSA8PTkuMSAtIDEwLjEsIGlPUyA8PTcuMCAtIDkuM1xuXHRcdC8vIFNvbWUgc3R5bGVzIGNvbWUgYmFjayB3aXRoIHBlcmNlbnRhZ2UgdmFsdWVzLCBldmVuIHRob3VnaCB0aGV5IHNob3VsZG4ndFxuXHRcdGRpdi5zdHlsZS5yaWdodCA9IFwiNjAlXCI7XG5cdFx0cGl4ZWxCb3hTdHlsZXNWYWwgPSByb3VuZFBpeGVsTWVhc3VyZXMoIGRpdlN0eWxlLnJpZ2h0ICkgPT09IDM2O1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgOSAtIDExIG9ubHlcblx0XHQvLyBEZXRlY3QgbWlzcmVwb3J0aW5nIG9mIGNvbnRlbnQgZGltZW5zaW9ucyBmb3IgYm94LXNpemluZzpib3JkZXItYm94IGVsZW1lbnRzXG5cdFx0Ym94U2l6aW5nUmVsaWFibGVWYWwgPSByb3VuZFBpeGVsTWVhc3VyZXMoIGRpdlN0eWxlLndpZHRoICkgPT09IDM2O1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgOSBvbmx5XG5cdFx0Ly8gRGV0ZWN0IG92ZXJmbG93OnNjcm9sbCBzY3Jld2luZXNzIChnaC0zNjk5KVxuXHRcdC8vIFN1cHBvcnQ6IENocm9tZSA8PTY0XG5cdFx0Ly8gRG9uJ3QgZ2V0IHRyaWNrZWQgd2hlbiB6b29tIGFmZmVjdHMgb2Zmc2V0V2lkdGggKGdoLTQwMjkpXG5cdFx0ZGl2LnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiO1xuXHRcdHNjcm9sbGJveFNpemVWYWwgPSByb3VuZFBpeGVsTWVhc3VyZXMoIGRpdi5vZmZzZXRXaWR0aCAvIDMgKSA9PT0gMTI7XG5cblx0XHRkb2N1bWVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoIGNvbnRhaW5lciApO1xuXG5cdFx0Ly8gTnVsbGlmeSB0aGUgZGl2IHNvIGl0IHdvdWxkbid0IGJlIHN0b3JlZCBpbiB0aGUgbWVtb3J5IGFuZFxuXHRcdC8vIGl0IHdpbGwgYWxzbyBiZSBhIHNpZ24gdGhhdCBjaGVja3MgYWxyZWFkeSBwZXJmb3JtZWRcblx0XHRkaXYgPSBudWxsO1xuXHR9XG5cblx0ZnVuY3Rpb24gcm91bmRQaXhlbE1lYXN1cmVzKCBtZWFzdXJlICkge1xuXHRcdHJldHVybiBNYXRoLnJvdW5kKCBwYXJzZUZsb2F0KCBtZWFzdXJlICkgKTtcblx0fVxuXG5cdHZhciBwaXhlbFBvc2l0aW9uVmFsLCBib3hTaXppbmdSZWxpYWJsZVZhbCwgc2Nyb2xsYm94U2l6ZVZhbCwgcGl4ZWxCb3hTdHlsZXNWYWwsXG5cdFx0cmVsaWFibGVUckRpbWVuc2lvbnNWYWwsIHJlbGlhYmxlTWFyZ2luTGVmdFZhbCxcblx0XHRjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICksXG5cdFx0ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApO1xuXG5cdC8vIEZpbmlzaCBlYXJseSBpbiBsaW1pdGVkIChub24tYnJvd3NlcikgZW52aXJvbm1lbnRzXG5cdGlmICggIWRpdi5zdHlsZSApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSBvbmx5XG5cdC8vIFN0eWxlIG9mIGNsb25lZCBlbGVtZW50IGFmZmVjdHMgc291cmNlIGVsZW1lbnQgY2xvbmVkICh0cmFjLTg5MDgpXG5cdGRpdi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9IFwiY29udGVudC1ib3hcIjtcblx0ZGl2LmNsb25lTm9kZSggdHJ1ZSApLnN0eWxlLmJhY2tncm91bmRDbGlwID0gXCJcIjtcblx0c3VwcG9ydC5jbGVhckNsb25lU3R5bGUgPSBkaXYuc3R5bGUuYmFja2dyb3VuZENsaXAgPT09IFwiY29udGVudC1ib3hcIjtcblxuXHRqUXVlcnkuZXh0ZW5kKCBzdXBwb3J0LCB7XG5cdFx0Ym94U2l6aW5nUmVsaWFibGU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29tcHV0ZVN0eWxlVGVzdHMoKTtcblx0XHRcdHJldHVybiBib3hTaXppbmdSZWxpYWJsZVZhbDtcblx0XHR9LFxuXHRcdHBpeGVsQm94U3R5bGVzOiBmdW5jdGlvbigpIHtcblx0XHRcdGNvbXB1dGVTdHlsZVRlc3RzKCk7XG5cdFx0XHRyZXR1cm4gcGl4ZWxCb3hTdHlsZXNWYWw7XG5cdFx0fSxcblx0XHRwaXhlbFBvc2l0aW9uOiBmdW5jdGlvbigpIHtcblx0XHRcdGNvbXB1dGVTdHlsZVRlc3RzKCk7XG5cdFx0XHRyZXR1cm4gcGl4ZWxQb3NpdGlvblZhbDtcblx0XHR9LFxuXHRcdHJlbGlhYmxlTWFyZ2luTGVmdDogZnVuY3Rpb24oKSB7XG5cdFx0XHRjb21wdXRlU3R5bGVUZXN0cygpO1xuXHRcdFx0cmV0dXJuIHJlbGlhYmxlTWFyZ2luTGVmdFZhbDtcblx0XHR9LFxuXHRcdHNjcm9sbGJveFNpemU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29tcHV0ZVN0eWxlVGVzdHMoKTtcblx0XHRcdHJldHVybiBzY3JvbGxib3hTaXplVmFsO1xuXHRcdH0sXG5cblx0XHQvLyBTdXBwb3J0OiBJRSA5IC0gMTErLCBFZGdlIDE1IC0gMTgrXG5cdFx0Ly8gSUUvRWRnZSBtaXNyZXBvcnQgYGdldENvbXB1dGVkU3R5bGVgIG9mIHRhYmxlIHJvd3Mgd2l0aCB3aWR0aC9oZWlnaHRcblx0XHQvLyBzZXQgaW4gQ1NTIHdoaWxlIGBvZmZzZXQqYCBwcm9wZXJ0aWVzIHJlcG9ydCBjb3JyZWN0IHZhbHVlcy5cblx0XHQvLyBCZWhhdmlvciBpbiBJRSA5IGlzIG1vcmUgc3VidGxlIHRoYW4gaW4gbmV3ZXIgdmVyc2lvbnMgJiBpdCBwYXNzZXNcblx0XHQvLyBzb21lIHZlcnNpb25zIG9mIHRoaXMgdGVzdDsgbWFrZSBzdXJlIG5vdCB0byBtYWtlIGl0IHBhc3MgdGhlcmUhXG5cdFx0Ly9cblx0XHQvLyBTdXBwb3J0OiBGaXJlZm94IDcwK1xuXHRcdC8vIE9ubHkgRmlyZWZveCBpbmNsdWRlcyBib3JkZXIgd2lkdGhzXG5cdFx0Ly8gaW4gY29tcHV0ZWQgZGltZW5zaW9ucy4gKGdoLTQ1MjkpXG5cdFx0cmVsaWFibGVUckRpbWVuc2lvbnM6IGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIHRhYmxlLCB0ciwgdHJDaGlsZCwgdHJTdHlsZTtcblx0XHRcdGlmICggcmVsaWFibGVUckRpbWVuc2lvbnNWYWwgPT0gbnVsbCApIHtcblx0XHRcdFx0dGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcInRhYmxlXCIgKTtcblx0XHRcdFx0dHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcInRyXCIgKTtcblx0XHRcdFx0dHJDaGlsZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKTtcblxuXHRcdFx0XHR0YWJsZS5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZVwiO1xuXHRcdFx0XHR0ci5zdHlsZS5jc3NUZXh0ID0gXCJib3JkZXI6MXB4IHNvbGlkXCI7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogQ2hyb21lIDg2K1xuXHRcdFx0XHQvLyBIZWlnaHQgc2V0IHRocm91Z2ggY3NzVGV4dCBkb2VzIG5vdCBnZXQgYXBwbGllZC5cblx0XHRcdFx0Ly8gQ29tcHV0ZWQgaGVpZ2h0IHRoZW4gY29tZXMgYmFjayBhcyAwLlxuXHRcdFx0XHR0ci5zdHlsZS5oZWlnaHQgPSBcIjFweFwiO1xuXHRcdFx0XHR0ckNoaWxkLnN0eWxlLmhlaWdodCA9IFwiOXB4XCI7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA4IENocm9tZSA4Nitcblx0XHRcdFx0Ly8gSW4gb3VyIGJvZHlCYWNrZ3JvdW5kLmh0bWwgaWZyYW1lLFxuXHRcdFx0XHQvLyBkaXNwbGF5IGZvciBhbGwgZGl2IGVsZW1lbnRzIGlzIHNldCB0byBcImlubGluZVwiLFxuXHRcdFx0XHQvLyB3aGljaCBjYXVzZXMgYSBwcm9ibGVtIG9ubHkgaW4gQW5kcm9pZCA4IENocm9tZSA4Ni5cblx0XHRcdFx0Ly8gRW5zdXJpbmcgdGhlIGRpdiBpcyBkaXNwbGF5OiBibG9ja1xuXHRcdFx0XHQvLyBnZXRzIGFyb3VuZCB0aGlzIGlzc3VlLlxuXHRcdFx0XHR0ckNoaWxkLnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XG5cblx0XHRcdFx0ZG9jdW1lbnRFbGVtZW50XG5cdFx0XHRcdFx0LmFwcGVuZENoaWxkKCB0YWJsZSApXG5cdFx0XHRcdFx0LmFwcGVuZENoaWxkKCB0ciApXG5cdFx0XHRcdFx0LmFwcGVuZENoaWxkKCB0ckNoaWxkICk7XG5cblx0XHRcdFx0dHJTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKCB0ciApO1xuXHRcdFx0XHRyZWxpYWJsZVRyRGltZW5zaW9uc1ZhbCA9ICggcGFyc2VJbnQoIHRyU3R5bGUuaGVpZ2h0LCAxMCApICtcblx0XHRcdFx0XHRwYXJzZUludCggdHJTdHlsZS5ib3JkZXJUb3BXaWR0aCwgMTAgKSArXG5cdFx0XHRcdFx0cGFyc2VJbnQoIHRyU3R5bGUuYm9yZGVyQm90dG9tV2lkdGgsIDEwICkgKSA9PT0gdHIub2Zmc2V0SGVpZ2h0O1xuXG5cdFx0XHRcdGRvY3VtZW50RWxlbWVudC5yZW1vdmVDaGlsZCggdGFibGUgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZWxpYWJsZVRyRGltZW5zaW9uc1ZhbDtcblx0XHR9XG5cdH0gKTtcbn0gKSgpO1xuXG5cbmZ1bmN0aW9uIGN1ckNTUyggZWxlbSwgbmFtZSwgY29tcHV0ZWQgKSB7XG5cdHZhciB3aWR0aCwgbWluV2lkdGgsIG1heFdpZHRoLCByZXQsXG5cdFx0aXNDdXN0b21Qcm9wID0gcmN1c3RvbVByb3AudGVzdCggbmFtZSApLFxuXG5cdFx0Ly8gU3VwcG9ydDogRmlyZWZveCA1MStcblx0XHQvLyBSZXRyaWV2aW5nIHN0eWxlIGJlZm9yZSBjb21wdXRlZCBzb21laG93XG5cdFx0Ly8gZml4ZXMgYW4gaXNzdWUgd2l0aCBnZXR0aW5nIHdyb25nIHZhbHVlc1xuXHRcdC8vIG9uIGRldGFjaGVkIGVsZW1lbnRzXG5cdFx0c3R5bGUgPSBlbGVtLnN0eWxlO1xuXG5cdGNvbXB1dGVkID0gY29tcHV0ZWQgfHwgZ2V0U3R5bGVzKCBlbGVtICk7XG5cblx0Ly8gZ2V0UHJvcGVydHlWYWx1ZSBpcyBuZWVkZWQgZm9yOlxuXHQvLyAgIC5jc3MoJ2ZpbHRlcicpIChJRSA5IG9ubHksIHRyYWMtMTI1MzcpXG5cdC8vICAgLmNzcygnLS1jdXN0b21Qcm9wZXJ0eSkgKGdoLTMxNDQpXG5cdGlmICggY29tcHV0ZWQgKSB7XG5cdFx0cmV0ID0gY29tcHV0ZWQuZ2V0UHJvcGVydHlWYWx1ZSggbmFtZSApIHx8IGNvbXB1dGVkWyBuYW1lIF07XG5cblx0XHQvLyB0cmltIHdoaXRlc3BhY2UgZm9yIGN1c3RvbSBwcm9wZXJ0eSAoaXNzdWUgZ2gtNDkyNilcblx0XHRpZiAoIGlzQ3VzdG9tUHJvcCApIHtcblxuXHRcdFx0Ly8gcnRyaW0gdHJlYXRzIFUrMDAwRCBDQVJSSUFHRSBSRVRVUk4gYW5kIFUrMDAwQyBGT1JNIEZFRURcblx0XHRcdC8vIGFzIHdoaXRlc3BhY2Ugd2hpbGUgQ1NTIGRvZXMgbm90LCBidXQgdGhpcyBpcyBub3QgYSBwcm9ibGVtXG5cdFx0XHQvLyBiZWNhdXNlIENTUyBwcmVwcm9jZXNzaW5nIHJlcGxhY2VzIHRoZW0gd2l0aCBVKzAwMEEgTElORSBGRUVEXG5cdFx0XHQvLyAod2hpY2ggKmlzKiBDU1Mgd2hpdGVzcGFjZSlcblx0XHRcdC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc3ludGF4LTMvI2lucHV0LXByZXByb2Nlc3Npbmdcblx0XHRcdHJldCA9IHJldC5yZXBsYWNlKCBydHJpbUNTUywgXCIkMVwiICk7XG5cdFx0fVxuXG5cdFx0aWYgKCByZXQgPT09IFwiXCIgJiYgIWlzQXR0YWNoZWQoIGVsZW0gKSApIHtcblx0XHRcdHJldCA9IGpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSApO1xuXHRcdH1cblxuXHRcdC8vIEEgdHJpYnV0ZSB0byB0aGUgXCJhd2Vzb21lIGhhY2sgYnkgRGVhbiBFZHdhcmRzXCJcblx0XHQvLyBBbmRyb2lkIEJyb3dzZXIgcmV0dXJucyBwZXJjZW50YWdlIGZvciBzb21lIHZhbHVlcyxcblx0XHQvLyBidXQgd2lkdGggc2VlbXMgdG8gYmUgcmVsaWFibHkgcGl4ZWxzLlxuXHRcdC8vIFRoaXMgaXMgYWdhaW5zdCB0aGUgQ1NTT00gZHJhZnQgc3BlYzpcblx0XHQvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI3Jlc29sdmVkLXZhbHVlc1xuXHRcdGlmICggIXN1cHBvcnQucGl4ZWxCb3hTdHlsZXMoKSAmJiBybnVtbm9ucHgudGVzdCggcmV0ICkgJiYgcmJveFN0eWxlLnRlc3QoIG5hbWUgKSApIHtcblxuXHRcdFx0Ly8gUmVtZW1iZXIgdGhlIG9yaWdpbmFsIHZhbHVlc1xuXHRcdFx0d2lkdGggPSBzdHlsZS53aWR0aDtcblx0XHRcdG1pbldpZHRoID0gc3R5bGUubWluV2lkdGg7XG5cdFx0XHRtYXhXaWR0aCA9IHN0eWxlLm1heFdpZHRoO1xuXG5cdFx0XHQvLyBQdXQgaW4gdGhlIG5ldyB2YWx1ZXMgdG8gZ2V0IGEgY29tcHV0ZWQgdmFsdWUgb3V0XG5cdFx0XHRzdHlsZS5taW5XaWR0aCA9IHN0eWxlLm1heFdpZHRoID0gc3R5bGUud2lkdGggPSByZXQ7XG5cdFx0XHRyZXQgPSBjb21wdXRlZC53aWR0aDtcblxuXHRcdFx0Ly8gUmV2ZXJ0IHRoZSBjaGFuZ2VkIHZhbHVlc1xuXHRcdFx0c3R5bGUud2lkdGggPSB3aWR0aDtcblx0XHRcdHN0eWxlLm1pbldpZHRoID0gbWluV2lkdGg7XG5cdFx0XHRzdHlsZS5tYXhXaWR0aCA9IG1heFdpZHRoO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiByZXQgIT09IHVuZGVmaW5lZCA/XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSBvbmx5XG5cdFx0Ly8gSUUgcmV0dXJucyB6SW5kZXggdmFsdWUgYXMgYW4gaW50ZWdlci5cblx0XHRyZXQgKyBcIlwiIDpcblx0XHRyZXQ7XG59XG5cblxuZnVuY3Rpb24gYWRkR2V0SG9va0lmKCBjb25kaXRpb25GbiwgaG9va0ZuICkge1xuXG5cdC8vIERlZmluZSB0aGUgaG9vaywgd2UnbGwgY2hlY2sgb24gdGhlIGZpcnN0IHJ1biBpZiBpdCdzIHJlYWxseSBuZWVkZWQuXG5cdHJldHVybiB7XG5cdFx0Z2V0OiBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggY29uZGl0aW9uRm4oKSApIHtcblxuXHRcdFx0XHQvLyBIb29rIG5vdCBuZWVkZWQgKG9yIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHVzZSBpdCBkdWVcblx0XHRcdFx0Ly8gdG8gbWlzc2luZyBkZXBlbmRlbmN5KSwgcmVtb3ZlIGl0LlxuXHRcdFx0XHRkZWxldGUgdGhpcy5nZXQ7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSG9vayBuZWVkZWQ7IHJlZGVmaW5lIGl0IHNvIHRoYXQgdGhlIHN1cHBvcnQgdGVzdCBpcyBub3QgZXhlY3V0ZWQgYWdhaW4uXG5cdFx0XHRyZXR1cm4gKCB0aGlzLmdldCA9IGhvb2tGbiApLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHR9XG5cdH07XG59XG5cblxudmFyIGNzc1ByZWZpeGVzID0gWyBcIldlYmtpdFwiLCBcIk1velwiLCBcIm1zXCIgXSxcblx0ZW1wdHlTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKS5zdHlsZSxcblx0dmVuZG9yUHJvcHMgPSB7fTtcblxuLy8gUmV0dXJuIGEgdmVuZG9yLXByZWZpeGVkIHByb3BlcnR5IG9yIHVuZGVmaW5lZFxuZnVuY3Rpb24gdmVuZG9yUHJvcE5hbWUoIG5hbWUgKSB7XG5cblx0Ly8gQ2hlY2sgZm9yIHZlbmRvciBwcmVmaXhlZCBuYW1lc1xuXHR2YXIgY2FwTmFtZSA9IG5hbWVbIDAgXS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSggMSApLFxuXHRcdGkgPSBjc3NQcmVmaXhlcy5sZW5ndGg7XG5cblx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0bmFtZSA9IGNzc1ByZWZpeGVzWyBpIF0gKyBjYXBOYW1lO1xuXHRcdGlmICggbmFtZSBpbiBlbXB0eVN0eWxlICkge1xuXHRcdFx0cmV0dXJuIG5hbWU7XG5cdFx0fVxuXHR9XG59XG5cbi8vIFJldHVybiBhIHBvdGVudGlhbGx5LW1hcHBlZCBqUXVlcnkuY3NzUHJvcHMgb3IgdmVuZG9yIHByZWZpeGVkIHByb3BlcnR5XG5mdW5jdGlvbiBmaW5hbFByb3BOYW1lKCBuYW1lICkge1xuXHR2YXIgZmluYWwgPSBqUXVlcnkuY3NzUHJvcHNbIG5hbWUgXSB8fCB2ZW5kb3JQcm9wc1sgbmFtZSBdO1xuXG5cdGlmICggZmluYWwgKSB7XG5cdFx0cmV0dXJuIGZpbmFsO1xuXHR9XG5cdGlmICggbmFtZSBpbiBlbXB0eVN0eWxlICkge1xuXHRcdHJldHVybiBuYW1lO1xuXHR9XG5cdHJldHVybiB2ZW5kb3JQcm9wc1sgbmFtZSBdID0gdmVuZG9yUHJvcE5hbWUoIG5hbWUgKSB8fCBuYW1lO1xufVxuXG5cbnZhclxuXG5cdC8vIFN3YXBwYWJsZSBpZiBkaXNwbGF5IGlzIG5vbmUgb3Igc3RhcnRzIHdpdGggdGFibGVcblx0Ly8gZXhjZXB0IFwidGFibGVcIiwgXCJ0YWJsZS1jZWxsXCIsIG9yIFwidGFibGUtY2FwdGlvblwiXG5cdC8vIFNlZSBoZXJlIGZvciBkaXNwbGF5IHZhbHVlczogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MvZGlzcGxheVxuXHRyZGlzcGxheXN3YXAgPSAvXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sXG5cdGNzc1Nob3cgPSB7IHBvc2l0aW9uOiBcImFic29sdXRlXCIsIHZpc2liaWxpdHk6IFwiaGlkZGVuXCIsIGRpc3BsYXk6IFwiYmxvY2tcIiB9LFxuXHRjc3NOb3JtYWxUcmFuc2Zvcm0gPSB7XG5cdFx0bGV0dGVyU3BhY2luZzogXCIwXCIsXG5cdFx0Zm9udFdlaWdodDogXCI0MDBcIlxuXHR9O1xuXG5mdW5jdGlvbiBzZXRQb3NpdGl2ZU51bWJlciggX2VsZW0sIHZhbHVlLCBzdWJ0cmFjdCApIHtcblxuXHQvLyBBbnkgcmVsYXRpdmUgKCsvLSkgdmFsdWVzIGhhdmUgYWxyZWFkeSBiZWVuXG5cdC8vIG5vcm1hbGl6ZWQgYXQgdGhpcyBwb2ludFxuXHR2YXIgbWF0Y2hlcyA9IHJjc3NOdW0uZXhlYyggdmFsdWUgKTtcblx0cmV0dXJuIG1hdGNoZXMgP1xuXG5cdFx0Ly8gR3VhcmQgYWdhaW5zdCB1bmRlZmluZWQgXCJzdWJ0cmFjdFwiLCBlLmcuLCB3aGVuIHVzZWQgYXMgaW4gY3NzSG9va3Ncblx0XHRNYXRoLm1heCggMCwgbWF0Y2hlc1sgMiBdIC0gKCBzdWJ0cmFjdCB8fCAwICkgKSArICggbWF0Y2hlc1sgMyBdIHx8IFwicHhcIiApIDpcblx0XHR2YWx1ZTtcbn1cblxuZnVuY3Rpb24gYm94TW9kZWxBZGp1c3RtZW50KCBlbGVtLCBkaW1lbnNpb24sIGJveCwgaXNCb3JkZXJCb3gsIHN0eWxlcywgY29tcHV0ZWRWYWwgKSB7XG5cdHZhciBpID0gZGltZW5zaW9uID09PSBcIndpZHRoXCIgPyAxIDogMCxcblx0XHRleHRyYSA9IDAsXG5cdFx0ZGVsdGEgPSAwO1xuXG5cdC8vIEFkanVzdG1lbnQgbWF5IG5vdCBiZSBuZWNlc3Nhcnlcblx0aWYgKCBib3ggPT09ICggaXNCb3JkZXJCb3ggPyBcImJvcmRlclwiIDogXCJjb250ZW50XCIgKSApIHtcblx0XHRyZXR1cm4gMDtcblx0fVxuXG5cdGZvciAoIDsgaSA8IDQ7IGkgKz0gMiApIHtcblxuXHRcdC8vIEJvdGggYm94IG1vZGVscyBleGNsdWRlIG1hcmdpblxuXHRcdGlmICggYm94ID09PSBcIm1hcmdpblwiICkge1xuXHRcdFx0ZGVsdGEgKz0galF1ZXJ5LmNzcyggZWxlbSwgYm94ICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApO1xuXHRcdH1cblxuXHRcdC8vIElmIHdlIGdldCBoZXJlIHdpdGggYSBjb250ZW50LWJveCwgd2UncmUgc2Vla2luZyBcInBhZGRpbmdcIiBvciBcImJvcmRlclwiIG9yIFwibWFyZ2luXCJcblx0XHRpZiAoICFpc0JvcmRlckJveCApIHtcblxuXHRcdFx0Ly8gQWRkIHBhZGRpbmdcblx0XHRcdGRlbHRhICs9IGpRdWVyeS5jc3MoIGVsZW0sIFwicGFkZGluZ1wiICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApO1xuXG5cdFx0XHQvLyBGb3IgXCJib3JkZXJcIiBvciBcIm1hcmdpblwiLCBhZGQgYm9yZGVyXG5cdFx0XHRpZiAoIGJveCAhPT0gXCJwYWRkaW5nXCIgKSB7XG5cdFx0XHRcdGRlbHRhICs9IGpRdWVyeS5jc3MoIGVsZW0sIFwiYm9yZGVyXCIgKyBjc3NFeHBhbmRbIGkgXSArIFwiV2lkdGhcIiwgdHJ1ZSwgc3R5bGVzICk7XG5cblx0XHRcdC8vIEJ1dCBzdGlsbCBrZWVwIHRyYWNrIG9mIGl0IG90aGVyd2lzZVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZXh0cmEgKz0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3JkZXJcIiArIGNzc0V4cGFuZFsgaSBdICsgXCJXaWR0aFwiLCB0cnVlLCBzdHlsZXMgKTtcblx0XHRcdH1cblxuXHRcdC8vIElmIHdlIGdldCBoZXJlIHdpdGggYSBib3JkZXItYm94IChjb250ZW50ICsgcGFkZGluZyArIGJvcmRlciksIHdlJ3JlIHNlZWtpbmcgXCJjb250ZW50XCIgb3Jcblx0XHQvLyBcInBhZGRpbmdcIiBvciBcIm1hcmdpblwiXG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gRm9yIFwiY29udGVudFwiLCBzdWJ0cmFjdCBwYWRkaW5nXG5cdFx0XHRpZiAoIGJveCA9PT0gXCJjb250ZW50XCIgKSB7XG5cdFx0XHRcdGRlbHRhIC09IGpRdWVyeS5jc3MoIGVsZW0sIFwicGFkZGluZ1wiICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBGb3IgXCJjb250ZW50XCIgb3IgXCJwYWRkaW5nXCIsIHN1YnRyYWN0IGJvcmRlclxuXHRcdFx0aWYgKCBib3ggIT09IFwibWFyZ2luXCIgKSB7XG5cdFx0XHRcdGRlbHRhIC09IGpRdWVyeS5jc3MoIGVsZW0sIFwiYm9yZGVyXCIgKyBjc3NFeHBhbmRbIGkgXSArIFwiV2lkdGhcIiwgdHJ1ZSwgc3R5bGVzICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQWNjb3VudCBmb3IgcG9zaXRpdmUgY29udGVudC1ib3ggc2Nyb2xsIGd1dHRlciB3aGVuIHJlcXVlc3RlZCBieSBwcm92aWRpbmcgY29tcHV0ZWRWYWxcblx0aWYgKCAhaXNCb3JkZXJCb3ggJiYgY29tcHV0ZWRWYWwgPj0gMCApIHtcblxuXHRcdC8vIG9mZnNldFdpZHRoL29mZnNldEhlaWdodCBpcyBhIHJvdW5kZWQgc3VtIG9mIGNvbnRlbnQsIHBhZGRpbmcsIHNjcm9sbCBndXR0ZXIsIGFuZCBib3JkZXJcblx0XHQvLyBBc3N1bWluZyBpbnRlZ2VyIHNjcm9sbCBndXR0ZXIsIHN1YnRyYWN0IHRoZSByZXN0IGFuZCByb3VuZCBkb3duXG5cdFx0ZGVsdGEgKz0gTWF0aC5tYXgoIDAsIE1hdGguY2VpbChcblx0XHRcdGVsZW1bIFwib2Zmc2V0XCIgKyBkaW1lbnNpb25bIDAgXS50b1VwcGVyQ2FzZSgpICsgZGltZW5zaW9uLnNsaWNlKCAxICkgXSAtXG5cdFx0XHRjb21wdXRlZFZhbCAtXG5cdFx0XHRkZWx0YSAtXG5cdFx0XHRleHRyYSAtXG5cdFx0XHQwLjVcblxuXHRcdC8vIElmIG9mZnNldFdpZHRoL29mZnNldEhlaWdodCBpcyB1bmtub3duLCB0aGVuIHdlIGNhbid0IGRldGVybWluZSBjb250ZW50LWJveCBzY3JvbGwgZ3V0dGVyXG5cdFx0Ly8gVXNlIGFuIGV4cGxpY2l0IHplcm8gdG8gYXZvaWQgTmFOIChnaC0zOTY0KVxuXHRcdCkgKSB8fCAwO1xuXHR9XG5cblx0cmV0dXJuIGRlbHRhO1xufVxuXG5mdW5jdGlvbiBnZXRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBkaW1lbnNpb24sIGV4dHJhICkge1xuXG5cdC8vIFN0YXJ0IHdpdGggY29tcHV0ZWQgc3R5bGVcblx0dmFyIHN0eWxlcyA9IGdldFN0eWxlcyggZWxlbSApLFxuXG5cdFx0Ly8gVG8gYXZvaWQgZm9yY2luZyBhIHJlZmxvdywgb25seSBmZXRjaCBib3hTaXppbmcgaWYgd2UgbmVlZCBpdCAoZ2gtNDMyMikuXG5cdFx0Ly8gRmFrZSBjb250ZW50LWJveCB1bnRpbCB3ZSBrbm93IGl0J3MgbmVlZGVkIHRvIGtub3cgdGhlIHRydWUgdmFsdWUuXG5cdFx0Ym94U2l6aW5nTmVlZGVkID0gIXN1cHBvcnQuYm94U2l6aW5nUmVsaWFibGUoKSB8fCBleHRyYSxcblx0XHRpc0JvcmRlckJveCA9IGJveFNpemluZ05lZWRlZCAmJlxuXHRcdFx0alF1ZXJ5LmNzcyggZWxlbSwgXCJib3hTaXppbmdcIiwgZmFsc2UsIHN0eWxlcyApID09PSBcImJvcmRlci1ib3hcIixcblx0XHR2YWx1ZUlzQm9yZGVyQm94ID0gaXNCb3JkZXJCb3gsXG5cblx0XHR2YWwgPSBjdXJDU1MoIGVsZW0sIGRpbWVuc2lvbiwgc3R5bGVzICksXG5cdFx0b2Zmc2V0UHJvcCA9IFwib2Zmc2V0XCIgKyBkaW1lbnNpb25bIDAgXS50b1VwcGVyQ2FzZSgpICsgZGltZW5zaW9uLnNsaWNlKCAxICk7XG5cblx0Ly8gU3VwcG9ydDogRmlyZWZveCA8PTU0XG5cdC8vIFJldHVybiBhIGNvbmZvdW5kaW5nIG5vbi1waXhlbCB2YWx1ZSBvciBmZWlnbiBpZ25vcmFuY2UsIGFzIGFwcHJvcHJpYXRlLlxuXHRpZiAoIHJudW1ub25weC50ZXN0KCB2YWwgKSApIHtcblx0XHRpZiAoICFleHRyYSApIHtcblx0XHRcdHJldHVybiB2YWw7XG5cdFx0fVxuXHRcdHZhbCA9IFwiYXV0b1wiO1xuXHR9XG5cblxuXHQvLyBTdXBwb3J0OiBJRSA5IC0gMTEgb25seVxuXHQvLyBVc2Ugb2Zmc2V0V2lkdGgvb2Zmc2V0SGVpZ2h0IGZvciB3aGVuIGJveCBzaXppbmcgaXMgdW5yZWxpYWJsZS5cblx0Ly8gSW4gdGhvc2UgY2FzZXMsIHRoZSBjb21wdXRlZCB2YWx1ZSBjYW4gYmUgdHJ1c3RlZCB0byBiZSBib3JkZXItYm94LlxuXHRpZiAoICggIXN1cHBvcnQuYm94U2l6aW5nUmVsaWFibGUoKSAmJiBpc0JvcmRlckJveCB8fFxuXG5cdFx0Ly8gU3VwcG9ydDogSUUgMTAgLSAxMSssIEVkZ2UgMTUgLSAxOCtcblx0XHQvLyBJRS9FZGdlIG1pc3JlcG9ydCBgZ2V0Q29tcHV0ZWRTdHlsZWAgb2YgdGFibGUgcm93cyB3aXRoIHdpZHRoL2hlaWdodFxuXHRcdC8vIHNldCBpbiBDU1Mgd2hpbGUgYG9mZnNldCpgIHByb3BlcnRpZXMgcmVwb3J0IGNvcnJlY3QgdmFsdWVzLlxuXHRcdC8vIEludGVyZXN0aW5nbHksIGluIHNvbWUgY2FzZXMgSUUgOSBkb2Vzbid0IHN1ZmZlciBmcm9tIHRoaXMgaXNzdWUuXG5cdFx0IXN1cHBvcnQucmVsaWFibGVUckRpbWVuc2lvbnMoKSAmJiBub2RlTmFtZSggZWxlbSwgXCJ0clwiICkgfHxcblxuXHRcdC8vIEZhbGwgYmFjayB0byBvZmZzZXRXaWR0aC9vZmZzZXRIZWlnaHQgd2hlbiB2YWx1ZSBpcyBcImF1dG9cIlxuXHRcdC8vIFRoaXMgaGFwcGVucyBmb3IgaW5saW5lIGVsZW1lbnRzIHdpdGggbm8gZXhwbGljaXQgc2V0dGluZyAoZ2gtMzU3MSlcblx0XHR2YWwgPT09IFwiYXV0b1wiIHx8XG5cblx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4xIC0gNC4zIG9ubHlcblx0XHQvLyBBbHNvIHVzZSBvZmZzZXRXaWR0aC9vZmZzZXRIZWlnaHQgZm9yIG1pc3JlcG9ydGVkIGlubGluZSBkaW1lbnNpb25zIChnaC0zNjAyKVxuXHRcdCFwYXJzZUZsb2F0KCB2YWwgKSAmJiBqUXVlcnkuY3NzKCBlbGVtLCBcImRpc3BsYXlcIiwgZmFsc2UsIHN0eWxlcyApID09PSBcImlubGluZVwiICkgJiZcblxuXHRcdC8vIE1ha2Ugc3VyZSB0aGUgZWxlbWVudCBpcyB2aXNpYmxlICYgY29ubmVjdGVkXG5cdFx0ZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCApIHtcblxuXHRcdGlzQm9yZGVyQm94ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3hTaXppbmdcIiwgZmFsc2UsIHN0eWxlcyApID09PSBcImJvcmRlci1ib3hcIjtcblxuXHRcdC8vIFdoZXJlIGF2YWlsYWJsZSwgb2Zmc2V0V2lkdGgvb2Zmc2V0SGVpZ2h0IGFwcHJveGltYXRlIGJvcmRlciBib3ggZGltZW5zaW9ucy5cblx0XHQvLyBXaGVyZSBub3QgYXZhaWxhYmxlIChlLmcuLCBTVkcpLCBhc3N1bWUgdW5yZWxpYWJsZSBib3gtc2l6aW5nIGFuZCBpbnRlcnByZXQgdGhlXG5cdFx0Ly8gcmV0cmlldmVkIHZhbHVlIGFzIGEgY29udGVudCBib3ggZGltZW5zaW9uLlxuXHRcdHZhbHVlSXNCb3JkZXJCb3ggPSBvZmZzZXRQcm9wIGluIGVsZW07XG5cdFx0aWYgKCB2YWx1ZUlzQm9yZGVyQm94ICkge1xuXHRcdFx0dmFsID0gZWxlbVsgb2Zmc2V0UHJvcCBdO1xuXHRcdH1cblx0fVxuXG5cdC8vIE5vcm1hbGl6ZSBcIlwiIGFuZCBhdXRvXG5cdHZhbCA9IHBhcnNlRmxvYXQoIHZhbCApIHx8IDA7XG5cblx0Ly8gQWRqdXN0IGZvciB0aGUgZWxlbWVudCdzIGJveCBtb2RlbFxuXHRyZXR1cm4gKCB2YWwgK1xuXHRcdGJveE1vZGVsQWRqdXN0bWVudChcblx0XHRcdGVsZW0sXG5cdFx0XHRkaW1lbnNpb24sXG5cdFx0XHRleHRyYSB8fCAoIGlzQm9yZGVyQm94ID8gXCJib3JkZXJcIiA6IFwiY29udGVudFwiICksXG5cdFx0XHR2YWx1ZUlzQm9yZGVyQm94LFxuXHRcdFx0c3R5bGVzLFxuXG5cdFx0XHQvLyBQcm92aWRlIHRoZSBjdXJyZW50IGNvbXB1dGVkIHNpemUgdG8gcmVxdWVzdCBzY3JvbGwgZ3V0dGVyIGNhbGN1bGF0aW9uIChnaC0zNTg5KVxuXHRcdFx0dmFsXG5cdFx0KVxuXHQpICsgXCJweFwiO1xufVxuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cblx0Ly8gQWRkIGluIHN0eWxlIHByb3BlcnR5IGhvb2tzIGZvciBvdmVycmlkaW5nIHRoZSBkZWZhdWx0XG5cdC8vIGJlaGF2aW9yIG9mIGdldHRpbmcgYW5kIHNldHRpbmcgYSBzdHlsZSBwcm9wZXJ0eVxuXHRjc3NIb29rczoge1xuXHRcdG9wYWNpdHk6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkge1xuXHRcdFx0XHRpZiAoIGNvbXB1dGVkICkge1xuXG5cdFx0XHRcdFx0Ly8gV2Ugc2hvdWxkIGFsd2F5cyBnZXQgYSBudW1iZXIgYmFjayBmcm9tIG9wYWNpdHlcblx0XHRcdFx0XHR2YXIgcmV0ID0gY3VyQ1NTKCBlbGVtLCBcIm9wYWNpdHlcIiApO1xuXHRcdFx0XHRcdHJldHVybiByZXQgPT09IFwiXCIgPyBcIjFcIiA6IHJldDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHQvLyBEb24ndCBhdXRvbWF0aWNhbGx5IGFkZCBcInB4XCIgdG8gdGhlc2UgcG9zc2libHktdW5pdGxlc3MgcHJvcGVydGllc1xuXHRjc3NOdW1iZXI6IHtcblx0XHRcImFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50XCI6IHRydWUsXG5cdFx0XCJjb2x1bW5Db3VudFwiOiB0cnVlLFxuXHRcdFwiZmlsbE9wYWNpdHlcIjogdHJ1ZSxcblx0XHRcImZsZXhHcm93XCI6IHRydWUsXG5cdFx0XCJmbGV4U2hyaW5rXCI6IHRydWUsXG5cdFx0XCJmb250V2VpZ2h0XCI6IHRydWUsXG5cdFx0XCJncmlkQXJlYVwiOiB0cnVlLFxuXHRcdFwiZ3JpZENvbHVtblwiOiB0cnVlLFxuXHRcdFwiZ3JpZENvbHVtbkVuZFwiOiB0cnVlLFxuXHRcdFwiZ3JpZENvbHVtblN0YXJ0XCI6IHRydWUsXG5cdFx0XCJncmlkUm93XCI6IHRydWUsXG5cdFx0XCJncmlkUm93RW5kXCI6IHRydWUsXG5cdFx0XCJncmlkUm93U3RhcnRcIjogdHJ1ZSxcblx0XHRcImxpbmVIZWlnaHRcIjogdHJ1ZSxcblx0XHRcIm9wYWNpdHlcIjogdHJ1ZSxcblx0XHRcIm9yZGVyXCI6IHRydWUsXG5cdFx0XCJvcnBoYW5zXCI6IHRydWUsXG5cdFx0XCJ3aWRvd3NcIjogdHJ1ZSxcblx0XHRcInpJbmRleFwiOiB0cnVlLFxuXHRcdFwiem9vbVwiOiB0cnVlXG5cdH0sXG5cblx0Ly8gQWRkIGluIHByb3BlcnRpZXMgd2hvc2UgbmFtZXMgeW91IHdpc2ggdG8gZml4IGJlZm9yZVxuXHQvLyBzZXR0aW5nIG9yIGdldHRpbmcgdGhlIHZhbHVlXG5cdGNzc1Byb3BzOiB7fSxcblxuXHQvLyBHZXQgYW5kIHNldCB0aGUgc3R5bGUgcHJvcGVydHkgb24gYSBET00gTm9kZVxuXHRzdHlsZTogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlLCBleHRyYSApIHtcblxuXHRcdC8vIERvbid0IHNldCBzdHlsZXMgb24gdGV4dCBhbmQgY29tbWVudCBub2Rlc1xuXHRcdGlmICggIWVsZW0gfHwgZWxlbS5ub2RlVHlwZSA9PT0gMyB8fCBlbGVtLm5vZGVUeXBlID09PSA4IHx8ICFlbGVtLnN0eWxlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZVxuXHRcdHZhciByZXQsIHR5cGUsIGhvb2tzLFxuXHRcdFx0b3JpZ05hbWUgPSBjYW1lbENhc2UoIG5hbWUgKSxcblx0XHRcdGlzQ3VzdG9tUHJvcCA9IHJjdXN0b21Qcm9wLnRlc3QoIG5hbWUgKSxcblx0XHRcdHN0eWxlID0gZWxlbS5zdHlsZTtcblxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZS4gV2UgZG9uJ3Rcblx0XHQvLyB3YW50IHRvIHF1ZXJ5IHRoZSB2YWx1ZSBpZiBpdCBpcyBhIENTUyBjdXN0b20gcHJvcGVydHlcblx0XHQvLyBzaW5jZSB0aGV5IGFyZSB1c2VyLWRlZmluZWQuXG5cdFx0aWYgKCAhaXNDdXN0b21Qcm9wICkge1xuXHRcdFx0bmFtZSA9IGZpbmFsUHJvcE5hbWUoIG9yaWdOYW1lICk7XG5cdFx0fVxuXG5cdFx0Ly8gR2V0cyBob29rIGZvciB0aGUgcHJlZml4ZWQgdmVyc2lvbiwgdGhlbiB1bnByZWZpeGVkIHZlcnNpb25cblx0XHRob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdIHx8IGpRdWVyeS5jc3NIb29rc1sgb3JpZ05hbWUgXTtcblxuXHRcdC8vIENoZWNrIGlmIHdlJ3JlIHNldHRpbmcgYSB2YWx1ZVxuXHRcdGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdHR5cGUgPSB0eXBlb2YgdmFsdWU7XG5cblx0XHRcdC8vIENvbnZlcnQgXCIrPVwiIG9yIFwiLT1cIiB0byByZWxhdGl2ZSBudW1iZXJzICh0cmFjLTczNDUpXG5cdFx0XHRpZiAoIHR5cGUgPT09IFwic3RyaW5nXCIgJiYgKCByZXQgPSByY3NzTnVtLmV4ZWMoIHZhbHVlICkgKSAmJiByZXRbIDEgXSApIHtcblx0XHRcdFx0dmFsdWUgPSBhZGp1c3RDU1MoIGVsZW0sIG5hbWUsIHJldCApO1xuXG5cdFx0XHRcdC8vIEZpeGVzIGJ1ZyB0cmFjLTkyMzdcblx0XHRcdFx0dHlwZSA9IFwibnVtYmVyXCI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE1ha2Ugc3VyZSB0aGF0IG51bGwgYW5kIE5hTiB2YWx1ZXMgYXJlbid0IHNldCAodHJhYy03MTE2KVxuXHRcdFx0aWYgKCB2YWx1ZSA9PSBudWxsIHx8IHZhbHVlICE9PSB2YWx1ZSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiBhIG51bWJlciB3YXMgcGFzc2VkIGluLCBhZGQgdGhlIHVuaXQgKGV4Y2VwdCBmb3IgY2VydGFpbiBDU1MgcHJvcGVydGllcylcblx0XHRcdC8vIFRoZSBpc0N1c3RvbVByb3AgY2hlY2sgY2FuIGJlIHJlbW92ZWQgaW4galF1ZXJ5IDQuMCB3aGVuIHdlIG9ubHkgYXV0by1hcHBlbmRcblx0XHRcdC8vIFwicHhcIiB0byBhIGZldyBoYXJkY29kZWQgdmFsdWVzLlxuXHRcdFx0aWYgKCB0eXBlID09PSBcIm51bWJlclwiICYmICFpc0N1c3RvbVByb3AgKSB7XG5cdFx0XHRcdHZhbHVlICs9IHJldCAmJiByZXRbIDMgXSB8fCAoIGpRdWVyeS5jc3NOdW1iZXJbIG9yaWdOYW1lIF0gPyBcIlwiIDogXCJweFwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIGJhY2tncm91bmQtKiBwcm9wcyBhZmZlY3Qgb3JpZ2luYWwgY2xvbmUncyB2YWx1ZXNcblx0XHRcdGlmICggIXN1cHBvcnQuY2xlYXJDbG9uZVN0eWxlICYmIHZhbHVlID09PSBcIlwiICYmIG5hbWUuaW5kZXhPZiggXCJiYWNrZ3JvdW5kXCIgKSA9PT0gMCApIHtcblx0XHRcdFx0c3R5bGVbIG5hbWUgXSA9IFwiaW5oZXJpdFwiO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiBhIGhvb2sgd2FzIHByb3ZpZGVkLCB1c2UgdGhhdCB2YWx1ZSwgb3RoZXJ3aXNlIGp1c3Qgc2V0IHRoZSBzcGVjaWZpZWQgdmFsdWVcblx0XHRcdGlmICggIWhvb2tzIHx8ICEoIFwic2V0XCIgaW4gaG9va3MgKSB8fFxuXHRcdFx0XHQoIHZhbHVlID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgZXh0cmEgKSApICE9PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdFx0aWYgKCBpc0N1c3RvbVByb3AgKSB7XG5cdFx0XHRcdFx0c3R5bGUuc2V0UHJvcGVydHkoIG5hbWUsIHZhbHVlICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c3R5bGVbIG5hbWUgXSA9IHZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyBJZiBhIGhvb2sgd2FzIHByb3ZpZGVkIGdldCB0aGUgbm9uLWNvbXB1dGVkIHZhbHVlIGZyb20gdGhlcmVcblx0XHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyAmJlxuXHRcdFx0XHQoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgZmFsc2UsIGV4dHJhICkgKSAhPT0gdW5kZWZpbmVkICkge1xuXG5cdFx0XHRcdHJldHVybiByZXQ7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE90aGVyd2lzZSBqdXN0IGdldCB0aGUgdmFsdWUgZnJvbSB0aGUgc3R5bGUgb2JqZWN0XG5cdFx0XHRyZXR1cm4gc3R5bGVbIG5hbWUgXTtcblx0XHR9XG5cdH0sXG5cblx0Y3NzOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZXh0cmEsIHN0eWxlcyApIHtcblx0XHR2YXIgdmFsLCBudW0sIGhvb2tzLFxuXHRcdFx0b3JpZ05hbWUgPSBjYW1lbENhc2UoIG5hbWUgKSxcblx0XHRcdGlzQ3VzdG9tUHJvcCA9IHJjdXN0b21Qcm9wLnRlc3QoIG5hbWUgKTtcblxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZS4gV2UgZG9uJ3Rcblx0XHQvLyB3YW50IHRvIG1vZGlmeSB0aGUgdmFsdWUgaWYgaXQgaXMgYSBDU1MgY3VzdG9tIHByb3BlcnR5XG5cdFx0Ly8gc2luY2UgdGhleSBhcmUgdXNlci1kZWZpbmVkLlxuXHRcdGlmICggIWlzQ3VzdG9tUHJvcCApIHtcblx0XHRcdG5hbWUgPSBmaW5hbFByb3BOYW1lKCBvcmlnTmFtZSApO1xuXHRcdH1cblxuXHRcdC8vIFRyeSBwcmVmaXhlZCBuYW1lIGZvbGxvd2VkIGJ5IHRoZSB1bnByZWZpeGVkIG5hbWVcblx0XHRob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdIHx8IGpRdWVyeS5jc3NIb29rc1sgb3JpZ05hbWUgXTtcblxuXHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQgZ2V0IHRoZSBjb21wdXRlZCB2YWx1ZSBmcm9tIHRoZXJlXG5cdFx0aWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICkge1xuXHRcdFx0dmFsID0gaG9va3MuZ2V0KCBlbGVtLCB0cnVlLCBleHRyYSApO1xuXHRcdH1cblxuXHRcdC8vIE90aGVyd2lzZSwgaWYgYSB3YXkgdG8gZ2V0IHRoZSBjb21wdXRlZCB2YWx1ZSBleGlzdHMsIHVzZSB0aGF0XG5cdFx0aWYgKCB2YWwgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdHZhbCA9IGN1ckNTUyggZWxlbSwgbmFtZSwgc3R5bGVzICk7XG5cdFx0fVxuXG5cdFx0Ly8gQ29udmVydCBcIm5vcm1hbFwiIHRvIGNvbXB1dGVkIHZhbHVlXG5cdFx0aWYgKCB2YWwgPT09IFwibm9ybWFsXCIgJiYgbmFtZSBpbiBjc3NOb3JtYWxUcmFuc2Zvcm0gKSB7XG5cdFx0XHR2YWwgPSBjc3NOb3JtYWxUcmFuc2Zvcm1bIG5hbWUgXTtcblx0XHR9XG5cblx0XHQvLyBNYWtlIG51bWVyaWMgaWYgZm9yY2VkIG9yIGEgcXVhbGlmaWVyIHdhcyBwcm92aWRlZCBhbmQgdmFsIGxvb2tzIG51bWVyaWNcblx0XHRpZiAoIGV4dHJhID09PSBcIlwiIHx8IGV4dHJhICkge1xuXHRcdFx0bnVtID0gcGFyc2VGbG9hdCggdmFsICk7XG5cdFx0XHRyZXR1cm4gZXh0cmEgPT09IHRydWUgfHwgaXNGaW5pdGUoIG51bSApID8gbnVtIHx8IDAgOiB2YWw7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHZhbDtcblx0fVxufSApO1xuXG5qUXVlcnkuZWFjaCggWyBcImhlaWdodFwiLCBcIndpZHRoXCIgXSwgZnVuY3Rpb24oIF9pLCBkaW1lbnNpb24gKSB7XG5cdGpRdWVyeS5jc3NIb29rc1sgZGltZW5zaW9uIF0gPSB7XG5cdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQsIGV4dHJhICkge1xuXHRcdFx0aWYgKCBjb21wdXRlZCApIHtcblxuXHRcdFx0XHQvLyBDZXJ0YWluIGVsZW1lbnRzIGNhbiBoYXZlIGRpbWVuc2lvbiBpbmZvIGlmIHdlIGludmlzaWJseSBzaG93IHRoZW1cblx0XHRcdFx0Ly8gYnV0IGl0IG11c3QgaGF2ZSBhIGN1cnJlbnQgZGlzcGxheSBzdHlsZSB0aGF0IHdvdWxkIGJlbmVmaXRcblx0XHRcdFx0cmV0dXJuIHJkaXNwbGF5c3dhcC50ZXN0KCBqUXVlcnkuY3NzKCBlbGVtLCBcImRpc3BsYXlcIiApICkgJiZcblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFNhZmFyaSA4K1xuXHRcdFx0XHRcdC8vIFRhYmxlIGNvbHVtbnMgaW4gU2FmYXJpIGhhdmUgbm9uLXplcm8gb2Zmc2V0V2lkdGggJiB6ZXJvXG5cdFx0XHRcdFx0Ly8gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggdW5sZXNzIGRpc3BsYXkgaXMgY2hhbmdlZC5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0XHRcdFx0XHQvLyBSdW5uaW5nIGdldEJvdW5kaW5nQ2xpZW50UmVjdCBvbiBhIGRpc2Nvbm5lY3RlZCBub2RlXG5cdFx0XHRcdFx0Ly8gaW4gSUUgdGhyb3dzIGFuIGVycm9yLlxuXHRcdFx0XHRcdCggIWVsZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggfHwgIWVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggKSA/XG5cdFx0XHRcdFx0c3dhcCggZWxlbSwgY3NzU2hvdywgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZ2V0V2lkdGhPckhlaWdodCggZWxlbSwgZGltZW5zaW9uLCBleHRyYSApO1xuXHRcdFx0XHRcdH0gKSA6XG5cdFx0XHRcdFx0Z2V0V2lkdGhPckhlaWdodCggZWxlbSwgZGltZW5zaW9uLCBleHRyYSApO1xuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSwgZXh0cmEgKSB7XG5cdFx0XHR2YXIgbWF0Y2hlcyxcblx0XHRcdFx0c3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICksXG5cblx0XHRcdFx0Ly8gT25seSByZWFkIHN0eWxlcy5wb3NpdGlvbiBpZiB0aGUgdGVzdCBoYXMgYSBjaGFuY2UgdG8gZmFpbFxuXHRcdFx0XHQvLyB0byBhdm9pZCBmb3JjaW5nIGEgcmVmbG93LlxuXHRcdFx0XHRzY3JvbGxib3hTaXplQnVnZ3kgPSAhc3VwcG9ydC5zY3JvbGxib3hTaXplKCkgJiZcblx0XHRcdFx0XHRzdHlsZXMucG9zaXRpb24gPT09IFwiYWJzb2x1dGVcIixcblxuXHRcdFx0XHQvLyBUbyBhdm9pZCBmb3JjaW5nIGEgcmVmbG93LCBvbmx5IGZldGNoIGJveFNpemluZyBpZiB3ZSBuZWVkIGl0IChnaC0zOTkxKVxuXHRcdFx0XHRib3hTaXppbmdOZWVkZWQgPSBzY3JvbGxib3hTaXplQnVnZ3kgfHwgZXh0cmEsXG5cdFx0XHRcdGlzQm9yZGVyQm94ID0gYm94U2l6aW5nTmVlZGVkICYmXG5cdFx0XHRcdFx0alF1ZXJ5LmNzcyggZWxlbSwgXCJib3hTaXppbmdcIiwgZmFsc2UsIHN0eWxlcyApID09PSBcImJvcmRlci1ib3hcIixcblx0XHRcdFx0c3VidHJhY3QgPSBleHRyYSA/XG5cdFx0XHRcdFx0Ym94TW9kZWxBZGp1c3RtZW50KFxuXHRcdFx0XHRcdFx0ZWxlbSxcblx0XHRcdFx0XHRcdGRpbWVuc2lvbixcblx0XHRcdFx0XHRcdGV4dHJhLFxuXHRcdFx0XHRcdFx0aXNCb3JkZXJCb3gsXG5cdFx0XHRcdFx0XHRzdHlsZXNcblx0XHRcdFx0XHQpIDpcblx0XHRcdFx0XHQwO1xuXG5cdFx0XHQvLyBBY2NvdW50IGZvciB1bnJlbGlhYmxlIGJvcmRlci1ib3ggZGltZW5zaW9ucyBieSBjb21wYXJpbmcgb2Zmc2V0KiB0byBjb21wdXRlZCBhbmRcblx0XHRcdC8vIGZha2luZyBhIGNvbnRlbnQtYm94IHRvIGdldCBib3JkZXIgYW5kIHBhZGRpbmcgKGdoLTM2OTkpXG5cdFx0XHRpZiAoIGlzQm9yZGVyQm94ICYmIHNjcm9sbGJveFNpemVCdWdneSApIHtcblx0XHRcdFx0c3VidHJhY3QgLT0gTWF0aC5jZWlsKFxuXHRcdFx0XHRcdGVsZW1bIFwib2Zmc2V0XCIgKyBkaW1lbnNpb25bIDAgXS50b1VwcGVyQ2FzZSgpICsgZGltZW5zaW9uLnNsaWNlKCAxICkgXSAtXG5cdFx0XHRcdFx0cGFyc2VGbG9hdCggc3R5bGVzWyBkaW1lbnNpb24gXSApIC1cblx0XHRcdFx0XHRib3hNb2RlbEFkanVzdG1lbnQoIGVsZW0sIGRpbWVuc2lvbiwgXCJib3JkZXJcIiwgZmFsc2UsIHN0eWxlcyApIC1cblx0XHRcdFx0XHQwLjVcblx0XHRcdFx0KTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ29udmVydCB0byBwaXhlbHMgaWYgdmFsdWUgYWRqdXN0bWVudCBpcyBuZWVkZWRcblx0XHRcdGlmICggc3VidHJhY3QgJiYgKCBtYXRjaGVzID0gcmNzc051bS5leGVjKCB2YWx1ZSApICkgJiZcblx0XHRcdFx0KCBtYXRjaGVzWyAzIF0gfHwgXCJweFwiICkgIT09IFwicHhcIiApIHtcblxuXHRcdFx0XHRlbGVtLnN0eWxlWyBkaW1lbnNpb24gXSA9IHZhbHVlO1xuXHRcdFx0XHR2YWx1ZSA9IGpRdWVyeS5jc3MoIGVsZW0sIGRpbWVuc2lvbiApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gc2V0UG9zaXRpdmVOdW1iZXIoIGVsZW0sIHZhbHVlLCBzdWJ0cmFjdCApO1xuXHRcdH1cblx0fTtcbn0gKTtcblxualF1ZXJ5LmNzc0hvb2tzLm1hcmdpbkxlZnQgPSBhZGRHZXRIb29rSWYoIHN1cHBvcnQucmVsaWFibGVNYXJnaW5MZWZ0LFxuXHRmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XG5cdFx0aWYgKCBjb21wdXRlZCApIHtcblx0XHRcdHJldHVybiAoIHBhcnNlRmxvYXQoIGN1ckNTUyggZWxlbSwgXCJtYXJnaW5MZWZ0XCIgKSApIHx8XG5cdFx0XHRcdGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCAtXG5cdFx0XHRcdFx0c3dhcCggZWxlbSwgeyBtYXJnaW5MZWZ0OiAwIH0sIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcblx0XHRcdFx0XHR9IClcblx0XHRcdCkgKyBcInB4XCI7XG5cdFx0fVxuXHR9XG4pO1xuXG4vLyBUaGVzZSBob29rcyBhcmUgdXNlZCBieSBhbmltYXRlIHRvIGV4cGFuZCBwcm9wZXJ0aWVzXG5qUXVlcnkuZWFjaCgge1xuXHRtYXJnaW46IFwiXCIsXG5cdHBhZGRpbmc6IFwiXCIsXG5cdGJvcmRlcjogXCJXaWR0aFwiXG59LCBmdW5jdGlvbiggcHJlZml4LCBzdWZmaXggKSB7XG5cdGpRdWVyeS5jc3NIb29rc1sgcHJlZml4ICsgc3VmZml4IF0gPSB7XG5cdFx0ZXhwYW5kOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHR2YXIgaSA9IDAsXG5cdFx0XHRcdGV4cGFuZGVkID0ge30sXG5cblx0XHRcdFx0Ly8gQXNzdW1lcyBhIHNpbmdsZSBudW1iZXIgaWYgbm90IGEgc3RyaW5nXG5cdFx0XHRcdHBhcnRzID0gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gdmFsdWUuc3BsaXQoIFwiIFwiICkgOiBbIHZhbHVlIF07XG5cblx0XHRcdGZvciAoIDsgaSA8IDQ7IGkrKyApIHtcblx0XHRcdFx0ZXhwYW5kZWRbIHByZWZpeCArIGNzc0V4cGFuZFsgaSBdICsgc3VmZml4IF0gPVxuXHRcdFx0XHRcdHBhcnRzWyBpIF0gfHwgcGFydHNbIGkgLSAyIF0gfHwgcGFydHNbIDAgXTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGV4cGFuZGVkO1xuXHRcdH1cblx0fTtcblxuXHRpZiAoIHByZWZpeCAhPT0gXCJtYXJnaW5cIiApIHtcblx0XHRqUXVlcnkuY3NzSG9va3NbIHByZWZpeCArIHN1ZmZpeCBdLnNldCA9IHNldFBvc2l0aXZlTnVtYmVyO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0Y3NzOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkge1xuXHRcdFx0dmFyIHN0eWxlcywgbGVuLFxuXHRcdFx0XHRtYXAgPSB7fSxcblx0XHRcdFx0aSA9IDA7XG5cblx0XHRcdGlmICggQXJyYXkuaXNBcnJheSggbmFtZSApICkge1xuXHRcdFx0XHRzdHlsZXMgPSBnZXRTdHlsZXMoIGVsZW0gKTtcblx0XHRcdFx0bGVuID0gbmFtZS5sZW5ndGg7XG5cblx0XHRcdFx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRcdFx0bWFwWyBuYW1lWyBpIF0gXSA9IGpRdWVyeS5jc3MoIGVsZW0sIG5hbWVbIGkgXSwgZmFsc2UsIHN0eWxlcyApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIG1hcDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgP1xuXHRcdFx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIG5hbWUsIHZhbHVlICkgOlxuXHRcdFx0XHRqUXVlcnkuY3NzKCBlbGVtLCBuYW1lICk7XG5cdFx0fSwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7XG5cdH1cbn0gKTtcblxuXG5mdW5jdGlvbiBUd2VlbiggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNpbmcgKSB7XG5cdHJldHVybiBuZXcgVHdlZW4ucHJvdG90eXBlLmluaXQoIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nICk7XG59XG5qUXVlcnkuVHdlZW4gPSBUd2VlbjtcblxuVHdlZW4ucHJvdG90eXBlID0ge1xuXHRjb25zdHJ1Y3RvcjogVHdlZW4sXG5cdGluaXQ6IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZywgdW5pdCApIHtcblx0XHR0aGlzLmVsZW0gPSBlbGVtO1xuXHRcdHRoaXMucHJvcCA9IHByb3A7XG5cdFx0dGhpcy5lYXNpbmcgPSBlYXNpbmcgfHwgalF1ZXJ5LmVhc2luZy5fZGVmYXVsdDtcblx0XHR0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXHRcdHRoaXMuc3RhcnQgPSB0aGlzLm5vdyA9IHRoaXMuY3VyKCk7XG5cdFx0dGhpcy5lbmQgPSBlbmQ7XG5cdFx0dGhpcy51bml0ID0gdW5pdCB8fCAoIGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSA/IFwiXCIgOiBcInB4XCIgKTtcblx0fSxcblx0Y3VyOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgaG9va3MgPSBUd2Vlbi5wcm9wSG9va3NbIHRoaXMucHJvcCBdO1xuXG5cdFx0cmV0dXJuIGhvb2tzICYmIGhvb2tzLmdldCA/XG5cdFx0XHRob29rcy5nZXQoIHRoaXMgKSA6XG5cdFx0XHRUd2Vlbi5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KCB0aGlzICk7XG5cdH0sXG5cdHJ1bjogZnVuY3Rpb24oIHBlcmNlbnQgKSB7XG5cdFx0dmFyIGVhc2VkLFxuXHRcdFx0aG9va3MgPSBUd2Vlbi5wcm9wSG9va3NbIHRoaXMucHJvcCBdO1xuXG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuZHVyYXRpb24gKSB7XG5cdFx0XHR0aGlzLnBvcyA9IGVhc2VkID0galF1ZXJ5LmVhc2luZ1sgdGhpcy5lYXNpbmcgXShcblx0XHRcdFx0cGVyY2VudCwgdGhpcy5vcHRpb25zLmR1cmF0aW9uICogcGVyY2VudCwgMCwgMSwgdGhpcy5vcHRpb25zLmR1cmF0aW9uXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnBvcyA9IGVhc2VkID0gcGVyY2VudDtcblx0XHR9XG5cdFx0dGhpcy5ub3cgPSAoIHRoaXMuZW5kIC0gdGhpcy5zdGFydCApICogZWFzZWQgKyB0aGlzLnN0YXJ0O1xuXG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuc3RlcCApIHtcblx0XHRcdHRoaXMub3B0aW9ucy5zdGVwLmNhbGwoIHRoaXMuZWxlbSwgdGhpcy5ub3csIHRoaXMgKTtcblx0XHR9XG5cblx0XHRpZiAoIGhvb2tzICYmIGhvb2tzLnNldCApIHtcblx0XHRcdGhvb2tzLnNldCggdGhpcyApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRUd2Vlbi5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KCB0aGlzICk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59O1xuXG5Ud2Vlbi5wcm90b3R5cGUuaW5pdC5wcm90b3R5cGUgPSBUd2Vlbi5wcm90b3R5cGU7XG5cblR3ZWVuLnByb3BIb29rcyA9IHtcblx0X2RlZmF1bHQ6IHtcblx0XHRnZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHtcblx0XHRcdHZhciByZXN1bHQ7XG5cblx0XHRcdC8vIFVzZSBhIHByb3BlcnR5IG9uIHRoZSBlbGVtZW50IGRpcmVjdGx5IHdoZW4gaXQgaXMgbm90IGEgRE9NIGVsZW1lbnQsXG5cdFx0XHQvLyBvciB3aGVuIHRoZXJlIGlzIG5vIG1hdGNoaW5nIHN0eWxlIHByb3BlcnR5IHRoYXQgZXhpc3RzLlxuXHRcdFx0aWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBlICE9PSAxIHx8XG5cdFx0XHRcdHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSAhPSBudWxsICYmIHR3ZWVuLmVsZW0uc3R5bGVbIHR3ZWVuLnByb3AgXSA9PSBudWxsICkge1xuXHRcdFx0XHRyZXR1cm4gdHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBQYXNzaW5nIGFuIGVtcHR5IHN0cmluZyBhcyBhIDNyZCBwYXJhbWV0ZXIgdG8gLmNzcyB3aWxsIGF1dG9tYXRpY2FsbHlcblx0XHRcdC8vIGF0dGVtcHQgYSBwYXJzZUZsb2F0IGFuZCBmYWxsYmFjayB0byBhIHN0cmluZyBpZiB0aGUgcGFyc2UgZmFpbHMuXG5cdFx0XHQvLyBTaW1wbGUgdmFsdWVzIHN1Y2ggYXMgXCIxMHB4XCIgYXJlIHBhcnNlZCB0byBGbG9hdDtcblx0XHRcdC8vIGNvbXBsZXggdmFsdWVzIHN1Y2ggYXMgXCJyb3RhdGUoMXJhZClcIiBhcmUgcmV0dXJuZWQgYXMtaXMuXG5cdFx0XHRyZXN1bHQgPSBqUXVlcnkuY3NzKCB0d2Vlbi5lbGVtLCB0d2Vlbi5wcm9wLCBcIlwiICk7XG5cblx0XHRcdC8vIEVtcHR5IHN0cmluZ3MsIG51bGwsIHVuZGVmaW5lZCBhbmQgXCJhdXRvXCIgYXJlIGNvbnZlcnRlZCB0byAwLlxuXHRcdFx0cmV0dXJuICFyZXN1bHQgfHwgcmVzdWx0ID09PSBcImF1dG9cIiA/IDAgOiByZXN1bHQ7XG5cdFx0fSxcblx0XHRzZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHtcblxuXHRcdFx0Ly8gVXNlIHN0ZXAgaG9vayBmb3IgYmFjayBjb21wYXQuXG5cdFx0XHQvLyBVc2UgY3NzSG9vayBpZiBpdHMgdGhlcmUuXG5cdFx0XHQvLyBVc2UgLnN0eWxlIGlmIGF2YWlsYWJsZSBhbmQgdXNlIHBsYWluIHByb3BlcnRpZXMgd2hlcmUgYXZhaWxhYmxlLlxuXHRcdFx0aWYgKCBqUXVlcnkuZnguc3RlcFsgdHdlZW4ucHJvcCBdICkge1xuXHRcdFx0XHRqUXVlcnkuZnguc3RlcFsgdHdlZW4ucHJvcCBdKCB0d2VlbiApO1xuXHRcdFx0fSBlbHNlIGlmICggdHdlZW4uZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAoXG5cdFx0XHRcdGpRdWVyeS5jc3NIb29rc1sgdHdlZW4ucHJvcCBdIHx8XG5cdFx0XHRcdFx0dHdlZW4uZWxlbS5zdHlsZVsgZmluYWxQcm9wTmFtZSggdHdlZW4ucHJvcCApIF0gIT0gbnVsbCApICkge1xuXHRcdFx0XHRqUXVlcnkuc3R5bGUoIHR3ZWVuLmVsZW0sIHR3ZWVuLnByb3AsIHR3ZWVuLm5vdyArIHR3ZWVuLnVuaXQgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSA9IHR3ZWVuLm5vdztcblx0XHRcdH1cblx0XHR9XG5cdH1cbn07XG5cbi8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG4vLyBQYW5pYyBiYXNlZCBhcHByb2FjaCB0byBzZXR0aW5nIHRoaW5ncyBvbiBkaXNjb25uZWN0ZWQgbm9kZXNcblR3ZWVuLnByb3BIb29rcy5zY3JvbGxUb3AgPSBUd2Vlbi5wcm9wSG9va3Muc2Nyb2xsTGVmdCA9IHtcblx0c2V0OiBmdW5jdGlvbiggdHdlZW4gKSB7XG5cdFx0aWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBlICYmIHR3ZWVuLmVsZW0ucGFyZW50Tm9kZSApIHtcblx0XHRcdHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSA9IHR3ZWVuLm5vdztcblx0XHR9XG5cdH1cbn07XG5cbmpRdWVyeS5lYXNpbmcgPSB7XG5cdGxpbmVhcjogZnVuY3Rpb24oIHAgKSB7XG5cdFx0cmV0dXJuIHA7XG5cdH0sXG5cdHN3aW5nOiBmdW5jdGlvbiggcCApIHtcblx0XHRyZXR1cm4gMC41IC0gTWF0aC5jb3MoIHAgKiBNYXRoLlBJICkgLyAyO1xuXHR9LFxuXHRfZGVmYXVsdDogXCJzd2luZ1wiXG59O1xuXG5qUXVlcnkuZnggPSBUd2Vlbi5wcm90b3R5cGUuaW5pdDtcblxuLy8gQmFjayBjb21wYXQgPDEuOCBleHRlbnNpb24gcG9pbnRcbmpRdWVyeS5meC5zdGVwID0ge307XG5cblxuXG5cbnZhclxuXHRmeE5vdywgaW5Qcm9ncmVzcyxcblx0cmZ4dHlwZXMgPSAvXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8sXG5cdHJydW4gPSAvcXVldWVIb29rcyQvO1xuXG5mdW5jdGlvbiBzY2hlZHVsZSgpIHtcblx0aWYgKCBpblByb2dyZXNzICkge1xuXHRcdGlmICggZG9jdW1lbnQuaGlkZGVuID09PSBmYWxzZSAmJiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lICkge1xuXHRcdFx0d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSggc2NoZWR1bGUgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0d2luZG93LnNldFRpbWVvdXQoIHNjaGVkdWxlLCBqUXVlcnkuZnguaW50ZXJ2YWwgKTtcblx0XHR9XG5cblx0XHRqUXVlcnkuZngudGljaygpO1xuXHR9XG59XG5cbi8vIEFuaW1hdGlvbnMgY3JlYXRlZCBzeW5jaHJvbm91c2x5IHdpbGwgcnVuIHN5bmNocm9ub3VzbHlcbmZ1bmN0aW9uIGNyZWF0ZUZ4Tm93KCkge1xuXHR3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7XG5cdFx0ZnhOb3cgPSB1bmRlZmluZWQ7XG5cdH0gKTtcblx0cmV0dXJuICggZnhOb3cgPSBEYXRlLm5vdygpICk7XG59XG5cbi8vIEdlbmVyYXRlIHBhcmFtZXRlcnMgdG8gY3JlYXRlIGEgc3RhbmRhcmQgYW5pbWF0aW9uXG5mdW5jdGlvbiBnZW5GeCggdHlwZSwgaW5jbHVkZVdpZHRoICkge1xuXHR2YXIgd2hpY2gsXG5cdFx0aSA9IDAsXG5cdFx0YXR0cnMgPSB7IGhlaWdodDogdHlwZSB9O1xuXG5cdC8vIElmIHdlIGluY2x1ZGUgd2lkdGgsIHN0ZXAgdmFsdWUgaXMgMSB0byBkbyBhbGwgY3NzRXhwYW5kIHZhbHVlcyxcblx0Ly8gb3RoZXJ3aXNlIHN0ZXAgdmFsdWUgaXMgMiB0byBza2lwIG92ZXIgTGVmdCBhbmQgUmlnaHRcblx0aW5jbHVkZVdpZHRoID0gaW5jbHVkZVdpZHRoID8gMSA6IDA7XG5cdGZvciAoIDsgaSA8IDQ7IGkgKz0gMiAtIGluY2x1ZGVXaWR0aCApIHtcblx0XHR3aGljaCA9IGNzc0V4cGFuZFsgaSBdO1xuXHRcdGF0dHJzWyBcIm1hcmdpblwiICsgd2hpY2ggXSA9IGF0dHJzWyBcInBhZGRpbmdcIiArIHdoaWNoIF0gPSB0eXBlO1xuXHR9XG5cblx0aWYgKCBpbmNsdWRlV2lkdGggKSB7XG5cdFx0YXR0cnMub3BhY2l0eSA9IGF0dHJzLndpZHRoID0gdHlwZTtcblx0fVxuXG5cdHJldHVybiBhdHRycztcbn1cblxuZnVuY3Rpb24gY3JlYXRlVHdlZW4oIHZhbHVlLCBwcm9wLCBhbmltYXRpb24gKSB7XG5cdHZhciB0d2Vlbixcblx0XHRjb2xsZWN0aW9uID0gKCBBbmltYXRpb24udHdlZW5lcnNbIHByb3AgXSB8fCBbXSApLmNvbmNhdCggQW5pbWF0aW9uLnR3ZWVuZXJzWyBcIipcIiBdICksXG5cdFx0aW5kZXggPSAwLFxuXHRcdGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoO1xuXHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdGlmICggKCB0d2VlbiA9IGNvbGxlY3Rpb25bIGluZGV4IF0uY2FsbCggYW5pbWF0aW9uLCBwcm9wLCB2YWx1ZSApICkgKSB7XG5cblx0XHRcdC8vIFdlJ3JlIGRvbmUgd2l0aCB0aGlzIHByb3BlcnR5XG5cdFx0XHRyZXR1cm4gdHdlZW47XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRQcmVmaWx0ZXIoIGVsZW0sIHByb3BzLCBvcHRzICkge1xuXHR2YXIgcHJvcCwgdmFsdWUsIHRvZ2dsZSwgaG9va3MsIG9sZGZpcmUsIHByb3BUd2VlbiwgcmVzdG9yZURpc3BsYXksIGRpc3BsYXksXG5cdFx0aXNCb3ggPSBcIndpZHRoXCIgaW4gcHJvcHMgfHwgXCJoZWlnaHRcIiBpbiBwcm9wcyxcblx0XHRhbmltID0gdGhpcyxcblx0XHRvcmlnID0ge30sXG5cdFx0c3R5bGUgPSBlbGVtLnN0eWxlLFxuXHRcdGhpZGRlbiA9IGVsZW0ubm9kZVR5cGUgJiYgaXNIaWRkZW5XaXRoaW5UcmVlKCBlbGVtICksXG5cdFx0ZGF0YVNob3cgPSBkYXRhUHJpdi5nZXQoIGVsZW0sIFwiZnhzaG93XCIgKTtcblxuXHQvLyBRdWV1ZS1za2lwcGluZyBhbmltYXRpb25zIGhpamFjayB0aGUgZnggaG9va3Ncblx0aWYgKCAhb3B0cy5xdWV1ZSApIHtcblx0XHRob29rcyA9IGpRdWVyeS5fcXVldWVIb29rcyggZWxlbSwgXCJmeFwiICk7XG5cdFx0aWYgKCBob29rcy51bnF1ZXVlZCA9PSBudWxsICkge1xuXHRcdFx0aG9va3MudW5xdWV1ZWQgPSAwO1xuXHRcdFx0b2xkZmlyZSA9IGhvb2tzLmVtcHR5LmZpcmU7XG5cdFx0XHRob29rcy5lbXB0eS5maXJlID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggIWhvb2tzLnVucXVldWVkICkge1xuXHRcdFx0XHRcdG9sZGZpcmUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHR9XG5cdFx0aG9va3MudW5xdWV1ZWQrKztcblxuXHRcdGFuaW0uYWx3YXlzKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gRW5zdXJlIHRoZSBjb21wbGV0ZSBoYW5kbGVyIGlzIGNhbGxlZCBiZWZvcmUgdGhpcyBjb21wbGV0ZXNcblx0XHRcdGFuaW0uYWx3YXlzKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0aG9va3MudW5xdWV1ZWQtLTtcblx0XHRcdFx0aWYgKCAhalF1ZXJ5LnF1ZXVlKCBlbGVtLCBcImZ4XCIgKS5sZW5ndGggKSB7XG5cdFx0XHRcdFx0aG9va3MuZW1wdHkuZmlyZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gRGV0ZWN0IHNob3cvaGlkZSBhbmltYXRpb25zXG5cdGZvciAoIHByb3AgaW4gcHJvcHMgKSB7XG5cdFx0dmFsdWUgPSBwcm9wc1sgcHJvcCBdO1xuXHRcdGlmICggcmZ4dHlwZXMudGVzdCggdmFsdWUgKSApIHtcblx0XHRcdGRlbGV0ZSBwcm9wc1sgcHJvcCBdO1xuXHRcdFx0dG9nZ2xlID0gdG9nZ2xlIHx8IHZhbHVlID09PSBcInRvZ2dsZVwiO1xuXHRcdFx0aWYgKCB2YWx1ZSA9PT0gKCBoaWRkZW4gPyBcImhpZGVcIiA6IFwic2hvd1wiICkgKSB7XG5cblx0XHRcdFx0Ly8gUHJldGVuZCB0byBiZSBoaWRkZW4gaWYgdGhpcyBpcyBhIFwic2hvd1wiIGFuZFxuXHRcdFx0XHQvLyB0aGVyZSBpcyBzdGlsbCBkYXRhIGZyb20gYSBzdG9wcGVkIHNob3cvaGlkZVxuXHRcdFx0XHRpZiAoIHZhbHVlID09PSBcInNob3dcIiAmJiBkYXRhU2hvdyAmJiBkYXRhU2hvd1sgcHJvcCBdICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0aGlkZGVuID0gdHJ1ZTtcblxuXHRcdFx0XHQvLyBJZ25vcmUgYWxsIG90aGVyIG5vLW9wIHNob3cvaGlkZSBkYXRhXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdG9yaWdbIHByb3AgXSA9IGRhdGFTaG93ICYmIGRhdGFTaG93WyBwcm9wIF0gfHwgalF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9wICk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gQmFpbCBvdXQgaWYgdGhpcyBpcyBhIG5vLW9wIGxpa2UgLmhpZGUoKS5oaWRlKClcblx0cHJvcFR3ZWVuID0gIWpRdWVyeS5pc0VtcHR5T2JqZWN0KCBwcm9wcyApO1xuXHRpZiAoICFwcm9wVHdlZW4gJiYgalF1ZXJ5LmlzRW1wdHlPYmplY3QoIG9yaWcgKSApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyBSZXN0cmljdCBcIm92ZXJmbG93XCIgYW5kIFwiZGlzcGxheVwiIHN0eWxlcyBkdXJpbmcgYm94IGFuaW1hdGlvbnNcblx0aWYgKCBpc0JveCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTEsIEVkZ2UgMTIgLSAxNVxuXHRcdC8vIFJlY29yZCBhbGwgMyBvdmVyZmxvdyBhdHRyaWJ1dGVzIGJlY2F1c2UgSUUgZG9lcyBub3QgaW5mZXIgdGhlIHNob3J0aGFuZFxuXHRcdC8vIGZyb20gaWRlbnRpY2FsbHktdmFsdWVkIG92ZXJmbG93WCBhbmQgb3ZlcmZsb3dZIGFuZCBFZGdlIGp1c3QgbWlycm9yc1xuXHRcdC8vIHRoZSBvdmVyZmxvd1ggdmFsdWUgdGhlcmUuXG5cdFx0b3B0cy5vdmVyZmxvdyA9IFsgc3R5bGUub3ZlcmZsb3csIHN0eWxlLm92ZXJmbG93WCwgc3R5bGUub3ZlcmZsb3dZIF07XG5cblx0XHQvLyBJZGVudGlmeSBhIGRpc3BsYXkgdHlwZSwgcHJlZmVycmluZyBvbGQgc2hvdy9oaWRlIGRhdGEgb3ZlciB0aGUgQ1NTIGNhc2NhZGVcblx0XHRyZXN0b3JlRGlzcGxheSA9IGRhdGFTaG93ICYmIGRhdGFTaG93LmRpc3BsYXk7XG5cdFx0aWYgKCByZXN0b3JlRGlzcGxheSA9PSBudWxsICkge1xuXHRcdFx0cmVzdG9yZURpc3BsYXkgPSBkYXRhUHJpdi5nZXQoIGVsZW0sIFwiZGlzcGxheVwiICk7XG5cdFx0fVxuXHRcdGRpc3BsYXkgPSBqUXVlcnkuY3NzKCBlbGVtLCBcImRpc3BsYXlcIiApO1xuXHRcdGlmICggZGlzcGxheSA9PT0gXCJub25lXCIgKSB7XG5cdFx0XHRpZiAoIHJlc3RvcmVEaXNwbGF5ICkge1xuXHRcdFx0XHRkaXNwbGF5ID0gcmVzdG9yZURpc3BsYXk7XG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdC8vIEdldCBub25lbXB0eSB2YWx1ZShzKSBieSB0ZW1wb3JhcmlseSBmb3JjaW5nIHZpc2liaWxpdHlcblx0XHRcdFx0c2hvd0hpZGUoIFsgZWxlbSBdLCB0cnVlICk7XG5cdFx0XHRcdHJlc3RvcmVEaXNwbGF5ID0gZWxlbS5zdHlsZS5kaXNwbGF5IHx8IHJlc3RvcmVEaXNwbGF5O1xuXHRcdFx0XHRkaXNwbGF5ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKTtcblx0XHRcdFx0c2hvd0hpZGUoIFsgZWxlbSBdICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQW5pbWF0ZSBpbmxpbmUgZWxlbWVudHMgYXMgaW5saW5lLWJsb2NrXG5cdFx0aWYgKCBkaXNwbGF5ID09PSBcImlubGluZVwiIHx8IGRpc3BsYXkgPT09IFwiaW5saW5lLWJsb2NrXCIgJiYgcmVzdG9yZURpc3BsYXkgIT0gbnVsbCApIHtcblx0XHRcdGlmICggalF1ZXJ5LmNzcyggZWxlbSwgXCJmbG9hdFwiICkgPT09IFwibm9uZVwiICkge1xuXG5cdFx0XHRcdC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIGRpc3BsYXkgdmFsdWUgYXQgdGhlIGVuZCBvZiBwdXJlIHNob3cvaGlkZSBhbmltYXRpb25zXG5cdFx0XHRcdGlmICggIXByb3BUd2VlbiApIHtcblx0XHRcdFx0XHRhbmltLmRvbmUoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0c3R5bGUuZGlzcGxheSA9IHJlc3RvcmVEaXNwbGF5O1xuXHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRpZiAoIHJlc3RvcmVEaXNwbGF5ID09IG51bGwgKSB7XG5cdFx0XHRcdFx0XHRkaXNwbGF5ID0gc3R5bGUuZGlzcGxheTtcblx0XHRcdFx0XHRcdHJlc3RvcmVEaXNwbGF5ID0gZGlzcGxheSA9PT0gXCJub25lXCIgPyBcIlwiIDogZGlzcGxheTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0c3R5bGUuZGlzcGxheSA9IFwiaW5saW5lLWJsb2NrXCI7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aWYgKCBvcHRzLm92ZXJmbG93ICkge1xuXHRcdHN0eWxlLm92ZXJmbG93ID0gXCJoaWRkZW5cIjtcblx0XHRhbmltLmFsd2F5cyggZnVuY3Rpb24oKSB7XG5cdFx0XHRzdHlsZS5vdmVyZmxvdyA9IG9wdHMub3ZlcmZsb3dbIDAgXTtcblx0XHRcdHN0eWxlLm92ZXJmbG93WCA9IG9wdHMub3ZlcmZsb3dbIDEgXTtcblx0XHRcdHN0eWxlLm92ZXJmbG93WSA9IG9wdHMub3ZlcmZsb3dbIDIgXTtcblx0XHR9ICk7XG5cdH1cblxuXHQvLyBJbXBsZW1lbnQgc2hvdy9oaWRlIGFuaW1hdGlvbnNcblx0cHJvcFR3ZWVuID0gZmFsc2U7XG5cdGZvciAoIHByb3AgaW4gb3JpZyApIHtcblxuXHRcdC8vIEdlbmVyYWwgc2hvdy9oaWRlIHNldHVwIGZvciB0aGlzIGVsZW1lbnQgYW5pbWF0aW9uXG5cdFx0aWYgKCAhcHJvcFR3ZWVuICkge1xuXHRcdFx0aWYgKCBkYXRhU2hvdyApIHtcblx0XHRcdFx0aWYgKCBcImhpZGRlblwiIGluIGRhdGFTaG93ICkge1xuXHRcdFx0XHRcdGhpZGRlbiA9IGRhdGFTaG93LmhpZGRlbjtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZGF0YVNob3cgPSBkYXRhUHJpdi5hY2Nlc3MoIGVsZW0sIFwiZnhzaG93XCIsIHsgZGlzcGxheTogcmVzdG9yZURpc3BsYXkgfSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdG9yZSBoaWRkZW4vdmlzaWJsZSBmb3IgdG9nZ2xlIHNvIGAuc3RvcCgpLnRvZ2dsZSgpYCBcInJldmVyc2VzXCJcblx0XHRcdGlmICggdG9nZ2xlICkge1xuXHRcdFx0XHRkYXRhU2hvdy5oaWRkZW4gPSAhaGlkZGVuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTaG93IGVsZW1lbnRzIGJlZm9yZSBhbmltYXRpbmcgdGhlbVxuXHRcdFx0aWYgKCBoaWRkZW4gKSB7XG5cdFx0XHRcdHNob3dIaWRlKCBbIGVsZW0gXSwgdHJ1ZSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvKiBlc2xpbnQtZGlzYWJsZSBuby1sb29wLWZ1bmMgKi9cblxuXHRcdFx0YW5pbS5kb25lKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHQvKiBlc2xpbnQtZW5hYmxlIG5vLWxvb3AtZnVuYyAqL1xuXG5cdFx0XHRcdC8vIFRoZSBmaW5hbCBzdGVwIG9mIGEgXCJoaWRlXCIgYW5pbWF0aW9uIGlzIGFjdHVhbGx5IGhpZGluZyB0aGUgZWxlbWVudFxuXHRcdFx0XHRpZiAoICFoaWRkZW4gKSB7XG5cdFx0XHRcdFx0c2hvd0hpZGUoIFsgZWxlbSBdICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZGF0YVByaXYucmVtb3ZlKCBlbGVtLCBcImZ4c2hvd1wiICk7XG5cdFx0XHRcdGZvciAoIHByb3AgaW4gb3JpZyApIHtcblx0XHRcdFx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AsIG9yaWdbIHByb3AgXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0Ly8gUGVyLXByb3BlcnR5IHNldHVwXG5cdFx0cHJvcFR3ZWVuID0gY3JlYXRlVHdlZW4oIGhpZGRlbiA/IGRhdGFTaG93WyBwcm9wIF0gOiAwLCBwcm9wLCBhbmltICk7XG5cdFx0aWYgKCAhKCBwcm9wIGluIGRhdGFTaG93ICkgKSB7XG5cdFx0XHRkYXRhU2hvd1sgcHJvcCBdID0gcHJvcFR3ZWVuLnN0YXJ0O1xuXHRcdFx0aWYgKCBoaWRkZW4gKSB7XG5cdFx0XHRcdHByb3BUd2Vlbi5lbmQgPSBwcm9wVHdlZW4uc3RhcnQ7XG5cdFx0XHRcdHByb3BUd2Vlbi5zdGFydCA9IDA7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIHByb3BGaWx0ZXIoIHByb3BzLCBzcGVjaWFsRWFzaW5nICkge1xuXHR2YXIgaW5kZXgsIG5hbWUsIGVhc2luZywgdmFsdWUsIGhvb2tzO1xuXG5cdC8vIGNhbWVsQ2FzZSwgc3BlY2lhbEVhc2luZyBhbmQgZXhwYW5kIGNzc0hvb2sgcGFzc1xuXHRmb3IgKCBpbmRleCBpbiBwcm9wcyApIHtcblx0XHRuYW1lID0gY2FtZWxDYXNlKCBpbmRleCApO1xuXHRcdGVhc2luZyA9IHNwZWNpYWxFYXNpbmdbIG5hbWUgXTtcblx0XHR2YWx1ZSA9IHByb3BzWyBpbmRleCBdO1xuXHRcdGlmICggQXJyYXkuaXNBcnJheSggdmFsdWUgKSApIHtcblx0XHRcdGVhc2luZyA9IHZhbHVlWyAxIF07XG5cdFx0XHR2YWx1ZSA9IHByb3BzWyBpbmRleCBdID0gdmFsdWVbIDAgXTtcblx0XHR9XG5cblx0XHRpZiAoIGluZGV4ICE9PSBuYW1lICkge1xuXHRcdFx0cHJvcHNbIG5hbWUgXSA9IHZhbHVlO1xuXHRcdFx0ZGVsZXRlIHByb3BzWyBpbmRleCBdO1xuXHRcdH1cblxuXHRcdGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF07XG5cdFx0aWYgKCBob29rcyAmJiBcImV4cGFuZFwiIGluIGhvb2tzICkge1xuXHRcdFx0dmFsdWUgPSBob29rcy5leHBhbmQoIHZhbHVlICk7XG5cdFx0XHRkZWxldGUgcHJvcHNbIG5hbWUgXTtcblxuXHRcdFx0Ly8gTm90IHF1aXRlICQuZXh0ZW5kLCB0aGlzIHdvbid0IG92ZXJ3cml0ZSBleGlzdGluZyBrZXlzLlxuXHRcdFx0Ly8gUmV1c2luZyAnaW5kZXgnIGJlY2F1c2Ugd2UgaGF2ZSB0aGUgY29ycmVjdCBcIm5hbWVcIlxuXHRcdFx0Zm9yICggaW5kZXggaW4gdmFsdWUgKSB7XG5cdFx0XHRcdGlmICggISggaW5kZXggaW4gcHJvcHMgKSApIHtcblx0XHRcdFx0XHRwcm9wc1sgaW5kZXggXSA9IHZhbHVlWyBpbmRleCBdO1xuXHRcdFx0XHRcdHNwZWNpYWxFYXNpbmdbIGluZGV4IF0gPSBlYXNpbmc7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0c3BlY2lhbEVhc2luZ1sgbmFtZSBdID0gZWFzaW5nO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBBbmltYXRpb24oIGVsZW0sIHByb3BlcnRpZXMsIG9wdGlvbnMgKSB7XG5cdHZhciByZXN1bHQsXG5cdFx0c3RvcHBlZCxcblx0XHRpbmRleCA9IDAsXG5cdFx0bGVuZ3RoID0gQW5pbWF0aW9uLnByZWZpbHRlcnMubGVuZ3RoLFxuXHRcdGRlZmVycmVkID0galF1ZXJ5LkRlZmVycmVkKCkuYWx3YXlzKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gRG9uJ3QgbWF0Y2ggZWxlbSBpbiB0aGUgOmFuaW1hdGVkIHNlbGVjdG9yXG5cdFx0XHRkZWxldGUgdGljay5lbGVtO1xuXHRcdH0gKSxcblx0XHR0aWNrID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoIHN0b3BwZWQgKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHZhciBjdXJyZW50VGltZSA9IGZ4Tm93IHx8IGNyZWF0ZUZ4Tm93KCksXG5cdFx0XHRcdHJlbWFpbmluZyA9IE1hdGgubWF4KCAwLCBhbmltYXRpb24uc3RhcnRUaW1lICsgYW5pbWF0aW9uLmR1cmF0aW9uIC0gY3VycmVudFRpbWUgKSxcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDIuMyBvbmx5XG5cdFx0XHRcdC8vIEFyY2hhaWMgY3Jhc2ggYnVnIHdvbid0IGFsbG93IHVzIHRvIHVzZSBgMSAtICggMC41IHx8IDAgKWAgKHRyYWMtMTI0OTcpXG5cdFx0XHRcdHRlbXAgPSByZW1haW5pbmcgLyBhbmltYXRpb24uZHVyYXRpb24gfHwgMCxcblx0XHRcdFx0cGVyY2VudCA9IDEgLSB0ZW1wLFxuXHRcdFx0XHRpbmRleCA9IDAsXG5cdFx0XHRcdGxlbmd0aCA9IGFuaW1hdGlvbi50d2VlbnMubGVuZ3RoO1xuXG5cdFx0XHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdFx0XHRhbmltYXRpb24udHdlZW5zWyBpbmRleCBdLnJ1biggcGVyY2VudCApO1xuXHRcdFx0fVxuXG5cdFx0XHRkZWZlcnJlZC5ub3RpZnlXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgcGVyY2VudCwgcmVtYWluaW5nIF0gKTtcblxuXHRcdFx0Ly8gSWYgdGhlcmUncyBtb3JlIHRvIGRvLCB5aWVsZFxuXHRcdFx0aWYgKCBwZXJjZW50IDwgMSAmJiBsZW5ndGggKSB7XG5cdFx0XHRcdHJldHVybiByZW1haW5pbmc7XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIHRoaXMgd2FzIGFuIGVtcHR5IGFuaW1hdGlvbiwgc3ludGhlc2l6ZSBhIGZpbmFsIHByb2dyZXNzIG5vdGlmaWNhdGlvblxuXHRcdFx0aWYgKCAhbGVuZ3RoICkge1xuXHRcdFx0XHRkZWZlcnJlZC5ub3RpZnlXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgMSwgMCBdICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJlc29sdmUgdGhlIGFuaW1hdGlvbiBhbmQgcmVwb3J0IGl0cyBjb25jbHVzaW9uXG5cdFx0XHRkZWZlcnJlZC5yZXNvbHZlV2l0aCggZWxlbSwgWyBhbmltYXRpb24gXSApO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0sXG5cdFx0YW5pbWF0aW9uID0gZGVmZXJyZWQucHJvbWlzZSgge1xuXHRcdFx0ZWxlbTogZWxlbSxcblx0XHRcdHByb3BzOiBqUXVlcnkuZXh0ZW5kKCB7fSwgcHJvcGVydGllcyApLFxuXHRcdFx0b3B0czogalF1ZXJ5LmV4dGVuZCggdHJ1ZSwge1xuXHRcdFx0XHRzcGVjaWFsRWFzaW5nOiB7fSxcblx0XHRcdFx0ZWFzaW5nOiBqUXVlcnkuZWFzaW5nLl9kZWZhdWx0XG5cdFx0XHR9LCBvcHRpb25zICksXG5cdFx0XHRvcmlnaW5hbFByb3BlcnRpZXM6IHByb3BlcnRpZXMsXG5cdFx0XHRvcmlnaW5hbE9wdGlvbnM6IG9wdGlvbnMsXG5cdFx0XHRzdGFydFRpbWU6IGZ4Tm93IHx8IGNyZWF0ZUZ4Tm93KCksXG5cdFx0XHRkdXJhdGlvbjogb3B0aW9ucy5kdXJhdGlvbixcblx0XHRcdHR3ZWVuczogW10sXG5cdFx0XHRjcmVhdGVUd2VlbjogZnVuY3Rpb24oIHByb3AsIGVuZCApIHtcblx0XHRcdFx0dmFyIHR3ZWVuID0galF1ZXJ5LlR3ZWVuKCBlbGVtLCBhbmltYXRpb24ub3B0cywgcHJvcCwgZW5kLFxuXHRcdFx0XHRcdGFuaW1hdGlvbi5vcHRzLnNwZWNpYWxFYXNpbmdbIHByb3AgXSB8fCBhbmltYXRpb24ub3B0cy5lYXNpbmcgKTtcblx0XHRcdFx0YW5pbWF0aW9uLnR3ZWVucy5wdXNoKCB0d2VlbiApO1xuXHRcdFx0XHRyZXR1cm4gdHdlZW47XG5cdFx0XHR9LFxuXHRcdFx0c3RvcDogZnVuY3Rpb24oIGdvdG9FbmQgKSB7XG5cdFx0XHRcdHZhciBpbmRleCA9IDAsXG5cblx0XHRcdFx0XHQvLyBJZiB3ZSBhcmUgZ29pbmcgdG8gdGhlIGVuZCwgd2Ugd2FudCB0byBydW4gYWxsIHRoZSB0d2VlbnNcblx0XHRcdFx0XHQvLyBvdGhlcndpc2Ugd2Ugc2tpcCB0aGlzIHBhcnRcblx0XHRcdFx0XHRsZW5ndGggPSBnb3RvRW5kID8gYW5pbWF0aW9uLnR3ZWVucy5sZW5ndGggOiAwO1xuXHRcdFx0XHRpZiAoIHN0b3BwZWQgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH1cblx0XHRcdFx0c3RvcHBlZCA9IHRydWU7XG5cdFx0XHRcdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0XHRcdFx0YW5pbWF0aW9uLnR3ZWVuc1sgaW5kZXggXS5ydW4oIDEgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFJlc29sdmUgd2hlbiB3ZSBwbGF5ZWQgdGhlIGxhc3QgZnJhbWU7IG90aGVyd2lzZSwgcmVqZWN0XG5cdFx0XHRcdGlmICggZ290b0VuZCApIHtcblx0XHRcdFx0XHRkZWZlcnJlZC5ub3RpZnlXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgMSwgMCBdICk7XG5cdFx0XHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBnb3RvRW5kIF0gKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRkZWZlcnJlZC5yZWplY3RXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgZ290b0VuZCBdICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9XG5cdFx0fSApLFxuXHRcdHByb3BzID0gYW5pbWF0aW9uLnByb3BzO1xuXG5cdHByb3BGaWx0ZXIoIHByb3BzLCBhbmltYXRpb24ub3B0cy5zcGVjaWFsRWFzaW5nICk7XG5cblx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRyZXN1bHQgPSBBbmltYXRpb24ucHJlZmlsdGVyc1sgaW5kZXggXS5jYWxsKCBhbmltYXRpb24sIGVsZW0sIHByb3BzLCBhbmltYXRpb24ub3B0cyApO1xuXHRcdGlmICggcmVzdWx0ICkge1xuXHRcdFx0aWYgKCBpc0Z1bmN0aW9uKCByZXN1bHQuc3RvcCApICkge1xuXHRcdFx0XHRqUXVlcnkuX3F1ZXVlSG9va3MoIGFuaW1hdGlvbi5lbGVtLCBhbmltYXRpb24ub3B0cy5xdWV1ZSApLnN0b3AgPVxuXHRcdFx0XHRcdHJlc3VsdC5zdG9wLmJpbmQoIHJlc3VsdCApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9XG5cdH1cblxuXHRqUXVlcnkubWFwKCBwcm9wcywgY3JlYXRlVHdlZW4sIGFuaW1hdGlvbiApO1xuXG5cdGlmICggaXNGdW5jdGlvbiggYW5pbWF0aW9uLm9wdHMuc3RhcnQgKSApIHtcblx0XHRhbmltYXRpb24ub3B0cy5zdGFydC5jYWxsKCBlbGVtLCBhbmltYXRpb24gKTtcblx0fVxuXG5cdC8vIEF0dGFjaCBjYWxsYmFja3MgZnJvbSBvcHRpb25zXG5cdGFuaW1hdGlvblxuXHRcdC5wcm9ncmVzcyggYW5pbWF0aW9uLm9wdHMucHJvZ3Jlc3MgKVxuXHRcdC5kb25lKCBhbmltYXRpb24ub3B0cy5kb25lLCBhbmltYXRpb24ub3B0cy5jb21wbGV0ZSApXG5cdFx0LmZhaWwoIGFuaW1hdGlvbi5vcHRzLmZhaWwgKVxuXHRcdC5hbHdheXMoIGFuaW1hdGlvbi5vcHRzLmFsd2F5cyApO1xuXG5cdGpRdWVyeS5meC50aW1lcihcblx0XHRqUXVlcnkuZXh0ZW5kKCB0aWNrLCB7XG5cdFx0XHRlbGVtOiBlbGVtLFxuXHRcdFx0YW5pbTogYW5pbWF0aW9uLFxuXHRcdFx0cXVldWU6IGFuaW1hdGlvbi5vcHRzLnF1ZXVlXG5cdFx0fSApXG5cdCk7XG5cblx0cmV0dXJuIGFuaW1hdGlvbjtcbn1cblxualF1ZXJ5LkFuaW1hdGlvbiA9IGpRdWVyeS5leHRlbmQoIEFuaW1hdGlvbiwge1xuXG5cdHR3ZWVuZXJzOiB7XG5cdFx0XCIqXCI6IFsgZnVuY3Rpb24oIHByb3AsIHZhbHVlICkge1xuXHRcdFx0dmFyIHR3ZWVuID0gdGhpcy5jcmVhdGVUd2VlbiggcHJvcCwgdmFsdWUgKTtcblx0XHRcdGFkanVzdENTUyggdHdlZW4uZWxlbSwgcHJvcCwgcmNzc051bS5leGVjKCB2YWx1ZSApLCB0d2VlbiApO1xuXHRcdFx0cmV0dXJuIHR3ZWVuO1xuXHRcdH0gXVxuXHR9LFxuXG5cdHR3ZWVuZXI6IGZ1bmN0aW9uKCBwcm9wcywgY2FsbGJhY2sgKSB7XG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBwcm9wcyApICkge1xuXHRcdFx0Y2FsbGJhY2sgPSBwcm9wcztcblx0XHRcdHByb3BzID0gWyBcIipcIiBdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRwcm9wcyA9IHByb3BzLm1hdGNoKCBybm90aHRtbHdoaXRlICk7XG5cdFx0fVxuXG5cdFx0dmFyIHByb3AsXG5cdFx0XHRpbmRleCA9IDAsXG5cdFx0XHRsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cblx0XHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdFx0cHJvcCA9IHByb3BzWyBpbmRleCBdO1xuXHRcdFx0QW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0gPSBBbmltYXRpb24udHdlZW5lcnNbIHByb3AgXSB8fCBbXTtcblx0XHRcdEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdLnVuc2hpZnQoIGNhbGxiYWNrICk7XG5cdFx0fVxuXHR9LFxuXG5cdHByZWZpbHRlcnM6IFsgZGVmYXVsdFByZWZpbHRlciBdLFxuXG5cdHByZWZpbHRlcjogZnVuY3Rpb24oIGNhbGxiYWNrLCBwcmVwZW5kICkge1xuXHRcdGlmICggcHJlcGVuZCApIHtcblx0XHRcdEFuaW1hdGlvbi5wcmVmaWx0ZXJzLnVuc2hpZnQoIGNhbGxiYWNrICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdEFuaW1hdGlvbi5wcmVmaWx0ZXJzLnB1c2goIGNhbGxiYWNrICk7XG5cdFx0fVxuXHR9XG59ICk7XG5cbmpRdWVyeS5zcGVlZCA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBmbiApIHtcblx0dmFyIG9wdCA9IHNwZWVkICYmIHR5cGVvZiBzcGVlZCA9PT0gXCJvYmplY3RcIiA/IGpRdWVyeS5leHRlbmQoIHt9LCBzcGVlZCApIDoge1xuXHRcdGNvbXBsZXRlOiBmbiB8fCAhZm4gJiYgZWFzaW5nIHx8XG5cdFx0XHRpc0Z1bmN0aW9uKCBzcGVlZCApICYmIHNwZWVkLFxuXHRcdGR1cmF0aW9uOiBzcGVlZCxcblx0XHRlYXNpbmc6IGZuICYmIGVhc2luZyB8fCBlYXNpbmcgJiYgIWlzRnVuY3Rpb24oIGVhc2luZyApICYmIGVhc2luZ1xuXHR9O1xuXG5cdC8vIEdvIHRvIHRoZSBlbmQgc3RhdGUgaWYgZnggYXJlIG9mZlxuXHRpZiAoIGpRdWVyeS5meC5vZmYgKSB7XG5cdFx0b3B0LmR1cmF0aW9uID0gMDtcblxuXHR9IGVsc2Uge1xuXHRcdGlmICggdHlwZW9mIG9wdC5kdXJhdGlvbiAhPT0gXCJudW1iZXJcIiApIHtcblx0XHRcdGlmICggb3B0LmR1cmF0aW9uIGluIGpRdWVyeS5meC5zcGVlZHMgKSB7XG5cdFx0XHRcdG9wdC5kdXJhdGlvbiA9IGpRdWVyeS5meC5zcGVlZHNbIG9wdC5kdXJhdGlvbiBdO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvcHQuZHVyYXRpb24gPSBqUXVlcnkuZnguc3BlZWRzLl9kZWZhdWx0O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIE5vcm1hbGl6ZSBvcHQucXVldWUgLSB0cnVlL3VuZGVmaW5lZC9udWxsIC0+IFwiZnhcIlxuXHRpZiAoIG9wdC5xdWV1ZSA9PSBudWxsIHx8IG9wdC5xdWV1ZSA9PT0gdHJ1ZSApIHtcblx0XHRvcHQucXVldWUgPSBcImZ4XCI7XG5cdH1cblxuXHQvLyBRdWV1ZWluZ1xuXHRvcHQub2xkID0gb3B0LmNvbXBsZXRlO1xuXG5cdG9wdC5jb21wbGV0ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdGlmICggaXNGdW5jdGlvbiggb3B0Lm9sZCApICkge1xuXHRcdFx0b3B0Lm9sZC5jYWxsKCB0aGlzICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBvcHQucXVldWUgKSB7XG5cdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgb3B0LnF1ZXVlICk7XG5cdFx0fVxuXHR9O1xuXG5cdHJldHVybiBvcHQ7XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGZhZGVUbzogZnVuY3Rpb24oIHNwZWVkLCB0bywgZWFzaW5nLCBjYWxsYmFjayApIHtcblxuXHRcdC8vIFNob3cgYW55IGhpZGRlbiBlbGVtZW50cyBhZnRlciBzZXR0aW5nIG9wYWNpdHkgdG8gMFxuXHRcdHJldHVybiB0aGlzLmZpbHRlciggaXNIaWRkZW5XaXRoaW5UcmVlICkuY3NzKCBcIm9wYWNpdHlcIiwgMCApLnNob3coKVxuXG5cdFx0XHQvLyBBbmltYXRlIHRvIHRoZSB2YWx1ZSBzcGVjaWZpZWRcblx0XHRcdC5lbmQoKS5hbmltYXRlKCB7IG9wYWNpdHk6IHRvIH0sIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XG5cdH0sXG5cdGFuaW1hdGU6IGZ1bmN0aW9uKCBwcm9wLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHtcblx0XHR2YXIgZW1wdHkgPSBqUXVlcnkuaXNFbXB0eU9iamVjdCggcHJvcCApLFxuXHRcdFx0b3B0YWxsID0galF1ZXJ5LnNwZWVkKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApLFxuXHRcdFx0ZG9BbmltYXRpb24gPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHQvLyBPcGVyYXRlIG9uIGEgY29weSBvZiBwcm9wIHNvIHBlci1wcm9wZXJ0eSBlYXNpbmcgd29uJ3QgYmUgbG9zdFxuXHRcdFx0XHR2YXIgYW5pbSA9IEFuaW1hdGlvbiggdGhpcywgalF1ZXJ5LmV4dGVuZCgge30sIHByb3AgKSwgb3B0YWxsICk7XG5cblx0XHRcdFx0Ly8gRW1wdHkgYW5pbWF0aW9ucywgb3IgZmluaXNoaW5nIHJlc29sdmVzIGltbWVkaWF0ZWx5XG5cdFx0XHRcdGlmICggZW1wdHkgfHwgZGF0YVByaXYuZ2V0KCB0aGlzLCBcImZpbmlzaFwiICkgKSB7XG5cdFx0XHRcdFx0YW5pbS5zdG9wKCB0cnVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cblx0XHRkb0FuaW1hdGlvbi5maW5pc2ggPSBkb0FuaW1hdGlvbjtcblxuXHRcdHJldHVybiBlbXB0eSB8fCBvcHRhbGwucXVldWUgPT09IGZhbHNlID9cblx0XHRcdHRoaXMuZWFjaCggZG9BbmltYXRpb24gKSA6XG5cdFx0XHR0aGlzLnF1ZXVlKCBvcHRhbGwucXVldWUsIGRvQW5pbWF0aW9uICk7XG5cdH0sXG5cdHN0b3A6IGZ1bmN0aW9uKCB0eXBlLCBjbGVhclF1ZXVlLCBnb3RvRW5kICkge1xuXHRcdHZhciBzdG9wUXVldWUgPSBmdW5jdGlvbiggaG9va3MgKSB7XG5cdFx0XHR2YXIgc3RvcCA9IGhvb2tzLnN0b3A7XG5cdFx0XHRkZWxldGUgaG9va3Muc3RvcDtcblx0XHRcdHN0b3AoIGdvdG9FbmQgKTtcblx0XHR9O1xuXG5cdFx0aWYgKCB0eXBlb2YgdHlwZSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGdvdG9FbmQgPSBjbGVhclF1ZXVlO1xuXHRcdFx0Y2xlYXJRdWV1ZSA9IHR5cGU7XG5cdFx0XHR0eXBlID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRpZiAoIGNsZWFyUXVldWUgKSB7XG5cdFx0XHR0aGlzLnF1ZXVlKCB0eXBlIHx8IFwiZnhcIiwgW10gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBkZXF1ZXVlID0gdHJ1ZSxcblx0XHRcdFx0aW5kZXggPSB0eXBlICE9IG51bGwgJiYgdHlwZSArIFwicXVldWVIb29rc1wiLFxuXHRcdFx0XHR0aW1lcnMgPSBqUXVlcnkudGltZXJzLFxuXHRcdFx0XHRkYXRhID0gZGF0YVByaXYuZ2V0KCB0aGlzICk7XG5cblx0XHRcdGlmICggaW5kZXggKSB7XG5cdFx0XHRcdGlmICggZGF0YVsgaW5kZXggXSAmJiBkYXRhWyBpbmRleCBdLnN0b3AgKSB7XG5cdFx0XHRcdFx0c3RvcFF1ZXVlKCBkYXRhWyBpbmRleCBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZvciAoIGluZGV4IGluIGRhdGEgKSB7XG5cdFx0XHRcdFx0aWYgKCBkYXRhWyBpbmRleCBdICYmIGRhdGFbIGluZGV4IF0uc3RvcCAmJiBycnVuLnRlc3QoIGluZGV4ICkgKSB7XG5cdFx0XHRcdFx0XHRzdG9wUXVldWUoIGRhdGFbIGluZGV4IF0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Zm9yICggaW5kZXggPSB0aW1lcnMubGVuZ3RoOyBpbmRleC0tOyApIHtcblx0XHRcdFx0aWYgKCB0aW1lcnNbIGluZGV4IF0uZWxlbSA9PT0gdGhpcyAmJlxuXHRcdFx0XHRcdCggdHlwZSA9PSBudWxsIHx8IHRpbWVyc1sgaW5kZXggXS5xdWV1ZSA9PT0gdHlwZSApICkge1xuXG5cdFx0XHRcdFx0dGltZXJzWyBpbmRleCBdLmFuaW0uc3RvcCggZ290b0VuZCApO1xuXHRcdFx0XHRcdGRlcXVldWUgPSBmYWxzZTtcblx0XHRcdFx0XHR0aW1lcnMuc3BsaWNlKCBpbmRleCwgMSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN0YXJ0IHRoZSBuZXh0IGluIHRoZSBxdWV1ZSBpZiB0aGUgbGFzdCBzdGVwIHdhc24ndCBmb3JjZWQuXG5cdFx0XHQvLyBUaW1lcnMgY3VycmVudGx5IHdpbGwgY2FsbCB0aGVpciBjb21wbGV0ZSBjYWxsYmFja3MsIHdoaWNoXG5cdFx0XHQvLyB3aWxsIGRlcXVldWUgYnV0IG9ubHkgaWYgdGhleSB3ZXJlIGdvdG9FbmQuXG5cdFx0XHRpZiAoIGRlcXVldWUgfHwgIWdvdG9FbmQgKSB7XG5cdFx0XHRcdGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXHRmaW5pc2g6IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdGlmICggdHlwZSAhPT0gZmFsc2UgKSB7XG5cdFx0XHR0eXBlID0gdHlwZSB8fCBcImZ4XCI7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGluZGV4LFxuXHRcdFx0XHRkYXRhID0gZGF0YVByaXYuZ2V0KCB0aGlzICksXG5cdFx0XHRcdHF1ZXVlID0gZGF0YVsgdHlwZSArIFwicXVldWVcIiBdLFxuXHRcdFx0XHRob29rcyA9IGRhdGFbIHR5cGUgKyBcInF1ZXVlSG9va3NcIiBdLFxuXHRcdFx0XHR0aW1lcnMgPSBqUXVlcnkudGltZXJzLFxuXHRcdFx0XHRsZW5ndGggPSBxdWV1ZSA/IHF1ZXVlLmxlbmd0aCA6IDA7XG5cblx0XHRcdC8vIEVuYWJsZSBmaW5pc2hpbmcgZmxhZyBvbiBwcml2YXRlIGRhdGFcblx0XHRcdGRhdGEuZmluaXNoID0gdHJ1ZTtcblxuXHRcdFx0Ly8gRW1wdHkgdGhlIHF1ZXVlIGZpcnN0XG5cdFx0XHRqUXVlcnkucXVldWUoIHRoaXMsIHR5cGUsIFtdICk7XG5cblx0XHRcdGlmICggaG9va3MgJiYgaG9va3Muc3RvcCApIHtcblx0XHRcdFx0aG9va3Muc3RvcC5jYWxsKCB0aGlzLCB0cnVlICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIExvb2sgZm9yIGFueSBhY3RpdmUgYW5pbWF0aW9ucywgYW5kIGZpbmlzaCB0aGVtXG5cdFx0XHRmb3IgKCBpbmRleCA9IHRpbWVycy5sZW5ndGg7IGluZGV4LS07ICkge1xuXHRcdFx0XHRpZiAoIHRpbWVyc1sgaW5kZXggXS5lbGVtID09PSB0aGlzICYmIHRpbWVyc1sgaW5kZXggXS5xdWV1ZSA9PT0gdHlwZSApIHtcblx0XHRcdFx0XHR0aW1lcnNbIGluZGV4IF0uYW5pbS5zdG9wKCB0cnVlICk7XG5cdFx0XHRcdFx0dGltZXJzLnNwbGljZSggaW5kZXgsIDEgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBMb29rIGZvciBhbnkgYW5pbWF0aW9ucyBpbiB0aGUgb2xkIHF1ZXVlIGFuZCBmaW5pc2ggdGhlbVxuXHRcdFx0Zm9yICggaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRcdFx0aWYgKCBxdWV1ZVsgaW5kZXggXSAmJiBxdWV1ZVsgaW5kZXggXS5maW5pc2ggKSB7XG5cdFx0XHRcdFx0cXVldWVbIGluZGV4IF0uZmluaXNoLmNhbGwoIHRoaXMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBUdXJuIG9mZiBmaW5pc2hpbmcgZmxhZ1xuXHRcdFx0ZGVsZXRlIGRhdGEuZmluaXNoO1xuXHRcdH0gKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZWFjaCggWyBcInRvZ2dsZVwiLCBcInNob3dcIiwgXCJoaWRlXCIgXSwgZnVuY3Rpb24oIF9pLCBuYW1lICkge1xuXHR2YXIgY3NzRm4gPSBqUXVlcnkuZm5bIG5hbWUgXTtcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIHNwZWVkID09IG51bGwgfHwgdHlwZW9mIHNwZWVkID09PSBcImJvb2xlYW5cIiA/XG5cdFx0XHRjc3NGbi5hcHBseSggdGhpcywgYXJndW1lbnRzICkgOlxuXHRcdFx0dGhpcy5hbmltYXRlKCBnZW5GeCggbmFtZSwgdHJ1ZSApLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApO1xuXHR9O1xufSApO1xuXG4vLyBHZW5lcmF0ZSBzaG9ydGN1dHMgZm9yIGN1c3RvbSBhbmltYXRpb25zXG5qUXVlcnkuZWFjaCgge1xuXHRzbGlkZURvd246IGdlbkZ4KCBcInNob3dcIiApLFxuXHRzbGlkZVVwOiBnZW5GeCggXCJoaWRlXCIgKSxcblx0c2xpZGVUb2dnbGU6IGdlbkZ4KCBcInRvZ2dsZVwiICksXG5cdGZhZGVJbjogeyBvcGFjaXR5OiBcInNob3dcIiB9LFxuXHRmYWRlT3V0OiB7IG9wYWNpdHk6IFwiaGlkZVwiIH0sXG5cdGZhZGVUb2dnbGU6IHsgb3BhY2l0eTogXCJ0b2dnbGVcIiB9XG59LCBmdW5jdGlvbiggbmFtZSwgcHJvcHMgKSB7XG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiB0aGlzLmFuaW1hdGUoIHByb3BzLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApO1xuXHR9O1xufSApO1xuXG5qUXVlcnkudGltZXJzID0gW107XG5qUXVlcnkuZngudGljayA9IGZ1bmN0aW9uKCkge1xuXHR2YXIgdGltZXIsXG5cdFx0aSA9IDAsXG5cdFx0dGltZXJzID0galF1ZXJ5LnRpbWVycztcblxuXHRmeE5vdyA9IERhdGUubm93KCk7XG5cblx0Zm9yICggOyBpIDwgdGltZXJzLmxlbmd0aDsgaSsrICkge1xuXHRcdHRpbWVyID0gdGltZXJzWyBpIF07XG5cblx0XHQvLyBSdW4gdGhlIHRpbWVyIGFuZCBzYWZlbHkgcmVtb3ZlIGl0IHdoZW4gZG9uZSAoYWxsb3dpbmcgZm9yIGV4dGVybmFsIHJlbW92YWwpXG5cdFx0aWYgKCAhdGltZXIoKSAmJiB0aW1lcnNbIGkgXSA9PT0gdGltZXIgKSB7XG5cdFx0XHR0aW1lcnMuc3BsaWNlKCBpLS0sIDEgKTtcblx0XHR9XG5cdH1cblxuXHRpZiAoICF0aW1lcnMubGVuZ3RoICkge1xuXHRcdGpRdWVyeS5meC5zdG9wKCk7XG5cdH1cblx0ZnhOb3cgPSB1bmRlZmluZWQ7XG59O1xuXG5qUXVlcnkuZngudGltZXIgPSBmdW5jdGlvbiggdGltZXIgKSB7XG5cdGpRdWVyeS50aW1lcnMucHVzaCggdGltZXIgKTtcblx0alF1ZXJ5LmZ4LnN0YXJ0KCk7XG59O1xuXG5qUXVlcnkuZnguaW50ZXJ2YWwgPSAxMztcbmpRdWVyeS5meC5zdGFydCA9IGZ1bmN0aW9uKCkge1xuXHRpZiAoIGluUHJvZ3Jlc3MgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0aW5Qcm9ncmVzcyA9IHRydWU7XG5cdHNjaGVkdWxlKCk7XG59O1xuXG5qUXVlcnkuZnguc3RvcCA9IGZ1bmN0aW9uKCkge1xuXHRpblByb2dyZXNzID0gbnVsbDtcbn07XG5cbmpRdWVyeS5meC5zcGVlZHMgPSB7XG5cdHNsb3c6IDYwMCxcblx0ZmFzdDogMjAwLFxuXG5cdC8vIERlZmF1bHQgc3BlZWRcblx0X2RlZmF1bHQ6IDQwMFxufTtcblxuXG4vLyBCYXNlZCBvZmYgb2YgdGhlIHBsdWdpbiBieSBDbGludCBIZWxmZXJzLCB3aXRoIHBlcm1pc3Npb24uXG5qUXVlcnkuZm4uZGVsYXkgPSBmdW5jdGlvbiggdGltZSwgdHlwZSApIHtcblx0dGltZSA9IGpRdWVyeS5meCA/IGpRdWVyeS5meC5zcGVlZHNbIHRpbWUgXSB8fCB0aW1lIDogdGltZTtcblx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXG5cdHJldHVybiB0aGlzLnF1ZXVlKCB0eXBlLCBmdW5jdGlvbiggbmV4dCwgaG9va3MgKSB7XG5cdFx0dmFyIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCggbmV4dCwgdGltZSApO1xuXHRcdGhvb2tzLnN0b3AgPSBmdW5jdGlvbigpIHtcblx0XHRcdHdpbmRvdy5jbGVhclRpbWVvdXQoIHRpbWVvdXQgKTtcblx0XHR9O1xuXHR9ICk7XG59O1xuXG5cbiggZnVuY3Rpb24oKSB7XG5cdHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiaW5wdXRcIiApLFxuXHRcdHNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwic2VsZWN0XCIgKSxcblx0XHRvcHQgPSBzZWxlY3QuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwib3B0aW9uXCIgKSApO1xuXG5cdGlucHV0LnR5cGUgPSBcImNoZWNrYm94XCI7XG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMyBvbmx5XG5cdC8vIERlZmF1bHQgdmFsdWUgZm9yIGEgY2hlY2tib3ggc2hvdWxkIGJlIFwib25cIlxuXHRzdXBwb3J0LmNoZWNrT24gPSBpbnB1dC52YWx1ZSAhPT0gXCJcIjtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0Ly8gTXVzdCBhY2Nlc3Mgc2VsZWN0ZWRJbmRleCB0byBtYWtlIGRlZmF1bHQgb3B0aW9ucyBzZWxlY3Rcblx0c3VwcG9ydC5vcHRTZWxlY3RlZCA9IG9wdC5zZWxlY3RlZDtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0Ly8gQW4gaW5wdXQgbG9zZXMgaXRzIHZhbHVlIGFmdGVyIGJlY29taW5nIGEgcmFkaW9cblx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImlucHV0XCIgKTtcblx0aW5wdXQudmFsdWUgPSBcInRcIjtcblx0aW5wdXQudHlwZSA9IFwicmFkaW9cIjtcblx0c3VwcG9ydC5yYWRpb1ZhbHVlID0gaW5wdXQudmFsdWUgPT09IFwidFwiO1xufSApKCk7XG5cblxudmFyIGJvb2xIb29rLFxuXHRhdHRySGFuZGxlID0galF1ZXJ5LmV4cHIuYXR0ckhhbmRsZTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRhdHRyOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgalF1ZXJ5LmF0dHIsIG5hbWUsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSApO1xuXHR9LFxuXG5cdHJlbW92ZUF0dHI6IGZ1bmN0aW9uKCBuYW1lICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0alF1ZXJ5LnJlbW92ZUF0dHIoIHRoaXMsIG5hbWUgKTtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXHRhdHRyOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7XG5cdFx0dmFyIHJldCwgaG9va3MsXG5cdFx0XHRuVHlwZSA9IGVsZW0ubm9kZVR5cGU7XG5cblx0XHQvLyBEb24ndCBnZXQvc2V0IGF0dHJpYnV0ZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5vZGVzXG5cdFx0aWYgKCBuVHlwZSA9PT0gMyB8fCBuVHlwZSA9PT0gOCB8fCBuVHlwZSA9PT0gMiApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBGYWxsYmFjayB0byBwcm9wIHdoZW4gYXR0cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZFxuXHRcdGlmICggdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlID09PSBcInVuZGVmaW5lZFwiICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5wcm9wKCBlbGVtLCBuYW1lLCB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdC8vIEF0dHJpYnV0ZSBob29rcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgbG93ZXJjYXNlIHZlcnNpb25cblx0XHQvLyBHcmFiIG5lY2Vzc2FyeSBob29rIGlmIG9uZSBpcyBkZWZpbmVkXG5cdFx0aWYgKCBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7XG5cdFx0XHRob29rcyA9IGpRdWVyeS5hdHRySG9va3NbIG5hbWUudG9Mb3dlckNhc2UoKSBdIHx8XG5cdFx0XHRcdCggalF1ZXJ5LmV4cHIubWF0Y2guYm9vbC50ZXN0KCBuYW1lICkgPyBib29sSG9vayA6IHVuZGVmaW5lZCApO1xuXHRcdH1cblxuXHRcdGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdGlmICggdmFsdWUgPT09IG51bGwgKSB7XG5cdFx0XHRcdGpRdWVyeS5yZW1vdmVBdHRyKCBlbGVtLCBuYW1lICk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBob29rcyAmJiBcInNldFwiIGluIGhvb2tzICYmXG5cdFx0XHRcdCggcmV0ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgbmFtZSApICkgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblxuXHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsIHZhbHVlICsgXCJcIiApO1xuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyAmJiAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApICkgIT09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblxuXHRcdHJldCA9IGpRdWVyeS5maW5kLmF0dHIoIGVsZW0sIG5hbWUgKTtcblxuXHRcdC8vIE5vbi1leGlzdGVudCBhdHRyaWJ1dGVzIHJldHVybiBudWxsLCB3ZSBub3JtYWxpemUgdG8gdW5kZWZpbmVkXG5cdFx0cmV0dXJuIHJldCA9PSBudWxsID8gdW5kZWZpbmVkIDogcmV0O1xuXHR9LFxuXG5cdGF0dHJIb29rczoge1xuXHRcdHR5cGU6IHtcblx0XHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdFx0XHRpZiAoICFzdXBwb3J0LnJhZGlvVmFsdWUgJiYgdmFsdWUgPT09IFwicmFkaW9cIiAmJlxuXHRcdFx0XHRcdG5vZGVOYW1lKCBlbGVtLCBcImlucHV0XCIgKSApIHtcblx0XHRcdFx0XHR2YXIgdmFsID0gZWxlbS52YWx1ZTtcblx0XHRcdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggXCJ0eXBlXCIsIHZhbHVlICk7XG5cdFx0XHRcdFx0aWYgKCB2YWwgKSB7XG5cdFx0XHRcdFx0XHRlbGVtLnZhbHVlID0gdmFsO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0cmVtb3ZlQXR0cjogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdHZhciBuYW1lLFxuXHRcdFx0aSA9IDAsXG5cblx0XHRcdC8vIEF0dHJpYnV0ZSBuYW1lcyBjYW4gY29udGFpbiBub24tSFRNTCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnNcblx0XHRcdC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2F0dHJpYnV0ZXMtMlxuXHRcdFx0YXR0ck5hbWVzID0gdmFsdWUgJiYgdmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUgKTtcblxuXHRcdGlmICggYXR0ck5hbWVzICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHR3aGlsZSAoICggbmFtZSA9IGF0dHJOYW1lc1sgaSsrIF0gKSApIHtcblx0XHRcdFx0ZWxlbS5yZW1vdmVBdHRyaWJ1dGUoIG5hbWUgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn0gKTtcblxuLy8gSG9va3MgZm9yIGJvb2xlYW4gYXR0cmlidXRlc1xuYm9vbEhvb2sgPSB7XG5cdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBuYW1lICkge1xuXHRcdGlmICggdmFsdWUgPT09IGZhbHNlICkge1xuXG5cdFx0XHQvLyBSZW1vdmUgYm9vbGVhbiBhdHRyaWJ1dGVzIHdoZW4gc2V0IHRvIGZhbHNlXG5cdFx0XHRqUXVlcnkucmVtb3ZlQXR0ciggZWxlbSwgbmFtZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggbmFtZSwgbmFtZSApO1xuXHRcdH1cblx0XHRyZXR1cm4gbmFtZTtcblx0fVxufTtcblxualF1ZXJ5LmVhY2goIGpRdWVyeS5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKCAvXFx3Ky9nICksIGZ1bmN0aW9uKCBfaSwgbmFtZSApIHtcblx0dmFyIGdldHRlciA9IGF0dHJIYW5kbGVbIG5hbWUgXSB8fCBqUXVlcnkuZmluZC5hdHRyO1xuXG5cdGF0dHJIYW5kbGVbIG5hbWUgXSA9IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHtcblx0XHR2YXIgcmV0LCBoYW5kbGUsXG5cdFx0XHRsb3dlcmNhc2VOYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuXG5cdFx0aWYgKCAhaXNYTUwgKSB7XG5cblx0XHRcdC8vIEF2b2lkIGFuIGluZmluaXRlIGxvb3AgYnkgdGVtcG9yYXJpbHkgcmVtb3ZpbmcgdGhpcyBmdW5jdGlvbiBmcm9tIHRoZSBnZXR0ZXJcblx0XHRcdGhhbmRsZSA9IGF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXTtcblx0XHRcdGF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXSA9IHJldDtcblx0XHRcdHJldCA9IGdldHRlciggZWxlbSwgbmFtZSwgaXNYTUwgKSAhPSBudWxsID9cblx0XHRcdFx0bG93ZXJjYXNlTmFtZSA6XG5cdFx0XHRcdG51bGw7XG5cdFx0XHRhdHRySGFuZGxlWyBsb3dlcmNhc2VOYW1lIF0gPSBoYW5kbGU7XG5cdFx0fVxuXHRcdHJldHVybiByZXQ7XG5cdH07XG59ICk7XG5cblxuXG5cbnZhciByZm9jdXNhYmxlID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxcblx0cmNsaWNrYWJsZSA9IC9eKD86YXxhcmVhKSQvaTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRwcm9wOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgalF1ZXJ5LnByb3AsIG5hbWUsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSApO1xuXHR9LFxuXG5cdHJlbW92ZVByb3A6IGZ1bmN0aW9uKCBuYW1lICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0ZGVsZXRlIHRoaXNbIGpRdWVyeS5wcm9wRml4WyBuYW1lIF0gfHwgbmFtZSBdO1xuXHRcdH0gKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cdHByb3A6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSApIHtcblx0XHR2YXIgcmV0LCBob29rcyxcblx0XHRcdG5UeXBlID0gZWxlbS5ub2RlVHlwZTtcblxuXHRcdC8vIERvbid0IGdldC9zZXQgcHJvcGVydGllcyBvbiB0ZXh0LCBjb21tZW50IGFuZCBhdHRyaWJ1dGUgbm9kZXNcblx0XHRpZiAoIG5UeXBlID09PSAzIHx8IG5UeXBlID09PSA4IHx8IG5UeXBlID09PSAyICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICggblR5cGUgIT09IDEgfHwgIWpRdWVyeS5pc1hNTERvYyggZWxlbSApICkge1xuXG5cdFx0XHQvLyBGaXggbmFtZSBhbmQgYXR0YWNoIGhvb2tzXG5cdFx0XHRuYW1lID0galF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1lO1xuXHRcdFx0aG9va3MgPSBqUXVlcnkucHJvcEhvb2tzWyBuYW1lIF07XG5cdFx0fVxuXG5cdFx0aWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0aWYgKCBob29rcyAmJiBcInNldFwiIGluIGhvb2tzICYmXG5cdFx0XHRcdCggcmV0ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgbmFtZSApICkgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuICggZWxlbVsgbmFtZSBdID0gdmFsdWUgKTtcblx0XHR9XG5cblx0XHRpZiAoIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgJiYgKCByZXQgPSBob29rcy5nZXQoIGVsZW0sIG5hbWUgKSApICE9PSBudWxsICkge1xuXHRcdFx0cmV0dXJuIHJldDtcblx0XHR9XG5cblx0XHRyZXR1cm4gZWxlbVsgbmFtZSBdO1xuXHR9LFxuXG5cdHByb3BIb29rczoge1xuXHRcdHRhYkluZGV4OiB7XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHlcblx0XHRcdFx0Ly8gZWxlbS50YWJJbmRleCBkb2Vzbid0IGFsd2F5cyByZXR1cm4gdGhlXG5cdFx0XHRcdC8vIGNvcnJlY3QgdmFsdWUgd2hlbiBpdCBoYXNuJ3QgYmVlbiBleHBsaWNpdGx5IHNldFxuXHRcdFx0XHQvLyBVc2UgcHJvcGVyIGF0dHJpYnV0ZSByZXRyaWV2YWwgKHRyYWMtMTIwNzIpXG5cdFx0XHRcdHZhciB0YWJpbmRleCA9IGpRdWVyeS5maW5kLmF0dHIoIGVsZW0sIFwidGFiaW5kZXhcIiApO1xuXG5cdFx0XHRcdGlmICggdGFiaW5kZXggKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHBhcnNlSW50KCB0YWJpbmRleCwgMTAgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRyZm9jdXNhYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSB8fFxuXHRcdFx0XHRcdHJjbGlja2FibGUudGVzdCggZWxlbS5ub2RlTmFtZSApICYmXG5cdFx0XHRcdFx0ZWxlbS5ocmVmXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJldHVybiAwO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIC0xO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHRwcm9wRml4OiB7XG5cdFx0XCJmb3JcIjogXCJodG1sRm9yXCIsXG5cdFx0XCJjbGFzc1wiOiBcImNsYXNzTmFtZVwiXG5cdH1cbn0gKTtcblxuLy8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG4vLyBBY2Nlc3NpbmcgdGhlIHNlbGVjdGVkSW5kZXggcHJvcGVydHlcbi8vIGZvcmNlcyB0aGUgYnJvd3NlciB0byByZXNwZWN0IHNldHRpbmcgc2VsZWN0ZWRcbi8vIG9uIHRoZSBvcHRpb25cbi8vIFRoZSBnZXR0ZXIgZW5zdXJlcyBhIGRlZmF1bHQgb3B0aW9uIGlzIHNlbGVjdGVkXG4vLyB3aGVuIGluIGFuIG9wdGdyb3VwXG4vLyBlc2xpbnQgcnVsZSBcIm5vLXVudXNlZC1leHByZXNzaW9uc1wiIGlzIGRpc2FibGVkIGZvciB0aGlzIGNvZGVcbi8vIHNpbmNlIGl0IGNvbnNpZGVycyBzdWNoIGFjY2Vzc2lvbnMgbm9vcFxuaWYgKCAhc3VwcG9ydC5vcHRTZWxlY3RlZCApIHtcblx0alF1ZXJ5LnByb3BIb29rcy5zZWxlY3RlZCA9IHtcblx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdFx0XHQvKiBlc2xpbnQgbm8tdW51c2VkLWV4cHJlc3Npb25zOiBcIm9mZlwiICovXG5cblx0XHRcdHZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7XG5cdFx0XHRpZiAoIHBhcmVudCAmJiBwYXJlbnQucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0cGFyZW50LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDtcblx0XHRcdH1cblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH0sXG5cdFx0c2V0OiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdFx0LyogZXNsaW50IG5vLXVudXNlZC1leHByZXNzaW9uczogXCJvZmZcIiAqL1xuXG5cdFx0XHR2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlO1xuXHRcdFx0aWYgKCBwYXJlbnQgKSB7XG5cdFx0XHRcdHBhcmVudC5zZWxlY3RlZEluZGV4O1xuXG5cdFx0XHRcdGlmICggcGFyZW50LnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdFx0cGFyZW50LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fTtcbn1cblxualF1ZXJ5LmVhY2goIFtcblx0XCJ0YWJJbmRleFwiLFxuXHRcInJlYWRPbmx5XCIsXG5cdFwibWF4TGVuZ3RoXCIsXG5cdFwiY2VsbFNwYWNpbmdcIixcblx0XCJjZWxsUGFkZGluZ1wiLFxuXHRcInJvd1NwYW5cIixcblx0XCJjb2xTcGFuXCIsXG5cdFwidXNlTWFwXCIsXG5cdFwiZnJhbWVCb3JkZXJcIixcblx0XCJjb250ZW50RWRpdGFibGVcIlxuXSwgZnVuY3Rpb24oKSB7XG5cdGpRdWVyeS5wcm9wRml4WyB0aGlzLnRvTG93ZXJDYXNlKCkgXSA9IHRoaXM7XG59ICk7XG5cblxuXG5cblx0Ly8gU3RyaXAgYW5kIGNvbGxhcHNlIHdoaXRlc3BhY2UgYWNjb3JkaW5nIHRvIEhUTUwgc3BlY1xuXHQvLyBodHRwczovL2luZnJhLnNwZWMud2hhdHdnLm9yZy8jc3RyaXAtYW5kLWNvbGxhcHNlLWFzY2lpLXdoaXRlc3BhY2Vcblx0ZnVuY3Rpb24gc3RyaXBBbmRDb2xsYXBzZSggdmFsdWUgKSB7XG5cdFx0dmFyIHRva2VucyA9IHZhbHVlLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107XG5cdFx0cmV0dXJuIHRva2Vucy5qb2luKCBcIiBcIiApO1xuXHR9XG5cblxuZnVuY3Rpb24gZ2V0Q2xhc3MoIGVsZW0gKSB7XG5cdHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSAmJiBlbGVtLmdldEF0dHJpYnV0ZSggXCJjbGFzc1wiICkgfHwgXCJcIjtcbn1cblxuZnVuY3Rpb24gY2xhc3Nlc1RvQXJyYXkoIHZhbHVlICkge1xuXHRpZiAoIEFycmF5LmlzQXJyYXkoIHZhbHVlICkgKSB7XG5cdFx0cmV0dXJuIHZhbHVlO1xuXHR9XG5cdGlmICggdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICkge1xuXHRcdHJldHVybiB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdO1xuXHR9XG5cdHJldHVybiBbXTtcbn1cblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRhZGRDbGFzczogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHZhciBjbGFzc05hbWVzLCBjdXIsIGN1clZhbHVlLCBjbGFzc05hbWUsIGksIGZpbmFsVmFsdWU7XG5cblx0XHRpZiAoIGlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaiApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkuYWRkQ2xhc3MoIHZhbHVlLmNhbGwoIHRoaXMsIGosIGdldENsYXNzKCB0aGlzICkgKSApO1xuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdGNsYXNzTmFtZXMgPSBjbGFzc2VzVG9BcnJheSggdmFsdWUgKTtcblxuXHRcdGlmICggY2xhc3NOYW1lcy5sZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0Y3VyVmFsdWUgPSBnZXRDbGFzcyggdGhpcyApO1xuXHRcdFx0XHRjdXIgPSB0aGlzLm5vZGVUeXBlID09PSAxICYmICggXCIgXCIgKyBzdHJpcEFuZENvbGxhcHNlKCBjdXJWYWx1ZSApICsgXCIgXCIgKTtcblxuXHRcdFx0XHRpZiAoIGN1ciApIHtcblx0XHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IGNsYXNzTmFtZXMubGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdFx0XHRjbGFzc05hbWUgPSBjbGFzc05hbWVzWyBpIF07XG5cdFx0XHRcdFx0XHRpZiAoIGN1ci5pbmRleE9mKCBcIiBcIiArIGNsYXNzTmFtZSArIFwiIFwiICkgPCAwICkge1xuXHRcdFx0XHRcdFx0XHRjdXIgKz0gY2xhc3NOYW1lICsgXCIgXCI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gT25seSBhc3NpZ24gaWYgZGlmZmVyZW50IHRvIGF2b2lkIHVubmVlZGVkIHJlbmRlcmluZy5cblx0XHRcdFx0XHRmaW5hbFZhbHVlID0gc3RyaXBBbmRDb2xsYXBzZSggY3VyICk7XG5cdFx0XHRcdFx0aWYgKCBjdXJWYWx1ZSAhPT0gZmluYWxWYWx1ZSApIHtcblx0XHRcdFx0XHRcdHRoaXMuc2V0QXR0cmlidXRlKCBcImNsYXNzXCIsIGZpbmFsVmFsdWUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHRyZW1vdmVDbGFzczogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHZhciBjbGFzc05hbWVzLCBjdXIsIGN1clZhbHVlLCBjbGFzc05hbWUsIGksIGZpbmFsVmFsdWU7XG5cblx0XHRpZiAoIGlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaiApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkucmVtb3ZlQ2xhc3MoIHZhbHVlLmNhbGwoIHRoaXMsIGosIGdldENsYXNzKCB0aGlzICkgKSApO1xuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdGlmICggIWFyZ3VtZW50cy5sZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5hdHRyKCBcImNsYXNzXCIsIFwiXCIgKTtcblx0XHR9XG5cblx0XHRjbGFzc05hbWVzID0gY2xhc3Nlc1RvQXJyYXkoIHZhbHVlICk7XG5cblx0XHRpZiAoIGNsYXNzTmFtZXMubGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGN1clZhbHVlID0gZ2V0Q2xhc3MoIHRoaXMgKTtcblxuXHRcdFx0XHQvLyBUaGlzIGV4cHJlc3Npb24gaXMgaGVyZSBmb3IgYmV0dGVyIGNvbXByZXNzaWJpbGl0eSAoc2VlIGFkZENsYXNzKVxuXHRcdFx0XHRjdXIgPSB0aGlzLm5vZGVUeXBlID09PSAxICYmICggXCIgXCIgKyBzdHJpcEFuZENvbGxhcHNlKCBjdXJWYWx1ZSApICsgXCIgXCIgKTtcblxuXHRcdFx0XHRpZiAoIGN1ciApIHtcblx0XHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IGNsYXNzTmFtZXMubGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdFx0XHRjbGFzc05hbWUgPSBjbGFzc05hbWVzWyBpIF07XG5cblx0XHRcdFx0XHRcdC8vIFJlbW92ZSAqYWxsKiBpbnN0YW5jZXNcblx0XHRcdFx0XHRcdHdoaWxlICggY3VyLmluZGV4T2YoIFwiIFwiICsgY2xhc3NOYW1lICsgXCIgXCIgKSA+IC0xICkge1xuXHRcdFx0XHRcdFx0XHRjdXIgPSBjdXIucmVwbGFjZSggXCIgXCIgKyBjbGFzc05hbWUgKyBcIiBcIiwgXCIgXCIgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBPbmx5IGFzc2lnbiBpZiBkaWZmZXJlbnQgdG8gYXZvaWQgdW5uZWVkZWQgcmVuZGVyaW5nLlxuXHRcdFx0XHRcdGZpbmFsVmFsdWUgPSBzdHJpcEFuZENvbGxhcHNlKCBjdXIgKTtcblx0XHRcdFx0XHRpZiAoIGN1clZhbHVlICE9PSBmaW5hbFZhbHVlICkge1xuXHRcdFx0XHRcdFx0dGhpcy5zZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIiwgZmluYWxWYWx1ZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdHRvZ2dsZUNsYXNzOiBmdW5jdGlvbiggdmFsdWUsIHN0YXRlVmFsICkge1xuXHRcdHZhciBjbGFzc05hbWVzLCBjbGFzc05hbWUsIGksIHNlbGYsXG5cdFx0XHR0eXBlID0gdHlwZW9mIHZhbHVlLFxuXHRcdFx0aXNWYWxpZFZhbHVlID0gdHlwZSA9PT0gXCJzdHJpbmdcIiB8fCBBcnJheS5pc0FycmF5KCB2YWx1ZSApO1xuXG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCB2YWx1ZSApICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLnRvZ2dsZUNsYXNzKFxuXHRcdFx0XHRcdHZhbHVlLmNhbGwoIHRoaXMsIGksIGdldENsYXNzKCB0aGlzICksIHN0YXRlVmFsICksXG5cdFx0XHRcdFx0c3RhdGVWYWxcblx0XHRcdFx0KTtcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRpZiAoIHR5cGVvZiBzdGF0ZVZhbCA9PT0gXCJib29sZWFuXCIgJiYgaXNWYWxpZFZhbHVlICkge1xuXHRcdFx0cmV0dXJuIHN0YXRlVmFsID8gdGhpcy5hZGRDbGFzcyggdmFsdWUgKSA6IHRoaXMucmVtb3ZlQ2xhc3MoIHZhbHVlICk7XG5cdFx0fVxuXG5cdFx0Y2xhc3NOYW1lcyA9IGNsYXNzZXNUb0FycmF5KCB2YWx1ZSApO1xuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoIGlzVmFsaWRWYWx1ZSApIHtcblxuXHRcdFx0XHQvLyBUb2dnbGUgaW5kaXZpZHVhbCBjbGFzcyBuYW1lc1xuXHRcdFx0XHRzZWxmID0galF1ZXJ5KCB0aGlzICk7XG5cblx0XHRcdFx0Zm9yICggaSA9IDA7IGkgPCBjbGFzc05hbWVzLmxlbmd0aDsgaSsrICkge1xuXHRcdFx0XHRcdGNsYXNzTmFtZSA9IGNsYXNzTmFtZXNbIGkgXTtcblxuXHRcdFx0XHRcdC8vIENoZWNrIGVhY2ggY2xhc3NOYW1lIGdpdmVuLCBzcGFjZSBzZXBhcmF0ZWQgbGlzdFxuXHRcdFx0XHRcdGlmICggc2VsZi5oYXNDbGFzcyggY2xhc3NOYW1lICkgKSB7XG5cdFx0XHRcdFx0XHRzZWxmLnJlbW92ZUNsYXNzKCBjbGFzc05hbWUgKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0c2VsZi5hZGRDbGFzcyggY2xhc3NOYW1lICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdC8vIFRvZ2dsZSB3aG9sZSBjbGFzcyBuYW1lXG5cdFx0XHR9IGVsc2UgaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGUgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdFx0XHRjbGFzc05hbWUgPSBnZXRDbGFzcyggdGhpcyApO1xuXHRcdFx0XHRpZiAoIGNsYXNzTmFtZSApIHtcblxuXHRcdFx0XHRcdC8vIFN0b3JlIGNsYXNzTmFtZSBpZiBzZXRcblx0XHRcdFx0XHRkYXRhUHJpdi5zZXQoIHRoaXMsIFwiX19jbGFzc05hbWVfX1wiLCBjbGFzc05hbWUgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIElmIHRoZSBlbGVtZW50IGhhcyBhIGNsYXNzIG5hbWUgb3IgaWYgd2UncmUgcGFzc2VkIGBmYWxzZWAsXG5cdFx0XHRcdC8vIHRoZW4gcmVtb3ZlIHRoZSB3aG9sZSBjbGFzc25hbWUgKGlmIHRoZXJlIHdhcyBvbmUsIHRoZSBhYm92ZSBzYXZlZCBpdCkuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSBicmluZyBiYWNrIHdoYXRldmVyIHdhcyBwcmV2aW91c2x5IHNhdmVkIChpZiBhbnl0aGluZyksXG5cdFx0XHRcdC8vIGZhbGxpbmcgYmFjayB0byB0aGUgZW1wdHkgc3RyaW5nIGlmIG5vdGhpbmcgd2FzIHN0b3JlZC5cblx0XHRcdFx0aWYgKCB0aGlzLnNldEF0dHJpYnV0ZSApIHtcblx0XHRcdFx0XHR0aGlzLnNldEF0dHJpYnV0ZSggXCJjbGFzc1wiLFxuXHRcdFx0XHRcdFx0Y2xhc3NOYW1lIHx8IHZhbHVlID09PSBmYWxzZSA/XG5cdFx0XHRcdFx0XHRcdFwiXCIgOlxuXHRcdFx0XHRcdFx0XHRkYXRhUHJpdi5nZXQoIHRoaXMsIFwiX19jbGFzc05hbWVfX1wiICkgfHwgXCJcIlxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0aGFzQ2xhc3M6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR2YXIgY2xhc3NOYW1lLCBlbGVtLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRjbGFzc05hbWUgPSBcIiBcIiArIHNlbGVjdG9yICsgXCIgXCI7XG5cdFx0d2hpbGUgKCAoIGVsZW0gPSB0aGlzWyBpKysgXSApICkge1xuXHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHRcdCggXCIgXCIgKyBzdHJpcEFuZENvbGxhcHNlKCBnZXRDbGFzcyggZWxlbSApICkgKyBcIiBcIiApLmluZGV4T2YoIGNsYXNzTmFtZSApID4gLTEgKSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufSApO1xuXG5cblxuXG52YXIgcnJldHVybiA9IC9cXHIvZztcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHR2YWw6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHR2YXIgaG9va3MsIHJldCwgdmFsdWVJc0Z1bmN0aW9uLFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXTtcblxuXHRcdGlmICggIWFyZ3VtZW50cy5sZW5ndGggKSB7XG5cdFx0XHRpZiAoIGVsZW0gKSB7XG5cdFx0XHRcdGhvb2tzID0galF1ZXJ5LnZhbEhvb2tzWyBlbGVtLnR5cGUgXSB8fFxuXHRcdFx0XHRcdGpRdWVyeS52YWxIb29rc1sgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIF07XG5cblx0XHRcdFx0aWYgKCBob29rcyAmJlxuXHRcdFx0XHRcdFwiZ2V0XCIgaW4gaG9va3MgJiZcblx0XHRcdFx0XHQoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgXCJ2YWx1ZVwiICkgKSAhPT0gdW5kZWZpbmVkXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJldHVybiByZXQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXQgPSBlbGVtLnZhbHVlO1xuXG5cdFx0XHRcdC8vIEhhbmRsZSBtb3N0IGNvbW1vbiBzdHJpbmcgY2FzZXNcblx0XHRcdFx0aWYgKCB0eXBlb2YgcmV0ID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0XHRcdHJldHVybiByZXQucmVwbGFjZSggcnJldHVybiwgXCJcIiApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gSGFuZGxlIGNhc2VzIHdoZXJlIHZhbHVlIGlzIG51bGwvdW5kZWYgb3IgbnVtYmVyXG5cdFx0XHRcdHJldHVybiByZXQgPT0gbnVsbCA/IFwiXCIgOiByZXQ7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR2YWx1ZUlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uKCB2YWx1ZSApO1xuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHR2YXIgdmFsO1xuXG5cdFx0XHRpZiAoIHRoaXMubm9kZVR5cGUgIT09IDEgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCB2YWx1ZUlzRnVuY3Rpb24gKSB7XG5cdFx0XHRcdHZhbCA9IHZhbHVlLmNhbGwoIHRoaXMsIGksIGpRdWVyeSggdGhpcyApLnZhbCgpICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR2YWwgPSB2YWx1ZTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gVHJlYXQgbnVsbC91bmRlZmluZWQgYXMgXCJcIjsgY29udmVydCBudW1iZXJzIHRvIHN0cmluZ1xuXHRcdFx0aWYgKCB2YWwgPT0gbnVsbCApIHtcblx0XHRcdFx0dmFsID0gXCJcIjtcblxuXHRcdFx0fSBlbHNlIGlmICggdHlwZW9mIHZhbCA9PT0gXCJudW1iZXJcIiApIHtcblx0XHRcdFx0dmFsICs9IFwiXCI7XG5cblx0XHRcdH0gZWxzZSBpZiAoIEFycmF5LmlzQXJyYXkoIHZhbCApICkge1xuXHRcdFx0XHR2YWwgPSBqUXVlcnkubWFwKCB2YWwsIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdFx0XHRyZXR1cm4gdmFsdWUgPT0gbnVsbCA/IFwiXCIgOiB2YWx1ZSArIFwiXCI7XG5cdFx0XHRcdH0gKTtcblx0XHRcdH1cblxuXHRcdFx0aG9va3MgPSBqUXVlcnkudmFsSG9va3NbIHRoaXMudHlwZSBdIHx8IGpRdWVyeS52YWxIb29rc1sgdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIF07XG5cblx0XHRcdC8vIElmIHNldCByZXR1cm5zIHVuZGVmaW5lZCwgZmFsbCBiYWNrIHRvIG5vcm1hbCBzZXR0aW5nXG5cdFx0XHRpZiAoICFob29rcyB8fCAhKCBcInNldFwiIGluIGhvb2tzICkgfHwgaG9va3Muc2V0KCB0aGlzLCB2YWwsIFwidmFsdWVcIiApID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdHRoaXMudmFsdWUgPSB2YWw7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0dmFsSG9va3M6IHtcblx0XHRvcHRpb246IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdFx0dmFyIHZhbCA9IGpRdWVyeS5maW5kLmF0dHIoIGVsZW0sIFwidmFsdWVcIiApO1xuXHRcdFx0XHRyZXR1cm4gdmFsICE9IG51bGwgP1xuXHRcdFx0XHRcdHZhbCA6XG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTEwIC0gMTEgb25seVxuXHRcdFx0XHRcdC8vIG9wdGlvbi50ZXh0IHRocm93cyBleGNlcHRpb25zICh0cmFjLTE0Njg2LCB0cmFjLTE0ODU4KVxuXHRcdFx0XHRcdC8vIFN0cmlwIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlXG5cdFx0XHRcdFx0Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jc3RyaXAtYW5kLWNvbGxhcHNlLXdoaXRlc3BhY2Vcblx0XHRcdFx0XHRzdHJpcEFuZENvbGxhcHNlKCBqUXVlcnkudGV4dCggZWxlbSApICk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRzZWxlY3Q6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciB2YWx1ZSwgb3B0aW9uLCBpLFxuXHRcdFx0XHRcdG9wdGlvbnMgPSBlbGVtLm9wdGlvbnMsXG5cdFx0XHRcdFx0aW5kZXggPSBlbGVtLnNlbGVjdGVkSW5kZXgsXG5cdFx0XHRcdFx0b25lID0gZWxlbS50eXBlID09PSBcInNlbGVjdC1vbmVcIixcblx0XHRcdFx0XHR2YWx1ZXMgPSBvbmUgPyBudWxsIDogW10sXG5cdFx0XHRcdFx0bWF4ID0gb25lID8gaW5kZXggKyAxIDogb3B0aW9ucy5sZW5ndGg7XG5cblx0XHRcdFx0aWYgKCBpbmRleCA8IDAgKSB7XG5cdFx0XHRcdFx0aSA9IG1heDtcblxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGkgPSBvbmUgPyBpbmRleCA6IDA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBMb29wIHRocm91Z2ggYWxsIHRoZSBzZWxlY3RlZCBvcHRpb25zXG5cdFx0XHRcdGZvciAoIDsgaSA8IG1heDsgaSsrICkge1xuXHRcdFx0XHRcdG9wdGlvbiA9IG9wdGlvbnNbIGkgXTtcblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG5cdFx0XHRcdFx0Ly8gSUU4LTkgZG9lc24ndCB1cGRhdGUgc2VsZWN0ZWQgYWZ0ZXIgZm9ybSByZXNldCAodHJhYy0yNTUxKVxuXHRcdFx0XHRcdGlmICggKCBvcHRpb24uc2VsZWN0ZWQgfHwgaSA9PT0gaW5kZXggKSAmJlxuXG5cdFx0XHRcdFx0XHRcdC8vIERvbid0IHJldHVybiBvcHRpb25zIHRoYXQgYXJlIGRpc2FibGVkIG9yIGluIGEgZGlzYWJsZWQgb3B0Z3JvdXBcblx0XHRcdFx0XHRcdFx0IW9wdGlvbi5kaXNhYmxlZCAmJlxuXHRcdFx0XHRcdFx0XHQoICFvcHRpb24ucGFyZW50Tm9kZS5kaXNhYmxlZCB8fFxuXHRcdFx0XHRcdFx0XHRcdCFub2RlTmFtZSggb3B0aW9uLnBhcmVudE5vZGUsIFwib3B0Z3JvdXBcIiApICkgKSB7XG5cblx0XHRcdFx0XHRcdC8vIEdldCB0aGUgc3BlY2lmaWMgdmFsdWUgZm9yIHRoZSBvcHRpb25cblx0XHRcdFx0XHRcdHZhbHVlID0galF1ZXJ5KCBvcHRpb24gKS52YWwoKTtcblxuXHRcdFx0XHRcdFx0Ly8gV2UgZG9uJ3QgbmVlZCBhbiBhcnJheSBmb3Igb25lIHNlbGVjdHNcblx0XHRcdFx0XHRcdGlmICggb25lICkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIE11bHRpLVNlbGVjdHMgcmV0dXJuIGFuIGFycmF5XG5cdFx0XHRcdFx0XHR2YWx1ZXMucHVzaCggdmFsdWUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gdmFsdWVzO1xuXHRcdFx0fSxcblxuXHRcdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7XG5cdFx0XHRcdHZhciBvcHRpb25TZXQsIG9wdGlvbixcblx0XHRcdFx0XHRvcHRpb25zID0gZWxlbS5vcHRpb25zLFxuXHRcdFx0XHRcdHZhbHVlcyA9IGpRdWVyeS5tYWtlQXJyYXkoIHZhbHVlICksXG5cdFx0XHRcdFx0aSA9IG9wdGlvbnMubGVuZ3RoO1xuXG5cdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdG9wdGlvbiA9IG9wdGlvbnNbIGkgXTtcblxuXHRcdFx0XHRcdC8qIGVzbGludC1kaXNhYmxlIG5vLWNvbmQtYXNzaWduICovXG5cblx0XHRcdFx0XHRpZiAoIG9wdGlvbi5zZWxlY3RlZCA9XG5cdFx0XHRcdFx0XHRqUXVlcnkuaW5BcnJheSggalF1ZXJ5LnZhbEhvb2tzLm9wdGlvbi5nZXQoIG9wdGlvbiApLCB2YWx1ZXMgKSA+IC0xXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRvcHRpb25TZXQgPSB0cnVlO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8qIGVzbGludC1lbmFibGUgbm8tY29uZC1hc3NpZ24gKi9cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEZvcmNlIGJyb3dzZXJzIHRvIGJlaGF2ZSBjb25zaXN0ZW50bHkgd2hlbiBub24tbWF0Y2hpbmcgdmFsdWUgaXMgc2V0XG5cdFx0XHRcdGlmICggIW9wdGlvblNldCApIHtcblx0XHRcdFx0XHRlbGVtLnNlbGVjdGVkSW5kZXggPSAtMTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdmFsdWVzO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufSApO1xuXG4vLyBSYWRpb3MgYW5kIGNoZWNrYm94ZXMgZ2V0dGVyL3NldHRlclxualF1ZXJ5LmVhY2goIFsgXCJyYWRpb1wiLCBcImNoZWNrYm94XCIgXSwgZnVuY3Rpb24oKSB7XG5cdGpRdWVyeS52YWxIb29rc1sgdGhpcyBdID0ge1xuXHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdFx0aWYgKCBBcnJheS5pc0FycmF5KCB2YWx1ZSApICkge1xuXHRcdFx0XHRyZXR1cm4gKCBlbGVtLmNoZWNrZWQgPSBqUXVlcnkuaW5BcnJheSggalF1ZXJ5KCBlbGVtICkudmFsKCksIHZhbHVlICkgPiAtMSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0aWYgKCAhc3VwcG9ydC5jaGVja09uICkge1xuXHRcdGpRdWVyeS52YWxIb29rc1sgdGhpcyBdLmdldCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCBcInZhbHVlXCIgKSA9PT0gbnVsbCA/IFwib25cIiA6IGVsZW0udmFsdWU7XG5cdFx0fTtcblx0fVxufSApO1xuXG5cblxuXG4vLyBSZXR1cm4galF1ZXJ5IGZvciBhdHRyaWJ1dGVzLW9ubHkgaW5jbHVzaW9uXG5cblxuc3VwcG9ydC5mb2N1c2luID0gXCJvbmZvY3VzaW5cIiBpbiB3aW5kb3c7XG5cblxudmFyIHJmb2N1c01vcnBoID0gL14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLFxuXHRzdG9wUHJvcGFnYXRpb25DYWxsYmFjayA9IGZ1bmN0aW9uKCBlICkge1xuXHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdH07XG5cbmpRdWVyeS5leHRlbmQoIGpRdWVyeS5ldmVudCwge1xuXG5cdHRyaWdnZXI6IGZ1bmN0aW9uKCBldmVudCwgZGF0YSwgZWxlbSwgb25seUhhbmRsZXJzICkge1xuXG5cdFx0dmFyIGksIGN1ciwgdG1wLCBidWJibGVUeXBlLCBvbnR5cGUsIGhhbmRsZSwgc3BlY2lhbCwgbGFzdEVsZW1lbnQsXG5cdFx0XHRldmVudFBhdGggPSBbIGVsZW0gfHwgZG9jdW1lbnQgXSxcblx0XHRcdHR5cGUgPSBoYXNPd24uY2FsbCggZXZlbnQsIFwidHlwZVwiICkgPyBldmVudC50eXBlIDogZXZlbnQsXG5cdFx0XHRuYW1lc3BhY2VzID0gaGFzT3duLmNhbGwoIGV2ZW50LCBcIm5hbWVzcGFjZVwiICkgPyBldmVudC5uYW1lc3BhY2Uuc3BsaXQoIFwiLlwiICkgOiBbXTtcblxuXHRcdGN1ciA9IGxhc3RFbGVtZW50ID0gdG1wID0gZWxlbSA9IGVsZW0gfHwgZG9jdW1lbnQ7XG5cblx0XHQvLyBEb24ndCBkbyBldmVudHMgb24gdGV4dCBhbmQgY29tbWVudCBub2Rlc1xuXHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMyB8fCBlbGVtLm5vZGVUeXBlID09PSA4ICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIGZvY3VzL2JsdXIgbW9ycGhzIHRvIGZvY3VzaW4vb3V0OyBlbnN1cmUgd2UncmUgbm90IGZpcmluZyB0aGVtIHJpZ2h0IG5vd1xuXHRcdGlmICggcmZvY3VzTW9ycGgudGVzdCggdHlwZSArIGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgKSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoIHR5cGUuaW5kZXhPZiggXCIuXCIgKSA+IC0xICkge1xuXG5cdFx0XHQvLyBOYW1lc3BhY2VkIHRyaWdnZXI7IGNyZWF0ZSBhIHJlZ2V4cCB0byBtYXRjaCBldmVudCB0eXBlIGluIGhhbmRsZSgpXG5cdFx0XHRuYW1lc3BhY2VzID0gdHlwZS5zcGxpdCggXCIuXCIgKTtcblx0XHRcdHR5cGUgPSBuYW1lc3BhY2VzLnNoaWZ0KCk7XG5cdFx0XHRuYW1lc3BhY2VzLnNvcnQoKTtcblx0XHR9XG5cdFx0b250eXBlID0gdHlwZS5pbmRleE9mKCBcIjpcIiApIDwgMCAmJiBcIm9uXCIgKyB0eXBlO1xuXG5cdFx0Ly8gQ2FsbGVyIGNhbiBwYXNzIGluIGEgalF1ZXJ5LkV2ZW50IG9iamVjdCwgT2JqZWN0LCBvciBqdXN0IGFuIGV2ZW50IHR5cGUgc3RyaW5nXG5cdFx0ZXZlbnQgPSBldmVudFsgalF1ZXJ5LmV4cGFuZG8gXSA/XG5cdFx0XHRldmVudCA6XG5cdFx0XHRuZXcgalF1ZXJ5LkV2ZW50KCB0eXBlLCB0eXBlb2YgZXZlbnQgPT09IFwib2JqZWN0XCIgJiYgZXZlbnQgKTtcblxuXHRcdC8vIFRyaWdnZXIgYml0bWFzazogJiAxIGZvciBuYXRpdmUgaGFuZGxlcnM7ICYgMiBmb3IgalF1ZXJ5IChhbHdheXMgdHJ1ZSlcblx0XHRldmVudC5pc1RyaWdnZXIgPSBvbmx5SGFuZGxlcnMgPyAyIDogMztcblx0XHRldmVudC5uYW1lc3BhY2UgPSBuYW1lc3BhY2VzLmpvaW4oIFwiLlwiICk7XG5cdFx0ZXZlbnQucm5hbWVzcGFjZSA9IGV2ZW50Lm5hbWVzcGFjZSA/XG5cdFx0XHRuZXcgUmVnRXhwKCBcIihefFxcXFwuKVwiICsgbmFtZXNwYWNlcy5qb2luKCBcIlxcXFwuKD86LipcXFxcLnwpXCIgKSArIFwiKFxcXFwufCQpXCIgKSA6XG5cdFx0XHRudWxsO1xuXG5cdFx0Ly8gQ2xlYW4gdXAgdGhlIGV2ZW50IGluIGNhc2UgaXQgaXMgYmVpbmcgcmV1c2VkXG5cdFx0ZXZlbnQucmVzdWx0ID0gdW5kZWZpbmVkO1xuXHRcdGlmICggIWV2ZW50LnRhcmdldCApIHtcblx0XHRcdGV2ZW50LnRhcmdldCA9IGVsZW07XG5cdFx0fVxuXG5cdFx0Ly8gQ2xvbmUgYW55IGluY29taW5nIGRhdGEgYW5kIHByZXBlbmQgdGhlIGV2ZW50LCBjcmVhdGluZyB0aGUgaGFuZGxlciBhcmcgbGlzdFxuXHRcdGRhdGEgPSBkYXRhID09IG51bGwgP1xuXHRcdFx0WyBldmVudCBdIDpcblx0XHRcdGpRdWVyeS5tYWtlQXJyYXkoIGRhdGEsIFsgZXZlbnQgXSApO1xuXG5cdFx0Ly8gQWxsb3cgc3BlY2lhbCBldmVudHMgdG8gZHJhdyBvdXRzaWRlIHRoZSBsaW5lc1xuXHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xuXHRcdGlmICggIW9ubHlIYW5kbGVycyAmJiBzcGVjaWFsLnRyaWdnZXIgJiYgc3BlY2lhbC50cmlnZ2VyLmFwcGx5KCBlbGVtLCBkYXRhICkgPT09IGZhbHNlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIERldGVybWluZSBldmVudCBwcm9wYWdhdGlvbiBwYXRoIGluIGFkdmFuY2UsIHBlciBXM0MgZXZlbnRzIHNwZWMgKHRyYWMtOTk1MSlcblx0XHQvLyBCdWJibGUgdXAgdG8gZG9jdW1lbnQsIHRoZW4gdG8gd2luZG93OyB3YXRjaCBmb3IgYSBnbG9iYWwgb3duZXJEb2N1bWVudCB2YXIgKHRyYWMtOTcyNClcblx0XHRpZiAoICFvbmx5SGFuZGxlcnMgJiYgIXNwZWNpYWwubm9CdWJibGUgJiYgIWlzV2luZG93KCBlbGVtICkgKSB7XG5cblx0XHRcdGJ1YmJsZVR5cGUgPSBzcGVjaWFsLmRlbGVnYXRlVHlwZSB8fCB0eXBlO1xuXHRcdFx0aWYgKCAhcmZvY3VzTW9ycGgudGVzdCggYnViYmxlVHlwZSArIHR5cGUgKSApIHtcblx0XHRcdFx0Y3VyID0gY3VyLnBhcmVudE5vZGU7XG5cdFx0XHR9XG5cdFx0XHRmb3IgKCA7IGN1cjsgY3VyID0gY3VyLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdGV2ZW50UGF0aC5wdXNoKCBjdXIgKTtcblx0XHRcdFx0dG1wID0gY3VyO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBPbmx5IGFkZCB3aW5kb3cgaWYgd2UgZ290IHRvIGRvY3VtZW50IChlLmcuLCBub3QgcGxhaW4gb2JqIG9yIGRldGFjaGVkIERPTSlcblx0XHRcdGlmICggdG1wID09PSAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudCApICkge1xuXHRcdFx0XHRldmVudFBhdGgucHVzaCggdG1wLmRlZmF1bHRWaWV3IHx8IHRtcC5wYXJlbnRXaW5kb3cgfHwgd2luZG93ICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gRmlyZSBoYW5kbGVycyBvbiB0aGUgZXZlbnQgcGF0aFxuXHRcdGkgPSAwO1xuXHRcdHdoaWxlICggKCBjdXIgPSBldmVudFBhdGhbIGkrKyBdICkgJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cdFx0XHRsYXN0RWxlbWVudCA9IGN1cjtcblx0XHRcdGV2ZW50LnR5cGUgPSBpID4gMSA/XG5cdFx0XHRcdGJ1YmJsZVR5cGUgOlxuXHRcdFx0XHRzcGVjaWFsLmJpbmRUeXBlIHx8IHR5cGU7XG5cblx0XHRcdC8vIGpRdWVyeSBoYW5kbGVyXG5cdFx0XHRoYW5kbGUgPSAoIGRhdGFQcml2LmdldCggY3VyLCBcImV2ZW50c1wiICkgfHwgT2JqZWN0LmNyZWF0ZSggbnVsbCApIClbIGV2ZW50LnR5cGUgXSAmJlxuXHRcdFx0XHRkYXRhUHJpdi5nZXQoIGN1ciwgXCJoYW5kbGVcIiApO1xuXHRcdFx0aWYgKCBoYW5kbGUgKSB7XG5cdFx0XHRcdGhhbmRsZS5hcHBseSggY3VyLCBkYXRhICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE5hdGl2ZSBoYW5kbGVyXG5cdFx0XHRoYW5kbGUgPSBvbnR5cGUgJiYgY3VyWyBvbnR5cGUgXTtcblx0XHRcdGlmICggaGFuZGxlICYmIGhhbmRsZS5hcHBseSAmJiBhY2NlcHREYXRhKCBjdXIgKSApIHtcblx0XHRcdFx0ZXZlbnQucmVzdWx0ID0gaGFuZGxlLmFwcGx5KCBjdXIsIGRhdGEgKTtcblx0XHRcdFx0aWYgKCBldmVudC5yZXN1bHQgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0ZXZlbnQudHlwZSA9IHR5cGU7XG5cblx0XHQvLyBJZiBub2JvZHkgcHJldmVudGVkIHRoZSBkZWZhdWx0IGFjdGlvbiwgZG8gaXQgbm93XG5cdFx0aWYgKCAhb25seUhhbmRsZXJzICYmICFldmVudC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSApIHtcblxuXHRcdFx0aWYgKCAoICFzcGVjaWFsLl9kZWZhdWx0IHx8XG5cdFx0XHRcdHNwZWNpYWwuX2RlZmF1bHQuYXBwbHkoIGV2ZW50UGF0aC5wb3AoKSwgZGF0YSApID09PSBmYWxzZSApICYmXG5cdFx0XHRcdGFjY2VwdERhdGEoIGVsZW0gKSApIHtcblxuXHRcdFx0XHQvLyBDYWxsIGEgbmF0aXZlIERPTSBtZXRob2Qgb24gdGhlIHRhcmdldCB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGV2ZW50LlxuXHRcdFx0XHQvLyBEb24ndCBkbyBkZWZhdWx0IGFjdGlvbnMgb24gd2luZG93LCB0aGF0J3Mgd2hlcmUgZ2xvYmFsIHZhcmlhYmxlcyBiZSAodHJhYy02MTcwKVxuXHRcdFx0XHRpZiAoIG9udHlwZSAmJiBpc0Z1bmN0aW9uKCBlbGVtWyB0eXBlIF0gKSAmJiAhaXNXaW5kb3coIGVsZW0gKSApIHtcblxuXHRcdFx0XHRcdC8vIERvbid0IHJlLXRyaWdnZXIgYW4gb25GT08gZXZlbnQgd2hlbiB3ZSBjYWxsIGl0cyBGT08oKSBtZXRob2Rcblx0XHRcdFx0XHR0bXAgPSBlbGVtWyBvbnR5cGUgXTtcblxuXHRcdFx0XHRcdGlmICggdG1wICkge1xuXHRcdFx0XHRcdFx0ZWxlbVsgb250eXBlIF0gPSBudWxsO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFByZXZlbnQgcmUtdHJpZ2dlcmluZyBvZiB0aGUgc2FtZSBldmVudCwgc2luY2Ugd2UgYWxyZWFkeSBidWJibGVkIGl0IGFib3ZlXG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCA9IHR5cGU7XG5cblx0XHRcdFx0XHRpZiAoIGV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cdFx0XHRcdFx0XHRsYXN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCB0eXBlLCBzdG9wUHJvcGFnYXRpb25DYWxsYmFjayApO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGVsZW1bIHR5cGUgXSgpO1xuXG5cdFx0XHRcdFx0aWYgKCBldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXHRcdFx0XHRcdFx0bGFzdEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciggdHlwZSwgc3RvcFByb3BhZ2F0aW9uQ2FsbGJhY2sgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlcmVkID0gdW5kZWZpbmVkO1xuXG5cdFx0XHRcdFx0aWYgKCB0bXAgKSB7XG5cdFx0XHRcdFx0XHRlbGVtWyBvbnR5cGUgXSA9IHRtcDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZXZlbnQucmVzdWx0O1xuXHR9LFxuXG5cdC8vIFBpZ2d5YmFjayBvbiBhIGRvbm9yIGV2ZW50IHRvIHNpbXVsYXRlIGEgZGlmZmVyZW50IG9uZVxuXHQvLyBVc2VkIG9ubHkgZm9yIGBmb2N1cyhpbiB8IG91dClgIGV2ZW50c1xuXHRzaW11bGF0ZTogZnVuY3Rpb24oIHR5cGUsIGVsZW0sIGV2ZW50ICkge1xuXHRcdHZhciBlID0galF1ZXJ5LmV4dGVuZChcblx0XHRcdG5ldyBqUXVlcnkuRXZlbnQoKSxcblx0XHRcdGV2ZW50LFxuXHRcdFx0e1xuXHRcdFx0XHR0eXBlOiB0eXBlLFxuXHRcdFx0XHRpc1NpbXVsYXRlZDogdHJ1ZVxuXHRcdFx0fVxuXHRcdCk7XG5cblx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlciggZSwgbnVsbCwgZWxlbSApO1xuXHR9XG5cbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXG5cdHRyaWdnZXI6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIHR5cGUsIGRhdGEsIHRoaXMgKTtcblx0XHR9ICk7XG5cdH0sXG5cdHRyaWdnZXJIYW5kbGVyOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHtcblx0XHR2YXIgZWxlbSA9IHRoaXNbIDAgXTtcblx0XHRpZiAoIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LmV2ZW50LnRyaWdnZXIoIHR5cGUsIGRhdGEsIGVsZW0sIHRydWUgKTtcblx0XHR9XG5cdH1cbn0gKTtcblxuXG4vLyBTdXBwb3J0OiBGaXJlZm94IDw9NDRcbi8vIEZpcmVmb3ggZG9lc24ndCBoYXZlIGZvY3VzKGluIHwgb3V0KSBldmVudHNcbi8vIFJlbGF0ZWQgdGlja2V0IC0gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg3Nzg3XG4vL1xuLy8gU3VwcG9ydDogQ2hyb21lIDw9NDggLSA0OSwgU2FmYXJpIDw9OS4wIC0gOS4xXG4vLyBmb2N1cyhpbiB8IG91dCkgZXZlbnRzIGZpcmUgYWZ0ZXIgZm9jdXMgJiBibHVyIGV2ZW50cyxcbi8vIHdoaWNoIGlzIHNwZWMgdmlvbGF0aW9uIC0gaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLyNldmVudHMtZm9jdXNldmVudC1ldmVudC1vcmRlclxuLy8gUmVsYXRlZCB0aWNrZXQgLSBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00NDk4NTdcbmlmICggIXN1cHBvcnQuZm9jdXNpbiApIHtcblx0alF1ZXJ5LmVhY2goIHsgZm9jdXM6IFwiZm9jdXNpblwiLCBibHVyOiBcImZvY3Vzb3V0XCIgfSwgZnVuY3Rpb24oIG9yaWcsIGZpeCApIHtcblxuXHRcdC8vIEF0dGFjaCBhIHNpbmdsZSBjYXB0dXJpbmcgaGFuZGxlciBvbiB0aGUgZG9jdW1lbnQgd2hpbGUgc29tZW9uZSB3YW50cyBmb2N1c2luL2ZvY3Vzb3V0XG5cdFx0dmFyIGhhbmRsZXIgPSBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQuc2ltdWxhdGUoIGZpeCwgZXZlbnQudGFyZ2V0LCBqUXVlcnkuZXZlbnQuZml4KCBldmVudCApICk7XG5cdFx0fTtcblxuXHRcdGpRdWVyeS5ldmVudC5zcGVjaWFsWyBmaXggXSA9IHtcblx0XHRcdHNldHVwOiBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHQvLyBIYW5kbGU6IHJlZ3VsYXIgbm9kZXMgKHZpYSBgdGhpcy5vd25lckRvY3VtZW50YCksIHdpbmRvd1xuXHRcdFx0XHQvLyAodmlhIGB0aGlzLmRvY3VtZW50YCkgJiBkb2N1bWVudCAodmlhIGB0aGlzYCkuXG5cdFx0XHRcdHZhciBkb2MgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcy5kb2N1bWVudCB8fCB0aGlzLFxuXHRcdFx0XHRcdGF0dGFjaGVzID0gZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCApO1xuXG5cdFx0XHRcdGlmICggIWF0dGFjaGVzICkge1xuXHRcdFx0XHRcdGRvYy5hZGRFdmVudExpc3RlbmVyKCBvcmlnLCBoYW5kbGVyLCB0cnVlICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCwgKCBhdHRhY2hlcyB8fCAwICkgKyAxICk7XG5cdFx0XHR9LFxuXHRcdFx0dGVhcmRvd246IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgZG9jID0gdGhpcy5vd25lckRvY3VtZW50IHx8IHRoaXMuZG9jdW1lbnQgfHwgdGhpcyxcblx0XHRcdFx0XHRhdHRhY2hlcyA9IGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXggKSAtIDE7XG5cblx0XHRcdFx0aWYgKCAhYXR0YWNoZXMgKSB7XG5cdFx0XHRcdFx0ZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoIG9yaWcsIGhhbmRsZXIsIHRydWUgKTtcblx0XHRcdFx0XHRkYXRhUHJpdi5yZW1vdmUoIGRvYywgZml4ICk7XG5cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRkYXRhUHJpdi5hY2Nlc3MoIGRvYywgZml4LCBhdHRhY2hlcyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0fSApO1xufVxudmFyIGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uO1xuXG52YXIgbm9uY2UgPSB7IGd1aWQ6IERhdGUubm93KCkgfTtcblxudmFyIHJxdWVyeSA9ICggL1xcPy8gKTtcblxuXG5cbi8vIENyb3NzLWJyb3dzZXIgeG1sIHBhcnNpbmdcbmpRdWVyeS5wYXJzZVhNTCA9IGZ1bmN0aW9uKCBkYXRhICkge1xuXHR2YXIgeG1sLCBwYXJzZXJFcnJvckVsZW07XG5cdGlmICggIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHQvLyBTdXBwb3J0OiBJRSA5IC0gMTEgb25seVxuXHQvLyBJRSB0aHJvd3Mgb24gcGFyc2VGcm9tU3RyaW5nIHdpdGggaW52YWxpZCBpbnB1dC5cblx0dHJ5IHtcblx0XHR4bWwgPSAoIG5ldyB3aW5kb3cuRE9NUGFyc2VyKCkgKS5wYXJzZUZyb21TdHJpbmcoIGRhdGEsIFwidGV4dC94bWxcIiApO1xuXHR9IGNhdGNoICggZSApIHt9XG5cblx0cGFyc2VyRXJyb3JFbGVtID0geG1sICYmIHhtbC5nZXRFbGVtZW50c0J5VGFnTmFtZSggXCJwYXJzZXJlcnJvclwiIClbIDAgXTtcblx0aWYgKCAheG1sIHx8IHBhcnNlckVycm9yRWxlbSApIHtcblx0XHRqUXVlcnkuZXJyb3IoIFwiSW52YWxpZCBYTUw6IFwiICsgKFxuXHRcdFx0cGFyc2VyRXJyb3JFbGVtID9cblx0XHRcdFx0alF1ZXJ5Lm1hcCggcGFyc2VyRXJyb3JFbGVtLmNoaWxkTm9kZXMsIGZ1bmN0aW9uKCBlbCApIHtcblx0XHRcdFx0XHRyZXR1cm4gZWwudGV4dENvbnRlbnQ7XG5cdFx0XHRcdH0gKS5qb2luKCBcIlxcblwiICkgOlxuXHRcdFx0XHRkYXRhXG5cdFx0KSApO1xuXHR9XG5cdHJldHVybiB4bWw7XG59O1xuXG5cbnZhclxuXHRyYnJhY2tldCA9IC9cXFtcXF0kLyxcblx0ckNSTEYgPSAvXFxyP1xcbi9nLFxuXHRyc3VibWl0dGVyVHlwZXMgPSAvXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksXG5cdHJzdWJtaXR0YWJsZSA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTtcblxuZnVuY3Rpb24gYnVpbGRQYXJhbXMoIHByZWZpeCwgb2JqLCB0cmFkaXRpb25hbCwgYWRkICkge1xuXHR2YXIgbmFtZTtcblxuXHRpZiAoIEFycmF5LmlzQXJyYXkoIG9iaiApICkge1xuXG5cdFx0Ly8gU2VyaWFsaXplIGFycmF5IGl0ZW0uXG5cdFx0alF1ZXJ5LmVhY2goIG9iaiwgZnVuY3Rpb24oIGksIHYgKSB7XG5cdFx0XHRpZiAoIHRyYWRpdGlvbmFsIHx8IHJicmFja2V0LnRlc3QoIHByZWZpeCApICkge1xuXG5cdFx0XHRcdC8vIFRyZWF0IGVhY2ggYXJyYXkgaXRlbSBhcyBhIHNjYWxhci5cblx0XHRcdFx0YWRkKCBwcmVmaXgsIHYgKTtcblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHQvLyBJdGVtIGlzIG5vbi1zY2FsYXIgKGFycmF5IG9yIG9iamVjdCksIGVuY29kZSBpdHMgbnVtZXJpYyBpbmRleC5cblx0XHRcdFx0YnVpbGRQYXJhbXMoXG5cdFx0XHRcdFx0cHJlZml4ICsgXCJbXCIgKyAoIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmIHYgIT0gbnVsbCA/IGkgOiBcIlwiICkgKyBcIl1cIixcblx0XHRcdFx0XHR2LFxuXHRcdFx0XHRcdHRyYWRpdGlvbmFsLFxuXHRcdFx0XHRcdGFkZFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHR9IGVsc2UgaWYgKCAhdHJhZGl0aW9uYWwgJiYgdG9UeXBlKCBvYmogKSA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdC8vIFNlcmlhbGl6ZSBvYmplY3QgaXRlbS5cblx0XHRmb3IgKCBuYW1lIGluIG9iaiApIHtcblx0XHRcdGJ1aWxkUGFyYW1zKCBwcmVmaXggKyBcIltcIiArIG5hbWUgKyBcIl1cIiwgb2JqWyBuYW1lIF0sIHRyYWRpdGlvbmFsLCBhZGQgKTtcblx0XHR9XG5cblx0fSBlbHNlIHtcblxuXHRcdC8vIFNlcmlhbGl6ZSBzY2FsYXIgaXRlbS5cblx0XHRhZGQoIHByZWZpeCwgb2JqICk7XG5cdH1cbn1cblxuLy8gU2VyaWFsaXplIGFuIGFycmF5IG9mIGZvcm0gZWxlbWVudHMgb3IgYSBzZXQgb2Zcbi8vIGtleS92YWx1ZXMgaW50byBhIHF1ZXJ5IHN0cmluZ1xualF1ZXJ5LnBhcmFtID0gZnVuY3Rpb24oIGEsIHRyYWRpdGlvbmFsICkge1xuXHR2YXIgcHJlZml4LFxuXHRcdHMgPSBbXSxcblx0XHRhZGQgPSBmdW5jdGlvbigga2V5LCB2YWx1ZU9yRnVuY3Rpb24gKSB7XG5cblx0XHRcdC8vIElmIHZhbHVlIGlzIGEgZnVuY3Rpb24sIGludm9rZSBpdCBhbmQgdXNlIGl0cyByZXR1cm4gdmFsdWVcblx0XHRcdHZhciB2YWx1ZSA9IGlzRnVuY3Rpb24oIHZhbHVlT3JGdW5jdGlvbiApID9cblx0XHRcdFx0dmFsdWVPckZ1bmN0aW9uKCkgOlxuXHRcdFx0XHR2YWx1ZU9yRnVuY3Rpb247XG5cblx0XHRcdHNbIHMubGVuZ3RoIF0gPSBlbmNvZGVVUklDb21wb25lbnQoIGtleSApICsgXCI9XCIgK1xuXHRcdFx0XHRlbmNvZGVVUklDb21wb25lbnQoIHZhbHVlID09IG51bGwgPyBcIlwiIDogdmFsdWUgKTtcblx0XHR9O1xuXG5cdGlmICggYSA9PSBudWxsICkge1xuXHRcdHJldHVybiBcIlwiO1xuXHR9XG5cblx0Ly8gSWYgYW4gYXJyYXkgd2FzIHBhc3NlZCBpbiwgYXNzdW1lIHRoYXQgaXQgaXMgYW4gYXJyYXkgb2YgZm9ybSBlbGVtZW50cy5cblx0aWYgKCBBcnJheS5pc0FycmF5KCBhICkgfHwgKCBhLmpxdWVyeSAmJiAhalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGEgKSApICkge1xuXG5cdFx0Ly8gU2VyaWFsaXplIHRoZSBmb3JtIGVsZW1lbnRzXG5cdFx0alF1ZXJ5LmVhY2goIGEsIGZ1bmN0aW9uKCkge1xuXHRcdFx0YWRkKCB0aGlzLm5hbWUsIHRoaXMudmFsdWUgKTtcblx0XHR9ICk7XG5cblx0fSBlbHNlIHtcblxuXHRcdC8vIElmIHRyYWRpdGlvbmFsLCBlbmNvZGUgdGhlIFwib2xkXCIgd2F5ICh0aGUgd2F5IDEuMy4yIG9yIG9sZGVyXG5cdFx0Ly8gZGlkIGl0KSwgb3RoZXJ3aXNlIGVuY29kZSBwYXJhbXMgcmVjdXJzaXZlbHkuXG5cdFx0Zm9yICggcHJlZml4IGluIGEgKSB7XG5cdFx0XHRidWlsZFBhcmFtcyggcHJlZml4LCBhWyBwcmVmaXggXSwgdHJhZGl0aW9uYWwsIGFkZCApO1xuXHRcdH1cblx0fVxuXG5cdC8vIFJldHVybiB0aGUgcmVzdWx0aW5nIHNlcmlhbGl6YXRpb25cblx0cmV0dXJuIHMuam9pbiggXCImXCIgKTtcbn07XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0c2VyaWFsaXplOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4galF1ZXJ5LnBhcmFtKCB0aGlzLnNlcmlhbGl6ZUFycmF5KCkgKTtcblx0fSxcblx0c2VyaWFsaXplQXJyYXk6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLm1hcCggZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8vIENhbiBhZGQgcHJvcEhvb2sgZm9yIFwiZWxlbWVudHNcIiB0byBmaWx0ZXIgb3IgYWRkIGZvcm0gZWxlbWVudHNcblx0XHRcdHZhciBlbGVtZW50cyA9IGpRdWVyeS5wcm9wKCB0aGlzLCBcImVsZW1lbnRzXCIgKTtcblx0XHRcdHJldHVybiBlbGVtZW50cyA/IGpRdWVyeS5tYWtlQXJyYXkoIGVsZW1lbnRzICkgOiB0aGlzO1xuXHRcdH0gKS5maWx0ZXIoIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIHR5cGUgPSB0aGlzLnR5cGU7XG5cblx0XHRcdC8vIFVzZSAuaXMoIFwiOmRpc2FibGVkXCIgKSBzbyB0aGF0IGZpZWxkc2V0W2Rpc2FibGVkXSB3b3Jrc1xuXHRcdFx0cmV0dXJuIHRoaXMubmFtZSAmJiAhalF1ZXJ5KCB0aGlzICkuaXMoIFwiOmRpc2FibGVkXCIgKSAmJlxuXHRcdFx0XHRyc3VibWl0dGFibGUudGVzdCggdGhpcy5ub2RlTmFtZSApICYmICFyc3VibWl0dGVyVHlwZXMudGVzdCggdHlwZSApICYmXG5cdFx0XHRcdCggdGhpcy5jaGVja2VkIHx8ICFyY2hlY2thYmxlVHlwZS50ZXN0KCB0eXBlICkgKTtcblx0XHR9ICkubWFwKCBmdW5jdGlvbiggX2ksIGVsZW0gKSB7XG5cdFx0XHR2YXIgdmFsID0galF1ZXJ5KCB0aGlzICkudmFsKCk7XG5cblx0XHRcdGlmICggdmFsID09IG51bGwgKSB7XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIEFycmF5LmlzQXJyYXkoIHZhbCApICkge1xuXHRcdFx0XHRyZXR1cm4galF1ZXJ5Lm1hcCggdmFsLCBmdW5jdGlvbiggdmFsICkge1xuXHRcdFx0XHRcdHJldHVybiB7IG5hbWU6IGVsZW0ubmFtZSwgdmFsdWU6IHZhbC5yZXBsYWNlKCByQ1JMRiwgXCJcXHJcXG5cIiApIH07XG5cdFx0XHRcdH0gKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHsgbmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCBcIlxcclxcblwiICkgfTtcblx0XHR9ICkuZ2V0KCk7XG5cdH1cbn0gKTtcblxuXG52YXJcblx0cjIwID0gLyUyMC9nLFxuXHRyaGFzaCA9IC8jLiokLyxcblx0cmFudGlDYWNoZSA9IC8oWz8mXSlfPVteJl0qLyxcblx0cmhlYWRlcnMgPSAvXiguKj8pOlsgXFx0XSooW15cXHJcXG5dKikkL21nLFxuXG5cdC8vIHRyYWMtNzY1MywgdHJhYy04MTI1LCB0cmFjLTgxNTI6IGxvY2FsIHByb3RvY29sIGRldGVjdGlvblxuXHRybG9jYWxQcm90b2NvbCA9IC9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLFxuXHRybm9Db250ZW50ID0gL14oPzpHRVR8SEVBRCkkLyxcblx0cnByb3RvY29sID0gL15cXC9cXC8vLFxuXG5cdC8qIFByZWZpbHRlcnNcblx0ICogMSkgVGhleSBhcmUgdXNlZnVsIHRvIGludHJvZHVjZSBjdXN0b20gZGF0YVR5cGVzIChzZWUgYWpheC9qc29ucC5qcyBmb3IgYW4gZXhhbXBsZSlcblx0ICogMikgVGhlc2UgYXJlIGNhbGxlZDpcblx0ICogICAgLSBCRUZPUkUgYXNraW5nIGZvciBhIHRyYW5zcG9ydFxuXHQgKiAgICAtIEFGVEVSIHBhcmFtIHNlcmlhbGl6YXRpb24gKHMuZGF0YSBpcyBhIHN0cmluZyBpZiBzLnByb2Nlc3NEYXRhIGlzIHRydWUpXG5cdCAqIDMpIGtleSBpcyB0aGUgZGF0YVR5cGVcblx0ICogNCkgdGhlIGNhdGNoYWxsIHN5bWJvbCBcIipcIiBjYW4gYmUgdXNlZFxuXHQgKiA1KSBleGVjdXRpb24gd2lsbCBzdGFydCB3aXRoIHRyYW5zcG9ydCBkYXRhVHlwZSBhbmQgVEhFTiBjb250aW51ZSBkb3duIHRvIFwiKlwiIGlmIG5lZWRlZFxuXHQgKi9cblx0cHJlZmlsdGVycyA9IHt9LFxuXG5cdC8qIFRyYW5zcG9ydHMgYmluZGluZ3Ncblx0ICogMSkga2V5IGlzIHRoZSBkYXRhVHlwZVxuXHQgKiAyKSB0aGUgY2F0Y2hhbGwgc3ltYm9sIFwiKlwiIGNhbiBiZSB1c2VkXG5cdCAqIDMpIHNlbGVjdGlvbiB3aWxsIHN0YXJ0IHdpdGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGdvIHRvIFwiKlwiIGlmIG5lZWRlZFxuXHQgKi9cblx0dHJhbnNwb3J0cyA9IHt9LFxuXG5cdC8vIEF2b2lkIGNvbW1lbnQtcHJvbG9nIGNoYXIgc2VxdWVuY2UgKHRyYWMtMTAwOTgpOyBtdXN0IGFwcGVhc2UgbGludCBhbmQgZXZhZGUgY29tcHJlc3Npb25cblx0YWxsVHlwZXMgPSBcIiovXCIuY29uY2F0KCBcIipcIiApLFxuXG5cdC8vIEFuY2hvciB0YWcgZm9yIHBhcnNpbmcgdGhlIGRvY3VtZW50IG9yaWdpblxuXHRvcmlnaW5BbmNob3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImFcIiApO1xuXG5vcmlnaW5BbmNob3IuaHJlZiA9IGxvY2F0aW9uLmhyZWY7XG5cbi8vIEJhc2UgXCJjb25zdHJ1Y3RvclwiIGZvciBqUXVlcnkuYWpheFByZWZpbHRlciBhbmQgalF1ZXJ5LmFqYXhUcmFuc3BvcnRcbmZ1bmN0aW9uIGFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyggc3RydWN0dXJlICkge1xuXG5cdC8vIGRhdGFUeXBlRXhwcmVzc2lvbiBpcyBvcHRpb25hbCBhbmQgZGVmYXVsdHMgdG8gXCIqXCJcblx0cmV0dXJuIGZ1bmN0aW9uKCBkYXRhVHlwZUV4cHJlc3Npb24sIGZ1bmMgKSB7XG5cblx0XHRpZiAoIHR5cGVvZiBkYXRhVHlwZUV4cHJlc3Npb24gIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRmdW5jID0gZGF0YVR5cGVFeHByZXNzaW9uO1xuXHRcdFx0ZGF0YVR5cGVFeHByZXNzaW9uID0gXCIqXCI7XG5cdFx0fVxuXG5cdFx0dmFyIGRhdGFUeXBlLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRkYXRhVHlwZXMgPSBkYXRhVHlwZUV4cHJlc3Npb24udG9Mb3dlckNhc2UoKS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdO1xuXG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBmdW5jICkgKSB7XG5cblx0XHRcdC8vIEZvciBlYWNoIGRhdGFUeXBlIGluIHRoZSBkYXRhVHlwZUV4cHJlc3Npb25cblx0XHRcdHdoaWxlICggKCBkYXRhVHlwZSA9IGRhdGFUeXBlc1sgaSsrIF0gKSApIHtcblxuXHRcdFx0XHQvLyBQcmVwZW5kIGlmIHJlcXVlc3RlZFxuXHRcdFx0XHRpZiAoIGRhdGFUeXBlWyAwIF0gPT09IFwiK1wiICkge1xuXHRcdFx0XHRcdGRhdGFUeXBlID0gZGF0YVR5cGUuc2xpY2UoIDEgKSB8fCBcIipcIjtcblx0XHRcdFx0XHQoIHN0cnVjdHVyZVsgZGF0YVR5cGUgXSA9IHN0cnVjdHVyZVsgZGF0YVR5cGUgXSB8fCBbXSApLnVuc2hpZnQoIGZ1bmMgKTtcblxuXHRcdFx0XHQvLyBPdGhlcndpc2UgYXBwZW5kXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0KCBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gPSBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10gKS5wdXNoKCBmdW5jICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH07XG59XG5cbi8vIEJhc2UgaW5zcGVjdGlvbiBmdW5jdGlvbiBmb3IgcHJlZmlsdGVycyBhbmQgdHJhbnNwb3J0c1xuZnVuY3Rpb24gaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHN0cnVjdHVyZSwgb3B0aW9ucywgb3JpZ2luYWxPcHRpb25zLCBqcVhIUiApIHtcblxuXHR2YXIgaW5zcGVjdGVkID0ge30sXG5cdFx0c2Vla2luZ1RyYW5zcG9ydCA9ICggc3RydWN0dXJlID09PSB0cmFuc3BvcnRzICk7XG5cblx0ZnVuY3Rpb24gaW5zcGVjdCggZGF0YVR5cGUgKSB7XG5cdFx0dmFyIHNlbGVjdGVkO1xuXHRcdGluc3BlY3RlZFsgZGF0YVR5cGUgXSA9IHRydWU7XG5cdFx0alF1ZXJ5LmVhY2goIHN0cnVjdHVyZVsgZGF0YVR5cGUgXSB8fCBbXSwgZnVuY3Rpb24oIF8sIHByZWZpbHRlck9yRmFjdG9yeSApIHtcblx0XHRcdHZhciBkYXRhVHlwZU9yVHJhbnNwb3J0ID0gcHJlZmlsdGVyT3JGYWN0b3J5KCBvcHRpb25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSICk7XG5cdFx0XHRpZiAoIHR5cGVvZiBkYXRhVHlwZU9yVHJhbnNwb3J0ID09PSBcInN0cmluZ1wiICYmXG5cdFx0XHRcdCFzZWVraW5nVHJhbnNwb3J0ICYmICFpbnNwZWN0ZWRbIGRhdGFUeXBlT3JUcmFuc3BvcnQgXSApIHtcblxuXHRcdFx0XHRvcHRpb25zLmRhdGFUeXBlcy51bnNoaWZ0KCBkYXRhVHlwZU9yVHJhbnNwb3J0ICk7XG5cdFx0XHRcdGluc3BlY3QoIGRhdGFUeXBlT3JUcmFuc3BvcnQgKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fSBlbHNlIGlmICggc2Vla2luZ1RyYW5zcG9ydCApIHtcblx0XHRcdFx0cmV0dXJuICEoIHNlbGVjdGVkID0gZGF0YVR5cGVPclRyYW5zcG9ydCApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0XHRyZXR1cm4gc2VsZWN0ZWQ7XG5cdH1cblxuXHRyZXR1cm4gaW5zcGVjdCggb3B0aW9ucy5kYXRhVHlwZXNbIDAgXSApIHx8ICFpbnNwZWN0ZWRbIFwiKlwiIF0gJiYgaW5zcGVjdCggXCIqXCIgKTtcbn1cblxuLy8gQSBzcGVjaWFsIGV4dGVuZCBmb3IgYWpheCBvcHRpb25zXG4vLyB0aGF0IHRha2VzIFwiZmxhdFwiIG9wdGlvbnMgKG5vdCB0byBiZSBkZWVwIGV4dGVuZGVkKVxuLy8gRml4ZXMgdHJhYy05ODg3XG5mdW5jdGlvbiBhamF4RXh0ZW5kKCB0YXJnZXQsIHNyYyApIHtcblx0dmFyIGtleSwgZGVlcCxcblx0XHRmbGF0T3B0aW9ucyA9IGpRdWVyeS5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnMgfHwge307XG5cblx0Zm9yICgga2V5IGluIHNyYyApIHtcblx0XHRpZiAoIHNyY1sga2V5IF0gIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdCggZmxhdE9wdGlvbnNbIGtleSBdID8gdGFyZ2V0IDogKCBkZWVwIHx8ICggZGVlcCA9IHt9ICkgKSApWyBrZXkgXSA9IHNyY1sga2V5IF07XG5cdFx0fVxuXHR9XG5cdGlmICggZGVlcCApIHtcblx0XHRqUXVlcnkuZXh0ZW5kKCB0cnVlLCB0YXJnZXQsIGRlZXAgKTtcblx0fVxuXG5cdHJldHVybiB0YXJnZXQ7XG59XG5cbi8qIEhhbmRsZXMgcmVzcG9uc2VzIHRvIGFuIGFqYXggcmVxdWVzdDpcbiAqIC0gZmluZHMgdGhlIHJpZ2h0IGRhdGFUeXBlIChtZWRpYXRlcyBiZXR3ZWVuIGNvbnRlbnQtdHlwZSBhbmQgZXhwZWN0ZWQgZGF0YVR5cGUpXG4gKiAtIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgcmVzcG9uc2VcbiAqL1xuZnVuY3Rpb24gYWpheEhhbmRsZVJlc3BvbnNlcyggcywganFYSFIsIHJlc3BvbnNlcyApIHtcblxuXHR2YXIgY3QsIHR5cGUsIGZpbmFsRGF0YVR5cGUsIGZpcnN0RGF0YVR5cGUsXG5cdFx0Y29udGVudHMgPSBzLmNvbnRlbnRzLFxuXHRcdGRhdGFUeXBlcyA9IHMuZGF0YVR5cGVzO1xuXG5cdC8vIFJlbW92ZSBhdXRvIGRhdGFUeXBlIGFuZCBnZXQgY29udGVudC10eXBlIGluIHRoZSBwcm9jZXNzXG5cdHdoaWxlICggZGF0YVR5cGVzWyAwIF0gPT09IFwiKlwiICkge1xuXHRcdGRhdGFUeXBlcy5zaGlmdCgpO1xuXHRcdGlmICggY3QgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdGN0ID0gcy5taW1lVHlwZSB8fCBqcVhIUi5nZXRSZXNwb25zZUhlYWRlciggXCJDb250ZW50LVR5cGVcIiApO1xuXHRcdH1cblx0fVxuXG5cdC8vIENoZWNrIGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGtub3duIGNvbnRlbnQtdHlwZVxuXHRpZiAoIGN0ICkge1xuXHRcdGZvciAoIHR5cGUgaW4gY29udGVudHMgKSB7XG5cdFx0XHRpZiAoIGNvbnRlbnRzWyB0eXBlIF0gJiYgY29udGVudHNbIHR5cGUgXS50ZXN0KCBjdCApICkge1xuXHRcdFx0XHRkYXRhVHlwZXMudW5zaGlmdCggdHlwZSApO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBDaGVjayB0byBzZWUgaWYgd2UgaGF2ZSBhIHJlc3BvbnNlIGZvciB0aGUgZXhwZWN0ZWQgZGF0YVR5cGVcblx0aWYgKCBkYXRhVHlwZXNbIDAgXSBpbiByZXNwb25zZXMgKSB7XG5cdFx0ZmluYWxEYXRhVHlwZSA9IGRhdGFUeXBlc1sgMCBdO1xuXHR9IGVsc2Uge1xuXG5cdFx0Ly8gVHJ5IGNvbnZlcnRpYmxlIGRhdGFUeXBlc1xuXHRcdGZvciAoIHR5cGUgaW4gcmVzcG9uc2VzICkge1xuXHRcdFx0aWYgKCAhZGF0YVR5cGVzWyAwIF0gfHwgcy5jb252ZXJ0ZXJzWyB0eXBlICsgXCIgXCIgKyBkYXRhVHlwZXNbIDAgXSBdICkge1xuXHRcdFx0XHRmaW5hbERhdGFUeXBlID0gdHlwZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZiAoICFmaXJzdERhdGFUeXBlICkge1xuXHRcdFx0XHRmaXJzdERhdGFUeXBlID0gdHlwZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBPciBqdXN0IHVzZSBmaXJzdCBvbmVcblx0XHRmaW5hbERhdGFUeXBlID0gZmluYWxEYXRhVHlwZSB8fCBmaXJzdERhdGFUeXBlO1xuXHR9XG5cblx0Ly8gSWYgd2UgZm91bmQgYSBkYXRhVHlwZVxuXHQvLyBXZSBhZGQgdGhlIGRhdGFUeXBlIHRvIHRoZSBsaXN0IGlmIG5lZWRlZFxuXHQvLyBhbmQgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlXG5cdGlmICggZmluYWxEYXRhVHlwZSApIHtcblx0XHRpZiAoIGZpbmFsRGF0YVR5cGUgIT09IGRhdGFUeXBlc1sgMCBdICkge1xuXHRcdFx0ZGF0YVR5cGVzLnVuc2hpZnQoIGZpbmFsRGF0YVR5cGUgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHJlc3BvbnNlc1sgZmluYWxEYXRhVHlwZSBdO1xuXHR9XG59XG5cbi8qIENoYWluIGNvbnZlcnNpb25zIGdpdmVuIHRoZSByZXF1ZXN0IGFuZCB0aGUgb3JpZ2luYWwgcmVzcG9uc2VcbiAqIEFsc28gc2V0cyB0aGUgcmVzcG9uc2VYWFggZmllbGRzIG9uIHRoZSBqcVhIUiBpbnN0YW5jZVxuICovXG5mdW5jdGlvbiBhamF4Q29udmVydCggcywgcmVzcG9uc2UsIGpxWEhSLCBpc1N1Y2Nlc3MgKSB7XG5cdHZhciBjb252MiwgY3VycmVudCwgY29udiwgdG1wLCBwcmV2LFxuXHRcdGNvbnZlcnRlcnMgPSB7fSxcblxuXHRcdC8vIFdvcmsgd2l0aCBhIGNvcHkgb2YgZGF0YVR5cGVzIGluIGNhc2Ugd2UgbmVlZCB0byBtb2RpZnkgaXQgZm9yIGNvbnZlcnNpb25cblx0XHRkYXRhVHlwZXMgPSBzLmRhdGFUeXBlcy5zbGljZSgpO1xuXG5cdC8vIENyZWF0ZSBjb252ZXJ0ZXJzIG1hcCB3aXRoIGxvd2VyY2FzZWQga2V5c1xuXHRpZiAoIGRhdGFUeXBlc1sgMSBdICkge1xuXHRcdGZvciAoIGNvbnYgaW4gcy5jb252ZXJ0ZXJzICkge1xuXHRcdFx0Y29udmVydGVyc1sgY29udi50b0xvd2VyQ2FzZSgpIF0gPSBzLmNvbnZlcnRlcnNbIGNvbnYgXTtcblx0XHR9XG5cdH1cblxuXHRjdXJyZW50ID0gZGF0YVR5cGVzLnNoaWZ0KCk7XG5cblx0Ly8gQ29udmVydCB0byBlYWNoIHNlcXVlbnRpYWwgZGF0YVR5cGVcblx0d2hpbGUgKCBjdXJyZW50ICkge1xuXG5cdFx0aWYgKCBzLnJlc3BvbnNlRmllbGRzWyBjdXJyZW50IF0gKSB7XG5cdFx0XHRqcVhIUlsgcy5yZXNwb25zZUZpZWxkc1sgY3VycmVudCBdIF0gPSByZXNwb25zZTtcblx0XHR9XG5cblx0XHQvLyBBcHBseSB0aGUgZGF0YUZpbHRlciBpZiBwcm92aWRlZFxuXHRcdGlmICggIXByZXYgJiYgaXNTdWNjZXNzICYmIHMuZGF0YUZpbHRlciApIHtcblx0XHRcdHJlc3BvbnNlID0gcy5kYXRhRmlsdGVyKCByZXNwb25zZSwgcy5kYXRhVHlwZSApO1xuXHRcdH1cblxuXHRcdHByZXYgPSBjdXJyZW50O1xuXHRcdGN1cnJlbnQgPSBkYXRhVHlwZXMuc2hpZnQoKTtcblxuXHRcdGlmICggY3VycmVudCApIHtcblxuXHRcdFx0Ly8gVGhlcmUncyBvbmx5IHdvcmsgdG8gZG8gaWYgY3VycmVudCBkYXRhVHlwZSBpcyBub24tYXV0b1xuXHRcdFx0aWYgKCBjdXJyZW50ID09PSBcIipcIiApIHtcblxuXHRcdFx0XHRjdXJyZW50ID0gcHJldjtcblxuXHRcdFx0Ly8gQ29udmVydCByZXNwb25zZSBpZiBwcmV2IGRhdGFUeXBlIGlzIG5vbi1hdXRvIGFuZCBkaWZmZXJzIGZyb20gY3VycmVudFxuXHRcdFx0fSBlbHNlIGlmICggcHJldiAhPT0gXCIqXCIgJiYgcHJldiAhPT0gY3VycmVudCApIHtcblxuXHRcdFx0XHQvLyBTZWVrIGEgZGlyZWN0IGNvbnZlcnRlclxuXHRcdFx0XHRjb252ID0gY29udmVydGVyc1sgcHJldiArIFwiIFwiICsgY3VycmVudCBdIHx8IGNvbnZlcnRlcnNbIFwiKiBcIiArIGN1cnJlbnQgXTtcblxuXHRcdFx0XHQvLyBJZiBub25lIGZvdW5kLCBzZWVrIGEgcGFpclxuXHRcdFx0XHRpZiAoICFjb252ICkge1xuXHRcdFx0XHRcdGZvciAoIGNvbnYyIGluIGNvbnZlcnRlcnMgKSB7XG5cblx0XHRcdFx0XHRcdC8vIElmIGNvbnYyIG91dHB1dHMgY3VycmVudFxuXHRcdFx0XHRcdFx0dG1wID0gY29udjIuc3BsaXQoIFwiIFwiICk7XG5cdFx0XHRcdFx0XHRpZiAoIHRtcFsgMSBdID09PSBjdXJyZW50ICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIElmIHByZXYgY2FuIGJlIGNvbnZlcnRlZCB0byBhY2NlcHRlZCBpbnB1dFxuXHRcdFx0XHRcdFx0XHRjb252ID0gY29udmVydGVyc1sgcHJldiArIFwiIFwiICsgdG1wWyAwIF0gXSB8fFxuXHRcdFx0XHRcdFx0XHRcdGNvbnZlcnRlcnNbIFwiKiBcIiArIHRtcFsgMCBdIF07XG5cdFx0XHRcdFx0XHRcdGlmICggY29udiApIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIENvbmRlbnNlIGVxdWl2YWxlbmNlIGNvbnZlcnRlcnNcblx0XHRcdFx0XHRcdFx0XHRpZiAoIGNvbnYgPT09IHRydWUgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb252ID0gY29udmVydGVyc1sgY29udjIgXTtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIE90aGVyd2lzZSwgaW5zZXJ0IHRoZSBpbnRlcm1lZGlhdGUgZGF0YVR5cGVcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCBjb252ZXJ0ZXJzWyBjb252MiBdICE9PSB0cnVlICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y3VycmVudCA9IHRtcFsgMCBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YVR5cGVzLnVuc2hpZnQoIHRtcFsgMSBdICk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQXBwbHkgY29udmVydGVyIChpZiBub3QgYW4gZXF1aXZhbGVuY2UpXG5cdFx0XHRcdGlmICggY29udiAhPT0gdHJ1ZSApIHtcblxuXHRcdFx0XHRcdC8vIFVubGVzcyBlcnJvcnMgYXJlIGFsbG93ZWQgdG8gYnViYmxlLCBjYXRjaCBhbmQgcmV0dXJuIHRoZW1cblx0XHRcdFx0XHRpZiAoIGNvbnYgJiYgcy50aHJvd3MgKSB7XG5cdFx0XHRcdFx0XHRyZXNwb25zZSA9IGNvbnYoIHJlc3BvbnNlICk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdHJlc3BvbnNlID0gY29udiggcmVzcG9uc2UgKTtcblx0XHRcdFx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdHN0YXRlOiBcInBhcnNlcmVycm9yXCIsXG5cdFx0XHRcdFx0XHRcdFx0ZXJyb3I6IGNvbnYgPyBlIDogXCJObyBjb252ZXJzaW9uIGZyb20gXCIgKyBwcmV2ICsgXCIgdG8gXCIgKyBjdXJyZW50XG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHsgc3RhdGU6IFwic3VjY2Vzc1wiLCBkYXRhOiByZXNwb25zZSB9O1xufVxuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cblx0Ly8gQ291bnRlciBmb3IgaG9sZGluZyB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBxdWVyaWVzXG5cdGFjdGl2ZTogMCxcblxuXHQvLyBMYXN0LU1vZGlmaWVkIGhlYWRlciBjYWNoZSBmb3IgbmV4dCByZXF1ZXN0XG5cdGxhc3RNb2RpZmllZDoge30sXG5cdGV0YWc6IHt9LFxuXG5cdGFqYXhTZXR0aW5nczoge1xuXHRcdHVybDogbG9jYXRpb24uaHJlZixcblx0XHR0eXBlOiBcIkdFVFwiLFxuXHRcdGlzTG9jYWw6IHJsb2NhbFByb3RvY29sLnRlc3QoIGxvY2F0aW9uLnByb3RvY29sICksXG5cdFx0Z2xvYmFsOiB0cnVlLFxuXHRcdHByb2Nlc3NEYXRhOiB0cnVlLFxuXHRcdGFzeW5jOiB0cnVlLFxuXHRcdGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOFwiLFxuXG5cdFx0Lypcblx0XHR0aW1lb3V0OiAwLFxuXHRcdGRhdGE6IG51bGwsXG5cdFx0ZGF0YVR5cGU6IG51bGwsXG5cdFx0dXNlcm5hbWU6IG51bGwsXG5cdFx0cGFzc3dvcmQ6IG51bGwsXG5cdFx0Y2FjaGU6IG51bGwsXG5cdFx0dGhyb3dzOiBmYWxzZSxcblx0XHR0cmFkaXRpb25hbDogZmFsc2UsXG5cdFx0aGVhZGVyczoge30sXG5cdFx0Ki9cblxuXHRcdGFjY2VwdHM6IHtcblx0XHRcdFwiKlwiOiBhbGxUeXBlcyxcblx0XHRcdHRleHQ6IFwidGV4dC9wbGFpblwiLFxuXHRcdFx0aHRtbDogXCJ0ZXh0L2h0bWxcIixcblx0XHRcdHhtbDogXCJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sXCIsXG5cdFx0XHRqc29uOiBcImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdFwiXG5cdFx0fSxcblxuXHRcdGNvbnRlbnRzOiB7XG5cdFx0XHR4bWw6IC9cXGJ4bWxcXGIvLFxuXHRcdFx0aHRtbDogL1xcYmh0bWwvLFxuXHRcdFx0anNvbjogL1xcYmpzb25cXGIvXG5cdFx0fSxcblxuXHRcdHJlc3BvbnNlRmllbGRzOiB7XG5cdFx0XHR4bWw6IFwicmVzcG9uc2VYTUxcIixcblx0XHRcdHRleHQ6IFwicmVzcG9uc2VUZXh0XCIsXG5cdFx0XHRqc29uOiBcInJlc3BvbnNlSlNPTlwiXG5cdFx0fSxcblxuXHRcdC8vIERhdGEgY29udmVydGVyc1xuXHRcdC8vIEtleXMgc2VwYXJhdGUgc291cmNlIChvciBjYXRjaGFsbCBcIipcIikgYW5kIGRlc3RpbmF0aW9uIHR5cGVzIHdpdGggYSBzaW5nbGUgc3BhY2Vcblx0XHRjb252ZXJ0ZXJzOiB7XG5cblx0XHRcdC8vIENvbnZlcnQgYW55dGhpbmcgdG8gdGV4dFxuXHRcdFx0XCIqIHRleHRcIjogU3RyaW5nLFxuXG5cdFx0XHQvLyBUZXh0IHRvIGh0bWwgKHRydWUgPSBubyB0cmFuc2Zvcm1hdGlvbilcblx0XHRcdFwidGV4dCBodG1sXCI6IHRydWUsXG5cblx0XHRcdC8vIEV2YWx1YXRlIHRleHQgYXMgYSBqc29uIGV4cHJlc3Npb25cblx0XHRcdFwidGV4dCBqc29uXCI6IEpTT04ucGFyc2UsXG5cblx0XHRcdC8vIFBhcnNlIHRleHQgYXMgeG1sXG5cdFx0XHRcInRleHQgeG1sXCI6IGpRdWVyeS5wYXJzZVhNTFxuXHRcdH0sXG5cblx0XHQvLyBGb3Igb3B0aW9ucyB0aGF0IHNob3VsZG4ndCBiZSBkZWVwIGV4dGVuZGVkOlxuXHRcdC8vIHlvdSBjYW4gYWRkIHlvdXIgb3duIGN1c3RvbSBvcHRpb25zIGhlcmUgaWZcblx0XHQvLyBhbmQgd2hlbiB5b3UgY3JlYXRlIG9uZSB0aGF0IHNob3VsZG4ndCBiZVxuXHRcdC8vIGRlZXAgZXh0ZW5kZWQgKHNlZSBhamF4RXh0ZW5kKVxuXHRcdGZsYXRPcHRpb25zOiB7XG5cdFx0XHR1cmw6IHRydWUsXG5cdFx0XHRjb250ZXh0OiB0cnVlXG5cdFx0fVxuXHR9LFxuXG5cdC8vIENyZWF0ZXMgYSBmdWxsIGZsZWRnZWQgc2V0dGluZ3Mgb2JqZWN0IGludG8gdGFyZ2V0XG5cdC8vIHdpdGggYm90aCBhamF4U2V0dGluZ3MgYW5kIHNldHRpbmdzIGZpZWxkcy5cblx0Ly8gSWYgdGFyZ2V0IGlzIG9taXR0ZWQsIHdyaXRlcyBpbnRvIGFqYXhTZXR0aW5ncy5cblx0YWpheFNldHVwOiBmdW5jdGlvbiggdGFyZ2V0LCBzZXR0aW5ncyApIHtcblx0XHRyZXR1cm4gc2V0dGluZ3MgP1xuXG5cdFx0XHQvLyBCdWlsZGluZyBhIHNldHRpbmdzIG9iamVjdFxuXHRcdFx0YWpheEV4dGVuZCggYWpheEV4dGVuZCggdGFyZ2V0LCBqUXVlcnkuYWpheFNldHRpbmdzICksIHNldHRpbmdzICkgOlxuXG5cdFx0XHQvLyBFeHRlbmRpbmcgYWpheFNldHRpbmdzXG5cdFx0XHRhamF4RXh0ZW5kKCBqUXVlcnkuYWpheFNldHRpbmdzLCB0YXJnZXQgKTtcblx0fSxcblxuXHRhamF4UHJlZmlsdGVyOiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHByZWZpbHRlcnMgKSxcblx0YWpheFRyYW5zcG9ydDogYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCB0cmFuc3BvcnRzICksXG5cblx0Ly8gTWFpbiBtZXRob2Rcblx0YWpheDogZnVuY3Rpb24oIHVybCwgb3B0aW9ucyApIHtcblxuXHRcdC8vIElmIHVybCBpcyBhbiBvYmplY3QsIHNpbXVsYXRlIHByZS0xLjUgc2lnbmF0dXJlXG5cdFx0aWYgKCB0eXBlb2YgdXJsID09PSBcIm9iamVjdFwiICkge1xuXHRcdFx0b3B0aW9ucyA9IHVybDtcblx0XHRcdHVybCA9IHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHQvLyBGb3JjZSBvcHRpb25zIHRvIGJlIGFuIG9iamVjdFxuXHRcdG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG5cdFx0dmFyIHRyYW5zcG9ydCxcblxuXHRcdFx0Ly8gVVJMIHdpdGhvdXQgYW50aS1jYWNoZSBwYXJhbVxuXHRcdFx0Y2FjaGVVUkwsXG5cblx0XHRcdC8vIFJlc3BvbnNlIGhlYWRlcnNcblx0XHRcdHJlc3BvbnNlSGVhZGVyc1N0cmluZyxcblx0XHRcdHJlc3BvbnNlSGVhZGVycyxcblxuXHRcdFx0Ly8gdGltZW91dCBoYW5kbGVcblx0XHRcdHRpbWVvdXRUaW1lcixcblxuXHRcdFx0Ly8gVXJsIGNsZWFudXAgdmFyXG5cdFx0XHR1cmxBbmNob3IsXG5cblx0XHRcdC8vIFJlcXVlc3Qgc3RhdGUgKGJlY29tZXMgZmFsc2UgdXBvbiBzZW5kIGFuZCB0cnVlIHVwb24gY29tcGxldGlvbilcblx0XHRcdGNvbXBsZXRlZCxcblxuXHRcdFx0Ly8gVG8ga25vdyBpZiBnbG9iYWwgZXZlbnRzIGFyZSB0byBiZSBkaXNwYXRjaGVkXG5cdFx0XHRmaXJlR2xvYmFscyxcblxuXHRcdFx0Ly8gTG9vcCB2YXJpYWJsZVxuXHRcdFx0aSxcblxuXHRcdFx0Ly8gdW5jYWNoZWQgcGFydCBvZiB0aGUgdXJsXG5cdFx0XHR1bmNhY2hlZCxcblxuXHRcdFx0Ly8gQ3JlYXRlIHRoZSBmaW5hbCBvcHRpb25zIG9iamVjdFxuXHRcdFx0cyA9IGpRdWVyeS5hamF4U2V0dXAoIHt9LCBvcHRpb25zICksXG5cblx0XHRcdC8vIENhbGxiYWNrcyBjb250ZXh0XG5cdFx0XHRjYWxsYmFja0NvbnRleHQgPSBzLmNvbnRleHQgfHwgcyxcblxuXHRcdFx0Ly8gQ29udGV4dCBmb3IgZ2xvYmFsIGV2ZW50cyBpcyBjYWxsYmFja0NvbnRleHQgaWYgaXQgaXMgYSBET00gbm9kZSBvciBqUXVlcnkgY29sbGVjdGlvblxuXHRcdFx0Z2xvYmFsRXZlbnRDb250ZXh0ID0gcy5jb250ZXh0ICYmXG5cdFx0XHRcdCggY2FsbGJhY2tDb250ZXh0Lm5vZGVUeXBlIHx8IGNhbGxiYWNrQ29udGV4dC5qcXVlcnkgKSA/XG5cdFx0XHRcdGpRdWVyeSggY2FsbGJhY2tDb250ZXh0ICkgOlxuXHRcdFx0XHRqUXVlcnkuZXZlbnQsXG5cblx0XHRcdC8vIERlZmVycmVkc1xuXHRcdFx0ZGVmZXJyZWQgPSBqUXVlcnkuRGVmZXJyZWQoKSxcblx0XHRcdGNvbXBsZXRlRGVmZXJyZWQgPSBqUXVlcnkuQ2FsbGJhY2tzKCBcIm9uY2UgbWVtb3J5XCIgKSxcblxuXHRcdFx0Ly8gU3RhdHVzLWRlcGVuZGVudCBjYWxsYmFja3Ncblx0XHRcdHN0YXR1c0NvZGUgPSBzLnN0YXR1c0NvZGUgfHwge30sXG5cblx0XHRcdC8vIEhlYWRlcnMgKHRoZXkgYXJlIHNlbnQgYWxsIGF0IG9uY2UpXG5cdFx0XHRyZXF1ZXN0SGVhZGVycyA9IHt9LFxuXHRcdFx0cmVxdWVzdEhlYWRlcnNOYW1lcyA9IHt9LFxuXG5cdFx0XHQvLyBEZWZhdWx0IGFib3J0IG1lc3NhZ2Vcblx0XHRcdHN0ckFib3J0ID0gXCJjYW5jZWxlZFwiLFxuXG5cdFx0XHQvLyBGYWtlIHhoclxuXHRcdFx0anFYSFIgPSB7XG5cdFx0XHRcdHJlYWR5U3RhdGU6IDAsXG5cblx0XHRcdFx0Ly8gQnVpbGRzIGhlYWRlcnMgaGFzaHRhYmxlIGlmIG5lZWRlZFxuXHRcdFx0XHRnZXRSZXNwb25zZUhlYWRlcjogZnVuY3Rpb24oIGtleSApIHtcblx0XHRcdFx0XHR2YXIgbWF0Y2g7XG5cdFx0XHRcdFx0aWYgKCBjb21wbGV0ZWQgKSB7XG5cdFx0XHRcdFx0XHRpZiAoICFyZXNwb25zZUhlYWRlcnMgKSB7XG5cdFx0XHRcdFx0XHRcdHJlc3BvbnNlSGVhZGVycyA9IHt9O1xuXHRcdFx0XHRcdFx0XHR3aGlsZSAoICggbWF0Y2ggPSByaGVhZGVycy5leGVjKCByZXNwb25zZUhlYWRlcnNTdHJpbmcgKSApICkge1xuXHRcdFx0XHRcdFx0XHRcdHJlc3BvbnNlSGVhZGVyc1sgbWF0Y2hbIDEgXS50b0xvd2VyQ2FzZSgpICsgXCIgXCIgXSA9XG5cdFx0XHRcdFx0XHRcdFx0XHQoIHJlc3BvbnNlSGVhZGVyc1sgbWF0Y2hbIDEgXS50b0xvd2VyQ2FzZSgpICsgXCIgXCIgXSB8fCBbXSApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC5jb25jYXQoIG1hdGNoWyAyIF0gKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0bWF0Y2ggPSByZXNwb25zZUhlYWRlcnNbIGtleS50b0xvd2VyQ2FzZSgpICsgXCIgXCIgXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIG1hdGNoID09IG51bGwgPyBudWxsIDogbWF0Y2guam9pbiggXCIsIFwiICk7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gUmF3IHN0cmluZ1xuXHRcdFx0XHRnZXRBbGxSZXNwb25zZUhlYWRlcnM6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybiBjb21wbGV0ZWQgPyByZXNwb25zZUhlYWRlcnNTdHJpbmcgOiBudWxsO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIENhY2hlcyB0aGUgaGVhZGVyXG5cdFx0XHRcdHNldFJlcXVlc3RIZWFkZXI6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCA9PSBudWxsICkge1xuXHRcdFx0XHRcdFx0bmFtZSA9IHJlcXVlc3RIZWFkZXJzTmFtZXNbIG5hbWUudG9Mb3dlckNhc2UoKSBdID1cblx0XHRcdFx0XHRcdFx0cmVxdWVzdEhlYWRlcnNOYW1lc1sgbmFtZS50b0xvd2VyQ2FzZSgpIF0gfHwgbmFtZTtcblx0XHRcdFx0XHRcdHJlcXVlc3RIZWFkZXJzWyBuYW1lIF0gPSB2YWx1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gT3ZlcnJpZGVzIHJlc3BvbnNlIGNvbnRlbnQtdHlwZSBoZWFkZXJcblx0XHRcdFx0b3ZlcnJpZGVNaW1lVHlwZTogZnVuY3Rpb24oIHR5cGUgKSB7XG5cdFx0XHRcdFx0aWYgKCBjb21wbGV0ZWQgPT0gbnVsbCApIHtcblx0XHRcdFx0XHRcdHMubWltZVR5cGUgPSB0eXBlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrc1xuXHRcdFx0XHRzdGF0dXNDb2RlOiBmdW5jdGlvbiggbWFwICkge1xuXHRcdFx0XHRcdHZhciBjb2RlO1xuXHRcdFx0XHRcdGlmICggbWFwICkge1xuXHRcdFx0XHRcdFx0aWYgKCBjb21wbGV0ZWQgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gRXhlY3V0ZSB0aGUgYXBwcm9wcmlhdGUgY2FsbGJhY2tzXG5cdFx0XHRcdFx0XHRcdGpxWEhSLmFsd2F5cyggbWFwWyBqcVhIUi5zdGF0dXMgXSApO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBMYXp5LWFkZCB0aGUgbmV3IGNhbGxiYWNrcyBpbiBhIHdheSB0aGF0IHByZXNlcnZlcyBvbGQgb25lc1xuXHRcdFx0XHRcdFx0XHRmb3IgKCBjb2RlIGluIG1hcCApIHtcblx0XHRcdFx0XHRcdFx0XHRzdGF0dXNDb2RlWyBjb2RlIF0gPSBbIHN0YXR1c0NvZGVbIGNvZGUgXSwgbWFwWyBjb2RlIF0gXTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBDYW5jZWwgdGhlIHJlcXVlc3Rcblx0XHRcdFx0YWJvcnQ6IGZ1bmN0aW9uKCBzdGF0dXNUZXh0ICkge1xuXHRcdFx0XHRcdHZhciBmaW5hbFRleHQgPSBzdGF0dXNUZXh0IHx8IHN0ckFib3J0O1xuXHRcdFx0XHRcdGlmICggdHJhbnNwb3J0ICkge1xuXHRcdFx0XHRcdFx0dHJhbnNwb3J0LmFib3J0KCBmaW5hbFRleHQgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZG9uZSggMCwgZmluYWxUZXh0ICk7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cblx0XHQvLyBBdHRhY2ggZGVmZXJyZWRzXG5cdFx0ZGVmZXJyZWQucHJvbWlzZSgganFYSFIgKTtcblxuXHRcdC8vIEFkZCBwcm90b2NvbCBpZiBub3QgcHJvdmlkZWQgKHByZWZpbHRlcnMgbWlnaHQgZXhwZWN0IGl0KVxuXHRcdC8vIEhhbmRsZSBmYWxzeSB1cmwgaW4gdGhlIHNldHRpbmdzIG9iamVjdCAodHJhYy0xMDA5MzogY29uc2lzdGVuY3kgd2l0aCBvbGQgc2lnbmF0dXJlKVxuXHRcdC8vIFdlIGFsc28gdXNlIHRoZSB1cmwgcGFyYW1ldGVyIGlmIGF2YWlsYWJsZVxuXHRcdHMudXJsID0gKCAoIHVybCB8fCBzLnVybCB8fCBsb2NhdGlvbi5ocmVmICkgKyBcIlwiIClcblx0XHRcdC5yZXBsYWNlKCBycHJvdG9jb2wsIGxvY2F0aW9uLnByb3RvY29sICsgXCIvL1wiICk7XG5cblx0XHQvLyBBbGlhcyBtZXRob2Qgb3B0aW9uIHRvIHR5cGUgYXMgcGVyIHRpY2tldCB0cmFjLTEyMDA0XG5cdFx0cy50eXBlID0gb3B0aW9ucy5tZXRob2QgfHwgb3B0aW9ucy50eXBlIHx8IHMubWV0aG9kIHx8IHMudHlwZTtcblxuXHRcdC8vIEV4dHJhY3QgZGF0YVR5cGVzIGxpc3Rcblx0XHRzLmRhdGFUeXBlcyA9ICggcy5kYXRhVHlwZSB8fCBcIipcIiApLnRvTG93ZXJDYXNlKCkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbIFwiXCIgXTtcblxuXHRcdC8vIEEgY3Jvc3MtZG9tYWluIHJlcXVlc3QgaXMgaW4gb3JkZXIgd2hlbiB0aGUgb3JpZ2luIGRvZXNuJ3QgbWF0Y2ggdGhlIGN1cnJlbnQgb3JpZ2luLlxuXHRcdGlmICggcy5jcm9zc0RvbWFpbiA9PSBudWxsICkge1xuXHRcdFx0dXJsQW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJhXCIgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUUgPD04IC0gMTEsIEVkZ2UgMTIgLSAxNVxuXHRcdFx0Ly8gSUUgdGhyb3dzIGV4Y2VwdGlvbiBvbiBhY2Nlc3NpbmcgdGhlIGhyZWYgcHJvcGVydHkgaWYgdXJsIGlzIG1hbGZvcm1lZCxcblx0XHRcdC8vIGUuZy4gaHR0cDovL2V4YW1wbGUuY29tOjgweC9cblx0XHRcdHRyeSB7XG5cdFx0XHRcdHVybEFuY2hvci5ocmVmID0gcy51cmw7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD04IC0gMTEgb25seVxuXHRcdFx0XHQvLyBBbmNob3IncyBob3N0IHByb3BlcnR5IGlzbid0IGNvcnJlY3RseSBzZXQgd2hlbiBzLnVybCBpcyByZWxhdGl2ZVxuXHRcdFx0XHR1cmxBbmNob3IuaHJlZiA9IHVybEFuY2hvci5ocmVmO1xuXHRcdFx0XHRzLmNyb3NzRG9tYWluID0gb3JpZ2luQW5jaG9yLnByb3RvY29sICsgXCIvL1wiICsgb3JpZ2luQW5jaG9yLmhvc3QgIT09XG5cdFx0XHRcdFx0dXJsQW5jaG9yLnByb3RvY29sICsgXCIvL1wiICsgdXJsQW5jaG9yLmhvc3Q7XG5cdFx0XHR9IGNhdGNoICggZSApIHtcblxuXHRcdFx0XHQvLyBJZiB0aGVyZSBpcyBhbiBlcnJvciBwYXJzaW5nIHRoZSBVUkwsIGFzc3VtZSBpdCBpcyBjcm9zc0RvbWFpbixcblx0XHRcdFx0Ly8gaXQgY2FuIGJlIHJlamVjdGVkIGJ5IHRoZSB0cmFuc3BvcnQgaWYgaXQgaXMgaW52YWxpZFxuXHRcdFx0XHRzLmNyb3NzRG9tYWluID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDb252ZXJ0IGRhdGEgaWYgbm90IGFscmVhZHkgYSBzdHJpbmdcblx0XHRpZiAoIHMuZGF0YSAmJiBzLnByb2Nlc3NEYXRhICYmIHR5cGVvZiBzLmRhdGEgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRzLmRhdGEgPSBqUXVlcnkucGFyYW0oIHMuZGF0YSwgcy50cmFkaXRpb25hbCApO1xuXHRcdH1cblxuXHRcdC8vIEFwcGx5IHByZWZpbHRlcnNcblx0XHRpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggcHJlZmlsdGVycywgcywgb3B0aW9ucywganFYSFIgKTtcblxuXHRcdC8vIElmIHJlcXVlc3Qgd2FzIGFib3J0ZWQgaW5zaWRlIGEgcHJlZmlsdGVyLCBzdG9wIHRoZXJlXG5cdFx0aWYgKCBjb21wbGV0ZWQgKSB7XG5cdFx0XHRyZXR1cm4ganFYSFI7XG5cdFx0fVxuXG5cdFx0Ly8gV2UgY2FuIGZpcmUgZ2xvYmFsIGV2ZW50cyBhcyBvZiBub3cgaWYgYXNrZWQgdG9cblx0XHQvLyBEb24ndCBmaXJlIGV2ZW50cyBpZiBqUXVlcnkuZXZlbnQgaXMgdW5kZWZpbmVkIGluIGFuIEFNRC11c2FnZSBzY2VuYXJpbyAodHJhYy0xNTExOClcblx0XHRmaXJlR2xvYmFscyA9IGpRdWVyeS5ldmVudCAmJiBzLmdsb2JhbDtcblxuXHRcdC8vIFdhdGNoIGZvciBhIG5ldyBzZXQgb2YgcmVxdWVzdHNcblx0XHRpZiAoIGZpcmVHbG9iYWxzICYmIGpRdWVyeS5hY3RpdmUrKyA9PT0gMCApIHtcblx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyKCBcImFqYXhTdGFydFwiICk7XG5cdFx0fVxuXG5cdFx0Ly8gVXBwZXJjYXNlIHRoZSB0eXBlXG5cdFx0cy50eXBlID0gcy50eXBlLnRvVXBwZXJDYXNlKCk7XG5cblx0XHQvLyBEZXRlcm1pbmUgaWYgcmVxdWVzdCBoYXMgY29udGVudFxuXHRcdHMuaGFzQ29udGVudCA9ICFybm9Db250ZW50LnRlc3QoIHMudHlwZSApO1xuXG5cdFx0Ly8gU2F2ZSB0aGUgVVJMIGluIGNhc2Ugd2UncmUgdG95aW5nIHdpdGggdGhlIElmLU1vZGlmaWVkLVNpbmNlXG5cdFx0Ly8gYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyIGxhdGVyIG9uXG5cdFx0Ly8gUmVtb3ZlIGhhc2ggdG8gc2ltcGxpZnkgdXJsIG1hbmlwdWxhdGlvblxuXHRcdGNhY2hlVVJMID0gcy51cmwucmVwbGFjZSggcmhhc2gsIFwiXCIgKTtcblxuXHRcdC8vIE1vcmUgb3B0aW9ucyBoYW5kbGluZyBmb3IgcmVxdWVzdHMgd2l0aCBubyBjb250ZW50XG5cdFx0aWYgKCAhcy5oYXNDb250ZW50ICkge1xuXG5cdFx0XHQvLyBSZW1lbWJlciB0aGUgaGFzaCBzbyB3ZSBjYW4gcHV0IGl0IGJhY2tcblx0XHRcdHVuY2FjaGVkID0gcy51cmwuc2xpY2UoIGNhY2hlVVJMLmxlbmd0aCApO1xuXG5cdFx0XHQvLyBJZiBkYXRhIGlzIGF2YWlsYWJsZSBhbmQgc2hvdWxkIGJlIHByb2Nlc3NlZCwgYXBwZW5kIGRhdGEgdG8gdXJsXG5cdFx0XHRpZiAoIHMuZGF0YSAmJiAoIHMucHJvY2Vzc0RhdGEgfHwgdHlwZW9mIHMuZGF0YSA9PT0gXCJzdHJpbmdcIiApICkge1xuXHRcdFx0XHRjYWNoZVVSTCArPSAoIHJxdWVyeS50ZXN0KCBjYWNoZVVSTCApID8gXCImXCIgOiBcIj9cIiApICsgcy5kYXRhO1xuXG5cdFx0XHRcdC8vIHRyYWMtOTY4MjogcmVtb3ZlIGRhdGEgc28gdGhhdCBpdCdzIG5vdCB1c2VkIGluIGFuIGV2ZW50dWFsIHJldHJ5XG5cdFx0XHRcdGRlbGV0ZSBzLmRhdGE7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFkZCBvciB1cGRhdGUgYW50aS1jYWNoZSBwYXJhbSBpZiBuZWVkZWRcblx0XHRcdGlmICggcy5jYWNoZSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdGNhY2hlVVJMID0gY2FjaGVVUkwucmVwbGFjZSggcmFudGlDYWNoZSwgXCIkMVwiICk7XG5cdFx0XHRcdHVuY2FjaGVkID0gKCBycXVlcnkudGVzdCggY2FjaGVVUkwgKSA/IFwiJlwiIDogXCI/XCIgKSArIFwiXz1cIiArICggbm9uY2UuZ3VpZCsrICkgK1xuXHRcdFx0XHRcdHVuY2FjaGVkO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBQdXQgaGFzaCBhbmQgYW50aS1jYWNoZSBvbiB0aGUgVVJMIHRoYXQgd2lsbCBiZSByZXF1ZXN0ZWQgKGdoLTE3MzIpXG5cdFx0XHRzLnVybCA9IGNhY2hlVVJMICsgdW5jYWNoZWQ7XG5cblx0XHQvLyBDaGFuZ2UgJyUyMCcgdG8gJysnIGlmIHRoaXMgaXMgZW5jb2RlZCBmb3JtIGJvZHkgY29udGVudCAoZ2gtMjY1OClcblx0XHR9IGVsc2UgaWYgKCBzLmRhdGEgJiYgcy5wcm9jZXNzRGF0YSAmJlxuXHRcdFx0KCBzLmNvbnRlbnRUeXBlIHx8IFwiXCIgKS5pbmRleE9mKCBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiICkgPT09IDAgKSB7XG5cdFx0XHRzLmRhdGEgPSBzLmRhdGEucmVwbGFjZSggcjIwLCBcIitcIiApO1xuXHRcdH1cblxuXHRcdC8vIFNldCB0aGUgSWYtTW9kaWZpZWQtU2luY2UgYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyLCBpZiBpbiBpZk1vZGlmaWVkIG1vZGUuXG5cdFx0aWYgKCBzLmlmTW9kaWZpZWQgKSB7XG5cdFx0XHRpZiAoIGpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gKSB7XG5cdFx0XHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIFwiSWYtTW9kaWZpZWQtU2luY2VcIiwgalF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSApO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSApIHtcblx0XHRcdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlciggXCJJZi1Ob25lLU1hdGNoXCIsIGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gU2V0IHRoZSBjb3JyZWN0IGhlYWRlciwgaWYgZGF0YSBpcyBiZWluZyBzZW50XG5cdFx0aWYgKCBzLmRhdGEgJiYgcy5oYXNDb250ZW50ICYmIHMuY29udGVudFR5cGUgIT09IGZhbHNlIHx8IG9wdGlvbnMuY29udGVudFR5cGUgKSB7XG5cdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBcIkNvbnRlbnQtVHlwZVwiLCBzLmNvbnRlbnRUeXBlICk7XG5cdFx0fVxuXG5cdFx0Ly8gU2V0IHRoZSBBY2NlcHRzIGhlYWRlciBmb3IgdGhlIHNlcnZlciwgZGVwZW5kaW5nIG9uIHRoZSBkYXRhVHlwZVxuXHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoXG5cdFx0XHRcIkFjY2VwdFwiLFxuXHRcdFx0cy5kYXRhVHlwZXNbIDAgXSAmJiBzLmFjY2VwdHNbIHMuZGF0YVR5cGVzWyAwIF0gXSA/XG5cdFx0XHRcdHMuYWNjZXB0c1sgcy5kYXRhVHlwZXNbIDAgXSBdICtcblx0XHRcdFx0XHQoIHMuZGF0YVR5cGVzWyAwIF0gIT09IFwiKlwiID8gXCIsIFwiICsgYWxsVHlwZXMgKyBcIjsgcT0wLjAxXCIgOiBcIlwiICkgOlxuXHRcdFx0XHRzLmFjY2VwdHNbIFwiKlwiIF1cblx0XHQpO1xuXG5cdFx0Ly8gQ2hlY2sgZm9yIGhlYWRlcnMgb3B0aW9uXG5cdFx0Zm9yICggaSBpbiBzLmhlYWRlcnMgKSB7XG5cdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBzLmhlYWRlcnNbIGkgXSApO1xuXHRcdH1cblxuXHRcdC8vIEFsbG93IGN1c3RvbSBoZWFkZXJzL21pbWV0eXBlcyBhbmQgZWFybHkgYWJvcnRcblx0XHRpZiAoIHMuYmVmb3JlU2VuZCAmJlxuXHRcdFx0KCBzLmJlZm9yZVNlbmQuY2FsbCggY2FsbGJhY2tDb250ZXh0LCBqcVhIUiwgcyApID09PSBmYWxzZSB8fCBjb21wbGV0ZWQgKSApIHtcblxuXHRcdFx0Ly8gQWJvcnQgaWYgbm90IGRvbmUgYWxyZWFkeSBhbmQgcmV0dXJuXG5cdFx0XHRyZXR1cm4ganFYSFIuYWJvcnQoKTtcblx0XHR9XG5cblx0XHQvLyBBYm9ydGluZyBpcyBubyBsb25nZXIgYSBjYW5jZWxsYXRpb25cblx0XHRzdHJBYm9ydCA9IFwiYWJvcnRcIjtcblxuXHRcdC8vIEluc3RhbGwgY2FsbGJhY2tzIG9uIGRlZmVycmVkc1xuXHRcdGNvbXBsZXRlRGVmZXJyZWQuYWRkKCBzLmNvbXBsZXRlICk7XG5cdFx0anFYSFIuZG9uZSggcy5zdWNjZXNzICk7XG5cdFx0anFYSFIuZmFpbCggcy5lcnJvciApO1xuXG5cdFx0Ly8gR2V0IHRyYW5zcG9ydFxuXHRcdHRyYW5zcG9ydCA9IGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCB0cmFuc3BvcnRzLCBzLCBvcHRpb25zLCBqcVhIUiApO1xuXG5cdFx0Ly8gSWYgbm8gdHJhbnNwb3J0LCB3ZSBhdXRvLWFib3J0XG5cdFx0aWYgKCAhdHJhbnNwb3J0ICkge1xuXHRcdFx0ZG9uZSggLTEsIFwiTm8gVHJhbnNwb3J0XCIgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0anFYSFIucmVhZHlTdGF0ZSA9IDE7XG5cblx0XHRcdC8vIFNlbmQgZ2xvYmFsIGV2ZW50XG5cdFx0XHRpZiAoIGZpcmVHbG9iYWxzICkge1xuXHRcdFx0XHRnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggXCJhamF4U2VuZFwiLCBbIGpxWEhSLCBzIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgcmVxdWVzdCB3YXMgYWJvcnRlZCBpbnNpZGUgYWpheFNlbmQsIHN0b3AgdGhlcmVcblx0XHRcdGlmICggY29tcGxldGVkICkge1xuXHRcdFx0XHRyZXR1cm4ganFYSFI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFRpbWVvdXRcblx0XHRcdGlmICggcy5hc3luYyAmJiBzLnRpbWVvdXQgPiAwICkge1xuXHRcdFx0XHR0aW1lb3V0VGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0anFYSFIuYWJvcnQoIFwidGltZW91dFwiICk7XG5cdFx0XHRcdH0sIHMudGltZW91dCApO1xuXHRcdFx0fVxuXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb21wbGV0ZWQgPSBmYWxzZTtcblx0XHRcdFx0dHJhbnNwb3J0LnNlbmQoIHJlcXVlc3RIZWFkZXJzLCBkb25lICk7XG5cdFx0XHR9IGNhdGNoICggZSApIHtcblxuXHRcdFx0XHQvLyBSZXRocm93IHBvc3QtY29tcGxldGlvbiBleGNlcHRpb25zXG5cdFx0XHRcdGlmICggY29tcGxldGVkICkge1xuXHRcdFx0XHRcdHRocm93IGU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBQcm9wYWdhdGUgb3RoZXJzIGFzIHJlc3VsdHNcblx0XHRcdFx0ZG9uZSggLTEsIGUgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDYWxsYmFjayBmb3Igd2hlbiBldmVyeXRoaW5nIGlzIGRvbmVcblx0XHRmdW5jdGlvbiBkb25lKCBzdGF0dXMsIG5hdGl2ZVN0YXR1c1RleHQsIHJlc3BvbnNlcywgaGVhZGVycyApIHtcblx0XHRcdHZhciBpc1N1Y2Nlc3MsIHN1Y2Nlc3MsIGVycm9yLCByZXNwb25zZSwgbW9kaWZpZWQsXG5cdFx0XHRcdHN0YXR1c1RleHQgPSBuYXRpdmVTdGF0dXNUZXh0O1xuXG5cdFx0XHQvLyBJZ25vcmUgcmVwZWF0IGludm9jYXRpb25zXG5cdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb21wbGV0ZWQgPSB0cnVlO1xuXG5cdFx0XHQvLyBDbGVhciB0aW1lb3V0IGlmIGl0IGV4aXN0c1xuXHRcdFx0aWYgKCB0aW1lb3V0VGltZXIgKSB7XG5cdFx0XHRcdHdpbmRvdy5jbGVhclRpbWVvdXQoIHRpbWVvdXRUaW1lciApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBEZXJlZmVyZW5jZSB0cmFuc3BvcnQgZm9yIGVhcmx5IGdhcmJhZ2UgY29sbGVjdGlvblxuXHRcdFx0Ly8gKG5vIG1hdHRlciBob3cgbG9uZyB0aGUganFYSFIgb2JqZWN0IHdpbGwgYmUgdXNlZClcblx0XHRcdHRyYW5zcG9ydCA9IHVuZGVmaW5lZDtcblxuXHRcdFx0Ly8gQ2FjaGUgcmVzcG9uc2UgaGVhZGVyc1xuXHRcdFx0cmVzcG9uc2VIZWFkZXJzU3RyaW5nID0gaGVhZGVycyB8fCBcIlwiO1xuXG5cdFx0XHQvLyBTZXQgcmVhZHlTdGF0ZVxuXHRcdFx0anFYSFIucmVhZHlTdGF0ZSA9IHN0YXR1cyA+IDAgPyA0IDogMDtcblxuXHRcdFx0Ly8gRGV0ZXJtaW5lIGlmIHN1Y2Nlc3NmdWxcblx0XHRcdGlzU3VjY2VzcyA9IHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwIHx8IHN0YXR1cyA9PT0gMzA0O1xuXG5cdFx0XHQvLyBHZXQgcmVzcG9uc2UgZGF0YVxuXHRcdFx0aWYgKCByZXNwb25zZXMgKSB7XG5cdFx0XHRcdHJlc3BvbnNlID0gYWpheEhhbmRsZVJlc3BvbnNlcyggcywganFYSFIsIHJlc3BvbnNlcyApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBVc2UgYSBub29wIGNvbnZlcnRlciBmb3IgbWlzc2luZyBzY3JpcHQgYnV0IG5vdCBpZiBqc29ucFxuXHRcdFx0aWYgKCAhaXNTdWNjZXNzICYmXG5cdFx0XHRcdGpRdWVyeS5pbkFycmF5KCBcInNjcmlwdFwiLCBzLmRhdGFUeXBlcyApID4gLTEgJiZcblx0XHRcdFx0alF1ZXJ5LmluQXJyYXkoIFwianNvblwiLCBzLmRhdGFUeXBlcyApIDwgMCApIHtcblx0XHRcdFx0cy5jb252ZXJ0ZXJzWyBcInRleHQgc2NyaXB0XCIgXSA9IGZ1bmN0aW9uKCkge307XG5cdFx0XHR9XG5cblx0XHRcdC8vIENvbnZlcnQgbm8gbWF0dGVyIHdoYXQgKHRoYXQgd2F5IHJlc3BvbnNlWFhYIGZpZWxkcyBhcmUgYWx3YXlzIHNldClcblx0XHRcdHJlc3BvbnNlID0gYWpheENvbnZlcnQoIHMsIHJlc3BvbnNlLCBqcVhIUiwgaXNTdWNjZXNzICk7XG5cblx0XHRcdC8vIElmIHN1Y2Nlc3NmdWwsIGhhbmRsZSB0eXBlIGNoYWluaW5nXG5cdFx0XHRpZiAoIGlzU3VjY2VzcyApIHtcblxuXHRcdFx0XHQvLyBTZXQgdGhlIElmLU1vZGlmaWVkLVNpbmNlIGFuZC9vciBJZi1Ob25lLU1hdGNoIGhlYWRlciwgaWYgaW4gaWZNb2RpZmllZCBtb2RlLlxuXHRcdFx0XHRpZiAoIHMuaWZNb2RpZmllZCApIHtcblx0XHRcdFx0XHRtb2RpZmllZCA9IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCBcIkxhc3QtTW9kaWZpZWRcIiApO1xuXHRcdFx0XHRcdGlmICggbW9kaWZpZWQgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkubGFzdE1vZGlmaWVkWyBjYWNoZVVSTCBdID0gbW9kaWZpZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG1vZGlmaWVkID0ganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoIFwiZXRhZ1wiICk7XG5cdFx0XHRcdFx0aWYgKCBtb2RpZmllZCApIHtcblx0XHRcdFx0XHRcdGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdID0gbW9kaWZpZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gaWYgbm8gY29udGVudFxuXHRcdFx0XHRpZiAoIHN0YXR1cyA9PT0gMjA0IHx8IHMudHlwZSA9PT0gXCJIRUFEXCIgKSB7XG5cdFx0XHRcdFx0c3RhdHVzVGV4dCA9IFwibm9jb250ZW50XCI7XG5cblx0XHRcdFx0Ly8gaWYgbm90IG1vZGlmaWVkXG5cdFx0XHRcdH0gZWxzZSBpZiAoIHN0YXR1cyA9PT0gMzA0ICkge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSBcIm5vdG1vZGlmaWVkXCI7XG5cblx0XHRcdFx0Ly8gSWYgd2UgaGF2ZSBkYXRhLCBsZXQncyBjb252ZXJ0IGl0XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c3RhdHVzVGV4dCA9IHJlc3BvbnNlLnN0YXRlO1xuXHRcdFx0XHRcdHN1Y2Nlc3MgPSByZXNwb25zZS5kYXRhO1xuXHRcdFx0XHRcdGVycm9yID0gcmVzcG9uc2UuZXJyb3I7XG5cdFx0XHRcdFx0aXNTdWNjZXNzID0gIWVycm9yO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdC8vIEV4dHJhY3QgZXJyb3IgZnJvbSBzdGF0dXNUZXh0IGFuZCBub3JtYWxpemUgZm9yIG5vbi1hYm9ydHNcblx0XHRcdFx0ZXJyb3IgPSBzdGF0dXNUZXh0O1xuXHRcdFx0XHRpZiAoIHN0YXR1cyB8fCAhc3RhdHVzVGV4dCApIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gXCJlcnJvclwiO1xuXHRcdFx0XHRcdGlmICggc3RhdHVzIDwgMCApIHtcblx0XHRcdFx0XHRcdHN0YXR1cyA9IDA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNldCBkYXRhIGZvciB0aGUgZmFrZSB4aHIgb2JqZWN0XG5cdFx0XHRqcVhIUi5zdGF0dXMgPSBzdGF0dXM7XG5cdFx0XHRqcVhIUi5zdGF0dXNUZXh0ID0gKCBuYXRpdmVTdGF0dXNUZXh0IHx8IHN0YXR1c1RleHQgKSArIFwiXCI7XG5cblx0XHRcdC8vIFN1Y2Nlc3MvRXJyb3Jcblx0XHRcdGlmICggaXNTdWNjZXNzICkge1xuXHRcdFx0XHRkZWZlcnJlZC5yZXNvbHZlV2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIHN1Y2Nlc3MsIHN0YXR1c1RleHQsIGpxWEhSIF0gKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRlZmVycmVkLnJlamVjdFdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBqcVhIUiwgc3RhdHVzVGV4dCwgZXJyb3IgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrc1xuXHRcdFx0anFYSFIuc3RhdHVzQ29kZSggc3RhdHVzQ29kZSApO1xuXHRcdFx0c3RhdHVzQ29kZSA9IHVuZGVmaW5lZDtcblxuXHRcdFx0aWYgKCBmaXJlR2xvYmFscyApIHtcblx0XHRcdFx0Z2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoIGlzU3VjY2VzcyA/IFwiYWpheFN1Y2Nlc3NcIiA6IFwiYWpheEVycm9yXCIsXG5cdFx0XHRcdFx0WyBqcVhIUiwgcywgaXNTdWNjZXNzID8gc3VjY2VzcyA6IGVycm9yIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ29tcGxldGVcblx0XHRcdGNvbXBsZXRlRGVmZXJyZWQuZmlyZVdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBqcVhIUiwgc3RhdHVzVGV4dCBdICk7XG5cblx0XHRcdGlmICggZmlyZUdsb2JhbHMgKSB7XG5cdFx0XHRcdGdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKCBcImFqYXhDb21wbGV0ZVwiLCBbIGpxWEhSLCBzIF0gKTtcblxuXHRcdFx0XHQvLyBIYW5kbGUgdGhlIGdsb2JhbCBBSkFYIGNvdW50ZXJcblx0XHRcdFx0aWYgKCAhKCAtLWpRdWVyeS5hY3RpdmUgKSApIHtcblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlciggXCJhamF4U3RvcFwiICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4ganFYSFI7XG5cdH0sXG5cblx0Z2V0SlNPTjogZnVuY3Rpb24oIHVybCwgZGF0YSwgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5nZXQoIHVybCwgZGF0YSwgY2FsbGJhY2ssIFwianNvblwiICk7XG5cdH0sXG5cblx0Z2V0U2NyaXB0OiBmdW5jdGlvbiggdXJsLCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdldCggdXJsLCB1bmRlZmluZWQsIGNhbGxiYWNrLCBcInNjcmlwdFwiICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmVhY2goIFsgXCJnZXRcIiwgXCJwb3N0XCIgXSwgZnVuY3Rpb24oIF9pLCBtZXRob2QgKSB7XG5cdGpRdWVyeVsgbWV0aG9kIF0gPSBmdW5jdGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjaywgdHlwZSApIHtcblxuXHRcdC8vIFNoaWZ0IGFyZ3VtZW50cyBpZiBkYXRhIGFyZ3VtZW50IHdhcyBvbWl0dGVkXG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBkYXRhICkgKSB7XG5cdFx0XHR0eXBlID0gdHlwZSB8fCBjYWxsYmFjaztcblx0XHRcdGNhbGxiYWNrID0gZGF0YTtcblx0XHRcdGRhdGEgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0Ly8gVGhlIHVybCBjYW4gYmUgYW4gb3B0aW9ucyBvYmplY3QgKHdoaWNoIHRoZW4gbXVzdCBoYXZlIC51cmwpXG5cdFx0cmV0dXJuIGpRdWVyeS5hamF4KCBqUXVlcnkuZXh0ZW5kKCB7XG5cdFx0XHR1cmw6IHVybCxcblx0XHRcdHR5cGU6IG1ldGhvZCxcblx0XHRcdGRhdGFUeXBlOiB0eXBlLFxuXHRcdFx0ZGF0YTogZGF0YSxcblx0XHRcdHN1Y2Nlc3M6IGNhbGxiYWNrXG5cdFx0fSwgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIHVybCApICYmIHVybCApICk7XG5cdH07XG59ICk7XG5cbmpRdWVyeS5hamF4UHJlZmlsdGVyKCBmdW5jdGlvbiggcyApIHtcblx0dmFyIGk7XG5cdGZvciAoIGkgaW4gcy5oZWFkZXJzICkge1xuXHRcdGlmICggaS50b0xvd2VyQ2FzZSgpID09PSBcImNvbnRlbnQtdHlwZVwiICkge1xuXHRcdFx0cy5jb250ZW50VHlwZSA9IHMuaGVhZGVyc1sgaSBdIHx8IFwiXCI7XG5cdFx0fVxuXHR9XG59ICk7XG5cblxualF1ZXJ5Ll9ldmFsVXJsID0gZnVuY3Rpb24oIHVybCwgb3B0aW9ucywgZG9jICkge1xuXHRyZXR1cm4galF1ZXJ5LmFqYXgoIHtcblx0XHR1cmw6IHVybCxcblxuXHRcdC8vIE1ha2UgdGhpcyBleHBsaWNpdCwgc2luY2UgdXNlciBjYW4gb3ZlcnJpZGUgdGhpcyB0aHJvdWdoIGFqYXhTZXR1cCAodHJhYy0xMTI2NClcblx0XHR0eXBlOiBcIkdFVFwiLFxuXHRcdGRhdGFUeXBlOiBcInNjcmlwdFwiLFxuXHRcdGNhY2hlOiB0cnVlLFxuXHRcdGFzeW5jOiBmYWxzZSxcblx0XHRnbG9iYWw6IGZhbHNlLFxuXG5cdFx0Ly8gT25seSBldmFsdWF0ZSB0aGUgcmVzcG9uc2UgaWYgaXQgaXMgc3VjY2Vzc2Z1bCAoZ2gtNDEyNilcblx0XHQvLyBkYXRhRmlsdGVyIGlzIG5vdCBpbnZva2VkIGZvciBmYWlsdXJlIHJlc3BvbnNlcywgc28gdXNpbmcgaXQgaW5zdGVhZFxuXHRcdC8vIG9mIHRoZSBkZWZhdWx0IGNvbnZlcnRlciBpcyBrbHVkZ3kgYnV0IGl0IHdvcmtzLlxuXHRcdGNvbnZlcnRlcnM6IHtcblx0XHRcdFwidGV4dCBzY3JpcHRcIjogZnVuY3Rpb24oKSB7fVxuXHRcdH0sXG5cdFx0ZGF0YUZpbHRlcjogZnVuY3Rpb24oIHJlc3BvbnNlICkge1xuXHRcdFx0alF1ZXJ5Lmdsb2JhbEV2YWwoIHJlc3BvbnNlLCBvcHRpb25zLCBkb2MgKTtcblx0XHR9XG5cdH0gKTtcbn07XG5cblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHR3cmFwQWxsOiBmdW5jdGlvbiggaHRtbCApIHtcblx0XHR2YXIgd3JhcDtcblxuXHRcdGlmICggdGhpc1sgMCBdICkge1xuXHRcdFx0aWYgKCBpc0Z1bmN0aW9uKCBodG1sICkgKSB7XG5cdFx0XHRcdGh0bWwgPSBodG1sLmNhbGwoIHRoaXNbIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBUaGUgZWxlbWVudHMgdG8gd3JhcCB0aGUgdGFyZ2V0IGFyb3VuZFxuXHRcdFx0d3JhcCA9IGpRdWVyeSggaHRtbCwgdGhpc1sgMCBdLm93bmVyRG9jdW1lbnQgKS5lcSggMCApLmNsb25lKCB0cnVlICk7XG5cblx0XHRcdGlmICggdGhpc1sgMCBdLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHdyYXAuaW5zZXJ0QmVmb3JlKCB0aGlzWyAwIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0d3JhcC5tYXAoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgZWxlbSA9IHRoaXM7XG5cblx0XHRcdFx0d2hpbGUgKCBlbGVtLmZpcnN0RWxlbWVudENoaWxkICkge1xuXHRcdFx0XHRcdGVsZW0gPSBlbGVtLmZpcnN0RWxlbWVudENoaWxkO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIGVsZW07XG5cdFx0XHR9ICkuYXBwZW5kKCB0aGlzICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH0sXG5cblx0d3JhcElubmVyOiBmdW5jdGlvbiggaHRtbCApIHtcblx0XHRpZiAoIGlzRnVuY3Rpb24oIGh0bWwgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS53cmFwSW5uZXIoIGh0bWwuY2FsbCggdGhpcywgaSApICk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgc2VsZiA9IGpRdWVyeSggdGhpcyApLFxuXHRcdFx0XHRjb250ZW50cyA9IHNlbGYuY29udGVudHMoKTtcblxuXHRcdFx0aWYgKCBjb250ZW50cy5sZW5ndGggKSB7XG5cdFx0XHRcdGNvbnRlbnRzLndyYXBBbGwoIGh0bWwgKTtcblxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c2VsZi5hcHBlbmQoIGh0bWwgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0d3JhcDogZnVuY3Rpb24oIGh0bWwgKSB7XG5cdFx0dmFyIGh0bWxJc0Z1bmN0aW9uID0gaXNGdW5jdGlvbiggaHRtbCApO1xuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRqUXVlcnkoIHRoaXMgKS53cmFwQWxsKCBodG1sSXNGdW5jdGlvbiA/IGh0bWwuY2FsbCggdGhpcywgaSApIDogaHRtbCApO1xuXHRcdH0gKTtcblx0fSxcblxuXHR1bndyYXA6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR0aGlzLnBhcmVudCggc2VsZWN0b3IgKS5ub3QoIFwiYm9keVwiICkuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkoIHRoaXMgKS5yZXBsYWNlV2l0aCggdGhpcy5jaGlsZE5vZGVzICk7XG5cdFx0fSApO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59ICk7XG5cblxualF1ZXJ5LmV4cHIucHNldWRvcy5oaWRkZW4gPSBmdW5jdGlvbiggZWxlbSApIHtcblx0cmV0dXJuICFqUXVlcnkuZXhwci5wc2V1ZG9zLnZpc2libGUoIGVsZW0gKTtcbn07XG5qUXVlcnkuZXhwci5wc2V1ZG9zLnZpc2libGUgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0cmV0dXJuICEhKCBlbGVtLm9mZnNldFdpZHRoIHx8IGVsZW0ub2Zmc2V0SGVpZ2h0IHx8IGVsZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggKTtcbn07XG5cblxuXG5cbmpRdWVyeS5hamF4U2V0dGluZ3MueGhyID0gZnVuY3Rpb24oKSB7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIG5ldyB3aW5kb3cuWE1MSHR0cFJlcXVlc3QoKTtcblx0fSBjYXRjaCAoIGUgKSB7fVxufTtcblxudmFyIHhoclN1Y2Nlc3NTdGF0dXMgPSB7XG5cblx0XHQvLyBGaWxlIHByb3RvY29sIGFsd2F5cyB5aWVsZHMgc3RhdHVzIGNvZGUgMCwgYXNzdW1lIDIwMFxuXHRcdDA6IDIwMCxcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG5cdFx0Ly8gdHJhYy0xNDUwOiBzb21ldGltZXMgSUUgcmV0dXJucyAxMjIzIHdoZW4gaXQgc2hvdWxkIGJlIDIwNFxuXHRcdDEyMjM6IDIwNFxuXHR9LFxuXHR4aHJTdXBwb3J0ZWQgPSBqUXVlcnkuYWpheFNldHRpbmdzLnhocigpO1xuXG5zdXBwb3J0LmNvcnMgPSAhIXhoclN1cHBvcnRlZCAmJiAoIFwid2l0aENyZWRlbnRpYWxzXCIgaW4geGhyU3VwcG9ydGVkICk7XG5zdXBwb3J0LmFqYXggPSB4aHJTdXBwb3J0ZWQgPSAhIXhoclN1cHBvcnRlZDtcblxualF1ZXJ5LmFqYXhUcmFuc3BvcnQoIGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXHR2YXIgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2s7XG5cblx0Ly8gQ3Jvc3MgZG9tYWluIG9ubHkgYWxsb3dlZCBpZiBzdXBwb3J0ZWQgdGhyb3VnaCBYTUxIdHRwUmVxdWVzdFxuXHRpZiAoIHN1cHBvcnQuY29ycyB8fCB4aHJTdXBwb3J0ZWQgJiYgIW9wdGlvbnMuY3Jvc3NEb21haW4gKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHNlbmQ6IGZ1bmN0aW9uKCBoZWFkZXJzLCBjb21wbGV0ZSApIHtcblx0XHRcdFx0dmFyIGksXG5cdFx0XHRcdFx0eGhyID0gb3B0aW9ucy54aHIoKTtcblxuXHRcdFx0XHR4aHIub3Blbihcblx0XHRcdFx0XHRvcHRpb25zLnR5cGUsXG5cdFx0XHRcdFx0b3B0aW9ucy51cmwsXG5cdFx0XHRcdFx0b3B0aW9ucy5hc3luYyxcblx0XHRcdFx0XHRvcHRpb25zLnVzZXJuYW1lLFxuXHRcdFx0XHRcdG9wdGlvbnMucGFzc3dvcmRcblx0XHRcdFx0KTtcblxuXHRcdFx0XHQvLyBBcHBseSBjdXN0b20gZmllbGRzIGlmIHByb3ZpZGVkXG5cdFx0XHRcdGlmICggb3B0aW9ucy54aHJGaWVsZHMgKSB7XG5cdFx0XHRcdFx0Zm9yICggaSBpbiBvcHRpb25zLnhockZpZWxkcyApIHtcblx0XHRcdFx0XHRcdHhoclsgaSBdID0gb3B0aW9ucy54aHJGaWVsZHNbIGkgXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBPdmVycmlkZSBtaW1lIHR5cGUgaWYgbmVlZGVkXG5cdFx0XHRcdGlmICggb3B0aW9ucy5taW1lVHlwZSAmJiB4aHIub3ZlcnJpZGVNaW1lVHlwZSApIHtcblx0XHRcdFx0XHR4aHIub3ZlcnJpZGVNaW1lVHlwZSggb3B0aW9ucy5taW1lVHlwZSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gWC1SZXF1ZXN0ZWQtV2l0aCBoZWFkZXJcblx0XHRcdFx0Ly8gRm9yIGNyb3NzLWRvbWFpbiByZXF1ZXN0cywgc2VlaW5nIGFzIGNvbmRpdGlvbnMgZm9yIGEgcHJlZmxpZ2h0IGFyZVxuXHRcdFx0XHQvLyBha2luIHRvIGEgamlnc2F3IHB1enpsZSwgd2Ugc2ltcGx5IG5ldmVyIHNldCBpdCB0byBiZSBzdXJlLlxuXHRcdFx0XHQvLyAoaXQgY2FuIGFsd2F5cyBiZSBzZXQgb24gYSBwZXItcmVxdWVzdCBiYXNpcyBvciBldmVuIHVzaW5nIGFqYXhTZXR1cClcblx0XHRcdFx0Ly8gRm9yIHNhbWUtZG9tYWluIHJlcXVlc3RzLCB3b24ndCBjaGFuZ2UgaGVhZGVyIGlmIGFscmVhZHkgcHJvdmlkZWQuXG5cdFx0XHRcdGlmICggIW9wdGlvbnMuY3Jvc3NEb21haW4gJiYgIWhlYWRlcnNbIFwiWC1SZXF1ZXN0ZWQtV2l0aFwiIF0gKSB7XG5cdFx0XHRcdFx0aGVhZGVyc1sgXCJYLVJlcXVlc3RlZC1XaXRoXCIgXSA9IFwiWE1MSHR0cFJlcXVlc3RcIjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFNldCBoZWFkZXJzXG5cdFx0XHRcdGZvciAoIGkgaW4gaGVhZGVycyApIHtcblx0XHRcdFx0XHR4aHIuc2V0UmVxdWVzdEhlYWRlciggaSwgaGVhZGVyc1sgaSBdICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBDYWxsYmFja1xuXHRcdFx0XHRjYWxsYmFjayA9IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XG5cdFx0XHRcdFx0XHRcdGNhbGxiYWNrID0gZXJyb3JDYWxsYmFjayA9IHhoci5vbmxvYWQgPVxuXHRcdFx0XHRcdFx0XHRcdHhoci5vbmVycm9yID0geGhyLm9uYWJvcnQgPSB4aHIub250aW1lb3V0ID1cblx0XHRcdFx0XHRcdFx0XHRcdHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsO1xuXG5cdFx0XHRcdFx0XHRcdGlmICggdHlwZSA9PT0gXCJhYm9ydFwiICkge1xuXHRcdFx0XHRcdFx0XHRcdHhoci5hYm9ydCgpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCB0eXBlID09PSBcImVycm9yXCIgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuXHRcdFx0XHRcdFx0XHRcdC8vIE9uIGEgbWFudWFsIG5hdGl2ZSBhYm9ydCwgSUU5IHRocm93c1xuXHRcdFx0XHRcdFx0XHRcdC8vIGVycm9ycyBvbiBhbnkgcHJvcGVydHkgYWNjZXNzIHRoYXQgaXMgbm90IHJlYWR5U3RhdGVcblx0XHRcdFx0XHRcdFx0XHRpZiAoIHR5cGVvZiB4aHIuc3RhdHVzICE9PSBcIm51bWJlclwiICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29tcGxldGUoIDAsIFwiZXJyb3JcIiApO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb21wbGV0ZShcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBGaWxlOiBwcm90b2NvbCBhbHdheXMgeWllbGRzIHN0YXR1cyAwOyBzZWUgdHJhYy04NjA1LCB0cmFjLTE0MjA3XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHhoci5zdGF0dXMsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHhoci5zdGF0dXNUZXh0XG5cdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRjb21wbGV0ZShcblx0XHRcdFx0XHRcdFx0XHRcdHhoclN1Y2Nlc3NTdGF0dXNbIHhoci5zdGF0dXMgXSB8fCB4aHIuc3RhdHVzLFxuXHRcdFx0XHRcdFx0XHRcdFx0eGhyLnN0YXR1c1RleHQsXG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBJRTkgaGFzIG5vIFhIUjIgYnV0IHRocm93cyBvbiBiaW5hcnkgKHRyYWMtMTE0MjYpXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBGb3IgWEhSMiBub24tdGV4dCwgbGV0IHRoZSBjYWxsZXIgaGFuZGxlIGl0IChnaC0yNDk4KVxuXHRcdFx0XHRcdFx0XHRcdFx0KCB4aHIucmVzcG9uc2VUeXBlIHx8IFwidGV4dFwiICkgIT09IFwidGV4dFwiICB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZW9mIHhoci5yZXNwb25zZVRleHQgIT09IFwic3RyaW5nXCIgP1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR7IGJpbmFyeTogeGhyLnJlc3BvbnNlIH0gOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7IHRleHQ6IHhoci5yZXNwb25zZVRleHQgfSxcblx0XHRcdFx0XHRcdFx0XHRcdHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKVxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdC8vIExpc3RlbiB0byBldmVudHNcblx0XHRcdFx0eGhyLm9ubG9hZCA9IGNhbGxiYWNrKCk7XG5cdFx0XHRcdGVycm9yQ2FsbGJhY2sgPSB4aHIub25lcnJvciA9IHhoci5vbnRpbWVvdXQgPSBjYWxsYmFjayggXCJlcnJvclwiICk7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgOSBvbmx5XG5cdFx0XHRcdC8vIFVzZSBvbnJlYWR5c3RhdGVjaGFuZ2UgdG8gcmVwbGFjZSBvbmFib3J0XG5cdFx0XHRcdC8vIHRvIGhhbmRsZSB1bmNhdWdodCBhYm9ydHNcblx0XHRcdFx0aWYgKCB4aHIub25hYm9ydCAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHhoci5vbmFib3J0ID0gZXJyb3JDYWxsYmFjaztcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0XHRcdC8vIENoZWNrIHJlYWR5U3RhdGUgYmVmb3JlIHRpbWVvdXQgYXMgaXQgY2hhbmdlc1xuXHRcdFx0XHRcdFx0aWYgKCB4aHIucmVhZHlTdGF0ZSA9PT0gNCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBBbGxvdyBvbmVycm9yIHRvIGJlIGNhbGxlZCBmaXJzdCxcblx0XHRcdFx0XHRcdFx0Ly8gYnV0IHRoYXQgd2lsbCBub3QgaGFuZGxlIGEgbmF0aXZlIGFib3J0XG5cdFx0XHRcdFx0XHRcdC8vIEFsc28sIHNhdmUgZXJyb3JDYWxsYmFjayB0byBhIHZhcmlhYmxlXG5cdFx0XHRcdFx0XHRcdC8vIGFzIHhoci5vbmVycm9yIGNhbm5vdCBiZSBhY2Nlc3NlZFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGVycm9yQ2FsbGJhY2soKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQ3JlYXRlIHRoZSBhYm9ydCBjYWxsYmFja1xuXHRcdFx0XHRjYWxsYmFjayA9IGNhbGxiYWNrKCBcImFib3J0XCIgKTtcblxuXHRcdFx0XHR0cnkge1xuXG5cdFx0XHRcdFx0Ly8gRG8gc2VuZCB0aGUgcmVxdWVzdCAodGhpcyBtYXkgcmFpc2UgYW4gZXhjZXB0aW9uKVxuXHRcdFx0XHRcdHhoci5zZW5kKCBvcHRpb25zLmhhc0NvbnRlbnQgJiYgb3B0aW9ucy5kYXRhIHx8IG51bGwgKTtcblx0XHRcdFx0fSBjYXRjaCAoIGUgKSB7XG5cblx0XHRcdFx0XHQvLyB0cmFjLTE0NjgzOiBPbmx5IHJldGhyb3cgaWYgdGhpcyBoYXNuJ3QgYmVlbiBub3RpZmllZCBhcyBhbiBlcnJvciB5ZXRcblx0XHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdFx0dGhyb3cgZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdGFib3J0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRjYWxsYmFjaygpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0fVxufSApO1xuXG5cblxuXG4vLyBQcmV2ZW50IGF1dG8tZXhlY3V0aW9uIG9mIHNjcmlwdHMgd2hlbiBubyBleHBsaWNpdCBkYXRhVHlwZSB3YXMgcHJvdmlkZWQgKFNlZSBnaC0yNDMyKVxualF1ZXJ5LmFqYXhQcmVmaWx0ZXIoIGZ1bmN0aW9uKCBzICkge1xuXHRpZiAoIHMuY3Jvc3NEb21haW4gKSB7XG5cdFx0cy5jb250ZW50cy5zY3JpcHQgPSBmYWxzZTtcblx0fVxufSApO1xuXG4vLyBJbnN0YWxsIHNjcmlwdCBkYXRhVHlwZVxualF1ZXJ5LmFqYXhTZXR1cCgge1xuXHRhY2NlcHRzOiB7XG5cdFx0c2NyaXB0OiBcInRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgXCIgK1xuXHRcdFx0XCJhcHBsaWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHRcIlxuXHR9LFxuXHRjb250ZW50czoge1xuXHRcdHNjcmlwdDogL1xcYig/OmphdmF8ZWNtYSlzY3JpcHRcXGIvXG5cdH0sXG5cdGNvbnZlcnRlcnM6IHtcblx0XHRcInRleHQgc2NyaXB0XCI6IGZ1bmN0aW9uKCB0ZXh0ICkge1xuXHRcdFx0alF1ZXJ5Lmdsb2JhbEV2YWwoIHRleHQgKTtcblx0XHRcdHJldHVybiB0ZXh0O1xuXHRcdH1cblx0fVxufSApO1xuXG4vLyBIYW5kbGUgY2FjaGUncyBzcGVjaWFsIGNhc2UgYW5kIGNyb3NzRG9tYWluXG5qUXVlcnkuYWpheFByZWZpbHRlciggXCJzY3JpcHRcIiwgZnVuY3Rpb24oIHMgKSB7XG5cdGlmICggcy5jYWNoZSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdHMuY2FjaGUgPSBmYWxzZTtcblx0fVxuXHRpZiAoIHMuY3Jvc3NEb21haW4gKSB7XG5cdFx0cy50eXBlID0gXCJHRVRcIjtcblx0fVxufSApO1xuXG4vLyBCaW5kIHNjcmlwdCB0YWcgaGFjayB0cmFuc3BvcnRcbmpRdWVyeS5hamF4VHJhbnNwb3J0KCBcInNjcmlwdFwiLCBmdW5jdGlvbiggcyApIHtcblxuXHQvLyBUaGlzIHRyYW5zcG9ydCBvbmx5IGRlYWxzIHdpdGggY3Jvc3MgZG9tYWluIG9yIGZvcmNlZC1ieS1hdHRycyByZXF1ZXN0c1xuXHRpZiAoIHMuY3Jvc3NEb21haW4gfHwgcy5zY3JpcHRBdHRycyApIHtcblx0XHR2YXIgc2NyaXB0LCBjYWxsYmFjaztcblx0XHRyZXR1cm4ge1xuXHRcdFx0c2VuZDogZnVuY3Rpb24oIF8sIGNvbXBsZXRlICkge1xuXHRcdFx0XHRzY3JpcHQgPSBqUXVlcnkoIFwiPHNjcmlwdD5cIiApXG5cdFx0XHRcdFx0LmF0dHIoIHMuc2NyaXB0QXR0cnMgfHwge30gKVxuXHRcdFx0XHRcdC5wcm9wKCB7IGNoYXJzZXQ6IHMuc2NyaXB0Q2hhcnNldCwgc3JjOiBzLnVybCB9IClcblx0XHRcdFx0XHQub24oIFwibG9hZCBlcnJvclwiLCBjYWxsYmFjayA9IGZ1bmN0aW9uKCBldnQgKSB7XG5cdFx0XHRcdFx0XHRzY3JpcHQucmVtb3ZlKCk7XG5cdFx0XHRcdFx0XHRjYWxsYmFjayA9IG51bGw7XG5cdFx0XHRcdFx0XHRpZiAoIGV2dCApIHtcblx0XHRcdFx0XHRcdFx0Y29tcGxldGUoIGV2dC50eXBlID09PSBcImVycm9yXCIgPyA0MDQgOiAyMDAsIGV2dC50eXBlICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSApO1xuXG5cdFx0XHRcdC8vIFVzZSBuYXRpdmUgRE9NIG1hbmlwdWxhdGlvbiB0byBhdm9pZCBvdXIgZG9tTWFuaXAgQUpBWCB0cmlja2VyeVxuXHRcdFx0XHRkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKCBzY3JpcHRbIDAgXSApO1xuXHRcdFx0fSxcblx0XHRcdGFib3J0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRjYWxsYmFjaygpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0fVxufSApO1xuXG5cblxuXG52YXIgb2xkQ2FsbGJhY2tzID0gW10sXG5cdHJqc29ucCA9IC8oPSlcXD8oPz0mfCQpfFxcP1xcPy87XG5cbi8vIERlZmF1bHQganNvbnAgc2V0dGluZ3NcbmpRdWVyeS5hamF4U2V0dXAoIHtcblx0anNvbnA6IFwiY2FsbGJhY2tcIixcblx0anNvbnBDYWxsYmFjazogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGNhbGxiYWNrID0gb2xkQ2FsbGJhY2tzLnBvcCgpIHx8ICggalF1ZXJ5LmV4cGFuZG8gKyBcIl9cIiArICggbm9uY2UuZ3VpZCsrICkgKTtcblx0XHR0aGlzWyBjYWxsYmFjayBdID0gdHJ1ZTtcblx0XHRyZXR1cm4gY2FsbGJhY2s7XG5cdH1cbn0gKTtcblxuLy8gRGV0ZWN0LCBub3JtYWxpemUgb3B0aW9ucyBhbmQgaW5zdGFsbCBjYWxsYmFja3MgZm9yIGpzb25wIHJlcXVlc3RzXG5qUXVlcnkuYWpheFByZWZpbHRlciggXCJqc29uIGpzb25wXCIsIGZ1bmN0aW9uKCBzLCBvcmlnaW5hbFNldHRpbmdzLCBqcVhIUiApIHtcblxuXHR2YXIgY2FsbGJhY2tOYW1lLCBvdmVyd3JpdHRlbiwgcmVzcG9uc2VDb250YWluZXIsXG5cdFx0anNvblByb3AgPSBzLmpzb25wICE9PSBmYWxzZSAmJiAoIHJqc29ucC50ZXN0KCBzLnVybCApID9cblx0XHRcdFwidXJsXCIgOlxuXHRcdFx0dHlwZW9mIHMuZGF0YSA9PT0gXCJzdHJpbmdcIiAmJlxuXHRcdFx0XHQoIHMuY29udGVudFR5cGUgfHwgXCJcIiApXG5cdFx0XHRcdFx0LmluZGV4T2YoIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIgKSA9PT0gMCAmJlxuXHRcdFx0XHRyanNvbnAudGVzdCggcy5kYXRhICkgJiYgXCJkYXRhXCJcblx0XHQpO1xuXG5cdC8vIEhhbmRsZSBpZmYgdGhlIGV4cGVjdGVkIGRhdGEgdHlwZSBpcyBcImpzb25wXCIgb3Igd2UgaGF2ZSBhIHBhcmFtZXRlciB0byBzZXRcblx0aWYgKCBqc29uUHJvcCB8fCBzLmRhdGFUeXBlc1sgMCBdID09PSBcImpzb25wXCIgKSB7XG5cblx0XHQvLyBHZXQgY2FsbGJhY2sgbmFtZSwgcmVtZW1iZXJpbmcgcHJlZXhpc3RpbmcgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGl0XG5cdFx0Y2FsbGJhY2tOYW1lID0gcy5qc29ucENhbGxiYWNrID0gaXNGdW5jdGlvbiggcy5qc29ucENhbGxiYWNrICkgP1xuXHRcdFx0cy5qc29ucENhbGxiYWNrKCkgOlxuXHRcdFx0cy5qc29ucENhbGxiYWNrO1xuXG5cdFx0Ly8gSW5zZXJ0IGNhbGxiYWNrIGludG8gdXJsIG9yIGZvcm0gZGF0YVxuXHRcdGlmICgganNvblByb3AgKSB7XG5cdFx0XHRzWyBqc29uUHJvcCBdID0gc1sganNvblByb3AgXS5yZXBsYWNlKCByanNvbnAsIFwiJDFcIiArIGNhbGxiYWNrTmFtZSApO1xuXHRcdH0gZWxzZSBpZiAoIHMuanNvbnAgIT09IGZhbHNlICkge1xuXHRcdFx0cy51cmwgKz0gKCBycXVlcnkudGVzdCggcy51cmwgKSA/IFwiJlwiIDogXCI/XCIgKSArIHMuanNvbnAgKyBcIj1cIiArIGNhbGxiYWNrTmFtZTtcblx0XHR9XG5cblx0XHQvLyBVc2UgZGF0YSBjb252ZXJ0ZXIgdG8gcmV0cmlldmUganNvbiBhZnRlciBzY3JpcHQgZXhlY3V0aW9uXG5cdFx0cy5jb252ZXJ0ZXJzWyBcInNjcmlwdCBqc29uXCIgXSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCAhcmVzcG9uc2VDb250YWluZXIgKSB7XG5cdFx0XHRcdGpRdWVyeS5lcnJvciggY2FsbGJhY2tOYW1lICsgXCIgd2FzIG5vdCBjYWxsZWRcIiApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlc3BvbnNlQ29udGFpbmVyWyAwIF07XG5cdFx0fTtcblxuXHRcdC8vIEZvcmNlIGpzb24gZGF0YVR5cGVcblx0XHRzLmRhdGFUeXBlc1sgMCBdID0gXCJqc29uXCI7XG5cblx0XHQvLyBJbnN0YWxsIGNhbGxiYWNrXG5cdFx0b3ZlcndyaXR0ZW4gPSB3aW5kb3dbIGNhbGxiYWNrTmFtZSBdO1xuXHRcdHdpbmRvd1sgY2FsbGJhY2tOYW1lIF0gPSBmdW5jdGlvbigpIHtcblx0XHRcdHJlc3BvbnNlQ29udGFpbmVyID0gYXJndW1lbnRzO1xuXHRcdH07XG5cblx0XHQvLyBDbGVhbi11cCBmdW5jdGlvbiAoZmlyZXMgYWZ0ZXIgY29udmVydGVycylcblx0XHRqcVhIUi5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBJZiBwcmV2aW91cyB2YWx1ZSBkaWRuJ3QgZXhpc3QgLSByZW1vdmUgaXRcblx0XHRcdGlmICggb3ZlcndyaXR0ZW4gPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0alF1ZXJ5KCB3aW5kb3cgKS5yZW1vdmVQcm9wKCBjYWxsYmFja05hbWUgKTtcblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIHJlc3RvcmUgcHJlZXhpc3RpbmcgdmFsdWVcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHdpbmRvd1sgY2FsbGJhY2tOYW1lIF0gPSBvdmVyd3JpdHRlbjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2F2ZSBiYWNrIGFzIGZyZWVcblx0XHRcdGlmICggc1sgY2FsbGJhY2tOYW1lIF0gKSB7XG5cblx0XHRcdFx0Ly8gTWFrZSBzdXJlIHRoYXQgcmUtdXNpbmcgdGhlIG9wdGlvbnMgZG9lc24ndCBzY3JldyB0aGluZ3MgYXJvdW5kXG5cdFx0XHRcdHMuanNvbnBDYWxsYmFjayA9IG9yaWdpbmFsU2V0dGluZ3MuanNvbnBDYWxsYmFjaztcblxuXHRcdFx0XHQvLyBTYXZlIHRoZSBjYWxsYmFjayBuYW1lIGZvciBmdXR1cmUgdXNlXG5cdFx0XHRcdG9sZENhbGxiYWNrcy5wdXNoKCBjYWxsYmFja05hbWUgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ2FsbCBpZiBpdCB3YXMgYSBmdW5jdGlvbiBhbmQgd2UgaGF2ZSBhIHJlc3BvbnNlXG5cdFx0XHRpZiAoIHJlc3BvbnNlQ29udGFpbmVyICYmIGlzRnVuY3Rpb24oIG92ZXJ3cml0dGVuICkgKSB7XG5cdFx0XHRcdG92ZXJ3cml0dGVuKCByZXNwb25zZUNvbnRhaW5lclsgMCBdICk7XG5cdFx0XHR9XG5cblx0XHRcdHJlc3BvbnNlQ29udGFpbmVyID0gb3ZlcndyaXR0ZW4gPSB1bmRlZmluZWQ7XG5cdFx0fSApO1xuXG5cdFx0Ly8gRGVsZWdhdGUgdG8gc2NyaXB0XG5cdFx0cmV0dXJuIFwic2NyaXB0XCI7XG5cdH1cbn0gKTtcblxuXG5cblxuLy8gU3VwcG9ydDogU2FmYXJpIDggb25seVxuLy8gSW4gU2FmYXJpIDggZG9jdW1lbnRzIGNyZWF0ZWQgdmlhIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudFxuLy8gY29sbGFwc2Ugc2libGluZyBmb3JtczogdGhlIHNlY29uZCBvbmUgYmVjb21lcyBhIGNoaWxkIG9mIHRoZSBmaXJzdCBvbmUuXG4vLyBCZWNhdXNlIG9mIHRoYXQsIHRoaXMgc2VjdXJpdHkgbWVhc3VyZSBoYXMgdG8gYmUgZGlzYWJsZWQgaW4gU2FmYXJpIDguXG4vLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MzM3XG5zdXBwb3J0LmNyZWF0ZUhUTUxEb2N1bWVudCA9ICggZnVuY3Rpb24oKSB7XG5cdHZhciBib2R5ID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCBcIlwiICkuYm9keTtcblx0Ym9keS5pbm5lckhUTUwgPSBcIjxmb3JtPjwvZm9ybT48Zm9ybT48L2Zvcm0+XCI7XG5cdHJldHVybiBib2R5LmNoaWxkTm9kZXMubGVuZ3RoID09PSAyO1xufSApKCk7XG5cblxuLy8gQXJndW1lbnQgXCJkYXRhXCIgc2hvdWxkIGJlIHN0cmluZyBvZiBodG1sXG4vLyBjb250ZXh0IChvcHRpb25hbCk6IElmIHNwZWNpZmllZCwgdGhlIGZyYWdtZW50IHdpbGwgYmUgY3JlYXRlZCBpbiB0aGlzIGNvbnRleHQsXG4vLyBkZWZhdWx0cyB0byBkb2N1bWVudFxuLy8ga2VlcFNjcmlwdHMgKG9wdGlvbmFsKTogSWYgdHJ1ZSwgd2lsbCBpbmNsdWRlIHNjcmlwdHMgcGFzc2VkIGluIHRoZSBodG1sIHN0cmluZ1xualF1ZXJ5LnBhcnNlSFRNTCA9IGZ1bmN0aW9uKCBkYXRhLCBjb250ZXh0LCBrZWVwU2NyaXB0cyApIHtcblx0aWYgKCB0eXBlb2YgZGF0YSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4gW107XG5cdH1cblx0aWYgKCB0eXBlb2YgY29udGV4dCA9PT0gXCJib29sZWFuXCIgKSB7XG5cdFx0a2VlcFNjcmlwdHMgPSBjb250ZXh0O1xuXHRcdGNvbnRleHQgPSBmYWxzZTtcblx0fVxuXG5cdHZhciBiYXNlLCBwYXJzZWQsIHNjcmlwdHM7XG5cblx0aWYgKCAhY29udGV4dCApIHtcblxuXHRcdC8vIFN0b3Agc2NyaXB0cyBvciBpbmxpbmUgZXZlbnQgaGFuZGxlcnMgZnJvbSBiZWluZyBleGVjdXRlZCBpbW1lZGlhdGVseVxuXHRcdC8vIGJ5IHVzaW5nIGRvY3VtZW50LmltcGxlbWVudGF0aW9uXG5cdFx0aWYgKCBzdXBwb3J0LmNyZWF0ZUhUTUxEb2N1bWVudCApIHtcblx0XHRcdGNvbnRleHQgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIFwiXCIgKTtcblxuXHRcdFx0Ly8gU2V0IHRoZSBiYXNlIGhyZWYgZm9yIHRoZSBjcmVhdGVkIGRvY3VtZW50XG5cdFx0XHQvLyBzbyBhbnkgcGFyc2VkIGVsZW1lbnRzIHdpdGggVVJMc1xuXHRcdFx0Ly8gYXJlIGJhc2VkIG9uIHRoZSBkb2N1bWVudCdzIFVSTCAoZ2gtMjk2NSlcblx0XHRcdGJhc2UgPSBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoIFwiYmFzZVwiICk7XG5cdFx0XHRiYXNlLmhyZWYgPSBkb2N1bWVudC5sb2NhdGlvbi5ocmVmO1xuXHRcdFx0Y29udGV4dC5oZWFkLmFwcGVuZENoaWxkKCBiYXNlICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnRleHQgPSBkb2N1bWVudDtcblx0XHR9XG5cdH1cblxuXHRwYXJzZWQgPSByc2luZ2xlVGFnLmV4ZWMoIGRhdGEgKTtcblx0c2NyaXB0cyA9ICFrZWVwU2NyaXB0cyAmJiBbXTtcblxuXHQvLyBTaW5nbGUgdGFnXG5cdGlmICggcGFyc2VkICkge1xuXHRcdHJldHVybiBbIGNvbnRleHQuY3JlYXRlRWxlbWVudCggcGFyc2VkWyAxIF0gKSBdO1xuXHR9XG5cblx0cGFyc2VkID0gYnVpbGRGcmFnbWVudCggWyBkYXRhIF0sIGNvbnRleHQsIHNjcmlwdHMgKTtcblxuXHRpZiAoIHNjcmlwdHMgJiYgc2NyaXB0cy5sZW5ndGggKSB7XG5cdFx0alF1ZXJ5KCBzY3JpcHRzICkucmVtb3ZlKCk7XG5cdH1cblxuXHRyZXR1cm4galF1ZXJ5Lm1lcmdlKCBbXSwgcGFyc2VkLmNoaWxkTm9kZXMgKTtcbn07XG5cblxuLyoqXG4gKiBMb2FkIGEgdXJsIGludG8gYSBwYWdlXG4gKi9cbmpRdWVyeS5mbi5sb2FkID0gZnVuY3Rpb24oIHVybCwgcGFyYW1zLCBjYWxsYmFjayApIHtcblx0dmFyIHNlbGVjdG9yLCB0eXBlLCByZXNwb25zZSxcblx0XHRzZWxmID0gdGhpcyxcblx0XHRvZmYgPSB1cmwuaW5kZXhPZiggXCIgXCIgKTtcblxuXHRpZiAoIG9mZiA+IC0xICkge1xuXHRcdHNlbGVjdG9yID0gc3RyaXBBbmRDb2xsYXBzZSggdXJsLnNsaWNlKCBvZmYgKSApO1xuXHRcdHVybCA9IHVybC5zbGljZSggMCwgb2ZmICk7XG5cdH1cblxuXHQvLyBJZiBpdCdzIGEgZnVuY3Rpb25cblx0aWYgKCBpc0Z1bmN0aW9uKCBwYXJhbXMgKSApIHtcblxuXHRcdC8vIFdlIGFzc3VtZSB0aGF0IGl0J3MgdGhlIGNhbGxiYWNrXG5cdFx0Y2FsbGJhY2sgPSBwYXJhbXM7XG5cdFx0cGFyYW1zID0gdW5kZWZpbmVkO1xuXG5cdC8vIE90aGVyd2lzZSwgYnVpbGQgYSBwYXJhbSBzdHJpbmdcblx0fSBlbHNlIGlmICggcGFyYW1zICYmIHR5cGVvZiBwYXJhbXMgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0dHlwZSA9IFwiUE9TVFwiO1xuXHR9XG5cblx0Ly8gSWYgd2UgaGF2ZSBlbGVtZW50cyB0byBtb2RpZnksIG1ha2UgdGhlIHJlcXVlc3Rcblx0aWYgKCBzZWxmLmxlbmd0aCA+IDAgKSB7XG5cdFx0alF1ZXJ5LmFqYXgoIHtcblx0XHRcdHVybDogdXJsLFxuXG5cdFx0XHQvLyBJZiBcInR5cGVcIiB2YXJpYWJsZSBpcyB1bmRlZmluZWQsIHRoZW4gXCJHRVRcIiBtZXRob2Qgd2lsbCBiZSB1c2VkLlxuXHRcdFx0Ly8gTWFrZSB2YWx1ZSBvZiB0aGlzIGZpZWxkIGV4cGxpY2l0IHNpbmNlXG5cdFx0XHQvLyB1c2VyIGNhbiBvdmVycmlkZSBpdCB0aHJvdWdoIGFqYXhTZXR1cCBtZXRob2Rcblx0XHRcdHR5cGU6IHR5cGUgfHwgXCJHRVRcIixcblx0XHRcdGRhdGFUeXBlOiBcImh0bWxcIixcblx0XHRcdGRhdGE6IHBhcmFtc1xuXHRcdH0gKS5kb25lKCBmdW5jdGlvbiggcmVzcG9uc2VUZXh0ICkge1xuXG5cdFx0XHQvLyBTYXZlIHJlc3BvbnNlIGZvciB1c2UgaW4gY29tcGxldGUgY2FsbGJhY2tcblx0XHRcdHJlc3BvbnNlID0gYXJndW1lbnRzO1xuXG5cdFx0XHRzZWxmLmh0bWwoIHNlbGVjdG9yID9cblxuXHRcdFx0XHQvLyBJZiBhIHNlbGVjdG9yIHdhcyBzcGVjaWZpZWQsIGxvY2F0ZSB0aGUgcmlnaHQgZWxlbWVudHMgaW4gYSBkdW1teSBkaXZcblx0XHRcdFx0Ly8gRXhjbHVkZSBzY3JpcHRzIHRvIGF2b2lkIElFICdQZXJtaXNzaW9uIERlbmllZCcgZXJyb3JzXG5cdFx0XHRcdGpRdWVyeSggXCI8ZGl2PlwiICkuYXBwZW5kKCBqUXVlcnkucGFyc2VIVE1MKCByZXNwb25zZVRleHQgKSApLmZpbmQoIHNlbGVjdG9yICkgOlxuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSB1c2UgdGhlIGZ1bGwgcmVzdWx0XG5cdFx0XHRcdHJlc3BvbnNlVGV4dCApO1xuXG5cdFx0Ly8gSWYgdGhlIHJlcXVlc3Qgc3VjY2VlZHMsIHRoaXMgZnVuY3Rpb24gZ2V0cyBcImRhdGFcIiwgXCJzdGF0dXNcIiwgXCJqcVhIUlwiXG5cdFx0Ly8gYnV0IHRoZXkgYXJlIGlnbm9yZWQgYmVjYXVzZSByZXNwb25zZSB3YXMgc2V0IGFib3ZlLlxuXHRcdC8vIElmIGl0IGZhaWxzLCB0aGlzIGZ1bmN0aW9uIGdldHMgXCJqcVhIUlwiLCBcInN0YXR1c1wiLCBcImVycm9yXCJcblx0XHR9ICkuYWx3YXlzKCBjYWxsYmFjayAmJiBmdW5jdGlvbigganFYSFIsIHN0YXR1cyApIHtcblx0XHRcdHNlbGYuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGNhbGxiYWNrLmFwcGx5KCB0aGlzLCByZXNwb25zZSB8fCBbIGpxWEhSLnJlc3BvbnNlVGV4dCwgc3RhdHVzLCBqcVhIUiBdICk7XG5cdFx0XHR9ICk7XG5cdFx0fSApO1xuXHR9XG5cblx0cmV0dXJuIHRoaXM7XG59O1xuXG5cblxuXG5qUXVlcnkuZXhwci5wc2V1ZG9zLmFuaW1hdGVkID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdHJldHVybiBqUXVlcnkuZ3JlcCggalF1ZXJ5LnRpbWVycywgZnVuY3Rpb24oIGZuICkge1xuXHRcdHJldHVybiBlbGVtID09PSBmbi5lbGVtO1xuXHR9ICkubGVuZ3RoO1xufTtcblxuXG5cblxualF1ZXJ5Lm9mZnNldCA9IHtcblx0c2V0T2Zmc2V0OiBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgaSApIHtcblx0XHR2YXIgY3VyUG9zaXRpb24sIGN1ckxlZnQsIGN1ckNTU1RvcCwgY3VyVG9wLCBjdXJPZmZzZXQsIGN1ckNTU0xlZnQsIGNhbGN1bGF0ZVBvc2l0aW9uLFxuXHRcdFx0cG9zaXRpb24gPSBqUXVlcnkuY3NzKCBlbGVtLCBcInBvc2l0aW9uXCIgKSxcblx0XHRcdGN1ckVsZW0gPSBqUXVlcnkoIGVsZW0gKSxcblx0XHRcdHByb3BzID0ge307XG5cblx0XHQvLyBTZXQgcG9zaXRpb24gZmlyc3QsIGluLWNhc2UgdG9wL2xlZnQgYXJlIHNldCBldmVuIG9uIHN0YXRpYyBlbGVtXG5cdFx0aWYgKCBwb3NpdGlvbiA9PT0gXCJzdGF0aWNcIiApIHtcblx0XHRcdGVsZW0uc3R5bGUucG9zaXRpb24gPSBcInJlbGF0aXZlXCI7XG5cdFx0fVxuXG5cdFx0Y3VyT2Zmc2V0ID0gY3VyRWxlbS5vZmZzZXQoKTtcblx0XHRjdXJDU1NUb3AgPSBqUXVlcnkuY3NzKCBlbGVtLCBcInRvcFwiICk7XG5cdFx0Y3VyQ1NTTGVmdCA9IGpRdWVyeS5jc3MoIGVsZW0sIFwibGVmdFwiICk7XG5cdFx0Y2FsY3VsYXRlUG9zaXRpb24gPSAoIHBvc2l0aW9uID09PSBcImFic29sdXRlXCIgfHwgcG9zaXRpb24gPT09IFwiZml4ZWRcIiApICYmXG5cdFx0XHQoIGN1ckNTU1RvcCArIGN1ckNTU0xlZnQgKS5pbmRleE9mKCBcImF1dG9cIiApID4gLTE7XG5cblx0XHQvLyBOZWVkIHRvIGJlIGFibGUgdG8gY2FsY3VsYXRlIHBvc2l0aW9uIGlmIGVpdGhlclxuXHRcdC8vIHRvcCBvciBsZWZ0IGlzIGF1dG8gYW5kIHBvc2l0aW9uIGlzIGVpdGhlciBhYnNvbHV0ZSBvciBmaXhlZFxuXHRcdGlmICggY2FsY3VsYXRlUG9zaXRpb24gKSB7XG5cdFx0XHRjdXJQb3NpdGlvbiA9IGN1ckVsZW0ucG9zaXRpb24oKTtcblx0XHRcdGN1clRvcCA9IGN1clBvc2l0aW9uLnRvcDtcblx0XHRcdGN1ckxlZnQgPSBjdXJQb3NpdGlvbi5sZWZ0O1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdGN1clRvcCA9IHBhcnNlRmxvYXQoIGN1ckNTU1RvcCApIHx8IDA7XG5cdFx0XHRjdXJMZWZ0ID0gcGFyc2VGbG9hdCggY3VyQ1NTTGVmdCApIHx8IDA7XG5cdFx0fVxuXG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBvcHRpb25zICkgKSB7XG5cblx0XHRcdC8vIFVzZSBqUXVlcnkuZXh0ZW5kIGhlcmUgdG8gYWxsb3cgbW9kaWZpY2F0aW9uIG9mIGNvb3JkaW5hdGVzIGFyZ3VtZW50IChnaC0xODQ4KVxuXHRcdFx0b3B0aW9ucyA9IG9wdGlvbnMuY2FsbCggZWxlbSwgaSwgalF1ZXJ5LmV4dGVuZCgge30sIGN1ck9mZnNldCApICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBvcHRpb25zLnRvcCAhPSBudWxsICkge1xuXHRcdFx0cHJvcHMudG9wID0gKCBvcHRpb25zLnRvcCAtIGN1ck9mZnNldC50b3AgKSArIGN1clRvcDtcblx0XHR9XG5cdFx0aWYgKCBvcHRpb25zLmxlZnQgIT0gbnVsbCApIHtcblx0XHRcdHByb3BzLmxlZnQgPSAoIG9wdGlvbnMubGVmdCAtIGN1ck9mZnNldC5sZWZ0ICkgKyBjdXJMZWZ0O1xuXHRcdH1cblxuXHRcdGlmICggXCJ1c2luZ1wiIGluIG9wdGlvbnMgKSB7XG5cdFx0XHRvcHRpb25zLnVzaW5nLmNhbGwoIGVsZW0sIHByb3BzICk7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y3VyRWxlbS5jc3MoIHByb3BzICk7XG5cdFx0fVxuXHR9XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cblx0Ly8gb2Zmc2V0KCkgcmVsYXRlcyBhbiBlbGVtZW50J3MgYm9yZGVyIGJveCB0byB0aGUgZG9jdW1lbnQgb3JpZ2luXG5cdG9mZnNldDogZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG5cblx0XHQvLyBQcmVzZXJ2ZSBjaGFpbmluZyBmb3Igc2V0dGVyXG5cdFx0aWYgKCBhcmd1bWVudHMubGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuIG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdHRoaXMgOlxuXHRcdFx0XHR0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRcdGpRdWVyeS5vZmZzZXQuc2V0T2Zmc2V0KCB0aGlzLCBvcHRpb25zLCBpICk7XG5cdFx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHR2YXIgcmVjdCwgd2luLFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXTtcblxuXHRcdGlmICggIWVsZW0gKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gUmV0dXJuIHplcm9zIGZvciBkaXNjb25uZWN0ZWQgYW5kIGhpZGRlbiAoZGlzcGxheTogbm9uZSkgZWxlbWVudHMgKGdoLTIzMTApXG5cdFx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG5cdFx0Ly8gUnVubmluZyBnZXRCb3VuZGluZ0NsaWVudFJlY3Qgb24gYVxuXHRcdC8vIGRpc2Nvbm5lY3RlZCBub2RlIGluIElFIHRocm93cyBhbiBlcnJvclxuXHRcdGlmICggIWVsZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4geyB0b3A6IDAsIGxlZnQ6IDAgfTtcblx0XHR9XG5cblx0XHQvLyBHZXQgZG9jdW1lbnQtcmVsYXRpdmUgcG9zaXRpb24gYnkgYWRkaW5nIHZpZXdwb3J0IHNjcm9sbCB0byB2aWV3cG9ydC1yZWxhdGl2ZSBnQkNSXG5cdFx0cmVjdCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cdFx0d2luID0gZWxlbS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O1xuXHRcdHJldHVybiB7XG5cdFx0XHR0b3A6IHJlY3QudG9wICsgd2luLnBhZ2VZT2Zmc2V0LFxuXHRcdFx0bGVmdDogcmVjdC5sZWZ0ICsgd2luLnBhZ2VYT2Zmc2V0XG5cdFx0fTtcblx0fSxcblxuXHQvLyBwb3NpdGlvbigpIHJlbGF0ZXMgYW4gZWxlbWVudCdzIG1hcmdpbiBib3ggdG8gaXRzIG9mZnNldCBwYXJlbnQncyBwYWRkaW5nIGJveFxuXHQvLyBUaGlzIGNvcnJlc3BvbmRzIHRvIHRoZSBiZWhhdmlvciBvZiBDU1MgYWJzb2x1dGUgcG9zaXRpb25pbmdcblx0cG9zaXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdGlmICggIXRoaXNbIDAgXSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR2YXIgb2Zmc2V0UGFyZW50LCBvZmZzZXQsIGRvYyxcblx0XHRcdGVsZW0gPSB0aGlzWyAwIF0sXG5cdFx0XHRwYXJlbnRPZmZzZXQgPSB7IHRvcDogMCwgbGVmdDogMCB9O1xuXG5cdFx0Ly8gcG9zaXRpb246Zml4ZWQgZWxlbWVudHMgYXJlIG9mZnNldCBmcm9tIHRoZSB2aWV3cG9ydCwgd2hpY2ggaXRzZWxmIGFsd2F5cyBoYXMgemVybyBvZmZzZXRcblx0XHRpZiAoIGpRdWVyeS5jc3MoIGVsZW0sIFwicG9zaXRpb25cIiApID09PSBcImZpeGVkXCIgKSB7XG5cblx0XHRcdC8vIEFzc3VtZSBwb3NpdGlvbjpmaXhlZCBpbXBsaWVzIGF2YWlsYWJpbGl0eSBvZiBnZXRCb3VuZGluZ0NsaWVudFJlY3Rcblx0XHRcdG9mZnNldCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0b2Zmc2V0ID0gdGhpcy5vZmZzZXQoKTtcblxuXHRcdFx0Ly8gQWNjb3VudCBmb3IgdGhlICpyZWFsKiBvZmZzZXQgcGFyZW50LCB3aGljaCBjYW4gYmUgdGhlIGRvY3VtZW50IG9yIGl0cyByb290IGVsZW1lbnRcblx0XHRcdC8vIHdoZW4gYSBzdGF0aWNhbGx5IHBvc2l0aW9uZWQgZWxlbWVudCBpcyBpZGVudGlmaWVkXG5cdFx0XHRkb2MgPSBlbGVtLm93bmVyRG9jdW1lbnQ7XG5cdFx0XHRvZmZzZXRQYXJlbnQgPSBlbGVtLm9mZnNldFBhcmVudCB8fCBkb2MuZG9jdW1lbnRFbGVtZW50O1xuXHRcdFx0d2hpbGUgKCBvZmZzZXRQYXJlbnQgJiZcblx0XHRcdFx0KCBvZmZzZXRQYXJlbnQgPT09IGRvYy5ib2R5IHx8IG9mZnNldFBhcmVudCA9PT0gZG9jLmRvY3VtZW50RWxlbWVudCApICYmXG5cdFx0XHRcdGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgXCJwb3NpdGlvblwiICkgPT09IFwic3RhdGljXCIgKSB7XG5cblx0XHRcdFx0b2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50LnBhcmVudE5vZGU7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIG9mZnNldFBhcmVudCAmJiBvZmZzZXRQYXJlbnQgIT09IGVsZW0gJiYgb2Zmc2V0UGFyZW50Lm5vZGVUeXBlID09PSAxICkge1xuXG5cdFx0XHRcdC8vIEluY29ycG9yYXRlIGJvcmRlcnMgaW50byBpdHMgb2Zmc2V0LCBzaW5jZSB0aGV5IGFyZSBvdXRzaWRlIGl0cyBjb250ZW50IG9yaWdpblxuXHRcdFx0XHRwYXJlbnRPZmZzZXQgPSBqUXVlcnkoIG9mZnNldFBhcmVudCApLm9mZnNldCgpO1xuXHRcdFx0XHRwYXJlbnRPZmZzZXQudG9wICs9IGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgXCJib3JkZXJUb3BXaWR0aFwiLCB0cnVlICk7XG5cdFx0XHRcdHBhcmVudE9mZnNldC5sZWZ0ICs9IGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgXCJib3JkZXJMZWZ0V2lkdGhcIiwgdHJ1ZSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFN1YnRyYWN0IHBhcmVudCBvZmZzZXRzIGFuZCBlbGVtZW50IG1hcmdpbnNcblx0XHRyZXR1cm4ge1xuXHRcdFx0dG9wOiBvZmZzZXQudG9wIC0gcGFyZW50T2Zmc2V0LnRvcCAtIGpRdWVyeS5jc3MoIGVsZW0sIFwibWFyZ2luVG9wXCIsIHRydWUgKSxcblx0XHRcdGxlZnQ6IG9mZnNldC5sZWZ0IC0gcGFyZW50T2Zmc2V0LmxlZnQgLSBqUXVlcnkuY3NzKCBlbGVtLCBcIm1hcmdpbkxlZnRcIiwgdHJ1ZSApXG5cdFx0fTtcblx0fSxcblxuXHQvLyBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBkb2N1bWVudEVsZW1lbnQgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcblx0Ly8gMSkgRm9yIHRoZSBlbGVtZW50IGluc2lkZSB0aGUgaWZyYW1lIHdpdGhvdXQgb2Zmc2V0UGFyZW50LCB0aGlzIG1ldGhvZCB3aWxsIHJldHVyblxuXHQvLyAgICBkb2N1bWVudEVsZW1lbnQgb2YgdGhlIHBhcmVudCB3aW5kb3dcblx0Ly8gMikgRm9yIHRoZSBoaWRkZW4gb3IgZGV0YWNoZWQgZWxlbWVudFxuXHQvLyAzKSBGb3IgYm9keSBvciBodG1sIGVsZW1lbnQsIGkuZS4gaW4gY2FzZSBvZiB0aGUgaHRtbCBub2RlIC0gaXQgd2lsbCByZXR1cm4gaXRzZWxmXG5cdC8vXG5cdC8vIGJ1dCB0aG9zZSBleGNlcHRpb25zIHdlcmUgbmV2ZXIgcHJlc2VudGVkIGFzIGEgcmVhbCBsaWZlIHVzZS1jYXNlc1xuXHQvLyBhbmQgbWlnaHQgYmUgY29uc2lkZXJlZCBhcyBtb3JlIHByZWZlcmFibGUgcmVzdWx0cy5cblx0Ly9cblx0Ly8gVGhpcyBsb2dpYywgaG93ZXZlciwgaXMgbm90IGd1YXJhbnRlZWQgYW5kIGNhbiBjaGFuZ2UgYXQgYW55IHBvaW50IGluIHRoZSBmdXR1cmVcblx0b2Zmc2V0UGFyZW50OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIG9mZnNldFBhcmVudCA9IHRoaXMub2Zmc2V0UGFyZW50O1xuXG5cdFx0XHR3aGlsZSAoIG9mZnNldFBhcmVudCAmJiBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnQsIFwicG9zaXRpb25cIiApID09PSBcInN0YXRpY1wiICkge1xuXHRcdFx0XHRvZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQub2Zmc2V0UGFyZW50O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGRvY3VtZW50RWxlbWVudDtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxuLy8gQ3JlYXRlIHNjcm9sbExlZnQgYW5kIHNjcm9sbFRvcCBtZXRob2RzXG5qUXVlcnkuZWFjaCggeyBzY3JvbGxMZWZ0OiBcInBhZ2VYT2Zmc2V0XCIsIHNjcm9sbFRvcDogXCJwYWdlWU9mZnNldFwiIH0sIGZ1bmN0aW9uKCBtZXRob2QsIHByb3AgKSB7XG5cdHZhciB0b3AgPSBcInBhZ2VZT2Zmc2V0XCIgPT09IHByb3A7XG5cblx0alF1ZXJ5LmZuWyBtZXRob2QgXSA9IGZ1bmN0aW9uKCB2YWwgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIG1ldGhvZCwgdmFsICkge1xuXG5cdFx0XHQvLyBDb2FsZXNjZSBkb2N1bWVudHMgYW5kIHdpbmRvd3Ncblx0XHRcdHZhciB3aW47XG5cdFx0XHRpZiAoIGlzV2luZG93KCBlbGVtICkgKSB7XG5cdFx0XHRcdHdpbiA9IGVsZW07XG5cdFx0XHR9IGVsc2UgaWYgKCBlbGVtLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHR3aW4gPSBlbGVtLmRlZmF1bHRWaWV3O1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHZhbCA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRyZXR1cm4gd2luID8gd2luWyBwcm9wIF0gOiBlbGVtWyBtZXRob2QgXTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCB3aW4gKSB7XG5cdFx0XHRcdHdpbi5zY3JvbGxUbyhcblx0XHRcdFx0XHQhdG9wID8gdmFsIDogd2luLnBhZ2VYT2Zmc2V0LFxuXHRcdFx0XHRcdHRvcCA/IHZhbCA6IHdpbi5wYWdlWU9mZnNldFxuXHRcdFx0XHQpO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRlbGVtWyBtZXRob2QgXSA9IHZhbDtcblx0XHRcdH1cblx0XHR9LCBtZXRob2QsIHZhbCwgYXJndW1lbnRzLmxlbmd0aCApO1xuXHR9O1xufSApO1xuXG4vLyBTdXBwb3J0OiBTYWZhcmkgPD03IC0gOS4xLCBDaHJvbWUgPD0zNyAtIDQ5XG4vLyBBZGQgdGhlIHRvcC9sZWZ0IGNzc0hvb2tzIHVzaW5nIGpRdWVyeS5mbi5wb3NpdGlvblxuLy8gV2Via2l0IGJ1ZzogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MDg0XG4vLyBCbGluayBidWc6IGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTU4OTM0N1xuLy8gZ2V0Q29tcHV0ZWRTdHlsZSByZXR1cm5zIHBlcmNlbnQgd2hlbiBzcGVjaWZpZWQgZm9yIHRvcC9sZWZ0L2JvdHRvbS9yaWdodDtcbi8vIHJhdGhlciB0aGFuIG1ha2UgdGhlIGNzcyBtb2R1bGUgZGVwZW5kIG9uIHRoZSBvZmZzZXQgbW9kdWxlLCBqdXN0IGNoZWNrIGZvciBpdCBoZXJlXG5qUXVlcnkuZWFjaCggWyBcInRvcFwiLCBcImxlZnRcIiBdLCBmdW5jdGlvbiggX2ksIHByb3AgKSB7XG5cdGpRdWVyeS5jc3NIb29rc1sgcHJvcCBdID0gYWRkR2V0SG9va0lmKCBzdXBwb3J0LnBpeGVsUG9zaXRpb24sXG5cdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkge1xuXHRcdFx0aWYgKCBjb21wdXRlZCApIHtcblx0XHRcdFx0Y29tcHV0ZWQgPSBjdXJDU1MoIGVsZW0sIHByb3AgKTtcblxuXHRcdFx0XHQvLyBJZiBjdXJDU1MgcmV0dXJucyBwZXJjZW50YWdlLCBmYWxsYmFjayB0byBvZmZzZXRcblx0XHRcdFx0cmV0dXJuIHJudW1ub25weC50ZXN0KCBjb21wdXRlZCApID9cblx0XHRcdFx0XHRqUXVlcnkoIGVsZW0gKS5wb3NpdGlvbigpWyBwcm9wIF0gKyBcInB4XCIgOlxuXHRcdFx0XHRcdGNvbXB1dGVkO1xuXHRcdFx0fVxuXHRcdH1cblx0KTtcbn0gKTtcblxuXG4vLyBDcmVhdGUgaW5uZXJIZWlnaHQsIGlubmVyV2lkdGgsIGhlaWdodCwgd2lkdGgsIG91dGVySGVpZ2h0IGFuZCBvdXRlcldpZHRoIG1ldGhvZHNcbmpRdWVyeS5lYWNoKCB7IEhlaWdodDogXCJoZWlnaHRcIiwgV2lkdGg6IFwid2lkdGhcIiB9LCBmdW5jdGlvbiggbmFtZSwgdHlwZSApIHtcblx0alF1ZXJ5LmVhY2goIHtcblx0XHRwYWRkaW5nOiBcImlubmVyXCIgKyBuYW1lLFxuXHRcdGNvbnRlbnQ6IHR5cGUsXG5cdFx0XCJcIjogXCJvdXRlclwiICsgbmFtZVxuXHR9LCBmdW5jdGlvbiggZGVmYXVsdEV4dHJhLCBmdW5jTmFtZSApIHtcblxuXHRcdC8vIE1hcmdpbiBpcyBvbmx5IGZvciBvdXRlckhlaWdodCwgb3V0ZXJXaWR0aFxuXHRcdGpRdWVyeS5mblsgZnVuY05hbWUgXSA9IGZ1bmN0aW9uKCBtYXJnaW4sIHZhbHVlICkge1xuXHRcdFx0dmFyIGNoYWluYWJsZSA9IGFyZ3VtZW50cy5sZW5ndGggJiYgKCBkZWZhdWx0RXh0cmEgfHwgdHlwZW9mIG1hcmdpbiAhPT0gXCJib29sZWFuXCIgKSxcblx0XHRcdFx0ZXh0cmEgPSBkZWZhdWx0RXh0cmEgfHwgKCBtYXJnaW4gPT09IHRydWUgfHwgdmFsdWUgPT09IHRydWUgPyBcIm1hcmdpblwiIDogXCJib3JkZXJcIiApO1xuXG5cdFx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgdHlwZSwgdmFsdWUgKSB7XG5cdFx0XHRcdHZhciBkb2M7XG5cblx0XHRcdFx0aWYgKCBpc1dpbmRvdyggZWxlbSApICkge1xuXG5cdFx0XHRcdFx0Ly8gJCggd2luZG93ICkub3V0ZXJXaWR0aC9IZWlnaHQgcmV0dXJuIHcvaCBpbmNsdWRpbmcgc2Nyb2xsYmFycyAoZ2gtMTcyOSlcblx0XHRcdFx0XHRyZXR1cm4gZnVuY05hbWUuaW5kZXhPZiggXCJvdXRlclwiICkgPT09IDAgP1xuXHRcdFx0XHRcdFx0ZWxlbVsgXCJpbm5lclwiICsgbmFtZSBdIDpcblx0XHRcdFx0XHRcdGVsZW0uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyBcImNsaWVudFwiICsgbmFtZSBdO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gR2V0IGRvY3VtZW50IHdpZHRoIG9yIGhlaWdodFxuXHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdFx0ZG9jID0gZWxlbS5kb2N1bWVudEVsZW1lbnQ7XG5cblx0XHRcdFx0XHQvLyBFaXRoZXIgc2Nyb2xsW1dpZHRoL0hlaWdodF0gb3Igb2Zmc2V0W1dpZHRoL0hlaWdodF0gb3IgY2xpZW50W1dpZHRoL0hlaWdodF0sXG5cdFx0XHRcdFx0Ly8gd2hpY2hldmVyIGlzIGdyZWF0ZXN0XG5cdFx0XHRcdFx0cmV0dXJuIE1hdGgubWF4KFxuXHRcdFx0XHRcdFx0ZWxlbS5ib2R5WyBcInNjcm9sbFwiICsgbmFtZSBdLCBkb2NbIFwic2Nyb2xsXCIgKyBuYW1lIF0sXG5cdFx0XHRcdFx0XHRlbGVtLmJvZHlbIFwib2Zmc2V0XCIgKyBuYW1lIF0sIGRvY1sgXCJvZmZzZXRcIiArIG5hbWUgXSxcblx0XHRcdFx0XHRcdGRvY1sgXCJjbGllbnRcIiArIG5hbWUgXVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/XG5cblx0XHRcdFx0XHQvLyBHZXQgd2lkdGggb3IgaGVpZ2h0IG9uIHRoZSBlbGVtZW50LCByZXF1ZXN0aW5nIGJ1dCBub3QgZm9yY2luZyBwYXJzZUZsb2F0XG5cdFx0XHRcdFx0alF1ZXJ5LmNzcyggZWxlbSwgdHlwZSwgZXh0cmEgKSA6XG5cblx0XHRcdFx0XHQvLyBTZXQgd2lkdGggb3IgaGVpZ2h0IG9uIHRoZSBlbGVtZW50XG5cdFx0XHRcdFx0alF1ZXJ5LnN0eWxlKCBlbGVtLCB0eXBlLCB2YWx1ZSwgZXh0cmEgKTtcblx0XHRcdH0sIHR5cGUsIGNoYWluYWJsZSA/IG1hcmdpbiA6IHVuZGVmaW5lZCwgY2hhaW5hYmxlICk7XG5cdFx0fTtcblx0fSApO1xufSApO1xuXG5cbmpRdWVyeS5lYWNoKCBbXG5cdFwiYWpheFN0YXJ0XCIsXG5cdFwiYWpheFN0b3BcIixcblx0XCJhamF4Q29tcGxldGVcIixcblx0XCJhamF4RXJyb3JcIixcblx0XCJhamF4U3VjY2Vzc1wiLFxuXHRcImFqYXhTZW5kXCJcbl0sIGZ1bmN0aW9uKCBfaSwgdHlwZSApIHtcblx0alF1ZXJ5LmZuWyB0eXBlIF0gPSBmdW5jdGlvbiggZm4gKSB7XG5cdFx0cmV0dXJuIHRoaXMub24oIHR5cGUsIGZuICk7XG5cdH07XG59ICk7XG5cblxuXG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblxuXHRiaW5kOiBmdW5jdGlvbiggdHlwZXMsIGRhdGEsIGZuICkge1xuXHRcdHJldHVybiB0aGlzLm9uKCB0eXBlcywgbnVsbCwgZGF0YSwgZm4gKTtcblx0fSxcblx0dW5iaW5kOiBmdW5jdGlvbiggdHlwZXMsIGZuICkge1xuXHRcdHJldHVybiB0aGlzLm9mZiggdHlwZXMsIG51bGwsIGZuICk7XG5cdH0sXG5cblx0ZGVsZWdhdGU6IGZ1bmN0aW9uKCBzZWxlY3RvciwgdHlwZXMsIGRhdGEsIGZuICkge1xuXHRcdHJldHVybiB0aGlzLm9uKCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuICk7XG5cdH0sXG5cdHVuZGVsZWdhdGU6IGZ1bmN0aW9uKCBzZWxlY3RvciwgdHlwZXMsIGZuICkge1xuXG5cdFx0Ly8gKCBuYW1lc3BhY2UgKSBvciAoIHNlbGVjdG9yLCB0eXBlcyBbLCBmbl0gKVxuXHRcdHJldHVybiBhcmd1bWVudHMubGVuZ3RoID09PSAxID9cblx0XHRcdHRoaXMub2ZmKCBzZWxlY3RvciwgXCIqKlwiICkgOlxuXHRcdFx0dGhpcy5vZmYoIHR5cGVzLCBzZWxlY3RvciB8fCBcIioqXCIsIGZuICk7XG5cdH0sXG5cblx0aG92ZXI6IGZ1bmN0aW9uKCBmbk92ZXIsIGZuT3V0ICkge1xuXHRcdHJldHVybiB0aGlzLm1vdXNlZW50ZXIoIGZuT3ZlciApLm1vdXNlbGVhdmUoIGZuT3V0IHx8IGZuT3ZlciApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5lYWNoKFxuXHQoIFwiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IHJlc2l6ZSBzY3JvbGwgY2xpY2sgZGJsY2xpY2sgXCIgK1xuXHRcIm1vdXNlZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZlIFwiICtcblx0XCJjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRleHRtZW51XCIgKS5zcGxpdCggXCIgXCIgKSxcblx0ZnVuY3Rpb24oIF9pLCBuYW1lICkge1xuXG5cdFx0Ly8gSGFuZGxlIGV2ZW50IGJpbmRpbmdcblx0XHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBkYXRhLCBmbiApIHtcblx0XHRcdHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMCA/XG5cdFx0XHRcdHRoaXMub24oIG5hbWUsIG51bGwsIGRhdGEsIGZuICkgOlxuXHRcdFx0XHR0aGlzLnRyaWdnZXIoIG5hbWUgKTtcblx0XHR9O1xuXHR9XG4pO1xuXG5cblxuXG4vLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHlcbi8vIE1ha2Ugc3VyZSB3ZSB0cmltIEJPTSBhbmQgTkJTUFxuLy8gUmVxdWlyZSB0aGF0IHRoZSBcIndoaXRlc3BhY2UgcnVuXCIgc3RhcnRzIGZyb20gYSBub24td2hpdGVzcGFjZVxuLy8gdG8gYXZvaWQgTyhOXjIpIGJlaGF2aW9yIHdoZW4gdGhlIGVuZ2luZSB3b3VsZCB0cnkgbWF0Y2hpbmcgXCJcXHMrJFwiIGF0IGVhY2ggc3BhY2UgcG9zaXRpb24uXG52YXIgcnRyaW0gPSAvXltcXHNcXHVGRUZGXFx4QTBdK3woW15cXHNcXHVGRUZGXFx4QTBdKVtcXHNcXHVGRUZGXFx4QTBdKyQvZztcblxuLy8gQmluZCBhIGZ1bmN0aW9uIHRvIGEgY29udGV4dCwgb3B0aW9uYWxseSBwYXJ0aWFsbHkgYXBwbHlpbmcgYW55XG4vLyBhcmd1bWVudHMuXG4vLyBqUXVlcnkucHJveHkgaXMgZGVwcmVjYXRlZCB0byBwcm9tb3RlIHN0YW5kYXJkcyAoc3BlY2lmaWNhbGx5IEZ1bmN0aW9uI2JpbmQpXG4vLyBIb3dldmVyLCBpdCBpcyBub3Qgc2xhdGVkIGZvciByZW1vdmFsIGFueSB0aW1lIHNvb25cbmpRdWVyeS5wcm94eSA9IGZ1bmN0aW9uKCBmbiwgY29udGV4dCApIHtcblx0dmFyIHRtcCwgYXJncywgcHJveHk7XG5cblx0aWYgKCB0eXBlb2YgY29udGV4dCA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHR0bXAgPSBmblsgY29udGV4dCBdO1xuXHRcdGNvbnRleHQgPSBmbjtcblx0XHRmbiA9IHRtcDtcblx0fVxuXG5cdC8vIFF1aWNrIGNoZWNrIHRvIGRldGVybWluZSBpZiB0YXJnZXQgaXMgY2FsbGFibGUsIGluIHRoZSBzcGVjXG5cdC8vIHRoaXMgdGhyb3dzIGEgVHlwZUVycm9yLCBidXQgd2Ugd2lsbCBqdXN0IHJldHVybiB1bmRlZmluZWQuXG5cdGlmICggIWlzRnVuY3Rpb24oIGZuICkgKSB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdC8vIFNpbXVsYXRlZCBiaW5kXG5cdGFyZ3MgPSBzbGljZS5jYWxsKCBhcmd1bWVudHMsIDIgKTtcblx0cHJveHkgPSBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gZm4uYXBwbHkoIGNvbnRleHQgfHwgdGhpcywgYXJncy5jb25jYXQoIHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApICkgKTtcblx0fTtcblxuXHQvLyBTZXQgdGhlIGd1aWQgb2YgdW5pcXVlIGhhbmRsZXIgdG8gdGhlIHNhbWUgb2Ygb3JpZ2luYWwgaGFuZGxlciwgc28gaXQgY2FuIGJlIHJlbW92ZWRcblx0cHJveHkuZ3VpZCA9IGZuLmd1aWQgPSBmbi5ndWlkIHx8IGpRdWVyeS5ndWlkKys7XG5cblx0cmV0dXJuIHByb3h5O1xufTtcblxualF1ZXJ5LmhvbGRSZWFkeSA9IGZ1bmN0aW9uKCBob2xkICkge1xuXHRpZiAoIGhvbGQgKSB7XG5cdFx0alF1ZXJ5LnJlYWR5V2FpdCsrO1xuXHR9IGVsc2Uge1xuXHRcdGpRdWVyeS5yZWFkeSggdHJ1ZSApO1xuXHR9XG59O1xualF1ZXJ5LmlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xualF1ZXJ5LnBhcnNlSlNPTiA9IEpTT04ucGFyc2U7XG5qUXVlcnkubm9kZU5hbWUgPSBub2RlTmFtZTtcbmpRdWVyeS5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjtcbmpRdWVyeS5pc1dpbmRvdyA9IGlzV2luZG93O1xualF1ZXJ5LmNhbWVsQ2FzZSA9IGNhbWVsQ2FzZTtcbmpRdWVyeS50eXBlID0gdG9UeXBlO1xuXG5qUXVlcnkubm93ID0gRGF0ZS5ub3c7XG5cbmpRdWVyeS5pc051bWVyaWMgPSBmdW5jdGlvbiggb2JqICkge1xuXG5cdC8vIEFzIG9mIGpRdWVyeSAzLjAsIGlzTnVtZXJpYyBpcyBsaW1pdGVkIHRvXG5cdC8vIHN0cmluZ3MgYW5kIG51bWJlcnMgKHByaW1pdGl2ZXMgb3Igb2JqZWN0cylcblx0Ly8gdGhhdCBjYW4gYmUgY29lcmNlZCB0byBmaW5pdGUgbnVtYmVycyAoZ2gtMjY2Milcblx0dmFyIHR5cGUgPSBqUXVlcnkudHlwZSggb2JqICk7XG5cdHJldHVybiAoIHR5cGUgPT09IFwibnVtYmVyXCIgfHwgdHlwZSA9PT0gXCJzdHJpbmdcIiApICYmXG5cblx0XHQvLyBwYXJzZUZsb2F0IE5hTnMgbnVtZXJpYy1jYXN0IGZhbHNlIHBvc2l0aXZlcyAoXCJcIilcblx0XHQvLyAuLi5idXQgbWlzaW50ZXJwcmV0cyBsZWFkaW5nLW51bWJlciBzdHJpbmdzLCBwYXJ0aWN1bGFybHkgaGV4IGxpdGVyYWxzIChcIjB4Li4uXCIpXG5cdFx0Ly8gc3VidHJhY3Rpb24gZm9yY2VzIGluZmluaXRpZXMgdG8gTmFOXG5cdFx0IWlzTmFOKCBvYmogLSBwYXJzZUZsb2F0KCBvYmogKSApO1xufTtcblxualF1ZXJ5LnRyaW0gPSBmdW5jdGlvbiggdGV4dCApIHtcblx0cmV0dXJuIHRleHQgPT0gbnVsbCA/XG5cdFx0XCJcIiA6XG5cdFx0KCB0ZXh0ICsgXCJcIiApLnJlcGxhY2UoIHJ0cmltLCBcIiQxXCIgKTtcbn07XG5cblxuXG4vLyBSZWdpc3RlciBhcyBhIG5hbWVkIEFNRCBtb2R1bGUsIHNpbmNlIGpRdWVyeSBjYW4gYmUgY29uY2F0ZW5hdGVkIHdpdGggb3RoZXJcbi8vIGZpbGVzIHRoYXQgbWF5IHVzZSBkZWZpbmUsIGJ1dCBub3QgdmlhIGEgcHJvcGVyIGNvbmNhdGVuYXRpb24gc2NyaXB0IHRoYXRcbi8vIHVuZGVyc3RhbmRzIGFub255bW91cyBBTUQgbW9kdWxlcy4gQSBuYW1lZCBBTUQgaXMgc2FmZXN0IGFuZCBtb3N0IHJvYnVzdFxuLy8gd2F5IHRvIHJlZ2lzdGVyLiBMb3dlcmNhc2UganF1ZXJ5IGlzIHVzZWQgYmVjYXVzZSBBTUQgbW9kdWxlIG5hbWVzIGFyZVxuLy8gZGVyaXZlZCBmcm9tIGZpbGUgbmFtZXMsIGFuZCBqUXVlcnkgaXMgbm9ybWFsbHkgZGVsaXZlcmVkIGluIGEgbG93ZXJjYXNlXG4vLyBmaWxlIG5hbWUuIERvIHRoaXMgYWZ0ZXIgY3JlYXRpbmcgdGhlIGdsb2JhbCBzbyB0aGF0IGlmIGFuIEFNRCBtb2R1bGUgd2FudHNcbi8vIHRvIGNhbGwgbm9Db25mbGljdCB0byBoaWRlIHRoaXMgdmVyc2lvbiBvZiBqUXVlcnksIGl0IHdpbGwgd29yay5cblxuLy8gTm90ZSB0aGF0IGZvciBtYXhpbXVtIHBvcnRhYmlsaXR5LCBsaWJyYXJpZXMgdGhhdCBhcmUgbm90IGpRdWVyeSBzaG91bGRcbi8vIGRlY2xhcmUgdGhlbXNlbHZlcyBhcyBhbm9ueW1vdXMgbW9kdWxlcywgYW5kIGF2b2lkIHNldHRpbmcgYSBnbG9iYWwgaWYgYW5cbi8vIEFNRCBsb2FkZXIgaXMgcHJlc2VudC4galF1ZXJ5IGlzIGEgc3BlY2lhbCBjYXNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlXG4vLyBodHRwczovL2dpdGh1Yi5jb20vanJidXJrZS9yZXF1aXJlanMvd2lraS9VcGRhdGluZy1leGlzdGluZy1saWJyYXJpZXMjd2lraS1hbm9uXG5cbmlmICggdHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQgKSB7XG5cdGRlZmluZSggXCJqcXVlcnlcIiwgW10sIGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBqUXVlcnk7XG5cdH0gKTtcbn1cblxuXG5cblxudmFyXG5cblx0Ly8gTWFwIG92ZXIgalF1ZXJ5IGluIGNhc2Ugb2Ygb3ZlcndyaXRlXG5cdF9qUXVlcnkgPSB3aW5kb3cualF1ZXJ5LFxuXG5cdC8vIE1hcCBvdmVyIHRoZSAkIGluIGNhc2Ugb2Ygb3ZlcndyaXRlXG5cdF8kID0gd2luZG93LiQ7XG5cbmpRdWVyeS5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oIGRlZXAgKSB7XG5cdGlmICggd2luZG93LiQgPT09IGpRdWVyeSApIHtcblx0XHR3aW5kb3cuJCA9IF8kO1xuXHR9XG5cblx0aWYgKCBkZWVwICYmIHdpbmRvdy5qUXVlcnkgPT09IGpRdWVyeSApIHtcblx0XHR3aW5kb3cualF1ZXJ5ID0gX2pRdWVyeTtcblx0fVxuXG5cdHJldHVybiBqUXVlcnk7XG59O1xuXG4vLyBFeHBvc2UgalF1ZXJ5IGFuZCAkIGlkZW50aWZpZXJzLCBldmVuIGluIEFNRFxuLy8gKHRyYWMtNzEwMiNjb21tZW50OjEwLCBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2pxdWVyeS9wdWxsLzU1Nylcbi8vIGFuZCBDb21tb25KUyBmb3IgYnJvd3NlciBlbXVsYXRvcnMgKHRyYWMtMTM1NjYpXG5pZiAoIHR5cGVvZiBub0dsb2JhbCA9PT0gXCJ1bmRlZmluZWRcIiApIHtcblx0d2luZG93LmpRdWVyeSA9IHdpbmRvdy4kID0galF1ZXJ5O1xufVxuXG5cblxuXG5yZXR1cm4galF1ZXJ5O1xufSApO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBEYXRhVmlldyA9IGdldE5hdGl2ZShyb290LCAnRGF0YVZpZXcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBEYXRhVmlldztcbiIsInZhciBoYXNoQ2xlYXIgPSByZXF1aXJlKCcuL19oYXNoQ2xlYXInKSxcbiAgICBoYXNoRGVsZXRlID0gcmVxdWlyZSgnLi9faGFzaERlbGV0ZScpLFxuICAgIGhhc2hHZXQgPSByZXF1aXJlKCcuL19oYXNoR2V0JyksXG4gICAgaGFzaEhhcyA9IHJlcXVpcmUoJy4vX2hhc2hIYXMnKSxcbiAgICBoYXNoU2V0ID0gcmVxdWlyZSgnLi9faGFzaFNldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBoYXNoIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gSGFzaChlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBIYXNoYC5cbkhhc2gucHJvdG90eXBlLmNsZWFyID0gaGFzaENsZWFyO1xuSGFzaC5wcm90b3R5cGVbJ2RlbGV0ZSddID0gaGFzaERlbGV0ZTtcbkhhc2gucHJvdG90eXBlLmdldCA9IGhhc2hHZXQ7XG5IYXNoLnByb3RvdHlwZS5oYXMgPSBoYXNoSGFzO1xuSGFzaC5wcm90b3R5cGUuc2V0ID0gaGFzaFNldDtcblxubW9kdWxlLmV4cG9ydHMgPSBIYXNoO1xuIiwidmFyIGxpc3RDYWNoZUNsZWFyID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlQ2xlYXInKSxcbiAgICBsaXN0Q2FjaGVEZWxldGUgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVEZWxldGUnKSxcbiAgICBsaXN0Q2FjaGVHZXQgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVHZXQnKSxcbiAgICBsaXN0Q2FjaGVIYXMgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVIYXMnKSxcbiAgICBsaXN0Q2FjaGVTZXQgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGxpc3QgY2FjaGUgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBMaXN0Q2FjaGUoZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgTGlzdENhY2hlYC5cbkxpc3RDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBsaXN0Q2FjaGVDbGVhcjtcbkxpc3RDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbGlzdENhY2hlRGVsZXRlO1xuTGlzdENhY2hlLnByb3RvdHlwZS5nZXQgPSBsaXN0Q2FjaGVHZXQ7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmhhcyA9IGxpc3RDYWNoZUhhcztcbkxpc3RDYWNoZS5wcm90b3R5cGUuc2V0ID0gbGlzdENhY2hlU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IExpc3RDYWNoZTtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgTWFwID0gZ2V0TmF0aXZlKHJvb3QsICdNYXAnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBNYXA7XG4iLCJ2YXIgbWFwQ2FjaGVDbGVhciA9IHJlcXVpcmUoJy4vX21hcENhY2hlQ2xlYXInKSxcbiAgICBtYXBDYWNoZURlbGV0ZSA9IHJlcXVpcmUoJy4vX21hcENhY2hlRGVsZXRlJyksXG4gICAgbWFwQ2FjaGVHZXQgPSByZXF1aXJlKCcuL19tYXBDYWNoZUdldCcpLFxuICAgIG1hcENhY2hlSGFzID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVIYXMnKSxcbiAgICBtYXBDYWNoZVNldCA9IHJlcXVpcmUoJy4vX21hcENhY2hlU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG1hcCBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBNYXBDYWNoZShlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBNYXBDYWNoZWAuXG5NYXBDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBtYXBDYWNoZUNsZWFyO1xuTWFwQ2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IG1hcENhY2hlRGVsZXRlO1xuTWFwQ2FjaGUucHJvdG90eXBlLmdldCA9IG1hcENhY2hlR2V0O1xuTWFwQ2FjaGUucHJvdG90eXBlLmhhcyA9IG1hcENhY2hlSGFzO1xuTWFwQ2FjaGUucHJvdG90eXBlLnNldCA9IG1hcENhY2hlU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcENhY2hlO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBQcm9taXNlID0gZ2V0TmF0aXZlKHJvb3QsICdQcm9taXNlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gUHJvbWlzZTtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgU2V0ID0gZ2V0TmF0aXZlKHJvb3QsICdTZXQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTZXQ7XG4iLCJ2YXIgTWFwQ2FjaGUgPSByZXF1aXJlKCcuL19NYXBDYWNoZScpLFxuICAgIHNldENhY2hlQWRkID0gcmVxdWlyZSgnLi9fc2V0Q2FjaGVBZGQnKSxcbiAgICBzZXRDYWNoZUhhcyA9IHJlcXVpcmUoJy4vX3NldENhY2hlSGFzJyk7XG5cbi8qKlxuICpcbiAqIENyZWF0ZXMgYW4gYXJyYXkgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIHVuaXF1ZSB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gU2V0Q2FjaGUodmFsdWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gdmFsdWVzID09IG51bGwgPyAwIDogdmFsdWVzLmxlbmd0aDtcblxuICB0aGlzLl9fZGF0YV9fID0gbmV3IE1hcENhY2hlO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHRoaXMuYWRkKHZhbHVlc1tpbmRleF0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBTZXRDYWNoZWAuXG5TZXRDYWNoZS5wcm90b3R5cGUuYWRkID0gU2V0Q2FjaGUucHJvdG90eXBlLnB1c2ggPSBzZXRDYWNoZUFkZDtcblNldENhY2hlLnByb3RvdHlwZS5oYXMgPSBzZXRDYWNoZUhhcztcblxubW9kdWxlLmV4cG9ydHMgPSBTZXRDYWNoZTtcbiIsInZhciBMaXN0Q2FjaGUgPSByZXF1aXJlKCcuL19MaXN0Q2FjaGUnKSxcbiAgICBzdGFja0NsZWFyID0gcmVxdWlyZSgnLi9fc3RhY2tDbGVhcicpLFxuICAgIHN0YWNrRGVsZXRlID0gcmVxdWlyZSgnLi9fc3RhY2tEZWxldGUnKSxcbiAgICBzdGFja0dldCA9IHJlcXVpcmUoJy4vX3N0YWNrR2V0JyksXG4gICAgc3RhY2tIYXMgPSByZXF1aXJlKCcuL19zdGFja0hhcycpLFxuICAgIHN0YWNrU2V0ID0gcmVxdWlyZSgnLi9fc3RhY2tTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgc3RhY2sgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gU3RhY2soZW50cmllcykge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlKGVudHJpZXMpO1xuICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBTdGFja2AuXG5TdGFjay5wcm90b3R5cGUuY2xlYXIgPSBzdGFja0NsZWFyO1xuU3RhY2sucHJvdG90eXBlWydkZWxldGUnXSA9IHN0YWNrRGVsZXRlO1xuU3RhY2sucHJvdG90eXBlLmdldCA9IHN0YWNrR2V0O1xuU3RhY2sucHJvdG90eXBlLmhhcyA9IHN0YWNrSGFzO1xuU3RhY2sucHJvdG90eXBlLnNldCA9IHN0YWNrU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN0YWNrO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFN5bWJvbCA9IHJvb3QuU3ltYm9sO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bWJvbDtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBVaW50OEFycmF5ID0gcm9vdC5VaW50OEFycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFVpbnQ4QXJyYXk7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFdlYWtNYXAgPSBnZXROYXRpdmUocm9vdCwgJ1dlYWtNYXAnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBXZWFrTWFwO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZm9yRWFjaGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5RWFjaChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChpdGVyYXRlZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkgPT09IGZhbHNlKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5RWFjaDtcbiIsIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZpbHRlcmAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBhcnJheUZpbHRlcihhcnJheSwgcHJlZGljYXRlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICByZXNJbmRleCA9IDAsXG4gICAgICByZXN1bHQgPSBbXTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUZpbHRlcjtcbiIsInZhciBiYXNlVGltZXMgPSByZXF1aXJlKCcuL19iYXNlVGltZXMnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgdGhlIGFycmF5LWxpa2UgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBhcnJheUxpa2VLZXlzKHZhbHVlLCBpbmhlcml0ZWQpIHtcbiAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSksXG4gICAgICBpc0FyZyA9ICFpc0FyciAmJiBpc0FyZ3VtZW50cyh2YWx1ZSksXG4gICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgIWlzQXJnICYmIGlzQnVmZmVyKHZhbHVlKSxcbiAgICAgIGlzVHlwZSA9ICFpc0FyciAmJiAhaXNBcmcgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkodmFsdWUpLFxuICAgICAgc2tpcEluZGV4ZXMgPSBpc0FyciB8fCBpc0FyZyB8fCBpc0J1ZmYgfHwgaXNUeXBlLFxuICAgICAgcmVzdWx0ID0gc2tpcEluZGV4ZXMgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpIDogW10sXG4gICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmICgoaW5oZXJpdGVkIHx8IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpICYmXG4gICAgICAgICEoc2tpcEluZGV4ZXMgJiYgKFxuICAgICAgICAgICAvLyBTYWZhcmkgOSBoYXMgZW51bWVyYWJsZSBgYXJndW1lbnRzLmxlbmd0aGAgaW4gc3RyaWN0IG1vZGUuXG4gICAgICAgICAgIGtleSA9PSAnbGVuZ3RoJyB8fFxuICAgICAgICAgICAvLyBOb2RlLmpzIDAuMTAgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gYnVmZmVycy5cbiAgICAgICAgICAgKGlzQnVmZiAmJiAoa2V5ID09ICdvZmZzZXQnIHx8IGtleSA9PSAncGFyZW50JykpIHx8XG4gICAgICAgICAgIC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbiAgICAgICAgICAgKGlzVHlwZSAmJiAoa2V5ID09ICdidWZmZXInIHx8IGtleSA9PSAnYnl0ZUxlbmd0aCcgfHwga2V5ID09ICdieXRlT2Zmc2V0JykpIHx8XG4gICAgICAgICAgIC8vIFNraXAgaW5kZXggcHJvcGVydGllcy5cbiAgICAgICAgICAgaXNJbmRleChrZXksIGxlbmd0aClcbiAgICAgICAgKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlMaWtlS2V5cztcbiIsIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLm1hcGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gKiBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBhcnJheU1hcChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlNYXA7XG4iLCIvKipcbiAqIEFwcGVuZHMgdGhlIGVsZW1lbnRzIG9mIGB2YWx1ZXNgIHRvIGBhcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhcHBlbmQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlQdXNoKGFycmF5LCB2YWx1ZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgb2Zmc2V0ID0gYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbb2Zmc2V0ICsgaW5kZXhdID0gdmFsdWVzW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlQdXNoO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc29tZWAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gKiBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbnkgZWxlbWVudCBwYXNzZXMgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5U29tZShhcnJheSwgcHJlZGljYXRlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheVNvbWU7XG4iLCIvKipcbiAqIENvbnZlcnRzIGFuIEFTQ0lJIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBhc2NpaVRvQXJyYXkoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcuc3BsaXQoJycpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzY2lpVG9BcnJheTtcbiIsInZhciBiYXNlQXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19iYXNlQXNzaWduVmFsdWUnKSxcbiAgICBlcSA9IHJlcXVpcmUoJy4vZXEnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBBc3NpZ25zIGB2YWx1ZWAgdG8gYGtleWAgb2YgYG9iamVjdGAgaWYgdGhlIGV4aXN0aW5nIHZhbHVlIGlzIG5vdCBlcXVpdmFsZW50XG4gKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gKi9cbmZ1bmN0aW9uIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XTtcbiAgaWYgKCEoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYgZXEob2JqVmFsdWUsIHZhbHVlKSkgfHxcbiAgICAgICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpKSB7XG4gICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhc3NpZ25WYWx1ZTtcbiIsInZhciBlcSA9IHJlcXVpcmUoJy4vZXEnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBpbmRleCBhdCB3aGljaCB0aGUgYGtleWAgaXMgZm91bmQgaW4gYGFycmF5YCBvZiBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYXNzb2NJbmRleE9mKGFycmF5LCBrZXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgaWYgKGVxKGFycmF5W2xlbmd0aF1bMF0sIGtleSkpIHtcbiAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhc3NvY0luZGV4T2Y7XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXNzaWduYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXNcbiAqIG9yIGBjdXN0b21pemVyYCBmdW5jdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlQXNzaWduKG9iamVjdCwgc291cmNlKSB7XG4gIHJldHVybiBvYmplY3QgJiYgY29weU9iamVjdChzb3VyY2UsIGtleXMoc291cmNlKSwgb2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQXNzaWduO1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25JbmAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzXG4gKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnbkluKG9iamVjdCwgc291cmNlKSB7XG4gIHJldHVybiBvYmplY3QgJiYgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VBc3NpZ25JbjtcbiIsInZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2RlZmluZVByb3BlcnR5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGFzc2lnblZhbHVlYCBhbmQgYGFzc2lnbk1lcmdlVmFsdWVgIHdpdGhvdXRcbiAqIHZhbHVlIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIGlmIChrZXkgPT0gJ19fcHJvdG9fXycgJiYgZGVmaW5lUHJvcGVydHkpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eShvYmplY3QsIGtleSwge1xuICAgICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgICAnZW51bWVyYWJsZSc6IHRydWUsXG4gICAgICAndmFsdWUnOiB2YWx1ZSxcbiAgICAgICd3cml0YWJsZSc6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUFzc2lnblZhbHVlO1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jbGFtcGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gY2xhbXAuXG4gKiBAcGFyYW0ge251bWJlcn0gW2xvd2VyXSBUaGUgbG93ZXIgYm91bmQuXG4gKiBAcGFyYW0ge251bWJlcn0gdXBwZXIgVGhlIHVwcGVyIGJvdW5kLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY2xhbXBlZCBudW1iZXIuXG4gKi9cbmZ1bmN0aW9uIGJhc2VDbGFtcChudW1iZXIsIGxvd2VyLCB1cHBlcikge1xuICBpZiAobnVtYmVyID09PSBudW1iZXIpIHtcbiAgICBpZiAodXBwZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbnVtYmVyID0gbnVtYmVyIDw9IHVwcGVyID8gbnVtYmVyIDogdXBwZXI7XG4gICAgfVxuICAgIGlmIChsb3dlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBudW1iZXIgPSBudW1iZXIgPj0gbG93ZXIgPyBudW1iZXIgOiBsb3dlcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bWJlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQ2xhbXA7XG4iLCJ2YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLFxuICAgIGFycmF5RWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5RWFjaCcpLFxuICAgIGFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduVmFsdWUnKSxcbiAgICBiYXNlQXNzaWduID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnbicpLFxuICAgIGJhc2VBc3NpZ25JbiA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25JbicpLFxuICAgIGNsb25lQnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVCdWZmZXInKSxcbiAgICBjb3B5QXJyYXkgPSByZXF1aXJlKCcuL19jb3B5QXJyYXknKSxcbiAgICBjb3B5U3ltYm9scyA9IHJlcXVpcmUoJy4vX2NvcHlTeW1ib2xzJyksXG4gICAgY29weVN5bWJvbHNJbiA9IHJlcXVpcmUoJy4vX2NvcHlTeW1ib2xzSW4nKSxcbiAgICBnZXRBbGxLZXlzID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5cycpLFxuICAgIGdldEFsbEtleXNJbiA9IHJlcXVpcmUoJy4vX2dldEFsbEtleXNJbicpLFxuICAgIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGluaXRDbG9uZUFycmF5ID0gcmVxdWlyZSgnLi9faW5pdENsb25lQXJyYXknKSxcbiAgICBpbml0Q2xvbmVCeVRhZyA9IHJlcXVpcmUoJy4vX2luaXRDbG9uZUJ5VGFnJyksXG4gICAgaW5pdENsb25lT2JqZWN0ID0gcmVxdWlyZSgnLi9faW5pdENsb25lT2JqZWN0JyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzTWFwID0gcmVxdWlyZSgnLi9pc01hcCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzU2V0ID0gcmVxdWlyZSgnLi9pc1NldCcpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBjbG9uaW5nLiAqL1xudmFyIENMT05FX0RFRVBfRkxBRyA9IDEsXG4gICAgQ0xPTkVfRkxBVF9GTEFHID0gMixcbiAgICBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXScsXG4gICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIHN1cHBvcnRlZCBieSBgXy5jbG9uZWAuICovXG52YXIgY2xvbmVhYmxlVGFncyA9IHt9O1xuY2xvbmVhYmxlVGFnc1thcmdzVGFnXSA9IGNsb25lYWJsZVRhZ3NbYXJyYXlUYWddID1cbmNsb25lYWJsZVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRhVmlld1RhZ10gPVxuY2xvbmVhYmxlVGFnc1tib29sVGFnXSA9IGNsb25lYWJsZVRhZ3NbZGF0ZVRhZ10gPVxuY2xvbmVhYmxlVGFnc1tmbG9hdDMyVGFnXSA9IGNsb25lYWJsZVRhZ3NbZmxvYXQ2NFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tpbnQ4VGFnXSA9IGNsb25lYWJsZVRhZ3NbaW50MTZUYWddID1cbmNsb25lYWJsZVRhZ3NbaW50MzJUYWddID0gY2xvbmVhYmxlVGFnc1ttYXBUYWddID1cbmNsb25lYWJsZVRhZ3NbbnVtYmVyVGFnXSA9IGNsb25lYWJsZVRhZ3Nbb2JqZWN0VGFnXSA9XG5jbG9uZWFibGVUYWdzW3JlZ2V4cFRhZ10gPSBjbG9uZWFibGVUYWdzW3NldFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tzdHJpbmdUYWddID0gY2xvbmVhYmxlVGFnc1tzeW1ib2xUYWddID1cbmNsb25lYWJsZVRhZ3NbdWludDhUYWddID0gY2xvbmVhYmxlVGFnc1t1aW50OENsYW1wZWRUYWddID1cbmNsb25lYWJsZVRhZ3NbdWludDE2VGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG5jbG9uZWFibGVUYWdzW2Vycm9yVGFnXSA9IGNsb25lYWJsZVRhZ3NbZnVuY1RhZ10gPVxuY2xvbmVhYmxlVGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNsb25lYCBhbmQgYF8uY2xvbmVEZWVwYCB3aGljaCB0cmFja3NcbiAqIHRyYXZlcnNlZCBvYmplY3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAqICAxIC0gRGVlcCBjbG9uZVxuICogIDIgLSBGbGF0dGVuIGluaGVyaXRlZCBwcm9wZXJ0aWVzXG4gKiAgNCAtIENsb25lIHN5bWJvbHNcbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNsb25pbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2tleV0gVGhlIGtleSBvZiBgdmFsdWVgLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBwYXJlbnQgb2JqZWN0IG9mIGB2YWx1ZWAuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIG9iamVjdHMgYW5kIHRoZWlyIGNsb25lIGNvdW50ZXJwYXJ0cy5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGJhc2VDbG9uZSh2YWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCBvYmplY3QsIHN0YWNrKSB7XG4gIHZhciByZXN1bHQsXG4gICAgICBpc0RlZXAgPSBiaXRtYXNrICYgQ0xPTkVfREVFUF9GTEFHLFxuICAgICAgaXNGbGF0ID0gYml0bWFzayAmIENMT05FX0ZMQVRfRkxBRyxcbiAgICAgIGlzRnVsbCA9IGJpdG1hc2sgJiBDTE9ORV9TWU1CT0xTX0ZMQUc7XG5cbiAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICByZXN1bHQgPSBvYmplY3QgPyBjdXN0b21pemVyKHZhbHVlLCBrZXksIG9iamVjdCwgc3RhY2spIDogY3VzdG9taXplcih2YWx1ZSk7XG4gIH1cbiAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKTtcbiAgaWYgKGlzQXJyKSB7XG4gICAgcmVzdWx0ID0gaW5pdENsb25lQXJyYXkodmFsdWUpO1xuICAgIGlmICghaXNEZWVwKSB7XG4gICAgICByZXR1cm4gY29weUFycmF5KHZhbHVlLCByZXN1bHQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKSxcbiAgICAgICAgaXNGdW5jID0gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZztcblxuICAgIGlmIChpc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjbG9uZUJ1ZmZlcih2YWx1ZSwgaXNEZWVwKTtcbiAgICB9XG4gICAgaWYgKHRhZyA9PSBvYmplY3RUYWcgfHwgdGFnID09IGFyZ3NUYWcgfHwgKGlzRnVuYyAmJiAhb2JqZWN0KSkge1xuICAgICAgcmVzdWx0ID0gKGlzRmxhdCB8fCBpc0Z1bmMpID8ge30gOiBpbml0Q2xvbmVPYmplY3QodmFsdWUpO1xuICAgICAgaWYgKCFpc0RlZXApIHtcbiAgICAgICAgcmV0dXJuIGlzRmxhdFxuICAgICAgICAgID8gY29weVN5bWJvbHNJbih2YWx1ZSwgYmFzZUFzc2lnbkluKHJlc3VsdCwgdmFsdWUpKVxuICAgICAgICAgIDogY29weVN5bWJvbHModmFsdWUsIGJhc2VBc3NpZ24ocmVzdWx0LCB2YWx1ZSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWNsb25lYWJsZVRhZ3NbdGFnXSkge1xuICAgICAgICByZXR1cm4gb2JqZWN0ID8gdmFsdWUgOiB7fTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdCA9IGluaXRDbG9uZUJ5VGFnKHZhbHVlLCB0YWcsIGlzRGVlcCk7XG4gICAgfVxuICB9XG4gIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2VzIGFuZCByZXR1cm4gaXRzIGNvcnJlc3BvbmRpbmcgY2xvbmUuXG4gIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KHZhbHVlKTtcbiAgaWYgKHN0YWNrZWQpIHtcbiAgICByZXR1cm4gc3RhY2tlZDtcbiAgfVxuICBzdGFjay5zZXQodmFsdWUsIHJlc3VsdCk7XG5cbiAgaWYgKGlzU2V0KHZhbHVlKSkge1xuICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24oc3ViVmFsdWUpIHtcbiAgICAgIHJlc3VsdC5hZGQoYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdWJWYWx1ZSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAoaXNNYXAodmFsdWUpKSB7XG4gICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSwga2V5KSB7XG4gICAgICByZXN1bHQuc2V0KGtleSwgYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIHZhbHVlLCBzdGFjaykpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIGtleXNGdW5jID0gaXNGdWxsXG4gICAgPyAoaXNGbGF0ID8gZ2V0QWxsS2V5c0luIDogZ2V0QWxsS2V5cylcbiAgICA6IChpc0ZsYXQgPyBrZXlzSW4gOiBrZXlzKTtcblxuICB2YXIgcHJvcHMgPSBpc0FyciA/IHVuZGVmaW5lZCA6IGtleXNGdW5jKHZhbHVlKTtcbiAgYXJyYXlFYWNoKHByb3BzIHx8IHZhbHVlLCBmdW5jdGlvbihzdWJWYWx1ZSwga2V5KSB7XG4gICAgaWYgKHByb3BzKSB7XG4gICAgICBrZXkgPSBzdWJWYWx1ZTtcbiAgICAgIHN1YlZhbHVlID0gdmFsdWVba2V5XTtcbiAgICB9XG4gICAgLy8gUmVjdXJzaXZlbHkgcG9wdWxhdGUgY2xvbmUgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICBhc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIHZhbHVlLCBzdGFjaykpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQ2xvbmU7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNvbmZvcm1zVG9gIHdoaWNoIGFjY2VwdHMgYHByb3BzYCB0byBjaGVjay5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgcHJlZGljYXRlcyB0byBjb25mb3JtIHRvLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGNvbmZvcm1zLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VDb25mb3Jtc1RvKG9iamVjdCwgc291cmNlLCBwcm9wcykge1xuICB2YXIgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4gIWxlbmd0aDtcbiAgfVxuICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgdmFyIGtleSA9IHByb3BzW2xlbmd0aF0sXG4gICAgICAgIHByZWRpY2F0ZSA9IHNvdXJjZVtrZXldLFxuICAgICAgICB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgaWYgKCh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpIHx8ICFwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VDb25mb3Jtc1RvO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RDcmVhdGUgPSBPYmplY3QuY3JlYXRlO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNyZWF0ZWAgd2l0aG91dCBzdXBwb3J0IGZvciBhc3NpZ25pbmdcbiAqIHByb3BlcnRpZXMgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvdG8gVGhlIG9iamVjdCB0byBpbmhlcml0IGZyb20uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICovXG52YXIgYmFzZUNyZWF0ZSA9IChmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gb2JqZWN0KCkge31cbiAgcmV0dXJuIGZ1bmN0aW9uKHByb3RvKSB7XG4gICAgaWYgKCFpc09iamVjdChwcm90bykpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgaWYgKG9iamVjdENyZWF0ZSkge1xuICAgICAgcmV0dXJuIG9iamVjdENyZWF0ZShwcm90byk7XG4gICAgfVxuICAgIG9iamVjdC5wcm90b3R5cGUgPSBwcm90bztcbiAgICB2YXIgcmVzdWx0ID0gbmV3IG9iamVjdDtcbiAgICBvYmplY3QucHJvdG90eXBlID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59KCkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VDcmVhdGU7XG4iLCJ2YXIgYXJyYXlQdXNoID0gcmVxdWlyZSgnLi9fYXJyYXlQdXNoJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRBbGxLZXlzYCBhbmQgYGdldEFsbEtleXNJbmAgd2hpY2ggdXNlc1xuICogYGtleXNGdW5jYCBhbmQgYHN5bWJvbHNGdW5jYCB0byBnZXQgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kXG4gKiBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gc3ltYm9sc0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5c0Z1bmMsIHN5bWJvbHNGdW5jKSB7XG4gIHZhciByZXN1bHQgPSBrZXlzRnVuYyhvYmplY3QpO1xuICByZXR1cm4gaXNBcnJheShvYmplY3QpID8gcmVzdWx0IDogYXJyYXlQdXNoKHJlc3VsdCwgc3ltYm9sc0Z1bmMob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUdldEFsbEtleXM7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgZ2V0UmF3VGFnID0gcmVxdWlyZSgnLi9fZ2V0UmF3VGFnJyksXG4gICAgb2JqZWN0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19vYmplY3RUb1N0cmluZycpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbnVsbFRhZyA9ICdbb2JqZWN0IE51bGxdJyxcbiAgICB1bmRlZmluZWRUYWcgPSAnW29iamVjdCBVbmRlZmluZWRdJztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldFRhZ2Agd2l0aG91dCBmYWxsYmFja3MgZm9yIGJ1Z2d5IGVudmlyb25tZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBiYXNlR2V0VGFnKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWRUYWcgOiBudWxsVGFnO1xuICB9XG4gIHJldHVybiAoc3ltVG9TdHJpbmdUYWcgJiYgc3ltVG9TdHJpbmdUYWcgaW4gT2JqZWN0KHZhbHVlKSlcbiAgICA/IGdldFJhd1RhZyh2YWx1ZSlcbiAgICA6IG9iamVjdFRvU3RyaW5nKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0VGFnO1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5ndGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBgb3RoZXJgLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUd0KHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gdmFsdWUgPiBvdGhlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR3Q7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJndW1lbnRzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0FyZ3VtZW50cyh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBhcmdzVGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0FyZ3VtZW50cztcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcnJheUJ1ZmZlcmAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXkgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0FycmF5QnVmZmVyKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGFycmF5QnVmZmVyVGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0FycmF5QnVmZmVyO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNEYXRlYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGRhdGUgb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0RhdGUodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gZGF0ZVRhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNEYXRlO1xuIiwidmFyIGJhc2VJc0VxdWFsRGVlcCA9IHJlcXVpcmUoJy4vX2Jhc2VJc0VxdWFsRGVlcCcpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNFcXVhbGAgd2hpY2ggc3VwcG9ydHMgcGFydGlhbCBjb21wYXJpc29uc1xuICogYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuXG4gKiAgMSAtIFVub3JkZXJlZCBjb21wYXJpc29uXG4gKiAgMiAtIFBhcnRpYWwgY29tcGFyaXNvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIGB2YWx1ZWAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spIHtcbiAgaWYgKHZhbHVlID09PSBvdGhlcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICh2YWx1ZSA9PSBudWxsIHx8IG90aGVyID09IG51bGwgfHwgKCFpc09iamVjdExpa2UodmFsdWUpICYmICFpc09iamVjdExpa2Uob3RoZXIpKSkge1xuICAgIHJldHVybiB2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyO1xuICB9XG4gIHJldHVybiBiYXNlSXNFcXVhbERlZXAodmFsdWUsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBiYXNlSXNFcXVhbCwgc3RhY2spO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0VxdWFsO1xuIiwidmFyIFN0YWNrID0gcmVxdWlyZSgnLi9fU3RhY2snKSxcbiAgICBlcXVhbEFycmF5cyA9IHJlcXVpcmUoJy4vX2VxdWFsQXJyYXlzJyksXG4gICAgZXF1YWxCeVRhZyA9IHJlcXVpcmUoJy4vX2VxdWFsQnlUYWcnKSxcbiAgICBlcXVhbE9iamVjdHMgPSByZXF1aXJlKCcuL19lcXVhbE9iamVjdHMnKSxcbiAgICBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9pc1R5cGVkQXJyYXknKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsYCBmb3IgYXJyYXlzIGFuZCBvYmplY3RzIHdoaWNoIHBlcmZvcm1zXG4gKiBkZWVwIGNvbXBhcmlzb25zIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMgZW5hYmxpbmcgb2JqZWN0cyB3aXRoIGNpcmN1bGFyXG4gKiByZWZlcmVuY2VzIHRvIGJlIGNvbXBhcmVkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNFcXVhbERlZXAob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICB2YXIgb2JqSXNBcnIgPSBpc0FycmF5KG9iamVjdCksXG4gICAgICBvdGhJc0FyciA9IGlzQXJyYXkob3RoZXIpLFxuICAgICAgb2JqVGFnID0gb2JqSXNBcnIgPyBhcnJheVRhZyA6IGdldFRhZyhvYmplY3QpLFxuICAgICAgb3RoVGFnID0gb3RoSXNBcnIgPyBhcnJheVRhZyA6IGdldFRhZyhvdGhlcik7XG5cbiAgb2JqVGFnID0gb2JqVGFnID09IGFyZ3NUYWcgPyBvYmplY3RUYWcgOiBvYmpUYWc7XG4gIG90aFRhZyA9IG90aFRhZyA9PSBhcmdzVGFnID8gb2JqZWN0VGFnIDogb3RoVGFnO1xuXG4gIHZhciBvYmpJc09iaiA9IG9ialRhZyA9PSBvYmplY3RUYWcsXG4gICAgICBvdGhJc09iaiA9IG90aFRhZyA9PSBvYmplY3RUYWcsXG4gICAgICBpc1NhbWVUYWcgPSBvYmpUYWcgPT0gb3RoVGFnO1xuXG4gIGlmIChpc1NhbWVUYWcgJiYgaXNCdWZmZXIob2JqZWN0KSkge1xuICAgIGlmICghaXNCdWZmZXIob3RoZXIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIG9iaklzQXJyID0gdHJ1ZTtcbiAgICBvYmpJc09iaiA9IGZhbHNlO1xuICB9XG4gIGlmIChpc1NhbWVUYWcgJiYgIW9iaklzT2JqKSB7XG4gICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICByZXR1cm4gKG9iaklzQXJyIHx8IGlzVHlwZWRBcnJheShvYmplY3QpKVxuICAgICAgPyBlcXVhbEFycmF5cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKVxuICAgICAgOiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIG9ialRhZywgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gIH1cbiAgaWYgKCEoYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHKSkge1xuICAgIHZhciBvYmpJc1dyYXBwZWQgPSBvYmpJc09iaiAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgJ19fd3JhcHBlZF9fJyksXG4gICAgICAgIG90aElzV3JhcHBlZCA9IG90aElzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob3RoZXIsICdfX3dyYXBwZWRfXycpO1xuXG4gICAgaWYgKG9iaklzV3JhcHBlZCB8fCBvdGhJc1dyYXBwZWQpIHtcbiAgICAgIHZhciBvYmpVbndyYXBwZWQgPSBvYmpJc1dyYXBwZWQgPyBvYmplY3QudmFsdWUoKSA6IG9iamVjdCxcbiAgICAgICAgICBvdGhVbndyYXBwZWQgPSBvdGhJc1dyYXBwZWQgPyBvdGhlci52YWx1ZSgpIDogb3RoZXI7XG5cbiAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICByZXR1cm4gZXF1YWxGdW5jKG9ialVud3JhcHBlZCwgb3RoVW53cmFwcGVkLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgfVxuICB9XG4gIGlmICghaXNTYW1lVGFnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gIHJldHVybiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzRXF1YWxEZWVwO1xuIiwidmFyIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc01hcGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBtYXAsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTWFwKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGdldFRhZyh2YWx1ZSkgPT0gbWFwVGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc01hcDtcbiIsInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgYmFzZUlzRXF1YWwgPSByZXF1aXJlKCcuL19iYXNlSXNFcXVhbCcpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNNYXRjaGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gKiBAcGFyYW0ge0FycmF5fSBtYXRjaERhdGEgVGhlIHByb3BlcnR5IG5hbWVzLCB2YWx1ZXMsIGFuZCBjb21wYXJlIGZsYWdzIHRvIG1hdGNoLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgaXMgYSBtYXRjaCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgbWF0Y2hEYXRhLCBjdXN0b21pemVyKSB7XG4gIHZhciBpbmRleCA9IG1hdGNoRGF0YS5sZW5ndGgsXG4gICAgICBsZW5ndGggPSBpbmRleCxcbiAgICAgIG5vQ3VzdG9taXplciA9ICFjdXN0b21pemVyO1xuXG4gIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgIHJldHVybiAhbGVuZ3RoO1xuICB9XG4gIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIHZhciBkYXRhID0gbWF0Y2hEYXRhW2luZGV4XTtcbiAgICBpZiAoKG5vQ3VzdG9taXplciAmJiBkYXRhWzJdKVxuICAgICAgICAgID8gZGF0YVsxXSAhPT0gb2JqZWN0W2RhdGFbMF1dXG4gICAgICAgICAgOiAhKGRhdGFbMF0gaW4gb2JqZWN0KVxuICAgICAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBkYXRhID0gbWF0Y2hEYXRhW2luZGV4XTtcbiAgICB2YXIga2V5ID0gZGF0YVswXSxcbiAgICAgICAgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSxcbiAgICAgICAgc3JjVmFsdWUgPSBkYXRhWzFdO1xuXG4gICAgaWYgKG5vQ3VzdG9taXplciAmJiBkYXRhWzJdKSB7XG4gICAgICBpZiAob2JqVmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHN0YWNrID0gbmV3IFN0YWNrO1xuICAgICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlLCBzdGFjayk7XG4gICAgICB9XG4gICAgICBpZiAoIShyZXN1bHQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBiYXNlSXNFcXVhbChzcmNWYWx1ZSwgb2JqVmFsdWUsIENPTVBBUkVfUEFSVElBTF9GTEFHIHwgQ09NUEFSRV9VTk9SREVSRURfRkxBRywgY3VzdG9taXplciwgc3RhY2spXG4gICAgICAgICAgICA6IHJlc3VsdFxuICAgICAgICAgICkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNNYXRjaDtcbiIsInZhciBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNNYXNrZWQgPSByZXF1aXJlKCcuL19pc01hc2tlZCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIHRvU291cmNlID0gcmVxdWlyZSgnLi9fdG9Tb3VyY2UnKTtcblxuLyoqXG4gKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgXG4gKiBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXBhdHRlcm5zKS5cbiAqL1xudmFyIHJlUmVnRXhwQ2hhciA9IC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xudmFyIHJlSXNIb3N0Q3RvciA9IC9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC87XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xudmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICtcbiAgZnVuY1RvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4pO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmF0aXZlYCB3aXRob3V0IGJhZCBzaGltIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc05hdGl2ZSh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCBpc01hc2tlZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHBhdHRlcm4gPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gIHJldHVybiBwYXR0ZXJuLnRlc3QodG9Tb3VyY2UodmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNOYXRpdmU7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNSZWdFeHBgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcmVnZXhwLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc1JlZ0V4cCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSByZWdleHBUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzUmVnRXhwO1xuIiwidmFyIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzZXRUYWcgPSAnW29iamVjdCBTZXRdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1NldGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzZXQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzU2V0KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGdldFRhZyh2YWx1ZSkgPT0gc2V0VGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc1NldDtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzTGVuZ3RoID0gcmVxdWlyZSgnLi9pc0xlbmd0aCcpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIG9mIHR5cGVkIGFycmF5cy4gKi9cbnZhciB0eXBlZEFycmF5VGFncyA9IHt9O1xudHlwZWRBcnJheVRhZ3NbZmxvYXQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1tmbG9hdDY0VGFnXSA9XG50eXBlZEFycmF5VGFnc1tpbnQ4VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1tpbnQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50OFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQxNlRhZ10gPVxudHlwZWRBcnJheVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG50eXBlZEFycmF5VGFnc1thcmdzVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2FycmF5VGFnXSA9XG50eXBlZEFycmF5VGFnc1thcnJheUJ1ZmZlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tib29sVGFnXSA9XG50eXBlZEFycmF5VGFnc1tkYXRhVmlld1RhZ10gPSB0eXBlZEFycmF5VGFnc1tkYXRlVGFnXSA9XG50eXBlZEFycmF5VGFnc1tlcnJvclRhZ10gPSB0eXBlZEFycmF5VGFnc1tmdW5jVGFnXSA9XG50eXBlZEFycmF5VGFnc1ttYXBUYWddID0gdHlwZWRBcnJheVRhZ3NbbnVtYmVyVGFnXSA9XG50eXBlZEFycmF5VGFnc1tvYmplY3RUYWddID0gdHlwZWRBcnJheVRhZ3NbcmVnZXhwVGFnXSA9XG50eXBlZEFycmF5VGFnc1tzZXRUYWddID0gdHlwZWRBcnJheVRhZ3Nbc3RyaW5nVGFnXSA9XG50eXBlZEFycmF5VGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzVHlwZWRBcnJheWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNUeXBlZEFycmF5KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmXG4gICAgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhIXR5cGVkQXJyYXlUYWdzW2Jhc2VHZXRUYWcodmFsdWUpXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNUeXBlZEFycmF5O1xuIiwidmFyIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBuYXRpdmVLZXlzID0gcmVxdWlyZSgnLi9fbmF0aXZlS2V5cycpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNgIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXMob2JqZWN0KSB7XG4gIGlmICghaXNQcm90b3R5cGUob2JqZWN0KSkge1xuICAgIHJldHVybiBuYXRpdmVLZXlzKG9iamVjdCk7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYga2V5ICE9ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUtleXM7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpLFxuICAgIG5hdGl2ZUtleXNJbiA9IHJlcXVpcmUoJy4vX25hdGl2ZUtleXNJbicpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNJbmAgd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBiYXNlS2V5c0luKG9iamVjdCkge1xuICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICByZXR1cm4gbmF0aXZlS2V5c0luKG9iamVjdCk7XG4gIH1cbiAgdmFyIGlzUHJvdG8gPSBpc1Byb3RvdHlwZShvYmplY3QpLFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgIGlmICghKGtleSA9PSAnY29uc3RydWN0b3InICYmIChpc1Byb3RvIHx8ICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VLZXlzSW47XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmx0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIGBvdGhlcmAsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlTHQodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA8IG90aGVyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VMdDtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udGltZXNgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kc1xuICogb3IgbWF4IGFycmF5IGxlbmd0aCBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gaW52b2tlIGBpdGVyYXRlZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICovXG5mdW5jdGlvbiBiYXNlVGltZXMobiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShuKTtcblxuICB3aGlsZSAoKytpbmRleCA8IG4pIHtcbiAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoaW5kZXgpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVRpbWVzO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDA7XG5cbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICBzeW1ib2xUb1N0cmluZyA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udG9TdHJpbmcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udG9TdHJpbmdgIHdoaWNoIGRvZXNuJ3QgY29udmVydCBudWxsaXNoXG4gKiB2YWx1ZXMgdG8gZW1wdHkgc3RyaW5ncy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRvU3RyaW5nKHZhbHVlKSB7XG4gIC8vIEV4aXQgZWFybHkgZm9yIHN0cmluZ3MgdG8gYXZvaWQgYSBwZXJmb3JtYW5jZSBoaXQgaW4gc29tZSBlbnZpcm9ubWVudHMuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgLy8gUmVjdXJzaXZlbHkgY29udmVydCB2YWx1ZXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICByZXR1cm4gYXJyYXlNYXAodmFsdWUsIGJhc2VUb1N0cmluZykgKyAnJztcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIHN5bWJvbFRvU3RyaW5nID8gc3ltYm9sVG9TdHJpbmcuY2FsbCh2YWx1ZSkgOiAnJztcbiAgfVxuICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVRvU3RyaW5nO1xuIiwidmFyIHRyaW1tZWRFbmRJbmRleCA9IHJlcXVpcmUoJy4vX3RyaW1tZWRFbmRJbmRleCcpO1xuXG4vKiogVXNlZCB0byBtYXRjaCBsZWFkaW5nIHdoaXRlc3BhY2UuICovXG52YXIgcmVUcmltU3RhcnQgPSAvXlxccysvO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRyaW1gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gdHJpbS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVHJpbShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZ1xuICAgID8gc3RyaW5nLnNsaWNlKDAsIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpICsgMSkucmVwbGFjZShyZVRyaW1TdGFydCwgJycpXG4gICAgOiBzdHJpbmc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVRyaW07XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVVuYXJ5O1xuIiwidmFyIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy52YWx1ZXNgIGFuZCBgXy52YWx1ZXNJbmAgd2hpY2ggY3JlYXRlcyBhblxuICogYXJyYXkgb2YgYG9iamVjdGAgcHJvcGVydHkgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb3BlcnR5IG5hbWVzXG4gKiBvZiBgcHJvcHNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgbmFtZXMgdG8gZ2V0IHZhbHVlcyBmb3IuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VWYWx1ZXMob2JqZWN0LCBwcm9wcykge1xuICByZXR1cm4gYXJyYXlNYXAocHJvcHMsIGZ1bmN0aW9uKGtleSkge1xuICAgIHJldHVybiBvYmplY3Rba2V5XTtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVZhbHVlcztcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGEgYGNhY2hlYCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gY2FjaGUgVGhlIGNhY2hlIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGNhY2hlSGFzKGNhY2hlLCBrZXkpIHtcbiAgcmV0dXJuIGNhY2hlLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhY2hlSGFzO1xuIiwidmFyIFVpbnQ4QXJyYXkgPSByZXF1aXJlKCcuL19VaW50OEFycmF5Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGBhcnJheUJ1ZmZlcmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXlCdWZmZXJ9IGFycmF5QnVmZmVyIFRoZSBhcnJheSBidWZmZXIgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7QXJyYXlCdWZmZXJ9IFJldHVybnMgdGhlIGNsb25lZCBhcnJheSBidWZmZXIuXG4gKi9cbmZ1bmN0aW9uIGNsb25lQXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIpIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyBhcnJheUJ1ZmZlci5jb25zdHJ1Y3RvcihhcnJheUJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgbmV3IFVpbnQ4QXJyYXkocmVzdWx0KS5zZXQobmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZUFycmF5QnVmZmVyO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkLFxuICAgIGFsbG9jVW5zYWZlID0gQnVmZmVyID8gQnVmZmVyLmFsbG9jVW5zYWZlIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiAgYGJ1ZmZlcmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QnVmZmVyfSBidWZmZXIgVGhlIGJ1ZmZlciB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBjbG9uZUJ1ZmZlcihidWZmZXIsIGlzRGVlcCkge1xuICBpZiAoaXNEZWVwKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5zbGljZSgpO1xuICB9XG4gIHZhciBsZW5ndGggPSBidWZmZXIubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gYWxsb2NVbnNhZmUgPyBhbGxvY1Vuc2FmZShsZW5ndGgpIDogbmV3IGJ1ZmZlci5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gIGJ1ZmZlci5jb3B5KHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVCdWZmZXI7XG4iLCJ2YXIgY2xvbmVBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQXJyYXlCdWZmZXInKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGRhdGFWaWV3YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGRhdGFWaWV3IFRoZSBkYXRhIHZpZXcgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIGRhdGEgdmlldy5cbiAqL1xuZnVuY3Rpb24gY2xvbmVEYXRhVmlldyhkYXRhVmlldywgaXNEZWVwKSB7XG4gIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKGRhdGFWaWV3LmJ1ZmZlcikgOiBkYXRhVmlldy5idWZmZXI7XG4gIHJldHVybiBuZXcgZGF0YVZpZXcuY29uc3RydWN0b3IoYnVmZmVyLCBkYXRhVmlldy5ieXRlT2Zmc2V0LCBkYXRhVmlldy5ieXRlTGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZURhdGFWaWV3O1xuIiwiLyoqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGAgZmxhZ3MgZnJvbSB0aGVpciBjb2VyY2VkIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVGbGFncyA9IC9cXHcqJC87XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGByZWdleHBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gcmVnZXhwIFRoZSByZWdleHAgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgcmVnZXhwLlxuICovXG5mdW5jdGlvbiBjbG9uZVJlZ0V4cChyZWdleHApIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyByZWdleHAuY29uc3RydWN0b3IocmVnZXhwLnNvdXJjZSwgcmVGbGFncy5leGVjKHJlZ2V4cCkpO1xuICByZXN1bHQubGFzdEluZGV4ID0gcmVnZXhwLmxhc3RJbmRleDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZVJlZ0V4cDtcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKTtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIHRoZSBgc3ltYm9sYCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzeW1ib2wgVGhlIHN5bWJvbCBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgc3ltYm9sIG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gY2xvbmVTeW1ib2woc3ltYm9sKSB7XG4gIHJldHVybiBzeW1ib2xWYWx1ZU9mID8gT2JqZWN0KHN5bWJvbFZhbHVlT2YuY2FsbChzeW1ib2wpKSA6IHt9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lU3ltYm9sO1xuIiwidmFyIGNsb25lQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUFycmF5QnVmZmVyJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGB0eXBlZEFycmF5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHR5cGVkQXJyYXkgVGhlIHR5cGVkIGFycmF5IHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCB0eXBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gY2xvbmVUeXBlZEFycmF5KHR5cGVkQXJyYXksIGlzRGVlcCkge1xuICB2YXIgYnVmZmVyID0gaXNEZWVwID8gY2xvbmVBcnJheUJ1ZmZlcih0eXBlZEFycmF5LmJ1ZmZlcikgOiB0eXBlZEFycmF5LmJ1ZmZlcjtcbiAgcmV0dXJuIG5ldyB0eXBlZEFycmF5LmNvbnN0cnVjdG9yKGJ1ZmZlciwgdHlwZWRBcnJheS5ieXRlT2Zmc2V0LCB0eXBlZEFycmF5Lmxlbmd0aCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVUeXBlZEFycmF5O1xuIiwiLyoqXG4gKiBDb3BpZXMgdGhlIHZhbHVlcyBvZiBgc291cmNlYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXk9W11dIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyB0by5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBjb3B5QXJyYXkoc291cmNlLCBhcnJheSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG5cbiAgYXJyYXkgfHwgKGFycmF5ID0gQXJyYXkobGVuZ3RoKSk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbaW5kZXhdID0gc291cmNlW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weUFycmF5O1xuIiwidmFyIGFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduVmFsdWUnKSxcbiAgICBiYXNlQXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19iYXNlQXNzaWduVmFsdWUnKTtcblxuLyoqXG4gKiBDb3BpZXMgcHJvcGVydGllcyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzIHRvIGNvcHkuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb3BpZWQgdmFsdWVzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weU9iamVjdChzb3VyY2UsIHByb3BzLCBvYmplY3QsIGN1c3RvbWl6ZXIpIHtcbiAgdmFyIGlzTmV3ID0gIW9iamVjdDtcbiAgb2JqZWN0IHx8IChvYmplY3QgPSB7fSk7XG5cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIga2V5ID0gcHJvcHNbaW5kZXhdO1xuXG4gICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgPyBjdXN0b21pemVyKG9iamVjdFtrZXldLCBzb3VyY2Vba2V5XSwga2V5LCBvYmplY3QsIHNvdXJjZSlcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG5ld1ZhbHVlID0gc291cmNlW2tleV07XG4gICAgfVxuICAgIGlmIChpc05ldykge1xuICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvYmplY3Q7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weU9iamVjdDtcbiIsInZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGdldFN5bWJvbHMgPSByZXF1aXJlKCcuL19nZXRTeW1ib2xzJyk7XG5cbi8qKlxuICogQ29waWVzIG93biBzeW1ib2xzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIGZyb20uXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgdG8uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb3B5U3ltYm9scyhzb3VyY2UsIG9iamVjdCkge1xuICByZXR1cm4gY29weU9iamVjdChzb3VyY2UsIGdldFN5bWJvbHMoc291cmNlKSwgb2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3B5U3ltYm9scztcbiIsInZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGdldFN5bWJvbHNJbiA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHNJbicpO1xuXG4vKipcbiAqIENvcGllcyBvd24gYW5kIGluaGVyaXRlZCBzeW1ib2xzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIGZyb20uXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgdG8uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb3B5U3ltYm9sc0luKHNvdXJjZSwgb2JqZWN0KSB7XG4gIHJldHVybiBjb3B5T2JqZWN0KHNvdXJjZSwgZ2V0U3ltYm9sc0luKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weVN5bWJvbHNJbjtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb3ZlcnJlYWNoaW5nIGNvcmUtanMgc2hpbXMuICovXG52YXIgY29yZUpzRGF0YSA9IHJvb3RbJ19fY29yZS1qc19zaGFyZWRfXyddO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcmVKc0RhdGE7XG4iLCJ2YXIgdG9OdW1iZXIgPSByZXF1aXJlKCcuL3RvTnVtYmVyJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSByZWxhdGlvbmFsIG9wZXJhdGlvbiBvbiB0d28gdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcGVyYXRvciBUaGUgZnVuY3Rpb24gdG8gcGVyZm9ybSB0aGUgb3BlcmF0aW9uLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmVsYXRpb25hbCBvcGVyYXRpb24gZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24ob3BlcmF0b3IpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlLCBvdGhlcikge1xuICAgIGlmICghKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyAmJiB0eXBlb2Ygb3RoZXIgPT0gJ3N0cmluZycpKSB7XG4gICAgICB2YWx1ZSA9IHRvTnVtYmVyKHZhbHVlKTtcbiAgICAgIG90aGVyID0gdG9OdW1iZXIob3RoZXIpO1xuICAgIH1cbiAgICByZXR1cm4gb3BlcmF0b3IodmFsdWUsIG90aGVyKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpO1xuXG52YXIgZGVmaW5lUHJvcGVydHkgPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgdmFyIGZ1bmMgPSBnZXROYXRpdmUoT2JqZWN0LCAnZGVmaW5lUHJvcGVydHknKTtcbiAgICBmdW5jKHt9LCAnJywge30pO1xuICAgIHJldHVybiBmdW5jO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZWZpbmVQcm9wZXJ0eTtcbiIsInZhciBTZXRDYWNoZSA9IHJlcXVpcmUoJy4vX1NldENhY2hlJyksXG4gICAgYXJyYXlTb21lID0gcmVxdWlyZSgnLi9fYXJyYXlTb21lJyksXG4gICAgY2FjaGVIYXMgPSByZXF1aXJlKCcuL19jYWNoZUhhcycpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBhcnJheXMgd2l0aCBzdXBwb3J0IGZvclxuICogcGFydGlhbCBkZWVwIGNvbXBhcmlzb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7QXJyYXl9IG90aGVyIFRoZSBvdGhlciBhcnJheSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgYXJyYXlgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFycmF5cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbEFycmF5cyhhcnJheSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRyxcbiAgICAgIGFyckxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIG90aExlbmd0aCA9IG90aGVyLmxlbmd0aDtcblxuICBpZiAoYXJyTGVuZ3RoICE9IG90aExlbmd0aCAmJiAhKGlzUGFydGlhbCAmJiBvdGhMZW5ndGggPiBhcnJMZW5ndGgpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIENoZWNrIHRoYXQgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gIHZhciBhcnJTdGFja2VkID0gc3RhY2suZ2V0KGFycmF5KTtcbiAgdmFyIG90aFN0YWNrZWQgPSBzdGFjay5nZXQob3RoZXIpO1xuICBpZiAoYXJyU3RhY2tlZCAmJiBvdGhTdGFja2VkKSB7XG4gICAgcmV0dXJuIGFyclN0YWNrZWQgPT0gb3RoZXIgJiYgb3RoU3RhY2tlZCA9PSBhcnJheTtcbiAgfVxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IHRydWUsXG4gICAgICBzZWVuID0gKGJpdG1hc2sgJiBDT01QQVJFX1VOT1JERVJFRF9GTEFHKSA/IG5ldyBTZXRDYWNoZSA6IHVuZGVmaW5lZDtcblxuICBzdGFjay5zZXQoYXJyYXksIG90aGVyKTtcbiAgc3RhY2suc2V0KG90aGVyLCBhcnJheSk7XG5cbiAgLy8gSWdub3JlIG5vbi1pbmRleCBwcm9wZXJ0aWVzLlxuICB3aGlsZSAoKytpbmRleCA8IGFyckxlbmd0aCkge1xuICAgIHZhciBhcnJWYWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltpbmRleF07XG5cbiAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgdmFyIGNvbXBhcmVkID0gaXNQYXJ0aWFsXG4gICAgICAgID8gY3VzdG9taXplcihvdGhWYWx1ZSwgYXJyVmFsdWUsIGluZGV4LCBvdGhlciwgYXJyYXksIHN0YWNrKVxuICAgICAgICA6IGN1c3RvbWl6ZXIoYXJyVmFsdWUsIG90aFZhbHVlLCBpbmRleCwgYXJyYXksIG90aGVyLCBzdGFjayk7XG4gICAgfVxuICAgIGlmIChjb21wYXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoY29tcGFyZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGlmIChzZWVuKSB7XG4gICAgICBpZiAoIWFycmF5U29tZShvdGhlciwgZnVuY3Rpb24ob3RoVmFsdWUsIG90aEluZGV4KSB7XG4gICAgICAgICAgICBpZiAoIWNhY2hlSGFzKHNlZW4sIG90aEluZGV4KSAmJlxuICAgICAgICAgICAgICAgIChhcnJWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKSkge1xuICAgICAgICAgICAgICByZXR1cm4gc2Vlbi5wdXNoKG90aEluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSkge1xuICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghKFxuICAgICAgICAgIGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fFxuICAgICAgICAgICAgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spXG4gICAgICAgICkpIHtcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHN0YWNrWydkZWxldGUnXShhcnJheSk7XG4gIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxBcnJheXM7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgVWludDhBcnJheSA9IHJlcXVpcmUoJy4vX1VpbnQ4QXJyYXknKSxcbiAgICBlcSA9IHJlcXVpcmUoJy4vZXEnKSxcbiAgICBlcXVhbEFycmF5cyA9IHJlcXVpcmUoJy4vX2VxdWFsQXJyYXlzJyksXG4gICAgbWFwVG9BcnJheSA9IHJlcXVpcmUoJy4vX21hcFRvQXJyYXknKSxcbiAgICBzZXRUb0FycmF5ID0gcmVxdWlyZSgnLi9fc2V0VG9BcnJheScpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJztcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBjb21wYXJpbmcgb2JqZWN0cyBvZlxuICogdGhlIHNhbWUgYHRvU3RyaW5nVGFnYC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNvbXBhcmluZyB2YWx1ZXMgd2l0aCB0YWdzIG9mXG4gKiBgQm9vbGVhbmAsIGBEYXRlYCwgYEVycm9yYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBvciBgU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtzdHJpbmd9IHRhZyBUaGUgYHRvU3RyaW5nVGFnYCBvZiB0aGUgb2JqZWN0cyB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsQnlUYWcob2JqZWN0LCBvdGhlciwgdGFnLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHN3aXRjaCAodGFnKSB7XG4gICAgY2FzZSBkYXRhVmlld1RhZzpcbiAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAob2JqZWN0LmJ5dGVPZmZzZXQgIT0gb3RoZXIuYnl0ZU9mZnNldCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgb2JqZWN0ID0gb2JqZWN0LmJ1ZmZlcjtcbiAgICAgIG90aGVyID0gb3RoZXIuYnVmZmVyO1xuXG4gICAgY2FzZSBhcnJheUJ1ZmZlclRhZzpcbiAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAhZXF1YWxGdW5jKG5ldyBVaW50OEFycmF5KG9iamVjdCksIG5ldyBVaW50OEFycmF5KG90aGVyKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICBjYXNlIGJvb2xUYWc6XG4gICAgY2FzZSBkYXRlVGFnOlxuICAgIGNhc2UgbnVtYmVyVGFnOlxuICAgICAgLy8gQ29lcmNlIGJvb2xlYW5zIHRvIGAxYCBvciBgMGAgYW5kIGRhdGVzIHRvIG1pbGxpc2Vjb25kcy5cbiAgICAgIC8vIEludmFsaWQgZGF0ZXMgYXJlIGNvZXJjZWQgdG8gYE5hTmAuXG4gICAgICByZXR1cm4gZXEoK29iamVjdCwgK290aGVyKTtcblxuICAgIGNhc2UgZXJyb3JUYWc6XG4gICAgICByZXR1cm4gb2JqZWN0Lm5hbWUgPT0gb3RoZXIubmFtZSAmJiBvYmplY3QubWVzc2FnZSA9PSBvdGhlci5tZXNzYWdlO1xuXG4gICAgY2FzZSByZWdleHBUYWc6XG4gICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICAvLyBDb2VyY2UgcmVnZXhlcyB0byBzdHJpbmdzIGFuZCB0cmVhdCBzdHJpbmdzLCBwcmltaXRpdmVzIGFuZCBvYmplY3RzLFxuICAgICAgLy8gYXMgZXF1YWwuIFNlZSBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcmVnZXhwLnByb3RvdHlwZS50b3N0cmluZ1xuICAgICAgLy8gZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIHJldHVybiBvYmplY3QgPT0gKG90aGVyICsgJycpO1xuXG4gICAgY2FzZSBtYXBUYWc6XG4gICAgICB2YXIgY29udmVydCA9IG1hcFRvQXJyYXk7XG5cbiAgICBjYXNlIHNldFRhZzpcbiAgICAgIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUc7XG4gICAgICBjb252ZXJ0IHx8IChjb252ZXJ0ID0gc2V0VG9BcnJheSk7XG5cbiAgICAgIGlmIChvYmplY3Quc2l6ZSAhPSBvdGhlci5zaXplICYmICFpc1BhcnRpYWwpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gQXNzdW1lIGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgICAgIGlmIChzdGFja2VkKSB7XG4gICAgICAgIHJldHVybiBzdGFja2VkID09IG90aGVyO1xuICAgICAgfVxuICAgICAgYml0bWFzayB8PSBDT01QQVJFX1VOT1JERVJFRF9GTEFHO1xuXG4gICAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgICAgIHZhciByZXN1bHQgPSBlcXVhbEFycmF5cyhjb252ZXJ0KG9iamVjdCksIGNvbnZlcnQob3RoZXIpLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgICAgIHN0YWNrWydkZWxldGUnXShvYmplY3QpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcblxuICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgaWYgKHN5bWJvbFZhbHVlT2YpIHtcbiAgICAgICAgcmV0dXJuIHN5bWJvbFZhbHVlT2YuY2FsbChvYmplY3QpID09IHN5bWJvbFZhbHVlT2YuY2FsbChvdGhlcik7XG4gICAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxdWFsQnlUYWc7XG4iLCJ2YXIgZ2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2dldEFsbEtleXMnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3Igb2JqZWN0cyB3aXRoIHN1cHBvcnQgZm9yXG4gKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgb2JqUHJvcHMgPSBnZXRBbGxLZXlzKG9iamVjdCksXG4gICAgICBvYmpMZW5ndGggPSBvYmpQcm9wcy5sZW5ndGgsXG4gICAgICBvdGhQcm9wcyA9IGdldEFsbEtleXMob3RoZXIpLFxuICAgICAgb3RoTGVuZ3RoID0gb3RoUHJvcHMubGVuZ3RoO1xuXG4gIGlmIChvYmpMZW5ndGggIT0gb3RoTGVuZ3RoICYmICFpc1BhcnRpYWwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIGluZGV4ID0gb2JqTGVuZ3RoO1xuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIHZhciBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgaWYgKCEoaXNQYXJ0aWFsID8ga2V5IGluIG90aGVyIDogaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwga2V5KSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgdGhhdCBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgdmFyIG9ialN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgdmFyIG90aFN0YWNrZWQgPSBzdGFjay5nZXQob3RoZXIpO1xuICBpZiAob2JqU3RhY2tlZCAmJiBvdGhTdGFja2VkKSB7XG4gICAgcmV0dXJuIG9ialN0YWNrZWQgPT0gb3RoZXIgJiYgb3RoU3RhY2tlZCA9PSBvYmplY3Q7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IHRydWU7XG4gIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgc3RhY2suc2V0KG90aGVyLCBvYmplY3QpO1xuXG4gIHZhciBza2lwQ3RvciA9IGlzUGFydGlhbDtcbiAgd2hpbGUgKCsraW5kZXggPCBvYmpMZW5ndGgpIHtcbiAgICBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgIG90aFZhbHVlID0gb3RoZXJba2V5XTtcblxuICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBvYmpWYWx1ZSwga2V5LCBvdGhlciwgb2JqZWN0LCBzdGFjaylcbiAgICAgICAgOiBjdXN0b21pemVyKG9ialZhbHVlLCBvdGhWYWx1ZSwga2V5LCBvYmplY3QsIG90aGVyLCBzdGFjayk7XG4gICAgfVxuICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGlmICghKGNvbXBhcmVkID09PSB1bmRlZmluZWRcbiAgICAgICAgICA/IChvYmpWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKG9ialZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKVxuICAgICAgICAgIDogY29tcGFyZWRcbiAgICAgICAgKSkge1xuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgc2tpcEN0b3IgfHwgKHNraXBDdG9yID0ga2V5ID09ICdjb25zdHJ1Y3RvcicpO1xuICB9XG4gIGlmIChyZXN1bHQgJiYgIXNraXBDdG9yKSB7XG4gICAgdmFyIG9iakN0b3IgPSBvYmplY3QuY29uc3RydWN0b3IsXG4gICAgICAgIG90aEN0b3IgPSBvdGhlci5jb25zdHJ1Y3RvcjtcblxuICAgIC8vIE5vbiBgT2JqZWN0YCBvYmplY3QgaW5zdGFuY2VzIHdpdGggZGlmZmVyZW50IGNvbnN0cnVjdG9ycyBhcmUgbm90IGVxdWFsLlxuICAgIGlmIChvYmpDdG9yICE9IG90aEN0b3IgJiZcbiAgICAgICAgKCdjb25zdHJ1Y3RvcicgaW4gb2JqZWN0ICYmICdjb25zdHJ1Y3RvcicgaW4gb3RoZXIpICYmXG4gICAgICAgICEodHlwZW9mIG9iakN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvYmpDdG9yIGluc3RhbmNlb2Ygb2JqQ3RvciAmJlxuICAgICAgICAgIHR5cGVvZiBvdGhDdG9yID09ICdmdW5jdGlvbicgJiYgb3RoQ3RvciBpbnN0YW5jZW9mIG90aEN0b3IpKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxPYmplY3RzO1xuIiwiLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblxubW9kdWxlLmV4cG9ydHMgPSBmcmVlR2xvYmFsO1xuIiwidmFyIGJhc2VHZXRBbGxLZXlzID0gcmVxdWlyZSgnLi9fYmFzZUdldEFsbEtleXMnKSxcbiAgICBnZXRTeW1ib2xzID0gcmVxdWlyZSgnLi9fZ2V0U3ltYm9scycpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICovXG5mdW5jdGlvbiBnZXRBbGxLZXlzKG9iamVjdCkge1xuICByZXR1cm4gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzLCBnZXRTeW1ib2xzKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRBbGxLZXlzO1xuIiwidmFyIGJhc2VHZXRBbGxLZXlzID0gcmVxdWlyZSgnLi9fYmFzZUdldEFsbEtleXMnKSxcbiAgICBnZXRTeW1ib2xzSW4gPSByZXF1aXJlKCcuL19nZXRTeW1ib2xzSW4nKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmRcbiAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gKi9cbmZ1bmN0aW9uIGdldEFsbEtleXNJbihvYmplY3QpIHtcbiAgcmV0dXJuIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5c0luLCBnZXRTeW1ib2xzSW4pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEFsbEtleXNJbjtcbiIsInZhciBpc0tleWFibGUgPSByZXF1aXJlKCcuL19pc0tleWFibGUnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBkYXRhIGZvciBgbWFwYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgcmVmZXJlbmNlIGtleS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXAgZGF0YS5cbiAqL1xuZnVuY3Rpb24gZ2V0TWFwRGF0YShtYXAsIGtleSkge1xuICB2YXIgZGF0YSA9IG1hcC5fX2RhdGFfXztcbiAgcmV0dXJuIGlzS2V5YWJsZShrZXkpXG4gICAgPyBkYXRhW3R5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyAnc3RyaW5nJyA6ICdoYXNoJ11cbiAgICA6IGRhdGEubWFwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE1hcERhdGE7XG4iLCJ2YXIgaXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9faXNTdHJpY3RDb21wYXJhYmxlJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIEdldHMgdGhlIHByb3BlcnR5IG5hbWVzLCB2YWx1ZXMsIGFuZCBjb21wYXJlIGZsYWdzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG1hdGNoIGRhdGEgb2YgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGdldE1hdGNoRGF0YShvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IGtleXMob2JqZWN0KSxcbiAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgdmFyIGtleSA9IHJlc3VsdFtsZW5ndGhdLFxuICAgICAgICB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgcmVzdWx0W2xlbmd0aF0gPSBba2V5LCB2YWx1ZSwgaXNTdHJpY3RDb21wYXJhYmxlKHZhbHVlKV07XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRNYXRjaERhdGE7XG4iLCJ2YXIgYmFzZUlzTmF0aXZlID0gcmVxdWlyZSgnLi9fYmFzZUlzTmF0aXZlJyksXG4gICAgZ2V0VmFsdWUgPSByZXF1aXJlKCcuL19nZXRWYWx1ZScpO1xuXG4vKipcbiAqIEdldHMgdGhlIG5hdGl2ZSBmdW5jdGlvbiBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBnZXROYXRpdmUob2JqZWN0LCBrZXkpIHtcbiAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICByZXR1cm4gYmFzZUlzTmF0aXZlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE5hdGl2ZTtcbiIsInZhciBvdmVyQXJnID0gcmVxdWlyZSgnLi9fb3ZlckFyZycpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBnZXRQcm90b3R5cGUgPSBvdmVyQXJnKE9iamVjdC5nZXRQcm90b3R5cGVPZiwgT2JqZWN0KTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRQcm90b3R5cGU7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VHZXRUYWdgIHdoaWNoIGlnbm9yZXMgYFN5bWJvbC50b1N0cmluZ1RhZ2AgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHJhdyBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBnZXRSYXdUYWcodmFsdWUpIHtcbiAgdmFyIGlzT3duID0gaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgc3ltVG9TdHJpbmdUYWcpLFxuICAgICAgdGFnID0gdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuXG4gIHRyeSB7XG4gICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdW5kZWZpbmVkO1xuICAgIHZhciB1bm1hc2tlZCA9IHRydWU7XG4gIH0gY2F0Y2ggKGUpIHt9XG5cbiAgdmFyIHJlc3VsdCA9IG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICBpZiAodW5tYXNrZWQpIHtcbiAgICBpZiAoaXNPd24pIHtcbiAgICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHRhZztcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlIHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRSYXdUYWc7XG4iLCJ2YXIgYXJyYXlGaWx0ZXIgPSByZXF1aXJlKCcuL19hcnJheUZpbHRlcicpLFxuICAgIHN0dWJBcnJheSA9IHJlcXVpcmUoJy4vc3R1YkFycmF5Jyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVHZXRTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gKi9cbnZhciBnZXRTeW1ib2xzID0gIW5hdGl2ZUdldFN5bWJvbHMgPyBzdHViQXJyYXkgOiBmdW5jdGlvbihvYmplY3QpIHtcbiAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICByZXR1cm4gYXJyYXlGaWx0ZXIobmF0aXZlR2V0U3ltYm9scyhvYmplY3QpLCBmdW5jdGlvbihzeW1ib2wpIHtcbiAgICByZXR1cm4gcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChvYmplY3QsIHN5bWJvbCk7XG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRTeW1ib2xzO1xuIiwidmFyIGFycmF5UHVzaCA9IHJlcXVpcmUoJy4vX2FycmF5UHVzaCcpLFxuICAgIGdldFByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2dldFByb3RvdHlwZScpLFxuICAgIGdldFN5bWJvbHMgPSByZXF1aXJlKCcuL19nZXRTeW1ib2xzJyksXG4gICAgc3R1YkFycmF5ID0gcmVxdWlyZSgnLi9zdHViQXJyYXknKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUdldFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBzeW1ib2xzLlxuICovXG52YXIgZ2V0U3ltYm9sc0luID0gIW5hdGl2ZUdldFN5bWJvbHMgPyBzdHViQXJyYXkgOiBmdW5jdGlvbihvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB3aGlsZSAob2JqZWN0KSB7XG4gICAgYXJyYXlQdXNoKHJlc3VsdCwgZ2V0U3ltYm9scyhvYmplY3QpKTtcbiAgICBvYmplY3QgPSBnZXRQcm90b3R5cGUob2JqZWN0KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRTeW1ib2xzSW47XG4iLCJ2YXIgRGF0YVZpZXcgPSByZXF1aXJlKCcuL19EYXRhVmlldycpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLFxuICAgIFByb21pc2UgPSByZXF1aXJlKCcuL19Qcm9taXNlJyksXG4gICAgU2V0ID0gcmVxdWlyZSgnLi9fU2V0JyksXG4gICAgV2Vha01hcCA9IHJlcXVpcmUoJy4vX1dlYWtNYXAnKSxcbiAgICBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIHRvU291cmNlID0gcmVxdWlyZSgnLi9fdG9Tb3VyY2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHByb21pc2VUYWcgPSAnW29iamVjdCBQcm9taXNlXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcblxudmFyIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG1hcHMsIHNldHMsIGFuZCB3ZWFrbWFwcy4gKi9cbnZhciBkYXRhVmlld0N0b3JTdHJpbmcgPSB0b1NvdXJjZShEYXRhVmlldyksXG4gICAgbWFwQ3RvclN0cmluZyA9IHRvU291cmNlKE1hcCksXG4gICAgcHJvbWlzZUN0b3JTdHJpbmcgPSB0b1NvdXJjZShQcm9taXNlKSxcbiAgICBzZXRDdG9yU3RyaW5nID0gdG9Tb3VyY2UoU2V0KSxcbiAgICB3ZWFrTWFwQ3RvclN0cmluZyA9IHRvU291cmNlKFdlYWtNYXApO1xuXG4vKipcbiAqIEdldHMgdGhlIGB0b1N0cmluZ1RhZ2Agb2YgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICovXG52YXIgZ2V0VGFnID0gYmFzZUdldFRhZztcblxuLy8gRmFsbGJhY2sgZm9yIGRhdGEgdmlld3MsIG1hcHMsIHNldHMsIGFuZCB3ZWFrIG1hcHMgaW4gSUUgMTEgYW5kIHByb21pc2VzIGluIE5vZGUuanMgPCA2LlxuaWYgKChEYXRhVmlldyAmJiBnZXRUYWcobmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigxKSkpICE9IGRhdGFWaWV3VGFnKSB8fFxuICAgIChNYXAgJiYgZ2V0VGFnKG5ldyBNYXApICE9IG1hcFRhZykgfHxcbiAgICAoUHJvbWlzZSAmJiBnZXRUYWcoUHJvbWlzZS5yZXNvbHZlKCkpICE9IHByb21pc2VUYWcpIHx8XG4gICAgKFNldCAmJiBnZXRUYWcobmV3IFNldCkgIT0gc2V0VGFnKSB8fFxuICAgIChXZWFrTWFwICYmIGdldFRhZyhuZXcgV2Vha01hcCkgIT0gd2Vha01hcFRhZykpIHtcbiAgZ2V0VGFnID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICB2YXIgcmVzdWx0ID0gYmFzZUdldFRhZyh2YWx1ZSksXG4gICAgICAgIEN0b3IgPSByZXN1bHQgPT0gb2JqZWN0VGFnID8gdmFsdWUuY29uc3RydWN0b3IgOiB1bmRlZmluZWQsXG4gICAgICAgIGN0b3JTdHJpbmcgPSBDdG9yID8gdG9Tb3VyY2UoQ3RvcikgOiAnJztcblxuICAgIGlmIChjdG9yU3RyaW5nKSB7XG4gICAgICBzd2l0Y2ggKGN0b3JTdHJpbmcpIHtcbiAgICAgICAgY2FzZSBkYXRhVmlld0N0b3JTdHJpbmc6IHJldHVybiBkYXRhVmlld1RhZztcbiAgICAgICAgY2FzZSBtYXBDdG9yU3RyaW5nOiByZXR1cm4gbWFwVGFnO1xuICAgICAgICBjYXNlIHByb21pc2VDdG9yU3RyaW5nOiByZXR1cm4gcHJvbWlzZVRhZztcbiAgICAgICAgY2FzZSBzZXRDdG9yU3RyaW5nOiByZXR1cm4gc2V0VGFnO1xuICAgICAgICBjYXNlIHdlYWtNYXBDdG9yU3RyaW5nOiByZXR1cm4gd2Vha01hcFRhZztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRUYWc7XG4iLCIvKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBnZXRWYWx1ZShvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRWYWx1ZTtcbiIsIi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjaGFyYWN0ZXIgY2xhc3Nlcy4gKi9cbnZhciByc0FzdHJhbFJhbmdlID0gJ1xcXFx1ZDgwMC1cXFxcdWRmZmYnLFxuICAgIHJzQ29tYm9NYXJrc1JhbmdlID0gJ1xcXFx1MDMwMC1cXFxcdTAzNmYnLFxuICAgIHJlQ29tYm9IYWxmTWFya3NSYW5nZSA9ICdcXFxcdWZlMjAtXFxcXHVmZTJmJyxcbiAgICByc0NvbWJvU3ltYm9sc1JhbmdlID0gJ1xcXFx1MjBkMC1cXFxcdTIwZmYnLFxuICAgIHJzQ29tYm9SYW5nZSA9IHJzQ29tYm9NYXJrc1JhbmdlICsgcmVDb21ib0hhbGZNYXJrc1JhbmdlICsgcnNDb21ib1N5bWJvbHNSYW5nZSxcbiAgICByc1ZhclJhbmdlID0gJ1xcXFx1ZmUwZVxcXFx1ZmUwZic7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbnZhciByc1pXSiA9ICdcXFxcdTIwMGQnO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgc3RyaW5ncyB3aXRoIFt6ZXJvLXdpZHRoIGpvaW5lcnMgb3IgY29kZSBwb2ludHMgZnJvbSB0aGUgYXN0cmFsIHBsYW5lc10oaHR0cDovL2Vldi5lZS9ibG9nLzIwMTUvMDkvMTIvZGFyay1jb3JuZXJzLW9mLXVuaWNvZGUvKS4gKi9cbnZhciByZUhhc1VuaWNvZGUgPSBSZWdFeHAoJ1snICsgcnNaV0ogKyByc0FzdHJhbFJhbmdlICArIHJzQ29tYm9SYW5nZSArIHJzVmFyUmFuZ2UgKyAnXScpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgc3RyaW5nYCBjb250YWlucyBVbmljb2RlIHN5bWJvbHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGEgc3ltYm9sIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc1VuaWNvZGUoc3RyaW5nKSB7XG4gIHJldHVybiByZUhhc1VuaWNvZGUudGVzdChzdHJpbmcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc1VuaWNvZGU7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgaGFzaC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKi9cbmZ1bmN0aW9uIGhhc2hDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IG5hdGl2ZUNyZWF0ZSA/IG5hdGl2ZUNyZWF0ZShudWxsKSA6IHt9O1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hDbGVhcjtcbiIsIi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNoRGVsZXRlKGtleSkge1xuICB2YXIgcmVzdWx0ID0gdGhpcy5oYXMoa2V5KSAmJiBkZWxldGUgdGhpcy5fX2RhdGFfX1trZXldO1xuICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaERlbGV0ZTtcbiIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEdldHMgdGhlIGhhc2ggdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gaGFzaEdldChrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICBpZiAobmF0aXZlQ3JlYXRlKSB7XG4gICAgdmFyIHJlc3VsdCA9IGRhdGFba2V5XTtcbiAgICByZXR1cm4gcmVzdWx0ID09PSBIQVNIX1VOREVGSU5FRCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbiAgfVxuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpID8gZGF0YVtrZXldIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hHZXQ7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgaGFzaCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzaEhhcyhrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICByZXR1cm4gbmF0aXZlQ3JlYXRlID8gKGRhdGFba2V5XSAhPT0gdW5kZWZpbmVkKSA6IGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoSGFzO1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKlxuICogU2V0cyB0aGUgaGFzaCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGhhc2ggaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGhhc2hTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIHRoaXMuc2l6ZSArPSB0aGlzLmhhcyhrZXkpID8gMCA6IDE7XG4gIGRhdGFba2V5XSA9IChuYXRpdmVDcmVhdGUgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkgPyBIQVNIX1VOREVGSU5FRCA6IHZhbHVlO1xuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoU2V0O1xuIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBhcnJheSBjbG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNsb25lLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAqL1xuZnVuY3Rpb24gaW5pdENsb25lQXJyYXkoYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IG5ldyBhcnJheS5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gIC8vIEFkZCBwcm9wZXJ0aWVzIGFzc2lnbmVkIGJ5IGBSZWdFeHAjZXhlY2AuXG4gIGlmIChsZW5ndGggJiYgdHlwZW9mIGFycmF5WzBdID09ICdzdHJpbmcnICYmIGhhc093blByb3BlcnR5LmNhbGwoYXJyYXksICdpbmRleCcpKSB7XG4gICAgcmVzdWx0LmluZGV4ID0gYXJyYXkuaW5kZXg7XG4gICAgcmVzdWx0LmlucHV0ID0gYXJyYXkuaW5wdXQ7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbml0Q2xvbmVBcnJheTtcbiIsInZhciBjbG9uZUFycmF5QnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVBcnJheUJ1ZmZlcicpLFxuICAgIGNsb25lRGF0YVZpZXcgPSByZXF1aXJlKCcuL19jbG9uZURhdGFWaWV3JyksXG4gICAgY2xvbmVSZWdFeHAgPSByZXF1aXJlKCcuL19jbG9uZVJlZ0V4cCcpLFxuICAgIGNsb25lU3ltYm9sID0gcmVxdWlyZSgnLi9fY2xvbmVTeW1ib2wnKSxcbiAgICBjbG9uZVR5cGVkQXJyYXkgPSByZXF1aXJlKCcuL19jbG9uZVR5cGVkQXJyYXknKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgYW4gb2JqZWN0IGNsb25lIGJhc2VkIG9uIGl0cyBgdG9TdHJpbmdUYWdgLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY2xvbmluZyB2YWx1ZXMgd2l0aCB0YWdzIG9mXG4gKiBgQm9vbGVhbmAsIGBEYXRlYCwgYEVycm9yYCwgYE1hcGAsIGBOdW1iZXJgLCBgUmVnRXhwYCwgYFNldGAsIG9yIGBTdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFnIFRoZSBgdG9TdHJpbmdUYWdgIG9mIHRoZSBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZUJ5VGFnKG9iamVjdCwgdGFnLCBpc0RlZXApIHtcbiAgdmFyIEN0b3IgPSBvYmplY3QuY29uc3RydWN0b3I7XG4gIHN3aXRjaCAodGFnKSB7XG4gICAgY2FzZSBhcnJheUJ1ZmZlclRhZzpcbiAgICAgIHJldHVybiBjbG9uZUFycmF5QnVmZmVyKG9iamVjdCk7XG5cbiAgICBjYXNlIGJvb2xUYWc6XG4gICAgY2FzZSBkYXRlVGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yKCtvYmplY3QpO1xuXG4gICAgY2FzZSBkYXRhVmlld1RhZzpcbiAgICAgIHJldHVybiBjbG9uZURhdGFWaWV3KG9iamVjdCwgaXNEZWVwKTtcblxuICAgIGNhc2UgZmxvYXQzMlRhZzogY2FzZSBmbG9hdDY0VGFnOlxuICAgIGNhc2UgaW50OFRhZzogY2FzZSBpbnQxNlRhZzogY2FzZSBpbnQzMlRhZzpcbiAgICBjYXNlIHVpbnQ4VGFnOiBjYXNlIHVpbnQ4Q2xhbXBlZFRhZzogY2FzZSB1aW50MTZUYWc6IGNhc2UgdWludDMyVGFnOlxuICAgICAgcmV0dXJuIGNsb25lVHlwZWRBcnJheShvYmplY3QsIGlzRGVlcCk7XG5cbiAgICBjYXNlIG1hcFRhZzpcbiAgICAgIHJldHVybiBuZXcgQ3RvcjtcblxuICAgIGNhc2UgbnVtYmVyVGFnOlxuICAgIGNhc2Ugc3RyaW5nVGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yKG9iamVjdCk7XG5cbiAgICBjYXNlIHJlZ2V4cFRhZzpcbiAgICAgIHJldHVybiBjbG9uZVJlZ0V4cChvYmplY3QpO1xuXG4gICAgY2FzZSBzZXRUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3I7XG5cbiAgICBjYXNlIHN5bWJvbFRhZzpcbiAgICAgIHJldHVybiBjbG9uZVN5bWJvbChvYmplY3QpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lQnlUYWc7XG4iLCJ2YXIgYmFzZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX2Jhc2VDcmVhdGUnKSxcbiAgICBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcuL19nZXRQcm90b3R5cGUnKSxcbiAgICBpc1Byb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2lzUHJvdG90eXBlJyk7XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgYW4gb2JqZWN0IGNsb25lLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAqL1xuZnVuY3Rpb24gaW5pdENsb25lT2JqZWN0KG9iamVjdCkge1xuICByZXR1cm4gKHR5cGVvZiBvYmplY3QuY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNQcm90b3R5cGUob2JqZWN0KSlcbiAgICA/IGJhc2VDcmVhdGUoZ2V0UHJvdG90eXBlKG9iamVjdCkpXG4gICAgOiB7fTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbml0Q2xvbmVPYmplY3Q7XG4iLCIvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzLiAqL1xudmFyIHJlSXNVaW50ID0gL14oPzowfFsxLTldXFxkKikkLztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgaW5kZXguXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9TUFYX1NBRkVfSU5URUdFUl0gVGhlIHVwcGVyIGJvdW5kcyBvZiBhIHZhbGlkIGluZGV4LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBpbmRleCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0luZGV4KHZhbHVlLCBsZW5ndGgpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIGxlbmd0aCA9IGxlbmd0aCA9PSBudWxsID8gTUFYX1NBRkVfSU5URUdFUiA6IGxlbmd0aDtcblxuICByZXR1cm4gISFsZW5ndGggJiZcbiAgICAodHlwZSA9PSAnbnVtYmVyJyB8fFxuICAgICAgKHR5cGUgIT0gJ3N5bWJvbCcgJiYgcmVJc1VpbnQudGVzdCh2YWx1ZSkpKSAmJlxuICAgICAgICAodmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8IGxlbmd0aCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNJbmRleDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHVzZSBhcyB1bmlxdWUgb2JqZWN0IGtleS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0tleWFibGUodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiAodHlwZSA9PSAnc3RyaW5nJyB8fCB0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicpXG4gICAgPyAodmFsdWUgIT09ICdfX3Byb3RvX18nKVxuICAgIDogKHZhbHVlID09PSBudWxsKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0tleWFibGU7XG4iLCJ2YXIgY29yZUpzRGF0YSA9IHJlcXVpcmUoJy4vX2NvcmVKc0RhdGEnKSxcbiAgICBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgc3R1YkZhbHNlID0gcmVxdWlyZSgnLi9zdHViRmFsc2UnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYGZ1bmNgIGlzIGNhcGFibGUgb2YgYmVpbmcgbWFza2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2FibGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xudmFyIGlzTWFza2FibGUgPSBjb3JlSnNEYXRhID8gaXNGdW5jdGlvbiA6IHN0dWJGYWxzZTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc01hc2thYmxlO1xuIiwidmFyIGNvcmVKc0RhdGEgPSByZXF1aXJlKCcuL19jb3JlSnNEYXRhJyk7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBtZXRob2RzIG1hc3F1ZXJhZGluZyBhcyBuYXRpdmUuICovXG52YXIgbWFza1NyY0tleSA9IChmdW5jdGlvbigpIHtcbiAgdmFyIHVpZCA9IC9bXi5dKyQvLmV4ZWMoY29yZUpzRGF0YSAmJiBjb3JlSnNEYXRhLmtleXMgJiYgY29yZUpzRGF0YS5rZXlzLklFX1BST1RPIHx8ICcnKTtcbiAgcmV0dXJuIHVpZCA/ICgnU3ltYm9sKHNyYylfMS4nICsgdWlkKSA6ICcnO1xufSgpKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYGZ1bmNgIGhhcyBpdHMgc291cmNlIG1hc2tlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGlzIG1hc2tlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc01hc2tlZChmdW5jKSB7XG4gIHJldHVybiAhIW1hc2tTcmNLZXkgJiYgKG1hc2tTcmNLZXkgaW4gZnVuYyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNNYXNrZWQ7XG4iLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIHByb3RvdHlwZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm90b3R5cGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNQcm90b3R5cGUodmFsdWUpIHtcbiAgdmFyIEN0b3IgPSB2YWx1ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvcixcbiAgICAgIHByb3RvID0gKHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3Rvci5wcm90b3R5cGUpIHx8IG9iamVjdFByb3RvO1xuXG4gIHJldHVybiB2YWx1ZSA9PT0gcHJvdG87XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNQcm90b3R5cGU7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpZiBzdWl0YWJsZSBmb3Igc3RyaWN0XG4gKiAgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNTdHJpY3RDb21wYXJhYmxlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgJiYgIWlzT2JqZWN0KHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1N0cmljdENvbXBhcmFibGU7XG4iLCIvKipcbiAqIENvbnZlcnRzIGBpdGVyYXRvcmAgdG8gYW4gYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBpdGVyYXRvciBUaGUgaXRlcmF0b3IgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBpdGVyYXRvclRvQXJyYXkoaXRlcmF0b3IpIHtcbiAgdmFyIGRhdGEsXG4gICAgICByZXN1bHQgPSBbXTtcblxuICB3aGlsZSAoIShkYXRhID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgcmVzdWx0LnB1c2goZGF0YS52YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpdGVyYXRvclRvQXJyYXk7XG4iLCIvKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUNsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0gW107XG4gIHRoaXMuc2l6ZSA9IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlQ2xlYXI7XG4iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBhcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzcGxpY2UgPSBhcnJheVByb3RvLnNwbGljZTtcblxuLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbGlzdCBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlRGVsZXRlKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIGlmIChpbmRleCA8IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIGxhc3RJbmRleCA9IGRhdGEubGVuZ3RoIC0gMTtcbiAgaWYgKGluZGV4ID09IGxhc3RJbmRleCkge1xuICAgIGRhdGEucG9wKCk7XG4gIH0gZWxzZSB7XG4gICAgc3BsaWNlLmNhbGwoZGF0YSwgaW5kZXgsIDEpO1xuICB9XG4gIC0tdGhpcy5zaXplO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVEZWxldGU7XG4iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUdldChrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICByZXR1cm4gaW5kZXggPCAwID8gdW5kZWZpbmVkIDogZGF0YVtpbmRleF1bMV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlR2V0O1xuIiwidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlSGFzKGtleSkge1xuICByZXR1cm4gYXNzb2NJbmRleE9mKHRoaXMuX19kYXRhX18sIGtleSkgPiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVIYXM7XG4iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKlxuICogU2V0cyB0aGUgbGlzdCBjYWNoZSBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbGlzdCBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgKyt0aGlzLnNpemU7XG4gICAgZGF0YS5wdXNoKFtrZXksIHZhbHVlXSk7XG4gIH0gZWxzZSB7XG4gICAgZGF0YVtpbmRleF1bMV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVTZXQ7XG4iLCJ2YXIgSGFzaCA9IHJlcXVpcmUoJy4vX0hhc2gnKSxcbiAgICBMaXN0Q2FjaGUgPSByZXF1aXJlKCcuL19MaXN0Q2FjaGUnKSxcbiAgICBNYXAgPSByZXF1aXJlKCcuL19NYXAnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBtYXAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVDbGVhcigpIHtcbiAgdGhpcy5zaXplID0gMDtcbiAgdGhpcy5fX2RhdGFfXyA9IHtcbiAgICAnaGFzaCc6IG5ldyBIYXNoLFxuICAgICdtYXAnOiBuZXcgKE1hcCB8fCBMaXN0Q2FjaGUpLFxuICAgICdzdHJpbmcnOiBuZXcgSGFzaFxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlQ2xlYXI7XG4iLCJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbWFwLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlRGVsZXRlKGtleSkge1xuICB2YXIgcmVzdWx0ID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpWydkZWxldGUnXShrZXkpO1xuICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVEZWxldGU7XG4iLCJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBtYXAgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlR2V0KGtleSkge1xuICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmdldChrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlR2V0O1xuIiwidmFyIGdldE1hcERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXBEYXRhJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbWFwIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVIYXMoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuaGFzKGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVIYXM7XG4iLCJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBTZXRzIHRoZSBtYXAgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbWFwIGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLFxuICAgICAgc2l6ZSA9IGRhdGEuc2l6ZTtcblxuICBkYXRhLnNldChrZXksIHZhbHVlKTtcbiAgdGhpcy5zaXplICs9IGRhdGEuc2l6ZSA9PSBzaXplID8gMCA6IDE7XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlU2V0O1xuIiwiLyoqXG4gKiBDb252ZXJ0cyBgbWFwYCB0byBpdHMga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXJzLlxuICovXG5mdW5jdGlvbiBtYXBUb0FycmF5KG1hcCkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG1hcC5zaXplKTtcblxuICBtYXAuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gW2tleSwgdmFsdWVdO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBUb0FycmF5O1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgbmF0aXZlQ3JlYXRlID0gZ2V0TmF0aXZlKE9iamVjdCwgJ2NyZWF0ZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUNyZWF0ZTtcbiIsInZhciBvdmVyQXJnID0gcmVxdWlyZSgnLi9fb3ZlckFyZycpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlS2V5cyA9IG92ZXJBcmcoT2JqZWN0LmtleXMsIE9iamVjdCk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlS2V5cztcbiIsIi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlXG4gKiBbYE9iamVjdC5rZXlzYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gKiBleGNlcHQgdGhhdCBpdCBpbmNsdWRlcyBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBuYXRpdmVLZXlzSW4ob2JqZWN0KSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgaWYgKG9iamVjdCAhPSBudWxsKSB7XG4gICAgZm9yICh2YXIga2V5IGluIE9iamVjdChvYmplY3QpKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUtleXNJbjtcbiIsInZhciBmcmVlR2xvYmFsID0gcmVxdWlyZSgnLi9fZnJlZUdsb2JhbCcpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgcHJvY2Vzc2AgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVQcm9jZXNzID0gbW9kdWxlRXhwb3J0cyAmJiBmcmVlR2xvYmFsLnByb2Nlc3M7XG5cbi8qKiBVc2VkIHRvIGFjY2VzcyBmYXN0ZXIgTm9kZS5qcyBoZWxwZXJzLiAqL1xudmFyIG5vZGVVdGlsID0gKGZ1bmN0aW9uKCkge1xuICB0cnkge1xuICAgIC8vIFVzZSBgdXRpbC50eXBlc2AgZm9yIE5vZGUuanMgMTArLlxuICAgIHZhciB0eXBlcyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlICYmIGZyZWVNb2R1bGUucmVxdWlyZSgndXRpbCcpLnR5cGVzO1xuXG4gICAgaWYgKHR5cGVzKSB7XG4gICAgICByZXR1cm4gdHlwZXM7XG4gICAgfVxuXG4gICAgLy8gTGVnYWN5IGBwcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKWAgZm9yIE5vZGUuanMgPCAxMC5cbiAgICByZXR1cm4gZnJlZVByb2Nlc3MgJiYgZnJlZVByb2Nlc3MuYmluZGluZyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nKCd1dGlsJyk7XG4gIH0gY2F0Y2ggKGUpIHt9XG59KCkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5vZGVVdGlsO1xuIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZyB1c2luZyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBvYmplY3RUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb2JqZWN0VG9TdHJpbmc7XG4iLCIvKipcbiAqIENyZWF0ZXMgYSB1bmFyeSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggaXRzIGFyZ3VtZW50IHRyYW5zZm9ybWVkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gb3ZlckFyZyhmdW5jLCB0cmFuc2Zvcm0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiBmdW5jKHRyYW5zZm9ybShhcmcpKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvdmVyQXJnO1xuIiwidmFyIGZyZWVHbG9iYWwgPSByZXF1aXJlKCcuL19mcmVlR2xvYmFsJyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgc2VsZmAuICovXG52YXIgZnJlZVNlbGYgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmICYmIHNlbGYuT2JqZWN0ID09PSBPYmplY3QgJiYgc2VsZjtcblxuLyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG52YXIgcm9vdCA9IGZyZWVHbG9iYWwgfHwgZnJlZVNlbGYgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxubW9kdWxlLmV4cG9ydHMgPSByb290O1xuIiwiLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKipcbiAqIEFkZHMgYHZhbHVlYCB0byB0aGUgYXJyYXkgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGFkZFxuICogQG1lbWJlck9mIFNldENhY2hlXG4gKiBAYWxpYXMgcHVzaFxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2FjaGUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc2V0Q2FjaGVBZGQodmFsdWUpIHtcbiAgdGhpcy5fX2RhdGFfXy5zZXQodmFsdWUsIEhBU0hfVU5ERUZJTkVEKTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0Q2FjaGVBZGQ7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGluIHRoZSBhcnJheSBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHNldENhY2hlSGFzKHZhbHVlKSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0Q2FjaGVIYXM7XG4iLCIvKipcbiAqIENvbnZlcnRzIGBzZXRgIHRvIGFuIGFycmF5IG9mIGl0cyB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzZXQgVGhlIHNldCB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIHNldFRvQXJyYXkoc2V0KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkoc2V0LnNpemUpO1xuXG4gIHNldC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gdmFsdWU7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldFRvQXJyYXk7XG4iLCJ2YXIgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgc3RhY2suXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqL1xuZnVuY3Rpb24gc3RhY2tDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGU7XG4gIHRoaXMuc2l6ZSA9IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tDbGVhcjtcbiIsIi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrRGVsZXRlKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICByZXN1bHQgPSBkYXRhWydkZWxldGUnXShrZXkpO1xuXG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja0RlbGV0ZTtcbiIsIi8qKlxuICogR2V0cyB0aGUgc3RhY2sgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrR2V0KGtleSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja0dldDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGEgc3RhY2sgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzdGFja0hhcyhrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tIYXM7XG4iLCJ2YXIgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyksXG4gICAgTWFwID0gcmVxdWlyZSgnLi9fTWFwJyksXG4gICAgTWFwQ2FjaGUgPSByZXF1aXJlKCcuL19NYXBDYWNoZScpO1xuXG4vKiogVXNlZCBhcyB0aGUgc2l6ZSB0byBlbmFibGUgbGFyZ2UgYXJyYXkgb3B0aW1pemF0aW9ucy4gKi9cbnZhciBMQVJHRV9BUlJBWV9TSVpFID0gMjAwO1xuXG4vKipcbiAqIFNldHMgdGhlIHN0YWNrIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIHN0YWNrIGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBzdGFja1NldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgaWYgKGRhdGEgaW5zdGFuY2VvZiBMaXN0Q2FjaGUpIHtcbiAgICB2YXIgcGFpcnMgPSBkYXRhLl9fZGF0YV9fO1xuICAgIGlmICghTWFwIHx8IChwYWlycy5sZW5ndGggPCBMQVJHRV9BUlJBWV9TSVpFIC0gMSkpIHtcbiAgICAgIHBhaXJzLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgICAgIHRoaXMuc2l6ZSA9ICsrZGF0YS5zaXplO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIGRhdGEgPSB0aGlzLl9fZGF0YV9fID0gbmV3IE1hcENhY2hlKHBhaXJzKTtcbiAgfVxuICBkYXRhLnNldChrZXksIHZhbHVlKTtcbiAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja1NldDtcbiIsInZhciBhc2NpaVRvQXJyYXkgPSByZXF1aXJlKCcuL19hc2NpaVRvQXJyYXknKSxcbiAgICBoYXNVbmljb2RlID0gcmVxdWlyZSgnLi9faGFzVW5pY29kZScpLFxuICAgIHVuaWNvZGVUb0FycmF5ID0gcmVxdWlyZSgnLi9fdW5pY29kZVRvQXJyYXknKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBhbiBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gc3RyaW5nVG9BcnJheShzdHJpbmcpIHtcbiAgcmV0dXJuIGhhc1VuaWNvZGUoc3RyaW5nKVxuICAgID8gdW5pY29kZVRvQXJyYXkoc3RyaW5nKVxuICAgIDogYXNjaWlUb0FycmF5KHN0cmluZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaW5nVG9BcnJheTtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYGZ1bmNgIHRvIGl0cyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICovXG5mdW5jdGlvbiB0b1NvdXJjZShmdW5jKSB7XG4gIGlmIChmdW5jICE9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZ1bmNUb1N0cmluZy5jYWxsKGZ1bmMpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAoZnVuYyArICcnKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG4gIHJldHVybiAnJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1NvdXJjZTtcbiIsIi8qKiBVc2VkIHRvIG1hdGNoIGEgc2luZ2xlIHdoaXRlc3BhY2UgY2hhcmFjdGVyLiAqL1xudmFyIHJlV2hpdGVzcGFjZSA9IC9cXHMvO1xuXG4vKipcbiAqIFVzZWQgYnkgYF8udHJpbWAgYW5kIGBfLnRyaW1FbmRgIHRvIGdldCB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgbm9uLXdoaXRlc3BhY2VcbiAqIGNoYXJhY3RlciBvZiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIuXG4gKi9cbmZ1bmN0aW9uIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpIHtcbiAgdmFyIGluZGV4ID0gc3RyaW5nLmxlbmd0aDtcblxuICB3aGlsZSAoaW5kZXgtLSAmJiByZVdoaXRlc3BhY2UudGVzdChzdHJpbmcuY2hhckF0KGluZGV4KSkpIHt9XG4gIHJldHVybiBpbmRleDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmltbWVkRW5kSW5kZXg7XG4iLCIvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG52YXIgcnNBc3RyYWxSYW5nZSA9ICdcXFxcdWQ4MDAtXFxcXHVkZmZmJyxcbiAgICByc0NvbWJvTWFya3NSYW5nZSA9ICdcXFxcdTAzMDAtXFxcXHUwMzZmJyxcbiAgICByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgPSAnXFxcXHVmZTIwLVxcXFx1ZmUyZicsXG4gICAgcnNDb21ib1N5bWJvbHNSYW5nZSA9ICdcXFxcdTIwZDAtXFxcXHUyMGZmJyxcbiAgICByc0NvbWJvUmFuZ2UgPSByc0NvbWJvTWFya3NSYW5nZSArIHJlQ29tYm9IYWxmTWFya3NSYW5nZSArIHJzQ29tYm9TeW1ib2xzUmFuZ2UsXG4gICAgcnNWYXJSYW5nZSA9ICdcXFxcdWZlMGVcXFxcdWZlMGYnO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2FwdHVyZSBncm91cHMuICovXG52YXIgcnNBc3RyYWwgPSAnWycgKyByc0FzdHJhbFJhbmdlICsgJ10nLFxuICAgIHJzQ29tYm8gPSAnWycgKyByc0NvbWJvUmFuZ2UgKyAnXScsXG4gICAgcnNGaXR6ID0gJ1xcXFx1ZDgzY1tcXFxcdWRmZmItXFxcXHVkZmZmXScsXG4gICAgcnNNb2RpZmllciA9ICcoPzonICsgcnNDb21ibyArICd8JyArIHJzRml0eiArICcpJyxcbiAgICByc05vbkFzdHJhbCA9ICdbXicgKyByc0FzdHJhbFJhbmdlICsgJ10nLFxuICAgIHJzUmVnaW9uYWwgPSAnKD86XFxcXHVkODNjW1xcXFx1ZGRlNi1cXFxcdWRkZmZdKXsyfScsXG4gICAgcnNTdXJyUGFpciA9ICdbXFxcXHVkODAwLVxcXFx1ZGJmZl1bXFxcXHVkYzAwLVxcXFx1ZGZmZl0nLFxuICAgIHJzWldKID0gJ1xcXFx1MjAwZCc7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSByZWdleGVzLiAqL1xudmFyIHJlT3B0TW9kID0gcnNNb2RpZmllciArICc/JyxcbiAgICByc09wdFZhciA9ICdbJyArIHJzVmFyUmFuZ2UgKyAnXT8nLFxuICAgIHJzT3B0Sm9pbiA9ICcoPzonICsgcnNaV0ogKyAnKD86JyArIFtyc05vbkFzdHJhbCwgcnNSZWdpb25hbCwgcnNTdXJyUGFpcl0uam9pbignfCcpICsgJyknICsgcnNPcHRWYXIgKyByZU9wdE1vZCArICcpKicsXG4gICAgcnNTZXEgPSByc09wdFZhciArIHJlT3B0TW9kICsgcnNPcHRKb2luLFxuICAgIHJzU3ltYm9sID0gJyg/OicgKyBbcnNOb25Bc3RyYWwgKyByc0NvbWJvICsgJz8nLCByc0NvbWJvLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyLCByc0FzdHJhbF0uam9pbignfCcpICsgJyknO1xuXG4vKiogVXNlZCB0byBtYXRjaCBbc3RyaW5nIHN5bWJvbHNdKGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LXVuaWNvZGUpLiAqL1xudmFyIHJlVW5pY29kZSA9IFJlZ0V4cChyc0ZpdHogKyAnKD89JyArIHJzRml0eiArICcpfCcgKyByc1N5bWJvbCArIHJzU2VxLCAnZycpO1xuXG4vKipcbiAqIENvbnZlcnRzIGEgVW5pY29kZSBgc3RyaW5nYCB0byBhbiBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gdW5pY29kZVRvQXJyYXkoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcubWF0Y2gocmVVbmljb2RlKSB8fCBbXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB1bmljb2RlVG9BcnJheTtcbiIsInZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogQ2FzdHMgYHZhbHVlYCBhcyBhbiBhcnJheSBpZiBpdCdzIG5vdCBvbmUuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjQuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3QgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uY2FzdEFycmF5KDEpO1xuICogLy8gPT4gWzFdXG4gKlxuICogXy5jYXN0QXJyYXkoeyAnYSc6IDEgfSk7XG4gKiAvLyA9PiBbeyAnYSc6IDEgfV1cbiAqXG4gKiBfLmNhc3RBcnJheSgnYWJjJyk7XG4gKiAvLyA9PiBbJ2FiYyddXG4gKlxuICogXy5jYXN0QXJyYXkobnVsbCk7XG4gKiAvLyA9PiBbbnVsbF1cbiAqXG4gKiBfLmNhc3RBcnJheSh1bmRlZmluZWQpO1xuICogLy8gPT4gW3VuZGVmaW5lZF1cbiAqXG4gKiBfLmNhc3RBcnJheSgpO1xuICogLy8gPT4gW11cbiAqXG4gKiB2YXIgYXJyYXkgPSBbMSwgMiwgM107XG4gKiBjb25zb2xlLmxvZyhfLmNhc3RBcnJheShhcnJheSkgPT09IGFycmF5KTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gY2FzdEFycmF5KCkge1xuICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgdmFyIHZhbHVlID0gYXJndW1lbnRzWzBdO1xuICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2FzdEFycmF5O1xuIiwidmFyIGJhc2VDbG9uZSA9IHJlcXVpcmUoJy4vX2Jhc2VDbG9uZScpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBjbG9uaW5nLiAqL1xudmFyIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNoYWxsb3cgY2xvbmUgb2YgYHZhbHVlYC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvbiB0aGVcbiAqIFtzdHJ1Y3R1cmVkIGNsb25lIGFsZ29yaXRobV0oaHR0cHM6Ly9tZG4uaW8vU3RydWN0dXJlZF9jbG9uZV9hbGdvcml0aG0pXG4gKiBhbmQgc3VwcG9ydHMgY2xvbmluZyBhcnJheXMsIGFycmF5IGJ1ZmZlcnMsIGJvb2xlYW5zLCBkYXRlIG9iamVjdHMsIG1hcHMsXG4gKiBudW1iZXJzLCBgT2JqZWN0YCBvYmplY3RzLCByZWdleGVzLCBzZXRzLCBzdHJpbmdzLCBzeW1ib2xzLCBhbmQgdHlwZWRcbiAqIGFycmF5cy4gVGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnRpZXMgb2YgYGFyZ3VtZW50c2Agb2JqZWN0cyBhcmUgY2xvbmVkXG4gKiBhcyBwbGFpbiBvYmplY3RzLiBBbiBlbXB0eSBvYmplY3QgaXMgcmV0dXJuZWQgZm9yIHVuY2xvbmVhYmxlIHZhbHVlcyBzdWNoXG4gKiBhcyBlcnJvciBvYmplY3RzLCBmdW5jdGlvbnMsIERPTSBub2RlcywgYW5kIFdlYWtNYXBzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gKiBAc2VlIF8uY2xvbmVEZWVwXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW3sgJ2EnOiAxIH0sIHsgJ2InOiAyIH1dO1xuICpcbiAqIHZhciBzaGFsbG93ID0gXy5jbG9uZShvYmplY3RzKTtcbiAqIGNvbnNvbGUubG9nKHNoYWxsb3dbMF0gPT09IG9iamVjdHNbMF0pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBjbG9uZSh2YWx1ZSkge1xuICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9TWU1CT0xTX0ZMQUcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lO1xuIiwidmFyIGJhc2VDbG9uZSA9IHJlcXVpcmUoJy4vX2Jhc2VDbG9uZScpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBjbG9uaW5nLiAqL1xudmFyIENMT05FX0RFRVBfRkxBRyA9IDEsXG4gICAgQ0xPTkVfU1lNQk9MU19GTEFHID0gNDtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmNsb25lYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBjbG9uZXMgYHZhbHVlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmVjdXJzaXZlbHkgY2xvbmUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZGVlcCBjbG9uZWQgdmFsdWUuXG4gKiBAc2VlIF8uY2xvbmVcbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBbeyAnYSc6IDEgfSwgeyAnYic6IDIgfV07XG4gKlxuICogdmFyIGRlZXAgPSBfLmNsb25lRGVlcChvYmplY3RzKTtcbiAqIGNvbnNvbGUubG9nKGRlZXBbMF0gPT09IG9iamVjdHNbMF0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gY2xvbmVEZWVwKHZhbHVlKSB7XG4gIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX0RFRVBfRkxBRyB8IENMT05FX1NZTUJPTFNfRkxBRyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVEZWVwO1xuIiwidmFyIGJhc2VDbG9uZSA9IHJlcXVpcmUoJy4vX2Jhc2VDbG9uZScpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBjbG9uaW5nLiAqL1xudmFyIENMT05FX0RFRVBfRkxBRyA9IDEsXG4gICAgQ0xPTkVfU1lNQk9MU19GTEFHID0gNDtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmNsb25lV2l0aGAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgY2xvbmVzIGB2YWx1ZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJlY3Vyc2l2ZWx5IGNsb25lLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBkZWVwIGNsb25lZCB2YWx1ZS5cbiAqIEBzZWUgXy5jbG9uZVdpdGhcbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gY3VzdG9taXplcih2YWx1ZSkge1xuICogICBpZiAoXy5pc0VsZW1lbnQodmFsdWUpKSB7XG4gKiAgICAgcmV0dXJuIHZhbHVlLmNsb25lTm9kZSh0cnVlKTtcbiAqICAgfVxuICogfVxuICpcbiAqIHZhciBlbCA9IF8uY2xvbmVEZWVwV2l0aChkb2N1bWVudC5ib2R5LCBjdXN0b21pemVyKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhlbCA9PT0gZG9jdW1lbnQuYm9keSk7XG4gKiAvLyA9PiBmYWxzZVxuICogY29uc29sZS5sb2coZWwubm9kZU5hbWUpO1xuICogLy8gPT4gJ0JPRFknXG4gKiBjb25zb2xlLmxvZyhlbC5jaGlsZE5vZGVzLmxlbmd0aCk7XG4gKiAvLyA9PiAyMFxuICovXG5mdW5jdGlvbiBjbG9uZURlZXBXaXRoKHZhbHVlLCBjdXN0b21pemVyKSB7XG4gIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfREVFUF9GTEFHIHwgQ0xPTkVfU1lNQk9MU19GTEFHLCBjdXN0b21pemVyKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZURlZXBXaXRoO1xuIiwidmFyIGJhc2VDbG9uZSA9IHJlcXVpcmUoJy4vX2Jhc2VDbG9uZScpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBjbG9uaW5nLiAqL1xudmFyIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAqIGlzIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgY2xvbmVkIHZhbHVlLiBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYCxcbiAqIGNsb25pbmcgaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoXG4gKiB1cCB0byBmb3VyIGFyZ3VtZW50czsgKHZhbHVlIFssIGluZGV4fGtleSwgb2JqZWN0LCBzdGFja10pLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNsb25pbmcuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICogQHNlZSBfLmNsb25lRGVlcFdpdGhcbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gY3VzdG9taXplcih2YWx1ZSkge1xuICogICBpZiAoXy5pc0VsZW1lbnQodmFsdWUpKSB7XG4gKiAgICAgcmV0dXJuIHZhbHVlLmNsb25lTm9kZShmYWxzZSk7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiB2YXIgZWwgPSBfLmNsb25lV2l0aChkb2N1bWVudC5ib2R5LCBjdXN0b21pemVyKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhlbCA9PT0gZG9jdW1lbnQuYm9keSk7XG4gKiAvLyA9PiBmYWxzZVxuICogY29uc29sZS5sb2coZWwubm9kZU5hbWUpO1xuICogLy8gPT4gJ0JPRFknXG4gKiBjb25zb2xlLmxvZyhlbC5jaGlsZE5vZGVzLmxlbmd0aCk7XG4gKiAvLyA9PiAwXG4gKi9cbmZ1bmN0aW9uIGNsb25lV2l0aCh2YWx1ZSwgY3VzdG9taXplcikge1xuICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX1NZTUJPTFNfRkxBRywgY3VzdG9taXplcik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVXaXRoO1xuIiwidmFyIGJhc2VDb25mb3Jtc1RvID0gcmVxdWlyZSgnLi9fYmFzZUNvbmZvcm1zVG8nKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBvYmplY3RgIGNvbmZvcm1zIHRvIGBzb3VyY2VgIGJ5IGludm9raW5nIHRoZSBwcmVkaWNhdGVcbiAqIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSB2YWx1ZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQgdG8gYF8uY29uZm9ybXNgIHdoZW4gYHNvdXJjZWAgaXNcbiAqIHBhcnRpYWxseSBhcHBsaWVkLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xNC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgcHJlZGljYXRlcyB0byBjb25mb3JtIHRvLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGNvbmZvcm1zLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyIH07XG4gKlxuICogXy5jb25mb3Jtc1RvKG9iamVjdCwgeyAnYic6IGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG4gPiAxOyB9IH0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uY29uZm9ybXNUbyhvYmplY3QsIHsgJ2InOiBmdW5jdGlvbihuKSB7IHJldHVybiBuID4gMjsgfSB9KTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGNvbmZvcm1zVG8ob2JqZWN0LCBzb3VyY2UpIHtcbiAgcmV0dXJuIHNvdXJjZSA9PSBudWxsIHx8IGJhc2VDb25mb3Jtc1RvKG9iamVjdCwgc291cmNlLCBrZXlzKHNvdXJjZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbmZvcm1zVG87XG4iLCIvKipcbiAqIFBlcmZvcm1zIGFcbiAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBjb21wYXJpc29uIGJldHdlZW4gdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmUgZXF1aXZhbGVudC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAqIHZhciBvdGhlciA9IHsgJ2EnOiAxIH07XG4gKlxuICogXy5lcShvYmplY3QsIG9iamVjdCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5lcShvYmplY3QsIG90aGVyKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5lcSgnYScsICdhJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5lcSgnYScsIE9iamVjdCgnYScpKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5lcShOYU4sIE5hTik7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGVxKHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gdmFsdWUgPT09IG90aGVyIHx8ICh2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcTtcbiIsInZhciBiYXNlR3QgPSByZXF1aXJlKCcuL19iYXNlR3QnKSxcbiAgICBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uID0gcmVxdWlyZSgnLi9fY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbicpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBgb3RoZXJgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy45LjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBgb3RoZXJgLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBzZWUgXy5sdFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmd0KDMsIDEpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZ3QoMywgMyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZ3QoMSwgMyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgZ3QgPSBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKGJhc2VHdCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ3Q7XG4iLCJ2YXIgY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbiA9IHJlcXVpcmUoJy4vX2NyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24nKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYG90aGVyYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuOS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG9cbiAqICBgb3RoZXJgLCBlbHNlIGBmYWxzZWAuXG4gKiBAc2VlIF8ubHRlXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZ3RlKDMsIDEpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZ3RlKDMsIDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZ3RlKDEsIDMpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGd0ZSA9IGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24oZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA+PSBvdGhlcjtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGd0ZTtcbiIsInZhciBiYXNlSXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL19iYXNlSXNBcmd1bWVudHMnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhbiBgYXJndW1lbnRzYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcmd1bWVudHMgPSBiYXNlSXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPyBiYXNlSXNBcmd1bWVudHMgOiBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnY2FsbGVlJykgJiZcbiAgICAhcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0FyZ3VtZW50cztcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheSgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXk7XG4iLCJ2YXIgYmFzZUlzQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19iYXNlSXNBcnJheUJ1ZmZlcicpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIG5vZGVVdGlsID0gcmVxdWlyZSgnLi9fbm9kZVV0aWwnKTtcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNBcnJheUJ1ZmZlciA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzQXJyYXlCdWZmZXI7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlCdWZmZXJgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5QnVmZmVyKG5ldyBBcnJheUJ1ZmZlcigyKSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5QnVmZmVyKG5ldyBBcnJheSgyKSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcnJheUJ1ZmZlciA9IG5vZGVJc0FycmF5QnVmZmVyID8gYmFzZVVuYXJ5KG5vZGVJc0FycmF5QnVmZmVyKSA6IGJhc2VJc0FycmF5QnVmZmVyO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXlCdWZmZXI7XG4iLCJ2YXIgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAgIGlzTGVuZ3RoID0gcmVxdWlyZSgnLi9pc0xlbmd0aCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UuIEEgdmFsdWUgaXMgY29uc2lkZXJlZCBhcnJheS1saWtlIGlmIGl0J3NcbiAqIG5vdCBhIGZ1bmN0aW9uIGFuZCBoYXMgYSBgdmFsdWUubGVuZ3RoYCB0aGF0J3MgYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gb3JcbiAqIGVxdWFsIHRvIGAwYCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUmAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICFpc0Z1bmN0aW9uKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5TGlrZTtcbiIsInZhciBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNBcnJheUxpa2VgIGV4Y2VwdCB0aGF0IGl0IGFsc28gY2hlY2tzIGlmIGB2YWx1ZWBcbiAqIGlzIGFuIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheS1saWtlIG9iamVjdCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBpc0FycmF5TGlrZSh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheUxpa2VPYmplY3Q7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYm9vbGVhbiBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgYm9vbGVhbiwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQm9vbGVhbihmYWxzZSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0Jvb2xlYW4obnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Jvb2xlYW4odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSBmYWxzZSB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGJvb2xUYWcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQm9vbGVhbjtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpLFxuICAgIHN0dWJGYWxzZSA9IHJlcXVpcmUoJy4vc3R1YkZhbHNlJyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlSXNCdWZmZXIgPSBCdWZmZXIgPyBCdWZmZXIuaXNCdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0J1ZmZlcihuZXcgQnVmZmVyKDIpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBVaW50OEFycmF5KDIpKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0J1ZmZlciA9IG5hdGl2ZUlzQnVmZmVyIHx8IHN0dWJGYWxzZTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0J1ZmZlcjtcbiIsInZhciBiYXNlSXNEYXRlID0gcmVxdWlyZSgnLi9fYmFzZUlzRGF0ZScpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIG5vZGVVdGlsID0gcmVxdWlyZSgnLi9fbm9kZVV0aWwnKTtcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNEYXRlID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNEYXRlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRGF0ZWAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZGF0ZSBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0RhdGUobmV3IERhdGUpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNEYXRlKCdNb24gQXByaWwgMjMgMjAxMicpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzRGF0ZSA9IG5vZGVJc0RhdGUgPyBiYXNlVW5hcnkobm9kZUlzRGF0ZSkgOiBiYXNlSXNEYXRlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRGF0ZTtcbiIsInZhciBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpLFxuICAgIGlzUGxhaW5PYmplY3QgPSByZXF1aXJlKCcuL2lzUGxhaW5PYmplY3QnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYSBET00gZWxlbWVudC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIERPTSBlbGVtZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNFbGVtZW50KGRvY3VtZW50LmJvZHkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNFbGVtZW50KCc8Ym9keT4nKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRWxlbWVudCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiB2YWx1ZS5ub2RlVHlwZSA9PT0gMSAmJiAhaXNQbGFpbk9iamVjdCh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNFbGVtZW50O1xuIiwidmFyIGJhc2VLZXlzID0gcmVxdWlyZSgnLi9fYmFzZUtleXMnKSxcbiAgICBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBlbXB0eSBvYmplY3QsIGNvbGxlY3Rpb24sIG1hcCwgb3Igc2V0LlxuICpcbiAqIE9iamVjdHMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIG5vIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZFxuICogcHJvcGVydGllcy5cbiAqXG4gKiBBcnJheS1saWtlIHZhbHVlcyBzdWNoIGFzIGBhcmd1bWVudHNgIG9iamVjdHMsIGFycmF5cywgYnVmZmVycywgc3RyaW5ncywgb3JcbiAqIGpRdWVyeS1saWtlIGNvbGxlY3Rpb25zIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBhIGBsZW5ndGhgIG9mIGAwYC5cbiAqIFNpbWlsYXJseSwgbWFwcyBhbmQgc2V0cyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgYSBgc2l6ZWAgb2YgYDBgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGVtcHR5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNFbXB0eShudWxsKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRW1wdHkodHJ1ZSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0VtcHR5KDEpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNFbXB0eShbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzRW1wdHkoeyAnYSc6IDEgfSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0VtcHR5KHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGlzQXJyYXlMaWtlKHZhbHVlKSAmJlxuICAgICAgKGlzQXJyYXkodmFsdWUpIHx8IHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUuc3BsaWNlID09ICdmdW5jdGlvbicgfHxcbiAgICAgICAgaXNCdWZmZXIodmFsdWUpIHx8IGlzVHlwZWRBcnJheSh2YWx1ZSkgfHwgaXNBcmd1bWVudHModmFsdWUpKSkge1xuICAgIHJldHVybiAhdmFsdWUubGVuZ3RoO1xuICB9XG4gIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpO1xuICBpZiAodGFnID09IG1hcFRhZyB8fCB0YWcgPT0gc2V0VGFnKSB7XG4gICAgcmV0dXJuICF2YWx1ZS5zaXplO1xuICB9XG4gIGlmIChpc1Byb3RvdHlwZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gIWJhc2VLZXlzKHZhbHVlKS5sZW5ndGg7XG4gIH1cbiAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNFbXB0eTtcbiIsInZhciBiYXNlSXNFcXVhbCA9IHJlcXVpcmUoJy4vX2Jhc2VJc0VxdWFsJyk7XG5cbi8qKlxuICogUGVyZm9ybXMgYSBkZWVwIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZVxuICogZXF1aXZhbGVudC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2Qgc3VwcG9ydHMgY29tcGFyaW5nIGFycmF5cywgYXJyYXkgYnVmZmVycywgYm9vbGVhbnMsXG4gKiBkYXRlIG9iamVjdHMsIGVycm9yIG9iamVjdHMsIG1hcHMsIG51bWJlcnMsIGBPYmplY3RgIG9iamVjdHMsIHJlZ2V4ZXMsXG4gKiBzZXRzLCBzdHJpbmdzLCBzeW1ib2xzLCBhbmQgdHlwZWQgYXJyYXlzLiBgT2JqZWN0YCBvYmplY3RzIGFyZSBjb21wYXJlZFxuICogYnkgdGhlaXIgb3duLCBub3QgaW5oZXJpdGVkLCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuIEZ1bmN0aW9ucyBhbmQgRE9NXG4gKiBub2RlcyBhcmUgY29tcGFyZWQgYnkgc3RyaWN0IGVxdWFsaXR5LCBpLmUuIGA9PT1gLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAqXG4gKiBfLmlzRXF1YWwob2JqZWN0LCBvdGhlcik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogb2JqZWN0ID09PSBvdGhlcjtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRXF1YWwodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRXF1YWw7XG4iLCJ2YXIgYmFzZUlzRXF1YWwgPSByZXF1aXJlKCcuL19iYXNlSXNFcXVhbCcpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNFcXVhbGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAqIGlzIGludm9rZWQgdG8gY29tcGFyZSB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLCBjb21wYXJpc29uc1xuICogYXJlIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWQgd2l0aCB1cCB0b1xuICogc2l4IGFyZ3VtZW50czogKG9ialZhbHVlLCBvdGhWYWx1ZSBbLCBpbmRleHxrZXksIG9iamVjdCwgb3RoZXIsIHN0YWNrXSkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBpc0dyZWV0aW5nKHZhbHVlKSB7XG4gKiAgIHJldHVybiAvXmgoPzppfGVsbG8pJC8udGVzdCh2YWx1ZSk7XG4gKiB9XG4gKlxuICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgb3RoVmFsdWUpIHtcbiAqICAgaWYgKGlzR3JlZXRpbmcob2JqVmFsdWUpICYmIGlzR3JlZXRpbmcob3RoVmFsdWUpKSB7XG4gKiAgICAgcmV0dXJuIHRydWU7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiB2YXIgYXJyYXkgPSBbJ2hlbGxvJywgJ2dvb2RieWUnXTtcbiAqIHZhciBvdGhlciA9IFsnaGknLCAnZ29vZGJ5ZSddO1xuICpcbiAqIF8uaXNFcXVhbFdpdGgoYXJyYXksIG90aGVyLCBjdXN0b21pemVyKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaXNFcXVhbFdpdGgodmFsdWUsIG90aGVyLCBjdXN0b21pemVyKSB7XG4gIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgdmFyIHJlc3VsdCA9IGN1c3RvbWl6ZXIgPyBjdXN0b21pemVyKHZhbHVlLCBvdGhlcikgOiB1bmRlZmluZWQ7XG4gIHJldHVybiByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlciwgdW5kZWZpbmVkLCBjdXN0b21pemVyKSA6ICEhcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRXF1YWxXaXRoO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKSxcbiAgICBpc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnLi9pc1BsYWluT2JqZWN0Jyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBkb21FeGNUYWcgPSAnW29iamVjdCBET01FeGNlcHRpb25dJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYW4gYEVycm9yYCwgYEV2YWxFcnJvcmAsIGBSYW5nZUVycm9yYCwgYFJlZmVyZW5jZUVycm9yYCxcbiAqIGBTeW50YXhFcnJvcmAsIGBUeXBlRXJyb3JgLCBvciBgVVJJRXJyb3JgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBlcnJvciBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Vycm9yKG5ldyBFcnJvcik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0Vycm9yKEVycm9yKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRXJyb3IodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdExpa2UodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciB0YWcgPSBiYXNlR2V0VGFnKHZhbHVlKTtcbiAgcmV0dXJuIHRhZyA9PSBlcnJvclRhZyB8fCB0YWcgPT0gZG9tRXhjVGFnIHx8XG4gICAgKHR5cGVvZiB2YWx1ZS5tZXNzYWdlID09ICdzdHJpbmcnICYmIHR5cGVvZiB2YWx1ZS5uYW1lID09ICdzdHJpbmcnICYmICFpc1BsYWluT2JqZWN0KHZhbHVlKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNFcnJvcjtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlSXNGaW5pdGUgPSByb290LmlzRmluaXRlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgZmluaXRlIHByaW1pdGl2ZSBudW1iZXIuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gKiBbYE51bWJlci5pc0Zpbml0ZWBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc0Zpbml0ZSkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmaW5pdGUgbnVtYmVyLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNGaW5pdGUoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRmluaXRlKEluZmluaXR5KTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0Zpbml0ZSgnMycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGaW5pdGUodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJiBuYXRpdmVJc0Zpbml0ZSh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGaW5pdGU7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFzeW5jVGFnID0gJ1tvYmplY3QgQXN5bmNGdW5jdGlvbl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsXG4gICAgcHJveHlUYWcgPSAnW29iamVjdCBQcm94eV0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGZ1bmN0aW9uLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNGdW5jdGlvbihfKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oL2FiYy8pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBUaGUgdXNlIG9mIGBPYmplY3QjdG9TdHJpbmdgIGF2b2lkcyBpc3N1ZXMgd2l0aCB0aGUgYHR5cGVvZmAgb3BlcmF0b3JcbiAgLy8gaW4gU2FmYXJpIDkgd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXlzIGFuZCBvdGhlciBjb25zdHJ1Y3RvcnMuXG4gIHZhciB0YWcgPSBiYXNlR2V0VGFnKHZhbHVlKTtcbiAgcmV0dXJuIHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWcgfHwgdGFnID09IGFzeW5jVGFnIHx8IHRhZyA9PSBwcm94eVRhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0Z1bmN0aW9uO1xuIiwidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vdG9JbnRlZ2VyJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYW4gaW50ZWdlci5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAqIFtgTnVtYmVyLmlzSW50ZWdlcmBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc0ludGVnZXIpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGludGVnZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0ludGVnZXIoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0ludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNJbnRlZ2VyKEluZmluaXR5KTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0ludGVnZXIoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzSW50ZWdlcih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmIHZhbHVlID09IHRvSW50ZWdlcih2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNJbnRlZ2VyO1xuIiwiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGxlbmd0aC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGxlbmd0aCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTGVuZ3RoKDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNMZW5ndGgoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoSW5maW5pdHkpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKCczJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0xlbmd0aCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmXG4gICAgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTGVuZ3RoO1xuIiwidmFyIGJhc2VJc01hcCA9IHJlcXVpcmUoJy4vX2Jhc2VJc01hcCcpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIG5vZGVVdGlsID0gcmVxdWlyZSgnLi9fbm9kZVV0aWwnKTtcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNNYXAgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc01hcDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYE1hcGAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4zLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbWFwLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNNYXAobmV3IE1hcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc01hcChuZXcgV2Vha01hcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNNYXAgPSBub2RlSXNNYXAgPyBiYXNlVW5hcnkobm9kZUlzTWFwKSA6IGJhc2VJc01hcDtcblxubW9kdWxlLmV4cG9ydHMgPSBpc01hcDtcbiIsInZhciBiYXNlSXNNYXRjaCA9IHJlcXVpcmUoJy4vX2Jhc2VJc01hdGNoJyksXG4gICAgZ2V0TWF0Y2hEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWF0Y2hEYXRhJyk7XG5cbi8qKlxuICogUGVyZm9ybXMgYSBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIGBvYmplY3RgIGFuZCBgc291cmNlYCB0b1xuICogZGV0ZXJtaW5lIGlmIGBvYmplY3RgIGNvbnRhaW5zIGVxdWl2YWxlbnQgcHJvcGVydHkgdmFsdWVzLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvIGBfLm1hdGNoZXNgIHdoZW4gYHNvdXJjZWAgaXNcbiAqIHBhcnRpYWxseSBhcHBsaWVkLlxuICpcbiAqIFBhcnRpYWwgY29tcGFyaXNvbnMgd2lsbCBtYXRjaCBlbXB0eSBhcnJheSBhbmQgZW1wdHkgb2JqZWN0IGBzb3VyY2VgXG4gKiB2YWx1ZXMgYWdhaW5zdCBhbnkgYXJyYXkgb3Igb2JqZWN0IHZhbHVlLCByZXNwZWN0aXZlbHkuIFNlZSBgXy5pc0VxdWFsYFxuICogZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgdmFsdWUgY29tcGFyaXNvbnMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyIH07XG4gKlxuICogXy5pc01hdGNoKG9iamVjdCwgeyAnYic6IDIgfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc01hdGNoKG9iamVjdCwgeyAnYic6IDEgfSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc01hdGNoKG9iamVjdCwgc291cmNlKSB7XG4gIHJldHVybiBvYmplY3QgPT09IHNvdXJjZSB8fCBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgZ2V0TWF0Y2hEYXRhKHNvdXJjZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTWF0Y2g7XG4iLCJ2YXIgYmFzZUlzTWF0Y2ggPSByZXF1aXJlKCcuL19iYXNlSXNNYXRjaCcpLFxuICAgIGdldE1hdGNoRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hdGNoRGF0YScpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNNYXRjaGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAqIGlzIGludm9rZWQgdG8gY29tcGFyZSB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLCBjb21wYXJpc29uc1xuICogYXJlIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWQgd2l0aCBmaXZlXG4gKiBhcmd1bWVudHM6IChvYmpWYWx1ZSwgc3JjVmFsdWUsIGluZGV4fGtleSwgb2JqZWN0LCBzb3VyY2UpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIGlzR3JlZXRpbmcodmFsdWUpIHtcbiAqICAgcmV0dXJuIC9eaCg/Oml8ZWxsbykkLy50ZXN0KHZhbHVlKTtcbiAqIH1cbiAqXG4gKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSkge1xuICogICBpZiAoaXNHcmVldGluZyhvYmpWYWx1ZSkgJiYgaXNHcmVldGluZyhzcmNWYWx1ZSkpIHtcbiAqICAgICByZXR1cm4gdHJ1ZTtcbiAqICAgfVxuICogfVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdncmVldGluZyc6ICdoZWxsbycgfTtcbiAqIHZhciBzb3VyY2UgPSB7ICdncmVldGluZyc6ICdoaScgfTtcbiAqXG4gKiBfLmlzTWF0Y2hXaXRoKG9iamVjdCwgc291cmNlLCBjdXN0b21pemVyKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaXNNYXRjaFdpdGgob2JqZWN0LCBzb3VyY2UsIGN1c3RvbWl6ZXIpIHtcbiAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICByZXR1cm4gYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIGdldE1hdGNoRGF0YShzb3VyY2UpLCBjdXN0b21pemVyKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc01hdGNoV2l0aDtcbiIsInZhciBpc051bWJlciA9IHJlcXVpcmUoJy4vaXNOdW1iZXInKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgTmFOYC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAqIFtgTnVtYmVyLmlzTmFOYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzTmFOKSBhbmQgaXMgbm90IHRoZSBzYW1lIGFzXG4gKiBnbG9iYWwgW2Bpc05hTmBdKGh0dHBzOi8vbWRuLmlvL2lzTmFOKSB3aGljaCByZXR1cm5zIGB0cnVlYCBmb3JcbiAqIGB1bmRlZmluZWRgIGFuZCBvdGhlciBub24tbnVtYmVyIHZhbHVlcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgTmFOYCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTmFOKE5hTik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc05hTihuZXcgTnVtYmVyKE5hTikpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzTmFOKHVuZGVmaW5lZCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc05hTih1bmRlZmluZWQpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNOYU4odmFsdWUpIHtcbiAgLy8gQW4gYE5hTmAgcHJpbWl0aXZlIGlzIHRoZSBvbmx5IHZhbHVlIHRoYXQgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi5cbiAgLy8gUGVyZm9ybSB0aGUgYHRvU3RyaW5nVGFnYCBjaGVjayBmaXJzdCB0byBhdm9pZCBlcnJvcnMgd2l0aCBzb21lXG4gIC8vIEFjdGl2ZVggb2JqZWN0cyBpbiBJRS5cbiAgcmV0dXJuIGlzTnVtYmVyKHZhbHVlKSAmJiB2YWx1ZSAhPSArdmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNOYU47XG4iLCJ2YXIgYmFzZUlzTmF0aXZlID0gcmVxdWlyZSgnLi9fYmFzZUlzTmF0aXZlJyksXG4gICAgaXNNYXNrYWJsZSA9IHJlcXVpcmUoJy4vX2lzTWFza2FibGUnKTtcblxuLyoqIEVycm9yIG1lc3NhZ2UgY29uc3RhbnRzLiAqL1xudmFyIENPUkVfRVJST1JfVEVYVCA9ICdVbnN1cHBvcnRlZCBjb3JlLWpzIHVzZS4gVHJ5IGh0dHBzOi8vbnBtcy5pby9zZWFyY2g/cT1wb255ZmlsbC4nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcHJpc3RpbmUgbmF0aXZlIGZ1bmN0aW9uLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBjYW4ndCByZWxpYWJseSBkZXRlY3QgbmF0aXZlIGZ1bmN0aW9ucyBpbiB0aGUgcHJlc2VuY2VcbiAqIG9mIHRoZSBjb3JlLWpzIHBhY2thZ2UgYmVjYXVzZSBjb3JlLWpzIGNpcmN1bXZlbnRzIHRoaXMga2luZCBvZiBkZXRlY3Rpb24uXG4gKiBEZXNwaXRlIG11bHRpcGxlIHJlcXVlc3RzLCB0aGUgY29yZS1qcyBtYWludGFpbmVyIGhhcyBtYWRlIGl0IGNsZWFyOiBhbnlcbiAqIGF0dGVtcHQgdG8gZml4IHRoZSBkZXRlY3Rpb24gd2lsbCBiZSBvYnN0cnVjdGVkLiBBcyBhIHJlc3VsdCwgd2UncmUgbGVmdFxuICogd2l0aCBsaXR0bGUgY2hvaWNlIGJ1dCB0byB0aHJvdyBhbiBlcnJvci4gVW5mb3J0dW5hdGVseSwgdGhpcyBhbHNvIGFmZmVjdHNcbiAqIHBhY2thZ2VzLCBsaWtlIFtiYWJlbC1wb2x5ZmlsbF0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvYmFiZWwtcG9seWZpbGwpLFxuICogd2hpY2ggcmVseSBvbiBjb3JlLWpzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc05hdGl2ZShBcnJheS5wcm90b3R5cGUucHVzaCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc05hdGl2ZShfKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTmF0aXZlKHZhbHVlKSB7XG4gIGlmIChpc01hc2thYmxlKHZhbHVlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihDT1JFX0VSUk9SX1RFWFQpO1xuICB9XG4gIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTmF0aXZlO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbnVsbGlzaCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTmlsKG51bGwpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOaWwodm9pZCAwKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTmlsKE5hTik7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc05pbCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT0gbnVsbDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc05pbDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYG51bGxgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGBudWxsYCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTnVsbChudWxsKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTnVsbCh2b2lkIDApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNOdWxsKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gbnVsbDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc051bGw7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBOdW1iZXJgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogKipOb3RlOioqIFRvIGV4Y2x1ZGUgYEluZmluaXR5YCwgYC1JbmZpbml0eWAsIGFuZCBgTmFOYCwgd2hpY2ggYXJlXG4gKiBjbGFzc2lmaWVkIGFzIG51bWJlcnMsIHVzZSB0aGUgYF8uaXNGaW5pdGVgIG1ldGhvZC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG51bWJlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTnVtYmVyKDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc051bWJlcihJbmZpbml0eSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc051bWJlcignMycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNOdW1iZXIodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IG51bWJlclRhZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNOdW1iZXI7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZVxuICogW2xhbmd1YWdlIHR5cGVdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1lY21hc2NyaXB0LWxhbmd1YWdlLXR5cGVzKVxuICogb2YgYE9iamVjdGAuIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0KHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChfLm5vb3ApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0TGlrZTtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGdldFByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2dldFByb3RvdHlwZScpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcbiAgICBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBVc2VkIHRvIGluZmVyIHRoZSBgT2JqZWN0YCBjb25zdHJ1Y3Rvci4gKi9cbnZhciBvYmplY3RDdG9yU3RyaW5nID0gZnVuY1RvU3RyaW5nLmNhbGwoT2JqZWN0KTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgdGhhdCBpcywgYW4gb2JqZWN0IGNyZWF0ZWQgYnkgdGhlXG4gKiBgT2JqZWN0YCBjb25zdHJ1Y3RvciBvciBvbmUgd2l0aCBhIGBbW1Byb3RvdHlwZV1dYCBvZiBgbnVsbGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjguMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogfVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChuZXcgRm9vKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdCh7ICd4JzogMCwgJ3knOiAwIH0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChPYmplY3QuY3JlYXRlKG51bGwpKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgfHwgYmFzZUdldFRhZyh2YWx1ZSkgIT0gb2JqZWN0VGFnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBwcm90byA9IGdldFByb3RvdHlwZSh2YWx1ZSk7XG4gIGlmIChwcm90byA9PT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHZhciBDdG9yID0gaGFzT3duUHJvcGVydHkuY2FsbChwcm90bywgJ2NvbnN0cnVjdG9yJykgJiYgcHJvdG8uY29uc3RydWN0b3I7XG4gIHJldHVybiB0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IgaW5zdGFuY2VvZiBDdG9yICYmXG4gICAgZnVuY1RvU3RyaW5nLmNhbGwoQ3RvcikgPT0gb2JqZWN0Q3RvclN0cmluZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1BsYWluT2JqZWN0O1xuIiwidmFyIGJhc2VJc1JlZ0V4cCA9IHJlcXVpcmUoJy4vX2Jhc2VJc1JlZ0V4cCcpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIG5vZGVVdGlsID0gcmVxdWlyZSgnLi9fbm9kZVV0aWwnKTtcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNSZWdFeHAgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1JlZ0V4cDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFJlZ0V4cGAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcmVnZXhwLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNSZWdFeHAoL2FiYy8pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNSZWdFeHAoJy9hYmMvJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNSZWdFeHAgPSBub2RlSXNSZWdFeHAgPyBiYXNlVW5hcnkobm9kZUlzUmVnRXhwKSA6IGJhc2VJc1JlZ0V4cDtcblxubW9kdWxlLmV4cG9ydHMgPSBpc1JlZ0V4cDtcbiIsInZhciBpc0ludGVnZXIgPSByZXF1aXJlKCcuL2lzSW50ZWdlcicpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHNhZmUgaW50ZWdlci4gQW4gaW50ZWdlciBpcyBzYWZlIGlmIGl0J3MgYW4gSUVFRS03NTRcbiAqIGRvdWJsZSBwcmVjaXNpb24gbnVtYmVyIHdoaWNoIGlzbid0IHRoZSByZXN1bHQgb2YgYSByb3VuZGVkIHVuc2FmZSBpbnRlZ2VyLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICogW2BOdW1iZXIuaXNTYWZlSW50ZWdlcmBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc1NhZmVJbnRlZ2VyKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNhZmUgaW50ZWdlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU2FmZUludGVnZXIoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1NhZmVJbnRlZ2VyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzU2FmZUludGVnZXIoSW5maW5pdHkpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzU2FmZUludGVnZXIoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU2FmZUludGVnZXIodmFsdWUpIHtcbiAgcmV0dXJuIGlzSW50ZWdlcih2YWx1ZSkgJiYgdmFsdWUgPj0gLU1BWF9TQUZFX0lOVEVHRVIgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1NhZmVJbnRlZ2VyO1xuIiwidmFyIGJhc2VJc1NldCA9IHJlcXVpcmUoJy4vX2Jhc2VJc1NldCcpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIG5vZGVVdGlsID0gcmVxdWlyZSgnLi9fbm9kZVV0aWwnKTtcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNTZXQgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1NldDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFNldGAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4zLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2V0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTZXQobmV3IFNldCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1NldChuZXcgV2Vha1NldCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNTZXQgPSBub2RlSXNTZXQgPyBiYXNlVW5hcnkobm9kZUlzU2V0KSA6IGJhc2VJc1NldDtcblxubW9kdWxlLmV4cG9ydHMgPSBpc1NldDtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTdHJpbmdgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzdHJpbmcsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1N0cmluZygnYWJjJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1N0cmluZygxKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHxcbiAgICAoIWlzQXJyYXkodmFsdWUpICYmIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gc3RyaW5nVGFnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1N0cmluZztcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN5bWJvbGAgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN5bWJvbCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3ltYm9sKFN5bWJvbC5pdGVyYXRvcik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1N5bWJvbCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N5bWJvbCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzeW1ib2wnIHx8XG4gICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gc3ltYm9sVGFnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1N5bWJvbDtcbiIsInZhciBiYXNlSXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fYmFzZUlzVHlwZWRBcnJheScpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIG5vZGVVdGlsID0gcmVxdWlyZSgnLi9fbm9kZVV0aWwnKTtcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNUeXBlZEFycmF5ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNUeXBlZEFycmF5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSB0eXBlZCBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNUeXBlZEFycmF5ID0gbm9kZUlzVHlwZWRBcnJheSA/IGJhc2VVbmFyeShub2RlSXNUeXBlZEFycmF5KSA6IGJhc2VJc1R5cGVkQXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNUeXBlZEFycmF5O1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgdW5kZWZpbmVkYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgdW5kZWZpbmVkYCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzVW5kZWZpbmVkKHZvaWQgMCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1VuZGVmaW5lZChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzVW5kZWZpbmVkO1xuIiwidmFyIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgV2Vha01hcGAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4zLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgd2VhayBtYXAsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1dlYWtNYXAobmV3IFdlYWtNYXApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNXZWFrTWFwKG5ldyBNYXApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNXZWFrTWFwKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGdldFRhZyh2YWx1ZSkgPT0gd2Vha01hcFRhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1dlYWtNYXA7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgd2Vha1NldFRhZyA9ICdbb2JqZWN0IFdlYWtTZXRdJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFdlYWtTZXRgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHdlYWsgc2V0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNXZWFrU2V0KG5ldyBXZWFrU2V0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzV2Vha1NldChuZXcgU2V0KTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzV2Vha1NldCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSB3ZWFrU2V0VGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzV2Vha1NldDtcbiIsInZhciBhcnJheUxpa2VLZXlzID0gcmVxdWlyZSgnLi9fYXJyYXlMaWtlS2V5cycpLFxuICAgIGJhc2VLZXlzID0gcmVxdWlyZSgnLi9fYmFzZUtleXMnKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy4gU2VlIHRoZVxuICogW0VTIHNwZWNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICogZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmtleXMobmV3IEZvbyk7XG4gKiAvLyA9PiBbJ2EnLCAnYiddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKlxuICogXy5rZXlzKCdoaScpO1xuICogLy8gPT4gWycwJywgJzEnXVxuICovXG5mdW5jdGlvbiBrZXlzKG9iamVjdCkge1xuICByZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KSA/IGFycmF5TGlrZUtleXMob2JqZWN0KSA6IGJhc2VLZXlzKG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ga2V5cztcbiIsInZhciBhcnJheUxpa2VLZXlzID0gcmVxdWlyZSgnLi9fYXJyYXlMaWtlS2V5cycpLFxuICAgIGJhc2VLZXlzSW4gPSByZXF1aXJlKCcuL19iYXNlS2V5c0luJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmtleXNJbihuZXcgRm9vKTtcbiAqIC8vID0+IFsnYScsICdiJywgJ2MnXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICovXG5mdW5jdGlvbiBrZXlzSW4ob2JqZWN0KSB7XG4gIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QsIHRydWUpIDogYmFzZUtleXNJbihvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGtleXNJbjtcbiIsIm1vZHVsZS5leHBvcnRzID0ge1xuICAnY2FzdEFycmF5JzogcmVxdWlyZSgnLi9jYXN0QXJyYXknKSxcbiAgJ2Nsb25lJzogcmVxdWlyZSgnLi9jbG9uZScpLFxuICAnY2xvbmVEZWVwJzogcmVxdWlyZSgnLi9jbG9uZURlZXAnKSxcbiAgJ2Nsb25lRGVlcFdpdGgnOiByZXF1aXJlKCcuL2Nsb25lRGVlcFdpdGgnKSxcbiAgJ2Nsb25lV2l0aCc6IHJlcXVpcmUoJy4vY2xvbmVXaXRoJyksXG4gICdjb25mb3Jtc1RvJzogcmVxdWlyZSgnLi9jb25mb3Jtc1RvJyksXG4gICdlcSc6IHJlcXVpcmUoJy4vZXEnKSxcbiAgJ2d0JzogcmVxdWlyZSgnLi9ndCcpLFxuICAnZ3RlJzogcmVxdWlyZSgnLi9ndGUnKSxcbiAgJ2lzQXJndW1lbnRzJzogcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAnaXNBcnJheSc6IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAnaXNBcnJheUJ1ZmZlcic6IHJlcXVpcmUoJy4vaXNBcnJheUJ1ZmZlcicpLFxuICAnaXNBcnJheUxpa2UnOiByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyksXG4gICdpc0FycmF5TGlrZU9iamVjdCc6IHJlcXVpcmUoJy4vaXNBcnJheUxpa2VPYmplY3QnKSxcbiAgJ2lzQm9vbGVhbic6IHJlcXVpcmUoJy4vaXNCb29sZWFuJyksXG4gICdpc0J1ZmZlcic6IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgJ2lzRGF0ZSc6IHJlcXVpcmUoJy4vaXNEYXRlJyksXG4gICdpc0VsZW1lbnQnOiByZXF1aXJlKCcuL2lzRWxlbWVudCcpLFxuICAnaXNFbXB0eSc6IHJlcXVpcmUoJy4vaXNFbXB0eScpLFxuICAnaXNFcXVhbCc6IHJlcXVpcmUoJy4vaXNFcXVhbCcpLFxuICAnaXNFcXVhbFdpdGgnOiByZXF1aXJlKCcuL2lzRXF1YWxXaXRoJyksXG4gICdpc0Vycm9yJzogcmVxdWlyZSgnLi9pc0Vycm9yJyksXG4gICdpc0Zpbml0ZSc6IHJlcXVpcmUoJy4vaXNGaW5pdGUnKSxcbiAgJ2lzRnVuY3Rpb24nOiByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgJ2lzSW50ZWdlcic6IHJlcXVpcmUoJy4vaXNJbnRlZ2VyJyksXG4gICdpc0xlbmd0aCc6IHJlcXVpcmUoJy4vaXNMZW5ndGgnKSxcbiAgJ2lzTWFwJzogcmVxdWlyZSgnLi9pc01hcCcpLFxuICAnaXNNYXRjaCc6IHJlcXVpcmUoJy4vaXNNYXRjaCcpLFxuICAnaXNNYXRjaFdpdGgnOiByZXF1aXJlKCcuL2lzTWF0Y2hXaXRoJyksXG4gICdpc05hTic6IHJlcXVpcmUoJy4vaXNOYU4nKSxcbiAgJ2lzTmF0aXZlJzogcmVxdWlyZSgnLi9pc05hdGl2ZScpLFxuICAnaXNOaWwnOiByZXF1aXJlKCcuL2lzTmlsJyksXG4gICdpc051bGwnOiByZXF1aXJlKCcuL2lzTnVsbCcpLFxuICAnaXNOdW1iZXInOiByZXF1aXJlKCcuL2lzTnVtYmVyJyksXG4gICdpc09iamVjdCc6IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgJ2lzT2JqZWN0TGlrZSc6IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyksXG4gICdpc1BsYWluT2JqZWN0JzogcmVxdWlyZSgnLi9pc1BsYWluT2JqZWN0JyksXG4gICdpc1JlZ0V4cCc6IHJlcXVpcmUoJy4vaXNSZWdFeHAnKSxcbiAgJ2lzU2FmZUludGVnZXInOiByZXF1aXJlKCcuL2lzU2FmZUludGVnZXInKSxcbiAgJ2lzU2V0JzogcmVxdWlyZSgnLi9pc1NldCcpLFxuICAnaXNTdHJpbmcnOiByZXF1aXJlKCcuL2lzU3RyaW5nJyksXG4gICdpc1N5bWJvbCc6IHJlcXVpcmUoJy4vaXNTeW1ib2wnKSxcbiAgJ2lzVHlwZWRBcnJheSc6IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5JyksXG4gICdpc1VuZGVmaW5lZCc6IHJlcXVpcmUoJy4vaXNVbmRlZmluZWQnKSxcbiAgJ2lzV2Vha01hcCc6IHJlcXVpcmUoJy4vaXNXZWFrTWFwJyksXG4gICdpc1dlYWtTZXQnOiByZXF1aXJlKCcuL2lzV2Vha1NldCcpLFxuICAnbHQnOiByZXF1aXJlKCcuL2x0JyksXG4gICdsdGUnOiByZXF1aXJlKCcuL2x0ZScpLFxuICAndG9BcnJheSc6IHJlcXVpcmUoJy4vdG9BcnJheScpLFxuICAndG9GaW5pdGUnOiByZXF1aXJlKCcuL3RvRmluaXRlJyksXG4gICd0b0ludGVnZXInOiByZXF1aXJlKCcuL3RvSW50ZWdlcicpLFxuICAndG9MZW5ndGgnOiByZXF1aXJlKCcuL3RvTGVuZ3RoJyksXG4gICd0b051bWJlcic6IHJlcXVpcmUoJy4vdG9OdW1iZXInKSxcbiAgJ3RvUGxhaW5PYmplY3QnOiByZXF1aXJlKCcuL3RvUGxhaW5PYmplY3QnKSxcbiAgJ3RvU2FmZUludGVnZXInOiByZXF1aXJlKCcuL3RvU2FmZUludGVnZXInKSxcbiAgJ3RvU3RyaW5nJzogcmVxdWlyZSgnLi90b1N0cmluZycpXG59O1xuIiwidmFyIGJhc2VMdCA9IHJlcXVpcmUoJy4vX2Jhc2VMdCcpLFxuICAgIGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24gPSByZXF1aXJlKCcuL19jcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIGBvdGhlcmAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjkuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIGBvdGhlcmAsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQHNlZSBfLmd0XG4gKiBAZXhhbXBsZVxuICpcbiAqIF8ubHQoMSwgMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5sdCgzLCAzKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5sdCgzLCAxKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBsdCA9IGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24oYmFzZUx0KTtcblxubW9kdWxlLmV4cG9ydHMgPSBsdDtcbiIsInZhciBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uID0gcmVxdWlyZSgnLi9fY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbicpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgb3RoZXJgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy45LjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0b1xuICogIGBvdGhlcmAsIGVsc2UgYGZhbHNlYC5cbiAqIEBzZWUgXy5ndGVcbiAqIEBleGFtcGxlXG4gKlxuICogXy5sdGUoMSwgMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5sdGUoMywgMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5sdGUoMywgMSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgbHRlID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihmdW5jdGlvbih2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIHZhbHVlIDw9IG90aGVyO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gbHRlO1xuIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGVtcHR5IGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMy4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZW1wdHkgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBhcnJheXMgPSBfLnRpbWVzKDIsIF8uc3R1YkFycmF5KTtcbiAqXG4gKiBjb25zb2xlLmxvZyhhcnJheXMpO1xuICogLy8gPT4gW1tdLCBbXV1cbiAqXG4gKiBjb25zb2xlLmxvZyhhcnJheXNbMF0gPT09IGFycmF5c1sxXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBzdHViQXJyYXkoKSB7XG4gIHJldHVybiBbXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHViQXJyYXk7XG4iLCIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udGltZXMoMiwgXy5zdHViRmFsc2UpO1xuICogLy8gPT4gW2ZhbHNlLCBmYWxzZV1cbiAqL1xuZnVuY3Rpb24gc3R1YkZhbHNlKCkge1xuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3R1YkZhbHNlO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLFxuICAgIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzU3RyaW5nID0gcmVxdWlyZSgnLi9pc1N0cmluZycpLFxuICAgIGl0ZXJhdG9yVG9BcnJheSA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9yVG9BcnJheScpLFxuICAgIG1hcFRvQXJyYXkgPSByZXF1aXJlKCcuL19tYXBUb0FycmF5JyksXG4gICAgc2V0VG9BcnJheSA9IHJlcXVpcmUoJy4vX3NldFRvQXJyYXknKSxcbiAgICBzdHJpbmdUb0FycmF5ID0gcmVxdWlyZSgnLi9fc3RyaW5nVG9BcnJheScpLFxuICAgIHZhbHVlcyA9IHJlcXVpcmUoJy4vdmFsdWVzJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltSXRlcmF0b3IgPSBTeW1ib2wgPyBTeW1ib2wuaXRlcmF0b3IgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhbiBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvQXJyYXkoeyAnYSc6IDEsICdiJzogMiB9KTtcbiAqIC8vID0+IFsxLCAyXVxuICpcbiAqIF8udG9BcnJheSgnYWJjJyk7XG4gKiAvLyA9PiBbJ2EnLCAnYicsICdjJ11cbiAqXG4gKiBfLnRvQXJyYXkoMSk7XG4gKiAvLyA9PiBbXVxuICpcbiAqIF8udG9BcnJheShudWxsKTtcbiAqIC8vID0+IFtdXG4gKi9cbmZ1bmN0aW9uIHRvQXJyYXkodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBpZiAoaXNBcnJheUxpa2UodmFsdWUpKSB7XG4gICAgcmV0dXJuIGlzU3RyaW5nKHZhbHVlKSA/IHN0cmluZ1RvQXJyYXkodmFsdWUpIDogY29weUFycmF5KHZhbHVlKTtcbiAgfVxuICBpZiAoc3ltSXRlcmF0b3IgJiYgdmFsdWVbc3ltSXRlcmF0b3JdKSB7XG4gICAgcmV0dXJuIGl0ZXJhdG9yVG9BcnJheSh2YWx1ZVtzeW1JdGVyYXRvcl0oKSk7XG4gIH1cbiAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSksXG4gICAgICBmdW5jID0gdGFnID09IG1hcFRhZyA/IG1hcFRvQXJyYXkgOiAodGFnID09IHNldFRhZyA/IHNldFRvQXJyYXkgOiB2YWx1ZXMpO1xuXG4gIHJldHVybiBmdW5jKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0FycmF5O1xuIiwidmFyIHRvTnVtYmVyID0gcmVxdWlyZSgnLi90b051bWJlcicpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwLFxuICAgIE1BWF9JTlRFR0VSID0gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDg7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIGZpbml0ZSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEyLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0Zpbml0ZSgzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9GaW5pdGUoSW5maW5pdHkpO1xuICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAqXG4gKiBfLnRvRmluaXRlKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b0Zpbml0ZSh2YWx1ZSkge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiAwO1xuICB9XG4gIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICBpZiAodmFsdWUgPT09IElORklOSVRZIHx8IHZhbHVlID09PSAtSU5GSU5JVFkpIHtcbiAgICB2YXIgc2lnbiA9ICh2YWx1ZSA8IDAgPyAtMSA6IDEpO1xuICAgIHJldHVybiBzaWduICogTUFYX0lOVEVHRVI7XG4gIH1cbiAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSA/IHZhbHVlIDogMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0Zpbml0ZTtcbiIsInZhciB0b0Zpbml0ZSA9IHJlcXVpcmUoJy4vdG9GaW5pdGUnKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9JbnRlZ2VyYF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvaW50ZWdlcikuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0ludGVnZXIoMy4yKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLnRvSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDBcbiAqXG4gKiBfLnRvSW50ZWdlcihJbmZpbml0eSk7XG4gKiAvLyA9PiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOFxuICpcbiAqIF8udG9JbnRlZ2VyKCczLjInKTtcbiAqIC8vID0+IDNcbiAqL1xuZnVuY3Rpb24gdG9JbnRlZ2VyKHZhbHVlKSB7XG4gIHZhciByZXN1bHQgPSB0b0Zpbml0ZSh2YWx1ZSksXG4gICAgICByZW1haW5kZXIgPSByZXN1bHQgJSAxO1xuXG4gIHJldHVybiByZXN1bHQgPT09IHJlc3VsdCA/IChyZW1haW5kZXIgPyByZXN1bHQgLSByZW1haW5kZXIgOiByZXN1bHQpIDogMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0ludGVnZXI7XG4iLCJ2YXIgYmFzZUNsYW1wID0gcmVxdWlyZSgnLi9fYmFzZUNsYW1wJyksXG4gICAgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi90b0ludGVnZXInKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdGhlIG1heGltdW0gbGVuZ3RoIGFuZCBpbmRleCBvZiBhbiBhcnJheS4gKi9cbnZhciBNQVhfQVJSQVlfTEVOR1RIID0gNDI5NDk2NzI5NTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIgc3VpdGFibGUgZm9yIHVzZSBhcyB0aGUgbGVuZ3RoIG9mIGFuXG4gKiBhcnJheS1saWtlIG9iamVjdC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAqIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2xlbmd0aCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0xlbmd0aCgzLjIpO1xuICogLy8gPT4gM1xuICpcbiAqIF8udG9MZW5ndGgoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiAwXG4gKlxuICogXy50b0xlbmd0aChJbmZpbml0eSk7XG4gKiAvLyA9PiA0Mjk0OTY3Mjk1XG4gKlxuICogXy50b0xlbmd0aCgnMy4yJyk7XG4gKiAvLyA9PiAzXG4gKi9cbmZ1bmN0aW9uIHRvTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA/IGJhc2VDbGFtcCh0b0ludGVnZXIodmFsdWUpLCAwLCBNQVhfQVJSQVlfTEVOR1RIKSA6IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9MZW5ndGg7XG4iLCJ2YXIgYmFzZVRyaW0gPSByZXF1aXJlKCcuL19iYXNlVHJpbScpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBOQU4gPSAwIC8gMDtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJhZCBzaWduZWQgaGV4YWRlY2ltYWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmFkSGV4ID0gL15bLStdMHhbMC05YS1mXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiaW5hcnkgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmluYXJ5ID0gL14wYlswMV0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb2N0YWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzT2N0YWwgPSAvXjBvWzAtN10rJC9pO1xuXG4vKiogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgd2l0aG91dCBhIGRlcGVuZGVuY3kgb24gYHJvb3RgLiAqL1xudmFyIGZyZWVQYXJzZUludCA9IHBhcnNlSW50O1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9OdW1iZXIoMy4yKTtcbiAqIC8vID0+IDMuMlxuICpcbiAqIF8udG9OdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiA1ZS0zMjRcbiAqXG4gKiBfLnRvTnVtYmVyKEluZmluaXR5KTtcbiAqIC8vID0+IEluZmluaXR5XG4gKlxuICogXy50b051bWJlcignMy4yJyk7XG4gKiAvLyA9PiAzLjJcbiAqL1xuZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIE5BTjtcbiAgfVxuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgdmFyIG90aGVyID0gdHlwZW9mIHZhbHVlLnZhbHVlT2YgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLnZhbHVlT2YoKSA6IHZhbHVlO1xuICAgIHZhbHVlID0gaXNPYmplY3Qob3RoZXIpID8gKG90aGVyICsgJycpIDogb3RoZXI7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogK3ZhbHVlO1xuICB9XG4gIHZhbHVlID0gYmFzZVRyaW0odmFsdWUpO1xuICB2YXIgaXNCaW5hcnkgPSByZUlzQmluYXJ5LnRlc3QodmFsdWUpO1xuICByZXR1cm4gKGlzQmluYXJ5IHx8IHJlSXNPY3RhbC50ZXN0KHZhbHVlKSlcbiAgICA/IGZyZWVQYXJzZUludCh2YWx1ZS5zbGljZSgyKSwgaXNCaW5hcnkgPyAyIDogOClcbiAgICA6IChyZUlzQmFkSGV4LnRlc3QodmFsdWUpID8gTkFOIDogK3ZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b051bWJlcjtcbiIsInZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHBsYWluIG9iamVjdCBmbGF0dGVuaW5nIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZ1xuICoga2V5ZWQgcHJvcGVydGllcyBvZiBgdmFsdWVgIHRvIG93biBwcm9wZXJ0aWVzIG9mIHRoZSBwbGFpbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgcGxhaW4gb2JqZWN0LlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmFzc2lnbih7ICdhJzogMSB9LCBuZXcgRm9vKTtcbiAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICpcbiAqIF8uYXNzaWduKHsgJ2EnOiAxIH0sIF8udG9QbGFpbk9iamVjdChuZXcgRm9vKSk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfVxuICovXG5mdW5jdGlvbiB0b1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBjb3B5T2JqZWN0KHZhbHVlLCBrZXlzSW4odmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1BsYWluT2JqZWN0O1xuIiwidmFyIGJhc2VDbGFtcCA9IHJlcXVpcmUoJy4vX2Jhc2VDbGFtcCcpLFxuICAgIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vdG9JbnRlZ2VyJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzYWZlIGludGVnZXIuIEEgc2FmZSBpbnRlZ2VyIGNhbiBiZSBjb21wYXJlZCBhbmRcbiAqIHJlcHJlc2VudGVkIGNvcnJlY3RseS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvU2FmZUludGVnZXIoMy4yKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLnRvU2FmZUludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiAwXG4gKlxuICogXy50b1NhZmVJbnRlZ2VyKEluZmluaXR5KTtcbiAqIC8vID0+IDkwMDcxOTkyNTQ3NDA5OTFcbiAqXG4gKiBfLnRvU2FmZUludGVnZXIoJzMuMicpO1xuICogLy8gPT4gM1xuICovXG5mdW5jdGlvbiB0b1NhZmVJbnRlZ2VyKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZVxuICAgID8gYmFzZUNsYW1wKHRvSW50ZWdlcih2YWx1ZSksIC1NQVhfU0FGRV9JTlRFR0VSLCBNQVhfU0FGRV9JTlRFR0VSKVxuICAgIDogKHZhbHVlID09PSAwID8gdmFsdWUgOiAwKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1NhZmVJbnRlZ2VyO1xuIiwidmFyIGJhc2VUb1N0cmluZyA9IHJlcXVpcmUoJy4vX2Jhc2VUb1N0cmluZycpO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcuIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBmb3IgYG51bGxgXG4gKiBhbmQgYHVuZGVmaW5lZGAgdmFsdWVzLiBUaGUgc2lnbiBvZiBgLTBgIGlzIHByZXNlcnZlZC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9TdHJpbmcobnVsbCk7XG4gKiAvLyA9PiAnJ1xuICpcbiAqIF8udG9TdHJpbmcoLTApO1xuICogLy8gPT4gJy0wJ1xuICpcbiAqIF8udG9TdHJpbmcoWzEsIDIsIDNdKTtcbiAqIC8vID0+ICcxLDIsMydcbiAqL1xuZnVuY3Rpb24gdG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAnJyA6IGJhc2VUb1N0cmluZyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9TdHJpbmc7XG4iLCJ2YXIgYmFzZVZhbHVlcyA9IHJlcXVpcmUoJy4vX2Jhc2VWYWx1ZXMnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5IHZhbHVlcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy52YWx1ZXMobmV3IEZvbyk7XG4gKiAvLyA9PiBbMSwgMl0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqXG4gKiBfLnZhbHVlcygnaGknKTtcbiAqIC8vID0+IFsnaCcsICdpJ11cbiAqL1xuZnVuY3Rpb24gdmFsdWVzKG9iamVjdCkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBbXSA6IGJhc2VWYWx1ZXMob2JqZWN0LCBrZXlzKG9iamVjdCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZhbHVlcztcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBBZnJpa2FhbnMgW2FmXVxuLy8hIGF1dGhvciA6IFdlcm5lciBNb2xsZW50emUgOiBodHRwczovL2dpdGh1Yi5jb20vd2VybmVybVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGFmID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYWYnLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcmllX0ZlYnJ1YXJpZV9NYWFydF9BcHJpbF9NZWlfSnVuaWVfSnVsaWVfQXVndXN0dXNfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGVzZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0ZlYl9NcnRfQXByX01laV9KdW5fSnVsX0F1Z19TZXBfT2t0X05vdl9EZXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnU29uZGFnX01hYW5kYWdfRGluc2RhZ19Xb2Vuc2RhZ19Eb25kZXJkYWdfVnJ5ZGFnX1NhdGVyZGFnJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU29uX01hYV9EaW5fV29lX0Rvbl9WcnlfU2F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1NvX01hX0RpX1dvX0RvX1ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvdm18bm0vaSxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL15ubSQvaS50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICd2bScgOiAnVk0nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdubScgOiAnTk0nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1ZhbmRhZyBvbV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tNw7RyZSBvbV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtvbV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tHaXN0ZXIgb21dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW0xhYXNdIGRkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ29vciAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgZ2VsZWRlJyxcbiAgICAgICAgICAgIHM6IFwiJ24gcGFhciBzZWtvbmRlc1wiLFxuICAgICAgICAgICAgc3M6ICclZCBzZWtvbmRlcycsXG4gICAgICAgICAgICBtOiBcIiduIG1pbnV1dFwiLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGUnLFxuICAgICAgICAgICAgaDogXCInbiB1dXJcIixcbiAgICAgICAgICAgIGhoOiAnJWQgdXJlJyxcbiAgICAgICAgICAgIGQ6IFwiJ24gZGFnXCIsXG4gICAgICAgICAgICBkZDogJyVkIGRhZScsXG4gICAgICAgICAgICBNOiBcIiduIG1hYW5kXCIsXG4gICAgICAgICAgICBNTTogJyVkIG1hYW5kZScsXG4gICAgICAgICAgICB5OiBcIiduIGphYXJcIixcbiAgICAgICAgICAgIHl5OiAnJWQgamFhcicsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdGV8ZGUpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICBudW1iZXIgK1xuICAgICAgICAgICAgICAgIChudW1iZXIgPT09IDEgfHwgbnVtYmVyID09PSA4IHx8IG51bWJlciA+PSAyMCA/ICdzdGUnIDogJ2RlJylcbiAgICAgICAgICAgICk7IC8vIFRoYW5rcyB0byBKb3JpcyBSw7ZsaW5nIDogaHR0cHM6Ly9naXRodWIuY29tL2pqdXBpdGVyXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTWFhbmRhZyBpcyBkaWUgZWVyc3RlIGRhZyB2YW4gZGllIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIERpZSB3ZWVrIHdhdCBkaWUgNGRlIEphbnVhcmllIGJldmF0IGlzIGRpZSBlZXJzdGUgd2VlayB2YW4gZGllIGphYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYWY7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQXJhYmljIChBbGdlcmlhKSBbYXItZHpdXG4vLyEgYXV0aG9yIDogQW1pbmUgUm91a2g6IGh0dHBzOi8vZ2l0aHViLmNvbS9BbWluZTI3XG4vLyEgYXV0aG9yIDogQWJkZWwgU2FpZDogaHR0cHM6Ly9naXRodWIuY29tL2FiZGVsc2FpZFxuLy8hIGF1dGhvciA6IEFobWVkIEVsa2hhdGliXG4vLyEgYXV0aG9yIDogZm9yYWJpIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3JhYmlcbi8vISBhdXRob3IgOiBOb3VyZWRkaW5lIExPVUFIRURKIDogaHR0cHM6Ly9naXRodWIuY29tL25vdXJlZGRpbmVtXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgcGx1cmFsRm9ybSA9IGZ1bmN0aW9uIChuKSB7XG4gICAgICAgICAgICByZXR1cm4gbiA9PT0gMFxuICAgICAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgICAgIDogbiA9PT0gMVxuICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgIDogbiA9PT0gMlxuICAgICAgICAgICAgICAgID8gMlxuICAgICAgICAgICAgICAgIDogbiAlIDEwMCA+PSAzICYmIG4gJSAxMDAgPD0gMTBcbiAgICAgICAgICAgICAgICA/IDNcbiAgICAgICAgICAgICAgICA6IG4gJSAxMDAgPj0gMTFcbiAgICAgICAgICAgICAgICA/IDRcbiAgICAgICAgICAgICAgICA6IDU7XG4gICAgICAgIH0sXG4gICAgICAgIHBsdXJhbHMgPSB7XG4gICAgICAgICAgICBzOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINir2KfZhtmK2KknLFxuICAgICAgICAgICAgICAgICfYq9in2YbZitipINmI2KfYrdiv2KknLFxuICAgICAgICAgICAgICAgIFsn2KvYp9mG2YrYqtin2YYnLCAn2KvYp9mG2YrYqtmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2KvZiNin2YYnLFxuICAgICAgICAgICAgICAgICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgICAgICAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbTogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYr9mC2YrZgtipJyxcbiAgICAgICAgICAgICAgICAn2K/ZgtmK2YLYqSDZiNin2K3Yr9ipJyxcbiAgICAgICAgICAgICAgICBbJ9iv2YLZitmC2KrYp9mGJywgJ9iv2YLZitmC2KrZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINiv2YLYp9im2YInLFxuICAgICAgICAgICAgICAgICclZCDYr9mC2YrZgtipJyxcbiAgICAgICAgICAgICAgICAnJWQg2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgaDogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYs9in2LnYqScsXG4gICAgICAgICAgICAgICAgJ9iz2KfYudipINmI2KfYrdiv2KknLFxuICAgICAgICAgICAgICAgIFsn2LPYp9i52KrYp9mGJywgJ9iz2KfYudiq2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYs9in2LnYp9iqJyxcbiAgICAgICAgICAgICAgICAnJWQg2LPYp9i52KknLFxuICAgICAgICAgICAgICAgICclZCDYs9in2LnYqScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgZDogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDZitmI2YUnLFxuICAgICAgICAgICAgICAgICfZitmI2YUg2YjYp9it2K8nLFxuICAgICAgICAgICAgICAgIFsn2YrZiNmF2KfZhicsICfZitmI2YXZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINij2YrYp9mFJyxcbiAgICAgICAgICAgICAgICAnJWQg2YrZiNmF2YvYpycsXG4gICAgICAgICAgICAgICAgJyVkINmK2YjZhScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgTTogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYtNmH2LEnLFxuICAgICAgICAgICAgICAgICfYtNmH2LEg2YjYp9it2K8nLFxuICAgICAgICAgICAgICAgIFsn2LTZh9ix2KfZhicsICfYtNmH2LHZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINij2LTZh9ixJyxcbiAgICAgICAgICAgICAgICAnJWQg2LTZh9ix2KcnLFxuICAgICAgICAgICAgICAgICclZCDYtNmH2LEnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHk6IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2LnYp9mFJyxcbiAgICAgICAgICAgICAgICAn2LnYp9mFINmI2KfYrdivJyxcbiAgICAgICAgICAgICAgICBbJ9i52KfZhdin2YYnLCAn2LnYp9mF2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYo9i52YjYp9mFJyxcbiAgICAgICAgICAgICAgICAnJWQg2LnYp9mF2YvYpycsXG4gICAgICAgICAgICAgICAgJyVkINi52KfZhScsXG4gICAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBwbHVyYWxpemUgPSBmdW5jdGlvbiAodSkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICB2YXIgZiA9IHBsdXJhbEZvcm0obnVtYmVyKSxcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gcGx1cmFsc1t1XVtwbHVyYWxGb3JtKG51bWJlcildO1xuICAgICAgICAgICAgICAgIGlmIChmID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ciA9IHN0clt3aXRob3V0U3VmZml4ID8gMCA6IDFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc3RyLnJlcGxhY2UoLyVkL2ksIG51bWJlcik7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBtb250aHMgPSBbXG4gICAgICAgICAgICAn2KzYp9mG2YHZiicsXG4gICAgICAgICAgICAn2YHZitmB2LHZiicsXG4gICAgICAgICAgICAn2YXYp9ix2LMnLFxuICAgICAgICAgICAgJ9ij2YHYsdmK2YQnLFxuICAgICAgICAgICAgJ9mF2KfZiicsXG4gICAgICAgICAgICAn2KzZiNin2YYnLFxuICAgICAgICAgICAgJ9is2YjZitmE2YrYqScsXG4gICAgICAgICAgICAn2KPZiNiqJyxcbiAgICAgICAgICAgICfYs9io2KrZhdio2LEnLFxuICAgICAgICAgICAgJ9ij2YPYqtmI2KjYsScsXG4gICAgICAgICAgICAn2YbZiNmB2YXYqNixJyxcbiAgICAgICAgICAgICfYr9mK2LPZhdio2LEnLFxuICAgICAgICBdO1xuXG4gICAgdmFyIGFyRHogPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhci1keicsIHtcbiAgICAgICAgbW9udGhzOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0OiBtb250aHMsXG4gICAgICAgIHdlZWtkYXlzOiAn2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn2KPYrdivX9il2KvZhtmK2YZf2KvZhNin2KvYp9ihX9ij2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn2K1f2YZf2Ktf2LFf2K5f2Kxf2LMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0QvXFx1MjAwRk0vXFx1MjAwRllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/YtXzZhS8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICfZhScgPT09IGlucHV0O1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2LUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9mFJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhNmK2YjZhSDYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9i62K/Zi9inINi52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9io2LnYryAlcycsXG4gICAgICAgICAgICBwYXN0OiAn2YXZhtiwICVzJyxcbiAgICAgICAgICAgIHM6IHBsdXJhbGl6ZSgncycpLFxuICAgICAgICAgICAgc3M6IHBsdXJhbGl6ZSgncycpLFxuICAgICAgICAgICAgbTogcGx1cmFsaXplKCdtJyksXG4gICAgICAgICAgICBtbTogcGx1cmFsaXplKCdtJyksXG4gICAgICAgICAgICBoOiBwbHVyYWxpemUoJ2gnKSxcbiAgICAgICAgICAgIGhoOiBwbHVyYWxpemUoJ2gnKSxcbiAgICAgICAgICAgIGQ6IHBsdXJhbGl6ZSgnZCcpLFxuICAgICAgICAgICAgZGQ6IHBsdXJhbGl6ZSgnZCcpLFxuICAgICAgICAgICAgTTogcGx1cmFsaXplKCdNJyksXG4gICAgICAgICAgICBNTTogcGx1cmFsaXplKCdNJyksXG4gICAgICAgICAgICB5OiBwbHVyYWxpemUoJ3knKSxcbiAgICAgICAgICAgIHl5OiBwbHVyYWxpemUoJ3knKSxcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC8sL2csICfYjCcpO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXJEejtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBBcmFiaWMgKEt1d2FpdCkgW2FyLWt3XVxuLy8hIGF1dGhvciA6IE51c3JldCBQYXJsYWs6IGh0dHBzOi8vZ2l0aHViLmNvbS9udXNyZXRwYXJsYWtcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBhckt3ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYXIta3cnLCB7XG4gICAgICAgIG1vbnRoczogJ9mK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mKX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiNiyX9i62LTYql/YtNiq2YbYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YbYqNixX9iv2KzZhtio2LEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ9mK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mKX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiNiyX9i62LTYql/YtNiq2YbYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YbYqNixX9iv2KzZhtio2LEnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfYp9mE2KPYrdivX9in2YTYpdiq2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfYp9it2K9f2KfYqtmG2YrZhl/Yq9mE2KfYq9in2KFf2KfYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfYrV/Zhl/Yq1/YsV/Yrl/YrF/Ysycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhNmK2YjZhSDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9i62K/YpyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2KPZhdizINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfZgdmKICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICfZhdmG2LAgJXMnLFxuICAgICAgICAgICAgczogJ9ir2YjYp9mGJyxcbiAgICAgICAgICAgIHNzOiAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICBtOiAn2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICBtbTogJyVkINiv2YLYp9im2YInLFxuICAgICAgICAgICAgaDogJ9iz2KfYudipJyxcbiAgICAgICAgICAgIGhoOiAnJWQg2LPYp9i52KfYqicsXG4gICAgICAgICAgICBkOiAn2YrZiNmFJyxcbiAgICAgICAgICAgIGRkOiAnJWQg2KPZitin2YUnLFxuICAgICAgICAgICAgTTogJ9i02YfYsScsXG4gICAgICAgICAgICBNTTogJyVkINij2LTZh9ixJyxcbiAgICAgICAgICAgIHk6ICfYs9mG2KknLFxuICAgICAgICAgICAgeXk6ICclZCDYs9mG2YjYp9iqJyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogMTIsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXJLdztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBBcmFiaWMgKExpYnlhKSBbYXItbHldXG4vLyEgYXV0aG9yIDogQWxpIEhtZXI6IGh0dHBzOi8vZ2l0aHViLmNvbS9raWtvYW5pc1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICcxJyxcbiAgICAgICAgICAgIDI6ICcyJyxcbiAgICAgICAgICAgIDM6ICczJyxcbiAgICAgICAgICAgIDQ6ICc0JyxcbiAgICAgICAgICAgIDU6ICc1JyxcbiAgICAgICAgICAgIDY6ICc2JyxcbiAgICAgICAgICAgIDc6ICc3JyxcbiAgICAgICAgICAgIDg6ICc4JyxcbiAgICAgICAgICAgIDk6ICc5JyxcbiAgICAgICAgICAgIDA6ICcwJyxcbiAgICAgICAgfSxcbiAgICAgICAgcGx1cmFsRm9ybSA9IGZ1bmN0aW9uIChuKSB7XG4gICAgICAgICAgICByZXR1cm4gbiA9PT0gMFxuICAgICAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgICAgIDogbiA9PT0gMVxuICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgIDogbiA9PT0gMlxuICAgICAgICAgICAgICAgID8gMlxuICAgICAgICAgICAgICAgIDogbiAlIDEwMCA+PSAzICYmIG4gJSAxMDAgPD0gMTBcbiAgICAgICAgICAgICAgICA/IDNcbiAgICAgICAgICAgICAgICA6IG4gJSAxMDAgPj0gMTFcbiAgICAgICAgICAgICAgICA/IDRcbiAgICAgICAgICAgICAgICA6IDU7XG4gICAgICAgIH0sXG4gICAgICAgIHBsdXJhbHMgPSB7XG4gICAgICAgICAgICBzOiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINir2KfZhtmK2KknLFxuICAgICAgICAgICAgICAgICfYq9in2YbZitipINmI2KfYrdiv2KknLFxuICAgICAgICAgICAgICAgIFsn2KvYp9mG2YrYqtin2YYnLCAn2KvYp9mG2YrYqtmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2KvZiNin2YYnLFxuICAgICAgICAgICAgICAgICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgICAgICAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbTogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYr9mC2YrZgtipJyxcbiAgICAgICAgICAgICAgICAn2K/ZgtmK2YLYqSDZiNin2K3Yr9ipJyxcbiAgICAgICAgICAgICAgICBbJ9iv2YLZitmC2KrYp9mGJywgJ9iv2YLZitmC2KrZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINiv2YLYp9im2YInLFxuICAgICAgICAgICAgICAgICclZCDYr9mC2YrZgtipJyxcbiAgICAgICAgICAgICAgICAnJWQg2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgaDogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYs9in2LnYqScsXG4gICAgICAgICAgICAgICAgJ9iz2KfYudipINmI2KfYrdiv2KknLFxuICAgICAgICAgICAgICAgIFsn2LPYp9i52KrYp9mGJywgJ9iz2KfYudiq2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYs9in2LnYp9iqJyxcbiAgICAgICAgICAgICAgICAnJWQg2LPYp9i52KknLFxuICAgICAgICAgICAgICAgICclZCDYs9in2LnYqScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgZDogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDZitmI2YUnLFxuICAgICAgICAgICAgICAgICfZitmI2YUg2YjYp9it2K8nLFxuICAgICAgICAgICAgICAgIFsn2YrZiNmF2KfZhicsICfZitmI2YXZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINij2YrYp9mFJyxcbiAgICAgICAgICAgICAgICAnJWQg2YrZiNmF2YvYpycsXG4gICAgICAgICAgICAgICAgJyVkINmK2YjZhScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgTTogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYtNmH2LEnLFxuICAgICAgICAgICAgICAgICfYtNmH2LEg2YjYp9it2K8nLFxuICAgICAgICAgICAgICAgIFsn2LTZh9ix2KfZhicsICfYtNmH2LHZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINij2LTZh9ixJyxcbiAgICAgICAgICAgICAgICAnJWQg2LTZh9ix2KcnLFxuICAgICAgICAgICAgICAgICclZCDYtNmH2LEnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHk6IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2LnYp9mFJyxcbiAgICAgICAgICAgICAgICAn2LnYp9mFINmI2KfYrdivJyxcbiAgICAgICAgICAgICAgICBbJ9i52KfZhdin2YYnLCAn2LnYp9mF2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYo9i52YjYp9mFJyxcbiAgICAgICAgICAgICAgICAnJWQg2LnYp9mF2YvYpycsXG4gICAgICAgICAgICAgICAgJyVkINi52KfZhScsXG4gICAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBwbHVyYWxpemUgPSBmdW5jdGlvbiAodSkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICB2YXIgZiA9IHBsdXJhbEZvcm0obnVtYmVyKSxcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gcGx1cmFsc1t1XVtwbHVyYWxGb3JtKG51bWJlcildO1xuICAgICAgICAgICAgICAgIGlmIChmID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ciA9IHN0clt3aXRob3V0U3VmZml4ID8gMCA6IDFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc3RyLnJlcGxhY2UoLyVkL2ksIG51bWJlcik7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBtb250aHMgPSBbXG4gICAgICAgICAgICAn2YrZhtin2YrYsScsXG4gICAgICAgICAgICAn2YHYqNix2KfZitixJyxcbiAgICAgICAgICAgICfZhdin2LHYsycsXG4gICAgICAgICAgICAn2KPYqNix2YrZhCcsXG4gICAgICAgICAgICAn2YXYp9mK2YgnLFxuICAgICAgICAgICAgJ9mK2YjZhtmK2YgnLFxuICAgICAgICAgICAgJ9mK2YjZhNmK2YgnLFxuICAgICAgICAgICAgJ9ij2LrYs9i32LMnLFxuICAgICAgICAgICAgJ9iz2KjYqtmF2KjYsScsXG4gICAgICAgICAgICAn2KPZg9iq2YjYqNixJyxcbiAgICAgICAgICAgICfZhtmI2YHZhdio2LEnLFxuICAgICAgICAgICAgJ9iv2YrYs9mF2KjYsScsXG4gICAgICAgIF07XG5cbiAgICB2YXIgYXJMeSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FyLWx5Jywge1xuICAgICAgICBtb250aHM6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IG1vbnRocyxcbiAgICAgICAgd2Vla2RheXM6ICfYp9mE2KPYrdivX9in2YTYpdir2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfYo9it2K9f2KXYq9mG2YrZhl/Yq9mE2KfYq9in2KFf2KPYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfYrV/Zhl/Yq1/YsV/Yrl/YrF/Ysycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnRC9cXHUyMDBGTS9cXHUyMDBGWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9i1fNmFLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ9mFJyA9PT0gaW5wdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYtSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2YUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9mL2Kcg2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9ij2YXYsyDYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW9i52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn2KjYudivICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICfZhdmG2LAgJXMnLFxuICAgICAgICAgICAgczogcGx1cmFsaXplKCdzJyksXG4gICAgICAgICAgICBzczogcGx1cmFsaXplKCdzJyksXG4gICAgICAgICAgICBtOiBwbHVyYWxpemUoJ20nKSxcbiAgICAgICAgICAgIG1tOiBwbHVyYWxpemUoJ20nKSxcbiAgICAgICAgICAgIGg6IHBsdXJhbGl6ZSgnaCcpLFxuICAgICAgICAgICAgaGg6IHBsdXJhbGl6ZSgnaCcpLFxuICAgICAgICAgICAgZDogcGx1cmFsaXplKCdkJyksXG4gICAgICAgICAgICBkZDogcGx1cmFsaXplKCdkJyksXG4gICAgICAgICAgICBNOiBwbHVyYWxpemUoJ00nKSxcbiAgICAgICAgICAgIE1NOiBwbHVyYWxpemUoJ00nKSxcbiAgICAgICAgICAgIHk6IHBsdXJhbGl6ZSgneScpLFxuICAgICAgICAgICAgeXk6IHBsdXJhbGl6ZSgneScpLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiA2LCAvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiAxMiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBhckx5O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEFyYWJpYyAoTW9yb2NjbykgW2FyLW1hXVxuLy8hIGF1dGhvciA6IEVsRmFkaWxpIFlhc3NpbmUgOiBodHRwczovL2dpdGh1Yi5jb20vRWxGYWRpbGlZXG4vLyEgYXV0aG9yIDogQWJkZWwgU2FpZCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hYmRlbHNhaWRcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBhck1hID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYXItbWEnLCB7XG4gICAgICAgIG1vbnRoczogJ9mK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mKX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiNiyX9i62LTYql/YtNiq2YbYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YbYqNixX9iv2KzZhtio2LEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ9mK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mKX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiNiyX9i62LTYql/YtNiq2YbYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YbYqNixX9iv2KzZhtio2LEnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfYp9mE2KPYrdivX9in2YTYpdir2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfYp9it2K9f2KfYq9mG2YrZhl/Yq9mE2KfYq9in2KFf2KfYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfYrV/Zhl/Yq1/YsV/Yrl/YrF/Ysycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhNmK2YjZhSDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9i62K/YpyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2KPZhdizINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfZgdmKICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICfZhdmG2LAgJXMnLFxuICAgICAgICAgICAgczogJ9ir2YjYp9mGJyxcbiAgICAgICAgICAgIHNzOiAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICBtOiAn2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICBtbTogJyVkINiv2YLYp9im2YInLFxuICAgICAgICAgICAgaDogJ9iz2KfYudipJyxcbiAgICAgICAgICAgIGhoOiAnJWQg2LPYp9i52KfYqicsXG4gICAgICAgICAgICBkOiAn2YrZiNmFJyxcbiAgICAgICAgICAgIGRkOiAnJWQg2KPZitin2YUnLFxuICAgICAgICAgICAgTTogJ9i02YfYsScsXG4gICAgICAgICAgICBNTTogJyVkINij2LTZh9ixJyxcbiAgICAgICAgICAgIHk6ICfYs9mG2KknLFxuICAgICAgICAgICAgeXk6ICclZCDYs9mG2YjYp9iqJyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFyTWE7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQXJhYmljIChTYXVkaSBBcmFiaWEpIFthci1zYV1cbi8vISBhdXRob3IgOiBTdWhhaWwgQWxrb3dhaWxlZXQgOiBodHRwczovL2dpdGh1Yi5jb20veHNvaFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICfZoScsXG4gICAgICAgICAgICAyOiAn2aInLFxuICAgICAgICAgICAgMzogJ9mjJyxcbiAgICAgICAgICAgIDQ6ICfZpCcsXG4gICAgICAgICAgICA1OiAn2aUnLFxuICAgICAgICAgICAgNjogJ9mmJyxcbiAgICAgICAgICAgIDc6ICfZpycsXG4gICAgICAgICAgICA4OiAn2agnLFxuICAgICAgICAgICAgOTogJ9mpJyxcbiAgICAgICAgICAgIDA6ICfZoCcsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfZoSc6ICcxJyxcbiAgICAgICAgICAgICfZoic6ICcyJyxcbiAgICAgICAgICAgICfZoyc6ICczJyxcbiAgICAgICAgICAgICfZpCc6ICc0JyxcbiAgICAgICAgICAgICfZpSc6ICc1JyxcbiAgICAgICAgICAgICfZpic6ICc2JyxcbiAgICAgICAgICAgICfZpyc6ICc3JyxcbiAgICAgICAgICAgICfZqCc6ICc4JyxcbiAgICAgICAgICAgICfZqSc6ICc5JyxcbiAgICAgICAgICAgICfZoCc6ICcwJyxcbiAgICAgICAgfTtcblxuICAgIHZhciBhclNhID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYXItc2EnLCB7XG4gICAgICAgIG1vbnRoczogJ9mK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mK2Yhf2YrZiNmG2YrZiF/ZitmI2YTZitmIX9ij2LrYs9i32LNf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfZitmG2KfZitixX9mB2KjYsdin2YrYsV/Zhdin2LHYs1/Yo9io2LHZitmEX9mF2KfZitmIX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiF/Yo9i62LPYt9izX9iz2KjYqtmF2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmB2YXYqNixX9iv2YrYs9mF2KjYsScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ9in2YTYo9it2K9f2KfZhNil2KvZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9ij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9itX9mGX9irX9ixX9iuX9isX9izJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv2LV82YUvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAn2YUnID09PSBpbnB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9i1JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfZhSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9in2YTZitmI2YUg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vYutiv2Kcg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9ij2YXYsyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn2YHZiiAlcycsXG4gICAgICAgICAgICBwYXN0OiAn2YXZhtiwICVzJyxcbiAgICAgICAgICAgIHM6ICfYq9mI2KfZhicsXG4gICAgICAgICAgICBzczogJyVkINir2KfZhtmK2KknLFxuICAgICAgICAgICAgbTogJ9iv2YLZitmC2KknLFxuICAgICAgICAgICAgbW06ICclZCDYr9mC2KfYptmCJyxcbiAgICAgICAgICAgIGg6ICfYs9in2LnYqScsXG4gICAgICAgICAgICBoaDogJyVkINiz2KfYudin2KonLFxuICAgICAgICAgICAgZDogJ9mK2YjZhScsXG4gICAgICAgICAgICBkZDogJyVkINij2YrYp9mFJyxcbiAgICAgICAgICAgIE06ICfYtNmH2LEnLFxuICAgICAgICAgICAgTU06ICclZCDYo9i02YfYsScsXG4gICAgICAgICAgICB5OiAn2LPZhtipJyxcbiAgICAgICAgICAgIHl5OiAnJWQg2LPZhtmI2KfYqicsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1vZodmi2aPZpNml2abZp9mo2anZoF0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8sL2csICfYjCcpO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXJTYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgIDogIEFyYWJpYyAoVHVuaXNpYSkgW2FyLXRuXVxuLy8hIGF1dGhvciA6IE5hZGVyIFRvdWthYnJpIDogaHR0cHM6Ly9naXRodWIuY29tL25hZGVyaW9cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBhclRuID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYXItdG4nLCB7XG4gICAgICAgIG1vbnRoczogJ9is2KfZhtmB2Ypf2YHZitmB2LHZil/Zhdin2LHYs1/Yo9mB2LHZitmEX9mF2KfZil/YrNmI2KfZhl/YrNmI2YrZhNmK2Klf2KPZiNiqX9iz2KjYqtmF2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmB2YXYqNixX9iv2YrYs9mF2KjYsScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn2KzYp9mG2YHZil/ZgdmK2YHYsdmKX9mF2KfYsdizX9ij2YHYsdmK2YRf2YXYp9mKX9is2YjYp9mGX9is2YjZitmE2YrYqV/Yo9mI2Kpf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn2KPYrdivX9il2KvZhtmK2YZf2KvZhNin2KvYp9ihX9ij2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn2K1f2YZf2Ktf2LFf2K5f2Kxf2LMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9in2YTZitmI2YUg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vYutiv2Kcg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9ij2YXYsyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn2YHZiiAlcycsXG4gICAgICAgICAgICBwYXN0OiAn2YXZhtiwICVzJyxcbiAgICAgICAgICAgIHM6ICfYq9mI2KfZhicsXG4gICAgICAgICAgICBzczogJyVkINir2KfZhtmK2KknLFxuICAgICAgICAgICAgbTogJ9iv2YLZitmC2KknLFxuICAgICAgICAgICAgbW06ICclZCDYr9mC2KfYptmCJyxcbiAgICAgICAgICAgIGg6ICfYs9in2LnYqScsXG4gICAgICAgICAgICBoaDogJyVkINiz2KfYudin2KonLFxuICAgICAgICAgICAgZDogJ9mK2YjZhScsXG4gICAgICAgICAgICBkZDogJyVkINij2YrYp9mFJyxcbiAgICAgICAgICAgIE06ICfYtNmH2LEnLFxuICAgICAgICAgICAgTU06ICclZCDYo9i02YfYsScsXG4gICAgICAgICAgICB5OiAn2LPZhtipJyxcbiAgICAgICAgICAgIHl5OiAnJWQg2LPZhtmI2KfYqicsXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBhclRuO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEFyYWJpYyBbYXJdXG4vLyEgYXV0aG9yIDogQWJkZWwgU2FpZDogaHR0cHM6Ly9naXRodWIuY29tL2FiZGVsc2FpZFxuLy8hIGF1dGhvciA6IEFobWVkIEVsa2hhdGliXG4vLyEgYXV0aG9yIDogZm9yYWJpIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3JhYmlcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICAgICAxOiAn2aEnLFxuICAgICAgICAgICAgMjogJ9miJyxcbiAgICAgICAgICAgIDM6ICfZoycsXG4gICAgICAgICAgICA0OiAn2aQnLFxuICAgICAgICAgICAgNTogJ9mlJyxcbiAgICAgICAgICAgIDY6ICfZpicsXG4gICAgICAgICAgICA3OiAn2acnLFxuICAgICAgICAgICAgODogJ9moJyxcbiAgICAgICAgICAgIDk6ICfZqScsXG4gICAgICAgICAgICAwOiAn2aAnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn2aEnOiAnMScsXG4gICAgICAgICAgICAn2aInOiAnMicsXG4gICAgICAgICAgICAn2aMnOiAnMycsXG4gICAgICAgICAgICAn2aQnOiAnNCcsXG4gICAgICAgICAgICAn2aUnOiAnNScsXG4gICAgICAgICAgICAn2aYnOiAnNicsXG4gICAgICAgICAgICAn2acnOiAnNycsXG4gICAgICAgICAgICAn2agnOiAnOCcsXG4gICAgICAgICAgICAn2aknOiAnOScsXG4gICAgICAgICAgICAn2aAnOiAnMCcsXG4gICAgICAgIH0sXG4gICAgICAgIHBsdXJhbEZvcm0gPSBmdW5jdGlvbiAobikge1xuICAgICAgICAgICAgcmV0dXJuIG4gPT09IDBcbiAgICAgICAgICAgICAgICA/IDBcbiAgICAgICAgICAgICAgICA6IG4gPT09IDFcbiAgICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgICA6IG4gPT09IDJcbiAgICAgICAgICAgICAgICA/IDJcbiAgICAgICAgICAgICAgICA6IG4gJSAxMDAgPj0gMyAmJiBuICUgMTAwIDw9IDEwXG4gICAgICAgICAgICAgICAgPyAzXG4gICAgICAgICAgICAgICAgOiBuICUgMTAwID49IDExXG4gICAgICAgICAgICAgICAgPyA0XG4gICAgICAgICAgICAgICAgOiA1O1xuICAgICAgICB9LFxuICAgICAgICBwbHVyYWxzID0ge1xuICAgICAgICAgICAgczogW1xuICAgICAgICAgICAgICAgICfYo9mC2YQg2YXZhiDYq9in2YbZitipJyxcbiAgICAgICAgICAgICAgICAn2KvYp9mG2YrYqSDZiNin2K3Yr9ipJyxcbiAgICAgICAgICAgICAgICBbJ9ir2KfZhtmK2KrYp9mGJywgJ9ir2KfZhtmK2KrZitmGJ10sXG4gICAgICAgICAgICAgICAgJyVkINir2YjYp9mGJyxcbiAgICAgICAgICAgICAgICAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICAgICAgJyVkINir2KfZhtmK2KknLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIG06IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICAgICAgJ9iv2YLZitmC2Kkg2YjYp9it2K/YqScsXG4gICAgICAgICAgICAgICAgWyfYr9mC2YrZgtiq2KfZhicsICfYr9mC2YrZgtiq2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYr9mC2KfYptmCJyxcbiAgICAgICAgICAgICAgICAnJWQg2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICAgICAgJyVkINiv2YLZitmC2KknLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGg6IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2LPYp9i52KknLFxuICAgICAgICAgICAgICAgICfYs9in2LnYqSDZiNin2K3Yr9ipJyxcbiAgICAgICAgICAgICAgICBbJ9iz2KfYudiq2KfZhicsICfYs9in2LnYqtmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2LPYp9i52KfYqicsXG4gICAgICAgICAgICAgICAgJyVkINiz2KfYudipJyxcbiAgICAgICAgICAgICAgICAnJWQg2LPYp9i52KknLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGQ6IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2YrZiNmFJyxcbiAgICAgICAgICAgICAgICAn2YrZiNmFINmI2KfYrdivJyxcbiAgICAgICAgICAgICAgICBbJ9mK2YjZhdin2YYnLCAn2YrZiNmF2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYo9mK2KfZhScsXG4gICAgICAgICAgICAgICAgJyVkINmK2YjZhdmL2KcnLFxuICAgICAgICAgICAgICAgICclZCDZitmI2YUnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIE06IFtcbiAgICAgICAgICAgICAgICAn2KPZgtmEINmF2YYg2LTZh9ixJyxcbiAgICAgICAgICAgICAgICAn2LTZh9ixINmI2KfYrdivJyxcbiAgICAgICAgICAgICAgICBbJ9i02YfYsdin2YYnLCAn2LTZh9ix2YrZhiddLFxuICAgICAgICAgICAgICAgICclZCDYo9i02YfYsScsXG4gICAgICAgICAgICAgICAgJyVkINi02YfYsdinJyxcbiAgICAgICAgICAgICAgICAnJWQg2LTZh9ixJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB5OiBbXG4gICAgICAgICAgICAgICAgJ9ij2YLZhCDZhdmGINi52KfZhScsXG4gICAgICAgICAgICAgICAgJ9i52KfZhSDZiNin2K3YrycsXG4gICAgICAgICAgICAgICAgWyfYudin2YXYp9mGJywgJ9i52KfZhdmK2YYnXSxcbiAgICAgICAgICAgICAgICAnJWQg2KPYudmI2KfZhScsXG4gICAgICAgICAgICAgICAgJyVkINi52KfZhdmL2KcnLFxuICAgICAgICAgICAgICAgICclZCDYudin2YUnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgcGx1cmFsaXplID0gZnVuY3Rpb24gKHUpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGYgPSBwbHVyYWxGb3JtKG51bWJlciksXG4gICAgICAgICAgICAgICAgICAgIHN0ciA9IHBsdXJhbHNbdV1bcGx1cmFsRm9ybShudW1iZXIpXTtcbiAgICAgICAgICAgICAgICBpZiAoZiA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICBzdHIgPSBzdHJbd2l0aG91dFN1ZmZpeCA/IDAgOiAxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8lZC9pLCBudW1iZXIpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzID0gW1xuICAgICAgICAgICAgJ9mK2YbYp9mK2LEnLFxuICAgICAgICAgICAgJ9mB2KjYsdin2YrYsScsXG4gICAgICAgICAgICAn2YXYp9ix2LMnLFxuICAgICAgICAgICAgJ9ij2KjYsdmK2YQnLFxuICAgICAgICAgICAgJ9mF2KfZitmIJyxcbiAgICAgICAgICAgICfZitmI2YbZitmIJyxcbiAgICAgICAgICAgICfZitmI2YTZitmIJyxcbiAgICAgICAgICAgICfYo9i62LPYt9izJyxcbiAgICAgICAgICAgICfYs9io2KrZhdio2LEnLFxuICAgICAgICAgICAgJ9ij2YPYqtmI2KjYsScsXG4gICAgICAgICAgICAn2YbZiNmB2YXYqNixJyxcbiAgICAgICAgICAgICfYr9mK2LPZhdio2LEnLFxuICAgICAgICBdO1xuXG4gICAgdmFyIGFyID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYXInLCB7XG4gICAgICAgIG1vbnRoczogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydDogbW9udGhzLFxuICAgICAgICB3ZWVrZGF5czogJ9in2YTYo9it2K9f2KfZhNil2KvZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9ij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9itX9mGX9irX9ixX9iuX9isX9izJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdEL1xcdTIwMEZNL1xcdTIwMEZZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv2LV82YUvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAn2YUnID09PSBpbnB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9i1JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfZhSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9in2YTZitmI2YUg2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vYutiv2YvYpyDYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9i52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2KPZhdizINi52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfYqNi52K8gJXMnLFxuICAgICAgICAgICAgcGFzdDogJ9mF2YbYsCAlcycsXG4gICAgICAgICAgICBzOiBwbHVyYWxpemUoJ3MnKSxcbiAgICAgICAgICAgIHNzOiBwbHVyYWxpemUoJ3MnKSxcbiAgICAgICAgICAgIG06IHBsdXJhbGl6ZSgnbScpLFxuICAgICAgICAgICAgbW06IHBsdXJhbGl6ZSgnbScpLFxuICAgICAgICAgICAgaDogcGx1cmFsaXplKCdoJyksXG4gICAgICAgICAgICBoaDogcGx1cmFsaXplKCdoJyksXG4gICAgICAgICAgICBkOiBwbHVyYWxpemUoJ2QnKSxcbiAgICAgICAgICAgIGRkOiBwbHVyYWxpemUoJ2QnKSxcbiAgICAgICAgICAgIE06IHBsdXJhbGl6ZSgnTScpLFxuICAgICAgICAgICAgTU06IHBsdXJhbGl6ZSgnTScpLFxuICAgICAgICAgICAgeTogcGx1cmFsaXplKCd5JyksXG4gICAgICAgICAgICB5eTogcGx1cmFsaXplKCd5JyksXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1vZodmi2aPZpNml2abZp9mo2anZoF0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8sL2csICfYjCcpO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDYsIC8vIFNhdHVyZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDEyLCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxMnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFyO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEF6ZXJiYWlqYW5pIFthel1cbi8vISBhdXRob3IgOiB0b3BjaGl5ZXYgOiBodHRwczovL2dpdGh1Yi5jb20vdG9wY2hpeWV2XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3VmZml4ZXMgPSB7XG4gICAgICAgIDE6ICctaW5jaScsXG4gICAgICAgIDU6ICctaW5jaScsXG4gICAgICAgIDg6ICctaW5jaScsXG4gICAgICAgIDcwOiAnLWluY2knLFxuICAgICAgICA4MDogJy1pbmNpJyxcbiAgICAgICAgMjogJy1uY2knLFxuICAgICAgICA3OiAnLW5jaScsXG4gICAgICAgIDIwOiAnLW5jaScsXG4gICAgICAgIDUwOiAnLW5jaScsXG4gICAgICAgIDM6ICctw7xuY8O8JyxcbiAgICAgICAgNDogJy3DvG5jw7wnLFxuICAgICAgICAxMDA6ICctw7xuY8O8JyxcbiAgICAgICAgNjogJy1uY8SxJyxcbiAgICAgICAgOTogJy11bmN1JyxcbiAgICAgICAgMTA6ICctdW5jdScsXG4gICAgICAgIDMwOiAnLXVuY3UnLFxuICAgICAgICA2MDogJy3EsW5jxLEnLFxuICAgICAgICA5MDogJy3EsW5jxLEnLFxuICAgIH07XG5cbiAgICB2YXIgYXogPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdheicsIHtcbiAgICAgICAgbW9udGhzOiAneWFudmFyX2ZldnJhbF9tYXJ0X2FwcmVsX21heV9peXVuX2l5dWxfYXZxdXN0X3NlbnR5YWJyX29rdHlhYnJfbm95YWJyX2Rla2Ficicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICd5YW5fZmV2X21hcl9hcHJfbWF5X2l5bl9peWxfYXZxX3Nlbl9va3Rfbm95X2Rlaycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnQmF6YXJfQmF6YXIgZXJ0yZlzaV/Dh8mZcsWfyZluYsmZIGF4xZ9hbcSxX8OHyZlyxZ/JmW5iyZlfQ8O8bcmZIGF4xZ9hbcSxX0PDvG3JmV/FnsmZbmLJmScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnQmF6X0J6RV/Dh0F4X8OHyZlyX0NBeF9Dw7xtX8WeyZluJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ0J6X0JFX8OHQV/Dh8mZX0NBX0PDvF/FnsmZJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbYnVnw7xuIHNhYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbc2FiYWggc2FhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdbZ8mZbMmZbiBoyZlmdMmZXSBkZGRkIFtzYWF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2TDvG7JmW5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2tlw6fJmW4gaMmZZnTJmV0gZGRkZCBbc2FhdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyBzb25yYScsXG4gICAgICAgICAgICBwYXN0OiAnJXMgyZl2dsmZbCcsXG4gICAgICAgICAgICBzOiAnYmlyIG5lw6fJmSBzYW5pecmZJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2FuaXnJmScsXG4gICAgICAgICAgICBtOiAnYmlyIGTJmXFpccmZJyxcbiAgICAgICAgICAgIG1tOiAnJWQgZMmZcWlxyZknLFxuICAgICAgICAgICAgaDogJ2JpciBzYWF0JyxcbiAgICAgICAgICAgIGhoOiAnJWQgc2FhdCcsXG4gICAgICAgICAgICBkOiAnYmlyIGfDvG4nLFxuICAgICAgICAgICAgZGQ6ICclZCBnw7xuJyxcbiAgICAgICAgICAgIE06ICdiaXIgYXknLFxuICAgICAgICAgICAgTU06ICclZCBheScsXG4gICAgICAgICAgICB5OiAnYmlyIGlsJyxcbiAgICAgICAgICAgIHl5OiAnJWQgaWwnLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvZ2VjyZl8c8mZaMmZcnxnw7xuZMO8enxheMWfYW0vLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAvXihnw7xuZMO8enxheMWfYW0pJC8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2dlY8mZJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzyZloyZlyJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdnw7xuZMO8eic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnYXjFn2FtJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjEsW5jxLF8aW5jaXxuY2l8w7xuY8O8fG5jxLF8dW5jdSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICBpZiAobnVtYmVyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlIGZvciB6ZXJvXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICctxLFuY8SxJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBhID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgYiA9IChudW1iZXIgJSAxMDApIC0gYSxcbiAgICAgICAgICAgICAgICBjID0gbnVtYmVyID49IDEwMCA/IDEwMCA6IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHN1ZmZpeGVzW2FdIHx8IHN1ZmZpeGVzW2JdIHx8IHN1ZmZpeGVzW2NdKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGF6O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEJlbGFydXNpYW4gW2JlXVxuLy8hIGF1dGhvciA6IERtaXRyeSBEZW1pZG92IDogaHR0cHM6Ly9naXRodWIuY29tL2RlbWlkb3Y5MVxuLy8hIGF1dGhvcjogUHJhbGVza2E6IGh0dHA6Ly9wcmFsZXNrYS5wcm8vXG4vLyEgQXV0aG9yIDogTWVuZWxpb24gRWxlbnPDumxlIDogaHR0cHM6Ly9naXRodWIuY29tL09pcmVcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHBsdXJhbCh3b3JkLCBudW0pIHtcbiAgICAgICAgdmFyIGZvcm1zID0gd29yZC5zcGxpdCgnXycpO1xuICAgICAgICByZXR1cm4gbnVtICUgMTAgPT09IDEgJiYgbnVtICUgMTAwICE9PSAxMVxuICAgICAgICAgICAgPyBmb3Jtc1swXVxuICAgICAgICAgICAgOiBudW0gJSAxMCA+PSAyICYmIG51bSAlIDEwIDw9IDQgJiYgKG51bSAlIDEwMCA8IDEwIHx8IG51bSAlIDEwMCA+PSAyMClcbiAgICAgICAgICAgID8gZm9ybXNbMV1cbiAgICAgICAgICAgIDogZm9ybXNbMl07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZVdpdGhQbHVyYWwobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgIHNzOiB3aXRob3V0U3VmZml4ID8gJ9GB0LXQutGD0L3QtNCwX9GB0LXQutGD0L3QtNGLX9GB0LXQutGD0L3QtCcgOiAn0YHQtdC60YPQvdC00YNf0YHQtdC60YPQvdC00Ytf0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgIG1tOiB3aXRob3V0U3VmZml4ID8gJ9GF0LLRltC70ZbQvdCwX9GF0LLRltC70ZbQvdGLX9GF0LLRltC70ZbQvScgOiAn0YXQstGW0LvRltC90YNf0YXQstGW0LvRltC90Ytf0YXQstGW0LvRltC9JyxcbiAgICAgICAgICAgIGhoOiB3aXRob3V0U3VmZml4ID8gJ9Cz0LDQtNC30ZbQvdCwX9Cz0LDQtNC30ZbQvdGLX9Cz0LDQtNC30ZbQvScgOiAn0LPQsNC00LfRltC90YNf0LPQsNC00LfRltC90Ytf0LPQsNC00LfRltC9JyxcbiAgICAgICAgICAgIGRkOiAn0LTQt9C10L3RjF/QtNC90ZZf0LTQt9GR0L0nLFxuICAgICAgICAgICAgTU06ICfQvNC10YHRj9GGX9C80LXRgdGP0YbRi1/QvNC10YHRj9GG0LDRnicsXG4gICAgICAgICAgICB5eTogJ9Cz0L7QtF/Qs9Cw0LTRi1/Qs9Cw0LTQvtGeJyxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGtleSA9PT0gJ20nKSB7XG4gICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICfRhdCy0ZbQu9GW0L3QsCcgOiAn0YXQstGW0LvRltC90YMnO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2gnKSB7XG4gICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICfQs9Cw0LTQt9GW0L3QsCcgOiAn0LPQsNC00LfRltC90YMnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIHBsdXJhbChmb3JtYXRba2V5XSwgK251bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgYmUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdiZScsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICfRgdGC0YPQtNC30LXQvdGPX9C70Y7RgtCw0LPQsF/RgdCw0LrQsNCy0ZbQutCwX9C60YDQsNGB0LDQstGW0LrQsF/RgtGA0LDRntC90Y9f0YfRjdGA0LLQtdC90Y9f0LvRltC/0LXQvdGPX9C20L3RltGe0L3Rj1/QstC10YDQsNGB0L3Rj1/QutCw0YHRgtGA0YvRh9C90ZbQutCwX9C70ZbRgdGC0LDQv9Cw0LTQsF/RgdC90LXQttC90Y8nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6XG4gICAgICAgICAgICAgICAgJ9GB0YLRg9C00LfQtdC90Yxf0LvRjtGC0Ytf0YHQsNC60LDQstGW0Lpf0LrRgNCw0YHQsNCy0ZbQul/RgtGA0LDQstC10L3RjF/Rh9GN0YDQstC10L3RjF/Qu9GW0L/QtdC90Yxf0LbQvdGW0LLQtdC90Yxf0LLQtdGA0LDRgdC10L3RjF/QutCw0YHRgtGA0YvRh9C90ZbQul/Qu9GW0YHRgtCw0L/QsNC0X9GB0L3QtdC20LDQvdGMJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn0YHRgtGD0LRf0LvRjtGCX9GB0LDQul/QutGA0LDRgV/RgtGA0LDQsl/Rh9GN0YDQsl/Qu9GW0L9f0LbQvdGW0LJf0LLQtdGAX9C60LDRgdGCX9C70ZbRgdGCX9GB0L3QtdC2Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czoge1xuICAgICAgICAgICAgZm9ybWF0OiAn0L3Rj9C00LfQtdC70Y5f0L/QsNC90Y/QtNC30LXQu9Cw0Lpf0LDRntGC0L7RgNCw0Lpf0YHQtdGA0LDQtNGDX9GH0LDRhtCy0LXRgF/Qv9GP0YLQvdGW0YbRg1/RgdGD0LHQvtGC0YMnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6XG4gICAgICAgICAgICAgICAgJ9C90Y/QtNC30LXQu9GPX9C/0LDQvdGP0LTQt9C10LvQsNC6X9Cw0Z7RgtC+0YDQsNC6X9GB0LXRgNCw0LTQsF/Rh9Cw0YbQstC10YBf0L/Rj9GC0L3RltGG0LBf0YHRg9Cx0L7RgtCwJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGlzRm9ybWF0OiAvXFxbID9b0KPRg9GeXSA/KD860LzRltC90YPQu9GD0Y580L3QsNGB0YLRg9C/0L3Rg9GOKT8gP1xcXSA/ZGRkZC8sXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfQvdC0X9C/0L1f0LDRgl/RgdGAX9GH0YZf0L/Rgl/RgdCxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9C90LRf0L/QvV/QsNGCX9GB0YBf0YfRhl/Qv9GCX9GB0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVkg0LMuJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZINCzLiwgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZINCzLiwgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQodGR0L3QvdGPINGeXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9CX0LDRntGC0YDQsCDRnl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vQo9GH0L7RgNCwINGeXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW9CjXSBkZGRkIFvRnl0gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CjINC80ZbQvdGD0LvRg9GOXSBkZGRkIFvRnl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0KMg0LzRltC90YPQu9GLXSBkZGRkIFvRnl0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9C/0YDQsNC3ICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDRgtCw0LzRgycsXG4gICAgICAgICAgICBzOiAn0L3QtdC60LDQu9GM0LrRliDRgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgbTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIG1tOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgaDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGhoOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgZDogJ9C00LfQtdC90YwnLFxuICAgICAgICAgICAgZGQ6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBNOiAn0LzQtdGB0Y/RhicsXG4gICAgICAgICAgICBNTTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIHk6ICfQs9C+0LQnLFxuICAgICAgICAgICAgeXk6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/QvdC+0YfRi3zRgNCw0L3RltGG0Yt80LTQvdGPfNCy0LXRh9Cw0YDQsC8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9eKNC00L3Rj3zQstC10YfQsNGA0LApJC8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9C90L7Rh9GLJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfRgNCw0L3RltGG0YsnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9C00L3Rjyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0LLQtdGH0LDRgNCwJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjRlnzRi3zQs9CwKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG51bWJlciAlIDEwID09PSAyIHx8IG51bWJlciAlIDEwID09PSAzKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyICUgMTAwICE9PSAxMiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyICUgMTAwICE9PSAxM1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBudW1iZXIgKyAnLdGWJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBudW1iZXIgKyAnLdGLJztcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LPQsCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJlO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEJ1bGdhcmlhbiBbYmddXG4vLyEgYXV0aG9yIDogS3Jhc2VuIEJvcmlzb3YgOiBodHRwczovL2dpdGh1Yi5jb20va3JhelxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGJnID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYmcnLCB7XG4gICAgICAgIG1vbnRoczogJ9GP0L3Rg9Cw0YDQuF/RhNC10LLRgNGD0LDRgNC4X9C80LDRgNGCX9Cw0L/RgNC40Ltf0LzQsNC5X9GO0L3QuF/RjtC70Lhf0LDQstCz0YPRgdGCX9GB0LXQv9GC0LXQvNCy0YDQuF/QvtC60YLQvtC80LLRgNC4X9C90L7QtdC80LLRgNC4X9C00LXQutC10LzQstGA0LgnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn0Y/QvdGDX9GE0LXQsl/QvNCw0YBf0LDQv9GAX9C80LDQuV/RjtC90Lhf0Y7Qu9C4X9Cw0LLQs1/RgdC10L9f0L7QutGCX9C90L7QtV/QtNC10LonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAn0L3QtdC00LXQu9GPX9C/0L7QvdC10LTQtdC70L3QuNC6X9Cy0YLQvtGA0L3QuNC6X9GB0YDRj9C00LBf0YfQtdGC0LLRitGA0YLRitC6X9C/0LXRgtGK0Lpf0YHRitCx0L7RgtCwJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn0L3QtdC0X9C/0L7QvV/QstGC0L5f0YHRgNGPX9GH0LXRgl/Qv9C10YJf0YHRitCxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9C90LRf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnRC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9CU0L3QtdGBINCyXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9Cj0YLRgNC1INCyXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9CyXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9CS0YfQtdGA0LAg0LJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQnNC40L3QsNC70LDRgtCwXSBkZGRkIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQnNC40L3QsNC70LjRj10gZGRkZCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfRgdC70LXQtCAlcycsXG4gICAgICAgICAgICBwYXN0OiAn0L/RgNC10LTQuCAlcycsXG4gICAgICAgICAgICBzOiAn0L3Rj9C60L7Qu9C60L4g0YHQtdC60YPQvdC00LgnLFxuICAgICAgICAgICAgc3M6ICclZCDRgdC10LrRg9C90LTQuCcsXG4gICAgICAgICAgICBtOiAn0LzQuNC90YPRgtCwJyxcbiAgICAgICAgICAgIG1tOiAnJWQg0LzQuNC90YPRgtC4JyxcbiAgICAgICAgICAgIGg6ICfRh9Cw0YEnLFxuICAgICAgICAgICAgaGg6ICclZCDRh9Cw0YHQsCcsXG4gICAgICAgICAgICBkOiAn0LTQtdC9JyxcbiAgICAgICAgICAgIGRkOiAnJWQg0LTQtdC90LAnLFxuICAgICAgICAgICAgdzogJ9GB0LXQtNC80LjRhtCwJyxcbiAgICAgICAgICAgIHd3OiAnJWQg0YHQtdC00LzQuNGG0LgnLFxuICAgICAgICAgICAgTTogJ9C80LXRgdC10YYnLFxuICAgICAgICAgICAgTU06ICclZCDQvNC10YHQtdGG0LAnLFxuICAgICAgICAgICAgeTogJ9Cz0L7QtNC40L3QsCcsXG4gICAgICAgICAgICB5eTogJyVkINCz0L7QtNC40L3QuCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS0o0LXQsnzQtdC9fNGC0Lh80LLQuHzRgNC4fNC80LgpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGxhc3REaWdpdCA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIGxhc3QyRGlnaXRzID0gbnVtYmVyICUgMTAwO1xuICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdC10LInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0MkRpZ2l0cyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdC10L0nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0MkRpZ2l0cyA+IDEwICYmIGxhc3QyRGlnaXRzIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3RgtC4JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdERpZ2l0ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LLQuCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3REaWdpdCA9PT0gMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdGA0LgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0RGlnaXQgPT09IDcgfHwgbGFzdERpZ2l0ID09PSA4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LzQuCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdGC0LgnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYmc7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQmFtYmFyYSBbYm1dXG4vLyEgYXV0aG9yIDogRXN0ZWxsZSBDb21tZW50IDogaHR0cHM6Ly9naXRodWIuY29tL2VzdGVsbGVjb21tZW50XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgYm0gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdibScsIHtcbiAgICAgICAgbW9udGhzOiAnWmFud3V5ZWthbG9fRmV3dXJ1eWVrYWxvX01hcmlzaWthbG9fQXdpcmlsaWthbG9fTcmba2Fsb19adXfJm25rYWxvX1p1bHV5ZWthbG9fVXRpa2Fsb19TyZt0YW5idXJ1a2Fsb1/JlGt1dMmUYnVydWthbG9fTm93YW5idXJ1a2Fsb19EZXNhbmJ1cnVrYWxvJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ1phbl9GZXdfTWFyX0F3aV9NyZtfWnV3X1p1bF9VdGlfU8mbdF/JlGt1X05vd19EZXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnS2FyaV9OdMmbbsmbbl9UYXJhdGFfQXJhYmFfQWxhbWlzYV9KdW1hX1NpYmlyaScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ0thcl9OdMmbX1Rhcl9BcmFfQWxhX0p1bV9TaWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnS2FfTnRfVGFfQXJfQWxfSnVfU2knLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnTU1NTSBbdGlsZV0gRCBbc2FuXSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ01NTU0gW3RpbGVdIEQgW3Nhbl0gWVlZWSBbbMmbcsmbXSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBNTU1NIFt0aWxlXSBEIFtzYW5dIFlZWVkgW2zJm3LJm10gSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tCaSBsyZtyyZtdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbU2luaSBsyZtyyZtdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbZG9uIGzJm3LJm10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tLdW51IGzJm3LJm10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFt0yZttyZtuZW4gbMmbcsmbXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIGvJlG7JlCcsXG4gICAgICAgICAgICBwYXN0OiAnYSBiyZsgJXMgYsmUJyxcbiAgICAgICAgICAgIHM6ICdzYW5nYSBkYW1hIGRhbWEnLFxuICAgICAgICAgICAgc3M6ICdzZWtvbmRpICVkJyxcbiAgICAgICAgICAgIG06ICdtaW5pdGkga2VsZW4nLFxuICAgICAgICAgICAgbW06ICdtaW5pdGkgJWQnLFxuICAgICAgICAgICAgaDogJ2zJm3LJmyBrZWxlbicsXG4gICAgICAgICAgICBoaDogJ2zJm3LJmyAlZCcsXG4gICAgICAgICAgICBkOiAndGlsZSBrZWxlbicsXG4gICAgICAgICAgICBkZDogJ3RpbGUgJWQnLFxuICAgICAgICAgICAgTTogJ2thbG8ga2VsZW4nLFxuICAgICAgICAgICAgTU06ICdrYWxvICVkJyxcbiAgICAgICAgICAgIHk6ICdzYW4ga2VsZW4nLFxuICAgICAgICAgICAgeXk6ICdzYW4gJWQnLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYm07XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQmVuZ2FsaSAoQmFuZ2xhZGVzaCkgW2JuLWJkXVxuLy8hIGF1dGhvciA6IEFzcmFmIEhvc3NhaW4gUGF0b2FyeSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hc2h3b29sZm9yZFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICfgp6cnLFxuICAgICAgICAgICAgMjogJ+CnqCcsXG4gICAgICAgICAgICAzOiAn4KepJyxcbiAgICAgICAgICAgIDQ6ICfgp6onLFxuICAgICAgICAgICAgNTogJ+CnqycsXG4gICAgICAgICAgICA2OiAn4KesJyxcbiAgICAgICAgICAgIDc6ICfgp60nLFxuICAgICAgICAgICAgODogJ+CnricsXG4gICAgICAgICAgICA5OiAn4KevJyxcbiAgICAgICAgICAgIDA6ICfgp6YnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn4KenJzogJzEnLFxuICAgICAgICAgICAgJ+CnqCc6ICcyJyxcbiAgICAgICAgICAgICfgp6knOiAnMycsXG4gICAgICAgICAgICAn4KeqJzogJzQnLFxuICAgICAgICAgICAgJ+Cnqyc6ICc1JyxcbiAgICAgICAgICAgICfgp6wnOiAnNicsXG4gICAgICAgICAgICAn4KetJzogJzcnLFxuICAgICAgICAgICAgJ+Cnric6ICc4JyxcbiAgICAgICAgICAgICfgp68nOiAnOScsXG4gICAgICAgICAgICAn4KemJzogJzAnLFxuICAgICAgICB9O1xuXG4gICAgdmFyIGJuQmQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdibi1iZCcsIHtcbiAgICAgICAgbW9udGhzOiAn4Kac4Ka+4Kao4KeB4Kef4Ka+4Kaw4Ka/X+Cmq+Cnh+CmrOCnjeCmsOCngeCnn+CmvuCmsOCmv1/gpq7gpr7gprDgp43gpppf4KaP4Kaq4KeN4Kaw4Ka/4KayX+CmruCnh1/gppzgp4Hgpqhf4Kac4KeB4Kay4Ka+4KaHX+CmhuCml+CmuOCnjeCmn1/gprjgp4fgpqrgp43gpp/gp4fgpq7gp43gpqzgprBf4KaF4KaV4KeN4Kaf4KeL4Kas4KawX+CmqOCmreCnh+CmruCnjeCmrOCmsF/gpqHgpr/gprjgp4fgpq7gp43gpqzgprAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+CmnOCmvuCmqOCngV/gpqvgp4fgpqzgp43gprDgp4Ff4Kau4Ka+4Kaw4KeN4KaaX+Cmj+CmquCnjeCmsOCmv+Cmsl/gpq7gp4df4Kac4KeB4KaoX+CmnOCngeCmsuCmvuCmh1/gpobgppfgprjgp43gpp9f4Ka44KeH4Kaq4KeN4KafX+CmheCmleCnjeCmn+Cni1/gpqjgpq3gp4df4Kah4Ka/4Ka44KeHJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn4Kaw4Kas4Ka/4Kas4Ka+4KawX+CmuOCni+CmruCmrOCmvuCmsF/gpq7gppngp43gppfgprLgpqzgpr7gprBf4Kas4KeB4Kan4Kas4Ka+4KawX+CmrOCng+CmueCmuOCnjeCmquCmpOCmv+CmrOCmvuCmsF/gprbgp4HgppXgp43gprDgpqzgpr7gprBf4Ka24Kao4Ka/4Kas4Ka+4KawJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4Kaw4Kas4Ka/X+CmuOCni+Cmrl/gpq7gppngp43gppfgprJf4Kas4KeB4KanX+CmrOCng+CmueCmuOCnjeCmquCmpOCmv1/gprbgp4HgppXgp43gprBf4Ka24Kao4Ka/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+CmsOCmrOCmv1/gprjgp4vgpq5f4Kau4KaZ4KeN4KaX4KayX+CmrOCngeCmp1/gpqzgp4Pgprlf4Ka24KeB4KaV4KeN4KawX+CmtuCmqOCmvycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnQSBoOm1tIOCmuOCmruCnnycsXG4gICAgICAgICAgICBMVFM6ICdBIGg6bW06c3Mg4Ka44Kau4KefJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVksIEEgaDptbSDgprjgpq7gp58nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0g4Ka44Kau4KefJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4KaG4KacXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+CmhuCml+CmvuCmruCngOCmleCmvuCmsl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+Cml+CmpOCmleCmvuCmsl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4KaX4KakXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIOCmquCmsOCnhycsXG4gICAgICAgICAgICBwYXN0OiAnJXMg4KaG4KaX4KeHJyxcbiAgICAgICAgICAgIHM6ICfgppXgp5/gp4fgppUg4Ka44KeH4KaV4KeH4Kao4KeN4KahJyxcbiAgICAgICAgICAgIHNzOiAnJWQg4Ka44KeH4KaV4KeH4Kao4KeN4KahJyxcbiAgICAgICAgICAgIG06ICfgpo/gppUg4Kau4Ka/4Kao4Ka/4KafJyxcbiAgICAgICAgICAgIG1tOiAnJWQg4Kau4Ka/4Kao4Ka/4KafJyxcbiAgICAgICAgICAgIGg6ICfgpo/gppUg4KaY4Kao4KeN4Kaf4Ka+JyxcbiAgICAgICAgICAgIGhoOiAnJWQg4KaY4Kao4KeN4Kaf4Ka+JyxcbiAgICAgICAgICAgIGQ6ICfgpo/gppUg4Kam4Ka/4KaoJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4Kam4Ka/4KaoJyxcbiAgICAgICAgICAgIE06ICfgpo/gppUg4Kau4Ka+4Ka4JyxcbiAgICAgICAgICAgIE1NOiAnJWQg4Kau4Ka+4Ka4JyxcbiAgICAgICAgICAgIHk6ICfgpo/gppUg4Kas4Kab4KawJyxcbiAgICAgICAgICAgIHl5OiAnJWQg4Kas4Kab4KawJyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Cnp+CnqOCnqeCnquCnq+CnrOCnreCnruCnr+Cnpl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4Kaw4Ka+4KakfOCmreCni+CmsHzgprjgppXgpr7gprJ84Kam4KeB4Kaq4KeB4KawfOCmrOCmv+CmleCmvuCmsnzgprjgpqjgp43gpqfgp43gpq/gpr584Kaw4Ka+4KakLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4Kaw4Ka+4KakJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Kat4KeL4KawJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CmuOCmleCmvuCmsicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpqbgp4Hgpqrgp4HgprAnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMyA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Kas4Ka/4KaV4Ka+4KayJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Ka44Kao4KeN4Kan4KeN4Kav4Ka+Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kaw4Ka+4KakJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CmreCni+CmsCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Ka44KaV4Ka+4KayJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE1KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpqbgp4Hgpqrgp4HgprAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CmrOCmv+CmleCmvuCmsic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Ka44Kao4KeN4Kan4KeN4Kav4Ka+JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgprDgpr7gpqQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYm5CZDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBCZW5nYWxpIFtibl1cbi8vISBhdXRob3IgOiBLYXVzaGlrIEdhbmRoaSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9rYXVzaGlrZ2FuZGhpXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgMTogJ+CnpycsXG4gICAgICAgICAgICAyOiAn4KeoJyxcbiAgICAgICAgICAgIDM6ICfgp6knLFxuICAgICAgICAgICAgNDogJ+CnqicsXG4gICAgICAgICAgICA1OiAn4KerJyxcbiAgICAgICAgICAgIDY6ICfgp6wnLFxuICAgICAgICAgICAgNzogJ+CnrScsXG4gICAgICAgICAgICA4OiAn4KeuJyxcbiAgICAgICAgICAgIDk6ICfgp68nLFxuICAgICAgICAgICAgMDogJ+CnpicsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfgp6cnOiAnMScsXG4gICAgICAgICAgICAn4KeoJzogJzInLFxuICAgICAgICAgICAgJ+CnqSc6ICczJyxcbiAgICAgICAgICAgICfgp6onOiAnNCcsXG4gICAgICAgICAgICAn4KerJzogJzUnLFxuICAgICAgICAgICAgJ+CnrCc6ICc2JyxcbiAgICAgICAgICAgICfgp60nOiAnNycsXG4gICAgICAgICAgICAn4KeuJzogJzgnLFxuICAgICAgICAgICAgJ+Cnryc6ICc5JyxcbiAgICAgICAgICAgICfgp6YnOiAnMCcsXG4gICAgICAgIH07XG5cbiAgICB2YXIgYm4gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdibicsIHtcbiAgICAgICAgbW9udGhzOiAn4Kac4Ka+4Kao4KeB4Kef4Ka+4Kaw4Ka/X+Cmq+Cnh+CmrOCnjeCmsOCngeCnn+CmvuCmsOCmv1/gpq7gpr7gprDgp43gpppf4KaP4Kaq4KeN4Kaw4Ka/4KayX+CmruCnh1/gppzgp4Hgpqhf4Kac4KeB4Kay4Ka+4KaHX+CmhuCml+CmuOCnjeCmn1/gprjgp4fgpqrgp43gpp/gp4fgpq7gp43gpqzgprBf4KaF4KaV4KeN4Kaf4KeL4Kas4KawX+CmqOCmreCnh+CmruCnjeCmrOCmsF/gpqHgpr/gprjgp4fgpq7gp43gpqzgprAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+CmnOCmvuCmqOCngV/gpqvgp4fgpqzgp43gprDgp4Ff4Kau4Ka+4Kaw4KeN4KaaX+Cmj+CmquCnjeCmsOCmv+Cmsl/gpq7gp4df4Kac4KeB4KaoX+CmnOCngeCmsuCmvuCmh1/gpobgppfgprjgp43gpp9f4Ka44KeH4Kaq4KeN4KafX+CmheCmleCnjeCmn+Cni1/gpqjgpq3gp4df4Kah4Ka/4Ka44KeHJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn4Kaw4Kas4Ka/4Kas4Ka+4KawX+CmuOCni+CmruCmrOCmvuCmsF/gpq7gppngp43gppfgprLgpqzgpr7gprBf4Kas4KeB4Kan4Kas4Ka+4KawX+CmrOCng+CmueCmuOCnjeCmquCmpOCmv+CmrOCmvuCmsF/gprbgp4HgppXgp43gprDgpqzgpr7gprBf4Ka24Kao4Ka/4Kas4Ka+4KawJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4Kaw4Kas4Ka/X+CmuOCni+Cmrl/gpq7gppngp43gppfgprJf4Kas4KeB4KanX+CmrOCng+CmueCmuOCnjeCmquCmpOCmv1/gprbgp4HgppXgp43gprBf4Ka24Kao4Ka/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+CmsOCmrOCmv1/gprjgp4vgpq5f4Kau4KaZ4KeN4KaX4KayX+CmrOCngeCmp1/gpqzgp4Pgprlf4Ka24KeB4KaV4KeN4KawX+CmtuCmqOCmvycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnQSBoOm1tIOCmuOCmruCnnycsXG4gICAgICAgICAgICBMVFM6ICdBIGg6bW06c3Mg4Ka44Kau4KefJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVksIEEgaDptbSDgprjgpq7gp58nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0g4Ka44Kau4KefJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4KaG4KacXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+CmhuCml+CmvuCmruCngOCmleCmvuCmsl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+Cml+CmpOCmleCmvuCmsl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4KaX4KakXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIOCmquCmsOCnhycsXG4gICAgICAgICAgICBwYXN0OiAnJXMg4KaG4KaX4KeHJyxcbiAgICAgICAgICAgIHM6ICfgppXgp5/gp4fgppUg4Ka44KeH4KaV4KeH4Kao4KeN4KahJyxcbiAgICAgICAgICAgIHNzOiAnJWQg4Ka44KeH4KaV4KeH4Kao4KeN4KahJyxcbiAgICAgICAgICAgIG06ICfgpo/gppUg4Kau4Ka/4Kao4Ka/4KafJyxcbiAgICAgICAgICAgIG1tOiAnJWQg4Kau4Ka/4Kao4Ka/4KafJyxcbiAgICAgICAgICAgIGg6ICfgpo/gppUg4KaY4Kao4KeN4Kaf4Ka+JyxcbiAgICAgICAgICAgIGhoOiAnJWQg4KaY4Kao4KeN4Kaf4Ka+JyxcbiAgICAgICAgICAgIGQ6ICfgpo/gppUg4Kam4Ka/4KaoJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4Kam4Ka/4KaoJyxcbiAgICAgICAgICAgIE06ICfgpo/gppUg4Kau4Ka+4Ka4JyxcbiAgICAgICAgICAgIE1NOiAnJWQg4Kau4Ka+4Ka4JyxcbiAgICAgICAgICAgIHk6ICfgpo/gppUg4Kas4Kab4KawJyxcbiAgICAgICAgICAgIHl5OiAnJWQg4Kas4Kab4KawJyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Cnp+CnqOCnqeCnquCnq+CnrOCnreCnruCnr+Cnpl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+CmsOCmvuCmpHzgprjgppXgpr7gprJ84Kam4KeB4Kaq4KeB4KawfOCmrOCmv+CmleCmvuCmsnzgprDgpr7gpqQvLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgKG1lcmlkaWVtID09PSAn4Kaw4Ka+4KakJyAmJiBob3VyID49IDQpIHx8XG4gICAgICAgICAgICAgICAgKG1lcmlkaWVtID09PSAn4Kam4KeB4Kaq4KeB4KawJyAmJiBob3VyIDwgNSkgfHxcbiAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ+CmrOCmv+CmleCmvuCmsidcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgprDgpr7gpqQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CmuOCmleCmvuCmsic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kam4KeB4Kaq4KeB4KawJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpqzgpr/gppXgpr7gprInO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CmsOCmvuCmpCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBibjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBUaWJldGFuIFtib11cbi8vISBhdXRob3IgOiBUaHVwdGVuIE4uIENoYWtyaXNoYXIgOiBodHRwczovL2dpdGh1Yi5jb20vdmFqcmFkb2dcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICAgICAxOiAn4LyhJyxcbiAgICAgICAgICAgIDI6ICfgvKInLFxuICAgICAgICAgICAgMzogJ+C8oycsXG4gICAgICAgICAgICA0OiAn4LykJyxcbiAgICAgICAgICAgIDU6ICfgvKUnLFxuICAgICAgICAgICAgNjogJ+C8picsXG4gICAgICAgICAgICA3OiAn4LynJyxcbiAgICAgICAgICAgIDg6ICfgvKgnLFxuICAgICAgICAgICAgOTogJ+C8qScsXG4gICAgICAgICAgICAwOiAn4LygJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ+C8oSc6ICcxJyxcbiAgICAgICAgICAgICfgvKInOiAnMicsXG4gICAgICAgICAgICAn4LyjJzogJzMnLFxuICAgICAgICAgICAgJ+C8pCc6ICc0JyxcbiAgICAgICAgICAgICfgvKUnOiAnNScsXG4gICAgICAgICAgICAn4LymJzogJzYnLFxuICAgICAgICAgICAgJ+C8pyc6ICc3JyxcbiAgICAgICAgICAgICfgvKgnOiAnOCcsXG4gICAgICAgICAgICAn4LypJzogJzknLFxuICAgICAgICAgICAgJ+C8oCc6ICcwJyxcbiAgICAgICAgfTtcblxuICAgIHZhciBibyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2JvJywge1xuICAgICAgICBtb250aHM6ICfgvZ/gvrPgvIvgvZbgvIvgvZHgvYTgvIvgvZTgvbxf4L2f4L6z4LyL4L2W4LyL4L2C4L2J4L2y4L2m4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9guC9puC9tOC9mOC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvZ7gvbLgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2j4L6U4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9keC+suC9tOC9guC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvZHgvbTgvZPgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2i4L6S4L6x4L2R4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9keC9guC9tOC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvYXgvbTgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2F4L204LyL4L2C4L2F4L2y4L2C4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9heC9tOC8i+C9guC9ieC9suC9puC8i+C9lCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn4L2f4L6z4LyLMV/gvZ/gvrPgvIsyX+C9n+C+s+C8izNf4L2f4L6z4LyLNF/gvZ/gvrPgvIs1X+C9n+C+s+C8izZf4L2f4L6z4LyLN1/gvZ/gvrPgvIs4X+C9n+C+s+C8izlf4L2f4L6z4LyLMTBf4L2f4L6z4LyLMTFf4L2f4L6z4LyLMTInLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnRSZWdleDogL14o4L2f4L6z4LyLXFxkezEsMn0pLyxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAn4L2C4L2f4L2g4LyL4L2J4L2y4LyL4L2Y4LyLX+C9guC9n+C9oOC8i+C9n+C+s+C8i+C9luC8i1/gvYLgvZ/gvaDgvIvgvZjgvbLgvYLgvIvgvZHgvZjgvaLgvItf4L2C4L2f4L2g4LyL4L2j4L634L2C4LyL4L2U4LyLX+C9guC9n+C9oOC8i+C9leC9tOC9ouC8i+C9luC9tF/gvYLgvZ/gvaDgvIvgvZTgvIvgvabgvYTgvabgvItf4L2C4L2f4L2g4LyL4L2m4L6k4L264L2T4LyL4L2U4LyLJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgvYngvbLgvIvgvZjgvItf4L2f4L6z4LyL4L2W4LyLX+C9mOC9suC9guC8i+C9keC9mOC9ouC8i1/gvaPgvrfgvYLgvIvgvZTgvItf4L2V4L204L2i4LyL4L2W4L20X+C9lOC8i+C9puC9hOC9puC8i1/gvabgvqTgvbrgvZPgvIvgvZTgvIsnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4L2J4L2yX+C9n+C+s1/gvZjgvbLgvYJf4L2j4L634L2CX+C9leC9tOC9ol/gvabgvYTgvaZf4L2m4L6k4L264L2TJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnQSBoOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVksIEEgaDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+C9keC9suC8i+C9ouC9suC9hF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vgvabgvYTgvIvgvYngvbLgvZNdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW+C9luC9keC9tOC9k+C8i+C9leC+suC9guC8i+C9ouC+l+C9uuC9puC8i+C9mF0sIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4L2B4LyL4L2m4L2EXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgvZbgvZHgvbTgvZPgvIvgvZXgvrLgvYLgvIvgvZjgvZDgvaDgvIvgvZhdIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg4L2j4LyLJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDgvabgvpTgvZPgvIvgvaMnLFxuICAgICAgICAgICAgczogJ+C9o+C9mOC8i+C9puC9hCcsXG4gICAgICAgICAgICBzczogJyVkIOC9puC+kOC9ouC8i+C9huC8jScsXG4gICAgICAgICAgICBtOiAn4L2m4L6Q4L2i4LyL4L2Y4LyL4L2C4L2F4L2y4L2CJyxcbiAgICAgICAgICAgIG1tOiAnJWQg4L2m4L6Q4L2i4LyL4L2YJyxcbiAgICAgICAgICAgIGg6ICfgvYbgvbTgvIvgvZrgvbzgvZHgvIvgvYLgvYXgvbLgvYInLFxuICAgICAgICAgICAgaGg6ICclZCDgvYbgvbTgvIvgvZrgvbzgvZEnLFxuICAgICAgICAgICAgZDogJ+C9ieC9suC9k+C8i+C9guC9heC9suC9gicsXG4gICAgICAgICAgICBkZDogJyVkIOC9ieC9suC9k+C8iycsXG4gICAgICAgICAgICBNOiAn4L2f4L6z4LyL4L2W4LyL4L2C4L2F4L2y4L2CJyxcbiAgICAgICAgICAgIE1NOiAnJWQg4L2f4L6z4LyL4L2WJyxcbiAgICAgICAgICAgIHk6ICfgvaPgvbzgvIvgvYLgvYXgvbLgvYInLFxuICAgICAgICAgICAgeXk6ICclZCDgvaPgvbwnLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4Lyh4Lyi4Lyj4Lyk4Lyl4Lym4Lyn4Lyo4Lyp4LygXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4L2Y4L2a4L2T4LyL4L2Y4L28fOC9nuC9vOC9guC9puC8i+C9gOC9pnzgvYngvbLgvZPgvIvgvYLgvbTgvYR84L2R4L2C4L284L2E4LyL4L2R4L2CfOC9mOC9muC9k+C8i+C9mOC9vC8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAobWVyaWRpZW0gPT09ICfgvZjgvZrgvZPgvIvgvZjgvbwnICYmIGhvdXIgPj0gNCkgfHxcbiAgICAgICAgICAgICAgICAobWVyaWRpZW0gPT09ICfgvYngvbLgvZPgvIvgvYLgvbTgvYQnICYmIGhvdXIgPCA1KSB8fFxuICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn4L2R4L2C4L284L2E4LyL4L2R4L2CJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C9mOC9muC9k+C8i+C9mOC9vCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4L2e4L284L2C4L2m4LyL4L2A4L2mJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgvYngvbLgvZPgvIvgvYLgvbTgvYQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C9keC9guC9vOC9hOC8i+C9keC9gic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4L2Y4L2a4L2T4LyL4L2Y4L28JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJvO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEJyZXRvbiBbYnJdXG4vLyEgYXV0aG9yIDogSmVhbi1CYXB0aXN0ZSBMZSBEdWlnb3UgOiBodHRwczovL2dpdGh1Yi5jb20vamJsZWR1aWdvdVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lV2l0aE11dGF0aW9uKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICBtbTogJ211bnV0ZW5uJyxcbiAgICAgICAgICAgIE1NOiAnbWl6JyxcbiAgICAgICAgICAgIGRkOiAnZGV2ZXpoJyxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIG11dGF0aW9uKGZvcm1hdFtrZXldLCBudW1iZXIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzcGVjaWFsTXV0YXRpb25Gb3JZZWFycyhudW1iZXIpIHtcbiAgICAgICAgc3dpdGNoIChsYXN0TnVtYmVyKG51bWJlcikpIHtcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyBibG9heic7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnIHZsb2F6JztcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBsYXN0TnVtYmVyKG51bWJlcikge1xuICAgICAgICBpZiAobnVtYmVyID4gOSkge1xuICAgICAgICAgICAgcmV0dXJuIGxhc3ROdW1iZXIobnVtYmVyICUgMTApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG11dGF0aW9uKHRleHQsIG51bWJlcikge1xuICAgICAgICBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICByZXR1cm4gc29mdE11dGF0aW9uKHRleHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZXh0O1xuICAgIH1cbiAgICBmdW5jdGlvbiBzb2Z0TXV0YXRpb24odGV4dCkge1xuICAgICAgICB2YXIgbXV0YXRpb25UYWJsZSA9IHtcbiAgICAgICAgICAgIG06ICd2JyxcbiAgICAgICAgICAgIGI6ICd2JyxcbiAgICAgICAgICAgIGQ6ICd6JyxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKG11dGF0aW9uVGFibGVbdGV4dC5jaGFyQXQoMCldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0ZXh0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtdXRhdGlvblRhYmxlW3RleHQuY2hhckF0KDApXSArIHRleHQuc3Vic3RyaW5nKDEpO1xuICAgIH1cblxuICAgIHZhciBtb250aHNQYXJzZSA9IFtcbiAgICAgICAgICAgIC9eZ2VuL2ksXG4gICAgICAgICAgICAvXmNbyrxcXCddaHdlL2ksXG4gICAgICAgICAgICAvXm1ldS9pLFxuICAgICAgICAgICAgL15lYnIvaSxcbiAgICAgICAgICAgIC9ebWFlL2ksXG4gICAgICAgICAgICAvXihtZXp8ZXZlKS9pLFxuICAgICAgICAgICAgL15nb3UvaSxcbiAgICAgICAgICAgIC9eZW9zL2ksXG4gICAgICAgICAgICAvXmd3ZS9pLFxuICAgICAgICAgICAgL15oZXIvaSxcbiAgICAgICAgICAgIC9eZHUvaSxcbiAgICAgICAgICAgIC9ea2VyL2ksXG4gICAgICAgIF0sXG4gICAgICAgIG1vbnRoc1JlZ2V4ID1cbiAgICAgICAgICAgIC9eKGdlbnZlcnxjW8q8XFwnXWh3ZXZyZXJ8bWV1cnpofGVicmVsfG1hZXxtZXpoZXZlbnxnb3VlcmV8ZW9zdHxnd2VuZ29sb3xoZXJlfGR1fGtlcnp1fGdlbnxjW8q8XFwnXWh3ZXxtZXV8ZWJyfG1hZXxldmV8Z291fGVvc3xnd2V8aGVyfGR1fGtlcikvaSxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXggPVxuICAgICAgICAgICAgL14oZ2VudmVyfGNbyrxcXCddaHdldnJlcnxtZXVyemh8ZWJyZWx8bWFlfG1lemhldmVufGdvdWVyZXxlb3N0fGd3ZW5nb2xvfGhlcmV8ZHV8a2VyenUpL2ksXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXggPVxuICAgICAgICAgICAgL14oZ2VufGNbyrxcXCddaHdlfG1ldXxlYnJ8bWFlfGV2ZXxnb3V8ZW9zfGd3ZXxoZXJ8ZHV8a2VyKS9pLFxuICAgICAgICBmdWxsV2Vla2RheXNQYXJzZSA9IFtcbiAgICAgICAgICAgIC9ec3VsL2ksXG4gICAgICAgICAgICAvXmx1bi9pLFxuICAgICAgICAgICAgL15tZXVyemgvaSxcbiAgICAgICAgICAgIC9ebWVyY1vKvFxcJ11oZXIvaSxcbiAgICAgICAgICAgIC9eeWFvdS9pLFxuICAgICAgICAgICAgL15nd2VuZXIvaSxcbiAgICAgICAgICAgIC9ec2Fkb3JuL2ksXG4gICAgICAgIF0sXG4gICAgICAgIHNob3J0V2Vla2RheXNQYXJzZSA9IFtcbiAgICAgICAgICAgIC9eU3VsL2ksXG4gICAgICAgICAgICAvXkx1bi9pLFxuICAgICAgICAgICAgL15NZXUvaSxcbiAgICAgICAgICAgIC9eTWVyL2ksXG4gICAgICAgICAgICAvXllhby9pLFxuICAgICAgICAgICAgL15Hd2UvaSxcbiAgICAgICAgICAgIC9eU2FkL2ksXG4gICAgICAgIF0sXG4gICAgICAgIG1pbldlZWtkYXlzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXlN1L2ksXG4gICAgICAgICAgICAvXkx1L2ksXG4gICAgICAgICAgICAvXk1lKFtecl18JCkvaSxcbiAgICAgICAgICAgIC9eTWVyL2ksXG4gICAgICAgICAgICAvXllhL2ksXG4gICAgICAgICAgICAvXkd3L2ksXG4gICAgICAgICAgICAvXlNhL2ksXG4gICAgICAgIF07XG5cbiAgICB2YXIgYnIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdicicsIHtcbiAgICAgICAgbW9udGhzOiAnR2VudmVyX0PKvGh3ZXZyZXJfTWV1cnpoX0VicmVsX01hZV9NZXpoZXZlbl9Hb3VlcmVfRW9zdF9Hd2VuZ29sb19IZXJlX0R1X0tlcnp1Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0dlbl9Dyrxod2VfTWV1X0Vicl9NYWVfRXZlX0dvdV9Fb3NfR3dlX0hlcl9EdV9LZXInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnU3VsX0x1bl9NZXVyemhfTWVyY8q8aGVyX1lhb3VfR3dlbmVyX1NhZG9ybicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1N1bF9MdW5fTWV1X01lcl9ZYW9fR3dlX1NhZCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTdV9MdV9NZV9NZXJfWWFfR3dfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2U6IG1pbldlZWtkYXlzUGFyc2UsXG4gICAgICAgIGZ1bGxXZWVrZGF5c1BhcnNlOiBmdWxsV2Vla2RheXNQYXJzZSxcbiAgICAgICAgc2hvcnRXZWVrZGF5c1BhcnNlOiBzaG9ydFdlZWtkYXlzUGFyc2UsXG4gICAgICAgIG1pbldlZWtkYXlzUGFyc2U6IG1pbldlZWtkYXlzUGFyc2UsXG5cbiAgICAgICAgbW9udGhzUmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6IG1vbnRoc1N0cmljdFJlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OiBtb250aHNTaG9ydFN0cmljdFJlZ2V4LFxuICAgICAgICBtb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBbYSB2aXpdIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIFthIHZpel0gTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIFthIHZpel0gTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSGl6aXYgZGFdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbV2FyY8q8aG9hemggZGFdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbZGFdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbRGVjyrxoIGRhXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW3Bhc2V0IGRhXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2EtYmVubiAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgyrx6bycsXG4gICAgICAgICAgICBzOiAndW4gbmViZXVkIHNlZ29uZGVubm/DuScsXG4gICAgICAgICAgICBzczogJyVkIGVpbGVubicsXG4gICAgICAgICAgICBtOiAndXIgdnVudXRlbm4nLFxuICAgICAgICAgICAgbW06IHJlbGF0aXZlVGltZVdpdGhNdXRhdGlvbixcbiAgICAgICAgICAgIGg6ICd1biBldXInLFxuICAgICAgICAgICAgaGg6ICclZCBldXInLFxuICAgICAgICAgICAgZDogJ3VuIGRldmV6aCcsXG4gICAgICAgICAgICBkZDogcmVsYXRpdmVUaW1lV2l0aE11dGF0aW9uLFxuICAgICAgICAgICAgTTogJ3VyIG1peicsXG4gICAgICAgICAgICBNTTogcmVsYXRpdmVUaW1lV2l0aE11dGF0aW9uLFxuICAgICAgICAgICAgeTogJ3VyIGJsb2F6JyxcbiAgICAgICAgICAgIHl5OiBzcGVjaWFsTXV0YXRpb25Gb3JZZWFycyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KGHDsXx2ZXQpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIG91dHB1dCA9IG51bWJlciA9PT0gMSA/ICdhw7EnIDogJ3ZldCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9hLm0ufGcubS4vLCAvLyBnb3VkZSBtZXJlbm4gfCBhLXJhb2sgbWVyZW5uXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uICh0b2tlbikge1xuICAgICAgICAgICAgcmV0dXJuIHRva2VuID09PSAnZy5tLic7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICByZXR1cm4gaG91ciA8IDEyID8gJ2EubS4nIDogJ2cubS4nO1xuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJyO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEJvc25pYW4gW2JzXVxuLy8hIGF1dGhvciA6IE5lZGltIENob2xpY2ggOiBodHRwczovL2dpdGh1Yi5jb20vZnJvbnR5YXJkXG4vLyEgYmFzZWQgb24gKGhyKSB0cmFuc2xhdGlvbiBieSBCb2phbiBNYXJrb3ZpxIdcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVtYmVyICsgJyAnO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzZWt1bmRhJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2VrdW5kZSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzZWt1bmRpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2plZG5hIG1pbnV0YScgOiAnamVkbmUgbWludXRlJztcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWludXRhJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWludXRlJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21pbnV0YSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdqZWRhbiBzYXQnIDogJ2plZG5vZyBzYXRhJztcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2F0JztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2F0YSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzYXRpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZGFuJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2RhbmEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtamVzZWMnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtamVzZWNhJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21qZXNlY2knO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdnb2RpbmEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdnb2RpbmUnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZ29kaW5hJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBicyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2JzJywge1xuICAgICAgICBtb250aHM6ICdqYW51YXJfZmVicnVhcl9tYXJ0X2FwcmlsX21hal9qdW5pX2p1bGlfYXVndXN0X3NlcHRlbWJhcl9va3RvYmFyX25vdmVtYmFyX2RlY2VtYmFyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdqYW4uX2ZlYi5fbWFyLl9hcHIuX21hai5fanVuLl9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVjLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ25lZGplbGphX3BvbmVkamVsamFrX3V0b3Jha19zcmlqZWRhX8SNZXR2cnRha19wZXRha19zdWJvdGEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICduZWQuX3Bvbi5fdXRvLl9zcmkuX8SNZXQuX3BldC5fc3ViLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICduZV9wb191dF9zcl/EjWVfcGVfc3UnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2RhbmFzIHVdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbc3V0cmEgdV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW25lZGplbGp1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbc3JpamVkdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3N1Ym90dV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gZGRkZCBbdV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2p1xI1lciB1XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Byb8WhbHVdIGRkZGQgW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJvxaFsZV0gW3N1Ym90ZV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJvxaFsaV0gZGRkZCBbdV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdwcmlqZSAlcycsXG4gICAgICAgICAgICBzOiAncGFyIHNla3VuZGknLFxuICAgICAgICAgICAgc3M6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZDogJ2RhbicsXG4gICAgICAgICAgICBkZDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTTogJ21qZXNlYycsXG4gICAgICAgICAgICBNTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeTogJ2dvZGludScsXG4gICAgICAgICAgICB5eTogdHJhbnNsYXRlLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJzO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IENhdGFsYW4gW2NhXVxuLy8hIGF1dGhvciA6IEp1YW4gRy4gSHVydGFkbyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qdWFuZ2h1cnRhZG9cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBjYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2NhJywge1xuICAgICAgICBtb250aHM6IHtcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6XG4gICAgICAgICAgICAgICAgJ2dlbmVyX2ZlYnJlcl9tYXLDp19hYnJpbF9tYWlnX2p1bnlfanVsaW9sX2Fnb3N0X3NldGVtYnJlX29jdHVicmVfbm92ZW1icmVfZGVzZW1icmUnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgZm9ybWF0OiBcImRlIGdlbmVyX2RlIGZlYnJlcl9kZSBtYXLDp19kJ2FicmlsX2RlIG1haWdfZGUganVueV9kZSBqdWxpb2xfZCdhZ29zdF9kZSBzZXRlbWJyZV9kJ29jdHVicmVfZGUgbm92ZW1icmVfZGUgZGVzZW1icmVcIi5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpc0Zvcm1hdDogL0Rbb0RdPyhcXHMpK01NTU0vLFxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdnZW4uX2ZlYnIuX21hcsOnX2Fici5fbWFpZ19qdW55X2p1bC5fYWcuX3NldC5fb2N0Ll9ub3YuX2Rlcy4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnZGl1bWVuZ2VfZGlsbHVuc19kaW1hcnRzX2RpbWVjcmVzX2Rpam91c19kaXZlbmRyZXNfZGlzc2FidGUnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2RnLl9kbC5fZHQuX2RjLl9kai5fZHYuX2RzLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdkZ19kbF9kdF9kY19kal9kdl9kcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIGxsOiAnRCBNTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gW2RlXSBZWVlZIFthIGxlc10gSDptbScsXG4gICAgICAgICAgICBsbGw6ICdEIE1NTSBZWVlZLCBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBbZGVdIFlZWVkgW2EgbGVzXSBIOm1tJyxcbiAgICAgICAgICAgIGxsbGw6ICdkZGQgRCBNTU0gWVlZWSwgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbYXZ1aSBhICcgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ2xlcycgOiAnbGEnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0RGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbZGVtw6AgYSAnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdsZXMnIDogJ2xhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RkZGQgW2EgJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAnbGVzJyA6ICdsYScpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1thaGlyIGEgJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAnbGVzJyA6ICdsYScpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgJ1tlbF0gZGRkZCBbcGFzc2F0IGEgJyArXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmhvdXJzKCkgIT09IDEgPyAnbGVzJyA6ICdsYScpICtcbiAgICAgICAgICAgICAgICAgICAgJ10gTFQnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogXCJkJ2FxdcOtICVzXCIsXG4gICAgICAgICAgICBwYXN0OiAnZmEgJXMnLFxuICAgICAgICAgICAgczogJ3VucyBzZWdvbnMnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWdvbnMnLFxuICAgICAgICAgICAgbTogJ3VuIG1pbnV0JyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRzJyxcbiAgICAgICAgICAgIGg6ICd1bmEgaG9yYScsXG4gICAgICAgICAgICBoaDogJyVkIGhvcmVzJyxcbiAgICAgICAgICAgIGQ6ICd1biBkaWEnLFxuICAgICAgICAgICAgZGQ6ICclZCBkaWVzJyxcbiAgICAgICAgICAgIE06ICd1biBtZXMnLFxuICAgICAgICAgICAgTU06ICclZCBtZXNvcycsXG4gICAgICAgICAgICB5OiAndW4gYW55JyxcbiAgICAgICAgICAgIHl5OiAnJWQgYW55cycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShyfG58dHzDqHxhKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgdmFyIG91dHB1dCA9XG4gICAgICAgICAgICAgICAgbnVtYmVyID09PSAxXG4gICAgICAgICAgICAgICAgICAgID8gJ3InXG4gICAgICAgICAgICAgICAgICAgIDogbnVtYmVyID09PSAyXG4gICAgICAgICAgICAgICAgICAgID8gJ24nXG4gICAgICAgICAgICAgICAgICAgIDogbnVtYmVyID09PSAzXG4gICAgICAgICAgICAgICAgICAgID8gJ3InXG4gICAgICAgICAgICAgICAgICAgIDogbnVtYmVyID09PSA0XG4gICAgICAgICAgICAgICAgICAgID8gJ3QnXG4gICAgICAgICAgICAgICAgICAgIDogJ8OoJztcbiAgICAgICAgICAgIGlmIChwZXJpb2QgPT09ICd3JyB8fCBwZXJpb2QgPT09ICdXJykge1xuICAgICAgICAgICAgICAgIG91dHB1dCA9ICdhJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBjYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBDemVjaCBbY3NdXG4vLyEgYXV0aG9yIDogcGV0cmJlbGEgOiBodHRwczovL2dpdGh1Yi5jb20vcGV0cmJlbGFcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtb250aHMgPSB7XG4gICAgICAgICAgICBmb3JtYXQ6ICdsZWRlbl/Dum5vcl9ixZllemVuX2R1YmVuX2t2xJt0ZW5fxI1lcnZlbl/EjWVydmVuZWNfc3JwZW5fesOhxZnDrV/FmcOtamVuX2xpc3RvcGFkX3Byb3NpbmVjJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICdsZWRuYV/Dum5vcmFfYsWZZXpuYV9kdWJuYV9rdsSbdG5hX8SNZXJ2bmFfxI1lcnZlbmNlX3NycG5hX3rDocWZw61fxZnDrWpuYV9saXN0b3BhZHVfcHJvc2luY2UnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydCA9ICdsZWRfw7pub19ixZllX2R1Yl9rdsSbX8SNdm5fxI12Y19zcnBfesOhxZlfxZnDrWpfbGlzX3Bybycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXmxlZC9pLFxuICAgICAgICAgICAgL17Dum5vL2ksXG4gICAgICAgICAgICAvXmLFmWUvaSxcbiAgICAgICAgICAgIC9eZHViL2ksXG4gICAgICAgICAgICAvXmt2xJsvaSxcbiAgICAgICAgICAgIC9eKMSNdm58xI1lcnZlbiR8xI1lcnZuYSkvaSxcbiAgICAgICAgICAgIC9eKMSNdmN8xI1lcnZlbmVjfMSNZXJ2ZW5jZSkvaSxcbiAgICAgICAgICAgIC9ec3JwL2ksXG4gICAgICAgICAgICAvXnrDocWZL2ksXG4gICAgICAgICAgICAvXsWZw61qL2ksXG4gICAgICAgICAgICAvXmxpcy9pLFxuICAgICAgICAgICAgL15wcm8vaSxcbiAgICAgICAgXSxcbiAgICAgICAgLy8gTk9URTogJ8SNZXJ2ZW4nIGlzIHN1YnN0cmluZyBvZiAnxI1lcnZlbmVjJzsgdGhlcmVmb3JlICfEjWVydmVuZWMnIG11c3QgcHJlY2VkZSAnxI1lcnZlbicgaW4gdGhlIHJlZ2V4IHRvIGJlIGZ1bGx5IG1hdGNoZWQuXG4gICAgICAgIC8vIE90aGVyd2lzZSBwYXJzZXIgbWF0Y2hlcyAnMS4gxI1lcnZlbmVjJyBhcyAnMS4gxI1lcnZlbicgKyAnZWMnLlxuICAgICAgICBtb250aHNSZWdleCA9XG4gICAgICAgICAgICAvXihsZWRlbnzDum5vcnxixZllemVufGR1YmVufGt2xJt0ZW58xI1lcnZlbmVjfMSNZXJ2ZW5jZXzEjWVydmVufMSNZXJ2bmF8c3JwZW58esOhxZnDrXzFmcOtamVufGxpc3RvcGFkfHByb3NpbmVjfGxlZHzDum5vfGLFmWV8ZHVifGt2xJt8xI12bnzEjXZjfHNycHx6w6HFmXzFmcOtanxsaXN8cHJvKS9pO1xuXG4gICAgZnVuY3Rpb24gcGx1cmFsKG4pIHtcbiAgICAgICAgcmV0dXJuIG4gPiAxICYmIG4gPCA1ICYmIH5+KG4gLyAxMCkgIT09IDE7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG51bWJlciArICcgJztcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3MnOiAvLyBhIGZldyBzZWNvbmRzIC8gaW4gYSBmZXcgc2Vjb25kcyAvIGEgZmV3IHNlY29uZHMgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAncMOhciBzZWt1bmQnIDogJ3DDoXIgc2VrdW5kYW1pJztcbiAgICAgICAgICAgIGNhc2UgJ3NzJzogLy8gOSBzZWNvbmRzIC8gaW4gOSBzZWNvbmRzIC8gOSBzZWNvbmRzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnc2VrdW5keScgOiAnc2VrdW5kJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdzZWt1bmRhbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ20nOiAvLyBhIG1pbnV0ZSAvIGluIGEgbWludXRlIC8gYSBtaW51dGUgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnbWludXRhJyA6IGlzRnV0dXJlID8gJ21pbnV0dScgOiAnbWludXRvdSc7XG4gICAgICAgICAgICBjYXNlICdtbSc6IC8vIDkgbWludXRlcyAvIGluIDkgbWludXRlcyAvIDkgbWludXRlcyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ21pbnV0eScgOiAnbWludXQnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ21pbnV0YW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdoJzogLy8gYW4gaG91ciAvIGluIGFuIGhvdXIgLyBhbiBob3VyIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2hvZGluYScgOiBpc0Z1dHVyZSA/ICdob2RpbnUnIDogJ2hvZGlub3UnO1xuICAgICAgICAgICAgY2FzZSAnaGgnOiAvLyA5IGhvdXJzIC8gaW4gOSBob3VycyAvIDkgaG91cnMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdob2RpbnknIDogJ2hvZGluJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdob2RpbmFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnZCc6IC8vIGEgZGF5IC8gaW4gYSBkYXkgLyBhIGRheSBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdkZW4nIDogJ2RuZW0nO1xuICAgICAgICAgICAgY2FzZSAnZGQnOiAvLyA5IGRheXMgLyBpbiA5IGRheXMgLyA5IGRheXMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdkbnknIDogJ2Ruw60nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ2RueSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnTSc6IC8vIGEgbW9udGggLyBpbiBhIG1vbnRoIC8gYSBtb250aCBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtxJtzw61jJyA6ICdtxJtzw61jZW0nO1xuICAgICAgICAgICAgY2FzZSAnTU0nOiAvLyA5IG1vbnRocyAvIGluIDkgbW9udGhzIC8gOSBtb250aHMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdtxJtzw61jZScgOiAnbcSbc8OtY8WvJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtxJtzw61jaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAneSc6IC8vIGEgeWVhciAvIGluIGEgeWVhciAvIGEgeWVhciBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdyb2snIDogJ3Jva2VtJztcbiAgICAgICAgICAgIGNhc2UgJ3l5JzogLy8gOSB5ZWFycyAvIGluIDkgeWVhcnMgLyA5IHllYXJzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAncm9reScgOiAnbGV0Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdsZXR5JztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgY3MgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdjcycsIHtcbiAgICAgICAgbW9udGhzOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0OiBtb250aHNTaG9ydCxcbiAgICAgICAgbW9udGhzUmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgLy8gTk9URTogJ8SNZXJ2ZW4nIGlzIHN1YnN0cmluZyBvZiAnxI1lcnZlbmVjJzsgdGhlcmVmb3JlICfEjWVydmVuZWMnIG11c3QgcHJlY2VkZSAnxI1lcnZlbicgaW4gdGhlIHJlZ2V4IHRvIGJlIGZ1bGx5IG1hdGNoZWQuXG4gICAgICAgIC8vIE90aGVyd2lzZSBwYXJzZXIgbWF0Y2hlcyAnMS4gxI1lcnZlbmVjJyBhcyAnMS4gxI1lcnZlbicgKyAnZWMnLlxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDpcbiAgICAgICAgICAgIC9eKGxlZGVufGxlZG5hfMO6bm9yYXzDum5vcnxixZllemVufGLFmWV6bmF8ZHViZW58ZHVibmF8a3bEm3RlbnxrdsSbdG5hfMSNZXJ2ZW5lY3zEjWVydmVuY2V8xI1lcnZlbnzEjWVydm5hfHNycGVufHNycG5hfHrDocWZw618xZnDrWplbnzFmcOtam5hfGxpc3RvcGFkdXxsaXN0b3BhZHxwcm9zaW5lY3xwcm9zaW5jZSkvaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDpcbiAgICAgICAgICAgIC9eKGxlZHzDum5vfGLFmWV8ZHVifGt2xJt8xI12bnzEjXZjfHNycHx6w6HFmXzFmcOtanxsaXN8cHJvKS9pLFxuICAgICAgICBtb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICB3ZWVrZGF5czogJ25lZMSbbGVfcG9uZMSbbMOtX8O6dGVyw71fc3TFmWVkYV/EjXR2cnRla19ww6F0ZWtfc29ib3RhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnbmVfcG9fw7p0X3N0X8SNdF9ww6Ffc28nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnbmVfcG9fw7p0X3N0X8SNdF9ww6Ffc28nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBsOiAnRC4gTS4gWVlZWScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2RuZXMgdl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1t6w610cmEgdl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBuZWTEm2xpIHZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2XSBkZGRkIFt2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZlIHN0xZllZHUgdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2ZSDEjXR2cnRlayB2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3YgcMOhdGVrIHZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBzb2JvdHUgdl0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiAnW3bEjWVyYSB2XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bG91IG5lZMSbbGkgdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsw6ldIGRkZGQgW3ZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWxvdSBzdMWZZWR1IHZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bMO9XSBkZGRkIFt2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsb3Ugc29ib3R1IHZdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICd6YSAlcycsXG4gICAgICAgICAgICBwYXN0OiAncMWZZWQgJXMnLFxuICAgICAgICAgICAgczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgc3M6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZGQ6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE1NOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5OiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5eTogdHJhbnNsYXRlLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNzO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IENodXZhc2ggW2N2XVxuLy8hIGF1dGhvciA6IEFuYXRvbHkgTWlyb25vdiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9taXJvbnRvbGlcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBjdiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2N2Jywge1xuICAgICAgICBtb250aHM6ICfQutOR0YDQu9Cw0Ydf0L3QsNGA05HRgV/Qv9GD0Yhf0LDQutCwX9C80LDQuV/Sq9OX0YDRgtC80LVf0YPRgtORX9Kr0YPRgNC70LBf0LDQstOR0L1f0Y7Qv9CwX9GH07PQul/RgNCw0YjRgtCw0LInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn0LrTkdGAX9C90LDRgF/Qv9GD0Yhf0LDQutCwX9C80LDQuV/Sq9OX0YBf0YPRgtORX9Kr0YPRgF/QsNCy0L1f0Y7Qv9CwX9GH07PQul/RgNCw0YgnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ9Cy0YvRgNGB0LDRgNC90LjQutGD0L1f0YLRg9C90YLQuNC60YPQvV/Ri9GC0LvQsNGA0LjQutGD0L1f0Y7QvdC60YPQvV/QutOX0qvQvdC10YDQvdC40LrRg9C9X9GN0YDQvdC10LrRg9C9X9GI05HQvNCw0YLQutGD0L0nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9Cy0YvRgF/RgtGD0L1f0YvRgtC7X9GO0L1f0LrTl9KrX9GN0YDQvV/RiNOR0LwnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn0LLRgF/RgtC9X9GL0YJf0Y7QvV/QutKrX9GN0YBf0YjQvCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELU1NLVlZWVknLFxuICAgICAgICAgICAgTEw6ICdZWVlZIFvSq9GD0LvRhdC4XSBNTU1NIFvRg9C505HRhdOX0L1dIERbLdC805fRiNOXXScsXG4gICAgICAgICAgICBMTEw6ICdZWVlZIFvSq9GD0LvRhdC4XSBNTU1NIFvRg9C505HRhdOX0L1dIERbLdC805fRiNOXXSwgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIFlZWVkgW9Kr0YPQu9GF0LhdIE1NTU0gW9GD0LnTkdGF05fQvV0gRFst0LzTl9GI05ddLCBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9Cf0LDRj9C9XSBMVCBb0YHQtdGF0LXRgtGA0LVdJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb0KvRgNCw0L1dIExUIFvRgdC10YXQtdGC0YDQtV0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1vTltC90LXRgF0gTFQgW9GB0LXRhdC10YLRgNC1XScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vSqtC40YLQtdGBXSBkZGRkIExUIFvRgdC10YXQtdGC0YDQtV0nLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb0JjRgNGC0L3Tl10gZGRkZCBMVCBb0YHQtdGF0LXRgtGA0LVdJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiBmdW5jdGlvbiAob3V0cHV0KSB7XG4gICAgICAgICAgICAgICAgdmFyIGFmZml4ID0gL9GB0LXRhdC10YIkL2kuZXhlYyhvdXRwdXQpXG4gICAgICAgICAgICAgICAgICAgID8gJ9GA0LXQvSdcbiAgICAgICAgICAgICAgICAgICAgOiAv0qvRg9C7JC9pLmV4ZWMob3V0cHV0KVxuICAgICAgICAgICAgICAgICAgICA/ICfRgtCw0L0nXG4gICAgICAgICAgICAgICAgICAgIDogJ9GA0LDQvSc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG91dHB1dCArIGFmZml4O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDQutCw0Y/Qu9C70LAnLFxuICAgICAgICAgICAgczogJ9C/05fRgC3QuNC6INKr0LXQutC60YPQvdGCJyxcbiAgICAgICAgICAgIHNzOiAnJWQg0qvQtdC60LrRg9C90YInLFxuICAgICAgICAgICAgbTogJ9C/05fRgCDQvNC40L3Rg9GCJyxcbiAgICAgICAgICAgIG1tOiAnJWQg0LzQuNC90YPRgicsXG4gICAgICAgICAgICBoOiAn0L/Tl9GAINGB0LXRhdC10YInLFxuICAgICAgICAgICAgaGg6ICclZCDRgdC10YXQtdGCJyxcbiAgICAgICAgICAgIGQ6ICfQv9OX0YAg0LrRg9C9JyxcbiAgICAgICAgICAgIGRkOiAnJWQg0LrRg9C9JyxcbiAgICAgICAgICAgIE06ICfQv9OX0YAg0YPQudOR0YUnLFxuICAgICAgICAgICAgTU06ICclZCDRg9C505HRhScsXG4gICAgICAgICAgICB5OiAn0L/Tl9GAINKr0YPQuycsXG4gICAgICAgICAgICB5eTogJyVkINKr0YPQuycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS3QvNOX0YgvLFxuICAgICAgICBvcmRpbmFsOiAnJWQt0LzTl9GIJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGN2O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFdlbHNoIFtjeV1cbi8vISBhdXRob3IgOiBSb2JlcnQgQWxsZW4gOiBodHRwczovL2dpdGh1Yi5jb20vcm9iZ2FsbGVuXG4vLyEgYXV0aG9yIDogaHR0cHM6Ly9naXRodWIuY29tL3J5YW5ncmVhdmVzXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgY3kgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdjeScsIHtcbiAgICAgICAgbW9udGhzOiAnSW9uYXdyX0Nod2Vmcm9yX01hd3J0aF9FYnJpbGxfTWFpX01laGVmaW5fR29yZmZlbm5hZl9Bd3N0X01lZGlfSHlkcmVmX1RhY2h3ZWRkX1JoYWdmeXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSW9uX0Nod2VfTWF3X0Vicl9NYWlfTWVoX0dvcl9Bd3NfTWVkX0h5ZF9UYWNoX1JoYWcnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ0R5ZGQgU3VsX0R5ZGQgTGx1bl9EeWRkIE1hd3J0aF9EeWRkIE1lcmNoZXJfRHlkZCBJYXVfRHlkZCBHd2VuZXJfRHlkZCBTYWR3cm4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1N1bF9MbHVuX01hd19NZXJfSWF1X0d3ZV9TYWQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU3VfTGxfTWFfTWVfSWFfR3dfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgLy8gdGltZSBmb3JtYXRzIGFyZSB0aGUgc2FtZSBhcyBlbi1nYlxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hlZGRpdyBhbV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tZZm9yeSBhbV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthbV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tEZG9lIGFtXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW2Rpd2V0aGFmIGFtXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ21ld24gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHluIMO0bCcsXG4gICAgICAgICAgICBzOiAneWNoeWRpZyBlaWxpYWRhdScsXG4gICAgICAgICAgICBzczogJyVkIGVpbGlhZCcsXG4gICAgICAgICAgICBtOiAnbXVudWQnLFxuICAgICAgICAgICAgbW06ICclZCBtdW51ZCcsXG4gICAgICAgICAgICBoOiAnYXdyJyxcbiAgICAgICAgICAgIGhoOiAnJWQgYXdyJyxcbiAgICAgICAgICAgIGQ6ICdkaXdybm9kJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGl3cm5vZCcsXG4gICAgICAgICAgICBNOiAnbWlzJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWlzJyxcbiAgICAgICAgICAgIHk6ICdibHd5ZGR5bicsXG4gICAgICAgICAgICB5eTogJyVkIGZseW5lZGQnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oZmVkfGFpbnxhZnxpbHx5ZGR8ZWR8ZWcpLyxcbiAgICAgICAgLy8gdHJhZGl0aW9uYWwgb3JkaW5hbCBudW1iZXJzIGFib3ZlIDMxIGFyZSBub3QgY29tbW9ubHkgdXNlZCBpbiBjb2xsb3F1aWFsIFdlbHNoXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICcnLFxuICAgICAgICAgICAgICAgIGxvb2t1cCA9IFtcbiAgICAgICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICAgICAgICdhZicsXG4gICAgICAgICAgICAgICAgICAgICdpbCcsXG4gICAgICAgICAgICAgICAgICAgICd5ZGQnLFxuICAgICAgICAgICAgICAgICAgICAneWRkJyxcbiAgICAgICAgICAgICAgICAgICAgJ2VkJyxcbiAgICAgICAgICAgICAgICAgICAgJ2VkJyxcbiAgICAgICAgICAgICAgICAgICAgJ2VkJyxcbiAgICAgICAgICAgICAgICAgICAgJ2ZlZCcsXG4gICAgICAgICAgICAgICAgICAgICdmZWQnLFxuICAgICAgICAgICAgICAgICAgICAnZmVkJywgLy8gMWFmIHRvIDEwZmVkXG4gICAgICAgICAgICAgICAgICAgICdlZycsXG4gICAgICAgICAgICAgICAgICAgICdmZWQnLFxuICAgICAgICAgICAgICAgICAgICAnZWcnLFxuICAgICAgICAgICAgICAgICAgICAnZWcnLFxuICAgICAgICAgICAgICAgICAgICAnZmVkJyxcbiAgICAgICAgICAgICAgICAgICAgJ2VnJyxcbiAgICAgICAgICAgICAgICAgICAgJ2VnJyxcbiAgICAgICAgICAgICAgICAgICAgJ2ZlZCcsXG4gICAgICAgICAgICAgICAgICAgICdlZycsXG4gICAgICAgICAgICAgICAgICAgICdmZWQnLCAvLyAxMWVnIHRvIDIwZmVkXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGlmIChiID4gMjApIHtcbiAgICAgICAgICAgICAgICBpZiAoYiA9PT0gNDAgfHwgYiA9PT0gNTAgfHwgYiA9PT0gNjAgfHwgYiA9PT0gODAgfHwgYiA9PT0gMTAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICdmZWQnOyAvLyBub3QgMzBhaW4sIDcwYWluIG9yIDkwYWluXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ2Fpbic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChiID4gMCkge1xuICAgICAgICAgICAgICAgIG91dHB1dCA9IGxvb2t1cFtiXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBjeTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBEYW5pc2ggW2RhXVxuLy8hIGF1dGhvciA6IFVscmlrIE5pZWxzZW4gOiBodHRwczovL2dpdGh1Yi5jb20vbXJiYXNlXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZGEgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdkYScsIHtcbiAgICAgICAgbW9udGhzOiAnamFudWFyX2ZlYnJ1YXJfbWFydHNfYXByaWxfbWFqX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnamFuX2ZlYl9tYXJfYXByX21hal9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnc8O4bmRhZ19tYW5kYWdfdGlyc2RhZ19vbnNkYWdfdG9yc2RhZ19mcmVkYWdfbMO4cmRhZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ3PDuG5fbWFuX3Rpcl9vbnNfdG9yX2ZyZV9sw7hyJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ3PDuF9tYV90aV9vbl90b19mcl9sw7gnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBbZC5dIEQuIE1NTU0gWVlZWSBba2wuXSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2kgZGFnIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tpIG1vcmdlbiBrbC5dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAncMOlIGRkZGQgW2tsLl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tpIGfDpXIga2wuXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tpXSBkZGRkW3Mga2wuXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ29tICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBzaWRlbicsXG4gICAgICAgICAgICBzOiAnZsOlIHNla3VuZGVyJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VrdW5kZXInLFxuICAgICAgICAgICAgbTogJ2V0IG1pbnV0JyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXR0ZXInLFxuICAgICAgICAgICAgaDogJ2VuIHRpbWUnLFxuICAgICAgICAgICAgaGg6ICclZCB0aW1lcicsXG4gICAgICAgICAgICBkOiAnZW4gZGFnJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGFnZScsXG4gICAgICAgICAgICBNOiAnZW4gbcOlbmVkJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbcOlbmVkZXInLFxuICAgICAgICAgICAgeTogJ2V0IMOlcicsXG4gICAgICAgICAgICB5eTogJyVkIMOlcicsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGE7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogR2VybWFuIChBdXN0cmlhKSBbZGUtYXRdXG4vLyEgYXV0aG9yIDogbGx1Y2hzIDogaHR0cHM6Ly9naXRodWIuY29tL2xsdWNoc1xuLy8hIGF1dGhvcjogTWVuZWxpb24gRWxlbnPDumxlOiBodHRwczovL2dpdGh1Yi5jb20vT2lyZVxuLy8hIGF1dGhvciA6IE1hcnRpbiBHcm9sbGVyIDogaHR0cHM6Ly9naXRodWIuY29tL01hZE1HXG4vLyEgYXV0aG9yIDogTWlrb2xhaiBEYWRlbGEgOiBodHRwczovL2dpdGh1Yi5jb20vbWlrMDFhalxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgIG06IFsnZWluZSBNaW51dGUnLCAnZWluZXIgTWludXRlJ10sXG4gICAgICAgICAgICBoOiBbJ2VpbmUgU3R1bmRlJywgJ2VpbmVyIFN0dW5kZSddLFxuICAgICAgICAgICAgZDogWydlaW4gVGFnJywgJ2VpbmVtIFRhZyddLFxuICAgICAgICAgICAgZGQ6IFtudW1iZXIgKyAnIFRhZ2UnLCBudW1iZXIgKyAnIFRhZ2VuJ10sXG4gICAgICAgICAgICB3OiBbJ2VpbmUgV29jaGUnLCAnZWluZXIgV29jaGUnXSxcbiAgICAgICAgICAgIE06IFsnZWluIE1vbmF0JywgJ2VpbmVtIE1vbmF0J10sXG4gICAgICAgICAgICBNTTogW251bWJlciArICcgTW9uYXRlJywgbnVtYmVyICsgJyBNb25hdGVuJ10sXG4gICAgICAgICAgICB5OiBbJ2VpbiBKYWhyJywgJ2VpbmVtIEphaHInXSxcbiAgICAgICAgICAgIHl5OiBbbnVtYmVyICsgJyBKYWhyZScsIG51bWJlciArICcgSmFocmVuJ10sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gZm9ybWF0W2tleV1bMF0gOiBmb3JtYXRba2V5XVsxXTtcbiAgICB9XG5cbiAgICB2YXIgZGVBdCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2RlLWF0Jywge1xuICAgICAgICBtb250aHM6ICdKw6RubmVyX0ZlYnJ1YXJfTcOkcnpfQXByaWxfTWFpX0p1bmlfSnVsaV9BdWd1c3RfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGV6ZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ0rDpG4uX0ZlYi5fTcOkcnpfQXByLl9NYWlfSnVuaV9KdWxpX0F1Zy5fU2VwLl9Pa3QuX05vdi5fRGV6Licuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnU29ubnRhZ19Nb250YWdfRGllbnN0YWdfTWl0dHdvY2hfRG9ubmVyc3RhZ19GcmVpdGFnX1NhbXN0YWcnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1NvLl9Nby5fRGkuX01pLl9Eby5fRnIuX1NhLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTb19Nb19EaV9NaV9Eb19Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2hldXRlIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICAgICAgbmV4dERheTogJ1ttb3JnZW4gdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbZ2VzdGVybiB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbbGV0enRlbl0gZGRkZCBbdW1dIExUIFtVaHJdJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAndm9yICVzJyxcbiAgICAgICAgICAgIHM6ICdlaW4gcGFhciBTZWt1bmRlbicsXG4gICAgICAgICAgICBzczogJyVkIFNla3VuZGVuJyxcbiAgICAgICAgICAgIG06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbTogJyVkIE1pbnV0ZW4nLFxuICAgICAgICAgICAgaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoOiAnJWQgU3R1bmRlbicsXG4gICAgICAgICAgICBkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZGQ6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB3OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgd3c6ICclZCBXb2NoZW4nLFxuICAgICAgICAgICAgTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRlQXQ7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogR2VybWFuIChTd2l0emVybGFuZCkgW2RlLWNoXVxuLy8hIGF1dGhvciA6IHNzY2h1ZWxsZXIgOiBodHRwczovL2dpdGh1Yi5jb20vc3NjaHVlbGxlclxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgIG06IFsnZWluZSBNaW51dGUnLCAnZWluZXIgTWludXRlJ10sXG4gICAgICAgICAgICBoOiBbJ2VpbmUgU3R1bmRlJywgJ2VpbmVyIFN0dW5kZSddLFxuICAgICAgICAgICAgZDogWydlaW4gVGFnJywgJ2VpbmVtIFRhZyddLFxuICAgICAgICAgICAgZGQ6IFtudW1iZXIgKyAnIFRhZ2UnLCBudW1iZXIgKyAnIFRhZ2VuJ10sXG4gICAgICAgICAgICB3OiBbJ2VpbmUgV29jaGUnLCAnZWluZXIgV29jaGUnXSxcbiAgICAgICAgICAgIE06IFsnZWluIE1vbmF0JywgJ2VpbmVtIE1vbmF0J10sXG4gICAgICAgICAgICBNTTogW251bWJlciArICcgTW9uYXRlJywgbnVtYmVyICsgJyBNb25hdGVuJ10sXG4gICAgICAgICAgICB5OiBbJ2VpbiBKYWhyJywgJ2VpbmVtIEphaHInXSxcbiAgICAgICAgICAgIHl5OiBbbnVtYmVyICsgJyBKYWhyZScsIG51bWJlciArICcgSmFocmVuJ10sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gZm9ybWF0W2tleV1bMF0gOiBmb3JtYXRba2V5XVsxXTtcbiAgICB9XG5cbiAgICB2YXIgZGVDaCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2RlLWNoJywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJfRmVicnVhcl9Nw6Ryel9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnSmFuLl9GZWIuX03DpHJ6X0Fwci5fTWFpX0p1bmlfSnVsaV9BdWcuX1NlcC5fT2t0Ll9Ob3YuX0Rlei4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ1Nvbm50YWdfTW9udGFnX0RpZW5zdGFnX01pdHR3b2NoX0Rvbm5lcnN0YWdfRnJlaXRhZ19TYW1zdGFnJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTb19Nb19EaV9NaV9Eb19Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTb19Nb19EaV9NaV9Eb19Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2hldXRlIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICAgICAgbmV4dERheTogJ1ttb3JnZW4gdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbZ2VzdGVybiB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbbGV0enRlbl0gZGRkZCBbdW1dIExUIFtVaHJdJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAndm9yICVzJyxcbiAgICAgICAgICAgIHM6ICdlaW4gcGFhciBTZWt1bmRlbicsXG4gICAgICAgICAgICBzczogJyVkIFNla3VuZGVuJyxcbiAgICAgICAgICAgIG06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbTogJyVkIE1pbnV0ZW4nLFxuICAgICAgICAgICAgaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoOiAnJWQgU3R1bmRlbicsXG4gICAgICAgICAgICBkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZGQ6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB3OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgd3c6ICclZCBXb2NoZW4nLFxuICAgICAgICAgICAgTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRlQ2g7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogR2VybWFuIFtkZV1cbi8vISBhdXRob3IgOiBsbHVjaHMgOiBodHRwczovL2dpdGh1Yi5jb20vbGx1Y2hzXG4vLyEgYXV0aG9yOiBNZW5lbGlvbiBFbGVuc8O6bGU6IGh0dHBzOi8vZ2l0aHViLmNvbS9PaXJlXG4vLyEgYXV0aG9yIDogTWlrb2xhaiBEYWRlbGEgOiBodHRwczovL2dpdGh1Yi5jb20vbWlrMDFhalxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgIG06IFsnZWluZSBNaW51dGUnLCAnZWluZXIgTWludXRlJ10sXG4gICAgICAgICAgICBoOiBbJ2VpbmUgU3R1bmRlJywgJ2VpbmVyIFN0dW5kZSddLFxuICAgICAgICAgICAgZDogWydlaW4gVGFnJywgJ2VpbmVtIFRhZyddLFxuICAgICAgICAgICAgZGQ6IFtudW1iZXIgKyAnIFRhZ2UnLCBudW1iZXIgKyAnIFRhZ2VuJ10sXG4gICAgICAgICAgICB3OiBbJ2VpbmUgV29jaGUnLCAnZWluZXIgV29jaGUnXSxcbiAgICAgICAgICAgIE06IFsnZWluIE1vbmF0JywgJ2VpbmVtIE1vbmF0J10sXG4gICAgICAgICAgICBNTTogW251bWJlciArICcgTW9uYXRlJywgbnVtYmVyICsgJyBNb25hdGVuJ10sXG4gICAgICAgICAgICB5OiBbJ2VpbiBKYWhyJywgJ2VpbmVtIEphaHInXSxcbiAgICAgICAgICAgIHl5OiBbbnVtYmVyICsgJyBKYWhyZScsIG51bWJlciArICcgSmFocmVuJ10sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gZm9ybWF0W2tleV1bMF0gOiBmb3JtYXRba2V5XVsxXTtcbiAgICB9XG5cbiAgICB2YXIgZGUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdkZScsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyX0ZlYnJ1YXJfTcOkcnpfQXByaWxfTWFpX0p1bmlfSnVsaV9BdWd1c3RfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGV6ZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ0phbi5fRmViLl9Nw6Ryel9BcHIuX01haV9KdW5pX0p1bGlfQXVnLl9TZXAuX09rdC5fTm92Ll9EZXouJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdTb25udGFnX01vbnRhZ19EaWVuc3RhZ19NaXR0d29jaF9Eb25uZXJzdGFnX0ZyZWl0YWdfU2Ftc3RhZycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU28uX01vLl9EaS5fTWkuX0RvLl9Gci5fU2EuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1NvX01vX0RpX01pX0RvX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaGV1dGUgdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW21vcmdlbiB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFt1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1tnZXN0ZXJuIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tsZXR6dGVuXSBkZGRkIFt1bV0gTFQgW1Vocl0nLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICd2b3IgJXMnLFxuICAgICAgICAgICAgczogJ2VpbiBwYWFyIFNla3VuZGVuJyxcbiAgICAgICAgICAgIHNzOiAnJWQgU2VrdW5kZW4nLFxuICAgICAgICAgICAgbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tOiAnJWQgTWludXRlbicsXG4gICAgICAgICAgICBoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGg6ICclZCBTdHVuZGVuJyxcbiAgICAgICAgICAgIGQ6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHc6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB3dzogJyVkIFdvY2hlbicsXG4gICAgICAgICAgICBNOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTU06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeXk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogTWFsZGl2aWFuIFtkdl1cbi8vISBhdXRob3IgOiBKYXdpc2ggSGFtZWVkIDogaHR0cHM6Ly9naXRodWIuY29tL2phd2lzaFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRocyA9IFtcbiAgICAgICAgICAgICfelt6s3oLeqt6H3qbeg96pJyxcbiAgICAgICAgICAgICfeit6s3oTesN6D3qreh96m3oPeqScsXG4gICAgICAgICAgICAn3onep96D3qjel96qJyxcbiAgICAgICAgICAgICfeh96t3pXesN6D3qnejd6qJyxcbiAgICAgICAgICAgICfeid6tJyxcbiAgICAgICAgICAgICfelt6r3oLesCcsXG4gICAgICAgICAgICAn3pbeqt6N3qbeh96oJyxcbiAgICAgICAgICAgICfeh96v3o7ept6Q3rDek96qJyxcbiAgICAgICAgICAgICfekN6s3pXesN6T3qzeid6w3oTept6D3qonLFxuICAgICAgICAgICAgJ96H3q7eht6w3pPer96E3qbeg96qJyxcbiAgICAgICAgICAgICfegt6u3ojerN6J3rDehN6m3oPeqicsXG4gICAgICAgICAgICAn3pHeqN6Q3qzeid6w3oTept6D3qonLFxuICAgICAgICBdLFxuICAgICAgICB3ZWVrZGF5cyA9IFtcbiAgICAgICAgICAgICfeh96n3oveqN6H3rDejN6mJyxcbiAgICAgICAgICAgICfegN6v3onepicsXG4gICAgICAgICAgICAn3ofept6C3rDejt6n3oPepicsXG4gICAgICAgICAgICAn3oTeqt6L3qYnLFxuICAgICAgICAgICAgJ96E3qreg96n3pDesN6K3qbejN6oJyxcbiAgICAgICAgICAgICfegN6q3obeqt6D3qonLFxuICAgICAgICAgICAgJ96A3q7egt6o3oDeqN6D3qonLFxuICAgICAgICBdO1xuXG4gICAgdmFyIGR2ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZHYnLCB7XG4gICAgICAgIG1vbnRoczogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydDogbW9udGhzLFxuICAgICAgICB3ZWVrZGF5czogd2Vla2RheXMsXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6IHdlZWtkYXlzLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ96H3qfei96oX96A3q/eid6mX96H3qbegt6wX96E3qrei96mX96E3qreg96nX96A3qreht6qX96A3q7egt6oJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnRC9NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/eid6GfN6J3oovLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAn3oneiicgPT09IGlucHV0O1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn3onehic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn3oneiic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW96J3qjeh96m3oveql0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1veid6n3ovept6J3qddIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW96H3qjeh96w3pTerF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb3orep96H3qjejN6q3ojeqF0gZGRkZCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ96M3qzeg96t3o7ept6H3qggJXMnLFxuICAgICAgICAgICAgcGFzdDogJ96G3qreg96o3oLesCAlcycsXG4gICAgICAgICAgICBzOiAn3pDeqN6G3qregt6w3ozeqt6G3q7ehd6s3ofesCcsXG4gICAgICAgICAgICBzczogJ2QlIN6Q3qjeht6q3oLesN6M3qonLFxuICAgICAgICAgICAgbTogJ96J3qjegt6o3pPerN6H3rAnLFxuICAgICAgICAgICAgbW06ICfeid6o3oLeqN6T3qogJWQnLFxuICAgICAgICAgICAgaDogJ96O3qbekd6o3ofeqN6D3qzeh96wJyxcbiAgICAgICAgICAgIGhoOiAn3o7ept6R3qjeh96o3oPeqiAlZCcsXG4gICAgICAgICAgICBkOiAn3oveqt6I3qbegN6s3ofesCcsXG4gICAgICAgICAgICBkZDogJ96L3qreiN6m3pDesCAlZCcsXG4gICAgICAgICAgICBNOiAn3onept6A3qzeh96wJyxcbiAgICAgICAgICAgIE1NOiAn3onept6Q3rAgJWQnLFxuICAgICAgICAgICAgeTogJ96H3qbegN6m3oPerN6H3rAnLFxuICAgICAgICAgICAgeXk6ICfeh96m3oDept6D3qogJWQnLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogNywgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDEyLCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxMnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGR2O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEdyZWVrIFtlbF1cbi8vISBhdXRob3IgOiBBZ2dlbG9zIEthcmFsaWFzIDogaHR0cHM6Ly9naXRodWIuY29tL21laGllbFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gaXNGdW5jdGlvbihpbnB1dCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKHR5cGVvZiBGdW5jdGlvbiAhPT0gJ3VuZGVmaW5lZCcgJiYgaW5wdXQgaW5zdGFuY2VvZiBGdW5jdGlvbikgfHxcbiAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB2YXIgZWwgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbCcsIHtcbiAgICAgICAgbW9udGhzTm9taW5hdGl2ZUVsOlxuICAgICAgICAgICAgJ86ZzrHOvc6/z4XOrM+BzrnOv8+CX86mzrXOss+Bzr/Phc6sz4HOuc6/z4JfzpzOrM+Bz4TOuc6/z4JfzpHPgM+Bzq/Ou865zr/Pgl/OnM6szrnOv8+CX86Zzr/Pjc69zrnOv8+CX86Zzr/Pjc67zrnOv8+CX86Rz43Os86/z4XPg8+Ezr/Pgl/Oo861z4DPhM6tzrzOss+BzrnOv8+CX86fzrrPhM+OzrLPgc65zr/Pgl/Onc6/zq3OvM6yz4HOuc6/z4JfzpTOtc66zq3OvM6yz4HOuc6/z4InLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzR2VuaXRpdmVFbDpcbiAgICAgICAgICAgICfOmc6xzr3Ov8+FzrHPgc6vzr/PhV/Ops61zrLPgc6/z4XOsc+Bzq/Ov8+FX86czrHPgc+Ezq/Ov8+FX86Rz4DPgc65zrvOr86/z4VfzpzOsc6Qzr/PhV/Omc6/z4XOvc6vzr/PhV/Omc6/z4XOu86vzr/PhV/Okc+FzrPOv8+Nz4PPhM6/z4VfzqPOtc+Az4TOtc68zrLPgc6vzr/PhV/On866z4TPic6yz4HOr86/z4Vfzp3Ov861zrzOss+Bzq/Ov8+FX86UzrXOus61zrzOss+Bzq/Ov8+FJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoczogZnVuY3Rpb24gKG1vbWVudFRvRm9ybWF0LCBmb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghbW9tZW50VG9Gb3JtYXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzTm9taW5hdGl2ZUVsO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICB0eXBlb2YgZm9ybWF0ID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgICAgIC9ELy50ZXN0KGZvcm1hdC5zdWJzdHJpbmcoMCwgZm9ybWF0LmluZGV4T2YoJ01NTU0nKSkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAvLyBpZiB0aGVyZSBpcyBhIGRheSBudW1iZXIgYmVmb3JlICdNTU1NJ1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNHZW5pdGl2ZUVsW21vbWVudFRvRm9ybWF0Lm1vbnRoKCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzTm9taW5hdGl2ZUVsW21vbWVudFRvRm9ybWF0Lm1vbnRoKCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydDogJ86ZzrHOvV/Ops61zrJfzpzOsc+BX86Rz4DPgV/OnM6xz4pfzpnOv8+Fzr1fzpnOv8+FzrtfzpHPhc6zX86jzrXPgF/On866z4Rfzp3Ov861X86UzrXOuicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICfOms+Fz4HOuc6xzrrOrl/OlM61z4XPhM6tz4HOsV/OpM+Bzq/PhM63X86kzrXPhM6sz4HPhM63X86gzq3OvM+Az4TOt1/OoM6xz4HOsc+DzrrOtc+Fzq5fzqPOrM6yzrLOsc+Ezr8nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfOms+Fz4FfzpTOtc+FX86kz4HOuV/OpM61z4RfzqDOtc68X86gzrHPgV/Oo86xzrInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnzprPhV/OlM61X86kz4FfzqTOtV/OoM61X86gzrFfzqPOsScuc3BsaXQoJ18nKSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzID4gMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICfOvM68JyA6ICfOnM6cJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnz4DOvCcgOiAnzqDOnCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIChpbnB1dCArICcnKS50b0xvd2VyQ2FzZSgpWzBdID09PSAnzrwnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvW86gzpxdXFwuP86cP1xcLj8vaSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUzogJ2g6bW06c3MgQScsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXJFbDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vOo86uzrzOtc+BzrEge31dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbzpHPjc+BzrnOvyB7fV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFt7fV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vOp864zrXPgiB7fV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbz4TOvyDPgM+Bzr/Ot86zzr/Pjc68zrXOvc6/XSBkZGRkIFt7fV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbz4TOt869IM+Az4HOv863zrPOv8+NzrzOtc69zrddIGRkZGQgW3t9XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiBmdW5jdGlvbiAoa2V5LCBtb20pIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPSB0aGlzLl9jYWxlbmRhckVsW2tleV0sXG4gICAgICAgICAgICAgICAgaG91cnMgPSBtb20gJiYgbW9tLmhvdXJzKCk7XG4gICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihvdXRwdXQpKSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0LmFwcGx5KG1vbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb3V0cHV0LnJlcGxhY2UoJ3t9JywgaG91cnMgJSAxMiA9PT0gMSA/ICfPg8+EzrcnIDogJ8+Dz4TOuc+CJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnz4POtSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgz4DPgc65zr0nLFxuICAgICAgICAgICAgczogJ867zq/Os86xIM60zrXPhc+EzrXPgc+MzrvOtc+Az4TOsScsXG4gICAgICAgICAgICBzczogJyVkIM60zrXPhc+EzrXPgc+MzrvOtc+Az4TOsScsXG4gICAgICAgICAgICBtOiAnzq3Ovc6xIM67zrXPgM+Ez4wnLFxuICAgICAgICAgICAgbW06ICclZCDOu861z4DPhM6sJyxcbiAgICAgICAgICAgIGg6ICfOvM6vzrEgz47Pgc6xJyxcbiAgICAgICAgICAgIGhoOiAnJWQgz47Pgc61z4InLFxuICAgICAgICAgICAgZDogJ868zq/OsSDOvM6tz4HOsScsXG4gICAgICAgICAgICBkZDogJyVkIM68zq3Pgc61z4InLFxuICAgICAgICAgICAgTTogJ86tzr3Osc+CIM68zq7Ovc6xz4InLFxuICAgICAgICAgICAgTU06ICclZCDOvM6uzr3Otc+CJyxcbiAgICAgICAgICAgIHk6ICfOrc69zrHPgiDPh8+Bz4zOvc6/z4InLFxuICAgICAgICAgICAgeXk6ICclZCDPh8+Bz4zOvc65zrEnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3Oty8sXG4gICAgICAgIG9yZGluYWw6ICclZM63JyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHN0IGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVsO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEVuZ2xpc2ggKEF1c3RyYWxpYSkgW2VuLWF1XVxuLy8hIGF1dGhvciA6IEphcmVkIE1vcnNlIDogaHR0cHM6Ly9naXRodWIuY29tL2phcmNvYWxcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBlbkF1ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZW4tYXUnLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ2g6bW0gQScsXG4gICAgICAgICAgICBMVFM6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGFnbycsXG4gICAgICAgICAgICBzOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZHMnLFxuICAgICAgICAgICAgbTogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQ6ICdhIGRheScsXG4gICAgICAgICAgICBkZDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTTogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU06ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeTogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eTogJyVkIHllYXJzJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgICAgfn4oKG51bWJlciAlIDEwMCkgLyAxMCkgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVuQXU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRW5nbGlzaCAoQ2FuYWRhKSBbZW4tY2FdXG4vLyEgYXV0aG9yIDogSm9uYXRoYW4gQWJvdXJiaWggOiBodHRwczovL2dpdGh1Yi5jb20vam9uYmNhXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZW5DYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLWNhJywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEw6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIExMOiAnTU1NTSBELCBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ01NTU0gRCwgWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIE1NTU0gRCwgWVlZWSBoOm1tIEEnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tUb2RheSBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tUb21vcnJvdyBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tZZXN0ZXJkYXkgYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW0xhc3RdIGRkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBhZ28nLFxuICAgICAgICAgICAgczogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgICAgIG06ICdhIG1pbnV0ZScsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaDogJ2FuIGhvdXInLFxuICAgICAgICAgICAgaGg6ICclZCBob3VycycsXG4gICAgICAgICAgICBkOiAnYSBkYXknLFxuICAgICAgICAgICAgZGQ6ICclZCBkYXlzJyxcbiAgICAgICAgICAgIE06ICdhIG1vbnRoJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbW9udGhzJyxcbiAgICAgICAgICAgIHk6ICdhIHllYXInLFxuICAgICAgICAgICAgeXk6ICclZCB5ZWFycycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdHxuZHxyZHx0aCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9XG4gICAgICAgICAgICAgICAgICAgIH5+KChudW1iZXIgJSAxMDApIC8gMTApID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICd0aCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnc3QnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ25kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAzXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdyZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW5DYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBFbmdsaXNoIChVbml0ZWQgS2luZ2RvbSkgW2VuLWdiXVxuLy8hIGF1dGhvciA6IENocmlzIEdlZHJpbSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc2dlZHJpbVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGVuR2IgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbi1nYicsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tUb2RheSBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tUb21vcnJvdyBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tZZXN0ZXJkYXkgYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW0xhc3RdIGRkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBhZ28nLFxuICAgICAgICAgICAgczogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgICAgIG06ICdhIG1pbnV0ZScsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaDogJ2FuIGhvdXInLFxuICAgICAgICAgICAgaGg6ICclZCBob3VycycsXG4gICAgICAgICAgICBkOiAnYSBkYXknLFxuICAgICAgICAgICAgZGQ6ICclZCBkYXlzJyxcbiAgICAgICAgICAgIE06ICdhIG1vbnRoJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbW9udGhzJyxcbiAgICAgICAgICAgIHk6ICdhIHllYXInLFxuICAgICAgICAgICAgeXk6ICclZCB5ZWFycycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdHxuZHxyZHx0aCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9XG4gICAgICAgICAgICAgICAgICAgIH5+KChudW1iZXIgJSAxMDApIC8gMTApID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICd0aCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnc3QnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ25kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAzXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdyZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBlbkdiO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEVuZ2xpc2ggKElyZWxhbmQpIFtlbi1pZV1cbi8vISBhdXRob3IgOiBDaHJpcyBDYXJ0bGlkZ2UgOiBodHRwczovL2dpdGh1Yi5jb20vY2hyaXNjYXJ0bGlkZ2VcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBlbkllID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZW4taWUnLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tUb2RheSBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tUb21vcnJvdyBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tZZXN0ZXJkYXkgYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW0xhc3RdIGRkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBhZ28nLFxuICAgICAgICAgICAgczogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgICAgIG06ICdhIG1pbnV0ZScsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaDogJ2FuIGhvdXInLFxuICAgICAgICAgICAgaGg6ICclZCBob3VycycsXG4gICAgICAgICAgICBkOiAnYSBkYXknLFxuICAgICAgICAgICAgZGQ6ICclZCBkYXlzJyxcbiAgICAgICAgICAgIE06ICdhIG1vbnRoJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbW9udGhzJyxcbiAgICAgICAgICAgIHk6ICdhIHllYXInLFxuICAgICAgICAgICAgeXk6ICclZCB5ZWFycycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdHxuZHxyZHx0aCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9XG4gICAgICAgICAgICAgICAgICAgIH5+KChudW1iZXIgJSAxMDApIC8gMTApID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICd0aCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnc3QnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ25kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAzXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdyZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBlbkllO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEVuZ2xpc2ggKElzcmFlbCkgW2VuLWlsXVxuLy8hIGF1dGhvciA6IENocmlzIEdlZHJpbSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc2dlZHJpbVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGVuSWwgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbi1pbCcsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tUb2RheSBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tUb21vcnJvdyBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tZZXN0ZXJkYXkgYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW0xhc3RdIGRkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBhZ28nLFxuICAgICAgICAgICAgczogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgICAgIG06ICdhIG1pbnV0ZScsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaDogJ2FuIGhvdXInLFxuICAgICAgICAgICAgaGg6ICclZCBob3VycycsXG4gICAgICAgICAgICBkOiAnYSBkYXknLFxuICAgICAgICAgICAgZGQ6ICclZCBkYXlzJyxcbiAgICAgICAgICAgIE06ICdhIG1vbnRoJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbW9udGhzJyxcbiAgICAgICAgICAgIHk6ICdhIHllYXInLFxuICAgICAgICAgICAgeXk6ICclZCB5ZWFycycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdHxuZHxyZHx0aCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9XG4gICAgICAgICAgICAgICAgICAgIH5+KChudW1iZXIgJSAxMDApIC8gMTApID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICd0aCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnc3QnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ25kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAzXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdyZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW5JbDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBFbmdsaXNoIChJbmRpYSkgW2VuLWluXVxuLy8hIGF1dGhvciA6IEphdGluIEFncmF3YWwgOiBodHRwczovL2dpdGh1Yi5jb20vamF0aW5hZzIyXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZW5JbiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLWluJywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tUb2RheSBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tUb21vcnJvdyBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tZZXN0ZXJkYXkgYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW0xhc3RdIGRkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBhZ28nLFxuICAgICAgICAgICAgczogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgICAgIG06ICdhIG1pbnV0ZScsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaDogJ2FuIGhvdXInLFxuICAgICAgICAgICAgaGg6ICclZCBob3VycycsXG4gICAgICAgICAgICBkOiAnYSBkYXknLFxuICAgICAgICAgICAgZGQ6ICclZCBkYXlzJyxcbiAgICAgICAgICAgIE06ICdhIG1vbnRoJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbW9udGhzJyxcbiAgICAgICAgICAgIHk6ICdhIHllYXInLFxuICAgICAgICAgICAgeXk6ICclZCB5ZWFycycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdHxuZHxyZHx0aCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9XG4gICAgICAgICAgICAgICAgICAgIH5+KChudW1iZXIgJSAxMDApIC8gMTApID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICd0aCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnc3QnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ25kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAzXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdyZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDFzdCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBlbkluO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEVuZ2xpc2ggKE5ldyBaZWFsYW5kKSBbZW4tbnpdXG4vLyEgYXV0aG9yIDogTHVrZSBNY0dyZWdvciA6IGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlbWNncmVnb3JcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBlbk56ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZW4tbnonLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ2g6bW0gQScsXG4gICAgICAgICAgICBMVFM6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGFnbycsXG4gICAgICAgICAgICBzOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZHMnLFxuICAgICAgICAgICAgbTogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQ6ICdhIGRheScsXG4gICAgICAgICAgICBkZDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTTogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU06ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeTogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eTogJyVkIHllYXJzJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgICAgfn4oKG51bWJlciAlIDEwMCkgLyAxMCkgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVuTno7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRW5nbGlzaCAoU2luZ2Fwb3JlKSBbZW4tc2ddXG4vLyEgYXV0aG9yIDogTWF0dGhldyBDYXN0cmlsbG9uLU1hZHJpZ2FsIDogaHR0cHM6Ly9naXRodWIuY29tL3RlY2hkaW1lbnNpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBlblNnID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZW4tc2cnLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgYWdvJyxcbiAgICAgICAgICAgIHM6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vjb25kcycsXG4gICAgICAgICAgICBtOiAnYSBtaW51dGUnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGg6ICdhbiBob3VyJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG91cnMnLFxuICAgICAgICAgICAgZDogJ2EgZGF5JyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGF5cycsXG4gICAgICAgICAgICBNOiAnYSBtb250aCcsXG4gICAgICAgICAgICBNTTogJyVkIG1vbnRocycsXG4gICAgICAgICAgICB5OiAnYSB5ZWFyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgeWVhcnMnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPVxuICAgICAgICAgICAgICAgICAgICB+figobnVtYmVyICUgMTAwKSAvIDEwKSA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAndGgnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3N0J1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAyXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICduZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gM1xuICAgICAgICAgICAgICAgICAgICAgICAgPyAncmQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW5TZztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBFc3BlcmFudG8gW2VvXVxuLy8hIGF1dGhvciA6IENvbGluIERlYW4gOiBodHRwczovL2dpdGh1Yi5jb20vY29saW5kZWFuXG4vLyEgYXV0aG9yIDogTWlhIE5vcmRlbnRvZnQgSW1wZXJhdG9yaSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWVzdGFzbWlhXG4vLyEgY29tbWVudCA6IG1pZXN0YXNtaWEgY29ycmVjdGVkIHRoZSB0cmFuc2xhdGlvbiBieSBjb2xpbmRlYW5cbi8vISBjb21tZW50IDogVml2YWt2byBjb3JyZWN0ZWQgdGhlIHRyYW5zbGF0aW9uIGJ5IGNvbGluZGVhbiBhbmQgbWllc3Rhc21pYVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGVvID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZW8nLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnVhcm9fZmVicnVhcm9fbWFydG9fYXByaWxvX21ham9fanVuaW9fanVsaW9fYcWtZ3VzdG9fc2VwdGVtYnJvX29rdG9icm9fbm92ZW1icm9fZGVjZW1icm8nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnamFuX2ZlYl9tYXJ0X2Fwcl9tYWpfanVuX2p1bF9hxa1nX3NlcHRfb2t0X25vdl9kZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnZGltYW7EiW9fbHVuZG9fbWFyZG9fbWVya3JlZG9fxLVhxa1kb192ZW5kcmVkb19zYWJhdG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdkaW1fbHVuX21hcmRfbWVya1/EtWHFrV92ZW5fc2FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2RpX2x1X21hX21lX8S1YV92ZV9zYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgTEw6ICdbbGFdIERbLWFuIGRlXSBNTU1NLCBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ1tsYV0gRFstYW4gZGVdIE1NTU0sIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGRbbl0sIFtsYV0gRFstYW4gZGVdIE1NTU0sIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgbGxsbDogJ2RkZCwgW2xhXSBEWy1hbiBkZV0gTU1NLCBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL1thcF1cXC50XFwubS9pLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dC5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSA9PT0gJ3AnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPiAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ3AudC5tLicgOiAnUC5ULk0uJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnYS50Lm0uJyA6ICdBLlQuTS4nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tIb2RpYcWtIGplXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW01vcmdhxa0gamVdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZFtuIGplXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0hpZXJhxa0gamVdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW3Bhc2ludGFuXSBkZGRkW24gamVdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAncG9zdCAlcycsXG4gICAgICAgICAgICBwYXN0OiAnYW50YcWtICVzJyxcbiAgICAgICAgICAgIHM6ICdrZWxrYWogc2VrdW5kb2onLFxuICAgICAgICAgICAgc3M6ICclZCBzZWt1bmRvaicsXG4gICAgICAgICAgICBtOiAndW51IG1pbnV0bycsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0b2onLFxuICAgICAgICAgICAgaDogJ3VudSBob3JvJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG9yb2onLFxuICAgICAgICAgICAgZDogJ3VudSB0YWdvJywgLy9uZSAnZGl1cm5vJywgxIlhciBlc3RhcyB1eml0YSBwb3IgcHJva3NpbXVtb1xuICAgICAgICAgICAgZGQ6ICclZCB0YWdvaicsXG4gICAgICAgICAgICBNOiAndW51IG1vbmF0bycsXG4gICAgICAgICAgICBNTTogJyVkIG1vbmF0b2onLFxuICAgICAgICAgICAgeTogJ3VudSBqYXJvJyxcbiAgICAgICAgICAgIHl5OiAnJWQgamFyb2onLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1hLyxcbiAgICAgICAgb3JkaW5hbDogJyVkYScsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBlbztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBTcGFuaXNoIChEb21pbmljYW4gUmVwdWJsaWMpIFtlcy1kb11cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtb250aHNTaG9ydERvdCA9XG4gICAgICAgICAgICAnZW5lLl9mZWIuX21hci5fYWJyLl9tYXkuX2p1bi5fanVsLl9hZ28uX3NlcC5fb2N0Ll9ub3YuX2RpYy4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQgPSAnZW5lX2ZlYl9tYXJfYWJyX21heV9qdW5fanVsX2Fnb19zZXBfb2N0X25vdl9kaWMnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlID0gW1xuICAgICAgICAgICAgL15lbmUvaSxcbiAgICAgICAgICAgIC9eZmViL2ksXG4gICAgICAgICAgICAvXm1hci9pLFxuICAgICAgICAgICAgL15hYnIvaSxcbiAgICAgICAgICAgIC9ebWF5L2ksXG4gICAgICAgICAgICAvXmp1bi9pLFxuICAgICAgICAgICAgL15qdWwvaSxcbiAgICAgICAgICAgIC9eYWdvL2ksXG4gICAgICAgICAgICAvXnNlcC9pLFxuICAgICAgICAgICAgL15vY3QvaSxcbiAgICAgICAgICAgIC9ebm92L2ksXG4gICAgICAgICAgICAvXmRpYy9pLFxuICAgICAgICBdLFxuICAgICAgICBtb250aHNSZWdleCA9XG4gICAgICAgICAgICAvXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlfGVuZVxcLj98ZmViXFwuP3xtYXJcXC4/fGFiclxcLj98bWF5XFwuP3xqdW5cXC4/fGp1bFxcLj98YWdvXFwuP3xzZXBcXC4/fG9jdFxcLj98bm92XFwuP3xkaWNcXC4/KS9pO1xuXG4gICAgdmFyIGVzRG8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlcy1kbycsIHtcbiAgICAgICAgbW9udGhzOiAnZW5lcm9fZmVicmVyb19tYXJ6b19hYnJpbF9tYXlvX2p1bmlvX2p1bGlvX2Fnb3N0b19zZXB0aWVtYnJlX29jdHVicmVfbm92aWVtYnJlX2RpY2llbWJyZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6IGZ1bmN0aW9uIChtLCBmb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydERvdDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoLy1NTU0tLy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0RG90W20ubW9udGgoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1JlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU2hvcnRSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4OlxuICAgICAgICAgICAgL14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZSkvaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDpcbiAgICAgICAgICAgIC9eKGVuZVxcLj98ZmViXFwuP3xtYXJcXC4/fGFiclxcLj98bWF5XFwuP3xqdW5cXC4/fGp1bFxcLj98YWdvXFwuP3xzZXBcXC4/fG9jdFxcLj98bm92XFwuP3xkaWNcXC4/KS9pLFxuICAgICAgICBtb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICB3ZWVrZGF5czogJ2RvbWluZ29fbHVuZXNfbWFydGVzX21pw6lyY29sZXNfanVldmVzX3ZpZXJuZXNfc8OhYmFkbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2RvbS5fbHVuLl9tYXIuX21pw6kuX2p1ZS5fdmllLl9zw6FiLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdkb19sdV9tYV9taV9qdV92aV9zw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUzogJ2g6bW06c3MgQScsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgaDptbSBBJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tob3kgYSBsYScgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHREYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1ttYcOxYW5hIGEgbGEnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBbYSBsYScgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1theWVyIGEgbGEnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICdbZWxdIGRkZGQgW3Bhc2FkbyBhIGxhJyArXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgICAnXSBMVCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnZW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJ2hhY2UgJXMnLFxuICAgICAgICAgICAgczogJ3Vub3Mgc2VndW5kb3MnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWd1bmRvcycsXG4gICAgICAgICAgICBtOiAndW4gbWludXRvJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRvcycsXG4gICAgICAgICAgICBoOiAndW5hIGhvcmEnLFxuICAgICAgICAgICAgaGg6ICclZCBob3JhcycsXG4gICAgICAgICAgICBkOiAndW4gZMOtYScsXG4gICAgICAgICAgICBkZDogJyVkIGTDrWFzJyxcbiAgICAgICAgICAgIHc6ICd1bmEgc2VtYW5hJyxcbiAgICAgICAgICAgIHd3OiAnJWQgc2VtYW5hcycsXG4gICAgICAgICAgICBNOiAndW4gbWVzJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWVzZXMnLFxuICAgICAgICAgICAgeTogJ3VuIGHDsW8nLFxuICAgICAgICAgICAgeXk6ICclZCBhw7FvcycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbDogJyVkwronLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZXNEbztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBTcGFuaXNoIChNZXhpY28pIFtlcy1teF1cbi8vISBhdXRob3IgOiBKQyBGcmFuY28gOiBodHRwczovL2dpdGh1Yi5jb20vamNmcmFuY29cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtb250aHNTaG9ydERvdCA9XG4gICAgICAgICAgICAnZW5lLl9mZWIuX21hci5fYWJyLl9tYXkuX2p1bi5fanVsLl9hZ28uX3NlcC5fb2N0Ll9ub3YuX2RpYy4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQgPSAnZW5lX2ZlYl9tYXJfYWJyX21heV9qdW5fanVsX2Fnb19zZXBfb2N0X25vdl9kaWMnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlID0gW1xuICAgICAgICAgICAgL15lbmUvaSxcbiAgICAgICAgICAgIC9eZmViL2ksXG4gICAgICAgICAgICAvXm1hci9pLFxuICAgICAgICAgICAgL15hYnIvaSxcbiAgICAgICAgICAgIC9ebWF5L2ksXG4gICAgICAgICAgICAvXmp1bi9pLFxuICAgICAgICAgICAgL15qdWwvaSxcbiAgICAgICAgICAgIC9eYWdvL2ksXG4gICAgICAgICAgICAvXnNlcC9pLFxuICAgICAgICAgICAgL15vY3QvaSxcbiAgICAgICAgICAgIC9ebm92L2ksXG4gICAgICAgICAgICAvXmRpYy9pLFxuICAgICAgICBdLFxuICAgICAgICBtb250aHNSZWdleCA9XG4gICAgICAgICAgICAvXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlfGVuZVxcLj98ZmViXFwuP3xtYXJcXC4/fGFiclxcLj98bWF5XFwuP3xqdW5cXC4/fGp1bFxcLj98YWdvXFwuP3xzZXBcXC4/fG9jdFxcLj98bm92XFwuP3xkaWNcXC4/KS9pO1xuXG4gICAgdmFyIGVzTXggPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlcy1teCcsIHtcbiAgICAgICAgbW9udGhzOiAnZW5lcm9fZmVicmVyb19tYXJ6b19hYnJpbF9tYXlvX2p1bmlvX2p1bGlvX2Fnb3N0b19zZXB0aWVtYnJlX29jdHVicmVfbm92aWVtYnJlX2RpY2llbWJyZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6IGZ1bmN0aW9uIChtLCBmb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydERvdDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoLy1NTU0tLy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0RG90W20ubW9udGgoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1JlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU2hvcnRSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4OlxuICAgICAgICAgICAgL14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZSkvaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDpcbiAgICAgICAgICAgIC9eKGVuZVxcLj98ZmViXFwuP3xtYXJcXC4/fGFiclxcLj98bWF5XFwuP3xqdW5cXC4/fGp1bFxcLj98YWdvXFwuP3xzZXBcXC4/fG9jdFxcLj98bm92XFwuP3xkaWNcXC4/KS9pLFxuICAgICAgICBtb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICB3ZWVrZGF5czogJ2RvbWluZ29fbHVuZXNfbWFydGVzX21pw6lyY29sZXNfanVldmVzX3ZpZXJuZXNfc8OhYmFkbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2RvbS5fbHVuLl9tYXIuX21pw6kuX2p1ZS5fdmllLl9zw6FiLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdkb19sdV9tYV9taV9qdV92aV9zw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbaG95IGEgbGEnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0RGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbbWHDsWFuYSBhIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RkZGQgW2EgbGEnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbYXllciBhIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAnW2VsXSBkZGRkIFtwYXNhZG8gYSBsYScgK1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICtcbiAgICAgICAgICAgICAgICAgICAgJ10gTFQnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2VuICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdoYWNlICVzJyxcbiAgICAgICAgICAgIHM6ICd1bm9zIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VndW5kb3MnLFxuICAgICAgICAgICAgbTogJ3VuIG1pbnV0bycsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0b3MnLFxuICAgICAgICAgICAgaDogJ3VuYSBob3JhJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG9yYXMnLFxuICAgICAgICAgICAgZDogJ3VuIGTDrWEnLFxuICAgICAgICAgICAgZGQ6ICclZCBkw61hcycsXG4gICAgICAgICAgICB3OiAndW5hIHNlbWFuYScsXG4gICAgICAgICAgICB3dzogJyVkIHNlbWFuYXMnLFxuICAgICAgICAgICAgTTogJ3VuIG1lcycsXG4gICAgICAgICAgICBNTTogJyVkIG1lc2VzJyxcbiAgICAgICAgICAgIHk6ICd1biBhw7FvJyxcbiAgICAgICAgICAgIHl5OiAnJWQgYcOxb3MnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWw6ICclZMK6JyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgICAgICBpbnZhbGlkRGF0ZTogJ0ZlY2hhIGludsOhbGlkYScsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZXNNeDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBTcGFuaXNoIChVbml0ZWQgU3RhdGVzKSBbZXMtdXNdXG4vLyEgYXV0aG9yIDogYnVzdHRhIDogaHR0cHM6Ly9naXRodWIuY29tL2J1c3R0YVxuLy8hIGF1dGhvciA6IGNocmlzcm9keiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3JvZHpcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtb250aHNTaG9ydERvdCA9XG4gICAgICAgICAgICAnZW5lLl9mZWIuX21hci5fYWJyLl9tYXkuX2p1bi5fanVsLl9hZ28uX3NlcC5fb2N0Ll9ub3YuX2RpYy4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQgPSAnZW5lX2ZlYl9tYXJfYWJyX21heV9qdW5fanVsX2Fnb19zZXBfb2N0X25vdl9kaWMnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlID0gW1xuICAgICAgICAgICAgL15lbmUvaSxcbiAgICAgICAgICAgIC9eZmViL2ksXG4gICAgICAgICAgICAvXm1hci9pLFxuICAgICAgICAgICAgL15hYnIvaSxcbiAgICAgICAgICAgIC9ebWF5L2ksXG4gICAgICAgICAgICAvXmp1bi9pLFxuICAgICAgICAgICAgL15qdWwvaSxcbiAgICAgICAgICAgIC9eYWdvL2ksXG4gICAgICAgICAgICAvXnNlcC9pLFxuICAgICAgICAgICAgL15vY3QvaSxcbiAgICAgICAgICAgIC9ebm92L2ksXG4gICAgICAgICAgICAvXmRpYy9pLFxuICAgICAgICBdLFxuICAgICAgICBtb250aHNSZWdleCA9XG4gICAgICAgICAgICAvXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlfGVuZVxcLj98ZmViXFwuP3xtYXJcXC4/fGFiclxcLj98bWF5XFwuP3xqdW5cXC4/fGp1bFxcLj98YWdvXFwuP3xzZXBcXC4/fG9jdFxcLj98bm92XFwuP3xkaWNcXC4/KS9pO1xuXG4gICAgdmFyIGVzVXMgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlcy11cycsIHtcbiAgICAgICAgbW9udGhzOiAnZW5lcm9fZmVicmVyb19tYXJ6b19hYnJpbF9tYXlvX2p1bmlvX2p1bGlvX2Fnb3N0b19zZXB0aWVtYnJlX29jdHVicmVfbm92aWVtYnJlX2RpY2llbWJyZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6IGZ1bmN0aW9uIChtLCBmb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydERvdDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoLy1NTU0tLy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0RG90W20ubW9udGgoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1JlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU2hvcnRSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4OlxuICAgICAgICAgICAgL14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZSkvaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDpcbiAgICAgICAgICAgIC9eKGVuZVxcLj98ZmViXFwuP3xtYXJcXC4/fGFiclxcLj98bWF5XFwuP3xqdW5cXC4/fGp1bFxcLj98YWdvXFwuP3xzZXBcXC4/fG9jdFxcLj98bm92XFwuP3xkaWNcXC4/KS9pLFxuICAgICAgICBtb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICB3ZWVrZGF5czogJ2RvbWluZ29fbHVuZXNfbWFydGVzX21pw6lyY29sZXNfanVldmVzX3ZpZXJuZXNfc8OhYmFkbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2RvbS5fbHVuLl9tYXIuX21pw6kuX2p1ZS5fdmllLl9zw6FiLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdkb19sdV9tYV9taV9qdV92aV9zw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUzogJ2g6bW06c3MgQScsXG4gICAgICAgICAgICBMOiAnTU0vREQvWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgaDptbSBBJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tob3kgYSBsYScgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHREYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1ttYcOxYW5hIGEgbGEnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBbYSBsYScgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1theWVyIGEgbGEnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICdbZWxdIGRkZGQgW3Bhc2FkbyBhIGxhJyArXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgICAnXSBMVCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnZW4gJXMnLFxuICAgICAgICAgICAgcGFzdDogJ2hhY2UgJXMnLFxuICAgICAgICAgICAgczogJ3Vub3Mgc2VndW5kb3MnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWd1bmRvcycsXG4gICAgICAgICAgICBtOiAndW4gbWludXRvJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRvcycsXG4gICAgICAgICAgICBoOiAndW5hIGhvcmEnLFxuICAgICAgICAgICAgaGg6ICclZCBob3JhcycsXG4gICAgICAgICAgICBkOiAndW4gZMOtYScsXG4gICAgICAgICAgICBkZDogJyVkIGTDrWFzJyxcbiAgICAgICAgICAgIHc6ICd1bmEgc2VtYW5hJyxcbiAgICAgICAgICAgIHd3OiAnJWQgc2VtYW5hcycsXG4gICAgICAgICAgICBNOiAndW4gbWVzJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWVzZXMnLFxuICAgICAgICAgICAgeTogJ3VuIGHDsW8nLFxuICAgICAgICAgICAgeXk6ICclZCBhw7FvcycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbDogJyVkwronLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZXNVcztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBTcGFuaXNoIFtlc11cbi8vISBhdXRob3IgOiBKdWxpbyBOYXB1csOtIDogaHR0cHM6Ly9naXRodWIuY29tL2p1bGlvbmNcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtb250aHNTaG9ydERvdCA9XG4gICAgICAgICAgICAnZW5lLl9mZWIuX21hci5fYWJyLl9tYXkuX2p1bi5fanVsLl9hZ28uX3NlcC5fb2N0Ll9ub3YuX2RpYy4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQgPSAnZW5lX2ZlYl9tYXJfYWJyX21heV9qdW5fanVsX2Fnb19zZXBfb2N0X25vdl9kaWMnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlID0gW1xuICAgICAgICAgICAgL15lbmUvaSxcbiAgICAgICAgICAgIC9eZmViL2ksXG4gICAgICAgICAgICAvXm1hci9pLFxuICAgICAgICAgICAgL15hYnIvaSxcbiAgICAgICAgICAgIC9ebWF5L2ksXG4gICAgICAgICAgICAvXmp1bi9pLFxuICAgICAgICAgICAgL15qdWwvaSxcbiAgICAgICAgICAgIC9eYWdvL2ksXG4gICAgICAgICAgICAvXnNlcC9pLFxuICAgICAgICAgICAgL15vY3QvaSxcbiAgICAgICAgICAgIC9ebm92L2ksXG4gICAgICAgICAgICAvXmRpYy9pLFxuICAgICAgICBdLFxuICAgICAgICBtb250aHNSZWdleCA9XG4gICAgICAgICAgICAvXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlfGVuZVxcLj98ZmViXFwuP3xtYXJcXC4/fGFiclxcLj98bWF5XFwuP3xqdW5cXC4/fGp1bFxcLj98YWdvXFwuP3xzZXBcXC4/fG9jdFxcLj98bm92XFwuP3xkaWNcXC4/KS9pO1xuXG4gICAgdmFyIGVzID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZXMnLCB7XG4gICAgICAgIG1vbnRoczogJ2VuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1icmUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiBmdW5jdGlvbiAobSwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnREb3Q7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKC8tTU1NLS8udGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0W20ubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydERvdFttLm1vbnRoKCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb250aHNSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDpcbiAgICAgICAgICAgIC9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmUpL2ksXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6XG4gICAgICAgICAgICAvXihlbmVcXC4/fGZlYlxcLj98bWFyXFwuP3xhYnJcXC4/fG1heVxcLj98anVuXFwuP3xqdWxcXC4/fGFnb1xcLj98c2VwXFwuP3xvY3RcXC4/fG5vdlxcLj98ZGljXFwuPykvaSxcbiAgICAgICAgbW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBsb25nTW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBzaG9ydE1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgd2Vla2RheXM6ICdkb21pbmdvX2x1bmVzX21hcnRlc19tacOpcmNvbGVzX2p1ZXZlc192aWVybmVzX3PDoWJhZG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdkb20uX2x1bi5fbWFyLl9tacOpLl9qdWUuX3ZpZS5fc8OhYi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnZG9fbHVfbWFfbWlfanVfdmlfc8OhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2hveSBhIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dERheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW21hw7FhbmEgYSBsYScgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIFthIGxhJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2F5ZXIgYSBsYScgKyAodGhpcy5ob3VycygpICE9PSAxID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgJ1tlbF0gZGRkZCBbcGFzYWRvIGEgbGEnICtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICdzJyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAgICddIExUJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdlbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAnaGFjZSAlcycsXG4gICAgICAgICAgICBzOiAndW5vcyBzZWd1bmRvcycsXG4gICAgICAgICAgICBzczogJyVkIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIG06ICd1biBtaW51dG8nLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dG9zJyxcbiAgICAgICAgICAgIGg6ICd1bmEgaG9yYScsXG4gICAgICAgICAgICBoaDogJyVkIGhvcmFzJyxcbiAgICAgICAgICAgIGQ6ICd1biBkw61hJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZMOtYXMnLFxuICAgICAgICAgICAgdzogJ3VuYSBzZW1hbmEnLFxuICAgICAgICAgICAgd3c6ICclZCBzZW1hbmFzJyxcbiAgICAgICAgICAgIE06ICd1biBtZXMnLFxuICAgICAgICAgICAgTU06ICclZCBtZXNlcycsXG4gICAgICAgICAgICB5OiAndW4gYcOxbycsXG4gICAgICAgICAgICB5eTogJyVkIGHDsW9zJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsOiAnJWTCuicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICAgICAgaW52YWxpZERhdGU6ICdGZWNoYSBpbnbDoWxpZGEnLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVzO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEVzdG9uaWFuIFtldF1cbi8vISBhdXRob3IgOiBIZW5yeSBLZWhsbWFubiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYWRoZW5yeVxuLy8hIGltcHJvdmVtZW50cyA6IElsbGltYXIgVGFtYmVrIDogaHR0cHM6Ly9naXRodWIuY29tL3JhZ3Vsa2FcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICBzOiBbJ23DtW5lIHNla3VuZGknLCAnbcO1bmkgc2VrdW5kJywgJ3BhYXIgc2VrdW5kaXQnXSxcbiAgICAgICAgICAgIHNzOiBbbnVtYmVyICsgJ3Nla3VuZGknLCBudW1iZXIgKyAnc2VrdW5kaXQnXSxcbiAgICAgICAgICAgIG06IFsnw7xoZSBtaW51dGknLCAnw7xrcyBtaW51dCddLFxuICAgICAgICAgICAgbW06IFtudW1iZXIgKyAnIG1pbnV0aScsIG51bWJlciArICcgbWludXRpdCddLFxuICAgICAgICAgICAgaDogWyfDvGhlIHR1bm5pJywgJ3R1bmQgYWVnYScsICfDvGtzIHR1bmQnXSxcbiAgICAgICAgICAgIGhoOiBbbnVtYmVyICsgJyB0dW5uaScsIG51bWJlciArICcgdHVuZGknXSxcbiAgICAgICAgICAgIGQ6IFsnw7xoZSBww6RldmEnLCAnw7xrcyBww6RldiddLFxuICAgICAgICAgICAgTTogWydrdXUgYWphJywgJ2t1dSBhZWdhJywgJ8O8a3Mga3V1J10sXG4gICAgICAgICAgICBNTTogW251bWJlciArICcga3V1JywgbnVtYmVyICsgJyBrdXVkJ10sXG4gICAgICAgICAgICB5OiBbJ8O8aGUgYWFzdGEnLCAnYWFzdGEnLCAnw7xrcyBhYXN0YSddLFxuICAgICAgICAgICAgeXk6IFtudW1iZXIgKyAnIGFhc3RhJywgbnVtYmVyICsgJyBhYXN0YXQnXSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXRba2V5XVsyXSA/IGZvcm1hdFtrZXldWzJdIDogZm9ybWF0W2tleV1bMV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gZm9ybWF0W2tleV1bMF0gOiBmb3JtYXRba2V5XVsxXTtcbiAgICB9XG5cbiAgICB2YXIgZXQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdldCcsIHtcbiAgICAgICAgbW9udGhzOiAnamFhbnVhcl92ZWVicnVhcl9tw6RydHNfYXByaWxsX21haV9qdXVuaV9qdXVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9vYmVyX25vdmVtYmVyX2RldHNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnamFhbl92ZWVicl9tw6RydHNfYXByX21haV9qdXVuaV9qdXVsaV9hdWdfc2VwdF9va3Rfbm92X2RldHMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ3DDvGhhcMOkZXZfZXNtYXNww6Rldl90ZWlzaXDDpGV2X2tvbG1hcMOkZXZfbmVsamFww6Rldl9yZWVkZV9sYXVww6Rldicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnUF9FX1RfS19OX1JfTCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdQX0VfVF9LX05fUl9MJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbVMOkbmEsXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0hvbW1lLF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdbSsOkcmdtaW5lXSBkZGRkIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbRWlsZSxdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW0VlbG1pbmVdIGRkZGQgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyBww6RyYXN0JyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyB0YWdhc2knLFxuICAgICAgICAgICAgczogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHNzOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkOiAnJWQgcMOkZXZhJyxcbiAgICAgICAgICAgIE06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5eTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBldDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBCYXNxdWUgW2V1XVxuLy8hIGF1dGhvciA6IEVuZWtvIElsbGFycmFtZW5kaSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9laWxsYXJyYVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGV1ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZXUnLCB7XG4gICAgICAgIG1vbnRoczogJ3VydGFycmlsYV9vdHNhaWxhX21hcnR4b2FfYXBpcmlsYV9tYWlhdHphX2VrYWluYV91enRhaWxhX2FidXp0dWFfaXJhaWxhX3VycmlhX2F6YXJvYV9hYmVuZHVhJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICd1cnQuX290cy5fbWFyLl9hcGkuX21haS5fZWthLl91enQuX2FidS5faXJhLl91cnIuX2F6YS5fYWJlLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdpZ2FuZGVhX2FzdGVsZWhlbmFfYXN0ZWFydGVhX2FzdGVhemtlbmFfb3N0ZWd1bmFfb3N0aXJhbGFfbGFydW5iYXRhJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdpZy5fYWwuX2FyLl9hei5fb2cuX29sLl9sci4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnaWdfYWxfYXJfYXpfb2dfb2xfbHInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgTEw6ICdZWVlZW2tvXSBNTU1NW3Jlbl0gRFthXScsXG4gICAgICAgICAgICBMTEw6ICdZWVlZW2tvXSBNTU1NW3Jlbl0gRFthXSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgWVlZWVtrb10gTU1NTVtyZW5dIERbYV0gSEg6bW0nLFxuICAgICAgICAgICAgbDogJ1lZWVktTS1EJyxcbiAgICAgICAgICAgIGxsOiAnWVlZWVtrb10gTU1NIERbYV0nLFxuICAgICAgICAgICAgbGxsOiAnWVlZWVtrb10gTU1NIERbYV0gSEg6bW0nLFxuICAgICAgICAgICAgbGxsbDogJ2RkZCwgWVlZWVtrb10gTU1NIERbYV0gSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tnYXVyXSBMVFtldGFuXScsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2JpaGFyXSBMVFtldGFuXScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgTFRbZXRhbl0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1thdHpvXSBMVFtldGFuXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1thdXJyZWtvXSBkZGRkIExUW2V0YW5dJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMgYmFycnUnLFxuICAgICAgICAgICAgcGFzdDogJ2R1ZWxhICVzJyxcbiAgICAgICAgICAgIHM6ICdzZWd1bmRvIGJhdHp1aycsXG4gICAgICAgICAgICBzczogJyVkIHNlZ3VuZG8nLFxuICAgICAgICAgICAgbTogJ21pbnV0dSBiYXQnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dHUnLFxuICAgICAgICAgICAgaDogJ29yZHUgYmF0JyxcbiAgICAgICAgICAgIGhoOiAnJWQgb3JkdScsXG4gICAgICAgICAgICBkOiAnZWd1biBiYXQnLFxuICAgICAgICAgICAgZGQ6ICclZCBlZ3VuJyxcbiAgICAgICAgICAgIE06ICdoaWxhYmV0ZSBiYXQnLFxuICAgICAgICAgICAgTU06ICclZCBoaWxhYmV0ZScsXG4gICAgICAgICAgICB5OiAndXJ0ZSBiYXQnLFxuICAgICAgICAgICAgeXk6ICclZCB1cnRlJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBldTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBQZXJzaWFuIFtmYV1cbi8vISBhdXRob3IgOiBFYnJhaGltIEJ5YWdvd2kgOiBodHRwczovL2dpdGh1Yi5jb20vZWJyYW1pbmlvXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgMTogJ9uxJyxcbiAgICAgICAgICAgIDI6ICfbsicsXG4gICAgICAgICAgICAzOiAn27MnLFxuICAgICAgICAgICAgNDogJ9u0JyxcbiAgICAgICAgICAgIDU6ICfbtScsXG4gICAgICAgICAgICA2OiAn27YnLFxuICAgICAgICAgICAgNzogJ9u3JyxcbiAgICAgICAgICAgIDg6ICfbuCcsXG4gICAgICAgICAgICA5OiAn27knLFxuICAgICAgICAgICAgMDogJ9uwJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ9uxJzogJzEnLFxuICAgICAgICAgICAgJ9uyJzogJzInLFxuICAgICAgICAgICAgJ9uzJzogJzMnLFxuICAgICAgICAgICAgJ9u0JzogJzQnLFxuICAgICAgICAgICAgJ9u1JzogJzUnLFxuICAgICAgICAgICAgJ9u2JzogJzYnLFxuICAgICAgICAgICAgJ9u3JzogJzcnLFxuICAgICAgICAgICAgJ9u4JzogJzgnLFxuICAgICAgICAgICAgJ9u5JzogJzknLFxuICAgICAgICAgICAgJ9uwJzogJzAnLFxuICAgICAgICB9O1xuXG4gICAgdmFyIGZhID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZmEnLCB7XG4gICAgICAgIG1vbnRoczogJ9qY2KfZhtmI24zZh1/ZgdmI2LHbjNmHX9mF2KfYsdizX9ii2YjYsduM2YRf2YXZh1/amNmI2KbZhl/amNmI2KbbjNmHX9in2YjYql/Ys9m+2KrYp9mF2KjYsV/Yp9qp2KrYqNixX9mG2YjYp9mF2KjYsV/Yr9iz2KfZhdio2LEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ9qY2KfZhtmI24zZh1/ZgdmI2LHbjNmHX9mF2KfYsdizX9ii2YjYsduM2YRf2YXZh1/amNmI2KbZhl/amNmI2KbbjNmHX9in2YjYql/Ys9m+2KrYp9mF2KjYsV/Yp9qp2KrYqNixX9mG2YjYp9mF2KjYsV/Yr9iz2KfZhdio2LEnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAn24zaqVxcdTIwMGPYtNmG2KjZh1/Yr9mI2LTZhtio2Ydf2LPZh1xcdTIwMGPYtNmG2KjZh1/ahtmH2KfYsdi02YbYqNmHX9m+2YbYrFxcdTIwMGPYtNmG2KjZh1/YrNmF2LnZh1/YtNmG2KjZhycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OlxuICAgICAgICAgICAgJ9uM2qlcXHUyMDBj2LTZhtio2Ydf2K/ZiNi02YbYqNmHX9iz2YdcXHUyMDBj2LTZhtio2Ydf2obZh9in2LHYtNmG2KjZh1/ZvtmG2KxcXHUyMDBj2LTZhtio2Ydf2KzZhdi52Ydf2LTZhtio2YcnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfbjF/Yr1/Ys1/ahl/Zvl/YrF/YtCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/Zgtio2YQg2KfYsiDYuNmH2LF82KjYudivINin2LIg2LjZh9ixLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL9io2LnYryDYp9iyINi42YfYsS8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfZgtio2YQg2KfYsiDYuNmH2LEnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9io2LnYryDYp9iyINi42YfYsSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9in2YXYsdmI2LIg2LPYp9i52KpdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2YHYsdiv2Kcg2LPYp9i52KpdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LPYp9i52KpdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2K/bjNix2YjYsiDYs9in2LnYql0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvZvtuM2LRdIFvYs9in2LnYql0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfYr9ixICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDZvtuM2LQnLFxuICAgICAgICAgICAgczogJ9qG2YbYryDYq9in2YbbjNmHJyxcbiAgICAgICAgICAgIHNzOiAnJWQg2KvYp9mG24zZhycsXG4gICAgICAgICAgICBtOiAn24zaqSDYr9mC24zZgtmHJyxcbiAgICAgICAgICAgIG1tOiAnJWQg2K/ZgtuM2YLZhycsXG4gICAgICAgICAgICBoOiAn24zaqSDYs9in2LnYqicsXG4gICAgICAgICAgICBoaDogJyVkINiz2KfYudiqJyxcbiAgICAgICAgICAgIGQ6ICfbjNqpINix2YjYsicsXG4gICAgICAgICAgICBkZDogJyVkINix2YjYsicsXG4gICAgICAgICAgICBNOiAn24zaqSDZhdin2YcnLFxuICAgICAgICAgICAgTU06ICclZCDZhdin2YcnLFxuICAgICAgICAgICAgeTogJ9uM2qkg2LPYp9mEJyxcbiAgICAgICAgICAgIHl5OiAnJWQg2LPYp9mEJyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW9uwLdu5XS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgv2IwvZywgJywnKTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfdmFLyxcbiAgICAgICAgb3JkaW5hbDogJyVk2YUnLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDYsIC8vIFNhdHVyZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDEyLCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxMnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZhO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEZpbm5pc2ggW2ZpXVxuLy8hIGF1dGhvciA6IFRhcm1vIEFpZGFudGF1c3RhIDogaHR0cHM6Ly9naXRodWIuY29tL2JsZWFkb2ZcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBudW1iZXJzUGFzdCA9XG4gICAgICAgICAgICAnbm9sbGEgeWtzaSBrYWtzaSBrb2xtZSBuZWxqw6Qgdmlpc2kga3V1c2kgc2VpdHNlbcOkbiBrYWhkZWtzYW4geWhkZWtzw6RuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnICdcbiAgICAgICAgICAgICksXG4gICAgICAgIG51bWJlcnNGdXR1cmUgPSBbXG4gICAgICAgICAgICAnbm9sbGEnLFxuICAgICAgICAgICAgJ3loZGVuJyxcbiAgICAgICAgICAgICdrYWhkZW4nLFxuICAgICAgICAgICAgJ2tvbG1lbicsXG4gICAgICAgICAgICAnbmVsasOkbicsXG4gICAgICAgICAgICAndmlpZGVuJyxcbiAgICAgICAgICAgICdrdXVkZW4nLFxuICAgICAgICAgICAgbnVtYmVyc1Bhc3RbN10sXG4gICAgICAgICAgICBudW1iZXJzUGFzdFs4XSxcbiAgICAgICAgICAgIG51bWJlcnNQYXN0WzldLFxuICAgICAgICBdO1xuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9ICcnO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ211dXRhbWFuIHNla3VubmluJyA6ICdtdXV0YW1hIHNla3VudGknO1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGlzRnV0dXJlID8gJ3Nla3VubmluJyA6ICdzZWt1bnRpYSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAnbWludXV0aW4nIDogJ21pbnV1dHRpJztcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpc0Z1dHVyZSA/ICdtaW51dXRpbicgOiAnbWludXV0dGlhJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICd0dW5uaW4nIDogJ3R1bnRpJztcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpc0Z1dHVyZSA/ICd0dW5uaW4nIDogJ3R1bnRpYSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAncMOkaXbDpG4nIDogJ3DDpGl2w6QnO1xuICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGlzRnV0dXJlID8gJ3DDpGl2w6RuJyA6ICdww6RpdsOkw6QnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ2t1dWthdWRlbicgOiAna3V1a2F1c2knO1xuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGlzRnV0dXJlID8gJ2t1dWthdWRlbicgOiAna3V1a2F1dHRhJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICd2dW9kZW4nIDogJ3Z1b3NpJztcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpc0Z1dHVyZSA/ICd2dW9kZW4nIDogJ3Z1b3R0YSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gdmVyYmFsTnVtYmVyKG51bWJlciwgaXNGdXR1cmUpICsgJyAnICsgcmVzdWx0O1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBmdW5jdGlvbiB2ZXJiYWxOdW1iZXIobnVtYmVyLCBpc0Z1dHVyZSkge1xuICAgICAgICByZXR1cm4gbnVtYmVyIDwgMTBcbiAgICAgICAgICAgID8gaXNGdXR1cmVcbiAgICAgICAgICAgICAgICA/IG51bWJlcnNGdXR1cmVbbnVtYmVyXVxuICAgICAgICAgICAgICAgIDogbnVtYmVyc1Bhc3RbbnVtYmVyXVxuICAgICAgICAgICAgOiBudW1iZXI7XG4gICAgfVxuXG4gICAgdmFyIGZpID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZmknLCB7XG4gICAgICAgIG1vbnRoczogJ3RhbW1pa3V1X2hlbG1pa3V1X21hYWxpc2t1dV9odWh0aWt1dV90b3Vrb2t1dV9rZXPDpGt1dV9oZWluw6RrdXVfZWxva3V1X3N5eXNrdXVfbG9rYWt1dV9tYXJyYXNrdXVfam91bHVrdXUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ3RhbW1pX2hlbG1pX21hYWxpc19odWh0aV90b3Vrb19rZXPDpF9oZWluw6RfZWxvX3N5eXNfbG9rYV9tYXJyYXNfam91bHUnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnc3VubnVudGFpX21hYW5hbnRhaV90aWlzdGFpX2tlc2tpdmlpa2tvX3RvcnN0YWlfcGVyamFudGFpX2xhdWFudGFpJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdzdV9tYV90aV9rZV90b19wZV9sYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdzdV9tYV90aV9rZV90b19wZV9sYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEgubW0nLFxuICAgICAgICAgICAgTFRTOiAnSEgubW0uc3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEbyBNTU1NW3RhXSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0RvIE1NTU1bdGFdIFlZWVksIFtrbG9dIEhILm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEbyBNTU1NW3RhXSBZWVlZLCBba2xvXSBISC5tbScsXG4gICAgICAgICAgICBsOiAnRC5NLllZWVknLFxuICAgICAgICAgICAgbGw6ICdEbyBNTU0gWVlZWScsXG4gICAgICAgICAgICBsbGw6ICdEbyBNTU0gWVlZWSwgW2tsb10gSEgubW0nLFxuICAgICAgICAgICAgbGxsbDogJ2RkZCwgRG8gTU1NIFlZWVksIFtrbG9dIEhILm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbdMOkbsOkw6RuXSBba2xvXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2h1b21lbm5hXSBba2xvXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2tsb10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tlaWxlbl0gW2tsb10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbdmlpbWVdIGRkZGRbbmFdIFtrbG9dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMgcMOkw6RzdMOkJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBzaXR0ZW4nLFxuICAgICAgICAgICAgczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgc3M6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZGQ6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE1NOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5OiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5eTogdHJhbnNsYXRlLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZpO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEZpbGlwaW5vIFtmaWxdXG4vLyEgYXV0aG9yIDogRGFuIEhhZ21hbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9oYWdtYW5kYW5cbi8vISBhdXRob3IgOiBNYXR0aGV3IENvIDogaHR0cHM6Ly9naXRodWIuY29tL21hdHRoZXdkZWVjb1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGZpbCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2ZpbCcsIHtcbiAgICAgICAgbW9udGhzOiAnRW5lcm9fUGVicmVyb19NYXJzb19BYnJpbF9NYXlvX0h1bnlvX0h1bHlvX0Fnb3N0b19TZXR5ZW1icmVfT2t0dWJyZV9Ob2J5ZW1icmVfRGlzeWVtYnJlJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0VuZV9QZWJfTWFyX0Ficl9NYXlfSHVuX0h1bF9BZ29fU2V0X09rdF9Ob2JfRGlzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ0xpbmdnb19MdW5lc19NYXJ0ZXNfTWl5ZXJrdWxlc19IdXdlYmVzX0JpeWVybmVzX1NhYmFkbycuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ0xpbl9MdW5fTWFyX01peV9IdXdfQml5X1NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdMaV9MdV9NYV9NaV9IdV9CaV9TYWInLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdNTS9EL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdNTU1NIEQsIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnTU1NTSBELCBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBNTU1NIERELCBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdMVCBbbmdheW9uZyBhcmF3XScsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0J1a2FzIG5nXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ0xUIFtzYSBzdXN1bm9kIG5hXSBkZGRkJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdMVCBba2FoYXBvbl0nLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdMVCBbbm9vbmcgbmFrYXJhYW5nXSBkZGRkJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnc2EgbG9vYiBuZyAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgYW5nIG5ha2FsaXBhcycsXG4gICAgICAgICAgICBzOiAnaWxhbmcgc2VndW5kbycsXG4gICAgICAgICAgICBzczogJyVkIHNlZ3VuZG8nLFxuICAgICAgICAgICAgbTogJ2lzYW5nIG1pbnV0bycsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0bycsXG4gICAgICAgICAgICBoOiAnaXNhbmcgb3JhcycsXG4gICAgICAgICAgICBoaDogJyVkIG9yYXMnLFxuICAgICAgICAgICAgZDogJ2lzYW5nIGFyYXcnLFxuICAgICAgICAgICAgZGQ6ICclZCBhcmF3JyxcbiAgICAgICAgICAgIE06ICdpc2FuZyBidXdhbicsXG4gICAgICAgICAgICBNTTogJyVkIGJ1d2FuJyxcbiAgICAgICAgICAgIHk6ICdpc2FuZyB0YW9uJyxcbiAgICAgICAgICAgIHl5OiAnJWQgdGFvbicsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBmaWw7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRmFyb2VzZSBbZm9dXG4vLyEgYXV0aG9yIDogUmFnbmFyIEpvaGFubmVzZW4gOiBodHRwczovL2dpdGh1Yi5jb20vcmFnbmFyMTIzXG4vLyEgYXV0aG9yIDogS3Jpc3RpYW4gU2FrYXJpc3NvbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9zYWthcmlzc29uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZm8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmbycsIHtcbiAgICAgICAgbW9udGhzOiAnamFudWFyX2ZlYnJ1YXJfbWFyc19hcHLDrWxfbWFpX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVzZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnamFuX2ZlYl9tYXJfYXByX21haV9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ3N1bm51ZGFndXJfbcOhbmFkYWd1cl90w71zZGFndXJfbWlrdWRhZ3VyX2jDs3NkYWd1cl9mcsOtZ2dqYWRhZ3VyX2xleWdhcmRhZ3VyJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdzdW5fbcOhbl90w71zX21pa19ow7NzX2Zyw61fbGV5Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ3N1X23DoV90w71fbWlfaMOzX2ZyX2xlJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQuIE1NTU0sIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vDjSBkYWcga2wuXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW8ONIG1vcmdpbiBrbC5dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBba2wuXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW8ONIGdqw6FyIGtsLl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbc8Otw7BzdHVdIGRkZGQgW2tsXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3VtICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBzw63DsGFuaScsXG4gICAgICAgICAgICBzOiAnZsOhIHNla3VuZCcsXG4gICAgICAgICAgICBzczogJyVkIHNla3VuZGlyJyxcbiAgICAgICAgICAgIG06ICdlaW4gbWludXR0dXInLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dHRpcicsXG4gICAgICAgICAgICBoOiAnZWluIHTDrW1pJyxcbiAgICAgICAgICAgIGhoOiAnJWQgdMOtbWFyJyxcbiAgICAgICAgICAgIGQ6ICdlaW4gZGFndXInLFxuICAgICAgICAgICAgZGQ6ICclZCBkYWdhcicsXG4gICAgICAgICAgICBNOiAnZWluIG3DoW5hw7B1cicsXG4gICAgICAgICAgICBNTTogJyVkIG3DoW5hw7BpcicsXG4gICAgICAgICAgICB5OiAnZWl0dCDDoXInLFxuICAgICAgICAgICAgeXk6ICclZCDDoXInLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZvO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEZyZW5jaCAoQ2FuYWRhKSBbZnItY2FdXG4vLyEgYXV0aG9yIDogSm9uYXRoYW4gQWJvdXJiaWggOiBodHRwczovL2dpdGh1Yi5jb20vam9uYmNhXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZnJDYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2ZyLWNhJywge1xuICAgICAgICBtb250aHM6ICdqYW52aWVyX2bDqXZyaWVyX21hcnNfYXZyaWxfbWFpX2p1aW5fanVpbGxldF9hb8O7dF9zZXB0ZW1icmVfb2N0b2JyZV9ub3ZlbWJyZV9kw6ljZW1icmUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ2phbnYuX2bDqXZyLl9tYXJzX2F2ci5fbWFpX2p1aW5fanVpbC5fYW/Du3Rfc2VwdC5fb2N0Ll9ub3YuX2TDqWMuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnZGltYW5jaGVfbHVuZGlfbWFyZGlfbWVyY3JlZGlfamV1ZGlfdmVuZHJlZGlfc2FtZWRpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZGltLl9sdW4uX21hci5fbWVyLl9qZXUuX3Zlbi5fc2FtLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdkaV9sdV9tYV9tZV9qZV92ZV9zYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbQXVqb3VyZOKAmWh1aSDDoF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tEZW1haW4gw6BdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSGllciDDoF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtkZXJuaWVyIMOgXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2RhbnMgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ2lsIHkgYSAlcycsXG4gICAgICAgICAgICBzOiAncXVlbHF1ZXMgc2Vjb25kZXMnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWNvbmRlcycsXG4gICAgICAgICAgICBtOiAndW5lIG1pbnV0ZScsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaDogJ3VuZSBoZXVyZScsXG4gICAgICAgICAgICBoaDogJyVkIGhldXJlcycsXG4gICAgICAgICAgICBkOiAndW4gam91cicsXG4gICAgICAgICAgICBkZDogJyVkIGpvdXJzJyxcbiAgICAgICAgICAgIE06ICd1biBtb2lzJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbW9pcycsXG4gICAgICAgICAgICB5OiAndW4gYW4nLFxuICAgICAgICAgICAgeXk6ICclZCBhbnMnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oZXJ8ZSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgLy8gV29yZHMgd2l0aCBtYXNjdWxpbmUgZ3JhbW1hdGljYWwgZ2VuZGVyOiBtb2lzLCB0cmltZXN0cmUsIGpvdXJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1EnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAobnVtYmVyID09PSAxID8gJ2VyJyA6ICdlJyk7XG5cbiAgICAgICAgICAgICAgICAvLyBXb3JkcyB3aXRoIGZlbWluaW5lIGdyYW1tYXRpY2FsIGdlbmRlcjogc2VtYWluZVxuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKG51bWJlciA9PT0gMSA/ICdyZScgOiAnZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZyQ2E7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogRnJlbmNoIChTd2l0emVybGFuZCkgW2ZyLWNoXVxuLy8hIGF1dGhvciA6IEdhc3BhcmQgQnVjaGVyIDogaHR0cHM6Ly9naXRodWIuY29tL2dhc3BhcmRcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBmckNoID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZnItY2gnLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnZpZXJfZsOpdnJpZXJfbWFyc19hdnJpbF9tYWlfanVpbl9qdWlsbGV0X2Fvw7t0X3NlcHRlbWJyZV9vY3RvYnJlX25vdmVtYnJlX2TDqWNlbWJyZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnamFudi5fZsOpdnIuX21hcnNfYXZyLl9tYWlfanVpbl9qdWlsLl9hb8O7dF9zZXB0Ll9vY3QuX25vdi5fZMOpYy4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdkaW1hbmNoZV9sdW5kaV9tYXJkaV9tZXJjcmVkaV9qZXVkaV92ZW5kcmVkaV9zYW1lZGknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdkaW0uX2x1bi5fbWFyLl9tZXIuX2pldS5fdmVuLl9zYW0uJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2RpX2x1X21hX21lX2plX3ZlX3NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tBdWpvdXJk4oCZaHVpIMOgXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0RlbWFpbiDDoF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvDoF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tIaWVyIMOgXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW2Rlcm5pZXIgw6BdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnZGFucyAlcycsXG4gICAgICAgICAgICBwYXN0OiAnaWwgeSBhICVzJyxcbiAgICAgICAgICAgIHM6ICdxdWVscXVlcyBzZWNvbmRlcycsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZGVzJyxcbiAgICAgICAgICAgIG06ICd1bmUgbWludXRlJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoOiAndW5lIGhldXJlJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaGV1cmVzJyxcbiAgICAgICAgICAgIGQ6ICd1biBqb3VyJyxcbiAgICAgICAgICAgIGRkOiAnJWQgam91cnMnLFxuICAgICAgICAgICAgTTogJ3VuIG1vaXMnLFxuICAgICAgICAgICAgTU06ICclZCBtb2lzJyxcbiAgICAgICAgICAgIHk6ICd1biBhbicsXG4gICAgICAgICAgICB5eTogJyVkIGFucycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShlcnxlKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICAvLyBXb3JkcyB3aXRoIG1hc2N1bGluZSBncmFtbWF0aWNhbCBnZW5kZXI6IG1vaXMsIHRyaW1lc3RyZSwgam91clxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChudW1iZXIgPT09IDEgPyAnZXInIDogJ2UnKTtcblxuICAgICAgICAgICAgICAgIC8vIFdvcmRzIHdpdGggZmVtaW5pbmUgZ3JhbW1hdGljYWwgZ2VuZGVyOiBzZW1haW5lXG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAobnVtYmVyID09PSAxID8gJ3JlJyA6ICdlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBmckNoO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEZyZW5jaCBbZnJdXG4vLyEgYXV0aG9yIDogSm9obiBGaXNjaGVyIDogaHR0cHM6Ly9naXRodWIuY29tL2pmcm9mZmljZVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRoc1N0cmljdFJlZ2V4ID1cbiAgICAgICAgICAgIC9eKGphbnZpZXJ8ZsOpdnJpZXJ8bWFyc3xhdnJpbHxtYWl8anVpbnxqdWlsbGV0fGFvw7t0fHNlcHRlbWJyZXxvY3RvYnJlfG5vdmVtYnJlfGTDqWNlbWJyZSkvaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleCA9XG4gICAgICAgICAgICAvKGphbnZcXC4/fGbDqXZyXFwuP3xtYXJzfGF2clxcLj98bWFpfGp1aW58anVpbFxcLj98YW/Du3R8c2VwdFxcLj98b2N0XFwuP3xub3ZcXC4/fGTDqWNcXC4/KS9pLFxuICAgICAgICBtb250aHNSZWdleCA9XG4gICAgICAgICAgICAvKGphbnZcXC4/fGbDqXZyXFwuP3xtYXJzfGF2clxcLj98bWFpfGp1aW58anVpbFxcLj98YW/Du3R8c2VwdFxcLj98b2N0XFwuP3xub3ZcXC4/fGTDqWNcXC4/fGphbnZpZXJ8ZsOpdnJpZXJ8bWFyc3xhdnJpbHxtYWl8anVpbnxqdWlsbGV0fGFvw7t0fHNlcHRlbWJyZXxvY3RvYnJlfG5vdmVtYnJlfGTDqWNlbWJyZSkvaSxcbiAgICAgICAgbW9udGhzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXmphbnYvaSxcbiAgICAgICAgICAgIC9eZsOpdnIvaSxcbiAgICAgICAgICAgIC9ebWFycy9pLFxuICAgICAgICAgICAgL15hdnIvaSxcbiAgICAgICAgICAgIC9ebWFpL2ksXG4gICAgICAgICAgICAvXmp1aW4vaSxcbiAgICAgICAgICAgIC9eanVpbC9pLFxuICAgICAgICAgICAgL15hb8O7dC9pLFxuICAgICAgICAgICAgL15zZXB0L2ksXG4gICAgICAgICAgICAvXm9jdC9pLFxuICAgICAgICAgICAgL15ub3YvaSxcbiAgICAgICAgICAgIC9eZMOpYy9pLFxuICAgICAgICBdO1xuXG4gICAgdmFyIGZyID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZnInLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnZpZXJfZsOpdnJpZXJfbWFyc19hdnJpbF9tYWlfanVpbl9qdWlsbGV0X2Fvw7t0X3NlcHRlbWJyZV9vY3RvYnJlX25vdmVtYnJlX2TDqWNlbWJyZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnamFudi5fZsOpdnIuX21hcnNfYXZyLl9tYWlfanVpbl9qdWlsLl9hb8O7dF9zZXB0Ll9vY3QuX25vdi5fZMOpYy4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6IG1vbnRoc1N0cmljdFJlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OiBtb250aHNTaG9ydFN0cmljdFJlZ2V4LFxuICAgICAgICBtb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICB3ZWVrZGF5czogJ2RpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2RpbS5fbHVuLl9tYXIuX21lci5famV1Ll92ZW4uX3NhbS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnZGlfbHVfbWFfbWVfamVfdmVfc2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0F1am91cmTigJlodWkgw6BdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbRGVtYWluIMOgXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW8OgXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0hpZXIgw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbZGVybmllciDDoF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdkYW5zICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdpbCB5IGEgJXMnLFxuICAgICAgICAgICAgczogJ3F1ZWxxdWVzIHNlY29uZGVzJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vjb25kZXMnLFxuICAgICAgICAgICAgbTogJ3VuZSBtaW51dGUnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGg6ICd1bmUgaGV1cmUnLFxuICAgICAgICAgICAgaGg6ICclZCBoZXVyZXMnLFxuICAgICAgICAgICAgZDogJ3VuIGpvdXInLFxuICAgICAgICAgICAgZGQ6ICclZCBqb3VycycsXG4gICAgICAgICAgICB3OiAndW5lIHNlbWFpbmUnLFxuICAgICAgICAgICAgd3c6ICclZCBzZW1haW5lcycsXG4gICAgICAgICAgICBNOiAndW4gbW9pcycsXG4gICAgICAgICAgICBNTTogJyVkIG1vaXMnLFxuICAgICAgICAgICAgeTogJ3VuIGFuJyxcbiAgICAgICAgICAgIHl5OiAnJWQgYW5zJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KGVyfCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogUmV0dXJuICdlJyB3aGVuIGRheSBvZiBtb250aCA+IDEuIE1vdmUgdGhpcyBjYXNlIGluc2lkZVxuICAgICAgICAgICAgICAgIC8vIGJsb2NrIGZvciBtYXNjdWxpbmUgd29yZHMgYmVsb3cuXG4gICAgICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L2lzc3Vlcy8zMzc1XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAobnVtYmVyID09PSAxID8gJ2VyJyA6ICcnKTtcblxuICAgICAgICAgICAgICAgIC8vIFdvcmRzIHdpdGggbWFzY3VsaW5lIGdyYW1tYXRpY2FsIGdlbmRlcjogbW9pcywgdHJpbWVzdHJlLCBqb3VyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjYXNlICdRJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKG51bWJlciA9PT0gMSA/ICdlcicgOiAnZScpO1xuXG4gICAgICAgICAgICAgICAgLy8gV29yZHMgd2l0aCBmZW1pbmluZSBncmFtbWF0aWNhbCBnZW5kZXI6IHNlbWFpbmVcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChudW1iZXIgPT09IDEgPyAncmUnIDogJ2UnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZyO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEZyaXNpYW4gW2Z5XVxuLy8hIGF1dGhvciA6IFJvYmluIHZhbiBkZXIgVmxpZXQgOiBodHRwczovL2dpdGh1Yi5jb20vcm9iaW4wdmFuMGRlcjB2XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzU2hvcnRXaXRoRG90cyA9XG4gICAgICAgICAgICAnamFuLl9mZWIuX21ydC5fYXByLl9tYWlfanVuLl9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVzLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnRXaXRob3V0RG90cyA9XG4gICAgICAgICAgICAnamFuX2ZlYl9tcnRfYXByX21haV9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZXMnLnNwbGl0KCdfJyk7XG5cbiAgICB2YXIgZnkgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmeScsIHtcbiAgICAgICAgbW9udGhzOiAnamFubmV3YXJpc19mZWJyZXdhcmlzX21hYXJ0X2FwcmlsX21hYWllX2p1bnlfanVseV9hdWd1c3R1c19zZXB0aW1iZXJfb2t0b2Jlcl9ub3ZpbWJlcl9kZXNpbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6IGZ1bmN0aW9uIChtLCBmb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhEb3RzO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvLU1NTS0vLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhvdXREb3RzW20ubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhEb3RzW20ubW9udGgoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnc25laW5fbW9hbmRlaV90aWlzZGVpX3dvYW5zZGVpX3RvbmdlcnNkZWlfZnJlZWRfc25lb24nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdzaS5fbW8uX3RpLl93by5fdG8uX2ZyLl9zby4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU2lfTW9fVGlfV29fVG9fRnJfU28nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELU1NLVlZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2hqb2VkIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW21vYXJuIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2p1c3RlciBvbV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbw7RmcsO7bmVdIGRkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ29lciAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgbHluJyxcbiAgICAgICAgICAgIHM6ICdpbiBwZWFyIHNla29uZGVuJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vrb25kZW4nLFxuICAgICAgICAgICAgbTogJ2llbiBtaW7DunQnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGVuJyxcbiAgICAgICAgICAgIGg6ICdpZW4gb2VyZScsXG4gICAgICAgICAgICBoaDogJyVkIG9lcmVuJyxcbiAgICAgICAgICAgIGQ6ICdpZW4gZGVpJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGFnZW4nLFxuICAgICAgICAgICAgTTogJ2llbiBtb2FubmUnLFxuICAgICAgICAgICAgTU06ICclZCBtb2FubmVuJyxcbiAgICAgICAgICAgIHk6ICdpZW4gamllcicsXG4gICAgICAgICAgICB5eTogJyVkIGppZXJyZW4nLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3RlfGRlKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgbnVtYmVyICtcbiAgICAgICAgICAgICAgICAobnVtYmVyID09PSAxIHx8IG51bWJlciA9PT0gOCB8fCBudW1iZXIgPj0gMjAgPyAnc3RlJyA6ICdkZScpXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZnk7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogSXJpc2ggb3IgSXJpc2ggR2FlbGljIFtnYV1cbi8vISBhdXRob3IgOiBBbmRyw6kgU2lsdmEgOiBodHRwczovL2dpdGh1Yi5jb20vYXNrcHRcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtb250aHMgPSBbXG4gICAgICAgICAgICAnRWFuw6FpcicsXG4gICAgICAgICAgICAnRmVhYmhyYScsXG4gICAgICAgICAgICAnTcOhcnRhJyxcbiAgICAgICAgICAgICdBaWJyZcOhbicsXG4gICAgICAgICAgICAnQmVhbHRhaW5lJyxcbiAgICAgICAgICAgICdNZWl0aGVhbWgnLFxuICAgICAgICAgICAgJ0nDumlsJyxcbiAgICAgICAgICAgICdMw7puYXNhJyxcbiAgICAgICAgICAgICdNZcOhbiBGw7NtaGFpcicsXG4gICAgICAgICAgICAnRGVpcmVhZGggRsOzbWhhaXInLFxuICAgICAgICAgICAgJ1NhbWhhaW4nLFxuICAgICAgICAgICAgJ05vbGxhaWcnLFxuICAgICAgICBdLFxuICAgICAgICBtb250aHNTaG9ydCA9IFtcbiAgICAgICAgICAgICdFYW4nLFxuICAgICAgICAgICAgJ0ZlYWJoJyxcbiAgICAgICAgICAgICdNw6FydCcsXG4gICAgICAgICAgICAnQWliJyxcbiAgICAgICAgICAgICdCZWFsJyxcbiAgICAgICAgICAgICdNZWl0aCcsXG4gICAgICAgICAgICAnScO6aWwnLFxuICAgICAgICAgICAgJ0zDum4nLFxuICAgICAgICAgICAgJ00uRi4nLFxuICAgICAgICAgICAgJ0QuRi4nLFxuICAgICAgICAgICAgJ1NhbWgnLFxuICAgICAgICAgICAgJ05vbGwnLFxuICAgICAgICBdLFxuICAgICAgICB3ZWVrZGF5cyA9IFtcbiAgICAgICAgICAgICdEw6kgRG9taG5haWdoJyxcbiAgICAgICAgICAgICdEw6kgTHVhaW4nLFxuICAgICAgICAgICAgJ0TDqSBNw6FpcnQnLFxuICAgICAgICAgICAgJ0TDqSBDw6lhZGFvaW4nLFxuICAgICAgICAgICAgJ0TDqWFyZGFvaW4nLFxuICAgICAgICAgICAgJ0TDqSBoQW9pbmUnLFxuICAgICAgICAgICAgJ0TDqSBTYXRoYWlybicsXG4gICAgICAgIF0sXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgPSBbJ0RvbWgnLCAnTHVhbicsICdNw6FpcnQnLCAnQ8OpYWQnLCAnRMOpYXInLCAnQW9pbmUnLCAnU2F0aCddLFxuICAgICAgICB3ZWVrZGF5c01pbiA9IFsnRG8nLCAnTHUnLCAnTcOhJywgJ0PDqScsICdEw6knLCAnQScsICdTYSddO1xuXG4gICAgdmFyIGdhID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZ2EnLCB7XG4gICAgICAgIG1vbnRoczogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydDogbW9udGhzU2hvcnQsXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiB3ZWVrZGF5cyxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogd2Vla2RheXNTaG9ydCxcbiAgICAgICAgd2Vla2RheXNNaW46IHdlZWtkYXlzTWluLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0lubml1IGFnXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0Ftw6FyYWNoIGFnXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2FnXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0lubsOpIGFnXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW3NlbyBjYWl0ZV0gW2FnXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2kgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIMOzIHNoaW4nLFxuICAgICAgICAgICAgczogJ2PDunBsYSBzb2ljaW5kJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc29pY2luZCcsXG4gICAgICAgICAgICBtOiAnbsOzaW3DqWFkJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbsOzaW3DqWFkJyxcbiAgICAgICAgICAgIGg6ICd1YWlyIGFuIGNobG9pZycsXG4gICAgICAgICAgICBoaDogJyVkIHVhaXIgYW4gY2hsb2lnJyxcbiAgICAgICAgICAgIGQ6ICdsw6EnLFxuICAgICAgICAgICAgZGQ6ICclZCBsw6EnLFxuICAgICAgICAgICAgTTogJ23DrScsXG4gICAgICAgICAgICBNTTogJyVkIG3DrW9ubmEnLFxuICAgICAgICAgICAgeTogJ2JsaWFpbicsXG4gICAgICAgICAgICB5eTogJyVkIGJsaWFpbicsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShkfG5hfG1oKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPSBudW1iZXIgPT09IDEgPyAnZCcgOiBudW1iZXIgJSAxMCA9PT0gMiA/ICduYScgOiAnbWgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGdhO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFNjb3R0aXNoIEdhZWxpYyBbZ2RdXG4vLyEgYXV0aG9yIDogSm9uIEFzaGRvd24gOiBodHRwczovL2dpdGh1Yi5jb20vam9uYXNoZG93blxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1vbnRocyA9IFtcbiAgICAgICAgICAgICdBbSBGYW9pbGxlYWNoJyxcbiAgICAgICAgICAgICdBbiBHZWFycmFuJyxcbiAgICAgICAgICAgICdBbSBNw6BydCcsXG4gICAgICAgICAgICAnQW4gR2libGVhbicsXG4gICAgICAgICAgICAnQW4gQ8OoaXRlYW4nLFxuICAgICAgICAgICAgJ0FuIHQtw5JnbWhpb3MnLFxuICAgICAgICAgICAgJ0FuIHQtSXVjaGFyJyxcbiAgICAgICAgICAgICdBbiBMw7luYXN0YWwnLFxuICAgICAgICAgICAgJ0FuIHQtU3VsdGFpbicsXG4gICAgICAgICAgICAnQW4gRMOgbWhhaXInLFxuICAgICAgICAgICAgJ0FuIHQtU2FtaGFpbicsXG4gICAgICAgICAgICAnQW4gRMO5YmhsYWNoZCcsXG4gICAgICAgIF0sXG4gICAgICAgIG1vbnRoc1Nob3J0ID0gW1xuICAgICAgICAgICAgJ0Zhb2knLFxuICAgICAgICAgICAgJ0dlYXInLFxuICAgICAgICAgICAgJ03DoHJ0JyxcbiAgICAgICAgICAgICdHaWJsJyxcbiAgICAgICAgICAgICdDw6hpdCcsXG4gICAgICAgICAgICAnw5JnbWgnLFxuICAgICAgICAgICAgJ0l1Y2gnLFxuICAgICAgICAgICAgJ0zDuW4nLFxuICAgICAgICAgICAgJ1N1bHQnLFxuICAgICAgICAgICAgJ0TDoG1oJyxcbiAgICAgICAgICAgICdTYW1oJyxcbiAgICAgICAgICAgICdEw7liaCcsXG4gICAgICAgIF0sXG4gICAgICAgIHdlZWtkYXlzID0gW1xuICAgICAgICAgICAgJ0RpZMOybWhuYWljaCcsXG4gICAgICAgICAgICAnRGlsdWFpbicsXG4gICAgICAgICAgICAnRGltw6BpcnQnLFxuICAgICAgICAgICAgJ0RpY2lhZGFpbicsXG4gICAgICAgICAgICAnRGlhcmRhb2luJyxcbiAgICAgICAgICAgICdEaWhhb2luZScsXG4gICAgICAgICAgICAnRGlzYXRoYWlybmUnLFxuICAgICAgICBdLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0ID0gWydEaWQnLCAnRGlsJywgJ0RpbScsICdEaWMnLCAnRGlhJywgJ0RpaCcsICdEaXMnXSxcbiAgICAgICAgd2Vla2RheXNNaW4gPSBbJ0TDsicsICdMdScsICdNw6AnLCAnQ2knLCAnQXInLCAnSGEnLCAnU2EnXTtcblxuICAgIHZhciBnZCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2dkJywge1xuICAgICAgICBtb250aHM6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IG1vbnRoc1Nob3J0LFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogd2Vla2RheXMsXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6IHdlZWtkYXlzU2hvcnQsXG4gICAgICAgIHdlZWtkYXlzTWluOiB3ZWVrZGF5c01pbixcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tBbi1kaXVnaCBhaWddIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbQS1tw6BpcmVhY2ggYWlnXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2FpZ10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tBbi1kw6ggYWlnXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW3NlbyBjaGFpZGhdIFthaWddIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnYW5uIGFuICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdiaG8gY2hpb25uICVzJyxcbiAgICAgICAgICAgIHM6ICdiZWFnYW4gZGlvZ2FuJyxcbiAgICAgICAgICAgIHNzOiAnJWQgZGlvZ2FuJyxcbiAgICAgICAgICAgIG06ICdtaW9uYWlkJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWlvbmFpZGVhbicsXG4gICAgICAgICAgICBoOiAndWFpcicsXG4gICAgICAgICAgICBoaDogJyVkIHVhaXJlYW4nLFxuICAgICAgICAgICAgZDogJ2xhdGhhJyxcbiAgICAgICAgICAgIGRkOiAnJWQgbGF0aGEnLFxuICAgICAgICAgICAgTTogJ23DrG9zJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbcOsb3NhbicsXG4gICAgICAgICAgICB5OiAnYmxpYWRobmEnLFxuICAgICAgICAgICAgeXk6ICclZCBibGlhZGhuYScsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShkfG5hfG1oKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPSBudW1iZXIgPT09IDEgPyAnZCcgOiBudW1iZXIgJSAxMCA9PT0gMiA/ICduYScgOiAnbWgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGdkO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEdhbGljaWFuIFtnbF1cbi8vISBhdXRob3IgOiBKdWFuIEcuIEh1cnRhZG8gOiBodHRwczovL2dpdGh1Yi5jb20vanVhbmdodXJ0YWRvXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgZ2wgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdnbCcsIHtcbiAgICAgICAgbW9udGhzOiAneGFuZWlyb19mZWJyZWlyb19tYXJ6b19hYnJpbF9tYWlvX3h1w7FvX3h1bGxvX2Fnb3N0b19zZXRlbWJyb19vdXR1YnJvX25vdmVtYnJvX2RlY2VtYnJvJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICd4YW4uX2ZlYi5fbWFyLl9hYnIuX21haS5feHXDsS5feHVsLl9hZ28uX3NldC5fb3V0Ll9ub3YuX2RlYy4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdkb21pbmdvX2x1bnNfbWFydGVzX23DqXJjb3Jlc194b3Zlc192ZW5yZXNfc8OhYmFkbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2RvbS5fbHVuLl9tYXIuX23DqXIuX3hvdi5fdmVuLl9zw6FiLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdkb19sdV9tYV9tw6lfeG9fdmVfc8OhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2hveGUgJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAnw6FzJyA6ICfDoScpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHREYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1ttYcOxw6EgJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAnw6FzJyA6ICfDoScpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIFsnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICfDoXMnIDogJ2EnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbb250ZSAnICsgKHRoaXMuaG91cnMoKSAhPT0gMSA/ICfDoScgOiAnYScpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgJ1tvXSBkZGRkIFtwYXNhZG8gJyArICh0aGlzLmhvdXJzKCkgIT09IDEgPyAnw6FzJyA6ICdhJykgKyAnXSBMVCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiBmdW5jdGlvbiAoc3RyKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0ci5pbmRleE9mKCd1bicpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnbicgKyBzdHI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAnZW4gJyArIHN0cjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXN0OiAnaGFpICVzJyxcbiAgICAgICAgICAgIHM6ICd1bnMgc2VndW5kb3MnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWd1bmRvcycsXG4gICAgICAgICAgICBtOiAndW4gbWludXRvJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRvcycsXG4gICAgICAgICAgICBoOiAndW5oYSBob3JhJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG9yYXMnLFxuICAgICAgICAgICAgZDogJ3VuIGTDrWEnLFxuICAgICAgICAgICAgZGQ6ICclZCBkw61hcycsXG4gICAgICAgICAgICBNOiAndW4gbWVzJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWVzZXMnLFxuICAgICAgICAgICAgeTogJ3VuIGFubycsXG4gICAgICAgICAgICB5eTogJyVkIGFub3MnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWw6ICclZMK6JyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGdsO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEtvbmthbmkgRGV2YW5hZ2FyaSBzY3JpcHQgW2dvbS1kZXZhXVxuLy8hIGF1dGhvciA6IFRoZSBEaXNjb3ZlcmVyIDogaHR0cHM6Ly9naXRodWIuY29tL1dpa2lEaXNjb3ZlcmVyXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgczogWyfgpKXgpYvgpKHgpK/gpL4g4KS44KWF4KSV4KSC4KSh4KS+4KSC4KSo4KWAJywgJ+CkpeCli+CkoeClhyDgpLjgpYXgpJXgpILgpKEnXSxcbiAgICAgICAgICAgIHNzOiBbbnVtYmVyICsgJyDgpLjgpYXgpJXgpILgpKHgpL7gpILgpKjgpYAnLCBudW1iZXIgKyAnIOCkuOClheCkleCkguCkoSddLFxuICAgICAgICAgICAgbTogWyfgpI/gpJXgpL4g4KSu4KS/4KSj4KSf4KS+4KSoJywgJ+Ckj+CklSDgpK7gpL/gpKjgpYLgpJ8nXSxcbiAgICAgICAgICAgIG1tOiBbbnVtYmVyICsgJyDgpK7gpL/gpKPgpJ/gpL7gpILgpKjgpYAnLCBudW1iZXIgKyAnIOCkruCkv+Cko+Ckn+CkvuCkgiddLFxuICAgICAgICAgICAgaDogWyfgpI/gpJXgpL4g4KS14KSw4KS+4KSoJywgJ+Ckj+CklSDgpLXgpLAnXSxcbiAgICAgICAgICAgIGhoOiBbbnVtYmVyICsgJyDgpLXgpLDgpL7gpILgpKjgpYAnLCBudW1iZXIgKyAnIOCkteCksOCkvuCkgiddLFxuICAgICAgICAgICAgZDogWyfgpI/gpJXgpL4g4KSm4KS/4KS44KS+4KSoJywgJ+Ckj+CklSDgpKbgpYDgpLgnXSxcbiAgICAgICAgICAgIGRkOiBbbnVtYmVyICsgJyDgpKbgpL/gpLjgpL7gpILgpKjgpYAnLCBudW1iZXIgKyAnIOCkpuClgOCkuCddLFxuICAgICAgICAgICAgTTogWyfgpI/gpJXgpL4g4KSu4KWN4KS54KSv4KSo4KWN4KSv4KS+4KSoJywgJ+Ckj+CklSDgpK7gpY3gpLngpK/gpKjgpYsnXSxcbiAgICAgICAgICAgIE1NOiBbbnVtYmVyICsgJyDgpK7gpY3gpLngpK/gpKjgpY3gpK/gpL7gpKjgpYAnLCBudW1iZXIgKyAnIOCkruCljeCkueCkr+CkqOClhyddLFxuICAgICAgICAgICAgeTogWyfgpI/gpJXgpL4g4KS14KSw4KWN4KS44KS+4KSoJywgJ+Ckj+CklSDgpLXgpLDgpY3gpLgnXSxcbiAgICAgICAgICAgIHl5OiBbbnVtYmVyICsgJyDgpLXgpLDgpY3gpLjgpL7gpILgpKjgpYAnLCBudW1iZXIgKyAnIOCkteCksOCljeCkuOCkvuCkgiddLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyBmb3JtYXRba2V5XVswXSA6IGZvcm1hdFtrZXldWzFdO1xuICAgIH1cblxuICAgIHZhciBnb21EZXZhID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZ29tLWRldmEnLCB7XG4gICAgICAgIG1vbnRoczoge1xuICAgICAgICAgICAgc3RhbmRhbG9uZTpcbiAgICAgICAgICAgICAgICAn4KSc4KS+4KSo4KWH4KS14KS+4KSw4KWAX+Ckq+Clh+CkrOCljeCksOClgeCkteCkvuCksOClgF/gpK7gpL7gpLDgpY3gpJpf4KSP4KSq4KWN4KSw4KWA4KSyX+CkruClh1/gpJzgpYLgpKhf4KSc4KWB4KSy4KSvX+CkkeCkl+CkuOCljeCkn1/gpLjgpKrgpY3gpJ/gpYfgpILgpKzgpLBf4KSR4KSV4KWN4KSf4KWL4KSs4KSwX+CkqOCli+CkteCljeCkueClh+CkguCkrOCksF/gpKHgpL/gpLjgpYfgpILgpKzgpLAnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgZm9ybWF0OiAn4KSc4KS+4KSo4KWH4KS14KS+4KSw4KWA4KSa4KWN4KSv4KS+X+Ckq+Clh+CkrOCljeCksOClgeCkteCkvuCksOClgOCkmuCljeCkr+Ckvl/gpK7gpL7gpLDgpY3gpJrgpL7gpJrgpY3gpK/gpL5f4KSP4KSq4KWN4KSw4KWA4KSy4KS+4KSa4KWN4KSv4KS+X+CkruClh+Ckr+CkvuCkmuCljeCkr+Ckvl/gpJzgpYLgpKjgpL7gpJrgpY3gpK/gpL5f4KSc4KWB4KSy4KSv4KS+4KSa4KWN4KSv4KS+X+CkkeCkl+CkuOCljeCkn+CkvuCkmuCljeCkr+Ckvl/gpLjgpKrgpY3gpJ/gpYfgpILgpKzgpLDgpL7gpJrgpY3gpK/gpL5f4KSR4KSV4KWN4KSf4KWL4KSs4KSw4KS+4KSa4KWN4KSv4KS+X+CkqOCli+CkteCljeCkueClh+CkguCkrOCksOCkvuCkmuCljeCkr+Ckvl/gpKHgpL/gpLjgpYfgpILgpKzgpLDgpL7gpJrgpY3gpK/gpL4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGlzRm9ybWF0OiAvTU1NTShcXHMpK0Rbb0RdPy8sXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+CknOCkvuCkqOClhy5f4KSr4KWH4KSs4KWN4KSw4KWBLl/gpK7gpL7gpLDgpY3gpJpf4KSP4KSq4KWN4KSw4KWALl/gpK7gpYdf4KSc4KWC4KSoX+CknOClgeCksi5f4KSR4KSXLl/gpLjgpKrgpY3gpJ/gpYfgpIIuX+CkkeCkleCljeCkn+Cliy5f4KSo4KWL4KS14KWN4KS54KWH4KSCLl/gpKHgpL/gpLjgpYfgpIIuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAn4KSG4KSv4KSk4KS+4KSwX+CkuOCli+CkruCkvuCksF/gpK7gpILgpJfgpLPgpL7gpLBf4KSs4KWB4KSn4KS14KS+4KSwX+CkrOCkv+CksOClh+CkuOCljeCkpOCkvuCksF/gpLjgpYHgpJXgpY3gpLDgpL7gpLBf4KS24KWH4KSo4KS14KS+4KSwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4KSG4KSv4KSkLl/gpLjgpYvgpK4uX+CkruCkguCkl+Cksy5f4KSs4KWB4KSnLl/gpKzgpY3gpLDgpYfgpLjgpY3gpKQuX+CkuOClgeCkleCljeCksC5f4KS24KWH4KSoLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfgpIZf4KS44KWLX+CkruCkgl/gpKzgpYFf4KSs4KWN4KSw4KWHX+CkuOClgV/gpLbgpYcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnQSBoOm1tIFvgpLXgpL7gpJzgpKTgpL7gpIJdJyxcbiAgICAgICAgICAgIExUUzogJ0EgaDptbTpzcyBb4KS14KS+4KSc4KSk4KS+4KSCXScsXG4gICAgICAgICAgICBMOiAnREQtTU0tWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEEgaDptbSBb4KS14KS+4KSc4KSk4KS+4KSCXScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgTU1NTSBEbywgWVlZWSwgQSBoOm1tIFvgpLXgpL7gpJzgpKTgpL7gpIJdJyxcbiAgICAgICAgICAgIGxsbGw6ICdkZGQsIEQgTU1NIFlZWVksIEEgaDptbSBb4KS14KS+4KSc4KSk4KS+4KSCXScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+CkhuCkr+CknF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vgpKvgpL7gpLLgpY3gpK/gpL7gpIJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW+Ckq+ClgeCkoeCksuCli10gZGRkZFssXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+CkleCkvuCksl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4KSr4KS+4KSf4KSy4KWLXSBkZGRkWyxdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIOCkhuCkpuClgOCkgicsXG4gICAgICAgICAgICBzOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgc3M6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbW06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGg6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZGQ6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTU06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5OiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeXk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSjgpLXgpYfgpLApLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIC8vIHRoZSBvcmRpbmFsICfgpLXgpYfgpLAnIG9ubHkgYXBwbGllcyB0byBkYXkgb2YgdGhlIG1vbnRoXG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn4KS14KWH4KSwJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1EnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWtcbiAgICAgICAgICAgIGRveTogMywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyICg3ICsgMCAtIDQpXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gpLDgpL7gpKTgpYB84KS44KSV4KS+4KSz4KWA4KSCfOCkpuCkqOCkquCkvuCksOCkvuCkgnzgpLjgpL7gpILgpJzgpYcvLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgpLDgpL7gpKTgpYAnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpLjgpJXgpL7gpLPgpYDgpIInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KSm4KSo4KSq4KS+4KSw4KS+4KSCJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID4gMTIgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CkuOCkvuCkguCknOClhycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLDgpL7gpKTgpYAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkuOCkleCkvuCks+ClgOCkgic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSm4KSo4KSq4KS+4KSw4KS+4KSCJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLjgpL7gpILgpJzgpYcnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CksOCkvuCkpOClgCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ29tRGV2YTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBLb25rYW5pIExhdGluIHNjcmlwdCBbZ29tLWxhdG5dXG4vLyEgYXV0aG9yIDogVGhlIERpc2NvdmVyZXIgOiBodHRwczovL2dpdGh1Yi5jb20vV2lraURpc2NvdmVyZXJcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICBzOiBbJ3Rob2RkZWEgc2Vrb25kYW1uaScsICd0aG9kZGUgc2Vrb25kJ10sXG4gICAgICAgICAgICBzczogW251bWJlciArICcgc2Vrb25kYW1uaScsIG51bWJlciArICcgc2Vrb25kJ10sXG4gICAgICAgICAgICBtOiBbJ2VrYSBtaW50YW4nLCAnZWsgbWludXQnXSxcbiAgICAgICAgICAgIG1tOiBbbnVtYmVyICsgJyBtaW50YW1uaScsIG51bWJlciArICcgbWludGFtJ10sXG4gICAgICAgICAgICBoOiBbJ2VrYSB2b3JhbicsICdlayB2b3InXSxcbiAgICAgICAgICAgIGhoOiBbbnVtYmVyICsgJyB2b3JhbW5pJywgbnVtYmVyICsgJyB2b3JhbSddLFxuICAgICAgICAgICAgZDogWydla2EgZGlzYW4nLCAnZWsgZGlzJ10sXG4gICAgICAgICAgICBkZDogW251bWJlciArICcgZGlzYW1uaScsIG51bWJlciArICcgZGlzJ10sXG4gICAgICAgICAgICBNOiBbJ2VrYSBtaG9pbmVhbicsICdlayBtaG9pbm8nXSxcbiAgICAgICAgICAgIE1NOiBbbnVtYmVyICsgJyBtaG9pbmVhbW5pJywgbnVtYmVyICsgJyBtaG9pbmUnXSxcbiAgICAgICAgICAgIHk6IFsnZWthIHZvcnNhbicsICdlayB2b3JvcyddLFxuICAgICAgICAgICAgeXk6IFtudW1iZXIgKyAnIHZvcnNhbW5pJywgbnVtYmVyICsgJyB2b3JzYW0nXSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gZm9ybWF0W2tleV1bMF0gOiBmb3JtYXRba2V5XVsxXTtcbiAgICB9XG5cbiAgICB2YXIgZ29tTGF0biA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2dvbS1sYXRuJywge1xuICAgICAgICBtb250aHM6IHtcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6XG4gICAgICAgICAgICAgICAgJ0phbmVyX0ZlYnJlcl9NYXJzX0FicmlsX01haV9KdW5fSnVsYWlfQWdvc3RfU2V0ZW1icl9PdHVicl9Ob3ZlbWJyX0RlemVtYnInLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgZm9ybWF0OiAnSmFuZXJhY2hlYV9GZWJyZXJhY2hlYV9NYXJzYWNoZWFfQWJyaWxhY2hlYV9NYWlhY2hlYV9KdW5hY2hlYV9KdWxhaWFjaGVhX0Fnb3N0YWNoZWFfU2V0ZW1icmFjaGVhX090dWJyYWNoZWFfTm92ZW1icmFjaGVhX0RlemVtYnJhY2hlYScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaXNGb3JtYXQ6IC9NTU1NKFxccykrRFtvRF0/LyxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnSmFuLl9GZWIuX01hcnNfQWJyLl9NYWlfSnVuX0p1bC5fQWdvLl9TZXQuX090dS5fTm92Ll9EZXouJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogXCJBaXRhcl9Tb21hcl9Nb25nbGxhcl9CdWRodmFyX0JpcmVzdGFyX1N1a3Jhcl9Tb24ndmFyXCIuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ0FpdC5fU29tLl9Nb24uX0J1ZC5fQnJlLl9TdWsuX1Nvbi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnQWlfU21fTW9fQnVfQnJfU3VfU24nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnQSBoOm1tIFt2YXp0YV0nLFxuICAgICAgICAgICAgTFRTOiAnQSBoOm1tOnNzIFt2YXp0YV0nLFxuICAgICAgICAgICAgTDogJ0RELU1NLVlZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBBIGg6bW0gW3ZhenRhXScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgTU1NTSBEbywgWVlZWSwgQSBoOm1tIFt2YXp0YV0nLFxuICAgICAgICAgICAgbGxsbDogJ2RkZCwgRCBNTU0gWVlZWSwgQSBoOm1tIFt2YXp0YV0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tBaXpdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbRmFsZWFtXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1tGdWRkbG9dIGRkZGRbLF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tLYWxdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW0ZhdHRsb10gZGRkZFssXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBhZGltJyxcbiAgICAgICAgICAgIHM6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBzczogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGg6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGQ6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5eTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KGVyKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICAvLyB0aGUgb3JkaW5hbCAnZXInIG9ubHkgYXBwbGllcyB0byBkYXkgb2YgdGhlIG1vbnRoXG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnZXInO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vla1xuICAgICAgICAgICAgZG95OiAzLCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIgKDcgKyAwIC0gNClcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL3JhdGl8c29rYWxsaW18ZG9ucGFyYW18c2FuamUvLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICdyYXRpJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnc29rYWxsaW0nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnZG9ucGFyYW0nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPiAxMiA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnc2FuamUnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAncmF0aSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAnc29rYWxsaW0nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RvbnBhcmFtJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzYW5qZSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAncmF0aSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ29tTGF0bjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBHdWphcmF0aSBbZ3VdXG4vLyEgYXV0aG9yIDogS2F1c2hpayBUaGFua2kgOiBodHRwczovL2dpdGh1Yi5jb20vS2F1c2hpazE5ODdcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICAgICAxOiAn4KunJyxcbiAgICAgICAgICAgIDI6ICfgq6gnLFxuICAgICAgICAgICAgMzogJ+CrqScsXG4gICAgICAgICAgICA0OiAn4KuqJyxcbiAgICAgICAgICAgIDU6ICfgq6snLFxuICAgICAgICAgICAgNjogJ+CrrCcsXG4gICAgICAgICAgICA3OiAn4KutJyxcbiAgICAgICAgICAgIDg6ICfgq64nLFxuICAgICAgICAgICAgOTogJ+CrrycsXG4gICAgICAgICAgICAwOiAn4KumJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ+Crpyc6ICcxJyxcbiAgICAgICAgICAgICfgq6gnOiAnMicsXG4gICAgICAgICAgICAn4KupJzogJzMnLFxuICAgICAgICAgICAgJ+Crqic6ICc0JyxcbiAgICAgICAgICAgICfgq6snOiAnNScsXG4gICAgICAgICAgICAn4KusJzogJzYnLFxuICAgICAgICAgICAgJ+CrrSc6ICc3JyxcbiAgICAgICAgICAgICfgq64nOiAnOCcsXG4gICAgICAgICAgICAn4KuvJzogJzknLFxuICAgICAgICAgICAgJ+Crpic6ICcwJyxcbiAgICAgICAgfTtcblxuICAgIHZhciBndSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2d1Jywge1xuICAgICAgICBtb250aHM6ICfgqpzgqr7gqqjgq43gqq/gq4HgqobgqrDgq4Bf4Kqr4KuH4Kqs4KuN4Kqw4KuB4KqG4Kqw4KuAX+CqruCqvuCqsOCrjeCqml/gqo/gqqrgq43gqrDgqr/gqrJf4Kqu4KuHX+CqnOCrguCqqF/gqpzgq4HgqrLgqr7gqohf4KqR4KqX4Kq44KuN4KqfX+CquOCqquCrjeCqn+Crh+CqruCrjeCqrOCqsF/gqpHgqpXgq43gqp/gq43gqqzgqrBf4Kqo4Kq14KuH4Kqu4KuN4Kqs4KqwX+CqoeCqv+CquOCrh+CqruCrjeCqrOCqsCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn4Kqc4Kq+4Kqo4KuN4Kqv4KuBLl/gqqvgq4fgqqzgq43gqrDgq4EuX+CqruCqvuCqsOCrjeCqml/gqo/gqqrgq43gqrDgqr8uX+CqruCrh1/gqpzgq4Lgqqhf4Kqc4KuB4Kqy4Kq+Ll/gqpHgqpcuX+CquOCqquCrjeCqn+Crhy5f4KqR4KqV4KuN4Kqf4KuNLl/gqqjgqrXgq4cuX+CqoeCqv+CquOCrhy4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICfgqrDgqrXgqr/gqrXgqr7gqrBf4Kq44KuL4Kqu4Kq14Kq+4KqwX+CqruCqguCql+Cqs+CqteCqvuCqsF/gqqzgq4Hgqqfgq43gqrXgqr7gqrBf4KqX4KuB4Kqw4KuB4Kq14Kq+4KqwX+CqtuCrgeCqleCrjeCqsOCqteCqvuCqsF/gqrbgqqjgqr/gqrXgqr7gqrAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgqrDgqrXgqr9f4Kq44KuL4KquX+CqruCqguCql+Cqs1/gqqzgq4Hgqqfgq41f4KqX4KuB4Kqw4KuBX+CqtuCrgeCqleCrjeCqsF/gqrbgqqjgqr8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4KqwX+CquOCri1/gqq7gqoJf4Kqs4KuBX+Cql+CrgV/gqrbgq4Ff4Kq2Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0g4Kq14Kq+4KqX4KuN4Kqv4KuHJyxcbiAgICAgICAgICAgIExUUzogJ0EgaDptbTpzcyDgqrXgqr7gqpfgq43gqq/gq4cnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSwgQSBoOm1tIOCqteCqvuCql+CrjeCqr+CrhycsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSDgqrXgqr7gqpfgq43gqq/gq4cnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgqobgqpxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4KqV4Kq+4Kqy4KuHXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4KqX4KqH4KqV4Kq+4Kqy4KuHXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgqqrgqr7gqpvgqrLgqr5dIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg4Kqu4Kq+JyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDgqqrgqrngq4fgqrLgqr4nLFxuICAgICAgICAgICAgczogJ+CqheCqruCrgeCqlSDgqqrgqrPgq4snLFxuICAgICAgICAgICAgc3M6ICclZCDgqrjgq4fgqpXgqoLgqqEnLFxuICAgICAgICAgICAgbTogJ+Cqj+CqlSDgqq7gqr/gqqjgqr/gqp8nLFxuICAgICAgICAgICAgbW06ICclZCDgqq7gqr/gqqjgqr/gqp8nLFxuICAgICAgICAgICAgaDogJ+Cqj+CqlSDgqpXgqrLgqr7gqpUnLFxuICAgICAgICAgICAgaGg6ICclZCDgqpXgqrLgqr7gqpUnLFxuICAgICAgICAgICAgZDogJ+Cqj+CqlSDgqqbgqr/gqrXgqrgnLFxuICAgICAgICAgICAgZGQ6ICclZCDgqqbgqr/gqrXgqrgnLFxuICAgICAgICAgICAgTTogJ+Cqj+CqlSDgqq7gqrngqr/gqqjgq4snLFxuICAgICAgICAgICAgTU06ICclZCDgqq7gqrngqr/gqqjgq4snLFxuICAgICAgICAgICAgeTogJ+Cqj+CqlSDgqrXgqrDgq43gqrcnLFxuICAgICAgICAgICAgeXk6ICclZCDgqrXgqrDgq43gqrcnLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4Kun4Kuo4Kup4Kuq4Kur4Kus4Kut4Kuu4Kuv4KumXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICAvLyBHdWphcmF0aSBub3RhdGlvbiBmb3IgbWVyaWRpZW1zIGFyZSBxdWl0ZSBmdXp6eSBpbiBwcmFjdGljZS4gV2hpbGUgdGhlcmUgZXhpc3RzXG4gICAgICAgIC8vIGEgcmlnaWQgbm90aW9uIG9mIGEgJ1BhaGFyJyBpdCBpcyBub3QgdXNlZCBhcyByaWdpZGx5IGluIG1vZGVybiBHdWphcmF0aS5cbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+CqsOCqvuCqpHzgqqzgqqrgq4vgqrB84Kq44Kq14Kq+4KqwfOCquOCqvuCqguCqnC8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+CqsOCqvuCqpCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDQgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CquOCqteCqvuCqsCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgqqzgqqrgq4vgqrAnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTAgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CquOCqvuCqguCqnCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqrDgqr7gqqQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CquOCqteCqvuCqsCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kqs4Kqq4KuL4KqwJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqrjgqr7gqoLgqpwnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CqsOCqvuCqpCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBndTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBIZWJyZXcgW2hlXVxuLy8hIGF1dGhvciA6IFRvbWVyIENvaGVuIDogaHR0cHM6Ly9naXRodWIuY29tL3RvbWVyXG4vLyEgYXV0aG9yIDogTW9zaGUgU2ltYW50b3YgOiBodHRwczovL2dpdGh1Yi5jb20vRGV2ZWxvcG1lbnRJTFxuLy8hIGF1dGhvciA6IFRhbCBBdGVyIDogaHR0cHM6Ly9naXRodWIuY29tL1RhbEF0ZXJcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBoZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2hlJywge1xuICAgICAgICBtb250aHM6ICfXmdeg15XXkNeoX9ek15HXqNeV15DXqF/Xnteo16Vf15DXpNeo15nXnF/XnteQ15lf15nXldeg15lf15nXldec15lf15DXldeS15XXodeYX9eh16TXmNee15HXqF/XkNeV16fXmNeV15HXqF/XoNeV15HXnteR16hf15PXptee15HXqCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn15nXoNeV17Nf16TXkdeo17Nf157XqNelX9eQ16TXqNezX9ee15DXmV/XmdeV16DXmV/XmdeV15zXmV/XkNeV15LXs1/Xodek15jXs1/XkNeV16fXs1/XoNeV15HXs1/Xk9em157Xsycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICfXqNeQ16nXldefX9ep16DXmV/Xqdec15nXqdeZX9eo15HXmdei15lf15fXnteZ16nXmV/XqdeZ16nXmV/XqdeR16onLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfXkNezX9eR17Nf15LXs1/Xk9ezX9eU17Nf15XXs1/XqdezJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9eQX9eRX9eSX9eTX9eUX9eVX9epJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgW9eRXU1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIFvXkV1NTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgW9eRXU1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBsOiAnRC9NL1lZWVknLFxuICAgICAgICAgICAgbGw6ICdEIE1NTSBZWVlZJyxcbiAgICAgICAgICAgIGxsbDogJ0QgTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgbGxsbDogJ2RkZCwgRCBNTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9eU15nXldedINeR1r5dTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vXnteX16gg15HWvl1MVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9eR16nXoteUXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9eQ16rXnteV15wg15HWvl1MVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vXkdeZ15XXnV0gZGRkZCBb15TXkNeX16jXldefINeR16nXoteUXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9eR16LXldeTICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICfXnNek16DXmSAlcycsXG4gICAgICAgICAgICBzOiAn157Xodek16gg16nXoNeZ15XXqicsXG4gICAgICAgICAgICBzczogJyVkINep16DXmdeV16onLFxuICAgICAgICAgICAgbTogJ9eT16fXlCcsXG4gICAgICAgICAgICBtbTogJyVkINeT16fXldeqJyxcbiAgICAgICAgICAgIGg6ICfXqdei15QnLFxuICAgICAgICAgICAgaGg6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAn16nXoteq15nXmdedJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcg16nXoteV16onO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGQ6ICfXmdeV150nLFxuICAgICAgICAgICAgZGQ6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAn15nXldee15nXmdedJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcg15nXnteZ150nO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIE06ICfXl9eV15PXqScsXG4gICAgICAgICAgICBNTTogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICfXl9eV15PXqdeZ15nXnSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnINeX15XXk9ep15nXnSc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeTogJ9ep16DXlCcsXG4gICAgICAgICAgICB5eTogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICfXqdeg16rXmdeZ150nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyICUgMTAgPT09IDAgJiYgbnVtYmVyICE9PSAxMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDXqdeg15QnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDXqdeg15nXnSc7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOlxuICAgICAgICAgICAgL9eQ15fXlFwi16Z815zXpNeg15RcItemfNeQ15fXqNeZINeU16bXlNeo15nXmdedfNec16TXoNeZINeU16bXlNeo15nXmdedfNec16TXoNeV16og15HXlden16h815HXkdeV16fXqHzXkdei16jXkS9pLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAvXijXkNeX15RcItemfNeQ15fXqNeZINeU16bXlNeo15nXmdedfNeR16LXqNeRKSQvLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA1KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfXnNek16DXldeqINeR15XXp9eoJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfXkdeR15XXp9eoJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAn15zXpNeg15RcItemJyA6ICfXnNek16DXmSDXlNem15TXqNeZ15nXnSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxOCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ9eQ15fXlFwi16YnIDogJ9eQ15fXqNeZINeU16bXlNeo15nXmdedJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfXkdei16jXkSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gaGU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogSGluZGkgW2hpXVxuLy8hIGF1dGhvciA6IE1heWFuayBTaW5naGFsIDogaHR0cHM6Ly9naXRodWIuY29tL21heWFua3NpbmdoYWxcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICAgICAxOiAn4KWnJyxcbiAgICAgICAgICAgIDI6ICfgpagnLFxuICAgICAgICAgICAgMzogJ+ClqScsXG4gICAgICAgICAgICA0OiAn4KWqJyxcbiAgICAgICAgICAgIDU6ICfgpasnLFxuICAgICAgICAgICAgNjogJ+ClrCcsXG4gICAgICAgICAgICA3OiAn4KWtJyxcbiAgICAgICAgICAgIDg6ICfgpa4nLFxuICAgICAgICAgICAgOTogJ+ClrycsXG4gICAgICAgICAgICAwOiAn4KWmJyxcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ+Clpyc6ICcxJyxcbiAgICAgICAgICAgICfgpagnOiAnMicsXG4gICAgICAgICAgICAn4KWpJzogJzMnLFxuICAgICAgICAgICAgJ+Clqic6ICc0JyxcbiAgICAgICAgICAgICfgpasnOiAnNScsXG4gICAgICAgICAgICAn4KWsJzogJzYnLFxuICAgICAgICAgICAgJ+ClrSc6ICc3JyxcbiAgICAgICAgICAgICfgpa4nOiAnOCcsXG4gICAgICAgICAgICAn4KWvJzogJzknLFxuICAgICAgICAgICAgJ+Clpic6ICcwJyxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzUGFyc2UgPSBbXG4gICAgICAgICAgICAvXuCknOCkqC9pLFxuICAgICAgICAgICAgL17gpKvgpLzgpLB84KSr4KSwL2ksXG4gICAgICAgICAgICAvXuCkruCkvuCksOCljeCkmi9pLFxuICAgICAgICAgICAgL17gpIXgpKrgpY3gpLDgpYgvaSxcbiAgICAgICAgICAgIC9e4KSu4KSIL2ksXG4gICAgICAgICAgICAvXuCknOClguCkqC9pLFxuICAgICAgICAgICAgL17gpJzgpYHgpLIvaSxcbiAgICAgICAgICAgIC9e4KSF4KSXL2ksXG4gICAgICAgICAgICAvXuCkuOCkv+CkpOCkgnzgpLjgpL/gpKQvaSxcbiAgICAgICAgICAgIC9e4KSF4KSV4KWN4KSf4KWCL2ksXG4gICAgICAgICAgICAvXuCkqOCktXzgpKjgpLXgpIIvaSxcbiAgICAgICAgICAgIC9e4KSm4KS/4KS44KSCfOCkpuCkv+CkuC9pLFxuICAgICAgICBdLFxuICAgICAgICBzaG9ydE1vbnRoc1BhcnNlID0gW1xuICAgICAgICAgICAgL17gpJzgpKgvaSxcbiAgICAgICAgICAgIC9e4KSr4KS84KSwL2ksXG4gICAgICAgICAgICAvXuCkruCkvuCksOCljeCkmi9pLFxuICAgICAgICAgICAgL17gpIXgpKrgpY3gpLDgpYgvaSxcbiAgICAgICAgICAgIC9e4KSu4KSIL2ksXG4gICAgICAgICAgICAvXuCknOClguCkqC9pLFxuICAgICAgICAgICAgL17gpJzgpYHgpLIvaSxcbiAgICAgICAgICAgIC9e4KSF4KSXL2ksXG4gICAgICAgICAgICAvXuCkuOCkv+CkpC9pLFxuICAgICAgICAgICAgL17gpIXgpJXgpY3gpJ/gpYIvaSxcbiAgICAgICAgICAgIC9e4KSo4KS1L2ksXG4gICAgICAgICAgICAvXuCkpuCkv+CkuC9pLFxuICAgICAgICBdO1xuXG4gICAgdmFyIGhpID0gbW9tZW50LmRlZmluZUxvY2FsZSgnaGknLCB7XG4gICAgICAgIG1vbnRoczoge1xuICAgICAgICAgICAgZm9ybWF0OiAn4KSc4KSo4KS14KSw4KWAX+Ckq+CkvOCksOCkteCksOClgF/gpK7gpL7gpLDgpY3gpJpf4KSF4KSq4KWN4KSw4KWI4KSyX+CkruCkiF/gpJzgpYLgpKhf4KSc4KWB4KSy4KS+4KSIX+CkheCkl+CkuOCljeCkpF/gpLjgpL/gpKTgpK7gpY3gpKzgpLBf4KSF4KSV4KWN4KSf4KWC4KSs4KSwX+CkqOCkteCkruCljeCkrOCksF/gpKbgpL/gpLjgpK7gpY3gpKzgpLAnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6XG4gICAgICAgICAgICAgICAgJ+CknOCkqOCkteCksOClgF/gpKvgpLDgpLXgpLDgpYBf4KSu4KS+4KSw4KWN4KSaX+CkheCkquCljeCksOCliOCksl/gpK7gpIhf4KSc4KWC4KSoX+CknOClgeCksuCkvuCkiF/gpIXgpJfgpLjgpY3gpKRf4KS44KS/4KSk4KSC4KSs4KSwX+CkheCkleCljeCkn+ClguCkrOCksF/gpKjgpLXgpILgpKzgpLBf4KSm4KS/4KS44KSC4KSs4KSwJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn4KSc4KSoLl/gpKvgpLzgpLAuX+CkruCkvuCksOCljeCkml/gpIXgpKrgpY3gpLDgpYguX+CkruCkiF/gpJzgpYLgpKhf4KSc4KWB4KSyLl/gpIXgpJcuX+CkuOCkv+CkpC5f4KSF4KSV4KWN4KSf4KWCLl/gpKjgpLUuX+CkpuCkv+CkuC4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAn4KSw4KS14KS/4KS14KS+4KSwX+CkuOCli+CkruCkteCkvuCksF/gpK7gpILgpJfgpLLgpLXgpL7gpLBf4KSs4KWB4KSn4KS14KS+4KSwX+Ckl+ClgeCksOClguCkteCkvuCksF/gpLbgpYHgpJXgpY3gpLDgpLXgpL7gpLBf4KS24KSo4KS/4KS14KS+4KSwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4KSw4KS14KS/X+CkuOCli+Ckrl/gpK7gpILgpJfgpLJf4KSs4KWB4KSnX+Ckl+ClgeCksOClgl/gpLbgpYHgpJXgpY3gpLBf4KS24KSo4KS/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+CksF/gpLjgpYtf4KSu4KSCX+CkrOClgV/gpJfgpYFf4KS24KWBX+Ckticuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnQSBoOm1tIOCkrOCknOClhycsXG4gICAgICAgICAgICBMVFM6ICdBIGg6bW06c3Mg4KSs4KSc4KWHJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVksIEEgaDptbSDgpKzgpJzgpYcnLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0g4KSs4KSc4KWHJyxcbiAgICAgICAgfSxcblxuICAgICAgICBtb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2U6IHNob3J0TW9udGhzUGFyc2UsXG5cbiAgICAgICAgbW9udGhzUmVnZXg6XG4gICAgICAgICAgICAvXijgpJzgpKjgpLXgpLDgpYB84KSc4KSoXFwuP3zgpKvgpLzgpLDgpLXgpLDgpYB84KSr4KSw4KS14KSw4KWAfOCkq+CkvOCksFxcLj984KSu4KS+4KSw4KWN4KSaP3zgpIXgpKrgpY3gpLDgpYjgpLJ84KSF4KSq4KWN4KSw4KWIXFwuP3zgpK7gpIg/fOCknOClguCkqD984KSc4KWB4KSy4KS+4KSIfOCknOClgeCkslxcLj984KSF4KSX4KS44KWN4KSkfOCkheCkl1xcLj984KS44KS/4KSk4KSu4KWN4KSs4KSwfOCkuOCkv+CkpOCkguCkrOCksHzgpLjgpL/gpKRcXC4/fOCkheCkleCljeCkn+ClguCkrOCksHzgpIXgpJXgpY3gpJ/gpYJcXC4/fOCkqOCkteCkruCljeCkrOCksHzgpKjgpLXgpILgpKzgpLB84KSo4KS1XFwuP3zgpKbgpL/gpLjgpK7gpY3gpKzgpLB84KSm4KS/4KS44KSC4KSs4KSwfOCkpuCkv+CkuFxcLj8pL2ksXG5cbiAgICAgICAgbW9udGhzU2hvcnRSZWdleDpcbiAgICAgICAgICAgIC9eKOCknOCkqOCkteCksOClgHzgpJzgpKhcXC4/fOCkq+CkvOCksOCkteCksOClgHzgpKvgpLDgpLXgpLDgpYB84KSr4KS84KSwXFwuP3zgpK7gpL7gpLDgpY3gpJo/fOCkheCkquCljeCksOCliOCksnzgpIXgpKrgpY3gpLDgpYhcXC4/fOCkruCkiD984KSc4KWC4KSoP3zgpJzgpYHgpLLgpL7gpIh84KSc4KWB4KSyXFwuP3zgpIXgpJfgpLjgpY3gpKR84KSF4KSXXFwuP3zgpLjgpL/gpKTgpK7gpY3gpKzgpLB84KS44KS/4KSk4KSC4KSs4KSwfOCkuOCkv+CkpFxcLj984KSF4KSV4KWN4KSf4KWC4KSs4KSwfOCkheCkleCljeCkn+ClglxcLj984KSo4KS14KSu4KWN4KSs4KSwfOCkqOCkteCkguCkrOCksHzgpKjgpLVcXC4/fOCkpuCkv+CkuOCkruCljeCkrOCksHzgpKbgpL/gpLjgpILgpKzgpLB84KSm4KS/4KS4XFwuPykvaSxcblxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDpcbiAgICAgICAgICAgIC9eKOCknOCkqOCkteCksOClgD984KSr4KS84KSw4KS14KSw4KWAfOCkq+CksOCkteCksOClgD984KSu4KS+4KSw4KWN4KSaP3zgpIXgpKrgpY3gpLDgpYjgpLI/fOCkruCkiD984KSc4KWC4KSoP3zgpJzgpYHgpLLgpL7gpIg/fOCkheCkl+CkuOCljeCkpD984KS44KS/4KSk4KSu4KWN4KSs4KSwfOCkuOCkv+CkpOCkguCkrOCksHzgpLjgpL/gpKQ/XFwuP3zgpIXgpJXgpY3gpJ/gpYLgpKzgpLB84KSF4KSV4KWN4KSf4KWCXFwuP3zgpKjgpLXgpK7gpY3gpKzgpLB84KSo4KS14KSC4KSs4KSwP3zgpKbgpL/gpLjgpK7gpY3gpKzgpLB84KSm4KS/4KS44KSC4KSs4KSwPykvaSxcblxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OlxuICAgICAgICAgICAgL14o4KSc4KSoXFwuP3zgpKvgpLzgpLBcXC4/fOCkruCkvuCksOCljeCkmj984KSF4KSq4KWN4KSw4KWIXFwuP3zgpK7gpIg/fOCknOClguCkqD984KSc4KWB4KSyXFwuP3zgpIXgpJdcXC4/fOCkuOCkv+CkpFxcLj984KSF4KSV4KWN4KSf4KWCXFwuP3zgpKjgpLVcXC4/fOCkpuCkv+CkuFxcLj8pL2ksXG5cbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4KSG4KScXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+CkleCksl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+CkleCksl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4KSq4KS/4KSb4KSy4KWHXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIOCkruClh+CkgicsXG4gICAgICAgICAgICBwYXN0OiAnJXMg4KSq4KS54KSy4KWHJyxcbiAgICAgICAgICAgIHM6ICfgpJXgpYHgpJsg4KS54KWAIOCkleCljeCkt+CkoycsXG4gICAgICAgICAgICBzczogJyVkIOCkuOClh+CkleCkguCkoScsXG4gICAgICAgICAgICBtOiAn4KSP4KSVIOCkruCkv+CkqOCknycsXG4gICAgICAgICAgICBtbTogJyVkIOCkruCkv+CkqOCknycsXG4gICAgICAgICAgICBoOiAn4KSP4KSVIOCkmOCkguCkn+CkvicsXG4gICAgICAgICAgICBoaDogJyVkIOCkmOCkguCkn+ClhycsXG4gICAgICAgICAgICBkOiAn4KSP4KSVIOCkpuCkv+CkqCcsXG4gICAgICAgICAgICBkZDogJyVkIOCkpuCkv+CkqCcsXG4gICAgICAgICAgICBNOiAn4KSP4KSVIOCkruCkueClgOCkqOClhycsXG4gICAgICAgICAgICBNTTogJyVkIOCkruCkueClgOCkqOClhycsXG4gICAgICAgICAgICB5OiAn4KSP4KSVIOCkteCksOCljeCktycsXG4gICAgICAgICAgICB5eTogJyVkIOCkteCksOCljeCktycsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgpafgpajgpangpargpavgpazgpa3gpa7gpa/gpaZdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIC8vIEhpbmRpIG5vdGF0aW9uIGZvciBtZXJpZGllbXMgYXJlIHF1aXRlIGZ1enp5IGluIHByYWN0aWNlLiBXaGlsZSB0aGVyZSBleGlzdHNcbiAgICAgICAgLy8gYSByaWdpZCBub3Rpb24gb2YgYSAnUGFoYXInIGl0IGlzIG5vdCB1c2VkIGFzIHJpZ2lkbHkgaW4gbW9kZXJuIEhpbmRpLlxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4KSw4KS+4KSkfOCkuOClgeCkrOCkuXzgpKbgpYvgpKrgpLngpLB84KS24KS+4KSuLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4KSw4KS+4KSkJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KS44KWB4KSs4KS5Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CkpuCli+CkquCkueCksCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KS24KS+4KSuJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CksOCkvuCkpCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KS44KWB4KSs4KS5JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpKbgpYvgpKrgpLngpLAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CktuCkvuCkric7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSw4KS+4KSkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGhpO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IENyb2F0aWFuIFtocl1cbi8vISBhdXRob3IgOiBCb2phbiBNYXJrb3ZpxIcgOiBodHRwczovL2dpdGh1Yi5jb20vYm1hcmtvdmljXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG51bWJlciArICcgJztcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2VrdW5kYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3Nla3VuZGUnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2VrdW5kaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdqZWRuYSBtaW51dGEnIDogJ2plZG5lIG1pbnV0ZSc7XG4gICAgICAgICAgICBjYXNlICdtbSc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21pbnV0YSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21pbnV0ZSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtaW51dGEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnamVkYW4gc2F0JyA6ICdqZWRub2cgc2F0YSc7XG4gICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3NhdCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3NhdGEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2F0aSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2Rhbic7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdkYW5hJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWplc2VjJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWplc2VjYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtamVzZWNpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZ29kaW5hJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZ29kaW5lJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2dvZGluYSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgaHIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdocicsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICdzaWplxI1uamFfdmVsamHEjWVfb8W+dWprYV90cmF2bmphX3N2aWJuamFfbGlwbmphX3NycG5qYV9rb2xvdm96YV9ydWpuYV9saXN0b3BhZGFfc3R1ZGVub2dhX3Byb3NpbmNhJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICdzaWplxI1hbmpfdmVsamHEjWFfb8W+dWpha190cmF2YW5qX3N2aWJhbmpfbGlwYW5qX3NycGFual9rb2xvdm96X3J1amFuX2xpc3RvcGFkX3N0dWRlbmlfcHJvc2luYWMnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdzaWouX3ZlbGouX2/FvnUuX3RyYS5fc3ZpLl9saXAuX3NycC5fa29sLl9ydWouX2xpcy5fc3R1Ll9wcm8uJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnbmVkamVsamFfcG9uZWRqZWxqYWtfdXRvcmFrX3NyaWplZGFfxI1ldHZydGFrX3BldGFrX3N1Ym90YScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ25lZC5fcG9uLl91dG8uX3NyaS5fxI1ldC5fcGV0Ll9zdWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ25lX3BvX3V0X3NyX8SNZV9wZV9zdScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEbyBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRG8gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIERvIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbZGFuYXMgdV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tzdXRyYSB1XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbbmVkamVsanVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtzcmlqZWR1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbc3Vib3R1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBkZGRkIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbanXEjWVyIHVdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Byb8WhbHVdIFtuZWRqZWxqdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJvxaFsdV0gW3NyaWplZHVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Byb8WhbGVdIFtzdWJvdGVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Byb8WhbGldIGRkZGQgW3VdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICd6YSAlcycsXG4gICAgICAgICAgICBwYXN0OiAncHJpamUgJXMnLFxuICAgICAgICAgICAgczogJ3BhciBzZWt1bmRpJyxcbiAgICAgICAgICAgIHNzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQ6ICdkYW4nLFxuICAgICAgICAgICAgZGQ6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE06ICdtamVzZWMnLFxuICAgICAgICAgICAgTU06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6ICdnb2RpbnUnLFxuICAgICAgICAgICAgeXk6IHRyYW5zbGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBocjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBIdW5nYXJpYW4gW2h1XVxuLy8hIGF1dGhvciA6IEFkYW0gQnJ1bm5lciA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hZGFtYnJ1bm5lclxuLy8hIGF1dGhvciA6IFBldGVyIFZpc3p0ICA6IGh0dHBzOi8vZ2l0aHViLmNvbS9wYXNzYXRndFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHdlZWtFbmRpbmdzID1cbiAgICAgICAgJ3Zhc8Ohcm5hcCBow6l0ZsWRbiBrZWRkZW4gc3plcmTDoW4gY3PDvHTDtnJ0w7Zrw7ZuIHDDqW50ZWtlbiBzem9tYmF0b24nLnNwbGl0KCcgJyk7XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgbnVtID0gbnVtYmVyO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXhcbiAgICAgICAgICAgICAgICAgICAgPyAnbsOpaMOhbnkgbcOhc29kcGVyYydcbiAgICAgICAgICAgICAgICAgICAgOiAnbsOpaMOhbnkgbcOhc29kcGVyY2UnO1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW0gKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeClcbiAgICAgICAgICAgICAgICAgICAgPyAnIG3DoXNvZHBlcmMnXG4gICAgICAgICAgICAgICAgICAgIDogJyBtw6Fzb2RwZXJjZSc7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VneScgKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgcGVyYycgOiAnIHBlcmNlJyk7XG4gICAgICAgICAgICBjYXNlICdtbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bSArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyBwZXJjJyA6ICcgcGVyY2UnKTtcbiAgICAgICAgICAgIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnZWd5JyArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyDDs3JhJyA6ICcgw7Nyw6FqYScpO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW0gKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgw7NyYScgOiAnIMOzcsOhamEnKTtcbiAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnZWd5JyArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyBuYXAnIDogJyBuYXBqYScpO1xuICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW0gKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgbmFwJyA6ICcgbmFwamEnKTtcbiAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIHJldHVybiAnZWd5JyArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyBow7NuYXAnIDogJyBow7NuYXBqYScpO1xuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW0gKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgaMOzbmFwJyA6ICcgaMOzbmFwamEnKTtcbiAgICAgICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgICAgICAgIHJldHVybiAnZWd5JyArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyDDqXYnIDogJyDDqXZlJyk7XG4gICAgICAgICAgICBjYXNlICd5eSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bSArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyDDqXYnIDogJyDDqXZlJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBmdW5jdGlvbiB3ZWVrKGlzRnV0dXJlKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAoaXNGdXR1cmUgPyAnJyA6ICdbbcO6bHRdICcpICtcbiAgICAgICAgICAgICdbJyArXG4gICAgICAgICAgICB3ZWVrRW5kaW5nc1t0aGlzLmRheSgpXSArXG4gICAgICAgICAgICAnXSBMVFsta29yXSdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB2YXIgaHUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdodScsIHtcbiAgICAgICAgbW9udGhzOiAnamFudcOhcl9mZWJydcOhcl9tw6FyY2l1c1/DoXByaWxpc19tw6FqdXNfasO6bml1c19qw7psaXVzX2F1Z3VzenR1c19zemVwdGVtYmVyX29rdMOzYmVyX25vdmVtYmVyX2RlY2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdqYW4uX2ZlYi5fbcOhcmMuX8OhcHIuX23DoWouX2rDum4uX2rDumwuX2F1Zy5fc3plcHQuX29rdC5fbm92Ll9kZWMuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAndmFzw6FybmFwX2jDqXRmxZFfa2VkZF9zemVyZGFfY3PDvHTDtnJ0w7ZrX3DDqW50ZWtfc3pvbWJhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ3Zhc19ow6l0X2tlZGRfc3plX2Nzw7x0X3DDqW5fc3pvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ3ZfaF9rX3N6ZV9jc19wX3N6bycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdZWVlZLk1NLkRELicsXG4gICAgICAgICAgICBMTDogJ1lZWVkuIE1NTU0gRC4nLFxuICAgICAgICAgICAgTExMOiAnWVlZWS4gTU1NTSBELiBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdZWVlZLiBNTU1NIEQuLCBkZGRkIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvZGV8ZHUvaSxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQuY2hhckF0KDEpLnRvTG93ZXJDYXNlKCkgPT09ICd1JztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA9PT0gdHJ1ZSA/ICdkZScgOiAnREUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA9PT0gdHJ1ZSA/ICdkdScgOiAnRFUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1ttYV0gTFRbLWtvcl0nLFxuICAgICAgICAgICAgbmV4dERheTogJ1tob2xuYXBdIExUWy1rb3JdJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdlZWsuY2FsbCh0aGlzLCB0cnVlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiAnW3RlZ25hcF0gTFRbLWtvcl0nLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2Vlay5jYWxsKHRoaXMsIGZhbHNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIG3Dumx2YScsXG4gICAgICAgICAgICBwYXN0OiAnJXMnLFxuICAgICAgICAgICAgczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgc3M6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZGQ6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE1NOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5OiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5eTogdHJhbnNsYXRlLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGh1O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEFybWVuaWFuIFtoeS1hbV1cbi8vISBhdXRob3IgOiBBcm1lbmRhcmFieWFuIDogaHR0cHM6Ly9naXRodWIuY29tL2FybWVuZGFyYWJ5YW5cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBoeUFtID0gbW9tZW50LmRlZmluZUxvY2FsZSgnaHktYW0nLCB7XG4gICAgICAgIG1vbnRoczoge1xuICAgICAgICAgICAgZm9ybWF0OiAn1bDVuNaC1bbVvtWh1oDVq1/Wg9Wl1b/WgNW+1aHWgNWrX9W01aHWgNW/1atf1aHVutaA1avVrNWrX9W01aHVtdWr1b3Vq1/VsNW41oLVttWr1b3Vq1/VsNW41oLVrNWr1b3Vq1/WhdWj1bjVvdW/1bjVvdWrX9W91aXVutW/1aXVtNWi1aXWgNWrX9Ww1bjVr9W/1aXVtNWi1aXWgNWrX9W21bjVtdWl1bTVotWl1oDVq1/VpNWl1a/Vv9Wl1bTVotWl1oDVqycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhbmRhbG9uZTpcbiAgICAgICAgICAgICAgICAn1bDVuNaC1bbVvtWh1oBf1oPVpdW/1oDVvtWh1oBf1bTVodaA1b9f1aHVutaA1avVrF/VtNWh1bXVq9W9X9Ww1bjWgtW21avVvV/VsNW41oLVrNWr1b1f1oXVo9W41b3Vv9W41b1f1b3VpdW61b/VpdW01aLVpdaAX9Ww1bjVr9W/1aXVtNWi1aXWgF/VttW41bXVpdW01aLVpdaAX9Wk1aXVr9W/1aXVtNWi1aXWgCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn1bDVttW+X9aD1b/WgF/VtNaA1b9f1aHVutaAX9W01bXVvV/VsNW21b1f1bDVrNW9X9aF1aPVvV/VvdW61b9f1bDVr9W/X9W21bTVol/VpNWv1b8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ9Wv1avWgNWh1a/Vq1/VpdaA1a/VuNaC1bfVodWi1anVq1/VpdaA1aXWhNW31aHVotWp1atf1bnVuNaA1aXWhNW31aHVotWp1atf1bDVq9W21aPVt9Wh1aLVqdWrX9W41oLWgNWi1aHVqV/Vt9Wh1aLVodWpJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfVr9aA1a9f1aXWgNWvX9Wl1oDWhF/VudaA1oRf1bDVttWjX9W41oLWgNWiX9W31aLVqScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfVr9aA1a9f1aXWgNWvX9Wl1oDWhF/VudaA1oRf1bDVttWjX9W41oLWgNWiX9W31aLVqScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWSDVqS4nLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkg1akuLCBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkg1akuLCBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9Wh1bXVvdaF1oBdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb1b7VodWy1ahdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb1aXWgNWl1a9dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIFvWhdaA1agg1arVodW01ahdIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW9Wh1bbWgdWh1a5dIGRkZGQgW9aF1oDVqCDVqtWh1bTVqF0gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg1bDVpdW/1bgnLFxuICAgICAgICAgICAgcGFzdDogJyVzINWh1bzVodW7JyxcbiAgICAgICAgICAgIHM6ICfVtNWrINaE1aHVttWrINW+1aHVtdaA1a/VtdWh1bYnLFxuICAgICAgICAgICAgc3M6ICclZCDVvtWh1bXWgNWv1bXVodW2JyxcbiAgICAgICAgICAgIG06ICfWgNW41brVpScsXG4gICAgICAgICAgICBtbTogJyVkINaA1bjVutWlJyxcbiAgICAgICAgICAgIGg6ICfVqtWh1bQnLFxuICAgICAgICAgICAgaGg6ICclZCDVqtWh1bQnLFxuICAgICAgICAgICAgZDogJ9aF1oAnLFxuICAgICAgICAgICAgZGQ6ICclZCDWhdaAJyxcbiAgICAgICAgICAgIE06ICfVodW01avVvScsXG4gICAgICAgICAgICBNTTogJyVkINWh1bTVq9W9JyxcbiAgICAgICAgICAgIHk6ICfVv9Wh1oDVqycsXG4gICAgICAgICAgICB5eTogJyVkINW/1aHWgNWrJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9Wj1avVt9Wl1oDVvtWhfNWh1bzVodW+1bjVv9W+1aF81oHVpdaA1aXVr9W+1aF81aXWgNWl1a/VuNW11aHVti8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9eKNaB1aXWgNWl1a/VvtWhfNWl1oDVpdWv1bjVtdWh1bYpJC8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfVo9Wr1bfVpdaA1b7VoSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn1aHVvNWh1b7VuNW/1b7VoSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn1oHVpdaA1aXVr9W+1aEnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Wl1oDVpdWv1bjVtdWh1bYnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn18XFxkezEsMn0tKNWr1bZ81oDVpCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICBjYXNlICdERERvJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct1avVtic7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct1oDVpCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGh5QW07XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogSW5kb25lc2lhbiBbaWRdXG4vLyEgYXV0aG9yIDogTW9oYW1tYWQgU2F0cmlvIFV0b21vIDogaHR0cHM6Ly9naXRodWIuY29tL3R5b2tcbi8vISByZWZlcmVuY2U6IGh0dHA6Ly9pZC53aWtpc291cmNlLm9yZy93aWtpL1BlZG9tYW5fVW11bV9FamFhbl9CYWhhc2FfSW5kb25lc2lhX3lhbmdfRGlzZW1wdXJuYWthblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGlkID0gbW9tZW50LmRlZmluZUxvY2FsZSgnaWQnLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcmlfRmVicnVhcmlfTWFyZXRfQXByaWxfTWVpX0p1bmlfSnVsaV9BZ3VzdHVzX1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0Rlc2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbl9GZWJfTWFyX0Fwcl9NZWlfSnVuX0p1bF9BZ3RfU2VwX09rdF9Ob3ZfRGVzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ01pbmdndV9TZW5pbl9TZWxhc2FfUmFidV9LYW1pc19KdW1hdF9TYWJ0dScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ01pbl9TZW5fU2VsX1JhYl9LYW1fSnVtX1NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdNZ19Tbl9TbF9SYl9LbV9KbV9TYicuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEgubW0nLFxuICAgICAgICAgICAgTFRTOiAnSEgubW0uc3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL3BhZ2l8c2lhbmd8c29yZXxtYWxhbS8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ3BhZ2knKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnc2lhbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3NvcmUnIHx8IG1lcmlkaWVtID09PSAnbWFsYW0nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzIDwgMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3BhZ2knO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VycyA8IDE1KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzaWFuZyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NvcmUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ21hbGFtJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSGFyaSBpbmkgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbQmVzb2sgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbS2VtYXJpbiBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtsYWx1IHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2RhbGFtICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyB5YW5nIGxhbHUnLFxuICAgICAgICAgICAgczogJ2JlYmVyYXBhIGRldGlrJyxcbiAgICAgICAgICAgIHNzOiAnJWQgZGV0aWsnLFxuICAgICAgICAgICAgbTogJ3NlbWVuaXQnLFxuICAgICAgICAgICAgbW06ICclZCBtZW5pdCcsXG4gICAgICAgICAgICBoOiAnc2VqYW0nLFxuICAgICAgICAgICAgaGg6ICclZCBqYW0nLFxuICAgICAgICAgICAgZDogJ3NlaGFyaScsXG4gICAgICAgICAgICBkZDogJyVkIGhhcmknLFxuICAgICAgICAgICAgTTogJ3NlYnVsYW4nLFxuICAgICAgICAgICAgTU06ICclZCBidWxhbicsXG4gICAgICAgICAgICB5OiAnc2V0YWh1bicsXG4gICAgICAgICAgICB5eTogJyVkIHRhaHVuJyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGlkO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEljZWxhbmRpYyBbaXNdXG4vLyEgYXV0aG9yIDogSGlucmlrIMOWcm4gU2lndXLDsHNzb24gOiBodHRwczovL2dpdGh1Yi5jb20vaGlucmlrXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiBwbHVyYWwobikge1xuICAgICAgICBpZiAobiAlIDEwMCA9PT0gMTEpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKG4gJSAxMCA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZVxuICAgICAgICAgICAgICAgICAgICA/ICdub2trcmFyIHNla8O6bmR1cidcbiAgICAgICAgICAgICAgICAgICAgOiAnbm9ra3J1bSBzZWvDum5kdW0nO1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIGlmIChwbHVyYWwobnVtYmVyKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ3Nla8O6bmR1cicgOiAnc2Vrw7puZHVtJylcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdzZWvDum5kYSc7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdtw61uw7p0YScgOiAnbcOtbsO6dHUnO1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIGlmIChwbHVyYWwobnVtYmVyKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICsgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbcOtbsO6dHVyJyA6ICdtw61uw7p0dW0nKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ23DrW7DunRhJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtw61uw7p0dSc7XG4gICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgaWYgKHBsdXJhbChudW1iZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdrbHVra3VzdHVuZGlyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2tsdWtrdXN0dW5kdW0nKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ2tsdWtrdXN0dW5kJztcbiAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnZGFndXInO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAnZGFnJyA6ICdkZWdpJztcbiAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICBpZiAocGx1cmFsKG51bWJlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnZGFnYXInO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAoaXNGdXR1cmUgPyAnZGFnYScgOiAnZMO2Z3VtJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnZGFndXInO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKGlzRnV0dXJlID8gJ2RhZycgOiAnZGVnaScpO1xuICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdtw6FudcOwdXInO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAnbcOhbnXDsCcgOiAnbcOhbnXDsGknO1xuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIGlmIChwbHVyYWwobnVtYmVyKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtw6FudcOwaXInO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAoaXNGdXR1cmUgPyAnbcOhbnXDsGknIDogJ23DoW51w7B1bScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ23DoW51w7B1cic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAoaXNGdXR1cmUgPyAnbcOhbnXDsCcgOiAnbcOhbnXDsGknKTtcbiAgICAgICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ8OhcicgOiAnw6FyaSc7XG4gICAgICAgICAgICBjYXNlICd5eSc6XG4gICAgICAgICAgICAgICAgaWYgKHBsdXJhbChudW1iZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICfDoXInIDogJ8OhcnVtJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICfDoXInIDogJ8OhcmknKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBpcyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2lzJywge1xuICAgICAgICBtb250aHM6ICdqYW7DumFyX2ZlYnLDumFyX21hcnNfYXByw61sX21hw61fasO6bsOtX2rDumzDrV/DoWfDunN0X3NlcHRlbWJlcl9va3TDs2Jlcl9uw7N2ZW1iZXJfZGVzZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnamFuX2ZlYl9tYXJfYXByX21hw61fasO6bl9qw7psX8OhZ8O6X3NlcF9va3RfbsOzdl9kZXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ3N1bm51ZGFndXJfbcOhbnVkYWd1cl/DvnJpw7BqdWRhZ3VyX21pw7B2aWt1ZGFndXJfZmltbXR1ZGFndXJfZsO2c3R1ZGFndXJfbGF1Z2FyZGFndXInLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ3N1bl9tw6FuX8O+cmlfbWnDsF9maW1fZsO2c19sYXUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU3VfTcOhX8Oecl9NaV9GaV9Gw7ZfTGEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgW2tsLl0gSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZIFtrbC5dIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vDrSBkYWcga2wuXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW8OhIG1vcmd1biBrbC5dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBba2wuXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW8OtIGfDpnIga2wuXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tzw63DsGFzdGFdIGRkZGQgW2tsLl0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdlZnRpciAlcycsXG4gICAgICAgICAgICBwYXN0OiAnZnlyaXIgJXMgc8Otw7BhbicsXG4gICAgICAgICAgICBzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBzczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6ICdrbHVra3VzdHVuZCcsXG4gICAgICAgICAgICBoaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZGQ6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE1NOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5OiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5eTogdHJhbnNsYXRlLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGlzO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEl0YWxpYW4gKFN3aXR6ZXJsYW5kKSBbaXQtY2hdXG4vLyEgYXV0aG9yIDogeGZoIDogaHR0cHM6Ly9naXRodWIuY29tL3hmaFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGl0Q2ggPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdpdC1jaCcsIHtcbiAgICAgICAgbW9udGhzOiAnZ2VubmFpb19mZWJicmFpb19tYXJ6b19hcHJpbGVfbWFnZ2lvX2dpdWdub19sdWdsaW9fYWdvc3RvX3NldHRlbWJyZV9vdHRvYnJlX25vdmVtYnJlX2RpY2VtYnJlJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ2dlbl9mZWJfbWFyX2Fwcl9tYWdfZ2l1X2x1Z19hZ29fc2V0X290dF9ub3ZfZGljJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ2RvbWVuaWNhX2x1bmVkw6xfbWFydGVkw6xfbWVyY29sZWTDrF9naW92ZWTDrF92ZW5lcmTDrF9zYWJhdG8nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdkb21fbHVuX21hcl9tZXJfZ2lvX3Zlbl9zYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnZG9fbHVfbWFfbWVfZ2lfdmVfc2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tPZ2dpIGFsbGVdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbRG9tYW5pIGFsbGVdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYWxsZV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tJZXJpIGFsbGVdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW2xhIHNjb3JzYV0gZGRkZCBbYWxsZV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbG8gc2NvcnNvXSBkZGRkIFthbGxlXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiBmdW5jdGlvbiAocykge1xuICAgICAgICAgICAgICAgIHJldHVybiAoL15bMC05XS4rJC8udGVzdChzKSA/ICd0cmEnIDogJ2luJykgKyAnICcgKyBzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBmYScsXG4gICAgICAgICAgICBzOiAnYWxjdW5pIHNlY29uZGknLFxuICAgICAgICAgICAgc3M6ICclZCBzZWNvbmRpJyxcbiAgICAgICAgICAgIG06ICd1biBtaW51dG8nLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGknLFxuICAgICAgICAgICAgaDogXCJ1bidvcmFcIixcbiAgICAgICAgICAgIGhoOiAnJWQgb3JlJyxcbiAgICAgICAgICAgIGQ6ICd1biBnaW9ybm8nLFxuICAgICAgICAgICAgZGQ6ICclZCBnaW9ybmknLFxuICAgICAgICAgICAgTTogJ3VuIG1lc2UnLFxuICAgICAgICAgICAgTU06ICclZCBtZXNpJyxcbiAgICAgICAgICAgIHk6ICd1biBhbm5vJyxcbiAgICAgICAgICAgIHl5OiAnJWQgYW5uaScsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbDogJyVkwronLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gaXRDaDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBJdGFsaWFuIFtpdF1cbi8vISBhdXRob3IgOiBMb3JlbnpvIDogaHR0cHM6Ly9naXRodWIuY29tL2FsaWVtXG4vLyEgYXV0aG9yOiBNYXR0aWEgTGFyZW50aXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9ub3N0YWxnaWF6XG4vLyEgYXV0aG9yOiBNYXJjbyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9NYW5mcmU5OFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGl0ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnaXQnLCB7XG4gICAgICAgIG1vbnRoczogJ2dlbm5haW9fZmViYnJhaW9fbWFyem9fYXByaWxlX21hZ2dpb19naXVnbm9fbHVnbGlvX2Fnb3N0b19zZXR0ZW1icmVfb3R0b2JyZV9ub3ZlbWJyZV9kaWNlbWJyZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdnZW5fZmViX21hcl9hcHJfbWFnX2dpdV9sdWdfYWdvX3NldF9vdHRfbm92X2RpYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdkb21lbmljYV9sdW5lZMOsX21hcnRlZMOsX21lcmNvbGVkw6xfZ2lvdmVkw6xfdmVuZXJkw6xfc2FiYXRvJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZG9tX2x1bl9tYXJfbWVyX2dpb192ZW5fc2FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ2RvX2x1X21hX21lX2dpX3ZlX3NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAnW09nZ2kgYScgK1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5ob3VycygpID4gMSA/ICdsbGUgJyA6IHRoaXMuaG91cnMoKSA9PT0gMCA/ICcgJyA6IFwibGwnXCIpICtcbiAgICAgICAgICAgICAgICAgICAgJ11MVCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHREYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAnW0RvbWFuaSBhJyArXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmhvdXJzKCkgPiAxID8gJ2xsZSAnIDogdGhpcy5ob3VycygpID09PSAwID8gJyAnIDogXCJsbCdcIikgK1xuICAgICAgICAgICAgICAgICAgICAnXUxUJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAnZGRkZCBbYScgK1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5ob3VycygpID4gMSA/ICdsbGUgJyA6IHRoaXMuaG91cnMoKSA9PT0gMCA/ICcgJyA6IFwibGwnXCIpICtcbiAgICAgICAgICAgICAgICAgICAgJ11MVCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAnW0llcmkgYScgK1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5ob3VycygpID4gMSA/ICdsbGUgJyA6IHRoaXMuaG91cnMoKSA9PT0gMCA/ICcgJyA6IFwibGwnXCIpICtcbiAgICAgICAgICAgICAgICAgICAgJ11MVCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1tMYSBzY29yc2FdIGRkZGQgW2EnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5ob3VycygpID4gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdsbGUgJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuaG91cnMoKSA9PT0gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcgJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwibGwnXCIpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXUxUJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1tMbyBzY29yc29dIGRkZGQgW2EnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5ob3VycygpID4gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdsbGUgJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuaG91cnMoKSA9PT0gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcgJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwibGwnXCIpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXUxUJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICd0cmEgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGZhJyxcbiAgICAgICAgICAgIHM6ICdhbGN1bmkgc2Vjb25kaScsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZGknLFxuICAgICAgICAgICAgbTogJ3VuIG1pbnV0bycsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0aScsXG4gICAgICAgICAgICBoOiBcInVuJ29yYVwiLFxuICAgICAgICAgICAgaGg6ICclZCBvcmUnLFxuICAgICAgICAgICAgZDogJ3VuIGdpb3JubycsXG4gICAgICAgICAgICBkZDogJyVkIGdpb3JuaScsXG4gICAgICAgICAgICB3OiAndW5hIHNldHRpbWFuYScsXG4gICAgICAgICAgICB3dzogJyVkIHNldHRpbWFuZScsXG4gICAgICAgICAgICBNOiAndW4gbWVzZScsXG4gICAgICAgICAgICBNTTogJyVkIG1lc2knLFxuICAgICAgICAgICAgeTogJ3VuIGFubm8nLFxuICAgICAgICAgICAgeXk6ICclZCBhbm5pJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsOiAnJWTCuicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBpdDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBKYXBhbmVzZSBbamFdXG4vLyEgYXV0aG9yIDogTEkgTG9uZyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9iYXJ5b25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBqYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2phJywge1xuICAgICAgICBlcmFzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2luY2U6ICcyMDE5LTA1LTAxJyxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsXG4gICAgICAgICAgICAgICAgbmFtZTogJ+S7pOWSjCcsXG4gICAgICAgICAgICAgICAgbmFycm93OiAn44u/JyxcbiAgICAgICAgICAgICAgICBhYmJyOiAnUicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpbmNlOiAnMTk4OS0wMS0wOCcsXG4gICAgICAgICAgICAgICAgdW50aWw6ICcyMDE5LTA0LTMwJyxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsXG4gICAgICAgICAgICAgICAgbmFtZTogJ+W5s+aIkCcsXG4gICAgICAgICAgICAgICAgbmFycm93OiAn4427JyxcbiAgICAgICAgICAgICAgICBhYmJyOiAnSCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpbmNlOiAnMTkyNi0xMi0yNScsXG4gICAgICAgICAgICAgICAgdW50aWw6ICcxOTg5LTAxLTA3JyxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsXG4gICAgICAgICAgICAgICAgbmFtZTogJ+aYreWSjCcsXG4gICAgICAgICAgICAgICAgbmFycm93OiAn4428JyxcbiAgICAgICAgICAgICAgICBhYmJyOiAnUycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpbmNlOiAnMTkxMi0wNy0zMCcsXG4gICAgICAgICAgICAgICAgdW50aWw6ICcxOTI2LTEyLTI0JyxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsXG4gICAgICAgICAgICAgICAgbmFtZTogJ+Wkp+atoycsXG4gICAgICAgICAgICAgICAgbmFycm93OiAn4429JyxcbiAgICAgICAgICAgICAgICBhYmJyOiAnVCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpbmNlOiAnMTg3My0wMS0wMScsXG4gICAgICAgICAgICAgICAgdW50aWw6ICcxOTEyLTA3LTI5JyxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IDYsXG4gICAgICAgICAgICAgICAgbmFtZTogJ+aYjuayuycsXG4gICAgICAgICAgICAgICAgbmFycm93OiAn442+JyxcbiAgICAgICAgICAgICAgICBhYmJyOiAnTScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpbmNlOiAnMDAwMS0wMS0wMScsXG4gICAgICAgICAgICAgICAgdW50aWw6ICcxODczLTEyLTMxJyxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsXG4gICAgICAgICAgICAgICAgbmFtZTogJ+ilv+aapicsXG4gICAgICAgICAgICAgICAgbmFycm93OiAnQUQnLFxuICAgICAgICAgICAgICAgIGFiYnI6ICdBRCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpbmNlOiAnMDAwMC0xMi0zMScsXG4gICAgICAgICAgICAgICAgdW50aWw6IC1JbmZpbml0eSxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsXG4gICAgICAgICAgICAgICAgbmFtZTogJ+e0gOWFg+WJjScsXG4gICAgICAgICAgICAgICAgbmFycm93OiAnQkMnLFxuICAgICAgICAgICAgICAgIGFiYnI6ICdCQycsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBlcmFZZWFyT3JkaW5hbFJlZ2V4OiAvKOWFg3xcXGQrKeW5tC8sXG4gICAgICAgIGVyYVllYXJPcmRpbmFsUGFyc2U6IGZ1bmN0aW9uIChpbnB1dCwgbWF0Y2gpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXRjaFsxXSA9PT0gJ+WFgycgPyAxIDogcGFyc2VJbnQobWF0Y2hbMV0gfHwgaW5wdXQsIDEwKTtcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzOiAnMeaciF8y5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyIXznmnIhfMTDmnIhfMTHmnIhfMTLmnIgnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnMeaciF8y5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyIXznmnIhfMTDmnIhfMTHmnIhfMTLmnIgnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn5pel5puc5pelX+aciOabnOaXpV/ngavmm5zml6Vf5rC05puc5pelX+acqOabnOaXpV/ph5Hmm5zml6Vf5Zyf5puc5pelJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn5pelX+aciF/ngatf5rC0X+acqF/ph5Ff5ZyfJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+aXpV/mnIhf54GrX+awtF/mnKhf6YeRX+Wcnycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ1lZWVkvTU0vREQnLFxuICAgICAgICAgICAgTEw6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgTExMOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdZWVlZ5bm0TeaciETml6UgZGRkZCBISDptbScsXG4gICAgICAgICAgICBsOiAnWVlZWS9NTS9ERCcsXG4gICAgICAgICAgICBsbDogJ1lZWVnlubRN5pyIROaXpScsXG4gICAgICAgICAgICBsbGw6ICdZWVlZ5bm0TeaciETml6UgSEg6bW0nLFxuICAgICAgICAgICAgbGxsbDogJ1lZWVnlubRN5pyIROaXpShkZGQpIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+WNiOWJjXzljYjlvowvaSxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgPT09ICfljYjlvownO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5Y2I5YmNJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfljYjlvownO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vku4rml6VdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb5piO5pelXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKG5vdykge1xuICAgICAgICAgICAgICAgIGlmIChub3cud2VlaygpICE9PSB0aGlzLndlZWsoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vmnaXpgLFdZGRkZCBMVCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogJ1vmmKjml6VdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAobm93KSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMud2VlaygpICE9PSBub3cud2VlaygpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnW+WFiOmAsV1kZGRkIExUJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2RkZGQgTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3ml6UvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgPT09IDEgPyAn5YWD5bm0JyA6IG51bWJlciArICflubQnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pelJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVz5b6MJyxcbiAgICAgICAgICAgIHBhc3Q6ICclc+WJjScsXG4gICAgICAgICAgICBzOiAn5pWw56eSJyxcbiAgICAgICAgICAgIHNzOiAnJWTnp5InLFxuICAgICAgICAgICAgbTogJzHliIYnLFxuICAgICAgICAgICAgbW06ICclZOWIhicsXG4gICAgICAgICAgICBoOiAnMeaZgumWkycsXG4gICAgICAgICAgICBoaDogJyVk5pmC6ZaTJyxcbiAgICAgICAgICAgIGQ6ICcx5pelJyxcbiAgICAgICAgICAgIGRkOiAnJWTml6UnLFxuICAgICAgICAgICAgTTogJzHjg7bmnIgnLFxuICAgICAgICAgICAgTU06ICclZOODtuaciCcsXG4gICAgICAgICAgICB5OiAnMeW5tCcsXG4gICAgICAgICAgICB5eTogJyVk5bm0JyxcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBqYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBKYXZhbmVzZSBbanZdXG4vLyEgYXV0aG9yIDogUm9ueSBMYW50aXAgOiBodHRwczovL2dpdGh1Yi5jb20vbGFudGlwXG4vLyEgcmVmZXJlbmNlOiBodHRwOi8vanYud2lraXBlZGlhLm9yZy93aWtpL0Jhc2FfSmF3YVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGp2ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnanYnLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcmlfRmVicnVhcmlfTWFyZXRfQXByaWxfTWVpX0p1bmlfSnVsaV9BZ3VzdHVzX1NlcHRlbWJlcl9Pa3RvYmVyX05vcGVtYmVyX0Rlc2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbl9GZWJfTWFyX0Fwcl9NZWlfSnVuX0p1bF9BZ3NfU2VwX09rdF9Ob3BfRGVzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ01pbmdndV9TZW5lbl9TZWxvc29fUmVidV9LZW1pc19KZW11d2FoX1NlcHR1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnTWluX1Nlbl9TZWxfUmViX0tlbV9KZW1fU2VwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ01nX1NuX1NsX1JiX0ttX0ptX1NwJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISC5tbScsXG4gICAgICAgICAgICBMVFM6ICdISC5tbS5zcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvZW5qaW5nfHNpeWFuZ3xzb250ZW58bmRhbHUvLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICdlbmppbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnc2l5YW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdzb250ZW4nIHx8IG1lcmlkaWVtID09PSAnbmRhbHUnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzIDwgMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VuamluZyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NpeWFuZyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NvbnRlbic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnbmRhbHUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tEaW50ZW4gcHVuaWtvIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW01iZW5qYW5nIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3B1a3VsXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0thbGEgd2luZ2kgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBba2VwZW5na2VyIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3dvbnRlbiBpbmcgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGluZ2thbmcga2VwZW5na2VyJyxcbiAgICAgICAgICAgIHM6ICdzYXdldGF3aXMgZGV0aWsnLFxuICAgICAgICAgICAgc3M6ICclZCBkZXRpaycsXG4gICAgICAgICAgICBtOiAnc2V0dW5nZ2FsIG1lbml0JyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWVuaXQnLFxuICAgICAgICAgICAgaDogJ3NldHVuZ2dhbCBqYW0nLFxuICAgICAgICAgICAgaGg6ICclZCBqYW0nLFxuICAgICAgICAgICAgZDogJ3NlZGludGVuJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGludGVuJyxcbiAgICAgICAgICAgIE06ICdzZXd1bGFuJyxcbiAgICAgICAgICAgIE1NOiAnJWQgd3VsYW4nLFxuICAgICAgICAgICAgeTogJ3NldGF1bicsXG4gICAgICAgICAgICB5eTogJyVkIHRhdW4nLFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4ganY7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogR2VvcmdpYW4gW2thXVxuLy8hIGF1dGhvciA6IElyYWtsaSBKYW5pYXNodmlsaSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9JcmFrbGlKYW5pXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIga2EgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdrYScsIHtcbiAgICAgICAgbW9udGhzOiAn4YOY4YOQ4YOc4YOV4YOQ4YOg4YOYX+GDl+GDlOGDkeGDlOGDoOGDleGDkOGDmuGDmF/hg5vhg5Dhg6Dhg6Lhg5hf4YOQ4YOe4YOg4YOY4YOa4YOYX+GDm+GDkOGDmOGDoeGDmF/hg5jhg5Xhg5zhg5jhg6Hhg5hf4YOY4YOV4YOa4YOY4YOh4YOYX+GDkOGDkuGDleGDmOGDoeGDouGDnV/hg6Hhg5Thg6Xhg6Lhg5Thg5vhg5Hhg5Thg6Dhg5hf4YOd4YOl4YOi4YOd4YOb4YOR4YOU4YOg4YOYX+GDnOGDneGDlOGDm+GDkeGDlOGDoOGDmF/hg5Phg5Thg5nhg5Thg5vhg5Hhg5Thg6Dhg5gnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn4YOY4YOQ4YOcX+GDl+GDlOGDkV/hg5vhg5Dhg6Bf4YOQ4YOe4YOgX+GDm+GDkOGDmF/hg5jhg5Xhg5xf4YOY4YOV4YOaX+GDkOGDkuGDlV/hg6Hhg5Thg6Vf4YOd4YOl4YOiX+GDnOGDneGDlF/hg5Phg5Thg5knLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiB7XG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICfhg5nhg5Xhg5jhg6Dhg5Bf4YOd4YOg4YOo4YOQ4YOR4YOQ4YOX4YOYX+GDoeGDkOGDm+GDqOGDkOGDkeGDkOGDl+GDmF/hg53hg5fhg67hg6jhg5Dhg5Hhg5Dhg5fhg5hf4YOu4YOj4YOX4YOo4YOQ4YOR4YOQ4YOX4YOYX+GDnuGDkOGDoOGDkOGDoeGDmeGDlOGDleGDmF/hg6jhg5Dhg5Hhg5Dhg5fhg5gnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgZm9ybWF0OiAn4YOZ4YOV4YOY4YOg4YOQ4YOhX+GDneGDoOGDqOGDkOGDkeGDkOGDl+GDoV/hg6Hhg5Dhg5vhg6jhg5Dhg5Hhg5Dhg5fhg6Ff4YOd4YOX4YOu4YOo4YOQ4YOR4YOQ4YOX4YOhX+GDruGDo+GDl+GDqOGDkOGDkeGDkOGDl+GDoV/hg57hg5Dhg6Dhg5Dhg6Hhg5nhg5Thg5Xhg6Ff4YOo4YOQ4YOR4YOQ4YOX4YOhJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpc0Zvcm1hdDogLyjhg6zhg5jhg5zhg5B84YOo4YOU4YOb4YOT4YOU4YOSKS8sXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfhg5nhg5Xhg5hf4YOd4YOg4YOoX+GDoeGDkOGDm1/hg53hg5fhg65f4YOu4YOj4YOXX+GDnuGDkOGDoF/hg6jhg5Dhg5EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4YOZ4YOVX+GDneGDoF/hg6Hhg5Bf4YOd4YOXX+GDruGDo1/hg57hg5Bf4YOo4YOQJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+GDk+GDpuGDlOGDoV0gTFRbLeGDluGDlF0nLFxuICAgICAgICAgICAgbmV4dERheTogJ1vhg67hg5Xhg5Dhg5pdIExUWy3hg5bhg5RdJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4YOS4YOj4YOo4YOY4YOcXSBMVFst4YOW4YOUXScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vhg6jhg5Thg5vhg5Phg5Thg5JdIGRkZGQgTFRbLeGDluGDlF0nLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4YOs4YOY4YOc4YOQXSBkZGRkIExULeGDluGDlCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcy5yZXBsYWNlKFxuICAgICAgICAgICAgICAgICAgICAvKOGDrOGDkOGDm3zhg6zhg6Phg5d84YOh4YOQ4YOQ4YOXfOGDrOGDlOGDmnzhg5Phg6Z84YOX4YOVKSjhg5h84YOUKS8sXG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgkMCwgJDEsICQyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJDIgPT09ICfhg5gnID8gJDEgKyAn4YOo4YOYJyA6ICQxICsgJDIgKyAn4YOo4YOYJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFzdDogZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoLyjhg6zhg5Dhg5vhg5h84YOs4YOj4YOX4YOYfOGDoeGDkOGDkOGDl+GDmHzhg5Phg6bhg5R84YOX4YOV4YOUKS8udGVzdChzKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcy5yZXBsYWNlKC8o4YOYfOGDlCkkLywgJ+GDmOGDoSDhg6zhg5jhg5wnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKC/hg6zhg5Thg5rhg5gvLnRlc3QocykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgv4YOs4YOU4YOa4YOYJC8sICfhg6zhg5rhg5jhg6Eg4YOs4YOY4YOcJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHM6ICfhg6Dhg5Dhg5vhg5Phg5Thg5zhg5jhg5vhg5Qg4YOs4YOQ4YOb4YOYJyxcbiAgICAgICAgICAgIHNzOiAnJWQg4YOs4YOQ4YOb4YOYJyxcbiAgICAgICAgICAgIG06ICfhg6zhg6Phg5fhg5gnLFxuICAgICAgICAgICAgbW06ICclZCDhg6zhg6Phg5fhg5gnLFxuICAgICAgICAgICAgaDogJ+GDoeGDkOGDkOGDl+GDmCcsXG4gICAgICAgICAgICBoaDogJyVkIOGDoeGDkOGDkOGDl+GDmCcsXG4gICAgICAgICAgICBkOiAn4YOT4YOm4YOUJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4YOT4YOm4YOUJyxcbiAgICAgICAgICAgIE06ICfhg5fhg5Xhg5QnLFxuICAgICAgICAgICAgTU06ICclZCDhg5fhg5Xhg5QnLFxuICAgICAgICAgICAgeTogJ+GDrOGDlOGDmuGDmCcsXG4gICAgICAgICAgICB5eTogJyVkIOGDrOGDlOGDmuGDmCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC8wfDEt4YOa4YOYfOGDm+GDlC1cXGR7MSwyfXxcXGR7MSwyfS3hg5QvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICBpZiAobnVtYmVyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3hg5rhg5gnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIG51bWJlciA8IDIwIHx8XG4gICAgICAgICAgICAgICAgKG51bWJlciA8PSAxMDAgJiYgbnVtYmVyICUgMjAgPT09IDApIHx8XG4gICAgICAgICAgICAgICAgbnVtYmVyICUgMTAwID09PSAwXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+GDm+GDlC0nICsgbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct4YOUJztcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLFxuICAgICAgICAgICAgZG95OiA3LFxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGthO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IEthemFraCBba2tdXG4vLyEgYXV0aG9ycyA6IE51cmxhbiBSYWtoaW16aGFub3YgOiBodHRwczovL2dpdGh1Yi5jb20vbnVybGFuXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3VmZml4ZXMgPSB7XG4gICAgICAgIDA6ICct0YjRlicsXG4gICAgICAgIDE6ICct0YjRlicsXG4gICAgICAgIDI6ICct0YjRlicsXG4gICAgICAgIDM6ICct0YjRlicsXG4gICAgICAgIDQ6ICct0YjRlicsXG4gICAgICAgIDU6ICct0YjRlicsXG4gICAgICAgIDY6ICct0YjRiycsXG4gICAgICAgIDc6ICct0YjRlicsXG4gICAgICAgIDg6ICct0YjRlicsXG4gICAgICAgIDk6ICct0YjRiycsXG4gICAgICAgIDEwOiAnLdGI0YsnLFxuICAgICAgICAyMDogJy3RiNGLJyxcbiAgICAgICAgMzA6ICct0YjRiycsXG4gICAgICAgIDQwOiAnLdGI0YsnLFxuICAgICAgICA1MDogJy3RiNGWJyxcbiAgICAgICAgNjA6ICct0YjRiycsXG4gICAgICAgIDcwOiAnLdGI0ZYnLFxuICAgICAgICA4MDogJy3RiNGWJyxcbiAgICAgICAgOTA6ICct0YjRiycsXG4gICAgICAgIDEwMDogJy3RiNGWJyxcbiAgICB9O1xuXG4gICAgdmFyIGtrID0gbW9tZW50LmRlZmluZUxvY2FsZSgna2snLCB7XG4gICAgICAgIG1vbnRoczogJ9Kb0LDSo9GC0LDRgF/QsNKb0L/QsNC9X9C90LDRg9GA0YvQt1/RgdOZ0YPRltGAX9C80LDQvNGL0YBf0LzQsNGD0YHRi9C8X9GI0ZbQu9C00LVf0YLQsNC80YvQt1/Sm9GL0YDQutKv0LnQtdC6X9Kb0LDQt9Cw0L1f0pvQsNGA0LDRiNCwX9C20LXQu9GC0L7Sm9GB0LDQvScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfSm9Cw0qNf0LDSm9C/X9C90LDRg1/RgdOZ0YNf0LzQsNC8X9C80LDRg1/RiNGW0Ltf0YLQsNC8X9Kb0YvRgF/Sm9Cw0Ldf0pvQsNGAX9C20LXQuycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICfQttC10LrRgdC10L3QsdGWX9C00q/QudGB0LXQvdCx0ZZf0YHQtdC50YHQtdC90LHRll/RgdOZ0YDRgdC10L3QsdGWX9Cx0LXQudGB0LXQvdCx0ZZf0LbSsdC80LBf0YHQtdC90LHRlicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9C20LXQul/QtNKv0Llf0YHQtdC5X9GB05nRgF/QsdC10Llf0LbSsdC8X9GB0LXQvScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfQttC6X9C00Llf0YHQuV/RgdGAX9Cx0Llf0LbQvF/RgdC9Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9CR0q/Qs9GW0L0g0YHQsNKT0LDRgl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vQldGA0YLQtdKjINGB0LDSk9Cw0YJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb0YHQsNKT0LDRgl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vQmtC10YjQtSDRgdCw0pPQsNGCXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vTqNGC0LrQtdC9INCw0L/RgtCw0L3Ri9KjXSBkZGRkIFvRgdCw0pPQsNGCXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzINGW0YjRltC90LTQtScsXG4gICAgICAgICAgICBwYXN0OiAnJXMg0LHSsdGA0YvQvScsXG4gICAgICAgICAgICBzOiAn0LHRltGA0L3QtdGI0LUg0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgIHNzOiAnJWQg0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgIG06ICfQsdGW0YAg0LzQuNC90YPRgicsXG4gICAgICAgICAgICBtbTogJyVkINC80LjQvdGD0YInLFxuICAgICAgICAgICAgaDogJ9Cx0ZbRgCDRgdCw0pPQsNGCJyxcbiAgICAgICAgICAgIGhoOiAnJWQg0YHQsNKT0LDRgicsXG4gICAgICAgICAgICBkOiAn0LHRltGAINC60q/QvScsXG4gICAgICAgICAgICBkZDogJyVkINC60q/QvScsXG4gICAgICAgICAgICBNOiAn0LHRltGAINCw0LknLFxuICAgICAgICAgICAgTU06ICclZCDQsNC5JyxcbiAgICAgICAgICAgIHk6ICfQsdGW0YAg0LbRi9C7JyxcbiAgICAgICAgICAgIHl5OiAnJWQg0LbRi9C7JyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjRiNGWfNGI0YspLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGEgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBiID0gbnVtYmVyID49IDEwMCA/IDEwMCA6IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHN1ZmZpeGVzW251bWJlcl0gfHwgc3VmZml4ZXNbYV0gfHwgc3VmZml4ZXNbYl0pO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4ga2s7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQ2FtYm9kaWFuIFtrbV1cbi8vISBhdXRob3IgOiBLcnV5IFZhbm5hIDogaHR0cHM6Ly9naXRodWIuY29tL2tydXl2YW5uYVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICfhn6EnLFxuICAgICAgICAgICAgMjogJ+GfoicsXG4gICAgICAgICAgICAzOiAn4Z+jJyxcbiAgICAgICAgICAgIDQ6ICfhn6QnLFxuICAgICAgICAgICAgNTogJ+GfpScsXG4gICAgICAgICAgICA2OiAn4Z+mJyxcbiAgICAgICAgICAgIDc6ICfhn6cnLFxuICAgICAgICAgICAgODogJ+GfqCcsXG4gICAgICAgICAgICA5OiAn4Z+pJyxcbiAgICAgICAgICAgIDA6ICfhn6AnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn4Z+hJzogJzEnLFxuICAgICAgICAgICAgJ+Gfoic6ICcyJyxcbiAgICAgICAgICAgICfhn6MnOiAnMycsXG4gICAgICAgICAgICAn4Z+kJzogJzQnLFxuICAgICAgICAgICAgJ+GfpSc6ICc1JyxcbiAgICAgICAgICAgICfhn6YnOiAnNicsXG4gICAgICAgICAgICAn4Z+nJzogJzcnLFxuICAgICAgICAgICAgJ+GfqCc6ICc4JyxcbiAgICAgICAgICAgICfhn6knOiAnOScsXG4gICAgICAgICAgICAn4Z+gJzogJzAnLFxuICAgICAgICB9O1xuXG4gICAgdmFyIGttID0gbW9tZW50LmRlZmluZUxvY2FsZSgna20nLCB7XG4gICAgICAgIG1vbnRoczogJ+GemOGegOGemuGetl/hnoDhnrvhnpjhn5Lhnpfhn4hf4Z6Y4Z644Z6T4Z62X+GemOGfgeGen+Getl/hnqfhnp/hnpfhnrZf4Z6Y4Z634Z6Q4Z674Z6T4Z62X+GegOGegOGfkuGegOGeiuGetl/hnp/hnrjhnqDhnrZf4Z6A4Z6J4Z+S4Z6J4Z62X+Gej+Geu+Gem+Getl/hnpzhnrfhnoXhn5LhnobhnrfhnoDhnrZf4Z6S4Z+S4Z6T4Z68Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfhnpjhnoDhnprhnrZf4Z6A4Z674Z6Y4Z+S4Z6X4Z+IX+GemOGeuOGek+Getl/hnpjhn4Hhnp/hnrZf4Z6n4Z6f4Z6X4Z62X+GemOGet+GekOGeu+Gek+Getl/hnoDhnoDhn5LhnoDhnorhnrZf4Z6f4Z644Z6g4Z62X+GegOGeieGfkuGeieGetl/hno/hnrvhnpvhnrZf4Z6c4Z634Z6F4Z+S4Z6G4Z634Z6A4Z62X+GekuGfkuGek+GevCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ+GeouGetuGekeGet+Gej+GfkuGemV/hnoXhn5DhnpPhn5LhnpFf4Z6i4Z6E4Z+S4Z6C4Z624Z6aX+GeluGeu+Gekl/hnpbhn5LhnprhnqDhnp/hn5LhnpThno/hnrfhn41f4Z6f4Z674Z6A4Z+S4Z6aX+Gen+GfheGemuGfjScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+GeouGetl/hnoVf4Z6iX+Gell/hnpbhn5Lhnppf4Z6f4Z67X+Genycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfhnqLhnrZf4Z6FX+Geol/hnpZf4Z6W4Z+S4Z6aX+Gen+Geu1/hnp8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4Z6W4Z+S4Z6a4Z654Z6AfOGem+GfkuGehOGetuGehS8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ID09PSAn4Z6b4Z+S4Z6E4Z624Z6FJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+GeluGfkuGemuGeueGegCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Z6b4Z+S4Z6E4Z624Z6FJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4Z6Q4Z+S4Z6E4Z+D4Z6T4Z+B4Z+HIOGemOGfieGfhOGehF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vhnp/hn5LhnqLhn4LhnoAg4Z6Y4Z+J4Z+E4Z6EXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW+GemOGfieGfhOGehF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vhnpjhn5Lhnp/hnrfhnpvhnpjhnrfhnokg4Z6Y4Z+J4Z+E4Z6EXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW+Gen+GelOGfkuGej+GetuGeoOGfjeGemOGeu+Gek10gW+GemOGfieGfhOGehF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclc+GekeGfgOGejycsXG4gICAgICAgICAgICBwYXN0OiAnJXPhnpjhnrvhnpMnLFxuICAgICAgICAgICAgczogJ+GelOGfieGeu+Gek+GfkuGemOGetuGek+GenOGet+Gek+GetuGekeGeuCcsXG4gICAgICAgICAgICBzczogJyVkIOGenOGet+Gek+GetuGekeGeuCcsXG4gICAgICAgICAgICBtOiAn4Z6Y4Z694Z6Z4Z6T4Z624Z6R4Z64JyxcbiAgICAgICAgICAgIG1tOiAnJWQg4Z6T4Z624Z6R4Z64JyxcbiAgICAgICAgICAgIGg6ICfhnpjhnr3hnpnhnpjhn4nhn4ThnoQnLFxuICAgICAgICAgICAgaGg6ICclZCDhnpjhn4nhn4ThnoQnLFxuICAgICAgICAgICAgZDogJ+GemOGeveGemeGekOGfkuGehOGfgycsXG4gICAgICAgICAgICBkZDogJyVkIOGekOGfkuGehOGfgycsXG4gICAgICAgICAgICBNOiAn4Z6Y4Z694Z6Z4Z6B4Z+CJyxcbiAgICAgICAgICAgIE1NOiAnJWQg4Z6B4Z+CJyxcbiAgICAgICAgICAgIHk6ICfhnpjhnr3hnpnhnobhn5LhnpPhnrbhn4YnLFxuICAgICAgICAgICAgeXk6ICclZCDhnobhn5LhnpPhnrbhn4YnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAv4Z6R4Z64XFxkezEsMn0vLFxuICAgICAgICBvcmRpbmFsOiAn4Z6R4Z64JWQnLFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4Z+h4Z+i4Z+j4Z+k4Z+l4Z+m4Z+n4Z+o4Z+p4Z+gXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4ga207XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogS2FubmFkYSBba25dXG4vLyEgYXV0aG9yIDogUmFqZWV2IE5haWsgOiBodHRwczovL2dpdGh1Yi5jb20vcmFqZWV2bmFpa3RlXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgMTogJ+CzpycsXG4gICAgICAgICAgICAyOiAn4LOoJyxcbiAgICAgICAgICAgIDM6ICfgs6knLFxuICAgICAgICAgICAgNDogJ+CzqicsXG4gICAgICAgICAgICA1OiAn4LOrJyxcbiAgICAgICAgICAgIDY6ICfgs6wnLFxuICAgICAgICAgICAgNzogJ+CzrScsXG4gICAgICAgICAgICA4OiAn4LOuJyxcbiAgICAgICAgICAgIDk6ICfgs68nLFxuICAgICAgICAgICAgMDogJ+CzpicsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfgs6cnOiAnMScsXG4gICAgICAgICAgICAn4LOoJzogJzInLFxuICAgICAgICAgICAgJ+CzqSc6ICczJyxcbiAgICAgICAgICAgICfgs6onOiAnNCcsXG4gICAgICAgICAgICAn4LOrJzogJzUnLFxuICAgICAgICAgICAgJ+CzrCc6ICc2JyxcbiAgICAgICAgICAgICfgs60nOiAnNycsXG4gICAgICAgICAgICAn4LOuJzogJzgnLFxuICAgICAgICAgICAgJ+Czryc6ICc5JyxcbiAgICAgICAgICAgICfgs6YnOiAnMCcsXG4gICAgICAgIH07XG5cbiAgICB2YXIga24gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdrbicsIHtcbiAgICAgICAgbW9udGhzOiAn4LKc4LKo4LK14LKw4LK/X+Cyq+CzhuCyrOCzjeCysOCyteCysOCyv1/gsq7gsr7gsrDgs43gsprgs41f4LKP4LKq4LON4LKw4LK/4LKy4LONX+CyruCzhuCzlV/gspzgs4Lgsqjgs41f4LKc4LOB4LKy4LOG4LOWX+CyhuCyl+CyuOCzjeCyn+CzjV/gsrjgs4bgsqrgs43gsp/gs4bgsoLgsqzgsrDgs41f4LKF4LKV4LON4LKf4LOG4LOC4LOV4LKs4LKw4LONX+CyqOCyteCzhuCyguCyrOCysOCzjV/gsqHgsr/gsrjgs4bgsoLgsqzgsrDgs40nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+CynOCyqF/gsqvgs4bgsqzgs43gsrBf4LKu4LK+4LKw4LON4LKa4LONX+Cyj+CyquCzjeCysOCyv+CysuCzjV/gsq7gs4bgs5Vf4LKc4LOC4LKo4LONX+CynOCzgeCysuCzhuCzll/gsobgspfgsrjgs43gsp/gs41f4LK44LOG4LKq4LON4LKf4LOG4LKCX+CyheCyleCzjeCyn+CzhuCzguCzlV/gsqjgsrXgs4bgsoJf4LKh4LK/4LK44LOG4LKCJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAn4LKt4LK+4LKo4LOB4LK14LK+4LKwX+CyuOCzhuCzguCzleCyruCyteCyvuCysF/gsq7gsoLgspfgsrPgsrXgsr7gsrBf4LKs4LOB4LKn4LK14LK+4LKwX+Cyl+CzgeCysOCzgeCyteCyvuCysF/gsrbgs4HgspXgs43gsrDgsrXgsr7gsrBf4LK24LKo4LK/4LK14LK+4LKwJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4LKt4LK+4LKo4LOBX+CyuOCzhuCzguCzleCyrl/gsq7gsoLgspfgsrNf4LKs4LOB4LKnX+Cyl+CzgeCysOCzgV/gsrbgs4HgspXgs43gsrBf4LK24LKo4LK/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+CyreCyvl/gsrjgs4bgs4Lgs5Vf4LKu4LKCX+CyrOCzgV/gspfgs4Ff4LK24LOBX+Cyticuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnQSBoOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0EgaDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgsofgsoLgsqbgs4FdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4LKo4LK+4LKz4LOGXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4LKo4LK/4LKo4LON4LKo4LOGXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgspXgs4bgs4Lgsqjgs4bgsq9dIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg4LKo4LKC4LKk4LKwJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDgsrngsr/gsoLgsqbgs4YnLFxuICAgICAgICAgICAgczogJ+CyleCzhuCysuCyteCzgSDgspXgs43gsrfgsqPgspfgsrPgs4EnLFxuICAgICAgICAgICAgc3M6ICclZCDgsrjgs4bgspXgs4bgsoLgsqHgs4HgspfgsrPgs4EnLFxuICAgICAgICAgICAgbTogJ+CykuCyguCypuCzgSDgsqjgsr/gsq7gsr/gsrcnLFxuICAgICAgICAgICAgbW06ICclZCDgsqjgsr/gsq7gsr/gsrcnLFxuICAgICAgICAgICAgaDogJ+CykuCyguCypuCzgSDgspfgsoLgsp/gs4YnLFxuICAgICAgICAgICAgaGg6ICclZCDgspfgsoLgsp/gs4YnLFxuICAgICAgICAgICAgZDogJ+CykuCyguCypuCzgSDgsqbgsr/gsqgnLFxuICAgICAgICAgICAgZGQ6ICclZCDgsqbgsr/gsqgnLFxuICAgICAgICAgICAgTTogJ+CykuCyguCypuCzgSDgsqTgsr/gsoLgspfgsrPgs4EnLFxuICAgICAgICAgICAgTU06ICclZCDgsqTgsr/gsoLgspfgsrPgs4EnLFxuICAgICAgICAgICAgeTogJ+CykuCyguCypuCzgSDgsrXgsrDgs43gsrcnLFxuICAgICAgICAgICAgeXk6ICclZCDgsrXgsrDgs43gsrcnLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4LOn4LOo4LOp4LOq4LOr4LOs4LOt4LOu4LOv4LOmXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4LKw4LK+4LKk4LON4LKw4LK/fOCyrOCzhuCys+Cyv+Cyl+CzjeCyl+Czhnzgsq7gsqfgs43gsq/gsr7gsrngs43gsqh84LK44LKC4LKc4LOGLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4LKw4LK+4LKk4LON4LKw4LK/Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4LKs4LOG4LKz4LK/4LKX4LON4LKX4LOGJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CyruCyp+CzjeCyr+CyvuCyueCzjeCyqCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4LK44LKC4LKc4LOGJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CysOCyvuCypOCzjeCysOCyvyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LKs4LOG4LKz4LK/4LKX4LON4LKX4LOGJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsq7gsqfgs43gsq/gsr7gsrngs43gsqgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CyuOCyguCynOCzhic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LKw4LK+4LKk4LON4LKw4LK/JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KOCyqOCzhuCzlSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+CyqOCzhuCzlSc7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBrbjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBLb3JlYW4gW2tvXVxuLy8hIGF1dGhvciA6IEt5dW5nd29vaywgUGFyayA6IGh0dHBzOi8vZ2l0aHViLmNvbS9reXVuZ3cwMGtcbi8vISBhdXRob3IgOiBKZWVleXVsIExlZSA8amVlZXl1bEBnbWFpbC5jb20+XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIga28gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdrbycsIHtcbiAgICAgICAgbW9udGhzOiAnMeyblF8y7JuUXzPsm5RfNOyblF817JuUXzbsm5RfN+yblF847JuUXznsm5RfMTDsm5RfMTHsm5RfMTLsm5QnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnMeyblF8y7JuUXzPsm5RfNOyblF817JuUXzbsm5RfN+yblF847JuUXznsm5RfMTDsm5RfMTHsm5RfMTLsm5QnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn7J287JqU7J28X+yblOyalOydvF/tmZTsmpTsnbxf7IiY7JqU7J28X+uqqeyalOydvF/quIjsmpTsnbxf7Yag7JqU7J28Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn7J28X+yblF/tmZRf7IiYX+uqqV/quIhf7YagJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+ydvF/sm5Rf7ZmUX+yImF/rqqlf6riIX+2GoCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnQSBoOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0EgaDptbTpzcycsXG4gICAgICAgICAgICBMOiAnWVlZWS5NTS5ERC4nLFxuICAgICAgICAgICAgTEw6ICdZWVlZ64WEIE1NTU0gROydvCcsXG4gICAgICAgICAgICBMTEw6ICdZWVlZ64WEIE1NTU0gROydvCBBIGg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ1lZWVnrhYQgTU1NTSBE7J28IGRkZGQgQSBoOm1tJyxcbiAgICAgICAgICAgIGw6ICdZWVlZLk1NLkRELicsXG4gICAgICAgICAgICBsbDogJ1lZWVnrhYQgTU1NTSBE7J28JyxcbiAgICAgICAgICAgIGxsbDogJ1lZWVnrhYQgTU1NTSBE7J28IEEgaDptbScsXG4gICAgICAgICAgICBsbGxsOiAnWVlZWeuFhCBNTU1NIETsnbwgZGRkZCBBIGg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ+yYpOuKmCBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAn64K07J28IExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAn7Ja07KCcIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAn7KeA64Kc7KO8IGRkZGQgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDtm4QnLFxuICAgICAgICAgICAgcGFzdDogJyVzIOyghCcsXG4gICAgICAgICAgICBzOiAn66qHIOy0iCcsXG4gICAgICAgICAgICBzczogJyVk7LSIJyxcbiAgICAgICAgICAgIG06ICcx67aEJyxcbiAgICAgICAgICAgIG1tOiAnJWTrtoQnLFxuICAgICAgICAgICAgaDogJ+2VnCDsi5zqsIQnLFxuICAgICAgICAgICAgaGg6ICclZOyLnOqwhCcsXG4gICAgICAgICAgICBkOiAn7ZWY66OoJyxcbiAgICAgICAgICAgIGRkOiAnJWTsnbwnLFxuICAgICAgICAgICAgTTogJ+2VnCDri6wnLFxuICAgICAgICAgICAgTU06ICclZOuLrCcsXG4gICAgICAgICAgICB5OiAn7J28IOuFhCcsXG4gICAgICAgICAgICB5eTogJyVk64WEJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KOydvHzsm5R87KO8KS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+ydvCc7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn7JuUJztcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfso7wnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/smKTsoIR87Jik7ZuELyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKHRva2VuKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9rZW4gPT09ICfsmKTtm4QnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNVcHBlcikge1xuICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCAxMiA/ICfsmKTsoIQnIDogJ+yYpO2bhCc7XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4ga287XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogS3VyZGlzaCBba3VdXG4vLyEgYXV0aG9yIDogU2hhaHJhbSBNZWJhc2hhciA6IGh0dHBzOi8vZ2l0aHViLmNvbS9TaGFocmFtTWViYXNoYXJcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICAgICAxOiAn2aEnLFxuICAgICAgICAgICAgMjogJ9miJyxcbiAgICAgICAgICAgIDM6ICfZoycsXG4gICAgICAgICAgICA0OiAn2aQnLFxuICAgICAgICAgICAgNTogJ9mlJyxcbiAgICAgICAgICAgIDY6ICfZpicsXG4gICAgICAgICAgICA3OiAn2acnLFxuICAgICAgICAgICAgODogJ9moJyxcbiAgICAgICAgICAgIDk6ICfZqScsXG4gICAgICAgICAgICAwOiAn2aAnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn2aEnOiAnMScsXG4gICAgICAgICAgICAn2aInOiAnMicsXG4gICAgICAgICAgICAn2aMnOiAnMycsXG4gICAgICAgICAgICAn2aQnOiAnNCcsXG4gICAgICAgICAgICAn2aUnOiAnNScsXG4gICAgICAgICAgICAn2aYnOiAnNicsXG4gICAgICAgICAgICAn2acnOiAnNycsXG4gICAgICAgICAgICAn2agnOiAnOCcsXG4gICAgICAgICAgICAn2aknOiAnOScsXG4gICAgICAgICAgICAn2aAnOiAnMCcsXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRocyA9IFtcbiAgICAgICAgICAgICfaqdin2YbZiNmG24wg2K/ZiNmI25XZhScsXG4gICAgICAgICAgICAn2LTZiNio2KfYqicsXG4gICAgICAgICAgICAn2KbYp9iy2KfYsScsXG4gICAgICAgICAgICAn2YbbjNiz2KfZhicsXG4gICAgICAgICAgICAn2KbYp9uM2KfYsScsXG4gICAgICAgICAgICAn2K3ZiNiy25XbjNix2KfZhicsXG4gICAgICAgICAgICAn2KrbldmF2YXZiNiyJyxcbiAgICAgICAgICAgICfYptin2KgnLFxuICAgICAgICAgICAgJ9im25XbjNmE2YjZiNmEJyxcbiAgICAgICAgICAgICfYqti02LHbjNmG24wg24zbldmD25XZhScsXG4gICAgICAgICAgICAn2KrYtNix24zZhtuMINiv2YjZiNuV2YUnLFxuICAgICAgICAgICAgJ9mD2KfZhtmI2YbbjCDbjNuV2qnbldmFJyxcbiAgICAgICAgXTtcblxuICAgIHZhciBrdSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2t1Jywge1xuICAgICAgICBtb250aHM6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IG1vbnRocyxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAn24zZh+KAjNmD2LTZh+KAjNmF2YXZh+KAjF/Yr9mI2YjYtNmH4oCM2YXZhdmH4oCMX9iz247YtNmH4oCM2YXZhdmH4oCMX9qG2YjYp9ix2LTZh+KAjNmF2YXZh+KAjF/ZvtuO2YbYrNi02YfigIzZhdmF2YfigIxf2YfZh+KAjNuM2YbbjF/YtNmH4oCM2YXZhdmH4oCMJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6XG4gICAgICAgICAgICAn24zZh+KAjNmD2LTZh+KAjNmFX9iv2YjZiNi02YfigIzZhV/Ys9uO2LTZh+KAjNmFX9qG2YjYp9ix2LTZh+KAjNmFX9m+247Zhtis2LTZh+KAjNmFX9mH2YfigIzbjNmG24xf2LTZh+KAjNmF2YXZh+KAjCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfbjF/Yr1/Ys1/ahl/Zvl/Zh1/YtCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/YptuO2YjYp9ix2YfigIx82KjZh+KAjNuM2KfZhtuMLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL9im247ZiNin2LHZh+KAjC8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYqNmH4oCM24zYp9mG24wnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9im247ZiNin2LHZh+KAjCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9im2YfigIzZhdix24Yg2YPYp9iq2pjZhduO2LFdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2KjZh+KAjNuM2KfZhtuMINmD2KfYqtqY2YXbjtixXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9mD2KfYqtqY2YXbjtixXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9iv2YjbjtmG244g2YPYp9iq2pjZhduO2LFdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb2YPYp9iq2pjZhduO2LFdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn2YTZh+KAjCAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMnLFxuICAgICAgICAgICAgczogJ9qG2YfigIzZhtivINqG2LHZg9mH4oCM24zZh+KAjNmDJyxcbiAgICAgICAgICAgIHNzOiAn2obYsdmD2YfigIwgJWQnLFxuICAgICAgICAgICAgbTogJ9uM2YfigIzZgyDYrtmI2YTZh+KAjNmDJyxcbiAgICAgICAgICAgIG1tOiAnJWQg2K7ZiNmE2YfigIzZgycsXG4gICAgICAgICAgICBoOiAn24zZh+KAjNmDINmD2KfYqtqY2YXbjtixJyxcbiAgICAgICAgICAgIGhoOiAnJWQg2YPYp9iq2pjZhduO2LEnLFxuICAgICAgICAgICAgZDogJ9uM2YfigIzZgyDalduG2pgnLFxuICAgICAgICAgICAgZGQ6ICclZCDalduG2pgnLFxuICAgICAgICAgICAgTTogJ9uM2YfigIzZgyDZhdin2YbarycsXG4gICAgICAgICAgICBNTTogJyVkINmF2KfZhtqvJyxcbiAgICAgICAgICAgIHk6ICfbjNmH4oCM2YMg2LPYp9q1JyxcbiAgICAgICAgICAgIHl5OiAnJWQg2LPYp9q1JyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW9mh2aLZo9mk2aXZptmn2ajZqdmgXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgv2IwvZywgJywnKTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogNiwgLy8gU2F0dXJkYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogMTIsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4ga3U7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogS3lyZ3l6IFtreV1cbi8vISBhdXRob3IgOiBDaHluZ3l6IEFyeXN0YW4gdXVsdSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9jaHluZ3l6XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3VmZml4ZXMgPSB7XG4gICAgICAgIDA6ICct0YfSrycsXG4gICAgICAgIDE6ICct0YfQuCcsXG4gICAgICAgIDI6ICct0YfQuCcsXG4gICAgICAgIDM6ICct0YfSrycsXG4gICAgICAgIDQ6ICct0YfSrycsXG4gICAgICAgIDU6ICct0YfQuCcsXG4gICAgICAgIDY6ICct0YfRiycsXG4gICAgICAgIDc6ICct0YfQuCcsXG4gICAgICAgIDg6ICct0YfQuCcsXG4gICAgICAgIDk6ICct0YfRgycsXG4gICAgICAgIDEwOiAnLdGH0YMnLFxuICAgICAgICAyMDogJy3Rh9GLJyxcbiAgICAgICAgMzA6ICct0YfRgycsXG4gICAgICAgIDQwOiAnLdGH0YsnLFxuICAgICAgICA1MDogJy3Rh9KvJyxcbiAgICAgICAgNjA6ICct0YfRiycsXG4gICAgICAgIDcwOiAnLdGH0LgnLFxuICAgICAgICA4MDogJy3Rh9C4JyxcbiAgICAgICAgOTA6ICct0YfRgycsXG4gICAgICAgIDEwMDogJy3Rh9KvJyxcbiAgICB9O1xuXG4gICAgdmFyIGt5ID0gbW9tZW50LmRlZmluZUxvY2FsZSgna3knLCB7XG4gICAgICAgIG1vbnRoczogJ9GP0L3QstCw0YDRjF/RhNC10LLRgNCw0LvRjF/QvNCw0YDRgl/QsNC/0YDQtdC70Yxf0LzQsNC5X9C40Y7QvdGMX9C40Y7Qu9GMX9Cw0LLQs9GD0YHRgl/RgdC10L3RgtGP0LHRgNGMX9C+0LrRgtGP0LHRgNGMX9C90L7Rj9Cx0YDRjF/QtNC10LrQsNCx0YDRjCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfRj9C90LJf0YTQtdCyX9C80LDRgNGCX9Cw0L/RgF/QvNCw0Llf0LjRjtC90Yxf0LjRjtC70Yxf0LDQstCzX9GB0LXQvV/QvtC60YJf0L3QvtGPX9C00LXQuicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfQltC10LrRiNC10LzQsdC4X9CU0q/QudGI06nQvNCx0q9f0KjQtdC50YjQtdC80LHQuF/QqNCw0YDRiNC10LzQsdC4X9CR0LXQudGI0LXQvNCx0Lhf0JbRg9C80LBf0JjRiNC10LzQsdC4Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn0JbQtdC6X9CU0q/QuV/QqNC10Llf0KjQsNGAX9CR0LXQuV/QltGD0Lxf0JjRiNC1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9CW0Lpf0JTQuV/QqNC5X9Co0YBf0JHQuV/QltC8X9CY0YgnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb0JHSr9Cz0q/QvSDRgdCw0LDRgl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vQrdGA0YLQtdKjINGB0LDQsNGCXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9GB0LDQsNGCXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9Ca0LXRh9GN0Y0g0YHQsNCw0YJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW9Oo0YLQutOp0L0g0LDQv9GC0LDQvdGL0L1dIGRkZGQgW9C60q/QvdKvXSBb0YHQsNCw0YJdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg0LjRh9C40L3QtNC1JyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDQvNGD0YDRg9C9JyxcbiAgICAgICAgICAgIHM6ICfQsdC40YDQvdC10YfQtSDRgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgc3M6ICclZCDRgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgbTogJ9Cx0LjRgCDQvNKv0L3TqdGCJyxcbiAgICAgICAgICAgIG1tOiAnJWQg0LzSr9C906nRgicsXG4gICAgICAgICAgICBoOiAn0LHQuNGAINGB0LDQsNGCJyxcbiAgICAgICAgICAgIGhoOiAnJWQg0YHQsNCw0YInLFxuICAgICAgICAgICAgZDogJ9Cx0LjRgCDQutKv0L0nLFxuICAgICAgICAgICAgZGQ6ICclZCDQutKv0L0nLFxuICAgICAgICAgICAgTTogJ9Cx0LjRgCDQsNC5JyxcbiAgICAgICAgICAgIE1NOiAnJWQg0LDQuScsXG4gICAgICAgICAgICB5OiAn0LHQuNGAINC20YvQuycsXG4gICAgICAgICAgICB5eTogJyVkINC20YvQuycsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS0o0YfQuHzRh9GLfNGH0q980YfRgykvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYSA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIGIgPSBudW1iZXIgPj0gMTAwID8gMTAwIDogbnVsbDtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAoc3VmZml4ZXNbbnVtYmVyXSB8fCBzdWZmaXhlc1thXSB8fCBzdWZmaXhlc1tiXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBreTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBMdXhlbWJvdXJnaXNoIFtsYl1cbi8vISBhdXRob3IgOiBtd2VpbWVyc2tpcmNoIDogaHR0cHM6Ly9naXRodWIuY29tL213ZWltZXJza2lyY2hcbi8vISBhdXRob3IgOiBEYXZpZCBSYWlzb24gOiBodHRwczovL2dpdGh1Yi5jb20va3dpc2F0elxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgIG06IFsnZW5nIE1pbnV0dCcsICdlbmdlciBNaW51dHQnXSxcbiAgICAgICAgICAgIGg6IFsnZW5nIFN0b25uJywgJ2VuZ2VyIFN0b25uJ10sXG4gICAgICAgICAgICBkOiBbJ2VlbiBEYWcnLCAnZW5nZW0gRGFnJ10sXG4gICAgICAgICAgICBNOiBbJ2VlIE1vdW50JywgJ2VuZ2VtIE1vdW50J10sXG4gICAgICAgICAgICB5OiBbJ2VlIEpvZXInLCAnZW5nZW0gSm9lciddLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/IGZvcm1hdFtrZXldWzBdIDogZm9ybWF0W2tleV1bMV07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByb2Nlc3NGdXR1cmVUaW1lKHN0cmluZykge1xuICAgICAgICB2YXIgbnVtYmVyID0gc3RyaW5nLnN1YnN0cigwLCBzdHJpbmcuaW5kZXhPZignICcpKTtcbiAgICAgICAgaWYgKGVpZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlcihudW1iZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2EgJyArIHN0cmluZztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ2FuICcgKyBzdHJpbmc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByb2Nlc3NQYXN0VGltZShzdHJpbmcpIHtcbiAgICAgICAgdmFyIG51bWJlciA9IHN0cmluZy5zdWJzdHIoMCwgc3RyaW5nLmluZGV4T2YoJyAnKSk7XG4gICAgICAgIGlmIChlaWZlbGVyUmVnZWxBcHBsaWVzVG9OdW1iZXIobnVtYmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuICd2aXJ1ICcgKyBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICd2aXJ1biAnICsgc3RyaW5nO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHdvcmQgYmVmb3JlIHRoZSBnaXZlbiBudW1iZXIgbG9zZXMgdGhlICctbicgZW5kaW5nLlxuICAgICAqIGUuZy4gJ2FuIDEwIERlZWcnIGJ1dCAnYSA1IERlZWcnXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbnVtYmVyIHtpbnRlZ2VyfVxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVpZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlcihudW1iZXIpIHtcbiAgICAgICAgbnVtYmVyID0gcGFyc2VJbnQobnVtYmVyLCAxMCk7XG4gICAgICAgIGlmIChpc05hTihudW1iZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgICAgICAgIC8vIE5lZ2F0aXZlIE51bWJlciAtLT4gYWx3YXlzIHRydWVcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA8IDEwKSB7XG4gICAgICAgICAgICAvLyBPbmx5IDEgZGlnaXRcbiAgICAgICAgICAgIGlmICg0IDw9IG51bWJlciAmJiBudW1iZXIgPD0gNykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA8IDEwMCkge1xuICAgICAgICAgICAgLy8gMiBkaWdpdHNcbiAgICAgICAgICAgIHZhciBsYXN0RGlnaXQgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBmaXJzdERpZ2l0ID0gbnVtYmVyIC8gMTA7XG4gICAgICAgICAgICBpZiAobGFzdERpZ2l0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVpZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlcihmaXJzdERpZ2l0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBlaWZlbGVyUmVnZWxBcHBsaWVzVG9OdW1iZXIobGFzdERpZ2l0KTtcbiAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCAxMDAwMCkge1xuICAgICAgICAgICAgLy8gMyBvciA0IGRpZ2l0cyAtLT4gcmVjdXJzaXZlbHkgY2hlY2sgZmlyc3QgZGlnaXRcbiAgICAgICAgICAgIHdoaWxlIChudW1iZXIgPj0gMTApIHtcbiAgICAgICAgICAgICAgICBudW1iZXIgPSBudW1iZXIgLyAxMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBlaWZlbGVyUmVnZWxBcHBsaWVzVG9OdW1iZXIobnVtYmVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEFueXRoaW5nIGxhcmdlciB0aGFuIDQgZGlnaXRzOiByZWN1cnNpdmVseSBjaGVjayBmaXJzdCBuLTMgZGlnaXRzXG4gICAgICAgICAgICBudW1iZXIgPSBudW1iZXIgLyAxMDAwO1xuICAgICAgICAgICAgcmV0dXJuIGVpZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlcihudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGxiID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbGInLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcl9GZWJydWFyX03DpGVyel9BYnLDq2xsX01lZV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdKYW4uX0ZlYnIuX01yei5fQWJyLl9NZWVfSnVuLl9KdWwuX0F1Zy5fU2VwdC5fT2t0Ll9Ob3YuX0Rlei4nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnU29ubmRlZ19Nw6lpbmRlZ19Ew6tuc2NoZGVnX03Dq3R0d29jaF9Eb25uZXNjaGRlZ19GcmVpZGVnX1NhbXNjaGRlZycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU28uX03DqS5fRMOrLl9Nw6suX0RvLl9Gci5fU2EuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1NvX03DqV9Ew6tfTcOrX0RvX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0gW0F1ZXJdJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MgW0F1ZXJdJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBIOm1tIFtBdWVyXScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0gW0F1ZXJdJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSGF1dCB1bV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbTXVlciB1bV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFt1bV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tHw6tzY2h0ZXIgdW1dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgLy8gRGlmZmVyZW50IGRhdGUgc3RyaW5nIGZvciAnRMOrbnNjaGRlZycgKFR1ZXNkYXkpIGFuZCAnRG9ubmVzY2hkZWcnIChUaHVyc2RheSkgZHVlIHRvIHBob25vbG9naWNhbCBydWxlXG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbTGVzY2h0ZW5dIGRkZGQgW3VtXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tMZXNjaHRlXSBkZGRkIFt1bV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiBwcm9jZXNzRnV0dXJlVGltZSxcbiAgICAgICAgICAgIHBhc3Q6IHByb2Nlc3NQYXN0VGltZSxcbiAgICAgICAgICAgIHM6ICdlIHB1ZXIgU2Vrb25uZW4nLFxuICAgICAgICAgICAgc3M6ICclZCBTZWtvbm5lbicsXG4gICAgICAgICAgICBtOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbW06ICclZCBNaW51dHRlbicsXG4gICAgICAgICAgICBoOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGg6ICclZCBTdG9ubmVuJyxcbiAgICAgICAgICAgIGQ6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZDogJyVkIERlZWcnLFxuICAgICAgICAgICAgTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NOiAnJWQgTcOpaW50JyxcbiAgICAgICAgICAgIHk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5eTogJyVkIEpvZXInLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGxiO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IExhbyBbbG9dXG4vLyEgYXV0aG9yIDogUnlhbiBIYXJ0IDogaHR0cHM6Ly9naXRodWIuY29tL3J5YW5oYXJ0MlxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIGxvID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbG8nLCB7XG4gICAgICAgIG1vbnRoczogJ+C6oeC6seC6h+C6geC6reC6mV/guoHgurjguqHgup7gurJf4Lqh4Lq14LqZ4LqyX+C7gOC6oeC6quC6sl/gup7gurbgupTguqrgurDgup7gurJf4Lqh4Lq04LqW4Lq44LqZ4LqyX+C6geC7jeC6peC6sOC6geC6u+C6lF/guqrgurTguofguqvgurJf4LqB4Lqx4LqZ4LqN4LqyX+C6leC6uOC6peC6sl/gup7gurDguojgurTguoFf4LqX4Lqx4LqZ4Lqn4LqyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfguqHgurHguofguoHguq3guplf4LqB4Lq44Lqh4Lqe4LqyX+C6oeC6teC6meC6sl/gu4DguqHguqrgurJf4Lqe4Lq24LqU4Lqq4Lqw4Lqe4LqyX+C6oeC6tOC6luC6uOC6meC6sl/guoHgu43guqXgurDguoHgurvgupRf4Lqq4Lq04LqH4Lqr4LqyX+C6geC6seC6meC6jeC6sl/gupXgurjguqXgurJf4Lqe4Lqw4LqI4Lq04LqBX+C6l+C6seC6meC6p+C6sicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ+C6reC6suC6l+C6tOC6lF/guojgurHguplf4Lqt4Lqx4LqH4LqE4Lqy4LqZX+C6nuC6uOC6lF/gup7gurDguqvgurHgupRf4Lqq4Lq44LqBX+C7gOC6quC6u+C6sicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+C6l+C6tOC6lF/guojgurHguplf4Lqt4Lqx4LqH4LqE4Lqy4LqZX+C6nuC6uOC6lF/gup7gurDguqvgurHgupRf4Lqq4Lq44LqBX+C7gOC6quC6u+C6sicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfgupdf4LqIX+C6reC6hF/gup5f4Lqe4LqrX+C6quC6gV/guqonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAn4Lqn4Lqx4LqZZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gupXguq3gupngu4Dguorgurvgu4ngurJ84LqV4Lqt4LqZ4LuB4Lql4LqHLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgPT09ICfgupXguq3gupngu4HguqXguocnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LqV4Lqt4LqZ4LuA4LqK4Lq74LuJ4LqyJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgupXguq3gupngu4HguqXguocnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vguqHgurfgu4ngupngurXgu4ngu4DguqfguqXgurJdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4Lqh4Lq34LuJ4Lqt4Lq34LuI4LqZ4LuA4Lqn4Lql4LqyXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vguqfgurHgupldZGRkZFvgu5zgu4ngurLgu4DguqfguqXgurJdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4Lqh4Lq34LuJ4Lqn4Lqy4LqZ4LqZ4Lq14LuJ4LuA4Lqn4Lql4LqyXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vguqfgurHgupldZGRkZFvgu4HguqXgu4nguqfgupngurXgu4ngu4DguqfguqXgurJdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn4Lqt4Lq14LqBICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclc+C6nOC7iOC6suC6meC6oeC6sicsXG4gICAgICAgICAgICBzOiAn4Lqa4LuN4LuI4LuA4LqX4Lq74LuI4Lqy4LuD4LqU4Lqn4Lq04LqZ4Lqy4LqX4Lq1JyxcbiAgICAgICAgICAgIHNzOiAnJWQg4Lqn4Lq04LqZ4Lqy4LqX4Lq1JyxcbiAgICAgICAgICAgIG06ICcxIOC6meC6suC6l+C6tScsXG4gICAgICAgICAgICBtbTogJyVkIOC6meC6suC6l+C6tScsXG4gICAgICAgICAgICBoOiAnMSDguorgurvgu4jguqfgu4LguqHguocnLFxuICAgICAgICAgICAgaGg6ICclZCDguorgurvgu4jguqfgu4LguqHguocnLFxuICAgICAgICAgICAgZDogJzEg4Lqh4Lq34LuJJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4Lqh4Lq34LuJJyxcbiAgICAgICAgICAgIE06ICcxIOC7gOC6lOC6t+C6reC6mScsXG4gICAgICAgICAgICBNTTogJyVkIOC7gOC6lOC6t+C6reC6mScsXG4gICAgICAgICAgICB5OiAnMSDgupvgurUnLFxuICAgICAgICAgICAgeXk6ICclZCDgupvgurUnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvKOC6l+C6teC7iClcXGR7MSwyfS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiAn4LqX4Lq14LuIJyArIG51bWJlcjtcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBsbztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBMaXRodWFuaWFuIFtsdF1cbi8vISBhdXRob3IgOiBNaW5kYXVnYXMgTW96xatyYXMgOiBodHRwczovL2dpdGh1Yi5jb20vbW1venVyYXNcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB1bml0cyA9IHtcbiAgICAgICAgc3M6ICdzZWt1bmTEl19zZWt1bmTFvmnFs19zZWt1bmRlcycsXG4gICAgICAgIG06ICdtaW51dMSXX21pbnV0xJdzX21pbnV0xJknLFxuICAgICAgICBtbTogJ21pbnV0xJdzX21pbnXEjWnFs19taW51dGVzJyxcbiAgICAgICAgaDogJ3ZhbGFuZGFfdmFsYW5kb3NfdmFsYW5kxIUnLFxuICAgICAgICBoaDogJ3ZhbGFuZG9zX3ZhbGFuZMWzX3ZhbGFuZGFzJyxcbiAgICAgICAgZDogJ2RpZW5hX2RpZW5vc19kaWVuxIUnLFxuICAgICAgICBkZDogJ2RpZW5vc19kaWVuxbNfZGllbmFzJyxcbiAgICAgICAgTTogJ23El251b19txJduZXNpb19txJduZXPErycsXG4gICAgICAgIE1NOiAnbcSXbmVzaWFpX23El25lc2nFs19txJduZXNpdXMnLFxuICAgICAgICB5OiAnbWV0YWlfbWV0xbNfbWV0dXMnLFxuICAgICAgICB5eTogJ21ldGFpX21ldMWzX21ldHVzJyxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZVNlY29uZHMobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICByZXR1cm4gJ2tlbGlvcyBzZWt1bmTEl3MnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ2tlbGnFsyBzZWt1bmTFvmnFsycgOiAna2VsaWFzIHNla3VuZGVzJztcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGVTaW5ndWxhcihudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXhcbiAgICAgICAgICAgID8gZm9ybXMoa2V5KVswXVxuICAgICAgICAgICAgOiBpc0Z1dHVyZVxuICAgICAgICAgICAgPyBmb3JtcyhrZXkpWzFdXG4gICAgICAgICAgICA6IGZvcm1zKGtleSlbMl07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNwZWNpYWwobnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBudW1iZXIgJSAxMCA9PT0gMCB8fCAobnVtYmVyID4gMTAgJiYgbnVtYmVyIDwgMjApO1xuICAgIH1cbiAgICBmdW5jdGlvbiBmb3JtcyhrZXkpIHtcbiAgICAgICAgcmV0dXJuIHVuaXRzW2tleV0uc3BsaXQoJ18nKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVtYmVyICsgJyAnO1xuICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHJlc3VsdCArIHRyYW5zbGF0ZVNpbmd1bGFyKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5WzBdLCBpc0Z1dHVyZSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChzcGVjaWFsKG51bWJlcikgPyBmb3JtcyhrZXkpWzFdIDogZm9ybXMoa2V5KVswXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgZm9ybXMoa2V5KVsxXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChzcGVjaWFsKG51bWJlcikgPyBmb3JtcyhrZXkpWzFdIDogZm9ybXMoa2V5KVsyXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIGx0ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbHQnLCB7XG4gICAgICAgIG1vbnRoczoge1xuICAgICAgICAgICAgZm9ybWF0OiAnc2F1c2lvX3Zhc2FyaW9fa292b19iYWxhbmTFvmlvX2dlZ3XFvsSXc19iaXLFvmVsaW9fbGllcG9zX3J1Z3BqxavEjWlvX3J1Z3PEl2pvX3NwYWxpb19sYXBrcmnEjWlvX2dydW9kxb5pbycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhbmRhbG9uZTpcbiAgICAgICAgICAgICAgICAnc2F1c2lzX3Zhc2FyaXNfa292YXNfYmFsYW5kaXNfZ2VndcW+xJdfYmlyxb5lbGlzX2xpZXBhX3J1Z3Bqxat0aXNfcnVnc8SXamlzX3NwYWxpc19sYXBrcml0aXNfZ3J1b2Rpcycuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBpc0Zvcm1hdDogL0Rbb0RdPyhcXFtbXlxcW1xcXV0qXFxdfFxccykrTU1NTT98TU1NTT8oXFxbW15cXFtcXF1dKlxcXXxcXHMpK0Rbb0RdPy8sXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnc2F1X3Zhc19rb3ZfYmFsX2dlZ19iaXJfbGllX3JncF9yZ3Nfc3BhX2xhcF9ncmQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICdzZWttYWRpZW7Er19waXJtYWRpZW7Er19hbnRyYWRpZW7Er190cmXEjWlhZGllbsSvX2tldHZpcnRhZGllbsSvX3Blbmt0YWRpZW7Er1/FoWXFoXRhZGllbsSvJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICdzZWttYWRpZW5pc19waXJtYWRpZW5pc19hbnRyYWRpZW5pc190cmXEjWlhZGllbmlzX2tldHZpcnRhZGllbmlzX3Blbmt0YWRpZW5pc1/FoWXFoXRhZGllbmlzJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGlzRm9ybWF0OiAvZGRkZCBISDptbS8sXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTZWtfUGlyX0FudF9UcmVfS2V0X1Blbl/FoGXFoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTX1BfQV9UX0tfUG5fxaAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgTEw6ICdZWVlZIFttLl0gTU1NTSBEIFtkLl0nLFxuICAgICAgICAgICAgTExMOiAnWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBISDptbSBbdmFsLl0nLFxuICAgICAgICAgICAgTExMTDogJ1lZWVkgW20uXSBNTU1NIEQgW2QuXSwgZGRkZCwgSEg6bW0gW3ZhbC5dJyxcbiAgICAgICAgICAgIGw6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIGxsOiAnWVlZWSBbbS5dIE1NTU0gRCBbZC5dJyxcbiAgICAgICAgICAgIGxsbDogJ1lZWVkgW20uXSBNTU1NIEQgW2QuXSwgSEg6bW0gW3ZhbC5dJyxcbiAgICAgICAgICAgIGxsbGw6ICdZWVlZIFttLl0gTU1NTSBEIFtkLl0sIGRkZCwgSEg6bW0gW3ZhbC5dJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbxaBpYW5kaWVuXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1J5dG9qXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tWYWthcl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbUHJhxJdqdXPEr10gZGRkZCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3BvICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdwcmllxaEgJXMnLFxuICAgICAgICAgICAgczogdHJhbnNsYXRlU2Vjb25kcyxcbiAgICAgICAgICAgIHNzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtOiB0cmFuc2xhdGVTaW5ndWxhcixcbiAgICAgICAgICAgIG1tOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoOiB0cmFuc2xhdGVTaW5ndWxhcixcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiB0cmFuc2xhdGVTaW5ndWxhcixcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiB0cmFuc2xhdGVTaW5ndWxhcixcbiAgICAgICAgICAgIE1NOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5OiB0cmFuc2xhdGVTaW5ndWxhcixcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS1vamkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy1vamknO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbHQ7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogTGF0dmlhbiBbbHZdXG4vLyEgYXV0aG9yIDogS3Jpc3RhcHMgS2FybHNvbnMgOiBodHRwczovL2dpdGh1Yi5jb20vc2tha3JpXG4vLyEgYXV0aG9yIDogSsSBbmlzIEVsbWVyaXMgOiBodHRwczovL2dpdGh1Yi5jb20vSmFuaXNFXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdW5pdHMgPSB7XG4gICAgICAgIHNzOiAnc2VrdW5kZXNfc2VrdW5kxJNtX3Nla3VuZGVfc2VrdW5kZXMnLnNwbGl0KCdfJyksXG4gICAgICAgIG06ICdtaW7Fq3Rlc19taW7Fq3TEk21fbWluxat0ZV9taW7Fq3Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW06ICdtaW7Fq3Rlc19taW7Fq3TEk21fbWluxat0ZV9taW7Fq3Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgaDogJ3N0dW5kYXNfc3R1bmTEgW1fc3R1bmRhX3N0dW5kYXMnLnNwbGl0KCdfJyksXG4gICAgICAgIGhoOiAnc3R1bmRhc19zdHVuZMSBbV9zdHVuZGFfc3R1bmRhcycuc3BsaXQoJ18nKSxcbiAgICAgICAgZDogJ2RpZW5hc19kaWVuxIFtX2RpZW5hX2RpZW5hcycuc3BsaXQoJ18nKSxcbiAgICAgICAgZGQ6ICdkaWVuYXNfZGllbsSBbV9kaWVuYV9kaWVuYXMnLnNwbGl0KCdfJyksXG4gICAgICAgIE06ICdtxJNuZcWhYV9txJNuZcWhaWVtX23Ek25lc2lzX23Ek25lxaFpJy5zcGxpdCgnXycpLFxuICAgICAgICBNTTogJ23Ek25lxaFhX23Ek25lxaFpZW1fbcSTbmVzaXNfbcSTbmXFoWknLnNwbGl0KCdfJyksXG4gICAgICAgIHk6ICdnYWRhX2dhZGllbV9nYWRzX2dhZGknLnNwbGl0KCdfJyksXG4gICAgICAgIHl5OiAnZ2FkYV9nYWRpZW1fZ2Fkc19nYWRpJy5zcGxpdCgnXycpLFxuICAgIH07XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHdpdGhvdXRTdWZmaXggYm9vbGVhbiB0cnVlID0gYSBsZW5ndGggb2YgdGltZTsgZmFsc2UgPSBiZWZvcmUvYWZ0ZXIgYSBwZXJpb2Qgb2YgdGltZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JtYXQoZm9ybXMsIG51bWJlciwgd2l0aG91dFN1ZmZpeCkge1xuICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgLy8gRS5nLiBcIjIxIG1pbsWrdGVcIiwgXCIzIG1pbsWrdGVzXCIuXG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICUgMTAgPT09IDEgJiYgbnVtYmVyICUgMTAwICE9PSAxMSA/IGZvcm1zWzJdIDogZm9ybXNbM107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBFLmcuIFwiMjEgbWluxat0ZXNcIiBhcyBpbiBcInDEk2MgMjEgbWluxat0ZXNcIi5cbiAgICAgICAgICAgIC8vIEUuZy4gXCIzIG1pbsWrdMSTbVwiIGFzIGluIFwicMSTYyAzIG1pbsWrdMSTbVwiLlxuICAgICAgICAgICAgcmV0dXJuIG51bWJlciAlIDEwID09PSAxICYmIG51bWJlciAlIDEwMCAhPT0gMTEgPyBmb3Jtc1swXSA6IGZvcm1zWzFdO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZVdpdGhQbHVyYWwobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIGZvcm1hdCh1bml0c1trZXldLCBudW1iZXIsIHdpdGhvdXRTdWZmaXgpO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWVXaXRoU2luZ3VsYXIobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgcmV0dXJuIGZvcm1hdCh1bml0c1trZXldLCBudW1iZXIsIHdpdGhvdXRTdWZmaXgpO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVNlY29uZHMobnVtYmVyLCB3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2Rhxb5hcyBzZWt1bmRlcycgOiAnZGHFvsSBbSBzZWt1bmTEk20nO1xuICAgIH1cblxuICAgIHZhciBsdiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2x2Jywge1xuICAgICAgICBtb250aHM6ICdqYW52xIFyaXNfZmVicnXEgXJpc19tYXJ0c19hcHLEq2xpc19tYWlqc19qxatuaWpzX2rFq2xpanNfYXVndXN0c19zZXB0ZW1icmlzX29rdG9icmlzX25vdmVtYnJpc19kZWNlbWJyaXMnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnamFuX2ZlYl9tYXJfYXByX21haV9qxatuX2rFq2xfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnc3bEk3RkaWVuYV9waXJtZGllbmFfb3RyZGllbmFfdHJlxaFkaWVuYV9jZXR1cnRkaWVuYV9waWVrdGRpZW5hX3Nlc3RkaWVuYScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU3ZfUF9PX1RfQ19Qa19TJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1N2X1BfT19UX0NfUGtfUycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWS4nLFxuICAgICAgICAgICAgTEw6ICdZWVlZLiBbZ2FkYV0gRC4gTU1NTScsXG4gICAgICAgICAgICBMTEw6ICdZWVlZLiBbZ2FkYV0gRC4gTU1NTSwgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ1lZWVkuIFtnYWRhXSBELiBNTU1NLCBkZGRkLCBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW8Wgb2RpZW4gcHVsa3N0ZW5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbUsSrdCBwdWxrc3Rlbl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtwdWxrc3Rlbl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tWYWthciBwdWxrc3Rlbl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbUGFnxIFqdcWhxIFdIGRkZGQgW3B1bGtzdGVuXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3DEk2MgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ3Bpcm1zICVzJyxcbiAgICAgICAgICAgIHM6IHJlbGF0aXZlU2Vjb25kcyxcbiAgICAgICAgICAgIHNzOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgbTogcmVsYXRpdmVUaW1lV2l0aFNpbmd1bGFyLFxuICAgICAgICAgICAgbW06IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBoOiByZWxhdGl2ZVRpbWVXaXRoU2luZ3VsYXIsXG4gICAgICAgICAgICBoaDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGQ6IHJlbGF0aXZlVGltZVdpdGhTaW5ndWxhcixcbiAgICAgICAgICAgIGRkOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgTTogcmVsYXRpdmVUaW1lV2l0aFNpbmd1bGFyLFxuICAgICAgICAgICAgTU06IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICB5OiByZWxhdGl2ZVRpbWVXaXRoU2luZ3VsYXIsXG4gICAgICAgICAgICB5eTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBsdjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBNb250ZW5lZ3JpbiBbbWVdXG4vLyEgYXV0aG9yIDogTWlvZHJhZyBOaWthxI0gPG1pb2RyYWdAcmVzdGFydGl0Lm1lPiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9taW9kcmFnbmlrYWNcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB0cmFuc2xhdG9yID0ge1xuICAgICAgICB3b3Jkczoge1xuICAgICAgICAgICAgLy9EaWZmZXJlbnQgZ3JhbW1hdGljYWwgY2FzZXNcbiAgICAgICAgICAgIHNzOiBbJ3Nla3VuZCcsICdzZWt1bmRhJywgJ3Nla3VuZGknXSxcbiAgICAgICAgICAgIG06IFsnamVkYW4gbWludXQnLCAnamVkbm9nIG1pbnV0YSddLFxuICAgICAgICAgICAgbW06IFsnbWludXQnLCAnbWludXRhJywgJ21pbnV0YSddLFxuICAgICAgICAgICAgaDogWydqZWRhbiBzYXQnLCAnamVkbm9nIHNhdGEnXSxcbiAgICAgICAgICAgIGhoOiBbJ3NhdCcsICdzYXRhJywgJ3NhdGknXSxcbiAgICAgICAgICAgIGRkOiBbJ2RhbicsICdkYW5hJywgJ2RhbmEnXSxcbiAgICAgICAgICAgIE1NOiBbJ21qZXNlYycsICdtamVzZWNhJywgJ21qZXNlY2knXSxcbiAgICAgICAgICAgIHl5OiBbJ2dvZGluYScsICdnb2RpbmUnLCAnZ29kaW5hJ10sXG4gICAgICAgIH0sXG4gICAgICAgIGNvcnJlY3RHcmFtbWF0aWNhbENhc2U6IGZ1bmN0aW9uIChudW1iZXIsIHdvcmRLZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgPT09IDFcbiAgICAgICAgICAgICAgICA/IHdvcmRLZXlbMF1cbiAgICAgICAgICAgICAgICA6IG51bWJlciA+PSAyICYmIG51bWJlciA8PSA0XG4gICAgICAgICAgICAgICAgPyB3b3JkS2V5WzFdXG4gICAgICAgICAgICAgICAgOiB3b3JkS2V5WzJdO1xuICAgICAgICB9LFxuICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uIChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICAgICAgdmFyIHdvcmRLZXkgPSB0cmFuc2xhdG9yLndvcmRzW2tleV07XG4gICAgICAgICAgICBpZiAoa2V5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gd29yZEtleVswXSA6IHdvcmRLZXlbMV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIG51bWJlciArXG4gICAgICAgICAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0b3IuY29ycmVjdEdyYW1tYXRpY2FsQ2FzZShudW1iZXIsIHdvcmRLZXkpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgdmFyIG1lID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbWUnLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnVhcl9mZWJydWFyX21hcnRfYXByaWxfbWFqX2p1bl9qdWxfYXZndXN0X3NlcHRlbWJhcl9va3RvYmFyX25vdmVtYmFyX2RlY2VtYmFyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdqYW4uX2ZlYi5fbWFyLl9hcHIuX21hal9qdW5fanVsX2F2Zy5fc2VwLl9va3QuX25vdi5fZGVjLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICduZWRqZWxqYV9wb25lZGplbGpha191dG9yYWtfc3JpamVkYV/EjWV0dnJ0YWtfcGV0YWtfc3Vib3RhJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnbmVkLl9wb24uX3V0by5fc3JpLl/EjWV0Ll9wZXQuX3N1Yi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnbmVfcG9fdXRfc3JfxI1lX3BlX3N1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tkYW5hcyB1XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW3NqdXRyYSB1XSBMVCcsXG5cbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtuZWRqZWxqdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3NyaWplZHVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtzdWJvdHVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIGRkZGQgW3VdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogJ1tqdcSNZSB1XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBsYXN0V2Vla0RheXMgPSBbXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsZV0gW25lZGplbGplXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbG9nXSBbcG9uZWRqZWxqa2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFt1dG9ya2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsZV0gW3NyaWplZGVdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFvEjWV0dnJ0a2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFtwZXRrYV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxlXSBbc3Vib3RlXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RXZWVrRGF5c1t0aGlzLmRheSgpXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdwcmlqZSAlcycsXG4gICAgICAgICAgICBzOiAnbmVrb2xpa28gc2VrdW5kaScsXG4gICAgICAgICAgICBzczogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBtOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgaGg6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgZDogJ2RhbicsXG4gICAgICAgICAgICBkZDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiAnbWplc2VjJyxcbiAgICAgICAgICAgIE1NOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6ICdnb2RpbnUnLFxuICAgICAgICAgICAgeXk6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1lO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE1hb3JpIFttaV1cbi8vISBhdXRob3IgOiBKb2huIENvcnJpZ2FuIDxyb2JiaWVjbG9zZXRAZ21haWwuY29tPiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qb2huaWRlYWxcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtaSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21pJywge1xuICAgICAgICBtb250aHM6ICdLb2hpLXTEgXRlX0h1aS10YW5ndXJ1X1BvdXTFqy10ZS1yYW5naV9QYWVuZ2Etd2jEgXdoxIFfSGFyYXR1YV9QaXBpcmlfSMWNbmdvaW5nb2lfSGVyZS10dXJpLWvFjWvEgV9NYWh1cnVfV2hpcmluZ2EtxIEtbnVrdV9XaGlyaW5nYS3EgS1yYW5naV9IYWtpaGVhJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdLb2hpX0h1aV9Qb3VfUGFlX0hhcmFfUGlwaV9IxY1uZ29pX0hlcmVfTWFodV9XaGktbnVfV2hpLXJhX0hha2knLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUmVnZXg6IC8oPzpbJ2EtelxcdTAxMDFcXHUwMTREXFx1MDE2Ql0rXFwtPyl7MSwzfS9pLFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDogLyg/OlsnYS16XFx1MDEwMVxcdTAxNERcXHUwMTZCXStcXC0/KXsxLDN9L2ksXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IC8oPzpbJ2EtelxcdTAxMDFcXHUwMTREXFx1MDE2Ql0rXFwtPyl7MSwzfS9pLFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OiAvKD86WydhLXpcXHUwMTAxXFx1MDE0RFxcdTAxNkJdK1xcLT8pezEsMn0vaSxcbiAgICAgICAgd2Vla2RheXM6ICdSxIF0YXB1X01hbmVfVMWrcmVpX1dlbmVyZWlfVMSBaXRlX1BhcmFpcmVfSMSBdGFyZWknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdUYV9NYV9UxatfV2VfVMSBaV9QYV9IxIEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnVGFfTWFfVMWrX1dlX1TEgWlfUGFfSMSBJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIFtpXSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgW2ldIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaSB0ZWllIG1haGFuYSwgaV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1thcG9wbyBpXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2ldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbaW5hbmFoaSBpXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW3doYWthbXV0dW5nYSBpXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2kgcm90byBpICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBpIG11YScsXG4gICAgICAgICAgICBzOiAndGUgaMSTa29uYSBydWFydWEnLFxuICAgICAgICAgICAgc3M6ICclZCBoxJNrb25hJyxcbiAgICAgICAgICAgIG06ICdoZSBtZW5ldGknLFxuICAgICAgICAgICAgbW06ICclZCBtZW5ldGknLFxuICAgICAgICAgICAgaDogJ3RlIGhhb3JhJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaGFvcmEnLFxuICAgICAgICAgICAgZDogJ2hlIHJhJyxcbiAgICAgICAgICAgIGRkOiAnJWQgcmEnLFxuICAgICAgICAgICAgTTogJ2hlIG1hcmFtYScsXG4gICAgICAgICAgICBNTTogJyVkIG1hcmFtYScsXG4gICAgICAgICAgICB5OiAnaGUgdGF1JyxcbiAgICAgICAgICAgIHl5OiAnJWQgdGF1JyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsOiAnJWTCuicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtaTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBNYWNlZG9uaWFuIFtta11cbi8vISBhdXRob3IgOiBCb3Jpc2xhdiBNaWNrb3YgOiBodHRwczovL2dpdGh1Yi5jb20vQjBrMFxuLy8hIGF1dGhvciA6IFNhc2hrbyBUb2Rvcm92IDogaHR0cHM6Ly9naXRodWIuY29tL2JreWNlaFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1rID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbWsnLCB7XG4gICAgICAgIG1vbnRoczogJ9GY0LDQvdGD0LDRgNC4X9GE0LXQstGA0YPQsNGA0Lhf0LzQsNGA0YJf0LDQv9GA0LjQu1/QvNCw0Zhf0ZjRg9C90Lhf0ZjRg9C70Lhf0LDQstCz0YPRgdGCX9GB0LXQv9GC0LXQvNCy0YDQuF/QvtC60YLQvtC80LLRgNC4X9C90L7QtdC80LLRgNC4X9C00LXQutC10LzQstGA0LgnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn0ZjQsNC9X9GE0LXQsl/QvNCw0YBf0LDQv9GAX9C80LDRmF/RmNGD0L1f0ZjRg9C7X9Cw0LLQs1/RgdC10L9f0L7QutGCX9C90L7QtV/QtNC10LonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAn0L3QtdC00LXQu9CwX9C/0L7QvdC10LTQtdC70L3QuNC6X9Cy0YLQvtGA0L3QuNC6X9GB0YDQtdC00LBf0YfQtdGC0LLRgNGC0L7Qul/Qv9C10YLQvtC6X9GB0LDQsdC+0YLQsCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9C90LXQtF/Qv9C+0L1f0LLRgtC+X9GB0YDQtV/Rh9C10YJf0L/QtdGCX9GB0LDQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfQvWVf0L9vX9Cy0YJf0YHRgF/Rh9C1X9C/0LVf0YFhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0QuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQlNC10L3QtdGBINCy0L5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb0KPRgtGA0LUg0LLQvl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdb0JLQvl0gZGRkZCBb0LLQvl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vQktGH0LXRgNCwINCy0L5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQmNC30LzQuNC90LDRgtCw0YLQsF0gZGRkZCBb0LLQvl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQmNC30LzQuNC90LDRgtC40L7Rgl0gZGRkZCBb0LLQvl0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9C30LAgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ9C/0YDQtdC0ICVzJyxcbiAgICAgICAgICAgIHM6ICfQvdC10LrQvtC70LrRgyDRgdC10LrRg9C90LTQuCcsXG4gICAgICAgICAgICBzczogJyVkINGB0LXQutGD0L3QtNC4JyxcbiAgICAgICAgICAgIG06ICfQtdC00L3QsCDQvNC40L3Rg9GC0LAnLFxuICAgICAgICAgICAgbW06ICclZCDQvNC40L3Rg9GC0LgnLFxuICAgICAgICAgICAgaDogJ9C10LTQtdC9INGH0LDRgScsXG4gICAgICAgICAgICBoaDogJyVkINGH0LDRgdCwJyxcbiAgICAgICAgICAgIGQ6ICfQtdC00LXQvSDQtNC10L0nLFxuICAgICAgICAgICAgZGQ6ICclZCDQtNC10L3QsCcsXG4gICAgICAgICAgICBNOiAn0LXQtNC10L0g0LzQtdGB0LXRhicsXG4gICAgICAgICAgICBNTTogJyVkINC80LXRgdC10YbQuCcsXG4gICAgICAgICAgICB5OiAn0LXQtNC90LAg0LPQvtC00LjQvdCwJyxcbiAgICAgICAgICAgIHl5OiAnJWQg0LPQvtC00LjQvdC4JyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjQtdCyfNC10L180YLQuHzQstC4fNGA0Lh80LzQuCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgbGFzdERpZ2l0ID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgbGFzdDJEaWdpdHMgPSBudW1iZXIgJSAxMDA7XG4gICAgICAgICAgICBpZiAobnVtYmVyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LXQsic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3QyRGlnaXRzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LXQvSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3QyRGlnaXRzID4gMTAgJiYgbGFzdDJEaWdpdHMgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdGC0LgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0RGlnaXQgPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QstC4JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdERpZ2l0ID09PSAyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0YDQuCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3REaWdpdCA9PT0gNyB8fCBsYXN0RGlnaXQgPT09IDgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QvNC4JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0YLQuCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtaztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBNYWxheWFsYW0gW21sXVxuLy8hIGF1dGhvciA6IEZsb3lkIFBpbmsgOiBodHRwczovL2dpdGh1Yi5jb20vZmxveWRwaW5rXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbWwgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdtbCcsIHtcbiAgICAgICAgbW9udGhzOiAn4LSc4LSo4LWB4LS14LSw4LS/X+C0q+C1huC0rOC1jeC0sOC1geC0teC0sOC0v1/gtK7gtL7gtbzgtJrgtY3gtJrgtY1f4LSP4LSq4LWN4LSw4LS/4LW9X+C0ruC1h+C0r+C1jV/gtJzgtYLgtbpf4LSc4LWC4LSy4LWIX+C0k+C0l+C0uOC1jeC0seC1jeC0seC1jV/gtLjgtYbgtKrgtY3gtLHgtY3gtLHgtILgtKzgtbxf4LSS4LSV4LWN4LSf4LWL4LSs4LW8X+C0qOC0teC0guC0rOC1vF/gtKHgtL/gtLjgtILgtKzgtbwnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+C0nOC0qOC1gS5f4LSr4LWG4LSs4LWN4LSw4LWBLl/gtK7gtL7gtbwuX+C0j+C0quC1jeC0sOC0vy5f4LSu4LWH4LSv4LWNX+C0nOC1guC1ul/gtJzgtYLgtLLgtYguX+C0k+C0ly5f4LS44LWG4LSq4LWN4LSx4LWN4LSxLl/gtJLgtJXgtY3gtJ/gtYsuX+C0qOC0teC0gi5f4LSh4LS/4LS44LSCLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICfgtJ7gtL7gtK/gtLHgtL7gtLTgtY3gtJpf4LSk4LS/4LSZ4LWN4LSV4LSz4LS+4LS04LWN4LSaX+C0muC1iuC0teC1jeC0teC0vuC0tOC1jeC0ml/gtKzgtYHgtKfgtKjgtL7gtLTgtY3gtJpf4LS14LWN4LSv4LS+4LS04LS+4LS04LWN4LSaX+C0teC1huC0s+C1jeC0s+C0v+C0r+C0vuC0tOC1jeC0ml/gtLbgtKjgtL/gtK/gtL7gtLTgtY3gtJonLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+C0nuC0vuC0r+C1vF/gtKTgtL/gtJngtY3gtJXgtb5f4LSa4LWK4LS14LWN4LS1X+C0rOC1geC0p+C1u1/gtLXgtY3gtK/gtL7gtLTgtIJf4LS14LWG4LSz4LWN4LSz4LS/X+C0tuC0qOC0vycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfgtJ7gtL5f4LSk4LS/X+C0muC1il/gtKzgtYFf4LS14LWN4LSv4LS+X+C0teC1hl/gtLYnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0EgaDptbSAt4LSo4LWBJyxcbiAgICAgICAgICAgIExUUzogJ0EgaDptbTpzcyAt4LSo4LWBJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVksIEEgaDptbSAt4LSo4LWBJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIC3gtKjgtYEnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgtIfgtKjgtY3gtKjgtY1dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4LSo4LS+4LSz4LWGXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4LSH4LSo4LWN4LSo4LSy4LWGXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgtJXgtLTgtL/gtJ7gtY3gtJ5dIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg4LSV4LS04LS/4LSe4LWN4LSe4LWNJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDgtK7gtYHgtbvgtKrgtY0nLFxuICAgICAgICAgICAgczogJ+C0heC1veC0qiDgtKjgtL/gtK7gtL/gtLfgtJngtY3gtJngtb4nLFxuICAgICAgICAgICAgc3M6ICclZCDgtLjgtYbgtJXgtY3gtJXgtbvgtKHgtY0nLFxuICAgICAgICAgICAgbTogJ+C0kuC0sOC1gSDgtK7gtL/gtKjgtL/gtLHgtY3gtLHgtY0nLFxuICAgICAgICAgICAgbW06ICclZCDgtK7gtL/gtKjgtL/gtLHgtY3gtLHgtY0nLFxuICAgICAgICAgICAgaDogJ+C0kuC0sOC1gSDgtK7gtKPgtL/gtJXgtY3gtJXgtYLgtbwnLFxuICAgICAgICAgICAgaGg6ICclZCDgtK7gtKPgtL/gtJXgtY3gtJXgtYLgtbwnLFxuICAgICAgICAgICAgZDogJ+C0kuC0sOC1gSDgtKbgtL/gtLXgtLjgtIInLFxuICAgICAgICAgICAgZGQ6ICclZCDgtKbgtL/gtLXgtLjgtIInLFxuICAgICAgICAgICAgTTogJ+C0kuC0sOC1gSDgtK7gtL7gtLjgtIInLFxuICAgICAgICAgICAgTU06ICclZCDgtK7gtL7gtLjgtIInLFxuICAgICAgICAgICAgeTogJ+C0kuC0sOC1gSDgtLXgtbzgtLfgtIInLFxuICAgICAgICAgICAgeXk6ICclZCDgtLXgtbzgtLfgtIInLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4LSw4LS+4LSk4LWN4LSw4LS/fOC0sOC0vuC0teC0v+C0suC1hnzgtIngtJrgtY3gtJog4LSV4LS04LS/4LSe4LWN4LSe4LWNfOC0teC1iOC0leC1geC0qOC1jeC0qOC1h+C0sOC0gnzgtLDgtL7gtKTgtY3gtLDgtL8vaSxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIChtZXJpZGllbSA9PT0gJ+C0sOC0vuC0pOC1jeC0sOC0vycgJiYgaG91ciA+PSA0KSB8fFxuICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn4LSJ4LSa4LWN4LSaIOC0leC0tOC0v+C0nuC1jeC0nuC1jScgfHxcbiAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ+C0teC1iOC0leC1geC0qOC1jeC0qOC1h+C0sOC0gidcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgtLDgtL7gtKTgtY3gtLDgtL8nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C0sOC0vuC0teC0v+C0suC1hic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LSJ4LSa4LWN4LSaIOC0leC0tOC0v+C0nuC1jeC0nuC1jSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LS14LWI4LSV4LWB4LSo4LWN4LSo4LWH4LSw4LSCJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgtLDgtL7gtKTgtY3gtLDgtL8nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1sO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE1vbmdvbGlhbiBbbW5dXG4vLyEgYXV0aG9yIDogSmF2a2hsYW50dWdzIE55YW1kb3JqIDogaHR0cHM6Ly9naXRodWIuY29tL2phdmtoYWFuajdcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ9GF0Y3QtNGF0Y3QvSDRgdC10LrRg9C90LQnIDogJ9GF0Y3QtNGF0Y3QvSDRgdC10LrRg9C90LTRi9C9JztcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHdpdGhvdXRTdWZmaXggPyAnINGB0LXQutGD0L3QtCcgOiAnINGB0LXQutGD0L3QtNGL0L0nKTtcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAod2l0aG91dFN1ZmZpeCA/ICcg0LzQuNC90YPRgicgOiAnINC80LjQvdGD0YLRi9C9Jyk7XG4gICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHdpdGhvdXRTdWZmaXggPyAnINGG0LDQsycgOiAnINGG0LDQs9C40LnQvScpO1xuICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICh3aXRob3V0U3VmZml4ID8gJyDTqdC006nRgCcgOiAnINOp0LTRgNC40LnQvScpO1xuICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICh3aXRob3V0U3VmZml4ID8gJyDRgdCw0YAnIDogJyDRgdCw0YDRi9C9Jyk7XG4gICAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHdpdGhvdXRTdWZmaXggPyAnINC20LjQuycgOiAnINC20LjQu9C40LnQvScpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIG1uID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbW4nLCB7XG4gICAgICAgIG1vbnRoczogJ9Cd0Y3Qs9C00q/Qs9GN0Y3RgCDRgdCw0YBf0KXQvtGR0YDQtNGD0LPQsNCw0YAg0YHQsNGAX9CT0YPRgNCw0LLQtNGD0LPQsNCw0YAg0YHQsNGAX9CU06nRgNOp0LLQtNKv0LPRjdGN0YAg0YHQsNGAX9Ci0LDQstC00YPQs9Cw0LDRgCDRgdCw0YBf0JfRg9GA0LPQsNC00YPQs9Cw0LDRgCDRgdCw0YBf0JTQvtC70LTRg9Cz0LDQsNGAINGB0LDRgF/QndCw0LnQvNC00YPQs9Cw0LDRgCDRgdCw0YBf0JXRgdC00q/Qs9GN0Y3RgCDRgdCw0YBf0JDRgNCw0LLQtNGD0LPQsNCw0YAg0YHQsNGAX9CQ0YDQstCw0L0g0L3RjdCz0LTSr9Cz0Y3RjdGAINGB0LDRgF/QkNGA0LLQsNC9INGF0L7RkdGA0LTRg9Cz0LDQsNGAINGB0LDRgCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnMSDRgdCw0YBfMiDRgdCw0YBfMyDRgdCw0YBfNCDRgdCw0YBfNSDRgdCw0YBfNiDRgdCw0YBfNyDRgdCw0YBfOCDRgdCw0YBfOSDRgdCw0YBfMTAg0YHQsNGAXzExINGB0LDRgF8xMiDRgdCw0YAnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICfQndGP0Lxf0JTQsNCy0LDQsF/QnNGP0LPQvNCw0YBf0JvRhdCw0LPQstCwX9Cf0q/RgNGN0LJf0JHQsNCw0YHQsNC9X9CR0Y/QvNCx0LAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfQndGP0Lxf0JTQsNCyX9Cc0Y/Qs1/Qm9GF0LBf0J/Sr9GAX9CR0LDQsF/QkdGP0LwnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn0J3Rj1/QlNCwX9Cc0Y9f0JvRhV/Qn9KvX9CR0LBf0JHRjycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTDogJ1lZWVkg0L7QvdGLIE1NTU3Ri9C9IEQnLFxuICAgICAgICAgICAgTExMOiAnWVlZWSDQvtC90YsgTU1NTdGL0L0gRCBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgWVlZWSDQvtC90YsgTU1NTdGL0L0gRCBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/SrtOofNKu0KUvaSxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgPT09ICfSrtClJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Ku06gnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Ku0KUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vTqNC906nTqdC006nRgF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vQnNCw0YDQs9Cw0LDRiF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdb0JjRgNGN0YVdIGRkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vTqNGH0LjQs9C006nRgF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb06jQvdCz06nRgNGB06nQvV0gZGRkZCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzINC00LDRgNCw0LAnLFxuICAgICAgICAgICAgcGFzdDogJyVzINOp0LzQvdOpJyxcbiAgICAgICAgICAgIHM6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHNzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQ6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeXk6IHRyYW5zbGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9INOp0LTTqdGALyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnINOp0LTTqdGAJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1uO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE1hcmF0aGkgW21yXVxuLy8hIGF1dGhvciA6IEhhcnNoYWQgS2FsZSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9rYWxlaHZcbi8vISBhdXRob3IgOiBWaXZlayBBdGhhbHllIDogaHR0cHM6Ly9naXRodWIuY29tL3ZuYXRoYWx5ZVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICfgpacnLFxuICAgICAgICAgICAgMjogJ+ClqCcsXG4gICAgICAgICAgICAzOiAn4KWpJyxcbiAgICAgICAgICAgIDQ6ICfgpaonLFxuICAgICAgICAgICAgNTogJ+ClqycsXG4gICAgICAgICAgICA2OiAn4KWsJyxcbiAgICAgICAgICAgIDc6ICfgpa0nLFxuICAgICAgICAgICAgODogJ+ClricsXG4gICAgICAgICAgICA5OiAn4KWvJyxcbiAgICAgICAgICAgIDA6ICfgpaYnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn4KWnJzogJzEnLFxuICAgICAgICAgICAgJ+ClqCc6ICcyJyxcbiAgICAgICAgICAgICfgpaknOiAnMycsXG4gICAgICAgICAgICAn4KWqJzogJzQnLFxuICAgICAgICAgICAgJ+Clqyc6ICc1JyxcbiAgICAgICAgICAgICfgpawnOiAnNicsXG4gICAgICAgICAgICAn4KWtJzogJzcnLFxuICAgICAgICAgICAgJ+Clric6ICc4JyxcbiAgICAgICAgICAgICfgpa8nOiAnOScsXG4gICAgICAgICAgICAn4KWmJzogJzAnLFxuICAgICAgICB9O1xuXG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lTXIobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBvdXRwdXQgPSAnJztcbiAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoc3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICfgpJXgpL7gpLngpYAg4KS44KWH4KSV4KSC4KSmJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJWQg4KS44KWH4KSV4KSC4KSmJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICfgpI/gpJUg4KSu4KS/4KSo4KS/4KSfJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJWQg4KSu4KS/4KSo4KS/4KSf4KWHJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICfgpI/gpJUg4KSk4KS+4KS4JztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJWQg4KSk4KS+4KS4JztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICfgpI/gpJUg4KSm4KS/4KS14KS4JztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJWQg4KSm4KS/4KS14KS4JztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICfgpI/gpJUg4KSu4KS54KS/4KSo4KS+JztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJWQg4KSu4KS54KS/4KSo4KWHJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICfgpI/gpJUg4KS14KSw4KWN4KS3JztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJWQg4KS14KSw4KWN4KS34KWHJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHN0cmluZykge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAn4KSV4KS+4KS54KWAIOCkuOClh+CkleCkguCkpuCkvuCkgic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJyVkIOCkuOClh+CkleCkguCkpuCkvuCkgic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAn4KSP4KSV4KS+IOCkruCkv+CkqOCkv+Ckn+Ckvic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJyVkIOCkruCkv+CkqOCkv+Ckn+CkvuCkgic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAn4KSP4KSV4KS+IOCkpOCkvuCkuOCkvic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJyVkIOCkpOCkvuCkuOCkvuCkgic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAn4KSP4KSV4KS+IOCkpuCkv+CkteCkuOCkvic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJyVkIOCkpuCkv+CkteCkuOCkvuCkgic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAn4KSP4KSV4KS+IOCkruCkueCkv+CkqOCljeCkr+Ckvic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJyVkIOCkruCkueCkv+CkqOCljeCkr+CkvuCkgic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAn4KSP4KSV4KS+IOCkteCksOCljeCkt+Ckvic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJyVkIOCkteCksOCljeCkt+CkvuCkgic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXRwdXQucmVwbGFjZSgvJWQvaSwgbnVtYmVyKTtcbiAgICB9XG5cbiAgICB2YXIgbXIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdtcicsIHtcbiAgICAgICAgbW9udGhzOiAn4KSc4KS+4KSo4KWH4KS14KS+4KSw4KWAX+Ckq+Clh+CkrOCljeCksOClgeCkteCkvuCksOClgF/gpK7gpL7gpLDgpY3gpJpf4KSP4KSq4KWN4KSw4KS/4KSyX+CkruClh1/gpJzgpYLgpKhf4KSc4KWB4KSy4KWIX+CkkeCkl+CkuOCljeCkn1/gpLjgpKrgpY3gpJ/gpYfgpILgpKzgpLBf4KSR4KSV4KWN4KSf4KWL4KSs4KSwX+CkqOCli+CkteCljeCkueClh+CkguCkrOCksF/gpKHgpL/gpLjgpYfgpILgpKzgpLAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+CknOCkvuCkqOClhy5f4KSr4KWH4KSs4KWN4KSw4KWBLl/gpK7gpL7gpLDgpY3gpJouX+Ckj+CkquCljeCksOCkvy5f4KSu4KWHLl/gpJzgpYLgpKguX+CknOClgeCksuCliC5f4KSR4KSXLl/gpLjgpKrgpY3gpJ/gpYfgpIIuX+CkkeCkleCljeCkn+Cliy5f4KSo4KWL4KS14KWN4KS54KWH4KSCLl/gpKHgpL/gpLjgpYfgpIIuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAn4KSw4KS14KS/4KS14KS+4KSwX+CkuOCli+CkruCkteCkvuCksF/gpK7gpILgpJfgpLPgpLXgpL7gpLBf4KSs4KWB4KSn4KS14KS+4KSwX+Ckl+ClgeCksOClguCkteCkvuCksF/gpLbgpYHgpJXgpY3gpLDgpLXgpL7gpLBf4KS24KSo4KS/4KS14KS+4KSwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4KSw4KS14KS/X+CkuOCli+Ckrl/gpK7gpILgpJfgpLNf4KSs4KWB4KSnX+Ckl+ClgeCksOClgl/gpLbgpYHgpJXgpY3gpLBf4KS24KSo4KS/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+CksF/gpLjgpYtf4KSu4KSCX+CkrOClgV/gpJfgpYFf4KS24KWBX+Ckticuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnQSBoOm1tIOCkteCkvuCknOCkpOCkvicsXG4gICAgICAgICAgICBMVFM6ICdBIGg6bW06c3Mg4KS14KS+4KSc4KSk4KS+JyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVksIEEgaDptbSDgpLXgpL7gpJzgpKTgpL4nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0g4KS14KS+4KSc4KSk4KS+JyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4KSG4KScXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+CkieCkpuCljeCkr+Ckvl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+CkleCkvuCksl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4KSu4KS+4KSX4KWA4KSyXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVz4KSu4KSn4KWN4KSv4KWHJyxcbiAgICAgICAgICAgIHBhc3Q6ICclc+CkquClguCksOCljeCkteClgCcsXG4gICAgICAgICAgICBzOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIHNzOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIG06IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgbW06IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgaDogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBoaDogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBkOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIGRkOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIE06IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgTU06IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgeTogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICB5eTogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgpafgpajgpangpargpavgpazgpa3gpa7gpa/gpaZdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gpKrgpLngpL7gpJ/gpYd84KS44KSV4KS+4KSz4KWAfOCkpuClgeCkquCkvuCksOClgHzgpLjgpL7gpK/gpILgpJXgpL7gpLPgpYB84KSw4KS+4KSk4KWN4KSw4KWALyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4KSq4KS54KS+4KSf4KWHJyB8fCBtZXJpZGllbSA9PT0gJ+CkuOCkleCkvuCks+ClgCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfgpKbgpYHgpKrgpL7gpLDgpYAnIHx8XG4gICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfgpLjgpL7gpK/gpILgpJXgpL7gpLPgpYAnIHx8XG4gICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfgpLDgpL7gpKTgpY3gpLDgpYAnXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMiA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA+PSAwICYmIGhvdXIgPCA2KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpKrgpLngpL7gpJ/gpYcnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkuOCkleCkvuCks+ClgCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSm4KWB4KSq4KS+4KSw4KWAJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLjgpL7gpK/gpILgpJXgpL7gpLPgpYAnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CksOCkvuCkpOCljeCksOClgCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtcjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBNYWxheSBbbXMtbXldXG4vLyEgbm90ZSA6IERFUFJFQ0FURUQsIHRoZSBjb3JyZWN0IG9uZSBpcyBbbXNdXG4vLyEgYXV0aG9yIDogV2VsZGFuIEphbWlsaSA6IGh0dHBzOi8vZ2l0aHViLmNvbS93ZWxkYW5cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtc015ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbXMtbXknLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcmlfRmVicnVhcmlfTWFjX0FwcmlsX01laV9KdW5fSnVsYWlfT2dvc19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EaXNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hY19BcHJfTWVpX0p1bl9KdWxfT2dzX1NlcF9Pa3RfTm92X0Rpcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdBaGFkX0lzbmluX1NlbGFzYV9SYWJ1X0toYW1pc19KdW1hYXRfU2FidHUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdBaGRfSXNuX1NlbF9SYWJfS2hhX0p1bV9TYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnQWhfSXNfU2xfUmJfS21fSm1fU2InLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hILm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hILm1tLnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9wYWdpfHRlbmdhaGFyaXxwZXRhbmd8bWFsYW0vLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICdwYWdpJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3RlbmdhaGFyaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAncGV0YW5nJyB8fCBtZXJpZGllbSA9PT0gJ21hbGFtJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwYWdpJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxNSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAndGVuZ2FoYXJpJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxOSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAncGV0YW5nJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdtYWxhbSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hhcmkgaW5pIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0Vzb2sgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbS2VsbWFyaW4gcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbbGVwYXMgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnZGFsYW0gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHlhbmcgbGVwYXMnLFxuICAgICAgICAgICAgczogJ2JlYmVyYXBhIHNhYXQnLFxuICAgICAgICAgICAgc3M6ICclZCBzYWF0JyxcbiAgICAgICAgICAgIG06ICdzZW1pbml0JyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWluaXQnLFxuICAgICAgICAgICAgaDogJ3NlamFtJyxcbiAgICAgICAgICAgIGhoOiAnJWQgamFtJyxcbiAgICAgICAgICAgIGQ6ICdzZWhhcmknLFxuICAgICAgICAgICAgZGQ6ICclZCBoYXJpJyxcbiAgICAgICAgICAgIE06ICdzZWJ1bGFuJyxcbiAgICAgICAgICAgIE1NOiAnJWQgYnVsYW4nLFxuICAgICAgICAgICAgeTogJ3NldGFodW4nLFxuICAgICAgICAgICAgeXk6ICclZCB0YWh1bicsXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtc015O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE1hbGF5IFttc11cbi8vISBhdXRob3IgOiBXZWxkYW4gSmFtaWxpIDogaHR0cHM6Ly9naXRodWIuY29tL3dlbGRhblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIG1zID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbXMnLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcmlfRmVicnVhcmlfTWFjX0FwcmlsX01laV9KdW5fSnVsYWlfT2dvc19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EaXNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW5fRmViX01hY19BcHJfTWVpX0p1bl9KdWxfT2dzX1NlcF9Pa3RfTm92X0Rpcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdBaGFkX0lzbmluX1NlbGFzYV9SYWJ1X0toYW1pc19KdW1hYXRfU2FidHUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdBaGRfSXNuX1NlbF9SYWJfS2hhX0p1bV9TYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnQWhfSXNfU2xfUmJfS21fSm1fU2InLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hILm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hILm1tLnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9wYWdpfHRlbmdhaGFyaXxwZXRhbmd8bWFsYW0vLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICdwYWdpJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3RlbmdhaGFyaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAncGV0YW5nJyB8fCBtZXJpZGllbSA9PT0gJ21hbGFtJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwYWdpJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxNSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAndGVuZ2FoYXJpJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxOSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAncGV0YW5nJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdtYWxhbSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hhcmkgaW5pIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0Vzb2sgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbS2VsbWFyaW4gcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbbGVwYXMgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnZGFsYW0gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHlhbmcgbGVwYXMnLFxuICAgICAgICAgICAgczogJ2JlYmVyYXBhIHNhYXQnLFxuICAgICAgICAgICAgc3M6ICclZCBzYWF0JyxcbiAgICAgICAgICAgIG06ICdzZW1pbml0JyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWluaXQnLFxuICAgICAgICAgICAgaDogJ3NlamFtJyxcbiAgICAgICAgICAgIGhoOiAnJWQgamFtJyxcbiAgICAgICAgICAgIGQ6ICdzZWhhcmknLFxuICAgICAgICAgICAgZGQ6ICclZCBoYXJpJyxcbiAgICAgICAgICAgIE06ICdzZWJ1bGFuJyxcbiAgICAgICAgICAgIE1NOiAnJWQgYnVsYW4nLFxuICAgICAgICAgICAgeTogJ3NldGFodW4nLFxuICAgICAgICAgICAgeXk6ICclZCB0YWh1bicsXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtcztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBNYWx0ZXNlIChNYWx0YSkgW210XVxuLy8hIGF1dGhvciA6IEFsZXNzYW5kcm8gTWFydWNjaWEgOiBodHRwczovL2dpdGh1Yi5jb20vYWxlc21hXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbXQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdtdCcsIHtcbiAgICAgICAgbW9udGhzOiAnSmFubmFyX0ZyYXJfTWFyenVfQXByaWxfTWVqanVfxKB1bmp1X0x1bGp1X0F3d2lzc3VfU2V0dGVtYnJ1X090dHVicnVfTm92ZW1icnVfRGnEi2VtYnJ1Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbl9GcmFfTWFyX0Fwcl9NZWpfxKB1bl9MdWxfQXd3X1NldF9PdHRfTm92X0RpxIsnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ0lsLcSmYWRkX0l0LVRuZWpuX0l0LVRsaWV0YV9MLUVyYmfEp2FfSWwtxKZhbWlzX0lsLcSgaW1nxKdhX0lzLVNpYnQnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ8SmYWRfVG5lX1RsaV9FcmJfxKZhbV/EoGltX1NpYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfEpmFfVG5fVGxfRXJfxKZhX8SgaV9TaScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tJbGx1bSBmaWwtXUxUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbR8SnYWRhIGZpbC1dTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtmaWwtXUxUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSWwtYmllcmHEpyBmaWwtXUxUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbbGkgZ8SnYWRkYV0gW2ZpbC1dTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdm4oCZICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBpbHUnLFxuICAgICAgICAgICAgczogJ2Z0aXQgc2Vrb25kaScsXG4gICAgICAgICAgICBzczogJyVkIHNla29uZGknLFxuICAgICAgICAgICAgbTogJ21pbnV0YScsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0aScsXG4gICAgICAgICAgICBoOiAnc2llZ8SnYScsXG4gICAgICAgICAgICBoaDogJyVkIHNpZWfEp2F0JyxcbiAgICAgICAgICAgIGQ6ICfEoXVybmF0YScsXG4gICAgICAgICAgICBkZDogJyVkIMShcmFuZXQnLFxuICAgICAgICAgICAgTTogJ3hhaGFyJyxcbiAgICAgICAgICAgIE1NOiAnJWQgeGh1cicsXG4gICAgICAgICAgICB5OiAnc2VuYScsXG4gICAgICAgICAgICB5eTogJyVkIHNuaScsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbDogJyVkwronLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbXQ7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQnVybWVzZSBbbXldXG4vLyEgYXV0aG9yIDogU3F1YXIgdGVhbSwgbXlzcXVhci5jb21cbi8vISBhdXRob3IgOiBEYXZpZCBSb3NzZWxsYXQgOiBodHRwczovL2dpdGh1Yi5jb20vZ2hvbGFkclxuLy8hIGF1dGhvciA6IFRpbiBBdW5nIExpbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS90aGFueWF3emlubWluXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgMTogJ+GBgScsXG4gICAgICAgICAgICAyOiAn4YGCJyxcbiAgICAgICAgICAgIDM6ICfhgYMnLFxuICAgICAgICAgICAgNDogJ+GBhCcsXG4gICAgICAgICAgICA1OiAn4YGFJyxcbiAgICAgICAgICAgIDY6ICfhgYYnLFxuICAgICAgICAgICAgNzogJ+GBhycsXG4gICAgICAgICAgICA4OiAn4YGIJyxcbiAgICAgICAgICAgIDk6ICfhgYknLFxuICAgICAgICAgICAgMDogJ+GBgCcsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfhgYEnOiAnMScsXG4gICAgICAgICAgICAn4YGCJzogJzInLFxuICAgICAgICAgICAgJ+GBgyc6ICczJyxcbiAgICAgICAgICAgICfhgYQnOiAnNCcsXG4gICAgICAgICAgICAn4YGFJzogJzUnLFxuICAgICAgICAgICAgJ+GBhic6ICc2JyxcbiAgICAgICAgICAgICfhgYcnOiAnNycsXG4gICAgICAgICAgICAn4YGIJzogJzgnLFxuICAgICAgICAgICAgJ+GBiSc6ICc5JyxcbiAgICAgICAgICAgICfhgYAnOiAnMCcsXG4gICAgICAgIH07XG5cbiAgICB2YXIgbXkgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdteScsIHtcbiAgICAgICAgbW9udGhzOiAn4YCH4YCU4YC64YCU4YCd4YCr4YCb4YCuX+GAluGAseGAluGAseGArOGAuuGAneGAq+GAm+GArl/hgJnhgJDhgLpf4YCn4YCV4YC84YCuX+GAmeGAsV/hgIfhgL3hgJThgLpf4YCH4YCw4YCc4YCt4YCv4YCE4YC6X+GAnuGAvOGAguGAr+GAkOGAul/hgIXhgIDhgLrhgJDhgIThgLrhgJjhgKxf4YCh4YCx4YCs4YCA4YC64YCQ4YCt4YCv4YCY4YCsX+GAlOGAreGAr+GAneGAhOGAuuGAmOGArF/hgJLhgK7hgIfhgIThgLrhgJjhgKwnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn4YCH4YCU4YC6X+GAluGAsV/hgJnhgJDhgLpf4YCV4YC84YCuX+GAmeGAsV/hgIfhgL3hgJThgLpf4YCc4YCt4YCv4YCE4YC6X+GAnuGAvF/hgIXhgIDhgLpf4YCh4YCx4YCs4YCA4YC6X+GAlOGAreGAr1/hgJLhgK4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAn4YCQ4YCU4YCE4YC64YC54YCC4YCU4YC94YCxX+GAkOGAlOGAhOGAuuGAueGAnOGArF/hgKHhgIThgLrhgLnhgILhgKtf4YCX4YCv4YCS4YC54YCT4YCf4YCw4YC4X+GAgOGAvOGArOGAnuGAleGAkOGAseGAuF/hgJ7hgLHhgKzhgIDhgLzhgKxf4YCF4YCU4YCxJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4YCU4YC94YCxX+GAnOGArF/hgILhgKtf4YCf4YCw4YC4X+GAgOGAvOGArF/hgJ7hgLHhgKxf4YCU4YCxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+GAlOGAveGAsV/hgJzhgKxf4YCC4YCrX+GAn+GAsOGAuF/hgIDhgLzhgKxf4YCe4YCx4YCsX+GAlOGAsScuc3BsaXQoJ18nKSxcblxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4YCa4YCU4YCxLl0gTFQgW+GAmeGAvuGArF0nLFxuICAgICAgICAgICAgbmV4dERheTogJ1vhgJnhgJThgIDhgLrhgJbhgLzhgJThgLpdIExUIFvhgJnhgL7hgKxdJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBMVCBb4YCZ4YC+4YCsXScsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+GAmeGAlOGAsS7hgIBdIExUIFvhgJnhgL7hgKxdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+GAleGAvOGAruGAuOGAgeGAsuGAt+GAnuGAseGArF0gZGRkZCBMVCBb4YCZ4YC+4YCsXScsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ+GAnOGArOGAmeGAiuGAuuGAtyAlcyDhgJnhgL7hgKwnLFxuICAgICAgICAgICAgcGFzdDogJ+GAnOGAveGAlOGAuuGAgeGAsuGAt+GAnuGAseGArCAlcyDhgIAnLFxuICAgICAgICAgICAgczogJ+GAheGAgOGAueGAgOGAlOGAui7hgKHhgJThgIrhgLrhgLjhgIThgJrhgLonLFxuICAgICAgICAgICAgc3M6ICclZCDhgIXhgIDhgLnhgIDhgJThgLfhgLonLFxuICAgICAgICAgICAgbTogJ+GAkOGAheGAuuGAmeGAreGAlOGAheGAuicsXG4gICAgICAgICAgICBtbTogJyVkIOGAmeGAreGAlOGAheGAuicsXG4gICAgICAgICAgICBoOiAn4YCQ4YCF4YC64YCU4YCs4YCb4YCuJyxcbiAgICAgICAgICAgIGhoOiAnJWQg4YCU4YCs4YCb4YCuJyxcbiAgICAgICAgICAgIGQ6ICfhgJDhgIXhgLrhgJvhgIDhgLonLFxuICAgICAgICAgICAgZGQ6ICclZCDhgJvhgIDhgLonLFxuICAgICAgICAgICAgTTogJ+GAkOGAheGAuuGAnCcsXG4gICAgICAgICAgICBNTTogJyVkIOGAnCcsXG4gICAgICAgICAgICB5OiAn4YCQ4YCF4YC64YCU4YC+4YCF4YC6JyxcbiAgICAgICAgICAgIHl5OiAnJWQg4YCU4YC+4YCF4YC6JyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+GBgeGBguGBg+GBhOGBheGBhuGBh+GBiOGBieGBgF0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG15O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE5vcndlZ2lhbiBCb2ttw6VsIFtuYl1cbi8vISBhdXRob3JzIDogRXNwZW4gSG92bGFuZHNkYWwgOiBodHRwczovL2dpdGh1Yi5jb20vcmV4eGFyc1xuLy8hICAgICAgICAgICBTaWd1cmQgR2FydG1hbm4gOiBodHRwczovL2dpdGh1Yi5jb20vc2lndXJkZ2Fcbi8vISAgICAgICAgICAgU3RlcGhlbiBSYW10aHVuIDogaHR0cHM6Ly9naXRodWIuY29tL3N0ZXBoZW5yYW10aHVuXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbmIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCduYicsIHtcbiAgICAgICAgbW9udGhzOiAnamFudWFyX2ZlYnJ1YXJfbWFyc19hcHJpbF9tYWlfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZXNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnamFuLl9mZWIuX21hcnNfYXByLl9tYWlfanVuaV9qdWxpX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVzLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdzw7huZGFnX21hbmRhZ190aXJzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sw7hyZGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnc8O4Ll9tYS5fdGkuX29uLl90by5fZnIuX2zDuC4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnc8O4X21hX3RpX29uX3RvX2ZyX2zDuCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgW2tsLl0gSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRC4gTU1NTSBZWVlZIFtrbC5dIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaSBkYWcga2wuXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2kgbW9yZ2VuIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtrbC5dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbaSBnw6VyIGtsLl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbZm9ycmlnZV0gZGRkZCBba2wuXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ29tICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBzaWRlbicsXG4gICAgICAgICAgICBzOiAnbm9lbiBzZWt1bmRlcicsXG4gICAgICAgICAgICBzczogJyVkIHNla3VuZGVyJyxcbiAgICAgICAgICAgIG06ICdldHQgbWludXR0JyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXR0ZXInLFxuICAgICAgICAgICAgaDogJ2VuIHRpbWUnLFxuICAgICAgICAgICAgaGg6ICclZCB0aW1lcicsXG4gICAgICAgICAgICBkOiAnZW4gZGFnJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGFnZXInLFxuICAgICAgICAgICAgdzogJ2VuIHVrZScsXG4gICAgICAgICAgICB3dzogJyVkIHVrZXInLFxuICAgICAgICAgICAgTTogJ2VuIG3DpW5lZCcsXG4gICAgICAgICAgICBNTTogJyVkIG3DpW5lZGVyJyxcbiAgICAgICAgICAgIHk6ICdldHQgw6VyJyxcbiAgICAgICAgICAgIHl5OiAnJWQgw6VyJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBuYjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBOZXBhbGVzZSBbbmVdXG4vLyEgYXV0aG9yIDogc3V2YXNoIDogaHR0cHM6Ly9naXRodWIuY29tL3N1dmFzaFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICfgpacnLFxuICAgICAgICAgICAgMjogJ+ClqCcsXG4gICAgICAgICAgICAzOiAn4KWpJyxcbiAgICAgICAgICAgIDQ6ICfgpaonLFxuICAgICAgICAgICAgNTogJ+ClqycsXG4gICAgICAgICAgICA2OiAn4KWsJyxcbiAgICAgICAgICAgIDc6ICfgpa0nLFxuICAgICAgICAgICAgODogJ+ClricsXG4gICAgICAgICAgICA5OiAn4KWvJyxcbiAgICAgICAgICAgIDA6ICfgpaYnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn4KWnJzogJzEnLFxuICAgICAgICAgICAgJ+ClqCc6ICcyJyxcbiAgICAgICAgICAgICfgpaknOiAnMycsXG4gICAgICAgICAgICAn4KWqJzogJzQnLFxuICAgICAgICAgICAgJ+Clqyc6ICc1JyxcbiAgICAgICAgICAgICfgpawnOiAnNicsXG4gICAgICAgICAgICAn4KWtJzogJzcnLFxuICAgICAgICAgICAgJ+Clric6ICc4JyxcbiAgICAgICAgICAgICfgpa8nOiAnOScsXG4gICAgICAgICAgICAn4KWmJzogJzAnLFxuICAgICAgICB9O1xuXG4gICAgdmFyIG5lID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbmUnLCB7XG4gICAgICAgIG1vbnRoczogJ+CknOCkqOCkteCksOClgF/gpKvgpYfgpKzgpY3gpLDgpYHgpLXgpLDgpYBf4KSu4KS+4KSw4KWN4KSaX+CkheCkquCljeCksOCkv+Cksl/gpK7gpIhf4KSc4KWB4KSoX+CknOClgeCksuCkvuCkiF/gpIXgpJfgpLfgpY3gpJ9f4KS44KWH4KSq4KWN4KSf4KWH4KSu4KWN4KSs4KSwX+CkheCkleCljeCkn+Cli+CkrOCksF/gpKjgpYvgpK3gpYfgpK7gpY3gpKzgpLBf4KSh4KS/4KS44KWH4KSu4KWN4KSs4KSwJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfgpJzgpKguX+Ckq+Clh+CkrOCljeCksOClgS5f4KSu4KS+4KSw4KWN4KSaX+CkheCkquCljeCksOCkvy5f4KSu4KSIX+CknOClgeCkqF/gpJzgpYHgpLLgpL7gpIguX+CkheCkly5f4KS44KWH4KSq4KWN4KSfLl/gpIXgpJXgpY3gpJ/gpYsuX+CkqOCli+CkreClhy5f4KSh4KS/4KS44KWHLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ+CkhuCkh+CkpOCkrOCkvuCksF/gpLjgpYvgpK7gpKzgpL7gpLBf4KSu4KSZ4KWN4KSX4KSy4KSs4KS+4KSwX+CkrOClgeCkp+CkrOCkvuCksF/gpKzgpL/gpLngpL/gpKzgpL7gpLBf4KS24KWB4KSV4KWN4KSw4KSs4KS+4KSwX+CktuCkqOCkv+CkrOCkvuCksCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+CkhuCkh+CkpC5f4KS44KWL4KSuLl/gpK7gpJngpY3gpJfgpLIuX+CkrOClgeCkpy5f4KSs4KS/4KS54KS/Ll/gpLbgpYHgpJXgpY3gpLAuX+CktuCkqOCkvy4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4KSGLl/gpLjgpYsuX+CkruCkgi5f4KSs4KWBLl/gpKzgpL8uX+CktuClgS5f4KS2Licuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdB4KSV4KWLIGg6bW0g4KSs4KSc4KWHJyxcbiAgICAgICAgICAgIExUUzogJ0HgpJXgpYsgaDptbTpzcyDgpKzgpJzgpYcnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSwgQeCkleCliyBoOm1tIOCkrOCknOClhycsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVksIEHgpJXgpYsgaDptbSDgpKzgpJzgpYcnLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4KWn4KWo4KWp4KWq4KWr4KWs4KWt4KWu4KWv4KWmXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4KSw4KS+4KSk4KS/fOCkrOCkv+CkueCkvuCkqHzgpKbgpL/gpIngpIHgpLjgpYt84KS44KS+4KSB4KSdLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4KSw4KS+4KSk4KS/Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KSs4KS/4KS54KS+4KSoJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CkpuCkv+CkieCkgeCkuOCliycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KS44KS+4KSB4KSdJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CksOCkvuCkpOCkvyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSs4KS/4KS54KS+4KSoJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE2KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpKbgpL/gpIngpIHgpLjgpYsnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkuOCkvuCkgeCknSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSw4KS+4KSk4KS/JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4KSG4KScXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+CkreCli+CksuCkv10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdb4KSG4KSJ4KSB4KSm4KWLXSBkZGRkWyxdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4KS54KS/4KSc4KWLXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgpJfgpI/gpJXgpYtdIGRkZGRbLF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclc+CkruCkvicsXG4gICAgICAgICAgICBwYXN0OiAnJXMg4KSF4KSX4KS+4KSh4KS/JyxcbiAgICAgICAgICAgIHM6ICfgpJXgpYfgpLngpYAg4KSV4KWN4KS34KSjJyxcbiAgICAgICAgICAgIHNzOiAnJWQg4KS44KWH4KSV4KWH4KSj4KWN4KShJyxcbiAgICAgICAgICAgIG06ICfgpI/gpJUg4KSu4KS/4KSo4KWH4KSfJyxcbiAgICAgICAgICAgIG1tOiAnJWQg4KSu4KS/4KSo4KWH4KSfJyxcbiAgICAgICAgICAgIGg6ICfgpI/gpJUg4KSY4KSj4KWN4KSf4KS+JyxcbiAgICAgICAgICAgIGhoOiAnJWQg4KSY4KSj4KWN4KSf4KS+JyxcbiAgICAgICAgICAgIGQ6ICfgpI/gpJUg4KSm4KS/4KSoJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4KSm4KS/4KSoJyxcbiAgICAgICAgICAgIE06ICfgpI/gpJUg4KSu4KS54KS/4KSo4KS+JyxcbiAgICAgICAgICAgIE1NOiAnJWQg4KSu4KS54KS/4KSo4KS+JyxcbiAgICAgICAgICAgIHk6ICfgpI/gpJUg4KSs4KSw4KWN4KS3JyxcbiAgICAgICAgICAgIHl5OiAnJWQg4KSs4KSw4KWN4KS3JyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5lO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IER1dGNoIChCZWxnaXVtKSBbbmwtYmVdXG4vLyEgYXV0aG9yIDogSm9yaXMgUsO2bGluZyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qb3Jpc3JvbGluZ1xuLy8hIGF1dGhvciA6IEphY29iIE1pZGRhZyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWRkYWdqXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzU2hvcnRXaXRoRG90cyA9XG4gICAgICAgICAgICAnamFuLl9mZWIuX21ydC5fYXByLl9tZWlfanVuLl9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVjLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnRXaXRob3V0RG90cyA9XG4gICAgICAgICAgICAnamFuX2ZlYl9tcnRfYXByX21laV9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlID0gW1xuICAgICAgICAgICAgL15qYW4vaSxcbiAgICAgICAgICAgIC9eZmViL2ksXG4gICAgICAgICAgICAvXm1hYXJ0fG1ydC4/JC9pLFxuICAgICAgICAgICAgL15hcHIvaSxcbiAgICAgICAgICAgIC9ebWVpJC9pLFxuICAgICAgICAgICAgL15qdW5baS5dPyQvaSxcbiAgICAgICAgICAgIC9eanVsW2kuXT8kL2ksXG4gICAgICAgICAgICAvXmF1Zy9pLFxuICAgICAgICAgICAgL15zZXAvaSxcbiAgICAgICAgICAgIC9eb2t0L2ksXG4gICAgICAgICAgICAvXm5vdi9pLFxuICAgICAgICAgICAgL15kZWMvaSxcbiAgICAgICAgXSxcbiAgICAgICAgbW9udGhzUmVnZXggPVxuICAgICAgICAgICAgL14oamFudWFyaXxmZWJydWFyaXxtYWFydHxhcHJpbHxtZWl8anVbbmxdaXxhdWd1c3R1c3xzZXB0ZW1iZXJ8b2t0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcnxqYW5cXC4/fGZlYlxcLj98bXJ0XFwuP3xhcHJcXC4/fGp1W25sXVxcLj98YXVnXFwuP3xzZXBcXC4/fG9rdFxcLj98bm92XFwuP3xkZWNcXC4/KS9pO1xuXG4gICAgdmFyIG5sQmUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdubC1iZScsIHtcbiAgICAgICAgbW9udGhzOiAnamFudWFyaV9mZWJydWFyaV9tYWFydF9hcHJpbF9tZWlfanVuaV9qdWxpX2F1Z3VzdHVzX3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogZnVuY3Rpb24gKG0sIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aERvdHM7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKC8tTU1NLS8udGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aG91dERvdHNbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aERvdHNbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBtb250aHNSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDpcbiAgICAgICAgICAgIC9eKGphbnVhcml8ZmVicnVhcml8bWFhcnR8YXByaWx8bWVpfGp1W25sXWl8YXVndXN0dXN8c2VwdGVtYmVyfG9rdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1iZXIpL2ksXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6XG4gICAgICAgICAgICAvXihqYW5cXC4/fGZlYlxcLj98bXJ0XFwuP3xhcHJcXC4/fG1laXxqdVtubF1cXC4/fGF1Z1xcLj98c2VwXFwuP3xva3RcXC4/fG5vdlxcLj98ZGVjXFwuPykvaSxcblxuICAgICAgICBtb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ3pvbmRhZ19tYWFuZGFnX2RpbnNkYWdfd29lbnNkYWdfZG9uZGVyZGFnX3ZyaWpkYWdfemF0ZXJkYWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICd6by5fbWEuX2RpLl93by5fZG8uX3ZyLl96YS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnem9fbWFfZGlfd29fZG9fdnJfemEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW3ZhbmRhYWcgb21dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbbW9yZ2VuIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2dpc3RlcmVuIG9tXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1thZmdlbG9wZW5dIGRkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ292ZXIgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGdlbGVkZW4nLFxuICAgICAgICAgICAgczogJ2VlbiBwYWFyIHNlY29uZGVuJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vjb25kZW4nLFxuICAgICAgICAgICAgbTogJ8Opw6luIG1pbnV1dCcsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0ZW4nLFxuICAgICAgICAgICAgaDogJ8Opw6luIHV1cicsXG4gICAgICAgICAgICBoaDogJyVkIHV1cicsXG4gICAgICAgICAgICBkOiAnw6nDqW4gZGFnJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZGFnZW4nLFxuICAgICAgICAgICAgTTogJ8Opw6luIG1hYW5kJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWFhbmRlbicsXG4gICAgICAgICAgICB5OiAnw6nDqW4gamFhcicsXG4gICAgICAgICAgICB5eTogJyVkIGphYXInLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3RlfGRlKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgbnVtYmVyICtcbiAgICAgICAgICAgICAgICAobnVtYmVyID09PSAxIHx8IG51bWJlciA9PT0gOCB8fCBudW1iZXIgPj0gMjAgPyAnc3RlJyA6ICdkZScpXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmxCZTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBEdXRjaCBbbmxdXG4vLyEgYXV0aG9yIDogSm9yaXMgUsO2bGluZyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qb3Jpc3JvbGluZ1xuLy8hIGF1dGhvciA6IEphY29iIE1pZGRhZyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWRkYWdqXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzU2hvcnRXaXRoRG90cyA9XG4gICAgICAgICAgICAnamFuLl9mZWIuX21ydC5fYXByLl9tZWlfanVuLl9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVjLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnRXaXRob3V0RG90cyA9XG4gICAgICAgICAgICAnamFuX2ZlYl9tcnRfYXByX21laV9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlID0gW1xuICAgICAgICAgICAgL15qYW4vaSxcbiAgICAgICAgICAgIC9eZmViL2ksXG4gICAgICAgICAgICAvXm1hYXJ0fG1ydC4/JC9pLFxuICAgICAgICAgICAgL15hcHIvaSxcbiAgICAgICAgICAgIC9ebWVpJC9pLFxuICAgICAgICAgICAgL15qdW5baS5dPyQvaSxcbiAgICAgICAgICAgIC9eanVsW2kuXT8kL2ksXG4gICAgICAgICAgICAvXmF1Zy9pLFxuICAgICAgICAgICAgL15zZXAvaSxcbiAgICAgICAgICAgIC9eb2t0L2ksXG4gICAgICAgICAgICAvXm5vdi9pLFxuICAgICAgICAgICAgL15kZWMvaSxcbiAgICAgICAgXSxcbiAgICAgICAgbW9udGhzUmVnZXggPVxuICAgICAgICAgICAgL14oamFudWFyaXxmZWJydWFyaXxtYWFydHxhcHJpbHxtZWl8anVbbmxdaXxhdWd1c3R1c3xzZXB0ZW1iZXJ8b2t0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcnxqYW5cXC4/fGZlYlxcLj98bXJ0XFwuP3xhcHJcXC4/fGp1W25sXVxcLj98YXVnXFwuP3xzZXBcXC4/fG9rdFxcLj98bm92XFwuP3xkZWNcXC4/KS9pO1xuXG4gICAgdmFyIG5sID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbmwnLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnVhcmlfZmVicnVhcmlfbWFhcnRfYXByaWxfbWVpX2p1bmlfanVsaV9hdWd1c3R1c19zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6IGZ1bmN0aW9uIChtLCBmb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhEb3RzO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvLU1NTS0vLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhvdXREb3RzW20ubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhEb3RzW20ubW9udGgoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgbW9udGhzUmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6XG4gICAgICAgICAgICAvXihqYW51YXJpfGZlYnJ1YXJpfG1hYXJ0fGFwcmlsfG1laXxqdVtubF1pfGF1Z3VzdHVzfHNlcHRlbWJlcnxva3RvYmVyfG5vdmVtYmVyfGRlY2VtYmVyKS9pLFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OlxuICAgICAgICAgICAgL14oamFuXFwuP3xmZWJcXC4/fG1ydFxcLj98YXByXFwuP3xtZWl8anVbbmxdXFwuP3xhdWdcXC4/fHNlcFxcLj98b2t0XFwuP3xub3ZcXC4/fGRlY1xcLj8pL2ksXG5cbiAgICAgICAgbW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBsb25nTW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBzaG9ydE1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcblxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICd6b25kYWdfbWFhbmRhZ19kaW5zZGFnX3dvZW5zZGFnX2RvbmRlcmRhZ192cmlqZGFnX3phdGVyZGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnem8uX21hLl9kaS5fd28uX2RvLl92ci5femEuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ3pvX21hX2RpX3dvX2RvX3ZyX3phJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC1NTS1ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1t2YW5kYWFnIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW21vcmdlbiBvbV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtvbV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tnaXN0ZXJlbiBvbV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbYWZnZWxvcGVuXSBkZGRkIFtvbV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdvdmVyICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBnZWxlZGVuJyxcbiAgICAgICAgICAgIHM6ICdlZW4gcGFhciBzZWNvbmRlbicsXG4gICAgICAgICAgICBzczogJyVkIHNlY29uZGVuJyxcbiAgICAgICAgICAgIG06ICfDqcOpbiBtaW51dXQnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGVuJyxcbiAgICAgICAgICAgIGg6ICfDqcOpbiB1dXInLFxuICAgICAgICAgICAgaGg6ICclZCB1dXInLFxuICAgICAgICAgICAgZDogJ8Opw6luIGRhZycsXG4gICAgICAgICAgICBkZDogJyVkIGRhZ2VuJyxcbiAgICAgICAgICAgIHc6ICfDqcOpbiB3ZWVrJyxcbiAgICAgICAgICAgIHd3OiAnJWQgd2VrZW4nLFxuICAgICAgICAgICAgTTogJ8Opw6luIG1hYW5kJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWFhbmRlbicsXG4gICAgICAgICAgICB5OiAnw6nDqW4gamFhcicsXG4gICAgICAgICAgICB5eTogJyVkIGphYXInLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3RlfGRlKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgbnVtYmVyICtcbiAgICAgICAgICAgICAgICAobnVtYmVyID09PSAxIHx8IG51bWJlciA9PT0gOCB8fCBudW1iZXIgPj0gMjAgPyAnc3RlJyA6ICdkZScpXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmw7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogTnlub3JzayBbbm5dXG4vLyEgYXV0aG9ycyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9tZWNodXdpbmRcbi8vISAgICAgICAgICAgU3RlcGhlbiBSYW10aHVuIDogaHR0cHM6Ly9naXRodWIuY29tL3N0ZXBoZW5yYW10aHVuXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbm4gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdubicsIHtcbiAgICAgICAgbW9udGhzOiAnamFudWFyX2ZlYnJ1YXJfbWFyc19hcHJpbF9tYWlfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZXNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnamFuLl9mZWIuX21hcnNfYXByLl9tYWlfanVuaV9qdWxpX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVzLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdzdW5kYWdfbcOlbmRhZ190eXNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2xhdXJkYWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdzdS5fbcOlLl90eS5fb24uX3RvLl9mci5fbGF1Licuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdzdV9tw6VfdHlfb25fdG9fZnJfbGEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIFtrbC5dIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRC4gTU1NTSBZWVlZIFtrbC5dIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSSBkYWcga2xva2thXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0kgbW9yZ29uIGtsb2trYV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtrbG9ra2FdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSSBnw6VyIGtsb2trYV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbRsO4cmVnw6VhbmRlXSBkZGRkIFtrbG9ra2FdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnb20gJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIHNpZGFuJyxcbiAgICAgICAgICAgIHM6ICdub2tyZSBzZWt1bmQnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWt1bmQnLFxuICAgICAgICAgICAgbTogJ2VpdCBtaW51dHQnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dHQnLFxuICAgICAgICAgICAgaDogJ2VpbiB0aW1lJyxcbiAgICAgICAgICAgIGhoOiAnJWQgdGltYXInLFxuICAgICAgICAgICAgZDogJ2VpbiBkYWcnLFxuICAgICAgICAgICAgZGQ6ICclZCBkYWdhcicsXG4gICAgICAgICAgICB3OiAnZWkgdmVrZScsXG4gICAgICAgICAgICB3dzogJyVkIHZla2VyJyxcbiAgICAgICAgICAgIE06ICdlaW4gbcOlbmFkJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbcOlbmFkZXInLFxuICAgICAgICAgICAgeTogJ2VpdCDDpXInLFxuICAgICAgICAgICAgeXk6ICclZCDDpXInLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5uO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IE9jY2l0YW4sIGxlbmdhZG9jaWFuIGRpYWxlY3RlIFtvYy1sbmNdXG4vLyEgYXV0aG9yIDogUXVlbnRpbiBQQUfDiFMgOiBodHRwczovL2dpdGh1Yi5jb20vUXVlbnR5MzFcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBvY0xuYyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ29jLWxuYycsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICdnZW5pw6hyX2ZlYnJpw6hyX21hcsOnX2FicmlsX21haV9qdW5oX2p1bGhldF9hZ29zdF9zZXRlbWJyZV9vY3TDsmJyZV9ub3ZlbWJyZV9kZWNlbWJyZScuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBmb3JtYXQ6IFwiZGUgZ2VuacOocl9kZSBmZWJyacOocl9kZSBtYXLDp19kJ2FicmlsX2RlIG1haV9kZSBqdW5oX2RlIGp1bGhldF9kJ2Fnb3N0X2RlIHNldGVtYnJlX2Qnb2N0w7JicmVfZGUgbm92ZW1icmVfZGUgZGVjZW1icmVcIi5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpc0Zvcm1hdDogL0Rbb0RdPyhcXHMpK01NTU0vLFxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdnZW4uX2ZlYnIuX21hcsOnX2Fici5fbWFpX2p1bmhfanVsaC5fYWdvLl9zZXQuX29jdC5fbm92Ll9kZWMuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnZGltZW5nZV9kaWx1bnNfZGltYXJzX2RpbcOoY3Jlc19kaWrDsnVzX2RpdmVuZHJlc19kaXNzYWJ0ZScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2RnLl9kbC5fZG0uX2RjLl9kai5fZHYuX2RzLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdkZ19kbF9kbV9kY19kal9kdl9kcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIGxsOiAnRCBNTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gW2RlXSBZWVlZIFthXSBIOm1tJyxcbiAgICAgICAgICAgIGxsbDogJ0QgTU1NIFlZWVksIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFtkZV0gWVlZWSBbYV0gSDptbScsXG4gICAgICAgICAgICBsbGxsOiAnZGRkIEQgTU1NIFlZWVksIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1t1w6hpIGFdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbZGVtYW4gYV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2nDqHIgYV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtwYXNzYXQgYV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6IFwiZCdhcXXDrSAlc1wiLFxuICAgICAgICAgICAgcGFzdDogJ2ZhICVzJyxcbiAgICAgICAgICAgIHM6ICd1bmFzIHNlZ29uZGFzJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2Vnb25kYXMnLFxuICAgICAgICAgICAgbTogJ3VuYSBtaW51dGEnLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGFzJyxcbiAgICAgICAgICAgIGg6ICd1bmEgb3JhJyxcbiAgICAgICAgICAgIGhoOiAnJWQgb3JhcycsXG4gICAgICAgICAgICBkOiAndW4gam9ybicsXG4gICAgICAgICAgICBkZDogJyVkIGpvcm5zJyxcbiAgICAgICAgICAgIE06ICd1biBtZXMnLFxuICAgICAgICAgICAgTU06ICclZCBtZXNlcycsXG4gICAgICAgICAgICB5OiAndW4gYW4nLFxuICAgICAgICAgICAgeXk6ICclZCBhbnMnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0ocnxufHR8w6h8YSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPVxuICAgICAgICAgICAgICAgIG51bWJlciA9PT0gMVxuICAgICAgICAgICAgICAgICAgICA/ICdyJ1xuICAgICAgICAgICAgICAgICAgICA6IG51bWJlciA9PT0gMlxuICAgICAgICAgICAgICAgICAgICA/ICduJ1xuICAgICAgICAgICAgICAgICAgICA6IG51bWJlciA9PT0gM1xuICAgICAgICAgICAgICAgICAgICA/ICdyJ1xuICAgICAgICAgICAgICAgICAgICA6IG51bWJlciA9PT0gNFxuICAgICAgICAgICAgICAgICAgICA/ICd0J1xuICAgICAgICAgICAgICAgICAgICA6ICfDqCc7XG4gICAgICAgICAgICBpZiAocGVyaW9kID09PSAndycgfHwgcGVyaW9kID09PSAnVycpIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAnYSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LFxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG9jTG5jO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFB1bmphYmkgKEluZGlhKSBbcGEtaW5dXG4vLyEgYXV0aG9yIDogSGFycHJlZXQgU2luZ2ggOiBodHRwczovL2dpdGh1Yi5jb20vaGFycHJlZXRraGFsc2FndGJpdFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgIDE6ICfgqacnLFxuICAgICAgICAgICAgMjogJ+CpqCcsXG4gICAgICAgICAgICAzOiAn4KmpJyxcbiAgICAgICAgICAgIDQ6ICfgqaonLFxuICAgICAgICAgICAgNTogJ+CpqycsXG4gICAgICAgICAgICA2OiAn4KmsJyxcbiAgICAgICAgICAgIDc6ICfgqa0nLFxuICAgICAgICAgICAgODogJ+CpricsXG4gICAgICAgICAgICA5OiAn4KmvJyxcbiAgICAgICAgICAgIDA6ICfgqaYnLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICAgICAn4KmnJzogJzEnLFxuICAgICAgICAgICAgJ+CpqCc6ICcyJyxcbiAgICAgICAgICAgICfgqaknOiAnMycsXG4gICAgICAgICAgICAn4KmqJzogJzQnLFxuICAgICAgICAgICAgJ+Cpqyc6ICc1JyxcbiAgICAgICAgICAgICfgqawnOiAnNicsXG4gICAgICAgICAgICAn4KmtJzogJzcnLFxuICAgICAgICAgICAgJ+Cpric6ICc4JyxcbiAgICAgICAgICAgICfgqa8nOiAnOScsXG4gICAgICAgICAgICAn4KmmJzogJzAnLFxuICAgICAgICB9O1xuXG4gICAgdmFyIHBhSW4gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdwYS1pbicsIHtcbiAgICAgICAgLy8gVGhlcmUgYXJlIG1vbnRocyBuYW1lIGFzIHBlciBOYW5ha3NoYWhpIENhbGVuZGFyIGJ1dCB0aGV5IGFyZSBub3QgdXNlZCBhcyByaWdpZGx5IGluIG1vZGVybiBQdW5qYWJpLlxuICAgICAgICBtb250aHM6ICfgqJzgqKjgqLXgqLDgqYBf4Kir4Ki84Kiw4Ki14Kiw4KmAX+CoruCovuCosOComl/gqIXgqKrgqY3gqLDgqYjgqLJf4Kiu4KiIX+ConOCpguCoqF/gqJzgqYHgqLLgqL7gqIhf4KiF4KiX4Ki44KikX+CouOCopOCpsOCorOCosF/gqIXgqJXgqKTgqYLgqKzgqLBf4Kio4Ki14Kmw4Kis4KiwX+CopuCouOCpsOCorOCosCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn4Kic4Kio4Ki14Kiw4KmAX+Coq+CovOCosOCoteCosOCpgF/gqK7gqL7gqLDgqJpf4KiF4Kiq4KmN4Kiw4KmI4KiyX+CoruCoiF/gqJzgqYLgqKhf4Kic4KmB4Kiy4Ki+4KiIX+CoheCol+CouOCopF/gqLjgqKTgqbDgqKzgqLBf4KiF4KiV4Kik4KmC4Kis4KiwX+CoqOCoteCpsOCorOCosF/gqKbgqLjgqbDgqKzgqLAnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfgqJDgqKTgqLXgqL7gqLBf4Ki44KmL4Kiu4Ki14Ki+4KiwX+CoruCpsOCol+CosuCoteCovuCosF/gqKzgqYHgqKfgqLXgqL7gqLBf4Ki14KmA4Kiw4Ki14Ki+4KiwX+CouOCovOCpgeCpseColeCosOCoteCovuCosF/gqLjgqLzgqKjgqYDgqJrgqLDgqLXgqL7gqLAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgqJDgqKRf4Ki44KmL4KiuX+CoruCpsOCol+Cosl/gqKzgqYHgqKdf4Ki14KmA4KiwX+CouOCovOCpgeColeCosF/gqLjgqLzgqKjgqYAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4KiQ4KikX+CouOCpi+Corl/gqK7gqbDgqJfgqLJf4Kis4KmB4KinX+CoteCpgOCosF/gqLjgqLzgqYHgqJXgqLBf4Ki44Ki84Kio4KmAJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0g4Ki14Kic4KmHJyxcbiAgICAgICAgICAgIExUUzogJ0EgaDptbTpzcyDgqLXgqJzgqYcnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSwgQSBoOm1tIOCoteConOCphycsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSDgqLXgqJzgqYcnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgqIXgqJxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4KiV4KiyXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vgqIXgqJfgqLLgqL5dIGRkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4KiV4KiyXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgqKrgqL/gqJvgqLLgqYddIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg4Ki14Ki/4Kmx4KiaJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDgqKrgqL/gqJvgqLLgqYcnLFxuICAgICAgICAgICAgczogJ+ColeCpgeConSDgqLjgqJXgqL/gqbDgqJ8nLFxuICAgICAgICAgICAgc3M6ICclZCDgqLjgqJXgqL/gqbDgqJ8nLFxuICAgICAgICAgICAgbTogJ+Coh+ColSDgqK7gqL/gqbDgqJ8nLFxuICAgICAgICAgICAgbW06ICclZCDgqK7gqL/gqbDgqJ8nLFxuICAgICAgICAgICAgaDogJ+Coh+CpseColSDgqJjgqbDgqJ/gqL4nLFxuICAgICAgICAgICAgaGg6ICclZCDgqJjgqbDgqJ/gqYcnLFxuICAgICAgICAgICAgZDogJ+Coh+CpseColSDgqKbgqL/gqKgnLFxuICAgICAgICAgICAgZGQ6ICclZCDgqKbgqL/gqKgnLFxuICAgICAgICAgICAgTTogJ+Coh+CpseColSDgqK7gqLngqYDgqKjgqL4nLFxuICAgICAgICAgICAgTU06ICclZCDgqK7gqLngqYDgqKjgqYcnLFxuICAgICAgICAgICAgeTogJ+Coh+CpseColSDgqLjgqL7gqLInLFxuICAgICAgICAgICAgeXk6ICclZCDgqLjgqL7gqLInLFxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4Kmn4Kmo4Kmp4Kmq4Kmr4Kms4Kmt4Kmu4Kmv4KmmXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICAvLyBQdW5qYWJpIG5vdGF0aW9uIGZvciBtZXJpZGllbXMgYXJlIHF1aXRlIGZ1enp5IGluIHByYWN0aWNlLiBXaGlsZSB0aGVyZSBleGlzdHNcbiAgICAgICAgLy8gYSByaWdpZCBub3Rpb24gb2YgYSAnUGFoYXInIGl0IGlzIG5vdCB1c2VkIGFzIHJpZ2lkbHkgaW4gbW9kZXJuIFB1bmphYmkuXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gqLDgqL7gqKR84Ki44Ki14KmH4KiwfOCopuCpgeCoquCoueCov+CosHzgqLjgqLzgqL7gqK4vLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgqLDgqL7gqKQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgqLjgqLXgqYfgqLAnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Kim4KmB4Kiq4Ki54Ki/4KiwJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgqLjgqLzgqL7gqK4nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kiw4Ki+4KikJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqLjgqLXgqYfgqLAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CopuCpgeCoquCoueCov+CosCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Ki44Ki84Ki+4KiuJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqLDgqL7gqKQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcGFJbjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBQb2xpc2ggW3BsXVxuLy8hIGF1dGhvciA6IFJhZmFsIEhpcnN6IDogaHR0cHM6Ly9naXRodWIuY29tL2V2b0xcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtb250aHNOb21pbmF0aXZlID1cbiAgICAgICAgICAgICdzdHljemXFhF9sdXR5X21hcnplY19rd2llY2llxYRfbWFqX2N6ZXJ3aWVjX2xpcGllY19zaWVycGllxYRfd3J6ZXNpZcWEX3Bhxbpkemllcm5pa19saXN0b3BhZF9ncnVkemllxYQnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU3ViamVjdGl2ZSA9XG4gICAgICAgICAgICAnc3R5Y3puaWFfbHV0ZWdvX21hcmNhX2t3aWV0bmlhX21hamFfY3plcndjYV9saXBjYV9zaWVycG5pYV93cnplxZtuaWFfcGHFumR6aWVybmlrYV9saXN0b3BhZGFfZ3J1ZG5pYScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZSA9IFtcbiAgICAgICAgICAgIC9ec3R5L2ksXG4gICAgICAgICAgICAvXmx1dC9pLFxuICAgICAgICAgICAgL15tYXIvaSxcbiAgICAgICAgICAgIC9ea3dpL2ksXG4gICAgICAgICAgICAvXm1hai9pLFxuICAgICAgICAgICAgL15jemUvaSxcbiAgICAgICAgICAgIC9ebGlwL2ksXG4gICAgICAgICAgICAvXnNpZS9pLFxuICAgICAgICAgICAgL153cnovaSxcbiAgICAgICAgICAgIC9ecGHFui9pLFxuICAgICAgICAgICAgL15saXMvaSxcbiAgICAgICAgICAgIC9eZ3J1L2ksXG4gICAgICAgIF07XG4gICAgZnVuY3Rpb24gcGx1cmFsKG4pIHtcbiAgICAgICAgcmV0dXJuIG4gJSAxMCA8IDUgJiYgbiAlIDEwID4gMSAmJiB+fihuIC8gMTApICUgMTAgIT09IDE7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVtYmVyICsgJyAnO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnc2VrdW5keScgOiAnc2VrdW5kJyk7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdtaW51dGEnIDogJ21pbnV0xJknO1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnbWludXR5JyA6ICdtaW51dCcpO1xuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnZ29kemluYScgOiAnZ29kemluxJknO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnZ29kemlueScgOiAnZ29kemluJyk7XG4gICAgICAgICAgICBjYXNlICd3dyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICd0eWdvZG5pZScgOiAndHlnb2RuaScpO1xuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnbWllc2nEhWNlJyA6ICdtaWVzacSZY3knKTtcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ2xhdGEnIDogJ2xhdCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHBsID0gbW9tZW50LmRlZmluZUxvY2FsZSgncGwnLCB7XG4gICAgICAgIG1vbnRoczogZnVuY3Rpb24gKG1vbWVudFRvRm9ybWF0LCBmb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghbW9tZW50VG9Gb3JtYXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzTm9taW5hdGl2ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoL0QgTU1NTS8udGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1N1YmplY3RpdmVbbW9tZW50VG9Gb3JtYXQubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNOb21pbmF0aXZlW21vbWVudFRvRm9ybWF0Lm1vbnRoKCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydDogJ3N0eV9sdXRfbWFyX2t3aV9tYWpfY3plX2xpcF9zaWVfd3J6X3BhxbpfbGlzX2dydScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBsb25nTW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBzaG9ydE1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgd2Vla2RheXM6XG4gICAgICAgICAgICAnbmllZHppZWxhX3BvbmllZHppYcWCZWtfd3RvcmVrX8Wbcm9kYV9jendhcnRla19wacSFdGVrX3NvYm90YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ25kel9wb25fd3RfxZtyX2N6d19wdF9zb2InLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnTmRfUG5fV3RfxZpyX0N6X1B0X1NvJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0R6acWbIG9dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbSnV0cm8gb10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbVyBuaWVkemllbMSZIG9dIExUJztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXZSB3dG9yZWsgb10gTFQnO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1cgxZtyb2TEmSBvXSBMVCc7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbVyBzb2JvdMSZIG9dIExUJztcblxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbV10gZGRkZCBbb10gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiAnW1djem9yYWogb10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbVyB6ZXN6xYLEhSBuaWVkemllbMSZIG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbVyB6ZXN6xYLEhSDFm3JvZMSZIG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbVyB6ZXN6xYLEhSBzb2JvdMSZIG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1cgemVzesWCeV0gZGRkZCBbb10gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyB0ZW11JyxcbiAgICAgICAgICAgIHM6ICdraWxrYSBzZWt1bmQnLFxuICAgICAgICAgICAgc3M6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoaDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZDogJzEgZHppZcWEJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZG5pJyxcbiAgICAgICAgICAgIHc6ICd0eWR6aWXFhCcsXG4gICAgICAgICAgICB3dzogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTTogJ21pZXNpxIVjJyxcbiAgICAgICAgICAgIE1NOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5OiAncm9rJyxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcGw7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogUG9ydHVndWVzZSAoQnJhemlsKSBbcHQtYnJdXG4vLyEgYXV0aG9yIDogQ2FpbyBSaWJlaXJvIFBlcmVpcmEgOiBodHRwczovL2dpdGh1Yi5jb20vY2Fpby1yaWJlaXJvLXBlcmVpcmFcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBwdEJyID0gbW9tZW50LmRlZmluZUxvY2FsZSgncHQtYnInLCB7XG4gICAgICAgIG1vbnRoczogJ2phbmVpcm9fZmV2ZXJlaXJvX21hcsOnb19hYnJpbF9tYWlvX2p1bmhvX2p1bGhvX2Fnb3N0b19zZXRlbWJyb19vdXR1YnJvX25vdmVtYnJvX2RlemVtYnJvJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ2phbl9mZXZfbWFyX2Ficl9tYWlfanVuX2p1bF9hZ29fc2V0X291dF9ub3ZfZGV6Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdkb21pbmdvX3NlZ3VuZGEtZmVpcmFfdGVyw6dhLWZlaXJhX3F1YXJ0YS1mZWlyYV9xdWludGEtZmVpcmFfc2V4dGEtZmVpcmFfc8OhYmFkbycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnZG9tX3NlZ190ZXJfcXVhX3F1aV9zZXhfc8OhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdkb18ywqpfM8KqXzTCql81wqpfNsKqX3PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVkgW8Ogc10gSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBbw6BzXSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hvamUgw6BzXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0FtYW5ow6Mgw6BzXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW8Ogc10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tPbnRlbSDDoHNdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF5KCkgPT09IDAgfHwgdGhpcy5kYXkoKSA9PT0gNlxuICAgICAgICAgICAgICAgICAgICA/ICdbw5psdGltb10gZGRkZCBbw6BzXSBMVCcgLy8gU2F0dXJkYXkgKyBTdW5kYXlcbiAgICAgICAgICAgICAgICAgICAgOiAnW8OabHRpbWFdIGRkZGQgW8Ogc10gTFQnOyAvLyBNb25kYXkgLSBGcmlkYXlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2VtICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdow6EgJXMnLFxuICAgICAgICAgICAgczogJ3BvdWNvcyBzZWd1bmRvcycsXG4gICAgICAgICAgICBzczogJyVkIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIG06ICd1bSBtaW51dG8nLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dG9zJyxcbiAgICAgICAgICAgIGg6ICd1bWEgaG9yYScsXG4gICAgICAgICAgICBoaDogJyVkIGhvcmFzJyxcbiAgICAgICAgICAgIGQ6ICd1bSBkaWEnLFxuICAgICAgICAgICAgZGQ6ICclZCBkaWFzJyxcbiAgICAgICAgICAgIE06ICd1bSBtw6pzJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWVzZXMnLFxuICAgICAgICAgICAgeTogJ3VtIGFubycsXG4gICAgICAgICAgICB5eTogJyVkIGFub3MnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWw6ICclZMK6JyxcbiAgICAgICAgaW52YWxpZERhdGU6ICdEYXRhIGludsOhbGlkYScsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHRCcjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBQb3J0dWd1ZXNlIFtwdF1cbi8vISBhdXRob3IgOiBKZWZmZXJzb24gOiBodHRwczovL2dpdGh1Yi5jb20vamFsZXg3OVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHB0ID0gbW9tZW50LmRlZmluZUxvY2FsZSgncHQnLCB7XG4gICAgICAgIG1vbnRoczogJ2phbmVpcm9fZmV2ZXJlaXJvX21hcsOnb19hYnJpbF9tYWlvX2p1bmhvX2p1bGhvX2Fnb3N0b19zZXRlbWJyb19vdXR1YnJvX25vdmVtYnJvX2RlemVtYnJvJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ2phbl9mZXZfbWFyX2Ficl9tYWlfanVuX2p1bF9hZ29fc2V0X291dF9ub3ZfZGV6Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdEb21pbmdvX1NlZ3VuZGEtZmVpcmFfVGVyw6dhLWZlaXJhX1F1YXJ0YS1mZWlyYV9RdWludGEtZmVpcmFfU2V4dGEtZmVpcmFfU8OhYmFkbycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnRG9tX1NlZ19UZXJfUXVhX1F1aV9TZXhfU8OhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdEb18ywqpfM8KqXzTCql81wqpfNsKqX1PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hvamUgw6BzXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0FtYW5ow6Mgw6BzXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW8Ogc10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tPbnRlbSDDoHNdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF5KCkgPT09IDAgfHwgdGhpcy5kYXkoKSA9PT0gNlxuICAgICAgICAgICAgICAgICAgICA/ICdbw5psdGltb10gZGRkZCBbw6BzXSBMVCcgLy8gU2F0dXJkYXkgKyBTdW5kYXlcbiAgICAgICAgICAgICAgICAgICAgOiAnW8OabHRpbWFdIGRkZGQgW8Ogc10gTFQnOyAvLyBNb25kYXkgLSBGcmlkYXlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2VtICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdow6EgJXMnLFxuICAgICAgICAgICAgczogJ3NlZ3VuZG9zJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VndW5kb3MnLFxuICAgICAgICAgICAgbTogJ3VtIG1pbnV0bycsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnV0b3MnLFxuICAgICAgICAgICAgaDogJ3VtYSBob3JhJyxcbiAgICAgICAgICAgIGhoOiAnJWQgaG9yYXMnLFxuICAgICAgICAgICAgZDogJ3VtIGRpYScsXG4gICAgICAgICAgICBkZDogJyVkIGRpYXMnLFxuICAgICAgICAgICAgdzogJ3VtYSBzZW1hbmEnLFxuICAgICAgICAgICAgd3c6ICclZCBzZW1hbmFzJyxcbiAgICAgICAgICAgIE06ICd1bSBtw6pzJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWVzZXMnLFxuICAgICAgICAgICAgeTogJ3VtIGFubycsXG4gICAgICAgICAgICB5eTogJyVkIGFub3MnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWw6ICclZMK6JyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHB0O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFJvbWFuaWFuIFtyb11cbi8vISBhdXRob3IgOiBWbGFkIEd1cmRpZ2EgOiBodHRwczovL2dpdGh1Yi5jb20vZ3VyZGlnYVxuLy8hIGF1dGhvciA6IFZhbGVudGluIEFnYWNoaSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hdmFseVxuLy8hIGF1dGhvciA6IEVtYW51ZWwgQ2Vwb2kgOiBodHRwczovL2dpdGh1Yi5jb20vY2VwZW1cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZVdpdGhQbHVyYWwobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgICAgICBzczogJ3NlY3VuZGUnLFxuICAgICAgICAgICAgICAgIG1tOiAnbWludXRlJyxcbiAgICAgICAgICAgICAgICBoaDogJ29yZScsXG4gICAgICAgICAgICAgICAgZGQ6ICd6aWxlJyxcbiAgICAgICAgICAgICAgICB3dzogJ3PEg3B0xINtw6JuaScsXG4gICAgICAgICAgICAgICAgTU06ICdsdW5pJyxcbiAgICAgICAgICAgICAgICB5eTogJ2FuaScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VwYXJhdG9yID0gJyAnO1xuICAgICAgICBpZiAobnVtYmVyICUgMTAwID49IDIwIHx8IChudW1iZXIgPj0gMTAwICYmIG51bWJlciAlIDEwMCA9PT0gMCkpIHtcbiAgICAgICAgICAgIHNlcGFyYXRvciA9ICcgZGUgJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVtYmVyICsgc2VwYXJhdG9yICsgZm9ybWF0W2tleV07XG4gICAgfVxuXG4gICAgdmFyIHJvID0gbW9tZW50LmRlZmluZUxvY2FsZSgncm8nLCB7XG4gICAgICAgIG1vbnRoczogJ2lhbnVhcmllX2ZlYnJ1YXJpZV9tYXJ0aWVfYXByaWxpZV9tYWlfaXVuaWVfaXVsaWVfYXVndXN0X3NlcHRlbWJyaWVfb2N0b21icmllX25vaWVtYnJpZV9kZWNlbWJyaWUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ2lhbi5fZmViLl9tYXJ0Ll9hcHIuX21haV9pdW4uX2l1bC5fYXVnLl9zZXB0Ll9vY3QuX25vdi5fZGVjLicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ2R1bWluaWPEg19sdW5pX21hcsibaV9taWVyY3VyaV9qb2lfdmluZXJpX3PDom1ixIN0xIMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdEdW1fTHVuX01hcl9NaWVfSm9pX1Zpbl9Tw6JtJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ0R1X0x1X01hX01pX0pvX1ZpX1PDoicuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2F6aSBsYV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1ttw6JpbmUgbGFdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbbGFdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbaWVyaSBsYV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbZm9zdGFdIGRkZGQgW2xhXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ3Blc3RlICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDDrm4gdXJtxIMnLFxuICAgICAgICAgICAgczogJ2PDonRldmEgc2VjdW5kZScsXG4gICAgICAgICAgICBzczogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIG06ICd1biBtaW51dCcsXG4gICAgICAgICAgICBtbTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGg6ICdvIG9yxIMnLFxuICAgICAgICAgICAgaGg6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBkOiAnbyB6aScsXG4gICAgICAgICAgICBkZDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIHc6ICdvIHPEg3B0xINtw6JuxIMnLFxuICAgICAgICAgICAgd3c6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBNOiAnbyBsdW7EgycsXG4gICAgICAgICAgICBNTTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIHk6ICd1biBhbicsXG4gICAgICAgICAgICB5eTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJvO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFJ1c3NpYW4gW3J1XVxuLy8hIGF1dGhvciA6IFZpa3Rvcm1pbmF0b3IgOiBodHRwczovL2dpdGh1Yi5jb20vVmlrdG9ybWluYXRvclxuLy8hIGF1dGhvciA6IE1lbmVsaW9uIEVsZW5zw7psZSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9PaXJlXG4vLyEgYXV0aG9yIDog0JrQvtGA0LXQvdCx0LXRgNCzINCc0LDRgNC6IDogaHR0cHM6Ly9naXRodWIuY29tL3NvY2tldHBhaXJcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIGZ1bmN0aW9uIHBsdXJhbCh3b3JkLCBudW0pIHtcbiAgICAgICAgdmFyIGZvcm1zID0gd29yZC5zcGxpdCgnXycpO1xuICAgICAgICByZXR1cm4gbnVtICUgMTAgPT09IDEgJiYgbnVtICUgMTAwICE9PSAxMVxuICAgICAgICAgICAgPyBmb3Jtc1swXVxuICAgICAgICAgICAgOiBudW0gJSAxMCA+PSAyICYmIG51bSAlIDEwIDw9IDQgJiYgKG51bSAlIDEwMCA8IDEwIHx8IG51bSAlIDEwMCA+PSAyMClcbiAgICAgICAgICAgID8gZm9ybXNbMV1cbiAgICAgICAgICAgIDogZm9ybXNbMl07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZVdpdGhQbHVyYWwobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgIHNzOiB3aXRob3V0U3VmZml4ID8gJ9GB0LXQutGD0L3QtNCwX9GB0LXQutGD0L3QtNGLX9GB0LXQutGD0L3QtCcgOiAn0YHQtdC60YPQvdC00YNf0YHQtdC60YPQvdC00Ytf0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgIG1tOiB3aXRob3V0U3VmZml4ID8gJ9C80LjQvdGD0YLQsF/QvNC40L3Rg9GC0Ytf0LzQuNC90YPRgicgOiAn0LzQuNC90YPRgtGDX9C80LjQvdGD0YLRi1/QvNC40L3Rg9GCJyxcbiAgICAgICAgICAgIGhoOiAn0YfQsNGBX9GH0LDRgdCwX9GH0LDRgdC+0LInLFxuICAgICAgICAgICAgZGQ6ICfQtNC10L3RjF/QtNC90Y9f0LTQvdC10LknLFxuICAgICAgICAgICAgd3c6ICfQvdC10LTQtdC70Y9f0L3QtdC00LXQu9C4X9C90LXQtNC10LvRjCcsXG4gICAgICAgICAgICBNTTogJ9C80LXRgdGP0YZf0LzQtdGB0Y/RhtCwX9C80LXRgdGP0YbQtdCyJyxcbiAgICAgICAgICAgIHl5OiAn0LPQvtC0X9Cz0L7QtNCwX9C70LXRgicsXG4gICAgICAgIH07XG4gICAgICAgIGlmIChrZXkgPT09ICdtJykge1xuICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAn0LzQuNC90YPRgtCwJyA6ICfQvNC40L3Rg9GC0YMnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIHBsdXJhbChmb3JtYXRba2V5XSwgK251bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIG1vbnRoc1BhcnNlID0gW1xuICAgICAgICAvXtGP0L3Qsi9pLFxuICAgICAgICAvXtGE0LXQsi9pLFxuICAgICAgICAvXtC80LDRgC9pLFxuICAgICAgICAvXtCw0L/RgC9pLFxuICAgICAgICAvXtC80LBb0LnRj10vaSxcbiAgICAgICAgL17QuNGO0L0vaSxcbiAgICAgICAgL17QuNGO0LsvaSxcbiAgICAgICAgL17QsNCy0LMvaSxcbiAgICAgICAgL17RgdC10L0vaSxcbiAgICAgICAgL17QvtC60YIvaSxcbiAgICAgICAgL17QvdC+0Y8vaSxcbiAgICAgICAgL17QtNC10LovaSxcbiAgICBdO1xuXG4gICAgLy8gaHR0cDovL25ldy5ncmFtb3RhLnJ1L3NwcmF2a2EvcnVsZXMvMTM5LXByb3AgOiDCpyAxMDNcbiAgICAvLyDQodC+0LrRgNCw0YnQtdC90LjRjyDQvNC10YHRj9GG0LXQsjogaHR0cDovL25ldy5ncmFtb3RhLnJ1L3NwcmF2a2EvYnVyby9zZWFyY2gtYW5zd2VyP3M9MjQyNjM3XG4gICAgLy8gQ0xEUiBkYXRhOiAgICAgICAgICBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NsZHIvY2hhcnRzLzI4L3N1bW1hcnkvcnUuaHRtbCMxNzUzXG4gICAgdmFyIHJ1ID0gbW9tZW50LmRlZmluZUxvY2FsZSgncnUnLCB7XG4gICAgICAgIG1vbnRoczoge1xuICAgICAgICAgICAgZm9ybWF0OiAn0Y/QvdCy0LDRgNGPX9GE0LXQstGA0LDQu9GPX9C80LDRgNGC0LBf0LDQv9GA0LXQu9GPX9C80LDRj1/QuNGO0L3Rj1/QuNGO0LvRj1/QsNCy0LPRg9GB0YLQsF/RgdC10L3RgtGP0LHRgNGPX9C+0LrRgtGP0LHRgNGPX9C90L7Rj9Cx0YDRj1/QtNC10LrQsNCx0YDRjycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhbmRhbG9uZTpcbiAgICAgICAgICAgICAgICAn0Y/QvdCy0LDRgNGMX9GE0LXQstGA0LDQu9GMX9C80LDRgNGCX9Cw0L/RgNC10LvRjF/QvNCw0Llf0LjRjtC90Yxf0LjRjtC70Yxf0LDQstCz0YPRgdGCX9GB0LXQvdGC0Y/QsdGA0Yxf0L7QutGC0Y/QsdGA0Yxf0L3QvtGP0LHRgNGMX9C00LXQutCw0LHRgNGMJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQ6IHtcbiAgICAgICAgICAgIC8vINC/0L4gQ0xEUiDQuNC80LXQvdC90L4gXCLQuNGO0LsuXCIg0LggXCLQuNGO0L0uXCIsINC90L4g0LrQsNC60L7QuSDRgdC80YvRgdC7INC80LXQvdGP0YLRjCDQsdGD0LrQstGDINC90LAg0YLQvtGH0LrRgz9cbiAgICAgICAgICAgIGZvcm1hdDogJ9GP0L3Qsi5f0YTQtdCy0YAuX9C80LDRgC5f0LDQv9GALl/QvNCw0Y9f0LjRjtC90Y9f0LjRjtC70Y9f0LDQstCzLl/RgdC10L3Rgi5f0L7QutGCLl/QvdC+0Y/QsS5f0LTQtdC6Licuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhbmRhbG9uZTpcbiAgICAgICAgICAgICAgICAn0Y/QvdCyLl/RhNC10LLRgC5f0LzQsNGA0YJf0LDQv9GALl/QvNCw0Llf0LjRjtC90Yxf0LjRjtC70Yxf0LDQstCzLl/RgdC10L3Rgi5f0L7QutGCLl/QvdC+0Y/QsS5f0LTQtdC6Licuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWtkYXlzOiB7XG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICfQstC+0YHQutGA0LXRgdC10L3RjNC1X9C/0L7QvdC10LTQtdC70YzQvdC40Lpf0LLRgtC+0YDQvdC40Lpf0YHRgNC10LTQsF/Rh9C10YLQstC10YDQs1/Qv9GP0YLQvdC40YbQsF/RgdGD0LHQsdC+0YLQsCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBmb3JtYXQ6ICfQstC+0YHQutGA0LXRgdC10L3RjNC1X9C/0L7QvdC10LTQtdC70YzQvdC40Lpf0LLRgtC+0YDQvdC40Lpf0YHRgNC10LTRg1/Rh9C10YLQstC10YDQs1/Qv9GP0YLQvdC40YbRg1/RgdGD0LHQsdC+0YLRgycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaXNGb3JtYXQ6IC9cXFsgP1vQktCyXSA/KD860L/RgNC+0YjQu9GD0Y580YHQu9C10LTRg9GO0YnRg9GOfNGN0YLRgyk/ID9dID9kZGRkLyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9Cy0YFf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn0LLRgV/Qv9C9X9Cy0YJf0YHRgF/Rh9GCX9C/0YJf0YHQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBsb25nTW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICBzaG9ydE1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcblxuICAgICAgICAvLyDQv9C+0LvQvdGL0LUg0L3QsNC30LLQsNC90LjRjyDRgSDQv9Cw0LTQtdC20LDQvNC4LCDQv9C+INGC0YDQuCDQsdGD0LrQstGLLCDQtNC70Y8g0L3QtdC60L7RgtC+0YDRi9GFLCDQv9C+IDQg0LHRg9C60LLRiywg0YHQvtC60YDQsNGJ0LXQvdC40Y8g0YEg0YLQvtGH0LrQvtC5INC4INCx0LXQtyDRgtC+0YfQutC4XG4gICAgICAgIG1vbnRoc1JlZ2V4OlxuICAgICAgICAgICAgL14o0Y/QvdCy0LDRgFvRjNGPXXzRj9C90LJcXC4/fNGE0LXQstGA0LDQu1vRjNGPXXzRhNC10LLRgD9cXC4/fNC80LDRgNGC0LA/fNC80LDRgFxcLj980LDQv9GA0LXQu1vRjNGPXXzQsNC/0YBcXC4/fNC80LBb0LnRj1180LjRjtC9W9GM0Y9dfNC40Y7QvVxcLj980LjRjtC7W9GM0Y9dfNC40Y7Qu1xcLj980LDQstCz0YPRgdGC0LA/fNCw0LLQs1xcLj980YHQtdC90YLRj9Cx0YBb0YzRj1180YHQtdC90YI/XFwuP3zQvtC60YLRj9Cx0YBb0YzRj1180L7QutGCXFwuP3zQvdC+0Y/QsdGAW9GM0Y9dfNC90L7Rj9CxP1xcLj980LTQtdC60LDQsdGAW9GM0Y9dfNC00LXQulxcLj8pL2ksXG5cbiAgICAgICAgLy8g0LrQvtC/0LjRjyDQv9GA0LXQtNGL0LTRg9GJ0LXQs9C+XG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6XG4gICAgICAgICAgICAvXijRj9C90LLQsNGAW9GM0Y9dfNGP0L3QslxcLj980YTQtdCy0YDQsNC7W9GM0Y9dfNGE0LXQstGAP1xcLj980LzQsNGA0YLQsD980LzQsNGAXFwuP3zQsNC/0YDQtdC7W9GM0Y9dfNCw0L/RgFxcLj980LzQsFvQudGPXXzQuNGO0L1b0YzRj1180LjRjtC9XFwuP3zQuNGO0Ltb0YzRj1180LjRjtC7XFwuP3zQsNCy0LPRg9GB0YLQsD980LDQstCzXFwuP3zRgdC10L3RgtGP0LHRgFvRjNGPXXzRgdC10L3Rgj9cXC4/fNC+0LrRgtGP0LHRgFvRjNGPXXzQvtC60YJcXC4/fNC90L7Rj9Cx0YBb0YzRj1180L3QvtGP0LE/XFwuP3zQtNC10LrQsNCx0YBb0YzRj1180LTQtdC6XFwuPykvaSxcblxuICAgICAgICAvLyDQv9C+0LvQvdGL0LUg0L3QsNC30LLQsNC90LjRjyDRgSDQv9Cw0LTQtdC20LDQvNC4XG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4OlxuICAgICAgICAgICAgL14o0Y/QvdCy0LDRgFvRj9GMXXzRhNC10LLRgNCw0Ltb0Y/RjF180LzQsNGA0YLQsD980LDQv9GA0LXQu1vRj9GMXXzQvNCwW9GP0LldfNC40Y7QvVvRj9GMXXzQuNGO0Ltb0Y/RjF180LDQstCz0YPRgdGC0LA/fNGB0LXQvdGC0Y/QsdGAW9GP0YxdfNC+0LrRgtGP0LHRgFvRj9GMXXzQvdC+0Y/QsdGAW9GP0YxdfNC00LXQutCw0LHRgFvRj9GMXSkvaSxcblxuICAgICAgICAvLyDQktGL0YDQsNC20LXQvdC40LUsINC60L7RgtC+0YDQvtC1INGB0L7QvtGC0LLQtdGC0YHRgtCy0YPQtdGCINGC0L7Qu9GM0LrQviDRgdC+0LrRgNCw0YnRkdC90L3Ri9C8INGE0L7RgNC80LDQvFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OlxuICAgICAgICAgICAgL14o0Y/QvdCyXFwufNGE0LXQstGAP1xcLnzQvNCw0YBb0YIuXXzQsNC/0YBcXC580LzQsFvRj9C5XXzQuNGO0L1b0YzRjy5dfNC40Y7Qu1vRjNGPLl180LDQstCzXFwufNGB0LXQvdGCP1xcLnzQvtC60YJcXC580L3QvtGP0LE/XFwufNC00LXQulxcLikvaSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVkg0LMuJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZINCzLiwgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkg0LMuLCBIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb0KHQtdCz0L7QtNC90Y8sINCyXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9CX0LDQstGC0YDQsCwg0LJdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb0JLRh9C10YDQsCwg0LJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAobm93KSB7XG4gICAgICAgICAgICAgICAgaWYgKG5vdy53ZWVrKCkgIT09IHRoaXMud2VlaygpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSINGB0LvQtdC00YPRjtGJ0LXQtV0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JIg0YHQu9C10LTRg9GO0YnQuNC5XSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkiDRgdC70LXQtNGD0Y7RidGD0Y5dIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF5KCkgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CS0L5dIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JJdIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAobm93KSB7XG4gICAgICAgICAgICAgICAgaWYgKG5vdy53ZWVrKCkgIT09IHRoaXMud2VlaygpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSINC/0YDQvtGI0LvQvtC1XSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkiDQv9GA0L7RiNC70YvQuV0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JIg0L/RgNC+0YjQu9GD0Y5dIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF5KCkgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CS0L5dIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JJdIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn0YfQtdGA0LXQtyAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMg0L3QsNC30LDQtCcsXG4gICAgICAgICAgICBzOiAn0L3QtdGB0LrQvtC70YzQutC+INGB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBzczogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIG06IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBtbTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGg6ICfRh9Cw0YEnLFxuICAgICAgICAgICAgaGg6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBkOiAn0LTQtdC90YwnLFxuICAgICAgICAgICAgZGQ6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICB3OiAn0L3QtdC00LXQu9GPJyxcbiAgICAgICAgICAgIHd3OiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgTTogJ9C80LXRgdGP0YYnLFxuICAgICAgICAgICAgTU06IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICB5OiAn0LPQvtC0JyxcbiAgICAgICAgICAgIHl5OiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv0L3QvtGH0Lh80YPRgtGA0LB80LTQvdGPfNCy0LXRh9C10YDQsC9pLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAvXijQtNC90Y980LLQtdGH0LXRgNCwKSQvLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQvdC+0YfQuCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0YPRgtGA0LAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9C00L3Rjyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0LLQtdGH0LXRgNCwJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjQuXzQs9C+fNGPKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QuSc7XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdCz0L4nO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3Rjyc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJ1O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFNpbmRoaSBbc2RdXG4vLyEgYXV0aG9yIDogTmFyYWluIFNhZ2FyIDogaHR0cHM6Ly9naXRodWIuY29tL25hcmFpbnNhZ2FyXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzID0gW1xuICAgICAgICAgICAgJ9is2YbZiNix2YonLFxuICAgICAgICAgICAgJ9mB2YrYqNix2YjYsdmKJyxcbiAgICAgICAgICAgICfZhdin2LHahicsXG4gICAgICAgICAgICAn2KfZvtix2YrZhCcsXG4gICAgICAgICAgICAn2YXYptmKJyxcbiAgICAgICAgICAgICfYrNmI2YYnLFxuICAgICAgICAgICAgJ9is2YjZhNin2KHZkCcsXG4gICAgICAgICAgICAn2KLar9iz2b0nLFxuICAgICAgICAgICAgJ9iz2YrZvtm92YXYqNixJyxcbiAgICAgICAgICAgICfYotqq2b3ZiNio2LEnLFxuICAgICAgICAgICAgJ9mG2YjZhdio2LEnLFxuICAgICAgICAgICAgJ9qK2LPZhdio2LEnLFxuICAgICAgICBdLFxuICAgICAgICBkYXlzID0gWyfYotqG2LEnLCAn2LPZiNmF2LEnLCAn2Kfasdin2LHZiCcsICfYp9ix2KjYuScsICfYrtmF2YrYsycsICfYrNmF2LknLCAn2ofZhtqH2LEnXTtcblxuICAgIHZhciBzZCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NkJywge1xuICAgICAgICBtb250aHM6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IG1vbnRocyxcbiAgICAgICAgd2Vla2RheXM6IGRheXMsXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6IGRheXMsXG4gICAgICAgIHdlZWtkYXlzTWluOiBkYXlzLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRk2IwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv2LXYqNitfNi02KfZhS8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICfYtNin2YUnID09PSBpbnB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9i12KjYrSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJ9i02KfZhSc7XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9in2oRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LPagNin2rvZil0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYp9qz2YrZhiDZh9mB2KrZiiDYqtmKXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9qq2KfZhNmH2YddIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW9qv2LLYsdmK2YQg2YfZgdiq2YpdIGRkZGQgW9iq2YpdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg2b7ZiNihJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDYp9qzJyxcbiAgICAgICAgICAgIHM6ICfahtmG2K8g2LPZitqq2YbaiicsXG4gICAgICAgICAgICBzczogJyVkINiz2YraqtmG2oonLFxuICAgICAgICAgICAgbTogJ9mH2qog2YXZhtm9JyxcbiAgICAgICAgICAgIG1tOiAnJWQg2YXZhtm9JyxcbiAgICAgICAgICAgIGg6ICfZh9qqINqq2YTYp9qqJyxcbiAgICAgICAgICAgIGhoOiAnJWQg2qrZhNin2qonLFxuICAgICAgICAgICAgZDogJ9mH2qog2o/ZitmG2YfZhicsXG4gICAgICAgICAgICBkZDogJyVkINqP2YrZhtmH2YYnLFxuICAgICAgICAgICAgTTogJ9mH2qog2YXZh9mK2YbZiCcsXG4gICAgICAgICAgICBNTTogJyVkINmF2YfZitmG2KcnLFxuICAgICAgICAgICAgeTogJ9mH2qog2LPYp9mEJyxcbiAgICAgICAgICAgIHl5OiAnJWQg2LPYp9mEJyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgv2IwvZywgJywnKTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC8sL2csICfYjCcpO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2Q7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogTm9ydGhlcm4gU2FtaSBbc2VdXG4vLyEgYXV0aG9ycyA6IELDpXJkIFJvbHN0YWQgSGVucmlrc2VuIDogaHR0cHM6Ly9naXRodWIuY29tL2thcmFtZWxsXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc2UgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzZScsIHtcbiAgICAgICAgbW9udGhzOiAnb8SRxJFhamFnZW3DoW5udV9ndW92dmFtw6FubnVfbmp1a8SNYW3DoW5udV9jdW/Fi29tw6FubnVfbWllc3NlbcOhbm51X2dlYXNzZW3DoW5udV9zdW9pZG5lbcOhbm51X2JvcmdlbcOhbm51X8SNYWvEjWFtw6FubnVfZ29sZ2dvdG3DoW5udV9za8OhYm1hbcOhbm51X2p1b3ZsYW3DoW5udScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAnb8SRxJFqX2d1b3Zfbmp1a19jdW9fbWllc19nZWFzX3N1b2lfYm9yZ1/EjWFrxI1fZ29sZ19za8OhYl9qdW92Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdzb3RuYWJlYWl2aV92dW9zc8OhcmdhX21hxYvFi2Viw6FyZ2FfZ2Fza2F2YWhra3VfZHVvcmFzdGF0X2JlYXJqYWRhdF9sw6F2dmFyZGF0Jy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdzb3RuX3Z1b3NfbWHFi19nYXNrX2R1b3JfYmVhcl9sw6F2Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ3Nfdl9tX2dfZF9iX0wnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnTU1NTSBELiBbYi5dIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnTU1NTSBELiBbYi5dIFlZWVkgW3RpLl0gSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIE1NTU0gRC4gW2IuXSBZWVlZIFt0aS5dIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbb3RuZSB0aV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tpaHR0aW4gdGldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbdGldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbaWt0ZSB0aV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbb3ZkZGl0XSBkZGRkIFt0aV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyBnZWHFvmVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdtYcWLaXQgJXMnLFxuICAgICAgICAgICAgczogJ21vYWRkZSBzZWt1bmRkYXQnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWt1bmRkYXQnLFxuICAgICAgICAgICAgbTogJ29rdGEgbWludWh0YScsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnVodGF0JyxcbiAgICAgICAgICAgIGg6ICdva3RhIGRpaW1tdScsXG4gICAgICAgICAgICBoaDogJyVkIGRpaW1tdXQnLFxuICAgICAgICAgICAgZDogJ29rdGEgYmVhaXZpJyxcbiAgICAgICAgICAgIGRkOiAnJWQgYmVhaXZ2aXQnLFxuICAgICAgICAgICAgTTogJ29rdGEgbcOhbm51JyxcbiAgICAgICAgICAgIE1NOiAnJWQgbcOhbnV0JyxcbiAgICAgICAgICAgIHk6ICdva3RhIGphaGtpJyxcbiAgICAgICAgICAgIHl5OiAnJWQgamFnaXQnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNlO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFNpbmhhbGVzZSBbc2ldXG4vLyEgYXV0aG9yIDogU2FtcGF0aCBTaXRpbmFtYWx1d2EgOiBodHRwczovL2dpdGh1Yi5jb20vc2FtcGF0aHNyaXNcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIC8qanNoaW50IC1XMTAwKi9cbiAgICB2YXIgc2kgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzaScsIHtcbiAgICAgICAgbW9udGhzOiAn4Lai4Lax4LeA4LeP4La74LeSX+C2tOC3meC2tuC2u+C3gOC3j+C2u+C3kl/gtrjgt4/gtrvgt4rgtq3gt5Rf4LaF4La04LeK4oCN4La74Lea4La94LeKX+C2uOC3kOC2uuC3kl/gtqLgt5bgtrHgt5Jf4Lai4LeW4La94LeSX+C2heC2nOC3neC3g+C3iuC2reC3lF/gt4Pgt5DgtrTgt4rgtq3gt5Dgtrjgt4rgtrbgtrvgt4pf4LaU4Laa4LeK4Lat4Led4La24La74LeKX+C2seC3nOC3gOC3kOC2uOC3iuC2tuC2u+C3il/gtq/gt5ngt4Pgt5Dgtrjgt4rgtrbgtrvgt4onLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn4Lai4LaxX+C2tOC3meC2tl/gtrjgt4/gtrvgt4pf4LaF4La04LeKX+C2uOC3kOC2uuC3kl/gtqLgt5bgtrHgt5Jf4Lai4LeW4La94LeSX+C2heC2nOC3nV/gt4Pgt5DgtrTgt4pf4LaU4Laa4LeKX+C2seC3nOC3gOC3kF/gtq/gt5ngt4Pgt5AnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ+C2ieC2u+C3kuC2r+C3j1/gt4PgtrPgt5Tgtq/gt49f4LaF4Laf4LeE4La74LeU4LeA4LeP4Lav4LePX+C2tuC2r+C3j+C2r+C3j1/gtrbgt4rigI3gtrvgt4Tgt4Pgt4rgtrTgtq3gt5LgtrHgt4rgtq/gt49f4LeD4LeS4Laa4LeU4La74LeP4Lav4LePX+C3g+C3meC2seC3g+C3lOC2u+C3j+C2r+C3jycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4LaJ4La74LeSX+C3g+C2s+C3lF/gtoXgtp9f4La24Lav4LePX+C2tuC3iuKAjeC2u+C3hF/gt4Pgt5Lgtprgt5Rf4LeD4LeZ4LaxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+C2iV/gt4Nf4LaFX+C2tl/gtrbgt4rigI3gtrtf4LeD4LeSX+C3g+C3mScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdhIGg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnYSBoOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdZWVlZL01NL0REJyxcbiAgICAgICAgICAgIExMOiAnWVlZWSBNTU1NIEQnLFxuICAgICAgICAgICAgTExMOiAnWVlZWSBNTU1NIEQsIGEgaDptbScsXG4gICAgICAgICAgICBMTExMOiAnWVlZWSBNTU1NIEQgW+C3gOC3kOC2seC3kl0gZGRkZCwgYSBoOm1tOnNzJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4LaF4LavXSBMVFvgtqddJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4LeE4LeZ4LanXSBMVFvgtqddJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBMVFvgtqddJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4LaK4La64LeaXSBMVFvgtqddJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+C2tOC3g+C3lOC2nOC3kuC2ul0gZGRkZCBMVFvgtqddJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXPgtprgt5LgtrHgt4onLFxuICAgICAgICAgICAgcGFzdDogJyVz4Laa4LanIOC2tOC3meC2uycsXG4gICAgICAgICAgICBzOiAn4Lat4Lat4LeK4La04La7IOC2muC3kuC3hOC3kuC2tOC2uicsXG4gICAgICAgICAgICBzczogJ+C2reC2reC3iuC2tOC2uyAlZCcsXG4gICAgICAgICAgICBtOiAn4La44LeS4Lax4LeS4Lat4LeK4Lat4LeU4LeAJyxcbiAgICAgICAgICAgIG1tOiAn4La44LeS4Lax4LeS4Lat4LeK4Lat4LeUICVkJyxcbiAgICAgICAgICAgIGg6ICfgtrTgt5DgtronLFxuICAgICAgICAgICAgaGg6ICfgtrTgt5DgtrogJWQnLFxuICAgICAgICAgICAgZDogJ+C2r+C3kuC2seC2uicsXG4gICAgICAgICAgICBkZDogJ+C2r+C3kuC2sSAlZCcsXG4gICAgICAgICAgICBNOiAn4La44LeP4LeD4La6JyxcbiAgICAgICAgICAgIE1NOiAn4La44LeP4LeDICVkJyxcbiAgICAgICAgICAgIHk6ICfgt4Dgt4PgtrsnLFxuICAgICAgICAgICAgeXk6ICfgt4Dgt4PgtrsgJWQnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0g4LeA4LeQ4Lax4LeSLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcg4LeA4LeQ4Lax4LeSJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+C2tOC3meC2uyDgt4Dgtrvgt5R84La04LeD4LeKIOC3gOC2u+C3lHzgtrTgt5ku4LeAfOC2tC7gt4AuLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgPT09ICfgtrQu4LeALicgfHwgaW5wdXQgPT09ICfgtrTgt4Pgt4og4LeA4La74LeUJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzID4gMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICfgtrQu4LeALicgOiAn4La04LeD4LeKIOC3gOC2u+C3lCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ+C2tOC3mS7gt4AuJyA6ICfgtrTgt5ngtrsg4LeA4La74LeUJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBzaTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBTbG92YWsgW3NrXVxuLy8hIGF1dGhvciA6IE1hcnRpbiBNaW5rYSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9rMnNcbi8vISBiYXNlZCBvbiB3b3JrIG9mIHBldHJiZWxhIDogaHR0cHM6Ly9naXRodWIuY29tL3BldHJiZWxhXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbW9udGhzID1cbiAgICAgICAgICAgICdqYW51w6FyX2ZlYnJ1w6FyX21hcmVjX2FwcsOtbF9tw6FqX2rDum5fasO6bF9hdWd1c3Rfc2VwdGVtYmVyX29rdMOzYmVyX25vdmVtYmVyX2RlY2VtYmVyJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0ID0gJ2phbl9mZWJfbWFyX2Fwcl9tw6FqX2rDum5fasO6bF9hdWdfc2VwX29rdF9ub3ZfZGVjJy5zcGxpdCgnXycpO1xuICAgIGZ1bmN0aW9uIHBsdXJhbChuKSB7XG4gICAgICAgIHJldHVybiBuID4gMSAmJiBuIDwgNTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVtYmVyICsgJyAnO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAncyc6IC8vIGEgZmV3IHNlY29uZHMgLyBpbiBhIGZldyBzZWNvbmRzIC8gYSBmZXcgc2Vjb25kcyBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdww6FyIHNla8O6bmQnIDogJ3DDoXIgc2VrdW5kYW1pJztcbiAgICAgICAgICAgIGNhc2UgJ3NzJzogLy8gOSBzZWNvbmRzIC8gaW4gOSBzZWNvbmRzIC8gOSBzZWNvbmRzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnc2VrdW5keScgOiAnc2Vrw7puZCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnc2VrdW5kYW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdtJzogLy8gYSBtaW51dGUgLyBpbiBhIG1pbnV0ZSAvIGEgbWludXRlIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ21pbsO6dGEnIDogaXNGdXR1cmUgPyAnbWluw7p0dScgOiAnbWluw7p0b3UnO1xuICAgICAgICAgICAgY2FzZSAnbW0nOiAvLyA5IG1pbnV0ZXMgLyBpbiA5IG1pbnV0ZXMgLyA5IG1pbnV0ZXMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdtaW7DunR5JyA6ICdtaW7DunQnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ21pbsO6dGFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnaCc6IC8vIGFuIGhvdXIgLyBpbiBhbiBob3VyIC8gYW4gaG91ciBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdob2RpbmEnIDogaXNGdXR1cmUgPyAnaG9kaW51JyA6ICdob2Rpbm91JztcbiAgICAgICAgICAgIGNhc2UgJ2hoJzogLy8gOSBob3VycyAvIGluIDkgaG91cnMgLyA5IGhvdXJzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnaG9kaW55JyA6ICdob2TDrW4nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ2hvZGluYW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdkJzogLy8gYSBkYXkgLyBpbiBhIGRheSAvIGEgZGF5IGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2RlxYgnIDogJ2TFiG9tJztcbiAgICAgICAgICAgIGNhc2UgJ2RkJzogLy8gOSBkYXlzIC8gaW4gOSBkYXlzIC8gOSBkYXlzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnZG5pJyA6ICdkbsOtJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdkxYhhbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ00nOiAvLyBhIG1vbnRoIC8gaW4gYSBtb250aCAvIGEgbW9udGggYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWVzaWFjJyA6ICdtZXNpYWNvbSc7XG4gICAgICAgICAgICBjYXNlICdNTSc6IC8vIDkgbW9udGhzIC8gaW4gOSBtb250aHMgLyA5IG1vbnRocyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ21lc2lhY2UnIDogJ21lc2lhY292Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtZXNpYWNtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAneSc6IC8vIGEgeWVhciAvIGluIGEgeWVhciAvIGEgeWVhciBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdyb2snIDogJ3Jva29tJztcbiAgICAgICAgICAgIGNhc2UgJ3l5JzogLy8gOSB5ZWFycyAvIGluIDkgeWVhcnMgLyA5IHllYXJzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAncm9reScgOiAncm9rb3YnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ3Jva21pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc2sgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzaycsIHtcbiAgICAgICAgbW9udGhzOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0OiBtb250aHNTaG9ydCxcbiAgICAgICAgd2Vla2RheXM6ICduZWRlxL5hX3BvbmRlbG9rX3V0b3Jva19zdHJlZGFfxaF0dnJ0b2tfcGlhdG9rX3NvYm90YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ25lX3BvX3V0X3N0X8WhdF9waV9zbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICduZV9wb191dF9zdF/FoXRfcGlfc28nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2RuZXMgb10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1t6YWp0cmEgb10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBuZWRlxL51IG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2XSBkZGRkIFtvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Ygc3RyZWR1IG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdm8gxaF0dnJ0b2sgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2IHBpYXRvayBvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Ygc29ib3R1IG9dIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogJ1t2xI1lcmEgb10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWzDuiBuZWRlxL51IG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bMO9XSBkZGRkIFtvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsw7ogc3RyZWR1IG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bMO9XSBkZGRkIFtvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsw7ogc29ib3R1IG9dIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICd6YSAlcycsXG4gICAgICAgICAgICBwYXN0OiAncHJlZCAlcycsXG4gICAgICAgICAgICBzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBzczogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkZDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTU06IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2s7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogU2xvdmVuaWFuIFtzbF1cbi8vISBhdXRob3IgOiBSb2JlcnQgU2Vkb3bFoWVrIDogaHR0cHM6Ly9naXRodWIuY29tL3NlZG92c2VrXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVtYmVyICsgJyAnO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmVcbiAgICAgICAgICAgICAgICAgICAgPyAnbmVrYWogc2VrdW5kJ1xuICAgICAgICAgICAgICAgICAgICA6ICduZWthaiBzZWt1bmRhbWknO1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggPyAnc2VrdW5kbycgOiAnc2VrdW5kaSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnc2VrdW5kaScgOiAnc2VrdW5kYWgnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgNSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdzZWt1bmRlJyA6ICdzZWt1bmRhaCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzZWt1bmQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnZW5hIG1pbnV0YScgOiAnZW5vIG1pbnV0byc7XG4gICAgICAgICAgICBjYXNlICdtbSc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCA/ICdtaW51dGEnIDogJ21pbnV0byc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWludXRpJyA6ICdtaW51dGFtYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCA1KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ21pbnV0ZScgOiAnbWludXRhbWknO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ21pbnV0JyA6ICdtaW51dGFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdlbmEgdXJhJyA6ICdlbm8gdXJvJztcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4ID8gJ3VyYScgOiAndXJvJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICd1cmknIDogJ3VyYW1hJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA8IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAndXJlJyA6ICd1cmFtaSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAndXInIDogJ3VyYW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2VuIGRhbicgOiAnZW5pbSBkbmVtJztcbiAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2RhbicgOiAnZG5lbSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZG5pJyA6ICdkbmV2b21hJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdkbmknIDogJ2RuZXZpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2VuIG1lc2VjJyA6ICdlbmltIG1lc2VjZW0nO1xuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWVzZWMnIDogJ21lc2VjZW0nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ21lc2VjYScgOiAnbWVzZWNlbWEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgNSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtZXNlY2UnIDogJ21lc2VjaSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWVzZWNldicgOiAnbWVzZWNpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2VubyBsZXRvJyA6ICdlbmltIGxldG9tJztcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2xldG8nIDogJ2xldG9tJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdsZXRpJyA6ICdsZXRvbWEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgNSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdsZXRhJyA6ICdsZXRpJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdsZXQnIDogJ2xldGknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHNsID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc2wnLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnVhcl9mZWJydWFyX21hcmVjX2FwcmlsX21hal9qdW5pal9qdWxpal9hdmd1c3Rfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ2phbi5fZmViLl9tYXIuX2Fwci5fbWFqLl9qdW4uX2p1bC5fYXZnLl9zZXAuX29rdC5fbm92Ll9kZWMuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnbmVkZWxqYV9wb25lZGVsamVrX3RvcmVrX3NyZWRhX8SNZXRydGVrX3BldGVrX3NvYm90YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ25lZC5fcG9uLl90b3IuX3NyZS5fxI1ldC5fcGV0Ll9zb2IuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ25lX3BvX3RvX3NyX8SNZV9wZV9zbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELiBNTS4gWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tkYW5lcyBvYl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tqdXRyaSBvYl0gTFQnLFxuXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2XSBbbmVkZWxqb10gW29iXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZdIFtzcmVkb10gW29iXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZdIFtzb2JvdG9dIFtvYl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2XSBkZGRkIFtvYl0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiAnW3bEjWVyYWogb2JdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ByZWrFoW5qb10gW25lZGVsam9dIFtvYl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcmVqxaFuam9dIFtzcmVkb10gW29iXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ByZWrFoW5qb10gW3NvYm90b10gW29iXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ByZWrFoW5qaV0gZGRkZCBbb2JdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfEjWV6ICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdwcmVkICVzJyxcbiAgICAgICAgICAgIHM6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBzczogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGg6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGQ6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5eTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBzbDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBBbGJhbmlhbiBbc3FdXG4vLyEgYXV0aG9yIDogRmxha8OrcmltIElzbWFuaSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9mbGFrZXJpbWlcbi8vISBhdXRob3IgOiBNZW5lbGlvbiBFbGVuc8O6bGUgOiBodHRwczovL2dpdGh1Yi5jb20vT2lyZVxuLy8hIGF1dGhvciA6IE9lcmQgQ3VrYWxsYSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9vZXJkXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3EgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzcScsIHtcbiAgICAgICAgbW9udGhzOiAnSmFuYXJfU2hrdXJ0X01hcnNfUHJpbGxfTWFqX1FlcnNob3JfS29ycmlrX0d1c2h0X1NodGF0b3JfVGV0b3JfTsOrbnRvcl9EaGpldG9yJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbl9TaGtfTWFyX1ByaV9NYWpfUWVyX0tvcl9HdXNfU2h0X1RldF9Ow6tuX0Roaicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdFIERpZWxfRSBIw6tuw6tfRSBNYXJ0w6tfRSBNw6tya3Vyw6tfRSBFbmp0ZV9FIFByZW10ZV9FIFNodHVuw6snLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdEaWVfSMOrbl9NYXJfTcOrcl9FbmpfUHJlX1NodCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdEX0hfTWFfTcOrX0VfUF9TaCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvUER8TUQvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dC5jaGFyQXQoMCkgPT09ICdNJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgcmV0dXJuIGhvdXJzIDwgMTIgPyAnUEQnIDogJ01EJztcbiAgICAgICAgfSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tTb3QgbsOrXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW05lc8OrciBuw6tdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbbsOrXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0RqZSBuw6tdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbZSBrYWx1YXIgbsOrXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ27DqyAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgbcOrIHBhcsOrJyxcbiAgICAgICAgICAgIHM6ICdkaXNhIHNla29uZGEnLFxuICAgICAgICAgICAgc3M6ICclZCBzZWtvbmRhJyxcbiAgICAgICAgICAgIG06ICduasOrIG1pbnV0w6snLFxuICAgICAgICAgICAgbW06ICclZCBtaW51dGEnLFxuICAgICAgICAgICAgaDogJ25qw6sgb3LDqycsXG4gICAgICAgICAgICBoaDogJyVkIG9yw6snLFxuICAgICAgICAgICAgZDogJ25qw6sgZGl0w6snLFxuICAgICAgICAgICAgZGQ6ICclZCBkaXTDqycsXG4gICAgICAgICAgICBNOiAnbmrDqyBtdWFqJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbXVhaicsXG4gICAgICAgICAgICB5OiAnbmrDqyB2aXQnLFxuICAgICAgICAgICAgeXk6ICclZCB2aXRlJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBzcTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBTZXJiaWFuIEN5cmlsbGljIFtzci1jeXJsXVxuLy8hIGF1dGhvciA6IE1pbGFuIEphbmHEjWtvdmnEhzxtaWxhbmphbmFja292aWNAZ21haWwuY29tPiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWxhbi1qXG4vLyEgYXV0aG9yIDogU3RlZmFuIENybmpha292acSHIDxzdGVmYW5AaG90bWFpbC5ycz4gOiBodHRwczovL2dpdGh1Yi5jb20vY3JuamFrb3ZpY1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHRyYW5zbGF0b3IgPSB7XG4gICAgICAgIHdvcmRzOiB7XG4gICAgICAgICAgICAvL0RpZmZlcmVudCBncmFtbWF0aWNhbCBjYXNlc1xuICAgICAgICAgICAgc3M6IFsn0YHQtdC60YPQvdC00LAnLCAn0YHQtdC60YPQvdC00LUnLCAn0YHQtdC60YPQvdC00LgnXSxcbiAgICAgICAgICAgIG06IFsn0ZjQtdC00LDQvSDQvNC40L3Rg9GCJywgJ9GY0LXQtNC90L7QsyDQvNC40L3Rg9GC0LAnXSxcbiAgICAgICAgICAgIG1tOiBbJ9C80LjQvdGD0YInLCAn0LzQuNC90YPRgtCwJywgJ9C80LjQvdGD0YLQsCddLFxuICAgICAgICAgICAgaDogWyfRmNC10LTQsNC9INGB0LDRgicsICfRmNC10LTQvdC+0LMg0YHQsNGC0LAnXSxcbiAgICAgICAgICAgIGhoOiBbJ9GB0LDRgicsICfRgdCw0YLQsCcsICfRgdCw0YLQuCddLFxuICAgICAgICAgICAgZDogWyfRmNC10LTQsNC9INC00LDQvScsICfRmNC10LTQvdC+0LMg0LTQsNC90LAnXSxcbiAgICAgICAgICAgIGRkOiBbJ9C00LDQvScsICfQtNCw0L3QsCcsICfQtNCw0L3QsCddLFxuICAgICAgICAgICAgTTogWyfRmNC10LTQsNC9INC80LXRgdC10YYnLCAn0ZjQtdC00L3QvtCzINC80LXRgdC10YbQsCddLFxuICAgICAgICAgICAgTU06IFsn0LzQtdGB0LXRhicsICfQvNC10YHQtdGG0LAnLCAn0LzQtdGB0LXRhtC4J10sXG4gICAgICAgICAgICB5OiBbJ9GY0LXQtNC90YMg0LPQvtC00LjQvdGDJywgJ9GY0LXQtNC90LUg0LPQvtC00LjQvdC1J10sXG4gICAgICAgICAgICB5eTogWyfQs9C+0LTQuNC90YMnLCAn0LPQvtC00LjQvdC1JywgJ9Cz0L7QtNC40L3QsCddLFxuICAgICAgICB9LFxuICAgICAgICBjb3JyZWN0R3JhbW1hdGljYWxDYXNlOiBmdW5jdGlvbiAobnVtYmVyLCB3b3JkS2V5KSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbnVtYmVyICUgMTAgPj0gMSAmJlxuICAgICAgICAgICAgICAgIG51bWJlciAlIDEwIDw9IDQgJiZcbiAgICAgICAgICAgICAgICAobnVtYmVyICUgMTAwIDwgMTAgfHwgbnVtYmVyICUgMTAwID49IDIwKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciAlIDEwID09PSAxID8gd29yZEtleVswXSA6IHdvcmRLZXlbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gd29yZEtleVsyXTtcbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbiAobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgICAgICB2YXIgd29yZEtleSA9IHRyYW5zbGF0b3Iud29yZHNba2V5XSxcbiAgICAgICAgICAgICAgICB3b3JkO1xuXG4gICAgICAgICAgICBpZiAoa2V5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIC8vIE5vbWluYXRpdlxuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09ICd5JyAmJiB3aXRob3V0U3VmZml4KSByZXR1cm4gJ9GY0LXQtNC90LAg0LPQvtC00LjQvdCwJztcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/IHdvcmRLZXlbMF0gOiB3b3JkS2V5WzFdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB3b3JkID0gdHJhbnNsYXRvci5jb3JyZWN0R3JhbW1hdGljYWxDYXNlKG51bWJlciwgd29yZEtleSk7XG4gICAgICAgICAgICAvLyBOb21pbmF0aXZcbiAgICAgICAgICAgIGlmIChrZXkgPT09ICd5eScgJiYgd2l0aG91dFN1ZmZpeCAmJiB3b3JkID09PSAn0LPQvtC00LjQvdGDJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnINCz0L7QtNC40L3QsCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnICcgKyB3b3JkO1xuICAgICAgICB9LFxuICAgIH07XG5cbiAgICB2YXIgc3JDeXJsID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc3ItY3lybCcsIHtcbiAgICAgICAgbW9udGhzOiAn0ZjQsNC90YPQsNGAX9GE0LXQsdGA0YPQsNGAX9C80LDRgNGCX9Cw0L/RgNC40Ltf0LzQsNGYX9GY0YPQvV/RmNGD0Ltf0LDQstCz0YPRgdGCX9GB0LXQv9GC0LXQvNCx0LDRgF/QvtC60YLQvtCx0LDRgF/QvdC+0LLQtdC80LHQsNGAX9C00LXRhtC10LzQsdCw0YAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ9GY0LDQvS5f0YTQtdCxLl/QvNCw0YAuX9Cw0L/RgC5f0LzQsNGYX9GY0YPQvV/RmNGD0Ltf0LDQstCzLl/RgdC10L8uX9C+0LrRgi5f0L3QvtCyLl/QtNC10YYuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ9C90LXQtNC10ZnQsF/Qv9C+0L3QtdC00LXRmdCw0Lpf0YPRgtC+0YDQsNC6X9GB0YDQtdC00LBf0YfQtdGC0LLRgNGC0LDQul/Qv9C10YLQsNC6X9GB0YPQsdC+0YLQsCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9C90LXQtC5f0L/QvtC9Ll/Rg9GC0L4uX9GB0YDQtS5f0YfQtdGCLl/Qv9C10YIuX9GB0YPQsS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn0L3QtV/Qv9C+X9GD0YJf0YHRgF/Rh9C1X9C/0LVf0YHRgycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0QuIE0uIFlZWVkuJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZLicsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkuIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQuIE1NTU0gWVlZWS4gSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9C00LDQvdCw0YEg0YNdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb0YHRg9GC0YDQsCDRg10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0YNdIFvQvdC10LTQtdGZ0YNdIFvRg10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vRg10gW9GB0YDQtdC00YNdIFvRg10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vRg10gW9GB0YPQsdC+0YLRg10gW9GDXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9GDXSBkZGRkIFvRg10gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9GY0YPRh9C1INGDXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBsYXN0V2Vla0RheXMgPSBbXG4gICAgICAgICAgICAgICAgICAgICdb0L/RgNC+0YjQu9C1XSBb0L3QtdC00LXRmdC1XSBb0YNdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1vQv9GA0L7RiNC70L7Qs10gW9C/0L7QvdC10LTQtdGZ0LrQsF0gW9GDXSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdb0L/RgNC+0YjQu9C+0LNdIFvRg9GC0L7RgNC60LBdIFvRg10gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW9C/0YDQvtGI0LvQtV0gW9GB0YDQtdC00LVdIFvRg10gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW9C/0YDQvtGI0LvQvtCzXSBb0YfQtdGC0LLRgNGC0LrQsF0gW9GDXSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdb0L/RgNC+0YjQu9C+0LNdIFvQv9C10YLQutCwXSBb0YNdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1vQv9GA0L7RiNC70LVdIFvRgdGD0LHQvtGC0LVdIFvRg10gTFQnLFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RXZWVrRGF5c1t0aGlzLmRheSgpXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9C30LAgJXMnLFxuICAgICAgICAgICAgcGFzdDogJ9C/0YDQtSAlcycsXG4gICAgICAgICAgICBzOiAn0L3QtdC60L7Qu9C40LrQviDRgdC10LrRg9C90LTQuCcsXG4gICAgICAgICAgICBzczogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBtOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGg6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgaGg6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgZDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBkZDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE1NOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHk6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgeXk6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMXN0IGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNyQ3lybDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBTZXJiaWFuIFtzcl1cbi8vISBhdXRob3IgOiBNaWxhbiBKYW5hxI1rb3ZpxIc8bWlsYW5qYW5hY2tvdmljQGdtYWlsLmNvbT4gOiBodHRwczovL2dpdGh1Yi5jb20vbWlsYW4talxuLy8hIGF1dGhvciA6IFN0ZWZhbiBDcm5qYWtvdmnEhyA8c3RlZmFuQGhvdG1haWwucnM+IDogaHR0cHM6Ly9naXRodWIuY29tL2Nybmpha292aWNcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB0cmFuc2xhdG9yID0ge1xuICAgICAgICB3b3Jkczoge1xuICAgICAgICAgICAgLy9EaWZmZXJlbnQgZ3JhbW1hdGljYWwgY2FzZXNcbiAgICAgICAgICAgIHNzOiBbJ3Nla3VuZGEnLCAnc2VrdW5kZScsICdzZWt1bmRpJ10sXG4gICAgICAgICAgICBtOiBbJ2plZGFuIG1pbnV0JywgJ2plZG5vZyBtaW51dGEnXSxcbiAgICAgICAgICAgIG1tOiBbJ21pbnV0JywgJ21pbnV0YScsICdtaW51dGEnXSxcbiAgICAgICAgICAgIGg6IFsnamVkYW4gc2F0JywgJ2plZG5vZyBzYXRhJ10sXG4gICAgICAgICAgICBoaDogWydzYXQnLCAnc2F0YScsICdzYXRpJ10sXG4gICAgICAgICAgICBkOiBbJ2plZGFuIGRhbicsICdqZWRub2cgZGFuYSddLFxuICAgICAgICAgICAgZGQ6IFsnZGFuJywgJ2RhbmEnLCAnZGFuYSddLFxuICAgICAgICAgICAgTTogWydqZWRhbiBtZXNlYycsICdqZWRub2cgbWVzZWNhJ10sXG4gICAgICAgICAgICBNTTogWydtZXNlYycsICdtZXNlY2EnLCAnbWVzZWNpJ10sXG4gICAgICAgICAgICB5OiBbJ2plZG51IGdvZGludScsICdqZWRuZSBnb2RpbmUnXSxcbiAgICAgICAgICAgIHl5OiBbJ2dvZGludScsICdnb2RpbmUnLCAnZ29kaW5hJ10sXG4gICAgICAgIH0sXG4gICAgICAgIGNvcnJlY3RHcmFtbWF0aWNhbENhc2U6IGZ1bmN0aW9uIChudW1iZXIsIHdvcmRLZXkpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBudW1iZXIgJSAxMCA+PSAxICYmXG4gICAgICAgICAgICAgICAgbnVtYmVyICUgMTAgPD0gNCAmJlxuICAgICAgICAgICAgICAgIChudW1iZXIgJSAxMDAgPCAxMCB8fCBudW1iZXIgJSAxMDAgPj0gMjApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICUgMTAgPT09IDEgPyB3b3JkS2V5WzBdIDogd29yZEtleVsxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB3b3JkS2V5WzJdO1xuICAgICAgICB9LFxuICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uIChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgIHZhciB3b3JkS2V5ID0gdHJhbnNsYXRvci53b3Jkc1trZXldLFxuICAgICAgICAgICAgICAgIHdvcmQ7XG5cbiAgICAgICAgICAgIGlmIChrZXkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgLy8gTm9taW5hdGl2XG4gICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gJ3knICYmIHdpdGhvdXRTdWZmaXgpIHJldHVybiAnamVkbmEgZ29kaW5hJztcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/IHdvcmRLZXlbMF0gOiB3b3JkS2V5WzFdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB3b3JkID0gdHJhbnNsYXRvci5jb3JyZWN0R3JhbW1hdGljYWxDYXNlKG51bWJlciwgd29yZEtleSk7XG4gICAgICAgICAgICAvLyBOb21pbmF0aXZcbiAgICAgICAgICAgIGlmIChrZXkgPT09ICd5eScgJiYgd2l0aG91dFN1ZmZpeCAmJiB3b3JkID09PSAnZ29kaW51Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnIGdvZGluYSc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnICcgKyB3b3JkO1xuICAgICAgICB9LFxuICAgIH07XG5cbiAgICB2YXIgc3IgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzcicsIHtcbiAgICAgICAgbW9udGhzOiAnamFudWFyX2ZlYnJ1YXJfbWFydF9hcHJpbF9tYWpfanVuX2p1bF9hdmd1c3Rfc2VwdGVtYmFyX29rdG9iYXJfbm92ZW1iYXJfZGVjZW1iYXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ2phbi5fZmViLl9tYXIuX2Fwci5fbWFqX2p1bl9qdWxfYXZnLl9zZXAuX29rdC5fbm92Ll9kZWMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ25lZGVsamFfcG9uZWRlbGpha191dG9yYWtfc3JlZGFfxI1ldHZydGFrX3BldGFrX3N1Ym90YScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ25lZC5fcG9uLl91dG8uX3NyZS5fxI1ldC5fcGV0Ll9zdWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ25lX3BvX3V0X3NyX8SNZV9wZV9zdScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0QuIE0uIFlZWVkuJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZLicsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkuIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQuIE1NTU0gWVlZWS4gSDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2RhbmFzIHVdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbc3V0cmEgdV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW25lZGVsanVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtzcmVkdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3N1Ym90dV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gZGRkZCBbdV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2p1xI1lIHVdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxhc3RXZWVrRGF5cyA9IFtcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxlXSBbbmVkZWxqZV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxvZ10gW3BvbmVkZWxqa2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFt1dG9ya2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsZV0gW3NyZWRlXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbG9nXSBbxI1ldHZydGthXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbG9nXSBbcGV0a2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsZV0gW3N1Ym90ZV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIHJldHVybiBsYXN0V2Vla0RheXNbdGhpcy5kYXkoKV07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICd6YSAlcycsXG4gICAgICAgICAgICBwYXN0OiAncHJlICVzJyxcbiAgICAgICAgICAgIHM6ICduZWtvbGlrbyBzZWt1bmRpJyxcbiAgICAgICAgICAgIHNzOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG06IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgbW06IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgaDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBoaDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE06IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgTU06IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgeTogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICB5eTogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3I7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogc2lTd2F0aSBbc3NdXG4vLyEgYXV0aG9yIDogTmljb2xhaSBEYXZpZXM8bWFpbEBuaWNvbGFpLmlvPiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9uaWNvbGFpZGF2aWVzXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3MgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzcycsIHtcbiAgICAgICAgbW9udGhzOiBcIkJoaW1iaWR2d2FuZV9JbmRsb3ZhbmFfSW5kbG92J2xlbmtodWx1X01hYmFzYV9Jbmtod2VraHdldGlfSW5obGFiYV9LaG9sd2FuZV9JbmdjaV9JbnlvbmlfSW1waGFsYV9Md2V0aV9JbmdvbmdvbmlcIi5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0JoaV9JbmFfSW51X01hYl9JbmtfSW5oX0tob19JZ2NfSW55X0ltcF9Md2VfSWdvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdMaXNvbnRmb19VbXNvbWJ1bHVrb19MZXNpYmlsaV9MZXNpdHNhdGZ1X0xlc2luZV9MZXNpaGxhbnVfVW1nY2liZWxvJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdMaXNfVW1iX0xzYl9MZXNfTHNpX0xzaF9VbWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnTGlfVXNfTGJfTHRfTHNfTGhfVWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUzogJ2g6bW06c3MgQScsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbTmFtdWhsYSBuZ2FdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbS3VzYXNhIG5nYV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtuZ2FdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSXRvbG8gbmdhXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW2xlbGlwaGVsaWxlXSBbbmdhXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ25nYSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnd2VudGVrYSBuZ2EgJXMnLFxuICAgICAgICAgICAgczogJ2VtaXp1endhbmEgbG9tY2FuZScsXG4gICAgICAgICAgICBzczogJyVkIG16dXp3YW5hJyxcbiAgICAgICAgICAgIG06ICd1bXp1enUnLFxuICAgICAgICAgICAgbW06ICclZCBlbWl6dXp1JyxcbiAgICAgICAgICAgIGg6ICdsaWhvcmEnLFxuICAgICAgICAgICAgaGg6ICclZCBlbWFob3JhJyxcbiAgICAgICAgICAgIGQ6ICdsaWxhbmdhJyxcbiAgICAgICAgICAgIGRkOiAnJWQgZW1hbGFuZ2EnLFxuICAgICAgICAgICAgTTogJ2lueWFuZ2EnLFxuICAgICAgICAgICAgTU06ICclZCB0aW55YW5nYScsXG4gICAgICAgICAgICB5OiAndW1ueWFrYScsXG4gICAgICAgICAgICB5eTogJyVkIGltaW55YWthJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL2VrdXNlbml8ZW1pbml8ZW50c2FtYmFtYXxlYnVzdWt1LyxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzIDwgMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VrdXNlbmknO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VycyA8IDE1KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlbWluaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VudHNhbWJhbWEnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VidXN1a3UnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICdla3VzZW5pJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ2VtaW5pJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdlbnRzYW1iYW1hJyB8fCBtZXJpZGllbSA9PT0gJ2VidXN1a3UnKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhvdXIgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS8sXG4gICAgICAgIG9yZGluYWw6ICclZCcsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBzcztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBTd2VkaXNoIFtzdl1cbi8vISBhdXRob3IgOiBKZW5zIEFsbSA6IGh0dHBzOi8vZ2l0aHViLmNvbS91bG11c1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN2ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc3YnLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnVhcmlfZmVicnVhcmlfbWFyc19hcHJpbF9tYWpfanVuaV9qdWxpX2F1Z3VzdGlfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXInLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnamFuX2ZlYl9tYXJfYXByX21hal9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnc8O2bmRhZ19tw6VuZGFnX3Rpc2RhZ19vbnNkYWdfdG9yc2RhZ19mcmVkYWdfbMO2cmRhZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ3PDtm5fbcOlbl90aXNfb25zX3Rvcl9mcmVfbMO2cicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdzw7ZfbcOlX3RpX29uX3RvX2ZyX2zDticuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBba2wuXSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBba2wuXSBISDptbScsXG4gICAgICAgICAgICBsbGw6ICdEIE1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGw6ICdkZGQgRCBNTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0lkYWddIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbSW1vcmdvbl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tJZ8Olcl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdbUMOlXSBkZGRkIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW0ldIGRkZGRbc10gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdvbSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnZsO2ciAlcyBzZWRhbicsXG4gICAgICAgICAgICBzOiAnbsOlZ3JhIHNla3VuZGVyJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VrdW5kZXInLFxuICAgICAgICAgICAgbTogJ2VuIG1pbnV0JyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRlcicsXG4gICAgICAgICAgICBoOiAnZW4gdGltbWUnLFxuICAgICAgICAgICAgaGg6ICclZCB0aW1tYXInLFxuICAgICAgICAgICAgZDogJ2VuIGRhZycsXG4gICAgICAgICAgICBkZDogJyVkIGRhZ2FyJyxcbiAgICAgICAgICAgIE06ICdlbiBtw6VuYWQnLFxuICAgICAgICAgICAgTU06ICclZCBtw6VuYWRlcicsXG4gICAgICAgICAgICB5OiAnZXR0IMOlcicsXG4gICAgICAgICAgICB5eTogJyVkIMOlcicsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShcXDplfFxcOmEpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPVxuICAgICAgICAgICAgICAgICAgICB+figobnVtYmVyICUgMTAwKSAvIDEwKSA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnOmUnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJzphJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAyXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICc6YSdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gM1xuICAgICAgICAgICAgICAgICAgICAgICAgPyAnOmUnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICc6ZSc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3Y7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogU3dhaGlsaSBbc3ddXG4vLyEgYXV0aG9yIDogRmFoYWQgS2Fzc2ltIDogaHR0cHM6Ly9naXRodWIuY29tL2ZhZHNlbFxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN3ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc3cnLCB7XG4gICAgICAgIG1vbnRoczogJ0phbnVhcmlfRmVicnVhcmlfTWFjaGlfQXByaWxpX01laV9KdW5pX0p1bGFpX0Fnb3N0aV9TZXB0ZW1iYV9Pa3RvYmFfTm92ZW1iYV9EZXNlbWJhJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbl9GZWJfTWFjX0Fwcl9NZWlfSnVuX0p1bF9BZ29fU2VwX09rdF9Ob3ZfRGVzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdKdW1hcGlsaV9KdW1hdGF0dV9KdW1hbm5lX0p1bWF0YW5vX0FsaGFtaXNpX0lqdW1hYV9KdW1hbW9zaScuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnSnBsX0p0YXRfSm5uZV9KdGFuX0FsaF9Jam1fSm1vcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdKMl9KM19KNF9KNV9BbF9Jal9KMScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdoaDptbSBBJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbbGVvIHNhYV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1trZXNobyBzYWFdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW3dpa2kgaWpheW9dIGRkZGQgW3NhYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbamFuYV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbd2lraSBpbGl5b3BpdGFdIGRkZGQgW3NhYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMgYmFhZGF5ZScsXG4gICAgICAgICAgICBwYXN0OiAndG9rZWEgJXMnLFxuICAgICAgICAgICAgczogJ2hpdmkgcHVuZGUnLFxuICAgICAgICAgICAgc3M6ICdzZWt1bmRlICVkJyxcbiAgICAgICAgICAgIG06ICdkYWtpa2EgbW9qYScsXG4gICAgICAgICAgICBtbTogJ2Rha2lrYSAlZCcsXG4gICAgICAgICAgICBoOiAnc2FhIGxpbW9qYScsXG4gICAgICAgICAgICBoaDogJ21hc2FhICVkJyxcbiAgICAgICAgICAgIGQ6ICdzaWt1IG1vamEnLFxuICAgICAgICAgICAgZGQ6ICdzaWt1ICVkJyxcbiAgICAgICAgICAgIE06ICdtd2V6aSBtbW9qYScsXG4gICAgICAgICAgICBNTTogJ21pZXppICVkJyxcbiAgICAgICAgICAgIHk6ICdtd2FrYSBtbW9qYScsXG4gICAgICAgICAgICB5eTogJ21pYWthICVkJyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN3O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFRhbWlsIFt0YV1cbi8vISBhdXRob3IgOiBBcmp1bmt1bWFyIEtyaXNobmFtb29ydGh5IDogaHR0cHM6Ly9naXRodWIuY29tL3RrMTIwNDA0XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAgICAgMTogJ+CvpycsXG4gICAgICAgICAgICAyOiAn4K+oJyxcbiAgICAgICAgICAgIDM6ICfgr6knLFxuICAgICAgICAgICAgNDogJ+CvqicsXG4gICAgICAgICAgICA1OiAn4K+rJyxcbiAgICAgICAgICAgIDY6ICfgr6wnLFxuICAgICAgICAgICAgNzogJ+CvrScsXG4gICAgICAgICAgICA4OiAn4K+uJyxcbiAgICAgICAgICAgIDk6ICfgr68nLFxuICAgICAgICAgICAgMDogJ+CvpicsXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfgr6cnOiAnMScsXG4gICAgICAgICAgICAn4K+oJzogJzInLFxuICAgICAgICAgICAgJ+CvqSc6ICczJyxcbiAgICAgICAgICAgICfgr6onOiAnNCcsXG4gICAgICAgICAgICAn4K+rJzogJzUnLFxuICAgICAgICAgICAgJ+CvrCc6ICc2JyxcbiAgICAgICAgICAgICfgr60nOiAnNycsXG4gICAgICAgICAgICAn4K+uJzogJzgnLFxuICAgICAgICAgICAgJ+Cvryc6ICc5JyxcbiAgICAgICAgICAgICfgr6YnOiAnMCcsXG4gICAgICAgIH07XG5cbiAgICB2YXIgdGEgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0YScsIHtcbiAgICAgICAgbW9udGhzOiAn4K6c4K6p4K614K6w4K6/X+CuquCuv+CuquCvjeCusOCuteCusOCuv1/grq7grr7grrDgr43grprgr41f4K6P4K6q4K+N4K6w4K6y4K+NX+CuruCvh1/grpzgr4Lgrqngr41f4K6c4K+C4K6y4K+IX+CuhuCuleCuuOCvjeCun+CvjV/grprgr4bgrqrgr43grp/gr4bgrq7gr43grqrgrrDgr41f4K6F4K6V4K+N4K6f4K+H4K6+4K6q4K6w4K+NX+CuqOCuteCuruCvjeCuquCusOCvjV/grp/grr/grprgrq7gr43grqrgrrDgr40nLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+CunOCuqeCuteCusOCuv1/grqrgrr/grqrgr43grrDgrrXgrrDgrr9f4K6u4K6+4K6w4K+N4K6a4K+NX+Cuj+CuquCvjeCusOCusuCvjV/grq7gr4df4K6c4K+C4K6p4K+NX+CunOCvguCusuCviF/grobgrpXgrrjgr43grp/gr41f4K6a4K+G4K6q4K+N4K6f4K+G4K6u4K+N4K6q4K6w4K+NX+CuheCuleCvjeCun+Cvh+CuvuCuquCusOCvjV/grqjgrrXgrq7gr43grqrgrrDgr41f4K6f4K6/4K6a4K6u4K+N4K6q4K6w4K+NJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ+CunuCuvuCur+Cuv+CuseCvjeCuseCvgeCuleCvjeCuleCuv+CutOCuruCviF/grqTgrr/grpngr43grpXgrp/gr43grpXgrr/grrTgrq7gr4hf4K6a4K+G4K614K+N4K614K6+4K6v4K+N4K6V4K6/4K604K6u4K+IX+CuquCvgeCupOCuqeCvjeCuleCuv+CutOCuruCviF/grrXgrr/grq/grr7grrTgrpXgr43grpXgrr/grrTgrq7gr4hf4K614K+G4K6z4K+N4K6z4K6/4K6V4K+N4K6V4K6/4K604K6u4K+IX+CumuCuqeCuv+CuleCvjeCuleCuv+CutOCuruCviCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4K6e4K6+4K6v4K6/4K6x4K+BX+CupOCuv+CumeCvjeCuleCus+CvjV/grprgr4bgrrXgr43grrXgrr7grq/gr41f4K6q4K+B4K6k4K6p4K+NX+CuteCuv+Cur+CuvuCutOCuqeCvjV/grrXgr4bgrrPgr43grrPgrr9f4K6a4K6p4K6/Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+CunuCuvl/grqTgrr9f4K6a4K+GX+CuquCvgV/grrXgrr9f4K614K+GX+Cumicuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSwgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+Cuh+CuqeCvjeCuseCvgV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vgrqjgrr7grrPgr4hdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCwgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vgrqjgr4fgrrHgr43grrHgr4FdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+CuleCun+CuqOCvjeCupCDgrrXgrr7grrDgrq7gr41dIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg4K6H4K6y4K+NJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDgrq7gr4Hgrqngr40nLFxuICAgICAgICAgICAgczogJ+CukuCusOCvgSDgrprgrr/grrIg4K614K6/4K6o4K6+4K6f4K6/4K6V4K6z4K+NJyxcbiAgICAgICAgICAgIHNzOiAnJWQg4K614K6/4K6o4K6+4K6f4K6/4K6V4K6z4K+NJyxcbiAgICAgICAgICAgIG06ICfgrpLgrrDgr4Eg4K6o4K6/4K6u4K6/4K6f4K6u4K+NJyxcbiAgICAgICAgICAgIG1tOiAnJWQg4K6o4K6/4K6u4K6/4K6f4K6Z4K+N4K6V4K6z4K+NJyxcbiAgICAgICAgICAgIGg6ICfgrpLgrrDgr4Eg4K6u4K6j4K6/IOCuqOCvh+CusOCuruCvjScsXG4gICAgICAgICAgICBoaDogJyVkIOCuruCuo+CuvyDgrqjgr4fgrrDgrq7gr40nLFxuICAgICAgICAgICAgZDogJ+CukuCusOCvgSDgrqjgrr7grrPgr40nLFxuICAgICAgICAgICAgZGQ6ICclZCDgrqjgrr7grp/gr43grpXgrrPgr40nLFxuICAgICAgICAgICAgTTogJ+CukuCusOCvgSDgrq7grr7grqTgrq7gr40nLFxuICAgICAgICAgICAgTU06ICclZCDgrq7grr7grqTgrpngr43grpXgrrPgr40nLFxuICAgICAgICAgICAgeTogJ+CukuCusOCvgSDgrrXgrrDgr4Hgrp/grq7gr40nLFxuICAgICAgICAgICAgeXk6ICclZCDgrobgrqPgr43grp/gr4HgrpXgrrPgr40nLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3grrXgrqTgr4EvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+CuteCupOCvgSc7XG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgr6fgr6jgr6ngr6rgr6vgr6zgr63gr67gr6/gr6ZdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIC8vIHJlZmVyIGh0dHA6Ly90YS53aWtpcGVkaWEub3JnL3MvMWVyMVxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4K6v4K6+4K6u4K6u4K+NfOCuteCviOCuleCuseCviHzgrpXgrr7grrLgr4h84K6o4K6j4K+N4K6q4K6V4K6y4K+NfOCujuCuseCvjeCuquCuvuCun+CvgXzgrq7grr7grrLgr4gvLFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcg4K6v4K6+4K6u4K6u4K+NJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyDgrrXgr4jgrpXgrrHgr4gnOyAvLyDgrrXgr4jgrpXgrrHgr4hcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcg4K6V4K6+4K6y4K+IJzsgLy8g4K6V4K6+4K6y4K+IXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnIOCuqOCuo+CvjeCuquCuleCusuCvjSc7IC8vIOCuqOCuo+CvjeCuquCuleCusuCvjVxuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyDgro7grrHgr43grqrgrr7grp/gr4EnOyAvLyDgro7grrHgr43grqrgrr7grp/gr4FcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcg4K6u4K6+4K6y4K+IJzsgLy8g4K6u4K6+4K6y4K+IXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnIOCur+CuvuCuruCuruCvjSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+Cur+CuvuCuruCuruCvjScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDIgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CuteCviOCuleCuseCviCcgfHwgbWVyaWRpZW0gPT09ICfgrpXgrr7grrLgr4gnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4K6o4K6j4K+N4K6q4K6V4K6y4K+NJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRhO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFRlbHVndSBbdGVdXG4vLyEgYXV0aG9yIDogS3Jpc2huYSBDaGFpdGFueWEgVGhvdGEgOiBodHRwczovL2dpdGh1Yi5jb20va2N0aG90YVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHRlID0gbW9tZW50LmRlZmluZUxvY2FsZSgndGUnLCB7XG4gICAgICAgIG1vbnRoczogJ+CwnOCwqOCwteCwsOCwv1/gsKvgsL/gsKzgsY3gsLDgsLXgsLDgsL9f4LCu4LC+4LCw4LGN4LCa4LC/X+Cwj+CwquCxjeCwsOCwv+CwsuCxjV/gsK7gsYdf4LCc4LGC4LCo4LGNX+CwnOCxgeCwsuCxiF/gsIbgsJfgsLjgsY3gsJ/gsYFf4LC44LGG4LCq4LGN4LCf4LGG4LCC4LCs4LCw4LGNX+CwheCwleCxjeCwn+Cxi+CwrOCwsOCxjV/gsKjgsLXgsILgsKzgsLDgsY1f4LCh4LC/4LC44LGG4LCC4LCs4LCw4LGNJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfgsJzgsKguX+Cwq+Cwv+CwrOCxjeCwsC5f4LCu4LC+4LCw4LGN4LCa4LC/X+Cwj+CwquCxjeCwsOCwvy5f4LCu4LGHX+CwnOCxguCwqOCxjV/gsJzgsYHgsLLgsYhf4LCG4LCXLl/gsLjgsYbgsKrgsY0uX+CwheCwleCxjeCwn+Cxiy5f4LCo4LC1Ll/gsKHgsL/gsLjgsYYuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ+CwhuCwpuCwv+CwteCwvuCwsOCwgl/gsLjgsYvgsK7gsLXgsL7gsLDgsIJf4LCu4LCC4LCX4LCz4LC14LC+4LCw4LCCX+CwrOCxgeCwp+CwteCwvuCwsOCwgl/gsJfgsYHgsLDgsYHgsLXgsL7gsLDgsIJf4LC24LGB4LCV4LGN4LCw4LC14LC+4LCw4LCCX+CwtuCwqOCwv+CwteCwvuCwsOCwgicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4LCG4LCm4LC/X+CwuOCxi+Cwrl/gsK7gsILgsJfgsLNf4LCs4LGB4LCnX+Cwl+CxgeCwsOCxgV/gsLbgsYHgsJXgsY3gsLBf4LC24LCo4LC/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+Cwhl/gsLjgsYtf4LCu4LCCX+CwrOCxgV/gsJfgsYFf4LC24LGBX+Cwticuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnQSBoOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0EgaDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vgsKjgsYfgsKHgsYFdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4LCw4LGH4LCq4LGBXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4LCo4LC/4LCo4LGN4LCoXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgsJfgsKRdIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg4LCy4LGLJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDgsJXgsY3gsLDgsL/gsKTgsIInLFxuICAgICAgICAgICAgczogJ+CwleCxiuCwqOCxjeCwqOCwvyDgsJXgsY3gsLfgsKPgsL7gsLLgsYEnLFxuICAgICAgICAgICAgc3M6ICclZCDgsLjgsYbgsJXgsKjgsY3gsLLgsYEnLFxuICAgICAgICAgICAgbTogJ+CwkuCwlSDgsKjgsL/gsK7gsL/gsLfgsIInLFxuICAgICAgICAgICAgbW06ICclZCDgsKjgsL/gsK7gsL/gsLfgsL7gsLLgsYEnLFxuICAgICAgICAgICAgaDogJ+CwkuCwlSDgsJfgsILgsJ8nLFxuICAgICAgICAgICAgaGg6ICclZCDgsJfgsILgsJ/gsLLgsYEnLFxuICAgICAgICAgICAgZDogJ+CwkuCwlSDgsLDgsYvgsJzgsYEnLFxuICAgICAgICAgICAgZGQ6ICclZCDgsLDgsYvgsJzgsYHgsLLgsYEnLFxuICAgICAgICAgICAgTTogJ+CwkuCwlSDgsKjgsYbgsLInLFxuICAgICAgICAgICAgTU06ICclZCDgsKjgsYbgsLLgsLLgsYEnLFxuICAgICAgICAgICAgeTogJ+CwkuCwlSDgsLjgsILgsLXgsKTgsY3gsLjgsLDgsIInLFxuICAgICAgICAgICAgeXk6ICclZCDgsLjgsILgsLXgsKTgsY3gsLjgsLDgsL7gsLLgsYEnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3gsLUvLFxuICAgICAgICBvcmRpbmFsOiAnJWTgsLUnLFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4LCw4LC+4LCk4LGN4LCw4LC/fOCwieCwpuCwr+CwgnzgsK7gsKfgsY3gsK/gsL7gsLngsY3gsKjgsIJ84LC44LC+4LCv4LCC4LCk4LGN4LCw4LCCLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4LCw4LC+4LCk4LGN4LCw4LC/Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4LCJ4LCm4LCv4LCCJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CwruCwp+CxjeCwr+CwvuCwueCxjeCwqOCwgicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4LC44LC+4LCv4LCC4LCk4LGN4LCw4LCCJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CwsOCwvuCwpOCxjeCwsOCwvyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LCJ4LCm4LCv4LCCJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsK7gsKfgsY3gsK/gsL7gsLngsY3gsKjgsIInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CwuOCwvuCwr+CwguCwpOCxjeCwsOCwgic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LCw4LC+4LCk4LGN4LCw4LC/JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRlO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFRldHVuIERpbGkgKEVhc3QgVGltb3IpIFt0ZXRdXG4vLyEgYXV0aG9yIDogSm9zaHVhIEJyb29rcyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9qb3NoYnJvb2tzXG4vLyEgYXV0aG9yIDogT25vcmlvIERlIEouIEFmb25zbyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJvYm9cbi8vISBhdXRob3IgOiBTb25pYSBTaW1vZXMgOiBodHRwczovL2dpdGh1Yi5jb20vc29uaWFzaW1vZXNcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB0ZXQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0ZXQnLCB7XG4gICAgICAgIG1vbnRoczogJ0phbmVpcnVfRmV2ZXJlaXJ1X01hcnN1X0FicmlsX01haXVfSnXDsXVfSnVsbHVfQWd1c3R1X1NldGVtYnJ1X091dHVicnVfTm92ZW1icnVfRGV6ZW1icnUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuX0Zldl9NYXJfQWJyX01haV9KdW5fSnVsX0Fnb19TZXRfT3V0X05vdl9EZXonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnRG9taW5ndV9TZWd1bmRhX1RlcnNhX0t1YXJ0YV9LaW50YV9TZXN0YV9TYWJhZHUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdEb21fU2VnX1RlcnNfS3VhX0tpbnRfU2VzdF9TYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnRG9fU2VnX1RlX0t1X0tpX1Nlc19TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tPaGluIGloYV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tBYmFuIGloYV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtpaGFdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSG9yaXNlaWsgaWhhXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW3NlbWFuYSBrb3R1a10gW2loYV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdpaGEgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGxpdWJhJyxcbiAgICAgICAgICAgIHM6ICdzZWd1bmR1IGJhbHVuJyxcbiAgICAgICAgICAgIHNzOiAnc2VndW5kdSAlZCcsXG4gICAgICAgICAgICBtOiAnbWludXR1IGlkYScsXG4gICAgICAgICAgICBtbTogJ21pbnV0dSAlZCcsXG4gICAgICAgICAgICBoOiAnb3JhcyBpZGEnLFxuICAgICAgICAgICAgaGg6ICdvcmFzICVkJyxcbiAgICAgICAgICAgIGQ6ICdsb3JvbiBpZGEnLFxuICAgICAgICAgICAgZGQ6ICdsb3JvbiAlZCcsXG4gICAgICAgICAgICBNOiAnZnVsYW4gaWRhJyxcbiAgICAgICAgICAgIE1NOiAnZnVsYW4gJWQnLFxuICAgICAgICAgICAgeTogJ3RpbmFuIGlkYScsXG4gICAgICAgICAgICB5eTogJ3RpbmFuICVkJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgICAgfn4oKG51bWJlciAlIDEwMCkgLyAxMCkgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RoJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRldDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBUYWppayBbdGddXG4vLyEgYXV0aG9yIDogT3JpZiBOLiBKci4gOiBodHRwczovL2dpdGh1Yi5jb20vb3JpZi1qclxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN1ZmZpeGVzID0ge1xuICAgICAgICAwOiAnLdGD0LwnLFxuICAgICAgICAxOiAnLdGD0LwnLFxuICAgICAgICAyOiAnLdGO0LwnLFxuICAgICAgICAzOiAnLdGO0LwnLFxuICAgICAgICA0OiAnLdGD0LwnLFxuICAgICAgICA1OiAnLdGD0LwnLFxuICAgICAgICA2OiAnLdGD0LwnLFxuICAgICAgICA3OiAnLdGD0LwnLFxuICAgICAgICA4OiAnLdGD0LwnLFxuICAgICAgICA5OiAnLdGD0LwnLFxuICAgICAgICAxMDogJy3Rg9C8JyxcbiAgICAgICAgMTI6ICct0YPQvCcsXG4gICAgICAgIDEzOiAnLdGD0LwnLFxuICAgICAgICAyMDogJy3Rg9C8JyxcbiAgICAgICAgMzA6ICct0Y7QvCcsXG4gICAgICAgIDQwOiAnLdGD0LwnLFxuICAgICAgICA1MDogJy3Rg9C8JyxcbiAgICAgICAgNjA6ICct0YPQvCcsXG4gICAgICAgIDcwOiAnLdGD0LwnLFxuICAgICAgICA4MDogJy3Rg9C8JyxcbiAgICAgICAgOTA6ICct0YPQvCcsXG4gICAgICAgIDEwMDogJy3Rg9C8JyxcbiAgICB9O1xuXG4gICAgdmFyIHRnID0gbW9tZW50LmRlZmluZUxvY2FsZSgndGcnLCB7XG4gICAgICAgIG1vbnRoczoge1xuICAgICAgICAgICAgZm9ybWF0OiAn0Y/QvdCy0LDRgNC4X9GE0LXQstGA0LDQu9C4X9C80LDRgNGC0Lhf0LDQv9GA0LXQu9C4X9C80LDQudC4X9C40Y7QvdC4X9C40Y7Qu9C4X9Cw0LLQs9GD0YHRgtC4X9GB0LXQvdGC0Y/QsdGA0Lhf0L7QutGC0Y/QsdGA0Lhf0L3QvtGP0LHRgNC4X9C00LXQutCw0LHRgNC4Jy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGFuZGFsb25lOlxuICAgICAgICAgICAgICAgICfRj9C90LLQsNGAX9GE0LXQstGA0LDQu1/QvNCw0YDRgl/QsNC/0YDQtdC7X9C80LDQuV/QuNGO0L1f0LjRjtC7X9Cw0LLQs9GD0YHRgl/RgdC10L3RgtGP0LHRgF/QvtC60YLRj9Cx0YBf0L3QvtGP0LHRgF/QtNC10LrQsNCx0YAnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydDogJ9GP0L3Qsl/RhNC10LJf0LzQsNGAX9Cw0L/RgF/QvNCw0Llf0LjRjtC9X9C40Y7Qu1/QsNCy0LNf0YHQtdC9X9C+0LrRgl/QvdC+0Y9f0LTQtdC6Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ9GP0LrRiNCw0L3QsdC1X9C00YPRiNCw0L3QsdC1X9GB0LXRiNCw0L3QsdC1X9GH0L7RgNGI0LDQvdCx0LVf0L/QsNC90rfRiNCw0L3QsdC1X9K30YPQvNGK0LBf0YjQsNC90LHQtScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9GP0YjQsV/QtNGI0LFf0YHRiNCxX9GH0YjQsV/Qv9GI0LFf0rfRg9C8X9GI0L3QsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfRj9GIX9C00Yhf0YHRiF/Rh9GIX9C/0Yhf0rfQvF/RiNCxJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9CY0LzRgNOv0Lcg0YHQvtCw0YLQuF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vQpNCw0YDQtNC+INGB0L7QsNGC0LhdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb0JTQuNGA06/QtyDRgdC+0LDRgtC4XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGRb0LhdIFvSs9Cw0YTRgtCw0Lgg0L7Rj9C90LTQsCDRgdC+0LDRgtC4XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGRb0LhdIFvSs9Cw0YTRgtCw0Lgg0LPRg9C30LDRiNGC0LAg0YHQvtCw0YLQuF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfQsdCw0YrQtNC4ICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDQv9C10YgnLFxuICAgICAgICAgICAgczogJ9GP0LrRh9Cw0L3QtCDRgdC+0L3QuNGPJyxcbiAgICAgICAgICAgIG06ICfRj9C6INC00LDSm9C40pvQsCcsXG4gICAgICAgICAgICBtbTogJyVkINC00LDSm9C40pvQsCcsXG4gICAgICAgICAgICBoOiAn0Y/QuiDRgdC+0LDRgicsXG4gICAgICAgICAgICBoaDogJyVkINGB0L7QsNGCJyxcbiAgICAgICAgICAgIGQ6ICfRj9C6INGA06/QtycsXG4gICAgICAgICAgICBkZDogJyVkINGA06/QtycsXG4gICAgICAgICAgICBNOiAn0Y/QuiDQvNC+0rMnLFxuICAgICAgICAgICAgTU06ICclZCDQvNC+0rMnLFxuICAgICAgICAgICAgeTogJ9GP0Log0YHQvtC7JyxcbiAgICAgICAgICAgIHl5OiAnJWQg0YHQvtC7JyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9GI0LDQsXzRgdGD0LHSs3zRgNOv0Ld80LHQtdCz0L7Ssy8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ9GI0LDQsScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDQgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ9GB0YPQsdKzJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ9GA06/QtycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn0LHQtdCz0L7SsycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfRiNCw0LEnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9GB0YPQsdKzJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE2KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfRgNOv0LcnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Cx0LXQs9C+0rMnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9GI0LDQsSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS0o0YPQvHzRjtC8KS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBhID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgYiA9IG51bWJlciA+PSAxMDAgPyAxMDAgOiBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChzdWZmaXhlc1tudW1iZXJdIHx8IHN1ZmZpeGVzW2FdIHx8IHN1ZmZpeGVzW2JdKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMXRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRnO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFRoYWkgW3RoXVxuLy8hIGF1dGhvciA6IEtyaWRzYWRhIFRoYW5hYnVscG9uZyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9zaXJuXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdGggPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0aCcsIHtcbiAgICAgICAgbW9udGhzOiAn4Lih4LiB4Lij4Liy4LiE4LihX+C4geC4uOC4oeC4oOC4suC4nuC4seC4meC4mOC5jF/guKHguLXguJnguLLguITguKFf4LmA4Lih4Lip4Liy4Lii4LiZX+C4nuC4pOC4qeC4oOC4suC4hOC4oV/guKHguLTguJbguLjguJnguLLguKLguJlf4LiB4Lij4LiB4LiO4Liy4LiE4LihX+C4quC4tOC4h+C4q+C4suC4hOC4oV/guIHguLHguJnguKLguLLguKLguJlf4LiV4Li44Lil4Liy4LiE4LihX+C4nuC4pOC4qOC4iOC4tOC4geC4suC4ouC4mV/guJjguLHguJnguKfguLLguITguKEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OlxuICAgICAgICAgICAgJ+C4oS7guIQuX+C4gS7guJ4uX+C4oeC4tS7guIQuX+C5gOC4oS7guKIuX+C4ni7guIQuX+C4oeC4tC7guKIuX+C4gS7guIQuX+C4qi7guIQuX+C4gS7guKIuX+C4lS7guIQuX+C4ni7guKIuX+C4mC7guIQuJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAn4Lit4Liy4LiX4Li04LiV4Lii4LmMX+C4iOC4seC4meC4l+C4o+C5jF/guK3guLHguIfguITguLLguKNf4Lie4Li44LiYX+C4nuC4pOC4q+C4seC4quC4muC4lOC4tV/guKjguLjguIHguKPguYxf4LmA4Liq4Liy4Lij4LmMJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4Lit4Liy4LiX4Li04LiV4Lii4LmMX+C4iOC4seC4meC4l+C4o+C5jF/guK3guLHguIfguITguLLguKNf4Lie4Li44LiYX+C4nuC4pOC4q+C4seC4ql/guKjguLjguIHguKPguYxf4LmA4Liq4Liy4Lij4LmMJy5zcGxpdCgnXycpLCAvLyB5ZXMsIHRocmVlIGNoYXJhY3RlcnMgZGlmZmVyZW5jZVxuICAgICAgICB3ZWVrZGF5c01pbjogJ+C4reC4si5f4LiILl/guK0uX+C4ni5f4Lie4LikLl/guKguX+C4qi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkg4LmA4Lin4Lil4LiyIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ+C4p+C4seC4mWRkZGTguJfguLXguYggRCBNTU1NIFlZWVkg4LmA4Lin4Lil4LiyIEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4LiB4LmI4Lit4LiZ4LmA4LiX4Li14LmI4Lii4LiHfOC4q+C4peC4seC4h+C5gOC4l+C4teC5iOC4ouC4hy8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ID09PSAn4Lir4Lil4Lix4LiH4LmA4LiX4Li14LmI4Lii4LiHJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C4geC5iOC4reC4meC5gOC4l+C4teC5iOC4ouC4hyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Lir4Lil4Lix4LiH4LmA4LiX4Li14LmI4Lii4LiHJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4Lin4Lix4LiZ4LiZ4Li14LmJIOC5gOC4p+C4peC4sl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vguJ7guKPguLjguYjguIfguJnguLXguYkg4LmA4Lin4Lil4LiyXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGRb4Lir4LiZ4LmJ4LiyIOC5gOC4p+C4peC4sl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vguYDguKHguLfguYjguK3guKfguLLguJnguJnguLXguYkg4LmA4Lin4Lil4LiyXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vguKfguLHguJldZGRkZFvguJfguLXguYjguYHguKXguYnguKcg4LmA4Lin4Lil4LiyXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ+C4reC4teC4gSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXPguJfguLXguYjguYHguKXguYnguKcnLFxuICAgICAgICAgICAgczogJ+C5hOC4oeC5iOC4geC4teC5iOC4p+C4tOC4meC4suC4l+C4tScsXG4gICAgICAgICAgICBzczogJyVkIOC4p+C4tOC4meC4suC4l+C4tScsXG4gICAgICAgICAgICBtOiAnMSDguJnguLLguJfguLUnLFxuICAgICAgICAgICAgbW06ICclZCDguJnguLLguJfguLUnLFxuICAgICAgICAgICAgaDogJzEg4LiK4Lix4LmI4Lin4LmC4Lih4LiHJyxcbiAgICAgICAgICAgIGhoOiAnJWQg4LiK4Lix4LmI4Lin4LmC4Lih4LiHJyxcbiAgICAgICAgICAgIGQ6ICcxIOC4p+C4seC4mScsXG4gICAgICAgICAgICBkZDogJyVkIOC4p+C4seC4mScsXG4gICAgICAgICAgICB3OiAnMSDguKrguLHguJvguJTguLLguKvguYwnLFxuICAgICAgICAgICAgd3c6ICclZCDguKrguLHguJvguJTguLLguKvguYwnLFxuICAgICAgICAgICAgTTogJzEg4LmA4LiU4Li34Lit4LiZJyxcbiAgICAgICAgICAgIE1NOiAnJWQg4LmA4LiU4Li34Lit4LiZJyxcbiAgICAgICAgICAgIHk6ICcxIOC4m+C4tScsXG4gICAgICAgICAgICB5eTogJyVkIOC4m+C4tScsXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGg7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVHVya21lbiBbdGtdXG4vLyEgYXV0aG9yIDogQXRhbXlyYXQgQWJkeXJhaG1hbm92IDogaHR0cHM6Ly9naXRodWIuY29tL2F0YW15cmF0YWJkeVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN1ZmZpeGVzID0ge1xuICAgICAgICAxOiBcIidpbmppXCIsXG4gICAgICAgIDU6IFwiJ2luamlcIixcbiAgICAgICAgODogXCInaW5qaVwiLFxuICAgICAgICA3MDogXCInaW5qaVwiLFxuICAgICAgICA4MDogXCInaW5qaVwiLFxuICAgICAgICAyOiBcIiduamlcIixcbiAgICAgICAgNzogXCInbmppXCIsXG4gICAgICAgIDIwOiBcIiduamlcIixcbiAgICAgICAgNTA6IFwiJ25qaVwiLFxuICAgICAgICAzOiBcIifDvG5qaVwiLFxuICAgICAgICA0OiBcIifDvG5qaVwiLFxuICAgICAgICAxMDA6IFwiJ8O8bmppXCIsXG4gICAgICAgIDY6IFwiJ25qeVwiLFxuICAgICAgICA5OiBcIid1bmp5XCIsXG4gICAgICAgIDEwOiBcIid1bmp5XCIsXG4gICAgICAgIDMwOiBcIid1bmp5XCIsXG4gICAgICAgIDYwOiBcIid5bmp5XCIsXG4gICAgICAgIDkwOiBcIid5bmp5XCIsXG4gICAgfTtcblxuICAgIHZhciB0ayA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RrJywge1xuICAgICAgICBtb250aHM6ICfDnWFud2FyX0Zld3JhbF9NYXJ0X0FwcmVsX01hw71fScO9dW5fScO9dWxfQXdndXN0X1NlbnTDvWFicl9Pa3TDvWFicl9Ob8O9YWJyX0Rla2Ficicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfDnWFuX0Zld19NYXJfQXByX01hw71fScO9bl9Jw71sX0F3Z19TZW5fT2t0X05vw71fRGVrJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ8OdZWvFn2VuYmVfRHXFn2VuYmVfU2nFn2VuYmVfw4dhcsWfZW5iZV9QZW7Fn2VuYmVfQW5uYV/FnmVuYmUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfDnWVrX0R1xZ9fU2nFn1/Dh2FyX1Blbl9Bbm5fxZ5lbicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfDnWtfRMWfX1PFn1/Dh3JfUG5fQW5fxZ5uJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2J1Z8O8biBzYWdhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tlcnRpciBzYWdhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdbaW5kaWtpXSBkZGRkIFtzYWdhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tkw7zDvW5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2dlw6dlbl0gZGRkZCBbc2FnYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMgc2/FiCcsXG4gICAgICAgICAgICBwYXN0OiAnJXMgw7bFiCcsXG4gICAgICAgICAgICBzOiAnYmlybsOkw6dlIHNla3VudCcsXG4gICAgICAgICAgICBtOiAnYmlyIG1pbnV0JyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXQnLFxuICAgICAgICAgICAgaDogJ2JpciBzYWdhdCcsXG4gICAgICAgICAgICBoaDogJyVkIHNhZ2F0JyxcbiAgICAgICAgICAgIGQ6ICdiaXIgZ8O8bicsXG4gICAgICAgICAgICBkZDogJyVkIGfDvG4nLFxuICAgICAgICAgICAgTTogJ2JpciBhw70nLFxuICAgICAgICAgICAgTU06ICclZCBhw70nLFxuICAgICAgICAgICAgeTogJ2JpciDDvXlsJyxcbiAgICAgICAgICAgIHl5OiAnJWQgw715bCcsXG4gICAgICAgIH0sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEbyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZSBmb3IgemVyb1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIFwiJ3VuanlcIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYiA9IChudW1iZXIgJSAxMDApIC0gYSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBudW1iZXIgPj0gMTAwID8gMTAwIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChzdWZmaXhlc1thXSB8fCBzdWZmaXhlc1tiXSB8fCBzdWZmaXhlc1tjXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0aztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBUYWdhbG9nIChQaGlsaXBwaW5lcykgW3RsLXBoXVxuLy8hIGF1dGhvciA6IERhbiBIYWdtYW4gOiBodHRwczovL2dpdGh1Yi5jb20vaGFnbWFuZGFuXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdGxQaCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RsLXBoJywge1xuICAgICAgICBtb250aHM6ICdFbmVyb19QZWJyZXJvX01hcnNvX0FicmlsX01heW9fSHVueW9fSHVseW9fQWdvc3RvX1NldHllbWJyZV9Pa3R1YnJlX05vYnllbWJyZV9EaXN5ZW1icmUnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnRW5lX1BlYl9NYXJfQWJyX01heV9IdW5fSHVsX0Fnb19TZXRfT2t0X05vYl9EaXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnTGluZ2dvX0x1bmVzX01hcnRlc19NaXllcmt1bGVzX0h1d2ViZXNfQml5ZXJuZXNfU2FiYWRvJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnTGluX0x1bl9NYXJfTWl5X0h1d19CaXlfU2FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ0xpX0x1X01hX01pX0h1X0JpX1NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ01NL0QvWVlZWScsXG4gICAgICAgICAgICBMTDogJ01NTU0gRCwgWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdNTU1NIEQsIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIE1NTU0gREQsIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ0xUIFtuZ2F5b25nIGFyYXddJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbQnVrYXMgbmddIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnTFQgW3NhIHN1c3Vub2QgbmFdIGRkZGQnLFxuICAgICAgICAgICAgbGFzdERheTogJ0xUIFtrYWhhcG9uXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ0xUIFtub29uZyBuYWthcmFhbmddIGRkZGQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdzYSBsb29iIG5nICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyBhbmcgbmFrYWxpcGFzJyxcbiAgICAgICAgICAgIHM6ICdpbGFuZyBzZWd1bmRvJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VndW5kbycsXG4gICAgICAgICAgICBtOiAnaXNhbmcgbWludXRvJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWludXRvJyxcbiAgICAgICAgICAgIGg6ICdpc2FuZyBvcmFzJyxcbiAgICAgICAgICAgIGhoOiAnJWQgb3JhcycsXG4gICAgICAgICAgICBkOiAnaXNhbmcgYXJhdycsXG4gICAgICAgICAgICBkZDogJyVkIGFyYXcnLFxuICAgICAgICAgICAgTTogJ2lzYW5nIGJ1d2FuJyxcbiAgICAgICAgICAgIE1NOiAnJWQgYnV3YW4nLFxuICAgICAgICAgICAgeTogJ2lzYW5nIHRhb24nLFxuICAgICAgICAgICAgeXk6ICclZCB0YW9uJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRsUGg7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogS2xpbmdvbiBbdGxoXVxuLy8hIGF1dGhvciA6IERvbWluaWthIEtydWsgOiBodHRwczovL2dpdGh1Yi5jb20vYW1hcmFudGhyb3NlXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgbnVtYmVyc05vdW5zID0gJ3BhZ2hfd2HigJlfY2hh4oCZX3dlal9sb1NfdmFnaF9qYXZfU29jaF9jaG9yZ2hfSHV0Jy5zcGxpdCgnXycpO1xuXG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlRnV0dXJlKG91dHB1dCkge1xuICAgICAgICB2YXIgdGltZSA9IG91dHB1dDtcbiAgICAgICAgdGltZSA9XG4gICAgICAgICAgICBvdXRwdXQuaW5kZXhPZignamFqJykgIT09IC0xXG4gICAgICAgICAgICAgICAgPyB0aW1lLnNsaWNlKDAsIC0zKSArICdsZVMnXG4gICAgICAgICAgICAgICAgOiBvdXRwdXQuaW5kZXhPZignamFyJykgIT09IC0xXG4gICAgICAgICAgICAgICAgPyB0aW1lLnNsaWNlKDAsIC0zKSArICd3YVEnXG4gICAgICAgICAgICAgICAgOiBvdXRwdXQuaW5kZXhPZignRElTJykgIT09IC0xXG4gICAgICAgICAgICAgICAgPyB0aW1lLnNsaWNlKDAsIC0zKSArICduZW0nXG4gICAgICAgICAgICAgICAgOiB0aW1lICsgJyBwSXEnO1xuICAgICAgICByZXR1cm4gdGltZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGVQYXN0KG91dHB1dCkge1xuICAgICAgICB2YXIgdGltZSA9IG91dHB1dDtcbiAgICAgICAgdGltZSA9XG4gICAgICAgICAgICBvdXRwdXQuaW5kZXhPZignamFqJykgIT09IC0xXG4gICAgICAgICAgICAgICAgPyB0aW1lLnNsaWNlKDAsIC0zKSArICdIdeKAmSdcbiAgICAgICAgICAgICAgICA6IG91dHB1dC5pbmRleE9mKCdqYXInKSAhPT0gLTFcbiAgICAgICAgICAgICAgICA/IHRpbWUuc2xpY2UoMCwgLTMpICsgJ3dlbidcbiAgICAgICAgICAgICAgICA6IG91dHB1dC5pbmRleE9mKCdESVMnKSAhPT0gLTFcbiAgICAgICAgICAgICAgICA/IHRpbWUuc2xpY2UoMCwgLTMpICsgJ2JlbidcbiAgICAgICAgICAgICAgICA6IHRpbWUgKyAnIHJldCc7XG4gICAgICAgIHJldHVybiB0aW1lO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIG51bWJlck5vdW4gPSBudW1iZXJBc05vdW4obnVtYmVyKTtcbiAgICAgICAgc3dpdGNoIChzdHJpbmcpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTm91biArICcgbHVwJztcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTm91biArICcgdHVwJztcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTm91biArICcgcmVwJztcbiAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTm91biArICcgamFqJztcbiAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTm91biArICcgamFyJztcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTm91biArICcgRElTJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG51bWJlckFzTm91bihudW1iZXIpIHtcbiAgICAgICAgdmFyIGh1bmRyZWQgPSBNYXRoLmZsb29yKChudW1iZXIgJSAxMDAwKSAvIDEwMCksXG4gICAgICAgICAgICB0ZW4gPSBNYXRoLmZsb29yKChudW1iZXIgJSAxMDApIC8gMTApLFxuICAgICAgICAgICAgb25lID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICB3b3JkID0gJyc7XG4gICAgICAgIGlmIChodW5kcmVkID4gMCkge1xuICAgICAgICAgICAgd29yZCArPSBudW1iZXJzTm91bnNbaHVuZHJlZF0gKyAndmF0bGgnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0ZW4gPiAwKSB7XG4gICAgICAgICAgICB3b3JkICs9ICh3b3JkICE9PSAnJyA/ICcgJyA6ICcnKSArIG51bWJlcnNOb3Vuc1t0ZW5dICsgJ21hSCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9uZSA+IDApIHtcbiAgICAgICAgICAgIHdvcmQgKz0gKHdvcmQgIT09ICcnID8gJyAnIDogJycpICsgbnVtYmVyc05vdW5zW29uZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHdvcmQgPT09ICcnID8gJ3BhZ2gnIDogd29yZDtcbiAgICB9XG5cbiAgICB2YXIgdGxoID0gbW9tZW50LmRlZmluZUxvY2FsZSgndGxoJywge1xuICAgICAgICBtb250aHM6ICd0ZXJh4oCZIGphciB3YeKAmV90ZXJh4oCZIGphciBjaGHigJlfdGVyYeKAmSBqYXIgd2VqX3RlcmHigJkgamFyIGxvU190ZXJh4oCZIGphciB2YWdoX3RlcmHigJkgamFyIGphdl90ZXJh4oCZIGphciBTb2NoX3RlcmHigJkgamFyIGNob3JnaF90ZXJh4oCZIGphciBIdXRfdGVyYeKAmSBqYXIgd2HigJltYUhfdGVyYeKAmSBqYXIgd2HigJltYUggd2HigJlfdGVyYeKAmSBqYXIgd2HigJltYUggY2hh4oCZJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdqYXIgd2HigJlfamFyIGNoYeKAmV9qYXIgd2VqX2phciBsb1NfamFyIHZhZ2hfamFyIGphdl9qYXIgU29jaF9qYXIgY2hvcmdoX2phciBIdXRfamFyIHdh4oCZbWFIX2phciB3YeKAmW1hSCB3YeKAmV9qYXIgd2HigJltYUggY2hh4oCZJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnbG9qbUl0amFqX0RhU2phal9wb3ZqYWpfZ2hJdGxoamFqX2xvZ2hqYWpfYnVxamFqX2doSW5qYWonLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6XG4gICAgICAgICAgICAnbG9qbUl0amFqX0RhU2phal9wb3ZqYWpfZ2hJdGxoamFqX2xvZ2hqYWpfYnVxamFqX2doSW5qYWonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOlxuICAgICAgICAgICAgJ2xvam1JdGphal9EYVNqYWpfcG92amFqX2doSXRsaGphal9sb2doamFqX2J1cWphal9naEluamFqJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0RhSGphal0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1t3YeKAmWxlU10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdMTEwnLFxuICAgICAgICAgICAgbGFzdERheTogJ1t3YeKAmUh14oCZXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ0xMTCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogdHJhbnNsYXRlRnV0dXJlLFxuICAgICAgICAgICAgcGFzdDogdHJhbnNsYXRlUGFzdCxcbiAgICAgICAgICAgIHM6ICdwdVMgbHVwJyxcbiAgICAgICAgICAgIHNzOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtOiAnd2HigJkgdHVwJyxcbiAgICAgICAgICAgIG1tOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoOiAnd2HigJkgcmVwJyxcbiAgICAgICAgICAgIGhoOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkOiAnd2HigJkgamFqJyxcbiAgICAgICAgICAgIGRkOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNOiAnd2HigJkgamFyJyxcbiAgICAgICAgICAgIE1NOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5OiAnd2HigJkgRElTJyxcbiAgICAgICAgICAgIHl5OiB0cmFuc2xhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWw6ICclZC4nLFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGxoO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFR1cmtpc2ggW3RyXVxuLy8hIGF1dGhvcnMgOiBFcmhhbiBHdW5kb2dhbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9lcmhhbmd1bmRvZ2FuLFxuLy8hICAgICAgICAgICBCdXJhayBZacSfaXQgS2F5YTogaHR0cHM6Ly9naXRodWIuY29tL0JZS1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHN1ZmZpeGVzID0ge1xuICAgICAgICAxOiBcIidpbmNpXCIsXG4gICAgICAgIDU6IFwiJ2luY2lcIixcbiAgICAgICAgODogXCInaW5jaVwiLFxuICAgICAgICA3MDogXCInaW5jaVwiLFxuICAgICAgICA4MDogXCInaW5jaVwiLFxuICAgICAgICAyOiBcIiduY2lcIixcbiAgICAgICAgNzogXCInbmNpXCIsXG4gICAgICAgIDIwOiBcIiduY2lcIixcbiAgICAgICAgNTA6IFwiJ25jaVwiLFxuICAgICAgICAzOiBcIifDvG5jw7xcIixcbiAgICAgICAgNDogXCInw7xuY8O8XCIsXG4gICAgICAgIDEwMDogXCInw7xuY8O8XCIsXG4gICAgICAgIDY6IFwiJ25jxLFcIixcbiAgICAgICAgOTogXCIndW5jdVwiLFxuICAgICAgICAxMDogXCIndW5jdVwiLFxuICAgICAgICAzMDogXCIndW5jdVwiLFxuICAgICAgICA2MDogXCInxLFuY8SxXCIsXG4gICAgICAgIDkwOiBcIifEsW5jxLFcIixcbiAgICB9O1xuXG4gICAgdmFyIHRyID0gbW9tZW50LmRlZmluZUxvY2FsZSgndHInLCB7XG4gICAgICAgIG1vbnRoczogJ09jYWtfxZ51YmF0X01hcnRfTmlzYW5fTWF5xLFzX0hhemlyYW5fVGVtbXV6X0HEn3VzdG9zX0V5bMO8bF9Fa2ltX0thc8SxbV9BcmFsxLFrJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ09jYV/FnnViX01hcl9OaXNfTWF5X0hhel9UZW1fQcSfdV9FeWxfRWtpX0thc19BcmEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAnUGF6YXJfUGF6YXJ0ZXNpX1NhbMSxX8OHYXLFn2FtYmFfUGVyxZ9lbWJlX0N1bWFfQ3VtYXJ0ZXNpJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnUGF6X1B6dF9TYWxfw4dhcl9QZXJfQ3VtX0NtdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdQel9QdF9TYV/Dh2FfUGVfQ3VfQ3QnLnNwbGl0KCdfJyksXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnw7bDticgOiAnw5bDlic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ8O2cycgOiAnw5ZTJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL8O2w7Z8w5bDlnzDtnN8w5ZTLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgPT09ICfDtnMnIHx8IGlucHV0ID09PSAnw5ZTJztcbiAgICAgICAgfSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tidWfDvG4gc2FhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1t5YXLEsW4gc2FhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdbZ2VsZWNla10gZGRkZCBbc2FhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tkw7xuXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tnZcOnZW5dIGRkZGQgW3NhYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMgc29ucmEnLFxuICAgICAgICAgICAgcGFzdDogJyVzIMO2bmNlJyxcbiAgICAgICAgICAgIHM6ICdiaXJrYcOnIHNhbml5ZScsXG4gICAgICAgICAgICBzczogJyVkIHNhbml5ZScsXG4gICAgICAgICAgICBtOiAnYmlyIGRha2lrYScsXG4gICAgICAgICAgICBtbTogJyVkIGRha2lrYScsXG4gICAgICAgICAgICBoOiAnYmlyIHNhYXQnLFxuICAgICAgICAgICAgaGg6ICclZCBzYWF0JyxcbiAgICAgICAgICAgIGQ6ICdiaXIgZ8O8bicsXG4gICAgICAgICAgICBkZDogJyVkIGfDvG4nLFxuICAgICAgICAgICAgdzogJ2JpciBoYWZ0YScsXG4gICAgICAgICAgICB3dzogJyVkIGhhZnRhJyxcbiAgICAgICAgICAgIE06ICdiaXIgYXknLFxuICAgICAgICAgICAgTU06ICclZCBheScsXG4gICAgICAgICAgICB5OiAnYmlyIHnEsWwnLFxuICAgICAgICAgICAgeXk6ICclZCB5xLFsJyxcbiAgICAgICAgfSxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RvJzpcbiAgICAgICAgICAgICAgICBjYXNlICdERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlIGZvciB6ZXJvXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgXCInxLFuY8SxXCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSAobnVtYmVyICUgMTAwKSAtIGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjID0gbnVtYmVyID49IDEwMCA/IDEwMCA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAoc3VmZml4ZXNbYV0gfHwgc3VmZml4ZXNbYl0gfHwgc3VmZml4ZXNbY10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdHI7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVGFsb3NzYW4gW3R6bF1cbi8vISBhdXRob3IgOiBSb2JpbiB2YW4gZGVyIFZsaWV0IDogaHR0cHM6Ly9naXRodWIuY29tL3JvYmluMHZhbjBkZXIwdlxuLy8hIGF1dGhvciA6IEl1c3TDrCBDYW51blxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgLy8gQWZ0ZXIgdGhlIHllYXIgdGhlcmUgc2hvdWxkIGJlIGEgc2xhc2ggYW5kIHRoZSBhbW91bnQgb2YgeWVhcnMgc2luY2UgRGVjZW1iZXIgMjYsIDE5NzkgaW4gUm9tYW4gbnVtZXJhbHMuXG4gICAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdG9vIGRpZmZpY3VsdCAobWF5YmUgZXZlbiBpbXBvc3NpYmxlKSB0byBhZGQuXG4gICAgdmFyIHR6bCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3R6bCcsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyX0ZldnJhZ2xoX01hcsOnX0F2csOvdV9NYWlfR8O8bl9KdWxpYV9HdXNjaHRfU2V0ZW12YXJfTGlzdG9ww6R0c19Ob2VtdmFyX1plY2VtdmFyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ0phbl9GZXZfTWFyX0F2cl9NYWlfR8O8bl9KdWxfR3VzX1NldF9MaXNfTm9lX1plYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdTw7psYWRpX0zDum5lw6dpX01haXR6aV9Nw6FyY3VyaV9YaMO6YWRpX1Zpw6luZXLDp2lfU8OhdHVyaScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1PDumxfTMO6bl9NYWlfTcOhcl9YaMO6X1Zpw6lfU8OhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTw7pfTMO6X01hX03DoV9YaF9WaV9Tw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hILm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hILm1tLnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBbZGFsbGFzXSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gW2RhbGxhc10gWVlZWSBISC5tbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgW2xpXSBELiBNTU1NIFtkYWxsYXNdIFlZWVkgSEgubW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvZFxcJ298ZFxcJ2EvaSxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gXCJkJ29cIiA9PT0gaW5wdXQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzID4gMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/IFwiZCdvXCIgOiBcIkQnT1wiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/IFwiZCdhXCIgOiBcIkQnQVwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tveGhpIMOgXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2RlbcOgIMOgXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW8OgXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2llaXJpIMOgXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tzw7xyIGVsXSBkZGRkIFtsYXN0ZXUgw6BdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnb3NwcmVpICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICdqYSVzJyxcbiAgICAgICAgICAgIHM6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBzczogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGg6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoaDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGQ6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE06IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNTTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHk6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5eTogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICBzOiBbJ3ZpZW5zYXMgc2VjdW5kcycsIFwiJ2llbnNhcyBzZWN1bmRzXCJdLFxuICAgICAgICAgICAgc3M6IFtudW1iZXIgKyAnIHNlY3VuZHMnLCAnJyArIG51bWJlciArICcgc2VjdW5kcyddLFxuICAgICAgICAgICAgbTogW1wiJ24gbcOtdXRcIiwgXCInaWVucyBtw611dFwiXSxcbiAgICAgICAgICAgIG1tOiBbbnVtYmVyICsgJyBtw611dHMnLCAnJyArIG51bWJlciArICcgbcOtdXRzJ10sXG4gICAgICAgICAgICBoOiBbXCInbiDDvm9yYVwiLCBcIidpZW5zYSDDvm9yYVwiXSxcbiAgICAgICAgICAgIGhoOiBbbnVtYmVyICsgJyDDvm9yYXMnLCAnJyArIG51bWJlciArICcgw75vcmFzJ10sXG4gICAgICAgICAgICBkOiBbXCInbiB6aXVhXCIsIFwiJ2llbnNhIHppdWFcIl0sXG4gICAgICAgICAgICBkZDogW251bWJlciArICcgeml1YXMnLCAnJyArIG51bWJlciArICcgeml1YXMnXSxcbiAgICAgICAgICAgIE06IFtcIiduIG1lc1wiLCBcIidpZW5zIG1lc1wiXSxcbiAgICAgICAgICAgIE1NOiBbbnVtYmVyICsgJyBtZXNlbicsICcnICsgbnVtYmVyICsgJyBtZXNlbiddLFxuICAgICAgICAgICAgeTogW1wiJ24gYXJcIiwgXCInaWVucyBhclwiXSxcbiAgICAgICAgICAgIHl5OiBbbnVtYmVyICsgJyBhcnMnLCAnJyArIG51bWJlciArICcgYXJzJ10sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBpc0Z1dHVyZVxuICAgICAgICAgICAgPyBmb3JtYXRba2V5XVswXVxuICAgICAgICAgICAgOiB3aXRob3V0U3VmZml4XG4gICAgICAgICAgICA/IGZvcm1hdFtrZXldWzBdXG4gICAgICAgICAgICA6IGZvcm1hdFtrZXldWzFdO1xuICAgIH1cblxuICAgIHJldHVybiB0emw7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQ2VudHJhbCBBdGxhcyBUYW1hemlnaHQgTGF0aW4gW3R6bS1sYXRuXVxuLy8hIGF1dGhvciA6IEFiZGVsIFNhaWQgOiBodHRwczovL2dpdGh1Yi5jb20vYWJkZWxzYWlkXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdHptTGF0biA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3R6bS1sYXRuJywge1xuICAgICAgICBtb250aHM6ICdpbm5heXJfYnLLpGF5csukX21hcsukc8ukX2licmlyX21heXl3X3l3bnl3X3l3bHl3el/Jo3fFoXRfxaF3dGFuYmlyX2t0y6R3YnLLpF9ud3dhbmJpcl9kd2puYmlyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdpbm5heXJfYnLLpGF5csukX21hcsukc8ukX2licmlyX21heXl3X3l3bnl3X3l3bHl3el/Jo3fFoXRfxaF3dGFuYmlyX2t0y6R3YnLLpF9ud3dhbmJpcl9kd2puYmlyJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAnYXNhbWFzX2F5bmFzX2FzaW5hc19ha3Jhc19ha3dhc19hc2ltd2FzX2FzaeG4jXlhcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ2FzYW1hc19heW5hc19hc2luYXNfYWtyYXNfYWt3YXNfYXNpbXdhc19hc2nhuI15YXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnYXNhbWFzX2F5bmFzX2FzaW5hc19ha3Jhc19ha3dhc19hc2ltd2FzX2FzaeG4jXlhcycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2FzZGtoIGddIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbYXNrYSBnXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2ddIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbYXNzYW50IGddIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbZ10gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdkYWRraCBzIHlhbiAlcycsXG4gICAgICAgICAgICBwYXN0OiAneWFuICVzJyxcbiAgICAgICAgICAgIHM6ICdpbWlrJyxcbiAgICAgICAgICAgIHNzOiAnJWQgaW1paycsXG4gICAgICAgICAgICBtOiAnbWludeG4jScsXG4gICAgICAgICAgICBtbTogJyVkIG1pbnXhuI0nLFxuICAgICAgICAgICAgaDogJ3NhyZthJyxcbiAgICAgICAgICAgIGhoOiAnJWQgdGFzc2HJm2luJyxcbiAgICAgICAgICAgIGQ6ICdhc3MnLFxuICAgICAgICAgICAgZGQ6ICclZCBvc3NhbicsXG4gICAgICAgICAgICBNOiAnYXlvd3InLFxuICAgICAgICAgICAgTU06ICclZCBpeXlpcm4nLFxuICAgICAgICAgICAgeTogJ2FzZ2FzJyxcbiAgICAgICAgICAgIHl5OiAnJWQgaXNnYXNuJyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiA2LCAvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiAxMiwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0em1MYXRuO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IENlbnRyYWwgQXRsYXMgVGFtYXppZ2h0IFt0em1dXG4vLyEgYXV0aG9yIDogQWJkZWwgU2FpZCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hYmRlbHNhaWRcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB0em0gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0em0nLCB7XG4gICAgICAgIG1vbnRoczogJ+K1ieK1j+K1j+K0sOK1ouK1lF/itLHitZXitLDitaLitZVf4rWO4rSw4rWV4rWaX+K1ieK0seK1lOK1ieK1lF/itY7itLDitaLitaLitZNf4rWi4rWT4rWP4rWi4rWTX+K1ouK1k+K1jeK1ouK1k+K1o1/itZbitZPitZvitZxf4rWb4rWT4rWc4rSw4rWP4rSx4rWJ4rWUX+K0veK1n+K1k+K0seK1lV/itY/itZPitaHitLDitY/itLHitYnitZRf4rS34rWT4rWK4rWP4rSx4rWJ4rWUJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICfitYnitY/itY/itLDitaLitZRf4rSx4rWV4rSw4rWi4rWVX+K1juK0sOK1leK1ml/itYnitLHitZTitYnitZRf4rWO4rSw4rWi4rWi4rWTX+K1ouK1k+K1j+K1ouK1k1/itaLitZPitY3itaLitZPitaNf4rWW4rWT4rWb4rWcX+K1m+K1k+K1nOK0sOK1j+K0seK1ieK1lF/itL3itZ/itZPitLHitZVf4rWP4rWT4rWh4rSw4rWP4rSx4rWJ4rWUX+K0t+K1k+K1iuK1j+K0seK1ieK1lCcuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ+K0sOK1meK0sOK1juK0sOK1mV/itLDitaLitY/itLDitZlf4rSw4rWZ4rWJ4rWP4rSw4rWZX+K0sOK0veK1lOK0sOK1mV/itLDitL3itaHitLDitZlf4rSw4rWZ4rWJ4rWO4rWh4rSw4rWZX+K0sOK1meK1ieK0ueK1ouK0sOK1mScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+K0sOK1meK0sOK1juK0sOK1mV/itLDitaLitY/itLDitZlf4rSw4rWZ4rWJ4rWP4rSw4rWZX+K0sOK0veK1lOK0sOK1mV/itLDitL3itaHitLDitZlf4rSw4rWZ4rWJ4rWO4rWh4rSw4rWZX+K0sOK1meK1ieK0ueK1ouK0sOK1mScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfitLDitZnitLDitY7itLDitZlf4rSw4rWi4rWP4rSw4rWZX+K0sOK1meK1ieK1j+K0sOK1mV/itLDitL3itZTitLDitZlf4rSw4rS94rWh4rSw4rWZX+K0sOK1meK1ieK1juK1oeK0sOK1mV/itLDitZnitYnitLnitaLitLDitZknLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vitLDitZnitLfitYUg4rS0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+K0sOK1meK0veK0sCDitLRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb4rS0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+K0sOK1muK0sOK1j+K1nCDitLRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb4rS0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ+K0t+K0sOK0t+K1hSDitZkg4rWi4rSw4rWPICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICfitaLitLDitY8gJXMnLFxuICAgICAgICAgICAgczogJ+K1ieK1juK1ieK0vScsXG4gICAgICAgICAgICBzczogJyVkIOK1ieK1juK1ieK0vScsXG4gICAgICAgICAgICBtOiAn4rWO4rWJ4rWP4rWT4rS6JyxcbiAgICAgICAgICAgIG1tOiAnJWQg4rWO4rWJ4rWP4rWT4rS6JyxcbiAgICAgICAgICAgIGg6ICfitZnitLDitYTitLAnLFxuICAgICAgICAgICAgaGg6ICclZCDitZzitLDitZnitZnitLDitYTitYnitY8nLFxuICAgICAgICAgICAgZDogJ+K0sOK1meK1mScsXG4gICAgICAgICAgICBkZDogJyVkIG/itZnitZnitLDitY8nLFxuICAgICAgICAgICAgTTogJ+K0sOK1om/itZPitZQnLFxuICAgICAgICAgICAgTU06ICclZCDitYnitaLitaLitYnitZTitY8nLFxuICAgICAgICAgICAgeTogJ+K0sOK1meK0s+K0sOK1mScsXG4gICAgICAgICAgICB5eTogJyVkIOK1ieK1meK0s+K0sOK1meK1jycsXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogNiwgLy8gU2F0dXJkYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogMTIsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdHptO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFV5Z2h1ciAoQ2hpbmEpIFt1Zy1jbl1cbi8vISBhdXRob3I6IGJveWFxIDogaHR0cHM6Ly9naXRodWIuY29tL2JveWFxXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdWdDbiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3VnLWNuJywge1xuICAgICAgICBtb250aHM6ICfZitin2Ybbi9in2LFf2YHbkNuL2LHYp9mEX9mF2KfYsdiqX9im2KfZvtix25DZhF/Zhdin2Ypf2KbZidmK24fZhl/YptmJ2Yrbh9mEX9im2Kfbi9i624fYs9iqX9iz25DZhtiq25XYqNmJ2LFf2KbbhtmD2Krbldio2YnYsV/ZhtmI2YrYp9io2YnYsV/Yr9uQ2YPYp9io2YnYsScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6XG4gICAgICAgICAgICAn2YrYp9mG24vYp9ixX9mB25Dbi9ix2KfZhF/Zhdin2LHYql/Yptin2b7YsduQ2YRf2YXYp9mKX9im2YnZituH2YZf2KbZidmK24fZhF/Yptin24vYutuH2LPYql/Ys9uQ2YbYqtuV2KjZidixX9im24bZg9iq25XYqNmJ2LFf2YbZiNmK2KfYqNmJ2LFf2K/bkNmD2KfYqNmJ2LEnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfZituV2YPYtNuV2YbYqNuVX9iv24jYtNuV2YbYqNuVX9iz25XZiti025XZhtio25Vf2obYp9ix2LTbldmG2KjblV/ZvtuV2YrYtNuV2YbYqNuVX9is24jZhduVX9i025XZhtio25UnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfZituVX9iv24hf2LPblV/ahtinX9m+25Vf2KzbiF/YtNuVJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9mK25Vf2K/biF/Ys9uVX9qG2Kdf2b7blV/YrNuIX9i025UnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIExMOiAnWVlZWS3ZitmJ2YTZiU0t2KbYp9mK2YbZidqtRC3Zg9uI2YbZiScsXG4gICAgICAgICAgICBMTEw6ICdZWVlZLdmK2YnZhNmJTS3Yptin2YrZhtmJ2q1ELdmD24jZhtmJ2IwgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGTYjCBZWVlZLdmK2YnZhNmJTS3Yptin2YrZhtmJ2q1ELdmD24jZhtmJ2IwgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv2YrbkNix2YnZhSDZg9uQ2obblXzYs9uV2r7bldixfNqG24jYtNiq2YnZhiDYqNuH2LHbh9mGfNqG24jYtHzahtuI2LTYqtmJ2YYg2YPbkNmK2YnZhnzZg9uV2oYvLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfZituQ2LHZidmFINmD25DahtuVJyB8fFxuICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn2LPbldq+25XYsScgfHxcbiAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ9qG24jYtNiq2YnZhiDYqNuH2LHbh9mGJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn2obbiNi02KrZidmGINmD25DZitmJ2YYnIHx8IG1lcmlkaWVtID09PSAn2YPbldqGJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIHZhciBobSA9IGhvdXIgKiAxMDAgKyBtaW51dGU7XG4gICAgICAgICAgICBpZiAoaG0gPCA2MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9mK25DYsdmJ2YUg2YPbkNqG25UnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDkwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2LPbldq+25XYsSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTEzMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2obbiNi02KrZidmGINio24fYsduH2YYnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDEyMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9qG24jYtCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTgwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2obbiNi02KrZidmGINmD25DZitmJ2YYnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9mD25Xahic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9io24jar9uI2YYg2LPYp9im25XYql0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vYptuV2KrblSDYs9in2KbbldiqXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vZg9uQ2YTbldix2YPZiV0gZGRkZCBb2LPYp9im25XYql0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYqtuG2YbbiNqv24jZhl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb2KbYp9mE2K/ZidmG2YLZiV0gZGRkZCBb2LPYp9im25XYql0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDZg9uQ2YrZidmGJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDYqNuH2LHbh9mGJyxcbiAgICAgICAgICAgIHM6ICfZhtuV2obahtuVINiz25DZg9mI2YbYqicsXG4gICAgICAgICAgICBzczogJyVkINiz25DZg9mI2YbYqicsXG4gICAgICAgICAgICBtOiAn2KjZidixINmF2YnZhtuH2KonLFxuICAgICAgICAgICAgbW06ICclZCDZhdmJ2Ybbh9iqJyxcbiAgICAgICAgICAgIGg6ICfYqNmJ2LEg2LPYp9im25XYqicsXG4gICAgICAgICAgICBoaDogJyVkINiz2KfYptuV2KonLFxuICAgICAgICAgICAgZDogJ9io2YnYsSDZg9uI2YYnLFxuICAgICAgICAgICAgZGQ6ICclZCDZg9uI2YYnLFxuICAgICAgICAgICAgTTogJ9io2YnYsSDYptin2YonLFxuICAgICAgICAgICAgTU06ICclZCDYptin2YonLFxuICAgICAgICAgICAgeTogJ9io2YnYsSDZitmJ2YQnLFxuICAgICAgICAgICAgeXk6ICclZCDZitmJ2YQnLFxuICAgICAgICB9LFxuXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSgt2YPbiNmG2Yl8Ldim2KfZinwt2r7bldm+2KrblSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct2YPbiNmG2YknO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3avtuV2b7YqtuVJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIC8vIEdCL1QgNzQwOC0xOTk044CK5pWw5o2u5YWD5ZKM5Lqk5o2i5qC85byPwrfkv6Hmga/kuqTmjaLCt+aXpeacn+WSjOaXtumXtOihqOekuuazleOAi+S4jklTTyA4NjAxOjE5ODjnrYnmlYhcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDFzdCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB1Z0NuO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFVrcmFpbmlhbiBbdWtdXG4vLyEgYXV0aG9yIDogemVtbGFuaW4gOiBodHRwczovL2dpdGh1Yi5jb20vemVtbGFuaW5cbi8vISBBdXRob3IgOiBNZW5lbGlvbiBFbGVuc8O6bGUgOiBodHRwczovL2dpdGh1Yi5jb20vT2lyZVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgZnVuY3Rpb24gcGx1cmFsKHdvcmQsIG51bSkge1xuICAgICAgICB2YXIgZm9ybXMgPSB3b3JkLnNwbGl0KCdfJyk7XG4gICAgICAgIHJldHVybiBudW0gJSAxMCA9PT0gMSAmJiBudW0gJSAxMDAgIT09IDExXG4gICAgICAgICAgICA/IGZvcm1zWzBdXG4gICAgICAgICAgICA6IG51bSAlIDEwID49IDIgJiYgbnVtICUgMTAgPD0gNCAmJiAobnVtICUgMTAwIDwgMTAgfHwgbnVtICUgMTAwID49IDIwKVxuICAgICAgICAgICAgPyBmb3Jtc1sxXVxuICAgICAgICAgICAgOiBmb3Jtc1syXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lV2l0aFBsdXJhbChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgc3M6IHdpdGhvdXRTdWZmaXggPyAn0YHQtdC60YPQvdC00LBf0YHQtdC60YPQvdC00Lhf0YHQtdC60YPQvdC0JyA6ICfRgdC10LrRg9C90LTRg1/RgdC10LrRg9C90LTQuF/RgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgbW06IHdpdGhvdXRTdWZmaXggPyAn0YXQstC40LvQuNC90LBf0YXQstC40LvQuNC90Lhf0YXQstC40LvQuNC9JyA6ICfRhdCy0LjQu9C40L3Rg1/RhdCy0LjQu9C40L3QuF/RhdCy0LjQu9C40L0nLFxuICAgICAgICAgICAgaGg6IHdpdGhvdXRTdWZmaXggPyAn0LPQvtC00LjQvdCwX9Cz0L7QtNC40L3QuF/Qs9C+0LTQuNC9JyA6ICfQs9C+0LTQuNC90YNf0LPQvtC00LjQvdC4X9Cz0L7QtNC40L0nLFxuICAgICAgICAgICAgZGQ6ICfQtNC10L3RjF/QtNC90ZZf0LTQvdGW0LInLFxuICAgICAgICAgICAgTU06ICfQvNGW0YHRj9GG0Yxf0LzRltGB0Y/RhtGWX9C80ZbRgdGP0YbRltCyJyxcbiAgICAgICAgICAgIHl5OiAn0YDRltC6X9GA0L7QutC4X9GA0L7QutGW0LInLFxuICAgICAgICB9O1xuICAgICAgICBpZiAoa2V5ID09PSAnbScpIHtcbiAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ9GF0LLQuNC70LjQvdCwJyA6ICfRhdCy0LjQu9C40L3Rgyc7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnaCcpIHtcbiAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ9Cz0L7QtNC40L3QsCcgOiAn0LPQvtC00LjQvdGDJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnICcgKyBwbHVyYWwoZm9ybWF0W2tleV0sICtudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHdlZWtkYXlzQ2FzZVJlcGxhY2UobSwgZm9ybWF0KSB7XG4gICAgICAgIHZhciB3ZWVrZGF5cyA9IHtcbiAgICAgICAgICAgICAgICBub21pbmF0aXZlOlxuICAgICAgICAgICAgICAgICAgICAn0L3QtdC00ZbQu9GPX9C/0L7QvdC10LTRltC70L7Qul/QstGW0LLRgtC+0YDQvtC6X9GB0LXRgNC10LTQsF/Rh9C10YLQstC10YBf0L/igJnRj9GC0L3QuNGG0Y9f0YHRg9Cx0L7RgtCwJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGFjY3VzYXRpdmU6XG4gICAgICAgICAgICAgICAgICAgICfQvdC10LTRltC70Y5f0L/QvtC90LXQtNGW0LvQvtC6X9Cy0ZbQstGC0L7RgNC+0Lpf0YHQtdGA0LXQtNGDX9GH0LXRgtCy0LXRgF/Qv+KAmdGP0YLQvdC40YbRjl/RgdGD0LHQvtGC0YMnLnNwbGl0KFxuICAgICAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZ2VuaXRpdmU6XG4gICAgICAgICAgICAgICAgICAgICfQvdC10LTRltC70ZZf0L/QvtC90LXQtNGW0LvQutCwX9Cy0ZbQstGC0L7RgNC60LBf0YHQtdGA0LXQtNC4X9GH0LXRgtCy0LXRgNCz0LBf0L/igJnRj9GC0L3QuNGG0ZZf0YHRg9Cx0L7RgtC4Jy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5vdW5DYXNlO1xuXG4gICAgICAgIGlmIChtID09PSB0cnVlKSB7XG4gICAgICAgICAgICByZXR1cm4gd2Vla2RheXNbJ25vbWluYXRpdmUnXVxuICAgICAgICAgICAgICAgIC5zbGljZSgxLCA3KVxuICAgICAgICAgICAgICAgIC5jb25jYXQod2Vla2RheXNbJ25vbWluYXRpdmUnXS5zbGljZSgwLCAxKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICByZXR1cm4gd2Vla2RheXNbJ25vbWluYXRpdmUnXTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5vdW5DYXNlID0gLyhcXFtb0JLQstCj0YNdXFxdKSA/ZGRkZC8udGVzdChmb3JtYXQpXG4gICAgICAgICAgICA/ICdhY2N1c2F0aXZlJ1xuICAgICAgICAgICAgOiAvXFxbPyg/OtC80LjQvdGD0LvQvtGXfNC90LDRgdGC0YPQv9C90L7Rlyk/ID9cXF0gP2RkZGQvLnRlc3QoZm9ybWF0KVxuICAgICAgICAgICAgPyAnZ2VuaXRpdmUnXG4gICAgICAgICAgICA6ICdub21pbmF0aXZlJztcbiAgICAgICAgcmV0dXJuIHdlZWtkYXlzW25vdW5DYXNlXVttLmRheSgpXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJvY2Vzc0hvdXJzRnVuY3Rpb24oc3RyKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyICsgJ9C+JyArICh0aGlzLmhvdXJzKCkgPT09IDExID8gJ9CxJyA6ICcnKSArICddIExUJztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgdWsgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd1aycsIHtcbiAgICAgICAgbW9udGhzOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICfRgdGW0YfQvdGPX9C70Y7RgtC+0LPQvl/QsdC10YDQtdC30L3Rj1/QutCy0ZbRgtC90Y9f0YLRgNCw0LLQvdGPX9GH0LXRgNCy0L3Rj1/Qu9C40L/QvdGPX9GB0LXRgNC/0L3Rj1/QstC10YDQtdGB0L3Rj1/QttC+0LLRgtC90Y9f0LvQuNGB0YLQvtC/0LDQtNCwX9Cz0YDRg9C00L3Rjycuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhbmRhbG9uZTpcbiAgICAgICAgICAgICAgICAn0YHRltGH0LXQvdGMX9C70Y7RgtC40Llf0LHQtdGA0LXQt9C10L3RjF/QutCy0ZbRgtC10L3RjF/RgtGA0LDQstC10L3RjF/Rh9C10YDQstC10L3RjF/Qu9C40L/QtdC90Yxf0YHQtdGA0L/QtdC90Yxf0LLQtdGA0LXRgdC10L3RjF/QttC+0LLRgtC10L3RjF/Qu9C40YHRgtC+0L/QsNC0X9Cz0YDRg9C00LXQvdGMJy5zcGxpdChcbiAgICAgICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfRgdGW0Ydf0LvRjtGCX9Cx0LXRgF/QutCy0ZbRgl/RgtGA0LDQsl/Rh9C10YDQsl/Qu9C40L9f0YHQtdGA0L9f0LLQtdGAX9C20L7QstGCX9C70LjRgdGCX9Cz0YDRg9C0Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogd2Vla2RheXNDYXNlUmVwbGFjZSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9C90LRf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn0L3QtF/Qv9C9X9Cy0YJf0YHRgF/Rh9GCX9C/0YJf0YHQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWSDRgC4nLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkg0YAuLCBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkg0YAuLCBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiBwcm9jZXNzSG91cnNGdW5jdGlvbignW9Ch0YzQvtCz0L7QtNC90ZYgJyksXG4gICAgICAgICAgICBuZXh0RGF5OiBwcm9jZXNzSG91cnNGdW5jdGlvbignW9CX0LDQstGC0YDQsCAnKSxcbiAgICAgICAgICAgIGxhc3REYXk6IHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0JLRh9C+0YDQsCAnKSxcbiAgICAgICAgICAgIG5leHRXZWVrOiBwcm9jZXNzSG91cnNGdW5jdGlvbignW9CjXSBkZGRkIFsnKSxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9jZXNzSG91cnNGdW5jdGlvbignW9Cc0LjQvdGD0LvQvtGXXSBkZGRkIFsnKS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0JzQuNC90YPQu9C+0LPQvl0gZGRkZCBbJykuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfQt9CwICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDRgtC+0LzRgycsXG4gICAgICAgICAgICBzOiAn0LTQtdC60ZbQu9GM0LrQsCDRgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgc3M6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBtOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgbW06IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBoOiAn0LPQvtC00LjQvdGDJyxcbiAgICAgICAgICAgIGhoOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgZDogJ9C00LXQvdGMJyxcbiAgICAgICAgICAgIGRkOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgTTogJ9C80ZbRgdGP0YbRjCcsXG4gICAgICAgICAgICBNTTogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIHk6ICfRgNGW0LonLFxuICAgICAgICAgICAgeXk6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgIH0sXG4gICAgICAgIC8vIE0uIEUuOiB0aG9zZSB0d28gYXJlIHZpcnR1YWxseSB1bnVzZWQgYnV0IGEgdXNlciBtaWdodCB3YW50IHRvIGltcGxlbWVudCB0aGVtIGZvciBoaXMvaGVyIHdlYnNpdGUgZm9yIHNvbWUgcmVhc29uXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/QvdC+0YfRlnzRgNCw0L3QutGDfNC00L3Rj3zQstC10YfQvtGA0LAvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAvXijQtNC90Y980LLQtdGH0L7RgNCwKSQvLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQvdC+0YfRlic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0YDQsNC90LrRgyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0LTQvdGPJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQstC10YfQvtGA0LAnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tKNC5fNCz0L4pLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdC5JztcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LPQvic7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNywgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVrO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFVyZHUgW3VyXVxuLy8hIGF1dGhvciA6IFNhd29vZCBBbGFtIDogaHR0cHM6Ly9naXRodWIuY29tL2libmVzYXllZWRcbi8vISBhdXRob3IgOiBaYWNrIDogaHR0cHM6Ly9naXRodWIuY29tL1phY2tWaXNpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciBtb250aHMgPSBbXG4gICAgICAgICAgICAn2KzZhtmI2LHbjCcsXG4gICAgICAgICAgICAn2YHYsdmI2LHbjCcsXG4gICAgICAgICAgICAn2YXYp9ix2oYnLFxuICAgICAgICAgICAgJ9in2b7YsduM2YQnLFxuICAgICAgICAgICAgJ9mF2KbbjCcsXG4gICAgICAgICAgICAn2KzZiNmGJyxcbiAgICAgICAgICAgICfYrNmI2YTYp9im24wnLFxuICAgICAgICAgICAgJ9in2q/Ys9iqJyxcbiAgICAgICAgICAgICfYs9iq2YXYqNixJyxcbiAgICAgICAgICAgICfYp9qp2KrZiNio2LEnLFxuICAgICAgICAgICAgJ9mG2YjZhdio2LEnLFxuICAgICAgICAgICAgJ9iv2LPZhdio2LEnLFxuICAgICAgICBdLFxuICAgICAgICBkYXlzID0gWyfYp9iq2YjYp9ixJywgJ9m+24zYsScsICfZhdmG2q/ZhCcsICfYqNiv2r4nLCAn2KzZhdi52LHYp9iqJywgJ9is2YXYuduBJywgJ9uB2YHYqtuBJ107XG5cbiAgICB2YXIgdXIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd1cicsIHtcbiAgICAgICAgbW9udGhzOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0OiBtb250aHMsXG4gICAgICAgIHdlZWtkYXlzOiBkYXlzLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiBkYXlzLFxuICAgICAgICB3ZWVrZGF5c01pbjogZGF5cyxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZNiMIEQgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9i12KjYrXzYtNin2YUvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAn2LTYp9mFJyA9PT0gaW5wdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYtdio2K0nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICfYtNin2YUnO1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYotisINio2YjZgtiqXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9qp2YQg2KjZiNmC2KpdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2KjZiNmC2KpdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2q/YsNi02KrbgSDYsdmI2LIg2KjZiNmC2KpdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW9qv2LDYtNiq24FdIGRkZGQgW9io2YjZgtiqXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzINio2LnYrycsXG4gICAgICAgICAgICBwYXN0OiAnJXMg2YLYqNmEJyxcbiAgICAgICAgICAgIHM6ICfahtmG2K8g2LPbjNqp2YbaiCcsXG4gICAgICAgICAgICBzczogJyVkINiz24zaqdmG2ognLFxuICAgICAgICAgICAgbTogJ9in24zaqSDZhdmG2bknLFxuICAgICAgICAgICAgbW06ICclZCDZhdmG2bknLFxuICAgICAgICAgICAgaDogJ9in24zaqSDar9q+2YbZuduBJyxcbiAgICAgICAgICAgIGhoOiAnJWQg2q/avtmG2bnbkicsXG4gICAgICAgICAgICBkOiAn2KfbjNqpINiv2YYnLFxuICAgICAgICAgICAgZGQ6ICclZCDYr9mGJyxcbiAgICAgICAgICAgIE06ICfYp9uM2qkg2YXYp9uBJyxcbiAgICAgICAgICAgIE1NOiAnJWQg2YXYp9uBJyxcbiAgICAgICAgICAgIHk6ICfYp9uM2qkg2LPYp9mEJyxcbiAgICAgICAgICAgIHl5OiAnJWQg2LPYp9mEJyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgv2IwvZywgJywnKTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC8sL2csICfYjCcpO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdXI7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVXpiZWsgTGF0aW4gW3V6LWxhdG5dXG4vLyEgYXV0aG9yIDogUmFzdWxiZWsgTWlyemF5ZXYgOiBnaXRodWIuY29tL1Jhc3VsYmVlZWtcblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuICAgIHZhciB1ekxhdG4gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd1ei1sYXRuJywge1xuICAgICAgICBtb250aHM6ICdZYW52YXJfRmV2cmFsX01hcnRfQXByZWxfTWF5X0l5dW5fSXl1bF9Bdmd1c3RfU2VudGFicl9Pa3RhYnJfTm95YWJyX0Rla2Ficicuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdZYW5fRmV2X01hcl9BcHJfTWF5X0l5dW5fSXl1bF9BdmdfU2VuX09rdF9Ob3lfRGVrJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czpcbiAgICAgICAgICAgICdZYWtzaGFuYmFfRHVzaGFuYmFfU2VzaGFuYmFfQ2hvcnNoYW5iYV9QYXlzaGFuYmFfSnVtYV9TaGFuYmEnLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1lha19EdXNoX1Nlc2hfQ2hvcl9QYXlfSnVtX1NoYW4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnWWFfRHVfU2VfQ2hvX1BhX0p1X1NoYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnRCBNTU1NIFlZWVksIGRkZGQgSEg6bW0nLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tCdWd1biBzb2F0XSBMVCBbZGFdJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbRXJ0YWdhXSBMVCBbZGFdJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBba3VuaSBzb2F0XSBMVCBbZGFdJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbS2VjaGEgc29hdF0gTFQgW2RhXScsXG4gICAgICAgICAgICBsYXN0V2VlazogXCJbTyd0Z2FuXSBkZGRkIFtrdW5pIHNvYXRdIExUIFtkYV1cIixcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnWWFxaW4gJXMgaWNoaWRhJyxcbiAgICAgICAgICAgIHBhc3Q6ICdCaXIgbmVjaGEgJXMgb2xkaW4nLFxuICAgICAgICAgICAgczogJ3Nvbml5YScsXG4gICAgICAgICAgICBzczogJyVkIHNvbml5YScsXG4gICAgICAgICAgICBtOiAnYmlyIGRhcWlxYScsXG4gICAgICAgICAgICBtbTogJyVkIGRhcWlxYScsXG4gICAgICAgICAgICBoOiAnYmlyIHNvYXQnLFxuICAgICAgICAgICAgaGg6ICclZCBzb2F0JyxcbiAgICAgICAgICAgIGQ6ICdiaXIga3VuJyxcbiAgICAgICAgICAgIGRkOiAnJWQga3VuJyxcbiAgICAgICAgICAgIE06ICdiaXIgb3knLFxuICAgICAgICAgICAgTU06ICclZCBveScsXG4gICAgICAgICAgICB5OiAnYmlyIHlpbCcsXG4gICAgICAgICAgICB5eTogJyVkIHlpbCcsXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB1ekxhdG47XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogVXpiZWsgW3V6XVxuLy8hIGF1dGhvciA6IFNhcmRvciBNdW1pbm92IDogaHR0cHM6Ly9naXRodWIuY29tL211bWlub2ZmXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgdXogPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd1eicsIHtcbiAgICAgICAgbW9udGhzOiAn0Y/QvdCy0LDRgF/RhNC10LLRgNCw0Ltf0LzQsNGA0YJf0LDQv9GA0LXQu1/QvNCw0Llf0LjRjtC9X9C40Y7Qu1/QsNCy0LPRg9GB0YJf0YHQtdC90YLRj9Cx0YBf0L7QutGC0Y/QsdGAX9C90L7Rj9Cx0YBf0LTQtdC60LDQsdGAJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ9GP0L3Qsl/RhNC10LJf0LzQsNGAX9Cw0L/RgF/QvNCw0Llf0LjRjtC9X9C40Y7Qu1/QsNCy0LNf0YHQtdC9X9C+0LrRgl/QvdC+0Y9f0LTQtdC6Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ9Cv0LrRiNCw0L3QsdCwX9CU0YPRiNCw0L3QsdCwX9Ch0LXRiNCw0L3QsdCwX9Cn0L7RgNGI0LDQvdCx0LBf0J/QsNC50YjQsNC90LHQsF/QltGD0LzQsF/QqNCw0L3QsdCwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn0K/QutGIX9CU0YPRiF/QodC10Yhf0KfQvtGAX9Cf0LDQuV/QltGD0Lxf0KjQsNC9Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9Cv0Lpf0JTRg1/QodC1X9Cn0L5f0J/QsF/QltGDX9Co0LAnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ0QgTU1NTSBZWVlZLCBkZGRkIEhIOm1tJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb0JHRg9Cz0YPQvSDRgdC+0LDRgl0gTFQgW9C00LBdJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb0K3RgNGC0LDQs9CwXSBMVCBb0LTQsF0nLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvQutGD0L3QuCDRgdC+0LDRgl0gTFQgW9C00LBdJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb0JrQtdGH0LAg0YHQvtCw0YJdIExUIFvQtNCwXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vQo9GC0LPQsNC9XSBkZGRkIFvQutGD0L3QuCDRgdC+0LDRgl0gTFQgW9C00LBdJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn0K/QutC40L0gJXMg0LjRh9C40LTQsCcsXG4gICAgICAgICAgICBwYXN0OiAn0JHQuNGAINC90LXRh9CwICVzINC+0LvQtNC40L0nLFxuICAgICAgICAgICAgczogJ9GE0YPRgNGB0LDRgicsXG4gICAgICAgICAgICBzczogJyVkINGE0YPRgNGB0LDRgicsXG4gICAgICAgICAgICBtOiAn0LHQuNGAINC00LDQutC40LrQsCcsXG4gICAgICAgICAgICBtbTogJyVkINC00LDQutC40LrQsCcsXG4gICAgICAgICAgICBoOiAn0LHQuNGAINGB0L7QsNGCJyxcbiAgICAgICAgICAgIGhoOiAnJWQg0YHQvtCw0YInLFxuICAgICAgICAgICAgZDogJ9Cx0LjRgCDQutGD0L0nLFxuICAgICAgICAgICAgZGQ6ICclZCDQutGD0L0nLFxuICAgICAgICAgICAgTTogJ9Cx0LjRgCDQvtC5JyxcbiAgICAgICAgICAgIE1NOiAnJWQg0L7QuScsXG4gICAgICAgICAgICB5OiAn0LHQuNGAINC50LjQuycsXG4gICAgICAgICAgICB5eTogJyVkINC50LjQuycsXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDcsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB1ejtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBWaWV0bmFtZXNlIFt2aV1cbi8vISBhdXRob3IgOiBCYW5nIE5ndXllbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9iYW5nbmtcbi8vISBhdXRob3IgOiBDaGllbiBLaXJhIDogaHR0cHM6Ly9naXRodWIuY29tL2NoaWVua2lyYVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHZpID0gbW9tZW50LmRlZmluZUxvY2FsZSgndmknLCB7XG4gICAgICAgIG1vbnRoczogJ3Row6FuZyAxX3Row6FuZyAyX3Row6FuZyAzX3Row6FuZyA0X3Row6FuZyA1X3Row6FuZyA2X3Row6FuZyA3X3Row6FuZyA4X3Row6FuZyA5X3Row6FuZyAxMF90aMOhbmcgMTFfdGjDoW5nIDEyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdUaGcgMDFfVGhnIDAyX1RoZyAwM19UaGcgMDRfVGhnIDA1X1RoZyAwNl9UaGcgMDdfVGhnIDA4X1RoZyAwOV9UaGcgMTBfVGhnIDExX1RoZyAxMicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ2No4bunIG5o4bqtdF90aOG7qSBoYWlfdGjhu6kgYmFfdGjhu6kgdMawX3Ro4bupIG7Eg21fdGjhu6kgc8OhdV90aOG7qSBi4bqjeScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ0NOX1QyX1QzX1Q0X1Q1X1Q2X1Q3Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ0NOX1QyX1QzX1Q0X1Q1X1Q2X1Q3Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9zYXxjaC9pLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAvXmNoJC9pLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ3NhJyA6ICdTQSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ2NoJyA6ICdDSCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFtuxINtXSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBbbsSDbV0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFtuxINtXSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIGw6ICdERC9NL1lZWVknLFxuICAgICAgICAgICAgbGw6ICdEIE1NTSBZWVlZJyxcbiAgICAgICAgICAgIGxsbDogJ0QgTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgbGxsbDogJ2RkZCwgRCBNTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0jDtG0gbmF5IGzDumNdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbTmfDoHkgbWFpIGzDumNdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbdHXhuqduIHThu5tpIGzDumNdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSMO0bSBxdWEgbMO6Y10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFt0deG6p24gdHLGsOG7m2MgbMO6Y10gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyB04bubaScsXG4gICAgICAgICAgICBwYXN0OiAnJXMgdHLGsOG7m2MnLFxuICAgICAgICAgICAgczogJ3bDoGkgZ2nDonknLFxuICAgICAgICAgICAgc3M6ICclZCBnacOieScsXG4gICAgICAgICAgICBtOiAnbeG7mXQgcGjDunQnLFxuICAgICAgICAgICAgbW06ICclZCBwaMO6dCcsXG4gICAgICAgICAgICBoOiAnbeG7mXQgZ2nhu50nLFxuICAgICAgICAgICAgaGg6ICclZCBnaeG7nScsXG4gICAgICAgICAgICBkOiAnbeG7mXQgbmfDoHknLFxuICAgICAgICAgICAgZGQ6ICclZCBuZ8OgeScsXG4gICAgICAgICAgICB3OiAnbeG7mXQgdHXhuqduJyxcbiAgICAgICAgICAgIHd3OiAnJWQgdHXhuqduJyxcbiAgICAgICAgICAgIE06ICdt4buZdCB0aMOhbmcnLFxuICAgICAgICAgICAgTU06ICclZCB0aMOhbmcnLFxuICAgICAgICAgICAgeTogJ23hu5l0IG7Eg20nLFxuICAgICAgICAgICAgeXk6ICclZCBuxINtJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZpO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuLy8hIGxvY2FsZSA6IFBzZXVkbyBbeC1wc2V1ZG9dXG4vLyEgYXV0aG9yIDogQW5kcmV3IEhvb2QgOiBodHRwczovL2dpdGh1Yi5jb20vYW5kcmV3aG9vZDEyNVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHhQc2V1ZG8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd4LXBzZXVkbycsIHtcbiAgICAgICAgbW9udGhzOiAnSn7DocOxw7rDoX5yw71fRn7DqWJyw7p+w6Fyw71ffk3DoXJjfmhfw4FwfnLDrWxffk3DocO9X35Kw7rDscOpfl9Kw7psfsO9X8OBw7p+Z8O6c3R+X1PDqXB+dMOpbWJ+w6lyX8OTfmN0w7NifsOpcl/DkX7Ds3bDqW1+YsOpcl9+RMOpY8Opfm1iw6lyJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDpcbiAgICAgICAgICAgICdKfsOhw7FffkbDqWJffk3DoXJffsOBcHJffk3DocO9X35Kw7rDsV9+SsO6bF9+w4HDumdfflPDqXBffsOTY3RffsORw7N2X35Ew6ljJy5zcGxpdChcbiAgICAgICAgICAgICAgICAnXydcbiAgICAgICAgICAgICksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOlxuICAgICAgICAgICAgJ1N+w7rDsWTDoX7DvV9Nw7N+w7Fkw6HDvX5fVMO6w6l+c2TDocO9fl9Xw6lkfsOxw6lzZH7DocO9X1R+aMO6cnN+ZMOhw71ffkZyw61kfsOhw71fU37DoXTDunJ+ZMOhw70nLnNwbGl0KFxuICAgICAgICAgICAgICAgICdfJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ1N+w7rDsV9+TcOzw7FfflTDusOpX35Xw6lkX35UaMO6X35GcsOtX35Tw6F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1N+w7pfTcOzfl9Uw7pfflfDqV9UfmhfRnJ+X1PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW1R+w7Nkw6F+w70gw6F0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1R+w7Ntw7N+cnLDs353IMOhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvDoXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbw51+w6lzdH7DqXJkw6F+w70gw6F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tMfsOhc3RdIGRkZGQgW8OhdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfDrX7DsSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgw6F+Z8OzJyxcbiAgICAgICAgICAgIHM6ICfDoSB+ZsOpdyB+c8OpY8OzfsOxZHMnLFxuICAgICAgICAgICAgc3M6ICclZCBzfsOpY8Ozw7F+ZHMnLFxuICAgICAgICAgICAgbTogJ8OhIH5tw63DsX7DunTDqScsXG4gICAgICAgICAgICBtbTogJyVkIG1+w63DscO6fnTDqXMnLFxuICAgICAgICAgICAgaDogJ8OhfsOxIGjDs37DunInLFxuICAgICAgICAgICAgaGg6ICclZCBofsOzw7pycycsXG4gICAgICAgICAgICBkOiAnw6EgfmTDocO9JyxcbiAgICAgICAgICAgIGRkOiAnJWQgZH7DocO9cycsXG4gICAgICAgICAgICBNOiAnw6Egfm3Ds8OxfnRoJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbX7Ds8OxdH5ocycsXG4gICAgICAgICAgICB5OiAnw6EgfsO9w6nDoXInLFxuICAgICAgICAgICAgeXk6ICclZCDDvX7DqcOhcnMnLFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0odGh8c3R8bmR8cmQpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPVxuICAgICAgICAgICAgICAgICAgICB+figobnVtYmVyICUgMTAwKSAvIDEwKSA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAndGgnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3N0J1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAyXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICduZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gM1xuICAgICAgICAgICAgICAgICAgICAgICAgPyAncmQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4geFBzZXVkbztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBZb3J1YmEgTmlnZXJpYSBbeW9dXG4vLyEgYXV0aG9yIDogQXRvbGFnYmUgQWJpc295ZSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmRlbGEtYmF0b2xhZ2JlXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgeW8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd5bycsIHtcbiAgICAgICAgbW9udGhzOiAnU+G6ucyBcuG6ucyBX0XMgHJlzIBsZcyAX+G6uHLhurnMgG5hzIBfScyAZ2JlzIFfRcyAYmliaV9PzIBrdcyAZHVfQWfhurltb19PzIBndcyBbl9Pd2V3ZV/hu4zMgHdhzIByYcyAX0JlzIFsdcyBX+G7jMyAcOG6ucyAzIAnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnU+G6ucyBcl9FzIBybF/hurhybl9JzIBnYl9FzIBiaV9PzIBrdcyAX0Fn4bq5X0/MgGd1zIFfT3dlX+G7jMyAd2HMgF9CZcyBbF/hu4zMgHDhurnMgMyAJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ0HMgGnMgGt1zIFfQWplzIFfScyAc+G6ucyBZ3VuX+G7jGrhu43MgXJ1zIFf4buMauG7jcyBYuG7jV/hurh0acyAX0HMgGJhzIFt4bq5zIF0YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ0HMgGnMgGtfQWplzIFfScyAc+G6ucyBX+G7jGpyX+G7jGpiX+G6uHRpzIBfQcyAYmHMgScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdBzIBpzIBfQWpfScyAc1/hu4xyX+G7jGJf4bq4dF9BzIBiJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tPzIBuacyAIG5pXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+G7jMyAbGEgbmldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBcImRkZGQgW+G7jHPhurnMgCB0b8yBbidi4buNXSBbbmldIExUXCIsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0HMgG5hIG5pXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW+G7jHPhurnMgCB0b8yBbOG7jcyBXSBbbmldIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnbmnMgSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMga+G7jWphzIEnLFxuICAgICAgICAgICAgczogJ2nMgHPhurlqdcyBIGFheWHMgSBkaWUnLFxuICAgICAgICAgICAgc3M6ICdhYXlhzIEgJWQnLFxuICAgICAgICAgICAgbTogJ2nMgHPhurlqdcyBIGthbicsXG4gICAgICAgICAgICBtbTogJ2nMgHPhurlqdcyBICVkJyxcbiAgICAgICAgICAgIGg6ICd3YcyBa2F0aSBrYW4nLFxuICAgICAgICAgICAgaGg6ICd3YcyBa2F0aSAlZCcsXG4gICAgICAgICAgICBkOiAn4buNauG7jcyBIGthbicsXG4gICAgICAgICAgICBkZDogJ+G7jWrhu43MgSAlZCcsXG4gICAgICAgICAgICBNOiAnb3N1zIAga2FuJyxcbiAgICAgICAgICAgIE1NOiAnb3N1zIAgJWQnLFxuICAgICAgICAgICAgeTogJ+G7jWR1zIFuIGthbicsXG4gICAgICAgICAgICB5eTogJ+G7jWR1zIFuICVkJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL+G7jWrhu43MgVxcc1xcZHsxLDJ9LyxcbiAgICAgICAgb3JkaW5hbDogJ+G7jWrhu43MgSAlZCcsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQsIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB5bztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbi8vISBsb2NhbGUgOiBDaGluZXNlIChDaGluYSkgW3poLWNuXVxuLy8hIGF1dGhvciA6IHN1dXBpYyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9zdXVwaWNcbi8vISBhdXRob3IgOiBaZW5vIFplbmcgOiBodHRwczovL2dpdGh1Yi5jb20vemVub3plbmdcbi8vISBhdXRob3IgOiB1dTEwOSA6IGh0dHBzOi8vZ2l0aHViLmNvbS91dTEwOVxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG4gICAgdmFyIHpoQ24gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd6aC1jbicsIHtcbiAgICAgICAgbW9udGhzOiAn5LiA5pyIX+S6jOaciF/kuInmnIhf5Zub5pyIX+S6lOaciF/lha3mnIhf5LiD5pyIX+WFq+aciF/kuZ3mnIhf5Y2B5pyIX+WNgeS4gOaciF/ljYHkuozmnIgnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnMeaciF8y5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyIXznmnIhfMTDmnIhfMTHmnIhfMTLmnIgnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn5pif5pyf5pelX+aYn+acn+S4gF/mmJ/mnJ/kuoxf5pif5pyf5LiJX+aYn+acn+Wbm1/mmJ/mnJ/kupRf5pif5pyf5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn5ZGo5pelX+WRqOS4gF/lkajkuoxf5ZGo5LiJX+WRqOWbm1/lkajkupRf5ZGo5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+aXpV/kuIBf5LqMX+S4iV/lm5tf5LqUX+WFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ1lZWVkvTU0vREQnLFxuICAgICAgICAgICAgTEw6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgTExMOiAnWVlZWeW5tE3mnIhE5pelQWjngrltbeWIhicsXG4gICAgICAgICAgICBMTExMOiAnWVlZWeW5tE3mnIhE5pelZGRkZEFo54K5bW3liIYnLFxuICAgICAgICAgICAgbDogJ1lZWVkvTS9EJyxcbiAgICAgICAgICAgIGxsOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIGxsbDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBsbGxsOiAnWVlZWeW5tE3mnIhE5pelZGRkZCBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/lh4zmmah85pep5LiKfOS4iuWNiHzkuK3ljYh85LiL5Y2IfOaZmuS4ii8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+WHjOaZqCcgfHwgbWVyaWRpZW0gPT09ICfml6nkuIonIHx8IG1lcmlkaWVtID09PSAn5LiK5Y2IJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+S4i+WNiCcgfHwgbWVyaWRpZW0gPT09ICfmmZrkuIonKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gJ+S4reWNiCdcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBob3VyICogMTAwICsgbWludXRlO1xuICAgICAgICAgICAgaWYgKGhtIDwgNjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICflh4zmmagnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDkwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5pep5LiKJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMTMwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIrljYgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDEyMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4reWNiCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTgwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5LiL5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfmmZrkuIonO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vku4rlpKldTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vmmI7lpKldTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uIChub3cpIHtcbiAgICAgICAgICAgICAgICBpZiAobm93LndlZWsoKSAhPT0gdGhpcy53ZWVrKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb5LiLXWRkZExUJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vmnKxdZGRkTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+aYqOWkqV1MVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKG5vdykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLndlZWsoKSAhPT0gbm93LndlZWsoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vkuIpdZGRkTFQnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnW+acrF1kZGRMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSjml6V85pyIfOWRqCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfml6UnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+aciCc7XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5ZGoJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVz5ZCOJyxcbiAgICAgICAgICAgIHBhc3Q6ICclc+WJjScsXG4gICAgICAgICAgICBzOiAn5Yeg56eSJyxcbiAgICAgICAgICAgIHNzOiAnJWQg56eSJyxcbiAgICAgICAgICAgIG06ICcxIOWIhumSnycsXG4gICAgICAgICAgICBtbTogJyVkIOWIhumSnycsXG4gICAgICAgICAgICBoOiAnMSDlsI/ml7YnLFxuICAgICAgICAgICAgaGg6ICclZCDlsI/ml7YnLFxuICAgICAgICAgICAgZDogJzEg5aSpJyxcbiAgICAgICAgICAgIGRkOiAnJWQg5aSpJyxcbiAgICAgICAgICAgIHc6ICcxIOWRqCcsXG4gICAgICAgICAgICB3dzogJyVkIOWRqCcsXG4gICAgICAgICAgICBNOiAnMSDkuKrmnIgnLFxuICAgICAgICAgICAgTU06ICclZCDkuKrmnIgnLFxuICAgICAgICAgICAgeTogJzEg5bm0JyxcbiAgICAgICAgICAgIHl5OiAnJWQg5bm0JyxcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgLy8gR0IvVCA3NDA4LTE5OTTjgIrmlbDmja7lhYPlkozkuqTmjaLmoLzlvI/Ct+S/oeaBr+S6pOaNosK35pel5pyf5ZKM5pe26Ze06KGo56S65rOV44CL5LiOSVNPIDg2MDE6MTk4OOetieaViFxuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCwgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHpoQ247XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQ2hpbmVzZSAoSG9uZyBLb25nKSBbemgtaGtdXG4vLyEgYXV0aG9yIDogQmVuIDogaHR0cHM6Ly9naXRodWIuY29tL2Jlbi1saW5cbi8vISBhdXRob3IgOiBDaHJpcyBMYW0gOiBodHRwczovL2dpdGh1Yi5jb20vaGVoYWNocmlzXG4vLyEgYXV0aG9yIDogS29uc3RhbnRpbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9za2ZkXG4vLyEgYXV0aG9yIDogQW50aG9ueSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbnRob255bGF1XG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgemhIayA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3poLWhrJywge1xuICAgICAgICBtb250aHM6ICfkuIDmnIhf5LqM5pyIX+S4ieaciF/lm5vmnIhf5LqU5pyIX+WFreaciF/kuIPmnIhf5YWr5pyIX+S5neaciF/ljYHmnIhf5Y2B5LiA5pyIX+WNgeS6jOaciCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICcx5pyIXzLmnIhfM+aciF805pyIXzXmnIhfNuaciF835pyIXzjmnIhfOeaciF8xMOaciF8xMeaciF8xMuaciCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfmmJ/mnJ/ml6Vf5pif5pyf5LiAX+aYn+acn+S6jF/mmJ/mnJ/kuIlf5pif5pyf5ZubX+aYn+acn+S6lF/mmJ/mnJ/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfpgLHml6Vf6YCx5LiAX+mAseS6jF/pgLHkuIlf6YCx5ZubX+mAseS6lF/pgLHlha0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn5pelX+S4gF/kuoxf5LiJX+Wbm1/kupRf5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnWVlZWS9NTS9ERCcsXG4gICAgICAgICAgICBMTDogJ1lZWVnlubRN5pyIROaXpScsXG4gICAgICAgICAgICBMTEw6ICdZWVlZ5bm0TeaciETml6UgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ1lZWVnlubRN5pyIROaXpWRkZGQgSEg6bW0nLFxuICAgICAgICAgICAgbDogJ1lZWVkvTS9EJyxcbiAgICAgICAgICAgIGxsOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIGxsbDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBsbGxsOiAnWVlZWeW5tE3mnIhE5pelZGRkZCBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/lh4zmmah85pep5LiKfOS4iuWNiHzkuK3ljYh85LiL5Y2IfOaZmuS4ii8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+WHjOaZqCcgfHwgbWVyaWRpZW0gPT09ICfml6nkuIonIHx8IG1lcmlkaWVtID09PSAn5LiK5Y2IJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+S4reWNiCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn5LiL5Y2IJyB8fCBtZXJpZGllbSA9PT0gJ+aZmuS4iicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgdmFyIGhtID0gaG91ciAqIDEwMCArIG1pbnV0ZTtcbiAgICAgICAgICAgIGlmIChobSA8IDYwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5YeM5pmoJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCA5MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+aXqeS4iic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTIwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5LiK5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPT09IDEyMDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4reWNiCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTgwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5LiL5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfmmZrkuIonO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vku4rlpKldTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vmmI7lpKldTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdb5LiLXWRkZGRMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+aYqOWkqV1MVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vkuIpdZGRkZExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSjml6V85pyIfOmAsSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfml6UnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+aciCc7XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn6YCxJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVz5b6MJyxcbiAgICAgICAgICAgIHBhc3Q6ICclc+WJjScsXG4gICAgICAgICAgICBzOiAn5bm+56eSJyxcbiAgICAgICAgICAgIHNzOiAnJWQg56eSJyxcbiAgICAgICAgICAgIG06ICcxIOWIhumQmCcsXG4gICAgICAgICAgICBtbTogJyVkIOWIhumQmCcsXG4gICAgICAgICAgICBoOiAnMSDlsI/mmYInLFxuICAgICAgICAgICAgaGg6ICclZCDlsI/mmYInLFxuICAgICAgICAgICAgZDogJzEg5aSpJyxcbiAgICAgICAgICAgIGRkOiAnJWQg5aSpJyxcbiAgICAgICAgICAgIE06ICcxIOWAi+aciCcsXG4gICAgICAgICAgICBNTTogJyVkIOWAi+aciCcsXG4gICAgICAgICAgICB5OiAnMSDlubQnLFxuICAgICAgICAgICAgeXk6ICclZCDlubQnLFxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHpoSGs7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQ2hpbmVzZSAoTWFjYXUpIFt6aC1tb11cbi8vISBhdXRob3IgOiBCZW4gOiBodHRwczovL2dpdGh1Yi5jb20vYmVuLWxpblxuLy8hIGF1dGhvciA6IENocmlzIExhbSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9oZWhhY2hyaXNcbi8vISBhdXRob3IgOiBUYW4gWXVhbmhvbmcgOiBodHRwczovL2dpdGh1Yi5jb20vbGUwdGFuXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgemhNbyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3poLW1vJywge1xuICAgICAgICBtb250aHM6ICfkuIDmnIhf5LqM5pyIX+S4ieaciF/lm5vmnIhf5LqU5pyIX+WFreaciF/kuIPmnIhf5YWr5pyIX+S5neaciF/ljYHmnIhf5Y2B5LiA5pyIX+WNgeS6jOaciCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICcx5pyIXzLmnIhfM+aciF805pyIXzXmnIhfNuaciF835pyIXzjmnIhfOeaciF8xMOaciF8xMeaciF8xMuaciCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfmmJ/mnJ/ml6Vf5pif5pyf5LiAX+aYn+acn+S6jF/mmJ/mnJ/kuIlf5pif5pyf5ZubX+aYn+acn+S6lF/mmJ/mnJ/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfpgLHml6Vf6YCx5LiAX+mAseS6jF/pgLHkuIlf6YCx5ZubX+mAseS6lF/pgLHlha0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn5pelX+S4gF/kuoxf5LiJX+Wbm1/kupRf5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ1lZWVnlubRN5pyIROaXpScsXG4gICAgICAgICAgICBMTEw6ICdZWVlZ5bm0TeaciETml6UgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ1lZWVnlubRN5pyIROaXpWRkZGQgSEg6bW0nLFxuICAgICAgICAgICAgbDogJ0QvTS9ZWVlZJyxcbiAgICAgICAgICAgIGxsOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIGxsbDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBsbGxsOiAnWVlZWeW5tE3mnIhE5pelZGRkZCBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/lh4zmmah85pep5LiKfOS4iuWNiHzkuK3ljYh85LiL5Y2IfOaZmuS4ii8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+WHjOaZqCcgfHwgbWVyaWRpZW0gPT09ICfml6nkuIonIHx8IG1lcmlkaWVtID09PSAn5LiK5Y2IJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+S4reWNiCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn5LiL5Y2IJyB8fCBtZXJpZGllbSA9PT0gJ+aZmuS4iicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgdmFyIGhtID0gaG91ciAqIDEwMCArIG1pbnV0ZTtcbiAgICAgICAgICAgIGlmIChobSA8IDYwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5YeM5pmoJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCA5MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+aXqeS4iic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTEzMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5LiK5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMjMwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuK3ljYgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDE4MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4i+WNiCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5pma5LiKJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb5LuK5aSpXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+aYjuWkqV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdb5LiLXWRkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vmmKjlpKldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+S4il1kZGRkIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSjml6V85pyIfOmAsSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfml6UnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+aciCc7XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn6YCxJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVz5YWnJyxcbiAgICAgICAgICAgIHBhc3Q6ICclc+WJjScsXG4gICAgICAgICAgICBzOiAn5bm+56eSJyxcbiAgICAgICAgICAgIHNzOiAnJWQg56eSJyxcbiAgICAgICAgICAgIG06ICcxIOWIhumQmCcsXG4gICAgICAgICAgICBtbTogJyVkIOWIhumQmCcsXG4gICAgICAgICAgICBoOiAnMSDlsI/mmYInLFxuICAgICAgICAgICAgaGg6ICclZCDlsI/mmYInLFxuICAgICAgICAgICAgZDogJzEg5aSpJyxcbiAgICAgICAgICAgIGRkOiAnJWQg5aSpJyxcbiAgICAgICAgICAgIE06ICcxIOWAi+aciCcsXG4gICAgICAgICAgICBNTTogJyVkIOWAi+aciCcsXG4gICAgICAgICAgICB5OiAnMSDlubQnLFxuICAgICAgICAgICAgeXk6ICclZCDlubQnLFxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHpoTW87XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG4vLyEgbG9jYWxlIDogQ2hpbmVzZSAoVGFpd2FuKSBbemgtdHddXG4vLyEgYXV0aG9yIDogQmVuIDogaHR0cHM6Ly9naXRodWIuY29tL2Jlbi1saW5cbi8vISBhdXRob3IgOiBDaHJpcyBMYW0gOiBodHRwczovL2dpdGh1Yi5jb20vaGVoYWNocmlzXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbiAgICB2YXIgemhUdyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3poLXR3Jywge1xuICAgICAgICBtb250aHM6ICfkuIDmnIhf5LqM5pyIX+S4ieaciF/lm5vmnIhf5LqU5pyIX+WFreaciF/kuIPmnIhf5YWr5pyIX+S5neaciF/ljYHmnIhf5Y2B5LiA5pyIX+WNgeS6jOaciCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICcx5pyIXzLmnIhfM+aciF805pyIXzXmnIhfNuaciF835pyIXzjmnIhfOeaciF8xMOaciF8xMeaciF8xMuaciCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfmmJ/mnJ/ml6Vf5pif5pyf5LiAX+aYn+acn+S6jF/mmJ/mnJ/kuIlf5pif5pyf5ZubX+aYn+acn+S6lF/mmJ/mnJ/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfpgLHml6Vf6YCx5LiAX+mAseS6jF/pgLHkuIlf6YCx5ZubX+mAseS6lF/pgLHlha0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn5pelX+S4gF/kuoxf5LiJX+Wbm1/kupRf5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnWVlZWS9NTS9ERCcsXG4gICAgICAgICAgICBMTDogJ1lZWVnlubRN5pyIROaXpScsXG4gICAgICAgICAgICBMTEw6ICdZWVlZ5bm0TeaciETml6UgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ1lZWVnlubRN5pyIROaXpWRkZGQgSEg6bW0nLFxuICAgICAgICAgICAgbDogJ1lZWVkvTS9EJyxcbiAgICAgICAgICAgIGxsOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIGxsbDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBsbGxsOiAnWVlZWeW5tE3mnIhE5pelZGRkZCBISDptbScsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/lh4zmmah85pep5LiKfOS4iuWNiHzkuK3ljYh85LiL5Y2IfOaZmuS4ii8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+WHjOaZqCcgfHwgbWVyaWRpZW0gPT09ICfml6nkuIonIHx8IG1lcmlkaWVtID09PSAn5LiK5Y2IJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+S4reWNiCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn5LiL5Y2IJyB8fCBtZXJpZGllbSA9PT0gJ+aZmuS4iicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgdmFyIGhtID0gaG91ciAqIDEwMCArIG1pbnV0ZTtcbiAgICAgICAgICAgIGlmIChobSA8IDYwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5YeM5pmoJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCA5MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+aXqeS4iic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTEzMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5LiK5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMjMwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuK3ljYgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDE4MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4i+WNiCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5pma5LiKJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb5LuK5aSpXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+aYjuWkqV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdb5LiLXWRkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vmmKjlpKldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+S4il1kZGRkIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSjml6V85pyIfOmAsSkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfml6UnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+aciCc7XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn6YCxJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVz5b6MJyxcbiAgICAgICAgICAgIHBhc3Q6ICclc+WJjScsXG4gICAgICAgICAgICBzOiAn5bm+56eSJyxcbiAgICAgICAgICAgIHNzOiAnJWQg56eSJyxcbiAgICAgICAgICAgIG06ICcxIOWIhumQmCcsXG4gICAgICAgICAgICBtbTogJyVkIOWIhumQmCcsXG4gICAgICAgICAgICBoOiAnMSDlsI/mmYInLFxuICAgICAgICAgICAgaGg6ICclZCDlsI/mmYInLFxuICAgICAgICAgICAgZDogJzEg5aSpJyxcbiAgICAgICAgICAgIGRkOiAnJWQg5aSpJyxcbiAgICAgICAgICAgIE06ICcxIOWAi+aciCcsXG4gICAgICAgICAgICBNTTogJyVkIOWAi+aciCcsXG4gICAgICAgICAgICB5OiAnMSDlubQnLFxuICAgICAgICAgICAgeXk6ICclZCDlubQnLFxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHpoVHc7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzXG4vLyEgdmVyc2lvbiA6IDIuMjkuNFxuLy8hIGF1dGhvcnMgOiBUaW0gV29vZCwgSXNrcmVuIENoZXJuZXYsIE1vbWVudC5qcyBjb250cmlidXRvcnNcbi8vISBsaWNlbnNlIDogTUlUXG4vLyEgbW9tZW50anMuY29tXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpIDpcbiAgICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoZmFjdG9yeSkgOlxuICAgIGdsb2JhbC5tb21lbnQgPSBmYWN0b3J5KClcbn0odGhpcywgKGZ1bmN0aW9uICgpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgdmFyIGhvb2tDYWxsYmFjaztcblxuICAgIGZ1bmN0aW9uIGhvb2tzKCkge1xuICAgICAgICByZXR1cm4gaG9va0NhbGxiYWNrLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBpcyBkb25lIHRvIHJlZ2lzdGVyIHRoZSBtZXRob2QgY2FsbGVkIHdpdGggbW9tZW50KClcbiAgICAvLyB3aXRob3V0IGNyZWF0aW5nIGNpcmN1bGFyIGRlcGVuZGVuY2llcy5cbiAgICBmdW5jdGlvbiBzZXRIb29rQ2FsbGJhY2soY2FsbGJhY2spIHtcbiAgICAgICAgaG9va0NhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNBcnJheShpbnB1dCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgaW5wdXQgaW5zdGFuY2VvZiBBcnJheSB8fFxuICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgQXJyYXldJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzT2JqZWN0KGlucHV0KSB7XG4gICAgICAgIC8vIElFOCB3aWxsIHRyZWF0IHVuZGVmaW5lZCBhbmQgbnVsbCBhcyBvYmplY3QgaWYgaXQgd2Fzbid0IGZvclxuICAgICAgICAvLyBpbnB1dCAhPSBudWxsXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBpbnB1dCAhPSBudWxsICYmXG4gICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBPYmplY3RdJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhc093blByb3AoYSwgYikge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsIGIpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzT2JqZWN0RW1wdHkob2JqKSB7XG4gICAgICAgIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcykge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikubGVuZ3RoID09PSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIGs7XG4gICAgICAgICAgICBmb3IgKGsgaW4gb2JqKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhhc093blByb3Aob2JqLCBrKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1VuZGVmaW5lZChpbnB1dCkge1xuICAgICAgICByZXR1cm4gaW5wdXQgPT09IHZvaWQgMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc051bWJlcihpbnB1dCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJyB8fFxuICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgTnVtYmVyXSdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0RhdGUoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGlucHV0IGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgRGF0ZV0nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFwKGFyciwgZm4pIHtcbiAgICAgICAgdmFyIHJlcyA9IFtdLFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIGFyckxlbiA9IGFyci5sZW5ndGg7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcnJMZW47ICsraSkge1xuICAgICAgICAgICAgcmVzLnB1c2goZm4oYXJyW2ldLCBpKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBleHRlbmQoYSwgYikge1xuICAgICAgICBmb3IgKHZhciBpIGluIGIpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKGIsIGkpKSB7XG4gICAgICAgICAgICAgICAgYVtpXSA9IGJbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzT3duUHJvcChiLCAndG9TdHJpbmcnKSkge1xuICAgICAgICAgICAgYS50b1N0cmluZyA9IGIudG9TdHJpbmc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzT3duUHJvcChiLCAndmFsdWVPZicpKSB7XG4gICAgICAgICAgICBhLnZhbHVlT2YgPSBiLnZhbHVlT2Y7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVVVEMoaW5wdXQsIGZvcm1hdCwgbG9jYWxlLCBzdHJpY3QpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUxvY2FsT3JVVEMoaW5wdXQsIGZvcm1hdCwgbG9jYWxlLCBzdHJpY3QsIHRydWUpLnV0YygpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlZmF1bHRQYXJzaW5nRmxhZ3MoKSB7XG4gICAgICAgIC8vIFdlIG5lZWQgdG8gZGVlcCBjbG9uZSB0aGlzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVtcHR5OiBmYWxzZSxcbiAgICAgICAgICAgIHVudXNlZFRva2VuczogW10sXG4gICAgICAgICAgICB1bnVzZWRJbnB1dDogW10sXG4gICAgICAgICAgICBvdmVyZmxvdzogLTIsXG4gICAgICAgICAgICBjaGFyc0xlZnRPdmVyOiAwLFxuICAgICAgICAgICAgbnVsbElucHV0OiBmYWxzZSxcbiAgICAgICAgICAgIGludmFsaWRFcmE6IG51bGwsXG4gICAgICAgICAgICBpbnZhbGlkTW9udGg6IG51bGwsXG4gICAgICAgICAgICBpbnZhbGlkRm9ybWF0OiBmYWxzZSxcbiAgICAgICAgICAgIHVzZXJJbnZhbGlkYXRlZDogZmFsc2UsXG4gICAgICAgICAgICBpc286IGZhbHNlLFxuICAgICAgICAgICAgcGFyc2VkRGF0ZVBhcnRzOiBbXSxcbiAgICAgICAgICAgIGVyYTogbnVsbCxcbiAgICAgICAgICAgIG1lcmlkaWVtOiBudWxsLFxuICAgICAgICAgICAgcmZjMjgyMjogZmFsc2UsXG4gICAgICAgICAgICB3ZWVrZGF5TWlzbWF0Y2g6IGZhbHNlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFBhcnNpbmdGbGFncyhtKSB7XG4gICAgICAgIGlmIChtLl9wZiA9PSBudWxsKSB7XG4gICAgICAgICAgICBtLl9wZiA9IGRlZmF1bHRQYXJzaW5nRmxhZ3MoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbS5fcGY7XG4gICAgfVxuXG4gICAgdmFyIHNvbWU7XG4gICAgaWYgKEFycmF5LnByb3RvdHlwZS5zb21lKSB7XG4gICAgICAgIHNvbWUgPSBBcnJheS5wcm90b3R5cGUuc29tZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBzb21lID0gZnVuY3Rpb24gKGZ1bikge1xuICAgICAgICAgICAgdmFyIHQgPSBPYmplY3QodGhpcyksXG4gICAgICAgICAgICAgICAgbGVuID0gdC5sZW5ndGggPj4+IDAsXG4gICAgICAgICAgICAgICAgaTtcblxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGkgaW4gdCAmJiBmdW4uY2FsbCh0aGlzLCB0W2ldLCBpLCB0KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1ZhbGlkKG0pIHtcbiAgICAgICAgaWYgKG0uX2lzVmFsaWQgPT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIGZsYWdzID0gZ2V0UGFyc2luZ0ZsYWdzKG0pLFxuICAgICAgICAgICAgICAgIHBhcnNlZFBhcnRzID0gc29tZS5jYWxsKGZsYWdzLnBhcnNlZERhdGVQYXJ0cywgZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgIT0gbnVsbDtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBpc05vd1ZhbGlkID1cbiAgICAgICAgICAgICAgICAgICAgIWlzTmFOKG0uX2QuZ2V0VGltZSgpKSAmJlxuICAgICAgICAgICAgICAgICAgICBmbGFncy5vdmVyZmxvdyA8IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgIWZsYWdzLmVtcHR5ICYmXG4gICAgICAgICAgICAgICAgICAgICFmbGFncy5pbnZhbGlkRXJhICYmXG4gICAgICAgICAgICAgICAgICAgICFmbGFncy5pbnZhbGlkTW9udGggJiZcbiAgICAgICAgICAgICAgICAgICAgIWZsYWdzLmludmFsaWRXZWVrZGF5ICYmXG4gICAgICAgICAgICAgICAgICAgICFmbGFncy53ZWVrZGF5TWlzbWF0Y2ggJiZcbiAgICAgICAgICAgICAgICAgICAgIWZsYWdzLm51bGxJbnB1dCAmJlxuICAgICAgICAgICAgICAgICAgICAhZmxhZ3MuaW52YWxpZEZvcm1hdCAmJlxuICAgICAgICAgICAgICAgICAgICAhZmxhZ3MudXNlckludmFsaWRhdGVkICYmXG4gICAgICAgICAgICAgICAgICAgICghZmxhZ3MubWVyaWRpZW0gfHwgKGZsYWdzLm1lcmlkaWVtICYmIHBhcnNlZFBhcnRzKSk7XG5cbiAgICAgICAgICAgIGlmIChtLl9zdHJpY3QpIHtcbiAgICAgICAgICAgICAgICBpc05vd1ZhbGlkID1cbiAgICAgICAgICAgICAgICAgICAgaXNOb3dWYWxpZCAmJlxuICAgICAgICAgICAgICAgICAgICBmbGFncy5jaGFyc0xlZnRPdmVyID09PSAwICYmXG4gICAgICAgICAgICAgICAgICAgIGZsYWdzLnVudXNlZFRva2Vucy5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3MuYmlnSG91ciA9PT0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoT2JqZWN0LmlzRnJvemVuID09IG51bGwgfHwgIU9iamVjdC5pc0Zyb3plbihtKSkge1xuICAgICAgICAgICAgICAgIG0uX2lzVmFsaWQgPSBpc05vd1ZhbGlkO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNOb3dWYWxpZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbS5faXNWYWxpZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVJbnZhbGlkKGZsYWdzKSB7XG4gICAgICAgIHZhciBtID0gY3JlYXRlVVRDKE5hTik7XG4gICAgICAgIGlmIChmbGFncyAhPSBudWxsKSB7XG4gICAgICAgICAgICBleHRlbmQoZ2V0UGFyc2luZ0ZsYWdzKG0pLCBmbGFncyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MobSkudXNlckludmFsaWRhdGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIC8vIFBsdWdpbnMgdGhhdCBhZGQgcHJvcGVydGllcyBzaG91bGQgYWxzbyBhZGQgdGhlIGtleSBoZXJlIChudWxsIHZhbHVlKSxcbiAgICAvLyBzbyB3ZSBjYW4gcHJvcGVybHkgY2xvbmUgb3Vyc2VsdmVzLlxuICAgIHZhciBtb21lbnRQcm9wZXJ0aWVzID0gKGhvb2tzLm1vbWVudFByb3BlcnRpZXMgPSBbXSksXG4gICAgICAgIHVwZGF0ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcblxuICAgIGZ1bmN0aW9uIGNvcHlDb25maWcodG8sIGZyb20pIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBwcm9wLFxuICAgICAgICAgICAgdmFsLFxuICAgICAgICAgICAgbW9tZW50UHJvcGVydGllc0xlbiA9IG1vbWVudFByb3BlcnRpZXMubGVuZ3RoO1xuXG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5faXNBTW9tZW50T2JqZWN0KSkge1xuICAgICAgICAgICAgdG8uX2lzQU1vbWVudE9iamVjdCA9IGZyb20uX2lzQU1vbWVudE9iamVjdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2kpKSB7XG4gICAgICAgICAgICB0by5faSA9IGZyb20uX2k7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9mKSkge1xuICAgICAgICAgICAgdG8uX2YgPSBmcm9tLl9mO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fbCkpIHtcbiAgICAgICAgICAgIHRvLl9sID0gZnJvbS5fbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX3N0cmljdCkpIHtcbiAgICAgICAgICAgIHRvLl9zdHJpY3QgPSBmcm9tLl9zdHJpY3Q7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl90em0pKSB7XG4gICAgICAgICAgICB0by5fdHptID0gZnJvbS5fdHptO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5faXNVVEMpKSB7XG4gICAgICAgICAgICB0by5faXNVVEMgPSBmcm9tLl9pc1VUQztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX29mZnNldCkpIHtcbiAgICAgICAgICAgIHRvLl9vZmZzZXQgPSBmcm9tLl9vZmZzZXQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9wZikpIHtcbiAgICAgICAgICAgIHRvLl9wZiA9IGdldFBhcnNpbmdGbGFncyhmcm9tKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2xvY2FsZSkpIHtcbiAgICAgICAgICAgIHRvLl9sb2NhbGUgPSBmcm9tLl9sb2NhbGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9tZW50UHJvcGVydGllc0xlbiA+IDApIHtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBtb21lbnRQcm9wZXJ0aWVzTGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBwcm9wID0gbW9tZW50UHJvcGVydGllc1tpXTtcbiAgICAgICAgICAgICAgICB2YWwgPSBmcm9tW3Byb3BdO1xuICAgICAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQodmFsKSkge1xuICAgICAgICAgICAgICAgICAgICB0b1twcm9wXSA9IHZhbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG87XG4gICAgfVxuXG4gICAgLy8gTW9tZW50IHByb3RvdHlwZSBvYmplY3RcbiAgICBmdW5jdGlvbiBNb21lbnQoY29uZmlnKSB7XG4gICAgICAgIGNvcHlDb25maWcodGhpcywgY29uZmlnKTtcbiAgICAgICAgdGhpcy5fZCA9IG5ldyBEYXRlKGNvbmZpZy5fZCAhPSBudWxsID8gY29uZmlnLl9kLmdldFRpbWUoKSA6IE5hTik7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2QgPSBuZXcgRGF0ZShOYU4pO1xuICAgICAgICB9XG4gICAgICAgIC8vIFByZXZlbnQgaW5maW5pdGUgbG9vcCBpbiBjYXNlIHVwZGF0ZU9mZnNldCBjcmVhdGVzIG5ldyBtb21lbnRcbiAgICAgICAgLy8gb2JqZWN0cy5cbiAgICAgICAgaWYgKHVwZGF0ZUluUHJvZ3Jlc3MgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB1cGRhdGVJblByb2dyZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzKTtcbiAgICAgICAgICAgIHVwZGF0ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzTW9tZW50KG9iaikge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgb2JqIGluc3RhbmNlb2YgTW9tZW50IHx8IChvYmogIT0gbnVsbCAmJiBvYmouX2lzQU1vbWVudE9iamVjdCAhPSBudWxsKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdhcm4obXNnKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGhvb2tzLnN1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5ncyA9PT0gZmFsc2UgJiZcbiAgICAgICAgICAgIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgICAgY29uc29sZS53YXJuXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdEZXByZWNhdGlvbiB3YXJuaW5nOiAnICsgbXNnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZShtc2csIGZuKSB7XG4gICAgICAgIHZhciBmaXJzdFRpbWUgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiBleHRlbmQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGhvb2tzLmRlcHJlY2F0aW9uSGFuZGxlciAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyKG51bGwsIG1zZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmlyc3RUaW1lKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXSxcbiAgICAgICAgICAgICAgICAgICAgYXJnLFxuICAgICAgICAgICAgICAgICAgICBpLFxuICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgIGFyZ0xlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGFyZ0xlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGFyZyA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFyZ3VtZW50c1tpXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyArPSAnXFxuWycgKyBpICsgJ10gJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoa2V5IGluIGFyZ3VtZW50c1swXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKGFyZ3VtZW50c1swXSwga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcgKz0ga2V5ICsgJzogJyArIGFyZ3VtZW50c1swXVtrZXldICsgJywgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBhcmcuc2xpY2UoMCwgLTIpOyAvLyBSZW1vdmUgdHJhaWxpbmcgY29tbWEgYW5kIHNwYWNlXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYXJncy5wdXNoKGFyZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICAgICAgICAgIG1zZyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnXFxuQXJndW1lbnRzOiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3MpLmpvaW4oJycpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBFcnJvcigpLnN0YWNrXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBmaXJzdFRpbWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9LCBmbik7XG4gICAgfVxuXG4gICAgdmFyIGRlcHJlY2F0aW9ucyA9IHt9O1xuXG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlU2ltcGxlKG5hbWUsIG1zZykge1xuICAgICAgICBpZiAoaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyICE9IG51bGwpIHtcbiAgICAgICAgICAgIGhvb2tzLmRlcHJlY2F0aW9uSGFuZGxlcihuYW1lLCBtc2cpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZGVwcmVjYXRpb25zW25hbWVdKSB7XG4gICAgICAgICAgICB3YXJuKG1zZyk7XG4gICAgICAgICAgICBkZXByZWNhdGlvbnNbbmFtZV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaG9va3Muc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzID0gZmFsc2U7XG4gICAgaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyID0gbnVsbDtcblxuICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24oaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICh0eXBlb2YgRnVuY3Rpb24gIT09ICd1bmRlZmluZWQnICYmIGlucHV0IGluc3RhbmNlb2YgRnVuY3Rpb24pIHx8XG4gICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBGdW5jdGlvbl0nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0KGNvbmZpZykge1xuICAgICAgICB2YXIgcHJvcCwgaTtcbiAgICAgICAgZm9yIChpIGluIGNvbmZpZykge1xuICAgICAgICAgICAgaWYgKGhhc093blByb3AoY29uZmlnLCBpKSkge1xuICAgICAgICAgICAgICAgIHByb3AgPSBjb25maWdbaV07XG4gICAgICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24ocHJvcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpc1tpXSA9IHByb3A7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpc1snXycgKyBpXSA9IHByb3A7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZztcbiAgICAgICAgLy8gTGVuaWVudCBvcmRpbmFsIHBhcnNpbmcgYWNjZXB0cyBqdXN0IGEgbnVtYmVyIGluIGFkZGl0aW9uIHRvXG4gICAgICAgIC8vIG51bWJlciArIChwb3NzaWJseSkgc3R1ZmYgY29taW5nIGZyb20gX2RheU9mTW9udGhPcmRpbmFsUGFyc2UuXG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBcIm9yZGluYWxQYXJzZVwiIGZhbGxiYWNrIGluIG5leHQgbWFqb3IgcmVsZWFzZS5cbiAgICAgICAgdGhpcy5fZGF5T2ZNb250aE9yZGluYWxQYXJzZUxlbmllbnQgPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgKHRoaXMuX2RheU9mTW9udGhPcmRpbmFsUGFyc2Uuc291cmNlIHx8IHRoaXMuX29yZGluYWxQYXJzZS5zb3VyY2UpICtcbiAgICAgICAgICAgICAgICAnfCcgK1xuICAgICAgICAgICAgICAgIC9cXGR7MSwyfS8uc291cmNlXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyZ2VDb25maWdzKHBhcmVudENvbmZpZywgY2hpbGRDb25maWcpIHtcbiAgICAgICAgdmFyIHJlcyA9IGV4dGVuZCh7fSwgcGFyZW50Q29uZmlnKSxcbiAgICAgICAgICAgIHByb3A7XG4gICAgICAgIGZvciAocHJvcCBpbiBjaGlsZENvbmZpZykge1xuICAgICAgICAgICAgaWYgKGhhc093blByb3AoY2hpbGRDb25maWcsIHByb3ApKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzT2JqZWN0KHBhcmVudENvbmZpZ1twcm9wXSkgJiYgaXNPYmplY3QoY2hpbGRDb25maWdbcHJvcF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc1twcm9wXSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBleHRlbmQocmVzW3Byb3BdLCBwYXJlbnRDb25maWdbcHJvcF0pO1xuICAgICAgICAgICAgICAgICAgICBleHRlbmQocmVzW3Byb3BdLCBjaGlsZENvbmZpZ1twcm9wXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaGlsZENvbmZpZ1twcm9wXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc1twcm9wXSA9IGNoaWxkQ29uZmlnW3Byb3BdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZXNbcHJvcF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAocHJvcCBpbiBwYXJlbnRDb25maWcpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBoYXNPd25Qcm9wKHBhcmVudENvbmZpZywgcHJvcCkgJiZcbiAgICAgICAgICAgICAgICAhaGFzT3duUHJvcChjaGlsZENvbmZpZywgcHJvcCkgJiZcbiAgICAgICAgICAgICAgICBpc09iamVjdChwYXJlbnRDb25maWdbcHJvcF0pXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgY2hhbmdlcyB0byBwcm9wZXJ0aWVzIGRvbid0IG1vZGlmeSBwYXJlbnQgY29uZmlnXG4gICAgICAgICAgICAgICAgcmVzW3Byb3BdID0gZXh0ZW5kKHt9LCByZXNbcHJvcF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gTG9jYWxlKGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0KGNvbmZpZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIga2V5cztcblxuICAgIGlmIChPYmplY3Qua2V5cykge1xuICAgICAgICBrZXlzID0gT2JqZWN0LmtleXM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAga2V5cyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgIHZhciBpLFxuICAgICAgICAgICAgICAgIHJlcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChpIGluIG9iaikge1xuICAgICAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKG9iaiwgaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2goaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdENhbGVuZGFyID0ge1xuICAgICAgICBzYW1lRGF5OiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgIG5leHREYXk6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthdF0gTFQnLFxuICAgICAgICBsYXN0RGF5OiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICBsYXN0V2VlazogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBjYWxlbmRhcihrZXksIG1vbSwgbm93KSB7XG4gICAgICAgIHZhciBvdXRwdXQgPSB0aGlzLl9jYWxlbmRhcltrZXldIHx8IHRoaXMuX2NhbGVuZGFyWydzYW1lRWxzZSddO1xuICAgICAgICByZXR1cm4gaXNGdW5jdGlvbihvdXRwdXQpID8gb3V0cHV0LmNhbGwobW9tLCBub3cpIDogb3V0cHV0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHplcm9GaWxsKG51bWJlciwgdGFyZ2V0TGVuZ3RoLCBmb3JjZVNpZ24pIHtcbiAgICAgICAgdmFyIGFic051bWJlciA9ICcnICsgTWF0aC5hYnMobnVtYmVyKSxcbiAgICAgICAgICAgIHplcm9zVG9GaWxsID0gdGFyZ2V0TGVuZ3RoIC0gYWJzTnVtYmVyLmxlbmd0aCxcbiAgICAgICAgICAgIHNpZ24gPSBudW1iZXIgPj0gMDtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChzaWduID8gKGZvcmNlU2lnbiA/ICcrJyA6ICcnKSA6ICctJykgK1xuICAgICAgICAgICAgTWF0aC5wb3coMTAsIE1hdGgubWF4KDAsIHplcm9zVG9GaWxsKSkudG9TdHJpbmcoKS5zdWJzdHIoMSkgK1xuICAgICAgICAgICAgYWJzTnVtYmVyXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdmFyIGZvcm1hdHRpbmdUb2tlbnMgPVxuICAgICAgICAgICAgLyhcXFtbXlxcW10qXFxdKXwoXFxcXCk/KFtIaF1tbShzcyk/fE1vfE1NP00/TT98RG98REREb3xERD9EP0Q/fGRkZD9kP3xkbz98d1tvfHddP3xXW298V10/fFFvP3xOezEsNX18WVlZWVlZfFlZWVlZfFlZWVl8WVl8eXsyLDR9fHlvP3xnZyhnZ2c/KT98R0coR0dHPyk/fGV8RXxhfEF8aGg/fEhIP3xraz98bW0/fHNzP3xTezEsOX18eHxYfHp6P3xaWj98LikvZyxcbiAgICAgICAgbG9jYWxGb3JtYXR0aW5nVG9rZW5zID0gLyhcXFtbXlxcW10qXFxdKXwoXFxcXCk/KExUU3xMVHxMTD9MP0w/fGx7MSw0fSkvZyxcbiAgICAgICAgZm9ybWF0RnVuY3Rpb25zID0ge30sXG4gICAgICAgIGZvcm1hdFRva2VuRnVuY3Rpb25zID0ge307XG5cbiAgICAvLyB0b2tlbjogICAgJ00nXG4gICAgLy8gcGFkZGVkOiAgIFsnTU0nLCAyXVxuICAgIC8vIG9yZGluYWw6ICAnTW8nXG4gICAgLy8gY2FsbGJhY2s6IGZ1bmN0aW9uICgpIHsgdGhpcy5tb250aCgpICsgMSB9XG4gICAgZnVuY3Rpb24gYWRkRm9ybWF0VG9rZW4odG9rZW4sIHBhZGRlZCwgb3JkaW5hbCwgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIGZ1bmMgPSBjYWxsYmFjaztcbiAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGZ1bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGJhY2tdKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgZm9ybWF0VG9rZW5GdW5jdGlvbnNbdG9rZW5dID0gZnVuYztcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFkZGVkKSB7XG4gICAgICAgICAgICBmb3JtYXRUb2tlbkZ1bmN0aW9uc1twYWRkZWRbMF1dID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB6ZXJvRmlsbChmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHBhZGRlZFsxXSwgcGFkZGVkWzJdKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9yZGluYWwpIHtcbiAgICAgICAgICAgIGZvcm1hdFRva2VuRnVuY3Rpb25zW29yZGluYWxdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5vcmRpbmFsKFxuICAgICAgICAgICAgICAgICAgICBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksXG4gICAgICAgICAgICAgICAgICAgIHRva2VuXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZW1vdmVGb3JtYXR0aW5nVG9rZW5zKGlucHV0KSB7XG4gICAgICAgIGlmIChpbnB1dC5tYXRjaCgvXFxbW1xcc1xcU10vKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0LnJlcGxhY2UoL15cXFt8XFxdJC9nLCAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlucHV0LnJlcGxhY2UoL1xcXFwvZywgJycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VGb3JtYXRGdW5jdGlvbihmb3JtYXQpIHtcbiAgICAgICAgdmFyIGFycmF5ID0gZm9ybWF0Lm1hdGNoKGZvcm1hdHRpbmdUb2tlbnMpLFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIGxlbmd0aDtcblxuICAgICAgICBmb3IgKGkgPSAwLCBsZW5ndGggPSBhcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGZvcm1hdFRva2VuRnVuY3Rpb25zW2FycmF5W2ldXSkge1xuICAgICAgICAgICAgICAgIGFycmF5W2ldID0gZm9ybWF0VG9rZW5GdW5jdGlvbnNbYXJyYXlbaV1dO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHJlbW92ZUZvcm1hdHRpbmdUb2tlbnMoYXJyYXlbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChtb20pIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPSAnJyxcbiAgICAgICAgICAgICAgICBpO1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0ICs9IGlzRnVuY3Rpb24oYXJyYXlbaV0pXG4gICAgICAgICAgICAgICAgICAgID8gYXJyYXlbaV0uY2FsbChtb20sIGZvcm1hdClcbiAgICAgICAgICAgICAgICAgICAgOiBhcnJheVtpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gZm9ybWF0IGRhdGUgdXNpbmcgbmF0aXZlIGRhdGUgb2JqZWN0XG4gICAgZnVuY3Rpb24gZm9ybWF0TW9tZW50KG0sIGZvcm1hdCkge1xuICAgICAgICBpZiAoIW0uaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gbS5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcm1hdCA9IGV4cGFuZEZvcm1hdChmb3JtYXQsIG0ubG9jYWxlRGF0YSgpKTtcbiAgICAgICAgZm9ybWF0RnVuY3Rpb25zW2Zvcm1hdF0gPVxuICAgICAgICAgICAgZm9ybWF0RnVuY3Rpb25zW2Zvcm1hdF0gfHwgbWFrZUZvcm1hdEZ1bmN0aW9uKGZvcm1hdCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdEZ1bmN0aW9uc1tmb3JtYXRdKG0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4cGFuZEZvcm1hdChmb3JtYXQsIGxvY2FsZSkge1xuICAgICAgICB2YXIgaSA9IDU7XG5cbiAgICAgICAgZnVuY3Rpb24gcmVwbGFjZUxvbmdEYXRlRm9ybWF0VG9rZW5zKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlLmxvbmdEYXRlRm9ybWF0KGlucHV0KSB8fCBpbnB1dDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy5sYXN0SW5kZXggPSAwO1xuICAgICAgICB3aGlsZSAoaSA+PSAwICYmIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKFxuICAgICAgICAgICAgICAgIGxvY2FsRm9ybWF0dGluZ1Rva2VucyxcbiAgICAgICAgICAgICAgICByZXBsYWNlTG9uZ0RhdGVGb3JtYXRUb2tlbnNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBsb2NhbEZvcm1hdHRpbmdUb2tlbnMubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgIGkgLT0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmb3JtYXQ7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb25nRGF0ZUZvcm1hdCA9IHtcbiAgICAgICAgTFRTOiAnaDptbTpzcyBBJyxcbiAgICAgICAgTFQ6ICdoOm1tIEEnLFxuICAgICAgICBMOiAnTU0vREQvWVlZWScsXG4gICAgICAgIExMOiAnTU1NTSBELCBZWVlZJyxcbiAgICAgICAgTExMOiAnTU1NTSBELCBZWVlZIGg6bW0gQScsXG4gICAgICAgIExMTEw6ICdkZGRkLCBNTU1NIEQsIFlZWVkgaDptbSBBJyxcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gbG9uZ0RhdGVGb3JtYXQoa2V5KSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB0aGlzLl9sb25nRGF0ZUZvcm1hdFtrZXldLFxuICAgICAgICAgICAgZm9ybWF0VXBwZXIgPSB0aGlzLl9sb25nRGF0ZUZvcm1hdFtrZXkudG9VcHBlckNhc2UoKV07XG5cbiAgICAgICAgaWYgKGZvcm1hdCB8fCAhZm9ybWF0VXBwZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb25nRGF0ZUZvcm1hdFtrZXldID0gZm9ybWF0VXBwZXJcbiAgICAgICAgICAgIC5tYXRjaChmb3JtYXR0aW5nVG9rZW5zKVxuICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAodG9rKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB0b2sgPT09ICdNTU1NJyB8fFxuICAgICAgICAgICAgICAgICAgICB0b2sgPT09ICdNTScgfHxcbiAgICAgICAgICAgICAgICAgICAgdG9rID09PSAnREQnIHx8XG4gICAgICAgICAgICAgICAgICAgIHRvayA9PT0gJ2RkZGQnXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0b2suc2xpY2UoMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0b2s7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmpvaW4oJycpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9sb25nRGF0ZUZvcm1hdFtrZXldO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0SW52YWxpZERhdGUgPSAnSW52YWxpZCBkYXRlJztcblxuICAgIGZ1bmN0aW9uIGludmFsaWREYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52YWxpZERhdGU7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRPcmRpbmFsID0gJyVkJyxcbiAgICAgICAgZGVmYXVsdERheU9mTW9udGhPcmRpbmFsUGFyc2UgPSAvXFxkezEsMn0vO1xuXG4gICAgZnVuY3Rpb24gb3JkaW5hbChudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29yZGluYWwucmVwbGFjZSgnJWQnLCBudW1iZXIpO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0UmVsYXRpdmVUaW1lID0ge1xuICAgICAgICBmdXR1cmU6ICdpbiAlcycsXG4gICAgICAgIHBhc3Q6ICclcyBhZ28nLFxuICAgICAgICBzOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgIHNzOiAnJWQgc2Vjb25kcycsXG4gICAgICAgIG06ICdhIG1pbnV0ZScsXG4gICAgICAgIG1tOiAnJWQgbWludXRlcycsXG4gICAgICAgIGg6ICdhbiBob3VyJyxcbiAgICAgICAgaGg6ICclZCBob3VycycsXG4gICAgICAgIGQ6ICdhIGRheScsXG4gICAgICAgIGRkOiAnJWQgZGF5cycsXG4gICAgICAgIHc6ICdhIHdlZWsnLFxuICAgICAgICB3dzogJyVkIHdlZWtzJyxcbiAgICAgICAgTTogJ2EgbW9udGgnLFxuICAgICAgICBNTTogJyVkIG1vbnRocycsXG4gICAgICAgIHk6ICdhIHllYXInLFxuICAgICAgICB5eTogJyVkIHllYXJzJyxcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgb3V0cHV0ID0gdGhpcy5fcmVsYXRpdmVUaW1lW3N0cmluZ107XG4gICAgICAgIHJldHVybiBpc0Z1bmN0aW9uKG91dHB1dClcbiAgICAgICAgICAgID8gb3V0cHV0KG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSlcbiAgICAgICAgICAgIDogb3V0cHV0LnJlcGxhY2UoLyVkL2ksIG51bWJlcik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFzdEZ1dHVyZShkaWZmLCBvdXRwdXQpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHRoaXMuX3JlbGF0aXZlVGltZVtkaWZmID4gMCA/ICdmdXR1cmUnIDogJ3Bhc3QnXTtcbiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24oZm9ybWF0KSA/IGZvcm1hdChvdXRwdXQpIDogZm9ybWF0LnJlcGxhY2UoLyVzL2ksIG91dHB1dCk7XG4gICAgfVxuXG4gICAgdmFyIGFsaWFzZXMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGFkZFVuaXRBbGlhcyh1bml0LCBzaG9ydGhhbmQpIHtcbiAgICAgICAgdmFyIGxvd2VyQ2FzZSA9IHVuaXQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgYWxpYXNlc1tsb3dlckNhc2VdID0gYWxpYXNlc1tsb3dlckNhc2UgKyAncyddID0gYWxpYXNlc1tzaG9ydGhhbmRdID0gdW5pdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBub3JtYWxpemVVbml0cyh1bml0cykge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHVuaXRzID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgPyBhbGlhc2VzW3VuaXRzXSB8fCBhbGlhc2VzW3VuaXRzLnRvTG93ZXJDYXNlKCldXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBub3JtYWxpemVPYmplY3RVbml0cyhpbnB1dE9iamVjdCkge1xuICAgICAgICB2YXIgbm9ybWFsaXplZElucHV0ID0ge30sXG4gICAgICAgICAgICBub3JtYWxpemVkUHJvcCxcbiAgICAgICAgICAgIHByb3A7XG5cbiAgICAgICAgZm9yIChwcm9wIGluIGlucHV0T2JqZWN0KSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcChpbnB1dE9iamVjdCwgcHJvcCkpIHtcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkUHJvcCA9IG5vcm1hbGl6ZVVuaXRzKHByb3ApO1xuICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemVkUHJvcCkge1xuICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkSW5wdXRbbm9ybWFsaXplZFByb3BdID0gaW5wdXRPYmplY3RbcHJvcF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRJbnB1dDtcbiAgICB9XG5cbiAgICB2YXIgcHJpb3JpdGllcyA9IHt9O1xuXG4gICAgZnVuY3Rpb24gYWRkVW5pdFByaW9yaXR5KHVuaXQsIHByaW9yaXR5KSB7XG4gICAgICAgIHByaW9yaXRpZXNbdW5pdF0gPSBwcmlvcml0eTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRQcmlvcml0aXplZFVuaXRzKHVuaXRzT2JqKSB7XG4gICAgICAgIHZhciB1bml0cyA9IFtdLFxuICAgICAgICAgICAgdTtcbiAgICAgICAgZm9yICh1IGluIHVuaXRzT2JqKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcCh1bml0c09iaiwgdSkpIHtcbiAgICAgICAgICAgICAgICB1bml0cy5wdXNoKHsgdW5pdDogdSwgcHJpb3JpdHk6IHByaW9yaXRpZXNbdV0gfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdW5pdHMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgcmV0dXJuIGEucHJpb3JpdHkgLSBiLnByaW9yaXR5O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHVuaXRzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzTGVhcFllYXIoeWVhcikge1xuICAgICAgICByZXR1cm4gKHllYXIgJSA0ID09PSAwICYmIHllYXIgJSAxMDAgIT09IDApIHx8IHllYXIgJSA0MDAgPT09IDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWJzRmxvb3IobnVtYmVyKSB7XG4gICAgICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICAgICAgICAvLyAtMCAtPiAwXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5jZWlsKG51bWJlcikgfHwgMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmZsb29yKG51bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0ludChhcmd1bWVudEZvckNvZXJjaW9uKSB7XG4gICAgICAgIHZhciBjb2VyY2VkTnVtYmVyID0gK2FyZ3VtZW50Rm9yQ29lcmNpb24sXG4gICAgICAgICAgICB2YWx1ZSA9IDA7XG5cbiAgICAgICAgaWYgKGNvZXJjZWROdW1iZXIgIT09IDAgJiYgaXNGaW5pdGUoY29lcmNlZE51bWJlcikpIHtcbiAgICAgICAgICAgIHZhbHVlID0gYWJzRmxvb3IoY29lcmNlZE51bWJlcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUdldFNldCh1bml0LCBrZWVwVGltZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHNldCQxKHRoaXMsIHVuaXQsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcywga2VlcFRpbWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0KHRoaXMsIHVuaXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldChtb20sIHVuaXQpIHtcbiAgICAgICAgcmV0dXJuIG1vbS5pc1ZhbGlkKClcbiAgICAgICAgICAgID8gbW9tLl9kWydnZXQnICsgKG1vbS5faXNVVEMgPyAnVVRDJyA6ICcnKSArIHVuaXRdKClcbiAgICAgICAgICAgIDogTmFOO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldCQxKG1vbSwgdW5pdCwgdmFsdWUpIHtcbiAgICAgICAgaWYgKG1vbS5pc1ZhbGlkKCkgJiYgIWlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHVuaXQgPT09ICdGdWxsWWVhcicgJiZcbiAgICAgICAgICAgICAgICBpc0xlYXBZZWFyKG1vbS55ZWFyKCkpICYmXG4gICAgICAgICAgICAgICAgbW9tLm1vbnRoKCkgPT09IDEgJiZcbiAgICAgICAgICAgICAgICBtb20uZGF0ZSgpID09PSAyOVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB0b0ludCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgbW9tLl9kWydzZXQnICsgKG1vbS5faXNVVEMgPyAnVVRDJyA6ICcnKSArIHVuaXRdKFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgbW9tLm1vbnRoKCksXG4gICAgICAgICAgICAgICAgICAgIGRheXNJbk1vbnRoKHZhbHVlLCBtb20ubW9udGgoKSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb20uX2RbJ3NldCcgKyAobW9tLl9pc1VUQyA/ICdVVEMnIDogJycpICsgdW5pdF0odmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gc3RyaW5nR2V0KHVuaXRzKSB7XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICBpZiAoaXNGdW5jdGlvbih0aGlzW3VuaXRzXSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzW3VuaXRzXSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0cmluZ1NldCh1bml0cywgdmFsdWUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB1bml0cyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHVuaXRzID0gbm9ybWFsaXplT2JqZWN0VW5pdHModW5pdHMpO1xuICAgICAgICAgICAgdmFyIHByaW9yaXRpemVkID0gZ2V0UHJpb3JpdGl6ZWRVbml0cyh1bml0cyksXG4gICAgICAgICAgICAgICAgaSxcbiAgICAgICAgICAgICAgICBwcmlvcml0aXplZExlbiA9IHByaW9yaXRpemVkLmxlbmd0aDtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwcmlvcml0aXplZExlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdGhpc1twcmlvcml0aXplZFtpXS51bml0XSh1bml0c1twcmlvcml0aXplZFtpXS51bml0XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKHRoaXNbdW5pdHNdKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzW3VuaXRzXSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIG1hdGNoMSA9IC9cXGQvLCAvLyAgICAgICAwIC0gOVxuICAgICAgICBtYXRjaDIgPSAvXFxkXFxkLywgLy8gICAgICAwMCAtIDk5XG4gICAgICAgIG1hdGNoMyA9IC9cXGR7M30vLCAvLyAgICAgMDAwIC0gOTk5XG4gICAgICAgIG1hdGNoNCA9IC9cXGR7NH0vLCAvLyAgICAwMDAwIC0gOTk5OVxuICAgICAgICBtYXRjaDYgPSAvWystXT9cXGR7Nn0vLCAvLyAtOTk5OTk5IC0gOTk5OTk5XG4gICAgICAgIG1hdGNoMXRvMiA9IC9cXGRcXGQ/LywgLy8gICAgICAgMCAtIDk5XG4gICAgICAgIG1hdGNoM3RvNCA9IC9cXGRcXGRcXGRcXGQ/LywgLy8gICAgIDk5OSAtIDk5OTlcbiAgICAgICAgbWF0Y2g1dG82ID0gL1xcZFxcZFxcZFxcZFxcZFxcZD8vLCAvLyAgIDk5OTk5IC0gOTk5OTk5XG4gICAgICAgIG1hdGNoMXRvMyA9IC9cXGR7MSwzfS8sIC8vICAgICAgIDAgLSA5OTlcbiAgICAgICAgbWF0Y2gxdG80ID0gL1xcZHsxLDR9LywgLy8gICAgICAgMCAtIDk5OTlcbiAgICAgICAgbWF0Y2gxdG82ID0gL1srLV0/XFxkezEsNn0vLCAvLyAtOTk5OTk5IC0gOTk5OTk5XG4gICAgICAgIG1hdGNoVW5zaWduZWQgPSAvXFxkKy8sIC8vICAgICAgIDAgLSBpbmZcbiAgICAgICAgbWF0Y2hTaWduZWQgPSAvWystXT9cXGQrLywgLy8gICAgLWluZiAtIGluZlxuICAgICAgICBtYXRjaE9mZnNldCA9IC9afFsrLV1cXGRcXGQ6P1xcZFxcZC9naSwgLy8gKzAwOjAwIC0wMDowMCArMDAwMCAtMDAwMCBvciBaXG4gICAgICAgIG1hdGNoU2hvcnRPZmZzZXQgPSAvWnxbKy1dXFxkXFxkKD86Oj9cXGRcXGQpPy9naSwgLy8gKzAwIC0wMCArMDA6MDAgLTAwOjAwICswMDAwIC0wMDAwIG9yIFpcbiAgICAgICAgbWF0Y2hUaW1lc3RhbXAgPSAvWystXT9cXGQrKFxcLlxcZHsxLDN9KT8vLCAvLyAxMjM0NTY3ODkgMTIzNDU2Nzg5LjEyM1xuICAgICAgICAvLyBhbnkgd29yZCAob3IgdHdvKSBjaGFyYWN0ZXJzIG9yIG51bWJlcnMgaW5jbHVkaW5nIHR3by90aHJlZSB3b3JkIG1vbnRoIGluIGFyYWJpYy5cbiAgICAgICAgLy8gaW5jbHVkZXMgc2NvdHRpc2ggZ2FlbGljIHR3byB3b3JkIGFuZCBoeXBoZW5hdGVkIG1vbnRoc1xuICAgICAgICBtYXRjaFdvcmQgPVxuICAgICAgICAgICAgL1swLTldezAsMjU2fVsnYS16XFx1MDBBMC1cXHUwNUZGXFx1MDcwMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRjA3XFx1RkYxMC1cXHVGRkVGXXsxLDI1Nn18W1xcdTA2MDAtXFx1MDZGRlxcL117MSwyNTZ9KFxccyo/W1xcdTA2MDAtXFx1MDZGRl17MSwyNTZ9KXsxLDJ9L2ksXG4gICAgICAgIHJlZ2V4ZXM7XG5cbiAgICByZWdleGVzID0ge307XG5cbiAgICBmdW5jdGlvbiBhZGRSZWdleFRva2VuKHRva2VuLCByZWdleCwgc3RyaWN0UmVnZXgpIHtcbiAgICAgICAgcmVnZXhlc1t0b2tlbl0gPSBpc0Z1bmN0aW9uKHJlZ2V4KVxuICAgICAgICAgICAgPyByZWdleFxuICAgICAgICAgICAgOiBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZURhdGEpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBpc1N0cmljdCAmJiBzdHJpY3RSZWdleCA/IHN0cmljdFJlZ2V4IDogcmVnZXg7XG4gICAgICAgICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UGFyc2VSZWdleEZvclRva2VuKHRva2VuLCBjb25maWcpIHtcbiAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHJlZ2V4ZXMsIHRva2VuKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAodW5lc2NhcGVGb3JtYXQodG9rZW4pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZWdleGVzW3Rva2VuXShjb25maWcuX3N0cmljdCwgY29uZmlnLl9sb2NhbGUpO1xuICAgIH1cblxuICAgIC8vIENvZGUgZnJvbSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzM1NjE0OTMvaXMtdGhlcmUtYS1yZWdleHAtZXNjYXBlLWZ1bmN0aW9uLWluLWphdmFzY3JpcHRcbiAgICBmdW5jdGlvbiB1bmVzY2FwZUZvcm1hdChzKSB7XG4gICAgICAgIHJldHVybiByZWdleEVzY2FwZShcbiAgICAgICAgICAgIHNcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgnXFxcXCcsICcnKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKFxuICAgICAgICAgICAgICAgICAgICAvXFxcXChcXFspfFxcXFwoXFxdKXxcXFsoW15cXF1cXFtdKilcXF18XFxcXCguKS9nLFxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAobWF0Y2hlZCwgcDEsIHAyLCBwMywgcDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwMSB8fCBwMiB8fCBwMyB8fCBwNDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWdleEVzY2FwZShzKSB7XG4gICAgICAgIHJldHVybiBzLnJlcGxhY2UoL1stXFwvXFxcXF4kKis/LigpfFtcXF17fV0vZywgJ1xcXFwkJicpO1xuICAgIH1cblxuICAgIHZhciB0b2tlbnMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGFkZFBhcnNlVG9rZW4odG9rZW4sIGNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBpLFxuICAgICAgICAgICAgZnVuYyA9IGNhbGxiYWNrLFxuICAgICAgICAgICAgdG9rZW5MZW47XG4gICAgICAgIGlmICh0eXBlb2YgdG9rZW4gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0b2tlbiA9IFt0b2tlbl07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTnVtYmVyKGNhbGxiYWNrKSkge1xuICAgICAgICAgICAgZnVuYyA9IGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgICAgICAgICBhcnJheVtjYWxsYmFja10gPSB0b0ludChpbnB1dCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHRva2VuTGVuID0gdG9rZW4ubGVuZ3RoO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdG9rZW5MZW47IGkrKykge1xuICAgICAgICAgICAgdG9rZW5zW3Rva2VuW2ldXSA9IGZ1bmM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRXZWVrUGFyc2VUb2tlbih0b2tlbiwgY2FsbGJhY2spIHtcbiAgICAgICAgYWRkUGFyc2VUb2tlbih0b2tlbiwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnLCB0b2tlbikge1xuICAgICAgICAgICAgY29uZmlnLl93ID0gY29uZmlnLl93IHx8IHt9O1xuICAgICAgICAgICAgY2FsbGJhY2soaW5wdXQsIGNvbmZpZy5fdywgY29uZmlnLCB0b2tlbik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZFRpbWVUb0FycmF5RnJvbVRva2VuKHRva2VuLCBpbnB1dCwgY29uZmlnKSB7XG4gICAgICAgIGlmIChpbnB1dCAhPSBudWxsICYmIGhhc093blByb3AodG9rZW5zLCB0b2tlbikpIHtcbiAgICAgICAgICAgIHRva2Vuc1t0b2tlbl0oaW5wdXQsIGNvbmZpZy5fYSwgY29uZmlnLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgWUVBUiA9IDAsXG4gICAgICAgIE1PTlRIID0gMSxcbiAgICAgICAgREFURSA9IDIsXG4gICAgICAgIEhPVVIgPSAzLFxuICAgICAgICBNSU5VVEUgPSA0LFxuICAgICAgICBTRUNPTkQgPSA1LFxuICAgICAgICBNSUxMSVNFQ09ORCA9IDYsXG4gICAgICAgIFdFRUsgPSA3LFxuICAgICAgICBXRUVLREFZID0gODtcblxuICAgIGZ1bmN0aW9uIG1vZChuLCB4KSB7XG4gICAgICAgIHJldHVybiAoKG4gJSB4KSArIHgpICUgeDtcbiAgICB9XG5cbiAgICB2YXIgaW5kZXhPZjtcblxuICAgIGlmIChBcnJheS5wcm90b3R5cGUuaW5kZXhPZikge1xuICAgICAgICBpbmRleE9mID0gQXJyYXkucHJvdG90eXBlLmluZGV4T2Y7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaW5kZXhPZiA9IGZ1bmN0aW9uIChvKSB7XG4gICAgICAgICAgICAvLyBJIGtub3dcbiAgICAgICAgICAgIHZhciBpO1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpc1tpXSA9PT0gbykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGF5c0luTW9udGgoeWVhciwgbW9udGgpIHtcbiAgICAgICAgaWYgKGlzTmFOKHllYXIpIHx8IGlzTmFOKG1vbnRoKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbW9kTW9udGggPSBtb2QobW9udGgsIDEyKTtcbiAgICAgICAgeWVhciArPSAobW9udGggLSBtb2RNb250aCkgLyAxMjtcbiAgICAgICAgcmV0dXJuIG1vZE1vbnRoID09PSAxXG4gICAgICAgICAgICA/IGlzTGVhcFllYXIoeWVhcilcbiAgICAgICAgICAgICAgICA/IDI5XG4gICAgICAgICAgICAgICAgOiAyOFxuICAgICAgICAgICAgOiAzMSAtICgobW9kTW9udGggJSA3KSAlIDIpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdNJywgWydNTScsIDJdLCAnTW8nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vbnRoKCkgKyAxO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ01NTScsIDAsIDAsIGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm1vbnRoc1Nob3J0KHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignTU1NTScsIDAsIDAsIGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm1vbnRocyh0aGlzLCBmb3JtYXQpO1xuICAgIH0pO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdtb250aCcsICdNJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdtb250aCcsIDgpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignTScsIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignTU0nLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignTU1NJywgZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5tb250aHNTaG9ydFJlZ2V4KGlzU3RyaWN0KTtcbiAgICB9KTtcbiAgICBhZGRSZWdleFRva2VuKCdNTU1NJywgZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5tb250aHNSZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG5cbiAgICBhZGRQYXJzZVRva2VuKFsnTScsICdNTSddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W01PTlRIXSA9IHRvSW50KGlucHV0KSAtIDE7XG4gICAgfSk7XG5cbiAgICBhZGRQYXJzZVRva2VuKFsnTU1NJywgJ01NTU0nXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB2YXIgbW9udGggPSBjb25maWcuX2xvY2FsZS5tb250aHNQYXJzZShpbnB1dCwgdG9rZW4sIGNvbmZpZy5fc3RyaWN0KTtcbiAgICAgICAgLy8gaWYgd2UgZGlkbid0IGZpbmQgYSBtb250aCBuYW1lLCBtYXJrIHRoZSBkYXRlIGFzIGludmFsaWQuXG4gICAgICAgIGlmIChtb250aCAhPSBudWxsKSB7XG4gICAgICAgICAgICBhcnJheVtNT05USF0gPSBtb250aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmludmFsaWRNb250aCA9IGlucHV0O1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBMT0NBTEVTXG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZU1vbnRocyA9XG4gICAgICAgICAgICAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoXG4gICAgICAgICAgICAgICAgJ18nXG4gICAgICAgICAgICApLFxuICAgICAgICBkZWZhdWx0TG9jYWxlTW9udGhzU2hvcnQgPVxuICAgICAgICAgICAgJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLFxuICAgICAgICBNT05USFNfSU5fRk9STUFUID0gL0Rbb0RdPyhcXFtbXlxcW1xcXV0qXFxdfFxccykrTU1NTT8vLFxuICAgICAgICBkZWZhdWx0TW9udGhzU2hvcnRSZWdleCA9IG1hdGNoV29yZCxcbiAgICAgICAgZGVmYXVsdE1vbnRoc1JlZ2V4ID0gbWF0Y2hXb3JkO1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlTW9udGhzKG0sIGZvcm1hdCkge1xuICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX21vbnRocylcbiAgICAgICAgICAgICAgICA/IHRoaXMuX21vbnRoc1xuICAgICAgICAgICAgICAgIDogdGhpcy5fbW9udGhzWydzdGFuZGFsb25lJ107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzQXJyYXkodGhpcy5fbW9udGhzKVxuICAgICAgICAgICAgPyB0aGlzLl9tb250aHNbbS5tb250aCgpXVxuICAgICAgICAgICAgOiB0aGlzLl9tb250aHNbXG4gICAgICAgICAgICAgICAgICAodGhpcy5fbW9udGhzLmlzRm9ybWF0IHx8IE1PTlRIU19JTl9GT1JNQVQpLnRlc3QoZm9ybWF0KVxuICAgICAgICAgICAgICAgICAgICAgID8gJ2Zvcm1hdCdcbiAgICAgICAgICAgICAgICAgICAgICA6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgICAgICBdW20ubW9udGgoKV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxlTW9udGhzU2hvcnQobSwgZm9ybWF0KSB7XG4gICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgcmV0dXJuIGlzQXJyYXkodGhpcy5fbW9udGhzU2hvcnQpXG4gICAgICAgICAgICAgICAgPyB0aGlzLl9tb250aHNTaG9ydFxuICAgICAgICAgICAgICAgIDogdGhpcy5fbW9udGhzU2hvcnRbJ3N0YW5kYWxvbmUnXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHNTaG9ydClcbiAgICAgICAgICAgID8gdGhpcy5fbW9udGhzU2hvcnRbbS5tb250aCgpXVxuICAgICAgICAgICAgOiB0aGlzLl9tb250aHNTaG9ydFtcbiAgICAgICAgICAgICAgICAgIE1PTlRIU19JTl9GT1JNQVQudGVzdChmb3JtYXQpID8gJ2Zvcm1hdCcgOiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICAgICAgXVttLm1vbnRoKCldO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZVN0cmljdFBhcnNlKG1vbnRoTmFtZSwgZm9ybWF0LCBzdHJpY3QpIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBpaSxcbiAgICAgICAgICAgIG1vbSxcbiAgICAgICAgICAgIGxsYyA9IG1vbnRoTmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoIXRoaXMuX21vbnRoc1BhcnNlKSB7XG4gICAgICAgICAgICAvLyB0aGlzIGlzIG5vdCB1c2VkXG4gICAgICAgICAgICB0aGlzLl9tb250aHNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbG9uZ01vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7ICsraSkge1xuICAgICAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgaV0pO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Nob3J0TW9udGhzUGFyc2VbaV0gPSB0aGlzLm1vbnRoc1Nob3J0KFxuICAgICAgICAgICAgICAgICAgICBtb20sXG4gICAgICAgICAgICAgICAgICAgICcnXG4gICAgICAgICAgICAgICAgKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvbmdNb250aHNQYXJzZVtpXSA9IHRoaXMubW9udGhzKG1vbSwgJycpLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RyaWN0KSB7XG4gICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnTU1NJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0TW9udGhzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnTU1NJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0TW9udGhzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0TW9udGhzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvY2FsZU1vbnRoc1BhcnNlKG1vbnRoTmFtZSwgZm9ybWF0LCBzdHJpY3QpIHtcbiAgICAgICAgdmFyIGksIG1vbSwgcmVnZXg7XG5cbiAgICAgICAgaWYgKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGVTdHJpY3RQYXJzZS5jYWxsKHRoaXMsIG1vbnRoTmFtZSwgZm9ybWF0LCBzdHJpY3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl9tb250aHNQYXJzZSkge1xuICAgICAgICAgICAgdGhpcy5fbW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX2xvbmdNb250aHNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVE9ETzogYWRkIHNvcnRpbmdcbiAgICAgICAgLy8gU29ydGluZyBtYWtlcyBzdXJlIGlmIG9uZSBtb250aCAob3IgYWJicikgaXMgYSBwcmVmaXggb2YgYW5vdGhlclxuICAgICAgICAvLyBzZWUgc29ydGluZyBpbiBjb21wdXRlTW9udGhzUGFyc2VcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCBpXSk7XG4gICAgICAgICAgICBpZiAoc3RyaWN0ICYmICF0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgICAgICAgICAnXicgKyB0aGlzLm1vbnRocyhtb20sICcnKS5yZXBsYWNlKCcuJywgJycpICsgJyQnLFxuICAgICAgICAgICAgICAgICAgICAnaSdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Nob3J0TW9udGhzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgICAgICAgICAnXicgKyB0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnJykgKyAnJCcsXG4gICAgICAgICAgICAgICAgICAgICdpJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXN0cmljdCAmJiAhdGhpcy5fbW9udGhzUGFyc2VbaV0pIHtcbiAgICAgICAgICAgICAgICByZWdleCA9XG4gICAgICAgICAgICAgICAgICAgICdeJyArIHRoaXMubW9udGhzKG1vbSwgJycpICsgJ3xeJyArIHRoaXMubW9udGhzU2hvcnQobW9tLCAnJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKHJlZ2V4LnJlcGxhY2UoJy4nLCAnJyksICdpJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyB0ZXN0IHRoZSByZWdleFxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHN0cmljdCAmJlxuICAgICAgICAgICAgICAgIGZvcm1hdCA9PT0gJ01NTU0nICYmXG4gICAgICAgICAgICAgICAgdGhpcy5fbG9uZ01vbnRoc1BhcnNlW2ldLnRlc3QobW9udGhOYW1lKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIHN0cmljdCAmJlxuICAgICAgICAgICAgICAgIGZvcm1hdCA9PT0gJ01NTScgJiZcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW2ldLnRlc3QobW9udGhOYW1lKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJpY3QgJiYgdGhpcy5fbW9udGhzUGFyc2VbaV0udGVzdChtb250aE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBzZXRNb250aChtb20sIHZhbHVlKSB7XG4gICAgICAgIHZhciBkYXlPZk1vbnRoO1xuXG4gICAgICAgIGlmICghbW9tLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgLy8gTm8gb3BcbiAgICAgICAgICAgIHJldHVybiBtb207XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgaWYgKC9eXFxkKyQvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB0b0ludCh2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gbW9tLmxvY2FsZURhdGEoKS5tb250aHNQYXJzZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogQW5vdGhlciBzaWxlbnQgZmFpbHVyZT9cbiAgICAgICAgICAgICAgICBpZiAoIWlzTnVtYmVyKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbW9tO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGRheU9mTW9udGggPSBNYXRoLm1pbihtb20uZGF0ZSgpLCBkYXlzSW5Nb250aChtb20ueWVhcigpLCB2YWx1ZSkpO1xuICAgICAgICBtb20uX2RbJ3NldCcgKyAobW9tLl9pc1VUQyA/ICdVVEMnIDogJycpICsgJ01vbnRoJ10odmFsdWUsIGRheU9mTW9udGgpO1xuICAgICAgICByZXR1cm4gbW9tO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldE1vbnRoKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBzZXRNb250aCh0aGlzLCB2YWx1ZSk7XG4gICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcywgdHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBnZXQodGhpcywgJ01vbnRoJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXREYXlzSW5Nb250aCgpIHtcbiAgICAgICAgcmV0dXJuIGRheXNJbk1vbnRoKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vbnRoc1Nob3J0UmVnZXgoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlTW9udGhzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cmljdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzU2hvcnRSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1Nob3J0UmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1Nob3J0UmVnZXggPSBkZWZhdWx0TW9udGhzU2hvcnRSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4ICYmIGlzU3RyaWN0XG4gICAgICAgICAgICAgICAgPyB0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4XG4gICAgICAgICAgICAgICAgOiB0aGlzLl9tb250aHNTaG9ydFJlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbW9udGhzUmVnZXgoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlTW9udGhzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cmljdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1JlZ2V4ID0gZGVmYXVsdE1vbnRoc1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4ICYmIGlzU3RyaWN0XG4gICAgICAgICAgICAgICAgPyB0aGlzLl9tb250aHNTdHJpY3RSZWdleFxuICAgICAgICAgICAgICAgIDogdGhpcy5fbW9udGhzUmVnZXg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb21wdXRlTW9udGhzUGFyc2UoKSB7XG4gICAgICAgIGZ1bmN0aW9uIGNtcExlblJldihhLCBiKSB7XG4gICAgICAgICAgICByZXR1cm4gYi5sZW5ndGggLSBhLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzaG9ydFBpZWNlcyA9IFtdLFxuICAgICAgICAgICAgbG9uZ1BpZWNlcyA9IFtdLFxuICAgICAgICAgICAgbWl4ZWRQaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBtb207XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICAvLyBtYWtlIHRoZSByZWdleCBpZiB3ZSBkb24ndCBoYXZlIGl0IGFscmVhZHlcbiAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgaV0pO1xuICAgICAgICAgICAgc2hvcnRQaWVjZXMucHVzaCh0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpKTtcbiAgICAgICAgICAgIGxvbmdQaWVjZXMucHVzaCh0aGlzLm1vbnRocyhtb20sICcnKSk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKHRoaXMubW9udGhzKG1vbSwgJycpKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2godGhpcy5tb250aHNTaG9ydChtb20sICcnKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU29ydGluZyBtYWtlcyBzdXJlIGlmIG9uZSBtb250aCAob3IgYWJicikgaXMgYSBwcmVmaXggb2YgYW5vdGhlciBpdFxuICAgICAgICAvLyB3aWxsIG1hdGNoIHRoZSBsb25nZXIgcGllY2UuXG4gICAgICAgIHNob3J0UGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbG9uZ1BpZWNlcy5zb3J0KGNtcExlblJldik7XG4gICAgICAgIG1peGVkUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIHNob3J0UGllY2VzW2ldID0gcmVnZXhFc2NhcGUoc2hvcnRQaWVjZXNbaV0pO1xuICAgICAgICAgICAgbG9uZ1BpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKGxvbmdQaWVjZXNbaV0pO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAyNDsgaSsrKSB7XG4gICAgICAgICAgICBtaXhlZFBpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKG1peGVkUGllY2VzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX21vbnRoc1JlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgbWl4ZWRQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgICAgICB0aGlzLl9tb250aHNTaG9ydFJlZ2V4ID0gdGhpcy5fbW9udGhzUmVnZXg7XG4gICAgICAgIHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4ID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgICdeKCcgKyBsb25nUGllY2VzLmpvaW4oJ3wnKSArICcpJyxcbiAgICAgICAgICAgICdpJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4ID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgICdeKCcgKyBzaG9ydFBpZWNlcy5qb2luKCd8JykgKyAnKScsXG4gICAgICAgICAgICAnaSdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignWScsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHkgPSB0aGlzLnllYXIoKTtcbiAgICAgICAgcmV0dXJuIHkgPD0gOTk5OSA/IHplcm9GaWxsKHksIDQpIDogJysnICsgeTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnWVknLCAyXSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy55ZWFyKCkgJSAxMDA7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1lZWVknLCA0XSwgMCwgJ3llYXInKTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1lZWVlZJywgNV0sIDAsICd5ZWFyJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydZWVlZWVknLCA2LCB0cnVlXSwgMCwgJ3llYXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygneWVhcicsICd5Jyk7XG5cbiAgICAvLyBQUklPUklUSUVTXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ3llYXInLCAxKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1knLCBtYXRjaFNpZ25lZCk7XG4gICAgYWRkUmVnZXhUb2tlbignWVknLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignWVlZWScsIG1hdGNoMXRvNCwgbWF0Y2g0KTtcbiAgICBhZGRSZWdleFRva2VuKCdZWVlZWScsIG1hdGNoMXRvNiwgbWF0Y2g2KTtcbiAgICBhZGRSZWdleFRva2VuKCdZWVlZWVknLCBtYXRjaDF0bzYsIG1hdGNoNik7XG5cbiAgICBhZGRQYXJzZVRva2VuKFsnWVlZWVknLCAnWVlZWVlZJ10sIFlFQVIpO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1lZWVknLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W1lFQVJdID1cbiAgICAgICAgICAgIGlucHV0Lmxlbmd0aCA9PT0gMiA/IGhvb2tzLnBhcnNlVHdvRGlnaXRZZWFyKGlucHV0KSA6IHRvSW50KGlucHV0KTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdZWScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbWUVBUl0gPSBob29rcy5wYXJzZVR3b0RpZ2l0WWVhcihpbnB1dCk7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignWScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbWUVBUl0gPSBwYXJzZUludChpbnB1dCwgMTApO1xuICAgIH0pO1xuXG4gICAgLy8gSEVMUEVSU1xuXG4gICAgZnVuY3Rpb24gZGF5c0luWWVhcih5ZWFyKSB7XG4gICAgICAgIHJldHVybiBpc0xlYXBZZWFyKHllYXIpID8gMzY2IDogMzY1O1xuICAgIH1cblxuICAgIC8vIEhPT0tTXG5cbiAgICBob29rcy5wYXJzZVR3b0RpZ2l0WWVhciA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gdG9JbnQoaW5wdXQpICsgKHRvSW50KGlucHV0KSA+IDY4ID8gMTkwMCA6IDIwMDApO1xuICAgIH07XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICB2YXIgZ2V0U2V0WWVhciA9IG1ha2VHZXRTZXQoJ0Z1bGxZZWFyJywgdHJ1ZSk7XG5cbiAgICBmdW5jdGlvbiBnZXRJc0xlYXBZZWFyKCkge1xuICAgICAgICByZXR1cm4gaXNMZWFwWWVhcih0aGlzLnllYXIoKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlRGF0ZSh5LCBtLCBkLCBoLCBNLCBzLCBtcykge1xuICAgICAgICAvLyBjYW4ndCBqdXN0IGFwcGx5KCkgdG8gY3JlYXRlIGEgZGF0ZTpcbiAgICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xLzE4MTM0OFxuICAgICAgICB2YXIgZGF0ZTtcbiAgICAgICAgLy8gdGhlIGRhdGUgY29uc3RydWN0b3IgcmVtYXBzIHllYXJzIDAtOTkgdG8gMTkwMC0xOTk5XG4gICAgICAgIGlmICh5IDwgMTAwICYmIHkgPj0gMCkge1xuICAgICAgICAgICAgLy8gcHJlc2VydmUgbGVhcCB5ZWFycyB1c2luZyBhIGZ1bGwgNDAwIHllYXIgY3ljbGUsIHRoZW4gcmVzZXRcbiAgICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZSh5ICsgNDAwLCBtLCBkLCBoLCBNLCBzLCBtcyk7XG4gICAgICAgICAgICBpZiAoaXNGaW5pdGUoZGF0ZS5nZXRGdWxsWWVhcigpKSkge1xuICAgICAgICAgICAgICAgIGRhdGUuc2V0RnVsbFllYXIoeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkYXRlID0gbmV3IERhdGUoeSwgbSwgZCwgaCwgTSwgcywgbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlVVRDRGF0ZSh5KSB7XG4gICAgICAgIHZhciBkYXRlLCBhcmdzO1xuICAgICAgICAvLyB0aGUgRGF0ZS5VVEMgZnVuY3Rpb24gcmVtYXBzIHllYXJzIDAtOTkgdG8gMTkwMC0xOTk5XG4gICAgICAgIGlmICh5IDwgMTAwICYmIHkgPj0gMCkge1xuICAgICAgICAgICAgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAvLyBwcmVzZXJ2ZSBsZWFwIHllYXJzIHVzaW5nIGEgZnVsbCA0MDAgeWVhciBjeWNsZSwgdGhlbiByZXNldFxuICAgICAgICAgICAgYXJnc1swXSA9IHkgKyA0MDA7XG4gICAgICAgICAgICBkYXRlID0gbmV3IERhdGUoRGF0ZS5VVEMuYXBwbHkobnVsbCwgYXJncykpO1xuICAgICAgICAgICAgaWYgKGlzRmluaXRlKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSkpIHtcbiAgICAgICAgICAgICAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDLmFwcGx5KG51bGwsIGFyZ3VtZW50cykpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgLy8gc3RhcnQtb2YtZmlyc3Qtd2VlayAtIHN0YXJ0LW9mLXllYXJcbiAgICBmdW5jdGlvbiBmaXJzdFdlZWtPZmZzZXQoeWVhciwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIC8vIGZpcnN0LXdlZWsgZGF5IC0tIHdoaWNoIGphbnVhcnkgaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrICg0IGZvciBpc28sIDEgZm9yIG90aGVyKVxuICAgICAgICAgICAgZndkID0gNyArIGRvdyAtIGRveSxcbiAgICAgICAgICAgIC8vIGZpcnN0LXdlZWsgZGF5IGxvY2FsIHdlZWtkYXkgLS0gd2hpY2ggbG9jYWwgd2Vla2RheSBpcyBmd2RcbiAgICAgICAgICAgIGZ3ZGx3ID0gKDcgKyBjcmVhdGVVVENEYXRlKHllYXIsIDAsIGZ3ZCkuZ2V0VVRDRGF5KCkgLSBkb3cpICUgNztcblxuICAgICAgICByZXR1cm4gLWZ3ZGx3ICsgZndkIC0gMTtcbiAgICB9XG5cbiAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlI0NhbGN1bGF0aW5nX2FfZGF0ZV9naXZlbl90aGVfeWVhci4yQ193ZWVrX251bWJlcl9hbmRfd2Vla2RheVxuICAgIGZ1bmN0aW9uIGRheU9mWWVhckZyb21XZWVrcyh5ZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSkge1xuICAgICAgICB2YXIgbG9jYWxXZWVrZGF5ID0gKDcgKyB3ZWVrZGF5IC0gZG93KSAlIDcsXG4gICAgICAgICAgICB3ZWVrT2Zmc2V0ID0gZmlyc3RXZWVrT2Zmc2V0KHllYXIsIGRvdywgZG95KSxcbiAgICAgICAgICAgIGRheU9mWWVhciA9IDEgKyA3ICogKHdlZWsgLSAxKSArIGxvY2FsV2Vla2RheSArIHdlZWtPZmZzZXQsXG4gICAgICAgICAgICByZXNZZWFyLFxuICAgICAgICAgICAgcmVzRGF5T2ZZZWFyO1xuXG4gICAgICAgIGlmIChkYXlPZlllYXIgPD0gMCkge1xuICAgICAgICAgICAgcmVzWWVhciA9IHllYXIgLSAxO1xuICAgICAgICAgICAgcmVzRGF5T2ZZZWFyID0gZGF5c0luWWVhcihyZXNZZWFyKSArIGRheU9mWWVhcjtcbiAgICAgICAgfSBlbHNlIGlmIChkYXlPZlllYXIgPiBkYXlzSW5ZZWFyKHllYXIpKSB7XG4gICAgICAgICAgICByZXNZZWFyID0geWVhciArIDE7XG4gICAgICAgICAgICByZXNEYXlPZlllYXIgPSBkYXlPZlllYXIgLSBkYXlzSW5ZZWFyKHllYXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzWWVhciA9IHllYXI7XG4gICAgICAgICAgICByZXNEYXlPZlllYXIgPSBkYXlPZlllYXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeWVhcjogcmVzWWVhcixcbiAgICAgICAgICAgIGRheU9mWWVhcjogcmVzRGF5T2ZZZWFyLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdlZWtPZlllYXIobW9tLCBkb3csIGRveSkge1xuICAgICAgICB2YXIgd2Vla09mZnNldCA9IGZpcnN0V2Vla09mZnNldChtb20ueWVhcigpLCBkb3csIGRveSksXG4gICAgICAgICAgICB3ZWVrID0gTWF0aC5mbG9vcigobW9tLmRheU9mWWVhcigpIC0gd2Vla09mZnNldCAtIDEpIC8gNykgKyAxLFxuICAgICAgICAgICAgcmVzV2VlayxcbiAgICAgICAgICAgIHJlc1llYXI7XG5cbiAgICAgICAgaWYgKHdlZWsgPCAxKSB7XG4gICAgICAgICAgICByZXNZZWFyID0gbW9tLnllYXIoKSAtIDE7XG4gICAgICAgICAgICByZXNXZWVrID0gd2VlayArIHdlZWtzSW5ZZWFyKHJlc1llYXIsIGRvdywgZG95KTtcbiAgICAgICAgfSBlbHNlIGlmICh3ZWVrID4gd2Vla3NJblllYXIobW9tLnllYXIoKSwgZG93LCBkb3kpKSB7XG4gICAgICAgICAgICByZXNXZWVrID0gd2VlayAtIHdlZWtzSW5ZZWFyKG1vbS55ZWFyKCksIGRvdywgZG95KTtcbiAgICAgICAgICAgIHJlc1llYXIgPSBtb20ueWVhcigpICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSBtb20ueWVhcigpO1xuICAgICAgICAgICAgcmVzV2VlayA9IHdlZWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2VlazogcmVzV2VlayxcbiAgICAgICAgICAgIHllYXI6IHJlc1llYXIsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd2Vla3NJblllYXIoeWVhciwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIHdlZWtPZmZzZXQgPSBmaXJzdFdlZWtPZmZzZXQoeWVhciwgZG93LCBkb3kpLFxuICAgICAgICAgICAgd2Vla09mZnNldE5leHQgPSBmaXJzdFdlZWtPZmZzZXQoeWVhciArIDEsIGRvdywgZG95KTtcbiAgICAgICAgcmV0dXJuIChkYXlzSW5ZZWFyKHllYXIpIC0gd2Vla09mZnNldCArIHdlZWtPZmZzZXROZXh0KSAvIDc7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ3cnLCBbJ3d3JywgMl0sICd3bycsICd3ZWVrJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ1cnLCBbJ1dXJywgMl0sICdXbycsICdpc29XZWVrJyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ3dlZWsnLCAndycpO1xuICAgIGFkZFVuaXRBbGlhcygnaXNvV2VlaycsICdXJyk7XG5cbiAgICAvLyBQUklPUklUSUVTXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ3dlZWsnLCA1KTtcbiAgICBhZGRVbml0UHJpb3JpdHkoJ2lzb1dlZWsnLCA1KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ3cnLCBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ3d3JywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1cnLCBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1dXJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuXG4gICAgYWRkV2Vla1BhcnNlVG9rZW4oXG4gICAgICAgIFsndycsICd3dycsICdXJywgJ1dXJ10sXG4gICAgICAgIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICAgICAgd2Vla1t0b2tlbi5zdWJzdHIoMCwgMSldID0gdG9JbnQoaW5wdXQpO1xuICAgICAgICB9XG4gICAgKTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIC8vIExPQ0FMRVNcblxuICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWsobW9tKSB7XG4gICAgICAgIHJldHVybiB3ZWVrT2ZZZWFyKG1vbSwgdGhpcy5fd2Vlay5kb3csIHRoaXMuX3dlZWsuZG95KS53ZWVrO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TG9jYWxlV2VlayA9IHtcbiAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgZG95OiA2LCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGxvY2FsZUZpcnN0RGF5T2ZXZWVrKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fd2Vlay5kb3c7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxlRmlyc3REYXlPZlllYXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93ZWVrLmRveTtcbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBnZXRTZXRXZWVrKGlucHV0KSB7XG4gICAgICAgIHZhciB3ZWVrID0gdGhpcy5sb2NhbGVEYXRhKCkud2Vlayh0aGlzKTtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyB3ZWVrIDogdGhpcy5hZGQoKGlucHV0IC0gd2VlaykgKiA3LCAnZCcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldElTT1dlZWsoaW5wdXQpIHtcbiAgICAgICAgdmFyIHdlZWsgPSB3ZWVrT2ZZZWFyKHRoaXMsIDEsIDQpLndlZWs7XG4gICAgICAgIHJldHVybiBpbnB1dCA9PSBudWxsID8gd2VlayA6IHRoaXMuYWRkKChpbnB1dCAtIHdlZWspICogNywgJ2QnKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignZCcsIDAsICdkbycsICdkYXknKTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdkZCcsIDAsIDAsIGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzTWluKHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignZGRkJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXNTaG9ydCh0aGlzLCBmb3JtYXQpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2RkZGQnLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5cyh0aGlzLCBmb3JtYXQpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2UnLCAwLCAwLCAnd2Vla2RheScpO1xuICAgIGFkZEZvcm1hdFRva2VuKCdFJywgMCwgMCwgJ2lzb1dlZWtkYXknKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnZGF5JywgJ2QnKTtcbiAgICBhZGRVbml0QWxpYXMoJ3dlZWtkYXknLCAnZScpO1xuICAgIGFkZFVuaXRBbGlhcygnaXNvV2Vla2RheScsICdFJyk7XG5cbiAgICAvLyBQUklPUklUWVxuICAgIGFkZFVuaXRQcmlvcml0eSgnZGF5JywgMTEpO1xuICAgIGFkZFVuaXRQcmlvcml0eSgnd2Vla2RheScsIDExKTtcbiAgICBhZGRVbml0UHJpb3JpdHkoJ2lzb1dlZWtkYXknLCAxMSk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdkJywgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdlJywgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdFJywgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdkZCcsIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUud2Vla2RheXNNaW5SZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG4gICAgYWRkUmVnZXhUb2tlbignZGRkJywgZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c1Nob3J0UmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2RkZGQnLCBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLndlZWtkYXlzUmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuXG4gICAgYWRkV2Vla1BhcnNlVG9rZW4oWydkZCcsICdkZGQnLCAnZGRkZCddLCBmdW5jdGlvbiAoaW5wdXQsIHdlZWssIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgdmFyIHdlZWtkYXkgPSBjb25maWcuX2xvY2FsZS53ZWVrZGF5c1BhcnNlKGlucHV0LCB0b2tlbiwgY29uZmlnLl9zdHJpY3QpO1xuICAgICAgICAvLyBpZiB3ZSBkaWRuJ3QgZ2V0IGEgd2Vla2RheSBuYW1lLCBtYXJrIHRoZSBkYXRlIGFzIGludmFsaWRcbiAgICAgICAgaWYgKHdlZWtkYXkgIT0gbnVsbCkge1xuICAgICAgICAgICAgd2Vlay5kID0gd2Vla2RheTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmludmFsaWRXZWVrZGF5ID0gaW5wdXQ7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIGFkZFdlZWtQYXJzZVRva2VuKFsnZCcsICdlJywgJ0UnXSwgZnVuY3Rpb24gKGlucHV0LCB3ZWVrLCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgIHdlZWtbdG9rZW5dID0gdG9JbnQoaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gSEVMUEVSU1xuXG4gICAgZnVuY3Rpb24gcGFyc2VXZWVrZGF5KGlucHV0LCBsb2NhbGUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNOYU4oaW5wdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoaW5wdXQsIDEwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlucHV0ID0gbG9jYWxlLndlZWtkYXlzUGFyc2UoaW5wdXQpO1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VJc29XZWVrZGF5KGlucHV0LCBsb2NhbGUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiBsb2NhbGUud2Vla2RheXNQYXJzZShpbnB1dCkgJSA3IHx8IDc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzTmFOKGlucHV0KSA/IG51bGwgOiBpbnB1dDtcbiAgICB9XG5cbiAgICAvLyBMT0NBTEVTXG4gICAgZnVuY3Rpb24gc2hpZnRXZWVrZGF5cyh3cywgbikge1xuICAgICAgICByZXR1cm4gd3Muc2xpY2UobiwgNykuY29uY2F0KHdzLnNsaWNlKDAsIG4pKTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZVdlZWtkYXlzID1cbiAgICAgICAgICAgICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoJ18nKSxcbiAgICAgICAgZGVmYXVsdExvY2FsZVdlZWtkYXlzU2hvcnQgPSAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpLFxuICAgICAgICBkZWZhdWx0TG9jYWxlV2Vla2RheXNNaW4gPSAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGRlZmF1bHRXZWVrZGF5c1JlZ2V4ID0gbWF0Y2hXb3JkLFxuICAgICAgICBkZWZhdWx0V2Vla2RheXNTaG9ydFJlZ2V4ID0gbWF0Y2hXb3JkLFxuICAgICAgICBkZWZhdWx0V2Vla2RheXNNaW5SZWdleCA9IG1hdGNoV29yZDtcblxuICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWtkYXlzKG0sIGZvcm1hdCkge1xuICAgICAgICB2YXIgd2Vla2RheXMgPSBpc0FycmF5KHRoaXMuX3dlZWtkYXlzKVxuICAgICAgICAgICAgPyB0aGlzLl93ZWVrZGF5c1xuICAgICAgICAgICAgOiB0aGlzLl93ZWVrZGF5c1tcbiAgICAgICAgICAgICAgICAgIG0gJiYgbSAhPT0gdHJ1ZSAmJiB0aGlzLl93ZWVrZGF5cy5pc0Zvcm1hdC50ZXN0KGZvcm1hdClcbiAgICAgICAgICAgICAgICAgICAgICA/ICdmb3JtYXQnXG4gICAgICAgICAgICAgICAgICAgICAgOiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgcmV0dXJuIG0gPT09IHRydWVcbiAgICAgICAgICAgID8gc2hpZnRXZWVrZGF5cyh3ZWVrZGF5cywgdGhpcy5fd2Vlay5kb3cpXG4gICAgICAgICAgICA6IG1cbiAgICAgICAgICAgID8gd2Vla2RheXNbbS5kYXkoKV1cbiAgICAgICAgICAgIDogd2Vla2RheXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXNTaG9ydChtKSB7XG4gICAgICAgIHJldHVybiBtID09PSB0cnVlXG4gICAgICAgICAgICA/IHNoaWZ0V2Vla2RheXModGhpcy5fd2Vla2RheXNTaG9ydCwgdGhpcy5fd2Vlay5kb3cpXG4gICAgICAgICAgICA6IG1cbiAgICAgICAgICAgID8gdGhpcy5fd2Vla2RheXNTaG9ydFttLmRheSgpXVxuICAgICAgICAgICAgOiB0aGlzLl93ZWVrZGF5c1Nob3J0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWtkYXlzTWluKG0pIHtcbiAgICAgICAgcmV0dXJuIG0gPT09IHRydWVcbiAgICAgICAgICAgID8gc2hpZnRXZWVrZGF5cyh0aGlzLl93ZWVrZGF5c01pbiwgdGhpcy5fd2Vlay5kb3cpXG4gICAgICAgICAgICA6IG1cbiAgICAgICAgICAgID8gdGhpcy5fd2Vla2RheXNNaW5bbS5kYXkoKV1cbiAgICAgICAgICAgIDogdGhpcy5fd2Vla2RheXNNaW47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlU3RyaWN0UGFyc2UkMSh3ZWVrZGF5TmFtZSwgZm9ybWF0LCBzdHJpY3QpIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBpaSxcbiAgICAgICAgICAgIG1vbSxcbiAgICAgICAgICAgIGxsYyA9IHdlZWtkYXlOYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICghdGhpcy5fd2Vla2RheXNQYXJzZSkge1xuICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9taW5XZWVrZGF5c1BhcnNlID0gW107XG5cbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyArK2kpIHtcbiAgICAgICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIDFdKS5kYXkoaSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZVtpXSA9IHRoaXMud2Vla2RheXNNaW4oXG4gICAgICAgICAgICAgICAgICAgIG1vbSxcbiAgICAgICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICAgICApLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW2ldID0gdGhpcy53ZWVrZGF5c1Nob3J0KFxuICAgICAgICAgICAgICAgICAgICBtb20sXG4gICAgICAgICAgICAgICAgICAgICcnXG4gICAgICAgICAgICAgICAgKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzUGFyc2VbaV0gPSB0aGlzLndlZWtkYXlzKG1vbSwgJycpLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RyaWN0KSB7XG4gICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnZGRkZCcpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gJ2RkZCcpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2RkZGQnKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gJ2RkZCcpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVXZWVrZGF5c1BhcnNlKHdlZWtkYXlOYW1lLCBmb3JtYXQsIHN0cmljdCkge1xuICAgICAgICB2YXIgaSwgbW9tLCByZWdleDtcblxuICAgICAgICBpZiAodGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlU3RyaWN0UGFyc2UkMS5jYWxsKHRoaXMsIHdlZWtkYXlOYW1lLCBmb3JtYXQsIHN0cmljdCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX3dlZWtkYXlzUGFyc2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX21pbldlZWtkYXlzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2UgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuXG4gICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIDFdKS5kYXkoaSk7XG4gICAgICAgICAgICBpZiAoc3RyaWN0ICYmICF0aGlzLl9mdWxsV2Vla2RheXNQYXJzZVtpXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW2ldID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgICAgICAgICAgJ14nICsgdGhpcy53ZWVrZGF5cyhtb20sICcnKS5yZXBsYWNlKCcuJywgJ1xcXFwuPycpICsgJyQnLFxuICAgICAgICAgICAgICAgICAgICAnaSdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZVtpXSA9IG5ldyBSZWdFeHAoXG4gICAgICAgICAgICAgICAgICAgICdeJyArIHRoaXMud2Vla2RheXNTaG9ydChtb20sICcnKS5yZXBsYWNlKCcuJywgJ1xcXFwuPycpICsgJyQnLFxuICAgICAgICAgICAgICAgICAgICAnaSdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuX21pbldlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgICAgICAgICAnXicgKyB0aGlzLndlZWtkYXlzTWluKG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnXFxcXC4/JykgKyAnJCcsXG4gICAgICAgICAgICAgICAgICAgICdpJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3dlZWtkYXlzUGFyc2VbaV0pIHtcbiAgICAgICAgICAgICAgICByZWdleCA9XG4gICAgICAgICAgICAgICAgICAgICdeJyArXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2Vla2RheXMobW9tLCAnJykgK1xuICAgICAgICAgICAgICAgICAgICAnfF4nICtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53ZWVrZGF5c1Nob3J0KG1vbSwgJycpICtcbiAgICAgICAgICAgICAgICAgICAgJ3xeJyArXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2Vla2RheXNNaW4obW9tLCAnJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZVtpXSA9IG5ldyBSZWdFeHAocmVnZXgucmVwbGFjZSgnLicsICcnKSwgJ2knKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHRlc3QgdGhlIHJlZ2V4XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc3RyaWN0ICYmXG4gICAgICAgICAgICAgICAgZm9ybWF0ID09PSAnZGRkZCcgJiZcbiAgICAgICAgICAgICAgICB0aGlzLl9mdWxsV2Vla2RheXNQYXJzZVtpXS50ZXN0KHdlZWtkYXlOYW1lKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIHN0cmljdCAmJlxuICAgICAgICAgICAgICAgIGZvcm1hdCA9PT0gJ2RkZCcgJiZcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVrZGF5TmFtZSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBzdHJpY3QgJiZcbiAgICAgICAgICAgICAgICBmb3JtYXQgPT09ICdkZCcgJiZcbiAgICAgICAgICAgICAgICB0aGlzLl9taW5XZWVrZGF5c1BhcnNlW2ldLnRlc3Qod2Vla2RheU5hbWUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cmljdCAmJiB0aGlzLl93ZWVrZGF5c1BhcnNlW2ldLnRlc3Qod2Vla2RheU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBnZXRTZXREYXlPZldlZWsoaW5wdXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkYXkgPSB0aGlzLl9pc1VUQyA/IHRoaXMuX2QuZ2V0VVRDRGF5KCkgOiB0aGlzLl9kLmdldERheSgpO1xuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaW5wdXQgPSBwYXJzZVdlZWtkYXkoaW5wdXQsIHRoaXMubG9jYWxlRGF0YSgpKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZChpbnB1dCAtIGRheSwgJ2QnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBkYXk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRMb2NhbGVEYXlPZldlZWsoaW5wdXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOO1xuICAgICAgICB9XG4gICAgICAgIHZhciB3ZWVrZGF5ID0gKHRoaXMuZGF5KCkgKyA3IC0gdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG93KSAlIDc7XG4gICAgICAgIHJldHVybiBpbnB1dCA9PSBudWxsID8gd2Vla2RheSA6IHRoaXMuYWRkKGlucHV0IC0gd2Vla2RheSwgJ2QnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRJU09EYXlPZldlZWsoaW5wdXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gYmVoYXZlcyB0aGUgc2FtZSBhcyBtb21lbnQjZGF5IGV4Y2VwdFxuICAgICAgICAvLyBhcyBhIGdldHRlciwgcmV0dXJucyA3IGluc3RlYWQgb2YgMCAoMS03IHJhbmdlIGluc3RlYWQgb2YgMC02KVxuICAgICAgICAvLyBhcyBhIHNldHRlciwgc3VuZGF5IHNob3VsZCBiZWxvbmcgdG8gdGhlIHByZXZpb3VzIHdlZWsuXG5cbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHZhciB3ZWVrZGF5ID0gcGFyc2VJc29XZWVrZGF5KGlucHV0LCB0aGlzLmxvY2FsZURhdGEoKSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXkodGhpcy5kYXkoKSAlIDcgPyB3ZWVrZGF5IDogd2Vla2RheSAtIDcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF5KCkgfHwgNztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdlZWtkYXlzUmVnZXgoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKHRoaXMuX3dlZWtkYXlzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgY29tcHV0ZVdlZWtkYXlzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cmljdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzUmVnZXggPSBkZWZhdWx0V2Vla2RheXNSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4ICYmIGlzU3RyaWN0XG4gICAgICAgICAgICAgICAgPyB0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4XG4gICAgICAgICAgICAgICAgOiB0aGlzLl93ZWVrZGF5c1JlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd2Vla2RheXNTaG9ydFJlZ2V4KGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNTaG9ydFJlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXggPSBkZWZhdWx0V2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleCAmJiBpc1N0cmljdFxuICAgICAgICAgICAgICAgID8gdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4XG4gICAgICAgICAgICAgICAgOiB0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3ZWVrZGF5c01pblJlZ2V4KGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzTWluUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c01pblJlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c01pblJlZ2V4ID0gZGVmYXVsdFdlZWtkYXlzTWluUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleCAmJiBpc1N0cmljdFxuICAgICAgICAgICAgICAgID8gdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleFxuICAgICAgICAgICAgICAgIDogdGhpcy5fd2Vla2RheXNNaW5SZWdleDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbXB1dGVXZWVrZGF5c1BhcnNlKCkge1xuICAgICAgICBmdW5jdGlvbiBjbXBMZW5SZXYoYSwgYikge1xuICAgICAgICAgICAgcmV0dXJuIGIubGVuZ3RoIC0gYS5sZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbWluUGllY2VzID0gW10sXG4gICAgICAgICAgICBzaG9ydFBpZWNlcyA9IFtdLFxuICAgICAgICAgICAgbG9uZ1BpZWNlcyA9IFtdLFxuICAgICAgICAgICAgbWl4ZWRQaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBtb20sXG4gICAgICAgICAgICBtaW5wLFxuICAgICAgICAgICAgc2hvcnRwLFxuICAgICAgICAgICAgbG9uZ3A7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCAxXSkuZGF5KGkpO1xuICAgICAgICAgICAgbWlucCA9IHJlZ2V4RXNjYXBlKHRoaXMud2Vla2RheXNNaW4obW9tLCAnJykpO1xuICAgICAgICAgICAgc2hvcnRwID0gcmVnZXhFc2NhcGUodGhpcy53ZWVrZGF5c1Nob3J0KG1vbSwgJycpKTtcbiAgICAgICAgICAgIGxvbmdwID0gcmVnZXhFc2NhcGUodGhpcy53ZWVrZGF5cyhtb20sICcnKSk7XG4gICAgICAgICAgICBtaW5QaWVjZXMucHVzaChtaW5wKTtcbiAgICAgICAgICAgIHNob3J0UGllY2VzLnB1c2goc2hvcnRwKTtcbiAgICAgICAgICAgIGxvbmdQaWVjZXMucHVzaChsb25ncCk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKG1pbnApO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChzaG9ydHApO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChsb25ncCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU29ydGluZyBtYWtlcyBzdXJlIGlmIG9uZSB3ZWVrZGF5IChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyIGl0XG4gICAgICAgIC8vIHdpbGwgbWF0Y2ggdGhlIGxvbmdlciBwaWVjZS5cbiAgICAgICAgbWluUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgc2hvcnRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBsb25nUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbWl4ZWRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuXG4gICAgICAgIHRoaXMuX3dlZWtkYXlzUmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBtaXhlZFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleCA9IHRoaXMuX3dlZWtkYXlzUmVnZXg7XG4gICAgICAgIHRoaXMuX3dlZWtkYXlzTWluUmVnZXggPSB0aGlzLl93ZWVrZGF5c1JlZ2V4O1xuXG4gICAgICAgIHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgJ14oJyArIGxvbmdQaWVjZXMuam9pbignfCcpICsgJyknLFxuICAgICAgICAgICAgJ2knXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleCA9IG5ldyBSZWdFeHAoXG4gICAgICAgICAgICAnXignICsgc2hvcnRQaWVjZXMuam9pbignfCcpICsgJyknLFxuICAgICAgICAgICAgJ2knXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgJ14oJyArIG1pblBpZWNlcy5qb2luKCd8JykgKyAnKScsXG4gICAgICAgICAgICAnaSdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBmdW5jdGlvbiBoRm9ybWF0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3VycygpICUgMTIgfHwgMTI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24ga0Zvcm1hdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG91cnMoKSB8fCAyNDtcbiAgICB9XG5cbiAgICBhZGRGb3JtYXRUb2tlbignSCcsIFsnSEgnLCAyXSwgMCwgJ2hvdXInKTtcbiAgICBhZGRGb3JtYXRUb2tlbignaCcsIFsnaGgnLCAyXSwgMCwgaEZvcm1hdCk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ2snLCBbJ2trJywgMl0sIDAsIGtGb3JtYXQpO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2htbScsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICcnICsgaEZvcm1hdC5hcHBseSh0aGlzKSArIHplcm9GaWxsKHRoaXMubWludXRlcygpLCAyKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdobW1zcycsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICcnICtcbiAgICAgICAgICAgIGhGb3JtYXQuYXBwbHkodGhpcykgK1xuICAgICAgICAgICAgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpICtcbiAgICAgICAgICAgIHplcm9GaWxsKHRoaXMuc2Vjb25kcygpLCAyKVxuICAgICAgICApO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ0htbScsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICcnICsgdGhpcy5ob3VycygpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ0htbXNzJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgJycgK1xuICAgICAgICAgICAgdGhpcy5ob3VycygpICtcbiAgICAgICAgICAgIHplcm9GaWxsKHRoaXMubWludXRlcygpLCAyKSArXG4gICAgICAgICAgICB6ZXJvRmlsbCh0aGlzLnNlY29uZHMoKSwgMilcbiAgICAgICAgKTtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIG1lcmlkaWVtKHRva2VuLCBsb3dlcmNhc2UpIHtcbiAgICAgICAgYWRkRm9ybWF0VG9rZW4odG9rZW4sIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tZXJpZGllbShcbiAgICAgICAgICAgICAgICB0aGlzLmhvdXJzKCksXG4gICAgICAgICAgICAgICAgdGhpcy5taW51dGVzKCksXG4gICAgICAgICAgICAgICAgbG93ZXJjYXNlXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBtZXJpZGllbSgnYScsIHRydWUpO1xuICAgIG1lcmlkaWVtKCdBJywgZmFsc2UpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdob3VyJywgJ2gnKTtcblxuICAgIC8vIFBSSU9SSVRZXG4gICAgYWRkVW5pdFByaW9yaXR5KCdob3VyJywgMTMpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgZnVuY3Rpb24gbWF0Y2hNZXJpZGllbShpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUuX21lcmlkaWVtUGFyc2U7XG4gICAgfVxuXG4gICAgYWRkUmVnZXhUb2tlbignYScsIG1hdGNoTWVyaWRpZW0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0EnLCBtYXRjaE1lcmlkaWVtKTtcbiAgICBhZGRSZWdleFRva2VuKCdIJywgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdoJywgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdrJywgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdISCcsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdoaCcsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdraycsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ2htbScsIG1hdGNoM3RvNCk7XG4gICAgYWRkUmVnZXhUb2tlbignaG1tc3MnLCBtYXRjaDV0bzYpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0htbScsIG1hdGNoM3RvNCk7XG4gICAgYWRkUmVnZXhUb2tlbignSG1tc3MnLCBtYXRjaDV0bzYpO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ0gnLCAnSEgnXSwgSE9VUik7XG4gICAgYWRkUGFyc2VUb2tlbihbJ2snLCAna2snXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIHZhciBrSW5wdXQgPSB0b0ludChpbnB1dCk7XG4gICAgICAgIGFycmF5W0hPVVJdID0ga0lucHV0ID09PSAyNCA/IDAgOiBrSW5wdXQ7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbihbJ2EnLCAnQSddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgY29uZmlnLl9pc1BtID0gY29uZmlnLl9sb2NhbGUuaXNQTShpbnB1dCk7XG4gICAgICAgIGNvbmZpZy5fbWVyaWRpZW0gPSBpbnB1dDtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKFsnaCcsICdoaCddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dCk7XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPSB0cnVlO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ2htbScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIgcG9zID0gaW5wdXQubGVuZ3RoIC0gMjtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dC5zdWJzdHIoMCwgcG9zKSk7XG4gICAgICAgIGFycmF5W01JTlVURV0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zKSk7XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPSB0cnVlO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ2htbXNzJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIHZhciBwb3MxID0gaW5wdXQubGVuZ3RoIC0gNCxcbiAgICAgICAgICAgIHBvczIgPSBpbnB1dC5sZW5ndGggLSAyO1xuICAgICAgICBhcnJheVtIT1VSXSA9IHRvSW50KGlucHV0LnN1YnN0cigwLCBwb3MxKSk7XG4gICAgICAgIGFycmF5W01JTlVURV0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zMSwgMikpO1xuICAgICAgICBhcnJheVtTRUNPTkRdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvczIpKTtcbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91ciA9IHRydWU7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignSG1tJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIHZhciBwb3MgPSBpbnB1dC5sZW5ndGggLSAyO1xuICAgICAgICBhcnJheVtIT1VSXSA9IHRvSW50KGlucHV0LnN1YnN0cigwLCBwb3MpKTtcbiAgICAgICAgYXJyYXlbTUlOVVRFXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MpKTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdIbW1zcycsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIgcG9zMSA9IGlucHV0Lmxlbmd0aCAtIDQsXG4gICAgICAgICAgICBwb3MyID0gaW5wdXQubGVuZ3RoIC0gMjtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dC5zdWJzdHIoMCwgcG9zMSkpO1xuICAgICAgICBhcnJheVtNSU5VVEVdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvczEsIDIpKTtcbiAgICAgICAgYXJyYXlbU0VDT05EXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MyKSk7XG4gICAgfSk7XG5cbiAgICAvLyBMT0NBTEVTXG5cbiAgICBmdW5jdGlvbiBsb2NhbGVJc1BNKGlucHV0KSB7XG4gICAgICAgIC8vIElFOCBRdWlya3MgTW9kZSAmIElFNyBTdGFuZGFyZHMgTW9kZSBkbyBub3QgYWxsb3cgYWNjZXNzaW5nIHN0cmluZ3MgbGlrZSBhcnJheXNcbiAgICAgICAgLy8gVXNpbmcgY2hhckF0IHNob3VsZCBiZSBtb3JlIGNvbXBhdGlibGUuXG4gICAgICAgIHJldHVybiAoaW5wdXQgKyAnJykudG9Mb3dlckNhc2UoKS5jaGFyQXQoMCkgPT09ICdwJztcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZU1lcmlkaWVtUGFyc2UgPSAvW2FwXVxcLj9tP1xcLj8vaSxcbiAgICAgICAgLy8gU2V0dGluZyB0aGUgaG91ciBzaG91bGQga2VlcCB0aGUgdGltZSwgYmVjYXVzZSB0aGUgdXNlciBleHBsaWNpdGx5XG4gICAgICAgIC8vIHNwZWNpZmllZCB3aGljaCBob3VyIHRoZXkgd2FudC4gU28gdHJ5aW5nIHRvIG1haW50YWluIHRoZSBzYW1lIGhvdXIgKGluXG4gICAgICAgIC8vIGEgbmV3IHRpbWV6b25lKSBtYWtlcyBzZW5zZS4gQWRkaW5nL3N1YnRyYWN0aW5nIGhvdXJzIGRvZXMgbm90IGZvbGxvd1xuICAgICAgICAvLyB0aGlzIHJ1bGUuXG4gICAgICAgIGdldFNldEhvdXIgPSBtYWtlR2V0U2V0KCdIb3VycycsIHRydWUpO1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlTWVyaWRpZW0oaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgaWYgKGhvdXJzID4gMTEpIHtcbiAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ3BtJyA6ICdQTSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdhbScgOiAnQU0nO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGJhc2VDb25maWcgPSB7XG4gICAgICAgIGNhbGVuZGFyOiBkZWZhdWx0Q2FsZW5kYXIsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiBkZWZhdWx0TG9uZ0RhdGVGb3JtYXQsXG4gICAgICAgIGludmFsaWREYXRlOiBkZWZhdWx0SW52YWxpZERhdGUsXG4gICAgICAgIG9yZGluYWw6IGRlZmF1bHRPcmRpbmFsLFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiBkZWZhdWx0RGF5T2ZNb250aE9yZGluYWxQYXJzZSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiBkZWZhdWx0UmVsYXRpdmVUaW1lLFxuXG4gICAgICAgIG1vbnRoczogZGVmYXVsdExvY2FsZU1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IGRlZmF1bHRMb2NhbGVNb250aHNTaG9ydCxcblxuICAgICAgICB3ZWVrOiBkZWZhdWx0TG9jYWxlV2VlayxcblxuICAgICAgICB3ZWVrZGF5czogZGVmYXVsdExvY2FsZVdlZWtkYXlzLFxuICAgICAgICB3ZWVrZGF5c01pbjogZGVmYXVsdExvY2FsZVdlZWtkYXlzTWluLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiBkZWZhdWx0TG9jYWxlV2Vla2RheXNTaG9ydCxcblxuICAgICAgICBtZXJpZGllbVBhcnNlOiBkZWZhdWx0TG9jYWxlTWVyaWRpZW1QYXJzZSxcbiAgICB9O1xuXG4gICAgLy8gaW50ZXJuYWwgc3RvcmFnZSBmb3IgbG9jYWxlIGNvbmZpZyBmaWxlc1xuICAgIHZhciBsb2NhbGVzID0ge30sXG4gICAgICAgIGxvY2FsZUZhbWlsaWVzID0ge30sXG4gICAgICAgIGdsb2JhbExvY2FsZTtcblxuICAgIGZ1bmN0aW9uIGNvbW1vblByZWZpeChhcnIxLCBhcnIyKSB7XG4gICAgICAgIHZhciBpLFxuICAgICAgICAgICAgbWlubCA9IE1hdGgubWluKGFycjEubGVuZ3RoLCBhcnIyLmxlbmd0aCk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBtaW5sOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGlmIChhcnIxW2ldICE9PSBhcnIyW2ldKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1pbmw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplTG9jYWxlKGtleSkge1xuICAgICAgICByZXR1cm4ga2V5ID8ga2V5LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgnXycsICctJykgOiBrZXk7XG4gICAgfVxuXG4gICAgLy8gcGljayB0aGUgbG9jYWxlIGZyb20gdGhlIGFycmF5XG4gICAgLy8gdHJ5IFsnZW4tYXUnLCAnZW4tZ2InXSBhcyAnZW4tYXUnLCAnZW4tZ2InLCAnZW4nLCBhcyBpbiBtb3ZlIHRocm91Z2ggdGhlIGxpc3QgdHJ5aW5nIGVhY2hcbiAgICAvLyBzdWJzdHJpbmcgZnJvbSBtb3N0IHNwZWNpZmljIHRvIGxlYXN0LCBidXQgbW92ZSB0byB0aGUgbmV4dCBhcnJheSBpdGVtIGlmIGl0J3MgYSBtb3JlIHNwZWNpZmljIHZhcmlhbnQgdGhhbiB0aGUgY3VycmVudCByb290XG4gICAgZnVuY3Rpb24gY2hvb3NlTG9jYWxlKG5hbWVzKSB7XG4gICAgICAgIHZhciBpID0gMCxcbiAgICAgICAgICAgIGosXG4gICAgICAgICAgICBuZXh0LFxuICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgc3BsaXQ7XG5cbiAgICAgICAgd2hpbGUgKGkgPCBuYW1lcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHNwbGl0ID0gbm9ybWFsaXplTG9jYWxlKG5hbWVzW2ldKS5zcGxpdCgnLScpO1xuICAgICAgICAgICAgaiA9IHNwbGl0Lmxlbmd0aDtcbiAgICAgICAgICAgIG5leHQgPSBub3JtYWxpemVMb2NhbGUobmFtZXNbaSArIDFdKTtcbiAgICAgICAgICAgIG5leHQgPSBuZXh0ID8gbmV4dC5zcGxpdCgnLScpIDogbnVsbDtcbiAgICAgICAgICAgIHdoaWxlIChqID4gMCkge1xuICAgICAgICAgICAgICAgIGxvY2FsZSA9IGxvYWRMb2NhbGUoc3BsaXQuc2xpY2UoMCwgaikuam9pbignLScpKTtcbiAgICAgICAgICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2NhbGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgbmV4dCAmJlxuICAgICAgICAgICAgICAgICAgICBuZXh0Lmxlbmd0aCA+PSBqICYmXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vblByZWZpeChzcGxpdCwgbmV4dCkgPj0gaiAtIDFcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgLy90aGUgbmV4dCBhcnJheSBpdGVtIGlzIGJldHRlciB0aGFuIGEgc2hhbGxvd2VyIHN1YnN0cmluZyBvZiB0aGlzIG9uZVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgai0tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnbG9iYWxMb2NhbGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNMb2NhbGVOYW1lU2FuZShuYW1lKSB7XG4gICAgICAgIC8vIFByZXZlbnQgbmFtZXMgdGhhdCBsb29rIGxpa2UgZmlsZXN5c3RlbSBwYXRocywgaS5lIGNvbnRhaW4gJy8nIG9yICdcXCdcbiAgICAgICAgcmV0dXJuIG5hbWUubWF0Y2goJ15bXi9cXFxcXFxcXF0qJCcpICE9IG51bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9hZExvY2FsZShuYW1lKSB7XG4gICAgICAgIHZhciBvbGRMb2NhbGUgPSBudWxsLFxuICAgICAgICAgICAgYWxpYXNlZFJlcXVpcmU7XG4gICAgICAgIC8vIFRPRE86IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIHJlZ2lzdGVyIGFuZCBsb2FkIGFsbCB0aGUgbG9jYWxlcyBpbiBOb2RlXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0gPT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAgIG1vZHVsZSAmJlxuICAgICAgICAgICAgbW9kdWxlLmV4cG9ydHMgJiZcbiAgICAgICAgICAgIGlzTG9jYWxlTmFtZVNhbmUobmFtZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIG9sZExvY2FsZSA9IGdsb2JhbExvY2FsZS5fYWJicjtcbiAgICAgICAgICAgICAgICBhbGlhc2VkUmVxdWlyZSA9IHJlcXVpcmU7XG4gICAgICAgICAgICAgICAgYWxpYXNlZFJlcXVpcmUoJy4vbG9jYWxlLycgKyBuYW1lKTtcbiAgICAgICAgICAgICAgICBnZXRTZXRHbG9iYWxMb2NhbGUob2xkTG9jYWxlKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAvLyBtYXJrIGFzIG5vdCBmb3VuZCB0byBhdm9pZCByZXBlYXRpbmcgZXhwZW5zaXZlIGZpbGUgcmVxdWlyZSBjYWxsIGNhdXNpbmcgaGlnaCBDUFVcbiAgICAgICAgICAgICAgICAvLyB3aGVuIHRyeWluZyB0byBmaW5kIGVuLVVTLCBlbl9VUywgZW4tdXMgZm9yIGV2ZXJ5IGZvcm1hdCBjYWxsXG4gICAgICAgICAgICAgICAgbG9jYWxlc1tuYW1lXSA9IG51bGw7IC8vIG51bGwgbWVhbnMgbm90IGZvdW5kXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxvY2FsZXNbbmFtZV07XG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIGxvYWQgbG9jYWxlIGFuZCB0aGVuIHNldCB0aGUgZ2xvYmFsIGxvY2FsZS4gIElmXG4gICAgLy8gbm8gYXJndW1lbnRzIGFyZSBwYXNzZWQgaW4sIGl0IHdpbGwgc2ltcGx5IHJldHVybiB0aGUgY3VycmVudCBnbG9iYWxcbiAgICAvLyBsb2NhbGUga2V5LlxuICAgIGZ1bmN0aW9uIGdldFNldEdsb2JhbExvY2FsZShrZXksIHZhbHVlcykge1xuICAgICAgICB2YXIgZGF0YTtcbiAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlcykpIHtcbiAgICAgICAgICAgICAgICBkYXRhID0gZ2V0TG9jYWxlKGtleSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBkZWZpbmVMb2NhbGUoa2V5LCB2YWx1ZXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgIC8vIG1vbWVudC5kdXJhdGlvbi5fbG9jYWxlID0gbW9tZW50Ll9sb2NhbGUgPSBkYXRhO1xuICAgICAgICAgICAgICAgIGdsb2JhbExvY2FsZSA9IGRhdGE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgY29uc29sZS53YXJuKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vd2FybiB1c2VyIGlmIGFyZ3VtZW50cyBhcmUgcGFzc2VkIGJ1dCB0aGUgbG9jYWxlIGNvdWxkIG5vdCBiZSBzZXRcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ0xvY2FsZSAnICsga2V5ICsgJyBub3QgZm91bmQuIERpZCB5b3UgZm9yZ2V0IHRvIGxvYWQgaXQ/J1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBnbG9iYWxMb2NhbGUuX2FiYnI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVmaW5lTG9jYWxlKG5hbWUsIGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnICE9PSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgbG9jYWxlLFxuICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IGJhc2VDb25maWc7XG4gICAgICAgICAgICBjb25maWcuYWJiciA9IG5hbWU7XG4gICAgICAgICAgICBpZiAobG9jYWxlc1tuYW1lXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgZGVwcmVjYXRlU2ltcGxlKFxuICAgICAgICAgICAgICAgICAgICAnZGVmaW5lTG9jYWxlT3ZlcnJpZGUnLFxuICAgICAgICAgICAgICAgICAgICAndXNlIG1vbWVudC51cGRhdGVMb2NhbGUobG9jYWxlTmFtZSwgY29uZmlnKSB0byBjaGFuZ2UgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnYW4gZXhpc3RpbmcgbG9jYWxlLiBtb21lbnQuZGVmaW5lTG9jYWxlKGxvY2FsZU5hbWUsICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmZpZykgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgY3JlYXRpbmcgYSBuZXcgbG9jYWxlICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1NlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2RlZmluZS1sb2NhbGUvIGZvciBtb3JlIGluZm8uJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcGFyZW50Q29uZmlnID0gbG9jYWxlc1tuYW1lXS5fY29uZmlnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb25maWcucGFyZW50TG9jYWxlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAobG9jYWxlc1tjb25maWcucGFyZW50TG9jYWxlXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IGxvY2FsZXNbY29uZmlnLnBhcmVudExvY2FsZV0uX2NvbmZpZztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsb2NhbGUgPSBsb2FkTG9jYWxlKGNvbmZpZy5wYXJlbnRMb2NhbGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IGxvY2FsZS5fY29uZmlnO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsb2NhbGVGYW1pbGllc1tjb25maWcucGFyZW50TG9jYWxlXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZUZhbWlsaWVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVGYW1pbGllc1tjb25maWcucGFyZW50TG9jYWxlXS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZzogY29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0gPSBuZXcgTG9jYWxlKG1lcmdlQ29uZmlncyhwYXJlbnRDb25maWcsIGNvbmZpZykpO1xuXG4gICAgICAgICAgICBpZiAobG9jYWxlRmFtaWxpZXNbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICBsb2NhbGVGYW1pbGllc1tuYW1lXS5mb3JFYWNoKGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgIGRlZmluZUxvY2FsZSh4Lm5hbWUsIHguY29uZmlnKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gYmFja3dhcmRzIGNvbXBhdCBmb3Igbm93OiBhbHNvIHNldCB0aGUgbG9jYWxlXG4gICAgICAgICAgICAvLyBtYWtlIHN1cmUgd2Ugc2V0IHRoZSBsb2NhbGUgQUZURVIgYWxsIGNoaWxkIGxvY2FsZXMgaGF2ZSBiZWVuXG4gICAgICAgICAgICAvLyBjcmVhdGVkLCBzbyB3ZSB3b24ndCBlbmQgdXAgd2l0aCB0aGUgY2hpbGQgbG9jYWxlIHNldC5cbiAgICAgICAgICAgIGdldFNldEdsb2JhbExvY2FsZShuYW1lKTtcblxuICAgICAgICAgICAgcmV0dXJuIGxvY2FsZXNbbmFtZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyB1c2VmdWwgZm9yIHRlc3RpbmdcbiAgICAgICAgICAgIGRlbGV0ZSBsb2NhbGVzW25hbWVdO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1cGRhdGVMb2NhbGUobmFtZSwgY29uZmlnKSB7XG4gICAgICAgIGlmIChjb25maWcgIT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIGxvY2FsZSxcbiAgICAgICAgICAgICAgICB0bXBMb2NhbGUsXG4gICAgICAgICAgICAgICAgcGFyZW50Q29uZmlnID0gYmFzZUNvbmZpZztcblxuICAgICAgICAgICAgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCAmJiBsb2NhbGVzW25hbWVdLnBhcmVudExvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIGV4aXN0aW5nIGNoaWxkIGxvY2FsZSBpbi1wbGFjZSB0byBhdm9pZCBtZW1vcnktbGVha3NcbiAgICAgICAgICAgICAgICBsb2NhbGVzW25hbWVdLnNldChtZXJnZUNvbmZpZ3MobG9jYWxlc1tuYW1lXS5fY29uZmlnLCBjb25maWcpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gTUVSR0VcbiAgICAgICAgICAgICAgICB0bXBMb2NhbGUgPSBsb2FkTG9jYWxlKG5hbWUpO1xuICAgICAgICAgICAgICAgIGlmICh0bXBMb2NhbGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSB0bXBMb2NhbGUuX2NvbmZpZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uZmlnID0gbWVyZ2VDb25maWdzKHBhcmVudENvbmZpZywgY29uZmlnKTtcbiAgICAgICAgICAgICAgICBpZiAodG1wTG9jYWxlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdXBkYXRlTG9jYWxlIGlzIGNhbGxlZCBmb3IgY3JlYXRpbmcgYSBuZXcgbG9jYWxlXG4gICAgICAgICAgICAgICAgICAgIC8vIFNldCBhYmJyIHNvIGl0IHdpbGwgaGF2ZSBhIG5hbWUgKGdldHRlcnMgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgIC8vIHVuZGVmaW5lZCBvdGhlcndpc2UpLlxuICAgICAgICAgICAgICAgICAgICBjb25maWcuYWJiciA9IG5hbWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxvY2FsZSA9IG5ldyBMb2NhbGUoY29uZmlnKTtcbiAgICAgICAgICAgICAgICBsb2NhbGUucGFyZW50TG9jYWxlID0gbG9jYWxlc1tuYW1lXTtcbiAgICAgICAgICAgICAgICBsb2NhbGVzW25hbWVdID0gbG9jYWxlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBiYWNrd2FyZHMgY29tcGF0IGZvciBub3c6IGFsc28gc2V0IHRoZSBsb2NhbGVcbiAgICAgICAgICAgIGdldFNldEdsb2JhbExvY2FsZShuYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHBhc3MgbnVsbCBmb3IgY29uZmlnIHRvIHVudXBkYXRlLCB1c2VmdWwgZm9yIHRlc3RzXG4gICAgICAgICAgICBpZiAobG9jYWxlc1tuYW1lXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvY2FsZXNbbmFtZV0ucGFyZW50TG9jYWxlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlc1tuYW1lXSA9IGxvY2FsZXNbbmFtZV0ucGFyZW50TG9jYWxlO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmFtZSA9PT0gZ2V0U2V0R2xvYmFsTG9jYWxlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldFNldEdsb2JhbExvY2FsZShuYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobG9jYWxlc1tuYW1lXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBsb2NhbGVzW25hbWVdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbG9jYWxlc1tuYW1lXTtcbiAgICB9XG5cbiAgICAvLyByZXR1cm5zIGxvY2FsZSBkYXRhXG4gICAgZnVuY3Rpb24gZ2V0TG9jYWxlKGtleSkge1xuICAgICAgICB2YXIgbG9jYWxlO1xuXG4gICAgICAgIGlmIChrZXkgJiYga2V5Ll9sb2NhbGUgJiYga2V5Ll9sb2NhbGUuX2FiYnIpIHtcbiAgICAgICAgICAgIGtleSA9IGtleS5fbG9jYWxlLl9hYmJyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFrZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBnbG9iYWxMb2NhbGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzQXJyYXkoa2V5KSkge1xuICAgICAgICAgICAgLy9zaG9ydC1jaXJjdWl0IGV2ZXJ5dGhpbmcgZWxzZVxuICAgICAgICAgICAgbG9jYWxlID0gbG9hZExvY2FsZShrZXkpO1xuICAgICAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBsb2NhbGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBrZXkgPSBba2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjaG9vc2VMb2NhbGUoa2V5KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0TG9jYWxlcygpIHtcbiAgICAgICAgcmV0dXJuIGtleXMobG9jYWxlcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2hlY2tPdmVyZmxvdyhtKSB7XG4gICAgICAgIHZhciBvdmVyZmxvdyxcbiAgICAgICAgICAgIGEgPSBtLl9hO1xuXG4gICAgICAgIGlmIChhICYmIGdldFBhcnNpbmdGbGFncyhtKS5vdmVyZmxvdyA9PT0gLTIpIHtcbiAgICAgICAgICAgIG92ZXJmbG93ID1cbiAgICAgICAgICAgICAgICBhW01PTlRIXSA8IDAgfHwgYVtNT05USF0gPiAxMVxuICAgICAgICAgICAgICAgICAgICA/IE1PTlRIXG4gICAgICAgICAgICAgICAgICAgIDogYVtEQVRFXSA8IDEgfHwgYVtEQVRFXSA+IGRheXNJbk1vbnRoKGFbWUVBUl0sIGFbTU9OVEhdKVxuICAgICAgICAgICAgICAgICAgICA/IERBVEVcbiAgICAgICAgICAgICAgICAgICAgOiBhW0hPVVJdIDwgMCB8fFxuICAgICAgICAgICAgICAgICAgICAgIGFbSE9VUl0gPiAyNCB8fFxuICAgICAgICAgICAgICAgICAgICAgIChhW0hPVVJdID09PSAyNCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYVtNSU5VVEVdICE9PSAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhW1NFQ09ORF0gIT09IDAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFbTUlMTElTRUNPTkRdICE9PSAwKSlcbiAgICAgICAgICAgICAgICAgICAgPyBIT1VSXG4gICAgICAgICAgICAgICAgICAgIDogYVtNSU5VVEVdIDwgMCB8fCBhW01JTlVURV0gPiA1OVxuICAgICAgICAgICAgICAgICAgICA/IE1JTlVURVxuICAgICAgICAgICAgICAgICAgICA6IGFbU0VDT05EXSA8IDAgfHwgYVtTRUNPTkRdID4gNTlcbiAgICAgICAgICAgICAgICAgICAgPyBTRUNPTkRcbiAgICAgICAgICAgICAgICAgICAgOiBhW01JTExJU0VDT05EXSA8IDAgfHwgYVtNSUxMSVNFQ09ORF0gPiA5OTlcbiAgICAgICAgICAgICAgICAgICAgPyBNSUxMSVNFQ09ORFxuICAgICAgICAgICAgICAgICAgICA6IC0xO1xuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKG0pLl9vdmVyZmxvd0RheU9mWWVhciAmJlxuICAgICAgICAgICAgICAgIChvdmVyZmxvdyA8IFlFQVIgfHwgb3ZlcmZsb3cgPiBEQVRFKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3cgPSBEQVRFO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGdldFBhcnNpbmdGbGFncyhtKS5fb3ZlcmZsb3dXZWVrcyAmJiBvdmVyZmxvdyA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IFdFRUs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZ2V0UGFyc2luZ0ZsYWdzKG0pLl9vdmVyZmxvd1dlZWtkYXkgJiYgb3ZlcmZsb3cgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3cgPSBXRUVLREFZO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MobSkub3ZlcmZsb3cgPSBvdmVyZmxvdztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIC8vIGlzbyA4NjAxIHJlZ2V4XG4gICAgLy8gMDAwMC0wMC0wMCAwMDAwLVcwMCBvciAwMDAwLVcwMC0wICsgVCArIDAwIG9yIDAwOjAwIG9yIDAwOjAwOjAwIG9yIDAwOjAwOjAwLjAwMCArICswMDowMCBvciArMDAwMCBvciArMDApXG4gICAgdmFyIGV4dGVuZGVkSXNvUmVnZXggPVxuICAgICAgICAgICAgL15cXHMqKCg/OlsrLV1cXGR7Nn18XFxkezR9KS0oPzpcXGRcXGQtXFxkXFxkfFdcXGRcXGQtXFxkfFdcXGRcXGR8XFxkXFxkXFxkfFxcZFxcZCkpKD86KFR8ICkoXFxkXFxkKD86OlxcZFxcZCg/OjpcXGRcXGQoPzpbLixdXFxkKyk/KT8pPykoWystXVxcZFxcZCg/Ojo/XFxkXFxkKT98XFxzKlopPyk/JC8sXG4gICAgICAgIGJhc2ljSXNvUmVnZXggPVxuICAgICAgICAgICAgL15cXHMqKCg/OlsrLV1cXGR7Nn18XFxkezR9KSg/OlxcZFxcZFxcZFxcZHxXXFxkXFxkXFxkfFdcXGRcXGR8XFxkXFxkXFxkfFxcZFxcZHwpKSg/OihUfCApKFxcZFxcZCg/OlxcZFxcZCg/OlxcZFxcZCg/OlsuLF1cXGQrKT8pPyk/KShbKy1dXFxkXFxkKD86Oj9cXGRcXGQpP3xcXHMqWik/KT8kLyxcbiAgICAgICAgdHpSZWdleCA9IC9afFsrLV1cXGRcXGQoPzo6P1xcZFxcZCk/LyxcbiAgICAgICAgaXNvRGF0ZXMgPSBbXG4gICAgICAgICAgICBbJ1lZWVlZWS1NTS1ERCcsIC9bKy1dXFxkezZ9LVxcZFxcZC1cXGRcXGQvXSxcbiAgICAgICAgICAgIFsnWVlZWS1NTS1ERCcsIC9cXGR7NH0tXFxkXFxkLVxcZFxcZC9dLFxuICAgICAgICAgICAgWydHR0dHLVtXXVdXLUUnLCAvXFxkezR9LVdcXGRcXGQtXFxkL10sXG4gICAgICAgICAgICBbJ0dHR0ctW1ddV1cnLCAvXFxkezR9LVdcXGRcXGQvLCBmYWxzZV0sXG4gICAgICAgICAgICBbJ1lZWVktREREJywgL1xcZHs0fS1cXGR7M30vXSxcbiAgICAgICAgICAgIFsnWVlZWS1NTScsIC9cXGR7NH0tXFxkXFxkLywgZmFsc2VdLFxuICAgICAgICAgICAgWydZWVlZWVlNTUREJywgL1srLV1cXGR7MTB9L10sXG4gICAgICAgICAgICBbJ1lZWVlNTUREJywgL1xcZHs4fS9dLFxuICAgICAgICAgICAgWydHR0dHW1ddV1dFJywgL1xcZHs0fVdcXGR7M30vXSxcbiAgICAgICAgICAgIFsnR0dHR1tXXVdXJywgL1xcZHs0fVdcXGR7Mn0vLCBmYWxzZV0sXG4gICAgICAgICAgICBbJ1lZWVlEREQnLCAvXFxkezd9L10sXG4gICAgICAgICAgICBbJ1lZWVlNTScsIC9cXGR7Nn0vLCBmYWxzZV0sXG4gICAgICAgICAgICBbJ1lZWVknLCAvXFxkezR9LywgZmFsc2VdLFxuICAgICAgICBdLFxuICAgICAgICAvLyBpc28gdGltZSBmb3JtYXRzIGFuZCByZWdleGVzXG4gICAgICAgIGlzb1RpbWVzID0gW1xuICAgICAgICAgICAgWydISDptbTpzcy5TU1NTJywgL1xcZFxcZDpcXGRcXGQ6XFxkXFxkXFwuXFxkKy9dLFxuICAgICAgICAgICAgWydISDptbTpzcyxTU1NTJywgL1xcZFxcZDpcXGRcXGQ6XFxkXFxkLFxcZCsvXSxcbiAgICAgICAgICAgIFsnSEg6bW06c3MnLCAvXFxkXFxkOlxcZFxcZDpcXGRcXGQvXSxcbiAgICAgICAgICAgIFsnSEg6bW0nLCAvXFxkXFxkOlxcZFxcZC9dLFxuICAgICAgICAgICAgWydISG1tc3MuU1NTUycsIC9cXGRcXGRcXGRcXGRcXGRcXGRcXC5cXGQrL10sXG4gICAgICAgICAgICBbJ0hIbW1zcyxTU1NTJywgL1xcZFxcZFxcZFxcZFxcZFxcZCxcXGQrL10sXG4gICAgICAgICAgICBbJ0hIbW1zcycsIC9cXGRcXGRcXGRcXGRcXGRcXGQvXSxcbiAgICAgICAgICAgIFsnSEhtbScsIC9cXGRcXGRcXGRcXGQvXSxcbiAgICAgICAgICAgIFsnSEgnLCAvXFxkXFxkL10sXG4gICAgICAgIF0sXG4gICAgICAgIGFzcE5ldEpzb25SZWdleCA9IC9eXFwvP0RhdGVcXCgoLT9cXGQrKS9pLFxuICAgICAgICAvLyBSRkMgMjgyMiByZWdleDogRm9yIGRldGFpbHMgc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyODIyI3NlY3Rpb24tMy4zXG4gICAgICAgIHJmYzI4MjIgPVxuICAgICAgICAgICAgL14oPzooTW9ufFR1ZXxXZWR8VGh1fEZyaXxTYXR8U3VuKSw/XFxzKT8oXFxkezEsMn0pXFxzKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKVxccyhcXGR7Miw0fSlcXHMoXFxkXFxkKTooXFxkXFxkKSg/OjooXFxkXFxkKSk/XFxzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfChbKy1dXFxkezR9KSkkLyxcbiAgICAgICAgb2JzT2Zmc2V0cyA9IHtcbiAgICAgICAgICAgIFVUOiAwLFxuICAgICAgICAgICAgR01UOiAwLFxuICAgICAgICAgICAgRURUOiAtNCAqIDYwLFxuICAgICAgICAgICAgRVNUOiAtNSAqIDYwLFxuICAgICAgICAgICAgQ0RUOiAtNSAqIDYwLFxuICAgICAgICAgICAgQ1NUOiAtNiAqIDYwLFxuICAgICAgICAgICAgTURUOiAtNiAqIDYwLFxuICAgICAgICAgICAgTVNUOiAtNyAqIDYwLFxuICAgICAgICAgICAgUERUOiAtNyAqIDYwLFxuICAgICAgICAgICAgUFNUOiAtOCAqIDYwLFxuICAgICAgICB9O1xuXG4gICAgLy8gZGF0ZSBmcm9tIGlzbyBmb3JtYXRcbiAgICBmdW5jdGlvbiBjb25maWdGcm9tSVNPKGNvbmZpZykge1xuICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgIGwsXG4gICAgICAgICAgICBzdHJpbmcgPSBjb25maWcuX2ksXG4gICAgICAgICAgICBtYXRjaCA9IGV4dGVuZGVkSXNvUmVnZXguZXhlYyhzdHJpbmcpIHx8IGJhc2ljSXNvUmVnZXguZXhlYyhzdHJpbmcpLFxuICAgICAgICAgICAgYWxsb3dUaW1lLFxuICAgICAgICAgICAgZGF0ZUZvcm1hdCxcbiAgICAgICAgICAgIHRpbWVGb3JtYXQsXG4gICAgICAgICAgICB0ekZvcm1hdCxcbiAgICAgICAgICAgIGlzb0RhdGVzTGVuID0gaXNvRGF0ZXMubGVuZ3RoLFxuICAgICAgICAgICAgaXNvVGltZXNMZW4gPSBpc29UaW1lcy5sZW5ndGg7XG5cbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5pc28gPSB0cnVlO1xuICAgICAgICAgICAgZm9yIChpID0gMCwgbCA9IGlzb0RhdGVzTGVuOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzb0RhdGVzW2ldWzFdLmV4ZWMobWF0Y2hbMV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQgPSBpc29EYXRlc1tpXVswXTtcbiAgICAgICAgICAgICAgICAgICAgYWxsb3dUaW1lID0gaXNvRGF0ZXNbaV1bMl0gIT09IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGF0ZUZvcm1hdCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1hdGNoWzNdKSB7XG4gICAgICAgICAgICAgICAgZm9yIChpID0gMCwgbCA9IGlzb1RpbWVzTGVuOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc29UaW1lc1tpXVsxXS5leGVjKG1hdGNoWzNdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWF0Y2hbMl0gc2hvdWxkIGJlICdUJyBvciBzcGFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZUZvcm1hdCA9IChtYXRjaFsyXSB8fCAnICcpICsgaXNvVGltZXNbaV1bMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGltZUZvcm1hdCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFhbGxvd1RpbWUgJiYgdGltZUZvcm1hdCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1hdGNoWzRdKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR6UmVnZXguZXhlYyhtYXRjaFs0XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdHpGb3JtYXQgPSAnWic7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25maWcuX2YgPSBkYXRlRm9ybWF0ICsgKHRpbWVGb3JtYXQgfHwgJycpICsgKHR6Rm9ybWF0IHx8ICcnKTtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0cmFjdEZyb21SRkMyODIyU3RyaW5ncyhcbiAgICAgICAgeWVhclN0cixcbiAgICAgICAgbW9udGhTdHIsXG4gICAgICAgIGRheVN0cixcbiAgICAgICAgaG91clN0cixcbiAgICAgICAgbWludXRlU3RyLFxuICAgICAgICBzZWNvbmRTdHJcbiAgICApIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtcbiAgICAgICAgICAgIHVudHJ1bmNhdGVZZWFyKHllYXJTdHIpLFxuICAgICAgICAgICAgZGVmYXVsdExvY2FsZU1vbnRoc1Nob3J0LmluZGV4T2YobW9udGhTdHIpLFxuICAgICAgICAgICAgcGFyc2VJbnQoZGF5U3RyLCAxMCksXG4gICAgICAgICAgICBwYXJzZUludChob3VyU3RyLCAxMCksXG4gICAgICAgICAgICBwYXJzZUludChtaW51dGVTdHIsIDEwKSxcbiAgICAgICAgXTtcblxuICAgICAgICBpZiAoc2Vjb25kU3RyKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChwYXJzZUludChzZWNvbmRTdHIsIDEwKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVudHJ1bmNhdGVZZWFyKHllYXJTdHIpIHtcbiAgICAgICAgdmFyIHllYXIgPSBwYXJzZUludCh5ZWFyU3RyLCAxMCk7XG4gICAgICAgIGlmICh5ZWFyIDw9IDQ5KSB7XG4gICAgICAgICAgICByZXR1cm4gMjAwMCArIHllYXI7XG4gICAgICAgIH0gZWxzZSBpZiAoeWVhciA8PSA5OTkpIHtcbiAgICAgICAgICAgIHJldHVybiAxOTAwICsgeWVhcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geWVhcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmVwcm9jZXNzUkZDMjgyMihzKSB7XG4gICAgICAgIC8vIFJlbW92ZSBjb21tZW50cyBhbmQgZm9sZGluZyB3aGl0ZXNwYWNlIGFuZCByZXBsYWNlIG11bHRpcGxlLXNwYWNlcyB3aXRoIGEgc2luZ2xlIHNwYWNlXG4gICAgICAgIHJldHVybiBzXG4gICAgICAgICAgICAucmVwbGFjZSgvXFwoW14oKV0qXFwpfFtcXG5cXHRdL2csICcgJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC8oXFxzXFxzKykvZywgJyAnKVxuICAgICAgICAgICAgLnJlcGxhY2UoL15cXHNcXHMqLywgJycpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxzXFxzKiQvLCAnJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2hlY2tXZWVrZGF5KHdlZWtkYXlTdHIsIHBhcnNlZElucHV0LCBjb25maWcpIHtcbiAgICAgICAgaWYgKHdlZWtkYXlTdHIpIHtcbiAgICAgICAgICAgIC8vIFRPRE86IFJlcGxhY2UgdGhlIHZhbmlsbGEgSlMgRGF0ZSBvYmplY3Qgd2l0aCBhbiBpbmRlcGVuZGVudCBkYXktb2Ytd2VlayBjaGVjay5cbiAgICAgICAgICAgIHZhciB3ZWVrZGF5UHJvdmlkZWQgPSBkZWZhdWx0TG9jYWxlV2Vla2RheXNTaG9ydC5pbmRleE9mKHdlZWtkYXlTdHIpLFxuICAgICAgICAgICAgICAgIHdlZWtkYXlBY3R1YWwgPSBuZXcgRGF0ZShcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkSW5wdXRbMF0sXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZElucHV0WzFdLFxuICAgICAgICAgICAgICAgICAgICBwYXJzZWRJbnB1dFsyXVxuICAgICAgICAgICAgICAgICkuZ2V0RGF5KCk7XG4gICAgICAgICAgICBpZiAod2Vla2RheVByb3ZpZGVkICE9PSB3ZWVrZGF5QWN0dWFsKSB7XG4gICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykud2Vla2RheU1pc21hdGNoID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2FsY3VsYXRlT2Zmc2V0KG9ic09mZnNldCwgbWlsaXRhcnlPZmZzZXQsIG51bU9mZnNldCkge1xuICAgICAgICBpZiAob2JzT2Zmc2V0KSB7XG4gICAgICAgICAgICByZXR1cm4gb2JzT2Zmc2V0c1tvYnNPZmZzZXRdO1xuICAgICAgICB9IGVsc2UgaWYgKG1pbGl0YXJ5T2Zmc2V0KSB7XG4gICAgICAgICAgICAvLyB0aGUgb25seSBhbGxvd2VkIG1pbGl0YXJ5IHR6IGlzIFpcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIGhtID0gcGFyc2VJbnQobnVtT2Zmc2V0LCAxMCksXG4gICAgICAgICAgICAgICAgbSA9IGhtICUgMTAwLFxuICAgICAgICAgICAgICAgIGggPSAoaG0gLSBtKSAvIDEwMDtcbiAgICAgICAgICAgIHJldHVybiBoICogNjAgKyBtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZGF0ZSBhbmQgdGltZSBmcm9tIHJlZiAyODIyIGZvcm1hdFxuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21SRkMyODIyKGNvbmZpZykge1xuICAgICAgICB2YXIgbWF0Y2ggPSByZmMyODIyLmV4ZWMocHJlcHJvY2Vzc1JGQzI4MjIoY29uZmlnLl9pKSksXG4gICAgICAgICAgICBwYXJzZWRBcnJheTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICBwYXJzZWRBcnJheSA9IGV4dHJhY3RGcm9tUkZDMjgyMlN0cmluZ3MoXG4gICAgICAgICAgICAgICAgbWF0Y2hbNF0sXG4gICAgICAgICAgICAgICAgbWF0Y2hbM10sXG4gICAgICAgICAgICAgICAgbWF0Y2hbMl0sXG4gICAgICAgICAgICAgICAgbWF0Y2hbNV0sXG4gICAgICAgICAgICAgICAgbWF0Y2hbNl0sXG4gICAgICAgICAgICAgICAgbWF0Y2hbN11cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoIWNoZWNrV2Vla2RheShtYXRjaFsxXSwgcGFyc2VkQXJyYXksIGNvbmZpZykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbmZpZy5fYSA9IHBhcnNlZEFycmF5O1xuICAgICAgICAgICAgY29uZmlnLl90em0gPSBjYWxjdWxhdGVPZmZzZXQobWF0Y2hbOF0sIG1hdGNoWzldLCBtYXRjaFsxMF0pO1xuXG4gICAgICAgICAgICBjb25maWcuX2QgPSBjcmVhdGVVVENEYXRlLmFwcGx5KG51bGwsIGNvbmZpZy5fYSk7XG4gICAgICAgICAgICBjb25maWcuX2Quc2V0VVRDTWludXRlcyhjb25maWcuX2QuZ2V0VVRDTWludXRlcygpIC0gY29uZmlnLl90em0pO1xuXG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5yZmMyODIyID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZGF0ZSBmcm9tIDEpIEFTUC5ORVQsIDIpIElTTywgMykgUkZDIDI4MjIgZm9ybWF0cywgb3IgNCkgb3B0aW9uYWwgZmFsbGJhY2sgaWYgcGFyc2luZyBpc24ndCBzdHJpY3RcbiAgICBmdW5jdGlvbiBjb25maWdGcm9tU3RyaW5nKGNvbmZpZykge1xuICAgICAgICB2YXIgbWF0Y2hlZCA9IGFzcE5ldEpzb25SZWdleC5leGVjKGNvbmZpZy5faSk7XG4gICAgICAgIGlmIChtYXRjaGVkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZSgrbWF0Y2hlZFsxXSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25maWdGcm9tSVNPKGNvbmZpZyk7XG4gICAgICAgIGlmIChjb25maWcuX2lzVmFsaWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBkZWxldGUgY29uZmlnLl9pc1ZhbGlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uZmlnRnJvbVJGQzI4MjIoY29uZmlnKTtcbiAgICAgICAgaWYgKGNvbmZpZy5faXNWYWxpZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBjb25maWcuX2lzVmFsaWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZmlnLl9zdHJpY3QpIHtcbiAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gRmluYWwgYXR0ZW1wdCwgdXNlIElucHV0IEZhbGxiYWNrXG4gICAgICAgICAgICBob29rcy5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjayhjb25maWcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaG9va3MuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2sgPSBkZXByZWNhdGUoXG4gICAgICAgICd2YWx1ZSBwcm92aWRlZCBpcyBub3QgaW4gYSByZWNvZ25pemVkIFJGQzI4MjIgb3IgSVNPIGZvcm1hdC4gbW9tZW50IGNvbnN0cnVjdGlvbiBmYWxscyBiYWNrIHRvIGpzIERhdGUoKSwgJyArXG4gICAgICAgICAgICAnd2hpY2ggaXMgbm90IHJlbGlhYmxlIGFjcm9zcyBhbGwgYnJvd3NlcnMgYW5kIHZlcnNpb25zLiBOb24gUkZDMjgyMi9JU08gZGF0ZSBmb3JtYXRzIGFyZSAnICtcbiAgICAgICAgICAgICdkaXNjb3VyYWdlZC4gUGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvanMtZGF0ZS8gZm9yIG1vcmUgaW5mby4nLFxuICAgICAgICBmdW5jdGlvbiAoY29uZmlnKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShjb25maWcuX2kgKyAoY29uZmlnLl91c2VVVEMgPyAnIFVUQycgOiAnJykpO1xuICAgICAgICB9XG4gICAgKTtcblxuICAgIC8vIFBpY2sgdGhlIGZpcnN0IGRlZmluZWQgb2YgdHdvIG9yIHRocmVlIGFyZ3VtZW50cy5cbiAgICBmdW5jdGlvbiBkZWZhdWx0cyhhLCBiLCBjKSB7XG4gICAgICAgIGlmIChhICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGN1cnJlbnREYXRlQXJyYXkoY29uZmlnKSB7XG4gICAgICAgIC8vIGhvb2tzIGlzIGFjdHVhbGx5IHRoZSBleHBvcnRlZCBtb21lbnQgb2JqZWN0XG4gICAgICAgIHZhciBub3dWYWx1ZSA9IG5ldyBEYXRlKGhvb2tzLm5vdygpKTtcbiAgICAgICAgaWYgKGNvbmZpZy5fdXNlVVRDKSB7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIG5vd1ZhbHVlLmdldFVUQ0Z1bGxZZWFyKCksXG4gICAgICAgICAgICAgICAgbm93VmFsdWUuZ2V0VVRDTW9udGgoKSxcbiAgICAgICAgICAgICAgICBub3dWYWx1ZS5nZXRVVENEYXRlKCksXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbbm93VmFsdWUuZ2V0RnVsbFllYXIoKSwgbm93VmFsdWUuZ2V0TW9udGgoKSwgbm93VmFsdWUuZ2V0RGF0ZSgpXTtcbiAgICB9XG5cbiAgICAvLyBjb252ZXJ0IGFuIGFycmF5IHRvIGEgZGF0ZS5cbiAgICAvLyB0aGUgYXJyYXkgc2hvdWxkIG1pcnJvciB0aGUgcGFyYW1ldGVycyBiZWxvd1xuICAgIC8vIG5vdGU6IGFsbCB2YWx1ZXMgcGFzdCB0aGUgeWVhciBhcmUgb3B0aW9uYWwgYW5kIHdpbGwgZGVmYXVsdCB0byB0aGUgbG93ZXN0IHBvc3NpYmxlIHZhbHVlLlxuICAgIC8vIFt5ZWFyLCBtb250aCwgZGF5ICwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kXVxuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21BcnJheShjb25maWcpIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgaW5wdXQgPSBbXSxcbiAgICAgICAgICAgIGN1cnJlbnREYXRlLFxuICAgICAgICAgICAgZXhwZWN0ZWRXZWVrZGF5LFxuICAgICAgICAgICAgeWVhclRvVXNlO1xuXG4gICAgICAgIGlmIChjb25maWcuX2QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnREYXRlID0gY3VycmVudERhdGVBcnJheShjb25maWcpO1xuXG4gICAgICAgIC8vY29tcHV0ZSBkYXkgb2YgdGhlIHllYXIgZnJvbSB3ZWVrcyBhbmQgd2Vla2RheXNcbiAgICAgICAgaWYgKGNvbmZpZy5fdyAmJiBjb25maWcuX2FbREFURV0gPT0gbnVsbCAmJiBjb25maWcuX2FbTU9OVEhdID09IG51bGwpIHtcbiAgICAgICAgICAgIGRheU9mWWVhckZyb21XZWVrSW5mbyhjb25maWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9pZiB0aGUgZGF5IG9mIHRoZSB5ZWFyIGlzIHNldCwgZmlndXJlIG91dCB3aGF0IGl0IGlzXG4gICAgICAgIGlmIChjb25maWcuX2RheU9mWWVhciAhPSBudWxsKSB7XG4gICAgICAgICAgICB5ZWFyVG9Vc2UgPSBkZWZhdWx0cyhjb25maWcuX2FbWUVBUl0sIGN1cnJlbnREYXRlW1lFQVJdKTtcblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGNvbmZpZy5fZGF5T2ZZZWFyID4gZGF5c0luWWVhcih5ZWFyVG9Vc2UpIHx8XG4gICAgICAgICAgICAgICAgY29uZmlnLl9kYXlPZlllYXIgPT09IDBcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLl9vdmVyZmxvd0RheU9mWWVhciA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRhdGUgPSBjcmVhdGVVVENEYXRlKHllYXJUb1VzZSwgMCwgY29uZmlnLl9kYXlPZlllYXIpO1xuICAgICAgICAgICAgY29uZmlnLl9hW01PTlRIXSA9IGRhdGUuZ2V0VVRDTW9udGgoKTtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtEQVRFXSA9IGRhdGUuZ2V0VVRDRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGVmYXVsdCB0byBjdXJyZW50IGRhdGUuXG4gICAgICAgIC8vICogaWYgbm8geWVhciwgbW9udGgsIGRheSBvZiBtb250aCBhcmUgZ2l2ZW4sIGRlZmF1bHQgdG8gdG9kYXlcbiAgICAgICAgLy8gKiBpZiBkYXkgb2YgbW9udGggaXMgZ2l2ZW4sIGRlZmF1bHQgbW9udGggYW5kIHllYXJcbiAgICAgICAgLy8gKiBpZiBtb250aCBpcyBnaXZlbiwgZGVmYXVsdCBvbmx5IHllYXJcbiAgICAgICAgLy8gKiBpZiB5ZWFyIGlzIGdpdmVuLCBkb24ndCBkZWZhdWx0IGFueXRoaW5nXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAzICYmIGNvbmZpZy5fYVtpXSA9PSBudWxsOyArK2kpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtpXSA9IGlucHV0W2ldID0gY3VycmVudERhdGVbaV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBaZXJvIG91dCB3aGF0ZXZlciB3YXMgbm90IGRlZmF1bHRlZCwgaW5jbHVkaW5nIHRpbWVcbiAgICAgICAgZm9yICg7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtpXSA9IGlucHV0W2ldID1cbiAgICAgICAgICAgICAgICBjb25maWcuX2FbaV0gPT0gbnVsbCA/IChpID09PSAyID8gMSA6IDApIDogY29uZmlnLl9hW2ldO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgZm9yIDI0OjAwOjAwLjAwMFxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb25maWcuX2FbSE9VUl0gPT09IDI0ICYmXG4gICAgICAgICAgICBjb25maWcuX2FbTUlOVVRFXSA9PT0gMCAmJlxuICAgICAgICAgICAgY29uZmlnLl9hW1NFQ09ORF0gPT09IDAgJiZcbiAgICAgICAgICAgIGNvbmZpZy5fYVtNSUxMSVNFQ09ORF0gPT09IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25maWcuX25leHREYXkgPSB0cnVlO1xuICAgICAgICAgICAgY29uZmlnLl9hW0hPVVJdID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbmZpZy5fZCA9IChjb25maWcuX3VzZVVUQyA/IGNyZWF0ZVVUQ0RhdGUgOiBjcmVhdGVEYXRlKS5hcHBseShcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICBpbnB1dFxuICAgICAgICApO1xuICAgICAgICBleHBlY3RlZFdlZWtkYXkgPSBjb25maWcuX3VzZVVUQ1xuICAgICAgICAgICAgPyBjb25maWcuX2QuZ2V0VVRDRGF5KClcbiAgICAgICAgICAgIDogY29uZmlnLl9kLmdldERheSgpO1xuXG4gICAgICAgIC8vIEFwcGx5IHRpbWV6b25lIG9mZnNldCBmcm9tIGlucHV0LiBUaGUgYWN0dWFsIHV0Y09mZnNldCBjYW4gYmUgY2hhbmdlZFxuICAgICAgICAvLyB3aXRoIHBhcnNlWm9uZS5cbiAgICAgICAgaWYgKGNvbmZpZy5fdHptICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZC5zZXRVVENNaW51dGVzKGNvbmZpZy5fZC5nZXRVVENNaW51dGVzKCkgLSBjb25maWcuX3R6bSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZmlnLl9uZXh0RGF5KSB7XG4gICAgICAgICAgICBjb25maWcuX2FbSE9VUl0gPSAyNDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNoZWNrIGZvciBtaXNtYXRjaGluZyBkYXkgb2Ygd2Vla1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb25maWcuX3cgJiZcbiAgICAgICAgICAgIHR5cGVvZiBjb25maWcuX3cuZCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAgIGNvbmZpZy5fdy5kICE9PSBleHBlY3RlZFdlZWtkYXlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS53ZWVrZGF5TWlzbWF0Y2ggPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGF5T2ZZZWFyRnJvbVdlZWtJbmZvKGNvbmZpZykge1xuICAgICAgICB2YXIgdywgd2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95LCB0ZW1wLCB3ZWVrZGF5T3ZlcmZsb3csIGN1cldlZWs7XG5cbiAgICAgICAgdyA9IGNvbmZpZy5fdztcbiAgICAgICAgaWYgKHcuR0cgIT0gbnVsbCB8fCB3LlcgIT0gbnVsbCB8fCB3LkUgIT0gbnVsbCkge1xuICAgICAgICAgICAgZG93ID0gMTtcbiAgICAgICAgICAgIGRveSA9IDQ7XG5cbiAgICAgICAgICAgIC8vIFRPRE86IFdlIG5lZWQgdG8gdGFrZSB0aGUgY3VycmVudCBpc29XZWVrWWVhciwgYnV0IHRoYXQgZGVwZW5kcyBvblxuICAgICAgICAgICAgLy8gaG93IHdlIGludGVycHJldCBub3cgKGxvY2FsLCB1dGMsIGZpeGVkIG9mZnNldCkuIFNvIGNyZWF0ZVxuICAgICAgICAgICAgLy8gYSBub3cgdmVyc2lvbiBvZiBjdXJyZW50IGNvbmZpZyAodGFrZSBsb2NhbC91dGMvb2Zmc2V0IGZsYWdzLCBhbmRcbiAgICAgICAgICAgIC8vIGNyZWF0ZSBub3cpLlxuICAgICAgICAgICAgd2Vla1llYXIgPSBkZWZhdWx0cyhcbiAgICAgICAgICAgICAgICB3LkdHLFxuICAgICAgICAgICAgICAgIGNvbmZpZy5fYVtZRUFSXSxcbiAgICAgICAgICAgICAgICB3ZWVrT2ZZZWFyKGNyZWF0ZUxvY2FsKCksIDEsIDQpLnllYXJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB3ZWVrID0gZGVmYXVsdHMody5XLCAxKTtcbiAgICAgICAgICAgIHdlZWtkYXkgPSBkZWZhdWx0cyh3LkUsIDEpO1xuICAgICAgICAgICAgaWYgKHdlZWtkYXkgPCAxIHx8IHdlZWtkYXkgPiA3KSB7XG4gICAgICAgICAgICAgICAgd2Vla2RheU92ZXJmbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRvdyA9IGNvbmZpZy5fbG9jYWxlLl93ZWVrLmRvdztcbiAgICAgICAgICAgIGRveSA9IGNvbmZpZy5fbG9jYWxlLl93ZWVrLmRveTtcblxuICAgICAgICAgICAgY3VyV2VlayA9IHdlZWtPZlllYXIoY3JlYXRlTG9jYWwoKSwgZG93LCBkb3kpO1xuXG4gICAgICAgICAgICB3ZWVrWWVhciA9IGRlZmF1bHRzKHcuZ2csIGNvbmZpZy5fYVtZRUFSXSwgY3VyV2Vlay55ZWFyKTtcblxuICAgICAgICAgICAgLy8gRGVmYXVsdCB0byBjdXJyZW50IHdlZWsuXG4gICAgICAgICAgICB3ZWVrID0gZGVmYXVsdHMody53LCBjdXJXZWVrLndlZWspO1xuXG4gICAgICAgICAgICBpZiAody5kICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAvLyB3ZWVrZGF5IC0tIGxvdyBkYXkgbnVtYmVycyBhcmUgY29uc2lkZXJlZCBuZXh0IHdlZWtcbiAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gdy5kO1xuICAgICAgICAgICAgICAgIGlmICh3ZWVrZGF5IDwgMCB8fCB3ZWVrZGF5ID4gNikge1xuICAgICAgICAgICAgICAgICAgICB3ZWVrZGF5T3ZlcmZsb3cgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAody5lICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAvLyBsb2NhbCB3ZWVrZGF5IC0tIGNvdW50aW5nIHN0YXJ0cyBmcm9tIGJlZ2lubmluZyBvZiB3ZWVrXG4gICAgICAgICAgICAgICAgd2Vla2RheSA9IHcuZSArIGRvdztcbiAgICAgICAgICAgICAgICBpZiAody5lIDwgMCB8fCB3LmUgPiA2KSB7XG4gICAgICAgICAgICAgICAgICAgIHdlZWtkYXlPdmVyZmxvdyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IHRvIGJlZ2lubmluZyBvZiB3ZWVrXG4gICAgICAgICAgICAgICAgd2Vla2RheSA9IGRvdztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAod2VlayA8IDEgfHwgd2VlayA+IHdlZWtzSW5ZZWFyKHdlZWtZZWFyLCBkb3csIGRveSkpIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLl9vdmVyZmxvd1dlZWtzID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh3ZWVrZGF5T3ZlcmZsb3cgIT0gbnVsbCkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuX292ZXJmbG93V2Vla2RheSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0ZW1wID0gZGF5T2ZZZWFyRnJvbVdlZWtzKHdlZWtZZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSk7XG4gICAgICAgICAgICBjb25maWcuX2FbWUVBUl0gPSB0ZW1wLnllYXI7XG4gICAgICAgICAgICBjb25maWcuX2RheU9mWWVhciA9IHRlbXAuZGF5T2ZZZWFyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gY29uc3RhbnQgdGhhdCByZWZlcnMgdG8gdGhlIElTTyBzdGFuZGFyZFxuICAgIGhvb2tzLklTT184NjAxID0gZnVuY3Rpb24gKCkge307XG5cbiAgICAvLyBjb25zdGFudCB0aGF0IHJlZmVycyB0byB0aGUgUkZDIDI4MjIgZm9ybVxuICAgIGhvb2tzLlJGQ18yODIyID0gZnVuY3Rpb24gKCkge307XG5cbiAgICAvLyBkYXRlIGZyb20gc3RyaW5nIGFuZCBmb3JtYXQgc3RyaW5nXG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbVN0cmluZ0FuZEZvcm1hdChjb25maWcpIHtcbiAgICAgICAgLy8gVE9ETzogTW92ZSB0aGlzIHRvIGFub3RoZXIgcGFydCBvZiB0aGUgY3JlYXRpb24gZmxvdyB0byBwcmV2ZW50IGNpcmN1bGFyIGRlcHNcbiAgICAgICAgaWYgKGNvbmZpZy5fZiA9PT0gaG9va3MuSVNPXzg2MDEpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21JU08oY29uZmlnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29uZmlnLl9mID09PSBob29rcy5SRkNfMjgyMikge1xuICAgICAgICAgICAgY29uZmlnRnJvbVJGQzI4MjIoY29uZmlnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25maWcuX2EgPSBbXTtcbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuZW1wdHkgPSB0cnVlO1xuXG4gICAgICAgIC8vIFRoaXMgYXJyYXkgaXMgdXNlZCB0byBtYWtlIGEgRGF0ZSwgZWl0aGVyIHdpdGggYG5ldyBEYXRlYCBvciBgRGF0ZS5VVENgXG4gICAgICAgIHZhciBzdHJpbmcgPSAnJyArIGNvbmZpZy5faSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBwYXJzZWRJbnB1dCxcbiAgICAgICAgICAgIHRva2VucyxcbiAgICAgICAgICAgIHRva2VuLFxuICAgICAgICAgICAgc2tpcHBlZCxcbiAgICAgICAgICAgIHN0cmluZ0xlbmd0aCA9IHN0cmluZy5sZW5ndGgsXG4gICAgICAgICAgICB0b3RhbFBhcnNlZElucHV0TGVuZ3RoID0gMCxcbiAgICAgICAgICAgIGVyYSxcbiAgICAgICAgICAgIHRva2VuTGVuO1xuXG4gICAgICAgIHRva2VucyA9XG4gICAgICAgICAgICBleHBhbmRGb3JtYXQoY29uZmlnLl9mLCBjb25maWcuX2xvY2FsZSkubWF0Y2goZm9ybWF0dGluZ1Rva2VucykgfHwgW107XG4gICAgICAgIHRva2VuTGVuID0gdG9rZW5zLmxlbmd0aDtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHRva2VuTGVuOyBpKyspIHtcbiAgICAgICAgICAgIHRva2VuID0gdG9rZW5zW2ldO1xuICAgICAgICAgICAgcGFyc2VkSW5wdXQgPSAoc3RyaW5nLm1hdGNoKGdldFBhcnNlUmVnZXhGb3JUb2tlbih0b2tlbiwgY29uZmlnKSkgfHxcbiAgICAgICAgICAgICAgICBbXSlbMF07XG4gICAgICAgICAgICBpZiAocGFyc2VkSW5wdXQpIHtcbiAgICAgICAgICAgICAgICBza2lwcGVkID0gc3RyaW5nLnN1YnN0cigwLCBzdHJpbmcuaW5kZXhPZihwYXJzZWRJbnB1dCkpO1xuICAgICAgICAgICAgICAgIGlmIChza2lwcGVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykudW51c2VkSW5wdXQucHVzaChza2lwcGVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnNsaWNlKFxuICAgICAgICAgICAgICAgICAgICBzdHJpbmcuaW5kZXhPZihwYXJzZWRJbnB1dCkgKyBwYXJzZWRJbnB1dC5sZW5ndGhcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRvdGFsUGFyc2VkSW5wdXRMZW5ndGggKz0gcGFyc2VkSW5wdXQubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZG9uJ3QgcGFyc2UgaWYgaXQncyBub3QgYSBrbm93biB0b2tlblxuICAgICAgICAgICAgaWYgKGZvcm1hdFRva2VuRnVuY3Rpb25zW3Rva2VuXSkge1xuICAgICAgICAgICAgICAgIGlmIChwYXJzZWRJbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5lbXB0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnVudXNlZFRva2Vucy5wdXNoKHRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYWRkVGltZVRvQXJyYXlGcm9tVG9rZW4odG9rZW4sIHBhcnNlZElucHV0LCBjb25maWcpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb25maWcuX3N0cmljdCAmJiAhcGFyc2VkSW5wdXQpIHtcbiAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS51bnVzZWRUb2tlbnMucHVzaCh0b2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhZGQgcmVtYWluaW5nIHVucGFyc2VkIGlucHV0IGxlbmd0aCB0byB0aGUgc3RyaW5nXG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmNoYXJzTGVmdE92ZXIgPVxuICAgICAgICAgICAgc3RyaW5nTGVuZ3RoIC0gdG90YWxQYXJzZWRJbnB1dExlbmd0aDtcbiAgICAgICAgaWYgKHN0cmluZy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS51bnVzZWRJbnB1dC5wdXNoKHN0cmluZyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjbGVhciBfMTJoIGZsYWcgaWYgaG91ciBpcyA8PSAxMlxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb25maWcuX2FbSE9VUl0gPD0gMTIgJiZcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPT09IHRydWUgJiZcbiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSA+IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5iaWdIb3VyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykucGFyc2VkRGF0ZVBhcnRzID0gY29uZmlnLl9hLnNsaWNlKDApO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5tZXJpZGllbSA9IGNvbmZpZy5fbWVyaWRpZW07XG4gICAgICAgIC8vIGhhbmRsZSBtZXJpZGllbVxuICAgICAgICBjb25maWcuX2FbSE9VUl0gPSBtZXJpZGllbUZpeFdyYXAoXG4gICAgICAgICAgICBjb25maWcuX2xvY2FsZSxcbiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSxcbiAgICAgICAgICAgIGNvbmZpZy5fbWVyaWRpZW1cbiAgICAgICAgKTtcblxuICAgICAgICAvLyBoYW5kbGUgZXJhXG4gICAgICAgIGVyYSA9IGdldFBhcnNpbmdGbGFncyhjb25maWcpLmVyYTtcbiAgICAgICAgaWYgKGVyYSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uZmlnLl9hW1lFQVJdID0gY29uZmlnLl9sb2NhbGUuZXJhc0NvbnZlcnRZZWFyKGVyYSwgY29uZmlnLl9hW1lFQVJdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbmZpZ0Zyb21BcnJheShjb25maWcpO1xuICAgICAgICBjaGVja092ZXJmbG93KGNvbmZpZyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyaWRpZW1GaXhXcmFwKGxvY2FsZSwgaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgdmFyIGlzUG07XG5cbiAgICAgICAgaWYgKG1lcmlkaWVtID09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIG5vdGhpbmcgdG8gZG9cbiAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2NhbGUubWVyaWRpZW1Ib3VyICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBsb2NhbGUubWVyaWRpZW1Ib3VyKGhvdXIsIG1lcmlkaWVtKTtcbiAgICAgICAgfSBlbHNlIGlmIChsb2NhbGUuaXNQTSAhPSBudWxsKSB7XG4gICAgICAgICAgICAvLyBGYWxsYmFja1xuICAgICAgICAgICAgaXNQbSA9IGxvY2FsZS5pc1BNKG1lcmlkaWVtKTtcbiAgICAgICAgICAgIGlmIChpc1BtICYmIGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgKz0gMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWlzUG0gJiYgaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gdGhpcyBpcyBub3Qgc3VwcG9zZWQgdG8gaGFwcGVuXG4gICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGRhdGUgZnJvbSBzdHJpbmcgYW5kIGFycmF5IG9mIGZvcm1hdCBzdHJpbmdzXG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbVN0cmluZ0FuZEFycmF5KGNvbmZpZykge1xuICAgICAgICB2YXIgdGVtcENvbmZpZyxcbiAgICAgICAgICAgIGJlc3RNb21lbnQsXG4gICAgICAgICAgICBzY29yZVRvQmVhdCxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBjdXJyZW50U2NvcmUsXG4gICAgICAgICAgICB2YWxpZEZvcm1hdEZvdW5kLFxuICAgICAgICAgICAgYmVzdEZvcm1hdElzVmFsaWQgPSBmYWxzZSxcbiAgICAgICAgICAgIGNvbmZpZ2ZMZW4gPSBjb25maWcuX2YubGVuZ3RoO1xuXG4gICAgICAgIGlmIChjb25maWdmTGVuID09PSAwKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5pbnZhbGlkRm9ybWF0ID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKE5hTik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY29uZmlnZkxlbjsgaSsrKSB7XG4gICAgICAgICAgICBjdXJyZW50U2NvcmUgPSAwO1xuICAgICAgICAgICAgdmFsaWRGb3JtYXRGb3VuZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGVtcENvbmZpZyA9IGNvcHlDb25maWcoe30sIGNvbmZpZyk7XG4gICAgICAgICAgICBpZiAoY29uZmlnLl91c2VVVEMgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRlbXBDb25maWcuX3VzZVVUQyA9IGNvbmZpZy5fdXNlVVRDO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGVtcENvbmZpZy5fZiA9IGNvbmZpZy5fZltpXTtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQodGVtcENvbmZpZyk7XG5cbiAgICAgICAgICAgIGlmIChpc1ZhbGlkKHRlbXBDb25maWcpKSB7XG4gICAgICAgICAgICAgICAgdmFsaWRGb3JtYXRGb3VuZCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIGFueSBpbnB1dCB0aGF0IHdhcyBub3QgcGFyc2VkIGFkZCBhIHBlbmFsdHkgZm9yIHRoYXQgZm9ybWF0XG4gICAgICAgICAgICBjdXJyZW50U2NvcmUgKz0gZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25maWcpLmNoYXJzTGVmdE92ZXI7XG5cbiAgICAgICAgICAgIC8vb3IgdG9rZW5zXG4gICAgICAgICAgICBjdXJyZW50U2NvcmUgKz0gZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25maWcpLnVudXNlZFRva2Vucy5sZW5ndGggKiAxMDtcblxuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25maWcpLnNjb3JlID0gY3VycmVudFNjb3JlO1xuXG4gICAgICAgICAgICBpZiAoIWJlc3RGb3JtYXRJc1ZhbGlkKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBzY29yZVRvQmVhdCA9PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTY29yZSA8IHNjb3JlVG9CZWF0IHx8XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkRm9ybWF0Rm91bmRcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgc2NvcmVUb0JlYXQgPSBjdXJyZW50U2NvcmU7XG4gICAgICAgICAgICAgICAgICAgIGJlc3RNb21lbnQgPSB0ZW1wQ29uZmlnO1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRGb3JtYXRGb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmVzdEZvcm1hdElzVmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFNjb3JlIDwgc2NvcmVUb0JlYXQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2NvcmVUb0JlYXQgPSBjdXJyZW50U2NvcmU7XG4gICAgICAgICAgICAgICAgICAgIGJlc3RNb21lbnQgPSB0ZW1wQ29uZmlnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGV4dGVuZChjb25maWcsIGJlc3RNb21lbnQgfHwgdGVtcENvbmZpZyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbU9iamVjdChjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZy5fZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGkgPSBub3JtYWxpemVPYmplY3RVbml0cyhjb25maWcuX2kpLFxuICAgICAgICAgICAgZGF5T3JEYXRlID0gaS5kYXkgPT09IHVuZGVmaW5lZCA/IGkuZGF0ZSA6IGkuZGF5O1xuICAgICAgICBjb25maWcuX2EgPSBtYXAoXG4gICAgICAgICAgICBbaS55ZWFyLCBpLm1vbnRoLCBkYXlPckRhdGUsIGkuaG91ciwgaS5taW51dGUsIGkuc2Vjb25kLCBpLm1pbGxpc2Vjb25kXSxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2JqICYmIHBhcnNlSW50KG9iaiwgMTApO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbmZpZ0Zyb21BcnJheShjb25maWcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUZyb21Db25maWcoY29uZmlnKSB7XG4gICAgICAgIHZhciByZXMgPSBuZXcgTW9tZW50KGNoZWNrT3ZlcmZsb3cocHJlcGFyZUNvbmZpZyhjb25maWcpKSk7XG4gICAgICAgIGlmIChyZXMuX25leHREYXkpIHtcbiAgICAgICAgICAgIC8vIEFkZGluZyBpcyBzbWFydCBlbm91Z2ggYXJvdW5kIERTVFxuICAgICAgICAgICAgcmVzLmFkZCgxLCAnZCcpO1xuICAgICAgICAgICAgcmVzLl9uZXh0RGF5ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmVwYXJlQ29uZmlnKGNvbmZpZykge1xuICAgICAgICB2YXIgaW5wdXQgPSBjb25maWcuX2ksXG4gICAgICAgICAgICBmb3JtYXQgPSBjb25maWcuX2Y7XG5cbiAgICAgICAgY29uZmlnLl9sb2NhbGUgPSBjb25maWcuX2xvY2FsZSB8fCBnZXRMb2NhbGUoY29uZmlnLl9sKTtcblxuICAgICAgICBpZiAoaW5wdXQgPT09IG51bGwgfHwgKGZvcm1hdCA9PT0gdW5kZWZpbmVkICYmIGlucHV0ID09PSAnJykpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVJbnZhbGlkKHsgbnVsbElucHV0OiB0cnVlIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbmZpZy5faSA9IGlucHV0ID0gY29uZmlnLl9sb2NhbGUucHJlcGFyc2UoaW5wdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzTW9tZW50KGlucHV0KSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBNb21lbnQoY2hlY2tPdmVyZmxvdyhpbnB1dCkpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRGF0ZShpbnB1dCkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IGlucHV0O1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXJyYXkoZm9ybWF0KSkge1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZ0FuZEFycmF5KGNvbmZpZyk7XG4gICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0KSB7XG4gICAgICAgICAgICBjb25maWdGcm9tU3RyaW5nQW5kRm9ybWF0KGNvbmZpZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25maWdGcm9tSW5wdXQoY29uZmlnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNWYWxpZChjb25maWcpKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb25maWdGcm9tSW5wdXQoY29uZmlnKSB7XG4gICAgICAgIHZhciBpbnB1dCA9IGNvbmZpZy5faTtcbiAgICAgICAgaWYgKGlzVW5kZWZpbmVkKGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoaG9va3Mubm93KCkpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRGF0ZShpbnB1dCkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKGlucHV0LnZhbHVlT2YoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZyhjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXJyYXkoaW5wdXQpKSB7XG4gICAgICAgICAgICBjb25maWcuX2EgPSBtYXAoaW5wdXQuc2xpY2UoMCksIGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQob2JqLCAxMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21BcnJheShjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnRnJvbU9iamVjdChjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKGlucHV0KSkge1xuICAgICAgICAgICAgLy8gZnJvbSBtaWxsaXNlY29uZHNcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKGlucHV0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhvb2tzLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKGNvbmZpZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVMb2NhbE9yVVRDKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0LCBpc1VUQykge1xuICAgICAgICB2YXIgYyA9IHt9O1xuXG4gICAgICAgIGlmIChmb3JtYXQgPT09IHRydWUgfHwgZm9ybWF0ID09PSBmYWxzZSkge1xuICAgICAgICAgICAgc3RyaWN0ID0gZm9ybWF0O1xuICAgICAgICAgICAgZm9ybWF0ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxvY2FsZSA9PT0gdHJ1ZSB8fCBsb2NhbGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBzdHJpY3QgPSBsb2NhbGU7XG4gICAgICAgICAgICBsb2NhbGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAoaXNPYmplY3QoaW5wdXQpICYmIGlzT2JqZWN0RW1wdHkoaW5wdXQpKSB8fFxuICAgICAgICAgICAgKGlzQXJyYXkoaW5wdXQpICYmIGlucHV0Lmxlbmd0aCA9PT0gMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpbnB1dCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyBvYmplY3QgY29uc3RydWN0aW9uIG11c3QgYmUgZG9uZSB0aGlzIHdheS5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzE0MjNcbiAgICAgICAgYy5faXNBTW9tZW50T2JqZWN0ID0gdHJ1ZTtcbiAgICAgICAgYy5fdXNlVVRDID0gYy5faXNVVEMgPSBpc1VUQztcbiAgICAgICAgYy5fbCA9IGxvY2FsZTtcbiAgICAgICAgYy5faSA9IGlucHV0O1xuICAgICAgICBjLl9mID0gZm9ybWF0O1xuICAgICAgICBjLl9zdHJpY3QgPSBzdHJpY3Q7XG5cbiAgICAgICAgcmV0dXJuIGNyZWF0ZUZyb21Db25maWcoYyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlTG9jYWwoaW5wdXQsIGZvcm1hdCwgbG9jYWxlLCBzdHJpY3QpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUxvY2FsT3JVVEMoaW5wdXQsIGZvcm1hdCwgbG9jYWxlLCBzdHJpY3QsIGZhbHNlKTtcbiAgICB9XG5cbiAgICB2YXIgcHJvdG90eXBlTWluID0gZGVwcmVjYXRlKFxuICAgICAgICAgICAgJ21vbWVudCgpLm1pbiBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1heCBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL21pbi1tYXgvJyxcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgb3RoZXIgPSBjcmVhdGVMb2NhbC5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWQoKSAmJiBvdGhlci5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyIDwgdGhpcyA/IHRoaXMgOiBvdGhlcjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW52YWxpZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKSxcbiAgICAgICAgcHJvdG90eXBlTWF4ID0gZGVwcmVjYXRlKFxuICAgICAgICAgICAgJ21vbWVudCgpLm1heCBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1pbiBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL21pbi1tYXgvJyxcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgb3RoZXIgPSBjcmVhdGVMb2NhbC5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWQoKSAmJiBvdGhlci5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyID4gdGhpcyA/IHRoaXMgOiBvdGhlcjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW52YWxpZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgIC8vIFBpY2sgYSBtb21lbnQgbSBmcm9tIG1vbWVudHMgc28gdGhhdCBtW2ZuXShvdGhlcikgaXMgdHJ1ZSBmb3IgYWxsXG4gICAgLy8gb3RoZXIuIFRoaXMgcmVsaWVzIG9uIHRoZSBmdW5jdGlvbiBmbiB0byBiZSB0cmFuc2l0aXZlLlxuICAgIC8vXG4gICAgLy8gbW9tZW50cyBzaG91bGQgZWl0aGVyIGJlIGFuIGFycmF5IG9mIG1vbWVudCBvYmplY3RzIG9yIGFuIGFycmF5LCB3aG9zZVxuICAgIC8vIGZpcnN0IGVsZW1lbnQgaXMgYW4gYXJyYXkgb2YgbW9tZW50IG9iamVjdHMuXG4gICAgZnVuY3Rpb24gcGlja0J5KGZuLCBtb21lbnRzKSB7XG4gICAgICAgIHZhciByZXMsIGk7XG4gICAgICAgIGlmIChtb21lbnRzLmxlbmd0aCA9PT0gMSAmJiBpc0FycmF5KG1vbWVudHNbMF0pKSB7XG4gICAgICAgICAgICBtb21lbnRzID0gbW9tZW50c1swXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW1vbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwoKTtcbiAgICAgICAgfVxuICAgICAgICByZXMgPSBtb21lbnRzWzBdO1xuICAgICAgICBmb3IgKGkgPSAxOyBpIDwgbW9tZW50cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgaWYgKCFtb21lbnRzW2ldLmlzVmFsaWQoKSB8fCBtb21lbnRzW2ldW2ZuXShyZXMpKSB7XG4gICAgICAgICAgICAgICAgcmVzID0gbW9tZW50c1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIC8vIFRPRE86IFVzZSBbXS5zb3J0IGluc3RlYWQ/XG4gICAgZnVuY3Rpb24gbWluKCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKTtcblxuICAgICAgICByZXR1cm4gcGlja0J5KCdpc0JlZm9yZScsIGFyZ3MpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1heCgpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7XG5cbiAgICAgICAgcmV0dXJuIHBpY2tCeSgnaXNBZnRlcicsIGFyZ3MpO1xuICAgIH1cblxuICAgIHZhciBub3cgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBEYXRlLm5vdyA/IERhdGUubm93KCkgOiArbmV3IERhdGUoKTtcbiAgICB9O1xuXG4gICAgdmFyIG9yZGVyaW5nID0gW1xuICAgICAgICAneWVhcicsXG4gICAgICAgICdxdWFydGVyJyxcbiAgICAgICAgJ21vbnRoJyxcbiAgICAgICAgJ3dlZWsnLFxuICAgICAgICAnZGF5JyxcbiAgICAgICAgJ2hvdXInLFxuICAgICAgICAnbWludXRlJyxcbiAgICAgICAgJ3NlY29uZCcsXG4gICAgICAgICdtaWxsaXNlY29uZCcsXG4gICAgXTtcblxuICAgIGZ1bmN0aW9uIGlzRHVyYXRpb25WYWxpZChtKSB7XG4gICAgICAgIHZhciBrZXksXG4gICAgICAgICAgICB1bml0SGFzRGVjaW1hbCA9IGZhbHNlLFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIG9yZGVyTGVuID0gb3JkZXJpbmcubGVuZ3RoO1xuICAgICAgICBmb3IgKGtleSBpbiBtKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgaGFzT3duUHJvcChtLCBrZXkpICYmXG4gICAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICAgICAgaW5kZXhPZi5jYWxsKG9yZGVyaW5nLCBrZXkpICE9PSAtMSAmJlxuICAgICAgICAgICAgICAgICAgICAobVtrZXldID09IG51bGwgfHwgIWlzTmFOKG1ba2V5XSkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IG9yZGVyTGVuOyArK2kpIHtcbiAgICAgICAgICAgIGlmIChtW29yZGVyaW5nW2ldXSkge1xuICAgICAgICAgICAgICAgIGlmICh1bml0SGFzRGVjaW1hbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIG9ubHkgYWxsb3cgbm9uLWludGVnZXJzIGZvciBzbWFsbGVzdCB1bml0XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwYXJzZUZsb2F0KG1bb3JkZXJpbmdbaV1dKSAhPT0gdG9JbnQobVtvcmRlcmluZ1tpXV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHVuaXRIYXNEZWNpbWFsID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1ZhbGlkJDEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUludmFsaWQkMSgpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKE5hTik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gRHVyYXRpb24oZHVyYXRpb24pIHtcbiAgICAgICAgdmFyIG5vcm1hbGl6ZWRJbnB1dCA9IG5vcm1hbGl6ZU9iamVjdFVuaXRzKGR1cmF0aW9uKSxcbiAgICAgICAgICAgIHllYXJzID0gbm9ybWFsaXplZElucHV0LnllYXIgfHwgMCxcbiAgICAgICAgICAgIHF1YXJ0ZXJzID0gbm9ybWFsaXplZElucHV0LnF1YXJ0ZXIgfHwgMCxcbiAgICAgICAgICAgIG1vbnRocyA9IG5vcm1hbGl6ZWRJbnB1dC5tb250aCB8fCAwLFxuICAgICAgICAgICAgd2Vla3MgPSBub3JtYWxpemVkSW5wdXQud2VlayB8fCBub3JtYWxpemVkSW5wdXQuaXNvV2VlayB8fCAwLFxuICAgICAgICAgICAgZGF5cyA9IG5vcm1hbGl6ZWRJbnB1dC5kYXkgfHwgMCxcbiAgICAgICAgICAgIGhvdXJzID0gbm9ybWFsaXplZElucHV0LmhvdXIgfHwgMCxcbiAgICAgICAgICAgIG1pbnV0ZXMgPSBub3JtYWxpemVkSW5wdXQubWludXRlIHx8IDAsXG4gICAgICAgICAgICBzZWNvbmRzID0gbm9ybWFsaXplZElucHV0LnNlY29uZCB8fCAwLFxuICAgICAgICAgICAgbWlsbGlzZWNvbmRzID0gbm9ybWFsaXplZElucHV0Lm1pbGxpc2Vjb25kIHx8IDA7XG5cbiAgICAgICAgdGhpcy5faXNWYWxpZCA9IGlzRHVyYXRpb25WYWxpZChub3JtYWxpemVkSW5wdXQpO1xuXG4gICAgICAgIC8vIHJlcHJlc2VudGF0aW9uIGZvciBkYXRlQWRkUmVtb3ZlXG4gICAgICAgIHRoaXMuX21pbGxpc2Vjb25kcyA9XG4gICAgICAgICAgICArbWlsbGlzZWNvbmRzICtcbiAgICAgICAgICAgIHNlY29uZHMgKiAxZTMgKyAvLyAxMDAwXG4gICAgICAgICAgICBtaW51dGVzICogNmU0ICsgLy8gMTAwMCAqIDYwXG4gICAgICAgICAgICBob3VycyAqIDEwMDAgKiA2MCAqIDYwOyAvL3VzaW5nIDEwMDAgKiA2MCAqIDYwIGluc3RlYWQgb2YgMzZlNSB0byBhdm9pZCBmbG9hdGluZyBwb2ludCByb3VuZGluZyBlcnJvcnMgaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzI5NzhcbiAgICAgICAgLy8gQmVjYXVzZSBvZiBkYXRlQWRkUmVtb3ZlIHRyZWF0cyAyNCBob3VycyBhcyBkaWZmZXJlbnQgZnJvbSBhXG4gICAgICAgIC8vIGRheSB3aGVuIHdvcmtpbmcgYXJvdW5kIERTVCwgd2UgbmVlZCB0byBzdG9yZSB0aGVtIHNlcGFyYXRlbHlcbiAgICAgICAgdGhpcy5fZGF5cyA9ICtkYXlzICsgd2Vla3MgKiA3O1xuICAgICAgICAvLyBJdCBpcyBpbXBvc3NpYmxlIHRvIHRyYW5zbGF0ZSBtb250aHMgaW50byBkYXlzIHdpdGhvdXQga25vd2luZ1xuICAgICAgICAvLyB3aGljaCBtb250aHMgeW91IGFyZSBhcmUgdGFsa2luZyBhYm91dCwgc28gd2UgaGF2ZSB0byBzdG9yZVxuICAgICAgICAvLyBpdCBzZXBhcmF0ZWx5LlxuICAgICAgICB0aGlzLl9tb250aHMgPSArbW9udGhzICsgcXVhcnRlcnMgKiAzICsgeWVhcnMgKiAxMjtcblxuICAgICAgICB0aGlzLl9kYXRhID0ge307XG5cbiAgICAgICAgdGhpcy5fbG9jYWxlID0gZ2V0TG9jYWxlKCk7XG5cbiAgICAgICAgdGhpcy5fYnViYmxlKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEdXJhdGlvbihvYmopIHtcbiAgICAgICAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIER1cmF0aW9uO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFic1JvdW5kKG51bWJlcikge1xuICAgICAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgucm91bmQoLTEgKiBudW1iZXIpICogLTE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gY29tcGFyZSB0d28gYXJyYXlzLCByZXR1cm4gdGhlIG51bWJlciBvZiBkaWZmZXJlbmNlc1xuICAgIGZ1bmN0aW9uIGNvbXBhcmVBcnJheXMoYXJyYXkxLCBhcnJheTIsIGRvbnRDb252ZXJ0KSB7XG4gICAgICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcnJheTEubGVuZ3RoLCBhcnJheTIubGVuZ3RoKSxcbiAgICAgICAgICAgIGxlbmd0aERpZmYgPSBNYXRoLmFicyhhcnJheTEubGVuZ3RoIC0gYXJyYXkyLmxlbmd0aCksXG4gICAgICAgICAgICBkaWZmcyA9IDAsXG4gICAgICAgICAgICBpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAoZG9udENvbnZlcnQgJiYgYXJyYXkxW2ldICE9PSBhcnJheTJbaV0pIHx8XG4gICAgICAgICAgICAgICAgKCFkb250Q29udmVydCAmJiB0b0ludChhcnJheTFbaV0pICE9PSB0b0ludChhcnJheTJbaV0pKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZGlmZnMrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGlmZnMgKyBsZW5ndGhEaWZmO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGZ1bmN0aW9uIG9mZnNldCh0b2tlbiwgc2VwYXJhdG9yKSB7XG4gICAgICAgIGFkZEZvcm1hdFRva2VuKHRva2VuLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgb2Zmc2V0ID0gdGhpcy51dGNPZmZzZXQoKSxcbiAgICAgICAgICAgICAgICBzaWduID0gJysnO1xuICAgICAgICAgICAgaWYgKG9mZnNldCA8IDApIHtcbiAgICAgICAgICAgICAgICBvZmZzZXQgPSAtb2Zmc2V0O1xuICAgICAgICAgICAgICAgIHNpZ24gPSAnLSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHNpZ24gK1xuICAgICAgICAgICAgICAgIHplcm9GaWxsKH5+KG9mZnNldCAvIDYwKSwgMikgK1xuICAgICAgICAgICAgICAgIHNlcGFyYXRvciArXG4gICAgICAgICAgICAgICAgemVyb0ZpbGwofn5vZmZzZXQgJSA2MCwgMilcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9mZnNldCgnWicsICc6Jyk7XG4gICAgb2Zmc2V0KCdaWicsICcnKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1onLCBtYXRjaFNob3J0T2Zmc2V0KTtcbiAgICBhZGRSZWdleFRva2VuKCdaWicsIG1hdGNoU2hvcnRPZmZzZXQpO1xuICAgIGFkZFBhcnNlVG9rZW4oWydaJywgJ1paJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX3VzZVVUQyA9IHRydWU7XG4gICAgICAgIGNvbmZpZy5fdHptID0gb2Zmc2V0RnJvbVN0cmluZyhtYXRjaFNob3J0T2Zmc2V0LCBpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICAvLyB0aW1lem9uZSBjaHVua2VyXG4gICAgLy8gJysxMDowMCcgPiBbJzEwJywgICcwMCddXG4gICAgLy8gJy0xNTMwJyAgPiBbJy0xNScsICczMCddXG4gICAgdmFyIGNodW5rT2Zmc2V0ID0gLyhbXFwrXFwtXXxcXGRcXGQpL2dpO1xuXG4gICAgZnVuY3Rpb24gb2Zmc2V0RnJvbVN0cmluZyhtYXRjaGVyLCBzdHJpbmcpIHtcbiAgICAgICAgdmFyIG1hdGNoZXMgPSAoc3RyaW5nIHx8ICcnKS5tYXRjaChtYXRjaGVyKSxcbiAgICAgICAgICAgIGNodW5rLFxuICAgICAgICAgICAgcGFydHMsXG4gICAgICAgICAgICBtaW51dGVzO1xuXG4gICAgICAgIGlmIChtYXRjaGVzID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNodW5rID0gbWF0Y2hlc1ttYXRjaGVzLmxlbmd0aCAtIDFdIHx8IFtdO1xuICAgICAgICBwYXJ0cyA9IChjaHVuayArICcnKS5tYXRjaChjaHVua09mZnNldCkgfHwgWyctJywgMCwgMF07XG4gICAgICAgIG1pbnV0ZXMgPSArKHBhcnRzWzFdICogNjApICsgdG9JbnQocGFydHNbMl0pO1xuXG4gICAgICAgIHJldHVybiBtaW51dGVzID09PSAwID8gMCA6IHBhcnRzWzBdID09PSAnKycgPyBtaW51dGVzIDogLW1pbnV0ZXM7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGEgbW9tZW50IGZyb20gaW5wdXQsIHRoYXQgaXMgbG9jYWwvdXRjL3pvbmUgZXF1aXZhbGVudCB0byBtb2RlbC5cbiAgICBmdW5jdGlvbiBjbG9uZVdpdGhPZmZzZXQoaW5wdXQsIG1vZGVsKSB7XG4gICAgICAgIHZhciByZXMsIGRpZmY7XG4gICAgICAgIGlmIChtb2RlbC5faXNVVEMpIHtcbiAgICAgICAgICAgIHJlcyA9IG1vZGVsLmNsb25lKCk7XG4gICAgICAgICAgICBkaWZmID1cbiAgICAgICAgICAgICAgICAoaXNNb21lbnQoaW5wdXQpIHx8IGlzRGF0ZShpbnB1dClcbiAgICAgICAgICAgICAgICAgICAgPyBpbnB1dC52YWx1ZU9mKClcbiAgICAgICAgICAgICAgICAgICAgOiBjcmVhdGVMb2NhbChpbnB1dCkudmFsdWVPZigpKSAtIHJlcy52YWx1ZU9mKCk7XG4gICAgICAgICAgICAvLyBVc2UgbG93LWxldmVsIGFwaSwgYmVjYXVzZSB0aGlzIGZuIGlzIGxvdy1sZXZlbCBhcGkuXG4gICAgICAgICAgICByZXMuX2Quc2V0VGltZShyZXMuX2QudmFsdWVPZigpICsgZGlmZik7XG4gICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQocmVzLCBmYWxzZSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxvY2FsKGlucHV0KS5sb2NhbCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0RGF0ZU9mZnNldChtKSB7XG4gICAgICAgIC8vIE9uIEZpcmVmb3guMjQgRGF0ZSNnZXRUaW1lem9uZU9mZnNldCByZXR1cm5zIGEgZmxvYXRpbmcgcG9pbnQuXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L3B1bGwvMTg3MVxuICAgICAgICByZXR1cm4gLU1hdGgucm91bmQobS5fZC5nZXRUaW1lem9uZU9mZnNldCgpKTtcbiAgICB9XG5cbiAgICAvLyBIT09LU1xuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBhIG1vbWVudCBpcyBtdXRhdGVkLlxuICAgIC8vIEl0IGlzIGludGVuZGVkIHRvIGtlZXAgdGhlIG9mZnNldCBpbiBzeW5jIHdpdGggdGhlIHRpbWV6b25lLlxuICAgIGhvb2tzLnVwZGF0ZU9mZnNldCA9IGZ1bmN0aW9uICgpIHt9O1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgLy8ga2VlcExvY2FsVGltZSA9IHRydWUgbWVhbnMgb25seSBjaGFuZ2UgdGhlIHRpbWV6b25lLCB3aXRob3V0XG4gICAgLy8gYWZmZWN0aW5nIHRoZSBsb2NhbCBob3VyLiBTbyA1OjMxOjI2ICswMzAwIC0tW3V0Y09mZnNldCgyLCB0cnVlKV0tLT5cbiAgICAvLyA1OjMxOjI2ICswMjAwIEl0IGlzIHBvc3NpYmxlIHRoYXQgNTozMToyNiBkb2Vzbid0IGV4aXN0IHdpdGggb2Zmc2V0XG4gICAgLy8gKzAyMDAsIHNvIHdlIGFkanVzdCB0aGUgdGltZSBhcyBuZWVkZWQsIHRvIGJlIHZhbGlkLlxuICAgIC8vXG4gICAgLy8gS2VlcGluZyB0aGUgdGltZSBhY3R1YWxseSBhZGRzL3N1YnRyYWN0cyAob25lIGhvdXIpXG4gICAgLy8gZnJvbSB0aGUgYWN0dWFsIHJlcHJlc2VudGVkIHRpbWUuIFRoYXQgaXMgd2h5IHdlIGNhbGwgdXBkYXRlT2Zmc2V0XG4gICAgLy8gYSBzZWNvbmQgdGltZS4gSW4gY2FzZSBpdCB3YW50cyB1cyB0byBjaGFuZ2UgdGhlIG9mZnNldCBhZ2FpblxuICAgIC8vIF9jaGFuZ2VJblByb2dyZXNzID09IHRydWUgY2FzZSwgdGhlbiB3ZSBoYXZlIHRvIGFkanVzdCwgYmVjYXVzZVxuICAgIC8vIHRoZXJlIGlzIG5vIHN1Y2ggdGltZSBpbiB0aGUgZ2l2ZW4gdGltZXpvbmUuXG4gICAgZnVuY3Rpb24gZ2V0U2V0T2Zmc2V0KGlucHV0LCBrZWVwTG9jYWxUaW1lLCBrZWVwTWludXRlcykge1xuICAgICAgICB2YXIgb2Zmc2V0ID0gdGhpcy5fb2Zmc2V0IHx8IDAsXG4gICAgICAgICAgICBsb2NhbEFkanVzdDtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnB1dCAhPSBudWxsKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlucHV0ID0gb2Zmc2V0RnJvbVN0cmluZyhtYXRjaFNob3J0T2Zmc2V0LCBpbnB1dCk7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoTWF0aC5hYnMoaW5wdXQpIDwgMTYgJiYgIWtlZXBNaW51dGVzKSB7XG4gICAgICAgICAgICAgICAgaW5wdXQgPSBpbnB1dCAqIDYwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1VUQyAmJiBrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxBZGp1c3QgPSBnZXREYXRlT2Zmc2V0KHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fb2Zmc2V0ID0gaW5wdXQ7XG4gICAgICAgICAgICB0aGlzLl9pc1VUQyA9IHRydWU7XG4gICAgICAgICAgICBpZiAobG9jYWxBZGp1c3QgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkKGxvY2FsQWRqdXN0LCAnbScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9mZnNldCAhPT0gaW5wdXQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWtlZXBMb2NhbFRpbWUgfHwgdGhpcy5fY2hhbmdlSW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICBhZGRTdWJ0cmFjdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVEdXJhdGlvbihpbnB1dCAtIG9mZnNldCwgJ20nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuX2NoYW5nZUluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlSW5Qcm9ncmVzcyA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faXNVVEMgPyBvZmZzZXQgOiBnZXREYXRlT2Zmc2V0KHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0Wm9uZShpbnB1dCwga2VlcExvY2FsVGltZSkge1xuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpbnB1dCA9IC1pbnB1dDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoaW5wdXQsIGtlZXBMb2NhbFRpbWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAtdGhpcy51dGNPZmZzZXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldE9mZnNldFRvVVRDKGtlZXBMb2NhbFRpbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXRjT2Zmc2V0KDAsIGtlZXBMb2NhbFRpbWUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldE9mZnNldFRvTG9jYWwoa2VlcExvY2FsVGltZSkge1xuICAgICAgICBpZiAodGhpcy5faXNVVEMpIHtcbiAgICAgICAgICAgIHRoaXMudXRjT2Zmc2V0KDAsIGtlZXBMb2NhbFRpbWUpO1xuICAgICAgICAgICAgdGhpcy5faXNVVEMgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKGtlZXBMb2NhbFRpbWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnRyYWN0KGdldERhdGVPZmZzZXQodGhpcyksICdtJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0T2Zmc2V0VG9QYXJzZWRPZmZzZXQoKSB7XG4gICAgICAgIGlmICh0aGlzLl90em0gIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQodGhpcy5fdHptLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuX2kgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YXIgdFpvbmUgPSBvZmZzZXRGcm9tU3RyaW5nKG1hdGNoT2Zmc2V0LCB0aGlzLl9pKTtcbiAgICAgICAgICAgIGlmICh0Wm9uZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQodFpvbmUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgwLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYXNBbGlnbmVkSG91ck9mZnNldChpbnB1dCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaW5wdXQgPSBpbnB1dCA/IGNyZWF0ZUxvY2FsKGlucHV0KS51dGNPZmZzZXQoKSA6IDA7XG5cbiAgICAgICAgcmV0dXJuICh0aGlzLnV0Y09mZnNldCgpIC0gaW5wdXQpICUgNjAgPT09IDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEYXlsaWdodFNhdmluZ1RpbWUoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgpID4gdGhpcy5jbG9uZSgpLm1vbnRoKDApLnV0Y09mZnNldCgpIHx8XG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgpID4gdGhpcy5jbG9uZSgpLm1vbnRoKDUpLnV0Y09mZnNldCgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEYXlsaWdodFNhdmluZ1RpbWVTaGlmdGVkKCkge1xuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKHRoaXMuX2lzRFNUU2hpZnRlZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc0RTVFNoaWZ0ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgYyA9IHt9LFxuICAgICAgICAgICAgb3RoZXI7XG5cbiAgICAgICAgY29weUNvbmZpZyhjLCB0aGlzKTtcbiAgICAgICAgYyA9IHByZXBhcmVDb25maWcoYyk7XG5cbiAgICAgICAgaWYgKGMuX2EpIHtcbiAgICAgICAgICAgIG90aGVyID0gYy5faXNVVEMgPyBjcmVhdGVVVEMoYy5fYSkgOiBjcmVhdGVMb2NhbChjLl9hKTtcbiAgICAgICAgICAgIHRoaXMuX2lzRFNUU2hpZnRlZCA9XG4gICAgICAgICAgICAgICAgdGhpcy5pc1ZhbGlkKCkgJiYgY29tcGFyZUFycmF5cyhjLl9hLCBvdGhlci50b0FycmF5KCkpID4gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2lzRFNUU2hpZnRlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzRFNUU2hpZnRlZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0xvY2FsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyAhdGhpcy5faXNVVEMgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1V0Y09mZnNldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpcy5faXNVVEMgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1V0YygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpcy5faXNVVEMgJiYgdGhpcy5fb2Zmc2V0ID09PSAwIDogZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQVNQLk5FVCBqc29uIGRhdGUgZm9ybWF0IHJlZ2V4XG4gICAgdmFyIGFzcE5ldFJlZ2V4ID0gL14oLXxcXCspPyg/OihcXGQqKVsuIF0pPyhcXGQrKTooXFxkKykoPzo6KFxcZCspKFxcLlxcZCopPyk/JC8sXG4gICAgICAgIC8vIGZyb20gaHR0cDovL2RvY3MuY2xvc3VyZS1saWJyYXJ5Lmdvb2dsZWNvZGUuY29tL2dpdC9jbG9zdXJlX2dvb2dfZGF0ZV9kYXRlLmpzLnNvdXJjZS5odG1sXG4gICAgICAgIC8vIHNvbWV3aGF0IG1vcmUgaW4gbGluZSB3aXRoIDQuNC4zLjIgMjAwNCBzcGVjLCBidXQgYWxsb3dzIGRlY2ltYWwgYW55d2hlcmVcbiAgICAgICAgLy8gYW5kIGZ1cnRoZXIgbW9kaWZpZWQgdG8gYWxsb3cgZm9yIHN0cmluZ3MgY29udGFpbmluZyBib3RoIHdlZWsgYW5kIGRheVxuICAgICAgICBpc29SZWdleCA9XG4gICAgICAgICAgICAvXigtfFxcKyk/UCg/OihbLStdP1swLTksLl0qKVkpPyg/OihbLStdP1swLTksLl0qKU0pPyg/OihbLStdP1swLTksLl0qKVcpPyg/OihbLStdP1swLTksLl0qKUQpPyg/OlQoPzooWy0rXT9bMC05LC5dKilIKT8oPzooWy0rXT9bMC05LC5dKilNKT8oPzooWy0rXT9bMC05LC5dKilTKT8pPyQvO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlRHVyYXRpb24oaW5wdXQsIGtleSkge1xuICAgICAgICB2YXIgZHVyYXRpb24gPSBpbnB1dCxcbiAgICAgICAgICAgIC8vIG1hdGNoaW5nIGFnYWluc3QgcmVnZXhwIGlzIGV4cGVuc2l2ZSwgZG8gaXQgb24gZGVtYW5kXG4gICAgICAgICAgICBtYXRjaCA9IG51bGwsXG4gICAgICAgICAgICBzaWduLFxuICAgICAgICAgICAgcmV0LFxuICAgICAgICAgICAgZGlmZlJlcztcblxuICAgICAgICBpZiAoaXNEdXJhdGlvbihpbnB1dCkpIHtcbiAgICAgICAgICAgIGR1cmF0aW9uID0ge1xuICAgICAgICAgICAgICAgIG1zOiBpbnB1dC5fbWlsbGlzZWNvbmRzLFxuICAgICAgICAgICAgICAgIGQ6IGlucHV0Ll9kYXlzLFxuICAgICAgICAgICAgICAgIE06IGlucHV0Ll9tb250aHMsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKGlucHV0KSB8fCAhaXNOYU4oK2lucHV0KSkge1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7fTtcbiAgICAgICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICAgICAgICBkdXJhdGlvbltrZXldID0gK2lucHV0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkdXJhdGlvbi5taWxsaXNlY29uZHMgPSAraW5wdXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoKG1hdGNoID0gYXNwTmV0UmVnZXguZXhlYyhpbnB1dCkpKSB7XG4gICAgICAgICAgICBzaWduID0gbWF0Y2hbMV0gPT09ICctJyA/IC0xIDogMTtcbiAgICAgICAgICAgIGR1cmF0aW9uID0ge1xuICAgICAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICAgICAgZDogdG9JbnQobWF0Y2hbREFURV0pICogc2lnbixcbiAgICAgICAgICAgICAgICBoOiB0b0ludChtYXRjaFtIT1VSXSkgKiBzaWduLFxuICAgICAgICAgICAgICAgIG06IHRvSW50KG1hdGNoW01JTlVURV0pICogc2lnbixcbiAgICAgICAgICAgICAgICBzOiB0b0ludChtYXRjaFtTRUNPTkRdKSAqIHNpZ24sXG4gICAgICAgICAgICAgICAgbXM6IHRvSW50KGFic1JvdW5kKG1hdGNoW01JTExJU0VDT05EXSAqIDEwMDApKSAqIHNpZ24sIC8vIHRoZSBtaWxsaXNlY29uZCBkZWNpbWFsIHBvaW50IGlzIGluY2x1ZGVkIGluIHRoZSBtYXRjaFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmICgobWF0Y2ggPSBpc29SZWdleC5leGVjKGlucHV0KSkpIHtcbiAgICAgICAgICAgIHNpZ24gPSBtYXRjaFsxXSA9PT0gJy0nID8gLTEgOiAxO1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgeTogcGFyc2VJc28obWF0Y2hbMl0sIHNpZ24pLFxuICAgICAgICAgICAgICAgIE06IHBhcnNlSXNvKG1hdGNoWzNdLCBzaWduKSxcbiAgICAgICAgICAgICAgICB3OiBwYXJzZUlzbyhtYXRjaFs0XSwgc2lnbiksXG4gICAgICAgICAgICAgICAgZDogcGFyc2VJc28obWF0Y2hbNV0sIHNpZ24pLFxuICAgICAgICAgICAgICAgIGg6IHBhcnNlSXNvKG1hdGNoWzZdLCBzaWduKSxcbiAgICAgICAgICAgICAgICBtOiBwYXJzZUlzbyhtYXRjaFs3XSwgc2lnbiksXG4gICAgICAgICAgICAgICAgczogcGFyc2VJc28obWF0Y2hbOF0sIHNpZ24pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmIChkdXJhdGlvbiA9PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBjaGVja3MgZm9yIG51bGwgb3IgdW5kZWZpbmVkXG4gICAgICAgICAgICBkdXJhdGlvbiA9IHt9O1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgdHlwZW9mIGR1cmF0aW9uID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgKCdmcm9tJyBpbiBkdXJhdGlvbiB8fCAndG8nIGluIGR1cmF0aW9uKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGRpZmZSZXMgPSBtb21lbnRzRGlmZmVyZW5jZShcbiAgICAgICAgICAgICAgICBjcmVhdGVMb2NhbChkdXJhdGlvbi5mcm9tKSxcbiAgICAgICAgICAgICAgICBjcmVhdGVMb2NhbChkdXJhdGlvbi50bylcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGR1cmF0aW9uID0ge307XG4gICAgICAgICAgICBkdXJhdGlvbi5tcyA9IGRpZmZSZXMubWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgZHVyYXRpb24uTSA9IGRpZmZSZXMubW9udGhzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0ID0gbmV3IER1cmF0aW9uKGR1cmF0aW9uKTtcblxuICAgICAgICBpZiAoaXNEdXJhdGlvbihpbnB1dCkgJiYgaGFzT3duUHJvcChpbnB1dCwgJ19sb2NhbGUnKSkge1xuICAgICAgICAgICAgcmV0Ll9sb2NhbGUgPSBpbnB1dC5fbG9jYWxlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRHVyYXRpb24oaW5wdXQpICYmIGhhc093blByb3AoaW5wdXQsICdfaXNWYWxpZCcpKSB7XG4gICAgICAgICAgICByZXQuX2lzVmFsaWQgPSBpbnB1dC5faXNWYWxpZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuXG4gICAgY3JlYXRlRHVyYXRpb24uZm4gPSBEdXJhdGlvbi5wcm90b3R5cGU7XG4gICAgY3JlYXRlRHVyYXRpb24uaW52YWxpZCA9IGNyZWF0ZUludmFsaWQkMTtcblxuICAgIGZ1bmN0aW9uIHBhcnNlSXNvKGlucCwgc2lnbikge1xuICAgICAgICAvLyBXZSdkIG5vcm1hbGx5IHVzZSB+fmlucCBmb3IgdGhpcywgYnV0IHVuZm9ydHVuYXRlbHkgaXQgYWxzb1xuICAgICAgICAvLyBjb252ZXJ0cyBmbG9hdHMgdG8gaW50cy5cbiAgICAgICAgLy8gaW5wIG1heSBiZSB1bmRlZmluZWQsIHNvIGNhcmVmdWwgY2FsbGluZyByZXBsYWNlIG9uIGl0LlxuICAgICAgICB2YXIgcmVzID0gaW5wICYmIHBhcnNlRmxvYXQoaW5wLnJlcGxhY2UoJywnLCAnLicpKTtcbiAgICAgICAgLy8gYXBwbHkgc2lnbiB3aGlsZSB3ZSdyZSBhdCBpdFxuICAgICAgICByZXR1cm4gKGlzTmFOKHJlcykgPyAwIDogcmVzKSAqIHNpZ247XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcG9zaXRpdmVNb21lbnRzRGlmZmVyZW5jZShiYXNlLCBvdGhlcikge1xuICAgICAgICB2YXIgcmVzID0ge307XG5cbiAgICAgICAgcmVzLm1vbnRocyA9XG4gICAgICAgICAgICBvdGhlci5tb250aCgpIC0gYmFzZS5tb250aCgpICsgKG90aGVyLnllYXIoKSAtIGJhc2UueWVhcigpKSAqIDEyO1xuICAgICAgICBpZiAoYmFzZS5jbG9uZSgpLmFkZChyZXMubW9udGhzLCAnTScpLmlzQWZ0ZXIob3RoZXIpKSB7XG4gICAgICAgICAgICAtLXJlcy5tb250aHM7XG4gICAgICAgIH1cblxuICAgICAgICByZXMubWlsbGlzZWNvbmRzID0gK290aGVyIC0gK2Jhc2UuY2xvbmUoKS5hZGQocmVzLm1vbnRocywgJ00nKTtcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vbWVudHNEaWZmZXJlbmNlKGJhc2UsIG90aGVyKSB7XG4gICAgICAgIHZhciByZXM7XG4gICAgICAgIGlmICghKGJhc2UuaXNWYWxpZCgpICYmIG90aGVyLmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiB7IG1pbGxpc2Vjb25kczogMCwgbW9udGhzOiAwIH07XG4gICAgICAgIH1cblxuICAgICAgICBvdGhlciA9IGNsb25lV2l0aE9mZnNldChvdGhlciwgYmFzZSk7XG4gICAgICAgIGlmIChiYXNlLmlzQmVmb3JlKG90aGVyKSkge1xuICAgICAgICAgICAgcmVzID0gcG9zaXRpdmVNb21lbnRzRGlmZmVyZW5jZShiYXNlLCBvdGhlcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMgPSBwb3NpdGl2ZU1vbWVudHNEaWZmZXJlbmNlKG90aGVyLCBiYXNlKTtcbiAgICAgICAgICAgIHJlcy5taWxsaXNlY29uZHMgPSAtcmVzLm1pbGxpc2Vjb25kcztcbiAgICAgICAgICAgIHJlcy5tb250aHMgPSAtcmVzLm1vbnRocztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogcmVtb3ZlICduYW1lJyBhcmcgYWZ0ZXIgZGVwcmVjYXRpb24gaXMgcmVtb3ZlZFxuICAgIGZ1bmN0aW9uIGNyZWF0ZUFkZGVyKGRpcmVjdGlvbiwgbmFtZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHZhbCwgcGVyaW9kKSB7XG4gICAgICAgICAgICB2YXIgZHVyLCB0bXA7XG4gICAgICAgICAgICAvL2ludmVydCB0aGUgYXJndW1lbnRzLCBidXQgY29tcGxhaW4gYWJvdXQgaXRcbiAgICAgICAgICAgIGlmIChwZXJpb2QgIT09IG51bGwgJiYgIWlzTmFOKCtwZXJpb2QpKSB7XG4gICAgICAgICAgICAgICAgZGVwcmVjYXRlU2ltcGxlKFxuICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAnbW9tZW50KCkuJyArXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lICtcbiAgICAgICAgICAgICAgICAgICAgICAgICcocGVyaW9kLCBudW1iZXIpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgbW9tZW50KCkuJyArXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lICtcbiAgICAgICAgICAgICAgICAgICAgICAgICcobnVtYmVyLCBwZXJpb2QpLiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdTZWUgaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9hZGQtaW52ZXJ0ZWQtcGFyYW0vIGZvciBtb3JlIGluZm8uJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdG1wID0gdmFsO1xuICAgICAgICAgICAgICAgIHZhbCA9IHBlcmlvZDtcbiAgICAgICAgICAgICAgICBwZXJpb2QgPSB0bXA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGR1ciA9IGNyZWF0ZUR1cmF0aW9uKHZhbCwgcGVyaW9kKTtcbiAgICAgICAgICAgIGFkZFN1YnRyYWN0KHRoaXMsIGR1ciwgZGlyZWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZFN1YnRyYWN0KG1vbSwgZHVyYXRpb24sIGlzQWRkaW5nLCB1cGRhdGVPZmZzZXQpIHtcbiAgICAgICAgdmFyIG1pbGxpc2Vjb25kcyA9IGR1cmF0aW9uLl9taWxsaXNlY29uZHMsXG4gICAgICAgICAgICBkYXlzID0gYWJzUm91bmQoZHVyYXRpb24uX2RheXMpLFxuICAgICAgICAgICAgbW9udGhzID0gYWJzUm91bmQoZHVyYXRpb24uX21vbnRocyk7XG5cbiAgICAgICAgaWYgKCFtb20uaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAvLyBObyBvcFxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdXBkYXRlT2Zmc2V0ID0gdXBkYXRlT2Zmc2V0ID09IG51bGwgPyB0cnVlIDogdXBkYXRlT2Zmc2V0O1xuXG4gICAgICAgIGlmIChtb250aHMpIHtcbiAgICAgICAgICAgIHNldE1vbnRoKG1vbSwgZ2V0KG1vbSwgJ01vbnRoJykgKyBtb250aHMgKiBpc0FkZGluZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRheXMpIHtcbiAgICAgICAgICAgIHNldCQxKG1vbSwgJ0RhdGUnLCBnZXQobW9tLCAnRGF0ZScpICsgZGF5cyAqIGlzQWRkaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWlsbGlzZWNvbmRzKSB7XG4gICAgICAgICAgICBtb20uX2Quc2V0VGltZShtb20uX2QudmFsdWVPZigpICsgbWlsbGlzZWNvbmRzICogaXNBZGRpbmcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1cGRhdGVPZmZzZXQpIHtcbiAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldChtb20sIGRheXMgfHwgbW9udGhzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBhZGQgPSBjcmVhdGVBZGRlcigxLCAnYWRkJyksXG4gICAgICAgIHN1YnRyYWN0ID0gY3JlYXRlQWRkZXIoLTEsICdzdWJ0cmFjdCcpO1xuXG4gICAgZnVuY3Rpb24gaXNTdHJpbmcoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycgfHwgaW5wdXQgaW5zdGFuY2VvZiBTdHJpbmc7XG4gICAgfVxuXG4gICAgLy8gdHlwZSBNb21lbnRJbnB1dCA9IE1vbWVudCB8IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgfCAobnVtYmVyIHwgc3RyaW5nKVtdIHwgTW9tZW50SW5wdXRPYmplY3QgfCB2b2lkOyAvLyBudWxsIHwgdW5kZWZpbmVkXG4gICAgZnVuY3Rpb24gaXNNb21lbnRJbnB1dChpbnB1dCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgaXNNb21lbnQoaW5wdXQpIHx8XG4gICAgICAgICAgICBpc0RhdGUoaW5wdXQpIHx8XG4gICAgICAgICAgICBpc1N0cmluZyhpbnB1dCkgfHxcbiAgICAgICAgICAgIGlzTnVtYmVyKGlucHV0KSB8fFxuICAgICAgICAgICAgaXNOdW1iZXJPclN0cmluZ0FycmF5KGlucHV0KSB8fFxuICAgICAgICAgICAgaXNNb21lbnRJbnB1dE9iamVjdChpbnB1dCkgfHxcbiAgICAgICAgICAgIGlucHV0ID09PSBudWxsIHx8XG4gICAgICAgICAgICBpbnB1dCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNNb21lbnRJbnB1dE9iamVjdChpbnB1dCkge1xuICAgICAgICB2YXIgb2JqZWN0VGVzdCA9IGlzT2JqZWN0KGlucHV0KSAmJiAhaXNPYmplY3RFbXB0eShpbnB1dCksXG4gICAgICAgICAgICBwcm9wZXJ0eVRlc3QgPSBmYWxzZSxcbiAgICAgICAgICAgIHByb3BlcnRpZXMgPSBbXG4gICAgICAgICAgICAgICAgJ3llYXJzJyxcbiAgICAgICAgICAgICAgICAneWVhcicsXG4gICAgICAgICAgICAgICAgJ3knLFxuICAgICAgICAgICAgICAgICdtb250aHMnLFxuICAgICAgICAgICAgICAgICdtb250aCcsXG4gICAgICAgICAgICAgICAgJ00nLFxuICAgICAgICAgICAgICAgICdkYXlzJyxcbiAgICAgICAgICAgICAgICAnZGF5JyxcbiAgICAgICAgICAgICAgICAnZCcsXG4gICAgICAgICAgICAgICAgJ2RhdGVzJyxcbiAgICAgICAgICAgICAgICAnZGF0ZScsXG4gICAgICAgICAgICAgICAgJ0QnLFxuICAgICAgICAgICAgICAgICdob3VycycsXG4gICAgICAgICAgICAgICAgJ2hvdXInLFxuICAgICAgICAgICAgICAgICdoJyxcbiAgICAgICAgICAgICAgICAnbWludXRlcycsXG4gICAgICAgICAgICAgICAgJ21pbnV0ZScsXG4gICAgICAgICAgICAgICAgJ20nLFxuICAgICAgICAgICAgICAgICdzZWNvbmRzJyxcbiAgICAgICAgICAgICAgICAnc2Vjb25kJyxcbiAgICAgICAgICAgICAgICAncycsXG4gICAgICAgICAgICAgICAgJ21pbGxpc2Vjb25kcycsXG4gICAgICAgICAgICAgICAgJ21pbGxpc2Vjb25kJyxcbiAgICAgICAgICAgICAgICAnbXMnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBwcm9wZXJ0eSxcbiAgICAgICAgICAgIHByb3BlcnR5TGVuID0gcHJvcGVydGllcy5sZW5ndGg7XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHByb3BlcnR5TGVuOyBpICs9IDEpIHtcbiAgICAgICAgICAgIHByb3BlcnR5ID0gcHJvcGVydGllc1tpXTtcbiAgICAgICAgICAgIHByb3BlcnR5VGVzdCA9IHByb3BlcnR5VGVzdCB8fCBoYXNPd25Qcm9wKGlucHV0LCBwcm9wZXJ0eSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2JqZWN0VGVzdCAmJiBwcm9wZXJ0eVRlc3Q7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNOdW1iZXJPclN0cmluZ0FycmF5KGlucHV0KSB7XG4gICAgICAgIHZhciBhcnJheVRlc3QgPSBpc0FycmF5KGlucHV0KSxcbiAgICAgICAgICAgIGRhdGFUeXBlVGVzdCA9IGZhbHNlO1xuICAgICAgICBpZiAoYXJyYXlUZXN0KSB7XG4gICAgICAgICAgICBkYXRhVHlwZVRlc3QgPVxuICAgICAgICAgICAgICAgIGlucHV0LmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWlzTnVtYmVyKGl0ZW0pICYmIGlzU3RyaW5nKGlucHV0KTtcbiAgICAgICAgICAgICAgICB9KS5sZW5ndGggPT09IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFycmF5VGVzdCAmJiBkYXRhVHlwZVRlc3Q7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNDYWxlbmRhclNwZWMoaW5wdXQpIHtcbiAgICAgICAgdmFyIG9iamVjdFRlc3QgPSBpc09iamVjdChpbnB1dCkgJiYgIWlzT2JqZWN0RW1wdHkoaW5wdXQpLFxuICAgICAgICAgICAgcHJvcGVydHlUZXN0ID0gZmFsc2UsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzID0gW1xuICAgICAgICAgICAgICAgICdzYW1lRGF5JyxcbiAgICAgICAgICAgICAgICAnbmV4dERheScsXG4gICAgICAgICAgICAgICAgJ2xhc3REYXknLFxuICAgICAgICAgICAgICAgICduZXh0V2VlaycsXG4gICAgICAgICAgICAgICAgJ2xhc3RXZWVrJyxcbiAgICAgICAgICAgICAgICAnc2FtZUVsc2UnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBwcm9wZXJ0eTtcblxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcHJvcGVydGllcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgcHJvcGVydHkgPSBwcm9wZXJ0aWVzW2ldO1xuICAgICAgICAgICAgcHJvcGVydHlUZXN0ID0gcHJvcGVydHlUZXN0IHx8IGhhc093blByb3AoaW5wdXQsIHByb3BlcnR5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvYmplY3RUZXN0ICYmIHByb3BlcnR5VGVzdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRDYWxlbmRhckZvcm1hdChteU1vbWVudCwgbm93KSB7XG4gICAgICAgIHZhciBkaWZmID0gbXlNb21lbnQuZGlmZihub3csICdkYXlzJywgdHJ1ZSk7XG4gICAgICAgIHJldHVybiBkaWZmIDwgLTZcbiAgICAgICAgICAgID8gJ3NhbWVFbHNlJ1xuICAgICAgICAgICAgOiBkaWZmIDwgLTFcbiAgICAgICAgICAgID8gJ2xhc3RXZWVrJ1xuICAgICAgICAgICAgOiBkaWZmIDwgMFxuICAgICAgICAgICAgPyAnbGFzdERheSdcbiAgICAgICAgICAgIDogZGlmZiA8IDFcbiAgICAgICAgICAgID8gJ3NhbWVEYXknXG4gICAgICAgICAgICA6IGRpZmYgPCAyXG4gICAgICAgICAgICA/ICduZXh0RGF5J1xuICAgICAgICAgICAgOiBkaWZmIDwgN1xuICAgICAgICAgICAgPyAnbmV4dFdlZWsnXG4gICAgICAgICAgICA6ICdzYW1lRWxzZSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2FsZW5kYXIkMSh0aW1lLCBmb3JtYXRzKSB7XG4gICAgICAgIC8vIFN1cHBvcnQgZm9yIHNpbmdsZSBwYXJhbWV0ZXIsIGZvcm1hdHMgb25seSBvdmVybG9hZCB0byB0aGUgY2FsZW5kYXIgZnVuY3Rpb25cbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGlmICghYXJndW1lbnRzWzBdKSB7XG4gICAgICAgICAgICAgICAgdGltZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBmb3JtYXRzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc01vbWVudElucHV0KGFyZ3VtZW50c1swXSkpIHtcbiAgICAgICAgICAgICAgICB0aW1lID0gYXJndW1lbnRzWzBdO1xuICAgICAgICAgICAgICAgIGZvcm1hdHMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzQ2FsZW5kYXJTcGVjKGFyZ3VtZW50c1swXSkpIHtcbiAgICAgICAgICAgICAgICBmb3JtYXRzID0gYXJndW1lbnRzWzBdO1xuICAgICAgICAgICAgICAgIHRpbWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gV2Ugd2FudCB0byBjb21wYXJlIHRoZSBzdGFydCBvZiB0b2RheSwgdnMgdGhpcy5cbiAgICAgICAgLy8gR2V0dGluZyBzdGFydC1vZi10b2RheSBkZXBlbmRzIG9uIHdoZXRoZXIgd2UncmUgbG9jYWwvdXRjL29mZnNldCBvciBub3QuXG4gICAgICAgIHZhciBub3cgPSB0aW1lIHx8IGNyZWF0ZUxvY2FsKCksXG4gICAgICAgICAgICBzb2QgPSBjbG9uZVdpdGhPZmZzZXQobm93LCB0aGlzKS5zdGFydE9mKCdkYXknKSxcbiAgICAgICAgICAgIGZvcm1hdCA9IGhvb2tzLmNhbGVuZGFyRm9ybWF0KHRoaXMsIHNvZCkgfHwgJ3NhbWVFbHNlJyxcbiAgICAgICAgICAgIG91dHB1dCA9XG4gICAgICAgICAgICAgICAgZm9ybWF0cyAmJlxuICAgICAgICAgICAgICAgIChpc0Z1bmN0aW9uKGZvcm1hdHNbZm9ybWF0XSlcbiAgICAgICAgICAgICAgICAgICAgPyBmb3JtYXRzW2Zvcm1hdF0uY2FsbCh0aGlzLCBub3cpXG4gICAgICAgICAgICAgICAgICAgIDogZm9ybWF0c1tmb3JtYXRdKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXQoXG4gICAgICAgICAgICBvdXRwdXQgfHwgdGhpcy5sb2NhbGVEYXRhKCkuY2FsZW5kYXIoZm9ybWF0LCB0aGlzLCBjcmVhdGVMb2NhbChub3cpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsb25lKCkge1xuICAgICAgICByZXR1cm4gbmV3IE1vbWVudCh0aGlzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0FmdGVyKGlucHV0LCB1bml0cykge1xuICAgICAgICB2YXIgbG9jYWxJbnB1dCA9IGlzTW9tZW50KGlucHV0KSA/IGlucHV0IDogY3JlYXRlTG9jYWwoaW5wdXQpO1xuICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQoKSAmJiBsb2NhbElucHV0LmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKSB8fCAnbWlsbGlzZWNvbmQnO1xuICAgICAgICBpZiAodW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlT2YoKSA+IGxvY2FsSW5wdXQudmFsdWVPZigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGxvY2FsSW5wdXQudmFsdWVPZigpIDwgdGhpcy5jbG9uZSgpLnN0YXJ0T2YodW5pdHMpLnZhbHVlT2YoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQmVmb3JlKGlucHV0LCB1bml0cykge1xuICAgICAgICB2YXIgbG9jYWxJbnB1dCA9IGlzTW9tZW50KGlucHV0KSA/IGlucHV0IDogY3JlYXRlTG9jYWwoaW5wdXQpO1xuICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQoKSAmJiBsb2NhbElucHV0LmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKSB8fCAnbWlsbGlzZWNvbmQnO1xuICAgICAgICBpZiAodW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlT2YoKSA8IGxvY2FsSW5wdXQudmFsdWVPZigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5lbmRPZih1bml0cykudmFsdWVPZigpIDwgbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0JldHdlZW4oZnJvbSwgdG8sIHVuaXRzLCBpbmNsdXNpdml0eSkge1xuICAgICAgICB2YXIgbG9jYWxGcm9tID0gaXNNb21lbnQoZnJvbSkgPyBmcm9tIDogY3JlYXRlTG9jYWwoZnJvbSksXG4gICAgICAgICAgICBsb2NhbFRvID0gaXNNb21lbnQodG8pID8gdG8gOiBjcmVhdGVMb2NhbCh0byk7XG4gICAgICAgIGlmICghKHRoaXMuaXNWYWxpZCgpICYmIGxvY2FsRnJvbS5pc1ZhbGlkKCkgJiYgbG9jYWxUby5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaW5jbHVzaXZpdHkgPSBpbmNsdXNpdml0eSB8fCAnKCknO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKGluY2x1c2l2aXR5WzBdID09PSAnKCdcbiAgICAgICAgICAgICAgICA/IHRoaXMuaXNBZnRlcihsb2NhbEZyb20sIHVuaXRzKVxuICAgICAgICAgICAgICAgIDogIXRoaXMuaXNCZWZvcmUobG9jYWxGcm9tLCB1bml0cykpICYmXG4gICAgICAgICAgICAoaW5jbHVzaXZpdHlbMV0gPT09ICcpJ1xuICAgICAgICAgICAgICAgID8gdGhpcy5pc0JlZm9yZShsb2NhbFRvLCB1bml0cylcbiAgICAgICAgICAgICAgICA6ICF0aGlzLmlzQWZ0ZXIobG9jYWxUbywgdW5pdHMpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzU2FtZShpbnB1dCwgdW5pdHMpIHtcbiAgICAgICAgdmFyIGxvY2FsSW5wdXQgPSBpc01vbWVudChpbnB1dCkgPyBpbnB1dCA6IGNyZWF0ZUxvY2FsKGlucHV0KSxcbiAgICAgICAgICAgIGlucHV0TXM7XG4gICAgICAgIGlmICghKHRoaXMuaXNWYWxpZCgpICYmIGxvY2FsSW5wdXQuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpIHx8ICdtaWxsaXNlY29uZCc7XG4gICAgICAgIGlmICh1bml0cyA9PT0gJ21pbGxpc2Vjb25kJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVPZigpID09PSBsb2NhbElucHV0LnZhbHVlT2YoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlucHV0TXMgPSBsb2NhbElucHV0LnZhbHVlT2YoKTtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgdGhpcy5jbG9uZSgpLnN0YXJ0T2YodW5pdHMpLnZhbHVlT2YoKSA8PSBpbnB1dE1zICYmXG4gICAgICAgICAgICAgICAgaW5wdXRNcyA8PSB0aGlzLmNsb25lKCkuZW5kT2YodW5pdHMpLnZhbHVlT2YoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzU2FtZU9yQWZ0ZXIoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzU2FtZShpbnB1dCwgdW5pdHMpIHx8IHRoaXMuaXNBZnRlcihpbnB1dCwgdW5pdHMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzU2FtZU9yQmVmb3JlKGlucHV0LCB1bml0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1NhbWUoaW5wdXQsIHVuaXRzKSB8fCB0aGlzLmlzQmVmb3JlKGlucHV0LCB1bml0cyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGlmZihpbnB1dCwgdW5pdHMsIGFzRmxvYXQpIHtcbiAgICAgICAgdmFyIHRoYXQsIHpvbmVEZWx0YSwgb3V0cHV0O1xuXG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cblxuICAgICAgICB0aGF0ID0gY2xvbmVXaXRoT2Zmc2V0KGlucHV0LCB0aGlzKTtcblxuICAgICAgICBpZiAoIXRoYXQuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG5cbiAgICAgICAgem9uZURlbHRhID0gKHRoYXQudXRjT2Zmc2V0KCkgLSB0aGlzLnV0Y09mZnNldCgpKSAqIDZlNDtcblxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcblxuICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7XG4gICAgICAgICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSBtb250aERpZmYodGhpcywgdGhhdCkgLyAxMjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSBtb250aERpZmYodGhpcywgdGhhdCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdxdWFydGVyJzpcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSBtb250aERpZmYodGhpcywgdGhhdCkgLyAzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAodGhpcyAtIHRoYXQpIC8gMWUzO1xuICAgICAgICAgICAgICAgIGJyZWFrOyAvLyAxMDAwXG4gICAgICAgICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICh0aGlzIC0gdGhhdCkgLyA2ZTQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7IC8vIDEwMDAgKiA2MFxuICAgICAgICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gKHRoaXMgLSB0aGF0KSAvIDM2ZTU7XG4gICAgICAgICAgICAgICAgYnJlYWs7IC8vIDEwMDAgKiA2MCAqIDYwXG4gICAgICAgICAgICBjYXNlICdkYXknOlxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICh0aGlzIC0gdGhhdCAtIHpvbmVEZWx0YSkgLyA4NjRlNTtcbiAgICAgICAgICAgICAgICBicmVhazsgLy8gMTAwMCAqIDYwICogNjAgKiAyNCwgbmVnYXRlIGRzdFxuICAgICAgICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gKHRoaXMgLSB0aGF0IC0gem9uZURlbHRhKSAvIDYwNDhlNTtcbiAgICAgICAgICAgICAgICBicmVhazsgLy8gMTAwMCAqIDYwICogNjAgKiAyNCAqIDcsIG5lZ2F0ZSBkc3RcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gdGhpcyAtIHRoYXQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXNGbG9hdCA/IG91dHB1dCA6IGFic0Zsb29yKG91dHB1dCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbW9udGhEaWZmKGEsIGIpIHtcbiAgICAgICAgaWYgKGEuZGF0ZSgpIDwgYi5kYXRlKCkpIHtcbiAgICAgICAgICAgIC8vIGVuZC1vZi1tb250aCBjYWxjdWxhdGlvbnMgd29yayBjb3JyZWN0IHdoZW4gdGhlIHN0YXJ0IG1vbnRoIGhhcyBtb3JlXG4gICAgICAgICAgICAvLyBkYXlzIHRoYW4gdGhlIGVuZCBtb250aC5cbiAgICAgICAgICAgIHJldHVybiAtbW9udGhEaWZmKGIsIGEpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGRpZmZlcmVuY2UgaW4gbW9udGhzXG4gICAgICAgIHZhciB3aG9sZU1vbnRoRGlmZiA9IChiLnllYXIoKSAtIGEueWVhcigpKSAqIDEyICsgKGIubW9udGgoKSAtIGEubW9udGgoKSksXG4gICAgICAgICAgICAvLyBiIGlzIGluIChhbmNob3IgLSAxIG1vbnRoLCBhbmNob3IgKyAxIG1vbnRoKVxuICAgICAgICAgICAgYW5jaG9yID0gYS5jbG9uZSgpLmFkZCh3aG9sZU1vbnRoRGlmZiwgJ21vbnRocycpLFxuICAgICAgICAgICAgYW5jaG9yMixcbiAgICAgICAgICAgIGFkanVzdDtcblxuICAgICAgICBpZiAoYiAtIGFuY2hvciA8IDApIHtcbiAgICAgICAgICAgIGFuY2hvcjIgPSBhLmNsb25lKCkuYWRkKHdob2xlTW9udGhEaWZmIC0gMSwgJ21vbnRocycpO1xuICAgICAgICAgICAgLy8gbGluZWFyIGFjcm9zcyB0aGUgbW9udGhcbiAgICAgICAgICAgIGFkanVzdCA9IChiIC0gYW5jaG9yKSAvIChhbmNob3IgLSBhbmNob3IyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFuY2hvcjIgPSBhLmNsb25lKCkuYWRkKHdob2xlTW9udGhEaWZmICsgMSwgJ21vbnRocycpO1xuICAgICAgICAgICAgLy8gbGluZWFyIGFjcm9zcyB0aGUgbW9udGhcbiAgICAgICAgICAgIGFkanVzdCA9IChiIC0gYW5jaG9yKSAvIChhbmNob3IyIC0gYW5jaG9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vY2hlY2sgZm9yIG5lZ2F0aXZlIHplcm8sIHJldHVybiB6ZXJvIGlmIG5lZ2F0aXZlIHplcm9cbiAgICAgICAgcmV0dXJuIC0od2hvbGVNb250aERpZmYgKyBhZGp1c3QpIHx8IDA7XG4gICAgfVxuXG4gICAgaG9va3MuZGVmYXVsdEZvcm1hdCA9ICdZWVlZLU1NLUREVEhIOm1tOnNzWic7XG4gICAgaG9va3MuZGVmYXVsdEZvcm1hdFV0YyA9ICdZWVlZLU1NLUREVEhIOm1tOnNzW1pdJztcblxuICAgIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmxvY2FsZSgnZW4nKS5mb3JtYXQoJ2RkZCBNTU0gREQgWVlZWSBISDptbTpzcyBbR01UXVpaJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9JU09TdHJpbmcoa2VlcE9mZnNldCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdXRjID0ga2VlcE9mZnNldCAhPT0gdHJ1ZSxcbiAgICAgICAgICAgIG0gPSB1dGMgPyB0aGlzLmNsb25lKCkudXRjKCkgOiB0aGlzO1xuICAgICAgICBpZiAobS55ZWFyKCkgPCAwIHx8IG0ueWVhcigpID4gOTk5OSkge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE1vbWVudChcbiAgICAgICAgICAgICAgICBtLFxuICAgICAgICAgICAgICAgIHV0Y1xuICAgICAgICAgICAgICAgICAgICA/ICdZWVlZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0nXG4gICAgICAgICAgICAgICAgICAgIDogJ1lZWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1onXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nKSkge1xuICAgICAgICAgICAgLy8gbmF0aXZlIGltcGxlbWVudGF0aW9uIGlzIH41MHggZmFzdGVyLCB1c2UgaXQgd2hlbiB3ZSBjYW5cbiAgICAgICAgICAgIGlmICh1dGMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b0RhdGUoKS50b0lTT1N0cmluZygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUodGhpcy52YWx1ZU9mKCkgKyB0aGlzLnV0Y09mZnNldCgpICogNjAgKiAxMDAwKVxuICAgICAgICAgICAgICAgICAgICAudG9JU09TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgnWicsIGZvcm1hdE1vbWVudChtLCAnWicpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ybWF0TW9tZW50KFxuICAgICAgICAgICAgbSxcbiAgICAgICAgICAgIHV0YyA/ICdZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTW1pdJyA6ICdZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTWidcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gYSBodW1hbiByZWFkYWJsZSByZXByZXNlbnRhdGlvbiBvZiBhIG1vbWVudCB0aGF0IGNhblxuICAgICAqIGFsc28gYmUgZXZhbHVhdGVkIHRvIGdldCBhIG5ldyBtb21lbnQgd2hpY2ggaXMgdGhlIHNhbWVcbiAgICAgKlxuICAgICAqIEBsaW5rIGh0dHBzOi8vbm9kZWpzLm9yZy9kaXN0L2xhdGVzdC9kb2NzL2FwaS91dGlsLmh0bWwjdXRpbF9jdXN0b21faW5zcGVjdF9mdW5jdGlvbl9vbl9vYmplY3RzXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuICdtb21lbnQuaW52YWxpZCgvKiAnICsgdGhpcy5faSArICcgKi8pJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgZnVuYyA9ICdtb21lbnQnLFxuICAgICAgICAgICAgem9uZSA9ICcnLFxuICAgICAgICAgICAgcHJlZml4LFxuICAgICAgICAgICAgeWVhcixcbiAgICAgICAgICAgIGRhdGV0aW1lLFxuICAgICAgICAgICAgc3VmZml4O1xuICAgICAgICBpZiAoIXRoaXMuaXNMb2NhbCgpKSB7XG4gICAgICAgICAgICBmdW5jID0gdGhpcy51dGNPZmZzZXQoKSA9PT0gMCA/ICdtb21lbnQudXRjJyA6ICdtb21lbnQucGFyc2Vab25lJztcbiAgICAgICAgICAgIHpvbmUgPSAnWic7XG4gICAgICAgIH1cbiAgICAgICAgcHJlZml4ID0gJ1snICsgZnVuYyArICcoXCJdJztcbiAgICAgICAgeWVhciA9IDAgPD0gdGhpcy55ZWFyKCkgJiYgdGhpcy55ZWFyKCkgPD0gOTk5OSA/ICdZWVlZJyA6ICdZWVlZWVknO1xuICAgICAgICBkYXRldGltZSA9ICctTU0tRERbVF1ISDptbTpzcy5TU1MnO1xuICAgICAgICBzdWZmaXggPSB6b25lICsgJ1tcIildJztcblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXQocHJlZml4ICsgeWVhciArIGRhdGV0aW1lICsgc3VmZml4KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmb3JtYXQoaW5wdXRTdHJpbmcpIHtcbiAgICAgICAgaWYgKCFpbnB1dFN0cmluZykge1xuICAgICAgICAgICAgaW5wdXRTdHJpbmcgPSB0aGlzLmlzVXRjKClcbiAgICAgICAgICAgICAgICA/IGhvb2tzLmRlZmF1bHRGb3JtYXRVdGNcbiAgICAgICAgICAgICAgICA6IGhvb2tzLmRlZmF1bHRGb3JtYXQ7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG91dHB1dCA9IGZvcm1hdE1vbWVudCh0aGlzLCBpbnB1dFN0cmluZyk7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5wb3N0Zm9ybWF0KG91dHB1dCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZnJvbSh0aW1lLCB3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuaXNWYWxpZCgpICYmXG4gICAgICAgICAgICAoKGlzTW9tZW50KHRpbWUpICYmIHRpbWUuaXNWYWxpZCgpKSB8fCBjcmVhdGVMb2NhbCh0aW1lKS5pc1ZhbGlkKCkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKHsgdG86IHRoaXMsIGZyb206IHRpbWUgfSlcbiAgICAgICAgICAgICAgICAubG9jYWxlKHRoaXMubG9jYWxlKCkpXG4gICAgICAgICAgICAgICAgLmh1bWFuaXplKCF3aXRob3V0U3VmZml4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZnJvbU5vdyh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb20oY3JlYXRlTG9jYWwoKSwgd2l0aG91dFN1ZmZpeCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG8odGltZSwgd2l0aG91dFN1ZmZpeCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmlzVmFsaWQoKSAmJlxuICAgICAgICAgICAgKChpc01vbWVudCh0aW1lKSAmJiB0aW1lLmlzVmFsaWQoKSkgfHwgY3JlYXRlTG9jYWwodGltZSkuaXNWYWxpZCgpKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVEdXJhdGlvbih7IGZyb206IHRoaXMsIHRvOiB0aW1lIH0pXG4gICAgICAgICAgICAgICAgLmxvY2FsZSh0aGlzLmxvY2FsZSgpKVxuICAgICAgICAgICAgICAgIC5odW1hbml6ZSghd2l0aG91dFN1ZmZpeCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvTm93KHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG8oY3JlYXRlTG9jYWwoKSwgd2l0aG91dFN1ZmZpeCk7XG4gICAgfVxuXG4gICAgLy8gSWYgcGFzc2VkIGEgbG9jYWxlIGtleSwgaXQgd2lsbCBzZXQgdGhlIGxvY2FsZSBmb3IgdGhpc1xuICAgIC8vIGluc3RhbmNlLiAgT3RoZXJ3aXNlLCBpdCB3aWxsIHJldHVybiB0aGUgbG9jYWxlIGNvbmZpZ3VyYXRpb25cbiAgICAvLyB2YXJpYWJsZXMgZm9yIHRoaXMgaW5zdGFuY2UuXG4gICAgZnVuY3Rpb24gbG9jYWxlKGtleSkge1xuICAgICAgICB2YXIgbmV3TG9jYWxlRGF0YTtcblxuICAgICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGUuX2FiYnI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdMb2NhbGVEYXRhID0gZ2V0TG9jYWxlKGtleSk7XG4gICAgICAgICAgICBpZiAobmV3TG9jYWxlRGF0YSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9jYWxlID0gbmV3TG9jYWxlRGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGxhbmcgPSBkZXByZWNhdGUoXG4gICAgICAgICdtb21lbnQoKS5sYW5nKCkgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIG1vbWVudCgpLmxvY2FsZURhdGEoKSB0byBnZXQgdGhlIGxhbmd1YWdlIGNvbmZpZ3VyYXRpb24uIFVzZSBtb21lbnQoKS5sb2NhbGUoKSB0byBjaGFuZ2UgbGFuZ3VhZ2VzLicsXG4gICAgICAgIGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlKGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsZTtcbiAgICB9XG5cbiAgICB2YXIgTVNfUEVSX1NFQ09ORCA9IDEwMDAsXG4gICAgICAgIE1TX1BFUl9NSU5VVEUgPSA2MCAqIE1TX1BFUl9TRUNPTkQsXG4gICAgICAgIE1TX1BFUl9IT1VSID0gNjAgKiBNU19QRVJfTUlOVVRFLFxuICAgICAgICBNU19QRVJfNDAwX1lFQVJTID0gKDM2NSAqIDQwMCArIDk3KSAqIDI0ICogTVNfUEVSX0hPVVI7XG5cbiAgICAvLyBhY3R1YWwgbW9kdWxvIC0gaGFuZGxlcyBuZWdhdGl2ZSBudW1iZXJzIChmb3IgZGF0ZXMgYmVmb3JlIDE5NzApOlxuICAgIGZ1bmN0aW9uIG1vZCQxKGRpdmlkZW5kLCBkaXZpc29yKSB7XG4gICAgICAgIHJldHVybiAoKGRpdmlkZW5kICUgZGl2aXNvcikgKyBkaXZpc29yKSAlIGRpdmlzb3I7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxTdGFydE9mRGF0ZSh5LCBtLCBkKSB7XG4gICAgICAgIC8vIHRoZSBkYXRlIGNvbnN0cnVjdG9yIHJlbWFwcyB5ZWFycyAwLTk5IHRvIDE5MDAtMTk5OVxuICAgICAgICBpZiAoeSA8IDEwMCAmJiB5ID49IDApIHtcbiAgICAgICAgICAgIC8vIHByZXNlcnZlIGxlYXAgeWVhcnMgdXNpbmcgYSBmdWxsIDQwMCB5ZWFyIGN5Y2xlLCB0aGVuIHJlc2V0XG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoeSArIDQwMCwgbSwgZCkgLSBNU19QRVJfNDAwX1lFQVJTO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHksIG0sIGQpLnZhbHVlT2YoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHV0Y1N0YXJ0T2ZEYXRlKHksIG0sIGQpIHtcbiAgICAgICAgLy8gRGF0ZS5VVEMgcmVtYXBzIHllYXJzIDAtOTkgdG8gMTkwMC0xOTk5XG4gICAgICAgIGlmICh5IDwgMTAwICYmIHkgPj0gMCkge1xuICAgICAgICAgICAgLy8gcHJlc2VydmUgbGVhcCB5ZWFycyB1c2luZyBhIGZ1bGwgNDAwIHllYXIgY3ljbGUsIHRoZW4gcmVzZXRcbiAgICAgICAgICAgIHJldHVybiBEYXRlLlVUQyh5ICsgNDAwLCBtLCBkKSAtIE1TX1BFUl80MDBfWUVBUlM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gRGF0ZS5VVEMoeSwgbSwgZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdGFydE9mKHVuaXRzKSB7XG4gICAgICAgIHZhciB0aW1lLCBzdGFydE9mRGF0ZTtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIGlmICh1bml0cyA9PT0gdW5kZWZpbmVkIHx8IHVuaXRzID09PSAnbWlsbGlzZWNvbmQnIHx8ICF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICBzdGFydE9mRGF0ZSA9IHRoaXMuX2lzVVRDID8gdXRjU3RhcnRPZkRhdGUgOiBsb2NhbFN0YXJ0T2ZEYXRlO1xuXG4gICAgICAgIHN3aXRjaCAodW5pdHMpIHtcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZSh0aGlzLnllYXIoKSwgMCwgMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdxdWFydGVyJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMueWVhcigpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRoKCkgLSAodGhpcy5tb250aCgpICUgMyksXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZSh0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpLCAxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZShcbiAgICAgICAgICAgICAgICAgICAgdGhpcy55ZWFyKCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGgoKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlKCkgLSB0aGlzLndlZWtkYXkoKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdpc29XZWVrJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMueWVhcigpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRoKCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZSgpIC0gKHRoaXMuaXNvV2Vla2RheSgpIC0gMSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZGF5JzpcbiAgICAgICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZSh0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpLCB0aGlzLmRhdGUoKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gdGhpcy5fZC52YWx1ZU9mKCk7XG4gICAgICAgICAgICAgICAgdGltZSAtPSBtb2QkMShcbiAgICAgICAgICAgICAgICAgICAgdGltZSArICh0aGlzLl9pc1VUQyA/IDAgOiB0aGlzLnV0Y09mZnNldCgpICogTVNfUEVSX01JTlVURSksXG4gICAgICAgICAgICAgICAgICAgIE1TX1BFUl9IT1VSXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgICAgICAgICAgICAgdGltZSA9IHRoaXMuX2QudmFsdWVPZigpO1xuICAgICAgICAgICAgICAgIHRpbWUgLT0gbW9kJDEodGltZSwgTVNfUEVSX01JTlVURSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9kLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICB0aW1lIC09IG1vZCQxKHRpbWUsIE1TX1BFUl9TRUNPTkQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZC5zZXRUaW1lKHRpbWUpO1xuICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcywgdHJ1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVuZE9mKHVuaXRzKSB7XG4gICAgICAgIHZhciB0aW1lLCBzdGFydE9mRGF0ZTtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIGlmICh1bml0cyA9PT0gdW5kZWZpbmVkIHx8IHVuaXRzID09PSAnbWlsbGlzZWNvbmQnIHx8ICF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICBzdGFydE9mRGF0ZSA9IHRoaXMuX2lzVVRDID8gdXRjU3RhcnRPZkRhdGUgOiBsb2NhbFN0YXJ0T2ZEYXRlO1xuXG4gICAgICAgIHN3aXRjaCAodW5pdHMpIHtcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZSh0aGlzLnllYXIoKSArIDEsIDAsIDEpIC0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3F1YXJ0ZXInOlxuICAgICAgICAgICAgICAgIHRpbWUgPVxuICAgICAgICAgICAgICAgICAgICBzdGFydE9mRGF0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMueWVhcigpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250aCgpIC0gKHRoaXMubW9udGgoKSAlIDMpICsgMyxcbiAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgICAgICAgdGltZSA9IHN0YXJ0T2ZEYXRlKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCkgKyAxLCAxKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgICAgICAgICB0aW1lID1cbiAgICAgICAgICAgICAgICAgICAgc3RhcnRPZkRhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnllYXIoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGgoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZSgpIC0gdGhpcy53ZWVrZGF5KCkgKyA3XG4gICAgICAgICAgICAgICAgICAgICkgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaXNvV2Vlayc6XG4gICAgICAgICAgICAgICAgdGltZSA9XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0T2ZEYXRlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy55ZWFyKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRoKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGUoKSAtICh0aGlzLmlzb1dlZWtkYXkoKSAtIDEpICsgN1xuICAgICAgICAgICAgICAgICAgICApIC0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSwgdGhpcy5kYXRlKCkgKyAxKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gdGhpcy5fZC52YWx1ZU9mKCk7XG4gICAgICAgICAgICAgICAgdGltZSArPVxuICAgICAgICAgICAgICAgICAgICBNU19QRVJfSE9VUiAtXG4gICAgICAgICAgICAgICAgICAgIG1vZCQxKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZSArICh0aGlzLl9pc1VUQyA/IDAgOiB0aGlzLnV0Y09mZnNldCgpICogTVNfUEVSX01JTlVURSksXG4gICAgICAgICAgICAgICAgICAgICAgICBNU19QRVJfSE9VUlxuICAgICAgICAgICAgICAgICAgICApIC1cbiAgICAgICAgICAgICAgICAgICAgMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgICAgICAgICAgICAgdGltZSA9IHRoaXMuX2QudmFsdWVPZigpO1xuICAgICAgICAgICAgICAgIHRpbWUgKz0gTVNfUEVSX01JTlVURSAtIG1vZCQxKHRpbWUsIE1TX1BFUl9NSU5VVEUpIC0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgICAgICAgICAgICAgdGltZSA9IHRoaXMuX2QudmFsdWVPZigpO1xuICAgICAgICAgICAgICAgIHRpbWUgKz0gTVNfUEVSX1NFQ09ORCAtIG1vZCQxKHRpbWUsIE1TX1BFUl9TRUNPTkQpIC0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2Quc2V0VGltZSh0aW1lKTtcbiAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHRoaXMsIHRydWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB2YWx1ZU9mKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZC52YWx1ZU9mKCkgLSAodGhpcy5fb2Zmc2V0IHx8IDApICogNjAwMDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdW5peCgpIHtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IodGhpcy52YWx1ZU9mKCkgLyAxMDAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0RhdGUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLnZhbHVlT2YoKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9BcnJheSgpIHtcbiAgICAgICAgdmFyIG0gPSB0aGlzO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgbS55ZWFyKCksXG4gICAgICAgICAgICBtLm1vbnRoKCksXG4gICAgICAgICAgICBtLmRhdGUoKSxcbiAgICAgICAgICAgIG0uaG91cigpLFxuICAgICAgICAgICAgbS5taW51dGUoKSxcbiAgICAgICAgICAgIG0uc2Vjb25kKCksXG4gICAgICAgICAgICBtLm1pbGxpc2Vjb25kKCksXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9PYmplY3QoKSB7XG4gICAgICAgIHZhciBtID0gdGhpcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHllYXJzOiBtLnllYXIoKSxcbiAgICAgICAgICAgIG1vbnRoczogbS5tb250aCgpLFxuICAgICAgICAgICAgZGF0ZTogbS5kYXRlKCksXG4gICAgICAgICAgICBob3VyczogbS5ob3VycygpLFxuICAgICAgICAgICAgbWludXRlczogbS5taW51dGVzKCksXG4gICAgICAgICAgICBzZWNvbmRzOiBtLnNlY29uZHMoKSxcbiAgICAgICAgICAgIG1pbGxpc2Vjb25kczogbS5taWxsaXNlY29uZHMoKSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0pTT04oKSB7XG4gICAgICAgIC8vIG5ldyBEYXRlKE5hTikudG9KU09OKCkgPT09IG51bGxcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpcy50b0lTT1N0cmluZygpIDogbnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1ZhbGlkJDIoKSB7XG4gICAgICAgIHJldHVybiBpc1ZhbGlkKHRoaXMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNpbmdGbGFncygpIHtcbiAgICAgICAgcmV0dXJuIGV4dGVuZCh7fSwgZ2V0UGFyc2luZ0ZsYWdzKHRoaXMpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnZhbGlkQXQoKSB7XG4gICAgICAgIHJldHVybiBnZXRQYXJzaW5nRmxhZ3ModGhpcykub3ZlcmZsb3c7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRpb25EYXRhKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW5wdXQ6IHRoaXMuX2ksXG4gICAgICAgICAgICBmb3JtYXQ6IHRoaXMuX2YsXG4gICAgICAgICAgICBsb2NhbGU6IHRoaXMuX2xvY2FsZSxcbiAgICAgICAgICAgIGlzVVRDOiB0aGlzLl9pc1VUQyxcbiAgICAgICAgICAgIHN0cmljdDogdGhpcy5fc3RyaWN0LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGFkZEZvcm1hdFRva2VuKCdOJywgMCwgMCwgJ2VyYUFiYnInKTtcbiAgICBhZGRGb3JtYXRUb2tlbignTk4nLCAwLCAwLCAnZXJhQWJicicpO1xuICAgIGFkZEZvcm1hdFRva2VuKCdOTk4nLCAwLCAwLCAnZXJhQWJicicpO1xuICAgIGFkZEZvcm1hdFRva2VuKCdOTk5OJywgMCwgMCwgJ2VyYU5hbWUnKTtcbiAgICBhZGRGb3JtYXRUb2tlbignTk5OTk4nLCAwLCAwLCAnZXJhTmFycm93Jyk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbigneScsIFsneScsIDFdLCAneW8nLCAnZXJhWWVhcicpO1xuICAgIGFkZEZvcm1hdFRva2VuKCd5JywgWyd5eScsIDJdLCAwLCAnZXJhWWVhcicpO1xuICAgIGFkZEZvcm1hdFRva2VuKCd5JywgWyd5eXknLCAzXSwgMCwgJ2VyYVllYXInKTtcbiAgICBhZGRGb3JtYXRUb2tlbigneScsIFsneXl5eScsIDRdLCAwLCAnZXJhWWVhcicpO1xuXG4gICAgYWRkUmVnZXhUb2tlbignTicsIG1hdGNoRXJhQWJicik7XG4gICAgYWRkUmVnZXhUb2tlbignTk4nLCBtYXRjaEVyYUFiYnIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ05OTicsIG1hdGNoRXJhQWJicik7XG4gICAgYWRkUmVnZXhUb2tlbignTk5OTicsIG1hdGNoRXJhTmFtZSk7XG4gICAgYWRkUmVnZXhUb2tlbignTk5OTk4nLCBtYXRjaEVyYU5hcnJvdyk7XG5cbiAgICBhZGRQYXJzZVRva2VuKFxuICAgICAgICBbJ04nLCAnTk4nLCAnTk5OJywgJ05OTk4nLCAnTk5OTk4nXSxcbiAgICAgICAgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnLCB0b2tlbikge1xuICAgICAgICAgICAgdmFyIGVyYSA9IGNvbmZpZy5fbG9jYWxlLmVyYXNQYXJzZShpbnB1dCwgdG9rZW4sIGNvbmZpZy5fc3RyaWN0KTtcbiAgICAgICAgICAgIGlmIChlcmEpIHtcbiAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5lcmEgPSBlcmE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmludmFsaWRFcmEgPSBpbnB1dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBhZGRSZWdleFRva2VuKCd5JywgbWF0Y2hVbnNpZ25lZCk7XG4gICAgYWRkUmVnZXhUb2tlbigneXknLCBtYXRjaFVuc2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCd5eXknLCBtYXRjaFVuc2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCd5eXl5JywgbWF0Y2hVbnNpZ25lZCk7XG4gICAgYWRkUmVnZXhUb2tlbigneW8nLCBtYXRjaEVyYVllYXJPcmRpbmFsKTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWyd5JywgJ3l5JywgJ3l5eScsICd5eXl5J10sIFlFQVIpO1xuICAgIGFkZFBhcnNlVG9rZW4oWyd5byddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgIHZhciBtYXRjaDtcbiAgICAgICAgaWYgKGNvbmZpZy5fbG9jYWxlLl9lcmFZZWFyT3JkaW5hbFJlZ2V4KSB7XG4gICAgICAgICAgICBtYXRjaCA9IGlucHV0Lm1hdGNoKGNvbmZpZy5fbG9jYWxlLl9lcmFZZWFyT3JkaW5hbFJlZ2V4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcuX2xvY2FsZS5lcmFZZWFyT3JkaW5hbFBhcnNlKSB7XG4gICAgICAgICAgICBhcnJheVtZRUFSXSA9IGNvbmZpZy5fbG9jYWxlLmVyYVllYXJPcmRpbmFsUGFyc2UoaW5wdXQsIG1hdGNoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFycmF5W1lFQVJdID0gcGFyc2VJbnQoaW5wdXQsIDEwKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlRXJhcyhtLCBmb3JtYXQpIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBsLFxuICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgIGVyYXMgPSB0aGlzLl9lcmFzIHx8IGdldExvY2FsZSgnZW4nKS5fZXJhcztcbiAgICAgICAgZm9yIChpID0gMCwgbCA9IGVyYXMubGVuZ3RoOyBpIDwgbDsgKytpKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGVvZiBlcmFzW2ldLnNpbmNlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgICAgICAgICAgLy8gdHJ1bmNhdGUgdGltZVxuICAgICAgICAgICAgICAgICAgICBkYXRlID0gaG9va3MoZXJhc1tpXS5zaW5jZSkuc3RhcnRPZignZGF5Jyk7XG4gICAgICAgICAgICAgICAgICAgIGVyYXNbaV0uc2luY2UgPSBkYXRlLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN3aXRjaCAodHlwZW9mIGVyYXNbaV0udW50aWwpIHtcbiAgICAgICAgICAgICAgICBjYXNlICd1bmRlZmluZWQnOlxuICAgICAgICAgICAgICAgICAgICBlcmFzW2ldLnVudGlsID0gK0luZmluaXR5O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgICAgICAgICAvLyB0cnVuY2F0ZSB0aW1lXG4gICAgICAgICAgICAgICAgICAgIGRhdGUgPSBob29rcyhlcmFzW2ldLnVudGlsKS5zdGFydE9mKCdkYXknKS52YWx1ZU9mKCk7XG4gICAgICAgICAgICAgICAgICAgIGVyYXNbaV0udW50aWwgPSBkYXRlLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVyYXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxlRXJhc1BhcnNlKGVyYU5hbWUsIGZvcm1hdCwgc3RyaWN0KSB7XG4gICAgICAgIHZhciBpLFxuICAgICAgICAgICAgbCxcbiAgICAgICAgICAgIGVyYXMgPSB0aGlzLmVyYXMoKSxcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBhYmJyLFxuICAgICAgICAgICAgbmFycm93O1xuICAgICAgICBlcmFOYW1lID0gZXJhTmFtZS50b1VwcGVyQ2FzZSgpO1xuXG4gICAgICAgIGZvciAoaSA9IDAsIGwgPSBlcmFzLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgICAgICAgICAgbmFtZSA9IGVyYXNbaV0ubmFtZS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgYWJiciA9IGVyYXNbaV0uYWJici50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgbmFycm93ID0gZXJhc1tpXS5uYXJyb3cudG9VcHBlckNhc2UoKTtcblxuICAgICAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ04nOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdOTic6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ05OTic6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWJiciA9PT0gZXJhTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcmFzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnTk5OTic6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmFtZSA9PT0gZXJhTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcmFzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnTk5OTk4nOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5hcnJvdyA9PT0gZXJhTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcmFzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChbbmFtZSwgYWJiciwgbmFycm93XS5pbmRleE9mKGVyYU5hbWUpID49IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJhc1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvY2FsZUVyYXNDb252ZXJ0WWVhcihlcmEsIHllYXIpIHtcbiAgICAgICAgdmFyIGRpciA9IGVyYS5zaW5jZSA8PSBlcmEudW50aWwgPyArMSA6IC0xO1xuICAgICAgICBpZiAoeWVhciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gaG9va3MoZXJhLnNpbmNlKS55ZWFyKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gaG9va3MoZXJhLnNpbmNlKS55ZWFyKCkgKyAoeWVhciAtIGVyYS5vZmZzZXQpICogZGlyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0RXJhTmFtZSgpIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBsLFxuICAgICAgICAgICAgdmFsLFxuICAgICAgICAgICAgZXJhcyA9IHRoaXMubG9jYWxlRGF0YSgpLmVyYXMoKTtcbiAgICAgICAgZm9yIChpID0gMCwgbCA9IGVyYXMubGVuZ3RoOyBpIDwgbDsgKytpKSB7XG4gICAgICAgICAgICAvLyB0cnVuY2F0ZSB0aW1lXG4gICAgICAgICAgICB2YWwgPSB0aGlzLmNsb25lKCkuc3RhcnRPZignZGF5JykudmFsdWVPZigpO1xuXG4gICAgICAgICAgICBpZiAoZXJhc1tpXS5zaW5jZSA8PSB2YWwgJiYgdmFsIDw9IGVyYXNbaV0udW50aWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJhc1tpXS5uYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVyYXNbaV0udW50aWwgPD0gdmFsICYmIHZhbCA8PSBlcmFzW2ldLnNpbmNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVyYXNbaV0ubmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRFcmFOYXJyb3coKSB7XG4gICAgICAgIHZhciBpLFxuICAgICAgICAgICAgbCxcbiAgICAgICAgICAgIHZhbCxcbiAgICAgICAgICAgIGVyYXMgPSB0aGlzLmxvY2FsZURhdGEoKS5lcmFzKCk7XG4gICAgICAgIGZvciAoaSA9IDAsIGwgPSBlcmFzLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgICAgICAgICAgLy8gdHJ1bmNhdGUgdGltZVxuICAgICAgICAgICAgdmFsID0gdGhpcy5jbG9uZSgpLnN0YXJ0T2YoJ2RheScpLnZhbHVlT2YoKTtcblxuICAgICAgICAgICAgaWYgKGVyYXNbaV0uc2luY2UgPD0gdmFsICYmIHZhbCA8PSBlcmFzW2ldLnVudGlsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVyYXNbaV0ubmFycm93O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVyYXNbaV0udW50aWwgPD0gdmFsICYmIHZhbCA8PSBlcmFzW2ldLnNpbmNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVyYXNbaV0ubmFycm93O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEVyYUFiYnIoKSB7XG4gICAgICAgIHZhciBpLFxuICAgICAgICAgICAgbCxcbiAgICAgICAgICAgIHZhbCxcbiAgICAgICAgICAgIGVyYXMgPSB0aGlzLmxvY2FsZURhdGEoKS5lcmFzKCk7XG4gICAgICAgIGZvciAoaSA9IDAsIGwgPSBlcmFzLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgICAgICAgICAgLy8gdHJ1bmNhdGUgdGltZVxuICAgICAgICAgICAgdmFsID0gdGhpcy5jbG9uZSgpLnN0YXJ0T2YoJ2RheScpLnZhbHVlT2YoKTtcblxuICAgICAgICAgICAgaWYgKGVyYXNbaV0uc2luY2UgPD0gdmFsICYmIHZhbCA8PSBlcmFzW2ldLnVudGlsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVyYXNbaV0uYWJicjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcmFzW2ldLnVudGlsIDw9IHZhbCAmJiB2YWwgPD0gZXJhc1tpXS5zaW5jZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlcmFzW2ldLmFiYnI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0RXJhWWVhcigpIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBsLFxuICAgICAgICAgICAgZGlyLFxuICAgICAgICAgICAgdmFsLFxuICAgICAgICAgICAgZXJhcyA9IHRoaXMubG9jYWxlRGF0YSgpLmVyYXMoKTtcbiAgICAgICAgZm9yIChpID0gMCwgbCA9IGVyYXMubGVuZ3RoOyBpIDwgbDsgKytpKSB7XG4gICAgICAgICAgICBkaXIgPSBlcmFzW2ldLnNpbmNlIDw9IGVyYXNbaV0udW50aWwgPyArMSA6IC0xO1xuXG4gICAgICAgICAgICAvLyB0cnVuY2F0ZSB0aW1lXG4gICAgICAgICAgICB2YWwgPSB0aGlzLmNsb25lKCkuc3RhcnRPZignZGF5JykudmFsdWVPZigpO1xuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgKGVyYXNbaV0uc2luY2UgPD0gdmFsICYmIHZhbCA8PSBlcmFzW2ldLnVudGlsKSB8fFxuICAgICAgICAgICAgICAgIChlcmFzW2ldLnVudGlsIDw9IHZhbCAmJiB2YWwgPD0gZXJhc1tpXS5zaW5jZSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLnllYXIoKSAtIGhvb2tzKGVyYXNbaV0uc2luY2UpLnllYXIoKSkgKiBkaXIgK1xuICAgICAgICAgICAgICAgICAgICBlcmFzW2ldLm9mZnNldFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy55ZWFyKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXJhc05hbWVSZWdleChpc1N0cmljdCkge1xuICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ19lcmFzTmFtZVJlZ2V4JykpIHtcbiAgICAgICAgICAgIGNvbXB1dGVFcmFzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNTdHJpY3QgPyB0aGlzLl9lcmFzTmFtZVJlZ2V4IDogdGhpcy5fZXJhc1JlZ2V4O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVyYXNBYmJyUmVnZXgoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfZXJhc0FiYnJSZWdleCcpKSB7XG4gICAgICAgICAgICBjb21wdXRlRXJhc1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzU3RyaWN0ID8gdGhpcy5fZXJhc0FiYnJSZWdleCA6IHRoaXMuX2VyYXNSZWdleDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlcmFzTmFycm93UmVnZXgoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfZXJhc05hcnJvd1JlZ2V4JykpIHtcbiAgICAgICAgICAgIGNvbXB1dGVFcmFzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNTdHJpY3QgPyB0aGlzLl9lcmFzTmFycm93UmVnZXggOiB0aGlzLl9lcmFzUmVnZXg7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWF0Y2hFcmFBYmJyKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5lcmFzQWJiclJlZ2V4KGlzU3RyaWN0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYXRjaEVyYU5hbWUoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLmVyYXNOYW1lUmVnZXgoaXNTdHJpY3QpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1hdGNoRXJhTmFycm93KGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5lcmFzTmFycm93UmVnZXgoaXNTdHJpY3QpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1hdGNoRXJhWWVhck9yZGluYWwoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLl9lcmFZZWFyT3JkaW5hbFJlZ2V4IHx8IG1hdGNoVW5zaWduZWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcHV0ZUVyYXNQYXJzZSgpIHtcbiAgICAgICAgdmFyIGFiYnJQaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIG5hbWVQaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIG5hcnJvd1BpZWNlcyA9IFtdLFxuICAgICAgICAgICAgbWl4ZWRQaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBsLFxuICAgICAgICAgICAgZXJhcyA9IHRoaXMuZXJhcygpO1xuXG4gICAgICAgIGZvciAoaSA9IDAsIGwgPSBlcmFzLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgICAgICAgICAgbmFtZVBpZWNlcy5wdXNoKHJlZ2V4RXNjYXBlKGVyYXNbaV0ubmFtZSkpO1xuICAgICAgICAgICAgYWJiclBpZWNlcy5wdXNoKHJlZ2V4RXNjYXBlKGVyYXNbaV0uYWJicikpO1xuICAgICAgICAgICAgbmFycm93UGllY2VzLnB1c2gocmVnZXhFc2NhcGUoZXJhc1tpXS5uYXJyb3cpKTtcblxuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChyZWdleEVzY2FwZShlcmFzW2ldLm5hbWUpKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2gocmVnZXhFc2NhcGUoZXJhc1tpXS5hYmJyKSk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKHJlZ2V4RXNjYXBlKGVyYXNbaV0ubmFycm93KSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9lcmFzUmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBtaXhlZFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX2VyYXNOYW1lUmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBuYW1lUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICAgICAgdGhpcy5fZXJhc0FiYnJSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIGFiYnJQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgICAgICB0aGlzLl9lcmFzTmFycm93UmVnZXggPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgJ14oJyArIG5hcnJvd1BpZWNlcy5qb2luKCd8JykgKyAnKScsXG4gICAgICAgICAgICAnaSdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ2dnJywgMl0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2Vla1llYXIoKSAlIDEwMDtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnR0cnLCAyXSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc29XZWVrWWVhcigpICUgMTAwO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gYWRkV2Vla1llYXJGb3JtYXRUb2tlbih0b2tlbiwgZ2V0dGVyKSB7XG4gICAgICAgIGFkZEZvcm1hdFRva2VuKDAsIFt0b2tlbiwgdG9rZW4ubGVuZ3RoXSwgMCwgZ2V0dGVyKTtcbiAgICB9XG5cbiAgICBhZGRXZWVrWWVhckZvcm1hdFRva2VuKCdnZ2dnJywgJ3dlZWtZZWFyJyk7XG4gICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignZ2dnZ2cnLCAnd2Vla1llYXInKTtcbiAgICBhZGRXZWVrWWVhckZvcm1hdFRva2VuKCdHR0dHJywgJ2lzb1dlZWtZZWFyJyk7XG4gICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignR0dHR0cnLCAnaXNvV2Vla1llYXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnd2Vla1llYXInLCAnZ2cnKTtcbiAgICBhZGRVbml0QWxpYXMoJ2lzb1dlZWtZZWFyJywgJ0dHJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCd3ZWVrWWVhcicsIDEpO1xuICAgIGFkZFVuaXRQcmlvcml0eSgnaXNvV2Vla1llYXInLCAxKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ0cnLCBtYXRjaFNpZ25lZCk7XG4gICAgYWRkUmVnZXhUb2tlbignZycsIG1hdGNoU2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCdHRycsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdnZycsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdHR0dHJywgbWF0Y2gxdG80LCBtYXRjaDQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2dnZ2cnLCBtYXRjaDF0bzQsIG1hdGNoNCk7XG4gICAgYWRkUmVnZXhUb2tlbignR0dHR0cnLCBtYXRjaDF0bzYsIG1hdGNoNik7XG4gICAgYWRkUmVnZXhUb2tlbignZ2dnZ2cnLCBtYXRjaDF0bzYsIG1hdGNoNik7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihcbiAgICAgICAgWydnZ2dnJywgJ2dnZ2dnJywgJ0dHR0cnLCAnR0dHR0cnXSxcbiAgICAgICAgZnVuY3Rpb24gKGlucHV0LCB3ZWVrLCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgICAgICB3ZWVrW3Rva2VuLnN1YnN0cigwLCAyKV0gPSB0b0ludChpbnB1dCk7XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgYWRkV2Vla1BhcnNlVG9rZW4oWydnZycsICdHRyddLCBmdW5jdGlvbiAoaW5wdXQsIHdlZWssIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgd2Vla1t0b2tlbl0gPSBob29rcy5wYXJzZVR3b0RpZ2l0WWVhcihpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBnZXRTZXRXZWVrWWVhcihpbnB1dCkge1xuICAgICAgICByZXR1cm4gZ2V0U2V0V2Vla1llYXJIZWxwZXIuY2FsbChcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIHRoaXMud2VlaygpLFxuICAgICAgICAgICAgdGhpcy53ZWVrZGF5KCksXG4gICAgICAgICAgICB0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3csXG4gICAgICAgICAgICB0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3lcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRJU09XZWVrWWVhcihpbnB1dCkge1xuICAgICAgICByZXR1cm4gZ2V0U2V0V2Vla1llYXJIZWxwZXIuY2FsbChcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIHRoaXMuaXNvV2VlaygpLFxuICAgICAgICAgICAgdGhpcy5pc29XZWVrZGF5KCksXG4gICAgICAgICAgICAxLFxuICAgICAgICAgICAgNFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldElTT1dlZWtzSW5ZZWFyKCkge1xuICAgICAgICByZXR1cm4gd2Vla3NJblllYXIodGhpcy55ZWFyKCksIDEsIDQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldElTT1dlZWtzSW5JU09XZWVrWWVhcigpIHtcbiAgICAgICAgcmV0dXJuIHdlZWtzSW5ZZWFyKHRoaXMuaXNvV2Vla1llYXIoKSwgMSwgNCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0V2Vla3NJblllYXIoKSB7XG4gICAgICAgIHZhciB3ZWVrSW5mbyA9IHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrO1xuICAgICAgICByZXR1cm4gd2Vla3NJblllYXIodGhpcy55ZWFyKCksIHdlZWtJbmZvLmRvdywgd2Vla0luZm8uZG95KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRXZWVrc0luV2Vla1llYXIoKSB7XG4gICAgICAgIHZhciB3ZWVrSW5mbyA9IHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrO1xuICAgICAgICByZXR1cm4gd2Vla3NJblllYXIodGhpcy53ZWVrWWVhcigpLCB3ZWVrSW5mby5kb3csIHdlZWtJbmZvLmRveSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0V2Vla1llYXJIZWxwZXIoaW5wdXQsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KSB7XG4gICAgICAgIHZhciB3ZWVrc1RhcmdldDtcbiAgICAgICAgaWYgKGlucHV0ID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB3ZWVrT2ZZZWFyKHRoaXMsIGRvdywgZG95KS55ZWFyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgd2Vla3NUYXJnZXQgPSB3ZWVrc0luWWVhcihpbnB1dCwgZG93LCBkb3kpO1xuICAgICAgICAgICAgaWYgKHdlZWsgPiB3ZWVrc1RhcmdldCkge1xuICAgICAgICAgICAgICAgIHdlZWsgPSB3ZWVrc1RhcmdldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzZXRXZWVrQWxsLmNhbGwodGhpcywgaW5wdXQsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldFdlZWtBbGwod2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KSB7XG4gICAgICAgIHZhciBkYXlPZlllYXJEYXRhID0gZGF5T2ZZZWFyRnJvbVdlZWtzKHdlZWtZZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSksXG4gICAgICAgICAgICBkYXRlID0gY3JlYXRlVVRDRGF0ZShkYXlPZlllYXJEYXRhLnllYXIsIDAsIGRheU9mWWVhckRhdGEuZGF5T2ZZZWFyKTtcblxuICAgICAgICB0aGlzLnllYXIoZGF0ZS5nZXRVVENGdWxsWWVhcigpKTtcbiAgICAgICAgdGhpcy5tb250aChkYXRlLmdldFVUQ01vbnRoKCkpO1xuICAgICAgICB0aGlzLmRhdGUoZGF0ZS5nZXRVVENEYXRlKCkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignUScsIDAsICdRbycsICdxdWFydGVyJyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ3F1YXJ0ZXInLCAnUScpO1xuXG4gICAgLy8gUFJJT1JJVFlcblxuICAgIGFkZFVuaXRQcmlvcml0eSgncXVhcnRlcicsIDcpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignUScsIG1hdGNoMSk7XG4gICAgYWRkUGFyc2VUb2tlbignUScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbTU9OVEhdID0gKHRvSW50KGlucHV0KSAtIDEpICogMztcbiAgICB9KTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldFF1YXJ0ZXIoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGxcbiAgICAgICAgICAgID8gTWF0aC5jZWlsKCh0aGlzLm1vbnRoKCkgKyAxKSAvIDMpXG4gICAgICAgICAgICA6IHRoaXMubW9udGgoKGlucHV0IC0gMSkgKiAzICsgKHRoaXMubW9udGgoKSAlIDMpKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignRCcsIFsnREQnLCAyXSwgJ0RvJywgJ2RhdGUnKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnZGF0ZScsICdEJyk7XG5cbiAgICAvLyBQUklPUklUWVxuICAgIGFkZFVuaXRQcmlvcml0eSgnZGF0ZScsIDkpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignRCcsIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignREQnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignRG8nLCBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgXCJvcmRpbmFsUGFyc2VcIiBmYWxsYmFjayBpbiBuZXh0IG1ham9yIHJlbGVhc2UuXG4gICAgICAgIHJldHVybiBpc1N0cmljdFxuICAgICAgICAgICAgPyBsb2NhbGUuX2RheU9mTW9udGhPcmRpbmFsUGFyc2UgfHwgbG9jYWxlLl9vcmRpbmFsUGFyc2VcbiAgICAgICAgICAgIDogbG9jYWxlLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlTGVuaWVudDtcbiAgICB9KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydEJywgJ0REJ10sIERBVEUpO1xuICAgIGFkZFBhcnNlVG9rZW4oJ0RvJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtEQVRFXSA9IHRvSW50KGlucHV0Lm1hdGNoKG1hdGNoMXRvMilbMF0pO1xuICAgIH0pO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgdmFyIGdldFNldERheU9mTW9udGggPSBtYWtlR2V0U2V0KCdEYXRlJywgdHJ1ZSk7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignREREJywgWydEREREJywgM10sICdERERvJywgJ2RheU9mWWVhcicpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdkYXlPZlllYXInLCAnREREJyk7XG5cbiAgICAvLyBQUklPUklUWVxuICAgIGFkZFVuaXRQcmlvcml0eSgnZGF5T2ZZZWFyJywgNCk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdEREQnLCBtYXRjaDF0bzMpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0REREQnLCBtYXRjaDMpO1xuICAgIGFkZFBhcnNlVG9rZW4oWydEREQnLCAnRERERCddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgY29uZmlnLl9kYXlPZlllYXIgPSB0b0ludChpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBnZXRTZXREYXlPZlllYXIoaW5wdXQpIHtcbiAgICAgICAgdmFyIGRheU9mWWVhciA9XG4gICAgICAgICAgICBNYXRoLnJvdW5kKFxuICAgICAgICAgICAgICAgICh0aGlzLmNsb25lKCkuc3RhcnRPZignZGF5JykgLSB0aGlzLmNsb25lKCkuc3RhcnRPZigneWVhcicpKSAvIDg2NGU1XG4gICAgICAgICAgICApICsgMTtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyBkYXlPZlllYXIgOiB0aGlzLmFkZChpbnB1dCAtIGRheU9mWWVhciwgJ2QnKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignbScsIFsnbW0nLCAyXSwgMCwgJ21pbnV0ZScpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdtaW51dGUnLCAnbScpO1xuXG4gICAgLy8gUFJJT1JJVFlcblxuICAgIGFkZFVuaXRQcmlvcml0eSgnbWludXRlJywgMTQpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignbScsIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignbW0nLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUGFyc2VUb2tlbihbJ20nLCAnbW0nXSwgTUlOVVRFKTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIHZhciBnZXRTZXRNaW51dGUgPSBtYWtlR2V0U2V0KCdNaW51dGVzJywgZmFsc2UpO1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ3MnLCBbJ3NzJywgMl0sIDAsICdzZWNvbmQnKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnc2Vjb25kJywgJ3MnKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ3NlY29uZCcsIDE1KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ3MnLCBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ3NzJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFBhcnNlVG9rZW4oWydzJywgJ3NzJ10sIFNFQ09ORCk7XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICB2YXIgZ2V0U2V0U2Vjb25kID0gbWFrZUdldFNldCgnU2Vjb25kcycsIGZhbHNlKTtcblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdTJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gfn4odGhpcy5taWxsaXNlY29uZCgpIC8gMTAwKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1MnLCAyXSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gfn4odGhpcy5taWxsaXNlY29uZCgpIC8gMTApO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1MnLCAzXSwgMCwgJ21pbGxpc2Vjb25kJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTJywgNF0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwO1xuICAgIH0pO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1MnLCA1XSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTAwO1xuICAgIH0pO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1NTJywgNl0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDA7XG4gICAgfSk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTU1NTJywgN10sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDAwO1xuICAgIH0pO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1NTU1MnLCA4XSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTAwMDAwO1xuICAgIH0pO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1NTU1NTJywgOV0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDAwMDA7XG4gICAgfSk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ21pbGxpc2Vjb25kJywgJ21zJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdtaWxsaXNlY29uZCcsIDE2KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1MnLCBtYXRjaDF0bzMsIG1hdGNoMSk7XG4gICAgYWRkUmVnZXhUb2tlbignU1MnLCBtYXRjaDF0bzMsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignU1NTJywgbWF0Y2gxdG8zLCBtYXRjaDMpO1xuXG4gICAgdmFyIHRva2VuLCBnZXRTZXRNaWxsaXNlY29uZDtcbiAgICBmb3IgKHRva2VuID0gJ1NTU1MnOyB0b2tlbi5sZW5ndGggPD0gOTsgdG9rZW4gKz0gJ1MnKSB7XG4gICAgICAgIGFkZFJlZ2V4VG9rZW4odG9rZW4sIG1hdGNoVW5zaWduZWQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlTXMoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W01JTExJU0VDT05EXSA9IHRvSW50KCgnMC4nICsgaW5wdXQpICogMTAwMCk7XG4gICAgfVxuXG4gICAgZm9yICh0b2tlbiA9ICdTJzsgdG9rZW4ubGVuZ3RoIDw9IDk7IHRva2VuICs9ICdTJykge1xuICAgICAgICBhZGRQYXJzZVRva2VuKHRva2VuLCBwYXJzZU1zKTtcbiAgICB9XG5cbiAgICBnZXRTZXRNaWxsaXNlY29uZCA9IG1ha2VHZXRTZXQoJ01pbGxpc2Vjb25kcycsIGZhbHNlKTtcblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCd6JywgMCwgMCwgJ3pvbmVBYmJyJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ3p6JywgMCwgMCwgJ3pvbmVOYW1lJyk7XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBnZXRab25lQWJicigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVVRDID8gJ1VUQycgOiAnJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRab25lTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVVRDID8gJ0Nvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lJyA6ICcnO1xuICAgIH1cblxuICAgIHZhciBwcm90byA9IE1vbWVudC5wcm90b3R5cGU7XG5cbiAgICBwcm90by5hZGQgPSBhZGQ7XG4gICAgcHJvdG8uY2FsZW5kYXIgPSBjYWxlbmRhciQxO1xuICAgIHByb3RvLmNsb25lID0gY2xvbmU7XG4gICAgcHJvdG8uZGlmZiA9IGRpZmY7XG4gICAgcHJvdG8uZW5kT2YgPSBlbmRPZjtcbiAgICBwcm90by5mb3JtYXQgPSBmb3JtYXQ7XG4gICAgcHJvdG8uZnJvbSA9IGZyb207XG4gICAgcHJvdG8uZnJvbU5vdyA9IGZyb21Ob3c7XG4gICAgcHJvdG8udG8gPSB0bztcbiAgICBwcm90by50b05vdyA9IHRvTm93O1xuICAgIHByb3RvLmdldCA9IHN0cmluZ0dldDtcbiAgICBwcm90by5pbnZhbGlkQXQgPSBpbnZhbGlkQXQ7XG4gICAgcHJvdG8uaXNBZnRlciA9IGlzQWZ0ZXI7XG4gICAgcHJvdG8uaXNCZWZvcmUgPSBpc0JlZm9yZTtcbiAgICBwcm90by5pc0JldHdlZW4gPSBpc0JldHdlZW47XG4gICAgcHJvdG8uaXNTYW1lID0gaXNTYW1lO1xuICAgIHByb3RvLmlzU2FtZU9yQWZ0ZXIgPSBpc1NhbWVPckFmdGVyO1xuICAgIHByb3RvLmlzU2FtZU9yQmVmb3JlID0gaXNTYW1lT3JCZWZvcmU7XG4gICAgcHJvdG8uaXNWYWxpZCA9IGlzVmFsaWQkMjtcbiAgICBwcm90by5sYW5nID0gbGFuZztcbiAgICBwcm90by5sb2NhbGUgPSBsb2NhbGU7XG4gICAgcHJvdG8ubG9jYWxlRGF0YSA9IGxvY2FsZURhdGE7XG4gICAgcHJvdG8ubWF4ID0gcHJvdG90eXBlTWF4O1xuICAgIHByb3RvLm1pbiA9IHByb3RvdHlwZU1pbjtcbiAgICBwcm90by5wYXJzaW5nRmxhZ3MgPSBwYXJzaW5nRmxhZ3M7XG4gICAgcHJvdG8uc2V0ID0gc3RyaW5nU2V0O1xuICAgIHByb3RvLnN0YXJ0T2YgPSBzdGFydE9mO1xuICAgIHByb3RvLnN1YnRyYWN0ID0gc3VidHJhY3Q7XG4gICAgcHJvdG8udG9BcnJheSA9IHRvQXJyYXk7XG4gICAgcHJvdG8udG9PYmplY3QgPSB0b09iamVjdDtcbiAgICBwcm90by50b0RhdGUgPSB0b0RhdGU7XG4gICAgcHJvdG8udG9JU09TdHJpbmcgPSB0b0lTT1N0cmluZztcbiAgICBwcm90by5pbnNwZWN0ID0gaW5zcGVjdDtcbiAgICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLmZvciAhPSBudWxsKSB7XG4gICAgICAgIHByb3RvW1N5bWJvbC5mb3IoJ25vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tJyldID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuICdNb21lbnQ8JyArIHRoaXMuZm9ybWF0KCkgKyAnPic7XG4gICAgICAgIH07XG4gICAgfVxuICAgIHByb3RvLnRvSlNPTiA9IHRvSlNPTjtcbiAgICBwcm90by50b1N0cmluZyA9IHRvU3RyaW5nO1xuICAgIHByb3RvLnVuaXggPSB1bml4O1xuICAgIHByb3RvLnZhbHVlT2YgPSB2YWx1ZU9mO1xuICAgIHByb3RvLmNyZWF0aW9uRGF0YSA9IGNyZWF0aW9uRGF0YTtcbiAgICBwcm90by5lcmFOYW1lID0gZ2V0RXJhTmFtZTtcbiAgICBwcm90by5lcmFOYXJyb3cgPSBnZXRFcmFOYXJyb3c7XG4gICAgcHJvdG8uZXJhQWJiciA9IGdldEVyYUFiYnI7XG4gICAgcHJvdG8uZXJhWWVhciA9IGdldEVyYVllYXI7XG4gICAgcHJvdG8ueWVhciA9IGdldFNldFllYXI7XG4gICAgcHJvdG8uaXNMZWFwWWVhciA9IGdldElzTGVhcFllYXI7XG4gICAgcHJvdG8ud2Vla1llYXIgPSBnZXRTZXRXZWVrWWVhcjtcbiAgICBwcm90by5pc29XZWVrWWVhciA9IGdldFNldElTT1dlZWtZZWFyO1xuICAgIHByb3RvLnF1YXJ0ZXIgPSBwcm90by5xdWFydGVycyA9IGdldFNldFF1YXJ0ZXI7XG4gICAgcHJvdG8ubW9udGggPSBnZXRTZXRNb250aDtcbiAgICBwcm90by5kYXlzSW5Nb250aCA9IGdldERheXNJbk1vbnRoO1xuICAgIHByb3RvLndlZWsgPSBwcm90by53ZWVrcyA9IGdldFNldFdlZWs7XG4gICAgcHJvdG8uaXNvV2VlayA9IHByb3RvLmlzb1dlZWtzID0gZ2V0U2V0SVNPV2VlaztcbiAgICBwcm90by53ZWVrc0luWWVhciA9IGdldFdlZWtzSW5ZZWFyO1xuICAgIHByb3RvLndlZWtzSW5XZWVrWWVhciA9IGdldFdlZWtzSW5XZWVrWWVhcjtcbiAgICBwcm90by5pc29XZWVrc0luWWVhciA9IGdldElTT1dlZWtzSW5ZZWFyO1xuICAgIHByb3RvLmlzb1dlZWtzSW5JU09XZWVrWWVhciA9IGdldElTT1dlZWtzSW5JU09XZWVrWWVhcjtcbiAgICBwcm90by5kYXRlID0gZ2V0U2V0RGF5T2ZNb250aDtcbiAgICBwcm90by5kYXkgPSBwcm90by5kYXlzID0gZ2V0U2V0RGF5T2ZXZWVrO1xuICAgIHByb3RvLndlZWtkYXkgPSBnZXRTZXRMb2NhbGVEYXlPZldlZWs7XG4gICAgcHJvdG8uaXNvV2Vla2RheSA9IGdldFNldElTT0RheU9mV2VlaztcbiAgICBwcm90by5kYXlPZlllYXIgPSBnZXRTZXREYXlPZlllYXI7XG4gICAgcHJvdG8uaG91ciA9IHByb3RvLmhvdXJzID0gZ2V0U2V0SG91cjtcbiAgICBwcm90by5taW51dGUgPSBwcm90by5taW51dGVzID0gZ2V0U2V0TWludXRlO1xuICAgIHByb3RvLnNlY29uZCA9IHByb3RvLnNlY29uZHMgPSBnZXRTZXRTZWNvbmQ7XG4gICAgcHJvdG8ubWlsbGlzZWNvbmQgPSBwcm90by5taWxsaXNlY29uZHMgPSBnZXRTZXRNaWxsaXNlY29uZDtcbiAgICBwcm90by51dGNPZmZzZXQgPSBnZXRTZXRPZmZzZXQ7XG4gICAgcHJvdG8udXRjID0gc2V0T2Zmc2V0VG9VVEM7XG4gICAgcHJvdG8ubG9jYWwgPSBzZXRPZmZzZXRUb0xvY2FsO1xuICAgIHByb3RvLnBhcnNlWm9uZSA9IHNldE9mZnNldFRvUGFyc2VkT2Zmc2V0O1xuICAgIHByb3RvLmhhc0FsaWduZWRIb3VyT2Zmc2V0ID0gaGFzQWxpZ25lZEhvdXJPZmZzZXQ7XG4gICAgcHJvdG8uaXNEU1QgPSBpc0RheWxpZ2h0U2F2aW5nVGltZTtcbiAgICBwcm90by5pc0xvY2FsID0gaXNMb2NhbDtcbiAgICBwcm90by5pc1V0Y09mZnNldCA9IGlzVXRjT2Zmc2V0O1xuICAgIHByb3RvLmlzVXRjID0gaXNVdGM7XG4gICAgcHJvdG8uaXNVVEMgPSBpc1V0YztcbiAgICBwcm90by56b25lQWJiciA9IGdldFpvbmVBYmJyO1xuICAgIHByb3RvLnpvbmVOYW1lID0gZ2V0Wm9uZU5hbWU7XG4gICAgcHJvdG8uZGF0ZXMgPSBkZXByZWNhdGUoXG4gICAgICAgICdkYXRlcyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgZGF0ZSBpbnN0ZWFkLicsXG4gICAgICAgIGdldFNldERheU9mTW9udGhcbiAgICApO1xuICAgIHByb3RvLm1vbnRocyA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ21vbnRocyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgbW9udGggaW5zdGVhZCcsXG4gICAgICAgIGdldFNldE1vbnRoXG4gICAgKTtcbiAgICBwcm90by55ZWFycyA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ3llYXJzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSB5ZWFyIGluc3RlYWQnLFxuICAgICAgICBnZXRTZXRZZWFyXG4gICAgKTtcbiAgICBwcm90by56b25lID0gZGVwcmVjYXRlKFxuICAgICAgICAnbW9tZW50KCkuem9uZSBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50KCkudXRjT2Zmc2V0IGluc3RlYWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3Mvem9uZS8nLFxuICAgICAgICBnZXRTZXRab25lXG4gICAgKTtcbiAgICBwcm90by5pc0RTVFNoaWZ0ZWQgPSBkZXByZWNhdGUoXG4gICAgICAgICdpc0RTVFNoaWZ0ZWQgaXMgZGVwcmVjYXRlZC4gU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvZHN0LXNoaWZ0ZWQvIGZvciBtb3JlIGluZm9ybWF0aW9uJyxcbiAgICAgICAgaXNEYXlsaWdodFNhdmluZ1RpbWVTaGlmdGVkXG4gICAgKTtcblxuICAgIGZ1bmN0aW9uIGNyZWF0ZVVuaXgoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUxvY2FsKGlucHV0ICogMTAwMCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlSW5ab25lKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwuYXBwbHkobnVsbCwgYXJndW1lbnRzKS5wYXJzZVpvbmUoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmVQYXJzZVBvc3RGb3JtYXQoc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgfVxuXG4gICAgdmFyIHByb3RvJDEgPSBMb2NhbGUucHJvdG90eXBlO1xuXG4gICAgcHJvdG8kMS5jYWxlbmRhciA9IGNhbGVuZGFyO1xuICAgIHByb3RvJDEubG9uZ0RhdGVGb3JtYXQgPSBsb25nRGF0ZUZvcm1hdDtcbiAgICBwcm90byQxLmludmFsaWREYXRlID0gaW52YWxpZERhdGU7XG4gICAgcHJvdG8kMS5vcmRpbmFsID0gb3JkaW5hbDtcbiAgICBwcm90byQxLnByZXBhcnNlID0gcHJlUGFyc2VQb3N0Rm9ybWF0O1xuICAgIHByb3RvJDEucG9zdGZvcm1hdCA9IHByZVBhcnNlUG9zdEZvcm1hdDtcbiAgICBwcm90byQxLnJlbGF0aXZlVGltZSA9IHJlbGF0aXZlVGltZTtcbiAgICBwcm90byQxLnBhc3RGdXR1cmUgPSBwYXN0RnV0dXJlO1xuICAgIHByb3RvJDEuc2V0ID0gc2V0O1xuICAgIHByb3RvJDEuZXJhcyA9IGxvY2FsZUVyYXM7XG4gICAgcHJvdG8kMS5lcmFzUGFyc2UgPSBsb2NhbGVFcmFzUGFyc2U7XG4gICAgcHJvdG8kMS5lcmFzQ29udmVydFllYXIgPSBsb2NhbGVFcmFzQ29udmVydFllYXI7XG4gICAgcHJvdG8kMS5lcmFzQWJiclJlZ2V4ID0gZXJhc0FiYnJSZWdleDtcbiAgICBwcm90byQxLmVyYXNOYW1lUmVnZXggPSBlcmFzTmFtZVJlZ2V4O1xuICAgIHByb3RvJDEuZXJhc05hcnJvd1JlZ2V4ID0gZXJhc05hcnJvd1JlZ2V4O1xuXG4gICAgcHJvdG8kMS5tb250aHMgPSBsb2NhbGVNb250aHM7XG4gICAgcHJvdG8kMS5tb250aHNTaG9ydCA9IGxvY2FsZU1vbnRoc1Nob3J0O1xuICAgIHByb3RvJDEubW9udGhzUGFyc2UgPSBsb2NhbGVNb250aHNQYXJzZTtcbiAgICBwcm90byQxLm1vbnRoc1JlZ2V4ID0gbW9udGhzUmVnZXg7XG4gICAgcHJvdG8kMS5tb250aHNTaG9ydFJlZ2V4ID0gbW9udGhzU2hvcnRSZWdleDtcbiAgICBwcm90byQxLndlZWsgPSBsb2NhbGVXZWVrO1xuICAgIHByb3RvJDEuZmlyc3REYXlPZlllYXIgPSBsb2NhbGVGaXJzdERheU9mWWVhcjtcbiAgICBwcm90byQxLmZpcnN0RGF5T2ZXZWVrID0gbG9jYWxlRmlyc3REYXlPZldlZWs7XG5cbiAgICBwcm90byQxLndlZWtkYXlzID0gbG9jYWxlV2Vla2RheXM7XG4gICAgcHJvdG8kMS53ZWVrZGF5c01pbiA9IGxvY2FsZVdlZWtkYXlzTWluO1xuICAgIHByb3RvJDEud2Vla2RheXNTaG9ydCA9IGxvY2FsZVdlZWtkYXlzU2hvcnQ7XG4gICAgcHJvdG8kMS53ZWVrZGF5c1BhcnNlID0gbG9jYWxlV2Vla2RheXNQYXJzZTtcblxuICAgIHByb3RvJDEud2Vla2RheXNSZWdleCA9IHdlZWtkYXlzUmVnZXg7XG4gICAgcHJvdG8kMS53ZWVrZGF5c1Nob3J0UmVnZXggPSB3ZWVrZGF5c1Nob3J0UmVnZXg7XG4gICAgcHJvdG8kMS53ZWVrZGF5c01pblJlZ2V4ID0gd2Vla2RheXNNaW5SZWdleDtcblxuICAgIHByb3RvJDEuaXNQTSA9IGxvY2FsZUlzUE07XG4gICAgcHJvdG8kMS5tZXJpZGllbSA9IGxvY2FsZU1lcmlkaWVtO1xuXG4gICAgZnVuY3Rpb24gZ2V0JDEoZm9ybWF0LCBpbmRleCwgZmllbGQsIHNldHRlcikge1xuICAgICAgICB2YXIgbG9jYWxlID0gZ2V0TG9jYWxlKCksXG4gICAgICAgICAgICB1dGMgPSBjcmVhdGVVVEMoKS5zZXQoc2V0dGVyLCBpbmRleCk7XG4gICAgICAgIHJldHVybiBsb2NhbGVbZmllbGRdKHV0YywgZm9ybWF0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0TW9udGhzSW1wbChmb3JtYXQsIGluZGV4LCBmaWVsZCkge1xuICAgICAgICBpZiAoaXNOdW1iZXIoZm9ybWF0KSkge1xuICAgICAgICAgICAgaW5kZXggPSBmb3JtYXQ7XG4gICAgICAgICAgICBmb3JtYXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBmb3JtYXQgPSBmb3JtYXQgfHwgJyc7XG5cbiAgICAgICAgaWYgKGluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXQkMShmb3JtYXQsIGluZGV4LCBmaWVsZCwgJ21vbnRoJyk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgIG91dCA9IFtdO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgICAgb3V0W2ldID0gZ2V0JDEoZm9ybWF0LCBpLCBmaWVsZCwgJ21vbnRoJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICAvLyAoKVxuICAgIC8vICg1KVxuICAgIC8vIChmbXQsIDUpXG4gICAgLy8gKGZtdClcbiAgICAvLyAodHJ1ZSlcbiAgICAvLyAodHJ1ZSwgNSlcbiAgICAvLyAodHJ1ZSwgZm10LCA1KVxuICAgIC8vICh0cnVlLCBmbXQpXG4gICAgZnVuY3Rpb24gbGlzdFdlZWtkYXlzSW1wbChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsIGZpZWxkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbG9jYWxlU29ydGVkID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIGlmIChpc051bWJlcihmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBmb3JtYXQ7XG4gICAgICAgICAgICAgICAgZm9ybWF0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXQgfHwgJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3JtYXQgPSBsb2NhbGVTb3J0ZWQ7XG4gICAgICAgICAgICBpbmRleCA9IGZvcm1hdDtcbiAgICAgICAgICAgIGxvY2FsZVNvcnRlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoaXNOdW1iZXIoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIGluZGV4ID0gZm9ybWF0O1xuICAgICAgICAgICAgICAgIGZvcm1hdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9ybWF0ID0gZm9ybWF0IHx8ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGxvY2FsZSA9IGdldExvY2FsZSgpLFxuICAgICAgICAgICAgc2hpZnQgPSBsb2NhbGVTb3J0ZWQgPyBsb2NhbGUuX3dlZWsuZG93IDogMCxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBvdXQgPSBbXTtcblxuICAgICAgICBpZiAoaW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldCQxKGZvcm1hdCwgKGluZGV4ICsgc2hpZnQpICUgNywgZmllbGQsICdkYXknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIG91dFtpXSA9IGdldCQxKGZvcm1hdCwgKGkgKyBzaGlmdCkgJSA3LCBmaWVsZCwgJ2RheScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdE1vbnRocyhmb3JtYXQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBsaXN0TW9udGhzSW1wbChmb3JtYXQsIGluZGV4LCAnbW9udGhzJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdE1vbnRoc1Nob3J0KGZvcm1hdCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RNb250aHNJbXBsKGZvcm1hdCwgaW5kZXgsICdtb250aHNTaG9ydCcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RXZWVrZGF5cyhsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RXZWVrZGF5c0ltcGwobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4LCAnd2Vla2RheXMnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXNTaG9ydChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RXZWVrZGF5c0ltcGwobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4LCAnd2Vla2RheXNTaG9ydCcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RXZWVrZGF5c01pbihsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RXZWVrZGF5c0ltcGwobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4LCAnd2Vla2RheXNNaW4nKTtcbiAgICB9XG5cbiAgICBnZXRTZXRHbG9iYWxMb2NhbGUoJ2VuJywge1xuICAgICAgICBlcmFzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2luY2U6ICcwMDAxLTAxLTAxJyxcbiAgICAgICAgICAgICAgICB1bnRpbDogK0luZmluaXR5LFxuICAgICAgICAgICAgICAgIG9mZnNldDogMSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnQW5ubyBEb21pbmknLFxuICAgICAgICAgICAgICAgIG5hcnJvdzogJ0FEJyxcbiAgICAgICAgICAgICAgICBhYmJyOiAnQUQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaW5jZTogJzAwMDAtMTItMzEnLFxuICAgICAgICAgICAgICAgIHVudGlsOiAtSW5maW5pdHksXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdCZWZvcmUgQ2hyaXN0JyxcbiAgICAgICAgICAgICAgICBuYXJyb3c6ICdCQycsXG4gICAgICAgICAgICAgICAgYWJicjogJ0JDJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSh0aHxzdHxuZHxyZCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9XG4gICAgICAgICAgICAgICAgICAgIHRvSW50KChudW1iZXIgJSAxMDApIC8gMTApID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICd0aCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYiA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnc3QnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGIgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ25kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBiID09PSAzXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdyZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBTaWRlIGVmZmVjdCBpbXBvcnRzXG5cbiAgICBob29rcy5sYW5nID0gZGVwcmVjYXRlKFxuICAgICAgICAnbW9tZW50LmxhbmcgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGUgaW5zdGVhZC4nLFxuICAgICAgICBnZXRTZXRHbG9iYWxMb2NhbGVcbiAgICApO1xuICAgIGhvb2tzLmxhbmdEYXRhID0gZGVwcmVjYXRlKFxuICAgICAgICAnbW9tZW50LmxhbmdEYXRhIGlzIGRlcHJlY2F0ZWQuIFVzZSBtb21lbnQubG9jYWxlRGF0YSBpbnN0ZWFkLicsXG4gICAgICAgIGdldExvY2FsZVxuICAgICk7XG5cbiAgICB2YXIgbWF0aEFicyA9IE1hdGguYWJzO1xuXG4gICAgZnVuY3Rpb24gYWJzKCkge1xuICAgICAgICB2YXIgZGF0YSA9IHRoaXMuX2RhdGE7XG5cbiAgICAgICAgdGhpcy5fbWlsbGlzZWNvbmRzID0gbWF0aEFicyh0aGlzLl9taWxsaXNlY29uZHMpO1xuICAgICAgICB0aGlzLl9kYXlzID0gbWF0aEFicyh0aGlzLl9kYXlzKTtcbiAgICAgICAgdGhpcy5fbW9udGhzID0gbWF0aEFicyh0aGlzLl9tb250aHMpO1xuXG4gICAgICAgIGRhdGEubWlsbGlzZWNvbmRzID0gbWF0aEFicyhkYXRhLm1pbGxpc2Vjb25kcyk7XG4gICAgICAgIGRhdGEuc2Vjb25kcyA9IG1hdGhBYnMoZGF0YS5zZWNvbmRzKTtcbiAgICAgICAgZGF0YS5taW51dGVzID0gbWF0aEFicyhkYXRhLm1pbnV0ZXMpO1xuICAgICAgICBkYXRhLmhvdXJzID0gbWF0aEFicyhkYXRhLmhvdXJzKTtcbiAgICAgICAgZGF0YS5tb250aHMgPSBtYXRoQWJzKGRhdGEubW9udGhzKTtcbiAgICAgICAgZGF0YS55ZWFycyA9IG1hdGhBYnMoZGF0YS55ZWFycyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkU3VidHJhY3QkMShkdXJhdGlvbiwgaW5wdXQsIHZhbHVlLCBkaXJlY3Rpb24pIHtcbiAgICAgICAgdmFyIG90aGVyID0gY3JlYXRlRHVyYXRpb24oaW5wdXQsIHZhbHVlKTtcblxuICAgICAgICBkdXJhdGlvbi5fbWlsbGlzZWNvbmRzICs9IGRpcmVjdGlvbiAqIG90aGVyLl9taWxsaXNlY29uZHM7XG4gICAgICAgIGR1cmF0aW9uLl9kYXlzICs9IGRpcmVjdGlvbiAqIG90aGVyLl9kYXlzO1xuICAgICAgICBkdXJhdGlvbi5fbW9udGhzICs9IGRpcmVjdGlvbiAqIG90aGVyLl9tb250aHM7XG5cbiAgICAgICAgcmV0dXJuIGR1cmF0aW9uLl9idWJibGUoKTtcbiAgICB9XG5cbiAgICAvLyBzdXBwb3J0cyBvbmx5IDIuMC1zdHlsZSBhZGQoMSwgJ3MnKSBvciBhZGQoZHVyYXRpb24pXG4gICAgZnVuY3Rpb24gYWRkJDEoaW5wdXQsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBhZGRTdWJ0cmFjdCQxKHRoaXMsIGlucHV0LCB2YWx1ZSwgMSk7XG4gICAgfVxuXG4gICAgLy8gc3VwcG9ydHMgb25seSAyLjAtc3R5bGUgc3VidHJhY3QoMSwgJ3MnKSBvciBzdWJ0cmFjdChkdXJhdGlvbilcbiAgICBmdW5jdGlvbiBzdWJ0cmFjdCQxKGlucHV0LCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gYWRkU3VidHJhY3QkMSh0aGlzLCBpbnB1dCwgdmFsdWUsIC0xKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhYnNDZWlsKG51bWJlcikge1xuICAgICAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobnVtYmVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwobnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1YmJsZSgpIHtcbiAgICAgICAgdmFyIG1pbGxpc2Vjb25kcyA9IHRoaXMuX21pbGxpc2Vjb25kcyxcbiAgICAgICAgICAgIGRheXMgPSB0aGlzLl9kYXlzLFxuICAgICAgICAgICAgbW9udGhzID0gdGhpcy5fbW9udGhzLFxuICAgICAgICAgICAgZGF0YSA9IHRoaXMuX2RhdGEsXG4gICAgICAgICAgICBzZWNvbmRzLFxuICAgICAgICAgICAgbWludXRlcyxcbiAgICAgICAgICAgIGhvdXJzLFxuICAgICAgICAgICAgeWVhcnMsXG4gICAgICAgICAgICBtb250aHNGcm9tRGF5cztcblxuICAgICAgICAvLyBpZiB3ZSBoYXZlIGEgbWl4IG9mIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSB2YWx1ZXMsIGJ1YmJsZSBkb3duIGZpcnN0XG4gICAgICAgIC8vIGNoZWNrOiBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMjE2NlxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgIChtaWxsaXNlY29uZHMgPj0gMCAmJiBkYXlzID49IDAgJiYgbW9udGhzID49IDApIHx8XG4gICAgICAgICAgICAgICAgKG1pbGxpc2Vjb25kcyA8PSAwICYmIGRheXMgPD0gMCAmJiBtb250aHMgPD0gMClcbiAgICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBtaWxsaXNlY29uZHMgKz0gYWJzQ2VpbChtb250aHNUb0RheXMobW9udGhzKSArIGRheXMpICogODY0ZTU7XG4gICAgICAgICAgICBkYXlzID0gMDtcbiAgICAgICAgICAgIG1vbnRocyA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGNvZGUgYnViYmxlcyB1cCB2YWx1ZXMsIHNlZSB0aGUgdGVzdHMgZm9yXG4gICAgICAgIC8vIGV4YW1wbGVzIG9mIHdoYXQgdGhhdCBtZWFucy5cbiAgICAgICAgZGF0YS5taWxsaXNlY29uZHMgPSBtaWxsaXNlY29uZHMgJSAxMDAwO1xuXG4gICAgICAgIHNlY29uZHMgPSBhYnNGbG9vcihtaWxsaXNlY29uZHMgLyAxMDAwKTtcbiAgICAgICAgZGF0YS5zZWNvbmRzID0gc2Vjb25kcyAlIDYwO1xuXG4gICAgICAgIG1pbnV0ZXMgPSBhYnNGbG9vcihzZWNvbmRzIC8gNjApO1xuICAgICAgICBkYXRhLm1pbnV0ZXMgPSBtaW51dGVzICUgNjA7XG5cbiAgICAgICAgaG91cnMgPSBhYnNGbG9vcihtaW51dGVzIC8gNjApO1xuICAgICAgICBkYXRhLmhvdXJzID0gaG91cnMgJSAyNDtcblxuICAgICAgICBkYXlzICs9IGFic0Zsb29yKGhvdXJzIC8gMjQpO1xuXG4gICAgICAgIC8vIGNvbnZlcnQgZGF5cyB0byBtb250aHNcbiAgICAgICAgbW9udGhzRnJvbURheXMgPSBhYnNGbG9vcihkYXlzVG9Nb250aHMoZGF5cykpO1xuICAgICAgICBtb250aHMgKz0gbW9udGhzRnJvbURheXM7XG4gICAgICAgIGRheXMgLT0gYWJzQ2VpbChtb250aHNUb0RheXMobW9udGhzRnJvbURheXMpKTtcblxuICAgICAgICAvLyAxMiBtb250aHMgLT4gMSB5ZWFyXG4gICAgICAgIHllYXJzID0gYWJzRmxvb3IobW9udGhzIC8gMTIpO1xuICAgICAgICBtb250aHMgJT0gMTI7XG5cbiAgICAgICAgZGF0YS5kYXlzID0gZGF5cztcbiAgICAgICAgZGF0YS5tb250aHMgPSBtb250aHM7XG4gICAgICAgIGRhdGEueWVhcnMgPSB5ZWFycztcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkYXlzVG9Nb250aHMoZGF5cykge1xuICAgICAgICAvLyA0MDAgeWVhcnMgaGF2ZSAxNDYwOTcgZGF5cyAodGFraW5nIGludG8gYWNjb3VudCBsZWFwIHllYXIgcnVsZXMpXG4gICAgICAgIC8vIDQwMCB5ZWFycyBoYXZlIDEyIG1vbnRocyA9PT0gNDgwMFxuICAgICAgICByZXR1cm4gKGRheXMgKiA0ODAwKSAvIDE0NjA5NztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb250aHNUb0RheXMobW9udGhzKSB7XG4gICAgICAgIC8vIHRoZSByZXZlcnNlIG9mIGRheXNUb01vbnRoc1xuICAgICAgICByZXR1cm4gKG1vbnRocyAqIDE0NjA5NykgLyA0ODAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFzKHVuaXRzKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRheXMsXG4gICAgICAgICAgICBtb250aHMsXG4gICAgICAgICAgICBtaWxsaXNlY29uZHMgPSB0aGlzLl9taWxsaXNlY29uZHM7XG5cbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG5cbiAgICAgICAgaWYgKHVuaXRzID09PSAnbW9udGgnIHx8IHVuaXRzID09PSAncXVhcnRlcicgfHwgdW5pdHMgPT09ICd5ZWFyJykge1xuICAgICAgICAgICAgZGF5cyA9IHRoaXMuX2RheXMgKyBtaWxsaXNlY29uZHMgLyA4NjRlNTtcbiAgICAgICAgICAgIG1vbnRocyA9IHRoaXMuX21vbnRocyArIGRheXNUb01vbnRocyhkYXlzKTtcbiAgICAgICAgICAgIHN3aXRjaCAodW5pdHMpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtb250aHM7XG4gICAgICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtb250aHMgLyAzO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzIC8gMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBoYW5kbGUgbWlsbGlzZWNvbmRzIHNlcGFyYXRlbHkgYmVjYXVzZSBvZiBmbG9hdGluZyBwb2ludCBtYXRoIGVycm9ycyAoaXNzdWUgIzE4NjcpXG4gICAgICAgICAgICBkYXlzID0gdGhpcy5fZGF5cyArIE1hdGgucm91bmQobW9udGhzVG9EYXlzKHRoaXMuX21vbnRocykpO1xuICAgICAgICAgICAgc3dpdGNoICh1bml0cykge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF5cyAvIDcgKyBtaWxsaXNlY29uZHMgLyA2MDQ4ZTU7XG4gICAgICAgICAgICAgICAgY2FzZSAnZGF5JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRheXMgKyBtaWxsaXNlY29uZHMgLyA4NjRlNTtcbiAgICAgICAgICAgICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRheXMgKiAyNCArIG1pbGxpc2Vjb25kcyAvIDM2ZTU7XG4gICAgICAgICAgICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRheXMgKiAxNDQwICsgbWlsbGlzZWNvbmRzIC8gNmU0O1xuICAgICAgICAgICAgICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXlzICogODY0MDAgKyBtaWxsaXNlY29uZHMgLyAxMDAwO1xuICAgICAgICAgICAgICAgIC8vIE1hdGguZmxvb3IgcHJldmVudHMgZmxvYXRpbmcgcG9pbnQgbWF0aCBlcnJvcnMgaGVyZVxuICAgICAgICAgICAgICAgIGNhc2UgJ21pbGxpc2Vjb25kJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoZGF5cyAqIDg2NGU1KSArIG1pbGxpc2Vjb25kcztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gdW5pdCAnICsgdW5pdHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ETzogVXNlIHRoaXMuYXMoJ21zJyk/XG4gICAgZnVuY3Rpb24gdmFsdWVPZiQxKCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLl9taWxsaXNlY29uZHMgK1xuICAgICAgICAgICAgdGhpcy5fZGF5cyAqIDg2NGU1ICtcbiAgICAgICAgICAgICh0aGlzLl9tb250aHMgJSAxMikgKiAyNTkyZTYgK1xuICAgICAgICAgICAgdG9JbnQodGhpcy5fbW9udGhzIC8gMTIpICogMzE1MzZlNlxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VBcyhhbGlhcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXMoYWxpYXMpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciBhc01pbGxpc2Vjb25kcyA9IG1ha2VBcygnbXMnKSxcbiAgICAgICAgYXNTZWNvbmRzID0gbWFrZUFzKCdzJyksXG4gICAgICAgIGFzTWludXRlcyA9IG1ha2VBcygnbScpLFxuICAgICAgICBhc0hvdXJzID0gbWFrZUFzKCdoJyksXG4gICAgICAgIGFzRGF5cyA9IG1ha2VBcygnZCcpLFxuICAgICAgICBhc1dlZWtzID0gbWFrZUFzKCd3JyksXG4gICAgICAgIGFzTW9udGhzID0gbWFrZUFzKCdNJyksXG4gICAgICAgIGFzUXVhcnRlcnMgPSBtYWtlQXMoJ1EnKSxcbiAgICAgICAgYXNZZWFycyA9IG1ha2VBcygneScpO1xuXG4gICAgZnVuY3Rpb24gY2xvbmUkMSgpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKHRoaXMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldCQyKHVuaXRzKSB7XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzW3VuaXRzICsgJ3MnXSgpIDogTmFOO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VHZXR0ZXIobmFtZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpcy5fZGF0YVtuYW1lXSA6IE5hTjtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgbWlsbGlzZWNvbmRzID0gbWFrZUdldHRlcignbWlsbGlzZWNvbmRzJyksXG4gICAgICAgIHNlY29uZHMgPSBtYWtlR2V0dGVyKCdzZWNvbmRzJyksXG4gICAgICAgIG1pbnV0ZXMgPSBtYWtlR2V0dGVyKCdtaW51dGVzJyksXG4gICAgICAgIGhvdXJzID0gbWFrZUdldHRlcignaG91cnMnKSxcbiAgICAgICAgZGF5cyA9IG1ha2VHZXR0ZXIoJ2RheXMnKSxcbiAgICAgICAgbW9udGhzID0gbWFrZUdldHRlcignbW9udGhzJyksXG4gICAgICAgIHllYXJzID0gbWFrZUdldHRlcigneWVhcnMnKTtcblxuICAgIGZ1bmN0aW9uIHdlZWtzKCkge1xuICAgICAgICByZXR1cm4gYWJzRmxvb3IodGhpcy5kYXlzKCkgLyA3KTtcbiAgICB9XG5cbiAgICB2YXIgcm91bmQgPSBNYXRoLnJvdW5kLFxuICAgICAgICB0aHJlc2hvbGRzID0ge1xuICAgICAgICAgICAgc3M6IDQ0LCAvLyBhIGZldyBzZWNvbmRzIHRvIHNlY29uZHNcbiAgICAgICAgICAgIHM6IDQ1LCAvLyBzZWNvbmRzIHRvIG1pbnV0ZVxuICAgICAgICAgICAgbTogNDUsIC8vIG1pbnV0ZXMgdG8gaG91clxuICAgICAgICAgICAgaDogMjIsIC8vIGhvdXJzIHRvIGRheVxuICAgICAgICAgICAgZDogMjYsIC8vIGRheXMgdG8gbW9udGgvd2Vla1xuICAgICAgICAgICAgdzogbnVsbCwgLy8gd2Vla3MgdG8gbW9udGhcbiAgICAgICAgICAgIE06IDExLCAvLyBtb250aHMgdG8geWVhclxuICAgICAgICB9O1xuXG4gICAgLy8gaGVscGVyIGZ1bmN0aW9uIGZvciBtb21lbnQuZm4uZnJvbSwgbW9tZW50LmZuLmZyb21Ob3csIGFuZCBtb21lbnQuZHVyYXRpb24uZm4uaHVtYW5pemVcbiAgICBmdW5jdGlvbiBzdWJzdGl0dXRlVGltZUFnbyhzdHJpbmcsIG51bWJlciwgd2l0aG91dFN1ZmZpeCwgaXNGdXR1cmUsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLnJlbGF0aXZlVGltZShudW1iZXIgfHwgMSwgISF3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWUkMShwb3NOZWdEdXJhdGlvbiwgd2l0aG91dFN1ZmZpeCwgdGhyZXNob2xkcywgbG9jYWxlKSB7XG4gICAgICAgIHZhciBkdXJhdGlvbiA9IGNyZWF0ZUR1cmF0aW9uKHBvc05lZ0R1cmF0aW9uKS5hYnMoKSxcbiAgICAgICAgICAgIHNlY29uZHMgPSByb3VuZChkdXJhdGlvbi5hcygncycpKSxcbiAgICAgICAgICAgIG1pbnV0ZXMgPSByb3VuZChkdXJhdGlvbi5hcygnbScpKSxcbiAgICAgICAgICAgIGhvdXJzID0gcm91bmQoZHVyYXRpb24uYXMoJ2gnKSksXG4gICAgICAgICAgICBkYXlzID0gcm91bmQoZHVyYXRpb24uYXMoJ2QnKSksXG4gICAgICAgICAgICBtb250aHMgPSByb3VuZChkdXJhdGlvbi5hcygnTScpKSxcbiAgICAgICAgICAgIHdlZWtzID0gcm91bmQoZHVyYXRpb24uYXMoJ3cnKSksXG4gICAgICAgICAgICB5ZWFycyA9IHJvdW5kKGR1cmF0aW9uLmFzKCd5JykpLFxuICAgICAgICAgICAgYSA9XG4gICAgICAgICAgICAgICAgKHNlY29uZHMgPD0gdGhyZXNob2xkcy5zcyAmJiBbJ3MnLCBzZWNvbmRzXSkgfHxcbiAgICAgICAgICAgICAgICAoc2Vjb25kcyA8IHRocmVzaG9sZHMucyAmJiBbJ3NzJywgc2Vjb25kc10pIHx8XG4gICAgICAgICAgICAgICAgKG1pbnV0ZXMgPD0gMSAmJiBbJ20nXSkgfHxcbiAgICAgICAgICAgICAgICAobWludXRlcyA8IHRocmVzaG9sZHMubSAmJiBbJ21tJywgbWludXRlc10pIHx8XG4gICAgICAgICAgICAgICAgKGhvdXJzIDw9IDEgJiYgWydoJ10pIHx8XG4gICAgICAgICAgICAgICAgKGhvdXJzIDwgdGhyZXNob2xkcy5oICYmIFsnaGgnLCBob3Vyc10pIHx8XG4gICAgICAgICAgICAgICAgKGRheXMgPD0gMSAmJiBbJ2QnXSkgfHxcbiAgICAgICAgICAgICAgICAoZGF5cyA8IHRocmVzaG9sZHMuZCAmJiBbJ2RkJywgZGF5c10pO1xuXG4gICAgICAgIGlmICh0aHJlc2hvbGRzLncgIT0gbnVsbCkge1xuICAgICAgICAgICAgYSA9XG4gICAgICAgICAgICAgICAgYSB8fFxuICAgICAgICAgICAgICAgICh3ZWVrcyA8PSAxICYmIFsndyddKSB8fFxuICAgICAgICAgICAgICAgICh3ZWVrcyA8IHRocmVzaG9sZHMudyAmJiBbJ3d3Jywgd2Vla3NdKTtcbiAgICAgICAgfVxuICAgICAgICBhID0gYSB8fFxuICAgICAgICAgICAgKG1vbnRocyA8PSAxICYmIFsnTSddKSB8fFxuICAgICAgICAgICAgKG1vbnRocyA8IHRocmVzaG9sZHMuTSAmJiBbJ01NJywgbW9udGhzXSkgfHxcbiAgICAgICAgICAgICh5ZWFycyA8PSAxICYmIFsneSddKSB8fCBbJ3l5JywgeWVhcnNdO1xuXG4gICAgICAgIGFbMl0gPSB3aXRob3V0U3VmZml4O1xuICAgICAgICBhWzNdID0gK3Bvc05lZ0R1cmF0aW9uID4gMDtcbiAgICAgICAgYVs0XSA9IGxvY2FsZTtcbiAgICAgICAgcmV0dXJuIHN1YnN0aXR1dGVUaW1lQWdvLmFwcGx5KG51bGwsIGEpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSB0byBzZXQgdGhlIHJvdW5kaW5nIGZ1bmN0aW9uIGZvciByZWxhdGl2ZSB0aW1lIHN0cmluZ3NcbiAgICBmdW5jdGlvbiBnZXRTZXRSZWxhdGl2ZVRpbWVSb3VuZGluZyhyb3VuZGluZ0Z1bmN0aW9uKSB7XG4gICAgICAgIGlmIChyb3VuZGluZ0Z1bmN0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiByb3VuZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHJvdW5kaW5nRnVuY3Rpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJvdW5kID0gcm91bmRpbmdGdW5jdGlvbjtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIGFsbG93cyB5b3UgdG8gc2V0IGEgdGhyZXNob2xkIGZvciByZWxhdGl2ZSB0aW1lIHN0cmluZ3NcbiAgICBmdW5jdGlvbiBnZXRTZXRSZWxhdGl2ZVRpbWVUaHJlc2hvbGQodGhyZXNob2xkLCBsaW1pdCkge1xuICAgICAgICBpZiAodGhyZXNob2xkc1t0aHJlc2hvbGRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGltaXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRocmVzaG9sZHNbdGhyZXNob2xkXTtcbiAgICAgICAgfVxuICAgICAgICB0aHJlc2hvbGRzW3RocmVzaG9sZF0gPSBsaW1pdDtcbiAgICAgICAgaWYgKHRocmVzaG9sZCA9PT0gJ3MnKSB7XG4gICAgICAgICAgICB0aHJlc2hvbGRzLnNzID0gbGltaXQgLSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGh1bWFuaXplKGFyZ1dpdGhTdWZmaXgsIGFyZ1RocmVzaG9sZHMpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgd2l0aFN1ZmZpeCA9IGZhbHNlLFxuICAgICAgICAgICAgdGggPSB0aHJlc2hvbGRzLFxuICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgb3V0cHV0O1xuXG4gICAgICAgIGlmICh0eXBlb2YgYXJnV2l0aFN1ZmZpeCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGFyZ1RocmVzaG9sZHMgPSBhcmdXaXRoU3VmZml4O1xuICAgICAgICAgICAgYXJnV2l0aFN1ZmZpeCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgYXJnV2l0aFN1ZmZpeCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICB3aXRoU3VmZml4ID0gYXJnV2l0aFN1ZmZpeDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGFyZ1RocmVzaG9sZHMgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICB0aCA9IE9iamVjdC5hc3NpZ24oe30sIHRocmVzaG9sZHMsIGFyZ1RocmVzaG9sZHMpO1xuICAgICAgICAgICAgaWYgKGFyZ1RocmVzaG9sZHMucyAhPSBudWxsICYmIGFyZ1RocmVzaG9sZHMuc3MgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoLnNzID0gYXJnVGhyZXNob2xkcy5zIC0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxvY2FsZSA9IHRoaXMubG9jYWxlRGF0YSgpO1xuICAgICAgICBvdXRwdXQgPSByZWxhdGl2ZVRpbWUkMSh0aGlzLCAhd2l0aFN1ZmZpeCwgdGgsIGxvY2FsZSk7XG5cbiAgICAgICAgaWYgKHdpdGhTdWZmaXgpIHtcbiAgICAgICAgICAgIG91dHB1dCA9IGxvY2FsZS5wYXN0RnV0dXJlKCt0aGlzLCBvdXRwdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxvY2FsZS5wb3N0Zm9ybWF0KG91dHB1dCk7XG4gICAgfVxuXG4gICAgdmFyIGFicyQxID0gTWF0aC5hYnM7XG5cbiAgICBmdW5jdGlvbiBzaWduKHgpIHtcbiAgICAgICAgcmV0dXJuICh4ID4gMCkgLSAoeCA8IDApIHx8ICt4O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvSVNPU3RyaW5nJDEoKSB7XG4gICAgICAgIC8vIGZvciBJU08gc3RyaW5ncyB3ZSBkbyBub3QgdXNlIHRoZSBub3JtYWwgYnViYmxpbmcgcnVsZXM6XG4gICAgICAgIC8vICAqIG1pbGxpc2Vjb25kcyBidWJibGUgdXAgdW50aWwgdGhleSBiZWNvbWUgaG91cnNcbiAgICAgICAgLy8gICogZGF5cyBkbyBub3QgYnViYmxlIGF0IGFsbFxuICAgICAgICAvLyAgKiBtb250aHMgYnViYmxlIHVwIHVudGlsIHRoZXkgYmVjb21lIHllYXJzXG4gICAgICAgIC8vIFRoaXMgaXMgYmVjYXVzZSB0aGVyZSBpcyBubyBjb250ZXh0LWZyZWUgY29udmVyc2lvbiBiZXR3ZWVuIGhvdXJzIGFuZCBkYXlzXG4gICAgICAgIC8vICh0aGluayBvZiBjbG9jayBjaGFuZ2VzKVxuICAgICAgICAvLyBhbmQgYWxzbyBub3QgYmV0d2VlbiBkYXlzIGFuZCBtb250aHMgKDI4LTMxIGRheXMgcGVyIG1vbnRoKVxuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzZWNvbmRzID0gYWJzJDEodGhpcy5fbWlsbGlzZWNvbmRzKSAvIDEwMDAsXG4gICAgICAgICAgICBkYXlzID0gYWJzJDEodGhpcy5fZGF5cyksXG4gICAgICAgICAgICBtb250aHMgPSBhYnMkMSh0aGlzLl9tb250aHMpLFxuICAgICAgICAgICAgbWludXRlcyxcbiAgICAgICAgICAgIGhvdXJzLFxuICAgICAgICAgICAgeWVhcnMsXG4gICAgICAgICAgICBzLFxuICAgICAgICAgICAgdG90YWwgPSB0aGlzLmFzU2Vjb25kcygpLFxuICAgICAgICAgICAgdG90YWxTaWduLFxuICAgICAgICAgICAgeW1TaWduLFxuICAgICAgICAgICAgZGF5c1NpZ24sXG4gICAgICAgICAgICBobXNTaWduO1xuXG4gICAgICAgIGlmICghdG90YWwpIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgdGhlIHNhbWUgYXMgQyMncyAoTm9kYSkgYW5kIHB5dGhvbiAoaXNvZGF0ZSkuLi5cbiAgICAgICAgICAgIC8vIGJ1dCBub3Qgb3RoZXIgSlMgKGdvb2cuZGF0ZSlcbiAgICAgICAgICAgIHJldHVybiAnUDBEJztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDM2MDAgc2Vjb25kcyAtPiA2MCBtaW51dGVzIC0+IDEgaG91clxuICAgICAgICBtaW51dGVzID0gYWJzRmxvb3Ioc2Vjb25kcyAvIDYwKTtcbiAgICAgICAgaG91cnMgPSBhYnNGbG9vcihtaW51dGVzIC8gNjApO1xuICAgICAgICBzZWNvbmRzICU9IDYwO1xuICAgICAgICBtaW51dGVzICU9IDYwO1xuXG4gICAgICAgIC8vIDEyIG1vbnRocyAtPiAxIHllYXJcbiAgICAgICAgeWVhcnMgPSBhYnNGbG9vcihtb250aHMgLyAxMik7XG4gICAgICAgIG1vbnRocyAlPSAxMjtcblxuICAgICAgICAvLyBpbnNwaXJlZCBieSBodHRwczovL2dpdGh1Yi5jb20vZG9yZGlsbGUvbW9tZW50LWlzb2R1cmF0aW9uL2Jsb2IvbWFzdGVyL21vbWVudC5pc29kdXJhdGlvbi5qc1xuICAgICAgICBzID0gc2Vjb25kcyA/IHNlY29uZHMudG9GaXhlZCgzKS5yZXBsYWNlKC9cXC4/MCskLywgJycpIDogJyc7XG5cbiAgICAgICAgdG90YWxTaWduID0gdG90YWwgPCAwID8gJy0nIDogJyc7XG4gICAgICAgIHltU2lnbiA9IHNpZ24odGhpcy5fbW9udGhzKSAhPT0gc2lnbih0b3RhbCkgPyAnLScgOiAnJztcbiAgICAgICAgZGF5c1NpZ24gPSBzaWduKHRoaXMuX2RheXMpICE9PSBzaWduKHRvdGFsKSA/ICctJyA6ICcnO1xuICAgICAgICBobXNTaWduID0gc2lnbih0aGlzLl9taWxsaXNlY29uZHMpICE9PSBzaWduKHRvdGFsKSA/ICctJyA6ICcnO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0b3RhbFNpZ24gK1xuICAgICAgICAgICAgJ1AnICtcbiAgICAgICAgICAgICh5ZWFycyA/IHltU2lnbiArIHllYXJzICsgJ1knIDogJycpICtcbiAgICAgICAgICAgIChtb250aHMgPyB5bVNpZ24gKyBtb250aHMgKyAnTScgOiAnJykgK1xuICAgICAgICAgICAgKGRheXMgPyBkYXlzU2lnbiArIGRheXMgKyAnRCcgOiAnJykgK1xuICAgICAgICAgICAgKGhvdXJzIHx8IG1pbnV0ZXMgfHwgc2Vjb25kcyA/ICdUJyA6ICcnKSArXG4gICAgICAgICAgICAoaG91cnMgPyBobXNTaWduICsgaG91cnMgKyAnSCcgOiAnJykgK1xuICAgICAgICAgICAgKG1pbnV0ZXMgPyBobXNTaWduICsgbWludXRlcyArICdNJyA6ICcnKSArXG4gICAgICAgICAgICAoc2Vjb25kcyA/IGhtc1NpZ24gKyBzICsgJ1MnIDogJycpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdmFyIHByb3RvJDIgPSBEdXJhdGlvbi5wcm90b3R5cGU7XG5cbiAgICBwcm90byQyLmlzVmFsaWQgPSBpc1ZhbGlkJDE7XG4gICAgcHJvdG8kMi5hYnMgPSBhYnM7XG4gICAgcHJvdG8kMi5hZGQgPSBhZGQkMTtcbiAgICBwcm90byQyLnN1YnRyYWN0ID0gc3VidHJhY3QkMTtcbiAgICBwcm90byQyLmFzID0gYXM7XG4gICAgcHJvdG8kMi5hc01pbGxpc2Vjb25kcyA9IGFzTWlsbGlzZWNvbmRzO1xuICAgIHByb3RvJDIuYXNTZWNvbmRzID0gYXNTZWNvbmRzO1xuICAgIHByb3RvJDIuYXNNaW51dGVzID0gYXNNaW51dGVzO1xuICAgIHByb3RvJDIuYXNIb3VycyA9IGFzSG91cnM7XG4gICAgcHJvdG8kMi5hc0RheXMgPSBhc0RheXM7XG4gICAgcHJvdG8kMi5hc1dlZWtzID0gYXNXZWVrcztcbiAgICBwcm90byQyLmFzTW9udGhzID0gYXNNb250aHM7XG4gICAgcHJvdG8kMi5hc1F1YXJ0ZXJzID0gYXNRdWFydGVycztcbiAgICBwcm90byQyLmFzWWVhcnMgPSBhc1llYXJzO1xuICAgIHByb3RvJDIudmFsdWVPZiA9IHZhbHVlT2YkMTtcbiAgICBwcm90byQyLl9idWJibGUgPSBidWJibGU7XG4gICAgcHJvdG8kMi5jbG9uZSA9IGNsb25lJDE7XG4gICAgcHJvdG8kMi5nZXQgPSBnZXQkMjtcbiAgICBwcm90byQyLm1pbGxpc2Vjb25kcyA9IG1pbGxpc2Vjb25kcztcbiAgICBwcm90byQyLnNlY29uZHMgPSBzZWNvbmRzO1xuICAgIHByb3RvJDIubWludXRlcyA9IG1pbnV0ZXM7XG4gICAgcHJvdG8kMi5ob3VycyA9IGhvdXJzO1xuICAgIHByb3RvJDIuZGF5cyA9IGRheXM7XG4gICAgcHJvdG8kMi53ZWVrcyA9IHdlZWtzO1xuICAgIHByb3RvJDIubW9udGhzID0gbW9udGhzO1xuICAgIHByb3RvJDIueWVhcnMgPSB5ZWFycztcbiAgICBwcm90byQyLmh1bWFuaXplID0gaHVtYW5pemU7XG4gICAgcHJvdG8kMi50b0lTT1N0cmluZyA9IHRvSVNPU3RyaW5nJDE7XG4gICAgcHJvdG8kMi50b1N0cmluZyA9IHRvSVNPU3RyaW5nJDE7XG4gICAgcHJvdG8kMi50b0pTT04gPSB0b0lTT1N0cmluZyQxO1xuICAgIHByb3RvJDIubG9jYWxlID0gbG9jYWxlO1xuICAgIHByb3RvJDIubG9jYWxlRGF0YSA9IGxvY2FsZURhdGE7XG5cbiAgICBwcm90byQyLnRvSXNvU3RyaW5nID0gZGVwcmVjYXRlKFxuICAgICAgICAndG9Jc29TdHJpbmcoKSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIHRvSVNPU3RyaW5nKCkgaW5zdGVhZCAobm90aWNlIHRoZSBjYXBpdGFscyknLFxuICAgICAgICB0b0lTT1N0cmluZyQxXG4gICAgKTtcbiAgICBwcm90byQyLmxhbmcgPSBsYW5nO1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ1gnLCAwLCAwLCAndW5peCcpO1xuICAgIGFkZEZvcm1hdFRva2VuKCd4JywgMCwgMCwgJ3ZhbHVlT2YnKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ3gnLCBtYXRjaFNpZ25lZCk7XG4gICAgYWRkUmVnZXhUb2tlbignWCcsIG1hdGNoVGltZXN0YW1wKTtcbiAgICBhZGRQYXJzZVRva2VuKCdYJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKHBhcnNlRmxvYXQoaW5wdXQpICogMTAwMCk7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbigneCcsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZSh0b0ludChpbnB1dCkpO1xuICAgIH0pO1xuXG4gICAgLy8hIG1vbWVudC5qc1xuXG4gICAgaG9va3MudmVyc2lvbiA9ICcyLjI5LjQnO1xuXG4gICAgc2V0SG9va0NhbGxiYWNrKGNyZWF0ZUxvY2FsKTtcblxuICAgIGhvb2tzLmZuID0gcHJvdG87XG4gICAgaG9va3MubWluID0gbWluO1xuICAgIGhvb2tzLm1heCA9IG1heDtcbiAgICBob29rcy5ub3cgPSBub3c7XG4gICAgaG9va3MudXRjID0gY3JlYXRlVVRDO1xuICAgIGhvb2tzLnVuaXggPSBjcmVhdGVVbml4O1xuICAgIGhvb2tzLm1vbnRocyA9IGxpc3RNb250aHM7XG4gICAgaG9va3MuaXNEYXRlID0gaXNEYXRlO1xuICAgIGhvb2tzLmxvY2FsZSA9IGdldFNldEdsb2JhbExvY2FsZTtcbiAgICBob29rcy5pbnZhbGlkID0gY3JlYXRlSW52YWxpZDtcbiAgICBob29rcy5kdXJhdGlvbiA9IGNyZWF0ZUR1cmF0aW9uO1xuICAgIGhvb2tzLmlzTW9tZW50ID0gaXNNb21lbnQ7XG4gICAgaG9va3Mud2Vla2RheXMgPSBsaXN0V2Vla2RheXM7XG4gICAgaG9va3MucGFyc2Vab25lID0gY3JlYXRlSW5ab25lO1xuICAgIGhvb2tzLmxvY2FsZURhdGEgPSBnZXRMb2NhbGU7XG4gICAgaG9va3MuaXNEdXJhdGlvbiA9IGlzRHVyYXRpb247XG4gICAgaG9va3MubW9udGhzU2hvcnQgPSBsaXN0TW9udGhzU2hvcnQ7XG4gICAgaG9va3Mud2Vla2RheXNNaW4gPSBsaXN0V2Vla2RheXNNaW47XG4gICAgaG9va3MuZGVmaW5lTG9jYWxlID0gZGVmaW5lTG9jYWxlO1xuICAgIGhvb2tzLnVwZGF0ZUxvY2FsZSA9IHVwZGF0ZUxvY2FsZTtcbiAgICBob29rcy5sb2NhbGVzID0gbGlzdExvY2FsZXM7XG4gICAgaG9va3Mud2Vla2RheXNTaG9ydCA9IGxpc3RXZWVrZGF5c1Nob3J0O1xuICAgIGhvb2tzLm5vcm1hbGl6ZVVuaXRzID0gbm9ybWFsaXplVW5pdHM7XG4gICAgaG9va3MucmVsYXRpdmVUaW1lUm91bmRpbmcgPSBnZXRTZXRSZWxhdGl2ZVRpbWVSb3VuZGluZztcbiAgICBob29rcy5yZWxhdGl2ZVRpbWVUaHJlc2hvbGQgPSBnZXRTZXRSZWxhdGl2ZVRpbWVUaHJlc2hvbGQ7XG4gICAgaG9va3MuY2FsZW5kYXJGb3JtYXQgPSBnZXRDYWxlbmRhckZvcm1hdDtcbiAgICBob29rcy5wcm90b3R5cGUgPSBwcm90bztcblxuICAgIC8vIGN1cnJlbnRseSBIVE1MNSBpbnB1dCB0eXBlIG9ubHkgc3VwcG9ydHMgMjQtaG91ciBmb3JtYXRzXG4gICAgaG9va3MuSFRNTDVfRk1UID0ge1xuICAgICAgICBEQVRFVElNRV9MT0NBTDogJ1lZWVktTU0tRERUSEg6bW0nLCAvLyA8aW5wdXQgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgLz5cbiAgICAgICAgREFURVRJTUVfTE9DQUxfU0VDT05EUzogJ1lZWVktTU0tRERUSEg6bW06c3MnLCAvLyA8aW5wdXQgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgc3RlcD1cIjFcIiAvPlxuICAgICAgICBEQVRFVElNRV9MT0NBTF9NUzogJ1lZWVktTU0tRERUSEg6bW06c3MuU1NTJywgLy8gPGlucHV0IHR5cGU9XCJkYXRldGltZS1sb2NhbFwiIHN0ZXA9XCIwLjAwMVwiIC8+XG4gICAgICAgIERBVEU6ICdZWVlZLU1NLUREJywgLy8gPGlucHV0IHR5cGU9XCJkYXRlXCIgLz5cbiAgICAgICAgVElNRTogJ0hIOm1tJywgLy8gPGlucHV0IHR5cGU9XCJ0aW1lXCIgLz5cbiAgICAgICAgVElNRV9TRUNPTkRTOiAnSEg6bW06c3MnLCAvLyA8aW5wdXQgdHlwZT1cInRpbWVcIiBzdGVwPVwiMVwiIC8+XG4gICAgICAgIFRJTUVfTVM6ICdISDptbTpzcy5TU1MnLCAvLyA8aW5wdXQgdHlwZT1cInRpbWVcIiBzdGVwPVwiMC4wMDFcIiAvPlxuICAgICAgICBXRUVLOiAnR0dHRy1bV11XVycsIC8vIDxpbnB1dCB0eXBlPVwid2Vla1wiIC8+XG4gICAgICAgIE1PTlRIOiAnWVlZWS1NTScsIC8vIDxpbnB1dCB0eXBlPVwibW9udGhcIiAvPlxuICAgIH07XG5cbiAgICByZXR1cm4gaG9va3M7XG5cbn0pKSk7XG4iLCIvLyBzaGltIGZvciB1c2luZyBwcm9jZXNzIGluIGJyb3dzZXJcbnZhciBwcm9jZXNzID0gbW9kdWxlLmV4cG9ydHMgPSB7fTtcblxuLy8gY2FjaGVkIGZyb20gd2hhdGV2ZXIgZ2xvYmFsIGlzIHByZXNlbnQgc28gdGhhdCB0ZXN0IHJ1bm5lcnMgdGhhdCBzdHViIGl0XG4vLyBkb24ndCBicmVhayB0aGluZ3MuICBCdXQgd2UgbmVlZCB0byB3cmFwIGl0IGluIGEgdHJ5IGNhdGNoIGluIGNhc2UgaXQgaXNcbi8vIHdyYXBwZWQgaW4gc3RyaWN0IG1vZGUgY29kZSB3aGljaCBkb2Vzbid0IGRlZmluZSBhbnkgZ2xvYmFscy4gIEl0J3MgaW5zaWRlIGFcbi8vIGZ1bmN0aW9uIGJlY2F1c2UgdHJ5L2NhdGNoZXMgZGVvcHRpbWl6ZSBpbiBjZXJ0YWluIGVuZ2luZXMuXG5cbnZhciBjYWNoZWRTZXRUaW1lb3V0O1xudmFyIGNhY2hlZENsZWFyVGltZW91dDtcblxuZnVuY3Rpb24gZGVmYXVsdFNldFRpbW91dCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbmZ1bmN0aW9uIGRlZmF1bHRDbGVhclRpbWVvdXQgKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG4oZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2V0VGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2YgY2xlYXJUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuICAgIH1cbn0gKCkpXG5mdW5jdGlvbiBydW5UaW1lb3V0KGZ1bikge1xuICAgIGlmIChjYWNoZWRTZXRUaW1lb3V0ID09PSBzZXRUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICAvLyBpZiBzZXRUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkU2V0VGltZW91dCA9PT0gZGVmYXVsdFNldFRpbW91dCB8fCAhY2FjaGVkU2V0VGltZW91dCkgJiYgc2V0VGltZW91dCkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dChmdW4sIDApO1xuICAgIH0gY2F0Y2goZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwobnVsbCwgZnVuLCAwKTtcbiAgICAgICAgfSBjYXRjaChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yXG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKHRoaXMsIGZ1biwgMCk7XG4gICAgICAgIH1cbiAgICB9XG5cblxufVxuZnVuY3Rpb24gcnVuQ2xlYXJUaW1lb3V0KG1hcmtlcikge1xuICAgIGlmIChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGNsZWFyVGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICAvLyBpZiBjbGVhclRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGRlZmF1bHRDbGVhclRpbWVvdXQgfHwgIWNhY2hlZENsZWFyVGltZW91dCkgJiYgY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCAgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbChudWxsLCBtYXJrZXIpO1xuICAgICAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yLlxuICAgICAgICAgICAgLy8gU29tZSB2ZXJzaW9ucyBvZiBJLkUuIGhhdmUgZGlmZmVyZW50IHJ1bGVzIGZvciBjbGVhclRpbWVvdXQgdnMgc2V0VGltZW91dFxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKHRoaXMsIG1hcmtlcik7XG4gICAgICAgIH1cbiAgICB9XG5cblxuXG59XG52YXIgcXVldWUgPSBbXTtcbnZhciBkcmFpbmluZyA9IGZhbHNlO1xudmFyIGN1cnJlbnRRdWV1ZTtcbnZhciBxdWV1ZUluZGV4ID0gLTE7XG5cbmZ1bmN0aW9uIGNsZWFuVXBOZXh0VGljaygpIHtcbiAgICBpZiAoIWRyYWluaW5nIHx8ICFjdXJyZW50UXVldWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIGlmIChjdXJyZW50UXVldWUubGVuZ3RoKSB7XG4gICAgICAgIHF1ZXVlID0gY3VycmVudFF1ZXVlLmNvbmNhdChxdWV1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgIH1cbiAgICBpZiAocXVldWUubGVuZ3RoKSB7XG4gICAgICAgIGRyYWluUXVldWUoKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRyYWluUXVldWUoKSB7XG4gICAgaWYgKGRyYWluaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHRpbWVvdXQgPSBydW5UaW1lb3V0KGNsZWFuVXBOZXh0VGljayk7XG4gICAgZHJhaW5pbmcgPSB0cnVlO1xuXG4gICAgdmFyIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB3aGlsZShsZW4pIHtcbiAgICAgICAgY3VycmVudFF1ZXVlID0gcXVldWU7XG4gICAgICAgIHF1ZXVlID0gW107XG4gICAgICAgIHdoaWxlICgrK3F1ZXVlSW5kZXggPCBsZW4pIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50UXVldWUpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50UXVldWVbcXVldWVJbmRleF0ucnVuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgICAgICBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgfVxuICAgIGN1cnJlbnRRdWV1ZSA9IG51bGw7XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBydW5DbGVhclRpbWVvdXQodGltZW91dCk7XG59XG5cbnByb2Nlc3MubmV4dFRpY2sgPSBmdW5jdGlvbiAoZnVuKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCAtIDEpO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcXVldWUucHVzaChuZXcgSXRlbShmdW4sIGFyZ3MpKTtcbiAgICBpZiAocXVldWUubGVuZ3RoID09PSAxICYmICFkcmFpbmluZykge1xuICAgICAgICBydW5UaW1lb3V0KGRyYWluUXVldWUpO1xuICAgIH1cbn07XG5cbi8vIHY4IGxpa2VzIHByZWRpY3RpYmxlIG9iamVjdHNcbmZ1bmN0aW9uIEl0ZW0oZnVuLCBhcnJheSkge1xuICAgIHRoaXMuZnVuID0gZnVuO1xuICAgIHRoaXMuYXJyYXkgPSBhcnJheTtcbn1cbkl0ZW0ucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZ1bi5hcHBseShudWxsLCB0aGlzLmFycmF5KTtcbn07XG5wcm9jZXNzLnRpdGxlID0gJ2Jyb3dzZXInO1xucHJvY2Vzcy5icm93c2VyID0gdHJ1ZTtcbnByb2Nlc3MuZW52ID0ge307XG5wcm9jZXNzLmFyZ3YgPSBbXTtcbnByb2Nlc3MudmVyc2lvbiA9ICcnOyAvLyBlbXB0eSBzdHJpbmcgdG8gYXZvaWQgcmVnZXhwIGlzc3Vlc1xucHJvY2Vzcy52ZXJzaW9ucyA9IHt9O1xuXG5mdW5jdGlvbiBub29wKCkge31cblxucHJvY2Vzcy5vbiA9IG5vb3A7XG5wcm9jZXNzLmFkZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3Mub25jZSA9IG5vb3A7XG5wcm9jZXNzLm9mZiA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUxpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzID0gbm9vcDtcbnByb2Nlc3MuZW1pdCA9IG5vb3A7XG5wcm9jZXNzLnByZXBlbmRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnByZXBlbmRPbmNlTGlzdGVuZXIgPSBub29wO1xuXG5wcm9jZXNzLmxpc3RlbmVycyA9IGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiBbXSB9XG5cbnByb2Nlc3MuYmluZGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcblxucHJvY2Vzcy5jd2QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnLycgfTtcbnByb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZGlyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5wcm9jZXNzLnVtYXNrID0gZnVuY3Rpb24oKSB7IHJldHVybiAwOyB9O1xuIiwiLyohXG4gKiBTZWxlY3QyIDQuMS4wLXJjLjBcbiAqIGh0dHBzOi8vc2VsZWN0Mi5naXRodWIuaW9cbiAqXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2VcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9zZWxlY3QyL3NlbGVjdDIvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZFxuICovXG47KGZ1bmN0aW9uIChmYWN0b3J5KSB7XG4gIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcbiAgICAvLyBBTUQuIFJlZ2lzdGVyIGFzIGFuIGFub255bW91cyBtb2R1bGUuXG4gICAgZGVmaW5lKFsnanF1ZXJ5J10sIGZhY3RvcnkpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7XG4gICAgLy8gTm9kZS9Db21tb25KU1xuICAgIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHJvb3QsIGpRdWVyeSkge1xuICAgICAgaWYgKGpRdWVyeSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIHJlcXVpcmUoJ2pRdWVyeScpIHJldHVybnMgYSBmYWN0b3J5IHRoYXQgcmVxdWlyZXMgd2luZG93IHRvXG4gICAgICAgIC8vIGJ1aWxkIGEgalF1ZXJ5IGluc3RhbmNlLCB3ZSBub3JtYWxpemUgaG93IHdlIHVzZSBtb2R1bGVzXG4gICAgICAgIC8vIHRoYXQgcmVxdWlyZSB0aGlzIHBhdHRlcm4gYnV0IHRoZSB3aW5kb3cgcHJvdmlkZWQgaXMgYSBub29wXG4gICAgICAgIC8vIGlmIGl0J3MgZGVmaW5lZCAoaG93IGpxdWVyeSB3b3JrcylcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgalF1ZXJ5ID0gcmVxdWlyZSgnanF1ZXJ5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgalF1ZXJ5ID0gcmVxdWlyZSgnanF1ZXJ5Jykocm9vdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZhY3RvcnkoalF1ZXJ5KTtcbiAgICAgIHJldHVybiBqUXVlcnk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICAvLyBCcm93c2VyIGdsb2JhbHNcbiAgICBmYWN0b3J5KGpRdWVyeSk7XG4gIH1cbn0gKGZ1bmN0aW9uIChqUXVlcnkpIHtcbiAgLy8gVGhpcyBpcyBuZWVkZWQgc28gd2UgY2FuIGNhdGNoIHRoZSBBTUQgbG9hZGVyIGNvbmZpZ3VyYXRpb24gYW5kIHVzZSBpdFxuICAvLyBUaGUgaW5uZXIgZmlsZSBzaG91bGQgYmUgd3JhcHBlZCAoYnkgYGJhbm5lci5zdGFydC5qc2ApIGluIGEgZnVuY3Rpb24gdGhhdFxuICAvLyByZXR1cm5zIHRoZSBBTUQgbG9hZGVyIHJlZmVyZW5jZXMuXG4gIHZhciBTMiA9KGZ1bmN0aW9uICgpIHtcbiAgLy8gUmVzdG9yZSB0aGUgU2VsZWN0MiBBTUQgbG9hZGVyIHNvIGl0IGNhbiBiZSB1c2VkXG4gIC8vIE5lZWRlZCBtb3N0bHkgaW4gdGhlIGxhbmd1YWdlIGZpbGVzLCB3aGVyZSB0aGUgbG9hZGVyIGlzIG5vdCBpbnNlcnRlZFxuICBpZiAoalF1ZXJ5ICYmIGpRdWVyeS5mbiAmJiBqUXVlcnkuZm4uc2VsZWN0MiAmJiBqUXVlcnkuZm4uc2VsZWN0Mi5hbWQpIHtcbiAgICB2YXIgUzIgPSBqUXVlcnkuZm4uc2VsZWN0Mi5hbWQ7XG4gIH1cbnZhciBTMjsoZnVuY3Rpb24gKCkgeyBpZiAoIVMyIHx8ICFTMi5yZXF1aXJlanMpIHtcbmlmICghUzIpIHsgUzIgPSB7fTsgfSBlbHNlIHsgcmVxdWlyZSA9IFMyOyB9XG4vKipcbiAqIEBsaWNlbnNlIGFsbW9uZCAwLjMuMyBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycy5cbiAqIFJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLCBodHRwOi8vZ2l0aHViLmNvbS9yZXF1aXJlanMvYWxtb25kL0xJQ0VOU0VcbiAqL1xuLy9Hb2luZyBzbG9wcHkgdG8gYXZvaWQgJ3VzZSBzdHJpY3QnIHN0cmluZyBjb3N0LCBidXQgc3RyaWN0IHByYWN0aWNlcyBzaG91bGRcbi8vYmUgZm9sbG93ZWQuXG4vKmdsb2JhbCBzZXRUaW1lb3V0OiBmYWxzZSAqL1xuXG52YXIgcmVxdWlyZWpzLCByZXF1aXJlLCBkZWZpbmU7XG4oZnVuY3Rpb24gKHVuZGVmKSB7XG4gICAgdmFyIG1haW4sIHJlcSwgbWFrZU1hcCwgaGFuZGxlcnMsXG4gICAgICAgIGRlZmluZWQgPSB7fSxcbiAgICAgICAgd2FpdGluZyA9IHt9LFxuICAgICAgICBjb25maWcgPSB7fSxcbiAgICAgICAgZGVmaW5pbmcgPSB7fSxcbiAgICAgICAgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxcbiAgICAgICAgYXBzID0gW10uc2xpY2UsXG4gICAgICAgIGpzU3VmZml4UmVnRXhwID0gL1xcLmpzJC87XG5cbiAgICBmdW5jdGlvbiBoYXNQcm9wKG9iaiwgcHJvcCkge1xuICAgICAgICByZXR1cm4gaGFzT3duLmNhbGwob2JqLCBwcm9wKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHaXZlbiBhIHJlbGF0aXZlIG1vZHVsZSBuYW1lLCBsaWtlIC4vc29tZXRoaW5nLCBub3JtYWxpemUgaXQgdG9cbiAgICAgKiBhIHJlYWwgbmFtZSB0aGF0IGNhbiBiZSBtYXBwZWQgdG8gYSBwYXRoLlxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIHRoZSByZWxhdGl2ZSBuYW1lXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGJhc2VOYW1lIGEgcmVhbCBuYW1lIHRoYXQgdGhlIG5hbWUgYXJnIGlzIHJlbGF0aXZlXG4gICAgICogdG8uXG4gICAgICogQHJldHVybnMge1N0cmluZ30gbm9ybWFsaXplZCBuYW1lXG4gICAgICovXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplKG5hbWUsIGJhc2VOYW1lKSB7XG4gICAgICAgIHZhciBuYW1lUGFydHMsIG5hbWVTZWdtZW50LCBtYXBWYWx1ZSwgZm91bmRNYXAsIGxhc3RJbmRleCxcbiAgICAgICAgICAgIGZvdW5kSSwgZm91bmRTdGFyTWFwLCBzdGFySSwgaSwgaiwgcGFydCwgbm9ybWFsaXplZEJhc2VQYXJ0cyxcbiAgICAgICAgICAgIGJhc2VQYXJ0cyA9IGJhc2VOYW1lICYmIGJhc2VOYW1lLnNwbGl0KFwiL1wiKSxcbiAgICAgICAgICAgIG1hcCA9IGNvbmZpZy5tYXAsXG4gICAgICAgICAgICBzdGFyTWFwID0gKG1hcCAmJiBtYXBbJyonXSkgfHwge307XG5cbiAgICAgICAgLy9BZGp1c3QgYW55IHJlbGF0aXZlIHBhdGhzLlxuICAgICAgICBpZiAobmFtZSkge1xuICAgICAgICAgICAgbmFtZSA9IG5hbWUuc3BsaXQoJy8nKTtcbiAgICAgICAgICAgIGxhc3RJbmRleCA9IG5hbWUubGVuZ3RoIC0gMTtcblxuICAgICAgICAgICAgLy8gSWYgd2FudGluZyBub2RlIElEIGNvbXBhdGliaWxpdHksIHN0cmlwIC5qcyBmcm9tIGVuZFxuICAgICAgICAgICAgLy8gb2YgSURzLiBIYXZlIHRvIGRvIHRoaXMgaGVyZSwgYW5kIG5vdCBpbiBuYW1lVG9VcmxcbiAgICAgICAgICAgIC8vIGJlY2F1c2Ugbm9kZSBhbGxvd3MgZWl0aGVyIC5qcyBvciBub24gLmpzIHRvIG1hcFxuICAgICAgICAgICAgLy8gdG8gc2FtZSBmaWxlLlxuICAgICAgICAgICAgaWYgKGNvbmZpZy5ub2RlSWRDb21wYXQgJiYganNTdWZmaXhSZWdFeHAudGVzdChuYW1lW2xhc3RJbmRleF0pKSB7XG4gICAgICAgICAgICAgICAgbmFtZVtsYXN0SW5kZXhdID0gbmFtZVtsYXN0SW5kZXhdLnJlcGxhY2UoanNTdWZmaXhSZWdFeHAsICcnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU3RhcnRzIHdpdGggYSAnLicgc28gbmVlZCB0aGUgYmFzZU5hbWVcbiAgICAgICAgICAgIGlmIChuYW1lWzBdLmNoYXJBdCgwKSA9PT0gJy4nICYmIGJhc2VQYXJ0cykge1xuICAgICAgICAgICAgICAgIC8vQ29udmVydCBiYXNlTmFtZSB0byBhcnJheSwgYW5kIGxvcCBvZmYgdGhlIGxhc3QgcGFydCxcbiAgICAgICAgICAgICAgICAvL3NvIHRoYXQgLiBtYXRjaGVzIHRoYXQgJ2RpcmVjdG9yeScgYW5kIG5vdCBuYW1lIG9mIHRoZSBiYXNlTmFtZSdzXG4gICAgICAgICAgICAgICAgLy9tb2R1bGUuIEZvciBpbnN0YW5jZSwgYmFzZU5hbWUgb2YgJ29uZS90d28vdGhyZWUnLCBtYXBzIHRvXG4gICAgICAgICAgICAgICAgLy8nb25lL3R3by90aHJlZS5qcycsIGJ1dCB3ZSB3YW50IHRoZSBkaXJlY3RvcnksICdvbmUvdHdvJyBmb3JcbiAgICAgICAgICAgICAgICAvL3RoaXMgbm9ybWFsaXphdGlvbi5cbiAgICAgICAgICAgICAgICBub3JtYWxpemVkQmFzZVBhcnRzID0gYmFzZVBhcnRzLnNsaWNlKDAsIGJhc2VQYXJ0cy5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgICBuYW1lID0gbm9ybWFsaXplZEJhc2VQYXJ0cy5jb25jYXQobmFtZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vc3RhcnQgdHJpbURvdHNcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcGFydCA9IG5hbWVbaV07XG4gICAgICAgICAgICAgICAgaWYgKHBhcnQgPT09ICcuJykge1xuICAgICAgICAgICAgICAgICAgICBuYW1lLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgaSAtPSAxO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGFydCA9PT0gJy4uJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiBhdCB0aGUgc3RhcnQsIG9yIHByZXZpb3VzIHZhbHVlIGlzIHN0aWxsIC4uLFxuICAgICAgICAgICAgICAgICAgICAvLyBrZWVwIHRoZW0gc28gdGhhdCB3aGVuIGNvbnZlcnRlZCB0byBhIHBhdGggaXQgbWF5XG4gICAgICAgICAgICAgICAgICAgIC8vIHN0aWxsIHdvcmsgd2hlbiBjb252ZXJ0ZWQgdG8gYSBwYXRoLCBldmVuIHRob3VnaFxuICAgICAgICAgICAgICAgICAgICAvLyBhcyBhbiBJRCBpdCBpcyBsZXNzIHRoYW4gaWRlYWwuIEluIGxhcmdlciBwb2ludFxuICAgICAgICAgICAgICAgICAgICAvLyByZWxlYXNlcywgbWF5IGJlIGJldHRlciB0byBqdXN0IGtpY2sgb3V0IGFuIGVycm9yLlxuICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMCB8fCAoaSA9PT0gMSAmJiBuYW1lWzJdID09PSAnLi4nKSB8fCBuYW1lW2kgLSAxXSA9PT0gJy4uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuc3BsaWNlKGkgLSAxLCAyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGkgLT0gMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vZW5kIHRyaW1Eb3RzXG5cbiAgICAgICAgICAgIG5hbWUgPSBuYW1lLmpvaW4oJy8nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vQXBwbHkgbWFwIGNvbmZpZyBpZiBhdmFpbGFibGUuXG4gICAgICAgIGlmICgoYmFzZVBhcnRzIHx8IHN0YXJNYXApICYmIG1hcCkge1xuICAgICAgICAgICAgbmFtZVBhcnRzID0gbmFtZS5zcGxpdCgnLycpO1xuXG4gICAgICAgICAgICBmb3IgKGkgPSBuYW1lUGFydHMubGVuZ3RoOyBpID4gMDsgaSAtPSAxKSB7XG4gICAgICAgICAgICAgICAgbmFtZVNlZ21lbnQgPSBuYW1lUGFydHMuc2xpY2UoMCwgaSkuam9pbihcIi9cIik7XG5cbiAgICAgICAgICAgICAgICBpZiAoYmFzZVBhcnRzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vRmluZCB0aGUgbG9uZ2VzdCBiYXNlTmFtZSBzZWdtZW50IG1hdGNoIGluIHRoZSBjb25maWcuXG4gICAgICAgICAgICAgICAgICAgIC8vU28sIGRvIGpvaW5zIG9uIHRoZSBiaWdnZXN0IHRvIHNtYWxsZXN0IGxlbmd0aHMgb2YgYmFzZVBhcnRzLlxuICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSBiYXNlUGFydHMubGVuZ3RoOyBqID4gMDsgaiAtPSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXBWYWx1ZSA9IG1hcFtiYXNlUGFydHMuc2xpY2UoMCwgaikuam9pbignLycpXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy9iYXNlTmFtZSBzZWdtZW50IGhhcyAgY29uZmlnLCBmaW5kIGlmIGl0IGhhcyBvbmUgZm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3RoaXMgbmFtZS5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXBWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcFZhbHVlID0gbWFwVmFsdWVbbmFtZVNlZ21lbnRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXBWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL01hdGNoLCB1cGRhdGUgbmFtZSB0byB0aGUgbmV3IHZhbHVlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZE1hcCA9IG1hcFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEkgPSBpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZm91bmRNYXApIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy9DaGVjayBmb3IgYSBzdGFyIG1hcCBtYXRjaCwgYnV0IGp1c3QgaG9sZCBvbiB0byBpdCxcbiAgICAgICAgICAgICAgICAvL2lmIHRoZXJlIGlzIGEgc2hvcnRlciBzZWdtZW50IG1hdGNoIGxhdGVyIGluIGEgbWF0Y2hpbmdcbiAgICAgICAgICAgICAgICAvL2NvbmZpZywgdGhlbiBmYXZvciBvdmVyIHRoaXMgc3RhciBtYXAuXG4gICAgICAgICAgICAgICAgaWYgKCFmb3VuZFN0YXJNYXAgJiYgc3Rhck1hcCAmJiBzdGFyTWFwW25hbWVTZWdtZW50XSkge1xuICAgICAgICAgICAgICAgICAgICBmb3VuZFN0YXJNYXAgPSBzdGFyTWFwW25hbWVTZWdtZW50XTtcbiAgICAgICAgICAgICAgICAgICAgc3RhckkgPSBpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFmb3VuZE1hcCAmJiBmb3VuZFN0YXJNYXApIHtcbiAgICAgICAgICAgICAgICBmb3VuZE1hcCA9IGZvdW5kU3Rhck1hcDtcbiAgICAgICAgICAgICAgICBmb3VuZEkgPSBzdGFySTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZvdW5kTWFwKSB7XG4gICAgICAgICAgICAgICAgbmFtZVBhcnRzLnNwbGljZSgwLCBmb3VuZEksIGZvdW5kTWFwKTtcbiAgICAgICAgICAgICAgICBuYW1lID0gbmFtZVBhcnRzLmpvaW4oJy8nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuYW1lO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VSZXF1aXJlKHJlbE5hbWUsIGZvcmNlU3luYykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgLy9BIHZlcnNpb24gb2YgYSByZXF1aXJlIGZ1bmN0aW9uIHRoYXQgcGFzc2VzIGEgbW9kdWxlTmFtZVxuICAgICAgICAgICAgLy92YWx1ZSBmb3IgaXRlbXMgdGhhdCBtYXkgbmVlZCB0b1xuICAgICAgICAgICAgLy9sb29rIHVwIHBhdGhzIHJlbGF0aXZlIHRvIHRoZSBtb2R1bGVOYW1lXG4gICAgICAgICAgICB2YXIgYXJncyA9IGFwcy5jYWxsKGFyZ3VtZW50cywgMCk7XG5cbiAgICAgICAgICAgIC8vSWYgZmlyc3QgYXJnIGlzIG5vdCByZXF1aXJlKCdzdHJpbmcnKSwgYW5kIHRoZXJlIGlzIG9ubHlcbiAgICAgICAgICAgIC8vb25lIGFyZywgaXQgaXMgdGhlIGFycmF5IGZvcm0gd2l0aG91dCBhIGNhbGxiYWNrLiBJbnNlcnRcbiAgICAgICAgICAgIC8vYSBudWxsIHNvIHRoYXQgdGhlIGZvbGxvd2luZyBjb25jYXQgaXMgY29ycmVjdC5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSAhPT0gJ3N0cmluZycgJiYgYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICBhcmdzLnB1c2gobnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVxLmFwcGx5KHVuZGVmLCBhcmdzLmNvbmNhdChbcmVsTmFtZSwgZm9yY2VTeW5jXSkpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VOb3JtYWxpemUocmVsTmFtZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiBub3JtYWxpemUobmFtZSwgcmVsTmFtZSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUxvYWQoZGVwTmFtZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBkZWZpbmVkW2RlcE5hbWVdID0gdmFsdWU7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2FsbERlcChuYW1lKSB7XG4gICAgICAgIGlmIChoYXNQcm9wKHdhaXRpbmcsIG5hbWUpKSB7XG4gICAgICAgICAgICB2YXIgYXJncyA9IHdhaXRpbmdbbmFtZV07XG4gICAgICAgICAgICBkZWxldGUgd2FpdGluZ1tuYW1lXTtcbiAgICAgICAgICAgIGRlZmluaW5nW25hbWVdID0gdHJ1ZTtcbiAgICAgICAgICAgIG1haW4uYXBwbHkodW5kZWYsIGFyZ3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFoYXNQcm9wKGRlZmluZWQsIG5hbWUpICYmICFoYXNQcm9wKGRlZmluaW5nLCBuYW1lKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyAnICsgbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlZmluZWRbbmFtZV07XG4gICAgfVxuXG4gICAgLy9UdXJucyBhIHBsdWdpbiFyZXNvdXJjZSB0byBbcGx1Z2luLCByZXNvdXJjZV1cbiAgICAvL3dpdGggdGhlIHBsdWdpbiBiZWluZyB1bmRlZmluZWQgaWYgdGhlIG5hbWVcbiAgICAvL2RpZCBub3QgaGF2ZSBhIHBsdWdpbiBwcmVmaXguXG4gICAgZnVuY3Rpb24gc3BsaXRQcmVmaXgobmFtZSkge1xuICAgICAgICB2YXIgcHJlZml4LFxuICAgICAgICAgICAgaW5kZXggPSBuYW1lID8gbmFtZS5pbmRleE9mKCchJykgOiAtMTtcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHByZWZpeCA9IG5hbWUuc3Vic3RyaW5nKDAsIGluZGV4KTtcbiAgICAgICAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cmluZyhpbmRleCArIDEsIG5hbWUubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3ByZWZpeCwgbmFtZV07XG4gICAgfVxuXG4gICAgLy9DcmVhdGVzIGEgcGFydHMgYXJyYXkgZm9yIGEgcmVsTmFtZSB3aGVyZSBmaXJzdCBwYXJ0IGlzIHBsdWdpbiBJRCxcbiAgICAvL3NlY29uZCBwYXJ0IGlzIHJlc291cmNlIElELiBBc3N1bWVzIHJlbE5hbWUgaGFzIGFscmVhZHkgYmVlbiBub3JtYWxpemVkLlxuICAgIGZ1bmN0aW9uIG1ha2VSZWxQYXJ0cyhyZWxOYW1lKSB7XG4gICAgICAgIHJldHVybiByZWxOYW1lID8gc3BsaXRQcmVmaXgocmVsTmFtZSkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYWtlcyBhIG5hbWUgbWFwLCBub3JtYWxpemluZyB0aGUgbmFtZSwgYW5kIHVzaW5nIGEgcGx1Z2luXG4gICAgICogZm9yIG5vcm1hbGl6YXRpb24gaWYgbmVjZXNzYXJ5LiBHcmFicyBhIHJlZiB0byBwbHVnaW5cbiAgICAgKiB0b28sIGFzIGFuIG9wdGltaXphdGlvbi5cbiAgICAgKi9cbiAgICBtYWtlTWFwID0gZnVuY3Rpb24gKG5hbWUsIHJlbFBhcnRzKSB7XG4gICAgICAgIHZhciBwbHVnaW4sXG4gICAgICAgICAgICBwYXJ0cyA9IHNwbGl0UHJlZml4KG5hbWUpLFxuICAgICAgICAgICAgcHJlZml4ID0gcGFydHNbMF0sXG4gICAgICAgICAgICByZWxSZXNvdXJjZU5hbWUgPSByZWxQYXJ0c1sxXTtcblxuICAgICAgICBuYW1lID0gcGFydHNbMV07XG5cbiAgICAgICAgaWYgKHByZWZpeCkge1xuICAgICAgICAgICAgcHJlZml4ID0gbm9ybWFsaXplKHByZWZpeCwgcmVsUmVzb3VyY2VOYW1lKTtcbiAgICAgICAgICAgIHBsdWdpbiA9IGNhbGxEZXAocHJlZml4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vTm9ybWFsaXplIGFjY29yZGluZ1xuICAgICAgICBpZiAocHJlZml4KSB7XG4gICAgICAgICAgICBpZiAocGx1Z2luICYmIHBsdWdpbi5ub3JtYWxpemUpIHtcbiAgICAgICAgICAgICAgICBuYW1lID0gcGx1Z2luLm5vcm1hbGl6ZShuYW1lLCBtYWtlTm9ybWFsaXplKHJlbFJlc291cmNlTmFtZSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuYW1lID0gbm9ybWFsaXplKG5hbWUsIHJlbFJlc291cmNlTmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuYW1lID0gbm9ybWFsaXplKG5hbWUsIHJlbFJlc291cmNlTmFtZSk7XG4gICAgICAgICAgICBwYXJ0cyA9IHNwbGl0UHJlZml4KG5hbWUpO1xuICAgICAgICAgICAgcHJlZml4ID0gcGFydHNbMF07XG4gICAgICAgICAgICBuYW1lID0gcGFydHNbMV07XG4gICAgICAgICAgICBpZiAocHJlZml4KSB7XG4gICAgICAgICAgICAgICAgcGx1Z2luID0gY2FsbERlcChwcmVmaXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy9Vc2luZyByaWRpY3Vsb3VzIHByb3BlcnR5IG5hbWVzIGZvciBzcGFjZSByZWFzb25zXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmOiBwcmVmaXggPyBwcmVmaXggKyAnIScgKyBuYW1lIDogbmFtZSwgLy9mdWxsTmFtZVxuICAgICAgICAgICAgbjogbmFtZSxcbiAgICAgICAgICAgIHByOiBwcmVmaXgsXG4gICAgICAgICAgICBwOiBwbHVnaW5cbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gbWFrZUNvbmZpZyhuYW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gKGNvbmZpZyAmJiBjb25maWcuY29uZmlnICYmIGNvbmZpZy5jb25maWdbbmFtZV0pIHx8IHt9O1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGhhbmRsZXJzID0ge1xuICAgICAgICByZXF1aXJlOiBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIG1ha2VSZXF1aXJlKG5hbWUpO1xuICAgICAgICB9LFxuICAgICAgICBleHBvcnRzOiBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgdmFyIGUgPSBkZWZpbmVkW25hbWVdO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKGRlZmluZWRbbmFtZV0gPSB7fSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vZHVsZTogZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaWQ6IG5hbWUsXG4gICAgICAgICAgICAgICAgdXJpOiAnJyxcbiAgICAgICAgICAgICAgICBleHBvcnRzOiBkZWZpbmVkW25hbWVdLFxuICAgICAgICAgICAgICAgIGNvbmZpZzogbWFrZUNvbmZpZyhuYW1lKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBtYWluID0gZnVuY3Rpb24gKG5hbWUsIGRlcHMsIGNhbGxiYWNrLCByZWxOYW1lKSB7XG4gICAgICAgIHZhciBjanNNb2R1bGUsIGRlcE5hbWUsIHJldCwgbWFwLCBpLCByZWxQYXJ0cyxcbiAgICAgICAgICAgIGFyZ3MgPSBbXSxcbiAgICAgICAgICAgIGNhbGxiYWNrVHlwZSA9IHR5cGVvZiBjYWxsYmFjayxcbiAgICAgICAgICAgIHVzaW5nRXhwb3J0cztcblxuICAgICAgICAvL1VzZSBuYW1lIGlmIG5vIHJlbE5hbWVcbiAgICAgICAgcmVsTmFtZSA9IHJlbE5hbWUgfHwgbmFtZTtcbiAgICAgICAgcmVsUGFydHMgPSBtYWtlUmVsUGFydHMocmVsTmFtZSk7XG5cbiAgICAgICAgLy9DYWxsIHRoZSBjYWxsYmFjayB0byBkZWZpbmUgdGhlIG1vZHVsZSwgaWYgbmVjZXNzYXJ5LlxuICAgICAgICBpZiAoY2FsbGJhY2tUeXBlID09PSAndW5kZWZpbmVkJyB8fCBjYWxsYmFja1R5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIC8vUHVsbCBvdXQgdGhlIGRlZmluZWQgZGVwZW5kZW5jaWVzIGFuZCBwYXNzIHRoZSBvcmRlcmVkXG4gICAgICAgICAgICAvL3ZhbHVlcyB0byB0aGUgY2FsbGJhY2suXG4gICAgICAgICAgICAvL0RlZmF1bHQgdG8gW3JlcXVpcmUsIGV4cG9ydHMsIG1vZHVsZV0gaWYgbm8gZGVwc1xuICAgICAgICAgICAgZGVwcyA9ICFkZXBzLmxlbmd0aCAmJiBjYWxsYmFjay5sZW5ndGggPyBbJ3JlcXVpcmUnLCAnZXhwb3J0cycsICdtb2R1bGUnXSA6IGRlcHM7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZGVwcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgIG1hcCA9IG1ha2VNYXAoZGVwc1tpXSwgcmVsUGFydHMpO1xuICAgICAgICAgICAgICAgIGRlcE5hbWUgPSBtYXAuZjtcblxuICAgICAgICAgICAgICAgIC8vRmFzdCBwYXRoIENvbW1vbkpTIHN0YW5kYXJkIGRlcGVuZGVuY2llcy5cbiAgICAgICAgICAgICAgICBpZiAoZGVwTmFtZSA9PT0gXCJyZXF1aXJlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgYXJnc1tpXSA9IGhhbmRsZXJzLnJlcXVpcmUobmFtZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkZXBOYW1lID09PSBcImV4cG9ydHNcIikge1xuICAgICAgICAgICAgICAgICAgICAvL0NvbW1vbkpTIG1vZHVsZSBzcGVjIDEuMVxuICAgICAgICAgICAgICAgICAgICBhcmdzW2ldID0gaGFuZGxlcnMuZXhwb3J0cyhuYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdXNpbmdFeHBvcnRzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRlcE5hbWUgPT09IFwibW9kdWxlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy9Db21tb25KUyBtb2R1bGUgc3BlYyAxLjFcbiAgICAgICAgICAgICAgICAgICAgY2pzTW9kdWxlID0gYXJnc1tpXSA9IGhhbmRsZXJzLm1vZHVsZShuYW1lKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGhhc1Byb3AoZGVmaW5lZCwgZGVwTmFtZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1Byb3Aod2FpdGluZywgZGVwTmFtZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1Byb3AoZGVmaW5pbmcsIGRlcE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGFyZ3NbaV0gPSBjYWxsRGVwKGRlcE5hbWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWFwLnApIHtcbiAgICAgICAgICAgICAgICAgICAgbWFwLnAubG9hZChtYXAubiwgbWFrZVJlcXVpcmUocmVsTmFtZSwgdHJ1ZSksIG1ha2VMb2FkKGRlcE5hbWUpLCB7fSk7XG4gICAgICAgICAgICAgICAgICAgIGFyZ3NbaV0gPSBkZWZpbmVkW2RlcE5hbWVdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihuYW1lICsgJyBtaXNzaW5nICcgKyBkZXBOYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldCA9IGNhbGxiYWNrID8gY2FsbGJhY2suYXBwbHkoZGVmaW5lZFtuYW1lXSwgYXJncykgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgICAgICAgICAgLy9JZiBzZXR0aW5nIGV4cG9ydHMgdmlhIFwibW9kdWxlXCIgaXMgaW4gcGxheSxcbiAgICAgICAgICAgICAgICAvL2Zhdm9yIHRoYXQgb3ZlciByZXR1cm4gdmFsdWUgYW5kIGV4cG9ydHMuIEFmdGVyIHRoYXQsXG4gICAgICAgICAgICAgICAgLy9mYXZvciBhIG5vbi11bmRlZmluZWQgcmV0dXJuIHZhbHVlIG92ZXIgZXhwb3J0cyB1c2UuXG4gICAgICAgICAgICAgICAgaWYgKGNqc01vZHVsZSAmJiBjanNNb2R1bGUuZXhwb3J0cyAhPT0gdW5kZWYgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNqc01vZHVsZS5leHBvcnRzICE9PSBkZWZpbmVkW25hbWVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlZmluZWRbbmFtZV0gPSBjanNNb2R1bGUuZXhwb3J0cztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJldCAhPT0gdW5kZWYgfHwgIXVzaW5nRXhwb3J0cykge1xuICAgICAgICAgICAgICAgICAgICAvL1VzZSB0aGUgcmV0dXJuIHZhbHVlIGZyb20gdGhlIGZ1bmN0aW9uLlxuICAgICAgICAgICAgICAgICAgICBkZWZpbmVkW25hbWVdID0gcmV0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChuYW1lKSB7XG4gICAgICAgICAgICAvL01heSBqdXN0IGJlIGFuIG9iamVjdCBkZWZpbml0aW9uIGZvciB0aGUgbW9kdWxlLiBPbmx5XG4gICAgICAgICAgICAvL3dvcnJ5IGFib3V0IGRlZmluaW5nIGlmIGhhdmUgYSBtb2R1bGUgbmFtZS5cbiAgICAgICAgICAgIGRlZmluZWRbbmFtZV0gPSBjYWxsYmFjaztcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICByZXF1aXJlanMgPSByZXF1aXJlID0gcmVxID0gZnVuY3Rpb24gKGRlcHMsIGNhbGxiYWNrLCByZWxOYW1lLCBmb3JjZVN5bmMsIGFsdCkge1xuICAgICAgICBpZiAodHlwZW9mIGRlcHMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIGlmIChoYW5kbGVyc1tkZXBzXSkge1xuICAgICAgICAgICAgICAgIC8vY2FsbGJhY2sgaW4gdGhpcyBjYXNlIGlzIHJlYWxseSByZWxOYW1lXG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZXJzW2RlcHNdKGNhbGxiYWNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vSnVzdCByZXR1cm4gdGhlIG1vZHVsZSB3YW50ZWQuIEluIHRoaXMgc2NlbmFyaW8sIHRoZVxuICAgICAgICAgICAgLy9kZXBzIGFyZyBpcyB0aGUgbW9kdWxlIG5hbWUsIGFuZCBzZWNvbmQgYXJnIChpZiBwYXNzZWQpXG4gICAgICAgICAgICAvL2lzIGp1c3QgdGhlIHJlbE5hbWUuXG4gICAgICAgICAgICAvL05vcm1hbGl6ZSBtb2R1bGUgbmFtZSwgaWYgaXQgY29udGFpbnMgLiBvciAuLlxuICAgICAgICAgICAgcmV0dXJuIGNhbGxEZXAobWFrZU1hcChkZXBzLCBtYWtlUmVsUGFydHMoY2FsbGJhY2spKS5mKTtcbiAgICAgICAgfSBlbHNlIGlmICghZGVwcy5zcGxpY2UpIHtcbiAgICAgICAgICAgIC8vZGVwcyBpcyBhIGNvbmZpZyBvYmplY3QsIG5vdCBhbiBhcnJheS5cbiAgICAgICAgICAgIGNvbmZpZyA9IGRlcHM7XG4gICAgICAgICAgICBpZiAoY29uZmlnLmRlcHMpIHtcbiAgICAgICAgICAgICAgICByZXEoY29uZmlnLmRlcHMsIGNvbmZpZy5jYWxsYmFjayk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY2FsbGJhY2suc3BsaWNlKSB7XG4gICAgICAgICAgICAgICAgLy9jYWxsYmFjayBpcyBhbiBhcnJheSwgd2hpY2ggbWVhbnMgaXQgaXMgYSBkZXBlbmRlbmN5IGxpc3QuXG4gICAgICAgICAgICAgICAgLy9BZGp1c3QgYXJncyBpZiB0aGVyZSBhcmUgZGVwZW5kZW5jaWVzXG4gICAgICAgICAgICAgICAgZGVwcyA9IGNhbGxiYWNrO1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gcmVsTmFtZTtcbiAgICAgICAgICAgICAgICByZWxOYW1lID0gbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGVwcyA9IHVuZGVmO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy9TdXBwb3J0IHJlcXVpcmUoWydhJ10pXG4gICAgICAgIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24gKCkge307XG5cbiAgICAgICAgLy9JZiByZWxOYW1lIGlzIGEgZnVuY3Rpb24sIGl0IGlzIGFuIGVycmJhY2sgaGFuZGxlcixcbiAgICAgICAgLy9zbyByZW1vdmUgaXQuXG4gICAgICAgIGlmICh0eXBlb2YgcmVsTmFtZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmVsTmFtZSA9IGZvcmNlU3luYztcbiAgICAgICAgICAgIGZvcmNlU3luYyA9IGFsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vU2ltdWxhdGUgYXN5bmMgY2FsbGJhY2s7XG4gICAgICAgIGlmIChmb3JjZVN5bmMpIHtcbiAgICAgICAgICAgIG1haW4odW5kZWYsIGRlcHMsIGNhbGxiYWNrLCByZWxOYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vVXNpbmcgYSBub24temVybyB2YWx1ZSBiZWNhdXNlIG9mIGNvbmNlcm4gZm9yIHdoYXQgb2xkIGJyb3dzZXJzXG4gICAgICAgICAgICAvL2RvLCBhbmQgbGF0ZXN0IGJyb3dzZXJzIFwidXBncmFkZVwiIHRvIDQgaWYgbG93ZXIgdmFsdWUgaXMgdXNlZDpcbiAgICAgICAgICAgIC8vaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGltZXJzLmh0bWwjZG9tLXdpbmRvd3RpbWVycy1zZXR0aW1lb3V0OlxuICAgICAgICAgICAgLy9JZiB3YW50IGEgdmFsdWUgaW1tZWRpYXRlbHksIHVzZSByZXF1aXJlKCdpZCcpIGluc3RlYWQgLS0gc29tZXRoaW5nXG4gICAgICAgICAgICAvL3RoYXQgd29ya3MgaW4gYWxtb25kIG9uIHRoZSBnbG9iYWwgbGV2ZWwsIGJ1dCBub3QgZ3VhcmFudGVlZCBhbmRcbiAgICAgICAgICAgIC8vdW5saWtlbHkgdG8gd29yayBpbiBvdGhlciBBTUQgaW1wbGVtZW50YXRpb25zLlxuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgbWFpbih1bmRlZiwgZGVwcywgY2FsbGJhY2ssIHJlbE5hbWUpO1xuICAgICAgICAgICAgfSwgNCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVxO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBKdXN0IGRyb3BzIHRoZSBjb25maWcgb24gdGhlIGZsb29yLCBidXQgcmV0dXJucyByZXEgaW4gY2FzZVxuICAgICAqIHRoZSBjb25maWcgcmV0dXJuIHZhbHVlIGlzIHVzZWQuXG4gICAgICovXG4gICAgcmVxLmNvbmZpZyA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICAgICAgcmV0dXJuIHJlcShjZmcpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBFeHBvc2UgbW9kdWxlIHJlZ2lzdHJ5IGZvciBkZWJ1Z2dpbmcgYW5kIHRvb2xpbmdcbiAgICAgKi9cbiAgICByZXF1aXJlanMuX2RlZmluZWQgPSBkZWZpbmVkO1xuXG4gICAgZGVmaW5lID0gZnVuY3Rpb24gKG5hbWUsIGRlcHMsIGNhbGxiYWNrKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignU2VlIGFsbW9uZCBSRUFETUU6IGluY29ycmVjdCBtb2R1bGUgYnVpbGQsIG5vIG1vZHVsZSBuYW1lJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvL1RoaXMgbW9kdWxlIG1heSBub3QgaGF2ZSBkZXBlbmRlbmNpZXNcbiAgICAgICAgaWYgKCFkZXBzLnNwbGljZSkge1xuICAgICAgICAgICAgLy9kZXBzIGlzIG5vdCBhbiBhcnJheSwgc28gcHJvYmFibHkgbWVhbnNcbiAgICAgICAgICAgIC8vYW4gb2JqZWN0IGxpdGVyYWwgb3IgZmFjdG9yeSBmdW5jdGlvbiBmb3JcbiAgICAgICAgICAgIC8vdGhlIHZhbHVlLiBBZGp1c3QgYXJncy5cbiAgICAgICAgICAgIGNhbGxiYWNrID0gZGVwcztcbiAgICAgICAgICAgIGRlcHMgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaGFzUHJvcChkZWZpbmVkLCBuYW1lKSAmJiAhaGFzUHJvcCh3YWl0aW5nLCBuYW1lKSkge1xuICAgICAgICAgICAgd2FpdGluZ1tuYW1lXSA9IFtuYW1lLCBkZXBzLCBjYWxsYmFja107XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZGVmaW5lLmFtZCA9IHtcbiAgICAgICAgalF1ZXJ5OiB0cnVlXG4gICAgfTtcbn0oKSk7XG5cblMyLnJlcXVpcmVqcyA9IHJlcXVpcmVqcztTMi5yZXF1aXJlID0gcmVxdWlyZTtTMi5kZWZpbmUgPSBkZWZpbmU7XG59XG59KCkpO1xuUzIuZGVmaW5lKFwiYWxtb25kXCIsIGZ1bmN0aW9uKCl7fSk7XG5cbi8qIGdsb2JhbCBqUXVlcnk6ZmFsc2UsICQ6ZmFsc2UgKi9cblMyLmRlZmluZSgnanF1ZXJ5JyxbXSxmdW5jdGlvbiAoKSB7XG4gIHZhciBfJCA9IGpRdWVyeSB8fCAkO1xuXG4gIGlmIChfJCA9PSBudWxsICYmIGNvbnNvbGUgJiYgY29uc29sZS5lcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAnU2VsZWN0MjogQW4gaW5zdGFuY2Ugb2YgalF1ZXJ5IG9yIGEgalF1ZXJ5LWNvbXBhdGlibGUgbGlicmFyeSB3YXMgbm90ICcgK1xuICAgICAgJ2ZvdW5kLiBNYWtlIHN1cmUgdGhhdCB5b3UgYXJlIGluY2x1ZGluZyBqUXVlcnkgYmVmb3JlIFNlbGVjdDIgb24geW91ciAnICtcbiAgICAgICd3ZWIgcGFnZS4nXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBfJDtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvdXRpbHMnLFtcbiAgJ2pxdWVyeSdcbl0sIGZ1bmN0aW9uICgkKSB7XG4gIHZhciBVdGlscyA9IHt9O1xuXG4gIFV0aWxzLkV4dGVuZCA9IGZ1bmN0aW9uIChDaGlsZENsYXNzLCBTdXBlckNsYXNzKSB7XG4gICAgdmFyIF9faGFzUHJvcCA9IHt9Lmhhc093blByb3BlcnR5O1xuXG4gICAgZnVuY3Rpb24gQmFzZUNvbnN0cnVjdG9yICgpIHtcbiAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBDaGlsZENsYXNzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGtleSBpbiBTdXBlckNsYXNzKSB7XG4gICAgICBpZiAoX19oYXNQcm9wLmNhbGwoU3VwZXJDbGFzcywga2V5KSkge1xuICAgICAgICBDaGlsZENsYXNzW2tleV0gPSBTdXBlckNsYXNzW2tleV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgQmFzZUNvbnN0cnVjdG9yLnByb3RvdHlwZSA9IFN1cGVyQ2xhc3MucHJvdG90eXBlO1xuICAgIENoaWxkQ2xhc3MucHJvdG90eXBlID0gbmV3IEJhc2VDb25zdHJ1Y3RvcigpO1xuICAgIENoaWxkQ2xhc3MuX19zdXBlcl9fID0gU3VwZXJDbGFzcy5wcm90b3R5cGU7XG5cbiAgICByZXR1cm4gQ2hpbGRDbGFzcztcbiAgfTtcblxuICBmdW5jdGlvbiBnZXRNZXRob2RzICh0aGVDbGFzcykge1xuICAgIHZhciBwcm90byA9IHRoZUNsYXNzLnByb3RvdHlwZTtcblxuICAgIHZhciBtZXRob2RzID0gW107XG5cbiAgICBmb3IgKHZhciBtZXRob2ROYW1lIGluIHByb3RvKSB7XG4gICAgICB2YXIgbSA9IHByb3RvW21ldGhvZE5hbWVdO1xuXG4gICAgICBpZiAodHlwZW9mIG0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZXRob2ROYW1lID09PSAnY29uc3RydWN0b3InKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBtZXRob2RzLnB1c2gobWV0aG9kTmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGhvZHM7XG4gIH1cblxuICBVdGlscy5EZWNvcmF0ZSA9IGZ1bmN0aW9uIChTdXBlckNsYXNzLCBEZWNvcmF0b3JDbGFzcykge1xuICAgIHZhciBkZWNvcmF0ZWRNZXRob2RzID0gZ2V0TWV0aG9kcyhEZWNvcmF0b3JDbGFzcyk7XG4gICAgdmFyIHN1cGVyTWV0aG9kcyA9IGdldE1ldGhvZHMoU3VwZXJDbGFzcyk7XG5cbiAgICBmdW5jdGlvbiBEZWNvcmF0ZWRDbGFzcyAoKSB7XG4gICAgICB2YXIgdW5zaGlmdCA9IEFycmF5LnByb3RvdHlwZS51bnNoaWZ0O1xuXG4gICAgICB2YXIgYXJnQ291bnQgPSBEZWNvcmF0b3JDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3IubGVuZ3RoO1xuXG4gICAgICB2YXIgY2FsbGVkQ29uc3RydWN0b3IgPSBTdXBlckNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvcjtcblxuICAgICAgaWYgKGFyZ0NvdW50ID4gMCkge1xuICAgICAgICB1bnNoaWZ0LmNhbGwoYXJndW1lbnRzLCBTdXBlckNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcik7XG5cbiAgICAgICAgY2FsbGVkQ29uc3RydWN0b3IgPSBEZWNvcmF0b3JDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3I7XG4gICAgICB9XG5cbiAgICAgIGNhbGxlZENvbnN0cnVjdG9yLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgRGVjb3JhdG9yQ2xhc3MuZGlzcGxheU5hbWUgPSBTdXBlckNsYXNzLmRpc3BsYXlOYW1lO1xuXG4gICAgZnVuY3Rpb24gY3RyICgpIHtcbiAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBEZWNvcmF0ZWRDbGFzcztcbiAgICB9XG5cbiAgICBEZWNvcmF0ZWRDbGFzcy5wcm90b3R5cGUgPSBuZXcgY3RyKCk7XG5cbiAgICBmb3IgKHZhciBtID0gMDsgbSA8IHN1cGVyTWV0aG9kcy5sZW5ndGg7IG0rKykge1xuICAgICAgdmFyIHN1cGVyTWV0aG9kID0gc3VwZXJNZXRob2RzW21dO1xuXG4gICAgICBEZWNvcmF0ZWRDbGFzcy5wcm90b3R5cGVbc3VwZXJNZXRob2RdID1cbiAgICAgICAgU3VwZXJDbGFzcy5wcm90b3R5cGVbc3VwZXJNZXRob2RdO1xuICAgIH1cblxuICAgIHZhciBjYWxsZWRNZXRob2QgPSBmdW5jdGlvbiAobWV0aG9kTmFtZSkge1xuICAgICAgLy8gU3R1YiBvdXQgdGhlIG9yaWdpbmFsIG1ldGhvZCBpZiBpdCdzIG5vdCBkZWNvcmF0aW5nIGFuIGFjdHVhbCBtZXRob2RcbiAgICAgIHZhciBvcmlnaW5hbE1ldGhvZCA9IGZ1bmN0aW9uICgpIHt9O1xuXG4gICAgICBpZiAobWV0aG9kTmFtZSBpbiBEZWNvcmF0ZWRDbGFzcy5wcm90b3R5cGUpIHtcbiAgICAgICAgb3JpZ2luYWxNZXRob2QgPSBEZWNvcmF0ZWRDbGFzcy5wcm90b3R5cGVbbWV0aG9kTmFtZV07XG4gICAgICB9XG5cbiAgICAgIHZhciBkZWNvcmF0ZWRNZXRob2QgPSBEZWNvcmF0b3JDbGFzcy5wcm90b3R5cGVbbWV0aG9kTmFtZV07XG5cbiAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB1bnNoaWZ0ID0gQXJyYXkucHJvdG90eXBlLnVuc2hpZnQ7XG5cbiAgICAgICAgdW5zaGlmdC5jYWxsKGFyZ3VtZW50cywgb3JpZ2luYWxNZXRob2QpO1xuXG4gICAgICAgIHJldHVybiBkZWNvcmF0ZWRNZXRob2QuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZGVjb3JhdGVkTWV0aG9kcy5sZW5ndGg7IGQrKykge1xuICAgICAgdmFyIGRlY29yYXRlZE1ldGhvZCA9IGRlY29yYXRlZE1ldGhvZHNbZF07XG5cbiAgICAgIERlY29yYXRlZENsYXNzLnByb3RvdHlwZVtkZWNvcmF0ZWRNZXRob2RdID0gY2FsbGVkTWV0aG9kKGRlY29yYXRlZE1ldGhvZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIERlY29yYXRlZENsYXNzO1xuICB9O1xuXG4gIHZhciBPYnNlcnZhYmxlID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMubGlzdGVuZXJzID0ge307XG4gIH07XG5cbiAgT2JzZXJ2YWJsZS5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAoZXZlbnQsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5saXN0ZW5lcnMgPSB0aGlzLmxpc3RlbmVycyB8fCB7fTtcblxuICAgIGlmIChldmVudCBpbiB0aGlzLmxpc3RlbmVycykge1xuICAgICAgdGhpcy5saXN0ZW5lcnNbZXZlbnRdLnB1c2goY2FsbGJhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxpc3RlbmVyc1tldmVudF0gPSBbY2FsbGJhY2tdO1xuICAgIH1cbiAgfTtcblxuICBPYnNlcnZhYmxlLnByb3RvdHlwZS50cmlnZ2VyID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgdmFyIHNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlO1xuICAgIHZhciBwYXJhbXMgPSBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG5cbiAgICB0aGlzLmxpc3RlbmVycyA9IHRoaXMubGlzdGVuZXJzIHx8IHt9O1xuXG4gICAgLy8gUGFyYW1zIHNob3VsZCBhbHdheXMgY29tZSBpbiBhcyBhbiBhcnJheVxuICAgIGlmIChwYXJhbXMgPT0gbnVsbCkge1xuICAgICAgcGFyYW1zID0gW107XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUgYXJlIG5vIGFyZ3VtZW50cyB0byB0aGUgZXZlbnQsIHVzZSBhIHRlbXBvcmFyeSBvYmplY3RcbiAgICBpZiAocGFyYW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcGFyYW1zLnB1c2goe30pO1xuICAgIH1cblxuICAgIC8vIFNldCB0aGUgYF90eXBlYCBvZiB0aGUgZmlyc3Qgb2JqZWN0IHRvIHRoZSBldmVudFxuICAgIHBhcmFtc1swXS5fdHlwZSA9IGV2ZW50O1xuXG4gICAgaWYgKGV2ZW50IGluIHRoaXMubGlzdGVuZXJzKSB7XG4gICAgICB0aGlzLmludm9rZSh0aGlzLmxpc3RlbmVyc1tldmVudF0sIHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSk7XG4gICAgfVxuXG4gICAgaWYgKCcqJyBpbiB0aGlzLmxpc3RlbmVycykge1xuICAgICAgdGhpcy5pbnZva2UodGhpcy5saXN0ZW5lcnNbJyonXSwgYXJndW1lbnRzKTtcbiAgICB9XG4gIH07XG5cbiAgT2JzZXJ2YWJsZS5wcm90b3R5cGUuaW52b2tlID0gZnVuY3Rpb24gKGxpc3RlbmVycywgcGFyYW1zKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGxpc3RlbmVycy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgbGlzdGVuZXJzW2ldLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgfVxuICB9O1xuXG4gIFV0aWxzLk9ic2VydmFibGUgPSBPYnNlcnZhYmxlO1xuXG4gIFV0aWxzLmdlbmVyYXRlQ2hhcnMgPSBmdW5jdGlvbiAobGVuZ3RoKSB7XG4gICAgdmFyIGNoYXJzID0gJyc7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgcmFuZG9tQ2hhciA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDM2KTtcbiAgICAgIGNoYXJzICs9IHJhbmRvbUNoYXIudG9TdHJpbmcoMzYpO1xuICAgIH1cblxuICAgIHJldHVybiBjaGFycztcbiAgfTtcblxuICBVdGlscy5iaW5kID0gZnVuY3Rpb24gKGZ1bmMsIGNvbnRleHQpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgZnVuYy5hcHBseShjb250ZXh0LCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH07XG5cbiAgVXRpbHMuX2NvbnZlcnREYXRhID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICBmb3IgKHZhciBvcmlnaW5hbEtleSBpbiBkYXRhKSB7XG4gICAgICB2YXIga2V5cyA9IG9yaWdpbmFsS2V5LnNwbGl0KCctJyk7XG5cbiAgICAgIHZhciBkYXRhTGV2ZWwgPSBkYXRhO1xuXG4gICAgICBpZiAoa2V5cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwga2V5cy5sZW5ndGg7IGsrKykge1xuICAgICAgICB2YXIga2V5ID0ga2V5c1trXTtcblxuICAgICAgICAvLyBMb3dlcmNhc2UgdGhlIGZpcnN0IGxldHRlclxuICAgICAgICAvLyBCeSBkZWZhdWx0LCBkYXNoLXNlcGFyYXRlZCBiZWNvbWVzIGNhbWVsQ2FzZVxuICAgICAgICBrZXkgPSBrZXkuc3Vic3RyaW5nKDAsIDEpLnRvTG93ZXJDYXNlKCkgKyBrZXkuc3Vic3RyaW5nKDEpO1xuXG4gICAgICAgIGlmICghKGtleSBpbiBkYXRhTGV2ZWwpKSB7XG4gICAgICAgICAgZGF0YUxldmVsW2tleV0gPSB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChrID09IGtleXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIGRhdGFMZXZlbFtrZXldID0gZGF0YVtvcmlnaW5hbEtleV07XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhTGV2ZWwgPSBkYXRhTGV2ZWxba2V5XTtcbiAgICAgIH1cblxuICAgICAgZGVsZXRlIGRhdGFbb3JpZ2luYWxLZXldO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhO1xuICB9O1xuXG4gIFV0aWxzLmhhc1Njcm9sbCA9IGZ1bmN0aW9uIChpbmRleCwgZWwpIHtcbiAgICAvLyBBZGFwdGVkIGZyb20gdGhlIGZ1bmN0aW9uIGNyZWF0ZWQgYnkgQFNoYWRvd1NjcmlwdGVyXG4gICAgLy8gYW5kIGFkYXB0ZWQgYnkgQEJpbGxCYXJyeSBvbiB0aGUgU3RhY2sgRXhjaGFuZ2UgQ29kZSBSZXZpZXcgd2Vic2l0ZS5cbiAgICAvLyBUaGUgb3JpZ2luYWwgY29kZSBjYW4gYmUgZm91bmQgYXRcbiAgICAvLyBodHRwOi8vY29kZXJldmlldy5zdGFja2V4Y2hhbmdlLmNvbS9xLzEzMzM4XG4gICAgLy8gYW5kIHdhcyBkZXNpZ25lZCB0byBiZSB1c2VkIHdpdGggdGhlIFNpenpsZSBzZWxlY3RvciBlbmdpbmUuXG5cbiAgICB2YXIgJGVsID0gJChlbCk7XG4gICAgdmFyIG92ZXJmbG93WCA9IGVsLnN0eWxlLm92ZXJmbG93WDtcbiAgICB2YXIgb3ZlcmZsb3dZID0gZWwuc3R5bGUub3ZlcmZsb3dZO1xuXG4gICAgLy9DaGVjayBib3RoIHggYW5kIHkgZGVjbGFyYXRpb25zXG4gICAgaWYgKG92ZXJmbG93WCA9PT0gb3ZlcmZsb3dZICYmXG4gICAgICAgIChvdmVyZmxvd1kgPT09ICdoaWRkZW4nIHx8IG92ZXJmbG93WSA9PT0gJ3Zpc2libGUnKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChvdmVyZmxvd1ggPT09ICdzY3JvbGwnIHx8IG92ZXJmbG93WSA9PT0gJ3Njcm9sbCcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiAoJGVsLmlubmVySGVpZ2h0KCkgPCBlbC5zY3JvbGxIZWlnaHQgfHxcbiAgICAgICRlbC5pbm5lcldpZHRoKCkgPCBlbC5zY3JvbGxXaWR0aCk7XG4gIH07XG5cbiAgVXRpbHMuZXNjYXBlTWFya3VwID0gZnVuY3Rpb24gKG1hcmt1cCkge1xuICAgIHZhciByZXBsYWNlTWFwID0ge1xuICAgICAgJ1xcXFwnOiAnJiM5MjsnLFxuICAgICAgJyYnOiAnJmFtcDsnLFxuICAgICAgJzwnOiAnJmx0OycsXG4gICAgICAnPic6ICcmZ3Q7JyxcbiAgICAgICdcIic6ICcmcXVvdDsnLFxuICAgICAgJ1xcJyc6ICcmIzM5OycsXG4gICAgICAnLyc6ICcmIzQ3OydcbiAgICB9O1xuXG4gICAgLy8gRG8gbm90IHRyeSB0byBlc2NhcGUgdGhlIG1hcmt1cCBpZiBpdCdzIG5vdCBhIHN0cmluZ1xuICAgIGlmICh0eXBlb2YgbWFya3VwICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIG1hcmt1cDtcbiAgICB9XG5cbiAgICByZXR1cm4gU3RyaW5nKG1hcmt1cCkucmVwbGFjZSgvWyY8PlwiJ1xcL1xcXFxdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgcmV0dXJuIHJlcGxhY2VNYXBbbWF0Y2hdO1xuICAgIH0pO1xuICB9O1xuXG4gIC8vIENhY2hlIG9iamVjdHMgaW4gVXRpbHMuX19jYWNoZSBpbnN0ZWFkIG9mICQuZGF0YSAoc2VlICM0MzQ2KVxuICBVdGlscy5fX2NhY2hlID0ge307XG5cbiAgdmFyIGlkID0gMDtcbiAgVXRpbHMuR2V0VW5pcXVlRWxlbWVudElkID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAvLyBHZXQgYSB1bmlxdWUgZWxlbWVudCBJZC4gSWYgZWxlbWVudCBoYXMgbm8gaWQsXG4gICAgLy8gY3JlYXRlcyBhIG5ldyB1bmlxdWUgbnVtYmVyLCBzdG9yZXMgaXQgaW4gdGhlIGlkXG4gICAgLy8gYXR0cmlidXRlIGFuZCByZXR1cm5zIHRoZSBuZXcgaWQgd2l0aCBhIHByZWZpeC5cbiAgICAvLyBJZiBhbiBpZCBhbHJlYWR5IGV4aXN0cywgaXQgc2ltcGx5IHJldHVybnMgaXQgd2l0aCBhIHByZWZpeC5cblxuICAgIHZhciBzZWxlY3QySWQgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1zZWxlY3QyLWlkJyk7XG5cbiAgICBpZiAoc2VsZWN0MklkICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBzZWxlY3QySWQ7XG4gICAgfVxuXG4gICAgLy8gSWYgZWxlbWVudCBoYXMgaWQsIHVzZSBpdC5cbiAgICBpZiAoZWxlbWVudC5pZCkge1xuICAgICAgc2VsZWN0MklkID0gJ3NlbGVjdDItZGF0YS0nICsgZWxlbWVudC5pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZWN0MklkID0gJ3NlbGVjdDItZGF0YS0nICsgKCsraWQpLnRvU3RyaW5nKCkgK1xuICAgICAgICAnLScgKyBVdGlscy5nZW5lcmF0ZUNoYXJzKDQpO1xuICAgIH1cblxuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLXNlbGVjdDItaWQnLCBzZWxlY3QySWQpO1xuXG4gICAgcmV0dXJuIHNlbGVjdDJJZDtcbiAgfTtcblxuICBVdGlscy5TdG9yZURhdGEgPSBmdW5jdGlvbiAoZWxlbWVudCwgbmFtZSwgdmFsdWUpIHtcbiAgICAvLyBTdG9yZXMgYW4gaXRlbSBpbiB0aGUgY2FjaGUgZm9yIGEgc3BlY2lmaWVkIGVsZW1lbnQuXG4gICAgLy8gbmFtZSBpcyB0aGUgY2FjaGUga2V5LlxuICAgIHZhciBpZCA9IFV0aWxzLkdldFVuaXF1ZUVsZW1lbnRJZChlbGVtZW50KTtcbiAgICBpZiAoIVV0aWxzLl9fY2FjaGVbaWRdKSB7XG4gICAgICBVdGlscy5fX2NhY2hlW2lkXSA9IHt9O1xuICAgIH1cblxuICAgIFV0aWxzLl9fY2FjaGVbaWRdW25hbWVdID0gdmFsdWU7XG4gIH07XG5cbiAgVXRpbHMuR2V0RGF0YSA9IGZ1bmN0aW9uIChlbGVtZW50LCBuYW1lKSB7XG4gICAgLy8gUmV0cmlldmVzIGEgdmFsdWUgZnJvbSB0aGUgY2FjaGUgYnkgaXRzIGtleSAobmFtZSlcbiAgICAvLyBuYW1lIGlzIG9wdGlvbmFsLiBJZiBubyBuYW1lIHNwZWNpZmllZCwgcmV0dXJuXG4gICAgLy8gYWxsIGNhY2hlIGl0ZW1zIGZvciB0aGUgc3BlY2lmaWVkIGVsZW1lbnQuXG4gICAgLy8gYW5kIGZvciBhIHNwZWNpZmllZCBlbGVtZW50LlxuICAgIHZhciBpZCA9IFV0aWxzLkdldFVuaXF1ZUVsZW1lbnRJZChlbGVtZW50KTtcbiAgICBpZiAobmFtZSkge1xuICAgICAgaWYgKFV0aWxzLl9fY2FjaGVbaWRdKSB7XG4gICAgICAgIGlmIChVdGlscy5fX2NhY2hlW2lkXVtuYW1lXSAhPSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIFV0aWxzLl9fY2FjaGVbaWRdW25hbWVdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAkKGVsZW1lbnQpLmRhdGEobmFtZSk7IC8vIEZhbGxiYWNrIHRvIEhUTUw1IGRhdGEgYXR0cmlicy5cbiAgICAgIH1cbiAgICAgIHJldHVybiAkKGVsZW1lbnQpLmRhdGEobmFtZSk7IC8vIEZhbGxiYWNrIHRvIEhUTUw1IGRhdGEgYXR0cmlicy5cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFV0aWxzLl9fY2FjaGVbaWRdO1xuICAgIH1cbiAgfTtcblxuICBVdGlscy5SZW1vdmVEYXRhID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAvLyBSZW1vdmVzIGFsbCBjYWNoZWQgaXRlbXMgZm9yIGEgc3BlY2lmaWVkIGVsZW1lbnQuXG4gICAgdmFyIGlkID0gVXRpbHMuR2V0VW5pcXVlRWxlbWVudElkKGVsZW1lbnQpO1xuICAgIGlmIChVdGlscy5fX2NhY2hlW2lkXSAhPSBudWxsKSB7XG4gICAgICBkZWxldGUgVXRpbHMuX19jYWNoZVtpZF07XG4gICAgfVxuXG4gICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtc2VsZWN0Mi1pZCcpO1xuICB9O1xuXG4gIFV0aWxzLmNvcHlOb25JbnRlcm5hbENzc0NsYXNzZXMgPSBmdW5jdGlvbiAoZGVzdCwgc3JjKSB7XG4gICAgdmFyIGNsYXNzZXM7XG5cbiAgICB2YXIgZGVzdGluYXRpb25DbGFzc2VzID0gZGVzdC5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykudHJpbSgpLnNwbGl0KC9cXHMrLyk7XG5cbiAgICBkZXN0aW5hdGlvbkNsYXNzZXMgPSBkZXN0aW5hdGlvbkNsYXNzZXMuZmlsdGVyKGZ1bmN0aW9uIChjbGF6eikge1xuICAgICAgLy8gU2F2ZSBhbGwgU2VsZWN0MiBjbGFzc2VzXG4gICAgICByZXR1cm4gY2xhenouaW5kZXhPZignc2VsZWN0Mi0nKSA9PT0gMDtcbiAgICB9KTtcblxuICAgIHZhciBzb3VyY2VDbGFzc2VzID0gc3JjLmdldEF0dHJpYnV0ZSgnY2xhc3MnKS50cmltKCkuc3BsaXQoL1xccysvKTtcblxuICAgIHNvdXJjZUNsYXNzZXMgPSBzb3VyY2VDbGFzc2VzLmZpbHRlcihmdW5jdGlvbiAoY2xhenopIHtcbiAgICAgIC8vIE9ubHkgY29weSBub24tU2VsZWN0MiBjbGFzc2VzXG4gICAgICByZXR1cm4gY2xhenouaW5kZXhPZignc2VsZWN0Mi0nKSAhPT0gMDtcbiAgICB9KTtcblxuICAgIHZhciByZXBsYWNlbWVudHMgPSBkZXN0aW5hdGlvbkNsYXNzZXMuY29uY2F0KHNvdXJjZUNsYXNzZXMpO1xuXG4gICAgZGVzdC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgcmVwbGFjZW1lbnRzLmpvaW4oJyAnKSk7XG4gIH07XG5cbiAgcmV0dXJuIFV0aWxzO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9yZXN1bHRzJyxbXG4gICdqcXVlcnknLFxuICAnLi91dGlscydcbl0sIGZ1bmN0aW9uICgkLCBVdGlscykge1xuICBmdW5jdGlvbiBSZXN1bHRzICgkZWxlbWVudCwgb3B0aW9ucywgZGF0YUFkYXB0ZXIpIHtcbiAgICB0aGlzLiRlbGVtZW50ID0gJGVsZW1lbnQ7XG4gICAgdGhpcy5kYXRhID0gZGF0YUFkYXB0ZXI7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIFJlc3VsdHMuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcyk7XG4gIH1cblxuICBVdGlscy5FeHRlbmQoUmVzdWx0cywgVXRpbHMuT2JzZXJ2YWJsZSk7XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkcmVzdWx0cyA9ICQoXG4gICAgICAnPHVsIGNsYXNzPVwic2VsZWN0Mi1yZXN1bHRzX19vcHRpb25zXCIgcm9sZT1cImxpc3Rib3hcIj48L3VsPidcbiAgICApO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5nZXQoJ211bHRpcGxlJykpIHtcbiAgICAgICRyZXN1bHRzLmF0dHIoJ2FyaWEtbXVsdGlzZWxlY3RhYmxlJywgJ3RydWUnKTtcbiAgICB9XG5cbiAgICB0aGlzLiRyZXN1bHRzID0gJHJlc3VsdHM7XG5cbiAgICByZXR1cm4gJHJlc3VsdHM7XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy4kcmVzdWx0cy5lbXB0eSgpO1xuICB9O1xuXG4gIFJlc3VsdHMucHJvdG90eXBlLmRpc3BsYXlNZXNzYWdlID0gZnVuY3Rpb24gKHBhcmFtcykge1xuICAgIHZhciBlc2NhcGVNYXJrdXAgPSB0aGlzLm9wdGlvbnMuZ2V0KCdlc2NhcGVNYXJrdXAnKTtcblxuICAgIHRoaXMuY2xlYXIoKTtcbiAgICB0aGlzLmhpZGVMb2FkaW5nKCk7XG5cbiAgICB2YXIgJG1lc3NhZ2UgPSAkKFxuICAgICAgJzxsaSByb2xlPVwiYWxlcnRcIiBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIicgK1xuICAgICAgJyBjbGFzcz1cInNlbGVjdDItcmVzdWx0c19fb3B0aW9uXCI+PC9saT4nXG4gICAgKTtcblxuICAgIHZhciBtZXNzYWdlID0gdGhpcy5vcHRpb25zLmdldCgndHJhbnNsYXRpb25zJykuZ2V0KHBhcmFtcy5tZXNzYWdlKTtcblxuICAgICRtZXNzYWdlLmFwcGVuZChcbiAgICAgIGVzY2FwZU1hcmt1cChcbiAgICAgICAgbWVzc2FnZShwYXJhbXMuYXJncylcbiAgICAgIClcbiAgICApO1xuXG4gICAgJG1lc3NhZ2VbMF0uY2xhc3NOYW1lICs9ICcgc2VsZWN0Mi1yZXN1bHRzX19tZXNzYWdlJztcblxuICAgIHRoaXMuJHJlc3VsdHMuYXBwZW5kKCRtZXNzYWdlKTtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5oaWRlTWVzc2FnZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy4kcmVzdWx0cy5maW5kKCcuc2VsZWN0Mi1yZXN1bHRzX19tZXNzYWdlJykucmVtb3ZlKCk7XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB0aGlzLmhpZGVMb2FkaW5nKCk7XG5cbiAgICB2YXIgJG9wdGlvbnMgPSBbXTtcblxuICAgIGlmIChkYXRhLnJlc3VsdHMgPT0gbnVsbCB8fCBkYXRhLnJlc3VsdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICBpZiAodGhpcy4kcmVzdWx0cy5jaGlsZHJlbigpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLnRyaWdnZXIoJ3Jlc3VsdHM6bWVzc2FnZScsIHtcbiAgICAgICAgICBtZXNzYWdlOiAnbm9SZXN1bHRzJ1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGRhdGEucmVzdWx0cyA9IHRoaXMuc29ydChkYXRhLnJlc3VsdHMpO1xuXG4gICAgZm9yICh2YXIgZCA9IDA7IGQgPCBkYXRhLnJlc3VsdHMubGVuZ3RoOyBkKyspIHtcbiAgICAgIHZhciBpdGVtID0gZGF0YS5yZXN1bHRzW2RdO1xuXG4gICAgICB2YXIgJG9wdGlvbiA9IHRoaXMub3B0aW9uKGl0ZW0pO1xuXG4gICAgICAkb3B0aW9ucy5wdXNoKCRvcHRpb24pO1xuICAgIH1cblxuICAgIHRoaXMuJHJlc3VsdHMuYXBwZW5kKCRvcHRpb25zKTtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5wb3NpdGlvbiA9IGZ1bmN0aW9uICgkcmVzdWx0cywgJGRyb3Bkb3duKSB7XG4gICAgdmFyICRyZXN1bHRzQ29udGFpbmVyID0gJGRyb3Bkb3duLmZpbmQoJy5zZWxlY3QyLXJlc3VsdHMnKTtcbiAgICAkcmVzdWx0c0NvbnRhaW5lci5hcHBlbmQoJHJlc3VsdHMpO1xuICB9O1xuXG4gIFJlc3VsdHMucHJvdG90eXBlLnNvcnQgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHZhciBzb3J0ZXIgPSB0aGlzLm9wdGlvbnMuZ2V0KCdzb3J0ZXInKTtcblxuICAgIHJldHVybiBzb3J0ZXIoZGF0YSk7XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUuaGlnaGxpZ2h0Rmlyc3RJdGVtID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkb3B0aW9ucyA9IHRoaXMuJHJlc3VsdHNcbiAgICAgIC5maW5kKCcuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGFibGUnKTtcblxuICAgIHZhciAkc2VsZWN0ZWQgPSAkb3B0aW9ucy5maWx0ZXIoJy5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0ZWQnKTtcblxuICAgIC8vIENoZWNrIGlmIHRoZXJlIGFyZSBhbnkgc2VsZWN0ZWQgb3B0aW9uc1xuICAgIGlmICgkc2VsZWN0ZWQubGVuZ3RoID4gMCkge1xuICAgICAgLy8gSWYgdGhlcmUgYXJlIHNlbGVjdGVkIG9wdGlvbnMsIGhpZ2hsaWdodCB0aGUgZmlyc3RcbiAgICAgICRzZWxlY3RlZC5maXJzdCgpLnRyaWdnZXIoJ21vdXNlZW50ZXInKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIHNlbGVjdGVkIG9wdGlvbnMsIGhpZ2hsaWdodCB0aGUgZmlyc3Qgb3B0aW9uXG4gICAgICAvLyBpbiB0aGUgZHJvcGRvd25cbiAgICAgICRvcHRpb25zLmZpcnN0KCkudHJpZ2dlcignbW91c2VlbnRlcicpO1xuICAgIH1cblxuICAgIHRoaXMuZW5zdXJlSGlnaGxpZ2h0VmlzaWJsZSgpO1xuICB9O1xuXG4gIFJlc3VsdHMucHJvdG90eXBlLnNldENsYXNzZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdGhpcy5kYXRhLmN1cnJlbnQoZnVuY3Rpb24gKHNlbGVjdGVkKSB7XG4gICAgICB2YXIgc2VsZWN0ZWRJZHMgPSBzZWxlY3RlZC5tYXAoZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgcmV0dXJuIHMuaWQudG9TdHJpbmcoKTtcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgJG9wdGlvbnMgPSBzZWxmLiRyZXN1bHRzXG4gICAgICAgIC5maW5kKCcuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGFibGUnKTtcblxuICAgICAgJG9wdGlvbnMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciAkb3B0aW9uID0gJCh0aGlzKTtcblxuICAgICAgICB2YXIgaXRlbSA9IFV0aWxzLkdldERhdGEodGhpcywgJ2RhdGEnKTtcblxuICAgICAgICAvLyBpZCBuZWVkcyB0byBiZSBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcgd2hlbiBjb21wYXJpbmdcbiAgICAgICAgdmFyIGlkID0gJycgKyBpdGVtLmlkO1xuXG4gICAgICAgIGlmICgoaXRlbS5lbGVtZW50ICE9IG51bGwgJiYgaXRlbS5lbGVtZW50LnNlbGVjdGVkKSB8fFxuICAgICAgICAgICAgKGl0ZW0uZWxlbWVudCA9PSBudWxsICYmIHNlbGVjdGVkSWRzLmluZGV4T2YoaWQpID4gLTEpKSB7XG4gICAgICAgICAgdGhpcy5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0ZWQnKTtcbiAgICAgICAgICAkb3B0aW9uLmF0dHIoJ2FyaWEtc2VsZWN0ZWQnLCAndHJ1ZScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGVkJyk7XG4gICAgICAgICAgJG9wdGlvbi5hdHRyKCdhcmlhLXNlbGVjdGVkJywgJ2ZhbHNlJyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgfSk7XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUuc2hvd0xvYWRpbmcgPSBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgdGhpcy5oaWRlTG9hZGluZygpO1xuXG4gICAgdmFyIGxvYWRpbmdNb3JlID0gdGhpcy5vcHRpb25zLmdldCgndHJhbnNsYXRpb25zJykuZ2V0KCdzZWFyY2hpbmcnKTtcblxuICAgIHZhciBsb2FkaW5nID0ge1xuICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICBsb2FkaW5nOiB0cnVlLFxuICAgICAgdGV4dDogbG9hZGluZ01vcmUocGFyYW1zKVxuICAgIH07XG4gICAgdmFyICRsb2FkaW5nID0gdGhpcy5vcHRpb24obG9hZGluZyk7XG4gICAgJGxvYWRpbmcuY2xhc3NOYW1lICs9ICcgbG9hZGluZy1yZXN1bHRzJztcblxuICAgIHRoaXMuJHJlc3VsdHMucHJlcGVuZCgkbG9hZGluZyk7XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUuaGlkZUxvYWRpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy4kcmVzdWx0cy5maW5kKCcubG9hZGluZy1yZXN1bHRzJykucmVtb3ZlKCk7XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUub3B0aW9uID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB2YXIgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTtcbiAgICBvcHRpb24uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24nKTtcbiAgICBvcHRpb24uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGFibGUnKTtcblxuICAgIHZhciBhdHRycyA9IHtcbiAgICAgICdyb2xlJzogJ29wdGlvbidcbiAgICB9O1xuXG4gICAgdmFyIG1hdGNoZXMgPSB3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUubWF0Y2hlcyB8fFxuICAgICAgd2luZG93LkVsZW1lbnQucHJvdG90eXBlLm1zTWF0Y2hlc1NlbGVjdG9yIHx8XG4gICAgICB3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUud2Via2l0TWF0Y2hlc1NlbGVjdG9yO1xuXG4gICAgaWYgKChkYXRhLmVsZW1lbnQgIT0gbnVsbCAmJiBtYXRjaGVzLmNhbGwoZGF0YS5lbGVtZW50LCAnOmRpc2FibGVkJykpIHx8XG4gICAgICAgIChkYXRhLmVsZW1lbnQgPT0gbnVsbCAmJiBkYXRhLmRpc2FibGVkKSkge1xuICAgICAgYXR0cnNbJ2FyaWEtZGlzYWJsZWQnXSA9ICd0cnVlJztcblxuICAgICAgb3B0aW9uLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RhYmxlJyk7XG4gICAgICBvcHRpb24uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLWRpc2FibGVkJyk7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuaWQgPT0gbnVsbCkge1xuICAgICAgb3B0aW9uLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RhYmxlJyk7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuX3Jlc3VsdElkICE9IG51bGwpIHtcbiAgICAgIG9wdGlvbi5pZCA9IGRhdGEuX3Jlc3VsdElkO1xuICAgIH1cblxuICAgIGlmIChkYXRhLnRpdGxlKSB7XG4gICAgICBvcHRpb24udGl0bGUgPSBkYXRhLnRpdGxlO1xuICAgIH1cblxuICAgIGlmIChkYXRhLmNoaWxkcmVuKSB7XG4gICAgICBhdHRycy5yb2xlID0gJ2dyb3VwJztcbiAgICAgIGF0dHJzWydhcmlhLWxhYmVsJ10gPSBkYXRhLnRleHQ7XG5cbiAgICAgIG9wdGlvbi5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0YWJsZScpO1xuICAgICAgb3B0aW9uLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1ncm91cCcpO1xuICAgIH1cblxuICAgIGZvciAodmFyIGF0dHIgaW4gYXR0cnMpIHtcbiAgICAgIHZhciB2YWwgPSBhdHRyc1thdHRyXTtcblxuICAgICAgb3B0aW9uLnNldEF0dHJpYnV0ZShhdHRyLCB2YWwpO1xuICAgIH1cblxuICAgIGlmIChkYXRhLmNoaWxkcmVuKSB7XG4gICAgICB2YXIgJG9wdGlvbiA9ICQob3B0aW9uKTtcblxuICAgICAgdmFyIGxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3Ryb25nJyk7XG4gICAgICBsYWJlbC5jbGFzc05hbWUgPSAnc2VsZWN0Mi1yZXN1bHRzX19ncm91cCc7XG5cbiAgICAgIHRoaXMudGVtcGxhdGUoZGF0YSwgbGFiZWwpO1xuXG4gICAgICB2YXIgJGNoaWxkcmVuID0gW107XG5cbiAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgZGF0YS5jaGlsZHJlbi5sZW5ndGg7IGMrKykge1xuICAgICAgICB2YXIgY2hpbGQgPSBkYXRhLmNoaWxkcmVuW2NdO1xuXG4gICAgICAgIHZhciAkY2hpbGQgPSB0aGlzLm9wdGlvbihjaGlsZCk7XG5cbiAgICAgICAgJGNoaWxkcmVuLnB1c2goJGNoaWxkKTtcbiAgICAgIH1cblxuICAgICAgdmFyICRjaGlsZHJlbkNvbnRhaW5lciA9ICQoJzx1bD48L3VsPicsIHtcbiAgICAgICAgJ2NsYXNzJzogJ3NlbGVjdDItcmVzdWx0c19fb3B0aW9ucyBzZWxlY3QyLXJlc3VsdHNfX29wdGlvbnMtLW5lc3RlZCcsXG4gICAgICAgICdyb2xlJzogJ25vbmUnXG4gICAgICB9KTtcblxuICAgICAgJGNoaWxkcmVuQ29udGFpbmVyLmFwcGVuZCgkY2hpbGRyZW4pO1xuXG4gICAgICAkb3B0aW9uLmFwcGVuZChsYWJlbCk7XG4gICAgICAkb3B0aW9uLmFwcGVuZCgkY2hpbGRyZW5Db250YWluZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRlbXBsYXRlKGRhdGEsIG9wdGlvbik7XG4gICAgfVxuXG4gICAgVXRpbHMuU3RvcmVEYXRhKG9wdGlvbiwgJ2RhdGEnLCBkYXRhKTtcblxuICAgIHJldHVybiBvcHRpb247XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgaWQgPSBjb250YWluZXIuaWQgKyAnLXJlc3VsdHMnO1xuXG4gICAgdGhpcy4kcmVzdWx0cy5hdHRyKCdpZCcsIGlkKTtcblxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czphbGwnLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBzZWxmLmNsZWFyKCk7XG4gICAgICBzZWxmLmFwcGVuZChwYXJhbXMuZGF0YSk7XG5cbiAgICAgIGlmIChjb250YWluZXIuaXNPcGVuKCkpIHtcbiAgICAgICAgc2VsZi5zZXRDbGFzc2VzKCk7XG4gICAgICAgIHNlbGYuaGlnaGxpZ2h0Rmlyc3RJdGVtKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6YXBwZW5kJywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgc2VsZi5hcHBlbmQocGFyYW1zLmRhdGEpO1xuXG4gICAgICBpZiAoY29udGFpbmVyLmlzT3BlbigpKSB7XG4gICAgICAgIHNlbGYuc2V0Q2xhc3NlcygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdxdWVyeScsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIHNlbGYuaGlkZU1lc3NhZ2VzKCk7XG4gICAgICBzZWxmLnNob3dMb2FkaW5nKHBhcmFtcyk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3NlbGVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghY29udGFpbmVyLmlzT3BlbigpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2VsZi5zZXRDbGFzc2VzKCk7XG5cbiAgICAgIGlmIChzZWxmLm9wdGlvbnMuZ2V0KCdzY3JvbGxBZnRlclNlbGVjdCcpKSB7XG4gICAgICAgIHNlbGYuaGlnaGxpZ2h0Rmlyc3RJdGVtKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Vuc2VsZWN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFjb250YWluZXIuaXNPcGVuKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzZWxmLnNldENsYXNzZXMoKTtcblxuICAgICAgaWYgKHNlbGYub3B0aW9ucy5nZXQoJ3Njcm9sbEFmdGVyU2VsZWN0JykpIHtcbiAgICAgICAgc2VsZi5oaWdobGlnaHRGaXJzdEl0ZW0oKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignb3BlbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFdoZW4gdGhlIGRyb3Bkb3duIGlzIG9wZW4sIGFyaWEtZXhwZW5kZWQ9XCJ0cnVlXCJcbiAgICAgIHNlbGYuJHJlc3VsdHMuYXR0cignYXJpYS1leHBhbmRlZCcsICd0cnVlJyk7XG4gICAgICBzZWxmLiRyZXN1bHRzLmF0dHIoJ2FyaWEtaGlkZGVuJywgJ2ZhbHNlJyk7XG5cbiAgICAgIHNlbGYuc2V0Q2xhc3NlcygpO1xuICAgICAgc2VsZi5lbnN1cmVIaWdobGlnaHRWaXNpYmxlKCk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gV2hlbiB0aGUgZHJvcGRvd24gaXMgY2xvc2VkLCBhcmlhLWV4cGVuZGVkPVwiZmFsc2VcIlxuICAgICAgc2VsZi4kcmVzdWx0cy5hdHRyKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7XG4gICAgICBzZWxmLiRyZXN1bHRzLmF0dHIoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICAgIHNlbGYuJHJlc3VsdHMucmVtb3ZlQXR0cignYXJpYS1hY3RpdmVkZXNjZW5kYW50Jyk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6dG9nZ2xlJywgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyICRoaWdobGlnaHRlZCA9IHNlbGYuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzKCk7XG5cbiAgICAgIGlmICgkaGlnaGxpZ2h0ZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgJGhpZ2hsaWdodGVkLnRyaWdnZXIoJ21vdXNldXAnKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czpzZWxlY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgJGhpZ2hsaWdodGVkID0gc2VsZi5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKTtcblxuICAgICAgaWYgKCRoaWdobGlnaHRlZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgZGF0YSA9IFV0aWxzLkdldERhdGEoJGhpZ2hsaWdodGVkWzBdLCAnZGF0YScpO1xuXG4gICAgICBpZiAoJGhpZ2hsaWdodGVkLmhhc0NsYXNzKCdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0ZWQnKSkge1xuICAgICAgICBzZWxmLnRyaWdnZXIoJ2Nsb3NlJywge30pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZi50cmlnZ2VyKCdzZWxlY3QnLCB7XG4gICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czpwcmV2aW91cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciAkaGlnaGxpZ2h0ZWQgPSBzZWxmLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpO1xuXG4gICAgICB2YXIgJG9wdGlvbnMgPSBzZWxmLiRyZXN1bHRzLmZpbmQoJy5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0YWJsZScpO1xuXG4gICAgICB2YXIgY3VycmVudEluZGV4ID0gJG9wdGlvbnMuaW5kZXgoJGhpZ2hsaWdodGVkKTtcblxuICAgICAgLy8gSWYgd2UgYXJlIGFscmVhZHkgYXQgdGhlIHRvcCwgZG9uJ3QgbW92ZSBmdXJ0aGVyXG4gICAgICAvLyBJZiBubyBvcHRpb25zLCBjdXJyZW50SW5kZXggd2lsbCBiZSAtMVxuICAgICAgaWYgKGN1cnJlbnRJbmRleCA8PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIG5leHRJbmRleCA9IGN1cnJlbnRJbmRleCAtIDE7XG5cbiAgICAgIC8vIElmIG5vbmUgYXJlIGhpZ2hsaWdodGVkLCBoaWdobGlnaHQgdGhlIGZpcnN0XG4gICAgICBpZiAoJGhpZ2hsaWdodGVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBuZXh0SW5kZXggPSAwO1xuICAgICAgfVxuXG4gICAgICB2YXIgJG5leHQgPSAkb3B0aW9ucy5lcShuZXh0SW5kZXgpO1xuXG4gICAgICAkbmV4dC50cmlnZ2VyKCdtb3VzZWVudGVyJyk7XG5cbiAgICAgIHZhciBjdXJyZW50T2Zmc2V0ID0gc2VsZi4kcmVzdWx0cy5vZmZzZXQoKS50b3A7XG4gICAgICB2YXIgbmV4dFRvcCA9ICRuZXh0Lm9mZnNldCgpLnRvcDtcbiAgICAgIHZhciBuZXh0T2Zmc2V0ID0gc2VsZi4kcmVzdWx0cy5zY3JvbGxUb3AoKSArIChuZXh0VG9wIC0gY3VycmVudE9mZnNldCk7XG5cbiAgICAgIGlmIChuZXh0SW5kZXggPT09IDApIHtcbiAgICAgICAgc2VsZi4kcmVzdWx0cy5zY3JvbGxUb3AoMCk7XG4gICAgICB9IGVsc2UgaWYgKG5leHRUb3AgLSBjdXJyZW50T2Zmc2V0IDwgMCkge1xuICAgICAgICBzZWxmLiRyZXN1bHRzLnNjcm9sbFRvcChuZXh0T2Zmc2V0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czpuZXh0JywgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyICRoaWdobGlnaHRlZCA9IHNlbGYuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzKCk7XG5cbiAgICAgIHZhciAkb3B0aW9ucyA9IHNlbGYuJHJlc3VsdHMuZmluZCgnLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RhYmxlJyk7XG5cbiAgICAgIHZhciBjdXJyZW50SW5kZXggPSAkb3B0aW9ucy5pbmRleCgkaGlnaGxpZ2h0ZWQpO1xuXG4gICAgICB2YXIgbmV4dEluZGV4ID0gY3VycmVudEluZGV4ICsgMTtcblxuICAgICAgLy8gSWYgd2UgYXJlIGF0IHRoZSBsYXN0IG9wdGlvbiwgc3RheSB0aGVyZVxuICAgICAgaWYgKG5leHRJbmRleCA+PSAkb3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgJG5leHQgPSAkb3B0aW9ucy5lcShuZXh0SW5kZXgpO1xuXG4gICAgICAkbmV4dC50cmlnZ2VyKCdtb3VzZWVudGVyJyk7XG5cbiAgICAgIHZhciBjdXJyZW50T2Zmc2V0ID0gc2VsZi4kcmVzdWx0cy5vZmZzZXQoKS50b3AgK1xuICAgICAgICBzZWxmLiRyZXN1bHRzLm91dGVySGVpZ2h0KGZhbHNlKTtcbiAgICAgIHZhciBuZXh0Qm90dG9tID0gJG5leHQub2Zmc2V0KCkudG9wICsgJG5leHQub3V0ZXJIZWlnaHQoZmFsc2UpO1xuICAgICAgdmFyIG5leHRPZmZzZXQgPSBzZWxmLiRyZXN1bHRzLnNjcm9sbFRvcCgpICsgbmV4dEJvdHRvbSAtIGN1cnJlbnRPZmZzZXQ7XG5cbiAgICAgIGlmIChuZXh0SW5kZXggPT09IDApIHtcbiAgICAgICAgc2VsZi4kcmVzdWx0cy5zY3JvbGxUb3AoMCk7XG4gICAgICB9IGVsc2UgaWYgKG5leHRCb3R0b20gPiBjdXJyZW50T2Zmc2V0KSB7XG4gICAgICAgIHNlbGYuJHJlc3VsdHMuc2Nyb2xsVG9wKG5leHRPZmZzZXQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOmZvY3VzJywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgcGFyYW1zLmVsZW1lbnRbMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLWhpZ2hsaWdodGVkJyk7XG4gICAgICBwYXJhbXMuZWxlbWVudFswXS5zZXRBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnLCAndHJ1ZScpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOm1lc3NhZ2UnLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBzZWxmLmRpc3BsYXlNZXNzYWdlKHBhcmFtcyk7XG4gICAgfSk7XG5cbiAgICBpZiAoJC5mbi5tb3VzZXdoZWVsKSB7XG4gICAgICB0aGlzLiRyZXN1bHRzLm9uKCdtb3VzZXdoZWVsJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgdmFyIHRvcCA9IHNlbGYuJHJlc3VsdHMuc2Nyb2xsVG9wKCk7XG5cbiAgICAgICAgdmFyIGJvdHRvbSA9IHNlbGYuJHJlc3VsdHMuZ2V0KDApLnNjcm9sbEhlaWdodCAtIHRvcCArIGUuZGVsdGFZO1xuXG4gICAgICAgIHZhciBpc0F0VG9wID0gZS5kZWx0YVkgPiAwICYmIHRvcCAtIGUuZGVsdGFZIDw9IDA7XG4gICAgICAgIHZhciBpc0F0Qm90dG9tID0gZS5kZWx0YVkgPCAwICYmIGJvdHRvbSA8PSBzZWxmLiRyZXN1bHRzLmhlaWdodCgpO1xuXG4gICAgICAgIGlmIChpc0F0VG9wKSB7XG4gICAgICAgICAgc2VsZi4kcmVzdWx0cy5zY3JvbGxUb3AoMCk7XG5cbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0F0Qm90dG9tKSB7XG4gICAgICAgICAgc2VsZi4kcmVzdWx0cy5zY3JvbGxUb3AoXG4gICAgICAgICAgICBzZWxmLiRyZXN1bHRzLmdldCgwKS5zY3JvbGxIZWlnaHQgLSBzZWxmLiRyZXN1bHRzLmhlaWdodCgpXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLiRyZXN1bHRzLm9uKCdtb3VzZXVwJywgJy5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0YWJsZScsXG4gICAgICBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpO1xuXG4gICAgICB2YXIgZGF0YSA9IFV0aWxzLkdldERhdGEodGhpcywgJ2RhdGEnKTtcblxuICAgICAgaWYgKCR0aGlzLmhhc0NsYXNzKCdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0ZWQnKSkge1xuICAgICAgICBpZiAoc2VsZi5vcHRpb25zLmdldCgnbXVsdGlwbGUnKSkge1xuICAgICAgICAgIHNlbGYudHJpZ2dlcigndW5zZWxlY3QnLCB7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldnQsXG4gICAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VsZi50cmlnZ2VyKCdjbG9zZScsIHt9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2VsZi50cmlnZ2VyKCdzZWxlY3QnLCB7XG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2dCxcbiAgICAgICAgZGF0YTogZGF0YVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLiRyZXN1bHRzLm9uKCdtb3VzZWVudGVyJywgJy5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0YWJsZScsXG4gICAgICBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICB2YXIgZGF0YSA9IFV0aWxzLkdldERhdGEodGhpcywgJ2RhdGEnKTtcblxuICAgICAgc2VsZi5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKVxuICAgICAgICAgIC5yZW1vdmVDbGFzcygnc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLWhpZ2hsaWdodGVkJylcbiAgICAgICAgICAuYXR0cignYXJpYS1zZWxlY3RlZCcsICdmYWxzZScpO1xuXG4gICAgICBzZWxmLnRyaWdnZXIoJ3Jlc3VsdHM6Zm9jdXMnLCB7XG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIGVsZW1lbnQ6ICQodGhpcylcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuXG4gIFJlc3VsdHMucHJvdG90eXBlLmdldEhpZ2hsaWdodGVkUmVzdWx0cyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgJGhpZ2hsaWdodGVkID0gdGhpcy4kcmVzdWx0c1xuICAgIC5maW5kKCcuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLWhpZ2hsaWdodGVkJyk7XG5cbiAgICByZXR1cm4gJGhpZ2hsaWdodGVkO1xuICB9O1xuXG4gIFJlc3VsdHMucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy4kcmVzdWx0cy5yZW1vdmUoKTtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5lbnN1cmVIaWdobGlnaHRWaXNpYmxlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkaGlnaGxpZ2h0ZWQgPSB0aGlzLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpO1xuXG4gICAgaWYgKCRoaWdobGlnaHRlZC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgJG9wdGlvbnMgPSB0aGlzLiRyZXN1bHRzLmZpbmQoJy5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0YWJsZScpO1xuXG4gICAgdmFyIGN1cnJlbnRJbmRleCA9ICRvcHRpb25zLmluZGV4KCRoaWdobGlnaHRlZCk7XG5cbiAgICB2YXIgY3VycmVudE9mZnNldCA9IHRoaXMuJHJlc3VsdHMub2Zmc2V0KCkudG9wO1xuICAgIHZhciBuZXh0VG9wID0gJGhpZ2hsaWdodGVkLm9mZnNldCgpLnRvcDtcbiAgICB2YXIgbmV4dE9mZnNldCA9IHRoaXMuJHJlc3VsdHMuc2Nyb2xsVG9wKCkgKyAobmV4dFRvcCAtIGN1cnJlbnRPZmZzZXQpO1xuXG4gICAgdmFyIG9mZnNldERlbHRhID0gbmV4dFRvcCAtIGN1cnJlbnRPZmZzZXQ7XG4gICAgbmV4dE9mZnNldCAtPSAkaGlnaGxpZ2h0ZWQub3V0ZXJIZWlnaHQoZmFsc2UpICogMjtcblxuICAgIGlmIChjdXJyZW50SW5kZXggPD0gMikge1xuICAgICAgdGhpcy4kcmVzdWx0cy5zY3JvbGxUb3AoMCk7XG4gICAgfSBlbHNlIGlmIChvZmZzZXREZWx0YSA+IHRoaXMuJHJlc3VsdHMub3V0ZXJIZWlnaHQoKSB8fCBvZmZzZXREZWx0YSA8IDApIHtcbiAgICAgIHRoaXMuJHJlc3VsdHMuc2Nyb2xsVG9wKG5leHRPZmZzZXQpO1xuICAgIH1cbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS50ZW1wbGF0ZSA9IGZ1bmN0aW9uIChyZXN1bHQsIGNvbnRhaW5lcikge1xuICAgIHZhciB0ZW1wbGF0ZSA9IHRoaXMub3B0aW9ucy5nZXQoJ3RlbXBsYXRlUmVzdWx0Jyk7XG4gICAgdmFyIGVzY2FwZU1hcmt1cCA9IHRoaXMub3B0aW9ucy5nZXQoJ2VzY2FwZU1hcmt1cCcpO1xuXG4gICAgdmFyIGNvbnRlbnQgPSB0ZW1wbGF0ZShyZXN1bHQsIGNvbnRhaW5lcik7XG5cbiAgICBpZiAoY29udGVudCA9PSBudWxsKSB7XG4gICAgICBjb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgY29udGFpbmVyLmlubmVySFRNTCA9IGVzY2FwZU1hcmt1cChjb250ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgJChjb250YWluZXIpLmFwcGVuZChjb250ZW50KTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIFJlc3VsdHM7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2tleXMnLFtcblxuXSwgZnVuY3Rpb24gKCkge1xuICB2YXIgS0VZUyA9IHtcbiAgICBCQUNLU1BBQ0U6IDgsXG4gICAgVEFCOiA5LFxuICAgIEVOVEVSOiAxMyxcbiAgICBTSElGVDogMTYsXG4gICAgQ1RSTDogMTcsXG4gICAgQUxUOiAxOCxcbiAgICBFU0M6IDI3LFxuICAgIFNQQUNFOiAzMixcbiAgICBQQUdFX1VQOiAzMyxcbiAgICBQQUdFX0RPV046IDM0LFxuICAgIEVORDogMzUsXG4gICAgSE9NRTogMzYsXG4gICAgTEVGVDogMzcsXG4gICAgVVA6IDM4LFxuICAgIFJJR0hUOiAzOSxcbiAgICBET1dOOiA0MCxcbiAgICBERUxFVEU6IDQ2XG4gIH07XG5cbiAgcmV0dXJuIEtFWVM7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL3NlbGVjdGlvbi9iYXNlJyxbXG4gICdqcXVlcnknLFxuICAnLi4vdXRpbHMnLFxuICAnLi4va2V5cydcbl0sIGZ1bmN0aW9uICgkLCBVdGlscywgS0VZUykge1xuICBmdW5jdGlvbiBCYXNlU2VsZWN0aW9uICgkZWxlbWVudCwgb3B0aW9ucykge1xuICAgIHRoaXMuJGVsZW1lbnQgPSAkZWxlbWVudDtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgQmFzZVNlbGVjdGlvbi5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzKTtcbiAgfVxuXG4gIFV0aWxzLkV4dGVuZChCYXNlU2VsZWN0aW9uLCBVdGlscy5PYnNlcnZhYmxlKTtcblxuICBCYXNlU2VsZWN0aW9uLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRzZWxlY3Rpb24gPSAkKFxuICAgICAgJzxzcGFuIGNsYXNzPVwic2VsZWN0Mi1zZWxlY3Rpb25cIiByb2xlPVwiY29tYm9ib3hcIiAnICtcbiAgICAgICcgYXJpYS1oYXNwb3B1cD1cInRydWVcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj4nICtcbiAgICAgICc8L3NwYW4+J1xuICAgICk7XG5cbiAgICB0aGlzLl90YWJpbmRleCA9IDA7XG5cbiAgICBpZiAoVXRpbHMuR2V0RGF0YSh0aGlzLiRlbGVtZW50WzBdLCAnb2xkLXRhYmluZGV4JykgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fdGFiaW5kZXggPSBVdGlscy5HZXREYXRhKHRoaXMuJGVsZW1lbnRbMF0sICdvbGQtdGFiaW5kZXgnKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuJGVsZW1lbnQuYXR0cigndGFiaW5kZXgnKSAhPSBudWxsKSB7XG4gICAgICB0aGlzLl90YWJpbmRleCA9IHRoaXMuJGVsZW1lbnQuYXR0cigndGFiaW5kZXgnKTtcbiAgICB9XG5cbiAgICAkc2VsZWN0aW9uLmF0dHIoJ3RpdGxlJywgdGhpcy4kZWxlbWVudC5hdHRyKCd0aXRsZScpKTtcbiAgICAkc2VsZWN0aW9uLmF0dHIoJ3RhYmluZGV4JywgdGhpcy5fdGFiaW5kZXgpO1xuICAgICRzZWxlY3Rpb24uYXR0cignYXJpYS1kaXNhYmxlZCcsICdmYWxzZScpO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uID0gJHNlbGVjdGlvbjtcblxuICAgIHJldHVybiAkc2VsZWN0aW9uO1xuICB9O1xuXG4gIEJhc2VTZWxlY3Rpb24ucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyIHJlc3VsdHNJZCA9IGNvbnRhaW5lci5pZCArICctcmVzdWx0cyc7XG5cbiAgICB0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbignZm9jdXMnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBzZWxmLnRyaWdnZXIoJ2ZvY3VzJywgZXZ0KTtcbiAgICB9KTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbignYmx1cicsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYuX2hhbmRsZUJsdXIoZXZ0KTtcbiAgICB9KTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbigna2V5ZG93bicsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYudHJpZ2dlcigna2V5cHJlc3MnLCBldnQpO1xuXG4gICAgICBpZiAoZXZ0LndoaWNoID09PSBLRVlTLlNQQUNFKSB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOmZvY3VzJywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgc2VsZi4kc2VsZWN0aW9uLmF0dHIoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcsIHBhcmFtcy5kYXRhLl9yZXN1bHRJZCk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3NlbGVjdGlvbjp1cGRhdGUnLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBzZWxmLnVwZGF0ZShwYXJhbXMuZGF0YSk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ29wZW4nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBXaGVuIHRoZSBkcm9wZG93biBpcyBvcGVuLCBhcmlhLWV4cGFuZGVkPVwidHJ1ZVwiXG4gICAgICBzZWxmLiRzZWxlY3Rpb24uYXR0cignYXJpYS1leHBhbmRlZCcsICd0cnVlJyk7XG4gICAgICBzZWxmLiRzZWxlY3Rpb24uYXR0cignYXJpYS1vd25zJywgcmVzdWx0c0lkKTtcblxuICAgICAgc2VsZi5fYXR0YWNoQ2xvc2VIYW5kbGVyKGNvbnRhaW5lcik7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gV2hlbiB0aGUgZHJvcGRvd24gaXMgY2xvc2VkLCBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgICAgc2VsZi4kc2VsZWN0aW9uLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTtcbiAgICAgIHNlbGYuJHNlbGVjdGlvbi5yZW1vdmVBdHRyKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcbiAgICAgIHNlbGYuJHNlbGVjdGlvbi5yZW1vdmVBdHRyKCdhcmlhLW93bnMnKTtcblxuICAgICAgc2VsZi4kc2VsZWN0aW9uLnRyaWdnZXIoJ2ZvY3VzJyk7XG5cbiAgICAgIHNlbGYuX2RldGFjaENsb3NlSGFuZGxlcihjb250YWluZXIpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdlbmFibGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLiRzZWxlY3Rpb24uYXR0cigndGFiaW5kZXgnLCBzZWxmLl90YWJpbmRleCk7XG4gICAgICBzZWxmLiRzZWxlY3Rpb24uYXR0cignYXJpYS1kaXNhYmxlZCcsICdmYWxzZScpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdkaXNhYmxlJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi4kc2VsZWN0aW9uLmF0dHIoJ3RhYmluZGV4JywgJy0xJyk7XG4gICAgICBzZWxmLiRzZWxlY3Rpb24uYXR0cignYXJpYS1kaXNhYmxlZCcsICd0cnVlJyk7XG4gICAgfSk7XG4gIH07XG5cbiAgQmFzZVNlbGVjdGlvbi5wcm90b3R5cGUuX2hhbmRsZUJsdXIgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgLy8gVGhpcyBuZWVkcyB0byBiZSBkZWxheWVkIGFzIHRoZSBhY3RpdmUgZWxlbWVudCBpcyB0aGUgYm9keSB3aGVuIHRoZSB0YWJcbiAgICAvLyBrZXkgaXMgcHJlc3NlZCwgcG9zc2libHkgYWxvbmcgd2l0aCBvdGhlcnMuXG4gICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgLy8gRG9uJ3QgdHJpZ2dlciBgYmx1cmAgaWYgdGhlIGZvY3VzIGlzIHN0aWxsIGluIHRoZSBzZWxlY3Rpb25cbiAgICAgIGlmIChcbiAgICAgICAgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gc2VsZi4kc2VsZWN0aW9uWzBdKSB8fFxuICAgICAgICAoJC5jb250YWlucyhzZWxmLiRzZWxlY3Rpb25bMF0sIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2VsZi50cmlnZ2VyKCdibHVyJywgZXZ0KTtcbiAgICB9LCAxKTtcbiAgfTtcblxuICBCYXNlU2VsZWN0aW9uLnByb3RvdHlwZS5fYXR0YWNoQ2xvc2VIYW5kbGVyID0gZnVuY3Rpb24gKGNvbnRhaW5lcikge1xuXG4gICAgJChkb2N1bWVudC5ib2R5KS5vbignbW91c2Vkb3duLnNlbGVjdDIuJyArIGNvbnRhaW5lci5pZCwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciAkdGFyZ2V0ID0gJChlLnRhcmdldCk7XG5cbiAgICAgIHZhciAkc2VsZWN0ID0gJHRhcmdldC5jbG9zZXN0KCcuc2VsZWN0MicpO1xuXG4gICAgICB2YXIgJGFsbCA9ICQoJy5zZWxlY3QyLnNlbGVjdDItY29udGFpbmVyLS1vcGVuJyk7XG5cbiAgICAgICRhbGwuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzID09ICRzZWxlY3RbMF0pIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgJGVsZW1lbnQgPSBVdGlscy5HZXREYXRhKHRoaXMsICdlbGVtZW50Jyk7XG5cbiAgICAgICAgJGVsZW1lbnQuc2VsZWN0MignY2xvc2UnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuXG4gIEJhc2VTZWxlY3Rpb24ucHJvdG90eXBlLl9kZXRhY2hDbG9zZUhhbmRsZXIgPSBmdW5jdGlvbiAoY29udGFpbmVyKSB7XG4gICAgJChkb2N1bWVudC5ib2R5KS5vZmYoJ21vdXNlZG93bi5zZWxlY3QyLicgKyBjb250YWluZXIuaWQpO1xuICB9O1xuXG4gIEJhc2VTZWxlY3Rpb24ucHJvdG90eXBlLnBvc2l0aW9uID0gZnVuY3Rpb24gKCRzZWxlY3Rpb24sICRjb250YWluZXIpIHtcbiAgICB2YXIgJHNlbGVjdGlvbkNvbnRhaW5lciA9ICRjb250YWluZXIuZmluZCgnLnNlbGVjdGlvbicpO1xuICAgICRzZWxlY3Rpb25Db250YWluZXIuYXBwZW5kKCRzZWxlY3Rpb24pO1xuICB9O1xuXG4gIEJhc2VTZWxlY3Rpb24ucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5fZGV0YWNoQ2xvc2VIYW5kbGVyKHRoaXMuY29udGFpbmVyKTtcbiAgfTtcblxuICBCYXNlU2VsZWN0aW9uLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIGB1cGRhdGVgIG1ldGhvZCBtdXN0IGJlIGRlZmluZWQgaW4gY2hpbGQgY2xhc3Nlcy4nKTtcbiAgfTtcblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBhYnN0cmFjdCB0aGUgXCJlbmFibGVkXCIgKG5vdCBcImRpc2FibGVkXCIpIHN0YXRlIG9mIHRoaXNcbiAgICogb2JqZWN0LlxuICAgKlxuICAgKiBAcmV0dXJuIHt0cnVlfSBpZiB0aGUgaW5zdGFuY2UgaXMgbm90IGRpc2FibGVkLlxuICAgKiBAcmV0dXJuIHtmYWxzZX0gaWYgdGhlIGluc3RhbmNlIGlzIGRpc2FibGVkLlxuICAgKi9cbiAgQmFzZVNlbGVjdGlvbi5wcm90b3R5cGUuaXNFbmFibGVkID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAhdGhpcy5pc0Rpc2FibGVkKCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gYWJzdHJhY3QgdGhlIFwiZGlzYWJsZWRcIiBzdGF0ZSBvZiB0aGlzIG9iamVjdC5cbiAgICpcbiAgICogQHJldHVybiB7dHJ1ZX0gaWYgdGhlIGRpc2FibGVkIG9wdGlvbiBpcyB0cnVlLlxuICAgKiBAcmV0dXJuIHtmYWxzZX0gaWYgdGhlIGRpc2FibGVkIG9wdGlvbiBpcyBmYWxzZS5cbiAgICovXG4gIEJhc2VTZWxlY3Rpb24ucHJvdG90eXBlLmlzRGlzYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5nZXQoJ2Rpc2FibGVkJyk7XG4gIH07XG5cbiAgcmV0dXJuIEJhc2VTZWxlY3Rpb247XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL3NlbGVjdGlvbi9zaW5nbGUnLFtcbiAgJ2pxdWVyeScsXG4gICcuL2Jhc2UnLFxuICAnLi4vdXRpbHMnLFxuICAnLi4va2V5cydcbl0sIGZ1bmN0aW9uICgkLCBCYXNlU2VsZWN0aW9uLCBVdGlscywgS0VZUykge1xuICBmdW5jdGlvbiBTaW5nbGVTZWxlY3Rpb24gKCkge1xuICAgIFNpbmdsZVNlbGVjdGlvbi5fX3N1cGVyX18uY29uc3RydWN0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIFV0aWxzLkV4dGVuZChTaW5nbGVTZWxlY3Rpb24sIEJhc2VTZWxlY3Rpb24pO1xuXG4gIFNpbmdsZVNlbGVjdGlvbi5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkc2VsZWN0aW9uID0gU2luZ2xlU2VsZWN0aW9uLl9fc3VwZXJfXy5yZW5kZXIuY2FsbCh0aGlzKTtcblxuICAgICRzZWxlY3Rpb25bMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZScpO1xuXG4gICAgJHNlbGVjdGlvbi5odG1sKFxuICAgICAgJzxzcGFuIGNsYXNzPVwic2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkXCI+PC9zcGFuPicgK1xuICAgICAgJzxzcGFuIGNsYXNzPVwic2VsZWN0Mi1zZWxlY3Rpb25fX2Fycm93XCIgcm9sZT1cInByZXNlbnRhdGlvblwiPicgK1xuICAgICAgICAnPGIgcm9sZT1cInByZXNlbnRhdGlvblwiPjwvYj4nICtcbiAgICAgICc8L3NwYW4+J1xuICAgICk7XG5cbiAgICByZXR1cm4gJHNlbGVjdGlvbjtcbiAgfTtcblxuICBTaW5nbGVTZWxlY3Rpb24ucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgU2luZ2xlU2VsZWN0aW9uLl9fc3VwZXJfXy5iaW5kLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cbiAgICB2YXIgaWQgPSBjb250YWluZXIuaWQgKyAnLWNvbnRhaW5lcic7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24uZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCcpXG4gICAgICAuYXR0cignaWQnLCBpZClcbiAgICAgIC5hdHRyKCdyb2xlJywgJ3RleHRib3gnKVxuICAgICAgLmF0dHIoJ2FyaWEtcmVhZG9ubHknLCAndHJ1ZScpO1xuICAgIHRoaXMuJHNlbGVjdGlvbi5hdHRyKCdhcmlhLWxhYmVsbGVkYnknLCBpZCk7XG4gICAgdGhpcy4kc2VsZWN0aW9uLmF0dHIoJ2FyaWEtY29udHJvbHMnLCBpZCk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24ub24oJ21vdXNlZG93bicsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIC8vIE9ubHkgcmVzcG9uZCB0byBsZWZ0IGNsaWNrc1xuICAgICAgaWYgKGV2dC53aGljaCAhPT0gMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHNlbGYudHJpZ2dlcigndG9nZ2xlJywge1xuICAgICAgICBvcmlnaW5hbEV2ZW50OiBldnRcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdmb2N1cycsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIC8vIFVzZXIgZm9jdXNlcyBvbiB0aGUgY29udGFpbmVyXG4gICAgfSk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24ub24oJ2JsdXInLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAvLyBVc2VyIGV4aXRzIHRoZSBjb250YWluZXJcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignZm9jdXMnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBpZiAoIWNvbnRhaW5lci5pc09wZW4oKSkge1xuICAgICAgICBzZWxmLiRzZWxlY3Rpb24udHJpZ2dlcignZm9jdXMnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBTaW5nbGVTZWxlY3Rpb24ucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkcmVuZGVyZWQgPSB0aGlzLiRzZWxlY3Rpb24uZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCcpO1xuICAgICRyZW5kZXJlZC5lbXB0eSgpO1xuICAgICRyZW5kZXJlZC5yZW1vdmVBdHRyKCd0aXRsZScpOyAvLyBjbGVhciB0b29sdGlwIG9uIGVtcHR5XG4gIH07XG5cbiAgU2luZ2xlU2VsZWN0aW9uLnByb3RvdHlwZS5kaXNwbGF5ID0gZnVuY3Rpb24gKGRhdGEsIGNvbnRhaW5lcikge1xuICAgIHZhciB0ZW1wbGF0ZSA9IHRoaXMub3B0aW9ucy5nZXQoJ3RlbXBsYXRlU2VsZWN0aW9uJyk7XG4gICAgdmFyIGVzY2FwZU1hcmt1cCA9IHRoaXMub3B0aW9ucy5nZXQoJ2VzY2FwZU1hcmt1cCcpO1xuXG4gICAgcmV0dXJuIGVzY2FwZU1hcmt1cCh0ZW1wbGF0ZShkYXRhLCBjb250YWluZXIpKTtcbiAgfTtcblxuICBTaW5nbGVTZWxlY3Rpb24ucHJvdG90eXBlLnNlbGVjdGlvbkNvbnRhaW5lciA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gJCgnPHNwYW4+PC9zcGFuPicpO1xuICB9O1xuXG4gIFNpbmdsZVNlbGVjdGlvbi5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgc2VsZWN0aW9uID0gZGF0YVswXTtcblxuICAgIHZhciAkcmVuZGVyZWQgPSB0aGlzLiRzZWxlY3Rpb24uZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCcpO1xuICAgIHZhciBmb3JtYXR0ZWQgPSB0aGlzLmRpc3BsYXkoc2VsZWN0aW9uLCAkcmVuZGVyZWQpO1xuXG4gICAgJHJlbmRlcmVkLmVtcHR5KCkuYXBwZW5kKGZvcm1hdHRlZCk7XG5cbiAgICB2YXIgdGl0bGUgPSBzZWxlY3Rpb24udGl0bGUgfHwgc2VsZWN0aW9uLnRleHQ7XG5cbiAgICBpZiAodGl0bGUpIHtcbiAgICAgICRyZW5kZXJlZC5hdHRyKCd0aXRsZScsIHRpdGxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgJHJlbmRlcmVkLnJlbW92ZUF0dHIoJ3RpdGxlJyk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBTaW5nbGVTZWxlY3Rpb247XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL3NlbGVjdGlvbi9tdWx0aXBsZScsW1xuICAnanF1ZXJ5JyxcbiAgJy4vYmFzZScsXG4gICcuLi91dGlscydcbl0sIGZ1bmN0aW9uICgkLCBCYXNlU2VsZWN0aW9uLCBVdGlscykge1xuICBmdW5jdGlvbiBNdWx0aXBsZVNlbGVjdGlvbiAoJGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICBNdWx0aXBsZVNlbGVjdGlvbi5fX3N1cGVyX18uY29uc3RydWN0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIFV0aWxzLkV4dGVuZChNdWx0aXBsZVNlbGVjdGlvbiwgQmFzZVNlbGVjdGlvbik7XG5cbiAgTXVsdGlwbGVTZWxlY3Rpb24ucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgJHNlbGVjdGlvbiA9IE11bHRpcGxlU2VsZWN0aW9uLl9fc3VwZXJfXy5yZW5kZXIuY2FsbCh0aGlzKTtcblxuICAgICRzZWxlY3Rpb25bMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlJyk7XG5cbiAgICAkc2VsZWN0aW9uLmh0bWwoXG4gICAgICAnPHVsIGNsYXNzPVwic2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkXCI+PC91bD4nXG4gICAgKTtcblxuICAgIHJldHVybiAkc2VsZWN0aW9uO1xuICB9O1xuXG4gIE11bHRpcGxlU2VsZWN0aW9uLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIE11bHRpcGxlU2VsZWN0aW9uLl9fc3VwZXJfXy5iaW5kLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cbiAgICB2YXIgaWQgPSBjb250YWluZXIuaWQgKyAnLWNvbnRhaW5lcic7XG4gICAgdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQnKS5hdHRyKCdpZCcsIGlkKTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbignY2xpY2snLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBzZWxmLnRyaWdnZXIoJ3RvZ2dsZScsIHtcbiAgICAgICAgb3JpZ2luYWxFdmVudDogZXZ0XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbihcbiAgICAgICdjbGljaycsXG4gICAgICAnLnNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2VfX3JlbW92ZScsXG4gICAgICBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIC8vIElnbm9yZSB0aGUgZXZlbnQgaWYgaXQgaXMgZGlzYWJsZWRcbiAgICAgICAgaWYgKHNlbGYuaXNEaXNhYmxlZCgpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyICRyZW1vdmUgPSAkKHRoaXMpO1xuICAgICAgICB2YXIgJHNlbGVjdGlvbiA9ICRyZW1vdmUucGFyZW50KCk7XG5cbiAgICAgICAgdmFyIGRhdGEgPSBVdGlscy5HZXREYXRhKCRzZWxlY3Rpb25bMF0sICdkYXRhJyk7XG5cbiAgICAgICAgc2VsZi50cmlnZ2VyKCd1bnNlbGVjdCcsIHtcbiAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldnQsXG4gICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKFxuICAgICAgJ2tleWRvd24nLFxuICAgICAgJy5zZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlX19yZW1vdmUnLFxuICAgICAgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAvLyBJZ25vcmUgdGhlIGV2ZW50IGlmIGl0IGlzIGRpc2FibGVkXG4gICAgICAgIGlmIChzZWxmLmlzRGlzYWJsZWQoKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIH1cbiAgICApO1xuICB9O1xuXG4gIE11bHRpcGxlU2VsZWN0aW9uLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgJHJlbmRlcmVkID0gdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQnKTtcbiAgICAkcmVuZGVyZWQuZW1wdHkoKTtcbiAgICAkcmVuZGVyZWQucmVtb3ZlQXR0cigndGl0bGUnKTtcbiAgfTtcblxuICBNdWx0aXBsZVNlbGVjdGlvbi5wcm90b3R5cGUuZGlzcGxheSA9IGZ1bmN0aW9uIChkYXRhLCBjb250YWluZXIpIHtcbiAgICB2YXIgdGVtcGxhdGUgPSB0aGlzLm9wdGlvbnMuZ2V0KCd0ZW1wbGF0ZVNlbGVjdGlvbicpO1xuICAgIHZhciBlc2NhcGVNYXJrdXAgPSB0aGlzLm9wdGlvbnMuZ2V0KCdlc2NhcGVNYXJrdXAnKTtcblxuICAgIHJldHVybiBlc2NhcGVNYXJrdXAodGVtcGxhdGUoZGF0YSwgY29udGFpbmVyKSk7XG4gIH07XG5cbiAgTXVsdGlwbGVTZWxlY3Rpb24ucHJvdG90eXBlLnNlbGVjdGlvbkNvbnRhaW5lciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgJGNvbnRhaW5lciA9ICQoXG4gICAgICAnPGxpIGNsYXNzPVwic2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZVwiPicgK1xuICAgICAgICAnPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlX19yZW1vdmVcIiAnICtcbiAgICAgICAgJ3RhYmluZGV4PVwiLTFcIj4nICtcbiAgICAgICAgICAnPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj4nICtcbiAgICAgICAgJzwvYnV0dG9uPicgK1xuICAgICAgICAnPHNwYW4gY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlX19kaXNwbGF5XCI+PC9zcGFuPicgK1xuICAgICAgJzwvbGk+J1xuICAgICk7XG5cbiAgICByZXR1cm4gJGNvbnRhaW5lcjtcbiAgfTtcblxuICBNdWx0aXBsZVNlbGVjdGlvbi5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB0aGlzLmNsZWFyKCk7XG5cbiAgICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgJHNlbGVjdGlvbnMgPSBbXTtcblxuICAgIHZhciBzZWxlY3Rpb25JZFByZWZpeCA9IHRoaXMuJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkJylcbiAgICAgIC5hdHRyKCdpZCcpICsgJy1jaG9pY2UtJztcblxuICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZGF0YS5sZW5ndGg7IGQrKykge1xuICAgICAgdmFyIHNlbGVjdGlvbiA9IGRhdGFbZF07XG5cbiAgICAgIHZhciAkc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb25Db250YWluZXIoKTtcbiAgICAgIHZhciBmb3JtYXR0ZWQgPSB0aGlzLmRpc3BsYXkoc2VsZWN0aW9uLCAkc2VsZWN0aW9uKTtcblxuICAgICAgdmFyIHNlbGVjdGlvbklkID0gc2VsZWN0aW9uSWRQcmVmaXggKyBVdGlscy5nZW5lcmF0ZUNoYXJzKDQpICsgJy0nO1xuXG4gICAgICBpZiAoc2VsZWN0aW9uLmlkKSB7XG4gICAgICAgIHNlbGVjdGlvbklkICs9IHNlbGVjdGlvbi5pZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbGVjdGlvbklkICs9IFV0aWxzLmdlbmVyYXRlQ2hhcnMoNCk7XG4gICAgICB9XG5cbiAgICAgICRzZWxlY3Rpb24uZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2VfX2Rpc3BsYXknKVxuICAgICAgICAuYXBwZW5kKGZvcm1hdHRlZClcbiAgICAgICAgLmF0dHIoJ2lkJywgc2VsZWN0aW9uSWQpO1xuXG4gICAgICB2YXIgdGl0bGUgPSBzZWxlY3Rpb24udGl0bGUgfHwgc2VsZWN0aW9uLnRleHQ7XG5cbiAgICAgIGlmICh0aXRsZSkge1xuICAgICAgICAkc2VsZWN0aW9uLmF0dHIoJ3RpdGxlJywgdGl0bGUpO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVtb3ZlSXRlbSA9IHRoaXMub3B0aW9ucy5nZXQoJ3RyYW5zbGF0aW9ucycpLmdldCgncmVtb3ZlSXRlbScpO1xuXG4gICAgICB2YXIgJHJlbW92ZSA9ICRzZWxlY3Rpb24uZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2VfX3JlbW92ZScpO1xuXG4gICAgICAkcmVtb3ZlLmF0dHIoJ3RpdGxlJywgcmVtb3ZlSXRlbSgpKTtcbiAgICAgICRyZW1vdmUuYXR0cignYXJpYS1sYWJlbCcsIHJlbW92ZUl0ZW0oKSk7XG4gICAgICAkcmVtb3ZlLmF0dHIoJ2FyaWEtZGVzY3JpYmVkYnknLCBzZWxlY3Rpb25JZCk7XG5cbiAgICAgIFV0aWxzLlN0b3JlRGF0YSgkc2VsZWN0aW9uWzBdLCAnZGF0YScsIHNlbGVjdGlvbik7XG5cbiAgICAgICRzZWxlY3Rpb25zLnB1c2goJHNlbGVjdGlvbik7XG4gICAgfVxuXG4gICAgdmFyICRyZW5kZXJlZCA9IHRoaXMuJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkJyk7XG5cbiAgICAkcmVuZGVyZWQuYXBwZW5kKCRzZWxlY3Rpb25zKTtcbiAgfTtcblxuICByZXR1cm4gTXVsdGlwbGVTZWxlY3Rpb247XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL3NlbGVjdGlvbi9wbGFjZWhvbGRlcicsW1xuXG5dLCBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFBsYWNlaG9sZGVyIChkZWNvcmF0ZWQsICRlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMubm9ybWFsaXplUGxhY2Vob2xkZXIob3B0aW9ucy5nZXQoJ3BsYWNlaG9sZGVyJykpO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgJGVsZW1lbnQsIG9wdGlvbnMpO1xuICB9XG5cbiAgUGxhY2Vob2xkZXIucHJvdG90eXBlLm5vcm1hbGl6ZVBsYWNlaG9sZGVyID0gZnVuY3Rpb24gKF8sIHBsYWNlaG9sZGVyKSB7XG4gICAgaWYgKHR5cGVvZiBwbGFjZWhvbGRlciA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHBsYWNlaG9sZGVyID0ge1xuICAgICAgICBpZDogJycsXG4gICAgICAgIHRleHQ6IHBsYWNlaG9sZGVyXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBwbGFjZWhvbGRlcjtcbiAgfTtcblxuICBQbGFjZWhvbGRlci5wcm90b3R5cGUuY3JlYXRlUGxhY2Vob2xkZXIgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBwbGFjZWhvbGRlcikge1xuICAgIHZhciAkcGxhY2Vob2xkZXIgPSB0aGlzLnNlbGVjdGlvbkNvbnRhaW5lcigpO1xuXG4gICAgJHBsYWNlaG9sZGVyLmh0bWwodGhpcy5kaXNwbGF5KHBsYWNlaG9sZGVyKSk7XG4gICAgJHBsYWNlaG9sZGVyWzBdLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdDItc2VsZWN0aW9uX19wbGFjZWhvbGRlcicpO1xuICAgICRwbGFjZWhvbGRlclswXS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlJyk7XG5cbiAgICB2YXIgcGxhY2Vob2xkZXJUaXRsZSA9IHBsYWNlaG9sZGVyLnRpdGxlIHx8XG4gICAgICBwbGFjZWhvbGRlci50ZXh0IHx8XG4gICAgICAkcGxhY2Vob2xkZXIudGV4dCgpO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQnKS5hdHRyKFxuICAgICAgJ3RpdGxlJyxcbiAgICAgIHBsYWNlaG9sZGVyVGl0bGVcbiAgICApO1xuXG4gICAgcmV0dXJuICRwbGFjZWhvbGRlcjtcbiAgfTtcblxuICBQbGFjZWhvbGRlci5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgZGF0YSkge1xuICAgIHZhciBzaW5nbGVQbGFjZWhvbGRlciA9IChcbiAgICAgIGRhdGEubGVuZ3RoID09IDEgJiYgZGF0YVswXS5pZCAhPSB0aGlzLnBsYWNlaG9sZGVyLmlkXG4gICAgKTtcbiAgICB2YXIgbXVsdGlwbGVTZWxlY3Rpb25zID0gZGF0YS5sZW5ndGggPiAxO1xuXG4gICAgaWYgKG11bHRpcGxlU2VsZWN0aW9ucyB8fCBzaW5nbGVQbGFjZWhvbGRlcikge1xuICAgICAgcmV0dXJuIGRlY29yYXRlZC5jYWxsKHRoaXMsIGRhdGEpO1xuICAgIH1cblxuICAgIHRoaXMuY2xlYXIoKTtcblxuICAgIHZhciAkcGxhY2Vob2xkZXIgPSB0aGlzLmNyZWF0ZVBsYWNlaG9sZGVyKHRoaXMucGxhY2Vob2xkZXIpO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQnKS5hcHBlbmQoJHBsYWNlaG9sZGVyKTtcbiAgfTtcblxuICByZXR1cm4gUGxhY2Vob2xkZXI7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL3NlbGVjdGlvbi9hbGxvd0NsZWFyJyxbXG4gICdqcXVlcnknLFxuICAnLi4va2V5cycsXG4gICcuLi91dGlscydcbl0sIGZ1bmN0aW9uICgkLCBLRVlTLCBVdGlscykge1xuICBmdW5jdGlvbiBBbGxvd0NsZWFyICgpIHsgfVxuXG4gIEFsbG93Q2xlYXIucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBjb250YWluZXIsICRjb250YWluZXIpO1xuXG4gICAgaWYgKHRoaXMucGxhY2Vob2xkZXIgPT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5nZXQoJ2RlYnVnJykgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS5lcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICdTZWxlY3QyOiBUaGUgYGFsbG93Q2xlYXJgIG9wdGlvbiBzaG91bGQgYmUgdXNlZCBpbiBjb21iaW5hdGlvbiAnICtcbiAgICAgICAgICAnd2l0aCB0aGUgYHBsYWNlaG9sZGVyYCBvcHRpb24uJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbignbW91c2Vkb3duJywgJy5zZWxlY3QyLXNlbGVjdGlvbl9fY2xlYXInLFxuICAgICAgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICBzZWxmLl9oYW5kbGVDbGVhcihldnQpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdrZXlwcmVzcycsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYuX2hhbmRsZUtleWJvYXJkQ2xlYXIoZXZ0LCBjb250YWluZXIpO1xuICAgIH0pO1xuICB9O1xuXG4gIEFsbG93Q2xlYXIucHJvdG90eXBlLl9oYW5kbGVDbGVhciA9IGZ1bmN0aW9uIChfLCBldnQpIHtcbiAgICAvLyBJZ25vcmUgdGhlIGV2ZW50IGlmIGl0IGlzIGRpc2FibGVkXG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyICRjbGVhciA9IHRoaXMuJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX2NsZWFyJyk7XG5cbiAgICAvLyBJZ25vcmUgdGhlIGV2ZW50IGlmIG5vdGhpbmcgaGFzIGJlZW4gc2VsZWN0ZWRcbiAgICBpZiAoJGNsZWFyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHZhciBkYXRhID0gVXRpbHMuR2V0RGF0YSgkY2xlYXJbMF0sICdkYXRhJyk7XG5cbiAgICB2YXIgcHJldmlvdXNWYWwgPSB0aGlzLiRlbGVtZW50LnZhbCgpO1xuICAgIHRoaXMuJGVsZW1lbnQudmFsKHRoaXMucGxhY2Vob2xkZXIuaWQpO1xuXG4gICAgdmFyIHVuc2VsZWN0RGF0YSA9IHtcbiAgICAgIGRhdGE6IGRhdGFcbiAgICB9O1xuICAgIHRoaXMudHJpZ2dlcignY2xlYXInLCB1bnNlbGVjdERhdGEpO1xuICAgIGlmICh1bnNlbGVjdERhdGEucHJldmVudGVkKSB7XG4gICAgICB0aGlzLiRlbGVtZW50LnZhbChwcmV2aW91c1ZhbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yICh2YXIgZCA9IDA7IGQgPCBkYXRhLmxlbmd0aDsgZCsrKSB7XG4gICAgICB1bnNlbGVjdERhdGEgPSB7XG4gICAgICAgIGRhdGE6IGRhdGFbZF1cbiAgICAgIH07XG5cbiAgICAgIC8vIFRyaWdnZXIgdGhlIGB1bnNlbGVjdGAgZXZlbnQsIHNvIHBlb3BsZSBjYW4gcHJldmVudCBpdCBmcm9tIGJlaW5nXG4gICAgICAvLyBjbGVhcmVkLlxuICAgICAgdGhpcy50cmlnZ2VyKCd1bnNlbGVjdCcsIHVuc2VsZWN0RGF0YSk7XG5cbiAgICAgIC8vIElmIHRoZSBldmVudCB3YXMgcHJldmVudGVkLCBkb24ndCBjbGVhciBpdCBvdXQuXG4gICAgICBpZiAodW5zZWxlY3REYXRhLnByZXZlbnRlZCkge1xuICAgICAgICB0aGlzLiRlbGVtZW50LnZhbChwcmV2aW91c1ZhbCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLiRlbGVtZW50LnRyaWdnZXIoJ2lucHV0JykudHJpZ2dlcignY2hhbmdlJyk7XG5cbiAgICB0aGlzLnRyaWdnZXIoJ3RvZ2dsZScsIHt9KTtcbiAgfTtcblxuICBBbGxvd0NsZWFyLnByb3RvdHlwZS5faGFuZGxlS2V5Ym9hcmRDbGVhciA9IGZ1bmN0aW9uIChfLCBldnQsIGNvbnRhaW5lcikge1xuICAgIGlmIChjb250YWluZXIuaXNPcGVuKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZ0LndoaWNoID09IEtFWVMuREVMRVRFIHx8IGV2dC53aGljaCA9PSBLRVlTLkJBQ0tTUEFDRSkge1xuICAgICAgdGhpcy5faGFuZGxlQ2xlYXIoZXZ0KTtcbiAgICB9XG4gIH07XG5cbiAgQWxsb3dDbGVhci5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgZGF0YSkge1xuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIGRhdGEpO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fY2xlYXInKS5yZW1vdmUoKTtcbiAgICB0aGlzLiRzZWxlY3Rpb25bMF0uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0Mi1zZWxlY3Rpb24tLWNsZWFyYWJsZScpO1xuXG4gICAgaWYgKHRoaXMuJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX3BsYWNlaG9sZGVyJykubGVuZ3RoID4gMCB8fFxuICAgICAgICBkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBzZWxlY3Rpb25JZCA9IHRoaXMuJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkJylcbiAgICAgIC5hdHRyKCdpZCcpO1xuXG4gICAgdmFyIHJlbW92ZUFsbCA9IHRoaXMub3B0aW9ucy5nZXQoJ3RyYW5zbGF0aW9ucycpLmdldCgncmVtb3ZlQWxsSXRlbXMnKTtcblxuICAgIHZhciAkcmVtb3ZlID0gJChcbiAgICAgICc8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInNlbGVjdDItc2VsZWN0aW9uX19jbGVhclwiIHRhYmluZGV4PVwiLTFcIj4nICtcbiAgICAgICAgJzxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+JyArXG4gICAgICAnPC9idXR0b24+J1xuICAgICk7XG4gICAgJHJlbW92ZS5hdHRyKCd0aXRsZScsIHJlbW92ZUFsbCgpKTtcbiAgICAkcmVtb3ZlLmF0dHIoJ2FyaWEtbGFiZWwnLCByZW1vdmVBbGwoKSk7XG4gICAgJHJlbW92ZS5hdHRyKCdhcmlhLWRlc2NyaWJlZGJ5Jywgc2VsZWN0aW9uSWQpO1xuICAgIFV0aWxzLlN0b3JlRGF0YSgkcmVtb3ZlWzBdLCAnZGF0YScsIGRhdGEpO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLnByZXBlbmQoJHJlbW92ZSk7XG4gICAgdGhpcy4kc2VsZWN0aW9uWzBdLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdDItc2VsZWN0aW9uLS1jbGVhcmFibGUnKTtcbiAgfTtcblxuICByZXR1cm4gQWxsb3dDbGVhcjtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvc2VsZWN0aW9uL3NlYXJjaCcsW1xuICAnanF1ZXJ5JyxcbiAgJy4uL3V0aWxzJyxcbiAgJy4uL2tleXMnXG5dLCBmdW5jdGlvbiAoJCwgVXRpbHMsIEtFWVMpIHtcbiAgZnVuY3Rpb24gU2VhcmNoIChkZWNvcmF0ZWQsICRlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgJGVsZW1lbnQsIG9wdGlvbnMpO1xuICB9XG5cbiAgU2VhcmNoLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoZGVjb3JhdGVkKSB7XG4gICAgdmFyIHNlYXJjaExhYmVsID0gdGhpcy5vcHRpb25zLmdldCgndHJhbnNsYXRpb25zJykuZ2V0KCdzZWFyY2gnKTtcbiAgICB2YXIgJHNlYXJjaCA9ICQoXG4gICAgICAnPHNwYW4gY2xhc3M9XCJzZWxlY3QyLXNlYXJjaCBzZWxlY3QyLXNlYXJjaC0taW5saW5lXCI+JyArXG4gICAgICAgICc8dGV4dGFyZWEgY2xhc3M9XCJzZWxlY3QyLXNlYXJjaF9fZmllbGRcIicrXG4gICAgICAgICcgdHlwZT1cInNlYXJjaFwiIHRhYmluZGV4PVwiLTFcIicgK1xuICAgICAgICAnIGF1dG9jb3JyZWN0PVwib2ZmXCIgYXV0b2NhcGl0YWxpemU9XCJub25lXCInICtcbiAgICAgICAgJyBzcGVsbGNoZWNrPVwiZmFsc2VcIiByb2xlPVwic2VhcmNoYm94XCIgYXJpYS1hdXRvY29tcGxldGU9XCJsaXN0XCIgPicgK1xuICAgICAgICAnPC90ZXh0YXJlYT4nICtcbiAgICAgICc8L3NwYW4+J1xuICAgICk7XG5cbiAgICB0aGlzLiRzZWFyY2hDb250YWluZXIgPSAkc2VhcmNoO1xuICAgIHRoaXMuJHNlYXJjaCA9ICRzZWFyY2guZmluZCgndGV4dGFyZWEnKTtcblxuICAgIHRoaXMuJHNlYXJjaC5wcm9wKCdhdXRvY29tcGxldGUnLCB0aGlzLm9wdGlvbnMuZ2V0KCdhdXRvY29tcGxldGUnKSk7XG4gICAgdGhpcy4kc2VhcmNoLmF0dHIoJ2FyaWEtbGFiZWwnLCBzZWFyY2hMYWJlbCgpKTtcblxuICAgIHZhciAkcmVuZGVyZWQgPSBkZWNvcmF0ZWQuY2FsbCh0aGlzKTtcblxuICAgIHRoaXMuX3RyYW5zZmVyVGFiSW5kZXgoKTtcbiAgICAkcmVuZGVyZWQuYXBwZW5kKHRoaXMuJHNlYXJjaENvbnRhaW5lcik7XG5cbiAgICByZXR1cm4gJHJlbmRlcmVkO1xuICB9O1xuXG4gIFNlYXJjaC5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHZhciByZXN1bHRzSWQgPSBjb250YWluZXIuaWQgKyAnLXJlc3VsdHMnO1xuICAgIHZhciBzZWxlY3Rpb25JZCA9IGNvbnRhaW5lci5pZCArICctY29udGFpbmVyJztcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIGNvbnRhaW5lciwgJGNvbnRhaW5lcik7XG5cbiAgICBzZWxmLiRzZWFyY2guYXR0cignYXJpYS1kZXNjcmliZWRieScsIHNlbGVjdGlvbklkKTtcblxuICAgIGNvbnRhaW5lci5vbignb3BlbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuJHNlYXJjaC5hdHRyKCdhcmlhLWNvbnRyb2xzJywgcmVzdWx0c0lkKTtcbiAgICAgIHNlbGYuJHNlYXJjaC50cmlnZ2VyKCdmb2N1cycpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuJHNlYXJjaC52YWwoJycpO1xuICAgICAgc2VsZi5yZXNpemVTZWFyY2goKTtcbiAgICAgIHNlbGYuJHNlYXJjaC5yZW1vdmVBdHRyKCdhcmlhLWNvbnRyb2xzJyk7XG4gICAgICBzZWxmLiRzZWFyY2gucmVtb3ZlQXR0cignYXJpYS1hY3RpdmVkZXNjZW5kYW50Jyk7XG4gICAgICBzZWxmLiRzZWFyY2gudHJpZ2dlcignZm9jdXMnKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignZW5hYmxlJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi4kc2VhcmNoLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpO1xuXG4gICAgICBzZWxmLl90cmFuc2ZlclRhYkluZGV4KCk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ2Rpc2FibGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLiRzZWFyY2gucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignZm9jdXMnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBzZWxmLiRzZWFyY2gudHJpZ2dlcignZm9jdXMnKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czpmb2N1cycsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIGlmIChwYXJhbXMuZGF0YS5fcmVzdWx0SWQpIHtcbiAgICAgICAgc2VsZi4kc2VhcmNoLmF0dHIoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcsIHBhcmFtcy5kYXRhLl9yZXN1bHRJZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxmLiRzZWFyY2gucmVtb3ZlQXR0cignYXJpYS1hY3RpdmVkZXNjZW5kYW50Jyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24ub24oJ2ZvY3VzaW4nLCAnLnNlbGVjdDItc2VhcmNoLS1pbmxpbmUnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBzZWxmLnRyaWdnZXIoJ2ZvY3VzJywgZXZ0KTtcbiAgICB9KTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbignZm9jdXNvdXQnLCAnLnNlbGVjdDItc2VhcmNoLS1pbmxpbmUnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBzZWxmLl9oYW5kbGVCbHVyKGV2dCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24ub24oJ2tleWRvd24nLCAnLnNlbGVjdDItc2VhcmNoLS1pbmxpbmUnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgIHNlbGYudHJpZ2dlcigna2V5cHJlc3MnLCBldnQpO1xuXG4gICAgICBzZWxmLl9rZXlVcFByZXZlbnRlZCA9IGV2dC5pc0RlZmF1bHRQcmV2ZW50ZWQoKTtcblxuICAgICAgdmFyIGtleSA9IGV2dC53aGljaDtcblxuICAgICAgaWYgKGtleSA9PT0gS0VZUy5CQUNLU1BBQ0UgJiYgc2VsZi4kc2VhcmNoLnZhbCgpID09PSAnJykge1xuICAgICAgICB2YXIgJHByZXZpb3VzQ2hvaWNlID0gc2VsZi4kc2VsZWN0aW9uXG4gICAgICAgICAgLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlJykubGFzdCgpO1xuXG4gICAgICAgIGlmICgkcHJldmlvdXNDaG9pY2UubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHZhciBpdGVtID0gVXRpbHMuR2V0RGF0YSgkcHJldmlvdXNDaG9pY2VbMF0sICdkYXRhJyk7XG5cbiAgICAgICAgICBzZWxmLnNlYXJjaFJlbW92ZUNob2ljZShpdGVtKTtcblxuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24ub24oJ2NsaWNrJywgJy5zZWxlY3QyLXNlYXJjaC0taW5saW5lJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgaWYgKHNlbGYuJHNlYXJjaC52YWwoKSkge1xuICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBUcnkgdG8gZGV0ZWN0IHRoZSBJRSB2ZXJzaW9uIHNob3VsZCB0aGUgYGRvY3VtZW50TW9kZWAgcHJvcGVydHkgdGhhdFxuICAgIC8vIGlzIHN0b3JlZCBvbiB0aGUgZG9jdW1lbnQuIFRoaXMgaXMgb25seSBpbXBsZW1lbnRlZCBpbiBJRSBhbmQgaXNcbiAgICAvLyBzbGlnaHRseSBjbGVhbmVyIHRoYW4gZG9pbmcgYSB1c2VyIGFnZW50IGNoZWNrLlxuICAgIC8vIFRoaXMgcHJvcGVydHkgaXMgbm90IGF2YWlsYWJsZSBpbiBFZGdlLCBidXQgRWRnZSBhbHNvIGRvZXNuJ3QgaGF2ZVxuICAgIC8vIHRoaXMgYnVnLlxuICAgIHZhciBtc2llID0gZG9jdW1lbnQuZG9jdW1lbnRNb2RlO1xuICAgIHZhciBkaXNhYmxlSW5wdXRFdmVudHMgPSBtc2llICYmIG1zaWUgPD0gMTE7XG5cbiAgICAvLyBXb3JrYXJvdW5kIGZvciBicm93c2VycyB3aGljaCBkbyBub3Qgc3VwcG9ydCB0aGUgYGlucHV0YCBldmVudFxuICAgIC8vIFRoaXMgd2lsbCBwcmV2ZW50IGRvdWJsZS10cmlnZ2VyaW5nIG9mIGV2ZW50cyBmb3IgYnJvd3NlcnMgd2hpY2ggc3VwcG9ydFxuICAgIC8vIGJvdGggdGhlIGBrZXl1cGAgYW5kIGBpbnB1dGAgZXZlbnRzLlxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbihcbiAgICAgICdpbnB1dC5zZWFyY2hjaGVjaycsXG4gICAgICAnLnNlbGVjdDItc2VhcmNoLS1pbmxpbmUnLFxuICAgICAgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAvLyBJRSB3aWxsIHRyaWdnZXIgdGhlIGBpbnB1dGAgZXZlbnQgd2hlbiBhIHBsYWNlaG9sZGVyIGlzIHVzZWQgb24gYVxuICAgICAgICAvLyBzZWFyY2ggYm94LiBUbyBnZXQgYXJvdW5kIHRoaXMgaXNzdWUsIHdlIGFyZSBmb3JjZWQgdG8gaWdub3JlIGFsbFxuICAgICAgICAvLyBgaW5wdXRgIGV2ZW50cyBpbiBJRSBhbmQga2VlcCB1c2luZyBga2V5dXBgLlxuICAgICAgICBpZiAoZGlzYWJsZUlucHV0RXZlbnRzKSB7XG4gICAgICAgICAgc2VsZi4kc2VsZWN0aW9uLm9mZignaW5wdXQuc2VhcmNoIGlucHV0LnNlYXJjaGNoZWNrJyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVW5iaW5kIHRoZSBkdXBsaWNhdGVkIGBrZXl1cGAgZXZlbnRcbiAgICAgICAgc2VsZi4kc2VsZWN0aW9uLm9mZigna2V5dXAuc2VhcmNoJyk7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbihcbiAgICAgICdrZXl1cC5zZWFyY2ggaW5wdXQuc2VhcmNoJyxcbiAgICAgICcuc2VsZWN0Mi1zZWFyY2gtLWlubGluZScsXG4gICAgICBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIC8vIElFIHdpbGwgdHJpZ2dlciB0aGUgYGlucHV0YCBldmVudCB3aGVuIGEgcGxhY2Vob2xkZXIgaXMgdXNlZCBvbiBhXG4gICAgICAgIC8vIHNlYXJjaCBib3guIFRvIGdldCBhcm91bmQgdGhpcyBpc3N1ZSwgd2UgYXJlIGZvcmNlZCB0byBpZ25vcmUgYWxsXG4gICAgICAgIC8vIGBpbnB1dGAgZXZlbnRzIGluIElFIGFuZCBrZWVwIHVzaW5nIGBrZXl1cGAuXG4gICAgICAgIGlmIChkaXNhYmxlSW5wdXRFdmVudHMgJiYgZXZ0LnR5cGUgPT09ICdpbnB1dCcpIHtcbiAgICAgICAgICBzZWxmLiRzZWxlY3Rpb24ub2ZmKCdpbnB1dC5zZWFyY2ggaW5wdXQuc2VhcmNoY2hlY2snKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIga2V5ID0gZXZ0LndoaWNoO1xuXG4gICAgICAgIC8vIFdlIGNhbiBmcmVlbHkgaWdub3JlIGV2ZW50cyBmcm9tIG1vZGlmaWVyIGtleXNcbiAgICAgICAgaWYgKGtleSA9PSBLRVlTLlNISUZUIHx8IGtleSA9PSBLRVlTLkNUUkwgfHwga2V5ID09IEtFWVMuQUxUKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGFiYmluZyB3aWxsIGJlIGhhbmRsZWQgZHVyaW5nIHRoZSBga2V5ZG93bmAgcGhhc2VcbiAgICAgICAgaWYgKGtleSA9PSBLRVlTLlRBQikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGYuaGFuZGxlU2VhcmNoKGV2dCk7XG4gICAgICB9XG4gICAgKTtcbiAgfTtcblxuICAvKipcbiAgICogVGhpcyBtZXRob2Qgd2lsbCB0cmFuc2ZlciB0aGUgdGFiaW5kZXggYXR0cmlidXRlIGZyb20gdGhlIHJlbmRlcmVkXG4gICAqIHNlbGVjdGlvbiB0byB0aGUgc2VhcmNoIGJveC4gVGhpcyBhbGxvd3MgZm9yIHRoZSBzZWFyY2ggYm94IHRvIGJlIHVzZWQgYXNcbiAgICogdGhlIHByaW1hcnkgZm9jdXMgaW5zdGVhZCBvZiB0aGUgc2VsZWN0aW9uIGNvbnRhaW5lci5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIFNlYXJjaC5wcm90b3R5cGUuX3RyYW5zZmVyVGFiSW5kZXggPSBmdW5jdGlvbiAoZGVjb3JhdGVkKSB7XG4gICAgdGhpcy4kc2VhcmNoLmF0dHIoJ3RhYmluZGV4JywgdGhpcy4kc2VsZWN0aW9uLmF0dHIoJ3RhYmluZGV4JykpO1xuICAgIHRoaXMuJHNlbGVjdGlvbi5hdHRyKCd0YWJpbmRleCcsICctMScpO1xuICB9O1xuXG4gIFNlYXJjaC5wcm90b3R5cGUuY3JlYXRlUGxhY2Vob2xkZXIgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBwbGFjZWhvbGRlcikge1xuICAgIHRoaXMuJHNlYXJjaC5hdHRyKCdwbGFjZWhvbGRlcicsIHBsYWNlaG9sZGVyLnRleHQpO1xuICB9O1xuXG4gIFNlYXJjaC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgZGF0YSkge1xuICAgIHZhciBzZWFyY2hIYWRGb2N1cyA9IHRoaXMuJHNlYXJjaFswXSA9PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuXG4gICAgdGhpcy4kc2VhcmNoLmF0dHIoJ3BsYWNlaG9sZGVyJywgJycpO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgZGF0YSk7XG5cbiAgICB0aGlzLnJlc2l6ZVNlYXJjaCgpO1xuICAgIGlmIChzZWFyY2hIYWRGb2N1cykge1xuICAgICAgdGhpcy4kc2VhcmNoLnRyaWdnZXIoJ2ZvY3VzJyk7XG4gICAgfVxuICB9O1xuXG4gIFNlYXJjaC5wcm90b3R5cGUuaGFuZGxlU2VhcmNoID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMucmVzaXplU2VhcmNoKCk7XG5cbiAgICBpZiAoIXRoaXMuX2tleVVwUHJldmVudGVkKSB7XG4gICAgICB2YXIgaW5wdXQgPSB0aGlzLiRzZWFyY2gudmFsKCk7XG5cbiAgICAgIHRoaXMudHJpZ2dlcigncXVlcnknLCB7XG4gICAgICAgIHRlcm06IGlucHV0XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl9rZXlVcFByZXZlbnRlZCA9IGZhbHNlO1xuICB9O1xuXG4gIFNlYXJjaC5wcm90b3R5cGUuc2VhcmNoUmVtb3ZlQ2hvaWNlID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgaXRlbSkge1xuICAgIHRoaXMudHJpZ2dlcigndW5zZWxlY3QnLCB7XG4gICAgICBkYXRhOiBpdGVtXG4gICAgfSk7XG5cbiAgICB0aGlzLiRzZWFyY2gudmFsKGl0ZW0udGV4dCk7XG4gICAgdGhpcy5oYW5kbGVTZWFyY2goKTtcbiAgfTtcblxuICBTZWFyY2gucHJvdG90eXBlLnJlc2l6ZVNlYXJjaCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLiRzZWFyY2guY3NzKCd3aWR0aCcsICcyNXB4Jyk7XG5cbiAgICB2YXIgd2lkdGggPSAnMTAwJSc7XG5cbiAgICBpZiAodGhpcy4kc2VhcmNoLmF0dHIoJ3BsYWNlaG9sZGVyJykgPT09ICcnKSB7XG4gICAgICB2YXIgbWluaW11bVdpZHRoID0gdGhpcy4kc2VhcmNoLnZhbCgpLmxlbmd0aCArIDE7XG5cbiAgICAgIHdpZHRoID0gKG1pbmltdW1XaWR0aCAqIDAuNzUpICsgJ2VtJztcbiAgICB9XG5cbiAgICB0aGlzLiRzZWFyY2guY3NzKCd3aWR0aCcsIHdpZHRoKTtcbiAgfTtcblxuICByZXR1cm4gU2VhcmNoO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9zZWxlY3Rpb24vc2VsZWN0aW9uQ3NzJyxbXG4gICcuLi91dGlscydcbl0sIGZ1bmN0aW9uIChVdGlscykge1xuICBmdW5jdGlvbiBTZWxlY3Rpb25DU1MgKCkgeyB9XG5cbiAgU2VsZWN0aW9uQ1NTLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoZGVjb3JhdGVkKSB7XG4gICAgdmFyICRzZWxlY3Rpb24gPSBkZWNvcmF0ZWQuY2FsbCh0aGlzKTtcblxuICAgIHZhciBzZWxlY3Rpb25Dc3NDbGFzcyA9IHRoaXMub3B0aW9ucy5nZXQoJ3NlbGVjdGlvbkNzc0NsYXNzJykgfHwgJyc7XG5cbiAgICBpZiAoc2VsZWN0aW9uQ3NzQ2xhc3MuaW5kZXhPZignOmFsbDonKSAhPT0gLTEpIHtcbiAgICAgIHNlbGVjdGlvbkNzc0NsYXNzID0gc2VsZWN0aW9uQ3NzQ2xhc3MucmVwbGFjZSgnOmFsbDonLCAnJyk7XG5cbiAgICAgIFV0aWxzLmNvcHlOb25JbnRlcm5hbENzc0NsYXNzZXMoJHNlbGVjdGlvblswXSwgdGhpcy4kZWxlbWVudFswXSk7XG4gICAgfVxuXG4gICAgJHNlbGVjdGlvbi5hZGRDbGFzcyhzZWxlY3Rpb25Dc3NDbGFzcyk7XG5cbiAgICByZXR1cm4gJHNlbGVjdGlvbjtcbiAgfTtcblxuICByZXR1cm4gU2VsZWN0aW9uQ1NTO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9zZWxlY3Rpb24vZXZlbnRSZWxheScsW1xuICAnanF1ZXJ5J1xuXSwgZnVuY3Rpb24gKCQpIHtcbiAgZnVuY3Rpb24gRXZlbnRSZWxheSAoKSB7IH1cblxuICBFdmVudFJlbGF5LnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciByZWxheUV2ZW50cyA9IFtcbiAgICAgICdvcGVuJywgJ29wZW5pbmcnLFxuICAgICAgJ2Nsb3NlJywgJ2Nsb3NpbmcnLFxuICAgICAgJ3NlbGVjdCcsICdzZWxlY3RpbmcnLFxuICAgICAgJ3Vuc2VsZWN0JywgJ3Vuc2VsZWN0aW5nJyxcbiAgICAgICdjbGVhcicsICdjbGVhcmluZydcbiAgICBdO1xuXG4gICAgdmFyIHByZXZlbnRhYmxlRXZlbnRzID0gW1xuICAgICAgJ29wZW5pbmcnLCAnY2xvc2luZycsICdzZWxlY3RpbmcnLCAndW5zZWxlY3RpbmcnLCAnY2xlYXJpbmcnXG4gICAgXTtcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIGNvbnRhaW5lciwgJGNvbnRhaW5lcik7XG5cbiAgICBjb250YWluZXIub24oJyonLCBmdW5jdGlvbiAobmFtZSwgcGFyYW1zKSB7XG4gICAgICAvLyBJZ25vcmUgZXZlbnRzIHRoYXQgc2hvdWxkIG5vdCBiZSByZWxheWVkXG4gICAgICBpZiAocmVsYXlFdmVudHMuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBUaGUgcGFyYW1ldGVycyBzaG91bGQgYWx3YXlzIGJlIGFuIG9iamVjdFxuICAgICAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuXG4gICAgICAvLyBHZW5lcmF0ZSB0aGUgalF1ZXJ5IGV2ZW50IGZvciB0aGUgU2VsZWN0MiBldmVudFxuICAgICAgdmFyIGV2dCA9ICQuRXZlbnQoJ3NlbGVjdDI6JyArIG5hbWUsIHtcbiAgICAgICAgcGFyYW1zOiBwYXJhbXNcbiAgICAgIH0pO1xuXG4gICAgICBzZWxmLiRlbGVtZW50LnRyaWdnZXIoZXZ0KTtcblxuICAgICAgLy8gT25seSBoYW5kbGUgcHJldmVudGFibGUgZXZlbnRzIGlmIGl0IHdhcyBvbmVcbiAgICAgIGlmIChwcmV2ZW50YWJsZUV2ZW50cy5pbmRleE9mKG5hbWUpID09PSAtMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHBhcmFtcy5wcmV2ZW50ZWQgPSBldnQuaXNEZWZhdWx0UHJldmVudGVkKCk7XG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIEV2ZW50UmVsYXk7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL3RyYW5zbGF0aW9uJyxbXG4gICdqcXVlcnknLFxuICAncmVxdWlyZSdcbl0sIGZ1bmN0aW9uICgkLCByZXF1aXJlKSB7XG4gIGZ1bmN0aW9uIFRyYW5zbGF0aW9uIChkaWN0KSB7XG4gICAgdGhpcy5kaWN0ID0gZGljdCB8fCB7fTtcbiAgfVxuXG4gIFRyYW5zbGF0aW9uLnByb3RvdHlwZS5hbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGljdDtcbiAgfTtcblxuICBUcmFuc2xhdGlvbi5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiB0aGlzLmRpY3Rba2V5XTtcbiAgfTtcblxuICBUcmFuc2xhdGlvbi5wcm90b3R5cGUuZXh0ZW5kID0gZnVuY3Rpb24gKHRyYW5zbGF0aW9uKSB7XG4gICAgdGhpcy5kaWN0ID0gJC5leHRlbmQoe30sIHRyYW5zbGF0aW9uLmFsbCgpLCB0aGlzLmRpY3QpO1xuICB9O1xuXG4gIC8vIFN0YXRpYyBmdW5jdGlvbnNcblxuICBUcmFuc2xhdGlvbi5fY2FjaGUgPSB7fTtcblxuICBUcmFuc2xhdGlvbi5sb2FkUGF0aCA9IGZ1bmN0aW9uIChwYXRoKSB7XG4gICAgaWYgKCEocGF0aCBpbiBUcmFuc2xhdGlvbi5fY2FjaGUpKSB7XG4gICAgICB2YXIgdHJhbnNsYXRpb25zID0gcmVxdWlyZShwYXRoKTtcblxuICAgICAgVHJhbnNsYXRpb24uX2NhY2hlW3BhdGhdID0gdHJhbnNsYXRpb25zO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgVHJhbnNsYXRpb24oVHJhbnNsYXRpb24uX2NhY2hlW3BhdGhdKTtcbiAgfTtcblxuICByZXR1cm4gVHJhbnNsYXRpb247XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2RpYWNyaXRpY3MnLFtcblxuXSwgZnVuY3Rpb24gKCkge1xuICB2YXIgZGlhY3JpdGljcyA9IHtcbiAgICAnXFx1MjRCNic6ICdBJyxcbiAgICAnXFx1RkYyMSc6ICdBJyxcbiAgICAnXFx1MDBDMCc6ICdBJyxcbiAgICAnXFx1MDBDMSc6ICdBJyxcbiAgICAnXFx1MDBDMic6ICdBJyxcbiAgICAnXFx1MUVBNic6ICdBJyxcbiAgICAnXFx1MUVBNCc6ICdBJyxcbiAgICAnXFx1MUVBQSc6ICdBJyxcbiAgICAnXFx1MUVBOCc6ICdBJyxcbiAgICAnXFx1MDBDMyc6ICdBJyxcbiAgICAnXFx1MDEwMCc6ICdBJyxcbiAgICAnXFx1MDEwMic6ICdBJyxcbiAgICAnXFx1MUVCMCc6ICdBJyxcbiAgICAnXFx1MUVBRSc6ICdBJyxcbiAgICAnXFx1MUVCNCc6ICdBJyxcbiAgICAnXFx1MUVCMic6ICdBJyxcbiAgICAnXFx1MDIyNic6ICdBJyxcbiAgICAnXFx1MDFFMCc6ICdBJyxcbiAgICAnXFx1MDBDNCc6ICdBJyxcbiAgICAnXFx1MDFERSc6ICdBJyxcbiAgICAnXFx1MUVBMic6ICdBJyxcbiAgICAnXFx1MDBDNSc6ICdBJyxcbiAgICAnXFx1MDFGQSc6ICdBJyxcbiAgICAnXFx1MDFDRCc6ICdBJyxcbiAgICAnXFx1MDIwMCc6ICdBJyxcbiAgICAnXFx1MDIwMic6ICdBJyxcbiAgICAnXFx1MUVBMCc6ICdBJyxcbiAgICAnXFx1MUVBQyc6ICdBJyxcbiAgICAnXFx1MUVCNic6ICdBJyxcbiAgICAnXFx1MUUwMCc6ICdBJyxcbiAgICAnXFx1MDEwNCc6ICdBJyxcbiAgICAnXFx1MDIzQSc6ICdBJyxcbiAgICAnXFx1MkM2Ric6ICdBJyxcbiAgICAnXFx1QTczMic6ICdBQScsXG4gICAgJ1xcdTAwQzYnOiAnQUUnLFxuICAgICdcXHUwMUZDJzogJ0FFJyxcbiAgICAnXFx1MDFFMic6ICdBRScsXG4gICAgJ1xcdUE3MzQnOiAnQU8nLFxuICAgICdcXHVBNzM2JzogJ0FVJyxcbiAgICAnXFx1QTczOCc6ICdBVicsXG4gICAgJ1xcdUE3M0EnOiAnQVYnLFxuICAgICdcXHVBNzNDJzogJ0FZJyxcbiAgICAnXFx1MjRCNyc6ICdCJyxcbiAgICAnXFx1RkYyMic6ICdCJyxcbiAgICAnXFx1MUUwMic6ICdCJyxcbiAgICAnXFx1MUUwNCc6ICdCJyxcbiAgICAnXFx1MUUwNic6ICdCJyxcbiAgICAnXFx1MDI0Myc6ICdCJyxcbiAgICAnXFx1MDE4Mic6ICdCJyxcbiAgICAnXFx1MDE4MSc6ICdCJyxcbiAgICAnXFx1MjRCOCc6ICdDJyxcbiAgICAnXFx1RkYyMyc6ICdDJyxcbiAgICAnXFx1MDEwNic6ICdDJyxcbiAgICAnXFx1MDEwOCc6ICdDJyxcbiAgICAnXFx1MDEwQSc6ICdDJyxcbiAgICAnXFx1MDEwQyc6ICdDJyxcbiAgICAnXFx1MDBDNyc6ICdDJyxcbiAgICAnXFx1MUUwOCc6ICdDJyxcbiAgICAnXFx1MDE4Nyc6ICdDJyxcbiAgICAnXFx1MDIzQic6ICdDJyxcbiAgICAnXFx1QTczRSc6ICdDJyxcbiAgICAnXFx1MjRCOSc6ICdEJyxcbiAgICAnXFx1RkYyNCc6ICdEJyxcbiAgICAnXFx1MUUwQSc6ICdEJyxcbiAgICAnXFx1MDEwRSc6ICdEJyxcbiAgICAnXFx1MUUwQyc6ICdEJyxcbiAgICAnXFx1MUUxMCc6ICdEJyxcbiAgICAnXFx1MUUxMic6ICdEJyxcbiAgICAnXFx1MUUwRSc6ICdEJyxcbiAgICAnXFx1MDExMCc6ICdEJyxcbiAgICAnXFx1MDE4Qic6ICdEJyxcbiAgICAnXFx1MDE4QSc6ICdEJyxcbiAgICAnXFx1MDE4OSc6ICdEJyxcbiAgICAnXFx1QTc3OSc6ICdEJyxcbiAgICAnXFx1MDFGMSc6ICdEWicsXG4gICAgJ1xcdTAxQzQnOiAnRFonLFxuICAgICdcXHUwMUYyJzogJ0R6JyxcbiAgICAnXFx1MDFDNSc6ICdEeicsXG4gICAgJ1xcdTI0QkEnOiAnRScsXG4gICAgJ1xcdUZGMjUnOiAnRScsXG4gICAgJ1xcdTAwQzgnOiAnRScsXG4gICAgJ1xcdTAwQzknOiAnRScsXG4gICAgJ1xcdTAwQ0EnOiAnRScsXG4gICAgJ1xcdTFFQzAnOiAnRScsXG4gICAgJ1xcdTFFQkUnOiAnRScsXG4gICAgJ1xcdTFFQzQnOiAnRScsXG4gICAgJ1xcdTFFQzInOiAnRScsXG4gICAgJ1xcdTFFQkMnOiAnRScsXG4gICAgJ1xcdTAxMTInOiAnRScsXG4gICAgJ1xcdTFFMTQnOiAnRScsXG4gICAgJ1xcdTFFMTYnOiAnRScsXG4gICAgJ1xcdTAxMTQnOiAnRScsXG4gICAgJ1xcdTAxMTYnOiAnRScsXG4gICAgJ1xcdTAwQ0InOiAnRScsXG4gICAgJ1xcdTFFQkEnOiAnRScsXG4gICAgJ1xcdTAxMUEnOiAnRScsXG4gICAgJ1xcdTAyMDQnOiAnRScsXG4gICAgJ1xcdTAyMDYnOiAnRScsXG4gICAgJ1xcdTFFQjgnOiAnRScsXG4gICAgJ1xcdTFFQzYnOiAnRScsXG4gICAgJ1xcdTAyMjgnOiAnRScsXG4gICAgJ1xcdTFFMUMnOiAnRScsXG4gICAgJ1xcdTAxMTgnOiAnRScsXG4gICAgJ1xcdTFFMTgnOiAnRScsXG4gICAgJ1xcdTFFMUEnOiAnRScsXG4gICAgJ1xcdTAxOTAnOiAnRScsXG4gICAgJ1xcdTAxOEUnOiAnRScsXG4gICAgJ1xcdTI0QkInOiAnRicsXG4gICAgJ1xcdUZGMjYnOiAnRicsXG4gICAgJ1xcdTFFMUUnOiAnRicsXG4gICAgJ1xcdTAxOTEnOiAnRicsXG4gICAgJ1xcdUE3N0InOiAnRicsXG4gICAgJ1xcdTI0QkMnOiAnRycsXG4gICAgJ1xcdUZGMjcnOiAnRycsXG4gICAgJ1xcdTAxRjQnOiAnRycsXG4gICAgJ1xcdTAxMUMnOiAnRycsXG4gICAgJ1xcdTFFMjAnOiAnRycsXG4gICAgJ1xcdTAxMUUnOiAnRycsXG4gICAgJ1xcdTAxMjAnOiAnRycsXG4gICAgJ1xcdTAxRTYnOiAnRycsXG4gICAgJ1xcdTAxMjInOiAnRycsXG4gICAgJ1xcdTAxRTQnOiAnRycsXG4gICAgJ1xcdTAxOTMnOiAnRycsXG4gICAgJ1xcdUE3QTAnOiAnRycsXG4gICAgJ1xcdUE3N0QnOiAnRycsXG4gICAgJ1xcdUE3N0UnOiAnRycsXG4gICAgJ1xcdTI0QkQnOiAnSCcsXG4gICAgJ1xcdUZGMjgnOiAnSCcsXG4gICAgJ1xcdTAxMjQnOiAnSCcsXG4gICAgJ1xcdTFFMjInOiAnSCcsXG4gICAgJ1xcdTFFMjYnOiAnSCcsXG4gICAgJ1xcdTAyMUUnOiAnSCcsXG4gICAgJ1xcdTFFMjQnOiAnSCcsXG4gICAgJ1xcdTFFMjgnOiAnSCcsXG4gICAgJ1xcdTFFMkEnOiAnSCcsXG4gICAgJ1xcdTAxMjYnOiAnSCcsXG4gICAgJ1xcdTJDNjcnOiAnSCcsXG4gICAgJ1xcdTJDNzUnOiAnSCcsXG4gICAgJ1xcdUE3OEQnOiAnSCcsXG4gICAgJ1xcdTI0QkUnOiAnSScsXG4gICAgJ1xcdUZGMjknOiAnSScsXG4gICAgJ1xcdTAwQ0MnOiAnSScsXG4gICAgJ1xcdTAwQ0QnOiAnSScsXG4gICAgJ1xcdTAwQ0UnOiAnSScsXG4gICAgJ1xcdTAxMjgnOiAnSScsXG4gICAgJ1xcdTAxMkEnOiAnSScsXG4gICAgJ1xcdTAxMkMnOiAnSScsXG4gICAgJ1xcdTAxMzAnOiAnSScsXG4gICAgJ1xcdTAwQ0YnOiAnSScsXG4gICAgJ1xcdTFFMkUnOiAnSScsXG4gICAgJ1xcdTFFQzgnOiAnSScsXG4gICAgJ1xcdTAxQ0YnOiAnSScsXG4gICAgJ1xcdTAyMDgnOiAnSScsXG4gICAgJ1xcdTAyMEEnOiAnSScsXG4gICAgJ1xcdTFFQ0EnOiAnSScsXG4gICAgJ1xcdTAxMkUnOiAnSScsXG4gICAgJ1xcdTFFMkMnOiAnSScsXG4gICAgJ1xcdTAxOTcnOiAnSScsXG4gICAgJ1xcdTI0QkYnOiAnSicsXG4gICAgJ1xcdUZGMkEnOiAnSicsXG4gICAgJ1xcdTAxMzQnOiAnSicsXG4gICAgJ1xcdTAyNDgnOiAnSicsXG4gICAgJ1xcdTI0QzAnOiAnSycsXG4gICAgJ1xcdUZGMkInOiAnSycsXG4gICAgJ1xcdTFFMzAnOiAnSycsXG4gICAgJ1xcdTAxRTgnOiAnSycsXG4gICAgJ1xcdTFFMzInOiAnSycsXG4gICAgJ1xcdTAxMzYnOiAnSycsXG4gICAgJ1xcdTFFMzQnOiAnSycsXG4gICAgJ1xcdTAxOTgnOiAnSycsXG4gICAgJ1xcdTJDNjknOiAnSycsXG4gICAgJ1xcdUE3NDAnOiAnSycsXG4gICAgJ1xcdUE3NDInOiAnSycsXG4gICAgJ1xcdUE3NDQnOiAnSycsXG4gICAgJ1xcdUE3QTInOiAnSycsXG4gICAgJ1xcdTI0QzEnOiAnTCcsXG4gICAgJ1xcdUZGMkMnOiAnTCcsXG4gICAgJ1xcdTAxM0YnOiAnTCcsXG4gICAgJ1xcdTAxMzknOiAnTCcsXG4gICAgJ1xcdTAxM0QnOiAnTCcsXG4gICAgJ1xcdTFFMzYnOiAnTCcsXG4gICAgJ1xcdTFFMzgnOiAnTCcsXG4gICAgJ1xcdTAxM0InOiAnTCcsXG4gICAgJ1xcdTFFM0MnOiAnTCcsXG4gICAgJ1xcdTFFM0EnOiAnTCcsXG4gICAgJ1xcdTAxNDEnOiAnTCcsXG4gICAgJ1xcdTAyM0QnOiAnTCcsXG4gICAgJ1xcdTJDNjInOiAnTCcsXG4gICAgJ1xcdTJDNjAnOiAnTCcsXG4gICAgJ1xcdUE3NDgnOiAnTCcsXG4gICAgJ1xcdUE3NDYnOiAnTCcsXG4gICAgJ1xcdUE3ODAnOiAnTCcsXG4gICAgJ1xcdTAxQzcnOiAnTEonLFxuICAgICdcXHUwMUM4JzogJ0xqJyxcbiAgICAnXFx1MjRDMic6ICdNJyxcbiAgICAnXFx1RkYyRCc6ICdNJyxcbiAgICAnXFx1MUUzRSc6ICdNJyxcbiAgICAnXFx1MUU0MCc6ICdNJyxcbiAgICAnXFx1MUU0Mic6ICdNJyxcbiAgICAnXFx1MkM2RSc6ICdNJyxcbiAgICAnXFx1MDE5Qyc6ICdNJyxcbiAgICAnXFx1MjRDMyc6ICdOJyxcbiAgICAnXFx1RkYyRSc6ICdOJyxcbiAgICAnXFx1MDFGOCc6ICdOJyxcbiAgICAnXFx1MDE0Myc6ICdOJyxcbiAgICAnXFx1MDBEMSc6ICdOJyxcbiAgICAnXFx1MUU0NCc6ICdOJyxcbiAgICAnXFx1MDE0Nyc6ICdOJyxcbiAgICAnXFx1MUU0Nic6ICdOJyxcbiAgICAnXFx1MDE0NSc6ICdOJyxcbiAgICAnXFx1MUU0QSc6ICdOJyxcbiAgICAnXFx1MUU0OCc6ICdOJyxcbiAgICAnXFx1MDIyMCc6ICdOJyxcbiAgICAnXFx1MDE5RCc6ICdOJyxcbiAgICAnXFx1QTc5MCc6ICdOJyxcbiAgICAnXFx1QTdBNCc6ICdOJyxcbiAgICAnXFx1MDFDQSc6ICdOSicsXG4gICAgJ1xcdTAxQ0InOiAnTmonLFxuICAgICdcXHUyNEM0JzogJ08nLFxuICAgICdcXHVGRjJGJzogJ08nLFxuICAgICdcXHUwMEQyJzogJ08nLFxuICAgICdcXHUwMEQzJzogJ08nLFxuICAgICdcXHUwMEQ0JzogJ08nLFxuICAgICdcXHUxRUQyJzogJ08nLFxuICAgICdcXHUxRUQwJzogJ08nLFxuICAgICdcXHUxRUQ2JzogJ08nLFxuICAgICdcXHUxRUQ0JzogJ08nLFxuICAgICdcXHUwMEQ1JzogJ08nLFxuICAgICdcXHUxRTRDJzogJ08nLFxuICAgICdcXHUwMjJDJzogJ08nLFxuICAgICdcXHUxRTRFJzogJ08nLFxuICAgICdcXHUwMTRDJzogJ08nLFxuICAgICdcXHUxRTUwJzogJ08nLFxuICAgICdcXHUxRTUyJzogJ08nLFxuICAgICdcXHUwMTRFJzogJ08nLFxuICAgICdcXHUwMjJFJzogJ08nLFxuICAgICdcXHUwMjMwJzogJ08nLFxuICAgICdcXHUwMEQ2JzogJ08nLFxuICAgICdcXHUwMjJBJzogJ08nLFxuICAgICdcXHUxRUNFJzogJ08nLFxuICAgICdcXHUwMTUwJzogJ08nLFxuICAgICdcXHUwMUQxJzogJ08nLFxuICAgICdcXHUwMjBDJzogJ08nLFxuICAgICdcXHUwMjBFJzogJ08nLFxuICAgICdcXHUwMUEwJzogJ08nLFxuICAgICdcXHUxRURDJzogJ08nLFxuICAgICdcXHUxRURBJzogJ08nLFxuICAgICdcXHUxRUUwJzogJ08nLFxuICAgICdcXHUxRURFJzogJ08nLFxuICAgICdcXHUxRUUyJzogJ08nLFxuICAgICdcXHUxRUNDJzogJ08nLFxuICAgICdcXHUxRUQ4JzogJ08nLFxuICAgICdcXHUwMUVBJzogJ08nLFxuICAgICdcXHUwMUVDJzogJ08nLFxuICAgICdcXHUwMEQ4JzogJ08nLFxuICAgICdcXHUwMUZFJzogJ08nLFxuICAgICdcXHUwMTg2JzogJ08nLFxuICAgICdcXHUwMTlGJzogJ08nLFxuICAgICdcXHVBNzRBJzogJ08nLFxuICAgICdcXHVBNzRDJzogJ08nLFxuICAgICdcXHUwMTUyJzogJ09FJyxcbiAgICAnXFx1MDFBMic6ICdPSScsXG4gICAgJ1xcdUE3NEUnOiAnT08nLFxuICAgICdcXHUwMjIyJzogJ09VJyxcbiAgICAnXFx1MjRDNSc6ICdQJyxcbiAgICAnXFx1RkYzMCc6ICdQJyxcbiAgICAnXFx1MUU1NCc6ICdQJyxcbiAgICAnXFx1MUU1Nic6ICdQJyxcbiAgICAnXFx1MDFBNCc6ICdQJyxcbiAgICAnXFx1MkM2Myc6ICdQJyxcbiAgICAnXFx1QTc1MCc6ICdQJyxcbiAgICAnXFx1QTc1Mic6ICdQJyxcbiAgICAnXFx1QTc1NCc6ICdQJyxcbiAgICAnXFx1MjRDNic6ICdRJyxcbiAgICAnXFx1RkYzMSc6ICdRJyxcbiAgICAnXFx1QTc1Nic6ICdRJyxcbiAgICAnXFx1QTc1OCc6ICdRJyxcbiAgICAnXFx1MDI0QSc6ICdRJyxcbiAgICAnXFx1MjRDNyc6ICdSJyxcbiAgICAnXFx1RkYzMic6ICdSJyxcbiAgICAnXFx1MDE1NCc6ICdSJyxcbiAgICAnXFx1MUU1OCc6ICdSJyxcbiAgICAnXFx1MDE1OCc6ICdSJyxcbiAgICAnXFx1MDIxMCc6ICdSJyxcbiAgICAnXFx1MDIxMic6ICdSJyxcbiAgICAnXFx1MUU1QSc6ICdSJyxcbiAgICAnXFx1MUU1Qyc6ICdSJyxcbiAgICAnXFx1MDE1Nic6ICdSJyxcbiAgICAnXFx1MUU1RSc6ICdSJyxcbiAgICAnXFx1MDI0Qyc6ICdSJyxcbiAgICAnXFx1MkM2NCc6ICdSJyxcbiAgICAnXFx1QTc1QSc6ICdSJyxcbiAgICAnXFx1QTdBNic6ICdSJyxcbiAgICAnXFx1QTc4Mic6ICdSJyxcbiAgICAnXFx1MjRDOCc6ICdTJyxcbiAgICAnXFx1RkYzMyc6ICdTJyxcbiAgICAnXFx1MUU5RSc6ICdTJyxcbiAgICAnXFx1MDE1QSc6ICdTJyxcbiAgICAnXFx1MUU2NCc6ICdTJyxcbiAgICAnXFx1MDE1Qyc6ICdTJyxcbiAgICAnXFx1MUU2MCc6ICdTJyxcbiAgICAnXFx1MDE2MCc6ICdTJyxcbiAgICAnXFx1MUU2Nic6ICdTJyxcbiAgICAnXFx1MUU2Mic6ICdTJyxcbiAgICAnXFx1MUU2OCc6ICdTJyxcbiAgICAnXFx1MDIxOCc6ICdTJyxcbiAgICAnXFx1MDE1RSc6ICdTJyxcbiAgICAnXFx1MkM3RSc6ICdTJyxcbiAgICAnXFx1QTdBOCc6ICdTJyxcbiAgICAnXFx1QTc4NCc6ICdTJyxcbiAgICAnXFx1MjRDOSc6ICdUJyxcbiAgICAnXFx1RkYzNCc6ICdUJyxcbiAgICAnXFx1MUU2QSc6ICdUJyxcbiAgICAnXFx1MDE2NCc6ICdUJyxcbiAgICAnXFx1MUU2Qyc6ICdUJyxcbiAgICAnXFx1MDIxQSc6ICdUJyxcbiAgICAnXFx1MDE2Mic6ICdUJyxcbiAgICAnXFx1MUU3MCc6ICdUJyxcbiAgICAnXFx1MUU2RSc6ICdUJyxcbiAgICAnXFx1MDE2Nic6ICdUJyxcbiAgICAnXFx1MDFBQyc6ICdUJyxcbiAgICAnXFx1MDFBRSc6ICdUJyxcbiAgICAnXFx1MDIzRSc6ICdUJyxcbiAgICAnXFx1QTc4Nic6ICdUJyxcbiAgICAnXFx1QTcyOCc6ICdUWicsXG4gICAgJ1xcdTI0Q0EnOiAnVScsXG4gICAgJ1xcdUZGMzUnOiAnVScsXG4gICAgJ1xcdTAwRDknOiAnVScsXG4gICAgJ1xcdTAwREEnOiAnVScsXG4gICAgJ1xcdTAwREInOiAnVScsXG4gICAgJ1xcdTAxNjgnOiAnVScsXG4gICAgJ1xcdTFFNzgnOiAnVScsXG4gICAgJ1xcdTAxNkEnOiAnVScsXG4gICAgJ1xcdTFFN0EnOiAnVScsXG4gICAgJ1xcdTAxNkMnOiAnVScsXG4gICAgJ1xcdTAwREMnOiAnVScsXG4gICAgJ1xcdTAxREInOiAnVScsXG4gICAgJ1xcdTAxRDcnOiAnVScsXG4gICAgJ1xcdTAxRDUnOiAnVScsXG4gICAgJ1xcdTAxRDknOiAnVScsXG4gICAgJ1xcdTFFRTYnOiAnVScsXG4gICAgJ1xcdTAxNkUnOiAnVScsXG4gICAgJ1xcdTAxNzAnOiAnVScsXG4gICAgJ1xcdTAxRDMnOiAnVScsXG4gICAgJ1xcdTAyMTQnOiAnVScsXG4gICAgJ1xcdTAyMTYnOiAnVScsXG4gICAgJ1xcdTAxQUYnOiAnVScsXG4gICAgJ1xcdTFFRUEnOiAnVScsXG4gICAgJ1xcdTFFRTgnOiAnVScsXG4gICAgJ1xcdTFFRUUnOiAnVScsXG4gICAgJ1xcdTFFRUMnOiAnVScsXG4gICAgJ1xcdTFFRjAnOiAnVScsXG4gICAgJ1xcdTFFRTQnOiAnVScsXG4gICAgJ1xcdTFFNzInOiAnVScsXG4gICAgJ1xcdTAxNzInOiAnVScsXG4gICAgJ1xcdTFFNzYnOiAnVScsXG4gICAgJ1xcdTFFNzQnOiAnVScsXG4gICAgJ1xcdTAyNDQnOiAnVScsXG4gICAgJ1xcdTI0Q0InOiAnVicsXG4gICAgJ1xcdUZGMzYnOiAnVicsXG4gICAgJ1xcdTFFN0MnOiAnVicsXG4gICAgJ1xcdTFFN0UnOiAnVicsXG4gICAgJ1xcdTAxQjInOiAnVicsXG4gICAgJ1xcdUE3NUUnOiAnVicsXG4gICAgJ1xcdTAyNDUnOiAnVicsXG4gICAgJ1xcdUE3NjAnOiAnVlknLFxuICAgICdcXHUyNENDJzogJ1cnLFxuICAgICdcXHVGRjM3JzogJ1cnLFxuICAgICdcXHUxRTgwJzogJ1cnLFxuICAgICdcXHUxRTgyJzogJ1cnLFxuICAgICdcXHUwMTc0JzogJ1cnLFxuICAgICdcXHUxRTg2JzogJ1cnLFxuICAgICdcXHUxRTg0JzogJ1cnLFxuICAgICdcXHUxRTg4JzogJ1cnLFxuICAgICdcXHUyQzcyJzogJ1cnLFxuICAgICdcXHUyNENEJzogJ1gnLFxuICAgICdcXHVGRjM4JzogJ1gnLFxuICAgICdcXHUxRThBJzogJ1gnLFxuICAgICdcXHUxRThDJzogJ1gnLFxuICAgICdcXHUyNENFJzogJ1knLFxuICAgICdcXHVGRjM5JzogJ1knLFxuICAgICdcXHUxRUYyJzogJ1knLFxuICAgICdcXHUwMEREJzogJ1knLFxuICAgICdcXHUwMTc2JzogJ1knLFxuICAgICdcXHUxRUY4JzogJ1knLFxuICAgICdcXHUwMjMyJzogJ1knLFxuICAgICdcXHUxRThFJzogJ1knLFxuICAgICdcXHUwMTc4JzogJ1knLFxuICAgICdcXHUxRUY2JzogJ1knLFxuICAgICdcXHUxRUY0JzogJ1knLFxuICAgICdcXHUwMUIzJzogJ1knLFxuICAgICdcXHUwMjRFJzogJ1knLFxuICAgICdcXHUxRUZFJzogJ1knLFxuICAgICdcXHUyNENGJzogJ1onLFxuICAgICdcXHVGRjNBJzogJ1onLFxuICAgICdcXHUwMTc5JzogJ1onLFxuICAgICdcXHUxRTkwJzogJ1onLFxuICAgICdcXHUwMTdCJzogJ1onLFxuICAgICdcXHUwMTdEJzogJ1onLFxuICAgICdcXHUxRTkyJzogJ1onLFxuICAgICdcXHUxRTk0JzogJ1onLFxuICAgICdcXHUwMUI1JzogJ1onLFxuICAgICdcXHUwMjI0JzogJ1onLFxuICAgICdcXHUyQzdGJzogJ1onLFxuICAgICdcXHUyQzZCJzogJ1onLFxuICAgICdcXHVBNzYyJzogJ1onLFxuICAgICdcXHUyNEQwJzogJ2EnLFxuICAgICdcXHVGRjQxJzogJ2EnLFxuICAgICdcXHUxRTlBJzogJ2EnLFxuICAgICdcXHUwMEUwJzogJ2EnLFxuICAgICdcXHUwMEUxJzogJ2EnLFxuICAgICdcXHUwMEUyJzogJ2EnLFxuICAgICdcXHUxRUE3JzogJ2EnLFxuICAgICdcXHUxRUE1JzogJ2EnLFxuICAgICdcXHUxRUFCJzogJ2EnLFxuICAgICdcXHUxRUE5JzogJ2EnLFxuICAgICdcXHUwMEUzJzogJ2EnLFxuICAgICdcXHUwMTAxJzogJ2EnLFxuICAgICdcXHUwMTAzJzogJ2EnLFxuICAgICdcXHUxRUIxJzogJ2EnLFxuICAgICdcXHUxRUFGJzogJ2EnLFxuICAgICdcXHUxRUI1JzogJ2EnLFxuICAgICdcXHUxRUIzJzogJ2EnLFxuICAgICdcXHUwMjI3JzogJ2EnLFxuICAgICdcXHUwMUUxJzogJ2EnLFxuICAgICdcXHUwMEU0JzogJ2EnLFxuICAgICdcXHUwMURGJzogJ2EnLFxuICAgICdcXHUxRUEzJzogJ2EnLFxuICAgICdcXHUwMEU1JzogJ2EnLFxuICAgICdcXHUwMUZCJzogJ2EnLFxuICAgICdcXHUwMUNFJzogJ2EnLFxuICAgICdcXHUwMjAxJzogJ2EnLFxuICAgICdcXHUwMjAzJzogJ2EnLFxuICAgICdcXHUxRUExJzogJ2EnLFxuICAgICdcXHUxRUFEJzogJ2EnLFxuICAgICdcXHUxRUI3JzogJ2EnLFxuICAgICdcXHUxRTAxJzogJ2EnLFxuICAgICdcXHUwMTA1JzogJ2EnLFxuICAgICdcXHUyQzY1JzogJ2EnLFxuICAgICdcXHUwMjUwJzogJ2EnLFxuICAgICdcXHVBNzMzJzogJ2FhJyxcbiAgICAnXFx1MDBFNic6ICdhZScsXG4gICAgJ1xcdTAxRkQnOiAnYWUnLFxuICAgICdcXHUwMUUzJzogJ2FlJyxcbiAgICAnXFx1QTczNSc6ICdhbycsXG4gICAgJ1xcdUE3MzcnOiAnYXUnLFxuICAgICdcXHVBNzM5JzogJ2F2JyxcbiAgICAnXFx1QTczQic6ICdhdicsXG4gICAgJ1xcdUE3M0QnOiAnYXknLFxuICAgICdcXHUyNEQxJzogJ2InLFxuICAgICdcXHVGRjQyJzogJ2InLFxuICAgICdcXHUxRTAzJzogJ2InLFxuICAgICdcXHUxRTA1JzogJ2InLFxuICAgICdcXHUxRTA3JzogJ2InLFxuICAgICdcXHUwMTgwJzogJ2InLFxuICAgICdcXHUwMTgzJzogJ2InLFxuICAgICdcXHUwMjUzJzogJ2InLFxuICAgICdcXHUyNEQyJzogJ2MnLFxuICAgICdcXHVGRjQzJzogJ2MnLFxuICAgICdcXHUwMTA3JzogJ2MnLFxuICAgICdcXHUwMTA5JzogJ2MnLFxuICAgICdcXHUwMTBCJzogJ2MnLFxuICAgICdcXHUwMTBEJzogJ2MnLFxuICAgICdcXHUwMEU3JzogJ2MnLFxuICAgICdcXHUxRTA5JzogJ2MnLFxuICAgICdcXHUwMTg4JzogJ2MnLFxuICAgICdcXHUwMjNDJzogJ2MnLFxuICAgICdcXHVBNzNGJzogJ2MnLFxuICAgICdcXHUyMTg0JzogJ2MnLFxuICAgICdcXHUyNEQzJzogJ2QnLFxuICAgICdcXHVGRjQ0JzogJ2QnLFxuICAgICdcXHUxRTBCJzogJ2QnLFxuICAgICdcXHUwMTBGJzogJ2QnLFxuICAgICdcXHUxRTBEJzogJ2QnLFxuICAgICdcXHUxRTExJzogJ2QnLFxuICAgICdcXHUxRTEzJzogJ2QnLFxuICAgICdcXHUxRTBGJzogJ2QnLFxuICAgICdcXHUwMTExJzogJ2QnLFxuICAgICdcXHUwMThDJzogJ2QnLFxuICAgICdcXHUwMjU2JzogJ2QnLFxuICAgICdcXHUwMjU3JzogJ2QnLFxuICAgICdcXHVBNzdBJzogJ2QnLFxuICAgICdcXHUwMUYzJzogJ2R6JyxcbiAgICAnXFx1MDFDNic6ICdkeicsXG4gICAgJ1xcdTI0RDQnOiAnZScsXG4gICAgJ1xcdUZGNDUnOiAnZScsXG4gICAgJ1xcdTAwRTgnOiAnZScsXG4gICAgJ1xcdTAwRTknOiAnZScsXG4gICAgJ1xcdTAwRUEnOiAnZScsXG4gICAgJ1xcdTFFQzEnOiAnZScsXG4gICAgJ1xcdTFFQkYnOiAnZScsXG4gICAgJ1xcdTFFQzUnOiAnZScsXG4gICAgJ1xcdTFFQzMnOiAnZScsXG4gICAgJ1xcdTFFQkQnOiAnZScsXG4gICAgJ1xcdTAxMTMnOiAnZScsXG4gICAgJ1xcdTFFMTUnOiAnZScsXG4gICAgJ1xcdTFFMTcnOiAnZScsXG4gICAgJ1xcdTAxMTUnOiAnZScsXG4gICAgJ1xcdTAxMTcnOiAnZScsXG4gICAgJ1xcdTAwRUInOiAnZScsXG4gICAgJ1xcdTFFQkInOiAnZScsXG4gICAgJ1xcdTAxMUInOiAnZScsXG4gICAgJ1xcdTAyMDUnOiAnZScsXG4gICAgJ1xcdTAyMDcnOiAnZScsXG4gICAgJ1xcdTFFQjknOiAnZScsXG4gICAgJ1xcdTFFQzcnOiAnZScsXG4gICAgJ1xcdTAyMjknOiAnZScsXG4gICAgJ1xcdTFFMUQnOiAnZScsXG4gICAgJ1xcdTAxMTknOiAnZScsXG4gICAgJ1xcdTFFMTknOiAnZScsXG4gICAgJ1xcdTFFMUInOiAnZScsXG4gICAgJ1xcdTAyNDcnOiAnZScsXG4gICAgJ1xcdTAyNUInOiAnZScsXG4gICAgJ1xcdTAxREQnOiAnZScsXG4gICAgJ1xcdTI0RDUnOiAnZicsXG4gICAgJ1xcdUZGNDYnOiAnZicsXG4gICAgJ1xcdTFFMUYnOiAnZicsXG4gICAgJ1xcdTAxOTInOiAnZicsXG4gICAgJ1xcdUE3N0MnOiAnZicsXG4gICAgJ1xcdTI0RDYnOiAnZycsXG4gICAgJ1xcdUZGNDcnOiAnZycsXG4gICAgJ1xcdTAxRjUnOiAnZycsXG4gICAgJ1xcdTAxMUQnOiAnZycsXG4gICAgJ1xcdTFFMjEnOiAnZycsXG4gICAgJ1xcdTAxMUYnOiAnZycsXG4gICAgJ1xcdTAxMjEnOiAnZycsXG4gICAgJ1xcdTAxRTcnOiAnZycsXG4gICAgJ1xcdTAxMjMnOiAnZycsXG4gICAgJ1xcdTAxRTUnOiAnZycsXG4gICAgJ1xcdTAyNjAnOiAnZycsXG4gICAgJ1xcdUE3QTEnOiAnZycsXG4gICAgJ1xcdTFENzknOiAnZycsXG4gICAgJ1xcdUE3N0YnOiAnZycsXG4gICAgJ1xcdTI0RDcnOiAnaCcsXG4gICAgJ1xcdUZGNDgnOiAnaCcsXG4gICAgJ1xcdTAxMjUnOiAnaCcsXG4gICAgJ1xcdTFFMjMnOiAnaCcsXG4gICAgJ1xcdTFFMjcnOiAnaCcsXG4gICAgJ1xcdTAyMUYnOiAnaCcsXG4gICAgJ1xcdTFFMjUnOiAnaCcsXG4gICAgJ1xcdTFFMjknOiAnaCcsXG4gICAgJ1xcdTFFMkInOiAnaCcsXG4gICAgJ1xcdTFFOTYnOiAnaCcsXG4gICAgJ1xcdTAxMjcnOiAnaCcsXG4gICAgJ1xcdTJDNjgnOiAnaCcsXG4gICAgJ1xcdTJDNzYnOiAnaCcsXG4gICAgJ1xcdTAyNjUnOiAnaCcsXG4gICAgJ1xcdTAxOTUnOiAnaHYnLFxuICAgICdcXHUyNEQ4JzogJ2knLFxuICAgICdcXHVGRjQ5JzogJ2knLFxuICAgICdcXHUwMEVDJzogJ2knLFxuICAgICdcXHUwMEVEJzogJ2knLFxuICAgICdcXHUwMEVFJzogJ2knLFxuICAgICdcXHUwMTI5JzogJ2knLFxuICAgICdcXHUwMTJCJzogJ2knLFxuICAgICdcXHUwMTJEJzogJ2knLFxuICAgICdcXHUwMEVGJzogJ2knLFxuICAgICdcXHUxRTJGJzogJ2knLFxuICAgICdcXHUxRUM5JzogJ2knLFxuICAgICdcXHUwMUQwJzogJ2knLFxuICAgICdcXHUwMjA5JzogJ2knLFxuICAgICdcXHUwMjBCJzogJ2knLFxuICAgICdcXHUxRUNCJzogJ2knLFxuICAgICdcXHUwMTJGJzogJ2knLFxuICAgICdcXHUxRTJEJzogJ2knLFxuICAgICdcXHUwMjY4JzogJ2knLFxuICAgICdcXHUwMTMxJzogJ2knLFxuICAgICdcXHUyNEQ5JzogJ2onLFxuICAgICdcXHVGRjRBJzogJ2onLFxuICAgICdcXHUwMTM1JzogJ2onLFxuICAgICdcXHUwMUYwJzogJ2onLFxuICAgICdcXHUwMjQ5JzogJ2onLFxuICAgICdcXHUyNERBJzogJ2snLFxuICAgICdcXHVGRjRCJzogJ2snLFxuICAgICdcXHUxRTMxJzogJ2snLFxuICAgICdcXHUwMUU5JzogJ2snLFxuICAgICdcXHUxRTMzJzogJ2snLFxuICAgICdcXHUwMTM3JzogJ2snLFxuICAgICdcXHUxRTM1JzogJ2snLFxuICAgICdcXHUwMTk5JzogJ2snLFxuICAgICdcXHUyQzZBJzogJ2snLFxuICAgICdcXHVBNzQxJzogJ2snLFxuICAgICdcXHVBNzQzJzogJ2snLFxuICAgICdcXHVBNzQ1JzogJ2snLFxuICAgICdcXHVBN0EzJzogJ2snLFxuICAgICdcXHUyNERCJzogJ2wnLFxuICAgICdcXHVGRjRDJzogJ2wnLFxuICAgICdcXHUwMTQwJzogJ2wnLFxuICAgICdcXHUwMTNBJzogJ2wnLFxuICAgICdcXHUwMTNFJzogJ2wnLFxuICAgICdcXHUxRTM3JzogJ2wnLFxuICAgICdcXHUxRTM5JzogJ2wnLFxuICAgICdcXHUwMTNDJzogJ2wnLFxuICAgICdcXHUxRTNEJzogJ2wnLFxuICAgICdcXHUxRTNCJzogJ2wnLFxuICAgICdcXHUwMTdGJzogJ2wnLFxuICAgICdcXHUwMTQyJzogJ2wnLFxuICAgICdcXHUwMTlBJzogJ2wnLFxuICAgICdcXHUwMjZCJzogJ2wnLFxuICAgICdcXHUyQzYxJzogJ2wnLFxuICAgICdcXHVBNzQ5JzogJ2wnLFxuICAgICdcXHVBNzgxJzogJ2wnLFxuICAgICdcXHVBNzQ3JzogJ2wnLFxuICAgICdcXHUwMUM5JzogJ2xqJyxcbiAgICAnXFx1MjREQyc6ICdtJyxcbiAgICAnXFx1RkY0RCc6ICdtJyxcbiAgICAnXFx1MUUzRic6ICdtJyxcbiAgICAnXFx1MUU0MSc6ICdtJyxcbiAgICAnXFx1MUU0Myc6ICdtJyxcbiAgICAnXFx1MDI3MSc6ICdtJyxcbiAgICAnXFx1MDI2Ric6ICdtJyxcbiAgICAnXFx1MjRERCc6ICduJyxcbiAgICAnXFx1RkY0RSc6ICduJyxcbiAgICAnXFx1MDFGOSc6ICduJyxcbiAgICAnXFx1MDE0NCc6ICduJyxcbiAgICAnXFx1MDBGMSc6ICduJyxcbiAgICAnXFx1MUU0NSc6ICduJyxcbiAgICAnXFx1MDE0OCc6ICduJyxcbiAgICAnXFx1MUU0Nyc6ICduJyxcbiAgICAnXFx1MDE0Nic6ICduJyxcbiAgICAnXFx1MUU0Qic6ICduJyxcbiAgICAnXFx1MUU0OSc6ICduJyxcbiAgICAnXFx1MDE5RSc6ICduJyxcbiAgICAnXFx1MDI3Mic6ICduJyxcbiAgICAnXFx1MDE0OSc6ICduJyxcbiAgICAnXFx1QTc5MSc6ICduJyxcbiAgICAnXFx1QTdBNSc6ICduJyxcbiAgICAnXFx1MDFDQyc6ICduaicsXG4gICAgJ1xcdTI0REUnOiAnbycsXG4gICAgJ1xcdUZGNEYnOiAnbycsXG4gICAgJ1xcdTAwRjInOiAnbycsXG4gICAgJ1xcdTAwRjMnOiAnbycsXG4gICAgJ1xcdTAwRjQnOiAnbycsXG4gICAgJ1xcdTFFRDMnOiAnbycsXG4gICAgJ1xcdTFFRDEnOiAnbycsXG4gICAgJ1xcdTFFRDcnOiAnbycsXG4gICAgJ1xcdTFFRDUnOiAnbycsXG4gICAgJ1xcdTAwRjUnOiAnbycsXG4gICAgJ1xcdTFFNEQnOiAnbycsXG4gICAgJ1xcdTAyMkQnOiAnbycsXG4gICAgJ1xcdTFFNEYnOiAnbycsXG4gICAgJ1xcdTAxNEQnOiAnbycsXG4gICAgJ1xcdTFFNTEnOiAnbycsXG4gICAgJ1xcdTFFNTMnOiAnbycsXG4gICAgJ1xcdTAxNEYnOiAnbycsXG4gICAgJ1xcdTAyMkYnOiAnbycsXG4gICAgJ1xcdTAyMzEnOiAnbycsXG4gICAgJ1xcdTAwRjYnOiAnbycsXG4gICAgJ1xcdTAyMkInOiAnbycsXG4gICAgJ1xcdTFFQ0YnOiAnbycsXG4gICAgJ1xcdTAxNTEnOiAnbycsXG4gICAgJ1xcdTAxRDInOiAnbycsXG4gICAgJ1xcdTAyMEQnOiAnbycsXG4gICAgJ1xcdTAyMEYnOiAnbycsXG4gICAgJ1xcdTAxQTEnOiAnbycsXG4gICAgJ1xcdTFFREQnOiAnbycsXG4gICAgJ1xcdTFFREInOiAnbycsXG4gICAgJ1xcdTFFRTEnOiAnbycsXG4gICAgJ1xcdTFFREYnOiAnbycsXG4gICAgJ1xcdTFFRTMnOiAnbycsXG4gICAgJ1xcdTFFQ0QnOiAnbycsXG4gICAgJ1xcdTFFRDknOiAnbycsXG4gICAgJ1xcdTAxRUInOiAnbycsXG4gICAgJ1xcdTAxRUQnOiAnbycsXG4gICAgJ1xcdTAwRjgnOiAnbycsXG4gICAgJ1xcdTAxRkYnOiAnbycsXG4gICAgJ1xcdTAyNTQnOiAnbycsXG4gICAgJ1xcdUE3NEInOiAnbycsXG4gICAgJ1xcdUE3NEQnOiAnbycsXG4gICAgJ1xcdTAyNzUnOiAnbycsXG4gICAgJ1xcdTAxNTMnOiAnb2UnLFxuICAgICdcXHUwMUEzJzogJ29pJyxcbiAgICAnXFx1MDIyMyc6ICdvdScsXG4gICAgJ1xcdUE3NEYnOiAnb28nLFxuICAgICdcXHUyNERGJzogJ3AnLFxuICAgICdcXHVGRjUwJzogJ3AnLFxuICAgICdcXHUxRTU1JzogJ3AnLFxuICAgICdcXHUxRTU3JzogJ3AnLFxuICAgICdcXHUwMUE1JzogJ3AnLFxuICAgICdcXHUxRDdEJzogJ3AnLFxuICAgICdcXHVBNzUxJzogJ3AnLFxuICAgICdcXHVBNzUzJzogJ3AnLFxuICAgICdcXHVBNzU1JzogJ3AnLFxuICAgICdcXHUyNEUwJzogJ3EnLFxuICAgICdcXHVGRjUxJzogJ3EnLFxuICAgICdcXHUwMjRCJzogJ3EnLFxuICAgICdcXHVBNzU3JzogJ3EnLFxuICAgICdcXHVBNzU5JzogJ3EnLFxuICAgICdcXHUyNEUxJzogJ3InLFxuICAgICdcXHVGRjUyJzogJ3InLFxuICAgICdcXHUwMTU1JzogJ3InLFxuICAgICdcXHUxRTU5JzogJ3InLFxuICAgICdcXHUwMTU5JzogJ3InLFxuICAgICdcXHUwMjExJzogJ3InLFxuICAgICdcXHUwMjEzJzogJ3InLFxuICAgICdcXHUxRTVCJzogJ3InLFxuICAgICdcXHUxRTVEJzogJ3InLFxuICAgICdcXHUwMTU3JzogJ3InLFxuICAgICdcXHUxRTVGJzogJ3InLFxuICAgICdcXHUwMjREJzogJ3InLFxuICAgICdcXHUwMjdEJzogJ3InLFxuICAgICdcXHVBNzVCJzogJ3InLFxuICAgICdcXHVBN0E3JzogJ3InLFxuICAgICdcXHVBNzgzJzogJ3InLFxuICAgICdcXHUyNEUyJzogJ3MnLFxuICAgICdcXHVGRjUzJzogJ3MnLFxuICAgICdcXHUwMERGJzogJ3MnLFxuICAgICdcXHUwMTVCJzogJ3MnLFxuICAgICdcXHUxRTY1JzogJ3MnLFxuICAgICdcXHUwMTVEJzogJ3MnLFxuICAgICdcXHUxRTYxJzogJ3MnLFxuICAgICdcXHUwMTYxJzogJ3MnLFxuICAgICdcXHUxRTY3JzogJ3MnLFxuICAgICdcXHUxRTYzJzogJ3MnLFxuICAgICdcXHUxRTY5JzogJ3MnLFxuICAgICdcXHUwMjE5JzogJ3MnLFxuICAgICdcXHUwMTVGJzogJ3MnLFxuICAgICdcXHUwMjNGJzogJ3MnLFxuICAgICdcXHVBN0E5JzogJ3MnLFxuICAgICdcXHVBNzg1JzogJ3MnLFxuICAgICdcXHUxRTlCJzogJ3MnLFxuICAgICdcXHUyNEUzJzogJ3QnLFxuICAgICdcXHVGRjU0JzogJ3QnLFxuICAgICdcXHUxRTZCJzogJ3QnLFxuICAgICdcXHUxRTk3JzogJ3QnLFxuICAgICdcXHUwMTY1JzogJ3QnLFxuICAgICdcXHUxRTZEJzogJ3QnLFxuICAgICdcXHUwMjFCJzogJ3QnLFxuICAgICdcXHUwMTYzJzogJ3QnLFxuICAgICdcXHUxRTcxJzogJ3QnLFxuICAgICdcXHUxRTZGJzogJ3QnLFxuICAgICdcXHUwMTY3JzogJ3QnLFxuICAgICdcXHUwMUFEJzogJ3QnLFxuICAgICdcXHUwMjg4JzogJ3QnLFxuICAgICdcXHUyQzY2JzogJ3QnLFxuICAgICdcXHVBNzg3JzogJ3QnLFxuICAgICdcXHVBNzI5JzogJ3R6JyxcbiAgICAnXFx1MjRFNCc6ICd1JyxcbiAgICAnXFx1RkY1NSc6ICd1JyxcbiAgICAnXFx1MDBGOSc6ICd1JyxcbiAgICAnXFx1MDBGQSc6ICd1JyxcbiAgICAnXFx1MDBGQic6ICd1JyxcbiAgICAnXFx1MDE2OSc6ICd1JyxcbiAgICAnXFx1MUU3OSc6ICd1JyxcbiAgICAnXFx1MDE2Qic6ICd1JyxcbiAgICAnXFx1MUU3Qic6ICd1JyxcbiAgICAnXFx1MDE2RCc6ICd1JyxcbiAgICAnXFx1MDBGQyc6ICd1JyxcbiAgICAnXFx1MDFEQyc6ICd1JyxcbiAgICAnXFx1MDFEOCc6ICd1JyxcbiAgICAnXFx1MDFENic6ICd1JyxcbiAgICAnXFx1MDFEQSc6ICd1JyxcbiAgICAnXFx1MUVFNyc6ICd1JyxcbiAgICAnXFx1MDE2Ric6ICd1JyxcbiAgICAnXFx1MDE3MSc6ICd1JyxcbiAgICAnXFx1MDFENCc6ICd1JyxcbiAgICAnXFx1MDIxNSc6ICd1JyxcbiAgICAnXFx1MDIxNyc6ICd1JyxcbiAgICAnXFx1MDFCMCc6ICd1JyxcbiAgICAnXFx1MUVFQic6ICd1JyxcbiAgICAnXFx1MUVFOSc6ICd1JyxcbiAgICAnXFx1MUVFRic6ICd1JyxcbiAgICAnXFx1MUVFRCc6ICd1JyxcbiAgICAnXFx1MUVGMSc6ICd1JyxcbiAgICAnXFx1MUVFNSc6ICd1JyxcbiAgICAnXFx1MUU3Myc6ICd1JyxcbiAgICAnXFx1MDE3Myc6ICd1JyxcbiAgICAnXFx1MUU3Nyc6ICd1JyxcbiAgICAnXFx1MUU3NSc6ICd1JyxcbiAgICAnXFx1MDI4OSc6ICd1JyxcbiAgICAnXFx1MjRFNSc6ICd2JyxcbiAgICAnXFx1RkY1Nic6ICd2JyxcbiAgICAnXFx1MUU3RCc6ICd2JyxcbiAgICAnXFx1MUU3Ric6ICd2JyxcbiAgICAnXFx1MDI4Qic6ICd2JyxcbiAgICAnXFx1QTc1Ric6ICd2JyxcbiAgICAnXFx1MDI4Qyc6ICd2JyxcbiAgICAnXFx1QTc2MSc6ICd2eScsXG4gICAgJ1xcdTI0RTYnOiAndycsXG4gICAgJ1xcdUZGNTcnOiAndycsXG4gICAgJ1xcdTFFODEnOiAndycsXG4gICAgJ1xcdTFFODMnOiAndycsXG4gICAgJ1xcdTAxNzUnOiAndycsXG4gICAgJ1xcdTFFODcnOiAndycsXG4gICAgJ1xcdTFFODUnOiAndycsXG4gICAgJ1xcdTFFOTgnOiAndycsXG4gICAgJ1xcdTFFODknOiAndycsXG4gICAgJ1xcdTJDNzMnOiAndycsXG4gICAgJ1xcdTI0RTcnOiAneCcsXG4gICAgJ1xcdUZGNTgnOiAneCcsXG4gICAgJ1xcdTFFOEInOiAneCcsXG4gICAgJ1xcdTFFOEQnOiAneCcsXG4gICAgJ1xcdTI0RTgnOiAneScsXG4gICAgJ1xcdUZGNTknOiAneScsXG4gICAgJ1xcdTFFRjMnOiAneScsXG4gICAgJ1xcdTAwRkQnOiAneScsXG4gICAgJ1xcdTAxNzcnOiAneScsXG4gICAgJ1xcdTFFRjknOiAneScsXG4gICAgJ1xcdTAyMzMnOiAneScsXG4gICAgJ1xcdTFFOEYnOiAneScsXG4gICAgJ1xcdTAwRkYnOiAneScsXG4gICAgJ1xcdTFFRjcnOiAneScsXG4gICAgJ1xcdTFFOTknOiAneScsXG4gICAgJ1xcdTFFRjUnOiAneScsXG4gICAgJ1xcdTAxQjQnOiAneScsXG4gICAgJ1xcdTAyNEYnOiAneScsXG4gICAgJ1xcdTFFRkYnOiAneScsXG4gICAgJ1xcdTI0RTknOiAneicsXG4gICAgJ1xcdUZGNUEnOiAneicsXG4gICAgJ1xcdTAxN0EnOiAneicsXG4gICAgJ1xcdTFFOTEnOiAneicsXG4gICAgJ1xcdTAxN0MnOiAneicsXG4gICAgJ1xcdTAxN0UnOiAneicsXG4gICAgJ1xcdTFFOTMnOiAneicsXG4gICAgJ1xcdTFFOTUnOiAneicsXG4gICAgJ1xcdTAxQjYnOiAneicsXG4gICAgJ1xcdTAyMjUnOiAneicsXG4gICAgJ1xcdTAyNDAnOiAneicsXG4gICAgJ1xcdTJDNkMnOiAneicsXG4gICAgJ1xcdUE3NjMnOiAneicsXG4gICAgJ1xcdTAzODYnOiAnXFx1MDM5MScsXG4gICAgJ1xcdTAzODgnOiAnXFx1MDM5NScsXG4gICAgJ1xcdTAzODknOiAnXFx1MDM5NycsXG4gICAgJ1xcdTAzOEEnOiAnXFx1MDM5OScsXG4gICAgJ1xcdTAzQUEnOiAnXFx1MDM5OScsXG4gICAgJ1xcdTAzOEMnOiAnXFx1MDM5RicsXG4gICAgJ1xcdTAzOEUnOiAnXFx1MDNBNScsXG4gICAgJ1xcdTAzQUInOiAnXFx1MDNBNScsXG4gICAgJ1xcdTAzOEYnOiAnXFx1MDNBOScsXG4gICAgJ1xcdTAzQUMnOiAnXFx1MDNCMScsXG4gICAgJ1xcdTAzQUQnOiAnXFx1MDNCNScsXG4gICAgJ1xcdTAzQUUnOiAnXFx1MDNCNycsXG4gICAgJ1xcdTAzQUYnOiAnXFx1MDNCOScsXG4gICAgJ1xcdTAzQ0EnOiAnXFx1MDNCOScsXG4gICAgJ1xcdTAzOTAnOiAnXFx1MDNCOScsXG4gICAgJ1xcdTAzQ0MnOiAnXFx1MDNCRicsXG4gICAgJ1xcdTAzQ0QnOiAnXFx1MDNDNScsXG4gICAgJ1xcdTAzQ0InOiAnXFx1MDNDNScsXG4gICAgJ1xcdTAzQjAnOiAnXFx1MDNDNScsXG4gICAgJ1xcdTAzQ0UnOiAnXFx1MDNDOScsXG4gICAgJ1xcdTAzQzInOiAnXFx1MDNDMycsXG4gICAgJ1xcdTIwMTknOiAnXFwnJ1xuICB9O1xuXG4gIHJldHVybiBkaWFjcml0aWNzO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kYXRhL2Jhc2UnLFtcbiAgJy4uL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKFV0aWxzKSB7XG4gIGZ1bmN0aW9uIEJhc2VBZGFwdGVyICgkZWxlbWVudCwgb3B0aW9ucykge1xuICAgIEJhc2VBZGFwdGVyLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpO1xuICB9XG5cbiAgVXRpbHMuRXh0ZW5kKEJhc2VBZGFwdGVyLCBVdGlscy5PYnNlcnZhYmxlKTtcblxuICBCYXNlQWRhcHRlci5wcm90b3R5cGUuY3VycmVudCA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIGBjdXJyZW50YCBtZXRob2QgbXVzdCBiZSBkZWZpbmVkIGluIGNoaWxkIGNsYXNzZXMuJyk7XG4gIH07XG5cbiAgQmFzZUFkYXB0ZXIucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBgcXVlcnlgIG1ldGhvZCBtdXN0IGJlIGRlZmluZWQgaW4gY2hpbGQgY2xhc3Nlcy4nKTtcbiAgfTtcblxuICBCYXNlQWRhcHRlci5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICAvLyBDYW4gYmUgaW1wbGVtZW50ZWQgaW4gc3ViY2xhc3Nlc1xuICB9O1xuXG4gIEJhc2VBZGFwdGVyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIC8vIENhbiBiZSBpbXBsZW1lbnRlZCBpbiBzdWJjbGFzc2VzXG4gIH07XG5cbiAgQmFzZUFkYXB0ZXIucHJvdG90eXBlLmdlbmVyYXRlUmVzdWx0SWQgPSBmdW5jdGlvbiAoY29udGFpbmVyLCBkYXRhKSB7XG4gICAgdmFyIGlkID0gY29udGFpbmVyLmlkICsgJy1yZXN1bHQtJztcblxuICAgIGlkICs9IFV0aWxzLmdlbmVyYXRlQ2hhcnMoNCk7XG5cbiAgICBpZiAoZGF0YS5pZCAhPSBudWxsKSB7XG4gICAgICBpZCArPSAnLScgKyBkYXRhLmlkLnRvU3RyaW5nKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlkICs9ICctJyArIFV0aWxzLmdlbmVyYXRlQ2hhcnMoNCk7XG4gICAgfVxuICAgIHJldHVybiBpZDtcbiAgfTtcblxuICByZXR1cm4gQmFzZUFkYXB0ZXI7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2RhdGEvc2VsZWN0JyxbXG4gICcuL2Jhc2UnLFxuICAnLi4vdXRpbHMnLFxuICAnanF1ZXJ5J1xuXSwgZnVuY3Rpb24gKEJhc2VBZGFwdGVyLCBVdGlscywgJCkge1xuICBmdW5jdGlvbiBTZWxlY3RBZGFwdGVyICgkZWxlbWVudCwgb3B0aW9ucykge1xuICAgIHRoaXMuJGVsZW1lbnQgPSAkZWxlbWVudDtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgU2VsZWN0QWRhcHRlci5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzKTtcbiAgfVxuXG4gIFV0aWxzLkV4dGVuZChTZWxlY3RBZGFwdGVyLCBCYXNlQWRhcHRlcik7XG5cbiAgU2VsZWN0QWRhcHRlci5wcm90b3R5cGUuY3VycmVudCA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHZhciBkYXRhID0gQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKFxuICAgICAgdGhpcy4kZWxlbWVudFswXS5xdWVyeVNlbGVjdG9yQWxsKCc6Y2hlY2tlZCcpLFxuICAgICAgZnVuY3Rpb24gKHNlbGVjdGVkRWxlbWVudCkge1xuICAgICAgICByZXR1cm4gc2VsZi5pdGVtKCQoc2VsZWN0ZWRFbGVtZW50KSk7XG4gICAgICB9XG4gICAgKTtcblxuICAgIGNhbGxiYWNrKGRhdGEpO1xuICB9O1xuXG4gIFNlbGVjdEFkYXB0ZXIucHJvdG90eXBlLnNlbGVjdCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgZGF0YS5zZWxlY3RlZCA9IHRydWU7XG5cbiAgICAvLyBJZiBkYXRhLmVsZW1lbnQgaXMgYSBET00gbm9kZSwgdXNlIGl0IGluc3RlYWRcbiAgICBpZiAoXG4gICAgICBkYXRhLmVsZW1lbnQgIT0gbnVsbCAmJiBkYXRhLmVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnb3B0aW9uJ1xuICAgICkge1xuICAgICAgZGF0YS5lbGVtZW50LnNlbGVjdGVkID0gdHJ1ZTtcblxuICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdpbnB1dCcpLnRyaWdnZXIoJ2NoYW5nZScpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuJGVsZW1lbnQucHJvcCgnbXVsdGlwbGUnKSkge1xuICAgICAgdGhpcy5jdXJyZW50KGZ1bmN0aW9uIChjdXJyZW50RGF0YSkge1xuICAgICAgICB2YXIgdmFsID0gW107XG5cbiAgICAgICAgZGF0YSA9IFtkYXRhXTtcbiAgICAgICAgZGF0YS5wdXNoLmFwcGx5KGRhdGEsIGN1cnJlbnREYXRhKTtcblxuICAgICAgICBmb3IgKHZhciBkID0gMDsgZCA8IGRhdGEubGVuZ3RoOyBkKyspIHtcbiAgICAgICAgICB2YXIgaWQgPSBkYXRhW2RdLmlkO1xuXG4gICAgICAgICAgaWYgKHZhbC5pbmRleE9mKGlkKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHZhbC5wdXNoKGlkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzZWxmLiRlbGVtZW50LnZhbCh2YWwpO1xuICAgICAgICBzZWxmLiRlbGVtZW50LnRyaWdnZXIoJ2lucHV0JykudHJpZ2dlcignY2hhbmdlJyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHZhbCA9IGRhdGEuaWQ7XG5cbiAgICAgIHRoaXMuJGVsZW1lbnQudmFsKHZhbCk7XG4gICAgICB0aGlzLiRlbGVtZW50LnRyaWdnZXIoJ2lucHV0JykudHJpZ2dlcignY2hhbmdlJyk7XG4gICAgfVxuICB9O1xuXG4gIFNlbGVjdEFkYXB0ZXIucHJvdG90eXBlLnVuc2VsZWN0ID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBpZiAoIXRoaXMuJGVsZW1lbnQucHJvcCgnbXVsdGlwbGUnKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGRhdGEuc2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgIGlmIChcbiAgICAgIGRhdGEuZWxlbWVudCAhPSBudWxsICYmXG4gICAgICBkYXRhLmVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnb3B0aW9uJ1xuICAgICkge1xuICAgICAgZGF0YS5lbGVtZW50LnNlbGVjdGVkID0gZmFsc2U7XG5cbiAgICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcignaW5wdXQnKS50cmlnZ2VyKCdjaGFuZ2UnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudChmdW5jdGlvbiAoY3VycmVudERhdGEpIHtcbiAgICAgIHZhciB2YWwgPSBbXTtcblxuICAgICAgZm9yICh2YXIgZCA9IDA7IGQgPCBjdXJyZW50RGF0YS5sZW5ndGg7IGQrKykge1xuICAgICAgICB2YXIgaWQgPSBjdXJyZW50RGF0YVtkXS5pZDtcblxuICAgICAgICBpZiAoaWQgIT09IGRhdGEuaWQgJiYgdmFsLmluZGV4T2YoaWQpID09PSAtMSkge1xuICAgICAgICAgIHZhbC5wdXNoKGlkKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzZWxmLiRlbGVtZW50LnZhbCh2YWwpO1xuXG4gICAgICBzZWxmLiRlbGVtZW50LnRyaWdnZXIoJ2lucHV0JykudHJpZ2dlcignY2hhbmdlJyk7XG4gICAgfSk7XG4gIH07XG5cbiAgU2VsZWN0QWRhcHRlci5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcblxuICAgIGNvbnRhaW5lci5vbignc2VsZWN0JywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgc2VsZi5zZWxlY3QocGFyYW1zLmRhdGEpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCd1bnNlbGVjdCcsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIHNlbGYudW5zZWxlY3QocGFyYW1zLmRhdGEpO1xuICAgIH0pO1xuICB9O1xuXG4gIFNlbGVjdEFkYXB0ZXIucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgLy8gUmVtb3ZlIGFueXRoaW5nIGFkZGVkIHRvIGNoaWxkIGVsZW1lbnRzXG4gICAgdGhpcy4kZWxlbWVudC5maW5kKCcqJykuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBSZW1vdmUgYW55IGN1c3RvbSBkYXRhIHNldCBieSBTZWxlY3QyXG4gICAgICBVdGlscy5SZW1vdmVEYXRhKHRoaXMpO1xuICAgIH0pO1xuICB9O1xuXG4gIFNlbGVjdEFkYXB0ZXIucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICB2YXIgZGF0YSA9IFtdO1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHZhciAkb3B0aW9ucyA9IHRoaXMuJGVsZW1lbnQuY2hpbGRyZW4oKTtcblxuICAgICRvcHRpb25zLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnRhZ05hbWUudG9Mb3dlckNhc2UoKSAhPT0gJ29wdGlvbicgJiZcbiAgICAgICAgdGhpcy50YWdOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdvcHRncm91cCdcbiAgICAgICkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciAkb3B0aW9uID0gJCh0aGlzKTtcblxuICAgICAgdmFyIG9wdGlvbiA9IHNlbGYuaXRlbSgkb3B0aW9uKTtcblxuICAgICAgdmFyIG1hdGNoZXMgPSBzZWxmLm1hdGNoZXMocGFyYW1zLCBvcHRpb24pO1xuXG4gICAgICBpZiAobWF0Y2hlcyAhPT0gbnVsbCkge1xuICAgICAgICBkYXRhLnB1c2gobWF0Y2hlcyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjYWxsYmFjayh7XG4gICAgICByZXN1bHRzOiBkYXRhXG4gICAgfSk7XG4gIH07XG5cbiAgU2VsZWN0QWRhcHRlci5wcm90b3R5cGUuYWRkT3B0aW9ucyA9IGZ1bmN0aW9uICgkb3B0aW9ucykge1xuICAgIHRoaXMuJGVsZW1lbnQuYXBwZW5kKCRvcHRpb25zKTtcbiAgfTtcblxuICBTZWxlY3RBZGFwdGVyLnByb3RvdHlwZS5vcHRpb24gPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHZhciBvcHRpb247XG5cbiAgICBpZiAoZGF0YS5jaGlsZHJlbikge1xuICAgICAgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0Z3JvdXAnKTtcbiAgICAgIG9wdGlvbi5sYWJlbCA9IGRhdGEudGV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7XG5cbiAgICAgIGlmIChvcHRpb24udGV4dENvbnRlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBvcHRpb24udGV4dENvbnRlbnQgPSBkYXRhLnRleHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcHRpb24uaW5uZXJUZXh0ID0gZGF0YS50ZXh0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkYXRhLmlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG9wdGlvbi52YWx1ZSA9IGRhdGEuaWQ7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuZGlzYWJsZWQpIHtcbiAgICAgIG9wdGlvbi5kaXNhYmxlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuc2VsZWN0ZWQpIHtcbiAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEudGl0bGUpIHtcbiAgICAgIG9wdGlvbi50aXRsZSA9IGRhdGEudGl0bGU7XG4gICAgfVxuXG4gICAgdmFyIG5vcm1hbGl6ZWREYXRhID0gdGhpcy5fbm9ybWFsaXplSXRlbShkYXRhKTtcbiAgICBub3JtYWxpemVkRGF0YS5lbGVtZW50ID0gb3B0aW9uO1xuXG4gICAgLy8gT3ZlcnJpZGUgdGhlIG9wdGlvbidzIGRhdGEgd2l0aCB0aGUgY29tYmluZWQgZGF0YVxuICAgIFV0aWxzLlN0b3JlRGF0YShvcHRpb24sICdkYXRhJywgbm9ybWFsaXplZERhdGEpO1xuXG4gICAgcmV0dXJuICQob3B0aW9uKTtcbiAgfTtcblxuICBTZWxlY3RBZGFwdGVyLnByb3RvdHlwZS5pdGVtID0gZnVuY3Rpb24gKCRvcHRpb24pIHtcbiAgICB2YXIgZGF0YSA9IHt9O1xuXG4gICAgZGF0YSA9IFV0aWxzLkdldERhdGEoJG9wdGlvblswXSwgJ2RhdGEnKTtcblxuICAgIGlmIChkYXRhICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIHZhciBvcHRpb24gPSAkb3B0aW9uWzBdO1xuXG4gICAgaWYgKG9wdGlvbi50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdvcHRpb24nKSB7XG4gICAgICBkYXRhID0ge1xuICAgICAgICBpZDogJG9wdGlvbi52YWwoKSxcbiAgICAgICAgdGV4dDogJG9wdGlvbi50ZXh0KCksXG4gICAgICAgIGRpc2FibGVkOiAkb3B0aW9uLnByb3AoJ2Rpc2FibGVkJyksXG4gICAgICAgIHNlbGVjdGVkOiAkb3B0aW9uLnByb3AoJ3NlbGVjdGVkJyksXG4gICAgICAgIHRpdGxlOiAkb3B0aW9uLnByb3AoJ3RpdGxlJylcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChvcHRpb24udGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnb3B0Z3JvdXAnKSB7XG4gICAgICBkYXRhID0ge1xuICAgICAgICB0ZXh0OiAkb3B0aW9uLnByb3AoJ2xhYmVsJyksXG4gICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgdGl0bGU6ICRvcHRpb24ucHJvcCgndGl0bGUnKVxuICAgICAgfTtcblxuICAgICAgdmFyICRjaGlsZHJlbiA9ICRvcHRpb24uY2hpbGRyZW4oJ29wdGlvbicpO1xuICAgICAgdmFyIGNoaWxkcmVuID0gW107XG5cbiAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgJGNoaWxkcmVuLmxlbmd0aDsgYysrKSB7XG4gICAgICAgIHZhciAkY2hpbGQgPSAkKCRjaGlsZHJlbltjXSk7XG5cbiAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5pdGVtKCRjaGlsZCk7XG5cbiAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICB9XG5cbiAgICAgIGRhdGEuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICB9XG5cbiAgICBkYXRhID0gdGhpcy5fbm9ybWFsaXplSXRlbShkYXRhKTtcbiAgICBkYXRhLmVsZW1lbnQgPSAkb3B0aW9uWzBdO1xuXG4gICAgVXRpbHMuU3RvcmVEYXRhKCRvcHRpb25bMF0sICdkYXRhJywgZGF0YSk7XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfTtcblxuICBTZWxlY3RBZGFwdGVyLnByb3RvdHlwZS5fbm9ybWFsaXplSXRlbSA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgaWYgKGl0ZW0gIT09IE9iamVjdChpdGVtKSkge1xuICAgICAgaXRlbSA9IHtcbiAgICAgICAgaWQ6IGl0ZW0sXG4gICAgICAgIHRleHQ6IGl0ZW1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgaXRlbSA9ICQuZXh0ZW5kKHt9LCB7XG4gICAgICB0ZXh0OiAnJ1xuICAgIH0sIGl0ZW0pO1xuXG4gICAgdmFyIGRlZmF1bHRzID0ge1xuICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgfTtcblxuICAgIGlmIChpdGVtLmlkICE9IG51bGwpIHtcbiAgICAgIGl0ZW0uaWQgPSBpdGVtLmlkLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKGl0ZW0udGV4dCAhPSBudWxsKSB7XG4gICAgICBpdGVtLnRleHQgPSBpdGVtLnRleHQudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpZiAoaXRlbS5fcmVzdWx0SWQgPT0gbnVsbCAmJiBpdGVtLmlkICYmIHRoaXMuY29udGFpbmVyICE9IG51bGwpIHtcbiAgICAgIGl0ZW0uX3Jlc3VsdElkID0gdGhpcy5nZW5lcmF0ZVJlc3VsdElkKHRoaXMuY29udGFpbmVyLCBpdGVtKTtcbiAgICB9XG5cbiAgICByZXR1cm4gJC5leHRlbmQoe30sIGRlZmF1bHRzLCBpdGVtKTtcbiAgfTtcblxuICBTZWxlY3RBZGFwdGVyLnByb3RvdHlwZS5tYXRjaGVzID0gZnVuY3Rpb24gKHBhcmFtcywgZGF0YSkge1xuICAgIHZhciBtYXRjaGVyID0gdGhpcy5vcHRpb25zLmdldCgnbWF0Y2hlcicpO1xuXG4gICAgcmV0dXJuIG1hdGNoZXIocGFyYW1zLCBkYXRhKTtcbiAgfTtcblxuICByZXR1cm4gU2VsZWN0QWRhcHRlcjtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZGF0YS9hcnJheScsW1xuICAnLi9zZWxlY3QnLFxuICAnLi4vdXRpbHMnLFxuICAnanF1ZXJ5J1xuXSwgZnVuY3Rpb24gKFNlbGVjdEFkYXB0ZXIsIFV0aWxzLCAkKSB7XG4gIGZ1bmN0aW9uIEFycmF5QWRhcHRlciAoJGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLl9kYXRhVG9Db252ZXJ0ID0gb3B0aW9ucy5nZXQoJ2RhdGEnKSB8fCBbXTtcblxuICAgIEFycmF5QWRhcHRlci5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzLCAkZWxlbWVudCwgb3B0aW9ucyk7XG4gIH1cblxuICBVdGlscy5FeHRlbmQoQXJyYXlBZGFwdGVyLCBTZWxlY3RBZGFwdGVyKTtcblxuICBBcnJheUFkYXB0ZXIucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgQXJyYXlBZGFwdGVyLl9fc3VwZXJfXy5iaW5kLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcblxuICAgIHRoaXMuYWRkT3B0aW9ucyh0aGlzLmNvbnZlcnRUb09wdGlvbnModGhpcy5fZGF0YVRvQ29udmVydCkpO1xuICB9O1xuXG4gIEFycmF5QWRhcHRlci5wcm90b3R5cGUuc2VsZWN0ID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB2YXIgJG9wdGlvbiA9IHRoaXMuJGVsZW1lbnQuZmluZCgnb3B0aW9uJykuZmlsdGVyKGZ1bmN0aW9uIChpLCBlbG0pIHtcbiAgICAgIHJldHVybiBlbG0udmFsdWUgPT0gZGF0YS5pZC50b1N0cmluZygpO1xuICAgIH0pO1xuXG4gICAgaWYgKCRvcHRpb24ubGVuZ3RoID09PSAwKSB7XG4gICAgICAkb3B0aW9uID0gdGhpcy5vcHRpb24oZGF0YSk7XG5cbiAgICAgIHRoaXMuYWRkT3B0aW9ucygkb3B0aW9uKTtcbiAgICB9XG5cbiAgICBBcnJheUFkYXB0ZXIuX19zdXBlcl9fLnNlbGVjdC5jYWxsKHRoaXMsIGRhdGEpO1xuICB9O1xuXG4gIEFycmF5QWRhcHRlci5wcm90b3R5cGUuY29udmVydFRvT3B0aW9ucyA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyICRleGlzdGluZyA9IHRoaXMuJGVsZW1lbnQuZmluZCgnb3B0aW9uJyk7XG4gICAgdmFyIGV4aXN0aW5nSWRzID0gJGV4aXN0aW5nLm1hcChmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gc2VsZi5pdGVtKCQodGhpcykpLmlkO1xuICAgIH0pLmdldCgpO1xuXG4gICAgdmFyICRvcHRpb25zID0gW107XG5cbiAgICAvLyBGaWx0ZXIgb3V0IGFsbCBpdGVtcyBleGNlcHQgZm9yIHRoZSBvbmUgcGFzc2VkIGluIHRoZSBhcmd1bWVudFxuICAgIGZ1bmN0aW9uIG9ubHlJdGVtIChpdGVtKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gJCh0aGlzKS52YWwoKSA9PSBpdGVtLmlkO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBkID0gMDsgZCA8IGRhdGEubGVuZ3RoOyBkKyspIHtcbiAgICAgIHZhciBpdGVtID0gdGhpcy5fbm9ybWFsaXplSXRlbShkYXRhW2RdKTtcblxuICAgICAgLy8gU2tpcCBpdGVtcyB3aGljaCB3ZXJlIHByZS1sb2FkZWQsIG9ubHkgbWVyZ2UgdGhlIGRhdGFcbiAgICAgIGlmIChleGlzdGluZ0lkcy5pbmRleE9mKGl0ZW0uaWQpID49IDApIHtcbiAgICAgICAgdmFyICRleGlzdGluZ09wdGlvbiA9ICRleGlzdGluZy5maWx0ZXIob25seUl0ZW0oaXRlbSkpO1xuXG4gICAgICAgIHZhciBleGlzdGluZ0RhdGEgPSB0aGlzLml0ZW0oJGV4aXN0aW5nT3B0aW9uKTtcbiAgICAgICAgdmFyIG5ld0RhdGEgPSAkLmV4dGVuZCh0cnVlLCB7fSwgaXRlbSwgZXhpc3RpbmdEYXRhKTtcblxuICAgICAgICB2YXIgJG5ld09wdGlvbiA9IHRoaXMub3B0aW9uKG5ld0RhdGEpO1xuXG4gICAgICAgICRleGlzdGluZ09wdGlvbi5yZXBsYWNlV2l0aCgkbmV3T3B0aW9uKTtcblxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyICRvcHRpb24gPSB0aGlzLm9wdGlvbihpdGVtKTtcblxuICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgdmFyICRjaGlsZHJlbiA9IHRoaXMuY29udmVydFRvT3B0aW9ucyhpdGVtLmNoaWxkcmVuKTtcblxuICAgICAgICAkb3B0aW9uLmFwcGVuZCgkY2hpbGRyZW4pO1xuICAgICAgfVxuXG4gICAgICAkb3B0aW9ucy5wdXNoKCRvcHRpb24pO1xuICAgIH1cblxuICAgIHJldHVybiAkb3B0aW9ucztcbiAgfTtcblxuICByZXR1cm4gQXJyYXlBZGFwdGVyO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kYXRhL2FqYXgnLFtcbiAgJy4vYXJyYXknLFxuICAnLi4vdXRpbHMnLFxuICAnanF1ZXJ5J1xuXSwgZnVuY3Rpb24gKEFycmF5QWRhcHRlciwgVXRpbHMsICQpIHtcbiAgZnVuY3Rpb24gQWpheEFkYXB0ZXIgKCRlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgdGhpcy5hamF4T3B0aW9ucyA9IHRoaXMuX2FwcGx5RGVmYXVsdHMob3B0aW9ucy5nZXQoJ2FqYXgnKSk7XG5cbiAgICBpZiAodGhpcy5hamF4T3B0aW9ucy5wcm9jZXNzUmVzdWx0cyAhPSBudWxsKSB7XG4gICAgICB0aGlzLnByb2Nlc3NSZXN1bHRzID0gdGhpcy5hamF4T3B0aW9ucy5wcm9jZXNzUmVzdWx0cztcbiAgICB9XG5cbiAgICBBamF4QWRhcHRlci5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzLCAkZWxlbWVudCwgb3B0aW9ucyk7XG4gIH1cblxuICBVdGlscy5FeHRlbmQoQWpheEFkYXB0ZXIsIEFycmF5QWRhcHRlcik7XG5cbiAgQWpheEFkYXB0ZXIucHJvdG90eXBlLl9hcHBseURlZmF1bHRzID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICB2YXIgZGVmYXVsdHMgPSB7XG4gICAgICBkYXRhOiBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICAgIHJldHVybiAkLmV4dGVuZCh7fSwgcGFyYW1zLCB7XG4gICAgICAgICAgcTogcGFyYW1zLnRlcm1cbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgdHJhbnNwb3J0OiBmdW5jdGlvbiAocGFyYW1zLCBzdWNjZXNzLCBmYWlsdXJlKSB7XG4gICAgICAgIHZhciAkcmVxdWVzdCA9ICQuYWpheChwYXJhbXMpO1xuXG4gICAgICAgICRyZXF1ZXN0LnRoZW4oc3VjY2Vzcyk7XG4gICAgICAgICRyZXF1ZXN0LmZhaWwoZmFpbHVyZSk7XG5cbiAgICAgICAgcmV0dXJuICRyZXF1ZXN0O1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gJC5leHRlbmQoe30sIGRlZmF1bHRzLCBvcHRpb25zLCB0cnVlKTtcbiAgfTtcblxuICBBamF4QWRhcHRlci5wcm90b3R5cGUucHJvY2Vzc1Jlc3VsdHMgPSBmdW5jdGlvbiAocmVzdWx0cykge1xuICAgIHJldHVybiByZXN1bHRzO1xuICB9O1xuXG4gIEFqYXhBZGFwdGVyLnByb3RvdHlwZS5xdWVyeSA9IGZ1bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgdmFyIG1hdGNoZXMgPSBbXTtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBpZiAodGhpcy5fcmVxdWVzdCAhPSBudWxsKSB7XG4gICAgICAvLyBKU09OUCByZXF1ZXN0cyBjYW5ub3QgYWx3YXlzIGJlIGFib3J0ZWRcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5fcmVxdWVzdC5hYm9ydCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLl9yZXF1ZXN0LmFib3J0KCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3JlcXVlc3QgPSBudWxsO1xuICAgIH1cblxuICAgIHZhciBvcHRpb25zID0gJC5leHRlbmQoe1xuICAgICAgdHlwZTogJ0dFVCdcbiAgICB9LCB0aGlzLmFqYXhPcHRpb25zKTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy51cmwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIG9wdGlvbnMudXJsID0gb3B0aW9ucy51cmwuY2FsbCh0aGlzLiRlbGVtZW50LCBwYXJhbXMpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5kYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBvcHRpb25zLmRhdGEgPSBvcHRpb25zLmRhdGEuY2FsbCh0aGlzLiRlbGVtZW50LCBwYXJhbXMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlcXVlc3QgKCkge1xuICAgICAgdmFyICRyZXF1ZXN0ID0gb3B0aW9ucy50cmFuc3BvcnQob3B0aW9ucywgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgdmFyIHJlc3VsdHMgPSBzZWxmLnByb2Nlc3NSZXN1bHRzKGRhdGEsIHBhcmFtcyk7XG5cbiAgICAgICAgaWYgKHNlbGYub3B0aW9ucy5nZXQoJ2RlYnVnJykgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS5lcnJvcikge1xuICAgICAgICAgIC8vIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSByZXNwb25zZSBpbmNsdWRlZCBhIGByZXN1bHRzYCBrZXkuXG4gICAgICAgICAgaWYgKCFyZXN1bHRzIHx8ICFyZXN1bHRzLnJlc3VsdHMgfHwgIUFycmF5LmlzQXJyYXkocmVzdWx0cy5yZXN1bHRzKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgJ1NlbGVjdDI6IFRoZSBBSkFYIHJlc3VsdHMgZGlkIG5vdCByZXR1cm4gYW4gYXJyYXkgaW4gdGhlICcgK1xuICAgICAgICAgICAgICAnYHJlc3VsdHNgIGtleSBvZiB0aGUgcmVzcG9uc2UuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjYWxsYmFjayhyZXN1bHRzKTtcbiAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gQXR0ZW1wdCB0byBkZXRlY3QgaWYgYSByZXF1ZXN0IHdhcyBhYm9ydGVkXG4gICAgICAgIC8vIE9ubHkgd29ya3MgaWYgdGhlIHRyYW5zcG9ydCBleHBvc2VzIGEgc3RhdHVzIHByb3BlcnR5XG4gICAgICAgIGlmICgnc3RhdHVzJyBpbiAkcmVxdWVzdCAmJlxuICAgICAgICAgICAgKCRyZXF1ZXN0LnN0YXR1cyA9PT0gMCB8fCAkcmVxdWVzdC5zdGF0dXMgPT09ICcwJykpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzZWxmLnRyaWdnZXIoJ3Jlc3VsdHM6bWVzc2FnZScsIHtcbiAgICAgICAgICBtZXNzYWdlOiAnZXJyb3JMb2FkaW5nJ1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBzZWxmLl9yZXF1ZXN0ID0gJHJlcXVlc3Q7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYWpheE9wdGlvbnMuZGVsYXkgJiYgcGFyYW1zLnRlcm0gIT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMuX3F1ZXJ5VGltZW91dCkge1xuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuX3F1ZXJ5VGltZW91dCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3F1ZXJ5VGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KHJlcXVlc3QsIHRoaXMuYWpheE9wdGlvbnMuZGVsYXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0KCk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBBamF4QWRhcHRlcjtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZGF0YS90YWdzJyxbXG4gICdqcXVlcnknXG5dLCBmdW5jdGlvbiAoJCkge1xuICBmdW5jdGlvbiBUYWdzIChkZWNvcmF0ZWQsICRlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgdmFyIHRhZ3MgPSBvcHRpb25zLmdldCgndGFncycpO1xuXG4gICAgdmFyIGNyZWF0ZVRhZyA9IG9wdGlvbnMuZ2V0KCdjcmVhdGVUYWcnKTtcblxuICAgIGlmIChjcmVhdGVUYWcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jcmVhdGVUYWcgPSBjcmVhdGVUYWc7XG4gICAgfVxuXG4gICAgdmFyIGluc2VydFRhZyA9IG9wdGlvbnMuZ2V0KCdpbnNlcnRUYWcnKTtcblxuICAgIGlmIChpbnNlcnRUYWcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmluc2VydFRhZyA9IGluc2VydFRhZztcbiAgICB9XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZWxlbWVudCwgb3B0aW9ucyk7XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0YWdzKSkge1xuICAgICAgZm9yICh2YXIgdCA9IDA7IHQgPCB0YWdzLmxlbmd0aDsgdCsrKSB7XG4gICAgICAgIHZhciB0YWcgPSB0YWdzW3RdO1xuICAgICAgICB2YXIgaXRlbSA9IHRoaXMuX25vcm1hbGl6ZUl0ZW0odGFnKTtcblxuICAgICAgICB2YXIgJG9wdGlvbiA9IHRoaXMub3B0aW9uKGl0ZW0pO1xuXG4gICAgICAgIHRoaXMuJGVsZW1lbnQuYXBwZW5kKCRvcHRpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIFRhZ3MucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgcGFyYW1zLCBjYWxsYmFjaykge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHRoaXMuX3JlbW92ZU9sZFRhZ3MoKTtcblxuICAgIGlmIChwYXJhbXMudGVybSA9PSBudWxsIHx8IHBhcmFtcy5wYWdlICE9IG51bGwpIHtcbiAgICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIHBhcmFtcywgY2FsbGJhY2spO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdyYXBwZXIgKG9iaiwgY2hpbGQpIHtcbiAgICAgIHZhciBkYXRhID0gb2JqLnJlc3VsdHM7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgb3B0aW9uID0gZGF0YVtpXTtcblxuICAgICAgICB2YXIgY2hlY2tDaGlsZHJlbiA9IChcbiAgICAgICAgICBvcHRpb24uY2hpbGRyZW4gIT0gbnVsbCAmJlxuICAgICAgICAgICF3cmFwcGVyKHtcbiAgICAgICAgICAgIHJlc3VsdHM6IG9wdGlvbi5jaGlsZHJlblxuICAgICAgICAgIH0sIHRydWUpXG4gICAgICAgICk7XG5cbiAgICAgICAgdmFyIG9wdGlvblRleHQgPSAob3B0aW9uLnRleHQgfHwgJycpLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIHZhciBwYXJhbXNUZXJtID0gKHBhcmFtcy50ZXJtIHx8ICcnKS50b1VwcGVyQ2FzZSgpO1xuXG4gICAgICAgIHZhciBjaGVja1RleHQgPSBvcHRpb25UZXh0ID09PSBwYXJhbXNUZXJtO1xuXG4gICAgICAgIGlmIChjaGVja1RleHQgfHwgY2hlY2tDaGlsZHJlbikge1xuICAgICAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG9iai5kYXRhID0gZGF0YTtcbiAgICAgICAgICBjYWxsYmFjayhvYmopO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIHRhZyA9IHNlbGYuY3JlYXRlVGFnKHBhcmFtcyk7XG5cbiAgICAgIGlmICh0YWcgIT0gbnVsbCkge1xuICAgICAgICB2YXIgJG9wdGlvbiA9IHNlbGYub3B0aW9uKHRhZyk7XG4gICAgICAgICRvcHRpb24uYXR0cignZGF0YS1zZWxlY3QyLXRhZycsICd0cnVlJyk7XG5cbiAgICAgICAgc2VsZi5hZGRPcHRpb25zKFskb3B0aW9uXSk7XG5cbiAgICAgICAgc2VsZi5pbnNlcnRUYWcoZGF0YSwgdGFnKTtcbiAgICAgIH1cblxuICAgICAgb2JqLnJlc3VsdHMgPSBkYXRhO1xuXG4gICAgICBjYWxsYmFjayhvYmopO1xuICAgIH1cblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIHBhcmFtcywgd3JhcHBlcik7XG4gIH07XG5cbiAgVGFncy5wcm90b3R5cGUuY3JlYXRlVGFnID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgcGFyYW1zKSB7XG4gICAgaWYgKHBhcmFtcy50ZXJtID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciB0ZXJtID0gcGFyYW1zLnRlcm0udHJpbSgpO1xuXG4gICAgaWYgKHRlcm0gPT09ICcnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRlcm0sXG4gICAgICB0ZXh0OiB0ZXJtXG4gICAgfTtcbiAgfTtcblxuICBUYWdzLnByb3RvdHlwZS5pbnNlcnRUYWcgPSBmdW5jdGlvbiAoXywgZGF0YSwgdGFnKSB7XG4gICAgZGF0YS51bnNoaWZ0KHRhZyk7XG4gIH07XG5cbiAgVGFncy5wcm90b3R5cGUuX3JlbW92ZU9sZFRhZ3MgPSBmdW5jdGlvbiAoXykge1xuICAgIHZhciAkb3B0aW9ucyA9IHRoaXMuJGVsZW1lbnQuZmluZCgnb3B0aW9uW2RhdGEtc2VsZWN0Mi10YWddJyk7XG5cbiAgICAkb3B0aW9ucy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgJCh0aGlzKS5yZW1vdmUoKTtcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gVGFncztcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZGF0YS90b2tlbml6ZXInLFtcbiAgJ2pxdWVyeSdcbl0sIGZ1bmN0aW9uICgkKSB7XG4gIGZ1bmN0aW9uIFRva2VuaXplciAoZGVjb3JhdGVkLCAkZWxlbWVudCwgb3B0aW9ucykge1xuICAgIHZhciB0b2tlbml6ZXIgPSBvcHRpb25zLmdldCgndG9rZW5pemVyJyk7XG5cbiAgICBpZiAodG9rZW5pemVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudG9rZW5pemVyID0gdG9rZW5pemVyO1xuICAgIH1cblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsICRlbGVtZW50LCBvcHRpb25zKTtcbiAgfVxuXG4gIFRva2VuaXplci5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIGNvbnRhaW5lciwgJGNvbnRhaW5lcik7XG5cbiAgICB0aGlzLiRzZWFyY2ggPSAgY29udGFpbmVyLmRyb3Bkb3duLiRzZWFyY2ggfHwgY29udGFpbmVyLnNlbGVjdGlvbi4kc2VhcmNoIHx8XG4gICAgICAkY29udGFpbmVyLmZpbmQoJy5zZWxlY3QyLXNlYXJjaF9fZmllbGQnKTtcbiAgfTtcblxuICBUb2tlbml6ZXIucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgcGFyYW1zLCBjYWxsYmFjaykge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUFuZFNlbGVjdCAoZGF0YSkge1xuICAgICAgLy8gTm9ybWFsaXplIHRoZSBkYXRhIG9iamVjdCBzbyB3ZSBjYW4gdXNlIGl0IGZvciBjaGVja3NcbiAgICAgIHZhciBpdGVtID0gc2VsZi5fbm9ybWFsaXplSXRlbShkYXRhKTtcblxuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGRhdGEgb2JqZWN0IGFscmVhZHkgZXhpc3RzIGFzIGEgdGFnXG4gICAgICAvLyBTZWxlY3QgaXQgaWYgaXQgZG9lc24ndFxuICAgICAgdmFyICRleGlzdGluZ09wdGlvbnMgPSBzZWxmLiRlbGVtZW50LmZpbmQoJ29wdGlvbicpLmZpbHRlcihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAkKHRoaXMpLnZhbCgpID09PSBpdGVtLmlkO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIElmIGFuIGV4aXN0aW5nIG9wdGlvbiB3YXNuJ3QgZm91bmQgZm9yIGl0LCBjcmVhdGUgdGhlIG9wdGlvblxuICAgICAgaWYgKCEkZXhpc3RpbmdPcHRpb25zLmxlbmd0aCkge1xuICAgICAgICB2YXIgJG9wdGlvbiA9IHNlbGYub3B0aW9uKGl0ZW0pO1xuICAgICAgICAkb3B0aW9uLmF0dHIoJ2RhdGEtc2VsZWN0Mi10YWcnLCB0cnVlKTtcblxuICAgICAgICBzZWxmLl9yZW1vdmVPbGRUYWdzKCk7XG4gICAgICAgIHNlbGYuYWRkT3B0aW9ucyhbJG9wdGlvbl0pO1xuICAgICAgfVxuXG4gICAgICAvLyBTZWxlY3QgdGhlIGl0ZW0sIG5vdyB0aGF0IHdlIGtub3cgdGhlcmUgaXMgYW4gb3B0aW9uIGZvciBpdFxuICAgICAgc2VsZWN0KGl0ZW0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNlbGVjdCAoZGF0YSkge1xuICAgICAgc2VsZi50cmlnZ2VyKCdzZWxlY3QnLCB7XG4gICAgICAgIGRhdGE6IGRhdGFcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHBhcmFtcy50ZXJtID0gcGFyYW1zLnRlcm0gfHwgJyc7XG5cbiAgICB2YXIgdG9rZW5EYXRhID0gdGhpcy50b2tlbml6ZXIocGFyYW1zLCB0aGlzLm9wdGlvbnMsIGNyZWF0ZUFuZFNlbGVjdCk7XG5cbiAgICBpZiAodG9rZW5EYXRhLnRlcm0gIT09IHBhcmFtcy50ZXJtKSB7XG4gICAgICAvLyBSZXBsYWNlIHRoZSBzZWFyY2ggdGVybSBpZiB3ZSBoYXZlIHRoZSBzZWFyY2ggYm94XG4gICAgICBpZiAodGhpcy4kc2VhcmNoLmxlbmd0aCkge1xuICAgICAgICB0aGlzLiRzZWFyY2gudmFsKHRva2VuRGF0YS50ZXJtKTtcbiAgICAgICAgdGhpcy4kc2VhcmNoLnRyaWdnZXIoJ2ZvY3VzJyk7XG4gICAgICB9XG5cbiAgICAgIHBhcmFtcy50ZXJtID0gdG9rZW5EYXRhLnRlcm07XG4gICAgfVxuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgcGFyYW1zLCBjYWxsYmFjayk7XG4gIH07XG5cbiAgVG9rZW5pemVyLnByb3RvdHlwZS50b2tlbml6ZXIgPSBmdW5jdGlvbiAoXywgcGFyYW1zLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICAgIHZhciBzZXBhcmF0b3JzID0gb3B0aW9ucy5nZXQoJ3Rva2VuU2VwYXJhdG9ycycpIHx8IFtdO1xuICAgIHZhciB0ZXJtID0gcGFyYW1zLnRlcm07XG4gICAgdmFyIGkgPSAwO1xuXG4gICAgdmFyIGNyZWF0ZVRhZyA9IHRoaXMuY3JlYXRlVGFnIHx8IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBwYXJhbXMudGVybSxcbiAgICAgICAgdGV4dDogcGFyYW1zLnRlcm1cbiAgICAgIH07XG4gICAgfTtcblxuICAgIHdoaWxlIChpIDwgdGVybS5sZW5ndGgpIHtcbiAgICAgIHZhciB0ZXJtQ2hhciA9IHRlcm1baV07XG5cbiAgICAgIGlmIChzZXBhcmF0b3JzLmluZGV4T2YodGVybUNoYXIpID09PSAtMSkge1xuICAgICAgICBpKys7XG5cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBwYXJ0ID0gdGVybS5zdWJzdHIoMCwgaSk7XG4gICAgICB2YXIgcGFydFBhcmFtcyA9ICQuZXh0ZW5kKHt9LCBwYXJhbXMsIHtcbiAgICAgICAgdGVybTogcGFydFxuICAgICAgfSk7XG5cbiAgICAgIHZhciBkYXRhID0gY3JlYXRlVGFnKHBhcnRQYXJhbXMpO1xuXG4gICAgICBpZiAoZGF0YSA9PSBudWxsKSB7XG4gICAgICAgIGkrKztcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuXG4gICAgICAvLyBSZXNldCB0aGUgdGVybSB0byBub3QgaW5jbHVkZSB0aGUgdG9rZW5pemVkIHBvcnRpb25cbiAgICAgIHRlcm0gPSB0ZXJtLnN1YnN0cihpICsgMSkgfHwgJyc7XG4gICAgICBpID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdGVybTogdGVybVxuICAgIH07XG4gIH07XG5cbiAgcmV0dXJuIFRva2VuaXplcjtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZGF0YS9taW5pbXVtSW5wdXRMZW5ndGgnLFtcblxuXSwgZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBNaW5pbXVtSW5wdXRMZW5ndGggKGRlY29yYXRlZCwgJGUsIG9wdGlvbnMpIHtcbiAgICB0aGlzLm1pbmltdW1JbnB1dExlbmd0aCA9IG9wdGlvbnMuZ2V0KCdtaW5pbXVtSW5wdXRMZW5ndGgnKTtcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsICRlLCBvcHRpb25zKTtcbiAgfVxuXG4gIE1pbmltdW1JbnB1dExlbmd0aC5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgcGFyYW1zLnRlcm0gPSBwYXJhbXMudGVybSB8fCAnJztcblxuICAgIGlmIChwYXJhbXMudGVybS5sZW5ndGggPCB0aGlzLm1pbmltdW1JbnB1dExlbmd0aCkge1xuICAgICAgdGhpcy50cmlnZ2VyKCdyZXN1bHRzOm1lc3NhZ2UnLCB7XG4gICAgICAgIG1lc3NhZ2U6ICdpbnB1dFRvb1Nob3J0JyxcbiAgICAgICAgYXJnczoge1xuICAgICAgICAgIG1pbmltdW06IHRoaXMubWluaW11bUlucHV0TGVuZ3RoLFxuICAgICAgICAgIGlucHV0OiBwYXJhbXMudGVybSxcbiAgICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIHBhcmFtcywgY2FsbGJhY2spO1xuICB9O1xuXG4gIHJldHVybiBNaW5pbXVtSW5wdXRMZW5ndGg7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2RhdGEvbWF4aW11bUlucHV0TGVuZ3RoJyxbXG5cbl0sIGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTWF4aW11bUlucHV0TGVuZ3RoIChkZWNvcmF0ZWQsICRlLCBvcHRpb25zKSB7XG4gICAgdGhpcy5tYXhpbXVtSW5wdXRMZW5ndGggPSBvcHRpb25zLmdldCgnbWF4aW11bUlucHV0TGVuZ3RoJyk7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZSwgb3B0aW9ucyk7XG4gIH1cblxuICBNYXhpbXVtSW5wdXRMZW5ndGgucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgcGFyYW1zLCBjYWxsYmFjaykge1xuICAgIHBhcmFtcy50ZXJtID0gcGFyYW1zLnRlcm0gfHwgJyc7XG5cbiAgICBpZiAodGhpcy5tYXhpbXVtSW5wdXRMZW5ndGggPiAwICYmXG4gICAgICAgIHBhcmFtcy50ZXJtLmxlbmd0aCA+IHRoaXMubWF4aW11bUlucHV0TGVuZ3RoKSB7XG4gICAgICB0aGlzLnRyaWdnZXIoJ3Jlc3VsdHM6bWVzc2FnZScsIHtcbiAgICAgICAgbWVzc2FnZTogJ2lucHV0VG9vTG9uZycsXG4gICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICBtYXhpbXVtOiB0aGlzLm1heGltdW1JbnB1dExlbmd0aCxcbiAgICAgICAgICBpbnB1dDogcGFyYW1zLnRlcm0sXG4gICAgICAgICAgcGFyYW1zOiBwYXJhbXNcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBwYXJhbXMsIGNhbGxiYWNrKTtcbiAgfTtcblxuICByZXR1cm4gTWF4aW11bUlucHV0TGVuZ3RoO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kYXRhL21heGltdW1TZWxlY3Rpb25MZW5ndGgnLFtcblxuXSwgZnVuY3Rpb24gKCl7XG4gIGZ1bmN0aW9uIE1heGltdW1TZWxlY3Rpb25MZW5ndGggKGRlY29yYXRlZCwgJGUsIG9wdGlvbnMpIHtcbiAgICB0aGlzLm1heGltdW1TZWxlY3Rpb25MZW5ndGggPSBvcHRpb25zLmdldCgnbWF4aW11bVNlbGVjdGlvbkxlbmd0aCcpO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgJGUsIG9wdGlvbnMpO1xuICB9XG5cbiAgTWF4aW11bVNlbGVjdGlvbkxlbmd0aC5wcm90b3R5cGUuYmluZCA9XG4gICAgZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIGNvbnRhaW5lciwgJGNvbnRhaW5lcik7XG5cbiAgICAgIGNvbnRhaW5lci5vbignc2VsZWN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBzZWxmLl9jaGVja0lmTWF4aW11bVNlbGVjdGVkKCk7XG4gICAgICB9KTtcbiAgfTtcblxuICBNYXhpbXVtU2VsZWN0aW9uTGVuZ3RoLnByb3RvdHlwZS5xdWVyeSA9XG4gICAgZnVuY3Rpb24gKGRlY29yYXRlZCwgcGFyYW1zLCBjYWxsYmFjaykge1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgICB0aGlzLl9jaGVja0lmTWF4aW11bVNlbGVjdGVkKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZGVjb3JhdGVkLmNhbGwoc2VsZiwgcGFyYW1zLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgfTtcblxuICBNYXhpbXVtU2VsZWN0aW9uTGVuZ3RoLnByb3RvdHlwZS5fY2hlY2tJZk1heGltdW1TZWxlY3RlZCA9XG4gICAgZnVuY3Rpb24gKF8sIHN1Y2Nlc3NDYWxsYmFjaykge1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgICB0aGlzLmN1cnJlbnQoZnVuY3Rpb24gKGN1cnJlbnREYXRhKSB7XG4gICAgICAgIHZhciBjb3VudCA9IGN1cnJlbnREYXRhICE9IG51bGwgPyBjdXJyZW50RGF0YS5sZW5ndGggOiAwO1xuICAgICAgICBpZiAoc2VsZi5tYXhpbXVtU2VsZWN0aW9uTGVuZ3RoID4gMCAmJlxuICAgICAgICAgIGNvdW50ID49IHNlbGYubWF4aW11bVNlbGVjdGlvbkxlbmd0aCkge1xuICAgICAgICAgIHNlbGYudHJpZ2dlcigncmVzdWx0czptZXNzYWdlJywge1xuICAgICAgICAgICAgbWVzc2FnZTogJ21heGltdW1TZWxlY3RlZCcsXG4gICAgICAgICAgICBhcmdzOiB7XG4gICAgICAgICAgICAgIG1heGltdW06IHNlbGYubWF4aW11bVNlbGVjdGlvbkxlbmd0aFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdWNjZXNzQ2FsbGJhY2spIHtcbiAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2soKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIE1heGltdW1TZWxlY3Rpb25MZW5ndGg7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2Ryb3Bkb3duJyxbXG4gICdqcXVlcnknLFxuICAnLi91dGlscydcbl0sIGZ1bmN0aW9uICgkLCBVdGlscykge1xuICBmdW5jdGlvbiBEcm9wZG93biAoJGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLiRlbGVtZW50ID0gJGVsZW1lbnQ7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIERyb3Bkb3duLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpO1xuICB9XG5cbiAgVXRpbHMuRXh0ZW5kKERyb3Bkb3duLCBVdGlscy5PYnNlcnZhYmxlKTtcblxuICBEcm9wZG93bi5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkZHJvcGRvd24gPSAkKFxuICAgICAgJzxzcGFuIGNsYXNzPVwic2VsZWN0Mi1kcm9wZG93blwiPicgK1xuICAgICAgICAnPHNwYW4gY2xhc3M9XCJzZWxlY3QyLXJlc3VsdHNcIj48L3NwYW4+JyArXG4gICAgICAnPC9zcGFuPidcbiAgICApO1xuXG4gICAgJGRyb3Bkb3duLmF0dHIoJ2RpcicsIHRoaXMub3B0aW9ucy5nZXQoJ2RpcicpKTtcblxuICAgIHRoaXMuJGRyb3Bkb3duID0gJGRyb3Bkb3duO1xuXG4gICAgcmV0dXJuICRkcm9wZG93bjtcbiAgfTtcblxuICBEcm9wZG93bi5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAvLyBTaG91bGQgYmUgaW1wbGVtZW50ZWQgaW4gc3ViY2xhc3Nlc1xuICB9O1xuXG4gIERyb3Bkb3duLnByb3RvdHlwZS5wb3NpdGlvbiA9IGZ1bmN0aW9uICgkZHJvcGRvd24sICRjb250YWluZXIpIHtcbiAgICAvLyBTaG91bGQgYmUgaW1wbGVtZW50ZWQgaW4gc3ViY2xhc3Nlc1xuICB9O1xuXG4gIERyb3Bkb3duLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIC8vIFJlbW92ZSB0aGUgZHJvcGRvd24gZnJvbSB0aGUgRE9NXG4gICAgdGhpcy4kZHJvcGRvd24ucmVtb3ZlKCk7XG4gIH07XG5cbiAgcmV0dXJuIERyb3Bkb3duO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kcm9wZG93bi9zZWFyY2gnLFtcbiAgJ2pxdWVyeSdcbl0sIGZ1bmN0aW9uICgkKSB7XG4gIGZ1bmN0aW9uIFNlYXJjaCAoKSB7IH1cblxuICBTZWFyY2gucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQpIHtcbiAgICB2YXIgJHJlbmRlcmVkID0gZGVjb3JhdGVkLmNhbGwodGhpcyk7XG4gICAgdmFyIHNlYXJjaExhYmVsID0gdGhpcy5vcHRpb25zLmdldCgndHJhbnNsYXRpb25zJykuZ2V0KCdzZWFyY2gnKTtcblxuICAgIHZhciAkc2VhcmNoID0gJChcbiAgICAgICc8c3BhbiBjbGFzcz1cInNlbGVjdDItc2VhcmNoIHNlbGVjdDItc2VhcmNoLS1kcm9wZG93blwiPicgK1xuICAgICAgICAnPGlucHV0IGNsYXNzPVwic2VsZWN0Mi1zZWFyY2hfX2ZpZWxkXCIgdHlwZT1cInNlYXJjaFwiIHRhYmluZGV4PVwiLTFcIicgK1xuICAgICAgICAnIGF1dG9jb3JyZWN0PVwib2ZmXCIgYXV0b2NhcGl0YWxpemU9XCJub25lXCInICtcbiAgICAgICAgJyBzcGVsbGNoZWNrPVwiZmFsc2VcIiByb2xlPVwic2VhcmNoYm94XCIgYXJpYS1hdXRvY29tcGxldGU9XCJsaXN0XCIgLz4nICtcbiAgICAgICc8L3NwYW4+J1xuICAgICk7XG5cbiAgICB0aGlzLiRzZWFyY2hDb250YWluZXIgPSAkc2VhcmNoO1xuICAgIHRoaXMuJHNlYXJjaCA9ICRzZWFyY2guZmluZCgnaW5wdXQnKTtcblxuICAgIHRoaXMuJHNlYXJjaC5wcm9wKCdhdXRvY29tcGxldGUnLCB0aGlzLm9wdGlvbnMuZ2V0KCdhdXRvY29tcGxldGUnKSk7XG4gICAgdGhpcy4kc2VhcmNoLmF0dHIoJ2FyaWEtbGFiZWwnLCBzZWFyY2hMYWJlbCgpKTtcblxuICAgICRyZW5kZXJlZC5wcmVwZW5kKCRzZWFyY2gpO1xuXG4gICAgcmV0dXJuICRyZW5kZXJlZDtcbiAgfTtcblxuICBTZWFyY2gucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgcmVzdWx0c0lkID0gY29udGFpbmVyLmlkICsgJy1yZXN1bHRzJztcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIGNvbnRhaW5lciwgJGNvbnRhaW5lcik7XG5cbiAgICB0aGlzLiRzZWFyY2gub24oJ2tleWRvd24nLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBzZWxmLnRyaWdnZXIoJ2tleXByZXNzJywgZXZ0KTtcblxuICAgICAgc2VsZi5fa2V5VXBQcmV2ZW50ZWQgPSBldnQuaXNEZWZhdWx0UHJldmVudGVkKCk7XG4gICAgfSk7XG5cbiAgICAvLyBXb3JrYXJvdW5kIGZvciBicm93c2VycyB3aGljaCBkbyBub3Qgc3VwcG9ydCB0aGUgYGlucHV0YCBldmVudFxuICAgIC8vIFRoaXMgd2lsbCBwcmV2ZW50IGRvdWJsZS10cmlnZ2VyaW5nIG9mIGV2ZW50cyBmb3IgYnJvd3NlcnMgd2hpY2ggc3VwcG9ydFxuICAgIC8vIGJvdGggdGhlIGBrZXl1cGAgYW5kIGBpbnB1dGAgZXZlbnRzLlxuICAgIHRoaXMuJHNlYXJjaC5vbignaW5wdXQnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAvLyBVbmJpbmQgdGhlIGR1cGxpY2F0ZWQgYGtleXVwYCBldmVudFxuICAgICAgJCh0aGlzKS5vZmYoJ2tleXVwJyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLiRzZWFyY2gub24oJ2tleXVwIGlucHV0JywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgc2VsZi5oYW5kbGVTZWFyY2goZXZ0KTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignb3BlbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuJHNlYXJjaC5hdHRyKCd0YWJpbmRleCcsIDApO1xuICAgICAgc2VsZi4kc2VhcmNoLmF0dHIoJ2FyaWEtY29udHJvbHMnLCByZXN1bHRzSWQpO1xuXG4gICAgICBzZWxmLiRzZWFyY2gudHJpZ2dlcignZm9jdXMnKTtcblxuICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBzZWxmLiRzZWFyY2gudHJpZ2dlcignZm9jdXMnKTtcbiAgICAgIH0sIDApO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuJHNlYXJjaC5hdHRyKCd0YWJpbmRleCcsIC0xKTtcbiAgICAgIHNlbGYuJHNlYXJjaC5yZW1vdmVBdHRyKCdhcmlhLWNvbnRyb2xzJyk7XG4gICAgICBzZWxmLiRzZWFyY2gucmVtb3ZlQXR0cignYXJpYS1hY3RpdmVkZXNjZW5kYW50Jyk7XG5cbiAgICAgIHNlbGYuJHNlYXJjaC52YWwoJycpO1xuICAgICAgc2VsZi4kc2VhcmNoLnRyaWdnZXIoJ2JsdXInKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignZm9jdXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIWNvbnRhaW5lci5pc09wZW4oKSkge1xuICAgICAgICBzZWxmLiRzZWFyY2gudHJpZ2dlcignZm9jdXMnKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czphbGwnLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBpZiAocGFyYW1zLnF1ZXJ5LnRlcm0gPT0gbnVsbCB8fCBwYXJhbXMucXVlcnkudGVybSA9PT0gJycpIHtcbiAgICAgICAgdmFyIHNob3dTZWFyY2ggPSBzZWxmLnNob3dTZWFyY2gocGFyYW1zKTtcblxuICAgICAgICBpZiAoc2hvd1NlYXJjaCkge1xuICAgICAgICAgIHNlbGYuJHNlYXJjaENvbnRhaW5lclswXS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLXNlYXJjaC0taGlkZScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlbGYuJHNlYXJjaENvbnRhaW5lclswXS5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLXNlYXJjaC0taGlkZScpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6Zm9jdXMnLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBpZiAocGFyYW1zLmRhdGEuX3Jlc3VsdElkKSB7XG4gICAgICAgIHNlbGYuJHNlYXJjaC5hdHRyKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnLCBwYXJhbXMuZGF0YS5fcmVzdWx0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZi4kc2VhcmNoLnJlbW92ZUF0dHIoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIFNlYXJjaC5wcm90b3R5cGUuaGFuZGxlU2VhcmNoID0gZnVuY3Rpb24gKGV2dCkge1xuICAgIGlmICghdGhpcy5fa2V5VXBQcmV2ZW50ZWQpIHtcbiAgICAgIHZhciBpbnB1dCA9IHRoaXMuJHNlYXJjaC52YWwoKTtcblxuICAgICAgdGhpcy50cmlnZ2VyKCdxdWVyeScsIHtcbiAgICAgICAgdGVybTogaW5wdXRcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX2tleVVwUHJldmVudGVkID0gZmFsc2U7XG4gIH07XG5cbiAgU2VhcmNoLnByb3RvdHlwZS5zaG93U2VhcmNoID0gZnVuY3Rpb24gKF8sIHBhcmFtcykge1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIHJldHVybiBTZWFyY2g7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2Ryb3Bkb3duL2hpZGVQbGFjZWhvbGRlcicsW1xuXG5dLCBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEhpZGVQbGFjZWhvbGRlciAoZGVjb3JhdGVkLCAkZWxlbWVudCwgb3B0aW9ucywgZGF0YUFkYXB0ZXIpIHtcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5ub3JtYWxpemVQbGFjZWhvbGRlcihvcHRpb25zLmdldCgncGxhY2Vob2xkZXInKSk7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZWxlbWVudCwgb3B0aW9ucywgZGF0YUFkYXB0ZXIpO1xuICB9XG5cbiAgSGlkZVBsYWNlaG9sZGVyLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBkYXRhKSB7XG4gICAgZGF0YS5yZXN1bHRzID0gdGhpcy5yZW1vdmVQbGFjZWhvbGRlcihkYXRhLnJlc3VsdHMpO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgZGF0YSk7XG4gIH07XG5cbiAgSGlkZVBsYWNlaG9sZGVyLnByb3RvdHlwZS5ub3JtYWxpemVQbGFjZWhvbGRlciA9IGZ1bmN0aW9uIChfLCBwbGFjZWhvbGRlcikge1xuICAgIGlmICh0eXBlb2YgcGxhY2Vob2xkZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgICBwbGFjZWhvbGRlciA9IHtcbiAgICAgICAgaWQ6ICcnLFxuICAgICAgICB0ZXh0OiBwbGFjZWhvbGRlclxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGxhY2Vob2xkZXI7XG4gIH07XG5cbiAgSGlkZVBsYWNlaG9sZGVyLnByb3RvdHlwZS5yZW1vdmVQbGFjZWhvbGRlciA9IGZ1bmN0aW9uIChfLCBkYXRhKSB7XG4gICAgdmFyIG1vZGlmaWVkRGF0YSA9IGRhdGEuc2xpY2UoMCk7XG5cbiAgICBmb3IgKHZhciBkID0gZGF0YS5sZW5ndGggLSAxOyBkID49IDA7IGQtLSkge1xuICAgICAgdmFyIGl0ZW0gPSBkYXRhW2RdO1xuXG4gICAgICBpZiAodGhpcy5wbGFjZWhvbGRlci5pZCA9PT0gaXRlbS5pZCkge1xuICAgICAgICBtb2RpZmllZERhdGEuc3BsaWNlKGQsIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtb2RpZmllZERhdGE7XG4gIH07XG5cbiAgcmV0dXJuIEhpZGVQbGFjZWhvbGRlcjtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZHJvcGRvd24vaW5maW5pdGVTY3JvbGwnLFtcbiAgJ2pxdWVyeSdcbl0sIGZ1bmN0aW9uICgkKSB7XG4gIGZ1bmN0aW9uIEluZmluaXRlU2Nyb2xsIChkZWNvcmF0ZWQsICRlbGVtZW50LCBvcHRpb25zLCBkYXRhQWRhcHRlcikge1xuICAgIHRoaXMubGFzdFBhcmFtcyA9IHt9O1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgJGVsZW1lbnQsIG9wdGlvbnMsIGRhdGFBZGFwdGVyKTtcblxuICAgIHRoaXMuJGxvYWRpbmdNb3JlID0gdGhpcy5jcmVhdGVMb2FkaW5nTW9yZSgpO1xuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICB9XG5cbiAgSW5maW5pdGVTY3JvbGwucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGRhdGEpIHtcbiAgICB0aGlzLiRsb2FkaW5nTW9yZS5yZW1vdmUoKTtcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIGRhdGEpO1xuXG4gICAgaWYgKHRoaXMuc2hvd0xvYWRpbmdNb3JlKGRhdGEpKSB7XG4gICAgICB0aGlzLiRyZXN1bHRzLmFwcGVuZCh0aGlzLiRsb2FkaW5nTW9yZSk7XG4gICAgICB0aGlzLmxvYWRNb3JlSWZOZWVkZWQoKTtcbiAgICB9XG4gIH07XG5cbiAgSW5maW5pdGVTY3JvbGwucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBjb250YWluZXIsICRjb250YWluZXIpO1xuXG4gICAgY29udGFpbmVyLm9uKCdxdWVyeScsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIHNlbGYubGFzdFBhcmFtcyA9IHBhcmFtcztcbiAgICAgIHNlbGYubG9hZGluZyA9IHRydWU7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3F1ZXJ5OmFwcGVuZCcsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIHNlbGYubGFzdFBhcmFtcyA9IHBhcmFtcztcbiAgICAgIHNlbGYubG9hZGluZyA9IHRydWU7XG4gICAgfSk7XG5cbiAgICB0aGlzLiRyZXN1bHRzLm9uKCdzY3JvbGwnLCB0aGlzLmxvYWRNb3JlSWZOZWVkZWQuYmluZCh0aGlzKSk7XG4gIH07XG5cbiAgSW5maW5pdGVTY3JvbGwucHJvdG90eXBlLmxvYWRNb3JlSWZOZWVkZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGlzTG9hZE1vcmVWaXNpYmxlID0gJC5jb250YWlucyhcbiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxcbiAgICAgIHRoaXMuJGxvYWRpbmdNb3JlWzBdXG4gICAgKTtcblxuICAgIGlmICh0aGlzLmxvYWRpbmcgfHwgIWlzTG9hZE1vcmVWaXNpYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGN1cnJlbnRPZmZzZXQgPSB0aGlzLiRyZXN1bHRzLm9mZnNldCgpLnRvcCArXG4gICAgICB0aGlzLiRyZXN1bHRzLm91dGVySGVpZ2h0KGZhbHNlKTtcbiAgICB2YXIgbG9hZGluZ01vcmVPZmZzZXQgPSB0aGlzLiRsb2FkaW5nTW9yZS5vZmZzZXQoKS50b3AgK1xuICAgICAgdGhpcy4kbG9hZGluZ01vcmUub3V0ZXJIZWlnaHQoZmFsc2UpO1xuXG4gICAgaWYgKGN1cnJlbnRPZmZzZXQgKyA1MCA+PSBsb2FkaW5nTW9yZU9mZnNldCkge1xuICAgICAgdGhpcy5sb2FkTW9yZSgpO1xuICAgIH1cbiAgfTtcblxuICBJbmZpbml0ZVNjcm9sbC5wcm90b3R5cGUubG9hZE1vcmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcblxuICAgIHZhciBwYXJhbXMgPSAkLmV4dGVuZCh7fSwge3BhZ2U6IDF9LCB0aGlzLmxhc3RQYXJhbXMpO1xuXG4gICAgcGFyYW1zLnBhZ2UrKztcblxuICAgIHRoaXMudHJpZ2dlcigncXVlcnk6YXBwZW5kJywgcGFyYW1zKTtcbiAgfTtcblxuICBJbmZpbml0ZVNjcm9sbC5wcm90b3R5cGUuc2hvd0xvYWRpbmdNb3JlID0gZnVuY3Rpb24gKF8sIGRhdGEpIHtcbiAgICByZXR1cm4gZGF0YS5wYWdpbmF0aW9uICYmIGRhdGEucGFnaW5hdGlvbi5tb3JlO1xuICB9O1xuXG4gIEluZmluaXRlU2Nyb2xsLnByb3RvdHlwZS5jcmVhdGVMb2FkaW5nTW9yZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgJG9wdGlvbiA9ICQoXG4gICAgICAnPGxpICcgK1xuICAgICAgJ2NsYXNzPVwic2VsZWN0Mi1yZXN1bHRzX19vcHRpb24gc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLWxvYWQtbW9yZVwiJyArXG4gICAgICAncm9sZT1cIm9wdGlvblwiIGFyaWEtZGlzYWJsZWQ9XCJ0cnVlXCI+PC9saT4nXG4gICAgKTtcblxuICAgIHZhciBtZXNzYWdlID0gdGhpcy5vcHRpb25zLmdldCgndHJhbnNsYXRpb25zJykuZ2V0KCdsb2FkaW5nTW9yZScpO1xuXG4gICAgJG9wdGlvbi5odG1sKG1lc3NhZ2UodGhpcy5sYXN0UGFyYW1zKSk7XG5cbiAgICByZXR1cm4gJG9wdGlvbjtcbiAgfTtcblxuICByZXR1cm4gSW5maW5pdGVTY3JvbGw7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2Ryb3Bkb3duL2F0dGFjaEJvZHknLFtcbiAgJ2pxdWVyeScsXG4gICcuLi91dGlscydcbl0sIGZ1bmN0aW9uICgkLCBVdGlscykge1xuICBmdW5jdGlvbiBBdHRhY2hCb2R5IChkZWNvcmF0ZWQsICRlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgdGhpcy4kZHJvcGRvd25QYXJlbnQgPSAkKG9wdGlvbnMuZ2V0KCdkcm9wZG93blBhcmVudCcpIHx8IGRvY3VtZW50LmJvZHkpO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgJGVsZW1lbnQsIG9wdGlvbnMpO1xuICB9XG5cbiAgQXR0YWNoQm9keS5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIGNvbnRhaW5lciwgJGNvbnRhaW5lcik7XG5cbiAgICBjb250YWluZXIub24oJ29wZW4nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLl9zaG93RHJvcGRvd24oKTtcbiAgICAgIHNlbGYuX2F0dGFjaFBvc2l0aW9uaW5nSGFuZGxlcihjb250YWluZXIpO1xuXG4gICAgICAvLyBNdXN0IGJpbmQgYWZ0ZXIgdGhlIHJlc3VsdHMgaGFuZGxlcnMgdG8gZW5zdXJlIGNvcnJlY3Qgc2l6aW5nXG4gICAgICBzZWxmLl9iaW5kQ29udGFpbmVyUmVzdWx0SGFuZGxlcnMoY29udGFpbmVyKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignY2xvc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLl9oaWRlRHJvcGRvd24oKTtcbiAgICAgIHNlbGYuX2RldGFjaFBvc2l0aW9uaW5nSGFuZGxlcihjb250YWluZXIpO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kZHJvcGRvd25Db250YWluZXIub24oJ21vdXNlZG93bicsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9KTtcbiAgfTtcblxuICBBdHRhY2hCb2R5LnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKGRlY29yYXRlZCkge1xuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMpO1xuXG4gICAgdGhpcy4kZHJvcGRvd25Db250YWluZXIucmVtb3ZlKCk7XG4gIH07XG5cbiAgQXR0YWNoQm9keS5wcm90b3R5cGUucG9zaXRpb24gPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCAkZHJvcGRvd24sICRjb250YWluZXIpIHtcbiAgICAvLyBDbG9uZSBhbGwgb2YgdGhlIGNvbnRhaW5lciBjbGFzc2VzXG4gICAgJGRyb3Bkb3duLmF0dHIoJ2NsYXNzJywgJGNvbnRhaW5lci5hdHRyKCdjbGFzcycpKTtcblxuICAgICRkcm9wZG93blswXS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyJyk7XG4gICAgJGRyb3Bkb3duWzBdLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdDItY29udGFpbmVyLS1vcGVuJyk7XG5cbiAgICAkZHJvcGRvd24uY3NzKHtcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgdG9wOiAtOTk5OTk5XG4gICAgfSk7XG5cbiAgICB0aGlzLiRjb250YWluZXIgPSAkY29udGFpbmVyO1xuICB9O1xuXG4gIEF0dGFjaEJvZHkucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQpIHtcbiAgICB2YXIgJGNvbnRhaW5lciA9ICQoJzxzcGFuPjwvc3Bhbj4nKTtcblxuICAgIHZhciAkZHJvcGRvd24gPSBkZWNvcmF0ZWQuY2FsbCh0aGlzKTtcbiAgICAkY29udGFpbmVyLmFwcGVuZCgkZHJvcGRvd24pO1xuXG4gICAgdGhpcy4kZHJvcGRvd25Db250YWluZXIgPSAkY29udGFpbmVyO1xuXG4gICAgcmV0dXJuICRjb250YWluZXI7XG4gIH07XG5cbiAgQXR0YWNoQm9keS5wcm90b3R5cGUuX2hpZGVEcm9wZG93biA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQpIHtcbiAgICB0aGlzLiRkcm9wZG93bkNvbnRhaW5lci5kZXRhY2goKTtcbiAgfTtcblxuICBBdHRhY2hCb2R5LnByb3RvdHlwZS5fYmluZENvbnRhaW5lclJlc3VsdEhhbmRsZXJzID1cbiAgICAgIGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGNvbnRhaW5lcikge1xuXG4gICAgLy8gVGhlc2Ugc2hvdWxkIG9ubHkgYmUgYm91bmQgb25jZVxuICAgIGlmICh0aGlzLl9jb250YWluZXJSZXN1bHRzSGFuZGxlcnNCb3VuZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czphbGwnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLl9wb3NpdGlvbkRyb3Bkb3duKCk7XG4gICAgICBzZWxmLl9yZXNpemVEcm9wZG93bigpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOmFwcGVuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuX3Bvc2l0aW9uRHJvcGRvd24oKTtcbiAgICAgIHNlbGYuX3Jlc2l6ZURyb3Bkb3duKCk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6bWVzc2FnZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuX3Bvc2l0aW9uRHJvcGRvd24oKTtcbiAgICAgIHNlbGYuX3Jlc2l6ZURyb3Bkb3duKCk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3NlbGVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuX3Bvc2l0aW9uRHJvcGRvd24oKTtcbiAgICAgIHNlbGYuX3Jlc2l6ZURyb3Bkb3duKCk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Vuc2VsZWN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi5fcG9zaXRpb25Ecm9wZG93bigpO1xuICAgICAgc2VsZi5fcmVzaXplRHJvcGRvd24oKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2NvbnRhaW5lclJlc3VsdHNIYW5kbGVyc0JvdW5kID0gdHJ1ZTtcbiAgfTtcblxuICBBdHRhY2hCb2R5LnByb3RvdHlwZS5fYXR0YWNoUG9zaXRpb25pbmdIYW5kbGVyID1cbiAgICAgIGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHZhciBzY3JvbGxFdmVudCA9ICdzY3JvbGwuc2VsZWN0Mi4nICsgY29udGFpbmVyLmlkO1xuICAgIHZhciByZXNpemVFdmVudCA9ICdyZXNpemUuc2VsZWN0Mi4nICsgY29udGFpbmVyLmlkO1xuICAgIHZhciBvcmllbnRhdGlvbkV2ZW50ID0gJ29yaWVudGF0aW9uY2hhbmdlLnNlbGVjdDIuJyArIGNvbnRhaW5lci5pZDtcblxuICAgIHZhciAkd2F0Y2hlcnMgPSB0aGlzLiRjb250YWluZXIucGFyZW50cygpLmZpbHRlcihVdGlscy5oYXNTY3JvbGwpO1xuICAgICR3YXRjaGVycy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIFV0aWxzLlN0b3JlRGF0YSh0aGlzLCAnc2VsZWN0Mi1zY3JvbGwtcG9zaXRpb24nLCB7XG4gICAgICAgIHg6ICQodGhpcykuc2Nyb2xsTGVmdCgpLFxuICAgICAgICB5OiAkKHRoaXMpLnNjcm9sbFRvcCgpXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgICR3YXRjaGVycy5vbihzY3JvbGxFdmVudCwgZnVuY3Rpb24gKGV2KSB7XG4gICAgICB2YXIgcG9zaXRpb24gPSBVdGlscy5HZXREYXRhKHRoaXMsICdzZWxlY3QyLXNjcm9sbC1wb3NpdGlvbicpO1xuICAgICAgJCh0aGlzKS5zY3JvbGxUb3AocG9zaXRpb24ueSk7XG4gICAgfSk7XG5cbiAgICAkKHdpbmRvdykub24oc2Nyb2xsRXZlbnQgKyAnICcgKyByZXNpemVFdmVudCArICcgJyArIG9yaWVudGF0aW9uRXZlbnQsXG4gICAgICBmdW5jdGlvbiAoZSkge1xuICAgICAgc2VsZi5fcG9zaXRpb25Ecm9wZG93bigpO1xuICAgICAgc2VsZi5fcmVzaXplRHJvcGRvd24oKTtcbiAgICB9KTtcbiAgfTtcblxuICBBdHRhY2hCb2R5LnByb3RvdHlwZS5fZGV0YWNoUG9zaXRpb25pbmdIYW5kbGVyID1cbiAgICAgIGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGNvbnRhaW5lcikge1xuICAgIHZhciBzY3JvbGxFdmVudCA9ICdzY3JvbGwuc2VsZWN0Mi4nICsgY29udGFpbmVyLmlkO1xuICAgIHZhciByZXNpemVFdmVudCA9ICdyZXNpemUuc2VsZWN0Mi4nICsgY29udGFpbmVyLmlkO1xuICAgIHZhciBvcmllbnRhdGlvbkV2ZW50ID0gJ29yaWVudGF0aW9uY2hhbmdlLnNlbGVjdDIuJyArIGNvbnRhaW5lci5pZDtcblxuICAgIHZhciAkd2F0Y2hlcnMgPSB0aGlzLiRjb250YWluZXIucGFyZW50cygpLmZpbHRlcihVdGlscy5oYXNTY3JvbGwpO1xuICAgICR3YXRjaGVycy5vZmYoc2Nyb2xsRXZlbnQpO1xuXG4gICAgJCh3aW5kb3cpLm9mZihzY3JvbGxFdmVudCArICcgJyArIHJlc2l6ZUV2ZW50ICsgJyAnICsgb3JpZW50YXRpb25FdmVudCk7XG4gIH07XG5cbiAgQXR0YWNoQm9keS5wcm90b3R5cGUuX3Bvc2l0aW9uRHJvcGRvd24gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICR3aW5kb3cgPSAkKHdpbmRvdyk7XG5cbiAgICB2YXIgaXNDdXJyZW50bHlBYm92ZSA9IHRoaXMuJGRyb3Bkb3duWzBdLmNsYXNzTGlzdFxuICAgICAgLmNvbnRhaW5zKCdzZWxlY3QyLWRyb3Bkb3duLS1hYm92ZScpO1xuICAgIHZhciBpc0N1cnJlbnRseUJlbG93ID0gdGhpcy4kZHJvcGRvd25bMF0uY2xhc3NMaXN0XG4gICAgICAuY29udGFpbnMoJ3NlbGVjdDItZHJvcGRvd24tLWJlbG93Jyk7XG5cbiAgICB2YXIgbmV3RGlyZWN0aW9uID0gbnVsbDtcblxuICAgIHZhciBvZmZzZXQgPSB0aGlzLiRjb250YWluZXIub2Zmc2V0KCk7XG5cbiAgICBvZmZzZXQuYm90dG9tID0gb2Zmc2V0LnRvcCArIHRoaXMuJGNvbnRhaW5lci5vdXRlckhlaWdodChmYWxzZSk7XG5cbiAgICB2YXIgY29udGFpbmVyID0ge1xuICAgICAgaGVpZ2h0OiB0aGlzLiRjb250YWluZXIub3V0ZXJIZWlnaHQoZmFsc2UpXG4gICAgfTtcblxuICAgIGNvbnRhaW5lci50b3AgPSBvZmZzZXQudG9wO1xuICAgIGNvbnRhaW5lci5ib3R0b20gPSBvZmZzZXQudG9wICsgY29udGFpbmVyLmhlaWdodDtcblxuICAgIHZhciBkcm9wZG93biA9IHtcbiAgICAgIGhlaWdodDogdGhpcy4kZHJvcGRvd24ub3V0ZXJIZWlnaHQoZmFsc2UpXG4gICAgfTtcblxuICAgIHZhciB2aWV3cG9ydCA9IHtcbiAgICAgIHRvcDogJHdpbmRvdy5zY3JvbGxUb3AoKSxcbiAgICAgIGJvdHRvbTogJHdpbmRvdy5zY3JvbGxUb3AoKSArICR3aW5kb3cuaGVpZ2h0KClcbiAgICB9O1xuXG4gICAgdmFyIGVub3VnaFJvb21BYm92ZSA9IHZpZXdwb3J0LnRvcCA8IChvZmZzZXQudG9wIC0gZHJvcGRvd24uaGVpZ2h0KTtcbiAgICB2YXIgZW5vdWdoUm9vbUJlbG93ID0gdmlld3BvcnQuYm90dG9tID4gKG9mZnNldC5ib3R0b20gKyBkcm9wZG93bi5oZWlnaHQpO1xuXG4gICAgdmFyIGNzcyA9IHtcbiAgICAgIGxlZnQ6IG9mZnNldC5sZWZ0LFxuICAgICAgdG9wOiBjb250YWluZXIuYm90dG9tXG4gICAgfTtcblxuICAgIC8vIERldGVybWluZSB3aGF0IHRoZSBwYXJlbnQgZWxlbWVudCBpcyB0byB1c2UgZm9yIGNhbGN1bGF0aW5nIHRoZSBvZmZzZXRcbiAgICB2YXIgJG9mZnNldFBhcmVudCA9IHRoaXMuJGRyb3Bkb3duUGFyZW50O1xuXG4gICAgLy8gRm9yIHN0YXRpY2FsbHkgcG9zaXRpb25lZCBlbGVtZW50cywgd2UgbmVlZCB0byBnZXQgdGhlIGVsZW1lbnRcbiAgICAvLyB0aGF0IGlzIGRldGVybWluaW5nIHRoZSBvZmZzZXRcbiAgICBpZiAoJG9mZnNldFBhcmVudC5jc3MoJ3Bvc2l0aW9uJykgPT09ICdzdGF0aWMnKSB7XG4gICAgICAkb2Zmc2V0UGFyZW50ID0gJG9mZnNldFBhcmVudC5vZmZzZXRQYXJlbnQoKTtcbiAgICB9XG5cbiAgICB2YXIgcGFyZW50T2Zmc2V0ID0ge1xuICAgICAgdG9wOiAwLFxuICAgICAgbGVmdDogMFxuICAgIH07XG5cbiAgICBpZiAoXG4gICAgICAkLmNvbnRhaW5zKGRvY3VtZW50LmJvZHksICRvZmZzZXRQYXJlbnRbMF0pIHx8XG4gICAgICAkb2Zmc2V0UGFyZW50WzBdLmlzQ29ubmVjdGVkXG4gICAgICApIHtcbiAgICAgIHBhcmVudE9mZnNldCA9ICRvZmZzZXRQYXJlbnQub2Zmc2V0KCk7XG4gICAgfVxuXG4gICAgY3NzLnRvcCAtPSBwYXJlbnRPZmZzZXQudG9wO1xuICAgIGNzcy5sZWZ0IC09IHBhcmVudE9mZnNldC5sZWZ0O1xuXG4gICAgaWYgKCFpc0N1cnJlbnRseUFib3ZlICYmICFpc0N1cnJlbnRseUJlbG93KSB7XG4gICAgICBuZXdEaXJlY3Rpb24gPSAnYmVsb3cnO1xuICAgIH1cblxuICAgIGlmICghZW5vdWdoUm9vbUJlbG93ICYmIGVub3VnaFJvb21BYm92ZSAmJiAhaXNDdXJyZW50bHlBYm92ZSkge1xuICAgICAgbmV3RGlyZWN0aW9uID0gJ2Fib3ZlJztcbiAgICB9IGVsc2UgaWYgKCFlbm91Z2hSb29tQWJvdmUgJiYgZW5vdWdoUm9vbUJlbG93ICYmIGlzQ3VycmVudGx5QWJvdmUpIHtcbiAgICAgIG5ld0RpcmVjdGlvbiA9ICdiZWxvdyc7XG4gICAgfVxuXG4gICAgaWYgKG5ld0RpcmVjdGlvbiA9PSAnYWJvdmUnIHx8XG4gICAgICAoaXNDdXJyZW50bHlBYm92ZSAmJiBuZXdEaXJlY3Rpb24gIT09ICdiZWxvdycpKSB7XG4gICAgICBjc3MudG9wID0gY29udGFpbmVyLnRvcCAtIHBhcmVudE9mZnNldC50b3AgLSBkcm9wZG93bi5oZWlnaHQ7XG4gICAgfVxuXG4gICAgaWYgKG5ld0RpcmVjdGlvbiAhPSBudWxsKSB7XG4gICAgICB0aGlzLiRkcm9wZG93blswXS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLWRyb3Bkb3duLS1iZWxvdycpO1xuICAgICAgdGhpcy4kZHJvcGRvd25bMF0uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0Mi1kcm9wZG93bi0tYWJvdmUnKTtcbiAgICAgIHRoaXMuJGRyb3Bkb3duWzBdLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdDItZHJvcGRvd24tLScgKyBuZXdEaXJlY3Rpb24pO1xuXG4gICAgICB0aGlzLiRjb250YWluZXJbMF0uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0Mi1jb250YWluZXItLWJlbG93Jyk7XG4gICAgICB0aGlzLiRjb250YWluZXJbMF0uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0Mi1jb250YWluZXItLWFib3ZlJyk7XG4gICAgICB0aGlzLiRjb250YWluZXJbMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1jb250YWluZXItLScgKyBuZXdEaXJlY3Rpb24pO1xuICAgIH1cblxuICAgIHRoaXMuJGRyb3Bkb3duQ29udGFpbmVyLmNzcyhjc3MpO1xuICB9O1xuXG4gIEF0dGFjaEJvZHkucHJvdG90eXBlLl9yZXNpemVEcm9wZG93biA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY3NzID0ge1xuICAgICAgd2lkdGg6IHRoaXMuJGNvbnRhaW5lci5vdXRlcldpZHRoKGZhbHNlKSArICdweCdcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5nZXQoJ2Ryb3Bkb3duQXV0b1dpZHRoJykpIHtcbiAgICAgIGNzcy5taW5XaWR0aCA9IGNzcy53aWR0aDtcbiAgICAgIGNzcy5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG4gICAgICBjc3Mud2lkdGggPSAnYXV0byc7XG4gICAgfVxuXG4gICAgdGhpcy4kZHJvcGRvd24uY3NzKGNzcyk7XG4gIH07XG5cbiAgQXR0YWNoQm9keS5wcm90b3R5cGUuX3Nob3dEcm9wZG93biA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQpIHtcbiAgICB0aGlzLiRkcm9wZG93bkNvbnRhaW5lci5hcHBlbmRUbyh0aGlzLiRkcm9wZG93blBhcmVudCk7XG5cbiAgICB0aGlzLl9wb3NpdGlvbkRyb3Bkb3duKCk7XG4gICAgdGhpcy5fcmVzaXplRHJvcGRvd24oKTtcbiAgfTtcblxuICByZXR1cm4gQXR0YWNoQm9keTtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZHJvcGRvd24vbWluaW11bVJlc3VsdHNGb3JTZWFyY2gnLFtcblxuXSwgZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBjb3VudFJlc3VsdHMgKGRhdGEpIHtcbiAgICB2YXIgY291bnQgPSAwO1xuXG4gICAgZm9yICh2YXIgZCA9IDA7IGQgPCBkYXRhLmxlbmd0aDsgZCsrKSB7XG4gICAgICB2YXIgaXRlbSA9IGRhdGFbZF07XG5cbiAgICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgIGNvdW50ICs9IGNvdW50UmVzdWx0cyhpdGVtLmNoaWxkcmVuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvdW50Kys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvdW50O1xuICB9XG5cbiAgZnVuY3Rpb24gTWluaW11bVJlc3VsdHNGb3JTZWFyY2ggKGRlY29yYXRlZCwgJGVsZW1lbnQsIG9wdGlvbnMsIGRhdGFBZGFwdGVyKSB7XG4gICAgdGhpcy5taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCA9IG9wdGlvbnMuZ2V0KCdtaW5pbXVtUmVzdWx0c0ZvclNlYXJjaCcpO1xuXG4gICAgaWYgKHRoaXMubWluaW11bVJlc3VsdHNGb3JTZWFyY2ggPCAwKSB7XG4gICAgICB0aGlzLm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoID0gSW5maW5pdHk7XG4gICAgfVxuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgJGVsZW1lbnQsIG9wdGlvbnMsIGRhdGFBZGFwdGVyKTtcbiAgfVxuXG4gIE1pbmltdW1SZXN1bHRzRm9yU2VhcmNoLnByb3RvdHlwZS5zaG93U2VhcmNoID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgcGFyYW1zKSB7XG4gICAgaWYgKGNvdW50UmVzdWx0cyhwYXJhbXMuZGF0YS5yZXN1bHRzKSA8IHRoaXMubWluaW11bVJlc3VsdHNGb3JTZWFyY2gpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVjb3JhdGVkLmNhbGwodGhpcywgcGFyYW1zKTtcbiAgfTtcblxuICByZXR1cm4gTWluaW11bVJlc3VsdHNGb3JTZWFyY2g7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2Ryb3Bkb3duL3NlbGVjdE9uQ2xvc2UnLFtcbiAgJy4uL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKFV0aWxzKSB7XG4gIGZ1bmN0aW9uIFNlbGVjdE9uQ2xvc2UgKCkgeyB9XG5cbiAgU2VsZWN0T25DbG9zZS5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIGNvbnRhaW5lciwgJGNvbnRhaW5lcik7XG5cbiAgICBjb250YWluZXIub24oJ2Nsb3NlJywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgc2VsZi5faGFuZGxlU2VsZWN0T25DbG9zZShwYXJhbXMpO1xuICAgIH0pO1xuICB9O1xuXG4gIFNlbGVjdE9uQ2xvc2UucHJvdG90eXBlLl9oYW5kbGVTZWxlY3RPbkNsb3NlID0gZnVuY3Rpb24gKF8sIHBhcmFtcykge1xuICAgIGlmIChwYXJhbXMgJiYgcGFyYW1zLm9yaWdpbmFsU2VsZWN0MkV2ZW50ICE9IG51bGwpIHtcbiAgICAgIHZhciBldmVudCA9IHBhcmFtcy5vcmlnaW5hbFNlbGVjdDJFdmVudDtcblxuICAgICAgLy8gRG9uJ3Qgc2VsZWN0IGFuIGl0ZW0gaWYgdGhlIGNsb3NlIGV2ZW50IHdhcyB0cmlnZ2VyZWQgZnJvbSBhIHNlbGVjdCBvclxuICAgICAgLy8gdW5zZWxlY3QgZXZlbnRcbiAgICAgIGlmIChldmVudC5fdHlwZSA9PT0gJ3NlbGVjdCcgfHwgZXZlbnQuX3R5cGUgPT09ICd1bnNlbGVjdCcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciAkaGlnaGxpZ2h0ZWRSZXN1bHRzID0gdGhpcy5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKTtcblxuICAgIC8vIE9ubHkgc2VsZWN0IGhpZ2hsaWdodGVkIHJlc3VsdHNcbiAgICBpZiAoJGhpZ2hsaWdodGVkUmVzdWx0cy5sZW5ndGggPCAxKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGRhdGEgPSBVdGlscy5HZXREYXRhKCRoaWdobGlnaHRlZFJlc3VsdHNbMF0sICdkYXRhJyk7XG5cbiAgICAvLyBEb24ndCByZS1zZWxlY3QgYWxyZWFkeSBzZWxlY3RlZCByZXN1bHRlXG4gICAgaWYgKFxuICAgICAgKGRhdGEuZWxlbWVudCAhPSBudWxsICYmIGRhdGEuZWxlbWVudC5zZWxlY3RlZCkgfHxcbiAgICAgIChkYXRhLmVsZW1lbnQgPT0gbnVsbCAmJiBkYXRhLnNlbGVjdGVkKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudHJpZ2dlcignc2VsZWN0Jywge1xuICAgICAgICBkYXRhOiBkYXRhXG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIFNlbGVjdE9uQ2xvc2U7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2Ryb3Bkb3duL2Nsb3NlT25TZWxlY3QnLFtcblxuXSwgZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBDbG9zZU9uU2VsZWN0ICgpIHsgfVxuXG4gIENsb3NlT25TZWxlY3QucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBjb250YWluZXIsICRjb250YWluZXIpO1xuXG4gICAgY29udGFpbmVyLm9uKCdzZWxlY3QnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBzZWxmLl9zZWxlY3RUcmlnZ2VyZWQoZXZ0KTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigndW5zZWxlY3QnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBzZWxmLl9zZWxlY3RUcmlnZ2VyZWQoZXZ0KTtcbiAgICB9KTtcbiAgfTtcblxuICBDbG9zZU9uU2VsZWN0LnByb3RvdHlwZS5fc2VsZWN0VHJpZ2dlcmVkID0gZnVuY3Rpb24gKF8sIGV2dCkge1xuICAgIHZhciBvcmlnaW5hbEV2ZW50ID0gZXZ0Lm9yaWdpbmFsRXZlbnQ7XG5cbiAgICAvLyBEb24ndCBjbG9zZSBpZiB0aGUgY29udHJvbCBrZXkgaXMgYmVpbmcgaGVsZFxuICAgIGlmIChvcmlnaW5hbEV2ZW50ICYmIChvcmlnaW5hbEV2ZW50LmN0cmxLZXkgfHwgb3JpZ2luYWxFdmVudC5tZXRhS2V5KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudHJpZ2dlcignY2xvc2UnLCB7XG4gICAgICBvcmlnaW5hbEV2ZW50OiBvcmlnaW5hbEV2ZW50LFxuICAgICAgb3JpZ2luYWxTZWxlY3QyRXZlbnQ6IGV2dFxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiBDbG9zZU9uU2VsZWN0O1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kcm9wZG93bi9kcm9wZG93bkNzcycsW1xuICAnLi4vdXRpbHMnXG5dLCBmdW5jdGlvbiAoVXRpbHMpIHtcbiAgZnVuY3Rpb24gRHJvcGRvd25DU1MgKCkgeyB9XG5cbiAgRHJvcGRvd25DU1MucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQpIHtcbiAgICB2YXIgJGRyb3Bkb3duID0gZGVjb3JhdGVkLmNhbGwodGhpcyk7XG5cbiAgICB2YXIgZHJvcGRvd25Dc3NDbGFzcyA9IHRoaXMub3B0aW9ucy5nZXQoJ2Ryb3Bkb3duQ3NzQ2xhc3MnKSB8fCAnJztcblxuICAgIGlmIChkcm9wZG93bkNzc0NsYXNzLmluZGV4T2YoJzphbGw6JykgIT09IC0xKSB7XG4gICAgICBkcm9wZG93bkNzc0NsYXNzID0gZHJvcGRvd25Dc3NDbGFzcy5yZXBsYWNlKCc6YWxsOicsICcnKTtcblxuICAgICAgVXRpbHMuY29weU5vbkludGVybmFsQ3NzQ2xhc3NlcygkZHJvcGRvd25bMF0sIHRoaXMuJGVsZW1lbnRbMF0pO1xuICAgIH1cblxuICAgICRkcm9wZG93bi5hZGRDbGFzcyhkcm9wZG93bkNzc0NsYXNzKTtcblxuICAgIHJldHVybiAkZHJvcGRvd247XG4gIH07XG5cbiAgcmV0dXJuIERyb3Bkb3duQ1NTO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kcm9wZG93bi90YWdzU2VhcmNoSGlnaGxpZ2h0JyxbXG4gICcuLi91dGlscydcbl0sIGZ1bmN0aW9uIChVdGlscykge1xuICBmdW5jdGlvbiBUYWdzU2VhcmNoSGlnaGxpZ2h0ICgpIHsgfVxuXG4gIFRhZ3NTZWFyY2hIaWdobGlnaHQucHJvdG90eXBlLmhpZ2hsaWdodEZpcnN0SXRlbSA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQpIHtcbiAgICB2YXIgJG9wdGlvbnMgPSB0aGlzLiRyZXN1bHRzXG4gICAgLmZpbmQoXG4gICAgICAnLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RhYmxlJyArXG4gICAgICAnOm5vdCguc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGVkKSdcbiAgICApO1xuXG4gICAgaWYgKCRvcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciAkZmlyc3RPcHRpb24gPSAkb3B0aW9ucy5maXJzdCgpO1xuICAgICAgdmFyIGRhdGEgPSBVdGlscy5HZXREYXRhKCRmaXJzdE9wdGlvblswXSwgJ2RhdGEnKTtcbiAgICAgIHZhciBmaXJzdEVsZW1lbnQgPSBkYXRhLmVsZW1lbnQ7XG5cbiAgICAgIGlmIChmaXJzdEVsZW1lbnQgJiYgZmlyc3RFbGVtZW50LmdldEF0dHJpYnV0ZSkge1xuICAgICAgICBpZiAoZmlyc3RFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1zZWxlY3QyLXRhZycpID09PSAndHJ1ZScpIHtcbiAgICAgICAgICAkZmlyc3RPcHRpb24udHJpZ2dlcignbW91c2VlbnRlcicpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcyk7XG4gIH07XG5cbiAgcmV0dXJuIFRhZ3NTZWFyY2hIaWdobGlnaHQ7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2kxOG4vZW4nLFtdLGZ1bmN0aW9uICgpIHtcbiAgLy8gRW5nbGlzaFxuICByZXR1cm4ge1xuICAgIGVycm9yTG9hZGluZzogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuICdUaGUgcmVzdWx0cyBjb3VsZCBub3QgYmUgbG9hZGVkLic7XG4gICAgfSxcbiAgICBpbnB1dFRvb0xvbmc6IGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgICB2YXIgb3ZlckNoYXJzID0gYXJncy5pbnB1dC5sZW5ndGggLSBhcmdzLm1heGltdW07XG5cbiAgICAgIHZhciBtZXNzYWdlID0gJ1BsZWFzZSBkZWxldGUgJyArIG92ZXJDaGFycyArICcgY2hhcmFjdGVyJztcblxuICAgICAgaWYgKG92ZXJDaGFycyAhPSAxKSB7XG4gICAgICAgIG1lc3NhZ2UgKz0gJ3MnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICB9LFxuICAgIGlucHV0VG9vU2hvcnQ6IGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgICB2YXIgcmVtYWluaW5nQ2hhcnMgPSBhcmdzLm1pbmltdW0gLSBhcmdzLmlucHV0Lmxlbmd0aDtcblxuICAgICAgdmFyIG1lc3NhZ2UgPSAnUGxlYXNlIGVudGVyICcgKyByZW1haW5pbmdDaGFycyArICcgb3IgbW9yZSBjaGFyYWN0ZXJzJztcblxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgfSxcbiAgICBsb2FkaW5nTW9yZTogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuICdMb2FkaW5nIG1vcmUgcmVzdWx0c+KApic7XG4gICAgfSxcbiAgICBtYXhpbXVtU2VsZWN0ZWQ6IGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgICB2YXIgbWVzc2FnZSA9ICdZb3UgY2FuIG9ubHkgc2VsZWN0ICcgKyBhcmdzLm1heGltdW0gKyAnIGl0ZW0nO1xuXG4gICAgICBpZiAoYXJncy5tYXhpbXVtICE9IDEpIHtcbiAgICAgICAgbWVzc2FnZSArPSAncyc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH0sXG4gICAgbm9SZXN1bHRzOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gJ05vIHJlc3VsdHMgZm91bmQnO1xuICAgIH0sXG4gICAgc2VhcmNoaW5nOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gJ1NlYXJjaGluZ+KApic7XG4gICAgfSxcbiAgICByZW1vdmVBbGxJdGVtczogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuICdSZW1vdmUgYWxsIGl0ZW1zJztcbiAgICB9LFxuICAgIHJlbW92ZUl0ZW06IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAnUmVtb3ZlIGl0ZW0nO1xuICAgIH0sXG4gICAgc2VhcmNoOiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiAnU2VhcmNoJztcbiAgICB9XG4gIH07XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2RlZmF1bHRzJyxbXG4gICdqcXVlcnknLFxuXG4gICcuL3Jlc3VsdHMnLFxuXG4gICcuL3NlbGVjdGlvbi9zaW5nbGUnLFxuICAnLi9zZWxlY3Rpb24vbXVsdGlwbGUnLFxuICAnLi9zZWxlY3Rpb24vcGxhY2Vob2xkZXInLFxuICAnLi9zZWxlY3Rpb24vYWxsb3dDbGVhcicsXG4gICcuL3NlbGVjdGlvbi9zZWFyY2gnLFxuICAnLi9zZWxlY3Rpb24vc2VsZWN0aW9uQ3NzJyxcbiAgJy4vc2VsZWN0aW9uL2V2ZW50UmVsYXknLFxuXG4gICcuL3V0aWxzJyxcbiAgJy4vdHJhbnNsYXRpb24nLFxuICAnLi9kaWFjcml0aWNzJyxcblxuICAnLi9kYXRhL3NlbGVjdCcsXG4gICcuL2RhdGEvYXJyYXknLFxuICAnLi9kYXRhL2FqYXgnLFxuICAnLi9kYXRhL3RhZ3MnLFxuICAnLi9kYXRhL3Rva2VuaXplcicsXG4gICcuL2RhdGEvbWluaW11bUlucHV0TGVuZ3RoJyxcbiAgJy4vZGF0YS9tYXhpbXVtSW5wdXRMZW5ndGgnLFxuICAnLi9kYXRhL21heGltdW1TZWxlY3Rpb25MZW5ndGgnLFxuXG4gICcuL2Ryb3Bkb3duJyxcbiAgJy4vZHJvcGRvd24vc2VhcmNoJyxcbiAgJy4vZHJvcGRvd24vaGlkZVBsYWNlaG9sZGVyJyxcbiAgJy4vZHJvcGRvd24vaW5maW5pdGVTY3JvbGwnLFxuICAnLi9kcm9wZG93bi9hdHRhY2hCb2R5JyxcbiAgJy4vZHJvcGRvd24vbWluaW11bVJlc3VsdHNGb3JTZWFyY2gnLFxuICAnLi9kcm9wZG93bi9zZWxlY3RPbkNsb3NlJyxcbiAgJy4vZHJvcGRvd24vY2xvc2VPblNlbGVjdCcsXG4gICcuL2Ryb3Bkb3duL2Ryb3Bkb3duQ3NzJyxcbiAgJy4vZHJvcGRvd24vdGFnc1NlYXJjaEhpZ2hsaWdodCcsXG5cbiAgJy4vaTE4bi9lbidcbl0sIGZ1bmN0aW9uICgkLFxuXG4gICAgICAgICAgICAgUmVzdWx0c0xpc3QsXG5cbiAgICAgICAgICAgICBTaW5nbGVTZWxlY3Rpb24sIE11bHRpcGxlU2VsZWN0aW9uLCBQbGFjZWhvbGRlciwgQWxsb3dDbGVhcixcbiAgICAgICAgICAgICBTZWxlY3Rpb25TZWFyY2gsIFNlbGVjdGlvbkNTUywgRXZlbnRSZWxheSxcblxuICAgICAgICAgICAgIFV0aWxzLCBUcmFuc2xhdGlvbiwgRElBQ1JJVElDUyxcblxuICAgICAgICAgICAgIFNlbGVjdERhdGEsIEFycmF5RGF0YSwgQWpheERhdGEsIFRhZ3MsIFRva2VuaXplcixcbiAgICAgICAgICAgICBNaW5pbXVtSW5wdXRMZW5ndGgsIE1heGltdW1JbnB1dExlbmd0aCwgTWF4aW11bVNlbGVjdGlvbkxlbmd0aCxcblxuICAgICAgICAgICAgIERyb3Bkb3duLCBEcm9wZG93blNlYXJjaCwgSGlkZVBsYWNlaG9sZGVyLCBJbmZpbml0ZVNjcm9sbCxcbiAgICAgICAgICAgICBBdHRhY2hCb2R5LCBNaW5pbXVtUmVzdWx0c0ZvclNlYXJjaCwgU2VsZWN0T25DbG9zZSwgQ2xvc2VPblNlbGVjdCxcbiAgICAgICAgICAgICBEcm9wZG93bkNTUywgVGFnc1NlYXJjaEhpZ2hsaWdodCxcblxuICAgICAgICAgICAgIEVuZ2xpc2hUcmFuc2xhdGlvbikge1xuICBmdW5jdGlvbiBEZWZhdWx0cyAoKSB7XG4gICAgdGhpcy5yZXNldCgpO1xuICB9XG5cbiAgRGVmYXVsdHMucHJvdG90eXBlLmFwcGx5ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gJC5leHRlbmQodHJ1ZSwge30sIHRoaXMuZGVmYXVsdHMsIG9wdGlvbnMpO1xuXG4gICAgaWYgKG9wdGlvbnMuZGF0YUFkYXB0ZXIgPT0gbnVsbCkge1xuICAgICAgaWYgKG9wdGlvbnMuYWpheCAhPSBudWxsKSB7XG4gICAgICAgIG9wdGlvbnMuZGF0YUFkYXB0ZXIgPSBBamF4RGF0YTtcbiAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5kYXRhICE9IG51bGwpIHtcbiAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlciA9IEFycmF5RGF0YTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdGlvbnMuZGF0YUFkYXB0ZXIgPSBTZWxlY3REYXRhO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5taW5pbXVtSW5wdXRMZW5ndGggPiAwKSB7XG4gICAgICAgIG9wdGlvbnMuZGF0YUFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcbiAgICAgICAgICBvcHRpb25zLmRhdGFBZGFwdGVyLFxuICAgICAgICAgIE1pbmltdW1JbnB1dExlbmd0aFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5tYXhpbXVtSW5wdXRMZW5ndGggPiAwKSB7XG4gICAgICAgIG9wdGlvbnMuZGF0YUFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcbiAgICAgICAgICBvcHRpb25zLmRhdGFBZGFwdGVyLFxuICAgICAgICAgIE1heGltdW1JbnB1dExlbmd0aFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5tYXhpbXVtU2VsZWN0aW9uTGVuZ3RoID4gMCkge1xuICAgICAgICBvcHRpb25zLmRhdGFBZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlcixcbiAgICAgICAgICBNYXhpbXVtU2VsZWN0aW9uTGVuZ3RoXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLnRhZ3MpIHtcbiAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKG9wdGlvbnMuZGF0YUFkYXB0ZXIsIFRhZ3MpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy50b2tlblNlcGFyYXRvcnMgIT0gbnVsbCB8fCBvcHRpb25zLnRva2VuaXplciAhPSBudWxsKSB7XG4gICAgICAgIG9wdGlvbnMuZGF0YUFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcbiAgICAgICAgICBvcHRpb25zLmRhdGFBZGFwdGVyLFxuICAgICAgICAgIFRva2VuaXplclxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnJlc3VsdHNBZGFwdGVyID09IG51bGwpIHtcbiAgICAgIG9wdGlvbnMucmVzdWx0c0FkYXB0ZXIgPSBSZXN1bHRzTGlzdDtcblxuICAgICAgaWYgKG9wdGlvbnMuYWpheCAhPSBudWxsKSB7XG4gICAgICAgIG9wdGlvbnMucmVzdWx0c0FkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcbiAgICAgICAgICBvcHRpb25zLnJlc3VsdHNBZGFwdGVyLFxuICAgICAgICAgIEluZmluaXRlU2Nyb2xsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLnBsYWNlaG9sZGVyICE9IG51bGwpIHtcbiAgICAgICAgb3B0aW9ucy5yZXN1bHRzQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMucmVzdWx0c0FkYXB0ZXIsXG4gICAgICAgICAgSGlkZVBsYWNlaG9sZGVyXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLnNlbGVjdE9uQ2xvc2UpIHtcbiAgICAgICAgb3B0aW9ucy5yZXN1bHRzQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMucmVzdWx0c0FkYXB0ZXIsXG4gICAgICAgICAgU2VsZWN0T25DbG9zZVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy50YWdzKSB7XG4gICAgICAgIG9wdGlvbnMucmVzdWx0c0FkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcbiAgICAgICAgICBvcHRpb25zLnJlc3VsdHNBZGFwdGVyLFxuICAgICAgICAgIFRhZ3NTZWFyY2hIaWdobGlnaHRcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIgPT0gbnVsbCkge1xuICAgICAgaWYgKG9wdGlvbnMubXVsdGlwbGUpIHtcbiAgICAgICAgb3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIgPSBEcm9wZG93bjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBTZWFyY2hhYmxlRHJvcGRvd24gPSBVdGlscy5EZWNvcmF0ZShEcm9wZG93biwgRHJvcGRvd25TZWFyY2gpO1xuXG4gICAgICAgIG9wdGlvbnMuZHJvcGRvd25BZGFwdGVyID0gU2VhcmNoYWJsZURyb3Bkb3duO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCAhPT0gMCkge1xuICAgICAgICBvcHRpb25zLmRyb3Bkb3duQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMuZHJvcGRvd25BZGFwdGVyLFxuICAgICAgICAgIE1pbmltdW1SZXN1bHRzRm9yU2VhcmNoXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNsb3NlT25TZWxlY3QpIHtcbiAgICAgICAgb3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcbiAgICAgICAgICBvcHRpb25zLmRyb3Bkb3duQWRhcHRlcixcbiAgICAgICAgICBDbG9zZU9uU2VsZWN0XG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmRyb3Bkb3duQ3NzQ2xhc3MgIT0gbnVsbCkge1xuICAgICAgICBvcHRpb25zLmRyb3Bkb3duQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMuZHJvcGRvd25BZGFwdGVyLFxuICAgICAgICAgIERyb3Bkb3duQ1NTXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIG9wdGlvbnMuZHJvcGRvd25BZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgIG9wdGlvbnMuZHJvcGRvd25BZGFwdGVyLFxuICAgICAgICBBdHRhY2hCb2R5XG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnNlbGVjdGlvbkFkYXB0ZXIgPT0gbnVsbCkge1xuICAgICAgaWYgKG9wdGlvbnMubXVsdGlwbGUpIHtcbiAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyID0gTXVsdGlwbGVTZWxlY3Rpb247XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcHRpb25zLnNlbGVjdGlvbkFkYXB0ZXIgPSBTaW5nbGVTZWxlY3Rpb247XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCB0aGUgcGxhY2Vob2xkZXIgbWl4aW4gaWYgYSBwbGFjZWhvbGRlciB3YXMgc3BlY2lmaWVkXG4gICAgICBpZiAob3B0aW9ucy5wbGFjZWhvbGRlciAhPSBudWxsKSB7XG4gICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlcixcbiAgICAgICAgICBQbGFjZWhvbGRlclxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5hbGxvd0NsZWFyKSB7XG4gICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlcixcbiAgICAgICAgICBBbGxvd0NsZWFyXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLm11bHRpcGxlKSB7XG4gICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlcixcbiAgICAgICAgICBTZWxlY3Rpb25TZWFyY2hcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuc2VsZWN0aW9uQ3NzQ2xhc3MgIT0gbnVsbCkge1xuICAgICAgICBvcHRpb25zLnNlbGVjdGlvbkFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcbiAgICAgICAgICBvcHRpb25zLnNlbGVjdGlvbkFkYXB0ZXIsXG4gICAgICAgICAgU2VsZWN0aW9uQ1NTXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICBvcHRpb25zLnNlbGVjdGlvbkFkYXB0ZXIsXG4gICAgICAgIEV2ZW50UmVsYXlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGRlZmF1bHRzIHdlcmUgbm90IHByZXZpb3VzbHkgYXBwbGllZCBmcm9tIGFuIGVsZW1lbnQsIGl0IGlzXG4gICAgLy8gcG9zc2libGUgZm9yIHRoZSBsYW5ndWFnZSBvcHRpb24gdG8gaGF2ZSBub3QgYmVlbiByZXNvbHZlZFxuICAgIG9wdGlvbnMubGFuZ3VhZ2UgPSB0aGlzLl9yZXNvbHZlTGFuZ3VhZ2Uob3B0aW9ucy5sYW5ndWFnZSk7XG5cbiAgICAvLyBBbHdheXMgZmFsbCBiYWNrIHRvIEVuZ2xpc2ggc2luY2UgaXQgd2lsbCBhbHdheXMgYmUgY29tcGxldGVcbiAgICBvcHRpb25zLmxhbmd1YWdlLnB1c2goJ2VuJyk7XG5cbiAgICB2YXIgdW5pcXVlTGFuZ3VhZ2VzID0gW107XG5cbiAgICBmb3IgKHZhciBsID0gMDsgbCA8IG9wdGlvbnMubGFuZ3VhZ2UubGVuZ3RoOyBsKyspIHtcbiAgICAgIHZhciBsYW5ndWFnZSA9IG9wdGlvbnMubGFuZ3VhZ2VbbF07XG5cbiAgICAgIGlmICh1bmlxdWVMYW5ndWFnZXMuaW5kZXhPZihsYW5ndWFnZSkgPT09IC0xKSB7XG4gICAgICAgIHVuaXF1ZUxhbmd1YWdlcy5wdXNoKGxhbmd1YWdlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBvcHRpb25zLmxhbmd1YWdlID0gdW5pcXVlTGFuZ3VhZ2VzO1xuXG4gICAgb3B0aW9ucy50cmFuc2xhdGlvbnMgPSB0aGlzLl9wcm9jZXNzVHJhbnNsYXRpb25zKFxuICAgICAgb3B0aW9ucy5sYW5ndWFnZSxcbiAgICAgIG9wdGlvbnMuZGVidWdcbiAgICApO1xuXG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH07XG5cbiAgRGVmYXVsdHMucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIHN0cmlwRGlhY3JpdGljcyAodGV4dCkge1xuICAgICAgLy8gVXNlZCAndW5pIHJhbmdlICsgbmFtZWQgZnVuY3Rpb24nIGZyb20gaHR0cDovL2pzcGVyZi5jb20vZGlhY3JpdGljcy8xOFxuICAgICAgZnVuY3Rpb24gbWF0Y2goYSkge1xuICAgICAgICByZXR1cm4gRElBQ1JJVElDU1thXSB8fCBhO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGV4dC5yZXBsYWNlKC9bXlxcdTAwMDAtXFx1MDA3RV0vZywgbWF0Y2gpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1hdGNoZXIgKHBhcmFtcywgZGF0YSkge1xuICAgICAgLy8gQWx3YXlzIHJldHVybiB0aGUgb2JqZWN0IGlmIHRoZXJlIGlzIG5vdGhpbmcgdG8gY29tcGFyZVxuICAgICAgaWYgKHBhcmFtcy50ZXJtID09IG51bGwgfHwgcGFyYW1zLnRlcm0udHJpbSgpID09PSAnJykge1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgIH1cblxuICAgICAgLy8gRG8gYSByZWN1cnNpdmUgY2hlY2sgZm9yIG9wdGlvbnMgd2l0aCBjaGlsZHJlblxuICAgICAgaWYgKGRhdGEuY2hpbGRyZW4gJiYgZGF0YS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIENsb25lIHRoZSBkYXRhIG9iamVjdCBpZiB0aGVyZSBhcmUgY2hpbGRyZW5cbiAgICAgICAgLy8gVGhpcyBpcyByZXF1aXJlZCBhcyB3ZSBtb2RpZnkgdGhlIG9iamVjdCB0byByZW1vdmUgYW55IG5vbi1tYXRjaGVzXG4gICAgICAgIHZhciBtYXRjaCA9ICQuZXh0ZW5kKHRydWUsIHt9LCBkYXRhKTtcblxuICAgICAgICAvLyBDaGVjayBlYWNoIGNoaWxkIG9mIHRoZSBvcHRpb25cbiAgICAgICAgZm9yICh2YXIgYyA9IGRhdGEuY2hpbGRyZW4ubGVuZ3RoIC0gMTsgYyA+PSAwOyBjLS0pIHtcbiAgICAgICAgICB2YXIgY2hpbGQgPSBkYXRhLmNoaWxkcmVuW2NdO1xuXG4gICAgICAgICAgdmFyIG1hdGNoZXMgPSBtYXRjaGVyKHBhcmFtcywgY2hpbGQpO1xuXG4gICAgICAgICAgLy8gSWYgdGhlcmUgd2Fzbid0IGEgbWF0Y2gsIHJlbW92ZSB0aGUgb2JqZWN0IGluIHRoZSBhcnJheVxuICAgICAgICAgIGlmIChtYXRjaGVzID09IG51bGwpIHtcbiAgICAgICAgICAgIG1hdGNoLmNoaWxkcmVuLnNwbGljZShjLCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiBhbnkgY2hpbGRyZW4gbWF0Y2hlZCwgcmV0dXJuIHRoZSBuZXcgb2JqZWN0XG4gICAgICAgIGlmIChtYXRjaC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgdGhlcmUgd2VyZSBubyBtYXRjaGluZyBjaGlsZHJlbiwgY2hlY2sganVzdCB0aGUgcGxhaW4gb2JqZWN0XG4gICAgICAgIHJldHVybiBtYXRjaGVyKHBhcmFtcywgbWF0Y2gpO1xuICAgICAgfVxuXG4gICAgICB2YXIgb3JpZ2luYWwgPSBzdHJpcERpYWNyaXRpY3MoZGF0YS50ZXh0KS50b1VwcGVyQ2FzZSgpO1xuICAgICAgdmFyIHRlcm0gPSBzdHJpcERpYWNyaXRpY3MocGFyYW1zLnRlcm0pLnRvVXBwZXJDYXNlKCk7XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoZSB0ZXh0IGNvbnRhaW5zIHRoZSB0ZXJtXG4gICAgICBpZiAob3JpZ2luYWwuaW5kZXhPZih0ZXJtKSA+IC0xKSB7XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiBpdCBkb2Vzbid0IGNvbnRhaW4gdGhlIHRlcm0sIGRvbid0IHJldHVybiBhbnl0aGluZ1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5kZWZhdWx0cyA9IHtcbiAgICAgIGFtZExhbmd1YWdlQmFzZTogJy4vaTE4bi8nLFxuICAgICAgYXV0b2NvbXBsZXRlOiAnb2ZmJyxcbiAgICAgIGNsb3NlT25TZWxlY3Q6IHRydWUsXG4gICAgICBkZWJ1ZzogZmFsc2UsXG4gICAgICBkcm9wZG93bkF1dG9XaWR0aDogZmFsc2UsXG4gICAgICBlc2NhcGVNYXJrdXA6IFV0aWxzLmVzY2FwZU1hcmt1cCxcbiAgICAgIGxhbmd1YWdlOiB7fSxcbiAgICAgIG1hdGNoZXI6IG1hdGNoZXIsXG4gICAgICBtaW5pbXVtSW5wdXRMZW5ndGg6IDAsXG4gICAgICBtYXhpbXVtSW5wdXRMZW5ndGg6IDAsXG4gICAgICBtYXhpbXVtU2VsZWN0aW9uTGVuZ3RoOiAwLFxuICAgICAgbWluaW11bVJlc3VsdHNGb3JTZWFyY2g6IDAsXG4gICAgICBzZWxlY3RPbkNsb3NlOiBmYWxzZSxcbiAgICAgIHNjcm9sbEFmdGVyU2VsZWN0OiBmYWxzZSxcbiAgICAgIHNvcnRlcjogZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICB9LFxuICAgICAgdGVtcGxhdGVSZXN1bHQ6IGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC50ZXh0O1xuICAgICAgfSxcbiAgICAgIHRlbXBsYXRlU2VsZWN0aW9uOiBmdW5jdGlvbiAoc2VsZWN0aW9uKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3Rpb24udGV4dDtcbiAgICAgIH0sXG4gICAgICB0aGVtZTogJ2RlZmF1bHQnLFxuICAgICAgd2lkdGg6ICdyZXNvbHZlJ1xuICAgIH07XG4gIH07XG5cbiAgRGVmYXVsdHMucHJvdG90eXBlLmFwcGx5RnJvbUVsZW1lbnQgPSBmdW5jdGlvbiAob3B0aW9ucywgJGVsZW1lbnQpIHtcbiAgICB2YXIgb3B0aW9uTGFuZ3VhZ2UgPSBvcHRpb25zLmxhbmd1YWdlO1xuICAgIHZhciBkZWZhdWx0TGFuZ3VhZ2UgPSB0aGlzLmRlZmF1bHRzLmxhbmd1YWdlO1xuICAgIHZhciBlbGVtZW50TGFuZ3VhZ2UgPSAkZWxlbWVudC5wcm9wKCdsYW5nJyk7XG4gICAgdmFyIHBhcmVudExhbmd1YWdlID0gJGVsZW1lbnQuY2xvc2VzdCgnW2xhbmddJykucHJvcCgnbGFuZycpO1xuXG4gICAgdmFyIGxhbmd1YWdlcyA9IEFycmF5LnByb3RvdHlwZS5jb25jYXQuY2FsbChcbiAgICAgIHRoaXMuX3Jlc29sdmVMYW5ndWFnZShlbGVtZW50TGFuZ3VhZ2UpLFxuICAgICAgdGhpcy5fcmVzb2x2ZUxhbmd1YWdlKG9wdGlvbkxhbmd1YWdlKSxcbiAgICAgIHRoaXMuX3Jlc29sdmVMYW5ndWFnZShkZWZhdWx0TGFuZ3VhZ2UpLFxuICAgICAgdGhpcy5fcmVzb2x2ZUxhbmd1YWdlKHBhcmVudExhbmd1YWdlKVxuICAgICk7XG5cbiAgICBvcHRpb25zLmxhbmd1YWdlID0gbGFuZ3VhZ2VzO1xuXG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH07XG5cbiAgRGVmYXVsdHMucHJvdG90eXBlLl9yZXNvbHZlTGFuZ3VhZ2UgPSBmdW5jdGlvbiAobGFuZ3VhZ2UpIHtcbiAgICBpZiAoIWxhbmd1YWdlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgaWYgKCQuaXNFbXB0eU9iamVjdChsYW5ndWFnZSkpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBpZiAoJC5pc1BsYWluT2JqZWN0KGxhbmd1YWdlKSkge1xuICAgICAgcmV0dXJuIFtsYW5ndWFnZV07XG4gICAgfVxuXG4gICAgdmFyIGxhbmd1YWdlcztcblxuICAgIGlmICghQXJyYXkuaXNBcnJheShsYW5ndWFnZSkpIHtcbiAgICAgIGxhbmd1YWdlcyA9IFtsYW5ndWFnZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGxhbmd1YWdlcyA9IGxhbmd1YWdlO1xuICAgIH1cblxuICAgIHZhciByZXNvbHZlZExhbmd1YWdlcyA9IFtdO1xuXG4gICAgZm9yICh2YXIgbCA9IDA7IGwgPCBsYW5ndWFnZXMubGVuZ3RoOyBsKyspIHtcbiAgICAgIHJlc29sdmVkTGFuZ3VhZ2VzLnB1c2gobGFuZ3VhZ2VzW2xdKTtcblxuICAgICAgaWYgKHR5cGVvZiBsYW5ndWFnZXNbbF0gPT09ICdzdHJpbmcnICYmIGxhbmd1YWdlc1tsXS5pbmRleE9mKCctJykgPiAwKSB7XG4gICAgICAgIC8vIEV4dHJhY3QgdGhlIHJlZ2lvbiBpbmZvcm1hdGlvbiBpZiBpdCBpcyBpbmNsdWRlZFxuICAgICAgICB2YXIgbGFuZ3VhZ2VQYXJ0cyA9IGxhbmd1YWdlc1tsXS5zcGxpdCgnLScpO1xuICAgICAgICB2YXIgYmFzZUxhbmd1YWdlID0gbGFuZ3VhZ2VQYXJ0c1swXTtcblxuICAgICAgICByZXNvbHZlZExhbmd1YWdlcy5wdXNoKGJhc2VMYW5ndWFnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc29sdmVkTGFuZ3VhZ2VzO1xuICB9O1xuXG4gIERlZmF1bHRzLnByb3RvdHlwZS5fcHJvY2Vzc1RyYW5zbGF0aW9ucyA9IGZ1bmN0aW9uIChsYW5ndWFnZXMsIGRlYnVnKSB7XG4gICAgdmFyIHRyYW5zbGF0aW9ucyA9IG5ldyBUcmFuc2xhdGlvbigpO1xuXG4gICAgZm9yICh2YXIgbCA9IDA7IGwgPCBsYW5ndWFnZXMubGVuZ3RoOyBsKyspIHtcbiAgICAgIHZhciBsYW5ndWFnZURhdGEgPSBuZXcgVHJhbnNsYXRpb24oKTtcblxuICAgICAgdmFyIGxhbmd1YWdlID0gbGFuZ3VhZ2VzW2xdO1xuXG4gICAgICBpZiAodHlwZW9mIGxhbmd1YWdlID09PSAnc3RyaW5nJykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRyeSB0byBsb2FkIGl0IHdpdGggdGhlIG9yaWdpbmFsIG5hbWVcbiAgICAgICAgICBsYW5ndWFnZURhdGEgPSBUcmFuc2xhdGlvbi5sb2FkUGF0aChsYW5ndWFnZSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gSWYgd2UgY291bGRuJ3QgbG9hZCBpdCwgY2hlY2sgaWYgaXQgd2Fzbid0IHRoZSBmdWxsIHBhdGhcbiAgICAgICAgICAgIGxhbmd1YWdlID0gdGhpcy5kZWZhdWx0cy5hbWRMYW5ndWFnZUJhc2UgKyBsYW5ndWFnZTtcbiAgICAgICAgICAgIGxhbmd1YWdlRGF0YSA9IFRyYW5zbGF0aW9uLmxvYWRQYXRoKGxhbmd1YWdlKTtcbiAgICAgICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICAgICAgLy8gVGhlIHRyYW5zbGF0aW9uIGNvdWxkIG5vdCBiZSBsb2FkZWQgYXQgYWxsLiBTb21ldGltZXMgdGhpcyBpc1xuICAgICAgICAgICAgLy8gYmVjYXVzZSBvZiBhIGNvbmZpZ3VyYXRpb24gcHJvYmxlbSwgb3RoZXIgdGltZXMgdGhpcyBjYW4gYmVcbiAgICAgICAgICAgIC8vIGJlY2F1c2Ugb2YgaG93IFNlbGVjdDIgaGVscHMgbG9hZCBhbGwgcG9zc2libGUgdHJhbnNsYXRpb24gZmlsZXNcbiAgICAgICAgICAgIGlmIChkZWJ1ZyAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLndhcm4pIHtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICdTZWxlY3QyOiBUaGUgbGFuZ3VhZ2UgZmlsZSBmb3IgXCInICsgbGFuZ3VhZ2UgKyAnXCIgY291bGQgJyArXG4gICAgICAgICAgICAgICAgJ25vdCBiZSBhdXRvbWF0aWNhbGx5IGxvYWRlZC4gQSBmYWxsYmFjayB3aWxsIGJlIHVzZWQgaW5zdGVhZC4nXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCQuaXNQbGFpbk9iamVjdChsYW5ndWFnZSkpIHtcbiAgICAgICAgbGFuZ3VhZ2VEYXRhID0gbmV3IFRyYW5zbGF0aW9uKGxhbmd1YWdlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxhbmd1YWdlRGF0YSA9IGxhbmd1YWdlO1xuICAgICAgfVxuXG4gICAgICB0cmFuc2xhdGlvbnMuZXh0ZW5kKGxhbmd1YWdlRGF0YSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRyYW5zbGF0aW9ucztcbiAgfTtcblxuICBEZWZhdWx0cy5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICB2YXIgY2FtZWxLZXkgPSAkLmNhbWVsQ2FzZShrZXkpO1xuXG4gICAgdmFyIGRhdGEgPSB7fTtcbiAgICBkYXRhW2NhbWVsS2V5XSA9IHZhbHVlO1xuXG4gICAgdmFyIGNvbnZlcnRlZERhdGEgPSBVdGlscy5fY29udmVydERhdGEoZGF0YSk7XG5cbiAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLmRlZmF1bHRzLCBjb252ZXJ0ZWREYXRhKTtcbiAgfTtcblxuICB2YXIgZGVmYXVsdHMgPSBuZXcgRGVmYXVsdHMoKTtcblxuICByZXR1cm4gZGVmYXVsdHM7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL29wdGlvbnMnLFtcbiAgJ2pxdWVyeScsXG4gICcuL2RlZmF1bHRzJyxcbiAgJy4vdXRpbHMnXG5dLCBmdW5jdGlvbiAoJCwgRGVmYXVsdHMsIFV0aWxzKSB7XG4gIGZ1bmN0aW9uIE9wdGlvbnMgKG9wdGlvbnMsICRlbGVtZW50KSB7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIGlmICgkZWxlbWVudCAhPSBudWxsKSB7XG4gICAgICB0aGlzLmZyb21FbGVtZW50KCRlbGVtZW50KTtcbiAgICB9XG5cbiAgICBpZiAoJGVsZW1lbnQgIT0gbnVsbCkge1xuICAgICAgdGhpcy5vcHRpb25zID0gRGVmYXVsdHMuYXBwbHlGcm9tRWxlbWVudCh0aGlzLm9wdGlvbnMsICRlbGVtZW50KTtcbiAgICB9XG5cbiAgICB0aGlzLm9wdGlvbnMgPSBEZWZhdWx0cy5hcHBseSh0aGlzLm9wdGlvbnMpO1xuICB9XG5cbiAgT3B0aW9ucy5wcm90b3R5cGUuZnJvbUVsZW1lbnQgPSBmdW5jdGlvbiAoJGUpIHtcbiAgICB2YXIgZXhjbHVkZWREYXRhID0gWydzZWxlY3QyJ107XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLm11bHRpcGxlID09IG51bGwpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5tdWx0aXBsZSA9ICRlLnByb3AoJ211bHRpcGxlJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5kaXNhYmxlZCA9PSBudWxsKSB7XG4gICAgICB0aGlzLm9wdGlvbnMuZGlzYWJsZWQgPSAkZS5wcm9wKCdkaXNhYmxlZCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuYXV0b2NvbXBsZXRlID09IG51bGwgJiYgJGUucHJvcCgnYXV0b2NvbXBsZXRlJykpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5hdXRvY29tcGxldGUgPSAkZS5wcm9wKCdhdXRvY29tcGxldGUnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmRpciA9PSBudWxsKSB7XG4gICAgICBpZiAoJGUucHJvcCgnZGlyJykpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmRpciA9ICRlLnByb3AoJ2RpcicpO1xuICAgICAgfSBlbHNlIGlmICgkZS5jbG9zZXN0KCdbZGlyXScpLnByb3AoJ2RpcicpKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5kaXIgPSAkZS5jbG9zZXN0KCdbZGlyXScpLnByb3AoJ2RpcicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmRpciA9ICdsdHInO1xuICAgICAgfVxuICAgIH1cblxuICAgICRlLnByb3AoJ2Rpc2FibGVkJywgdGhpcy5vcHRpb25zLmRpc2FibGVkKTtcbiAgICAkZS5wcm9wKCdtdWx0aXBsZScsIHRoaXMub3B0aW9ucy5tdWx0aXBsZSk7XG5cbiAgICBpZiAoVXRpbHMuR2V0RGF0YSgkZVswXSwgJ3NlbGVjdDJUYWdzJykpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS53YXJuKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnU2VsZWN0MjogVGhlIGBkYXRhLXNlbGVjdDItdGFnc2AgYXR0cmlidXRlIGhhcyBiZWVuIGNoYW5nZWQgdG8gJyArXG4gICAgICAgICAgJ3VzZSB0aGUgYGRhdGEtZGF0YWAgYW5kIGBkYXRhLXRhZ3M9XCJ0cnVlXCJgIGF0dHJpYnV0ZXMgYW5kIHdpbGwgYmUgJyArXG4gICAgICAgICAgJ3JlbW92ZWQgaW4gZnV0dXJlIHZlcnNpb25zIG9mIFNlbGVjdDIuJ1xuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBVdGlscy5TdG9yZURhdGEoJGVbMF0sICdkYXRhJywgVXRpbHMuR2V0RGF0YSgkZVswXSwgJ3NlbGVjdDJUYWdzJykpO1xuICAgICAgVXRpbHMuU3RvcmVEYXRhKCRlWzBdLCAndGFncycsIHRydWUpO1xuICAgIH1cblxuICAgIGlmIChVdGlscy5HZXREYXRhKCRlWzBdLCAnYWpheFVybCcpKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmRlYnVnICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ1NlbGVjdDI6IFRoZSBgZGF0YS1hamF4LXVybGAgYXR0cmlidXRlIGhhcyBiZWVuIGNoYW5nZWQgdG8gJyArXG4gICAgICAgICAgJ2BkYXRhLWFqYXgtLXVybGAgYW5kIHN1cHBvcnQgZm9yIHRoZSBvbGQgYXR0cmlidXRlIHdpbGwgYmUgcmVtb3ZlZCcgK1xuICAgICAgICAgICcgaW4gZnV0dXJlIHZlcnNpb25zIG9mIFNlbGVjdDIuJ1xuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAkZS5hdHRyKCdhamF4LS11cmwnLCBVdGlscy5HZXREYXRhKCRlWzBdLCAnYWpheFVybCcpKTtcbiAgICAgIFV0aWxzLlN0b3JlRGF0YSgkZVswXSwgJ2FqYXgtVXJsJywgVXRpbHMuR2V0RGF0YSgkZVswXSwgJ2FqYXhVcmwnKSk7XG4gICAgfVxuXG4gICAgdmFyIGRhdGFzZXQgPSB7fTtcblxuICAgIGZ1bmN0aW9uIHVwcGVyQ2FzZUxldHRlcihfLCBsZXR0ZXIpIHtcbiAgICAgIHJldHVybiBsZXR0ZXIudG9VcHBlckNhc2UoKTtcbiAgICB9XG5cbiAgICAvLyBQcmUtbG9hZCBhbGwgb2YgdGhlIGF0dHJpYnV0ZXMgd2hpY2ggYXJlIHByZWZpeGVkIHdpdGggYGRhdGEtYFxuICAgIGZvciAodmFyIGF0dHIgPSAwOyBhdHRyIDwgJGVbMF0uYXR0cmlidXRlcy5sZW5ndGg7IGF0dHIrKykge1xuICAgICAgdmFyIGF0dHJpYnV0ZU5hbWUgPSAkZVswXS5hdHRyaWJ1dGVzW2F0dHJdLm5hbWU7XG4gICAgICB2YXIgcHJlZml4ID0gJ2RhdGEtJztcblxuICAgICAgaWYgKGF0dHJpYnV0ZU5hbWUuc3Vic3RyKDAsIHByZWZpeC5sZW5ndGgpID09IHByZWZpeCkge1xuICAgICAgICAvLyBHZXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBhdHRyaWJ1dGUgYWZ0ZXIgYGRhdGEtYFxuICAgICAgICB2YXIgZGF0YU5hbWUgPSBhdHRyaWJ1dGVOYW1lLnN1YnN0cmluZyhwcmVmaXgubGVuZ3RoKTtcblxuICAgICAgICAvLyBHZXQgdGhlIGRhdGEgY29udGVudHMgZnJvbSB0aGUgY29uc2lzdGVudCBzb3VyY2VcbiAgICAgICAgLy8gVGhpcyBpcyBtb3JlIHRoYW4gbGlrZWx5IHRoZSBqUXVlcnkgZGF0YSBoZWxwZXJcbiAgICAgICAgdmFyIGRhdGFWYWx1ZSA9IFV0aWxzLkdldERhdGEoJGVbMF0sIGRhdGFOYW1lKTtcblxuICAgICAgICAvLyBjYW1lbENhc2UgdGhlIGF0dHJpYnV0ZSBuYW1lIHRvIG1hdGNoIHRoZSBzcGVjXG4gICAgICAgIHZhciBjYW1lbERhdGFOYW1lID0gZGF0YU5hbWUucmVwbGFjZSgvLShbYS16XSkvZywgdXBwZXJDYXNlTGV0dGVyKTtcblxuICAgICAgICAvLyBTdG9yZSB0aGUgZGF0YSBhdHRyaWJ1dGUgY29udGVudHMgaW50byB0aGUgZGF0YXNldCBzaW5jZVxuICAgICAgICBkYXRhc2V0W2NhbWVsRGF0YU5hbWVdID0gZGF0YVZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFByZWZlciB0aGUgZWxlbWVudCdzIGBkYXRhc2V0YCBhdHRyaWJ1dGUgaWYgaXQgZXhpc3RzXG4gICAgLy8galF1ZXJ5IDEueCBkb2VzIG5vdCBjb3JyZWN0bHkgaGFuZGxlIGRhdGEgYXR0cmlidXRlcyB3aXRoIG11bHRpcGxlIGRhc2hlc1xuICAgIGlmICgkLmZuLmpxdWVyeSAmJiAkLmZuLmpxdWVyeS5zdWJzdHIoMCwgMikgPT0gJzEuJyAmJiAkZVswXS5kYXRhc2V0KSB7XG4gICAgICBkYXRhc2V0ID0gJC5leHRlbmQodHJ1ZSwge30sICRlWzBdLmRhdGFzZXQsIGRhdGFzZXQpO1xuICAgIH1cblxuICAgIC8vIFByZWZlciBvdXIgaW50ZXJuYWwgZGF0YSBjYWNoZSBpZiBpdCBleGlzdHNcbiAgICB2YXIgZGF0YSA9ICQuZXh0ZW5kKHRydWUsIHt9LCBVdGlscy5HZXREYXRhKCRlWzBdKSwgZGF0YXNldCk7XG5cbiAgICBkYXRhID0gVXRpbHMuX2NvbnZlcnREYXRhKGRhdGEpO1xuXG4gICAgZm9yICh2YXIga2V5IGluIGRhdGEpIHtcbiAgICAgIGlmIChleGNsdWRlZERhdGEuaW5kZXhPZihrZXkpID4gLTEpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICgkLmlzUGxhaW5PYmplY3QodGhpcy5vcHRpb25zW2tleV0pKSB7XG4gICAgICAgICQuZXh0ZW5kKHRoaXMub3B0aW9uc1trZXldLCBkYXRhW2tleV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcHRpb25zW2tleV0gPSBkYXRhW2tleV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgT3B0aW9ucy5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnNba2V5XTtcbiAgfTtcblxuICBPcHRpb25zLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoa2V5LCB2YWwpIHtcbiAgICB0aGlzLm9wdGlvbnNba2V5XSA9IHZhbDtcbiAgfTtcblxuICByZXR1cm4gT3B0aW9ucztcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvY29yZScsW1xuICAnanF1ZXJ5JyxcbiAgJy4vb3B0aW9ucycsXG4gICcuL3V0aWxzJyxcbiAgJy4va2V5cydcbl0sIGZ1bmN0aW9uICgkLCBPcHRpb25zLCBVdGlscywgS0VZUykge1xuICB2YXIgU2VsZWN0MiA9IGZ1bmN0aW9uICgkZWxlbWVudCwgb3B0aW9ucykge1xuICAgIGlmIChVdGlscy5HZXREYXRhKCRlbGVtZW50WzBdLCAnc2VsZWN0MicpICE9IG51bGwpIHtcbiAgICAgIFV0aWxzLkdldERhdGEoJGVsZW1lbnRbMF0sICdzZWxlY3QyJykuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHRoaXMuJGVsZW1lbnQgPSAkZWxlbWVudDtcblxuICAgIHRoaXMuaWQgPSB0aGlzLl9nZW5lcmF0ZUlkKCRlbGVtZW50KTtcblxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgdGhpcy5vcHRpb25zID0gbmV3IE9wdGlvbnMob3B0aW9ucywgJGVsZW1lbnQpO1xuXG4gICAgU2VsZWN0Mi5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzKTtcblxuICAgIC8vIFNldCB1cCB0aGUgdGFiaW5kZXhcblxuICAgIHZhciB0YWJpbmRleCA9ICRlbGVtZW50LmF0dHIoJ3RhYmluZGV4JykgfHwgMDtcbiAgICBVdGlscy5TdG9yZURhdGEoJGVsZW1lbnRbMF0sICdvbGQtdGFiaW5kZXgnLCB0YWJpbmRleCk7XG4gICAgJGVsZW1lbnQuYXR0cigndGFiaW5kZXgnLCAnLTEnKTtcblxuICAgIC8vIFNldCB1cCBjb250YWluZXJzIGFuZCBhZGFwdGVyc1xuXG4gICAgdmFyIERhdGFBZGFwdGVyID0gdGhpcy5vcHRpb25zLmdldCgnZGF0YUFkYXB0ZXInKTtcbiAgICB0aGlzLmRhdGFBZGFwdGVyID0gbmV3IERhdGFBZGFwdGVyKCRlbGVtZW50LCB0aGlzLm9wdGlvbnMpO1xuXG4gICAgdmFyICRjb250YWluZXIgPSB0aGlzLnJlbmRlcigpO1xuXG4gICAgdGhpcy5fcGxhY2VDb250YWluZXIoJGNvbnRhaW5lcik7XG5cbiAgICB2YXIgU2VsZWN0aW9uQWRhcHRlciA9IHRoaXMub3B0aW9ucy5nZXQoJ3NlbGVjdGlvbkFkYXB0ZXInKTtcbiAgICB0aGlzLnNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25BZGFwdGVyKCRlbGVtZW50LCB0aGlzLm9wdGlvbnMpO1xuICAgIHRoaXMuJHNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uLnJlbmRlcigpO1xuXG4gICAgdGhpcy5zZWxlY3Rpb24ucG9zaXRpb24odGhpcy4kc2VsZWN0aW9uLCAkY29udGFpbmVyKTtcblxuICAgIHZhciBEcm9wZG93bkFkYXB0ZXIgPSB0aGlzLm9wdGlvbnMuZ2V0KCdkcm9wZG93bkFkYXB0ZXInKTtcbiAgICB0aGlzLmRyb3Bkb3duID0gbmV3IERyb3Bkb3duQWRhcHRlcigkZWxlbWVudCwgdGhpcy5vcHRpb25zKTtcbiAgICB0aGlzLiRkcm9wZG93biA9IHRoaXMuZHJvcGRvd24ucmVuZGVyKCk7XG5cbiAgICB0aGlzLmRyb3Bkb3duLnBvc2l0aW9uKHRoaXMuJGRyb3Bkb3duLCAkY29udGFpbmVyKTtcblxuICAgIHZhciBSZXN1bHRzQWRhcHRlciA9IHRoaXMub3B0aW9ucy5nZXQoJ3Jlc3VsdHNBZGFwdGVyJyk7XG4gICAgdGhpcy5yZXN1bHRzID0gbmV3IFJlc3VsdHNBZGFwdGVyKCRlbGVtZW50LCB0aGlzLm9wdGlvbnMsIHRoaXMuZGF0YUFkYXB0ZXIpO1xuICAgIHRoaXMuJHJlc3VsdHMgPSB0aGlzLnJlc3VsdHMucmVuZGVyKCk7XG5cbiAgICB0aGlzLnJlc3VsdHMucG9zaXRpb24odGhpcy4kcmVzdWx0cywgdGhpcy4kZHJvcGRvd24pO1xuXG4gICAgLy8gQmluZCBldmVudHNcblxuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIC8vIEJpbmQgdGhlIGNvbnRhaW5lciB0byBhbGwgb2YgdGhlIGFkYXB0ZXJzXG4gICAgdGhpcy5fYmluZEFkYXB0ZXJzKCk7XG5cbiAgICAvLyBSZWdpc3RlciBhbnkgRE9NIGV2ZW50IGhhbmRsZXJzXG4gICAgdGhpcy5fcmVnaXN0ZXJEb21FdmVudHMoKTtcblxuICAgIC8vIFJlZ2lzdGVyIGFueSBpbnRlcm5hbCBldmVudCBoYW5kbGVyc1xuICAgIHRoaXMuX3JlZ2lzdGVyRGF0YUV2ZW50cygpO1xuICAgIHRoaXMuX3JlZ2lzdGVyU2VsZWN0aW9uRXZlbnRzKCk7XG4gICAgdGhpcy5fcmVnaXN0ZXJEcm9wZG93bkV2ZW50cygpO1xuICAgIHRoaXMuX3JlZ2lzdGVyUmVzdWx0c0V2ZW50cygpO1xuICAgIHRoaXMuX3JlZ2lzdGVyRXZlbnRzKCk7XG5cbiAgICAvLyBTZXQgdGhlIGluaXRpYWwgc3RhdGVcbiAgICB0aGlzLmRhdGFBZGFwdGVyLmN1cnJlbnQoZnVuY3Rpb24gKGluaXRpYWxEYXRhKSB7XG4gICAgICBzZWxmLnRyaWdnZXIoJ3NlbGVjdGlvbjp1cGRhdGUnLCB7XG4gICAgICAgIGRhdGE6IGluaXRpYWxEYXRhXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8vIEhpZGUgdGhlIG9yaWdpbmFsIHNlbGVjdFxuICAgICRlbGVtZW50WzBdLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdDItaGlkZGVuLWFjY2Vzc2libGUnKTtcbiAgICAkZWxlbWVudC5hdHRyKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7XG5cbiAgICAvLyBTeW5jaHJvbml6ZSBhbnkgbW9uaXRvcmVkIGF0dHJpYnV0ZXNcbiAgICB0aGlzLl9zeW5jQXR0cmlidXRlcygpO1xuXG4gICAgVXRpbHMuU3RvcmVEYXRhKCRlbGVtZW50WzBdLCAnc2VsZWN0MicsIHRoaXMpO1xuXG4gICAgLy8gRW5zdXJlIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggJGVsZW1lbnQuZGF0YSgnc2VsZWN0MicpLlxuICAgICRlbGVtZW50LmRhdGEoJ3NlbGVjdDInLCB0aGlzKTtcbiAgfTtcblxuICBVdGlscy5FeHRlbmQoU2VsZWN0MiwgVXRpbHMuT2JzZXJ2YWJsZSk7XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuX2dlbmVyYXRlSWQgPSBmdW5jdGlvbiAoJGVsZW1lbnQpIHtcbiAgICB2YXIgaWQgPSAnJztcblxuICAgIGlmICgkZWxlbWVudC5hdHRyKCdpZCcpICE9IG51bGwpIHtcbiAgICAgIGlkID0gJGVsZW1lbnQuYXR0cignaWQnKTtcbiAgICB9IGVsc2UgaWYgKCRlbGVtZW50LmF0dHIoJ25hbWUnKSAhPSBudWxsKSB7XG4gICAgICBpZCA9ICRlbGVtZW50LmF0dHIoJ25hbWUnKSArICctJyArIFV0aWxzLmdlbmVyYXRlQ2hhcnMoMik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlkID0gVXRpbHMuZ2VuZXJhdGVDaGFycyg0KTtcbiAgICB9XG5cbiAgICBpZCA9IGlkLnJlcGxhY2UoLyg6fFxcLnxcXFt8XFxdfCwpL2csICcnKTtcbiAgICBpZCA9ICdzZWxlY3QyLScgKyBpZDtcblxuICAgIHJldHVybiBpZDtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5fcGxhY2VDb250YWluZXIgPSBmdW5jdGlvbiAoJGNvbnRhaW5lcikge1xuICAgICRjb250YWluZXIuaW5zZXJ0QWZ0ZXIodGhpcy4kZWxlbWVudCk7XG5cbiAgICB2YXIgd2lkdGggPSB0aGlzLl9yZXNvbHZlV2lkdGgodGhpcy4kZWxlbWVudCwgdGhpcy5vcHRpb25zLmdldCgnd2lkdGgnKSk7XG5cbiAgICBpZiAod2lkdGggIT0gbnVsbCkge1xuICAgICAgJGNvbnRhaW5lci5jc3MoJ3dpZHRoJywgd2lkdGgpO1xuICAgIH1cbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5fcmVzb2x2ZVdpZHRoID0gZnVuY3Rpb24gKCRlbGVtZW50LCBtZXRob2QpIHtcbiAgICB2YXIgV0lEVEggPSAvXndpZHRoOigoWy0rXT8oWzAtOV0qXFwuKT9bMC05XSspKHB4fGVtfGV4fCV8aW58Y218bW18cHR8cGMpKS9pO1xuXG4gICAgaWYgKG1ldGhvZCA9PSAncmVzb2x2ZScpIHtcbiAgICAgIHZhciBzdHlsZVdpZHRoID0gdGhpcy5fcmVzb2x2ZVdpZHRoKCRlbGVtZW50LCAnc3R5bGUnKTtcblxuICAgICAgaWYgKHN0eWxlV2lkdGggIT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gc3R5bGVXaWR0aDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuX3Jlc29sdmVXaWR0aCgkZWxlbWVudCwgJ2VsZW1lbnQnKTtcbiAgICB9XG5cbiAgICBpZiAobWV0aG9kID09ICdlbGVtZW50Jykge1xuICAgICAgdmFyIGVsZW1lbnRXaWR0aCA9ICRlbGVtZW50Lm91dGVyV2lkdGgoZmFsc2UpO1xuXG4gICAgICBpZiAoZWxlbWVudFdpZHRoIDw9IDApIHtcbiAgICAgICAgcmV0dXJuICdhdXRvJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVsZW1lbnRXaWR0aCArICdweCc7XG4gICAgfVxuXG4gICAgaWYgKG1ldGhvZCA9PSAnc3R5bGUnKSB7XG4gICAgICB2YXIgc3R5bGUgPSAkZWxlbWVudC5hdHRyKCdzdHlsZScpO1xuXG4gICAgICBpZiAodHlwZW9mKHN0eWxlKSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIHZhciBhdHRycyA9IHN0eWxlLnNwbGl0KCc7Jyk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gYXR0cnMubGVuZ3RoOyBpIDwgbDsgaSA9IGkgKyAxKSB7XG4gICAgICAgIHZhciBhdHRyID0gYXR0cnNbaV0ucmVwbGFjZSgvXFxzL2csICcnKTtcbiAgICAgICAgdmFyIG1hdGNoZXMgPSBhdHRyLm1hdGNoKFdJRFRIKTtcblxuICAgICAgICBpZiAobWF0Y2hlcyAhPT0gbnVsbCAmJiBtYXRjaGVzLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgcmV0dXJuIG1hdGNoZXNbMV07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKG1ldGhvZCA9PSAnY29tcHV0ZWRzdHlsZScpIHtcbiAgICAgIHZhciBjb21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoJGVsZW1lbnRbMF0pO1xuXG4gICAgICByZXR1cm4gY29tcHV0ZWRTdHlsZS53aWR0aDtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0aG9kO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLl9iaW5kQWRhcHRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5kYXRhQWRhcHRlci5iaW5kKHRoaXMsIHRoaXMuJGNvbnRhaW5lcik7XG4gICAgdGhpcy5zZWxlY3Rpb24uYmluZCh0aGlzLCB0aGlzLiRjb250YWluZXIpO1xuXG4gICAgdGhpcy5kcm9wZG93bi5iaW5kKHRoaXMsIHRoaXMuJGNvbnRhaW5lcik7XG4gICAgdGhpcy5yZXN1bHRzLmJpbmQodGhpcywgdGhpcy4kY29udGFpbmVyKTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5fcmVnaXN0ZXJEb21FdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdGhpcy4kZWxlbWVudC5vbignY2hhbmdlLnNlbGVjdDInLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLmRhdGFBZGFwdGVyLmN1cnJlbnQoZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgc2VsZi50cmlnZ2VyKCdzZWxlY3Rpb246dXBkYXRlJywge1xuICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuJGVsZW1lbnQub24oJ2ZvY3VzLnNlbGVjdDInLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBzZWxmLnRyaWdnZXIoJ2ZvY3VzJywgZXZ0KTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3N5bmNBID0gVXRpbHMuYmluZCh0aGlzLl9zeW5jQXR0cmlidXRlcywgdGhpcyk7XG4gICAgdGhpcy5fc3luY1MgPSBVdGlscy5iaW5kKHRoaXMuX3N5bmNTdWJ0cmVlLCB0aGlzKTtcblxuICAgIHRoaXMuX29ic2VydmVyID0gbmV3IHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uIChtdXRhdGlvbnMpIHtcbiAgICAgIHNlbGYuX3N5bmNBKCk7XG4gICAgICBzZWxmLl9zeW5jUyhtdXRhdGlvbnMpO1xuICAgIH0pO1xuICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcy4kZWxlbWVudFswXSwge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgIHN1YnRyZWU6IGZhbHNlXG4gICAgfSk7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuX3JlZ2lzdGVyRGF0YUV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0aGlzLmRhdGFBZGFwdGVyLm9uKCcqJywgZnVuY3Rpb24gKG5hbWUsIHBhcmFtcykge1xuICAgICAgc2VsZi50cmlnZ2VyKG5hbWUsIHBhcmFtcyk7XG4gICAgfSk7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuX3JlZ2lzdGVyU2VsZWN0aW9uRXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgbm9uUmVsYXlFdmVudHMgPSBbJ3RvZ2dsZScsICdmb2N1cyddO1xuXG4gICAgdGhpcy5zZWxlY3Rpb24ub24oJ3RvZ2dsZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYudG9nZ2xlRHJvcGRvd24oKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0aW9uLm9uKCdmb2N1cycsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIHNlbGYuZm9jdXMocGFyYW1zKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0aW9uLm9uKCcqJywgZnVuY3Rpb24gKG5hbWUsIHBhcmFtcykge1xuICAgICAgaWYgKG5vblJlbGF5RXZlbnRzLmluZGV4T2YobmFtZSkgIT09IC0xKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2VsZi50cmlnZ2VyKG5hbWUsIHBhcmFtcyk7XG4gICAgfSk7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuX3JlZ2lzdGVyRHJvcGRvd25FdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdGhpcy5kcm9wZG93bi5vbignKicsIGZ1bmN0aW9uIChuYW1lLCBwYXJhbXMpIHtcbiAgICAgIHNlbGYudHJpZ2dlcihuYW1lLCBwYXJhbXMpO1xuICAgIH0pO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLl9yZWdpc3RlclJlc3VsdHNFdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdGhpcy5yZXN1bHRzLm9uKCcqJywgZnVuY3Rpb24gKG5hbWUsIHBhcmFtcykge1xuICAgICAgc2VsZi50cmlnZ2VyKG5hbWUsIHBhcmFtcyk7XG4gICAgfSk7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuX3JlZ2lzdGVyRXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHRoaXMub24oJ29wZW4nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLiRjb250YWluZXJbMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1jb250YWluZXItLW9wZW4nKTtcbiAgICB9KTtcblxuICAgIHRoaXMub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi4kY29udGFpbmVyWzBdLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDItY29udGFpbmVyLS1vcGVuJyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm9uKCdlbmFibGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLiRjb250YWluZXJbMF0uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0Mi1jb250YWluZXItLWRpc2FibGVkJyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm9uKCdkaXNhYmxlJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi4kY29udGFpbmVyWzBdLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdDItY29udGFpbmVyLS1kaXNhYmxlZCcpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vbignYmx1cicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuJGNvbnRhaW5lclswXS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLWNvbnRhaW5lci0tZm9jdXMnKTtcbiAgICB9KTtcblxuICAgIHRoaXMub24oJ3F1ZXJ5JywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgaWYgKCFzZWxmLmlzT3BlbigpKSB7XG4gICAgICAgIHNlbGYudHJpZ2dlcignb3BlbicsIHt9KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kYXRhQWRhcHRlci5xdWVyeShwYXJhbXMsIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHNlbGYudHJpZ2dlcigncmVzdWx0czphbGwnLCB7XG4gICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICBxdWVyeTogcGFyYW1zXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm9uKCdxdWVyeTphcHBlbmQnLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICB0aGlzLmRhdGFBZGFwdGVyLnF1ZXJ5KHBhcmFtcywgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgc2VsZi50cmlnZ2VyKCdyZXN1bHRzOmFwcGVuZCcsIHtcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIHF1ZXJ5OiBwYXJhbXNcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMub24oJ2tleXByZXNzJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgdmFyIGtleSA9IGV2dC53aGljaDtcblxuICAgICAgaWYgKHNlbGYuaXNPcGVuKCkpIHtcbiAgICAgICAgaWYgKGtleSA9PT0gS0VZUy5FU0MgfHwgKGtleSA9PT0gS0VZUy5VUCAmJiBldnQuYWx0S2V5KSkge1xuICAgICAgICAgIHNlbGYuY2xvc2UoZXZ0KTtcblxuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gS0VZUy5FTlRFUiB8fCBrZXkgPT09IEtFWVMuVEFCKSB7XG4gICAgICAgICAgc2VsZi50cmlnZ2VyKCdyZXN1bHRzOnNlbGVjdCcsIHt9KTtcblxuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9IGVsc2UgaWYgKChrZXkgPT09IEtFWVMuU1BBQ0UgJiYgZXZ0LmN0cmxLZXkpKSB7XG4gICAgICAgICAgc2VsZi50cmlnZ2VyKCdyZXN1bHRzOnRvZ2dsZScsIHt9KTtcblxuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gS0VZUy5VUCkge1xuICAgICAgICAgIHNlbGYudHJpZ2dlcigncmVzdWx0czpwcmV2aW91cycsIHt9KTtcblxuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gS0VZUy5ET1dOKSB7XG4gICAgICAgICAgc2VsZi50cmlnZ2VyKCdyZXN1bHRzOm5leHQnLCB7fSk7XG5cbiAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGtleSA9PT0gS0VZUy5FTlRFUiB8fCBrZXkgPT09IEtFWVMuU1BBQ0UgfHxcbiAgICAgICAgICAgIChrZXkgPT09IEtFWVMuRE9XTiAmJiBldnQuYWx0S2V5KSkge1xuICAgICAgICAgIHNlbGYub3BlbigpO1xuXG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5fc3luY0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5vcHRpb25zLnNldCgnZGlzYWJsZWQnLCB0aGlzLiRlbGVtZW50LnByb3AoJ2Rpc2FibGVkJykpO1xuXG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCgpKSB7XG4gICAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudHJpZ2dlcignZGlzYWJsZScsIHt9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50cmlnZ2VyKCdlbmFibGUnLCB7fSk7XG4gICAgfVxuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLl9pc0NoYW5nZU11dGF0aW9uID0gZnVuY3Rpb24gKG11dGF0aW9ucykge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGlmIChtdXRhdGlvbnMuYWRkZWROb2RlcyAmJiBtdXRhdGlvbnMuYWRkZWROb2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKHZhciBuID0gMDsgbiA8IG11dGF0aW9ucy5hZGRlZE5vZGVzLmxlbmd0aDsgbisrKSB7XG4gICAgICAgIHZhciBub2RlID0gbXV0YXRpb25zLmFkZGVkTm9kZXNbbl07XG5cbiAgICAgICAgaWYgKG5vZGUuc2VsZWN0ZWQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobXV0YXRpb25zLnJlbW92ZWROb2RlcyAmJiBtdXRhdGlvbnMucmVtb3ZlZE5vZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShtdXRhdGlvbnMpKSB7XG4gICAgICByZXR1cm4gbXV0YXRpb25zLnNvbWUoZnVuY3Rpb24gKG11dGF0aW9uKSB7XG4gICAgICAgIHJldHVybiBzZWxmLl9pc0NoYW5nZU11dGF0aW9uKG11dGF0aW9uKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5fc3luY1N1YnRyZWUgPSBmdW5jdGlvbiAobXV0YXRpb25zKSB7XG4gICAgdmFyIGNoYW5nZWQgPSB0aGlzLl9pc0NoYW5nZU11dGF0aW9uKG11dGF0aW9ucyk7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgLy8gT25seSByZS1wdWxsIHRoZSBkYXRhIGlmIHdlIHRoaW5rIHRoZXJlIGlzIGEgY2hhbmdlXG4gICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgIHRoaXMuZGF0YUFkYXB0ZXIuY3VycmVudChmdW5jdGlvbiAoY3VycmVudERhdGEpIHtcbiAgICAgICAgc2VsZi50cmlnZ2VyKCdzZWxlY3Rpb246dXBkYXRlJywge1xuICAgICAgICAgIGRhdGE6IGN1cnJlbnREYXRhXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgdHJpZ2dlciBtZXRob2QgdG8gYXV0b21hdGljYWxseSB0cmlnZ2VyIHByZS1ldmVudHMgd2hlblxuICAgKiB0aGVyZSBhcmUgZXZlbnRzIHRoYXQgY2FuIGJlIHByZXZlbnRlZC5cbiAgICovXG4gIFNlbGVjdDIucHJvdG90eXBlLnRyaWdnZXIgPSBmdW5jdGlvbiAobmFtZSwgYXJncykge1xuICAgIHZhciBhY3R1YWxUcmlnZ2VyID0gU2VsZWN0Mi5fX3N1cGVyX18udHJpZ2dlcjtcbiAgICB2YXIgcHJlVHJpZ2dlck1hcCA9IHtcbiAgICAgICdvcGVuJzogJ29wZW5pbmcnLFxuICAgICAgJ2Nsb3NlJzogJ2Nsb3NpbmcnLFxuICAgICAgJ3NlbGVjdCc6ICdzZWxlY3RpbmcnLFxuICAgICAgJ3Vuc2VsZWN0JzogJ3Vuc2VsZWN0aW5nJyxcbiAgICAgICdjbGVhcic6ICdjbGVhcmluZydcbiAgICB9O1xuXG4gICAgaWYgKGFyZ3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgYXJncyA9IHt9O1xuICAgIH1cblxuICAgIGlmIChuYW1lIGluIHByZVRyaWdnZXJNYXApIHtcbiAgICAgIHZhciBwcmVUcmlnZ2VyTmFtZSA9IHByZVRyaWdnZXJNYXBbbmFtZV07XG4gICAgICB2YXIgcHJlVHJpZ2dlckFyZ3MgPSB7XG4gICAgICAgIHByZXZlbnRlZDogZmFsc2UsXG4gICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgIGFyZ3M6IGFyZ3NcbiAgICAgIH07XG5cbiAgICAgIGFjdHVhbFRyaWdnZXIuY2FsbCh0aGlzLCBwcmVUcmlnZ2VyTmFtZSwgcHJlVHJpZ2dlckFyZ3MpO1xuXG4gICAgICBpZiAocHJlVHJpZ2dlckFyZ3MucHJldmVudGVkKSB7XG4gICAgICAgIGFyZ3MucHJldmVudGVkID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgYWN0dWFsVHJpZ2dlci5jYWxsKHRoaXMsIG5hbWUsIGFyZ3MpO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLnRvZ2dsZURyb3Bkb3duID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLmlzRGlzYWJsZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzT3BlbigpKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3BlbigpO1xuICAgIH1cbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLmlzT3BlbigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50cmlnZ2VyKCdxdWVyeScsIHt9KTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uIChldnQpIHtcbiAgICBpZiAoIXRoaXMuaXNPcGVuKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRyaWdnZXIoJ2Nsb3NlJywgeyBvcmlnaW5hbEV2ZW50IDogZXZ0IH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGFic3RyYWN0IHRoZSBcImVuYWJsZWRcIiAobm90IFwiZGlzYWJsZWRcIikgc3RhdGUgb2YgdGhpc1xuICAgKiBvYmplY3QuXG4gICAqXG4gICAqIEByZXR1cm4ge3RydWV9IGlmIHRoZSBpbnN0YW5jZSBpcyBub3QgZGlzYWJsZWQuXG4gICAqIEByZXR1cm4ge2ZhbHNlfSBpZiB0aGUgaW5zdGFuY2UgaXMgZGlzYWJsZWQuXG4gICAqL1xuICBTZWxlY3QyLnByb3RvdHlwZS5pc0VuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICF0aGlzLmlzRGlzYWJsZWQoKTtcbiAgfTtcblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBhYnN0cmFjdCB0aGUgXCJkaXNhYmxlZFwiIHN0YXRlIG9mIHRoaXMgb2JqZWN0LlxuICAgKlxuICAgKiBAcmV0dXJuIHt0cnVlfSBpZiB0aGUgZGlzYWJsZWQgb3B0aW9uIGlzIHRydWUuXG4gICAqIEByZXR1cm4ge2ZhbHNlfSBpZiB0aGUgZGlzYWJsZWQgb3B0aW9uIGlzIGZhbHNlLlxuICAgKi9cbiAgU2VsZWN0Mi5wcm90b3R5cGUuaXNEaXNhYmxlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmdldCgnZGlzYWJsZWQnKTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5pc09wZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuJGNvbnRhaW5lclswXS5jbGFzc0xpc3QuY29udGFpbnMoJ3NlbGVjdDItY29udGFpbmVyLS1vcGVuJyk7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuaGFzRm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuJGNvbnRhaW5lclswXS5jbGFzc0xpc3QuY29udGFpbnMoJ3NlbGVjdDItY29udGFpbmVyLS1mb2N1cycpO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLmZvY3VzID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAvLyBObyBuZWVkIHRvIHJlLXRyaWdnZXIgZm9jdXMgZXZlbnRzIGlmIHdlIGFyZSBhbHJlYWR5IGZvY3VzZWRcbiAgICBpZiAodGhpcy5oYXNGb2N1cygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy4kY29udGFpbmVyWzBdLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdDItY29udGFpbmVyLS1mb2N1cycpO1xuICAgIHRoaXMudHJpZ2dlcignZm9jdXMnLCB7fSk7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuZW5hYmxlID0gZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmdldCgnZGVidWcnKSAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLndhcm4pIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ1NlbGVjdDI6IFRoZSBgc2VsZWN0MihcImVuYWJsZVwiKWAgbWV0aG9kIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYW5kIHdpbGwnICtcbiAgICAgICAgJyBiZSByZW1vdmVkIGluIGxhdGVyIFNlbGVjdDIgdmVyc2lvbnMuIFVzZSAkZWxlbWVudC5wcm9wKFwiZGlzYWJsZWRcIiknICtcbiAgICAgICAgJyBpbnN0ZWFkLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGFyZ3MgPT0gbnVsbCB8fCBhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgYXJncyA9IFt0cnVlXTtcbiAgICB9XG5cbiAgICB2YXIgZGlzYWJsZWQgPSAhYXJnc1swXTtcblxuICAgIHRoaXMuJGVsZW1lbnQucHJvcCgnZGlzYWJsZWQnLCBkaXNhYmxlZCk7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuZGF0YSA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmdldCgnZGVidWcnKSAmJlxuICAgICAgICBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLndhcm4pIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ1NlbGVjdDI6IERhdGEgY2FuIG5vIGxvbmdlciBiZSBzZXQgdXNpbmcgYHNlbGVjdDIoXCJkYXRhXCIpYC4gWW91ICcgK1xuICAgICAgICAnc2hvdWxkIGNvbnNpZGVyIHNldHRpbmcgdGhlIHZhbHVlIGluc3RlYWQgdXNpbmcgYCRlbGVtZW50LnZhbCgpYC4nXG4gICAgICApO1xuICAgIH1cblxuICAgIHZhciBkYXRhID0gW107XG5cbiAgICB0aGlzLmRhdGFBZGFwdGVyLmN1cnJlbnQoZnVuY3Rpb24gKGN1cnJlbnREYXRhKSB7XG4gICAgICBkYXRhID0gY3VycmVudERhdGE7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS52YWwgPSBmdW5jdGlvbiAoYXJncykge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZ2V0KCdkZWJ1ZycpICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnU2VsZWN0MjogVGhlIGBzZWxlY3QyKFwidmFsXCIpYCBtZXRob2QgaGFzIGJlZW4gZGVwcmVjYXRlZCBhbmQgd2lsbCBiZScgK1xuICAgICAgICAnIHJlbW92ZWQgaW4gbGF0ZXIgU2VsZWN0MiB2ZXJzaW9ucy4gVXNlICRlbGVtZW50LnZhbCgpIGluc3RlYWQuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoYXJncyA9PSBudWxsIHx8IGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy4kZWxlbWVudC52YWwoKTtcbiAgICB9XG5cbiAgICB2YXIgbmV3VmFsID0gYXJnc1swXTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KG5ld1ZhbCkpIHtcbiAgICAgIG5ld1ZhbCA9IG5ld1ZhbC5tYXAoZnVuY3Rpb24gKG9iaikge1xuICAgICAgICByZXR1cm4gb2JqLnRvU3RyaW5nKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLiRlbGVtZW50LnZhbChuZXdWYWwpLnRyaWdnZXIoJ2lucHV0JykudHJpZ2dlcignY2hhbmdlJyk7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICBVdGlscy5SZW1vdmVEYXRhKHRoaXMuJGNvbnRhaW5lclswXSk7XG4gICAgdGhpcy4kY29udGFpbmVyLnJlbW92ZSgpO1xuXG4gICAgdGhpcy5fb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuX29ic2VydmVyID0gbnVsbDtcblxuICAgIHRoaXMuX3N5bmNBID0gbnVsbDtcbiAgICB0aGlzLl9zeW5jUyA9IG51bGw7XG5cbiAgICB0aGlzLiRlbGVtZW50Lm9mZignLnNlbGVjdDInKTtcbiAgICB0aGlzLiRlbGVtZW50LmF0dHIoJ3RhYmluZGV4JyxcbiAgICBVdGlscy5HZXREYXRhKHRoaXMuJGVsZW1lbnRbMF0sICdvbGQtdGFiaW5kZXgnKSk7XG5cbiAgICB0aGlzLiRlbGVtZW50WzBdLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDItaGlkZGVuLWFjY2Vzc2libGUnKTtcbiAgICB0aGlzLiRlbGVtZW50LmF0dHIoJ2FyaWEtaGlkZGVuJywgJ2ZhbHNlJyk7XG4gICAgVXRpbHMuUmVtb3ZlRGF0YSh0aGlzLiRlbGVtZW50WzBdKTtcbiAgICB0aGlzLiRlbGVtZW50LnJlbW92ZURhdGEoJ3NlbGVjdDInKTtcblxuICAgIHRoaXMuZGF0YUFkYXB0ZXIuZGVzdHJveSgpO1xuICAgIHRoaXMuc2VsZWN0aW9uLmRlc3Ryb3koKTtcbiAgICB0aGlzLmRyb3Bkb3duLmRlc3Ryb3koKTtcbiAgICB0aGlzLnJlc3VsdHMuZGVzdHJveSgpO1xuXG4gICAgdGhpcy5kYXRhQWRhcHRlciA9IG51bGw7XG4gICAgdGhpcy5zZWxlY3Rpb24gPSBudWxsO1xuICAgIHRoaXMuZHJvcGRvd24gPSBudWxsO1xuICAgIHRoaXMucmVzdWx0cyA9IG51bGw7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkY29udGFpbmVyID0gJChcbiAgICAgICc8c3BhbiBjbGFzcz1cInNlbGVjdDIgc2VsZWN0Mi1jb250YWluZXJcIj4nICtcbiAgICAgICAgJzxzcGFuIGNsYXNzPVwic2VsZWN0aW9uXCI+PC9zcGFuPicgK1xuICAgICAgICAnPHNwYW4gY2xhc3M9XCJkcm9wZG93bi13cmFwcGVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPicgK1xuICAgICAgJzwvc3Bhbj4nXG4gICAgKTtcblxuICAgICRjb250YWluZXIuYXR0cignZGlyJywgdGhpcy5vcHRpb25zLmdldCgnZGlyJykpO1xuXG4gICAgdGhpcy4kY29udGFpbmVyID0gJGNvbnRhaW5lcjtcblxuICAgIHRoaXMuJGNvbnRhaW5lclswXS5jbGFzc0xpc3RcbiAgICAgIC5hZGQoJ3NlbGVjdDItY29udGFpbmVyLS0nICsgdGhpcy5vcHRpb25zLmdldCgndGhlbWUnKSk7XG5cbiAgICBVdGlscy5TdG9yZURhdGEoJGNvbnRhaW5lclswXSwgJ2VsZW1lbnQnLCB0aGlzLiRlbGVtZW50KTtcblxuICAgIHJldHVybiAkY29udGFpbmVyO1xuICB9O1xuXG4gIHJldHVybiBTZWxlY3QyO1xufSk7XG5cblMyLmRlZmluZSgnanF1ZXJ5LW1vdXNld2hlZWwnLFtcbiAgJ2pxdWVyeSdcbl0sIGZ1bmN0aW9uICgkKSB7XG4gIC8vIFVzZWQgdG8gc2hpbSBqUXVlcnkubW91c2V3aGVlbCBmb3Igbm9uLWZ1bGwgYnVpbGRzLlxuICByZXR1cm4gJDtcbn0pO1xuXG5TMi5kZWZpbmUoJ2pxdWVyeS5zZWxlY3QyJyxbXG4gICdqcXVlcnknLFxuICAnanF1ZXJ5LW1vdXNld2hlZWwnLFxuXG4gICcuL3NlbGVjdDIvY29yZScsXG4gICcuL3NlbGVjdDIvZGVmYXVsdHMnLFxuICAnLi9zZWxlY3QyL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKCQsIF8sIFNlbGVjdDIsIERlZmF1bHRzLCBVdGlscykge1xuICBpZiAoJC5mbi5zZWxlY3QyID09IG51bGwpIHtcbiAgICAvLyBBbGwgbWV0aG9kcyB0aGF0IHNob3VsZCByZXR1cm4gdGhlIGVsZW1lbnRcbiAgICB2YXIgdGhpc01ldGhvZHMgPSBbJ29wZW4nLCAnY2xvc2UnLCAnZGVzdHJveSddO1xuXG4gICAgJC5mbi5zZWxlY3QyID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIGluc3RhbmNlT3B0aW9ucyA9ICQuZXh0ZW5kKHRydWUsIHt9LCBvcHRpb25zKTtcblxuICAgICAgICAgIHZhciBpbnN0YW5jZSA9IG5ldyBTZWxlY3QyKCQodGhpcyksIGluc3RhbmNlT3B0aW9ucyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdmFyIHJldDtcbiAgICAgICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuXG4gICAgICAgIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIGluc3RhbmNlID0gVXRpbHMuR2V0RGF0YSh0aGlzLCAnc2VsZWN0MicpO1xuXG4gICAgICAgICAgaWYgKGluc3RhbmNlID09IG51bGwgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS5lcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgJ1RoZSBzZWxlY3QyKFxcJycgKyBvcHRpb25zICsgJ1xcJykgbWV0aG9kIHdhcyBjYWxsZWQgb24gYW4gJyArXG4gICAgICAgICAgICAgICdlbGVtZW50IHRoYXQgaXMgbm90IHVzaW5nIFNlbGVjdDIuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXQgPSBpbnN0YW5jZVtvcHRpb25zXS5hcHBseShpbnN0YW5jZSwgYXJncyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIHdlIHNob3VsZCBiZSByZXR1cm5pbmcgYHRoaXNgXG4gICAgICAgIGlmICh0aGlzTWV0aG9kcy5pbmRleE9mKG9wdGlvbnMpID4gLTEpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYXJndW1lbnRzIGZvciBTZWxlY3QyOiAnICsgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmICgkLmZuLnNlbGVjdDIuZGVmYXVsdHMgPT0gbnVsbCkge1xuICAgICQuZm4uc2VsZWN0Mi5kZWZhdWx0cyA9IERlZmF1bHRzO1xuICB9XG5cbiAgcmV0dXJuIFNlbGVjdDI7XG59KTtcblxuICAvLyBSZXR1cm4gdGhlIEFNRCBsb2FkZXIgY29uZmlndXJhdGlvbiBzbyBpdCBjYW4gYmUgdXNlZCBvdXRzaWRlIG9mIHRoaXMgZmlsZVxuICByZXR1cm4ge1xuICAgIGRlZmluZTogUzIuZGVmaW5lLFxuICAgIHJlcXVpcmU6IFMyLnJlcXVpcmVcbiAgfTtcbn0oKSk7XG5cbiAgLy8gQXV0b2xvYWQgdGhlIGpRdWVyeSBiaW5kaW5nc1xuICAvLyBXZSBrbm93IHRoYXQgYWxsIG9mIHRoZSBtb2R1bGVzIGV4aXN0IGFib3ZlIHRoaXMsIHNvIHdlJ3JlIHNhZmVcbiAgdmFyIHNlbGVjdDIgPSBTMi5yZXF1aXJlKCdqcXVlcnkuc2VsZWN0MicpO1xuXG4gIC8vIEhvbGQgdGhlIEFNRCBtb2R1bGUgcmVmZXJlbmNlcyBvbiB0aGUgalF1ZXJ5IGZ1bmN0aW9uIHRoYXQgd2FzIGp1c3QgbG9hZGVkXG4gIC8vIFRoaXMgYWxsb3dzIFNlbGVjdDIgdG8gdXNlIHRoZSBpbnRlcm5hbCBsb2FkZXIgb3V0c2lkZSBvZiB0aGlzIGZpbGUsIHN1Y2hcbiAgLy8gYXMgaW4gdGhlIGxhbmd1YWdlIGZpbGVzLlxuICBqUXVlcnkuZm4uc2VsZWN0Mi5hbWQgPSBTMjtcblxuICAvLyBSZXR1cm4gdGhlIFNlbGVjdDIgaW5zdGFuY2UgZm9yIGFueW9uZSB3aG8gaXMgaW1wb3J0aW5nIGl0LlxuICByZXR1cm4gc2VsZWN0Mjtcbn0pKTtcbiIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4vbWFpbi5jc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4vZGVmYXVsdC5jc3M/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPWNzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgaXNPbGRJRSA9IGZ1bmN0aW9uIGlzT2xkSUUoKSB7XG4gIHZhciBtZW1vO1xuICByZXR1cm4gZnVuY3Rpb24gbWVtb3JpemUoKSB7XG4gICAgaWYgKHR5cGVvZiBtZW1vID09PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gVGVzdCBmb3IgSUUgPD0gOSBhcyBwcm9wb3NlZCBieSBCcm93c2VyaGFja3NcbiAgICAgIC8vIEBzZWUgaHR0cDovL2Jyb3dzZXJoYWNrcy5jb20vI2hhY2stZTcxZDg2OTJmNjUzMzQxNzNmZWU3MTVjMjIyY2I4MDVcbiAgICAgIC8vIFRlc3RzIGZvciBleGlzdGVuY2Ugb2Ygc3RhbmRhcmQgZ2xvYmFscyBpcyB0byBhbGxvdyBzdHlsZS1sb2FkZXJcbiAgICAgIC8vIHRvIG9wZXJhdGUgY29ycmVjdGx5IGludG8gbm9uLXN0YW5kYXJkIGVudmlyb25tZW50c1xuICAgICAgLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay1jb250cmliL3N0eWxlLWxvYWRlci9pc3N1ZXMvMTc3XG4gICAgICBtZW1vID0gQm9vbGVhbih3aW5kb3cgJiYgZG9jdW1lbnQgJiYgZG9jdW1lbnQuYWxsICYmICF3aW5kb3cuYXRvYik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lbW87XG4gIH07XG59KCk7XG5cbnZhciBnZXRUYXJnZXQgPSBmdW5jdGlvbiBnZXRUYXJnZXQoKSB7XG4gIHZhciBtZW1vID0ge307XG4gIHJldHVybiBmdW5jdGlvbiBtZW1vcml6ZSh0YXJnZXQpIHtcbiAgICBpZiAodHlwZW9mIG1lbW9bdGFyZ2V0XSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHZhciBzdHlsZVRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0KTsgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcblxuICAgICAgaWYgKHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCAmJiBzdHlsZVRhcmdldCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgYWNjZXNzIHRvIGlmcmFtZSBpcyBibG9ja2VkXG4gICAgICAgICAgLy8gZHVlIHRvIGNyb3NzLW9yaWdpbiByZXN0cmljdGlvbnNcbiAgICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbWVtb1t0YXJnZXRdID0gc3R5bGVUYXJnZXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lbW9bdGFyZ2V0XTtcbiAgfTtcbn0oKTtcblxudmFyIHN0eWxlc0luRG9tID0gW107XG5cbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzSW5Eb20ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3R5bGVzSW5Eb21baV0uaWRlbnRpZmllciA9PT0gaWRlbnRpZmllcikge1xuICAgICAgcmVzdWx0ID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gbGlzdFtpXTtcbiAgICB2YXIgaWQgPSBvcHRpb25zLmJhc2UgPyBpdGVtWzBdICsgb3B0aW9ucy5iYXNlIDogaXRlbVswXTtcbiAgICB2YXIgY291bnQgPSBpZENvdW50TWFwW2lkXSB8fCAwO1xuICAgIHZhciBpZGVudGlmaWVyID0gXCJcIi5jb25jYXQoaWQsIFwiIFwiKS5jb25jYXQoY291bnQpO1xuICAgIGlkQ291bnRNYXBbaWRdID0gY291bnQgKyAxO1xuICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgIHZhciBvYmogPSB7XG4gICAgICBjc3M6IGl0ZW1bMV0sXG4gICAgICBtZWRpYTogaXRlbVsyXSxcbiAgICAgIHNvdXJjZU1hcDogaXRlbVszXVxuICAgIH07XG5cbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRvbVtpbmRleF0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5Eb21baW5kZXhdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVzSW5Eb20ucHVzaCh7XG4gICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIHVwZGF0ZXI6IGFkZFN0eWxlKG9iaiwgb3B0aW9ucyksXG4gICAgICAgIHJlZmVyZW5jZXM6IDFcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnRpZmllcik7XG4gIH1cblxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5cbmZ1bmN0aW9uIGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKSB7XG4gIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIHZhciBhdHRyaWJ1dGVzID0gb3B0aW9ucy5hdHRyaWJ1dGVzIHx8IHt9O1xuXG4gIGlmICh0eXBlb2YgYXR0cmlidXRlcy5ub25jZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB2YXIgbm9uY2UgPSB0eXBlb2YgX193ZWJwYWNrX25vbmNlX18gIT09ICd1bmRlZmluZWQnID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuXG4gICAgaWYgKG5vbmNlKSB7XG4gICAgICBhdHRyaWJ1dGVzLm5vbmNlID0gbm9uY2U7XG4gICAgfVxuICB9XG5cbiAgT2JqZWN0LmtleXMoYXR0cmlidXRlcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgc3R5bGUuc2V0QXR0cmlidXRlKGtleSwgYXR0cmlidXRlc1trZXldKTtcbiAgfSk7XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLmluc2VydCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIG9wdGlvbnMuaW5zZXJ0KHN0eWxlKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgdGFyZ2V0ID0gZ2V0VGFyZ2V0KG9wdGlvbnMuaW5zZXJ0IHx8ICdoZWFkJyk7XG5cbiAgICBpZiAoIXRhcmdldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZmluZCBhIHN0eWxlIHRhcmdldC4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSB2YWx1ZSBmb3IgdGhlICdpbnNlcnQnIHBhcmFtZXRlciBpcyBpbnZhbGlkLlwiKTtcbiAgICB9XG5cbiAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICB9XG5cbiAgcmV0dXJuIHN0eWxlO1xufVxuXG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGUpIHtcbiAgLy8gaXN0YW5idWwgaWdub3JlIGlmXG4gIGlmIChzdHlsZS5wYXJlbnROb2RlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3R5bGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZSk7XG59XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuXG52YXIgcmVwbGFjZVRleHQgPSBmdW5jdGlvbiByZXBsYWNlVGV4dCgpIHtcbiAgdmFyIHRleHRTdG9yZSA9IFtdO1xuICByZXR1cm4gZnVuY3Rpb24gcmVwbGFjZShpbmRleCwgcmVwbGFjZW1lbnQpIHtcbiAgICB0ZXh0U3RvcmVbaW5kZXhdID0gcmVwbGFjZW1lbnQ7XG4gICAgcmV0dXJuIHRleHRTdG9yZS5maWx0ZXIoQm9vbGVhbikuam9pbignXFxuJyk7XG4gIH07XG59KCk7XG5cbmZ1bmN0aW9uIGFwcGx5VG9TaW5nbGV0b25UYWcoc3R5bGUsIGluZGV4LCByZW1vdmUsIG9iaikge1xuICB2YXIgY3NzID0gcmVtb3ZlID8gJycgOiBvYmoubWVkaWEgPyBcIkBtZWRpYSBcIi5jb25jYXQob2JqLm1lZGlhLCBcIiB7XCIpLmNvbmNhdChvYmouY3NzLCBcIn1cIikgOiBvYmouY3NzOyAvLyBGb3Igb2xkIElFXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuXG4gIGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gcmVwbGFjZVRleHQoaW5kZXgsIGNzcyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGNzc05vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpO1xuICAgIHZhciBjaGlsZE5vZGVzID0gc3R5bGUuY2hpbGROb2RlcztcblxuICAgIGlmIChjaGlsZE5vZGVzW2luZGV4XSkge1xuICAgICAgc3R5bGUucmVtb3ZlQ2hpbGQoY2hpbGROb2Rlc1tpbmRleF0pO1xuICAgIH1cblxuICAgIGlmIChjaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgc3R5bGUuaW5zZXJ0QmVmb3JlKGNzc05vZGUsIGNoaWxkTm9kZXNbaW5kZXhdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoY3NzTm9kZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFwcGx5VG9UYWcoc3R5bGUsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gb2JqLmNzcztcbiAgdmFyIG1lZGlhID0gb2JqLm1lZGlhO1xuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcblxuICBpZiAobWVkaWEpIHtcbiAgICBzdHlsZS5zZXRBdHRyaWJ1dGUoJ21lZGlhJywgbWVkaWEpO1xuICB9IGVsc2Uge1xuICAgIHN0eWxlLnJlbW92ZUF0dHJpYnV0ZSgnbWVkaWEnKTtcbiAgfVxuXG4gIGlmIChzb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgY3NzICs9IFwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIi5jb25jYXQoYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSwgXCIgKi9cIik7XG4gIH0gLy8gRm9yIG9sZCBJRVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cblxuXG4gIGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdHlsZS5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZS5yZW1vdmVDaGlsZChzdHlsZS5maXJzdENoaWxkKTtcbiAgICB9XG5cbiAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxuXG52YXIgc2luZ2xldG9uID0gbnVsbDtcbnZhciBzaW5nbGV0b25Db3VudGVyID0gMDtcblxuZnVuY3Rpb24gYWRkU3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBzdHlsZTtcbiAgdmFyIHVwZGF0ZTtcbiAgdmFyIHJlbW92ZTtcblxuICBpZiAob3B0aW9ucy5zaW5nbGV0b24pIHtcbiAgICB2YXIgc3R5bGVJbmRleCA9IHNpbmdsZXRvbkNvdW50ZXIrKztcbiAgICBzdHlsZSA9IHNpbmdsZXRvbiB8fCAoc2luZ2xldG9uID0gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpKTtcbiAgICB1cGRhdGUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGUsIHN0eWxlSW5kZXgsIGZhbHNlKTtcbiAgICByZW1vdmUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGUsIHN0eWxlSW5kZXgsIHRydWUpO1xuICB9IGVsc2Uge1xuICAgIHN0eWxlID0gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpO1xuICAgIHVwZGF0ZSA9IGFwcGx5VG9UYWcuYmluZChudWxsLCBzdHlsZSwgb3B0aW9ucyk7XG5cbiAgICByZW1vdmUgPSBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGUpO1xuICAgIH07XG4gIH1cblxuICB1cGRhdGUob2JqKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZVN0eWxlKG5ld09iaikge1xuICAgIGlmIChuZXdPYmopIHtcbiAgICAgIGlmIChuZXdPYmouY3NzID09PSBvYmouY3NzICYmIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB1cGRhdGUob2JqID0gbmV3T2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlKCk7XG4gICAgfVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChsaXN0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OyAvLyBGb3JjZSBzaW5nbGUtdGFnIHNvbHV0aW9uIG9uIElFNi05LCB3aGljaCBoYXMgYSBoYXJkIGxpbWl0IG9uIHRoZSAjIG9mIDxzdHlsZT5cbiAgLy8gdGFncyBpdCB3aWxsIGFsbG93IG9uIGEgcGFnZVxuXG4gIGlmICghb3B0aW9ucy5zaW5nbGV0b24gJiYgdHlwZW9mIG9wdGlvbnMuc2luZ2xldG9uICE9PSAnYm9vbGVhbicpIHtcbiAgICBvcHRpb25zLnNpbmdsZXRvbiA9IGlzT2xkSUUoKTtcbiAgfVxuXG4gIGxpc3QgPSBsaXN0IHx8IFtdO1xuICB2YXIgbGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlKG5ld0xpc3QpIHtcbiAgICBuZXdMaXN0ID0gbmV3TGlzdCB8fCBbXTtcblxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobmV3TGlzdCkgIT09ICdbb2JqZWN0IEFycmF5XScpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGlkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbaV07XG4gICAgICB2YXIgaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICAgIHN0eWxlc0luRG9tW2luZGV4XS5yZWZlcmVuY2VzLS07XG4gICAgfVxuXG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX2lkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbX2ldO1xuXG4gICAgICB2YXIgX2luZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoX2lkZW50aWZpZXIpO1xuXG4gICAgICBpZiAoc3R5bGVzSW5Eb21bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRG9tW19pbmRleF0udXBkYXRlcigpO1xuXG4gICAgICAgIHN0eWxlc0luRG9tLnNwbGljZShfaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxhc3RJZGVudGlmaWVycyA9IG5ld0xhc3RJZGVudGlmaWVycztcbiAgfTtcbn07IiwiaW1wb3J0IHsgY29tcHV0ZWQsIG9wZW5CbG9jaywgY3JlYXRlQmxvY2ssIG1lcmdlUHJvcHMgfSBmcm9tICd2dWUnO1xuXG52YXIgc2NyaXB0ID0ge1xuICBuYW1lOiAnU3ZnVnVlJyxcbiAgcHJvcHM6IHtcbiAgICBpY29uOiBTdHJpbmdcbiAgfSxcblxuICBzZXR1cChwcm9wcykge1xuICAgIGNvbnN0IGljb25QYXRoID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuaWNvbi5yZXBsYWNlKG5ldyBSZWdFeHAoJy4nLnJlcGxhY2UoLyhbLiorP149IToke30oKXxcXFtcXF1cXC9cXFxcXSkvZywgJ1xcXFwkMScpLCAnZycpLCAnLycpICsgJy5zdmcnKTtcbiAgICBjb25zdCBzdmdTdHJpbmcgPSBjb21wdXRlZCgoKSA9PiByZXF1aXJlKGBzdmctZmlsZXMtcGF0aC8ke2ljb25QYXRoLnZhbHVlfWApLmRlZmF1bHQpO1xuICAgIGNvbnN0IHN2Z0F0dHJpYnV0ZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBpZiAoIXN2Z1N0cmluZykgcmV0dXJuIHt9O1xuICAgICAgbGV0IHdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIHdyYXBwZXIuaW5uZXJIVE1MID0gc3ZnU3RyaW5nLnZhbHVlO1xuICAgICAgbGV0IGF0dHJpYnV0ZXNMaXN0ID0gd3JhcHBlci5maXJzdEVsZW1lbnRDaGlsZC5hdHRyaWJ1dGVzO1xuICAgICAgbGV0IGF0dHJpYnV0ZXMgPSB7fTtcbiAgICAgIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXNMaXN0KS5tYXAoaSA9PiBhdHRyaWJ1dGVzW2F0dHJpYnV0ZXNMaXN0W2ldLm5hbWVdID0gYXR0cmlidXRlc0xpc3RbaV0udmFsdWUpO1xuICAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7XG4gICAgfSk7XG4gICAgY29uc3Qgc3ZnQ29udGVudCA9IGNvbXB1dGVkKCgpID0+IHN2Z1N0cmluZyA/IHN2Z1N0cmluZy52YWx1ZS5yZXBsYWNlKC9ePHN2Z1tePl0qPnw8XFwvc3ZnPiQvZywgJycpIDogbnVsbCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN2Z0F0dHJpYnV0ZXMsXG4gICAgICBzdmdDb250ZW50XG4gICAgfTtcbiAgfVxuXG59O1xuXG5mdW5jdGlvbiByZW5kZXIoX2N0eCwgX2NhY2hlLCAkcHJvcHMsICRzZXR1cCwgJGRhdGEsICRvcHRpb25zKSB7XG4gIHJldHVybiBvcGVuQmxvY2soKSwgY3JlYXRlQmxvY2soXCJzdmdcIiwgbWVyZ2VQcm9wcygkc2V0dXAuc3ZnQXR0cmlidXRlcywge1xuICAgIGlubmVySFRNTDogJHNldHVwLnN2Z0NvbnRlbnRcbiAgfSksIG51bGwsIDE2LCBbXCJpbm5lckhUTUxcIl0pO1xufVxuXG5zY3JpcHQucmVuZGVyID0gcmVuZGVyO1xuXG4vLyBJbXBvcnQgdnVlIGNvbXBvbmVudFxuLy8gSUlGRSBpbmplY3RzIGluc3RhbGwgZnVuY3Rpb24gaW50byBjb21wb25lbnQsIGFsbG93aW5nIGNvbXBvbmVudFxuLy8gdG8gYmUgcmVnaXN0ZXJlZCB2aWEgVnVlLnVzZSgpIGFzIHdlbGwgYXMgVnVlLmNvbXBvbmVudCgpLFxuXG52YXIgZW50cnlfZXNtID0gLyojX19QVVJFX18qLygoKSA9PiB7XG4gIC8vIEdldCBjb21wb25lbnQgaW5zdGFuY2VcbiAgY29uc3QgaW5zdGFsbGFibGUgPSBzY3JpcHQ7IC8vIEF0dGFjaCBpbnN0YWxsIGZ1bmN0aW9uIGV4ZWN1dGVkIGJ5IFZ1ZS51c2UoKVxuXG4gIGluc3RhbGxhYmxlLmluc3RhbGwgPSBhcHAgPT4ge1xuICAgIGFwcC5jb21wb25lbnQoJ1N2Z1Z1ZScsIGluc3RhbGxhYmxlKTtcbiAgfTtcblxuICByZXR1cm4gaW5zdGFsbGFibGU7XG59KSgpOyAvLyBJdCdzIHBvc3NpYmxlIHRvIGV4cG9zZSBuYW1lZCBleHBvcnRzIHdoZW4gd3JpdGluZyBjb21wb25lbnRzIHRoYXQgY2FuXG4vLyBhbHNvIGJlIHVzZWQgYXMgZGlyZWN0aXZlcywgZXRjLiAtIGVnLiBpbXBvcnQgeyBSb2xsdXBEZW1vRGlyZWN0aXZlIH0gZnJvbSAncm9sbHVwLWRlbW8nO1xuLy8gZXhwb3J0IGNvbnN0IFJvbGx1cERlbW9EaXJlY3RpdmUgPSBkaXJlY3RpdmU7XG5cbmV4cG9ydCBkZWZhdWx0IGVudHJ5X2VzbTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLy8gcnVudGltZSBoZWxwZXIgZm9yIHNldHRpbmcgcHJvcGVydGllcyBvbiBjb21wb25lbnRzXG4vLyBpbiBhIHRyZWUtc2hha2FibGUgd2F5XG5leHBvcnRzLmRlZmF1bHQgPSAoc2ZjLCBwcm9wcykgPT4ge1xuICAgIGNvbnN0IHRhcmdldCA9IHNmYy5fX3ZjY09wdHMgfHwgc2ZjO1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsXSBvZiBwcm9wcykge1xuICAgICAgICB0YXJnZXRba2V5XSA9IHZhbDtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbn07XG4iLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi9kZWZhdWx0LmNzcz92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9Y3NzXCIiLCJpbXBvcnQgKiBhcyBydW50aW1lRG9tIGZyb20gJ0B2dWUvcnVudGltZS1kb20nO1xuaW1wb3J0IHsgaW5pdEN1c3RvbUZvcm1hdHRlciwgd2FybiwgcmVnaXN0ZXJSdW50aW1lQ29tcGlsZXIgfSBmcm9tICdAdnVlL3J1bnRpbWUtZG9tJztcbmV4cG9ydCAqIGZyb20gJ0B2dWUvcnVudGltZS1kb20nO1xuaW1wb3J0IHsgY29tcGlsZSB9IGZyb20gJ0B2dWUvY29tcGlsZXItZG9tJztcbmltcG9ydCB7IGlzU3RyaW5nLCBOT09QLCBleHRlbmQsIGdlbmVyYXRlQ29kZUZyYW1lIH0gZnJvbSAnQHZ1ZS9zaGFyZWQnO1xuXG5mdW5jdGlvbiBpbml0RGV2KCkge1xyXG4gICAge1xyXG4gICAgICAgIGluaXRDdXN0b21Gb3JtYXR0ZXIoKTtcclxuICAgIH1cclxufVxuXG4vLyBUaGlzIGVudHJ5IGlzIHRoZSBcImZ1bGwtYnVpbGRcIiB0aGF0IGluY2x1ZGVzIGJvdGggdGhlIHJ1bnRpbWVcclxuaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgaW5pdERldigpO1xyXG59XHJcbmNvbnN0IGNvbXBpbGVDYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbmZ1bmN0aW9uIGNvbXBpbGVUb0Z1bmN0aW9uKHRlbXBsYXRlLCBvcHRpb25zKSB7XHJcbiAgICBpZiAoIWlzU3RyaW5nKHRlbXBsYXRlKSkge1xyXG4gICAgICAgIGlmICh0ZW1wbGF0ZS5ub2RlVHlwZSkge1xyXG4gICAgICAgICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLmlubmVySFRNTDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB3YXJuKGBpbnZhbGlkIHRlbXBsYXRlIG9wdGlvbjogYCwgdGVtcGxhdGUpO1xyXG4gICAgICAgICAgICByZXR1cm4gTk9PUDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBrZXkgPSB0ZW1wbGF0ZTtcclxuICAgIGNvbnN0IGNhY2hlZCA9IGNvbXBpbGVDYWNoZVtrZXldO1xyXG4gICAgaWYgKGNhY2hlZCkge1xyXG4gICAgICAgIHJldHVybiBjYWNoZWQ7XHJcbiAgICB9XHJcbiAgICBpZiAodGVtcGxhdGVbMF0gPT09ICcjJykge1xyXG4gICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0ZW1wbGF0ZSk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhZWwpIHtcclxuICAgICAgICAgICAgd2FybihgVGVtcGxhdGUgZWxlbWVudCBub3QgZm91bmQgb3IgaXMgZW1wdHk6ICR7dGVtcGxhdGV9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIF9fVU5TQUZFX19cclxuICAgICAgICAvLyBSZWFzb246IHBvdGVudGlhbCBleGVjdXRpb24gb2YgSlMgZXhwcmVzc2lvbnMgaW4gaW4tRE9NIHRlbXBsYXRlLlxyXG4gICAgICAgIC8vIFRoZSB1c2VyIG11c3QgbWFrZSBzdXJlIHRoZSBpbi1ET00gdGVtcGxhdGUgaXMgdHJ1c3RlZC4gSWYgaXQncyByZW5kZXJlZFxyXG4gICAgICAgIC8vIGJ5IHRoZSBzZXJ2ZXIsIHRoZSB0ZW1wbGF0ZSBzaG91bGQgbm90IGNvbnRhaW4gYW55IHVzZXIgZGF0YS5cclxuICAgICAgICB0ZW1wbGF0ZSA9IGVsID8gZWwuaW5uZXJIVE1MIDogYGA7XHJcbiAgICB9XHJcbiAgICBjb25zdCBvcHRzID0gZXh0ZW5kKHtcclxuICAgICAgICBob2lzdFN0YXRpYzogdHJ1ZSxcclxuICAgICAgICBvbkVycm9yOiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBvbkVycm9yIDogdW5kZWZpbmVkLFxyXG4gICAgICAgIG9uV2FybjogKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gZSA9PiBvbkVycm9yKGUsIHRydWUpIDogTk9PUFxyXG4gICAgfSwgb3B0aW9ucyk7XHJcbiAgICBpZiAoIW9wdHMuaXNDdXN0b21FbGVtZW50ICYmIHR5cGVvZiBjdXN0b21FbGVtZW50cyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICBvcHRzLmlzQ3VzdG9tRWxlbWVudCA9IHRhZyA9PiAhIWN1c3RvbUVsZW1lbnRzLmdldCh0YWcpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBjb2RlIH0gPSBjb21waWxlKHRlbXBsYXRlLCBvcHRzKTtcclxuICAgIGZ1bmN0aW9uIG9uRXJyb3IoZXJyLCBhc1dhcm5pbmcgPSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhc1dhcm5pbmdcclxuICAgICAgICAgICAgPyBlcnIubWVzc2FnZVxyXG4gICAgICAgICAgICA6IGBUZW1wbGF0ZSBjb21waWxhdGlvbiBlcnJvcjogJHtlcnIubWVzc2FnZX1gO1xyXG4gICAgICAgIGNvbnN0IGNvZGVGcmFtZSA9IGVyci5sb2MgJiZcclxuICAgICAgICAgICAgZ2VuZXJhdGVDb2RlRnJhbWUodGVtcGxhdGUsIGVyci5sb2Muc3RhcnQub2Zmc2V0LCBlcnIubG9jLmVuZC5vZmZzZXQpO1xyXG4gICAgICAgIHdhcm4oY29kZUZyYW1lID8gYCR7bWVzc2FnZX1cXG4ke2NvZGVGcmFtZX1gIDogbWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgICAvLyBUaGUgd2lsZGNhcmQgaW1wb3J0IHJlc3VsdHMgaW4gYSBodWdlIG9iamVjdCB3aXRoIGV2ZXJ5IGV4cG9ydFxyXG4gICAgLy8gd2l0aCBrZXlzIHRoYXQgY2Fubm90IGJlIG1hbmdsZWQsIGFuZCBjYW4gYmUgcXVpdGUgaGVhdnkgc2l6ZS13aXNlLlxyXG4gICAgLy8gSW4gdGhlIGdsb2JhbCBidWlsZCB3ZSBrbm93IGBWdWVgIGlzIGF2YWlsYWJsZSBnbG9iYWxseSBzbyB3ZSBjYW4gYXZvaWRcclxuICAgIC8vIHRoZSB3aWxkY2FyZCBvYmplY3QuXHJcbiAgICBjb25zdCByZW5kZXIgPSAobmV3IEZ1bmN0aW9uKCdWdWUnLCBjb2RlKShydW50aW1lRG9tKSk7XHJcbiAgICByZW5kZXIuX3JjID0gdHJ1ZTtcclxuICAgIHJldHVybiAoY29tcGlsZUNhY2hlW2tleV0gPSByZW5kZXIpO1xyXG59XHJcbnJlZ2lzdGVyUnVudGltZUNvbXBpbGVyKGNvbXBpbGVUb0Z1bmN0aW9uKTtcblxuZXhwb3J0IHsgY29tcGlsZVRvRnVuY3Rpb24gYXMgY29tcGlsZSB9O1xuIiwibW9kdWxlLmV4cG9ydHMgPVxuLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbi8qKioqKiovIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4vKioqKioqLyBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuLyoqKioqKi8gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4vKioqKioqLyBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuLyoqKioqKi8gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuLyoqKioqKi8gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbi8qKioqKiovIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4vKioqKioqLyBcdFx0cmV0dXJuIG5zO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSBcImZiMTVcIik7XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovICh7XG5cbi8qKiovIFwiODg3NVwiOlxuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgX19XRUJQQUNLX0FNRF9ERUZJTkVfRkFDVE9SWV9fLCBfX1dFQlBBQ0tfQU1EX0RFRklORV9BUlJBWV9fLCBfX1dFQlBBQ0tfQU1EX0RFRklORV9SRVNVTFRfXzsvLyBhZGRhcHRlZCBmcm9tIHRoZSBkb2N1bWVudC5jdXJyZW50U2NyaXB0IHBvbHlmaWxsIGJ5IEFkYW0gTWlsbGVyXG4vLyBNSVQgbGljZW5zZVxuLy8gc291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vYW1pbGxlci1naC9jdXJyZW50U2NyaXB0LXBvbHlmaWxsXG5cbi8vIGFkZGVkIHN1cHBvcnQgZm9yIEZpcmVmb3ggaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMDUwNVxuXG4oZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnkpIHtcbiAgaWYgKHRydWUpIHtcbiAgICAhKF9fV0VCUEFDS19BTURfREVGSU5FX0FSUkFZX18gPSBbXSwgX19XRUJQQUNLX0FNRF9ERUZJTkVfRkFDVE9SWV9fID0gKGZhY3RvcnkpLFxuXHRcdFx0XHRfX1dFQlBBQ0tfQU1EX0RFRklORV9SRVNVTFRfXyA9ICh0eXBlb2YgX19XRUJQQUNLX0FNRF9ERUZJTkVfRkFDVE9SWV9fID09PSAnZnVuY3Rpb24nID9cblx0XHRcdFx0KF9fV0VCUEFDS19BTURfREVGSU5FX0ZBQ1RPUllfXy5hcHBseShleHBvcnRzLCBfX1dFQlBBQ0tfQU1EX0RFRklORV9BUlJBWV9fKSkgOiBfX1dFQlBBQ0tfQU1EX0RFRklORV9GQUNUT1JZX18pLFxuXHRcdFx0XHRfX1dFQlBBQ0tfQU1EX0RFRklORV9SRVNVTFRfXyAhPT0gdW5kZWZpbmVkICYmIChtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19BTURfREVGSU5FX1JFU1VMVF9fKSk7XG4gIH0gZWxzZSB7fVxufSh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDogdGhpcywgZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBnZXRDdXJyZW50U2NyaXB0ICgpIHtcbiAgICB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZG9jdW1lbnQsICdjdXJyZW50U2NyaXB0JylcbiAgICAvLyBmb3IgY2hyb21lXG4gICAgaWYgKCFkZXNjcmlwdG9yICYmICdjdXJyZW50U2NyaXB0JyBpbiBkb2N1bWVudCAmJiBkb2N1bWVudC5jdXJyZW50U2NyaXB0KSB7XG4gICAgICByZXR1cm4gZG9jdW1lbnQuY3VycmVudFNjcmlwdFxuICAgIH1cblxuICAgIC8vIGZvciBvdGhlciBicm93c2VycyB3aXRoIG5hdGl2ZSBzdXBwb3J0IGZvciBjdXJyZW50U2NyaXB0XG4gICAgaWYgKGRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci5nZXQgIT09IGdldEN1cnJlbnRTY3JpcHQgJiYgZG9jdW1lbnQuY3VycmVudFNjcmlwdCkge1xuICAgICAgcmV0dXJuIGRvY3VtZW50LmN1cnJlbnRTY3JpcHRcbiAgICB9XG4gIFxuICAgIC8vIElFIDgtMTAgc3VwcG9ydCBzY3JpcHQgcmVhZHlTdGF0ZVxuICAgIC8vIElFIDExKyAmIEZpcmVmb3ggc3VwcG9ydCBzdGFjayB0cmFjZVxuICAgIHRyeSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgLy8gRmluZCB0aGUgc2Vjb25kIG1hdGNoIGZvciB0aGUgXCJhdFwiIHN0cmluZyB0byBnZXQgZmlsZSBzcmMgdXJsIGZyb20gc3RhY2suXG4gICAgICB2YXIgaWVTdGFja1JlZ0V4cCA9IC8uKmF0IFteKF0qXFwoKC4qKTooLispOiguKylcXCkkL2lnLFxuICAgICAgICBmZlN0YWNrUmVnRXhwID0gL0AoW15AXSopOihcXGQrKTooXFxkKylcXHMqJC9pZyxcbiAgICAgICAgc3RhY2tEZXRhaWxzID0gaWVTdGFja1JlZ0V4cC5leGVjKGVyci5zdGFjaykgfHwgZmZTdGFja1JlZ0V4cC5leGVjKGVyci5zdGFjayksXG4gICAgICAgIHNjcmlwdExvY2F0aW9uID0gKHN0YWNrRGV0YWlscyAmJiBzdGFja0RldGFpbHNbMV0pIHx8IGZhbHNlLFxuICAgICAgICBsaW5lID0gKHN0YWNrRGV0YWlscyAmJiBzdGFja0RldGFpbHNbMl0pIHx8IGZhbHNlLFxuICAgICAgICBjdXJyZW50TG9jYXRpb24gPSBkb2N1bWVudC5sb2NhdGlvbi5ocmVmLnJlcGxhY2UoZG9jdW1lbnQubG9jYXRpb24uaGFzaCwgJycpLFxuICAgICAgICBwYWdlU291cmNlLFxuICAgICAgICBpbmxpbmVTY3JpcHRTb3VyY2VSZWdFeHAsXG4gICAgICAgIGlubGluZVNjcmlwdFNvdXJjZSxcbiAgICAgICAgc2NyaXB0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKTsgLy8gTGl2ZSBOb2RlTGlzdCBjb2xsZWN0aW9uXG4gIFxuICAgICAgaWYgKHNjcmlwdExvY2F0aW9uID09PSBjdXJyZW50TG9jYXRpb24pIHtcbiAgICAgICAgcGFnZVNvdXJjZSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vdXRlckhUTUw7XG4gICAgICAgIGlubGluZVNjcmlwdFNvdXJjZVJlZ0V4cCA9IG5ldyBSZWdFeHAoJyg/OlteXFxcXG5dKz9cXFxcbil7MCwnICsgKGxpbmUgLSAyKSArICd9W148XSo8c2NyaXB0PihbXFxcXGRcXFxcRF0qPyk8XFxcXC9zY3JpcHQ+W1xcXFxkXFxcXERdKicsICdpJyk7XG4gICAgICAgIGlubGluZVNjcmlwdFNvdXJjZSA9IHBhZ2VTb3VyY2UucmVwbGFjZShpbmxpbmVTY3JpcHRTb3VyY2VSZWdFeHAsICckMScpLnRyaW0oKTtcbiAgICAgIH1cbiAgXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgLy8gSWYgcmVhZHkgc3RhdGUgaXMgaW50ZXJhY3RpdmUsIHJldHVybiB0aGUgc2NyaXB0IHRhZ1xuICAgICAgICBpZiAoc2NyaXB0c1tpXS5yZWFkeVN0YXRlID09PSAnaW50ZXJhY3RpdmUnKSB7XG4gICAgICAgICAgcmV0dXJuIHNjcmlwdHNbaV07XG4gICAgICAgIH1cbiAgXG4gICAgICAgIC8vIElmIHNyYyBtYXRjaGVzLCByZXR1cm4gdGhlIHNjcmlwdCB0YWdcbiAgICAgICAgaWYgKHNjcmlwdHNbaV0uc3JjID09PSBzY3JpcHRMb2NhdGlvbikge1xuICAgICAgICAgIHJldHVybiBzY3JpcHRzW2ldO1xuICAgICAgICB9XG4gIFxuICAgICAgICAvLyBJZiBpbmxpbmUgc291cmNlIG1hdGNoZXMsIHJldHVybiB0aGUgc2NyaXB0IHRhZ1xuICAgICAgICBpZiAoXG4gICAgICAgICAgc2NyaXB0TG9jYXRpb24gPT09IGN1cnJlbnRMb2NhdGlvbiAmJlxuICAgICAgICAgIHNjcmlwdHNbaV0uaW5uZXJIVE1MICYmXG4gICAgICAgICAgc2NyaXB0c1tpXS5pbm5lckhUTUwudHJpbSgpID09PSBpbmxpbmVTY3JpcHRTb3VyY2VcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHNjcmlwdHNbaV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgXG4gICAgICAvLyBJZiBubyBtYXRjaCwgcmV0dXJuIG51bGxcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gZ2V0Q3VycmVudFNjcmlwdFxufSkpO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIjhiYmZcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidnVlXCIpO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gXCI5NWU2XCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImFwZXhjaGFydHNcIik7XG5cbi8qKiovIH0pLFxuXG4vKioqLyBcImZiMTVcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vLyBFU00gQ09NUEFUIEZMQUdcbl9fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9ub2RlX21vZHVsZXMvQHZ1ZS9jbGktc2VydmljZS9saWIvY29tbWFuZHMvYnVpbGQvc2V0UHVibGljUGF0aC5qc1xuLy8gVGhpcyBmaWxlIGlzIGltcG9ydGVkIGludG8gbGliL3djIGNsaWVudCBidW5kbGVzLlxuXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgdmFyIGN1cnJlbnRTY3JpcHQgPSB3aW5kb3cuZG9jdW1lbnQuY3VycmVudFNjcmlwdFxuICBpZiAodHJ1ZSkge1xuICAgIHZhciBnZXRDdXJyZW50U2NyaXB0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjg4NzVcIilcbiAgICBjdXJyZW50U2NyaXB0ID0gZ2V0Q3VycmVudFNjcmlwdCgpXG5cbiAgICAvLyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgYmVjYXVzZSBwcmV2aW91c2x5IHdlIGRpcmVjdGx5IGluY2x1ZGVkIHRoZSBwb2x5ZmlsbFxuICAgIGlmICghKCdjdXJyZW50U2NyaXB0JyBpbiBkb2N1bWVudCkpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ2N1cnJlbnRTY3JpcHQnLCB7IGdldDogZ2V0Q3VycmVudFNjcmlwdCB9KVxuICAgIH1cbiAgfVxuXG4gIHZhciBzcmMgPSBjdXJyZW50U2NyaXB0ICYmIGN1cnJlbnRTY3JpcHQuc3JjLm1hdGNoKC8oLitcXC8pW14vXStcXC5qcyhcXD8uKik/JC8pXG4gIGlmIChzcmMpIHtcbiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBzcmNbMV0gLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICB9XG59XG5cbi8vIEluZGljYXRlIHRvIHdlYnBhY2sgdGhhdCB0aGlzIGZpbGUgY2FuIGJlIGNvbmNhdGVuYXRlZFxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgc2V0UHVibGljUGF0aCA9IChudWxsKTtcblxuLy8gRVhURVJOQUwgTU9EVUxFOiBleHRlcm5hbCB7XCJjb21tb25qc1wiOlwidnVlXCIsXCJjb21tb25qczJcIjpcInZ1ZVwiLFwicm9vdFwiOlwiVnVlXCJ9XG52YXIgZXh0ZXJuYWxfY29tbW9uanNfdnVlX2NvbW1vbmpzMl92dWVfcm9vdF9WdWVfID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIjhiYmZcIik7XG5cbi8vIEVYVEVSTkFMIE1PRFVMRTogZXh0ZXJuYWwge1wicm9vdFwiOlwiQXBleENoYXJ0c1wiLFwiY29tbW9uanNcIjpcImFwZXhjaGFydHNcIixcImNvbW1vbmpzMlwiOlwiYXBleGNoYXJ0c1wifVxudmFyIGV4dGVybmFsX3Jvb3RfQXBleENoYXJ0c19jb21tb25qc19hcGV4Y2hhcnRzX2NvbW1vbmpzMl9hcGV4Y2hhcnRzXyA9IF9fd2VicGFja19yZXF1aXJlX18oXCI5NWU2XCIpO1xudmFyIGV4dGVybmFsX3Jvb3RfQXBleENoYXJ0c19jb21tb25qc19hcGV4Y2hhcnRzX2NvbW1vbmpzMl9hcGV4Y2hhcnRzX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGV4dGVybmFsX3Jvb3RfQXBleENoYXJ0c19jb21tb25qc19hcGV4Y2hhcnRzX2NvbW1vbmpzMl9hcGV4Y2hhcnRzXyk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vc3JjL3Z1ZTMtYXBleGNoYXJ0cy5qc1xuLyogZXNsaW50LWRpc2FibGUgKi9cblxuXG5cbi8vIGRlZmluZSBhbGwgZW1pdHRlZCBldmVudHMgaW4gb3JkZXIgdG8gYmV0dGVyXG4vLyBkb2N1bWVudCBob3cgdGhlIGNvbXBvbmVudCBzaG91bGQgd29ya1xuY29uc3QgZXZlbnRzID0gW1xuICBcImFuaW1hdGlvbkVuZFwiLFxuICBcImJlZm9yZU1vdW50XCIsXG4gIFwibW91bnRlZFwiLFxuICBcInVwZGF0ZWRcIixcbiAgXCJjbGlja1wiLFxuICBcIm1vdXNlTW92ZVwiLFxuICBcImxlZ2VuZENsaWNrXCIsXG4gIFwibWFya2VyQ2xpY2tcIixcbiAgXCJzZWxlY3Rpb25cIixcbiAgXCJkYXRhUG9pbnRTZWxlY3Rpb25cIixcbiAgXCJkYXRhUG9pbnRNb3VzZUVudGVyXCIsXG4gIFwiZGF0YVBvaW50TW91c2VMZWF2ZVwiLFxuICBcImJlZm9yZVpvb21cIixcbiAgXCJiZWZvcmVSZXNldFpvb21cIixcbiAgXCJ6b29tZWRcIixcbiAgXCJzY3JvbGxlZFwiLFxuICBcInNjcm9sbGVkXCJcbl07XG5cbmNvbnN0IHZ1ZUFwZXhjaGFydHMgPSBPYmplY3QoZXh0ZXJuYWxfY29tbW9uanNfdnVlX2NvbW1vbmpzMl92dWVfcm9vdF9WdWVfW1wiZGVmaW5lQ29tcG9uZW50XCJdKSh7XG4gIG5hbWU6IFwiYXBleGNoYXJ0XCIsXG4gIHByb3BzOiB7XG4gICAgb3B0aW9uczoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcbiAgICB0eXBlOiB7XG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIHNlcmllczoge1xuICAgICAgdHlwZTogQXJyYXksXG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH0sXG4gICAgd2lkdGg6IHtcbiAgICAgIGRlZmF1bHQ6IFwiMTAwJVwiXG4gICAgfSxcbiAgICBoZWlnaHQ6IHtcbiAgICAgIGRlZmF1bHQ6IFwiYXV0b1wiXG4gICAgfVxuICB9LFxuXG4gIC8vIGV2ZW50cyBlbWl0dGVkIGJ5IHRoaXMgY29tcG9uZW50XG4gIGVtaXRzOiBldmVudHMsXG5cbiAgc2V0dXAocHJvcHMsIHsgZW1pdCB9KSB7XG4gICAgY29uc3QgX19lbCA9IE9iamVjdChleHRlcm5hbF9jb21tb25qc192dWVfY29tbW9uanMyX3Z1ZV9yb290X1Z1ZV9bXCJyZWZcIl0pKG51bGwpO1xuICAgIGNvbnN0IGNoYXJ0ID0gT2JqZWN0KGV4dGVybmFsX2NvbW1vbmpzX3Z1ZV9jb21tb25qczJfdnVlX3Jvb3RfVnVlX1tcInJlZlwiXSkobnVsbCk7XG5cbiAgICBjb25zdCBpc09iamVjdCA9IGl0ZW0gPT4ge1xuICAgICAgcmV0dXJuIGl0ZW0gJiYgdHlwZW9mIGl0ZW0gPT09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkoaXRlbSkgJiYgaXRlbSAhPSBudWxsO1xuICAgIH07XG5cbiAgICBjb25zdCBleHRlbmQgPSAodGFyZ2V0LCBzb3VyY2UpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgT2JqZWN0LmFzc2lnbiAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIChmdW5jdGlvbigpIHtcbiAgICAgICAgICBPYmplY3QuYXNzaWduID0gZnVuY3Rpb24odGFyZ2V0KSB7XG4gICAgICAgICAgICAvLyBXZSBtdXN0IGNoZWNrIGFnYWluc3QgdGhlc2Ugc3BlY2lmaWMgY2FzZXMuXG4gICAgICAgICAgICBpZiAodGFyZ2V0ID09PSB1bmRlZmluZWQgfHwgdGFyZ2V0ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0byBvYmplY3RcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBvdXRwdXQgPSBPYmplY3QodGFyZ2V0KTtcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCBhcmd1bWVudHMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgIGxldCBzb3VyY2UgPSBhcmd1bWVudHNbaW5kZXhdO1xuICAgICAgICAgICAgICBpZiAoc291cmNlICE9PSB1bmRlZmluZWQgJiYgc291cmNlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgbmV4dEtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2UuaGFzT3duUHJvcGVydHkobmV4dEtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0W25leHRLZXldID0gc291cmNlW25leHRLZXldO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgICAgICB9O1xuICAgICAgICB9KSgpO1xuICAgICAgfVxuXG4gICAgICBsZXQgb3V0cHV0ID0gT2JqZWN0LmFzc2lnbih7fSwgdGFyZ2V0KTtcbiAgICAgIGlmIChpc09iamVjdCh0YXJnZXQpICYmIGlzT2JqZWN0KHNvdXJjZSkpIHtcbiAgICAgICAgT2JqZWN0LmtleXMoc291cmNlKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgaWYgKGlzT2JqZWN0KHNvdXJjZVtrZXldKSkge1xuICAgICAgICAgICAgaWYgKCEoa2V5IGluIHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihvdXRwdXQsIHtcbiAgICAgICAgICAgICAgICBba2V5XTogc291cmNlW2tleV1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvdXRwdXRba2V5XSA9IGV4dGVuZCh0YXJnZXRba2V5XSwgc291cmNlW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKG91dHB1dCwge1xuICAgICAgICAgICAgICBba2V5XTogc291cmNlW2tleV1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0cHV0O1xuICAgIH07XG5cbiAgICBjb25zdCBpbml0ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgT2JqZWN0KGV4dGVybmFsX2NvbW1vbmpzX3Z1ZV9jb21tb25qczJfdnVlX3Jvb3RfVnVlX1tcIm5leHRUaWNrXCJdKSgpO1xuXG4gICAgICBjb25zdCBuZXdPcHRpb25zID0ge1xuICAgICAgICBjaGFydDoge1xuICAgICAgICAgIHR5cGU6IHByb3BzLnR5cGUgfHwgcHJvcHMub3B0aW9ucy5jaGFydC50eXBlIHx8IFwibGluZVwiLFxuICAgICAgICAgIGhlaWdodDogcHJvcHMuaGVpZ2h0LFxuICAgICAgICAgIHdpZHRoOiBwcm9wcy53aWR0aCxcbiAgICAgICAgICBldmVudHM6IHt9XG4gICAgICAgIH0sXG4gICAgICAgIHNlcmllczogcHJvcHMuc2VyaWVzXG4gICAgICB9O1xuXG4gICAgICAvLyBlbWl0IGV2ZW50cyB0byB0aGUgcGFyZW50IGNvbXBvbmVudFxuICAgICAgLy8gdG8gYWxsb3cgZm9yIHR3by13YXkgZGF0YSBiaW5kaW5nXG4gICAgICBldmVudHMuZm9yRWFjaChldmVudCA9PiB7XG4gICAgICAgIGxldCBjYWxsYmFjayA9ICguLi5hcmdzKSA9PiBlbWl0KGV2ZW50LCAuLi5hcmdzKTsgLy8gYXJncyA9PiBjaGFydENvbnRleHQsIG9wdGlvbnNcbiAgICAgICAgbmV3T3B0aW9ucy5jaGFydC5ldmVudHNbZXZlbnRdID0gY2FsbGJhY2s7XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgY29uZmlnID0gZXh0ZW5kKHByb3BzLm9wdGlvbnMsIG5ld09wdGlvbnMpO1xuICAgICAgY2hhcnQudmFsdWUgPSBuZXcgZXh0ZXJuYWxfcm9vdF9BcGV4Q2hhcnRzX2NvbW1vbmpzX2FwZXhjaGFydHNfY29tbW9uanMyX2FwZXhjaGFydHNfZGVmYXVsdC5hKF9fZWwudmFsdWUsIGNvbmZpZyk7XG4gICAgICByZXR1cm4gY2hhcnQudmFsdWUucmVuZGVyKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlZnJlc2ggPSAoKSA9PiB7XG4gICAgICBkZXN0cm95KCk7XG4gICAgICByZXR1cm4gaW5pdCgpO1xuICAgIH07XG5cbiAgICBjb25zdCBkZXN0cm95ID0gKCkgPT4ge1xuICAgICAgY2hhcnQudmFsdWUuZGVzdHJveSgpO1xuICAgIH07XG5cbiAgICBjb25zdCB1cGRhdGVTZXJpZXMgPSAobmV3U2VyaWVzLCBhbmltYXRlKSA9PiB7XG4gICAgICByZXR1cm4gY2hhcnQudmFsdWUudXBkYXRlU2VyaWVzKG5ld1NlcmllcywgYW5pbWF0ZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZU9wdGlvbnMgPSAobmV3T3B0aW9ucywgcmVkcmF3UGF0aHMsIGFuaW1hdGUsIHVwZGF0ZVN5bmNlZENoYXJ0cykgPT4ge1xuICAgICAgcmV0dXJuIGNoYXJ0LnZhbHVlLnVwZGF0ZU9wdGlvbnMobmV3T3B0aW9ucywgcmVkcmF3UGF0aHMsIGFuaW1hdGUsIHVwZGF0ZVN5bmNlZENoYXJ0cyk7XG4gICAgfTtcblxuICAgIGNvbnN0IHRvZ2dsZVNlcmllcyA9IHNlcmllc05hbWUgPT4ge1xuICAgICAgcmV0dXJuIGNoYXJ0LnZhbHVlLnRvZ2dsZVNlcmllcyhzZXJpZXNOYW1lKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc2hvd1NlcmllcyA9IHNlcmllc05hbWUgPT4ge1xuICAgICAgY2hhcnQudmFsdWUuc2hvd1NlcmllcyhzZXJpZXNOYW1lKTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGlkZVNlcmllcyA9IHNlcmllc05hbWUgPT4ge1xuICAgICAgY2hhcnQudmFsdWUuaGlkZVNlcmllcyhzZXJpZXNOYW1lKTtcbiAgICB9O1xuXG4gICAgY29uc3QgYXBwZW5kU2VyaWVzID0gKG5ld1NlcmllcywgYW5pbWF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIGNoYXJ0LnZhbHVlLmFwcGVuZFNlcmllcyhuZXdTZXJpZXMsIGFuaW1hdGUpO1xuICAgIH07XG5cbiAgICBjb25zdCByZXNldFNlcmllcyA9ICgpID0+IHtcbiAgICAgIGNoYXJ0LnZhbHVlLnJlc2V0U2VyaWVzKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHRvZ2dsZURhdGFQb2ludFNlbGVjdGlvbiA9IChzZXJpZXNJbmRleCwgZGF0YVBvaW50SW5kZXgpID0+IHtcbiAgICAgIGNoYXJ0LnZhbHVlLnRvZ2dsZURhdGFQb2ludFNlbGVjdGlvbihzZXJpZXNJbmRleCwgZGF0YVBvaW50SW5kZXgpO1xuICAgIH07XG5cbiAgICBjb25zdCBhcHBlbmREYXRhID0gbmV3RGF0YSA9PiB7XG4gICAgICByZXR1cm4gY2hhcnQudmFsdWUuYXBwZW5kRGF0YShuZXdEYXRhKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgem9vbVggPSAoc3RhcnQsIGVuZCkgPT4ge1xuICAgICAgcmV0dXJuIGNoYXJ0LnZhbHVlLnpvb21YKHN0YXJ0LCBlbmQpO1xuICAgIH07XG5cbiAgICBjb25zdCBkYXRhVVJJID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIGNoYXJ0LnZhbHVlLmRhdGFVUkkoKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc2V0TG9jYWxlID0gbG9jYWxlTmFtZSA9PiB7XG4gICAgICByZXR1cm4gY2hhcnQudmFsdWUuc2V0TG9jYWxlKGxvY2FsZU5hbWUpO1xuICAgIH07XG5cbiAgICBjb25zdCBhZGRYYXhpc0Fubm90YXRpb24gPSAob3B0aW9ucywgcHVzaFRvTWVtb3J5KSA9PiB7XG4gICAgICBjaGFydC52YWx1ZS5hZGRYYXhpc0Fubm90YXRpb24ob3B0aW9ucywgcHVzaFRvTWVtb3J5KTtcbiAgICB9O1xuXG4gICAgY29uc3QgYWRkWWF4aXNBbm5vdGF0aW9uID0gKG9wdGlvbnMsIHB1c2hUb01lbW9yeSkgPT4ge1xuICAgICAgY2hhcnQudmFsdWUuYWRkWWF4aXNBbm5vdGF0aW9uKG9wdGlvbnMsIHB1c2hUb01lbW9yeSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGFkZFBvaW50QW5ub3RhdGlvbiA9IChvcHRpb25zLCBwdXNoVG9NZW1vcnkpID0+IHtcbiAgICAgIGNoYXJ0LnZhbHVlLmFkZFBvaW50QW5ub3RhdGlvbihvcHRpb25zLCBwdXNoVG9NZW1vcnkpO1xuICAgIH07XG5cbiAgICBjb25zdCByZW1vdmVBbm5vdGF0aW9uID0gKGlkLCBvcHRpb25zKSA9PiB7XG4gICAgICBjaGFydC52YWx1ZS5yZW1vdmVBbm5vdGF0aW9uKGlkLCBvcHRpb25zKTtcbiAgICB9O1xuXG4gICAgY29uc3QgY2xlYXJBbm5vdGF0aW9ucyA9ICgpID0+IHtcbiAgICAgIGNoYXJ0LnZhbHVlLmNsZWFyQW5ub3RhdGlvbnMoKTtcbiAgICB9O1xuXG4gICAgT2JqZWN0KGV4dGVybmFsX2NvbW1vbmpzX3Z1ZV9jb21tb25qczJfdnVlX3Jvb3RfVnVlX1tcIm9uQmVmb3JlTW91bnRcIl0pKCgpID0+IHtcbiAgICAgIHdpbmRvdy5BcGV4Q2hhcnRzID0gZXh0ZXJuYWxfcm9vdF9BcGV4Q2hhcnRzX2NvbW1vbmpzX2FwZXhjaGFydHNfY29tbW9uanMyX2FwZXhjaGFydHNfZGVmYXVsdC5hO1xuICAgIH0pO1xuXG4gICAgT2JqZWN0KGV4dGVybmFsX2NvbW1vbmpzX3Z1ZV9jb21tb25qczJfdnVlX3Jvb3RfVnVlX1tcIm9uTW91bnRlZFwiXSkoKCkgPT4ge1xuICAgICAgX19lbC52YWx1ZSA9IE9iamVjdChleHRlcm5hbF9jb21tb25qc192dWVfY29tbW9uanMyX3Z1ZV9yb290X1Z1ZV9bXCJnZXRDdXJyZW50SW5zdGFuY2VcIl0pKCkucHJveHkuJGVsO1xuICAgICAgaW5pdCgpO1xuICAgIH0pO1xuXG4gICAgT2JqZWN0KGV4dGVybmFsX2NvbW1vbmpzX3Z1ZV9jb21tb25qczJfdnVlX3Jvb3RfVnVlX1tcIm9uQmVmb3JlVW5tb3VudFwiXSkoKCkgPT4ge1xuICAgICAgaWYgKCFjaGFydC52YWx1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBkZXN0cm95KCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCByZWFjdGl2ZVByb3BzID0gT2JqZWN0KGV4dGVybmFsX2NvbW1vbmpzX3Z1ZV9jb21tb25qczJfdnVlX3Jvb3RfVnVlX1tcInRvUmVmc1wiXSkocHJvcHMpO1xuICAgIE9iamVjdChleHRlcm5hbF9jb21tb25qc192dWVfY29tbW9uanMyX3Z1ZV9yb290X1Z1ZV9bXCJ3YXRjaFwiXSkocmVhY3RpdmVQcm9wcy5vcHRpb25zLCAoKSA9PiB7XG4gICAgICBpZiAoIWNoYXJ0LnZhbHVlICYmIHByb3BzLm9wdGlvbnMpIHtcbiAgICAgICAgaW5pdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hhcnQudmFsdWUudXBkYXRlT3B0aW9ucyhwcm9wcy5vcHRpb25zKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdChleHRlcm5hbF9jb21tb25qc192dWVfY29tbW9uanMyX3Z1ZV9yb290X1Z1ZV9bXCJ3YXRjaFwiXSkoXG4gICAgICByZWFjdGl2ZVByb3BzLnNlcmllcyxcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKCFjaGFydC52YWx1ZSAmJiBwcm9wcy5zZXJpZXMpIHtcbiAgICAgICAgICBpbml0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2hhcnQudmFsdWUudXBkYXRlU2VyaWVzKHByb3BzLnNlcmllcyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGRlZXA6IHRydWUgfVxuICAgICk7XG5cbiAgICBPYmplY3QoZXh0ZXJuYWxfY29tbW9uanNfdnVlX2NvbW1vbmpzMl92dWVfcm9vdF9WdWVfW1wid2F0Y2hcIl0pKHJlYWN0aXZlUHJvcHMudHlwZSwgKCkgPT4ge1xuICAgICAgcmVmcmVzaCgpO1xuICAgIH0pO1xuXG4gICAgT2JqZWN0KGV4dGVybmFsX2NvbW1vbmpzX3Z1ZV9jb21tb25qczJfdnVlX3Jvb3RfVnVlX1tcIndhdGNoXCJdKShyZWFjdGl2ZVByb3BzLndpZHRoLCAoKSA9PiB7XG4gICAgICByZWZyZXNoKCk7XG4gICAgfSk7XG5cbiAgICBPYmplY3QoZXh0ZXJuYWxfY29tbW9uanNfdnVlX2NvbW1vbmpzMl92dWVfcm9vdF9WdWVfW1wid2F0Y2hcIl0pKHJlYWN0aXZlUHJvcHMuaGVpZ2h0LCAoKSA9PiB7XG4gICAgICByZWZyZXNoKCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY2hhcnQsXG4gICAgICBpbml0LFxuICAgICAgcmVmcmVzaCxcbiAgICAgIGRlc3Ryb3ksXG4gICAgICB1cGRhdGVPcHRpb25zLFxuICAgICAgdXBkYXRlU2VyaWVzLFxuICAgICAgdG9nZ2xlU2VyaWVzLFxuICAgICAgc2hvd1NlcmllcyxcbiAgICAgIGhpZGVTZXJpZXMsXG4gICAgICByZXNldFNlcmllcyxcbiAgICAgIHpvb21YLFxuICAgICAgdG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uLFxuICAgICAgYXBwZW5kRGF0YSxcbiAgICAgIGFwcGVuZFNlcmllcyxcbiAgICAgIGFkZFhheGlzQW5ub3RhdGlvbixcbiAgICAgIGFkZFlheGlzQW5ub3RhdGlvbixcbiAgICAgIGFkZFBvaW50QW5ub3RhdGlvbixcbiAgICAgIHJlbW92ZUFubm90YXRpb24sXG4gICAgICBjbGVhckFubm90YXRpb25zLFxuICAgICAgZGF0YVVSSVxuICAgIH07XG4gIH0sXG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiBPYmplY3QoZXh0ZXJuYWxfY29tbW9uanNfdnVlX2NvbW1vbmpzMl92dWVfcm9vdF9WdWVfW1wiaFwiXSkoXCJkaXZcIiwge1xuICAgICAgY2xhc3M6IFwidnVlLWFwZXhjaGFydHNcIixcbiAgICB9KTtcbiAgfVxufSk7XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHZ1ZTNfYXBleGNoYXJ0cyA9ICh2dWVBcGV4Y2hhcnRzKTtcblxuLy8gQ09OQ0FURU5BVEVEIE1PRFVMRTogLi9zcmMvaW5kZXguanNcbi8qIGVzbGludC1kaXNhYmxlICovXG5cblxuY29uc3QgaW5zdGFsbCA9IGFwcCA9PiB7XG4gIGFwcC5jb21wb25lbnQodnVlM19hcGV4Y2hhcnRzLm5hbWUsIHZ1ZTNfYXBleGNoYXJ0cyk7XG59O1xuXG52dWUzX2FwZXhjaGFydHMuaW5zdGFsbCA9IGluc3RhbGw7XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIHNyY18wID0gKHZ1ZTNfYXBleGNoYXJ0cyk7XG5cbi8vIENPTkNBVEVOQVRFRCBNT0RVTEU6IC4vbm9kZV9tb2R1bGVzL0B2dWUvY2xpLXNlcnZpY2UvbGliL2NvbW1hbmRzL2J1aWxkL2VudHJ5LWxpYi5qc1xuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIGVudHJ5X2xpYiA9IF9fd2VicGFja19leHBvcnRzX19bXCJkZWZhdWx0XCJdID0gKHNyY18wKTtcblxuXG5cbi8qKiovIH0pXG5cbi8qKioqKiovIH0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dnVlMy1hcGV4Y2hhcnRzLmNvbW1vbi5qcy5tYXAiLCJpbXBvcnQgeyBkZWZpbmVDb21wb25lbnQsIHJlYWN0aXZlLCByZWYsIGNvbXB1dGVkLCB3YXRjaCwgb3BlbkJsb2NrLCBjcmVhdGVFbGVtZW50QmxvY2ssIG5vcm1hbGl6ZVN0eWxlLCBjcmVhdGVFbGVtZW50Vk5vZGUsIHJlbmRlclNsb3QgfSBmcm9tICd2dWUnO1xuXG5mdW5jdGlvbiByYW5kb21TdHJpbmcoKSB7XG4gIHJldHVybiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDE2KS5zdWJzdHJpbmcoMik7XG59XG5cbnZhciBzY3JpcHQgPSBkZWZpbmVDb21wb25lbnQoe1xuICBwcm9wczoge1xuICAgIC8vIFNldHMgd2lkdGgvZGlhbWV0ZXIgb2YgdGhlIGlubmVyIHN0cm9rZS5cbiAgICBkaWFtZXRlcjoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogMjAwXG4gICAgfSxcbiAgICAvLyBTZXRzIHRoZSB0b3RhbCBzdGVwcy9wcm9ncmVzcyB0byB0aGUgZW5kLlxuICAgIHRvdGFsU3RlcHM6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgZGVmYXVsdDogMTBcbiAgICB9LFxuICAgIC8vIFNldHMgdGhlIGN1cnJlbnQgcHJvZ3Jlc3Mgb2YgdGhlIGlubmVyIHN0cm9rZS5cbiAgICBjb21wbGV0ZWRTdGVwczoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBkZWZhdWx0OiAwXG4gICAgfSxcbiAgICAvLyBTZXRzIHRoZSBzdGFydCBjb2xvciBvZiB0aGUgaW5uZXIgc3Ryb2tlIChncmFkaWVudCkuXG4gICAgc3RhcnRDb2xvcjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogXCIjMDBDNThFXCJcbiAgICB9LFxuICAgIC8vIFNldHMgdGhlIGVuZCBjb2xvciBvZiB0aGUgaW5uZXIgc3Ryb2tlIChncmFkaWVudCkuXG4gICAgc3RvcENvbG9yOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0OiBcIiMwMEUwQTFcIlxuICAgIH0sXG4gICAgLy8gU2V0cyB0aGUgY29sb3Igb2YgdGhlIGlubmVyIHN0cm9rZSB0byBiZSBhcHBsaWVkIHRvIHRoZSBzaGFwZS5cbiAgICBpbm5lclN0cm9rZUNvbG9yOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0OiBcIiMyRjQ5NUVcIlxuICAgIH0sXG4gICAgLy8gU2V0cyB0aGUgd2lkdGggb2YgdGhlIHN0cm9rZSB0byBiZSBhcHBsaWVkIHRvIHRoZSBzaGFwZS5cbiAgICAvLyBSZWFkIG1vcmU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NWRy9BdHRyaWJ1dGUvc3Ryb2tlLXdpZHRoXG4gICAgc3Ryb2tlV2lkdGg6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IDEwXG4gICAgfSxcbiAgICAvLyBTZXRzIHRoZSAgd2lkdGggb2YgdGhlIGlubmVyIHN0cm9rZSB0byBiZSBhcHBsaWVkIHRvIHRoZSBzaGFwZS5cbiAgICBpbm5lclN0cm9rZVdpZHRoOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0OiAxMFxuICAgIH0sXG4gICAgLy8gU2V0cyB0aGUgc2hhcGUgdG8gYmUgdXNlZCBhdCB0aGUgZW5kIG9mIHN0cm9rZWQuXG4gICAgLy8gUmVhZCBtb3JlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TVkcvQXR0cmlidXRlL3N0cm9rZS1saW5lY2FwXG4gICAgc3Ryb2tlTGluZWNhcDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogXCJyb3VuZFwiXG4gICAgfSxcbiAgICAvLyBTZXRzIGhvdyBsb25nIHRoZSBhbmltYXRpb24gc2hvdWxkIHRha2UgdG8gY29tcGxldGUgb25lIGN5Y2xlLlxuICAgIC8vIFJlYWQgbW9yZTogaHR0cHM6Ly93d3cudzNzY2hvb2xzLmNvbS9jc3NyZWYvY3NzM19wcl9hbmltYXRpb24tZHVyYXRpb24uYXNwXG4gICAgYW5pbWF0ZVNwZWVkOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0OiAxMDAwXG4gICAgfSxcbiAgICAvLyBTZXRzIHRoZSBmcmFtZXMgcGVyIHNlY29uZHMgdG8gdXBkYXRlIGlubmVyIHN0cm9rZSBhbmltYXRpb24uXG4gICAgZnBzOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0OiA2MFxuICAgIH0sXG4gICAgLy8gU2V0cyBob3cgdGhlIGFuaW1hdGlvbiBwcm9ncmVzc2VzIHRocm91Z2ggdGhlIGR1cmF0aW9uIG9mIGVhY2ggY3ljbGUuXG4gICAgLy8gUmVhZCBtb3JlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvblxuICAgIHRpbWluZ0Z1bmM6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IFwibGluZWFyXCJcbiAgICB9LFxuICAgIC8vIFNldHMgdGhlIGlubmVyIHN0cm9rZSBkaXJlY3Rpb24uXG4gICAgaXNDbG9ja3dpc2U6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfVxuICB9LFxuXG4gIHNldHVwKHByb3BzKSB7XG4gICAgY29uc3QgZ3JhZGllbnQgPSByZWFjdGl2ZSh7XG4gICAgICBmeDogMC45OSxcbiAgICAgIGZ5OiAwLjUsXG4gICAgICBjeDogMC41LFxuICAgICAgY3k6IDAuNSxcbiAgICAgIHI6IDAuNjVcbiAgICB9KTtcbiAgICBjb25zdCByYWRpYWxHcmFkaWVudElkID0gYHJnLSR7cmFuZG9tU3RyaW5nKCl9YDtcbiAgICBjb25zdCBzdHJva2VEYXNob2Zmc2V0ID0gcmVmKDApO1xuICAgIGNvbnN0IGN1cnJlbnRBbmdsZSA9IHJlZigwKTtcbiAgICBjb25zdCBncmFkaWVudEFuaW1hdGlvbiA9IHJlZihudWxsKTtcbiAgICBjb25zdCByYWRpdXMgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5kaWFtZXRlciAvIDIpO1xuICAgIGNvbnN0IGlubmVyQ2lyY2xlRGlhbWV0ZXIgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5kaWFtZXRlciAtIHByb3BzLmlubmVyU3Ryb2tlV2lkdGggKiAyKTtcbiAgICBjb25zdCBjaXJjdW1mZXJlbmNlID0gY29tcHV0ZWQoKCkgPT4gTWF0aC5QSSAqIGlubmVyQ2lyY2xlRGlhbWV0ZXIudmFsdWUpO1xuICAgIGNvbnN0IHN0ZXBTaXplID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMudG90YWxTdGVwcyA9PT0gMCA/IDAgOiAxMDAgLyBwcm9wcy50b3RhbFN0ZXBzKTtcbiAgICBjb25zdCBmaW5pc2hlZFBlcmNlbnRhZ2UgPSBjb21wdXRlZCgoKSA9PiBzdGVwU2l6ZS52YWx1ZSAqIHByb3BzLmNvbXBsZXRlZFN0ZXBzKTtcbiAgICBjb25zdCBjaXJjbGVTbGljZSA9IGNvbXB1dGVkKCgpID0+IDIgKiBNYXRoLlBJIC8gcHJvcHMudG90YWxTdGVwcyk7XG4gICAgY29uc3QgYW5pbWF0aW9uSW5jcmVtZW50cyA9IGNvbXB1dGVkKCgpID0+IDEwMCAvIHByb3BzLmZwcyk7XG4gICAgY29uc3QgdG90YWxQb2ludHMgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5hbmltYXRlU3BlZWQgLyBhbmltYXRpb25JbmNyZW1lbnRzLnZhbHVlKTtcbiAgICBjb25zdCBhbmltYXRlU2xpY2UgPSBjb21wdXRlZCgoKSA9PiBjaXJjbGVTbGljZS52YWx1ZSAvIHRvdGFsUG9pbnRzLnZhbHVlKTtcbiAgICBjb25zdCBpbm5lckNpcmNsZVJhZGl1cyA9IGNvbXB1dGVkKCgpID0+IGlubmVyQ2lyY2xlRGlhbWV0ZXIudmFsdWUgLyAyKTtcbiAgICBjb25zdCBjb250YWluZXJTdHlsZSA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgICBoZWlnaHQ6IGAke3Byb3BzLmRpYW1ldGVyfXB4YCxcbiAgICAgIHdpZHRoOiBgJHtwcm9wcy5kaWFtZXRlcn1weGBcbiAgICB9KSk7XG4gICAgY29uc3QgcHJvZ3Jlc3NTdHlsZSA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgICBoZWlnaHQ6IGAke3Byb3BzLmRpYW1ldGVyfXB4YCxcbiAgICAgIHdpZHRoOiBgJHtwcm9wcy5kaWFtZXRlcn1weGAsXG4gICAgICBzdHJva2VXaWR0aDogYCR7cHJvcHMuc3Ryb2tlV2lkdGh9cHhgLFxuICAgICAgc3Ryb2tlRGFzaG9mZnNldDogc3Ryb2tlRGFzaG9mZnNldC52YWx1ZSxcbiAgICAgIHRyYW5zaXRpb246IGBzdHJva2UtZGFzaG9mZnNldCAke3Byb3BzLmFuaW1hdGVTcGVlZH1tcyAke3Byb3BzLnRpbWluZ0Z1bmN9YFxuICAgIH0pKTtcbiAgICBjb25zdCBzdHJva2VTdHlsZSA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgICBoZWlnaHQ6IGAke3Byb3BzLmRpYW1ldGVyfXB4YCxcbiAgICAgIHdpZHRoOiBgJHtwcm9wcy5kaWFtZXRlcn1weGAsXG4gICAgICBzdHJva2VXaWR0aDogYCR7cHJvcHMuaW5uZXJTdHJva2VXaWR0aH1weGBcbiAgICB9KSk7XG4gICAgY29uc3QgaW5uZXJDaXJjbGVTdHlsZSA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgICB3aWR0aDogYCR7aW5uZXJDaXJjbGVEaWFtZXRlci52YWx1ZX1weGBcbiAgICB9KSk7XG4gICAgd2F0Y2goKCkgPT4gW3Byb3BzLmRpYW1ldGVyLCBwcm9wcy50b3RhbFN0ZXBzLCBwcm9wcy5jb21wbGV0ZWRTdGVwcywgcHJvcHMuc3Ryb2tlV2lkdGhdLCBjaGFuZ2VQcm9ncmVzcywge1xuICAgICAgaW1tZWRpYXRlOiB0cnVlXG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBnZXRQb2ludE9mQ2lyY2xlKGFuZ2xlKSB7XG4gICAgICBjb25zdCByYWRpdXMgPSAwLjU7XG4gICAgICBjb25zdCB4ID0gcmFkaXVzICsgcmFkaXVzICogTWF0aC5jb3MoYW5nbGUpO1xuICAgICAgY29uc3QgeSA9IHJhZGl1cyArIHJhZGl1cyAqIE1hdGguc2luKGFuZ2xlKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ290b1BvaW50KCkge1xuICAgICAgY29uc3QgcG9pbnQgPSBnZXRQb2ludE9mQ2lyY2xlKGN1cnJlbnRBbmdsZS52YWx1ZSk7XG5cbiAgICAgIGlmIChwb2ludC54ICYmIHBvaW50LnkpIHtcbiAgICAgICAgZ3JhZGllbnQuZnggPSBwb2ludC54O1xuICAgICAgICBncmFkaWVudC5meSA9IHBvaW50Lnk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGlyZWN0aW9uKCkge1xuICAgICAgcmV0dXJuIHByb3BzLmlzQ2xvY2t3aXNlID8gMSA6IC0xO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNoYW5nZVByb2dyZXNzKCkge1xuICAgICAgc3Ryb2tlRGFzaG9mZnNldC52YWx1ZSA9ICgxMDAgLSBmaW5pc2hlZFBlcmNlbnRhZ2UudmFsdWUpIC8gMTAwICogY2lyY3VtZmVyZW5jZS52YWx1ZSAqIGRpcmVjdGlvbigpO1xuXG4gICAgICBpZiAoZ3JhZGllbnRBbmltYXRpb24udmFsdWUpIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbChncmFkaWVudEFuaW1hdGlvbi52YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFuZ2xlT2Zmc2V0ID0gKHByb3BzLmNvbXBsZXRlZFN0ZXBzIC0gMSkgKiBjaXJjbGVTbGljZS52YWx1ZTtcbiAgICAgIGxldCBpID0gKGN1cnJlbnRBbmdsZS52YWx1ZSAtIGFuZ2xlT2Zmc2V0KSAvIGFuaW1hdGVTbGljZS52YWx1ZTtcbiAgICAgIGNvbnN0IGluY3JlbWVudGVyID0gTWF0aC5hYnMoaSAtIHRvdGFsUG9pbnRzLnZhbHVlKSAvIHRvdGFsUG9pbnRzLnZhbHVlO1xuICAgICAgY29uc3QgaXNNb3ZlRm9yd2FyZCA9IGkgPCB0b3RhbFBvaW50cy52YWx1ZTtcbiAgICAgIGdyYWRpZW50QW5pbWF0aW9uLnZhbHVlID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBpZiAoaXNNb3ZlRm9yd2FyZCAmJiBpID49IHRvdGFsUG9pbnRzLnZhbHVlIHx8ICFpc01vdmVGb3J3YXJkICYmIGkgPCB0b3RhbFBvaW50cy52YWx1ZSkge1xuICAgICAgICAgIGdyYWRpZW50QW5pbWF0aW9uLnZhbHVlICYmIGNsZWFySW50ZXJ2YWwoZ3JhZGllbnRBbmltYXRpb24udmFsdWUpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnRBbmdsZS52YWx1ZSA9IGFuZ2xlT2Zmc2V0ICsgYW5pbWF0ZVNsaWNlLnZhbHVlICogaTtcbiAgICAgICAgZ290b1BvaW50KCk7XG4gICAgICAgIGkgKz0gaXNNb3ZlRm9yd2FyZCA/IGluY3JlbWVudGVyIDogLWluY3JlbWVudGVyO1xuICAgICAgfSwgYW5pbWF0aW9uSW5jcmVtZW50cy52YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGdyYWRpZW50QW5pbWF0aW9uLFxuICAgICAgaW5uZXJDaXJjbGVSYWRpdXMsXG4gICAgICByYWRpYWxHcmFkaWVudElkLFxuICAgICAgc3Ryb2tlRGFzaG9mZnNldCxcbiAgICAgIGlubmVyQ2lyY2xlU3R5bGUsXG4gICAgICBjb250YWluZXJTdHlsZSxcbiAgICAgIGNpcmN1bWZlcmVuY2UsXG4gICAgICBwcm9ncmVzc1N0eWxlLFxuICAgICAgY3VycmVudEFuZ2xlLFxuICAgICAgc3Ryb2tlU3R5bGUsXG4gICAgICBncmFkaWVudCxcbiAgICAgIHJhZGl1c1xuICAgIH07XG4gIH1cblxufSk7XG5cbmNvbnN0IF9ob2lzdGVkXzEgPSBbXCJ3aWR0aFwiLCBcImhlaWdodFwiXTtcbmNvbnN0IF9ob2lzdGVkXzIgPSBbXCJpZFwiLCBcImZ4XCIsIFwiZnlcIiwgXCJjeFwiLCBcImN5XCIsIFwiclwiXTtcbmNvbnN0IF9ob2lzdGVkXzMgPSBbXCJzdG9wLWNvbG9yXCJdO1xuY29uc3QgX2hvaXN0ZWRfNCA9IFtcInN0b3AtY29sb3JcIl07XG5jb25zdCBfaG9pc3RlZF81ID0gW1wiclwiLCBcImN4XCIsIFwiY3lcIiwgXCJzdHJva2VcIiwgXCJzdHJva2UtZGFzaGFycmF5XCIsIFwic3Ryb2tlLWxpbmVjYXBcIl07XG5jb25zdCBfaG9pc3RlZF82ID0gW1widHJhbnNmb3JtXCIsIFwiclwiLCBcImN4XCIsIFwiY3lcIiwgXCJzdHJva2VcIiwgXCJzdHJva2UtZGFzaGFycmF5XCIsIFwic3Ryb2tlLWRhc2hvZmZzZXRcIiwgXCJzdHJva2UtbGluZWNhcFwiXTtcbmZ1bmN0aW9uIHJlbmRlcihfY3R4LCBfY2FjaGUsICRwcm9wcywgJHNldHVwLCAkZGF0YSwgJG9wdGlvbnMpIHtcbiAgcmV0dXJuIG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIiwge1xuICAgIGNsYXNzOiBcInZycF9fd3JhcHBlclwiLFxuICAgIHN0eWxlOiBub3JtYWxpemVTdHlsZShfY3R4LmNvbnRhaW5lclN0eWxlKVxuICB9LCBbY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsIHtcbiAgICBjbGFzczogXCJ2cnBfX2lubmVyXCIsXG4gICAgc3R5bGU6IG5vcm1hbGl6ZVN0eWxlKF9jdHguaW5uZXJDaXJjbGVTdHlsZSlcbiAgfSwgW3JlbmRlclNsb3QoX2N0eC4kc2xvdHMsIFwiZGVmYXVsdFwiKV0sIDQpLCAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhcInN2Z1wiLCB7XG4gICAgd2lkdGg6IF9jdHguZGlhbWV0ZXIsXG4gICAgaGVpZ2h0OiBfY3R4LmRpYW1ldGVyLFxuICAgIHZlcnNpb246IFwiMS4xXCIsXG4gICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICB9LCBbY3JlYXRlRWxlbWVudFZOb2RlKFwiZGVmc1wiLCBudWxsLCBbY3JlYXRlRWxlbWVudFZOb2RlKFwicmFkaWFsR3JhZGllbnRcIiwge1xuICAgIGlkOiBfY3R4LnJhZGlhbEdyYWRpZW50SWQsXG4gICAgZng6IF9jdHguZ3JhZGllbnQuZngsXG4gICAgZnk6IF9jdHguZ3JhZGllbnQuZnksXG4gICAgY3g6IF9jdHguZ3JhZGllbnQuY3gsXG4gICAgY3k6IF9jdHguZ3JhZGllbnQuY3ksXG4gICAgcjogX2N0eC5ncmFkaWVudC5yXG4gIH0sIFtjcmVhdGVFbGVtZW50Vk5vZGUoXCJzdG9wXCIsIHtcbiAgICBvZmZzZXQ6IFwiMzAlXCIsXG4gICAgXCJzdG9wLWNvbG9yXCI6IF9jdHguc3RhcnRDb2xvclxuICB9LCBudWxsLCA4LCBfaG9pc3RlZF8zKSwgY3JlYXRlRWxlbWVudFZOb2RlKFwic3RvcFwiLCB7XG4gICAgb2Zmc2V0OiBcIjEwMCVcIixcbiAgICBcInN0b3AtY29sb3JcIjogX2N0eC5zdG9wQ29sb3JcbiAgfSwgbnVsbCwgOCwgX2hvaXN0ZWRfNCldLCA4LCBfaG9pc3RlZF8yKV0pLCBjcmVhdGVFbGVtZW50Vk5vZGUoXCJjaXJjbGVcIiwge1xuICAgIHI6IF9jdHguaW5uZXJDaXJjbGVSYWRpdXMsXG4gICAgY3g6IF9jdHgucmFkaXVzLFxuICAgIGN5OiBfY3R4LnJhZGl1cyxcbiAgICBmaWxsOiBcInRyYW5zcGFyZW50XCIsXG4gICAgc3Ryb2tlOiBfY3R4LmlubmVyU3Ryb2tlQ29sb3IsXG4gICAgXCJzdHJva2UtZGFzaGFycmF5XCI6IF9jdHguY2lyY3VtZmVyZW5jZSxcbiAgICBcInN0cm9rZS1kYXNob2Zmc2V0XCI6IFwiMFwiLFxuICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogX2N0eC5zdHJva2VMaW5lY2FwLFxuICAgIHN0eWxlOiBub3JtYWxpemVTdHlsZShfY3R4LnN0cm9rZVN0eWxlKVxuICB9LCBudWxsLCAxMiwgX2hvaXN0ZWRfNSksIGNyZWF0ZUVsZW1lbnRWTm9kZShcImNpcmNsZVwiLCB7XG4gICAgdHJhbnNmb3JtOiAncm90YXRlKDI3MCwgJyArIF9jdHgucmFkaXVzICsgJywnICsgX2N0eC5yYWRpdXMgKyAnKScsXG4gICAgcjogX2N0eC5pbm5lckNpcmNsZVJhZGl1cyxcbiAgICBjeDogX2N0eC5yYWRpdXMsXG4gICAgY3k6IF9jdHgucmFkaXVzLFxuICAgIGZpbGw6IFwidHJhbnNwYXJlbnRcIixcbiAgICBzdHJva2U6IGB1cmwoJyMke19jdHgucmFkaWFsR3JhZGllbnRJZH0nKWAsXG4gICAgXCJzdHJva2UtZGFzaGFycmF5XCI6IF9jdHguY2lyY3VtZmVyZW5jZSxcbiAgICBcInN0cm9rZS1kYXNob2Zmc2V0XCI6IF9jdHguY2lyY3VtZmVyZW5jZSxcbiAgICBcInN0cm9rZS1saW5lY2FwXCI6IF9jdHguc3Ryb2tlTGluZWNhcCxcbiAgICBzdHlsZTogbm9ybWFsaXplU3R5bGUoX2N0eC5wcm9ncmVzc1N0eWxlKVxuICB9LCBudWxsLCAxMiwgX2hvaXN0ZWRfNildLCA4LCBfaG9pc3RlZF8xKSldLCA0KTtcbn1cblxuZnVuY3Rpb24gc3R5bGVJbmplY3QoY3NzLCByZWYpIHtcbiAgaWYgKCByZWYgPT09IHZvaWQgMCApIHJlZiA9IHt9O1xuICB2YXIgaW5zZXJ0QXQgPSByZWYuaW5zZXJ0QXQ7XG5cbiAgaWYgKCFjc3MgfHwgdHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykgeyByZXR1cm47IH1cblxuICB2YXIgaGVhZCA9IGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiAgdmFyIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgc3R5bGUudHlwZSA9ICd0ZXh0L2Nzcyc7XG5cbiAgaWYgKGluc2VydEF0ID09PSAndG9wJykge1xuICAgIGlmIChoZWFkLmZpcnN0Q2hpbGQpIHtcbiAgICAgIGhlYWQuaW5zZXJ0QmVmb3JlKHN0eWxlLCBoZWFkLmZpcnN0Q2hpbGQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gIH1cblxuICBpZiAoc3R5bGUuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxuXG52YXIgY3NzXzI0OHogPSBcIlxcbi52cnBfX3dyYXBwZXJbZGF0YS12LTZhMGNmMWY2XSB7XFxyXFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi52cnBfX2lubmVyW2RhdGEtdi02YTBjZjFmNl0ge1xcclxcbiAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgdG9wOiAwO1xcclxcbiAgcmlnaHQ6IDA7XFxyXFxuICBib3R0b206IDA7XFxyXFxuICBsZWZ0OiAwO1xcclxcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcclxcbiAgbWFyZ2luOiAwIGF1dG87XFxyXFxuICBkaXNwbGF5OiBmbGV4O1xcclxcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXHJcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxyXFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG59XFxyXFxuXCI7XG5zdHlsZUluamVjdChjc3NfMjQ4eik7XG5cbnNjcmlwdC5yZW5kZXIgPSByZW5kZXI7XG5zY3JpcHQuX19zY29wZUlkID0gXCJkYXRhLXYtNmEwY2YxZjZcIjtcblxuLy8gSUlGRSBpbmplY3RzIGluc3RhbGwgZnVuY3Rpb24gaW50byBjb21wb25lbnQsIGFsbG93aW5nIGNvbXBvbmVudFxuLy8gdG8gYmUgcmVnaXN0ZXJlZCB2aWEgVnVlLnVzZSgpIGFzIHdlbGwgYXMgVnVlLmNvbXBvbmVudCgpLFxuXG52YXIgZW50cnlfZXNtID0gLyojX19QVVJFX18qLygoKSA9PiB7XG4gIC8vIEFzc2lnbiBJbnN0YWxsYWJsZUNvbXBvbmVudCB0eXBlXG4gIGNvbnN0IGluc3RhbGxhYmxlID0gc2NyaXB0OyAvLyBBdHRhY2ggaW5zdGFsbCBmdW5jdGlvbiBleGVjdXRlZCBieSBWdWUudXNlKClcblxuICBpbnN0YWxsYWJsZS5pbnN0YWxsID0gYXBwID0+IHtcbiAgICBhcHAuY29tcG9uZW50KFwiUmFkaWFsUHJvZ3Jlc3NCYXJcIiwgaW5zdGFsbGFibGUpO1xuICB9O1xuXG4gIHJldHVybiBpbnN0YWxsYWJsZTtcbn0pKCk7IC8vIEl0J3MgcG9zc2libGUgdG8gZXhwb3NlIG5hbWVkIGV4cG9ydHMgd2hlbiB3cml0aW5nIGNvbXBvbmVudHMgdGhhdCBjYW5cbi8vIGFsc28gYmUgdXNlZCBhcyBkaXJlY3RpdmVzLCBldGMuIC0gZWcuIGltcG9ydCB7IFJvbGx1cERlbW9EaXJlY3RpdmUgfSBmcm9tICdyb2xsdXAtZGVtbyc7XG4vLyBleHBvcnQgY29uc3QgUm9sbHVwRGVtb0RpcmVjdGl2ZSA9IGRpcmVjdGl2ZTtcblxuZXhwb3J0IHsgZW50cnlfZXNtIGFzIGRlZmF1bHQgfTtcbiIsIiFmdW5jdGlvbihlLHQpe1wib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcIm9iamVjdFwiPT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPXQoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFtdLHQpOlwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHMuVnVlU21vb3RoU2Nyb2xsPXQoKTplLlZ1ZVNtb290aFNjcm9sbD10KCl9KHRoaXMsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Z1bmN0aW9uIG4obyl7aWYodFtvXSlyZXR1cm4gdFtvXS5leHBvcnRzO3ZhciByPXRbb109e2k6byxsOiExLGV4cG9ydHM6e319O3JldHVybiBlW29dLmNhbGwoci5leHBvcnRzLHIsci5leHBvcnRzLG4pLHIubD0hMCxyLmV4cG9ydHN9cmV0dXJuIG4ubT1lLG4uYz10LG4uZD1mdW5jdGlvbihlLHQsbyl7bi5vKGUsdCl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2VudW1lcmFibGU6ITAsZ2V0Om99KX0sbi5yPWZ1bmN0aW9uKGUpe1widW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZTpcIk1vZHVsZVwifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9LG4udD1mdW5jdGlvbihlLHQpe2lmKDEmdCYmKGU9bihlKSksOCZ0KXJldHVybiBlO2lmKDQmdCYmXCJvYmplY3RcIj09dHlwZW9mIGUmJmUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgbz1PYmplY3QuY3JlYXRlKG51bGwpO2lmKG4ucihvKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobyxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTplfSksMiZ0JiZcInN0cmluZ1wiIT10eXBlb2YgZSlmb3IodmFyIHIgaW4gZSluLmQobyxyLGZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfS5iaW5kKG51bGwscikpO3JldHVybiBvfSxuLm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmZS5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGUuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0dXJuIG4uZCh0LFwiYVwiLHQpLHR9LG4ubz1mdW5jdGlvbihlLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KX0sbi5wPVwiXCIsbihuLnM9MCl9KFtmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbyhlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gcihlKXtyZXR1cm4ocj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSkoZSl9dmFyIGk7bi5yKHQpO3ZhciB1PWZ1bmN0aW9uKGUpe3JldHVybiBlPC41PzQqZSplKmU6KGUtMSkqKDIqZS0yKSooMiplLTIpKzF9LGM9ZnVuY3Rpb24oKXtyZXR1cm57ZHVyYXRpb246NTAwLG9mZnNldDowLGNvbnRhaW5lcjp3aW5kb3csdXBkYXRlSGlzdG9yeTohMCxlYXNpbmdGdW5jdGlvbjpudWxsfX0sbD1TeW1ib2woXCJzbW9vdGhTY3JvbGxDdHhcIiksZj1mdW5jdGlvbihlKXt2YXIgdD1lLnNjcm9sbFRvLG49ZS5vZmZzZXQsbz1lLmR1cmF0aW9uLHI9ZS5jb250YWluZXIsYz1lLnVwZGF0ZUhpc3RvcnksbD1lLmhhc2gsZj1lLmVhc2luZ0Z1bmN0aW9uO2l8fChpPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fGZ1bmN0aW9uKGUpe3JldHVybiB3aW5kb3cuc2V0VGltZW91dChlLDE2KX0pLGMmJndpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSYmbG9jYXRpb24uaGFzaCE9PWwmJndpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShcIlwiLFwiXCIsbCk7dmFyIGEscyxkPVwibnVtYmVyXCI9PXR5cGVvZiB0LHA9ci5zY3JvbGxUb3B8fHdpbmRvdy5wYWdlWU9mZnNldCx5PShkP3Q6KHM9cCxcIkhUTUxcIj09PShhPXQpLm5vZGVOYW1lPy1zOmEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wK3MpKStuLGI9XCJmdW5jdGlvblwiPT10eXBlb2YgZj9mOnUsbT1EYXRlLm5vdygpOyFmdW5jdGlvbiBlKCl7dmFyIG49RGF0ZS5ub3coKS1tLHU9bjxvLGw9dT9wKyh5LXApKmIobi9vKTp5O3U/aShlKTpjJiYhZCYmbG9jYXRpb24ucmVwbGFjZShcIiNcIit0LmlkKSxyPT09d2luZG93P3Iuc2Nyb2xsVG8oMCxsKTpyLnNjcm9sbFRvcD1sfSgpfSxhPXtpbnN0YWxsOmZ1bmN0aW9uKGUsdCl7dmFyIG4saT0hZS52ZXJzaW9uLnN0YXJ0c1dpdGgoXCIzXCIpLHU9ZnVuY3Rpb24oKXtyZXR1cm4gdD9PYmplY3QuYXNzaWduKGMoKSx0KTpjKCl9O2UuZGlyZWN0aXZlKFwic21vb3RoLXNjcm9sbFwiLChvKG49e30saT9cImluc2VydGVkXCI6XCJtb3VudGVkXCIsKGZ1bmN0aW9uKGUsdCxuKXtpZihcIm9iamVjdFwiPT09KFwidW5kZWZpbmVkXCI9PXR5cGVvZiB3aW5kb3c/XCJ1bmRlZmluZWRcIjpyKHdpbmRvdykpJiZ2b2lkIDAhPT13aW5kb3cucGFnZVlPZmZzZXQpe3ZhciBvPU9iamVjdC5hc3NpZ24odSgpLHQudmFsdWUpO1wic3RyaW5nXCI9PXR5cGVvZiBvLmNvbnRhaW5lciYmKG8uY29udGFpbmVyPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioby5jb250YWluZXIpKTt2YXIgYz1mdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCk7dmFyIHQ9aT9uLmRhdGEuYXR0cnMuaHJlZjpuLnByb3BzLmhyZWYscj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0LnN1YnN0cmluZygxKSk7ciYmZihPYmplY3QuYXNzaWduKG8se3Njcm9sbFRvOnIsaGFzaDp0fSkpfTtlLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLGMpLGVbbF09e2NsaWNrSGFuZGxlcjpjfX19KSksbyhuLGk/XCJ1bmJpbmRcIjpcInVubW91bnRlZFwiLChmdW5jdGlvbihlKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLGVbbF0uY2xpY2tIYW5kbGVyKSxlW2xdPW51bGx9KSksbikpO3ZhciBhPWZ1bmN0aW9uKGUpe3ZhciB0PU9iamVjdC5hc3NpZ24odSgpLGUpO3JldHVybiBmKHQpfTsoaT9lLnByb3RvdHlwZTplLmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzKS4kc21vb3RoU2Nyb2xsPWEsaXx8ZS5wcm92aWRlKFwic21vb3RoU2Nyb2xsXCIsYSl9fTt0LmRlZmF1bHQ9YX1dKS5kZWZhdWx0fSkpOyIsIi8qIVxuICogdnVleCB2NC4wLjJcbiAqIChjKSAyMDIxIEV2YW4gWW91XG4gKiBAbGljZW5zZSBNSVRcbiAqL1xuaW1wb3J0IHsgaW5qZWN0LCByZWFjdGl2ZSwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuaW1wb3J0IHsgc2V0dXBEZXZ0b29sc1BsdWdpbiB9IGZyb20gJ0B2dWUvZGV2dG9vbHMtYXBpJztcblxudmFyIHN0b3JlS2V5ID0gJ3N0b3JlJztcblxuZnVuY3Rpb24gdXNlU3RvcmUgKGtleSkge1xuICBpZiAoIGtleSA9PT0gdm9pZCAwICkga2V5ID0gbnVsbDtcblxuICByZXR1cm4gaW5qZWN0KGtleSAhPT0gbnVsbCA/IGtleSA6IHN0b3JlS2V5KVxufVxuXG4vKipcbiAqIEdldCB0aGUgZmlyc3QgaXRlbSB0aGF0IHBhc3MgdGhlIHRlc3RcbiAqIGJ5IHNlY29uZCBhcmd1bWVudCBmdW5jdGlvblxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGxpc3RcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZcbiAqIEByZXR1cm4geyp9XG4gKi9cbmZ1bmN0aW9uIGZpbmQgKGxpc3QsIGYpIHtcbiAgcmV0dXJuIGxpc3QuZmlsdGVyKGYpWzBdXG59XG5cbi8qKlxuICogRGVlcCBjb3B5IHRoZSBnaXZlbiBvYmplY3QgY29uc2lkZXJpbmcgY2lyY3VsYXIgc3RydWN0dXJlLlxuICogVGhpcyBmdW5jdGlvbiBjYWNoZXMgYWxsIG5lc3RlZCBvYmplY3RzIGFuZCBpdHMgY29waWVzLlxuICogSWYgaXQgZGV0ZWN0cyBjaXJjdWxhciBzdHJ1Y3R1cmUsIHVzZSBjYWNoZWQgY29weSB0byBhdm9pZCBpbmZpbml0ZSBsb29wLlxuICpcbiAqIEBwYXJhbSB7Kn0gb2JqXG4gKiBAcGFyYW0ge0FycmF5PE9iamVjdD59IGNhY2hlXG4gKiBAcmV0dXJuIHsqfVxuICovXG5mdW5jdGlvbiBkZWVwQ29weSAob2JqLCBjYWNoZSkge1xuICBpZiAoIGNhY2hlID09PSB2b2lkIDAgKSBjYWNoZSA9IFtdO1xuXG4gIC8vIGp1c3QgcmV0dXJuIGlmIG9iaiBpcyBpbW11dGFibGUgdmFsdWVcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBvYmpcbiAgfVxuXG4gIC8vIGlmIG9iaiBpcyBoaXQsIGl0IGlzIGluIGNpcmN1bGFyIHN0cnVjdHVyZVxuICB2YXIgaGl0ID0gZmluZChjYWNoZSwgZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGMub3JpZ2luYWwgPT09IG9iajsgfSk7XG4gIGlmIChoaXQpIHtcbiAgICByZXR1cm4gaGl0LmNvcHlcbiAgfVxuXG4gIHZhciBjb3B5ID0gQXJyYXkuaXNBcnJheShvYmopID8gW10gOiB7fTtcbiAgLy8gcHV0IHRoZSBjb3B5IGludG8gY2FjaGUgYXQgZmlyc3RcbiAgLy8gYmVjYXVzZSB3ZSB3YW50IHRvIHJlZmVyIGl0IGluIHJlY3Vyc2l2ZSBkZWVwQ29weVxuICBjYWNoZS5wdXNoKHtcbiAgICBvcmlnaW5hbDogb2JqLFxuICAgIGNvcHk6IGNvcHlcbiAgfSk7XG5cbiAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBjb3B5W2tleV0gPSBkZWVwQ29weShvYmpba2V5XSwgY2FjaGUpO1xuICB9KTtcblxuICByZXR1cm4gY29weVxufVxuXG4vKipcbiAqIGZvckVhY2ggZm9yIG9iamVjdFxuICovXG5mdW5jdGlvbiBmb3JFYWNoVmFsdWUgKG9iaiwgZm4pIHtcbiAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIGZuKG9ialtrZXldLCBrZXkpOyB9KTtcbn1cblxuZnVuY3Rpb24gaXNPYmplY3QgKG9iaikge1xuICByZXR1cm4gb2JqICE9PSBudWxsICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnXG59XG5cbmZ1bmN0aW9uIGlzUHJvbWlzZSAodmFsKSB7XG4gIHJldHVybiB2YWwgJiYgdHlwZW9mIHZhbC50aGVuID09PSAnZnVuY3Rpb24nXG59XG5cbmZ1bmN0aW9uIGFzc2VydCAoY29uZGl0aW9uLCBtc2cpIHtcbiAgaWYgKCFjb25kaXRpb24pIHsgdGhyb3cgbmV3IEVycm9yKChcIlt2dWV4XSBcIiArIG1zZykpIH1cbn1cblxuZnVuY3Rpb24gcGFydGlhbCAoZm4sIGFyZykge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmbihhcmcpXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuZXJpY1N1YnNjcmliZSAoZm4sIHN1YnMsIG9wdGlvbnMpIHtcbiAgaWYgKHN1YnMuaW5kZXhPZihmbikgPCAwKSB7XG4gICAgb3B0aW9ucyAmJiBvcHRpb25zLnByZXBlbmRcbiAgICAgID8gc3Vicy51bnNoaWZ0KGZuKVxuICAgICAgOiBzdWJzLnB1c2goZm4pO1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGkgPSBzdWJzLmluZGV4T2YoZm4pO1xuICAgIGlmIChpID4gLTEpIHtcbiAgICAgIHN1YnMuc3BsaWNlKGksIDEpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZXNldFN0b3JlIChzdG9yZSwgaG90KSB7XG4gIHN0b3JlLl9hY3Rpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgc3RvcmUuX211dGF0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHN0b3JlLl93cmFwcGVkR2V0dGVycyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHN0b3JlLl9tb2R1bGVzTmFtZXNwYWNlTWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdmFyIHN0YXRlID0gc3RvcmUuc3RhdGU7XG4gIC8vIGluaXQgYWxsIG1vZHVsZXNcbiAgaW5zdGFsbE1vZHVsZShzdG9yZSwgc3RhdGUsIFtdLCBzdG9yZS5fbW9kdWxlcy5yb290LCB0cnVlKTtcbiAgLy8gcmVzZXQgc3RhdGVcbiAgcmVzZXRTdG9yZVN0YXRlKHN0b3JlLCBzdGF0ZSwgaG90KTtcbn1cblxuZnVuY3Rpb24gcmVzZXRTdG9yZVN0YXRlIChzdG9yZSwgc3RhdGUsIGhvdCkge1xuICB2YXIgb2xkU3RhdGUgPSBzdG9yZS5fc3RhdGU7XG5cbiAgLy8gYmluZCBzdG9yZSBwdWJsaWMgZ2V0dGVyc1xuICBzdG9yZS5nZXR0ZXJzID0ge307XG4gIC8vIHJlc2V0IGxvY2FsIGdldHRlcnMgY2FjaGVcbiAgc3RvcmUuX21ha2VMb2NhbEdldHRlcnNDYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHZhciB3cmFwcGVkR2V0dGVycyA9IHN0b3JlLl93cmFwcGVkR2V0dGVycztcbiAgdmFyIGNvbXB1dGVkT2JqID0ge307XG4gIGZvckVhY2hWYWx1ZSh3cmFwcGVkR2V0dGVycywgZnVuY3Rpb24gKGZuLCBrZXkpIHtcbiAgICAvLyB1c2UgY29tcHV0ZWQgdG8gbGV2ZXJhZ2UgaXRzIGxhenktY2FjaGluZyBtZWNoYW5pc21cbiAgICAvLyBkaXJlY3QgaW5saW5lIGZ1bmN0aW9uIHVzZSB3aWxsIGxlYWQgdG8gY2xvc3VyZSBwcmVzZXJ2aW5nIG9sZFN0YXRlLlxuICAgIC8vIHVzaW5nIHBhcnRpYWwgdG8gcmV0dXJuIGZ1bmN0aW9uIHdpdGggb25seSBhcmd1bWVudHMgcHJlc2VydmVkIGluIGNsb3N1cmUgZW52aXJvbm1lbnQuXG4gICAgY29tcHV0ZWRPYmpba2V5XSA9IHBhcnRpYWwoZm4sIHN0b3JlKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3RvcmUuZ2V0dGVycywga2V5LCB7XG4gICAgICAvLyBUT0RPOiB1c2UgYGNvbXB1dGVkYCB3aGVuIGl0J3MgcG9zc2libGUuIGF0IHRoZSBtb21lbnQgd2UgY2FuJ3QgZHVlIHRvXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVleC9wdWxsLzE4ODNcbiAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gY29tcHV0ZWRPYmpba2V5XSgpOyB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSAvLyBmb3IgbG9jYWwgZ2V0dGVyc1xuICAgIH0pO1xuICB9KTtcblxuICBzdG9yZS5fc3RhdGUgPSByZWFjdGl2ZSh7XG4gICAgZGF0YTogc3RhdGVcbiAgfSk7XG5cbiAgLy8gZW5hYmxlIHN0cmljdCBtb2RlIGZvciBuZXcgc3RhdGVcbiAgaWYgKHN0b3JlLnN0cmljdCkge1xuICAgIGVuYWJsZVN0cmljdE1vZGUoc3RvcmUpO1xuICB9XG5cbiAgaWYgKG9sZFN0YXRlKSB7XG4gICAgaWYgKGhvdCkge1xuICAgICAgLy8gZGlzcGF0Y2ggY2hhbmdlcyBpbiBhbGwgc3Vic2NyaWJlZCB3YXRjaGVyc1xuICAgICAgLy8gdG8gZm9yY2UgZ2V0dGVyIHJlLWV2YWx1YXRpb24gZm9yIGhvdCByZWxvYWRpbmcuXG4gICAgICBzdG9yZS5fd2l0aENvbW1pdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIG9sZFN0YXRlLmRhdGEgPSBudWxsO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGluc3RhbGxNb2R1bGUgKHN0b3JlLCByb290U3RhdGUsIHBhdGgsIG1vZHVsZSwgaG90KSB7XG4gIHZhciBpc1Jvb3QgPSAhcGF0aC5sZW5ndGg7XG4gIHZhciBuYW1lc3BhY2UgPSBzdG9yZS5fbW9kdWxlcy5nZXROYW1lc3BhY2UocGF0aCk7XG5cbiAgLy8gcmVnaXN0ZXIgaW4gbmFtZXNwYWNlIG1hcFxuICBpZiAobW9kdWxlLm5hbWVzcGFjZWQpIHtcbiAgICBpZiAoc3RvcmUuX21vZHVsZXNOYW1lc3BhY2VNYXBbbmFtZXNwYWNlXSAmJiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoKFwiW3Z1ZXhdIGR1cGxpY2F0ZSBuYW1lc3BhY2UgXCIgKyBuYW1lc3BhY2UgKyBcIiBmb3IgdGhlIG5hbWVzcGFjZWQgbW9kdWxlIFwiICsgKHBhdGguam9pbignLycpKSkpO1xuICAgIH1cbiAgICBzdG9yZS5fbW9kdWxlc05hbWVzcGFjZU1hcFtuYW1lc3BhY2VdID0gbW9kdWxlO1xuICB9XG5cbiAgLy8gc2V0IHN0YXRlXG4gIGlmICghaXNSb290ICYmICFob3QpIHtcbiAgICB2YXIgcGFyZW50U3RhdGUgPSBnZXROZXN0ZWRTdGF0ZShyb290U3RhdGUsIHBhdGguc2xpY2UoMCwgLTEpKTtcbiAgICB2YXIgbW9kdWxlTmFtZSA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcbiAgICBzdG9yZS5fd2l0aENvbW1pdChmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICAgIGlmIChtb2R1bGVOYW1lIGluIHBhcmVudFN0YXRlKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgKFwiW3Z1ZXhdIHN0YXRlIGZpZWxkIFxcXCJcIiArIG1vZHVsZU5hbWUgKyBcIlxcXCIgd2FzIG92ZXJyaWRkZW4gYnkgYSBtb2R1bGUgd2l0aCB0aGUgc2FtZSBuYW1lIGF0IFxcXCJcIiArIChwYXRoLmpvaW4oJy4nKSkgKyBcIlxcXCJcIilcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBwYXJlbnRTdGF0ZVttb2R1bGVOYW1lXSA9IG1vZHVsZS5zdGF0ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhciBsb2NhbCA9IG1vZHVsZS5jb250ZXh0ID0gbWFrZUxvY2FsQ29udGV4dChzdG9yZSwgbmFtZXNwYWNlLCBwYXRoKTtcblxuICBtb2R1bGUuZm9yRWFjaE11dGF0aW9uKGZ1bmN0aW9uIChtdXRhdGlvbiwga2V5KSB7XG4gICAgdmFyIG5hbWVzcGFjZWRUeXBlID0gbmFtZXNwYWNlICsga2V5O1xuICAgIHJlZ2lzdGVyTXV0YXRpb24oc3RvcmUsIG5hbWVzcGFjZWRUeXBlLCBtdXRhdGlvbiwgbG9jYWwpO1xuICB9KTtcblxuICBtb2R1bGUuZm9yRWFjaEFjdGlvbihmdW5jdGlvbiAoYWN0aW9uLCBrZXkpIHtcbiAgICB2YXIgdHlwZSA9IGFjdGlvbi5yb290ID8ga2V5IDogbmFtZXNwYWNlICsga2V5O1xuICAgIHZhciBoYW5kbGVyID0gYWN0aW9uLmhhbmRsZXIgfHwgYWN0aW9uO1xuICAgIHJlZ2lzdGVyQWN0aW9uKHN0b3JlLCB0eXBlLCBoYW5kbGVyLCBsb2NhbCk7XG4gIH0pO1xuXG4gIG1vZHVsZS5mb3JFYWNoR2V0dGVyKGZ1bmN0aW9uIChnZXR0ZXIsIGtleSkge1xuICAgIHZhciBuYW1lc3BhY2VkVHlwZSA9IG5hbWVzcGFjZSArIGtleTtcbiAgICByZWdpc3RlckdldHRlcihzdG9yZSwgbmFtZXNwYWNlZFR5cGUsIGdldHRlciwgbG9jYWwpO1xuICB9KTtcblxuICBtb2R1bGUuZm9yRWFjaENoaWxkKGZ1bmN0aW9uIChjaGlsZCwga2V5KSB7XG4gICAgaW5zdGFsbE1vZHVsZShzdG9yZSwgcm9vdFN0YXRlLCBwYXRoLmNvbmNhdChrZXkpLCBjaGlsZCwgaG90KTtcbiAgfSk7XG59XG5cbi8qKlxuICogbWFrZSBsb2NhbGl6ZWQgZGlzcGF0Y2gsIGNvbW1pdCwgZ2V0dGVycyBhbmQgc3RhdGVcbiAqIGlmIHRoZXJlIGlzIG5vIG5hbWVzcGFjZSwganVzdCB1c2Ugcm9vdCBvbmVzXG4gKi9cbmZ1bmN0aW9uIG1ha2VMb2NhbENvbnRleHQgKHN0b3JlLCBuYW1lc3BhY2UsIHBhdGgpIHtcbiAgdmFyIG5vTmFtZXNwYWNlID0gbmFtZXNwYWNlID09PSAnJztcblxuICB2YXIgbG9jYWwgPSB7XG4gICAgZGlzcGF0Y2g6IG5vTmFtZXNwYWNlID8gc3RvcmUuZGlzcGF0Y2ggOiBmdW5jdGlvbiAoX3R5cGUsIF9wYXlsb2FkLCBfb3B0aW9ucykge1xuICAgICAgdmFyIGFyZ3MgPSB1bmlmeU9iamVjdFN0eWxlKF90eXBlLCBfcGF5bG9hZCwgX29wdGlvbnMpO1xuICAgICAgdmFyIHBheWxvYWQgPSBhcmdzLnBheWxvYWQ7XG4gICAgICB2YXIgb3B0aW9ucyA9IGFyZ3Mub3B0aW9ucztcbiAgICAgIHZhciB0eXBlID0gYXJncy50eXBlO1xuXG4gICAgICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMucm9vdCkge1xuICAgICAgICB0eXBlID0gbmFtZXNwYWNlICsgdHlwZTtcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhc3RvcmUuX2FjdGlvbnNbdHlwZV0pIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSB1bmtub3duIGxvY2FsIGFjdGlvbiB0eXBlOiBcIiArIChhcmdzLnR5cGUpICsgXCIsIGdsb2JhbCB0eXBlOiBcIiArIHR5cGUpKTtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gc3RvcmUuZGlzcGF0Y2godHlwZSwgcGF5bG9hZClcbiAgICB9LFxuXG4gICAgY29tbWl0OiBub05hbWVzcGFjZSA/IHN0b3JlLmNvbW1pdCA6IGZ1bmN0aW9uIChfdHlwZSwgX3BheWxvYWQsIF9vcHRpb25zKSB7XG4gICAgICB2YXIgYXJncyA9IHVuaWZ5T2JqZWN0U3R5bGUoX3R5cGUsIF9wYXlsb2FkLCBfb3B0aW9ucyk7XG4gICAgICB2YXIgcGF5bG9hZCA9IGFyZ3MucGF5bG9hZDtcbiAgICAgIHZhciBvcHRpb25zID0gYXJncy5vcHRpb25zO1xuICAgICAgdmFyIHR5cGUgPSBhcmdzLnR5cGU7XG5cbiAgICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5yb290KSB7XG4gICAgICAgIHR5cGUgPSBuYW1lc3BhY2UgKyB0eXBlO1xuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFzdG9yZS5fbXV0YXRpb25zW3R5cGVdKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcigoXCJbdnVleF0gdW5rbm93biBsb2NhbCBtdXRhdGlvbiB0eXBlOiBcIiArIChhcmdzLnR5cGUpICsgXCIsIGdsb2JhbCB0eXBlOiBcIiArIHR5cGUpKTtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzdG9yZS5jb21taXQodHlwZSwgcGF5bG9hZCwgb3B0aW9ucyk7XG4gICAgfVxuICB9O1xuXG4gIC8vIGdldHRlcnMgYW5kIHN0YXRlIG9iamVjdCBtdXN0IGJlIGdvdHRlbiBsYXppbHlcbiAgLy8gYmVjYXVzZSB0aGV5IHdpbGwgYmUgY2hhbmdlZCBieSBzdGF0ZSB1cGRhdGVcbiAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobG9jYWwsIHtcbiAgICBnZXR0ZXJzOiB7XG4gICAgICBnZXQ6IG5vTmFtZXNwYWNlXG4gICAgICAgID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuZ2V0dGVyczsgfVxuICAgICAgICA6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1ha2VMb2NhbEdldHRlcnMoc3RvcmUsIG5hbWVzcGFjZSk7IH1cbiAgICB9LFxuICAgIHN0YXRlOiB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGdldE5lc3RlZFN0YXRlKHN0b3JlLnN0YXRlLCBwYXRoKTsgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGxvY2FsXG59XG5cbmZ1bmN0aW9uIG1ha2VMb2NhbEdldHRlcnMgKHN0b3JlLCBuYW1lc3BhY2UpIHtcbiAgaWYgKCFzdG9yZS5fbWFrZUxvY2FsR2V0dGVyc0NhY2hlW25hbWVzcGFjZV0pIHtcbiAgICB2YXIgZ2V0dGVyc1Byb3h5ID0ge307XG4gICAgdmFyIHNwbGl0UG9zID0gbmFtZXNwYWNlLmxlbmd0aDtcbiAgICBPYmplY3Qua2V5cyhzdG9yZS5nZXR0ZXJzKS5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgICAvLyBza2lwIGlmIHRoZSB0YXJnZXQgZ2V0dGVyIGlzIG5vdCBtYXRjaCB0aGlzIG5hbWVzcGFjZVxuICAgICAgaWYgKHR5cGUuc2xpY2UoMCwgc3BsaXRQb3MpICE9PSBuYW1lc3BhY2UpIHsgcmV0dXJuIH1cblxuICAgICAgLy8gZXh0cmFjdCBsb2NhbCBnZXR0ZXIgdHlwZVxuICAgICAgdmFyIGxvY2FsVHlwZSA9IHR5cGUuc2xpY2Uoc3BsaXRQb3MpO1xuXG4gICAgICAvLyBBZGQgYSBwb3J0IHRvIHRoZSBnZXR0ZXJzIHByb3h5LlxuICAgICAgLy8gRGVmaW5lIGFzIGdldHRlciBwcm9wZXJ0eSBiZWNhdXNlXG4gICAgICAvLyB3ZSBkbyBub3Qgd2FudCB0byBldmFsdWF0ZSB0aGUgZ2V0dGVycyBpbiB0aGlzIHRpbWUuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2V0dGVyc1Byb3h5LCBsb2NhbFR5cGUsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5nZXR0ZXJzW3R5cGVdOyB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBzdG9yZS5fbWFrZUxvY2FsR2V0dGVyc0NhY2hlW25hbWVzcGFjZV0gPSBnZXR0ZXJzUHJveHk7XG4gIH1cblxuICByZXR1cm4gc3RvcmUuX21ha2VMb2NhbEdldHRlcnNDYWNoZVtuYW1lc3BhY2VdXG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyTXV0YXRpb24gKHN0b3JlLCB0eXBlLCBoYW5kbGVyLCBsb2NhbCkge1xuICB2YXIgZW50cnkgPSBzdG9yZS5fbXV0YXRpb25zW3R5cGVdIHx8IChzdG9yZS5fbXV0YXRpb25zW3R5cGVdID0gW10pO1xuICBlbnRyeS5wdXNoKGZ1bmN0aW9uIHdyYXBwZWRNdXRhdGlvbkhhbmRsZXIgKHBheWxvYWQpIHtcbiAgICBoYW5kbGVyLmNhbGwoc3RvcmUsIGxvY2FsLnN0YXRlLCBwYXlsb2FkKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyQWN0aW9uIChzdG9yZSwgdHlwZSwgaGFuZGxlciwgbG9jYWwpIHtcbiAgdmFyIGVudHJ5ID0gc3RvcmUuX2FjdGlvbnNbdHlwZV0gfHwgKHN0b3JlLl9hY3Rpb25zW3R5cGVdID0gW10pO1xuICBlbnRyeS5wdXNoKGZ1bmN0aW9uIHdyYXBwZWRBY3Rpb25IYW5kbGVyIChwYXlsb2FkKSB7XG4gICAgdmFyIHJlcyA9IGhhbmRsZXIuY2FsbChzdG9yZSwge1xuICAgICAgZGlzcGF0Y2g6IGxvY2FsLmRpc3BhdGNoLFxuICAgICAgY29tbWl0OiBsb2NhbC5jb21taXQsXG4gICAgICBnZXR0ZXJzOiBsb2NhbC5nZXR0ZXJzLFxuICAgICAgc3RhdGU6IGxvY2FsLnN0YXRlLFxuICAgICAgcm9vdEdldHRlcnM6IHN0b3JlLmdldHRlcnMsXG4gICAgICByb290U3RhdGU6IHN0b3JlLnN0YXRlXG4gICAgfSwgcGF5bG9hZCk7XG4gICAgaWYgKCFpc1Byb21pc2UocmVzKSkge1xuICAgICAgcmVzID0gUHJvbWlzZS5yZXNvbHZlKHJlcyk7XG4gICAgfVxuICAgIGlmIChzdG9yZS5fZGV2dG9vbEhvb2spIHtcbiAgICAgIHJldHVybiByZXMuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuICAgICAgICBzdG9yZS5fZGV2dG9vbEhvb2suZW1pdCgndnVleDplcnJvcicsIGVycik7XG4gICAgICAgIHRocm93IGVyclxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJlc1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyR2V0dGVyIChzdG9yZSwgdHlwZSwgcmF3R2V0dGVyLCBsb2NhbCkge1xuICBpZiAoc3RvcmUuX3dyYXBwZWRHZXR0ZXJzW3R5cGVdKSB7XG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgY29uc29sZS5lcnJvcigoXCJbdnVleF0gZHVwbGljYXRlIGdldHRlciBrZXk6IFwiICsgdHlwZSkpO1xuICAgIH1cbiAgICByZXR1cm5cbiAgfVxuICBzdG9yZS5fd3JhcHBlZEdldHRlcnNbdHlwZV0gPSBmdW5jdGlvbiB3cmFwcGVkR2V0dGVyIChzdG9yZSkge1xuICAgIHJldHVybiByYXdHZXR0ZXIoXG4gICAgICBsb2NhbC5zdGF0ZSwgLy8gbG9jYWwgc3RhdGVcbiAgICAgIGxvY2FsLmdldHRlcnMsIC8vIGxvY2FsIGdldHRlcnNcbiAgICAgIHN0b3JlLnN0YXRlLCAvLyByb290IHN0YXRlXG4gICAgICBzdG9yZS5nZXR0ZXJzIC8vIHJvb3QgZ2V0dGVyc1xuICAgIClcbiAgfTtcbn1cblxuZnVuY3Rpb24gZW5hYmxlU3RyaWN0TW9kZSAoc3RvcmUpIHtcbiAgd2F0Y2goZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuX3N0YXRlLmRhdGE7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICBhc3NlcnQoc3RvcmUuX2NvbW1pdHRpbmcsIFwiZG8gbm90IG11dGF0ZSB2dWV4IHN0b3JlIHN0YXRlIG91dHNpZGUgbXV0YXRpb24gaGFuZGxlcnMuXCIpO1xuICAgIH1cbiAgfSwgeyBkZWVwOiB0cnVlLCBmbHVzaDogJ3N5bmMnIH0pO1xufVxuXG5mdW5jdGlvbiBnZXROZXN0ZWRTdGF0ZSAoc3RhdGUsIHBhdGgpIHtcbiAgcmV0dXJuIHBhdGgucmVkdWNlKGZ1bmN0aW9uIChzdGF0ZSwga2V5KSB7IHJldHVybiBzdGF0ZVtrZXldOyB9LCBzdGF0ZSlcbn1cblxuZnVuY3Rpb24gdW5pZnlPYmplY3RTdHlsZSAodHlwZSwgcGF5bG9hZCwgb3B0aW9ucykge1xuICBpZiAoaXNPYmplY3QodHlwZSkgJiYgdHlwZS50eXBlKSB7XG4gICAgb3B0aW9ucyA9IHBheWxvYWQ7XG4gICAgcGF5bG9hZCA9IHR5cGU7XG4gICAgdHlwZSA9IHR5cGUudHlwZTtcbiAgfVxuXG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICBhc3NlcnQodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnLCAoXCJleHBlY3RzIHN0cmluZyBhcyB0aGUgdHlwZSwgYnV0IGZvdW5kIFwiICsgKHR5cGVvZiB0eXBlKSArIFwiLlwiKSk7XG4gIH1cblxuICByZXR1cm4geyB0eXBlOiB0eXBlLCBwYXlsb2FkOiBwYXlsb2FkLCBvcHRpb25zOiBvcHRpb25zIH1cbn1cblxudmFyIExBQkVMX1ZVRVhfQklORElOR1MgPSAndnVleCBiaW5kaW5ncyc7XG52YXIgTVVUQVRJT05TX0xBWUVSX0lEID0gJ3Z1ZXg6bXV0YXRpb25zJztcbnZhciBBQ1RJT05TX0xBWUVSX0lEID0gJ3Z1ZXg6YWN0aW9ucyc7XG52YXIgSU5TUEVDVE9SX0lEID0gJ3Z1ZXgnO1xuXG52YXIgYWN0aW9uSWQgPSAwO1xuXG5mdW5jdGlvbiBhZGREZXZ0b29scyAoYXBwLCBzdG9yZSkge1xuICBzZXR1cERldnRvb2xzUGx1Z2luKFxuICAgIHtcbiAgICAgIGlkOiAnb3JnLnZ1ZWpzLnZ1ZXgnLFxuICAgICAgYXBwOiBhcHAsXG4gICAgICBsYWJlbDogJ1Z1ZXgnLFxuICAgICAgaG9tZXBhZ2U6ICdodHRwczovL25leHQudnVleC52dWVqcy5vcmcvJyxcbiAgICAgIGxvZ286ICdodHRwczovL3Z1ZWpzLm9yZy9pbWFnZXMvaWNvbnMvZmF2aWNvbi05Nng5Ni5wbmcnLFxuICAgICAgcGFja2FnZU5hbWU6ICd2dWV4JyxcbiAgICAgIGNvbXBvbmVudFN0YXRlVHlwZXM6IFtMQUJFTF9WVUVYX0JJTkRJTkdTXVxuICAgIH0sXG4gICAgZnVuY3Rpb24gKGFwaSkge1xuICAgICAgYXBpLmFkZFRpbWVsaW5lTGF5ZXIoe1xuICAgICAgICBpZDogTVVUQVRJT05TX0xBWUVSX0lELFxuICAgICAgICBsYWJlbDogJ1Z1ZXggTXV0YXRpb25zJyxcbiAgICAgICAgY29sb3I6IENPTE9SX0xJTUVfNTAwXG4gICAgICB9KTtcblxuICAgICAgYXBpLmFkZFRpbWVsaW5lTGF5ZXIoe1xuICAgICAgICBpZDogQUNUSU9OU19MQVlFUl9JRCxcbiAgICAgICAgbGFiZWw6ICdWdWV4IEFjdGlvbnMnLFxuICAgICAgICBjb2xvcjogQ09MT1JfTElNRV81MDBcbiAgICAgIH0pO1xuXG4gICAgICBhcGkuYWRkSW5zcGVjdG9yKHtcbiAgICAgICAgaWQ6IElOU1BFQ1RPUl9JRCxcbiAgICAgICAgbGFiZWw6ICdWdWV4JyxcbiAgICAgICAgaWNvbjogJ3N0b3JhZ2UnLFxuICAgICAgICB0cmVlRmlsdGVyUGxhY2Vob2xkZXI6ICdGaWx0ZXIgc3RvcmVzLi4uJ1xuICAgICAgfSk7XG5cbiAgICAgIGFwaS5vbi5nZXRJbnNwZWN0b3JUcmVlKGZ1bmN0aW9uIChwYXlsb2FkKSB7XG4gICAgICAgIGlmIChwYXlsb2FkLmFwcCA9PT0gYXBwICYmIHBheWxvYWQuaW5zcGVjdG9ySWQgPT09IElOU1BFQ1RPUl9JRCkge1xuICAgICAgICAgIGlmIChwYXlsb2FkLmZpbHRlcikge1xuICAgICAgICAgICAgdmFyIG5vZGVzID0gW107XG4gICAgICAgICAgICBmbGF0dGVuU3RvcmVGb3JJbnNwZWN0b3JUcmVlKG5vZGVzLCBzdG9yZS5fbW9kdWxlcy5yb290LCBwYXlsb2FkLmZpbHRlciwgJycpO1xuICAgICAgICAgICAgcGF5bG9hZC5yb290Tm9kZXMgPSBub2RlcztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGF5bG9hZC5yb290Tm9kZXMgPSBbXG4gICAgICAgICAgICAgIGZvcm1hdFN0b3JlRm9ySW5zcGVjdG9yVHJlZShzdG9yZS5fbW9kdWxlcy5yb290LCAnJylcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgYXBpLm9uLmdldEluc3BlY3RvclN0YXRlKGZ1bmN0aW9uIChwYXlsb2FkKSB7XG4gICAgICAgIGlmIChwYXlsb2FkLmFwcCA9PT0gYXBwICYmIHBheWxvYWQuaW5zcGVjdG9ySWQgPT09IElOU1BFQ1RPUl9JRCkge1xuICAgICAgICAgIHZhciBtb2R1bGVQYXRoID0gcGF5bG9hZC5ub2RlSWQ7XG4gICAgICAgICAgbWFrZUxvY2FsR2V0dGVycyhzdG9yZSwgbW9kdWxlUGF0aCk7XG4gICAgICAgICAgcGF5bG9hZC5zdGF0ZSA9IGZvcm1hdFN0b3JlRm9ySW5zcGVjdG9yU3RhdGUoXG4gICAgICAgICAgICBnZXRTdG9yZU1vZHVsZShzdG9yZS5fbW9kdWxlcywgbW9kdWxlUGF0aCksXG4gICAgICAgICAgICBtb2R1bGVQYXRoID09PSAncm9vdCcgPyBzdG9yZS5nZXR0ZXJzIDogc3RvcmUuX21ha2VMb2NhbEdldHRlcnNDYWNoZSxcbiAgICAgICAgICAgIG1vZHVsZVBhdGhcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgYXBpLm9uLmVkaXRJbnNwZWN0b3JTdGF0ZShmdW5jdGlvbiAocGF5bG9hZCkge1xuICAgICAgICBpZiAocGF5bG9hZC5hcHAgPT09IGFwcCAmJiBwYXlsb2FkLmluc3BlY3RvcklkID09PSBJTlNQRUNUT1JfSUQpIHtcbiAgICAgICAgICB2YXIgbW9kdWxlUGF0aCA9IHBheWxvYWQubm9kZUlkO1xuICAgICAgICAgIHZhciBwYXRoID0gcGF5bG9hZC5wYXRoO1xuICAgICAgICAgIGlmIChtb2R1bGVQYXRoICE9PSAncm9vdCcpIHtcbiAgICAgICAgICAgIHBhdGggPSBtb2R1bGVQYXRoLnNwbGl0KCcvJykuZmlsdGVyKEJvb2xlYW4pLmNvbmNhdCggcGF0aCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHN0b3JlLl93aXRoQ29tbWl0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHBheWxvYWQuc2V0KHN0b3JlLl9zdGF0ZS5kYXRhLCBwYXRoLCBwYXlsb2FkLnN0YXRlLnZhbHVlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHN0b3JlLnN1YnNjcmliZShmdW5jdGlvbiAobXV0YXRpb24sIHN0YXRlKSB7XG4gICAgICAgIHZhciBkYXRhID0ge307XG5cbiAgICAgICAgaWYgKG11dGF0aW9uLnBheWxvYWQpIHtcbiAgICAgICAgICBkYXRhLnBheWxvYWQgPSBtdXRhdGlvbi5wYXlsb2FkO1xuICAgICAgICB9XG5cbiAgICAgICAgZGF0YS5zdGF0ZSA9IHN0YXRlO1xuXG4gICAgICAgIGFwaS5ub3RpZnlDb21wb25lbnRVcGRhdGUoKTtcbiAgICAgICAgYXBpLnNlbmRJbnNwZWN0b3JUcmVlKElOU1BFQ1RPUl9JRCk7XG4gICAgICAgIGFwaS5zZW5kSW5zcGVjdG9yU3RhdGUoSU5TUEVDVE9SX0lEKTtcblxuICAgICAgICBhcGkuYWRkVGltZWxpbmVFdmVudCh7XG4gICAgICAgICAgbGF5ZXJJZDogTVVUQVRJT05TX0xBWUVSX0lELFxuICAgICAgICAgIGV2ZW50OiB7XG4gICAgICAgICAgICB0aW1lOiBEYXRlLm5vdygpLFxuICAgICAgICAgICAgdGl0bGU6IG11dGF0aW9uLnR5cGUsXG4gICAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBzdG9yZS5zdWJzY3JpYmVBY3Rpb24oe1xuICAgICAgICBiZWZvcmU6IGZ1bmN0aW9uIChhY3Rpb24sIHN0YXRlKSB7XG4gICAgICAgICAgdmFyIGRhdGEgPSB7fTtcbiAgICAgICAgICBpZiAoYWN0aW9uLnBheWxvYWQpIHtcbiAgICAgICAgICAgIGRhdGEucGF5bG9hZCA9IGFjdGlvbi5wYXlsb2FkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhY3Rpb24uX2lkID0gYWN0aW9uSWQrKztcbiAgICAgICAgICBhY3Rpb24uX3RpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICAgIGRhdGEuc3RhdGUgPSBzdGF0ZTtcblxuICAgICAgICAgIGFwaS5hZGRUaW1lbGluZUV2ZW50KHtcbiAgICAgICAgICAgIGxheWVySWQ6IEFDVElPTlNfTEFZRVJfSUQsXG4gICAgICAgICAgICBldmVudDoge1xuICAgICAgICAgICAgICB0aW1lOiBhY3Rpb24uX3RpbWUsXG4gICAgICAgICAgICAgIHRpdGxlOiBhY3Rpb24udHlwZSxcbiAgICAgICAgICAgICAgZ3JvdXBJZDogYWN0aW9uLl9pZCxcbiAgICAgICAgICAgICAgc3VidGl0bGU6ICdzdGFydCcsXG4gICAgICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgYWZ0ZXI6IGZ1bmN0aW9uIChhY3Rpb24sIHN0YXRlKSB7XG4gICAgICAgICAgdmFyIGRhdGEgPSB7fTtcbiAgICAgICAgICB2YXIgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gYWN0aW9uLl90aW1lO1xuICAgICAgICAgIGRhdGEuZHVyYXRpb24gPSB7XG4gICAgICAgICAgICBfY3VzdG9tOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdkdXJhdGlvbicsXG4gICAgICAgICAgICAgIGRpc3BsYXk6IChkdXJhdGlvbiArIFwibXNcIiksXG4gICAgICAgICAgICAgIHRvb2x0aXA6ICdBY3Rpb24gZHVyYXRpb24nLFxuICAgICAgICAgICAgICB2YWx1ZTogZHVyYXRpb25cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmIChhY3Rpb24ucGF5bG9hZCkge1xuICAgICAgICAgICAgZGF0YS5wYXlsb2FkID0gYWN0aW9uLnBheWxvYWQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRhdGEuc3RhdGUgPSBzdGF0ZTtcblxuICAgICAgICAgIGFwaS5hZGRUaW1lbGluZUV2ZW50KHtcbiAgICAgICAgICAgIGxheWVySWQ6IEFDVElPTlNfTEFZRVJfSUQsXG4gICAgICAgICAgICBldmVudDoge1xuICAgICAgICAgICAgICB0aW1lOiBEYXRlLm5vdygpLFxuICAgICAgICAgICAgICB0aXRsZTogYWN0aW9uLnR5cGUsXG4gICAgICAgICAgICAgIGdyb3VwSWQ6IGFjdGlvbi5faWQsXG4gICAgICAgICAgICAgIHN1YnRpdGxlOiAnZW5kJyxcbiAgICAgICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICk7XG59XG5cbi8vIGV4dHJhY3RlZCBmcm9tIHRhaWx3aW5kIHBhbGV0dGVcbnZhciBDT0xPUl9MSU1FXzUwMCA9IDB4ODRjYzE2O1xudmFyIENPTE9SX0RBUksgPSAweDY2NjY2NjtcbnZhciBDT0xPUl9XSElURSA9IDB4ZmZmZmZmO1xuXG52YXIgVEFHX05BTUVTUEFDRUQgPSB7XG4gIGxhYmVsOiAnbmFtZXNwYWNlZCcsXG4gIHRleHRDb2xvcjogQ09MT1JfV0hJVEUsXG4gIGJhY2tncm91bmRDb2xvcjogQ09MT1JfREFSS1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICovXG5mdW5jdGlvbiBleHRyYWN0TmFtZUZyb21QYXRoIChwYXRoKSB7XG4gIHJldHVybiBwYXRoICYmIHBhdGggIT09ICdyb290JyA/IHBhdGguc3BsaXQoJy8nKS5zbGljZSgtMiwgLTEpWzBdIDogJ1Jvb3QnXG59XG5cbi8qKlxuICogQHBhcmFtIHsqfSBtb2R1bGVcbiAqIEByZXR1cm4ge2ltcG9ydCgnQHZ1ZS9kZXZ0b29scy1hcGknKS5DdXN0b21JbnNwZWN0b3JOb2RlfVxuICovXG5mdW5jdGlvbiBmb3JtYXRTdG9yZUZvckluc3BlY3RvclRyZWUgKG1vZHVsZSwgcGF0aCkge1xuICByZXR1cm4ge1xuICAgIGlkOiBwYXRoIHx8ICdyb290JyxcbiAgICAvLyBhbGwgbW9kdWxlcyBlbmQgd2l0aCBhIGAvYCwgd2Ugd2FudCB0aGUgbGFzdCBzZWdtZW50IG9ubHlcbiAgICAvLyBjYXJ0LyAtPiBjYXJ0XG4gICAgLy8gbmVzdGVkL2NhcnQvIC0+IGNhcnRcbiAgICBsYWJlbDogZXh0cmFjdE5hbWVGcm9tUGF0aChwYXRoKSxcbiAgICB0YWdzOiBtb2R1bGUubmFtZXNwYWNlZCA/IFtUQUdfTkFNRVNQQUNFRF0gOiBbXSxcbiAgICBjaGlsZHJlbjogT2JqZWN0LmtleXMobW9kdWxlLl9jaGlsZHJlbikubWFwKGZ1bmN0aW9uIChtb2R1bGVOYW1lKSB7IHJldHVybiBmb3JtYXRTdG9yZUZvckluc3BlY3RvclRyZWUoXG4gICAgICAgIG1vZHVsZS5fY2hpbGRyZW5bbW9kdWxlTmFtZV0sXG4gICAgICAgIHBhdGggKyBtb2R1bGVOYW1lICsgJy8nXG4gICAgICApOyB9XG4gICAgKVxuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJ0B2dWUvZGV2dG9vbHMtYXBpJykuQ3VzdG9tSW5zcGVjdG9yTm9kZVtdfSByZXN1bHRcbiAqIEBwYXJhbSB7Kn0gbW9kdWxlXG4gKiBAcGFyYW0ge3N0cmluZ30gZmlsdGVyXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICovXG5mdW5jdGlvbiBmbGF0dGVuU3RvcmVGb3JJbnNwZWN0b3JUcmVlIChyZXN1bHQsIG1vZHVsZSwgZmlsdGVyLCBwYXRoKSB7XG4gIGlmIChwYXRoLmluY2x1ZGVzKGZpbHRlcikpIHtcbiAgICByZXN1bHQucHVzaCh7XG4gICAgICBpZDogcGF0aCB8fCAncm9vdCcsXG4gICAgICBsYWJlbDogcGF0aC5lbmRzV2l0aCgnLycpID8gcGF0aC5zbGljZSgwLCBwYXRoLmxlbmd0aCAtIDEpIDogcGF0aCB8fCAnUm9vdCcsXG4gICAgICB0YWdzOiBtb2R1bGUubmFtZXNwYWNlZCA/IFtUQUdfTkFNRVNQQUNFRF0gOiBbXVxuICAgIH0pO1xuICB9XG4gIE9iamVjdC5rZXlzKG1vZHVsZS5fY2hpbGRyZW4pLmZvckVhY2goZnVuY3Rpb24gKG1vZHVsZU5hbWUpIHtcbiAgICBmbGF0dGVuU3RvcmVGb3JJbnNwZWN0b3JUcmVlKHJlc3VsdCwgbW9kdWxlLl9jaGlsZHJlblttb2R1bGVOYW1lXSwgZmlsdGVyLCBwYXRoICsgbW9kdWxlTmFtZSArICcvJyk7XG4gIH0pO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Kn0gbW9kdWxlXG4gKiBAcmV0dXJuIHtpbXBvcnQoJ0B2dWUvZGV2dG9vbHMtYXBpJykuQ3VzdG9tSW5zcGVjdG9yU3RhdGV9XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdFN0b3JlRm9ySW5zcGVjdG9yU3RhdGUgKG1vZHVsZSwgZ2V0dGVycywgcGF0aCkge1xuICBnZXR0ZXJzID0gcGF0aCA9PT0gJ3Jvb3QnID8gZ2V0dGVycyA6IGdldHRlcnNbcGF0aF07XG4gIHZhciBnZXR0ZXJzS2V5cyA9IE9iamVjdC5rZXlzKGdldHRlcnMpO1xuICB2YXIgc3RvcmVTdGF0ZSA9IHtcbiAgICBzdGF0ZTogT2JqZWN0LmtleXMobW9kdWxlLnN0YXRlKS5tYXAoZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gKHtcbiAgICAgIGtleToga2V5LFxuICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICB2YWx1ZTogbW9kdWxlLnN0YXRlW2tleV1cbiAgICB9KTsgfSlcbiAgfTtcblxuICBpZiAoZ2V0dGVyc0tleXMubGVuZ3RoKSB7XG4gICAgdmFyIHRyZWUgPSB0cmFuc2Zvcm1QYXRoc1RvT2JqZWN0VHJlZShnZXR0ZXJzKTtcbiAgICBzdG9yZVN0YXRlLmdldHRlcnMgPSBPYmplY3Qua2V5cyh0cmVlKS5tYXAoZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gKHtcbiAgICAgIGtleToga2V5LmVuZHNXaXRoKCcvJykgPyBleHRyYWN0TmFtZUZyb21QYXRoKGtleSkgOiBrZXksXG4gICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICB2YWx1ZTogY2FuVGhyb3coZnVuY3Rpb24gKCkgeyByZXR1cm4gdHJlZVtrZXldOyB9KVxuICAgIH0pOyB9KTtcbiAgfVxuXG4gIHJldHVybiBzdG9yZVN0YXRlXG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVBhdGhzVG9PYmplY3RUcmVlIChnZXR0ZXJzKSB7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgT2JqZWN0LmtleXMoZ2V0dGVycykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIHBhdGggPSBrZXkuc3BsaXQoJy8nKTtcbiAgICBpZiAocGF0aC5sZW5ndGggPiAxKSB7XG4gICAgICB2YXIgdGFyZ2V0ID0gcmVzdWx0O1xuICAgICAgdmFyIGxlYWZLZXkgPSBwYXRoLnBvcCgpO1xuICAgICAgcGF0aC5mb3JFYWNoKGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIGlmICghdGFyZ2V0W3BdKSB7XG4gICAgICAgICAgdGFyZ2V0W3BdID0ge1xuICAgICAgICAgICAgX2N1c3RvbToge1xuICAgICAgICAgICAgICB2YWx1ZToge30sXG4gICAgICAgICAgICAgIGRpc3BsYXk6IHAsXG4gICAgICAgICAgICAgIHRvb2x0aXA6ICdNb2R1bGUnLFxuICAgICAgICAgICAgICBhYnN0cmFjdDogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0W3BdLl9jdXN0b20udmFsdWU7XG4gICAgICB9KTtcbiAgICAgIHRhcmdldFtsZWFmS2V5XSA9IGNhblRocm93KGZ1bmN0aW9uICgpIHsgcmV0dXJuIGdldHRlcnNba2V5XTsgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdFtrZXldID0gY2FuVGhyb3coZnVuY3Rpb24gKCkgeyByZXR1cm4gZ2V0dGVyc1trZXldOyB9KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0XG59XG5cbmZ1bmN0aW9uIGdldFN0b3JlTW9kdWxlIChtb2R1bGVNYXAsIHBhdGgpIHtcbiAgdmFyIG5hbWVzID0gcGF0aC5zcGxpdCgnLycpLmZpbHRlcihmdW5jdGlvbiAobikgeyByZXR1cm4gbjsgfSk7XG4gIHJldHVybiBuYW1lcy5yZWR1Y2UoXG4gICAgZnVuY3Rpb24gKG1vZHVsZSwgbW9kdWxlTmFtZSwgaSkge1xuICAgICAgdmFyIGNoaWxkID0gbW9kdWxlW21vZHVsZU5hbWVdO1xuICAgICAgaWYgKCFjaGlsZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKFwiTWlzc2luZyBtb2R1bGUgXFxcIlwiICsgbW9kdWxlTmFtZSArIFwiXFxcIiBmb3IgcGF0aCBcXFwiXCIgKyBwYXRoICsgXCJcXFwiLlwiKSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBpID09PSBuYW1lcy5sZW5ndGggLSAxID8gY2hpbGQgOiBjaGlsZC5fY2hpbGRyZW5cbiAgICB9LFxuICAgIHBhdGggPT09ICdyb290JyA/IG1vZHVsZU1hcCA6IG1vZHVsZU1hcC5yb290Ll9jaGlsZHJlblxuICApXG59XG5cbmZ1bmN0aW9uIGNhblRocm93IChjYikge1xuICB0cnkge1xuICAgIHJldHVybiBjYigpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZVxuICB9XG59XG5cbi8vIEJhc2UgZGF0YSBzdHJ1Y3QgZm9yIHN0b3JlJ3MgbW9kdWxlLCBwYWNrYWdlIHdpdGggc29tZSBhdHRyaWJ1dGUgYW5kIG1ldGhvZFxudmFyIE1vZHVsZSA9IGZ1bmN0aW9uIE1vZHVsZSAocmF3TW9kdWxlLCBydW50aW1lKSB7XG4gIHRoaXMucnVudGltZSA9IHJ1bnRpbWU7XG4gIC8vIFN0b3JlIHNvbWUgY2hpbGRyZW4gaXRlbVxuICB0aGlzLl9jaGlsZHJlbiA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIC8vIFN0b3JlIHRoZSBvcmlnaW4gbW9kdWxlIG9iamVjdCB3aGljaCBwYXNzZWQgYnkgcHJvZ3JhbW1lclxuICB0aGlzLl9yYXdNb2R1bGUgPSByYXdNb2R1bGU7XG4gIHZhciByYXdTdGF0ZSA9IHJhd01vZHVsZS5zdGF0ZTtcblxuICAvLyBTdG9yZSB0aGUgb3JpZ2luIG1vZHVsZSdzIHN0YXRlXG4gIHRoaXMuc3RhdGUgPSAodHlwZW9mIHJhd1N0YXRlID09PSAnZnVuY3Rpb24nID8gcmF3U3RhdGUoKSA6IHJhd1N0YXRlKSB8fCB7fTtcbn07XG5cbnZhciBwcm90b3R5cGVBY2Nlc3NvcnMkMSA9IHsgbmFtZXNwYWNlZDogeyBjb25maWd1cmFibGU6IHRydWUgfSB9O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMkMS5uYW1lc3BhY2VkLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICEhdGhpcy5fcmF3TW9kdWxlLm5hbWVzcGFjZWRcbn07XG5cbk1vZHVsZS5wcm90b3R5cGUuYWRkQ2hpbGQgPSBmdW5jdGlvbiBhZGRDaGlsZCAoa2V5LCBtb2R1bGUpIHtcbiAgdGhpcy5fY2hpbGRyZW5ba2V5XSA9IG1vZHVsZTtcbn07XG5cbk1vZHVsZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGQgPSBmdW5jdGlvbiByZW1vdmVDaGlsZCAoa2V5KSB7XG4gIGRlbGV0ZSB0aGlzLl9jaGlsZHJlbltrZXldO1xufTtcblxuTW9kdWxlLnByb3RvdHlwZS5nZXRDaGlsZCA9IGZ1bmN0aW9uIGdldENoaWxkIChrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX2NoaWxkcmVuW2tleV1cbn07XG5cbk1vZHVsZS5wcm90b3R5cGUuaGFzQ2hpbGQgPSBmdW5jdGlvbiBoYXNDaGlsZCAoa2V5KSB7XG4gIHJldHVybiBrZXkgaW4gdGhpcy5fY2hpbGRyZW5cbn07XG5cbk1vZHVsZS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlIChyYXdNb2R1bGUpIHtcbiAgdGhpcy5fcmF3TW9kdWxlLm5hbWVzcGFjZWQgPSByYXdNb2R1bGUubmFtZXNwYWNlZDtcbiAgaWYgKHJhd01vZHVsZS5hY3Rpb25zKSB7XG4gICAgdGhpcy5fcmF3TW9kdWxlLmFjdGlvbnMgPSByYXdNb2R1bGUuYWN0aW9ucztcbiAgfVxuICBpZiAocmF3TW9kdWxlLm11dGF0aW9ucykge1xuICAgIHRoaXMuX3Jhd01vZHVsZS5tdXRhdGlvbnMgPSByYXdNb2R1bGUubXV0YXRpb25zO1xuICB9XG4gIGlmIChyYXdNb2R1bGUuZ2V0dGVycykge1xuICAgIHRoaXMuX3Jhd01vZHVsZS5nZXR0ZXJzID0gcmF3TW9kdWxlLmdldHRlcnM7XG4gIH1cbn07XG5cbk1vZHVsZS5wcm90b3R5cGUuZm9yRWFjaENoaWxkID0gZnVuY3Rpb24gZm9yRWFjaENoaWxkIChmbikge1xuICBmb3JFYWNoVmFsdWUodGhpcy5fY2hpbGRyZW4sIGZuKTtcbn07XG5cbk1vZHVsZS5wcm90b3R5cGUuZm9yRWFjaEdldHRlciA9IGZ1bmN0aW9uIGZvckVhY2hHZXR0ZXIgKGZuKSB7XG4gIGlmICh0aGlzLl9yYXdNb2R1bGUuZ2V0dGVycykge1xuICAgIGZvckVhY2hWYWx1ZSh0aGlzLl9yYXdNb2R1bGUuZ2V0dGVycywgZm4pO1xuICB9XG59O1xuXG5Nb2R1bGUucHJvdG90eXBlLmZvckVhY2hBY3Rpb24gPSBmdW5jdGlvbiBmb3JFYWNoQWN0aW9uIChmbikge1xuICBpZiAodGhpcy5fcmF3TW9kdWxlLmFjdGlvbnMpIHtcbiAgICBmb3JFYWNoVmFsdWUodGhpcy5fcmF3TW9kdWxlLmFjdGlvbnMsIGZuKTtcbiAgfVxufTtcblxuTW9kdWxlLnByb3RvdHlwZS5mb3JFYWNoTXV0YXRpb24gPSBmdW5jdGlvbiBmb3JFYWNoTXV0YXRpb24gKGZuKSB7XG4gIGlmICh0aGlzLl9yYXdNb2R1bGUubXV0YXRpb25zKSB7XG4gICAgZm9yRWFjaFZhbHVlKHRoaXMuX3Jhd01vZHVsZS5tdXRhdGlvbnMsIGZuKTtcbiAgfVxufTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoIE1vZHVsZS5wcm90b3R5cGUsIHByb3RvdHlwZUFjY2Vzc29ycyQxICk7XG5cbnZhciBNb2R1bGVDb2xsZWN0aW9uID0gZnVuY3Rpb24gTW9kdWxlQ29sbGVjdGlvbiAocmF3Um9vdE1vZHVsZSkge1xuICAvLyByZWdpc3RlciByb290IG1vZHVsZSAoVnVleC5TdG9yZSBvcHRpb25zKVxuICB0aGlzLnJlZ2lzdGVyKFtdLCByYXdSb290TW9kdWxlLCBmYWxzZSk7XG59O1xuXG5Nb2R1bGVDb2xsZWN0aW9uLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiBnZXQgKHBhdGgpIHtcbiAgcmV0dXJuIHBhdGgucmVkdWNlKGZ1bmN0aW9uIChtb2R1bGUsIGtleSkge1xuICAgIHJldHVybiBtb2R1bGUuZ2V0Q2hpbGQoa2V5KVxuICB9LCB0aGlzLnJvb3QpXG59O1xuXG5Nb2R1bGVDb2xsZWN0aW9uLnByb3RvdHlwZS5nZXROYW1lc3BhY2UgPSBmdW5jdGlvbiBnZXROYW1lc3BhY2UgKHBhdGgpIHtcbiAgdmFyIG1vZHVsZSA9IHRoaXMucm9vdDtcbiAgcmV0dXJuIHBhdGgucmVkdWNlKGZ1bmN0aW9uIChuYW1lc3BhY2UsIGtleSkge1xuICAgIG1vZHVsZSA9IG1vZHVsZS5nZXRDaGlsZChrZXkpO1xuICAgIHJldHVybiBuYW1lc3BhY2UgKyAobW9kdWxlLm5hbWVzcGFjZWQgPyBrZXkgKyAnLycgOiAnJylcbiAgfSwgJycpXG59O1xuXG5Nb2R1bGVDb2xsZWN0aW9uLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUkMSAocmF3Um9vdE1vZHVsZSkge1xuICB1cGRhdGUoW10sIHRoaXMucm9vdCwgcmF3Um9vdE1vZHVsZSk7XG59O1xuXG5Nb2R1bGVDb2xsZWN0aW9uLnByb3RvdHlwZS5yZWdpc3RlciA9IGZ1bmN0aW9uIHJlZ2lzdGVyIChwYXRoLCByYXdNb2R1bGUsIHJ1bnRpbWUpIHtcbiAgICB2YXIgdGhpcyQxJDEgPSB0aGlzO1xuICAgIGlmICggcnVudGltZSA9PT0gdm9pZCAwICkgcnVudGltZSA9IHRydWU7XG5cbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgIGFzc2VydFJhd01vZHVsZShwYXRoLCByYXdNb2R1bGUpO1xuICB9XG5cbiAgdmFyIG5ld01vZHVsZSA9IG5ldyBNb2R1bGUocmF3TW9kdWxlLCBydW50aW1lKTtcbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgdGhpcy5yb290ID0gbmV3TW9kdWxlO1xuICB9IGVsc2Uge1xuICAgIHZhciBwYXJlbnQgPSB0aGlzLmdldChwYXRoLnNsaWNlKDAsIC0xKSk7XG4gICAgcGFyZW50LmFkZENoaWxkKHBhdGhbcGF0aC5sZW5ndGggLSAxXSwgbmV3TW9kdWxlKTtcbiAgfVxuXG4gIC8vIHJlZ2lzdGVyIG5lc3RlZCBtb2R1bGVzXG4gIGlmIChyYXdNb2R1bGUubW9kdWxlcykge1xuICAgIGZvckVhY2hWYWx1ZShyYXdNb2R1bGUubW9kdWxlcywgZnVuY3Rpb24gKHJhd0NoaWxkTW9kdWxlLCBrZXkpIHtcbiAgICAgIHRoaXMkMSQxLnJlZ2lzdGVyKHBhdGguY29uY2F0KGtleSksIHJhd0NoaWxkTW9kdWxlLCBydW50aW1lKTtcbiAgICB9KTtcbiAgfVxufTtcblxuTW9kdWxlQ29sbGVjdGlvbi5wcm90b3R5cGUudW5yZWdpc3RlciA9IGZ1bmN0aW9uIHVucmVnaXN0ZXIgKHBhdGgpIHtcbiAgdmFyIHBhcmVudCA9IHRoaXMuZ2V0KHBhdGguc2xpY2UoMCwgLTEpKTtcbiAgdmFyIGtleSA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcbiAgdmFyIGNoaWxkID0gcGFyZW50LmdldENoaWxkKGtleSk7XG5cbiAgaWYgKCFjaGlsZCkge1xuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgXCJbdnVleF0gdHJ5aW5nIHRvIHVucmVnaXN0ZXIgbW9kdWxlICdcIiArIGtleSArIFwiJywgd2hpY2ggaXMgXCIgK1xuICAgICAgICBcIm5vdCByZWdpc3RlcmVkXCJcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKCFjaGlsZC5ydW50aW1lKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBwYXJlbnQucmVtb3ZlQ2hpbGQoa2V5KTtcbn07XG5cbk1vZHVsZUNvbGxlY3Rpb24ucHJvdG90eXBlLmlzUmVnaXN0ZXJlZCA9IGZ1bmN0aW9uIGlzUmVnaXN0ZXJlZCAocGF0aCkge1xuICB2YXIgcGFyZW50ID0gdGhpcy5nZXQocGF0aC5zbGljZSgwLCAtMSkpO1xuICB2YXIga2V5ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuXG4gIGlmIChwYXJlbnQpIHtcbiAgICByZXR1cm4gcGFyZW50Lmhhc0NoaWxkKGtleSlcbiAgfVxuXG4gIHJldHVybiBmYWxzZVxufTtcblxuZnVuY3Rpb24gdXBkYXRlIChwYXRoLCB0YXJnZXRNb2R1bGUsIG5ld01vZHVsZSkge1xuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgYXNzZXJ0UmF3TW9kdWxlKHBhdGgsIG5ld01vZHVsZSk7XG4gIH1cblxuICAvLyB1cGRhdGUgdGFyZ2V0IG1vZHVsZVxuICB0YXJnZXRNb2R1bGUudXBkYXRlKG5ld01vZHVsZSk7XG5cbiAgLy8gdXBkYXRlIG5lc3RlZCBtb2R1bGVzXG4gIGlmIChuZXdNb2R1bGUubW9kdWxlcykge1xuICAgIGZvciAodmFyIGtleSBpbiBuZXdNb2R1bGUubW9kdWxlcykge1xuICAgICAgaWYgKCF0YXJnZXRNb2R1bGUuZ2V0Q2hpbGQoa2V5KSkge1xuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgXCJbdnVleF0gdHJ5aW5nIHRvIGFkZCBhIG5ldyBtb2R1bGUgJ1wiICsga2V5ICsgXCInIG9uIGhvdCByZWxvYWRpbmcsIFwiICtcbiAgICAgICAgICAgICdtYW51YWwgcmVsb2FkIGlzIG5lZWRlZCdcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdXBkYXRlKFxuICAgICAgICBwYXRoLmNvbmNhdChrZXkpLFxuICAgICAgICB0YXJnZXRNb2R1bGUuZ2V0Q2hpbGQoa2V5KSxcbiAgICAgICAgbmV3TW9kdWxlLm1vZHVsZXNba2V5XVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIGZ1bmN0aW9uQXNzZXJ0ID0ge1xuICBhc3NlcnQ6IGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nOyB9LFxuICBleHBlY3RlZDogJ2Z1bmN0aW9uJ1xufTtcblxudmFyIG9iamVjdEFzc2VydCA9IHtcbiAgYXNzZXJ0OiBmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyB8fFxuICAgICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHR5cGVvZiB2YWx1ZS5oYW5kbGVyID09PSAnZnVuY3Rpb24nKTsgfSxcbiAgZXhwZWN0ZWQ6ICdmdW5jdGlvbiBvciBvYmplY3Qgd2l0aCBcImhhbmRsZXJcIiBmdW5jdGlvbidcbn07XG5cbnZhciBhc3NlcnRUeXBlcyA9IHtcbiAgZ2V0dGVyczogZnVuY3Rpb25Bc3NlcnQsXG4gIG11dGF0aW9uczogZnVuY3Rpb25Bc3NlcnQsXG4gIGFjdGlvbnM6IG9iamVjdEFzc2VydFxufTtcblxuZnVuY3Rpb24gYXNzZXJ0UmF3TW9kdWxlIChwYXRoLCByYXdNb2R1bGUpIHtcbiAgT2JqZWN0LmtleXMoYXNzZXJ0VHlwZXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIGlmICghcmF3TW9kdWxlW2tleV0pIHsgcmV0dXJuIH1cblxuICAgIHZhciBhc3NlcnRPcHRpb25zID0gYXNzZXJ0VHlwZXNba2V5XTtcblxuICAgIGZvckVhY2hWYWx1ZShyYXdNb2R1bGVba2V5XSwgZnVuY3Rpb24gKHZhbHVlLCB0eXBlKSB7XG4gICAgICBhc3NlcnQoXG4gICAgICAgIGFzc2VydE9wdGlvbnMuYXNzZXJ0KHZhbHVlKSxcbiAgICAgICAgbWFrZUFzc2VydGlvbk1lc3NhZ2UocGF0aCwga2V5LCB0eXBlLCB2YWx1ZSwgYXNzZXJ0T3B0aW9ucy5leHBlY3RlZClcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBtYWtlQXNzZXJ0aW9uTWVzc2FnZSAocGF0aCwga2V5LCB0eXBlLCB2YWx1ZSwgZXhwZWN0ZWQpIHtcbiAgdmFyIGJ1ZiA9IGtleSArIFwiIHNob3VsZCBiZSBcIiArIGV4cGVjdGVkICsgXCIgYnV0IFxcXCJcIiArIGtleSArIFwiLlwiICsgdHlwZSArIFwiXFxcIlwiO1xuICBpZiAocGF0aC5sZW5ndGggPiAwKSB7XG4gICAgYnVmICs9IFwiIGluIG1vZHVsZSBcXFwiXCIgKyAocGF0aC5qb2luKCcuJykpICsgXCJcXFwiXCI7XG4gIH1cbiAgYnVmICs9IFwiIGlzIFwiICsgKEpTT04uc3RyaW5naWZ5KHZhbHVlKSkgKyBcIi5cIjtcbiAgcmV0dXJuIGJ1ZlxufVxuXG5mdW5jdGlvbiBjcmVhdGVTdG9yZSAob3B0aW9ucykge1xuICByZXR1cm4gbmV3IFN0b3JlKG9wdGlvbnMpXG59XG5cbnZhciBTdG9yZSA9IGZ1bmN0aW9uIFN0b3JlIChvcHRpb25zKSB7XG4gIHZhciB0aGlzJDEkMSA9IHRoaXM7XG4gIGlmICggb3B0aW9ucyA9PT0gdm9pZCAwICkgb3B0aW9ucyA9IHt9O1xuXG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICBhc3NlcnQodHlwZW9mIFByb21pc2UgIT09ICd1bmRlZmluZWQnLCBcInZ1ZXggcmVxdWlyZXMgYSBQcm9taXNlIHBvbHlmaWxsIGluIHRoaXMgYnJvd3Nlci5cIik7XG4gICAgYXNzZXJ0KHRoaXMgaW5zdGFuY2VvZiBTdG9yZSwgXCJzdG9yZSBtdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBuZXcgb3BlcmF0b3IuXCIpO1xuICB9XG5cbiAgdmFyIHBsdWdpbnMgPSBvcHRpb25zLnBsdWdpbnM7IGlmICggcGx1Z2lucyA9PT0gdm9pZCAwICkgcGx1Z2lucyA9IFtdO1xuICB2YXIgc3RyaWN0ID0gb3B0aW9ucy5zdHJpY3Q7IGlmICggc3RyaWN0ID09PSB2b2lkIDAgKSBzdHJpY3QgPSBmYWxzZTtcbiAgdmFyIGRldnRvb2xzID0gb3B0aW9ucy5kZXZ0b29scztcblxuICAvLyBzdG9yZSBpbnRlcm5hbCBzdGF0ZVxuICB0aGlzLl9jb21taXR0aW5nID0gZmFsc2U7XG4gIHRoaXMuX2FjdGlvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB0aGlzLl9hY3Rpb25TdWJzY3JpYmVycyA9IFtdO1xuICB0aGlzLl9tdXRhdGlvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB0aGlzLl93cmFwcGVkR2V0dGVycyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHRoaXMuX21vZHVsZXMgPSBuZXcgTW9kdWxlQ29sbGVjdGlvbihvcHRpb25zKTtcbiAgdGhpcy5fbW9kdWxlc05hbWVzcGFjZU1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHRoaXMuX3N1YnNjcmliZXJzID0gW107XG4gIHRoaXMuX21ha2VMb2NhbEdldHRlcnNDYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHRoaXMuX2RldnRvb2xzID0gZGV2dG9vbHM7XG5cbiAgLy8gYmluZCBjb21taXQgYW5kIGRpc3BhdGNoIHRvIHNlbGZcbiAgdmFyIHN0b3JlID0gdGhpcztcbiAgdmFyIHJlZiA9IHRoaXM7XG4gIHZhciBkaXNwYXRjaCA9IHJlZi5kaXNwYXRjaDtcbiAgdmFyIGNvbW1pdCA9IHJlZi5jb21taXQ7XG4gIHRoaXMuZGlzcGF0Y2ggPSBmdW5jdGlvbiBib3VuZERpc3BhdGNoICh0eXBlLCBwYXlsb2FkKSB7XG4gICAgcmV0dXJuIGRpc3BhdGNoLmNhbGwoc3RvcmUsIHR5cGUsIHBheWxvYWQpXG4gIH07XG4gIHRoaXMuY29tbWl0ID0gZnVuY3Rpb24gYm91bmRDb21taXQgKHR5cGUsIHBheWxvYWQsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gY29tbWl0LmNhbGwoc3RvcmUsIHR5cGUsIHBheWxvYWQsIG9wdGlvbnMpXG4gIH07XG5cbiAgLy8gc3RyaWN0IG1vZGVcbiAgdGhpcy5zdHJpY3QgPSBzdHJpY3Q7XG5cbiAgdmFyIHN0YXRlID0gdGhpcy5fbW9kdWxlcy5yb290LnN0YXRlO1xuXG4gIC8vIGluaXQgcm9vdCBtb2R1bGUuXG4gIC8vIHRoaXMgYWxzbyByZWN1cnNpdmVseSByZWdpc3RlcnMgYWxsIHN1Yi1tb2R1bGVzXG4gIC8vIGFuZCBjb2xsZWN0cyBhbGwgbW9kdWxlIGdldHRlcnMgaW5zaWRlIHRoaXMuX3dyYXBwZWRHZXR0ZXJzXG4gIGluc3RhbGxNb2R1bGUodGhpcywgc3RhdGUsIFtdLCB0aGlzLl9tb2R1bGVzLnJvb3QpO1xuXG4gIC8vIGluaXRpYWxpemUgdGhlIHN0b3JlIHN0YXRlLCB3aGljaCBpcyByZXNwb25zaWJsZSBmb3IgdGhlIHJlYWN0aXZpdHlcbiAgLy8gKGFsc28gcmVnaXN0ZXJzIF93cmFwcGVkR2V0dGVycyBhcyBjb21wdXRlZCBwcm9wZXJ0aWVzKVxuICByZXNldFN0b3JlU3RhdGUodGhpcywgc3RhdGUpO1xuXG4gIC8vIGFwcGx5IHBsdWdpbnNcbiAgcGx1Z2lucy5mb3JFYWNoKGZ1bmN0aW9uIChwbHVnaW4pIHsgcmV0dXJuIHBsdWdpbih0aGlzJDEkMSk7IH0pO1xufTtcblxudmFyIHByb3RvdHlwZUFjY2Vzc29ycyA9IHsgc3RhdGU6IHsgY29uZmlndXJhYmxlOiB0cnVlIH0gfTtcblxuU3RvcmUucHJvdG90eXBlLmluc3RhbGwgPSBmdW5jdGlvbiBpbnN0YWxsIChhcHAsIGluamVjdEtleSkge1xuICBhcHAucHJvdmlkZShpbmplY3RLZXkgfHwgc3RvcmVLZXksIHRoaXMpO1xuICBhcHAuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMuJHN0b3JlID0gdGhpcztcblxuICB2YXIgdXNlRGV2dG9vbHMgPSB0aGlzLl9kZXZ0b29scyAhPT0gdW5kZWZpbmVkXG4gICAgPyB0aGlzLl9kZXZ0b29sc1xuICAgIDogKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXztcblxuICBpZiAodXNlRGV2dG9vbHMpIHtcbiAgICBhZGREZXZ0b29scyhhcHAsIHRoaXMpO1xuICB9XG59O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMuc3RhdGUuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5fc3RhdGUuZGF0YVxufTtcblxucHJvdG90eXBlQWNjZXNzb3JzLnN0YXRlLnNldCA9IGZ1bmN0aW9uICh2KSB7XG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICBhc3NlcnQoZmFsc2UsIFwidXNlIHN0b3JlLnJlcGxhY2VTdGF0ZSgpIHRvIGV4cGxpY2l0IHJlcGxhY2Ugc3RvcmUgc3RhdGUuXCIpO1xuICB9XG59O1xuXG5TdG9yZS5wcm90b3R5cGUuY29tbWl0ID0gZnVuY3Rpb24gY29tbWl0IChfdHlwZSwgX3BheWxvYWQsIF9vcHRpb25zKSB7XG4gICAgdmFyIHRoaXMkMSQxID0gdGhpcztcblxuICAvLyBjaGVjayBvYmplY3Qtc3R5bGUgY29tbWl0XG4gIHZhciByZWYgPSB1bmlmeU9iamVjdFN0eWxlKF90eXBlLCBfcGF5bG9hZCwgX29wdGlvbnMpO1xuICAgIHZhciB0eXBlID0gcmVmLnR5cGU7XG4gICAgdmFyIHBheWxvYWQgPSByZWYucGF5bG9hZDtcbiAgICB2YXIgb3B0aW9ucyA9IHJlZi5vcHRpb25zO1xuXG4gIHZhciBtdXRhdGlvbiA9IHsgdHlwZTogdHlwZSwgcGF5bG9hZDogcGF5bG9hZCB9O1xuICB2YXIgZW50cnkgPSB0aGlzLl9tdXRhdGlvbnNbdHlwZV07XG4gIGlmICghZW50cnkpIHtcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSB1bmtub3duIG11dGF0aW9uIHR5cGU6IFwiICsgdHlwZSkpO1xuICAgIH1cbiAgICByZXR1cm5cbiAgfVxuICB0aGlzLl93aXRoQ29tbWl0KGZ1bmN0aW9uICgpIHtcbiAgICBlbnRyeS5mb3JFYWNoKGZ1bmN0aW9uIGNvbW1pdEl0ZXJhdG9yIChoYW5kbGVyKSB7XG4gICAgICBoYW5kbGVyKHBheWxvYWQpO1xuICAgIH0pO1xuICB9KTtcblxuICB0aGlzLl9zdWJzY3JpYmVyc1xuICAgIC5zbGljZSgpIC8vIHNoYWxsb3cgY29weSB0byBwcmV2ZW50IGl0ZXJhdG9yIGludmFsaWRhdGlvbiBpZiBzdWJzY3JpYmVyIHN5bmNocm9ub3VzbHkgY2FsbHMgdW5zdWJzY3JpYmVcbiAgICAuZm9yRWFjaChmdW5jdGlvbiAoc3ViKSB7IHJldHVybiBzdWIobXV0YXRpb24sIHRoaXMkMSQxLnN0YXRlKTsgfSk7XG5cbiAgaWYgKFxuICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxuICAgIG9wdGlvbnMgJiYgb3B0aW9ucy5zaWxlbnRcbiAgKSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgXCJbdnVleF0gbXV0YXRpb24gdHlwZTogXCIgKyB0eXBlICsgXCIuIFNpbGVudCBvcHRpb24gaGFzIGJlZW4gcmVtb3ZlZC4gXCIgK1xuICAgICAgJ1VzZSB0aGUgZmlsdGVyIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIHZ1ZS1kZXZ0b29scydcbiAgICApO1xuICB9XG59O1xuXG5TdG9yZS5wcm90b3R5cGUuZGlzcGF0Y2ggPSBmdW5jdGlvbiBkaXNwYXRjaCAoX3R5cGUsIF9wYXlsb2FkKSB7XG4gICAgdmFyIHRoaXMkMSQxID0gdGhpcztcblxuICAvLyBjaGVjayBvYmplY3Qtc3R5bGUgZGlzcGF0Y2hcbiAgdmFyIHJlZiA9IHVuaWZ5T2JqZWN0U3R5bGUoX3R5cGUsIF9wYXlsb2FkKTtcbiAgICB2YXIgdHlwZSA9IHJlZi50eXBlO1xuICAgIHZhciBwYXlsb2FkID0gcmVmLnBheWxvYWQ7XG5cbiAgdmFyIGFjdGlvbiA9IHsgdHlwZTogdHlwZSwgcGF5bG9hZDogcGF5bG9hZCB9O1xuICB2YXIgZW50cnkgPSB0aGlzLl9hY3Rpb25zW3R5cGVdO1xuICBpZiAoIWVudHJ5KSB7XG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgY29uc29sZS5lcnJvcigoXCJbdnVleF0gdW5rbm93biBhY3Rpb24gdHlwZTogXCIgKyB0eXBlKSk7XG4gICAgfVxuICAgIHJldHVyblxuICB9XG5cbiAgdHJ5IHtcbiAgICB0aGlzLl9hY3Rpb25TdWJzY3JpYmVyc1xuICAgICAgLnNsaWNlKCkgLy8gc2hhbGxvdyBjb3B5IHRvIHByZXZlbnQgaXRlcmF0b3IgaW52YWxpZGF0aW9uIGlmIHN1YnNjcmliZXIgc3luY2hyb25vdXNseSBjYWxscyB1bnN1YnNjcmliZVxuICAgICAgLmZpbHRlcihmdW5jdGlvbiAoc3ViKSB7IHJldHVybiBzdWIuYmVmb3JlOyB9KVxuICAgICAgLmZvckVhY2goZnVuY3Rpb24gKHN1YikgeyByZXR1cm4gc3ViLmJlZm9yZShhY3Rpb24sIHRoaXMkMSQxLnN0YXRlKTsgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJbdnVleF0gZXJyb3IgaW4gYmVmb3JlIGFjdGlvbiBzdWJzY3JpYmVyczogXCIpO1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG4gIH1cblxuICB2YXIgcmVzdWx0ID0gZW50cnkubGVuZ3RoID4gMVxuICAgID8gUHJvbWlzZS5hbGwoZW50cnkubWFwKGZ1bmN0aW9uIChoYW5kbGVyKSB7IHJldHVybiBoYW5kbGVyKHBheWxvYWQpOyB9KSlcbiAgICA6IGVudHJ5WzBdKHBheWxvYWQpO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgcmVzdWx0LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcyQxJDEuX2FjdGlvblN1YnNjcmliZXJzXG4gICAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAoc3ViKSB7IHJldHVybiBzdWIuYWZ0ZXI7IH0pXG4gICAgICAgICAgLmZvckVhY2goZnVuY3Rpb24gKHN1YikgeyByZXR1cm4gc3ViLmFmdGVyKGFjdGlvbiwgdGhpcyQxJDEuc3RhdGUpOyB9KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcIlt2dWV4XSBlcnJvciBpbiBhZnRlciBhY3Rpb24gc3Vic2NyaWJlcnM6IFwiKTtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXNvbHZlKHJlcyk7XG4gICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzJDEkMS5fYWN0aW9uU3Vic2NyaWJlcnNcbiAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChzdWIpIHsgcmV0dXJuIHN1Yi5lcnJvcjsgfSlcbiAgICAgICAgICAuZm9yRWFjaChmdW5jdGlvbiAoc3ViKSB7IHJldHVybiBzdWIuZXJyb3IoYWN0aW9uLCB0aGlzJDEkMS5zdGF0ZSwgZXJyb3IpOyB9KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcIlt2dWV4XSBlcnJvciBpbiBlcnJvciBhY3Rpb24gc3Vic2NyaWJlcnM6IFwiKTtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZWplY3QoZXJyb3IpO1xuICAgIH0pO1xuICB9KVxufTtcblxuU3RvcmUucHJvdG90eXBlLnN1YnNjcmliZSA9IGZ1bmN0aW9uIHN1YnNjcmliZSAoZm4sIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGdlbmVyaWNTdWJzY3JpYmUoZm4sIHRoaXMuX3N1YnNjcmliZXJzLCBvcHRpb25zKVxufTtcblxuU3RvcmUucHJvdG90eXBlLnN1YnNjcmliZUFjdGlvbiA9IGZ1bmN0aW9uIHN1YnNjcmliZUFjdGlvbiAoZm4sIG9wdGlvbnMpIHtcbiAgdmFyIHN1YnMgPSB0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicgPyB7IGJlZm9yZTogZm4gfSA6IGZuO1xuICByZXR1cm4gZ2VuZXJpY1N1YnNjcmliZShzdWJzLCB0aGlzLl9hY3Rpb25TdWJzY3JpYmVycywgb3B0aW9ucylcbn07XG5cblN0b3JlLnByb3RvdHlwZS53YXRjaCA9IGZ1bmN0aW9uIHdhdGNoJDEgKGdldHRlciwgY2IsIG9wdGlvbnMpIHtcbiAgICB2YXIgdGhpcyQxJDEgPSB0aGlzO1xuXG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICBhc3NlcnQodHlwZW9mIGdldHRlciA9PT0gJ2Z1bmN0aW9uJywgXCJzdG9yZS53YXRjaCBvbmx5IGFjY2VwdHMgYSBmdW5jdGlvbi5cIik7XG4gIH1cbiAgcmV0dXJuIHdhdGNoKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGdldHRlcih0aGlzJDEkMS5zdGF0ZSwgdGhpcyQxJDEuZ2V0dGVycyk7IH0sIGNiLCBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zKSlcbn07XG5cblN0b3JlLnByb3RvdHlwZS5yZXBsYWNlU3RhdGUgPSBmdW5jdGlvbiByZXBsYWNlU3RhdGUgKHN0YXRlKSB7XG4gICAgdmFyIHRoaXMkMSQxID0gdGhpcztcblxuICB0aGlzLl93aXRoQ29tbWl0KGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzJDEkMS5fc3RhdGUuZGF0YSA9IHN0YXRlO1xuICB9KTtcbn07XG5cblN0b3JlLnByb3RvdHlwZS5yZWdpc3Rlck1vZHVsZSA9IGZ1bmN0aW9uIHJlZ2lzdGVyTW9kdWxlIChwYXRoLCByYXdNb2R1bGUsIG9wdGlvbnMpIHtcbiAgICBpZiAoIG9wdGlvbnMgPT09IHZvaWQgMCApIG9wdGlvbnMgPSB7fTtcblxuICBpZiAodHlwZW9mIHBhdGggPT09ICdzdHJpbmcnKSB7IHBhdGggPSBbcGF0aF07IH1cblxuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgYXNzZXJ0KEFycmF5LmlzQXJyYXkocGF0aCksIFwibW9kdWxlIHBhdGggbXVzdCBiZSBhIHN0cmluZyBvciBhbiBBcnJheS5cIik7XG4gICAgYXNzZXJ0KHBhdGgubGVuZ3RoID4gMCwgJ2Nhbm5vdCByZWdpc3RlciB0aGUgcm9vdCBtb2R1bGUgYnkgdXNpbmcgcmVnaXN0ZXJNb2R1bGUuJyk7XG4gIH1cblxuICB0aGlzLl9tb2R1bGVzLnJlZ2lzdGVyKHBhdGgsIHJhd01vZHVsZSk7XG4gIGluc3RhbGxNb2R1bGUodGhpcywgdGhpcy5zdGF0ZSwgcGF0aCwgdGhpcy5fbW9kdWxlcy5nZXQocGF0aCksIG9wdGlvbnMucHJlc2VydmVTdGF0ZSk7XG4gIC8vIHJlc2V0IHN0b3JlIHRvIHVwZGF0ZSBnZXR0ZXJzLi4uXG4gIHJlc2V0U3RvcmVTdGF0ZSh0aGlzLCB0aGlzLnN0YXRlKTtcbn07XG5cblN0b3JlLnByb3RvdHlwZS51bnJlZ2lzdGVyTW9kdWxlID0gZnVuY3Rpb24gdW5yZWdpc3Rlck1vZHVsZSAocGF0aCkge1xuICAgIHZhciB0aGlzJDEkMSA9IHRoaXM7XG5cbiAgaWYgKHR5cGVvZiBwYXRoID09PSAnc3RyaW5nJykgeyBwYXRoID0gW3BhdGhdOyB9XG5cbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgIGFzc2VydChBcnJheS5pc0FycmF5KHBhdGgpLCBcIm1vZHVsZSBwYXRoIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4gQXJyYXkuXCIpO1xuICB9XG5cbiAgdGhpcy5fbW9kdWxlcy51bnJlZ2lzdGVyKHBhdGgpO1xuICB0aGlzLl93aXRoQ29tbWl0KGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGFyZW50U3RhdGUgPSBnZXROZXN0ZWRTdGF0ZSh0aGlzJDEkMS5zdGF0ZSwgcGF0aC5zbGljZSgwLCAtMSkpO1xuICAgIGRlbGV0ZSBwYXJlbnRTdGF0ZVtwYXRoW3BhdGgubGVuZ3RoIC0gMV1dO1xuICB9KTtcbiAgcmVzZXRTdG9yZSh0aGlzKTtcbn07XG5cblN0b3JlLnByb3RvdHlwZS5oYXNNb2R1bGUgPSBmdW5jdGlvbiBoYXNNb2R1bGUgKHBhdGgpIHtcbiAgaWYgKHR5cGVvZiBwYXRoID09PSAnc3RyaW5nJykgeyBwYXRoID0gW3BhdGhdOyB9XG5cbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgIGFzc2VydChBcnJheS5pc0FycmF5KHBhdGgpLCBcIm1vZHVsZSBwYXRoIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4gQXJyYXkuXCIpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuX21vZHVsZXMuaXNSZWdpc3RlcmVkKHBhdGgpXG59O1xuXG5TdG9yZS5wcm90b3R5cGUuaG90VXBkYXRlID0gZnVuY3Rpb24gaG90VXBkYXRlIChuZXdPcHRpb25zKSB7XG4gIHRoaXMuX21vZHVsZXMudXBkYXRlKG5ld09wdGlvbnMpO1xuICByZXNldFN0b3JlKHRoaXMsIHRydWUpO1xufTtcblxuU3RvcmUucHJvdG90eXBlLl93aXRoQ29tbWl0ID0gZnVuY3Rpb24gX3dpdGhDb21taXQgKGZuKSB7XG4gIHZhciBjb21taXR0aW5nID0gdGhpcy5fY29tbWl0dGluZztcbiAgdGhpcy5fY29tbWl0dGluZyA9IHRydWU7XG4gIGZuKCk7XG4gIHRoaXMuX2NvbW1pdHRpbmcgPSBjb21taXR0aW5nO1xufTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoIFN0b3JlLnByb3RvdHlwZSwgcHJvdG90eXBlQWNjZXNzb3JzICk7XG5cbi8qKlxuICogUmVkdWNlIHRoZSBjb2RlIHdoaWNoIHdyaXR0ZW4gaW4gVnVlLmpzIGZvciBnZXR0aW5nIHRoZSBzdGF0ZS5cbiAqIEBwYXJhbSB7U3RyaW5nfSBbbmFtZXNwYWNlXSAtIE1vZHVsZSdzIG5hbWVzcGFjZVxuICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IHN0YXRlcyAjIE9iamVjdCdzIGl0ZW0gY2FuIGJlIGEgZnVuY3Rpb24gd2hpY2ggYWNjZXB0IHN0YXRlIGFuZCBnZXR0ZXJzIGZvciBwYXJhbSwgeW91IGNhbiBkbyBzb21ldGhpbmcgZm9yIHN0YXRlIGFuZCBnZXR0ZXJzIGluIGl0LlxuICogQHBhcmFtIHtPYmplY3R9XG4gKi9cbnZhciBtYXBTdGF0ZSA9IG5vcm1hbGl6ZU5hbWVzcGFjZShmdW5jdGlvbiAobmFtZXNwYWNlLCBzdGF0ZXMpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpc1ZhbGlkTWFwKHN0YXRlcykpIHtcbiAgICBjb25zb2xlLmVycm9yKCdbdnVleF0gbWFwU3RhdGU6IG1hcHBlciBwYXJhbWV0ZXIgbXVzdCBiZSBlaXRoZXIgYW4gQXJyYXkgb3IgYW4gT2JqZWN0Jyk7XG4gIH1cbiAgbm9ybWFsaXplTWFwKHN0YXRlcykuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgdmFyIGtleSA9IHJlZi5rZXk7XG4gICAgdmFyIHZhbCA9IHJlZi52YWw7XG5cbiAgICByZXNba2V5XSA9IGZ1bmN0aW9uIG1hcHBlZFN0YXRlICgpIHtcbiAgICAgIHZhciBzdGF0ZSA9IHRoaXMuJHN0b3JlLnN0YXRlO1xuICAgICAgdmFyIGdldHRlcnMgPSB0aGlzLiRzdG9yZS5nZXR0ZXJzO1xuICAgICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgICB2YXIgbW9kdWxlID0gZ2V0TW9kdWxlQnlOYW1lc3BhY2UodGhpcy4kc3RvcmUsICdtYXBTdGF0ZScsIG5hbWVzcGFjZSk7XG4gICAgICAgIGlmICghbW9kdWxlKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUgPSBtb2R1bGUuY29udGV4dC5zdGF0ZTtcbiAgICAgICAgZ2V0dGVycyA9IG1vZHVsZS5jb250ZXh0LmdldHRlcnM7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IHZhbC5jYWxsKHRoaXMsIHN0YXRlLCBnZXR0ZXJzKVxuICAgICAgICA6IHN0YXRlW3ZhbF1cbiAgICB9O1xuICAgIC8vIG1hcmsgdnVleCBnZXR0ZXIgZm9yIGRldnRvb2xzXG4gICAgcmVzW2tleV0udnVleCA9IHRydWU7XG4gIH0pO1xuICByZXR1cm4gcmVzXG59KTtcblxuLyoqXG4gKiBSZWR1Y2UgdGhlIGNvZGUgd2hpY2ggd3JpdHRlbiBpbiBWdWUuanMgZm9yIGNvbW1pdHRpbmcgdGhlIG11dGF0aW9uXG4gKiBAcGFyYW0ge1N0cmluZ30gW25hbWVzcGFjZV0gLSBNb2R1bGUncyBuYW1lc3BhY2VcbiAqIEBwYXJhbSB7T2JqZWN0fEFycmF5fSBtdXRhdGlvbnMgIyBPYmplY3QncyBpdGVtIGNhbiBiZSBhIGZ1bmN0aW9uIHdoaWNoIGFjY2VwdCBgY29tbWl0YCBmdW5jdGlvbiBhcyB0aGUgZmlyc3QgcGFyYW0sIGl0IGNhbiBhY2NlcHQgYW5vdGhlciBwYXJhbXMuIFlvdSBjYW4gY29tbWl0IG11dGF0aW9uIGFuZCBkbyBhbnkgb3RoZXIgdGhpbmdzIGluIHRoaXMgZnVuY3Rpb24uIHNwZWNpYWxseSwgWW91IG5lZWQgdG8gcGFzcyBhbnRob3IgcGFyYW1zIGZyb20gdGhlIG1hcHBlZCBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xudmFyIG1hcE11dGF0aW9ucyA9IG5vcm1hbGl6ZU5hbWVzcGFjZShmdW5jdGlvbiAobmFtZXNwYWNlLCBtdXRhdGlvbnMpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpc1ZhbGlkTWFwKG11dGF0aW9ucykpIHtcbiAgICBjb25zb2xlLmVycm9yKCdbdnVleF0gbWFwTXV0YXRpb25zOiBtYXBwZXIgcGFyYW1ldGVyIG11c3QgYmUgZWl0aGVyIGFuIEFycmF5IG9yIGFuIE9iamVjdCcpO1xuICB9XG4gIG5vcm1hbGl6ZU1hcChtdXRhdGlvbnMpLmZvckVhY2goZnVuY3Rpb24gKHJlZikge1xuICAgIHZhciBrZXkgPSByZWYua2V5O1xuICAgIHZhciB2YWwgPSByZWYudmFsO1xuXG4gICAgcmVzW2tleV0gPSBmdW5jdGlvbiBtYXBwZWRNdXRhdGlvbiAoKSB7XG4gICAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgICAgd2hpbGUgKCBsZW4tLSApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gXTtcblxuICAgICAgLy8gR2V0IHRoZSBjb21taXQgbWV0aG9kIGZyb20gc3RvcmVcbiAgICAgIHZhciBjb21taXQgPSB0aGlzLiRzdG9yZS5jb21taXQ7XG4gICAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICAgIHZhciBtb2R1bGUgPSBnZXRNb2R1bGVCeU5hbWVzcGFjZSh0aGlzLiRzdG9yZSwgJ21hcE11dGF0aW9ucycsIG5hbWVzcGFjZSk7XG4gICAgICAgIGlmICghbW9kdWxlKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgY29tbWl0ID0gbW9kdWxlLmNvbnRleHQuY29tbWl0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyB2YWwuYXBwbHkodGhpcywgW2NvbW1pdF0uY29uY2F0KGFyZ3MpKVxuICAgICAgICA6IGNvbW1pdC5hcHBseSh0aGlzLiRzdG9yZSwgW3ZhbF0uY29uY2F0KGFyZ3MpKVxuICAgIH07XG4gIH0pO1xuICByZXR1cm4gcmVzXG59KTtcblxuLyoqXG4gKiBSZWR1Y2UgdGhlIGNvZGUgd2hpY2ggd3JpdHRlbiBpbiBWdWUuanMgZm9yIGdldHRpbmcgdGhlIGdldHRlcnNcbiAqIEBwYXJhbSB7U3RyaW5nfSBbbmFtZXNwYWNlXSAtIE1vZHVsZSdzIG5hbWVzcGFjZVxuICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IGdldHRlcnNcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xudmFyIG1hcEdldHRlcnMgPSBub3JtYWxpemVOYW1lc3BhY2UoZnVuY3Rpb24gKG5hbWVzcGFjZSwgZ2V0dGVycykge1xuICB2YXIgcmVzID0ge307XG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzVmFsaWRNYXAoZ2V0dGVycykpIHtcbiAgICBjb25zb2xlLmVycm9yKCdbdnVleF0gbWFwR2V0dGVyczogbWFwcGVyIHBhcmFtZXRlciBtdXN0IGJlIGVpdGhlciBhbiBBcnJheSBvciBhbiBPYmplY3QnKTtcbiAgfVxuICBub3JtYWxpemVNYXAoZ2V0dGVycykuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgdmFyIGtleSA9IHJlZi5rZXk7XG4gICAgdmFyIHZhbCA9IHJlZi52YWw7XG5cbiAgICAvLyBUaGUgbmFtZXNwYWNlIGhhcyBiZWVuIG11dGF0ZWQgYnkgbm9ybWFsaXplTmFtZXNwYWNlXG4gICAgdmFsID0gbmFtZXNwYWNlICsgdmFsO1xuICAgIHJlc1trZXldID0gZnVuY3Rpb24gbWFwcGVkR2V0dGVyICgpIHtcbiAgICAgIGlmIChuYW1lc3BhY2UgJiYgIWdldE1vZHVsZUJ5TmFtZXNwYWNlKHRoaXMuJHN0b3JlLCAnbWFwR2V0dGVycycsIG5hbWVzcGFjZSkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICEodmFsIGluIHRoaXMuJHN0b3JlLmdldHRlcnMpKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoKFwiW3Z1ZXhdIHVua25vd24gZ2V0dGVyOiBcIiArIHZhbCkpO1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW3ZhbF1cbiAgICB9O1xuICAgIC8vIG1hcmsgdnVleCBnZXR0ZXIgZm9yIGRldnRvb2xzXG4gICAgcmVzW2tleV0udnVleCA9IHRydWU7XG4gIH0pO1xuICByZXR1cm4gcmVzXG59KTtcblxuLyoqXG4gKiBSZWR1Y2UgdGhlIGNvZGUgd2hpY2ggd3JpdHRlbiBpbiBWdWUuanMgZm9yIGRpc3BhdGNoIHRoZSBhY3Rpb25cbiAqIEBwYXJhbSB7U3RyaW5nfSBbbmFtZXNwYWNlXSAtIE1vZHVsZSdzIG5hbWVzcGFjZVxuICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IGFjdGlvbnMgIyBPYmplY3QncyBpdGVtIGNhbiBiZSBhIGZ1bmN0aW9uIHdoaWNoIGFjY2VwdCBgZGlzcGF0Y2hgIGZ1bmN0aW9uIGFzIHRoZSBmaXJzdCBwYXJhbSwgaXQgY2FuIGFjY2VwdCBhbnRob3IgcGFyYW1zLiBZb3UgY2FuIGRpc3BhdGNoIGFjdGlvbiBhbmQgZG8gYW55IG90aGVyIHRoaW5ncyBpbiB0aGlzIGZ1bmN0aW9uLiBzcGVjaWFsbHksIFlvdSBuZWVkIHRvIHBhc3MgYW50aG9yIHBhcmFtcyBmcm9tIHRoZSBtYXBwZWQgZnVuY3Rpb24uXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKi9cbnZhciBtYXBBY3Rpb25zID0gbm9ybWFsaXplTmFtZXNwYWNlKGZ1bmN0aW9uIChuYW1lc3BhY2UsIGFjdGlvbnMpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpc1ZhbGlkTWFwKGFjdGlvbnMpKSB7XG4gICAgY29uc29sZS5lcnJvcignW3Z1ZXhdIG1hcEFjdGlvbnM6IG1hcHBlciBwYXJhbWV0ZXIgbXVzdCBiZSBlaXRoZXIgYW4gQXJyYXkgb3IgYW4gT2JqZWN0Jyk7XG4gIH1cbiAgbm9ybWFsaXplTWFwKGFjdGlvbnMpLmZvckVhY2goZnVuY3Rpb24gKHJlZikge1xuICAgIHZhciBrZXkgPSByZWYua2V5O1xuICAgIHZhciB2YWwgPSByZWYudmFsO1xuXG4gICAgcmVzW2tleV0gPSBmdW5jdGlvbiBtYXBwZWRBY3Rpb24gKCkge1xuICAgICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICAgIHdoaWxlICggbGVuLS0gKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuIF07XG5cbiAgICAgIC8vIGdldCBkaXNwYXRjaCBmdW5jdGlvbiBmcm9tIHN0b3JlXG4gICAgICB2YXIgZGlzcGF0Y2ggPSB0aGlzLiRzdG9yZS5kaXNwYXRjaDtcbiAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgdmFyIG1vZHVsZSA9IGdldE1vZHVsZUJ5TmFtZXNwYWNlKHRoaXMuJHN0b3JlLCAnbWFwQWN0aW9ucycsIG5hbWVzcGFjZSk7XG4gICAgICAgIGlmICghbW9kdWxlKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgZGlzcGF0Y2ggPSBtb2R1bGUuY29udGV4dC5kaXNwYXRjaDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gdmFsLmFwcGx5KHRoaXMsIFtkaXNwYXRjaF0uY29uY2F0KGFyZ3MpKVxuICAgICAgICA6IGRpc3BhdGNoLmFwcGx5KHRoaXMuJHN0b3JlLCBbdmFsXS5jb25jYXQoYXJncykpXG4gICAgfTtcbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vKipcbiAqIFJlYmluZGluZyBuYW1lc3BhY2UgcGFyYW0gZm9yIG1hcFhYWCBmdW5jdGlvbiBpbiBzcGVjaWFsIHNjb3BlZCwgYW5kIHJldHVybiB0aGVtIGJ5IHNpbXBsZSBvYmplY3RcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2VcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xudmFyIGNyZWF0ZU5hbWVzcGFjZWRIZWxwZXJzID0gZnVuY3Rpb24gKG5hbWVzcGFjZSkgeyByZXR1cm4gKHtcbiAgbWFwU3RhdGU6IG1hcFN0YXRlLmJpbmQobnVsbCwgbmFtZXNwYWNlKSxcbiAgbWFwR2V0dGVyczogbWFwR2V0dGVycy5iaW5kKG51bGwsIG5hbWVzcGFjZSksXG4gIG1hcE11dGF0aW9uczogbWFwTXV0YXRpb25zLmJpbmQobnVsbCwgbmFtZXNwYWNlKSxcbiAgbWFwQWN0aW9uczogbWFwQWN0aW9ucy5iaW5kKG51bGwsIG5hbWVzcGFjZSlcbn0pOyB9O1xuXG4vKipcbiAqIE5vcm1hbGl6ZSB0aGUgbWFwXG4gKiBub3JtYWxpemVNYXAoWzEsIDIsIDNdKSA9PiBbIHsga2V5OiAxLCB2YWw6IDEgfSwgeyBrZXk6IDIsIHZhbDogMiB9LCB7IGtleTogMywgdmFsOiAzIH0gXVxuICogbm9ybWFsaXplTWFwKHthOiAxLCBiOiAyLCBjOiAzfSkgPT4gWyB7IGtleTogJ2EnLCB2YWw6IDEgfSwgeyBrZXk6ICdiJywgdmFsOiAyIH0sIHsga2V5OiAnYycsIHZhbDogMyB9IF1cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBtYXBcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplTWFwIChtYXApIHtcbiAgaWYgKCFpc1ZhbGlkTWFwKG1hcCkpIHtcbiAgICByZXR1cm4gW11cbiAgfVxuICByZXR1cm4gQXJyYXkuaXNBcnJheShtYXApXG4gICAgPyBtYXAubWFwKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuICh7IGtleToga2V5LCB2YWw6IGtleSB9KTsgfSlcbiAgICA6IE9iamVjdC5rZXlzKG1hcCkubWFwKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuICh7IGtleToga2V5LCB2YWw6IG1hcFtrZXldIH0pOyB9KVxufVxuXG4vKipcbiAqIFZhbGlkYXRlIHdoZXRoZXIgZ2l2ZW4gbWFwIGlzIHZhbGlkIG9yIG5vdFxuICogQHBhcmFtIHsqfSBtYXBcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRNYXAgKG1hcCkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShtYXApIHx8IGlzT2JqZWN0KG1hcClcbn1cblxuLyoqXG4gKiBSZXR1cm4gYSBmdW5jdGlvbiBleHBlY3QgdHdvIHBhcmFtIGNvbnRhaW5zIG5hbWVzcGFjZSBhbmQgbWFwLiBpdCB3aWxsIG5vcm1hbGl6ZSB0aGUgbmFtZXNwYWNlIGFuZCB0aGVuIHRoZSBwYXJhbSdzIGZ1bmN0aW9uIHdpbGwgaGFuZGxlIHRoZSBuZXcgbmFtZXNwYWNlIGFuZCB0aGUgbWFwLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm5cbiAqIEByZXR1cm4ge0Z1bmN0aW9ufVxuICovXG5mdW5jdGlvbiBub3JtYWxpemVOYW1lc3BhY2UgKGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAobmFtZXNwYWNlLCBtYXApIHtcbiAgICBpZiAodHlwZW9mIG5hbWVzcGFjZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIG1hcCA9IG5hbWVzcGFjZTtcbiAgICAgIG5hbWVzcGFjZSA9ICcnO1xuICAgIH0gZWxzZSBpZiAobmFtZXNwYWNlLmNoYXJBdChuYW1lc3BhY2UubGVuZ3RoIC0gMSkgIT09ICcvJykge1xuICAgICAgbmFtZXNwYWNlICs9ICcvJztcbiAgICB9XG4gICAgcmV0dXJuIGZuKG5hbWVzcGFjZSwgbWFwKVxuICB9XG59XG5cbi8qKlxuICogU2VhcmNoIGEgc3BlY2lhbCBtb2R1bGUgZnJvbSBzdG9yZSBieSBuYW1lc3BhY2UuIGlmIG1vZHVsZSBub3QgZXhpc3QsIHByaW50IGVycm9yIG1lc3NhZ2UuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RvcmVcbiAqIEBwYXJhbSB7U3RyaW5nfSBoZWxwZXJcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2VcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xuZnVuY3Rpb24gZ2V0TW9kdWxlQnlOYW1lc3BhY2UgKHN0b3JlLCBoZWxwZXIsIG5hbWVzcGFjZSkge1xuICB2YXIgbW9kdWxlID0gc3RvcmUuX21vZHVsZXNOYW1lc3BhY2VNYXBbbmFtZXNwYWNlXTtcbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhbW9kdWxlKSB7XG4gICAgY29uc29sZS5lcnJvcigoXCJbdnVleF0gbW9kdWxlIG5hbWVzcGFjZSBub3QgZm91bmQgaW4gXCIgKyBoZWxwZXIgKyBcIigpOiBcIiArIG5hbWVzcGFjZSkpO1xuICB9XG4gIHJldHVybiBtb2R1bGVcbn1cblxuLy8gQ3JlZGl0czogYm9ycm93ZWQgY29kZSBmcm9tIGZjb21iL3JlZHV4LWxvZ2dlclxuXG5mdW5jdGlvbiBjcmVhdGVMb2dnZXIgKHJlZikge1xuICBpZiAoIHJlZiA9PT0gdm9pZCAwICkgcmVmID0ge307XG4gIHZhciBjb2xsYXBzZWQgPSByZWYuY29sbGFwc2VkOyBpZiAoIGNvbGxhcHNlZCA9PT0gdm9pZCAwICkgY29sbGFwc2VkID0gdHJ1ZTtcbiAgdmFyIGZpbHRlciA9IHJlZi5maWx0ZXI7IGlmICggZmlsdGVyID09PSB2b2lkIDAgKSBmaWx0ZXIgPSBmdW5jdGlvbiAobXV0YXRpb24sIHN0YXRlQmVmb3JlLCBzdGF0ZUFmdGVyKSB7IHJldHVybiB0cnVlOyB9O1xuICB2YXIgdHJhbnNmb3JtZXIgPSByZWYudHJhbnNmb3JtZXI7IGlmICggdHJhbnNmb3JtZXIgPT09IHZvaWQgMCApIHRyYW5zZm9ybWVyID0gZnVuY3Rpb24gKHN0YXRlKSB7IHJldHVybiBzdGF0ZTsgfTtcbiAgdmFyIG11dGF0aW9uVHJhbnNmb3JtZXIgPSByZWYubXV0YXRpb25UcmFuc2Zvcm1lcjsgaWYgKCBtdXRhdGlvblRyYW5zZm9ybWVyID09PSB2b2lkIDAgKSBtdXRhdGlvblRyYW5zZm9ybWVyID0gZnVuY3Rpb24gKG11dCkgeyByZXR1cm4gbXV0OyB9O1xuICB2YXIgYWN0aW9uRmlsdGVyID0gcmVmLmFjdGlvbkZpbHRlcjsgaWYgKCBhY3Rpb25GaWx0ZXIgPT09IHZvaWQgMCApIGFjdGlvbkZpbHRlciA9IGZ1bmN0aW9uIChhY3Rpb24sIHN0YXRlKSB7IHJldHVybiB0cnVlOyB9O1xuICB2YXIgYWN0aW9uVHJhbnNmb3JtZXIgPSByZWYuYWN0aW9uVHJhbnNmb3JtZXI7IGlmICggYWN0aW9uVHJhbnNmb3JtZXIgPT09IHZvaWQgMCApIGFjdGlvblRyYW5zZm9ybWVyID0gZnVuY3Rpb24gKGFjdCkgeyByZXR1cm4gYWN0OyB9O1xuICB2YXIgbG9nTXV0YXRpb25zID0gcmVmLmxvZ011dGF0aW9uczsgaWYgKCBsb2dNdXRhdGlvbnMgPT09IHZvaWQgMCApIGxvZ011dGF0aW9ucyA9IHRydWU7XG4gIHZhciBsb2dBY3Rpb25zID0gcmVmLmxvZ0FjdGlvbnM7IGlmICggbG9nQWN0aW9ucyA9PT0gdm9pZCAwICkgbG9nQWN0aW9ucyA9IHRydWU7XG4gIHZhciBsb2dnZXIgPSByZWYubG9nZ2VyOyBpZiAoIGxvZ2dlciA9PT0gdm9pZCAwICkgbG9nZ2VyID0gY29uc29sZTtcblxuICByZXR1cm4gZnVuY3Rpb24gKHN0b3JlKSB7XG4gICAgdmFyIHByZXZTdGF0ZSA9IGRlZXBDb3B5KHN0b3JlLnN0YXRlKTtcblxuICAgIGlmICh0eXBlb2YgbG9nZ2VyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGxvZ011dGF0aW9ucykge1xuICAgICAgc3RvcmUuc3Vic2NyaWJlKGZ1bmN0aW9uIChtdXRhdGlvbiwgc3RhdGUpIHtcbiAgICAgICAgdmFyIG5leHRTdGF0ZSA9IGRlZXBDb3B5KHN0YXRlKTtcblxuICAgICAgICBpZiAoZmlsdGVyKG11dGF0aW9uLCBwcmV2U3RhdGUsIG5leHRTdGF0ZSkpIHtcbiAgICAgICAgICB2YXIgZm9ybWF0dGVkVGltZSA9IGdldEZvcm1hdHRlZFRpbWUoKTtcbiAgICAgICAgICB2YXIgZm9ybWF0dGVkTXV0YXRpb24gPSBtdXRhdGlvblRyYW5zZm9ybWVyKG11dGF0aW9uKTtcbiAgICAgICAgICB2YXIgbWVzc2FnZSA9IFwibXV0YXRpb24gXCIgKyAobXV0YXRpb24udHlwZSkgKyBmb3JtYXR0ZWRUaW1lO1xuXG4gICAgICAgICAgc3RhcnRNZXNzYWdlKGxvZ2dlciwgbWVzc2FnZSwgY29sbGFwc2VkKTtcbiAgICAgICAgICBsb2dnZXIubG9nKCclYyBwcmV2IHN0YXRlJywgJ2NvbG9yOiAjOUU5RTlFOyBmb250LXdlaWdodDogYm9sZCcsIHRyYW5zZm9ybWVyKHByZXZTdGF0ZSkpO1xuICAgICAgICAgIGxvZ2dlci5sb2coJyVjIG11dGF0aW9uJywgJ2NvbG9yOiAjMDNBOUY0OyBmb250LXdlaWdodDogYm9sZCcsIGZvcm1hdHRlZE11dGF0aW9uKTtcbiAgICAgICAgICBsb2dnZXIubG9nKCclYyBuZXh0IHN0YXRlJywgJ2NvbG9yOiAjNENBRjUwOyBmb250LXdlaWdodDogYm9sZCcsIHRyYW5zZm9ybWVyKG5leHRTdGF0ZSkpO1xuICAgICAgICAgIGVuZE1lc3NhZ2UobG9nZ2VyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByZXZTdGF0ZSA9IG5leHRTdGF0ZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChsb2dBY3Rpb25zKSB7XG4gICAgICBzdG9yZS5zdWJzY3JpYmVBY3Rpb24oZnVuY3Rpb24gKGFjdGlvbiwgc3RhdGUpIHtcbiAgICAgICAgaWYgKGFjdGlvbkZpbHRlcihhY3Rpb24sIHN0YXRlKSkge1xuICAgICAgICAgIHZhciBmb3JtYXR0ZWRUaW1lID0gZ2V0Rm9ybWF0dGVkVGltZSgpO1xuICAgICAgICAgIHZhciBmb3JtYXR0ZWRBY3Rpb24gPSBhY3Rpb25UcmFuc2Zvcm1lcihhY3Rpb24pO1xuICAgICAgICAgIHZhciBtZXNzYWdlID0gXCJhY3Rpb24gXCIgKyAoYWN0aW9uLnR5cGUpICsgZm9ybWF0dGVkVGltZTtcblxuICAgICAgICAgIHN0YXJ0TWVzc2FnZShsb2dnZXIsIG1lc3NhZ2UsIGNvbGxhcHNlZCk7XG4gICAgICAgICAgbG9nZ2VyLmxvZygnJWMgYWN0aW9uJywgJ2NvbG9yOiAjMDNBOUY0OyBmb250LXdlaWdodDogYm9sZCcsIGZvcm1hdHRlZEFjdGlvbik7XG4gICAgICAgICAgZW5kTWVzc2FnZShsb2dnZXIpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc3RhcnRNZXNzYWdlIChsb2dnZXIsIG1lc3NhZ2UsIGNvbGxhcHNlZCkge1xuICB2YXIgc3RhcnRNZXNzYWdlID0gY29sbGFwc2VkXG4gICAgPyBsb2dnZXIuZ3JvdXBDb2xsYXBzZWRcbiAgICA6IGxvZ2dlci5ncm91cDtcblxuICAvLyByZW5kZXJcbiAgdHJ5IHtcbiAgICBzdGFydE1lc3NhZ2UuY2FsbChsb2dnZXIsIG1lc3NhZ2UpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmxvZyhtZXNzYWdlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbmRNZXNzYWdlIChsb2dnZXIpIHtcbiAgdHJ5IHtcbiAgICBsb2dnZXIuZ3JvdXBFbmQoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZ2dlci5sb2coJ+KAlOKAlCBsb2cgZW5kIOKAlOKAlCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEZvcm1hdHRlZFRpbWUgKCkge1xuICB2YXIgdGltZSA9IG5ldyBEYXRlKCk7XG4gIHJldHVybiAoXCIgQCBcIiArIChwYWQodGltZS5nZXRIb3VycygpLCAyKSkgKyBcIjpcIiArIChwYWQodGltZS5nZXRNaW51dGVzKCksIDIpKSArIFwiOlwiICsgKHBhZCh0aW1lLmdldFNlY29uZHMoKSwgMikpICsgXCIuXCIgKyAocGFkKHRpbWUuZ2V0TWlsbGlzZWNvbmRzKCksIDMpKSlcbn1cblxuZnVuY3Rpb24gcmVwZWF0IChzdHIsIHRpbWVzKSB7XG4gIHJldHVybiAobmV3IEFycmF5KHRpbWVzICsgMSkpLmpvaW4oc3RyKVxufVxuXG5mdW5jdGlvbiBwYWQgKG51bSwgbWF4TGVuZ3RoKSB7XG4gIHJldHVybiByZXBlYXQoJzAnLCBtYXhMZW5ndGggLSBudW0udG9TdHJpbmcoKS5sZW5ndGgpICsgbnVtXG59XG5cbnZhciBpbmRleCA9IHtcbiAgdmVyc2lvbjogJzQuMC4yJyxcbiAgU3RvcmU6IFN0b3JlLFxuICBzdG9yZUtleTogc3RvcmVLZXksXG4gIGNyZWF0ZVN0b3JlOiBjcmVhdGVTdG9yZSxcbiAgdXNlU3RvcmU6IHVzZVN0b3JlLFxuICBtYXBTdGF0ZTogbWFwU3RhdGUsXG4gIG1hcE11dGF0aW9uczogbWFwTXV0YXRpb25zLFxuICBtYXBHZXR0ZXJzOiBtYXBHZXR0ZXJzLFxuICBtYXBBY3Rpb25zOiBtYXBBY3Rpb25zLFxuICBjcmVhdGVOYW1lc3BhY2VkSGVscGVyczogY3JlYXRlTmFtZXNwYWNlZEhlbHBlcnMsXG4gIGNyZWF0ZUxvZ2dlcjogY3JlYXRlTG9nZ2VyXG59O1xuXG5leHBvcnQgZGVmYXVsdCBpbmRleDtcbmV4cG9ydCB7IFN0b3JlLCBjcmVhdGVMb2dnZXIsIGNyZWF0ZU5hbWVzcGFjZWRIZWxwZXJzLCBjcmVhdGVTdG9yZSwgbWFwQWN0aW9ucywgbWFwR2V0dGVycywgbWFwTXV0YXRpb25zLCBtYXBTdGF0ZSwgc3RvcmVLZXksIHVzZVN0b3JlIH07XG4iLCJ2YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZ2V0T3duUHJvcERlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xudmFyIF9fZ2V0T3duUHJvcE5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM7XG52YXIgX19oYXNPd25Qcm9wID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX2V4cG9ydCA9ICh0YXJnZXQsIGFsbCkgPT4ge1xuICBmb3IgKHZhciBuYW1lIGluIGFsbClcbiAgICBfX2RlZlByb3AodGFyZ2V0LCBuYW1lLCB7IGdldDogYWxsW25hbWVdLCBlbnVtZXJhYmxlOiB0cnVlIH0pO1xufTtcbnZhciBfX2NvcHlQcm9wcyA9ICh0bywgZnJvbSwgZXhjZXB0LCBkZXNjKSA9PiB7XG4gIGlmIChmcm9tICYmIHR5cGVvZiBmcm9tID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBmcm9tID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBmb3IgKGxldCBrZXkgb2YgX19nZXRPd25Qcm9wTmFtZXMoZnJvbSkpXG4gICAgICBpZiAoIV9faGFzT3duUHJvcC5jYWxsKHRvLCBrZXkpICYmIGtleSAhPT0gZXhjZXB0KVxuICAgICAgICBfX2RlZlByb3AodG8sIGtleSwgeyBnZXQ6ICgpID0+IGZyb21ba2V5XSwgZW51bWVyYWJsZTogIShkZXNjID0gX19nZXRPd25Qcm9wRGVzYyhmcm9tLCBrZXkpKSB8fCBkZXNjLmVudW1lcmFibGUgfSk7XG4gIH1cbiAgcmV0dXJuIHRvO1xufTtcbnZhciBfX3RvQ29tbW9uSlMgPSAobW9kKSA9PiBfX2NvcHlQcm9wcyhfX2RlZlByb3Aoe30sIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pLCBtb2QpO1xuXG4vLyBzcmMvaW5kZXgudHNcbnZhciBzcmNfZXhwb3J0cyA9IHt9O1xuX19leHBvcnQoc3JjX2V4cG9ydHMsIHtcbiAgQ29tYm9ib3g6ICgpID0+IENvbWJvYm94LFxuICBDb21ib2JveEJ1dHRvbjogKCkgPT4gQ29tYm9ib3hCdXR0b24sXG4gIENvbWJvYm94SW5wdXQ6ICgpID0+IENvbWJvYm94SW5wdXQsXG4gIENvbWJvYm94TGFiZWw6ICgpID0+IENvbWJvYm94TGFiZWwsXG4gIENvbWJvYm94T3B0aW9uOiAoKSA9PiBDb21ib2JveE9wdGlvbixcbiAgQ29tYm9ib3hPcHRpb25zOiAoKSA9PiBDb21ib2JveE9wdGlvbnMsXG4gIERpYWxvZzogKCkgPT4gRGlhbG9nLFxuICBEaWFsb2dCYWNrZHJvcDogKCkgPT4gRGlhbG9nQmFja2Ryb3AsXG4gIERpYWxvZ0Rlc2NyaXB0aW9uOiAoKSA9PiBEaWFsb2dEZXNjcmlwdGlvbixcbiAgRGlhbG9nT3ZlcmxheTogKCkgPT4gRGlhbG9nT3ZlcmxheSxcbiAgRGlhbG9nUGFuZWw6ICgpID0+IERpYWxvZ1BhbmVsLFxuICBEaWFsb2dUaXRsZTogKCkgPT4gRGlhbG9nVGl0bGUsXG4gIERpc2Nsb3N1cmU6ICgpID0+IERpc2Nsb3N1cmUsXG4gIERpc2Nsb3N1cmVCdXR0b246ICgpID0+IERpc2Nsb3N1cmVCdXR0b24sXG4gIERpc2Nsb3N1cmVQYW5lbDogKCkgPT4gRGlzY2xvc3VyZVBhbmVsLFxuICBGb2N1c1RyYXA6ICgpID0+IEZvY3VzVHJhcCxcbiAgTGlzdGJveDogKCkgPT4gTGlzdGJveCxcbiAgTGlzdGJveEJ1dHRvbjogKCkgPT4gTGlzdGJveEJ1dHRvbixcbiAgTGlzdGJveExhYmVsOiAoKSA9PiBMaXN0Ym94TGFiZWwsXG4gIExpc3Rib3hPcHRpb246ICgpID0+IExpc3Rib3hPcHRpb24sXG4gIExpc3Rib3hPcHRpb25zOiAoKSA9PiBMaXN0Ym94T3B0aW9ucyxcbiAgTWVudTogKCkgPT4gTWVudSxcbiAgTWVudUJ1dHRvbjogKCkgPT4gTWVudUJ1dHRvbixcbiAgTWVudUl0ZW06ICgpID0+IE1lbnVJdGVtLFxuICBNZW51SXRlbXM6ICgpID0+IE1lbnVJdGVtcyxcbiAgUG9wb3ZlcjogKCkgPT4gUG9wb3ZlcixcbiAgUG9wb3ZlckJ1dHRvbjogKCkgPT4gUG9wb3ZlckJ1dHRvbixcbiAgUG9wb3Zlckdyb3VwOiAoKSA9PiBQb3BvdmVyR3JvdXAsXG4gIFBvcG92ZXJPdmVybGF5OiAoKSA9PiBQb3BvdmVyT3ZlcmxheSxcbiAgUG9wb3ZlclBhbmVsOiAoKSA9PiBQb3BvdmVyUGFuZWwsXG4gIFBvcnRhbDogKCkgPT4gUG9ydGFsLFxuICBQb3J0YWxHcm91cDogKCkgPT4gUG9ydGFsR3JvdXAsXG4gIFJhZGlvR3JvdXA6ICgpID0+IFJhZGlvR3JvdXAsXG4gIFJhZGlvR3JvdXBEZXNjcmlwdGlvbjogKCkgPT4gUmFkaW9Hcm91cERlc2NyaXB0aW9uLFxuICBSYWRpb0dyb3VwTGFiZWw6ICgpID0+IFJhZGlvR3JvdXBMYWJlbCxcbiAgUmFkaW9Hcm91cE9wdGlvbjogKCkgPT4gUmFkaW9Hcm91cE9wdGlvbixcbiAgU3dpdGNoOiAoKSA9PiBTd2l0Y2gsXG4gIFN3aXRjaERlc2NyaXB0aW9uOiAoKSA9PiBTd2l0Y2hEZXNjcmlwdGlvbixcbiAgU3dpdGNoR3JvdXA6ICgpID0+IFN3aXRjaEdyb3VwLFxuICBTd2l0Y2hMYWJlbDogKCkgPT4gU3dpdGNoTGFiZWwsXG4gIFRhYjogKCkgPT4gVGFiLFxuICBUYWJHcm91cDogKCkgPT4gVGFiR3JvdXAsXG4gIFRhYkxpc3Q6ICgpID0+IFRhYkxpc3QsXG4gIFRhYlBhbmVsOiAoKSA9PiBUYWJQYW5lbCxcbiAgVGFiUGFuZWxzOiAoKSA9PiBUYWJQYW5lbHMsXG4gIFRyYW5zaXRpb25DaGlsZDogKCkgPT4gVHJhbnNpdGlvbkNoaWxkLFxuICBUcmFuc2l0aW9uUm9vdDogKCkgPT4gVHJhbnNpdGlvblJvb3Rcbn0pO1xubW9kdWxlLmV4cG9ydHMgPSBfX3RvQ29tbW9uSlMoc3JjX2V4cG9ydHMpO1xuXG4vLyBzcmMvY29tcG9uZW50cy9jb21ib2JveC9jb21ib2JveC50c1xudmFyIGltcG9ydF92dWU4ID0gcmVxdWlyZShcInZ1ZVwiKTtcblxuLy8gc3JjL3V0aWxzL3JlbmRlci50c1xudmFyIGltcG9ydF92dWUgPSByZXF1aXJlKFwidnVlXCIpO1xuXG4vLyBzcmMvdXRpbHMvbWF0Y2gudHNcbmZ1bmN0aW9uIG1hdGNoKHZhbHVlLCBsb29rdXAsIC4uLmFyZ3MpIHtcbiAgaWYgKHZhbHVlIGluIGxvb2t1cCkge1xuICAgIGxldCByZXR1cm5WYWx1ZSA9IGxvb2t1cFt2YWx1ZV07XG4gICAgcmV0dXJuIHR5cGVvZiByZXR1cm5WYWx1ZSA9PT0gXCJmdW5jdGlvblwiID8gcmV0dXJuVmFsdWUoLi4uYXJncykgOiByZXR1cm5WYWx1ZTtcbiAgfVxuICBsZXQgZXJyb3IgPSBuZXcgRXJyb3IoYFRyaWVkIHRvIGhhbmRsZSBcIiR7dmFsdWV9XCIgYnV0IHRoZXJlIGlzIG5vIGhhbmRsZXIgZGVmaW5lZC4gT25seSBkZWZpbmVkIGhhbmRsZXJzIGFyZTogJHtPYmplY3Qua2V5cyhsb29rdXApLm1hcCgoa2V5KSA9PiBgXCIke2tleX1cImApLmpvaW4oXCIsIFwiKX0uYCk7XG4gIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnJvciwgbWF0Y2gpO1xuICB0aHJvdyBlcnJvcjtcbn1cblxuLy8gc3JjL3V0aWxzL3JlbmRlci50c1xuZnVuY3Rpb24gcmVuZGVyKHtcbiAgdmlzaWJsZSA9IHRydWUsXG4gIGZlYXR1cmVzID0gMCAvKiBOb25lICovLFxuICBvdXJQcm9wcyxcbiAgdGhlaXJQcm9wcyxcbiAgLi4ubWFpblxufSkge1xuICB2YXIgX2E7XG4gIGxldCBwcm9wcyA9IG1lcmdlUHJvcHModGhlaXJQcm9wcywgb3VyUHJvcHMpO1xuICBsZXQgbWFpbldpdGhQcm9wcyA9IE9iamVjdC5hc3NpZ24obWFpbiwgeyBwcm9wcyB9KTtcbiAgaWYgKHZpc2libGUpXG4gICAgcmV0dXJuIF9yZW5kZXIobWFpbldpdGhQcm9wcyk7XG4gIGlmIChmZWF0dXJlcyAmIDIgLyogU3RhdGljICovKSB7XG4gICAgaWYgKHByb3BzLnN0YXRpYylcbiAgICAgIHJldHVybiBfcmVuZGVyKG1haW5XaXRoUHJvcHMpO1xuICB9XG4gIGlmIChmZWF0dXJlcyAmIDEgLyogUmVuZGVyU3RyYXRlZ3kgKi8pIHtcbiAgICBsZXQgc3RyYXRlZ3kgPSAoKF9hID0gcHJvcHMudW5tb3VudCkgIT0gbnVsbCA/IF9hIDogdHJ1ZSkgPyAwIC8qIFVubW91bnQgKi8gOiAxIC8qIEhpZGRlbiAqLztcbiAgICByZXR1cm4gbWF0Y2goc3RyYXRlZ3ksIHtcbiAgICAgIFswIC8qIFVubW91bnQgKi9dKCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0sXG4gICAgICBbMSAvKiBIaWRkZW4gKi9dKCkge1xuICAgICAgICByZXR1cm4gX3JlbmRlcih7XG4gICAgICAgICAgLi4ubWFpbixcbiAgICAgICAgICBwcm9wczogeyAuLi5wcm9wcywgaGlkZGVuOiB0cnVlLCBzdHlsZTogeyBkaXNwbGF5OiBcIm5vbmVcIiB9IH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIF9yZW5kZXIobWFpbldpdGhQcm9wcyk7XG59XG5mdW5jdGlvbiBfcmVuZGVyKHtcbiAgcHJvcHMsXG4gIGF0dHJzLFxuICBzbG90cyxcbiAgc2xvdCxcbiAgbmFtZVxufSkge1xuICB2YXIgX2E7XG4gIGxldCB7IGFzLCAuLi5pbmNvbWluZ1Byb3BzIH0gPSBvbWl0KHByb3BzLCBbXCJ1bm1vdW50XCIsIFwic3RhdGljXCJdKTtcbiAgbGV0IGNoaWxkcmVuID0gKF9hID0gc2xvdHMuZGVmYXVsdCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNhbGwoc2xvdHMsIHNsb3QpO1xuICBsZXQgZGF0YUF0dHJpYnV0ZXMgPSB7fTtcbiAgaWYgKGFzID09PSBcInRlbXBsYXRlXCIpIHtcbiAgICBjaGlsZHJlbiA9IGZsYXR0ZW5GcmFnbWVudHMoY2hpbGRyZW4pO1xuICAgIGlmIChPYmplY3Qua2V5cyhpbmNvbWluZ1Byb3BzKS5sZW5ndGggPiAwIHx8IE9iamVjdC5rZXlzKGF0dHJzKS5sZW5ndGggPiAwKSB7XG4gICAgICBsZXQgW2ZpcnN0Q2hpbGQsIC4uLm90aGVyXSA9IGNoaWxkcmVuICE9IG51bGwgPyBjaGlsZHJlbiA6IFtdO1xuICAgICAgaWYgKCFpc1ZhbGlkRWxlbWVudChmaXJzdENoaWxkKSB8fCBvdGhlci5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihbXG4gICAgICAgICAgJ1Bhc3NpbmcgcHJvcHMgb24gXCJ0ZW1wbGF0ZVwiIScsXG4gICAgICAgICAgXCJcIixcbiAgICAgICAgICBgVGhlIGN1cnJlbnQgY29tcG9uZW50IDwke25hbWV9IC8+IGlzIHJlbmRlcmluZyBhIFwidGVtcGxhdGVcIi5gLFxuICAgICAgICAgIGBIb3dldmVyIHdlIG5lZWQgdG8gcGFzc3Rocm91Z2ggdGhlIGZvbGxvd2luZyBwcm9wczpgLFxuICAgICAgICAgIE9iamVjdC5rZXlzKGluY29taW5nUHJvcHMpLmNvbmNhdChPYmplY3Qua2V5cyhhdHRycykpLnNvcnQoKGEsIHopID0+IGEubG9jYWxlQ29tcGFyZSh6KSkubWFwKChsaW5lKSA9PiBgICAtICR7bGluZX1gKS5qb2luKFwiXFxuXCIpLFxuICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgXCJZb3UgY2FuIGFwcGx5IGEgZmV3IHNvbHV0aW9uczpcIixcbiAgICAgICAgICBbXG4gICAgICAgICAgICAnQWRkIGFuIGBhcz1cIi4uLlwiYCBwcm9wLCB0byBlbnN1cmUgdGhhdCB3ZSByZW5kZXIgYW4gYWN0dWFsIGVsZW1lbnQgaW5zdGVhZCBvZiBhIFwidGVtcGxhdGVcIi4nLFxuICAgICAgICAgICAgXCJSZW5kZXIgYSBzaW5nbGUgZWxlbWVudCBhcyB0aGUgY2hpbGQgc28gdGhhdCB3ZSBjYW4gZm9yd2FyZCB0aGUgcHJvcHMgb250byB0aGF0IGVsZW1lbnQuXCJcbiAgICAgICAgICBdLm1hcCgobGluZSkgPT4gYCAgLSAke2xpbmV9YCkuam9pbihcIlxcblwiKVxuICAgICAgICBdLmpvaW4oXCJcXG5cIikpO1xuICAgICAgfVxuICAgICAgcmV0dXJuICgwLCBpbXBvcnRfdnVlLmNsb25lVk5vZGUpKGZpcnN0Q2hpbGQsIE9iamVjdC5hc3NpZ24oe30sIGluY29taW5nUHJvcHMsIGRhdGFBdHRyaWJ1dGVzKSk7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSAmJiBjaGlsZHJlbi5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBjaGlsZHJlblswXTtcbiAgICB9XG4gICAgcmV0dXJuIGNoaWxkcmVuO1xuICB9XG4gIHJldHVybiAoMCwgaW1wb3J0X3Z1ZS5oKShhcywgT2JqZWN0LmFzc2lnbih7fSwgaW5jb21pbmdQcm9wcywgZGF0YUF0dHJpYnV0ZXMpLCBjaGlsZHJlbik7XG59XG5mdW5jdGlvbiBmbGF0dGVuRnJhZ21lbnRzKGNoaWxkcmVuKSB7XG4gIHJldHVybiBjaGlsZHJlbi5mbGF0TWFwKChjaGlsZCkgPT4ge1xuICAgIGlmIChjaGlsZC50eXBlID09PSBpbXBvcnRfdnVlLkZyYWdtZW50KSB7XG4gICAgICByZXR1cm4gZmxhdHRlbkZyYWdtZW50cyhjaGlsZC5jaGlsZHJlbik7XG4gICAgfVxuICAgIHJldHVybiBbY2hpbGRdO1xuICB9KTtcbn1cbmZ1bmN0aW9uIG1lcmdlUHJvcHMoLi4ubGlzdE9mUHJvcHMpIHtcbiAgdmFyIF9hO1xuICBpZiAobGlzdE9mUHJvcHMubGVuZ3RoID09PSAwKVxuICAgIHJldHVybiB7fTtcbiAgaWYgKGxpc3RPZlByb3BzLmxlbmd0aCA9PT0gMSlcbiAgICByZXR1cm4gbGlzdE9mUHJvcHNbMF07XG4gIGxldCB0YXJnZXQgPSB7fTtcbiAgbGV0IGV2ZW50SGFuZGxlcnMgPSB7fTtcbiAgZm9yIChsZXQgcHJvcHMgb2YgbGlzdE9mUHJvcHMpIHtcbiAgICBmb3IgKGxldCBwcm9wIGluIHByb3BzKSB7XG4gICAgICBpZiAocHJvcC5zdGFydHNXaXRoKFwib25cIikgJiYgdHlwZW9mIHByb3BzW3Byb3BdID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgKF9hID0gZXZlbnRIYW5kbGVyc1twcm9wXSkgIT0gbnVsbCA/IF9hIDogZXZlbnRIYW5kbGVyc1twcm9wXSA9IFtdO1xuICAgICAgICBldmVudEhhbmRsZXJzW3Byb3BdLnB1c2gocHJvcHNbcHJvcF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFyZ2V0W3Byb3BdID0gcHJvcHNbcHJvcF07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICh0YXJnZXQuZGlzYWJsZWQgfHwgdGFyZ2V0W1wiYXJpYS1kaXNhYmxlZFwiXSkge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHRhcmdldCwgT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5rZXlzKGV2ZW50SGFuZGxlcnMpLm1hcCgoZXZlbnROYW1lKSA9PiBbZXZlbnROYW1lLCB2b2lkIDBdKSkpO1xuICB9XG4gIGZvciAobGV0IGV2ZW50TmFtZSBpbiBldmVudEhhbmRsZXJzKSB7XG4gICAgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHtcbiAgICAgIFtldmVudE5hbWVdKGV2ZW50LCAuLi5hcmdzKSB7XG4gICAgICAgIGxldCBoYW5kbGVycyA9IGV2ZW50SGFuZGxlcnNbZXZlbnROYW1lXTtcbiAgICAgICAgZm9yIChsZXQgaGFuZGxlciBvZiBoYW5kbGVycykge1xuICAgICAgICAgIGlmIChldmVudCA9PSBudWxsID8gdm9pZCAwIDogZXZlbnQuZGVmYXVsdFByZXZlbnRlZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBoYW5kbGVyKGV2ZW50LCAuLi5hcmdzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59XG5mdW5jdGlvbiBjb21wYWN0KG9iamVjdCkge1xuICBsZXQgY2xvbmUgPSBPYmplY3QuYXNzaWduKHt9LCBvYmplY3QpO1xuICBmb3IgKGxldCBrZXkgaW4gY2xvbmUpIHtcbiAgICBpZiAoY2xvbmVba2V5XSA9PT0gdm9pZCAwKVxuICAgICAgZGVsZXRlIGNsb25lW2tleV07XG4gIH1cbiAgcmV0dXJuIGNsb25lO1xufVxuZnVuY3Rpb24gb21pdChvYmplY3QsIGtleXNUb09taXQgPSBbXSkge1xuICBsZXQgY2xvbmUgPSBPYmplY3QuYXNzaWduKHt9LCBvYmplY3QpO1xuICBmb3IgKGxldCBrZXkgb2Yga2V5c1RvT21pdCkge1xuICAgIGlmIChrZXkgaW4gY2xvbmUpXG4gICAgICBkZWxldGUgY2xvbmVba2V5XTtcbiAgfVxuICByZXR1cm4gY2xvbmU7XG59XG5mdW5jdGlvbiBpc1ZhbGlkRWxlbWVudChpbnB1dCkge1xuICBpZiAoaW5wdXQgPT0gbnVsbClcbiAgICByZXR1cm4gZmFsc2U7XG4gIGlmICh0eXBlb2YgaW5wdXQudHlwZSA9PT0gXCJzdHJpbmdcIilcbiAgICByZXR1cm4gdHJ1ZTtcbiAgaWYgKHR5cGVvZiBpbnB1dC50eXBlID09PSBcIm9iamVjdFwiKVxuICAgIHJldHVybiB0cnVlO1xuICBpZiAodHlwZW9mIGlucHV0LnR5cGUgPT09IFwiZnVuY3Rpb25cIilcbiAgICByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vLyBzcmMvaG9va3MvdXNlLWlkLnRzXG52YXIgaWQgPSAwO1xuZnVuY3Rpb24gZ2VuZXJhdGVJZCgpIHtcbiAgcmV0dXJuICsraWQ7XG59XG5mdW5jdGlvbiB1c2VJZCgpIHtcbiAgcmV0dXJuIGdlbmVyYXRlSWQoKTtcbn1cblxuLy8gc3JjL3V0aWxzL2NhbGN1bGF0ZS1hY3RpdmUtaW5kZXgudHNcbmZ1bmN0aW9uIGFzc2VydE5ldmVyKHgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBvYmplY3Q6IFwiICsgeCk7XG59XG5mdW5jdGlvbiBjYWxjdWxhdGVBY3RpdmVJbmRleChhY3Rpb24sIHJlc29sdmVycykge1xuICBsZXQgaXRlbXMgPSByZXNvbHZlcnMucmVzb2x2ZUl0ZW1zKCk7XG4gIGlmIChpdGVtcy5sZW5ndGggPD0gMClcbiAgICByZXR1cm4gbnVsbDtcbiAgbGV0IGN1cnJlbnRBY3RpdmVJbmRleCA9IHJlc29sdmVycy5yZXNvbHZlQWN0aXZlSW5kZXgoKTtcbiAgbGV0IGFjdGl2ZUluZGV4ID0gY3VycmVudEFjdGl2ZUluZGV4ICE9IG51bGwgPyBjdXJyZW50QWN0aXZlSW5kZXggOiAtMTtcbiAgbGV0IG5leHRBY3RpdmVJbmRleCA9ICgoKSA9PiB7XG4gICAgc3dpdGNoIChhY3Rpb24uZm9jdXMpIHtcbiAgICAgIGNhc2UgMCAvKiBGaXJzdCAqLzpcbiAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gIXJlc29sdmVycy5yZXNvbHZlRGlzYWJsZWQoaXRlbSkpO1xuICAgICAgY2FzZSAxIC8qIFByZXZpb3VzICovOiB7XG4gICAgICAgIGxldCBpZHggPSBpdGVtcy5zbGljZSgpLnJldmVyc2UoKS5maW5kSW5kZXgoKGl0ZW0sIGlkeDIsIGFsbCkgPT4ge1xuICAgICAgICAgIGlmIChhY3RpdmVJbmRleCAhPT0gLTEgJiYgYWxsLmxlbmd0aCAtIGlkeDIgLSAxID49IGFjdGl2ZUluZGV4KVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIHJldHVybiAhcmVzb2x2ZXJzLnJlc29sdmVEaXNhYmxlZChpdGVtKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpZHggPT09IC0xKVxuICAgICAgICAgIHJldHVybiBpZHg7XG4gICAgICAgIHJldHVybiBpdGVtcy5sZW5ndGggLSAxIC0gaWR4O1xuICAgICAgfVxuICAgICAgY2FzZSAyIC8qIE5leHQgKi86XG4gICAgICAgIHJldHVybiBpdGVtcy5maW5kSW5kZXgoKGl0ZW0sIGlkeCkgPT4ge1xuICAgICAgICAgIGlmIChpZHggPD0gYWN0aXZlSW5kZXgpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuICFyZXNvbHZlcnMucmVzb2x2ZURpc2FibGVkKGl0ZW0pO1xuICAgICAgICB9KTtcbiAgICAgIGNhc2UgMyAvKiBMYXN0ICovOiB7XG4gICAgICAgIGxldCBpZHggPSBpdGVtcy5zbGljZSgpLnJldmVyc2UoKS5maW5kSW5kZXgoKGl0ZW0pID0+ICFyZXNvbHZlcnMucmVzb2x2ZURpc2FibGVkKGl0ZW0pKTtcbiAgICAgICAgaWYgKGlkeCA9PT0gLTEpXG4gICAgICAgICAgcmV0dXJuIGlkeDtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLmxlbmd0aCAtIDEgLSBpZHg7XG4gICAgICB9XG4gICAgICBjYXNlIDQgLyogU3BlY2lmaWMgKi86XG4gICAgICAgIHJldHVybiBpdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IHJlc29sdmVycy5yZXNvbHZlSWQoaXRlbSkgPT09IGFjdGlvbi5pZCk7XG4gICAgICBjYXNlIDUgLyogTm90aGluZyAqLzpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnROZXZlcihhY3Rpb24pO1xuICAgIH1cbiAgfSkoKTtcbiAgcmV0dXJuIG5leHRBY3RpdmVJbmRleCA9PT0gLTEgPyBjdXJyZW50QWN0aXZlSW5kZXggOiBuZXh0QWN0aXZlSW5kZXg7XG59XG5cbi8vIHNyYy91dGlscy9kb20udHNcbmZ1bmN0aW9uIGRvbShyZWYxOSkge1xuICB2YXIgX2E7XG4gIGlmIChyZWYxOSA9PSBudWxsKVxuICAgIHJldHVybiBudWxsO1xuICBpZiAocmVmMTkudmFsdWUgPT0gbnVsbClcbiAgICByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIChfYSA9IHJlZjE5LnZhbHVlLiRlbCkgIT0gbnVsbCA/IF9hIDogcmVmMTkudmFsdWU7XG59XG5cbi8vIHNyYy9pbnRlcm5hbC9vcGVuLWNsb3NlZC50c1xudmFyIGltcG9ydF92dWUyID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBDb250ZXh0ID0gU3ltYm9sKFwiQ29udGV4dFwiKTtcbmZ1bmN0aW9uIGhhc09wZW5DbG9zZWQoKSB7XG4gIHJldHVybiB1c2VPcGVuQ2xvc2VkKCkgIT09IG51bGw7XG59XG5mdW5jdGlvbiB1c2VPcGVuQ2xvc2VkKCkge1xuICByZXR1cm4gKDAsIGltcG9ydF92dWUyLmluamVjdCkoQ29udGV4dCwgbnVsbCk7XG59XG5mdW5jdGlvbiB1c2VPcGVuQ2xvc2VkUHJvdmlkZXIodmFsdWUpIHtcbiAgKDAsIGltcG9ydF92dWUyLnByb3ZpZGUpKENvbnRleHQsIHZhbHVlKTtcbn1cblxuLy8gc3JjL2hvb2tzL3VzZS1yZXNvbHZlLWJ1dHRvbi10eXBlLnRzXG52YXIgaW1wb3J0X3Z1ZTMgPSByZXF1aXJlKFwidnVlXCIpO1xuZnVuY3Rpb24gcmVzb2x2ZVR5cGUodHlwZSwgYXMpIHtcbiAgaWYgKHR5cGUpXG4gICAgcmV0dXJuIHR5cGU7XG4gIGxldCB0YWcgPSBhcyAhPSBudWxsID8gYXMgOiBcImJ1dHRvblwiO1xuICBpZiAodHlwZW9mIHRhZyA9PT0gXCJzdHJpbmdcIiAmJiB0YWcudG9Mb3dlckNhc2UoKSA9PT0gXCJidXR0b25cIilcbiAgICByZXR1cm4gXCJidXR0b25cIjtcbiAgcmV0dXJuIHZvaWQgMDtcbn1cbmZ1bmN0aW9uIHVzZVJlc29sdmVCdXR0b25UeXBlKGRhdGEsIHJlZkVsZW1lbnQpIHtcbiAgbGV0IHR5cGUgPSAoMCwgaW1wb3J0X3Z1ZTMucmVmKShyZXNvbHZlVHlwZShkYXRhLnZhbHVlLnR5cGUsIGRhdGEudmFsdWUuYXMpKTtcbiAgKDAsIGltcG9ydF92dWUzLm9uTW91bnRlZCkoKCkgPT4ge1xuICAgIHR5cGUudmFsdWUgPSByZXNvbHZlVHlwZShkYXRhLnZhbHVlLnR5cGUsIGRhdGEudmFsdWUuYXMpO1xuICB9KTtcbiAgKDAsIGltcG9ydF92dWUzLndhdGNoRWZmZWN0KSgoKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIGlmICh0eXBlLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIGlmICghZG9tKHJlZkVsZW1lbnQpKVxuICAgICAgcmV0dXJuO1xuICAgIGlmIChkb20ocmVmRWxlbWVudCkgaW5zdGFuY2VvZiBIVE1MQnV0dG9uRWxlbWVudCAmJiAhKChfYSA9IGRvbShyZWZFbGVtZW50KSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmhhc0F0dHJpYnV0ZShcInR5cGVcIikpKSB7XG4gICAgICB0eXBlLnZhbHVlID0gXCJidXR0b25cIjtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gdHlwZTtcbn1cblxuLy8gc3JjL2hvb2tzL3VzZS10cmVlLXdhbGtlci50c1xudmFyIGltcG9ydF92dWU0ID0gcmVxdWlyZShcInZ1ZVwiKTtcblxuLy8gc3JjL3V0aWxzL293bmVyLnRzXG5mdW5jdGlvbiBnZXRPd25lckRvY3VtZW50KGVsZW1lbnQpIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgcmV0dXJuIG51bGw7XG4gIGlmIChlbGVtZW50IGluc3RhbmNlb2YgTm9kZSlcbiAgICByZXR1cm4gZWxlbWVudC5vd25lckRvY3VtZW50O1xuICBpZiAoZWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogZWxlbWVudC5oYXNPd25Qcm9wZXJ0eShcInZhbHVlXCIpKSB7XG4gICAgbGV0IGRvbUVsZW1lbnQgPSBkb20oZWxlbWVudCk7XG4gICAgaWYgKGRvbUVsZW1lbnQpXG4gICAgICByZXR1cm4gZG9tRWxlbWVudC5vd25lckRvY3VtZW50O1xuICB9XG4gIHJldHVybiBkb2N1bWVudDtcbn1cblxuLy8gc3JjL2hvb2tzL3VzZS10cmVlLXdhbGtlci50c1xuZnVuY3Rpb24gdXNlVHJlZVdhbGtlcih7XG4gIGNvbnRhaW5lcixcbiAgYWNjZXB0LFxuICB3YWxrLFxuICBlbmFibGVkXG59KSB7XG4gICgwLCBpbXBvcnRfdnVlNC53YXRjaEVmZmVjdCkoKCkgPT4ge1xuICAgIGxldCByb290ID0gY29udGFpbmVyLnZhbHVlO1xuICAgIGlmICghcm9vdClcbiAgICAgIHJldHVybjtcbiAgICBpZiAoZW5hYmxlZCAhPT0gdm9pZCAwICYmICFlbmFibGVkLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIGxldCBvd25lckRvY3VtZW50ID0gZ2V0T3duZXJEb2N1bWVudChjb250YWluZXIpO1xuICAgIGlmICghb3duZXJEb2N1bWVudClcbiAgICAgIHJldHVybjtcbiAgICBsZXQgYWNjZXB0Tm9kZSA9IE9iamVjdC5hc3NpZ24oKG5vZGUpID0+IGFjY2VwdChub2RlKSwgeyBhY2NlcHROb2RlOiBhY2NlcHQgfSk7XG4gICAgbGV0IHdhbGtlciA9IG93bmVyRG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihyb290LCBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCwgYWNjZXB0Tm9kZSwgZmFsc2UpO1xuICAgIHdoaWxlICh3YWxrZXIubmV4dE5vZGUoKSlcbiAgICAgIHdhbGsod2Fsa2VyLmN1cnJlbnROb2RlKTtcbiAgfSk7XG59XG5cbi8vIHNyYy91dGlscy9mb2N1cy1tYW5hZ2VtZW50LnRzXG52YXIgZm9jdXNhYmxlU2VsZWN0b3IgPSBbXG4gIFwiW2NvbnRlbnRFZGl0YWJsZT10cnVlXVwiLFxuICBcIlt0YWJpbmRleF1cIixcbiAgXCJhW2hyZWZdXCIsXG4gIFwiYXJlYVtocmVmXVwiLFxuICBcImJ1dHRvbjpub3QoW2Rpc2FibGVkXSlcIixcbiAgXCJpZnJhbWVcIixcbiAgXCJpbnB1dDpub3QoW2Rpc2FibGVkXSlcIixcbiAgXCJzZWxlY3Q6bm90KFtkaXNhYmxlZF0pXCIsXG4gIFwidGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pXCJcbl0ubWFwKGZhbHNlID8gKHNlbGVjdG9yKSA9PiBgJHtzZWxlY3Rvcn06bm90KFt0YWJpbmRleD0nLTEnXSk6bm90KFtzdHlsZSo9J2Rpc3BsYXk6IG5vbmUnXSlgIDogKHNlbGVjdG9yKSA9PiBgJHtzZWxlY3Rvcn06bm90KFt0YWJpbmRleD0nLTEnXSlgKS5qb2luKFwiLFwiKTtcbmZ1bmN0aW9uIGdldEZvY3VzYWJsZUVsZW1lbnRzKGNvbnRhaW5lciA9IGRvY3VtZW50LmJvZHkpIHtcbiAgaWYgKGNvbnRhaW5lciA9PSBudWxsKVxuICAgIHJldHVybiBbXTtcbiAgcmV0dXJuIEFycmF5LmZyb20oY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoZm9jdXNhYmxlU2VsZWN0b3IpKTtcbn1cbmZ1bmN0aW9uIGlzRm9jdXNhYmxlRWxlbWVudChlbGVtZW50LCBtb2RlID0gMCAvKiBTdHJpY3QgKi8pIHtcbiAgdmFyIF9hO1xuICBpZiAoZWxlbWVudCA9PT0gKChfYSA9IGdldE93bmVyRG9jdW1lbnQoZWxlbWVudCkpID09IG51bGwgPyB2b2lkIDAgOiBfYS5ib2R5KSlcbiAgICByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBtYXRjaChtb2RlLCB7XG4gICAgWzAgLyogU3RyaWN0ICovXSgpIHtcbiAgICAgIHJldHVybiBlbGVtZW50Lm1hdGNoZXMoZm9jdXNhYmxlU2VsZWN0b3IpO1xuICAgIH0sXG4gICAgWzEgLyogTG9vc2UgKi9dKCkge1xuICAgICAgbGV0IG5leHQgPSBlbGVtZW50O1xuICAgICAgd2hpbGUgKG5leHQgIT09IG51bGwpIHtcbiAgICAgICAgaWYgKG5leHQubWF0Y2hlcyhmb2N1c2FibGVTZWxlY3RvcikpXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIG5leHQgPSBuZXh0LnBhcmVudEVsZW1lbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIGZvY3VzRWxlbWVudChlbGVtZW50KSB7XG4gIGVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IGVsZW1lbnQuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xufVxudmFyIHNlbGVjdGFibGVTZWxlY3RvciA9IFtcInRleHRhcmVhXCIsIFwiaW5wdXRcIl0uam9pbihcIixcIik7XG5mdW5jdGlvbiBpc1NlbGVjdGFibGVFbGVtZW50KGVsZW1lbnQpIHtcbiAgdmFyIF9hLCBfYjtcbiAgcmV0dXJuIChfYiA9IChfYSA9IGVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IGVsZW1lbnQubWF0Y2hlcykgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNhbGwoZWxlbWVudCwgc2VsZWN0YWJsZVNlbGVjdG9yKSkgIT0gbnVsbCA/IF9iIDogZmFsc2U7XG59XG5mdW5jdGlvbiBzb3J0QnlEb21Ob2RlKG5vZGVzLCByZXNvbHZlS2V5ID0gKGkpID0+IGkpIHtcbiAgcmV0dXJuIG5vZGVzLnNsaWNlKCkuc29ydCgoYUl0ZW0sIHpJdGVtKSA9PiB7XG4gICAgbGV0IGEgPSByZXNvbHZlS2V5KGFJdGVtKTtcbiAgICBsZXQgeiA9IHJlc29sdmVLZXkoekl0ZW0pO1xuICAgIGlmIChhID09PSBudWxsIHx8IHogPT09IG51bGwpXG4gICAgICByZXR1cm4gMDtcbiAgICBsZXQgcG9zaXRpb24gPSBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHopO1xuICAgIGlmIChwb3NpdGlvbiAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HKVxuICAgICAgcmV0dXJuIC0xO1xuICAgIGlmIChwb3NpdGlvbiAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HKVxuICAgICAgcmV0dXJuIDE7XG4gICAgcmV0dXJuIDA7XG4gIH0pO1xufVxuZnVuY3Rpb24gZm9jdXNJbihjb250YWluZXIsIGZvY3VzLCBzb3J0ZWQgPSB0cnVlKSB7XG4gIHZhciBfYTtcbiAgbGV0IG93bmVyRG9jdW1lbnQgPSAoX2EgPSBBcnJheS5pc0FycmF5KGNvbnRhaW5lcikgPyBjb250YWluZXIubGVuZ3RoID4gMCA/IGNvbnRhaW5lclswXS5vd25lckRvY3VtZW50IDogZG9jdW1lbnQgOiBjb250YWluZXIgPT0gbnVsbCA/IHZvaWQgMCA6IGNvbnRhaW5lci5vd25lckRvY3VtZW50KSAhPSBudWxsID8gX2EgOiBkb2N1bWVudDtcbiAgbGV0IGVsZW1lbnRzID0gQXJyYXkuaXNBcnJheShjb250YWluZXIpID8gc29ydGVkID8gc29ydEJ5RG9tTm9kZShjb250YWluZXIpIDogY29udGFpbmVyIDogZ2V0Rm9jdXNhYmxlRWxlbWVudHMoY29udGFpbmVyKTtcbiAgbGV0IGFjdGl2ZSA9IG93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgbGV0IGRpcmVjdGlvbiA9ICgoKSA9PiB7XG4gICAgaWYgKGZvY3VzICYgKDEgLyogRmlyc3QgKi8gfCA0IC8qIE5leHQgKi8pKVxuICAgICAgcmV0dXJuIDEgLyogTmV4dCAqLztcbiAgICBpZiAoZm9jdXMgJiAoMiAvKiBQcmV2aW91cyAqLyB8IDggLyogTGFzdCAqLykpXG4gICAgICByZXR1cm4gLTEgLyogUHJldmlvdXMgKi87XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyBGb2N1cy5GaXJzdCwgRm9jdXMuUHJldmlvdXMsIEZvY3VzLk5leHQgb3IgRm9jdXMuTGFzdFwiKTtcbiAgfSkoKTtcbiAgbGV0IHN0YXJ0SW5kZXggPSAoKCkgPT4ge1xuICAgIGlmIChmb2N1cyAmIDEgLyogRmlyc3QgKi8pXG4gICAgICByZXR1cm4gMDtcbiAgICBpZiAoZm9jdXMgJiAyIC8qIFByZXZpb3VzICovKVxuICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIGVsZW1lbnRzLmluZGV4T2YoYWN0aXZlKSkgLSAxO1xuICAgIGlmIChmb2N1cyAmIDQgLyogTmV4dCAqLylcbiAgICAgIHJldHVybiBNYXRoLm1heCgwLCBlbGVtZW50cy5pbmRleE9mKGFjdGl2ZSkpICsgMTtcbiAgICBpZiAoZm9jdXMgJiA4IC8qIExhc3QgKi8pXG4gICAgICByZXR1cm4gZWxlbWVudHMubGVuZ3RoIC0gMTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIEZvY3VzLkZpcnN0LCBGb2N1cy5QcmV2aW91cywgRm9jdXMuTmV4dCBvciBGb2N1cy5MYXN0XCIpO1xuICB9KSgpO1xuICBsZXQgZm9jdXNPcHRpb25zID0gZm9jdXMgJiAzMiAvKiBOb1Njcm9sbCAqLyA/IHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9IDoge307XG4gIGxldCBvZmZzZXQgPSAwO1xuICBsZXQgdG90YWwgPSBlbGVtZW50cy5sZW5ndGg7XG4gIGxldCBuZXh0ID0gdm9pZCAwO1xuICBkbyB7XG4gICAgaWYgKG9mZnNldCA+PSB0b3RhbCB8fCBvZmZzZXQgKyB0b3RhbCA8PSAwKVxuICAgICAgcmV0dXJuIDAgLyogRXJyb3IgKi87XG4gICAgbGV0IG5leHRJZHggPSBzdGFydEluZGV4ICsgb2Zmc2V0O1xuICAgIGlmIChmb2N1cyAmIDE2IC8qIFdyYXBBcm91bmQgKi8pIHtcbiAgICAgIG5leHRJZHggPSAobmV4dElkeCArIHRvdGFsKSAlIHRvdGFsO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobmV4dElkeCA8IDApXG4gICAgICAgIHJldHVybiAzIC8qIFVuZGVyZmxvdyAqLztcbiAgICAgIGlmIChuZXh0SWR4ID49IHRvdGFsKVxuICAgICAgICByZXR1cm4gMSAvKiBPdmVyZmxvdyAqLztcbiAgICB9XG4gICAgbmV4dCA9IGVsZW1lbnRzW25leHRJZHhdO1xuICAgIG5leHQgPT0gbnVsbCA/IHZvaWQgMCA6IG5leHQuZm9jdXMoZm9jdXNPcHRpb25zKTtcbiAgICBvZmZzZXQgKz0gZGlyZWN0aW9uO1xuICB9IHdoaWxlIChuZXh0ICE9PSBvd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpO1xuICBpZiAoIW5leHQuaGFzQXR0cmlidXRlKFwidGFiaW5kZXhcIikpXG4gICAgbmV4dC5zZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiLCBcIjBcIik7XG4gIGlmIChmb2N1cyAmICg0IC8qIE5leHQgKi8gfCAyIC8qIFByZXZpb3VzICovKSAmJiBpc1NlbGVjdGFibGVFbGVtZW50KG5leHQpKSB7XG4gICAgbmV4dC5zZWxlY3QoKTtcbiAgfVxuICByZXR1cm4gMiAvKiBTdWNjZXNzICovO1xufVxuXG4vLyBzcmMvaG9va3MvdXNlLXdpbmRvdy1ldmVudC50c1xudmFyIGltcG9ydF92dWU1ID0gcmVxdWlyZShcInZ1ZVwiKTtcbmZ1bmN0aW9uIHVzZVdpbmRvd0V2ZW50KHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiKVxuICAgIHJldHVybjtcbiAgKDAsIGltcG9ydF92dWU1LndhdGNoRWZmZWN0KSgob25JbnZhbGlkYXRlKSA9PiB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpO1xuICAgIG9uSW52YWxpZGF0ZSgoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucykpO1xuICB9KTtcbn1cblxuLy8gc3JjL2hvb2tzL3VzZS1vdXRzaWRlLWNsaWNrLnRzXG52YXIgaW1wb3J0X3Z1ZTYgPSByZXF1aXJlKFwidnVlXCIpO1xuZnVuY3Rpb24gdXNlT3V0c2lkZUNsaWNrKGNvbnRhaW5lcnMsIGNiLCBlbmFibGVkID0gKDAsIGltcG9ydF92dWU2LmNvbXB1dGVkKSgoKSA9PiB0cnVlKSkge1xuICBmdW5jdGlvbiBoYW5kbGVPdXRzaWRlQ2xpY2soZXZlbnQsIHJlc29sdmVUYXJnZXQpIHtcbiAgICBpZiAoIWVuYWJsZWQudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpXG4gICAgICByZXR1cm47XG4gICAgbGV0IHRhcmdldCA9IHJlc29sdmVUYXJnZXQoZXZlbnQpO1xuICAgIGlmICh0YXJnZXQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0YXJnZXQub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY29udGFpbnModGFyZ2V0KSlcbiAgICAgIHJldHVybjtcbiAgICBsZXQgX2NvbnRhaW5lcnMgPSBmdW5jdGlvbiByZXNvbHZlKGNvbnRhaW5lcnMyKSB7XG4gICAgICBpZiAodHlwZW9mIGNvbnRhaW5lcnMyID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoY29udGFpbmVyczIoKSk7XG4gICAgICB9XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjb250YWluZXJzMikpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRhaW5lcnMyO1xuICAgICAgfVxuICAgICAgaWYgKGNvbnRhaW5lcnMyIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgICAgIHJldHVybiBjb250YWluZXJzMjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbY29udGFpbmVyczJdO1xuICAgIH0oY29udGFpbmVycyk7XG4gICAgZm9yIChsZXQgY29udGFpbmVyIG9mIF9jb250YWluZXJzKSB7XG4gICAgICBpZiAoY29udGFpbmVyID09PSBudWxsKVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIGxldCBkb21Ob2RlID0gY29udGFpbmVyIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgPyBjb250YWluZXIgOiBkb20oY29udGFpbmVyKTtcbiAgICAgIGlmIChkb21Ob2RlID09IG51bGwgPyB2b2lkIDAgOiBkb21Ob2RlLmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWlzRm9jdXNhYmxlRWxlbWVudCh0YXJnZXQsIDEgLyogTG9vc2UgKi8pICYmIHRhcmdldC50YWJJbmRleCAhPT0gLTEpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIHJldHVybiBjYihldmVudCwgdGFyZ2V0KTtcbiAgfVxuICB1c2VXaW5kb3dFdmVudChcImNsaWNrXCIsIChldmVudCkgPT4gaGFuZGxlT3V0c2lkZUNsaWNrKGV2ZW50LCAoZXZlbnQyKSA9PiBldmVudDIudGFyZ2V0KSwgdHJ1ZSk7XG4gIHVzZVdpbmRvd0V2ZW50KFwiYmx1clwiLCAoZXZlbnQpID0+IGhhbmRsZU91dHNpZGVDbGljayhldmVudCwgKCkgPT4gd2luZG93LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MSUZyYW1lRWxlbWVudCA/IHdpbmRvdy5kb2N1bWVudC5hY3RpdmVFbGVtZW50IDogbnVsbCksIHRydWUpO1xufVxuXG4vLyBzcmMvaW50ZXJuYWwvaGlkZGVuLnRzXG52YXIgaW1wb3J0X3Z1ZTcgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEhpZGRlbiA9ICgwLCBpbXBvcnRfdnVlNy5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJIaWRkZW5cIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH0sXG4gICAgZmVhdHVyZXM6IHsgdHlwZTogTnVtYmVyLCBkZWZhdWx0OiAxIC8qIE5vbmUgKi8gfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBzbG90cywgYXR0cnMgfSkge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgeyBmZWF0dXJlcywgLi4udGhlaXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIFwiYXJpYS1oaWRkZW5cIjogKGZlYXR1cmVzICYgMiAvKiBGb2N1c2FibGUgKi8pID09PSAyIC8qIEZvY3VzYWJsZSAqLyA/IHRydWUgOiB2b2lkIDAsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgICBoZWlnaHQ6IDEsXG4gICAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgICBtYXJnaW46IC0xLFxuICAgICAgICAgIG92ZXJmbG93OiBcImhpZGRlblwiLFxuICAgICAgICAgIGNsaXA6IFwicmVjdCgwLCAwLCAwLCAwKVwiLFxuICAgICAgICAgIHdoaXRlU3BhY2U6IFwibm93cmFwXCIsXG4gICAgICAgICAgYm9yZGVyV2lkdGg6IFwiMFwiLFxuICAgICAgICAgIC4uLihmZWF0dXJlcyAmIDQgLyogSGlkZGVuICovKSA9PT0gNCAvKiBIaWRkZW4gKi8gJiYgISgoZmVhdHVyZXMgJiAyIC8qIEZvY3VzYWJsZSAqLykgPT09IDIgLyogRm9jdXNhYmxlICovKSAmJiB7IGRpc3BsYXk6IFwibm9uZVwiIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgc2xvdDoge30sXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJIaWRkZW5cIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIHNyYy91dGlscy9mb3JtLnRzXG5mdW5jdGlvbiBvYmplY3RUb0Zvcm1FbnRyaWVzKHNvdXJjZSA9IHt9LCBwYXJlbnRLZXkgPSBudWxsLCBlbnRyaWVzID0gW10pIHtcbiAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHNvdXJjZSkpIHtcbiAgICBhcHBlbmQoZW50cmllcywgY29tcG9zZUtleShwYXJlbnRLZXksIGtleSksIHZhbHVlKTtcbiAgfVxuICByZXR1cm4gZW50cmllcztcbn1cbmZ1bmN0aW9uIGNvbXBvc2VLZXkocGFyZW50LCBrZXkpIHtcbiAgcmV0dXJuIHBhcmVudCA/IHBhcmVudCArIFwiW1wiICsga2V5ICsgXCJdXCIgOiBrZXk7XG59XG5mdW5jdGlvbiBhcHBlbmQoZW50cmllcywga2V5LCB2YWx1ZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBmb3IgKGxldCBbc3Via2V5LCBzdWJ2YWx1ZV0gb2YgdmFsdWUuZW50cmllcygpKSB7XG4gICAgICBhcHBlbmQoZW50cmllcywgY29tcG9zZUtleShrZXksIHN1YmtleS50b1N0cmluZygpKSwgc3VidmFsdWUpO1xuICAgIH1cbiAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBlbnRyaWVzLnB1c2goW2tleSwgdmFsdWUudG9JU09TdHJpbmcoKV0pO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICBlbnRyaWVzLnB1c2goW2tleSwgdmFsdWUgPyBcIjFcIiA6IFwiMFwiXSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgZW50cmllcy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XG4gICAgZW50cmllcy5wdXNoKFtrZXksIGAke3ZhbHVlfWBdKTtcbiAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdm9pZCAwKSB7XG4gICAgZW50cmllcy5wdXNoKFtrZXksIFwiXCJdKTtcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RUb0Zvcm1FbnRyaWVzKHZhbHVlLCBrZXksIGVudHJpZXMpO1xuICB9XG59XG5mdW5jdGlvbiBhdHRlbXB0U3VibWl0KGVsZW1lbnQpIHtcbiAgdmFyIF9hO1xuICBsZXQgZm9ybSA9IChfYSA9IGVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IGVsZW1lbnQuZm9ybSkgIT0gbnVsbCA/IF9hIDogZWxlbWVudC5jbG9zZXN0KFwiZm9ybVwiKTtcbiAgaWYgKCFmb3JtKVxuICAgIHJldHVybjtcbiAgZm9yIChsZXQgZWxlbWVudDIgb2YgZm9ybS5lbGVtZW50cykge1xuICAgIGlmIChlbGVtZW50Mi50YWdOYW1lID09PSBcIklOUFVUXCIgJiYgZWxlbWVudDIudHlwZSA9PT0gXCJzdWJtaXRcIiB8fCBlbGVtZW50Mi50YWdOYW1lID09PSBcIkJVVFRPTlwiICYmIGVsZW1lbnQyLnR5cGUgPT09IFwic3VibWl0XCIgfHwgZWxlbWVudDIubm9kZU5hbWUgPT09IFwiSU5QVVRcIiAmJiBlbGVtZW50Mi50eXBlID09PSBcImltYWdlXCIpIHtcbiAgICAgIGVsZW1lbnQyLmNsaWNrKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG59XG5cbi8vIHNyYy9jb21wb25lbnRzL2NvbWJvYm94L2NvbWJvYm94LnRzXG52YXIgQ29tYm9ib3hDb250ZXh0ID0gU3ltYm9sKFwiQ29tYm9ib3hDb250ZXh0XCIpO1xuZnVuY3Rpb24gdXNlQ29tYm9ib3hDb250ZXh0KGNvbXBvbmVudCkge1xuICBsZXQgY29udGV4dCA9ICgwLCBpbXBvcnRfdnVlOC5pbmplY3QpKENvbWJvYm94Q29udGV4dCwgbnVsbCk7XG4gIGlmIChjb250ZXh0ID09PSBudWxsKSB7XG4gICAgbGV0IGVyciA9IG5ldyBFcnJvcihgPCR7Y29tcG9uZW50fSAvPiBpcyBtaXNzaW5nIGEgcGFyZW50IDxDb21ib2JveCAvPiBjb21wb25lbnQuYCk7XG4gICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKVxuICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyLCB1c2VDb21ib2JveENvbnRleHQpO1xuICAgIHRocm93IGVycjtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cbnZhciBDb21ib2JveCA9ICgwLCBpbXBvcnRfdnVlOC5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJDb21ib2JveFwiLFxuICBlbWl0czogeyBcInVwZGF0ZTptb2RlbFZhbHVlXCI6IChfdmFsdWUpID0+IHRydWUgfSxcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcInRlbXBsYXRlXCIgfSxcbiAgICBkaXNhYmxlZDogeyB0eXBlOiBbQm9vbGVhbl0sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgbW9kZWxWYWx1ZTogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmcsIE51bWJlciwgQm9vbGVhbl0gfSxcbiAgICBuYW1lOiB7IHR5cGU6IFN0cmluZyB9LFxuICAgIG51bGxhYmxlOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgbXVsdGlwbGU6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBmYWxzZSB9XG4gIH0sXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHNldHVwKHByb3BzLCB7IHNsb3RzLCBhdHRycywgZW1pdCB9KSB7XG4gICAgbGV0IGNvbWJvYm94U3RhdGUgPSAoMCwgaW1wb3J0X3Z1ZTgucmVmKSgxIC8qIENsb3NlZCAqLyk7XG4gICAgbGV0IGxhYmVsUmVmID0gKDAsIGltcG9ydF92dWU4LnJlZikobnVsbCk7XG4gICAgbGV0IGlucHV0UmVmID0gKDAsIGltcG9ydF92dWU4LnJlZikobnVsbCk7XG4gICAgbGV0IGJ1dHRvblJlZiA9ICgwLCBpbXBvcnRfdnVlOC5yZWYpKG51bGwpO1xuICAgIGxldCBvcHRpb25zUmVmID0gKDAsIGltcG9ydF92dWU4LnJlZikobnVsbCk7XG4gICAgbGV0IG9wdGlvbnNQcm9wc1JlZiA9ICgwLCBpbXBvcnRfdnVlOC5yZWYpKHtcbiAgICAgIHN0YXRpYzogZmFsc2UsXG4gICAgICBob2xkOiBmYWxzZVxuICAgIH0pO1xuICAgIGxldCBvcHRpb25zID0gKDAsIGltcG9ydF92dWU4LnJlZikoW10pO1xuICAgIGxldCBhY3RpdmVPcHRpb25JbmRleCA9ICgwLCBpbXBvcnRfdnVlOC5yZWYpKG51bGwpO1xuICAgIGxldCBhY3RpdmF0aW9uVHJpZ2dlciA9ICgwLCBpbXBvcnRfdnVlOC5yZWYpKDEgLyogT3RoZXIgKi8pO1xuICAgIGxldCBkZWZhdWx0VG9GaXJzdE9wdGlvbiA9ICgwLCBpbXBvcnRfdnVlOC5yZWYpKGZhbHNlKTtcbiAgICBmdW5jdGlvbiBhZGp1c3RPcmRlcmVkU3RhdGUoYWRqdXN0bWVudCA9IChpKSA9PiBpKSB7XG4gICAgICBsZXQgY3VycmVudEFjdGl2ZU9wdGlvbiA9IGFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlICE9PSBudWxsID8gb3B0aW9ucy52YWx1ZVthY3RpdmVPcHRpb25JbmRleC52YWx1ZV0gOiBudWxsO1xuICAgICAgbGV0IHNvcnRlZE9wdGlvbnMgPSBzb3J0QnlEb21Ob2RlKGFkanVzdG1lbnQob3B0aW9ucy52YWx1ZS5zbGljZSgpKSwgKG9wdGlvbikgPT4gZG9tKG9wdGlvbi5kYXRhUmVmLmRvbVJlZikpO1xuICAgICAgbGV0IGFkanVzdGVkQWN0aXZlT3B0aW9uSW5kZXggPSBjdXJyZW50QWN0aXZlT3B0aW9uID8gc29ydGVkT3B0aW9ucy5pbmRleE9mKGN1cnJlbnRBY3RpdmVPcHRpb24pIDogbnVsbDtcbiAgICAgIGlmIChhZGp1c3RlZEFjdGl2ZU9wdGlvbkluZGV4ID09PSAtMSkge1xuICAgICAgICBhZGp1c3RlZEFjdGl2ZU9wdGlvbkluZGV4ID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9wdGlvbnM6IHNvcnRlZE9wdGlvbnMsXG4gICAgICAgIGFjdGl2ZU9wdGlvbkluZGV4OiBhZGp1c3RlZEFjdGl2ZU9wdGlvbkluZGV4XG4gICAgICB9O1xuICAgIH1cbiAgICBsZXQgdmFsdWUgPSAoMCwgaW1wb3J0X3Z1ZTguY29tcHV0ZWQpKCgpID0+IHByb3BzLm1vZGVsVmFsdWUpO1xuICAgIGxldCBtb2RlID0gKDAsIGltcG9ydF92dWU4LmNvbXB1dGVkKSgoKSA9PiBwcm9wcy5tdWx0aXBsZSA/IDEgLyogTXVsdGkgKi8gOiAwIC8qIFNpbmdsZSAqLyk7XG4gICAgbGV0IG51bGxhYmxlID0gKDAsIGltcG9ydF92dWU4LmNvbXB1dGVkKSgoKSA9PiBwcm9wcy5udWxsYWJsZSk7XG4gICAgbGV0IGFwaSA9IHtcbiAgICAgIGNvbWJvYm94U3RhdGUsXG4gICAgICB2YWx1ZSxcbiAgICAgIG1vZGUsXG4gICAgICBjb21wYXJlKGEsIHopIHtcbiAgICAgICAgcmV0dXJuIGEgPT09IHo7XG4gICAgICB9LFxuICAgICAgbnVsbGFibGUsXG4gICAgICBpbnB1dFJlZixcbiAgICAgIGxhYmVsUmVmLFxuICAgICAgYnV0dG9uUmVmLFxuICAgICAgb3B0aW9uc1JlZixcbiAgICAgIGRpc2FibGVkOiAoMCwgaW1wb3J0X3Z1ZTguY29tcHV0ZWQpKCgpID0+IHByb3BzLmRpc2FibGVkKSxcbiAgICAgIG9wdGlvbnMsXG4gICAgICBjaGFuZ2UodmFsdWUyKSB7XG4gICAgICAgIGVtaXQoXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCB2YWx1ZTIpO1xuICAgICAgfSxcbiAgICAgIGFjdGl2ZU9wdGlvbkluZGV4OiAoMCwgaW1wb3J0X3Z1ZTguY29tcHV0ZWQpKCgpID0+IHtcbiAgICAgICAgaWYgKGRlZmF1bHRUb0ZpcnN0T3B0aW9uLnZhbHVlICYmIGFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlID09PSBudWxsICYmIG9wdGlvbnMudmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGxldCBsb2NhbEFjdGl2ZU9wdGlvbkluZGV4ID0gb3B0aW9ucy52YWx1ZS5maW5kSW5kZXgoKG9wdGlvbikgPT4gIW9wdGlvbi5kYXRhUmVmLmRpc2FibGVkKTtcbiAgICAgICAgICBpZiAobG9jYWxBY3RpdmVPcHRpb25JbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBsb2NhbEFjdGl2ZU9wdGlvbkluZGV4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWN0aXZlT3B0aW9uSW5kZXgudmFsdWU7XG4gICAgICB9KSxcbiAgICAgIGFjdGl2YXRpb25UcmlnZ2VyLFxuICAgICAgaW5wdXRQcm9wc1JlZjogKDAsIGltcG9ydF92dWU4LnJlZikoeyBkaXNwbGF5VmFsdWU6IHZvaWQgMCB9KSxcbiAgICAgIG9wdGlvbnNQcm9wc1JlZixcbiAgICAgIGNsb3NlQ29tYm9ib3goKSB7XG4gICAgICAgIGRlZmF1bHRUb0ZpcnN0T3B0aW9uLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChjb21ib2JveFN0YXRlLnZhbHVlID09PSAxIC8qIENsb3NlZCAqLylcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbWJvYm94U3RhdGUudmFsdWUgPSAxIC8qIENsb3NlZCAqLztcbiAgICAgICAgYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgPSBudWxsO1xuICAgICAgfSxcbiAgICAgIG9wZW5Db21ib2JveCgpIHtcbiAgICAgICAgZGVmYXVsdFRvRmlyc3RPcHRpb24udmFsdWUgPSB0cnVlO1xuICAgICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoY29tYm9ib3hTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGV0IG9wdGlvbklkeCA9IG9wdGlvbnMudmFsdWUuZmluZEluZGV4KChvcHRpb24pID0+IHtcbiAgICAgICAgICBsZXQgb3B0aW9uVmFsdWUgPSAoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKG9wdGlvbi5kYXRhUmVmLnZhbHVlKTtcbiAgICAgICAgICBsZXQgc2VsZWN0ZWQgPSBtYXRjaChtb2RlLnZhbHVlLCB7XG4gICAgICAgICAgICBbMCAvKiBTaW5nbGUgKi9dOiAoKSA9PiBhcGkuY29tcGFyZSgoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKGFwaS52YWx1ZS52YWx1ZSksICgwLCBpbXBvcnRfdnVlOC50b1Jhdykob3B0aW9uVmFsdWUpKSxcbiAgICAgICAgICAgIFsxIC8qIE11bHRpICovXTogKCkgPT4gKDAsIGltcG9ydF92dWU4LnRvUmF3KShhcGkudmFsdWUudmFsdWUpLnNvbWUoKHZhbHVlMikgPT4gYXBpLmNvbXBhcmUoKDAsIGltcG9ydF92dWU4LnRvUmF3KSh2YWx1ZTIpLCAoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKG9wdGlvblZhbHVlKSkpXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHNlbGVjdGVkO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG9wdGlvbklkeCAhPT0gLTEpIHtcbiAgICAgICAgICBhY3RpdmVPcHRpb25JbmRleC52YWx1ZSA9IG9wdGlvbklkeDtcbiAgICAgICAgfVxuICAgICAgICBjb21ib2JveFN0YXRlLnZhbHVlID0gMCAvKiBPcGVuICovO1xuICAgICAgfSxcbiAgICAgIGdvVG9PcHRpb24oZm9jdXMsIGlkMiwgdHJpZ2dlcikge1xuICAgICAgICBkZWZhdWx0VG9GaXJzdE9wdGlvbi52YWx1ZSA9IGZhbHNlO1xuICAgICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAob3B0aW9uc1JlZi52YWx1ZSAmJiAhb3B0aW9uc1Byb3BzUmVmLnZhbHVlLnN0YXRpYyAmJiBjb21ib2JveFN0YXRlLnZhbHVlID09PSAxIC8qIENsb3NlZCAqLykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgYWRqdXN0ZWRTdGF0ZSA9IGFkanVzdE9yZGVyZWRTdGF0ZSgpO1xuICAgICAgICBpZiAoYWRqdXN0ZWRTdGF0ZS5hY3RpdmVPcHRpb25JbmRleCA9PT0gbnVsbCkge1xuICAgICAgICAgIGxldCBsb2NhbEFjdGl2ZU9wdGlvbkluZGV4ID0gYWRqdXN0ZWRTdGF0ZS5vcHRpb25zLmZpbmRJbmRleCgob3B0aW9uKSA9PiAhb3B0aW9uLmRhdGFSZWYuZGlzYWJsZWQpO1xuICAgICAgICAgIGlmIChsb2NhbEFjdGl2ZU9wdGlvbkluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgYWRqdXN0ZWRTdGF0ZS5hY3RpdmVPcHRpb25JbmRleCA9IGxvY2FsQWN0aXZlT3B0aW9uSW5kZXg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCBuZXh0QWN0aXZlT3B0aW9uSW5kZXggPSBjYWxjdWxhdGVBY3RpdmVJbmRleChmb2N1cyA9PT0gNCAvKiBTcGVjaWZpYyAqLyA/IHsgZm9jdXM6IDQgLyogU3BlY2lmaWMgKi8sIGlkOiBpZDIgfSA6IHsgZm9jdXMgfSwge1xuICAgICAgICAgIHJlc29sdmVJdGVtczogKCkgPT4gYWRqdXN0ZWRTdGF0ZS5vcHRpb25zLFxuICAgICAgICAgIHJlc29sdmVBY3RpdmVJbmRleDogKCkgPT4gYWRqdXN0ZWRTdGF0ZS5hY3RpdmVPcHRpb25JbmRleCxcbiAgICAgICAgICByZXNvbHZlSWQ6IChvcHRpb24pID0+IG9wdGlvbi5pZCxcbiAgICAgICAgICByZXNvbHZlRGlzYWJsZWQ6IChvcHRpb24pID0+IG9wdGlvbi5kYXRhUmVmLmRpc2FibGVkXG4gICAgICAgIH0pO1xuICAgICAgICBhY3RpdmVPcHRpb25JbmRleC52YWx1ZSA9IG5leHRBY3RpdmVPcHRpb25JbmRleDtcbiAgICAgICAgYWN0aXZhdGlvblRyaWdnZXIudmFsdWUgPSB0cmlnZ2VyICE9IG51bGwgPyB0cmlnZ2VyIDogMSAvKiBPdGhlciAqLztcbiAgICAgICAgb3B0aW9ucy52YWx1ZSA9IGFkanVzdGVkU3RhdGUub3B0aW9ucztcbiAgICAgIH0sXG4gICAgICBzeW5jSW5wdXRWYWx1ZSgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBsZXQgdmFsdWUyID0gYXBpLnZhbHVlLnZhbHVlO1xuICAgICAgICBpZiAoIWRvbShhcGkuaW5wdXRSZWYpKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGV0IGRpc3BsYXlWYWx1ZSA9IGFwaS5pbnB1dFByb3BzUmVmLnZhbHVlLmRpc3BsYXlWYWx1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiBkaXNwbGF5VmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgIGFwaS5pbnB1dFJlZi52YWx1ZS52YWx1ZSA9IChfYSA9IGRpc3BsYXlWYWx1ZSh2YWx1ZTIpKSAhPSBudWxsID8gX2EgOiBcIlwiO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZTIgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICBhcGkuaW5wdXRSZWYudmFsdWUudmFsdWUgPSB2YWx1ZTI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXBpLmlucHV0UmVmLnZhbHVlLnZhbHVlID0gXCJcIjtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHNlbGVjdE9wdGlvbihpZDIpIHtcbiAgICAgICAgbGV0IG9wdGlvbiA9IG9wdGlvbnMudmFsdWUuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gaWQyKTtcbiAgICAgICAgaWYgKCFvcHRpb24pXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBsZXQgeyBkYXRhUmVmIH0gPSBvcHRpb247XG4gICAgICAgIGVtaXQoXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCBtYXRjaChtb2RlLnZhbHVlLCB7XG4gICAgICAgICAgWzAgLyogU2luZ2xlICovXTogKCkgPT4gZGF0YVJlZi52YWx1ZSxcbiAgICAgICAgICBbMSAvKiBNdWx0aSAqL106ICgpID0+IHtcbiAgICAgICAgICAgIGxldCBjb3B5ID0gKDAsIGltcG9ydF92dWU4LnRvUmF3KShhcGkudmFsdWUudmFsdWUpLnNsaWNlKCk7XG4gICAgICAgICAgICBsZXQgcmF3ID0gKDAsIGltcG9ydF92dWU4LnRvUmF3KShkYXRhUmVmLnZhbHVlKTtcbiAgICAgICAgICAgIGxldCBpZHggPSBjb3B5LmluZGV4T2YocmF3KTtcbiAgICAgICAgICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAgICAgICAgIGNvcHkucHVzaChyYXcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29weS5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb3B5O1xuICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xuICAgICAgICBhcGkuc3luY0lucHV0VmFsdWUoKTtcbiAgICAgIH0sXG4gICAgICBzZWxlY3RBY3RpdmVPcHRpb24oKSB7XG4gICAgICAgIGlmIChhcGkuYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgPT09IG51bGwpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBsZXQgeyBkYXRhUmVmLCBpZDogaWQyIH0gPSBvcHRpb25zLnZhbHVlW2FwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZV07XG4gICAgICAgIGVtaXQoXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCBtYXRjaChtb2RlLnZhbHVlLCB7XG4gICAgICAgICAgWzAgLyogU2luZ2xlICovXTogKCkgPT4gZGF0YVJlZi52YWx1ZSxcbiAgICAgICAgICBbMSAvKiBNdWx0aSAqL106ICgpID0+IHtcbiAgICAgICAgICAgIGxldCBjb3B5ID0gKDAsIGltcG9ydF92dWU4LnRvUmF3KShhcGkudmFsdWUudmFsdWUpLnNsaWNlKCk7XG4gICAgICAgICAgICBsZXQgcmF3ID0gKDAsIGltcG9ydF92dWU4LnRvUmF3KShkYXRhUmVmLnZhbHVlKTtcbiAgICAgICAgICAgIGxldCBpZHggPSBjb3B5LmluZGV4T2YocmF3KTtcbiAgICAgICAgICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAgICAgICAgIGNvcHkucHVzaChyYXcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29weS5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb3B5O1xuICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xuICAgICAgICBhcGkuc3luY0lucHV0VmFsdWUoKTtcbiAgICAgICAgYXBpLmdvVG9PcHRpb24oNCAvKiBTcGVjaWZpYyAqLywgaWQyKTtcbiAgICAgIH0sXG4gICAgICByZWdpc3Rlck9wdGlvbihpZDIsIGRhdGFSZWYpIHtcbiAgICAgICAgbGV0IG9wdGlvbiA9IHsgaWQ6IGlkMiwgZGF0YVJlZiB9O1xuICAgICAgICBsZXQgYWRqdXN0ZWRTdGF0ZSA9IGFkanVzdE9yZGVyZWRTdGF0ZSgob3B0aW9uczIpID0+IFsuLi5vcHRpb25zMiwgb3B0aW9uXSk7XG4gICAgICAgIGlmIChhY3RpdmVPcHRpb25JbmRleC52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgIGxldCBvcHRpb25WYWx1ZSA9IGRhdGFSZWYudmFsdWUudmFsdWU7XG4gICAgICAgICAgbGV0IHNlbGVjdGVkID0gbWF0Y2gobW9kZS52YWx1ZSwge1xuICAgICAgICAgICAgWzAgLyogU2luZ2xlICovXTogKCkgPT4gYXBpLmNvbXBhcmUoKDAsIGltcG9ydF92dWU4LnRvUmF3KShhcGkudmFsdWUudmFsdWUpLCAoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKG9wdGlvblZhbHVlKSksXG4gICAgICAgICAgICBbMSAvKiBNdWx0aSAqL106ICgpID0+ICgwLCBpbXBvcnRfdnVlOC50b1JhdykoYXBpLnZhbHVlLnZhbHVlKS5zb21lKCh2YWx1ZTIpID0+IGFwaS5jb21wYXJlKCgwLCBpbXBvcnRfdnVlOC50b1JhdykodmFsdWUyKSwgKDAsIGltcG9ydF92dWU4LnRvUmF3KShvcHRpb25WYWx1ZSkpKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgICAgYWRqdXN0ZWRTdGF0ZS5hY3RpdmVPcHRpb25JbmRleCA9IGFkanVzdGVkU3RhdGUub3B0aW9ucy5pbmRleE9mKG9wdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG9wdGlvbnMudmFsdWUgPSBhZGp1c3RlZFN0YXRlLm9wdGlvbnM7XG4gICAgICAgIGFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlID0gYWRqdXN0ZWRTdGF0ZS5hY3RpdmVPcHRpb25JbmRleDtcbiAgICAgICAgYWN0aXZhdGlvblRyaWdnZXIudmFsdWUgPSAxIC8qIE90aGVyICovO1xuICAgICAgfSxcbiAgICAgIHVucmVnaXN0ZXJPcHRpb24oaWQyKSB7XG4gICAgICAgIGxldCBhZGp1c3RlZFN0YXRlID0gYWRqdXN0T3JkZXJlZFN0YXRlKChvcHRpb25zMikgPT4ge1xuICAgICAgICAgIGxldCBpZHggPSBvcHRpb25zMi5maW5kSW5kZXgoKGEpID0+IGEuaWQgPT09IGlkMik7XG4gICAgICAgICAgaWYgKGlkeCAhPT0gLTEpXG4gICAgICAgICAgICBvcHRpb25zMi5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uczI7XG4gICAgICAgIH0pO1xuICAgICAgICBvcHRpb25zLnZhbHVlID0gYWRqdXN0ZWRTdGF0ZS5vcHRpb25zO1xuICAgICAgICBhY3RpdmVPcHRpb25JbmRleC52YWx1ZSA9IGFkanVzdGVkU3RhdGUuYWN0aXZlT3B0aW9uSW5kZXg7XG4gICAgICAgIGFjdGl2YXRpb25UcmlnZ2VyLnZhbHVlID0gMSAvKiBPdGhlciAqLztcbiAgICAgIH1cbiAgICB9O1xuICAgIHVzZU91dHNpZGVDbGljayhbaW5wdXRSZWYsIGJ1dHRvblJlZiwgb3B0aW9uc1JlZl0sICgpID0+IGFwaS5jbG9zZUNvbWJvYm94KCksICgwLCBpbXBvcnRfdnVlOC5jb21wdXRlZCkoKCkgPT4gY29tYm9ib3hTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovKSk7XG4gICAgKDAsIGltcG9ydF92dWU4LndhdGNoKShbYXBpLnZhbHVlLCBhcGkuaW5wdXRSZWZdLCAoKSA9PiBhcGkuc3luY0lucHV0VmFsdWUoKSwge1xuICAgICAgaW1tZWRpYXRlOiB0cnVlXG4gICAgfSk7XG4gICAgKDAsIGltcG9ydF92dWU4LndhdGNoKShhcGkuY29tYm9ib3hTdGF0ZSwgKHN0YXRlKSA9PiB7XG4gICAgICBpZiAoc3RhdGUgPT09IDEgLyogQ2xvc2VkICovKSB7XG4gICAgICAgIGFwaS5zeW5jSW5wdXRWYWx1ZSgpO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGltbWVkaWF0ZTogdHJ1ZVxuICAgIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlOC5wcm92aWRlKShDb21ib2JveENvbnRleHQsIGFwaSk7XG4gICAgdXNlT3BlbkNsb3NlZFByb3ZpZGVyKCgwLCBpbXBvcnRfdnVlOC5jb21wdXRlZCkoKCkgPT4gbWF0Y2goY29tYm9ib3hTdGF0ZS52YWx1ZSwge1xuICAgICAgWzAgLyogT3BlbiAqL106IDAgLyogT3BlbiAqLyxcbiAgICAgIFsxIC8qIENsb3NlZCAqL106IDEgLyogQ2xvc2VkICovXG4gICAgfSkpKTtcbiAgICBsZXQgYWN0aXZlT3B0aW9uID0gKDAsIGltcG9ydF92dWU4LmNvbXB1dGVkKSgoKSA9PiBhcGkuYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgPT09IG51bGwgPyBudWxsIDogb3B0aW9ucy52YWx1ZVthcGkuYWN0aXZlT3B0aW9uSW5kZXgudmFsdWVdLmRhdGFSZWYudmFsdWUpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgeyBuYW1lLCBtb2RlbFZhbHVlLCBkaXNhYmxlZCwgLi4udGhlaXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgICBsZXQgc2xvdCA9IHtcbiAgICAgICAgb3BlbjogY29tYm9ib3hTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovLFxuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgYWN0aXZlSW5kZXg6IGFwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZSxcbiAgICAgICAgYWN0aXZlT3B0aW9uOiBhY3RpdmVPcHRpb24udmFsdWVcbiAgICAgIH07XG4gICAgICByZXR1cm4gKDAsIGltcG9ydF92dWU4LmgpKGltcG9ydF92dWU4LkZyYWdtZW50LCBbXG4gICAgICAgIC4uLm5hbWUgIT0gbnVsbCAmJiBtb2RlbFZhbHVlICE9IG51bGwgPyBvYmplY3RUb0Zvcm1FbnRyaWVzKHsgW25hbWVdOiBtb2RlbFZhbHVlIH0pLm1hcCgoW25hbWUyLCB2YWx1ZTJdKSA9PiAoMCwgaW1wb3J0X3Z1ZTguaCkoSGlkZGVuLCBjb21wYWN0KHtcbiAgICAgICAgICBmZWF0dXJlczogNCAvKiBIaWRkZW4gKi8sXG4gICAgICAgICAga2V5OiBuYW1lMixcbiAgICAgICAgICBhczogXCJpbnB1dFwiLFxuICAgICAgICAgIHR5cGU6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgICAgICAgIG5hbWU6IG5hbWUyLFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZTJcbiAgICAgICAgfSkpKSA6IFtdLFxuICAgICAgICByZW5kZXIoe1xuICAgICAgICAgIHRoZWlyUHJvcHM6IHtcbiAgICAgICAgICAgIC4uLmF0dHJzLFxuICAgICAgICAgICAgLi4ub21pdCh0aGVpclByb3BzLCBbXCJudWxsYWJsZVwiLCBcIm11bHRpcGxlXCIsIFwib25VcGRhdGU6bW9kZWxWYWx1ZVwiLCBcImJ5XCJdKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb3VyUHJvcHM6IHt9LFxuICAgICAgICAgIHNsb3QsXG4gICAgICAgICAgc2xvdHMsXG4gICAgICAgICAgYXR0cnMsXG4gICAgICAgICAgbmFtZTogXCJDb21ib2JveFwiXG4gICAgICAgIH0pXG4gICAgICBdKTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBDb21ib2JveExhYmVsID0gKDAsIGltcG9ydF92dWU4LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkNvbWJvYm94TGFiZWxcIixcbiAgcHJvcHM6IHsgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJsYWJlbFwiIH0gfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlQ29tYm9ib3hDb250ZXh0KFwiQ29tYm9ib3hMYWJlbFwiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktY29tYm9ib3gtbGFiZWwtJHt1c2VJZCgpfWA7XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soKSB7XG4gICAgICB2YXIgX2E7XG4gICAgICAoX2EgPSBkb20oYXBpLmlucHV0UmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBzbG90ID0ge1xuICAgICAgICBvcGVuOiBhcGkuY29tYm9ib3hTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovLFxuICAgICAgICBkaXNhYmxlZDogYXBpLmRpc2FibGVkLnZhbHVlXG4gICAgICB9O1xuICAgICAgbGV0IG91clByb3BzID0geyBpZDogaWQyLCByZWY6IGFwaS5sYWJlbFJlZiwgb25DbGljazogaGFuZGxlQ2xpY2sgfTtcbiAgICAgIGxldCB0aGVpclByb3BzID0gcHJvcHM7XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJDb21ib2JveExhYmVsXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIENvbWJvYm94QnV0dG9uID0gKDAsIGltcG9ydF92dWU4LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkNvbWJvYm94QnV0dG9uXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJidXR0b25cIiB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlQ29tYm9ib3hDb250ZXh0KFwiQ29tYm9ib3hCdXR0b25cIik7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLWNvbWJvYm94LWJ1dHRvbi0ke3VzZUlkKCl9YDtcbiAgICBleHBvc2UoeyBlbDogYXBpLmJ1dHRvblJlZiwgJGVsOiBhcGkuYnV0dG9uUmVmIH0pO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2ZW50KSB7XG4gICAgICBpZiAoYXBpLmRpc2FibGVkLnZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoYXBpLmNvbWJvYm94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLykge1xuICAgICAgICBhcGkuY2xvc2VDb21ib2JveCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYXBpLm9wZW5Db21ib2JveCgpO1xuICAgICAgfVxuICAgICAgKDAsIGltcG9ydF92dWU4Lm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIChfYSA9IGRvbShhcGkuaW5wdXRSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUtleWRvd24oZXZlbnQpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgXCJBcnJvd0Rvd25cIiAvKiBBcnJvd0Rvd24gKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBpZiAoYXBpLmNvbWJvYm94U3RhdGUudmFsdWUgPT09IDEgLyogQ2xvc2VkICovKSB7XG4gICAgICAgICAgICBhcGkub3BlbkNvbWJvYm94KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgICgwLCBpbXBvcnRfdnVlOC5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgcmV0dXJuIChfYSA9IGFwaS5pbnB1dFJlZi52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNhc2UgXCJBcnJvd1VwXCIgLyogQXJyb3dVcCAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGlmIChhcGkuY29tYm9ib3hTdGF0ZS52YWx1ZSA9PT0gMSAvKiBDbG9zZWQgKi8pIHtcbiAgICAgICAgICAgIGFwaS5vcGVuQ29tYm9ib3goKTtcbiAgICAgICAgICAgICgwLCBpbXBvcnRfdnVlOC5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWFwaS52YWx1ZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGFwaS5nb1RvT3B0aW9uKDMgLyogTGFzdCAqLyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICAoMCwgaW1wb3J0X3Z1ZTgubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHJldHVybiAoX2EgPSBhcGkuaW5wdXRSZWYudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjYXNlIFwiRXNjYXBlXCIgLyogRXNjYXBlICovOlxuICAgICAgICAgIGlmIChhcGkuY29tYm9ib3hTdGF0ZS52YWx1ZSAhPT0gMCAvKiBPcGVuICovKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgaWYgKGFwaS5vcHRpb25zUmVmLnZhbHVlICYmICFhcGkub3B0aW9uc1Byb3BzUmVmLnZhbHVlLnN0YXRpYykge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFwaS5jbG9zZUNvbWJvYm94KCk7XG4gICAgICAgICAgKDAsIGltcG9ydF92dWU4Lm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICByZXR1cm4gKF9hID0gYXBpLmlucHV0UmVmLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IHR5cGUgPSB1c2VSZXNvbHZlQnV0dG9uVHlwZSgoMCwgaW1wb3J0X3Z1ZTguY29tcHV0ZWQpKCgpID0+ICh7IGFzOiBwcm9wcy5hcywgdHlwZTogYXR0cnMudHlwZSB9KSksIGFwaS5idXR0b25SZWYpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB2YXIgX2EsIF9iO1xuICAgICAgbGV0IHNsb3QgPSB7XG4gICAgICAgIG9wZW46IGFwaS5jb21ib2JveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8sXG4gICAgICAgIGRpc2FibGVkOiBhcGkuZGlzYWJsZWQudmFsdWVcbiAgICAgIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIHJlZjogYXBpLmJ1dHRvblJlZixcbiAgICAgICAgaWQ6IGlkMixcbiAgICAgICAgdHlwZTogdHlwZS52YWx1ZSxcbiAgICAgICAgdGFiaW5kZXg6IFwiLTFcIixcbiAgICAgICAgXCJhcmlhLWhhc3BvcHVwXCI6IHRydWUsXG4gICAgICAgIFwiYXJpYS1jb250cm9sc1wiOiAoX2EgPSBkb20oYXBpLm9wdGlvbnNSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuaWQsXG4gICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBhcGkuZGlzYWJsZWQudmFsdWUgPyB2b2lkIDAgOiBhcGkuY29tYm9ib3hTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovLFxuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBhcGkubGFiZWxSZWYudmFsdWUgPyBbKF9iID0gZG9tKGFwaS5sYWJlbFJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYi5pZCwgaWQyXS5qb2luKFwiIFwiKSA6IHZvaWQgMCxcbiAgICAgICAgZGlzYWJsZWQ6IGFwaS5kaXNhYmxlZC52YWx1ZSA9PT0gdHJ1ZSA/IHRydWUgOiB2b2lkIDAsXG4gICAgICAgIG9uS2V5ZG93bjogaGFuZGxlS2V5ZG93bixcbiAgICAgICAgb25DbGljazogaGFuZGxlQ2xpY2tcbiAgICAgIH07XG4gICAgICBsZXQgdGhlaXJQcm9wcyA9IHByb3BzO1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBzbG90LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiQ29tYm9ib3hCdXR0b25cIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgQ29tYm9ib3hJbnB1dCA9ICgwLCBpbXBvcnRfdnVlOC5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJDb21ib2JveElucHV0XCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJpbnB1dFwiIH0sXG4gICAgc3RhdGljOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgdW5tb3VudDogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiB0cnVlIH0sXG4gICAgZGlzcGxheVZhbHVlOiB7IHR5cGU6IEZ1bmN0aW9uIH1cbiAgfSxcbiAgZW1pdHM6IHtcbiAgICBjaGFuZ2U6IChfdmFsdWUpID0+IHRydWVcbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgZW1pdCwgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSB1c2VDb21ib2JveENvbnRleHQoXCJDb21ib2JveElucHV0XCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1jb21ib2JveC1pbnB1dC0ke3VzZUlkKCl9YDtcbiAgICBhcGkuaW5wdXRQcm9wc1JlZiA9ICgwLCBpbXBvcnRfdnVlOC5jb21wdXRlZCkoKCkgPT4gcHJvcHMpO1xuICAgIGV4cG9zZSh7IGVsOiBhcGkuaW5wdXRSZWYsICRlbDogYXBpLmlucHV0UmVmIH0pO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUtleURvd24oZXZlbnQpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgXCJCYWNrc3BhY2VcIiAvKiBCYWNrc3BhY2UgKi86XG4gICAgICAgIGNhc2UgXCJEZWxldGVcIiAvKiBEZWxldGUgKi86XG4gICAgICAgICAgaWYgKGFwaS5tb2RlLnZhbHVlICE9PSAwIC8qIFNpbmdsZSAqLylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBpZiAoIWFwaS5udWxsYWJsZS52YWx1ZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBsZXQgaW5wdXQgPSBldmVudC5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5wdXQudmFsdWUgPT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgYXBpLmNoYW5nZShudWxsKTtcbiAgICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSBkb20oYXBpLm9wdGlvbnNSZWYpO1xuICAgICAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuc2Nyb2xsVG9wID0gMDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBhcGkuZ29Ub09wdGlvbig1IC8qIE5vdGhpbmcgKi8pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiRW50ZXJcIiAvKiBFbnRlciAqLzpcbiAgICAgICAgICBpZiAoYXBpLmNvbWJvYm94U3RhdGUudmFsdWUgIT09IDAgLyogT3BlbiAqLylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGlmIChhcGkuYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGFwaS5jbG9zZUNvbWJvYm94KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGFwaS5zZWxlY3RBY3RpdmVPcHRpb24oKTtcbiAgICAgICAgICBpZiAoYXBpLm1vZGUudmFsdWUgPT09IDAgLyogU2luZ2xlICovKSB7XG4gICAgICAgICAgICBhcGkuY2xvc2VDb21ib2JveCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkFycm93RG93blwiIC8qIEFycm93RG93biAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHJldHVybiBtYXRjaChhcGkuY29tYm9ib3hTdGF0ZS52YWx1ZSwge1xuICAgICAgICAgICAgWzAgLyogT3BlbiAqL106ICgpID0+IGFwaS5nb1RvT3B0aW9uKDIgLyogTmV4dCAqLyksXG4gICAgICAgICAgICBbMSAvKiBDbG9zZWQgKi9dOiAoKSA9PiBhcGkub3BlbkNvbWJvYm94KClcbiAgICAgICAgICB9KTtcbiAgICAgICAgY2FzZSBcIkFycm93VXBcIiAvKiBBcnJvd1VwICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuIG1hdGNoKGFwaS5jb21ib2JveFN0YXRlLnZhbHVlLCB7XG4gICAgICAgICAgICBbMCAvKiBPcGVuICovXTogKCkgPT4gYXBpLmdvVG9PcHRpb24oMSAvKiBQcmV2aW91cyAqLyksXG4gICAgICAgICAgICBbMSAvKiBDbG9zZWQgKi9dOiAoKSA9PiB7XG4gICAgICAgICAgICAgIGFwaS5vcGVuQ29tYm9ib3goKTtcbiAgICAgICAgICAgICAgKDAsIGltcG9ydF92dWU4Lm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFhcGkudmFsdWUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgIGFwaS5nb1RvT3B0aW9uKDMgLyogTGFzdCAqLyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgY2FzZSBcIkhvbWVcIiAvKiBIb21lICovOlxuICAgICAgICBjYXNlIFwiUGFnZVVwXCIgLyogUGFnZVVwICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuIGFwaS5nb1RvT3B0aW9uKDAgLyogRmlyc3QgKi8pO1xuICAgICAgICBjYXNlIFwiRW5kXCIgLyogRW5kICovOlxuICAgICAgICBjYXNlIFwiUGFnZURvd25cIiAvKiBQYWdlRG93biAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHJldHVybiBhcGkuZ29Ub09wdGlvbigzIC8qIExhc3QgKi8pO1xuICAgICAgICBjYXNlIFwiRXNjYXBlXCIgLyogRXNjYXBlICovOlxuICAgICAgICAgIGlmIChhcGkuY29tYm9ib3hTdGF0ZS52YWx1ZSAhPT0gMCAvKiBPcGVuICovKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgaWYgKGFwaS5vcHRpb25zUmVmLnZhbHVlICYmICFhcGkub3B0aW9uc1Byb3BzUmVmLnZhbHVlLnN0YXRpYykge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFwaS5jbG9zZUNvbWJvYm94KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJUYWJcIiAvKiBUYWIgKi86XG4gICAgICAgICAgaWYgKGFwaS5jb21ib2JveFN0YXRlLnZhbHVlICE9PSAwIC8qIE9wZW4gKi8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgYXBpLnNlbGVjdEFjdGl2ZU9wdGlvbigpO1xuICAgICAgICAgIGFwaS5jbG9zZUNvbWJvYm94KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUNoYW5nZShldmVudCkge1xuICAgICAgZW1pdChcImNoYW5nZVwiLCBldmVudCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUlucHV0KGV2ZW50KSB7XG4gICAgICBhcGkub3BlbkNvbWJvYm94KCk7XG4gICAgICBlbWl0KFwiY2hhbmdlXCIsIGV2ZW50KTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mO1xuICAgICAgbGV0IHNsb3QgPSB7IG9wZW46IGFwaS5jb21ib2JveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8gfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgXCJhcmlhLWNvbnRyb2xzXCI6IChfYSA9IGFwaS5vcHRpb25zUmVmLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuaWQsXG4gICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBhcGkuZGlzYWJsZWQudmFsdWUgPyB2b2lkIDAgOiBhcGkuY29tYm9ib3hTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovLFxuICAgICAgICBcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiOiBhcGkuYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgPT09IG51bGwgPyB2b2lkIDAgOiAoX2IgPSBhcGkub3B0aW9ucy52YWx1ZVthcGkuYWN0aXZlT3B0aW9uSW5kZXgudmFsdWVdKSA9PSBudWxsID8gdm9pZCAwIDogX2IuaWQsXG4gICAgICAgIFwiYXJpYS1tdWx0aXNlbGVjdGFibGVcIjogYXBpLm1vZGUudmFsdWUgPT09IDEgLyogTXVsdGkgKi8gPyB0cnVlIDogdm9pZCAwLFxuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiAoX2UgPSAoX2MgPSBkb20oYXBpLmxhYmVsUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9jLmlkKSAhPSBudWxsID8gX2UgOiAoX2QgPSBkb20oYXBpLmJ1dHRvblJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfZC5pZCxcbiAgICAgICAgaWQ6IGlkMixcbiAgICAgICAgb25LZXlkb3duOiBoYW5kbGVLZXlEb3duLFxuICAgICAgICBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLFxuICAgICAgICBvbklucHV0OiBoYW5kbGVJbnB1dCxcbiAgICAgICAgcm9sZTogXCJjb21ib2JveFwiLFxuICAgICAgICB0eXBlOiAoX2YgPSBhdHRycy50eXBlKSAhPSBudWxsID8gX2YgOiBcInRleHRcIixcbiAgICAgICAgdGFiSW5kZXg6IDAsXG4gICAgICAgIHJlZjogYXBpLmlucHV0UmVmXG4gICAgICB9O1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBvbWl0KHByb3BzLCBbXCJkaXNwbGF5VmFsdWVcIl0pO1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBzbG90LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIGZlYXR1cmVzOiAxIC8qIFJlbmRlclN0cmF0ZWd5ICovIHwgMiAvKiBTdGF0aWMgKi8sXG4gICAgICAgIG5hbWU6IFwiQ29tYm9ib3hJbnB1dFwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBDb21ib2JveE9wdGlvbnMgPSAoMCwgaW1wb3J0X3Z1ZTguZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiQ29tYm9ib3hPcHRpb25zXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJ1bFwiIH0sXG4gICAgc3RhdGljOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgdW5tb3VudDogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiB0cnVlIH0sXG4gICAgaG9sZDogeyB0eXBlOiBbQm9vbGVhbl0sIGRlZmF1bHQ6IGZhbHNlIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSB1c2VDb21ib2JveENvbnRleHQoXCJDb21ib2JveE9wdGlvbnNcIik7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLWNvbWJvYm94LW9wdGlvbnMtJHt1c2VJZCgpfWA7XG4gICAgZXhwb3NlKHsgZWw6IGFwaS5vcHRpb25zUmVmLCAkZWw6IGFwaS5vcHRpb25zUmVmIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlOC53YXRjaEVmZmVjdCkoKCkgPT4ge1xuICAgICAgYXBpLm9wdGlvbnNQcm9wc1JlZi52YWx1ZS5zdGF0aWMgPSBwcm9wcy5zdGF0aWM7XG4gICAgfSk7XG4gICAgKDAsIGltcG9ydF92dWU4LndhdGNoRWZmZWN0KSgoKSA9PiB7XG4gICAgICBhcGkub3B0aW9uc1Byb3BzUmVmLnZhbHVlLmhvbGQgPSBwcm9wcy5ob2xkO1xuICAgIH0pO1xuICAgIGxldCB1c2VzT3BlbkNsb3NlZFN0YXRlID0gdXNlT3BlbkNsb3NlZCgpO1xuICAgIGxldCB2aXNpYmxlID0gKDAsIGltcG9ydF92dWU4LmNvbXB1dGVkKSgoKSA9PiB7XG4gICAgICBpZiAodXNlc09wZW5DbG9zZWRTdGF0ZSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdXNlc09wZW5DbG9zZWRTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFwaS5jb21ib2JveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi87XG4gICAgfSk7XG4gICAgdXNlVHJlZVdhbGtlcih7XG4gICAgICBjb250YWluZXI6ICgwLCBpbXBvcnRfdnVlOC5jb21wdXRlZCkoKCkgPT4gZG9tKGFwaS5vcHRpb25zUmVmKSksXG4gICAgICBlbmFibGVkOiAoMCwgaW1wb3J0X3Z1ZTguY29tcHV0ZWQpKCgpID0+IGFwaS5jb21ib2JveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8pLFxuICAgICAgYWNjZXB0KG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUuZ2V0QXR0cmlidXRlKFwicm9sZVwiKSA9PT0gXCJvcHRpb25cIilcbiAgICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfUkVKRUNUO1xuICAgICAgICBpZiAobm9kZS5oYXNBdHRyaWJ1dGUoXCJyb2xlXCIpKVxuICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9TS0lQO1xuICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfQUNDRVBUO1xuICAgICAgfSxcbiAgICAgIHdhbGsobm9kZSkge1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcInJvbGVcIiwgXCJub25lXCIpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgICBsZXQgc2xvdCA9IHsgb3BlbjogYXBpLmNvbWJvYm94U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyB9O1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICBcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiOiBhcGkuYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgPT09IG51bGwgPyB2b2lkIDAgOiAoX2EgPSBhcGkub3B0aW9ucy52YWx1ZVthcGkuYWN0aXZlT3B0aW9uSW5kZXgudmFsdWVdKSA9PSBudWxsID8gdm9pZCAwIDogX2EuaWQsXG4gICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IChfZCA9IChfYiA9IGRvbShhcGkubGFiZWxSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2IuaWQpICE9IG51bGwgPyBfZCA6IChfYyA9IGRvbShhcGkuYnV0dG9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9jLmlkLFxuICAgICAgICBpZDogaWQyLFxuICAgICAgICByZWY6IGFwaS5vcHRpb25zUmVmLFxuICAgICAgICByb2xlOiBcImxpc3Rib3hcIlxuICAgICAgfTtcbiAgICAgIGxldCB0aGVpclByb3BzID0gb21pdChwcm9wcywgW1wiaG9sZFwiXSk7XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgZmVhdHVyZXM6IDEgLyogUmVuZGVyU3RyYXRlZ3kgKi8gfCAyIC8qIFN0YXRpYyAqLyxcbiAgICAgICAgdmlzaWJsZTogdmlzaWJsZS52YWx1ZSxcbiAgICAgICAgbmFtZTogXCJDb21ib2JveE9wdGlvbnNcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgQ29tYm9ib3hPcHRpb24gPSAoMCwgaW1wb3J0X3Z1ZTguZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiQ29tYm9ib3hPcHRpb25cIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImxpXCIgfSxcbiAgICB2YWx1ZTogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmcsIE51bWJlciwgQm9vbGVhbl0gfSxcbiAgICBkaXNhYmxlZDogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IHNsb3RzLCBhdHRycywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlQ29tYm9ib3hDb250ZXh0KFwiQ29tYm9ib3hPcHRpb25cIik7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLWNvbWJvYm94LW9wdGlvbi0ke3VzZUlkKCl9YDtcbiAgICBsZXQgaW50ZXJuYWxPcHRpb25SZWYgPSAoMCwgaW1wb3J0X3Z1ZTgucmVmKShudWxsKTtcbiAgICBleHBvc2UoeyBlbDogaW50ZXJuYWxPcHRpb25SZWYsICRlbDogaW50ZXJuYWxPcHRpb25SZWYgfSk7XG4gICAgbGV0IGFjdGl2ZSA9ICgwLCBpbXBvcnRfdnVlOC5jb21wdXRlZCkoKCkgPT4ge1xuICAgICAgcmV0dXJuIGFwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZSAhPT0gbnVsbCA/IGFwaS5vcHRpb25zLnZhbHVlW2FwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZV0uaWQgPT09IGlkMiA6IGZhbHNlO1xuICAgIH0pO1xuICAgIGxldCBzZWxlY3RlZCA9ICgwLCBpbXBvcnRfdnVlOC5jb21wdXRlZCkoKCkgPT4gbWF0Y2goYXBpLm1vZGUudmFsdWUsIHtcbiAgICAgIFswIC8qIFNpbmdsZSAqL106ICgpID0+IGFwaS5jb21wYXJlKCgwLCBpbXBvcnRfdnVlOC50b1JhdykoYXBpLnZhbHVlLnZhbHVlKSwgKDAsIGltcG9ydF92dWU4LnRvUmF3KShwcm9wcy52YWx1ZSkpLFxuICAgICAgWzEgLyogTXVsdGkgKi9dOiAoKSA9PiAoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKGFwaS52YWx1ZS52YWx1ZSkuc29tZSgodmFsdWUpID0+IGFwaS5jb21wYXJlKCgwLCBpbXBvcnRfdnVlOC50b1JhdykodmFsdWUpLCAoMCwgaW1wb3J0X3Z1ZTgudG9SYXcpKHByb3BzLnZhbHVlKSkpXG4gICAgfSkpO1xuICAgIGxldCBkYXRhUmVmID0gKDAsIGltcG9ydF92dWU4LmNvbXB1dGVkKSgoKSA9PiAoe1xuICAgICAgZGlzYWJsZWQ6IHByb3BzLmRpc2FibGVkLFxuICAgICAgdmFsdWU6IHByb3BzLnZhbHVlLFxuICAgICAgZG9tUmVmOiBpbnRlcm5hbE9wdGlvblJlZlxuICAgIH0pKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTgub25Nb3VudGVkKSgoKSA9PiBhcGkucmVnaXN0ZXJPcHRpb24oaWQyLCBkYXRhUmVmKSk7XG4gICAgKDAsIGltcG9ydF92dWU4Lm9uVW5tb3VudGVkKSgoKSA9PiBhcGkudW5yZWdpc3Rlck9wdGlvbihpZDIpKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTgud2F0Y2hFZmZlY3QpKCgpID0+IHtcbiAgICAgIGlmIChhcGkuY29tYm9ib3hTdGF0ZS52YWx1ZSAhPT0gMCAvKiBPcGVuICovKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoIWFjdGl2ZS52YWx1ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGFwaS5hY3RpdmF0aW9uVHJpZ2dlci52YWx1ZSA9PT0gMCAvKiBQb2ludGVyICovKVxuICAgICAgICByZXR1cm47XG4gICAgICAoMCwgaW1wb3J0X3Z1ZTgubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgcmV0dXJuIChfYiA9IChfYSA9IGRvbShpbnRlcm5hbE9wdGlvblJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5zY3JvbGxJbnRvVmlldykgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIHsgYmxvY2s6IFwibmVhcmVzdFwiIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZlbnQpIHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgcmV0dXJuIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBhcGkuc2VsZWN0T3B0aW9uKGlkMik7XG4gICAgICBpZiAoYXBpLm1vZGUudmFsdWUgPT09IDAgLyogU2luZ2xlICovKSB7XG4gICAgICAgIGFwaS5jbG9zZUNvbWJvYm94KCk7XG4gICAgICAgIChfYSA9IGRvbShhcGkuaW5wdXRSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVGb2N1cygpIHtcbiAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgcmV0dXJuIGFwaS5nb1RvT3B0aW9uKDUgLyogTm90aGluZyAqLyk7XG4gICAgICBhcGkuZ29Ub09wdGlvbig0IC8qIFNwZWNpZmljICovLCBpZDIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVNb3ZlKCkge1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoYWN0aXZlLnZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBhcGkuZ29Ub09wdGlvbig0IC8qIFNwZWNpZmljICovLCBpZDIsIDAgLyogUG9pbnRlciAqLyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUxlYXZlKCkge1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoIWFjdGl2ZS52YWx1ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGFwaS5vcHRpb25zUHJvcHNSZWYudmFsdWUuaG9sZClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgYXBpLmdvVG9PcHRpb24oNSAvKiBOb3RoaW5nICovKTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB7IGRpc2FibGVkIH0gPSBwcm9wcztcbiAgICAgIGxldCBzbG90ID0geyBhY3RpdmU6IGFjdGl2ZS52YWx1ZSwgc2VsZWN0ZWQ6IHNlbGVjdGVkLnZhbHVlLCBkaXNhYmxlZCB9O1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICBpZDogaWQyLFxuICAgICAgICByZWY6IGludGVybmFsT3B0aW9uUmVmLFxuICAgICAgICByb2xlOiBcIm9wdGlvblwiLFxuICAgICAgICB0YWJJbmRleDogZGlzYWJsZWQgPT09IHRydWUgPyB2b2lkIDAgOiAtMSxcbiAgICAgICAgXCJhcmlhLWRpc2FibGVkXCI6IGRpc2FibGVkID09PSB0cnVlID8gdHJ1ZSA6IHZvaWQgMCxcbiAgICAgICAgXCJhcmlhLXNlbGVjdGVkXCI6IHNlbGVjdGVkLnZhbHVlID09PSB0cnVlID8gc2VsZWN0ZWQudmFsdWUgOiB2b2lkIDAsXG4gICAgICAgIGRpc2FibGVkOiB2b2lkIDAsXG4gICAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLFxuICAgICAgICBvbkZvY3VzOiBoYW5kbGVGb2N1cyxcbiAgICAgICAgb25Qb2ludGVybW92ZTogaGFuZGxlTW92ZSxcbiAgICAgICAgb25Nb3VzZW1vdmU6IGhhbmRsZU1vdmUsXG4gICAgICAgIG9uUG9pbnRlcmxlYXZlOiBoYW5kbGVMZWF2ZSxcbiAgICAgICAgb25Nb3VzZWxlYXZlOiBoYW5kbGVMZWF2ZVxuICAgICAgfTtcbiAgICAgIGxldCB0aGVpclByb3BzID0gcHJvcHM7XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJDb21ib2JveE9wdGlvblwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gc3JjL2NvbXBvbmVudHMvZGlhbG9nL2RpYWxvZy50c1xudmFyIGltcG9ydF92dWUxNyA9IHJlcXVpcmUoXCJ2dWVcIik7XG5cbi8vIHNyYy9jb21wb25lbnRzL2ZvY3VzLXRyYXAvZm9jdXMtdHJhcC50c1xudmFyIGltcG9ydF92dWUxMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5cbi8vIHNyYy9ob29rcy91c2UtdGFiLWRpcmVjdGlvbi50c1xudmFyIGltcG9ydF92dWU5ID0gcmVxdWlyZShcInZ1ZVwiKTtcbmZ1bmN0aW9uIHVzZVRhYkRpcmVjdGlvbigpIHtcbiAgbGV0IGRpcmVjdGlvbiA9ICgwLCBpbXBvcnRfdnVlOS5yZWYpKDAgLyogRm9yd2FyZHMgKi8pO1xuICB1c2VXaW5kb3dFdmVudChcImtleWRvd25cIiwgKGV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gXCJUYWJcIikge1xuICAgICAgZGlyZWN0aW9uLnZhbHVlID0gZXZlbnQuc2hpZnRLZXkgPyAxIC8qIEJhY2t3YXJkcyAqLyA6IDAgLyogRm9yd2FyZHMgKi87XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGRpcmVjdGlvbjtcbn1cblxuLy8gc3JjL2hvb2tzL3VzZS1ldmVudC1saXN0ZW5lci50c1xudmFyIGltcG9ydF92dWUxMCA9IHJlcXVpcmUoXCJ2dWVcIik7XG5mdW5jdGlvbiB1c2VFdmVudExpc3RlbmVyKGVsZW1lbnQsIHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiKVxuICAgIHJldHVybjtcbiAgKDAsIGltcG9ydF92dWUxMC53YXRjaEVmZmVjdCkoKG9uSW52YWxpZGF0ZSkgPT4ge1xuICAgIGVsZW1lbnQgPSBlbGVtZW50ICE9IG51bGwgPyBlbGVtZW50IDogd2luZG93O1xuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG4gICAgb25JbnZhbGlkYXRlKCgpID0+IGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucykpO1xuICB9KTtcbn1cblxuLy8gc3JjL2NvbXBvbmVudHMvZm9jdXMtdHJhcC9mb2N1cy10cmFwLnRzXG52YXIgRmVhdHVyZXMzID0gLyogQF9fUFVSRV9fICovICgoRmVhdHVyZXM0KSA9PiB7XG4gIEZlYXR1cmVzNFtGZWF0dXJlczRbXCJOb25lXCJdID0gMV0gPSBcIk5vbmVcIjtcbiAgRmVhdHVyZXM0W0ZlYXR1cmVzNFtcIkluaXRpYWxGb2N1c1wiXSA9IDJdID0gXCJJbml0aWFsRm9jdXNcIjtcbiAgRmVhdHVyZXM0W0ZlYXR1cmVzNFtcIlRhYkxvY2tcIl0gPSA0XSA9IFwiVGFiTG9ja1wiO1xuICBGZWF0dXJlczRbRmVhdHVyZXM0W1wiRm9jdXNMb2NrXCJdID0gOF0gPSBcIkZvY3VzTG9ja1wiO1xuICBGZWF0dXJlczRbRmVhdHVyZXM0W1wiUmVzdG9yZUZvY3VzXCJdID0gMTZdID0gXCJSZXN0b3JlRm9jdXNcIjtcbiAgRmVhdHVyZXM0W0ZlYXR1cmVzNFtcIkFsbFwiXSA9IDMwXSA9IFwiQWxsXCI7XG4gIHJldHVybiBGZWF0dXJlczQ7XG59KShGZWF0dXJlczMgfHwge30pO1xudmFyIEZvY3VzVHJhcCA9IE9iamVjdC5hc3NpZ24oKDAsIGltcG9ydF92dWUxMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJGb2N1c1RyYXBcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH0sXG4gICAgaW5pdGlhbEZvY3VzOiB7IHR5cGU6IE9iamVjdCwgZGVmYXVsdDogbnVsbCB9LFxuICAgIGZlYXR1cmVzOiB7IHR5cGU6IE51bWJlciwgZGVmYXVsdDogMzAgLyogQWxsICovIH0sXG4gICAgY29udGFpbmVyczoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogKDAsIGltcG9ydF92dWUxMS5yZWYpKC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCkpXG4gICAgfVxuICB9LFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IGNvbnRhaW5lciA9ICgwLCBpbXBvcnRfdnVlMTEucmVmKShudWxsKTtcbiAgICBleHBvc2UoeyBlbDogY29udGFpbmVyLCAkZWw6IGNvbnRhaW5lciB9KTtcbiAgICBsZXQgb3duZXJEb2N1bWVudCA9ICgwLCBpbXBvcnRfdnVlMTEuY29tcHV0ZWQpKCgpID0+IGdldE93bmVyRG9jdW1lbnQoY29udGFpbmVyKSk7XG4gICAgdXNlUmVzdG9yZUZvY3VzKHsgb3duZXJEb2N1bWVudCB9LCAoMCwgaW1wb3J0X3Z1ZTExLmNvbXB1dGVkKSgoKSA9PiBCb29sZWFuKHByb3BzLmZlYXR1cmVzICYgMTYgLyogUmVzdG9yZUZvY3VzICovKSkpO1xuICAgIGxldCBwcmV2aW91c0FjdGl2ZUVsZW1lbnQgPSB1c2VJbml0aWFsRm9jdXMoeyBvd25lckRvY3VtZW50LCBjb250YWluZXIsIGluaXRpYWxGb2N1czogKDAsIGltcG9ydF92dWUxMS5jb21wdXRlZCkoKCkgPT4gcHJvcHMuaW5pdGlhbEZvY3VzKSB9LCAoMCwgaW1wb3J0X3Z1ZTExLmNvbXB1dGVkKSgoKSA9PiBCb29sZWFuKHByb3BzLmZlYXR1cmVzICYgMiAvKiBJbml0aWFsRm9jdXMgKi8pKSk7XG4gICAgdXNlRm9jdXNMb2NrKHtcbiAgICAgIG93bmVyRG9jdW1lbnQsXG4gICAgICBjb250YWluZXIsXG4gICAgICBjb250YWluZXJzOiBwcm9wcy5jb250YWluZXJzLFxuICAgICAgcHJldmlvdXNBY3RpdmVFbGVtZW50XG4gICAgfSwgKDAsIGltcG9ydF92dWUxMS5jb21wdXRlZCkoKCkgPT4gQm9vbGVhbihwcm9wcy5mZWF0dXJlcyAmIDggLyogRm9jdXNMb2NrICovKSkpO1xuICAgIGxldCBkaXJlY3Rpb24gPSB1c2VUYWJEaXJlY3Rpb24oKTtcbiAgICBmdW5jdGlvbiBoYW5kbGVGb2N1cygpIHtcbiAgICAgIGxldCBlbCA9IGRvbShjb250YWluZXIpO1xuICAgICAgaWYgKCFlbClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgIG1pY3JvVGFzaygoKSA9PiB7XG4gICAgICAgICAgbWF0Y2goZGlyZWN0aW9uLnZhbHVlLCB7XG4gICAgICAgICAgICBbMCAvKiBGb3J3YXJkcyAqL106ICgpID0+IGZvY3VzSW4oZWwsIDEgLyogRmlyc3QgKi8pLFxuICAgICAgICAgICAgWzEgLyogQmFja3dhcmRzICovXTogKCkgPT4gZm9jdXNJbihlbCwgOCAvKiBMYXN0ICovKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hdGNoKGRpcmVjdGlvbi52YWx1ZSwge1xuICAgICAgICAgIFswIC8qIEZvcndhcmRzICovXTogKCkgPT4gZm9jdXNJbihlbCwgMSAvKiBGaXJzdCAqLyksXG4gICAgICAgICAgWzEgLyogQmFja3dhcmRzICovXTogKCkgPT4gZm9jdXNJbihlbCwgOCAvKiBMYXN0ICovKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBzbG90ID0ge307XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7IHJlZjogY29udGFpbmVyIH07XG4gICAgICBsZXQgeyBmZWF0dXJlcywgaW5pdGlhbEZvY3VzLCBjb250YWluZXJzOiBfY29udGFpbmVycywgLi4udGhlaXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgICByZXR1cm4gKDAsIGltcG9ydF92dWUxMS5oKShpbXBvcnRfdnVlMTEuRnJhZ21lbnQsIFtcbiAgICAgICAgQm9vbGVhbihmZWF0dXJlcyAmIDQgLyogVGFiTG9jayAqLykgJiYgKDAsIGltcG9ydF92dWUxMS5oKShIaWRkZW4sIHtcbiAgICAgICAgICBhczogXCJidXR0b25cIixcbiAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgIG9uRm9jdXM6IGhhbmRsZUZvY3VzLFxuICAgICAgICAgIGZlYXR1cmVzOiAyIC8qIEZvY3VzYWJsZSAqL1xuICAgICAgICB9KSxcbiAgICAgICAgcmVuZGVyKHtcbiAgICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgICB0aGVpclByb3BzOiB7IC4uLmF0dHJzLCAuLi50aGVpclByb3BzIH0sXG4gICAgICAgICAgc2xvdCxcbiAgICAgICAgICBhdHRycyxcbiAgICAgICAgICBzbG90cyxcbiAgICAgICAgICBuYW1lOiBcIkZvY3VzVHJhcFwiXG4gICAgICAgIH0pLFxuICAgICAgICBCb29sZWFuKGZlYXR1cmVzICYgNCAvKiBUYWJMb2NrICovKSAmJiAoMCwgaW1wb3J0X3Z1ZTExLmgpKEhpZGRlbiwge1xuICAgICAgICAgIGFzOiBcImJ1dHRvblwiLFxuICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgb25Gb2N1czogaGFuZGxlRm9jdXMsXG4gICAgICAgICAgZmVhdHVyZXM6IDIgLyogRm9jdXNhYmxlICovXG4gICAgICAgIH0pXG4gICAgICBdKTtcbiAgICB9O1xuICB9XG59KSwgeyBmZWF0dXJlczogRmVhdHVyZXMzIH0pO1xuZnVuY3Rpb24gdXNlUmVzdG9yZUZvY3VzKHsgb3duZXJEb2N1bWVudCB9LCBlbmFibGVkKSB7XG4gIGxldCByZXN0b3JlRWxlbWVudCA9ICgwLCBpbXBvcnRfdnVlMTEucmVmKShudWxsKTtcbiAgbGV0IG1vdW50ZWQgPSB7IHZhbHVlOiBmYWxzZSB9O1xuICAoMCwgaW1wb3J0X3Z1ZTExLm9uTW91bnRlZCkoKCkgPT4ge1xuICAgICgwLCBpbXBvcnRfdnVlMTEud2F0Y2gpKGVuYWJsZWQsIChuZXdWYWx1ZSwgcHJldlZhbHVlKSA9PiB7XG4gICAgICB2YXIgX2E7XG4gICAgICBpZiAobmV3VmFsdWUgPT09IHByZXZWYWx1ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKCFlbmFibGVkLnZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBtb3VudGVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgIGlmICghcmVzdG9yZUVsZW1lbnQudmFsdWUpIHtcbiAgICAgICAgcmVzdG9yZUVsZW1lbnQudmFsdWUgPSAoX2EgPSBvd25lckRvY3VtZW50LnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuYWN0aXZlRWxlbWVudDtcbiAgICAgIH1cbiAgICB9LCB7IGltbWVkaWF0ZTogdHJ1ZSB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTExLndhdGNoKShlbmFibGVkLCAobmV3VmFsdWUsIHByZXZWYWx1ZSwgb25JbnZhbGlkYXRlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgPT09IHByZXZWYWx1ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKCFlbmFibGVkLnZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBvbkludmFsaWRhdGUoKCkgPT4ge1xuICAgICAgICBpZiAobW91bnRlZC52YWx1ZSA9PT0gZmFsc2UpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBtb3VudGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIGZvY3VzRWxlbWVudChyZXN0b3JlRWxlbWVudC52YWx1ZSk7XG4gICAgICAgIHJlc3RvcmVFbGVtZW50LnZhbHVlID0gbnVsbDtcbiAgICAgIH0pO1xuICAgIH0sIHsgaW1tZWRpYXRlOiB0cnVlIH0pO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHVzZUluaXRpYWxGb2N1cyh7XG4gIG93bmVyRG9jdW1lbnQsXG4gIGNvbnRhaW5lcixcbiAgaW5pdGlhbEZvY3VzXG59LCBlbmFibGVkKSB7XG4gIGxldCBwcmV2aW91c0FjdGl2ZUVsZW1lbnQgPSAoMCwgaW1wb3J0X3Z1ZTExLnJlZikobnVsbCk7XG4gICgwLCBpbXBvcnRfdnVlMTEub25Nb3VudGVkKSgoKSA9PiB7XG4gICAgKDAsIGltcG9ydF92dWUxMS53YXRjaCkoW2NvbnRhaW5lciwgaW5pdGlhbEZvY3VzLCBlbmFibGVkXSwgKG5ld1ZhbHVlcywgcHJldlZhbHVlcykgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlcy5ldmVyeSgodmFsdWUsIGlkeCkgPT4gKHByZXZWYWx1ZXMgPT0gbnVsbCA/IHZvaWQgMCA6IHByZXZWYWx1ZXNbaWR4XSkgPT09IHZhbHVlKSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKCFlbmFibGVkLnZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBsZXQgY29udGFpbmVyRWxlbWVudCA9IGRvbShjb250YWluZXIpO1xuICAgICAgaWYgKCFjb250YWluZXJFbGVtZW50KVxuICAgICAgICByZXR1cm47XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBsZXQgaW5pdGlhbEZvY3VzRWxlbWVudCA9IGRvbShpbml0aWFsRm9jdXMpO1xuICAgICAgICBsZXQgYWN0aXZlRWxlbWVudCA9IChfYSA9IG93bmVyRG9jdW1lbnQudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5hY3RpdmVFbGVtZW50O1xuICAgICAgICBpZiAoaW5pdGlhbEZvY3VzRWxlbWVudCkge1xuICAgICAgICAgIGlmIChpbml0aWFsRm9jdXNFbGVtZW50ID09PSBhY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICBwcmV2aW91c0FjdGl2ZUVsZW1lbnQudmFsdWUgPSBhY3RpdmVFbGVtZW50O1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChjb250YWluZXJFbGVtZW50LmNvbnRhaW5zKGFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgICAgcHJldmlvdXNBY3RpdmVFbGVtZW50LnZhbHVlID0gYWN0aXZlRWxlbWVudDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluaXRpYWxGb2N1c0VsZW1lbnQpIHtcbiAgICAgICAgICBmb2N1c0VsZW1lbnQoaW5pdGlhbEZvY3VzRWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGZvY3VzSW4oY29udGFpbmVyRWxlbWVudCwgMSAvKiBGaXJzdCAqLyB8IDMyIC8qIE5vU2Nyb2xsICovKSA9PT0gMCAvKiBFcnJvciAqLykge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVGhlcmUgYXJlIG5vIGZvY3VzYWJsZSBlbGVtZW50cyBpbnNpZGUgdGhlIDxGb2N1c1RyYXAgLz5cIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHByZXZpb3VzQWN0aXZlRWxlbWVudC52YWx1ZSA9IChfYiA9IG93bmVyRG9jdW1lbnQudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYi5hY3RpdmVFbGVtZW50O1xuICAgICAgfSk7XG4gICAgfSwgeyBpbW1lZGlhdGU6IHRydWUsIGZsdXNoOiBcInBvc3RcIiB9KTtcbiAgfSk7XG4gIHJldHVybiBwcmV2aW91c0FjdGl2ZUVsZW1lbnQ7XG59XG5mdW5jdGlvbiB1c2VGb2N1c0xvY2soe1xuICBvd25lckRvY3VtZW50LFxuICBjb250YWluZXIsXG4gIGNvbnRhaW5lcnMsXG4gIHByZXZpb3VzQWN0aXZlRWxlbWVudFxufSwgZW5hYmxlZCkge1xuICB2YXIgX2E7XG4gIHVzZUV2ZW50TGlzdGVuZXIoKF9hID0gb3duZXJEb2N1bWVudC52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmRlZmF1bHRWaWV3LCBcImZvY3VzXCIsIChldmVudCkgPT4ge1xuICAgIGlmICghZW5hYmxlZC52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBsZXQgYWxsQ29udGFpbmVycyA9IG5ldyBTZXQoY29udGFpbmVycyA9PSBudWxsID8gdm9pZCAwIDogY29udGFpbmVycy52YWx1ZSk7XG4gICAgYWxsQ29udGFpbmVycy5hZGQoY29udGFpbmVyKTtcbiAgICBsZXQgcHJldmlvdXMgPSBwcmV2aW91c0FjdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgaWYgKCFwcmV2aW91cylcbiAgICAgIHJldHVybjtcbiAgICBsZXQgdG9FbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xuICAgIGlmICh0b0VsZW1lbnQgJiYgdG9FbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgIGlmICghY29udGFpbnMoYWxsQ29udGFpbmVycywgdG9FbGVtZW50KSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZm9jdXNFbGVtZW50KHByZXZpb3VzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByZXZpb3VzQWN0aXZlRWxlbWVudC52YWx1ZSA9IHRvRWxlbWVudDtcbiAgICAgICAgZm9jdXNFbGVtZW50KHRvRWxlbWVudCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvY3VzRWxlbWVudChwcmV2aW91c0FjdGl2ZUVsZW1lbnQudmFsdWUpO1xuICAgIH1cbiAgfSwgdHJ1ZSk7XG59XG5mdW5jdGlvbiBjb250YWlucyhjb250YWluZXJzLCBlbGVtZW50KSB7XG4gIHZhciBfYTtcbiAgZm9yIChsZXQgY29udGFpbmVyIG9mIGNvbnRhaW5lcnMpIHtcbiAgICBpZiAoKF9hID0gY29udGFpbmVyLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuY29udGFpbnMoZWxlbWVudCkpXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8vIHNyYy9ob29rcy91c2UtaW5lcnQtb3RoZXJzLnRzXG52YXIgaW1wb3J0X3Z1ZTEyID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBDSElMRFJFTl9TRUxFQ1RPUiA9IGZhbHNlID8gJ1tkYXRhLXYtYXBwPVwiXCJdID4gKicgOiBcImJvZHkgPiAqXCI7XG52YXIgaW50ZXJhY3RhYmxlcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG52YXIgb3JpZ2luYWxzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbmZ1bmN0aW9uIGluZXJ0KGVsZW1lbnQpIHtcbiAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiLCBcInRydWVcIik7XG4gIGVsZW1lbnQuaW5lcnQgPSB0cnVlO1xufVxuZnVuY3Rpb24gcmVzdG9yZShlbGVtZW50KSB7XG4gIGxldCBvcmlnaW5hbCA9IG9yaWdpbmFscy5nZXQoZWxlbWVudCk7XG4gIGlmICghb3JpZ2luYWwpXG4gICAgcmV0dXJuO1xuICBpZiAob3JpZ2luYWxbXCJhcmlhLWhpZGRlblwiXSA9PT0gbnVsbClcbiAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIpO1xuICBlbHNlXG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiLCBvcmlnaW5hbFtcImFyaWEtaGlkZGVuXCJdKTtcbiAgZWxlbWVudC5pbmVydCA9IG9yaWdpbmFsLmluZXJ0O1xufVxuZnVuY3Rpb24gdXNlSW5lcnRPdGhlcnMoY29udGFpbmVyLCBlbmFibGVkID0gKDAsIGltcG9ydF92dWUxMi5yZWYpKHRydWUpKSB7XG4gICgwLCBpbXBvcnRfdnVlMTIud2F0Y2hFZmZlY3QpKChvbkludmFsaWRhdGUpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgaWYgKCFjb250YWluZXIudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgbGV0IGVsZW1lbnQgPSBjb250YWluZXIudmFsdWU7XG4gICAgbGV0IG93bmVyRG9jdW1lbnQgPSBnZXRPd25lckRvY3VtZW50KGVsZW1lbnQpO1xuICAgIGlmICghb3duZXJEb2N1bWVudClcbiAgICAgIHJldHVybjtcbiAgICBpbnRlcmFjdGFibGVzLmFkZChlbGVtZW50KTtcbiAgICBmb3IgKGxldCBvcmlnaW5hbCBvZiBvcmlnaW5hbHMua2V5cygpKSB7XG4gICAgICBpZiAob3JpZ2luYWwuY29udGFpbnMoZWxlbWVudCkpIHtcbiAgICAgICAgcmVzdG9yZShvcmlnaW5hbCk7XG4gICAgICAgIG9yaWdpbmFscy5kZWxldGUob3JpZ2luYWwpO1xuICAgICAgfVxuICAgIH1cbiAgICBvd25lckRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoQ0hJTERSRU5fU0VMRUNUT1IpLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICBpZiAoIShjaGlsZCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgZm9yIChsZXQgaW50ZXJhY3RhYmxlIG9mIGludGVyYWN0YWJsZXMpIHtcbiAgICAgICAgaWYgKGNoaWxkLmNvbnRhaW5zKGludGVyYWN0YWJsZSkpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGludGVyYWN0YWJsZXMuc2l6ZSA9PT0gMSkge1xuICAgICAgICBvcmlnaW5hbHMuc2V0KGNoaWxkLCB7XG4gICAgICAgICAgXCJhcmlhLWhpZGRlblwiOiBjaGlsZC5nZXRBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiKSxcbiAgICAgICAgICBpbmVydDogY2hpbGQuaW5lcnRcbiAgICAgICAgfSk7XG4gICAgICAgIGluZXJ0KGNoaWxkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBvbkludmFsaWRhdGUoKCkgPT4ge1xuICAgICAgaW50ZXJhY3RhYmxlcy5kZWxldGUoZWxlbWVudCk7XG4gICAgICBpZiAoaW50ZXJhY3RhYmxlcy5zaXplID4gMCkge1xuICAgICAgICBvd25lckRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoQ0hJTERSRU5fU0VMRUNUT1IpLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgICAgaWYgKCEoY2hpbGQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgaWYgKG9yaWdpbmFscy5oYXMoY2hpbGQpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIGZvciAobGV0IGludGVyYWN0YWJsZSBvZiBpbnRlcmFjdGFibGVzKSB7XG4gICAgICAgICAgICBpZiAoY2hpbGQuY29udGFpbnMoaW50ZXJhY3RhYmxlKSlcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvcmlnaW5hbHMuc2V0KGNoaWxkLCB7XG4gICAgICAgICAgICBcImFyaWEtaGlkZGVuXCI6IGNoaWxkLmdldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIpLFxuICAgICAgICAgICAgaW5lcnQ6IGNoaWxkLmluZXJ0XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaW5lcnQoY2hpbGQpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAobGV0IGVsZW1lbnQyIG9mIG9yaWdpbmFscy5rZXlzKCkpIHtcbiAgICAgICAgICByZXN0b3JlKGVsZW1lbnQyKTtcbiAgICAgICAgICBvcmlnaW5hbHMuZGVsZXRlKGVsZW1lbnQyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuLy8gc3JjL2NvbXBvbmVudHMvcG9ydGFsL3BvcnRhbC50c1xudmFyIGltcG9ydF92dWUxNCA9IHJlcXVpcmUoXCJ2dWVcIik7XG5cbi8vIHNyYy9pbnRlcm5hbC9wb3J0YWwtZm9yY2Utcm9vdC50c1xudmFyIGltcG9ydF92dWUxMyA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgRm9yY2VQb3J0YWxSb290Q29udGV4dCA9IFN5bWJvbChcIkZvcmNlUG9ydGFsUm9vdENvbnRleHRcIik7XG5mdW5jdGlvbiB1c2VQb3J0YWxSb290KCkge1xuICByZXR1cm4gKDAsIGltcG9ydF92dWUxMy5pbmplY3QpKEZvcmNlUG9ydGFsUm9vdENvbnRleHQsIGZhbHNlKTtcbn1cbnZhciBGb3JjZVBvcnRhbFJvb3QgPSAoMCwgaW1wb3J0X3Z1ZTEzLmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkZvcmNlUG9ydGFsUm9vdFwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwidGVtcGxhdGVcIiB9LFxuICAgIGZvcmNlOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgc2xvdHMsIGF0dHJzIH0pIHtcbiAgICAoMCwgaW1wb3J0X3Z1ZTEzLnByb3ZpZGUpKEZvcmNlUG9ydGFsUm9vdENvbnRleHQsIHByb3BzLmZvcmNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHsgZm9yY2UsIC4uLnRoZWlyUHJvcHMgfSA9IHByb3BzO1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIG91clByb3BzOiB7fSxcbiAgICAgICAgc2xvdDoge30sXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBhdHRycyxcbiAgICAgICAgbmFtZTogXCJGb3JjZVBvcnRhbFJvb3RcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIHNyYy9jb21wb25lbnRzL3BvcnRhbC9wb3J0YWwudHNcbmZ1bmN0aW9uIGdldFBvcnRhbFJvb3QoY29udGV4dEVsZW1lbnQpIHtcbiAgbGV0IG93bmVyRG9jdW1lbnQgPSBnZXRPd25lckRvY3VtZW50KGNvbnRleHRFbGVtZW50KTtcbiAgaWYgKCFvd25lckRvY3VtZW50KSB7XG4gICAgaWYgKGNvbnRleHRFbGVtZW50ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBbSGVhZGxlc3MgVUldOiBDYW5ub3QgZmluZCBvd25lckRvY3VtZW50IGZvciBjb250ZXh0RWxlbWVudDogJHtjb250ZXh0RWxlbWVudH1gKTtcbiAgfVxuICBsZXQgZXhpc3RpbmdSb290ID0gb3duZXJEb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImhlYWRsZXNzdWktcG9ydGFsLXJvb3RcIik7XG4gIGlmIChleGlzdGluZ1Jvb3QpXG4gICAgcmV0dXJuIGV4aXN0aW5nUm9vdDtcbiAgbGV0IHJvb3QgPSBvd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gIHJvb3Quc2V0QXR0cmlidXRlKFwiaWRcIiwgXCJoZWFkbGVzc3VpLXBvcnRhbC1yb290XCIpO1xuICByZXR1cm4gb3duZXJEb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHJvb3QpO1xufVxudmFyIFBvcnRhbCA9ICgwLCBpbXBvcnRfdnVlMTQuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiUG9ydGFsXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IHNsb3RzLCBhdHRycyB9KSB7XG4gICAgbGV0IGVsZW1lbnQgPSAoMCwgaW1wb3J0X3Z1ZTE0LnJlZikobnVsbCk7XG4gICAgbGV0IG93bmVyRG9jdW1lbnQgPSAoMCwgaW1wb3J0X3Z1ZTE0LmNvbXB1dGVkKSgoKSA9PiBnZXRPd25lckRvY3VtZW50KGVsZW1lbnQpKTtcbiAgICBsZXQgZm9yY2VQb3J0YWxSb290ID0gdXNlUG9ydGFsUm9vdCgpO1xuICAgIGxldCBncm91cENvbnRleHQgPSAoMCwgaW1wb3J0X3Z1ZTE0LmluamVjdCkoUG9ydGFsR3JvdXBDb250ZXh0LCBudWxsKTtcbiAgICBsZXQgbXlUYXJnZXQgPSAoMCwgaW1wb3J0X3Z1ZTE0LnJlZikoZm9yY2VQb3J0YWxSb290ID09PSB0cnVlID8gZ2V0UG9ydGFsUm9vdChlbGVtZW50LnZhbHVlKSA6IGdyb3VwQ29udGV4dCA9PSBudWxsID8gZ2V0UG9ydGFsUm9vdChlbGVtZW50LnZhbHVlKSA6IGdyb3VwQ29udGV4dC5yZXNvbHZlVGFyZ2V0KCkpO1xuICAgICgwLCBpbXBvcnRfdnVlMTQud2F0Y2hFZmZlY3QpKCgpID0+IHtcbiAgICAgIGlmIChmb3JjZVBvcnRhbFJvb3QpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChncm91cENvbnRleHQgPT0gbnVsbClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgbXlUYXJnZXQudmFsdWUgPSBncm91cENvbnRleHQucmVzb2x2ZVRhcmdldCgpO1xuICAgIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMTQub25Vbm1vdW50ZWQpKCgpID0+IHtcbiAgICAgIHZhciBfYSwgX2I7XG4gICAgICBsZXQgcm9vdCA9IChfYSA9IG93bmVyRG9jdW1lbnQudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5nZXRFbGVtZW50QnlJZChcImhlYWRsZXNzdWktcG9ydGFsLXJvb3RcIik7XG4gICAgICBpZiAoIXJvb3QpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChteVRhcmdldC52YWx1ZSAhPT0gcm9vdClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKG15VGFyZ2V0LnZhbHVlLmNoaWxkcmVuLmxlbmd0aCA8PSAwKSB7XG4gICAgICAgIChfYiA9IG15VGFyZ2V0LnZhbHVlLnBhcmVudEVsZW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfYi5yZW1vdmVDaGlsZChteVRhcmdldC52YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChteVRhcmdldC52YWx1ZSA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIHJlZjogZWxlbWVudCxcbiAgICAgICAgXCJkYXRhLWhlYWRsZXNzdWktcG9ydGFsXCI6IFwiXCJcbiAgICAgIH07XG4gICAgICByZXR1cm4gKDAsIGltcG9ydF92dWUxNC5oKShpbXBvcnRfdnVlMTQuVGVsZXBvcnQsIHsgdG86IG15VGFyZ2V0LnZhbHVlIH0sIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzOiBwcm9wcyxcbiAgICAgICAgc2xvdDoge30sXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJQb3J0YWxcIlxuICAgICAgfSkpO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIFBvcnRhbEdyb3VwQ29udGV4dCA9IFN5bWJvbChcIlBvcnRhbEdyb3VwQ29udGV4dFwiKTtcbnZhciBQb3J0YWxHcm91cCA9ICgwLCBpbXBvcnRfdnVlMTQuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiUG9ydGFsR3JvdXBcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcInRlbXBsYXRlXCIgfSxcbiAgICB0YXJnZXQ6IHsgdHlwZTogT2JqZWN0LCBkZWZhdWx0OiBudWxsIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzIH0pIHtcbiAgICBsZXQgYXBpID0gKDAsIGltcG9ydF92dWUxNC5yZWFjdGl2ZSkoe1xuICAgICAgcmVzb2x2ZVRhcmdldCgpIHtcbiAgICAgICAgcmV0dXJuIHByb3BzLnRhcmdldDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE0LnByb3ZpZGUpKFBvcnRhbEdyb3VwQ29udGV4dCwgYXBpKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHsgdGFyZ2V0OiBfLCAuLi50aGVpclByb3BzIH0gPSBwcm9wcztcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBvdXJQcm9wczoge30sXG4gICAgICAgIHNsb3Q6IHt9LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiUG9ydGFsR3JvdXBcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIHNyYy9pbnRlcm5hbC9zdGFjay1jb250ZXh0LnRzXG52YXIgaW1wb3J0X3Z1ZTE1ID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBTdGFja0NvbnRleHQgPSBTeW1ib2woXCJTdGFja0NvbnRleHRcIik7XG5mdW5jdGlvbiB1c2VTdGFja0NvbnRleHQoKSB7XG4gIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTE1LmluamVjdCkoU3RhY2tDb250ZXh0LCAoKSA9PiB7XG4gIH0pO1xufVxuZnVuY3Rpb24gdXNlU3RhY2tQcm92aWRlcih7XG4gIHR5cGUsXG4gIGVsZW1lbnQsXG4gIG9uVXBkYXRlXG59KSB7XG4gIGxldCBwYXJlbnRVcGRhdGUgPSB1c2VTdGFja0NvbnRleHQoKTtcbiAgZnVuY3Rpb24gbm90aWZ5KC4uLmFyZ3MpIHtcbiAgICBvblVwZGF0ZSA9PSBudWxsID8gdm9pZCAwIDogb25VcGRhdGUoLi4uYXJncyk7XG4gICAgcGFyZW50VXBkYXRlKC4uLmFyZ3MpO1xuICB9XG4gICgwLCBpbXBvcnRfdnVlMTUub25Nb3VudGVkKSgoKSA9PiB7XG4gICAgbm90aWZ5KDAgLyogQWRkICovLCB0eXBlLCBlbGVtZW50KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE1Lm9uVW5tb3VudGVkKSgoKSA9PiB7XG4gICAgICBub3RpZnkoMSAvKiBSZW1vdmUgKi8sIHR5cGUsIGVsZW1lbnQpO1xuICAgIH0pO1xuICB9KTtcbiAgKDAsIGltcG9ydF92dWUxNS5wcm92aWRlKShTdGFja0NvbnRleHQsIG5vdGlmeSk7XG59XG5cbi8vIHNyYy9jb21wb25lbnRzL2Rlc2NyaXB0aW9uL2Rlc2NyaXB0aW9uLnRzXG52YXIgaW1wb3J0X3Z1ZTE2ID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBEZXNjcmlwdGlvbkNvbnRleHQgPSBTeW1ib2woXCJEZXNjcmlwdGlvbkNvbnRleHRcIik7XG5mdW5jdGlvbiB1c2VEZXNjcmlwdGlvbkNvbnRleHQoKSB7XG4gIGxldCBjb250ZXh0ID0gKDAsIGltcG9ydF92dWUxNi5pbmplY3QpKERlc2NyaXB0aW9uQ29udGV4dCwgbnVsbCk7XG4gIGlmIChjb250ZXh0ID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyBwYXJlbnRcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5mdW5jdGlvbiB1c2VEZXNjcmlwdGlvbnMoe1xuICBzbG90ID0gKDAsIGltcG9ydF92dWUxNi5yZWYpKHt9KSxcbiAgbmFtZSA9IFwiRGVzY3JpcHRpb25cIixcbiAgcHJvcHMgPSB7fVxufSA9IHt9KSB7XG4gIGxldCBkZXNjcmlwdGlvbklkcyA9ICgwLCBpbXBvcnRfdnVlMTYucmVmKShbXSk7XG4gIGZ1bmN0aW9uIHJlZ2lzdGVyKHZhbHVlKSB7XG4gICAgZGVzY3JpcHRpb25JZHMudmFsdWUucHVzaCh2YWx1ZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBpZHggPSBkZXNjcmlwdGlvbklkcy52YWx1ZS5pbmRleE9mKHZhbHVlKTtcbiAgICAgIGlmIChpZHggPT09IC0xKVxuICAgICAgICByZXR1cm47XG4gICAgICBkZXNjcmlwdGlvbklkcy52YWx1ZS5zcGxpY2UoaWR4LCAxKTtcbiAgICB9O1xuICB9XG4gICgwLCBpbXBvcnRfdnVlMTYucHJvdmlkZSkoRGVzY3JpcHRpb25Db250ZXh0LCB7IHJlZ2lzdGVyLCBzbG90LCBuYW1lLCBwcm9wcyB9KTtcbiAgcmV0dXJuICgwLCBpbXBvcnRfdnVlMTYuY29tcHV0ZWQpKCgpID0+IGRlc2NyaXB0aW9uSWRzLnZhbHVlLmxlbmd0aCA+IDAgPyBkZXNjcmlwdGlvbklkcy52YWx1ZS5qb2luKFwiIFwiKSA6IHZvaWQgMCk7XG59XG52YXIgRGVzY3JpcHRpb24gPSAoMCwgaW1wb3J0X3Z1ZTE2LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkRlc2NyaXB0aW9uXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJwXCIgfVxuICB9LFxuICBzZXR1cChteVByb3BzLCB7IGF0dHJzLCBzbG90cyB9KSB7XG4gICAgbGV0IGNvbnRleHQgPSB1c2VEZXNjcmlwdGlvbkNvbnRleHQoKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktZGVzY3JpcHRpb24tJHt1c2VJZCgpfWA7XG4gICAgKDAsIGltcG9ydF92dWUxNi5vbk1vdW50ZWQpKCgpID0+ICgwLCBpbXBvcnRfdnVlMTYub25Vbm1vdW50ZWQpKGNvbnRleHQucmVnaXN0ZXIoaWQyKSkpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgeyBuYW1lID0gXCJEZXNjcmlwdGlvblwiLCBzbG90ID0gKDAsIGltcG9ydF92dWUxNi5yZWYpKHt9KSwgcHJvcHMgPSB7fSB9ID0gY29udGV4dDtcbiAgICAgIGxldCB0aGVpclByb3BzID0gbXlQcm9wcztcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgLi4uT2JqZWN0LmVudHJpZXMocHJvcHMpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+IE9iamVjdC5hc3NpZ24oYWNjLCB7IFtrZXldOiAoMCwgaW1wb3J0X3Z1ZTE2LnVucmVmKSh2YWx1ZSkgfSksIHt9KSxcbiAgICAgICAgaWQ6IGlkMlxuICAgICAgfTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgc2xvdDogc2xvdC52YWx1ZSxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gc3JjL2NvbXBvbmVudHMvZGlhbG9nL2RpYWxvZy50c1xudmFyIERpYWxvZ0NvbnRleHQgPSBTeW1ib2woXCJEaWFsb2dDb250ZXh0XCIpO1xuZnVuY3Rpb24gdXNlRGlhbG9nQ29udGV4dChjb21wb25lbnQpIHtcbiAgbGV0IGNvbnRleHQgPSAoMCwgaW1wb3J0X3Z1ZTE3LmluamVjdCkoRGlhbG9nQ29udGV4dCwgbnVsbCk7XG4gIGlmIChjb250ZXh0ID09PSBudWxsKSB7XG4gICAgbGV0IGVyciA9IG5ldyBFcnJvcihgPCR7Y29tcG9uZW50fSAvPiBpcyBtaXNzaW5nIGEgcGFyZW50IDxEaWFsb2cgLz4gY29tcG9uZW50LmApO1xuICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVyciwgdXNlRGlhbG9nQ29udGV4dCk7XG4gICAgdGhyb3cgZXJyO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxudmFyIE1pc3NpbmcgPSBcIkRDOEY4OTJELTJFQkQtNDQ3Qy1BNEM4LUEwMzA1ODQzNkZGNFwiO1xudmFyIERpYWxvZyA9ICgwLCBpbXBvcnRfdnVlMTcuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiRGlhbG9nXCIsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9LFxuICAgIHN0YXRpYzogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIHVubW91bnQ6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogdHJ1ZSB9LFxuICAgIG9wZW46IHsgdHlwZTogW0Jvb2xlYW4sIFN0cmluZ10sIGRlZmF1bHQ6IE1pc3NpbmcgfSxcbiAgICBpbml0aWFsRm9jdXM6IHsgdHlwZTogT2JqZWN0LCBkZWZhdWx0OiBudWxsIH1cbiAgfSxcbiAgZW1pdHM6IHsgY2xvc2U6IChfY2xvc2UpID0+IHRydWUgfSxcbiAgc2V0dXAocHJvcHMsIHsgZW1pdCwgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIHZhciBfYTtcbiAgICBsZXQgcmVhZHkgPSAoMCwgaW1wb3J0X3Z1ZTE3LnJlZikoZmFsc2UpO1xuICAgICgwLCBpbXBvcnRfdnVlMTcub25Nb3VudGVkKSgoKSA9PiB7XG4gICAgICByZWFkeS52YWx1ZSA9IHRydWU7XG4gICAgfSk7XG4gICAgbGV0IG5lc3RlZERpYWxvZ0NvdW50ID0gKDAsIGltcG9ydF92dWUxNy5yZWYpKDApO1xuICAgIGxldCB1c2VzT3BlbkNsb3NlZFN0YXRlID0gdXNlT3BlbkNsb3NlZCgpO1xuICAgIGxldCBvcGVuID0gKDAsIGltcG9ydF92dWUxNy5jb21wdXRlZCkoKCkgPT4ge1xuICAgICAgaWYgKHByb3BzLm9wZW4gPT09IE1pc3NpbmcgJiYgdXNlc09wZW5DbG9zZWRTdGF0ZSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbWF0Y2godXNlc09wZW5DbG9zZWRTdGF0ZS52YWx1ZSwge1xuICAgICAgICAgIFswIC8qIE9wZW4gKi9dOiB0cnVlLFxuICAgICAgICAgIFsxIC8qIENsb3NlZCAqL106IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByb3BzLm9wZW47XG4gICAgfSk7XG4gICAgbGV0IGNvbnRhaW5lcnMgPSAoMCwgaW1wb3J0X3Z1ZTE3LnJlZikoLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKSk7XG4gICAgbGV0IGludGVybmFsRGlhbG9nUmVmID0gKDAsIGltcG9ydF92dWUxNy5yZWYpKG51bGwpO1xuICAgIGxldCBtYWluVHJlZU5vZGUgPSAoMCwgaW1wb3J0X3Z1ZTE3LnJlZikobnVsbCk7XG4gICAgbGV0IG93bmVyRG9jdW1lbnQgPSAoMCwgaW1wb3J0X3Z1ZTE3LmNvbXB1dGVkKSgoKSA9PiBnZXRPd25lckRvY3VtZW50KGludGVybmFsRGlhbG9nUmVmKSk7XG4gICAgZXhwb3NlKHsgZWw6IGludGVybmFsRGlhbG9nUmVmLCAkZWw6IGludGVybmFsRGlhbG9nUmVmIH0pO1xuICAgIGxldCBoYXNPcGVuID0gcHJvcHMub3BlbiAhPT0gTWlzc2luZyB8fCB1c2VzT3BlbkNsb3NlZFN0YXRlICE9PSBudWxsO1xuICAgIGlmICghaGFzT3Blbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3UgZm9yZ290IHRvIHByb3ZpZGUgYW4gXFxgb3BlblxcYCBwcm9wIHRvIHRoZSBcXGBEaWFsb2dcXGAuYCk7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb3Blbi52YWx1ZSAhPT0gXCJib29sZWFuXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgWW91IHByb3ZpZGVkIGFuIFxcYG9wZW5cXGAgcHJvcCB0byB0aGUgXFxgRGlhbG9nXFxgLCBidXQgdGhlIHZhbHVlIGlzIG5vdCBhIGJvb2xlYW4uIFJlY2VpdmVkOiAke29wZW4udmFsdWUgPT09IE1pc3NpbmcgPyB2b2lkIDAgOiBwcm9wcy5vcGVufWApO1xuICAgIH1cbiAgICBsZXQgZGlhbG9nU3RhdGUgPSAoMCwgaW1wb3J0X3Z1ZTE3LmNvbXB1dGVkKSgoKSA9PiAhcmVhZHkudmFsdWUgPyAxIC8qIENsb3NlZCAqLyA6IG9wZW4udmFsdWUgPyAwIC8qIE9wZW4gKi8gOiAxIC8qIENsb3NlZCAqLyk7XG4gICAgbGV0IGVuYWJsZWQgPSAoMCwgaW1wb3J0X3Z1ZTE3LmNvbXB1dGVkKSgoKSA9PiBkaWFsb2dTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovKTtcbiAgICBsZXQgaGFzTmVzdGVkRGlhbG9ncyA9ICgwLCBpbXBvcnRfdnVlMTcuY29tcHV0ZWQpKCgpID0+IG5lc3RlZERpYWxvZ0NvdW50LnZhbHVlID4gMSk7XG4gICAgbGV0IGhhc1BhcmVudERpYWxvZyA9ICgwLCBpbXBvcnRfdnVlMTcuaW5qZWN0KShEaWFsb2dDb250ZXh0LCBudWxsKSAhPT0gbnVsbDtcbiAgICBsZXQgcG9zaXRpb24gPSAoMCwgaW1wb3J0X3Z1ZTE3LmNvbXB1dGVkKSgoKSA9PiAhaGFzTmVzdGVkRGlhbG9ncy52YWx1ZSA/IFwibGVhZlwiIDogXCJwYXJlbnRcIik7XG4gICAgdXNlSW5lcnRPdGhlcnMoaW50ZXJuYWxEaWFsb2dSZWYsICgwLCBpbXBvcnRfdnVlMTcuY29tcHV0ZWQpKCgpID0+IGhhc05lc3RlZERpYWxvZ3MudmFsdWUgPyBlbmFibGVkLnZhbHVlIDogZmFsc2UpKTtcbiAgICB1c2VTdGFja1Byb3ZpZGVyKHtcbiAgICAgIHR5cGU6IFwiRGlhbG9nXCIsXG4gICAgICBlbGVtZW50OiBpbnRlcm5hbERpYWxvZ1JlZixcbiAgICAgIG9uVXBkYXRlOiAobWVzc2FnZSwgdHlwZSwgZWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAodHlwZSAhPT0gXCJEaWFsb2dcIilcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIHJldHVybiBtYXRjaChtZXNzYWdlLCB7XG4gICAgICAgICAgWzAgLyogQWRkICovXSgpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lcnMudmFsdWUuYWRkKGVsZW1lbnQpO1xuICAgICAgICAgICAgbmVzdGVkRGlhbG9nQ291bnQudmFsdWUgKz0gMTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIFsxIC8qIFJlbW92ZSAqL10oKSB7XG4gICAgICAgICAgICBjb250YWluZXJzLnZhbHVlLmRlbGV0ZShlbGVtZW50KTtcbiAgICAgICAgICAgIG5lc3RlZERpYWxvZ0NvdW50LnZhbHVlIC09IDE7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBsZXQgZGVzY3JpYmVkYnkgPSB1c2VEZXNjcmlwdGlvbnMoe1xuICAgICAgbmFtZTogXCJEaWFsb2dEZXNjcmlwdGlvblwiLFxuICAgICAgc2xvdDogKDAsIGltcG9ydF92dWUxNy5jb21wdXRlZCkoKCkgPT4gKHsgb3Blbjogb3Blbi52YWx1ZSB9KSlcbiAgICB9KTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktZGlhbG9nLSR7dXNlSWQoKX1gO1xuICAgIGxldCB0aXRsZUlkID0gKDAsIGltcG9ydF92dWUxNy5yZWYpKG51bGwpO1xuICAgIGxldCBhcGkgPSB7XG4gICAgICB0aXRsZUlkLFxuICAgICAgcGFuZWxSZWY6ICgwLCBpbXBvcnRfdnVlMTcucmVmKShudWxsKSxcbiAgICAgIGRpYWxvZ1N0YXRlLFxuICAgICAgc2V0VGl0bGVJZChpZDMpIHtcbiAgICAgICAgaWYgKHRpdGxlSWQudmFsdWUgPT09IGlkMylcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRpdGxlSWQudmFsdWUgPSBpZDM7XG4gICAgICB9LFxuICAgICAgY2xvc2UoKSB7XG4gICAgICAgIGVtaXQoXCJjbG9zZVwiLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTE3LnByb3ZpZGUpKERpYWxvZ0NvbnRleHQsIGFwaSk7XG4gICAgdXNlT3V0c2lkZUNsaWNrKCgpID0+IHtcbiAgICAgIHZhciBfYTIsIF9iLCBfYztcbiAgICAgIGxldCByb290Q29udGFpbmVycyA9IEFycmF5LmZyb20oKF9iID0gKF9hMiA9IG93bmVyRG9jdW1lbnQudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYTIucXVlcnlTZWxlY3RvckFsbChcImJvZHkgPiAqLCBbZGF0YS1oZWFkbGVzc3VpLXBvcnRhbF1cIikpICE9IG51bGwgPyBfYiA6IFtdKS5maWx0ZXIoKGNvbnRhaW5lcikgPT4ge1xuICAgICAgICBpZiAoIShjb250YWluZXIgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoY29udGFpbmVyLmNvbnRhaW5zKGRvbShtYWluVHJlZU5vZGUpKSlcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChhcGkucGFuZWxSZWYudmFsdWUgJiYgY29udGFpbmVyLmNvbnRhaW5zKGFwaS5wYW5lbFJlZi52YWx1ZSkpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIFsuLi5yb290Q29udGFpbmVycywgKF9jID0gYXBpLnBhbmVsUmVmLnZhbHVlKSAhPSBudWxsID8gX2MgOiBpbnRlcm5hbERpYWxvZ1JlZi52YWx1ZV07XG4gICAgfSwgKF9ldmVudCwgdGFyZ2V0KSA9PiB7XG4gICAgICBhcGkuY2xvc2UoKTtcbiAgICAgICgwLCBpbXBvcnRfdnVlMTcubmV4dFRpY2spKCgpID0+IHRhcmdldCA9PSBudWxsID8gdm9pZCAwIDogdGFyZ2V0LmZvY3VzKCkpO1xuICAgIH0sICgwLCBpbXBvcnRfdnVlMTcuY29tcHV0ZWQpKCgpID0+IGRpYWxvZ1N0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8gJiYgIWhhc05lc3RlZERpYWxvZ3MudmFsdWUpKTtcbiAgICB1c2VFdmVudExpc3RlbmVyKChfYSA9IG93bmVyRG9jdW1lbnQudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5kZWZhdWx0VmlldywgXCJrZXlkb3duXCIsIChldmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChldmVudC5rZXkgIT09IFwiRXNjYXBlXCIgLyogRXNjYXBlICovKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoZGlhbG9nU3RhdGUudmFsdWUgIT09IDAgLyogT3BlbiAqLylcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGhhc05lc3RlZERpYWxvZ3MudmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGFwaS5jbG9zZSgpO1xuICAgIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMTcud2F0Y2hFZmZlY3QpKChvbkludmFsaWRhdGUpID0+IHtcbiAgICAgIHZhciBfYTI7XG4gICAgICBpZiAoZGlhbG9nU3RhdGUudmFsdWUgIT09IDAgLyogT3BlbiAqLylcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGhhc1BhcmVudERpYWxvZylcbiAgICAgICAgcmV0dXJuO1xuICAgICAgbGV0IG93bmVyID0gb3duZXJEb2N1bWVudC52YWx1ZTtcbiAgICAgIGlmICghb3duZXIpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGxldCBkb2N1bWVudEVsZW1lbnQgPSBvd25lciA9PSBudWxsID8gdm9pZCAwIDogb3duZXIuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgbGV0IG93bmVyV2luZG93ID0gKF9hMiA9IG93bmVyLmRlZmF1bHRWaWV3KSAhPSBudWxsID8gX2EyIDogd2luZG93O1xuICAgICAgbGV0IG92ZXJmbG93ID0gZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93O1xuICAgICAgbGV0IHBhZGRpbmdSaWdodCA9IGRvY3VtZW50RWxlbWVudC5zdHlsZS5wYWRkaW5nUmlnaHQ7XG4gICAgICBsZXQgc2Nyb2xsYmFyV2lkdGhCZWZvcmUgPSBvd25lcldpbmRvdy5pbm5lcldpZHRoIC0gZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gXCJoaWRkZW5cIjtcbiAgICAgIGlmIChzY3JvbGxiYXJXaWR0aEJlZm9yZSA+IDApIHtcbiAgICAgICAgbGV0IHNjcm9sbGJhcldpZHRoQWZ0ZXIgPSBkb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggLSBkb2N1bWVudEVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIGxldCBzY3JvbGxiYXJXaWR0aCA9IHNjcm9sbGJhcldpZHRoQmVmb3JlIC0gc2Nyb2xsYmFyV2lkdGhBZnRlcjtcbiAgICAgICAgZG9jdW1lbnRFbGVtZW50LnN0eWxlLnBhZGRpbmdSaWdodCA9IGAke3Njcm9sbGJhcldpZHRofXB4YDtcbiAgICAgIH1cbiAgICAgIG9uSW52YWxpZGF0ZSgoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9IG92ZXJmbG93O1xuICAgICAgICBkb2N1bWVudEVsZW1lbnQuc3R5bGUucGFkZGluZ1JpZ2h0ID0gcGFkZGluZ1JpZ2h0O1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgKDAsIGltcG9ydF92dWUxNy53YXRjaEVmZmVjdCkoKG9uSW52YWxpZGF0ZSkgPT4ge1xuICAgICAgaWYgKGRpYWxvZ1N0YXRlLnZhbHVlICE9PSAwIC8qIE9wZW4gKi8pXG4gICAgICAgIHJldHVybjtcbiAgICAgIGxldCBjb250YWluZXIgPSBkb20oaW50ZXJuYWxEaWFsb2dSZWYpO1xuICAgICAgaWYgKCFjb250YWluZXIpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGxldCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcykgPT4ge1xuICAgICAgICBmb3IgKGxldCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgaWYgKGVudHJ5LmJvdW5kaW5nQ2xpZW50UmVjdC54ID09PSAwICYmIGVudHJ5LmJvdW5kaW5nQ2xpZW50UmVjdC55ID09PSAwICYmIGVudHJ5LmJvdW5kaW5nQ2xpZW50UmVjdC53aWR0aCA9PT0gMCAmJiBlbnRyeS5ib3VuZGluZ0NsaWVudFJlY3QuaGVpZ2h0ID09PSAwKSB7XG4gICAgICAgICAgICBhcGkuY2xvc2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShjb250YWluZXIpO1xuICAgICAgb25JbnZhbGlkYXRlKCgpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgLi4uYXR0cnMsXG4gICAgICAgIHJlZjogaW50ZXJuYWxEaWFsb2dSZWYsXG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIHJvbGU6IFwiZGlhbG9nXCIsXG4gICAgICAgIFwiYXJpYS1tb2RhbFwiOiBkaWFsb2dTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovID8gdHJ1ZSA6IHZvaWQgMCxcbiAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogdGl0bGVJZC52YWx1ZSxcbiAgICAgICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGRlc2NyaWJlZGJ5LnZhbHVlXG4gICAgICB9O1xuICAgICAgbGV0IHsgb3BlbjogXywgaW5pdGlhbEZvY3VzLCAuLi50aGVpclByb3BzIH0gPSBwcm9wcztcbiAgICAgIGxldCBzbG90ID0geyBvcGVuOiBkaWFsb2dTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovIH07XG4gICAgICByZXR1cm4gKDAsIGltcG9ydF92dWUxNy5oKShGb3JjZVBvcnRhbFJvb3QsIHsgZm9yY2U6IHRydWUgfSwgKCkgPT4gW1xuICAgICAgICAoMCwgaW1wb3J0X3Z1ZTE3LmgpKFBvcnRhbCwgKCkgPT4gKDAsIGltcG9ydF92dWUxNy5oKShQb3J0YWxHcm91cCwgeyB0YXJnZXQ6IGludGVybmFsRGlhbG9nUmVmLnZhbHVlIH0sICgpID0+ICgwLCBpbXBvcnRfdnVlMTcuaCkoRm9yY2VQb3J0YWxSb290LCB7IGZvcmNlOiBmYWxzZSB9LCAoKSA9PiAoMCwgaW1wb3J0X3Z1ZTE3LmgpKEZvY3VzVHJhcCwge1xuICAgICAgICAgIGluaXRpYWxGb2N1cyxcbiAgICAgICAgICBjb250YWluZXJzLFxuICAgICAgICAgIGZlYXR1cmVzOiBlbmFibGVkLnZhbHVlID8gbWF0Y2gocG9zaXRpb24udmFsdWUsIHtcbiAgICAgICAgICAgIHBhcmVudDogRm9jdXNUcmFwLmZlYXR1cmVzLlJlc3RvcmVGb2N1cyxcbiAgICAgICAgICAgIGxlYWY6IEZvY3VzVHJhcC5mZWF0dXJlcy5BbGwgJiB+Rm9jdXNUcmFwLmZlYXR1cmVzLkZvY3VzTG9ja1xuICAgICAgICAgIH0pIDogRm9jdXNUcmFwLmZlYXR1cmVzLk5vbmVcbiAgICAgICAgfSwgKCkgPT4gcmVuZGVyKHtcbiAgICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICAgIHNsb3QsXG4gICAgICAgICAgYXR0cnMsXG4gICAgICAgICAgc2xvdHMsXG4gICAgICAgICAgdmlzaWJsZTogZGlhbG9nU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyxcbiAgICAgICAgICBmZWF0dXJlczogMSAvKiBSZW5kZXJTdHJhdGVneSAqLyB8IDIgLyogU3RhdGljICovLFxuICAgICAgICAgIG5hbWU6IFwiRGlhbG9nXCJcbiAgICAgICAgfSkpKSkpLFxuICAgICAgICAoMCwgaW1wb3J0X3Z1ZTE3LmgpKEhpZGRlbiwgeyBmZWF0dXJlczogNCAvKiBIaWRkZW4gKi8sIHJlZjogbWFpblRyZWVOb2RlIH0pXG4gICAgICBdKTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBEaWFsb2dPdmVybGF5ID0gKDAsIGltcG9ydF92dWUxNy5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJEaWFsb2dPdmVybGF5XCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cyB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZURpYWxvZ0NvbnRleHQoXCJEaWFsb2dPdmVybGF5XCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1kaWFsb2ctb3ZlcmxheS0ke3VzZUlkKCl9YDtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCkge1xuICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gZXZlbnQuY3VycmVudFRhcmdldClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgYXBpLmNsb3NlKCk7XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSxcbiAgICAgICAgb25DbGljazogaGFuZGxlQ2xpY2tcbiAgICAgIH07XG4gICAgICBsZXQgdGhlaXJQcm9wcyA9IHByb3BzO1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBzbG90OiB7IG9wZW46IGFwaS5kaWFsb2dTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovIH0sXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJEaWFsb2dPdmVybGF5XCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIERpYWxvZ0JhY2tkcm9wID0gKDAsIGltcG9ydF92dWUxNy5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJEaWFsb2dCYWNrZHJvcFwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfVxuICB9LFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZURpYWxvZ0NvbnRleHQoXCJEaWFsb2dCYWNrZHJvcFwiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktZGlhbG9nLWJhY2tkcm9wLSR7dXNlSWQoKX1gO1xuICAgIGxldCBpbnRlcm5hbEJhY2tkcm9wUmVmID0gKDAsIGltcG9ydF92dWUxNy5yZWYpKG51bGwpO1xuICAgIGV4cG9zZSh7IGVsOiBpbnRlcm5hbEJhY2tkcm9wUmVmLCAkZWw6IGludGVybmFsQmFja2Ryb3BSZWYgfSk7XG4gICAgKDAsIGltcG9ydF92dWUxNy5vbk1vdW50ZWQpKCgpID0+IHtcbiAgICAgIGlmIChhcGkucGFuZWxSZWYudmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBIDxEaWFsb2dCYWNrZHJvcCAvPiBjb21wb25lbnQgaXMgYmVpbmcgdXNlZCwgYnV0IGEgPERpYWxvZ1BhbmVsIC8+IGNvbXBvbmVudCBpcyBtaXNzaW5nLmApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgdGhlaXJQcm9wcyA9IHByb3BzO1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICBpZDogaWQyLFxuICAgICAgICByZWY6IGludGVybmFsQmFja2Ryb3BSZWYsXG4gICAgICAgIFwiYXJpYS1oaWRkZW5cIjogdHJ1ZVxuICAgICAgfTtcbiAgICAgIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTE3LmgpKEZvcmNlUG9ydGFsUm9vdCwgeyBmb3JjZTogdHJ1ZSB9LCAoKSA9PiAoMCwgaW1wb3J0X3Z1ZTE3LmgpKFBvcnRhbCwgKCkgPT4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHM6IHsgLi4uYXR0cnMsIC4uLnRoZWlyUHJvcHMgfSxcbiAgICAgICAgc2xvdDogeyBvcGVuOiBhcGkuZGlhbG9nU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyB9LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiRGlhbG9nQmFja2Ryb3BcIlxuICAgICAgfSkpKTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBEaWFsb2dQYW5lbCA9ICgwLCBpbXBvcnRfdnVlMTcuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiRGlhbG9nUGFuZWxcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSB1c2VEaWFsb2dDb250ZXh0KFwiRGlhbG9nUGFuZWxcIik7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLWRpYWxvZy1wYW5lbC0ke3VzZUlkKCl9YDtcbiAgICBleHBvc2UoeyBlbDogYXBpLnBhbmVsUmVmLCAkZWw6IGFwaS5wYW5lbFJlZiB9KTtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIHJlZjogYXBpLnBhbmVsUmVmLFxuICAgICAgICBvbkNsaWNrOiBoYW5kbGVDbGlja1xuICAgICAgfTtcbiAgICAgIGxldCB0aGVpclByb3BzID0gcHJvcHM7XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIHNsb3Q6IHsgb3BlbjogYXBpLmRpYWxvZ1N0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8gfSxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIkRpYWxvZ1BhbmVsXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIERpYWxvZ1RpdGxlID0gKDAsIGltcG9ydF92dWUxNy5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJEaWFsb2dUaXRsZVwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiaDJcIiB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cyB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZURpYWxvZ0NvbnRleHQoXCJEaWFsb2dUaXRsZVwiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktZGlhbG9nLXRpdGxlLSR7dXNlSWQoKX1gO1xuICAgICgwLCBpbXBvcnRfdnVlMTcub25Nb3VudGVkKSgoKSA9PiB7XG4gICAgICBhcGkuc2V0VGl0bGVJZChpZDIpO1xuICAgICAgKDAsIGltcG9ydF92dWUxNy5vblVubW91bnRlZCkoKCkgPT4gYXBpLnNldFRpdGxlSWQobnVsbCkpO1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7IGlkOiBpZDIgfTtcbiAgICAgIGxldCB0aGVpclByb3BzID0gcHJvcHM7XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIHNsb3Q6IHsgb3BlbjogYXBpLmRpYWxvZ1N0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8gfSxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIkRpYWxvZ1RpdGxlXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIERpYWxvZ0Rlc2NyaXB0aW9uID0gRGVzY3JpcHRpb247XG5cbi8vIHNyYy9jb21wb25lbnRzL2Rpc2Nsb3N1cmUvZGlzY2xvc3VyZS50c1xudmFyIGltcG9ydF92dWUxOCA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgRGlzY2xvc3VyZUNvbnRleHQgPSBTeW1ib2woXCJEaXNjbG9zdXJlQ29udGV4dFwiKTtcbmZ1bmN0aW9uIHVzZURpc2Nsb3N1cmVDb250ZXh0KGNvbXBvbmVudCkge1xuICBsZXQgY29udGV4dCA9ICgwLCBpbXBvcnRfdnVlMTguaW5qZWN0KShEaXNjbG9zdXJlQ29udGV4dCwgbnVsbCk7XG4gIGlmIChjb250ZXh0ID09PSBudWxsKSB7XG4gICAgbGV0IGVyciA9IG5ldyBFcnJvcihgPCR7Y29tcG9uZW50fSAvPiBpcyBtaXNzaW5nIGEgcGFyZW50IDxEaXNjbG9zdXJlIC8+IGNvbXBvbmVudC5gKTtcbiAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpXG4gICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnIsIHVzZURpc2Nsb3N1cmVDb250ZXh0KTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG52YXIgRGlzY2xvc3VyZVBhbmVsQ29udGV4dCA9IFN5bWJvbChcIkRpc2Nsb3N1cmVQYW5lbENvbnRleHRcIik7XG5mdW5jdGlvbiB1c2VEaXNjbG9zdXJlUGFuZWxDb250ZXh0KCkge1xuICByZXR1cm4gKDAsIGltcG9ydF92dWUxOC5pbmplY3QpKERpc2Nsb3N1cmVQYW5lbENvbnRleHQsIG51bGwpO1xufVxudmFyIERpc2Nsb3N1cmUgPSAoMCwgaW1wb3J0X3Z1ZTE4LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIkRpc2Nsb3N1cmVcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcInRlbXBsYXRlXCIgfSxcbiAgICBkZWZhdWx0T3BlbjogeyB0eXBlOiBbQm9vbGVhbl0sIGRlZmF1bHQ6IGZhbHNlIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgc2xvdHMsIGF0dHJzIH0pIHtcbiAgICBsZXQgYnV0dG9uSWQgPSBgaGVhZGxlc3N1aS1kaXNjbG9zdXJlLWJ1dHRvbi0ke3VzZUlkKCl9YDtcbiAgICBsZXQgcGFuZWxJZCA9IGBoZWFkbGVzc3VpLWRpc2Nsb3N1cmUtcGFuZWwtJHt1c2VJZCgpfWA7XG4gICAgbGV0IGRpc2Nsb3N1cmVTdGF0ZSA9ICgwLCBpbXBvcnRfdnVlMTgucmVmKShwcm9wcy5kZWZhdWx0T3BlbiA/IDAgLyogT3BlbiAqLyA6IDEgLyogQ2xvc2VkICovKTtcbiAgICBsZXQgcGFuZWxSZWYgPSAoMCwgaW1wb3J0X3Z1ZTE4LnJlZikobnVsbCk7XG4gICAgbGV0IGJ1dHRvblJlZiA9ICgwLCBpbXBvcnRfdnVlMTgucmVmKShudWxsKTtcbiAgICBsZXQgYXBpID0ge1xuICAgICAgYnV0dG9uSWQsXG4gICAgICBwYW5lbElkLFxuICAgICAgZGlzY2xvc3VyZVN0YXRlLFxuICAgICAgcGFuZWw6IHBhbmVsUmVmLFxuICAgICAgYnV0dG9uOiBidXR0b25SZWYsXG4gICAgICB0b2dnbGVEaXNjbG9zdXJlKCkge1xuICAgICAgICBkaXNjbG9zdXJlU3RhdGUudmFsdWUgPSBtYXRjaChkaXNjbG9zdXJlU3RhdGUudmFsdWUsIHtcbiAgICAgICAgICBbMCAvKiBPcGVuICovXTogMSAvKiBDbG9zZWQgKi8sXG4gICAgICAgICAgWzEgLyogQ2xvc2VkICovXTogMCAvKiBPcGVuICovXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIGNsb3NlRGlzY2xvc3VyZSgpIHtcbiAgICAgICAgaWYgKGRpc2Nsb3N1cmVTdGF0ZS52YWx1ZSA9PT0gMSAvKiBDbG9zZWQgKi8pXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBkaXNjbG9zdXJlU3RhdGUudmFsdWUgPSAxIC8qIENsb3NlZCAqLztcbiAgICAgIH0sXG4gICAgICBjbG9zZShmb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgIGFwaS5jbG9zZURpc2Nsb3N1cmUoKTtcbiAgICAgICAgbGV0IHJlc3RvcmVFbGVtZW50ID0gKCgpID0+IHtcbiAgICAgICAgICBpZiAoIWZvY3VzYWJsZUVsZW1lbnQpXG4gICAgICAgICAgICByZXR1cm4gZG9tKGFwaS5idXR0b24pO1xuICAgICAgICAgIGlmIChmb2N1c2FibGVFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpXG4gICAgICAgICAgICByZXR1cm4gZm9jdXNhYmxlRWxlbWVudDtcbiAgICAgICAgICBpZiAoZm9jdXNhYmxlRWxlbWVudC52YWx1ZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KVxuICAgICAgICAgICAgcmV0dXJuIGRvbShmb2N1c2FibGVFbGVtZW50KTtcbiAgICAgICAgICByZXR1cm4gZG9tKGFwaS5idXR0b24pO1xuICAgICAgICB9KSgpO1xuICAgICAgICByZXN0b3JlRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcmVzdG9yZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgICgwLCBpbXBvcnRfdnVlMTgucHJvdmlkZSkoRGlzY2xvc3VyZUNvbnRleHQsIGFwaSk7XG4gICAgdXNlT3BlbkNsb3NlZFByb3ZpZGVyKCgwLCBpbXBvcnRfdnVlMTguY29tcHV0ZWQpKCgpID0+IHtcbiAgICAgIHJldHVybiBtYXRjaChkaXNjbG9zdXJlU3RhdGUudmFsdWUsIHtcbiAgICAgICAgWzAgLyogT3BlbiAqL106IDAgLyogT3BlbiAqLyxcbiAgICAgICAgWzEgLyogQ2xvc2VkICovXTogMSAvKiBDbG9zZWQgKi9cbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHsgZGVmYXVsdE9wZW46IF8sIC4uLnRoZWlyUHJvcHMgfSA9IHByb3BzO1xuICAgICAgbGV0IHNsb3QgPSB7IG9wZW46IGRpc2Nsb3N1cmVTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovLCBjbG9zZTogYXBpLmNsb3NlIH07XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgb3VyUHJvcHM6IHt9LFxuICAgICAgICBzbG90LFxuICAgICAgICBzbG90cyxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIG5hbWU6IFwiRGlzY2xvc3VyZVwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBEaXNjbG9zdXJlQnV0dG9uID0gKDAsIGltcG9ydF92dWUxOC5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJEaXNjbG9zdXJlQnV0dG9uXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJidXR0b25cIiB9LFxuICAgIGRpc2FibGVkOiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogZmFsc2UgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZURpc2Nsb3N1cmVDb250ZXh0KFwiRGlzY2xvc3VyZUJ1dHRvblwiKTtcbiAgICBsZXQgcGFuZWxDb250ZXh0ID0gdXNlRGlzY2xvc3VyZVBhbmVsQ29udGV4dCgpO1xuICAgIGxldCBpc1dpdGhpblBhbmVsID0gcGFuZWxDb250ZXh0ID09PSBudWxsID8gZmFsc2UgOiBwYW5lbENvbnRleHQgPT09IGFwaS5wYW5lbElkO1xuICAgIGxldCBpbnRlcm5hbEJ1dHRvblJlZiA9ICgwLCBpbXBvcnRfdnVlMTgucmVmKShudWxsKTtcbiAgICBleHBvc2UoeyBlbDogaW50ZXJuYWxCdXR0b25SZWYsICRlbDogaW50ZXJuYWxCdXR0b25SZWYgfSk7XG4gICAgaWYgKCFpc1dpdGhpblBhbmVsKSB7XG4gICAgICAoMCwgaW1wb3J0X3Z1ZTE4LndhdGNoRWZmZWN0KSgoKSA9PiB7XG4gICAgICAgIGFwaS5idXR0b24udmFsdWUgPSBpbnRlcm5hbEJ1dHRvblJlZi52YWx1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsZXQgdHlwZSA9IHVzZVJlc29sdmVCdXR0b25UeXBlKCgwLCBpbXBvcnRfdnVlMTguY29tcHV0ZWQpKCgpID0+ICh7IGFzOiBwcm9wcy5hcywgdHlwZTogYXR0cnMudHlwZSB9KSksIGludGVybmFsQnV0dG9uUmVmKTtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljaygpIHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGlzV2l0aGluUGFuZWwpIHtcbiAgICAgICAgYXBpLnRvZ2dsZURpc2Nsb3N1cmUoKTtcbiAgICAgICAgKF9hID0gZG9tKGFwaS5idXR0b24pKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFwaS50b2dnbGVEaXNjbG9zdXJlKCk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUtleURvd24oZXZlbnQpIHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGlzV2l0aGluUGFuZWwpIHtcbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICBjYXNlIFwiIFwiIC8qIFNwYWNlICovOlxuICAgICAgICAgIGNhc2UgXCJFbnRlclwiIC8qIEVudGVyICovOlxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgYXBpLnRvZ2dsZURpc2Nsb3N1cmUoKTtcbiAgICAgICAgICAgIChfYSA9IGRvbShhcGkuYnV0dG9uKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICBjYXNlIFwiIFwiIC8qIFNwYWNlICovOlxuICAgICAgICAgIGNhc2UgXCJFbnRlclwiIC8qIEVudGVyICovOlxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgYXBpLnRvZ2dsZURpc2Nsb3N1cmUoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUtleVVwKGV2ZW50KSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlIFwiIFwiIC8qIFNwYWNlICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgc2xvdCA9IHsgb3BlbjogYXBpLmRpc2Nsb3N1cmVTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSBpc1dpdGhpblBhbmVsID8ge1xuICAgICAgICByZWY6IGludGVybmFsQnV0dG9uUmVmLFxuICAgICAgICB0eXBlOiB0eXBlLnZhbHVlLFxuICAgICAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICAgICAgb25LZXlkb3duOiBoYW5kbGVLZXlEb3duXG4gICAgICB9IDoge1xuICAgICAgICBpZDogYXBpLmJ1dHRvbklkLFxuICAgICAgICByZWY6IGludGVybmFsQnV0dG9uUmVmLFxuICAgICAgICB0eXBlOiB0eXBlLnZhbHVlLFxuICAgICAgICBcImFyaWEtZXhwYW5kZWRcIjogcHJvcHMuZGlzYWJsZWQgPyB2b2lkIDAgOiBhcGkuZGlzY2xvc3VyZVN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8sXG4gICAgICAgIFwiYXJpYS1jb250cm9sc1wiOiBkb20oYXBpLnBhbmVsKSA/IGFwaS5wYW5lbElkIDogdm9pZCAwLFxuICAgICAgICBkaXNhYmxlZDogcHJvcHMuZGlzYWJsZWQgPyB0cnVlIDogdm9pZCAwLFxuICAgICAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICAgICAgb25LZXlkb3duOiBoYW5kbGVLZXlEb3duLFxuICAgICAgICBvbktleXVwOiBoYW5kbGVLZXlVcFxuICAgICAgfTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wczogcHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJEaXNjbG9zdXJlQnV0dG9uXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIERpc2Nsb3N1cmVQYW5lbCA9ICgwLCBpbXBvcnRfdnVlMTguZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiRGlzY2xvc3VyZVBhbmVsXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9LFxuICAgIHN0YXRpYzogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIHVubW91bnQ6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogdHJ1ZSB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlRGlzY2xvc3VyZUNvbnRleHQoXCJEaXNjbG9zdXJlUGFuZWxcIik7XG4gICAgZXhwb3NlKHsgZWw6IGFwaS5wYW5lbCwgJGVsOiBhcGkucGFuZWwgfSk7XG4gICAgKDAsIGltcG9ydF92dWUxOC5wcm92aWRlKShEaXNjbG9zdXJlUGFuZWxDb250ZXh0LCBhcGkucGFuZWxJZCk7XG4gICAgbGV0IHVzZXNPcGVuQ2xvc2VkU3RhdGUgPSB1c2VPcGVuQ2xvc2VkKCk7XG4gICAgbGV0IHZpc2libGUgPSAoMCwgaW1wb3J0X3Z1ZTE4LmNvbXB1dGVkKSgoKSA9PiB7XG4gICAgICBpZiAodXNlc09wZW5DbG9zZWRTdGF0ZSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdXNlc09wZW5DbG9zZWRTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFwaS5kaXNjbG9zdXJlU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLztcbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHNsb3QgPSB7IG9wZW46IGFwaS5kaXNjbG9zdXJlU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLywgY2xvc2U6IGFwaS5jbG9zZSB9O1xuICAgICAgbGV0IG91clByb3BzID0geyBpZDogYXBpLnBhbmVsSWQsIHJlZjogYXBpLnBhbmVsIH07XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHM6IHByb3BzLFxuICAgICAgICBzbG90LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIGZlYXR1cmVzOiAxIC8qIFJlbmRlclN0cmF0ZWd5ICovIHwgMiAvKiBTdGF0aWMgKi8sXG4gICAgICAgIHZpc2libGU6IHZpc2libGUudmFsdWUsXG4gICAgICAgIG5hbWU6IFwiRGlzY2xvc3VyZVBhbmVsXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBzcmMvY29tcG9uZW50cy9saXN0Ym94L2xpc3Rib3gudHNcbnZhciBpbXBvcnRfdnVlMTkgPSByZXF1aXJlKFwidnVlXCIpO1xuZnVuY3Rpb24gbmV4dEZyYW1lKGNiKSB7XG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2IpKTtcbn1cbnZhciBMaXN0Ym94Q29udGV4dCA9IFN5bWJvbChcIkxpc3Rib3hDb250ZXh0XCIpO1xuZnVuY3Rpb24gdXNlTGlzdGJveENvbnRleHQoY29tcG9uZW50KSB7XG4gIGxldCBjb250ZXh0ID0gKDAsIGltcG9ydF92dWUxOS5pbmplY3QpKExpc3Rib3hDb250ZXh0LCBudWxsKTtcbiAgaWYgKGNvbnRleHQgPT09IG51bGwpIHtcbiAgICBsZXQgZXJyID0gbmV3IEVycm9yKGA8JHtjb21wb25lbnR9IC8+IGlzIG1pc3NpbmcgYSBwYXJlbnQgPExpc3Rib3ggLz4gY29tcG9uZW50LmApO1xuICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVyciwgdXNlTGlzdGJveENvbnRleHQpO1xuICAgIHRocm93IGVycjtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cbnZhciBMaXN0Ym94ID0gKDAsIGltcG9ydF92dWUxOS5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJMaXN0Ym94XCIsXG4gIGVtaXRzOiB7IFwidXBkYXRlOm1vZGVsVmFsdWVcIjogKF92YWx1ZSkgPT4gdHJ1ZSB9LFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwidGVtcGxhdGVcIiB9LFxuICAgIGRpc2FibGVkOiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICBob3Jpem9udGFsOiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICBtb2RlbFZhbHVlOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZywgTnVtYmVyLCBCb29sZWFuXSB9LFxuICAgIG5hbWU6IHsgdHlwZTogU3RyaW5nLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgIG11bHRpcGxlOiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogZmFsc2UgfVxuICB9LFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBzZXR1cChwcm9wcywgeyBzbG90cywgYXR0cnMsIGVtaXQgfSkge1xuICAgIGxldCBsaXN0Ym94U3RhdGUgPSAoMCwgaW1wb3J0X3Z1ZTE5LnJlZikoMSAvKiBDbG9zZWQgKi8pO1xuICAgIGxldCBsYWJlbFJlZiA9ICgwLCBpbXBvcnRfdnVlMTkucmVmKShudWxsKTtcbiAgICBsZXQgYnV0dG9uUmVmID0gKDAsIGltcG9ydF92dWUxOS5yZWYpKG51bGwpO1xuICAgIGxldCBvcHRpb25zUmVmID0gKDAsIGltcG9ydF92dWUxOS5yZWYpKG51bGwpO1xuICAgIGxldCBvcHRpb25zID0gKDAsIGltcG9ydF92dWUxOS5yZWYpKFtdKTtcbiAgICBsZXQgc2VhcmNoUXVlcnkgPSAoMCwgaW1wb3J0X3Z1ZTE5LnJlZikoXCJcIik7XG4gICAgbGV0IGFjdGl2ZU9wdGlvbkluZGV4ID0gKDAsIGltcG9ydF92dWUxOS5yZWYpKG51bGwpO1xuICAgIGxldCBhY3RpdmF0aW9uVHJpZ2dlciA9ICgwLCBpbXBvcnRfdnVlMTkucmVmKSgxIC8qIE90aGVyICovKTtcbiAgICBmdW5jdGlvbiBhZGp1c3RPcmRlcmVkU3RhdGUoYWRqdXN0bWVudCA9IChpKSA9PiBpKSB7XG4gICAgICBsZXQgY3VycmVudEFjdGl2ZU9wdGlvbiA9IGFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlICE9PSBudWxsID8gb3B0aW9ucy52YWx1ZVthY3RpdmVPcHRpb25JbmRleC52YWx1ZV0gOiBudWxsO1xuICAgICAgbGV0IHNvcnRlZE9wdGlvbnMgPSBzb3J0QnlEb21Ob2RlKGFkanVzdG1lbnQob3B0aW9ucy52YWx1ZS5zbGljZSgpKSwgKG9wdGlvbikgPT4gZG9tKG9wdGlvbi5kYXRhUmVmLmRvbVJlZikpO1xuICAgICAgbGV0IGFkanVzdGVkQWN0aXZlT3B0aW9uSW5kZXggPSBjdXJyZW50QWN0aXZlT3B0aW9uID8gc29ydGVkT3B0aW9ucy5pbmRleE9mKGN1cnJlbnRBY3RpdmVPcHRpb24pIDogbnVsbDtcbiAgICAgIGlmIChhZGp1c3RlZEFjdGl2ZU9wdGlvbkluZGV4ID09PSAtMSkge1xuICAgICAgICBhZGp1c3RlZEFjdGl2ZU9wdGlvbkluZGV4ID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9wdGlvbnM6IHNvcnRlZE9wdGlvbnMsXG4gICAgICAgIGFjdGl2ZU9wdGlvbkluZGV4OiBhZGp1c3RlZEFjdGl2ZU9wdGlvbkluZGV4XG4gICAgICB9O1xuICAgIH1cbiAgICBsZXQgdmFsdWUgPSAoMCwgaW1wb3J0X3Z1ZTE5LmNvbXB1dGVkKSgoKSA9PiBwcm9wcy5tb2RlbFZhbHVlKTtcbiAgICBsZXQgbW9kZSA9ICgwLCBpbXBvcnRfdnVlMTkuY29tcHV0ZWQpKCgpID0+IHByb3BzLm11bHRpcGxlID8gMSAvKiBNdWx0aSAqLyA6IDAgLyogU2luZ2xlICovKTtcbiAgICBsZXQgYXBpID0ge1xuICAgICAgbGlzdGJveFN0YXRlLFxuICAgICAgdmFsdWUsXG4gICAgICBtb2RlLFxuICAgICAgY29tcGFyZShhLCB6KSB7XG4gICAgICAgIHJldHVybiBhID09PSB6O1xuICAgICAgfSxcbiAgICAgIG9yaWVudGF0aW9uOiAoMCwgaW1wb3J0X3Z1ZTE5LmNvbXB1dGVkKSgoKSA9PiBwcm9wcy5ob3Jpem9udGFsID8gXCJob3Jpem9udGFsXCIgOiBcInZlcnRpY2FsXCIpLFxuICAgICAgbGFiZWxSZWYsXG4gICAgICBidXR0b25SZWYsXG4gICAgICBvcHRpb25zUmVmLFxuICAgICAgZGlzYWJsZWQ6ICgwLCBpbXBvcnRfdnVlMTkuY29tcHV0ZWQpKCgpID0+IHByb3BzLmRpc2FibGVkKSxcbiAgICAgIG9wdGlvbnMsXG4gICAgICBzZWFyY2hRdWVyeSxcbiAgICAgIGFjdGl2ZU9wdGlvbkluZGV4LFxuICAgICAgYWN0aXZhdGlvblRyaWdnZXIsXG4gICAgICBjbG9zZUxpc3Rib3goKSB7XG4gICAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChsaXN0Ym94U3RhdGUudmFsdWUgPT09IDEgLyogQ2xvc2VkICovKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGlzdGJveFN0YXRlLnZhbHVlID0gMSAvKiBDbG9zZWQgKi87XG4gICAgICAgIGFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlID0gbnVsbDtcbiAgICAgIH0sXG4gICAgICBvcGVuTGlzdGJveCgpIHtcbiAgICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKGxpc3Rib3hTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGlzdGJveFN0YXRlLnZhbHVlID0gMCAvKiBPcGVuICovO1xuICAgICAgfSxcbiAgICAgIGdvVG9PcHRpb24oZm9jdXMsIGlkMiwgdHJpZ2dlcikge1xuICAgICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAobGlzdGJveFN0YXRlLnZhbHVlID09PSAxIC8qIENsb3NlZCAqLylcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCBhZGp1c3RlZFN0YXRlID0gYWRqdXN0T3JkZXJlZFN0YXRlKCk7XG4gICAgICAgIGxldCBuZXh0QWN0aXZlT3B0aW9uSW5kZXggPSBjYWxjdWxhdGVBY3RpdmVJbmRleChmb2N1cyA9PT0gNCAvKiBTcGVjaWZpYyAqLyA/IHsgZm9jdXM6IDQgLyogU3BlY2lmaWMgKi8sIGlkOiBpZDIgfSA6IHsgZm9jdXMgfSwge1xuICAgICAgICAgIHJlc29sdmVJdGVtczogKCkgPT4gYWRqdXN0ZWRTdGF0ZS5vcHRpb25zLFxuICAgICAgICAgIHJlc29sdmVBY3RpdmVJbmRleDogKCkgPT4gYWRqdXN0ZWRTdGF0ZS5hY3RpdmVPcHRpb25JbmRleCxcbiAgICAgICAgICByZXNvbHZlSWQ6IChvcHRpb24pID0+IG9wdGlvbi5pZCxcbiAgICAgICAgICByZXNvbHZlRGlzYWJsZWQ6IChvcHRpb24pID0+IG9wdGlvbi5kYXRhUmVmLmRpc2FibGVkXG4gICAgICAgIH0pO1xuICAgICAgICBzZWFyY2hRdWVyeS52YWx1ZSA9IFwiXCI7XG4gICAgICAgIGFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlID0gbmV4dEFjdGl2ZU9wdGlvbkluZGV4O1xuICAgICAgICBhY3RpdmF0aW9uVHJpZ2dlci52YWx1ZSA9IHRyaWdnZXIgIT0gbnVsbCA/IHRyaWdnZXIgOiAxIC8qIE90aGVyICovO1xuICAgICAgICBvcHRpb25zLnZhbHVlID0gYWRqdXN0ZWRTdGF0ZS5vcHRpb25zO1xuICAgICAgfSxcbiAgICAgIHNlYXJjaCh2YWx1ZTIpIHtcbiAgICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKGxpc3Rib3hTdGF0ZS52YWx1ZSA9PT0gMSAvKiBDbG9zZWQgKi8pXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBsZXQgd2FzQWxyZWFkeVNlYXJjaGluZyA9IHNlYXJjaFF1ZXJ5LnZhbHVlICE9PSBcIlwiO1xuICAgICAgICBsZXQgb2Zmc2V0ID0gd2FzQWxyZWFkeVNlYXJjaGluZyA/IDAgOiAxO1xuICAgICAgICBzZWFyY2hRdWVyeS52YWx1ZSArPSB2YWx1ZTIudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgbGV0IHJlT3JkZXJlZE9wdGlvbnMgPSBhY3RpdmVPcHRpb25JbmRleC52YWx1ZSAhPT0gbnVsbCA/IG9wdGlvbnMudmFsdWUuc2xpY2UoYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgKyBvZmZzZXQpLmNvbmNhdChvcHRpb25zLnZhbHVlLnNsaWNlKDAsIGFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlICsgb2Zmc2V0KSkgOiBvcHRpb25zLnZhbHVlO1xuICAgICAgICBsZXQgbWF0Y2hpbmdPcHRpb24gPSByZU9yZGVyZWRPcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLmRhdGFSZWYudGV4dFZhbHVlLnN0YXJ0c1dpdGgoc2VhcmNoUXVlcnkudmFsdWUpICYmICFvcHRpb24uZGF0YVJlZi5kaXNhYmxlZCk7XG4gICAgICAgIGxldCBtYXRjaElkeCA9IG1hdGNoaW5nT3B0aW9uID8gb3B0aW9ucy52YWx1ZS5pbmRleE9mKG1hdGNoaW5nT3B0aW9uKSA6IC0xO1xuICAgICAgICBpZiAobWF0Y2hJZHggPT09IC0xIHx8IG1hdGNoSWR4ID09PSBhY3RpdmVPcHRpb25JbmRleC52YWx1ZSlcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlID0gbWF0Y2hJZHg7XG4gICAgICAgIGFjdGl2YXRpb25UcmlnZ2VyLnZhbHVlID0gMSAvKiBPdGhlciAqLztcbiAgICAgIH0sXG4gICAgICBjbGVhclNlYXJjaCgpIHtcbiAgICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKGxpc3Rib3hTdGF0ZS52YWx1ZSA9PT0gMSAvKiBDbG9zZWQgKi8pXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoc2VhcmNoUXVlcnkudmFsdWUgPT09IFwiXCIpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzZWFyY2hRdWVyeS52YWx1ZSA9IFwiXCI7XG4gICAgICB9LFxuICAgICAgcmVnaXN0ZXJPcHRpb24oaWQyLCBkYXRhUmVmKSB7XG4gICAgICAgIGxldCBhZGp1c3RlZFN0YXRlID0gYWRqdXN0T3JkZXJlZFN0YXRlKChvcHRpb25zMikgPT4ge1xuICAgICAgICAgIHJldHVybiBbLi4ub3B0aW9uczIsIHsgaWQ6IGlkMiwgZGF0YVJlZiB9XTtcbiAgICAgICAgfSk7XG4gICAgICAgIG9wdGlvbnMudmFsdWUgPSBhZGp1c3RlZFN0YXRlLm9wdGlvbnM7XG4gICAgICAgIGFjdGl2ZU9wdGlvbkluZGV4LnZhbHVlID0gYWRqdXN0ZWRTdGF0ZS5hY3RpdmVPcHRpb25JbmRleDtcbiAgICAgIH0sXG4gICAgICB1bnJlZ2lzdGVyT3B0aW9uKGlkMikge1xuICAgICAgICBsZXQgYWRqdXN0ZWRTdGF0ZSA9IGFkanVzdE9yZGVyZWRTdGF0ZSgob3B0aW9uczIpID0+IHtcbiAgICAgICAgICBsZXQgaWR4ID0gb3B0aW9uczIuZmluZEluZGV4KChhKSA9PiBhLmlkID09PSBpZDIpO1xuICAgICAgICAgIGlmIChpZHggIT09IC0xKVxuICAgICAgICAgICAgb3B0aW9uczIuc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbnMyO1xuICAgICAgICB9KTtcbiAgICAgICAgb3B0aW9ucy52YWx1ZSA9IGFkanVzdGVkU3RhdGUub3B0aW9ucztcbiAgICAgICAgYWN0aXZlT3B0aW9uSW5kZXgudmFsdWUgPSBhZGp1c3RlZFN0YXRlLmFjdGl2ZU9wdGlvbkluZGV4O1xuICAgICAgICBhY3RpdmF0aW9uVHJpZ2dlci52YWx1ZSA9IDEgLyogT3RoZXIgKi87XG4gICAgICB9LFxuICAgICAgc2VsZWN0KHZhbHVlMikge1xuICAgICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBlbWl0KFwidXBkYXRlOm1vZGVsVmFsdWVcIiwgbWF0Y2gobW9kZS52YWx1ZSwge1xuICAgICAgICAgIFswIC8qIFNpbmdsZSAqL106ICgpID0+IHZhbHVlMixcbiAgICAgICAgICBbMSAvKiBNdWx0aSAqL106ICgpID0+IHtcbiAgICAgICAgICAgIGxldCBjb3B5ID0gKDAsIGltcG9ydF92dWUxOS50b1JhdykoYXBpLnZhbHVlLnZhbHVlKS5zbGljZSgpO1xuICAgICAgICAgICAgbGV0IHJhdyA9ICgwLCBpbXBvcnRfdnVlMTkudG9SYXcpKHZhbHVlMik7XG4gICAgICAgICAgICBsZXQgaWR4ID0gY29weS5maW5kSW5kZXgoKHZhbHVlMykgPT4gYXBpLmNvbXBhcmUocmF3LCAoMCwgaW1wb3J0X3Z1ZTE5LnRvUmF3KSh2YWx1ZTMpKSk7XG4gICAgICAgICAgICBpZiAoaWR4ID09PSAtMSkge1xuICAgICAgICAgICAgICBjb3B5LnB1c2gocmF3KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvcHkuc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY29weTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHVzZU91dHNpZGVDbGljayhbYnV0dG9uUmVmLCBvcHRpb25zUmVmXSwgKGV2ZW50LCB0YXJnZXQpID0+IHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGFwaS5jbG9zZUxpc3Rib3goKTtcbiAgICAgIGlmICghaXNGb2N1c2FibGVFbGVtZW50KHRhcmdldCwgMSAvKiBMb29zZSAqLykpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgKF9hID0gZG9tKGJ1dHRvblJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sICgwLCBpbXBvcnRfdnVlMTkuY29tcHV0ZWQpKCgpID0+IGxpc3Rib3hTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovKSk7XG4gICAgKDAsIGltcG9ydF92dWUxOS5wcm92aWRlKShMaXN0Ym94Q29udGV4dCwgYXBpKTtcbiAgICB1c2VPcGVuQ2xvc2VkUHJvdmlkZXIoKDAsIGltcG9ydF92dWUxOS5jb21wdXRlZCkoKCkgPT4gbWF0Y2gobGlzdGJveFN0YXRlLnZhbHVlLCB7XG4gICAgICBbMCAvKiBPcGVuICovXTogMCAvKiBPcGVuICovLFxuICAgICAgWzEgLyogQ2xvc2VkICovXTogMSAvKiBDbG9zZWQgKi9cbiAgICB9KSkpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgeyBuYW1lLCBtb2RlbFZhbHVlLCBkaXNhYmxlZCwgLi4udGhlaXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgICBsZXQgc2xvdCA9IHsgb3BlbjogbGlzdGJveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8sIGRpc2FibGVkIH07XG4gICAgICByZXR1cm4gKDAsIGltcG9ydF92dWUxOS5oKShpbXBvcnRfdnVlMTkuRnJhZ21lbnQsIFtcbiAgICAgICAgLi4ubmFtZSAhPSBudWxsICYmIG1vZGVsVmFsdWUgIT0gbnVsbCA/IG9iamVjdFRvRm9ybUVudHJpZXMoeyBbbmFtZV06IG1vZGVsVmFsdWUgfSkubWFwKChbbmFtZTIsIHZhbHVlMl0pID0+ICgwLCBpbXBvcnRfdnVlMTkuaCkoSGlkZGVuLCBjb21wYWN0KHtcbiAgICAgICAgICBmZWF0dXJlczogNCAvKiBIaWRkZW4gKi8sXG4gICAgICAgICAga2V5OiBuYW1lMixcbiAgICAgICAgICBhczogXCJpbnB1dFwiLFxuICAgICAgICAgIHR5cGU6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgICAgICAgIG5hbWU6IG5hbWUyLFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZTJcbiAgICAgICAgfSkpKSA6IFtdLFxuICAgICAgICByZW5kZXIoe1xuICAgICAgICAgIG91clByb3BzOiB7fSxcbiAgICAgICAgICB0aGVpclByb3BzOiB7XG4gICAgICAgICAgICAuLi5hdHRycyxcbiAgICAgICAgICAgIC4uLm9taXQodGhlaXJQcm9wcywgW1wib25VcGRhdGU6bW9kZWxWYWx1ZVwiLCBcImhvcml6b250YWxcIiwgXCJtdWx0aXBsZVwiLCBcImJ5XCJdKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2xvdCxcbiAgICAgICAgICBzbG90cyxcbiAgICAgICAgICBhdHRycyxcbiAgICAgICAgICBuYW1lOiBcIkxpc3Rib3hcIlxuICAgICAgICB9KVxuICAgICAgXSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgTGlzdGJveExhYmVsID0gKDAsIGltcG9ydF92dWUxOS5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJMaXN0Ym94TGFiZWxcIixcbiAgcHJvcHM6IHsgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJsYWJlbFwiIH0gfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlTGlzdGJveENvbnRleHQoXCJMaXN0Ym94TGFiZWxcIik7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLWxpc3Rib3gtbGFiZWwtJHt1c2VJZCgpfWA7XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soKSB7XG4gICAgICB2YXIgX2E7XG4gICAgICAoX2EgPSBkb20oYXBpLmJ1dHRvblJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgc2xvdCA9IHtcbiAgICAgICAgb3BlbjogYXBpLmxpc3Rib3hTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovLFxuICAgICAgICBkaXNhYmxlZDogYXBpLmRpc2FibGVkLnZhbHVlXG4gICAgICB9O1xuICAgICAgbGV0IG91clByb3BzID0geyBpZDogaWQyLCByZWY6IGFwaS5sYWJlbFJlZiwgb25DbGljazogaGFuZGxlQ2xpY2sgfTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wczogcHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJMaXN0Ym94TGFiZWxcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgTGlzdGJveEJ1dHRvbiA9ICgwLCBpbXBvcnRfdnVlMTkuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiTGlzdGJveEJ1dHRvblwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiYnV0dG9uXCIgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZUxpc3Rib3hDb250ZXh0KFwiTGlzdGJveEJ1dHRvblwiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktbGlzdGJveC1idXR0b24tJHt1c2VJZCgpfWA7XG4gICAgZXhwb3NlKHsgZWw6IGFwaS5idXR0b25SZWYsICRlbDogYXBpLmJ1dHRvblJlZiB9KTtcbiAgICBmdW5jdGlvbiBoYW5kbGVLZXlEb3duKGV2ZW50KSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlIFwiIFwiIC8qIFNwYWNlICovOlxuICAgICAgICBjYXNlIFwiRW50ZXJcIiAvKiBFbnRlciAqLzpcbiAgICAgICAgY2FzZSBcIkFycm93RG93blwiIC8qIEFycm93RG93biAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGFwaS5vcGVuTGlzdGJveCgpO1xuICAgICAgICAgICgwLCBpbXBvcnRfdnVlMTkubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIChfYSA9IGRvbShhcGkub3B0aW9uc1JlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgICAgICBpZiAoIWFwaS52YWx1ZS52YWx1ZSlcbiAgICAgICAgICAgICAgYXBpLmdvVG9PcHRpb24oMCAvKiBGaXJzdCAqLyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJBcnJvd1VwXCIgLyogQXJyb3dVcCAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGFwaS5vcGVuTGlzdGJveCgpO1xuICAgICAgICAgICgwLCBpbXBvcnRfdnVlMTkubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIChfYSA9IGRvbShhcGkub3B0aW9uc1JlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgICAgICBpZiAoIWFwaS52YWx1ZS52YWx1ZSlcbiAgICAgICAgICAgICAgYXBpLmdvVG9PcHRpb24oMyAvKiBMYXN0ICovKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5VXAoZXZlbnQpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgXCIgXCIgLyogU3BhY2UgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZlbnQpIHtcbiAgICAgIGlmIChhcGkuZGlzYWJsZWQudmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChhcGkubGlzdGJveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8pIHtcbiAgICAgICAgYXBpLmNsb3NlTGlzdGJveCgpO1xuICAgICAgICAoMCwgaW1wb3J0X3Z1ZTE5Lm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgIHJldHVybiAoX2EgPSBkb20oYXBpLmJ1dHRvblJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYXBpLm9wZW5MaXN0Ym94KCk7XG4gICAgICAgIG5leHRGcmFtZSgoKSA9PiB7XG4gICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgIHJldHVybiAoX2EgPSBkb20oYXBpLm9wdGlvbnNSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IHR5cGUgPSB1c2VSZXNvbHZlQnV0dG9uVHlwZSgoMCwgaW1wb3J0X3Z1ZTE5LmNvbXB1dGVkKSgoKSA9PiAoeyBhczogcHJvcHMuYXMsIHR5cGU6IGF0dHJzLnR5cGUgfSkpLCBhcGkuYnV0dG9uUmVmKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdmFyIF9hLCBfYjtcbiAgICAgIGxldCBzbG90ID0ge1xuICAgICAgICBvcGVuOiBhcGkubGlzdGJveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8sXG4gICAgICAgIGRpc2FibGVkOiBhcGkuZGlzYWJsZWQudmFsdWVcbiAgICAgIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIHJlZjogYXBpLmJ1dHRvblJlZixcbiAgICAgICAgaWQ6IGlkMixcbiAgICAgICAgdHlwZTogdHlwZS52YWx1ZSxcbiAgICAgICAgXCJhcmlhLWhhc3BvcHVwXCI6IHRydWUsXG4gICAgICAgIFwiYXJpYS1jb250cm9sc1wiOiAoX2EgPSBkb20oYXBpLm9wdGlvbnNSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuaWQsXG4gICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBhcGkuZGlzYWJsZWQudmFsdWUgPyB2b2lkIDAgOiBhcGkubGlzdGJveFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8sXG4gICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGFwaS5sYWJlbFJlZi52YWx1ZSA/IFsoX2IgPSBkb20oYXBpLmxhYmVsUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmlkLCBpZDJdLmpvaW4oXCIgXCIpIDogdm9pZCAwLFxuICAgICAgICBkaXNhYmxlZDogYXBpLmRpc2FibGVkLnZhbHVlID09PSB0cnVlID8gdHJ1ZSA6IHZvaWQgMCxcbiAgICAgICAgb25LZXlkb3duOiBoYW5kbGVLZXlEb3duLFxuICAgICAgICBvbktleXVwOiBoYW5kbGVLZXlVcCxcbiAgICAgICAgb25DbGljazogaGFuZGxlQ2xpY2tcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHM6IHByb3BzLFxuICAgICAgICBzbG90LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiTGlzdGJveEJ1dHRvblwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBMaXN0Ym94T3B0aW9ucyA9ICgwLCBpbXBvcnRfdnVlMTkuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiTGlzdGJveE9wdGlvbnNcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcInVsXCIgfSxcbiAgICBzdGF0aWM6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICB1bm1vdW50OiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IHRydWUgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZUxpc3Rib3hDb250ZXh0KFwiTGlzdGJveE9wdGlvbnNcIik7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLWxpc3Rib3gtb3B0aW9ucy0ke3VzZUlkKCl9YDtcbiAgICBsZXQgc2VhcmNoRGVib3VuY2UgPSAoMCwgaW1wb3J0X3Z1ZTE5LnJlZikobnVsbCk7XG4gICAgZXhwb3NlKHsgZWw6IGFwaS5vcHRpb25zUmVmLCAkZWw6IGFwaS5vcHRpb25zUmVmIH0pO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUtleURvd24oZXZlbnQpIHtcbiAgICAgIGlmIChzZWFyY2hEZWJvdW5jZS52YWx1ZSlcbiAgICAgICAgY2xlYXJUaW1lb3V0KHNlYXJjaERlYm91bmNlLnZhbHVlKTtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgXCIgXCIgLyogU3BhY2UgKi86XG4gICAgICAgICAgaWYgKGFwaS5zZWFyY2hRdWVyeS52YWx1ZSAhPT0gXCJcIikge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgcmV0dXJuIGFwaS5zZWFyY2goZXZlbnQua2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJFbnRlclwiIC8qIEVudGVyICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgaWYgKGFwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbGV0IGFjdGl2ZU9wdGlvbiA9IGFwaS5vcHRpb25zLnZhbHVlW2FwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZV07XG4gICAgICAgICAgICBhcGkuc2VsZWN0KGFjdGl2ZU9wdGlvbi5kYXRhUmVmLnZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGFwaS5tb2RlLnZhbHVlID09PSAwIC8qIFNpbmdsZSAqLykge1xuICAgICAgICAgICAgYXBpLmNsb3NlTGlzdGJveCgpO1xuICAgICAgICAgICAgKDAsIGltcG9ydF92dWUxOS5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgIHJldHVybiAoX2EgPSBkb20oYXBpLmJ1dHRvblJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgbWF0Y2goYXBpLm9yaWVudGF0aW9uLnZhbHVlLCB7XG4gICAgICAgICAgdmVydGljYWw6IFwiQXJyb3dEb3duXCIgLyogQXJyb3dEb3duICovLFxuICAgICAgICAgIGhvcml6b250YWw6IFwiQXJyb3dSaWdodFwiIC8qIEFycm93UmlnaHQgKi9cbiAgICAgICAgfSk6XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICByZXR1cm4gYXBpLmdvVG9PcHRpb24oMiAvKiBOZXh0ICovKTtcbiAgICAgICAgY2FzZSBtYXRjaChhcGkub3JpZW50YXRpb24udmFsdWUsIHsgdmVydGljYWw6IFwiQXJyb3dVcFwiIC8qIEFycm93VXAgKi8sIGhvcml6b250YWw6IFwiQXJyb3dMZWZ0XCIgLyogQXJyb3dMZWZ0ICovIH0pOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuIGFwaS5nb1RvT3B0aW9uKDEgLyogUHJldmlvdXMgKi8pO1xuICAgICAgICBjYXNlIFwiSG9tZVwiIC8qIEhvbWUgKi86XG4gICAgICAgIGNhc2UgXCJQYWdlVXBcIiAvKiBQYWdlVXAgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICByZXR1cm4gYXBpLmdvVG9PcHRpb24oMCAvKiBGaXJzdCAqLyk7XG4gICAgICAgIGNhc2UgXCJFbmRcIiAvKiBFbmQgKi86XG4gICAgICAgIGNhc2UgXCJQYWdlRG93blwiIC8qIFBhZ2VEb3duICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuIGFwaS5nb1RvT3B0aW9uKDMgLyogTGFzdCAqLyk7XG4gICAgICAgIGNhc2UgXCJFc2NhcGVcIiAvKiBFc2NhcGUgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBhcGkuY2xvc2VMaXN0Ym94KCk7XG4gICAgICAgICAgKDAsIGltcG9ydF92dWUxOS5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgcmV0dXJuIChfYSA9IGRvbShhcGkuYnV0dG9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIlRhYlwiIC8qIFRhYiAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGlmIChldmVudC5rZXkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBhcGkuc2VhcmNoKGV2ZW50LmtleSk7XG4gICAgICAgICAgICBzZWFyY2hEZWJvdW5jZS52YWx1ZSA9IHNldFRpbWVvdXQoKCkgPT4gYXBpLmNsZWFyU2VhcmNoKCksIDM1MCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgdXNlc09wZW5DbG9zZWRTdGF0ZSA9IHVzZU9wZW5DbG9zZWQoKTtcbiAgICBsZXQgdmlzaWJsZSA9ICgwLCBpbXBvcnRfdnVlMTkuY29tcHV0ZWQpKCgpID0+IHtcbiAgICAgIGlmICh1c2VzT3BlbkNsb3NlZFN0YXRlICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB1c2VzT3BlbkNsb3NlZFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi87XG4gICAgICB9XG4gICAgICByZXR1cm4gYXBpLmxpc3Rib3hTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovO1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgICBsZXQgc2xvdCA9IHsgb3BlbjogYXBpLmxpc3Rib3hTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCI6IGFwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZSA9PT0gbnVsbCA/IHZvaWQgMCA6IChfYSA9IGFwaS5vcHRpb25zLnZhbHVlW2FwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZV0pID09IG51bGwgPyB2b2lkIDAgOiBfYS5pZCxcbiAgICAgICAgXCJhcmlhLW11bHRpc2VsZWN0YWJsZVwiOiBhcGkubW9kZS52YWx1ZSA9PT0gMSAvKiBNdWx0aSAqLyA/IHRydWUgOiB2b2lkIDAsXG4gICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IChfZCA9IChfYiA9IGRvbShhcGkubGFiZWxSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2IuaWQpICE9IG51bGwgPyBfZCA6IChfYyA9IGRvbShhcGkuYnV0dG9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9jLmlkLFxuICAgICAgICBcImFyaWEtb3JpZW50YXRpb25cIjogYXBpLm9yaWVudGF0aW9uLnZhbHVlLFxuICAgICAgICBpZDogaWQyLFxuICAgICAgICBvbktleWRvd246IGhhbmRsZUtleURvd24sXG4gICAgICAgIHJvbGU6IFwibGlzdGJveFwiLFxuICAgICAgICB0YWJJbmRleDogMCxcbiAgICAgICAgcmVmOiBhcGkub3B0aW9uc1JlZlxuICAgICAgfTtcbiAgICAgIGxldCB0aGVpclByb3BzID0gcHJvcHM7XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgZmVhdHVyZXM6IDEgLyogUmVuZGVyU3RyYXRlZ3kgKi8gfCAyIC8qIFN0YXRpYyAqLyxcbiAgICAgICAgdmlzaWJsZTogdmlzaWJsZS52YWx1ZSxcbiAgICAgICAgbmFtZTogXCJMaXN0Ym94T3B0aW9uc1wiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBMaXN0Ym94T3B0aW9uID0gKDAsIGltcG9ydF92dWUxOS5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJMaXN0Ym94T3B0aW9uXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJsaVwiIH0sXG4gICAgdmFsdWU6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nLCBOdW1iZXIsIEJvb2xlYW5dIH0sXG4gICAgZGlzYWJsZWQ6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBzbG90cywgYXR0cnMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZUxpc3Rib3hDb250ZXh0KFwiTGlzdGJveE9wdGlvblwiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktbGlzdGJveC1vcHRpb24tJHt1c2VJZCgpfWA7XG4gICAgbGV0IGludGVybmFsT3B0aW9uUmVmID0gKDAsIGltcG9ydF92dWUxOS5yZWYpKG51bGwpO1xuICAgIGV4cG9zZSh7IGVsOiBpbnRlcm5hbE9wdGlvblJlZiwgJGVsOiBpbnRlcm5hbE9wdGlvblJlZiB9KTtcbiAgICBsZXQgYWN0aXZlID0gKDAsIGltcG9ydF92dWUxOS5jb21wdXRlZCkoKCkgPT4ge1xuICAgICAgcmV0dXJuIGFwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZSAhPT0gbnVsbCA/IGFwaS5vcHRpb25zLnZhbHVlW2FwaS5hY3RpdmVPcHRpb25JbmRleC52YWx1ZV0uaWQgPT09IGlkMiA6IGZhbHNlO1xuICAgIH0pO1xuICAgIGxldCBzZWxlY3RlZCA9ICgwLCBpbXBvcnRfdnVlMTkuY29tcHV0ZWQpKCgpID0+IG1hdGNoKGFwaS5tb2RlLnZhbHVlLCB7XG4gICAgICBbMCAvKiBTaW5nbGUgKi9dOiAoKSA9PiBhcGkuY29tcGFyZSgoMCwgaW1wb3J0X3Z1ZTE5LnRvUmF3KShhcGkudmFsdWUudmFsdWUpLCAoMCwgaW1wb3J0X3Z1ZTE5LnRvUmF3KShwcm9wcy52YWx1ZSkpLFxuICAgICAgWzEgLyogTXVsdGkgKi9dOiAoKSA9PiAoMCwgaW1wb3J0X3Z1ZTE5LnRvUmF3KShhcGkudmFsdWUudmFsdWUpLnNvbWUoKHZhbHVlKSA9PiBhcGkuY29tcGFyZSgoMCwgaW1wb3J0X3Z1ZTE5LnRvUmF3KSh2YWx1ZSksICgwLCBpbXBvcnRfdnVlMTkudG9SYXcpKHByb3BzLnZhbHVlKSkpXG4gICAgfSkpO1xuICAgIGxldCBpc0ZpcnN0U2VsZWN0ZWQgPSAoMCwgaW1wb3J0X3Z1ZTE5LmNvbXB1dGVkKSgoKSA9PiB7XG4gICAgICByZXR1cm4gbWF0Y2goYXBpLm1vZGUudmFsdWUsIHtcbiAgICAgICAgWzEgLyogTXVsdGkgKi9dOiAoKSA9PiB7XG4gICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgIGxldCBjdXJyZW50VmFsdWVzID0gKDAsIGltcG9ydF92dWUxOS50b1JhdykoYXBpLnZhbHVlLnZhbHVlKTtcbiAgICAgICAgICByZXR1cm4gKChfYSA9IGFwaS5vcHRpb25zLnZhbHVlLmZpbmQoKG9wdGlvbikgPT4gY3VycmVudFZhbHVlcy5zb21lKCh2YWx1ZSkgPT4gYXBpLmNvbXBhcmUoKDAsIGltcG9ydF92dWUxOS50b1JhdykodmFsdWUpLCAoMCwgaW1wb3J0X3Z1ZTE5LnRvUmF3KShvcHRpb24uZGF0YVJlZi52YWx1ZSkpKSkpID09IG51bGwgPyB2b2lkIDAgOiBfYS5pZCkgPT09IGlkMjtcbiAgICAgICAgfSxcbiAgICAgICAgWzAgLyogU2luZ2xlICovXTogKCkgPT4gc2VsZWN0ZWQudmFsdWVcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGxldCBkYXRhUmVmID0gKDAsIGltcG9ydF92dWUxOS5jb21wdXRlZCkoKCkgPT4gKHtcbiAgICAgIGRpc2FibGVkOiBwcm9wcy5kaXNhYmxlZCxcbiAgICAgIHZhbHVlOiBwcm9wcy52YWx1ZSxcbiAgICAgIHRleHRWYWx1ZTogXCJcIixcbiAgICAgIGRvbVJlZjogaW50ZXJuYWxPcHRpb25SZWZcbiAgICB9KSk7XG4gICAgKDAsIGltcG9ydF92dWUxOS5vbk1vdW50ZWQpKCgpID0+IHtcbiAgICAgIHZhciBfYSwgX2I7XG4gICAgICBsZXQgdGV4dFZhbHVlID0gKF9iID0gKF9hID0gZG9tKGludGVybmFsT3B0aW9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnRleHRDb250ZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2IudG9Mb3dlckNhc2UoKS50cmltKCk7XG4gICAgICBpZiAodGV4dFZhbHVlICE9PSB2b2lkIDApXG4gICAgICAgIGRhdGFSZWYudmFsdWUudGV4dFZhbHVlID0gdGV4dFZhbHVlO1xuICAgIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMTkub25Nb3VudGVkKSgoKSA9PiBhcGkucmVnaXN0ZXJPcHRpb24oaWQyLCBkYXRhUmVmKSk7XG4gICAgKDAsIGltcG9ydF92dWUxOS5vblVubW91bnRlZCkoKCkgPT4gYXBpLnVucmVnaXN0ZXJPcHRpb24oaWQyKSk7XG4gICAgKDAsIGltcG9ydF92dWUxOS5vbk1vdW50ZWQpKCgpID0+IHtcbiAgICAgICgwLCBpbXBvcnRfdnVlMTkud2F0Y2gpKFthcGkubGlzdGJveFN0YXRlLCBzZWxlY3RlZF0sICgpID0+IHtcbiAgICAgICAgaWYgKGFwaS5saXN0Ym94U3RhdGUudmFsdWUgIT09IDAgLyogT3BlbiAqLylcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICghc2VsZWN0ZWQudmFsdWUpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBtYXRjaChhcGkubW9kZS52YWx1ZSwge1xuICAgICAgICAgIFsxIC8qIE11bHRpICovXTogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzRmlyc3RTZWxlY3RlZC52YWx1ZSlcbiAgICAgICAgICAgICAgYXBpLmdvVG9PcHRpb24oNCAvKiBTcGVjaWZpYyAqLywgaWQyKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIFswIC8qIFNpbmdsZSAqL106ICgpID0+IHtcbiAgICAgICAgICAgIGFwaS5nb1RvT3B0aW9uKDQgLyogU3BlY2lmaWMgKi8sIGlkMik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0sIHsgaW1tZWRpYXRlOiB0cnVlIH0pO1xuICAgIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMTkud2F0Y2hFZmZlY3QpKCgpID0+IHtcbiAgICAgIGlmIChhcGkubGlzdGJveFN0YXRlLnZhbHVlICE9PSAwIC8qIE9wZW4gKi8pXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICghYWN0aXZlLnZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoYXBpLmFjdGl2YXRpb25UcmlnZ2VyLnZhbHVlID09PSAwIC8qIFBvaW50ZXIgKi8pXG4gICAgICAgIHJldHVybjtcbiAgICAgICgwLCBpbXBvcnRfdnVlMTkubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgcmV0dXJuIChfYiA9IChfYSA9IGRvbShpbnRlcm5hbE9wdGlvblJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5zY3JvbGxJbnRvVmlldykgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIHsgYmxvY2s6IFwibmVhcmVzdFwiIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZlbnQpIHtcbiAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgcmV0dXJuIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBhcGkuc2VsZWN0KHByb3BzLnZhbHVlKTtcbiAgICAgIGlmIChhcGkubW9kZS52YWx1ZSA9PT0gMCAvKiBTaW5nbGUgKi8pIHtcbiAgICAgICAgYXBpLmNsb3NlTGlzdGJveCgpO1xuICAgICAgICAoMCwgaW1wb3J0X3Z1ZTE5Lm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgIHJldHVybiAoX2EgPSBkb20oYXBpLmJ1dHRvblJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVGb2N1cygpIHtcbiAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgcmV0dXJuIGFwaS5nb1RvT3B0aW9uKDUgLyogTm90aGluZyAqLyk7XG4gICAgICBhcGkuZ29Ub09wdGlvbig0IC8qIFNwZWNpZmljICovLCBpZDIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVNb3ZlKCkge1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoYWN0aXZlLnZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBhcGkuZ29Ub09wdGlvbig0IC8qIFNwZWNpZmljICovLCBpZDIsIDAgLyogUG9pbnRlciAqLyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUxlYXZlKCkge1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoIWFjdGl2ZS52YWx1ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgYXBpLmdvVG9PcHRpb24oNSAvKiBOb3RoaW5nICovKTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB7IGRpc2FibGVkIH0gPSBwcm9wcztcbiAgICAgIGxldCBzbG90ID0geyBhY3RpdmU6IGFjdGl2ZS52YWx1ZSwgc2VsZWN0ZWQ6IHNlbGVjdGVkLnZhbHVlLCBkaXNhYmxlZCB9O1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICBpZDogaWQyLFxuICAgICAgICByZWY6IGludGVybmFsT3B0aW9uUmVmLFxuICAgICAgICByb2xlOiBcIm9wdGlvblwiLFxuICAgICAgICB0YWJJbmRleDogZGlzYWJsZWQgPT09IHRydWUgPyB2b2lkIDAgOiAtMSxcbiAgICAgICAgXCJhcmlhLWRpc2FibGVkXCI6IGRpc2FibGVkID09PSB0cnVlID8gdHJ1ZSA6IHZvaWQgMCxcbiAgICAgICAgXCJhcmlhLXNlbGVjdGVkXCI6IHNlbGVjdGVkLnZhbHVlID09PSB0cnVlID8gc2VsZWN0ZWQudmFsdWUgOiB2b2lkIDAsXG4gICAgICAgIGRpc2FibGVkOiB2b2lkIDAsXG4gICAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLFxuICAgICAgICBvbkZvY3VzOiBoYW5kbGVGb2N1cyxcbiAgICAgICAgb25Qb2ludGVybW92ZTogaGFuZGxlTW92ZSxcbiAgICAgICAgb25Nb3VzZW1vdmU6IGhhbmRsZU1vdmUsXG4gICAgICAgIG9uUG9pbnRlcmxlYXZlOiBoYW5kbGVMZWF2ZSxcbiAgICAgICAgb25Nb3VzZWxlYXZlOiBoYW5kbGVMZWF2ZVxuICAgICAgfTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wczogb21pdChwcm9wcywgW1widmFsdWVcIiwgXCJkaXNhYmxlZFwiXSksXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJMaXN0Ym94T3B0aW9uXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBzcmMvY29tcG9uZW50cy9tZW51L21lbnUudHNcbnZhciBpbXBvcnRfdnVlMjAgPSByZXF1aXJlKFwidnVlXCIpO1xuZnVuY3Rpb24gbmV4dEZyYW1lMihjYikge1xuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNiKSk7XG59XG52YXIgTWVudUNvbnRleHQgPSBTeW1ib2woXCJNZW51Q29udGV4dFwiKTtcbmZ1bmN0aW9uIHVzZU1lbnVDb250ZXh0KGNvbXBvbmVudCkge1xuICBsZXQgY29udGV4dCA9ICgwLCBpbXBvcnRfdnVlMjAuaW5qZWN0KShNZW51Q29udGV4dCwgbnVsbCk7XG4gIGlmIChjb250ZXh0ID09PSBudWxsKSB7XG4gICAgbGV0IGVyciA9IG5ldyBFcnJvcihgPCR7Y29tcG9uZW50fSAvPiBpcyBtaXNzaW5nIGEgcGFyZW50IDxNZW51IC8+IGNvbXBvbmVudC5gKTtcbiAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpXG4gICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnIsIHVzZU1lbnVDb250ZXh0KTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG52YXIgTWVudSA9ICgwLCBpbXBvcnRfdnVlMjAuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiTWVudVwiLFxuICBwcm9wczogeyBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcInRlbXBsYXRlXCIgfSB9LFxuICBzZXR1cChwcm9wcywgeyBzbG90cywgYXR0cnMgfSkge1xuICAgIGxldCBtZW51U3RhdGUgPSAoMCwgaW1wb3J0X3Z1ZTIwLnJlZikoMSAvKiBDbG9zZWQgKi8pO1xuICAgIGxldCBidXR0b25SZWYgPSAoMCwgaW1wb3J0X3Z1ZTIwLnJlZikobnVsbCk7XG4gICAgbGV0IGl0ZW1zUmVmID0gKDAsIGltcG9ydF92dWUyMC5yZWYpKG51bGwpO1xuICAgIGxldCBpdGVtcyA9ICgwLCBpbXBvcnRfdnVlMjAucmVmKShbXSk7XG4gICAgbGV0IHNlYXJjaFF1ZXJ5ID0gKDAsIGltcG9ydF92dWUyMC5yZWYpKFwiXCIpO1xuICAgIGxldCBhY3RpdmVJdGVtSW5kZXggPSAoMCwgaW1wb3J0X3Z1ZTIwLnJlZikobnVsbCk7XG4gICAgbGV0IGFjdGl2YXRpb25UcmlnZ2VyID0gKDAsIGltcG9ydF92dWUyMC5yZWYpKDEgLyogT3RoZXIgKi8pO1xuICAgIGZ1bmN0aW9uIGFkanVzdE9yZGVyZWRTdGF0ZShhZGp1c3RtZW50ID0gKGkpID0+IGkpIHtcbiAgICAgIGxldCBjdXJyZW50QWN0aXZlSXRlbSA9IGFjdGl2ZUl0ZW1JbmRleC52YWx1ZSAhPT0gbnVsbCA/IGl0ZW1zLnZhbHVlW2FjdGl2ZUl0ZW1JbmRleC52YWx1ZV0gOiBudWxsO1xuICAgICAgbGV0IHNvcnRlZEl0ZW1zID0gc29ydEJ5RG9tTm9kZShhZGp1c3RtZW50KGl0ZW1zLnZhbHVlLnNsaWNlKCkpLCAoaXRlbSkgPT4gZG9tKGl0ZW0uZGF0YVJlZi5kb21SZWYpKTtcbiAgICAgIGxldCBhZGp1c3RlZEFjdGl2ZUl0ZW1JbmRleCA9IGN1cnJlbnRBY3RpdmVJdGVtID8gc29ydGVkSXRlbXMuaW5kZXhPZihjdXJyZW50QWN0aXZlSXRlbSkgOiBudWxsO1xuICAgICAgaWYgKGFkanVzdGVkQWN0aXZlSXRlbUluZGV4ID09PSAtMSkge1xuICAgICAgICBhZGp1c3RlZEFjdGl2ZUl0ZW1JbmRleCA9IG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpdGVtczogc29ydGVkSXRlbXMsXG4gICAgICAgIGFjdGl2ZUl0ZW1JbmRleDogYWRqdXN0ZWRBY3RpdmVJdGVtSW5kZXhcbiAgICAgIH07XG4gICAgfVxuICAgIGxldCBhcGkgPSB7XG4gICAgICBtZW51U3RhdGUsXG4gICAgICBidXR0b25SZWYsXG4gICAgICBpdGVtc1JlZixcbiAgICAgIGl0ZW1zLFxuICAgICAgc2VhcmNoUXVlcnksXG4gICAgICBhY3RpdmVJdGVtSW5kZXgsXG4gICAgICBhY3RpdmF0aW9uVHJpZ2dlcixcbiAgICAgIGNsb3NlTWVudTogKCkgPT4ge1xuICAgICAgICBtZW51U3RhdGUudmFsdWUgPSAxIC8qIENsb3NlZCAqLztcbiAgICAgICAgYWN0aXZlSXRlbUluZGV4LnZhbHVlID0gbnVsbDtcbiAgICAgIH0sXG4gICAgICBvcGVuTWVudTogKCkgPT4gbWVudVN0YXRlLnZhbHVlID0gMCAvKiBPcGVuICovLFxuICAgICAgZ29Ub0l0ZW0oZm9jdXMsIGlkMiwgdHJpZ2dlcikge1xuICAgICAgICBsZXQgYWRqdXN0ZWRTdGF0ZSA9IGFkanVzdE9yZGVyZWRTdGF0ZSgpO1xuICAgICAgICBsZXQgbmV4dEFjdGl2ZUl0ZW1JbmRleCA9IGNhbGN1bGF0ZUFjdGl2ZUluZGV4KGZvY3VzID09PSA0IC8qIFNwZWNpZmljICovID8geyBmb2N1czogNCAvKiBTcGVjaWZpYyAqLywgaWQ6IGlkMiB9IDogeyBmb2N1cyB9LCB7XG4gICAgICAgICAgcmVzb2x2ZUl0ZW1zOiAoKSA9PiBhZGp1c3RlZFN0YXRlLml0ZW1zLFxuICAgICAgICAgIHJlc29sdmVBY3RpdmVJbmRleDogKCkgPT4gYWRqdXN0ZWRTdGF0ZS5hY3RpdmVJdGVtSW5kZXgsXG4gICAgICAgICAgcmVzb2x2ZUlkOiAoaXRlbSkgPT4gaXRlbS5pZCxcbiAgICAgICAgICByZXNvbHZlRGlzYWJsZWQ6IChpdGVtKSA9PiBpdGVtLmRhdGFSZWYuZGlzYWJsZWRcbiAgICAgICAgfSk7XG4gICAgICAgIHNlYXJjaFF1ZXJ5LnZhbHVlID0gXCJcIjtcbiAgICAgICAgYWN0aXZlSXRlbUluZGV4LnZhbHVlID0gbmV4dEFjdGl2ZUl0ZW1JbmRleDtcbiAgICAgICAgYWN0aXZhdGlvblRyaWdnZXIudmFsdWUgPSB0cmlnZ2VyICE9IG51bGwgPyB0cmlnZ2VyIDogMSAvKiBPdGhlciAqLztcbiAgICAgICAgaXRlbXMudmFsdWUgPSBhZGp1c3RlZFN0YXRlLml0ZW1zO1xuICAgICAgfSxcbiAgICAgIHNlYXJjaCh2YWx1ZSkge1xuICAgICAgICBsZXQgd2FzQWxyZWFkeVNlYXJjaGluZyA9IHNlYXJjaFF1ZXJ5LnZhbHVlICE9PSBcIlwiO1xuICAgICAgICBsZXQgb2Zmc2V0ID0gd2FzQWxyZWFkeVNlYXJjaGluZyA/IDAgOiAxO1xuICAgICAgICBzZWFyY2hRdWVyeS52YWx1ZSArPSB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBsZXQgcmVPcmRlcmVkSXRlbXMgPSBhY3RpdmVJdGVtSW5kZXgudmFsdWUgIT09IG51bGwgPyBpdGVtcy52YWx1ZS5zbGljZShhY3RpdmVJdGVtSW5kZXgudmFsdWUgKyBvZmZzZXQpLmNvbmNhdChpdGVtcy52YWx1ZS5zbGljZSgwLCBhY3RpdmVJdGVtSW5kZXgudmFsdWUgKyBvZmZzZXQpKSA6IGl0ZW1zLnZhbHVlO1xuICAgICAgICBsZXQgbWF0Y2hpbmdJdGVtID0gcmVPcmRlcmVkSXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5kYXRhUmVmLnRleHRWYWx1ZS5zdGFydHNXaXRoKHNlYXJjaFF1ZXJ5LnZhbHVlKSAmJiAhaXRlbS5kYXRhUmVmLmRpc2FibGVkKTtcbiAgICAgICAgbGV0IG1hdGNoSWR4ID0gbWF0Y2hpbmdJdGVtID8gaXRlbXMudmFsdWUuaW5kZXhPZihtYXRjaGluZ0l0ZW0pIDogLTE7XG4gICAgICAgIGlmIChtYXRjaElkeCA9PT0gLTEgfHwgbWF0Y2hJZHggPT09IGFjdGl2ZUl0ZW1JbmRleC52YWx1ZSlcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGFjdGl2ZUl0ZW1JbmRleC52YWx1ZSA9IG1hdGNoSWR4O1xuICAgICAgICBhY3RpdmF0aW9uVHJpZ2dlci52YWx1ZSA9IDEgLyogT3RoZXIgKi87XG4gICAgICB9LFxuICAgICAgY2xlYXJTZWFyY2goKSB7XG4gICAgICAgIHNlYXJjaFF1ZXJ5LnZhbHVlID0gXCJcIjtcbiAgICAgIH0sXG4gICAgICByZWdpc3Rlckl0ZW0oaWQyLCBkYXRhUmVmKSB7XG4gICAgICAgIGxldCBhZGp1c3RlZFN0YXRlID0gYWRqdXN0T3JkZXJlZFN0YXRlKChpdGVtczIpID0+IHtcbiAgICAgICAgICByZXR1cm4gWy4uLml0ZW1zMiwgeyBpZDogaWQyLCBkYXRhUmVmIH1dO1xuICAgICAgICB9KTtcbiAgICAgICAgaXRlbXMudmFsdWUgPSBhZGp1c3RlZFN0YXRlLml0ZW1zO1xuICAgICAgICBhY3RpdmVJdGVtSW5kZXgudmFsdWUgPSBhZGp1c3RlZFN0YXRlLmFjdGl2ZUl0ZW1JbmRleDtcbiAgICAgICAgYWN0aXZhdGlvblRyaWdnZXIudmFsdWUgPSAxIC8qIE90aGVyICovO1xuICAgICAgfSxcbiAgICAgIHVucmVnaXN0ZXJJdGVtKGlkMikge1xuICAgICAgICBsZXQgYWRqdXN0ZWRTdGF0ZSA9IGFkanVzdE9yZGVyZWRTdGF0ZSgoaXRlbXMyKSA9PiB7XG4gICAgICAgICAgbGV0IGlkeCA9IGl0ZW1zMi5maW5kSW5kZXgoKGEpID0+IGEuaWQgPT09IGlkMik7XG4gICAgICAgICAgaWYgKGlkeCAhPT0gLTEpXG4gICAgICAgICAgICBpdGVtczIuc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgICAgcmV0dXJuIGl0ZW1zMjtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0ZW1zLnZhbHVlID0gYWRqdXN0ZWRTdGF0ZS5pdGVtcztcbiAgICAgICAgYWN0aXZlSXRlbUluZGV4LnZhbHVlID0gYWRqdXN0ZWRTdGF0ZS5hY3RpdmVJdGVtSW5kZXg7XG4gICAgICAgIGFjdGl2YXRpb25UcmlnZ2VyLnZhbHVlID0gMSAvKiBPdGhlciAqLztcbiAgICAgIH1cbiAgICB9O1xuICAgIHVzZU91dHNpZGVDbGljayhbYnV0dG9uUmVmLCBpdGVtc1JlZl0sIChldmVudCwgdGFyZ2V0KSA9PiB7XG4gICAgICB2YXIgX2E7XG4gICAgICBhcGkuY2xvc2VNZW51KCk7XG4gICAgICBpZiAoIWlzRm9jdXNhYmxlRWxlbWVudCh0YXJnZXQsIDEgLyogTG9vc2UgKi8pKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIChfYSA9IGRvbShidXR0b25SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LCAoMCwgaW1wb3J0X3Z1ZTIwLmNvbXB1dGVkKSgoKSA9PiBtZW51U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLykpO1xuICAgICgwLCBpbXBvcnRfdnVlMjAucHJvdmlkZSkoTWVudUNvbnRleHQsIGFwaSk7XG4gICAgdXNlT3BlbkNsb3NlZFByb3ZpZGVyKCgwLCBpbXBvcnRfdnVlMjAuY29tcHV0ZWQpKCgpID0+IG1hdGNoKG1lbnVTdGF0ZS52YWx1ZSwge1xuICAgICAgWzAgLyogT3BlbiAqL106IDAgLyogT3BlbiAqLyxcbiAgICAgIFsxIC8qIENsb3NlZCAqL106IDEgLyogQ2xvc2VkICovXG4gICAgfSkpKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHNsb3QgPSB7IG9wZW46IG1lbnVTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovIH07XG4gICAgICByZXR1cm4gcmVuZGVyKHsgb3VyUHJvcHM6IHt9LCB0aGVpclByb3BzOiBwcm9wcywgc2xvdCwgc2xvdHMsIGF0dHJzLCBuYW1lOiBcIk1lbnVcIiB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBNZW51QnV0dG9uID0gKDAsIGltcG9ydF92dWUyMC5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJNZW51QnV0dG9uXCIsXG4gIHByb3BzOiB7XG4gICAgZGlzYWJsZWQ6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImJ1dHRvblwiIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzLCBleHBvc2UgfSkge1xuICAgIGxldCBhcGkgPSB1c2VNZW51Q29udGV4dChcIk1lbnVCdXR0b25cIik7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLW1lbnUtYnV0dG9uLSR7dXNlSWQoKX1gO1xuICAgIGV4cG9zZSh7IGVsOiBhcGkuYnV0dG9uUmVmLCAkZWw6IGFwaS5idXR0b25SZWYgfSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5RG93bihldmVudCkge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSBcIiBcIiAvKiBTcGFjZSAqLzpcbiAgICAgICAgY2FzZSBcIkVudGVyXCIgLyogRW50ZXIgKi86XG4gICAgICAgIGNhc2UgXCJBcnJvd0Rvd25cIiAvKiBBcnJvd0Rvd24gKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBhcGkub3Blbk1lbnUoKTtcbiAgICAgICAgICAoMCwgaW1wb3J0X3Z1ZTIwLm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAoX2EgPSBkb20oYXBpLml0ZW1zUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIGFwaS5nb1RvSXRlbSgwIC8qIEZpcnN0ICovKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkFycm93VXBcIiAvKiBBcnJvd1VwICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgYXBpLm9wZW5NZW51KCk7XG4gICAgICAgICAgKDAsIGltcG9ydF92dWUyMC5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgKF9hID0gZG9tKGFwaS5pdGVtc1JlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgICAgICBhcGkuZ29Ub0l0ZW0oMyAvKiBMYXN0ICovKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5VXAoZXZlbnQpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgXCIgXCIgLyogU3BhY2UgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZlbnQpIHtcbiAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGFwaS5tZW51U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLykge1xuICAgICAgICBhcGkuY2xvc2VNZW51KCk7XG4gICAgICAgICgwLCBpbXBvcnRfdnVlMjAubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgcmV0dXJuIChfYSA9IGRvbShhcGkuYnV0dG9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBhcGkub3Blbk1lbnUoKTtcbiAgICAgICAgbmV4dEZyYW1lMigoKSA9PiB7XG4gICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgIHJldHVybiAoX2EgPSBkb20oYXBpLml0ZW1zUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCB0eXBlID0gdXNlUmVzb2x2ZUJ1dHRvblR5cGUoKDAsIGltcG9ydF92dWUyMC5jb21wdXRlZCkoKCkgPT4gKHsgYXM6IHByb3BzLmFzLCB0eXBlOiBhdHRycy50eXBlIH0pKSwgYXBpLmJ1dHRvblJlZik7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGxldCBzbG90ID0geyBvcGVuOiBhcGkubWVudVN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8gfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgcmVmOiBhcGkuYnV0dG9uUmVmLFxuICAgICAgICBpZDogaWQyLFxuICAgICAgICB0eXBlOiB0eXBlLnZhbHVlLFxuICAgICAgICBcImFyaWEtaGFzcG9wdXBcIjogdHJ1ZSxcbiAgICAgICAgXCJhcmlhLWNvbnRyb2xzXCI6IChfYSA9IGRvbShhcGkuaXRlbXNSZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuaWQsXG4gICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBwcm9wcy5kaXNhYmxlZCA/IHZvaWQgMCA6IGFwaS5tZW51U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyxcbiAgICAgICAgb25LZXlkb3duOiBoYW5kbGVLZXlEb3duLFxuICAgICAgICBvbktleXVwOiBoYW5kbGVLZXlVcCxcbiAgICAgICAgb25DbGljazogaGFuZGxlQ2xpY2tcbiAgICAgIH07XG4gICAgICBsZXQgdGhlaXJQcm9wcyA9IHByb3BzO1xuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBzbG90LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiTWVudUJ1dHRvblwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBNZW51SXRlbXMgPSAoMCwgaW1wb3J0X3Z1ZTIwLmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIk1lbnVJdGVtc1wiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfSxcbiAgICBzdGF0aWM6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICB1bm1vdW50OiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IHRydWUgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZU1lbnVDb250ZXh0KFwiTWVudUl0ZW1zXCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1tZW51LWl0ZW1zLSR7dXNlSWQoKX1gO1xuICAgIGxldCBzZWFyY2hEZWJvdW5jZSA9ICgwLCBpbXBvcnRfdnVlMjAucmVmKShudWxsKTtcbiAgICBleHBvc2UoeyBlbDogYXBpLml0ZW1zUmVmLCAkZWw6IGFwaS5pdGVtc1JlZiB9KTtcbiAgICB1c2VUcmVlV2Fsa2VyKHtcbiAgICAgIGNvbnRhaW5lcjogKDAsIGltcG9ydF92dWUyMC5jb21wdXRlZCkoKCkgPT4gZG9tKGFwaS5pdGVtc1JlZikpLFxuICAgICAgZW5hYmxlZDogKDAsIGltcG9ydF92dWUyMC5jb21wdXRlZCkoKCkgPT4gYXBpLm1lbnVTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovKSxcbiAgICAgIGFjY2VwdChub2RlKSB7XG4gICAgICAgIGlmIChub2RlLmdldEF0dHJpYnV0ZShcInJvbGVcIikgPT09IFwibWVudWl0ZW1cIilcbiAgICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfUkVKRUNUO1xuICAgICAgICBpZiAobm9kZS5oYXNBdHRyaWJ1dGUoXCJyb2xlXCIpKVxuICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9TS0lQO1xuICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfQUNDRVBUO1xuICAgICAgfSxcbiAgICAgIHdhbGsobm9kZSkge1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcInJvbGVcIiwgXCJub25lXCIpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUtleURvd24oZXZlbnQpIHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGlmIChzZWFyY2hEZWJvdW5jZS52YWx1ZSlcbiAgICAgICAgY2xlYXJUaW1lb3V0KHNlYXJjaERlYm91bmNlLnZhbHVlKTtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgXCIgXCIgLyogU3BhY2UgKi86XG4gICAgICAgICAgaWYgKGFwaS5zZWFyY2hRdWVyeS52YWx1ZSAhPT0gXCJcIikge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgcmV0dXJuIGFwaS5zZWFyY2goZXZlbnQua2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJFbnRlclwiIC8qIEVudGVyICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgaWYgKGFwaS5hY3RpdmVJdGVtSW5kZXgudmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGxldCBhY3RpdmVJdGVtID0gYXBpLml0ZW1zLnZhbHVlW2FwaS5hY3RpdmVJdGVtSW5kZXgudmFsdWVdO1xuICAgICAgICAgICAgbGV0IF9hY3RpdmVJdGVtID0gYWN0aXZlSXRlbTtcbiAgICAgICAgICAgIChfYSA9IGRvbShfYWN0aXZlSXRlbS5kYXRhUmVmLmRvbVJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jbGljaygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhcGkuY2xvc2VNZW51KCk7XG4gICAgICAgICAgKDAsIGltcG9ydF92dWUyMC5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hMjtcbiAgICAgICAgICAgIHJldHVybiAoX2EyID0gZG9tKGFwaS5idXR0b25SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EyLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkFycm93RG93blwiIC8qIEFycm93RG93biAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHJldHVybiBhcGkuZ29Ub0l0ZW0oMiAvKiBOZXh0ICovKTtcbiAgICAgICAgY2FzZSBcIkFycm93VXBcIiAvKiBBcnJvd1VwICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuIGFwaS5nb1RvSXRlbSgxIC8qIFByZXZpb3VzICovKTtcbiAgICAgICAgY2FzZSBcIkhvbWVcIiAvKiBIb21lICovOlxuICAgICAgICBjYXNlIFwiUGFnZVVwXCIgLyogUGFnZVVwICovOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuIGFwaS5nb1RvSXRlbSgwIC8qIEZpcnN0ICovKTtcbiAgICAgICAgY2FzZSBcIkVuZFwiIC8qIEVuZCAqLzpcbiAgICAgICAgY2FzZSBcIlBhZ2VEb3duXCIgLyogUGFnZURvd24gKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICByZXR1cm4gYXBpLmdvVG9JdGVtKDMgLyogTGFzdCAqLyk7XG4gICAgICAgIGNhc2UgXCJFc2NhcGVcIiAvKiBFc2NhcGUgKi86XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBhcGkuY2xvc2VNZW51KCk7XG4gICAgICAgICAgKDAsIGltcG9ydF92dWUyMC5uZXh0VGljaykoKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hMjtcbiAgICAgICAgICAgIHJldHVybiAoX2EyID0gZG9tKGFwaS5idXR0b25SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EyLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIlRhYlwiIC8qIFRhYiAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGlmIChldmVudC5rZXkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBhcGkuc2VhcmNoKGV2ZW50LmtleSk7XG4gICAgICAgICAgICBzZWFyY2hEZWJvdW5jZS52YWx1ZSA9IHNldFRpbWVvdXQoKCkgPT4gYXBpLmNsZWFyU2VhcmNoKCksIDM1MCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVLZXlVcChldmVudCkge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSBcIiBcIiAvKiBTcGFjZSAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgdXNlc09wZW5DbG9zZWRTdGF0ZSA9IHVzZU9wZW5DbG9zZWQoKTtcbiAgICBsZXQgdmlzaWJsZSA9ICgwLCBpbXBvcnRfdnVlMjAuY29tcHV0ZWQpKCgpID0+IHtcbiAgICAgIGlmICh1c2VzT3BlbkNsb3NlZFN0YXRlICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB1c2VzT3BlbkNsb3NlZFN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi87XG4gICAgICB9XG4gICAgICByZXR1cm4gYXBpLm1lbnVTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovO1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB2YXIgX2EsIF9iO1xuICAgICAgbGV0IHNsb3QgPSB7IG9wZW46IGFwaS5tZW51U3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyB9O1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICBcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiOiBhcGkuYWN0aXZlSXRlbUluZGV4LnZhbHVlID09PSBudWxsID8gdm9pZCAwIDogKF9hID0gYXBpLml0ZW1zLnZhbHVlW2FwaS5hY3RpdmVJdGVtSW5kZXgudmFsdWVdKSA9PSBudWxsID8gdm9pZCAwIDogX2EuaWQsXG4gICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IChfYiA9IGRvbShhcGkuYnV0dG9uUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmlkLFxuICAgICAgICBpZDogaWQyLFxuICAgICAgICBvbktleWRvd246IGhhbmRsZUtleURvd24sXG4gICAgICAgIG9uS2V5dXA6IGhhbmRsZUtleVVwLFxuICAgICAgICByb2xlOiBcIm1lbnVcIixcbiAgICAgICAgdGFiSW5kZXg6IDAsXG4gICAgICAgIHJlZjogYXBpLml0ZW1zUmVmXG4gICAgICB9O1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBwcm9wcztcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBmZWF0dXJlczogMSAvKiBSZW5kZXJTdHJhdGVneSAqLyB8IDIgLyogU3RhdGljICovLFxuICAgICAgICB2aXNpYmxlOiB2aXNpYmxlLnZhbHVlLFxuICAgICAgICBuYW1lOiBcIk1lbnVJdGVtc1wiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBNZW51SXRlbSA9ICgwLCBpbXBvcnRfdnVlMjAuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiTWVudUl0ZW1cIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcInRlbXBsYXRlXCIgfSxcbiAgICBkaXNhYmxlZDogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IHNsb3RzLCBhdHRycywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlTWVudUNvbnRleHQoXCJNZW51SXRlbVwiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktbWVudS1pdGVtLSR7dXNlSWQoKX1gO1xuICAgIGxldCBpbnRlcm5hbEl0ZW1SZWYgPSAoMCwgaW1wb3J0X3Z1ZTIwLnJlZikobnVsbCk7XG4gICAgZXhwb3NlKHsgZWw6IGludGVybmFsSXRlbVJlZiwgJGVsOiBpbnRlcm5hbEl0ZW1SZWYgfSk7XG4gICAgbGV0IGFjdGl2ZSA9ICgwLCBpbXBvcnRfdnVlMjAuY29tcHV0ZWQpKCgpID0+IHtcbiAgICAgIHJldHVybiBhcGkuYWN0aXZlSXRlbUluZGV4LnZhbHVlICE9PSBudWxsID8gYXBpLml0ZW1zLnZhbHVlW2FwaS5hY3RpdmVJdGVtSW5kZXgudmFsdWVdLmlkID09PSBpZDIgOiBmYWxzZTtcbiAgICB9KTtcbiAgICBsZXQgZGF0YVJlZiA9ICgwLCBpbXBvcnRfdnVlMjAuY29tcHV0ZWQpKCgpID0+ICh7XG4gICAgICBkaXNhYmxlZDogcHJvcHMuZGlzYWJsZWQsXG4gICAgICB0ZXh0VmFsdWU6IFwiXCIsXG4gICAgICBkb21SZWY6IGludGVybmFsSXRlbVJlZlxuICAgIH0pKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTIwLm9uTW91bnRlZCkoKCkgPT4ge1xuICAgICAgdmFyIF9hLCBfYjtcbiAgICAgIGxldCB0ZXh0VmFsdWUgPSAoX2IgPSAoX2EgPSBkb20oaW50ZXJuYWxJdGVtUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnRleHRDb250ZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2IudG9Mb3dlckNhc2UoKS50cmltKCk7XG4gICAgICBpZiAodGV4dFZhbHVlICE9PSB2b2lkIDApXG4gICAgICAgIGRhdGFSZWYudmFsdWUudGV4dFZhbHVlID0gdGV4dFZhbHVlO1xuICAgIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMjAub25Nb3VudGVkKSgoKSA9PiBhcGkucmVnaXN0ZXJJdGVtKGlkMiwgZGF0YVJlZikpO1xuICAgICgwLCBpbXBvcnRfdnVlMjAub25Vbm1vdW50ZWQpKCgpID0+IGFwaS51bnJlZ2lzdGVySXRlbShpZDIpKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTIwLndhdGNoRWZmZWN0KSgoKSA9PiB7XG4gICAgICBpZiAoYXBpLm1lbnVTdGF0ZS52YWx1ZSAhPT0gMCAvKiBPcGVuICovKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoIWFjdGl2ZS52YWx1ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGFwaS5hY3RpdmF0aW9uVHJpZ2dlci52YWx1ZSA9PT0gMCAvKiBQb2ludGVyICovKVxuICAgICAgICByZXR1cm47XG4gICAgICAoMCwgaW1wb3J0X3Z1ZTIwLm5leHRUaWNrKSgoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHJldHVybiAoX2IgPSAoX2EgPSBkb20oaW50ZXJuYWxJdGVtUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnNjcm9sbEludG9WaWV3KSA9PSBudWxsID8gdm9pZCAwIDogX2IuY2FsbChfYSwgeyBibG9jazogXCJuZWFyZXN0XCIgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCkge1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm4gZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGFwaS5jbG9zZU1lbnUoKTtcbiAgICAgICgwLCBpbXBvcnRfdnVlMjAubmV4dFRpY2spKCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gKF9hID0gZG9tKGFwaS5idXR0b25SZWYpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUZvY3VzKCkge1xuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICByZXR1cm4gYXBpLmdvVG9JdGVtKDUgLyogTm90aGluZyAqLyk7XG4gICAgICBhcGkuZ29Ub0l0ZW0oNCAvKiBTcGVjaWZpYyAqLywgaWQyKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlTW92ZSgpIHtcbiAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGFjdGl2ZS52YWx1ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgYXBpLmdvVG9JdGVtKDQgLyogU3BlY2lmaWMgKi8sIGlkMiwgMCAvKiBQb2ludGVyICovKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlTGVhdmUoKSB7XG4gICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICghYWN0aXZlLnZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBhcGkuZ29Ub0l0ZW0oNSAvKiBOb3RoaW5nICovKTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB7IGRpc2FibGVkIH0gPSBwcm9wcztcbiAgICAgIGxldCBzbG90ID0geyBhY3RpdmU6IGFjdGl2ZS52YWx1ZSwgZGlzYWJsZWQgfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgaWQ6IGlkMixcbiAgICAgICAgcmVmOiBpbnRlcm5hbEl0ZW1SZWYsXG4gICAgICAgIHJvbGU6IFwibWVudWl0ZW1cIixcbiAgICAgICAgdGFiSW5kZXg6IGRpc2FibGVkID09PSB0cnVlID8gdm9pZCAwIDogLTEsXG4gICAgICAgIFwiYXJpYS1kaXNhYmxlZFwiOiBkaXNhYmxlZCA9PT0gdHJ1ZSA/IHRydWUgOiB2b2lkIDAsXG4gICAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLFxuICAgICAgICBvbkZvY3VzOiBoYW5kbGVGb2N1cyxcbiAgICAgICAgb25Qb2ludGVybW92ZTogaGFuZGxlTW92ZSxcbiAgICAgICAgb25Nb3VzZW1vdmU6IGhhbmRsZU1vdmUsXG4gICAgICAgIG9uUG9pbnRlcmxlYXZlOiBoYW5kbGVMZWF2ZSxcbiAgICAgICAgb25Nb3VzZWxlYXZlOiBoYW5kbGVMZWF2ZVxuICAgICAgfTtcbiAgICAgIGxldCB0aGVpclByb3BzID0gcHJvcHM7XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgbmFtZTogXCJNZW51SXRlbVwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gc3JjL2NvbXBvbmVudHMvcG9wb3Zlci9wb3BvdmVyLnRzXG52YXIgaW1wb3J0X3Z1ZTIxID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBQb3BvdmVyQ29udGV4dCA9IFN5bWJvbChcIlBvcG92ZXJDb250ZXh0XCIpO1xuZnVuY3Rpb24gdXNlUG9wb3ZlckNvbnRleHQoY29tcG9uZW50KSB7XG4gIGxldCBjb250ZXh0ID0gKDAsIGltcG9ydF92dWUyMS5pbmplY3QpKFBvcG92ZXJDb250ZXh0LCBudWxsKTtcbiAgaWYgKGNvbnRleHQgPT09IG51bGwpIHtcbiAgICBsZXQgZXJyID0gbmV3IEVycm9yKGA8JHtjb21wb25lbnR9IC8+IGlzIG1pc3NpbmcgYSBwYXJlbnQgPCR7UG9wb3Zlci5uYW1lfSAvPiBjb21wb25lbnQuYCk7XG4gICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKVxuICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyLCB1c2VQb3BvdmVyQ29udGV4dCk7XG4gICAgdGhyb3cgZXJyO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxudmFyIFBvcG92ZXJHcm91cENvbnRleHQgPSBTeW1ib2woXCJQb3BvdmVyR3JvdXBDb250ZXh0XCIpO1xuZnVuY3Rpb24gdXNlUG9wb3Zlckdyb3VwQ29udGV4dCgpIHtcbiAgcmV0dXJuICgwLCBpbXBvcnRfdnVlMjEuaW5qZWN0KShQb3BvdmVyR3JvdXBDb250ZXh0LCBudWxsKTtcbn1cbnZhciBQb3BvdmVyUGFuZWxDb250ZXh0ID0gU3ltYm9sKFwiUG9wb3ZlclBhbmVsQ29udGV4dFwiKTtcbmZ1bmN0aW9uIHVzZVBvcG92ZXJQYW5lbENvbnRleHQoKSB7XG4gIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTIxLmluamVjdCkoUG9wb3ZlclBhbmVsQ29udGV4dCwgbnVsbCk7XG59XG52YXIgUG9wb3ZlciA9ICgwLCBpbXBvcnRfdnVlMjEuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiUG9wb3ZlclwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBzbG90cywgYXR0cnMsIGV4cG9zZSB9KSB7XG4gICAgdmFyIF9hO1xuICAgIGxldCBidXR0b25JZCA9IGBoZWFkbGVzc3VpLXBvcG92ZXItYnV0dG9uLSR7dXNlSWQoKX1gO1xuICAgIGxldCBwYW5lbElkID0gYGhlYWRsZXNzdWktcG9wb3Zlci1wYW5lbC0ke3VzZUlkKCl9YDtcbiAgICBsZXQgaW50ZXJuYWxQb3BvdmVyUmVmID0gKDAsIGltcG9ydF92dWUyMS5yZWYpKG51bGwpO1xuICAgIGV4cG9zZSh7IGVsOiBpbnRlcm5hbFBvcG92ZXJSZWYsICRlbDogaW50ZXJuYWxQb3BvdmVyUmVmIH0pO1xuICAgIGxldCBwb3BvdmVyU3RhdGUgPSAoMCwgaW1wb3J0X3Z1ZTIxLnJlZikoMSAvKiBDbG9zZWQgKi8pO1xuICAgIGxldCBidXR0b24gPSAoMCwgaW1wb3J0X3Z1ZTIxLnJlZikobnVsbCk7XG4gICAgbGV0IGJlZm9yZVBhbmVsU2VudGluZWwgPSAoMCwgaW1wb3J0X3Z1ZTIxLnJlZikobnVsbCk7XG4gICAgbGV0IGFmdGVyUGFuZWxTZW50aW5lbCA9ICgwLCBpbXBvcnRfdnVlMjEucmVmKShudWxsKTtcbiAgICBsZXQgcGFuZWwgPSAoMCwgaW1wb3J0X3Z1ZTIxLnJlZikobnVsbCk7XG4gICAgbGV0IG93bmVyRG9jdW1lbnQgPSAoMCwgaW1wb3J0X3Z1ZTIxLmNvbXB1dGVkKSgoKSA9PiBnZXRPd25lckRvY3VtZW50KGludGVybmFsUG9wb3ZlclJlZikpO1xuICAgIGxldCBpc1BvcnRhbGxlZCA9ICgwLCBpbXBvcnRfdnVlMjEuY29tcHV0ZWQpKCgpID0+IHtcbiAgICAgIGlmICghZG9tKGJ1dHRvbikpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGlmICghZG9tKHBhbmVsKSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgZm9yIChsZXQgcm9vdCBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiYm9keSA+ICpcIikpIHtcbiAgICAgICAgaWYgKE51bWJlcihyb290ID09IG51bGwgPyB2b2lkIDAgOiByb290LmNvbnRhaW5zKGRvbShidXR0b24pKSkgXiBOdW1iZXIocm9vdCA9PSBudWxsID8gdm9pZCAwIDogcm9vdC5jb250YWlucyhkb20ocGFuZWwpKSkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuICAgIGxldCBhcGkgPSB7XG4gICAgICBwb3BvdmVyU3RhdGUsXG4gICAgICBidXR0b25JZCxcbiAgICAgIHBhbmVsSWQsXG4gICAgICBwYW5lbCxcbiAgICAgIGJ1dHRvbixcbiAgICAgIGlzUG9ydGFsbGVkLFxuICAgICAgYmVmb3JlUGFuZWxTZW50aW5lbCxcbiAgICAgIGFmdGVyUGFuZWxTZW50aW5lbCxcbiAgICAgIHRvZ2dsZVBvcG92ZXIoKSB7XG4gICAgICAgIHBvcG92ZXJTdGF0ZS52YWx1ZSA9IG1hdGNoKHBvcG92ZXJTdGF0ZS52YWx1ZSwge1xuICAgICAgICAgIFswIC8qIE9wZW4gKi9dOiAxIC8qIENsb3NlZCAqLyxcbiAgICAgICAgICBbMSAvKiBDbG9zZWQgKi9dOiAwIC8qIE9wZW4gKi9cbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgY2xvc2VQb3BvdmVyKCkge1xuICAgICAgICBpZiAocG9wb3ZlclN0YXRlLnZhbHVlID09PSAxIC8qIENsb3NlZCAqLylcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIHBvcG92ZXJTdGF0ZS52YWx1ZSA9IDEgLyogQ2xvc2VkICovO1xuICAgICAgfSxcbiAgICAgIGNsb3NlKGZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgYXBpLmNsb3NlUG9wb3ZlcigpO1xuICAgICAgICBsZXQgcmVzdG9yZUVsZW1lbnQgPSAoKCkgPT4ge1xuICAgICAgICAgIGlmICghZm9jdXNhYmxlRWxlbWVudClcbiAgICAgICAgICAgIHJldHVybiBkb20oYXBpLmJ1dHRvbik7XG4gICAgICAgICAgaWYgKGZvY3VzYWJsZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudClcbiAgICAgICAgICAgIHJldHVybiBmb2N1c2FibGVFbGVtZW50O1xuICAgICAgICAgIGlmIChmb2N1c2FibGVFbGVtZW50LnZhbHVlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpXG4gICAgICAgICAgICByZXR1cm4gZG9tKGZvY3VzYWJsZUVsZW1lbnQpO1xuICAgICAgICAgIHJldHVybiBkb20oYXBpLmJ1dHRvbik7XG4gICAgICAgIH0pKCk7XG4gICAgICAgIHJlc3RvcmVFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiByZXN0b3JlRWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH07XG4gICAgKDAsIGltcG9ydF92dWUyMS5wcm92aWRlKShQb3BvdmVyQ29udGV4dCwgYXBpKTtcbiAgICB1c2VPcGVuQ2xvc2VkUHJvdmlkZXIoKDAsIGltcG9ydF92dWUyMS5jb21wdXRlZCkoKCkgPT4gbWF0Y2gocG9wb3ZlclN0YXRlLnZhbHVlLCB7XG4gICAgICBbMCAvKiBPcGVuICovXTogMCAvKiBPcGVuICovLFxuICAgICAgWzEgLyogQ2xvc2VkICovXTogMSAvKiBDbG9zZWQgKi9cbiAgICB9KSkpO1xuICAgIGxldCByZWdpc3RlckJhZyA9IHtcbiAgICAgIGJ1dHRvbklkLFxuICAgICAgcGFuZWxJZCxcbiAgICAgIGNsb3NlKCkge1xuICAgICAgICBhcGkuY2xvc2VQb3BvdmVyKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBsZXQgZ3JvdXBDb250ZXh0ID0gdXNlUG9wb3Zlckdyb3VwQ29udGV4dCgpO1xuICAgIGxldCByZWdpc3RlclBvcG92ZXIgPSBncm91cENvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IGdyb3VwQ29udGV4dC5yZWdpc3RlclBvcG92ZXI7XG4gICAgZnVuY3Rpb24gaXNGb2N1c1dpdGhpblBvcG92ZXJHcm91cCgpIHtcbiAgICAgIHZhciBfYTIsIF9iLCBfYywgX2Q7XG4gICAgICByZXR1cm4gKF9kID0gZ3JvdXBDb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiBncm91cENvbnRleHQuaXNGb2N1c1dpdGhpblBvcG92ZXJHcm91cCgpKSAhPSBudWxsID8gX2QgOiAoKF9hMiA9IG93bmVyRG9jdW1lbnQudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYTIuYWN0aXZlRWxlbWVudCkgJiYgKCgoX2IgPSBkb20oYnV0dG9uKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmNvbnRhaW5zKG93bmVyRG9jdW1lbnQudmFsdWUuYWN0aXZlRWxlbWVudCkpIHx8ICgoX2MgPSBkb20ocGFuZWwpKSA9PSBudWxsID8gdm9pZCAwIDogX2MuY29udGFpbnMob3duZXJEb2N1bWVudC52YWx1ZS5hY3RpdmVFbGVtZW50KSkpO1xuICAgIH1cbiAgICAoMCwgaW1wb3J0X3Z1ZTIxLndhdGNoRWZmZWN0KSgoKSA9PiByZWdpc3RlclBvcG92ZXIgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZ2lzdGVyUG9wb3ZlcihyZWdpc3RlckJhZykpO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIoKF9hID0gb3duZXJEb2N1bWVudC52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmRlZmF1bHRWaWV3LCBcImZvY3VzXCIsIChldmVudCkgPT4ge1xuICAgICAgdmFyIF9hMiwgX2I7XG4gICAgICBpZiAocG9wb3ZlclN0YXRlLnZhbHVlICE9PSAwIC8qIE9wZW4gKi8pXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChpc0ZvY3VzV2l0aGluUG9wb3Zlckdyb3VwKCkpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICghYnV0dG9uKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoIXBhbmVsKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoKF9hMiA9IGRvbShhcGkuYmVmb3JlUGFuZWxTZW50aW5lbCkpID09IG51bGwgPyB2b2lkIDAgOiBfYTIuY29udGFpbnMoZXZlbnQudGFyZ2V0KSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKChfYiA9IGRvbShhcGkuYWZ0ZXJQYW5lbFNlbnRpbmVsKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGFwaS5jbG9zZVBvcG92ZXIoKTtcbiAgICB9LCB0cnVlKTtcbiAgICB1c2VPdXRzaWRlQ2xpY2soW2J1dHRvbiwgcGFuZWxdLCAoZXZlbnQsIHRhcmdldCkgPT4ge1xuICAgICAgdmFyIF9hMjtcbiAgICAgIGFwaS5jbG9zZVBvcG92ZXIoKTtcbiAgICAgIGlmICghaXNGb2N1c2FibGVFbGVtZW50KHRhcmdldCwgMSAvKiBMb29zZSAqLykpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgKF9hMiA9IGRvbShidXR0b24pKSA9PSBudWxsID8gdm9pZCAwIDogX2EyLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgKDAsIGltcG9ydF92dWUyMS5jb21wdXRlZCkoKCkgPT4gcG9wb3ZlclN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi8pKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHNsb3QgPSB7IG9wZW46IHBvcG92ZXJTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovLCBjbG9zZTogYXBpLmNsb3NlIH07XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgdGhlaXJQcm9wczogcHJvcHMsXG4gICAgICAgIG91clByb3BzOiB7IHJlZjogaW50ZXJuYWxQb3BvdmVyUmVmIH0sXG4gICAgICAgIHNsb3QsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBhdHRycyxcbiAgICAgICAgbmFtZTogXCJQb3BvdmVyXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIFBvcG92ZXJCdXR0b24gPSAoMCwgaW1wb3J0X3Z1ZTIxLmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIlBvcG92ZXJCdXR0b25cIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImJ1dHRvblwiIH0sXG4gICAgZGlzYWJsZWQ6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBmYWxzZSB9XG4gIH0sXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlUG9wb3ZlckNvbnRleHQoXCJQb3BvdmVyQnV0dG9uXCIpO1xuICAgIGxldCBvd25lckRvY3VtZW50ID0gKDAsIGltcG9ydF92dWUyMS5jb21wdXRlZCkoKCkgPT4gZ2V0T3duZXJEb2N1bWVudChhcGkuYnV0dG9uKSk7XG4gICAgZXhwb3NlKHsgZWw6IGFwaS5idXR0b24sICRlbDogYXBpLmJ1dHRvbiB9KTtcbiAgICBsZXQgZ3JvdXBDb250ZXh0ID0gdXNlUG9wb3Zlckdyb3VwQ29udGV4dCgpO1xuICAgIGxldCBjbG9zZU90aGVycyA9IGdyb3VwQ29udGV4dCA9PSBudWxsID8gdm9pZCAwIDogZ3JvdXBDb250ZXh0LmNsb3NlT3RoZXJzO1xuICAgIGxldCBwYW5lbENvbnRleHQgPSB1c2VQb3BvdmVyUGFuZWxDb250ZXh0KCk7XG4gICAgbGV0IGlzV2l0aGluUGFuZWwgPSBwYW5lbENvbnRleHQgPT09IG51bGwgPyBmYWxzZSA6IHBhbmVsQ29udGV4dCA9PT0gYXBpLnBhbmVsSWQ7XG4gICAgbGV0IGVsZW1lbnRSZWYgPSAoMCwgaW1wb3J0X3Z1ZTIxLnJlZikobnVsbCk7XG4gICAgbGV0IHNlbnRpbmVsSWQgPSBgaGVhZGxlc3N1aS1mb2N1cy1zZW50aW5lbC0ke3VzZUlkKCl9YDtcbiAgICBpZiAoIWlzV2l0aGluUGFuZWwpIHtcbiAgICAgICgwLCBpbXBvcnRfdnVlMjEud2F0Y2hFZmZlY3QpKCgpID0+IHtcbiAgICAgICAgYXBpLmJ1dHRvbi52YWx1ZSA9IGVsZW1lbnRSZWYudmFsdWU7XG4gICAgICB9KTtcbiAgICB9XG4gICAgbGV0IHR5cGUgPSB1c2VSZXNvbHZlQnV0dG9uVHlwZSgoMCwgaW1wb3J0X3Z1ZTIxLmNvbXB1dGVkKSgoKSA9PiAoeyBhczogcHJvcHMuYXMsIHR5cGU6IGF0dHJzLnR5cGUgfSkpLCBlbGVtZW50UmVmKTtcbiAgICBmdW5jdGlvbiBoYW5kbGVLZXlEb3duKGV2ZW50KSB7XG4gICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lO1xuICAgICAgaWYgKGlzV2l0aGluUGFuZWwpIHtcbiAgICAgICAgaWYgKGFwaS5wb3BvdmVyU3RhdGUudmFsdWUgPT09IDEgLyogQ2xvc2VkICovKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICBjYXNlIFwiIFwiIC8qIFNwYWNlICovOlxuICAgICAgICAgIGNhc2UgXCJFbnRlclwiIC8qIEVudGVyICovOlxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIChfYiA9IChfYSA9IGV2ZW50LnRhcmdldCkuY2xpY2spID09IG51bGwgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTtcbiAgICAgICAgICAgIGFwaS5jbG9zZVBvcG92ZXIoKTtcbiAgICAgICAgICAgIChfYyA9IGRvbShhcGkuYnV0dG9uKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9jLmZvY3VzKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICBjYXNlIFwiIFwiIC8qIFNwYWNlICovOlxuICAgICAgICAgIGNhc2UgXCJFbnRlclwiIC8qIEVudGVyICovOlxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgaWYgKGFwaS5wb3BvdmVyU3RhdGUudmFsdWUgPT09IDEgLyogQ2xvc2VkICovKVxuICAgICAgICAgICAgICBjbG9zZU90aGVycyA9PSBudWxsID8gdm9pZCAwIDogY2xvc2VPdGhlcnMoYXBpLmJ1dHRvbklkKTtcbiAgICAgICAgICAgIGFwaS50b2dnbGVQb3BvdmVyKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiRXNjYXBlXCIgLyogRXNjYXBlICovOlxuICAgICAgICAgICAgaWYgKGFwaS5wb3BvdmVyU3RhdGUudmFsdWUgIT09IDAgLyogT3BlbiAqLylcbiAgICAgICAgICAgICAgcmV0dXJuIGNsb3NlT3RoZXJzID09IG51bGwgPyB2b2lkIDAgOiBjbG9zZU90aGVycyhhcGkuYnV0dG9uSWQpO1xuICAgICAgICAgICAgaWYgKCFkb20oYXBpLmJ1dHRvbikpXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGlmICgoKF9kID0gb3duZXJEb2N1bWVudC52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9kLmFjdGl2ZUVsZW1lbnQpICYmICEoKF9lID0gZG9tKGFwaS5idXR0b24pKSA9PSBudWxsID8gdm9pZCAwIDogX2UuY29udGFpbnMob3duZXJEb2N1bWVudC52YWx1ZS5hY3RpdmVFbGVtZW50KSkpXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGFwaS5jbG9zZVBvcG92ZXIoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUtleVVwKGV2ZW50KSB7XG4gICAgICBpZiAoaXNXaXRoaW5QYW5lbClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCIgXCIgLyogU3BhY2UgKi8pIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZlbnQpIHtcbiAgICAgIHZhciBfYSwgX2I7XG4gICAgICBpZiAocHJvcHMuZGlzYWJsZWQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChpc1dpdGhpblBhbmVsKSB7XG4gICAgICAgIGFwaS5jbG9zZVBvcG92ZXIoKTtcbiAgICAgICAgKF9hID0gZG9tKGFwaS5idXR0b24pKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAoYXBpLnBvcG92ZXJTdGF0ZS52YWx1ZSA9PT0gMSAvKiBDbG9zZWQgKi8pXG4gICAgICAgICAgY2xvc2VPdGhlcnMgPT0gbnVsbCA/IHZvaWQgMCA6IGNsb3NlT3RoZXJzKGFwaS5idXR0b25JZCk7XG4gICAgICAgIGFwaS50b2dnbGVQb3BvdmVyKCk7XG4gICAgICAgIChfYiA9IGRvbShhcGkuYnV0dG9uKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlRG93bihldmVudCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHZpc2libGUgPSBhcGkucG9wb3ZlclN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi87XG4gICAgICBsZXQgc2xvdCA9IHsgb3BlbjogdmlzaWJsZSB9O1xuICAgICAgbGV0IG91clByb3BzID0gaXNXaXRoaW5QYW5lbCA/IHtcbiAgICAgICAgcmVmOiBlbGVtZW50UmVmLFxuICAgICAgICB0eXBlOiB0eXBlLnZhbHVlLFxuICAgICAgICBvbktleWRvd246IGhhbmRsZUtleURvd24sXG4gICAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrXG4gICAgICB9IDoge1xuICAgICAgICByZWY6IGVsZW1lbnRSZWYsXG4gICAgICAgIGlkOiBhcGkuYnV0dG9uSWQsXG4gICAgICAgIHR5cGU6IHR5cGUudmFsdWUsXG4gICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBwcm9wcy5kaXNhYmxlZCA/IHZvaWQgMCA6IGFwaS5wb3BvdmVyU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyxcbiAgICAgICAgXCJhcmlhLWNvbnRyb2xzXCI6IGRvbShhcGkucGFuZWwpID8gYXBpLnBhbmVsSWQgOiB2b2lkIDAsXG4gICAgICAgIGRpc2FibGVkOiBwcm9wcy5kaXNhYmxlZCA/IHRydWUgOiB2b2lkIDAsXG4gICAgICAgIG9uS2V5ZG93bjogaGFuZGxlS2V5RG93bixcbiAgICAgICAgb25LZXl1cDogaGFuZGxlS2V5VXAsXG4gICAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLFxuICAgICAgICBvbk1vdXNlZG93bjogaGFuZGxlTW91c2VEb3duXG4gICAgICB9O1xuICAgICAgbGV0IGRpcmVjdGlvbiA9IHVzZVRhYkRpcmVjdGlvbigpO1xuICAgICAgZnVuY3Rpb24gaGFuZGxlRm9jdXMoKSB7XG4gICAgICAgIGxldCBlbCA9IGRvbShhcGkucGFuZWwpO1xuICAgICAgICBpZiAoIWVsKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgZnVuY3Rpb24gcnVuKCkge1xuICAgICAgICAgIG1hdGNoKGRpcmVjdGlvbi52YWx1ZSwge1xuICAgICAgICAgICAgWzAgLyogRm9yd2FyZHMgKi9dOiAoKSA9PiBmb2N1c0luKGVsLCAxIC8qIEZpcnN0ICovKSxcbiAgICAgICAgICAgIFsxIC8qIEJhY2t3YXJkcyAqL106ICgpID0+IGZvY3VzSW4oZWwsIDggLyogTGFzdCAqLylcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgICBtaWNyb1Rhc2socnVuKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBydW4oKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuICgwLCBpbXBvcnRfdnVlMjEuaCkoaW1wb3J0X3Z1ZTIxLkZyYWdtZW50LCBbXG4gICAgICAgIHJlbmRlcih7XG4gICAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgICAgdGhlaXJQcm9wczogeyAuLi5hdHRycywgLi4ucHJvcHMgfSxcbiAgICAgICAgICBzbG90LFxuICAgICAgICAgIGF0dHJzLFxuICAgICAgICAgIHNsb3RzLFxuICAgICAgICAgIG5hbWU6IFwiUG9wb3ZlckJ1dHRvblwiXG4gICAgICAgIH0pLFxuICAgICAgICB2aXNpYmxlICYmICFpc1dpdGhpblBhbmVsICYmIGFwaS5pc1BvcnRhbGxlZC52YWx1ZSAmJiAoMCwgaW1wb3J0X3Z1ZTIxLmgpKEhpZGRlbiwge1xuICAgICAgICAgIGlkOiBzZW50aW5lbElkLFxuICAgICAgICAgIGZlYXR1cmVzOiAyIC8qIEZvY3VzYWJsZSAqLyxcbiAgICAgICAgICBhczogXCJidXR0b25cIixcbiAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgIG9uRm9jdXM6IGhhbmRsZUZvY3VzXG4gICAgICAgIH0pXG4gICAgICBdKTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBQb3BvdmVyT3ZlcmxheSA9ICgwLCBpbXBvcnRfdnVlMjEuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiUG9wb3Zlck92ZXJsYXlcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH0sXG4gICAgc3RhdGljOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgdW5tb3VudDogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiB0cnVlIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgYXR0cnMsIHNsb3RzIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlUG9wb3ZlckNvbnRleHQoXCJQb3BvdmVyT3ZlcmxheVwiKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktcG9wb3Zlci1vdmVybGF5LSR7dXNlSWQoKX1gO1xuICAgIGxldCB1c2VzT3BlbkNsb3NlZFN0YXRlID0gdXNlT3BlbkNsb3NlZCgpO1xuICAgIGxldCB2aXNpYmxlID0gKDAsIGltcG9ydF92dWUyMS5jb21wdXRlZCkoKCkgPT4ge1xuICAgICAgaWYgKHVzZXNPcGVuQ2xvc2VkU3RhdGUgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHVzZXNPcGVuQ2xvc2VkU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLztcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcGkucG9wb3ZlclN0YXRlLnZhbHVlID09PSAwIC8qIE9wZW4gKi87XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soKSB7XG4gICAgICBhcGkuY2xvc2VQb3BvdmVyKCk7XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgc2xvdCA9IHsgb3BlbjogYXBpLnBvcG92ZXJTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSxcbiAgICAgICAgb25DbGljazogaGFuZGxlQ2xpY2tcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHM6IHByb3BzLFxuICAgICAgICBzbG90LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIGZlYXR1cmVzOiAxIC8qIFJlbmRlclN0cmF0ZWd5ICovIHwgMiAvKiBTdGF0aWMgKi8sXG4gICAgICAgIHZpc2libGU6IHZpc2libGUudmFsdWUsXG4gICAgICAgIG5hbWU6IFwiUG9wb3Zlck92ZXJsYXlcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgUG9wb3ZlclBhbmVsID0gKDAsIGltcG9ydF92dWUyMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJQb3BvdmVyUGFuZWxcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH0sXG4gICAgc3RhdGljOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgdW5tb3VudDogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiB0cnVlIH0sXG4gICAgZm9jdXM6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfVxuICB9LFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IHsgZm9jdXMgfSA9IHByb3BzO1xuICAgIGxldCBhcGkgPSB1c2VQb3BvdmVyQ29udGV4dChcIlBvcG92ZXJQYW5lbFwiKTtcbiAgICBsZXQgb3duZXJEb2N1bWVudCA9ICgwLCBpbXBvcnRfdnVlMjEuY29tcHV0ZWQpKCgpID0+IGdldE93bmVyRG9jdW1lbnQoYXBpLnBhbmVsKSk7XG4gICAgbGV0IGJlZm9yZVBhbmVsU2VudGluZWxJZCA9IGBoZWFkbGVzc3VpLWZvY3VzLXNlbnRpbmVsLWJlZm9yZS0ke3VzZUlkKCl9YDtcbiAgICBsZXQgYWZ0ZXJQYW5lbFNlbnRpbmVsSWQgPSBgaGVhZGxlc3N1aS1mb2N1cy1zZW50aW5lbC1hZnRlci0ke3VzZUlkKCl9YDtcbiAgICBleHBvc2UoeyBlbDogYXBpLnBhbmVsLCAkZWw6IGFwaS5wYW5lbCB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTIxLnByb3ZpZGUpKFBvcG92ZXJQYW5lbENvbnRleHQsIGFwaS5wYW5lbElkKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTIxLndhdGNoRWZmZWN0KSgoKSA9PiB7XG4gICAgICB2YXIgX2EsIF9iO1xuICAgICAgaWYgKCFmb2N1cylcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGFwaS5wb3BvdmVyU3RhdGUudmFsdWUgIT09IDAgLyogT3BlbiAqLylcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKCFhcGkucGFuZWwpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGxldCBhY3RpdmVFbGVtZW50ID0gKF9hID0gb3duZXJEb2N1bWVudC52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmFjdGl2ZUVsZW1lbnQ7XG4gICAgICBpZiAoKF9iID0gZG9tKGFwaS5wYW5lbCkpID09IG51bGwgPyB2b2lkIDAgOiBfYi5jb250YWlucyhhY3RpdmVFbGVtZW50KSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgZm9jdXNJbihkb20oYXBpLnBhbmVsKSwgMSAvKiBGaXJzdCAqLyk7XG4gICAgfSk7XG4gICAgbGV0IHVzZXNPcGVuQ2xvc2VkU3RhdGUgPSB1c2VPcGVuQ2xvc2VkKCk7XG4gICAgbGV0IHZpc2libGUgPSAoMCwgaW1wb3J0X3Z1ZTIxLmNvbXB1dGVkKSgoKSA9PiB7XG4gICAgICBpZiAodXNlc09wZW5DbG9zZWRTdGF0ZSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdXNlc09wZW5DbG9zZWRTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFwaS5wb3BvdmVyU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLztcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBoYW5kbGVLZXlEb3duKGV2ZW50KSB7XG4gICAgICB2YXIgX2EsIF9iO1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSBcIkVzY2FwZVwiIC8qIEVzY2FwZSAqLzpcbiAgICAgICAgICBpZiAoYXBpLnBvcG92ZXJTdGF0ZS52YWx1ZSAhPT0gMCAvKiBPcGVuICovKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIGlmICghZG9tKGFwaS5wYW5lbCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgaWYgKG93bmVyRG9jdW1lbnQudmFsdWUgJiYgISgoX2EgPSBkb20oYXBpLnBhbmVsKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNvbnRhaW5zKG93bmVyRG9jdW1lbnQudmFsdWUuYWN0aXZlRWxlbWVudCkpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgYXBpLmNsb3NlUG9wb3ZlcigpO1xuICAgICAgICAgIChfYiA9IGRvbShhcGkuYnV0dG9uKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmZvY3VzKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUJsdXIoZXZlbnQpIHtcbiAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2U7XG4gICAgICBsZXQgZWwgPSBldmVudC5yZWxhdGVkVGFyZ2V0O1xuICAgICAgaWYgKCFlbClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKCFkb20oYXBpLnBhbmVsKSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKChfYSA9IGRvbShhcGkucGFuZWwpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuY29udGFpbnMoZWwpKVxuICAgICAgICByZXR1cm47XG4gICAgICBhcGkuY2xvc2VQb3BvdmVyKCk7XG4gICAgICBpZiAoKChfYyA9IChfYiA9IGRvbShhcGkuYmVmb3JlUGFuZWxTZW50aW5lbCkpID09IG51bGwgPyB2b2lkIDAgOiBfYi5jb250YWlucykgPT0gbnVsbCA/IHZvaWQgMCA6IF9jLmNhbGwoX2IsIGVsKSkgfHwgKChfZSA9IChfZCA9IGRvbShhcGkuYWZ0ZXJQYW5lbFNlbnRpbmVsKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9kLmNvbnRhaW5zKSA9PSBudWxsID8gdm9pZCAwIDogX2UuY2FsbChfZCwgZWwpKSkge1xuICAgICAgICBlbC5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBkaXJlY3Rpb24gPSB1c2VUYWJEaXJlY3Rpb24oKTtcbiAgICBmdW5jdGlvbiBoYW5kbGVCZWZvcmVGb2N1cygpIHtcbiAgICAgIGxldCBlbCA9IGRvbShhcGkucGFuZWwpO1xuICAgICAgaWYgKCFlbClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgZnVuY3Rpb24gcnVuKCkge1xuICAgICAgICBtYXRjaChkaXJlY3Rpb24udmFsdWUsIHtcbiAgICAgICAgICBbMCAvKiBGb3J3YXJkcyAqL106ICgpID0+IHtcbiAgICAgICAgICAgIGZvY3VzSW4oZWwsIDQgLyogTmV4dCAqLyk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbMSAvKiBCYWNrd2FyZHMgKi9dOiAoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAoX2EgPSBkb20oYXBpLmJ1dHRvbikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICBtaWNyb1Rhc2socnVuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJ1bigpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVBZnRlckZvY3VzKCkge1xuICAgICAgbGV0IGVsID0gZG9tKGFwaS5wYW5lbCk7XG4gICAgICBpZiAoIWVsKVxuICAgICAgICByZXR1cm47XG4gICAgICBmdW5jdGlvbiBydW4oKSB7XG4gICAgICAgIG1hdGNoKGRpcmVjdGlvbi52YWx1ZSwge1xuICAgICAgICAgIFswIC8qIEZvcndhcmRzICovXTogKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGxldCBidXR0b24gPSBkb20oYXBpLmJ1dHRvbik7XG4gICAgICAgICAgICBsZXQgcGFuZWwgPSBkb20oYXBpLnBhbmVsKTtcbiAgICAgICAgICAgIGlmICghYnV0dG9uKVxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBsZXQgZWxlbWVudHMgPSBnZXRGb2N1c2FibGVFbGVtZW50cygpO1xuICAgICAgICAgICAgbGV0IGlkeCA9IGVsZW1lbnRzLmluZGV4T2YoYnV0dG9uKTtcbiAgICAgICAgICAgIGxldCBiZWZvcmUgPSBlbGVtZW50cy5zbGljZSgwLCBpZHggKyAxKTtcbiAgICAgICAgICAgIGxldCBhZnRlciA9IGVsZW1lbnRzLnNsaWNlKGlkeCArIDEpO1xuICAgICAgICAgICAgbGV0IGNvbWJpbmVkID0gWy4uLmFmdGVyLCAuLi5iZWZvcmVdO1xuICAgICAgICAgICAgZm9yIChsZXQgZWxlbWVudCBvZiBjb21iaW5lZC5zbGljZSgpKSB7XG4gICAgICAgICAgICAgIGlmICgoKF9iID0gKF9hID0gZWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogZWxlbWVudC5pZCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnN0YXJ0c1dpdGgpID09IG51bGwgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCBcImhlYWRsZXNzdWktZm9jdXMtc2VudGluZWwtXCIpKSB8fCAocGFuZWwgPT0gbnVsbCA/IHZvaWQgMCA6IHBhbmVsLmNvbnRhaW5zKGVsZW1lbnQpKSkge1xuICAgICAgICAgICAgICAgIGxldCBpZHgyID0gY29tYmluZWQuaW5kZXhPZihlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoaWR4MiAhPT0gLTEpXG4gICAgICAgICAgICAgICAgICBjb21iaW5lZC5zcGxpY2UoaWR4MiwgMSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvY3VzSW4oY29tYmluZWQsIDEgLyogRmlyc3QgKi8sIGZhbHNlKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIFsxIC8qIEJhY2t3YXJkcyAqL106ICgpID0+IGZvY3VzSW4oZWwsIDIgLyogUHJldmlvdXMgKi8pXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgIG1pY3JvVGFzayhydW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcnVuKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgc2xvdCA9IHtcbiAgICAgICAgb3BlbjogYXBpLnBvcG92ZXJTdGF0ZS52YWx1ZSA9PT0gMCAvKiBPcGVuICovLFxuICAgICAgICBjbG9zZTogYXBpLmNsb3NlXG4gICAgICB9O1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICByZWY6IGFwaS5wYW5lbCxcbiAgICAgICAgaWQ6IGFwaS5wYW5lbElkLFxuICAgICAgICBvbktleWRvd246IGhhbmRsZUtleURvd24sXG4gICAgICAgIG9uRm9jdXNvdXQ6IGZvY3VzICYmIGFwaS5wb3BvdmVyU3RhdGUudmFsdWUgPT09IDAgLyogT3BlbiAqLyA/IGhhbmRsZUJsdXIgOiB2b2lkIDAsXG4gICAgICAgIHRhYkluZGV4OiAtMVxuICAgICAgfTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wczogeyAuLi5hdHRycywgLi4ucHJvcHMgfSxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIHNsb3RzOiB7XG4gICAgICAgICAgLi4uc2xvdHMsXG4gICAgICAgICAgZGVmYXVsdDogKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICgwLCBpbXBvcnRfdnVlMjEuaCkoaW1wb3J0X3Z1ZTIxLkZyYWdtZW50LCBbXG4gICAgICAgICAgICAgICAgdmlzaWJsZS52YWx1ZSAmJiBhcGkuaXNQb3J0YWxsZWQudmFsdWUgJiYgKDAsIGltcG9ydF92dWUyMS5oKShIaWRkZW4sIHtcbiAgICAgICAgICAgICAgICAgIGlkOiBiZWZvcmVQYW5lbFNlbnRpbmVsSWQsXG4gICAgICAgICAgICAgICAgICByZWY6IGFwaS5iZWZvcmVQYW5lbFNlbnRpbmVsLFxuICAgICAgICAgICAgICAgICAgZmVhdHVyZXM6IDIgLyogRm9jdXNhYmxlICovLFxuICAgICAgICAgICAgICAgICAgYXM6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgb25Gb2N1czogaGFuZGxlQmVmb3JlRm9jdXNcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAoX2EgPSBzbG90cy5kZWZhdWx0KSA9PSBudWxsID8gdm9pZCAwIDogX2EuY2FsbChzbG90cywgLi4uYXJncyksXG4gICAgICAgICAgICAgICAgdmlzaWJsZS52YWx1ZSAmJiBhcGkuaXNQb3J0YWxsZWQudmFsdWUgJiYgKDAsIGltcG9ydF92dWUyMS5oKShIaWRkZW4sIHtcbiAgICAgICAgICAgICAgICAgIGlkOiBhZnRlclBhbmVsU2VudGluZWxJZCxcbiAgICAgICAgICAgICAgICAgIHJlZjogYXBpLmFmdGVyUGFuZWxTZW50aW5lbCxcbiAgICAgICAgICAgICAgICAgIGZlYXR1cmVzOiAyIC8qIEZvY3VzYWJsZSAqLyxcbiAgICAgICAgICAgICAgICAgIGFzOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgIG9uRm9jdXM6IGhhbmRsZUFmdGVyRm9jdXNcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGZlYXR1cmVzOiAxIC8qIFJlbmRlclN0cmF0ZWd5ICovIHwgMiAvKiBTdGF0aWMgKi8sXG4gICAgICAgIHZpc2libGU6IHZpc2libGUudmFsdWUsXG4gICAgICAgIG5hbWU6IFwiUG9wb3ZlclBhbmVsXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIFBvcG92ZXJHcm91cCA9ICgwLCBpbXBvcnRfdnVlMjEuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiUG9wb3Zlckdyb3VwXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgZ3JvdXBSZWYgPSAoMCwgaW1wb3J0X3Z1ZTIxLnJlZikobnVsbCk7XG4gICAgbGV0IHBvcG92ZXJzID0gKDAsIGltcG9ydF92dWUyMS5yZWYpKFtdKTtcbiAgICBsZXQgb3duZXJEb2N1bWVudCA9ICgwLCBpbXBvcnRfdnVlMjEuY29tcHV0ZWQpKCgpID0+IGdldE93bmVyRG9jdW1lbnQoZ3JvdXBSZWYpKTtcbiAgICBleHBvc2UoeyBlbDogZ3JvdXBSZWYsICRlbDogZ3JvdXBSZWYgfSk7XG4gICAgZnVuY3Rpb24gdW5yZWdpc3RlclBvcG92ZXIocmVnaXN0ZXJCYWcpIHtcbiAgICAgIGxldCBpZHggPSBwb3BvdmVycy52YWx1ZS5pbmRleE9mKHJlZ2lzdGVyQmFnKTtcbiAgICAgIGlmIChpZHggIT09IC0xKVxuICAgICAgICBwb3BvdmVycy52YWx1ZS5zcGxpY2UoaWR4LCAxKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVnaXN0ZXJQb3BvdmVyKHJlZ2lzdGVyQmFnKSB7XG4gICAgICBwb3BvdmVycy52YWx1ZS5wdXNoKHJlZ2lzdGVyQmFnKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHVucmVnaXN0ZXJQb3BvdmVyKHJlZ2lzdGVyQmFnKTtcbiAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzRm9jdXNXaXRoaW5Qb3BvdmVyR3JvdXAoKSB7XG4gICAgICB2YXIgX2E7XG4gICAgICBsZXQgb3duZXIgPSBvd25lckRvY3VtZW50LnZhbHVlO1xuICAgICAgaWYgKCFvd25lcilcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgbGV0IGVsZW1lbnQgPSBvd25lci5hY3RpdmVFbGVtZW50O1xuICAgICAgaWYgKChfYSA9IGRvbShncm91cFJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jb250YWlucyhlbGVtZW50KSlcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICByZXR1cm4gcG9wb3ZlcnMudmFsdWUuc29tZSgoYmFnKSA9PiB7XG4gICAgICAgIHZhciBfYTIsIF9iO1xuICAgICAgICByZXR1cm4gKChfYTIgPSBvd25lci5nZXRFbGVtZW50QnlJZChiYWcuYnV0dG9uSWQpKSA9PSBudWxsID8gdm9pZCAwIDogX2EyLmNvbnRhaW5zKGVsZW1lbnQpKSB8fCAoKF9iID0gb3duZXIuZ2V0RWxlbWVudEJ5SWQoYmFnLnBhbmVsSWQpKSA9PSBudWxsID8gdm9pZCAwIDogX2IuY29udGFpbnMoZWxlbWVudCkpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNsb3NlT3RoZXJzKGJ1dHRvbklkKSB7XG4gICAgICBmb3IgKGxldCBwb3BvdmVyIG9mIHBvcG92ZXJzLnZhbHVlKSB7XG4gICAgICAgIGlmIChwb3BvdmVyLmJ1dHRvbklkICE9PSBidXR0b25JZClcbiAgICAgICAgICBwb3BvdmVyLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfVxuICAgICgwLCBpbXBvcnRfdnVlMjEucHJvdmlkZSkoUG9wb3Zlckdyb3VwQ29udGV4dCwge1xuICAgICAgcmVnaXN0ZXJQb3BvdmVyLFxuICAgICAgdW5yZWdpc3RlclBvcG92ZXIsXG4gICAgICBpc0ZvY3VzV2l0aGluUG9wb3Zlckdyb3VwLFxuICAgICAgY2xvc2VPdGhlcnNcbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IG91clByb3BzID0geyByZWY6IGdyb3VwUmVmIH07XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHM6IHByb3BzLFxuICAgICAgICBzbG90OiB7fSxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIlBvcG92ZXJHcm91cFwiXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gc3JjL2NvbXBvbmVudHMvcmFkaW8tZ3JvdXAvcmFkaW8tZ3JvdXAudHNcbnZhciBpbXBvcnRfdnVlMjMgPSByZXF1aXJlKFwidnVlXCIpO1xuXG4vLyBzcmMvY29tcG9uZW50cy9sYWJlbC9sYWJlbC50c1xudmFyIGltcG9ydF92dWUyMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgTGFiZWxDb250ZXh0ID0gU3ltYm9sKFwiTGFiZWxDb250ZXh0XCIpO1xuZnVuY3Rpb24gdXNlTGFiZWxDb250ZXh0KCkge1xuICBsZXQgY29udGV4dCA9ICgwLCBpbXBvcnRfdnVlMjIuaW5qZWN0KShMYWJlbENvbnRleHQsIG51bGwpO1xuICBpZiAoY29udGV4dCA9PT0gbnVsbCkge1xuICAgIGxldCBlcnIgPSBuZXcgRXJyb3IoXCJZb3UgdXNlZCBhIDxMYWJlbCAvPiBjb21wb25lbnQsIGJ1dCBpdCBpcyBub3QgaW5zaWRlIGEgcGFyZW50LlwiKTtcbiAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpXG4gICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnIsIHVzZUxhYmVsQ29udGV4dCk7XG4gICAgdGhyb3cgZXJyO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuZnVuY3Rpb24gdXNlTGFiZWxzKHtcbiAgc2xvdCA9IHt9LFxuICBuYW1lID0gXCJMYWJlbFwiLFxuICBwcm9wcyA9IHt9XG59ID0ge30pIHtcbiAgbGV0IGxhYmVsSWRzID0gKDAsIGltcG9ydF92dWUyMi5yZWYpKFtdKTtcbiAgZnVuY3Rpb24gcmVnaXN0ZXIodmFsdWUpIHtcbiAgICBsYWJlbElkcy52YWx1ZS5wdXNoKHZhbHVlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IGlkeCA9IGxhYmVsSWRzLnZhbHVlLmluZGV4T2YodmFsdWUpO1xuICAgICAgaWYgKGlkeCA9PT0gLTEpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGxhYmVsSWRzLnZhbHVlLnNwbGljZShpZHgsIDEpO1xuICAgIH07XG4gIH1cbiAgKDAsIGltcG9ydF92dWUyMi5wcm92aWRlKShMYWJlbENvbnRleHQsIHsgcmVnaXN0ZXIsIHNsb3QsIG5hbWUsIHByb3BzIH0pO1xuICByZXR1cm4gKDAsIGltcG9ydF92dWUyMi5jb21wdXRlZCkoKCkgPT4gbGFiZWxJZHMudmFsdWUubGVuZ3RoID4gMCA/IGxhYmVsSWRzLnZhbHVlLmpvaW4oXCIgXCIpIDogdm9pZCAwKTtcbn1cbnZhciBMYWJlbCA9ICgwLCBpbXBvcnRfdnVlMjIuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiTGFiZWxcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImxhYmVsXCIgfSxcbiAgICBwYXNzaXZlOiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogZmFsc2UgfVxuICB9LFxuICBzZXR1cChteVByb3BzLCB7IHNsb3RzLCBhdHRycyB9KSB7XG4gICAgbGV0IGNvbnRleHQgPSB1c2VMYWJlbENvbnRleHQoKTtcbiAgICBsZXQgaWQyID0gYGhlYWRsZXNzdWktbGFiZWwtJHt1c2VJZCgpfWA7XG4gICAgKDAsIGltcG9ydF92dWUyMi5vbk1vdW50ZWQpKCgpID0+ICgwLCBpbXBvcnRfdnVlMjIub25Vbm1vdW50ZWQpKGNvbnRleHQucmVnaXN0ZXIoaWQyKSkpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgeyBuYW1lID0gXCJMYWJlbFwiLCBzbG90ID0ge30sIHByb3BzID0ge30gfSA9IGNvbnRleHQ7XG4gICAgICBsZXQgeyBwYXNzaXZlLCAuLi50aGVpclByb3BzIH0gPSBteVByb3BzO1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICAuLi5PYmplY3QuZW50cmllcyhwcm9wcykucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4gT2JqZWN0LmFzc2lnbihhY2MsIHsgW2tleV06ICgwLCBpbXBvcnRfdnVlMjIudW5yZWYpKHZhbHVlKSB9KSwge30pLFxuICAgICAgICBpZDogaWQyXG4gICAgICB9O1xuICAgICAgaWYgKHBhc3NpdmUpIHtcbiAgICAgICAgZGVsZXRlIG91clByb3BzW1wib25DbGlja1wiXTtcbiAgICAgICAgZGVsZXRlIHRoZWlyUHJvcHNbXCJvbkNsaWNrXCJdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlbmRlcih7XG4gICAgICAgIG91clByb3BzLFxuICAgICAgICB0aGVpclByb3BzLFxuICAgICAgICBzbG90LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWVcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBzcmMvY29tcG9uZW50cy9yYWRpby1ncm91cC9yYWRpby1ncm91cC50c1xudmFyIFJhZGlvR3JvdXBDb250ZXh0ID0gU3ltYm9sKFwiUmFkaW9Hcm91cENvbnRleHRcIik7XG5mdW5jdGlvbiB1c2VSYWRpb0dyb3VwQ29udGV4dChjb21wb25lbnQpIHtcbiAgbGV0IGNvbnRleHQgPSAoMCwgaW1wb3J0X3Z1ZTIzLmluamVjdCkoUmFkaW9Hcm91cENvbnRleHQsIG51bGwpO1xuICBpZiAoY29udGV4dCA9PT0gbnVsbCkge1xuICAgIGxldCBlcnIgPSBuZXcgRXJyb3IoYDwke2NvbXBvbmVudH0gLz4gaXMgbWlzc2luZyBhIHBhcmVudCA8UmFkaW9Hcm91cCAvPiBjb21wb25lbnQuYCk7XG4gICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKVxuICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyLCB1c2VSYWRpb0dyb3VwQ29udGV4dCk7XG4gICAgdGhyb3cgZXJyO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxudmFyIFJhZGlvR3JvdXAgPSAoMCwgaW1wb3J0X3Z1ZTIzLmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIlJhZGlvR3JvdXBcIixcbiAgZW1pdHM6IHsgXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiOiAoX3ZhbHVlKSA9PiB0cnVlIH0sXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9LFxuICAgIGRpc2FibGVkOiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICBtb2RlbFZhbHVlOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZywgTnVtYmVyLCBCb29sZWFuXSB9LFxuICAgIG5hbWU6IHsgdHlwZTogU3RyaW5nLCBvcHRpb25hbDogdHJ1ZSB9XG4gIH0sXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHNldHVwKHByb3BzLCB7IGVtaXQsIGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgcmFkaW9Hcm91cFJlZiA9ICgwLCBpbXBvcnRfdnVlMjMucmVmKShudWxsKTtcbiAgICBsZXQgb3B0aW9ucyA9ICgwLCBpbXBvcnRfdnVlMjMucmVmKShbXSk7XG4gICAgbGV0IGxhYmVsbGVkYnkgPSB1c2VMYWJlbHMoeyBuYW1lOiBcIlJhZGlvR3JvdXBMYWJlbFwiIH0pO1xuICAgIGxldCBkZXNjcmliZWRieSA9IHVzZURlc2NyaXB0aW9ucyh7IG5hbWU6IFwiUmFkaW9Hcm91cERlc2NyaXB0aW9uXCIgfSk7XG4gICAgZXhwb3NlKHsgZWw6IHJhZGlvR3JvdXBSZWYsICRlbDogcmFkaW9Hcm91cFJlZiB9KTtcbiAgICBsZXQgdmFsdWUgPSAoMCwgaW1wb3J0X3Z1ZTIzLmNvbXB1dGVkKSgoKSA9PiBwcm9wcy5tb2RlbFZhbHVlKTtcbiAgICBsZXQgYXBpID0ge1xuICAgICAgb3B0aW9ucyxcbiAgICAgIHZhbHVlLFxuICAgICAgZGlzYWJsZWQ6ICgwLCBpbXBvcnRfdnVlMjMuY29tcHV0ZWQpKCgpID0+IHByb3BzLmRpc2FibGVkKSxcbiAgICAgIGZpcnN0T3B0aW9uOiAoMCwgaW1wb3J0X3Z1ZTIzLmNvbXB1dGVkKSgoKSA9PiBvcHRpb25zLnZhbHVlLmZpbmQoKG9wdGlvbikgPT4ge1xuICAgICAgICBpZiAob3B0aW9uLnByb3BzUmVmLmRpc2FibGVkKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KSksXG4gICAgICBjb250YWluc0NoZWNrZWRPcHRpb246ICgwLCBpbXBvcnRfdnVlMjMuY29tcHV0ZWQpKCgpID0+IG9wdGlvbnMudmFsdWUuc29tZSgob3B0aW9uKSA9PiBhcGkuY29tcGFyZSgoMCwgaW1wb3J0X3Z1ZTIzLnRvUmF3KShvcHRpb24ucHJvcHNSZWYudmFsdWUpLCAoMCwgaW1wb3J0X3Z1ZTIzLnRvUmF3KShwcm9wcy5tb2RlbFZhbHVlKSkpKSxcbiAgICAgIGNvbXBhcmUoYSwgeikge1xuICAgICAgICByZXR1cm4gYSA9PT0gejtcbiAgICAgIH0sXG4gICAgICBjaGFuZ2UobmV4dFZhbHVlKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKHByb3BzLmRpc2FibGVkKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKGFwaS5jb21wYXJlKCgwLCBpbXBvcnRfdnVlMjMudG9SYXcpKHZhbHVlLnZhbHVlKSwgKDAsIGltcG9ydF92dWUyMy50b1JhdykobmV4dFZhbHVlKSkpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBsZXQgbmV4dE9wdGlvbiA9IChfYSA9IG9wdGlvbnMudmFsdWUuZmluZCgob3B0aW9uKSA9PiBhcGkuY29tcGFyZSgoMCwgaW1wb3J0X3Z1ZTIzLnRvUmF3KShvcHRpb24ucHJvcHNSZWYudmFsdWUpLCAoMCwgaW1wb3J0X3Z1ZTIzLnRvUmF3KShuZXh0VmFsdWUpKSkpID09IG51bGwgPyB2b2lkIDAgOiBfYS5wcm9wc1JlZjtcbiAgICAgICAgaWYgKG5leHRPcHRpb24gPT0gbnVsbCA/IHZvaWQgMCA6IG5leHRPcHRpb24uZGlzYWJsZWQpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBlbWl0KFwidXBkYXRlOm1vZGVsVmFsdWVcIiwgbmV4dFZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9LFxuICAgICAgcmVnaXN0ZXJPcHRpb24oYWN0aW9uKSB7XG4gICAgICAgIG9wdGlvbnMudmFsdWUucHVzaChhY3Rpb24pO1xuICAgICAgICBvcHRpb25zLnZhbHVlID0gc29ydEJ5RG9tTm9kZShvcHRpb25zLnZhbHVlLCAob3B0aW9uKSA9PiBvcHRpb24uZWxlbWVudCk7XG4gICAgICB9LFxuICAgICAgdW5yZWdpc3Rlck9wdGlvbihpZDMpIHtcbiAgICAgICAgbGV0IGlkeCA9IG9wdGlvbnMudmFsdWUuZmluZEluZGV4KChyYWRpbykgPT4gcmFkaW8uaWQgPT09IGlkMyk7XG4gICAgICAgIGlmIChpZHggPT09IC0xKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgb3B0aW9ucy52YWx1ZS5zcGxpY2UoaWR4LCAxKTtcbiAgICAgIH1cbiAgICB9O1xuICAgICgwLCBpbXBvcnRfdnVlMjMucHJvdmlkZSkoUmFkaW9Hcm91cENvbnRleHQsIGFwaSk7XG4gICAgdXNlVHJlZVdhbGtlcih7XG4gICAgICBjb250YWluZXI6ICgwLCBpbXBvcnRfdnVlMjMuY29tcHV0ZWQpKCgpID0+IGRvbShyYWRpb0dyb3VwUmVmKSksXG4gICAgICBhY2NlcHQobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpID09PSBcInJhZGlvXCIpXG4gICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1JFSkVDVDtcbiAgICAgICAgaWYgKG5vZGUuaGFzQXR0cmlidXRlKFwicm9sZVwiKSlcbiAgICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfU0tJUDtcbiAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVDtcbiAgICAgIH0sXG4gICAgICB3YWxrKG5vZGUpIHtcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJyb2xlXCIsIFwibm9uZVwiKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBmdW5jdGlvbiBoYW5kbGVLZXlEb3duKGV2ZW50KSB7XG4gICAgICBpZiAoIXJhZGlvR3JvdXBSZWYudmFsdWUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICghcmFkaW9Hcm91cFJlZi52YWx1ZS5jb250YWlucyhldmVudC50YXJnZXQpKVxuICAgICAgICByZXR1cm47XG4gICAgICBsZXQgYWxsID0gb3B0aW9ucy52YWx1ZS5maWx0ZXIoKG9wdGlvbikgPT4gb3B0aW9uLnByb3BzUmVmLmRpc2FibGVkID09PSBmYWxzZSkubWFwKChyYWRpbykgPT4gcmFkaW8uZWxlbWVudCk7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlIFwiRW50ZXJcIiAvKiBFbnRlciAqLzpcbiAgICAgICAgICBhdHRlbXB0U3VibWl0KGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiQXJyb3dMZWZ0XCIgLyogQXJyb3dMZWZ0ICovOlxuICAgICAgICBjYXNlIFwiQXJyb3dVcFwiIC8qIEFycm93VXAgKi86XG4gICAgICAgICAge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGZvY3VzSW4oYWxsLCAyIC8qIFByZXZpb3VzICovIHwgMTYgLyogV3JhcEFyb3VuZCAqLyk7XG4gICAgICAgICAgICBpZiAocmVzdWx0ID09PSAyIC8qIFN1Y2Nlc3MgKi8pIHtcbiAgICAgICAgICAgICAgbGV0IGFjdGl2ZU9wdGlvbiA9IG9wdGlvbnMudmFsdWUuZmluZCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb24uZWxlbWVudCA9PT0gKChfYSA9IGdldE93bmVyRG9jdW1lbnQocmFkaW9Hcm91cFJlZikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5hY3RpdmVFbGVtZW50KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGlmIChhY3RpdmVPcHRpb24pXG4gICAgICAgICAgICAgICAgYXBpLmNoYW5nZShhY3RpdmVPcHRpb24ucHJvcHNSZWYudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkFycm93UmlnaHRcIiAvKiBBcnJvd1JpZ2h0ICovOlxuICAgICAgICBjYXNlIFwiQXJyb3dEb3duXCIgLyogQXJyb3dEb3duICovOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBmb2N1c0luKGFsbCwgNCAvKiBOZXh0ICovIHwgMTYgLyogV3JhcEFyb3VuZCAqLyk7XG4gICAgICAgICAgICBpZiAocmVzdWx0ID09PSAyIC8qIFN1Y2Nlc3MgKi8pIHtcbiAgICAgICAgICAgICAgbGV0IGFjdGl2ZU9wdGlvbiA9IG9wdGlvbnMudmFsdWUuZmluZCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb24uZWxlbWVudCA9PT0gKChfYSA9IGdldE93bmVyRG9jdW1lbnQob3B0aW9uLmVsZW1lbnQpKSA9PSBudWxsID8gdm9pZCAwIDogX2EuYWN0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBpZiAoYWN0aXZlT3B0aW9uKVxuICAgICAgICAgICAgICAgIGFwaS5jaGFuZ2UoYWN0aXZlT3B0aW9uLnByb3BzUmVmLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCIgXCIgLyogU3BhY2UgKi86XG4gICAgICAgICAge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgbGV0IGFjdGl2ZU9wdGlvbiA9IG9wdGlvbnMudmFsdWUuZmluZCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi5lbGVtZW50ID09PSAoKF9hID0gZ2V0T3duZXJEb2N1bWVudChvcHRpb24uZWxlbWVudCkpID09IG51bGwgPyB2b2lkIDAgOiBfYS5hY3RpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGFjdGl2ZU9wdGlvbilcbiAgICAgICAgICAgICAgYXBpLmNoYW5nZShhY3RpdmVPcHRpb24ucHJvcHNSZWYudmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLXJhZGlvZ3JvdXAtJHt1c2VJZCgpfWA7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB7IG1vZGVsVmFsdWUsIGRpc2FibGVkLCBuYW1lLCAuLi50aGVpclByb3BzIH0gPSBwcm9wcztcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgcmVmOiByYWRpb0dyb3VwUmVmLFxuICAgICAgICBpZDogaWQyLFxuICAgICAgICByb2xlOiBcInJhZGlvZ3JvdXBcIixcbiAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogbGFiZWxsZWRieS52YWx1ZSxcbiAgICAgICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGRlc2NyaWJlZGJ5LnZhbHVlLFxuICAgICAgICBvbktleWRvd246IGhhbmRsZUtleURvd25cbiAgICAgIH07XG4gICAgICByZXR1cm4gKDAsIGltcG9ydF92dWUyMy5oKShpbXBvcnRfdnVlMjMuRnJhZ21lbnQsIFtcbiAgICAgICAgLi4ubmFtZSAhPSBudWxsICYmIG1vZGVsVmFsdWUgIT0gbnVsbCA/IG9iamVjdFRvRm9ybUVudHJpZXMoeyBbbmFtZV06IG1vZGVsVmFsdWUgfSkubWFwKChbbmFtZTIsIHZhbHVlMl0pID0+ICgwLCBpbXBvcnRfdnVlMjMuaCkoSGlkZGVuLCBjb21wYWN0KHtcbiAgICAgICAgICBmZWF0dXJlczogNCAvKiBIaWRkZW4gKi8sXG4gICAgICAgICAga2V5OiBuYW1lMixcbiAgICAgICAgICBhczogXCJpbnB1dFwiLFxuICAgICAgICAgIHR5cGU6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgICAgICAgIG5hbWU6IG5hbWUyLFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZTJcbiAgICAgICAgfSkpKSA6IFtdLFxuICAgICAgICByZW5kZXIoe1xuICAgICAgICAgIG91clByb3BzLFxuICAgICAgICAgIHRoZWlyUHJvcHM6IHsgLi4uYXR0cnMsIC4uLnRoZWlyUHJvcHMgfSxcbiAgICAgICAgICBzbG90OiB7fSxcbiAgICAgICAgICBhdHRycyxcbiAgICAgICAgICBzbG90cyxcbiAgICAgICAgICBuYW1lOiBcIlJhZGlvR3JvdXBcIlxuICAgICAgICB9KVxuICAgICAgXSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgUmFkaW9Hcm91cE9wdGlvbiA9ICgwLCBpbXBvcnRfdnVlMjMuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiUmFkaW9Hcm91cE9wdGlvblwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfSxcbiAgICB2YWx1ZTogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmcsIE51bWJlciwgQm9vbGVhbl0gfSxcbiAgICBkaXNhYmxlZDogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlUmFkaW9Hcm91cENvbnRleHQoXCJSYWRpb0dyb3VwT3B0aW9uXCIpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1yYWRpb2dyb3VwLW9wdGlvbi0ke3VzZUlkKCl9YDtcbiAgICBsZXQgbGFiZWxsZWRieSA9IHVzZUxhYmVscyh7IG5hbWU6IFwiUmFkaW9Hcm91cExhYmVsXCIgfSk7XG4gICAgbGV0IGRlc2NyaWJlZGJ5ID0gdXNlRGVzY3JpcHRpb25zKHsgbmFtZTogXCJSYWRpb0dyb3VwRGVzY3JpcHRpb25cIiB9KTtcbiAgICBsZXQgb3B0aW9uUmVmID0gKDAsIGltcG9ydF92dWUyMy5yZWYpKG51bGwpO1xuICAgIGxldCBwcm9wc1JlZiA9ICgwLCBpbXBvcnRfdnVlMjMuY29tcHV0ZWQpKCgpID0+ICh7IHZhbHVlOiBwcm9wcy52YWx1ZSwgZGlzYWJsZWQ6IHByb3BzLmRpc2FibGVkIH0pKTtcbiAgICBsZXQgc3RhdGUgPSAoMCwgaW1wb3J0X3Z1ZTIzLnJlZikoMSAvKiBFbXB0eSAqLyk7XG4gICAgZXhwb3NlKHsgZWw6IG9wdGlvblJlZiwgJGVsOiBvcHRpb25SZWYgfSk7XG4gICAgKDAsIGltcG9ydF92dWUyMy5vbk1vdW50ZWQpKCgpID0+IGFwaS5yZWdpc3Rlck9wdGlvbih7IGlkOiBpZDIsIGVsZW1lbnQ6IG9wdGlvblJlZiwgcHJvcHNSZWYgfSkpO1xuICAgICgwLCBpbXBvcnRfdnVlMjMub25Vbm1vdW50ZWQpKCgpID0+IGFwaS51bnJlZ2lzdGVyT3B0aW9uKGlkMikpO1xuICAgIGxldCBpc0ZpcnN0T3B0aW9uID0gKDAsIGltcG9ydF92dWUyMy5jb21wdXRlZCkoKCkgPT4ge1xuICAgICAgdmFyIF9hO1xuICAgICAgcmV0dXJuICgoX2EgPSBhcGkuZmlyc3RPcHRpb24udmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5pZCkgPT09IGlkMjtcbiAgICB9KTtcbiAgICBsZXQgZGlzYWJsZWQgPSAoMCwgaW1wb3J0X3Z1ZTIzLmNvbXB1dGVkKSgoKSA9PiBhcGkuZGlzYWJsZWQudmFsdWUgfHwgcHJvcHMuZGlzYWJsZWQpO1xuICAgIGxldCBjaGVja2VkID0gKDAsIGltcG9ydF92dWUyMy5jb21wdXRlZCkoKCkgPT4gYXBpLmNvbXBhcmUoKDAsIGltcG9ydF92dWUyMy50b1JhdykoYXBpLnZhbHVlLnZhbHVlKSwgKDAsIGltcG9ydF92dWUyMy50b1JhdykocHJvcHMudmFsdWUpKSk7XG4gICAgbGV0IHRhYkluZGV4ID0gKDAsIGltcG9ydF92dWUyMy5jb21wdXRlZCkoKCkgPT4ge1xuICAgICAgaWYgKGRpc2FibGVkLnZhbHVlKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAoY2hlY2tlZC52YWx1ZSlcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICBpZiAoIWFwaS5jb250YWluc0NoZWNrZWRPcHRpb24udmFsdWUgJiYgaXNGaXJzdE9wdGlvbi52YWx1ZSlcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soKSB7XG4gICAgICB2YXIgX2E7XG4gICAgICBpZiAoIWFwaS5jaGFuZ2UocHJvcHMudmFsdWUpKVxuICAgICAgICByZXR1cm47XG4gICAgICBzdGF0ZS52YWx1ZSB8PSAyIC8qIEFjdGl2ZSAqLztcbiAgICAgIChfYSA9IG9wdGlvblJlZi52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUZvY3VzKCkge1xuICAgICAgc3RhdGUudmFsdWUgfD0gMiAvKiBBY3RpdmUgKi87XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUJsdXIoKSB7XG4gICAgICBzdGF0ZS52YWx1ZSAmPSB+MiAvKiBBY3RpdmUgKi87XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgdGhlaXJQcm9wcyA9IG9taXQocHJvcHMsIFtcInZhbHVlXCIsIFwiZGlzYWJsZWRcIl0pO1xuICAgICAgbGV0IHNsb3QgPSB7XG4gICAgICAgIGNoZWNrZWQ6IGNoZWNrZWQudmFsdWUsXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZC52YWx1ZSxcbiAgICAgICAgYWN0aXZlOiBCb29sZWFuKHN0YXRlLnZhbHVlICYgMiAvKiBBY3RpdmUgKi8pXG4gICAgICB9O1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICBpZDogaWQyLFxuICAgICAgICByZWY6IG9wdGlvblJlZixcbiAgICAgICAgcm9sZTogXCJyYWRpb1wiLFxuICAgICAgICBcImFyaWEtY2hlY2tlZFwiOiBjaGVja2VkLnZhbHVlID8gXCJ0cnVlXCIgOiBcImZhbHNlXCIsXG4gICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGxhYmVsbGVkYnkudmFsdWUsXG4gICAgICAgIFwiYXJpYS1kZXNjcmliZWRieVwiOiBkZXNjcmliZWRieS52YWx1ZSxcbiAgICAgICAgXCJhcmlhLWRpc2FibGVkXCI6IGRpc2FibGVkLnZhbHVlID8gdHJ1ZSA6IHZvaWQgMCxcbiAgICAgICAgdGFiSW5kZXg6IHRhYkluZGV4LnZhbHVlLFxuICAgICAgICBvbkNsaWNrOiBkaXNhYmxlZC52YWx1ZSA/IHZvaWQgMCA6IGhhbmRsZUNsaWNrLFxuICAgICAgICBvbkZvY3VzOiBkaXNhYmxlZC52YWx1ZSA/IHZvaWQgMCA6IGhhbmRsZUZvY3VzLFxuICAgICAgICBvbkJsdXI6IGRpc2FibGVkLnZhbHVlID8gdm9pZCAwIDogaGFuZGxlQmx1clxuICAgICAgfTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIlJhZGlvR3JvdXBPcHRpb25cIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgUmFkaW9Hcm91cExhYmVsID0gTGFiZWw7XG52YXIgUmFkaW9Hcm91cERlc2NyaXB0aW9uID0gRGVzY3JpcHRpb247XG5cbi8vIHNyYy9jb21wb25lbnRzL3N3aXRjaC9zd2l0Y2gudHNcbnZhciBpbXBvcnRfdnVlMjQgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEdyb3VwQ29udGV4dCA9IFN5bWJvbChcIkdyb3VwQ29udGV4dFwiKTtcbnZhciBTd2l0Y2hHcm91cCA9ICgwLCBpbXBvcnRfdnVlMjQuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiU3dpdGNoR3JvdXBcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcInRlbXBsYXRlXCIgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBzbG90cywgYXR0cnMgfSkge1xuICAgIGxldCBzd2l0Y2hSZWYgPSAoMCwgaW1wb3J0X3Z1ZTI0LnJlZikobnVsbCk7XG4gICAgbGV0IGxhYmVsbGVkYnkgPSB1c2VMYWJlbHMoe1xuICAgICAgbmFtZTogXCJTd2l0Y2hMYWJlbFwiLFxuICAgICAgcHJvcHM6IHtcbiAgICAgICAgb25DbGljaygpIHtcbiAgICAgICAgICBpZiAoIXN3aXRjaFJlZi52YWx1ZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBzd2l0Y2hSZWYudmFsdWUuY2xpY2soKTtcbiAgICAgICAgICBzd2l0Y2hSZWYudmFsdWUuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgbGV0IGRlc2NyaWJlZGJ5ID0gdXNlRGVzY3JpcHRpb25zKHsgbmFtZTogXCJTd2l0Y2hEZXNjcmlwdGlvblwiIH0pO1xuICAgIGxldCBhcGkgPSB7IHN3aXRjaFJlZiwgbGFiZWxsZWRieSwgZGVzY3JpYmVkYnkgfTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTI0LnByb3ZpZGUpKEdyb3VwQ29udGV4dCwgYXBpKTtcbiAgICByZXR1cm4gKCkgPT4gcmVuZGVyKHsgdGhlaXJQcm9wczogcHJvcHMsIG91clByb3BzOiB7fSwgc2xvdDoge30sIHNsb3RzLCBhdHRycywgbmFtZTogXCJTd2l0Y2hHcm91cFwiIH0pO1xuICB9XG59KTtcbnZhciBTd2l0Y2ggPSAoMCwgaW1wb3J0X3Z1ZTI0LmRlZmluZUNvbXBvbmVudCkoe1xuICBuYW1lOiBcIlN3aXRjaFwiLFxuICBlbWl0czogeyBcInVwZGF0ZTptb2RlbFZhbHVlXCI6IChfdmFsdWUpID0+IHRydWUgfSxcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImJ1dHRvblwiIH0sXG4gICAgbW9kZWxWYWx1ZTogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIG5hbWU6IHsgdHlwZTogU3RyaW5nLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgIHZhbHVlOiB7IHR5cGU6IFN0cmluZywgb3B0aW9uYWw6IHRydWUgfVxuICB9LFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBzZXR1cChwcm9wcywgeyBlbWl0LCBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IGFwaSA9ICgwLCBpbXBvcnRfdnVlMjQuaW5qZWN0KShHcm91cENvbnRleHQsIG51bGwpO1xuICAgIGxldCBpZDIgPSBgaGVhZGxlc3N1aS1zd2l0Y2gtJHt1c2VJZCgpfWA7XG4gICAgZnVuY3Rpb24gdG9nZ2xlKCkge1xuICAgICAgZW1pdChcInVwZGF0ZTptb2RlbFZhbHVlXCIsICFwcm9wcy5tb2RlbFZhbHVlKTtcbiAgICB9XG4gICAgbGV0IGludGVybmFsU3dpdGNoUmVmID0gKDAsIGltcG9ydF92dWUyNC5yZWYpKG51bGwpO1xuICAgIGxldCBzd2l0Y2hSZWYgPSBhcGkgPT09IG51bGwgPyBpbnRlcm5hbFN3aXRjaFJlZiA6IGFwaS5zd2l0Y2hSZWY7XG4gICAgbGV0IHR5cGUgPSB1c2VSZXNvbHZlQnV0dG9uVHlwZSgoMCwgaW1wb3J0X3Z1ZTI0LmNvbXB1dGVkKSgoKSA9PiAoeyBhczogcHJvcHMuYXMsIHR5cGU6IGF0dHJzLnR5cGUgfSkpLCBzd2l0Y2hSZWYpO1xuICAgIGV4cG9zZSh7IGVsOiBzd2l0Y2hSZWYsICRlbDogc3dpdGNoUmVmIH0pO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdG9nZ2xlKCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUtleVVwKGV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSBcIiBcIiAvKiBTcGFjZSAqLykge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0b2dnbGUoKTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSBcIkVudGVyXCIgLyogRW50ZXIgKi8pIHtcbiAgICAgICAgYXR0ZW1wdFN1Ym1pdChldmVudC5jdXJyZW50VGFyZ2V0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5UHJlc3MoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgeyBuYW1lLCB2YWx1ZSwgbW9kZWxWYWx1ZSwgLi4udGhlaXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgICBsZXQgc2xvdCA9IHsgY2hlY2tlZDogbW9kZWxWYWx1ZSB9O1xuICAgICAgbGV0IG91clByb3BzID0ge1xuICAgICAgICBpZDogaWQyLFxuICAgICAgICByZWY6IHN3aXRjaFJlZixcbiAgICAgICAgcm9sZTogXCJzd2l0Y2hcIixcbiAgICAgICAgdHlwZTogdHlwZS52YWx1ZSxcbiAgICAgICAgdGFiSW5kZXg6IDAsXG4gICAgICAgIFwiYXJpYS1jaGVja2VkXCI6IG1vZGVsVmFsdWUsXG4gICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGFwaSA9PSBudWxsID8gdm9pZCAwIDogYXBpLmxhYmVsbGVkYnkudmFsdWUsXG4gICAgICAgIFwiYXJpYS1kZXNjcmliZWRieVwiOiBhcGkgPT0gbnVsbCA/IHZvaWQgMCA6IGFwaS5kZXNjcmliZWRieS52YWx1ZSxcbiAgICAgICAgb25DbGljazogaGFuZGxlQ2xpY2ssXG4gICAgICAgIG9uS2V5dXA6IGhhbmRsZUtleVVwLFxuICAgICAgICBvbktleXByZXNzOiBoYW5kbGVLZXlQcmVzc1xuICAgICAgfTtcbiAgICAgIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTI0LmgpKGltcG9ydF92dWUyNC5GcmFnbWVudCwgW1xuICAgICAgICBuYW1lICE9IG51bGwgJiYgbW9kZWxWYWx1ZSAhPSBudWxsID8gKDAsIGltcG9ydF92dWUyNC5oKShIaWRkZW4sIGNvbXBhY3Qoe1xuICAgICAgICAgIGZlYXR1cmVzOiA0IC8qIEhpZGRlbiAqLyxcbiAgICAgICAgICBhczogXCJpbnB1dFwiLFxuICAgICAgICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgICAgcmVhZE9ubHk6IHRydWUsXG4gICAgICAgICAgY2hlY2tlZDogbW9kZWxWYWx1ZSxcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIHZhbHVlXG4gICAgICAgIH0pKSA6IG51bGwsXG4gICAgICAgIHJlbmRlcih7XG4gICAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgICAgdGhlaXJQcm9wczogeyAuLi5hdHRycywgLi4udGhlaXJQcm9wcyB9LFxuICAgICAgICAgIHNsb3QsXG4gICAgICAgICAgYXR0cnMsXG4gICAgICAgICAgc2xvdHMsXG4gICAgICAgICAgbmFtZTogXCJTd2l0Y2hcIlxuICAgICAgICB9KVxuICAgICAgXSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgU3dpdGNoTGFiZWwgPSBMYWJlbDtcbnZhciBTd2l0Y2hEZXNjcmlwdGlvbiA9IERlc2NyaXB0aW9uO1xuXG4vLyBzcmMvY29tcG9uZW50cy90YWJzL3RhYnMudHNcbnZhciBpbXBvcnRfdnVlMjYgPSByZXF1aXJlKFwidnVlXCIpO1xuXG4vLyBzcmMvaW50ZXJuYWwvZm9jdXMtc2VudGluZWwudHNcbnZhciBpbXBvcnRfdnVlMjUgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEZvY3VzU2VudGluZWwgPSAoMCwgaW1wb3J0X3Z1ZTI1LmRlZmluZUNvbXBvbmVudCkoe1xuICBwcm9wczoge1xuICAgIG9uRm9jdXM6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICB9XG4gIH0sXG4gIHNldHVwKHByb3BzKSB7XG4gICAgbGV0IGVuYWJsZWQgPSAoMCwgaW1wb3J0X3Z1ZTI1LnJlZikodHJ1ZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmICghZW5hYmxlZC52YWx1ZSlcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4gKDAsIGltcG9ydF92dWUyNS5oKShIaWRkZW4sIHtcbiAgICAgICAgYXM6IFwiYnV0dG9uXCIsXG4gICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgIGZlYXR1cmVzOiAyIC8qIEZvY3VzYWJsZSAqLyxcbiAgICAgICAgb25Gb2N1cyhldmVudCkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgbGV0IGZyYW1lO1xuICAgICAgICAgIGxldCB0cmllcyA9IDUwO1xuICAgICAgICAgIGZ1bmN0aW9uIGZvcndhcmRGb2N1cygpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGlmICh0cmllcy0tIDw9IDApIHtcbiAgICAgICAgICAgICAgaWYgKGZyYW1lKVxuICAgICAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGZyYW1lKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKChfYSA9IHByb3BzLm9uRm9jdXMpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jYWxsKHByb3BzKSkge1xuICAgICAgICAgICAgICBlbmFibGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGZyYW1lKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm9yd2FyZEZvY3VzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm9yd2FyZEZvY3VzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIHNyYy9jb21wb25lbnRzL3RhYnMvdGFicy50c1xudmFyIFRhYnNDb250ZXh0ID0gU3ltYm9sKFwiVGFic0NvbnRleHRcIik7XG5mdW5jdGlvbiB1c2VUYWJzQ29udGV4dChjb21wb25lbnQpIHtcbiAgbGV0IGNvbnRleHQgPSAoMCwgaW1wb3J0X3Z1ZTI2LmluamVjdCkoVGFic0NvbnRleHQsIG51bGwpO1xuICBpZiAoY29udGV4dCA9PT0gbnVsbCkge1xuICAgIGxldCBlcnIgPSBuZXcgRXJyb3IoYDwke2NvbXBvbmVudH0gLz4gaXMgbWlzc2luZyBhIHBhcmVudCA8VGFiR3JvdXAgLz4gY29tcG9uZW50LmApO1xuICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVyciwgdXNlVGFic0NvbnRleHQpO1xuICAgIHRocm93IGVycjtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cbnZhciBUYWJHcm91cCA9ICgwLCBpbXBvcnRfdnVlMjYuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiVGFiR3JvdXBcIixcbiAgZW1pdHM6IHtcbiAgICBjaGFuZ2U6IChfaW5kZXgpID0+IHRydWVcbiAgfSxcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcInRlbXBsYXRlXCIgfSxcbiAgICBzZWxlY3RlZEluZGV4OiB7IHR5cGU6IFtOdW1iZXJdLCBkZWZhdWx0OiBudWxsIH0sXG4gICAgZGVmYXVsdEluZGV4OiB7IHR5cGU6IFtOdW1iZXJdLCBkZWZhdWx0OiAwIH0sXG4gICAgdmVydGljYWw6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIG1hbnVhbDogeyB0eXBlOiBbQm9vbGVhbl0sIGRlZmF1bHQ6IGZhbHNlIH1cbiAgfSxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgc2V0dXAocHJvcHMsIHsgc2xvdHMsIGF0dHJzLCBlbWl0IH0pIHtcbiAgICBsZXQgc2VsZWN0ZWRJbmRleCA9ICgwLCBpbXBvcnRfdnVlMjYucmVmKShudWxsKTtcbiAgICBsZXQgdGFicyA9ICgwLCBpbXBvcnRfdnVlMjYucmVmKShbXSk7XG4gICAgbGV0IHBhbmVscyA9ICgwLCBpbXBvcnRfdnVlMjYucmVmKShbXSk7XG4gICAgbGV0IGFwaSA9IHtcbiAgICAgIHNlbGVjdGVkSW5kZXgsXG4gICAgICBvcmllbnRhdGlvbjogKDAsIGltcG9ydF92dWUyNi5jb21wdXRlZCkoKCkgPT4gcHJvcHMudmVydGljYWwgPyBcInZlcnRpY2FsXCIgOiBcImhvcml6b250YWxcIiksXG4gICAgICBhY3RpdmF0aW9uOiAoMCwgaW1wb3J0X3Z1ZTI2LmNvbXB1dGVkKSgoKSA9PiBwcm9wcy5tYW51YWwgPyBcIm1hbnVhbFwiIDogXCJhdXRvXCIpLFxuICAgICAgdGFicyxcbiAgICAgIHBhbmVscyxcbiAgICAgIHNldFNlbGVjdGVkSW5kZXgoaW5kZXgpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXgudmFsdWUgPT09IGluZGV4KVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc2VsZWN0ZWRJbmRleC52YWx1ZSA9IGluZGV4O1xuICAgICAgICBlbWl0KFwiY2hhbmdlXCIsIGluZGV4KTtcbiAgICAgIH0sXG4gICAgICByZWdpc3RlclRhYih0YWIpIHtcbiAgICAgICAgaWYgKCF0YWJzLnZhbHVlLmluY2x1ZGVzKHRhYikpXG4gICAgICAgICAgdGFicy52YWx1ZS5wdXNoKHRhYik7XG4gICAgICB9LFxuICAgICAgdW5yZWdpc3RlclRhYih0YWIpIHtcbiAgICAgICAgbGV0IGlkeCA9IHRhYnMudmFsdWUuaW5kZXhPZih0YWIpO1xuICAgICAgICBpZiAoaWR4ICE9PSAtMSlcbiAgICAgICAgICB0YWJzLnZhbHVlLnNwbGljZShpZHgsIDEpO1xuICAgICAgfSxcbiAgICAgIHJlZ2lzdGVyUGFuZWwocGFuZWwpIHtcbiAgICAgICAgaWYgKCFwYW5lbHMudmFsdWUuaW5jbHVkZXMocGFuZWwpKVxuICAgICAgICAgIHBhbmVscy52YWx1ZS5wdXNoKHBhbmVsKTtcbiAgICAgIH0sXG4gICAgICB1bnJlZ2lzdGVyUGFuZWwocGFuZWwpIHtcbiAgICAgICAgbGV0IGlkeCA9IHBhbmVscy52YWx1ZS5pbmRleE9mKHBhbmVsKTtcbiAgICAgICAgaWYgKGlkeCAhPT0gLTEpXG4gICAgICAgICAgcGFuZWxzLnZhbHVlLnNwbGljZShpZHgsIDEpO1xuICAgICAgfVxuICAgIH07XG4gICAgKDAsIGltcG9ydF92dWUyNi5wcm92aWRlKShUYWJzQ29udGV4dCwgYXBpKTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTI2LndhdGNoRWZmZWN0KSgoKSA9PiB7XG4gICAgICB2YXIgX2E7XG4gICAgICBpZiAoYXBpLnRhYnMudmFsdWUubGVuZ3RoIDw9IDApXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChwcm9wcy5zZWxlY3RlZEluZGV4ID09PSBudWxsICYmIHNlbGVjdGVkSW5kZXgudmFsdWUgIT09IG51bGwpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGxldCB0YWJzMiA9IGFwaS50YWJzLnZhbHVlLm1hcCgodGFiKSA9PiBkb20odGFiKSkuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgbGV0IGZvY3VzYWJsZVRhYnMgPSB0YWJzMi5maWx0ZXIoKHRhYikgPT4gIXRhYi5oYXNBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKSk7XG4gICAgICBsZXQgaW5kZXhUb1NldCA9IChfYSA9IHByb3BzLnNlbGVjdGVkSW5kZXgpICE9IG51bGwgPyBfYSA6IHByb3BzLmRlZmF1bHRJbmRleDtcbiAgICAgIGlmIChpbmRleFRvU2V0IDwgMCkge1xuICAgICAgICBzZWxlY3RlZEluZGV4LnZhbHVlID0gdGFiczIuaW5kZXhPZihmb2N1c2FibGVUYWJzWzBdKTtcbiAgICAgIH0gZWxzZSBpZiAoaW5kZXhUb1NldCA+IGFwaS50YWJzLnZhbHVlLmxlbmd0aCkge1xuICAgICAgICBzZWxlY3RlZEluZGV4LnZhbHVlID0gdGFiczIuaW5kZXhPZihmb2N1c2FibGVUYWJzW2ZvY3VzYWJsZVRhYnMubGVuZ3RoIC0gMV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGJlZm9yZSA9IHRhYnMyLnNsaWNlKDAsIGluZGV4VG9TZXQpO1xuICAgICAgICBsZXQgYWZ0ZXIgPSB0YWJzMi5zbGljZShpbmRleFRvU2V0KTtcbiAgICAgICAgbGV0IG5leHQgPSBbLi4uYWZ0ZXIsIC4uLmJlZm9yZV0uZmluZCgodGFiKSA9PiBmb2N1c2FibGVUYWJzLmluY2x1ZGVzKHRhYikpO1xuICAgICAgICBpZiAoIW5leHQpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzZWxlY3RlZEluZGV4LnZhbHVlID0gdGFiczIuaW5kZXhPZihuZXh0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHNsb3QgPSB7IHNlbGVjdGVkSW5kZXg6IHNlbGVjdGVkSW5kZXgudmFsdWUgfTtcbiAgICAgIHJldHVybiAoMCwgaW1wb3J0X3Z1ZTI2LmgpKGltcG9ydF92dWUyNi5GcmFnbWVudCwgW1xuICAgICAgICB0YWJzLnZhbHVlLmxlbmd0aCA8PSAwICYmICgwLCBpbXBvcnRfdnVlMjYuaCkoRm9jdXNTZW50aW5lbCwge1xuICAgICAgICAgIG9uRm9jdXM6ICgpID0+IHtcbiAgICAgICAgICAgIGZvciAobGV0IHRhYiBvZiB0YWJzLnZhbHVlKSB7XG4gICAgICAgICAgICAgIGxldCBlbCA9IGRvbSh0YWIpO1xuICAgICAgICAgICAgICBpZiAoKGVsID09IG51bGwgPyB2b2lkIDAgOiBlbC50YWJJbmRleCkgPT09IDApIHtcbiAgICAgICAgICAgICAgICBlbC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgcmVuZGVyKHtcbiAgICAgICAgICB0aGVpclByb3BzOiB7XG4gICAgICAgICAgICAuLi5hdHRycyxcbiAgICAgICAgICAgIC4uLm9taXQocHJvcHMsIFtcInNlbGVjdGVkSW5kZXhcIiwgXCJkZWZhdWx0SW5kZXhcIiwgXCJtYW51YWxcIiwgXCJ2ZXJ0aWNhbFwiLCBcIm9uQ2hhbmdlXCJdKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb3VyUHJvcHM6IHt9LFxuICAgICAgICAgIHNsb3QsXG4gICAgICAgICAgc2xvdHMsXG4gICAgICAgICAgYXR0cnMsXG4gICAgICAgICAgbmFtZTogXCJUYWJHcm91cFwiXG4gICAgICAgIH0pXG4gICAgICBdKTtcbiAgICB9O1xuICB9XG59KTtcbnZhciBUYWJMaXN0ID0gKDAsIGltcG9ydF92dWUyNi5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJUYWJMaXN0XCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cyB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZVRhYnNDb250ZXh0KFwiVGFiTGlzdFwiKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGV0IHNsb3QgPSB7IHNlbGVjdGVkSW5kZXg6IGFwaS5zZWxlY3RlZEluZGV4LnZhbHVlIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIHJvbGU6IFwidGFibGlzdFwiLFxuICAgICAgICBcImFyaWEtb3JpZW50YXRpb25cIjogYXBpLm9yaWVudGF0aW9uLnZhbHVlXG4gICAgICB9O1xuICAgICAgbGV0IHRoZWlyUHJvcHMgPSBwcm9wcztcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIHNsb3RzLFxuICAgICAgICBuYW1lOiBcIlRhYkxpc3RcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgVGFiID0gKDAsIGltcG9ydF92dWUyNi5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJUYWJcIixcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImJ1dHRvblwiIH0sXG4gICAgZGlzYWJsZWQ6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiBmYWxzZSB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBsZXQgYXBpID0gdXNlVGFic0NvbnRleHQoXCJUYWJcIik7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLXRhYnMtdGFiLSR7dXNlSWQoKX1gO1xuICAgIGxldCBpbnRlcm5hbFRhYlJlZiA9ICgwLCBpbXBvcnRfdnVlMjYucmVmKShudWxsKTtcbiAgICBleHBvc2UoeyBlbDogaW50ZXJuYWxUYWJSZWYsICRlbDogaW50ZXJuYWxUYWJSZWYgfSk7XG4gICAgKDAsIGltcG9ydF92dWUyNi5vbk1vdW50ZWQpKCgpID0+IGFwaS5yZWdpc3RlclRhYihpbnRlcm5hbFRhYlJlZikpO1xuICAgICgwLCBpbXBvcnRfdnVlMjYub25Vbm1vdW50ZWQpKCgpID0+IGFwaS51bnJlZ2lzdGVyVGFiKGludGVybmFsVGFiUmVmKSk7XG4gICAgbGV0IG15SW5kZXggPSAoMCwgaW1wb3J0X3Z1ZTI2LmNvbXB1dGVkKSgoKSA9PiBhcGkudGFicy52YWx1ZS5pbmRleE9mKGludGVybmFsVGFiUmVmKSk7XG4gICAgbGV0IHNlbGVjdGVkID0gKDAsIGltcG9ydF92dWUyNi5jb21wdXRlZCkoKCkgPT4gbXlJbmRleC52YWx1ZSA9PT0gYXBpLnNlbGVjdGVkSW5kZXgudmFsdWUpO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUtleURvd24oZXZlbnQpIHtcbiAgICAgIGxldCBsaXN0ID0gYXBpLnRhYnMudmFsdWUubWFwKCh0YWIpID0+IGRvbSh0YWIpKS5maWx0ZXIoQm9vbGVhbik7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSBcIiBcIiAvKiBTcGFjZSAqLyB8fCBldmVudC5rZXkgPT09IFwiRW50ZXJcIiAvKiBFbnRlciAqLykge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgYXBpLnNldFNlbGVjdGVkSW5kZXgobXlJbmRleC52YWx1ZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgXCJIb21lXCIgLyogSG9tZSAqLzpcbiAgICAgICAgY2FzZSBcIlBhZ2VVcFwiIC8qIFBhZ2VVcCAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHJldHVybiBmb2N1c0luKGxpc3QsIDEgLyogRmlyc3QgKi8pO1xuICAgICAgICBjYXNlIFwiRW5kXCIgLyogRW5kICovOlxuICAgICAgICBjYXNlIFwiUGFnZURvd25cIiAvKiBQYWdlRG93biAqLzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHJldHVybiBmb2N1c0luKGxpc3QsIDggLyogTGFzdCAqLyk7XG4gICAgICB9XG4gICAgICBpZiAobWF0Y2goYXBpLm9yaWVudGF0aW9uLnZhbHVlLCB7XG4gICAgICAgIHZlcnRpY2FsKCkge1xuICAgICAgICAgIGlmIChldmVudC5rZXkgPT09IFwiQXJyb3dVcFwiIC8qIEFycm93VXAgKi8pXG4gICAgICAgICAgICByZXR1cm4gZm9jdXNJbihsaXN0LCAyIC8qIFByZXZpb3VzICovIHwgMTYgLyogV3JhcEFyb3VuZCAqLyk7XG4gICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd0Rvd25cIiAvKiBBcnJvd0Rvd24gKi8pXG4gICAgICAgICAgICByZXR1cm4gZm9jdXNJbihsaXN0LCA0IC8qIE5leHQgKi8gfCAxNiAvKiBXcmFwQXJvdW5kICovKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0sXG4gICAgICAgIGhvcml6b250YWwoKSB7XG4gICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd0xlZnRcIiAvKiBBcnJvd0xlZnQgKi8pXG4gICAgICAgICAgICByZXR1cm4gZm9jdXNJbihsaXN0LCAyIC8qIFByZXZpb3VzICovIHwgMTYgLyogV3JhcEFyb3VuZCAqLyk7XG4gICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd1JpZ2h0XCIgLyogQXJyb3dSaWdodCAqLylcbiAgICAgICAgICAgIHJldHVybiBmb2N1c0luKGxpc3QsIDQgLyogTmV4dCAqLyB8IDE2IC8qIFdyYXBBcm91bmQgKi8pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfSkpIHtcbiAgICAgICAgcmV0dXJuIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUZvY3VzKCkge1xuICAgICAgdmFyIF9hO1xuICAgICAgKF9hID0gZG9tKGludGVybmFsVGFiUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZVNlbGVjdGlvbigpIHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGlmIChwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgKF9hID0gZG9tKGludGVybmFsVGFiUmVmKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmZvY3VzKCk7XG4gICAgICBhcGkuc2V0U2VsZWN0ZWRJbmRleChteUluZGV4LnZhbHVlKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlTW91c2VEb3duKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBsZXQgdHlwZSA9IHVzZVJlc29sdmVCdXR0b25UeXBlKCgwLCBpbXBvcnRfdnVlMjYuY29tcHV0ZWQpKCgpID0+ICh7IGFzOiBwcm9wcy5hcywgdHlwZTogYXR0cnMudHlwZSB9KSksIGludGVybmFsVGFiUmVmKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdmFyIF9hLCBfYjtcbiAgICAgIGxldCBzbG90ID0geyBzZWxlY3RlZDogc2VsZWN0ZWQudmFsdWUgfTtcbiAgICAgIGxldCBvdXJQcm9wcyA9IHtcbiAgICAgICAgcmVmOiBpbnRlcm5hbFRhYlJlZixcbiAgICAgICAgb25LZXlkb3duOiBoYW5kbGVLZXlEb3duLFxuICAgICAgICBvbkZvY3VzOiBhcGkuYWN0aXZhdGlvbi52YWx1ZSA9PT0gXCJtYW51YWxcIiA/IGhhbmRsZUZvY3VzIDogaGFuZGxlU2VsZWN0aW9uLFxuICAgICAgICBvbk1vdXNlZG93bjogaGFuZGxlTW91c2VEb3duLFxuICAgICAgICBvbkNsaWNrOiBoYW5kbGVTZWxlY3Rpb24sXG4gICAgICAgIGlkOiBpZDIsXG4gICAgICAgIHJvbGU6IFwidGFiXCIsXG4gICAgICAgIHR5cGU6IHR5cGUudmFsdWUsXG4gICAgICAgIFwiYXJpYS1jb250cm9sc1wiOiAoX2IgPSAoX2EgPSBhcGkucGFuZWxzLnZhbHVlW215SW5kZXgudmFsdWVdKSA9PSBudWxsID8gdm9pZCAwIDogX2EudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYi5pZCxcbiAgICAgICAgXCJhcmlhLXNlbGVjdGVkXCI6IHNlbGVjdGVkLnZhbHVlLFxuICAgICAgICB0YWJJbmRleDogc2VsZWN0ZWQudmFsdWUgPyAwIDogLTEsXG4gICAgICAgIGRpc2FibGVkOiBwcm9wcy5kaXNhYmxlZCA/IHRydWUgOiB2b2lkIDBcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHRoZWlyUHJvcHM6IHByb3BzLFxuICAgICAgICBzbG90LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiVGFiXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIFRhYlBhbmVscyA9ICgwLCBpbXBvcnRfdnVlMjYuZGVmaW5lQ29tcG9uZW50KSh7XG4gIG5hbWU6IFwiVGFiUGFuZWxzXCIsXG4gIHByb3BzOiB7XG4gICAgYXM6IHsgdHlwZTogW09iamVjdCwgU3RyaW5nXSwgZGVmYXVsdDogXCJkaXZcIiB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IHNsb3RzLCBhdHRycyB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZVRhYnNDb250ZXh0KFwiVGFiUGFuZWxzXCIpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQgc2xvdCA9IHsgc2VsZWN0ZWRJbmRleDogYXBpLnNlbGVjdGVkSW5kZXgudmFsdWUgfTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICB0aGVpclByb3BzOiBwcm9wcyxcbiAgICAgICAgb3VyUHJvcHM6IHt9LFxuICAgICAgICBzbG90LFxuICAgICAgICBhdHRycyxcbiAgICAgICAgc2xvdHMsXG4gICAgICAgIG5hbWU6IFwiVGFiUGFuZWxzXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIFRhYlBhbmVsID0gKDAsIGltcG9ydF92dWUyNi5kZWZpbmVDb21wb25lbnQpKHtcbiAgbmFtZTogXCJUYWJQYW5lbFwiLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfSxcbiAgICBzdGF0aWM6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICB1bm1vdW50OiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IHRydWUgfVxuICB9LFxuICBzZXR1cChwcm9wcywgeyBhdHRycywgc2xvdHMsIGV4cG9zZSB9KSB7XG4gICAgbGV0IGFwaSA9IHVzZVRhYnNDb250ZXh0KFwiVGFiUGFuZWxcIik7XG4gICAgbGV0IGlkMiA9IGBoZWFkbGVzc3VpLXRhYnMtcGFuZWwtJHt1c2VJZCgpfWA7XG4gICAgbGV0IGludGVybmFsUGFuZWxSZWYgPSAoMCwgaW1wb3J0X3Z1ZTI2LnJlZikobnVsbCk7XG4gICAgZXhwb3NlKHsgZWw6IGludGVybmFsUGFuZWxSZWYsICRlbDogaW50ZXJuYWxQYW5lbFJlZiB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTI2Lm9uTW91bnRlZCkoKCkgPT4gYXBpLnJlZ2lzdGVyUGFuZWwoaW50ZXJuYWxQYW5lbFJlZikpO1xuICAgICgwLCBpbXBvcnRfdnVlMjYub25Vbm1vdW50ZWQpKCgpID0+IGFwaS51bnJlZ2lzdGVyUGFuZWwoaW50ZXJuYWxQYW5lbFJlZikpO1xuICAgIGxldCBteUluZGV4ID0gKDAsIGltcG9ydF92dWUyNi5jb21wdXRlZCkoKCkgPT4gYXBpLnBhbmVscy52YWx1ZS5pbmRleE9mKGludGVybmFsUGFuZWxSZWYpKTtcbiAgICBsZXQgc2VsZWN0ZWQgPSAoMCwgaW1wb3J0X3Z1ZTI2LmNvbXB1dGVkKSgoKSA9PiBteUluZGV4LnZhbHVlID09PSBhcGkuc2VsZWN0ZWRJbmRleC52YWx1ZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHZhciBfYSwgX2I7XG4gICAgICBsZXQgc2xvdCA9IHsgc2VsZWN0ZWQ6IHNlbGVjdGVkLnZhbHVlIH07XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7XG4gICAgICAgIHJlZjogaW50ZXJuYWxQYW5lbFJlZixcbiAgICAgICAgaWQ6IGlkMixcbiAgICAgICAgcm9sZTogXCJ0YWJwYW5lbFwiLFxuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiAoX2IgPSAoX2EgPSBhcGkudGFicy52YWx1ZVtteUluZGV4LnZhbHVlXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2IuaWQsXG4gICAgICAgIHRhYkluZGV4OiBzZWxlY3RlZC52YWx1ZSA/IDAgOiAtMVxuICAgICAgfTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wcyxcbiAgICAgICAgdGhlaXJQcm9wczogcHJvcHMsXG4gICAgICAgIHNsb3QsXG4gICAgICAgIGF0dHJzLFxuICAgICAgICBzbG90cyxcbiAgICAgICAgZmVhdHVyZXM6IDIgLyogU3RhdGljICovIHwgMSAvKiBSZW5kZXJTdHJhdGVneSAqLyxcbiAgICAgICAgdmlzaWJsZTogc2VsZWN0ZWQudmFsdWUsXG4gICAgICAgIG5hbWU6IFwiVGFiUGFuZWxcIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIHNyYy9jb21wb25lbnRzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24udHNcbnZhciBpbXBvcnRfdnVlMjcgPSByZXF1aXJlKFwidnVlXCIpO1xuXG4vLyBzcmMvdXRpbHMvb25jZS50c1xuZnVuY3Rpb24gb25jZShjYikge1xuICBsZXQgc3RhdGUgPSB7IGNhbGxlZDogZmFsc2UgfTtcbiAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgaWYgKHN0YXRlLmNhbGxlZClcbiAgICAgIHJldHVybjtcbiAgICBzdGF0ZS5jYWxsZWQgPSB0cnVlO1xuICAgIHJldHVybiBjYiguLi5hcmdzKTtcbiAgfTtcbn1cblxuLy8gc3JjL3V0aWxzL2Rpc3Bvc2FibGVzLnRzXG5mdW5jdGlvbiBkaXNwb3NhYmxlcygpIHtcbiAgbGV0IGRpc3Bvc2FibGVzMiA9IFtdO1xuICBsZXQgcXVldWUgPSBbXTtcbiAgbGV0IGFwaSA9IHtcbiAgICBlbnF1ZXVlKGZuKSB7XG4gICAgICBxdWV1ZS5wdXNoKGZuKTtcbiAgICB9LFxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSguLi5hcmdzKSB7XG4gICAgICBsZXQgcmFmID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKC4uLmFyZ3MpO1xuICAgICAgYXBpLmFkZCgoKSA9PiBjYW5jZWxBbmltYXRpb25GcmFtZShyYWYpKTtcbiAgICB9LFxuICAgIG5leHRGcmFtZSguLi5hcmdzKSB7XG4gICAgICBhcGkucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgYXBpLnJlcXVlc3RBbmltYXRpb25GcmFtZSguLi5hcmdzKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgc2V0VGltZW91dCguLi5hcmdzKSB7XG4gICAgICBsZXQgdGltZXIgPSBzZXRUaW1lb3V0KC4uLmFyZ3MpO1xuICAgICAgYXBpLmFkZCgoKSA9PiBjbGVhclRpbWVvdXQodGltZXIpKTtcbiAgICB9LFxuICAgIGFkZChjYikge1xuICAgICAgZGlzcG9zYWJsZXMyLnB1c2goY2IpO1xuICAgIH0sXG4gICAgZGlzcG9zZSgpIHtcbiAgICAgIGZvciAobGV0IGRpc3Bvc2Ugb2YgZGlzcG9zYWJsZXMyLnNwbGljZSgwKSkge1xuICAgICAgICBkaXNwb3NlKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBhc3luYyB3b3JrUXVldWUoKSB7XG4gICAgICBmb3IgKGxldCBoYW5kbGUgb2YgcXVldWUuc3BsaWNlKDApKSB7XG4gICAgICAgIGF3YWl0IGhhbmRsZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFwaTtcbn1cblxuLy8gc3JjL2NvbXBvbmVudHMvdHJhbnNpdGlvbnMvdXRpbHMvdHJhbnNpdGlvbi50c1xuZnVuY3Rpb24gYWRkQ2xhc3Nlcyhub2RlLCAuLi5jbGFzc2VzKSB7XG4gIG5vZGUgJiYgY2xhc3Nlcy5sZW5ndGggPiAwICYmIG5vZGUuY2xhc3NMaXN0LmFkZCguLi5jbGFzc2VzKTtcbn1cbmZ1bmN0aW9uIHJlbW92ZUNsYXNzZXMobm9kZSwgLi4uY2xhc3Nlcykge1xuICBub2RlICYmIGNsYXNzZXMubGVuZ3RoID4gMCAmJiBub2RlLmNsYXNzTGlzdC5yZW1vdmUoLi4uY2xhc3Nlcyk7XG59XG5mdW5jdGlvbiB3YWl0Rm9yVHJhbnNpdGlvbihub2RlLCBkb25lKSB7XG4gIGxldCBkID0gZGlzcG9zYWJsZXMoKTtcbiAgaWYgKCFub2RlKVxuICAgIHJldHVybiBkLmRpc3Bvc2U7XG4gIGxldCB7IHRyYW5zaXRpb25EdXJhdGlvbiwgdHJhbnNpdGlvbkRlbGF5IH0gPSBnZXRDb21wdXRlZFN0eWxlKG5vZGUpO1xuICBsZXQgW2R1cmF0aW9uTXMsIGRlbGF5c01zXSA9IFt0cmFuc2l0aW9uRHVyYXRpb24sIHRyYW5zaXRpb25EZWxheV0ubWFwKCh2YWx1ZSkgPT4ge1xuICAgIGxldCBbcmVzb2x2ZWRWYWx1ZSA9IDBdID0gdmFsdWUuc3BsaXQoXCIsXCIpLmZpbHRlcihCb29sZWFuKS5tYXAoKHYpID0+IHYuaW5jbHVkZXMoXCJtc1wiKSA/IHBhcnNlRmxvYXQodikgOiBwYXJzZUZsb2F0KHYpICogMWUzKS5zb3J0KChhLCB6KSA9PiB6IC0gYSk7XG4gICAgcmV0dXJuIHJlc29sdmVkVmFsdWU7XG4gIH0pO1xuICBpZiAoZHVyYXRpb25NcyAhPT0gMCkge1xuICAgIGQuc2V0VGltZW91dCgoKSA9PiBkb25lKFwiZmluaXNoZWRcIiAvKiBGaW5pc2hlZCAqLyksIGR1cmF0aW9uTXMgKyBkZWxheXNNcyk7XG4gIH0gZWxzZSB7XG4gICAgZG9uZShcImZpbmlzaGVkXCIgLyogRmluaXNoZWQgKi8pO1xuICB9XG4gIGQuYWRkKCgpID0+IGRvbmUoXCJjYW5jZWxsZWRcIiAvKiBDYW5jZWxsZWQgKi8pKTtcbiAgcmV0dXJuIGQuZGlzcG9zZTtcbn1cbmZ1bmN0aW9uIHRyYW5zaXRpb24obm9kZSwgYmFzZSwgZnJvbSwgdG8sIGVudGVyZWQsIGRvbmUpIHtcbiAgbGV0IGQgPSBkaXNwb3NhYmxlcygpO1xuICBsZXQgX2RvbmUgPSBkb25lICE9PSB2b2lkIDAgPyBvbmNlKGRvbmUpIDogKCkgPT4ge1xuICB9O1xuICByZW1vdmVDbGFzc2VzKG5vZGUsIC4uLmVudGVyZWQpO1xuICBhZGRDbGFzc2VzKG5vZGUsIC4uLmJhc2UsIC4uLmZyb20pO1xuICBkLm5leHRGcmFtZSgoKSA9PiB7XG4gICAgcmVtb3ZlQ2xhc3Nlcyhub2RlLCAuLi5mcm9tKTtcbiAgICBhZGRDbGFzc2VzKG5vZGUsIC4uLnRvKTtcbiAgICBkLmFkZCh3YWl0Rm9yVHJhbnNpdGlvbihub2RlLCAocmVhc29uKSA9PiB7XG4gICAgICByZW1vdmVDbGFzc2VzKG5vZGUsIC4uLnRvLCAuLi5iYXNlKTtcbiAgICAgIGFkZENsYXNzZXMobm9kZSwgLi4uZW50ZXJlZCk7XG4gICAgICByZXR1cm4gX2RvbmUocmVhc29uKTtcbiAgICB9KSk7XG4gIH0pO1xuICBkLmFkZCgoKSA9PiByZW1vdmVDbGFzc2VzKG5vZGUsIC4uLmJhc2UsIC4uLmZyb20sIC4uLnRvLCAuLi5lbnRlcmVkKSk7XG4gIGQuYWRkKCgpID0+IF9kb25lKFwiY2FuY2VsbGVkXCIgLyogQ2FuY2VsbGVkICovKSk7XG4gIHJldHVybiBkLmRpc3Bvc2U7XG59XG5cbi8vIHNyYy9jb21wb25lbnRzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24udHNcbmZ1bmN0aW9uIHNwbGl0Q2xhc3NlcyhjbGFzc2VzID0gXCJcIikge1xuICByZXR1cm4gY2xhc3Nlcy5zcGxpdChcIiBcIikuZmlsdGVyKChjbGFzc05hbWUpID0+IGNsYXNzTmFtZS50cmltKCkubGVuZ3RoID4gMSk7XG59XG52YXIgVHJhbnNpdGlvbkNvbnRleHQgPSBTeW1ib2woXCJUcmFuc2l0aW9uQ29udGV4dFwiKTtcbmZ1bmN0aW9uIGhhc1RyYW5zaXRpb25Db250ZXh0KCkge1xuICByZXR1cm4gKDAsIGltcG9ydF92dWUyNy5pbmplY3QpKFRyYW5zaXRpb25Db250ZXh0LCBudWxsKSAhPT0gbnVsbDtcbn1cbmZ1bmN0aW9uIHVzZVRyYW5zaXRpb25Db250ZXh0KCkge1xuICBsZXQgY29udGV4dCA9ICgwLCBpbXBvcnRfdnVlMjcuaW5qZWN0KShUcmFuc2l0aW9uQ29udGV4dCwgbnVsbCk7XG4gIGlmIChjb250ZXh0ID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQSA8VHJhbnNpdGlvbkNoaWxkIC8+IGlzIHVzZWQgYnV0IGl0IGlzIG1pc3NpbmcgYSBwYXJlbnQgPFRyYW5zaXRpb25Sb290IC8+LlwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cbmZ1bmN0aW9uIHVzZVBhcmVudE5lc3RpbmcoKSB7XG4gIGxldCBjb250ZXh0ID0gKDAsIGltcG9ydF92dWUyNy5pbmplY3QpKE5lc3RpbmdDb250ZXh0LCBudWxsKTtcbiAgaWYgKGNvbnRleHQgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJBIDxUcmFuc2l0aW9uQ2hpbGQgLz4gaXMgdXNlZCBidXQgaXQgaXMgbWlzc2luZyBhIHBhcmVudCA8VHJhbnNpdGlvblJvb3QgLz4uXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxudmFyIE5lc3RpbmdDb250ZXh0ID0gU3ltYm9sKFwiTmVzdGluZ0NvbnRleHRcIik7XG5mdW5jdGlvbiBoYXNDaGlsZHJlbihiYWcpIHtcbiAgaWYgKFwiY2hpbGRyZW5cIiBpbiBiYWcpXG4gICAgcmV0dXJuIGhhc0NoaWxkcmVuKGJhZy5jaGlsZHJlbik7XG4gIHJldHVybiBiYWcudmFsdWUuZmlsdGVyKCh7IHN0YXRlIH0pID0+IHN0YXRlID09PSBcInZpc2libGVcIiAvKiBWaXNpYmxlICovKS5sZW5ndGggPiAwO1xufVxuZnVuY3Rpb24gdXNlTmVzdGluZyhkb25lKSB7XG4gIGxldCB0cmFuc2l0aW9uYWJsZUNoaWxkcmVuID0gKDAsIGltcG9ydF92dWUyNy5yZWYpKFtdKTtcbiAgbGV0IG1vdW50ZWQgPSAoMCwgaW1wb3J0X3Z1ZTI3LnJlZikoZmFsc2UpO1xuICAoMCwgaW1wb3J0X3Z1ZTI3Lm9uTW91bnRlZCkoKCkgPT4gbW91bnRlZC52YWx1ZSA9IHRydWUpO1xuICAoMCwgaW1wb3J0X3Z1ZTI3Lm9uVW5tb3VudGVkKSgoKSA9PiBtb3VudGVkLnZhbHVlID0gZmFsc2UpO1xuICBmdW5jdGlvbiB1bnJlZ2lzdGVyKGNoaWxkSWQsIHN0cmF0ZWd5ID0gMSAvKiBIaWRkZW4gKi8pIHtcbiAgICBsZXQgaWR4ID0gdHJhbnNpdGlvbmFibGVDaGlsZHJlbi52YWx1ZS5maW5kSW5kZXgoKHsgaWQ6IGlkMiB9KSA9PiBpZDIgPT09IGNoaWxkSWQpO1xuICAgIGlmIChpZHggPT09IC0xKVxuICAgICAgcmV0dXJuO1xuICAgIG1hdGNoKHN0cmF0ZWd5LCB7XG4gICAgICBbMCAvKiBVbm1vdW50ICovXSgpIHtcbiAgICAgICAgdHJhbnNpdGlvbmFibGVDaGlsZHJlbi52YWx1ZS5zcGxpY2UoaWR4LCAxKTtcbiAgICAgIH0sXG4gICAgICBbMSAvKiBIaWRkZW4gKi9dKCkge1xuICAgICAgICB0cmFuc2l0aW9uYWJsZUNoaWxkcmVuLnZhbHVlW2lkeF0uc3RhdGUgPSBcImhpZGRlblwiIC8qIEhpZGRlbiAqLztcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoIWhhc0NoaWxkcmVuKHRyYW5zaXRpb25hYmxlQ2hpbGRyZW4pICYmIG1vdW50ZWQudmFsdWUpIHtcbiAgICAgIGRvbmUgPT0gbnVsbCA/IHZvaWQgMCA6IGRvbmUoKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gcmVnaXN0ZXIoY2hpbGRJZCkge1xuICAgIGxldCBjaGlsZCA9IHRyYW5zaXRpb25hYmxlQ2hpbGRyZW4udmFsdWUuZmluZCgoeyBpZDogaWQyIH0pID0+IGlkMiA9PT0gY2hpbGRJZCk7XG4gICAgaWYgKCFjaGlsZCkge1xuICAgICAgdHJhbnNpdGlvbmFibGVDaGlsZHJlbi52YWx1ZS5wdXNoKHsgaWQ6IGNoaWxkSWQsIHN0YXRlOiBcInZpc2libGVcIiAvKiBWaXNpYmxlICovIH0pO1xuICAgIH0gZWxzZSBpZiAoY2hpbGQuc3RhdGUgIT09IFwidmlzaWJsZVwiIC8qIFZpc2libGUgKi8pIHtcbiAgICAgIGNoaWxkLnN0YXRlID0gXCJ2aXNpYmxlXCIgLyogVmlzaWJsZSAqLztcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHVucmVnaXN0ZXIoY2hpbGRJZCwgMCAvKiBVbm1vdW50ICovKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGNoaWxkcmVuOiB0cmFuc2l0aW9uYWJsZUNoaWxkcmVuLFxuICAgIHJlZ2lzdGVyLFxuICAgIHVucmVnaXN0ZXJcbiAgfTtcbn1cbnZhciBUcmFuc2l0aW9uQ2hpbGRSZW5kZXJGZWF0dXJlcyA9IDEgLyogUmVuZGVyU3RyYXRlZ3kgKi87XG52YXIgVHJhbnNpdGlvbkNoaWxkID0gKDAsIGltcG9ydF92dWUyNy5kZWZpbmVDb21wb25lbnQpKHtcbiAgcHJvcHM6IHtcbiAgICBhczogeyB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLCBkZWZhdWx0OiBcImRpdlwiIH0sXG4gICAgc2hvdzogeyB0eXBlOiBbQm9vbGVhbl0sIGRlZmF1bHQ6IG51bGwgfSxcbiAgICB1bm1vdW50OiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogdHJ1ZSB9LFxuICAgIGFwcGVhcjogeyB0eXBlOiBbQm9vbGVhbl0sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgZW50ZXI6IHsgdHlwZTogW1N0cmluZ10sIGRlZmF1bHQ6IFwiXCIgfSxcbiAgICBlbnRlckZyb206IHsgdHlwZTogW1N0cmluZ10sIGRlZmF1bHQ6IFwiXCIgfSxcbiAgICBlbnRlclRvOiB7IHR5cGU6IFtTdHJpbmddLCBkZWZhdWx0OiBcIlwiIH0sXG4gICAgZW50ZXJlZDogeyB0eXBlOiBbU3RyaW5nXSwgZGVmYXVsdDogXCJcIiB9LFxuICAgIGxlYXZlOiB7IHR5cGU6IFtTdHJpbmddLCBkZWZhdWx0OiBcIlwiIH0sXG4gICAgbGVhdmVGcm9tOiB7IHR5cGU6IFtTdHJpbmddLCBkZWZhdWx0OiBcIlwiIH0sXG4gICAgbGVhdmVUbzogeyB0eXBlOiBbU3RyaW5nXSwgZGVmYXVsdDogXCJcIiB9XG4gIH0sXG4gIGVtaXRzOiB7XG4gICAgYmVmb3JlRW50ZXI6ICgpID0+IHRydWUsXG4gICAgYWZ0ZXJFbnRlcjogKCkgPT4gdHJ1ZSxcbiAgICBiZWZvcmVMZWF2ZTogKCkgPT4gdHJ1ZSxcbiAgICBhZnRlckxlYXZlOiAoKSA9PiB0cnVlXG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IGVtaXQsIGF0dHJzLCBzbG90cywgZXhwb3NlIH0pIHtcbiAgICBpZiAoIWhhc1RyYW5zaXRpb25Db250ZXh0KCkgJiYgaGFzT3BlbkNsb3NlZCgpKSB7XG4gICAgICByZXR1cm4gKCkgPT4gKDAsIGltcG9ydF92dWUyNy5oKShUcmFuc2l0aW9uUm9vdCwge1xuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgb25CZWZvcmVFbnRlcjogKCkgPT4gZW1pdChcImJlZm9yZUVudGVyXCIpLFxuICAgICAgICBvbkFmdGVyRW50ZXI6ICgpID0+IGVtaXQoXCJhZnRlckVudGVyXCIpLFxuICAgICAgICBvbkJlZm9yZUxlYXZlOiAoKSA9PiBlbWl0KFwiYmVmb3JlTGVhdmVcIiksXG4gICAgICAgIG9uQWZ0ZXJMZWF2ZTogKCkgPT4gZW1pdChcImFmdGVyTGVhdmVcIilcbiAgICAgIH0sIHNsb3RzKTtcbiAgICB9XG4gICAgbGV0IGNvbnRhaW5lciA9ICgwLCBpbXBvcnRfdnVlMjcucmVmKShudWxsKTtcbiAgICBsZXQgc3RhdGUgPSAoMCwgaW1wb3J0X3Z1ZTI3LnJlZikoXCJ2aXNpYmxlXCIgLyogVmlzaWJsZSAqLyk7XG4gICAgbGV0IHN0cmF0ZWd5ID0gKDAsIGltcG9ydF92dWUyNy5jb21wdXRlZCkoKCkgPT4gcHJvcHMudW5tb3VudCA/IDAgLyogVW5tb3VudCAqLyA6IDEgLyogSGlkZGVuICovKTtcbiAgICBleHBvc2UoeyBlbDogY29udGFpbmVyLCAkZWw6IGNvbnRhaW5lciB9KTtcbiAgICBsZXQgeyBzaG93LCBhcHBlYXIgfSA9IHVzZVRyYW5zaXRpb25Db250ZXh0KCk7XG4gICAgbGV0IHsgcmVnaXN0ZXIsIHVucmVnaXN0ZXIgfSA9IHVzZVBhcmVudE5lc3RpbmcoKTtcbiAgICBsZXQgaW5pdGlhbCA9IHsgdmFsdWU6IHRydWUgfTtcbiAgICBsZXQgaWQyID0gdXNlSWQoKTtcbiAgICBsZXQgaXNUcmFuc2l0aW9uaW5nID0geyB2YWx1ZTogZmFsc2UgfTtcbiAgICBsZXQgbmVzdGluZyA9IHVzZU5lc3RpbmcoKCkgPT4ge1xuICAgICAgaWYgKCFpc1RyYW5zaXRpb25pbmcudmFsdWUpIHtcbiAgICAgICAgc3RhdGUudmFsdWUgPSBcImhpZGRlblwiIC8qIEhpZGRlbiAqLztcbiAgICAgICAgdW5yZWdpc3RlcihpZDIpO1xuICAgICAgICBlbWl0KFwiYWZ0ZXJMZWF2ZVwiKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTI3Lm9uTW91bnRlZCkoKCkgPT4ge1xuICAgICAgbGV0IHVucmVnaXN0ZXIyID0gcmVnaXN0ZXIoaWQyKTtcbiAgICAgICgwLCBpbXBvcnRfdnVlMjcub25Vbm1vdW50ZWQpKHVucmVnaXN0ZXIyKTtcbiAgICB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTI3LndhdGNoRWZmZWN0KSgoKSA9PiB7XG4gICAgICBpZiAoc3RyYXRlZ3kudmFsdWUgIT09IDEgLyogSGlkZGVuICovKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoIWlkMilcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKHNob3cgJiYgc3RhdGUudmFsdWUgIT09IFwidmlzaWJsZVwiIC8qIFZpc2libGUgKi8pIHtcbiAgICAgICAgc3RhdGUudmFsdWUgPSBcInZpc2libGVcIiAvKiBWaXNpYmxlICovO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBtYXRjaChzdGF0ZS52YWx1ZSwge1xuICAgICAgICBbXCJoaWRkZW5cIiAvKiBIaWRkZW4gKi9dOiAoKSA9PiB1bnJlZ2lzdGVyKGlkMiksXG4gICAgICAgIFtcInZpc2libGVcIiAvKiBWaXNpYmxlICovXTogKCkgPT4gcmVnaXN0ZXIoaWQyKVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgbGV0IGVudGVyQ2xhc3NlcyA9IHNwbGl0Q2xhc3Nlcyhwcm9wcy5lbnRlcik7XG4gICAgbGV0IGVudGVyRnJvbUNsYXNzZXMgPSBzcGxpdENsYXNzZXMocHJvcHMuZW50ZXJGcm9tKTtcbiAgICBsZXQgZW50ZXJUb0NsYXNzZXMgPSBzcGxpdENsYXNzZXMocHJvcHMuZW50ZXJUbyk7XG4gICAgbGV0IGVudGVyZWRDbGFzc2VzID0gc3BsaXRDbGFzc2VzKHByb3BzLmVudGVyZWQpO1xuICAgIGxldCBsZWF2ZUNsYXNzZXMgPSBzcGxpdENsYXNzZXMocHJvcHMubGVhdmUpO1xuICAgIGxldCBsZWF2ZUZyb21DbGFzc2VzID0gc3BsaXRDbGFzc2VzKHByb3BzLmxlYXZlRnJvbSk7XG4gICAgbGV0IGxlYXZlVG9DbGFzc2VzID0gc3BsaXRDbGFzc2VzKHByb3BzLmxlYXZlVG8pO1xuICAgICgwLCBpbXBvcnRfdnVlMjcub25Nb3VudGVkKSgoKSA9PiB7XG4gICAgICAoMCwgaW1wb3J0X3Z1ZTI3LndhdGNoRWZmZWN0KSgoKSA9PiB7XG4gICAgICAgIGlmIChzdGF0ZS52YWx1ZSA9PT0gXCJ2aXNpYmxlXCIgLyogVmlzaWJsZSAqLykge1xuICAgICAgICAgIGxldCBkb21FbGVtZW50ID0gZG9tKGNvbnRhaW5lcik7XG4gICAgICAgICAgbGV0IGlzRW1wdHlET01Ob2RlID0gZG9tRWxlbWVudCBpbnN0YW5jZW9mIENvbW1lbnQgJiYgZG9tRWxlbWVudC5kYXRhID09PSBcIlwiO1xuICAgICAgICAgIGlmIChpc0VtcHR5RE9NTm9kZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGlkIHlvdSBmb3JnZXQgdG8gcGFzc3Rocm91Z2ggdGhlIGByZWZgIHRvIHRoZSBhY3R1YWwgRE9NIG5vZGU/XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gZXhlY3V0ZVRyYW5zaXRpb24ob25JbnZhbGlkYXRlKSB7XG4gICAgICBsZXQgc2tpcCA9IGluaXRpYWwudmFsdWUgJiYgIWFwcGVhci52YWx1ZTtcbiAgICAgIGxldCBub2RlID0gZG9tKGNvbnRhaW5lcik7XG4gICAgICBpZiAoIW5vZGUgfHwgIShub2RlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoc2tpcClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaXNUcmFuc2l0aW9uaW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgIGlmIChzaG93LnZhbHVlKVxuICAgICAgICBlbWl0KFwiYmVmb3JlRW50ZXJcIik7XG4gICAgICBpZiAoIXNob3cudmFsdWUpXG4gICAgICAgIGVtaXQoXCJiZWZvcmVMZWF2ZVwiKTtcbiAgICAgIG9uSW52YWxpZGF0ZShzaG93LnZhbHVlID8gdHJhbnNpdGlvbihub2RlLCBlbnRlckNsYXNzZXMsIGVudGVyRnJvbUNsYXNzZXMsIGVudGVyVG9DbGFzc2VzLCBlbnRlcmVkQ2xhc3NlcywgKHJlYXNvbikgPT4ge1xuICAgICAgICBpc1RyYW5zaXRpb25pbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgaWYgKHJlYXNvbiA9PT0gXCJmaW5pc2hlZFwiIC8qIEZpbmlzaGVkICovKVxuICAgICAgICAgIGVtaXQoXCJhZnRlckVudGVyXCIpO1xuICAgICAgfSkgOiB0cmFuc2l0aW9uKG5vZGUsIGxlYXZlQ2xhc3NlcywgbGVhdmVGcm9tQ2xhc3NlcywgbGVhdmVUb0NsYXNzZXMsIGVudGVyZWRDbGFzc2VzLCAocmVhc29uKSA9PiB7XG4gICAgICAgIGlzVHJhbnNpdGlvbmluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICBpZiAocmVhc29uICE9PSBcImZpbmlzaGVkXCIgLyogRmluaXNoZWQgKi8pXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoIWhhc0NoaWxkcmVuKG5lc3RpbmcpKSB7XG4gICAgICAgICAgc3RhdGUudmFsdWUgPSBcImhpZGRlblwiIC8qIEhpZGRlbiAqLztcbiAgICAgICAgICB1bnJlZ2lzdGVyKGlkMik7XG4gICAgICAgICAgZW1pdChcImFmdGVyTGVhdmVcIik7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9XG4gICAgKDAsIGltcG9ydF92dWUyNy5vbk1vdW50ZWQpKCgpID0+IHtcbiAgICAgICgwLCBpbXBvcnRfdnVlMjcud2F0Y2gpKFtzaG93XSwgKF9vbGRWYWx1ZXMsIF9uZXdWYWx1ZXMsIG9uSW52YWxpZGF0ZSkgPT4ge1xuICAgICAgICBleGVjdXRlVHJhbnNpdGlvbihvbkludmFsaWRhdGUpO1xuICAgICAgICBpbml0aWFsLnZhbHVlID0gZmFsc2U7XG4gICAgICB9LCB7IGltbWVkaWF0ZTogdHJ1ZSB9KTtcbiAgICB9KTtcbiAgICAoMCwgaW1wb3J0X3Z1ZTI3LnByb3ZpZGUpKE5lc3RpbmdDb250ZXh0LCBuZXN0aW5nKTtcbiAgICB1c2VPcGVuQ2xvc2VkUHJvdmlkZXIoKDAsIGltcG9ydF92dWUyNy5jb21wdXRlZCkoKCkgPT4gbWF0Y2goc3RhdGUudmFsdWUsIHtcbiAgICAgIFtcInZpc2libGVcIiAvKiBWaXNpYmxlICovXTogMCAvKiBPcGVuICovLFxuICAgICAgW1wiaGlkZGVuXCIgLyogSGlkZGVuICovXTogMSAvKiBDbG9zZWQgKi9cbiAgICB9KSkpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsZXQge1xuICAgICAgICBhcHBlYXI6IGFwcGVhcjIsXG4gICAgICAgIHNob3c6IHNob3cyLFxuICAgICAgICBlbnRlcixcbiAgICAgICAgZW50ZXJGcm9tLFxuICAgICAgICBlbnRlclRvLFxuICAgICAgICBlbnRlcmVkLFxuICAgICAgICBsZWF2ZSxcbiAgICAgICAgbGVhdmVGcm9tLFxuICAgICAgICBsZWF2ZVRvLFxuICAgICAgICAuLi5yZXN0XG4gICAgICB9ID0gcHJvcHM7XG4gICAgICBsZXQgb3VyUHJvcHMgPSB7IHJlZjogY29udGFpbmVyIH07XG4gICAgICBsZXQgdGhlaXJQcm9wcyA9IHJlc3Q7XG4gICAgICByZXR1cm4gcmVuZGVyKHtcbiAgICAgICAgdGhlaXJQcm9wcyxcbiAgICAgICAgb3VyUHJvcHMsXG4gICAgICAgIHNsb3Q6IHt9LFxuICAgICAgICBzbG90cyxcbiAgICAgICAgYXR0cnMsXG4gICAgICAgIGZlYXR1cmVzOiBUcmFuc2l0aW9uQ2hpbGRSZW5kZXJGZWF0dXJlcyxcbiAgICAgICAgdmlzaWJsZTogc3RhdGUudmFsdWUgPT09IFwidmlzaWJsZVwiIC8qIFZpc2libGUgKi8sXG4gICAgICAgIG5hbWU6IFwiVHJhbnNpdGlvbkNoaWxkXCJcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIF9UcmFuc2l0aW9uQ2hpbGQgPSBUcmFuc2l0aW9uQ2hpbGQ7XG52YXIgVHJhbnNpdGlvblJvb3QgPSAoMCwgaW1wb3J0X3Z1ZTI3LmRlZmluZUNvbXBvbmVudCkoe1xuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBwcm9wczoge1xuICAgIGFzOiB7IHR5cGU6IFtPYmplY3QsIFN0cmluZ10sIGRlZmF1bHQ6IFwiZGl2XCIgfSxcbiAgICBzaG93OiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogbnVsbCB9LFxuICAgIHVubW91bnQ6IHsgdHlwZTogW0Jvb2xlYW5dLCBkZWZhdWx0OiB0cnVlIH0sXG4gICAgYXBwZWFyOiB7IHR5cGU6IFtCb29sZWFuXSwgZGVmYXVsdDogZmFsc2UgfSxcbiAgICBlbnRlcjogeyB0eXBlOiBbU3RyaW5nXSwgZGVmYXVsdDogXCJcIiB9LFxuICAgIGVudGVyRnJvbTogeyB0eXBlOiBbU3RyaW5nXSwgZGVmYXVsdDogXCJcIiB9LFxuICAgIGVudGVyVG86IHsgdHlwZTogW1N0cmluZ10sIGRlZmF1bHQ6IFwiXCIgfSxcbiAgICBlbnRlcmVkOiB7IHR5cGU6IFtTdHJpbmddLCBkZWZhdWx0OiBcIlwiIH0sXG4gICAgbGVhdmU6IHsgdHlwZTogW1N0cmluZ10sIGRlZmF1bHQ6IFwiXCIgfSxcbiAgICBsZWF2ZUZyb206IHsgdHlwZTogW1N0cmluZ10sIGRlZmF1bHQ6IFwiXCIgfSxcbiAgICBsZWF2ZVRvOiB7IHR5cGU6IFtTdHJpbmddLCBkZWZhdWx0OiBcIlwiIH1cbiAgfSxcbiAgZW1pdHM6IHtcbiAgICBiZWZvcmVFbnRlcjogKCkgPT4gdHJ1ZSxcbiAgICBhZnRlckVudGVyOiAoKSA9PiB0cnVlLFxuICAgIGJlZm9yZUxlYXZlOiAoKSA9PiB0cnVlLFxuICAgIGFmdGVyTGVhdmU6ICgpID0+IHRydWVcbiAgfSxcbiAgc2V0dXAocHJvcHMsIHsgZW1pdCwgYXR0cnMsIHNsb3RzIH0pIHtcbiAgICBsZXQgdXNlc09wZW5DbG9zZWRTdGF0ZSA9IHVzZU9wZW5DbG9zZWQoKTtcbiAgICBsZXQgc2hvdyA9ICgwLCBpbXBvcnRfdnVlMjcuY29tcHV0ZWQpKCgpID0+IHtcbiAgICAgIGlmIChwcm9wcy5zaG93ID09PSBudWxsICYmIHVzZXNPcGVuQ2xvc2VkU3RhdGUgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG1hdGNoKHVzZXNPcGVuQ2xvc2VkU3RhdGUudmFsdWUsIHtcbiAgICAgICAgICBbMCAvKiBPcGVuICovXTogdHJ1ZSxcbiAgICAgICAgICBbMSAvKiBDbG9zZWQgKi9dOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9wcy5zaG93O1xuICAgIH0pO1xuICAgICgwLCBpbXBvcnRfdnVlMjcud2F0Y2hFZmZlY3QpKCgpID0+IHtcbiAgICAgIGlmICghW3RydWUsIGZhbHNlXS5pbmNsdWRlcyhzaG93LnZhbHVlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0EgPFRyYW5zaXRpb24gLz4gaXMgdXNlZCBidXQgaXQgaXMgbWlzc2luZyBhIGA6c2hvdz1cInRydWUgfCBmYWxzZVwiYCBwcm9wLicpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGxldCBzdGF0ZSA9ICgwLCBpbXBvcnRfdnVlMjcucmVmKShzaG93LnZhbHVlID8gXCJ2aXNpYmxlXCIgLyogVmlzaWJsZSAqLyA6IFwiaGlkZGVuXCIgLyogSGlkZGVuICovKTtcbiAgICBsZXQgbmVzdGluZ0JhZyA9IHVzZU5lc3RpbmcoKCkgPT4ge1xuICAgICAgc3RhdGUudmFsdWUgPSBcImhpZGRlblwiIC8qIEhpZGRlbiAqLztcbiAgICB9KTtcbiAgICBsZXQgaW5pdGlhbCA9ICgwLCBpbXBvcnRfdnVlMjcucmVmKSh0cnVlKTtcbiAgICBsZXQgdHJhbnNpdGlvbkJhZyA9IHtcbiAgICAgIHNob3csXG4gICAgICBhcHBlYXI6ICgwLCBpbXBvcnRfdnVlMjcuY29tcHV0ZWQpKCgpID0+IHByb3BzLmFwcGVhciB8fCAhaW5pdGlhbC52YWx1ZSlcbiAgICB9O1xuICAgICgwLCBpbXBvcnRfdnVlMjcub25Nb3VudGVkKSgoKSA9PiB7XG4gICAgICAoMCwgaW1wb3J0X3Z1ZTI3LndhdGNoRWZmZWN0KSgoKSA9PiB7XG4gICAgICAgIGluaXRpYWwudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgaWYgKHNob3cudmFsdWUpIHtcbiAgICAgICAgICBzdGF0ZS52YWx1ZSA9IFwidmlzaWJsZVwiIC8qIFZpc2libGUgKi87XG4gICAgICAgIH0gZWxzZSBpZiAoIWhhc0NoaWxkcmVuKG5lc3RpbmdCYWcpKSB7XG4gICAgICAgICAgc3RhdGUudmFsdWUgPSBcImhpZGRlblwiIC8qIEhpZGRlbiAqLztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgKDAsIGltcG9ydF92dWUyNy5wcm92aWRlKShOZXN0aW5nQ29udGV4dCwgbmVzdGluZ0JhZyk7XG4gICAgKDAsIGltcG9ydF92dWUyNy5wcm92aWRlKShUcmFuc2l0aW9uQ29udGV4dCwgdHJhbnNpdGlvbkJhZyk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxldCB0aGVpclByb3BzID0gb21pdChwcm9wcywgW1xuICAgICAgICBcInNob3dcIixcbiAgICAgICAgXCJhcHBlYXJcIixcbiAgICAgICAgXCJ1bm1vdW50XCIsXG4gICAgICAgIFwib25CZWZvcmVFbnRlclwiLFxuICAgICAgICBcIm9uQmVmb3JlTGVhdmVcIixcbiAgICAgICAgXCJvbkFmdGVyRW50ZXJcIixcbiAgICAgICAgXCJvbkFmdGVyTGVhdmVcIlxuICAgICAgXSk7XG4gICAgICBsZXQgc2hhcmVkUHJvcHMgPSB7IHVubW91bnQ6IHByb3BzLnVubW91bnQgfTtcbiAgICAgIHJldHVybiByZW5kZXIoe1xuICAgICAgICBvdXJQcm9wczoge1xuICAgICAgICAgIC4uLnNoYXJlZFByb3BzLFxuICAgICAgICAgIGFzOiBcInRlbXBsYXRlXCJcbiAgICAgICAgfSxcbiAgICAgICAgdGhlaXJQcm9wczoge30sXG4gICAgICAgIHNsb3Q6IHt9LFxuICAgICAgICBzbG90czoge1xuICAgICAgICAgIC4uLnNsb3RzLFxuICAgICAgICAgIGRlZmF1bHQ6ICgpID0+IFtcbiAgICAgICAgICAgICgwLCBpbXBvcnRfdnVlMjcuaCkoX1RyYW5zaXRpb25DaGlsZCwge1xuICAgICAgICAgICAgICBvbkJlZm9yZUVudGVyOiAoKSA9PiBlbWl0KFwiYmVmb3JlRW50ZXJcIiksXG4gICAgICAgICAgICAgIG9uQWZ0ZXJFbnRlcjogKCkgPT4gZW1pdChcImFmdGVyRW50ZXJcIiksXG4gICAgICAgICAgICAgIG9uQmVmb3JlTGVhdmU6ICgpID0+IGVtaXQoXCJiZWZvcmVMZWF2ZVwiKSxcbiAgICAgICAgICAgICAgb25BZnRlckxlYXZlOiAoKSA9PiBlbWl0KFwiYWZ0ZXJMZWF2ZVwiKSxcbiAgICAgICAgICAgICAgLi4uYXR0cnMsXG4gICAgICAgICAgICAgIC4uLnNoYXJlZFByb3BzLFxuICAgICAgICAgICAgICAuLi50aGVpclByb3BzXG4gICAgICAgICAgICB9LCBzbG90cy5kZWZhdWx0KVxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgYXR0cnM6IHt9LFxuICAgICAgICBmZWF0dXJlczogVHJhbnNpdGlvbkNoaWxkUmVuZGVyRmVhdHVyZXMsXG4gICAgICAgIHZpc2libGU6IHN0YXRlLnZhbHVlID09PSBcInZpc2libGVcIiAvKiBWaXNpYmxlICovLFxuICAgICAgICBuYW1lOiBcIlRyYW5zaXRpb25cIlxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCdcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2hlYWRsZXNzdWkucHJvZC5janMnKVxufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2hlYWRsZXNzdWkuZGV2LmNqcycpXG59XG4iLCIoZnVuY3Rpb24oZSxjKXt0eXBlb2YgZXhwb3J0cz09XCJvYmplY3RcIiYmdHlwZW9mIG1vZHVsZTxcInVcIj9tb2R1bGUuZXhwb3J0cz1jKHJlcXVpcmUoXCJ2dWVcIikscmVxdWlyZShcImRhdGUtZm5zXCIpKTp0eXBlb2YgZGVmaW5lPT1cImZ1bmN0aW9uXCImJmRlZmluZS5hbWQ/ZGVmaW5lKFtcInZ1ZVwiLFwiZGF0ZS1mbnNcIl0sYyk6KGU9dHlwZW9mIGdsb2JhbFRoaXM8XCJ1XCI/Z2xvYmFsVGhpczplfHxzZWxmLGUuVnVlRGF0ZVBpY2tlcj1jKGUuVnVlLGUuZGF0ZUZucykpfSkodGhpcyxmdW5jdGlvbihlLGMpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIEhlKCl7cmV0dXJuIGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJzdmdcIix7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHZpZXdCb3g6XCIwIDAgMzIgMzJcIixmaWxsOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwiLGNsYXNzOlwiZHBfX2ljb25cIn0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwicGF0aFwiLHtkOlwiTTI5LjMzMyA4YzAtMi4yMDgtMS43OTItNC00LTRoLTE4LjY2N2MtMi4yMDggMC00IDEuNzkyLTQgNHYxOC42NjdjMCAyLjIwOCAxLjc5MiA0IDQgNGgxOC42NjdjMi4yMDggMCA0LTEuNzkyIDQtNHYtMTguNjY3ek0yNi42NjcgOHYxOC42NjdjMCAwLjczNi0wLjU5NyAxLjMzMy0xLjMzMyAxLjMzMyAwIDAtMTguNjY3IDAtMTguNjY3IDAtMC43MzYgMC0xLjMzMy0wLjU5Ny0xLjMzMy0xLjMzMyAwIDAgMC0xOC42NjcgMC0xOC42NjcgMC0wLjczNiAwLjU5Ny0xLjMzMyAxLjMzMy0xLjMzMyAwIDAgMTguNjY3IDAgMTguNjY3IDAgMC43MzYgMCAxLjMzMyAwLjU5NyAxLjMzMyAxLjMzM3pcIn0pLGUuY3JlYXRlRWxlbWVudFZOb2RlKFwicGF0aFwiLHtkOlwiTTIwIDIuNjY3djUuMzMzYzAgMC43MzYgMC41OTcgMS4zMzMgMS4zMzMgMS4zMzNzMS4zMzMtMC41OTcgMS4zMzMtMS4zMzN2LTUuMzMzYzAtMC43MzYtMC41OTctMS4zMzMtMS4zMzMtMS4zMzNzLTEuMzMzIDAuNTk3LTEuMzMzIDEuMzMzelwifSksZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJwYXRoXCIse2Q6XCJNOS4zMzMgMi42Njd2NS4zMzNjMCAwLjczNiAwLjU5NyAxLjMzMyAxLjMzMyAxLjMzM3MxLjMzMy0wLjU5NyAxLjMzMy0xLjMzM3YtNS4zMzNjMC0wLjczNi0wLjU5Ny0xLjMzMy0xLjMzMy0xLjMzM3MtMS4zMzMgMC41OTctMS4zMzMgMS4zMzN6XCJ9KSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcInBhdGhcIix7ZDpcIk00IDE0LjY2N2gyNGMwLjczNiAwIDEuMzMzLTAuNTk3IDEuMzMzLTEuMzMzcy0wLjU5Ny0xLjMzMy0xLjMzMy0xLjMzM2gtMjRjLTAuNzM2IDAtMS4zMzMgMC41OTctMS4zMzMgMS4zMzNzMC41OTcgMS4zMzMgMS4zMzMgMS4zMzN6XCJ9KV0pfWZ1bmN0aW9uIGVuKCl7cmV0dXJuIGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJzdmdcIix7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHZpZXdCb3g6XCIwIDAgMzIgMzJcIixmaWxsOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwiLGNsYXNzOlwiZHBfX2ljb25cIn0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwicGF0aFwiLHtkOlwiTTIzLjA1NyA3LjA1N2wtMTYgMTZjLTAuNTIgMC41Mi0wLjUyIDEuMzY1IDAgMS44ODVzMS4zNjUgMC41MiAxLjg4NSAwbDE2LTE2YzAuNTItMC41MiAwLjUyLTEuMzY1IDAtMS44ODVzLTEuMzY1LTAuNTItMS44ODUgMHpcIn0pLGUuY3JlYXRlRWxlbWVudFZOb2RlKFwicGF0aFwiLHtkOlwiTTcuMDU3IDguOTQzbDE2IDE2YzAuNTIgMC41MiAxLjM2NSAwLjUyIDEuODg1IDBzMC41Mi0xLjM2NSAwLTEuODg1bC0xNi0xNmMtMC41Mi0wLjUyLTEuMzY1LTAuNTItMS44ODUgMHMtMC41MiAxLjM2NSAwIDEuODg1elwifSldKX1mdW5jdGlvbiBOdCgpe3JldHVybiBlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwic3ZnXCIse3htbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix2aWV3Qm94OlwiMCAwIDMyIDMyXCIsZmlsbDpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIixjbGFzczpcImRwX19pY29uXCJ9LFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcInBhdGhcIix7ZDpcIk0yMC45NDMgMjMuMDU3bC03LjA1Ny03LjA1N2MwIDAgNy4wNTctNy4wNTcgNy4wNTctNy4wNTcgMC41Mi0wLjUyIDAuNTItMS4zNjUgMC0xLjg4NXMtMS4zNjUtMC41Mi0xLjg4NSAwbC04IDhjLTAuNTIxIDAuNTIxLTAuNTIxIDEuMzY1IDAgMS44ODVsOCA4YzAuNTIgMC41MiAxLjM2NSAwLjUyIDEuODg1IDBzMC41Mi0xLjM2NSAwLTEuODg1elwifSldKX1mdW5jdGlvbiB2dCgpe3JldHVybiBlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwic3ZnXCIse3htbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix2aWV3Qm94OlwiMCAwIDMyIDMyXCIsZmlsbDpcImN1cnJlbnRDb2xvclwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIixjbGFzczpcImRwX19pY29uXCJ9LFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcInBhdGhcIix7ZDpcIk0xMi45NDMgMjQuOTQzbDgtOGMwLjUyMS0wLjUyMSAwLjUyMS0xLjM2NSAwLTEuODg1bC04LThjLTAuNTItMC41Mi0xLjM2NS0wLjUyLTEuODg1IDBzLTAuNTIgMS4zNjUgMCAxLjg4NWw3LjA1NyA3LjA1N2MwIDAtNy4wNTcgNy4wNTctNy4wNTcgNy4wNTctMC41MiAwLjUyLTAuNTIgMS4zNjUgMCAxLjg4NXMxLjM2NSAwLjUyIDEuODg1IDB6XCJ9KV0pfWZ1bmN0aW9uIFR0KCl7cmV0dXJuIGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJzdmdcIix7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHZpZXdCb3g6XCIwIDAgMzIgMzJcIixmaWxsOlwiY3VycmVudENvbG9yXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwiLGNsYXNzOlwiZHBfX2ljb25cIn0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwicGF0aFwiLHtkOlwiTTE2IDEuMzMzYy04LjA5NSAwLTE0LjY2NyA2LjU3Mi0xNC42NjcgMTQuNjY3czYuNTcyIDE0LjY2NyAxNC42NjcgMTQuNjY3YzguMDk1IDAgMTQuNjY3LTYuNTcyIDE0LjY2Ny0xNC42NjdzLTYuNTcyLTE0LjY2Ny0xNC42NjctMTQuNjY3ek0xNiA0YzYuNjIzIDAgMTIgNS4zNzcgMTIgMTJzLTUuMzc3IDEyLTEyIDEyYy02LjYyMyAwLTEyLTUuMzc3LTEyLTEyczUuMzc3LTEyIDEyLTEyelwifSksZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJwYXRoXCIse2Q6XCJNMTQuNjY3IDh2OGMwIDAuNTA1IDAuMjg1IDAuOTY3IDAuNzM3IDEuMTkzbDUuMzMzIDIuNjY3YzAuNjU4IDAuMzI5IDEuNDYgMC4wNjIgMS43ODktMC41OTZzMC4wNjItMS40Ni0wLjU5Ni0xLjc4OWwtNC41OTYtMi4yOThjMCAwIDAtNy4xNzYgMC03LjE3NiAwLTAuNzM2LTAuNTk3LTEuMzMzLTEuMzMzLTEuMzMzcy0xLjMzMyAwLjU5Ny0xLjMzMyAxLjMzM3pcIn0pXSl9ZnVuY3Rpb24gUHQoKXtyZXR1cm4gZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcInN2Z1wiLHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsdmlld0JveDpcIjAgMCAzMiAzMlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCIsY2xhc3M6XCJkcF9faWNvblwifSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJwYXRoXCIse2Q6XCJNMjQuOTQzIDE5LjA1N2wtOC04Yy0wLjUyMS0wLjUyMS0xLjM2NS0wLjUyMS0xLjg4NSAwbC04IDhjLTAuNTIgMC41Mi0wLjUyIDEuMzY1IDAgMS44ODVzMS4zNjUgMC41MiAxLjg4NSAwbDcuMDU3LTcuMDU3YzAgMCA3LjA1NyA3LjA1NyA3LjA1NyA3LjA1NyAwLjUyIDAuNTIgMS4zNjUgMC41MiAxLjg4NSAwczAuNTItMS4zNjUgMC0xLjg4NXpcIn0pXSl9ZnVuY3Rpb24gQXQoKXtyZXR1cm4gZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcInN2Z1wiLHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsdmlld0JveDpcIjAgMCAzMiAzMlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCIsY2xhc3M6XCJkcF9faWNvblwifSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJwYXRoXCIse2Q6XCJNNy4wNTcgMTIuOTQzbDggOGMwLjUyMSAwLjUyMSAxLjM2NSAwLjUyMSAxLjg4NSAwbDgtOGMwLjUyLTAuNTIgMC41Mi0xLjM2NSAwLTEuODg1cy0xLjM2NS0wLjUyLTEuODg1IDBsLTcuMDU3IDcuMDU3YzAgMC03LjA1Ny03LjA1Ny03LjA1Ny03LjA1Ny0wLjUyLTAuNTItMS4zNjUtMC41Mi0xLjg4NSAwcy0wLjUyIDEuMzY1IDAgMS44ODV6XCJ9KV0pfWNvbnN0IFZ0PSh0LGEscixuLHUpPT57Y29uc3QgbT1jLnBhcnNlKHQsYS5zbGljZSgwLHQubGVuZ3RoKSxuZXcgRGF0ZSk7cmV0dXJuIGMuaXNWYWxpZChtKSYmYy5pc0RhdGUobSk/bnx8dT9tOmMuc2V0KG0se2hvdXJzOityLmhvdXJzLG1pbnV0ZXM6KyhyPT1udWxsP3ZvaWQgMDpyLm1pbnV0ZXMpLHNlY29uZHM6KyhyPT1udWxsP3ZvaWQgMDpyLnNlY29uZHMpLG1pbGxpc2Vjb25kczowfSk6bnVsbH0sdG49KHQsYSxyLG4sdSk9Pntjb25zdCBtPUFycmF5LmlzQXJyYXkocik/clswXTpyO2lmKHR5cGVvZiBhPT1cInN0cmluZ1wiKXJldHVybiBWdCh0LGEsbSxuLHUpO2lmKEFycmF5LmlzQXJyYXkoYSkpe2xldCBoPW51bGw7Zm9yKGNvbnN0IFQgb2YgYSlpZihoPVZ0KHQsVCxtLG4sdSksaClicmVhaztyZXR1cm4gaH1yZXR1cm4gdHlwZW9mIGE9PVwiZnVuY3Rpb25cIj9hKHQpOm51bGx9LFM9dD0+dD9uZXcgRGF0ZSh0KTpuZXcgRGF0ZSxubj0odCxhLHIpPT57aWYoYSl7Y29uc3QgdT0odC5nZXRNb250aCgpKzEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMixcIjBcIiksbT10LmdldERhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsXCIwXCIpLGg9dC5nZXRIb3VycygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMixcIjBcIiksVD10LmdldE1pbnV0ZXMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsXCIwXCIpLF89cj90LmdldFNlY29uZHMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsXCIwXCIpOlwiMDBcIjtyZXR1cm5gJHt0LmdldEZ1bGxZZWFyKCl9LSR7dX0tJHttfVQke2h9OiR7VH06JHtffS4wMDBaYH1jb25zdCBuPURhdGUuVVRDKHQuZ2V0VVRDRnVsbFllYXIoKSx0LmdldFVUQ01vbnRoKCksdC5nZXRVVENEYXRlKCksdC5nZXRVVENIb3VycygpLHQuZ2V0VVRDTWludXRlcygpLHQuZ2V0VVRDU2Vjb25kcygpKTtyZXR1cm4gbmV3IERhdGUobikudG9JU09TdHJpbmcoKX0sTWU9dD0+e2xldCBhPVMoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0KSkpO3JldHVybiBhPWMuc2V0SG91cnMoYSwwKSxhPWMuc2V0TWludXRlcyhhLDApLGE9Yy5zZXRTZWNvbmRzKGEsMCksYT1jLnNldE1pbGxpc2Vjb25kcyhhLDApLGF9LENlPSh0LGEscixuKT0+e2xldCB1PXQ/Uyh0KTpTKCk7cmV0dXJuKGF8fGE9PT0wKSYmKHU9Yy5zZXRIb3Vycyh1LCthKSksKHJ8fHI9PT0wKSYmKHU9Yy5zZXRNaW51dGVzKHUsK3IpKSwobnx8bj09PTApJiYodT1jLnNldFNlY29uZHModSwrbikpLGMuc2V0TWlsbGlzZWNvbmRzKHUsMCl9LGdlPSh0LGEpPT4hdHx8IWE/ITE6Yy5pc0JlZm9yZShNZSh0KSxNZShhKSksb2U9KHQsYSk9PiF0fHwhYT8hMTpjLmlzRXF1YWwoTWUodCksTWUoYSkpLGhlPSh0LGEpPT4hdHx8IWE/ITE6Yy5pc0FmdGVyKE1lKHQpLE1lKGEpKSxFdD0odCxhLHIpPT50JiZ0WzBdJiZ0WzFdP2hlKHIsdFswXSkmJmdlKHIsdFsxXSk6dCYmdFswXSYmYT9oZShyLHRbMF0pJiZnZShyLGEpfHxnZShyLHRbMF0pJiZoZShyLGEpOiExLHhlPXQ9Pntjb25zdCBhPWMuc2V0KG5ldyBEYXRlKHQpLHtkYXRlOjF9KTtyZXR1cm4gTWUoYSl9LGV0PSh0LGEscik9PmEmJihyfHxyPT09MCk/T2JqZWN0LmZyb21FbnRyaWVzKFtcImhvdXJzXCIsXCJtaW51dGVzXCIsXCJzZWNvbmRzXCJdLm1hcChuPT5uPT09YT9bbixyXTpbbixpc05hTigrdFtuXSk/dm9pZCAwOit0W25dXSkpOntob3Vyczppc05hTigrdC5ob3Vycyk/dm9pZCAwOit0LmhvdXJzLG1pbnV0ZXM6aXNOYU4oK3QubWludXRlcyk/dm9pZCAwOit0Lm1pbnV0ZXMsc2Vjb25kczppc05hTigrdC5zZWNvbmRzKT92b2lkIDA6K3Quc2Vjb25kc30samU9dD0+KHtob3VyczpjLmdldEhvdXJzKHQpLG1pbnV0ZXM6Yy5nZXRNaW51dGVzKHQpLHNlY29uZHM6Yy5nZXRTZWNvbmRzKHQpfSksTGU9ZS5yZWFjdGl2ZSh7bWVudUZvY3VzZWQ6ITEsc2hpZnRLZXlJbk1lbnU6ITF9KSxSdD0oKT0+e2NvbnN0IHQ9bj0+e0xlLm1lbnVGb2N1c2VkPW59LGE9bj0+e0xlLnNoaWZ0S2V5SW5NZW51IT09biYmKExlLnNoaWZ0S2V5SW5NZW51PW4pfTtyZXR1cm57Y29udHJvbDplLmNvbXB1dGVkKCgpPT4oe3NoaWZ0S2V5SW5NZW51OkxlLnNoaWZ0S2V5SW5NZW51LG1lbnVGb2N1c2VkOkxlLm1lbnVGb2N1c2VkfSkpLHNldE1lbnVGb2N1c2VkOnQsc2V0U2hpZnRLZXk6YX19O2Z1bmN0aW9uIHR0KHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LFwiZGVmYXVsdFwiKT90LmRlZmF1bHQ6dH12YXIgX3Q9e2V4cG9ydHM6e319OyhmdW5jdGlvbih0KXtmdW5jdGlvbiBhKHIpe3JldHVybiByJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfX10LmV4cG9ydHM9YSx0LmV4cG9ydHMuX19lc01vZHVsZT0hMCx0LmV4cG9ydHMuZGVmYXVsdD10LmV4cG9ydHN9KShfdCk7dmFyIGFuPV90LmV4cG9ydHMsbnQ9e2V4cG9ydHM6e319OyhmdW5jdGlvbih0LGEpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGEuZGVmYXVsdD1yO2Z1bmN0aW9uIHIobil7aWYobj09PW51bGx8fG49PT0hMHx8bj09PSExKXJldHVybiBOYU47dmFyIHU9TnVtYmVyKG4pO3JldHVybiBpc05hTih1KT91OnU8MD9NYXRoLmNlaWwodSk6TWF0aC5mbG9vcih1KX10LmV4cG9ydHM9YS5kZWZhdWx0fSkobnQsbnQuZXhwb3J0cyk7dmFyIHJuPW50LmV4cG9ydHM7Y29uc3QgbG49dHQocm4pO3ZhciBhdD17ZXhwb3J0czp7fX07KGZ1bmN0aW9uKHQsYSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksYS5kZWZhdWx0PXI7ZnVuY3Rpb24gcihuKXt2YXIgdT1uZXcgRGF0ZShEYXRlLlVUQyhuLmdldEZ1bGxZZWFyKCksbi5nZXRNb250aCgpLG4uZ2V0RGF0ZSgpLG4uZ2V0SG91cnMoKSxuLmdldE1pbnV0ZXMoKSxuLmdldFNlY29uZHMoKSxuLmdldE1pbGxpc2Vjb25kcygpKSk7cmV0dXJuIHUuc2V0VVRDRnVsbFllYXIobi5nZXRGdWxsWWVhcigpKSxuLmdldFRpbWUoKS11LmdldFRpbWUoKX10LmV4cG9ydHM9YS5kZWZhdWx0fSkoYXQsYXQuZXhwb3J0cyk7dmFyIG9uPWF0LmV4cG9ydHM7Y29uc3QgT3Q9dHQob24pO2Z1bmN0aW9uIHNuKHQsYSl7dmFyIHI9Zm4oYSk7cmV0dXJuIHIuZm9ybWF0VG9QYXJ0cz9jbihyLHQpOmRuKHIsdCl9dmFyIHVuPXt5ZWFyOjAsbW9udGg6MSxkYXk6Mixob3VyOjMsbWludXRlOjQsc2Vjb25kOjV9O2Z1bmN0aW9uIGNuKHQsYSl7dHJ5e2Zvcih2YXIgcj10LmZvcm1hdFRvUGFydHMoYSksbj1bXSx1PTA7dTxyLmxlbmd0aDt1Kyspe3ZhciBtPXVuW3JbdV0udHlwZV07bT49MCYmKG5bbV09cGFyc2VJbnQoclt1XS52YWx1ZSwxMCkpfXJldHVybiBufWNhdGNoKGgpe2lmKGggaW5zdGFuY2VvZiBSYW5nZUVycm9yKXJldHVybltOYU5dO3Rocm93IGh9fWZ1bmN0aW9uIGRuKHQsYSl7dmFyIHI9dC5mb3JtYXQoYSkucmVwbGFjZSgvXFx1MjAwRS9nLFwiXCIpLG49LyhcXGQrKVxcLyhcXGQrKVxcLyhcXGQrKSw/IChcXGQrKTooXFxkKyk6KFxcZCspLy5leGVjKHIpO3JldHVybltuWzNdLG5bMV0sblsyXSxuWzRdLG5bNV0sbls2XV19dmFyIHJ0PXt9O2Z1bmN0aW9uIGZuKHQpe2lmKCFydFt0XSl7dmFyIGE9bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoXCJlbi1VU1wiLHtob3VyMTI6ITEsdGltZVpvbmU6XCJBbWVyaWNhL05ld19Zb3JrXCIseWVhcjpcIm51bWVyaWNcIixtb250aDpcIm51bWVyaWNcIixkYXk6XCIyLWRpZ2l0XCIsaG91cjpcIjItZGlnaXRcIixtaW51dGU6XCIyLWRpZ2l0XCIsc2Vjb25kOlwiMi1kaWdpdFwifSkuZm9ybWF0KG5ldyBEYXRlKFwiMjAxNC0wNi0yNVQwNDowMDowMC4xMjNaXCIpKSxyPWE9PT1cIjA2LzI1LzIwMTQsIDAwOjAwOjAwXCJ8fGE9PT1cIuKAjjA24oCOL+KAjjI14oCOL+KAjjIwMTTigI4g4oCOMDDigI464oCOMDDigI464oCOMDBcIjtydFt0XT1yP25ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFwiZW4tVVNcIix7aG91cjEyOiExLHRpbWVab25lOnQseWVhcjpcIm51bWVyaWNcIixtb250aDpcIm51bWVyaWNcIixkYXk6XCIyLWRpZ2l0XCIsaG91cjpcIjItZGlnaXRcIixtaW51dGU6XCIyLWRpZ2l0XCIsc2Vjb25kOlwiMi1kaWdpdFwifSk6bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoXCJlbi1VU1wiLHtob3VyQ3ljbGU6XCJoMjNcIix0aW1lWm9uZTp0LHllYXI6XCJudW1lcmljXCIsbW9udGg6XCJudW1lcmljXCIsZGF5OlwiMi1kaWdpdFwiLGhvdXI6XCIyLWRpZ2l0XCIsbWludXRlOlwiMi1kaWdpdFwiLHNlY29uZDpcIjItZGlnaXRcIn0pfXJldHVybiBydFt0XX1mdW5jdGlvbiBsdCh0LGEscixuLHUsbSxoKXt2YXIgVD1uZXcgRGF0ZSgwKTtyZXR1cm4gVC5zZXRVVENGdWxsWWVhcih0LGEsciksVC5zZXRVVENIb3VycyhuLHUsbSxoKSxUfXZhciBZdD0zNmU1LG1uPTZlNCxvdD17dGltZXpvbmU6LyhbWistXS4qKSQvLHRpbWV6b25lWjovXihaKSQvLHRpbWV6b25lSEg6L14oWystXVxcZHsyfSkkLyx0aW1lem9uZUhITU06L14oWystXVxcZHsyfSk6PyhcXGR7Mn0pJC99O2Z1bmN0aW9uIHN0KHQsYSxyKXt2YXIgbix1O2lmKCF0fHwobj1vdC50aW1lem9uZVouZXhlYyh0KSxuKSlyZXR1cm4gMDt2YXIgbTtpZihuPW90LnRpbWV6b25lSEguZXhlYyh0KSxuKXJldHVybiBtPXBhcnNlSW50KG5bMV0sMTApLEl0KG0pPy0obSpZdCk6TmFOO2lmKG49b3QudGltZXpvbmVISE1NLmV4ZWModCksbil7bT1wYXJzZUludChuWzFdLDEwKTt2YXIgaD1wYXJzZUludChuWzJdLDEwKTtyZXR1cm4gSXQobSxoKT8odT1NYXRoLmFicyhtKSpZdCtoKm1uLG0+MD8tdTp1KTpOYU59aWYoZ24odCkpe2E9bmV3IERhdGUoYXx8RGF0ZS5ub3coKSk7dmFyIFQ9cj9hOnluKGEpLF89aXQoVCx0KSxOPXI/XzpwbihhLF8sdCk7cmV0dXJuLU59cmV0dXJuIE5hTn1mdW5jdGlvbiB5bih0KXtyZXR1cm4gbHQodC5nZXRGdWxsWWVhcigpLHQuZ2V0TW9udGgoKSx0LmdldERhdGUoKSx0LmdldEhvdXJzKCksdC5nZXRNaW51dGVzKCksdC5nZXRTZWNvbmRzKCksdC5nZXRNaWxsaXNlY29uZHMoKSl9ZnVuY3Rpb24gaXQodCxhKXt2YXIgcj1zbih0LGEpLG49bHQoclswXSxyWzFdLTEsclsyXSxyWzNdJTI0LHJbNF0scls1XSwwKS5nZXRUaW1lKCksdT10LmdldFRpbWUoKSxtPXUlMWUzO3JldHVybiB1LT1tPj0wP206MWUzK20sbi11fWZ1bmN0aW9uIHBuKHQsYSxyKXt2YXIgbj10LmdldFRpbWUoKSx1PW4tYSxtPWl0KG5ldyBEYXRlKHUpLHIpO2lmKGE9PT1tKXJldHVybiBhO3UtPW0tYTt2YXIgaD1pdChuZXcgRGF0ZSh1KSxyKTtyZXR1cm4gbT09PWg/bTpNYXRoLm1heChtLGgpfWZ1bmN0aW9uIEl0KHQsYSl7cmV0dXJuLTIzPD10JiZ0PD0yMyYmKGE9PW51bGx8fDA8PWEmJmE8PTU5KX12YXIgeHQ9e307ZnVuY3Rpb24gZ24odCl7aWYoeHRbdF0pcmV0dXJuITA7dHJ5e3JldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh2b2lkIDAse3RpbWVab25lOnR9KSx4dFt0XT0hMCwhMH1jYXRjaHtyZXR1cm4hMX19dmFyIGhuPS8oWnxbKy1dXFxkezJ9KD86Oj9cXGR7Mn0pP3wgVVRDfCBbYS16QS1aXStcXC9bYS16QS1aX10rKD86XFwvW2EtekEtWl9dKyk/KSQvO2NvbnN0IEx0PWhuO3ZhciB1dD0zNmU1LHp0PTZlNCxrbj0yLGtlPXtkYXRlVGltZVBhdHRlcm46L14oWzAtOVcrLV0rKShUfCApKC4qKS8sZGF0ZVBhdHRlcm46L14oWzAtOVcrLV0rKSguKikvLHBsYWluVGltZTovOi8sWVk6L14oXFxkezJ9KSQvLFlZWTpbL14oWystXVxcZHsyfSkkLywvXihbKy1dXFxkezN9KSQvLC9eKFsrLV1cXGR7NH0pJC9dLFlZWVk6L14oXFxkezR9KS8sWVlZWVk6Wy9eKFsrLV1cXGR7NH0pLywvXihbKy1dXFxkezV9KS8sL14oWystXVxcZHs2fSkvXSxNTTovXi0oXFxkezJ9KSQvLERERDovXi0/KFxcZHszfSkkLyxNTUREOi9eLT8oXFxkezJ9KS0/KFxcZHsyfSkkLyxXd3c6L14tP1coXFxkezJ9KSQvLFd3d0Q6L14tP1coXFxkezJ9KS0/KFxcZHsxfSkkLyxISDovXihcXGR7Mn0oWy4sXVxcZCopPykkLyxISE1NOi9eKFxcZHsyfSk6PyhcXGR7Mn0oWy4sXVxcZCopPykkLyxISE1NU1M6L14oXFxkezJ9KTo/KFxcZHsyfSk6PyhcXGR7Mn0oWy4sXVxcZCopPykkLyx0aW1lWm9uZTpMdH07ZnVuY3Rpb24gY3QodCxhKXtpZihhcmd1bWVudHMubGVuZ3RoPDEpdGhyb3cgbmV3IFR5cGVFcnJvcihcIjEgYXJndW1lbnQgcmVxdWlyZWQsIGJ1dCBvbmx5IFwiK2FyZ3VtZW50cy5sZW5ndGgrXCIgcHJlc2VudFwiKTtpZih0PT09bnVsbClyZXR1cm4gbmV3IERhdGUoTmFOKTt2YXIgcj1hfHx7fSxuPXIuYWRkaXRpb25hbERpZ2l0cz09bnVsbD9rbjpsbihyLmFkZGl0aW9uYWxEaWdpdHMpO2lmKG4hPT0yJiZuIT09MSYmbiE9PTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJhZGRpdGlvbmFsRGlnaXRzIG11c3QgYmUgMCwgMSBvciAyXCIpO2lmKHQgaW5zdGFuY2VvZiBEYXRlfHx0eXBlb2YgdD09XCJvYmplY3RcIiYmT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpPT09XCJbb2JqZWN0IERhdGVdXCIpcmV0dXJuIG5ldyBEYXRlKHQuZ2V0VGltZSgpKTtpZih0eXBlb2YgdD09XCJudW1iZXJcInx8T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpPT09XCJbb2JqZWN0IE51bWJlcl1cIilyZXR1cm4gbmV3IERhdGUodCk7aWYoISh0eXBlb2YgdD09XCJzdHJpbmdcInx8T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpPT09XCJbb2JqZWN0IFN0cmluZ11cIikpcmV0dXJuIG5ldyBEYXRlKE5hTik7dmFyIHU9d24odCksbT1ibih1LmRhdGUsbiksaD1tLnllYXIsVD1tLnJlc3REYXRlU3RyaW5nLF89RG4oVCxoKTtpZihpc05hTihfKSlyZXR1cm4gbmV3IERhdGUoTmFOKTtpZihfKXt2YXIgTj1fLmdldFRpbWUoKSxZPTAsdjtpZih1LnRpbWUmJihZPUNuKHUudGltZSksaXNOYU4oWSkpKXJldHVybiBuZXcgRGF0ZShOYU4pO2lmKHUudGltZVpvbmV8fHIudGltZVpvbmUpe2lmKHY9c3QodS50aW1lWm9uZXx8ci50aW1lWm9uZSxuZXcgRGF0ZShOK1kpKSxpc05hTih2KSlyZXR1cm4gbmV3IERhdGUoTmFOKX1lbHNlIHY9T3QobmV3IERhdGUoTitZKSksdj1PdChuZXcgRGF0ZShOK1krdikpO3JldHVybiBuZXcgRGF0ZShOK1krdil9ZWxzZSByZXR1cm4gbmV3IERhdGUoTmFOKX1mdW5jdGlvbiB3bih0KXt2YXIgYT17fSxyPWtlLmRhdGVUaW1lUGF0dGVybi5leGVjKHQpLG47aWYocj8oYS5kYXRlPXJbMV0sbj1yWzNdKToocj1rZS5kYXRlUGF0dGVybi5leGVjKHQpLHI/KGEuZGF0ZT1yWzFdLG49clsyXSk6KGEuZGF0ZT1udWxsLG49dCkpLG4pe3ZhciB1PWtlLnRpbWVab25lLmV4ZWMobik7dT8oYS50aW1lPW4ucmVwbGFjZSh1WzFdLFwiXCIpLGEudGltZVpvbmU9dVsxXS50cmltKCkpOmEudGltZT1ufXJldHVybiBhfWZ1bmN0aW9uIGJuKHQsYSl7dmFyIHI9a2UuWVlZW2FdLG49a2UuWVlZWVlbYV0sdTtpZih1PWtlLllZWVkuZXhlYyh0KXx8bi5leGVjKHQpLHUpe3ZhciBtPXVbMV07cmV0dXJue3llYXI6cGFyc2VJbnQobSwxMCkscmVzdERhdGVTdHJpbmc6dC5zbGljZShtLmxlbmd0aCl9fWlmKHU9a2UuWVkuZXhlYyh0KXx8ci5leGVjKHQpLHUpe3ZhciBoPXVbMV07cmV0dXJue3llYXI6cGFyc2VJbnQoaCwxMCkqMTAwLHJlc3REYXRlU3RyaW5nOnQuc2xpY2UoaC5sZW5ndGgpfX1yZXR1cm57eWVhcjpudWxsfX1mdW5jdGlvbiBEbih0LGEpe2lmKGE9PT1udWxsKXJldHVybiBudWxsO3ZhciByLG4sdSxtO2lmKHQubGVuZ3RoPT09MClyZXR1cm4gbj1uZXcgRGF0ZSgwKSxuLnNldFVUQ0Z1bGxZZWFyKGEpLG47aWYocj1rZS5NTS5leGVjKHQpLHIpcmV0dXJuIG49bmV3IERhdGUoMCksdT1wYXJzZUludChyWzFdLDEwKS0xLFd0KGEsdSk/KG4uc2V0VVRDRnVsbFllYXIoYSx1KSxuKTpuZXcgRGF0ZShOYU4pO2lmKHI9a2UuRERELmV4ZWModCkscil7bj1uZXcgRGF0ZSgwKTt2YXIgaD1wYXJzZUludChyWzFdLDEwKTtyZXR1cm4gU24oYSxoKT8obi5zZXRVVENGdWxsWWVhcihhLDAsaCksbik6bmV3IERhdGUoTmFOKX1pZihyPWtlLk1NREQuZXhlYyh0KSxyKXtuPW5ldyBEYXRlKDApLHU9cGFyc2VJbnQoclsxXSwxMCktMTt2YXIgVD1wYXJzZUludChyWzJdLDEwKTtyZXR1cm4gV3QoYSx1LFQpPyhuLnNldFVUQ0Z1bGxZZWFyKGEsdSxUKSxuKTpuZXcgRGF0ZShOYU4pfWlmKHI9a2UuV3d3LmV4ZWModCkscilyZXR1cm4gbT1wYXJzZUludChyWzFdLDEwKS0xLEh0KGEsbSk/S3QoYSxtKTpuZXcgRGF0ZShOYU4pO2lmKHI9a2UuV3d3RC5leGVjKHQpLHIpe209cGFyc2VJbnQoclsxXSwxMCktMTt2YXIgXz1wYXJzZUludChyWzJdLDEwKS0xO3JldHVybiBIdChhLG0sXyk/S3QoYSxtLF8pOm5ldyBEYXRlKE5hTil9cmV0dXJuIG51bGx9ZnVuY3Rpb24gQ24odCl7dmFyIGEscixuO2lmKGE9a2UuSEguZXhlYyh0KSxhKXJldHVybiByPXBhcnNlRmxvYXQoYVsxXS5yZXBsYWNlKFwiLFwiLFwiLlwiKSksZHQocik/ciUyNCp1dDpOYU47aWYoYT1rZS5ISE1NLmV4ZWModCksYSlyZXR1cm4gcj1wYXJzZUludChhWzFdLDEwKSxuPXBhcnNlRmxvYXQoYVsyXS5yZXBsYWNlKFwiLFwiLFwiLlwiKSksZHQocixuKT9yJTI0KnV0K24qenQ6TmFOO2lmKGE9a2UuSEhNTVNTLmV4ZWModCksYSl7cj1wYXJzZUludChhWzFdLDEwKSxuPXBhcnNlSW50KGFbMl0sMTApO3ZhciB1PXBhcnNlRmxvYXQoYVszXS5yZXBsYWNlKFwiLFwiLFwiLlwiKSk7cmV0dXJuIGR0KHIsbix1KT9yJTI0KnV0K24qenQrdSoxZTM6TmFOfXJldHVybiBudWxsfWZ1bmN0aW9uIEt0KHQsYSxyKXthPWF8fDAscj1yfHwwO3ZhciBuPW5ldyBEYXRlKDApO24uc2V0VVRDRnVsbFllYXIodCwwLDQpO3ZhciB1PW4uZ2V0VVRDRGF5KCl8fDcsbT1hKjcrcisxLXU7cmV0dXJuIG4uc2V0VVRDRGF0ZShuLmdldFVUQ0RhdGUoKSttKSxufXZhciBNbj1bMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdLCRuPVszMSwyOSwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV07ZnVuY3Rpb24gVXQodCl7cmV0dXJuIHQlNDAwPT09MHx8dCU0PT09MCYmdCUxMDAhPT0wfWZ1bmN0aW9uIFd0KHQsYSxyKXtpZihhPDB8fGE+MTEpcmV0dXJuITE7aWYociE9bnVsbCl7aWYocjwxKXJldHVybiExO3ZhciBuPVV0KHQpO2lmKG4mJnI+JG5bYV18fCFuJiZyPk1uW2FdKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIFNuKHQsYSl7aWYoYTwxKXJldHVybiExO3ZhciByPVV0KHQpO3JldHVybiEociYmYT4zNjZ8fCFyJiZhPjM2NSl9ZnVuY3Rpb24gSHQodCxhLHIpe3JldHVybiEoYTwwfHxhPjUyfHxyIT1udWxsJiYocjwwfHxyPjYpKX1mdW5jdGlvbiBkdCh0LGEscil7cmV0dXJuISh0IT1udWxsJiYodDwwfHx0Pj0yNSl8fGEhPW51bGwmJihhPDB8fGE+PTYwKXx8ciE9bnVsbCYmKHI8MHx8cj49NjApKX12YXIgZnQ9e2V4cG9ydHM6e319LG10PXtleHBvcnRzOnt9fTsoZnVuY3Rpb24odCxhKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxhLmRlZmF1bHQ9cjtmdW5jdGlvbiByKG4sdSl7aWYobj09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiYXNzaWduIHJlcXVpcmVzIHRoYXQgaW5wdXQgcGFyYW1ldGVyIG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZFwiKTtmb3IodmFyIG0gaW4gdSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodSxtKSYmKG5bbV09dVttXSk7cmV0dXJuIG59dC5leHBvcnRzPWEuZGVmYXVsdH0pKG10LG10LmV4cG9ydHMpO3ZhciBCbj1tdC5leHBvcnRzOyhmdW5jdGlvbih0LGEpe3ZhciByPWFuLmRlZmF1bHQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksYS5kZWZhdWx0PXU7dmFyIG49cihCbik7ZnVuY3Rpb24gdShtKXtyZXR1cm4oMCxuLmRlZmF1bHQpKHt9LG0pfXQuZXhwb3J0cz1hLmRlZmF1bHR9KShmdCxmdC5leHBvcnRzKTt2YXIgTm49ZnQuZXhwb3J0cztjb25zdCB2bj10dChObik7ZnVuY3Rpb24gVG4odCxhLHIpe3ZhciBuPWN0KHQsciksdT1zdChhLG4sITApLG09bmV3IERhdGUobi5nZXRUaW1lKCktdSksaD1uZXcgRGF0ZSgwKTtyZXR1cm4gaC5zZXRGdWxsWWVhcihtLmdldFVUQ0Z1bGxZZWFyKCksbS5nZXRVVENNb250aCgpLG0uZ2V0VVRDRGF0ZSgpKSxoLnNldEhvdXJzKG0uZ2V0VVRDSG91cnMoKSxtLmdldFVUQ01pbnV0ZXMoKSxtLmdldFVUQ1NlY29uZHMoKSxtLmdldFVUQ01pbGxpc2Vjb25kcygpKSxofWZ1bmN0aW9uIFBuKHQsYSxyKXtpZih0eXBlb2YgdD09XCJzdHJpbmdcIiYmIXQubWF0Y2goTHQpKXt2YXIgbj12bihyKTtyZXR1cm4gbi50aW1lWm9uZT1hLGN0KHQsbil9dmFyIHU9Y3QodCxyKSxtPWx0KHUuZ2V0RnVsbFllYXIoKSx1LmdldE1vbnRoKCksdS5nZXREYXRlKCksdS5nZXRIb3VycygpLHUuZ2V0TWludXRlcygpLHUuZ2V0U2Vjb25kcygpLHUuZ2V0TWlsbGlzZWNvbmRzKCkpLmdldFRpbWUoKSxoPXN0KGEsbmV3IERhdGUobSkpO3JldHVybiBuZXcgRGF0ZShtK2gpfWNvbnN0IEFuPSh0LGE9Myk9Pntjb25zdCByPVtdO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bis9YSlyLnB1c2goW3Rbbl0sdFtuKzFdLHRbbisyXV0pO3JldHVybiByfSxWbj0odCxhKT0+e2NvbnN0IHI9WzEsMiwzLDQsNSw2LDddLm1hcChtPT5uZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0LHt3ZWVrZGF5Olwic2hvcnRcIix0aW1lWm9uZTpcIlVUQ1wifSkuZm9ybWF0KG5ldyBEYXRlKGAyMDE3LTAxLTAke219VDAwOjAwOjAwKzAwOjAwYCkpLnNsaWNlKDAsMikpLG49ci5zbGljZSgwLGEpLHU9ci5zbGljZShhKzEsci5sZW5ndGgpO3JldHVybltyW2FdXS5jb25jYXQoLi4udSkuY29uY2F0KC4uLm4pfSxFbj0odCxhKT0+e2NvbnN0IHI9W107Zm9yKGxldCBuPSt0WzBdO248PSt0WzFdO24rKylyLnB1c2goe3ZhbHVlOituLHRleHQ6YCR7bn1gfSk7cmV0dXJuIGE/ci5yZXZlcnNlKCk6cn0sUm49KHQsYSk9Pntjb25zdCByPW5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHQse21vbnRoOmEsdGltZVpvbmU6XCJVVENcIn0pO3JldHVyblsxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMl0ubWFwKHU9Pntjb25zdCBtPXU8MTA/YDAke3V9YDp1O3JldHVybiBuZXcgRGF0ZShgMjAxNy0ke219LTAxVDAwOjAwOjAwKzAwOjAwYCl9KS5tYXAoKHUsbSk9Pntjb25zdCBoPXIuZm9ybWF0KHUpO3JldHVybnt0ZXh0OmguY2hhckF0KDApLnRvVXBwZXJDYXNlKCkraC5zdWJzdHJpbmcoMSksdmFsdWU6bX19KX0sX249dD0+WzEyLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExXVt0XSxjZT10PT57Y29uc3QgYT1lLnVucmVmKHQpO3JldHVybiBhIT1udWxsJiZhLiRlbD9hPT1udWxsP3ZvaWQgMDphLiRlbDphfSxPbj10PT5PYmplY3QuYXNzaWduKHt0eXBlOlwiZG90XCJ9LHQpLGp0PXQ9PkFycmF5LmlzQXJyYXkodCk/ISF0WzBdJiYhIXRbMV06ITEsR2U9e3Byb3A6dD0+YFwiJHt0fVwiIHByb3AgbXVzdCBiZSBlbmFibGVkIWAsZGF0ZUFycjp0PT5gWW91IG5lZWQgdG8gdXNlIGFycmF5IGFzIFwibW9kZWwtdmFsdWVcIiBiaW5kaW5nIGluIG9yZGVyIHRvIHN1cHBvcnQgXCIke3R9XCJgfSx5ZT10PT50LEd0PXQ9PnQ9PT0wP3Q6IXR8fGlzTmFOKCt0KT9udWxsOit0LHF0PXQ9Pk9iamVjdC5hc3NpZ24oe21lbnVBcHBlYXI6XCJcIixvcGVuOlwiZHAtc2xpZGUtZG93blwiLGNsb3NlOlwiZHAtc2xpZGUtdXBcIixuZXh0OlwiY2FsZW5kYXItbmV4dFwiLHByZXZpb3VzOlwiY2FsZW5kYXItcHJldlwiLHZOZXh0OlwiZHAtc2xpZGUtdXBcIix2UHJldmlvdXM6XCJkcC1zbGlkZS1kb3duXCJ9LHQpLFluPXQ9Pk9iamVjdC5hc3NpZ24oe3RvZ2dsZU92ZXJsYXk6XCJUb2dnbGUgb3ZlcmxheVwiLG1lbnU6XCJEYXRlcGlja2VyIG1lbnVcIixpbnB1dDpcIkRhdGVwaWNrZXIgaW5wdXRcIixjYWxlbmRhcldyYXA6XCJDYWxlbmRhciB3cmFwcGVyXCIsY2FsZW5kYXJEYXlzOlwiQ2FsZW5kYXIgZGF5c1wiLG9wZW5UaW1lUGlja2VyOlwiT3BlbiB0aW1lIHBpY2tlclwiLGNsb3NlVGltZVBpY2tlcjpcIkNsb3NlIHRpbWUgUGlja2VyXCIsaW5jcmVtZW50VmFsdWU6YT0+YEluY3JlbWVudCAke2F9YCxkZWNyZW1lbnRWYWx1ZTphPT5gRGVjcmVtZW50ICR7YX1gLG9wZW5UcE92ZXJsYXk6YT0+YE9wZW4gJHthfSBvdmVybGF5YCxhbVBtQnV0dG9uOlwiU3dpdGNoIEFNL1BNIG1vZGVcIixvcGVuWWVhcnNPdmVybGF5OlwiT3BlbiB5ZWFycyBvdmVybGF5XCIsb3Blbk1vbnRoc092ZXJsYXk6XCJPcGVuIG1vbnRocyBvdmVybGF5XCIsbmV4dE1vbnRoOlwiTmV4dCBtb250aFwiLHByZXZNb250aDpcIlByZXZpb3VzIG1vbnRoXCIsZGF5OigpPT5cIlwifSx0KSxJbj10PT50PT09bnVsbD8wOnR5cGVvZiB0PT1cImJvb2xlYW5cIj90PzI6MDordD49Mj8rdDoyLHhuPSh0LGEscik9PnR8fCh0eXBlb2Ygcj09XCJzdHJpbmdcIj9yOmEpLExuPXQ9PnR5cGVvZiB0PT1cImJvb2xlYW5cIj90P3F0KHt9KTohMTpxdCh0KSx6bj0oKT0+KHtlbnRlclN1Ym1pdDohMCx0YWJTdWJtaXQ6ITAsb3Blbk1lbnU6ITAscmFuZ2VTZXBhcmF0b3I6XCIgLSBcIn0pLEtuPXQ9Pk9iamVjdC5hc3NpZ24oe21vbnRoczpbXSx5ZWFyczpbXSx0aW1lczp7aG91cnM6W10sbWludXRlczpbXSxzZWNvbmRzOltdfX0sdCksVW49dD0+T2JqZWN0LmFzc2lnbih7c2hvd1NlbGVjdDohMCxzaG93Q2FuY2VsOiEwLHNob3dOb3c6ITEsc2hvd1ByZXZpZXc6ITB9LHQpLERlPXQ9Pntjb25zdCBhPSgpPT57aWYodC5wYXJ0aWFsUmFuZ2UpcmV0dXJuIG51bGw7dGhyb3cgbmV3IEVycm9yKEdlLnByb3AoXCJwYXJ0aWFsLXJhbmdlXCIpKX0scj1lLmNvbXB1dGVkKCgpPT4oe2FyaWFMYWJlbHM6WW4odC5hcmlhTGFiZWxzKSx0ZXh0SW5wdXRPcHRpb25zOk9iamVjdC5hc3NpZ24oem4oKSx0LnRleHRJbnB1dE9wdGlvbnMpLG11bHRpQ2FsZW5kYXJzOkluKHQubXVsdGlDYWxlbmRhcnMpLHByZXZpZXdGb3JtYXQ6eG4odC5wcmV2aWV3Rm9ybWF0LHQuZm9ybWF0LG0oKSksZmlsdGVyczpLbih0LmZpbHRlcnMpLHRyYW5zaXRpb25zOkxuKHQudHJhbnNpdGlvbnMpLHN0YXJ0VGltZTpmKCksYWN0aW9uUm93OlVuKHQuYWN0aW9uUm93KX0pKSxuPWQ9PntpZih0LnJhbmdlKXJldHVybiBkKCk7dGhyb3cgbmV3IEVycm9yKEdlLnByb3AoXCJyYW5nZVwiKSl9LHU9KCk9Pntjb25zdCBkPXQuZW5hYmxlU2Vjb25kcz9cIjpzc1wiOlwiXCI7cmV0dXJuIHQuaXMyND9gSEg6bW0ke2R9YDpgaGg6bW0ke2R9IGFhYH0sbT0oKT0+dC5mb3JtYXQ/dC5mb3JtYXQ6dC5tb250aFBpY2tlcj9cIk1NL3l5eXlcIjp0LnRpbWVQaWNrZXI/dSgpOnQud2Vla1BpY2tlcj9cIk1NL2RkL3l5eXlcIjp0LnllYXJQaWNrZXI/XCJ5eXl5XCI6dC5lbmFibGVUaW1lUGlja2VyP2BNTS9kZC95eXl5LCAke3UoKX1gOlwiTU0vZGQveXl5eVwiLGg9KGQsbyk9PntpZih0eXBlb2YgdC5mb3JtYXQ9PVwiZnVuY3Rpb25cIilyZXR1cm4gdC5mb3JtYXQoZCk7Y29uc3QgbD1vfHxtKCksaz10LmZvcm1hdExvY2FsZT97bG9jYWxlOnQuZm9ybWF0TG9jYWxlfTp2b2lkIDA7cmV0dXJuIEFycmF5LmlzQXJyYXkoZCk/YCR7Yy5mb3JtYXQoZFswXSxsLGspfSR7dC5tb2RlbEF1dG8mJiFkWzFdP1wiXCI6ci52YWx1ZS50ZXh0SW5wdXRPcHRpb25zLnJhbmdlU2VwYXJhdG9yfHxcIi1cIn0ke2RbMV0/Yy5mb3JtYXQoZFsxXSxsLGspOlwiXCJ9YDpjLmZvcm1hdChkLGwsayl9LFQ9ZD0+dC50aW1lem9uZT9UbihkLHQudGltZXpvbmUpOmQsXz1kPT50LnRpbWV6b25lP1BuKGQsdC50aW1lem9uZSk6ZCxOPWUuY29tcHV0ZWQoKCk9PmQ9Pnt2YXIgbztyZXR1cm4obz10LmhpZGVOYXZpZ2F0aW9uKT09bnVsbD92b2lkIDA6by5pbmNsdWRlcyhkKX0pLFk9ZD0+e2NvbnN0IG89dC5tYXhEYXRlP2hlKFQoZCksVChTKHQubWF4RGF0ZSkpKTohMSxsPXQubWluRGF0ZT9nZShUKGQpLFQoUyh0Lm1pbkRhdGUpKSk6ITEsaz1SKGQsdC5kaXNhYmxlZERhdGVzKSxCPXIudmFsdWUuZmlsdGVycy5tb250aHMubWFwKFo9PitaKS5pbmNsdWRlcyhjLmdldE1vbnRoKGQpKSxxPXQuZGlzYWJsZWRXZWVrRGF5cy5sZW5ndGg/dC5kaXNhYmxlZFdlZWtEYXlzLnNvbWUoWj0+K1o9PT1jLmdldERheShkKSk6ITEscD10LmFsbG93ZWREYXRlcy5sZW5ndGg/IXQuYWxsb3dlZERhdGVzLnNvbWUoWj0+b2UoVChTKFopKSxUKGQpKSk6ITEscz1jLmdldFllYXIoZCksTz1zPCt0LnllYXJSYW5nZVswXXx8cz4rdC55ZWFyUmFuZ2VbMV07cmV0dXJuIShvfHxsfHxrfHxCfHxPfHxxfHxwKX0sdj1kPT57Y29uc3Qgbz17aG91cnM6Yy5nZXRIb3VycyhTKCkpLG1pbnV0ZXM6Yy5nZXRNaW51dGVzKFMoKSksc2Vjb25kczp0LmVuYWJsZVNlY29uZHM/Yy5nZXRTZWNvbmRzKFMoKSk6MH07cmV0dXJuIE9iamVjdC5hc3NpZ24obyxkKX0sZj0oKT0+dC5yYW5nZT90LnN0YXJ0VGltZSYmQXJyYXkuaXNBcnJheSh0LnN0YXJ0VGltZSk/W3YodC5zdGFydFRpbWVbMF0pLHYodC5zdGFydFRpbWVbMV0pXTpudWxsOnQuc3RhcnRUaW1lJiYhQXJyYXkuaXNBcnJheSh0LnN0YXJ0VGltZSk/dih0LnN0YXJ0VGltZSk6bnVsbCxiPWQ9PiFZKGQpLEc9ZD0+QXJyYXkuaXNBcnJheShkKT9jLmlzVmFsaWQoZFswXSkmJihkWzFdP2MuaXNWYWxpZChkWzFdKTohMCk6ZD9jLmlzVmFsaWQoZCk6ITEsTD1kPT5kIGluc3RhbmNlb2YgRGF0ZT9kOmMucGFyc2VJU08oZCksej1kPT57Y29uc3Qgbz1jLnN0YXJ0T2ZXZWVrKFQoZCkse3dlZWtTdGFydHNPbjordC53ZWVrU3RhcnR9KSxsPWMuZW5kT2ZXZWVrKFQoZCkse3dlZWtTdGFydHNPbjordC53ZWVrU3RhcnR9KTtyZXR1cm5bbyxsXX0sUj0oZCxvKT0+QXJyYXkuaXNBcnJheShvKT9vLnNvbWUobD0+b2UoVChTKGwpKSxUKGQpKSk6byhTKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZCkpKSksST0oZCxvLGwpPT57bGV0IGs9ZD9TKGQpOlMoKTtyZXR1cm4ob3x8bz09PTApJiYoaz1jLnNldE1vbnRoKGssbykpLGwmJihrPWMuc2V0WWVhcihrLGwpKSxrfSxWPWQ9PmMuc2V0KFMoKSxqZShkKSksVT1kPT5jLnNldChTKCkse2hvdXJzOitkLmhvdXJzfHwwLG1pbnV0ZXM6K2QubWludXRlc3x8MCxzZWNvbmRzOitkLnNlY29uZHN8fDB9KSxLPShkLG8sbCxrKT0+e2lmKCFkKXJldHVybiEwO2lmKGspe2NvbnN0IE09bD09PVwibWF4XCI/Yy5pc0JlZm9yZShkLG8pOmMuaXNBZnRlcihkLG8pLEI9e3NlY29uZHM6MCxtaWxsaXNlY29uZHM6MH07cmV0dXJuIE18fGMuaXNFcXVhbChjLnNldChkLEIpLGMuc2V0KG8sQikpfXJldHVybiBsPT09XCJtYXhcIj9kLmdldFRpbWUoKTw9by5nZXRUaW1lKCk6ZC5nZXRUaW1lKCk+PW8uZ2V0VGltZSgpfSxGPSgpPT4hdC5lbmFibGVUaW1lUGlja2VyfHx0Lm1vbnRoUGlja2VyfHx0LnllYXJQaWNrZXJ8fHQuaWdub3JlVGltZVZhbGlkYXRpb24sdGU9ZD0+QXJyYXkuaXNBcnJheShkKT9bZFswXT9WKGRbMF0pOm51bGwsZFsxXT9WKGRbMV0pOm51bGxdOlYoZCksbmU9ZD0+e2NvbnN0IG89dC5tYXhUaW1lP1UodC5tYXhUaW1lKTpTKHQubWF4RGF0ZSk7cmV0dXJuIEFycmF5LmlzQXJyYXkoZCk/SyhkWzBdLG8sXCJtYXhcIiwhIXQubWF4RGF0ZSkmJksoZFsxXSxvLFwibWF4XCIsISF0Lm1heERhdGUpOksoZCxvLFwibWF4XCIsISF0Lm1heERhdGUpfSxhZT0oZCxvKT0+e2NvbnN0IGw9dC5taW5UaW1lP1UodC5taW5UaW1lKTpTKHQubWluRGF0ZSk7cmV0dXJuIEFycmF5LmlzQXJyYXkoZCk/SyhkWzBdLGwsXCJtaW5cIiwhIXQubWluRGF0ZSkmJksoZFsxXSxsLFwibWluXCIsISF0Lm1pbkRhdGUpJiZvOksoZCxsLFwibWluXCIsISF0Lm1pbkRhdGUpJiZvfSxyZT1kPT57bGV0IG89ITA7aWYoIWR8fEYoKSlyZXR1cm4hMDtjb25zdCBsPSF0Lm1pbkRhdGUmJiF0Lm1heERhdGU/dGUoZCk6ZDtpZigodC5tYXhUaW1lfHx0Lm1heERhdGUpJiYobz1uZSh5ZShsKSkpLCh0Lm1pblRpbWV8fHQubWluRGF0ZSkmJihvPWFlKHllKGwpLG8pKSx0LmRpc2FibGVkVGltZXMpe2NvbnN0IGs9QXJyYXkuaXNBcnJheShkKT9bamUoZFswXSksZFsxXT9qZShkWzFdKTp2b2lkIDBdOmplKGQpO289IXQuZGlzYWJsZWRUaW1lcyhrKX1yZXR1cm4gb30sUD0oZCxvKT0+e2NvbnN0IGw9UyhKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGQpKSksaz1bXTtmb3IobGV0IE09MDtNPDc7TSsrKXtjb25zdCBCPWMuYWRkRGF5cyhsLE0pLHE9Yy5nZXRNb250aChCKSE9PW87ay5wdXNoKHt0ZXh0OnQuaGlkZU9mZnNldERhdGVzJiZxP1wiXCI6Qi5nZXREYXRlKCksdmFsdWU6QixjdXJyZW50OiFxLGNsYXNzRGF0YTp7fX0pfXJldHVybiBrfSxDPShkLG8pPT57Y29uc3QgbD1bXSxrPVMoVChuZXcgRGF0ZShvLGQpKSksTT1TKFQobmV3IERhdGUobyxkKzEsMCkpKSxCPXQud2Vla1N0YXJ0LHE9Yy5zdGFydE9mV2VlayhrLHt3ZWVrU3RhcnRzT246Qn0pLHA9cz0+e2NvbnN0IE89UChzLGQpO2lmKGwucHVzaCh7ZGF5czpPfSksIWxbbC5sZW5ndGgtMV0uZGF5cy5zb21lKFo9Pm9lKE1lKFoudmFsdWUpLE1lKE0pKSkpe2NvbnN0IFo9Yy5hZGREYXlzKHMsNyk7cChaKX19O2lmKHAocSksdC5zaXhXZWVrcyYmbC5sZW5ndGg8Nil7Y29uc3Qgcz02LWwubGVuZ3RoLE89KGsuZ2V0RGF5KCkrNy1CKSU3LHNlPTYtKE0uZ2V0RGF5KCkrNy1CKSU3LFskZSxOZV09KCgpPT57c3dpdGNoKHQuc2l4V2Vla3M9PT0hMD9cImFwcGVuZFwiOnQuc2l4V2Vla3Mpe2Nhc2VcInByZXBlbmRcIjpyZXR1cm5bITAsITFdO2Nhc2VcImNlbnRlclwiOnJldHVybltPPT0wLCEwXTtjYXNlXCJmYWlyXCI6cmV0dXJuW089PTB8fHNlPk8sITBdO2RlZmF1bHQ6Y2FzZVwiYXBwZW5kXCI6cmV0dXJuWyExLCExXX19KSgpO2ZvcihsZXQgSj0xO0o8PXM7SisrKWlmKE5lPyEhKEolMik9PSRlOiRlKXtjb25zdCBiZT1sWzBdLmRheXNbMF0sbWU9UChjLmFkZERheXMoYmUudmFsdWUsLTcpLGMuZ2V0TW9udGgoaykpO2wudW5zaGlmdCh7ZGF5czptZX0pfWVsc2V7Y29uc3QgYmU9bFtsLmxlbmd0aC0xXSxtZT1iZS5kYXlzW2JlLmRheXMubGVuZ3RoLTFdLFRlPVAoYy5hZGREYXlzKG1lLnZhbHVlLDEpLGMuZ2V0TW9udGgoaykpO2wucHVzaCh7ZGF5czpUZX0pfX1yZXR1cm4gbH0seT0oZCxvLGwpPT5bYy5zZXQoUyhkKSx7ZGF0ZToxfSksYy5zZXQoUygpLHttb250aDpvLHllYXI6bCxkYXRlOjF9KV0sQT0oZCxvKT0+Z2UoLi4ueSh0Lm1pbkRhdGUsZCxvKSl8fG9lKC4uLnkodC5taW5EYXRlLGQsbykpLEU9KGQsbyk9PmhlKC4uLnkodC5tYXhEYXRlLGQsbykpfHxvZSguLi55KHQubWF4RGF0ZSxkLG8pKSwkPShkLG8sbCk9PntsZXQgaz0hMTtyZXR1cm4gdC5tYXhEYXRlJiZsJiZFKGQsbykmJihrPSEwKSx0Lm1pbkRhdGUmJiFsJiZBKGQsbykmJihrPSEwKSxrfTtyZXR1cm57Y2hlY2tQYXJ0aWFsUmFuZ2VWYWx1ZTphLGNoZWNrUmFuZ2VFbmFibGVkOm4sZ2V0Wm9uZWREYXRlOlQsZ2V0Wm9uZWRUb1V0YzpfLGZvcm1hdERhdGU6aCxnZXREZWZhdWx0UGF0dGVybjptLHZhbGlkYXRlRGF0ZTpZLGdldERlZmF1bHRTdGFydFRpbWU6Zixpc0Rpc2FibGVkOmIsaXNWYWxpZERhdGU6RyxzYW5pdGl6ZURhdGU6TCxnZXRXZWVrRnJvbURhdGU6eixtYXRjaERhdGU6UixzZXREYXRlTW9udGhPclllYXI6SSxpc1ZhbGlkVGltZTpyZSxnZXRDYWxlbmRhckRheXM6Qyx2YWxpZGF0ZU1vbnRoWWVhckluUmFuZ2U6KGQsbyxsLGspPT57bGV0IE09ITE7cmV0dXJuIGs/dC5taW5EYXRlJiZ0Lm1heERhdGU/TT0kKGQsbyxsKToodC5taW5EYXRlJiZBKGQsbyl8fHQubWF4RGF0ZSYmRShkLG8pKSYmKE09ITApOk09ITAsTX0sdmFsaWRhdGVNYXhEYXRlOkUsdmFsaWRhdGVNaW5EYXRlOkEsYXNzaWduRGVmYXVsdFRpbWU6dixkZWZhdWx0czpyLGhpZGVOYXZpZ2F0aW9uQnV0dG9uczpOfX0saWU9ZS5yZWFjdGl2ZSh7bW9udGhZZWFyOltdLGNhbGVuZGFyOltdLHRpbWU6W10sYWN0aW9uUm93OltdLHNlbGVjdGlvbkdyaWQ6W10sdGltZVBpY2tlcjp7MDpbXSwxOltdfSxtb250aFBpY2tlcjpbXX0pLHl0PWUucmVmKG51bGwpLHFlPWUucmVmKCExKSxwdD1lLnJlZighMSksZ3Q9ZS5yZWYoITEpLGh0PWUucmVmKCExKSx3ZT1lLnJlZigwKSxwZT1lLnJlZigwKSxBZT0oKT0+e2NvbnN0IHQ9ZS5jb21wdXRlZCgoKT0+cWUudmFsdWU/Wy4uLmllLnNlbGVjdGlvbkdyaWQsaWUuYWN0aW9uUm93XS5maWx0ZXIoUj0+Ui5sZW5ndGgpOnB0LnZhbHVlP1suLi5pZS50aW1lUGlja2VyWzBdLC4uLmllLnRpbWVQaWNrZXJbMV0saHQudmFsdWU/W106W3l0LnZhbHVlXSxpZS5hY3Rpb25Sb3ddLmZpbHRlcihSPT5SLmxlbmd0aCk6Z3QudmFsdWU/Wy4uLmllLm1vbnRoUGlja2VyLGllLmFjdGlvblJvd106W2llLm1vbnRoWWVhciwuLi5pZS5jYWxlbmRhcixpZS50aW1lLGllLmFjdGlvblJvd10uZmlsdGVyKFI9PlIubGVuZ3RoKSksYT1SPT57d2UudmFsdWU9Uj93ZS52YWx1ZSsxOndlLnZhbHVlLTE7bGV0IEk9bnVsbDt0LnZhbHVlW3BlLnZhbHVlXSYmKEk9dC52YWx1ZVtwZS52YWx1ZV1bd2UudmFsdWVdKSxJfHwod2UudmFsdWU9Uj93ZS52YWx1ZS0xOndlLnZhbHVlKzEpfSxyPVI9PntpZihwZS52YWx1ZT09PTAmJiFSfHxwZS52YWx1ZT09PXQudmFsdWUubGVuZ3RoJiZSKXJldHVybjtwZS52YWx1ZT1SP3BlLnZhbHVlKzE6cGUudmFsdWUtMSx0LnZhbHVlW3BlLnZhbHVlXT90LnZhbHVlW3BlLnZhbHVlXSYmIXQudmFsdWVbcGUudmFsdWVdW3dlLnZhbHVlXSYmd2UudmFsdWUhPT0wJiYod2UudmFsdWU9dC52YWx1ZVtwZS52YWx1ZV0ubGVuZ3RoLTEpOnBlLnZhbHVlPVI/cGUudmFsdWUtMTpwZS52YWx1ZSsxfSxuPVI9PntsZXQgST1udWxsO3QudmFsdWVbcGUudmFsdWVdJiYoST10LnZhbHVlW3BlLnZhbHVlXVt3ZS52YWx1ZV0pLEk/SS5mb2N1cyh7cHJldmVudFNjcm9sbDohcWUudmFsdWV9KTp3ZS52YWx1ZT1SP3dlLnZhbHVlLTE6d2UudmFsdWUrMX0sdT0oKT0+e2EoITApLG4oITApfSxtPSgpPT57YSghMSksbighMSl9LGg9KCk9PntyKCExKSxuKCEwKX0sVD0oKT0+e3IoITApLG4oITApfSxfPShSLEkpPT57aWVbSV09Un0sTj0oUixJKT0+e2llW0ldPVJ9LFk9KCk9Pnt3ZS52YWx1ZT0wLHBlLnZhbHVlPTB9O3JldHVybntidWlsZE1hdHJpeDpfLGJ1aWxkTXVsdGlMZXZlbE1hdHJpeDpOLHNldFRpbWVQaWNrZXJCYWNrUmVmOlI9Pnt5dC52YWx1ZT1SfSxzZXRTZWxlY3Rpb25HcmlkOlI9PntxZS52YWx1ZT1SLFkoKSxSfHwoaWUuc2VsZWN0aW9uR3JpZD1bXSl9LHNldFRpbWVQaWNrZXI6KFIsST0hMSk9PntwdC52YWx1ZT1SLGh0LnZhbHVlPUksWSgpLFJ8fChpZS50aW1lUGlja2VyWzBdPVtdLGllLnRpbWVQaWNrZXJbMV09W10pfSxzZXRUaW1lUGlja2VyRWxlbWVudHM6KFIsST0wKT0+e2llLnRpbWVQaWNrZXJbSV09Un0sYXJyb3dSaWdodDp1LGFycm93TGVmdDptLGFycm93VXA6aCxhcnJvd0Rvd246VCxjbGVhckFycm93TmF2OigpPT57aWUubW9udGhZZWFyPVtdLGllLmNhbGVuZGFyPVtdLGllLnRpbWU9W10saWUuYWN0aW9uUm93PVtdLGllLnNlbGVjdGlvbkdyaWQ9W10saWUudGltZVBpY2tlclswXT1bXSxpZS50aW1lUGlja2VyWzFdPVtdLHFlLnZhbHVlPSExLHB0LnZhbHVlPSExLGh0LnZhbHVlPSExLGd0LnZhbHVlPSExLFkoKSx5dC52YWx1ZT1udWxsfSxzZXRNb250aFBpY2tlcjpSPT57Z3QudmFsdWU9UixZKCl9LHJlZlNldHM6aWV9fSxadD10PT5BcnJheS5pc0FycmF5KHQpLF9lPXQ9PkFycmF5LmlzQXJyYXkodCksWHQ9dD0+QXJyYXkuaXNBcnJheSh0KSYmdC5sZW5ndGg9PT0yLFduPSh0LGEscixuLHUpPT57Y29uc3R7Z2V0RGVmYXVsdFN0YXJ0VGltZTptLGlzRGlzYWJsZWQ6aCxzYW5pdGl6ZURhdGU6VCxnZXRXZWVrRnJvbURhdGU6XyxzZXREYXRlTW9udGhPclllYXI6Tix2YWxpZGF0ZU1vbnRoWWVhckluUmFuZ2U6WSxkZWZhdWx0czp2fT1EZSh0KSxmPWUuY29tcHV0ZWQoe2dldDooKT0+dC5pbnRlcm5hbE1vZGVsVmFsdWUsc2V0Omk9PnshdC5yZWFkb25seSYmIXQuZGlzYWJsZWQmJmEoXCJ1cGRhdGU6aW50ZXJuYWwtbW9kZWwtdmFsdWVcIixpKX19KSxiPWUucmVmKFtdKTtlLndhdGNoKGYsKGksRCk9Pnt0LnJhbmdlP3RlKCk6Yy5pc0VxdWFsKGksRCl8fHRlKCl9KTtjb25zdCBHPWUudG9SZWYodCxcIm11bHRpQ2FsZW5kYXJzXCIpO2Uud2F0Y2goRywoKT0+e2VlKDApfSk7Y29uc3QgTD1lLnJlZihbe21vbnRoOmMuZ2V0TW9udGgoUygpKSx5ZWFyOmMuZ2V0WWVhcihTKCkpfV0pLHo9ZS5yZWFjdGl2ZSh7aG91cnM6dC5yYW5nZT9bYy5nZXRIb3VycyhTKCkpLGMuZ2V0SG91cnMoUygpKV06Yy5nZXRIb3VycyhTKCkpLG1pbnV0ZXM6dC5yYW5nZT9bYy5nZXRNaW51dGVzKFMoKSksYy5nZXRNaW51dGVzKFMoKSldOmMuZ2V0TWludXRlcyhTKCkpLHNlY29uZHM6dC5yYW5nZT9bMCwwXTowfSksUj1lLmNvbXB1dGVkKCgpPT5pPT5MLnZhbHVlW2ldP0wudmFsdWVbaV0ubW9udGg6MCksST1lLmNvbXB1dGVkKCgpPT5pPT5MLnZhbHVlW2ldP0wudmFsdWVbaV0ueWVhcjowKSxWPWUuY29tcHV0ZWQoKCk9PnQuZmxvdyYmdC5mbG93Lmxlbmd0aCYmIXQucGFydGlhbEZsb3c/dS52YWx1ZT09PXQuZmxvdy5sZW5ndGg6ITApLFU9KGksRCxXKT0+e3ZhciBRLGRlO0wudmFsdWVbaV18fChMLnZhbHVlW2ldPXttb250aDowLHllYXI6MH0pLEwudmFsdWVbaV0ubW9udGg9RD09PW51bGw/KFE9TC52YWx1ZVtpXSk9PW51bGw/dm9pZCAwOlEubW9udGg6RCxMLnZhbHVlW2ldLnllYXI9Vz09PW51bGw/KGRlPUwudmFsdWVbaV0pPT1udWxsP3ZvaWQgMDpkZS55ZWFyOld9LEs9KGksRCk9Pnt6W2ldPUR9LEY9KCk9Pnt0LnN0YXJ0RGF0ZSYmKFUoMCxjLmdldE1vbnRoKFModC5zdGFydERhdGUpKSxjLmdldFllYXIoUyh0LnN0YXJ0RGF0ZSkpKSx2LnZhbHVlLm11bHRpQ2FsZW5kYXJzJiZlZSgwKSl9O2Uub25Nb3VudGVkKCgpPT57Zi52YWx1ZXx8KEYoKSx2LnZhbHVlLnN0YXJ0VGltZSYmZygpKSx0ZSghMCksdC5mb2N1c1N0YXJ0RGF0ZSYmdC5zdGFydERhdGUmJkYoKX0pO2NvbnN0IHRlPShpPSExKT0+e2lmKGYudmFsdWUpcmV0dXJuIEFycmF5LmlzQXJyYXkoZi52YWx1ZSk/KGIudmFsdWU9Zi52YWx1ZSxDKGkpKTphZShmLnZhbHVlLGkpO2lmKHQudGltZVBpY2tlcilyZXR1cm4geSgpO2lmKHQubW9udGhQaWNrZXImJiF0LnJhbmdlKXJldHVybiBBKCk7aWYodC55ZWFyUGlja2VyJiYhdC5yYW5nZSlyZXR1cm4gRSgpO2lmKHYudmFsdWUubXVsdGlDYWxlbmRhcnMmJmkmJiF0LnN0YXJ0RGF0ZSlyZXR1cm4gbmUoUygpLGkpfSxuZT0oaSxEPSExKT0+e2lmKCghdi52YWx1ZS5tdWx0aUNhbGVuZGFyc3x8IXQubXVsdGlTdGF0aWN8fEQpJiZVKDAsYy5nZXRNb250aChpKSxjLmdldFllYXIoaSkpLHYudmFsdWUubXVsdGlDYWxlbmRhcnMpZm9yKGxldCBXPTE7Vzx2LnZhbHVlLm11bHRpQ2FsZW5kYXJzO1crKyl7Y29uc3QgUT1jLnNldChTKCkse21vbnRoOlIudmFsdWUoVy0xKSx5ZWFyOkkudmFsdWUoVy0xKX0pLGRlPWMuYWRkKFEse21vbnRoczoxfSk7TC52YWx1ZVtXXT17bW9udGg6Yy5nZXRNb250aChkZSkseWVhcjpjLmdldFllYXIoZGUpfX19LGFlPShpLEQpPT57bmUoaSksSyhcImhvdXJzXCIsYy5nZXRIb3VycyhpKSksSyhcIm1pbnV0ZXNcIixjLmdldE1pbnV0ZXMoaSkpLEsoXCJzZWNvbmRzXCIsYy5nZXRTZWNvbmRzKGkpKSx2LnZhbHVlLm11bHRpQ2FsZW5kYXJzJiZEJiZvKCl9LHJlPShpLEQpPT57aVsxXSYmdC5zaG93TGFzdEluUmFuZ2U/bmUoaVsxXSxEKTpuZShpWzBdLEQpO2NvbnN0IFc9KFEsZGUpPT5bUShpWzBdKSxpWzFdP1EoaVsxXSk6eltkZV1bMV1dO0soXCJob3Vyc1wiLFcoYy5nZXRIb3VycyxcImhvdXJzXCIpKSxLKFwibWludXRlc1wiLFcoYy5nZXRNaW51dGVzLFwibWludXRlc1wiKSksSyhcInNlY29uZHNcIixXKGMuZ2V0U2Vjb25kcyxcInNlY29uZHNcIikpfSxQPShpLEQpPT57aWYoKHQucmFuZ2V8fHQud2Vla1BpY2tlcikmJiF0Lm11bHRpRGF0ZXMpcmV0dXJuIHJlKGksRCk7aWYodC5tdWx0aURhdGVzKXtjb25zdCBXPWlbaS5sZW5ndGgtMV07cmV0dXJuIGFlKFcsRCl9fSxDPWk9Pntjb25zdCBEPWYudmFsdWU7UChELGkpLHYudmFsdWUubXVsdGlDYWxlbmRhcnMmJnQubXVsdGlDYWxlbmRhcnNTb2xvJiZvKCl9LHk9KCk9PntpZihnKCksIXQucmFuZ2UpZi52YWx1ZT1DZShTKCksei5ob3Vycyx6Lm1pbnV0ZXMsJCgpKTtlbHNle2NvbnN0IGk9ei5ob3VycyxEPXoubWludXRlcztmLnZhbHVlPVtDZShTKCksaVswXSxEWzBdLCQoKSksQ2UoUygpLGlbMV0sRFsxXSwkKCExKSldfX0sQT0oKT0+e3QubXVsdGlEYXRlcz9mLnZhbHVlPVtOKFMoKSxSLnZhbHVlKDApLEkudmFsdWUoMCkpXTpmLnZhbHVlPU4oUygpLFIudmFsdWUoMCksSS52YWx1ZSgwKSl9LEU9KCk9PntmLnZhbHVlPVMoKX0sJD0oaT0hMCk9PnQuZW5hYmxlU2Vjb25kcz9BcnJheS5pc0FycmF5KHouc2Vjb25kcyk/aT96LnNlY29uZHNbMF06ei5zZWNvbmRzWzFdOnouc2Vjb25kczowLGc9KCk9Pntjb25zdCBpPW0oKTtpZihpKXtjb25zdCBEPUFycmF5LmlzQXJyYXkoaSksVz1EP1sraVswXS5ob3VycywraVsxXS5ob3Vyc106K2kuaG91cnMsUT1EP1sraVswXS5taW51dGVzLCtpWzFdLm1pbnV0ZXNdOitpLm1pbnV0ZXMsZGU9RD9bK2lbMF0uc2Vjb25kcywraVsxXS5zZWNvbmRzXToraS5zZWNvbmRzO0soXCJob3Vyc1wiLFcpLEsoXCJtaW51dGVzXCIsUSksdC5lbmFibGVTZWNvbmRzJiZLKFwic2Vjb25kc1wiLGRlKX19LGQ9KCk9PkFycmF5LmlzQXJyYXkoZi52YWx1ZSkmJmYudmFsdWUubGVuZ3RoP2YudmFsdWVbZi52YWx1ZS5sZW5ndGgtMV06bnVsbCxvPSgpPT57aWYoQXJyYXkuaXNBcnJheShmLnZhbHVlKSYmZi52YWx1ZS5sZW5ndGg9PT0yKXtjb25zdCBpPVMoUyhmLnZhbHVlWzFdP2YudmFsdWVbMV06Yy5hZGRNb250aHMoZi52YWx1ZVswXSwxKSkpLFtELFddPVtjLmdldE1vbnRoKGYudmFsdWVbMF0pLGMuZ2V0WWVhcihmLnZhbHVlWzBdKV0sW1EsZGVdPVtjLmdldE1vbnRoKGYudmFsdWVbMV0pLGMuZ2V0WWVhcihmLnZhbHVlWzFdKV07KEQhPT1RfHxEPT09USYmVyE9PWRlKSYmdC5tdWx0aUNhbGVuZGFyc1NvbG8mJlUoMSxjLmdldE1vbnRoKGkpLGMuZ2V0WWVhcihpKSl9ZWxzZSBmLnZhbHVlJiYhQXJyYXkuaXNBcnJheShmLnZhbHVlKSYmVSgwLGMuZ2V0TW9udGgoZi52YWx1ZSksYy5nZXRZZWFyKGYudmFsdWUpKX0sbD1pPT57Y29uc3QgRD1jLmFkZE1vbnRocyhpLDEpO3JldHVybnttb250aDpjLmdldE1vbnRoKEQpLHllYXI6Yy5nZXRZZWFyKEQpfX0saz1pPT57Y29uc3QgRD1jLmdldE1vbnRoKFMoaSkpLFc9Yy5nZXRZZWFyKFMoaSkpO2lmKFUoMCxELFcpLHYudmFsdWUubXVsdGlDYWxlbmRhcnM+MClmb3IobGV0IFE9MTtRPHYudmFsdWUubXVsdGlDYWxlbmRhcnM7USsrKXtjb25zdCBkZT1sKGMuc2V0KFMoaSkse3llYXI6Ui52YWx1ZShRLTEpLG1vbnRoOkkudmFsdWUoUS0xKX0pKTtVKFEsZGUubW9udGgsZGUueWVhcil9fSxNPWk9PntpZihmLnZhbHVlJiZBcnJheS5pc0FycmF5KGYudmFsdWUpKWlmKGYudmFsdWUuc29tZShEPT5vZShpLEQpKSl7Y29uc3QgRD1mLnZhbHVlLmZpbHRlcihXPT4hb2UoVyxpKSk7Zi52YWx1ZT1ELmxlbmd0aD9EOm51bGx9ZWxzZSh0Lm11bHRpRGF0ZXNMaW1pdCYmK3QubXVsdGlEYXRlc0xpbWl0PmYudmFsdWUubGVuZ3RofHwhdC5tdWx0aURhdGVzTGltaXQpJiZmLnZhbHVlLnB1c2goaSk7ZWxzZSBmLnZhbHVlPVtpXX0sQj0oaSxEKT0+e2NvbnN0IFc9aGUoaSxEKT9EOmksUT1oZShELGkpP0Q6aTtyZXR1cm4gYy5lYWNoRGF5T2ZJbnRlcnZhbCh7c3RhcnQ6VyxlbmQ6UX0pfSxxPShpLEQ9MCk9PntpZihBcnJheS5pc0FycmF5KGYudmFsdWUpJiZmLnZhbHVlW0RdKXtjb25zdCBXPWMuZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKGksZi52YWx1ZVtEXSksUT1CKGYudmFsdWVbRF0saSksZGU9US5sZW5ndGg9PT0xPzA6US5maWx0ZXIoUmU9PmgoUmUpKS5sZW5ndGgsU2U9TWF0aC5hYnMoVyktZGU7aWYodC5taW5SYW5nZSYmdC5tYXhSYW5nZSlyZXR1cm4gU2U+PSt0Lm1pblJhbmdlJiZTZTw9K3QubWF4UmFuZ2U7aWYodC5taW5SYW5nZSlyZXR1cm4gU2U+PSt0Lm1pblJhbmdlO2lmKHQubWF4UmFuZ2UpcmV0dXJuIFNlPD0rdC5tYXhSYW5nZX1yZXR1cm4hMH0scD1pPT5BcnJheS5pc0FycmF5KGYudmFsdWUpJiZmLnZhbHVlLmxlbmd0aD09PTI/dC5maXhlZFN0YXJ0JiYoaGUoaSxmLnZhbHVlWzBdKXx8b2UoaSxmLnZhbHVlWzBdKSk/W2YudmFsdWVbMF0saV06dC5maXhlZEVuZCYmKGdlKGksZi52YWx1ZVsxXSl8fG9lKGksZi52YWx1ZVsxXSkpP1tpLGYudmFsdWVbMV1dOihhKFwiaW52YWxpZC1maXhlZC1yYW5nZVwiLGkpLGYudmFsdWUpOltdLHM9KCk9Pnt0LmF1dG9BcHBseSYmVi52YWx1ZSYmYShcImF1dG8tYXBwbHlcIix0LnBhcnRpYWxGbG93KX0sTz0oKT0+e3QuYXV0b0FwcGx5JiZhKFwic2VsZWN0LWRhdGVcIil9LFo9aT0+IWMuZWFjaERheU9mSW50ZXJ2YWwoe3N0YXJ0OmlbMF0sZW5kOmlbMV19KS5zb21lKFc9PmgoVykpLHNlPWk9PihmLnZhbHVlPV8oUyhpLnZhbHVlKSkscygpKSwkZT1pPT57Y29uc3QgRD1DZShTKGkudmFsdWUpLHouaG91cnMsei5taW51dGVzLCQoKSk7dC5tdWx0aURhdGVzP00oRCk6Zi52YWx1ZT1ELHIoKSxzKCl9LE5lPSgpPT57Yi52YWx1ZT1mLnZhbHVlP2YudmFsdWUuc2xpY2UoKTpbXSxiLnZhbHVlLmxlbmd0aD09PTImJiEodC5maXhlZFN0YXJ0fHx0LmZpeGVkRW5kKSYmKGIudmFsdWU9W10pfSxKPShpLEQpPT57Y29uc3QgVz1bUyhpLnZhbHVlKSxjLmFkZERheXMoUyhpLnZhbHVlKSwrdC5hdXRvUmFuZ2UpXTtaKFcpJiYoRCYmayhpLnZhbHVlKSxiLnZhbHVlPVcpfSx2ZT1pPT57YmUoaS52YWx1ZSl8fCFxKGkudmFsdWUsdC5maXhlZFN0YXJ0PzA6MSl8fChiLnZhbHVlPXAoUyhpLnZhbHVlKSkpfSxiZT1pPT50Lm5vRGlzYWJsZWRSYW5nZT9CKGIudmFsdWVbMF0saSkuc29tZShXPT5oKFcpKTohMSxtZT0oaSxEKT0+e2lmKE5lKCksdC5hdXRvUmFuZ2UpcmV0dXJuIEooaSxEKTtpZih0LmZpeGVkU3RhcnR8fHQuZml4ZWRFbmQpcmV0dXJuIHZlKGkpO2IudmFsdWVbMF0/cShTKGkudmFsdWUpKSYmIWJlKGkudmFsdWUpJiYoZ2UoUyhpLnZhbHVlKSxTKGIudmFsdWVbMF0pKT8oYi52YWx1ZS51bnNoaWZ0KFMoaS52YWx1ZSkpLGEoXCJyYW5nZS1lbmRcIixiLnZhbHVlWzBdKSk6KGIudmFsdWVbMV09UyhpLnZhbHVlKSxhKFwicmFuZ2UtZW5kXCIsYi52YWx1ZVsxXSkpKTooYi52YWx1ZVswXT1TKGkudmFsdWUpLGEoXCJyYW5nZS1zdGFydFwiLGIudmFsdWVbMF0pKX0sVGU9aT0+e2IudmFsdWVbaV09Q2UoYi52YWx1ZVtpXSx6LmhvdXJzW2ldLHoubWludXRlc1tpXSwkKGkhPT0xKSl9LEtlPSgpPT57Yi52YWx1ZS5sZW5ndGgmJihiLnZhbHVlWzBdJiYhYi52YWx1ZVsxXT9UZSgwKTooVGUoMCksVGUoMSkscigpKSxmLnZhbHVlPWIudmFsdWUuc2xpY2UoKSxiLnZhbHVlWzBdJiZiLnZhbHVlWzFdJiZ0LmF1dG9BcHBseSYmYShcImF1dG8tYXBwbHlcIiksYi52YWx1ZVswXSYmIWIudmFsdWVbMV0mJnQubW9kZWxBdXRvJiZ0LmF1dG9BcHBseSYmYShcImF1dG8tYXBwbHlcIikpfSxVZT0oaSxEPSExKT0+e2lmKCEoaChpLnZhbHVlKXx8IWkuY3VycmVudCYmdC5oaWRlT2Zmc2V0RGF0ZXMpKXtpZih0LndlZWtQaWNrZXIpcmV0dXJuIHNlKGkpO2lmKCF0LnJhbmdlKXJldHVybiAkZShpKTtfZSh6LmhvdXJzKSYmX2Uoei5taW51dGVzKSYmIXQubXVsdGlEYXRlcyYmKG1lKGksRCksS2UoKSl9fSxqPWk9Pntjb25zdCBEPWlbMF07cmV0dXJuIHQud2Vla051bWJlcnM9PT1cImxvY2FsXCI/Yy5nZXRXZWVrKEQudmFsdWUse3dlZWtTdGFydHNPbjordC53ZWVrU3RhcnR9KTp0LndlZWtOdW1iZXJzPT09XCJpc29cIj9jLmdldElTT1dlZWsoRC52YWx1ZSk6dHlwZW9mIHQud2Vla051bWJlcnM9PVwiZnVuY3Rpb25cIj90LndlZWtOdW1iZXJzKEQudmFsdWUpOlwiXCJ9LGVlPWk9Pntmb3IobGV0IEQ9aS0xO0Q+PTA7RC0tKXtjb25zdCBXPWMuc3ViTW9udGhzKGMuc2V0KFMoKSx7bW9udGg6Ui52YWx1ZShEKzEpLHllYXI6SS52YWx1ZShEKzEpfSksMSk7VShELGMuZ2V0TW9udGgoVyksYy5nZXRZZWFyKFcpKX1mb3IobGV0IEQ9aSsxO0Q8PXYudmFsdWUubXVsdGlDYWxlbmRhcnMtMTtEKyspe2NvbnN0IFc9Yy5hZGRNb250aHMoYy5zZXQoUygpLHttb250aDpSLnZhbHVlKEQtMSkseWVhcjpJLnZhbHVlKEQtMSl9KSwxKTtVKEQsYy5nZXRNb250aChXKSxjLmdldFllYXIoVykpfX0sWD1pPT5OKFMoKSxSLnZhbHVlKGkpLEkudmFsdWUoaSkpLEllPWk9PkNlKGksei5ob3Vycyx6Lm1pbnV0ZXMsJCgpKSxFZT1pPT57TShYKGkpKX0sRHQ9KGksRCk9Pntjb25zdCBXPXQubW9udGhQaWNrZXI/Ui52YWx1ZShpKSE9PUQubW9udGh8fCFELmZyb21OYXY6SS52YWx1ZShpKSE9PUQueWVhcnx8IUQuZnJvbU5hdjtpZihVKGksRC5tb250aCxELnllYXIpLHYudmFsdWUubXVsdGlDYWxlbmRhcnMmJiF0Lm11bHRpQ2FsZW5kYXJzU29sbyYmZWUoaSksdC5tb250aFBpY2tlcnx8dC55ZWFyUGlja2VyKWlmKHQubXVsdGlEYXRlcylXJiZFZShpKTtlbHNlIGlmKHQucmFuZ2Upe2lmKFcmJnEoWChpKSkpe2xldCBRPWYudmFsdWU/Zi52YWx1ZS5zbGljZSgpOltdO1EubGVuZ3RoPT09MiYmUVsxXSE9PW51bGwmJihRPVtdKSxRLmxlbmd0aD9nZShYKGkpLFFbMF0pP1EudW5zaGlmdChYKGkpKTpRWzFdPVgoaSk6UT1bWChpKV0sZi52YWx1ZT1RfX1lbHNlIGYudmFsdWU9WChpKTthKFwidXBkYXRlLW1vbnRoLXllYXJcIix7aW5zdGFuY2U6aSxtb250aDpELm1vbnRoLHllYXI6RC55ZWFyfSksbih0Lm11bHRpQ2FsZW5kYXJzU29sbz9pOnZvaWQgMCl9LEN0PWFzeW5jKGk9ITEpPT57aWYodC5hdXRvQXBwbHkmJih0Lm1vbnRoUGlja2VyfHx0LnllYXJQaWNrZXIpKXthd2FpdCBlLm5leHRUaWNrKCk7Y29uc3QgRD10Lm1vbnRoUGlja2VyP2k6ITE7dC5yYW5nZT9hKFwiYXV0by1hcHBseVwiLER8fCFmLnZhbHVlfHxmLnZhbHVlLmxlbmd0aD09PTEpOmEoXCJhdXRvLWFwcGx5XCIsRCl9cigpfSxKZT0oaSxEKT0+e2NvbnN0IFc9Yy5zZXQoUygpLHttb250aDpSLnZhbHVlKEQpLHllYXI6SS52YWx1ZShEKX0pLFE9aTwwP2MuYWRkTW9udGhzKFcsMSk6Yy5zdWJNb250aHMoVywxKTtZKGMuZ2V0TW9udGgoUSksYy5nZXRZZWFyKFEpLGk8MCx0LnByZXZlbnRNaW5NYXhOYXZpZ2F0aW9uKSYmKFUoRCxjLmdldE1vbnRoKFEpLGMuZ2V0WWVhcihRKSksdi52YWx1ZS5tdWx0aUNhbGVuZGFycyYmIXQubXVsdGlDYWxlbmRhcnNTb2xvJiZlZShEKSxhKFwidXBkYXRlLW1vbnRoLXllYXJcIix7aW5zdGFuY2U6RCxtb250aDpjLmdldE1vbnRoKFEpLHllYXI6Yy5nZXRZZWFyKFEpfSksbigpKX0sV2U9aT0+e1p0KGkpJiZadChmLnZhbHVlKSYmX2Uoei5ob3VycykmJl9lKHoubWludXRlcyk/KGlbMF0mJmYudmFsdWVbMF0mJihmLnZhbHVlWzBdPUNlKGlbMF0sei5ob3Vyc1swXSx6Lm1pbnV0ZXNbMF0sJCgpKSksaVsxXSYmZi52YWx1ZVsxXSYmKGYudmFsdWVbMV09Q2UoaVsxXSx6LmhvdXJzWzFdLHoubWludXRlc1sxXSwkKCExKSkpKTp0Lm11bHRpRGF0ZXMmJkFycmF5LmlzQXJyYXkoZi52YWx1ZSk/Zi52YWx1ZVtmLnZhbHVlLmxlbmd0aC0xXT1JZShpKTohdC5yYW5nZSYmIVh0KGkpJiYoZi52YWx1ZT1JZShpKSksYShcInRpbWUtdXBkYXRlXCIpfSxNdD0oaSxEPSEwLFc9ITEpPT57Y29uc3QgUT1EP2k6ei5ob3VycyxkZT0hRCYmIVc/aTp6Lm1pbnV0ZXMsU2U9Vz9pOnouc2Vjb25kcztpZih0LnJhbmdlJiZYdChmLnZhbHVlKSYmX2UoUSkmJl9lKGRlKSYmX2UoU2UpJiYhdC5kaXNhYmxlVGltZVJhbmdlVmFsaWRhdGlvbil7Y29uc3QgUmU9eD0+Q2UoZi52YWx1ZVt4XSxRW3hdLGRlW3hdLFNlW3hdKSx3PXg9PmMuc2V0TWlsbGlzZWNvbmRzKGYudmFsdWVbeF0sMCk7aWYob2UoZi52YWx1ZVswXSxmLnZhbHVlWzFdKSYmKGMuaXNBZnRlcihSZSgwKSx3KDEpKXx8Yy5pc0JlZm9yZShSZSgxKSx3KDApKSkpcmV0dXJufWlmKEsoXCJob3Vyc1wiLFEpLEsoXCJtaW51dGVzXCIsZGUpLEsoXCJzZWNvbmRzXCIsU2UpLGYudmFsdWUpaWYodC5tdWx0aURhdGVzKXtjb25zdCBSZT1kKCk7UmUmJldlKFJlKX1lbHNlIFdlKGYudmFsdWUpO2Vsc2UgdC50aW1lUGlja2VyJiZXZSh0LnJhbmdlP1tTKCksUygpXTpTKCkpO3IoKX0sJHQ9KGksRCk9Pnt0Lm1vbnRoQ2hhbmdlT25TY3JvbGwmJkplKHQubW9udGhDaGFuZ2VPblNjcm9sbCE9PVwiaW52ZXJzZVwiPy1pLmRlbHRhWTppLmRlbHRhWSxEKX0sU3Q9KGksRCxXPSExKT0+e3QubW9udGhDaGFuZ2VPbkFycm93cyYmdC52ZXJ0aWNhbD09PVcmJlFlKGksRCl9LFFlPShpLEQpPT57SmUoaT09PVwicmlnaHRcIj8tMToxLEQpfTtyZXR1cm57dGltZTp6LG1vbnRoOlIseWVhcjpJLG1vZGVsVmFsdWU6ZixjYWxlbmRhcnM6TCxtb250aFllYXJTZWxlY3Q6Q3QsaXNEaXNhYmxlZDpoLHVwZGF0ZVRpbWU6TXQsZ2V0V2Vla051bTpqLHNlbGVjdERhdGU6VWUsdXBkYXRlTW9udGhZZWFyOkR0LGhhbmRsZVNjcm9sbDokdCxnZXRNYXJrZXI6aT0+dC5tYXJrZXJzLmZpbmQoRD0+b2UoVChpLnZhbHVlKSxUKEQuZGF0ZSkpKSxoYW5kbGVBcnJvdzpTdCxoYW5kbGVTd2lwZTpRZSxzZWxlY3RDdXJyZW50RGF0ZTooKT0+e3QucmFuZ2U/Zi52YWx1ZSYmQXJyYXkuaXNBcnJheShmLnZhbHVlKSYmZi52YWx1ZVswXT9mLnZhbHVlPWdlKFMoKSxmLnZhbHVlWzBdKT9bUygpLGYudmFsdWVbMF1dOltmLnZhbHVlWzBdLFMoKV06Zi52YWx1ZT1bUygpXTpmLnZhbHVlPVMoKSxPKCl9LHByZXNldERhdGVSYW5nZTooaSxEKT0+e0R8fGkubGVuZ3RoJiZpLmxlbmd0aDw9MiYmdC5yYW5nZSYmKGYudmFsdWU9aS5tYXAoVz0+UyhXKSksTygpLHQubXVsdGlDYWxlbmRhcnMmJmUubmV4dFRpY2soKS50aGVuKCgpPT50ZSghMCkpKX19fSxIbj0odCxhLHIpPT57Y29uc3Qgbj1lLnJlZigpLHtnZXRab25lZFRvVXRjOnUsZ2V0Wm9uZWREYXRlOm0sZm9ybWF0RGF0ZTpoLGdldERlZmF1bHRQYXR0ZXJuOlQsY2hlY2tSYW5nZUVuYWJsZWQ6XyxjaGVja1BhcnRpYWxSYW5nZVZhbHVlOk4saXNWYWxpZERhdGU6WSxzZXREYXRlTW9udGhPclllYXI6dixkZWZhdWx0czpmfT1EZShhKSxiPWUucmVmKFwiXCIpLEc9ZS50b1JlZihhLFwiZm9ybWF0XCIpO2Uud2F0Y2gobiwoKT0+e3QoXCJpbnRlcm5hbC1tb2RlbC1jaGFuZ2VcIixuLnZhbHVlKX0pLGUud2F0Y2goRywoKT0+e2QoKX0pO2NvbnN0IEw9cz0+e2NvbnN0IE89c3x8UygpO3JldHVybiBhLm1vZGVsVHlwZT9sKE8pOntob3VyczpjLmdldEhvdXJzKE8pLG1pbnV0ZXM6Yy5nZXRNaW51dGVzKE8pLHNlY29uZHM6YS5lbmFibGVTZWNvbmRzP2MuZ2V0U2Vjb25kcyhPKTowfX0sej1zPT5hLm1vZGVsVHlwZT9sKHMpOnttb250aDpjLmdldE1vbnRoKHMpLHllYXI6Yy5nZXRZZWFyKHMpfSxSPXM9PkFycmF5LmlzQXJyYXkocyk/XygoKT0+W2Muc2V0WWVhcihTKCksc1swXSksc1sxXT9jLnNldFllYXIoUygpLHNbMV0pOk4oKV0pOmMuc2V0WWVhcihTKCksK3MpLEk9KHMsTyk9Pih0eXBlb2Ygcz09XCJzdHJpbmdcInx8dHlwZW9mIHM9PVwibnVtYmVyXCIpJiZhLm1vZGVsVHlwZT9vKHMpOk8sVj1zPT5BcnJheS5pc0FycmF5KHMpP1tJKHNbMF0sQ2UobnVsbCwrc1swXS5ob3Vycywrc1swXS5taW51dGVzLHNbMF0uc2Vjb25kcykpLEkoc1sxXSxDZShudWxsLCtzWzFdLmhvdXJzLCtzWzFdLm1pbnV0ZXMsc1sxXS5zZWNvbmRzKSldOkkocyxDZShudWxsLHMuaG91cnMscy5taW51dGVzLHMuc2Vjb25kcykpLFU9cz0+QXJyYXkuaXNBcnJheShzKT9hLm11bHRpRGF0ZXM/cy5tYXAoTz0+SShPLHYobnVsbCwrTy5tb250aCwrTy55ZWFyKSkpOl8oKCk9PltJKHNbMF0sdihudWxsLCtzWzBdLm1vbnRoLCtzWzBdLnllYXIpKSxJKHNbMV0sc1sxXT92KG51bGwsK3NbMV0ubW9udGgsK3NbMV0ueWVhcik6TigpKV0pOkkocyx2KG51bGwsK3MubW9udGgsK3MueWVhcikpLEs9cz0+e2lmKEFycmF5LmlzQXJyYXkocykpcmV0dXJuIHMubWFwKE89Pm8oTykpO3Rocm93IG5ldyBFcnJvcihHZS5kYXRlQXJyKFwibXVsdGktZGF0ZXNcIikpfSxGPXM9PntpZihBcnJheS5pc0FycmF5KHMpKXJldHVybltTKHNbMF0pLFMoc1sxXSldO3Rocm93IG5ldyBFcnJvcihHZS5kYXRlQXJyKFwid2Vlay1waWNrZXJcIikpfSx0ZT1zPT5hLm1vZGVsQXV0bz9BcnJheS5pc0FycmF5KHMpP1tvKHNbMF0pLG8oc1sxXSldOmEuYXV0b0FwcGx5P1tvKHMpXTpbbyhzKSxudWxsXTpBcnJheS5pc0FycmF5KHMpP18oKCk9PltvKHNbMF0pLHNbMV0/byhzWzFdKTpOKCldKTpvKHMpLG5lPSgpPT57QXJyYXkuaXNBcnJheShuLnZhbHVlKSYmYS5yYW5nZSYmbi52YWx1ZS5sZW5ndGg9PT0xJiZuLnZhbHVlLnB1c2goTigpKX0sYWU9KCk9Pntjb25zdCBzPW4udmFsdWU7cmV0dXJuW2woc1swXSksc1sxXT9sKHNbMV0pOk4oKV19LHJlPSgpPT5uLnZhbHVlWzFdP2FlKCk6bCh5ZShuLnZhbHVlWzBdKSksUD0oKT0+KG4udmFsdWV8fFtdKS5tYXAocz0+bChzKSksQz0oKT0+KG5lKCksYS5tb2RlbEF1dG8/cmUoKTphLm11bHRpRGF0ZXM/UCgpOkFycmF5LmlzQXJyYXkobi52YWx1ZSk/XygoKT0+YWUoKSk6bCh5ZShuLnZhbHVlKSkpLHk9cz0+cz9hLnRpbWVQaWNrZXI/Vih5ZShzKSk6YS5tb250aFBpY2tlcj9VKHllKHMpKTphLnllYXJQaWNrZXI/Uih5ZShzKSk6YS5tdWx0aURhdGVzP0soeWUocykpOmEud2Vla1BpY2tlcj9GKHllKHMpKTp0ZSh5ZShzKSk6bnVsbCxBPXM9Pntjb25zdCBPPXkocyk7WSh5ZShPKSk/KG4udmFsdWU9eWUoTyksZCgpKToobi52YWx1ZT1udWxsLGIudmFsdWU9XCJcIil9LEU9KCk9Pnt2YXIgTztjb25zdCBzPVo9Pnt2YXIgc2U7cmV0dXJuIGMuZm9ybWF0KFosKHNlPWYudmFsdWUudGV4dElucHV0T3B0aW9ucyk9PW51bGw/dm9pZCAwOnNlLmZvcm1hdCl9O3JldHVybmAke3Mobi52YWx1ZVswXSl9ICR7KE89Zi52YWx1ZS50ZXh0SW5wdXRPcHRpb25zKT09bnVsbD92b2lkIDA6Ty5yYW5nZVNlcGFyYXRvcn0gJHtuLnZhbHVlWzFdP3Mobi52YWx1ZVsxXSk6XCJcIn1gfSwkPSgpPT57dmFyIHM7cmV0dXJuIHIudmFsdWUmJm4udmFsdWU/QXJyYXkuaXNBcnJheShuLnZhbHVlKT9FKCk6Yy5mb3JtYXQobi52YWx1ZSwocz1mLnZhbHVlLnRleHRJbnB1dE9wdGlvbnMpPT1udWxsP3ZvaWQgMDpzLmZvcm1hdCk6aChuLnZhbHVlKX0sZz0oKT0+e3ZhciBzO3JldHVybiBuLnZhbHVlP2EubXVsdGlEYXRlcz9uLnZhbHVlLm1hcChPPT5oKE8pKS5qb2luKFwiOyBcIik6YS50ZXh0SW5wdXQmJnR5cGVvZigocz1mLnZhbHVlLnRleHRJbnB1dE9wdGlvbnMpPT1udWxsP3ZvaWQgMDpzLmZvcm1hdCk9PVwic3RyaW5nXCI/JCgpOmgobi52YWx1ZSk6XCJcIn0sZD0oKT0+eyFhLmZvcm1hdHx8dHlwZW9mIGEuZm9ybWF0PT1cInN0cmluZ1wiP2IudmFsdWU9ZygpOmIudmFsdWU9YS5mb3JtYXQobi52YWx1ZSl9LG89cz0+e2lmKGEudXRjKXtjb25zdCBPPW5ldyBEYXRlKHMpO3JldHVybiBhLnV0Yz09PVwicHJlc2VydmVcIj9uZXcgRGF0ZShPLmdldFRpbWUoKStPLmdldFRpbWV6b25lT2Zmc2V0KCkqNmU0KTpPfXJldHVybiBhLm1vZGVsVHlwZT9hLm1vZGVsVHlwZT09PVwiZGF0ZVwifHxhLm1vZGVsVHlwZT09PVwidGltZXN0YW1wXCI/bShuZXcgRGF0ZShzKSk6YS5tb2RlbFR5cGU9PT1cImZvcm1hdFwiJiYodHlwZW9mIGEuZm9ybWF0PT1cInN0cmluZ1wifHwhYS5mb3JtYXQpP2MucGFyc2UocyxUKCksbmV3IERhdGUpOm0oYy5wYXJzZShzLGEubW9kZWxUeXBlLG5ldyBEYXRlKSk6bShuZXcgRGF0ZShzKSl9LGw9cz0+cz9hLnV0Yz9ubihzLGEudXRjPT09XCJwcmVzZXJ2ZVwiLGEuZW5hYmxlU2Vjb25kcyk6YS5tb2RlbFR5cGU/YS5tb2RlbFR5cGU9PT1cInRpbWVzdGFtcFwiPyt1KHMpOmEubW9kZWxUeXBlPT09XCJmb3JtYXRcIiYmKHR5cGVvZiBhLmZvcm1hdD09XCJzdHJpbmdcInx8IWEuZm9ybWF0KT9oKHUocykpOmgodShzKSxhLm1vZGVsVHlwZSk6dShzKTpcIlwiLGs9cz0+e3QoXCJ1cGRhdGU6bW9kZWwtdmFsdWVcIixzKX0sTT1zPT5BcnJheS5pc0FycmF5KG4udmFsdWUpP2EubXVsdGlEYXRlcz9uLnZhbHVlLm1hcChPPT5zKE8pKTpbcyhuLnZhbHVlWzBdKSxuLnZhbHVlWzFdP3Mobi52YWx1ZVsxXSk6TigpXTpzKHllKG4udmFsdWUpKSxCPXM9PmsoeWUoTShzKSkpO3JldHVybntpbnB1dFZhbHVlOmIsaW50ZXJuYWxNb2RlbFZhbHVlOm4sY2hlY2tCZWZvcmVFbWl0OigpPT5uLnZhbHVlP2EucmFuZ2U/YS5wYXJ0aWFsUmFuZ2U/bi52YWx1ZS5sZW5ndGg+PTE6bi52YWx1ZS5sZW5ndGg9PT0yOiEhbi52YWx1ZTohMSxwYXJzZUV4dGVybmFsTW9kZWxWYWx1ZTpBLGZvcm1hdElucHV0VmFsdWU6ZCxlbWl0TW9kZWxWYWx1ZTooKT0+KGQoKSxhLm1vbnRoUGlja2VyP0Ioeik6YS50aW1lUGlja2VyP0IoTCk6YS55ZWFyUGlja2VyP0IoYy5nZXRZZWFyKTphLndlZWtQaWNrZXI/ayhuLnZhbHVlKTprKEMoKSkpfX0sam49KHQsYSk9Pntjb25zdHt2YWxpZGF0ZU1vbnRoWWVhckluUmFuZ2U6cix2YWxpZGF0ZU1heERhdGU6bix2YWxpZGF0ZU1pbkRhdGU6dSxkZWZhdWx0czptfT1EZSh0KSxoPSh2LGYpPT57bGV0IGI9djtyZXR1cm4gbS52YWx1ZS5maWx0ZXJzLm1vbnRocy5pbmNsdWRlcyhjLmdldE1vbnRoKGIpKT8oYj1mP2MuYWRkTW9udGhzKHYsMSk6Yy5zdWJNb250aHModiwxKSxoKGIsZikpOmJ9LFQ9KHYsZik9PntsZXQgYj12O3JldHVybiBtLnZhbHVlLmZpbHRlcnMueWVhcnMuaW5jbHVkZXMoYy5nZXRZZWFyKGIpKT8oYj1mP2MuYWRkWWVhcnModiwxKTpjLnN1YlllYXJzKHYsMSksVChiLGYpKTpifSxfPXY9Pntjb25zdCBmPWMuc2V0KG5ldyBEYXRlLHttb250aDp0Lm1vbnRoLHllYXI6dC55ZWFyfSk7bGV0IGI9dj9jLmFkZE1vbnRocyhmLDEpOmMuc3ViTW9udGhzKGYsMSk7dC5kaXNhYmxlWWVhclNlbGVjdCYmKGI9Yy5zZXRZZWFyKGIsdC55ZWFyKSk7bGV0IEc9Yy5nZXRNb250aChiKSxMPWMuZ2V0WWVhcihiKTttLnZhbHVlLmZpbHRlcnMubW9udGhzLmluY2x1ZGVzKEcpJiYoYj1oKGIsdiksRz1jLmdldE1vbnRoKGIpLEw9Yy5nZXRZZWFyKGIpKSxtLnZhbHVlLmZpbHRlcnMueWVhcnMuaW5jbHVkZXMoTCkmJihiPVQoYix2KSxMPWMuZ2V0WWVhcihiKSkscihHLEwsdix0LnByZXZlbnRNaW5NYXhOYXZpZ2F0aW9uKSYmTihHLEwpfSxOPSh2LGYpPT57YShcInVwZGF0ZS1tb250aC15ZWFyXCIse21vbnRoOnYseWVhcjpmfSl9LFk9ZS5jb21wdXRlZCgoKT0+dj0+e2lmKCF0LnByZXZlbnRNaW5NYXhOYXZpZ2F0aW9ufHx2JiYhdC5tYXhEYXRlfHwhdiYmIXQubWluRGF0ZSlyZXR1cm4hMTtjb25zdCBmPWMuc2V0KG5ldyBEYXRlLHttb250aDp0Lm1vbnRoLHllYXI6dC55ZWFyfSksYj12P2MuYWRkTW9udGhzKGYsMSk6Yy5zdWJNb250aHMoZiwxKSxHPVtjLmdldE1vbnRoKGIpLGMuZ2V0WWVhcihiKV07cmV0dXJuIHY/IW4oLi4uRyk6IXUoLi4uRyl9KTtyZXR1cm57aGFuZGxlTW9udGhZZWFyQ2hhbmdlOl8saXNEaXNhYmxlZDpZLHVwZGF0ZU1vbnRoWWVhcjpOfX07dmFyIFplPSh0PT4odC5jZW50ZXI9XCJjZW50ZXJcIix0LmxlZnQ9XCJsZWZ0XCIsdC5yaWdodD1cInJpZ2h0XCIsdCkpKFplfHx7fSk7Y29uc3QgR249KHQsYSxyLG4pPT57Y29uc3QgdT1lLnJlZih7dG9wOlwiMFwiLGxlZnQ6XCIwXCIsdHJhbnNmb3JtOlwibm9uZVwiLG9wYWNpdHk6XCIwXCJ9KSxtPWUucmVmKCExKSxoPWUudG9SZWYobixcInRlbGVwb3J0Q2VudGVyXCIpLFQ9ZS5jb21wdXRlZCgoKT0+bS52YWx1ZT9cIi0xMDAlXCI6XCIwXCIpLF89KCk9PntOKCksdS52YWx1ZS5vcGFjaXR5PVwiMFwifTtlLndhdGNoKGgsKCk9PntJKCl9KSxlLm9uTW91bnRlZCgoKT0+e04oKX0pO2NvbnN0IE49KCk9Pntjb25zdCBDPWNlKGEpO2lmKEMpe2NvbnN0e3RvcDp5LGxlZnQ6QSx3aWR0aDpFLGhlaWdodDokfT1HKEMpO3UudmFsdWUudG9wPWAke3krJC8yfXB4YCxiKEEsRSw1MCl9fSxZPUM9PntpZihuLnRlbGVwb3J0KXtjb25zdCB5PUMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJue2xlZnQ6eS5sZWZ0K3dpbmRvdy5zY3JvbGxYLHRvcDp5LnRvcCt3aW5kb3cuc2Nyb2xsWX19cmV0dXJue3RvcDowLGxlZnQ6MH19LHY9KEMseSk9Pnt1LnZhbHVlLmxlZnQ9YCR7Qyt5fXB4YCx1LnZhbHVlLnRyYW5zZm9ybT1gdHJhbnNsYXRlKC0xMDAlLCAke1QudmFsdWV9KWB9LGY9Qz0+e3UudmFsdWUubGVmdD1gJHtDfXB4YCx1LnZhbHVlLnRyYW5zZm9ybT1gdHJhbnNsYXRlKDAsICR7VC52YWx1ZX0pYH0sYj0oQyx5LEEpPT57bi5wb3NpdGlvbj09PVplLmxlZnQmJmYoQyksbi5wb3NpdGlvbj09PVplLnJpZ2h0JiZ2KEMseSksbi5wb3NpdGlvbj09PVplLmNlbnRlciYmKHUudmFsdWUubGVmdD1gJHtDK3kvMn1weGAsdS52YWx1ZS50cmFuc2Zvcm09QT9gdHJhbnNsYXRlKC01MCUsIC0ke0F9JSlgOmB0cmFuc2xhdGUoLTUwJSwgJHtULnZhbHVlfSlgKX0sRz1DPT57Y29uc3R7d2lkdGg6eSxoZWlnaHQ6QX09Qy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx7dG9wOkUsbGVmdDokfT1uLmFsdFBvc2l0aW9uP24uYWx0UG9zaXRpb24oQyk6WShDKTtyZXR1cm57dG9wOitFLGxlZnQ6KyQsd2lkdGg6eSxoZWlnaHQ6QX19LEw9KCk9Pntjb25zdCBDPWNlKGEpO2lmKEMpe2NvbnN0e3RvcDp5LGxlZnQ6QSx3aWR0aDpFLGhlaWdodDokfT1HKEMpLGc9dGUoKTt1LnZhbHVlLnRvcD1gJHt5KyQvMn1weGAsYihBLEUsZz09PVwidG9wXCI/MTAwOjApfX0sej0oKT0+e3UudmFsdWUubGVmdD1cIjUwJVwiLHUudmFsdWUudG9wPVwiNTAlXCIsdS52YWx1ZS50cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTUwJSwgLTUwJSlcIix1LnZhbHVlLnBvc2l0aW9uPVwiZml4ZWRcIixkZWxldGUgdS52YWx1ZS5vcGFjaXR5fSxSPSgpPT57Y29uc3QgQz1jZShhKSx7dG9wOnksbGVmdDpBLHRyYW5zZm9ybTpFfT1uLmFsdFBvc2l0aW9uKEMpO3UudmFsdWU9e3RvcDpgJHt5fXB4YCxsZWZ0OmAke0F9cHhgLHRyYW5zZm9ybTpFfHxcIlwifX0sST0oQz0hMCk9PntpZighbi5pbmxpbmUpcmV0dXJuIGgudmFsdWU/eigpOm4uYWx0UG9zaXRpb24hPT1udWxsP1IoKTooQyYmcihcInJlY2FsY3VsYXRlLXBvc2l0aW9uXCIpLGFlKCkpfSxWPSh7aW5wdXRFbDpDLG1lbnVFbDp5LGxlZnQ6QSx3aWR0aDpFfSk9Pnt3aW5kb3cuc2NyZWVuLndpZHRoPjc2OCYmYihBLEUpLEYoQyx5KX0sVT0oQyx5KT0+e2NvbnN0e3RvcDpBLGxlZnQ6RSxoZWlnaHQ6JCx3aWR0aDpnfT1HKEMpO3UudmFsdWUudG9wPWAkeyQrQSsgK24ub2Zmc2V0fXB4YCxtLnZhbHVlPSExLFYoe2lucHV0RWw6QyxtZW51RWw6eSxsZWZ0OkUsd2lkdGg6Z30pfSxLPShDLHkpPT57Y29uc3R7dG9wOkEsbGVmdDpFLHdpZHRoOiR9PUcoQyk7dS52YWx1ZS50b3A9YCR7QS0rbi5vZmZzZXR9cHhgLG0udmFsdWU9ITAsVih7aW5wdXRFbDpDLG1lbnVFbDp5LGxlZnQ6RSx3aWR0aDokfSl9LEY9KEMseSk9PntpZihuLmF1dG9Qb3NpdGlvbil7Y29uc3R7bGVmdDpBLHdpZHRoOkV9PUcoQykse2xlZnQ6JCxyaWdodDpnfT15LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiAkPD0wfHwkPD1BP2YoQSk6Zz49ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoP3YoQSxFKTpiKEEsRSl9fSx0ZT0oKT0+e2NvbnN0IEM9Y2UodCkseT1jZShhKTtpZihDJiZ5KXtjb25zdHtoZWlnaHQ6QX09Qy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx7dG9wOkUsaGVpZ2h0OiR9PXkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZD13aW5kb3cuaW5uZXJIZWlnaHQtRS0kLG89RTtyZXR1cm4gQTw9ZD9cImJvdHRvbVwiOkE+ZCYmQTw9bz9cInRvcFwiOmQ+PW8/XCJib3R0b21cIjpcInRvcFwifXJldHVyblwiYm90dG9tXCJ9LG5lPShDLHkpPT50ZSgpPT09XCJib3R0b21cIj9VKEMseSk6SyhDLHkpLGFlPSgpPT57Y29uc3QgQz1jZShhKSx5PWNlKHQpO2lmKEMmJnkpcmV0dXJuIG4uYXV0b1Bvc2l0aW9uP25lKEMseSk6VShDLHkpfSxyZT1mdW5jdGlvbihDKXtpZihDKXtjb25zdCB5PUMuc2Nyb2xsSGVpZ2h0PkMuY2xpZW50SGVpZ2h0LEU9d2luZG93LmdldENvbXB1dGVkU3R5bGUoQykub3ZlcmZsb3dZLmluZGV4T2YoXCJoaWRkZW5cIikhPT0tMTtyZXR1cm4geSYmIUV9cmV0dXJuITB9LFA9ZnVuY3Rpb24oQyl7cmV0dXJuIUN8fEM9PT1kb2N1bWVudC5ib2R5fHxDLm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFP3dpbmRvdzpyZShDKT9DOlAoQy5wYXJlbnROb2RlKX07cmV0dXJue29wZW5PblRvcDptLG1lbnVTdHlsZTp1LHJlc2V0UG9zaXRpb246XyxzZXRNZW51UG9zaXRpb246SSxzZXRJbml0aWFsUG9zaXRpb246TCxnZXRTY3JvbGxhYmxlUGFyZW50OlB9fSxZZT1be25hbWU6XCJjbG9jay1pY29uXCIsdXNlOltcInRpbWVcIixcImNhbGVuZGFyXCJdfSx7bmFtZTpcImFycm93LWxlZnRcIix1c2U6W1wibW9udGgteWVhclwiLFwiY2FsZW5kYXJcIl19LHtuYW1lOlwiYXJyb3ctcmlnaHRcIix1c2U6W1wibW9udGgteWVhclwiLFwiY2FsZW5kYXJcIl19LHtuYW1lOlwiYXJyb3ctdXBcIix1c2U6W1widGltZVwiLFwiY2FsZW5kYXJcIl19LHtuYW1lOlwiYXJyb3ctZG93blwiLHVzZTpbXCJ0aW1lXCIsXCJjYWxlbmRhclwiXX0se25hbWU6XCJjYWxlbmRhci1pY29uXCIsdXNlOltcIm1vbnRoLXllYXJcIixcInRpbWVcIixcImNhbGVuZGFyXCJdfSx7bmFtZTpcImRheVwiLHVzZTpbXCJjYWxlbmRhclwiXX0se25hbWU6XCJtb250aC1vdmVybGF5LXZhbHVlXCIsdXNlOltcImNhbGVuZGFyXCIsXCJtb250aC15ZWFyXCJdfSx7bmFtZTpcInllYXItb3ZlcmxheS12YWx1ZVwiLHVzZTpbXCJjYWxlbmRhclwiLFwibW9udGgteWVhclwiXX0se25hbWU6XCJ5ZWFyLW92ZXJsYXlcIix1c2U6W1wibW9udGgteWVhclwiXX0se25hbWU6XCJtb250aC1vdmVybGF5XCIsdXNlOltcIm1vbnRoLXllYXJcIl19LHtuYW1lOlwibW9udGgtb3ZlcmxheS1oZWFkZXJcIix1c2U6W1wibW9udGgteWVhclwiXX0se25hbWU6XCJ5ZWFyLW92ZXJsYXktaGVhZGVyXCIsdXNlOltcIm1vbnRoLXllYXJcIl19LHtuYW1lOlwiaG91cnMtb3ZlcmxheS12YWx1ZVwiLHVzZTpbXCJjYWxlbmRhclwiLFwidGltZVwiXX0se25hbWU6XCJtaW51dGVzLW92ZXJsYXktdmFsdWVcIix1c2U6W1wiY2FsZW5kYXJcIixcInRpbWVcIl19LHtuYW1lOlwic2Vjb25kcy1vdmVybGF5LXZhbHVlXCIsdXNlOltcImNhbGVuZGFyXCIsXCJ0aW1lXCJdfSx7bmFtZTpcImhvdXJzXCIsdXNlOltcImNhbGVuZGFyXCIsXCJ0aW1lXCJdfSx7bmFtZTpcIm1pbnV0ZXNcIix1c2U6W1wiY2FsZW5kYXJcIixcInRpbWVcIl19LHtuYW1lOlwibW9udGhcIix1c2U6W1wiY2FsZW5kYXJcIixcIm1vbnRoLXllYXJcIl19LHtuYW1lOlwieWVhclwiLHVzZTpbXCJjYWxlbmRhclwiLFwibW9udGgteWVhclwiXX0se25hbWU6XCJhY3Rpb24tYnV0dG9uc1wiLHVzZTpbXCJhY3Rpb25cIl19LHtuYW1lOlwiYWN0aW9uLXByZXZpZXdcIix1c2U6W1wiYWN0aW9uXCJdfSx7bmFtZTpcImNhbGVuZGFyLWhlYWRlclwiLHVzZTpbXCJjYWxlbmRhclwiXX0se25hbWU6XCJtYXJrZXItdG9vbHRpcFwiLHVzZTpbXCJjYWxlbmRhclwiXX0se25hbWU6XCJhY3Rpb24tZXh0cmFcIix1c2U6W1wibWVudVwiXX0se25hbWU6XCJ0aW1lLXBpY2tlci1vdmVybGF5XCIsdXNlOltcImNhbGVuZGFyXCIsXCJ0aW1lXCJdfSx7bmFtZTpcImFtLXBtLWJ1dHRvblwiLHVzZTpbXCJjYWxlbmRhclwiLFwidGltZVwiXX0se25hbWU6XCJsZWZ0LXNpZGViYXJcIix1c2U6W1wibWVudVwiXX0se25hbWU6XCJyaWdodC1zaWRlYmFyXCIsdXNlOltcIm1lbnVcIl19LHtuYW1lOlwibW9udGgteWVhclwiLHVzZTpbXCJtb250aC15ZWFyXCJdfSx7bmFtZTpcInRpbWUtcGlja2VyXCIsdXNlOltcIm1lbnVcIl19LHtuYW1lOlwiYWN0aW9uLXJvd1wiLHVzZTpbXCJhY3Rpb25cIl19XSxxbj1be25hbWU6XCJ0cmlnZ2VyXCJ9LHtuYW1lOlwiaW5wdXQtaWNvblwifSx7bmFtZTpcImNsZWFyLWljb25cIn0se25hbWU6XCJkcC1pbnB1dFwifV0sWm49e2FsbDooKT0+WWUsbW9udGhZZWFyOigpPT5ZZS5maWx0ZXIodD0+dC51c2UuaW5jbHVkZXMoXCJtb250aC15ZWFyXCIpKSxpbnB1dDooKT0+cW4sdGltZVBpY2tlcjooKT0+WWUuZmlsdGVyKHQ9PnQudXNlLmluY2x1ZGVzKFwidGltZVwiKSksYWN0aW9uOigpPT5ZZS5maWx0ZXIodD0+dC51c2UuaW5jbHVkZXMoXCJhY3Rpb25cIikpLGNhbGVuZGFyOigpPT5ZZS5maWx0ZXIodD0+dC51c2UuaW5jbHVkZXMoXCJjYWxlbmRhclwiKSksbWVudTooKT0+WWUuZmlsdGVyKHQ9PnQudXNlLmluY2x1ZGVzKFwibWVudVwiKSl9LE9lPSh0LGEscik9Pntjb25zdCBuPVtdO3JldHVybiBablthXSgpLmZvckVhY2godT0+e3RbdS5uYW1lXSYmbi5wdXNoKHUubmFtZSl9KSxyJiZyLmxlbmd0aCYmci5mb3JFYWNoKHU9Pnt1LnNsb3QmJm4ucHVzaCh1LnNsb3QpfSksbn0sWGU9dD0+KHt0cmFuc2l0aW9uTmFtZTplLmNvbXB1dGVkKCgpPT5yPT50JiZ0eXBlb2YgdCE9XCJib29sZWFuXCI/cj90Lm9wZW46dC5jbG9zZTpcIlwiKSxzaG93VHJhbnNpdGlvbjohIXR9KSxWZT17bXVsdGlDYWxlbmRhcnM6e3R5cGU6W0Jvb2xlYW4sTnVtYmVyLFN0cmluZ10sZGVmYXVsdDpudWxsfSxtb2RlbFZhbHVlOnt0eXBlOltTdHJpbmcsRGF0ZSxBcnJheSxPYmplY3QsTnVtYmVyXSxkZWZhdWx0Om51bGx9LG1vZGVsVHlwZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpudWxsfSxwb3NpdGlvbjp7dHlwZTpTdHJpbmcsZGVmYXVsdDpcImNlbnRlclwifSxkYXJrOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sZm9ybWF0Ont0eXBlOltTdHJpbmcsRnVuY3Rpb25dLGRlZmF1bHQ6KCk9Pm51bGx9LGNsb3NlT25TY3JvbGw6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxhdXRvUG9zaXRpb246e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSxjbG9zZU9uQXV0b0FwcGx5Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sYWx0UG9zaXRpb246e3R5cGU6RnVuY3Rpb24sZGVmYXVsdDpudWxsfSx0cmFuc2l0aW9uczp7dHlwZTpbQm9vbGVhbixPYmplY3RdLGRlZmF1bHQ6ITB9LGZvcm1hdExvY2FsZTp7dHlwZTpPYmplY3QsZGVmYXVsdDpudWxsfSx1dGM6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiExfSxhcmlhTGFiZWxzOnt0eXBlOk9iamVjdCxkZWZhdWx0OigpPT4oe30pfSxvZmZzZXQ6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6MTB9LGhpZGVOYXZpZ2F0aW9uOnt0eXBlOkFycmF5LGRlZmF1bHQ6KCk9PltdfSx0aW1lem9uZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpudWxsfSx2ZXJ0aWNhbDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGRpc2FibGVNb250aFllYXJTZWxlY3Q6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxkaXNhYmxlWWVhclNlbGVjdDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG1lbnVDbGFzc05hbWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6bnVsbH0sZGF5Q2xhc3M6e3R5cGU6RnVuY3Rpb24sZGVmYXVsdDpudWxsfSx5ZWFyUmFuZ2U6e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+WzE5MDAsMjEwMF19LG11bHRpQ2FsZW5kYXJzU29sbzp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGNhbGVuZGFyQ2VsbENsYXNzTmFtZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpudWxsfSxlbmFibGVUaW1lUGlja2VyOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sYXV0b0FwcGx5Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sZGlzYWJsZWREYXRlczp7dHlwZTpbQXJyYXksRnVuY3Rpb25dLGRlZmF1bHQ6KCk9PltdfSxtb250aE5hbWVGb3JtYXQ6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJzaG9ydFwifSxzdGFydERhdGU6e3R5cGU6W0RhdGUsU3RyaW5nXSxkZWZhdWx0Om51bGx9LHN0YXJ0VGltZTp7dHlwZTpbT2JqZWN0LEFycmF5XSxkZWZhdWx0Om51bGx9LGhpZGVPZmZzZXREYXRlczp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGF1dG9SYW5nZTp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDpudWxsfSxub1RvZGF5Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sZGlzYWJsZWRXZWVrRGF5czp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bXX0sYWxsb3dlZERhdGVzOnt0eXBlOkFycmF5LGRlZmF1bHQ6KCk9PltdfSxzaG93Tm93QnV0dG9uOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sbm93QnV0dG9uTGFiZWw6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJOb3dcIn0sbWFya2Vyczp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bXX0sbW9kZUhlaWdodDp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDoyNTV9LGVzY0Nsb3NlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sc3BhY2VDb25maXJtOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sbW9udGhDaGFuZ2VPbkFycm93czp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LHByZXNldFJhbmdlczp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bXX0sZmxvdzp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bXX0scGFydGlhbEZsb3c6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxwcmV2ZW50TWluTWF4TmF2aWdhdGlvbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG1pblJhbmdlOnt0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0Om51bGx9LG1heFJhbmdlOnt0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0Om51bGx9LG11bHRpRGF0ZXNMaW1pdDp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDpudWxsfSxyZXZlcnNlWWVhcnM6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxrZWVwQWN0aW9uUm93Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sd2Vla1BpY2tlcjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGZpbHRlcnM6e3R5cGU6T2JqZWN0LGRlZmF1bHQ6KCk9Pih7fSl9LGFycm93TmF2aWdhdGlvbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG11bHRpU3RhdGljOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sZGlzYWJsZVRpbWVSYW5nZVZhbGlkYXRpb246e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxoaWdobGlnaHQ6e3R5cGU6W0FycmF5LEZ1bmN0aW9uXSxkZWZhdWx0Om51bGx9LGhpZ2hsaWdodFdlZWtEYXlzOnt0eXBlOkFycmF5LGRlZmF1bHQ6bnVsbH0saGlnaGxpZ2h0RGlzYWJsZWREYXlzOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sdGVsZXBvcnQ6e3R5cGU6W1N0cmluZyxCb29sZWFuXSxkZWZhdWx0Om51bGx9LHRlbGVwb3J0Q2VudGVyOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sbG9jYWxlOnt0eXBlOlN0cmluZyxkZWZhdWx0OlwiZW4tVXNcIn0sd2Vla051bU5hbWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJXXCJ9LHdlZWtTdGFydDp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDoxfSx3ZWVrTnVtYmVyczp7dHlwZTpbU3RyaW5nLEZ1bmN0aW9uXSxkZWZhdWx0Om51bGx9LGNhbGVuZGFyQ2xhc3NOYW1lOnt0eXBlOlN0cmluZyxkZWZhdWx0Om51bGx9LG5vU3dpcGU6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxtb250aENoYW5nZU9uU2Nyb2xsOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMH0sZGF5TmFtZXM6e3R5cGU6W0Z1bmN0aW9uLEFycmF5XSxkZWZhdWx0Om51bGx9LG1vbnRoUGlja2VyOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sY3VzdG9tUHJvcHM6e3R5cGU6T2JqZWN0LGRlZmF1bHQ6bnVsbH0seWVhclBpY2tlcjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG1vZGVsQXV0bzp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHNlbGVjdFRleHQ6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJTZWxlY3RcIn0sY2FuY2VsVGV4dDp7dHlwZTpTdHJpbmcsZGVmYXVsdDpcIkNhbmNlbFwifSxwcmV2aWV3Rm9ybWF0Ont0eXBlOltTdHJpbmcsRnVuY3Rpb25dLGRlZmF1bHQ6KCk9PlwiXCJ9LG11bHRpRGF0ZXM6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxwYXJ0aWFsUmFuZ2U6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSxpZ25vcmVUaW1lVmFsaWRhdGlvbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG1pbkRhdGU6e3R5cGU6W0RhdGUsU3RyaW5nXSxkZWZhdWx0Om51bGx9LG1heERhdGU6e3R5cGU6W0RhdGUsU3RyaW5nXSxkZWZhdWx0Om51bGx9LG1pblRpbWU6e3R5cGU6T2JqZWN0LGRlZmF1bHQ6bnVsbH0sbWF4VGltZTp7dHlwZTpPYmplY3QsZGVmYXVsdDpudWxsfSxuYW1lOnt0eXBlOlN0cmluZyxkZWZhdWx0Om51bGx9LHBsYWNlaG9sZGVyOnt0eXBlOlN0cmluZyxkZWZhdWx0OlwiXCJ9LGhpZGVJbnB1dEljb246e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxjbGVhcmFibGU6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSxzdGF0ZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6bnVsbH0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxhdXRvY29tcGxldGU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6XCJvZmZcIn0saW5wdXRDbGFzc05hbWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6bnVsbH0saW5saW5lV2l0aElucHV0Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sdGV4dElucHV0T3B0aW9uczp7dHlwZTpPYmplY3QsZGVmYXVsdDooKT0+bnVsbH0sZml4ZWRTdGFydDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGZpeGVkRW5kOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sdGltZVBpY2tlcjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGVuYWJsZVNlY29uZHM6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxpczI0Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sbm9Ib3Vyc092ZXJsYXk6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxub01pbnV0ZXNPdmVybGF5Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sbm9TZWNvbmRzT3ZlcmxheTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGhvdXJzR3JpZEluY3JlbWVudDp7dHlwZTpbU3RyaW5nLE51bWJlcl0sZGVmYXVsdDoxfSxtaW51dGVzR3JpZEluY3JlbWVudDp7dHlwZTpbU3RyaW5nLE51bWJlcl0sZGVmYXVsdDo1fSxzZWNvbmRzR3JpZEluY3JlbWVudDp7dHlwZTpbU3RyaW5nLE51bWJlcl0sZGVmYXVsdDo1fSxob3Vyc0luY3JlbWVudDp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDoxfSxtaW51dGVzSW5jcmVtZW50Ont0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OjF9LHNlY29uZHNJbmNyZW1lbnQ6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6MX0scmFuZ2U6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSx1aWQ6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6bnVsbH0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxyZWFkb25seTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGlubGluZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHRleHRJbnB1dDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG9uQ2xpY2tPdXRzaWRlOnt0eXBlOkZ1bmN0aW9uLGRlZmF1bHQ6bnVsbH0sbm9EaXNhYmxlZFJhbmdlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sc2l4V2Vla3M6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiExfSxhY3Rpb25Sb3c6e3R5cGU6T2JqZWN0LGRlZmF1bHQ6KCk9Pih7fSl9LGFsbG93UHJldmVudERlZmF1bHQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxjbG9zZU9uQ2xlYXJWYWx1ZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LGZvY3VzU3RhcnREYXRlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sZGlzYWJsZWRUaW1lczp7dHlwZTpGdW5jdGlvbixkZWZhdWx0OnZvaWQgMH0sc2hvd0xhc3RJblJhbmdlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH19LFhuPXtrZXk6MSxjbGFzczpcImRwX19pbnB1dF93cmFwXCJ9LEpuPVtcImlkXCIsXCJuYW1lXCIsXCJpbnB1dG1vZGVcIixcInBsYWNlaG9sZGVyXCIsXCJkaXNhYmxlZFwiLFwicmVhZG9ubHlcIixcInJlcXVpcmVkXCIsXCJ2YWx1ZVwiLFwiYXV0b2NvbXBsZXRlXCIsXCJhcmlhLWxhYmVsXCIsXCJvbktleWRvd25cIl0sUW49e2tleTowLGNsYXNzOlwiZHBfX2lucHV0X2ljb25cIn0sRm49e2tleToyLGNsYXNzOlwiZHBfX2NsZWFyX2ljb25cIn0sZWE9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZTpcIkRhdGVwaWNrZXJJbnB1dFwiLHByb3BzOntpc01lbnVPcGVuOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0saW5wdXRWYWx1ZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpcIlwifSwuLi5WZX0sZW1pdHM6W1wiY2xlYXJcIixcIm9wZW5cIixcInVwZGF0ZTppbnB1dC12YWx1ZVwiLFwic2V0LWlucHV0LWRhdGVcIixcImNsb3NlXCIsXCJzZWxlY3QtZGF0ZVwiLFwic2V0LWVtcHR5LWRhdGVcIixcInRvZ2dsZVwiLFwiZm9jdXMtcHJldlwiLFwiZm9jdXNcIixcImJsdXJcIixcInJlYWwtYmx1clwiXSxzZXR1cCh0LHtleHBvc2U6YSxlbWl0OnJ9KXtjb25zdCBuPXQse2dldERlZmF1bHRQYXR0ZXJuOnUsaXNWYWxpZERhdGU6bSxkZWZhdWx0czpoLGdldERlZmF1bHRTdGFydFRpbWU6VCxhc3NpZ25EZWZhdWx0VGltZTpffT1EZShuKSxOPWUucmVmKCksWT1lLnJlZihudWxsKSx2PWUucmVmKCExKSxmPWUucmVmKCExKSxiPWUuY29tcHV0ZWQoKCk9Pih7ZHBfX3BvaW50ZXI6IW4uZGlzYWJsZWQmJiFuLnJlYWRvbmx5JiYhbi50ZXh0SW5wdXQsZHBfX2Rpc2FibGVkOm4uZGlzYWJsZWQsZHBfX2lucHV0X3JlYWRvbmx5OiFuLnRleHRJbnB1dCxkcF9faW5wdXQ6ITAsZHBfX2lucHV0X2ljb25fcGFkOiFuLmhpZGVJbnB1dEljb24sZHBfX2lucHV0X3ZhbGlkOm4uc3RhdGUsZHBfX2lucHV0X2ludmFsaWQ6bi5zdGF0ZT09PSExLGRwX19pbnB1dF9mb2N1czp2LnZhbHVlfHxuLmlzTWVudU9wZW4sZHBfX2lucHV0X3JlZzohbi50ZXh0SW5wdXQsW24uaW5wdXRDbGFzc05hbWVdOiEhbi5pbnB1dENsYXNzTmFtZX0pKSxHPSgpPT57cihcInNldC1pbnB1dC1kYXRlXCIsbnVsbCksbi5hdXRvQXBwbHkmJihyKFwic2V0LWVtcHR5LWRhdGVcIiksTi52YWx1ZT1udWxsKX0sTD15PT57dmFyIEU7Y29uc3QgQT1UKCk7cmV0dXJuIHRuKHksKChFPWgudmFsdWUudGV4dElucHV0T3B0aW9ucyk9PW51bGw/dm9pZCAwOkUuZm9ybWF0KXx8dSgpLEF8fF8oe30pLG4uaW5wdXRWYWx1ZSxmLnZhbHVlKX0sej15PT57Y29uc3R7cmFuZ2VTZXBhcmF0b3I6QX09aC52YWx1ZS50ZXh0SW5wdXRPcHRpb25zLFtFLCRdPXkuc3BsaXQoYCR7QX1gKTtpZihFKXtjb25zdCBnPUwoRS50cmltKCkpLGQ9JD9MKCQudHJpbSgpKTpudWxsLG89ZyYmZD9bZyxkXTpbZ107Ti52YWx1ZT1nP286bnVsbH19LFI9KCk9PntmLnZhbHVlPSEwfSxJPXk9PntpZihuLnJhbmdlKXooeSk7ZWxzZSBpZihuLm11bHRpRGF0ZXMpe2NvbnN0IEE9eS5zcGxpdChcIjtcIik7Ti52YWx1ZT1BLm1hcChFPT5MKEUudHJpbSgpKSkuZmlsdGVyKEU9PkUpfWVsc2UgTi52YWx1ZT1MKHkpfSxWPXk9Pnt2YXIgRTtjb25zdHt2YWx1ZTpBfT15LnRhcmdldDtBIT09XCJcIj8oKEU9aC52YWx1ZS50ZXh0SW5wdXRPcHRpb25zKSE9bnVsbCYmRS5vcGVuTWVudSYmIW4uaXNNZW51T3BlbiYmcihcIm9wZW5cIiksSShBKSxyKFwic2V0LWlucHV0LWRhdGVcIixOLnZhbHVlKSk6RygpLGYudmFsdWU9ITEscihcInVwZGF0ZTppbnB1dC12YWx1ZVwiLEEpfSxVPXk9Pnt2YXIgQSxFO24udGV4dElucHV0PyhJKHkudGFyZ2V0LnZhbHVlKSwoQT1oLnZhbHVlLnRleHRJbnB1dE9wdGlvbnMpIT1udWxsJiZBLmVudGVyU3VibWl0JiZtKE4udmFsdWUpJiZuLmlucHV0VmFsdWUhPT1cIlwiPyhyKFwic2V0LWlucHV0LWRhdGVcIixOLnZhbHVlLCEwKSxOLnZhbHVlPW51bGwpOihFPWgudmFsdWUudGV4dElucHV0T3B0aW9ucykhPW51bGwmJkUuZW50ZXJTdWJtaXQmJm4uaW5wdXRWYWx1ZT09PVwiXCImJihOLnZhbHVlPW51bGwscihcImNsZWFyXCIpKSk6dGUoeSl9LEs9KCk9Pnt2YXIgeSxBOyh5PWgudmFsdWUudGV4dElucHV0T3B0aW9ucykhPW51bGwmJnkudGFiU3VibWl0JiZtKE4udmFsdWUpJiZuLmlucHV0VmFsdWUhPT1cIlwiPyhyKFwic2V0LWlucHV0LWRhdGVcIixOLnZhbHVlLCEwKSxOLnZhbHVlPW51bGwpOihBPWgudmFsdWUudGV4dElucHV0T3B0aW9ucykhPW51bGwmJkEudGFiU3VibWl0JiZuLmlucHV0VmFsdWU9PT1cIlwiJiYoTi52YWx1ZT1udWxsLHIoXCJjbGVhclwiKSl9LEY9KCk9Pnt2LnZhbHVlPSEwLHIoXCJmb2N1c1wiKX0sdGU9eT0+e3ZhciBBO3kucHJldmVudERlZmF1bHQoKSx5LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHkuc3RvcFByb3BhZ2F0aW9uKCksbi50ZXh0SW5wdXQmJigoQT1oLnZhbHVlLnRleHRJbnB1dE9wdGlvbnMpIT1udWxsJiZBLm9wZW5NZW51KSYmIW4uaW5saW5lV2l0aElucHV0PyhyKFwidG9nZ2xlXCIpLGgudmFsdWUudGV4dElucHV0T3B0aW9ucy5lbnRlclN1Ym1pdCYmcihcInNlbGVjdC1kYXRlXCIpKTpuLnRleHRJbnB1dHx8cihcInRvZ2dsZVwiKX0sbmU9KCk9PntyKFwicmVhbC1ibHVyXCIpLHYudmFsdWU9ITEsbi5pc01lbnVPcGVufHxyKFwiYmx1clwiKSxuLmF1dG9BcHBseSYmbi50ZXh0SW5wdXQmJk4udmFsdWUmJiFuLmlzTWVudU9wZW4mJihyKFwic2V0LWlucHV0LWRhdGVcIixOLnZhbHVlKSxyKFwic2VsZWN0LWRhdGVcIiksTi52YWx1ZT1udWxsKX0sYWU9KCk9PntyKFwiY2xlYXJcIil9LHJlPXk9PntpZighbi50ZXh0SW5wdXQpe2lmKHkuY29kZT09PVwiVGFiXCIpcmV0dXJuO3kucHJldmVudERlZmF1bHQoKX19O3JldHVybiBhKHtmb2N1c0lucHV0OigpPT57dmFyIHk7KHk9WS52YWx1ZSk9PW51bGx8fHkuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KX0sc2V0UGFyc2VkRGF0ZTp5PT57Ti52YWx1ZT15fX0pLCh5LEEpPT57dmFyIEU7cmV0dXJuIGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7b25DbGljazp0ZX0sW3kuJHNsb3RzLnRyaWdnZXImJiF5LiRzbG90c1tcImRwLWlucHV0XCJdJiYheS5pbmxpbmU/ZS5yZW5kZXJTbG90KHkuJHNsb3RzLFwidHJpZ2dlclwiLHtrZXk6MH0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLCF5LiRzbG90cy50cmlnZ2VyJiYoIXkuaW5saW5lfHx5LmlubGluZVdpdGhJbnB1dCk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIixYbixbeS4kc2xvdHNbXCJkcC1pbnB1dFwiXSYmIXkuJHNsb3RzLnRyaWdnZXImJiF5LmlubGluZT9lLnJlbmRlclNsb3QoeS4kc2xvdHMsXCJkcC1pbnB1dFwiLHtrZXk6MCx2YWx1ZTp0LmlucHV0VmFsdWUsaXNNZW51T3Blbjp0LmlzTWVudU9wZW4sb25JbnB1dDpWLG9uRW50ZXI6VSxvblRhYjpLLG9uQ2xlYXI6YWUsb25CbHVyOm5lLG9uS2V5cHJlc3M6cmUsb25QYXN0ZTpSfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCkseS4kc2xvdHNbXCJkcC1pbnB1dFwiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImlucHV0XCIse2tleToxLHJlZl9rZXk6XCJpbnB1dFJlZlwiLHJlZjpZLGlkOnkudWlkP2BkcC1pbnB1dC0ke3kudWlkfWA6dm9pZCAwLG5hbWU6eS5uYW1lLGNsYXNzOmUubm9ybWFsaXplQ2xhc3MoYi52YWx1ZSksaW5wdXRtb2RlOnkudGV4dElucHV0P1widGV4dFwiOlwibm9uZVwiLHBsYWNlaG9sZGVyOnkucGxhY2Vob2xkZXIsZGlzYWJsZWQ6eS5kaXNhYmxlZCxyZWFkb25seTp5LnJlYWRvbmx5LHJlcXVpcmVkOnkucmVxdWlyZWQsdmFsdWU6dC5pbnB1dFZhbHVlLGF1dG9jb21wbGV0ZTp5LmF1dG9jb21wbGV0ZSxcImFyaWEtbGFiZWxcIjooRT1lLnVucmVmKGgpLmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDpFLmlucHV0LG9uSW5wdXQ6VixvbktleWRvd246W2Uud2l0aEtleXMoVSxbXCJlbnRlclwiXSksZS53aXRoS2V5cyhLLFtcInRhYlwiXSkscmVdLG9uQmx1cjpuZSxvbkZvY3VzOkYsb25LZXlwcmVzczpyZSxvblBhc3RlOlJ9LG51bGwsNDIsSm4pKSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtvbkNsaWNrOkFbMF18fChBWzBdPSQ9PnIoXCJ0b2dnbGVcIikpfSxbeS4kc2xvdHNbXCJpbnB1dC1pY29uXCJdJiYheS5oaWRlSW5wdXRJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwic3BhblwiLFFuLFtlLnJlbmRlclNsb3QoeS4kc2xvdHMsXCJpbnB1dC1pY29uXCIpXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLCF5LiRzbG90c1tcImlucHV0LWljb25cIl0mJiF5LmhpZGVJbnB1dEljb24mJiF5LiRzbG90c1tcImRwLWlucHV0XCJdPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihIZSkse2tleToxLGNsYXNzOlwiZHBfX2lucHV0X2ljb24gZHBfX2lucHV0X2ljb25zXCJ9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCldKSx5LiRzbG90c1tcImNsZWFyLWljb25cIl0mJnQuaW5wdXRWYWx1ZSYmeS5jbGVhcmFibGUmJiF5LmRpc2FibGVkJiYheS5yZWFkb25seT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcInNwYW5cIixGbixbZS5yZW5kZXJTbG90KHkuJHNsb3RzLFwiY2xlYXItaWNvblwiLHtjbGVhcjphZX0pXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLHkuY2xlYXJhYmxlJiYheS4kc2xvdHNbXCJjbGVhci1pY29uXCJdJiZ0LmlucHV0VmFsdWUmJiF5LmRpc2FibGVkJiYheS5yZWFkb25seT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZW4pLHtrZXk6MyxjbGFzczpcImRwX19jbGVhcl9pY29uIGRwX19pbnB1dF9pY29uc1wiLG9uQ2xpY2s6ZS53aXRoTW9kaWZpZXJzKGFlLFtcInN0b3BcIixcInByZXZlbnRcIl0pfSxudWxsLDgsW1wib25DbGlja1wiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSl9fX0pLHRhPVtcInRpdGxlXCJdLG5hPXtjbGFzczpcImRwX19hY3Rpb25fYnV0dG9uc1wifSxhYT1bXCJvbktleWRvd25cIixcImRpc2FibGVkXCJdLHJhPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6XCJBY3Rpb25Sb3dcIixwcm9wczp7bWVudU1vdW50Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0saW50ZXJuYWxNb2RlbFZhbHVlOnt0eXBlOltEYXRlLEFycmF5XSxkZWZhdWx0Om51bGx9LGNhbGVuZGFyV2lkdGg6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MH0sLi4uVmV9LGVtaXRzOltcImNsb3NlLXBpY2tlclwiLFwic2VsZWN0LWRhdGVcIixcInNlbGVjdC1ub3dcIixcImludmFsaWQtc2VsZWN0XCJdLHNldHVwKHQse2VtaXQ6YX0pe2NvbnN0IHI9dCx7Zm9ybWF0RGF0ZTpuLGlzVmFsaWRUaW1lOnUsZGVmYXVsdHM6bX09RGUocikse2J1aWxkTWF0cml4Omh9PUFlKCksVD1lLnJlZihudWxsKSxfPWUucmVmKG51bGwpO2Uub25Nb3VudGVkKCgpPT57ci5hcnJvd05hdmlnYXRpb24mJmgoW2NlKFQpLGNlKF8pXSxcImFjdGlvblJvd1wiKX0pO2NvbnN0IE49ZS5jb21wdXRlZCgoKT0+ci5yYW5nZSYmIXIucGFydGlhbFJhbmdlJiZyLmludGVybmFsTW9kZWxWYWx1ZT9yLmludGVybmFsTW9kZWxWYWx1ZS5sZW5ndGg9PT0yOiEwKSxZPWUuY29tcHV0ZWQoKCk9PiF2LnZhbHVlfHwhZi52YWx1ZXx8IU4udmFsdWUpLHY9ZS5jb21wdXRlZCgoKT0+IXIuZW5hYmxlVGltZVBpY2tlcnx8ci5pZ25vcmVUaW1lVmFsaWRhdGlvbj8hMDp1KHIuaW50ZXJuYWxNb2RlbFZhbHVlKSksZj1lLmNvbXB1dGVkKCgpPT5yLm1vbnRoUGlja2VyP3IucmFuZ2UmJkFycmF5LmlzQXJyYXkoci5pbnRlcm5hbE1vZGVsVmFsdWUpPyFyLmludGVybmFsTW9kZWxWYWx1ZS5maWx0ZXIoVT0+IVIoVSkpLmxlbmd0aDpSKHIuaW50ZXJuYWxNb2RlbFZhbHVlKTohMCksYj0oKT0+e2NvbnN0IFY9bS52YWx1ZS5wcmV2aWV3Rm9ybWF0O3JldHVybiByLnRpbWVQaWNrZXJ8fHIubW9udGhQaWNrZXIsVih5ZShyLmludGVybmFsTW9kZWxWYWx1ZSkpfSxHPSgpPT57Y29uc3QgVj1yLmludGVybmFsTW9kZWxWYWx1ZTtyZXR1cm4gbS52YWx1ZS5tdWx0aUNhbGVuZGFycz4wP2Ake24oVlswXSl9IC0gJHtuKFZbMV0pfWA6W24oVlswXSksbihWWzFdKV19LEw9ZS5jb21wdXRlZCgoKT0+IXIuaW50ZXJuYWxNb2RlbFZhbHVlfHwhci5tZW51TW91bnQ/XCJcIjp0eXBlb2YgbS52YWx1ZS5wcmV2aWV3Rm9ybWF0PT1cInN0cmluZ1wiP0FycmF5LmlzQXJyYXkoci5pbnRlcm5hbE1vZGVsVmFsdWUpP3IuaW50ZXJuYWxNb2RlbFZhbHVlLmxlbmd0aD09PTImJnIuaW50ZXJuYWxNb2RlbFZhbHVlWzFdP0coKTpyLm11bHRpRGF0ZXM/ci5pbnRlcm5hbE1vZGVsVmFsdWUubWFwKFY9PmAke24oVil9YCk6ci5tb2RlbEF1dG8/YCR7bihyLmludGVybmFsTW9kZWxWYWx1ZVswXSl9YDpgJHtuKHIuaW50ZXJuYWxNb2RlbFZhbHVlWzBdKX0gLWA6bihyLmludGVybmFsTW9kZWxWYWx1ZSk6YigpKSx6PWUuY29tcHV0ZWQoKCk9PkFycmF5LmlzQXJyYXkoTC52YWx1ZSk/TC52YWx1ZS5qb2luKHIubXVsdGlEYXRlcz9cIjsgXCI6XCIgLSBcIik6TC52YWx1ZSksUj1WPT57aWYoIXIubW9udGhQaWNrZXIpcmV0dXJuITA7bGV0IFU9ITA7Y29uc3QgSz1TKHhlKFYpKTtpZihyLm1pbkRhdGUmJnIubWF4RGF0ZSl7Y29uc3QgRj1TKHhlKHIubWluRGF0ZSkpLHRlPVMoeGUoci5tYXhEYXRlKSk7cmV0dXJuIGhlKEssRikmJmdlKEssdGUpfHxvZShLLEYpfHxvZShLLHRlKX1pZihyLm1pbkRhdGUpe2NvbnN0IEY9Uyh4ZShyLm1pbkRhdGUpKTtVPWhlKEssRil8fG9lKEssRil9aWYoci5tYXhEYXRlKXtjb25zdCBGPVMoeGUoci5tYXhEYXRlKSk7VT1nZShLLEYpfHxvZShLLEYpfXJldHVybiBVfSxJPSgpPT57di52YWx1ZSYmZi52YWx1ZSYmTi52YWx1ZT9hKFwic2VsZWN0LWRhdGVcIik6YShcImludmFsaWQtc2VsZWN0XCIpfTtyZXR1cm4oVixVKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7Y2xhc3M6XCJkcF9fYWN0aW9uX3Jvd1wiLHN0eWxlOmUubm9ybWFsaXplU3R5bGUodC5jYWxlbmRhcldpZHRoP3t3aWR0aDpgJHt0LmNhbGVuZGFyV2lkdGh9cHhgfTp7fSl9LFtWLiRzbG90c1tcImFjdGlvbi1yb3dcIl0/ZS5yZW5kZXJTbG90KFYuJHNsb3RzLFwiYWN0aW9uLXJvd1wiLGUubm9ybWFsaXplUHJvcHMoZS5tZXJnZVByb3BzKHtrZXk6MH0se2ludGVybmFsTW9kZWxWYWx1ZTp0LmludGVybmFsTW9kZWxWYWx1ZSxkaXNhYmxlZDpZLnZhbHVlLHNlbGVjdERhdGU6KCk9PlYuJGVtaXQoXCJzZWxlY3QtZGF0ZVwiKSxjbG9zZVBpY2tlcjooKT0+Vi4kZW1pdChcImNsb3NlLXBpY2tlclwiKX0pKSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFtlLnVucmVmKG0pLmFjdGlvblJvdy5zaG93UHJldmlldz8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtrZXk6MCxjbGFzczpcImRwX19zZWxlY3Rpb25fcHJldmlld1wiLHRpdGxlOnoudmFsdWV9LFtWLiRzbG90c1tcImFjdGlvbi1wcmV2aWV3XCJdP2UucmVuZGVyU2xvdChWLiRzbG90cyxcImFjdGlvbi1wcmV2aWV3XCIse2tleTowLHZhbHVlOnQuaW50ZXJuYWxNb2RlbFZhbHVlfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksVi4kc2xvdHNbXCJhY3Rpb24tcHJldmlld1wiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHoudmFsdWUpLDEpXSw2NCkpXSw4LHRhKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIixuYSxbVi4kc2xvdHNbXCJhY3Rpb24tYnV0dG9uc1wiXT9lLnJlbmRlclNsb3QoVi4kc2xvdHMsXCJhY3Rpb24tYnV0dG9uc1wiLHtrZXk6MCx2YWx1ZTp0LmludGVybmFsTW9kZWxWYWx1ZX0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLFYuJHNsb3RzW1wiYWN0aW9uLWJ1dHRvbnNcIl0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFshVi5pbmxpbmUmJmUudW5yZWYobSkuYWN0aW9uUm93LnNob3dDYW5jZWw/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJidXR0b25cIix7a2V5OjAsdHlwZTpcImJ1dHRvblwiLHJlZl9rZXk6XCJjYW5jZWxCdXR0b25SZWZcIixyZWY6VCxjbGFzczpcImRwX19hY3Rpb25fYnV0dG9uIGRwX19hY3Rpb25fY2FuY2VsXCIsb25DbGljazpVWzBdfHwoVVswXT1LPT5WLiRlbWl0KFwiY2xvc2UtcGlja2VyXCIpKSxvbktleWRvd246W1VbMV18fChVWzFdPWUud2l0aEtleXMoSz0+Vi4kZW1pdChcImNsb3NlLXBpY2tlclwiKSxbXCJlbnRlclwiXSkpLFVbMl18fChVWzJdPWUud2l0aEtleXMoSz0+Vi4kZW1pdChcImNsb3NlLXBpY2tlclwiKSxbXCJzcGFjZVwiXSkpXX0sZS50b0Rpc3BsYXlTdHJpbmcoVi5jYW5jZWxUZXh0KSw1NDUpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxWLnNob3dOb3dCdXR0b258fGUudW5yZWYobSkuYWN0aW9uUm93LnNob3dOb3c/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJidXR0b25cIix7a2V5OjEsdHlwZTpcImJ1dHRvblwiLHJlZl9rZXk6XCJjYW5jZWxCdXR0b25SZWZcIixyZWY6VCxjbGFzczpcImRwX19hY3Rpb25fYnV0dG9uIGRwX19hY3Rpb25fY2FuY2VsXCIsb25DbGljazpVWzNdfHwoVVszXT1LPT5WLiRlbWl0KFwic2VsZWN0LW5vd1wiKSksb25LZXlkb3duOltVWzRdfHwoVVs0XT1lLndpdGhLZXlzKEs9PlYuJGVtaXQoXCJzZWxlY3Qtbm93XCIpLFtcImVudGVyXCJdKSksVVs1XXx8KFVbNV09ZS53aXRoS2V5cyhLPT5WLiRlbWl0KFwic2VsZWN0LW5vd1wiKSxbXCJzcGFjZVwiXSkpXX0sZS50b0Rpc3BsYXlTdHJpbmcoVi5ub3dCdXR0b25MYWJlbCksNTQ1KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksZS51bnJlZihtKS5hY3Rpb25Sb3cuc2hvd1NlbGVjdD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImJ1dHRvblwiLHtrZXk6Mix0eXBlOlwiYnV0dG9uXCIsY2xhc3M6XCJkcF9fYWN0aW9uX2J1dHRvbiBkcF9fYWN0aW9uX3NlbGVjdFwiLG9uS2V5ZG93bjpbZS53aXRoS2V5cyhJLFtcImVudGVyXCJdKSxlLndpdGhLZXlzKEksW1wic3BhY2VcIl0pXSxvbkNsaWNrOkksZGlzYWJsZWQ6WS52YWx1ZSxyZWZfa2V5Olwic2VsZWN0QnV0dG9uUmVmXCIscmVmOl99LGUudG9EaXNwbGF5U3RyaW5nKFYuc2VsZWN0VGV4dCksNDEsYWEpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV0sNjQpKV0pXSw2NCkpXSw0KSl9fSksbGE9W1wiYXJpYS1sYWJlbFwiXSxvYT17Y2xhc3M6XCJkcF9fY2FsZW5kYXJfaGVhZGVyXCIscm9sZTpcInJvd1wifSxzYT17a2V5OjAsY2xhc3M6XCJkcF9fY2FsZW5kYXJfaGVhZGVyX2l0ZW1cIixyb2xlOlwiZ3JpZGNlbGxcIn0saWE9ZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIix7Y2xhc3M6XCJkcF9fY2FsZW5kYXJfaGVhZGVyX3NlcGFyYXRvclwifSxudWxsLC0xKSx1YT1bXCJhcmlhLWxhYmVsXCJdLGNhPXtrZXk6MCxyb2xlOlwiZ3JpZGNlbGxcIixjbGFzczpcImRwX19jYWxlbmRhcl9pdGVtIGRwX193ZWVrX251bVwifSxkYT17Y2xhc3M6XCJkcF9fY2VsbF9pbm5lclwifSxmYT1bXCJhcmlhLXNlbGVjdGVkXCIsXCJhcmlhLWRpc2FibGVkXCIsXCJhcmlhLWxhYmVsXCIsXCJvbkNsaWNrXCIsXCJvbktleWRvd25cIixcIm9uTW91c2VlbnRlclwiLFwib25Nb3VzZWxlYXZlXCJdLG1hPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6XCJDYWxlbmRhclwiLHByb3BzOnttYXBwZWREYXRlczp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bXX0sZ2V0V2Vla051bTp7dHlwZTpGdW5jdGlvbixkZWZhdWx0OigpPT5cIlwifSxzcGVjaWZpY01vZGU6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxpbnN0YW5jZTp7dHlwZTpOdW1iZXIsZGVmYXVsdDowfSxtb250aDp7dHlwZTpOdW1iZXIsZGVmYXVsdDowfSx5ZWFyOnt0eXBlOk51bWJlcixkZWZhdWx0OjB9LC4uLlZlfSxlbWl0czpbXCJzZWxlY3QtZGF0ZVwiLFwic2V0LWhvdmVyLWRhdGVcIixcImhhbmRsZS1zY3JvbGxcIixcIm1vdW50XCIsXCJoYW5kbGUtc3dpcGVcIixcImhhbmRsZS1zcGFjZVwiLFwidG9vbHRpcC1vcGVuXCIsXCJ0b29sdGlwLWNsb3NlXCJdLHNldHVwKHQse2V4cG9zZTphLGVtaXQ6cn0pe2NvbnN0IG49dCx7YnVpbGRNdWx0aUxldmVsTWF0cml4OnV9PUFlKCkse3NldERhdGVNb250aE9yWWVhcjptLGRlZmF1bHRzOmh9PURlKG4pLFQ9ZS5yZWYobnVsbCksXz1lLnJlZih7Ym90dG9tOlwiXCIsbGVmdDpcIlwiLHRyYW5zZm9ybTpcIlwifSksTj1lLnJlZihbXSksWT1lLnJlZihudWxsKSx2PWUucmVmKCEwKSxmPWUucmVmKFwiXCIpLGI9ZS5yZWYoe3N0YXJ0WDowLGVuZFg6MCxzdGFydFk6MCxlbmRZOjB9KSxHPWUucmVmKFtdKSxMPWUucmVmKHtsZWZ0OlwiNTAlXCJ9KSx6PWUuY29tcHV0ZWQoKCk9Pm4uZGF5TmFtZXM/QXJyYXkuaXNBcnJheShuLmRheU5hbWVzKT9uLmRheU5hbWVzOm4uZGF5TmFtZXMobi5sb2NhbGUsK24ud2Vla1N0YXJ0KTpWbihuLmxvY2FsZSwrbi53ZWVrU3RhcnQpKTtlLm9uTW91bnRlZCgoKT0+e3IoXCJtb3VudFwiLHtjbXA6XCJjYWxlbmRhclwiLHJlZnM6Tn0pLG4ubm9Td2lwZXx8WS52YWx1ZSYmKFkudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoc3RhcnRcIixQLHtwYXNzaXZlOiExfSksWS52YWx1ZS5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hlbmRcIixDLHtwYXNzaXZlOiExfSksWS52YWx1ZS5hZGRFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIseSx7cGFzc2l2ZTohMX0pKSxuLm1vbnRoQ2hhbmdlT25TY3JvbGwmJlkudmFsdWUmJlkudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcihcIndoZWVsXCIsJCx7cGFzc2l2ZTohMX0pfSk7Y29uc3QgUj1nPT5nP24udmVydGljYWw/XCJ2TmV4dFwiOlwibmV4dFwiOm4udmVydGljYWw/XCJ2UHJldmlvdXNcIjpcInByZXZpb3VzXCIsST0oZyxkKT0+e2lmKG4udHJhbnNpdGlvbnMpe2NvbnN0IG89TWUobShTKCksbi5tb250aCxuLnllYXIpKTtmLnZhbHVlPWhlKE1lKG0oUygpLGcsZCkpLG8pP2gudmFsdWUudHJhbnNpdGlvbnNbUighMCldOmgudmFsdWUudHJhbnNpdGlvbnNbUighMSldLHYudmFsdWU9ITEsZS5uZXh0VGljaygoKT0+e3YudmFsdWU9ITB9KX19LFY9ZS5jb21wdXRlZCgoKT0+KHtbbi5jYWxlbmRhckNsYXNzTmFtZV06ISFuLmNhbGVuZGFyQ2xhc3NOYW1lfSkpLFU9ZS5jb21wdXRlZCgoKT0+Zz0+e2NvbnN0IGQ9T24oZyk7cmV0dXJue2RwX19tYXJrZXJfZG90OmQudHlwZT09PVwiZG90XCIsZHBfX21hcmtlcl9saW5lOmQudHlwZT09PVwibGluZVwifX0pLEs9ZS5jb21wdXRlZCgoKT0+Zz0+b2UoZyxULnZhbHVlKSksRj1lLmNvbXB1dGVkKCgpPT4oe2RwX19jYWxlbmRhcjohMCxkcF9fY2FsZW5kYXJfbmV4dDpoLnZhbHVlLm11bHRpQ2FsZW5kYXJzPjAmJm4uaW5zdGFuY2UhPT0wfSkpLHRlPWUuY29tcHV0ZWQoKCk9Pmc9Pm4uaGlkZU9mZnNldERhdGVzP2cuY3VycmVudDohMCksbmU9ZS5jb21wdXRlZCgoKT0+bi5zcGVjaWZpY01vZGU/e2hlaWdodDpgJHtuLm1vZGVIZWlnaHR9cHhgfTp2b2lkIDApLGFlPWFzeW5jKGcsZCxvKT0+e3ZhciBsLGs7aWYocihcInNldC1ob3Zlci1kYXRlXCIsZyksKGs9KGw9Zy5tYXJrZXIpPT1udWxsP3ZvaWQgMDpsLnRvb2x0aXApIT1udWxsJiZrLmxlbmd0aCl7Y29uc3QgTT1jZShOLnZhbHVlW2RdW29dKTtpZihNKXtjb25zdHt3aWR0aDpCLGhlaWdodDpxfT1NLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1QudmFsdWU9Zy52YWx1ZTtsZXQgcD17bGVmdDpgJHtCLzJ9cHhgfSxzPS01MDtpZihhd2FpdCBlLm5leHRUaWNrKCksRy52YWx1ZVswXSl7Y29uc3R7bGVmdDpPLHdpZHRoOlp9PUcudmFsdWVbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7TzwwJiYocD17bGVmdDpcIjBcIn0scz0wLEwudmFsdWUubGVmdD1gJHtCLzJ9cHhgKSx3aW5kb3cuaW5uZXJXaWR0aDxPK1omJihwPXtyaWdodDpcIjBcIn0scz0wLEwudmFsdWUubGVmdD1gJHtaLUIvMn1weGApfV8udmFsdWU9e2JvdHRvbTpgJHtxfXB4YCwuLi5wLHRyYW5zZm9ybTpgdHJhbnNsYXRlWCgke3N9JSlgfSxyKFwidG9vbHRpcC1vcGVuXCIsZy5tYXJrZXIpfX19LHJlPWc9PntULnZhbHVlJiYoVC52YWx1ZT1udWxsLF8udmFsdWU9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh7Ym90dG9tOlwiXCIsbGVmdDpcIlwiLHRyYW5zZm9ybTpcIlwifSkpLHIoXCJ0b29sdGlwLWNsb3NlXCIsZy5tYXJrZXIpKX0sUD1nPT57Yi52YWx1ZS5zdGFydFg9Zy5jaGFuZ2VkVG91Y2hlc1swXS5zY3JlZW5YLGIudmFsdWUuc3RhcnRZPWcuY2hhbmdlZFRvdWNoZXNbMF0uc2NyZWVuWX0sQz1nPT57Yi52YWx1ZS5lbmRYPWcuY2hhbmdlZFRvdWNoZXNbMF0uc2NyZWVuWCxiLnZhbHVlLmVuZFk9Zy5jaGFuZ2VkVG91Y2hlc1swXS5zY3JlZW5ZLEEoKX0seT1nPT57bi52ZXJ0aWNhbCYmIW4uaW5saW5lJiZnLnByZXZlbnREZWZhdWx0KCl9LEE9KCk9Pntjb25zdCBnPW4udmVydGljYWw/XCJZXCI6XCJYXCI7TWF0aC5hYnMoYi52YWx1ZVtgc3RhcnQke2d9YF0tYi52YWx1ZVtgZW5kJHtnfWBdKT4xMCYmcihcImhhbmRsZS1zd2lwZVwiLGIudmFsdWVbYHN0YXJ0JHtnfWBdPmIudmFsdWVbYGVuZCR7Z31gXT9cInJpZ2h0XCI6XCJsZWZ0XCIpfSxFPShnLGQsbyk9PntnJiYoQXJyYXkuaXNBcnJheShOLnZhbHVlW2RdKT9OLnZhbHVlW2RdW29dPWc6Ti52YWx1ZVtkXT1bZ10pLG4uYXJyb3dOYXZpZ2F0aW9uJiZ1KE4udmFsdWUsXCJjYWxlbmRhclwiKX0sJD1nPT57bi5tb250aENoYW5nZU9uU2Nyb2xsJiYoZy5wcmV2ZW50RGVmYXVsdCgpLHIoXCJoYW5kbGUtc2Nyb2xsXCIsZykpfTtyZXR1cm4gYSh7dHJpZ2dlclRyYW5zaXRpb246SX0pLChnLGQpPT57dmFyIG87cmV0dXJuIGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7Y2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhGLnZhbHVlKX0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse3N0eWxlOmUubm9ybWFsaXplU3R5bGUobmUudmFsdWUpLHJlZl9rZXk6XCJjYWxlbmRhcldyYXBSZWZcIixyZWY6WSxyb2xlOlwiZ3JpZFwiLGNsYXNzOmUubm9ybWFsaXplQ2xhc3MoVi52YWx1ZSksXCJhcmlhLWxhYmVsXCI6KG89ZS51bnJlZihoKS5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6by5jYWxlbmRhcldyYXB9LFt0LnNwZWNpZmljTW9kZT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MH0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsb2EsW2cud2Vla051bWJlcnM/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIixzYSxlLnRvRGlzcGxheVN0cmluZyhnLndlZWtOdW1OYW1lKSwxKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KHoudmFsdWUsKGwsayk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2NsYXNzOlwiZHBfX2NhbGVuZGFyX2hlYWRlcl9pdGVtXCIscm9sZTpcImdyaWRjZWxsXCIsa2V5Omt9LFtnLiRzbG90c1tcImNhbGVuZGFyLWhlYWRlclwiXT9lLnJlbmRlclNsb3QoZy4kc2xvdHMsXCJjYWxlbmRhci1oZWFkZXJcIix7a2V5OjAsZGF5OmwsaW5kZXg6a30pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLGcuJHNsb3RzW1wiY2FsZW5kYXItaGVhZGVyXCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxbZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcobCksMSldLDY0KSldKSkpLDEyOCkpXSksaWEsZS5jcmVhdGVWTm9kZShlLlRyYW5zaXRpb24se25hbWU6Zi52YWx1ZSxjc3M6ISFnLnRyYW5zaXRpb25zfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Pnt2YXIgbDtyZXR1cm5bdi52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtrZXk6MCxjbGFzczpcImRwX19jYWxlbmRhclwiLHJvbGU6XCJncmlkXCIsXCJhcmlhLWxhYmVsXCI6KGw9ZS51bnJlZihoKS5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6bC5jYWxlbmRhckRheXN9LFsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QodC5tYXBwZWREYXRlcywoayxNKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7Y2xhc3M6XCJkcF9fY2FsZW5kYXJfcm93XCIscm9sZTpcInJvd1wiLGtleTpNfSxbZy53ZWVrTnVtYmVycz8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLGNhLFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLGRhLGUudG9EaXNwbGF5U3RyaW5nKHQuZ2V0V2Vla051bShrLmRheXMpKSwxKV0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSwoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3Qoay5kYXlzLChCLHEpPT57dmFyIHAscyxPO3JldHVybiBlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse3JvbGU6XCJncmlkY2VsbFwiLGNsYXNzOlwiZHBfX2NhbGVuZGFyX2l0ZW1cIixyZWZfZm9yOiEwLHJlZjpaPT5FKFosTSxxKSxrZXk6cStNLFwiYXJpYS1zZWxlY3RlZFwiOkIuY2xhc3NEYXRhLmRwX19hY3RpdmVfZGF0ZXx8Qi5jbGFzc0RhdGEuZHBfX3JhbmdlX3N0YXJ0fHxCLmNsYXNzRGF0YS5kcF9fcmFuZ2Vfc3RhcnQsXCJhcmlhLWRpc2FibGVkXCI6Qi5jbGFzc0RhdGEuZHBfX2NlbGxfZGlzYWJsZWQsXCJhcmlhLWxhYmVsXCI6KHM9KHA9ZS51bnJlZihoKS5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6cC5kYXkpPT1udWxsP3ZvaWQgMDpzLmNhbGwocCxCKSx0YWJpbmRleDpcIjBcIixvbkNsaWNrOmUud2l0aE1vZGlmaWVycyhaPT5nLiRlbWl0KFwic2VsZWN0LWRhdGVcIixCKSxbXCJzdG9wXCIsXCJwcmV2ZW50XCJdKSxvbktleWRvd246W2Uud2l0aEtleXMoWj0+Zy4kZW1pdChcInNlbGVjdC1kYXRlXCIsQiksW1wiZW50ZXJcIl0pLGUud2l0aEtleXMoWj0+Zy4kZW1pdChcImhhbmRsZS1zcGFjZVwiLEIpLFtcInNwYWNlXCJdKV0sb25Nb3VzZWVudGVyOlo9PmFlKEIsTSxxKSxvbk1vdXNlbGVhdmU6Wj0+cmUoQil9LFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtjbGFzczplLm5vcm1hbGl6ZUNsYXNzKFtcImRwX19jZWxsX2lubmVyXCIsQi5jbGFzc0RhdGFdKX0sW2cuJHNsb3RzLmRheSYmdGUudmFsdWUoQik/ZS5yZW5kZXJTbG90KGcuJHNsb3RzLFwiZGF5XCIse2tleTowLGRheTorQi50ZXh0LGRhdGU6Qi52YWx1ZX0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLGcuJHNsb3RzLmRheT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKEIudGV4dCksMSldLDY0KSksQi5tYXJrZXImJnRlLnZhbHVlKEIpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2tleToyLGNsYXNzOmUubm9ybWFsaXplQ2xhc3MoVS52YWx1ZShCLm1hcmtlcikpLHN0eWxlOmUubm9ybWFsaXplU3R5bGUoQi5tYXJrZXIuY29sb3I/e2JhY2tncm91bmRDb2xvcjpCLm1hcmtlci5jb2xvcn06e30pfSxudWxsLDYpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxLLnZhbHVlKEIudmFsdWUpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2tleTozLGNsYXNzOlwiZHBfX21hcmtlcl90b29sdGlwXCIscmVmX2ZvcjohMCxyZWZfa2V5OlwiYWN0aXZlVG9vbHRpcFwiLHJlZjpHLHN0eWxlOmUubm9ybWFsaXplU3R5bGUoXy52YWx1ZSl9LFsoTz1CLm1hcmtlcikhPW51bGwmJk8udG9vbHRpcD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtrZXk6MCxjbGFzczpcImRwX190b29sdGlwX2NvbnRlbnRcIixvbkNsaWNrOmRbMF18fChkWzBdPWUud2l0aE1vZGlmaWVycygoKT0+e30sW1wic3RvcFwiXSkpfSxbKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KEIubWFya2VyLnRvb2x0aXAsKFosc2UpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtrZXk6c2UsY2xhc3M6XCJkcF9fdG9vbHRpcF90ZXh0XCJ9LFtnLiRzbG90c1tcIm1hcmtlci10b29sdGlwXCJdP2UucmVuZGVyU2xvdChnLiRzbG90cyxcIm1hcmtlci10b29sdGlwXCIse2tleTowLHRvb2x0aXA6WixkYXk6Qi52YWx1ZX0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLGcuJHNsb3RzW1wibWFya2VyLXRvb2x0aXBcIl0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtjbGFzczpcImRwX190b29sdGlwX21hcmtcIixzdHlsZTplLm5vcm1hbGl6ZVN0eWxlKFouY29sb3I/e2JhY2tncm91bmRDb2xvcjpaLmNvbG9yfTp7fSl9LG51bGwsNCksZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIixudWxsLGUudG9EaXNwbGF5U3RyaW5nKFoudGV4dCksMSldLDY0KSldKSkpLDEyOCkpLGUuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse2NsYXNzOlwiZHBfX2Fycm93X2JvdHRvbV90cFwiLHN0eWxlOmUubm9ybWFsaXplU3R5bGUoTC52YWx1ZSl9LG51bGwsNCldKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCldLDQpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV0sMildLDQwLGZhKX0pLDEyOCkpXSkpKSwxMjgpKV0sOCx1YSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXX0pLF86M30sOCxbXCJuYW1lXCIsXCJjc3NcIl0pXSw2NCkpXSwxNCxsYSldLDIpfX19KSx5YT1bXCJhcmlhLWxhYmVsXCIsXCJhcmlhLWRpc2FibGVkXCJdLGt0PWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6XCJBY3Rpb25JY29uXCIscHJvcHM6e2FyaWFMYWJlbDp7fSxkaXNhYmxlZDp7dHlwZTpCb29sZWFufX0sZW1pdHM6W1wiYWN0aXZhdGVcIixcInNldC1yZWZcIl0sc2V0dXAodCx7ZW1pdDphfSl7Y29uc3Qgcj1lLnJlZihudWxsKTtyZXR1cm4gZS5vbk1vdW50ZWQoKCk9PmEoXCJzZXQtcmVmXCIscikpLChuLHUpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImJ1dHRvblwiLHt0eXBlOlwiYnV0dG9uXCIsY2xhc3M6XCJkcF9fYnRuIGRwX19tb250aF95ZWFyX2NvbF9uYXZcIixvbkNsaWNrOnVbMF18fCh1WzBdPW09Pm4uJGVtaXQoXCJhY3RpdmF0ZVwiKSksb25LZXlkb3duOlt1WzFdfHwodVsxXT1lLndpdGhLZXlzKG09Pm4uJGVtaXQoXCJhY3RpdmF0ZVwiKSxbXCJlbnRlclwiXSkpLHVbMl18fCh1WzJdPWUud2l0aEtleXMobT0+bi4kZW1pdChcImFjdGl2YXRlXCIpLFtcInNwYWNlXCJdKSldLHRhYmluZGV4OlwiMFwiLFwiYXJpYS1sYWJlbFwiOm4uYXJpYUxhYmVsLFwiYXJpYS1kaXNhYmxlZFwiOm4uZGlzYWJsZWQscmVmX2tleTpcImVsUmVmXCIscmVmOnJ9LFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcInNwYW5cIix7Y2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhbXCJkcF9faW5uZXJfbmF2XCIse2RwX19pbm5lcl9uYXZfZGlzYWJsZWQ6bi5kaXNhYmxlZH1dKX0sW2UucmVuZGVyU2xvdChuLiRzbG90cyxcImRlZmF1bHRcIildLDIpXSw0MCx5YSkpfX0pLHBhPVtcIm9uS2V5ZG93blwiXSxnYT17Y2xhc3M6XCJkcF9fc2VsZWN0aW9uX2dyaWRfaGVhZGVyXCJ9LGhhPVtcImFyaWEtc2VsZWN0ZWRcIixcImFyaWEtZGlzYWJsZWRcIixcIm9uQ2xpY2tcIixcIm9uS2V5ZG93blwiLFwib25Nb3VzZW92ZXJcIl0sa2E9W1wiYXJpYS1sYWJlbFwiLFwib25LZXlkb3duXCJdLHplPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6XCJTZWxlY3Rpb25HcmlkXCIscHJvcHM6e2l0ZW1zOnt0eXBlOkFycmF5LGRlZmF1bHQ6KCk9PltdfSxtb2RlbFZhbHVlOnt0eXBlOltTdHJpbmcsTnVtYmVyXSxkZWZhdWx0Om51bGx9LG11bHRpTW9kZWxWYWx1ZTp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bXX0sZGlzYWJsZWRWYWx1ZXM6e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+W119LG1pblZhbHVlOnt0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0Om51bGx9LG1heFZhbHVlOnt0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0Om51bGx9LHllYXI6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MH0sc2tpcEFjdGl2ZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGhlYWRlclJlZnM6e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+W119LHNraXBCdXR0b25SZWY6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxtb250aFBpY2tlcjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHllYXJQaWNrZXI6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxlc2NDbG9zZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LHR5cGU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6bnVsbH0sYXJyb3dOYXZpZ2F0aW9uOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sYXV0b0FwcGx5Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sdGV4dElucHV0Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sYXJpYUxhYmVsczp7dHlwZTpPYmplY3QsZGVmYXVsdDooKT0+KHt9KX0saGlkZU5hdmlnYXRpb246e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+W119fSxlbWl0czpbXCJ1cGRhdGU6bW9kZWwtdmFsdWVcIixcInNlbGVjdGVkXCIsXCJ0b2dnbGVcIixcInJlc2V0LWZsb3dcIl0sc2V0dXAodCx7ZXhwb3NlOmEsZW1pdDpyfSl7Y29uc3Qgbj10LHtzZXRTZWxlY3Rpb25HcmlkOnUsYnVpbGRNdWx0aUxldmVsTWF0cml4Om0sc2V0TW9udGhQaWNrZXI6aH09QWUoKSx7aGlkZU5hdmlnYXRpb25CdXR0b25zOlR9PURlKG4pLF89ZS5yZWYoITEpLE49ZS5yZWYobnVsbCksWT1lLnJlZihudWxsKSx2PWUucmVmKFtdKSxmPWUucmVmKCksYj1lLnJlZihudWxsKSxHPWUucmVmKDApLEw9ZS5yZWYobnVsbCk7ZS5vbkJlZm9yZVVwZGF0ZSgoKT0+e04udmFsdWU9bnVsbH0pLGUub25Nb3VudGVkKCgpPT57ZS5uZXh0VGljaygpLnRoZW4oKCk9PmFlKCkpLFIoKSx6KCEwKX0pLGUub25Vbm1vdW50ZWQoKCk9PnooITEpKTtjb25zdCB6PSQ9Pnt2YXIgZztuLmFycm93TmF2aWdhdGlvbiYmKChnPW4uaGVhZGVyUmVmcykhPW51bGwmJmcubGVuZ3RoP2goJCk6dSgkKSl9LFI9KCk9Pntjb25zdCAkPWNlKFkpOyQmJihuLnRleHRJbnB1dHx8JC5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pLF8udmFsdWU9JC5jbGllbnRIZWlnaHQ8JC5zY3JvbGxIZWlnaHQpfSxJPWUuY29tcHV0ZWQoKCk9Pih7ZHBfX292ZXJsYXk6ITB9KSksVj1lLmNvbXB1dGVkKCgpPT4oe2RwX19vdmVybGF5X2NvbDohMH0pKSxVPSQ9Pm4uc2tpcEFjdGl2ZT8hMTokLnZhbHVlPT09bi5tb2RlbFZhbHVlLEs9ZS5jb21wdXRlZCgoKT0+bi5pdGVtcy5tYXAoJD0+JC5maWx0ZXIoZz0+ZykubWFwKGc9Pnt2YXIgbCxrLE07Y29uc3QgZD1uLmRpc2FibGVkVmFsdWVzLnNvbWUoQj0+Qj09PWcudmFsdWUpfHxuZShnLnZhbHVlKSxvPShsPW4ubXVsdGlNb2RlbFZhbHVlKSE9bnVsbCYmbC5sZW5ndGg/KGs9bi5tdWx0aU1vZGVsVmFsdWUpPT1udWxsP3ZvaWQgMDprLnNvbWUoQj0+b2UoQixjLnNldFllYXIobi5tb250aFBpY2tlcj9jLnNldE1vbnRoKG5ldyBEYXRlLGcudmFsdWUpOm5ldyBEYXRlLG4ubW9udGhQaWNrZXI/bi55ZWFyOmcudmFsdWUpKSk6VShnKTtyZXR1cm57Li4uZyxjbGFzc05hbWU6e2RwX19vdmVybGF5X2NlbGxfYWN0aXZlOm8sZHBfX292ZXJsYXlfY2VsbDohbyxkcF9fb3ZlcmxheV9jZWxsX2Rpc2FibGVkOmQsZHBfX292ZXJsYXlfY2VsbF9hY3RpdmVfZGlzYWJsZWQ6ZCYmbyxkcF9fb3ZlcmxheV9jZWxsX3BhZDohMCxkcF9fY2VsbF9pbl9iZXR3ZWVuOihNPW4ubXVsdGlNb2RlbFZhbHVlKSE9bnVsbCYmTS5sZW5ndGgmJm4uc2tpcEFjdGl2ZT9QKGcudmFsdWUpOiExfX19KSkpLEY9ZS5jb21wdXRlZCgoKT0+KHtkcF9fYnV0dG9uOiEwLGRwX19vdmVybGF5X2FjdGlvbjohMCxkcF9fb3Zlcl9hY3Rpb25fc2Nyb2xsOl8udmFsdWUsZHBfX2J1dHRvbl9ib3R0b206bi5hdXRvQXBwbHl9KSksdGU9ZS5jb21wdXRlZCgoKT0+e3ZhciAkLGc7cmV0dXJue2RwX19vdmVybGF5X2NvbnRhaW5lcjohMCxkcF9fY29udGFpbmVyX2ZsZXg6KCgkPW4uaXRlbXMpPT1udWxsP3ZvaWQgMDokLmxlbmd0aCk8PTYsZHBfX2NvbnRhaW5lcl9ibG9jazooKGc9bi5pdGVtcyk9PW51bGw/dm9pZCAwOmcubGVuZ3RoKT42fX0pLG5lPSQ9Pntjb25zdCBnPW4ubWF4VmFsdWV8fG4ubWF4VmFsdWU9PT0wLGQ9bi5taW5WYWx1ZXx8bi5taW5WYWx1ZT09PTA7cmV0dXJuIWcmJiFkPyExOmcmJmQ/KyQ+K24ubWF4VmFsdWV8fCskPCtuLm1pblZhbHVlOmc/KyQ+K24ubWF4VmFsdWU6ZD8rJDwrbi5taW5WYWx1ZTohMX0sYWU9KCk9Pntjb25zdCAkPWNlKE4pLGc9Y2UoWSksZD1jZShiKSxvPWNlKEwpLGw9ZD9kLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDowO2cmJihHLnZhbHVlPWcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0LWwpLCQmJm8mJihvLnNjcm9sbFRvcD0kLm9mZnNldFRvcC1vLm9mZnNldFRvcC0oRy52YWx1ZS8yLSQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KS1sKX0scmU9JD0+eyFuLmRpc2FibGVkVmFsdWVzLnNvbWUoZz0+Zz09PSQpJiYhbmUoJCkmJihyKFwidXBkYXRlOm1vZGVsLXZhbHVlXCIsJCkscihcInNlbGVjdGVkXCIpKX0sUD0kPT57Y29uc3QgZz1uLm1vbnRoUGlja2VyP24ueWVhcjokO3JldHVybiBFdChuLm11bHRpTW9kZWxWYWx1ZSxjLnNldFllYXIobi5tb250aFBpY2tlcj9jLnNldE1vbnRoKG5ldyBEYXRlLGYudmFsdWV8fDApOm5ldyBEYXRlLG4ubW9udGhQaWNrZXI/ZzpmLnZhbHVlfHxnKSxjLnNldFllYXIobi5tb250aFBpY2tlcj9jLnNldE1vbnRoKG5ldyBEYXRlLCQpOm5ldyBEYXRlLGcpKX0sQz0oKT0+e3IoXCJ0b2dnbGVcIikscihcInJlc2V0LWZsb3dcIil9LHk9KCk9PntuLmVzY0Nsb3NlJiZDKCl9LEE9KCQsZyxkLG8pPT57JCYmKGcudmFsdWU9PT0rbi5tb2RlbFZhbHVlJiYhbi5kaXNhYmxlZFZhbHVlcy5pbmNsdWRlcyhnLnZhbHVlKSYmKE4udmFsdWU9JCksbi5hcnJvd05hdmlnYXRpb24mJihBcnJheS5pc0FycmF5KHYudmFsdWVbZF0pP3YudmFsdWVbZF1bb109JDp2LnZhbHVlW2RdPVskXSxFKCkpKX0sRT0oKT0+e3ZhciBnLGQ7Y29uc3QgJD0oZz1uLmhlYWRlclJlZnMpIT1udWxsJiZnLmxlbmd0aD9bbi5oZWFkZXJSZWZzXS5jb25jYXQodi52YWx1ZSk6di52YWx1ZS5jb25jYXQoW24uc2tpcEJ1dHRvblJlZj9bXTpbYi52YWx1ZV1dKTttKHllKCQpLChkPW4uaGVhZGVyUmVmcykhPW51bGwmJmQubGVuZ3RoP1wibW9udGhQaWNrZXJcIjpcInNlbGVjdGlvbkdyaWRcIil9O3JldHVybiBhKHtmb2N1c0dyaWQ6Un0pLCgkLGcpPT57dmFyIGQ7cmV0dXJuIGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7cmVmX2tleTpcImdyaWRXcmFwUmVmXCIscmVmOlksY2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhJLnZhbHVlKSxyb2xlOlwiZGlhbG9nXCIsdGFiaW5kZXg6XCIwXCIsb25LZXlkb3duOmUud2l0aEtleXMoeSxbXCJlc2NcIl0pfSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIix7Y2xhc3M6ZS5ub3JtYWxpemVDbGFzcyh0ZS52YWx1ZSkscmVmX2tleTpcImNvbnRhaW5lclJlZlwiLHJlZjpMLHJvbGU6XCJncmlkXCIsc3R5bGU6ZS5ub3JtYWxpemVTdHlsZSh7aGVpZ2h0OmAke0cudmFsdWV9cHhgfSl9LFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLGdhLFtlLnJlbmRlclNsb3QoJC4kc2xvdHMsXCJoZWFkZXJcIildKSwkLiRzbG90cy5vdmVybGF5P2UucmVuZGVyU2xvdCgkLiRzbG90cyxcIm92ZXJsYXlcIix7a2V5OjB9KTooZS5vcGVuQmxvY2soITApLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxlLnJlbmRlckxpc3QoSy52YWx1ZSwobyxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIix7Y2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhbXCJkcF9fb3ZlcmxheV9yb3dcIix7ZHBfX2ZsZXhfcm93OksudmFsdWUubGVuZ3RoPj0zfV0pLGtleTpsLHJvbGU6XCJyb3dcIn0sWyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChvLChrLE0pPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtyb2xlOlwiZ3JpZGNlbGxcIixjbGFzczplLm5vcm1hbGl6ZUNsYXNzKFYudmFsdWUpLGtleTprLnZhbHVlLFwiYXJpYS1zZWxlY3RlZFwiOmsudmFsdWU9PT10Lm1vZGVsVmFsdWUmJiF0LmRpc2FibGVkVmFsdWVzLmluY2x1ZGVzKGsudmFsdWUpLFwiYXJpYS1kaXNhYmxlZFwiOmsuY2xhc3NOYW1lLmRwX19vdmVybGF5X2NlbGxfZGlzYWJsZWQscmVmX2ZvcjohMCxyZWY6Qj0+QShCLGssbCxNKSx0YWJpbmRleDpcIjBcIixvbkNsaWNrOkI9PnJlKGsudmFsdWUpLG9uS2V5ZG93bjpbZS53aXRoS2V5cyhCPT5yZShrLnZhbHVlKSxbXCJlbnRlclwiXSksZS53aXRoS2V5cyhCPT5yZShrLnZhbHVlKSxbXCJzcGFjZVwiXSldLG9uTW91c2VvdmVyOkI9PmYudmFsdWU9ay52YWx1ZX0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse2NsYXNzOmUubm9ybWFsaXplQ2xhc3Moay5jbGFzc05hbWUpfSxbJC4kc2xvdHMuaXRlbT9lLnJlbmRlclNsb3QoJC4kc2xvdHMsXCJpdGVtXCIse2tleTowLGl0ZW06a30pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLCQuJHNsb3RzLml0ZW0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhrLnRleHQpLDEpXSw2NCkpXSwyKV0sNDIsaGEpKSksMTI4KSldLDIpKSksMTI4KSldLDYpLCQuJHNsb3RzW1wiYnV0dG9uLWljb25cIl0/ZS53aXRoRGlyZWN0aXZlcygoZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtrZXk6MCxyb2xlOlwiYnV0dG9uXCIsXCJhcmlhLWxhYmVsXCI6KGQ9dC5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6ZC50b2dnbGVPdmVybGF5LGNsYXNzOmUubm9ybWFsaXplQ2xhc3MoRi52YWx1ZSksdGFiaW5kZXg6XCIwXCIscmVmX2tleTpcInRvZ2dsZUJ1dHRvblwiLHJlZjpiLG9uQ2xpY2s6QyxvbktleWRvd246ZS53aXRoS2V5cyhDLFtcImVudGVyXCJdKX0sW2UucmVuZGVyU2xvdCgkLiRzbG90cyxcImJ1dHRvbi1pY29uXCIpXSw0MixrYSkpLFtbZS52U2hvdywhZS51bnJlZihUKSh0LnR5cGUpXV0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSw0MixwYSl9fX0pLHdhPVtcImFyaWEtbGFiZWxcIl0sSnQ9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZTpcIlJlZ3VsYXJQaWNrZXJcIixwcm9wczp7YXJpYUxhYmVsOnt0eXBlOlN0cmluZyxkZWZhdWx0OlwiXCJ9LHNob3dTZWxlY3Rpb25HcmlkOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpOdW1iZXIsZGVmYXVsdDpudWxsfSxpdGVtczp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bXX0sZGlzYWJsZWRWYWx1ZXM6e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+W119LG1pblZhbHVlOnt0eXBlOk51bWJlcixkZWZhdWx0Om51bGx9LG1heFZhbHVlOnt0eXBlOk51bWJlcixkZWZhdWx0Om51bGx9LHNsb3ROYW1lOnt0eXBlOlN0cmluZyxkZWZhdWx0OlwiXCJ9LG92ZXJsYXlTbG90Ont0eXBlOlN0cmluZyxkZWZhdWx0OlwiXCJ9LGhlYWRlclJlZnM6e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+W119LGVzY0Nsb3NlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sdHlwZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpudWxsfSx0cmFuc2l0aW9uczp7dHlwZTpbT2JqZWN0LEJvb2xlYW5dLGRlZmF1bHQ6ITF9LGFycm93TmF2aWdhdGlvbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGF1dG9BcHBseTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHRleHRJbnB1dDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGFyaWFMYWJlbHM6e3R5cGU6T2JqZWN0LGRlZmF1bHQ6KCk9Pih7fSl9LGhpZGVOYXZpZ2F0aW9uOnt0eXBlOkFycmF5LGRlZmF1bHQ6KCk9PltdfX0sZW1pdHM6W1widXBkYXRlOm1vZGVsLXZhbHVlXCIsXCJ0b2dnbGVcIixcInNldC1yZWZcIl0sc2V0dXAodCx7ZW1pdDphfSl7Y29uc3Qgcj10LHt0cmFuc2l0aW9uTmFtZTpuLHNob3dUcmFuc2l0aW9uOnV9PVhlKHIudHJhbnNpdGlvbnMpLG09ZS5yZWYobnVsbCk7cmV0dXJuIGUub25Nb3VudGVkKCgpPT5hKFwic2V0LXJlZlwiLG0pKSwoaCxUKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCxudWxsLFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImJ1dHRvblwiLHt0eXBlOlwiYnV0dG9uXCIsY2xhc3M6XCJkcF9fYnRuIGRwX19tb250aF95ZWFyX3NlbGVjdFwiLG9uQ2xpY2s6VFswXXx8KFRbMF09Xz0+aC4kZW1pdChcInRvZ2dsZVwiKSksb25LZXlkb3duOltUWzFdfHwoVFsxXT1lLndpdGhLZXlzKF89PmguJGVtaXQoXCJ0b2dnbGVcIiksW1wiZW50ZXJcIl0pKSxUWzJdfHwoVFsyXT1lLndpdGhLZXlzKF89PmguJGVtaXQoXCJ0b2dnbGVcIiksW1wic3BhY2VcIl0pKV0sXCJhcmlhLWxhYmVsXCI6dC5hcmlhTGFiZWwsdGFiaW5kZXg6XCIwXCIscmVmX2tleTpcImVsUmVmXCIscmVmOm19LFtlLnJlbmRlclNsb3QoaC4kc2xvdHMsXCJkZWZhdWx0XCIpXSw0MCx3YSksZS5jcmVhdGVWTm9kZShlLlRyYW5zaXRpb24se25hbWU6ZS51bnJlZihuKSh0LnNob3dTZWxlY3Rpb25HcmlkKSxjc3M6ZS51bnJlZih1KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bdC5zaG93U2VsZWN0aW9uR3JpZD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKHplLGUubWVyZ2VQcm9wcyh7a2V5OjB9LHttb2RlbFZhbHVlOnQubW9kZWxWYWx1ZSxpdGVtczp0Lml0ZW1zLGRpc2FibGVkVmFsdWVzOnQuZGlzYWJsZWRWYWx1ZXMsbWluVmFsdWU6dC5taW5WYWx1ZSxtYXhWYWx1ZTp0Lm1heFZhbHVlLGVzY0Nsb3NlOnQuZXNjQ2xvc2UsdHlwZTp0LnR5cGUsYXJyb3dOYXZpZ2F0aW9uOnQuYXJyb3dOYXZpZ2F0aW9uLHRleHRJbnB1dDp0LnRleHRJbnB1dCxhdXRvQXBwbHk6dC5hdXRvQXBwbHksYXJpYUxhYmVsczp0LmFyaWFMYWJlbHMsaGlkZU5hdmlnYXRpb246dC5oaWRlTmF2aWdhdGlvbn0se1wiaGVhZGVyLXJlZnNcIjpbXSxcIm9uVXBkYXRlOm1vZGVsVmFsdWVcIjpUWzNdfHwoVFszXT1fPT5oLiRlbWl0KFwidXBkYXRlOm1vZGVsLXZhbHVlXCIsXykpLG9uVG9nZ2xlOlRbNF18fChUWzRdPV89PmguJGVtaXQoXCJ0b2dnbGVcIikpfSksZS5jcmVhdGVTbG90cyh7XCJidXR0b24taWNvblwiOmUud2l0aEN0eCgoKT0+W2guJHNsb3RzW1wiY2FsZW5kYXItaWNvblwiXT9lLnJlbmRlclNsb3QoaC4kc2xvdHMsXCJjYWxlbmRhci1pY29uXCIse2tleTowfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksaC4kc2xvdHNbXCJjYWxlbmRhci1pY29uXCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihIZSkse2tleToxfSkpXSksXzoyfSxbaC4kc2xvdHNbdC5zbG90TmFtZV0/e25hbWU6XCJpdGVtXCIsZm46ZS53aXRoQ3R4KCh7aXRlbTpffSk9PltlLnJlbmRlclNsb3QoaC4kc2xvdHMsdC5zbG90TmFtZSx7aXRlbTpffSldKSxrZXk6XCIwXCJ9OnZvaWQgMCxoLiRzbG90c1t0Lm92ZXJsYXlTbG90XT97bmFtZTpcIm92ZXJsYXlcIixmbjplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QoaC4kc2xvdHMsdC5vdmVybGF5U2xvdCldKSxrZXk6XCIxXCJ9OnZvaWQgMCxoLiRzbG90c1tgJHt0Lm92ZXJsYXlTbG90fS1oZWFkZXJgXT97bmFtZTpcImhlYWRlclwiLGZuOmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChoLiRzbG90cyxgJHt0Lm92ZXJsYXlTbG90fS1oZWFkZXJgKV0pLGtleTpcIjJcIn06dm9pZCAwXSksMTA0MCkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSksXzozfSw4LFtcIm5hbWVcIixcImNzc1wiXSldLDY0KSl9fSksYmE9e2NsYXNzOlwiZHBfX21vbnRoX3llYXJfcm93XCJ9LERhPXtjbGFzczpcImRwX19tb250aF9waWNrZXJfaGVhZGVyXCJ9LENhPVtcImFyaWEtbGFiZWxcIl0sTWE9W1wiYXJpYS1sYWJlbFwiXSwkYT1bXCJhcmlhLWxhYmVsXCJdLFNhPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6XCJNb250aFllYXJQaWNrZXJcIixwcm9wczp7bW9udGg6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MH0seWVhcjp7dHlwZTpOdW1iZXIsZGVmYXVsdDowfSxpbnN0YW5jZTp7dHlwZTpOdW1iZXIsZGVmYXVsdDowfSx5ZWFyczp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bXX0sbW9udGhzOnt0eXBlOkFycmF5LGRlZmF1bHQ6KCk9PltdfSxpbnRlcm5hbE1vZGVsVmFsdWU6e3R5cGU6W0RhdGUsQXJyYXldLGRlZmF1bHQ6bnVsbH0sLi4uVmV9LGVtaXRzOltcInVwZGF0ZS1tb250aC15ZWFyXCIsXCJtb250aC15ZWFyLXNlbGVjdFwiLFwibW91bnRcIixcInJlc2V0LWZsb3dcIixcIm92ZXJsYXktY2xvc2VkXCJdLHNldHVwKHQse2V4cG9zZTphLGVtaXQ6cn0pe2NvbnN0IG49dCx7ZGVmYXVsdHM6dX09RGUobikse3RyYW5zaXRpb25OYW1lOm0sc2hvd1RyYW5zaXRpb246aH09WGUodS52YWx1ZS50cmFuc2l0aW9ucykse2J1aWxkTWF0cml4OlR9PUFlKCkse2hhbmRsZU1vbnRoWWVhckNoYW5nZTpfLGlzRGlzYWJsZWQ6Tix1cGRhdGVNb250aFllYXI6WX09am4obixyKSx2PWUucmVmKCExKSxmPWUucmVmKCExKSxiPWUucmVmKFtudWxsLG51bGwsbnVsbCxudWxsXSksRz1lLnJlZihudWxsKSxMPWUucmVmKG51bGwpLHo9ZS5yZWYobnVsbCk7ZS5vbk1vdW50ZWQoKCk9PntyKFwibW91bnRcIil9KTtjb25zdCBSPXA9Pih7Z2V0OigpPT5uW3BdLHNldDpzPT57Y29uc3QgTz1wPT09XCJtb250aFwiP1wieWVhclwiOlwibW9udGhcIjtyKFwidXBkYXRlLW1vbnRoLXllYXJcIix7W3BdOnMsW09dOm5bT119KSxyKFwibW9udGgteWVhci1zZWxlY3RcIixwPT09XCJ5ZWFyXCIpLHA9PT1cIm1vbnRoXCI/bCghMCk6ayghMCl9fSksST1lLmNvbXB1dGVkKFIoXCJtb250aFwiKSksVj1lLmNvbXB1dGVkKFIoXCJ5ZWFyXCIpKSxVPXA9Pntjb25zdCBzPWMuZ2V0WWVhcihTKHApKTtyZXR1cm4gbi55ZWFyPT09c30sSz1lLmNvbXB1dGVkKCgpPT5uLm1vbnRoUGlja2VyP0FycmF5LmlzQXJyYXkobi5kaXNhYmxlZERhdGVzKT9uLmRpc2FibGVkRGF0ZXMubWFwKHA9PlMocCkpLmZpbHRlcihwPT5VKHApKS5tYXAocD0+Yy5nZXRNb250aChwKSk6W106W10pLEY9ZS5jb21wdXRlZCgoKT0+cD0+e2NvbnN0IHM9cD09PVwibW9udGhcIjtyZXR1cm57c2hvd1NlbGVjdGlvbkdyaWQ6KHM/djpmKS52YWx1ZSxpdGVtczoocz9FOiQpLnZhbHVlLGRpc2FibGVkVmFsdWVzOnUudmFsdWUuZmlsdGVyc1tzP1wibW9udGhzXCI6XCJ5ZWFyc1wiXS5jb25jYXQoSy52YWx1ZSksbWluVmFsdWU6KHM/cmU6bmUpLnZhbHVlLG1heFZhbHVlOihzP1A6YWUpLnZhbHVlLGhlYWRlclJlZnM6cyYmbi5tb250aFBpY2tlcj9bRy52YWx1ZSxMLnZhbHVlLHoudmFsdWVdOltdLGVzY0Nsb3NlOm4uZXNjQ2xvc2UsdHJhbnNpdGlvbnM6dS52YWx1ZS50cmFuc2l0aW9ucyxhcmlhTGFiZWxzOnUudmFsdWUuYXJpYUxhYmVscyx0ZXh0SW5wdXQ6bi50ZXh0SW5wdXQsYXV0b0FwcGx5Om4uYXV0b0FwcGx5LGFycm93TmF2aWdhdGlvbjpuLmFycm93TmF2aWdhdGlvbixoaWRlTmF2aWdhdGlvbjpuLmhpZGVOYXZpZ2F0aW9ufX0pLHRlPWUuY29tcHV0ZWQoKCk9PnA9Pih7bW9udGg6bi5tb250aCx5ZWFyOm4ueWVhcixpdGVtczpwPT09XCJtb250aFwiP24ubW9udGhzOm4ueWVhcnMsaW5zdGFuY2U6bi5pbnN0YW5jZSx1cGRhdGVNb250aFllYXI6WSx0b2dnbGU6cD09PVwibW9udGhcIj9sOmt9KSksbmU9ZS5jb21wdXRlZCgoKT0+bi5taW5EYXRlP2MuZ2V0WWVhcihTKG4ubWluRGF0ZSkpOm51bGwpLGFlPWUuY29tcHV0ZWQoKCk9Pm4ubWF4RGF0ZT9jLmdldFllYXIoUyhuLm1heERhdGUpKTpudWxsKSxyZT1lLmNvbXB1dGVkKCgpPT57aWYobi5taW5EYXRlJiZuZS52YWx1ZSl7aWYobmUudmFsdWU+bi55ZWFyKXJldHVybiAxMjtpZihuZS52YWx1ZT09PW4ueWVhcilyZXR1cm4gYy5nZXRNb250aChTKG4ubWluRGF0ZSkpfXJldHVybiBudWxsfSksUD1lLmNvbXB1dGVkKCgpPT5uLm1heERhdGUmJmFlLnZhbHVlP2FlLnZhbHVlPG4ueWVhcj8tMTphZS52YWx1ZT09PW4ueWVhcj9jLmdldE1vbnRoKFMobi5tYXhEYXRlKSk6bnVsbDpudWxsKSxDPWUuY29tcHV0ZWQoKCk9PihuLnJhbmdlfHxuLm11bHRpRGF0ZXMpJiZuLmludGVybmFsTW9kZWxWYWx1ZSYmKG4ubW9udGhQaWNrZXJ8fG4ueWVhclBpY2tlcik/bi5pbnRlcm5hbE1vZGVsVmFsdWU6W10pLHk9cD0+e2NvbnN0IHM9W10sTz1aPT5aO2ZvcihsZXQgWj0wO1o8cC5sZW5ndGg7Wis9Myl7Y29uc3Qgc2U9W3BbWl0scFtaKzFdLHBbWisyXV07cy5wdXNoKE8oc2UpKX1yZXR1cm4gc30sQT1lLmNvbXB1dGVkKCgpPT57Y29uc3QgcD1uLm1vbnRocy5maW5kKHM9PnMudmFsdWU9PT1uLm1vbnRoKTtyZXR1cm4gcHx8e3RleHQ6XCJcIix2YWx1ZTowfX0pLEU9ZS5jb21wdXRlZCgoKT0+eShuLm1vbnRocykpLCQ9ZS5jb21wdXRlZCgoKT0+eShuLnllYXJzKSksZz1lLmNvbXB1dGVkKCgpPT51LnZhbHVlLm11bHRpQ2FsZW5kYXJzP24ubXVsdGlDYWxlbmRhcnNTb2xvPyEwOm4uaW5zdGFuY2U9PT0wOiEwKSxkPWUuY29tcHV0ZWQoKCk9PnUudmFsdWUubXVsdGlDYWxlbmRhcnM/bi5tdWx0aUNhbGVuZGFyc1NvbG8/ITA6bi5pbnN0YW5jZT09PXUudmFsdWUubXVsdGlDYWxlbmRhcnMtMTohMCksbz0ocCxzKT0+e3MhPT12b2lkIDA/cC52YWx1ZT1zOnAudmFsdWU9IXAudmFsdWV9LGw9KHA9ITEscyk9PntNKHApLG8odixzKSx2LnZhbHVlfHxyKFwib3ZlcmxheS1jbG9zZWRcIil9LGs9KHA9ITEscyk9PntNKHApLG8oZixzKSxmLnZhbHVlfHxyKFwib3ZlcmxheS1jbG9zZWRcIil9LE09cD0+e3B8fHIoXCJyZXNldC1mbG93XCIpfSxCPShwPSExKT0+e04udmFsdWUocCl8fHIoXCJ1cGRhdGUtbW9udGgteWVhclwiLHt5ZWFyOnA/bi55ZWFyKzE6bi55ZWFyLTEsbW9udGg6bi5tb250aCxmcm9tTmF2OiEwfSl9LHE9KHAscyk9PntuLmFycm93TmF2aWdhdGlvbiYmKGIudmFsdWVbc109Y2UocCksVChiLnZhbHVlLFwibW9udGhZZWFyXCIpKX07cmV0dXJuIGEoe3RvZ2dsZU1vbnRoUGlja2VyOmwsdG9nZ2xlWWVhclBpY2tlcjprLGhhbmRsZU1vbnRoWWVhckNoYW5nZTpffSksKHAscyk9Pnt2YXIgTyxaLHNlLCRlLE5lO3JldHVybiBlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIsYmEsW3AuJHNsb3RzW1wibW9udGgteWVhclwiXT9lLnJlbmRlclNsb3QocC4kc2xvdHMsXCJtb250aC15ZWFyXCIsZS5ub3JtYWxpemVQcm9wcyhlLm1lcmdlUHJvcHMoe2tleTowfSx7bW9udGg6dC5tb250aCx5ZWFyOnQueWVhcixtb250aHM6dC5tb250aHMseWVhcnM6dC55ZWFycyx1cGRhdGVNb250aFllYXI6ZS51bnJlZihZKSxoYW5kbGVNb250aFllYXJDaGFuZ2U6ZS51bnJlZihfKSxpbnN0YW5jZTp0Lmluc3RhbmNlfSkpKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sWyFwLm1vbnRoUGlja2VyJiYhcC55ZWFyUGlja2VyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleTowfSxbZy52YWx1ZSYmIXAudmVydGljYWw/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhrdCx7a2V5OjAsXCJhcmlhLWxhYmVsXCI6KE89ZS51bnJlZih1KS5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6Ty5wcmV2TW9udGgsZGlzYWJsZWQ6ZS51bnJlZihOKSghMSksb25BY3RpdmF0ZTpzWzBdfHwoc1swXT1KPT5lLnVucmVmKF8pKCExKSksb25TZXRSZWY6c1sxXXx8KHNbMV09Sj0+cShKLDApKX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bcC4kc2xvdHNbXCJhcnJvdy1sZWZ0XCJdP2UucmVuZGVyU2xvdChwLiRzbG90cyxcImFycm93LWxlZnRcIix7a2V5OjB9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxwLiRzbG90c1tcImFycm93LWxlZnRcIl0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKE50KSx7a2V5OjF9KSldKSxfOjN9LDgsW1wiYXJpYS1sYWJlbFwiLFwiZGlzYWJsZWRcIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtjbGFzczplLm5vcm1hbGl6ZUNsYXNzKFtcImRwX19tb250aF95ZWFyX3dyYXBcIix7ZHBfX3llYXJfZGlzYWJsZV9zZWxlY3Q6bi5kaXNhYmxlWWVhclNlbGVjdH1dKX0sW2UuY3JlYXRlVk5vZGUoSnQsZS5tZXJnZVByb3BzKHt0eXBlOlwibW9udGhcIixcInNsb3QtbmFtZVwiOlwibW9udGgtb3ZlcmxheS12YWxcIixcIm92ZXJsYXktc2xvdFwiOlwib3ZlcmxheS1tb250aFwiLFwiYXJpYS1sYWJlbFwiOihaPWUudW5yZWYodSkuYXJpYUxhYmVscyk9PW51bGw/dm9pZCAwOloub3Blbk1vbnRoc092ZXJsYXksbW9kZWxWYWx1ZTpJLnZhbHVlLFwib25VcGRhdGU6bW9kZWxWYWx1ZVwiOnNbMl18fChzWzJdPUo9PkkudmFsdWU9Sil9LEYudmFsdWUoXCJtb250aFwiKSx7b25Ub2dnbGU6bCxvblNldFJlZjpzWzNdfHwoc1szXT1KPT5xKEosMSkpfSksZS5jcmVhdGVTbG90cyh7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltwLiRzbG90cy5tb250aD9lLnJlbmRlclNsb3QocC4kc2xvdHMsXCJtb250aFwiLGUubm9ybWFsaXplUHJvcHMoZS5tZXJnZVByb3BzKHtrZXk6MH0sQS52YWx1ZSkpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxwLiRzbG90cy5tb250aD9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKEEudmFsdWUudGV4dCksMSldLDY0KSldKSxfOjJ9LFtwLiRzbG90c1tcImNhbGVuZGFyLWljb25cIl0/e25hbWU6XCJjYWxlbmRhci1pY29uXCIsZm46ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHAuJHNsb3RzLFwiY2FsZW5kYXItaWNvblwiKV0pLGtleTpcIjBcIn06dm9pZCAwLHAuJHNsb3RzW1wibW9udGgtb3ZlcmxheS12YWx1ZVwiXT97bmFtZTpcIm1vbnRoLW92ZXJsYXktdmFsXCIsZm46ZS53aXRoQ3R4KCh7aXRlbTpKfSk9PltlLnJlbmRlclNsb3QocC4kc2xvdHMsXCJtb250aC1vdmVybGF5LXZhbHVlXCIse3RleHQ6Si50ZXh0LHZhbHVlOkoudmFsdWV9KV0pLGtleTpcIjFcIn06dm9pZCAwLHAuJHNsb3RzW1wibW9udGgtb3ZlcmxheVwiXT97bmFtZTpcIm92ZXJsYXktbW9udGhcIixmbjplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QocC4kc2xvdHMsXCJtb250aC1vdmVybGF5XCIsZS5ub3JtYWxpemVQcm9wcyhlLmd1YXJkUmVhY3RpdmVQcm9wcyh0ZS52YWx1ZShcIm1vbnRoXCIpKSkpXSksa2V5OlwiMlwifTp2b2lkIDAscC4kc2xvdHNbXCJtb250aC1vdmVybGF5LWhlYWRlclwiXT97bmFtZTpcIm92ZXJsYXktbW9udGgtaGVhZGVyXCIsZm46ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHAuJHNsb3RzLFwibW9udGgtb3ZlcmxheS1oZWFkZXJcIix7dG9nZ2xlOmx9KV0pLGtleTpcIjNcIn06dm9pZCAwXSksMTA0MCxbXCJhcmlhLWxhYmVsXCIsXCJtb2RlbFZhbHVlXCJdKSxuLmRpc2FibGVZZWFyU2VsZWN0P2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soSnQsZS5tZXJnZVByb3BzKHtrZXk6MCx0eXBlOlwieWVhclwiLFwic2xvdC1uYW1lXCI6XCJ5ZWFyLW92ZXJsYXktdmFsXCIsXCJvdmVybGF5LXNsb3RcIjpcIm92ZXJsYXkteWVhclwiLFwiYXJpYS1sYWJlbFwiOihzZT1lLnVucmVmKHUpLmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDpzZS5vcGVuWWVhcnNPdmVybGF5LG1vZGVsVmFsdWU6Vi52YWx1ZSxcIm9uVXBkYXRlOm1vZGVsVmFsdWVcIjpzWzRdfHwoc1s0XT1KPT5WLnZhbHVlPUopfSxGLnZhbHVlKFwieWVhclwiKSx7b25Ub2dnbGU6ayxvblNldFJlZjpzWzVdfHwoc1s1XT1KPT5xKEosMikpfSksZS5jcmVhdGVTbG90cyh7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltwLiRzbG90cy55ZWFyP2UucmVuZGVyU2xvdChwLiRzbG90cyxcInllYXJcIix7a2V5OjAseWVhcjp0LnllYXJ9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxwLiRzbG90cy55ZWFyP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxbZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcodC55ZWFyKSwxKV0sNjQpKV0pLF86Mn0sW3AuJHNsb3RzW1wiY2FsZW5kYXItaWNvblwiXT97bmFtZTpcImNhbGVuZGFyLWljb25cIixmbjplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QocC4kc2xvdHMsXCJjYWxlbmRhci1pY29uXCIpXSksa2V5OlwiMFwifTp2b2lkIDAscC4kc2xvdHNbXCJ5ZWFyLW92ZXJsYXktdmFsdWVcIl0/e25hbWU6XCJ5ZWFyLW92ZXJsYXktdmFsXCIsZm46ZS53aXRoQ3R4KCh7aXRlbTpKfSk9PltlLnJlbmRlclNsb3QocC4kc2xvdHMsXCJ5ZWFyLW92ZXJsYXktdmFsdWVcIix7dGV4dDpKLnRleHQsdmFsdWU6Si52YWx1ZX0pXSksa2V5OlwiMVwifTp2b2lkIDAscC4kc2xvdHNbXCJ5ZWFyLW92ZXJsYXlcIl0/e25hbWU6XCJvdmVybGF5LXllYXJcIixmbjplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QocC4kc2xvdHMsXCJ5ZWFyLW92ZXJsYXlcIixlLm5vcm1hbGl6ZVByb3BzKGUuZ3VhcmRSZWFjdGl2ZVByb3BzKHRlLnZhbHVlKFwieWVhclwiKSkpKV0pLGtleTpcIjJcIn06dm9pZCAwLHAuJHNsb3RzW1wieWVhci1vdmVybGF5LWhlYWRlclwiXT97bmFtZTpcIm92ZXJsYXkteWVhci1oZWFkZXJcIixmbjplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QocC4kc2xvdHMsXCJ5ZWFyLW92ZXJsYXktaGVhZGVyXCIse3RvZ2dsZTprfSldKSxrZXk6XCIzXCJ9OnZvaWQgMF0pLDEwNDAsW1wiYXJpYS1sYWJlbFwiLFwibW9kZWxWYWx1ZVwiXSkpXSwyKSxnLnZhbHVlJiZwLnZlcnRpY2FsPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soa3Qse2tleToxLFwiYXJpYS1sYWJlbFwiOigkZT1lLnVucmVmKHUpLmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDokZS5wcmV2TW9udGgsZGlzYWJsZWQ6ZS51bnJlZihOKSghMSksb25BY3RpdmF0ZTpzWzZdfHwoc1s2XT1KPT5lLnVucmVmKF8pKCExKSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3AuJHNsb3RzW1wiYXJyb3ctdXBcIl0/ZS5yZW5kZXJTbG90KHAuJHNsb3RzLFwiYXJyb3ctdXBcIix7a2V5OjB9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxwLiRzbG90c1tcImFycm93LXVwXCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihQdCkse2tleToxfSkpXSksXzozfSw4LFtcImFyaWEtbGFiZWxcIixcImRpc2FibGVkXCJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksZC52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGt0LHtrZXk6MixyZWY6XCJyaWdodEljb25cIixkaXNhYmxlZDplLnVucmVmKE4pKCEwKSxcImFyaWEtbGFiZWxcIjooTmU9ZS51bnJlZih1KS5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6TmUubmV4dE1vbnRoLG9uQWN0aXZhdGU6c1s3XXx8KHNbN109Sj0+ZS51bnJlZihfKSghMCkpLG9uU2V0UmVmOnNbOF18fChzWzhdPUo9PnEoSiwzKSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3AuJHNsb3RzW3AudmVydGljYWw/XCJhcnJvdy1kb3duXCI6XCJhcnJvdy1yaWdodFwiXT9lLnJlbmRlclNsb3QocC4kc2xvdHMscC52ZXJ0aWNhbD9cImFycm93LWRvd25cIjpcImFycm93LXJpZ2h0XCIse2tleTowfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCkscC4kc2xvdHNbcC52ZXJ0aWNhbD9cImFycm93LWRvd25cIjpcImFycm93LXJpZ2h0XCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5yZXNvbHZlRHluYW1pY0NvbXBvbmVudChwLnZlcnRpY2FsP2UudW5yZWYoQXQpOmUudW5yZWYodnQpKSx7a2V5OjF9KSldKSxfOjN9LDgsW1wiZGlzYWJsZWRcIixcImFyaWEtbGFiZWxcIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV0sNjQpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxwLm1vbnRoUGlja2VyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soemUsZS5tZXJnZVByb3BzKHtrZXk6MX0sRi52YWx1ZShcIm1vbnRoXCIpLHtcInNraXAtYWN0aXZlXCI6cC5yYW5nZSx5ZWFyOnQueWVhcixcIm11bHRpLW1vZGVsLXZhbHVlXCI6Qy52YWx1ZSxcIm1vbnRoLXBpY2tlclwiOlwiXCIsbW9kZWxWYWx1ZTpJLnZhbHVlLFwib25VcGRhdGU6bW9kZWxWYWx1ZVwiOnNbMTddfHwoc1sxN109Sj0+SS52YWx1ZT1KKSxvblRvZ2dsZTpsLG9uU2VsZWN0ZWQ6c1sxOF18fChzWzE4XT1KPT5wLiRlbWl0KFwib3ZlcmxheS1jbG9zZWRcIikpfSksZS5jcmVhdGVTbG90cyh7aGVhZGVyOmUud2l0aEN0eCgoKT0+e3ZhciBKLHZlLGJlO3JldHVybltlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLERhLFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtjbGFzczpcImRwX19tb250aF95ZWFyX2NvbF9uYXZcIix0YWJpbmRleDpcIjBcIixyZWZfa2V5OlwibXBQcmV2SWNvblJlZlwiLHJlZjpHLG9uQ2xpY2s6c1s5XXx8KHNbOV09bWU9PkIoITEpKSxvbktleWRvd246c1sxMF18fChzWzEwXT1lLndpdGhLZXlzKG1lPT5CKCExKSxbXCJlbnRlclwiXSkpfSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIix7Y2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhbXCJkcF9faW5uZXJfbmF2XCIse2RwX19pbm5lcl9uYXZfZGlzYWJsZWQ6ZS51bnJlZihOKSghMSl9XSkscm9sZTpcImJ1dHRvblwiLFwiYXJpYS1sYWJlbFwiOihKPWUudW5yZWYodSkuYXJpYUxhYmVscyk9PW51bGw/dm9pZCAwOkoucHJldk1vbnRofSxbcC4kc2xvdHNbXCJhcnJvdy1sZWZ0XCJdP2UucmVuZGVyU2xvdChwLiRzbG90cyxcImFycm93LWxlZnRcIix7a2V5OjB9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxwLiRzbG90c1tcImFycm93LWxlZnRcIl0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKE50KSx7a2V5OjF9KSldLDEwLENhKV0sNTQ0KSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtjbGFzczpcImRwX19wb2ludGVyXCIscm9sZTpcImJ1dHRvblwiLHJlZl9rZXk6XCJtcFllYXJCdXR0b25SZWZcIixyZWY6TCxcImFyaWEtbGFiZWxcIjoodmU9ZS51bnJlZih1KS5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6dmUub3BlblllYXJzT3ZlcmxheSx0YWJpbmRleDpcIjBcIixvbkNsaWNrOnNbMTFdfHwoc1sxMV09KCk9PmsoITEpKSxvbktleWRvd246c1sxMl18fChzWzEyXT1lLndpdGhLZXlzKCgpPT5rKCExKSxbXCJlbnRlclwiXSkpfSxbcC4kc2xvdHMueWVhcj9lLnJlbmRlclNsb3QocC4kc2xvdHMsXCJ5ZWFyXCIse2tleTowLHllYXI6dC55ZWFyfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCkscC4kc2xvdHMueWVhcj9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQueWVhciksMSldLDY0KSldLDQwLE1hKSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtjbGFzczpcImRwX19tb250aF95ZWFyX2NvbF9uYXZcIix0YWJpbmRleDpcIjBcIixyZWZfa2V5OlwibXBOZXh0SWNvblJlZlwiLHJlZjp6LG9uQ2xpY2s6c1sxM118fChzWzEzXT1tZT0+QighMCkpLG9uS2V5ZG93bjpzWzE0XXx8KHNbMTRdPWUud2l0aEtleXMobWU9PkIoITApLFtcImVudGVyXCJdKSl9LFtlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtjbGFzczplLm5vcm1hbGl6ZUNsYXNzKFtcImRwX19pbm5lcl9uYXZcIix7ZHBfX2lubmVyX25hdl9kaXNhYmxlZDplLnVucmVmKE4pKCEwKX1dKSxyb2xlOlwiYnV0dG9uXCIsXCJhcmlhLWxhYmVsXCI6KGJlPWUudW5yZWYodSkuYXJpYUxhYmVscyk9PW51bGw/dm9pZCAwOmJlLm5leHRNb250aH0sW3AuJHNsb3RzW1wiYXJyb3ctcmlnaHRcIl0/ZS5yZW5kZXJTbG90KHAuJHNsb3RzLFwiYXJyb3ctcmlnaHRcIix7a2V5OjB9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxwLiRzbG90c1tcImFycm93LXJpZ2h0XCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih2dCkse2tleToxfSkpXSwxMCwkYSldLDU0NCldKSxlLmNyZWF0ZVZOb2RlKGUuVHJhbnNpdGlvbix7bmFtZTplLnVucmVmKG0pKGYudmFsdWUpLGNzczplLnVucmVmKGgpfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltmLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soemUsZS5tZXJnZVByb3BzKHtrZXk6MH0sRi52YWx1ZShcInllYXJcIikse21vZGVsVmFsdWU6Vi52YWx1ZSxcIm9uVXBkYXRlOm1vZGVsVmFsdWVcIjpzWzE1XXx8KHNbMTVdPW1lPT5WLnZhbHVlPW1lKSxvblRvZ2dsZTprLG9uU2VsZWN0ZWQ6c1sxNl18fChzWzE2XT1tZT0+cC4kZW1pdChcIm92ZXJsYXktY2xvc2VkXCIpKX0pLGUuY3JlYXRlU2xvdHMoe1wiYnV0dG9uLWljb25cIjplLndpdGhDdHgoKCk9PltwLiRzbG90c1tcImNhbGVuZGFyLWljb25cIl0/ZS5yZW5kZXJTbG90KHAuJHNsb3RzLFwiY2FsZW5kYXItaWNvblwiLHtrZXk6MH0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLHAuJHNsb3RzW1wiY2FsZW5kYXItaWNvblwiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoSGUpLHtrZXk6MX0pKV0pLF86Mn0sW3AuJHNsb3RzW1wieWVhci1vdmVybGF5LXZhbHVlXCJdP3tuYW1lOlwiaXRlbVwiLGZuOmUud2l0aEN0eCgoe2l0ZW06bWV9KT0+W2UucmVuZGVyU2xvdChwLiRzbG90cyxcInllYXItb3ZlcmxheS12YWx1ZVwiLHt0ZXh0Om1lLnRleHQsdmFsdWU6bWUudmFsdWV9KV0pLGtleTpcIjBcIn06dm9pZCAwXSksMTA0MCxbXCJtb2RlbFZhbHVlXCJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCldKSxfOjN9LDgsW1wibmFtZVwiLFwiY3NzXCJdKV19KSxfOjJ9LFtwLiRzbG90c1tcIm1vbnRoLW92ZXJsYXktdmFsdWVcIl0/e25hbWU6XCJpdGVtXCIsZm46ZS53aXRoQ3R4KCh7aXRlbTpKfSk9PltlLnJlbmRlclNsb3QocC4kc2xvdHMsXCJtb250aC1vdmVybGF5LXZhbHVlXCIse3RleHQ6Si50ZXh0LHZhbHVlOkoudmFsdWV9KV0pLGtleTpcIjBcIn06dm9pZCAwXSksMTA0MCxbXCJza2lwLWFjdGl2ZVwiLFwieWVhclwiLFwibXVsdGktbW9kZWwtdmFsdWVcIixcIm1vZGVsVmFsdWVcIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxwLnllYXJQaWNrZXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayh6ZSxlLm1lcmdlUHJvcHMoe2tleToyfSxGLnZhbHVlKFwieWVhclwiKSx7bW9kZWxWYWx1ZTpWLnZhbHVlLFwib25VcGRhdGU6bW9kZWxWYWx1ZVwiOnNbMTldfHwoc1sxOV09Sj0+Vi52YWx1ZT1KKSxcIm11bHRpLW1vZGVsLXZhbHVlXCI6Qy52YWx1ZSxcInNraXAtYWN0aXZlXCI6cC5yYW5nZSxcInNraXAtYnV0dG9uLXJlZlwiOlwiXCIsXCJ5ZWFyLXBpY2tlclwiOlwiXCIsb25Ub2dnbGU6ayxvblNlbGVjdGVkOnNbMjBdfHwoc1syMF09Sj0+cC4kZW1pdChcIm92ZXJsYXktY2xvc2VkXCIpKX0pLGUuY3JlYXRlU2xvdHMoe186Mn0sW3AuJHNsb3RzW1wieWVhci1vdmVybGF5LXZhbHVlXCJdP3tuYW1lOlwiaXRlbVwiLGZuOmUud2l0aEN0eCgoe2l0ZW06Sn0pPT5bZS5yZW5kZXJTbG90KHAuJHNsb3RzLFwieWVhci1vdmVybGF5LXZhbHVlXCIse3RleHQ6Si50ZXh0LHZhbHVlOkoudmFsdWV9KV0pLGtleTpcIjBcIn06dm9pZCAwXSksMTA0MCxbXCJtb2RlbFZhbHVlXCIsXCJtdWx0aS1tb2RlbC12YWx1ZVwiLFwic2tpcC1hY3RpdmVcIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV0sNjQpKV0pfX19KSxCYT17a2V5OjAsY2xhc3M6XCJkcF9fdGltZV9pbnB1dFwifSxOYT1bXCJhcmlhLWxhYmVsXCIsXCJvbktleWRvd25cIixcIm9uQ2xpY2tcIl0sdmE9W1wiYXJpYS1sYWJlbFwiLFwib25LZXlkb3duXCIsXCJvbkNsaWNrXCJdLFRhPVtcImFyaWEtbGFiZWxcIixcIm9uS2V5ZG93blwiLFwib25DbGlja1wiXSxQYT17a2V5OjB9LEFhPVtcImFyaWEtbGFiZWxcIixcIm9uS2V5ZG93blwiXSxWYT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOlwiVGltZUlucHV0XCIscHJvcHM6e2hvdXJzOnt0eXBlOk51bWJlcixkZWZhdWx0OjB9LG1pbnV0ZXM6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MH0sc2Vjb25kczp7dHlwZTpOdW1iZXIsZGVmYXVsdDowfSxjbG9zZVRpbWVQaWNrZXJCdG46e3R5cGU6T2JqZWN0LGRlZmF1bHQ6bnVsbH0sb3JkZXI6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MH0sLi4uVmV9LGVtaXRzOltcInNldC1ob3Vyc1wiLFwic2V0LW1pbnV0ZXNcIixcInVwZGF0ZTpob3Vyc1wiLFwidXBkYXRlOm1pbnV0ZXNcIixcInVwZGF0ZTpzZWNvbmRzXCIsXCJyZXNldC1mbG93XCIsXCJtb3VudGVkXCIsXCJvdmVybGF5LWNsb3NlZFwiLFwiYW0tcG0tY2hhbmdlXCJdLHNldHVwKHQse2V4cG9zZTphLGVtaXQ6cn0pe2NvbnN0IG49dCx7c2V0VGltZVBpY2tlckVsZW1lbnRzOnUsc2V0VGltZVBpY2tlckJhY2tSZWY6bX09QWUoKSx7ZGVmYXVsdHM6aH09RGUobikse3RyYW5zaXRpb25OYW1lOlQsc2hvd1RyYW5zaXRpb246X309WGUoaC52YWx1ZS50cmFuc2l0aW9ucyksTj1lLnJlYWN0aXZlKHtob3VyczohMSxtaW51dGVzOiExLHNlY29uZHM6ITF9KSxZPWUucmVmKFwiQU1cIiksdj1lLnJlZihudWxsKSxmPWUucmVmKFtdKTtlLm9uTW91bnRlZCgoKT0+e3IoXCJtb3VudGVkXCIpfSk7Y29uc3QgYj1vPT5jLnNldChuZXcgRGF0ZSx7aG91cnM6by5ob3VycyxtaW51dGVzOm8ubWludXRlcyxzZWNvbmRzOm4uZW5hYmxlU2Vjb25kcz9vLnNlY29uZHM6MCxtaWxsaXNlY29uZHM6MH0pLEc9ZS5jb21wdXRlZCgoKT0+KHtob3VyczpuLmhvdXJzLG1pbnV0ZXM6bi5taW51dGVzLHNlY29uZHM6bi5zZWNvbmRzfSkpLEw9ZS5jb21wdXRlZCgoKT0+bz0+IW5lKCtuW29dKyArbltgJHtvfUluY3JlbWVudGBdLG8pKSx6PWUuY29tcHV0ZWQoKCk9Pm89PiFuZSgrbltvXS0rbltgJHtvfUluY3JlbWVudGBdLG8pKSxSPShvLGwpPT5jLmFkZChjLnNldChTKCksbyksbCksST0obyxsKT0+Yy5zdWIoYy5zZXQoUygpLG8pLGwpLFY9ZS5jb21wdXRlZCgoKT0+KHtkcF9fdGltZV9jb2w6ITAsZHBfX3RpbWVfY29sX3JlZzohbi5lbmFibGVTZWNvbmRzJiZuLmlzMjQsZHBfX3RpbWVfY29sX3JlZ193aXRoX2J1dHRvbjohbi5lbmFibGVTZWNvbmRzJiYhbi5pczI0LGRwX190aW1lX2NvbF9zZWM6bi5lbmFibGVTZWNvbmRzJiZuLmlzMjQsZHBfX3RpbWVfY29sX3NlY193aXRoX2J1dHRvbjpuLmVuYWJsZVNlY29uZHMmJiFuLmlzMjR9KSksVT1lLmNvbXB1dGVkKCgpPT57Y29uc3Qgbz1be3R5cGU6XCJob3Vyc1wifSx7dHlwZTpcIlwiLHNlcGFyYXRvcjohMH0se3R5cGU6XCJtaW51dGVzXCJ9XTtyZXR1cm4gbi5lbmFibGVTZWNvbmRzP28uY29uY2F0KFt7dHlwZTpcIlwiLHNlcGFyYXRvcjohMH0se3R5cGU6XCJzZWNvbmRzXCJ9XSk6b30pLEs9ZS5jb21wdXRlZCgoKT0+VS52YWx1ZS5maWx0ZXIobz0+IW8uc2VwYXJhdG9yKSksRj1lLmNvbXB1dGVkKCgpPT5vPT57aWYobz09PVwiaG91cnNcIil7Y29uc3QgbD1BKCtuLmhvdXJzKTtyZXR1cm57dGV4dDpsPDEwP2AwJHtsfWA6YCR7bH1gLHZhbHVlOmx9fXJldHVybnt0ZXh0Om5bb108MTA/YDAke25bb119YDpgJHtuW29dfWAsdmFsdWU6bltvXX19KSx0ZT1vPT57Y29uc3QgbD1uLmlzMjQ/MjQ6MTIsaz1vPT09XCJob3Vyc1wiP2w6NjAsTT0rbltgJHtvfUdyaWRJbmNyZW1lbnRgXSxCPW89PT1cImhvdXJzXCImJiFuLmlzMjQ/TTowLHE9W107Zm9yKGxldCBwPUI7cDxrO3ArPU0pcS5wdXNoKHt2YWx1ZTpwLHRleHQ6cDwxMD9gMCR7cH1gOmAke3B9YH0pO3JldHVybiBvPT09XCJob3Vyc1wiJiYhbi5pczI0JiZxLnB1c2goe3ZhbHVlOjAsdGV4dDpcIjEyXCJ9KSxBbihxKX0sbmU9KG8sbCk9Pntjb25zdCBrPW4ubWluVGltZT9iKGV0KG4ubWluVGltZSkpOm51bGwsTT1uLm1heFRpbWU/YihldChuLm1heFRpbWUpKTpudWxsLEI9YihldChHLnZhbHVlLGwsbykpO3JldHVybiBrJiZNPyhjLmlzQmVmb3JlKEIsTSl8fGMuaXNFcXVhbChCLE0pKSYmKGMuaXNBZnRlcihCLGspfHxjLmlzRXF1YWwoQixrKSk6az9jLmlzQWZ0ZXIoQixrKXx8Yy5pc0VxdWFsKEIsayk6TT9jLmlzQmVmb3JlKEIsTSl8fGMuaXNFcXVhbChCLE0pOiEwfSxhZT1lLmNvbXB1dGVkKCgpPT5vPT50ZShvKS5mbGF0KCkuZmlsdGVyKGs9Pmt8fChrPT1udWxsP3ZvaWQgMDprLnZhbHVlKT09PTApLm1hcChrPT5rLnZhbHVlKS5maWx0ZXIoaz0+IW5lKGssbykpKSxyZT1vPT5uW2BubyR7b1swXS50b1VwcGVyQ2FzZSgpK28uc2xpY2UoMSl9T3ZlcmxheWBdLFA9bz0+e3JlKG8pfHwoTltvXT0hTltvXSxOW29dfHxyKFwib3ZlcmxheS1jbG9zZWRcIikpfSxDPW89Pm89PT1cImhvdXJzXCI/Yy5nZXRIb3VyczpvPT09XCJtaW51dGVzXCI/Yy5nZXRNaW51dGVzOmMuZ2V0U2Vjb25kcyx5PShvLGw9ITApPT57Y29uc3Qgaz1sP1I6SSxNPWw/K25bYCR7b31JbmNyZW1lbnRgXTotK25bYCR7b31JbmNyZW1lbnRgXTtuZSgrbltvXStNLG8pJiZyKGB1cGRhdGU6JHtvfWAsQyhvKShrKHtbb106K25bb119LHtbb106K25bYCR7b31JbmNyZW1lbnRgXX0pKSl9LEE9bz0+bi5pczI0P286KG8+PTEyP1kudmFsdWU9XCJQTVwiOlkudmFsdWU9XCJBTVwiLF9uKG8pKSxFPSgpPT57WS52YWx1ZT09PVwiUE1cIj8oWS52YWx1ZT1cIkFNXCIscihcInVwZGF0ZTpob3Vyc1wiLG4uaG91cnMtMTIpKTooWS52YWx1ZT1cIlBNXCIscihcInVwZGF0ZTpob3Vyc1wiLG4uaG91cnMrMTIpKSxyKFwiYW0tcG0tY2hhbmdlXCIsWS52YWx1ZSl9LCQ9bz0+e05bb109ITB9LGc9KG8sbCxrKT0+e2lmKG8mJm4uYXJyb3dOYXZpZ2F0aW9uKXtBcnJheS5pc0FycmF5KGYudmFsdWVbbF0pP2YudmFsdWVbbF1ba109bzpmLnZhbHVlW2xdPVtvXTtjb25zdCBNPWYudmFsdWUucmVkdWNlKChCLHEpPT5xLm1hcCgocCxzKT0+Wy4uLkJbc118fFtdLHFbc11dKSxbXSk7bShuLmNsb3NlVGltZVBpY2tlckJ0biksdi52YWx1ZSYmKE1bMV09TVsxXS5jb25jYXQodi52YWx1ZSkpLHUoTSxuLm9yZGVyKX19LGQ9KG8sbCk9Pm89PT1cImhvdXJzXCImJiFuLmlzMjQ/cihgdXBkYXRlOiR7b31gLFkudmFsdWU9PT1cIlBNXCI/bCsxMjpsKTpyKGB1cGRhdGU6JHtvfWAsbCk7cmV0dXJuIGEoe29wZW5DaGlsZENtcDokfSksKG8sbCk9Pnt2YXIgaztyZXR1cm4gby5kaXNhYmxlZD9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLEJhLFsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoVS52YWx1ZSwoTSxCKT0+e3ZhciBxLHAscztyZXR1cm4gZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtrZXk6QixjbGFzczplLm5vcm1hbGl6ZUNsYXNzKFYudmFsdWUpfSxbTS5zZXBhcmF0b3I/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjB9LFtlLmNyZWF0ZVRleHRWTm9kZShcIiA6IFwiKV0sNjQpKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiYnV0dG9uXCIse3R5cGU6XCJidXR0b25cIixjbGFzczplLm5vcm1hbGl6ZUNsYXNzKHtkcF9fYnRuOiEwLGRwX19pbmNfZGVjX2J1dHRvbjohMCxkcF9faW5jX2RlY19idXR0b25fZGlzYWJsZWQ6TC52YWx1ZShNLnR5cGUpfSksXCJhcmlhLWxhYmVsXCI6KHE9ZS51bnJlZihoKS5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6cS5pbmNyZW1lbnRWYWx1ZShNLnR5cGUpLHRhYmluZGV4OlwiMFwiLG9uS2V5ZG93bjpbZS53aXRoS2V5cyhPPT55KE0udHlwZSksW1wiZW50ZXJcIl0pLGUud2l0aEtleXMoTz0+eShNLnR5cGUpLFtcInNwYWNlXCJdKV0sb25DbGljazpPPT55KE0udHlwZSkscmVmX2ZvcjohMCxyZWY6Tz0+ZyhPLEIsMCl9LFtvLiRzbG90c1tcImFycm93LXVwXCJdP2UucmVuZGVyU2xvdChvLiRzbG90cyxcImFycm93LXVwXCIse2tleTowfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksby4kc2xvdHNbXCJhcnJvdy11cFwiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoUHQpLHtrZXk6MX0pKV0sNDIsTmEpLGUuY3JlYXRlRWxlbWVudFZOb2RlKFwiYnV0dG9uXCIse3R5cGU6XCJidXR0b25cIixcImFyaWEtbGFiZWxcIjoocD1lLnVucmVmKGgpLmFyaWFMYWJlbHMpPT1udWxsP3ZvaWQgMDpwLm9wZW5UcE92ZXJsYXkoTS50eXBlKSxjbGFzczplLm5vcm1hbGl6ZUNsYXNzKFtcImRwX19idG5cIixyZShNLnR5cGUpP1wiXCI6XCJkcF9fdGltZV9kaXNwbGF5XCJdKSx0YWJpbmRleDpcIjBcIixvbktleWRvd246W2Uud2l0aEtleXMoTz0+UChNLnR5cGUpLFtcImVudGVyXCJdKSxlLndpdGhLZXlzKE89PlAoTS50eXBlKSxbXCJzcGFjZVwiXSldLG9uQ2xpY2s6Tz0+UChNLnR5cGUpLHJlZl9mb3I6ITAscmVmOk89PmcoTyxCLDEpfSxbby4kc2xvdHNbTS50eXBlXT9lLnJlbmRlclNsb3Qoby4kc2xvdHMsTS50eXBlLHtrZXk6MCx0ZXh0OkYudmFsdWUoTS50eXBlKS50ZXh0LHZhbHVlOkYudmFsdWUoTS50eXBlKS52YWx1ZX0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLG8uJHNsb3RzW00udHlwZV0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhGLnZhbHVlKE0udHlwZSkudGV4dCksMSldLDY0KSldLDQyLHZhKSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImJ1dHRvblwiLHt0eXBlOlwiYnV0dG9uXCIsY2xhc3M6ZS5ub3JtYWxpemVDbGFzcyh7ZHBfX2J0bjohMCxkcF9faW5jX2RlY19idXR0b246ITAsZHBfX2luY19kZWNfYnV0dG9uX2Rpc2FibGVkOnoudmFsdWUoTS50eXBlKX0pLFwiYXJpYS1sYWJlbFwiOihzPWUudW5yZWYoaCkuYXJpYUxhYmVscyk9PW51bGw/dm9pZCAwOnMuZGVjcmVtZW50VmFsdWUoTS50eXBlKSx0YWJpbmRleDpcIjBcIixvbktleWRvd246W2Uud2l0aEtleXMoTz0+eShNLnR5cGUsITEpLFtcImVudGVyXCJdKSxlLndpdGhLZXlzKE89PnkoTS50eXBlLCExKSxbXCJzcGFjZVwiXSldLG9uQ2xpY2s6Tz0+eShNLnR5cGUsITEpLHJlZl9mb3I6ITAscmVmOk89PmcoTyxCLDIpfSxbby4kc2xvdHNbXCJhcnJvdy1kb3duXCJdP2UucmVuZGVyU2xvdChvLiRzbG90cyxcImFycm93LWRvd25cIix7a2V5OjB9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxvLiRzbG90c1tcImFycm93LWRvd25cIl0/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEF0KSx7a2V5OjF9KSldLDQyLFRhKV0sNjQpKV0sMil9KSwxMjgpKSxvLmlzMjQ/ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIixQYSxbby4kc2xvdHNbXCJhbS1wbS1idXR0b25cIl0/ZS5yZW5kZXJTbG90KG8uJHNsb3RzLFwiYW0tcG0tYnV0dG9uXCIse2tleTowLHRvZ2dsZTpFLHZhbHVlOlkudmFsdWV9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxvLiRzbG90c1tcImFtLXBtLWJ1dHRvblwiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImJ1dHRvblwiLHtrZXk6MSxyZWZfa2V5OlwiYW1QbUJ1dHRvblwiLHJlZjp2LHR5cGU6XCJidXR0b25cIixjbGFzczpcImRwX19wbV9hbV9idXR0b25cIixyb2xlOlwiYnV0dG9uXCIsXCJhcmlhLWxhYmVsXCI6KGs9ZS51bnJlZihoKS5hcmlhTGFiZWxzKT09bnVsbD92b2lkIDA6ay5hbVBtQnV0dG9uLHRhYmluZGV4OlwiMFwiLG9uQ2xpY2s6RSxvbktleWRvd246W2Uud2l0aEtleXMoZS53aXRoTW9kaWZpZXJzKEUsW1wicHJldmVudFwiXSksW1wiZW50ZXJcIl0pLGUud2l0aEtleXMoZS53aXRoTW9kaWZpZXJzKEUsW1wicHJldmVudFwiXSksW1wic3BhY2VcIl0pXX0sZS50b0Rpc3BsYXlTdHJpbmcoWS52YWx1ZSksNDEsQWEpKV0pKSwoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoSy52YWx1ZSwoTSxCKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLlRyYW5zaXRpb24se2tleTpCLG5hbWU6ZS51bnJlZihUKShOW00udHlwZV0pLGNzczplLnVucmVmKF8pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltOW00udHlwZV0/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayh6ZSx7a2V5OjAsaXRlbXM6dGUoTS50eXBlKSxcImRpc2FibGVkLXZhbHVlc1wiOmUudW5yZWYoaCkuZmlsdGVycy50aW1lc1tNLnR5cGVdLmNvbmNhdChhZS52YWx1ZShNLnR5cGUpKSxcImVzYy1jbG9zZVwiOm8uZXNjQ2xvc2UsXCJhcmlhLWxhYmVsc1wiOmUudW5yZWYoaCkuYXJpYUxhYmVscyxcImhpZGUtbmF2aWdhdGlvblwiOm8uaGlkZU5hdmlnYXRpb24sXCJvblVwZGF0ZTptb2RlbFZhbHVlXCI6cT0+ZChNLnR5cGUscSksb25TZWxlY3RlZDpxPT5QKE0udHlwZSksb25Ub2dnbGU6cT0+UChNLnR5cGUpLG9uUmVzZXRGbG93OmxbMF18fChsWzBdPXE9Pm8uJGVtaXQoXCJyZXNldC1mbG93XCIpKSx0eXBlOk0udHlwZX0sZS5jcmVhdGVTbG90cyh7XCJidXR0b24taWNvblwiOmUud2l0aEN0eCgoKT0+W28uJHNsb3RzW1wiY2xvY2staWNvblwiXT9lLnJlbmRlclNsb3Qoby4kc2xvdHMsXCJjbG9jay1pY29uXCIse2tleTowfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksby4kc2xvdHNbXCJjbG9jay1pY29uXCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihUdCkse2tleToxfSkpXSksXzoyfSxbby4kc2xvdHNbYCR7TS50eXBlfS1vdmVybGF5LXZhbHVlYF0/e25hbWU6XCJpdGVtXCIsZm46ZS53aXRoQ3R4KCh7aXRlbTpxfSk9PltlLnJlbmRlclNsb3Qoby4kc2xvdHMsYCR7TS50eXBlfS1vdmVybGF5LXZhbHVlYCx7dGV4dDpxLnRleHQsdmFsdWU6cS52YWx1ZX0pXSksa2V5OlwiMFwifTp2b2lkIDBdKSwxMDMyLFtcIml0ZW1zXCIsXCJkaXNhYmxlZC12YWx1ZXNcIixcImVzYy1jbG9zZVwiLFwiYXJpYS1sYWJlbHNcIixcImhpZGUtbmF2aWdhdGlvblwiLFwib25VcGRhdGU6bW9kZWxWYWx1ZVwiLFwib25TZWxlY3RlZFwiLFwib25Ub2dnbGVcIixcInR5cGVcIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV0pLF86Mn0sMTAzMixbXCJuYW1lXCIsXCJjc3NcIl0pKSksMTI4KSldKSl9fX0pLEVhPVtcImFyaWEtbGFiZWxcIl0sUmE9e2NsYXNzOlwiZHBfX292ZXJsYXlfY29udGFpbmVyIGRwX19jb250YWluZXJfZmxleCBkcF9fdGltZV9waWNrZXJfb3ZlcmxheV9jb250YWluZXJcIn0sX2E9e2tleToxLGNsYXNzOlwiZHBfX292ZXJsYXlfcm93IGRwX19mbGV4X3Jvd1wifSxPYT1bXCJhcmlhLWxhYmVsXCJdLFlhPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6XCJUaW1lUGlja2VyXCIscHJvcHM6e2hvdXJzOnt0eXBlOltOdW1iZXIsQXJyYXldLGRlZmF1bHQ6MH0sbWludXRlczp7dHlwZTpbTnVtYmVyLEFycmF5XSxkZWZhdWx0OjB9LHNlY29uZHM6e3R5cGU6W051bWJlcixBcnJheV0sZGVmYXVsdDowfSxpbnRlcm5hbE1vZGVsVmFsdWU6e3R5cGU6W0RhdGUsQXJyYXldLGRlZmF1bHQ6bnVsbH0sLi4uVmV9LGVtaXRzOltcInVwZGF0ZTpob3Vyc1wiLFwidXBkYXRlOm1pbnV0ZXNcIixcInVwZGF0ZTpzZWNvbmRzXCIsXCJtb3VudFwiLFwicmVzZXQtZmxvd1wiLFwib3ZlcmxheS1vcGVuZWRcIixcIm92ZXJsYXktY2xvc2VkXCIsXCJhbS1wbS1jaGFuZ2VcIl0sc2V0dXAodCx7ZXhwb3NlOmEsZW1pdDpyfSl7Y29uc3Qgbj10LHtidWlsZE1hdHJpeDp1LHNldFRpbWVQaWNrZXI6bX09QWUoKSxoPWUudXNlU2xvdHMoKSx7aGlkZU5hdmlnYXRpb25CdXR0b25zOlQsZGVmYXVsdHM6X309RGUobikse3RyYW5zaXRpb25OYW1lOk4sc2hvd1RyYW5zaXRpb246WX09WGUoXy52YWx1ZS50cmFuc2l0aW9ucyksdj1lLnJlZihudWxsKSxmPWUucmVmKG51bGwpLGI9ZS5yZWYoW10pLEc9ZS5yZWYobnVsbCk7ZS5vbk1vdW50ZWQoKCk9PntyKFwibW91bnRcIiksIW4udGltZVBpY2tlciYmbi5hcnJvd05hdmlnYXRpb24/dShbY2Uodi52YWx1ZSldLFwidGltZVwiKTptKCEwLG4udGltZVBpY2tlcil9KTtjb25zdCBMPWUuY29tcHV0ZWQoKCk9Pm4ucmFuZ2UmJm4ubW9kZWxBdXRvP2p0KG4uaW50ZXJuYWxNb2RlbFZhbHVlKTohMCksej1lLnJlZighMSksUj1QPT4oe2hvdXJzOkFycmF5LmlzQXJyYXkobi5ob3Vycyk/bi5ob3Vyc1tQXTpuLmhvdXJzLG1pbnV0ZXM6QXJyYXkuaXNBcnJheShuLm1pbnV0ZXMpP24ubWludXRlc1tQXTpuLm1pbnV0ZXMsc2Vjb25kczpBcnJheS5pc0FycmF5KG4uc2Vjb25kcyk/bi5zZWNvbmRzW1BdOm4uc2Vjb25kc30pLEk9ZS5jb21wdXRlZCgoKT0+e2NvbnN0IFA9W107aWYobi5yYW5nZSlmb3IobGV0IEM9MDtDPDI7QysrKVAucHVzaChSKEMpKTtlbHNlIFAucHVzaChSKDApKTtyZXR1cm4gUH0pLFY9KFAsQz0hMSx5PVwiXCIpPT57Q3x8cihcInJlc2V0LWZsb3dcIiksei52YWx1ZT1QLHIoUD9cIm92ZXJsYXktb3BlbmVkXCI6XCJvdmVybGF5LWNsb3NlZFwiKSxuLmFycm93TmF2aWdhdGlvbiYmbShQKSxlLm5leHRUaWNrKCgpPT57eSE9PVwiXCImJmIudmFsdWVbMF0mJmIudmFsdWVbMF0ub3BlbkNoaWxkQ21wKHkpfSl9LFU9ZS5jb21wdXRlZCgoKT0+KHtkcF9fYnRuOiEwLGRwX19idXR0b246ITAsZHBfX2J1dHRvbl9ib3R0b206bi5hdXRvQXBwbHkmJiFuLmtlZXBBY3Rpb25Sb3d9KSksSz1PZShoLFwidGltZVBpY2tlclwiKSxGPShQLEMseSk9Pm4ucmFuZ2U/Qz09PTA/W1AsSS52YWx1ZVsxXVt5XV06W0kudmFsdWVbMF1beV0sUF06UCx0ZT1QPT57cihcInVwZGF0ZTpob3Vyc1wiLFApfSxuZT1QPT57cihcInVwZGF0ZTptaW51dGVzXCIsUCl9LGFlPVA9PntyKFwidXBkYXRlOnNlY29uZHNcIixQKX0scmU9KCk9PntHLnZhbHVlJiZuLmFycm93TmF2aWdhdGlvbiYmRy52YWx1ZS5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pfTtyZXR1cm4gYSh7dG9nZ2xlVGltZVBpY2tlcjpWfSksKFAsQyk9Pnt2YXIgeTtyZXR1cm4gZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLG51bGwsW1AudGltZVBpY2tlcj9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTplLndpdGhEaXJlY3RpdmVzKChlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiYnV0dG9uXCIse2tleTowLHR5cGU6XCJidXR0b25cIixjbGFzczplLm5vcm1hbGl6ZUNsYXNzKFUudmFsdWUpLFwiYXJpYS1sYWJlbFwiOih5PWUudW5yZWYoXykuYXJpYUxhYmVscyk9PW51bGw/dm9pZCAwOnkub3BlblRpbWVQaWNrZXIsdGFiaW5kZXg6XCIwXCIscmVmX2tleTpcIm9wZW5UaW1lUGlja2VyQnRuXCIscmVmOnYsb25LZXlkb3duOltDWzBdfHwoQ1swXT1lLndpdGhLZXlzKEE9PlYoITApLFtcImVudGVyXCJdKSksQ1sxXXx8KENbMV09ZS53aXRoS2V5cyhBPT5WKCEwKSxbXCJzcGFjZVwiXSkpXSxvbkNsaWNrOkNbMl18fChDWzJdPUE9PlYoITApKX0sW1AuJHNsb3RzW1wiY2xvY2staWNvblwiXT9lLnJlbmRlclNsb3QoUC4kc2xvdHMsXCJjbG9jay1pY29uXCIse2tleTowfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksUC4kc2xvdHNbXCJjbG9jay1pY29uXCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihUdCkse2tleToxfSkpXSw0MixFYSkpLFtbZS52U2hvdywhZS51bnJlZihUKShcInRpbWVcIildXSksZS5jcmVhdGVWTm9kZShlLlRyYW5zaXRpb24se25hbWU6ZS51bnJlZihOKSh6LnZhbHVlKSxjc3M6ZS51bnJlZihZKX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT57dmFyIEE7cmV0dXJuW3oudmFsdWV8fFAudGltZVBpY2tlcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtrZXk6MCxjbGFzczpcImRwX19vdmVybGF5XCIscmVmX2tleTpcIm92ZXJsYXlSZWZcIixyZWY6Ryx0YWJpbmRleDpcIjBcIn0sW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsUmEsW1AuJHNsb3RzW1widGltZS1waWNrZXItb3ZlcmxheVwiXT9lLnJlbmRlclNsb3QoUC4kc2xvdHMsXCJ0aW1lLXBpY2tlci1vdmVybGF5XCIse2tleTowLGhvdXJzOnQuaG91cnMsbWludXRlczp0Lm1pbnV0ZXMsc2Vjb25kczp0LnNlY29uZHMsc2V0SG91cnM6dGUsc2V0TWludXRlczpuZSxzZXRTZWNvbmRzOmFlfSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksUC4kc2xvdHNbXCJ0aW1lLXBpY2tlci1vdmVybGF5XCJdP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIsX2EsWyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChJLnZhbHVlLChFLCQpPT5lLndpdGhEaXJlY3RpdmVzKChlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soVmEsZS5tZXJnZVByb3BzKHtrZXk6JH0sey4uLlAuJHByb3BzLG9yZGVyOiQsaG91cnM6RS5ob3VycyxtaW51dGVzOkUubWludXRlcyxzZWNvbmRzOkUuc2Vjb25kcyxjbG9zZVRpbWVQaWNrZXJCdG46Zi52YWx1ZSxkaXNhYmxlZDokPT09MD9QLmZpeGVkU3RhcnQ6UC5maXhlZEVuZH0se3JlZl9mb3I6ITAscmVmX2tleTpcInRpbWVJbnB1dFJlZnNcIixyZWY6YixcIm9uVXBkYXRlOmhvdXJzXCI6Zz0+dGUoRihnLCQsXCJob3Vyc1wiKSksXCJvblVwZGF0ZTptaW51dGVzXCI6Zz0+bmUoRihnLCQsXCJtaW51dGVzXCIpKSxcIm9uVXBkYXRlOnNlY29uZHNcIjpnPT5hZShGKGcsJCxcInNlY29uZHNcIikpLG9uTW91bnRlZDpyZSxvbk92ZXJsYXlDbG9zZWQ6cmUsb25BbVBtQ2hhbmdlOkNbM118fChDWzNdPWc9PlAuJGVtaXQoXCJhbS1wbS1jaGFuZ2VcIixnKSl9KSxlLmNyZWF0ZVNsb3RzKHtfOjJ9LFtlLnJlbmRlckxpc3QoZS51bnJlZihLKSwoZyxkKT0+KHtuYW1lOmcsZm46ZS53aXRoQ3R4KG89PltlLnJlbmRlclNsb3QoUC4kc2xvdHMsZyxlLm5vcm1hbGl6ZVByb3BzKGUuZ3VhcmRSZWFjdGl2ZVByb3BzKG8pKSldKX0pKV0pLDEwNDAsW1wib25VcGRhdGU6aG91cnNcIixcIm9uVXBkYXRlOm1pbnV0ZXNcIixcIm9uVXBkYXRlOnNlY29uZHNcIl0pKSxbW2UudlNob3csJD09PTA/ITA6TC52YWx1ZV1dKSksMTI4KSldKSksUC50aW1lUGlja2VyP2UuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApOmUud2l0aERpcmVjdGl2ZXMoKGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJidXR0b25cIix7a2V5OjIsdHlwZTpcImJ1dHRvblwiLHJlZl9rZXk6XCJjbG9zZVRpbWVQaWNrZXJCdG5cIixyZWY6ZixjbGFzczplLm5vcm1hbGl6ZUNsYXNzKFUudmFsdWUpLFwiYXJpYS1sYWJlbFwiOihBPWUudW5yZWYoXykuYXJpYUxhYmVscyk9PW51bGw/dm9pZCAwOkEuY2xvc2VUaW1lUGlja2VyLHRhYmluZGV4OlwiMFwiLG9uS2V5ZG93bjpbQ1s0XXx8KENbNF09ZS53aXRoS2V5cyhFPT5WKCExKSxbXCJlbnRlclwiXSkpLENbNV18fChDWzVdPWUud2l0aEtleXMoRT0+VighMSksW1wic3BhY2VcIl0pKV0sb25DbGljazpDWzZdfHwoQ1s2XT1FPT5WKCExKSl9LFtQLiRzbG90c1tcImNhbGVuZGFyLWljb25cIl0/ZS5yZW5kZXJTbG90KFAuJHNsb3RzLFwiY2FsZW5kYXItaWNvblwiLHtrZXk6MH0pOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLFAuJHNsb3RzW1wiY2FsZW5kYXItaWNvblwiXT9lLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoSGUpLHtrZXk6MX0pKV0sNDIsT2EpKSxbW2UudlNob3csIWUudW5yZWYoVCkoXCJ0aW1lXCIpXV0pXSldLDUxMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXX0pLF86M30sOCxbXCJuYW1lXCIsXCJjc3NcIl0pXSl9fX0pLElhPSh0LGEpPT57Y29uc3R7aXNEaXNhYmxlZDpyLG1hdGNoRGF0ZTpuLGdldFdlZWtGcm9tRGF0ZTp1LGRlZmF1bHRzOm19PURlKGEpLGg9ZS5yZWYobnVsbCksVD1lLnJlZihTKCkpLF89bD0+eyFsLmN1cnJlbnQmJmEuaGlkZU9mZnNldERhdGVzfHwoaC52YWx1ZT1sLnZhbHVlKX0sTj0oKT0+e2gudmFsdWU9bnVsbH0sWT1sPT5BcnJheS5pc0FycmF5KHQudmFsdWUpJiZhLnJhbmdlJiZ0LnZhbHVlWzBdJiZoLnZhbHVlP2w/aGUoaC52YWx1ZSx0LnZhbHVlWzBdKTpnZShoLnZhbHVlLHQudmFsdWVbMF0pOiEwLHY9KGwsayk9Pntjb25zdCBNPSgpPT50LnZhbHVlP2s/dC52YWx1ZVswXXx8bnVsbDp0LnZhbHVlWzFdOm51bGwsQj10LnZhbHVlJiZBcnJheS5pc0FycmF5KHQudmFsdWUpP00oKTpudWxsO3JldHVybiBvZShTKGwudmFsdWUpLEIpfSxmPWw9Pntjb25zdCBrPUFycmF5LmlzQXJyYXkodC52YWx1ZSk/dC52YWx1ZVswXTpudWxsO3JldHVybiBsPyFnZShoLnZhbHVlfHxudWxsLGspOiEwfSxiPShsLGs9ITApPT4oYS5yYW5nZXx8YS53ZWVrUGlja2VyKSYmQXJyYXkuaXNBcnJheSh0LnZhbHVlKSYmdC52YWx1ZS5sZW5ndGg9PT0yP2EuaGlkZU9mZnNldERhdGVzJiYhbC5jdXJyZW50PyExOm9lKFMobC52YWx1ZSksdC52YWx1ZVtrPzA6MV0pOmEucmFuZ2U/dihsLGspJiZmKGspfHxvZShsLnZhbHVlLEFycmF5LmlzQXJyYXkodC52YWx1ZSk/dC52YWx1ZVswXTpudWxsKSYmWShrKTohMSxHPShsLGssTSk9PkFycmF5LmlzQXJyYXkodC52YWx1ZSkmJnQudmFsdWVbMF0mJnQudmFsdWUubGVuZ3RoPT09MT9sPyExOk0/aGUodC52YWx1ZVswXSxrLnZhbHVlKTpnZSh0LnZhbHVlWzBdLGsudmFsdWUpOiExLEw9bD0+IXQudmFsdWV8fGEuaGlkZU9mZnNldERhdGVzJiYhbC5jdXJyZW50PyExOmEucmFuZ2U/YS5tb2RlbEF1dG8mJkFycmF5LmlzQXJyYXkodC52YWx1ZSk/b2UobC52YWx1ZSx0LnZhbHVlWzBdP3QudmFsdWVbMF06VC52YWx1ZSk6ITE6YS5tdWx0aURhdGVzJiZBcnJheS5pc0FycmF5KHQudmFsdWUpP3QudmFsdWUuc29tZShrPT5vZShrLGwudmFsdWUpKTpvZShsLnZhbHVlLHQudmFsdWU/dC52YWx1ZTpULnZhbHVlKSx6PWw9PntpZihhLmF1dG9SYW5nZXx8YS53ZWVrUGlja2VyKXtpZihoLnZhbHVlKXtpZihhLmhpZGVPZmZzZXREYXRlcyYmIWwuY3VycmVudClyZXR1cm4hMTtjb25zdCBrPWMuYWRkRGF5cyhoLnZhbHVlLCthLmF1dG9SYW5nZSksTT11KFMoaC52YWx1ZSkpO3JldHVybiBhLndlZWtQaWNrZXI/b2UoTVsxXSxTKGwudmFsdWUpKTpvZShrLFMobC52YWx1ZSkpfXJldHVybiExfXJldHVybiExfSxSPWw9PntpZihhLmF1dG9SYW5nZXx8YS53ZWVrUGlja2VyKXtpZihoLnZhbHVlKXtjb25zdCBrPWMuYWRkRGF5cyhoLnZhbHVlLCthLmF1dG9SYW5nZSk7aWYoYS5oaWRlT2Zmc2V0RGF0ZXMmJiFsLmN1cnJlbnQpcmV0dXJuITE7Y29uc3QgTT11KFMoaC52YWx1ZSkpO3JldHVybiBhLndlZWtQaWNrZXI/aGUobC52YWx1ZSxNWzBdKSYmZ2UobC52YWx1ZSxNWzFdKTpoZShsLnZhbHVlLGgudmFsdWUpJiZnZShsLnZhbHVlLGspfXJldHVybiExfXJldHVybiExfSxJPWw9PntpZihhLmF1dG9SYW5nZXx8YS53ZWVrUGlja2VyKXtpZihoLnZhbHVlKXtpZihhLmhpZGVPZmZzZXREYXRlcyYmIWwuY3VycmVudClyZXR1cm4hMTtjb25zdCBrPXUoUyhoLnZhbHVlKSk7cmV0dXJuIGEud2Vla1BpY2tlcj9vZShrWzBdLGwudmFsdWUpOm9lKGgudmFsdWUsbC52YWx1ZSl9cmV0dXJuITF9cmV0dXJuITF9LFY9bD0+RXQodC52YWx1ZSxoLnZhbHVlLGwudmFsdWUpLFU9KCk9PmEubW9kZWxBdXRvJiZBcnJheS5pc0FycmF5KGEuaW50ZXJuYWxNb2RlbFZhbHVlKT8hIWEuaW50ZXJuYWxNb2RlbFZhbHVlWzBdOiExLEs9KCk9PmEubW9kZWxBdXRvP2p0KGEuaW50ZXJuYWxNb2RlbFZhbHVlKTohMCxGPWw9PntpZihBcnJheS5pc0FycmF5KHQudmFsdWUpJiZ0LnZhbHVlLmxlbmd0aHx8YS53ZWVrUGlja2VyKXJldHVybiExO2NvbnN0IGs9YS5yYW5nZT8hYihsKSYmIWIobCwhMSk6ITA7cmV0dXJuIXIobC52YWx1ZSkmJiFMKGwpJiYhKCFsLmN1cnJlbnQmJmEuaGlkZU9mZnNldERhdGVzKSYma30sdGU9bD0+YS5yYW5nZT9hLm1vZGVsQXV0bz9VKCkmJkwobCk6ITE6TChsKSxuZT1sPT5hLmhpZ2hsaWdodD9uKGwudmFsdWUsYS5oaWdobGlnaHQpOiExLGFlPWw9PnIobC52YWx1ZSkmJmEuaGlnaGxpZ2h0RGlzYWJsZWREYXlzPT09ITEscmU9bD0+YS5oaWdobGlnaHRXZWVrRGF5cyYmYS5oaWdobGlnaHRXZWVrRGF5cy5pbmNsdWRlcyhsLnZhbHVlLmdldERheSgpKSxQPWw9PihhLnJhbmdlfHxhLndlZWtQaWNrZXIpJiYoIShtLnZhbHVlLm11bHRpQ2FsZW5kYXJzPjApfHxsLmN1cnJlbnQpJiZLKCkmJiEoIWwuY3VycmVudCYmYS5oaWRlT2Zmc2V0RGF0ZXMpJiYhTChsKT9WKGwpOiExLEM9bD0+e2NvbnN0e2lzUmFuZ2VTdGFydDprLGlzUmFuZ2VFbmQ6TX09RShsKSxCPWEucmFuZ2U/a3x8TTohMTtyZXR1cm57ZHBfX2NlbGxfb2Zmc2V0OiFsLmN1cnJlbnQsZHBfX3BvaW50ZXI6IWEuZGlzYWJsZWQmJiEoIWwuY3VycmVudCYmYS5oaWRlT2Zmc2V0RGF0ZXMpJiYhcihsLnZhbHVlKSxkcF9fY2VsbF9kaXNhYmxlZDpyKGwudmFsdWUpLGRwX19jZWxsX2hpZ2hsaWdodDohYWUobCkmJihuZShsKXx8cmUobCkpJiYhdGUobCkmJiFCLGRwX19jZWxsX2hpZ2hsaWdodF9hY3RpdmU6IWFlKGwpJiYobmUobCl8fHJlKGwpKSYmdGUobCksZHBfX3RvZGF5OiFhLm5vVG9kYXkmJm9lKGwudmFsdWUsVC52YWx1ZSkmJmwuY3VycmVudH19LHk9bD0+KHtkcF9fYWN0aXZlX2RhdGU6dGUobCksZHBfX2RhdGVfaG92ZXI6RihsKX0pLEE9bD0+KHsuLi4kKGwpLC4uLmcobCksZHBfX3JhbmdlX2JldHdlZW5fd2VlazpQKGwpJiZhLndlZWtQaWNrZXJ9KSxFPWw9Pntjb25zdCBrPW0udmFsdWUubXVsdGlDYWxlbmRhcnM+MD9sLmN1cnJlbnQmJmIobCkmJksoKTpiKGwpJiZLKCksTT1tLnZhbHVlLm11bHRpQ2FsZW5kYXJzPjA/bC5jdXJyZW50JiZiKGwsITEpJiZLKCk6YihsLCExKSYmSygpO3JldHVybntpc1JhbmdlU3RhcnQ6ayxpc1JhbmdlRW5kOk19fSwkPWw9Pntjb25zdHtpc1JhbmdlU3RhcnQ6ayxpc1JhbmdlRW5kOk19PUUobCk7cmV0dXJue2RwX19yYW5nZV9zdGFydDprLGRwX19yYW5nZV9lbmQ6TSxkcF9fcmFuZ2VfYmV0d2VlbjpQKGwpJiYhYS53ZWVrUGlja2VyLGRwX19kYXRlX2hvdmVyX3N0YXJ0OkcoRihsKSxsLCEwKSxkcF9fZGF0ZV9ob3Zlcl9lbmQ6RyhGKGwpLGwsITEpfX0sZz1sPT4oey4uLiQobCksZHBfX2NlbGxfYXV0b19yYW5nZTpSKGwpLGRwX19jZWxsX2F1dG9fcmFuZ2Vfc3RhcnQ6SShsKSxkcF9fY2VsbF9hdXRvX3JhbmdlX2VuZDp6KGwpfSksZD1sPT5hLnJhbmdlP2EuYXV0b1JhbmdlP2cobCk6YS5tb2RlbEF1dG8/ey4uLnkobCksLi4uJChsKX06JChsKTphLndlZWtQaWNrZXI/QShsKTp5KGwpO3JldHVybntzZXRIb3ZlckRhdGU6XyxjbGVhckhvdmVyRGF0ZTpOLGdldERheUNsYXNzRGF0YTpsPT4oey4uLkMobCksLi4uZChsKSxbYS5kYXlDbGFzcz9hLmRheUNsYXNzKGwudmFsdWUpOlwiXCJdOiEwLFthLmNhbGVuZGFyQ2VsbENsYXNzTmFtZV06ISFhLmNhbGVuZGFyQ2VsbENsYXNzTmFtZX0pfX0seGE9W1wiaWRcIixcIm9uS2V5ZG93blwiXSxMYT17a2V5OjAsY2xhc3M6XCJkcF9fc2lkZWJhcl9sZWZ0XCJ9LHphPXtrZXk6MSxjbGFzczpcImRwX19wcmVzZXRfcmFuZ2VzXCJ9LEthPVtcIm9uQ2xpY2tcIl0sVWE9e2tleToyLGNsYXNzOlwiZHBfX3NpZGViYXJfcmlnaHRcIn0sV2E9e2tleTozLGNsYXNzOlwiZHBfX2FjdGlvbl9leHRyYVwifSxIYT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOlwiRGF0ZXBpY2tlck1lbnVcIixwcm9wczp7b3Blbk9uVG9wOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0saW50ZXJuYWxNb2RlbFZhbHVlOnt0eXBlOltEYXRlLEFycmF5XSxkZWZhdWx0Om51bGx9LC4uLlZlfSxlbWl0czpbXCJjbG9zZS1waWNrZXJcIixcInNlbGVjdC1kYXRlXCIsXCJhdXRvLWFwcGx5XCIsXCJ0aW1lLXVwZGF0ZVwiLFwiZmxvdy1zdGVwXCIsXCJ1cGRhdGUtbW9udGgteWVhclwiLFwiaW52YWxpZC1zZWxlY3RcIixcInVwZGF0ZTppbnRlcm5hbC1tb2RlbC12YWx1ZVwiLFwicmVjYWxjdWxhdGUtcG9zaXRpb25cIixcImludmFsaWQtZml4ZWQtcmFuZ2VcIixcInRvb2x0aXAtb3BlblwiLFwidG9vbHRpcC1jbG9zZVwiLFwidGltZS1waWNrZXItb3BlblwiLFwidGltZS1waWNrZXItY2xvc2VcIixcImFtLXBtLWNoYW5nZVwiLFwicmFuZ2Utc3RhcnRcIixcInJhbmdlLWVuZFwiXSxzZXR1cCh0LHtleHBvc2U6YSxlbWl0OnJ9KXtjb25zdCBuPXQsdT1lLmNvbXB1dGVkKCgpPT57Y29uc3R7b3Blbk9uVG9wOncsaW50ZXJuYWxNb2RlbFZhbHVlOngsLi4udWV9PW47cmV0dXJuIHVlfSkse3NldE1lbnVGb2N1c2VkOm0sc2V0U2hpZnRLZXk6aCxjb250cm9sOlR9PVJ0KCkse2dldENhbGVuZGFyRGF5czpfLGRlZmF1bHRzOk59PURlKG4pLFk9ZS51c2VTbG90cygpLHY9ZS5yZWYobnVsbCksZj1lLnJlYWN0aXZlKHt0aW1lUGlja2VyOiEhKCFuLmVuYWJsZVRpbWVQaWNrZXJ8fG4udGltZVBpY2tlcnx8bi5tb250aFBpY2tlciksbW9udGhZZWFySW5wdXQ6ISFuLnRpbWVQaWNrZXIsY2FsZW5kYXI6ITF9KSxiPWUucmVmKFtdKSxHPWUucmVmKFtdKSxMPWUucmVmKG51bGwpLHo9ZS5yZWYobnVsbCksUj1lLnJlZigwKSxJPWUucmVmKCExKSxWPWUucmVmKDApO2Uub25Nb3VudGVkKCgpPT57dmFyIHg7SS52YWx1ZT0hMCwhKCh4PW4ucHJlc2V0UmFuZ2VzKSE9bnVsbCYmeC5sZW5ndGgpJiYhWVtcImxlZnQtc2lkZWJhclwiXSYmIVlbXCJyaWdodC1zaWRlYmFyXCJdJiYoZWUoKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLGVlKSk7Y29uc3Qgdz1jZSh6KTtpZih3JiYhbi50ZXh0SW5wdXQmJiFuLmlubGluZSYmKG0oITApLGFlKCkpLHcpe2NvbnN0IHVlPWZlPT57bi5hbGxvd1ByZXZlbnREZWZhdWx0JiZmZS5wcmV2ZW50RGVmYXVsdCgpLGZlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLGZlLnN0b3BQcm9wYWdhdGlvbigpfTt3LmFkZEV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLHVlKSx3LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIix1ZSl9fSksZS5vblVubW91bnRlZCgoKT0+e3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsZWUpfSk7Y29uc3R7YXJyb3dSaWdodDpVLGFycm93TGVmdDpLLGFycm93RG93bjpGLGFycm93VXA6dGV9PUFlKCksbmU9dz0+e3d8fHc9PT0wP0cudmFsdWVbd10udHJpZ2dlclRyYW5zaXRpb24oQS52YWx1ZSh3KSxFLnZhbHVlKHcpKTpHLnZhbHVlLmZvckVhY2goKHgsdWUpPT54LnRyaWdnZXJUcmFuc2l0aW9uKEEudmFsdWUodWUpLEUudmFsdWUodWUpKSl9LGFlPSgpPT57Y29uc3Qgdz1jZSh6KTt3JiZ3LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSl9LHJlPSgpPT57dmFyIHc7KHc9bi5mbG93KSE9bnVsbCYmdy5sZW5ndGgmJlYudmFsdWUhPT0tMSYmKFYudmFsdWUrPTEscihcImZsb3ctc3RlcFwiLFYudmFsdWUpLEQoKSl9LFA9KCk9PntWLnZhbHVlPS0xfSx7Y2FsZW5kYXJzOkMsbW9kZWxWYWx1ZTp5LG1vbnRoOkEseWVhcjpFLHRpbWU6JCx1cGRhdGVUaW1lOmcsdXBkYXRlTW9udGhZZWFyOmQsc2VsZWN0RGF0ZTpvLGdldFdlZWtOdW06bCxtb250aFllYXJTZWxlY3Q6ayxoYW5kbGVTY3JvbGw6TSxoYW5kbGVBcnJvdzpCLGhhbmRsZVN3aXBlOnEsZ2V0TWFya2VyOnAsc2VsZWN0Q3VycmVudERhdGU6cyxwcmVzZXREYXRlUmFuZ2U6T309V24obixyLHJlLG5lLFYpLHtzZXRIb3ZlckRhdGU6WixjbGVhckhvdmVyRGF0ZTpzZSxnZXREYXlDbGFzc0RhdGE6JGV9PUlhKHksbiksSj17bW9kZWxWYWx1ZTp5LG1vbnRoOkEseWVhcjpFLHRpbWU6JCx1cGRhdGVUaW1lOmcsdXBkYXRlTW9udGhZZWFyOmQsc2VsZWN0RGF0ZTpvLHByZXNldERhdGVSYW5nZTpPLGhhbmRsZU1vbnRoWWVhckNoYW5nZTp3PT57Yi52YWx1ZVswXSYmYi52YWx1ZVswXS5oYW5kbGVNb250aFllYXJDaGFuZ2Uodyl9fTtlLndhdGNoKEMsKCk9PntuLm9wZW5PblRvcCYmc2V0VGltZW91dCgoKT0+e3IoXCJyZWNhbGN1bGF0ZS1wb3NpdGlvblwiKX0sMCl9LHtkZWVwOiEwfSk7Y29uc3QgdmU9T2UoWSxcImNhbGVuZGFyXCIpLGJlPU9lKFksXCJhY3Rpb25cIiksbWU9T2UoWSxcInRpbWVQaWNrZXJcIiksVGU9T2UoWSxcIm1vbnRoWWVhclwiKSxLZT1lLmNvbXB1dGVkKCgpPT5uLm9wZW5PblRvcD9cImRwX19hcnJvd19ib3R0b21cIjpcImRwX19hcnJvd190b3BcIiksVWU9ZS5jb21wdXRlZCgoKT0+RW4obi55ZWFyUmFuZ2Usbi5yZXZlcnNlWWVhcnMpKSxqPWUuY29tcHV0ZWQoKCk9PlJuKG4ubG9jYWxlLG4ubW9udGhOYW1lRm9ybWF0KSksZWU9KCk9Pntjb25zdCB3PWNlKHYpO3cmJihSLnZhbHVlPXcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpfSxYPWUuY29tcHV0ZWQoKCk9Pnc9Pl8oQS52YWx1ZSh3KSxFLnZhbHVlKHcpKSksSWU9ZS5jb21wdXRlZCgoKT0+Ti52YWx1ZS5tdWx0aUNhbGVuZGFycz4wP1suLi5BcnJheShOLnZhbHVlLm11bHRpQ2FsZW5kYXJzKS5rZXlzKCldOlswXSksRWU9ZS5jb21wdXRlZCgoKT0+dz0+dz09PTEpLER0PWUuY29tcHV0ZWQoKCk9Pm4ubW9udGhQaWNrZXJ8fG4udGltZVBpY2tlcnx8bi55ZWFyUGlja2VyKSxDdD1lLmNvbXB1dGVkKCgpPT4oe2RwX19tZW51X2lubmVyOiEwLGRwX19mbGV4X2Rpc3BsYXk6Ti52YWx1ZS5tdWx0aUNhbGVuZGFycz4wfSkpLEplPWUuY29tcHV0ZWQoKCk9Pih7ZHBfX2luc3RhbmNlX2NhbGVuZGFyOk4udmFsdWUubXVsdGlDYWxlbmRhcnM+MH0pKSxXZT1lLmNvbXB1dGVkKCgpPT4oe2RwX19tZW51X2Rpc2FibGVkOm4uZGlzYWJsZWQsZHBfX21lbnVfcmVhZG9ubHk6bi5yZWFkb25seX0pKSxNdD1lLmNvbXB1dGVkKCgpPT53PT5TdChYLHcpKSwkdD1lLmNvbXB1dGVkKCgpPT4oe2RwX19tZW51OiEwLGRwX19tZW51X2luZGV4OiFuLmlubGluZSxkcF9fcmVsYXRpdmU6bi5pbmxpbmUsW24ubWVudUNsYXNzTmFtZV06ISFuLm1lbnVDbGFzc05hbWV9KSksU3Q9KHcseCk9PncudmFsdWUoeCkubWFwKHVlPT4oey4uLnVlLGRheXM6dWUuZGF5cy5tYXAoZmU9PihmZS5tYXJrZXI9cChmZSksZmUuY2xhc3NEYXRhPSRlKGZlKSxmZSkpfSkpLFFlPXc9Pnt3LnN0b3BQcm9wYWdhdGlvbigpLHcuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9LFF0PSgpPT57bi5lc2NDbG9zZSYmcihcImNsb3NlLXBpY2tlclwiKX0sRnQ9KHcseD0hMSk9PntvKHcseCksbi5zcGFjZUNvbmZpcm0mJnIoXCJzZWxlY3QtZGF0ZVwiKX0sRmU9dz0+e3ZhciB4Oyh4PW4uZmxvdykhPW51bGwmJngubGVuZ3RoJiYoZlt3XT0hMCxPYmplY3Qua2V5cyhmKS5maWx0ZXIodWU9PiFmW3VlXSkubGVuZ3RofHxEKCkpfSxpPSh3LHgsdWUsZmUsLi4uQmUpPT57aWYobi5mbG93W1YudmFsdWVdPT09dyl7Y29uc3QgSD1mZT94LnZhbHVlWzBdOngudmFsdWU7SCYmSFt1ZV0oLi4uQmUpfX0sRD0oKT0+e2koXCJtb250aFwiLGIsXCJ0b2dnbGVNb250aFBpY2tlclwiLCEwLCEwKSxpKFwieWVhclwiLGIsXCJ0b2dnbGVZZWFyUGlja2VyXCIsITAsITApLGkoXCJjYWxlbmRhclwiLEwsXCJ0b2dnbGVUaW1lUGlja2VyXCIsITEsITEsITApLGkoXCJ0aW1lXCIsTCxcInRvZ2dsZVRpbWVQaWNrZXJcIiwhMSwhMCwhMCk7Y29uc3Qgdz1uLmZsb3dbVi52YWx1ZV07KHc9PT1cImhvdXJzXCJ8fHc9PT1cIm1pbnV0ZXNcInx8dz09PVwic2Vjb25kc1wiKSYmaSh3LEwsXCJ0b2dnbGVUaW1lUGlja2VyXCIsITEsITAsITAsdyl9LFc9dz0+e2lmKG4uYXJyb3dOYXZpZ2F0aW9uKXtpZih3PT09XCJ1cFwiKXJldHVybiB0ZSgpO2lmKHc9PT1cImRvd25cIilyZXR1cm4gRigpO2lmKHc9PT1cImxlZnRcIilyZXR1cm4gSygpO2lmKHc9PT1cInJpZ2h0XCIpcmV0dXJuIFUoKX1lbHNlIHc9PT1cImxlZnRcInx8dz09PVwidXBcIj9CKFwibGVmdFwiLDAsdz09PVwidXBcIik6QihcInJpZ2h0XCIsMCx3PT09XCJkb3duXCIpfSxRPXc9PntoKHcuc2hpZnRLZXkpLCFuLmRpc2FibGVNb250aFllYXJTZWxlY3QmJncuY29kZT09PVwiVGFiXCImJncudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImRwX19tZW51XCIpJiZULnZhbHVlLnNoaWZ0S2V5SW5NZW51JiYody5wcmV2ZW50RGVmYXVsdCgpLHcuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkscihcImNsb3NlLXBpY2tlclwiKSl9LGRlPSgpPT57YWUoKSxyKFwidGltZS1waWNrZXItY2xvc2VcIil9LFNlPXc9Pnt2YXIgeCx1ZSxmZSxCZSxIOyh4PUwudmFsdWUpPT1udWxsfHx4LnRvZ2dsZVRpbWVQaWNrZXIoITEsITEpLChmZT0odWU9Yi52YWx1ZSk9PW51bGw/dm9pZCAwOnVlW3ddKT09bnVsbHx8ZmUudG9nZ2xlTW9udGhQaWNrZXIoITEsITEpLChIPShCZT1iLnZhbHVlKT09bnVsbD92b2lkIDA6QmVbd10pPT1udWxsfHxILnRvZ2dsZVllYXJQaWNrZXIoITEsITEpfTtyZXR1cm4gYSh7dXBkYXRlTW9udGhZZWFyOmQsc3dpdGNoVmlldzoodyx4PTApPT57dmFyIHVlLGZlLEJlLEgsUGU7cmV0dXJuIHc9PT1cIm1vbnRoXCI/KGZlPSh1ZT1iLnZhbHVlKT09bnVsbD92b2lkIDA6dWVbeF0pPT1udWxsP3ZvaWQgMDpmZS50b2dnbGVNb250aFBpY2tlcighMSwhMCk6dz09PVwieWVhclwiPyhIPShCZT1iLnZhbHVlKT09bnVsbD92b2lkIDA6QmVbeF0pPT1udWxsP3ZvaWQgMDpILnRvZ2dsZVllYXJQaWNrZXIoITEsITApOnc9PT1cInRpbWVcIj8oUGU9TC52YWx1ZSk9PW51bGw/dm9pZCAwOlBlLnRvZ2dsZVRpbWVQaWNrZXIoITAsITEpOlNlKHgpfX0pLCh3LHgpPT57dmFyIHVlO3JldHVybiBlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5UcmFuc2l0aW9uLHthcHBlYXI6XCJcIixuYW1lOih1ZT1lLnVucmVmKE4pLnRyYW5zaXRpb25zKT09bnVsbD92b2lkIDA6dWUubWVudUFwcGVhcixjc3M6ISF3LnRyYW5zaXRpb25zfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Pnt2YXIgZmUsQmU7cmV0dXJuW2UuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse2lkOncudWlkP2BkcC1tZW51LSR7dy51aWR9YDp2b2lkIDAsdGFiaW5kZXg6XCIwXCIscmVmX2tleTpcImRwTWVudVJlZlwiLHJlZjp6LHJvbGU6XCJkaWFsb2dcIixjbGFzczplLm5vcm1hbGl6ZUNsYXNzKCR0LnZhbHVlKSxvbk1vdXNlbGVhdmU6eFsxNF18fCh4WzE0XT0oLi4uSCk9PmUudW5yZWYoc2UpJiZlLnVucmVmKHNlKSguLi5IKSksb25DbGljazpRZSxvbktleWRvd246W2Uud2l0aEtleXMoUXQsW1wiZXNjXCJdKSx4WzE1XXx8KHhbMTVdPWUud2l0aEtleXMoZS53aXRoTW9kaWZpZXJzKEg9PlcoXCJsZWZ0XCIpLFtcInByZXZlbnRcIl0pLFtcImxlZnRcIl0pKSx4WzE2XXx8KHhbMTZdPWUud2l0aEtleXMoZS53aXRoTW9kaWZpZXJzKEg9PlcoXCJ1cFwiKSxbXCJwcmV2ZW50XCJdKSxbXCJ1cFwiXSkpLHhbMTddfHwoeFsxN109ZS53aXRoS2V5cyhlLndpdGhNb2RpZmllcnMoSD0+VyhcImRvd25cIiksW1wicHJldmVudFwiXSksW1wiZG93blwiXSkpLHhbMThdfHwoeFsxOF09ZS53aXRoS2V5cyhlLndpdGhNb2RpZmllcnMoSD0+VyhcInJpZ2h0XCIpLFtcInByZXZlbnRcIl0pLFtcInJpZ2h0XCJdKSksUV19LFsody5kaXNhYmxlZHx8dy5yZWFkb25seSkmJncuaW5saW5lPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2tleTowLGNsYXNzOmUubm9ybWFsaXplQ2xhc3MoV2UudmFsdWUpfSxudWxsLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSwhdy5pbmxpbmUmJiF3LnRlbGVwb3J0Q2VudGVyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2tleToxLGNsYXNzOmUubm9ybWFsaXplQ2xhc3MoS2UudmFsdWUpfSxudWxsLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLHtjbGFzczplLm5vcm1hbGl6ZUNsYXNzKHtkcF9fbWVudV9jb250ZW50X3dyYXBwZXI6KChmZT13LnByZXNldFJhbmdlcyk9PW51bGw/dm9pZCAwOmZlLmxlbmd0aCl8fCEhdy4kc2xvdHNbXCJsZWZ0LXNpZGViYXJcIl18fCEhdy4kc2xvdHNbXCJyaWdodC1zaWRlYmFyXCJdfSl9LFt3LiRzbG90c1tcImxlZnQtc2lkZWJhclwiXT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLExhLFtlLnJlbmRlclNsb3Qody4kc2xvdHMsXCJsZWZ0LXNpZGViYXJcIixlLm5vcm1hbGl6ZVByb3BzKGUuZ3VhcmRSZWFjdGl2ZVByb3BzKEopKSldKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksKEJlPXcucHJlc2V0UmFuZ2VzKSE9bnVsbCYmQmUubGVuZ3RoPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIsemEsWyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdCh3LnByZXNldFJhbmdlcywoSCxQZSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2tleTpQZSxzdHlsZTplLm5vcm1hbGl6ZVN0eWxlKEguc3R5bGV8fHt9KSxjbGFzczpcImRwX19wcmVzZXRfcmFuZ2VcIixvbkNsaWNrOmxlPT5lLnVucmVmKE8pKEgucmFuZ2UsISFILnNsb3QpfSxbSC5zbG90P2UucmVuZGVyU2xvdCh3LiRzbG90cyxILnNsb3Qse2tleTowLHByZXNldERhdGVSYW5nZTplLnVucmVmKE8pLGxhYmVsOkgubGFiZWwscmFuZ2U6SC5yYW5nZX0pOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxbZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoSC5sYWJlbCksMSldLDY0KSldLDEyLEthKSkpLDEyOCkpXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApLGUuY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIse2NsYXNzOlwiZHBfX2luc3RhbmNlX2NhbGVuZGFyXCIscmVmX2tleTpcImNhbGVuZGFyV3JhcHBlclJlZlwiLHJlZjp2LHJvbGU6XCJkb2N1bWVudFwifSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIix7Y2xhc3M6ZS5ub3JtYWxpemVDbGFzcyhDdC52YWx1ZSl9LFsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoSWUudmFsdWUsKEgsUGUpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLHtrZXk6SCxjbGFzczplLm5vcm1hbGl6ZUNsYXNzKEplLnZhbHVlKX0sWyF3LmRpc2FibGVNb250aFllYXJTZWxlY3QmJiF3LnRpbWVQaWNrZXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhTYSxlLm1lcmdlUHJvcHMoe2tleTowLHJlZl9mb3I6ITAscmVmOmxlPT57bGUmJihiLnZhbHVlW1BlXT1sZSl9LG1vbnRoczpqLnZhbHVlLHllYXJzOlVlLnZhbHVlLG1vbnRoOmUudW5yZWYoQSkoSCkseWVhcjplLnVucmVmKEUpKEgpLGluc3RhbmNlOkgsXCJpbnRlcm5hbC1tb2RlbC12YWx1ZVwiOnQuaW50ZXJuYWxNb2RlbFZhbHVlfSx1LnZhbHVlLHtvbk1vdW50OnhbMF18fCh4WzBdPWxlPT5GZShcIm1vbnRoWWVhcklucHV0XCIpKSxvblJlc2V0RmxvdzpQLG9uVXBkYXRlTW9udGhZZWFyOmxlPT5lLnVucmVmKGQpKEgsbGUpLG9uTW9udGhZZWFyU2VsZWN0OmUudW5yZWYoayksb25PdmVybGF5Q2xvc2VkOmFlfSksZS5jcmVhdGVTbG90cyh7XzoyfSxbZS5yZW5kZXJMaXN0KGUudW5yZWYoVGUpLChsZSxKYSk9Pih7bmFtZTpsZSxmbjplLndpdGhDdHgoQnQ9PltlLnJlbmRlclNsb3Qody4kc2xvdHMsbGUsZS5ub3JtYWxpemVQcm9wcyhlLmd1YXJkUmVhY3RpdmVQcm9wcyhCdCkpKV0pfSkpXSksMTA0MCxbXCJtb250aHNcIixcInllYXJzXCIsXCJtb250aFwiLFwieWVhclwiLFwiaW5zdGFuY2VcIixcImludGVybmFsLW1vZGVsLXZhbHVlXCIsXCJvblVwZGF0ZU1vbnRoWWVhclwiLFwib25Nb250aFllYXJTZWxlY3RcIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKSxlLmNyZWF0ZVZOb2RlKG1hLGUubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMCxyZWY6bGU9PntsZSYmKEcudmFsdWVbUGVdPWxlKX0sXCJzcGVjaWZpYy1tb2RlXCI6RHQudmFsdWUsXCJnZXQtd2Vlay1udW1cIjplLnVucmVmKGwpLGluc3RhbmNlOkgsXCJtYXBwZWQtZGF0ZXNcIjpNdC52YWx1ZShIKSxtb250aDplLnVucmVmKEEpKEgpLHllYXI6ZS51bnJlZihFKShIKX0sdS52YWx1ZSx7b25TZWxlY3REYXRlOmxlPT5lLnVucmVmKG8pKGxlLCFFZS52YWx1ZShIKSksb25IYW5kbGVTcGFjZTpsZT0+RnQobGUsIUVlLnZhbHVlKEgpKSxvblNldEhvdmVyRGF0ZTp4WzFdfHwoeFsxXT1sZT0+ZS51bnJlZihaKShsZSkpLG9uSGFuZGxlU2Nyb2xsOmxlPT5lLnVucmVmKE0pKGxlLEgpLG9uSGFuZGxlU3dpcGU6bGU9PmUudW5yZWYocSkobGUsSCksb25Nb3VudDp4WzJdfHwoeFsyXT1sZT0+RmUoXCJjYWxlbmRhclwiKSksb25SZXNldEZsb3c6UCxvblRvb2x0aXBPcGVuOnhbM118fCh4WzNdPWxlPT53LiRlbWl0KFwidG9vbHRpcC1vcGVuXCIsbGUpKSxvblRvb2x0aXBDbG9zZTp4WzRdfHwoeFs0XT1sZT0+dy4kZW1pdChcInRvb2x0aXAtY2xvc2VcIixsZSkpfSksZS5jcmVhdGVTbG90cyh7XzoyfSxbZS5yZW5kZXJMaXN0KGUudW5yZWYodmUpLChsZSxKYSk9Pih7bmFtZTpsZSxmbjplLndpdGhDdHgoQnQ9PltlLnJlbmRlclNsb3Qody4kc2xvdHMsbGUsZS5ub3JtYWxpemVQcm9wcyhlLmd1YXJkUmVhY3RpdmVQcm9wcyh7Li4uQnR9KSkpXSl9KSldKSwxMDQwLFtcInNwZWNpZmljLW1vZGVcIixcImdldC13ZWVrLW51bVwiLFwiaW5zdGFuY2VcIixcIm1hcHBlZC1kYXRlc1wiLFwibW9udGhcIixcInllYXJcIixcIm9uU2VsZWN0RGF0ZVwiLFwib25IYW5kbGVTcGFjZVwiLFwib25IYW5kbGVTY3JvbGxcIixcIm9uSGFuZGxlU3dpcGVcIl0pXSwyKSkpLDEyOCkpXSwyKSxlLmNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLG51bGwsW3cuJHNsb3RzW1widGltZS1waWNrZXJcIl0/ZS5yZW5kZXJTbG90KHcuJHNsb3RzLFwidGltZS1waWNrZXJcIixlLm5vcm1hbGl6ZVByb3BzKGUubWVyZ2VQcm9wcyh7a2V5OjB9LHt0aW1lOmUudW5yZWYoJCksdXBkYXRlVGltZTplLnVucmVmKGcpfSkpKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW3cuZW5hYmxlVGltZVBpY2tlciYmIXcubW9udGhQaWNrZXImJiF3LndlZWtQaWNrZXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhZYSxlLm1lcmdlUHJvcHMoe2tleTowLHJlZl9rZXk6XCJ0aW1lUGlja2VyUmVmXCIscmVmOkwsaG91cnM6ZS51bnJlZigkKS5ob3VycyxtaW51dGVzOmUudW5yZWYoJCkubWludXRlcyxzZWNvbmRzOmUudW5yZWYoJCkuc2Vjb25kcyxcImludGVybmFsLW1vZGVsLXZhbHVlXCI6dC5pbnRlcm5hbE1vZGVsVmFsdWV9LHUudmFsdWUse29uTW91bnQ6eFs1XXx8KHhbNV09SD0+RmUoXCJ0aW1lUGlja2VyXCIpKSxcIm9uVXBkYXRlOmhvdXJzXCI6eFs2XXx8KHhbNl09SD0+ZS51bnJlZihnKShIKSksXCJvblVwZGF0ZTptaW51dGVzXCI6eFs3XXx8KHhbN109SD0+ZS51bnJlZihnKShILCExKSksXCJvblVwZGF0ZTpzZWNvbmRzXCI6eFs4XXx8KHhbOF09SD0+ZS51bnJlZihnKShILCExLCEwKSksb25SZXNldEZsb3c6UCxvbk92ZXJsYXlDbG9zZWQ6ZGUsb25PdmVybGF5T3BlbmVkOnhbOV18fCh4WzldPUg9PncuJGVtaXQoXCJ0aW1lLXBpY2tlci1vcGVuXCIsSCkpLG9uQW1QbUNoYW5nZTp4WzEwXXx8KHhbMTBdPUg9PncuJGVtaXQoXCJhbS1wbS1jaGFuZ2VcIixIKSl9KSxlLmNyZWF0ZVNsb3RzKHtfOjJ9LFtlLnJlbmRlckxpc3QoZS51bnJlZihtZSksKEgsUGUpPT4oe25hbWU6SCxmbjplLndpdGhDdHgobGU9PltlLnJlbmRlclNsb3Qody4kc2xvdHMsSCxlLm5vcm1hbGl6ZVByb3BzKGUuZ3VhcmRSZWFjdGl2ZVByb3BzKGxlKSkpXSl9KSldKSwxMDQwLFtcImhvdXJzXCIsXCJtaW51dGVzXCIsXCJzZWNvbmRzXCIsXCJpbnRlcm5hbC1tb2RlbC12YWx1ZVwiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSw2NCkpXSldLDUxMiksdy4kc2xvdHNbXCJyaWdodC1zaWRlYmFyXCJdPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIsVWEsW2UucmVuZGVyU2xvdCh3LiRzbG90cyxcInJpZ2h0LXNpZGViYXJcIixlLm5vcm1hbGl6ZVByb3BzKGUuZ3VhcmRSZWFjdGl2ZVByb3BzKEopKSldKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCksdy4kc2xvdHNbXCJhY3Rpb24tZXh0cmFcIl0/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIixXYSxbdy4kc2xvdHNbXCJhY3Rpb24tZXh0cmFcIl0/ZS5yZW5kZXJTbG90KHcuJHNsb3RzLFwiYWN0aW9uLWV4dHJhXCIse2tleTowLHNlbGVjdEN1cnJlbnREYXRlOmUudW5yZWYocyl9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZShcIlwiLCEwKV0sMiksIXcuYXV0b0FwcGx5fHx3LmtlZXBBY3Rpb25Sb3c/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhyYSxlLm1lcmdlUHJvcHMoe2tleToyLFwibWVudS1tb3VudFwiOkkudmFsdWUsXCJjYWxlbmRhci13aWR0aFwiOlIudmFsdWUsXCJpbnRlcm5hbC1tb2RlbC12YWx1ZVwiOnQuaW50ZXJuYWxNb2RlbFZhbHVlfSx1LnZhbHVlLHtvbkNsb3NlUGlja2VyOnhbMTFdfHwoeFsxMV09SD0+dy4kZW1pdChcImNsb3NlLXBpY2tlclwiKSksb25TZWxlY3REYXRlOnhbMTJdfHwoeFsxMl09SD0+dy4kZW1pdChcInNlbGVjdC1kYXRlXCIpKSxvbkludmFsaWRTZWxlY3Q6eFsxM118fCh4WzEzXT1IPT53LiRlbWl0KFwiaW52YWxpZC1zZWxlY3RcIikpLG9uU2VsZWN0Tm93OmUudW5yZWYocyl9KSxlLmNyZWF0ZVNsb3RzKHtfOjJ9LFtlLnJlbmRlckxpc3QoZS51bnJlZihiZSksKEgsUGUpPT4oe25hbWU6SCxmbjplLndpdGhDdHgobGU9PltlLnJlbmRlclNsb3Qody4kc2xvdHMsSCxlLm5vcm1hbGl6ZVByb3BzKGUuZ3VhcmRSZWFjdGl2ZVByb3BzKHsuLi5sZX0pKSldKX0pKV0pLDEwNDAsW1wibWVudS1tb3VudFwiLFwiY2FsZW5kYXItd2lkdGhcIixcImludGVybmFsLW1vZGVsLXZhbHVlXCIsXCJvblNlbGVjdE5vd1wiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsITApXSw0Mix4YSldfSksXzozfSw4LFtcIm5hbWVcIixcImNzc1wiXSl9fX0pLGphPXR5cGVvZiB3aW5kb3c8XCJ1XCI/d2luZG93OnZvaWQgMCx3dD0oKT0+e30sR2E9dD0+ZS5nZXRDdXJyZW50U2NvcGUoKT8oZS5vblNjb3BlRGlzcG9zZSh0KSwhMCk6ITEscWE9KHQsYSxyLG4pPT57aWYoIXQpcmV0dXJuIHd0O2xldCB1PXd0O2NvbnN0IG09ZS53YXRjaCgoKT0+ZS51bnJlZih0KSxUPT57dSgpLFQmJihULmFkZEV2ZW50TGlzdGVuZXIoYSxyLG4pLHU9KCk9PntULnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxyLG4pLHU9d3R9KX0se2ltbWVkaWF0ZTohMCxmbHVzaDpcInBvc3RcIn0pLGg9KCk9PnttKCksdSgpfTtyZXR1cm4gR2EoaCksaH0sWmE9KHQsYSxyLG49e30pPT57Y29uc3R7d2luZG93OnU9amEsZXZlbnQ6bT1cInBvaW50ZXJkb3duXCJ9PW47cmV0dXJuIHU/cWEodSxtLFQ9Pntjb25zdCBfPWNlKHQpLE49Y2UoYSk7IV98fCFOfHxfPT09VC50YXJnZXR8fFQuY29tcG9zZWRQYXRoKCkuaW5jbHVkZXMoXyl8fFQuY29tcG9zZWRQYXRoKCkuaW5jbHVkZXMoTil8fHIoVCl9LHtwYXNzaXZlOiEwfSk6dm9pZCAwfSxYYT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOlwiVnVlRGF0ZVBpY2tlclwiLHByb3BzOnsuLi5WZX0sZW1pdHM6W1widXBkYXRlOm1vZGVsLXZhbHVlXCIsXCJ0ZXh0LXN1Ym1pdFwiLFwiY2xvc2VkXCIsXCJjbGVhcmVkXCIsXCJvcGVuXCIsXCJmb2N1c1wiLFwiYmx1clwiLFwiaW50ZXJuYWwtbW9kZWwtY2hhbmdlXCIsXCJyZWNhbGN1bGF0ZS1wb3NpdGlvblwiLFwiZmxvdy1zdGVwXCIsXCJ1cGRhdGUtbW9udGgteWVhclwiLFwiaW52YWxpZC1zZWxlY3RcIixcImludmFsaWQtZml4ZWQtcmFuZ2VcIixcInRvb2x0aXAtb3BlblwiLFwidG9vbHRpcC1jbG9zZVwiLFwidGltZS1waWNrZXItb3BlblwiLFwidGltZS1waWNrZXItY2xvc2VcIixcImFtLXBtLWNoYW5nZVwiLFwicmFuZ2Utc3RhcnRcIixcInJhbmdlLWVuZFwiXSxzZXR1cCh0LHtleHBvc2U6YSxlbWl0OnJ9KXtjb25zdCBuPXQsdT1lLnVzZVNsb3RzKCksbT1lLnJlZighMSksaD1lLnRvUmVmKG4sXCJtb2RlbFZhbHVlXCIpLFQ9ZS50b1JlZihuLFwidGltZXpvbmVcIiksXz1lLnJlZihudWxsKSxOPWUucmVmKG51bGwpLFk9ZS5yZWYoITEpLHY9ZS5yZWYobnVsbCkse3NldE1lbnVGb2N1c2VkOmYsc2V0U2hpZnRLZXk6Yn09UnQoKSx7Y2xlYXJBcnJvd05hdjpHfT1BZSgpLHt2YWxpZGF0ZURhdGU6TCxpc1ZhbGlkVGltZTp6LGRlZmF1bHRzOlJ9PURlKG4pO2Uub25Nb3VudGVkKCgpPT57QyhuLm1vZGVsVmFsdWUpLG4uaW5saW5lfHwoYWUodi52YWx1ZSkuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLG8pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsbCkpLG4uaW5saW5lJiYobS52YWx1ZT0hMCl9KSxlLm9uVW5tb3VudGVkKCgpPT57aWYoIW4uaW5saW5lKXtjb25zdCBqPWFlKHYudmFsdWUpO2omJmoucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLG8pLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsbCl9fSk7Y29uc3QgST1PZSh1LFwiYWxsXCIsbi5wcmVzZXRSYW5nZXMpLFY9T2UodSxcImlucHV0XCIpO2Uud2F0Y2goW2gsVF0sKCk9PntDKGgudmFsdWUpfSx7ZGVlcDohMH0pO2NvbnN0e29wZW5PblRvcDpVLG1lbnVTdHlsZTpLLHJlc2V0UG9zaXRpb246RixzZXRNZW51UG9zaXRpb246dGUsc2V0SW5pdGlhbFBvc2l0aW9uOm5lLGdldFNjcm9sbGFibGVQYXJlbnQ6YWV9PUduKF8sTixyLG4pLHtpbnB1dFZhbHVlOnJlLGludGVybmFsTW9kZWxWYWx1ZTpQLHBhcnNlRXh0ZXJuYWxNb2RlbFZhbHVlOkMsZW1pdE1vZGVsVmFsdWU6eSxmb3JtYXRJbnB1dFZhbHVlOkEsY2hlY2tCZWZvcmVFbWl0OkV9PUhuKHIsbixZKSwkPWUuY29tcHV0ZWQoKCk9Pih7ZHBfX21haW46ITAsZHBfX3RoZW1lX2Rhcms6bi5kYXJrLGRwX190aGVtZV9saWdodDohbi5kYXJrLGRwX19mbGV4X2Rpc3BsYXk6bi5pbmxpbmUsZHBfX2ZsZXhfZGlzcGxheV93aXRoX2lucHV0Om4uaW5saW5lV2l0aElucHV0fSkpLGc9ZS5jb21wdXRlZCgoKT0+bi5kYXJrP1wiZHBfX3RoZW1lX2RhcmtcIjpcImRwX190aGVtZV9saWdodFwiKSxkPWUuY29tcHV0ZWQoKCk9Pm4udGVsZXBvcnQ/e3RvOnR5cGVvZiBuLnRlbGVwb3J0PT1cImJvb2xlYW5cIj9cImJvZHlcIjpuLnRlbGVwb3J0LGRpc2FibGVkOm4uaW5saW5lfTp7Y2xhc3M6XCJkcF9fb3V0ZXJfbWVudV93cmFwXCJ9KSxvPSgpPT57bS52YWx1ZSYmKG4uY2xvc2VPblNjcm9sbD9zZSgpOnRlKCkpfSxsPSgpPT57bS52YWx1ZSYmdGUoKX0saz1hc3luYygpPT57dmFyIGosZWUsWDshbi5kaXNhYmxlZCYmIW4ucmVhZG9ubHkmJihGKCksYXdhaXQgZS5uZXh0VGljaygpLG0udmFsdWU9ITAsYXdhaXQgZS5uZXh0VGljaygpLG5lKCksYXdhaXQgZS5uZXh0VGljaygpLHRlKCksZGVsZXRlIEsudmFsdWUub3BhY2l0eSwoaj1SLnZhbHVlLnRyYW5zaXRpb25zKSE9bnVsbCYmai5tZW51QXBwZWFyfHwoWD0oZWU9Xy52YWx1ZSk9PW51bGw/dm9pZCAwOmVlLiRlbCk9PW51bGx8fFguY2xhc3NMaXN0LmFkZChcImRwX19tZW51X3RyYW5zaXRpb25lZFwiKSxtLnZhbHVlJiZyKFwib3BlblwiKSxtLnZhbHVlfHxaKCksQyhuLm1vZGVsVmFsdWUpKX0sTT0oKT0+e3JlLnZhbHVlPVwiXCIsWigpLHIoXCJ1cGRhdGU6bW9kZWwtdmFsdWVcIixudWxsKSxyKFwiY2xlYXJlZFwiKSxuLmNsb3NlT25DbGVhclZhbHVlJiZzZSgpfSxCPSgpPT57Y29uc3Qgaj1QLnZhbHVlO3JldHVybiFqfHwhQXJyYXkuaXNBcnJheShqKSYmTChqKT8hMDpBcnJheS5pc0FycmF5KGopP2oubGVuZ3RoPT09MiYmTChqWzBdKSYmTChqWzFdKT8hMDpMKGpbMF0pOiExfSxxPSgpPT57RSgpJiZCKCk/KHkoKSxzZSgpKTpyKFwiaW52YWxpZC1zZWxlY3RcIixQLnZhbHVlKX0scD1qPT57cygpLHkoKSxuLmNsb3NlT25BdXRvQXBwbHkmJiFqJiZzZSgpfSxzPSgpPT57Ti52YWx1ZSYmbi50ZXh0SW5wdXQmJk4udmFsdWUuc2V0UGFyc2VkRGF0ZShQLnZhbHVlKX0sTz0oaj0hMSk9PntuLmF1dG9BcHBseSYmeihQLnZhbHVlKSYmQigpJiYobi5yYW5nZSYmQXJyYXkuaXNBcnJheShQLnZhbHVlKT8obi5wYXJ0aWFsUmFuZ2V8fFAudmFsdWUubGVuZ3RoPT09MikmJnAoaik6cChqKSl9LFo9KCk9PntuLnRleHRJbnB1dHx8KFAudmFsdWU9bnVsbCl9LHNlPSgpPT57bi5pbmxpbmV8fChtLnZhbHVlJiYobS52YWx1ZT0hMSxmKCExKSxiKCExKSxHKCkscihcImNsb3NlZFwiKSxuZSgpLHJlLnZhbHVlJiZDKGgudmFsdWUpKSxaKCkpfSwkZT0oaixlZSk9PntpZighail7UC52YWx1ZT1udWxsO3JldHVybn1QLnZhbHVlPWosZWUmJihxKCkscihcInRleHQtc3VibWl0XCIpKX0sTmU9KCk9PntuLmF1dG9BcHBseSYmeihQLnZhbHVlKSYmeSgpLHMoKX0sSj0oKT0+bS52YWx1ZT9zZSgpOmsoKSx2ZT1qPT57UC52YWx1ZT1qfSxiZT0oKT0+e24udGV4dElucHV0JiYoWS52YWx1ZT0hMCxBKCkpLHIoXCJmb2N1c1wiKX0sbWU9KCk9PntuLnRleHRJbnB1dCYmKFkudmFsdWU9ITEsQyhuLm1vZGVsVmFsdWUpKSxyKFwiYmx1clwiKX0sVGU9aj0+e18udmFsdWUmJl8udmFsdWUudXBkYXRlTW9udGhZZWFyKDAse21vbnRoOkd0KGoubW9udGgpLHllYXI6R3Qoai55ZWFyKX0pfSxLZT1qPT57QyhqfHxuLm1vZGVsVmFsdWUpfSxVZT0oaixlZSk9Pnt2YXIgWDsoWD1fLnZhbHVlKT09bnVsbHx8WC5zd2l0Y2hWaWV3KGosZWUpfTtyZXR1cm4gWmEoXyxOLG4ub25DbGlja091dHNpZGU/KCk9Pm4ub25DbGlja091dHNpZGUoQik6c2UpLGEoe2Nsb3NlTWVudTpzZSxzZWxlY3REYXRlOnEsY2xlYXJWYWx1ZTpNLG9wZW5NZW51Omssb25TY3JvbGw6byxmb3JtYXRJbnB1dFZhbHVlOkEsdXBkYXRlSW50ZXJuYWxNb2RlbFZhbHVlOnZlLHNldE1vbnRoWWVhcjpUZSxwYXJzZU1vZGVsOktlLHN3aXRjaFZpZXc6VWV9KSwoaixlZSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKFwiZGl2XCIse2NsYXNzOmUubm9ybWFsaXplQ2xhc3MoJC52YWx1ZSkscmVmX2tleTpcInBpY2tlcldyYXBwZXJSZWZcIixyZWY6dn0sW2UuY3JlYXRlVk5vZGUoZWEsZS5tZXJnZVByb3BzKHtyZWZfa2V5OlwiaW5wdXRSZWZcIixyZWY6TixcImlzLW1lbnUtb3BlblwiOm0udmFsdWUsXCJpbnB1dC12YWx1ZVwiOmUudW5yZWYocmUpLFwib25VcGRhdGU6aW5wdXRWYWx1ZVwiOmVlWzBdfHwoZWVbMF09WD0+ZS5pc1JlZihyZSk/cmUudmFsdWU9WDpudWxsKX0sai4kcHJvcHMse29uQ2xlYXI6TSxvbk9wZW46ayxvblNldElucHV0RGF0ZTokZSxvblNldEVtcHR5RGF0ZTplLnVucmVmKHkpLG9uU2VsZWN0RGF0ZTpxLG9uVG9nZ2xlOkosb25DbG9zZTpzZSxvbkZvY3VzOmJlLG9uQmx1cjptZSxvblJlYWxCbHVyOmVlWzFdfHwoZWVbMV09WD0+WS52YWx1ZT0hMSl9KSxlLmNyZWF0ZVNsb3RzKHtfOjJ9LFtlLnJlbmRlckxpc3QoZS51bnJlZihWKSwoWCxJZSk9Pih7bmFtZTpYLGZuOmUud2l0aEN0eChFZT0+W2UucmVuZGVyU2xvdChqLiRzbG90cyxYLGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHMoRWUpKSldKX0pKV0pLDEwNDAsW1wiaXMtbWVudS1vcGVuXCIsXCJpbnB1dC12YWx1ZVwiLFwib25TZXRFbXB0eURhdGVcIl0pLG0udmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnJlc29sdmVEeW5hbWljQ29tcG9uZW50KGoudGVsZXBvcnQ/ZS5UZWxlcG9ydDpcImRpdlwiKSxlLm5vcm1hbGl6ZVByb3BzKGUubWVyZ2VQcm9wcyh7a2V5OjB9LGQudmFsdWUpKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PlttLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soSGEsZS5tZXJnZVByb3BzKHtrZXk6MCxyZWZfa2V5OlwiZHBNZW51UmVmXCIscmVmOl8sY2xhc3M6Zy52YWx1ZSxzdHlsZTpqLmlubGluZT92b2lkIDA6ZS51bnJlZihLKSxcIm9wZW4tb24tdG9wXCI6ZS51bnJlZihVKX0sai4kcHJvcHMse1wiaW50ZXJuYWwtbW9kZWwtdmFsdWVcIjplLnVucmVmKFApLFwib25VcGRhdGU6aW50ZXJuYWxNb2RlbFZhbHVlXCI6ZWVbMl18fChlZVsyXT1YPT5lLmlzUmVmKFApP1AudmFsdWU9WDpudWxsKSxvbkNsb3NlUGlja2VyOnNlLG9uU2VsZWN0RGF0ZTpxLG9uQXV0b0FwcGx5Ok8sb25UaW1lVXBkYXRlOk5lLG9uRmxvd1N0ZXA6ZWVbM118fChlZVszXT1YPT5qLiRlbWl0KFwiZmxvdy1zdGVwXCIsWCkpLG9uVXBkYXRlTW9udGhZZWFyOmVlWzRdfHwoZWVbNF09WD0+ai4kZW1pdChcInVwZGF0ZS1tb250aC15ZWFyXCIsWCkpLG9uSW52YWxpZFNlbGVjdDplZVs1XXx8KGVlWzVdPVg9PmouJGVtaXQoXCJpbnZhbGlkLXNlbGVjdFwiLGUudW5yZWYoUCkpKSxvbkludmFsaWRGaXhlZFJhbmdlOmVlWzZdfHwoZWVbNl09WD0+ai4kZW1pdChcImludmFsaWQtZml4ZWQtcmFuZ2VcIixYKSksb25SZWNhbGN1bGF0ZVBvc2l0aW9uOmUudW5yZWYodGUpLG9uVG9vbHRpcE9wZW46ZWVbN118fChlZVs3XT1YPT5qLiRlbWl0KFwidG9vbHRpcC1vcGVuXCIsWCkpLG9uVG9vbHRpcENsb3NlOmVlWzhdfHwoZWVbOF09WD0+ai4kZW1pdChcInRvb2x0aXAtY2xvc2VcIixYKSksb25UaW1lUGlja2VyT3BlbjplZVs5XXx8KGVlWzldPVg9PmouJGVtaXQoXCJ0aW1lLXBpY2tlci1vcGVuXCIsWCkpLG9uVGltZVBpY2tlckNsb3NlOmVlWzEwXXx8KGVlWzEwXT1YPT5qLiRlbWl0KFwidGltZS1waWNrZXItY2xvc2VcIixYKSksb25BbVBtQ2hhbmdlOmVlWzExXXx8KGVlWzExXT1YPT5qLiRlbWl0KFwiYW0tcG0tY2hhbmdlXCIsWCkpLG9uUmFuZ2VTdGFydDplZVsxMl18fChlZVsxMl09WD0+ai4kZW1pdChcInJhbmdlLXN0YXJ0XCIsWCkpLG9uUmFuZ2VFbmQ6ZWVbMTNdfHwoZWVbMTNdPVg9PmouJGVtaXQoXCJyYW5nZS1lbmRcIixYKSl9KSxlLmNyZWF0ZVNsb3RzKHtfOjJ9LFtlLnJlbmRlckxpc3QoZS51bnJlZihJKSwoWCxJZSk9Pih7bmFtZTpYLGZuOmUud2l0aEN0eChFZT0+W2UucmVuZGVyU2xvdChqLiRzbG90cyxYLGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHMoey4uLkVlfSkpKV0pfSkpXSksMTA0MCxbXCJjbGFzc1wiLFwic3R5bGVcIixcIm9wZW4tb24tdG9wXCIsXCJpbnRlcm5hbC1tb2RlbC12YWx1ZVwiLFwib25SZWNhbGN1bGF0ZVBvc2l0aW9uXCJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCldKSxfOjN9LDE2KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoXCJcIiwhMCldLDIpKX19KSxidD0oKCk9Pntjb25zdCB0PVhhO3JldHVybiB0Lmluc3RhbGw9YT0+e2EuY29tcG9uZW50KFwiVnVlM0RhdGVQaWNrZXJcIix0KX0sdH0pKCk7cmV0dXJuIE9iamVjdC5lbnRyaWVzKE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxkZWZhdWx0OmJ0fSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOlwiTW9kdWxlXCJ9KSkpLmZvckVhY2goKFt0LGFdKT0+e3QhPT1cImRlZmF1bHRcIiYmKGJ0W3RdPWEpfSksYnR9KTtcbiIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxudmFyIHNoYXJlZCA9IHJlcXVpcmUoJ0B2dWV1c2Uvc2hhcmVkJyk7XG52YXIgdnVlRGVtaSA9IHJlcXVpcmUoJ3Z1ZS1kZW1pJyk7XG5cbmZ1bmN0aW9uIGNvbXB1dGVkQXN5bmMoZXZhbHVhdGlvbkNhbGxiYWNrLCBpbml0aWFsU3RhdGUsIG9wdGlvbnNPclJlZikge1xuICBsZXQgb3B0aW9ucztcbiAgaWYgKHZ1ZURlbWkuaXNSZWYob3B0aW9uc09yUmVmKSkge1xuICAgIG9wdGlvbnMgPSB7XG4gICAgICBldmFsdWF0aW5nOiBvcHRpb25zT3JSZWZcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zT3JSZWYgfHwge307XG4gIH1cbiAgY29uc3Qge1xuICAgIGxhenkgPSBmYWxzZSxcbiAgICBldmFsdWF0aW5nID0gdm9pZCAwLFxuICAgIG9uRXJyb3IgPSBzaGFyZWQubm9vcFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3Qgc3RhcnRlZCA9IHZ1ZURlbWkucmVmKCFsYXp5KTtcbiAgY29uc3QgY3VycmVudCA9IHZ1ZURlbWkucmVmKGluaXRpYWxTdGF0ZSk7XG4gIGxldCBjb3VudGVyID0gMDtcbiAgdnVlRGVtaS53YXRjaEVmZmVjdChhc3luYyAob25JbnZhbGlkYXRlKSA9PiB7XG4gICAgaWYgKCFzdGFydGVkLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIGNvdW50ZXIrKztcbiAgICBjb25zdCBjb3VudGVyQXRCZWdpbm5pbmcgPSBjb3VudGVyO1xuICAgIGxldCBoYXNGaW5pc2hlZCA9IGZhbHNlO1xuICAgIGlmIChldmFsdWF0aW5nKSB7XG4gICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgZXZhbHVhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGV2YWx1YXRpb25DYWxsYmFjaygoY2FuY2VsQ2FsbGJhY2spID0+IHtcbiAgICAgICAgb25JbnZhbGlkYXRlKCgpID0+IHtcbiAgICAgICAgICBpZiAoZXZhbHVhdGluZylcbiAgICAgICAgICAgIGV2YWx1YXRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICBpZiAoIWhhc0ZpbmlzaGVkKVxuICAgICAgICAgICAgY2FuY2VsQ2FsbGJhY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGlmIChjb3VudGVyQXRCZWdpbm5pbmcgPT09IGNvdW50ZXIpXG4gICAgICAgIGN1cnJlbnQudmFsdWUgPSByZXN1bHQ7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgb25FcnJvcihlKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKGV2YWx1YXRpbmcgJiYgY291bnRlckF0QmVnaW5uaW5nID09PSBjb3VudGVyKVxuICAgICAgICBldmFsdWF0aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICBoYXNGaW5pc2hlZCA9IHRydWU7XG4gICAgfVxuICB9KTtcbiAgaWYgKGxhenkpIHtcbiAgICByZXR1cm4gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgICBzdGFydGVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgIHJldHVybiBjdXJyZW50LnZhbHVlO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjdXJyZW50O1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVkSW5qZWN0KGtleSwgb3B0aW9ucywgZGVmYXVsdFNvdXJjZSwgdHJlYXREZWZhdWx0QXNGYWN0b3J5KSB7XG4gIGxldCBzb3VyY2UgPSB2dWVEZW1pLmluamVjdChrZXkpO1xuICBpZiAoZGVmYXVsdFNvdXJjZSlcbiAgICBzb3VyY2UgPSB2dWVEZW1pLmluamVjdChrZXksIGRlZmF1bHRTb3VyY2UpO1xuICBpZiAodHJlYXREZWZhdWx0QXNGYWN0b3J5KVxuICAgIHNvdXJjZSA9IHZ1ZURlbWkuaW5qZWN0KGtleSwgZGVmYXVsdFNvdXJjZSwgdHJlYXREZWZhdWx0QXNGYWN0b3J5KTtcbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICByZXR1cm4gdnVlRGVtaS5jb21wdXRlZCgoY3R4KSA9PiBvcHRpb25zKHNvdXJjZSwgY3R4KSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoe1xuICAgICAgZ2V0OiAoY3R4KSA9PiBvcHRpb25zLmdldChzb3VyY2UsIGN0eCksXG4gICAgICBzZXQ6IG9wdGlvbnMuc2V0XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgY3JlYXRlVW5yZWZGbiA9IChmbikgPT4ge1xuICByZXR1cm4gZnVuY3Rpb24oLi4uYXJncykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmdzLm1hcCgoaSkgPT4gdnVlRGVtaS51bnJlZihpKSkpO1xuICB9O1xufTtcblxuZnVuY3Rpb24gdW5yZWZFbGVtZW50KGVsUmVmKSB7XG4gIHZhciBfYTtcbiAgY29uc3QgcGxhaW4gPSB2dWVEZW1pLnVucmVmKGVsUmVmKTtcbiAgcmV0dXJuIChfYSA9IHBsYWluID09IG51bGwgPyB2b2lkIDAgOiBwbGFpbi4kZWwpICE9IG51bGwgPyBfYSA6IHBsYWluO1xufVxuXG5jb25zdCBkZWZhdWx0V2luZG93ID0gc2hhcmVkLmlzQ2xpZW50ID8gd2luZG93IDogdm9pZCAwO1xuY29uc3QgZGVmYXVsdERvY3VtZW50ID0gc2hhcmVkLmlzQ2xpZW50ID8gd2luZG93LmRvY3VtZW50IDogdm9pZCAwO1xuY29uc3QgZGVmYXVsdE5hdmlnYXRvciA9IHNoYXJlZC5pc0NsaWVudCA/IHdpbmRvdy5uYXZpZ2F0b3IgOiB2b2lkIDA7XG5jb25zdCBkZWZhdWx0TG9jYXRpb24gPSBzaGFyZWQuaXNDbGllbnQgPyB3aW5kb3cubG9jYXRpb24gOiB2b2lkIDA7XG5cbmZ1bmN0aW9uIHVzZUV2ZW50TGlzdGVuZXIoLi4uYXJncykge1xuICBsZXQgdGFyZ2V0O1xuICBsZXQgZXZlbnQ7XG4gIGxldCBsaXN0ZW5lcjtcbiAgbGV0IG9wdGlvbnM7XG4gIGlmIChzaGFyZWQuaXNTdHJpbmcoYXJnc1swXSkpIHtcbiAgICBbZXZlbnQsIGxpc3RlbmVyLCBvcHRpb25zXSA9IGFyZ3M7XG4gICAgdGFyZ2V0ID0gZGVmYXVsdFdpbmRvdztcbiAgfSBlbHNlIHtcbiAgICBbdGFyZ2V0LCBldmVudCwgbGlzdGVuZXIsIG9wdGlvbnNdID0gYXJncztcbiAgfVxuICBpZiAoIXRhcmdldClcbiAgICByZXR1cm4gc2hhcmVkLm5vb3A7XG4gIGxldCBjbGVhbnVwID0gc2hhcmVkLm5vb3A7XG4gIGNvbnN0IHN0b3BXYXRjaCA9IHZ1ZURlbWkud2F0Y2goKCkgPT4gdW5yZWZFbGVtZW50KHRhcmdldCksIChlbCkgPT4ge1xuICAgIGNsZWFudXAoKTtcbiAgICBpZiAoIWVsKVxuICAgICAgcmV0dXJuO1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgICBjbGVhbnVwID0gKCkgPT4ge1xuICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgbGlzdGVuZXIsIG9wdGlvbnMpO1xuICAgICAgY2xlYW51cCA9IHNoYXJlZC5ub29wO1xuICAgIH07XG4gIH0sIHsgaW1tZWRpYXRlOiB0cnVlLCBmbHVzaDogXCJwb3N0XCIgfSk7XG4gIGNvbnN0IHN0b3AgPSAoKSA9PiB7XG4gICAgc3RvcFdhdGNoKCk7XG4gICAgY2xlYW51cCgpO1xuICB9O1xuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2Uoc3RvcCk7XG4gIHJldHVybiBzdG9wO1xufVxuXG5mdW5jdGlvbiBvbkNsaWNrT3V0c2lkZSh0YXJnZXQsIGhhbmRsZXIsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3csIGlnbm9yZSwgY2FwdHVyZSA9IHRydWUsIGRldGVjdElmcmFtZSA9IGZhbHNlIH0gPSBvcHRpb25zO1xuICBpZiAoIXdpbmRvdylcbiAgICByZXR1cm47XG4gIGNvbnN0IHNob3VsZExpc3RlbiA9IHZ1ZURlbWkucmVmKHRydWUpO1xuICBsZXQgZmFsbGJhY2s7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50KSA9PiB7XG4gICAgd2luZG93LmNsZWFyVGltZW91dChmYWxsYmFjayk7XG4gICAgY29uc3QgZWwgPSB1bnJlZkVsZW1lbnQodGFyZ2V0KTtcbiAgICBjb25zdCBjb21wb3NlZFBhdGggPSBldmVudC5jb21wb3NlZFBhdGgoKTtcbiAgICBpZiAoIWVsIHx8IGVsID09PSBldmVudC50YXJnZXQgfHwgY29tcG9zZWRQYXRoLmluY2x1ZGVzKGVsKSB8fCAhc2hvdWxkTGlzdGVuLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIGlmIChpZ25vcmUgJiYgaWdub3JlLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmIChpZ25vcmUuc29tZSgodGFyZ2V0MikgPT4ge1xuICAgICAgICBjb25zdCBlbDIgPSB1bnJlZkVsZW1lbnQodGFyZ2V0Mik7XG4gICAgICAgIHJldHVybiBlbDIgJiYgKGV2ZW50LnRhcmdldCA9PT0gZWwyIHx8IGNvbXBvc2VkUGF0aC5pbmNsdWRlcyhlbDIpKTtcbiAgICAgIH0pKVxuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGhhbmRsZXIoZXZlbnQpO1xuICB9O1xuICBjb25zdCBjbGVhbnVwID0gW1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcImNsaWNrXCIsIGxpc3RlbmVyLCB7IHBhc3NpdmU6IHRydWUsIGNhcHR1cmUgfSksXG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwicG9pbnRlcmRvd25cIiwgKGUpID0+IHtcbiAgICAgIGNvbnN0IGVsID0gdW5yZWZFbGVtZW50KHRhcmdldCk7XG4gICAgICBzaG91bGRMaXN0ZW4udmFsdWUgPSAhIWVsICYmICFlLmNvbXBvc2VkUGF0aCgpLmluY2x1ZGVzKGVsKTtcbiAgICB9LCB7IHBhc3NpdmU6IHRydWUgfSksXG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwicG9pbnRlcnVwXCIsIChlKSA9PiB7XG4gICAgICBpZiAoZS5idXR0b24gPT09IDApIHtcbiAgICAgICAgY29uc3QgcGF0aCA9IGUuY29tcG9zZWRQYXRoKCk7XG4gICAgICAgIGUuY29tcG9zZWRQYXRoID0gKCkgPT4gcGF0aDtcbiAgICAgICAgZmFsbGJhY2sgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiBsaXN0ZW5lcihlKSwgNTApO1xuICAgICAgfVxuICAgIH0sIHsgcGFzc2l2ZTogdHJ1ZSB9KSxcbiAgICBkZXRlY3RJZnJhbWUgJiYgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwiYmx1clwiLCAoZXZlbnQpID0+IHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGNvbnN0IGVsID0gdW5yZWZFbGVtZW50KHRhcmdldCk7XG4gICAgICBpZiAoKChfYSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfYS50YWdOYW1lKSA9PT0gXCJJRlJBTUVcIiAmJiAhKGVsID09IG51bGwgPyB2b2lkIDAgOiBlbC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSkpXG4gICAgICAgIGhhbmRsZXIoZXZlbnQpO1xuICAgIH0pXG4gIF0uZmlsdGVyKEJvb2xlYW4pO1xuICBjb25zdCBzdG9wID0gKCkgPT4gY2xlYW51cC5mb3JFYWNoKChmbikgPT4gZm4oKSk7XG4gIHJldHVybiBzdG9wO1xufVxuXG52YXIgX19kZWZQcm9wJGogPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19kZWZQcm9wcyQ4ID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXM7XG52YXIgX19nZXRPd25Qcm9wRGVzY3MkOCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzO1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkbCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJGwgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSRsID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkaiA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkaihvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkaiA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJGwuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCRqKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyRsKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyRsKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJGwuY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJGooYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG52YXIgX19zcHJlYWRQcm9wcyQ4ID0gKGEsIGIpID0+IF9fZGVmUHJvcHMkOChhLCBfX2dldE93blByb3BEZXNjcyQ4KGIpKTtcbmNvbnN0IGNyZWF0ZUtleVByZWRpY2F0ZSA9IChrZXlGaWx0ZXIpID0+IHtcbiAgaWYgKHR5cGVvZiBrZXlGaWx0ZXIgPT09IFwiZnVuY3Rpb25cIilcbiAgICByZXR1cm4ga2V5RmlsdGVyO1xuICBlbHNlIGlmICh0eXBlb2Yga2V5RmlsdGVyID09PSBcInN0cmluZ1wiKVxuICAgIHJldHVybiAoZXZlbnQpID0+IGV2ZW50LmtleSA9PT0ga2V5RmlsdGVyO1xuICBlbHNlIGlmIChBcnJheS5pc0FycmF5KGtleUZpbHRlcikpXG4gICAgcmV0dXJuIChldmVudCkgPT4ga2V5RmlsdGVyLmluY2x1ZGVzKGV2ZW50LmtleSk7XG4gIGVsc2UgaWYgKGtleUZpbHRlcilcbiAgICByZXR1cm4gKCkgPT4gdHJ1ZTtcbiAgZWxzZVxuICAgIHJldHVybiAoKSA9PiBmYWxzZTtcbn07XG5mdW5jdGlvbiBvbktleVN0cm9rZShrZXksIGhhbmRsZXIsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IHRhcmdldCA9IGRlZmF1bHRXaW5kb3csIGV2ZW50TmFtZSA9IFwia2V5ZG93blwiLCBwYXNzaXZlID0gZmFsc2UgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHByZWRpY2F0ZSA9IGNyZWF0ZUtleVByZWRpY2F0ZShrZXkpO1xuICBjb25zdCBsaXN0ZW5lciA9IChlKSA9PiB7XG4gICAgaWYgKHByZWRpY2F0ZShlKSlcbiAgICAgIGhhbmRsZXIoZSk7XG4gIH07XG4gIHJldHVybiB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgZXZlbnROYW1lLCBsaXN0ZW5lciwgcGFzc2l2ZSk7XG59XG5mdW5jdGlvbiBvbktleURvd24oa2V5LCBoYW5kbGVyLCBvcHRpb25zID0ge30pIHtcbiAgcmV0dXJuIG9uS2V5U3Ryb2tlKGtleSwgaGFuZGxlciwgX19zcHJlYWRQcm9wcyQ4KF9fc3ByZWFkVmFsdWVzJGooe30sIG9wdGlvbnMpLCB7IGV2ZW50TmFtZTogXCJrZXlkb3duXCIgfSkpO1xufVxuZnVuY3Rpb24gb25LZXlQcmVzc2VkKGtleSwgaGFuZGxlciwgb3B0aW9ucyA9IHt9KSB7XG4gIHJldHVybiBvbktleVN0cm9rZShrZXksIGhhbmRsZXIsIF9fc3ByZWFkUHJvcHMkOChfX3NwcmVhZFZhbHVlcyRqKHt9LCBvcHRpb25zKSwgeyBldmVudE5hbWU6IFwia2V5cHJlc3NcIiB9KSk7XG59XG5mdW5jdGlvbiBvbktleVVwKGtleSwgaGFuZGxlciwgb3B0aW9ucyA9IHt9KSB7XG4gIHJldHVybiBvbktleVN0cm9rZShrZXksIGhhbmRsZXIsIF9fc3ByZWFkUHJvcHMkOChfX3NwcmVhZFZhbHVlcyRqKHt9LCBvcHRpb25zKSwgeyBldmVudE5hbWU6IFwia2V5dXBcIiB9KSk7XG59XG5cbmNvbnN0IERFRkFVTFRfREVMQVkgPSA1MDA7XG5mdW5jdGlvbiBvbkxvbmdQcmVzcyh0YXJnZXQsIGhhbmRsZXIsIG9wdGlvbnMpIHtcbiAgdmFyIF9hLCBfYjtcbiAgY29uc3QgZWxlbWVudFJlZiA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gdW5yZWZFbGVtZW50KHRhcmdldCkpO1xuICBsZXQgdGltZW91dCA9IG51bGw7XG4gIGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgIGlmICh0aW1lb3V0ICE9IG51bGwpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgIHRpbWVvdXQgPSBudWxsO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBvbkRvd24oZXYpIHtcbiAgICB2YXIgX2EyLCBfYjIsIF9jLCBfZDtcbiAgICBpZiAoKChfYTIgPSBvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLm1vZGlmaWVycykgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5zZWxmKSAmJiBldi50YXJnZXQgIT09IGVsZW1lbnRSZWYudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgY2xlYXIoKTtcbiAgICBpZiAoKF9iMiA9IG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMubW9kaWZpZXJzKSA9PSBudWxsID8gdm9pZCAwIDogX2IyLnByZXZlbnQpXG4gICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmICgoX2MgPSBvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLm1vZGlmaWVycykgPT0gbnVsbCA/IHZvaWQgMCA6IF9jLnN0b3ApXG4gICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiBoYW5kbGVyKGV2KSwgKF9kID0gb3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5kZWxheSkgIT0gbnVsbCA/IF9kIDogREVGQVVMVF9ERUxBWSk7XG4gIH1cbiAgY29uc3QgbGlzdGVuZXJPcHRpb25zID0ge1xuICAgIGNhcHR1cmU6IChfYSA9IG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMubW9kaWZpZXJzKSA9PSBudWxsID8gdm9pZCAwIDogX2EuY2FwdHVyZSxcbiAgICBvbmNlOiAoX2IgPSBvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLm1vZGlmaWVycykgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLm9uY2VcbiAgfTtcbiAgdXNlRXZlbnRMaXN0ZW5lcihlbGVtZW50UmVmLCBcInBvaW50ZXJkb3duXCIsIG9uRG93biwgbGlzdGVuZXJPcHRpb25zKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcihlbGVtZW50UmVmLCBcInBvaW50ZXJ1cFwiLCBjbGVhciwgbGlzdGVuZXJPcHRpb25zKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcihlbGVtZW50UmVmLCBcInBvaW50ZXJsZWF2ZVwiLCBjbGVhciwgbGlzdGVuZXJPcHRpb25zKTtcbn1cblxuY29uc3QgaXNGb2N1c2VkRWxlbWVudEVkaXRhYmxlID0gKCkgPT4ge1xuICBjb25zdCB7IGFjdGl2ZUVsZW1lbnQsIGJvZHkgfSA9IGRvY3VtZW50O1xuICBpZiAoIWFjdGl2ZUVsZW1lbnQpXG4gICAgcmV0dXJuIGZhbHNlO1xuICBpZiAoYWN0aXZlRWxlbWVudCA9PT0gYm9keSlcbiAgICByZXR1cm4gZmFsc2U7XG4gIHN3aXRjaCAoYWN0aXZlRWxlbWVudC50YWdOYW1lKSB7XG4gICAgY2FzZSBcIklOUFVUXCI6XG4gICAgY2FzZSBcIlRFWFRBUkVBXCI6XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gYWN0aXZlRWxlbWVudC5oYXNBdHRyaWJ1dGUoXCJjb250ZW50ZWRpdGFibGVcIik7XG59O1xuY29uc3QgaXNUeXBlZENoYXJWYWxpZCA9ICh7XG4gIGtleUNvZGUsXG4gIG1ldGFLZXksXG4gIGN0cmxLZXksXG4gIGFsdEtleVxufSkgPT4ge1xuICBpZiAobWV0YUtleSB8fCBjdHJsS2V5IHx8IGFsdEtleSlcbiAgICByZXR1cm4gZmFsc2U7XG4gIGlmIChrZXlDb2RlID49IDQ4ICYmIGtleUNvZGUgPD0gNTcgfHwga2V5Q29kZSA+PSA5NiAmJiBrZXlDb2RlIDw9IDEwNSlcbiAgICByZXR1cm4gdHJ1ZTtcbiAgaWYgKGtleUNvZGUgPj0gNjUgJiYga2V5Q29kZSA8PSA5MClcbiAgICByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIGZhbHNlO1xufTtcbmZ1bmN0aW9uIG9uU3RhcnRUeXBpbmcoY2FsbGJhY2ssIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IGRvY3VtZW50OiBkb2N1bWVudDIgPSBkZWZhdWx0RG9jdW1lbnQgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGtleWRvd24gPSAoZXZlbnQpID0+IHtcbiAgICAhaXNGb2N1c2VkRWxlbWVudEVkaXRhYmxlKCkgJiYgaXNUeXBlZENoYXJWYWxpZChldmVudCkgJiYgY2FsbGJhY2soZXZlbnQpO1xuICB9O1xuICBpZiAoZG9jdW1lbnQyKVxuICAgIHVzZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQyLCBcImtleWRvd25cIiwga2V5ZG93biwgeyBwYXNzaXZlOiB0cnVlIH0pO1xufVxuXG5mdW5jdGlvbiB0ZW1wbGF0ZVJlZihrZXksIGluaXRpYWxWYWx1ZSA9IG51bGwpIHtcbiAgY29uc3QgaW5zdGFuY2UgPSB2dWVEZW1pLmdldEN1cnJlbnRJbnN0YW5jZSgpO1xuICBsZXQgX3RyaWdnZXIgPSAoKSA9PiB7XG4gIH07XG4gIGNvbnN0IGVsZW1lbnQgPSB2dWVEZW1pLmN1c3RvbVJlZigodHJhY2ssIHRyaWdnZXIpID0+IHtcbiAgICBfdHJpZ2dlciA9IHRyaWdnZXI7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgdHJhY2soKTtcbiAgICAgICAgcmV0dXJuIChfYiA9IChfYSA9IGluc3RhbmNlID09IG51bGwgPyB2b2lkIDAgOiBpbnN0YW5jZS5wcm94eSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLiRyZWZzW2tleV0pICE9IG51bGwgPyBfYiA6IGluaXRpYWxWYWx1ZTtcbiAgICAgIH0sXG4gICAgICBzZXQoKSB7XG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG4gIHNoYXJlZC50cnlPbk1vdW50ZWQoX3RyaWdnZXIpO1xuICB2dWVEZW1pLm9uVXBkYXRlZChfdHJpZ2dlcik7XG4gIHJldHVybiBlbGVtZW50O1xufVxuXG5mdW5jdGlvbiB1c2VBY3RpdmVFbGVtZW50KG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3cgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGNvdW50ZXIgPSB2dWVEZW1pLnJlZigwKTtcbiAgaWYgKHdpbmRvdykge1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcImJsdXJcIiwgKCkgPT4gY291bnRlci52YWx1ZSArPSAxLCB0cnVlKTtcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJmb2N1c1wiLCAoKSA9PiBjb3VudGVyLnZhbHVlICs9IDEsIHRydWUpO1xuICB9XG4gIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICBjb3VudGVyLnZhbHVlO1xuICAgIHJldHVybiB3aW5kb3cgPT0gbnVsbCA/IHZvaWQgMCA6IHdpbmRvdy5kb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdXNlQXN5bmNRdWV1ZSh0YXNrcywgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBpbnRlcnJ1cHQgPSB0cnVlLFxuICAgIG9uRXJyb3IgPSBzaGFyZWQubm9vcCxcbiAgICBvbkZpbmlzaGVkID0gc2hhcmVkLm5vb3BcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHByb21pc2VTdGF0ZSA9IHtcbiAgICBwZW5kaW5nOiBcInBlbmRpbmdcIixcbiAgICByZWplY3RlZDogXCJyZWplY3RlZFwiLFxuICAgIGZ1bGZpbGxlZDogXCJmdWxmaWxsZWRcIlxuICB9O1xuICBjb25zdCBpbml0aWFsUmVzdWx0ID0gQXJyYXkuZnJvbShuZXcgQXJyYXkodGFza3MubGVuZ3RoKSwgKCkgPT4gKHsgc3RhdGU6IHByb21pc2VTdGF0ZS5wZW5kaW5nLCBkYXRhOiBudWxsIH0pKTtcbiAgY29uc3QgcmVzdWx0ID0gdnVlRGVtaS5yZWFjdGl2ZShpbml0aWFsUmVzdWx0KTtcbiAgY29uc3QgYWN0aXZlSW5kZXggPSB2dWVEZW1pLnJlZigtMSk7XG4gIGlmICghdGFza3MgfHwgdGFza3MubGVuZ3RoID09PSAwKSB7XG4gICAgb25GaW5pc2hlZCgpO1xuICAgIHJldHVybiB7XG4gICAgICBhY3RpdmVJbmRleCxcbiAgICAgIHJlc3VsdFxuICAgIH07XG4gIH1cbiAgZnVuY3Rpb24gdXBkYXRlUmVzdWx0KHN0YXRlLCByZXMpIHtcbiAgICBhY3RpdmVJbmRleC52YWx1ZSsrO1xuICAgIHJlc3VsdFthY3RpdmVJbmRleC52YWx1ZV0uZGF0YSA9IHJlcztcbiAgICByZXN1bHRbYWN0aXZlSW5kZXgudmFsdWVdLnN0YXRlID0gc3RhdGU7XG4gIH1cbiAgdGFza3MucmVkdWNlKChwcmV2LCBjdXJyKSA9PiB7XG4gICAgcmV0dXJuIHByZXYudGhlbigocHJldlJlcykgPT4ge1xuICAgICAgdmFyIF9hO1xuICAgICAgaWYgKCgoX2EgPSByZXN1bHRbYWN0aXZlSW5kZXgudmFsdWVdKSA9PSBudWxsID8gdm9pZCAwIDogX2Euc3RhdGUpID09PSBwcm9taXNlU3RhdGUucmVqZWN0ZWQgJiYgaW50ZXJydXB0KSB7XG4gICAgICAgIG9uRmluaXNoZWQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGN1cnIocHJldlJlcykudGhlbigoY3VycmVudFJlcykgPT4ge1xuICAgICAgICB1cGRhdGVSZXN1bHQocHJvbWlzZVN0YXRlLmZ1bGZpbGxlZCwgY3VycmVudFJlcyk7XG4gICAgICAgIGFjdGl2ZUluZGV4LnZhbHVlID09PSB0YXNrcy5sZW5ndGggLSAxICYmIG9uRmluaXNoZWQoKTtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRSZXM7XG4gICAgICB9KTtcbiAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgdXBkYXRlUmVzdWx0KHByb21pc2VTdGF0ZS5yZWplY3RlZCwgZSk7XG4gICAgICBvbkVycm9yKCk7XG4gICAgICByZXR1cm4gZTtcbiAgICB9KTtcbiAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpO1xuICByZXR1cm4ge1xuICAgIGFjdGl2ZUluZGV4LFxuICAgIHJlc3VsdFxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VBc3luY1N0YXRlKHByb21pc2UsIGluaXRpYWxTdGF0ZSwgb3B0aW9ucykge1xuICBjb25zdCB7XG4gICAgaW1tZWRpYXRlID0gdHJ1ZSxcbiAgICBkZWxheSA9IDAsXG4gICAgb25FcnJvciA9IHNoYXJlZC5ub29wLFxuICAgIHJlc2V0T25FeGVjdXRlID0gdHJ1ZSxcbiAgICBzaGFsbG93ID0gdHJ1ZVxuICB9ID0gb3B0aW9ucyAhPSBudWxsID8gb3B0aW9ucyA6IHt9O1xuICBjb25zdCBzdGF0ZSA9IHNoYWxsb3cgPyB2dWVEZW1pLnNoYWxsb3dSZWYoaW5pdGlhbFN0YXRlKSA6IHZ1ZURlbWkucmVmKGluaXRpYWxTdGF0ZSk7XG4gIGNvbnN0IGlzUmVhZHkgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IGlzTG9hZGluZyA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgZXJyb3IgPSB2dWVEZW1pLnJlZih2b2lkIDApO1xuICBhc3luYyBmdW5jdGlvbiBleGVjdXRlKGRlbGF5MiA9IDAsIC4uLmFyZ3MpIHtcbiAgICBpZiAocmVzZXRPbkV4ZWN1dGUpXG4gICAgICBzdGF0ZS52YWx1ZSA9IGluaXRpYWxTdGF0ZTtcbiAgICBlcnJvci52YWx1ZSA9IHZvaWQgMDtcbiAgICBpc1JlYWR5LnZhbHVlID0gZmFsc2U7XG4gICAgaXNMb2FkaW5nLnZhbHVlID0gdHJ1ZTtcbiAgICBpZiAoZGVsYXkyID4gMClcbiAgICAgIGF3YWl0IHNoYXJlZC5wcm9taXNlVGltZW91dChkZWxheTIpO1xuICAgIGNvbnN0IF9wcm9taXNlID0gdHlwZW9mIHByb21pc2UgPT09IFwiZnVuY3Rpb25cIiA/IHByb21pc2UoLi4uYXJncykgOiBwcm9taXNlO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgX3Byb21pc2U7XG4gICAgICBzdGF0ZS52YWx1ZSA9IGRhdGE7XG4gICAgICBpc1JlYWR5LnZhbHVlID0gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlcnJvci52YWx1ZSA9IGU7XG4gICAgICBvbkVycm9yKGUpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpc0xvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlLnZhbHVlO1xuICB9XG4gIGlmIChpbW1lZGlhdGUpXG4gICAgZXhlY3V0ZShkZWxheSk7XG4gIHJldHVybiB7XG4gICAgc3RhdGUsXG4gICAgaXNSZWFkeSxcbiAgICBpc0xvYWRpbmcsXG4gICAgZXJyb3IsXG4gICAgZXhlY3V0ZVxuICB9O1xufVxuXG5jb25zdCBkZWZhdWx0cyA9IHtcbiAgYXJyYXk6ICh2KSA9PiBKU09OLnN0cmluZ2lmeSh2KSxcbiAgb2JqZWN0OiAodikgPT4gSlNPTi5zdHJpbmdpZnkodiksXG4gIHNldDogKHYpID0+IEpTT04uc3RyaW5naWZ5KEFycmF5LmZyb20odikpLFxuICBtYXA6ICh2KSA9PiBKU09OLnN0cmluZ2lmeShPYmplY3QuZnJvbUVudHJpZXModikpLFxuICBudWxsOiAoKSA9PiBcIlwiXG59O1xuZnVuY3Rpb24gZ2V0RGVmYXVsdFNlcmlhbGl6YXRpb24odGFyZ2V0KSB7XG4gIGlmICghdGFyZ2V0KVxuICAgIHJldHVybiBkZWZhdWx0cy5udWxsO1xuICBpZiAodGFyZ2V0IGluc3RhbmNlb2YgTWFwKVxuICAgIHJldHVybiBkZWZhdWx0cy5tYXA7XG4gIGVsc2UgaWYgKHRhcmdldCBpbnN0YW5jZW9mIFNldClcbiAgICByZXR1cm4gZGVmYXVsdHMuc2V0O1xuICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkpXG4gICAgcmV0dXJuIGRlZmF1bHRzLmFycmF5O1xuICBlbHNlXG4gICAgcmV0dXJuIGRlZmF1bHRzLm9iamVjdDtcbn1cblxuZnVuY3Rpb24gdXNlQmFzZTY0KHRhcmdldCwgb3B0aW9ucykge1xuICBjb25zdCBiYXNlNjQgPSB2dWVEZW1pLnJlZihcIlwiKTtcbiAgY29uc3QgcHJvbWlzZSA9IHZ1ZURlbWkucmVmKCk7XG4gIGZ1bmN0aW9uIGV4ZWN1dGUoKSB7XG4gICAgaWYgKCFzaGFyZWQuaXNDbGllbnQpXG4gICAgICByZXR1cm47XG4gICAgcHJvbWlzZS52YWx1ZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IF90YXJnZXQgPSB2dWVEZW1pLnVucmVmKHRhcmdldCk7XG4gICAgICAgIGlmIChfdGFyZ2V0ID09IG51bGwpIHtcbiAgICAgICAgICByZXNvbHZlKFwiXCIpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBfdGFyZ2V0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgcmVzb2x2ZShibG9iVG9CYXNlNjQobmV3IEJsb2IoW190YXJnZXRdLCB7IHR5cGU6IFwidGV4dC9wbGFpblwiIH0pKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoX3RhcmdldCBpbnN0YW5jZW9mIEJsb2IpIHtcbiAgICAgICAgICByZXNvbHZlKGJsb2JUb0Jhc2U2NChfdGFyZ2V0KSk7XG4gICAgICAgIH0gZWxzZSBpZiAoX3RhcmdldCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgICAgICAgcmVzb2x2ZSh3aW5kb3cuYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLm5ldyBVaW50OEFycmF5KF90YXJnZXQpKSkpO1xuICAgICAgICB9IGVsc2UgaWYgKF90YXJnZXQgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudCkge1xuICAgICAgICAgIHJlc29sdmUoX3RhcmdldC50b0RhdGFVUkwob3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy50eXBlLCBvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLnF1YWxpdHkpKTtcbiAgICAgICAgfSBlbHNlIGlmIChfdGFyZ2V0IGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudCkge1xuICAgICAgICAgIGNvbnN0IGltZyA9IF90YXJnZXQuY2xvbmVOb2RlKGZhbHNlKTtcbiAgICAgICAgICBpbWcuY3Jvc3NPcmlnaW4gPSBcIkFub255bW91c1wiO1xuICAgICAgICAgIGltZ0xvYWRlZChpbWcpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgICAgICAgICBjYW52YXMud2lkdGggPSBpbWcud2lkdGg7XG4gICAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gaW1nLmhlaWdodDtcbiAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuICAgICAgICAgICAgcmVzb2x2ZShjYW52YXMudG9EYXRhVVJMKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMudHlwZSwgb3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5xdWFsaXR5KSk7XG4gICAgICAgICAgfSkuY2F0Y2gocmVqZWN0KTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgX3RhcmdldCA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgIGNvbnN0IF9zZXJpYWxpemVGbiA9IChvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLnNlcmlhbGl6ZXIpIHx8IGdldERlZmF1bHRTZXJpYWxpemF0aW9uKF90YXJnZXQpO1xuICAgICAgICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBfc2VyaWFsaXplRm4oX3RhcmdldCk7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoYmxvYlRvQmFzZTY0KG5ldyBCbG9iKFtzZXJpYWxpemVkXSwgeyB0eXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9KSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoXCJ0YXJnZXQgaXMgdW5zdXBwb3J0ZWQgdHlwZXNcIikpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHByb21pc2UudmFsdWUudGhlbigocmVzKSA9PiBiYXNlNjQudmFsdWUgPSByZXMpO1xuICAgIHJldHVybiBwcm9taXNlLnZhbHVlO1xuICB9XG4gIGlmICh2dWVEZW1pLmlzUmVmKHRhcmdldCkpXG4gICAgdnVlRGVtaS53YXRjaCh0YXJnZXQsIGV4ZWN1dGUsIHsgaW1tZWRpYXRlOiB0cnVlIH0pO1xuICBlbHNlXG4gICAgZXhlY3V0ZSgpO1xuICByZXR1cm4ge1xuICAgIGJhc2U2NCxcbiAgICBwcm9taXNlLFxuICAgIGV4ZWN1dGVcbiAgfTtcbn1cbmZ1bmN0aW9uIGltZ0xvYWRlZChpbWcpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBpZiAoIWltZy5jb21wbGV0ZSkge1xuICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfTtcbiAgICAgIGltZy5vbmVycm9yID0gcmVqZWN0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIGJsb2JUb0Jhc2U2NChibG9iKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgZnIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIGZyLm9ubG9hZCA9IChlKSA9PiB7XG4gICAgICByZXNvbHZlKGUudGFyZ2V0LnJlc3VsdCk7XG4gICAgfTtcbiAgICBmci5vbmVycm9yID0gcmVqZWN0O1xuICAgIGZyLnJlYWRBc0RhdGFVUkwoYmxvYik7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB1c2VCYXR0ZXJ5KHsgbmF2aWdhdG9yID0gZGVmYXVsdE5hdmlnYXRvciB9ID0ge30pIHtcbiAgY29uc3QgZXZlbnRzID0gW1wiY2hhcmdpbmdjaGFuZ2VcIiwgXCJjaGFyZ2luZ3RpbWVjaGFuZ2VcIiwgXCJkaXNjaGFyZ2luZ3RpbWVjaGFuZ2VcIiwgXCJsZXZlbGNoYW5nZVwiXTtcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSBuYXZpZ2F0b3IgJiYgXCJnZXRCYXR0ZXJ5XCIgaW4gbmF2aWdhdG9yO1xuICBjb25zdCBjaGFyZ2luZyA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgY2hhcmdpbmdUaW1lID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IGRpc2NoYXJnaW5nVGltZSA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCBsZXZlbCA9IHZ1ZURlbWkucmVmKDEpO1xuICBsZXQgYmF0dGVyeTtcbiAgZnVuY3Rpb24gdXBkYXRlQmF0dGVyeUluZm8oKSB7XG4gICAgY2hhcmdpbmcudmFsdWUgPSB0aGlzLmNoYXJnaW5nO1xuICAgIGNoYXJnaW5nVGltZS52YWx1ZSA9IHRoaXMuY2hhcmdpbmdUaW1lIHx8IDA7XG4gICAgZGlzY2hhcmdpbmdUaW1lLnZhbHVlID0gdGhpcy5kaXNjaGFyZ2luZ1RpbWUgfHwgMDtcbiAgICBsZXZlbC52YWx1ZSA9IHRoaXMubGV2ZWw7XG4gIH1cbiAgaWYgKGlzU3VwcG9ydGVkKSB7XG4gICAgbmF2aWdhdG9yLmdldEJhdHRlcnkoKS50aGVuKChfYmF0dGVyeSkgPT4ge1xuICAgICAgYmF0dGVyeSA9IF9iYXR0ZXJ5O1xuICAgICAgdXBkYXRlQmF0dGVyeUluZm8uY2FsbChiYXR0ZXJ5KTtcbiAgICAgIGZvciAoY29uc3QgZXZlbnQgb2YgZXZlbnRzKVxuICAgICAgICB1c2VFdmVudExpc3RlbmVyKGJhdHRlcnksIGV2ZW50LCB1cGRhdGVCYXR0ZXJ5SW5mbywgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgY2hhcmdpbmcsXG4gICAgY2hhcmdpbmdUaW1lLFxuICAgIGRpc2NoYXJnaW5nVGltZSxcbiAgICBsZXZlbFxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VCbHVldG9vdGgob3B0aW9ucykge1xuICBsZXQge1xuICAgIGFjY2VwdEFsbERldmljZXMgPSBmYWxzZVxuICB9ID0gb3B0aW9ucyB8fCB7fTtcbiAgY29uc3Qge1xuICAgIGZpbHRlcnMgPSB2b2lkIDAsXG4gICAgb3B0aW9uYWxTZXJ2aWNlcyA9IHZvaWQgMCxcbiAgICBuYXZpZ2F0b3IgPSBkZWZhdWx0TmF2aWdhdG9yXG4gIH0gPSBvcHRpb25zIHx8IHt9O1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IG5hdmlnYXRvciAmJiBcImJsdWV0b290aFwiIGluIG5hdmlnYXRvcjtcbiAgY29uc3QgZGV2aWNlID0gdnVlRGVtaS5yZWYodm9pZCAwKTtcbiAgY29uc3QgZXJyb3IgPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgdnVlRGVtaS53YXRjaChkZXZpY2UsICgpID0+IHtcbiAgICBjb25uZWN0VG9CbHVldG9vdGhHQVRUU2VydmVyKCk7XG4gIH0pO1xuICBhc3luYyBmdW5jdGlvbiByZXF1ZXN0RGV2aWNlKCkge1xuICAgIGlmICghaXNTdXBwb3J0ZWQpXG4gICAgICByZXR1cm47XG4gICAgZXJyb3IudmFsdWUgPSBudWxsO1xuICAgIGlmIChmaWx0ZXJzICYmIGZpbHRlcnMubGVuZ3RoID4gMClcbiAgICAgIGFjY2VwdEFsbERldmljZXMgPSBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgZGV2aWNlLnZhbHVlID0gYXdhaXQgKG5hdmlnYXRvciA9PSBudWxsID8gdm9pZCAwIDogbmF2aWdhdG9yLmJsdWV0b290aC5yZXF1ZXN0RGV2aWNlKHtcbiAgICAgICAgYWNjZXB0QWxsRGV2aWNlcyxcbiAgICAgICAgZmlsdGVycyxcbiAgICAgICAgb3B0aW9uYWxTZXJ2aWNlc1xuICAgICAgfSkpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZXJyb3IudmFsdWUgPSBlcnI7XG4gICAgfVxuICB9XG4gIGNvbnN0IHNlcnZlciA9IHZ1ZURlbWkucmVmKCk7XG4gIGNvbnN0IGlzQ29ubmVjdGVkID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIHJldHVybiAoKF9hID0gc2VydmVyLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuY29ubmVjdGVkKSB8fCBmYWxzZTtcbiAgfSk7XG4gIGFzeW5jIGZ1bmN0aW9uIGNvbm5lY3RUb0JsdWV0b290aEdBVFRTZXJ2ZXIoKSB7XG4gICAgZXJyb3IudmFsdWUgPSBudWxsO1xuICAgIGlmIChkZXZpY2UudmFsdWUgJiYgZGV2aWNlLnZhbHVlLmdhdHQpIHtcbiAgICAgIGRldmljZS52YWx1ZS5hZGRFdmVudExpc3RlbmVyKFwiZ2F0dHNlcnZlcmRpc2Nvbm5lY3RlZFwiLCAoKSA9PiB7XG4gICAgICB9KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNlcnZlci52YWx1ZSA9IGF3YWl0IGRldmljZS52YWx1ZS5nYXR0LmNvbm5lY3QoKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBlcnJvci52YWx1ZSA9IGVycjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgc2hhcmVkLnRyeU9uTW91bnRlZCgoKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIGlmIChkZXZpY2UudmFsdWUpXG4gICAgICAoX2EgPSBkZXZpY2UudmFsdWUuZ2F0dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNvbm5lY3QoKTtcbiAgfSk7XG4gIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZSgoKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIGlmIChkZXZpY2UudmFsdWUpXG4gICAgICAoX2EgPSBkZXZpY2UudmFsdWUuZ2F0dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmRpc2Nvbm5lY3QoKTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgaXNDb25uZWN0ZWQsXG4gICAgZGV2aWNlLFxuICAgIHJlcXVlc3REZXZpY2UsXG4gICAgc2VydmVyLFxuICAgIGVycm9yXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZU1lZGlhUXVlcnkocXVlcnksIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IHdpbmRvdyA9IGRlZmF1bHRXaW5kb3cgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gQm9vbGVhbih3aW5kb3cgJiYgXCJtYXRjaE1lZGlhXCIgaW4gd2luZG93ICYmIHR5cGVvZiB3aW5kb3cubWF0Y2hNZWRpYSA9PT0gXCJmdW5jdGlvblwiKTtcbiAgbGV0IG1lZGlhUXVlcnk7XG4gIGNvbnN0IG1hdGNoZXMgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IHVwZGF0ZSA9ICgpID0+IHtcbiAgICBpZiAoIWlzU3VwcG9ydGVkKVxuICAgICAgcmV0dXJuO1xuICAgIGlmICghbWVkaWFRdWVyeSlcbiAgICAgIG1lZGlhUXVlcnkgPSB3aW5kb3cubWF0Y2hNZWRpYShxdWVyeSk7XG4gICAgbWF0Y2hlcy52YWx1ZSA9IG1lZGlhUXVlcnkubWF0Y2hlcztcbiAgfTtcbiAgc2hhcmVkLnRyeU9uQmVmb3JlTW91bnQoKCkgPT4ge1xuICAgIHVwZGF0ZSgpO1xuICAgIGlmICghbWVkaWFRdWVyeSlcbiAgICAgIHJldHVybjtcbiAgICBpZiAoXCJhZGRFdmVudExpc3RlbmVyXCIgaW4gbWVkaWFRdWVyeSlcbiAgICAgIG1lZGlhUXVlcnkuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCB1cGRhdGUpO1xuICAgIGVsc2VcbiAgICAgIG1lZGlhUXVlcnkuYWRkTGlzdGVuZXIodXBkYXRlKTtcbiAgICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UoKCkgPT4ge1xuICAgICAgaWYgKFwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiIGluIG1lZGlhUXVlcnkpXG4gICAgICAgIG1lZGlhUXVlcnkucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCB1cGRhdGUpO1xuICAgICAgZWxzZVxuICAgICAgICBtZWRpYVF1ZXJ5LnJlbW92ZUxpc3RlbmVyKHVwZGF0ZSk7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gbWF0Y2hlcztcbn1cblxuY29uc3QgYnJlYWtwb2ludHNUYWlsd2luZCA9IHtcbiAgXCJzbVwiOiA2NDAsXG4gIFwibWRcIjogNzY4LFxuICBcImxnXCI6IDEwMjQsXG4gIFwieGxcIjogMTI4MCxcbiAgXCIyeGxcIjogMTUzNlxufTtcbmNvbnN0IGJyZWFrcG9pbnRzQm9vdHN0cmFwVjUgPSB7XG4gIHNtOiA1NzYsXG4gIG1kOiA3NjgsXG4gIGxnOiA5OTIsXG4gIHhsOiAxMjAwLFxuICB4eGw6IDE0MDBcbn07XG5jb25zdCBicmVha3BvaW50c1Z1ZXRpZnkgPSB7XG4gIHhzOiA2MDAsXG4gIHNtOiA5NjAsXG4gIG1kOiAxMjY0LFxuICBsZzogMTkwNFxufTtcbmNvbnN0IGJyZWFrcG9pbnRzQW50RGVzaWduID0ge1xuICB4czogNDgwLFxuICBzbTogNTc2LFxuICBtZDogNzY4LFxuICBsZzogOTkyLFxuICB4bDogMTIwMCxcbiAgeHhsOiAxNjAwXG59O1xuY29uc3QgYnJlYWtwb2ludHNRdWFzYXIgPSB7XG4gIHhzOiA2MDAsXG4gIHNtOiAxMDI0LFxuICBtZDogMTQ0MCxcbiAgbGc6IDE5MjBcbn07XG5jb25zdCBicmVha3BvaW50c1NlbWF0aWMgPSB7XG4gIG1vYmlsZVM6IDMyMCxcbiAgbW9iaWxlTTogMzc1LFxuICBtb2JpbGVMOiA0MjUsXG4gIHRhYmxldDogNzY4LFxuICBsYXB0b3A6IDEwMjQsXG4gIGxhcHRvcEw6IDE0NDAsXG4gIGRlc2t0b3A0SzogMjU2MFxufTtcblxudmFyIF9fZGVmUHJvcCRpID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkayA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJGsgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSRrID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkaSA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkaShvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkaSA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJGsuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCRpKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyRrKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyRrKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJGsuY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJGkoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG5mdW5jdGlvbiB1c2VCcmVha3BvaW50cyhicmVha3BvaW50cywgb3B0aW9ucyA9IHt9KSB7XG4gIGZ1bmN0aW9uIGdldFZhbHVlKGssIGRlbHRhKSB7XG4gICAgbGV0IHYgPSBicmVha3BvaW50c1trXTtcbiAgICBpZiAoZGVsdGEgIT0gbnVsbClcbiAgICAgIHYgPSBzaGFyZWQuaW5jcmVhc2VXaXRoVW5pdCh2LCBkZWx0YSk7XG4gICAgaWYgKHR5cGVvZiB2ID09PSBcIm51bWJlclwiKVxuICAgICAgdiA9IGAke3Z9cHhgO1xuICAgIHJldHVybiB2O1xuICB9XG4gIGNvbnN0IHsgd2luZG93ID0gZGVmYXVsdFdpbmRvdyB9ID0gb3B0aW9ucztcbiAgZnVuY3Rpb24gbWF0Y2gocXVlcnkpIHtcbiAgICBpZiAoIXdpbmRvdylcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gd2luZG93Lm1hdGNoTWVkaWEocXVlcnkpLm1hdGNoZXM7XG4gIH1cbiAgY29uc3QgZ3JlYXRlciA9IChrKSA9PiB7XG4gICAgcmV0dXJuIHVzZU1lZGlhUXVlcnkoYChtaW4td2lkdGg6ICR7Z2V0VmFsdWUoayl9KWAsIG9wdGlvbnMpO1xuICB9O1xuICBjb25zdCBzaG9ydGN1dE1ldGhvZHMgPSBPYmplY3Qua2V5cyhicmVha3BvaW50cykucmVkdWNlKChzaG9ydGN1dHMsIGspID0+IHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc2hvcnRjdXRzLCBrLCB7XG4gICAgICBnZXQ6ICgpID0+IGdyZWF0ZXIoayksXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIHNob3J0Y3V0cztcbiAgfSwge30pO1xuICByZXR1cm4gX19zcHJlYWRWYWx1ZXMkaSh7XG4gICAgZ3JlYXRlcixcbiAgICBzbWFsbGVyKGspIHtcbiAgICAgIHJldHVybiB1c2VNZWRpYVF1ZXJ5KGAobWF4LXdpZHRoOiAke2dldFZhbHVlKGssIC0wLjEpfSlgLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGJldHdlZW4oYSwgYikge1xuICAgICAgcmV0dXJuIHVzZU1lZGlhUXVlcnkoYChtaW4td2lkdGg6ICR7Z2V0VmFsdWUoYSl9KSBhbmQgKG1heC13aWR0aDogJHtnZXRWYWx1ZShiLCAtMC4xKX0pYCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBpc0dyZWF0ZXIoaykge1xuICAgICAgcmV0dXJuIG1hdGNoKGAobWluLXdpZHRoOiAke2dldFZhbHVlKGspfSlgKTtcbiAgICB9LFxuICAgIGlzU21hbGxlcihrKSB7XG4gICAgICByZXR1cm4gbWF0Y2goYChtYXgtd2lkdGg6ICR7Z2V0VmFsdWUoaywgLTAuMSl9KWApO1xuICAgIH0sXG4gICAgaXNJbkJldHdlZW4oYSwgYikge1xuICAgICAgcmV0dXJuIG1hdGNoKGAobWluLXdpZHRoOiAke2dldFZhbHVlKGEpfSkgYW5kIChtYXgtd2lkdGg6ICR7Z2V0VmFsdWUoYiwgLTAuMSl9KWApO1xuICAgIH1cbiAgfSwgc2hvcnRjdXRNZXRob2RzKTtcbn1cblxuY29uc3QgdXNlQnJvYWRjYXN0Q2hhbm5lbCA9IChvcHRpb25zKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBuYW1lLFxuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3dcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gd2luZG93ICYmIFwiQnJvYWRjYXN0Q2hhbm5lbFwiIGluIHdpbmRvdztcbiAgY29uc3QgaXNDbG9zZWQgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IGNoYW5uZWwgPSB2dWVEZW1pLnJlZigpO1xuICBjb25zdCBkYXRhID0gdnVlRGVtaS5yZWYoKTtcbiAgY29uc3QgZXJyb3IgPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgY29uc3QgcG9zdCA9IChkYXRhMikgPT4ge1xuICAgIGlmIChjaGFubmVsLnZhbHVlKVxuICAgICAgY2hhbm5lbC52YWx1ZS5wb3N0TWVzc2FnZShkYXRhMik7XG4gIH07XG4gIGNvbnN0IGNsb3NlID0gKCkgPT4ge1xuICAgIGlmIChjaGFubmVsLnZhbHVlKVxuICAgICAgY2hhbm5lbC52YWx1ZS5jbG9zZSgpO1xuICAgIGlzQ2xvc2VkLnZhbHVlID0gdHJ1ZTtcbiAgfTtcbiAgaWYgKGlzU3VwcG9ydGVkKSB7XG4gICAgc2hhcmVkLnRyeU9uTW91bnRlZCgoKSA9PiB7XG4gICAgICBlcnJvci52YWx1ZSA9IG51bGw7XG4gICAgICBjaGFubmVsLnZhbHVlID0gbmV3IEJyb2FkY2FzdENoYW5uZWwobmFtZSk7XG4gICAgICBjaGFubmVsLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIChlKSA9PiB7XG4gICAgICAgIGRhdGEudmFsdWUgPSBlLmRhdGE7XG4gICAgICB9LCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgICBjaGFubmVsLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlZXJyb3JcIiwgKGUpID0+IHtcbiAgICAgICAgZXJyb3IudmFsdWUgPSBlO1xuICAgICAgfSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgICAgY2hhbm5lbC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKFwiY2xvc2VcIiwgKCkgPT4ge1xuICAgICAgICBpc0Nsb3NlZC52YWx1ZSA9IHRydWU7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UoKCkgPT4ge1xuICAgIGNsb3NlKCk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIGNoYW5uZWwsXG4gICAgZGF0YSxcbiAgICBwb3N0LFxuICAgIGNsb3NlLFxuICAgIGVycm9yLFxuICAgIGlzQ2xvc2VkXG4gIH07XG59O1xuXG5mdW5jdGlvbiB1c2VCcm93c2VyTG9jYXRpb24oeyB3aW5kb3cgPSBkZWZhdWx0V2luZG93IH0gPSB7fSkge1xuICBjb25zdCBidWlsZFN0YXRlID0gKHRyaWdnZXIpID0+IHtcbiAgICBjb25zdCB7IHN0YXRlOiBzdGF0ZTIsIGxlbmd0aCB9ID0gKHdpbmRvdyA9PSBudWxsID8gdm9pZCAwIDogd2luZG93Lmhpc3RvcnkpIHx8IHt9O1xuICAgIGNvbnN0IHsgaGFzaCwgaG9zdCwgaG9zdG5hbWUsIGhyZWYsIG9yaWdpbiwgcGF0aG5hbWUsIHBvcnQsIHByb3RvY29sLCBzZWFyY2ggfSA9ICh3aW5kb3cgPT0gbnVsbCA/IHZvaWQgMCA6IHdpbmRvdy5sb2NhdGlvbikgfHwge307XG4gICAgcmV0dXJuIHtcbiAgICAgIHRyaWdnZXIsXG4gICAgICBzdGF0ZTogc3RhdGUyLFxuICAgICAgbGVuZ3RoLFxuICAgICAgaGFzaCxcbiAgICAgIGhvc3QsXG4gICAgICBob3N0bmFtZSxcbiAgICAgIGhyZWYsXG4gICAgICBvcmlnaW4sXG4gICAgICBwYXRobmFtZSxcbiAgICAgIHBvcnQsXG4gICAgICBwcm90b2NvbCxcbiAgICAgIHNlYXJjaFxuICAgIH07XG4gIH07XG4gIGNvbnN0IHN0YXRlID0gdnVlRGVtaS5yZWYoYnVpbGRTdGF0ZShcImxvYWRcIikpO1xuICBpZiAod2luZG93KSB7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwicG9wc3RhdGVcIiwgKCkgPT4gc3RhdGUudmFsdWUgPSBidWlsZFN0YXRlKFwicG9wc3RhdGVcIiksIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJoYXNoY2hhbmdlXCIsICgpID0+IHN0YXRlLnZhbHVlID0gYnVpbGRTdGF0ZShcImhhc2hjaGFuZ2VcIiksIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgfVxuICByZXR1cm4gc3RhdGU7XG59XG5cbmZ1bmN0aW9uIHVzZUNhY2hlZChyZWZWYWx1ZSwgY29tcGFyYXRvciA9IChhLCBiKSA9PiBhID09PSBiLCB3YXRjaE9wdGlvbnMpIHtcbiAgY29uc3QgY2FjaGVkVmFsdWUgPSB2dWVEZW1pLnJlZihyZWZWYWx1ZS52YWx1ZSk7XG4gIHZ1ZURlbWkud2F0Y2goKCkgPT4gcmVmVmFsdWUudmFsdWUsICh2YWx1ZSkgPT4ge1xuICAgIGlmICghY29tcGFyYXRvcih2YWx1ZSwgY2FjaGVkVmFsdWUudmFsdWUpKVxuICAgICAgY2FjaGVkVmFsdWUudmFsdWUgPSB2YWx1ZTtcbiAgfSwgd2F0Y2hPcHRpb25zKTtcbiAgcmV0dXJuIGNhY2hlZFZhbHVlO1xufVxuXG5mdW5jdGlvbiB1c2VDbGFtcCh2YWx1ZSwgbWluLCBtYXgpIHtcbiAgY29uc3QgX3ZhbHVlID0gdnVlRGVtaS5yZWYodmFsdWUpO1xuICByZXR1cm4gdnVlRGVtaS5jb21wdXRlZCh7XG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIF92YWx1ZS52YWx1ZSA9IHNoYXJlZC5jbGFtcChfdmFsdWUudmFsdWUsIHZ1ZURlbWkudW5yZWYobWluKSwgdnVlRGVtaS51bnJlZihtYXgpKTtcbiAgICB9LFxuICAgIHNldCh2YWx1ZTIpIHtcbiAgICAgIF92YWx1ZS52YWx1ZSA9IHNoYXJlZC5jbGFtcCh2YWx1ZTIsIHZ1ZURlbWkudW5yZWYobWluKSwgdnVlRGVtaS51bnJlZihtYXgpKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB1c2VDbGlwYm9hcmQob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBuYXZpZ2F0b3IgPSBkZWZhdWx0TmF2aWdhdG9yLFxuICAgIHJlYWQgPSBmYWxzZSxcbiAgICBzb3VyY2UsXG4gICAgY29waWVkRHVyaW5nID0gMTUwMFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgZXZlbnRzID0gW1wiY29weVwiLCBcImN1dFwiXTtcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSBCb29sZWFuKG5hdmlnYXRvciAmJiBcImNsaXBib2FyZFwiIGluIG5hdmlnYXRvcik7XG4gIGNvbnN0IHRleHQgPSB2dWVEZW1pLnJlZihcIlwiKTtcbiAgY29uc3QgY29waWVkID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCB0aW1lb3V0ID0gc2hhcmVkLnVzZVRpbWVvdXRGbigoKSA9PiBjb3BpZWQudmFsdWUgPSBmYWxzZSwgY29waWVkRHVyaW5nKTtcbiAgZnVuY3Rpb24gdXBkYXRlVGV4dCgpIHtcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLnJlYWRUZXh0KCkudGhlbigodmFsdWUpID0+IHtcbiAgICAgIHRleHQudmFsdWUgPSB2YWx1ZTtcbiAgICB9KTtcbiAgfVxuICBpZiAoaXNTdXBwb3J0ZWQgJiYgcmVhZCkge1xuICAgIGZvciAoY29uc3QgZXZlbnQgb2YgZXZlbnRzKVxuICAgICAgdXNlRXZlbnRMaXN0ZW5lcihldmVudCwgdXBkYXRlVGV4dCk7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gY29weSh2YWx1ZSA9IHZ1ZURlbWkudW5yZWYoc291cmNlKSkge1xuICAgIGlmIChpc1N1cHBvcnRlZCAmJiB2YWx1ZSAhPSBudWxsKSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh2YWx1ZSk7XG4gICAgICB0ZXh0LnZhbHVlID0gdmFsdWU7XG4gICAgICBjb3BpZWQudmFsdWUgPSB0cnVlO1xuICAgICAgdGltZW91dC5zdGFydCgpO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIHRleHQsXG4gICAgY29waWVkLFxuICAgIGNvcHlcbiAgfTtcbn1cblxuY29uc3QgX2dsb2JhbCA9IHR5cGVvZiBnbG9iYWxUaGlzICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsVGhpcyA6IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDoge307XG5jb25zdCBnbG9iYWxLZXkgPSBcIl9fdnVldXNlX3Nzcl9oYW5kbGVyc19fXCI7XG5fZ2xvYmFsW2dsb2JhbEtleV0gPSBfZ2xvYmFsW2dsb2JhbEtleV0gfHwge307XG5jb25zdCBoYW5kbGVycyA9IF9nbG9iYWxbZ2xvYmFsS2V5XTtcbmZ1bmN0aW9uIGdldFNTUkhhbmRsZXIoa2V5LCBmYWxsYmFjaykge1xuICByZXR1cm4gaGFuZGxlcnNba2V5XSB8fCBmYWxsYmFjaztcbn1cbmZ1bmN0aW9uIHNldFNTUkhhbmRsZXIoa2V5LCBmbikge1xuICBoYW5kbGVyc1trZXldID0gZm47XG59XG5cbmZ1bmN0aW9uIGd1ZXNzU2VyaWFsaXplclR5cGUocmF3SW5pdCkge1xuICByZXR1cm4gcmF3SW5pdCA9PSBudWxsID8gXCJhbnlcIiA6IHJhd0luaXQgaW5zdGFuY2VvZiBTZXQgPyBcInNldFwiIDogcmF3SW5pdCBpbnN0YW5jZW9mIE1hcCA/IFwibWFwXCIgOiByYXdJbml0IGluc3RhbmNlb2YgRGF0ZSA/IFwiZGF0ZVwiIDogdHlwZW9mIHJhd0luaXQgPT09IFwiYm9vbGVhblwiID8gXCJib29sZWFuXCIgOiB0eXBlb2YgcmF3SW5pdCA9PT0gXCJzdHJpbmdcIiA/IFwic3RyaW5nXCIgOiB0eXBlb2YgcmF3SW5pdCA9PT0gXCJvYmplY3RcIiA/IFwib2JqZWN0XCIgOiBBcnJheS5pc0FycmF5KHJhd0luaXQpID8gXCJvYmplY3RcIiA6ICFOdW1iZXIuaXNOYU4ocmF3SW5pdCkgPyBcIm51bWJlclwiIDogXCJhbnlcIjtcbn1cblxuY29uc3QgU3RvcmFnZVNlcmlhbGl6ZXJzID0ge1xuICBib29sZWFuOiB7XG4gICAgcmVhZDogKHYpID0+IHYgPT09IFwidHJ1ZVwiLFxuICAgIHdyaXRlOiAodikgPT4gU3RyaW5nKHYpXG4gIH0sXG4gIG9iamVjdDoge1xuICAgIHJlYWQ6ICh2KSA9PiBKU09OLnBhcnNlKHYpLFxuICAgIHdyaXRlOiAodikgPT4gSlNPTi5zdHJpbmdpZnkodilcbiAgfSxcbiAgbnVtYmVyOiB7XG4gICAgcmVhZDogKHYpID0+IE51bWJlci5wYXJzZUZsb2F0KHYpLFxuICAgIHdyaXRlOiAodikgPT4gU3RyaW5nKHYpXG4gIH0sXG4gIGFueToge1xuICAgIHJlYWQ6ICh2KSA9PiB2LFxuICAgIHdyaXRlOiAodikgPT4gU3RyaW5nKHYpXG4gIH0sXG4gIHN0cmluZzoge1xuICAgIHJlYWQ6ICh2KSA9PiB2LFxuICAgIHdyaXRlOiAodikgPT4gU3RyaW5nKHYpXG4gIH0sXG4gIG1hcDoge1xuICAgIHJlYWQ6ICh2KSA9PiBuZXcgTWFwKEpTT04ucGFyc2UodikpLFxuICAgIHdyaXRlOiAodikgPT4gSlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbSh2LmVudHJpZXMoKSkpXG4gIH0sXG4gIHNldDoge1xuICAgIHJlYWQ6ICh2KSA9PiBuZXcgU2V0KEpTT04ucGFyc2UodikpLFxuICAgIHdyaXRlOiAodikgPT4gSlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbSh2KSlcbiAgfSxcbiAgZGF0ZToge1xuICAgIHJlYWQ6ICh2KSA9PiBuZXcgRGF0ZSh2KSxcbiAgICB3cml0ZTogKHYpID0+IHYudG9JU09TdHJpbmcoKVxuICB9XG59O1xuZnVuY3Rpb24gdXNlU3RvcmFnZShrZXksIGluaXRpYWxWYWx1ZSwgc3RvcmFnZSwgb3B0aW9ucyA9IHt9KSB7XG4gIHZhciBfYTtcbiAgY29uc3Qge1xuICAgIGZsdXNoID0gXCJwcmVcIixcbiAgICBkZWVwID0gdHJ1ZSxcbiAgICBsaXN0ZW5Ub1N0b3JhZ2VDaGFuZ2VzID0gdHJ1ZSxcbiAgICB3cml0ZURlZmF1bHRzID0gdHJ1ZSxcbiAgICBzaGFsbG93LFxuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3csXG4gICAgZXZlbnRGaWx0ZXIsXG4gICAgb25FcnJvciA9IChlKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGRhdGEgPSAoc2hhbGxvdyA/IHZ1ZURlbWkuc2hhbGxvd1JlZiA6IHZ1ZURlbWkucmVmKShpbml0aWFsVmFsdWUpO1xuICBpZiAoIXN0b3JhZ2UpIHtcbiAgICB0cnkge1xuICAgICAgc3RvcmFnZSA9IGdldFNTUkhhbmRsZXIoXCJnZXREZWZhdWx0U3RvcmFnZVwiLCAoKSA9PiB7XG4gICAgICAgIHZhciBfYTI7XG4gICAgICAgIHJldHVybiAoX2EyID0gZGVmYXVsdFdpbmRvdykgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5sb2NhbFN0b3JhZ2U7XG4gICAgICB9KSgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIG9uRXJyb3IoZSk7XG4gICAgfVxuICB9XG4gIGlmICghc3RvcmFnZSlcbiAgICByZXR1cm4gZGF0YTtcbiAgY29uc3QgcmF3SW5pdCA9IHZ1ZURlbWkudW5yZWYoaW5pdGlhbFZhbHVlKTtcbiAgY29uc3QgdHlwZSA9IGd1ZXNzU2VyaWFsaXplclR5cGUocmF3SW5pdCk7XG4gIGNvbnN0IHNlcmlhbGl6ZXIgPSAoX2EgPSBvcHRpb25zLnNlcmlhbGl6ZXIpICE9IG51bGwgPyBfYSA6IFN0b3JhZ2VTZXJpYWxpemVyc1t0eXBlXTtcbiAgY29uc3QgeyBwYXVzZTogcGF1c2VXYXRjaCwgcmVzdW1lOiByZXN1bWVXYXRjaCB9ID0gc2hhcmVkLnBhdXNhYmxlV2F0Y2goZGF0YSwgKCkgPT4gd3JpdGUoZGF0YS52YWx1ZSksIHsgZmx1c2gsIGRlZXAsIGV2ZW50RmlsdGVyIH0pO1xuICBpZiAod2luZG93ICYmIGxpc3RlblRvU3RvcmFnZUNoYW5nZXMpXG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwic3RvcmFnZVwiLCB1cGRhdGUpO1xuICB1cGRhdGUoKTtcbiAgcmV0dXJuIGRhdGE7XG4gIGZ1bmN0aW9uIHdyaXRlKHYpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKHYgPT0gbnVsbClcbiAgICAgICAgc3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gICAgICBlbHNlXG4gICAgICAgIHN0b3JhZ2Uuc2V0SXRlbShrZXksIHNlcmlhbGl6ZXIud3JpdGUodikpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIG9uRXJyb3IoZSk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHJlYWQoZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQua2V5ICE9PSBrZXkpXG4gICAgICByZXR1cm47XG4gICAgcGF1c2VXYXRjaCgpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByYXdWYWx1ZSA9IGV2ZW50ID8gZXZlbnQubmV3VmFsdWUgOiBzdG9yYWdlLmdldEl0ZW0oa2V5KTtcbiAgICAgIGlmIChyYXdWYWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIGlmICh3cml0ZURlZmF1bHRzICYmIHJhd0luaXQgIT09IG51bGwpXG4gICAgICAgICAgc3RvcmFnZS5zZXRJdGVtKGtleSwgc2VyaWFsaXplci53cml0ZShyYXdJbml0KSk7XG4gICAgICAgIHJldHVybiByYXdJbml0O1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmF3VmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmV0dXJuIHJhd1ZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZXIucmVhZChyYXdWYWx1ZSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgb25FcnJvcihlKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgcmVzdW1lV2F0Y2goKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gdXBkYXRlKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LmtleSAhPT0ga2V5KVxuICAgICAgcmV0dXJuO1xuICAgIGRhdGEudmFsdWUgPSByZWFkKGV2ZW50KTtcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VQcmVmZXJyZWREYXJrKG9wdGlvbnMpIHtcbiAgcmV0dXJuIHVzZU1lZGlhUXVlcnkoXCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspXCIsIG9wdGlvbnMpO1xufVxuXG52YXIgX19kZWZQcm9wJGggPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyRqID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkaiA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJGogPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCRoID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCRoKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyRoID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3Akai5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJGgoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJGopXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJGooYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kai5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkaChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbmZ1bmN0aW9uIHVzZUNvbG9yTW9kZShvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHNlbGVjdG9yID0gXCJodG1sXCIsXG4gICAgYXR0cmlidXRlID0gXCJjbGFzc1wiLFxuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3csXG4gICAgc3RvcmFnZSxcbiAgICBzdG9yYWdlS2V5ID0gXCJ2dWV1c2UtY29sb3Itc2NoZW1lXCIsXG4gICAgbGlzdGVuVG9TdG9yYWdlQ2hhbmdlcyA9IHRydWUsXG4gICAgc3RvcmFnZVJlZixcbiAgICBlbWl0QXV0b1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgbW9kZXMgPSBfX3NwcmVhZFZhbHVlcyRoKHtcbiAgICBhdXRvOiBcIlwiLFxuICAgIGxpZ2h0OiBcImxpZ2h0XCIsXG4gICAgZGFyazogXCJkYXJrXCJcbiAgfSwgb3B0aW9ucy5tb2RlcyB8fCB7fSk7XG4gIGNvbnN0IHByZWZlcnJlZERhcmsgPSB1c2VQcmVmZXJyZWREYXJrKHsgd2luZG93IH0pO1xuICBjb25zdCBwcmVmZXJyZWRNb2RlID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBwcmVmZXJyZWREYXJrLnZhbHVlID8gXCJkYXJrXCIgOiBcImxpZ2h0XCIpO1xuICBjb25zdCBzdG9yZSA9IHN0b3JhZ2VSZWYgfHwgKHN0b3JhZ2VLZXkgPT0gbnVsbCA/IHZ1ZURlbWkucmVmKFwiYXV0b1wiKSA6IHVzZVN0b3JhZ2Uoc3RvcmFnZUtleSwgXCJhdXRvXCIsIHN0b3JhZ2UsIHsgd2luZG93LCBsaXN0ZW5Ub1N0b3JhZ2VDaGFuZ2VzIH0pKTtcbiAgY29uc3Qgc3RhdGUgPSB2dWVEZW1pLmNvbXB1dGVkKHtcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gc3RvcmUudmFsdWUgPT09IFwiYXV0b1wiICYmICFlbWl0QXV0byA/IHByZWZlcnJlZE1vZGUudmFsdWUgOiBzdG9yZS52YWx1ZTtcbiAgICB9LFxuICAgIHNldCh2KSB7XG4gICAgICBzdG9yZS52YWx1ZSA9IHY7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgdXBkYXRlSFRNTEF0dHJzID0gZ2V0U1NSSGFuZGxlcihcInVwZGF0ZUhUTUxBdHRyc1wiLCAoc2VsZWN0b3IyLCBhdHRyaWJ1dGUyLCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IGVsID0gd2luZG93ID09IG51bGwgPyB2b2lkIDAgOiB3aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3RvcjIpO1xuICAgIGlmICghZWwpXG4gICAgICByZXR1cm47XG4gICAgaWYgKGF0dHJpYnV0ZTIgPT09IFwiY2xhc3NcIikge1xuICAgICAgY29uc3QgY3VycmVudCA9IHZhbHVlLnNwbGl0KC9cXHMvZyk7XG4gICAgICBPYmplY3QudmFsdWVzKG1vZGVzKS5mbGF0TWFwKChpKSA9PiAoaSB8fCBcIlwiKS5zcGxpdCgvXFxzL2cpKS5maWx0ZXIoQm9vbGVhbikuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICBpZiAoY3VycmVudC5pbmNsdWRlcyh2KSlcbiAgICAgICAgICBlbC5jbGFzc0xpc3QuYWRkKHYpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZSh2KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlMiwgdmFsdWUpO1xuICAgIH1cbiAgfSk7XG4gIGZ1bmN0aW9uIGRlZmF1bHRPbkNoYW5nZWQobW9kZSkge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCByZXNvbHZlZE1vZGUgPSBtb2RlID09PSBcImF1dG9cIiA/IHByZWZlcnJlZE1vZGUudmFsdWUgOiBtb2RlO1xuICAgIHVwZGF0ZUhUTUxBdHRycyhzZWxlY3RvciwgYXR0cmlidXRlLCAoX2EgPSBtb2Rlc1tyZXNvbHZlZE1vZGVdKSAhPSBudWxsID8gX2EgOiByZXNvbHZlZE1vZGUpO1xuICB9XG4gIGZ1bmN0aW9uIG9uQ2hhbmdlZChtb2RlKSB7XG4gICAgaWYgKG9wdGlvbnMub25DaGFuZ2VkKVxuICAgICAgb3B0aW9ucy5vbkNoYW5nZWQobW9kZSwgZGVmYXVsdE9uQ2hhbmdlZCk7XG4gICAgZWxzZVxuICAgICAgZGVmYXVsdE9uQ2hhbmdlZChtb2RlKTtcbiAgfVxuICB2dWVEZW1pLndhdGNoKHN0YXRlLCBvbkNoYW5nZWQsIHsgZmx1c2g6IFwicG9zdFwiLCBpbW1lZGlhdGU6IHRydWUgfSk7XG4gIHNoYXJlZC50cnlPbk1vdW50ZWQoKCkgPT4gb25DaGFuZ2VkKHN0YXRlLnZhbHVlKSk7XG4gIHJldHVybiBzdGF0ZTtcbn1cblxuZnVuY3Rpb24gdXNlQ29uZmlybURpYWxvZyhyZXZlYWxlZCA9IHZ1ZURlbWkucmVmKGZhbHNlKSkge1xuICBjb25zdCBjb25maXJtSG9vayA9IHNoYXJlZC5jcmVhdGVFdmVudEhvb2soKTtcbiAgY29uc3QgY2FuY2VsSG9vayA9IHNoYXJlZC5jcmVhdGVFdmVudEhvb2soKTtcbiAgY29uc3QgcmV2ZWFsSG9vayA9IHNoYXJlZC5jcmVhdGVFdmVudEhvb2soKTtcbiAgbGV0IF9yZXNvbHZlID0gc2hhcmVkLm5vb3A7XG4gIGNvbnN0IHJldmVhbCA9IChkYXRhKSA9PiB7XG4gICAgcmV2ZWFsSG9vay50cmlnZ2VyKGRhdGEpO1xuICAgIHJldmVhbGVkLnZhbHVlID0gdHJ1ZTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIF9yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICB9KTtcbiAgfTtcbiAgY29uc3QgY29uZmlybSA9IChkYXRhKSA9PiB7XG4gICAgcmV2ZWFsZWQudmFsdWUgPSBmYWxzZTtcbiAgICBjb25maXJtSG9vay50cmlnZ2VyKGRhdGEpO1xuICAgIF9yZXNvbHZlKHsgZGF0YSwgaXNDYW5jZWxlZDogZmFsc2UgfSk7XG4gIH07XG4gIGNvbnN0IGNhbmNlbCA9IChkYXRhKSA9PiB7XG4gICAgcmV2ZWFsZWQudmFsdWUgPSBmYWxzZTtcbiAgICBjYW5jZWxIb29rLnRyaWdnZXIoZGF0YSk7XG4gICAgX3Jlc29sdmUoeyBkYXRhLCBpc0NhbmNlbGVkOiB0cnVlIH0pO1xuICB9O1xuICByZXR1cm4ge1xuICAgIGlzUmV2ZWFsZWQ6IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gcmV2ZWFsZWQudmFsdWUpLFxuICAgIHJldmVhbCxcbiAgICBjb25maXJtLFxuICAgIGNhbmNlbCxcbiAgICBvblJldmVhbDogcmV2ZWFsSG9vay5vbixcbiAgICBvbkNvbmZpcm06IGNvbmZpcm1Ib29rLm9uLFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxIb29rLm9uXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZUNzc1Zhcihwcm9wLCB0YXJnZXQsIHsgd2luZG93ID0gZGVmYXVsdFdpbmRvdywgaW5pdGlhbFZhbHVlID0gXCJcIiB9ID0ge30pIHtcbiAgY29uc3QgdmFyaWFibGUgPSB2dWVEZW1pLnJlZihpbml0aWFsVmFsdWUpO1xuICBjb25zdCBlbFJlZiA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfYTtcbiAgICByZXR1cm4gdW5yZWZFbGVtZW50KHRhcmdldCkgfHwgKChfYSA9IHdpbmRvdyA9PSBudWxsID8gdm9pZCAwIDogd2luZG93LmRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2EuZG9jdW1lbnRFbGVtZW50KTtcbiAgfSk7XG4gIHZ1ZURlbWkud2F0Y2goW2VsUmVmLCAoKSA9PiB2dWVEZW1pLnVucmVmKHByb3ApXSwgKFtlbCwgcHJvcDJdKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIGlmIChlbCAmJiB3aW5kb3cpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gKF9hID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpLmdldFByb3BlcnR5VmFsdWUocHJvcDIpKSA9PSBudWxsID8gdm9pZCAwIDogX2EudHJpbSgpO1xuICAgICAgdmFyaWFibGUudmFsdWUgPSB2YWx1ZSB8fCBpbml0aWFsVmFsdWU7XG4gICAgfVxuICB9LCB7IGltbWVkaWF0ZTogdHJ1ZSB9KTtcbiAgdnVlRGVtaS53YXRjaCh2YXJpYWJsZSwgKHZhbCkgPT4ge1xuICAgIHZhciBfYTtcbiAgICBpZiAoKF9hID0gZWxSZWYudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5zdHlsZSlcbiAgICAgIGVsUmVmLnZhbHVlLnN0eWxlLnNldFByb3BlcnR5KHZ1ZURlbWkudW5yZWYocHJvcCksIHZhbCk7XG4gIH0pO1xuICByZXR1cm4gdmFyaWFibGU7XG59XG5cbmZ1bmN0aW9uIHVzZUN1cnJlbnRFbGVtZW50KCkge1xuICBjb25zdCB2bSA9IHZ1ZURlbWkuZ2V0Q3VycmVudEluc3RhbmNlKCk7XG4gIGNvbnN0IGNvdW50ID0gdnVlRGVtaS5yZWYoMCk7XG4gIHZ1ZURlbWkub25VcGRhdGVkKCgpID0+IHtcbiAgICBjb3VudC52YWx1ZSArPSAxO1xuICB9KTtcbiAgdnVlRGVtaS5vbk1vdW50ZWQoKCkgPT4ge1xuICAgIGNvdW50LnZhbHVlICs9IDE7XG4gIH0pO1xuICByZXR1cm4gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgY291bnQudmFsdWU7XG4gICAgcmV0dXJuIHZtLnByb3h5LiRlbDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVzZUN5Y2xlTGlzdChsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBfYTtcbiAgY29uc3Qgc3RhdGUgPSB2dWVEZW1pLnNoYWxsb3dSZWYoKF9hID0gb3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5pbml0aWFsVmFsdWUpICE9IG51bGwgPyBfYSA6IGxpc3RbMF0pO1xuICBjb25zdCBpbmRleCA9IHZ1ZURlbWkuY29tcHV0ZWQoe1xuICAgIGdldCgpIHtcbiAgICAgIHZhciBfYTI7XG4gICAgICBsZXQgaW5kZXgyID0gKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuZ2V0SW5kZXhPZikgPyBvcHRpb25zLmdldEluZGV4T2Yoc3RhdGUudmFsdWUsIGxpc3QpIDogbGlzdC5pbmRleE9mKHN0YXRlLnZhbHVlKTtcbiAgICAgIGlmIChpbmRleDIgPCAwKVxuICAgICAgICBpbmRleDIgPSAoX2EyID0gb3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5mYWxsYmFja0luZGV4KSAhPSBudWxsID8gX2EyIDogMDtcbiAgICAgIHJldHVybiBpbmRleDI7XG4gICAgfSxcbiAgICBzZXQodikge1xuICAgICAgc2V0KHYpO1xuICAgIH1cbiAgfSk7XG4gIGZ1bmN0aW9uIHNldChpKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gbGlzdC5sZW5ndGg7XG4gICAgY29uc3QgaW5kZXgyID0gKGkgJSBsZW5ndGggKyBsZW5ndGgpICUgbGVuZ3RoO1xuICAgIGNvbnN0IHZhbHVlID0gbGlzdFtpbmRleDJdO1xuICAgIHN0YXRlLnZhbHVlID0gdmFsdWU7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGZ1bmN0aW9uIHNoaWZ0KGRlbHRhID0gMSkge1xuICAgIHJldHVybiBzZXQoaW5kZXgudmFsdWUgKyBkZWx0YSk7XG4gIH1cbiAgZnVuY3Rpb24gbmV4dChuID0gMSkge1xuICAgIHJldHVybiBzaGlmdChuKTtcbiAgfVxuICBmdW5jdGlvbiBwcmV2KG4gPSAxKSB7XG4gICAgcmV0dXJuIHNoaWZ0KC1uKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHN0YXRlLFxuICAgIGluZGV4LFxuICAgIG5leHQsXG4gICAgcHJldlxuICB9O1xufVxuXG52YXIgX19kZWZQcm9wJGcgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19kZWZQcm9wcyQ3ID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXM7XG52YXIgX19nZXRPd25Qcm9wRGVzY3MkNyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzO1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkaSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJGkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSRpID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkZyA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkZyhvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkZyA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJGkuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCRnKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyRpKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyRpKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJGkuY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJGcoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG52YXIgX19zcHJlYWRQcm9wcyQ3ID0gKGEsIGIpID0+IF9fZGVmUHJvcHMkNyhhLCBfX2dldE93blByb3BEZXNjcyQ3KGIpKTtcbmZ1bmN0aW9uIHVzZURhcmsob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB2YWx1ZURhcmsgPSBcImRhcmtcIixcbiAgICB2YWx1ZUxpZ2h0ID0gXCJcIixcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBtb2RlID0gdXNlQ29sb3JNb2RlKF9fc3ByZWFkUHJvcHMkNyhfX3NwcmVhZFZhbHVlcyRnKHt9LCBvcHRpb25zKSwge1xuICAgIG9uQ2hhbmdlZDogKG1vZGUyLCBkZWZhdWx0SGFuZGxlcikgPT4ge1xuICAgICAgdmFyIF9hO1xuICAgICAgaWYgKG9wdGlvbnMub25DaGFuZ2VkKVxuICAgICAgICAoX2EgPSBvcHRpb25zLm9uQ2hhbmdlZCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNhbGwob3B0aW9ucywgbW9kZTIgPT09IFwiZGFya1wiKTtcbiAgICAgIGVsc2VcbiAgICAgICAgZGVmYXVsdEhhbmRsZXIobW9kZTIpO1xuICAgIH0sXG4gICAgbW9kZXM6IHtcbiAgICAgIGRhcms6IHZhbHVlRGFyayxcbiAgICAgIGxpZ2h0OiB2YWx1ZUxpZ2h0XG4gICAgfVxuICB9KSk7XG4gIGNvbnN0IHByZWZlcnJlZERhcmsgPSB1c2VQcmVmZXJyZWREYXJrKHsgd2luZG93IH0pO1xuICBjb25zdCBpc0RhcmsgPSB2dWVEZW1pLmNvbXB1dGVkKHtcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gbW9kZS52YWx1ZSA9PT0gXCJkYXJrXCI7XG4gICAgfSxcbiAgICBzZXQodikge1xuICAgICAgaWYgKHYgPT09IHByZWZlcnJlZERhcmsudmFsdWUpXG4gICAgICAgIG1vZGUudmFsdWUgPSBcImF1dG9cIjtcbiAgICAgIGVsc2VcbiAgICAgICAgbW9kZS52YWx1ZSA9IHYgPyBcImRhcmtcIiA6IFwibGlnaHRcIjtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gaXNEYXJrO1xufVxuXG5jb25zdCBmbkNsb25lID0gKHYpID0+IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodikpO1xuY29uc3QgZm5CeXBhc3MgPSAodikgPT4gdjtcbmNvbnN0IGZuU2V0U291cmNlID0gKHNvdXJjZSwgdmFsdWUpID0+IHNvdXJjZS52YWx1ZSA9IHZhbHVlO1xuZnVuY3Rpb24gZGVmYXVsdER1bXAoY2xvbmUpIHtcbiAgcmV0dXJuIGNsb25lID8gc2hhcmVkLmlzRnVuY3Rpb24oY2xvbmUpID8gY2xvbmUgOiBmbkNsb25lIDogZm5CeXBhc3M7XG59XG5mdW5jdGlvbiBkZWZhdWx0UGFyc2UoY2xvbmUpIHtcbiAgcmV0dXJuIGNsb25lID8gc2hhcmVkLmlzRnVuY3Rpb24oY2xvbmUpID8gY2xvbmUgOiBmbkNsb25lIDogZm5CeXBhc3M7XG59XG5mdW5jdGlvbiB1c2VNYW51YWxSZWZIaXN0b3J5KHNvdXJjZSwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBjbG9uZSA9IGZhbHNlLFxuICAgIGR1bXAgPSBkZWZhdWx0RHVtcChjbG9uZSksXG4gICAgcGFyc2UgPSBkZWZhdWx0UGFyc2UoY2xvbmUpLFxuICAgIHNldFNvdXJjZSA9IGZuU2V0U291cmNlXG4gIH0gPSBvcHRpb25zO1xuICBmdW5jdGlvbiBfY3JlYXRlSGlzdG9yeVJlY29yZCgpIHtcbiAgICByZXR1cm4gdnVlRGVtaS5tYXJrUmF3KHtcbiAgICAgIHNuYXBzaG90OiBkdW1wKHNvdXJjZS52YWx1ZSksXG4gICAgICB0aW1lc3RhbXA6IHNoYXJlZC50aW1lc3RhbXAoKVxuICAgIH0pO1xuICB9XG4gIGNvbnN0IGxhc3QgPSB2dWVEZW1pLnJlZihfY3JlYXRlSGlzdG9yeVJlY29yZCgpKTtcbiAgY29uc3QgdW5kb1N0YWNrID0gdnVlRGVtaS5yZWYoW10pO1xuICBjb25zdCByZWRvU3RhY2sgPSB2dWVEZW1pLnJlZihbXSk7XG4gIGNvbnN0IF9zZXRTb3VyY2UgPSAocmVjb3JkKSA9PiB7XG4gICAgc2V0U291cmNlKHNvdXJjZSwgcGFyc2UocmVjb3JkLnNuYXBzaG90KSk7XG4gICAgbGFzdC52YWx1ZSA9IHJlY29yZDtcbiAgfTtcbiAgY29uc3QgY29tbWl0ID0gKCkgPT4ge1xuICAgIHVuZG9TdGFjay52YWx1ZS51bnNoaWZ0KGxhc3QudmFsdWUpO1xuICAgIGxhc3QudmFsdWUgPSBfY3JlYXRlSGlzdG9yeVJlY29yZCgpO1xuICAgIGlmIChvcHRpb25zLmNhcGFjaXR5ICYmIHVuZG9TdGFjay52YWx1ZS5sZW5ndGggPiBvcHRpb25zLmNhcGFjaXR5KVxuICAgICAgdW5kb1N0YWNrLnZhbHVlLnNwbGljZShvcHRpb25zLmNhcGFjaXR5LCBJbmZpbml0eSk7XG4gICAgaWYgKHJlZG9TdGFjay52YWx1ZS5sZW5ndGgpXG4gICAgICByZWRvU3RhY2sudmFsdWUuc3BsaWNlKDAsIHJlZG9TdGFjay52YWx1ZS5sZW5ndGgpO1xuICB9O1xuICBjb25zdCBjbGVhciA9ICgpID0+IHtcbiAgICB1bmRvU3RhY2sudmFsdWUuc3BsaWNlKDAsIHVuZG9TdGFjay52YWx1ZS5sZW5ndGgpO1xuICAgIHJlZG9TdGFjay52YWx1ZS5zcGxpY2UoMCwgcmVkb1N0YWNrLnZhbHVlLmxlbmd0aCk7XG4gIH07XG4gIGNvbnN0IHVuZG8gPSAoKSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSB1bmRvU3RhY2sudmFsdWUuc2hpZnQoKTtcbiAgICBpZiAoc3RhdGUpIHtcbiAgICAgIHJlZG9TdGFjay52YWx1ZS51bnNoaWZ0KGxhc3QudmFsdWUpO1xuICAgICAgX3NldFNvdXJjZShzdGF0ZSk7XG4gICAgfVxuICB9O1xuICBjb25zdCByZWRvID0gKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gcmVkb1N0YWNrLnZhbHVlLnNoaWZ0KCk7XG4gICAgaWYgKHN0YXRlKSB7XG4gICAgICB1bmRvU3RhY2sudmFsdWUudW5zaGlmdChsYXN0LnZhbHVlKTtcbiAgICAgIF9zZXRTb3VyY2Uoc3RhdGUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcmVzZXQgPSAoKSA9PiB7XG4gICAgX3NldFNvdXJjZShsYXN0LnZhbHVlKTtcbiAgfTtcbiAgY29uc3QgaGlzdG9yeSA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gW2xhc3QudmFsdWUsIC4uLnVuZG9TdGFjay52YWx1ZV0pO1xuICBjb25zdCBjYW5VbmRvID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB1bmRvU3RhY2sudmFsdWUubGVuZ3RoID4gMCk7XG4gIGNvbnN0IGNhblJlZG8gPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHJlZG9TdGFjay52YWx1ZS5sZW5ndGggPiAwKTtcbiAgcmV0dXJuIHtcbiAgICBzb3VyY2UsXG4gICAgdW5kb1N0YWNrLFxuICAgIHJlZG9TdGFjayxcbiAgICBsYXN0LFxuICAgIGhpc3RvcnksXG4gICAgY2FuVW5kbyxcbiAgICBjYW5SZWRvLFxuICAgIGNsZWFyLFxuICAgIGNvbW1pdCxcbiAgICByZXNldCxcbiAgICB1bmRvLFxuICAgIHJlZG9cbiAgfTtcbn1cblxudmFyIF9fZGVmUHJvcCRmID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmUHJvcHMkNiA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzO1xudmFyIF9fZ2V0T3duUHJvcERlc2NzJDYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycztcbnZhciBfX2dldE93blByb3BTeW1ib2xzJGggPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCRoID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kaCA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJGYgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJGYob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJGYgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCRoLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkZihhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkaClcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkaChiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSRoLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCRmKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xudmFyIF9fc3ByZWFkUHJvcHMkNiA9IChhLCBiKSA9PiBfX2RlZlByb3BzJDYoYSwgX19nZXRPd25Qcm9wRGVzY3MkNihiKSk7XG5mdW5jdGlvbiB1c2VSZWZIaXN0b3J5KHNvdXJjZSwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBkZWVwID0gZmFsc2UsXG4gICAgZmx1c2ggPSBcInByZVwiLFxuICAgIGV2ZW50RmlsdGVyXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCB7XG4gICAgZXZlbnRGaWx0ZXI6IGNvbXBvc2VkRmlsdGVyLFxuICAgIHBhdXNlLFxuICAgIHJlc3VtZTogcmVzdW1lVHJhY2tpbmcsXG4gICAgaXNBY3RpdmU6IGlzVHJhY2tpbmdcbiAgfSA9IHNoYXJlZC5wYXVzYWJsZUZpbHRlcihldmVudEZpbHRlcik7XG4gIGNvbnN0IHtcbiAgICBpZ25vcmVVcGRhdGVzLFxuICAgIGlnbm9yZVByZXZBc3luY1VwZGF0ZXMsXG4gICAgc3RvcFxuICB9ID0gc2hhcmVkLndhdGNoSWdub3JhYmxlKHNvdXJjZSwgY29tbWl0LCB7IGRlZXAsIGZsdXNoLCBldmVudEZpbHRlcjogY29tcG9zZWRGaWx0ZXIgfSk7XG4gIGZ1bmN0aW9uIHNldFNvdXJjZShzb3VyY2UyLCB2YWx1ZSkge1xuICAgIGlnbm9yZVByZXZBc3luY1VwZGF0ZXMoKTtcbiAgICBpZ25vcmVVcGRhdGVzKCgpID0+IHtcbiAgICAgIHNvdXJjZTIudmFsdWUgPSB2YWx1ZTtcbiAgICB9KTtcbiAgfVxuICBjb25zdCBtYW51YWxIaXN0b3J5ID0gdXNlTWFudWFsUmVmSGlzdG9yeShzb3VyY2UsIF9fc3ByZWFkUHJvcHMkNihfX3NwcmVhZFZhbHVlcyRmKHt9LCBvcHRpb25zKSwgeyBjbG9uZTogb3B0aW9ucy5jbG9uZSB8fCBkZWVwLCBzZXRTb3VyY2UgfSkpO1xuICBjb25zdCB7IGNsZWFyLCBjb21taXQ6IG1hbnVhbENvbW1pdCB9ID0gbWFudWFsSGlzdG9yeTtcbiAgZnVuY3Rpb24gY29tbWl0KCkge1xuICAgIGlnbm9yZVByZXZBc3luY1VwZGF0ZXMoKTtcbiAgICBtYW51YWxDb21taXQoKTtcbiAgfVxuICBmdW5jdGlvbiByZXN1bWUoY29tbWl0Tm93KSB7XG4gICAgcmVzdW1lVHJhY2tpbmcoKTtcbiAgICBpZiAoY29tbWl0Tm93KVxuICAgICAgY29tbWl0KCk7XG4gIH1cbiAgZnVuY3Rpb24gYmF0Y2goZm4pIHtcbiAgICBsZXQgY2FuY2VsZWQgPSBmYWxzZTtcbiAgICBjb25zdCBjYW5jZWwgPSAoKSA9PiBjYW5jZWxlZCA9IHRydWU7XG4gICAgaWdub3JlVXBkYXRlcygoKSA9PiB7XG4gICAgICBmbihjYW5jZWwpO1xuICAgIH0pO1xuICAgIGlmICghY2FuY2VsZWQpXG4gICAgICBjb21taXQoKTtcbiAgfVxuICBmdW5jdGlvbiBkaXNwb3NlKCkge1xuICAgIHN0b3AoKTtcbiAgICBjbGVhcigpO1xuICB9XG4gIHJldHVybiBfX3NwcmVhZFByb3BzJDYoX19zcHJlYWRWYWx1ZXMkZih7fSwgbWFudWFsSGlzdG9yeSksIHtcbiAgICBpc1RyYWNraW5nLFxuICAgIHBhdXNlLFxuICAgIHJlc3VtZSxcbiAgICBjb21taXQsXG4gICAgYmF0Y2gsXG4gICAgZGlzcG9zZVxuICB9KTtcbn1cblxudmFyIF9fZGVmUHJvcCRlID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmUHJvcHMkNSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzO1xudmFyIF9fZ2V0T3duUHJvcERlc2NzJDUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycztcbnZhciBfX2dldE93blByb3BTeW1ib2xzJGcgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCRnID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kZyA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJGUgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJGUob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJGUgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCRnLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkZShhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkZylcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkZyhiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSRnLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCRlKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xudmFyIF9fc3ByZWFkUHJvcHMkNSA9IChhLCBiKSA9PiBfX2RlZlByb3BzJDUoYSwgX19nZXRPd25Qcm9wRGVzY3MkNShiKSk7XG5mdW5jdGlvbiB1c2VEZWJvdW5jZWRSZWZIaXN0b3J5KHNvdXJjZSwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IGZpbHRlciA9IG9wdGlvbnMuZGVib3VuY2UgPyBzaGFyZWQuZGVib3VuY2VGaWx0ZXIob3B0aW9ucy5kZWJvdW5jZSkgOiB2b2lkIDA7XG4gIGNvbnN0IGhpc3RvcnkgPSB1c2VSZWZIaXN0b3J5KHNvdXJjZSwgX19zcHJlYWRQcm9wcyQ1KF9fc3ByZWFkVmFsdWVzJGUoe30sIG9wdGlvbnMpLCB7IGV2ZW50RmlsdGVyOiBmaWx0ZXIgfSkpO1xuICByZXR1cm4gX19zcHJlYWRWYWx1ZXMkZSh7fSwgaGlzdG9yeSk7XG59XG5cbmZ1bmN0aW9uIHVzZURldmljZU1vdGlvbihvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3csXG4gICAgZXZlbnRGaWx0ZXIgPSBzaGFyZWQuYnlwYXNzRmlsdGVyXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBhY2NlbGVyYXRpb24gPSB2dWVEZW1pLnJlZih7IHg6IG51bGwsIHk6IG51bGwsIHo6IG51bGwgfSk7XG4gIGNvbnN0IHJvdGF0aW9uUmF0ZSA9IHZ1ZURlbWkucmVmKHsgYWxwaGE6IG51bGwsIGJldGE6IG51bGwsIGdhbW1hOiBudWxsIH0pO1xuICBjb25zdCBpbnRlcnZhbCA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCBhY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5ID0gdnVlRGVtaS5yZWYoe1xuICAgIHg6IG51bGwsXG4gICAgeTogbnVsbCxcbiAgICB6OiBudWxsXG4gIH0pO1xuICBpZiAod2luZG93KSB7XG4gICAgY29uc3Qgb25EZXZpY2VNb3Rpb24gPSBzaGFyZWQuY3JlYXRlRmlsdGVyV3JhcHBlcihldmVudEZpbHRlciwgKGV2ZW50KSA9PiB7XG4gICAgICBhY2NlbGVyYXRpb24udmFsdWUgPSBldmVudC5hY2NlbGVyYXRpb247XG4gICAgICBhY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LnZhbHVlID0gZXZlbnQuYWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eTtcbiAgICAgIHJvdGF0aW9uUmF0ZS52YWx1ZSA9IGV2ZW50LnJvdGF0aW9uUmF0ZTtcbiAgICAgIGludGVydmFsLnZhbHVlID0gZXZlbnQuaW50ZXJ2YWw7XG4gICAgfSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwiZGV2aWNlbW90aW9uXCIsIG9uRGV2aWNlTW90aW9uKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGFjY2VsZXJhdGlvbixcbiAgICBhY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LFxuICAgIHJvdGF0aW9uUmF0ZSxcbiAgICBpbnRlcnZhbFxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VEZXZpY2VPcmllbnRhdGlvbihvcHRpb25zID0ge30pIHtcbiAgY29uc3QgeyB3aW5kb3cgPSBkZWZhdWx0V2luZG93IH0gPSBvcHRpb25zO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IEJvb2xlYW4od2luZG93ICYmIFwiRGV2aWNlT3JpZW50YXRpb25FdmVudFwiIGluIHdpbmRvdyk7XG4gIGNvbnN0IGlzQWJzb2x1dGUgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IGFscGhhID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGNvbnN0IGJldGEgPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgY29uc3QgZ2FtbWEgPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgaWYgKHdpbmRvdyAmJiBpc1N1cHBvcnRlZCkge1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcImRldmljZW9yaWVudGF0aW9uXCIsIChldmVudCkgPT4ge1xuICAgICAgaXNBYnNvbHV0ZS52YWx1ZSA9IGV2ZW50LmFic29sdXRlO1xuICAgICAgYWxwaGEudmFsdWUgPSBldmVudC5hbHBoYTtcbiAgICAgIGJldGEudmFsdWUgPSBldmVudC5iZXRhO1xuICAgICAgZ2FtbWEudmFsdWUgPSBldmVudC5nYW1tYTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIGlzQWJzb2x1dGUsXG4gICAgYWxwaGEsXG4gICAgYmV0YSxcbiAgICBnYW1tYVxuICB9O1xufVxuXG5jb25zdCBERVZJQ0VfUElYRUxfUkFUSU9fU0NBTEVTID0gW1xuICAxLFxuICAxLjMyNSxcbiAgMS40LFxuICAxLjUsXG4gIDEuOCxcbiAgMixcbiAgMi40LFxuICAyLjUsXG4gIDIuNzUsXG4gIDMsXG4gIDMuNSxcbiAgNFxuXTtcbmZ1bmN0aW9uIHVzZURldmljZVBpeGVsUmF0aW8oe1xuICB3aW5kb3cgPSBkZWZhdWx0V2luZG93XG59ID0ge30pIHtcbiAgaWYgKCF3aW5kb3cpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGl4ZWxSYXRpbzogdnVlRGVtaS5yZWYoMSlcbiAgICB9O1xuICB9XG4gIGNvbnN0IHBpeGVsUmF0aW8gPSB2dWVEZW1pLnJlZih3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyk7XG4gIGNvbnN0IGhhbmRsZURldmljZVBpeGVsUmF0aW8gPSAoKSA9PiB7XG4gICAgcGl4ZWxSYXRpby52YWx1ZSA9IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvO1xuICB9O1xuICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJyZXNpemVcIiwgaGFuZGxlRGV2aWNlUGl4ZWxSYXRpbywgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICBERVZJQ0VfUElYRUxfUkFUSU9fU0NBTEVTLmZvckVhY2goKGRwcHgpID0+IHtcbiAgICBjb25zdCBtcWxNaW4gPSB1c2VNZWRpYVF1ZXJ5KGBzY3JlZW4gYW5kIChtaW4tcmVzb2x1dGlvbjogJHtkcHB4fWRwcHgpYCk7XG4gICAgY29uc3QgbXFsTWF4ID0gdXNlTWVkaWFRdWVyeShgc2NyZWVuIGFuZCAobWF4LXJlc29sdXRpb246ICR7ZHBweH1kcHB4KWApO1xuICAgIHZ1ZURlbWkud2F0Y2goW21xbE1pbiwgbXFsTWF4XSwgaGFuZGxlRGV2aWNlUGl4ZWxSYXRpbyk7XG4gIH0pO1xuICByZXR1cm4geyBwaXhlbFJhdGlvIH07XG59XG5cbmZ1bmN0aW9uIHVzZVBlcm1pc3Npb24ocGVybWlzc2lvbkRlc2MsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgY29udHJvbHMgPSBmYWxzZSxcbiAgICBuYXZpZ2F0b3IgPSBkZWZhdWx0TmF2aWdhdG9yXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IEJvb2xlYW4obmF2aWdhdG9yICYmIFwicGVybWlzc2lvbnNcIiBpbiBuYXZpZ2F0b3IpO1xuICBsZXQgcGVybWlzc2lvblN0YXR1cztcbiAgY29uc3QgZGVzYyA9IHR5cGVvZiBwZXJtaXNzaW9uRGVzYyA9PT0gXCJzdHJpbmdcIiA/IHsgbmFtZTogcGVybWlzc2lvbkRlc2MgfSA6IHBlcm1pc3Npb25EZXNjO1xuICBjb25zdCBzdGF0ZSA9IHZ1ZURlbWkucmVmKCk7XG4gIGNvbnN0IG9uQ2hhbmdlID0gKCkgPT4ge1xuICAgIGlmIChwZXJtaXNzaW9uU3RhdHVzKVxuICAgICAgc3RhdGUudmFsdWUgPSBwZXJtaXNzaW9uU3RhdHVzLnN0YXRlO1xuICB9O1xuICBjb25zdCBxdWVyeSA9IHNoYXJlZC5jcmVhdGVTaW5nbGV0b25Qcm9taXNlKGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWlzU3VwcG9ydGVkKVxuICAgICAgcmV0dXJuO1xuICAgIGlmICghcGVybWlzc2lvblN0YXR1cykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcGVybWlzc2lvblN0YXR1cyA9IGF3YWl0IG5hdmlnYXRvci5wZXJtaXNzaW9ucy5xdWVyeShkZXNjKTtcbiAgICAgICAgdXNlRXZlbnRMaXN0ZW5lcihwZXJtaXNzaW9uU3RhdHVzLCBcImNoYW5nZVwiLCBvbkNoYW5nZSk7XG4gICAgICAgIG9uQ2hhbmdlKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHN0YXRlLnZhbHVlID0gXCJwcm9tcHRcIjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHBlcm1pc3Npb25TdGF0dXM7XG4gIH0pO1xuICBxdWVyeSgpO1xuICBpZiAoY29udHJvbHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGUsXG4gICAgICBpc1N1cHBvcnRlZCxcbiAgICAgIHF1ZXJ5XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlRGV2aWNlc0xpc3Qob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBuYXZpZ2F0b3IgPSBkZWZhdWx0TmF2aWdhdG9yLFxuICAgIHJlcXVlc3RQZXJtaXNzaW9ucyA9IGZhbHNlLFxuICAgIGNvbnN0cmFpbnRzID0geyBhdWRpbzogdHJ1ZSwgdmlkZW86IHRydWUgfSxcbiAgICBvblVwZGF0ZWRcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGRldmljZXMgPSB2dWVEZW1pLnJlZihbXSk7XG4gIGNvbnN0IHZpZGVvSW5wdXRzID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBkZXZpY2VzLnZhbHVlLmZpbHRlcigoaSkgPT4gaS5raW5kID09PSBcInZpZGVvaW5wdXRcIikpO1xuICBjb25zdCBhdWRpb0lucHV0cyA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gZGV2aWNlcy52YWx1ZS5maWx0ZXIoKGkpID0+IGkua2luZCA9PT0gXCJhdWRpb2lucHV0XCIpKTtcbiAgY29uc3QgYXVkaW9PdXRwdXRzID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBkZXZpY2VzLnZhbHVlLmZpbHRlcigoaSkgPT4gaS5raW5kID09PSBcImF1ZGlvb3V0cHV0XCIpKTtcbiAgbGV0IGlzU3VwcG9ydGVkID0gZmFsc2U7XG4gIGNvbnN0IHBlcm1pc3Npb25HcmFudGVkID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBhc3luYyBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZClcbiAgICAgIHJldHVybjtcbiAgICBkZXZpY2VzLnZhbHVlID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzKCk7XG4gICAgb25VcGRhdGVkID09IG51bGwgPyB2b2lkIDAgOiBvblVwZGF0ZWQoZGV2aWNlcy52YWx1ZSk7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gZW5zdXJlUGVybWlzc2lvbnMoKSB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZClcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICBpZiAocGVybWlzc2lvbkdyYW50ZWQudmFsdWUpXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBjb25zdCB7IHN0YXRlLCBxdWVyeSB9ID0gdXNlUGVybWlzc2lvbihcImNhbWVyYVwiLCB7IGNvbnRyb2xzOiB0cnVlIH0pO1xuICAgIGF3YWl0IHF1ZXJ5KCk7XG4gICAgaWYgKHN0YXRlLnZhbHVlICE9PSBcImdyYW50ZWRcIikge1xuICAgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoY29uc3RyYWludHMpO1xuICAgICAgc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2goKHQpID0+IHQuc3RvcCgpKTtcbiAgICAgIHVwZGF0ZSgpO1xuICAgICAgcGVybWlzc2lvbkdyYW50ZWQudmFsdWUgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBwZXJtaXNzaW9uR3JhbnRlZC52YWx1ZSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBwZXJtaXNzaW9uR3JhbnRlZC52YWx1ZTtcbiAgfVxuICBpZiAobmF2aWdhdG9yKSB7XG4gICAgaXNTdXBwb3J0ZWQgPSBCb29sZWFuKG5hdmlnYXRvci5tZWRpYURldmljZXMgJiYgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzKTtcbiAgICBpZiAoaXNTdXBwb3J0ZWQpIHtcbiAgICAgIGlmIChyZXF1ZXN0UGVybWlzc2lvbnMpXG4gICAgICAgIGVuc3VyZVBlcm1pc3Npb25zKCk7XG4gICAgICB1c2VFdmVudExpc3RlbmVyKG5hdmlnYXRvci5tZWRpYURldmljZXMsIFwiZGV2aWNlY2hhbmdlXCIsIHVwZGF0ZSk7XG4gICAgICB1cGRhdGUoKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBkZXZpY2VzLFxuICAgIGVuc3VyZVBlcm1pc3Npb25zLFxuICAgIHBlcm1pc3Npb25HcmFudGVkLFxuICAgIHZpZGVvSW5wdXRzLFxuICAgIGF1ZGlvSW5wdXRzLFxuICAgIGF1ZGlvT3V0cHV0cyxcbiAgICBpc1N1cHBvcnRlZFxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VEaXNwbGF5TWVkaWEob3B0aW9ucyA9IHt9KSB7XG4gIHZhciBfYSwgX2I7XG4gIGNvbnN0IGVuYWJsZWQgPSB2dWVEZW1pLnJlZigoX2EgPSBvcHRpb25zLmVuYWJsZWQpICE9IG51bGwgPyBfYSA6IGZhbHNlKTtcbiAgY29uc3QgdmlkZW8gPSBvcHRpb25zLnZpZGVvO1xuICBjb25zdCBhdWRpbyA9IG9wdGlvbnMuYXVkaW87XG4gIGNvbnN0IHsgbmF2aWdhdG9yID0gZGVmYXVsdE5hdmlnYXRvciB9ID0gb3B0aW9ucztcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSBCb29sZWFuKChfYiA9IG5hdmlnYXRvciA9PSBudWxsID8gdm9pZCAwIDogbmF2aWdhdG9yLm1lZGlhRGV2aWNlcykgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmdldERpc3BsYXlNZWRpYSk7XG4gIGNvbnN0IGNvbnN0cmFpbnQgPSB7IGF1ZGlvLCB2aWRlbyB9O1xuICBjb25zdCBzdHJlYW0gPSB2dWVEZW1pLnNoYWxsb3dSZWYoKTtcbiAgYXN5bmMgZnVuY3Rpb24gX3N0YXJ0KCkge1xuICAgIGlmICghaXNTdXBwb3J0ZWQgfHwgc3RyZWFtLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIHN0cmVhbS52YWx1ZSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0RGlzcGxheU1lZGlhKGNvbnN0cmFpbnQpO1xuICAgIHJldHVybiBzdHJlYW0udmFsdWU7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gX3N0b3AoKSB7XG4gICAgdmFyIF9hMjtcbiAgICAoX2EyID0gc3RyZWFtLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EyLmdldFRyYWNrcygpLmZvckVhY2goKHQpID0+IHQuc3RvcCgpKTtcbiAgICBzdHJlYW0udmFsdWUgPSB2b2lkIDA7XG4gIH1cbiAgZnVuY3Rpb24gc3RvcCgpIHtcbiAgICBfc3RvcCgpO1xuICAgIGVuYWJsZWQudmFsdWUgPSBmYWxzZTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBzdGFydCgpIHtcbiAgICBhd2FpdCBfc3RhcnQoKTtcbiAgICBpZiAoc3RyZWFtLnZhbHVlKVxuICAgICAgZW5hYmxlZC52YWx1ZSA9IHRydWU7XG4gICAgcmV0dXJuIHN0cmVhbS52YWx1ZTtcbiAgfVxuICB2dWVEZW1pLndhdGNoKGVuYWJsZWQsICh2KSA9PiB7XG4gICAgaWYgKHYpXG4gICAgICBfc3RhcnQoKTtcbiAgICBlbHNlXG4gICAgICBfc3RvcCgpO1xuICB9LCB7IGltbWVkaWF0ZTogdHJ1ZSB9KTtcbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBzdHJlYW0sXG4gICAgc3RhcnQsXG4gICAgc3RvcCxcbiAgICBlbmFibGVkXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZURvY3VtZW50VmlzaWJpbGl0eSh7IGRvY3VtZW50ID0gZGVmYXVsdERvY3VtZW50IH0gPSB7fSkge1xuICBpZiAoIWRvY3VtZW50KVxuICAgIHJldHVybiB2dWVEZW1pLnJlZihcInZpc2libGVcIik7XG4gIGNvbnN0IHZpc2liaWxpdHkgPSB2dWVEZW1pLnJlZihkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUpO1xuICB1c2VFdmVudExpc3RlbmVyKGRvY3VtZW50LCBcInZpc2liaWxpdHljaGFuZ2VcIiwgKCkgPT4ge1xuICAgIHZpc2liaWxpdHkudmFsdWUgPSBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGU7XG4gIH0pO1xuICByZXR1cm4gdmlzaWJpbGl0eTtcbn1cblxudmFyIF9fZGVmUHJvcCRkID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmUHJvcHMkNCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzO1xudmFyIF9fZ2V0T3duUHJvcERlc2NzJDQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycztcbnZhciBfX2dldE93blByb3BTeW1ib2xzJGYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCRmID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kZiA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJGQgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJGQob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJGQgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCRmLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkZChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkZilcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkZihiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSRmLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCRkKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xudmFyIF9fc3ByZWFkUHJvcHMkNCA9IChhLCBiKSA9PiBfX2RlZlByb3BzJDQoYSwgX19nZXRPd25Qcm9wRGVzY3MkNChiKSk7XG5mdW5jdGlvbiB1c2VEcmFnZ2FibGUodGFyZ2V0LCBvcHRpb25zID0ge30pIHtcbiAgdmFyIF9hLCBfYjtcbiAgY29uc3QgZHJhZ2dpbmdFbGVtZW50ID0gKF9hID0gb3B0aW9ucy5kcmFnZ2luZ0VsZW1lbnQpICE9IG51bGwgPyBfYSA6IGRlZmF1bHRXaW5kb3c7XG4gIGNvbnN0IHBvc2l0aW9uID0gdnVlRGVtaS5yZWYoKF9iID0gb3B0aW9ucy5pbml0aWFsVmFsdWUpICE9IG51bGwgPyBfYiA6IHsgeDogMCwgeTogMCB9KTtcbiAgY29uc3QgcHJlc3NlZERlbHRhID0gdnVlRGVtaS5yZWYoKTtcbiAgY29uc3QgZmlsdGVyRXZlbnQgPSAoZSkgPT4ge1xuICAgIGlmIChvcHRpb25zLnBvaW50ZXJUeXBlcylcbiAgICAgIHJldHVybiBvcHRpb25zLnBvaW50ZXJUeXBlcy5pbmNsdWRlcyhlLnBvaW50ZXJUeXBlKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbiAgY29uc3QgaGFuZGxlRXZlbnQgPSAoZSkgPT4ge1xuICAgIGlmICh2dWVEZW1pLnVucmVmKG9wdGlvbnMucHJldmVudERlZmF1bHQpKVxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmICh2dWVEZW1pLnVucmVmKG9wdGlvbnMuc3RvcFByb3BhZ2F0aW9uKSlcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH07XG4gIGNvbnN0IHN0YXJ0ID0gKGUpID0+IHtcbiAgICB2YXIgX2EyO1xuICAgIGlmICghZmlsdGVyRXZlbnQoZSkpXG4gICAgICByZXR1cm47XG4gICAgaWYgKHZ1ZURlbWkudW5yZWYob3B0aW9ucy5leGFjdCkgJiYgZS50YXJnZXQgIT09IHZ1ZURlbWkudW5yZWYodGFyZ2V0KSlcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCByZWN0ID0gdnVlRGVtaS51bnJlZih0YXJnZXQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHBvcyA9IHtcbiAgICAgIHg6IGUucGFnZVggLSByZWN0LmxlZnQsXG4gICAgICB5OiBlLnBhZ2VZIC0gcmVjdC50b3BcbiAgICB9O1xuICAgIGlmICgoKF9hMiA9IG9wdGlvbnMub25TdGFydCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5jYWxsKG9wdGlvbnMsIHBvcywgZSkpID09PSBmYWxzZSlcbiAgICAgIHJldHVybjtcbiAgICBwcmVzc2VkRGVsdGEudmFsdWUgPSBwb3M7XG4gICAgaGFuZGxlRXZlbnQoZSk7XG4gIH07XG4gIGNvbnN0IG1vdmUgPSAoZSkgPT4ge1xuICAgIHZhciBfYTI7XG4gICAgaWYgKCFmaWx0ZXJFdmVudChlKSlcbiAgICAgIHJldHVybjtcbiAgICBpZiAoIXByZXNzZWREZWx0YS52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBwb3NpdGlvbi52YWx1ZSA9IHtcbiAgICAgIHg6IGUucGFnZVggLSBwcmVzc2VkRGVsdGEudmFsdWUueCxcbiAgICAgIHk6IGUucGFnZVkgLSBwcmVzc2VkRGVsdGEudmFsdWUueVxuICAgIH07XG4gICAgKF9hMiA9IG9wdGlvbnMub25Nb3ZlKSA9PSBudWxsID8gdm9pZCAwIDogX2EyLmNhbGwob3B0aW9ucywgcG9zaXRpb24udmFsdWUsIGUpO1xuICAgIGhhbmRsZUV2ZW50KGUpO1xuICB9O1xuICBjb25zdCBlbmQgPSAoZSkgPT4ge1xuICAgIHZhciBfYTI7XG4gICAgaWYgKCFmaWx0ZXJFdmVudChlKSlcbiAgICAgIHJldHVybjtcbiAgICBpZiAoIXByZXNzZWREZWx0YS52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBwcmVzc2VkRGVsdGEudmFsdWUgPSB2b2lkIDA7XG4gICAgKF9hMiA9IG9wdGlvbnMub25FbmQpID09IG51bGwgPyB2b2lkIDAgOiBfYTIuY2FsbChvcHRpb25zLCBwb3NpdGlvbi52YWx1ZSwgZSk7XG4gICAgaGFuZGxlRXZlbnQoZSk7XG4gIH07XG4gIGlmIChzaGFyZWQuaXNDbGllbnQpIHtcbiAgICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJwb2ludGVyZG93blwiLCBzdGFydCwgdHJ1ZSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcihkcmFnZ2luZ0VsZW1lbnQsIFwicG9pbnRlcm1vdmVcIiwgbW92ZSwgdHJ1ZSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcihkcmFnZ2luZ0VsZW1lbnQsIFwicG9pbnRlcnVwXCIsIGVuZCwgdHJ1ZSk7XG4gIH1cbiAgcmV0dXJuIF9fc3ByZWFkUHJvcHMkNChfX3NwcmVhZFZhbHVlcyRkKHt9LCBzaGFyZWQudG9SZWZzKHBvc2l0aW9uKSksIHtcbiAgICBwb3NpdGlvbixcbiAgICBpc0RyYWdnaW5nOiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+ICEhcHJlc3NlZERlbHRhLnZhbHVlKSxcbiAgICBzdHlsZTogdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBgbGVmdDoke3Bvc2l0aW9uLnZhbHVlLnh9cHg7dG9wOiR7cG9zaXRpb24udmFsdWUueX1weDtgKVxuICB9KTtcbn1cblxuZnVuY3Rpb24gdXNlRHJvcFpvbmUodGFyZ2V0LCBvbkRyb3ApIHtcbiAgY29uc3QgaXNPdmVyRHJvcFpvbmUgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGxldCBjb3VudGVyID0gMDtcbiAgaWYgKHNoYXJlZC5pc0NsaWVudCkge1xuICAgIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcImRyYWdlbnRlclwiLCAoZXZlbnQpID0+IHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBjb3VudGVyICs9IDE7XG4gICAgICBpc092ZXJEcm9wWm9uZS52YWx1ZSA9IHRydWU7XG4gICAgfSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwiZHJhZ292ZXJcIiwgKGV2ZW50KSA9PiB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0pO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcImRyYWdsZWF2ZVwiLCAoZXZlbnQpID0+IHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBjb3VudGVyIC09IDE7XG4gICAgICBpZiAoY291bnRlciA9PT0gMClcbiAgICAgICAgaXNPdmVyRHJvcFpvbmUudmFsdWUgPSBmYWxzZTtcbiAgICB9KTtcbiAgICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJkcm9wXCIsIChldmVudCkgPT4ge1xuICAgICAgdmFyIF9hLCBfYjtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBjb3VudGVyID0gMDtcbiAgICAgIGlzT3ZlckRyb3Bab25lLnZhbHVlID0gZmFsc2U7XG4gICAgICBjb25zdCBmaWxlcyA9IEFycmF5LmZyb20oKF9iID0gKF9hID0gZXZlbnQuZGF0YVRyYW5zZmVyKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZmlsZXMpICE9IG51bGwgPyBfYiA6IFtdKTtcbiAgICAgIGlmIChmaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgb25Ecm9wKG51bGwpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBvbkRyb3AoZmlsZXMpO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiB7XG4gICAgaXNPdmVyRHJvcFpvbmVcbiAgfTtcbn1cblxudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkZSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJGUgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSRlID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX29ialJlc3QkMiA9IChzb3VyY2UsIGV4Y2x1ZGUpID0+IHtcbiAgdmFyIHRhcmdldCA9IHt9O1xuICBmb3IgKHZhciBwcm9wIGluIHNvdXJjZSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJGUuY2FsbChzb3VyY2UsIHByb3ApICYmIGV4Y2x1ZGUuaW5kZXhPZihwcm9wKSA8IDApXG4gICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gIGlmIChzb3VyY2UgIT0gbnVsbCAmJiBfX2dldE93blByb3BTeW1ib2xzJGUpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJGUoc291cmNlKSkge1xuICAgICAgaWYgKGV4Y2x1ZGUuaW5kZXhPZihwcm9wKSA8IDAgJiYgX19wcm9wSXNFbnVtJGUuY2FsbChzb3VyY2UsIHByb3ApKVxuICAgICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gICAgfVxuICByZXR1cm4gdGFyZ2V0O1xufTtcbmZ1bmN0aW9uIHVzZVJlc2l6ZU9ic2VydmVyKHRhcmdldCwgY2FsbGJhY2ssIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBfYSA9IG9wdGlvbnMsIHsgd2luZG93ID0gZGVmYXVsdFdpbmRvdyB9ID0gX2EsIG9ic2VydmVyT3B0aW9ucyA9IF9fb2JqUmVzdCQyKF9hLCBbXCJ3aW5kb3dcIl0pO1xuICBsZXQgb2JzZXJ2ZXI7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gd2luZG93ICYmIFwiUmVzaXplT2JzZXJ2ZXJcIiBpbiB3aW5kb3c7XG4gIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XG4gICAgaWYgKG9ic2VydmVyKSB7XG4gICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICBvYnNlcnZlciA9IHZvaWQgMDtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHN0b3BXYXRjaCA9IHZ1ZURlbWkud2F0Y2goKCkgPT4gdW5yZWZFbGVtZW50KHRhcmdldCksIChlbCkgPT4ge1xuICAgIGNsZWFudXAoKTtcbiAgICBpZiAoaXNTdXBwb3J0ZWQgJiYgd2luZG93ICYmIGVsKSB7XG4gICAgICBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihjYWxsYmFjayk7XG4gICAgICBvYnNlcnZlci5vYnNlcnZlKGVsLCBvYnNlcnZlck9wdGlvbnMpO1xuICAgIH1cbiAgfSwgeyBpbW1lZGlhdGU6IHRydWUsIGZsdXNoOiBcInBvc3RcIiB9KTtcbiAgY29uc3Qgc3RvcCA9ICgpID0+IHtcbiAgICBjbGVhbnVwKCk7XG4gICAgc3RvcFdhdGNoKCk7XG4gIH07XG4gIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZShzdG9wKTtcbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBzdG9wXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZUVsZW1lbnRCb3VuZGluZyh0YXJnZXQsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgcmVzZXQgPSB0cnVlLFxuICAgIHdpbmRvd1Jlc2l6ZSA9IHRydWUsXG4gICAgd2luZG93U2Nyb2xsID0gdHJ1ZSxcbiAgICBpbW1lZGlhdGUgPSB0cnVlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBoZWlnaHQgPSB2dWVEZW1pLnJlZigwKTtcbiAgY29uc3QgYm90dG9tID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IGxlZnQgPSB2dWVEZW1pLnJlZigwKTtcbiAgY29uc3QgcmlnaHQgPSB2dWVEZW1pLnJlZigwKTtcbiAgY29uc3QgdG9wID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IHdpZHRoID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IHggPSB2dWVEZW1pLnJlZigwKTtcbiAgY29uc3QgeSA9IHZ1ZURlbWkucmVmKDApO1xuICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgY29uc3QgZWwgPSB1bnJlZkVsZW1lbnQodGFyZ2V0KTtcbiAgICBpZiAoIWVsKSB7XG4gICAgICBpZiAocmVzZXQpIHtcbiAgICAgICAgaGVpZ2h0LnZhbHVlID0gMDtcbiAgICAgICAgYm90dG9tLnZhbHVlID0gMDtcbiAgICAgICAgbGVmdC52YWx1ZSA9IDA7XG4gICAgICAgIHJpZ2h0LnZhbHVlID0gMDtcbiAgICAgICAgdG9wLnZhbHVlID0gMDtcbiAgICAgICAgd2lkdGgudmFsdWUgPSAwO1xuICAgICAgICB4LnZhbHVlID0gMDtcbiAgICAgICAgeS52YWx1ZSA9IDA7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBoZWlnaHQudmFsdWUgPSByZWN0LmhlaWdodDtcbiAgICBib3R0b20udmFsdWUgPSByZWN0LmJvdHRvbTtcbiAgICBsZWZ0LnZhbHVlID0gcmVjdC5sZWZ0O1xuICAgIHJpZ2h0LnZhbHVlID0gcmVjdC5yaWdodDtcbiAgICB0b3AudmFsdWUgPSByZWN0LnRvcDtcbiAgICB3aWR0aC52YWx1ZSA9IHJlY3Qud2lkdGg7XG4gICAgeC52YWx1ZSA9IHJlY3QueDtcbiAgICB5LnZhbHVlID0gcmVjdC55O1xuICB9XG4gIHVzZVJlc2l6ZU9ic2VydmVyKHRhcmdldCwgdXBkYXRlKTtcbiAgdnVlRGVtaS53YXRjaCgoKSA9PiB1bnJlZkVsZW1lbnQodGFyZ2V0KSwgKGVsZSkgPT4gIWVsZSAmJiB1cGRhdGUoKSk7XG4gIGlmICh3aW5kb3dTY3JvbGwpXG4gICAgdXNlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCB1cGRhdGUsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgaWYgKHdpbmRvd1Jlc2l6ZSlcbiAgICB1c2VFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHVwZGF0ZSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICBzaGFyZWQudHJ5T25Nb3VudGVkKCgpID0+IHtcbiAgICBpZiAoaW1tZWRpYXRlKVxuICAgICAgdXBkYXRlKCk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGhlaWdodCxcbiAgICBib3R0b20sXG4gICAgbGVmdCxcbiAgICByaWdodCxcbiAgICB0b3AsXG4gICAgd2lkdGgsXG4gICAgeCxcbiAgICB5LFxuICAgIHVwZGF0ZVxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VSYWZGbihmbiwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBpbW1lZGlhdGUgPSB0cnVlLFxuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3dcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlzQWN0aXZlID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBsZXQgcmFmSWQgPSBudWxsO1xuICBmdW5jdGlvbiBsb29wKCkge1xuICAgIGlmICghaXNBY3RpdmUudmFsdWUgfHwgIXdpbmRvdylcbiAgICAgIHJldHVybjtcbiAgICBmbigpO1xuICAgIHJhZklkID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShsb29wKTtcbiAgfVxuICBmdW5jdGlvbiByZXN1bWUoKSB7XG4gICAgaWYgKCFpc0FjdGl2ZS52YWx1ZSAmJiB3aW5kb3cpIHtcbiAgICAgIGlzQWN0aXZlLnZhbHVlID0gdHJ1ZTtcbiAgICAgIGxvb3AoKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gcGF1c2UoKSB7XG4gICAgaXNBY3RpdmUudmFsdWUgPSBmYWxzZTtcbiAgICBpZiAocmFmSWQgIT0gbnVsbCAmJiB3aW5kb3cpIHtcbiAgICAgIHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShyYWZJZCk7XG4gICAgICByYWZJZCA9IG51bGw7XG4gICAgfVxuICB9XG4gIGlmIChpbW1lZGlhdGUpXG4gICAgcmVzdW1lKCk7XG4gIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZShwYXVzZSk7XG4gIHJldHVybiB7XG4gICAgaXNBY3RpdmUsXG4gICAgcGF1c2UsXG4gICAgcmVzdW1lXG4gIH07XG59XG5cbnZhciBfX2RlZlByb3AkYyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BTeW1ib2xzJGQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCRkID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kZCA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJGMgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJGMob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJGMgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCRkLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkYyhhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkZClcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkZChiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSRkLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCRjKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xuZnVuY3Rpb24gdXNlRWxlbWVudEJ5UG9pbnQob3B0aW9ucykge1xuICBjb25zdCBlbGVtZW50ID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGNvbnN0IHsgeCwgeSB9ID0gb3B0aW9ucztcbiAgY29uc3QgY29udHJvbHMgPSB1c2VSYWZGbigoKSA9PiB7XG4gICAgZWxlbWVudC52YWx1ZSA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQodnVlRGVtaS51bnJlZih4KSwgdnVlRGVtaS51bnJlZih5KSk7XG4gIH0pO1xuICByZXR1cm4gX19zcHJlYWRWYWx1ZXMkYyh7XG4gICAgZWxlbWVudFxuICB9LCBjb250cm9scyk7XG59XG5cbmZ1bmN0aW9uIHVzZUVsZW1lbnRIb3ZlcihlbCkge1xuICBjb25zdCBpc0hvdmVyZWQgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIoZWwsIFwibW91c2VlbnRlclwiLCAoKSA9PiBpc0hvdmVyZWQudmFsdWUgPSB0cnVlKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcihlbCwgXCJtb3VzZWxlYXZlXCIsICgpID0+IGlzSG92ZXJlZC52YWx1ZSA9IGZhbHNlKTtcbiAgcmV0dXJuIGlzSG92ZXJlZDtcbn1cblxuZnVuY3Rpb24gdXNlRWxlbWVudFNpemUodGFyZ2V0LCBpbml0aWFsU2l6ZSA9IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qgd2lkdGggPSB2dWVEZW1pLnJlZihpbml0aWFsU2l6ZS53aWR0aCk7XG4gIGNvbnN0IGhlaWdodCA9IHZ1ZURlbWkucmVmKGluaXRpYWxTaXplLmhlaWdodCk7XG4gIHVzZVJlc2l6ZU9ic2VydmVyKHRhcmdldCwgKFtlbnRyeV0pID0+IHtcbiAgICB3aWR0aC52YWx1ZSA9IGVudHJ5LmNvbnRlbnRSZWN0LndpZHRoO1xuICAgIGhlaWdodC52YWx1ZSA9IGVudHJ5LmNvbnRlbnRSZWN0LmhlaWdodDtcbiAgfSwgb3B0aW9ucyk7XG4gIHZ1ZURlbWkud2F0Y2goKCkgPT4gdW5yZWZFbGVtZW50KHRhcmdldCksIChlbGUpID0+IHtcbiAgICB3aWR0aC52YWx1ZSA9IGVsZSA/IGluaXRpYWxTaXplLndpZHRoIDogMDtcbiAgICBoZWlnaHQudmFsdWUgPSBlbGUgPyBpbml0aWFsU2l6ZS5oZWlnaHQgOiAwO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlRWxlbWVudFZpc2liaWxpdHkoZWxlbWVudCwgeyB3aW5kb3cgPSBkZWZhdWx0V2luZG93LCBzY3JvbGxUYXJnZXQgfSA9IHt9KSB7XG4gIGNvbnN0IGVsZW1lbnRJc1Zpc2libGUgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IHRlc3RCb3VuZGluZyA9ICgpID0+IHtcbiAgICBpZiAoIXdpbmRvdylcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBkb2N1bWVudCA9IHdpbmRvdy5kb2N1bWVudDtcbiAgICBpZiAoIXZ1ZURlbWkudW5yZWYoZWxlbWVudCkpIHtcbiAgICAgIGVsZW1lbnRJc1Zpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVjdCA9IHZ1ZURlbWkudW5yZWYoZWxlbWVudCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBlbGVtZW50SXNWaXNpYmxlLnZhbHVlID0gcmVjdC50b3AgPD0gKHdpbmRvdy5pbm5lckhlaWdodCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KSAmJiByZWN0LmxlZnQgPD0gKHdpbmRvdy5pbm5lcldpZHRoIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCkgJiYgcmVjdC5ib3R0b20gPj0gMCAmJiByZWN0LnJpZ2h0ID49IDA7XG4gICAgfVxuICB9O1xuICBzaGFyZWQudHJ5T25Nb3VudGVkKHRlc3RCb3VuZGluZyk7XG4gIGlmICh3aW5kb3cpXG4gICAgc2hhcmVkLnRyeU9uTW91bnRlZCgoKSA9PiB1c2VFdmVudExpc3RlbmVyKHZ1ZURlbWkudW5yZWYoc2Nyb2xsVGFyZ2V0KSB8fCB3aW5kb3csIFwic2Nyb2xsXCIsIHRlc3RCb3VuZGluZywgeyBjYXB0dXJlOiBmYWxzZSwgcGFzc2l2ZTogdHJ1ZSB9KSk7XG4gIHJldHVybiBlbGVtZW50SXNWaXNpYmxlO1xufVxuXG5jb25zdCBldmVudHMgPSBuZXcgTWFwKCk7XG5cbmZ1bmN0aW9uIHVzZUV2ZW50QnVzKGtleSkge1xuICBjb25zdCBzY29wZSA9IHZ1ZURlbWkuZ2V0Q3VycmVudFNjb3BlKCk7XG4gIGZ1bmN0aW9uIG9uKGxpc3RlbmVyKSB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IGxpc3RlbmVycyA9IGV2ZW50cy5nZXQoa2V5KSB8fCBbXTtcbiAgICBsaXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG4gICAgZXZlbnRzLnNldChrZXksIGxpc3RlbmVycyk7XG4gICAgY29uc3QgX29mZiA9ICgpID0+IG9mZihsaXN0ZW5lcik7XG4gICAgKF9hID0gc2NvcGUgPT0gbnVsbCA/IHZvaWQgMCA6IHNjb3BlLmNsZWFudXBzKSA9PSBudWxsID8gdm9pZCAwIDogX2EucHVzaChfb2ZmKTtcbiAgICByZXR1cm4gX29mZjtcbiAgfVxuICBmdW5jdGlvbiBvbmNlKGxpc3RlbmVyKSB7XG4gICAgZnVuY3Rpb24gX2xpc3RlbmVyKC4uLmFyZ3MpIHtcbiAgICAgIG9mZihfbGlzdGVuZXIpO1xuICAgICAgbGlzdGVuZXIoLi4uYXJncyk7XG4gICAgfVxuICAgIHJldHVybiBvbihfbGlzdGVuZXIpO1xuICB9XG4gIGZ1bmN0aW9uIG9mZihsaXN0ZW5lcikge1xuICAgIGNvbnN0IGxpc3RlbmVycyA9IGV2ZW50cy5nZXQoa2V5KTtcbiAgICBpZiAoIWxpc3RlbmVycylcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBpbmRleCA9IGxpc3RlbmVycy5pbmRleE9mKGxpc3RlbmVyKTtcbiAgICBpZiAoaW5kZXggPiAtMSlcbiAgICAgIGxpc3RlbmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIGlmICghbGlzdGVuZXJzLmxlbmd0aClcbiAgICAgIGV2ZW50cy5kZWxldGUoa2V5KTtcbiAgfVxuICBmdW5jdGlvbiByZXNldCgpIHtcbiAgICBldmVudHMuZGVsZXRlKGtleSk7XG4gIH1cbiAgZnVuY3Rpb24gZW1pdChldmVudCwgcGF5bG9hZCkge1xuICAgIHZhciBfYTtcbiAgICAoX2EgPSBldmVudHMuZ2V0KGtleSkpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb3JFYWNoKCh2KSA9PiB2KGV2ZW50LCBwYXlsb2FkKSk7XG4gIH1cbiAgcmV0dXJuIHsgb24sIG9uY2UsIG9mZiwgZW1pdCwgcmVzZXQgfTtcbn1cblxuZnVuY3Rpb24gdXNlRXZlbnRTb3VyY2UodXJsLCBldmVudHMgPSBbXSwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IGV2ZW50ID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGNvbnN0IGRhdGEgPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgY29uc3Qgc3RhdHVzID0gdnVlRGVtaS5yZWYoXCJDT05ORUNUSU5HXCIpO1xuICBjb25zdCBldmVudFNvdXJjZSA9IHZ1ZURlbWkucmVmKG51bGwpO1xuICBjb25zdCBlcnJvciA9IHZ1ZURlbWkucmVmKG51bGwpO1xuICBjb25zdCB7XG4gICAgd2l0aENyZWRlbnRpYWxzID0gZmFsc2VcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGNsb3NlID0gKCkgPT4ge1xuICAgIGlmIChldmVudFNvdXJjZS52YWx1ZSkge1xuICAgICAgZXZlbnRTb3VyY2UudmFsdWUuY2xvc2UoKTtcbiAgICAgIGV2ZW50U291cmNlLnZhbHVlID0gbnVsbDtcbiAgICAgIHN0YXR1cy52YWx1ZSA9IFwiQ0xPU0VEXCI7XG4gICAgfVxuICB9O1xuICBjb25zdCBlcyA9IG5ldyBFdmVudFNvdXJjZSh1cmwsIHsgd2l0aENyZWRlbnRpYWxzIH0pO1xuICBldmVudFNvdXJjZS52YWx1ZSA9IGVzO1xuICBlcy5vbm9wZW4gPSAoKSA9PiB7XG4gICAgc3RhdHVzLnZhbHVlID0gXCJPUEVOXCI7XG4gICAgZXJyb3IudmFsdWUgPSBudWxsO1xuICB9O1xuICBlcy5vbmVycm9yID0gKGUpID0+IHtcbiAgICBzdGF0dXMudmFsdWUgPSBcIkNMT1NFRFwiO1xuICAgIGVycm9yLnZhbHVlID0gZTtcbiAgfTtcbiAgZXMub25tZXNzYWdlID0gKGUpID0+IHtcbiAgICBldmVudC52YWx1ZSA9IG51bGw7XG4gICAgZGF0YS52YWx1ZSA9IGUuZGF0YTtcbiAgfTtcbiAgZm9yIChjb25zdCBldmVudF9uYW1lIG9mIGV2ZW50cykge1xuICAgIHVzZUV2ZW50TGlzdGVuZXIoZXMsIGV2ZW50X25hbWUsIChlKSA9PiB7XG4gICAgICBldmVudC52YWx1ZSA9IGV2ZW50X25hbWU7XG4gICAgICBkYXRhLnZhbHVlID0gZS5kYXRhIHx8IG51bGw7XG4gICAgfSk7XG4gIH1cbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKCgpID0+IHtcbiAgICBjbG9zZSgpO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBldmVudFNvdXJjZSxcbiAgICBldmVudCxcbiAgICBkYXRhLFxuICAgIHN0YXR1cyxcbiAgICBlcnJvcixcbiAgICBjbG9zZVxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VFeWVEcm9wcGVyKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IGluaXRpYWxWYWx1ZSA9IFwiXCIgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gQm9vbGVhbih0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIFwiRXllRHJvcHBlclwiIGluIHdpbmRvdyk7XG4gIGNvbnN0IHNSR0JIZXggPSB2dWVEZW1pLnJlZihpbml0aWFsVmFsdWUpO1xuICBhc3luYyBmdW5jdGlvbiBvcGVuKG9wZW5PcHRpb25zKSB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZClcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBleWVEcm9wcGVyID0gbmV3IHdpbmRvdy5FeWVEcm9wcGVyKCk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXllRHJvcHBlci5vcGVuKG9wZW5PcHRpb25zKTtcbiAgICBzUkdCSGV4LnZhbHVlID0gcmVzdWx0LnNSR0JIZXg7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICByZXR1cm4geyBpc1N1cHBvcnRlZCwgc1JHQkhleCwgb3BlbiB9O1xufVxuXG5mdW5jdGlvbiB1c2VGYXZpY29uKG5ld0ljb24gPSBudWxsLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGJhc2VVcmwgPSBcIlwiLFxuICAgIHJlbCA9IFwiaWNvblwiLFxuICAgIGRvY3VtZW50ID0gZGVmYXVsdERvY3VtZW50XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBmYXZpY29uID0gdnVlRGVtaS5pc1JlZihuZXdJY29uKSA/IG5ld0ljb24gOiB2dWVEZW1pLnJlZihuZXdJY29uKTtcbiAgY29uc3QgYXBwbHlJY29uID0gKGljb24pID0+IHtcbiAgICBkb2N1bWVudCA9PSBudWxsID8gdm9pZCAwIDogZG9jdW1lbnQuaGVhZC5xdWVyeVNlbGVjdG9yQWxsKGBsaW5rW3JlbCo9XCIke3JlbH1cIl1gKS5mb3JFYWNoKChlbCkgPT4gZWwuaHJlZiA9IGAke2Jhc2VVcmx9JHtpY29ufWApO1xuICB9O1xuICB2dWVEZW1pLndhdGNoKGZhdmljb24sIChpLCBvKSA9PiB7XG4gICAgaWYgKHNoYXJlZC5pc1N0cmluZyhpKSAmJiBpICE9PSBvKVxuICAgICAgYXBwbHlJY29uKGkpO1xuICB9LCB7IGltbWVkaWF0ZTogdHJ1ZSB9KTtcbiAgcmV0dXJuIGZhdmljb247XG59XG5cbnZhciBfX2RlZlByb3AkYiA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2RlZlByb3BzJDMgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcztcbnZhciBfX2dldE93blByb3BEZXNjcyQzID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyRjID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkYyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJGMgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCRiID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCRiKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyRiID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkYy5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJGIoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJGMpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJGMoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kYy5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkYihhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbnZhciBfX3NwcmVhZFByb3BzJDMgPSAoYSwgYikgPT4gX19kZWZQcm9wcyQzKGEsIF9fZ2V0T3duUHJvcERlc2NzJDMoYikpO1xuY29uc3QgcGF5bG9hZE1hcHBpbmcgPSB7XG4gIGpzb246IFwiYXBwbGljYXRpb24vanNvblwiLFxuICB0ZXh0OiBcInRleHQvcGxhaW5cIixcbiAgZm9ybURhdGE6IFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiXG59O1xuZnVuY3Rpb24gaXNGZXRjaE9wdGlvbnMob2JqKSB7XG4gIHJldHVybiBzaGFyZWQuY29udGFpbnNQcm9wKG9iaiwgXCJpbW1lZGlhdGVcIiwgXCJyZWZldGNoXCIsIFwiaW5pdGlhbERhdGFcIiwgXCJ0aW1lb3V0XCIsIFwiYmVmb3JlRmV0Y2hcIiwgXCJhZnRlckZldGNoXCIsIFwib25GZXRjaEVycm9yXCIsIFwiZmV0Y2hcIik7XG59XG5mdW5jdGlvbiBoZWFkZXJzVG9PYmplY3QoaGVhZGVycykge1xuICBpZiAodHlwZW9mIEhlYWRlcnMgIT09IFwidW5kZWZpbmVkXCIgJiYgaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMpXG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhbLi4uaGVhZGVycy5lbnRyaWVzKCldKTtcbiAgcmV0dXJuIGhlYWRlcnM7XG59XG5mdW5jdGlvbiBjcmVhdGVGZXRjaChjb25maWcgPSB7fSkge1xuICBjb25zdCBfb3B0aW9ucyA9IGNvbmZpZy5vcHRpb25zIHx8IHt9O1xuICBjb25zdCBfZmV0Y2hPcHRpb25zID0gY29uZmlnLmZldGNoT3B0aW9ucyB8fCB7fTtcbiAgZnVuY3Rpb24gdXNlRmFjdG9yeUZldGNoKHVybCwgLi4uYXJncykge1xuICAgIGNvbnN0IGNvbXB1dGVkVXJsID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBjb25maWcuYmFzZVVybCA/IGpvaW5QYXRocyh2dWVEZW1pLnVucmVmKGNvbmZpZy5iYXNlVXJsKSwgdnVlRGVtaS51bnJlZih1cmwpKSA6IHZ1ZURlbWkudW5yZWYodXJsKSk7XG4gICAgbGV0IG9wdGlvbnMgPSBfb3B0aW9ucztcbiAgICBsZXQgZmV0Y2hPcHRpb25zID0gX2ZldGNoT3B0aW9ucztcbiAgICBpZiAoYXJncy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAoaXNGZXRjaE9wdGlvbnMoYXJnc1swXSkpIHtcbiAgICAgICAgb3B0aW9ucyA9IF9fc3ByZWFkVmFsdWVzJGIoX19zcHJlYWRWYWx1ZXMkYih7fSwgb3B0aW9ucyksIGFyZ3NbMF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmV0Y2hPcHRpb25zID0gX19zcHJlYWRQcm9wcyQzKF9fc3ByZWFkVmFsdWVzJGIoX19zcHJlYWRWYWx1ZXMkYih7fSwgZmV0Y2hPcHRpb25zKSwgYXJnc1swXSksIHtcbiAgICAgICAgICBoZWFkZXJzOiBfX3NwcmVhZFZhbHVlcyRiKF9fc3ByZWFkVmFsdWVzJGIoe30sIGhlYWRlcnNUb09iamVjdChmZXRjaE9wdGlvbnMuaGVhZGVycykgfHwge30pLCBoZWFkZXJzVG9PYmplY3QoYXJnc1swXS5oZWFkZXJzKSB8fCB7fSlcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChhcmdzLmxlbmd0aCA+IDEgJiYgaXNGZXRjaE9wdGlvbnMoYXJnc1sxXSkpXG4gICAgICBvcHRpb25zID0gX19zcHJlYWRWYWx1ZXMkYihfX3NwcmVhZFZhbHVlcyRiKHt9LCBvcHRpb25zKSwgYXJnc1sxXSk7XG4gICAgcmV0dXJuIHVzZUZldGNoKGNvbXB1dGVkVXJsLCBmZXRjaE9wdGlvbnMsIG9wdGlvbnMpO1xuICB9XG4gIHJldHVybiB1c2VGYWN0b3J5RmV0Y2g7XG59XG5mdW5jdGlvbiB1c2VGZXRjaCh1cmwsIC4uLmFyZ3MpIHtcbiAgdmFyIF9hO1xuICBjb25zdCBzdXBwb3J0c0Fib3J0ID0gdHlwZW9mIEFib3J0Q29udHJvbGxlciA9PT0gXCJmdW5jdGlvblwiO1xuICBsZXQgZmV0Y2hPcHRpb25zID0ge307XG4gIGxldCBvcHRpb25zID0geyBpbW1lZGlhdGU6IHRydWUsIHJlZmV0Y2g6IGZhbHNlLCB0aW1lb3V0OiAwIH07XG4gIGNvbnN0IGNvbmZpZyA9IHtcbiAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgcGF5bG9hZDogdm9pZCAwXG4gIH07XG4gIGlmIChhcmdzLmxlbmd0aCA+IDApIHtcbiAgICBpZiAoaXNGZXRjaE9wdGlvbnMoYXJnc1swXSkpXG4gICAgICBvcHRpb25zID0gX19zcHJlYWRWYWx1ZXMkYihfX3NwcmVhZFZhbHVlcyRiKHt9LCBvcHRpb25zKSwgYXJnc1swXSk7XG4gICAgZWxzZVxuICAgICAgZmV0Y2hPcHRpb25zID0gYXJnc1swXTtcbiAgfVxuICBpZiAoYXJncy5sZW5ndGggPiAxKSB7XG4gICAgaWYgKGlzRmV0Y2hPcHRpb25zKGFyZ3NbMV0pKVxuICAgICAgb3B0aW9ucyA9IF9fc3ByZWFkVmFsdWVzJGIoX19zcHJlYWRWYWx1ZXMkYih7fSwgb3B0aW9ucyksIGFyZ3NbMV0pO1xuICB9XG4gIGNvbnN0IHtcbiAgICBmZXRjaCA9IChfYSA9IGRlZmF1bHRXaW5kb3cpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mZXRjaCxcbiAgICBpbml0aWFsRGF0YSxcbiAgICB0aW1lb3V0XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCByZXNwb25zZUV2ZW50ID0gc2hhcmVkLmNyZWF0ZUV2ZW50SG9vaygpO1xuICBjb25zdCBlcnJvckV2ZW50ID0gc2hhcmVkLmNyZWF0ZUV2ZW50SG9vaygpO1xuICBjb25zdCBmaW5hbGx5RXZlbnQgPSBzaGFyZWQuY3JlYXRlRXZlbnRIb29rKCk7XG4gIGNvbnN0IGlzRmluaXNoZWQgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IGlzRmV0Y2hpbmcgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IGFib3J0ZWQgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IHN0YXR1c0NvZGUgPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgY29uc3QgcmVzcG9uc2UgPSB2dWVEZW1pLnNoYWxsb3dSZWYobnVsbCk7XG4gIGNvbnN0IGVycm9yID0gdnVlRGVtaS5zaGFsbG93UmVmKG51bGwpO1xuICBjb25zdCBkYXRhID0gdnVlRGVtaS5zaGFsbG93UmVmKGluaXRpYWxEYXRhKTtcbiAgY29uc3QgY2FuQWJvcnQgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHN1cHBvcnRzQWJvcnQgJiYgaXNGZXRjaGluZy52YWx1ZSk7XG4gIGxldCBjb250cm9sbGVyO1xuICBsZXQgdGltZXI7XG4gIGNvbnN0IGFib3J0ID0gKCkgPT4ge1xuICAgIGlmIChzdXBwb3J0c0Fib3J0ICYmIGNvbnRyb2xsZXIpXG4gICAgICBjb250cm9sbGVyLmFib3J0KCk7XG4gIH07XG4gIGNvbnN0IGxvYWRpbmcgPSAoaXNMb2FkaW5nKSA9PiB7XG4gICAgaXNGZXRjaGluZy52YWx1ZSA9IGlzTG9hZGluZztcbiAgICBpc0ZpbmlzaGVkLnZhbHVlID0gIWlzTG9hZGluZztcbiAgfTtcbiAgaWYgKHRpbWVvdXQpXG4gICAgdGltZXIgPSBzaGFyZWQudXNlVGltZW91dEZuKGFib3J0LCB0aW1lb3V0LCB7IGltbWVkaWF0ZTogZmFsc2UgfSk7XG4gIGNvbnN0IGV4ZWN1dGUgPSBhc3luYyAodGhyb3dPbkZhaWxlZCA9IGZhbHNlKSA9PiB7XG4gICAgdmFyIF9hMjtcbiAgICBsb2FkaW5nKHRydWUpO1xuICAgIGVycm9yLnZhbHVlID0gbnVsbDtcbiAgICBzdGF0dXNDb2RlLnZhbHVlID0gbnVsbDtcbiAgICBhYm9ydGVkLnZhbHVlID0gZmFsc2U7XG4gICAgY29udHJvbGxlciA9IHZvaWQgMDtcbiAgICBpZiAoc3VwcG9ydHNBYm9ydCkge1xuICAgICAgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgIGNvbnRyb2xsZXIuc2lnbmFsLm9uYWJvcnQgPSAoKSA9PiBhYm9ydGVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgIGZldGNoT3B0aW9ucyA9IF9fc3ByZWFkUHJvcHMkMyhfX3NwcmVhZFZhbHVlcyRiKHt9LCBmZXRjaE9wdGlvbnMpLCB7XG4gICAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBkZWZhdWx0RmV0Y2hPcHRpb25zID0ge1xuICAgICAgbWV0aG9kOiBjb25maWcubWV0aG9kLFxuICAgICAgaGVhZGVyczoge31cbiAgICB9O1xuICAgIGlmIChjb25maWcucGF5bG9hZCkge1xuICAgICAgY29uc3QgaGVhZGVycyA9IGhlYWRlcnNUb09iamVjdChkZWZhdWx0RmV0Y2hPcHRpb25zLmhlYWRlcnMpO1xuICAgICAgaWYgKGNvbmZpZy5wYXlsb2FkVHlwZSlcbiAgICAgICAgaGVhZGVyc1tcIkNvbnRlbnQtVHlwZVwiXSA9IChfYTIgPSBwYXlsb2FkTWFwcGluZ1tjb25maWcucGF5bG9hZFR5cGVdKSAhPSBudWxsID8gX2EyIDogY29uZmlnLnBheWxvYWRUeXBlO1xuICAgICAgZGVmYXVsdEZldGNoT3B0aW9ucy5ib2R5ID0gY29uZmlnLnBheWxvYWRUeXBlID09PSBcImpzb25cIiA/IEpTT04uc3RyaW5naWZ5KHZ1ZURlbWkudW5yZWYoY29uZmlnLnBheWxvYWQpKSA6IHZ1ZURlbWkudW5yZWYoY29uZmlnLnBheWxvYWQpO1xuICAgIH1cbiAgICBsZXQgaXNDYW5jZWxlZCA9IGZhbHNlO1xuICAgIGNvbnN0IGNvbnRleHQgPSB7IHVybDogdnVlRGVtaS51bnJlZih1cmwpLCBvcHRpb25zOiBfX3NwcmVhZFZhbHVlcyRiKF9fc3ByZWFkVmFsdWVzJGIoe30sIGRlZmF1bHRGZXRjaE9wdGlvbnMpLCBmZXRjaE9wdGlvbnMpLCBjYW5jZWw6ICgpID0+IHtcbiAgICAgIGlzQ2FuY2VsZWQgPSB0cnVlO1xuICAgIH0gfTtcbiAgICBpZiAob3B0aW9ucy5iZWZvcmVGZXRjaClcbiAgICAgIE9iamVjdC5hc3NpZ24oY29udGV4dCwgYXdhaXQgb3B0aW9ucy5iZWZvcmVGZXRjaChjb250ZXh0KSk7XG4gICAgaWYgKGlzQ2FuY2VsZWQgfHwgIWZldGNoKSB7XG4gICAgICBsb2FkaW5nKGZhbHNlKTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XG4gICAgfVxuICAgIGxldCByZXNwb25zZURhdGEgPSBudWxsO1xuICAgIGlmICh0aW1lcilcbiAgICAgIHRpbWVyLnN0YXJ0KCk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHZhciBfYTM7XG4gICAgICBmZXRjaChjb250ZXh0LnVybCwgX19zcHJlYWRQcm9wcyQzKF9fc3ByZWFkVmFsdWVzJGIoX19zcHJlYWRWYWx1ZXMkYih7fSwgZGVmYXVsdEZldGNoT3B0aW9ucyksIGNvbnRleHQub3B0aW9ucyksIHtcbiAgICAgICAgaGVhZGVyczogX19zcHJlYWRWYWx1ZXMkYihfX3NwcmVhZFZhbHVlcyRiKHt9LCBoZWFkZXJzVG9PYmplY3QoZGVmYXVsdEZldGNoT3B0aW9ucy5oZWFkZXJzKSksIGhlYWRlcnNUb09iamVjdCgoX2EzID0gY29udGV4dC5vcHRpb25zKSA9PSBudWxsID8gdm9pZCAwIDogX2EzLmhlYWRlcnMpKVxuICAgICAgfSkpLnRoZW4oYXN5bmMgKGZldGNoUmVzcG9uc2UpID0+IHtcbiAgICAgICAgcmVzcG9uc2UudmFsdWUgPSBmZXRjaFJlc3BvbnNlO1xuICAgICAgICBzdGF0dXNDb2RlLnZhbHVlID0gZmV0Y2hSZXNwb25zZS5zdGF0dXM7XG4gICAgICAgIHJlc3BvbnNlRGF0YSA9IGF3YWl0IGZldGNoUmVzcG9uc2VbY29uZmlnLnR5cGVdKCk7XG4gICAgICAgIGlmIChvcHRpb25zLmFmdGVyRmV0Y2ggJiYgc3RhdHVzQ29kZS52YWx1ZSA+PSAyMDAgJiYgc3RhdHVzQ29kZS52YWx1ZSA8IDMwMClcbiAgICAgICAgICAoeyBkYXRhOiByZXNwb25zZURhdGEgfSA9IGF3YWl0IG9wdGlvbnMuYWZ0ZXJGZXRjaCh7IGRhdGE6IHJlc3BvbnNlRGF0YSwgcmVzcG9uc2U6IGZldGNoUmVzcG9uc2UgfSkpO1xuICAgICAgICBkYXRhLnZhbHVlID0gcmVzcG9uc2VEYXRhO1xuICAgICAgICBpZiAoIWZldGNoUmVzcG9uc2Uub2spXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGZldGNoUmVzcG9uc2Uuc3RhdHVzVGV4dCk7XG4gICAgICAgIHJlc3BvbnNlRXZlbnQudHJpZ2dlcihmZXRjaFJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoZmV0Y2hSZXNwb25zZSk7XG4gICAgICB9KS5jYXRjaChhc3luYyAoZmV0Y2hFcnJvcikgPT4ge1xuICAgICAgICBsZXQgZXJyb3JEYXRhID0gZmV0Y2hFcnJvci5tZXNzYWdlIHx8IGZldGNoRXJyb3IubmFtZTtcbiAgICAgICAgaWYgKG9wdGlvbnMub25GZXRjaEVycm9yKVxuICAgICAgICAgICh7IGRhdGE6IHJlc3BvbnNlRGF0YSwgZXJyb3I6IGVycm9yRGF0YSB9ID0gYXdhaXQgb3B0aW9ucy5vbkZldGNoRXJyb3IoeyBkYXRhOiByZXNwb25zZURhdGEsIGVycm9yOiBmZXRjaEVycm9yLCByZXNwb25zZTogcmVzcG9uc2UudmFsdWUgfSkpO1xuICAgICAgICBkYXRhLnZhbHVlID0gcmVzcG9uc2VEYXRhO1xuICAgICAgICBlcnJvci52YWx1ZSA9IGVycm9yRGF0YTtcbiAgICAgICAgZXJyb3JFdmVudC50cmlnZ2VyKGZldGNoRXJyb3IpO1xuICAgICAgICBpZiAodGhyb3dPbkZhaWxlZClcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KGZldGNoRXJyb3IpO1xuICAgICAgICByZXR1cm4gcmVzb2x2ZShudWxsKTtcbiAgICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBsb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgaWYgKHRpbWVyKVxuICAgICAgICAgIHRpbWVyLnN0b3AoKTtcbiAgICAgICAgZmluYWxseUV2ZW50LnRyaWdnZXIobnVsbCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcbiAgdnVlRGVtaS53YXRjaCgoKSA9PiBbXG4gICAgdnVlRGVtaS51bnJlZih1cmwpLFxuICAgIHZ1ZURlbWkudW5yZWYob3B0aW9ucy5yZWZldGNoKVxuICBdLCAoKSA9PiB2dWVEZW1pLnVucmVmKG9wdGlvbnMucmVmZXRjaCkgJiYgZXhlY3V0ZSgpLCB7IGRlZXA6IHRydWUgfSk7XG4gIGNvbnN0IHNoZWxsID0ge1xuICAgIGlzRmluaXNoZWQsXG4gICAgc3RhdHVzQ29kZSxcbiAgICByZXNwb25zZSxcbiAgICBlcnJvcixcbiAgICBkYXRhLFxuICAgIGlzRmV0Y2hpbmcsXG4gICAgY2FuQWJvcnQsXG4gICAgYWJvcnRlZCxcbiAgICBhYm9ydCxcbiAgICBleGVjdXRlLFxuICAgIG9uRmV0Y2hSZXNwb25zZTogcmVzcG9uc2VFdmVudC5vbixcbiAgICBvbkZldGNoRXJyb3I6IGVycm9yRXZlbnQub24sXG4gICAgb25GZXRjaEZpbmFsbHk6IGZpbmFsbHlFdmVudC5vbixcbiAgICBnZXQ6IHNldE1ldGhvZChcIkdFVFwiKSxcbiAgICBwdXQ6IHNldE1ldGhvZChcIlBVVFwiKSxcbiAgICBwb3N0OiBzZXRNZXRob2QoXCJQT1NUXCIpLFxuICAgIGRlbGV0ZTogc2V0TWV0aG9kKFwiREVMRVRFXCIpLFxuICAgIHBhdGNoOiBzZXRNZXRob2QoXCJQQVRDSFwiKSxcbiAgICBoZWFkOiBzZXRNZXRob2QoXCJIRUFEXCIpLFxuICAgIG9wdGlvbnM6IHNldE1ldGhvZChcIk9QVElPTlNcIiksXG4gICAganNvbjogc2V0VHlwZShcImpzb25cIiksXG4gICAgdGV4dDogc2V0VHlwZShcInRleHRcIiksXG4gICAgYmxvYjogc2V0VHlwZShcImJsb2JcIiksXG4gICAgYXJyYXlCdWZmZXI6IHNldFR5cGUoXCJhcnJheUJ1ZmZlclwiKSxcbiAgICBmb3JtRGF0YTogc2V0VHlwZShcImZvcm1EYXRhXCIpXG4gIH07XG4gIGZ1bmN0aW9uIHNldE1ldGhvZChtZXRob2QpIHtcbiAgICByZXR1cm4gKHBheWxvYWQsIHBheWxvYWRUeXBlKSA9PiB7XG4gICAgICBpZiAoIWlzRmV0Y2hpbmcudmFsdWUpIHtcbiAgICAgICAgY29uZmlnLm1ldGhvZCA9IG1ldGhvZDtcbiAgICAgICAgY29uZmlnLnBheWxvYWQgPSBwYXlsb2FkO1xuICAgICAgICBjb25maWcucGF5bG9hZFR5cGUgPSBwYXlsb2FkVHlwZTtcbiAgICAgICAgaWYgKHZ1ZURlbWkuaXNSZWYoY29uZmlnLnBheWxvYWQpKSB7XG4gICAgICAgICAgdnVlRGVtaS53YXRjaCgoKSA9PiBbXG4gICAgICAgICAgICB2dWVEZW1pLnVucmVmKGNvbmZpZy5wYXlsb2FkKSxcbiAgICAgICAgICAgIHZ1ZURlbWkudW5yZWYob3B0aW9ucy5yZWZldGNoKVxuICAgICAgICAgIF0sICgpID0+IHZ1ZURlbWkudW5yZWYob3B0aW9ucy5yZWZldGNoKSAmJiBleGVjdXRlKCksIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXBheWxvYWRUeXBlICYmIHZ1ZURlbWkudW5yZWYocGF5bG9hZCkgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKHZ1ZURlbWkudW5yZWYocGF5bG9hZCkpID09PSBPYmplY3QucHJvdG90eXBlKVxuICAgICAgICAgIGNvbmZpZy5wYXlsb2FkVHlwZSA9IFwianNvblwiO1xuICAgICAgICByZXR1cm4gX19zcHJlYWRQcm9wcyQzKF9fc3ByZWFkVmFsdWVzJGIoe30sIHNoZWxsKSwge1xuICAgICAgICAgIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB3YWl0VW50aWxGaW5pc2hlZCgpLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH07XG4gIH1cbiAgZnVuY3Rpb24gd2FpdFVudGlsRmluaXNoZWQoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHNoYXJlZC51bnRpbChpc0ZpbmlzaGVkKS50b0JlKHRydWUpLnRoZW4oKCkgPT4gcmVzb2x2ZShzaGVsbCkpLmNhdGNoKChlcnJvcjIpID0+IHJlamVjdChlcnJvcjIpKTtcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBzZXRUeXBlKHR5cGUpIHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKCFpc0ZldGNoaW5nLnZhbHVlKSB7XG4gICAgICAgIGNvbmZpZy50eXBlID0gdHlwZTtcbiAgICAgICAgcmV0dXJuIF9fc3ByZWFkUHJvcHMkMyhfX3NwcmVhZFZhbHVlcyRiKHt9LCBzaGVsbCksIHtcbiAgICAgICAgICB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gd2FpdFVudGlsRmluaXNoZWQoKS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9O1xuICB9XG4gIGlmIChvcHRpb25zLmltbWVkaWF0ZSlcbiAgICBzZXRUaW1lb3V0KGV4ZWN1dGUsIDApO1xuICByZXR1cm4gX19zcHJlYWRQcm9wcyQzKF9fc3ByZWFkVmFsdWVzJGIoe30sIHNoZWxsKSwge1xuICAgIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICAgIHJldHVybiB3YWl0VW50aWxGaW5pc2hlZCgpLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiBqb2luUGF0aHMoc3RhcnQsIGVuZCkge1xuICBpZiAoIXN0YXJ0LmVuZHNXaXRoKFwiL1wiKSAmJiAhZW5kLnN0YXJ0c1dpdGgoXCIvXCIpKVxuICAgIHJldHVybiBgJHtzdGFydH0vJHtlbmR9YDtcbiAgcmV0dXJuIGAke3N0YXJ0fSR7ZW5kfWA7XG59XG5cbnZhciBfX2RlZlByb3AkYSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BTeW1ib2xzJGIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCRiID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kYiA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJGEgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJGEob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJGEgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCRiLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkYShhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkYilcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkYihiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSRiLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCRhKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xuY29uc3QgREVGQVVMVF9PUFRJT05TID0ge1xuICBtdWx0aXBsZTogdHJ1ZSxcbiAgYWNjZXB0OiBcIipcIlxufTtcbmZ1bmN0aW9uIHVzZUZpbGVEaWFsb2cob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBkb2N1bWVudCA9IGRlZmF1bHREb2N1bWVudFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgZmlsZXMgPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgbGV0IGlucHV0O1xuICBpZiAoZG9jdW1lbnQpIHtcbiAgICBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTtcbiAgICBpbnB1dC50eXBlID0gXCJmaWxlXCI7XG4gICAgaW5wdXQub25jaGFuZ2UgPSAoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGV2ZW50LnRhcmdldDtcbiAgICAgIGZpbGVzLnZhbHVlID0gcmVzdWx0LmZpbGVzO1xuICAgIH07XG4gIH1cbiAgY29uc3Qgb3BlbiA9IChsb2NhbE9wdGlvbnMpID0+IHtcbiAgICBpZiAoIWlucHV0KVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IF9vcHRpb25zID0gX19zcHJlYWRWYWx1ZXMkYShfX3NwcmVhZFZhbHVlcyRhKF9fc3ByZWFkVmFsdWVzJGEoe30sIERFRkFVTFRfT1BUSU9OUyksIG9wdGlvbnMpLCBsb2NhbE9wdGlvbnMpO1xuICAgIGlucHV0Lm11bHRpcGxlID0gX29wdGlvbnMubXVsdGlwbGU7XG4gICAgaW5wdXQuYWNjZXB0ID0gX29wdGlvbnMuYWNjZXB0O1xuICAgIGlucHV0LmNhcHR1cmUgPSBfb3B0aW9ucy5jYXB0dXJlO1xuICAgIGlucHV0LmNsaWNrKCk7XG4gIH07XG4gIGNvbnN0IHJlc2V0ID0gKCkgPT4ge1xuICAgIGZpbGVzLnZhbHVlID0gbnVsbDtcbiAgICBpZiAoaW5wdXQpXG4gICAgICBpbnB1dC52YWx1ZSA9IFwiXCI7XG4gIH07XG4gIHJldHVybiB7XG4gICAgZmlsZXM6IHZ1ZURlbWkucmVhZG9ubHkoZmlsZXMpLFxuICAgIG9wZW4sXG4gICAgcmVzZXRcbiAgfTtcbn1cblxudmFyIF9fZGVmUHJvcCQ5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkYSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJGEgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSRhID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkOSA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkOShvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkOSA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJGEuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCQ5KGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyRhKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyRhKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJGEuY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJDkoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG5mdW5jdGlvbiB1c2VGaWxlU3lzdGVtQWNjZXNzKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgd2luZG93OiBfd2luZG93ID0gZGVmYXVsdFdpbmRvdyxcbiAgICBkYXRhVHlwZSA9IFwiVGV4dFwiXG4gIH0gPSB2dWVEZW1pLnVucmVmKG9wdGlvbnMpO1xuICBjb25zdCB3aW5kb3cgPSBfd2luZG93O1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IEJvb2xlYW4od2luZG93ICYmIFwic2hvd1NhdmVGaWxlUGlja2VyXCIgaW4gd2luZG93ICYmIFwic2hvd09wZW5GaWxlUGlja2VyXCIgaW4gd2luZG93KTtcbiAgY29uc3QgZmlsZUhhbmRsZSA9IHZ1ZURlbWkucmVmKCk7XG4gIGNvbnN0IGRhdGEgPSB2dWVEZW1pLnJlZigpO1xuICBjb25zdCBmaWxlID0gdnVlRGVtaS5yZWYoKTtcbiAgY29uc3QgZmlsZU5hbWUgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIHJldHVybiAoX2IgPSAoX2EgPSBmaWxlLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EubmFtZSkgIT0gbnVsbCA/IF9iIDogXCJcIjtcbiAgfSk7XG4gIGNvbnN0IGZpbGVNSU1FID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICByZXR1cm4gKF9iID0gKF9hID0gZmlsZS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnR5cGUpICE9IG51bGwgPyBfYiA6IFwiXCI7XG4gIH0pO1xuICBjb25zdCBmaWxlU2l6ZSA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfYSwgX2I7XG4gICAgcmV0dXJuIChfYiA9IChfYSA9IGZpbGUudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5zaXplKSAhPSBudWxsID8gX2IgOiAwO1xuICB9KTtcbiAgY29uc3QgZmlsZUxhc3RNb2RpZmllZCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfYSwgX2I7XG4gICAgcmV0dXJuIChfYiA9IChfYSA9IGZpbGUudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5sYXN0TW9kaWZpZWQpICE9IG51bGwgPyBfYiA6IDA7XG4gIH0pO1xuICBhc3luYyBmdW5jdGlvbiBvcGVuKF9vcHRpb25zID0ge30pIHtcbiAgICBpZiAoIWlzU3VwcG9ydGVkKVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IFtoYW5kbGVdID0gYXdhaXQgd2luZG93LnNob3dPcGVuRmlsZVBpY2tlcihfX3NwcmVhZFZhbHVlcyQ5KF9fc3ByZWFkVmFsdWVzJDkoe30sIHZ1ZURlbWkudW5yZWYob3B0aW9ucykpLCBfb3B0aW9ucykpO1xuICAgIGZpbGVIYW5kbGUudmFsdWUgPSBoYW5kbGU7XG4gICAgYXdhaXQgdXBkYXRlRmlsZSgpO1xuICAgIGF3YWl0IHVwZGF0ZURhdGEoKTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBjcmVhdGUoX29wdGlvbnMgPSB7fSkge1xuICAgIGlmICghaXNTdXBwb3J0ZWQpXG4gICAgICByZXR1cm47XG4gICAgZmlsZUhhbmRsZS52YWx1ZSA9IGF3YWl0IHdpbmRvdy5zaG93U2F2ZUZpbGVQaWNrZXIoX19zcHJlYWRWYWx1ZXMkOShfX3NwcmVhZFZhbHVlcyQ5KHt9LCB2dWVEZW1pLnVucmVmKG9wdGlvbnMpKSwgX29wdGlvbnMpKTtcbiAgICBkYXRhLnZhbHVlID0gdm9pZCAwO1xuICAgIGF3YWl0IHVwZGF0ZUZpbGUoKTtcbiAgICBhd2FpdCB1cGRhdGVEYXRhKCk7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gc2F2ZShfb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKCFpc1N1cHBvcnRlZClcbiAgICAgIHJldHVybjtcbiAgICBpZiAoIWZpbGVIYW5kbGUudmFsdWUpXG4gICAgICByZXR1cm4gc2F2ZUFzKF9vcHRpb25zKTtcbiAgICBpZiAoZGF0YS52YWx1ZSkge1xuICAgICAgY29uc3Qgd3JpdGFibGVTdHJlYW0gPSBhd2FpdCBmaWxlSGFuZGxlLnZhbHVlLmNyZWF0ZVdyaXRhYmxlKCk7XG4gICAgICBhd2FpdCB3cml0YWJsZVN0cmVhbS53cml0ZShkYXRhLnZhbHVlKTtcbiAgICAgIGF3YWl0IHdyaXRhYmxlU3RyZWFtLmNsb3NlKCk7XG4gICAgfVxuICAgIGF3YWl0IHVwZGF0ZUZpbGUoKTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBzYXZlQXMoX29wdGlvbnMgPSB7fSkge1xuICAgIGlmICghaXNTdXBwb3J0ZWQpXG4gICAgICByZXR1cm47XG4gICAgZmlsZUhhbmRsZS52YWx1ZSA9IGF3YWl0IHdpbmRvdy5zaG93U2F2ZUZpbGVQaWNrZXIoX19zcHJlYWRWYWx1ZXMkOShfX3NwcmVhZFZhbHVlcyQ5KHt9LCB2dWVEZW1pLnVucmVmKG9wdGlvbnMpKSwgX29wdGlvbnMpKTtcbiAgICBpZiAoZGF0YS52YWx1ZSkge1xuICAgICAgY29uc3Qgd3JpdGFibGVTdHJlYW0gPSBhd2FpdCBmaWxlSGFuZGxlLnZhbHVlLmNyZWF0ZVdyaXRhYmxlKCk7XG4gICAgICBhd2FpdCB3cml0YWJsZVN0cmVhbS53cml0ZShkYXRhLnZhbHVlKTtcbiAgICAgIGF3YWl0IHdyaXRhYmxlU3RyZWFtLmNsb3NlKCk7XG4gICAgfVxuICAgIGF3YWl0IHVwZGF0ZUZpbGUoKTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiB1cGRhdGVGaWxlKCkge1xuICAgIHZhciBfYTtcbiAgICBmaWxlLnZhbHVlID0gYXdhaXQgKChfYSA9IGZpbGVIYW5kbGUudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5nZXRGaWxlKCkpO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZURhdGEoKSB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBpZiAodnVlRGVtaS51bnJlZihkYXRhVHlwZSkgPT09IFwiVGV4dFwiKVxuICAgICAgZGF0YS52YWx1ZSA9IGF3YWl0ICgoX2EgPSBmaWxlLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EudGV4dCgpKTtcbiAgICBpZiAodnVlRGVtaS51bnJlZihkYXRhVHlwZSkgPT09IFwiQXJyYXlCdWZmZXJcIilcbiAgICAgIGRhdGEudmFsdWUgPSBhd2FpdCAoKF9iID0gZmlsZS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmFycmF5QnVmZmVyKCkpO1xuICAgIGlmICh2dWVEZW1pLnVucmVmKGRhdGFUeXBlKSA9PT0gXCJCbG9iXCIpXG4gICAgICBkYXRhLnZhbHVlID0gZmlsZS52YWx1ZTtcbiAgfVxuICB2dWVEZW1pLndhdGNoKCgpID0+IHZ1ZURlbWkudW5yZWYoZGF0YVR5cGUpLCB1cGRhdGVEYXRhKTtcbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBkYXRhLFxuICAgIGZpbGUsXG4gICAgZmlsZU5hbWUsXG4gICAgZmlsZU1JTUUsXG4gICAgZmlsZVNpemUsXG4gICAgZmlsZUxhc3RNb2RpZmllZCxcbiAgICBvcGVuLFxuICAgIGNyZWF0ZSxcbiAgICBzYXZlLFxuICAgIHNhdmVBcyxcbiAgICB1cGRhdGVEYXRhXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZUZvY3VzKHRhcmdldCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgaW5pdGlhbFZhbHVlID0gZmFsc2UgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSB1c2VBY3RpdmVFbGVtZW50KG9wdGlvbnMpO1xuICBjb25zdCB0YXJnZXRFbGVtZW50ID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB1bnJlZkVsZW1lbnQodGFyZ2V0KSk7XG4gIGNvbnN0IGZvY3VzZWQgPSB2dWVEZW1pLmNvbXB1dGVkKHtcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gc2hhcmVkLmlzRGVmKGFjdGl2ZUVsZW1lbnQudmFsdWUpICYmIHNoYXJlZC5pc0RlZih0YXJnZXRFbGVtZW50LnZhbHVlKSAmJiBhY3RpdmVFbGVtZW50LnZhbHVlID09PSB0YXJnZXRFbGVtZW50LnZhbHVlO1xuICAgIH0sXG4gICAgc2V0KHZhbHVlKSB7XG4gICAgICB2YXIgX2EsIF9iO1xuICAgICAgaWYgKCF2YWx1ZSAmJiBmb2N1c2VkLnZhbHVlKVxuICAgICAgICAoX2EgPSB0YXJnZXRFbGVtZW50LnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuYmx1cigpO1xuICAgICAgaWYgKHZhbHVlICYmICFmb2N1c2VkLnZhbHVlKVxuICAgICAgICAoX2IgPSB0YXJnZXRFbGVtZW50LnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2IuZm9jdXMoKTtcbiAgICB9XG4gIH0pO1xuICB2dWVEZW1pLndhdGNoKHRhcmdldEVsZW1lbnQsICgpID0+IHtcbiAgICBmb2N1c2VkLnZhbHVlID0gaW5pdGlhbFZhbHVlO1xuICB9LCB7IGltbWVkaWF0ZTogdHJ1ZSwgZmx1c2g6IFwicG9zdFwiIH0pO1xuICByZXR1cm4geyBmb2N1c2VkIH07XG59XG5cbmZ1bmN0aW9uIHVzZUZvY3VzV2l0aGluKHRhcmdldCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSB1c2VBY3RpdmVFbGVtZW50KG9wdGlvbnMpO1xuICBjb25zdCB0YXJnZXRFbGVtZW50ID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB1bnJlZkVsZW1lbnQodGFyZ2V0KSk7XG4gIGNvbnN0IGZvY3VzZWQgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHRhcmdldEVsZW1lbnQudmFsdWUgJiYgYWN0aXZlRWxlbWVudC52YWx1ZSA/IHRhcmdldEVsZW1lbnQudmFsdWUuY29udGFpbnMoYWN0aXZlRWxlbWVudC52YWx1ZSkgOiBmYWxzZSk7XG4gIHJldHVybiB7IGZvY3VzZWQgfTtcbn1cblxuZnVuY3Rpb24gdXNlRnBzKG9wdGlvbnMpIHtcbiAgdmFyIF9hO1xuICBjb25zdCBmcHMgPSB2dWVEZW1pLnJlZigwKTtcbiAgaWYgKHR5cGVvZiBwZXJmb3JtYW5jZSA9PT0gXCJ1bmRlZmluZWRcIilcbiAgICByZXR1cm4gZnBzO1xuICBjb25zdCBldmVyeSA9IChfYSA9IG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuZXZlcnkpICE9IG51bGwgPyBfYSA6IDEwO1xuICBsZXQgbGFzdCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICBsZXQgdGlja3MgPSAwO1xuICB1c2VSYWZGbigoKSA9PiB7XG4gICAgdGlja3MgKz0gMTtcbiAgICBpZiAodGlja3MgPj0gZXZlcnkpIHtcbiAgICAgIGNvbnN0IG5vdyA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgICAgY29uc3QgZGlmZiA9IG5vdyAtIGxhc3Q7XG4gICAgICBmcHMudmFsdWUgPSBNYXRoLnJvdW5kKDFlMyAvIChkaWZmIC8gdGlja3MpKTtcbiAgICAgIGxhc3QgPSBub3c7XG4gICAgICB0aWNrcyA9IDA7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGZwcztcbn1cblxuY29uc3QgZnVuY3Rpb25zTWFwID0gW1xuICBbXG4gICAgXCJyZXF1ZXN0RnVsbHNjcmVlblwiLFxuICAgIFwiZXhpdEZ1bGxzY3JlZW5cIixcbiAgICBcImZ1bGxzY3JlZW5FbGVtZW50XCIsXG4gICAgXCJmdWxsc2NyZWVuRW5hYmxlZFwiLFxuICAgIFwiZnVsbHNjcmVlbmNoYW5nZVwiLFxuICAgIFwiZnVsbHNjcmVlbmVycm9yXCJcbiAgXSxcbiAgW1xuICAgIFwid2Via2l0UmVxdWVzdEZ1bGxzY3JlZW5cIixcbiAgICBcIndlYmtpdEV4aXRGdWxsc2NyZWVuXCIsXG4gICAgXCJ3ZWJraXRGdWxsc2NyZWVuRWxlbWVudFwiLFxuICAgIFwid2Via2l0RnVsbHNjcmVlbkVuYWJsZWRcIixcbiAgICBcIndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2VcIixcbiAgICBcIndlYmtpdGZ1bGxzY3JlZW5lcnJvclwiXG4gIF0sXG4gIFtcbiAgICBcIndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuXCIsXG4gICAgXCJ3ZWJraXRDYW5jZWxGdWxsU2NyZWVuXCIsXG4gICAgXCJ3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnRcIixcbiAgICBcIndlYmtpdENhbmNlbEZ1bGxTY3JlZW5cIixcbiAgICBcIndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2VcIixcbiAgICBcIndlYmtpdGZ1bGxzY3JlZW5lcnJvclwiXG4gIF0sXG4gIFtcbiAgICBcIm1velJlcXVlc3RGdWxsU2NyZWVuXCIsXG4gICAgXCJtb3pDYW5jZWxGdWxsU2NyZWVuXCIsXG4gICAgXCJtb3pGdWxsU2NyZWVuRWxlbWVudFwiLFxuICAgIFwibW96RnVsbFNjcmVlbkVuYWJsZWRcIixcbiAgICBcIm1vemZ1bGxzY3JlZW5jaGFuZ2VcIixcbiAgICBcIm1vemZ1bGxzY3JlZW5lcnJvclwiXG4gIF0sXG4gIFtcbiAgICBcIm1zUmVxdWVzdEZ1bGxzY3JlZW5cIixcbiAgICBcIm1zRXhpdEZ1bGxzY3JlZW5cIixcbiAgICBcIm1zRnVsbHNjcmVlbkVsZW1lbnRcIixcbiAgICBcIm1zRnVsbHNjcmVlbkVuYWJsZWRcIixcbiAgICBcIk1TRnVsbHNjcmVlbkNoYW5nZVwiLFxuICAgIFwiTVNGdWxsc2NyZWVuRXJyb3JcIlxuICBdXG5dO1xuZnVuY3Rpb24gdXNlRnVsbHNjcmVlbih0YXJnZXQsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IGRvY3VtZW50ID0gZGVmYXVsdERvY3VtZW50LCBhdXRvRXhpdCA9IGZhbHNlIH0gPSBvcHRpb25zO1xuICBjb25zdCB0YXJnZXRSZWYgPSB0YXJnZXQgfHwgKGRvY3VtZW50ID09IG51bGwgPyB2b2lkIDAgOiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiaHRtbFwiKSk7XG4gIGNvbnN0IGlzRnVsbHNjcmVlbiA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgbGV0IGlzU3VwcG9ydGVkID0gZmFsc2U7XG4gIGxldCBtYXAgPSBmdW5jdGlvbnNNYXBbMF07XG4gIGlmICghZG9jdW1lbnQpIHtcbiAgICBpc1N1cHBvcnRlZCA9IGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIGZvciAoY29uc3QgbSBvZiBmdW5jdGlvbnNNYXApIHtcbiAgICAgIGlmIChtWzFdIGluIGRvY3VtZW50KSB7XG4gICAgICAgIG1hcCA9IG07XG4gICAgICAgIGlzU3VwcG9ydGVkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNvbnN0IFtSRVFVRVNULCBFWElULCBFTEVNRU5ULCAsIEVWRU5UXSA9IG1hcDtcbiAgYXN5bmMgZnVuY3Rpb24gZXhpdCgpIHtcbiAgICBpZiAoIWlzU3VwcG9ydGVkKVxuICAgICAgcmV0dXJuO1xuICAgIGlmIChkb2N1bWVudCA9PSBudWxsID8gdm9pZCAwIDogZG9jdW1lbnRbRUxFTUVOVF0pXG4gICAgICBhd2FpdCBkb2N1bWVudFtFWElUXSgpO1xuICAgIGlzRnVsbHNjcmVlbi52YWx1ZSA9IGZhbHNlO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIGVudGVyKCkge1xuICAgIGlmICghaXNTdXBwb3J0ZWQpXG4gICAgICByZXR1cm47XG4gICAgYXdhaXQgZXhpdCgpO1xuICAgIGNvbnN0IHRhcmdldDIgPSB1bnJlZkVsZW1lbnQodGFyZ2V0UmVmKTtcbiAgICBpZiAodGFyZ2V0Mikge1xuICAgICAgYXdhaXQgdGFyZ2V0MltSRVFVRVNUXSgpO1xuICAgICAgaXNGdWxsc2NyZWVuLnZhbHVlID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gdG9nZ2xlKCkge1xuICAgIGlmIChpc0Z1bGxzY3JlZW4udmFsdWUpXG4gICAgICBhd2FpdCBleGl0KCk7XG4gICAgZWxzZVxuICAgICAgYXdhaXQgZW50ZXIoKTtcbiAgfVxuICBpZiAoZG9jdW1lbnQpIHtcbiAgICB1c2VFdmVudExpc3RlbmVyKGRvY3VtZW50LCBFVkVOVCwgKCkgPT4ge1xuICAgICAgaXNGdWxsc2NyZWVuLnZhbHVlID0gISEoZG9jdW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IGRvY3VtZW50W0VMRU1FTlRdKTtcbiAgICB9LCBmYWxzZSk7XG4gIH1cbiAgaWYgKGF1dG9FeGl0KVxuICAgIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZShleGl0KTtcbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBpc0Z1bGxzY3JlZW4sXG4gICAgZW50ZXIsXG4gICAgZXhpdCxcbiAgICB0b2dnbGVcbiAgfTtcbn1cblxuZnVuY3Rpb24gbWFwR2FtZXBhZFRvWGJveDM2MENvbnRyb2xsZXIoZ2FtZXBhZCkge1xuICByZXR1cm4gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGdhbWVwYWQudmFsdWUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJ1dHRvbnM6IHtcbiAgICAgICAgICBhOiBnYW1lcGFkLnZhbHVlLmJ1dHRvbnNbMF0sXG4gICAgICAgICAgYjogZ2FtZXBhZC52YWx1ZS5idXR0b25zWzFdLFxuICAgICAgICAgIHg6IGdhbWVwYWQudmFsdWUuYnV0dG9uc1syXSxcbiAgICAgICAgICB5OiBnYW1lcGFkLnZhbHVlLmJ1dHRvbnNbM11cbiAgICAgICAgfSxcbiAgICAgICAgYnVtcGVyOiB7XG4gICAgICAgICAgbGVmdDogZ2FtZXBhZC52YWx1ZS5idXR0b25zWzRdLFxuICAgICAgICAgIHJpZ2h0OiBnYW1lcGFkLnZhbHVlLmJ1dHRvbnNbNV1cbiAgICAgICAgfSxcbiAgICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgICBsZWZ0OiBnYW1lcGFkLnZhbHVlLmJ1dHRvbnNbNl0sXG4gICAgICAgICAgcmlnaHQ6IGdhbWVwYWQudmFsdWUuYnV0dG9uc1s3XVxuICAgICAgICB9LFxuICAgICAgICBzdGljazoge1xuICAgICAgICAgIGxlZnQ6IHtcbiAgICAgICAgICAgIGhvcml6b250YWw6IGdhbWVwYWQudmFsdWUuYXhlc1swXSxcbiAgICAgICAgICAgIHZlcnRpY2FsOiBnYW1lcGFkLnZhbHVlLmF4ZXNbMV0sXG4gICAgICAgICAgICBidXR0b246IGdhbWVwYWQudmFsdWUuYnV0dG9uc1sxMF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJpZ2h0OiB7XG4gICAgICAgICAgICBob3Jpem9udGFsOiBnYW1lcGFkLnZhbHVlLmF4ZXNbMl0sXG4gICAgICAgICAgICB2ZXJ0aWNhbDogZ2FtZXBhZC52YWx1ZS5heGVzWzNdLFxuICAgICAgICAgICAgYnV0dG9uOiBnYW1lcGFkLnZhbHVlLmJ1dHRvbnNbMTFdXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkcGFkOiB7XG4gICAgICAgICAgdXA6IGdhbWVwYWQudmFsdWUuYnV0dG9uc1sxMl0sXG4gICAgICAgICAgZG93bjogZ2FtZXBhZC52YWx1ZS5idXR0b25zWzEzXSxcbiAgICAgICAgICBsZWZ0OiBnYW1lcGFkLnZhbHVlLmJ1dHRvbnNbMTRdLFxuICAgICAgICAgIHJpZ2h0OiBnYW1lcGFkLnZhbHVlLmJ1dHRvbnNbMTVdXG4gICAgICAgIH0sXG4gICAgICAgIGJhY2s6IGdhbWVwYWQudmFsdWUuYnV0dG9uc1s4XSxcbiAgICAgICAgc3RhcnQ6IGdhbWVwYWQudmFsdWUuYnV0dG9uc1s5XVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0pO1xufVxuZnVuY3Rpb24gdXNlR2FtZXBhZChvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIG5hdmlnYXRvciA9IGRlZmF1bHROYXZpZ2F0b3JcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gbmF2aWdhdG9yICYmIFwiZ2V0R2FtZXBhZHNcIiBpbiBuYXZpZ2F0b3I7XG4gIGNvbnN0IGdhbWVwYWRzID0gdnVlRGVtaS5yZWYoW10pO1xuICBjb25zdCBvbkNvbm5lY3RlZEhvb2sgPSBzaGFyZWQuY3JlYXRlRXZlbnRIb29rKCk7XG4gIGNvbnN0IG9uRGlzY29ubmVjdGVkSG9vayA9IHNoYXJlZC5jcmVhdGVFdmVudEhvb2soKTtcbiAgY29uc3Qgc3RhdGVGcm9tR2FtZXBhZCA9IChnYW1lcGFkKSA9PiB7XG4gICAgY29uc3QgaGFwdGljQWN0dWF0b3JzID0gW107XG4gICAgY29uc3QgdmlicmF0aW9uQWN0dWF0b3IgPSBcInZpYnJhdGlvbkFjdHVhdG9yXCIgaW4gZ2FtZXBhZCA/IGdhbWVwYWQudmlicmF0aW9uQWN0dWF0b3IgOiBudWxsO1xuICAgIGlmICh2aWJyYXRpb25BY3R1YXRvcilcbiAgICAgIGhhcHRpY0FjdHVhdG9ycy5wdXNoKHZpYnJhdGlvbkFjdHVhdG9yKTtcbiAgICBpZiAoZ2FtZXBhZC5oYXB0aWNBY3R1YXRvcnMpXG4gICAgICBoYXB0aWNBY3R1YXRvcnMucHVzaCguLi5nYW1lcGFkLmhhcHRpY0FjdHVhdG9ycyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBnYW1lcGFkLmlkLFxuICAgICAgaGFwdGljQWN0dWF0b3JzLFxuICAgICAgaW5kZXg6IGdhbWVwYWQuaW5kZXgsXG4gICAgICBtYXBwaW5nOiBnYW1lcGFkLm1hcHBpbmcsXG4gICAgICBjb25uZWN0ZWQ6IGdhbWVwYWQuY29ubmVjdGVkLFxuICAgICAgdGltZXN0YW1wOiBnYW1lcGFkLnRpbWVzdGFtcCxcbiAgICAgIGF4ZXM6IGdhbWVwYWQuYXhlcy5tYXAoKGF4ZXMpID0+IGF4ZXMpLFxuICAgICAgYnV0dG9uczogZ2FtZXBhZC5idXR0b25zLm1hcCgoYnV0dG9uKSA9PiAoeyBwcmVzc2VkOiBidXR0b24ucHJlc3NlZCwgdG91Y2hlZDogYnV0dG9uLnRvdWNoZWQsIHZhbHVlOiBidXR0b24udmFsdWUgfSkpXG4gICAgfTtcbiAgfTtcbiAgY29uc3QgdXBkYXRlR2FtZXBhZFN0YXRlID0gKCkgPT4ge1xuICAgIGNvbnN0IF9nYW1lcGFkcyA9IChuYXZpZ2F0b3IgPT0gbnVsbCA/IHZvaWQgMCA6IG5hdmlnYXRvci5nZXRHYW1lcGFkcygpKSB8fCBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IF9nYW1lcGFkcy5sZW5ndGg7ICsraSkge1xuICAgICAgY29uc3QgZ2FtZXBhZCA9IF9nYW1lcGFkc1tpXTtcbiAgICAgIGlmIChnYW1lcGFkKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gZ2FtZXBhZHMudmFsdWUuZmluZEluZGV4KCh7IGluZGV4OiBpbmRleDIgfSkgPT4gaW5kZXgyID09PSBnYW1lcGFkLmluZGV4KTtcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpXG4gICAgICAgICAgZ2FtZXBhZHMudmFsdWVbaW5kZXhdID0gc3RhdGVGcm9tR2FtZXBhZChnYW1lcGFkKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGNvbnN0IHsgaXNBY3RpdmUsIHBhdXNlLCByZXN1bWUgfSA9IHVzZVJhZkZuKHVwZGF0ZUdhbWVwYWRTdGF0ZSk7XG4gIGNvbnN0IG9uR2FtZXBhZENvbm5lY3RlZCA9IChnYW1lcGFkKSA9PiB7XG4gICAgaWYgKCFnYW1lcGFkcy52YWx1ZS5zb21lKCh7IGluZGV4IH0pID0+IGluZGV4ID09PSBnYW1lcGFkLmluZGV4KSkge1xuICAgICAgZ2FtZXBhZHMudmFsdWUucHVzaChzdGF0ZUZyb21HYW1lcGFkKGdhbWVwYWQpKTtcbiAgICAgIG9uQ29ubmVjdGVkSG9vay50cmlnZ2VyKGdhbWVwYWQuaW5kZXgpO1xuICAgIH1cbiAgICByZXN1bWUoKTtcbiAgfTtcbiAgY29uc3Qgb25HYW1lcGFkRGlzY29ubmVjdGVkID0gKGdhbWVwYWQpID0+IHtcbiAgICBnYW1lcGFkcy52YWx1ZSA9IGdhbWVwYWRzLnZhbHVlLmZpbHRlcigoeCkgPT4geC5pbmRleCAhPT0gZ2FtZXBhZC5pbmRleCk7XG4gICAgb25EaXNjb25uZWN0ZWRIb29rLnRyaWdnZXIoZ2FtZXBhZC5pbmRleCk7XG4gIH07XG4gIHVzZUV2ZW50TGlzdGVuZXIoXCJnYW1lcGFkY29ubmVjdGVkXCIsIChlKSA9PiBvbkdhbWVwYWRDb25uZWN0ZWQoZS5nYW1lcGFkKSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIoXCJnYW1lcGFkZGlzY29ubmVjdGVkXCIsIChlKSA9PiBvbkdhbWVwYWREaXNjb25uZWN0ZWQoZS5nYW1lcGFkKSk7XG4gIHNoYXJlZC50cnlPbk1vdW50ZWQoKCkgPT4ge1xuICAgIGNvbnN0IF9nYW1lcGFkcyA9IChuYXZpZ2F0b3IgPT0gbnVsbCA/IHZvaWQgMCA6IG5hdmlnYXRvci5nZXRHYW1lcGFkcygpKSB8fCBbXTtcbiAgICBpZiAoX2dhbWVwYWRzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IF9nYW1lcGFkcy5sZW5ndGg7ICsraSkge1xuICAgICAgICBjb25zdCBnYW1lcGFkID0gX2dhbWVwYWRzW2ldO1xuICAgICAgICBpZiAoZ2FtZXBhZClcbiAgICAgICAgICBvbkdhbWVwYWRDb25uZWN0ZWQoZ2FtZXBhZCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgcGF1c2UoKTtcbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBvbkNvbm5lY3RlZDogb25Db25uZWN0ZWRIb29rLm9uLFxuICAgIG9uRGlzY29ubmVjdGVkOiBvbkRpc2Nvbm5lY3RlZEhvb2sub24sXG4gICAgZ2FtZXBhZHMsXG4gICAgcGF1c2UsXG4gICAgcmVzdW1lLFxuICAgIGlzQWN0aXZlXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZUdlb2xvY2F0aW9uKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgZW5hYmxlSGlnaEFjY3VyYWN5ID0gdHJ1ZSxcbiAgICBtYXhpbXVtQWdlID0gM2U0LFxuICAgIHRpbWVvdXQgPSAyN2UzLFxuICAgIG5hdmlnYXRvciA9IGRlZmF1bHROYXZpZ2F0b3JcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gbmF2aWdhdG9yICYmIFwiZ2VvbG9jYXRpb25cIiBpbiBuYXZpZ2F0b3I7XG4gIGNvbnN0IGxvY2F0ZWRBdCA9IHZ1ZURlbWkucmVmKG51bGwpO1xuICBjb25zdCBlcnJvciA9IHZ1ZURlbWkucmVmKG51bGwpO1xuICBjb25zdCBjb29yZHMgPSB2dWVEZW1pLnJlZih7XG4gICAgYWNjdXJhY3k6IDAsXG4gICAgbGF0aXR1ZGU6IEluZmluaXR5LFxuICAgIGxvbmdpdHVkZTogSW5maW5pdHksXG4gICAgYWx0aXR1ZGU6IG51bGwsXG4gICAgYWx0aXR1ZGVBY2N1cmFjeTogbnVsbCxcbiAgICBoZWFkaW5nOiBudWxsLFxuICAgIHNwZWVkOiBudWxsXG4gIH0pO1xuICBmdW5jdGlvbiB1cGRhdGVQb3NpdGlvbihwb3NpdGlvbikge1xuICAgIGxvY2F0ZWRBdC52YWx1ZSA9IHBvc2l0aW9uLnRpbWVzdGFtcDtcbiAgICBjb29yZHMudmFsdWUgPSBwb3NpdGlvbi5jb29yZHM7XG4gICAgZXJyb3IudmFsdWUgPSBudWxsO1xuICB9XG4gIGxldCB3YXRjaGVyO1xuICBpZiAoaXNTdXBwb3J0ZWQpIHtcbiAgICB3YXRjaGVyID0gbmF2aWdhdG9yLmdlb2xvY2F0aW9uLndhdGNoUG9zaXRpb24odXBkYXRlUG9zaXRpb24sIChlcnIpID0+IGVycm9yLnZhbHVlID0gZXJyLCB7XG4gICAgICBlbmFibGVIaWdoQWNjdXJhY3ksXG4gICAgICBtYXhpbXVtQWdlLFxuICAgICAgdGltZW91dFxuICAgIH0pO1xuICB9XG4gIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZSgoKSA9PiB7XG4gICAgaWYgKHdhdGNoZXIgJiYgbmF2aWdhdG9yKVxuICAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmNsZWFyV2F0Y2god2F0Y2hlcik7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIGNvb3JkcyxcbiAgICBsb2NhdGVkQXQsXG4gICAgZXJyb3JcbiAgfTtcbn1cblxuY29uc3QgZGVmYXVsdEV2ZW50cyQxID0gW1wibW91c2Vtb3ZlXCIsIFwibW91c2Vkb3duXCIsIFwicmVzaXplXCIsIFwia2V5ZG93blwiLCBcInRvdWNoc3RhcnRcIiwgXCJ3aGVlbFwiXTtcbmNvbnN0IG9uZU1pbnV0ZSA9IDZlNDtcbmZ1bmN0aW9uIHVzZUlkbGUodGltZW91dCA9IG9uZU1pbnV0ZSwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBpbml0aWFsU3RhdGUgPSBmYWxzZSxcbiAgICBsaXN0ZW5Gb3JWaXNpYmlsaXR5Q2hhbmdlID0gdHJ1ZSxcbiAgICBldmVudHMgPSBkZWZhdWx0RXZlbnRzJDEsXG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvdyxcbiAgICBldmVudEZpbHRlciA9IHNoYXJlZC50aHJvdHRsZUZpbHRlcig1MClcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlkbGUgPSB2dWVEZW1pLnJlZihpbml0aWFsU3RhdGUpO1xuICBjb25zdCBsYXN0QWN0aXZlID0gdnVlRGVtaS5yZWYoc2hhcmVkLnRpbWVzdGFtcCgpKTtcbiAgbGV0IHRpbWVyO1xuICBjb25zdCBvbkV2ZW50ID0gc2hhcmVkLmNyZWF0ZUZpbHRlcldyYXBwZXIoZXZlbnRGaWx0ZXIsICgpID0+IHtcbiAgICBpZGxlLnZhbHVlID0gZmFsc2U7XG4gICAgbGFzdEFjdGl2ZS52YWx1ZSA9IHNoYXJlZC50aW1lc3RhbXAoKTtcbiAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiBpZGxlLnZhbHVlID0gdHJ1ZSwgdGltZW91dCk7XG4gIH0pO1xuICBpZiAod2luZG93KSB7XG4gICAgY29uc3QgZG9jdW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQ7XG4gICAgZm9yIChjb25zdCBldmVudCBvZiBldmVudHMpXG4gICAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgZXZlbnQsIG9uRXZlbnQsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICBpZiAobGlzdGVuRm9yVmlzaWJpbGl0eUNoYW5nZSkge1xuICAgICAgdXNlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCwgXCJ2aXNpYmlsaXR5Y2hhbmdlXCIsICgpID0+IHtcbiAgICAgICAgaWYgKCFkb2N1bWVudC5oaWRkZW4pXG4gICAgICAgICAgb25FdmVudCgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiBpZGxlLnZhbHVlID0gdHJ1ZSwgdGltZW91dCk7XG4gIHJldHVybiB7IGlkbGUsIGxhc3RBY3RpdmUgfTtcbn1cblxudmFyIF9fZGVmUHJvcCQ4ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkOSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJDkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSQ5ID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkOCA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkOChvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkOCA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJDkuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCQ4KGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyQ5KVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyQ5KGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJDkuY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJDgoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG5hc3luYyBmdW5jdGlvbiBsb2FkSW1hZ2Uob3B0aW9ucykge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xuICAgIGNvbnN0IHsgc3JjLCBzcmNzZXQsIHNpemVzIH0gPSBvcHRpb25zO1xuICAgIGltZy5zcmMgPSBzcmM7XG4gICAgaWYgKHNyY3NldClcbiAgICAgIGltZy5zcmNzZXQgPSBzcmNzZXQ7XG4gICAgaWYgKHNpemVzKVxuICAgICAgaW1nLnNpemVzID0gc2l6ZXM7XG4gICAgaW1nLm9ubG9hZCA9ICgpID0+IHJlc29sdmUoaW1nKTtcbiAgICBpbWcub25lcnJvciA9IHJlamVjdDtcbiAgfSk7XG59XG5jb25zdCB1c2VJbWFnZSA9IChvcHRpb25zLCBhc3luY1N0YXRlT3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IHN0YXRlID0gdXNlQXN5bmNTdGF0ZSgoKSA9PiBsb2FkSW1hZ2UodnVlRGVtaS51bnJlZihvcHRpb25zKSksIHZvaWQgMCwgX19zcHJlYWRWYWx1ZXMkOCh7XG4gICAgcmVzZXRPbkV4ZWN1dGU6IHRydWVcbiAgfSwgYXN5bmNTdGF0ZU9wdGlvbnMpKTtcbiAgdnVlRGVtaS53YXRjaCgoKSA9PiB2dWVEZW1pLnVucmVmKG9wdGlvbnMpLCAoKSA9PiBzdGF0ZS5leGVjdXRlKGFzeW5jU3RhdGVPcHRpb25zLmRlbGF5KSwgeyBkZWVwOiB0cnVlIH0pO1xuICByZXR1cm4gc3RhdGU7XG59O1xuXG5mdW5jdGlvbiB1c2VTY3JvbGwoZWxlbWVudCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB0aHJvdHRsZSA9IDAsXG4gICAgaWRsZSA9IDIwMCxcbiAgICBvblN0b3AgPSBzaGFyZWQubm9vcCxcbiAgICBvblNjcm9sbCA9IHNoYXJlZC5ub29wLFxuICAgIG9mZnNldCA9IHtcbiAgICAgIGxlZnQ6IDAsXG4gICAgICByaWdodDogMCxcbiAgICAgIHRvcDogMCxcbiAgICAgIGJvdHRvbTogMFxuICAgIH0sXG4gICAgZXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7XG4gICAgICBjYXB0dXJlOiBmYWxzZSxcbiAgICAgIHBhc3NpdmU6IHRydWVcbiAgICB9XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCB4ID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IHkgPSB2dWVEZW1pLnJlZigwKTtcbiAgY29uc3QgaXNTY3JvbGxpbmcgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IGFycml2ZWRTdGF0ZSA9IHZ1ZURlbWkucmVhY3RpdmUoe1xuICAgIGxlZnQ6IHRydWUsXG4gICAgcmlnaHQ6IGZhbHNlLFxuICAgIHRvcDogdHJ1ZSxcbiAgICBib3R0b206IGZhbHNlXG4gIH0pO1xuICBjb25zdCBkaXJlY3Rpb25zID0gdnVlRGVtaS5yZWFjdGl2ZSh7XG4gICAgbGVmdDogZmFsc2UsXG4gICAgcmlnaHQ6IGZhbHNlLFxuICAgIHRvcDogZmFsc2UsXG4gICAgYm90dG9tOiBmYWxzZVxuICB9KTtcbiAgaWYgKGVsZW1lbnQpIHtcbiAgICBjb25zdCBvblNjcm9sbEVuZCA9IHNoYXJlZC51c2VEZWJvdW5jZUZuKChlKSA9PiB7XG4gICAgICBpc1Njcm9sbGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgZGlyZWN0aW9ucy5sZWZ0ID0gZmFsc2U7XG4gICAgICBkaXJlY3Rpb25zLnJpZ2h0ID0gZmFsc2U7XG4gICAgICBkaXJlY3Rpb25zLnRvcCA9IGZhbHNlO1xuICAgICAgZGlyZWN0aW9ucy5ib3R0b20gPSBmYWxzZTtcbiAgICAgIG9uU3RvcChlKTtcbiAgICB9LCB0aHJvdHRsZSArIGlkbGUpO1xuICAgIGNvbnN0IG9uU2Nyb2xsSGFuZGxlciA9IChlKSA9PiB7XG4gICAgICBjb25zdCBldmVudFRhcmdldCA9IGUudGFyZ2V0ID09PSBkb2N1bWVudCA/IGUudGFyZ2V0LmRvY3VtZW50RWxlbWVudCA6IGUudGFyZ2V0O1xuICAgICAgY29uc3Qgc2Nyb2xsTGVmdCA9IGV2ZW50VGFyZ2V0LnNjcm9sbExlZnQ7XG4gICAgICBkaXJlY3Rpb25zLmxlZnQgPSBzY3JvbGxMZWZ0IDwgeC52YWx1ZTtcbiAgICAgIGRpcmVjdGlvbnMucmlnaHQgPSBzY3JvbGxMZWZ0ID4geC52YWx1ZTtcbiAgICAgIGFycml2ZWRTdGF0ZS5sZWZ0ID0gc2Nyb2xsTGVmdCA8PSAwICsgKG9mZnNldC5sZWZ0IHx8IDApO1xuICAgICAgYXJyaXZlZFN0YXRlLnJpZ2h0ID0gc2Nyb2xsTGVmdCArIGV2ZW50VGFyZ2V0LmNsaWVudFdpZHRoID49IGV2ZW50VGFyZ2V0LnNjcm9sbFdpZHRoIC0gKG9mZnNldC5yaWdodCB8fCAwKTtcbiAgICAgIHgudmFsdWUgPSBzY3JvbGxMZWZ0O1xuICAgICAgbGV0IHNjcm9sbFRvcCA9IGV2ZW50VGFyZ2V0LnNjcm9sbFRvcDtcbiAgICAgIGlmIChlLnRhcmdldCA9PT0gZG9jdW1lbnQgJiYgIXNjcm9sbFRvcClcbiAgICAgICAgc2Nyb2xsVG9wID0gZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A7XG4gICAgICBkaXJlY3Rpb25zLnRvcCA9IHNjcm9sbFRvcCA8IHkudmFsdWU7XG4gICAgICBkaXJlY3Rpb25zLmJvdHRvbSA9IHNjcm9sbFRvcCA+IHkudmFsdWU7XG4gICAgICBhcnJpdmVkU3RhdGUudG9wID0gc2Nyb2xsVG9wIDw9IDAgKyAob2Zmc2V0LnRvcCB8fCAwKTtcbiAgICAgIGFycml2ZWRTdGF0ZS5ib3R0b20gPSBzY3JvbGxUb3AgKyBldmVudFRhcmdldC5jbGllbnRIZWlnaHQgPj0gZXZlbnRUYXJnZXQuc2Nyb2xsSGVpZ2h0IC0gKG9mZnNldC5ib3R0b20gfHwgMCk7XG4gICAgICB5LnZhbHVlID0gc2Nyb2xsVG9wO1xuICAgICAgaXNTY3JvbGxpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgb25TY3JvbGxFbmQoZSk7XG4gICAgICBvblNjcm9sbChlKTtcbiAgICB9O1xuICAgIHVzZUV2ZW50TGlzdGVuZXIoZWxlbWVudCwgXCJzY3JvbGxcIiwgdGhyb3R0bGUgPyBzaGFyZWQudXNlVGhyb3R0bGVGbihvblNjcm9sbEhhbmRsZXIsIHRocm90dGxlKSA6IG9uU2Nyb2xsSGFuZGxlciwgZXZlbnRMaXN0ZW5lck9wdGlvbnMpO1xuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIGlzU2Nyb2xsaW5nLFxuICAgIGFycml2ZWRTdGF0ZSxcbiAgICBkaXJlY3Rpb25zXG4gIH07XG59XG5cbnZhciBfX2RlZlByb3AkNyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2RlZlByb3BzJDIgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcztcbnZhciBfX2dldE93blByb3BEZXNjcyQyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyQ4ID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkOCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJDggPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCQ3ID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCQ3KG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyQ3ID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkOC5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJDcoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJDgpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJDgoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kOC5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkNyhhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbnZhciBfX3NwcmVhZFByb3BzJDIgPSAoYSwgYikgPT4gX19kZWZQcm9wcyQyKGEsIF9fZ2V0T3duUHJvcERlc2NzJDIoYikpO1xuZnVuY3Rpb24gdXNlSW5maW5pdGVTY3JvbGwoZWxlbWVudCwgb25Mb2FkTW9yZSwgb3B0aW9ucyA9IHt9KSB7XG4gIHZhciBfYSwgX2I7XG4gIGNvbnN0IGRpcmVjdGlvbiA9IChfYSA9IG9wdGlvbnMuZGlyZWN0aW9uKSAhPSBudWxsID8gX2EgOiBcImJvdHRvbVwiO1xuICBjb25zdCBzdGF0ZSA9IHZ1ZURlbWkucmVhY3RpdmUodXNlU2Nyb2xsKGVsZW1lbnQsIF9fc3ByZWFkUHJvcHMkMihfX3NwcmVhZFZhbHVlcyQ3KHt9LCBvcHRpb25zKSwge1xuICAgIG9mZnNldDogX19zcHJlYWRWYWx1ZXMkNyh7XG4gICAgICBbZGlyZWN0aW9uXTogKF9iID0gb3B0aW9ucy5kaXN0YW5jZSkgIT0gbnVsbCA/IF9iIDogMFxuICAgIH0sIG9wdGlvbnMub2Zmc2V0KVxuICB9KSkpO1xuICB2dWVEZW1pLndhdGNoKCgpID0+IHN0YXRlLmFycml2ZWRTdGF0ZVtkaXJlY3Rpb25dLCBhc3luYyAodikgPT4ge1xuICAgIHZhciBfYTIsIF9iMjtcbiAgICBpZiAodikge1xuICAgICAgY29uc3QgZWxlbSA9IHZ1ZURlbWkudW5yZWYoZWxlbWVudCk7XG4gICAgICBjb25zdCBwcmV2aW91cyA9IHtcbiAgICAgICAgaGVpZ2h0OiAoX2EyID0gZWxlbSA9PSBudWxsID8gdm9pZCAwIDogZWxlbS5zY3JvbGxIZWlnaHQpICE9IG51bGwgPyBfYTIgOiAwLFxuICAgICAgICB3aWR0aDogKF9iMiA9IGVsZW0gPT0gbnVsbCA/IHZvaWQgMCA6IGVsZW0uc2Nyb2xsV2lkdGgpICE9IG51bGwgPyBfYjIgOiAwXG4gICAgICB9O1xuICAgICAgYXdhaXQgb25Mb2FkTW9yZShzdGF0ZSk7XG4gICAgICBpZiAob3B0aW9ucy5wcmVzZXJ2ZVNjcm9sbFBvc2l0aW9uICYmIGVsZW0pIHtcbiAgICAgICAgdnVlRGVtaS5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgZWxlbS5zY3JvbGxUbyh7XG4gICAgICAgICAgICB0b3A6IGVsZW0uc2Nyb2xsSGVpZ2h0IC0gcHJldmlvdXMuaGVpZ2h0LFxuICAgICAgICAgICAgbGVmdDogZWxlbS5zY3JvbGxXaWR0aCAtIHByZXZpb3VzLndpZHRoXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVzZUludGVyc2VjdGlvbk9ic2VydmVyKHRhcmdldCwgY2FsbGJhY2ssIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgcm9vdCxcbiAgICByb290TWFyZ2luID0gXCIwcHhcIixcbiAgICB0aHJlc2hvbGQgPSAwLjEsXG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvd1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSB3aW5kb3cgJiYgXCJJbnRlcnNlY3Rpb25PYnNlcnZlclwiIGluIHdpbmRvdztcbiAgbGV0IGNsZWFudXAgPSBzaGFyZWQubm9vcDtcbiAgY29uc3Qgc3RvcFdhdGNoID0gaXNTdXBwb3J0ZWQgPyB2dWVEZW1pLndhdGNoKCgpID0+ICh7XG4gICAgZWw6IHVucmVmRWxlbWVudCh0YXJnZXQpLFxuICAgIHJvb3Q6IHVucmVmRWxlbWVudChyb290KVxuICB9KSwgKHsgZWwsIHJvb3Q6IHJvb3QyIH0pID0+IHtcbiAgICBjbGVhbnVwKCk7XG4gICAgaWYgKCFlbClcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihjYWxsYmFjaywge1xuICAgICAgcm9vdDogcm9vdDIsXG4gICAgICByb290TWFyZ2luLFxuICAgICAgdGhyZXNob2xkXG4gICAgfSk7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZShlbCk7XG4gICAgY2xlYW51cCA9ICgpID0+IHtcbiAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIGNsZWFudXAgPSBzaGFyZWQubm9vcDtcbiAgICB9O1xuICB9LCB7IGltbWVkaWF0ZTogdHJ1ZSwgZmx1c2g6IFwicG9zdFwiIH0pIDogc2hhcmVkLm5vb3A7XG4gIGNvbnN0IHN0b3AgPSAoKSA9PiB7XG4gICAgY2xlYW51cCgpO1xuICAgIHN0b3BXYXRjaCgpO1xuICB9O1xuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2Uoc3RvcCk7XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgc3RvcFxuICB9O1xufVxuXG5jb25zdCBkZWZhdWx0RXZlbnRzID0gW1wibW91c2Vkb3duXCIsIFwibW91c2V1cFwiLCBcImtleWRvd25cIiwgXCJrZXl1cFwiXTtcbmZ1bmN0aW9uIHVzZUtleU1vZGlmaWVyKG1vZGlmaWVyLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGV2ZW50cyA9IGRlZmF1bHRFdmVudHMsXG4gICAgZG9jdW1lbnQgPSBkZWZhdWx0RG9jdW1lbnQsXG4gICAgaW5pdGlhbCA9IG51bGxcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHN0YXRlID0gdnVlRGVtaS5yZWYoaW5pdGlhbCk7XG4gIGlmIChkb2N1bWVudCkge1xuICAgIGV2ZW50cy5mb3JFYWNoKChsaXN0ZW5lckV2ZW50KSA9PiB7XG4gICAgICB1c2VFdmVudExpc3RlbmVyKGRvY3VtZW50LCBsaXN0ZW5lckV2ZW50LCAoZXZ0KSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgZXZ0LmdldE1vZGlmaWVyU3RhdGUgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICBzdGF0ZS52YWx1ZSA9IGV2dC5nZXRNb2RpZmllclN0YXRlKG1vZGlmaWVyKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBzdGF0ZTtcbn1cblxuZnVuY3Rpb24gdXNlTG9jYWxTdG9yYWdlKGtleSwgaW5pdGlhbFZhbHVlLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgeyB3aW5kb3cgPSBkZWZhdWx0V2luZG93IH0gPSBvcHRpb25zO1xuICByZXR1cm4gdXNlU3RvcmFnZShrZXksIGluaXRpYWxWYWx1ZSwgd2luZG93ID09IG51bGwgPyB2b2lkIDAgOiB3aW5kb3cubG9jYWxTdG9yYWdlLCBvcHRpb25zKTtcbn1cblxuY29uc3QgRGVmYXVsdE1hZ2ljS2V5c0FsaWFzTWFwID0ge1xuICBjdHJsOiBcImNvbnRyb2xcIixcbiAgY29tbWFuZDogXCJtZXRhXCIsXG4gIGNtZDogXCJtZXRhXCIsXG4gIG9wdGlvbjogXCJhbHRcIixcbiAgdXA6IFwiYXJyb3d1cFwiLFxuICBkb3duOiBcImFycm93ZG93blwiLFxuICBsZWZ0OiBcImFycm93bGVmdFwiLFxuICByaWdodDogXCJhcnJvd3JpZ2h0XCJcbn07XG5cbmZ1bmN0aW9uIHVzZU1hZ2ljS2V5cyhvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHJlYWN0aXZlOiB1c2VSZWFjdGl2ZSA9IGZhbHNlLFxuICAgIHRhcmdldCA9IGRlZmF1bHRXaW5kb3csXG4gICAgYWxpYXNNYXAgPSBEZWZhdWx0TWFnaWNLZXlzQWxpYXNNYXAsXG4gICAgcGFzc2l2ZSA9IHRydWUsXG4gICAgb25FdmVudEZpcmVkID0gc2hhcmVkLm5vb3BcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGN1cnJlbnQgPSB2dWVEZW1pLnJlYWN0aXZlKG5ldyBTZXQoKSk7XG4gIGNvbnN0IG9iaiA9IHsgdG9KU09OKCkge1xuICAgIHJldHVybiB7fTtcbiAgfSwgY3VycmVudCB9O1xuICBjb25zdCByZWZzID0gdXNlUmVhY3RpdmUgPyB2dWVEZW1pLnJlYWN0aXZlKG9iaikgOiBvYmo7XG4gIGNvbnN0IG1ldGFEZXBzID0gbmV3IFNldCgpO1xuICBjb25zdCB1c2VkS2V5cyA9IG5ldyBTZXQoKTtcbiAgZnVuY3Rpb24gc2V0UmVmcyhrZXksIHZhbHVlKSB7XG4gICAgaWYgKGtleSBpbiByZWZzKSB7XG4gICAgICBpZiAodXNlUmVhY3RpdmUpXG4gICAgICAgIHJlZnNba2V5XSA9IHZhbHVlO1xuICAgICAgZWxzZVxuICAgICAgICByZWZzW2tleV0udmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gcmVzZXQoKSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgdXNlZEtleXMpXG4gICAgICBzZXRSZWZzKGtleSwgZmFsc2UpO1xuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZVJlZnMoZSwgdmFsdWUpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IGtleSA9IChfYSA9IGUua2V5KSA9PSBudWxsID8gdm9pZCAwIDogX2EudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBjb2RlID0gKF9iID0gZS5jb2RlKSA9PSBudWxsID8gdm9pZCAwIDogX2IudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCB2YWx1ZXMgPSBbY29kZSwga2V5XS5maWx0ZXIoQm9vbGVhbik7XG4gICAgaWYgKGNvZGUpIHtcbiAgICAgIGlmICh2YWx1ZSlcbiAgICAgICAgY3VycmVudC5hZGQoZS5jb2RlKTtcbiAgICAgIGVsc2VcbiAgICAgICAgY3VycmVudC5kZWxldGUoZS5jb2RlKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkyIG9mIHZhbHVlcykge1xuICAgICAgdXNlZEtleXMuYWRkKGtleTIpO1xuICAgICAgc2V0UmVmcyhrZXkyLCB2YWx1ZSk7XG4gICAgfVxuICAgIGlmIChrZXkgPT09IFwibWV0YVwiICYmICF2YWx1ZSkge1xuICAgICAgbWV0YURlcHMuZm9yRWFjaCgoa2V5MikgPT4ge1xuICAgICAgICBjdXJyZW50LmRlbGV0ZShrZXkyKTtcbiAgICAgICAgc2V0UmVmcyhrZXkyLCBmYWxzZSk7XG4gICAgICB9KTtcbiAgICAgIG1ldGFEZXBzLmNsZWFyKCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZS5nZXRNb2RpZmllclN0YXRlID09PSBcImZ1bmN0aW9uXCIgJiYgZS5nZXRNb2RpZmllclN0YXRlKFwiTWV0YVwiKSAmJiB2YWx1ZSkge1xuICAgICAgWy4uLmN1cnJlbnQsIC4uLnZhbHVlc10uZm9yRWFjaCgoa2V5MikgPT4gbWV0YURlcHMuYWRkKGtleTIpKTtcbiAgICB9XG4gIH1cbiAgaWYgKHRhcmdldCkge1xuICAgIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcImtleWRvd25cIiwgKGUpID0+IHtcbiAgICAgIHVwZGF0ZVJlZnMoZSwgdHJ1ZSk7XG4gICAgICByZXR1cm4gb25FdmVudEZpcmVkKGUpO1xuICAgIH0sIHsgcGFzc2l2ZSB9KTtcbiAgICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJrZXl1cFwiLCAoZSkgPT4ge1xuICAgICAgdXBkYXRlUmVmcyhlLCBmYWxzZSk7XG4gICAgICByZXR1cm4gb25FdmVudEZpcmVkKGUpO1xuICAgIH0sIHsgcGFzc2l2ZSB9KTtcbiAgICB1c2VFdmVudExpc3RlbmVyKFwiYmx1clwiLCByZXNldCwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLCByZXNldCwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICB9XG4gIGNvbnN0IHByb3h5ID0gbmV3IFByb3h5KHJlZnMsIHtcbiAgICBnZXQodGFyZ2V0MiwgcHJvcCwgcmVjKSB7XG4gICAgICBpZiAodHlwZW9mIHByb3AgIT09IFwic3RyaW5nXCIpXG4gICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQyLCBwcm9wLCByZWMpO1xuICAgICAgcHJvcCA9IHByb3AudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChwcm9wIGluIGFsaWFzTWFwKVxuICAgICAgICBwcm9wID0gYWxpYXNNYXBbcHJvcF07XG4gICAgICBpZiAoIShwcm9wIGluIHJlZnMpKSB7XG4gICAgICAgIGlmICgvWytfLV0vLnRlc3QocHJvcCkpIHtcbiAgICAgICAgICBjb25zdCBrZXlzID0gcHJvcC5zcGxpdCgvWytfLV0vZykubWFwKChpKSA9PiBpLnRyaW0oKSk7XG4gICAgICAgICAgcmVmc1twcm9wXSA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ga2V5cy5ldmVyeSgoa2V5KSA9PiB2dWVEZW1pLnVucmVmKHByb3h5W2tleV0pKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVmc1twcm9wXSA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgciA9IFJlZmxlY3QuZ2V0KHRhcmdldDIsIHByb3AsIHJlYyk7XG4gICAgICByZXR1cm4gdXNlUmVhY3RpdmUgPyB2dWVEZW1pLnVucmVmKHIpIDogcjtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcHJveHk7XG59XG5cbnZhciBfX2RlZlByb3AkNiA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BTeW1ib2xzJDcgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCQ3ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kNyA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJDYgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJDYob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJDYgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCQ3LmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkNihhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkNylcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkNyhiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSQ3LmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCQ2KGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xuZnVuY3Rpb24gdXNpbmdFbFJlZihzb3VyY2UsIGNiKSB7XG4gIGlmICh2dWVEZW1pLnVucmVmKHNvdXJjZSkpXG4gICAgY2IodnVlRGVtaS51bnJlZihzb3VyY2UpKTtcbn1cbmZ1bmN0aW9uIHRpbWVSYW5nZVRvQXJyYXkodGltZVJhbmdlcykge1xuICBsZXQgcmFuZ2VzID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGltZVJhbmdlcy5sZW5ndGg7ICsraSlcbiAgICByYW5nZXMgPSBbLi4ucmFuZ2VzLCBbdGltZVJhbmdlcy5zdGFydChpKSwgdGltZVJhbmdlcy5lbmQoaSldXTtcbiAgcmV0dXJuIHJhbmdlcztcbn1cbmZ1bmN0aW9uIHRyYWNrc1RvQXJyYXkodHJhY2tzKSB7XG4gIHJldHVybiBBcnJheS5mcm9tKHRyYWNrcykubWFwKCh7IGxhYmVsLCBraW5kLCBsYW5ndWFnZSwgbW9kZSwgYWN0aXZlQ3VlcywgY3VlcywgaW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZSB9LCBpZCkgPT4gKHsgaWQsIGxhYmVsLCBraW5kLCBsYW5ndWFnZSwgbW9kZSwgYWN0aXZlQ3VlcywgY3VlcywgaW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZSB9KSk7XG59XG5jb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgc3JjOiBcIlwiLFxuICB0cmFja3M6IFtdXG59O1xuZnVuY3Rpb24gdXNlTWVkaWFDb250cm9scyh0YXJnZXQsIG9wdGlvbnMgPSB7fSkge1xuICBvcHRpb25zID0gX19zcHJlYWRWYWx1ZXMkNihfX3NwcmVhZFZhbHVlcyQ2KHt9LCBkZWZhdWx0T3B0aW9ucyksIG9wdGlvbnMpO1xuICBjb25zdCB7XG4gICAgZG9jdW1lbnQgPSBkZWZhdWx0RG9jdW1lbnRcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGN1cnJlbnRUaW1lID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IGR1cmF0aW9uID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IHNlZWtpbmcgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IHZvbHVtZSA9IHZ1ZURlbWkucmVmKDEpO1xuICBjb25zdCB3YWl0aW5nID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBlbmRlZCA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgcGxheWluZyA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3QgcmF0ZSA9IHZ1ZURlbWkucmVmKDEpO1xuICBjb25zdCBzdGFsbGVkID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBidWZmZXJlZCA9IHZ1ZURlbWkucmVmKFtdKTtcbiAgY29uc3QgdHJhY2tzID0gdnVlRGVtaS5yZWYoW10pO1xuICBjb25zdCBzZWxlY3RlZFRyYWNrID0gdnVlRGVtaS5yZWYoLTEpO1xuICBjb25zdCBpc1BpY3R1cmVJblBpY3R1cmUgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IG11dGVkID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUgPSBkb2N1bWVudCAmJiBcInBpY3R1cmVJblBpY3R1cmVFbmFibGVkXCIgaW4gZG9jdW1lbnQ7XG4gIGNvbnN0IHNvdXJjZUVycm9yRXZlbnQgPSBzaGFyZWQuY3JlYXRlRXZlbnRIb29rKCk7XG4gIGNvbnN0IGRpc2FibGVUcmFjayA9ICh0cmFjaykgPT4ge1xuICAgIHVzaW5nRWxSZWYodGFyZ2V0LCAoZWwpID0+IHtcbiAgICAgIGlmICh0cmFjaykge1xuICAgICAgICBjb25zdCBpZCA9IHNoYXJlZC5pc051bWJlcih0cmFjaykgPyB0cmFjayA6IHRyYWNrLmlkO1xuICAgICAgICBlbC50ZXh0VHJhY2tzW2lkXS5tb2RlID0gXCJkaXNhYmxlZFwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbC50ZXh0VHJhY2tzLmxlbmd0aDsgKytpKVxuICAgICAgICAgIGVsLnRleHRUcmFja3NbaV0ubW9kZSA9IFwiZGlzYWJsZWRcIjtcbiAgICAgIH1cbiAgICAgIHNlbGVjdGVkVHJhY2sudmFsdWUgPSAtMTtcbiAgICB9KTtcbiAgfTtcbiAgY29uc3QgZW5hYmxlVHJhY2sgPSAodHJhY2ssIGRpc2FibGVUcmFja3MgPSB0cnVlKSA9PiB7XG4gICAgdXNpbmdFbFJlZih0YXJnZXQsIChlbCkgPT4ge1xuICAgICAgY29uc3QgaWQgPSBzaGFyZWQuaXNOdW1iZXIodHJhY2spID8gdHJhY2sgOiB0cmFjay5pZDtcbiAgICAgIGlmIChkaXNhYmxlVHJhY2tzKVxuICAgICAgICBkaXNhYmxlVHJhY2soKTtcbiAgICAgIGVsLnRleHRUcmFja3NbaWRdLm1vZGUgPSBcInNob3dpbmdcIjtcbiAgICAgIHNlbGVjdGVkVHJhY2sudmFsdWUgPSBpZDtcbiAgICB9KTtcbiAgfTtcbiAgY29uc3QgdG9nZ2xlUGljdHVyZUluUGljdHVyZSA9ICgpID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdXNpbmdFbFJlZih0YXJnZXQsIGFzeW5jIChlbCkgPT4ge1xuICAgICAgICBpZiAoc3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlKSB7XG4gICAgICAgICAgaWYgKCFpc1BpY3R1cmVJblBpY3R1cmUudmFsdWUpIHtcbiAgICAgICAgICAgIGVsLnJlcXVlc3RQaWN0dXJlSW5QaWN0dXJlKCkudGhlbihyZXNvbHZlKS5jYXRjaChyZWplY3QpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkb2N1bWVudC5leGl0UGljdHVyZUluUGljdHVyZSgpLnRoZW4ocmVzb2x2ZSkuY2F0Y2gocmVqZWN0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuICB2dWVEZW1pLndhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWRvY3VtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IGVsID0gdnVlRGVtaS51bnJlZih0YXJnZXQpO1xuICAgIGlmICghZWwpXG4gICAgICByZXR1cm47XG4gICAgY29uc3Qgc3JjID0gdnVlRGVtaS51bnJlZihvcHRpb25zLnNyYyk7XG4gICAgbGV0IHNvdXJjZXMgPSBbXTtcbiAgICBpZiAoIXNyYylcbiAgICAgIHJldHVybjtcbiAgICBpZiAoc2hhcmVkLmlzU3RyaW5nKHNyYykpXG4gICAgICBzb3VyY2VzID0gW3sgc3JjIH1dO1xuICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoc3JjKSlcbiAgICAgIHNvdXJjZXMgPSBzcmM7XG4gICAgZWxzZSBpZiAoc2hhcmVkLmlzT2JqZWN0KHNyYykpXG4gICAgICBzb3VyY2VzID0gW3NyY107XG4gICAgZWwucXVlcnlTZWxlY3RvckFsbChcInNvdXJjZVwiKS5mb3JFYWNoKChlKSA9PiB7XG4gICAgICBlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCBzb3VyY2VFcnJvckV2ZW50LnRyaWdnZXIpO1xuICAgICAgZS5yZW1vdmUoKTtcbiAgICB9KTtcbiAgICBzb3VyY2VzLmZvckVhY2goKHsgc3JjOiBzcmMyLCB0eXBlIH0pID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzb3VyY2VcIik7XG4gICAgICBzb3VyY2Uuc2V0QXR0cmlidXRlKFwic3JjXCIsIHNyYzIpO1xuICAgICAgc291cmNlLnNldEF0dHJpYnV0ZShcInR5cGVcIiwgdHlwZSB8fCBcIlwiKTtcbiAgICAgIHNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwgc291cmNlRXJyb3JFdmVudC50cmlnZ2VyKTtcbiAgICAgIGVsLmFwcGVuZENoaWxkKHNvdXJjZSk7XG4gICAgfSk7XG4gICAgZWwubG9hZCgpO1xuICB9KTtcbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKCgpID0+IHtcbiAgICBjb25zdCBlbCA9IHZ1ZURlbWkudW5yZWYodGFyZ2V0KTtcbiAgICBpZiAoIWVsKVxuICAgICAgcmV0dXJuO1xuICAgIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCJzb3VyY2VcIikuZm9yRWFjaCgoZSkgPT4gZS5yZW1vdmVFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwgc291cmNlRXJyb3JFdmVudC50cmlnZ2VyKSk7XG4gIH0pO1xuICB2dWVEZW1pLndhdGNoKHZvbHVtZSwgKHZvbCkgPT4ge1xuICAgIGNvbnN0IGVsID0gdnVlRGVtaS51bnJlZih0YXJnZXQpO1xuICAgIGlmICghZWwpXG4gICAgICByZXR1cm47XG4gICAgZWwudm9sdW1lID0gdm9sO1xuICB9KTtcbiAgdnVlRGVtaS53YXRjaChtdXRlZCwgKG11dGUpID0+IHtcbiAgICBjb25zdCBlbCA9IHZ1ZURlbWkudW5yZWYodGFyZ2V0KTtcbiAgICBpZiAoIWVsKVxuICAgICAgcmV0dXJuO1xuICAgIGVsLm11dGVkID0gbXV0ZTtcbiAgfSk7XG4gIHZ1ZURlbWkud2F0Y2gocmF0ZSwgKHJhdGUyKSA9PiB7XG4gICAgY29uc3QgZWwgPSB2dWVEZW1pLnVucmVmKHRhcmdldCk7XG4gICAgaWYgKCFlbClcbiAgICAgIHJldHVybjtcbiAgICBlbC5wbGF5YmFja1JhdGUgPSByYXRlMjtcbiAgfSk7XG4gIHZ1ZURlbWkud2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZG9jdW1lbnQpXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgdGV4dFRyYWNrcyA9IHZ1ZURlbWkudW5yZWYob3B0aW9ucy50cmFja3MpO1xuICAgIGNvbnN0IGVsID0gdnVlRGVtaS51bnJlZih0YXJnZXQpO1xuICAgIGlmICghdGV4dFRyYWNrcyB8fCAhdGV4dFRyYWNrcy5sZW5ndGggfHwgIWVsKVxuICAgICAgcmV0dXJuO1xuICAgIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCJ0cmFja1wiKS5mb3JFYWNoKChlKSA9PiBlLnJlbW92ZSgpKTtcbiAgICB0ZXh0VHJhY2tzLmZvckVhY2goKHsgZGVmYXVsdDogaXNEZWZhdWx0LCBraW5kLCBsYWJlbCwgc3JjLCBzcmNMYW5nIH0sIGkpID0+IHtcbiAgICAgIGNvbnN0IHRyYWNrID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInRyYWNrXCIpO1xuICAgICAgdHJhY2suZGVmYXVsdCA9IGlzRGVmYXVsdCB8fCBmYWxzZTtcbiAgICAgIHRyYWNrLmtpbmQgPSBraW5kO1xuICAgICAgdHJhY2subGFiZWwgPSBsYWJlbDtcbiAgICAgIHRyYWNrLnNyYyA9IHNyYztcbiAgICAgIHRyYWNrLnNyY2xhbmcgPSBzcmNMYW5nO1xuICAgICAgaWYgKHRyYWNrLmRlZmF1bHQpXG4gICAgICAgIHNlbGVjdGVkVHJhY2sudmFsdWUgPSBpO1xuICAgICAgZWwuYXBwZW5kQ2hpbGQodHJhY2spO1xuICAgIH0pO1xuICB9KTtcbiAgY29uc3QgeyBpZ25vcmVVcGRhdGVzOiBpZ25vcmVDdXJyZW50VGltZVVwZGF0ZXMgfSA9IHNoYXJlZC53YXRjaElnbm9yYWJsZShjdXJyZW50VGltZSwgKHRpbWUpID0+IHtcbiAgICBjb25zdCBlbCA9IHZ1ZURlbWkudW5yZWYodGFyZ2V0KTtcbiAgICBpZiAoIWVsKVxuICAgICAgcmV0dXJuO1xuICAgIGVsLmN1cnJlbnRUaW1lID0gdGltZTtcbiAgfSk7XG4gIGNvbnN0IHsgaWdub3JlVXBkYXRlczogaWdub3JlUGxheWluZ1VwZGF0ZXMgfSA9IHNoYXJlZC53YXRjaElnbm9yYWJsZShwbGF5aW5nLCAoaXNQbGF5aW5nKSA9PiB7XG4gICAgY29uc3QgZWwgPSB2dWVEZW1pLnVucmVmKHRhcmdldCk7XG4gICAgaWYgKCFlbClcbiAgICAgIHJldHVybjtcbiAgICBpc1BsYXlpbmcgPyBlbC5wbGF5KCkgOiBlbC5wYXVzZSgpO1xuICB9KTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwidGltZXVwZGF0ZVwiLCAoKSA9PiBpZ25vcmVDdXJyZW50VGltZVVwZGF0ZXMoKCkgPT4gY3VycmVudFRpbWUudmFsdWUgPSB2dWVEZW1pLnVucmVmKHRhcmdldCkuY3VycmVudFRpbWUpKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwiZHVyYXRpb25jaGFuZ2VcIiwgKCkgPT4gZHVyYXRpb24udmFsdWUgPSB2dWVEZW1pLnVucmVmKHRhcmdldCkuZHVyYXRpb24pO1xuICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJwcm9ncmVzc1wiLCAoKSA9PiBidWZmZXJlZC52YWx1ZSA9IHRpbWVSYW5nZVRvQXJyYXkodnVlRGVtaS51bnJlZih0YXJnZXQpLmJ1ZmZlcmVkKSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInNlZWtpbmdcIiwgKCkgPT4gc2Vla2luZy52YWx1ZSA9IHRydWUpO1xuICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJzZWVrZWRcIiwgKCkgPT4gc2Vla2luZy52YWx1ZSA9IGZhbHNlKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwid2FpdGluZ1wiLCAoKSA9PiB3YWl0aW5nLnZhbHVlID0gdHJ1ZSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInBsYXlpbmdcIiwgKCkgPT4gd2FpdGluZy52YWx1ZSA9IGZhbHNlKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwicmF0ZWNoYW5nZVwiLCAoKSA9PiByYXRlLnZhbHVlID0gdnVlRGVtaS51bnJlZih0YXJnZXQpLnBsYXliYWNrUmF0ZSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInN0YWxsZWRcIiwgKCkgPT4gc3RhbGxlZC52YWx1ZSA9IHRydWUpO1xuICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJlbmRlZFwiLCAoKSA9PiBlbmRlZC52YWx1ZSA9IHRydWUpO1xuICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJwYXVzZVwiLCAoKSA9PiBpZ25vcmVQbGF5aW5nVXBkYXRlcygoKSA9PiBwbGF5aW5nLnZhbHVlID0gZmFsc2UpKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwicGxheVwiLCAoKSA9PiBpZ25vcmVQbGF5aW5nVXBkYXRlcygoKSA9PiBwbGF5aW5nLnZhbHVlID0gdHJ1ZSkpO1xuICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJlbnRlcnBpY3R1cmVpbnBpY3R1cmVcIiwgKCkgPT4gaXNQaWN0dXJlSW5QaWN0dXJlLnZhbHVlID0gdHJ1ZSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcImxlYXZlcGljdHVyZWlucGljdHVyZVwiLCAoKSA9PiBpc1BpY3R1cmVJblBpY3R1cmUudmFsdWUgPSBmYWxzZSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInZvbHVtZWNoYW5nZVwiLCAoKSA9PiB7XG4gICAgY29uc3QgZWwgPSB2dWVEZW1pLnVucmVmKHRhcmdldCk7XG4gICAgaWYgKCFlbClcbiAgICAgIHJldHVybjtcbiAgICB2b2x1bWUudmFsdWUgPSBlbC52b2x1bWU7XG4gICAgbXV0ZWQudmFsdWUgPSBlbC5tdXRlZDtcbiAgfSk7XG4gIGNvbnN0IGxpc3RlbmVycyA9IFtdO1xuICBjb25zdCBzdG9wID0gdnVlRGVtaS53YXRjaChbdGFyZ2V0XSwgKCkgPT4ge1xuICAgIGNvbnN0IGVsID0gdnVlRGVtaS51bnJlZih0YXJnZXQpO1xuICAgIGlmICghZWwpXG4gICAgICByZXR1cm47XG4gICAgc3RvcCgpO1xuICAgIGxpc3RlbmVyc1swXSA9IHVzZUV2ZW50TGlzdGVuZXIoZWwudGV4dFRyYWNrcywgXCJhZGR0cmFja1wiLCAoKSA9PiB0cmFja3MudmFsdWUgPSB0cmFja3NUb0FycmF5KGVsLnRleHRUcmFja3MpKTtcbiAgICBsaXN0ZW5lcnNbMV0gPSB1c2VFdmVudExpc3RlbmVyKGVsLnRleHRUcmFja3MsIFwicmVtb3ZldHJhY2tcIiwgKCkgPT4gdHJhY2tzLnZhbHVlID0gdHJhY2tzVG9BcnJheShlbC50ZXh0VHJhY2tzKSk7XG4gICAgbGlzdGVuZXJzWzJdID0gdXNlRXZlbnRMaXN0ZW5lcihlbC50ZXh0VHJhY2tzLCBcImNoYW5nZVwiLCAoKSA9PiB0cmFja3MudmFsdWUgPSB0cmFja3NUb0FycmF5KGVsLnRleHRUcmFja3MpKTtcbiAgfSk7XG4gIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZSgoKSA9PiBsaXN0ZW5lcnMuZm9yRWFjaCgobGlzdGVuZXIpID0+IGxpc3RlbmVyKCkpKTtcbiAgcmV0dXJuIHtcbiAgICBjdXJyZW50VGltZSxcbiAgICBkdXJhdGlvbixcbiAgICB3YWl0aW5nLFxuICAgIHNlZWtpbmcsXG4gICAgZW5kZWQsXG4gICAgc3RhbGxlZCxcbiAgICBidWZmZXJlZCxcbiAgICBwbGF5aW5nLFxuICAgIHJhdGUsXG4gICAgdm9sdW1lLFxuICAgIG11dGVkLFxuICAgIHRyYWNrcyxcbiAgICBzZWxlY3RlZFRyYWNrLFxuICAgIGVuYWJsZVRyYWNrLFxuICAgIGRpc2FibGVUcmFjayxcbiAgICBzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUsXG4gICAgdG9nZ2xlUGljdHVyZUluUGljdHVyZSxcbiAgICBpc1BpY3R1cmVJblBpY3R1cmUsXG4gICAgb25Tb3VyY2VFcnJvcjogc291cmNlRXJyb3JFdmVudC5vblxuICB9O1xufVxuXG5jb25zdCBnZXRNYXBWdWUyQ29tcGF0ID0gKCkgPT4ge1xuICBjb25zdCBkYXRhID0gdnVlRGVtaS5yZWFjdGl2ZSh7fSk7XG4gIHJldHVybiB7XG4gICAgZ2V0OiAoa2V5KSA9PiBkYXRhW2tleV0sXG4gICAgc2V0OiAoa2V5LCB2YWx1ZSkgPT4gdnVlRGVtaS5zZXQoZGF0YSwga2V5LCB2YWx1ZSksXG4gICAgaGFzOiAoa2V5KSA9PiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KSxcbiAgICBkZWxldGU6IChrZXkpID0+IHZ1ZURlbWkuZGVsKGRhdGEsIGtleSksXG4gICAgY2xlYXI6ICgpID0+IHtcbiAgICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICB2dWVEZW1pLmRlbChkYXRhLCBrZXkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xufTtcbmZ1bmN0aW9uIHVzZU1lbW9pemUocmVzb2x2ZXIsIG9wdGlvbnMpIHtcbiAgY29uc3QgaW5pdENhY2hlID0gKCkgPT4ge1xuICAgIGlmIChvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLmNhY2hlKVxuICAgICAgcmV0dXJuIHZ1ZURlbWkucmVhY3RpdmUob3B0aW9ucy5jYWNoZSk7XG4gICAgaWYgKHZ1ZURlbWkuaXNWdWUyKVxuICAgICAgcmV0dXJuIGdldE1hcFZ1ZTJDb21wYXQoKTtcbiAgICByZXR1cm4gdnVlRGVtaS5yZWFjdGl2ZShuZXcgTWFwKCkpO1xuICB9O1xuICBjb25zdCBjYWNoZSA9IGluaXRDYWNoZSgpO1xuICBjb25zdCBnZW5lcmF0ZUtleSA9ICguLi5hcmdzKSA9PiAob3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5nZXRLZXkpID8gb3B0aW9ucy5nZXRLZXkoLi4uYXJncykgOiBKU09OLnN0cmluZ2lmeShhcmdzKTtcbiAgY29uc3QgX2xvYWREYXRhID0gKGtleSwgLi4uYXJncykgPT4ge1xuICAgIGNhY2hlLnNldChrZXksIHJlc29sdmVyKC4uLmFyZ3MpKTtcbiAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gIH07XG4gIGNvbnN0IGxvYWREYXRhID0gKC4uLmFyZ3MpID0+IF9sb2FkRGF0YShnZW5lcmF0ZUtleSguLi5hcmdzKSwgLi4uYXJncyk7XG4gIGNvbnN0IGRlbGV0ZURhdGEgPSAoLi4uYXJncykgPT4ge1xuICAgIGNhY2hlLmRlbGV0ZShnZW5lcmF0ZUtleSguLi5hcmdzKSk7XG4gIH07XG4gIGNvbnN0IGNsZWFyRGF0YSA9ICgpID0+IHtcbiAgICBjYWNoZS5jbGVhcigpO1xuICB9O1xuICBjb25zdCBtZW1vaXplZCA9ICguLi5hcmdzKSA9PiB7XG4gICAgY29uc3Qga2V5ID0gZ2VuZXJhdGVLZXkoLi4uYXJncyk7XG4gICAgaWYgKGNhY2hlLmhhcyhrZXkpKVxuICAgICAgcmV0dXJuIGNhY2hlLmdldChrZXkpO1xuICAgIHJldHVybiBfbG9hZERhdGEoa2V5LCAuLi5hcmdzKTtcbiAgfTtcbiAgbWVtb2l6ZWQubG9hZCA9IGxvYWREYXRhO1xuICBtZW1vaXplZC5kZWxldGUgPSBkZWxldGVEYXRhO1xuICBtZW1vaXplZC5jbGVhciA9IGNsZWFyRGF0YTtcbiAgbWVtb2l6ZWQuZ2VuZXJhdGVLZXkgPSBnZW5lcmF0ZUtleTtcbiAgbWVtb2l6ZWQuY2FjaGUgPSBjYWNoZTtcbiAgcmV0dXJuIG1lbW9pemVkO1xufVxuXG5mdW5jdGlvbiB1c2VNZW1vcnkob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IG1lbW9yeSA9IHZ1ZURlbWkucmVmKCk7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gdHlwZW9mIHBlcmZvcm1hbmNlICE9PSBcInVuZGVmaW5lZFwiICYmIFwibWVtb3J5XCIgaW4gcGVyZm9ybWFuY2U7XG4gIGlmIChpc1N1cHBvcnRlZCkge1xuICAgIGNvbnN0IHsgaW50ZXJ2YWwgPSAxZTMgfSA9IG9wdGlvbnM7XG4gICAgc2hhcmVkLnVzZUludGVydmFsRm4oKCkgPT4ge1xuICAgICAgbWVtb3J5LnZhbHVlID0gcGVyZm9ybWFuY2UubWVtb3J5O1xuICAgIH0sIGludGVydmFsLCB7IGltbWVkaWF0ZTogb3B0aW9ucy5pbW1lZGlhdGUsIGltbWVkaWF0ZUNhbGxiYWNrOiBvcHRpb25zLmltbWVkaWF0ZUNhbGxiYWNrIH0pO1xuICB9XG4gIHJldHVybiB7IGlzU3VwcG9ydGVkLCBtZW1vcnkgfTtcbn1cblxuZnVuY3Rpb24gdXNlTW91bnRlZCgpIHtcbiAgY29uc3QgaXNNb3VudGVkID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICB2dWVEZW1pLm9uTW91bnRlZCgoKSA9PiB7XG4gICAgaXNNb3VudGVkLnZhbHVlID0gdHJ1ZTtcbiAgfSk7XG4gIHJldHVybiBpc01vdW50ZWQ7XG59XG5cbmZ1bmN0aW9uIHVzZU1vdXNlKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdHlwZSA9IFwicGFnZVwiLFxuICAgIHRvdWNoID0gdHJ1ZSxcbiAgICByZXNldE9uVG91Y2hFbmRzID0gZmFsc2UsXG4gICAgaW5pdGlhbFZhbHVlID0geyB4OiAwLCB5OiAwIH0sXG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvdyxcbiAgICBldmVudEZpbHRlclxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgeCA9IHZ1ZURlbWkucmVmKGluaXRpYWxWYWx1ZS54KTtcbiAgY29uc3QgeSA9IHZ1ZURlbWkucmVmKGluaXRpYWxWYWx1ZS55KTtcbiAgY29uc3Qgc291cmNlVHlwZSA9IHZ1ZURlbWkucmVmKG51bGwpO1xuICBjb25zdCBtb3VzZUhhbmRsZXIgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAodHlwZSA9PT0gXCJwYWdlXCIpIHtcbiAgICAgIHgudmFsdWUgPSBldmVudC5wYWdlWDtcbiAgICAgIHkudmFsdWUgPSBldmVudC5wYWdlWTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiY2xpZW50XCIpIHtcbiAgICAgIHgudmFsdWUgPSBldmVudC5jbGllbnRYO1xuICAgICAgeS52YWx1ZSA9IGV2ZW50LmNsaWVudFk7XG4gICAgfVxuICAgIHNvdXJjZVR5cGUudmFsdWUgPSBcIm1vdXNlXCI7XG4gIH07XG4gIGNvbnN0IHJlc2V0ID0gKCkgPT4ge1xuICAgIHgudmFsdWUgPSBpbml0aWFsVmFsdWUueDtcbiAgICB5LnZhbHVlID0gaW5pdGlhbFZhbHVlLnk7XG4gIH07XG4gIGNvbnN0IHRvdWNoSGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGlmIChldmVudC50b3VjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHRvdWNoMiA9IGV2ZW50LnRvdWNoZXNbMF07XG4gICAgICBpZiAodHlwZSA9PT0gXCJwYWdlXCIpIHtcbiAgICAgICAgeC52YWx1ZSA9IHRvdWNoMi5wYWdlWDtcbiAgICAgICAgeS52YWx1ZSA9IHRvdWNoMi5wYWdlWTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJjbGllbnRcIikge1xuICAgICAgICB4LnZhbHVlID0gdG91Y2gyLmNsaWVudFg7XG4gICAgICAgIHkudmFsdWUgPSB0b3VjaDIuY2xpZW50WTtcbiAgICAgIH1cbiAgICAgIHNvdXJjZVR5cGUudmFsdWUgPSBcInRvdWNoXCI7XG4gICAgfVxuICB9O1xuICBjb25zdCBtb3VzZUhhbmRsZXJXcmFwcGVyID0gKGV2ZW50KSA9PiB7XG4gICAgcmV0dXJuIGV2ZW50RmlsdGVyID09PSB2b2lkIDAgPyBtb3VzZUhhbmRsZXIoZXZlbnQpIDogZXZlbnRGaWx0ZXIoKCkgPT4gbW91c2VIYW5kbGVyKGV2ZW50KSwge30pO1xuICB9O1xuICBjb25zdCB0b3VjaEhhbmRsZXJXcmFwcGVyID0gKGV2ZW50KSA9PiB7XG4gICAgcmV0dXJuIGV2ZW50RmlsdGVyID09PSB2b2lkIDAgPyB0b3VjaEhhbmRsZXIoZXZlbnQpIDogZXZlbnRGaWx0ZXIoKCkgPT4gdG91Y2hIYW5kbGVyKGV2ZW50KSwge30pO1xuICB9O1xuICBpZiAod2luZG93KSB7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwibW91c2Vtb3ZlXCIsIG1vdXNlSGFuZGxlcldyYXBwZXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJkcmFnb3ZlclwiLCBtb3VzZUhhbmRsZXJXcmFwcGVyLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgaWYgKHRvdWNoKSB7XG4gICAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJ0b3VjaHN0YXJ0XCIsIHRvdWNoSGFuZGxlcldyYXBwZXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcInRvdWNobW92ZVwiLCB0b3VjaEhhbmRsZXJXcmFwcGVyLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgICBpZiAocmVzZXRPblRvdWNoRW5kcylcbiAgICAgICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwidG91Y2hlbmRcIiwgcmVzZXQsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHksXG4gICAgc291cmNlVHlwZVxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VNb3VzZUluRWxlbWVudCh0YXJnZXQsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgaGFuZGxlT3V0c2lkZSA9IHRydWUsXG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvd1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyB4LCB5LCBzb3VyY2VUeXBlIH0gPSB1c2VNb3VzZShvcHRpb25zKTtcbiAgY29uc3QgdGFyZ2V0UmVmID0gdnVlRGVtaS5yZWYodGFyZ2V0ICE9IG51bGwgPyB0YXJnZXQgOiB3aW5kb3cgPT0gbnVsbCA/IHZvaWQgMCA6IHdpbmRvdy5kb2N1bWVudC5ib2R5KTtcbiAgY29uc3QgZWxlbWVudFggPSB2dWVEZW1pLnJlZigwKTtcbiAgY29uc3QgZWxlbWVudFkgPSB2dWVEZW1pLnJlZigwKTtcbiAgY29uc3QgZWxlbWVudFBvc2l0aW9uWCA9IHZ1ZURlbWkucmVmKDApO1xuICBjb25zdCBlbGVtZW50UG9zaXRpb25ZID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSB2dWVEZW1pLnJlZigwKTtcbiAgY29uc3QgZWxlbWVudFdpZHRoID0gdnVlRGVtaS5yZWYoMCk7XG4gIGNvbnN0IGlzT3V0c2lkZSA9IHZ1ZURlbWkucmVmKHRydWUpO1xuICBsZXQgc3RvcCA9ICgpID0+IHtcbiAgfTtcbiAgaWYgKHdpbmRvdykge1xuICAgIHN0b3AgPSB2dWVEZW1pLndhdGNoKFt0YXJnZXRSZWYsIHgsIHldLCAoKSA9PiB7XG4gICAgICBjb25zdCBlbCA9IHVucmVmRWxlbWVudCh0YXJnZXRSZWYpO1xuICAgICAgaWYgKCFlbClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY29uc3Qge1xuICAgICAgICBsZWZ0LFxuICAgICAgICB0b3AsXG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHRcbiAgICAgIH0gPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGVsZW1lbnRQb3NpdGlvblgudmFsdWUgPSBsZWZ0ICsgd2luZG93LnBhZ2VYT2Zmc2V0O1xuICAgICAgZWxlbWVudFBvc2l0aW9uWS52YWx1ZSA9IHRvcCArIHdpbmRvdy5wYWdlWU9mZnNldDtcbiAgICAgIGVsZW1lbnRIZWlnaHQudmFsdWUgPSBoZWlnaHQ7XG4gICAgICBlbGVtZW50V2lkdGgudmFsdWUgPSB3aWR0aDtcbiAgICAgIGNvbnN0IGVsWCA9IHgudmFsdWUgLSBlbGVtZW50UG9zaXRpb25YLnZhbHVlO1xuICAgICAgY29uc3QgZWxZID0geS52YWx1ZSAtIGVsZW1lbnRQb3NpdGlvblkudmFsdWU7XG4gICAgICBpc091dHNpZGUudmFsdWUgPSB3aWR0aCA9PT0gMCB8fCBoZWlnaHQgPT09IDAgfHwgZWxYIDwgMCB8fCBlbFkgPCAwIHx8IGVsWCA+IHdpZHRoIHx8IGVsWSA+IGhlaWdodDtcbiAgICAgIGlmIChoYW5kbGVPdXRzaWRlIHx8ICFpc091dHNpZGUudmFsdWUpIHtcbiAgICAgICAgZWxlbWVudFgudmFsdWUgPSBlbFg7XG4gICAgICAgIGVsZW1lbnRZLnZhbHVlID0gZWxZO1xuICAgICAgfVxuICAgIH0sIHsgaW1tZWRpYXRlOiB0cnVlIH0pO1xuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHNvdXJjZVR5cGUsXG4gICAgZWxlbWVudFgsXG4gICAgZWxlbWVudFksXG4gICAgZWxlbWVudFBvc2l0aW9uWCxcbiAgICBlbGVtZW50UG9zaXRpb25ZLFxuICAgIGVsZW1lbnRIZWlnaHQsXG4gICAgZWxlbWVudFdpZHRoLFxuICAgIGlzT3V0c2lkZSxcbiAgICBzdG9wXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZU1vdXNlUHJlc3NlZChvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHRvdWNoID0gdHJ1ZSxcbiAgICBkcmFnID0gdHJ1ZSxcbiAgICBpbml0aWFsVmFsdWUgPSBmYWxzZSxcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBwcmVzc2VkID0gdnVlRGVtaS5yZWYoaW5pdGlhbFZhbHVlKTtcbiAgY29uc3Qgc291cmNlVHlwZSA9IHZ1ZURlbWkucmVmKG51bGwpO1xuICBpZiAoIXdpbmRvdykge1xuICAgIHJldHVybiB7XG4gICAgICBwcmVzc2VkLFxuICAgICAgc291cmNlVHlwZVxuICAgIH07XG4gIH1cbiAgY29uc3Qgb25QcmVzc2VkID0gKHNyY1R5cGUpID0+ICgpID0+IHtcbiAgICBwcmVzc2VkLnZhbHVlID0gdHJ1ZTtcbiAgICBzb3VyY2VUeXBlLnZhbHVlID0gc3JjVHlwZTtcbiAgfTtcbiAgY29uc3Qgb25SZWxlYXNlZCA9ICgpID0+IHtcbiAgICBwcmVzc2VkLnZhbHVlID0gZmFsc2U7XG4gICAgc291cmNlVHlwZS52YWx1ZSA9IG51bGw7XG4gIH07XG4gIGNvbnN0IHRhcmdldCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gdW5yZWZFbGVtZW50KG9wdGlvbnMudGFyZ2V0KSB8fCB3aW5kb3cpO1xuICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJtb3VzZWRvd25cIiwgb25QcmVzc2VkKFwibW91c2VcIiksIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwibW91c2VsZWF2ZVwiLCBvblJlbGVhc2VkLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcIm1vdXNldXBcIiwgb25SZWxlYXNlZCwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICBpZiAoZHJhZykge1xuICAgIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcImRyYWdzdGFydFwiLCBvblByZXNzZWQoXCJtb3VzZVwiKSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcImRyb3BcIiwgb25SZWxlYXNlZCwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcImRyYWdlbmRcIiwgb25SZWxlYXNlZCwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICB9XG4gIGlmICh0b3VjaCkge1xuICAgIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInRvdWNoc3RhcnRcIiwgb25QcmVzc2VkKFwidG91Y2hcIiksIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJ0b3VjaGVuZFwiLCBvblJlbGVhc2VkLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwidG91Y2hjYW5jZWxcIiwgb25SZWxlYXNlZCwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICB9XG4gIHJldHVybiB7XG4gICAgcHJlc3NlZCxcbiAgICBzb3VyY2VUeXBlXG4gIH07XG59XG5cbnZhciBfX2dldE93blByb3BTeW1ib2xzJDYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCQ2ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kNiA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19vYmpSZXN0JDEgPSAoc291cmNlLCBleGNsdWRlKSA9PiB7XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgZm9yICh2YXIgcHJvcCBpbiBzb3VyY2UpXG4gICAgaWYgKF9faGFzT3duUHJvcCQ2LmNhbGwoc291cmNlLCBwcm9wKSAmJiBleGNsdWRlLmluZGV4T2YocHJvcCkgPCAwKVxuICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdO1xuICBpZiAoc291cmNlICE9IG51bGwgJiYgX19nZXRPd25Qcm9wU3ltYm9scyQ2KVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyQ2KHNvdXJjZSkpIHtcbiAgICAgIGlmIChleGNsdWRlLmluZGV4T2YocHJvcCkgPCAwICYmIF9fcHJvcElzRW51bSQ2LmNhbGwoc291cmNlLCBwcm9wKSlcbiAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdO1xuICAgIH1cbiAgcmV0dXJuIHRhcmdldDtcbn07XG5mdW5jdGlvbiB1c2VNdXRhdGlvbk9ic2VydmVyKHRhcmdldCwgY2FsbGJhY2ssIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBfYSA9IG9wdGlvbnMsIHsgd2luZG93ID0gZGVmYXVsdFdpbmRvdyB9ID0gX2EsIG11dGF0aW9uT3B0aW9ucyA9IF9fb2JqUmVzdCQxKF9hLCBbXCJ3aW5kb3dcIl0pO1xuICBsZXQgb2JzZXJ2ZXI7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gd2luZG93ICYmIFwiTXV0YXRpb25PYnNlcnZlclwiIGluIHdpbmRvdztcbiAgY29uc3QgY2xlYW51cCA9ICgpID0+IHtcbiAgICBpZiAob2JzZXJ2ZXIpIHtcbiAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIG9ic2VydmVyID0gdm9pZCAwO1xuICAgIH1cbiAgfTtcbiAgY29uc3Qgc3RvcFdhdGNoID0gdnVlRGVtaS53YXRjaCgoKSA9PiB1bnJlZkVsZW1lbnQodGFyZ2V0KSwgKGVsKSA9PiB7XG4gICAgY2xlYW51cCgpO1xuICAgIGlmIChpc1N1cHBvcnRlZCAmJiB3aW5kb3cgJiYgZWwpIHtcbiAgICAgIG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoY2FsbGJhY2spO1xuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShlbCwgbXV0YXRpb25PcHRpb25zKTtcbiAgICB9XG4gIH0sIHsgaW1tZWRpYXRlOiB0cnVlIH0pO1xuICBjb25zdCBzdG9wID0gKCkgPT4ge1xuICAgIGNsZWFudXAoKTtcbiAgICBzdG9wV2F0Y2goKTtcbiAgfTtcbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKHN0b3ApO1xuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIHN0b3BcbiAgfTtcbn1cblxuY29uc3QgdXNlTmF2aWdhdG9yTGFuZ3VhZ2UgPSAob3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IHsgd2luZG93ID0gZGVmYXVsdFdpbmRvdyB9ID0gb3B0aW9ucztcbiAgY29uc3QgbmF2aWdhdG9yID0gd2luZG93ID09IG51bGwgPyB2b2lkIDAgOiB3aW5kb3cubmF2aWdhdG9yO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IEJvb2xlYW4obmF2aWdhdG9yICYmIFwibGFuZ3VhZ2VcIiBpbiBuYXZpZ2F0b3IpO1xuICBjb25zdCBsYW5ndWFnZSA9IHZ1ZURlbWkucmVmKG5hdmlnYXRvciA9PSBudWxsID8gdm9pZCAwIDogbmF2aWdhdG9yLmxhbmd1YWdlKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwibGFuZ3VhZ2VjaGFuZ2VcIiwgKCkgPT4ge1xuICAgIGlmIChuYXZpZ2F0b3IpXG4gICAgICBsYW5ndWFnZS52YWx1ZSA9IG5hdmlnYXRvci5sYW5ndWFnZTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgbGFuZ3VhZ2VcbiAgfTtcbn07XG5cbmZ1bmN0aW9uIHVzZU5ldHdvcmsob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgd2luZG93ID0gZGVmYXVsdFdpbmRvdyB9ID0gb3B0aW9ucztcbiAgY29uc3QgbmF2aWdhdG9yID0gd2luZG93ID09IG51bGwgPyB2b2lkIDAgOiB3aW5kb3cubmF2aWdhdG9yO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IEJvb2xlYW4obmF2aWdhdG9yICYmIFwiY29ubmVjdGlvblwiIGluIG5hdmlnYXRvcik7XG4gIGNvbnN0IGlzT25saW5lID0gdnVlRGVtaS5yZWYodHJ1ZSk7XG4gIGNvbnN0IHNhdmVEYXRhID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBvZmZsaW5lQXQgPSB2dWVEZW1pLnJlZih2b2lkIDApO1xuICBjb25zdCBvbmxpbmVBdCA9IHZ1ZURlbWkucmVmKHZvaWQgMCk7XG4gIGNvbnN0IGRvd25saW5rID0gdnVlRGVtaS5yZWYodm9pZCAwKTtcbiAgY29uc3QgZG93bmxpbmtNYXggPSB2dWVEZW1pLnJlZih2b2lkIDApO1xuICBjb25zdCBydHQgPSB2dWVEZW1pLnJlZih2b2lkIDApO1xuICBjb25zdCBlZmZlY3RpdmVUeXBlID0gdnVlRGVtaS5yZWYodm9pZCAwKTtcbiAgY29uc3QgdHlwZSA9IHZ1ZURlbWkucmVmKFwidW5rbm93blwiKTtcbiAgY29uc3QgY29ubmVjdGlvbiA9IGlzU3VwcG9ydGVkICYmIG5hdmlnYXRvci5jb25uZWN0aW9uO1xuICBmdW5jdGlvbiB1cGRhdGVOZXR3b3JrSW5mb3JtYXRpb24oKSB7XG4gICAgaWYgKCFuYXZpZ2F0b3IpXG4gICAgICByZXR1cm47XG4gICAgaXNPbmxpbmUudmFsdWUgPSBuYXZpZ2F0b3Iub25MaW5lO1xuICAgIG9mZmxpbmVBdC52YWx1ZSA9IGlzT25saW5lLnZhbHVlID8gdm9pZCAwIDogRGF0ZS5ub3coKTtcbiAgICBvbmxpbmVBdC52YWx1ZSA9IGlzT25saW5lLnZhbHVlID8gRGF0ZS5ub3coKSA6IHZvaWQgMDtcbiAgICBpZiAoY29ubmVjdGlvbikge1xuICAgICAgZG93bmxpbmsudmFsdWUgPSBjb25uZWN0aW9uLmRvd25saW5rO1xuICAgICAgZG93bmxpbmtNYXgudmFsdWUgPSBjb25uZWN0aW9uLmRvd25saW5rTWF4O1xuICAgICAgZWZmZWN0aXZlVHlwZS52YWx1ZSA9IGNvbm5lY3Rpb24uZWZmZWN0aXZlVHlwZTtcbiAgICAgIHJ0dC52YWx1ZSA9IGNvbm5lY3Rpb24ucnR0O1xuICAgICAgc2F2ZURhdGEudmFsdWUgPSBjb25uZWN0aW9uLnNhdmVEYXRhO1xuICAgICAgdHlwZS52YWx1ZSA9IGNvbm5lY3Rpb24udHlwZTtcbiAgICB9XG4gIH1cbiAgaWYgKHdpbmRvdykge1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcIm9mZmxpbmVcIiwgKCkgPT4ge1xuICAgICAgaXNPbmxpbmUudmFsdWUgPSBmYWxzZTtcbiAgICAgIG9mZmxpbmVBdC52YWx1ZSA9IERhdGUubm93KCk7XG4gICAgfSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwib25saW5lXCIsICgpID0+IHtcbiAgICAgIGlzT25saW5lLnZhbHVlID0gdHJ1ZTtcbiAgICAgIG9ubGluZUF0LnZhbHVlID0gRGF0ZS5ub3coKTtcbiAgICB9KTtcbiAgfVxuICBpZiAoY29ubmVjdGlvbilcbiAgICB1c2VFdmVudExpc3RlbmVyKGNvbm5lY3Rpb24sIFwiY2hhbmdlXCIsIHVwZGF0ZU5ldHdvcmtJbmZvcm1hdGlvbiwgZmFsc2UpO1xuICB1cGRhdGVOZXR3b3JrSW5mb3JtYXRpb24oKTtcbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBpc09ubGluZSxcbiAgICBzYXZlRGF0YSxcbiAgICBvZmZsaW5lQXQsXG4gICAgb25saW5lQXQsXG4gICAgZG93bmxpbmssXG4gICAgZG93bmxpbmtNYXgsXG4gICAgZWZmZWN0aXZlVHlwZSxcbiAgICBydHQsXG4gICAgdHlwZVxuICB9O1xufVxuXG52YXIgX19kZWZQcm9wJDUgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyQ1ID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkNSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJDUgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCQ1ID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCQ1KG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyQ1ID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkNS5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJDUoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJDUpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJDUoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kNS5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkNShhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbmZ1bmN0aW9uIHVzZU5vdyhvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGNvbnRyb2xzOiBleHBvc2VDb250cm9scyA9IGZhbHNlLFxuICAgIGludGVydmFsID0gXCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWVcIlxuICB9ID0gb3B0aW9ucztcbiAgY29uc3Qgbm93ID0gdnVlRGVtaS5yZWYobmV3IERhdGUoKSk7XG4gIGNvbnN0IHVwZGF0ZSA9ICgpID0+IG5vdy52YWx1ZSA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IGNvbnRyb2xzID0gaW50ZXJ2YWwgPT09IFwicmVxdWVzdEFuaW1hdGlvbkZyYW1lXCIgPyB1c2VSYWZGbih1cGRhdGUsIHsgaW1tZWRpYXRlOiB0cnVlIH0pIDogc2hhcmVkLnVzZUludGVydmFsRm4odXBkYXRlLCBpbnRlcnZhbCwgeyBpbW1lZGlhdGU6IHRydWUgfSk7XG4gIGlmIChleHBvc2VDb250cm9scykge1xuICAgIHJldHVybiBfX3NwcmVhZFZhbHVlcyQ1KHtcbiAgICAgIG5vd1xuICAgIH0sIGNvbnRyb2xzKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbm93O1xuICB9XG59XG5cbmZ1bmN0aW9uIHVzZU9iamVjdFVybChvYmplY3QpIHtcbiAgY29uc3QgdXJsID0gdnVlRGVtaS5yZWYoKTtcbiAgY29uc3QgcmVsZWFzZSA9ICgpID0+IHtcbiAgICBpZiAodXJsLnZhbHVlKVxuICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwudmFsdWUpO1xuICAgIHVybC52YWx1ZSA9IHZvaWQgMDtcbiAgfTtcbiAgdnVlRGVtaS53YXRjaCgoKSA9PiB2dWVEZW1pLnVucmVmKG9iamVjdCksIChuZXdPYmplY3QpID0+IHtcbiAgICByZWxlYXNlKCk7XG4gICAgaWYgKG5ld09iamVjdClcbiAgICAgIHVybC52YWx1ZSA9IFVSTC5jcmVhdGVPYmplY3RVUkwobmV3T2JqZWN0KTtcbiAgfSwgeyBpbW1lZGlhdGU6IHRydWUgfSk7XG4gIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZShyZWxlYXNlKTtcbiAgcmV0dXJuIHZ1ZURlbWkucmVhZG9ubHkodXJsKTtcbn1cblxuZnVuY3Rpb24gdXNlT2Zmc2V0UGFnaW5hdGlvbihvcHRpb25zKSB7XG4gIGNvbnN0IHtcbiAgICB0b3RhbCA9IEluZmluaXR5LFxuICAgIHBhZ2VTaXplID0gMTAsXG4gICAgcGFnZSA9IDEsXG4gICAgb25QYWdlQ2hhbmdlID0gc2hhcmVkLm5vb3AsXG4gICAgb25QYWdlU2l6ZUNoYW5nZSA9IHNoYXJlZC5ub29wLFxuICAgIG9uUGFnZUNvdW50Q2hhbmdlID0gc2hhcmVkLm5vb3BcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGN1cnJlbnRQYWdlU2l6ZSA9IHVzZUNsYW1wKHBhZ2VTaXplLCAxLCBJbmZpbml0eSk7XG4gIGNvbnN0IHBhZ2VDb3VudCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gTWF0aC5jZWlsKHZ1ZURlbWkudW5yZWYodG90YWwpIC8gdnVlRGVtaS51bnJlZihjdXJyZW50UGFnZVNpemUpKSk7XG4gIGNvbnN0IGN1cnJlbnRQYWdlID0gdXNlQ2xhbXAocGFnZSwgMSwgcGFnZUNvdW50KTtcbiAgY29uc3QgaXNGaXJzdFBhZ2UgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IGN1cnJlbnRQYWdlLnZhbHVlID09PSAxKTtcbiAgY29uc3QgaXNMYXN0UGFnZSA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gY3VycmVudFBhZ2UudmFsdWUgPT09IHBhZ2VDb3VudC52YWx1ZSk7XG4gIGlmICh2dWVEZW1pLmlzUmVmKHBhZ2UpKVxuICAgIHNoYXJlZC5zeW5jUmVmKHBhZ2UsIGN1cnJlbnRQYWdlKTtcbiAgaWYgKHZ1ZURlbWkuaXNSZWYocGFnZVNpemUpKVxuICAgIHNoYXJlZC5zeW5jUmVmKHBhZ2VTaXplLCBjdXJyZW50UGFnZVNpemUpO1xuICBmdW5jdGlvbiBwcmV2KCkge1xuICAgIGN1cnJlbnRQYWdlLnZhbHVlLS07XG4gIH1cbiAgZnVuY3Rpb24gbmV4dCgpIHtcbiAgICBjdXJyZW50UGFnZS52YWx1ZSsrO1xuICB9XG4gIGNvbnN0IHJldHVyblZhbHVlID0ge1xuICAgIGN1cnJlbnRQYWdlLFxuICAgIGN1cnJlbnRQYWdlU2l6ZSxcbiAgICBwYWdlQ291bnQsXG4gICAgaXNGaXJzdFBhZ2UsXG4gICAgaXNMYXN0UGFnZSxcbiAgICBwcmV2LFxuICAgIG5leHRcbiAgfTtcbiAgdnVlRGVtaS53YXRjaChjdXJyZW50UGFnZSwgKCkgPT4ge1xuICAgIG9uUGFnZUNoYW5nZSh2dWVEZW1pLnJlYWN0aXZlKHJldHVyblZhbHVlKSk7XG4gIH0pO1xuICB2dWVEZW1pLndhdGNoKGN1cnJlbnRQYWdlU2l6ZSwgKCkgPT4ge1xuICAgIG9uUGFnZVNpemVDaGFuZ2UodnVlRGVtaS5yZWFjdGl2ZShyZXR1cm5WYWx1ZSkpO1xuICB9KTtcbiAgdnVlRGVtaS53YXRjaChwYWdlQ291bnQsICgpID0+IHtcbiAgICBvblBhZ2VDb3VudENoYW5nZSh2dWVEZW1pLnJlYWN0aXZlKHJldHVyblZhbHVlKSk7XG4gIH0pO1xuICByZXR1cm4gcmV0dXJuVmFsdWU7XG59XG5cbmZ1bmN0aW9uIHVzZU9ubGluZShvcHRpb25zID0ge30pIHtcbiAgY29uc3QgeyBpc09ubGluZSB9ID0gdXNlTmV0d29yayhvcHRpb25zKTtcbiAgcmV0dXJuIGlzT25saW5lO1xufVxuXG5mdW5jdGlvbiB1c2VQYWdlTGVhdmUob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgd2luZG93ID0gZGVmYXVsdFdpbmRvdyB9ID0gb3B0aW9ucztcbiAgY29uc3QgaXNMZWZ0ID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBoYW5kbGVyID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKCF3aW5kb3cpXG4gICAgICByZXR1cm47XG4gICAgZXZlbnQgPSBldmVudCB8fCB3aW5kb3cuZXZlbnQ7XG4gICAgY29uc3QgZnJvbSA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQgfHwgZXZlbnQudG9FbGVtZW50O1xuICAgIGlzTGVmdC52YWx1ZSA9ICFmcm9tO1xuICB9O1xuICBpZiAod2luZG93KSB7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwibW91c2VvdXRcIiwgaGFuZGxlciwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LmRvY3VtZW50LCBcIm1vdXNlbGVhdmVcIiwgaGFuZGxlciwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LmRvY3VtZW50LCBcIm1vdXNlZW50ZXJcIiwgaGFuZGxlciwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICB9XG4gIHJldHVybiBpc0xlZnQ7XG59XG5cbmZ1bmN0aW9uIHVzZVBhcmFsbGF4KHRhcmdldCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBkZXZpY2VPcmllbnRhdGlvblRpbHRBZGp1c3QgPSAoaSkgPT4gaSxcbiAgICBkZXZpY2VPcmllbnRhdGlvblJvbGxBZGp1c3QgPSAoaSkgPT4gaSxcbiAgICBtb3VzZVRpbHRBZGp1c3QgPSAoaSkgPT4gaSxcbiAgICBtb3VzZVJvbGxBZGp1c3QgPSAoaSkgPT4gaSxcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBvcmllbnRhdGlvbiA9IHZ1ZURlbWkucmVhY3RpdmUodXNlRGV2aWNlT3JpZW50YXRpb24oeyB3aW5kb3cgfSkpO1xuICBjb25zdCB7XG4gICAgZWxlbWVudFg6IHgsXG4gICAgZWxlbWVudFk6IHksXG4gICAgZWxlbWVudFdpZHRoOiB3aWR0aCxcbiAgICBlbGVtZW50SGVpZ2h0OiBoZWlnaHRcbiAgfSA9IHVzZU1vdXNlSW5FbGVtZW50KHRhcmdldCwgeyBoYW5kbGVPdXRzaWRlOiBmYWxzZSwgd2luZG93IH0pO1xuICBjb25zdCBzb3VyY2UgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAob3JpZW50YXRpb24uaXNTdXBwb3J0ZWQgJiYgKG9yaWVudGF0aW9uLmFscGhhICE9IG51bGwgJiYgb3JpZW50YXRpb24uYWxwaGEgIT09IDAgfHwgb3JpZW50YXRpb24uZ2FtbWEgIT0gbnVsbCAmJiBvcmllbnRhdGlvbi5nYW1tYSAhPT0gMCkpXG4gICAgICByZXR1cm4gXCJkZXZpY2VPcmllbnRhdGlvblwiO1xuICAgIHJldHVybiBcIm1vdXNlXCI7XG4gIH0pO1xuICBjb25zdCByb2xsID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHNvdXJjZS52YWx1ZSA9PT0gXCJkZXZpY2VPcmllbnRhdGlvblwiKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IC1vcmllbnRhdGlvbi5iZXRhIC8gOTA7XG4gICAgICByZXR1cm4gZGV2aWNlT3JpZW50YXRpb25Sb2xsQWRqdXN0KHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdmFsdWUgPSAtKHkudmFsdWUgLSBoZWlnaHQudmFsdWUgLyAyKSAvIGhlaWdodC52YWx1ZTtcbiAgICAgIHJldHVybiBtb3VzZVJvbGxBZGp1c3QodmFsdWUpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IHRpbHQgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoc291cmNlLnZhbHVlID09PSBcImRldmljZU9yaWVudGF0aW9uXCIpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gb3JpZW50YXRpb24uZ2FtbWEgLyA5MDtcbiAgICAgIHJldHVybiBkZXZpY2VPcmllbnRhdGlvblRpbHRBZGp1c3QodmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2YWx1ZSA9ICh4LnZhbHVlIC0gd2lkdGgudmFsdWUgLyAyKSAvIHdpZHRoLnZhbHVlO1xuICAgICAgcmV0dXJuIG1vdXNlVGlsdEFkanVzdCh2YWx1ZSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHsgcm9sbCwgdGlsdCwgc291cmNlIH07XG59XG5cbnZhciBfX2RlZlByb3AkNCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2RlZlByb3BzJDEgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcztcbnZhciBfX2dldE93blByb3BEZXNjcyQxID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyQ0ID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkNCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJDQgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCQ0ID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCQ0KG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyQ0ID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkNC5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJDQoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJDQpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJDQoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kNC5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkNChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbnZhciBfX3NwcmVhZFByb3BzJDEgPSAoYSwgYikgPT4gX19kZWZQcm9wcyQxKGEsIF9fZ2V0T3duUHJvcERlc2NzJDEoYikpO1xuY29uc3QgZGVmYXVsdFN0YXRlID0ge1xuICB4OiAwLFxuICB5OiAwLFxuICBwb2ludGVySWQ6IDAsXG4gIHByZXNzdXJlOiAwLFxuICB0aWx0WDogMCxcbiAgdGlsdFk6IDAsXG4gIHdpZHRoOiAwLFxuICBoZWlnaHQ6IDAsXG4gIHR3aXN0OiAwLFxuICBwb2ludGVyVHlwZTogbnVsbFxufTtcbmNvbnN0IGtleXMgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmtleXMoZGVmYXVsdFN0YXRlKTtcbmZ1bmN0aW9uIHVzZVBvaW50ZXIob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB0YXJnZXQgPSBkZWZhdWx0V2luZG93XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpc0luc2lkZSA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3Qgc3RhdGUgPSB2dWVEZW1pLnJlZihvcHRpb25zLmluaXRpYWxWYWx1ZSB8fCB7fSk7XG4gIE9iamVjdC5hc3NpZ24oc3RhdGUudmFsdWUsIGRlZmF1bHRTdGF0ZSwgc3RhdGUudmFsdWUpO1xuICBjb25zdCBoYW5kbGVyID0gKGV2ZW50KSA9PiB7XG4gICAgaXNJbnNpZGUudmFsdWUgPSB0cnVlO1xuICAgIGlmIChvcHRpb25zLnBvaW50ZXJUeXBlcyAmJiAhb3B0aW9ucy5wb2ludGVyVHlwZXMuaW5jbHVkZXMoZXZlbnQucG9pbnRlclR5cGUpKVxuICAgICAgcmV0dXJuO1xuICAgIHN0YXRlLnZhbHVlID0gc2hhcmVkLm9iamVjdFBpY2soZXZlbnQsIGtleXMsIGZhbHNlKTtcbiAgfTtcbiAgaWYgKHRhcmdldCkge1xuICAgIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInBvaW50ZXJkb3duXCIsIGhhbmRsZXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJwb2ludGVybW92ZVwiLCBoYW5kbGVyLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwicG9pbnRlcmxlYXZlXCIsICgpID0+IGlzSW5zaWRlLnZhbHVlID0gZmFsc2UsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgfVxuICByZXR1cm4gX19zcHJlYWRQcm9wcyQxKF9fc3ByZWFkVmFsdWVzJDQoe30sIHNoYXJlZC50b1JlZnMoc3RhdGUpKSwge1xuICAgIGlzSW5zaWRlXG4gIH0pO1xufVxuXG5leHBvcnRzLlN3aXBlRGlyZWN0aW9uID0gdm9pZCAwO1xuKGZ1bmN0aW9uKFN3aXBlRGlyZWN0aW9uMikge1xuICBTd2lwZURpcmVjdGlvbjJbXCJVUFwiXSA9IFwiVVBcIjtcbiAgU3dpcGVEaXJlY3Rpb24yW1wiUklHSFRcIl0gPSBcIlJJR0hUXCI7XG4gIFN3aXBlRGlyZWN0aW9uMltcIkRPV05cIl0gPSBcIkRPV05cIjtcbiAgU3dpcGVEaXJlY3Rpb24yW1wiTEVGVFwiXSA9IFwiTEVGVFwiO1xuICBTd2lwZURpcmVjdGlvbjJbXCJOT05FXCJdID0gXCJOT05FXCI7XG59KShleHBvcnRzLlN3aXBlRGlyZWN0aW9uIHx8IChleHBvcnRzLlN3aXBlRGlyZWN0aW9uID0ge30pKTtcbmZ1bmN0aW9uIHVzZVN3aXBlKHRhcmdldCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB0aHJlc2hvbGQgPSA1MCxcbiAgICBvblN3aXBlLFxuICAgIG9uU3dpcGVFbmQsXG4gICAgb25Td2lwZVN0YXJ0LFxuICAgIHBhc3NpdmUgPSB0cnVlLFxuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3dcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGNvb3Jkc1N0YXJ0ID0gdnVlRGVtaS5yZWFjdGl2ZSh7IHg6IDAsIHk6IDAgfSk7XG4gIGNvbnN0IGNvb3Jkc0VuZCA9IHZ1ZURlbWkucmVhY3RpdmUoeyB4OiAwLCB5OiAwIH0pO1xuICBjb25zdCBkaWZmWCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gY29vcmRzU3RhcnQueCAtIGNvb3Jkc0VuZC54KTtcbiAgY29uc3QgZGlmZlkgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IGNvb3Jkc1N0YXJ0LnkgLSBjb29yZHNFbmQueSk7XG4gIGNvbnN0IHsgbWF4LCBhYnMgfSA9IE1hdGg7XG4gIGNvbnN0IGlzVGhyZXNob2xkRXhjZWVkZWQgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IG1heChhYnMoZGlmZlgudmFsdWUpLCBhYnMoZGlmZlkudmFsdWUpKSA+PSB0aHJlc2hvbGQpO1xuICBjb25zdCBpc1N3aXBpbmcgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IGRpcmVjdGlvbiA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICghaXNUaHJlc2hvbGRFeGNlZWRlZC52YWx1ZSlcbiAgICAgIHJldHVybiBleHBvcnRzLlN3aXBlRGlyZWN0aW9uLk5PTkU7XG4gICAgaWYgKGFicyhkaWZmWC52YWx1ZSkgPiBhYnMoZGlmZlkudmFsdWUpKSB7XG4gICAgICByZXR1cm4gZGlmZlgudmFsdWUgPiAwID8gZXhwb3J0cy5Td2lwZURpcmVjdGlvbi5MRUZUIDogZXhwb3J0cy5Td2lwZURpcmVjdGlvbi5SSUdIVDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGRpZmZZLnZhbHVlID4gMCA/IGV4cG9ydHMuU3dpcGVEaXJlY3Rpb24uVVAgOiBleHBvcnRzLlN3aXBlRGlyZWN0aW9uLkRPV047XG4gICAgfVxuICB9KTtcbiAgY29uc3QgZ2V0VG91Y2hFdmVudENvb3JkcyA9IChlKSA9PiBbZS50b3VjaGVzWzBdLmNsaWVudFgsIGUudG91Y2hlc1swXS5jbGllbnRZXTtcbiAgY29uc3QgdXBkYXRlQ29vcmRzU3RhcnQgPSAoeCwgeSkgPT4ge1xuICAgIGNvb3Jkc1N0YXJ0LnggPSB4O1xuICAgIGNvb3Jkc1N0YXJ0LnkgPSB5O1xuICB9O1xuICBjb25zdCB1cGRhdGVDb29yZHNFbmQgPSAoeCwgeSkgPT4ge1xuICAgIGNvb3Jkc0VuZC54ID0geDtcbiAgICBjb29yZHNFbmQueSA9IHk7XG4gIH07XG4gIGxldCBsaXN0ZW5lck9wdGlvbnM7XG4gIGNvbnN0IGlzUGFzc2l2ZUV2ZW50U3VwcG9ydGVkID0gY2hlY2tQYXNzaXZlRXZlbnRTdXBwb3J0KHdpbmRvdyA9PSBudWxsID8gdm9pZCAwIDogd2luZG93LmRvY3VtZW50KTtcbiAgaWYgKCFwYXNzaXZlKVxuICAgIGxpc3RlbmVyT3B0aW9ucyA9IGlzUGFzc2l2ZUV2ZW50U3VwcG9ydGVkID8geyBwYXNzaXZlOiBmYWxzZSwgY2FwdHVyZTogdHJ1ZSB9IDogeyBjYXB0dXJlOiB0cnVlIH07XG4gIGVsc2VcbiAgICBsaXN0ZW5lck9wdGlvbnMgPSBpc1Bhc3NpdmVFdmVudFN1cHBvcnRlZCA/IHsgcGFzc2l2ZTogdHJ1ZSB9IDogeyBjYXB0dXJlOiBmYWxzZSB9O1xuICBjb25zdCBvblRvdWNoRW5kID0gKGUpID0+IHtcbiAgICBpZiAoaXNTd2lwaW5nLnZhbHVlKVxuICAgICAgb25Td2lwZUVuZCA9PSBudWxsID8gdm9pZCAwIDogb25Td2lwZUVuZChlLCBkaXJlY3Rpb24udmFsdWUpO1xuICAgIGlzU3dpcGluZy52YWx1ZSA9IGZhbHNlO1xuICB9O1xuICBjb25zdCBzdG9wcyA9IFtcbiAgICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJ0b3VjaHN0YXJ0XCIsIChlKSA9PiB7XG4gICAgICBpZiAobGlzdGVuZXJPcHRpb25zLmNhcHR1cmUgJiYgIWxpc3RlbmVyT3B0aW9ucy5wYXNzaXZlKVxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBjb25zdCBbeCwgeV0gPSBnZXRUb3VjaEV2ZW50Q29vcmRzKGUpO1xuICAgICAgdXBkYXRlQ29vcmRzU3RhcnQoeCwgeSk7XG4gICAgICB1cGRhdGVDb29yZHNFbmQoeCwgeSk7XG4gICAgICBvblN3aXBlU3RhcnQgPT0gbnVsbCA/IHZvaWQgMCA6IG9uU3dpcGVTdGFydChlKTtcbiAgICB9LCBsaXN0ZW5lck9wdGlvbnMpLFxuICAgIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInRvdWNobW92ZVwiLCAoZSkgPT4ge1xuICAgICAgY29uc3QgW3gsIHldID0gZ2V0VG91Y2hFdmVudENvb3JkcyhlKTtcbiAgICAgIHVwZGF0ZUNvb3Jkc0VuZCh4LCB5KTtcbiAgICAgIGlmICghaXNTd2lwaW5nLnZhbHVlICYmIGlzVGhyZXNob2xkRXhjZWVkZWQudmFsdWUpXG4gICAgICAgIGlzU3dpcGluZy52YWx1ZSA9IHRydWU7XG4gICAgICBpZiAoaXNTd2lwaW5nLnZhbHVlKVxuICAgICAgICBvblN3aXBlID09IG51bGwgPyB2b2lkIDAgOiBvblN3aXBlKGUpO1xuICAgIH0sIGxpc3RlbmVyT3B0aW9ucyksXG4gICAgdXNlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIFwidG91Y2hlbmRcIiwgb25Ub3VjaEVuZCwgbGlzdGVuZXJPcHRpb25zKSxcbiAgICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJ0b3VjaGNhbmNlbFwiLCBvblRvdWNoRW5kLCBsaXN0ZW5lck9wdGlvbnMpXG4gIF07XG4gIGNvbnN0IHN0b3AgPSAoKSA9PiBzdG9wcy5mb3JFYWNoKChzKSA9PiBzKCkpO1xuICByZXR1cm4ge1xuICAgIGlzUGFzc2l2ZUV2ZW50U3VwcG9ydGVkLFxuICAgIGlzU3dpcGluZyxcbiAgICBkaXJlY3Rpb24sXG4gICAgY29vcmRzU3RhcnQsXG4gICAgY29vcmRzRW5kLFxuICAgIGxlbmd0aFg6IGRpZmZYLFxuICAgIGxlbmd0aFk6IGRpZmZZLFxuICAgIHN0b3BcbiAgfTtcbn1cbmZ1bmN0aW9uIGNoZWNrUGFzc2l2ZUV2ZW50U3VwcG9ydChkb2N1bWVudCkge1xuICBpZiAoIWRvY3VtZW50KVxuICAgIHJldHVybiBmYWxzZTtcbiAgbGV0IHN1cHBvcnRzUGFzc2l2ZSA9IGZhbHNlO1xuICBjb25zdCBvcHRpb25zQmxvY2sgPSB7XG4gICAgZ2V0IHBhc3NpdmUoKSB7XG4gICAgICBzdXBwb3J0c1Bhc3NpdmUgPSB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInhcIiwgc2hhcmVkLm5vb3AsIG9wdGlvbnNCbG9jayk7XG4gIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ4XCIsIHNoYXJlZC5ub29wKTtcbiAgcmV0dXJuIHN1cHBvcnRzUGFzc2l2ZTtcbn1cblxuZnVuY3Rpb24gdXNlUG9pbnRlclN3aXBlKHRhcmdldCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHRhcmdldFJlZiA9IHZ1ZURlbWkucmVmKHRhcmdldCk7XG4gIGNvbnN0IHtcbiAgICB0aHJlc2hvbGQgPSA1MCxcbiAgICBvblN3aXBlLFxuICAgIG9uU3dpcGVFbmQsXG4gICAgb25Td2lwZVN0YXJ0XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBwb3NTdGFydCA9IHZ1ZURlbWkucmVhY3RpdmUoeyB4OiAwLCB5OiAwIH0pO1xuICBjb25zdCB1cGRhdGVQb3NTdGFydCA9ICh4LCB5KSA9PiB7XG4gICAgcG9zU3RhcnQueCA9IHg7XG4gICAgcG9zU3RhcnQueSA9IHk7XG4gIH07XG4gIGNvbnN0IHBvc0VuZCA9IHZ1ZURlbWkucmVhY3RpdmUoeyB4OiAwLCB5OiAwIH0pO1xuICBjb25zdCB1cGRhdGVQb3NFbmQgPSAoeCwgeSkgPT4ge1xuICAgIHBvc0VuZC54ID0geDtcbiAgICBwb3NFbmQueSA9IHk7XG4gIH07XG4gIGNvbnN0IGRpc3RhbmNlWCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gcG9zU3RhcnQueCAtIHBvc0VuZC54KTtcbiAgY29uc3QgZGlzdGFuY2VZID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBwb3NTdGFydC55IC0gcG9zRW5kLnkpO1xuICBjb25zdCB7IG1heCwgYWJzIH0gPSBNYXRoO1xuICBjb25zdCBpc1RocmVzaG9sZEV4Y2VlZGVkID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBtYXgoYWJzKGRpc3RhbmNlWC52YWx1ZSksIGFicyhkaXN0YW5jZVkudmFsdWUpKSA+PSB0aHJlc2hvbGQpO1xuICBjb25zdCBpc1N3aXBpbmcgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IGlzUG9pbnRlckRvd24gPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IGRpcmVjdGlvbiA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICghaXNUaHJlc2hvbGRFeGNlZWRlZC52YWx1ZSlcbiAgICAgIHJldHVybiBleHBvcnRzLlN3aXBlRGlyZWN0aW9uLk5PTkU7XG4gICAgaWYgKGFicyhkaXN0YW5jZVgudmFsdWUpID4gYWJzKGRpc3RhbmNlWS52YWx1ZSkpIHtcbiAgICAgIHJldHVybiBkaXN0YW5jZVgudmFsdWUgPiAwID8gZXhwb3J0cy5Td2lwZURpcmVjdGlvbi5MRUZUIDogZXhwb3J0cy5Td2lwZURpcmVjdGlvbi5SSUdIVDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGRpc3RhbmNlWS52YWx1ZSA+IDAgPyBleHBvcnRzLlN3aXBlRGlyZWN0aW9uLlVQIDogZXhwb3J0cy5Td2lwZURpcmVjdGlvbi5ET1dOO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGZpbHRlckV2ZW50ID0gKGUpID0+IHtcbiAgICBpZiAob3B0aW9ucy5wb2ludGVyVHlwZXMpXG4gICAgICByZXR1cm4gb3B0aW9ucy5wb2ludGVyVHlwZXMuaW5jbHVkZXMoZS5wb2ludGVyVHlwZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIGNvbnN0IHN0b3BzID0gW1xuICAgIHVzZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCBcInBvaW50ZXJkb3duXCIsIChlKSA9PiB7XG4gICAgICB2YXIgX2EsIF9iO1xuICAgICAgaWYgKCFmaWx0ZXJFdmVudChlKSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaXNQb2ludGVyRG93bi52YWx1ZSA9IHRydWU7XG4gICAgICAoX2IgPSAoX2EgPSB0YXJnZXRSZWYudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5zdHlsZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLnNldFByb3BlcnR5KFwidG91Y2gtYWN0aW9uXCIsIFwibm9uZVwiKTtcbiAgICAgIGNvbnN0IGV2ZW50VGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgICBldmVudFRhcmdldCA9PSBudWxsID8gdm9pZCAwIDogZXZlbnRUYXJnZXQuc2V0UG9pbnRlckNhcHR1cmUoZS5wb2ludGVySWQpO1xuICAgICAgY29uc3QgeyBjbGllbnRYOiB4LCBjbGllbnRZOiB5IH0gPSBlO1xuICAgICAgdXBkYXRlUG9zU3RhcnQoeCwgeSk7XG4gICAgICB1cGRhdGVQb3NFbmQoeCwgeSk7XG4gICAgICBvblN3aXBlU3RhcnQgPT0gbnVsbCA/IHZvaWQgMCA6IG9uU3dpcGVTdGFydChlKTtcbiAgICB9KSxcbiAgICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJwb2ludGVybW92ZVwiLCAoZSkgPT4ge1xuICAgICAgaWYgKCFmaWx0ZXJFdmVudChlKSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKCFpc1BvaW50ZXJEb3duLnZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICBjb25zdCB7IGNsaWVudFg6IHgsIGNsaWVudFk6IHkgfSA9IGU7XG4gICAgICB1cGRhdGVQb3NFbmQoeCwgeSk7XG4gICAgICBpZiAoIWlzU3dpcGluZy52YWx1ZSAmJiBpc1RocmVzaG9sZEV4Y2VlZGVkLnZhbHVlKVxuICAgICAgICBpc1N3aXBpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgaWYgKGlzU3dpcGluZy52YWx1ZSlcbiAgICAgICAgb25Td2lwZSA9PSBudWxsID8gdm9pZCAwIDogb25Td2lwZShlKTtcbiAgICB9KSxcbiAgICB1c2VFdmVudExpc3RlbmVyKHRhcmdldCwgXCJwb2ludGVydXBcIiwgKGUpID0+IHtcbiAgICAgIHZhciBfYSwgX2I7XG4gICAgICBpZiAoIWZpbHRlckV2ZW50KGUpKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoaXNTd2lwaW5nLnZhbHVlKVxuICAgICAgICBvblN3aXBlRW5kID09IG51bGwgPyB2b2lkIDAgOiBvblN3aXBlRW5kKGUsIGRpcmVjdGlvbi52YWx1ZSk7XG4gICAgICBpc1BvaW50ZXJEb3duLnZhbHVlID0gZmFsc2U7XG4gICAgICBpc1N3aXBpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIChfYiA9IChfYSA9IHRhcmdldFJlZi52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnN0eWxlKSA9PSBudWxsID8gdm9pZCAwIDogX2Iuc2V0UHJvcGVydHkoXCJ0b3VjaC1hY3Rpb25cIiwgXCJpbml0aWFsXCIpO1xuICAgIH0pXG4gIF07XG4gIGNvbnN0IHN0b3AgPSAoKSA9PiBzdG9wcy5mb3JFYWNoKChzKSA9PiBzKCkpO1xuICByZXR1cm4ge1xuICAgIGlzU3dpcGluZzogdnVlRGVtaS5yZWFkb25seShpc1N3aXBpbmcpLFxuICAgIGRpcmVjdGlvbjogdnVlRGVtaS5yZWFkb25seShkaXJlY3Rpb24pLFxuICAgIHBvc1N0YXJ0OiB2dWVEZW1pLnJlYWRvbmx5KHBvc1N0YXJ0KSxcbiAgICBwb3NFbmQ6IHZ1ZURlbWkucmVhZG9ubHkocG9zRW5kKSxcbiAgICBkaXN0YW5jZVgsXG4gICAgZGlzdGFuY2VZLFxuICAgIHN0b3BcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlUHJlZmVycmVkQ29sb3JTY2hlbWUob3B0aW9ucykge1xuICBjb25zdCBpc0xpZ2h0ID0gdXNlTWVkaWFRdWVyeShcIihwcmVmZXJzLWNvbG9yLXNjaGVtZTogbGlnaHQpXCIsIG9wdGlvbnMpO1xuICBjb25zdCBpc0RhcmsgPSB1c2VNZWRpYVF1ZXJ5KFwiKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKVwiLCBvcHRpb25zKTtcbiAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChpc0RhcmsudmFsdWUpXG4gICAgICByZXR1cm4gXCJkYXJrXCI7XG4gICAgaWYgKGlzTGlnaHQudmFsdWUpXG4gICAgICByZXR1cm4gXCJsaWdodFwiO1xuICAgIHJldHVybiBcIm5vLXByZWZlcmVuY2VcIjtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVzZVByZWZlcnJlZExhbmd1YWdlcyhvcHRpb25zID0ge30pIHtcbiAgY29uc3QgeyB3aW5kb3cgPSBkZWZhdWx0V2luZG93IH0gPSBvcHRpb25zO1xuICBpZiAoIXdpbmRvdylcbiAgICByZXR1cm4gdnVlRGVtaS5yZWYoW1wiZW5cIl0pO1xuICBjb25zdCBuYXZpZ2F0b3IgPSB3aW5kb3cubmF2aWdhdG9yO1xuICBjb25zdCB2YWx1ZSA9IHZ1ZURlbWkucmVmKG5hdmlnYXRvci5sYW5ndWFnZXMpO1xuICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJsYW5ndWFnZWNoYW5nZVwiLCAoKSA9PiB7XG4gICAgdmFsdWUudmFsdWUgPSBuYXZpZ2F0b3IubGFuZ3VhZ2VzO1xuICB9KTtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5jb25zdCB1c2VTY3JlZW5PcmllbnRhdGlvbiA9IChvcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qge1xuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3dcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gISEod2luZG93ICYmIFwic2NyZWVuXCIgaW4gd2luZG93ICYmIFwib3JpZW50YXRpb25cIiBpbiB3aW5kb3cuc2NyZWVuKTtcbiAgY29uc3Qgc2NyZWVuT3JpZW50YXRpb24gPSBpc1N1cHBvcnRlZCA/IHdpbmRvdy5zY3JlZW4ub3JpZW50YXRpb24gOiB7fTtcbiAgY29uc3Qgb3JpZW50YXRpb24gPSB2dWVEZW1pLnJlZihzY3JlZW5PcmllbnRhdGlvbi50eXBlKTtcbiAgY29uc3QgYW5nbGUgPSB2dWVEZW1pLnJlZihzY3JlZW5PcmllbnRhdGlvbi5hbmdsZSB8fCAwKTtcbiAgaWYgKGlzU3VwcG9ydGVkKSB7XG4gICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwib3JpZW50YXRpb25jaGFuZ2VcIiwgKCkgPT4ge1xuICAgICAgb3JpZW50YXRpb24udmFsdWUgPSBzY3JlZW5PcmllbnRhdGlvbi50eXBlO1xuICAgICAgYW5nbGUudmFsdWUgPSBzY3JlZW5PcmllbnRhdGlvbi5hbmdsZTtcbiAgICB9KTtcbiAgfVxuICBjb25zdCBsb2NrT3JpZW50YXRpb24gPSAodHlwZSkgPT4ge1xuICAgIGlmICghaXNTdXBwb3J0ZWQpXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiTm90IHN1cHBvcnRlZFwiKSk7XG4gICAgcmV0dXJuIHNjcmVlbk9yaWVudGF0aW9uLmxvY2sodHlwZSk7XG4gIH07XG4gIGNvbnN0IHVubG9ja09yaWVudGF0aW9uID0gKCkgPT4ge1xuICAgIGlmIChpc1N1cHBvcnRlZClcbiAgICAgIHNjcmVlbk9yaWVudGF0aW9uLnVubG9jaygpO1xuICB9O1xuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIG9yaWVudGF0aW9uLFxuICAgIGFuZ2xlLFxuICAgIGxvY2tPcmllbnRhdGlvbixcbiAgICB1bmxvY2tPcmllbnRhdGlvblxuICB9O1xufTtcblxuY29uc3QgdG9wVmFyTmFtZSA9IFwiLS12dWV1c2Utc2FmZS1hcmVhLXRvcFwiO1xuY29uc3QgcmlnaHRWYXJOYW1lID0gXCItLXZ1ZXVzZS1zYWZlLWFyZWEtcmlnaHRcIjtcbmNvbnN0IGJvdHRvbVZhck5hbWUgPSBcIi0tdnVldXNlLXNhZmUtYXJlYS1ib3R0b21cIjtcbmNvbnN0IGxlZnRWYXJOYW1lID0gXCItLXZ1ZXVzZS1zYWZlLWFyZWEtbGVmdFwiO1xuZnVuY3Rpb24gdXNlU2NyZWVuU2FmZUFyZWEoKSB7XG4gIGNvbnN0IHRvcCA9IHZ1ZURlbWkucmVmKFwiXCIpO1xuICBjb25zdCByaWdodCA9IHZ1ZURlbWkucmVmKFwiXCIpO1xuICBjb25zdCBib3R0b20gPSB2dWVEZW1pLnJlZihcIlwiKTtcbiAgY29uc3QgbGVmdCA9IHZ1ZURlbWkucmVmKFwiXCIpO1xuICBpZiAoc2hhcmVkLmlzQ2xpZW50KSB7XG4gICAgY29uc3QgdG9wQ3NzVmFyID0gdXNlQ3NzVmFyKHRvcFZhck5hbWUpO1xuICAgIGNvbnN0IHJpZ2h0Q3NzVmFyID0gdXNlQ3NzVmFyKHJpZ2h0VmFyTmFtZSk7XG4gICAgY29uc3QgYm90dG9tQ3NzVmFyID0gdXNlQ3NzVmFyKGJvdHRvbVZhck5hbWUpO1xuICAgIGNvbnN0IGxlZnRDc3NWYXIgPSB1c2VDc3NWYXIobGVmdFZhck5hbWUpO1xuICAgIHRvcENzc1Zhci52YWx1ZSA9IFwiZW52KHNhZmUtYXJlYS1pbnNldC10b3AsIDBweClcIjtcbiAgICByaWdodENzc1Zhci52YWx1ZSA9IFwiZW52KHNhZmUtYXJlYS1pbnNldC1yaWdodCwgMHB4KVwiO1xuICAgIGJvdHRvbUNzc1Zhci52YWx1ZSA9IFwiZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20sIDBweClcIjtcbiAgICBsZWZ0Q3NzVmFyLnZhbHVlID0gXCJlbnYoc2FmZS1hcmVhLWluc2V0LWxlZnQsIDBweClcIjtcbiAgICB1cGRhdGUoKTtcbiAgICB1c2VFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHNoYXJlZC51c2VEZWJvdW5jZUZuKHVwZGF0ZSkpO1xuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICB0b3AudmFsdWUgPSBnZXRWYWx1ZSh0b3BWYXJOYW1lKTtcbiAgICByaWdodC52YWx1ZSA9IGdldFZhbHVlKHJpZ2h0VmFyTmFtZSk7XG4gICAgYm90dG9tLnZhbHVlID0gZ2V0VmFsdWUoYm90dG9tVmFyTmFtZSk7XG4gICAgbGVmdC52YWx1ZSA9IGdldFZhbHVlKGxlZnRWYXJOYW1lKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHRvcCxcbiAgICByaWdodCxcbiAgICBib3R0b20sXG4gICAgbGVmdCxcbiAgICB1cGRhdGVcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFZhbHVlKHBvc2l0aW9uKSB7XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZShwb3NpdGlvbik7XG59XG5cbmZ1bmN0aW9uIHVzZVNjcmlwdFRhZyhzcmMsIG9uTG9hZGVkID0gc2hhcmVkLm5vb3AsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgaW1tZWRpYXRlID0gdHJ1ZSxcbiAgICBtYW51YWwgPSBmYWxzZSxcbiAgICB0eXBlID0gXCJ0ZXh0L2phdmFzY3JpcHRcIixcbiAgICBhc3luYyA9IHRydWUsXG4gICAgY3Jvc3NPcmlnaW4sXG4gICAgcmVmZXJyZXJQb2xpY3ksXG4gICAgbm9Nb2R1bGUsXG4gICAgZGVmZXIsXG4gICAgZG9jdW1lbnQgPSBkZWZhdWx0RG9jdW1lbnQsXG4gICAgYXR0cnMgPSB7fVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3Qgc2NyaXB0VGFnID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGxldCBfcHJvbWlzZSA9IG51bGw7XG4gIGNvbnN0IGxvYWRTY3JpcHQgPSAod2FpdEZvclNjcmlwdExvYWQpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXNvbHZlV2l0aEVsZW1lbnQgPSAoZWwyKSA9PiB7XG4gICAgICBzY3JpcHRUYWcudmFsdWUgPSBlbDI7XG4gICAgICByZXNvbHZlKGVsMik7XG4gICAgICByZXR1cm4gZWwyO1xuICAgIH07XG4gICAgaWYgKCFkb2N1bWVudCkge1xuICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBzaG91bGRBcHBlbmQgPSBmYWxzZTtcbiAgICBsZXQgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBzY3JpcHRbc3JjPVwiJHtzcmN9XCJdYCk7XG4gICAgaWYgKCFlbCkge1xuICAgICAgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgICAgZWwudHlwZSA9IHR5cGU7XG4gICAgICBlbC5hc3luYyA9IGFzeW5jO1xuICAgICAgZWwuc3JjID0gdnVlRGVtaS51bnJlZihzcmMpO1xuICAgICAgaWYgKGRlZmVyKVxuICAgICAgICBlbC5kZWZlciA9IGRlZmVyO1xuICAgICAgaWYgKGNyb3NzT3JpZ2luKVxuICAgICAgICBlbC5jcm9zc09yaWdpbiA9IGNyb3NzT3JpZ2luO1xuICAgICAgaWYgKG5vTW9kdWxlKVxuICAgICAgICBlbC5ub01vZHVsZSA9IG5vTW9kdWxlO1xuICAgICAgaWYgKHJlZmVycmVyUG9saWN5KVxuICAgICAgICBlbC5yZWZlcnJlclBvbGljeSA9IHJlZmVycmVyUG9saWN5O1xuICAgICAgT2JqZWN0LmVudHJpZXMoYXR0cnMpLmZvckVhY2goKFtuYW1lLCB2YWx1ZV0pID0+IGVsID09IG51bGwgPyB2b2lkIDAgOiBlbC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpKTtcbiAgICAgIHNob3VsZEFwcGVuZCA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChlbC5oYXNBdHRyaWJ1dGUoXCJkYXRhLWxvYWRlZFwiKSkge1xuICAgICAgcmVzb2x2ZVdpdGhFbGVtZW50KGVsKTtcbiAgICB9XG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsIChldmVudCkgPT4gcmVqZWN0KGV2ZW50KSk7XG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIChldmVudCkgPT4gcmVqZWN0KGV2ZW50KSk7XG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIiwgKCkgPT4ge1xuICAgICAgZWwuc2V0QXR0cmlidXRlKFwiZGF0YS1sb2FkZWRcIiwgXCJ0cnVlXCIpO1xuICAgICAgb25Mb2FkZWQoZWwpO1xuICAgICAgcmVzb2x2ZVdpdGhFbGVtZW50KGVsKTtcbiAgICB9KTtcbiAgICBpZiAoc2hvdWxkQXBwZW5kKVxuICAgICAgZWwgPSBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGVsKTtcbiAgICBpZiAoIXdhaXRGb3JTY3JpcHRMb2FkKVxuICAgICAgcmVzb2x2ZVdpdGhFbGVtZW50KGVsKTtcbiAgfSk7XG4gIGNvbnN0IGxvYWQgPSAod2FpdEZvclNjcmlwdExvYWQgPSB0cnVlKSA9PiB7XG4gICAgaWYgKCFfcHJvbWlzZSlcbiAgICAgIF9wcm9taXNlID0gbG9hZFNjcmlwdCh3YWl0Rm9yU2NyaXB0TG9hZCk7XG4gICAgcmV0dXJuIF9wcm9taXNlO1xuICB9O1xuICBjb25zdCB1bmxvYWQgPSAoKSA9PiB7XG4gICAgaWYgKCFkb2N1bWVudClcbiAgICAgIHJldHVybjtcbiAgICBfcHJvbWlzZSA9IG51bGw7XG4gICAgaWYgKHNjcmlwdFRhZy52YWx1ZSlcbiAgICAgIHNjcmlwdFRhZy52YWx1ZSA9IG51bGw7XG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBzY3JpcHRbc3JjPVwiJHtzcmN9XCJdYCk7XG4gICAgaWYgKGVsKVxuICAgICAgZG9jdW1lbnQuaGVhZC5yZW1vdmVDaGlsZChlbCk7XG4gIH07XG4gIGlmIChpbW1lZGlhdGUgJiYgIW1hbnVhbClcbiAgICBzaGFyZWQudHJ5T25Nb3VudGVkKGxvYWQpO1xuICBpZiAoIW1hbnVhbClcbiAgICBzaGFyZWQudHJ5T25Vbm1vdW50ZWQodW5sb2FkKTtcbiAgcmV0dXJuIHsgc2NyaXB0VGFnLCBsb2FkLCB1bmxvYWQgfTtcbn1cblxuZnVuY3Rpb24gcHJldmVudERlZmF1bHQocmF3RXZlbnQpIHtcbiAgY29uc3QgZSA9IHJhd0V2ZW50IHx8IHdpbmRvdy5ldmVudDtcbiAgaWYgKGUudG91Y2hlcy5sZW5ndGggPiAxKVxuICAgIHJldHVybiB0cnVlO1xuICBpZiAoZS5wcmV2ZW50RGVmYXVsdClcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIHVzZVNjcm9sbExvY2soZWxlbWVudCwgaW5pdGlhbFN0YXRlID0gZmFsc2UpIHtcbiAgY29uc3QgaXNMb2NrZWQgPSB2dWVEZW1pLnJlZihpbml0aWFsU3RhdGUpO1xuICBsZXQgc3RvcFRvdWNoTW92ZUxpc3RlbmVyID0gbnVsbDtcbiAgbGV0IGluaXRpYWxPdmVyZmxvdztcbiAgdnVlRGVtaS53YXRjaCgoKSA9PiB2dWVEZW1pLnVucmVmKGVsZW1lbnQpLCAoZWwpID0+IHtcbiAgICBpZiAoZWwpIHtcbiAgICAgIGNvbnN0IGVsZSA9IGVsO1xuICAgICAgaW5pdGlhbE92ZXJmbG93ID0gZWxlLnN0eWxlLm92ZXJmbG93O1xuICAgICAgaWYgKGlzTG9ja2VkLnZhbHVlKVxuICAgICAgICBlbGUuc3R5bGUub3ZlcmZsb3cgPSBcImhpZGRlblwiO1xuICAgIH1cbiAgfSwge1xuICAgIGltbWVkaWF0ZTogdHJ1ZVxuICB9KTtcbiAgY29uc3QgbG9jayA9ICgpID0+IHtcbiAgICBjb25zdCBlbGUgPSB2dWVEZW1pLnVucmVmKGVsZW1lbnQpO1xuICAgIGlmICghZWxlIHx8IGlzTG9ja2VkLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIGlmIChzaGFyZWQuaXNJT1MpIHtcbiAgICAgIHN0b3BUb3VjaE1vdmVMaXN0ZW5lciA9IHVzZUV2ZW50TGlzdGVuZXIoZWxlLCBcInRvdWNobW92ZVwiLCBwcmV2ZW50RGVmYXVsdCwgeyBwYXNzaXZlOiBmYWxzZSB9KTtcbiAgICB9XG4gICAgZWxlLnN0eWxlLm92ZXJmbG93ID0gXCJoaWRkZW5cIjtcbiAgICBpc0xvY2tlZC52YWx1ZSA9IHRydWU7XG4gIH07XG4gIGNvbnN0IHVubG9jayA9ICgpID0+IHtcbiAgICBjb25zdCBlbGUgPSB2dWVEZW1pLnVucmVmKGVsZW1lbnQpO1xuICAgIGlmICghZWxlIHx8ICFpc0xvY2tlZC52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICBzaGFyZWQuaXNJT1MgJiYgKHN0b3BUb3VjaE1vdmVMaXN0ZW5lciA9PSBudWxsID8gdm9pZCAwIDogc3RvcFRvdWNoTW92ZUxpc3RlbmVyKCkpO1xuICAgIGVsZS5zdHlsZS5vdmVyZmxvdyA9IGluaXRpYWxPdmVyZmxvdztcbiAgICBpc0xvY2tlZC52YWx1ZSA9IGZhbHNlO1xuICB9O1xuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UodW5sb2NrKTtcbiAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoe1xuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiBpc0xvY2tlZC52YWx1ZTtcbiAgICB9LFxuICAgIHNldCh2KSB7XG4gICAgICBpZiAodilcbiAgICAgICAgbG9jaygpO1xuICAgICAgZWxzZVxuICAgICAgICB1bmxvY2soKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB1c2VTZXNzaW9uU3RvcmFnZShrZXksIGluaXRpYWxWYWx1ZSwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgd2luZG93ID0gZGVmYXVsdFdpbmRvdyB9ID0gb3B0aW9ucztcbiAgcmV0dXJuIHVzZVN0b3JhZ2Uoa2V5LCBpbml0aWFsVmFsdWUsIHdpbmRvdyA9PSBudWxsID8gdm9pZCAwIDogd2luZG93LnNlc3Npb25TdG9yYWdlLCBvcHRpb25zKTtcbn1cblxudmFyIF9fZGVmUHJvcCQzID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkMyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJDMgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSQzID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkMyA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkMyhvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkMyA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJDMuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCQzKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyQzKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyQzKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJDMuY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJDMoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG5mdW5jdGlvbiB1c2VTaGFyZShzaGFyZU9wdGlvbnMgPSB7fSwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgbmF2aWdhdG9yID0gZGVmYXVsdE5hdmlnYXRvciB9ID0gb3B0aW9ucztcbiAgY29uc3QgX25hdmlnYXRvciA9IG5hdmlnYXRvcjtcbiAgY29uc3QgaXNTdXBwb3J0ZWQgPSBfbmF2aWdhdG9yICYmIFwiY2FuU2hhcmVcIiBpbiBfbmF2aWdhdG9yO1xuICBjb25zdCBzaGFyZSA9IGFzeW5jIChvdmVycmlkZU9wdGlvbnMgPSB7fSkgPT4ge1xuICAgIGlmIChpc1N1cHBvcnRlZCkge1xuICAgICAgY29uc3QgZGF0YSA9IF9fc3ByZWFkVmFsdWVzJDMoX19zcHJlYWRWYWx1ZXMkMyh7fSwgdnVlRGVtaS51bnJlZihzaGFyZU9wdGlvbnMpKSwgdnVlRGVtaS51bnJlZihvdmVycmlkZU9wdGlvbnMpKTtcbiAgICAgIGxldCBncmFudGVkID0gdHJ1ZTtcbiAgICAgIGlmIChkYXRhLmZpbGVzICYmIF9uYXZpZ2F0b3IuY2FuU2hhcmUpXG4gICAgICAgIGdyYW50ZWQgPSBfbmF2aWdhdG9yLmNhblNoYXJlKHsgZmlsZXM6IGRhdGEuZmlsZXMgfSk7XG4gICAgICBpZiAoZ3JhbnRlZClcbiAgICAgICAgcmV0dXJuIF9uYXZpZ2F0b3Iuc2hhcmUoZGF0YSk7XG4gICAgfVxuICB9O1xuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIHNoYXJlXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZVNwZWVjaFJlY29nbml0aW9uKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgaW50ZXJpbVJlc3VsdHMgPSB0cnVlLFxuICAgIGNvbnRpbnVvdXMgPSB0cnVlLFxuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3dcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGxhbmcgPSB2dWVEZW1pLnJlZihvcHRpb25zLmxhbmcgfHwgXCJlbi1VU1wiKTtcbiAgY29uc3QgaXNMaXN0ZW5pbmcgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IGlzRmluYWwgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IHJlc3VsdCA9IHZ1ZURlbWkucmVmKFwiXCIpO1xuICBjb25zdCBlcnJvciA9IHZ1ZURlbWkuc2hhbGxvd1JlZih2b2lkIDApO1xuICBjb25zdCB0b2dnbGUgPSAodmFsdWUgPSAhaXNMaXN0ZW5pbmcudmFsdWUpID0+IHtcbiAgICBpc0xpc3RlbmluZy52YWx1ZSA9IHZhbHVlO1xuICB9O1xuICBjb25zdCBzdGFydCA9ICgpID0+IHtcbiAgICBpc0xpc3RlbmluZy52YWx1ZSA9IHRydWU7XG4gIH07XG4gIGNvbnN0IHN0b3AgPSAoKSA9PiB7XG4gICAgaXNMaXN0ZW5pbmcudmFsdWUgPSBmYWxzZTtcbiAgfTtcbiAgY29uc3QgU3BlZWNoUmVjb2duaXRpb24gPSB3aW5kb3cgJiYgKHdpbmRvdy5TcGVlY2hSZWNvZ25pdGlvbiB8fCB3aW5kb3cud2Via2l0U3BlZWNoUmVjb2duaXRpb24pO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IEJvb2xlYW4oU3BlZWNoUmVjb2duaXRpb24pO1xuICBsZXQgcmVjb2duaXRpb247XG4gIGlmIChpc1N1cHBvcnRlZCkge1xuICAgIHJlY29nbml0aW9uID0gbmV3IFNwZWVjaFJlY29nbml0aW9uKCk7XG4gICAgcmVjb2duaXRpb24uY29udGludW91cyA9IGNvbnRpbnVvdXM7XG4gICAgcmVjb2duaXRpb24uaW50ZXJpbVJlc3VsdHMgPSBpbnRlcmltUmVzdWx0cztcbiAgICByZWNvZ25pdGlvbi5sYW5nID0gdnVlRGVtaS51bnJlZihsYW5nKTtcbiAgICByZWNvZ25pdGlvbi5vbnN0YXJ0ID0gKCkgPT4ge1xuICAgICAgaXNGaW5hbC52YWx1ZSA9IGZhbHNlO1xuICAgIH07XG4gICAgdnVlRGVtaS53YXRjaChsYW5nLCAobGFuZzIpID0+IHtcbiAgICAgIGlmIChyZWNvZ25pdGlvbiAmJiAhaXNMaXN0ZW5pbmcudmFsdWUpXG4gICAgICAgIHJlY29nbml0aW9uLmxhbmcgPSBsYW5nMjtcbiAgICB9KTtcbiAgICByZWNvZ25pdGlvbi5vbnJlc3VsdCA9IChldmVudCkgPT4ge1xuICAgICAgY29uc3QgdHJhbnNjcmlwdCA9IEFycmF5LmZyb20oZXZlbnQucmVzdWx0cykubWFwKChyZXN1bHQyKSA9PiB7XG4gICAgICAgIGlzRmluYWwudmFsdWUgPSByZXN1bHQyLmlzRmluYWw7XG4gICAgICAgIHJldHVybiByZXN1bHQyWzBdO1xuICAgICAgfSkubWFwKChyZXN1bHQyKSA9PiByZXN1bHQyLnRyYW5zY3JpcHQpLmpvaW4oXCJcIik7XG4gICAgICByZXN1bHQudmFsdWUgPSB0cmFuc2NyaXB0O1xuICAgICAgZXJyb3IudmFsdWUgPSB2b2lkIDA7XG4gICAgfTtcbiAgICByZWNvZ25pdGlvbi5vbmVycm9yID0gKGV2ZW50KSA9PiB7XG4gICAgICBlcnJvci52YWx1ZSA9IGV2ZW50O1xuICAgIH07XG4gICAgcmVjb2duaXRpb24ub25lbmQgPSAoKSA9PiB7XG4gICAgICBpc0xpc3RlbmluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgcmVjb2duaXRpb24ubGFuZyA9IHZ1ZURlbWkudW5yZWYobGFuZyk7XG4gICAgfTtcbiAgICB2dWVEZW1pLndhdGNoKGlzTGlzdGVuaW5nLCAoKSA9PiB7XG4gICAgICBpZiAoaXNMaXN0ZW5pbmcudmFsdWUpXG4gICAgICAgIHJlY29nbml0aW9uLnN0YXJ0KCk7XG4gICAgICBlbHNlXG4gICAgICAgIHJlY29nbml0aW9uLnN0b3AoKTtcbiAgICB9KTtcbiAgfVxuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UoKCkgPT4ge1xuICAgIGlzTGlzdGVuaW5nLnZhbHVlID0gZmFsc2U7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGlzU3VwcG9ydGVkLFxuICAgIGlzTGlzdGVuaW5nLFxuICAgIGlzRmluYWwsXG4gICAgcmVjb2duaXRpb24sXG4gICAgcmVzdWx0LFxuICAgIGVycm9yLFxuICAgIHRvZ2dsZSxcbiAgICBzdGFydCxcbiAgICBzdG9wXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZVNwZWVjaFN5bnRoZXNpcyh0ZXh0LCBvcHRpb25zID0ge30pIHtcbiAgdmFyIF9hLCBfYjtcbiAgY29uc3Qge1xuICAgIHBpdGNoID0gMSxcbiAgICByYXRlID0gMSxcbiAgICB2b2x1bWUgPSAxLFxuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3dcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHN5bnRoID0gd2luZG93ICYmIHdpbmRvdy5zcGVlY2hTeW50aGVzaXM7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gQm9vbGVhbihzeW50aCk7XG4gIGNvbnN0IGlzUGxheWluZyA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgY29uc3Qgc3RhdHVzID0gdnVlRGVtaS5yZWYoXCJpbml0XCIpO1xuICBjb25zdCB2b2ljZUluZm8gPSB7XG4gICAgbGFuZzogKChfYSA9IG9wdGlvbnMudm9pY2UpID09IG51bGwgPyB2b2lkIDAgOiBfYS5sYW5nKSB8fCBcImRlZmF1bHRcIixcbiAgICBuYW1lOiAoKF9iID0gb3B0aW9ucy52b2ljZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLm5hbWUpIHx8IFwiXCJcbiAgfTtcbiAgY29uc3Qgc3Bva2VuVGV4dCA9IHZ1ZURlbWkucmVmKHRleHQgfHwgXCJcIik7XG4gIGNvbnN0IGxhbmcgPSB2dWVEZW1pLnJlZihvcHRpb25zLmxhbmcgfHwgXCJlbi1VU1wiKTtcbiAgY29uc3QgZXJyb3IgPSB2dWVEZW1pLnNoYWxsb3dSZWYodm9pZCAwKTtcbiAgY29uc3QgdG9nZ2xlID0gKHZhbHVlID0gIWlzUGxheWluZy52YWx1ZSkgPT4ge1xuICAgIGlzUGxheWluZy52YWx1ZSA9IHZhbHVlO1xuICB9O1xuICBjb25zdCBiaW5kRXZlbnRzRm9yVXR0ZXJhbmNlID0gKHV0dGVyYW5jZTIpID0+IHtcbiAgICB1dHRlcmFuY2UyLmxhbmcgPSB2dWVEZW1pLnVucmVmKGxhbmcpO1xuICAgIG9wdGlvbnMudm9pY2UgJiYgKHV0dGVyYW5jZTIudm9pY2UgPSBvcHRpb25zLnZvaWNlKTtcbiAgICB1dHRlcmFuY2UyLnBpdGNoID0gcGl0Y2g7XG4gICAgdXR0ZXJhbmNlMi5yYXRlID0gcmF0ZTtcbiAgICB1dHRlcmFuY2UyLnZvbHVtZSA9IHZvbHVtZTtcbiAgICB1dHRlcmFuY2UyLm9uc3RhcnQgPSAoKSA9PiB7XG4gICAgICBpc1BsYXlpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgc3RhdHVzLnZhbHVlID0gXCJwbGF5XCI7XG4gICAgfTtcbiAgICB1dHRlcmFuY2UyLm9ucGF1c2UgPSAoKSA9PiB7XG4gICAgICBpc1BsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHN0YXR1cy52YWx1ZSA9IFwicGF1c2VcIjtcbiAgICB9O1xuICAgIHV0dGVyYW5jZTIub25yZXN1bWUgPSAoKSA9PiB7XG4gICAgICBpc1BsYXlpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgc3RhdHVzLnZhbHVlID0gXCJwbGF5XCI7XG4gICAgfTtcbiAgICB1dHRlcmFuY2UyLm9uZW5kID0gKCkgPT4ge1xuICAgICAgaXNQbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICBzdGF0dXMudmFsdWUgPSBcImVuZFwiO1xuICAgIH07XG4gICAgdXR0ZXJhbmNlMi5vbmVycm9yID0gKGV2ZW50KSA9PiB7XG4gICAgICBlcnJvci52YWx1ZSA9IGV2ZW50O1xuICAgIH07XG4gICAgdXR0ZXJhbmNlMi5vbmVuZCA9ICgpID0+IHtcbiAgICAgIGlzUGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdXR0ZXJhbmNlMi5sYW5nID0gdnVlRGVtaS51bnJlZihsYW5nKTtcbiAgICB9O1xuICB9O1xuICBjb25zdCB1dHRlcmFuY2UgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICBpc1BsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICBzdGF0dXMudmFsdWUgPSBcImluaXRcIjtcbiAgICBjb25zdCBuZXdVdHRlcmFuY2UgPSBuZXcgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKHNwb2tlblRleHQudmFsdWUpO1xuICAgIGJpbmRFdmVudHNGb3JVdHRlcmFuY2UobmV3VXR0ZXJhbmNlKTtcbiAgICByZXR1cm4gbmV3VXR0ZXJhbmNlO1xuICB9KTtcbiAgY29uc3Qgc3BlYWsgPSAoKSA9PiB7XG4gICAgc3ludGguY2FuY2VsKCk7XG4gICAgdXR0ZXJhbmNlICYmIHN5bnRoLnNwZWFrKHV0dGVyYW5jZS52YWx1ZSk7XG4gIH07XG4gIGlmIChpc1N1cHBvcnRlZCkge1xuICAgIGJpbmRFdmVudHNGb3JVdHRlcmFuY2UodXR0ZXJhbmNlLnZhbHVlKTtcbiAgICB2dWVEZW1pLndhdGNoKGxhbmcsIChsYW5nMikgPT4ge1xuICAgICAgaWYgKHV0dGVyYW5jZS52YWx1ZSAmJiAhaXNQbGF5aW5nLnZhbHVlKVxuICAgICAgICB1dHRlcmFuY2UudmFsdWUubGFuZyA9IGxhbmcyO1xuICAgIH0pO1xuICAgIHZ1ZURlbWkud2F0Y2goaXNQbGF5aW5nLCAoKSA9PiB7XG4gICAgICBpZiAoaXNQbGF5aW5nLnZhbHVlKVxuICAgICAgICBzeW50aC5yZXN1bWUoKTtcbiAgICAgIGVsc2VcbiAgICAgICAgc3ludGgucGF1c2UoKTtcbiAgICB9KTtcbiAgfVxuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UoKCkgPT4ge1xuICAgIGlzUGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBpc1BsYXlpbmcsXG4gICAgc3RhdHVzLFxuICAgIHZvaWNlSW5mbyxcbiAgICB1dHRlcmFuY2UsXG4gICAgZXJyb3IsXG4gICAgdG9nZ2xlLFxuICAgIHNwZWFrXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZVN0ZXBwZXIoc3RlcHMsIGluaXRpYWxTdGVwKSB7XG4gIGNvbnN0IHN0ZXBzUmVmID0gdnVlRGVtaS5yZWYoc3RlcHMpO1xuICBjb25zdCBzdGVwTmFtZXMgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IEFycmF5LmlzQXJyYXkoc3RlcHNSZWYudmFsdWUpID8gc3RlcHNSZWYudmFsdWUgOiBPYmplY3Qua2V5cyhzdGVwc1JlZi52YWx1ZSkpO1xuICBjb25zdCBpbmRleCA9IHZ1ZURlbWkucmVmKHN0ZXBOYW1lcy52YWx1ZS5pbmRleE9mKGluaXRpYWxTdGVwICE9IG51bGwgPyBpbml0aWFsU3RlcCA6IHN0ZXBOYW1lcy52YWx1ZVswXSkpO1xuICBjb25zdCBjdXJyZW50ID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBhdChpbmRleC52YWx1ZSkpO1xuICBjb25zdCBpc0ZpcnN0ID0gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBpbmRleC52YWx1ZSA9PT0gMCk7XG4gIGNvbnN0IGlzTGFzdCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gaW5kZXgudmFsdWUgPT09IHN0ZXBOYW1lcy52YWx1ZS5sZW5ndGggLSAxKTtcbiAgY29uc3QgbmV4dCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gc3RlcE5hbWVzLnZhbHVlW2luZGV4LnZhbHVlICsgMV0pO1xuICBjb25zdCBwcmV2aW91cyA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gc3RlcE5hbWVzLnZhbHVlW2luZGV4LnZhbHVlIC0gMV0pO1xuICBmdW5jdGlvbiBhdChpbmRleDIpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzdGVwc1JlZi52YWx1ZSkpXG4gICAgICByZXR1cm4gc3RlcHNSZWYudmFsdWVbaW5kZXgyXTtcbiAgICByZXR1cm4gc3RlcHNSZWYudmFsdWVbc3RlcE5hbWVzLnZhbHVlW2luZGV4Ml1dO1xuICB9XG4gIGZ1bmN0aW9uIGdldChzdGVwKSB7XG4gICAgaWYgKCFzdGVwTmFtZXMudmFsdWUuaW5jbHVkZXMoc3RlcCkpXG4gICAgICByZXR1cm47XG4gICAgcmV0dXJuIGF0KHN0ZXBOYW1lcy52YWx1ZS5pbmRleE9mKHN0ZXApKTtcbiAgfVxuICBmdW5jdGlvbiBnb1RvKHN0ZXApIHtcbiAgICBpZiAoc3RlcE5hbWVzLnZhbHVlLmluY2x1ZGVzKHN0ZXApKVxuICAgICAgaW5kZXgudmFsdWUgPSBzdGVwTmFtZXMudmFsdWUuaW5kZXhPZihzdGVwKTtcbiAgfVxuICBmdW5jdGlvbiBnb1RvTmV4dCgpIHtcbiAgICBpZiAoaXNMYXN0LnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIGluZGV4LnZhbHVlKys7XG4gIH1cbiAgZnVuY3Rpb24gZ29Ub1ByZXZpb3VzKCkge1xuICAgIGlmIChpc0ZpcnN0LnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIGluZGV4LnZhbHVlLS07XG4gIH1cbiAgZnVuY3Rpb24gZ29CYWNrVG8oc3RlcCkge1xuICAgIGlmIChpc0FmdGVyKHN0ZXApKVxuICAgICAgZ29UbyhzdGVwKTtcbiAgfVxuICBmdW5jdGlvbiBpc05leHQoc3RlcCkge1xuICAgIHJldHVybiBzdGVwTmFtZXMudmFsdWUuaW5kZXhPZihzdGVwKSA9PT0gaW5kZXgudmFsdWUgKyAxO1xuICB9XG4gIGZ1bmN0aW9uIGlzUHJldmlvdXMoc3RlcCkge1xuICAgIHJldHVybiBzdGVwTmFtZXMudmFsdWUuaW5kZXhPZihzdGVwKSA9PT0gaW5kZXgudmFsdWUgLSAxO1xuICB9XG4gIGZ1bmN0aW9uIGlzQ3VycmVudChzdGVwKSB7XG4gICAgcmV0dXJuIHN0ZXBOYW1lcy52YWx1ZS5pbmRleE9mKHN0ZXApID09PSBpbmRleC52YWx1ZTtcbiAgfVxuICBmdW5jdGlvbiBpc0JlZm9yZShzdGVwKSB7XG4gICAgcmV0dXJuIGluZGV4LnZhbHVlIDwgc3RlcE5hbWVzLnZhbHVlLmluZGV4T2Yoc3RlcCk7XG4gIH1cbiAgZnVuY3Rpb24gaXNBZnRlcihzdGVwKSB7XG4gICAgcmV0dXJuIGluZGV4LnZhbHVlID4gc3RlcE5hbWVzLnZhbHVlLmluZGV4T2Yoc3RlcCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzdGVwczogc3RlcHNSZWYsXG4gICAgc3RlcE5hbWVzLFxuICAgIGluZGV4LFxuICAgIGN1cnJlbnQsXG4gICAgbmV4dCxcbiAgICBwcmV2aW91cyxcbiAgICBpc0ZpcnN0LFxuICAgIGlzTGFzdCxcbiAgICBhdCxcbiAgICBnZXQsXG4gICAgZ29UbyxcbiAgICBnb1RvTmV4dCxcbiAgICBnb1RvUHJldmlvdXMsXG4gICAgZ29CYWNrVG8sXG4gICAgaXNOZXh0LFxuICAgIGlzUHJldmlvdXMsXG4gICAgaXNDdXJyZW50LFxuICAgIGlzQmVmb3JlLFxuICAgIGlzQWZ0ZXJcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlU3RvcmFnZUFzeW5jKGtleSwgaW5pdGlhbFZhbHVlLCBzdG9yYWdlLCBvcHRpb25zID0ge30pIHtcbiAgdmFyIF9hO1xuICBjb25zdCB7XG4gICAgZmx1c2ggPSBcInByZVwiLFxuICAgIGRlZXAgPSB0cnVlLFxuICAgIGxpc3RlblRvU3RvcmFnZUNoYW5nZXMgPSB0cnVlLFxuICAgIHdyaXRlRGVmYXVsdHMgPSB0cnVlLFxuICAgIHNoYWxsb3csXG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvdyxcbiAgICBldmVudEZpbHRlcixcbiAgICBvbkVycm9yID0gKGUpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcmF3SW5pdCA9IHZ1ZURlbWkudW5yZWYoaW5pdGlhbFZhbHVlKTtcbiAgY29uc3QgdHlwZSA9IGd1ZXNzU2VyaWFsaXplclR5cGUocmF3SW5pdCk7XG4gIGNvbnN0IGRhdGEgPSAoc2hhbGxvdyA/IHZ1ZURlbWkuc2hhbGxvd1JlZiA6IHZ1ZURlbWkucmVmKShpbml0aWFsVmFsdWUpO1xuICBjb25zdCBzZXJpYWxpemVyID0gKF9hID0gb3B0aW9ucy5zZXJpYWxpemVyKSAhPSBudWxsID8gX2EgOiBTdG9yYWdlU2VyaWFsaXplcnNbdHlwZV07XG4gIGlmICghc3RvcmFnZSkge1xuICAgIHRyeSB7XG4gICAgICBzdG9yYWdlID0gZ2V0U1NSSGFuZGxlcihcImdldERlZmF1bHRTdG9yYWdlXCIsICgpID0+IHtcbiAgICAgICAgdmFyIF9hMjtcbiAgICAgICAgcmV0dXJuIChfYTIgPSBkZWZhdWx0V2luZG93KSA9PSBudWxsID8gdm9pZCAwIDogX2EyLmxvY2FsU3RvcmFnZTtcbiAgICAgIH0pKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgb25FcnJvcihlKTtcbiAgICB9XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gcmVhZChldmVudCkge1xuICAgIGlmICghc3RvcmFnZSB8fCBldmVudCAmJiBldmVudC5rZXkgIT09IGtleSlcbiAgICAgIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmF3VmFsdWUgPSBldmVudCA/IGV2ZW50Lm5ld1ZhbHVlIDogYXdhaXQgc3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gICAgICBpZiAocmF3VmFsdWUgPT0gbnVsbCkge1xuICAgICAgICBkYXRhLnZhbHVlID0gcmF3SW5pdDtcbiAgICAgICAgaWYgKHdyaXRlRGVmYXVsdHMgJiYgcmF3SW5pdCAhPT0gbnVsbClcbiAgICAgICAgICBhd2FpdCBzdG9yYWdlLnNldEl0ZW0oa2V5LCBhd2FpdCBzZXJpYWxpemVyLndyaXRlKHJhd0luaXQpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGEudmFsdWUgPSBhd2FpdCBzZXJpYWxpemVyLnJlYWQocmF3VmFsdWUpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIG9uRXJyb3IoZSk7XG4gICAgfVxuICB9XG4gIHJlYWQoKTtcbiAgaWYgKHdpbmRvdyAmJiBsaXN0ZW5Ub1N0b3JhZ2VDaGFuZ2VzKVxuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcInN0b3JhZ2VcIiwgKGUpID0+IHNldFRpbWVvdXQoKCkgPT4gcmVhZChlKSwgMCkpO1xuICBpZiAoc3RvcmFnZSkge1xuICAgIHNoYXJlZC53YXRjaFdpdGhGaWx0ZXIoZGF0YSwgYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKGRhdGEudmFsdWUgPT0gbnVsbClcbiAgICAgICAgICBhd2FpdCBzdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGF3YWl0IHN0b3JhZ2Uuc2V0SXRlbShrZXksIGF3YWl0IHNlcmlhbGl6ZXIud3JpdGUoZGF0YS52YWx1ZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBvbkVycm9yKGUpO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGZsdXNoLFxuICAgICAgZGVlcCxcbiAgICAgIGV2ZW50RmlsdGVyXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGRhdGE7XG59XG5cbmxldCBfaWQgPSAwO1xuZnVuY3Rpb24gdXNlU3R5bGVUYWcoY3NzLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgaXNMb2FkZWQgPSB2dWVEZW1pLnJlZihmYWxzZSk7XG4gIGNvbnN0IHtcbiAgICBkb2N1bWVudCA9IGRlZmF1bHREb2N1bWVudCxcbiAgICBpbW1lZGlhdGUgPSB0cnVlLFxuICAgIG1hbnVhbCA9IGZhbHNlLFxuICAgIGlkID0gYHZ1ZXVzZV9zdHlsZXRhZ18keysrX2lkfWBcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGNzc1JlZiA9IHZ1ZURlbWkucmVmKGNzcyk7XG4gIGxldCBzdG9wID0gKCkgPT4ge1xuICB9O1xuICBjb25zdCBsb2FkID0gKCkgPT4ge1xuICAgIGlmICghZG9jdW1lbnQpXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICAgIGVsLnR5cGUgPSBcInRleHQvY3NzXCI7XG4gICAgZWwuaWQgPSBpZDtcbiAgICBpZiAob3B0aW9ucy5tZWRpYSlcbiAgICAgIGVsLm1lZGlhID0gb3B0aW9ucy5tZWRpYTtcbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGVsKTtcbiAgICBpZiAoaXNMb2FkZWQudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgc3RvcCA9IHZ1ZURlbWkud2F0Y2goY3NzUmVmLCAodmFsdWUpID0+IHtcbiAgICAgIGVsLmlubmVyVGV4dCA9IHZhbHVlO1xuICAgIH0sIHsgaW1tZWRpYXRlOiB0cnVlIH0pO1xuICAgIGlzTG9hZGVkLnZhbHVlID0gdHJ1ZTtcbiAgfTtcbiAgY29uc3QgdW5sb2FkID0gKCkgPT4ge1xuICAgIGlmICghZG9jdW1lbnQgfHwgIWlzTG9hZGVkLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIHN0b3AoKTtcbiAgICBkb2N1bWVudC5oZWFkLnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSk7XG4gICAgaXNMb2FkZWQudmFsdWUgPSBmYWxzZTtcbiAgfTtcbiAgaWYgKGltbWVkaWF0ZSAmJiAhbWFudWFsKVxuICAgIHNoYXJlZC50cnlPbk1vdW50ZWQobG9hZCk7XG4gIGlmICghbWFudWFsKVxuICAgIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZSh1bmxvYWQpO1xuICByZXR1cm4ge1xuICAgIGlkLFxuICAgIGNzczogY3NzUmVmLFxuICAgIHVubG9hZCxcbiAgICBsb2FkLFxuICAgIGlzTG9hZGVkOiB2dWVEZW1pLnJlYWRvbmx5KGlzTG9hZGVkKVxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VUZW1wbGF0ZVJlZnNMaXN0KCkge1xuICBjb25zdCByZWZzID0gdnVlRGVtaS5yZWYoW10pO1xuICByZWZzLnZhbHVlLnNldCA9IChlbCkgPT4ge1xuICAgIGlmIChlbClcbiAgICAgIHJlZnMudmFsdWUucHVzaChlbCk7XG4gIH07XG4gIHZ1ZURlbWkub25CZWZvcmVVcGRhdGUoKCkgPT4ge1xuICAgIHJlZnMudmFsdWUubGVuZ3RoID0gMDtcbiAgfSk7XG4gIHJldHVybiByZWZzO1xufVxuXG5mdW5jdGlvbiBnZXRSYW5nZXNGcm9tU2VsZWN0aW9uKHNlbGVjdGlvbikge1xuICB2YXIgX2E7XG4gIGNvbnN0IHJhbmdlQ291bnQgPSAoX2EgPSBzZWxlY3Rpb24ucmFuZ2VDb3VudCkgIT0gbnVsbCA/IF9hIDogMDtcbiAgY29uc3QgcmFuZ2VzID0gbmV3IEFycmF5KHJhbmdlQ291bnQpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHJhbmdlQ291bnQ7IGkrKykge1xuICAgIGNvbnN0IHJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoaSk7XG4gICAgcmFuZ2VzW2ldID0gcmFuZ2U7XG4gIH1cbiAgcmV0dXJuIHJhbmdlcztcbn1cbmZ1bmN0aW9uIHVzZVRleHRTZWxlY3Rpb24ob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBzZWxlY3Rpb24gPSB2dWVEZW1pLnJlZihudWxsKTtcbiAgY29uc3QgdGV4dCA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfYSwgX2I7XG4gICAgcmV0dXJuIChfYiA9IChfYSA9IHNlbGVjdGlvbi52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnRvU3RyaW5nKCkpICE9IG51bGwgPyBfYiA6IFwiXCI7XG4gIH0pO1xuICBjb25zdCByYW5nZXMgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHNlbGVjdGlvbi52YWx1ZSA/IGdldFJhbmdlc0Zyb21TZWxlY3Rpb24oc2VsZWN0aW9uLnZhbHVlKSA6IFtdKTtcbiAgY29uc3QgcmVjdHMgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHJhbmdlcy52YWx1ZS5tYXAoKHJhbmdlKSA9PiByYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkpO1xuICBmdW5jdGlvbiBvblNlbGVjdGlvbkNoYW5nZSgpIHtcbiAgICBzZWxlY3Rpb24udmFsdWUgPSBudWxsO1xuICAgIGlmICh3aW5kb3cpXG4gICAgICBzZWxlY3Rpb24udmFsdWUgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gIH1cbiAgaWYgKHdpbmRvdylcbiAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdy5kb2N1bWVudCwgXCJzZWxlY3Rpb25jaGFuZ2VcIiwgb25TZWxlY3Rpb25DaGFuZ2UpO1xuICByZXR1cm4ge1xuICAgIHRleHQsXG4gICAgcmVjdHMsXG4gICAgcmFuZ2VzLFxuICAgIHNlbGVjdGlvblxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VUZXh0YXJlYUF1dG9zaXplKG9wdGlvbnMpIHtcbiAgY29uc3QgdGV4dGFyZWEgPSB2dWVEZW1pLnJlZihvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLmVsZW1lbnQpO1xuICBjb25zdCBpbnB1dCA9IHZ1ZURlbWkucmVmKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuaW5wdXQpO1xuICBmdW5jdGlvbiB0cmlnZ2VyUmVzaXplKCkge1xuICAgIHZhciBfYSwgX2I7XG4gICAgaWYgKCF0ZXh0YXJlYS52YWx1ZSlcbiAgICAgIHJldHVybjtcbiAgICB0ZXh0YXJlYS52YWx1ZS5zdHlsZS5oZWlnaHQgPSBcIjFweFwiO1xuICAgIHRleHRhcmVhLnZhbHVlLnN0eWxlLmhlaWdodCA9IGAkeyhfYSA9IHRleHRhcmVhLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2Euc2Nyb2xsSGVpZ2h0fXB4YDtcbiAgICAoX2IgPSBvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLm9uUmVzaXplKSA9PSBudWxsID8gdm9pZCAwIDogX2IuY2FsbChvcHRpb25zKTtcbiAgfVxuICB2dWVEZW1pLndhdGNoKFtpbnB1dCwgdGV4dGFyZWFdLCB0cmlnZ2VyUmVzaXplLCB7IGltbWVkaWF0ZTogdHJ1ZSB9KTtcbiAgaWYgKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMud2F0Y2gpXG4gICAgdnVlRGVtaS53YXRjaChvcHRpb25zLndhdGNoLCB0cmlnZ2VyUmVzaXplLCB7IGltbWVkaWF0ZTogdHJ1ZSwgZGVlcDogdHJ1ZSB9KTtcbiAgcmV0dXJuIHtcbiAgICB0ZXh0YXJlYSxcbiAgICBpbnB1dCxcbiAgICB0cmlnZ2VyUmVzaXplXG4gIH07XG59XG5cbnZhciBfX2RlZlByb3AkMiA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2RlZlByb3BzID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXM7XG52YXIgX19nZXRPd25Qcm9wRGVzY3MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycztcbnZhciBfX2dldE93blByb3BTeW1ib2xzJDIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCQyID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kMiA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJDIgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJDIob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJDIgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCQyLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkMihhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkMilcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkMihiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSQyLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCQyKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xudmFyIF9fc3ByZWFkUHJvcHMgPSAoYSwgYikgPT4gX19kZWZQcm9wcyhhLCBfX2dldE93blByb3BEZXNjcyhiKSk7XG5mdW5jdGlvbiB1c2VUaHJvdHRsZWRSZWZIaXN0b3J5KHNvdXJjZSwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgdGhyb3R0bGUgPSAyMDAsIHRyYWlsaW5nID0gdHJ1ZSB9ID0gb3B0aW9ucztcbiAgY29uc3QgZmlsdGVyID0gc2hhcmVkLnRocm90dGxlRmlsdGVyKHRocm90dGxlLCB0cmFpbGluZyk7XG4gIGNvbnN0IGhpc3RvcnkgPSB1c2VSZWZIaXN0b3J5KHNvdXJjZSwgX19zcHJlYWRQcm9wcyhfX3NwcmVhZFZhbHVlcyQyKHt9LCBvcHRpb25zKSwgeyBldmVudEZpbHRlcjogZmlsdGVyIH0pKTtcbiAgcmV0dXJuIF9fc3ByZWFkVmFsdWVzJDIoe30sIGhpc3RvcnkpO1xufVxuXG52YXIgX19kZWZQcm9wJDEgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyQxID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkMSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJDEgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCQxID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCQxKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyQxID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkMS5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJDEoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJDEpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJDEoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kMS5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkMShhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbnZhciBfX29ialJlc3QgPSAoc291cmNlLCBleGNsdWRlKSA9PiB7XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgZm9yICh2YXIgcHJvcCBpbiBzb3VyY2UpXG4gICAgaWYgKF9faGFzT3duUHJvcCQxLmNhbGwoc291cmNlLCBwcm9wKSAmJiBleGNsdWRlLmluZGV4T2YocHJvcCkgPCAwKVxuICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdO1xuICBpZiAoc291cmNlICE9IG51bGwgJiYgX19nZXRPd25Qcm9wU3ltYm9scyQxKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyQxKHNvdXJjZSkpIHtcbiAgICAgIGlmIChleGNsdWRlLmluZGV4T2YocHJvcCkgPCAwICYmIF9fcHJvcElzRW51bSQxLmNhbGwoc291cmNlLCBwcm9wKSlcbiAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdO1xuICAgIH1cbiAgcmV0dXJuIHRhcmdldDtcbn07XG5jb25zdCBVTklUUyA9IFtcbiAgeyBtYXg6IDZlNCwgdmFsdWU6IDFlMywgbmFtZTogXCJzZWNvbmRcIiB9LFxuICB7IG1heDogMjc2ZTQsIHZhbHVlOiA2ZTQsIG5hbWU6IFwibWludXRlXCIgfSxcbiAgeyBtYXg6IDcyZTYsIHZhbHVlOiAzNmU1LCBuYW1lOiBcImhvdXJcIiB9LFxuICB7IG1heDogNTE4NGU1LCB2YWx1ZTogODY0ZTUsIG5hbWU6IFwiZGF5XCIgfSxcbiAgeyBtYXg6IDI0MTkyZTUsIHZhbHVlOiA2MDQ4ZTUsIG5hbWU6IFwid2Vla1wiIH0sXG4gIHsgbWF4OiAyODUxMmU2LCB2YWx1ZTogMjU5MmU2LCBuYW1lOiBcIm1vbnRoXCIgfSxcbiAgeyBtYXg6IEluZmluaXR5LCB2YWx1ZTogMzE1MzZlNiwgbmFtZTogXCJ5ZWFyXCIgfVxuXTtcbmNvbnN0IERFRkFVTFRfTUVTU0FHRVMgPSB7XG4gIGp1c3ROb3c6IFwianVzdCBub3dcIixcbiAgcGFzdDogKG4pID0+IG4ubWF0Y2goL1xcZC8pID8gYCR7bn0gYWdvYCA6IG4sXG4gIGZ1dHVyZTogKG4pID0+IG4ubWF0Y2goL1xcZC8pID8gYGluICR7bn1gIDogbixcbiAgbW9udGg6IChuLCBwYXN0KSA9PiBuID09PSAxID8gcGFzdCA/IFwibGFzdCBtb250aFwiIDogXCJuZXh0IG1vbnRoXCIgOiBgJHtufSBtb250aCR7biA+IDEgPyBcInNcIiA6IFwiXCJ9YCxcbiAgeWVhcjogKG4sIHBhc3QpID0+IG4gPT09IDEgPyBwYXN0ID8gXCJsYXN0IHllYXJcIiA6IFwibmV4dCB5ZWFyXCIgOiBgJHtufSB5ZWFyJHtuID4gMSA/IFwic1wiIDogXCJcIn1gLFxuICBkYXk6IChuLCBwYXN0KSA9PiBuID09PSAxID8gcGFzdCA/IFwieWVzdGVyZGF5XCIgOiBcInRvbW9ycm93XCIgOiBgJHtufSBkYXkke24gPiAxID8gXCJzXCIgOiBcIlwifWAsXG4gIHdlZWs6IChuLCBwYXN0KSA9PiBuID09PSAxID8gcGFzdCA/IFwibGFzdCB3ZWVrXCIgOiBcIm5leHQgd2Vla1wiIDogYCR7bn0gd2VlayR7biA+IDEgPyBcInNcIiA6IFwiXCJ9YCxcbiAgaG91cjogKG4pID0+IGAke259IGhvdXIke24gPiAxID8gXCJzXCIgOiBcIlwifWAsXG4gIG1pbnV0ZTogKG4pID0+IGAke259IG1pbnV0ZSR7biA+IDEgPyBcInNcIiA6IFwiXCJ9YCxcbiAgc2Vjb25kOiAobikgPT4gYCR7bn0gc2Vjb25kJHtuID4gMSA/IFwic1wiIDogXCJcIn1gXG59O1xuY29uc3QgREVGQVVMVF9GT1JNQVRURVIgPSAoZGF0ZSkgPT4gZGF0ZS50b0lTT1N0cmluZygpLnNsaWNlKDAsIDEwKTtcbmZ1bmN0aW9uIHVzZVRpbWVBZ28odGltZSwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBjb250cm9sczogZXhwb3NlQ29udHJvbHMgPSBmYWxzZSxcbiAgICBtYXgsXG4gICAgdXBkYXRlSW50ZXJ2YWwgPSAzZTQsXG4gICAgbWVzc2FnZXMgPSBERUZBVUxUX01FU1NBR0VTLFxuICAgIGZ1bGxEYXRlRm9ybWF0dGVyID0gREVGQVVMVF9GT1JNQVRURVJcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHsgYWJzLCByb3VuZCB9ID0gTWF0aDtcbiAgY29uc3QgX2EgPSB1c2VOb3coeyBpbnRlcnZhbDogdXBkYXRlSW50ZXJ2YWwsIGNvbnRyb2xzOiB0cnVlIH0pLCB7IG5vdyB9ID0gX2EsIGNvbnRyb2xzID0gX19vYmpSZXN0KF9hLCBbXCJub3dcIl0pO1xuICBmdW5jdGlvbiBnZXRUaW1lYWdvKGZyb20sIG5vdzIpIHtcbiAgICB2YXIgX2EyO1xuICAgIGNvbnN0IGRpZmYgPSArbm93MiAtICtmcm9tO1xuICAgIGNvbnN0IGFic0RpZmYgPSBhYnMoZGlmZik7XG4gICAgaWYgKGFic0RpZmYgPCA2ZTQpXG4gICAgICByZXR1cm4gbWVzc2FnZXMuanVzdE5vdztcbiAgICBpZiAodHlwZW9mIG1heCA9PT0gXCJudW1iZXJcIiAmJiBhYnNEaWZmID4gbWF4KVxuICAgICAgcmV0dXJuIGZ1bGxEYXRlRm9ybWF0dGVyKG5ldyBEYXRlKGZyb20pKTtcbiAgICBpZiAodHlwZW9mIG1heCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgY29uc3QgdW5pdE1heCA9IChfYTIgPSBVTklUUy5maW5kKChpKSA9PiBpLm5hbWUgPT09IG1heCkpID09IG51bGwgPyB2b2lkIDAgOiBfYTIubWF4O1xuICAgICAgaWYgKHVuaXRNYXggJiYgYWJzRGlmZiA+IHVuaXRNYXgpXG4gICAgICAgIHJldHVybiBmdWxsRGF0ZUZvcm1hdHRlcihuZXcgRGF0ZShmcm9tKSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgdW5pdCBvZiBVTklUUykge1xuICAgICAgaWYgKGFic0RpZmYgPCB1bml0Lm1heClcbiAgICAgICAgcmV0dXJuIGZvcm1hdChkaWZmLCB1bml0KTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gYXBwbHlGb3JtYXQobmFtZSwgdmFsLCBpc1Bhc3QpIHtcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBtZXNzYWdlc1tuYW1lXTtcbiAgICBpZiAodHlwZW9mIGZvcm1hdHRlciA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgcmV0dXJuIGZvcm1hdHRlcih2YWwsIGlzUGFzdCk7XG4gICAgcmV0dXJuIGZvcm1hdHRlci5yZXBsYWNlKFwiezB9XCIsIHZhbC50b1N0cmluZygpKTtcbiAgfVxuICBmdW5jdGlvbiBmb3JtYXQoZGlmZiwgdW5pdCkge1xuICAgIGNvbnN0IHZhbCA9IHJvdW5kKGFicyhkaWZmKSAvIHVuaXQudmFsdWUpO1xuICAgIGNvbnN0IHBhc3QgPSBkaWZmID4gMDtcbiAgICBjb25zdCBzdHIgPSBhcHBseUZvcm1hdCh1bml0Lm5hbWUsIHZhbCwgcGFzdCk7XG4gICAgcmV0dXJuIGFwcGx5Rm9ybWF0KHBhc3QgPyBcInBhc3RcIiA6IFwiZnV0dXJlXCIsIHN0ciwgcGFzdCk7XG4gIH1cbiAgY29uc3QgdGltZUFnbyA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gZ2V0VGltZWFnbyhuZXcgRGF0ZSh2dWVEZW1pLnVucmVmKHRpbWUpKSwgdnVlRGVtaS51bnJlZihub3cudmFsdWUpKSk7XG4gIGlmIChleHBvc2VDb250cm9scykge1xuICAgIHJldHVybiBfX3NwcmVhZFZhbHVlcyQxKHtcbiAgICAgIHRpbWVBZ29cbiAgICB9LCBjb250cm9scyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRpbWVBZ287XG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlVGltZW91dFBvbGwoZm4sIGludGVydmFsLCB0aW1lb3V0UG9sbE9wdGlvbnMpIHtcbiAgY29uc3QgeyBzdGFydCB9ID0gc2hhcmVkLnVzZVRpbWVvdXRGbihsb29wLCBpbnRlcnZhbCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBhc3luYyBmdW5jdGlvbiBsb29wKCkge1xuICAgIGlmICghaXNBY3RpdmUudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgYXdhaXQgZm4oKTtcbiAgICBzdGFydCgpO1xuICB9XG4gIGZ1bmN0aW9uIHJlc3VtZSgpIHtcbiAgICBpZiAoIWlzQWN0aXZlLnZhbHVlKSB7XG4gICAgICBpc0FjdGl2ZS52YWx1ZSA9IHRydWU7XG4gICAgICBsb29wKCk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHBhdXNlKCkge1xuICAgIGlzQWN0aXZlLnZhbHVlID0gZmFsc2U7XG4gIH1cbiAgaWYgKHRpbWVvdXRQb2xsT3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogdGltZW91dFBvbGxPcHRpb25zLmltbWVkaWF0ZSlcbiAgICByZXN1bWUoKTtcbiAgc2hhcmVkLnRyeU9uU2NvcGVEaXNwb3NlKHBhdXNlKTtcbiAgcmV0dXJuIHtcbiAgICBpc0FjdGl2ZSxcbiAgICBwYXVzZSxcbiAgICByZXN1bWVcbiAgfTtcbn1cblxudmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcChvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcC5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scylcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0uY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xuZnVuY3Rpb24gdXNlVGltZXN0YW1wKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgY29udHJvbHM6IGV4cG9zZUNvbnRyb2xzID0gZmFsc2UsXG4gICAgb2Zmc2V0ID0gMCxcbiAgICBpbW1lZGlhdGUgPSB0cnVlLFxuICAgIGludGVydmFsID0gXCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWVcIlxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgdHMgPSB2dWVEZW1pLnJlZihzaGFyZWQudGltZXN0YW1wKCkgKyBvZmZzZXQpO1xuICBjb25zdCB1cGRhdGUgPSAoKSA9PiB0cy52YWx1ZSA9IHNoYXJlZC50aW1lc3RhbXAoKSArIG9mZnNldDtcbiAgY29uc3QgY29udHJvbHMgPSBpbnRlcnZhbCA9PT0gXCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWVcIiA/IHVzZVJhZkZuKHVwZGF0ZSwgeyBpbW1lZGlhdGUgfSkgOiBzaGFyZWQudXNlSW50ZXJ2YWxGbih1cGRhdGUsIGludGVydmFsLCB7IGltbWVkaWF0ZSB9KTtcbiAgaWYgKGV4cG9zZUNvbnRyb2xzKSB7XG4gICAgcmV0dXJuIF9fc3ByZWFkVmFsdWVzKHtcbiAgICAgIHRpbWVzdGFtcDogdHNcbiAgICB9LCBjb250cm9scyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRzO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVzZVRpdGxlKG5ld1RpdGxlID0gbnVsbCwgb3B0aW9ucyA9IHt9KSB7XG4gIHZhciBfYSwgX2I7XG4gIGNvbnN0IHtcbiAgICBkb2N1bWVudCA9IGRlZmF1bHREb2N1bWVudCxcbiAgICBvYnNlcnZlID0gZmFsc2UsXG4gICAgdGl0bGVUZW1wbGF0ZSA9IFwiJXNcIlxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgdGl0bGUgPSB2dWVEZW1pLnJlZigoX2EgPSBuZXdUaXRsZSAhPSBudWxsID8gbmV3VGl0bGUgOiBkb2N1bWVudCA9PSBudWxsID8gdm9pZCAwIDogZG9jdW1lbnQudGl0bGUpICE9IG51bGwgPyBfYSA6IG51bGwpO1xuICB2dWVEZW1pLndhdGNoKHRpdGxlLCAodCwgbykgPT4ge1xuICAgIGlmIChzaGFyZWQuaXNTdHJpbmcodCkgJiYgdCAhPT0gbyAmJiBkb2N1bWVudClcbiAgICAgIGRvY3VtZW50LnRpdGxlID0gdGl0bGVUZW1wbGF0ZS5yZXBsYWNlKFwiJXNcIiwgdCk7XG4gIH0sIHsgaW1tZWRpYXRlOiB0cnVlIH0pO1xuICBpZiAob2JzZXJ2ZSAmJiBkb2N1bWVudCkge1xuICAgIHVzZU11dGF0aW9uT2JzZXJ2ZXIoKF9iID0gZG9jdW1lbnQuaGVhZCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLnF1ZXJ5U2VsZWN0b3IoXCJ0aXRsZVwiKSwgKCkgPT4ge1xuICAgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnRpdGxlICE9PSB0aXRsZS52YWx1ZSlcbiAgICAgICAgdGl0bGUudmFsdWUgPSB0aXRsZVRlbXBsYXRlLnJlcGxhY2UoXCIlc1wiLCBkb2N1bWVudC50aXRsZSk7XG4gICAgfSwgeyBjaGlsZExpc3Q6IHRydWUgfSk7XG4gIH1cbiAgcmV0dXJuIHRpdGxlO1xufVxuXG5jb25zdCBUcmFuc2l0aW9uUHJlc2V0cyA9IHtcbiAgbGluZWFyOiBzaGFyZWQuaWRlbnRpdHksXG4gIGVhc2VJblNpbmU6IFswLjEyLCAwLCAwLjM5LCAwXSxcbiAgZWFzZU91dFNpbmU6IFswLjYxLCAxLCAwLjg4LCAxXSxcbiAgZWFzZUluT3V0U2luZTogWzAuMzcsIDAsIDAuNjMsIDFdLFxuICBlYXNlSW5RdWFkOiBbMC4xMSwgMCwgMC41LCAwXSxcbiAgZWFzZU91dFF1YWQ6IFswLjUsIDEsIDAuODksIDFdLFxuICBlYXNlSW5PdXRRdWFkOiBbMC40NSwgMCwgMC41NSwgMV0sXG4gIGVhc2VJbkN1YmljOiBbMC4zMiwgMCwgMC42NywgMF0sXG4gIGVhc2VPdXRDdWJpYzogWzAuMzMsIDEsIDAuNjgsIDFdLFxuICBlYXNlSW5PdXRDdWJpYzogWzAuNjUsIDAsIDAuMzUsIDFdLFxuICBlYXNlSW5RdWFydDogWzAuNSwgMCwgMC43NSwgMF0sXG4gIGVhc2VPdXRRdWFydDogWzAuMjUsIDEsIDAuNSwgMV0sXG4gIGVhc2VJbk91dFF1YXJ0OiBbMC43NiwgMCwgMC4yNCwgMV0sXG4gIGVhc2VJblF1aW50OiBbMC42NCwgMCwgMC43OCwgMF0sXG4gIGVhc2VPdXRRdWludDogWzAuMjIsIDEsIDAuMzYsIDFdLFxuICBlYXNlSW5PdXRRdWludDogWzAuODMsIDAsIDAuMTcsIDFdLFxuICBlYXNlSW5FeHBvOiBbMC43LCAwLCAwLjg0LCAwXSxcbiAgZWFzZU91dEV4cG86IFswLjE2LCAxLCAwLjMsIDFdLFxuICBlYXNlSW5PdXRFeHBvOiBbMC44NywgMCwgMC4xMywgMV0sXG4gIGVhc2VJbkNpcmM6IFswLjU1LCAwLCAxLCAwLjQ1XSxcbiAgZWFzZU91dENpcmM6IFswLCAwLjU1LCAwLjQ1LCAxXSxcbiAgZWFzZUluT3V0Q2lyYzogWzAuODUsIDAsIDAuMTUsIDFdLFxuICBlYXNlSW5CYWNrOiBbMC4zNiwgMCwgMC42NiwgLTAuNTZdLFxuICBlYXNlT3V0QmFjazogWzAuMzQsIDEuNTYsIDAuNjQsIDFdLFxuICBlYXNlSW5PdXRCYWNrOiBbMC42OCwgLTAuNiwgMC4zMiwgMS42XVxufTtcbmZ1bmN0aW9uIGNyZWF0ZUVhc2luZ0Z1bmN0aW9uKFtwMCwgcDEsIHAyLCBwM10pIHtcbiAgY29uc3QgYSA9IChhMSwgYTIpID0+IDEgLSAzICogYTIgKyAzICogYTE7XG4gIGNvbnN0IGIgPSAoYTEsIGEyKSA9PiAzICogYTIgLSA2ICogYTE7XG4gIGNvbnN0IGMgPSAoYTEpID0+IDMgKiBhMTtcbiAgY29uc3QgY2FsY0JlemllciA9ICh0LCBhMSwgYTIpID0+ICgoYShhMSwgYTIpICogdCArIGIoYTEsIGEyKSkgKiB0ICsgYyhhMSkpICogdDtcbiAgY29uc3QgZ2V0U2xvcGUgPSAodCwgYTEsIGEyKSA9PiAzICogYShhMSwgYTIpICogdCAqIHQgKyAyICogYihhMSwgYTIpICogdCArIGMoYTEpO1xuICBjb25zdCBnZXRUZm9yWCA9ICh4KSA9PiB7XG4gICAgbGV0IGFHdWVzc1QgPSB4O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDsgKytpKSB7XG4gICAgICBjb25zdCBjdXJyZW50U2xvcGUgPSBnZXRTbG9wZShhR3Vlc3NULCBwMCwgcDIpO1xuICAgICAgaWYgKGN1cnJlbnRTbG9wZSA9PT0gMClcbiAgICAgICAgcmV0dXJuIGFHdWVzc1Q7XG4gICAgICBjb25zdCBjdXJyZW50WCA9IGNhbGNCZXppZXIoYUd1ZXNzVCwgcDAsIHAyKSAtIHg7XG4gICAgICBhR3Vlc3NUIC09IGN1cnJlbnRYIC8gY3VycmVudFNsb3BlO1xuICAgIH1cbiAgICByZXR1cm4gYUd1ZXNzVDtcbiAgfTtcbiAgcmV0dXJuICh4KSA9PiBwMCA9PT0gcDEgJiYgcDIgPT09IHAzID8geCA6IGNhbGNCZXppZXIoZ2V0VGZvclgoeCksIHAxLCBwMyk7XG59XG5mdW5jdGlvbiB1c2VUcmFuc2l0aW9uKHNvdXJjZSwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBkZWxheSA9IDAsXG4gICAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgICBkdXJhdGlvbiA9IDFlMyxcbiAgICBvbkZpbmlzaGVkID0gc2hhcmVkLm5vb3AsXG4gICAgb25TdGFydGVkID0gc2hhcmVkLm5vb3AsXG4gICAgdHJhbnNpdGlvbiA9IHNoYXJlZC5pZGVudGl0eVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgY3VycmVudFRyYW5zaXRpb24gPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB0ID0gdnVlRGVtaS51bnJlZih0cmFuc2l0aW9uKTtcbiAgICByZXR1cm4gc2hhcmVkLmlzRnVuY3Rpb24odCkgPyB0IDogY3JlYXRlRWFzaW5nRnVuY3Rpb24odCk7XG4gIH0pO1xuICBjb25zdCBzb3VyY2VWYWx1ZSA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHMgPSB2dWVEZW1pLnVucmVmKHNvdXJjZSk7XG4gICAgcmV0dXJuIHNoYXJlZC5pc051bWJlcihzKSA/IHMgOiBzLm1hcCh2dWVEZW1pLnVucmVmKTtcbiAgfSk7XG4gIGNvbnN0IHNvdXJjZVZlY3RvciA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gc2hhcmVkLmlzTnVtYmVyKHNvdXJjZVZhbHVlLnZhbHVlKSA/IFtzb3VyY2VWYWx1ZS52YWx1ZV0gOiBzb3VyY2VWYWx1ZS52YWx1ZSk7XG4gIGNvbnN0IG91dHB1dFZlY3RvciA9IHZ1ZURlbWkucmVmKHNvdXJjZVZlY3Rvci52YWx1ZS5zbGljZSgwKSk7XG4gIGxldCBjdXJyZW50RHVyYXRpb247XG4gIGxldCBkaWZmVmVjdG9yO1xuICBsZXQgZW5kQXQ7XG4gIGxldCBzdGFydEF0O1xuICBsZXQgc3RhcnRWZWN0b3I7XG4gIGNvbnN0IHsgcmVzdW1lLCBwYXVzZSB9ID0gdXNlUmFmRm4oKCkgPT4ge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3QgcHJvZ3Jlc3MgPSBzaGFyZWQuY2xhbXAoMSAtIChlbmRBdCAtIG5vdykgLyBjdXJyZW50RHVyYXRpb24sIDAsIDEpO1xuICAgIG91dHB1dFZlY3Rvci52YWx1ZSA9IHN0YXJ0VmVjdG9yLm1hcCgodmFsLCBpKSA9PiB7XG4gICAgICB2YXIgX2E7XG4gICAgICByZXR1cm4gdmFsICsgKChfYSA9IGRpZmZWZWN0b3JbaV0pICE9IG51bGwgPyBfYSA6IDApICogY3VycmVudFRyYW5zaXRpb24udmFsdWUocHJvZ3Jlc3MpO1xuICAgIH0pO1xuICAgIGlmIChwcm9ncmVzcyA+PSAxKSB7XG4gICAgICBwYXVzZSgpO1xuICAgICAgb25GaW5pc2hlZCgpO1xuICAgIH1cbiAgfSwgeyBpbW1lZGlhdGU6IGZhbHNlIH0pO1xuICBjb25zdCBzdGFydCA9ICgpID0+IHtcbiAgICBwYXVzZSgpO1xuICAgIGN1cnJlbnREdXJhdGlvbiA9IHZ1ZURlbWkudW5yZWYoZHVyYXRpb24pO1xuICAgIGRpZmZWZWN0b3IgPSBvdXRwdXRWZWN0b3IudmFsdWUubWFwKChuLCBpKSA9PiB7XG4gICAgICB2YXIgX2EsIF9iO1xuICAgICAgcmV0dXJuICgoX2EgPSBzb3VyY2VWZWN0b3IudmFsdWVbaV0pICE9IG51bGwgPyBfYSA6IDApIC0gKChfYiA9IG91dHB1dFZlY3Rvci52YWx1ZVtpXSkgIT0gbnVsbCA/IF9iIDogMCk7XG4gICAgfSk7XG4gICAgc3RhcnRWZWN0b3IgPSBvdXRwdXRWZWN0b3IudmFsdWUuc2xpY2UoMCk7XG4gICAgc3RhcnRBdCA9IERhdGUubm93KCk7XG4gICAgZW5kQXQgPSBzdGFydEF0ICsgY3VycmVudER1cmF0aW9uO1xuICAgIHJlc3VtZSgpO1xuICAgIG9uU3RhcnRlZCgpO1xuICB9O1xuICBjb25zdCB0aW1lb3V0ID0gc2hhcmVkLnVzZVRpbWVvdXRGbihzdGFydCwgZGVsYXksIHsgaW1tZWRpYXRlOiBmYWxzZSB9KTtcbiAgdnVlRGVtaS53YXRjaChzb3VyY2VWZWN0b3IsICgpID0+IHtcbiAgICBpZiAodnVlRGVtaS51bnJlZihkaXNhYmxlZCkpIHtcbiAgICAgIG91dHB1dFZlY3Rvci52YWx1ZSA9IHNvdXJjZVZlY3Rvci52YWx1ZS5zbGljZSgwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHZ1ZURlbWkudW5yZWYoZGVsYXkpIDw9IDApXG4gICAgICAgIHN0YXJ0KCk7XG4gICAgICBlbHNlXG4gICAgICAgIHRpbWVvdXQuc3RhcnQoKTtcbiAgICB9XG4gIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHRhcmdldFZlY3RvciA9IHZ1ZURlbWkudW5yZWYoZGlzYWJsZWQpID8gc291cmNlVmVjdG9yIDogb3V0cHV0VmVjdG9yO1xuICAgIHJldHVybiBzaGFyZWQuaXNOdW1iZXIoc291cmNlVmFsdWUudmFsdWUpID8gdGFyZ2V0VmVjdG9yLnZhbHVlWzBdIDogdGFyZ2V0VmVjdG9yLnZhbHVlO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdXNlVXJsU2VhcmNoUGFyYW1zKG1vZGUgPSBcImhpc3RvcnlcIiwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBpbml0aWFsVmFsdWUgPSB7fSxcbiAgICByZW1vdmVOdWxsaXNoVmFsdWVzID0gdHJ1ZSxcbiAgICByZW1vdmVGYWxzeVZhbHVlcyA9IGZhbHNlLFxuICAgIHdpbmRvdyA9IGRlZmF1bHRXaW5kb3dcbiAgfSA9IG9wdGlvbnM7XG4gIGlmICghd2luZG93KVxuICAgIHJldHVybiB2dWVEZW1pLnJlYWN0aXZlKGluaXRpYWxWYWx1ZSk7XG4gIGNvbnN0IHN0YXRlID0gdnVlRGVtaS5yZWFjdGl2ZSh7fSk7XG4gIGZ1bmN0aW9uIGdldFJhd1BhcmFtcygpIHtcbiAgICBpZiAobW9kZSA9PT0gXCJoaXN0b3J5XCIpIHtcbiAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24uc2VhcmNoIHx8IFwiXCI7XG4gICAgfSBlbHNlIGlmIChtb2RlID09PSBcImhhc2hcIikge1xuICAgICAgY29uc3QgaGFzaCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoIHx8IFwiXCI7XG4gICAgICBjb25zdCBpbmRleCA9IGhhc2guaW5kZXhPZihcIj9cIik7XG4gICAgICByZXR1cm4gaW5kZXggPiAwID8gaGFzaC5zbGljZShpbmRleCkgOiBcIlwiO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKHdpbmRvdy5sb2NhdGlvbi5oYXNoIHx8IFwiXCIpLnJlcGxhY2UoL14jLywgXCJcIik7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGNvbnN0cnVjdFF1ZXJ5KHBhcmFtcykge1xuICAgIGNvbnN0IHN0cmluZ2lmaWVkID0gcGFyYW1zLnRvU3RyaW5nKCk7XG4gICAgaWYgKG1vZGUgPT09IFwiaGlzdG9yeVwiKVxuICAgICAgcmV0dXJuIGAke3N0cmluZ2lmaWVkID8gYD8ke3N0cmluZ2lmaWVkfWAgOiBcIlwifSR7bG9jYXRpb24uaGFzaCB8fCBcIlwifWA7XG4gICAgaWYgKG1vZGUgPT09IFwiaGFzaC1wYXJhbXNcIilcbiAgICAgIHJldHVybiBgJHtsb2NhdGlvbi5zZWFyY2ggfHwgXCJcIn0ke3N0cmluZ2lmaWVkID8gYCMke3N0cmluZ2lmaWVkfWAgOiBcIlwifWA7XG4gICAgY29uc3QgaGFzaCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoIHx8IFwiI1wiO1xuICAgIGNvbnN0IGluZGV4ID0gaGFzaC5pbmRleE9mKFwiP1wiKTtcbiAgICBpZiAoaW5kZXggPiAwKVxuICAgICAgcmV0dXJuIGAke2hhc2guc2xpY2UoMCwgaW5kZXgpfSR7c3RyaW5naWZpZWQgPyBgPyR7c3RyaW5naWZpZWR9YCA6IFwiXCJ9YDtcbiAgICByZXR1cm4gYCR7aGFzaH0ke3N0cmluZ2lmaWVkID8gYD8ke3N0cmluZ2lmaWVkfWAgOiBcIlwifWA7XG4gIH1cbiAgZnVuY3Rpb24gcmVhZCgpIHtcbiAgICByZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtcyhnZXRSYXdQYXJhbXMoKSk7XG4gIH1cbiAgZnVuY3Rpb24gdXBkYXRlU3RhdGUocGFyYW1zKSB7XG4gICAgY29uc3QgdW51c2VkS2V5cyA9IG5ldyBTZXQoT2JqZWN0LmtleXMoc3RhdGUpKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBwYXJhbXMua2V5cygpKSB7XG4gICAgICBjb25zdCBwYXJhbXNGb3JLZXkgPSBwYXJhbXMuZ2V0QWxsKGtleSk7XG4gICAgICBzdGF0ZVtrZXldID0gcGFyYW1zRm9yS2V5Lmxlbmd0aCA+IDEgPyBwYXJhbXNGb3JLZXkgOiBwYXJhbXMuZ2V0KGtleSkgfHwgXCJcIjtcbiAgICAgIHVudXNlZEtleXMuZGVsZXRlKGtleSk7XG4gICAgfVxuICAgIEFycmF5LmZyb20odW51c2VkS2V5cykuZm9yRWFjaCgoa2V5KSA9PiBkZWxldGUgc3RhdGVba2V5XSk7XG4gIH1cbiAgY29uc3QgeyBwYXVzZSwgcmVzdW1lIH0gPSBzaGFyZWQucGF1c2FibGVXYXRjaChzdGF0ZSwgKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoXCJcIik7XG4gICAgT2JqZWN0LmtleXMoc3RhdGUpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgY29uc3QgbWFwRW50cnkgPSBzdGF0ZVtrZXldO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobWFwRW50cnkpKVxuICAgICAgICBtYXBFbnRyeS5mb3JFYWNoKCh2YWx1ZSkgPT4gcGFyYW1zLmFwcGVuZChrZXksIHZhbHVlKSk7XG4gICAgICBlbHNlIGlmIChyZW1vdmVOdWxsaXNoVmFsdWVzICYmIG1hcEVudHJ5ID09IG51bGwpXG4gICAgICAgIHBhcmFtcy5kZWxldGUoa2V5KTtcbiAgICAgIGVsc2UgaWYgKHJlbW92ZUZhbHN5VmFsdWVzICYmICFtYXBFbnRyeSlcbiAgICAgICAgcGFyYW1zLmRlbGV0ZShrZXkpO1xuICAgICAgZWxzZVxuICAgICAgICBwYXJhbXMuc2V0KGtleSwgbWFwRW50cnkpO1xuICAgIH0pO1xuICAgIHdyaXRlKHBhcmFtcyk7XG4gIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgZnVuY3Rpb24gd3JpdGUocGFyYW1zLCBzaG91bGRVcGRhdGUpIHtcbiAgICBwYXVzZSgpO1xuICAgIGlmIChzaG91bGRVcGRhdGUpXG4gICAgICB1cGRhdGVTdGF0ZShwYXJhbXMpO1xuICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh3aW5kb3cuaGlzdG9yeS5zdGF0ZSwgd2luZG93LmRvY3VtZW50LnRpdGxlLCB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyBjb25zdHJ1Y3RRdWVyeShwYXJhbXMpKTtcbiAgICByZXN1bWUoKTtcbiAgfVxuICBmdW5jdGlvbiBvbkNoYW5nZWQoKSB7XG4gICAgd3JpdGUocmVhZCgpLCB0cnVlKTtcbiAgfVxuICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJwb3BzdGF0ZVwiLCBvbkNoYW5nZWQsIGZhbHNlKTtcbiAgaWYgKG1vZGUgIT09IFwiaGlzdG9yeVwiKVxuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcImhhc2hjaGFuZ2VcIiwgb25DaGFuZ2VkLCBmYWxzZSk7XG4gIGNvbnN0IGluaXRpYWwgPSByZWFkKCk7XG4gIGlmIChpbml0aWFsLmtleXMoKS5uZXh0KCkudmFsdWUpXG4gICAgdXBkYXRlU3RhdGUoaW5pdGlhbCk7XG4gIGVsc2VcbiAgICBPYmplY3QuYXNzaWduKHN0YXRlLCBpbml0aWFsVmFsdWUpO1xuICByZXR1cm4gc3RhdGU7XG59XG5cbmZ1bmN0aW9uIHVzZVVzZXJNZWRpYShvcHRpb25zID0ge30pIHtcbiAgdmFyIF9hLCBfYiwgX2M7XG4gIGNvbnN0IGVuYWJsZWQgPSB2dWVEZW1pLnJlZigoX2EgPSBvcHRpb25zLmVuYWJsZWQpICE9IG51bGwgPyBfYSA6IGZhbHNlKTtcbiAgY29uc3QgYXV0b1N3aXRjaCA9IHZ1ZURlbWkucmVmKChfYiA9IG9wdGlvbnMuYXV0b1N3aXRjaCkgIT0gbnVsbCA/IF9iIDogdHJ1ZSk7XG4gIGNvbnN0IHZpZGVvRGV2aWNlSWQgPSB2dWVEZW1pLnJlZihvcHRpb25zLnZpZGVvRGV2aWNlSWQpO1xuICBjb25zdCBhdWRpb0RldmljZUlkID0gdnVlRGVtaS5yZWYob3B0aW9ucy5hdWRpb0RldmljZUlkKTtcbiAgY29uc3QgeyBuYXZpZ2F0b3IgPSBkZWZhdWx0TmF2aWdhdG9yIH0gPSBvcHRpb25zO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IEJvb2xlYW4oKF9jID0gbmF2aWdhdG9yID09IG51bGwgPyB2b2lkIDAgOiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzKSA9PSBudWxsID8gdm9pZCAwIDogX2MuZ2V0VXNlck1lZGlhKTtcbiAgY29uc3Qgc3RyZWFtID0gdnVlRGVtaS5zaGFsbG93UmVmKCk7XG4gIGZ1bmN0aW9uIGdldERldmljZU9wdGlvbnMoZGV2aWNlKSB7XG4gICAgaWYgKGRldmljZS52YWx1ZSA9PT0gXCJub25lXCIgfHwgZGV2aWNlLnZhbHVlID09PSBmYWxzZSlcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICBpZiAoZGV2aWNlLnZhbHVlID09IG51bGwpXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4ge1xuICAgICAgZGV2aWNlSWQ6IGRldmljZS52YWx1ZVxuICAgIH07XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gX3N0YXJ0KCkge1xuICAgIGlmICghaXNTdXBwb3J0ZWQgfHwgc3RyZWFtLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIHN0cmVhbS52YWx1ZSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHtcbiAgICAgIHZpZGVvOiBnZXREZXZpY2VPcHRpb25zKHZpZGVvRGV2aWNlSWQpLFxuICAgICAgYXVkaW86IGdldERldmljZU9wdGlvbnMoYXVkaW9EZXZpY2VJZClcbiAgICB9KTtcbiAgICByZXR1cm4gc3RyZWFtLnZhbHVlO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIF9zdG9wKCkge1xuICAgIHZhciBfYTI7XG4gICAgKF9hMiA9IHN0cmVhbS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5nZXRUcmFja3MoKS5mb3JFYWNoKCh0KSA9PiB0LnN0b3AoKSk7XG4gICAgc3RyZWFtLnZhbHVlID0gdm9pZCAwO1xuICB9XG4gIGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgX3N0b3AoKTtcbiAgICBlbmFibGVkLnZhbHVlID0gZmFsc2U7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gc3RhcnQoKSB7XG4gICAgYXdhaXQgX3N0YXJ0KCk7XG4gICAgaWYgKHN0cmVhbS52YWx1ZSlcbiAgICAgIGVuYWJsZWQudmFsdWUgPSB0cnVlO1xuICAgIHJldHVybiBzdHJlYW0udmFsdWU7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gcmVzdGFydCgpIHtcbiAgICBfc3RvcCgpO1xuICAgIHJldHVybiBhd2FpdCBzdGFydCgpO1xuICB9XG4gIHZ1ZURlbWkud2F0Y2goZW5hYmxlZCwgKHYpID0+IHtcbiAgICBpZiAodilcbiAgICAgIF9zdGFydCgpO1xuICAgIGVsc2VcbiAgICAgIF9zdG9wKCk7XG4gIH0sIHsgaW1tZWRpYXRlOiB0cnVlIH0pO1xuICB2dWVEZW1pLndhdGNoKFt2aWRlb0RldmljZUlkLCBhdWRpb0RldmljZUlkXSwgKCkgPT4ge1xuICAgIGlmIChhdXRvU3dpdGNoLnZhbHVlICYmIHN0cmVhbS52YWx1ZSlcbiAgICAgIHJlc3RhcnQoKTtcbiAgfSwgeyBpbW1lZGlhdGU6IHRydWUgfSk7XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgc3RyZWFtLFxuICAgIHN0YXJ0LFxuICAgIHN0b3AsXG4gICAgcmVzdGFydCxcbiAgICB2aWRlb0RldmljZUlkLFxuICAgIGF1ZGlvRGV2aWNlSWQsXG4gICAgZW5hYmxlZCxcbiAgICBhdXRvU3dpdGNoXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZVZNb2RlbChwcm9wcywga2V5LCBlbWl0LCBvcHRpb25zID0ge30pIHtcbiAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZTtcbiAgY29uc3Qge1xuICAgIHBhc3NpdmUgPSBmYWxzZSxcbiAgICBldmVudE5hbWUsXG4gICAgZGVlcCA9IGZhbHNlLFxuICAgIGRlZmF1bHRWYWx1ZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3Qgdm0gPSB2dWVEZW1pLmdldEN1cnJlbnRJbnN0YW5jZSgpO1xuICBjb25zdCBfZW1pdCA9IGVtaXQgfHwgKHZtID09IG51bGwgPyB2b2lkIDAgOiB2bS5lbWl0KSB8fCAoKF9hID0gdm0gPT0gbnVsbCA/IHZvaWQgMCA6IHZtLiRlbWl0KSA9PSBudWxsID8gdm9pZCAwIDogX2EuYmluZCh2bSkpIHx8ICgoX2MgPSAoX2IgPSB2bSA9PSBudWxsID8gdm9pZCAwIDogdm0ucHJveHkpID09IG51bGwgPyB2b2lkIDAgOiBfYi4kZW1pdCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9jLmJpbmQodm0gPT0gbnVsbCA/IHZvaWQgMCA6IHZtLnByb3h5KSk7XG4gIGxldCBldmVudCA9IGV2ZW50TmFtZTtcbiAgaWYgKCFrZXkpIHtcbiAgICBpZiAodnVlRGVtaS5pc1Z1ZTIpIHtcbiAgICAgIGNvbnN0IG1vZGVsT3B0aW9ucyA9IChfZSA9IChfZCA9IHZtID09IG51bGwgPyB2b2lkIDAgOiB2bS5wcm94eSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9kLiRvcHRpb25zKSA9PSBudWxsID8gdm9pZCAwIDogX2UubW9kZWw7XG4gICAgICBrZXkgPSAobW9kZWxPcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBtb2RlbE9wdGlvbnMudmFsdWUpIHx8IFwidmFsdWVcIjtcbiAgICAgIGlmICghZXZlbnROYW1lKVxuICAgICAgICBldmVudCA9IChtb2RlbE9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG1vZGVsT3B0aW9ucy5ldmVudCkgfHwgXCJpbnB1dFwiO1xuICAgIH0gZWxzZSB7XG4gICAgICBrZXkgPSBcIm1vZGVsVmFsdWVcIjtcbiAgICB9XG4gIH1cbiAgZXZlbnQgPSBldmVudE5hbWUgfHwgZXZlbnQgfHwgYHVwZGF0ZToke2tleS50b1N0cmluZygpfWA7XG4gIGNvbnN0IGdldFZhbHVlID0gKCkgPT4gc2hhcmVkLmlzRGVmKHByb3BzW2tleV0pID8gcHJvcHNba2V5XSA6IGRlZmF1bHRWYWx1ZTtcbiAgaWYgKHBhc3NpdmUpIHtcbiAgICBjb25zdCBwcm94eSA9IHZ1ZURlbWkucmVmKGdldFZhbHVlKCkpO1xuICAgIHZ1ZURlbWkud2F0Y2goKCkgPT4gcHJvcHNba2V5XSwgKHYpID0+IHByb3h5LnZhbHVlID0gdik7XG4gICAgdnVlRGVtaS53YXRjaChwcm94eSwgKHYpID0+IHtcbiAgICAgIGlmICh2ICE9PSBwcm9wc1trZXldIHx8IGRlZXApXG4gICAgICAgIF9lbWl0KGV2ZW50LCB2KTtcbiAgICB9LCB7XG4gICAgICBkZWVwXG4gICAgfSk7XG4gICAgcmV0dXJuIHByb3h5O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0KHZhbHVlKSB7XG4gICAgICAgIF9lbWl0KGV2ZW50LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlVk1vZGVscyhwcm9wcywgZW1pdCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHJldCA9IHt9O1xuICBmb3IgKGNvbnN0IGtleSBpbiBwcm9wcylcbiAgICByZXRba2V5XSA9IHVzZVZNb2RlbChwcm9wcywga2V5LCBlbWl0LCBvcHRpb25zKTtcbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gdXNlVmlicmF0ZShvcHRpb25zKSB7XG4gIGNvbnN0IHtcbiAgICBwYXR0ZXJuID0gW10sXG4gICAgaW50ZXJ2YWwgPSAwLFxuICAgIG5hdmlnYXRvciA9IGRlZmF1bHROYXZpZ2F0b3JcbiAgfSA9IG9wdGlvbnMgfHwge307XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gXCJ1bmRlZmluZWRcIiAmJiBcInZpYnJhdGVcIiBpbiBuYXZpZ2F0b3I7XG4gIGNvbnN0IHBhdHRlcm5SZWYgPSB2dWVEZW1pLnJlZihwYXR0ZXJuKTtcbiAgbGV0IGludGVydmFsQ29udHJvbHM7XG4gIGNvbnN0IHZpYnJhdGUgPSAocGF0dGVybjIgPSBwYXR0ZXJuUmVmLnZhbHVlKSA9PiB7XG4gICAgaWYgKGlzU3VwcG9ydGVkKVxuICAgICAgbmF2aWdhdG9yLnZpYnJhdGUocGF0dGVybjIpO1xuICB9O1xuICBjb25zdCBzdG9wID0gKCkgPT4ge1xuICAgIGlmIChpc1N1cHBvcnRlZClcbiAgICAgIG5hdmlnYXRvci52aWJyYXRlKDApO1xuICAgIGludGVydmFsQ29udHJvbHMgPT0gbnVsbCA/IHZvaWQgMCA6IGludGVydmFsQ29udHJvbHMucGF1c2UoKTtcbiAgfTtcbiAgaWYgKGludGVydmFsID4gMCkge1xuICAgIGludGVydmFsQ29udHJvbHMgPSBzaGFyZWQudXNlSW50ZXJ2YWxGbih2aWJyYXRlLCBpbnRlcnZhbCwge1xuICAgICAgaW1tZWRpYXRlOiBmYWxzZSxcbiAgICAgIGltbWVkaWF0ZUNhbGxiYWNrOiBmYWxzZVxuICAgIH0pO1xuICB9XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgcGF0dGVybixcbiAgICBpbnRlcnZhbENvbnRyb2xzLFxuICAgIHZpYnJhdGUsXG4gICAgc3RvcFxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VWaXJ0dWFsTGlzdChsaXN0LCBvcHRpb25zKSB7XG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHZ1ZURlbWkucmVmKCk7XG4gIGNvbnN0IHNpemUgPSB1c2VFbGVtZW50U2l6ZShjb250YWluZXJSZWYpO1xuICBjb25zdCBjdXJyZW50TGlzdCA9IHZ1ZURlbWkucmVmKFtdKTtcbiAgY29uc3Qgc291cmNlID0gdnVlRGVtaS5zaGFsbG93UmVmKGxpc3QpO1xuICBjb25zdCBzdGF0ZSA9IHZ1ZURlbWkucmVmKHsgc3RhcnQ6IDAsIGVuZDogMTAgfSk7XG4gIGNvbnN0IHsgaXRlbUhlaWdodCwgb3ZlcnNjYW4gPSA1IH0gPSBvcHRpb25zO1xuICBjb25zdCBnZXRWaWV3Q2FwYWNpdHkgPSAoY29udGFpbmVySGVpZ2h0KSA9PiB7XG4gICAgaWYgKHR5cGVvZiBpdGVtSGVpZ2h0ID09PSBcIm51bWJlclwiKVxuICAgICAgcmV0dXJuIE1hdGguY2VpbChjb250YWluZXJIZWlnaHQgLyBpdGVtSGVpZ2h0KTtcbiAgICBjb25zdCB7IHN0YXJ0ID0gMCB9ID0gc3RhdGUudmFsdWU7XG4gICAgbGV0IHN1bSA9IDA7XG4gICAgbGV0IGNhcGFjaXR5ID0gMDtcbiAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBzb3VyY2UudmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGhlaWdodCA9IGl0ZW1IZWlnaHQoaSk7XG4gICAgICBzdW0gKz0gaGVpZ2h0O1xuICAgICAgaWYgKHN1bSA+PSBjb250YWluZXJIZWlnaHQpIHtcbiAgICAgICAgY2FwYWNpdHkgPSBpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNhcGFjaXR5IC0gc3RhcnQ7XG4gIH07XG4gIGNvbnN0IGdldE9mZnNldCA9IChzY3JvbGxUb3ApID0+IHtcbiAgICBpZiAodHlwZW9mIGl0ZW1IZWlnaHQgPT09IFwibnVtYmVyXCIpXG4gICAgICByZXR1cm4gTWF0aC5mbG9vcihzY3JvbGxUb3AgLyBpdGVtSGVpZ2h0KSArIDE7XG4gICAgbGV0IHN1bSA9IDA7XG4gICAgbGV0IG9mZnNldCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3VyY2UudmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGhlaWdodCA9IGl0ZW1IZWlnaHQoaSk7XG4gICAgICBzdW0gKz0gaGVpZ2h0O1xuICAgICAgaWYgKHN1bSA+PSBzY3JvbGxUb3ApIHtcbiAgICAgICAgb2Zmc2V0ID0gaTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvZmZzZXQgKyAxO1xuICB9O1xuICBjb25zdCBjYWxjdWxhdGVSYW5nZSA9ICgpID0+IHtcbiAgICBjb25zdCBlbGVtZW50ID0gY29udGFpbmVyUmVmLnZhbHVlO1xuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICBjb25zdCBvZmZzZXQgPSBnZXRPZmZzZXQoZWxlbWVudC5zY3JvbGxUb3ApO1xuICAgICAgY29uc3Qgdmlld0NhcGFjaXR5ID0gZ2V0Vmlld0NhcGFjaXR5KGVsZW1lbnQuY2xpZW50SGVpZ2h0KTtcbiAgICAgIGNvbnN0IGZyb20gPSBvZmZzZXQgLSBvdmVyc2NhbjtcbiAgICAgIGNvbnN0IHRvID0gb2Zmc2V0ICsgdmlld0NhcGFjaXR5ICsgb3ZlcnNjYW47XG4gICAgICBzdGF0ZS52YWx1ZSA9IHtcbiAgICAgICAgc3RhcnQ6IGZyb20gPCAwID8gMCA6IGZyb20sXG4gICAgICAgIGVuZDogdG8gPiBzb3VyY2UudmFsdWUubGVuZ3RoID8gc291cmNlLnZhbHVlLmxlbmd0aCA6IHRvXG4gICAgICB9O1xuICAgICAgY3VycmVudExpc3QudmFsdWUgPSBzb3VyY2UudmFsdWUuc2xpY2Uoc3RhdGUudmFsdWUuc3RhcnQsIHN0YXRlLnZhbHVlLmVuZCkubWFwKChlbGUsIGluZGV4KSA9PiAoe1xuICAgICAgICBkYXRhOiBlbGUsXG4gICAgICAgIGluZGV4OiBpbmRleCArIHN0YXRlLnZhbHVlLnN0YXJ0XG4gICAgICB9KSk7XG4gICAgfVxuICB9O1xuICB2dWVEZW1pLndhdGNoKFtzaXplLndpZHRoLCBzaXplLmhlaWdodCwgbGlzdF0sICgpID0+IHtcbiAgICBjYWxjdWxhdGVSYW5nZSgpO1xuICB9KTtcbiAgY29uc3QgdG90YWxIZWlnaHQgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodHlwZW9mIGl0ZW1IZWlnaHQgPT09IFwibnVtYmVyXCIpXG4gICAgICByZXR1cm4gc291cmNlLnZhbHVlLmxlbmd0aCAqIGl0ZW1IZWlnaHQ7XG4gICAgcmV0dXJuIHNvdXJjZS52YWx1ZS5yZWR1Y2UoKHN1bSwgXywgaW5kZXgpID0+IHN1bSArIGl0ZW1IZWlnaHQoaW5kZXgpLCAwKTtcbiAgfSk7XG4gIGNvbnN0IGdldERpc3RhbmNlVG9wID0gKGluZGV4KSA9PiB7XG4gICAgaWYgKHR5cGVvZiBpdGVtSGVpZ2h0ID09PSBcIm51bWJlclwiKSB7XG4gICAgICBjb25zdCBoZWlnaHQyID0gaW5kZXggKiBpdGVtSGVpZ2h0O1xuICAgICAgcmV0dXJuIGhlaWdodDI7XG4gICAgfVxuICAgIGNvbnN0IGhlaWdodCA9IHNvdXJjZS52YWx1ZS5zbGljZSgwLCBpbmRleCkucmVkdWNlKChzdW0sIF8sIGkpID0+IHN1bSArIGl0ZW1IZWlnaHQoaSksIDApO1xuICAgIHJldHVybiBoZWlnaHQ7XG4gIH07XG4gIGNvbnN0IHNjcm9sbFRvID0gKGluZGV4KSA9PiB7XG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSkge1xuICAgICAgY29udGFpbmVyUmVmLnZhbHVlLnNjcm9sbFRvcCA9IGdldERpc3RhbmNlVG9wKGluZGV4KTtcbiAgICAgIGNhbGN1bGF0ZVJhbmdlKCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBvZmZzZXRUb3AgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IGdldERpc3RhbmNlVG9wKHN0YXRlLnZhbHVlLnN0YXJ0KSk7XG4gIGNvbnN0IHdyYXBwZXJQcm9wcyA9IHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICAgIGhlaWdodDogYCR7dG90YWxIZWlnaHQudmFsdWUgLSBvZmZzZXRUb3AudmFsdWV9cHhgLFxuICAgICAgICBtYXJnaW5Ub3A6IGAke29mZnNldFRvcC52YWx1ZX1weGBcbiAgICAgIH1cbiAgICB9O1xuICB9KTtcbiAgY29uc3QgY29udGFpbmVyU3R5bGUgPSB7IG92ZXJmbG93WTogXCJhdXRvXCIgfTtcbiAgcmV0dXJuIHtcbiAgICBsaXN0OiBjdXJyZW50TGlzdCxcbiAgICBzY3JvbGxUbyxcbiAgICBjb250YWluZXJQcm9wczoge1xuICAgICAgcmVmOiBjb250YWluZXJSZWYsXG4gICAgICBvblNjcm9sbDogKCkgPT4ge1xuICAgICAgICBjYWxjdWxhdGVSYW5nZSgpO1xuICAgICAgfSxcbiAgICAgIHN0eWxlOiBjb250YWluZXJTdHlsZVxuICAgIH0sXG4gICAgd3JhcHBlclByb3BzXG4gIH07XG59XG5cbmNvbnN0IHVzZVdha2VMb2NrID0gKG9wdGlvbnMgPSB7fSkgPT4ge1xuICBjb25zdCB7XG4gICAgbmF2aWdhdG9yID0gZGVmYXVsdE5hdmlnYXRvcixcbiAgICBkb2N1bWVudCA9IGRlZmF1bHREb2N1bWVudFxuICB9ID0gb3B0aW9ucztcbiAgbGV0IHdha2VMb2NrO1xuICBjb25zdCBpc1N1cHBvcnRlZCA9IG5hdmlnYXRvciAmJiBcIndha2VMb2NrXCIgaW4gbmF2aWdhdG9yO1xuICBjb25zdCBpc0FjdGl2ZSA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgYXN5bmMgZnVuY3Rpb24gb25WaXNpYmlsaXR5Q2hhbmdlKCkge1xuICAgIGlmICghaXNTdXBwb3J0ZWQgfHwgIXdha2VMb2NrKVxuICAgICAgcmV0dXJuO1xuICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09IFwidmlzaWJsZVwiKVxuICAgICAgd2FrZUxvY2sgPSBhd2FpdCBuYXZpZ2F0b3Iud2FrZUxvY2sucmVxdWVzdChcInNjcmVlblwiKTtcbiAgICBpc0FjdGl2ZS52YWx1ZSA9ICF3YWtlTG9jay5yZWxlYXNlZDtcbiAgfVxuICBpZiAoZG9jdW1lbnQpXG4gICAgdXNlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCwgXCJ2aXNpYmlsaXR5Y2hhbmdlXCIsIG9uVmlzaWJpbGl0eUNoYW5nZSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICBhc3luYyBmdW5jdGlvbiByZXF1ZXN0KHR5cGUpIHtcbiAgICBpZiAoIWlzU3VwcG9ydGVkKVxuICAgICAgcmV0dXJuO1xuICAgIHdha2VMb2NrID0gYXdhaXQgbmF2aWdhdG9yLndha2VMb2NrLnJlcXVlc3QodHlwZSk7XG4gICAgaXNBY3RpdmUudmFsdWUgPSAhd2FrZUxvY2sucmVsZWFzZWQ7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gcmVsZWFzZSgpIHtcbiAgICBpZiAoIWlzU3VwcG9ydGVkIHx8ICF3YWtlTG9jaylcbiAgICAgIHJldHVybjtcbiAgICBhd2FpdCB3YWtlTG9jay5yZWxlYXNlKCk7XG4gICAgaXNBY3RpdmUudmFsdWUgPSAhd2FrZUxvY2sucmVsZWFzZWQ7XG4gICAgd2FrZUxvY2sgPSBudWxsO1xuICB9XG4gIHJldHVybiB7XG4gICAgaXNTdXBwb3J0ZWQsXG4gICAgaXNBY3RpdmUsXG4gICAgcmVxdWVzdCxcbiAgICByZWxlYXNlXG4gIH07XG59O1xuXG5jb25zdCB1c2VXZWJOb3RpZmljYXRpb24gPSAoZGVmYXVsdE9wdGlvbnMgPSB7fSkgPT4ge1xuICBjb25zdCB7XG4gICAgd2luZG93ID0gZGVmYXVsdFdpbmRvd1xuICB9ID0gZGVmYXVsdE9wdGlvbnM7XG4gIGNvbnN0IGlzU3VwcG9ydGVkID0gISF3aW5kb3cgJiYgXCJOb3RpZmljYXRpb25cIiBpbiB3aW5kb3c7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbiA9IHZ1ZURlbWkucmVmKG51bGwpO1xuICBjb25zdCByZXF1ZXN0UGVybWlzc2lvbiA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWlzU3VwcG9ydGVkKVxuICAgICAgcmV0dXJuO1xuICAgIGlmIChcInBlcm1pc3Npb25cIiBpbiBOb3RpZmljYXRpb24gJiYgTm90aWZpY2F0aW9uLnBlcm1pc3Npb24gIT09IFwiZGVuaWVkXCIpXG4gICAgICBhd2FpdCBOb3RpZmljYXRpb24ucmVxdWVzdFBlcm1pc3Npb24oKTtcbiAgfTtcbiAgY29uc3Qgb25DbGljayA9IHNoYXJlZC5jcmVhdGVFdmVudEhvb2soKTtcbiAgY29uc3Qgb25TaG93ID0gc2hhcmVkLmNyZWF0ZUV2ZW50SG9vaygpO1xuICBjb25zdCBvbkVycm9yID0gc2hhcmVkLmNyZWF0ZUV2ZW50SG9vaygpO1xuICBjb25zdCBvbkNsb3NlID0gc2hhcmVkLmNyZWF0ZUV2ZW50SG9vaygpO1xuICBjb25zdCBzaG93ID0gYXN5bmMgKG92ZXJyaWRlcykgPT4ge1xuICAgIGlmICghaXNTdXBwb3J0ZWQpXG4gICAgICByZXR1cm47XG4gICAgYXdhaXQgcmVxdWVzdFBlcm1pc3Npb24oKTtcbiAgICBjb25zdCBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdE9wdGlvbnMsIG92ZXJyaWRlcyk7XG4gICAgbm90aWZpY2F0aW9uLnZhbHVlID0gbmV3IE5vdGlmaWNhdGlvbihvcHRpb25zLnRpdGxlIHx8IFwiXCIsIG9wdGlvbnMpO1xuICAgIG5vdGlmaWNhdGlvbi52YWx1ZS5vbmNsaWNrID0gKGV2ZW50KSA9PiBvbkNsaWNrLnRyaWdnZXIoZXZlbnQpO1xuICAgIG5vdGlmaWNhdGlvbi52YWx1ZS5vbnNob3cgPSAoZXZlbnQpID0+IG9uU2hvdy50cmlnZ2VyKGV2ZW50KTtcbiAgICBub3RpZmljYXRpb24udmFsdWUub25lcnJvciA9IChldmVudCkgPT4gb25FcnJvci50cmlnZ2VyKGV2ZW50KTtcbiAgICBub3RpZmljYXRpb24udmFsdWUub25jbG9zZSA9IChldmVudCkgPT4gb25DbG9zZS50cmlnZ2VyKGV2ZW50KTtcbiAgICByZXR1cm4gbm90aWZpY2F0aW9uLnZhbHVlO1xuICB9O1xuICBjb25zdCBjbG9zZSA9ICgpID0+IHtcbiAgICBpZiAobm90aWZpY2F0aW9uLnZhbHVlKVxuICAgICAgbm90aWZpY2F0aW9uLnZhbHVlLmNsb3NlKCk7XG4gICAgbm90aWZpY2F0aW9uLnZhbHVlID0gbnVsbDtcbiAgfTtcbiAgc2hhcmVkLnRyeU9uTW91bnRlZChhc3luYyAoKSA9PiB7XG4gICAgaWYgKGlzU3VwcG9ydGVkKVxuICAgICAgYXdhaXQgcmVxdWVzdFBlcm1pc3Npb24oKTtcbiAgfSk7XG4gIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZShjbG9zZSk7XG4gIGlmIChpc1N1cHBvcnRlZCAmJiB3aW5kb3cpIHtcbiAgICBjb25zdCBkb2N1bWVudCA9IHdpbmRvdy5kb2N1bWVudDtcbiAgICB1c2VFdmVudExpc3RlbmVyKGRvY3VtZW50LCBcInZpc2liaWxpdHljaGFuZ2VcIiwgKGUpID0+IHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGlmIChkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09IFwidmlzaWJsZVwiKSB7XG4gICAgICAgIGNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBpc1N1cHBvcnRlZCxcbiAgICBub3RpZmljYXRpb24sXG4gICAgc2hvdyxcbiAgICBjbG9zZSxcbiAgICBvbkNsaWNrLFxuICAgIG9uU2hvdyxcbiAgICBvbkVycm9yLFxuICAgIG9uQ2xvc2VcbiAgfTtcbn07XG5cbmZ1bmN0aW9uIHJlc29sdmVOZXN0ZWRPcHRpb25zKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHRydWUpXG4gICAgcmV0dXJuIHt9O1xuICByZXR1cm4gb3B0aW9ucztcbn1cbmZ1bmN0aW9uIHVzZVdlYlNvY2tldCh1cmwsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgb25Db25uZWN0ZWQsXG4gICAgb25EaXNjb25uZWN0ZWQsXG4gICAgb25FcnJvcixcbiAgICBvbk1lc3NhZ2UsXG4gICAgaW1tZWRpYXRlID0gdHJ1ZSxcbiAgICBhdXRvQ2xvc2UgPSB0cnVlLFxuICAgIHByb3RvY29scyA9IFtdXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBkYXRhID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGNvbnN0IHN0YXR1cyA9IHZ1ZURlbWkucmVmKFwiQ09OTkVDVElOR1wiKTtcbiAgY29uc3Qgd3NSZWYgPSB2dWVEZW1pLnJlZigpO1xuICBsZXQgaGVhcnRiZWF0UGF1c2U7XG4gIGxldCBoZWFydGJlYXRSZXN1bWU7XG4gIGxldCBleHBsaWNpdGx5Q2xvc2VkID0gZmFsc2U7XG4gIGxldCByZXRyaWVkID0gMDtcbiAgbGV0IGJ1ZmZlcmVkRGF0YSA9IFtdO1xuICBjb25zdCBjbG9zZSA9IChjb2RlID0gMWUzLCByZWFzb24pID0+IHtcbiAgICBpZiAoIXdzUmVmLnZhbHVlKVxuICAgICAgcmV0dXJuO1xuICAgIGV4cGxpY2l0bHlDbG9zZWQgPSB0cnVlO1xuICAgIGhlYXJ0YmVhdFBhdXNlID09IG51bGwgPyB2b2lkIDAgOiBoZWFydGJlYXRQYXVzZSgpO1xuICAgIHdzUmVmLnZhbHVlLmNsb3NlKGNvZGUsIHJlYXNvbik7XG4gIH07XG4gIGNvbnN0IF9zZW5kQnVmZmVyID0gKCkgPT4ge1xuICAgIGlmIChidWZmZXJlZERhdGEubGVuZ3RoICYmIHdzUmVmLnZhbHVlICYmIHN0YXR1cy52YWx1ZSA9PT0gXCJPUEVOXCIpIHtcbiAgICAgIGZvciAoY29uc3QgYnVmZmVyIG9mIGJ1ZmZlcmVkRGF0YSlcbiAgICAgICAgd3NSZWYudmFsdWUuc2VuZChidWZmZXIpO1xuICAgICAgYnVmZmVyZWREYXRhID0gW107XG4gICAgfVxuICB9O1xuICBjb25zdCBzZW5kID0gKGRhdGEyLCB1c2VCdWZmZXIgPSB0cnVlKSA9PiB7XG4gICAgaWYgKCF3c1JlZi52YWx1ZSB8fCBzdGF0dXMudmFsdWUgIT09IFwiT1BFTlwiKSB7XG4gICAgICBpZiAodXNlQnVmZmVyKVxuICAgICAgICBidWZmZXJlZERhdGEucHVzaChkYXRhMik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIF9zZW5kQnVmZmVyKCk7XG4gICAgd3NSZWYudmFsdWUuc2VuZChkYXRhMik7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIGNvbnN0IF9pbml0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHdzID0gbmV3IFdlYlNvY2tldCh1cmwsIHByb3RvY29scyk7XG4gICAgd3NSZWYudmFsdWUgPSB3cztcbiAgICBzdGF0dXMudmFsdWUgPSBcIkNPTk5FQ1RJTkdcIjtcbiAgICBleHBsaWNpdGx5Q2xvc2VkID0gZmFsc2U7XG4gICAgd3Mub25vcGVuID0gKCkgPT4ge1xuICAgICAgc3RhdHVzLnZhbHVlID0gXCJPUEVOXCI7XG4gICAgICBvbkNvbm5lY3RlZCA9PSBudWxsID8gdm9pZCAwIDogb25Db25uZWN0ZWQod3MpO1xuICAgICAgaGVhcnRiZWF0UmVzdW1lID09IG51bGwgPyB2b2lkIDAgOiBoZWFydGJlYXRSZXN1bWUoKTtcbiAgICAgIF9zZW5kQnVmZmVyKCk7XG4gICAgfTtcbiAgICB3cy5vbmNsb3NlID0gKGV2KSA9PiB7XG4gICAgICBzdGF0dXMudmFsdWUgPSBcIkNMT1NFRFwiO1xuICAgICAgd3NSZWYudmFsdWUgPSB2b2lkIDA7XG4gICAgICBvbkRpc2Nvbm5lY3RlZCA9PSBudWxsID8gdm9pZCAwIDogb25EaXNjb25uZWN0ZWQod3MsIGV2KTtcbiAgICAgIGlmICghZXhwbGljaXRseUNsb3NlZCAmJiBvcHRpb25zLmF1dG9SZWNvbm5lY3QpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHJldHJpZXMgPSAtMSxcbiAgICAgICAgICBkZWxheSA9IDFlMyxcbiAgICAgICAgICBvbkZhaWxlZFxuICAgICAgICB9ID0gcmVzb2x2ZU5lc3RlZE9wdGlvbnMob3B0aW9ucy5hdXRvUmVjb25uZWN0KTtcbiAgICAgICAgcmV0cmllZCArPSAxO1xuICAgICAgICBpZiAodHlwZW9mIHJldHJpZXMgPT09IFwibnVtYmVyXCIgJiYgKHJldHJpZXMgPCAwIHx8IHJldHJpZWQgPCByZXRyaWVzKSlcbiAgICAgICAgICBzZXRUaW1lb3V0KF9pbml0LCBkZWxheSk7XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiByZXRyaWVzID09PSBcImZ1bmN0aW9uXCIgJiYgcmV0cmllcygpKVxuICAgICAgICAgIHNldFRpbWVvdXQoX2luaXQsIGRlbGF5KTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIG9uRmFpbGVkID09IG51bGwgPyB2b2lkIDAgOiBvbkZhaWxlZCgpO1xuICAgICAgfVxuICAgIH07XG4gICAgd3Mub25lcnJvciA9IChlKSA9PiB7XG4gICAgICBvbkVycm9yID09IG51bGwgPyB2b2lkIDAgOiBvbkVycm9yKHdzLCBlKTtcbiAgICB9O1xuICAgIHdzLm9ubWVzc2FnZSA9IChlKSA9PiB7XG4gICAgICBkYXRhLnZhbHVlID0gZS5kYXRhO1xuICAgICAgb25NZXNzYWdlID09IG51bGwgPyB2b2lkIDAgOiBvbk1lc3NhZ2Uod3MsIGUpO1xuICAgIH07XG4gIH07XG4gIGlmIChvcHRpb25zLmhlYXJ0YmVhdCkge1xuICAgIGNvbnN0IHtcbiAgICAgIG1lc3NhZ2UgPSBcInBpbmdcIixcbiAgICAgIGludGVydmFsID0gMWUzXG4gICAgfSA9IHJlc29sdmVOZXN0ZWRPcHRpb25zKG9wdGlvbnMuaGVhcnRiZWF0KTtcbiAgICBjb25zdCB7IHBhdXNlLCByZXN1bWUgfSA9IHNoYXJlZC51c2VJbnRlcnZhbEZuKCgpID0+IHNlbmQobWVzc2FnZSwgZmFsc2UpLCBpbnRlcnZhbCwgeyBpbW1lZGlhdGU6IGZhbHNlIH0pO1xuICAgIGhlYXJ0YmVhdFBhdXNlID0gcGF1c2U7XG4gICAgaGVhcnRiZWF0UmVzdW1lID0gcmVzdW1lO1xuICB9XG4gIGlmIChpbW1lZGlhdGUpXG4gICAgX2luaXQoKTtcbiAgaWYgKGF1dG9DbG9zZSkge1xuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcImJlZm9yZXVubG9hZFwiLCAoKSA9PiBjbG9zZSgpKTtcbiAgICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2UoY2xvc2UpO1xuICB9XG4gIGNvbnN0IG9wZW4gPSAoKSA9PiB7XG4gICAgY2xvc2UoKTtcbiAgICByZXRyaWVkID0gMDtcbiAgICBfaW5pdCgpO1xuICB9O1xuICByZXR1cm4ge1xuICAgIGRhdGEsXG4gICAgc3RhdHVzLFxuICAgIGNsb3NlLFxuICAgIHNlbmQsXG4gICAgb3BlbixcbiAgICB3czogd3NSZWZcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXNlV2ViV29ya2VyKHVybCwgd29ya2VyT3B0aW9ucywgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBkYXRhID0gdnVlRGVtaS5yZWYobnVsbCk7XG4gIGNvbnN0IHdvcmtlciA9IHZ1ZURlbWkuc2hhbGxvd1JlZigpO1xuICBjb25zdCBwb3N0ID0gZnVuY3Rpb24gcG9zdDIodmFsKSB7XG4gICAgaWYgKCF3b3JrZXIudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgd29ya2VyLnZhbHVlLnBvc3RNZXNzYWdlKHZhbCk7XG4gIH07XG4gIGNvbnN0IHRlcm1pbmF0ZSA9IGZ1bmN0aW9uIHRlcm1pbmF0ZTIoKSB7XG4gICAgaWYgKCF3b3JrZXIudmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgd29ya2VyLnZhbHVlLnRlcm1pbmF0ZSgpO1xuICB9O1xuICBpZiAod2luZG93KSB7XG4gICAgd29ya2VyLnZhbHVlID0gbmV3IFdvcmtlcih1cmwsIHdvcmtlck9wdGlvbnMpO1xuICAgIHdvcmtlci52YWx1ZS5vbm1lc3NhZ2UgPSAoZSkgPT4ge1xuICAgICAgZGF0YS52YWx1ZSA9IGUuZGF0YTtcbiAgICB9O1xuICAgIHNoYXJlZC50cnlPblNjb3BlRGlzcG9zZSgoKSA9PiB7XG4gICAgICBpZiAod29ya2VyLnZhbHVlKVxuICAgICAgICB3b3JrZXIudmFsdWUudGVybWluYXRlKCk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBkYXRhLFxuICAgIHBvc3QsXG4gICAgdGVybWluYXRlLFxuICAgIHdvcmtlclxuICB9O1xufVxuXG5jb25zdCBqb2JSdW5uZXIgPSAodXNlckZ1bmMpID0+IChlKSA9PiB7XG4gIGNvbnN0IHVzZXJGdW5jQXJncyA9IGUuZGF0YVswXTtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1c2VyRnVuYy5hcHBseSh2b2lkIDAsIHVzZXJGdW5jQXJncykpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgIHBvc3RNZXNzYWdlKFtcIlNVQ0NFU1NcIiwgcmVzdWx0XSk7XG4gIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgIHBvc3RNZXNzYWdlKFtcIkVSUk9SXCIsIGVycm9yXSk7XG4gIH0pO1xufTtcblxuY29uc3QgZGVwc1BhcnNlciA9IChkZXBzKSA9PiB7XG4gIGlmIChkZXBzLmxlbmd0aCA9PT0gMClcbiAgICByZXR1cm4gXCJcIjtcbiAgY29uc3QgZGVwc1N0cmluZyA9IGRlcHMubWFwKChkZXApID0+IGAnJHtkZXB9J2ApLnRvU3RyaW5nKCk7XG4gIHJldHVybiBgaW1wb3J0U2NyaXB0cygke2RlcHNTdHJpbmd9KWA7XG59O1xuXG5jb25zdCBjcmVhdGVXb3JrZXJCbG9iVXJsID0gKGZuLCBkZXBzKSA9PiB7XG4gIGNvbnN0IGJsb2JDb2RlID0gYCR7ZGVwc1BhcnNlcihkZXBzKX07IG9ubWVzc2FnZT0oJHtqb2JSdW5uZXJ9KSgke2ZufSlgO1xuICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2Jsb2JDb2RlXSwgeyB0eXBlOiBcInRleHQvamF2YXNjcmlwdFwiIH0pO1xuICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICByZXR1cm4gdXJsO1xufTtcblxuY29uc3QgdXNlV2ViV29ya2VyRm4gPSAoZm4sIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBjb25zdCB7XG4gICAgZGVwZW5kZW5jaWVzID0gW10sXG4gICAgdGltZW91dCxcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCB3b3JrZXIgPSB2dWVEZW1pLnJlZigpO1xuICBjb25zdCB3b3JrZXJTdGF0dXMgPSB2dWVEZW1pLnJlZihcIlBFTkRJTkdcIik7XG4gIGNvbnN0IHByb21pc2UgPSB2dWVEZW1pLnJlZih7fSk7XG4gIGNvbnN0IHRpbWVvdXRJZCA9IHZ1ZURlbWkucmVmKCk7XG4gIGNvbnN0IHdvcmtlclRlcm1pbmF0ZSA9IChzdGF0dXMgPSBcIlBFTkRJTkdcIikgPT4ge1xuICAgIGlmICh3b3JrZXIudmFsdWUgJiYgd29ya2VyLnZhbHVlLl91cmwgJiYgd2luZG93KSB7XG4gICAgICB3b3JrZXIudmFsdWUudGVybWluYXRlKCk7XG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHdvcmtlci52YWx1ZS5fdXJsKTtcbiAgICAgIHByb21pc2UudmFsdWUgPSB7fTtcbiAgICAgIHdvcmtlci52YWx1ZSA9IHZvaWQgMDtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGltZW91dElkLnZhbHVlKTtcbiAgICAgIHdvcmtlclN0YXR1cy52YWx1ZSA9IHN0YXR1cztcbiAgICB9XG4gIH07XG4gIHdvcmtlclRlcm1pbmF0ZSgpO1xuICBzaGFyZWQudHJ5T25TY29wZURpc3Bvc2Uod29ya2VyVGVybWluYXRlKTtcbiAgY29uc3QgZ2VuZXJhdGVXb3JrZXIgPSAoKSA9PiB7XG4gICAgY29uc3QgYmxvYlVybCA9IGNyZWF0ZVdvcmtlckJsb2JVcmwoZm4sIGRlcGVuZGVuY2llcyk7XG4gICAgY29uc3QgbmV3V29ya2VyID0gbmV3IFdvcmtlcihibG9iVXJsKTtcbiAgICBuZXdXb3JrZXIuX3VybCA9IGJsb2JVcmw7XG4gICAgbmV3V29ya2VyLm9ubWVzc2FnZSA9IChlKSA9PiB7XG4gICAgICBjb25zdCB7IHJlc29sdmUgPSAoKSA9PiB7XG4gICAgICB9LCByZWplY3QgPSAoKSA9PiB7XG4gICAgICB9IH0gPSBwcm9taXNlLnZhbHVlO1xuICAgICAgY29uc3QgW3N0YXR1cywgcmVzdWx0XSA9IGUuZGF0YTtcbiAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICAgIGNhc2UgXCJTVUNDRVNTXCI6XG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgIHdvcmtlclRlcm1pbmF0ZShzdGF0dXMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJlamVjdChyZXN1bHQpO1xuICAgICAgICAgIHdvcmtlclRlcm1pbmF0ZShcIkVSUk9SXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH07XG4gICAgbmV3V29ya2VyLm9uZXJyb3IgPSAoZSkgPT4ge1xuICAgICAgY29uc3QgeyByZWplY3QgPSAoKSA9PiB7XG4gICAgICB9IH0gPSBwcm9taXNlLnZhbHVlO1xuICAgICAgcmVqZWN0KGUpO1xuICAgICAgd29ya2VyVGVybWluYXRlKFwiRVJST1JcIik7XG4gICAgfTtcbiAgICBpZiAodGltZW91dCkge1xuICAgICAgdGltZW91dElkLnZhbHVlID0gc2V0VGltZW91dCgoKSA9PiB3b3JrZXJUZXJtaW5hdGUoXCJUSU1FT1VUX0VYUElSRURcIiksIHRpbWVvdXQpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3V29ya2VyO1xuICB9O1xuICBjb25zdCBjYWxsV29ya2VyID0gKC4uLmZuQXJncykgPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHByb21pc2UudmFsdWUgPSB7XG4gICAgICByZXNvbHZlLFxuICAgICAgcmVqZWN0XG4gICAgfTtcbiAgICB3b3JrZXIudmFsdWUgJiYgd29ya2VyLnZhbHVlLnBvc3RNZXNzYWdlKFtbLi4uZm5BcmdzXV0pO1xuICAgIHdvcmtlclN0YXR1cy52YWx1ZSA9IFwiUlVOTklOR1wiO1xuICB9KTtcbiAgY29uc3Qgd29ya2VyRm4gPSAoLi4uZm5BcmdzKSA9PiB7XG4gICAgaWYgKHdvcmtlclN0YXR1cy52YWx1ZSA9PT0gXCJSVU5OSU5HXCIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJbdXNlV2ViV29ya2VyRm5dIFlvdSBjYW4gb25seSBydW4gb25lIGluc3RhbmNlIG9mIHRoZSB3b3JrZXIgYXQgYSB0aW1lLlwiKTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIH1cbiAgICB3b3JrZXIudmFsdWUgPSBnZW5lcmF0ZVdvcmtlcigpO1xuICAgIHJldHVybiBjYWxsV29ya2VyKC4uLmZuQXJncyk7XG4gIH07XG4gIHJldHVybiB7XG4gICAgd29ya2VyRm4sXG4gICAgd29ya2VyU3RhdHVzLFxuICAgIHdvcmtlclRlcm1pbmF0ZVxuICB9O1xufTtcblxuZnVuY3Rpb24gdXNlV2luZG93Rm9jdXMoeyB3aW5kb3cgPSBkZWZhdWx0V2luZG93IH0gPSB7fSkge1xuICBpZiAoIXdpbmRvdylcbiAgICByZXR1cm4gdnVlRGVtaS5yZWYoZmFsc2UpO1xuICBjb25zdCBmb2N1c2VkID0gdnVlRGVtaS5yZWYod2luZG93LmRvY3VtZW50Lmhhc0ZvY3VzKCkpO1xuICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJibHVyXCIsICgpID0+IHtcbiAgICBmb2N1c2VkLnZhbHVlID0gZmFsc2U7XG4gIH0pO1xuICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJmb2N1c1wiLCAoKSA9PiB7XG4gICAgZm9jdXNlZC52YWx1ZSA9IHRydWU7XG4gIH0pO1xuICByZXR1cm4gZm9jdXNlZDtcbn1cblxuZnVuY3Rpb24gdXNlV2luZG93U2Nyb2xsKHsgd2luZG93ID0gZGVmYXVsdFdpbmRvdyB9ID0ge30pIHtcbiAgaWYgKCF3aW5kb3cpIHtcbiAgICByZXR1cm4ge1xuICAgICAgeDogdnVlRGVtaS5yZWYoMCksXG4gICAgICB5OiB2dWVEZW1pLnJlZigwKVxuICAgIH07XG4gIH1cbiAgY29uc3QgeCA9IHZ1ZURlbWkucmVmKHdpbmRvdy5wYWdlWE9mZnNldCk7XG4gIGNvbnN0IHkgPSB2dWVEZW1pLnJlZih3aW5kb3cucGFnZVlPZmZzZXQpO1xuICB1c2VFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsICgpID0+IHtcbiAgICB4LnZhbHVlID0gd2luZG93LnBhZ2VYT2Zmc2V0O1xuICAgIHkudmFsdWUgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gIH0sIHtcbiAgICBjYXB0dXJlOiBmYWxzZSxcbiAgICBwYXNzaXZlOiB0cnVlXG4gIH0pO1xuICByZXR1cm4geyB4LCB5IH07XG59XG5cbmZ1bmN0aW9uIHVzZVdpbmRvd1NpemUob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB3aW5kb3cgPSBkZWZhdWx0V2luZG93LFxuICAgIGluaXRpYWxXaWR0aCA9IEluZmluaXR5LFxuICAgIGluaXRpYWxIZWlnaHQgPSBJbmZpbml0eSxcbiAgICBsaXN0ZW5PcmllbnRhdGlvbiA9IHRydWVcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHdpZHRoID0gdnVlRGVtaS5yZWYoaW5pdGlhbFdpZHRoKTtcbiAgY29uc3QgaGVpZ2h0ID0gdnVlRGVtaS5yZWYoaW5pdGlhbEhlaWdodCk7XG4gIGNvbnN0IHVwZGF0ZSA9ICgpID0+IHtcbiAgICBpZiAod2luZG93KSB7XG4gICAgICB3aWR0aC52YWx1ZSA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgaGVpZ2h0LnZhbHVlID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgIH1cbiAgfTtcbiAgdXBkYXRlKCk7XG4gIHNoYXJlZC50cnlPbk1vdW50ZWQodXBkYXRlKTtcbiAgdXNlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB1cGRhdGUsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgaWYgKGxpc3Rlbk9yaWVudGF0aW9uKVxuICAgIHVzZUV2ZW50TGlzdGVuZXIoXCJvcmllbnRhdGlvbmNoYW5nZVwiLCB1cGRhdGUsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgcmV0dXJuIHsgd2lkdGgsIGhlaWdodCB9O1xufVxuXG5leHBvcnRzLkRlZmF1bHRNYWdpY0tleXNBbGlhc01hcCA9IERlZmF1bHRNYWdpY0tleXNBbGlhc01hcDtcbmV4cG9ydHMuU3RvcmFnZVNlcmlhbGl6ZXJzID0gU3RvcmFnZVNlcmlhbGl6ZXJzO1xuZXhwb3J0cy5UcmFuc2l0aW9uUHJlc2V0cyA9IFRyYW5zaXRpb25QcmVzZXRzO1xuZXhwb3J0cy5hc3luY0NvbXB1dGVkID0gY29tcHV0ZWRBc3luYztcbmV4cG9ydHMuYnJlYWtwb2ludHNBbnREZXNpZ24gPSBicmVha3BvaW50c0FudERlc2lnbjtcbmV4cG9ydHMuYnJlYWtwb2ludHNCb290c3RyYXBWNSA9IGJyZWFrcG9pbnRzQm9vdHN0cmFwVjU7XG5leHBvcnRzLmJyZWFrcG9pbnRzUXVhc2FyID0gYnJlYWtwb2ludHNRdWFzYXI7XG5leHBvcnRzLmJyZWFrcG9pbnRzU2VtYXRpYyA9IGJyZWFrcG9pbnRzU2VtYXRpYztcbmV4cG9ydHMuYnJlYWtwb2ludHNUYWlsd2luZCA9IGJyZWFrcG9pbnRzVGFpbHdpbmQ7XG5leHBvcnRzLmJyZWFrcG9pbnRzVnVldGlmeSA9IGJyZWFrcG9pbnRzVnVldGlmeTtcbmV4cG9ydHMuY29tcHV0ZWRBc3luYyA9IGNvbXB1dGVkQXN5bmM7XG5leHBvcnRzLmNvbXB1dGVkSW5qZWN0ID0gY29tcHV0ZWRJbmplY3Q7XG5leHBvcnRzLmNyZWF0ZUZldGNoID0gY3JlYXRlRmV0Y2g7XG5leHBvcnRzLmNyZWF0ZVVucmVmRm4gPSBjcmVhdGVVbnJlZkZuO1xuZXhwb3J0cy5kZWZhdWx0RG9jdW1lbnQgPSBkZWZhdWx0RG9jdW1lbnQ7XG5leHBvcnRzLmRlZmF1bHRMb2NhdGlvbiA9IGRlZmF1bHRMb2NhdGlvbjtcbmV4cG9ydHMuZGVmYXVsdE5hdmlnYXRvciA9IGRlZmF1bHROYXZpZ2F0b3I7XG5leHBvcnRzLmRlZmF1bHRXaW5kb3cgPSBkZWZhdWx0V2luZG93O1xuZXhwb3J0cy5nZXRTU1JIYW5kbGVyID0gZ2V0U1NSSGFuZGxlcjtcbmV4cG9ydHMubWFwR2FtZXBhZFRvWGJveDM2MENvbnRyb2xsZXIgPSBtYXBHYW1lcGFkVG9YYm94MzYwQ29udHJvbGxlcjtcbmV4cG9ydHMub25DbGlja091dHNpZGUgPSBvbkNsaWNrT3V0c2lkZTtcbmV4cG9ydHMub25LZXlEb3duID0gb25LZXlEb3duO1xuZXhwb3J0cy5vbktleVByZXNzZWQgPSBvbktleVByZXNzZWQ7XG5leHBvcnRzLm9uS2V5U3Ryb2tlID0gb25LZXlTdHJva2U7XG5leHBvcnRzLm9uS2V5VXAgPSBvbktleVVwO1xuZXhwb3J0cy5vbkxvbmdQcmVzcyA9IG9uTG9uZ1ByZXNzO1xuZXhwb3J0cy5vblN0YXJ0VHlwaW5nID0gb25TdGFydFR5cGluZztcbmV4cG9ydHMuc2V0U1NSSGFuZGxlciA9IHNldFNTUkhhbmRsZXI7XG5leHBvcnRzLnRlbXBsYXRlUmVmID0gdGVtcGxhdGVSZWY7XG5leHBvcnRzLnVucmVmRWxlbWVudCA9IHVucmVmRWxlbWVudDtcbmV4cG9ydHMudXNlQWN0aXZlRWxlbWVudCA9IHVzZUFjdGl2ZUVsZW1lbnQ7XG5leHBvcnRzLnVzZUFzeW5jUXVldWUgPSB1c2VBc3luY1F1ZXVlO1xuZXhwb3J0cy51c2VBc3luY1N0YXRlID0gdXNlQXN5bmNTdGF0ZTtcbmV4cG9ydHMudXNlQmFzZTY0ID0gdXNlQmFzZTY0O1xuZXhwb3J0cy51c2VCYXR0ZXJ5ID0gdXNlQmF0dGVyeTtcbmV4cG9ydHMudXNlQmx1ZXRvb3RoID0gdXNlQmx1ZXRvb3RoO1xuZXhwb3J0cy51c2VCcmVha3BvaW50cyA9IHVzZUJyZWFrcG9pbnRzO1xuZXhwb3J0cy51c2VCcm9hZGNhc3RDaGFubmVsID0gdXNlQnJvYWRjYXN0Q2hhbm5lbDtcbmV4cG9ydHMudXNlQnJvd3NlckxvY2F0aW9uID0gdXNlQnJvd3NlckxvY2F0aW9uO1xuZXhwb3J0cy51c2VDYWNoZWQgPSB1c2VDYWNoZWQ7XG5leHBvcnRzLnVzZUNsYW1wID0gdXNlQ2xhbXA7XG5leHBvcnRzLnVzZUNsaXBib2FyZCA9IHVzZUNsaXBib2FyZDtcbmV4cG9ydHMudXNlQ29sb3JNb2RlID0gdXNlQ29sb3JNb2RlO1xuZXhwb3J0cy51c2VDb25maXJtRGlhbG9nID0gdXNlQ29uZmlybURpYWxvZztcbmV4cG9ydHMudXNlQ3NzVmFyID0gdXNlQ3NzVmFyO1xuZXhwb3J0cy51c2VDdXJyZW50RWxlbWVudCA9IHVzZUN1cnJlbnRFbGVtZW50O1xuZXhwb3J0cy51c2VDeWNsZUxpc3QgPSB1c2VDeWNsZUxpc3Q7XG5leHBvcnRzLnVzZURhcmsgPSB1c2VEYXJrO1xuZXhwb3J0cy51c2VEZWJvdW5jZWRSZWZIaXN0b3J5ID0gdXNlRGVib3VuY2VkUmVmSGlzdG9yeTtcbmV4cG9ydHMudXNlRGV2aWNlTW90aW9uID0gdXNlRGV2aWNlTW90aW9uO1xuZXhwb3J0cy51c2VEZXZpY2VPcmllbnRhdGlvbiA9IHVzZURldmljZU9yaWVudGF0aW9uO1xuZXhwb3J0cy51c2VEZXZpY2VQaXhlbFJhdGlvID0gdXNlRGV2aWNlUGl4ZWxSYXRpbztcbmV4cG9ydHMudXNlRGV2aWNlc0xpc3QgPSB1c2VEZXZpY2VzTGlzdDtcbmV4cG9ydHMudXNlRGlzcGxheU1lZGlhID0gdXNlRGlzcGxheU1lZGlhO1xuZXhwb3J0cy51c2VEb2N1bWVudFZpc2liaWxpdHkgPSB1c2VEb2N1bWVudFZpc2liaWxpdHk7XG5leHBvcnRzLnVzZURyYWdnYWJsZSA9IHVzZURyYWdnYWJsZTtcbmV4cG9ydHMudXNlRHJvcFpvbmUgPSB1c2VEcm9wWm9uZTtcbmV4cG9ydHMudXNlRWxlbWVudEJvdW5kaW5nID0gdXNlRWxlbWVudEJvdW5kaW5nO1xuZXhwb3J0cy51c2VFbGVtZW50QnlQb2ludCA9IHVzZUVsZW1lbnRCeVBvaW50O1xuZXhwb3J0cy51c2VFbGVtZW50SG92ZXIgPSB1c2VFbGVtZW50SG92ZXI7XG5leHBvcnRzLnVzZUVsZW1lbnRTaXplID0gdXNlRWxlbWVudFNpemU7XG5leHBvcnRzLnVzZUVsZW1lbnRWaXNpYmlsaXR5ID0gdXNlRWxlbWVudFZpc2liaWxpdHk7XG5leHBvcnRzLnVzZUV2ZW50QnVzID0gdXNlRXZlbnRCdXM7XG5leHBvcnRzLnVzZUV2ZW50TGlzdGVuZXIgPSB1c2VFdmVudExpc3RlbmVyO1xuZXhwb3J0cy51c2VFdmVudFNvdXJjZSA9IHVzZUV2ZW50U291cmNlO1xuZXhwb3J0cy51c2VFeWVEcm9wcGVyID0gdXNlRXllRHJvcHBlcjtcbmV4cG9ydHMudXNlRmF2aWNvbiA9IHVzZUZhdmljb247XG5leHBvcnRzLnVzZUZldGNoID0gdXNlRmV0Y2g7XG5leHBvcnRzLnVzZUZpbGVEaWFsb2cgPSB1c2VGaWxlRGlhbG9nO1xuZXhwb3J0cy51c2VGaWxlU3lzdGVtQWNjZXNzID0gdXNlRmlsZVN5c3RlbUFjY2VzcztcbmV4cG9ydHMudXNlRm9jdXMgPSB1c2VGb2N1cztcbmV4cG9ydHMudXNlRm9jdXNXaXRoaW4gPSB1c2VGb2N1c1dpdGhpbjtcbmV4cG9ydHMudXNlRnBzID0gdXNlRnBzO1xuZXhwb3J0cy51c2VGdWxsc2NyZWVuID0gdXNlRnVsbHNjcmVlbjtcbmV4cG9ydHMudXNlR2FtZXBhZCA9IHVzZUdhbWVwYWQ7XG5leHBvcnRzLnVzZUdlb2xvY2F0aW9uID0gdXNlR2VvbG9jYXRpb247XG5leHBvcnRzLnVzZUlkbGUgPSB1c2VJZGxlO1xuZXhwb3J0cy51c2VJbWFnZSA9IHVzZUltYWdlO1xuZXhwb3J0cy51c2VJbmZpbml0ZVNjcm9sbCA9IHVzZUluZmluaXRlU2Nyb2xsO1xuZXhwb3J0cy51c2VJbnRlcnNlY3Rpb25PYnNlcnZlciA9IHVzZUludGVyc2VjdGlvbk9ic2VydmVyO1xuZXhwb3J0cy51c2VLZXlNb2RpZmllciA9IHVzZUtleU1vZGlmaWVyO1xuZXhwb3J0cy51c2VMb2NhbFN0b3JhZ2UgPSB1c2VMb2NhbFN0b3JhZ2U7XG5leHBvcnRzLnVzZU1hZ2ljS2V5cyA9IHVzZU1hZ2ljS2V5cztcbmV4cG9ydHMudXNlTWFudWFsUmVmSGlzdG9yeSA9IHVzZU1hbnVhbFJlZkhpc3Rvcnk7XG5leHBvcnRzLnVzZU1lZGlhQ29udHJvbHMgPSB1c2VNZWRpYUNvbnRyb2xzO1xuZXhwb3J0cy51c2VNZWRpYVF1ZXJ5ID0gdXNlTWVkaWFRdWVyeTtcbmV4cG9ydHMudXNlTWVtb2l6ZSA9IHVzZU1lbW9pemU7XG5leHBvcnRzLnVzZU1lbW9yeSA9IHVzZU1lbW9yeTtcbmV4cG9ydHMudXNlTW91bnRlZCA9IHVzZU1vdW50ZWQ7XG5leHBvcnRzLnVzZU1vdXNlID0gdXNlTW91c2U7XG5leHBvcnRzLnVzZU1vdXNlSW5FbGVtZW50ID0gdXNlTW91c2VJbkVsZW1lbnQ7XG5leHBvcnRzLnVzZU1vdXNlUHJlc3NlZCA9IHVzZU1vdXNlUHJlc3NlZDtcbmV4cG9ydHMudXNlTXV0YXRpb25PYnNlcnZlciA9IHVzZU11dGF0aW9uT2JzZXJ2ZXI7XG5leHBvcnRzLnVzZU5hdmlnYXRvckxhbmd1YWdlID0gdXNlTmF2aWdhdG9yTGFuZ3VhZ2U7XG5leHBvcnRzLnVzZU5ldHdvcmsgPSB1c2VOZXR3b3JrO1xuZXhwb3J0cy51c2VOb3cgPSB1c2VOb3c7XG5leHBvcnRzLnVzZU9iamVjdFVybCA9IHVzZU9iamVjdFVybDtcbmV4cG9ydHMudXNlT2Zmc2V0UGFnaW5hdGlvbiA9IHVzZU9mZnNldFBhZ2luYXRpb247XG5leHBvcnRzLnVzZU9ubGluZSA9IHVzZU9ubGluZTtcbmV4cG9ydHMudXNlUGFnZUxlYXZlID0gdXNlUGFnZUxlYXZlO1xuZXhwb3J0cy51c2VQYXJhbGxheCA9IHVzZVBhcmFsbGF4O1xuZXhwb3J0cy51c2VQZXJtaXNzaW9uID0gdXNlUGVybWlzc2lvbjtcbmV4cG9ydHMudXNlUG9pbnRlciA9IHVzZVBvaW50ZXI7XG5leHBvcnRzLnVzZVBvaW50ZXJTd2lwZSA9IHVzZVBvaW50ZXJTd2lwZTtcbmV4cG9ydHMudXNlUHJlZmVycmVkQ29sb3JTY2hlbWUgPSB1c2VQcmVmZXJyZWRDb2xvclNjaGVtZTtcbmV4cG9ydHMudXNlUHJlZmVycmVkRGFyayA9IHVzZVByZWZlcnJlZERhcms7XG5leHBvcnRzLnVzZVByZWZlcnJlZExhbmd1YWdlcyA9IHVzZVByZWZlcnJlZExhbmd1YWdlcztcbmV4cG9ydHMudXNlUmFmRm4gPSB1c2VSYWZGbjtcbmV4cG9ydHMudXNlUmVmSGlzdG9yeSA9IHVzZVJlZkhpc3Rvcnk7XG5leHBvcnRzLnVzZVJlc2l6ZU9ic2VydmVyID0gdXNlUmVzaXplT2JzZXJ2ZXI7XG5leHBvcnRzLnVzZVNjcmVlbk9yaWVudGF0aW9uID0gdXNlU2NyZWVuT3JpZW50YXRpb247XG5leHBvcnRzLnVzZVNjcmVlblNhZmVBcmVhID0gdXNlU2NyZWVuU2FmZUFyZWE7XG5leHBvcnRzLnVzZVNjcmlwdFRhZyA9IHVzZVNjcmlwdFRhZztcbmV4cG9ydHMudXNlU2Nyb2xsID0gdXNlU2Nyb2xsO1xuZXhwb3J0cy51c2VTY3JvbGxMb2NrID0gdXNlU2Nyb2xsTG9jaztcbmV4cG9ydHMudXNlU2Vzc2lvblN0b3JhZ2UgPSB1c2VTZXNzaW9uU3RvcmFnZTtcbmV4cG9ydHMudXNlU2hhcmUgPSB1c2VTaGFyZTtcbmV4cG9ydHMudXNlU3BlZWNoUmVjb2duaXRpb24gPSB1c2VTcGVlY2hSZWNvZ25pdGlvbjtcbmV4cG9ydHMudXNlU3BlZWNoU3ludGhlc2lzID0gdXNlU3BlZWNoU3ludGhlc2lzO1xuZXhwb3J0cy51c2VTdGVwcGVyID0gdXNlU3RlcHBlcjtcbmV4cG9ydHMudXNlU3RvcmFnZSA9IHVzZVN0b3JhZ2U7XG5leHBvcnRzLnVzZVN0b3JhZ2VBc3luYyA9IHVzZVN0b3JhZ2VBc3luYztcbmV4cG9ydHMudXNlU3R5bGVUYWcgPSB1c2VTdHlsZVRhZztcbmV4cG9ydHMudXNlU3dpcGUgPSB1c2VTd2lwZTtcbmV4cG9ydHMudXNlVGVtcGxhdGVSZWZzTGlzdCA9IHVzZVRlbXBsYXRlUmVmc0xpc3Q7XG5leHBvcnRzLnVzZVRleHRTZWxlY3Rpb24gPSB1c2VUZXh0U2VsZWN0aW9uO1xuZXhwb3J0cy51c2VUZXh0YXJlYUF1dG9zaXplID0gdXNlVGV4dGFyZWFBdXRvc2l6ZTtcbmV4cG9ydHMudXNlVGhyb3R0bGVkUmVmSGlzdG9yeSA9IHVzZVRocm90dGxlZFJlZkhpc3Rvcnk7XG5leHBvcnRzLnVzZVRpbWVBZ28gPSB1c2VUaW1lQWdvO1xuZXhwb3J0cy51c2VUaW1lb3V0UG9sbCA9IHVzZVRpbWVvdXRQb2xsO1xuZXhwb3J0cy51c2VUaW1lc3RhbXAgPSB1c2VUaW1lc3RhbXA7XG5leHBvcnRzLnVzZVRpdGxlID0gdXNlVGl0bGU7XG5leHBvcnRzLnVzZVRyYW5zaXRpb24gPSB1c2VUcmFuc2l0aW9uO1xuZXhwb3J0cy51c2VVcmxTZWFyY2hQYXJhbXMgPSB1c2VVcmxTZWFyY2hQYXJhbXM7XG5leHBvcnRzLnVzZVVzZXJNZWRpYSA9IHVzZVVzZXJNZWRpYTtcbmV4cG9ydHMudXNlVk1vZGVsID0gdXNlVk1vZGVsO1xuZXhwb3J0cy51c2VWTW9kZWxzID0gdXNlVk1vZGVscztcbmV4cG9ydHMudXNlVmlicmF0ZSA9IHVzZVZpYnJhdGU7XG5leHBvcnRzLnVzZVZpcnR1YWxMaXN0ID0gdXNlVmlydHVhbExpc3Q7XG5leHBvcnRzLnVzZVdha2VMb2NrID0gdXNlV2FrZUxvY2s7XG5leHBvcnRzLnVzZVdlYk5vdGlmaWNhdGlvbiA9IHVzZVdlYk5vdGlmaWNhdGlvbjtcbmV4cG9ydHMudXNlV2ViU29ja2V0ID0gdXNlV2ViU29ja2V0O1xuZXhwb3J0cy51c2VXZWJXb3JrZXIgPSB1c2VXZWJXb3JrZXI7XG5leHBvcnRzLnVzZVdlYldvcmtlckZuID0gdXNlV2ViV29ya2VyRm47XG5leHBvcnRzLnVzZVdpbmRvd0ZvY3VzID0gdXNlV2luZG93Rm9jdXM7XG5leHBvcnRzLnVzZVdpbmRvd1Njcm9sbCA9IHVzZVdpbmRvd1Njcm9sbDtcbmV4cG9ydHMudXNlV2luZG93U2l6ZSA9IHVzZVdpbmRvd1NpemU7XG5PYmplY3Qua2V5cyhzaGFyZWQpLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgaWYgKGsgIT09ICdkZWZhdWx0JyAmJiAhZXhwb3J0cy5oYXNPd25Qcm9wZXJ0eShrKSkgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGssIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gc2hhcmVkW2tdOyB9XG4gIH0pO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG5cbnZhciB2dWVEZW1pID0gcmVxdWlyZSgndnVlLWRlbWknKTtcblxudmFyIF9fZGVmUHJvcCQ5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmUHJvcHMkNiA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzO1xudmFyIF9fZ2V0T3duUHJvcERlc2NzJDYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycztcbnZhciBfX2dldE93blByb3BTeW1ib2xzJGIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCRiID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kYiA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wJDkgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJDkob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzJDkgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcCRiLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AkOShhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMkYilcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMkYihiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bSRiLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcCQ5KGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xudmFyIF9fc3ByZWFkUHJvcHMkNiA9IChhLCBiKSA9PiBfX2RlZlByb3BzJDYoYSwgX19nZXRPd25Qcm9wRGVzY3MkNihiKSk7XG5mdW5jdGlvbiBjb21wdXRlZEVhZ2VyKGZuLCBvcHRpb25zKSB7XG4gIHZhciBfYTtcbiAgY29uc3QgcmVzdWx0ID0gdnVlRGVtaS5zaGFsbG93UmVmKCk7XG4gIHZ1ZURlbWkud2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIHJlc3VsdC52YWx1ZSA9IGZuKCk7XG4gIH0sIF9fc3ByZWFkUHJvcHMkNihfX3NwcmVhZFZhbHVlcyQ5KHt9LCBvcHRpb25zKSwge1xuICAgIGZsdXNoOiAoX2EgPSBvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLmZsdXNoKSAhPSBudWxsID8gX2EgOiBcInN5bmNcIlxuICB9KSk7XG4gIHJldHVybiB2dWVEZW1pLnJlYWRvbmx5KHJlc3VsdCk7XG59XG5cbnZhciBfYTtcbmNvbnN0IGlzQ2xpZW50ID0gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIjtcbmNvbnN0IGlzRGVmID0gKHZhbCkgPT4gdHlwZW9mIHZhbCAhPT0gXCJ1bmRlZmluZWRcIjtcbmNvbnN0IGFzc2VydCA9IChjb25kaXRpb24sIC4uLmluZm9zKSA9PiB7XG4gIGlmICghY29uZGl0aW9uKVxuICAgIGNvbnNvbGUud2FybiguLi5pbmZvcyk7XG59O1xuY29uc3QgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuY29uc3QgaXNCb29sZWFuID0gKHZhbCkgPT4gdHlwZW9mIHZhbCA9PT0gXCJib29sZWFuXCI7XG5jb25zdCBpc0Z1bmN0aW9uID0gKHZhbCkgPT4gdHlwZW9mIHZhbCA9PT0gXCJmdW5jdGlvblwiO1xuY29uc3QgaXNOdW1iZXIgPSAodmFsKSA9PiB0eXBlb2YgdmFsID09PSBcIm51bWJlclwiO1xuY29uc3QgaXNTdHJpbmcgPSAodmFsKSA9PiB0eXBlb2YgdmFsID09PSBcInN0cmluZ1wiO1xuY29uc3QgaXNPYmplY3QgPSAodmFsKSA9PiB0b1N0cmluZy5jYWxsKHZhbCkgPT09IFwiW29iamVjdCBPYmplY3RdXCI7XG5jb25zdCBpc1dpbmRvdyA9ICh2YWwpID0+IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgJiYgdG9TdHJpbmcuY2FsbCh2YWwpID09PSBcIltvYmplY3QgV2luZG93XVwiO1xuY29uc3Qgbm93ID0gKCkgPT4gRGF0ZS5ub3coKTtcbmNvbnN0IHRpbWVzdGFtcCA9ICgpID0+ICtEYXRlLm5vdygpO1xuY29uc3QgY2xhbXAgPSAobiwgbWluLCBtYXgpID0+IE1hdGgubWluKG1heCwgTWF0aC5tYXgobWluLCBuKSk7XG5jb25zdCBub29wID0gKCkgPT4ge1xufTtcbmNvbnN0IHJhbmQgPSAobWluLCBtYXgpID0+IHtcbiAgbWluID0gTWF0aC5jZWlsKG1pbik7XG4gIG1heCA9IE1hdGguZmxvb3IobWF4KTtcbiAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSkgKyBtaW47XG59O1xuY29uc3QgaXNJT1MgPSBpc0NsaWVudCAmJiAoKF9hID0gd2luZG93ID09IG51bGwgPyB2b2lkIDAgOiB3aW5kb3cubmF2aWdhdG9yKSA9PSBudWxsID8gdm9pZCAwIDogX2EudXNlckFnZW50KSAmJiAvaVAoYWR8aG9uZXxvZCkvLnRlc3Qod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpO1xuXG5mdW5jdGlvbiBjcmVhdGVGaWx0ZXJXcmFwcGVyKGZpbHRlciwgZm4pIHtcbiAgZnVuY3Rpb24gd3JhcHBlciguLi5hcmdzKSB7XG4gICAgZmlsdGVyKCgpID0+IGZuLmFwcGx5KHRoaXMsIGFyZ3MpLCB7IGZuLCB0aGlzQXJnOiB0aGlzLCBhcmdzIH0pO1xuICB9XG4gIHJldHVybiB3cmFwcGVyO1xufVxuY29uc3QgYnlwYXNzRmlsdGVyID0gKGludm9rZSkgPT4ge1xuICByZXR1cm4gaW52b2tlKCk7XG59O1xuZnVuY3Rpb24gZGVib3VuY2VGaWx0ZXIobXMsIG9wdGlvbnMgPSB7fSkge1xuICBsZXQgdGltZXI7XG4gIGxldCBtYXhUaW1lcjtcbiAgY29uc3QgZmlsdGVyID0gKGludm9rZSkgPT4ge1xuICAgIGNvbnN0IGR1cmF0aW9uID0gdnVlRGVtaS51bnJlZihtcyk7XG4gICAgY29uc3QgbWF4RHVyYXRpb24gPSB2dWVEZW1pLnVucmVmKG9wdGlvbnMubWF4V2FpdCk7XG4gICAgaWYgKHRpbWVyKVxuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICBpZiAoZHVyYXRpb24gPD0gMCB8fCBtYXhEdXJhdGlvbiAhPT0gdm9pZCAwICYmIG1heER1cmF0aW9uIDw9IDApIHtcbiAgICAgIGlmIChtYXhUaW1lcikge1xuICAgICAgICBjbGVhclRpbWVvdXQobWF4VGltZXIpO1xuICAgICAgICBtYXhUaW1lciA9IG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gaW52b2tlKCk7XG4gICAgfVxuICAgIGlmIChtYXhEdXJhdGlvbiAmJiAhbWF4VGltZXIpIHtcbiAgICAgIG1heFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aW1lcilcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICBtYXhUaW1lciA9IG51bGw7XG4gICAgICAgIGludm9rZSgpO1xuICAgICAgfSwgbWF4RHVyYXRpb24pO1xuICAgIH1cbiAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKG1heFRpbWVyKVxuICAgICAgICBjbGVhclRpbWVvdXQobWF4VGltZXIpO1xuICAgICAgbWF4VGltZXIgPSBudWxsO1xuICAgICAgaW52b2tlKCk7XG4gICAgfSwgZHVyYXRpb24pO1xuICB9O1xuICByZXR1cm4gZmlsdGVyO1xufVxuZnVuY3Rpb24gdGhyb3R0bGVGaWx0ZXIobXMsIHRyYWlsaW5nID0gdHJ1ZSwgbGVhZGluZyA9IHRydWUpIHtcbiAgbGV0IGxhc3RFeGVjID0gMDtcbiAgbGV0IHRpbWVyO1xuICBsZXQgaXNMZWFkaW5nID0gdHJ1ZTtcbiAgY29uc3QgY2xlYXIgPSAoKSA9PiB7XG4gICAgaWYgKHRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgdGltZXIgPSB2b2lkIDA7XG4gICAgfVxuICB9O1xuICBjb25zdCBmaWx0ZXIgPSAoaW52b2tlKSA9PiB7XG4gICAgY29uc3QgZHVyYXRpb24gPSB2dWVEZW1pLnVucmVmKG1zKTtcbiAgICBjb25zdCBlbGFwc2VkID0gRGF0ZS5ub3coKSAtIGxhc3RFeGVjO1xuICAgIGNsZWFyKCk7XG4gICAgaWYgKGR1cmF0aW9uIDw9IDApIHtcbiAgICAgIGxhc3RFeGVjID0gRGF0ZS5ub3coKTtcbiAgICAgIHJldHVybiBpbnZva2UoKTtcbiAgICB9XG4gICAgaWYgKGVsYXBzZWQgPiBkdXJhdGlvbiAmJiAobGVhZGluZyB8fCAhaXNMZWFkaW5nKSkge1xuICAgICAgbGFzdEV4ZWMgPSBEYXRlLm5vdygpO1xuICAgICAgaW52b2tlKCk7XG4gICAgfSBlbHNlIGlmICh0cmFpbGluZykge1xuICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgbGFzdEV4ZWMgPSBEYXRlLm5vdygpO1xuICAgICAgICBpc0xlYWRpbmcgPSB0cnVlO1xuICAgICAgICBjbGVhcigpO1xuICAgICAgICBpbnZva2UoKTtcbiAgICAgIH0sIGR1cmF0aW9uKTtcbiAgICB9XG4gICAgaWYgKCFsZWFkaW5nICYmICF0aW1lcilcbiAgICAgIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiBpc0xlYWRpbmcgPSB0cnVlLCBkdXJhdGlvbik7XG4gICAgaXNMZWFkaW5nID0gZmFsc2U7XG4gIH07XG4gIHJldHVybiBmaWx0ZXI7XG59XG5mdW5jdGlvbiBwYXVzYWJsZUZpbHRlcihleHRlbmRGaWx0ZXIgPSBieXBhc3NGaWx0ZXIpIHtcbiAgY29uc3QgaXNBY3RpdmUgPSB2dWVEZW1pLnJlZih0cnVlKTtcbiAgZnVuY3Rpb24gcGF1c2UoKSB7XG4gICAgaXNBY3RpdmUudmFsdWUgPSBmYWxzZTtcbiAgfVxuICBmdW5jdGlvbiByZXN1bWUoKSB7XG4gICAgaXNBY3RpdmUudmFsdWUgPSB0cnVlO1xuICB9XG4gIGNvbnN0IGV2ZW50RmlsdGVyID0gKC4uLmFyZ3MpID0+IHtcbiAgICBpZiAoaXNBY3RpdmUudmFsdWUpXG4gICAgICBleHRlbmRGaWx0ZXIoLi4uYXJncyk7XG4gIH07XG4gIHJldHVybiB7IGlzQWN0aXZlLCBwYXVzZSwgcmVzdW1lLCBldmVudEZpbHRlciB9O1xufVxuXG5mdW5jdGlvbiBfX29ubHlWdWUzKG5hbWUgPSBcInRoaXMgZnVuY3Rpb25cIikge1xuICBpZiAodnVlRGVtaS5pc1Z1ZTMpXG4gICAgcmV0dXJuO1xuICB0aHJvdyBuZXcgRXJyb3IoYFtWdWVVc2VdICR7bmFtZX0gaXMgb25seSB3b3JrcyBvbiBWdWUgMy5gKTtcbn1cbmNvbnN0IGRpcmVjdGl2ZUhvb2tzID0ge1xuICBtb3VudGVkOiB2dWVEZW1pLmlzVnVlMyA/IFwibW91bnRlZFwiIDogXCJpbnNlcnRlZFwiLFxuICB1cGRhdGVkOiB2dWVEZW1pLmlzVnVlMyA/IFwidXBkYXRlZFwiIDogXCJjb21wb25lbnRVcGRhdGVkXCIsXG4gIHVubW91bnRlZDogdnVlRGVtaS5pc1Z1ZTMgPyBcInVubW91bnRlZFwiIDogXCJ1bmJpbmRcIlxufTtcblxuZnVuY3Rpb24gcHJvbWlzZVRpbWVvdXQobXMsIHRocm93T25UaW1lb3V0ID0gZmFsc2UsIHJlYXNvbiA9IFwiVGltZW91dFwiKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgaWYgKHRocm93T25UaW1lb3V0KVxuICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QocmVhc29uKSwgbXMpO1xuICAgIGVsc2VcbiAgICAgIHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGlkZW50aXR5KGFyZykge1xuICByZXR1cm4gYXJnO1xufVxuZnVuY3Rpb24gY3JlYXRlU2luZ2xldG9uUHJvbWlzZShmbikge1xuICBsZXQgX3Byb21pc2U7XG4gIGZ1bmN0aW9uIHdyYXBwZXIoKSB7XG4gICAgaWYgKCFfcHJvbWlzZSlcbiAgICAgIF9wcm9taXNlID0gZm4oKTtcbiAgICByZXR1cm4gX3Byb21pc2U7XG4gIH1cbiAgd3JhcHBlci5yZXNldCA9IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBfcHJldiA9IF9wcm9taXNlO1xuICAgIF9wcm9taXNlID0gdm9pZCAwO1xuICAgIGlmIChfcHJldilcbiAgICAgIGF3YWl0IF9wcmV2O1xuICB9O1xuICByZXR1cm4gd3JhcHBlcjtcbn1cbmZ1bmN0aW9uIGludm9rZShmbikge1xuICByZXR1cm4gZm4oKTtcbn1cbmZ1bmN0aW9uIGNvbnRhaW5zUHJvcChvYmosIC4uLnByb3BzKSB7XG4gIHJldHVybiBwcm9wcy5zb21lKChrKSA9PiBrIGluIG9iaik7XG59XG5mdW5jdGlvbiBpbmNyZWFzZVdpdGhVbml0KHRhcmdldCwgZGVsdGEpIHtcbiAgdmFyIF9hO1xuICBpZiAodHlwZW9mIHRhcmdldCA9PT0gXCJudW1iZXJcIilcbiAgICByZXR1cm4gdGFyZ2V0ICsgZGVsdGE7XG4gIGNvbnN0IHZhbHVlID0gKChfYSA9IHRhcmdldC5tYXRjaCgvXi0/WzAtOV0rXFwuP1swLTldKi8pKSA9PSBudWxsID8gdm9pZCAwIDogX2FbMF0pIHx8IFwiXCI7XG4gIGNvbnN0IHVuaXQgPSB0YXJnZXQuc2xpY2UodmFsdWUubGVuZ3RoKTtcbiAgY29uc3QgcmVzdWx0ID0gcGFyc2VGbG9hdCh2YWx1ZSkgKyBkZWx0YTtcbiAgaWYgKE51bWJlci5pc05hTihyZXN1bHQpKVxuICAgIHJldHVybiB0YXJnZXQ7XG4gIHJldHVybiByZXN1bHQgKyB1bml0O1xufVxuZnVuY3Rpb24gb2JqZWN0UGljayhvYmosIGtleXMsIG9taXRVbmRlZmluZWQgPSBmYWxzZSkge1xuICByZXR1cm4ga2V5cy5yZWR1Y2UoKG4sIGspID0+IHtcbiAgICBpZiAoayBpbiBvYmopIHtcbiAgICAgIGlmICghb21pdFVuZGVmaW5lZCB8fCBvYmpba10gIT09IHZvaWQgMClcbiAgICAgICAgbltrXSA9IG9ialtrXTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH0sIHt9KTtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZWRXaXRoQ29udHJvbChzb3VyY2UsIGZuKSB7XG4gIGxldCB2ID0gdm9pZCAwO1xuICBsZXQgdHJhY2s7XG4gIGxldCB0cmlnZ2VyO1xuICBjb25zdCBkaXJ0eSA9IHZ1ZURlbWkucmVmKHRydWUpO1xuICBjb25zdCB1cGRhdGUgPSAoKSA9PiB7XG4gICAgZGlydHkudmFsdWUgPSB0cnVlO1xuICAgIHRyaWdnZXIoKTtcbiAgfTtcbiAgdnVlRGVtaS53YXRjaChzb3VyY2UsIHVwZGF0ZSwgeyBmbHVzaDogXCJzeW5jXCIgfSk7XG4gIGNvbnN0IGdldCA9IGlzRnVuY3Rpb24oZm4pID8gZm4gOiBmbi5nZXQ7XG4gIGNvbnN0IHNldCA9IGlzRnVuY3Rpb24oZm4pID8gdm9pZCAwIDogZm4uc2V0O1xuICBjb25zdCByZXN1bHQgPSB2dWVEZW1pLmN1c3RvbVJlZigoX3RyYWNrLCBfdHJpZ2dlcikgPT4ge1xuICAgIHRyYWNrID0gX3RyYWNrO1xuICAgIHRyaWdnZXIgPSBfdHJpZ2dlcjtcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0KCkge1xuICAgICAgICBpZiAoZGlydHkudmFsdWUpIHtcbiAgICAgICAgICB2ID0gZ2V0KCk7XG4gICAgICAgICAgZGlydHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0cmFjaygpO1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH0sXG4gICAgICBzZXQodjIpIHtcbiAgICAgICAgc2V0ID09IG51bGwgPyB2b2lkIDAgOiBzZXQodjIpO1xuICAgICAgfVxuICAgIH07XG4gIH0pO1xuICBpZiAoT2JqZWN0LmlzRXh0ZW5zaWJsZShyZXN1bHQpKVxuICAgIHJlc3VsdC50cmlnZ2VyID0gdXBkYXRlO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVFdmVudEhvb2soKSB7XG4gIGNvbnN0IGZucyA9IFtdO1xuICBjb25zdCBvZmYgPSAoZm4pID0+IHtcbiAgICBjb25zdCBpbmRleCA9IGZucy5pbmRleE9mKGZuKTtcbiAgICBpZiAoaW5kZXggIT09IC0xKVxuICAgICAgZm5zLnNwbGljZShpbmRleCwgMSk7XG4gIH07XG4gIGNvbnN0IG9uID0gKGZuKSA9PiB7XG4gICAgZm5zLnB1c2goZm4pO1xuICAgIHJldHVybiB7XG4gICAgICBvZmY6ICgpID0+IG9mZihmbilcbiAgICB9O1xuICB9O1xuICBjb25zdCB0cmlnZ2VyID0gKHBhcmFtKSA9PiB7XG4gICAgZm5zLmZvckVhY2goKGZuKSA9PiBmbihwYXJhbSkpO1xuICB9O1xuICByZXR1cm4ge1xuICAgIG9uLFxuICAgIG9mZixcbiAgICB0cmlnZ2VyXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUdsb2JhbFN0YXRlKHN0YXRlRmFjdG9yeSkge1xuICBsZXQgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgbGV0IHN0YXRlO1xuICBjb25zdCBzY29wZSA9IHZ1ZURlbWkuZWZmZWN0U2NvcGUodHJ1ZSk7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCFpbml0aWFsaXplZCkge1xuICAgICAgc3RhdGUgPSBzY29wZS5ydW4oc3RhdGVGYWN0b3J5KTtcbiAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVJbmplY3Rpb25TdGF0ZShjb21wb3NhYmxlKSB7XG4gIGNvbnN0IGtleSA9IFN5bWJvbChcIkluamVjdGlvblN0YXRlXCIpO1xuICBjb25zdCB1c2VQcm92aWRpbmdTdGF0ZSA9ICguLi5hcmdzKSA9PiB7XG4gICAgdnVlRGVtaS5wcm92aWRlKGtleSwgY29tcG9zYWJsZSguLi5hcmdzKSk7XG4gIH07XG4gIGNvbnN0IHVzZUluamVjdGVkU3RhdGUgPSAoKSA9PiB2dWVEZW1pLmluamVjdChrZXkpO1xuICByZXR1cm4gW3VzZVByb3ZpZGluZ1N0YXRlLCB1c2VJbmplY3RlZFN0YXRlXTtcbn1cblxuZnVuY3Rpb24gdHJ5T25TY29wZURpc3Bvc2UoZm4pIHtcbiAgaWYgKHZ1ZURlbWkuZ2V0Q3VycmVudFNjb3BlKCkpIHtcbiAgICB2dWVEZW1pLm9uU2NvcGVEaXNwb3NlKGZuKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVNoYXJlZENvbXBvc2FibGUoY29tcG9zYWJsZSkge1xuICBsZXQgc3Vic2NyaWJlcnMgPSAwO1xuICBsZXQgc3RhdGU7XG4gIGxldCBzY29wZTtcbiAgY29uc3QgZGlzcG9zZSA9ICgpID0+IHtcbiAgICBzdWJzY3JpYmVycyAtPSAxO1xuICAgIGlmIChzY29wZSAmJiBzdWJzY3JpYmVycyA8PSAwKSB7XG4gICAgICBzY29wZS5zdG9wKCk7XG4gICAgICBzdGF0ZSA9IHZvaWQgMDtcbiAgICAgIHNjb3BlID0gdm9pZCAwO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgc3Vic2NyaWJlcnMgKz0gMTtcbiAgICBpZiAoIXN0YXRlKSB7XG4gICAgICBzY29wZSA9IHZ1ZURlbWkuZWZmZWN0U2NvcGUodHJ1ZSk7XG4gICAgICBzdGF0ZSA9IHNjb3BlLnJ1bigoKSA9PiBjb21wb3NhYmxlKC4uLmFyZ3MpKTtcbiAgICB9XG4gICAgdHJ5T25TY29wZURpc3Bvc2UoZGlzcG9zZSk7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9O1xufVxuXG5mdW5jdGlvbiBleHRlbmRSZWYocmVmLCBleHRlbmQsIHsgZW51bWVyYWJsZSA9IGZhbHNlLCB1bndyYXAgPSB0cnVlIH0gPSB7fSkge1xuICBfX29ubHlWdWUzKCk7XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGV4dGVuZCkpIHtcbiAgICBpZiAoa2V5ID09PSBcInZhbHVlXCIpXG4gICAgICBjb250aW51ZTtcbiAgICBpZiAodnVlRGVtaS5pc1JlZih2YWx1ZSkgJiYgdW53cmFwKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVmLCBrZXksIHtcbiAgICAgICAgZ2V0KCkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZS52YWx1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0KHYpIHtcbiAgICAgICAgICB2YWx1ZS52YWx1ZSA9IHY7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGVcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVmLCBrZXksIHsgdmFsdWUsIGVudW1lcmFibGUgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZWY7XG59XG5cbmZ1bmN0aW9uIGdldChvYmosIGtleSkge1xuICBpZiAoa2V5ID09IG51bGwpXG4gICAgcmV0dXJuIHZ1ZURlbWkudW5yZWYob2JqKTtcbiAgcmV0dXJuIHZ1ZURlbWkudW5yZWYob2JqKVtrZXldO1xufVxuXG5mdW5jdGlvbiBpc0RlZmluZWQodikge1xuICByZXR1cm4gdnVlRGVtaS51bnJlZih2KSAhPSBudWxsO1xufVxuXG5mdW5jdGlvbiBsb2dpY0FuZCguLi5hcmdzKSB7XG4gIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IGFyZ3MuZXZlcnkoKGkpID0+IHZ1ZURlbWkudW5yZWYoaSkpKTtcbn1cblxuZnVuY3Rpb24gbG9naWNOb3Qodikge1xuICByZXR1cm4gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiAhdnVlRGVtaS51bnJlZih2KSk7XG59XG5cbmZ1bmN0aW9uIGxvZ2ljT3IoLi4uYXJncykge1xuICByZXR1cm4gdnVlRGVtaS5jb21wdXRlZCgoKSA9PiBhcmdzLnNvbWUoKGkpID0+IHZ1ZURlbWkudW5yZWYoaSkpKTtcbn1cblxudmFyIF9fZGVmUHJvcCQ4ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkYSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJGEgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSRhID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkOCA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkOChvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkOCA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJGEuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCQ4KGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyRhKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyRhKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJGEuY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJDgoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG5mdW5jdGlvbiBtYWtlRGVzdHJ1Y3R1cmFibGUob2JqLCBhcnIpIHtcbiAgaWYgKHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBjb25zdCBjbG9uZSA9IF9fc3ByZWFkVmFsdWVzJDgoe30sIG9iaik7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNsb25lLCBTeW1ib2wuaXRlcmF0b3IsIHtcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgdmFsdWUoKSB7XG4gICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmV4dDogKCkgPT4gKHtcbiAgICAgICAgICAgIHZhbHVlOiBhcnJbaW5kZXgrK10sXG4gICAgICAgICAgICBkb25lOiBpbmRleCA+IGFyci5sZW5ndGhcbiAgICAgICAgICB9KVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjbG9uZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihbLi4uYXJyXSwgb2JqKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZWFjdGlmeShmbikge1xuICByZXR1cm4gZnVuY3Rpb24oLi4uYXJncykge1xuICAgIHJldHVybiB2dWVEZW1pLmNvbXB1dGVkKCgpID0+IGZuLmFwcGx5KHRoaXMsIGFyZ3MubWFwKChpKSA9PiB2dWVEZW1pLnVucmVmKGkpKSkpO1xuICB9O1xufVxuXG5mdW5jdGlvbiByZWFjdGlmeU9iamVjdChvYmosIG9wdGlvbnNPcktleXMgPSB7fSkge1xuICBsZXQga2V5cyA9IFtdO1xuICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zT3JLZXlzKSkge1xuICAgIGtleXMgPSBvcHRpb25zT3JLZXlzO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHsgaW5jbHVkZU93blByb3BlcnRpZXMgPSB0cnVlIH0gPSBvcHRpb25zT3JLZXlzO1xuICAgIGtleXMucHVzaCguLi5PYmplY3Qua2V5cyhvYmopKTtcbiAgICBpZiAoaW5jbHVkZU93blByb3BlcnRpZXMpXG4gICAgICBrZXlzLnB1c2goLi4uT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKSk7XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhrZXlzLm1hcCgoa2V5KSA9PiB7XG4gICAgY29uc3QgdmFsdWUgPSBvYmpba2V5XTtcbiAgICByZXR1cm4gW1xuICAgICAga2V5LFxuICAgICAgdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCIgPyByZWFjdGlmeSh2YWx1ZS5iaW5kKG9iaikpIDogdmFsdWVcbiAgICBdO1xuICB9KSk7XG59XG5cbmZ1bmN0aW9uIHRvUmVhY3RpdmUob2JqZWN0UmVmKSB7XG4gIGlmICghdnVlRGVtaS5pc1JlZihvYmplY3RSZWYpKVxuICAgIHJldHVybiB2dWVEZW1pLnJlYWN0aXZlKG9iamVjdFJlZik7XG4gIGNvbnN0IHByb3h5ID0gbmV3IFByb3h5KHt9LCB7XG4gICAgZ2V0KF8sIHAsIHJlY2VpdmVyKSB7XG4gICAgICByZXR1cm4gdnVlRGVtaS51bnJlZihSZWZsZWN0LmdldChvYmplY3RSZWYudmFsdWUsIHAsIHJlY2VpdmVyKSk7XG4gICAgfSxcbiAgICBzZXQoXywgcCwgdmFsdWUpIHtcbiAgICAgIGlmICh2dWVEZW1pLmlzUmVmKG9iamVjdFJlZi52YWx1ZVtwXSkgJiYgIXZ1ZURlbWkuaXNSZWYodmFsdWUpKVxuICAgICAgICBvYmplY3RSZWYudmFsdWVbcF0udmFsdWUgPSB2YWx1ZTtcbiAgICAgIGVsc2VcbiAgICAgICAgb2JqZWN0UmVmLnZhbHVlW3BdID0gdmFsdWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIGRlbGV0ZVByb3BlcnR5KF8sIHApIHtcbiAgICAgIHJldHVybiBSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KG9iamVjdFJlZi52YWx1ZSwgcCk7XG4gICAgfSxcbiAgICBoYXMoXywgcCkge1xuICAgICAgcmV0dXJuIFJlZmxlY3QuaGFzKG9iamVjdFJlZi52YWx1ZSwgcCk7XG4gICAgfSxcbiAgICBvd25LZXlzKCkge1xuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iamVjdFJlZi52YWx1ZSk7XG4gICAgfSxcbiAgICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgIH07XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHZ1ZURlbWkucmVhY3RpdmUocHJveHkpO1xufVxuXG5mdW5jdGlvbiByZWFjdGl2ZUNvbXB1dGVkKGZuKSB7XG4gIHJldHVybiB0b1JlYWN0aXZlKHZ1ZURlbWkuY29tcHV0ZWQoZm4pKTtcbn1cblxuZnVuY3Rpb24gcmVhY3RpdmVPbWl0KG9iaiwgLi4ua2V5cykge1xuICBjb25zdCBmbGF0S2V5cyA9IGtleXMuZmxhdCgpO1xuICByZXR1cm4gcmVhY3RpdmVDb21wdXRlZCgoKSA9PiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModnVlRGVtaS50b1JlZnMob2JqKSkuZmlsdGVyKChlKSA9PiAhZmxhdEtleXMuaW5jbHVkZXMoZVswXSkpKSk7XG59XG5cbmZ1bmN0aW9uIHJlYWN0aXZlUGljayhvYmosIC4uLmtleXMpIHtcbiAgY29uc3QgZmxhdEtleXMgPSBrZXlzLmZsYXQoKTtcbiAgcmV0dXJuIHZ1ZURlbWkucmVhY3RpdmUoT2JqZWN0LmZyb21FbnRyaWVzKGZsYXRLZXlzLm1hcCgoaykgPT4gW2ssIHZ1ZURlbWkudG9SZWYob2JqLCBrKV0pKSk7XG59XG5cbmZ1bmN0aW9uIHJlZkF1dG9SZXNldChkZWZhdWx0VmFsdWUsIGFmdGVyTXMgPSAxZTQpIHtcbiAgcmV0dXJuIHZ1ZURlbWkuY3VzdG9tUmVmKCh0cmFjaywgdHJpZ2dlcikgPT4ge1xuICAgIGxldCB2YWx1ZSA9IGRlZmF1bHRWYWx1ZTtcbiAgICBsZXQgdGltZXI7XG4gICAgY29uc3QgcmVzZXRBZnRlciA9ICgpID0+IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdmFsdWUgPSBkZWZhdWx0VmFsdWU7XG4gICAgICB0cmlnZ2VyKCk7XG4gICAgfSwgdnVlRGVtaS51bnJlZihhZnRlck1zKSk7XG4gICAgdHJ5T25TY29wZURpc3Bvc2UoKCkgPT4ge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0KCkge1xuICAgICAgICB0cmFjaygpO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9LFxuICAgICAgc2V0KG5ld1ZhbHVlKSB7XG4gICAgICAgIHZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgIHRyaWdnZXIoKTtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgdGltZXIgPSByZXNldEFmdGVyKCk7XG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVzZURlYm91bmNlRm4oZm4sIG1zID0gMjAwLCBvcHRpb25zID0ge30pIHtcbiAgcmV0dXJuIGNyZWF0ZUZpbHRlcldyYXBwZXIoZGVib3VuY2VGaWx0ZXIobXMsIG9wdGlvbnMpLCBmbik7XG59XG5cbmZ1bmN0aW9uIHJlZkRlYm91bmNlZCh2YWx1ZSwgbXMgPSAyMDAsIG9wdGlvbnMgPSB7fSkge1xuICBpZiAobXMgPD0gMClcbiAgICByZXR1cm4gdmFsdWU7XG4gIGNvbnN0IGRlYm91bmNlZCA9IHZ1ZURlbWkucmVmKHZhbHVlLnZhbHVlKTtcbiAgY29uc3QgdXBkYXRlciA9IHVzZURlYm91bmNlRm4oKCkgPT4ge1xuICAgIGRlYm91bmNlZC52YWx1ZSA9IHZhbHVlLnZhbHVlO1xuICB9LCBtcywgb3B0aW9ucyk7XG4gIHZ1ZURlbWkud2F0Y2godmFsdWUsICgpID0+IHVwZGF0ZXIoKSk7XG4gIHJldHVybiBkZWJvdW5jZWQ7XG59XG5cbmZ1bmN0aW9uIHJlZkRlZmF1bHQoc291cmNlLCBkZWZhdWx0VmFsdWUpIHtcbiAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoe1xuICAgIGdldCgpIHtcbiAgICAgIHZhciBfYTtcbiAgICAgIHJldHVybiAoX2EgPSBzb3VyY2UudmFsdWUpICE9IG51bGwgPyBfYSA6IGRlZmF1bHRWYWx1ZTtcbiAgICB9LFxuICAgIHNldCh2YWx1ZSkge1xuICAgICAgc291cmNlLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gdXNlVGhyb3R0bGVGbihmbiwgbXMgPSAyMDAsIHRyYWlsaW5nID0gdHJ1ZSwgbGVhZGluZyA9IHRydWUpIHtcbiAgcmV0dXJuIGNyZWF0ZUZpbHRlcldyYXBwZXIodGhyb3R0bGVGaWx0ZXIobXMsIHRyYWlsaW5nLCBsZWFkaW5nKSwgZm4pO1xufVxuXG5mdW5jdGlvbiByZWZUaHJvdHRsZWQodmFsdWUsIGRlbGF5ID0gMjAwLCB0cmFpbGluZyA9IHRydWUsIGxlYWRpbmcgPSB0cnVlKSB7XG4gIGlmIChkZWxheSA8PSAwKVxuICAgIHJldHVybiB2YWx1ZTtcbiAgY29uc3QgdGhyb3R0bGVkID0gdnVlRGVtaS5yZWYodmFsdWUudmFsdWUpO1xuICBjb25zdCB1cGRhdGVyID0gdXNlVGhyb3R0bGVGbigoKSA9PiB7XG4gICAgdGhyb3R0bGVkLnZhbHVlID0gdmFsdWUudmFsdWU7XG4gIH0sIGRlbGF5LCB0cmFpbGluZywgbGVhZGluZyk7XG4gIHZ1ZURlbWkud2F0Y2godmFsdWUsICgpID0+IHVwZGF0ZXIoKSk7XG4gIHJldHVybiB0aHJvdHRsZWQ7XG59XG5cbmZ1bmN0aW9uIHJlZldpdGhDb250cm9sKGluaXRpYWwsIG9wdGlvbnMgPSB7fSkge1xuICBsZXQgc291cmNlID0gaW5pdGlhbDtcbiAgbGV0IHRyYWNrO1xuICBsZXQgdHJpZ2dlcjtcbiAgY29uc3QgcmVmID0gdnVlRGVtaS5jdXN0b21SZWYoKF90cmFjaywgX3RyaWdnZXIpID0+IHtcbiAgICB0cmFjayA9IF90cmFjaztcbiAgICB0cmlnZ2VyID0gX3RyaWdnZXI7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGdldCgpO1xuICAgICAgfSxcbiAgICAgIHNldCh2KSB7XG4gICAgICAgIHNldCh2KTtcbiAgICAgIH1cbiAgICB9O1xuICB9KTtcbiAgZnVuY3Rpb24gZ2V0KHRyYWNraW5nID0gdHJ1ZSkge1xuICAgIGlmICh0cmFja2luZylcbiAgICAgIHRyYWNrKCk7XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuICBmdW5jdGlvbiBzZXQodmFsdWUsIHRyaWdnZXJpbmcgPSB0cnVlKSB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBpZiAodmFsdWUgPT09IHNvdXJjZSlcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBvbGQgPSBzb3VyY2U7XG4gICAgaWYgKCgoX2EgPSBvcHRpb25zLm9uQmVmb3JlQ2hhbmdlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuY2FsbChvcHRpb25zLCB2YWx1ZSwgb2xkKSkgPT09IGZhbHNlKVxuICAgICAgcmV0dXJuO1xuICAgIHNvdXJjZSA9IHZhbHVlO1xuICAgIChfYiA9IG9wdGlvbnMub25DaGFuZ2VkKSA9PSBudWxsID8gdm9pZCAwIDogX2IuY2FsbChvcHRpb25zLCB2YWx1ZSwgb2xkKTtcbiAgICBpZiAodHJpZ2dlcmluZylcbiAgICAgIHRyaWdnZXIoKTtcbiAgfVxuICBjb25zdCB1bnRyYWNrZWRHZXQgPSAoKSA9PiBnZXQoZmFsc2UpO1xuICBjb25zdCBzaWxlbnRTZXQgPSAodikgPT4gc2V0KHYsIGZhbHNlKTtcbiAgY29uc3QgcGVlayA9ICgpID0+IGdldChmYWxzZSk7XG4gIGNvbnN0IGxheSA9ICh2KSA9PiBzZXQodiwgZmFsc2UpO1xuICByZXR1cm4gZXh0ZW5kUmVmKHJlZiwge1xuICAgIGdldCxcbiAgICBzZXQsXG4gICAgdW50cmFja2VkR2V0LFxuICAgIHNpbGVudFNldCxcbiAgICBwZWVrLFxuICAgIGxheVxuICB9LCB7IGVudW1lcmFibGU6IHRydWUgfSk7XG59XG5jb25zdCBjb250cm9sbGVkUmVmID0gcmVmV2l0aENvbnRyb2w7XG5cbmZ1bmN0aW9uIHJlc29sdmVSZWYocikge1xuICByZXR1cm4gdHlwZW9mIHIgPT09IFwiZnVuY3Rpb25cIiA/IHZ1ZURlbWkuY29tcHV0ZWQocikgOiB2dWVEZW1pLnJlZihyKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVVucmVmKHIpIHtcbiAgcmV0dXJuIHR5cGVvZiByID09PSBcImZ1bmN0aW9uXCIgPyByKCkgOiB2dWVEZW1pLnVucmVmKHIpO1xufVxuXG5mdW5jdGlvbiBzZXQoLi4uYXJncykge1xuICBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICBjb25zdCBbcmVmLCB2YWx1ZV0gPSBhcmdzO1xuICAgIHJlZi52YWx1ZSA9IHZhbHVlO1xuICB9XG4gIGlmIChhcmdzLmxlbmd0aCA9PT0gMykge1xuICAgIGlmICh2dWVEZW1pLmlzVnVlMikge1xuICAgICAgdnVlRGVtaS5zZXQoLi4uYXJncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IFt0YXJnZXQsIGtleSwgdmFsdWVdID0gYXJncztcbiAgICAgIHRhcmdldFtrZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHN5bmNSZWYobGVmdCwgcmlnaHQsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgZmx1c2ggPSBcInN5bmNcIixcbiAgICBkZWVwID0gZmFsc2UsXG4gICAgaW1tZWRpYXRlID0gdHJ1ZSxcbiAgICBkaXJlY3Rpb24gPSBcImJvdGhcIlxuICB9ID0gb3B0aW9ucztcbiAgbGV0IHN0b3AxLCBzdG9wMjtcbiAgaWYgKGRpcmVjdGlvbiA9PT0gXCJib3RoXCIgfHwgZGlyZWN0aW9uID09PSBcImx0clwiKSB7XG4gICAgc3RvcDEgPSB2dWVEZW1pLndhdGNoKGxlZnQsIChuZXdWYWx1ZSkgPT4gcmlnaHQudmFsdWUgPSBuZXdWYWx1ZSwgeyBmbHVzaCwgZGVlcCwgaW1tZWRpYXRlIH0pO1xuICB9XG4gIGlmIChkaXJlY3Rpb24gPT09IFwiYm90aFwiIHx8IGRpcmVjdGlvbiA9PT0gXCJydGxcIikge1xuICAgIHN0b3AyID0gdnVlRGVtaS53YXRjaChyaWdodCwgKG5ld1ZhbHVlKSA9PiBsZWZ0LnZhbHVlID0gbmV3VmFsdWUsIHsgZmx1c2gsIGRlZXAsIGltbWVkaWF0ZSB9KTtcbiAgfVxuICByZXR1cm4gKCkgPT4ge1xuICAgIHN0b3AxID09IG51bGwgPyB2b2lkIDAgOiBzdG9wMSgpO1xuICAgIHN0b3AyID09IG51bGwgPyB2b2lkIDAgOiBzdG9wMigpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBzeW5jUmVmcyhzb3VyY2UsIHRhcmdldHMsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgZmx1c2ggPSBcInN5bmNcIixcbiAgICBkZWVwID0gZmFsc2UsXG4gICAgaW1tZWRpYXRlID0gdHJ1ZVxuICB9ID0gb3B0aW9ucztcbiAgaWYgKCFBcnJheS5pc0FycmF5KHRhcmdldHMpKVxuICAgIHRhcmdldHMgPSBbdGFyZ2V0c107XG4gIHJldHVybiB2dWVEZW1pLndhdGNoKHNvdXJjZSwgKG5ld1ZhbHVlKSA9PiB0YXJnZXRzLmZvckVhY2goKHRhcmdldCkgPT4gdGFyZ2V0LnZhbHVlID0gbmV3VmFsdWUpLCB7IGZsdXNoLCBkZWVwLCBpbW1lZGlhdGUgfSk7XG59XG5cbnZhciBfX2RlZlByb3AkNyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2RlZlByb3BzJDUgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcztcbnZhciBfX2dldE93blByb3BEZXNjcyQ1ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyQ5ID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkOSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJDkgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCQ3ID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCQ3KG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyQ3ID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkOS5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJDcoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJDkpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJDkoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kOS5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkNyhhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbnZhciBfX3NwcmVhZFByb3BzJDUgPSAoYSwgYikgPT4gX19kZWZQcm9wcyQ1KGEsIF9fZ2V0T3duUHJvcERlc2NzJDUoYikpO1xuZnVuY3Rpb24gdG9SZWZzKG9iamVjdFJlZikge1xuICBpZiAoIXZ1ZURlbWkuaXNSZWYob2JqZWN0UmVmKSlcbiAgICByZXR1cm4gdnVlRGVtaS50b1JlZnMob2JqZWN0UmVmKTtcbiAgY29uc3QgcmVzdWx0ID0gQXJyYXkuaXNBcnJheShvYmplY3RSZWYudmFsdWUpID8gbmV3IEFycmF5KG9iamVjdFJlZi52YWx1ZS5sZW5ndGgpIDoge307XG4gIGZvciAoY29uc3Qga2V5IGluIG9iamVjdFJlZi52YWx1ZSkge1xuICAgIHJlc3VsdFtrZXldID0gdnVlRGVtaS5jdXN0b21SZWYoKCkgPT4gKHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdFJlZi52YWx1ZVtrZXldO1xuICAgICAgfSxcbiAgICAgIHNldCh2KSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9iamVjdFJlZi52YWx1ZSkpIHtcbiAgICAgICAgICBjb25zdCBjb3B5ID0gWy4uLm9iamVjdFJlZi52YWx1ZV07XG4gICAgICAgICAgY29weVtrZXldID0gdjtcbiAgICAgICAgICBvYmplY3RSZWYudmFsdWUgPSBjb3B5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5ld09iamVjdCA9IF9fc3ByZWFkUHJvcHMkNShfX3NwcmVhZFZhbHVlcyQ3KHt9LCBvYmplY3RSZWYudmFsdWUpLCB7IFtrZXldOiB2IH0pO1xuICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihuZXdPYmplY3QsIG9iamVjdFJlZi52YWx1ZSk7XG4gICAgICAgICAgb2JqZWN0UmVmLnZhbHVlID0gbmV3T2JqZWN0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHRyeU9uQmVmb3JlTW91bnQoZm4sIHN5bmMgPSB0cnVlKSB7XG4gIGlmICh2dWVEZW1pLmdldEN1cnJlbnRJbnN0YW5jZSgpKVxuICAgIHZ1ZURlbWkub25CZWZvcmVNb3VudChmbik7XG4gIGVsc2UgaWYgKHN5bmMpXG4gICAgZm4oKTtcbiAgZWxzZVxuICAgIHZ1ZURlbWkubmV4dFRpY2soZm4pO1xufVxuXG5mdW5jdGlvbiB0cnlPbkJlZm9yZVVubW91bnQoZm4pIHtcbiAgaWYgKHZ1ZURlbWkuZ2V0Q3VycmVudEluc3RhbmNlKCkpXG4gICAgdnVlRGVtaS5vbkJlZm9yZVVubW91bnQoZm4pO1xufVxuXG5mdW5jdGlvbiB0cnlPbk1vdW50ZWQoZm4sIHN5bmMgPSB0cnVlKSB7XG4gIGlmICh2dWVEZW1pLmdldEN1cnJlbnRJbnN0YW5jZSgpKVxuICAgIHZ1ZURlbWkub25Nb3VudGVkKGZuKTtcbiAgZWxzZSBpZiAoc3luYylcbiAgICBmbigpO1xuICBlbHNlXG4gICAgdnVlRGVtaS5uZXh0VGljayhmbik7XG59XG5cbmZ1bmN0aW9uIHRyeU9uVW5tb3VudGVkKGZuKSB7XG4gIGlmICh2dWVEZW1pLmdldEN1cnJlbnRJbnN0YW5jZSgpKVxuICAgIHZ1ZURlbWkub25Vbm1vdW50ZWQoZm4pO1xufVxuXG5mdW5jdGlvbiB1bnRpbChyKSB7XG4gIGxldCBpc05vdCA9IGZhbHNlO1xuICBmdW5jdGlvbiB0b01hdGNoKGNvbmRpdGlvbiwgeyBmbHVzaCA9IFwic3luY1wiLCBkZWVwID0gZmFsc2UsIHRpbWVvdXQsIHRocm93T25UaW1lb3V0IH0gPSB7fSkge1xuICAgIGxldCBzdG9wID0gbnVsbDtcbiAgICBjb25zdCB3YXRjaGVyID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIHN0b3AgPSB2dWVEZW1pLndhdGNoKHIsICh2KSA9PiB7XG4gICAgICAgIGlmIChjb25kaXRpb24odikgIT09IGlzTm90KSB7XG4gICAgICAgICAgc3RvcCA9PSBudWxsID8gdm9pZCAwIDogc3RvcCgpO1xuICAgICAgICAgIHJlc29sdmUodik7XG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgZmx1c2gsXG4gICAgICAgIGRlZXAsXG4gICAgICAgIGltbWVkaWF0ZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3QgcHJvbWlzZXMgPSBbd2F0Y2hlcl07XG4gICAgaWYgKHRpbWVvdXQgIT0gbnVsbCkge1xuICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlVGltZW91dCh0aW1lb3V0LCB0aHJvd09uVGltZW91dCkudGhlbigoKSA9PiB2dWVEZW1pLnVucmVmKHIpKS5maW5hbGx5KCgpID0+IHN0b3AgPT0gbnVsbCA/IHZvaWQgMCA6IHN0b3AoKSkpO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yYWNlKHByb21pc2VzKTtcbiAgfVxuICBmdW5jdGlvbiB0b0JlKHZhbHVlLCBvcHRpb25zKSB7XG4gICAgaWYgKCF2dWVEZW1pLmlzUmVmKHZhbHVlKSlcbiAgICAgIHJldHVybiB0b01hdGNoKCh2KSA9PiB2ID09PSB2YWx1ZSwgb3B0aW9ucyk7XG4gICAgY29uc3QgeyBmbHVzaCA9IFwic3luY1wiLCBkZWVwID0gZmFsc2UsIHRpbWVvdXQsIHRocm93T25UaW1lb3V0IH0gPSBvcHRpb25zICE9IG51bGwgPyBvcHRpb25zIDoge307XG4gICAgbGV0IHN0b3AgPSBudWxsO1xuICAgIGNvbnN0IHdhdGNoZXIgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgc3RvcCA9IHZ1ZURlbWkud2F0Y2goW3IsIHZhbHVlXSwgKFt2MSwgdjJdKSA9PiB7XG4gICAgICAgIGlmIChpc05vdCAhPT0gKHYxID09PSB2MikpIHtcbiAgICAgICAgICBzdG9wID09IG51bGwgPyB2b2lkIDAgOiBzdG9wKCk7XG4gICAgICAgICAgcmVzb2x2ZSh2MSk7XG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgZmx1c2gsXG4gICAgICAgIGRlZXAsXG4gICAgICAgIGltbWVkaWF0ZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3QgcHJvbWlzZXMgPSBbd2F0Y2hlcl07XG4gICAgaWYgKHRpbWVvdXQgIT0gbnVsbCkge1xuICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlVGltZW91dCh0aW1lb3V0LCB0aHJvd09uVGltZW91dCkudGhlbigoKSA9PiB2dWVEZW1pLnVucmVmKHIpKS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgc3RvcCA9PSBudWxsID8gdm9pZCAwIDogc3RvcCgpO1xuICAgICAgICByZXR1cm4gdnVlRGVtaS51bnJlZihyKTtcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UucmFjZShwcm9taXNlcyk7XG4gIH1cbiAgZnVuY3Rpb24gdG9CZVRydXRoeShvcHRpb25zKSB7XG4gICAgcmV0dXJuIHRvTWF0Y2goKHYpID0+IEJvb2xlYW4odiksIG9wdGlvbnMpO1xuICB9XG4gIGZ1bmN0aW9uIHRvQmVOdWxsKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gdG9CZShudWxsLCBvcHRpb25zKTtcbiAgfVxuICBmdW5jdGlvbiB0b0JlVW5kZWZpbmVkKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gdG9CZSh2b2lkIDAsIG9wdGlvbnMpO1xuICB9XG4gIGZ1bmN0aW9uIHRvQmVOYU4ob3B0aW9ucykge1xuICAgIHJldHVybiB0b01hdGNoKE51bWJlci5pc05hTiwgb3B0aW9ucyk7XG4gIH1cbiAgZnVuY3Rpb24gdG9Db250YWlucyh2YWx1ZSwgb3B0aW9ucykge1xuICAgIHJldHVybiB0b01hdGNoKCh2KSA9PiB7XG4gICAgICBjb25zdCBhcnJheSA9IEFycmF5LmZyb20odik7XG4gICAgICByZXR1cm4gYXJyYXkuaW5jbHVkZXModmFsdWUpIHx8IGFycmF5LmluY2x1ZGVzKHZ1ZURlbWkudW5yZWYodmFsdWUpKTtcbiAgICB9LCBvcHRpb25zKTtcbiAgfVxuICBmdW5jdGlvbiBjaGFuZ2VkKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gY2hhbmdlZFRpbWVzKDEsIG9wdGlvbnMpO1xuICB9XG4gIGZ1bmN0aW9uIGNoYW5nZWRUaW1lcyhuID0gMSwgb3B0aW9ucykge1xuICAgIGxldCBjb3VudCA9IC0xO1xuICAgIHJldHVybiB0b01hdGNoKCgpID0+IHtcbiAgICAgIGNvdW50ICs9IDE7XG4gICAgICByZXR1cm4gY291bnQgPj0gbjtcbiAgICB9LCBvcHRpb25zKTtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheSh2dWVEZW1pLnVucmVmKHIpKSkge1xuICAgIGNvbnN0IGluc3RhbmNlID0ge1xuICAgICAgdG9NYXRjaCxcbiAgICAgIHRvQ29udGFpbnMsXG4gICAgICBjaGFuZ2VkLFxuICAgICAgY2hhbmdlZFRpbWVzLFxuICAgICAgZ2V0IG5vdCgpIHtcbiAgICAgICAgaXNOb3QgPSAhaXNOb3Q7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGluc3RhbmNlID0ge1xuICAgICAgdG9NYXRjaCxcbiAgICAgIHRvQmUsXG4gICAgICB0b0JlVHJ1dGh5LFxuICAgICAgdG9CZU51bGwsXG4gICAgICB0b0JlTmFOLFxuICAgICAgdG9CZVVuZGVmaW5lZCxcbiAgICAgIGNoYW5nZWQsXG4gICAgICBjaGFuZ2VkVGltZXMsXG4gICAgICBnZXQgbm90KCkge1xuICAgICAgICBpc05vdCA9ICFpc05vdDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlQ291bnRlcihpbml0aWFsVmFsdWUgPSAwLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgY291bnQgPSB2dWVEZW1pLnJlZihpbml0aWFsVmFsdWUpO1xuICBjb25zdCB7XG4gICAgbWF4ID0gSW5maW5pdHksXG4gICAgbWluID0gLUluZmluaXR5XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpbmMgPSAoZGVsdGEgPSAxKSA9PiBjb3VudC52YWx1ZSA9IE1hdGgubWluKG1heCwgY291bnQudmFsdWUgKyBkZWx0YSk7XG4gIGNvbnN0IGRlYyA9IChkZWx0YSA9IDEpID0+IGNvdW50LnZhbHVlID0gTWF0aC5tYXgobWluLCBjb3VudC52YWx1ZSAtIGRlbHRhKTtcbiAgY29uc3QgZ2V0ID0gKCkgPT4gY291bnQudmFsdWU7XG4gIGNvbnN0IHNldCA9ICh2YWwpID0+IGNvdW50LnZhbHVlID0gdmFsO1xuICBjb25zdCByZXNldCA9ICh2YWwgPSBpbml0aWFsVmFsdWUpID0+IHtcbiAgICBpbml0aWFsVmFsdWUgPSB2YWw7XG4gICAgcmV0dXJuIHNldCh2YWwpO1xuICB9O1xuICByZXR1cm4geyBjb3VudCwgaW5jLCBkZWMsIGdldCwgc2V0LCByZXNldCB9O1xufVxuXG5jb25zdCBSRUdFWF9QQVJTRSA9IC9eKFxcZHs0fSlbLS9dPyhcXGR7MSwyfSk/Wy0vXT8oXFxkezAsMn0pW1R0XFxzXSooXFxkezEsMn0pPzo/KFxcZHsxLDJ9KT86PyhcXGR7MSwyfSk/Wy46XT8oXFxkKyk/JC87XG5jb25zdCBSRUdFWF9GT1JNQVQgPSAvXFxbKFteXFxdXSspXXxZezEsNH18TXsxLDR9fER7MSwyfXxkezEsNH18SHsxLDJ9fGh7MSwyfXxhfEF8bXsxLDJ9fHN7MSwyfXxaezEsMn18U1NTL2c7XG5jb25zdCBmb3JtYXREYXRlID0gKGRhdGUsIGZvcm1hdFN0cikgPT4ge1xuICBjb25zdCB5ZWFycyA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgbW9udGggPSBkYXRlLmdldE1vbnRoKCk7XG4gIGNvbnN0IGRheXMgPSBkYXRlLmdldERhdGUoKTtcbiAgY29uc3QgaG91cnMgPSBkYXRlLmdldEhvdXJzKCk7XG4gIGNvbnN0IG1pbnV0ZXMgPSBkYXRlLmdldE1pbnV0ZXMoKTtcbiAgY29uc3Qgc2Vjb25kcyA9IGRhdGUuZ2V0U2Vjb25kcygpO1xuICBjb25zdCBtaWxsaXNlY29uZHMgPSBkYXRlLmdldE1pbGxpc2Vjb25kcygpO1xuICBjb25zdCBkYXkgPSBkYXRlLmdldERheSgpO1xuICBjb25zdCBtYXRjaGVzID0ge1xuICAgIFlZOiBTdHJpbmcoeWVhcnMpLnNsaWNlKC0yKSxcbiAgICBZWVlZOiB5ZWFycyxcbiAgICBNOiBtb250aCArIDEsXG4gICAgTU06IGAke21vbnRoICsgMX1gLnBhZFN0YXJ0KDIsIFwiMFwiKSxcbiAgICBEOiBTdHJpbmcoZGF5cyksXG4gICAgREQ6IGAke2RheXN9YC5wYWRTdGFydCgyLCBcIjBcIiksXG4gICAgSDogU3RyaW5nKGhvdXJzKSxcbiAgICBISDogYCR7aG91cnN9YC5wYWRTdGFydCgyLCBcIjBcIiksXG4gICAgaDogYCR7aG91cnMgJSAxMiB8fCAxMn1gLnBhZFN0YXJ0KDEsIFwiMFwiKSxcbiAgICBoaDogYCR7aG91cnMgJSAxMiB8fCAxMn1gLnBhZFN0YXJ0KDIsIFwiMFwiKSxcbiAgICBtOiBTdHJpbmcobWludXRlcyksXG4gICAgbW06IGAke21pbnV0ZXN9YC5wYWRTdGFydCgyLCBcIjBcIiksXG4gICAgczogU3RyaW5nKHNlY29uZHMpLFxuICAgIHNzOiBgJHtzZWNvbmRzfWAucGFkU3RhcnQoMiwgXCIwXCIpLFxuICAgIFNTUzogYCR7bWlsbGlzZWNvbmRzfWAucGFkU3RhcnQoMywgXCIwXCIpLFxuICAgIGQ6IGRheVxuICB9O1xuICByZXR1cm4gZm9ybWF0U3RyLnJlcGxhY2UoUkVHRVhfRk9STUFULCAobWF0Y2gsICQxKSA9PiAkMSB8fCBtYXRjaGVzW21hdGNoXSk7XG59O1xuY29uc3Qgbm9ybWFsaXplRGF0ZSA9IChkYXRlKSA9PiB7XG4gIGlmIChkYXRlID09PSBudWxsKVxuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICBpZiAoZGF0ZSA9PT0gdm9pZCAwKVxuICAgIHJldHVybiBuZXcgRGF0ZSgpO1xuICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUpXG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUpO1xuICBpZiAodHlwZW9mIGRhdGUgPT09IFwic3RyaW5nXCIgJiYgIS9aJC9pLnRlc3QoZGF0ZSkpIHtcbiAgICBjb25zdCBkID0gZGF0ZS5tYXRjaChSRUdFWF9QQVJTRSk7XG4gICAgaWYgKGQpIHtcbiAgICAgIGNvbnN0IG0gPSBkWzJdIC0gMSB8fCAwO1xuICAgICAgY29uc3QgbXMgPSAoZFs3XSB8fCBcIjBcIikuc3Vic3RyaW5nKDAsIDMpO1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKGRbMV0sIG0sIGRbM10gfHwgMSwgZFs0XSB8fCAwLCBkWzVdIHx8IDAsIGRbNl0gfHwgMCwgbXMpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbmV3IERhdGUoZGF0ZSk7XG59O1xuZnVuY3Rpb24gdXNlRGF0ZUZvcm1hdChkYXRlLCBmb3JtYXRTdHIgPSBcIkhIOm1tOnNzXCIpIHtcbiAgcmV0dXJuIHZ1ZURlbWkuY29tcHV0ZWQoKCkgPT4gZm9ybWF0RGF0ZShub3JtYWxpemVEYXRlKHZ1ZURlbWkudW5yZWYoZGF0ZSkpLCB2dWVEZW1pLnVucmVmKGZvcm1hdFN0cikpKTtcbn1cblxuZnVuY3Rpb24gdXNlSW50ZXJ2YWxGbihjYiwgaW50ZXJ2YWwgPSAxZTMsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgaW1tZWRpYXRlID0gdHJ1ZSxcbiAgICBpbW1lZGlhdGVDYWxsYmFjayA9IGZhbHNlXG4gIH0gPSBvcHRpb25zO1xuICBsZXQgdGltZXIgPSBudWxsO1xuICBjb25zdCBpc0FjdGl2ZSA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgZnVuY3Rpb24gY2xlYW4oKSB7XG4gICAgaWYgKHRpbWVyKSB7XG4gICAgICBjbGVhckludGVydmFsKHRpbWVyKTtcbiAgICAgIHRpbWVyID0gbnVsbDtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gcGF1c2UoKSB7XG4gICAgaXNBY3RpdmUudmFsdWUgPSBmYWxzZTtcbiAgICBjbGVhbigpO1xuICB9XG4gIGZ1bmN0aW9uIHJlc3VtZSgpIHtcbiAgICBpZiAodnVlRGVtaS51bnJlZihpbnRlcnZhbCkgPD0gMClcbiAgICAgIHJldHVybjtcbiAgICBpc0FjdGl2ZS52YWx1ZSA9IHRydWU7XG4gICAgaWYgKGltbWVkaWF0ZUNhbGxiYWNrKVxuICAgICAgY2IoKTtcbiAgICBjbGVhbigpO1xuICAgIHRpbWVyID0gc2V0SW50ZXJ2YWwoY2IsIHZ1ZURlbWkudW5yZWYoaW50ZXJ2YWwpKTtcbiAgfVxuICBpZiAoaW1tZWRpYXRlICYmIGlzQ2xpZW50KVxuICAgIHJlc3VtZSgpO1xuICBpZiAodnVlRGVtaS5pc1JlZihpbnRlcnZhbCkpIHtcbiAgICBjb25zdCBzdG9wV2F0Y2ggPSB2dWVEZW1pLndhdGNoKGludGVydmFsLCAoKSA9PiB7XG4gICAgICBpZiAoaXNBY3RpdmUudmFsdWUgJiYgaXNDbGllbnQpXG4gICAgICAgIHJlc3VtZSgpO1xuICAgIH0pO1xuICAgIHRyeU9uU2NvcGVEaXNwb3NlKHN0b3BXYXRjaCk7XG4gIH1cbiAgdHJ5T25TY29wZURpc3Bvc2UocGF1c2UpO1xuICByZXR1cm4ge1xuICAgIGlzQWN0aXZlLFxuICAgIHBhdXNlLFxuICAgIHJlc3VtZVxuICB9O1xufVxuXG52YXIgX19kZWZQcm9wJDYgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyQ4ID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkOCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJDggPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCQ2ID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCQ2KG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyQ2ID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkOC5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJDYoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJDgpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJDgoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kOC5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkNihhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbmZ1bmN0aW9uIHVzZUludGVydmFsKGludGVydmFsID0gMWUzLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGNvbnRyb2xzOiBleHBvc2VDb250cm9scyA9IGZhbHNlLFxuICAgIGltbWVkaWF0ZSA9IHRydWVcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGNvdW50ZXIgPSB2dWVEZW1pLnJlZigwKTtcbiAgY29uc3QgY29udHJvbHMgPSB1c2VJbnRlcnZhbEZuKCgpID0+IGNvdW50ZXIudmFsdWUgKz0gMSwgaW50ZXJ2YWwsIHsgaW1tZWRpYXRlIH0pO1xuICBpZiAoZXhwb3NlQ29udHJvbHMpIHtcbiAgICByZXR1cm4gX19zcHJlYWRWYWx1ZXMkNih7XG4gICAgICBjb3VudGVyXG4gICAgfSwgY29udHJvbHMpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjb3VudGVyO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVzZUxhc3RDaGFuZ2VkKHNvdXJjZSwgb3B0aW9ucyA9IHt9KSB7XG4gIHZhciBfYTtcbiAgY29uc3QgbXMgPSB2dWVEZW1pLnJlZigoX2EgPSBvcHRpb25zLmluaXRpYWxWYWx1ZSkgIT0gbnVsbCA/IF9hIDogbnVsbCk7XG4gIHZ1ZURlbWkud2F0Y2goc291cmNlLCAoKSA9PiBtcy52YWx1ZSA9IHRpbWVzdGFtcCgpLCBvcHRpb25zKTtcbiAgcmV0dXJuIG1zO1xufVxuXG5mdW5jdGlvbiB1c2VUaW1lb3V0Rm4oY2IsIGludGVydmFsLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGltbWVkaWF0ZSA9IHRydWVcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGlzUGVuZGluZyA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgbGV0IHRpbWVyID0gbnVsbDtcbiAgZnVuY3Rpb24gY2xlYXIoKSB7XG4gICAgaWYgKHRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgdGltZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBzdG9wKCkge1xuICAgIGlzUGVuZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgIGNsZWFyKCk7XG4gIH1cbiAgZnVuY3Rpb24gc3RhcnQoLi4uYXJncykge1xuICAgIGNsZWFyKCk7XG4gICAgaXNQZW5kaW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaXNQZW5kaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aW1lciA9IG51bGw7XG4gICAgICBjYiguLi5hcmdzKTtcbiAgICB9LCB2dWVEZW1pLnVucmVmKGludGVydmFsKSk7XG4gIH1cbiAgaWYgKGltbWVkaWF0ZSkge1xuICAgIGlzUGVuZGluZy52YWx1ZSA9IHRydWU7XG4gICAgaWYgKGlzQ2xpZW50KVxuICAgICAgc3RhcnQoKTtcbiAgfVxuICB0cnlPblNjb3BlRGlzcG9zZShzdG9wKTtcbiAgcmV0dXJuIHtcbiAgICBpc1BlbmRpbmcsXG4gICAgc3RhcnQsXG4gICAgc3RvcFxuICB9O1xufVxuXG52YXIgX19kZWZQcm9wJDUgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyQ3ID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkNyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJDcgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCQ1ID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCQ1KG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyQ1ID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkNy5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJDUoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJDcpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJDcoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kNy5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkNShhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbmZ1bmN0aW9uIHVzZVRpbWVvdXQoaW50ZXJ2YWwgPSAxZTMsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgY29udHJvbHM6IGV4cG9zZUNvbnRyb2xzID0gZmFsc2VcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGNvbnRyb2xzID0gdXNlVGltZW91dEZuKG5vb3AsIGludGVydmFsLCBvcHRpb25zKTtcbiAgY29uc3QgcmVhZHkgPSB2dWVEZW1pLmNvbXB1dGVkKCgpID0+ICFjb250cm9scy5pc1BlbmRpbmcudmFsdWUpO1xuICBpZiAoZXhwb3NlQ29udHJvbHMpIHtcbiAgICByZXR1cm4gX19zcHJlYWRWYWx1ZXMkNSh7XG4gICAgICByZWFkeVxuICAgIH0sIGNvbnRyb2xzKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcmVhZHk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlVG9nZ2xlKGluaXRpYWxWYWx1ZSA9IGZhbHNlLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHRydXRoeVZhbHVlID0gdHJ1ZSxcbiAgICBmYWxzeVZhbHVlID0gZmFsc2VcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHZhbHVlSXNSZWYgPSB2dWVEZW1pLmlzUmVmKGluaXRpYWxWYWx1ZSk7XG4gIGNvbnN0IGlubmVyVmFsdWUgPSB2dWVEZW1pLnJlZihpbml0aWFsVmFsdWUpO1xuICBmdW5jdGlvbiB0b2dnbGUodmFsdWUpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgaW5uZXJWYWx1ZS52YWx1ZSA9IHZhbHVlO1xuICAgICAgcmV0dXJuIGlubmVyVmFsdWUudmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlubmVyVmFsdWUudmFsdWUgPSBpbm5lclZhbHVlLnZhbHVlID09PSB2dWVEZW1pLnVucmVmKHRydXRoeVZhbHVlKSA/IHZ1ZURlbWkudW5yZWYoZmFsc3lWYWx1ZSkgOiB2dWVEZW1pLnVucmVmKHRydXRoeVZhbHVlKTtcbiAgICAgIHJldHVybiBpbm5lclZhbHVlLnZhbHVlO1xuICAgIH1cbiAgfVxuICBpZiAodmFsdWVJc1JlZilcbiAgICByZXR1cm4gdG9nZ2xlO1xuICBlbHNlXG4gICAgcmV0dXJuIFtpbm5lclZhbHVlLCB0b2dnbGVdO1xufVxuXG5mdW5jdGlvbiB3YXRjaEFycmF5KHNvdXJjZSwgY2IsIG9wdGlvbnMpIHtcbiAgbGV0IG9sZExpc3QgPSAob3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5pbW1lZGlhdGUpID8gW10gOiBbXG4gICAgLi4uc291cmNlIGluc3RhbmNlb2YgRnVuY3Rpb24gPyBzb3VyY2UoKSA6IEFycmF5LmlzQXJyYXkoc291cmNlKSA/IHNvdXJjZSA6IHZ1ZURlbWkudW5yZWYoc291cmNlKVxuICBdO1xuICByZXR1cm4gdnVlRGVtaS53YXRjaChzb3VyY2UsIChuZXdMaXN0LCBfLCBvbkNsZWFudXApID0+IHtcbiAgICBjb25zdCBvbGRMaXN0UmVtYWlucyA9IG5ldyBBcnJheShvbGRMaXN0Lmxlbmd0aCk7XG4gICAgY29uc3QgYWRkZWQgPSBbXTtcbiAgICBmb3IgKGNvbnN0IG9iaiBvZiBuZXdMaXN0KSB7XG4gICAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2xkTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoIW9sZExpc3RSZW1haW5zW2ldICYmIG9iaiA9PT0gb2xkTGlzdFtpXSkge1xuICAgICAgICAgIG9sZExpc3RSZW1haW5zW2ldID0gdHJ1ZTtcbiAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghZm91bmQpXG4gICAgICAgIGFkZGVkLnB1c2gob2JqKTtcbiAgICB9XG4gICAgY29uc3QgcmVtb3ZlZCA9IG9sZExpc3QuZmlsdGVyKChfMiwgaSkgPT4gIW9sZExpc3RSZW1haW5zW2ldKTtcbiAgICBjYihuZXdMaXN0LCBvbGRMaXN0LCBhZGRlZCwgcmVtb3ZlZCwgb25DbGVhbnVwKTtcbiAgICBvbGRMaXN0ID0gWy4uLm5ld0xpc3RdO1xuICB9LCBvcHRpb25zKTtcbn1cblxudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkNiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJDYgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSQ2ID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX29ialJlc3QkNSA9IChzb3VyY2UsIGV4Y2x1ZGUpID0+IHtcbiAgdmFyIHRhcmdldCA9IHt9O1xuICBmb3IgKHZhciBwcm9wIGluIHNvdXJjZSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJDYuY2FsbChzb3VyY2UsIHByb3ApICYmIGV4Y2x1ZGUuaW5kZXhPZihwcm9wKSA8IDApXG4gICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gIGlmIChzb3VyY2UgIT0gbnVsbCAmJiBfX2dldE93blByb3BTeW1ib2xzJDYpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJDYoc291cmNlKSkge1xuICAgICAgaWYgKGV4Y2x1ZGUuaW5kZXhPZihwcm9wKSA8IDAgJiYgX19wcm9wSXNFbnVtJDYuY2FsbChzb3VyY2UsIHByb3ApKVxuICAgICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gICAgfVxuICByZXR1cm4gdGFyZ2V0O1xufTtcbmZ1bmN0aW9uIHdhdGNoV2l0aEZpbHRlcihzb3VyY2UsIGNiLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgX2EgPSBvcHRpb25zLCB7XG4gICAgZXZlbnRGaWx0ZXIgPSBieXBhc3NGaWx0ZXJcbiAgfSA9IF9hLCB3YXRjaE9wdGlvbnMgPSBfX29ialJlc3QkNShfYSwgW1xuICAgIFwiZXZlbnRGaWx0ZXJcIlxuICBdKTtcbiAgcmV0dXJuIHZ1ZURlbWkud2F0Y2goc291cmNlLCBjcmVhdGVGaWx0ZXJXcmFwcGVyKGV2ZW50RmlsdGVyLCBjYiksIHdhdGNoT3B0aW9ucyk7XG59XG5cbnZhciBfX2dldE93blByb3BTeW1ib2xzJDUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCQ1ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0kNSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19vYmpSZXN0JDQgPSAoc291cmNlLCBleGNsdWRlKSA9PiB7XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgZm9yICh2YXIgcHJvcCBpbiBzb3VyY2UpXG4gICAgaWYgKF9faGFzT3duUHJvcCQ1LmNhbGwoc291cmNlLCBwcm9wKSAmJiBleGNsdWRlLmluZGV4T2YocHJvcCkgPCAwKVxuICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdO1xuICBpZiAoc291cmNlICE9IG51bGwgJiYgX19nZXRPd25Qcm9wU3ltYm9scyQ1KVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyQ1KHNvdXJjZSkpIHtcbiAgICAgIGlmIChleGNsdWRlLmluZGV4T2YocHJvcCkgPCAwICYmIF9fcHJvcElzRW51bSQ1LmNhbGwoc291cmNlLCBwcm9wKSlcbiAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdO1xuICAgIH1cbiAgcmV0dXJuIHRhcmdldDtcbn07XG5mdW5jdGlvbiB3YXRjaEF0TW9zdChzb3VyY2UsIGNiLCBvcHRpb25zKSB7XG4gIGNvbnN0IF9hID0gb3B0aW9ucywge1xuICAgIGNvdW50XG4gIH0gPSBfYSwgd2F0Y2hPcHRpb25zID0gX19vYmpSZXN0JDQoX2EsIFtcbiAgICBcImNvdW50XCJcbiAgXSk7XG4gIGNvbnN0IGN1cnJlbnQgPSB2dWVEZW1pLnJlZigwKTtcbiAgY29uc3Qgc3RvcCA9IHdhdGNoV2l0aEZpbHRlcihzb3VyY2UsICguLi5hcmdzKSA9PiB7XG4gICAgY3VycmVudC52YWx1ZSArPSAxO1xuICAgIGlmIChjdXJyZW50LnZhbHVlID49IHZ1ZURlbWkudW5yZWYoY291bnQpKVxuICAgICAgdnVlRGVtaS5uZXh0VGljaygoKSA9PiBzdG9wKCkpO1xuICAgIGNiKC4uLmFyZ3MpO1xuICB9LCB3YXRjaE9wdGlvbnMpO1xuICByZXR1cm4geyBjb3VudDogY3VycmVudCwgc3RvcCB9O1xufVxuXG52YXIgX19kZWZQcm9wJDQgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19kZWZQcm9wcyQ0ID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXM7XG52YXIgX19nZXRPd25Qcm9wRGVzY3MkNCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzO1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkNCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJDQgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSQ0ID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkNCA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkNChvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkNCA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJDQuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCQ0KGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyQ0KVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyQ0KGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJDQuY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJDQoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG52YXIgX19zcHJlYWRQcm9wcyQ0ID0gKGEsIGIpID0+IF9fZGVmUHJvcHMkNChhLCBfX2dldE93blByb3BEZXNjcyQ0KGIpKTtcbnZhciBfX29ialJlc3QkMyA9IChzb3VyY2UsIGV4Y2x1ZGUpID0+IHtcbiAgdmFyIHRhcmdldCA9IHt9O1xuICBmb3IgKHZhciBwcm9wIGluIHNvdXJjZSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJDQuY2FsbChzb3VyY2UsIHByb3ApICYmIGV4Y2x1ZGUuaW5kZXhPZihwcm9wKSA8IDApXG4gICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gIGlmIChzb3VyY2UgIT0gbnVsbCAmJiBfX2dldE93blByb3BTeW1ib2xzJDQpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJDQoc291cmNlKSkge1xuICAgICAgaWYgKGV4Y2x1ZGUuaW5kZXhPZihwcm9wKSA8IDAgJiYgX19wcm9wSXNFbnVtJDQuY2FsbChzb3VyY2UsIHByb3ApKVxuICAgICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gICAgfVxuICByZXR1cm4gdGFyZ2V0O1xufTtcbmZ1bmN0aW9uIHdhdGNoRGVib3VuY2VkKHNvdXJjZSwgY2IsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBfYSA9IG9wdGlvbnMsIHtcbiAgICBkZWJvdW5jZSA9IDAsXG4gICAgbWF4V2FpdCA9IHZvaWQgMFxuICB9ID0gX2EsIHdhdGNoT3B0aW9ucyA9IF9fb2JqUmVzdCQzKF9hLCBbXG4gICAgXCJkZWJvdW5jZVwiLFxuICAgIFwibWF4V2FpdFwiXG4gIF0pO1xuICByZXR1cm4gd2F0Y2hXaXRoRmlsdGVyKHNvdXJjZSwgY2IsIF9fc3ByZWFkUHJvcHMkNChfX3NwcmVhZFZhbHVlcyQ0KHt9LCB3YXRjaE9wdGlvbnMpLCB7XG4gICAgZXZlbnRGaWx0ZXI6IGRlYm91bmNlRmlsdGVyKGRlYm91bmNlLCB7IG1heFdhaXQgfSlcbiAgfSkpO1xufVxuXG52YXIgX19kZWZQcm9wJDMgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19kZWZQcm9wcyQzID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXM7XG52YXIgX19nZXRPd25Qcm9wRGVzY3MkMyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzO1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkMyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJDMgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSQzID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkMyA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkMyhvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkMyA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJDMuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCQzKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyQzKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyQzKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJDMuY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJDMoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG52YXIgX19zcHJlYWRQcm9wcyQzID0gKGEsIGIpID0+IF9fZGVmUHJvcHMkMyhhLCBfX2dldE93blByb3BEZXNjcyQzKGIpKTtcbnZhciBfX29ialJlc3QkMiA9IChzb3VyY2UsIGV4Y2x1ZGUpID0+IHtcbiAgdmFyIHRhcmdldCA9IHt9O1xuICBmb3IgKHZhciBwcm9wIGluIHNvdXJjZSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJDMuY2FsbChzb3VyY2UsIHByb3ApICYmIGV4Y2x1ZGUuaW5kZXhPZihwcm9wKSA8IDApXG4gICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gIGlmIChzb3VyY2UgIT0gbnVsbCAmJiBfX2dldE93blByb3BTeW1ib2xzJDMpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJDMoc291cmNlKSkge1xuICAgICAgaWYgKGV4Y2x1ZGUuaW5kZXhPZihwcm9wKSA8IDAgJiYgX19wcm9wSXNFbnVtJDMuY2FsbChzb3VyY2UsIHByb3ApKVxuICAgICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gICAgfVxuICByZXR1cm4gdGFyZ2V0O1xufTtcbmZ1bmN0aW9uIHdhdGNoSWdub3JhYmxlKHNvdXJjZSwgY2IsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBfYSA9IG9wdGlvbnMsIHtcbiAgICBldmVudEZpbHRlciA9IGJ5cGFzc0ZpbHRlclxuICB9ID0gX2EsIHdhdGNoT3B0aW9ucyA9IF9fb2JqUmVzdCQyKF9hLCBbXG4gICAgXCJldmVudEZpbHRlclwiXG4gIF0pO1xuICBjb25zdCBmaWx0ZXJlZENiID0gY3JlYXRlRmlsdGVyV3JhcHBlcihldmVudEZpbHRlciwgY2IpO1xuICBsZXQgaWdub3JlVXBkYXRlcztcbiAgbGV0IGlnbm9yZVByZXZBc3luY1VwZGF0ZXM7XG4gIGxldCBzdG9wO1xuICBpZiAod2F0Y2hPcHRpb25zLmZsdXNoID09PSBcInN5bmNcIikge1xuICAgIGNvbnN0IGlnbm9yZSA9IHZ1ZURlbWkucmVmKGZhbHNlKTtcbiAgICBpZ25vcmVQcmV2QXN5bmNVcGRhdGVzID0gKCkgPT4ge1xuICAgIH07XG4gICAgaWdub3JlVXBkYXRlcyA9ICh1cGRhdGVyKSA9PiB7XG4gICAgICBpZ25vcmUudmFsdWUgPSB0cnVlO1xuICAgICAgdXBkYXRlcigpO1xuICAgICAgaWdub3JlLnZhbHVlID0gZmFsc2U7XG4gICAgfTtcbiAgICBzdG9wID0gdnVlRGVtaS53YXRjaChzb3VyY2UsICguLi5hcmdzKSA9PiB7XG4gICAgICBpZiAoIWlnbm9yZS52YWx1ZSlcbiAgICAgICAgZmlsdGVyZWRDYiguLi5hcmdzKTtcbiAgICB9LCB3YXRjaE9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGRpc3Bvc2FibGVzID0gW107XG4gICAgY29uc3QgaWdub3JlQ291bnRlciA9IHZ1ZURlbWkucmVmKDApO1xuICAgIGNvbnN0IHN5bmNDb3VudGVyID0gdnVlRGVtaS5yZWYoMCk7XG4gICAgaWdub3JlUHJldkFzeW5jVXBkYXRlcyA9ICgpID0+IHtcbiAgICAgIGlnbm9yZUNvdW50ZXIudmFsdWUgPSBzeW5jQ291bnRlci52YWx1ZTtcbiAgICB9O1xuICAgIGRpc3Bvc2FibGVzLnB1c2godnVlRGVtaS53YXRjaChzb3VyY2UsICgpID0+IHtcbiAgICAgIHN5bmNDb3VudGVyLnZhbHVlKys7XG4gICAgfSwgX19zcHJlYWRQcm9wcyQzKF9fc3ByZWFkVmFsdWVzJDMoe30sIHdhdGNoT3B0aW9ucyksIHsgZmx1c2g6IFwic3luY1wiIH0pKSk7XG4gICAgaWdub3JlVXBkYXRlcyA9ICh1cGRhdGVyKSA9PiB7XG4gICAgICBjb25zdCBzeW5jQ291bnRlclByZXYgPSBzeW5jQ291bnRlci52YWx1ZTtcbiAgICAgIHVwZGF0ZXIoKTtcbiAgICAgIGlnbm9yZUNvdW50ZXIudmFsdWUgKz0gc3luY0NvdW50ZXIudmFsdWUgLSBzeW5jQ291bnRlclByZXY7XG4gICAgfTtcbiAgICBkaXNwb3NhYmxlcy5wdXNoKHZ1ZURlbWkud2F0Y2goc291cmNlLCAoLi4uYXJncykgPT4ge1xuICAgICAgY29uc3QgaWdub3JlID0gaWdub3JlQ291bnRlci52YWx1ZSA+IDAgJiYgaWdub3JlQ291bnRlci52YWx1ZSA9PT0gc3luY0NvdW50ZXIudmFsdWU7XG4gICAgICBpZ25vcmVDb3VudGVyLnZhbHVlID0gMDtcbiAgICAgIHN5bmNDb3VudGVyLnZhbHVlID0gMDtcbiAgICAgIGlmIChpZ25vcmUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGZpbHRlcmVkQ2IoLi4uYXJncyk7XG4gICAgfSwgd2F0Y2hPcHRpb25zKSk7XG4gICAgc3RvcCA9ICgpID0+IHtcbiAgICAgIGRpc3Bvc2FibGVzLmZvckVhY2goKGZuKSA9PiBmbigpKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiB7IHN0b3AsIGlnbm9yZVVwZGF0ZXMsIGlnbm9yZVByZXZBc3luY1VwZGF0ZXMgfTtcbn1cblxuZnVuY3Rpb24gd2F0Y2hPbmNlKHNvdXJjZSwgY2IsIG9wdGlvbnMpIHtcbiAgY29uc3Qgc3RvcCA9IHZ1ZURlbWkud2F0Y2goc291cmNlLCAoLi4uYXJncykgPT4ge1xuICAgIHZ1ZURlbWkubmV4dFRpY2soKCkgPT4gc3RvcCgpKTtcbiAgICByZXR1cm4gY2IoLi4uYXJncyk7XG4gIH0sIG9wdGlvbnMpO1xufVxuXG52YXIgX19kZWZQcm9wJDIgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19kZWZQcm9wcyQyID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXM7XG52YXIgX19nZXRPd25Qcm9wRGVzY3MkMiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzO1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMkMiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wJDIgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSQyID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AkMiA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkMihvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMkMiA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJDIuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcCQyKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scyQyKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyQyKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtJDIuY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wJDIoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG52YXIgX19zcHJlYWRQcm9wcyQyID0gKGEsIGIpID0+IF9fZGVmUHJvcHMkMihhLCBfX2dldE93blByb3BEZXNjcyQyKGIpKTtcbnZhciBfX29ialJlc3QkMSA9IChzb3VyY2UsIGV4Y2x1ZGUpID0+IHtcbiAgdmFyIHRhcmdldCA9IHt9O1xuICBmb3IgKHZhciBwcm9wIGluIHNvdXJjZSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJDIuY2FsbChzb3VyY2UsIHByb3ApICYmIGV4Y2x1ZGUuaW5kZXhPZihwcm9wKSA8IDApXG4gICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gIGlmIChzb3VyY2UgIT0gbnVsbCAmJiBfX2dldE93blByb3BTeW1ib2xzJDIpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJDIoc291cmNlKSkge1xuICAgICAgaWYgKGV4Y2x1ZGUuaW5kZXhPZihwcm9wKSA8IDAgJiYgX19wcm9wSXNFbnVtJDIuY2FsbChzb3VyY2UsIHByb3ApKVxuICAgICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gICAgfVxuICByZXR1cm4gdGFyZ2V0O1xufTtcbmZ1bmN0aW9uIHdhdGNoUGF1c2FibGUoc291cmNlLCBjYiwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IF9hID0gb3B0aW9ucywge1xuICAgIGV2ZW50RmlsdGVyOiBmaWx0ZXJcbiAgfSA9IF9hLCB3YXRjaE9wdGlvbnMgPSBfX29ialJlc3QkMShfYSwgW1xuICAgIFwiZXZlbnRGaWx0ZXJcIlxuICBdKTtcbiAgY29uc3QgeyBldmVudEZpbHRlciwgcGF1c2UsIHJlc3VtZSwgaXNBY3RpdmUgfSA9IHBhdXNhYmxlRmlsdGVyKGZpbHRlcik7XG4gIGNvbnN0IHN0b3AgPSB3YXRjaFdpdGhGaWx0ZXIoc291cmNlLCBjYiwgX19zcHJlYWRQcm9wcyQyKF9fc3ByZWFkVmFsdWVzJDIoe30sIHdhdGNoT3B0aW9ucyksIHtcbiAgICBldmVudEZpbHRlclxuICB9KSk7XG4gIHJldHVybiB7IHN0b3AsIHBhdXNlLCByZXN1bWUsIGlzQWN0aXZlIH07XG59XG5cbnZhciBfX2RlZlByb3AkMSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2RlZlByb3BzJDEgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcztcbnZhciBfX2dldE93blByb3BEZXNjcyQxID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyQxID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AkMSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtJDEgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCQxID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCQxKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyQxID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AkMS5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wJDEoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzJDEpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJDEoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0kMS5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AkMShhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbnZhciBfX3NwcmVhZFByb3BzJDEgPSAoYSwgYikgPT4gX19kZWZQcm9wcyQxKGEsIF9fZ2V0T3duUHJvcERlc2NzJDEoYikpO1xudmFyIF9fb2JqUmVzdCA9IChzb3VyY2UsIGV4Y2x1ZGUpID0+IHtcbiAgdmFyIHRhcmdldCA9IHt9O1xuICBmb3IgKHZhciBwcm9wIGluIHNvdXJjZSlcbiAgICBpZiAoX19oYXNPd25Qcm9wJDEuY2FsbChzb3VyY2UsIHByb3ApICYmIGV4Y2x1ZGUuaW5kZXhPZihwcm9wKSA8IDApXG4gICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gIGlmIChzb3VyY2UgIT0gbnVsbCAmJiBfX2dldE93blByb3BTeW1ib2xzJDEpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzJDEoc291cmNlKSkge1xuICAgICAgaWYgKGV4Y2x1ZGUuaW5kZXhPZihwcm9wKSA8IDAgJiYgX19wcm9wSXNFbnVtJDEuY2FsbChzb3VyY2UsIHByb3ApKVxuICAgICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gICAgfVxuICByZXR1cm4gdGFyZ2V0O1xufTtcbmZ1bmN0aW9uIHdhdGNoVGhyb3R0bGVkKHNvdXJjZSwgY2IsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBfYSA9IG9wdGlvbnMsIHtcbiAgICB0aHJvdHRsZSA9IDAsXG4gICAgdHJhaWxpbmcgPSB0cnVlLFxuICAgIGxlYWRpbmcgPSB0cnVlXG4gIH0gPSBfYSwgd2F0Y2hPcHRpb25zID0gX19vYmpSZXN0KF9hLCBbXG4gICAgXCJ0aHJvdHRsZVwiLFxuICAgIFwidHJhaWxpbmdcIixcbiAgICBcImxlYWRpbmdcIlxuICBdKTtcbiAgcmV0dXJuIHdhdGNoV2l0aEZpbHRlcihzb3VyY2UsIGNiLCBfX3NwcmVhZFByb3BzJDEoX19zcHJlYWRWYWx1ZXMkMSh7fSwgd2F0Y2hPcHRpb25zKSwge1xuICAgIGV2ZW50RmlsdGVyOiB0aHJvdHRsZUZpbHRlcih0aHJvdHRsZSwgdHJhaWxpbmcsIGxlYWRpbmcpXG4gIH0pKTtcbn1cblxudmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2RlZlByb3BzID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXM7XG52YXIgX19nZXRPd25Qcm9wRGVzY3MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycztcbnZhciBfX2dldE93blByb3BTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcChvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcC5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scylcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0uY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xudmFyIF9fc3ByZWFkUHJvcHMgPSAoYSwgYikgPT4gX19kZWZQcm9wcyhhLCBfX2dldE93blByb3BEZXNjcyhiKSk7XG5mdW5jdGlvbiB3YXRjaFRyaWdnZXJhYmxlKHNvdXJjZSwgY2IsIG9wdGlvbnMgPSB7fSkge1xuICBsZXQgY2xlYW51cEZuO1xuICBmdW5jdGlvbiBvbkVmZmVjdCgpIHtcbiAgICBpZiAoIWNsZWFudXBGbilcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBmbiA9IGNsZWFudXBGbjtcbiAgICBjbGVhbnVwRm4gPSB2b2lkIDA7XG4gICAgZm4oKTtcbiAgfVxuICBmdW5jdGlvbiBvbkNsZWFudXAoY2FsbGJhY2spIHtcbiAgICBjbGVhbnVwRm4gPSBjYWxsYmFjaztcbiAgfVxuICBjb25zdCBfY2IgPSAodmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgb25FZmZlY3QoKTtcbiAgICByZXR1cm4gY2IodmFsdWUsIG9sZFZhbHVlLCBvbkNsZWFudXApO1xuICB9O1xuICBjb25zdCByZXMgPSB3YXRjaElnbm9yYWJsZShzb3VyY2UsIF9jYiwgb3B0aW9ucyk7XG4gIGNvbnN0IHsgaWdub3JlVXBkYXRlcyB9ID0gcmVzO1xuICBjb25zdCB0cmlnZ2VyID0gKCkgPT4ge1xuICAgIGxldCByZXMyO1xuICAgIGlnbm9yZVVwZGF0ZXMoKCkgPT4ge1xuICAgICAgcmVzMiA9IF9jYihnZXRXYXRjaFNvdXJjZXMoc291cmNlKSwgZ2V0T2xkVmFsdWUoc291cmNlKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlczI7XG4gIH07XG4gIHJldHVybiBfX3NwcmVhZFByb3BzKF9fc3ByZWFkVmFsdWVzKHt9LCByZXMpLCB7XG4gICAgdHJpZ2dlclxuICB9KTtcbn1cbmZ1bmN0aW9uIGdldFdhdGNoU291cmNlcyhzb3VyY2VzKSB7XG4gIGlmICh2dWVEZW1pLmlzUmVhY3RpdmUoc291cmNlcykpXG4gICAgcmV0dXJuIHNvdXJjZXM7XG4gIGlmIChBcnJheS5pc0FycmF5KHNvdXJjZXMpKVxuICAgIHJldHVybiBzb3VyY2VzLm1hcCgoaXRlbSkgPT4gZ2V0T25lV2F0Y2hTb3VyY2UoaXRlbSkpO1xuICByZXR1cm4gZ2V0T25lV2F0Y2hTb3VyY2Uoc291cmNlcyk7XG59XG5mdW5jdGlvbiBnZXRPbmVXYXRjaFNvdXJjZShzb3VyY2UpIHtcbiAgcmV0dXJuIHR5cGVvZiBzb3VyY2UgPT09IFwiZnVuY3Rpb25cIiA/IHNvdXJjZSgpIDogdnVlRGVtaS51bnJlZihzb3VyY2UpO1xufVxuZnVuY3Rpb24gZ2V0T2xkVmFsdWUoc291cmNlKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHNvdXJjZSkgPyBzb3VyY2UubWFwKCgpID0+IHZvaWQgMCkgOiB2b2lkIDA7XG59XG5cbmZ1bmN0aW9uIHdoZW5ldmVyKHNvdXJjZSwgY2IsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHZ1ZURlbWkud2F0Y2goc291cmNlLCAodiwgb3YsIG9uSW52YWxpZGF0ZSkgPT4ge1xuICAgIGlmICh2KVxuICAgICAgY2Iodiwgb3YsIG9uSW52YWxpZGF0ZSk7XG4gIH0sIG9wdGlvbnMpO1xufVxuXG5leHBvcnRzLl9fb25seVZ1ZTMgPSBfX29ubHlWdWUzO1xuZXhwb3J0cy5hbmQgPSBsb2dpY0FuZDtcbmV4cG9ydHMuYXNzZXJ0ID0gYXNzZXJ0O1xuZXhwb3J0cy5hdXRvUmVzZXRSZWYgPSByZWZBdXRvUmVzZXQ7XG5leHBvcnRzLmJ5cGFzc0ZpbHRlciA9IGJ5cGFzc0ZpbHRlcjtcbmV4cG9ydHMuY2xhbXAgPSBjbGFtcDtcbmV4cG9ydHMuY29tcHV0ZWRFYWdlciA9IGNvbXB1dGVkRWFnZXI7XG5leHBvcnRzLmNvbXB1dGVkV2l0aENvbnRyb2wgPSBjb21wdXRlZFdpdGhDb250cm9sO1xuZXhwb3J0cy5jb250YWluc1Byb3AgPSBjb250YWluc1Byb3A7XG5leHBvcnRzLmNvbnRyb2xsZWRDb21wdXRlZCA9IGNvbXB1dGVkV2l0aENvbnRyb2w7XG5leHBvcnRzLmNvbnRyb2xsZWRSZWYgPSBjb250cm9sbGVkUmVmO1xuZXhwb3J0cy5jcmVhdGVFdmVudEhvb2sgPSBjcmVhdGVFdmVudEhvb2s7XG5leHBvcnRzLmNyZWF0ZUZpbHRlcldyYXBwZXIgPSBjcmVhdGVGaWx0ZXJXcmFwcGVyO1xuZXhwb3J0cy5jcmVhdGVHbG9iYWxTdGF0ZSA9IGNyZWF0ZUdsb2JhbFN0YXRlO1xuZXhwb3J0cy5jcmVhdGVJbmplY3Rpb25TdGF0ZSA9IGNyZWF0ZUluamVjdGlvblN0YXRlO1xuZXhwb3J0cy5jcmVhdGVSZWFjdGl2ZUZuID0gcmVhY3RpZnk7XG5leHBvcnRzLmNyZWF0ZVNoYXJlZENvbXBvc2FibGUgPSBjcmVhdGVTaGFyZWRDb21wb3NhYmxlO1xuZXhwb3J0cy5jcmVhdGVTaW5nbGV0b25Qcm9taXNlID0gY3JlYXRlU2luZ2xldG9uUHJvbWlzZTtcbmV4cG9ydHMuZGVib3VuY2VGaWx0ZXIgPSBkZWJvdW5jZUZpbHRlcjtcbmV4cG9ydHMuZGVib3VuY2VkUmVmID0gcmVmRGVib3VuY2VkO1xuZXhwb3J0cy5kZWJvdW5jZWRXYXRjaCA9IHdhdGNoRGVib3VuY2VkO1xuZXhwb3J0cy5kaXJlY3RpdmVIb29rcyA9IGRpcmVjdGl2ZUhvb2tzO1xuZXhwb3J0cy5lYWdlckNvbXB1dGVkID0gY29tcHV0ZWRFYWdlcjtcbmV4cG9ydHMuZXh0ZW5kUmVmID0gZXh0ZW5kUmVmO1xuZXhwb3J0cy5mb3JtYXREYXRlID0gZm9ybWF0RGF0ZTtcbmV4cG9ydHMuZ2V0ID0gZ2V0O1xuZXhwb3J0cy5pZGVudGl0eSA9IGlkZW50aXR5O1xuZXhwb3J0cy5pZ25vcmFibGVXYXRjaCA9IHdhdGNoSWdub3JhYmxlO1xuZXhwb3J0cy5pbmNyZWFzZVdpdGhVbml0ID0gaW5jcmVhc2VXaXRoVW5pdDtcbmV4cG9ydHMuaW52b2tlID0gaW52b2tlO1xuZXhwb3J0cy5pc0Jvb2xlYW4gPSBpc0Jvb2xlYW47XG5leHBvcnRzLmlzQ2xpZW50ID0gaXNDbGllbnQ7XG5leHBvcnRzLmlzRGVmID0gaXNEZWY7XG5leHBvcnRzLmlzRGVmaW5lZCA9IGlzRGVmaW5lZDtcbmV4cG9ydHMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247XG5leHBvcnRzLmlzSU9TID0gaXNJT1M7XG5leHBvcnRzLmlzTnVtYmVyID0gaXNOdW1iZXI7XG5leHBvcnRzLmlzT2JqZWN0ID0gaXNPYmplY3Q7XG5leHBvcnRzLmlzU3RyaW5nID0gaXNTdHJpbmc7XG5leHBvcnRzLmlzV2luZG93ID0gaXNXaW5kb3c7XG5leHBvcnRzLmxvZ2ljQW5kID0gbG9naWNBbmQ7XG5leHBvcnRzLmxvZ2ljTm90ID0gbG9naWNOb3Q7XG5leHBvcnRzLmxvZ2ljT3IgPSBsb2dpY09yO1xuZXhwb3J0cy5tYWtlRGVzdHJ1Y3R1cmFibGUgPSBtYWtlRGVzdHJ1Y3R1cmFibGU7XG5leHBvcnRzLm5vb3AgPSBub29wO1xuZXhwb3J0cy5ub3JtYWxpemVEYXRlID0gbm9ybWFsaXplRGF0ZTtcbmV4cG9ydHMubm90ID0gbG9naWNOb3Q7XG5leHBvcnRzLm5vdyA9IG5vdztcbmV4cG9ydHMub2JqZWN0UGljayA9IG9iamVjdFBpY2s7XG5leHBvcnRzLm9yID0gbG9naWNPcjtcbmV4cG9ydHMucGF1c2FibGVGaWx0ZXIgPSBwYXVzYWJsZUZpbHRlcjtcbmV4cG9ydHMucGF1c2FibGVXYXRjaCA9IHdhdGNoUGF1c2FibGU7XG5leHBvcnRzLnByb21pc2VUaW1lb3V0ID0gcHJvbWlzZVRpbWVvdXQ7XG5leHBvcnRzLnJhbmQgPSByYW5kO1xuZXhwb3J0cy5yZWFjdGlmeSA9IHJlYWN0aWZ5O1xuZXhwb3J0cy5yZWFjdGlmeU9iamVjdCA9IHJlYWN0aWZ5T2JqZWN0O1xuZXhwb3J0cy5yZWFjdGl2ZUNvbXB1dGVkID0gcmVhY3RpdmVDb21wdXRlZDtcbmV4cG9ydHMucmVhY3RpdmVPbWl0ID0gcmVhY3RpdmVPbWl0O1xuZXhwb3J0cy5yZWFjdGl2ZVBpY2sgPSByZWFjdGl2ZVBpY2s7XG5leHBvcnRzLnJlZkF1dG9SZXNldCA9IHJlZkF1dG9SZXNldDtcbmV4cG9ydHMucmVmRGVib3VuY2VkID0gcmVmRGVib3VuY2VkO1xuZXhwb3J0cy5yZWZEZWZhdWx0ID0gcmVmRGVmYXVsdDtcbmV4cG9ydHMucmVmVGhyb3R0bGVkID0gcmVmVGhyb3R0bGVkO1xuZXhwb3J0cy5yZWZXaXRoQ29udHJvbCA9IHJlZldpdGhDb250cm9sO1xuZXhwb3J0cy5yZXNvbHZlUmVmID0gcmVzb2x2ZVJlZjtcbmV4cG9ydHMucmVzb2x2ZVVucmVmID0gcmVzb2x2ZVVucmVmO1xuZXhwb3J0cy5zZXQgPSBzZXQ7XG5leHBvcnRzLnN5bmNSZWYgPSBzeW5jUmVmO1xuZXhwb3J0cy5zeW5jUmVmcyA9IHN5bmNSZWZzO1xuZXhwb3J0cy50aHJvdHRsZUZpbHRlciA9IHRocm90dGxlRmlsdGVyO1xuZXhwb3J0cy50aHJvdHRsZWRSZWYgPSByZWZUaHJvdHRsZWQ7XG5leHBvcnRzLnRocm90dGxlZFdhdGNoID0gd2F0Y2hUaHJvdHRsZWQ7XG5leHBvcnRzLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDtcbmV4cG9ydHMudG9SZWFjdGl2ZSA9IHRvUmVhY3RpdmU7XG5leHBvcnRzLnRvUmVmcyA9IHRvUmVmcztcbmV4cG9ydHMudHJ5T25CZWZvcmVNb3VudCA9IHRyeU9uQmVmb3JlTW91bnQ7XG5leHBvcnRzLnRyeU9uQmVmb3JlVW5tb3VudCA9IHRyeU9uQmVmb3JlVW5tb3VudDtcbmV4cG9ydHMudHJ5T25Nb3VudGVkID0gdHJ5T25Nb3VudGVkO1xuZXhwb3J0cy50cnlPblNjb3BlRGlzcG9zZSA9IHRyeU9uU2NvcGVEaXNwb3NlO1xuZXhwb3J0cy50cnlPblVubW91bnRlZCA9IHRyeU9uVW5tb3VudGVkO1xuZXhwb3J0cy51bnRpbCA9IHVudGlsO1xuZXhwb3J0cy51c2VDb3VudGVyID0gdXNlQ291bnRlcjtcbmV4cG9ydHMudXNlRGF0ZUZvcm1hdCA9IHVzZURhdGVGb3JtYXQ7XG5leHBvcnRzLnVzZURlYm91bmNlID0gcmVmRGVib3VuY2VkO1xuZXhwb3J0cy51c2VEZWJvdW5jZUZuID0gdXNlRGVib3VuY2VGbjtcbmV4cG9ydHMudXNlSW50ZXJ2YWwgPSB1c2VJbnRlcnZhbDtcbmV4cG9ydHMudXNlSW50ZXJ2YWxGbiA9IHVzZUludGVydmFsRm47XG5leHBvcnRzLnVzZUxhc3RDaGFuZ2VkID0gdXNlTGFzdENoYW5nZWQ7XG5leHBvcnRzLnVzZVRocm90dGxlID0gcmVmVGhyb3R0bGVkO1xuZXhwb3J0cy51c2VUaHJvdHRsZUZuID0gdXNlVGhyb3R0bGVGbjtcbmV4cG9ydHMudXNlVGltZW91dCA9IHVzZVRpbWVvdXQ7XG5leHBvcnRzLnVzZVRpbWVvdXRGbiA9IHVzZVRpbWVvdXRGbjtcbmV4cG9ydHMudXNlVG9nZ2xlID0gdXNlVG9nZ2xlO1xuZXhwb3J0cy53YXRjaEFycmF5ID0gd2F0Y2hBcnJheTtcbmV4cG9ydHMud2F0Y2hBdE1vc3QgPSB3YXRjaEF0TW9zdDtcbmV4cG9ydHMud2F0Y2hEZWJvdW5jZWQgPSB3YXRjaERlYm91bmNlZDtcbmV4cG9ydHMud2F0Y2hJZ25vcmFibGUgPSB3YXRjaElnbm9yYWJsZTtcbmV4cG9ydHMud2F0Y2hPbmNlID0gd2F0Y2hPbmNlO1xuZXhwb3J0cy53YXRjaFBhdXNhYmxlID0gd2F0Y2hQYXVzYWJsZTtcbmV4cG9ydHMud2F0Y2hUaHJvdHRsZWQgPSB3YXRjaFRocm90dGxlZDtcbmV4cG9ydHMud2F0Y2hUcmlnZ2VyYWJsZSA9IHdhdGNoVHJpZ2dlcmFibGU7XG5leHBvcnRzLndhdGNoV2l0aEZpbHRlciA9IHdhdGNoV2l0aEZpbHRlcjtcbmV4cG9ydHMud2hlbmV2ZXIgPSB3aGVuZXZlcjtcbiIsInZhciBWdWUgPSByZXF1aXJlKCd2dWUnKVxuXG5PYmplY3Qua2V5cyhWdWUpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gIGV4cG9ydHNba2V5XSA9IFZ1ZVtrZXldXG59KVxuXG5leHBvcnRzLnNldCA9IGZ1bmN0aW9uKHRhcmdldCwga2V5LCB2YWwpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSkge1xuICAgIHRhcmdldC5sZW5ndGggPSBNYXRoLm1heCh0YXJnZXQubGVuZ3RoLCBrZXkpXG4gICAgdGFyZ2V0LnNwbGljZShrZXksIDEsIHZhbClcbiAgICByZXR1cm4gdmFsXG4gIH1cbiAgdGFyZ2V0W2tleV0gPSB2YWxcbiAgcmV0dXJuIHZhbFxufVxuXG5leHBvcnRzLmRlbCA9IGZ1bmN0aW9uKHRhcmdldCwga2V5KSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkpIHtcbiAgICB0YXJnZXQuc3BsaWNlKGtleSwgMSlcbiAgICByZXR1cm5cbiAgfVxuICBkZWxldGUgdGFyZ2V0W2tleV1cbn1cblxuZXhwb3J0cy5WdWUgPSBWdWVcbmV4cG9ydHMuVnVlMiA9IHVuZGVmaW5lZFxuZXhwb3J0cy5pc1Z1ZTIgPSBmYWxzZVxuZXhwb3J0cy5pc1Z1ZTMgPSB0cnVlXG5leHBvcnRzLmluc3RhbGwgPSBmdW5jdGlvbigpe31cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7XG4gIGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoO1xuICBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07XG4gIHJldHVybiBhcnIyO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikge1xuICBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICB9XG4gIHJldHVybiBzZWxmO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59IiwiaW1wb3J0IHRvUHJvcGVydHlLZXkgZnJvbSBcIi4vdG9Qcm9wZXJ0eUtleS5qc1wiO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcbiAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7XG4gICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgdG9Qcm9wZXJ0eUtleShkZXNjcmlwdG9yLmtleSksIGRlc2NyaXB0b3IpO1xuICB9XG59XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gIGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpO1xuICBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiBmYWxzZVxuICB9KTtcbiAgcmV0dXJuIENvbnN0cnVjdG9yO1xufSIsImltcG9ydCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSBmcm9tIFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIobywgYWxsb3dBcnJheUxpa2UpIHtcbiAgdmFyIGl0ID0gdHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl0gfHwgb1tcIkBAaXRlcmF0b3JcIl07XG4gIGlmICghaXQpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvKSB8fCAoaXQgPSB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvKSkgfHwgYWxsb3dBcnJheUxpa2UgJiYgbyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIGlmIChpdCkgbyA9IGl0O1xuICAgICAgdmFyIGkgPSAwO1xuICAgICAgdmFyIEYgPSBmdW5jdGlvbiBGKCkge307XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzOiBGLFxuICAgICAgICBuOiBmdW5jdGlvbiBuKCkge1xuICAgICAgICAgIGlmIChpID49IG8ubGVuZ3RoKSByZXR1cm4ge1xuICAgICAgICAgICAgZG9uZTogdHJ1ZVxuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRvbmU6IGZhbHNlLFxuICAgICAgICAgICAgdmFsdWU6IG9baSsrXVxuICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGU6IGZ1bmN0aW9uIGUoX2UpIHtcbiAgICAgICAgICB0aHJvdyBfZTtcbiAgICAgICAgfSxcbiAgICAgICAgZjogRlxuICAgICAgfTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xuICB9XG4gIHZhciBub3JtYWxDb21wbGV0aW9uID0gdHJ1ZSxcbiAgICBkaWRFcnIgPSBmYWxzZSxcbiAgICBlcnI7XG4gIHJldHVybiB7XG4gICAgczogZnVuY3Rpb24gcygpIHtcbiAgICAgIGl0ID0gaXQuY2FsbChvKTtcbiAgICB9LFxuICAgIG46IGZ1bmN0aW9uIG4oKSB7XG4gICAgICB2YXIgc3RlcCA9IGl0Lm5leHQoKTtcbiAgICAgIG5vcm1hbENvbXBsZXRpb24gPSBzdGVwLmRvbmU7XG4gICAgICByZXR1cm4gc3RlcDtcbiAgICB9LFxuICAgIGU6IGZ1bmN0aW9uIGUoX2UyKSB7XG4gICAgICBkaWRFcnIgPSB0cnVlO1xuICAgICAgZXJyID0gX2UyO1xuICAgIH0sXG4gICAgZjogZnVuY3Rpb24gZigpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghbm9ybWFsQ29tcGxldGlvbiAmJiBpdFtcInJldHVyblwiXSAhPSBudWxsKSBpdFtcInJldHVyblwiXSgpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKGRpZEVycikgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn0iLCJpbXBvcnQgZ2V0UHJvdG90eXBlT2YgZnJvbSBcIi4vZ2V0UHJvdG90eXBlT2YuanNcIjtcbmltcG9ydCBpc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgZnJvbSBcIi4vaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0LmpzXCI7XG5pbXBvcnQgcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tIFwiLi9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkge1xuICB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IGlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpO1xuICByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7XG4gICAgdmFyIFN1cGVyID0gZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksXG4gICAgICByZXN1bHQ7XG4gICAgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHtcbiAgICAgIHZhciBOZXdUYXJnZXQgPSBnZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjtcbiAgICAgIHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuICAgIHJldHVybiBwb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7XG4gIH07XG59IiwiaW1wb3J0IHRvUHJvcGVydHlLZXkgZnJvbSBcIi4vdG9Qcm9wZXJ0eUtleS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkge1xuICBrZXkgPSB0b1Byb3BlcnR5S2V5KGtleSk7XG4gIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmpba2V5XSA9IHZhbHVlO1xuICB9XG4gIHJldHVybiBvYmo7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHtcbiAgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7XG4gICAgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTtcbiAgfTtcbiAgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTtcbn0iLCJpbXBvcnQgc2V0UHJvdG90eXBlT2YgZnJvbSBcIi4vc2V0UHJvdG90eXBlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykge1xuICBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO1xuICB9XG4gIHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwge1xuICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICB2YWx1ZTogc3ViQ2xhc3MsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH1cbiAgfSk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdWJDbGFzcywgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiBmYWxzZVxuICB9KTtcbiAgaWYgKHN1cGVyQ2xhc3MpIHNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkge1xuICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7XG4gIGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7XG4gIGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7XG4gIHRyeSB7XG4gICAgQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIi4vdHlwZW9mLmpzXCI7XG5pbXBvcnQgYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCIuL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkge1xuICBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkge1xuICAgIHJldHVybiBjYWxsO1xuICB9IGVsc2UgaWYgKGNhbGwgIT09IHZvaWQgMCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTtcbiAgfVxuICByZXR1cm4gYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gIF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkge1xuICAgIG8uX19wcm90b19fID0gcDtcbiAgICByZXR1cm4gbztcbiAgfTtcbiAgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTtcbn0iLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiLi90eXBlb2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF90b1ByaW1pdGl2ZShpbnB1dCwgaGludCkge1xuICBpZiAoX3R5cGVvZihpbnB1dCkgIT09IFwib2JqZWN0XCIgfHwgaW5wdXQgPT09IG51bGwpIHJldHVybiBpbnB1dDtcbiAgdmFyIHByaW0gPSBpbnB1dFtTeW1ib2wudG9QcmltaXRpdmVdO1xuICBpZiAocHJpbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIHJlcyA9IHByaW0uY2FsbChpbnB1dCwgaGludCB8fCBcImRlZmF1bHRcIik7XG4gICAgaWYgKF90eXBlb2YocmVzKSAhPT0gXCJvYmplY3RcIikgcmV0dXJuIHJlcztcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7XG4gIH1cbiAgcmV0dXJuIChoaW50ID09PSBcInN0cmluZ1wiID8gU3RyaW5nIDogTnVtYmVyKShpbnB1dCk7XG59IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIi4vdHlwZW9mLmpzXCI7XG5pbXBvcnQgdG9QcmltaXRpdmUgZnJvbSBcIi4vdG9QcmltaXRpdmUuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KGFyZykge1xuICB2YXIga2V5ID0gdG9QcmltaXRpdmUoYXJnLCBcInN0cmluZ1wiKTtcbiAgcmV0dXJuIF90eXBlb2Yoa2V5KSA9PT0gXCJzeW1ib2xcIiA/IGtleSA6IFN0cmluZyhrZXkpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7XG4gIFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjtcblxuICByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvYmopIHtcbiAgICByZXR1cm4gdHlwZW9mIG9iajtcbiAgfSA6IGZ1bmN0aW9uIChvYmopIHtcbiAgICByZXR1cm4gb2JqICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqO1xuICB9LCBfdHlwZW9mKG9iaik7XG59IiwiaW1wb3J0IGFycmF5TGlrZVRvQXJyYXkgZnJvbSBcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikge1xuICBpZiAoIW8pIHJldHVybjtcbiAgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xuICB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7XG4gIGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7XG4gIGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pO1xuICBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/public/mix-manifest.json b/public/mix-manifest.json index da6bf2179b..ce3fce0e98 100755 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -1,10 +1,10 @@ { - "/js/app.js": "/js/app.js?id=c8dc1d6a399da72125356dd461dafbf7", + "/js/app.js": "/js/app.js?id=56b694e09cdd9e4cb7cdae396555e2d8", "/js/script.js": "/js/script.js?id=7f914fe05784c5aaab0b7ec73b6f89ff", "/js/webportal-script.js": "/js/webportal-script.js?id=95dd39e93e91393c8e5f993fd1605ad4", "/js/formbuilder.js": "/js/formbuilder.js?id=96f1b9dd5890b8ff09e613117dd94592", "/manifest.js": "/manifest.js?id=3ed1124c8f4dcb98acc36de67cb80349", - "/css/webportal-app.css": "/css/webportal-app.css?id=aa832b12de3c0518169d6dd46f72dec7", - "/css/app.css": "/css/app.css?id=33ff2a1ef0bdf667fcc098e19bc50d54", - "/js/vendor.js": "/js/vendor.js?id=f9ea589d654a205711a655b5c2811269" + "/css/webportal-app.css": "/css/webportal-app.css?id=6dd6055acaae23cf5b4526a41154453f", + "/css/app.css": "/css/app.css?id=c49d62ad014a4150440a838babcfa0c3", + "/js/vendor.js": "/js/vendor.js?id=8ce54f5753dc05b7d5fa20519b778476" } diff --git a/resources/assets/js/views/web/IatiRegisterPage.vue b/resources/assets/js/views/web/IatiRegisterPage.vue index 08fcb4e29a..3137cde067 100644 --- a/resources/assets/js/views/web/IatiRegisterPage.vue +++ b/resources/assets/js/views/web/IatiRegisterPage.vue @@ -978,14 +978,14 @@ export default defineComponent({ .section { &__container { - @media screen and (min-width: 1280px) { + @media screen and (min-width: 1415px) { max-width: 1206px; } max-width: 865px; margin: auto; .feedback { - @media screen and (min-width: 1280px) { + @media screen and (min-width: 1415px) { width: 702px; } diff --git a/resources/assets/js/views/web/RegisterPage.vue b/resources/assets/js/views/web/RegisterPage.vue index 816ed049e3..a7e826778f 100644 --- a/resources/assets/js/views/web/RegisterPage.vue +++ b/resources/assets/js/views/web/RegisterPage.vue @@ -684,14 +684,14 @@ export default defineComponent({ .section { &__container { - @media screen and (min-width: 1280px) { + @media screen and (min-width: 1415px) { max-width: 1206px; } max-width: 865px; margin: auto; .feedback { - @media screen and (min-width: 1280px) { + @media screen and (min-width: 1415px) { width: 702px; } diff --git a/resources/assets/js/views/web/partials/WebHeader.vue b/resources/assets/js/views/web/partials/WebHeader.vue index ef23b157b3..30f11d6f86 100644 --- a/resources/assets/js/views/web/partials/WebHeader.vue +++ b/resources/assets/js/views/web/partials/WebHeader.vue @@ -11,11 +11,11 @@
@@ -127,11 +127,9 @@
-

+

{{ title }}